aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authormrjive <mrjive@mrjive.it>2015-01-06 15:13:03 +0100
committermrjive <mrjive@mrjive.it>2015-01-06 15:13:03 +0100
commitb80c218606994032e76805900cb9b340ea132358 (patch)
treebf625cf4c59bf521e639018399bf1770d116a6a0
parentaa6d61d3b19cb13c30bf5a1579adefedf0cc9515 (diff)
parent3185bfe3ca131d471b8fcdc0c94abf1a114486c7 (diff)
downloadvolse-hubzilla-b80c218606994032e76805900cb9b340ea132358.tar.gz
volse-hubzilla-b80c218606994032e76805900cb9b340ea132358.tar.bz2
volse-hubzilla-b80c218606994032e76805900cb9b340ea132358.zip
Merge pull request #1 from friendica/master
test pull request
-rwxr-xr-x.gitignore9
-rw-r--r--README.md12
-rw-r--r--app/admin.pngbin8449 -> 2852 bytes
-rw-r--r--app/bookmarks.apd2
-rw-r--r--app/bugreport.apd3
-rw-r--r--app/bugreport.pngbin0 -> 4478 bytes
-rw-r--r--app/chat.apd2
-rw-r--r--app/chat.pngbin2194 -> 2544 bytes
-rw-r--r--app/connections.apd2
-rw-r--r--app/directory.pngbin12024 -> 4895 bytes
-rw-r--r--app/events.pngbin11242 -> 4118 bytes
-rw-r--r--app/features.pngbin7152 -> 8542 bytes
-rw-r--r--app/help.pngbin6889 -> 6697 bytes
-rw-r--r--app/home.pngbin5172 -> 6347 bytes
-rw-r--r--app/invite.pngbin5166 -> 6227 bytes
-rw-r--r--app/lang.pngbin7556 -> 6559 bytes
-rw-r--r--app/mail.pngbin6623 -> 4875 bytes
-rw-r--r--app/manage.apd2
-rw-r--r--app/manage.pngbin9585 -> 7355 bytes
-rw-r--r--app/mood.pngbin5137 -> 6384 bytes
-rw-r--r--app/photos.pngbin13693 -> 4080 bytes
-rw-r--r--app/poke.pngbin14377 -> 2610 bytes
-rw-r--r--app/post.pngbin2850 -> 4394 bytes
-rw-r--r--app/pphoto.pngbin10229 -> 5498 bytes
-rw-r--r--app/probe.apd2
-rw-r--r--app/probe.pngbin10625 -> 7584 bytes
-rw-r--r--app/profile.apd4
-rw-r--r--app/profile.pngbin0 -> 3550 bytes
-rw-r--r--app/randprof.pngbin50762 -> 5268 bytes
-rw-r--r--app/search.pngbin8544 -> 8354 bytes
-rw-r--r--app/settings.pngbin7626 -> 7958 bytes
-rw-r--r--app/storage.pngbin5191 -> 3194 bytes
-rw-r--r--app/suggest.apd2
-rw-r--r--app/suggest.pngbin2164 -> 7225 bytes
-rw-r--r--app/webpages.apd2
-rw-r--r--app/webpages.pngbin8678 -> 9092 bytes
-rw-r--r--assets/home.html356
-rwxr-xr-xboot.php672
-rw-r--r--doc/AdvancedSearch.md6
-rw-r--r--doc/Comanche.md2
-rw-r--r--doc/Creating-Templates.md4
-rw-r--r--doc/DerivedTheme1.md3
-rw-r--r--doc/Developers.md2
-rw-r--r--doc/External-Resources.md27
-rw-r--r--doc/Features.md1
-rw-r--r--doc/Hooks.md1
-rw-r--r--doc/Install.md111
-rw-r--r--doc/Intro-for-Developers.md105
-rw-r--r--doc/Plugins.md3
-rw-r--r--doc/Privacy.md73
-rw-r--r--doc/Profiles.md36
-rw-r--r--doc/Remove-Account.md1
-rw-r--r--doc/Schema-development.md2
-rw-r--r--doc/Tags-and-Mentions.md4
-rw-r--r--doc/To-Do-Code.md62
-rw-r--r--doc/To-Do.md23
-rw-r--r--doc/Translations.md2
-rw-r--r--doc/Webpages.md4
-rw-r--r--doc/Widgets.md21
-rw-r--r--doc/Zot---A-High-Level-Overview.md4
-rw-r--r--doc/about.bb2
-rw-r--r--doc/account_basics.bb2
-rw-r--r--doc/accounts.bb2
-rw-r--r--doc/accounts_profiles_channels_basics.bb4
-rw-r--r--doc/addons.bb2
-rw-r--r--doc/addons_gnusocial.bb2
-rw-r--r--doc/api_functions.bb2
-rw-r--r--doc/api_posting.bb23
-rw-r--r--doc/bbcode.html10
-rw-r--r--doc/campaign.bb2
-rw-r--r--doc/channels.bb4
-rw-r--r--doc/checking_account_quota_usage.bb11
-rw-r--r--doc/cloud.bb2
-rw-r--r--doc/cloud_desktop_clients.bb2
-rw-r--r--doc/comanche.bb13
-rw-r--r--doc/connecting_to_channels.bb2
-rw-r--r--doc/connecting_to_channels.md1
-rw-r--r--doc/credits.bb76
-rw-r--r--doc/dav_dolphin.bb2
-rw-r--r--doc/dav_konqueror.bb3
-rw-r--r--doc/dav_mount.bb2
-rw-r--r--doc/dav_nautilus.bb2
-rw-r--r--doc/dav_nemo.bb4
-rw-r--r--doc/dav_windows.bb2
-rw-r--r--doc/de/about.bb2
-rw-r--r--doc/de/channels.bb8
-rw-r--r--doc/de/features.bb10
-rw-r--r--doc/de/main.bb31
-rw-r--r--doc/de/profiles.bb2
-rw-r--r--doc/de/registration.bb6
-rw-r--r--doc/debian_install.bb8
-rw-r--r--doc/dev-function-overview.md3
-rw-r--r--doc/developer_function_primer.bb6
-rw-r--r--doc/developers.bb5
-rw-r--r--doc/diaspora_compat.md57
-rw-r--r--doc/doco.bb33
-rw-r--r--doc/external-resource-links.bb11
-rw-r--r--doc/extra_features.bb2
-rw-r--r--doc/faq_admins.bb29
-rw-r--r--doc/faq_developers.bb5
-rw-r--r--doc/faq_members.bb15
-rw-r--r--doc/faq_users.bb14
-rw-r--r--doc/features.bb153
-rw-r--r--doc/git_for_non_developers.bb29
-rw-r--r--doc/hidden_configs.bb137
-rw-r--r--doc/history.md49
-rw-r--r--doc/html/Contact_8php.html73
-rw-r--r--doc/html/Contact_8php.js8
-rw-r--r--doc/html/Importer_8php.html129
-rw-r--r--doc/html/README_8md.html2
-rw-r--r--doc/html/RedBasicAuth_8php.html127
-rw-r--r--doc/html/RedBrowser_8php.html127
-rw-r--r--doc/html/RedDirectory_8php.html127
-rw-r--r--doc/html/RedFile_8php.html127
-rw-r--r--doc/html/account_8php.html154
-rw-r--r--doc/html/account_8php.js6
-rw-r--r--doc/html/admin_8php.html66
-rw-r--r--doc/html/admin_8php.js2
-rw-r--r--doc/html/annotated.html59
-rw-r--r--doc/html/annotated.js6
-rw-r--r--doc/html/apw_2php_2style_8php.html16
-rw-r--r--doc/html/auth_8php.html98
-rw-r--r--doc/html/auth_8php.js5
-rw-r--r--doc/html/bb2diaspora_8php.html126
-rw-r--r--doc/html/bb2diaspora_8php.js6
-rw-r--r--doc/html/bbcode_8php.html56
-rw-r--r--doc/html/bbcode_8php.js3
-rw-r--r--doc/html/blocks_8php.html18
-rw-r--r--doc/html/blocks_8php.js3
-rw-r--r--doc/html/boot_8php.html959
-rw-r--r--doc/html/boot_8php.js30
-rw-r--r--doc/html/chanman_8php.html29
-rw-r--r--doc/html/chanman_8php.js4
-rw-r--r--doc/html/channel_8php.html1
-rw-r--r--doc/html/classApp-members.html89
-rw-r--r--doc/html/classApp.html163
-rw-r--r--doc/html/classApp.js7
-rw-r--r--doc/html/classFriendicaSmarty.html2
-rw-r--r--doc/html/classFriendicaSmartyEngine.html2
-rw-r--r--doc/html/classItem-members.html70
-rw-r--r--doc/html/classItem.html116
-rw-r--r--doc/html/classItem.js4
-rw-r--r--doc/html/classRedBasicAuth-members.html12
-rw-r--r--doc/html/classRedBasicAuth.html176
-rw-r--r--doc/html/classRedBasicAuth.js4
-rw-r--r--doc/html/classRedDirectory.html18
-rw-r--r--doc/html/classRedDirectory.pngbin773 -> 1136 bytes
-rw-r--r--doc/html/classRedMatrix_1_1Import_1_1Import-members.html132
-rw-r--r--doc/html/classRedMatrix_1_1Import_1_1Import.html447
-rw-r--r--doc/html/classRedMatrix_1_1Import_1_1Import.js18
-rw-r--r--doc/html/classRedMatrix_1_1RedDAV_1_1RedBasicAuth-members.html133
-rw-r--r--doc/html/classRedMatrix_1_1RedDAV_1_1RedBasicAuth.html519
-rw-r--r--doc/html/classRedMatrix_1_1RedDAV_1_1RedBasicAuth.js19
-rw-r--r--doc/html/classRedMatrix_1_1RedDAV_1_1RedBasicAuth.pngbin0 -> 957 bytes
-rw-r--r--doc/html/classRedMatrix_1_1RedDAV_1_1RedBrowser-members.html127
-rw-r--r--doc/html/classRedMatrix_1_1RedDAV_1_1RedBrowser.html490
-rw-r--r--doc/html/classRedMatrix_1_1RedDAV_1_1RedBrowser.js13
-rw-r--r--doc/html/classRedMatrix_1_1RedDAV_1_1RedBrowser.pngbin0 -> 876 bytes
-rw-r--r--doc/html/classRedMatrix_1_1RedDAV_1_1RedDirectory-members.html135
-rw-r--r--doc/html/classRedMatrix_1_1RedDAV_1_1RedDirectory.html642
-rw-r--r--doc/html/classRedMatrix_1_1RedDAV_1_1RedDirectory.js21
-rw-r--r--doc/html/classRedMatrix_1_1RedDAV_1_1RedDirectory.pngbin0 -> 1601 bytes
-rw-r--r--doc/html/classRedMatrix_1_1RedDAV_1_1RedFile-members.html130
-rw-r--r--doc/html/classRedMatrix_1_1RedDAV_1_1RedFile.html479
-rw-r--r--doc/html/classRedMatrix_1_1RedDAV_1_1RedFile.js16
-rw-r--r--doc/html/classRedMatrix_1_1RedDAV_1_1RedFile.pngbin0 -> 1155 bytes
-rw-r--r--doc/html/classRedmatrix_1_1Import_1_1Import-members.html132
-rw-r--r--doc/html/classRedmatrix_1_1Import_1_1Import.html447
-rw-r--r--doc/html/classRedmatrix_1_1Import_1_1Import.js18
-rw-r--r--doc/html/classdba__driver-members.html20
-rw-r--r--doc/html/classdba__driver.html289
-rw-r--r--doc/html/classdba__driver.js14
-rw-r--r--doc/html/classdba__driver.pngbin591 -> 823 bytes
-rw-r--r--doc/html/classdba__mysql-members.html20
-rw-r--r--doc/html/classdba__mysql.html49
-rw-r--r--doc/html/classdba__mysql.js1
-rw-r--r--doc/html/classdba__mysqli-members.html20
-rw-r--r--doc/html/classdba__mysqli.html49
-rw-r--r--doc/html/classdba__mysqli.js1
-rw-r--r--doc/html/classdba__postgres-members.html142
-rw-r--r--doc/html/classdba__postgres.html477
-rw-r--r--doc/html/classdba__postgres.js17
-rw-r--r--doc/html/classdba__postgres.pngbin0 -> 460 bytes
-rw-r--r--doc/html/classes.html20
-rw-r--r--doc/html/classphoto__driver.html2
-rw-r--r--doc/html/classphoto__gd.html4
-rw-r--r--doc/html/classphoto__imagick.html4
-rw-r--r--doc/html/cloud_8php.html20
-rw-r--r--doc/html/cloud_8php.js2
-rw-r--r--doc/html/comanche_8php.html4
-rw-r--r--doc/html/contact__selectors_8php.html18
-rw-r--r--doc/html/contact__selectors_8php.js1
-rw-r--r--doc/html/conversation_8php.html27
-rw-r--r--doc/html/crypto_8php.html374
-rw-r--r--doc/html/crypto_8php.js15
-rw-r--r--doc/html/datetime_8php.html231
-rw-r--r--doc/html/datetime_8php.js9
-rw-r--r--doc/html/dba__driver_8php.html277
-rw-r--r--doc/html/dba__driver_8php.js11
-rw-r--r--doc/html/dba__postgres_8php.html120
-rw-r--r--doc/html/diaspora_8php.html1289
-rw-r--r--doc/html/diaspora_8php.js37
-rw-r--r--doc/html/dimport_8php.html136
-rw-r--r--doc/html/dimport_8php.js4
-rw-r--r--doc/html/dir_0262a6a8df56a167e3761b6e5a54bb1c.html112
-rw-r--r--doc/html/dir_0262a6a8df56a167e3761b6e5a54bb1c.js4
-rw-r--r--doc/html/dir_21bc5169ff11430004758be31dcfc6c4.html3
-rw-r--r--doc/html/dir_21bc5169ff11430004758be31dcfc6c4.js3
-rw-r--r--doc/html/dir_23ec12649285f9fabf3a6b7380226c28.html2
-rw-r--r--doc/html/dir_23ec12649285f9fabf3a6b7380226c28.js1
-rw-r--r--doc/html/dir_3d9c9d0c5e9556dd3eba1e072fa6eaeb.html6
-rw-r--r--doc/html/dir_3d9c9d0c5e9556dd3eba1e072fa6eaeb.js5
-rw-r--r--doc/html/dir_4acb285a1960a920438b718da0958cf4.html112
-rw-r--r--doc/html/dir_4acb285a1960a920438b718da0958cf4.js4
-rw-r--r--doc/html/dir_65522070e0a83623cefc01ebe26a83e3.html114
-rw-r--r--doc/html/dir_65522070e0a83623cefc01ebe26a83e3.js5
-rw-r--r--doc/html/dir_6e52a2a2cd27c08b7df5e5cdb216bd77.html112
-rw-r--r--doc/html/dir_6e52a2a2cd27c08b7df5e5cdb216bd77.js4
-rw-r--r--doc/html/dir_7edbbd0f8c514efef79942dcdc21f738.html114
-rw-r--r--doc/html/dir_7edbbd0f8c514efef79942dcdc21f738.js7
-rw-r--r--doc/html/dir_817f6d302394b98e59575acdb59998bc.html2
-rw-r--r--doc/html/dir_817f6d302394b98e59575acdb59998bc.js1
-rw-r--r--doc/html/dir_8543001e5d25368a6edede3e63efb554.html6
-rw-r--r--doc/html/dir_8543001e5d25368a6edede3e63efb554.js6
-rw-r--r--doc/html/dir_9ef82eb3846cd201470898c3b6ef38cf.html114
-rw-r--r--doc/html/dir_9ef82eb3846cd201470898c3b6ef38cf.js5
-rw-r--r--doc/html/dir__fns_8php.html22
-rw-r--r--doc/html/dir__fns_8php.js1
-rw-r--r--doc/html/dir_ac4f5165c8d71ebb1a1a0a168a48f3f7.html114
-rw-r--r--doc/html/dir_ac4f5165c8d71ebb1a1a0a168a48f3f7.js5
-rw-r--r--doc/html/dir_d41ce877eb409a4791b288730010abe2.html24
-rw-r--r--doc/html/dir_d41ce877eb409a4791b288730010abe2.js11
-rw-r--r--doc/html/dir_d44c64559bbebec7f509842c48db8b23.html23
-rw-r--r--doc/html/dir_d44c64559bbebec7f509842c48db8b23.js15
-rw-r--r--doc/html/dir_e7f045be8bb383d8447c6a6b84145083.html118
-rw-r--r--doc/html/dir_e7f045be8bb383d8447c6a6b84145083.js15
-rw-r--r--doc/html/dirsearch_8php.html42
-rw-r--r--doc/html/dirsearch_8php.js1
-rw-r--r--doc/html/docblox__errorchecker_8php.html4
-rw-r--r--doc/html/editblock_8php.html18
-rw-r--r--doc/html/editblock_8php.js3
-rw-r--r--doc/html/editlayout_8php.html18
-rw-r--r--doc/html/editlayout_8php.js3
-rw-r--r--doc/html/editwebpage_8php.html18
-rw-r--r--doc/html/editwebpage_8php.js3
-rw-r--r--doc/html/enotify_8php.html2
-rw-r--r--doc/html/event_8php.html62
-rw-r--r--doc/html/event_8php.js3
-rw-r--r--doc/html/extract_8php.html6
-rw-r--r--doc/html/fbrowser_8php.html2
-rw-r--r--doc/html/features_8php.html4
-rw-r--r--doc/html/files.html498
-rw-r--r--doc/html/filestorage_8php.html6
-rw-r--r--doc/html/fixd_8php.html181
-rw-r--r--doc/html/fixd_8php.js7
-rw-r--r--doc/html/frphotohelper_8php.html486
-rw-r--r--doc/html/frphotohelper_8php.js27
-rw-r--r--doc/html/frphotos_8php.html155
-rw-r--r--doc/html/frphotos_8php.js5
-rw-r--r--doc/html/full_8php.html4
-rw-r--r--doc/html/functions.html74
-rw-r--r--doc/html/functions_0x5f.html12
-rw-r--r--doc/html/functions_0x63.html28
-rw-r--r--doc/html/functions_0x64.html2
-rw-r--r--doc/html/functions_0x65.html10
-rw-r--r--doc/html/functions_0x66.html4
-rw-r--r--doc/html/functions_0x67.html78
-rw-r--r--doc/html/functions_0x68.html2
-rw-r--r--doc/html/functions_0x69.html8
-rw-r--r--doc/html/functions_0x6c.html4
-rw-r--r--doc/html/functions_0x6e.html4
-rw-r--r--doc/html/functions_0x6f.html4
-rw-r--r--doc/html/functions_0x70.html2
-rw-r--r--doc/html/functions_0x71.html7
-rw-r--r--doc/html/functions_0x72.html11
-rw-r--r--doc/html/functions_0x73.html30
-rw-r--r--doc/html/functions_0x75.html13
-rw-r--r--doc/html/functions_0x76.html2
-rw-r--r--doc/html/functions_func.html12
-rw-r--r--doc/html/functions_func_0x63.html28
-rw-r--r--doc/html/functions_func_0x64.html2
-rw-r--r--doc/html/functions_func_0x65.html10
-rw-r--r--doc/html/functions_func_0x66.html4
-rw-r--r--doc/html/functions_func_0x67.html78
-rw-r--r--doc/html/functions_func_0x68.html2
-rw-r--r--doc/html/functions_func_0x6c.html4
-rw-r--r--doc/html/functions_func_0x6f.html4
-rw-r--r--doc/html/functions_func_0x70.html2
-rw-r--r--doc/html/functions_func_0x71.html7
-rw-r--r--doc/html/functions_func_0x72.html11
-rw-r--r--doc/html/functions_func_0x73.html30
-rw-r--r--doc/html/functions_func_0x75.html9
-rw-r--r--doc/html/functions_func_0x76.html2
-rw-r--r--doc/html/functions_vars.html101
-rw-r--r--doc/html/globals.html28
-rw-r--r--doc/html/globals_0x61.html23
-rw-r--r--doc/html/globals_0x62.html39
-rw-r--r--doc/html/globals_0x63.html26
-rw-r--r--doc/html/globals_0x64.html157
-rw-r--r--doc/html/globals_0x65.html18
-rw-r--r--doc/html/globals_0x66.html19
-rw-r--r--doc/html/globals_0x67.html41
-rw-r--r--doc/html/globals_0x68.html19
-rw-r--r--doc/html/globals_0x69.html25
-rw-r--r--doc/html/globals_0x6c.html24
-rw-r--r--doc/html/globals_0x6d.html19
-rw-r--r--doc/html/globals_0x6e.html12
-rw-r--r--doc/html/globals_0x6f.html6
-rw-r--r--doc/html/globals_0x70.html110
-rw-r--r--doc/html/globals_0x72.html63
-rw-r--r--doc/html/globals_0x73.html43
-rw-r--r--doc/html/globals_0x74.html19
-rw-r--r--doc/html/globals_0x75.html27
-rw-r--r--doc/html/globals_0x76.html33
-rw-r--r--doc/html/globals_0x77.html22
-rw-r--r--doc/html/globals_0x78.html16
-rw-r--r--doc/html/globals_0x7a.html19
-rw-r--r--doc/html/globals_func_0x61.html20
-rw-r--r--doc/html/globals_func_0x62.html39
-rw-r--r--doc/html/globals_func_0x63.html26
-rw-r--r--doc/html/globals_func_0x64.html151
-rw-r--r--doc/html/globals_func_0x65.html14
-rw-r--r--doc/html/globals_func_0x66.html19
-rw-r--r--doc/html/globals_func_0x67.html41
-rw-r--r--doc/html/globals_func_0x68.html19
-rw-r--r--doc/html/globals_func_0x69.html17
-rw-r--r--doc/html/globals_func_0x6c.html24
-rw-r--r--doc/html/globals_func_0x6d.html19
-rw-r--r--doc/html/globals_func_0x6e.html6
-rw-r--r--doc/html/globals_func_0x6f.html6
-rw-r--r--doc/html/globals_func_0x70.html86
-rw-r--r--doc/html/globals_func_0x72.html42
-rw-r--r--doc/html/globals_func_0x73.html43
-rw-r--r--doc/html/globals_func_0x74.html19
-rw-r--r--doc/html/globals_func_0x75.html27
-rw-r--r--doc/html/globals_func_0x77.html22
-rw-r--r--doc/html/globals_func_0x78.html13
-rw-r--r--doc/html/globals_func_0x7a.html19
-rw-r--r--doc/html/globals_vars.html29
-rw-r--r--doc/html/globals_vars.js1
-rw-r--r--doc/html/globals_vars_0x61.html4
-rw-r--r--doc/html/globals_vars_0x63.html1
-rw-r--r--doc/html/globals_vars_0x64.html7
-rw-r--r--doc/html/globals_vars_0x65.html3
-rw-r--r--doc/html/globals_vars_0x66.html1
-rw-r--r--doc/html/globals_vars_0x67.html1
-rw-r--r--doc/html/globals_vars_0x68.html1
-rw-r--r--doc/html/globals_vars_0x69.html7
-rw-r--r--doc/html/globals_vars_0x6a.html1
-rw-r--r--doc/html/globals_vars_0x6b.html1
-rw-r--r--doc/html/globals_vars_0x6c.html1
-rw-r--r--doc/html/globals_vars_0x6d.html1
-rw-r--r--doc/html/globals_vars_0x6e.html7
-rw-r--r--doc/html/globals_vars_0x70.html25
-rw-r--r--doc/html/globals_vars_0x72.html22
-rw-r--r--doc/html/globals_vars_0x73.html1
-rw-r--r--doc/html/globals_vars_0x74.html1
-rw-r--r--doc/html/globals_vars_0x75.html1
-rw-r--r--doc/html/globals_vars_0x76.html179
-rw-r--r--doc/html/globals_vars_0x77.html1
-rw-r--r--doc/html/globals_vars_0x78.html4
-rw-r--r--doc/html/globals_vars_0x7a.html1
-rw-r--r--doc/html/hcard_8php.html8
-rw-r--r--doc/html/hcard_8php.js2
-rw-r--r--doc/html/hierarchy.html70
-rw-r--r--doc/html/hierarchy.js27
-rw-r--r--doc/html/hivenet_2php_2style_8php.html112
-rw-r--r--doc/html/hivenet_2php_2theme_8php.html144
-rw-r--r--doc/html/hivenet_2php_2theme_8php.js4
-rw-r--r--doc/html/home_8php.html26
-rw-r--r--doc/html/home_8php.js2
-rw-r--r--doc/html/html2bbcode_8php.html2
-rw-r--r--doc/html/html2plain_8php.html2
-rw-r--r--doc/html/hubloc_8php.html99
-rw-r--r--doc/html/hubloc_8php.js7
-rw-r--r--doc/html/identity_8php.html161
-rw-r--r--doc/html/identity_8php.js7
-rw-r--r--doc/html/impel_8php.html137
-rw-r--r--doc/html/impel_8php.js4
-rw-r--r--doc/html/include_2api_8php.html86
-rw-r--r--doc/html/include_2api_8php.js3
-rw-r--r--doc/html/include_2attach_8php.html48
-rw-r--r--doc/html/include_2chat_8php.html22
-rw-r--r--doc/html/include_2chat_8php.js3
-rw-r--r--doc/html/include_2config_8php.html238
-rw-r--r--doc/html/include_2config_8php.js4
-rw-r--r--doc/html/include_2follow_8php.html2
-rw-r--r--doc/html/include_2group_8php.html10
-rw-r--r--doc/html/include_2menu_8php.html36
-rw-r--r--doc/html/include_2menu_8php.js1
-rw-r--r--doc/html/include_2network_8php.html237
-rw-r--r--doc/html/include_2network_8php.js12
-rw-r--r--doc/html/include_2oembed_8php.html2
-rw-r--r--doc/html/include_2photos_8php.html4
-rw-r--r--doc/html/item_8php.html66
-rw-r--r--doc/html/item_8php.js1
-rw-r--r--doc/html/items_8php.html431
-rw-r--r--doc/html/items_8php.js23
-rw-r--r--doc/html/language_8php.html20
-rw-r--r--doc/html/layouts_8php.html18
-rw-r--r--doc/html/layouts_8php.js3
-rw-r--r--doc/html/locs_8php.html155
-rw-r--r--doc/html/locs_8php.js5
-rw-r--r--doc/html/mod_2network_8php.html1
-rw-r--r--doc/html/namespaceRedMatrix.html127
-rw-r--r--doc/html/namespaceRedMatrix.js5
-rw-r--r--doc/html/namespaceRedMatrix_1_1Import.html120
-rw-r--r--doc/html/namespaceRedMatrix_1_1Import.js4
-rw-r--r--doc/html/namespaceRedMatrix_1_1RedDAV.html130
-rw-r--r--doc/html/namespaceRedMatrix_1_1RedDAV.js7
-rw-r--r--doc/html/namespaceRedmatrix_1_1Import.html120
-rw-r--r--doc/html/namespaceRedmatrix_1_1Import.js4
-rw-r--r--doc/html/namespaces.html9
-rw-r--r--doc/html/namespaces.js1
-rw-r--r--doc/html/navtree.js17
-rw-r--r--doc/html/navtreeindex0.js408
-rw-r--r--doc/html/navtreeindex1.js472
-rw-r--r--doc/html/navtreeindex2.js500
-rw-r--r--doc/html/navtreeindex3.js492
-rw-r--r--doc/html/navtreeindex4.js402
-rw-r--r--doc/html/navtreeindex5.js500
-rw-r--r--doc/html/navtreeindex6.js462
-rw-r--r--doc/html/navtreeindex7.js498
-rw-r--r--doc/html/navtreeindex8.js458
-rw-r--r--doc/html/navtreeindex9.js184
-rw-r--r--doc/html/notifier_8php.html1
-rw-r--r--doc/html/p_8php.html137
-rw-r--r--doc/html/p_8php.js4
-rw-r--r--doc/html/permissions_8php.html93
-rw-r--r--doc/html/permissions_8php.js2
-rw-r--r--doc/html/photo__driver_8php.html6
-rw-r--r--doc/html/php2po_8php.html6
-rw-r--r--doc/html/php_2default_8php.html4
-rw-r--r--doc/html/php_2theme__init_8php.html2
-rw-r--r--doc/html/ping_8php.html2
-rw-r--r--doc/html/plugin_8php.html134
-rw-r--r--doc/html/plugin_8php.js7
-rw-r--r--doc/html/po2php_8php.html20
-rw-r--r--doc/html/po2php_8php.js3
-rw-r--r--doc/html/poll_8php.html173
-rw-r--r--doc/html/poll_8php.js6
-rw-r--r--doc/html/poller_8php.html2
-rw-r--r--doc/html/post_8php.html2
-rw-r--r--doc/html/post__to__red_8php.html20
-rw-r--r--doc/html/post__to__red_8php.js1
-rw-r--r--doc/html/profile__selectors_8php.html90
-rw-r--r--doc/html/profile__selectors_8php.js5
-rw-r--r--doc/html/receive_8php.html138
-rw-r--r--doc/html/receive_8php.js4
-rw-r--r--doc/html/redable_8php.html133
-rw-r--r--doc/html/redable_8php.js4
-rw-r--r--doc/html/redbasic_2php_2theme_8php.html2
-rw-r--r--doc/html/reddav_8php.html62
-rw-r--r--doc/html/reddav_8php.js4
-rw-r--r--doc/html/refimport_8php.html381
-rw-r--r--doc/html/refimport_8php.js16
-rw-r--r--doc/html/removeaccount_8php.html155
-rw-r--r--doc/html/removeaccount_8php.js5
-rw-r--r--doc/html/search/all_24.js54
-rw-r--r--doc/html/search/all_5f.js2
-rw-r--r--doc/html/search/all_61.js11
-rw-r--r--doc/html/search/all_62.js17
-rw-r--r--doc/html/search/all_63.js33
-rw-r--r--doc/html/search/all_64.js66
-rw-r--r--doc/html/search/all_65.js12
-rw-r--r--doc/html/search/all_66.js13
-rw-r--r--doc/html/search/all_67.js57
-rw-r--r--doc/html/search/all_68.js12
-rw-r--r--doc/html/search/all_69.js14
-rw-r--r--doc/html/search/all_6c.js15
-rw-r--r--doc/html/search/all_6d.js9
-rw-r--r--doc/html/search/all_6e.js10
-rw-r--r--doc/html/search/all_6f.js3
-rw-r--r--doc/html/search/all_70.js45
-rw-r--r--doc/html/search/all_71.js3
-rw-r--r--doc/html/search/all_72.js48
-rw-r--r--doc/html/search/all_73.js43
-rw-r--r--doc/html/search/all_74.js21
-rw-r--r--doc/html/search/all_75.js19
-rw-r--r--doc/html/search/all_76.js13
-rw-r--r--doc/html/search/all_77.js10
-rw-r--r--doc/html/search/all_78.js8
-rw-r--r--doc/html/search/all_7a.js9
-rw-r--r--doc/html/search/classes_64.js3
-rw-r--r--doc/html/search/classes_69.js1
-rw-r--r--doc/html/search/classes_72.js8
-rw-r--r--doc/html/search/files_63.js6
-rw-r--r--doc/html/search/files_64.js10
-rw-r--r--doc/html/search/files_66.js2
-rw-r--r--doc/html/search/files_68.js1
-rw-r--r--doc/html/search/files_69.js2
-rw-r--r--doc/html/search/files_6c.js1
-rw-r--r--doc/html/search/files_70.js7
-rw-r--r--doc/html/search/files_72.js11
-rw-r--r--doc/html/search/files_73.js11
-rw-r--r--doc/html/search/files_74.js12
-rw-r--r--doc/html/search/files_75.js1
-rw-r--r--doc/html/search/functions_5f.js2
-rw-r--r--doc/html/search/functions_61.js8
-rw-r--r--doc/html/search/functions_62.js15
-rw-r--r--doc/html/search/functions_63.js29
-rw-r--r--doc/html/search/functions_64.js55
-rw-r--r--doc/html/search/functions_65.js12
-rw-r--r--doc/html/search/functions_66.js11
-rw-r--r--doc/html/search/functions_67.js55
-rw-r--r--doc/html/search/functions_68.js13
-rw-r--r--doc/html/search/functions_69.js7
-rw-r--r--doc/html/search/functions_6c.js14
-rw-r--r--doc/html/search/functions_6d.js9
-rw-r--r--doc/html/search/functions_6e.js2
-rw-r--r--doc/html/search/functions_6f.js5
-rw-r--r--doc/html/search/functions_70.js32
-rw-r--r--doc/html/search/functions_71.js3
-rw-r--r--doc/html/search/functions_72.js19
-rw-r--r--doc/html/search/functions_73.js30
-rw-r--r--doc/html/search/functions_74.js11
-rw-r--r--doc/html/search/functions_75.js17
-rw-r--r--doc/html/search/functions_76.js2
-rw-r--r--doc/html/search/functions_77.js10
-rw-r--r--doc/html/search/functions_78.js7
-rw-r--r--doc/html/search/functions_7a.js9
-rw-r--r--doc/html/search/namespaces_72.html26
-rw-r--r--doc/html/search/namespaces_72.js6
-rw-r--r--doc/html/search/search.js4
-rw-r--r--doc/html/search/variables_24.js54
-rw-r--r--doc/html/search/variables_61.js1
-rw-r--r--doc/html/search/variables_64.js2
-rw-r--r--doc/html/search/variables_65.js2
-rw-r--r--doc/html/search/variables_69.js4
-rw-r--r--doc/html/search/variables_6e.js6
-rw-r--r--doc/html/search/variables_70.js10
-rw-r--r--doc/html/search/variables_72.js7
-rw-r--r--doc/html/search/variables_75.js3
-rw-r--r--doc/html/search/variables_76.html26
-rw-r--r--doc/html/search/variables_76.js14
-rw-r--r--doc/html/search/variables_78.js1
-rw-r--r--doc/html/security_8php.html63
-rw-r--r--doc/html/service__limits_8php.html137
-rw-r--r--doc/html/service__limits_8php.js4
-rw-r--r--doc/html/setup_8php.html2
-rw-r--r--doc/html/simple__black__on__white_8php.html112
-rw-r--r--doc/html/simple__green__on__black_8php.html112
-rw-r--r--doc/html/simple__white__on__black_8php.html112
-rw-r--r--doc/html/smarty_8php.html122
-rw-r--r--doc/html/socgraph_8php.html2
-rw-r--r--doc/html/statistics__fns_8php.html195
-rw-r--r--doc/html/statistics__fns_8php.js7
-rw-r--r--doc/html/stumble_2php_2style_8php.html112
-rw-r--r--doc/html/stumble_2php_2theme_8php.html144
-rw-r--r--doc/html/stumble_2php_2theme_8php.js4
-rw-r--r--doc/html/suckerberg_2php_2style_8php.html112
-rw-r--r--doc/html/suckerberg_2php_2theme_8php.html144
-rw-r--r--doc/html/suckerberg_2php_2theme_8php.js4
-rw-r--r--doc/html/taxonomy_8php.html114
-rw-r--r--doc/html/taxonomy_8php.js4
-rw-r--r--doc/html/text_8php.html269
-rw-r--r--doc/html/text_8php.js7
-rw-r--r--doc/html/theme_2mytheme_2php_2default_8php.html4
-rw-r--r--doc/html/todo.html24
-rw-r--r--doc/html/typo_8php.html2
-rw-r--r--doc/html/typohelper_8php.html4
-rw-r--r--doc/html/uexport_8php.html18
-rw-r--r--doc/html/uexport_8php.js1
-rw-r--r--doc/html/update__home_8php.html137
-rw-r--r--doc/html/update__home_8php.js4
-rw-r--r--doc/html/webpages_8php.html18
-rw-r--r--doc/html/webpages_8php.js3
-rw-r--r--doc/html/widgets_8php.html64
-rw-r--r--doc/html/widgets_8php.js3
-rw-r--r--doc/html/zot_8php.html211
-rw-r--r--doc/html/zot_8php.js11
-rw-r--r--doc/install.bb105
-rw-r--r--doc/install/sample-lighttpd.conf5
-rw-r--r--doc/install/sample-nginx.conf8
-rw-r--r--doc/intro_for_developers.bb37
-rw-r--r--doc/macros/addons_footer.bb2
-rw-r--r--doc/macros/cloud_footer.bb2
-rw-r--r--doc/macros/de/addons_footer.bb2
-rw-r--r--doc/macros/de/cloud_footer.bb2
-rw-r--r--doc/macros/de/main_footer.bb1
-rw-r--r--doc/macros/de/troubleshooting_footer.bb2
-rw-r--r--doc/macros/main_footer.bb1
-rw-r--r--doc/macros/troubleshooting_footer.bb2
-rw-r--r--doc/main.bb50
-rw-r--r--doc/permissions.bb4
-rw-r--r--doc/plugins.bb7
-rw-r--r--doc/privacy.bb18
-rw-r--r--doc/problems-following-an-update.bb3
-rw-r--r--doc/profiles.bb2
-rw-r--r--doc/red2pi.bb6
-rw-r--r--doc/registration.bb7
-rw-r--r--doc/remove_account.bb24
-rw-r--r--doc/roadmap.bb49
-rw-r--r--doc/roles.md66
-rw-r--r--doc/schema_development.bb2
-rw-r--r--doc/sql_conventions.bb87
-rw-r--r--doc/tags_and_mentions.bb3
-rw-r--r--doc/to_do_code.bb41
-rw-r--r--doc/to_do_doco.md2
-rw-r--r--doc/troubleshooting.bb4
-rw-r--r--doc/webpages.bb3
-rw-r--r--doc/what_is_zot.bb2
-rw-r--r--doc/zot.md2
-rw-r--r--doc/zot_structures.md3
-rw-r--r--images/default_profile_photos/alpha/175.pngbin0 -> 3817 bytes
-rw-r--r--images/default_profile_photos/alpha/48.pngbin0 -> 3541 bytes
-rw-r--r--images/default_profile_photos/alpha/80.pngbin0 -> 3598 bytes
-rw-r--r--images/default_profile_photos/black_avatar_1/175.pngbin0 -> 6420 bytes
-rw-r--r--images/default_profile_photos/black_avatar_1/48.pngbin0 -> 1763 bytes
-rw-r--r--images/default_profile_photos/black_avatar_1/80.pngbin0 -> 2986 bytes
-rw-r--r--images/default_profile_photos/black_avatar_2/175.pngbin0 -> 5802 bytes
-rw-r--r--images/default_profile_photos/black_avatar_2/48.pngbin0 -> 1516 bytes
-rw-r--r--images/default_profile_photos/black_avatar_2/80.pngbin0 -> 2598 bytes
-rw-r--r--images/default_profile_photos/blank/175.pngbin0 -> 3817 bytes
-rw-r--r--images/default_profile_photos/blank/48.pngbin0 -> 3540 bytes
-rw-r--r--images/default_profile_photos/blank/80.pngbin0 -> 3599 bytes
-rw-r--r--images/default_profile_photos/rainbow_man/175.pngbin0 -> 57998 bytes
-rw-r--r--images/default_profile_photos/rainbow_man/48.pngbin0 -> 17365 bytes
-rw-r--r--images/default_profile_photos/rainbow_man/80.pngbin0 -> 23715 bytes
-rw-r--r--images/default_profile_photos/rainbow_man_trans/175.pngbin0 -> 71198 bytes
-rw-r--r--images/default_profile_photos/rainbow_man_trans/48.pngbin0 -> 18090 bytes
-rw-r--r--images/default_profile_photos/rainbow_man_trans/80.pngbin0 -> 26091 bytes
-rw-r--r--images/default_profile_photos/red_avatar/175.pngbin0 -> 4621 bytes
-rw-r--r--images/default_profile_photos/red_avatar/48.pngbin0 -> 1724 bytes
-rw-r--r--images/default_profile_photos/red_avatar/80.pngbin0 -> 2660 bytes
-rw-r--r--images/default_profile_photos/red_koala/175.pngbin0 -> 20722 bytes
-rw-r--r--images/default_profile_photos/red_koala/48.pngbin0 -> 11364 bytes
-rw-r--r--images/default_profile_photos/red_koala/80.pngbin0 -> 14503 bytes
-rw-r--r--images/default_profile_photos/red_koala_trans/175.pngbin0 -> 25546 bytes
-rw-r--r--images/default_profile_photos/red_koala_trans/48.pngbin0 -> 13983 bytes
-rw-r--r--images/default_profile_photos/red_koala_trans/80.pngbin0 -> 18769 bytes
-rw-r--r--images/default_profile_photos/redmatrix_logo_smiley/175.pngbin0 -> 3834 bytes
-rw-r--r--images/default_profile_photos/redmatrix_logo_smiley/48.pngbin0 -> 1205 bytes
-rw-r--r--images/default_profile_photos/redmatrix_logo_smiley/80.pngbin0 -> 1631 bytes
-rw-r--r--images/nosign.pngbin17512 -> 17868 bytes
-rw-r--r--images/redmatrix_logo.svg85
-rw-r--r--images/rss_icon.pngbin0 -> 9478 bytes
-rw-r--r--include/Contact.php240
-rw-r--r--include/ConversationObject.php49
-rw-r--r--include/Import/Importer.php82
-rw-r--r--include/Import/refimport.php280
-rw-r--r--include/ItemObject.php110
-rw-r--r--include/RedDAV/RedBasicAuth.php212
-rw-r--r--include/RedDAV/RedBrowser.php436
-rw-r--r--include/RedDAV/RedDirectory.php462
-rw-r--r--include/RedDAV/RedFile.php279
-rw-r--r--include/account.php151
-rw-r--r--include/acl_selectors.php7
-rw-r--r--include/activities.php8
-rw-r--r--include/api.php155
-rw-r--r--include/apps.php136
-rw-r--r--include/attach.php273
-rw-r--r--include/auth.php181
-rw-r--r--include/bb2diaspora.php396
-rw-r--r--include/bbcode.php81
-rw-r--r--include/cache.php2
-rw-r--r--include/chat.php31
-rw-r--r--include/cli_startup.php10
-rw-r--r--include/config.php384
-rw-r--r--include/contact_selectors.php4
-rw-r--r--include/contact_widgets.php4
-rw-r--r--include/conversation.php342
-rw-r--r--include/crypto.php193
-rw-r--r--include/datetime.php260
-rwxr-xr-xinclude/dba/dba_driver.php302
-rwxr-xr-xinclude/dba/dba_mysql.php4
-rwxr-xr-xinclude/dba/dba_mysqli.php6
-rw-r--r--include/dba/dba_postgres.php116
-rw-r--r--include/deliver.php50
-rwxr-xr-xinclude/diaspora.php2811
-rw-r--r--include/dir_fns.php91
-rw-r--r--include/directory.php4
-rw-r--r--include/enotify.php37
-rw-r--r--include/event.php94
-rw-r--r--include/expire.php10
-rw-r--r--include/externals.php41
-rw-r--r--include/features.php10
-rw-r--r--include/fixd.php33
-rw-r--r--include/follow.php121
-rw-r--r--include/group.php12
-rw-r--r--include/html2bbcode.php7
-rw-r--r--include/hubloc.php218
-rw-r--r--include/identity.php355
-rwxr-xr-xinclude/items.php1386
-rw-r--r--include/js_strings.php1
-rw-r--r--include/language.php32
-rw-r--r--include/menu.php16
-rw-r--r--include/message.php73
-rw-r--r--include/nav.php103
-rw-r--r--include/network.php1170
-rw-r--r--include/notifier.php202
-rwxr-xr-xinclude/oembed.php22
-rw-r--r--include/onedirsync.php26
-rw-r--r--include/onepoll.php53
-rw-r--r--include/permissions.php490
-rw-r--r--include/photo/photo_driver.php99
-rw-r--r--include/photo/photo_gd.php2
-rw-r--r--include/photos.php98
-rwxr-xr-xinclude/plugin.php96
-rw-r--r--include/poller.php124
-rw-r--r--include/profile_selectors.php55
-rw-r--r--include/queue.php38
-rw-r--r--include/queue_fn.php4
-rw-r--r--include/reddav.php1214
-rw-r--r--include/security.php151
-rw-r--r--include/session.php11
-rw-r--r--include/socgraph.php88
-rw-r--r--include/statistics_fns.php79
-rw-r--r--include/taxonomy.php46
-rw-r--r--[-rwxr-xr-x]include/text.php858
-rw-r--r--include/widgets.php313
-rw-r--r--include/zot.php1005
-rwxr-xr-xindex.php53
-rw-r--r--install/INSTALL.txt127
-rw-r--r--install/database-w-defaults-v1131.diff1914
-rw-r--r--install/database.sql1165
-rw-r--r--install/migrate-mypg.php357
-rw-r--r--install/migrate_mypg_fixseq.sql55
-rw-r--r--install/schema_mysql.sql1591
-rw-r--r--install/schema_postgres.sql1190
-rw-r--r--install/update.php172
-rw-r--r--library/HTMLPurifier.autoload.php8
-rw-r--r--library/HTMLPurifier.composer.php4
-rw-r--r--library/HTMLPurifier.func.php8
-rw-r--r--library/HTMLPurifier.includes.php21
-rw-r--r--library/HTMLPurifier.kses.php4
-rw-r--r--library/HTMLPurifier.php137
-rw-r--r--library/HTMLPurifier.safe-includes.php19
-rw-r--r--library/HTMLPurifier/Arborize.php71
-rw-r--r--library/HTMLPurifier/AttrCollections.php53
-rw-r--r--library/HTMLPurifier/AttrDef.php53
-rw-r--r--library/HTMLPurifier/AttrDef/CSS.php39
-rw-r--r--library/HTMLPurifier/AttrDef/CSS/AlphaValue.php27
-rw-r--r--library/HTMLPurifier/AttrDef/CSS/Background.php60
-rw-r--r--library/HTMLPurifier/AttrDef/CSS/BackgroundPosition.php54
-rw-r--r--library/HTMLPurifier/AttrDef/CSS/Border.php21
-rw-r--r--library/HTMLPurifier/AttrDef/CSS/Color.php67
-rw-r--r--library/HTMLPurifier/AttrDef/CSS/Composite.php22
-rw-r--r--library/HTMLPurifier/AttrDef/CSS/DenyElementDecorator.php28
-rw-r--r--library/HTMLPurifier/AttrDef/CSS/Filter.php49
-rw-r--r--library/HTMLPurifier/AttrDef/CSS/Font.php89
-rw-r--r--library/HTMLPurifier/AttrDef/CSS/FontFamily.php185
-rw-r--r--library/HTMLPurifier/AttrDef/CSS/Ident.php32
-rw-r--r--library/HTMLPurifier/AttrDef/CSS/ImportantDecorator.php28
-rw-r--r--library/HTMLPurifier/AttrDef/CSS/Length.php60
-rw-r--r--library/HTMLPurifier/AttrDef/CSS/ListStyle.php78
-rw-r--r--library/HTMLPurifier/AttrDef/CSS/Multiple.php31
-rw-r--r--library/HTMLPurifier/AttrDef/CSS/Number.php45
-rw-r--r--library/HTMLPurifier/AttrDef/CSS/Percentage.php36
-rw-r--r--library/HTMLPurifier/AttrDef/CSS/TextDecoration.php20
-rw-r--r--library/HTMLPurifier/AttrDef/CSS/URI.php38
-rw-r--r--library/HTMLPurifier/AttrDef/Clone.php44
-rw-r--r--library/HTMLPurifier/AttrDef/Enum.php28
-rw-r--r--library/HTMLPurifier/AttrDef/HTML/Bool.php35
-rw-r--r--library/HTMLPurifier/AttrDef/HTML/Class.php22
-rw-r--r--library/HTMLPurifier/AttrDef/HTML/Color.php45
-rw-r--r--library/HTMLPurifier/AttrDef/HTML/FrameTarget.php25
-rw-r--r--library/HTMLPurifier/AttrDef/HTML/ID.php71
-rw-r--r--library/HTMLPurifier/AttrDef/HTML/Length.php41
-rw-r--r--library/HTMLPurifier/AttrDef/HTML/LinkTypes.php43
-rw-r--r--library/HTMLPurifier/AttrDef/HTML/MultiLength.php51
-rw-r--r--library/HTMLPurifier/AttrDef/HTML/Nmtokens.php40
-rw-r--r--library/HTMLPurifier/AttrDef/HTML/Pixels.php60
-rw-r--r--library/HTMLPurifier/AttrDef/Integer.php56
-rw-r--r--library/HTMLPurifier/AttrDef/Lang.php39
-rw-r--r--library/HTMLPurifier/AttrDef/Switch.php27
-rw-r--r--library/HTMLPurifier/AttrDef/Text.php10
-rw-r--r--library/HTMLPurifier/AttrDef/URI.php72
-rw-r--r--library/HTMLPurifier/AttrDef/URI/Email.php5
-rw-r--r--library/HTMLPurifier/AttrDef/URI/Email/SimpleCheck.php14
-rw-r--r--library/HTMLPurifier/AttrDef/URI/Host.php104
-rw-r--r--library/HTMLPurifier/AttrDef/URI/IPv4.php28
-rw-r--r--library/HTMLPurifier/AttrDef/URI/IPv6.php106
-rw-r--r--library/HTMLPurifier/AttrTransform.php28
-rw-r--r--library/HTMLPurifier/AttrTransform/Background.php21
-rw-r--r--library/HTMLPurifier/AttrTransform/BdoDir.php14
-rw-r--r--library/HTMLPurifier/AttrTransform/BgColor.php21
-rw-r--r--library/HTMLPurifier/AttrTransform/BoolToCSS.php33
-rw-r--r--library/HTMLPurifier/AttrTransform/Border.php18
-rw-r--r--library/HTMLPurifier/AttrTransform/EnumToCSS.php46
-rw-r--r--library/HTMLPurifier/AttrTransform/ImgRequired.php19
-rw-r--r--library/HTMLPurifier/AttrTransform/ImgSpace.php39
-rw-r--r--library/HTMLPurifier/AttrTransform/Input.php34
-rw-r--r--library/HTMLPurifier/AttrTransform/Lang.php15
-rw-r--r--library/HTMLPurifier/AttrTransform/Length.php28
-rw-r--r--library/HTMLPurifier/AttrTransform/Name.php22
-rw-r--r--library/HTMLPurifier/AttrTransform/NameSync.php28
-rw-r--r--library/HTMLPurifier/AttrTransform/Nofollow.php52
-rw-r--r--library/HTMLPurifier/AttrTransform/SafeEmbed.php12
-rw-r--r--library/HTMLPurifier/AttrTransform/SafeObject.php16
-rw-r--r--library/HTMLPurifier/AttrTransform/SafeParam.php29
-rw-r--r--library/HTMLPurifier/AttrTransform/ScriptRequired.php9
-rw-r--r--library/HTMLPurifier/AttrTransform/TargetBlank.php45
-rw-r--r--library/HTMLPurifier/AttrTransform/Textarea.php19
-rw-r--r--library/HTMLPurifier/AttrTypes.php45
-rw-r--r--library/HTMLPurifier/AttrValidator.php66
-rw-r--r--library/HTMLPurifier/Bootstrap.php90
-rw-r--r--library/HTMLPurifier/CSSDefinition.php452
-rw-r--r--library/HTMLPurifier/ChildDef.php26
-rw-r--r--library/HTMLPurifier/ChildDef/Chameleon.php33
-rw-r--r--library/HTMLPurifier/ChildDef/Custom.php56
-rw-r--r--library/HTMLPurifier/ChildDef/Empty.php22
-rw-r--r--library/HTMLPurifier/ChildDef/List.php86
-rw-r--r--library/HTMLPurifier/ChildDef/Optional.php31
-rw-r--r--library/HTMLPurifier/ChildDef/Required.php103
-rw-r--r--library/HTMLPurifier/ChildDef/StrictBlockquote.php96
-rw-r--r--library/HTMLPurifier/ChildDef/Table.php302
-rw-r--r--library/HTMLPurifier/Config.php681
-rw-r--r--library/HTMLPurifier/ConfigSchema.php78
-rw-r--r--library/HTMLPurifier/ConfigSchema/Builder/ConfigSchema.php8
-rw-r--r--library/HTMLPurifier/ConfigSchema/Builder/Xml.php94
-rw-r--r--library/HTMLPurifier/ConfigSchema/Interchange.php11
-rw-r--r--library/HTMLPurifier/ConfigSchema/Interchange/Directive.php28
-rw-r--r--library/HTMLPurifier/ConfigSchema/Interchange/Id.php33
-rw-r--r--library/HTMLPurifier/ConfigSchema/InterchangeBuilder.php90
-rw-r--r--library/HTMLPurifier/ConfigSchema/Validator.php90
-rw-r--r--library/HTMLPurifier/ConfigSchema/ValidatorAtom.php108
-rw-r--r--library/HTMLPurifier/ConfigSchema/schema.serbin13244 -> 15000 bytes
-rw-r--r--library/HTMLPurifier/ConfigSchema/schema/CSS.AllowedFonts.txt12
-rw-r--r--library/HTMLPurifier/ConfigSchema/schema/CSS.ForbiddenProperties.txt13
-rw-r--r--library/HTMLPurifier/ConfigSchema/schema/CSS.Trusted.txt9
-rw-r--r--library/HTMLPurifier/ConfigSchema/schema/Cache.SerializerPermissions.txt11
-rw-r--r--library/HTMLPurifier/ConfigSchema/schema/Core.AllowHostnameUnderscore.txt16
-rw-r--r--library/HTMLPurifier/ConfigSchema/schema/Core.ColorKeywords.txt3
-rw-r--r--library/HTMLPurifier/ConfigSchema/schema/Core.DisableExcludes.txt14
-rw-r--r--library/HTMLPurifier/ConfigSchema/schema/Core.EnableIDNA.txt9
-rw-r--r--library/HTMLPurifier/ConfigSchema/schema/Core.EscapeInvalidChildren.txt6
-rw-r--r--library/HTMLPurifier/ConfigSchema/schema/Core.NormalizeNewlines.txt11
-rw-r--r--library/HTMLPurifier/ConfigSchema/schema/Core.RemoveProcessingInstructions.txt11
-rw-r--r--library/HTMLPurifier/ConfigSchema/schema/Filter.YouTube.txt5
-rw-r--r--library/HTMLPurifier/ConfigSchema/schema/HTML.Allowed.txt11
-rw-r--r--library/HTMLPurifier/ConfigSchema/schema/HTML.AllowedComments.txt10
-rw-r--r--library/HTMLPurifier/ConfigSchema/schema/HTML.AllowedCommentsRegexp.txt15
-rw-r--r--library/HTMLPurifier/ConfigSchema/schema/HTML.AllowedElements.txt17
-rw-r--r--library/HTMLPurifier/ConfigSchema/schema/HTML.FlashAllowFullScreen.txt11
-rw-r--r--library/HTMLPurifier/ConfigSchema/schema/HTML.Nofollow.txt7
-rw-r--r--library/HTMLPurifier/ConfigSchema/schema/HTML.SafeIframe.txt13
-rw-r--r--library/HTMLPurifier/ConfigSchema/schema/HTML.SafeScripting.txt10
-rw-r--r--library/HTMLPurifier/ConfigSchema/schema/HTML.TargetBlank.txt8
-rw-r--r--library/HTMLPurifier/ConfigSchema/schema/HTML.Trusted.txt1
-rw-r--r--library/HTMLPurifier/ConfigSchema/schema/Output.FixInnerHTML.txt15
-rw-r--r--library/HTMLPurifier/ConfigSchema/schema/URI.AllowedSchemes.txt4
-rw-r--r--library/HTMLPurifier/ConfigSchema/schema/URI.DisableResources.txt7
-rw-r--r--library/HTMLPurifier/ConfigSchema/schema/URI.MungeSecretKey.txt2
-rw-r--r--library/HTMLPurifier/ConfigSchema/schema/URI.SafeIframeRegexp.txt22
-rw-r--r--library/HTMLPurifier/ContentSets.php55
-rw-r--r--library/HTMLPurifier/Context.php61
-rw-r--r--library/HTMLPurifier/Definition.php26
-rw-r--r--library/HTMLPurifier/DefinitionCache.php57
-rw-r--r--library/HTMLPurifier/DefinitionCache/Decorator.php76
-rw-r--r--library/HTMLPurifier/DefinitionCache/Decorator/Cleanup.php61
-rw-r--r--library/HTMLPurifier/DefinitionCache/Decorator/Memory.php65
-rw-r--r--library/HTMLPurifier/DefinitionCache/Decorator/Template.php.in59
-rw-r--r--library/HTMLPurifier/DefinitionCache/Null.php53
-rw-r--r--library/HTMLPurifier/DefinitionCache/Serializer.php235
-rwxr-xr-x[-rw-r--r--]library/HTMLPurifier/DefinitionCache/Serializer/README0
-rw-r--r--library/HTMLPurifier/DefinitionCacheFactory.php47
-rw-r--r--library/HTMLPurifier/Doctype.php17
-rw-r--r--library/HTMLPurifier/DoctypeRegistry.php87
-rw-r--r--library/HTMLPurifier/ElementDef.php85
-rw-r--r--library/HTMLPurifier/Encoder.php301
-rw-r--r--library/HTMLPurifier/EntityLookup.php16
-rw-r--r--library/HTMLPurifier/EntityLookup/entities.ser2
-rw-r--r--library/HTMLPurifier/EntityParser.php53
-rw-r--r--library/HTMLPurifier/ErrorCollector.php87
-rw-r--r--library/HTMLPurifier/ErrorStruct.php20
-rw-r--r--library/HTMLPurifier/Filter.php18
-rw-r--r--library/HTMLPurifier/Filter/ExtractStyleBlocks.php257
-rw-r--r--library/HTMLPurifier/Filter/YouTube.php56
-rw-r--r--library/HTMLPurifier/Generator.php164
-rw-r--r--library/HTMLPurifier/HTMLDefinition.php211
-rw-r--r--library/HTMLPurifier/HTMLModule.php122
-rw-r--r--library/HTMLPurifier/HTMLModule/Bdo.php21
-rw-r--r--library/HTMLPurifier/HTMLModule/CommonAttributes.php7
-rw-r--r--library/HTMLPurifier/HTMLModule/Edit.php25
-rw-r--r--library/HTMLPurifier/HTMLModule/Forms.php216
-rw-r--r--library/HTMLPurifier/HTMLModule/Hypertext.php15
-rw-r--r--library/HTMLPurifier/HTMLModule/Iframe.php51
-rw-r--r--library/HTMLPurifier/HTMLModule/Image.php17
-rw-r--r--library/HTMLPurifier/HTMLModule/Legacy.php89
-rw-r--r--library/HTMLPurifier/HTMLModule/List.php28
-rw-r--r--library/HTMLPurifier/HTMLModule/Name.php13
-rw-r--r--library/HTMLPurifier/HTMLModule/Nofollow.php25
-rw-r--r--library/HTMLPurifier/HTMLModule/NonXMLCommonAttributes.php6
-rw-r--r--library/HTMLPurifier/HTMLModule/Object.php31
-rw-r--r--library/HTMLPurifier/HTMLModule/Presentation.php26
-rw-r--r--library/HTMLPurifier/HTMLModule/Proprietary.php19
-rw-r--r--library/HTMLPurifier/HTMLModule/Ruby.php17
-rw-r--r--library/HTMLPurifier/HTMLModule/SafeEmbed.php20
-rw-r--r--library/HTMLPurifier/HTMLModule/SafeObject.php33
-rw-r--r--library/HTMLPurifier/HTMLModule/SafeScripting.php40
-rw-r--r--library/HTMLPurifier/HTMLModule/Scripting.php31
-rw-r--r--library/HTMLPurifier/HTMLModule/StyleAttribute.php15
-rw-r--r--library/HTMLPurifier/HTMLModule/Tables.php29
-rw-r--r--library/HTMLPurifier/HTMLModule/Target.php11
-rw-r--r--library/HTMLPurifier/HTMLModule/TargetBlank.php24
-rw-r--r--library/HTMLPurifier/HTMLModule/Text.php56
-rw-r--r--library/HTMLPurifier/HTMLModule/Tidy.php85
-rw-r--r--library/HTMLPurifier/HTMLModule/Tidy/Name.php15
-rw-r--r--library/HTMLPurifier/HTMLModule/Tidy/Proprietary.php14
-rw-r--r--library/HTMLPurifier/HTMLModule/Tidy/Strict.php28
-rw-r--r--library/HTMLPurifier/HTMLModule/Tidy/Transitional.php7
-rw-r--r--library/HTMLPurifier/HTMLModule/Tidy/XHTML.php15
-rw-r--r--library/HTMLPurifier/HTMLModule/Tidy/XHTMLAndHTML4.php146
-rw-r--r--library/HTMLPurifier/HTMLModule/XMLCommonAttributes.php6
-rw-r--r--library/HTMLPurifier/HTMLModuleManager.php166
-rw-r--r--library/HTMLPurifier/IDAccumulator.php24
-rw-r--r--library/HTMLPurifier/Injector.php198
-rw-r--r--library/HTMLPurifier/Injector/AutoParagraph.php99
-rw-r--r--library/HTMLPurifier/Injector/DisplayLinkURI.php22
-rw-r--r--library/HTMLPurifier/Injector/Linkify.php27
-rw-r--r--library/HTMLPurifier/Injector/PurifierLinkify.php46
-rw-r--r--library/HTMLPurifier/Injector/RemoveEmpty.php82
-rw-r--r--library/HTMLPurifier/Injector/RemoveSpansWithoutAttributes.php36
-rw-r--r--library/HTMLPurifier/Injector/SafeObject.php53
-rw-r--r--library/HTMLPurifier/Language.php97
-rw-r--r--library/HTMLPurifier/Language/classes/en-x-test.php3
-rw-r--r--library/HTMLPurifier/Language/messages/en.php90
-rw-r--r--library/HTMLPurifier/LanguageFactory.php81
-rw-r--r--library/HTMLPurifier/Length.php91
-rw-r--r--library/HTMLPurifier/Lexer.php191
-rw-r--r--library/HTMLPurifier/Lexer/DOMLex.php161
-rw-r--r--library/HTMLPurifier/Lexer/DirectLex.php217
-rw-r--r--library/HTMLPurifier/Lexer/PEARSax3.php139
-rw-r--r--library/HTMLPurifier/Lexer/PH5P.php4324
-rw-r--r--library/HTMLPurifier/Node.php49
-rw-r--r--library/HTMLPurifier/Node/Comment.php36
-rw-r--r--library/HTMLPurifier/Node/Element.php59
-rw-r--r--library/HTMLPurifier/Node/Text.php54
-rw-r--r--library/HTMLPurifier/PercentEncoder.php37
-rw-r--r--library/HTMLPurifier/Printer.php134
-rw-r--r--library/HTMLPurifier/Printer/CSSDefinition.php12
-rw-r--r--library/HTMLPurifier/Printer/ConfigForm.php257
-rw-r--r--library/HTMLPurifier/Printer/HTMLDefinition.php214
-rw-r--r--library/HTMLPurifier/PropertyList.php68
-rw-r--r--library/HTMLPurifier/PropertyListIterator.php22
-rw-r--r--library/HTMLPurifier/Queue.php56
-rw-r--r--library/HTMLPurifier/Strategy.php8
-rw-r--r--library/HTMLPurifier/Strategy/Composite.php13
-rw-r--r--library/HTMLPurifier/Strategy/Core.php5
-rw-r--r--library/HTMLPurifier/Strategy/FixNesting.php349
-rw-r--r--library/HTMLPurifier/Strategy/MakeWellFormed.php379
-rw-r--r--library/HTMLPurifier/Strategy/RemoveForeignElements.php94
-rw-r--r--library/HTMLPurifier/Strategy/ValidateAttributes.php22
-rw-r--r--library/HTMLPurifier/StringHash.php16
-rw-r--r--library/HTMLPurifier/StringHashParser.php52
-rw-r--r--library/HTMLPurifier/TagTransform.php15
-rw-r--r--library/HTMLPurifier/TagTransform/Font.php42
-rw-r--r--library/HTMLPurifier/TagTransform/Simple.php21
-rw-r--r--library/HTMLPurifier/Token.php81
-rw-r--r--library/HTMLPurifier/Token/Comment.php24
-rw-r--r--library/HTMLPurifier/Token/Empty.php6
-rw-r--r--library/HTMLPurifier/Token/End.php9
-rw-r--r--library/HTMLPurifier/Token/Start.php1
-rw-r--r--library/HTMLPurifier/Token/Tag.php22
-rw-r--r--library/HTMLPurifier/Token/Text.php34
-rw-r--r--library/HTMLPurifier/TokenFactory.php80
-rw-r--r--library/HTMLPurifier/URI.php257
-rw-r--r--library/HTMLPurifier/URIDefinition.php39
-rw-r--r--library/HTMLPurifier/URIFilter.php45
-rw-r--r--library/HTMLPurifier/URIFilter/DisableExternal.php45
-rw-r--r--library/HTMLPurifier/URIFilter/DisableExternalResources.php17
-rw-r--r--library/HTMLPurifier/URIFilter/DisableResources.php22
-rw-r--r--library/HTMLPurifier/URIFilter/HostBlacklist.php31
-rw-r--r--library/HTMLPurifier/URIFilter/MakeAbsolute.php74
-rw-r--r--library/HTMLPurifier/URIFilter/Munge.php91
-rw-r--r--library/HTMLPurifier/URIFilter/SafeIframe.php68
-rw-r--r--library/HTMLPurifier/URIParser.php9
-rw-r--r--library/HTMLPurifier/URIScheme.php88
-rw-r--r--library/HTMLPurifier/URIScheme/data.php58
-rw-r--r--library/HTMLPurifier/URIScheme/file.php44
-rw-r--r--library/HTMLPurifier/URIScheme/ftp.php29
-rw-r--r--library/HTMLPurifier/URIScheme/http.php26
-rw-r--r--library/HTMLPurifier/URIScheme/https.php12
-rw-r--r--library/HTMLPurifier/URIScheme/mailto.php23
-rw-r--r--library/HTMLPurifier/URIScheme/news.php29
-rw-r--r--library/HTMLPurifier/URIScheme/nntp.php24
-rw-r--r--library/HTMLPurifier/URISchemeRegistry.php41
-rw-r--r--library/HTMLPurifier/UnitConverter.php117
-rw-r--r--library/HTMLPurifier/VarParser.php152
-rw-r--r--library/HTMLPurifier/VarParser/Flexible.php88
-rw-r--r--library/HTMLPurifier/VarParser/Native.php18
-rw-r--r--library/HTMLPurifier/Zipper.php157
-rw-r--r--library/Smarty/README4
-rw-r--r--library/Smarty/SMARTY_3.1_NOTES.txt2
-rw-r--r--library/Smarty/change_log.txt357
-rw-r--r--library/Smarty/demo/index.php25
-rw-r--r--library/Smarty/demo/plugins/cacheresource.apc.php28
-rw-r--r--library/Smarty/demo/plugins/cacheresource.memcache.php36
-rw-r--r--library/Smarty/demo/plugins/cacheresource.mysql.php96
-rw-r--r--library/Smarty/demo/plugins/resource.extendsall.php32
-rw-r--r--library/Smarty/demo/plugins/resource.mysql.php35
-rw-r--r--library/Smarty/demo/plugins/resource.mysqls.php28
-rw-r--r--library/Smarty/demo/templates/header.tpl2
-rw-r--r--library/Smarty/demo/templates/index.tpl91
-rw-r--r--library/Smarty/libs/Smarty.class.php513
-rw-r--r--library/Smarty/libs/SmartyBC.class.php927
-rw-r--r--library/Smarty/libs/debug.tpl256
-rw-r--r--library/Smarty/libs/plugins/block.textformat.php21
-rw-r--r--library/Smarty/libs/plugins/function.counter.php38
-rw-r--r--library/Smarty/libs/plugins/function.cycle.php47
-rw-r--r--library/Smarty/libs/plugins/function.fetch.php117
-rw-r--r--library/Smarty/libs/plugins/function.html_checkboxes.php91
-rw-r--r--library/Smarty/libs/plugins/function.html_image.php68
-rw-r--r--library/Smarty/libs/plugins/function.html_options.php84
-rw-r--r--library/Smarty/libs/plugins/function.html_radios.php87
-rw-r--r--library/Smarty/libs/plugins/function.html_select_date.php157
-rw-r--r--library/Smarty/libs/plugins/function.html_select_time.php72
-rw-r--r--library/Smarty/libs/plugins/function.html_table.php45
-rw-r--r--library/Smarty/libs/plugins/function.mailto.php45
-rw-r--r--library/Smarty/libs/plugins/function.math.php54
-rw-r--r--library/Smarty/libs/plugins/modifier.capitalize.php59
-rw-r--r--library/Smarty/libs/plugins/modifier.date_format.php36
-rw-r--r--library/Smarty/libs/plugins/modifier.debug_print_var.php61
-rw-r--r--library/Smarty/libs/plugins/modifier.escape.php40
-rw-r--r--library/Smarty/libs/plugins/modifier.regex_replace.php30
-rw-r--r--library/Smarty/libs/plugins/modifier.replace.php23
-rw-r--r--library/Smarty/libs/plugins/modifier.spacify.php18
-rw-r--r--library/Smarty/libs/plugins/modifier.truncate.php33
-rw-r--r--library/Smarty/libs/plugins/modifiercompiler.cat.php59
-rw-r--r--library/Smarty/libs/plugins/modifiercompiler.count_characters.php65
-rw-r--r--library/Smarty/libs/plugins/modifiercompiler.count_paragraphs.php55
-rw-r--r--library/Smarty/libs/plugins/modifiercompiler.count_sentences.php55
-rw-r--r--library/Smarty/libs/plugins/modifiercompiler.count_words.php63
-rw-r--r--library/Smarty/libs/plugins/modifiercompiler.default.php70
-rw-r--r--library/Smarty/libs/plugins/modifiercompiler.escape.php251
-rw-r--r--library/Smarty/libs/plugins/modifiercompiler.from_charset.php67
-rw-r--r--library/Smarty/libs/plugins/modifiercompiler.indent.php65
-rw-r--r--library/Smarty/libs/plugins/modifiercompiler.lower.php62
-rw-r--r--library/Smarty/libs/plugins/modifiercompiler.noprint.php46
-rw-r--r--library/Smarty/libs/plugins/modifiercompiler.string_format.php51
-rw-r--r--library/Smarty/libs/plugins/modifiercompiler.strip.php66
-rw-r--r--library/Smarty/libs/plugins/modifiercompiler.strip_tags.php62
-rw-r--r--library/Smarty/libs/plugins/modifiercompiler.to_charset.php67
-rw-r--r--library/Smarty/libs/plugins/modifiercompiler.unescape.php101
-rw-r--r--library/Smarty/libs/plugins/modifiercompiler.upper.php59
-rw-r--r--library/Smarty/libs/plugins/modifiercompiler.wordwrap.php93
-rw-r--r--library/Smarty/libs/plugins/outputfilter.trimwhitespace.php34
-rw-r--r--library/Smarty/libs/plugins/shared.escape_special_chars.php26
-rw-r--r--library/Smarty/libs/plugins/shared.literal_compiler_param.php8
-rw-r--r--library/Smarty/libs/plugins/shared.make_timestamp.php15
-rw-r--r--library/Smarty/libs/plugins/shared.mb_str_replace.php20
-rw-r--r--library/Smarty/libs/plugins/shared.mb_unicode.php22
-rw-r--r--library/Smarty/libs/plugins/shared.mb_wordwrap.php60
-rw-r--r--library/Smarty/libs/plugins/variablefilter.htmlspecialchars.php10
-rw-r--r--library/Smarty/libs/sysplugins/smarty_cacheresource.php337
-rw-r--r--library/Smarty/libs/sysplugins/smarty_cacheresource_custom.php159
-rw-r--r--library/Smarty/libs/sysplugins/smarty_cacheresource_keyvaluestore.php228
-rw-r--r--library/Smarty/libs/sysplugins/smarty_config_source.php37
-rw-r--r--library/Smarty/libs/sysplugins/smarty_internal_cacheresource_file.php91
-rw-r--r--library/Smarty/libs/sysplugins/smarty_internal_compile_append.php21
-rw-r--r--library/Smarty/libs/sysplugins/smarty_internal_compile_assign.php30
-rw-r--r--library/Smarty/libs/sysplugins/smarty_internal_compile_block.php433
-rw-r--r--library/Smarty/libs/sysplugins/smarty_internal_compile_break.php152
-rw-r--r--library/Smarty/libs/sysplugins/smarty_internal_compile_call.php25
-rw-r--r--library/Smarty/libs/sysplugins/smarty_internal_compile_capture.php32
-rw-r--r--library/Smarty/libs/sysplugins/smarty_internal_compile_config_load.php31
-rw-r--r--library/Smarty/libs/sysplugins/smarty_internal_compile_continue.php153
-rw-r--r--library/Smarty/libs/sysplugins/smarty_internal_compile_debug.php20
-rw-r--r--library/Smarty/libs/sysplugins/smarty_internal_compile_eval.php26
-rw-r--r--library/Smarty/libs/sysplugins/smarty_internal_compile_extends.php155
-rw-r--r--library/Smarty/libs/sysplugins/smarty_internal_compile_for.php70
-rw-r--r--library/Smarty/libs/sysplugins/smarty_internal_compile_foreach.php76
-rw-r--r--library/Smarty/libs/sysplugins/smarty_internal_compile_function.php65
-rw-r--r--library/Smarty/libs/sysplugins/smarty_internal_compile_if.php185
-rw-r--r--library/Smarty/libs/sysplugins/smarty_internal_compile_include.php246
-rw-r--r--library/Smarty/libs/sysplugins/smarty_internal_compile_include_php.php29
-rw-r--r--library/Smarty/libs/sysplugins/smarty_internal_compile_insert.php26
-rw-r--r--library/Smarty/libs/sysplugins/smarty_internal_compile_ldelim.php22
-rw-r--r--library/Smarty/libs/sysplugins/smarty_internal_compile_nocache.php37
-rw-r--r--library/Smarty/libs/sysplugins/smarty_internal_compile_private_block_plugin.php38
-rw-r--r--library/Smarty/libs/sysplugins/smarty_internal_compile_private_function_plugin.php26
-rw-r--r--library/Smarty/libs/sysplugins/smarty_internal_compile_private_modifier.php279
-rw-r--r--library/Smarty/libs/sysplugins/smarty_internal_compile_private_object_block_function.php30
-rw-r--r--library/Smarty/libs/sysplugins/smarty_internal_compile_private_object_function.php59
-rw-r--r--library/Smarty/libs/sysplugins/smarty_internal_compile_private_print_expression.php99
-rw-r--r--library/Smarty/libs/sysplugins/smarty_internal_compile_private_registered_block.php224
-rw-r--r--library/Smarty/libs/sysplugins/smarty_internal_compile_private_registered_function.php160
-rw-r--r--library/Smarty/libs/sysplugins/smarty_internal_compile_private_special_variable.php39
-rw-r--r--library/Smarty/libs/sysplugins/smarty_internal_compile_rdelim.php22
-rw-r--r--library/Smarty/libs/sysplugins/smarty_internal_compile_section.php81
-rw-r--r--library/Smarty/libs/sysplugins/smarty_internal_compile_setfilter.php142
-rw-r--r--library/Smarty/libs/sysplugins/smarty_internal_compile_while.php43
-rw-r--r--library/Smarty/libs/sysplugins/smarty_internal_compilebase.php48
-rw-r--r--library/Smarty/libs/sysplugins/smarty_internal_config.php75
-rw-r--r--library/Smarty/libs/sysplugins/smarty_internal_config_file_compiler.php51
-rw-r--r--library/Smarty/libs/sysplugins/smarty_internal_configfilelexer.php454
-rw-r--r--library/Smarty/libs/sysplugins/smarty_internal_configfileparser.php875
-rw-r--r--library/Smarty/libs/sysplugins/smarty_internal_data.php173
-rw-r--r--library/Smarty/libs/sysplugins/smarty_internal_debug.php78
-rw-r--r--library/Smarty/libs/sysplugins/smarty_internal_filter_handler.php27
-rw-r--r--library/Smarty/libs/sysplugins/smarty_internal_function_call_handler.php107
-rw-r--r--library/Smarty/libs/sysplugins/smarty_internal_get_include_path.php94
-rw-r--r--library/Smarty/libs/sysplugins/smarty_internal_nocache_insert.php104
-rw-r--r--library/Smarty/libs/sysplugins/smarty_internal_parsetree.php756
-rw-r--r--library/Smarty/libs/sysplugins/smarty_internal_resource_eval.php190
-rw-r--r--library/Smarty/libs/sysplugins/smarty_internal_resource_extends.php141
-rw-r--r--library/Smarty/libs/sysplugins/smarty_internal_resource_file.php33
-rw-r--r--library/Smarty/libs/sysplugins/smarty_internal_resource_php.php51
-rw-r--r--library/Smarty/libs/sysplugins/smarty_internal_resource_registered.php45
-rw-r--r--library/Smarty/libs/sysplugins/smarty_internal_resource_stream.php39
-rw-r--r--library/Smarty/libs/sysplugins/smarty_internal_resource_string.php55
-rw-r--r--library/Smarty/libs/sysplugins/smarty_internal_smartytemplatecompiler.php43
-rw-r--r--library/Smarty/libs/sysplugins/smarty_internal_template.php200
-rw-r--r--library/Smarty/libs/sysplugins/smarty_internal_templatebase.php297
-rw-r--r--library/Smarty/libs/sysplugins/smarty_internal_templatecompilerbase.php1484
-rw-r--r--library/Smarty/libs/sysplugins/smarty_internal_templatelexer.php1572
-rw-r--r--library/Smarty/libs/sysplugins/smarty_internal_templateparser.php6678
-rw-r--r--library/Smarty/libs/sysplugins/smarty_internal_utility.php407
-rw-r--r--library/Smarty/libs/sysplugins/smarty_internal_write_file.php32
-rw-r--r--library/Smarty/libs/sysplugins/smarty_resource.php304
-rw-r--r--library/Smarty/libs/sysplugins/smarty_resource_custom.php39
-rw-r--r--library/Smarty/libs/sysplugins/smarty_resource_recompiled.php19
-rw-r--r--library/Smarty/libs/sysplugins/smarty_resource_uncompiled.php23
-rw-r--r--library/Smarty/libs/sysplugins/smarty_security.php147
-rw-r--r--library/blueimp_upload/.gitignore3
-rw-r--r--library/blueimp_upload/.jshintrc81
-rw-r--r--library/blueimp_upload/CONTRIBUTING.md42
-rw-r--r--library/blueimp_upload/Gruntfile.js37
-rw-r--r--library/blueimp_upload/README.md123
-rw-r--r--library/blueimp_upload/angularjs.html211
-rw-r--r--library/blueimp_upload/basic-plus.html226
-rw-r--r--library/blueimp_upload/basic.html136
-rw-r--r--library/blueimp_upload/blueimp-file-upload.jquery.json50
-rw-r--r--library/blueimp_upload/bower.json85
-rw-r--r--library/blueimp_upload/cors/postmessage.html75
-rw-r--r--library/blueimp_upload/cors/result.html24
-rw-r--r--library/blueimp_upload/css/demo-ie8.css21
-rw-r--r--library/blueimp_upload/css/demo.css67
-rw-r--r--library/blueimp_upload/css/jquery.fileupload-noscript.css22
-rw-r--r--library/blueimp_upload/css/jquery.fileupload-ui-noscript.css17
-rw-r--r--library/blueimp_upload/css/jquery.fileupload-ui.css57
-rw-r--r--library/blueimp_upload/css/jquery.fileupload.css36
-rw-r--r--library/blueimp_upload/css/style.css15
-rw-r--r--library/blueimp_upload/img/loading.gifbin0 -> 3897 bytes
-rw-r--r--library/blueimp_upload/img/progressbar.gifbin0 -> 3323 bytes
-rw-r--r--library/blueimp_upload/index.html255
-rw-r--r--library/blueimp_upload/jquery-ui.html250
-rw-r--r--library/blueimp_upload/js/app.js101
-rw-r--r--library/blueimp_upload/js/cors/jquery.postmessage-transport.js117
-rw-r--r--library/blueimp_upload/js/cors/jquery.xdr-transport.js86
-rw-r--r--library/blueimp_upload/js/jquery.fileupload-angular.js429
-rw-r--r--library/blueimp_upload/js/jquery.fileupload-audio.js106
-rw-r--r--library/blueimp_upload/js/jquery.fileupload-image.js315
-rwxr-xr-xlibrary/blueimp_upload/js/jquery.fileupload-jquery-ui.js152
-rw-r--r--library/blueimp_upload/js/jquery.fileupload-process.js172
-rw-r--r--library/blueimp_upload/js/jquery.fileupload-ui.js704
-rw-r--r--library/blueimp_upload/js/jquery.fileupload-validate.js119
-rw-r--r--library/blueimp_upload/js/jquery.fileupload-video.js106
-rw-r--r--library/blueimp_upload/js/jquery.fileupload.js1457
-rw-r--r--library/blueimp_upload/js/jquery.iframe-transport.js214
-rw-r--r--library/blueimp_upload/js/main.js75
-rw-r--r--library/blueimp_upload/js/vendor/jquery.ui.widget.js558
-rw-r--r--library/blueimp_upload/package.json54
-rw-r--r--library/blueimp_upload/server/gae-go/app.yaml12
-rw-r--r--library/blueimp_upload/server/gae-go/app/main.go296
-rw-r--r--library/blueimp_upload/server/gae-go/static/robots.txt2
-rw-r--r--library/blueimp_upload/server/gae-python/app.yaml16
-rw-r--r--library/blueimp_upload/server/gae-python/main.py170
-rw-r--r--library/blueimp_upload/server/gae-python/static/robots.txt2
-rw-r--r--library/blueimp_upload/server/node/.gitignore2
-rw-r--r--library/blueimp_upload/server/node/package.json41
-rw-r--r--library/blueimp_upload/server/node/public/files/.gitignore2
-rwxr-xr-xlibrary/blueimp_upload/server/node/server.js292
-rw-r--r--library/blueimp_upload/server/node/tmp/.gitignore (renamed from .gitmodules)0
-rwxr-xr-xlibrary/blueimp_upload/server/php/UploadHandler.php1343
-rw-r--r--library/blueimp_upload/server/php/files/.gitignore3
-rw-r--r--library/blueimp_upload/server/php/files/.htaccess18
-rw-r--r--library/blueimp_upload/server/php/index.php15
-rw-r--r--library/blueimp_upload/test/index.html172
-rw-r--r--library/blueimp_upload/test/test.js1288
-rwxr-xr-xlibrary/bootstrap-datetimepicker/css/bootstrap-datetimepicker.css174
-rwxr-xr-xlibrary/bootstrap-datetimepicker/css/bootstrap-datetimepicker.min.css8
-rwxr-xr-xlibrary/bootstrap-datetimepicker/js/bootstrap-datetimepicker.min.js28
-rw-r--r--library/bootstrap-datetimepicker/js/moment.js7063
-rw-r--r--library/bootstrap-tagsinput/LICENSE20
-rw-r--r--library/bootstrap-tagsinput/README1
-rw-r--r--library/bootstrap-tagsinput/README.md879
-rw-r--r--library/bootstrap-tagsinput/bootstrap-tagsinput.css46
-rw-r--r--library/bootstrap-tagsinput/bootstrap-tagsinput.js643
-rw-r--r--library/bootstrap/css/bootstrap-theme.css181
-rw-r--r--library/bootstrap/css/bootstrap-theme.min.css6
-rw-r--r--library/bootstrap/css/bootstrap.css2335
-rw-r--r--library/bootstrap/css/bootstrap.min.css6
-rw-r--r--library/bootstrap/fonts/glyphicons-halflings-regular.svg2
-rw-r--r--library/bootstrap/js/bootbox.js894
-rw-r--r--library/bootstrap/js/bootbox.min.js4
-rw-r--r--library/bootstrap/js/bootstrap.js1049
-rw-r--r--library/bootstrap/js/bootstrap.min.js5
-rw-r--r--library/cacert.pem721
-rw-r--r--library/certs/README.md1
-rw-r--r--library/certs/cacert.pem3894
-rw-r--r--library/certs/comodo.pem92
-rw-r--r--library/colorbox/README.md330
-rw-r--r--library/colorbox/bower.json42
-rw-r--r--library/colorbox/colorbox.css52
-rw-r--r--library/colorbox/colorbox.jquery.json30
-rw-r--r--library/colorbox/component.json8
-rw-r--r--library/colorbox/content/daisy.jpgbin0 -> 101126 bytes
-rw-r--r--library/colorbox/content/daisy@2x.jpgbin0 -> 335898 bytes
-rw-r--r--library/colorbox/content/homer.jpgbin8917 -> 8584 bytes
-rw-r--r--library/colorbox/content/marylou.jpgbin55125 -> 52286 bytes
-rw-r--r--library/colorbox/content/ohoopee1.jpgbin74827 -> 71685 bytes
-rw-r--r--library/colorbox/content/ohoopee2.jpgbin117411 -> 111141 bytes
-rw-r--r--library/colorbox/content/ohoopee3.jpgbin71514 -> 69240 bytes
-rw-r--r--library/colorbox/example1/colorbox.css52
-rw-r--r--library/colorbox/example1/images/border.pngbin112 -> 76 bytes
-rw-r--r--library/colorbox/example1/images/controls.pngbin2893 -> 1261 bytes
-rw-r--r--library/colorbox/example1/images/ie6/borderBottomCenter.pngbin111 -> 0 bytes
-rw-r--r--library/colorbox/example1/images/ie6/borderBottomLeft.pngbin215 -> 0 bytes
-rw-r--r--library/colorbox/example1/images/ie6/borderBottomRight.pngbin217 -> 0 bytes
-rw-r--r--library/colorbox/example1/images/ie6/borderMiddleLeft.pngbin108 -> 0 bytes
-rw-r--r--library/colorbox/example1/images/ie6/borderMiddleRight.pngbin108 -> 0 bytes
-rw-r--r--library/colorbox/example1/images/ie6/borderTopCenter.pngbin111 -> 0 bytes
-rw-r--r--library/colorbox/example1/images/ie6/borderTopLeft.pngbin216 -> 0 bytes
-rw-r--r--library/colorbox/example1/images/ie6/borderTopRight.pngbin214 -> 0 bytes
-rw-r--r--library/colorbox/example1/images/loading.gifbin9427 -> 8685 bytes
-rw-r--r--library/colorbox/example1/images/loading_background.pngbin157 -> 131 bytes
-rw-r--r--library/colorbox/example1/images/overlay.pngbin182 -> 115 bytes
-rw-r--r--library/colorbox/example1/index.html22
-rw-r--r--library/colorbox/example2/colorbox.css25
-rw-r--r--library/colorbox/example2/images/controls.pngbin570 -> 503 bytes
-rw-r--r--library/colorbox/example2/images/loading.gifbin9427 -> 6244 bytes
-rw-r--r--library/colorbox/example2/index.html22
-rw-r--r--library/colorbox/example3/colorbox.css29
-rw-r--r--library/colorbox/example3/images/loading.gifbin9427 -> 6244 bytes
-rw-r--r--library/colorbox/example3/index.html22
-rw-r--r--library/colorbox/example4/colorbox.css50
-rw-r--r--library/colorbox/example4/images/border1.pngbin1057 -> 629 bytes
-rw-r--r--library/colorbox/example4/images/border2.pngbin170 -> 112 bytes
-rw-r--r--library/colorbox/example4/images/ie6/borderBottomCenter.pngbin153 -> 0 bytes
-rw-r--r--library/colorbox/example4/images/ie6/borderBottomLeft.pngbin473 -> 0 bytes
-rw-r--r--library/colorbox/example4/images/ie6/borderBottomRight.pngbin470 -> 0 bytes
-rw-r--r--library/colorbox/example4/images/ie6/borderMiddleLeft.pngbin148 -> 0 bytes
-rw-r--r--library/colorbox/example4/images/ie6/borderMiddleRight.pngbin139 -> 0 bytes
-rw-r--r--library/colorbox/example4/images/ie6/borderTopCenter.pngbin153 -> 0 bytes
-rw-r--r--library/colorbox/example4/images/ie6/borderTopLeft.pngbin359 -> 0 bytes
-rw-r--r--library/colorbox/example4/images/ie6/borderTopRight.pngbin465 -> 0 bytes
-rw-r--r--library/colorbox/example4/images/loading.gifbin9427 -> 6244 bytes
-rw-r--r--library/colorbox/example4/index.html22
-rw-r--r--library/colorbox/example5/colorbox.css22
-rw-r--r--library/colorbox/example5/images/border.pngbin163 -> 139 bytes
-rw-r--r--library/colorbox/example5/images/controls.pngbin2033 -> 2027 bytes
-rw-r--r--library/colorbox/example5/images/loading.gifbin9427 -> 8685 bytes
-rw-r--r--library/colorbox/example5/images/loading_background.pngbin166 -> 131 bytes
-rw-r--r--library/colorbox/example5/index.html22
-rw-r--r--library/colorbox/i18n/jquery.colorbox-ar.js15
-rw-r--r--library/colorbox/i18n/jquery.colorbox-bg.js16
-rw-r--r--library/colorbox/i18n/jquery.colorbox-bn.js16
-rw-r--r--library/colorbox/i18n/jquery.colorbox-ca.js13
-rw-r--r--library/colorbox/i18n/jquery.colorbox-cs.js6
-rw-r--r--library/colorbox/i18n/jquery.colorbox-da.js6
-rw-r--r--library/colorbox/i18n/jquery.colorbox-de.js6
-rw-r--r--library/colorbox/i18n/jquery.colorbox-es.js2
-rw-r--r--library/colorbox/i18n/jquery.colorbox-et.js15
-rw-r--r--library/colorbox/i18n/jquery.colorbox-fa.js18
-rw-r--r--library/colorbox/i18n/jquery.colorbox-fi.js15
-rw-r--r--library/colorbox/i18n/jquery.colorbox-fr.js17
-rw-r--r--library/colorbox/i18n/jquery.colorbox-gl.js13
-rw-r--r--library/colorbox/i18n/jquery.colorbox-gr.js16
-rw-r--r--library/colorbox/i18n/jquery.colorbox-he.js16
-rw-r--r--library/colorbox/i18n/jquery.colorbox-hr.js15
-rw-r--r--library/colorbox/i18n/jquery.colorbox-hu.js15
-rw-r--r--library/colorbox/i18n/jquery.colorbox-id.js15
-rw-r--r--library/colorbox/i18n/jquery.colorbox-it.js6
-rw-r--r--library/colorbox/i18n/jquery.colorbox-ja.js15
-rw-r--r--library/colorbox/i18n/jquery.colorbox-kr.js15
-rw-r--r--library/colorbox/i18n/jquery.colorbox-lt.js15
-rw-r--r--library/colorbox/i18n/jquery.colorbox-lv.js16
-rw-r--r--library/colorbox/i18n/jquery.colorbox-my.js15
-rw-r--r--library/colorbox/i18n/jquery.colorbox-nl.js15
-rw-r--r--library/colorbox/i18n/jquery.colorbox-no.js16
-rw-r--r--library/colorbox/i18n/jquery.colorbox-pl.js16
-rw-r--r--library/colorbox/i18n/jquery.colorbox-pt-BR.js15
-rw-r--r--library/colorbox/i18n/jquery.colorbox-ro.js15
-rw-r--r--library/colorbox/i18n/jquery.colorbox-ru.js12
-rw-r--r--library/colorbox/i18n/jquery.colorbox-si.js15
-rw-r--r--library/colorbox/i18n/jquery.colorbox-sk.js15
-rw-r--r--library/colorbox/i18n/jquery.colorbox-sr.js15
-rw-r--r--library/colorbox/i18n/jquery.colorbox-sv.js15
-rw-r--r--library/colorbox/i18n/jquery.colorbox-tr.js19
-rw-r--r--library/colorbox/i18n/jquery.colorbox-uk.js16
-rw-r--r--library/colorbox/i18n/jquery.colorbox-zh-CN.js15
-rw-r--r--library/colorbox/i18n/jquery.colorbox-zh-TW.js15
-rw-r--r--library/colorbox/images/border.pngbin163 -> 0 bytes
-rw-r--r--library/colorbox/images/controls.pngbin2033 -> 0 bytes
-rw-r--r--library/colorbox/images/loading.gifbin9427 -> 0 bytes
-rw-r--r--library/colorbox/images/loading_background.pngbin166 -> 0 bytes
-rw-r--r--library/colorbox/jquery.colorbox-min.js7
-rw-r--r--library/colorbox/jquery.colorbox.js931
-rw-r--r--library/colorpicker/css/colorpicker.css161
-rw-r--r--library/colorpicker/css/layout.css218
-rw-r--r--library/colorpicker/images/blank.gifbin49 -> 0 bytes
-rw-r--r--library/colorpicker/images/colorpicker_background.pngbin1897 -> 0 bytes
-rw-r--r--library/colorpicker/images/colorpicker_hex.pngbin532 -> 0 bytes
-rw-r--r--library/colorpicker/images/colorpicker_hsb_b.pngbin970 -> 0 bytes
-rw-r--r--library/colorpicker/images/colorpicker_hsb_h.pngbin1012 -> 0 bytes
-rw-r--r--library/colorpicker/images/colorpicker_hsb_s.pngbin1171 -> 0 bytes
-rw-r--r--library/colorpicker/images/colorpicker_indic.gifbin86 -> 0 bytes
-rw-r--r--library/colorpicker/images/colorpicker_overlay.pngbin10355 -> 0 bytes
-rw-r--r--library/colorpicker/images/colorpicker_rgb_b.pngbin970 -> 0 bytes
-rw-r--r--library/colorpicker/images/colorpicker_rgb_g.pngbin1069 -> 0 bytes
-rw-r--r--library/colorpicker/images/colorpicker_rgb_r.pngbin1066 -> 0 bytes
-rw-r--r--library/colorpicker/images/colorpicker_select.gifbin78 -> 0 bytes
-rw-r--r--library/colorpicker/images/colorpicker_submit.pngbin984 -> 0 bytes
-rw-r--r--library/colorpicker/images/custom_background.pngbin1916 -> 0 bytes
-rw-r--r--library/colorpicker/images/custom_hex.pngbin562 -> 0 bytes
-rw-r--r--library/colorpicker/images/custom_hsb_b.pngbin1097 -> 0 bytes
-rw-r--r--library/colorpicker/images/custom_hsb_h.pngbin970 -> 0 bytes
-rw-r--r--library/colorpicker/images/custom_hsb_s.pngbin1168 -> 0 bytes
-rw-r--r--library/colorpicker/images/custom_indic.gifbin86 -> 0 bytes
-rw-r--r--library/colorpicker/images/custom_rgb_b.pngbin1008 -> 0 bytes
-rw-r--r--library/colorpicker/images/custom_rgb_g.pngbin1069 -> 0 bytes
-rw-r--r--library/colorpicker/images/custom_rgb_r.pngbin1018 -> 0 bytes
-rw-r--r--library/colorpicker/images/custom_submit.pngbin997 -> 0 bytes
-rw-r--r--library/colorpicker/images/select.pngbin506 -> 0 bytes
-rw-r--r--library/colorpicker/images/select2.pngbin518 -> 0 bytes
-rw-r--r--library/colorpicker/images/slider.pngbin315 -> 0 bytes
-rw-r--r--library/colorpicker/index.html184
-rw-r--r--library/colorpicker/js/colorpicker.js484
-rw-r--r--library/colorpicker/js/eye.js34
-rw-r--r--library/colorpicker/js/layout.js67
-rw-r--r--library/colorpicker/js/utils.js252
-rw-r--r--library/datetimepicker/.gitignore1
-rw-r--r--library/datetimepicker/MIT-LICENSE.txt19
-rw-r--r--library/datetimepicker/README.md20
-rw-r--r--library/datetimepicker/jquery.datetimepicker.css418
-rw-r--r--library/datetimepicker/jquery.datetimepicker.js1661
-rw-r--r--library/fancybox/blank.gifbin43 -> 0 bytes
-rw-r--r--library/fancybox/fancy_close.pngbin1517 -> 0 bytes
-rw-r--r--library/fancybox/fancy_loading.pngbin10195 -> 0 bytes
-rw-r--r--library/fancybox/fancy_nav_left.pngbin1446 -> 0 bytes
-rw-r--r--library/fancybox/fancy_nav_right.pngbin1454 -> 0 bytes
-rw-r--r--library/fancybox/fancy_shadow_e.pngbin107 -> 0 bytes
-rw-r--r--library/fancybox/fancy_shadow_n.pngbin106 -> 0 bytes
-rw-r--r--library/fancybox/fancy_shadow_ne.pngbin347 -> 0 bytes
-rw-r--r--library/fancybox/fancy_shadow_nw.pngbin324 -> 0 bytes
-rw-r--r--library/fancybox/fancy_shadow_s.pngbin111 -> 0 bytes
-rw-r--r--library/fancybox/fancy_shadow_se.pngbin352 -> 0 bytes
-rw-r--r--library/fancybox/fancy_shadow_sw.pngbin340 -> 0 bytes
-rw-r--r--library/fancybox/fancy_shadow_w.pngbin103 -> 0 bytes
-rw-r--r--library/fancybox/fancy_title_left.pngbin503 -> 0 bytes
-rw-r--r--library/fancybox/fancy_title_main.pngbin96 -> 0 bytes
-rw-r--r--library/fancybox/fancy_title_over.pngbin70 -> 0 bytes
-rw-r--r--library/fancybox/fancy_title_right.pngbin506 -> 0 bytes
-rw-r--r--library/fancybox/fancybox-x.pngbin203 -> 0 bytes
-rw-r--r--library/fancybox/fancybox-y.pngbin176 -> 0 bytes
-rw-r--r--library/fancybox/fancybox.pngbin15287 -> 0 bytes
-rw-r--r--library/fancybox/jquery.easing-1.3.pack.js72
-rw-r--r--library/fancybox/jquery.fancybox-1.3.4.css359
-rw-r--r--library/fancybox/jquery.fancybox-1.3.4.js1157
-rw-r--r--library/fancybox/jquery.fancybox-1.3.4.pack.js46
-rw-r--r--library/fancybox/jquery.mousewheel-3.0.4.pack.js14
-rw-r--r--library/ical.php379
-rw-r--r--library/intl/.gitignore1
-rw-r--r--library/intl/.travis.yml14
-rw-r--r--library/intl/LICENSE21
-rw-r--r--library/intl/README.md163
-rw-r--r--library/intl/phpunit.xml23
-rw-r--r--library/intl/resources/country/af.json761
-rw-r--r--library/intl/resources/country/agq.json761
-rw-r--r--library/intl/resources/country/ak.json761
-rw-r--r--library/intl/resources/country/am.json761
-rw-r--r--library/intl/resources/country/ar.json761
-rw-r--r--library/intl/resources/country/asa.json761
-rw-r--r--library/intl/resources/country/ast.json761
-rw-r--r--library/intl/resources/country/az.json761
-rw-r--r--library/intl/resources/country/bas.json761
-rw-r--r--library/intl/resources/country/base.json1511
-rw-r--r--library/intl/resources/country/be.json761
-rw-r--r--library/intl/resources/country/bez.json761
-rw-r--r--library/intl/resources/country/bg.json761
-rw-r--r--library/intl/resources/country/bm.json761
-rw-r--r--library/intl/resources/country/bn-IN.json761
-rw-r--r--library/intl/resources/country/bn.json761
-rw-r--r--library/intl/resources/country/bo.json761
-rw-r--r--library/intl/resources/country/br.json761
-rw-r--r--library/intl/resources/country/brx.json761
-rw-r--r--library/intl/resources/country/bs-Cyrl.json761
-rw-r--r--library/intl/resources/country/bs.json761
-rw-r--r--library/intl/resources/country/ca.json761
-rw-r--r--library/intl/resources/country/cgg.json761
-rw-r--r--library/intl/resources/country/chr.json761
-rw-r--r--library/intl/resources/country/cs.json761
-rw-r--r--library/intl/resources/country/cy.json761
-rw-r--r--library/intl/resources/country/da.json761
-rw-r--r--library/intl/resources/country/dav.json761
-rw-r--r--library/intl/resources/country/de-CH.json761
-rw-r--r--library/intl/resources/country/de.json761
-rw-r--r--library/intl/resources/country/dje.json761
-rw-r--r--library/intl/resources/country/dsb.json761
-rw-r--r--library/intl/resources/country/dyo.json761
-rw-r--r--library/intl/resources/country/dz.json761
-rw-r--r--library/intl/resources/country/ebu.json761
-rw-r--r--library/intl/resources/country/ee.json761
-rw-r--r--library/intl/resources/country/el.json761
-rw-r--r--library/intl/resources/country/en-AU.json761
-rw-r--r--library/intl/resources/country/en-BE.json761
-rw-r--r--library/intl/resources/country/en-DG.json761
-rw-r--r--library/intl/resources/country/en-FK.json761
-rw-r--r--library/intl/resources/country/en-GB.json761
-rw-r--r--library/intl/resources/country/en-GG.json761
-rw-r--r--library/intl/resources/country/en-GI.json761
-rw-r--r--library/intl/resources/country/en-HK.json761
-rw-r--r--library/intl/resources/country/en-IE.json761
-rw-r--r--library/intl/resources/country/en-IM.json761
-rw-r--r--library/intl/resources/country/en-IN.json761
-rw-r--r--library/intl/resources/country/en-IO.json761
-rw-r--r--library/intl/resources/country/en-JE.json761
-rw-r--r--library/intl/resources/country/en-MO.json761
-rw-r--r--library/intl/resources/country/en-MT.json761
-rw-r--r--library/intl/resources/country/en-NZ.json761
-rw-r--r--library/intl/resources/country/en-PK.json761
-rw-r--r--library/intl/resources/country/en-SG.json761
-rw-r--r--library/intl/resources/country/en-SH.json761
-rw-r--r--library/intl/resources/country/en-VG.json761
-rw-r--r--library/intl/resources/country/en.json761
-rw-r--r--library/intl/resources/country/eo.json761
-rw-r--r--library/intl/resources/country/es-AR.json761
-rw-r--r--library/intl/resources/country/es-BO.json761
-rw-r--r--library/intl/resources/country/es-CL.json761
-rw-r--r--library/intl/resources/country/es-CO.json761
-rw-r--r--library/intl/resources/country/es-CR.json761
-rw-r--r--library/intl/resources/country/es-CU.json761
-rw-r--r--library/intl/resources/country/es-DO.json761
-rw-r--r--library/intl/resources/country/es-EC.json761
-rw-r--r--library/intl/resources/country/es-GT.json761
-rw-r--r--library/intl/resources/country/es-HN.json761
-rw-r--r--library/intl/resources/country/es-MX.json761
-rw-r--r--library/intl/resources/country/es-NI.json761
-rw-r--r--library/intl/resources/country/es-PA.json761
-rw-r--r--library/intl/resources/country/es-PE.json761
-rw-r--r--library/intl/resources/country/es-PR.json761
-rw-r--r--library/intl/resources/country/es-PY.json761
-rw-r--r--library/intl/resources/country/es-SV.json761
-rw-r--r--library/intl/resources/country/es-US.json761
-rw-r--r--library/intl/resources/country/es-UY.json761
-rw-r--r--library/intl/resources/country/es-VE.json761
-rw-r--r--library/intl/resources/country/es.json761
-rw-r--r--library/intl/resources/country/et.json761
-rw-r--r--library/intl/resources/country/eu.json761
-rw-r--r--library/intl/resources/country/ewo.json761
-rw-r--r--library/intl/resources/country/fa-AF.json761
-rw-r--r--library/intl/resources/country/fa.json761
-rw-r--r--library/intl/resources/country/ff.json761
-rw-r--r--library/intl/resources/country/fi.json761
-rw-r--r--library/intl/resources/country/fil.json761
-rw-r--r--library/intl/resources/country/fo.json761
-rw-r--r--library/intl/resources/country/fr-CA.json761
-rw-r--r--library/intl/resources/country/fr-CH.json761
-rw-r--r--library/intl/resources/country/fr.json761
-rw-r--r--library/intl/resources/country/fur.json761
-rw-r--r--library/intl/resources/country/fy.json761
-rw-r--r--library/intl/resources/country/ga.json761
-rw-r--r--library/intl/resources/country/gd.json761
-rw-r--r--library/intl/resources/country/gl.json761
-rw-r--r--library/intl/resources/country/gsw.json761
-rw-r--r--library/intl/resources/country/gu.json761
-rw-r--r--library/intl/resources/country/guz.json761
-rw-r--r--library/intl/resources/country/ha.json761
-rw-r--r--library/intl/resources/country/he.json761
-rw-r--r--library/intl/resources/country/hi.json761
-rw-r--r--library/intl/resources/country/hr.json761
-rw-r--r--library/intl/resources/country/hsb.json761
-rw-r--r--library/intl/resources/country/hu.json761
-rw-r--r--library/intl/resources/country/hy.json761
-rw-r--r--library/intl/resources/country/id.json761
-rw-r--r--library/intl/resources/country/is.json761
-rw-r--r--library/intl/resources/country/it.json761
-rw-r--r--library/intl/resources/country/ja.json761
-rw-r--r--library/intl/resources/country/jgo.json761
-rw-r--r--library/intl/resources/country/jmc.json761
-rw-r--r--library/intl/resources/country/ka.json761
-rw-r--r--library/intl/resources/country/kab.json761
-rw-r--r--library/intl/resources/country/kam.json761
-rw-r--r--library/intl/resources/country/kde.json761
-rw-r--r--library/intl/resources/country/kea.json761
-rw-r--r--library/intl/resources/country/khq.json761
-rw-r--r--library/intl/resources/country/ki.json761
-rw-r--r--library/intl/resources/country/kk.json761
-rw-r--r--library/intl/resources/country/kl.json761
-rw-r--r--library/intl/resources/country/kln.json761
-rw-r--r--library/intl/resources/country/km.json761
-rw-r--r--library/intl/resources/country/kn.json761
-rw-r--r--library/intl/resources/country/ko.json761
-rw-r--r--library/intl/resources/country/ks.json761
-rw-r--r--library/intl/resources/country/ksb.json761
-rw-r--r--library/intl/resources/country/ksf.json761
-rw-r--r--library/intl/resources/country/ksh.json761
-rw-r--r--library/intl/resources/country/ky.json761
-rw-r--r--library/intl/resources/country/lag.json761
-rw-r--r--library/intl/resources/country/lb.json761
-rw-r--r--library/intl/resources/country/lg.json761
-rw-r--r--library/intl/resources/country/ln.json761
-rw-r--r--library/intl/resources/country/lo.json761
-rw-r--r--library/intl/resources/country/lt.json761
-rw-r--r--library/intl/resources/country/lu.json761
-rw-r--r--library/intl/resources/country/luo.json761
-rw-r--r--library/intl/resources/country/luy.json761
-rw-r--r--library/intl/resources/country/lv.json761
-rw-r--r--library/intl/resources/country/mas.json761
-rw-r--r--library/intl/resources/country/mer.json761
-rw-r--r--library/intl/resources/country/mfe.json761
-rw-r--r--library/intl/resources/country/mg.json761
-rw-r--r--library/intl/resources/country/mgh.json761
-rw-r--r--library/intl/resources/country/mk.json761
-rw-r--r--library/intl/resources/country/ml.json761
-rw-r--r--library/intl/resources/country/mn.json761
-rw-r--r--library/intl/resources/country/mr.json761
-rw-r--r--library/intl/resources/country/ms.json761
-rw-r--r--library/intl/resources/country/mt.json761
-rw-r--r--library/intl/resources/country/mua.json761
-rw-r--r--library/intl/resources/country/my.json761
-rw-r--r--library/intl/resources/country/naq.json761
-rw-r--r--library/intl/resources/country/nb.json761
-rw-r--r--library/intl/resources/country/nd.json761
-rw-r--r--library/intl/resources/country/ne.json761
-rw-r--r--library/intl/resources/country/nl-BE.json761
-rw-r--r--library/intl/resources/country/nl.json761
-rw-r--r--library/intl/resources/country/nmg.json761
-rw-r--r--library/intl/resources/country/nn.json761
-rw-r--r--library/intl/resources/country/nus.json761
-rw-r--r--library/intl/resources/country/nyn.json761
-rw-r--r--library/intl/resources/country/or.json761
-rw-r--r--library/intl/resources/country/pa.json761
-rw-r--r--library/intl/resources/country/pl.json761
-rw-r--r--library/intl/resources/country/ps.json761
-rw-r--r--library/intl/resources/country/pt-AO.json761
-rw-r--r--library/intl/resources/country/pt-CV.json761
-rw-r--r--library/intl/resources/country/pt-GW.json761
-rw-r--r--library/intl/resources/country/pt-MO.json761
-rw-r--r--library/intl/resources/country/pt-MZ.json761
-rw-r--r--library/intl/resources/country/pt-PT.json761
-rw-r--r--library/intl/resources/country/pt-ST.json761
-rw-r--r--library/intl/resources/country/pt-TL.json761
-rw-r--r--library/intl/resources/country/pt.json761
-rw-r--r--library/intl/resources/country/rm.json761
-rw-r--r--library/intl/resources/country/rn.json761
-rw-r--r--library/intl/resources/country/ro.json761
-rw-r--r--library/intl/resources/country/rof.json761
-rw-r--r--library/intl/resources/country/ru.json761
-rw-r--r--library/intl/resources/country/rwk.json761
-rw-r--r--library/intl/resources/country/saq.json761
-rw-r--r--library/intl/resources/country/sbp.json761
-rw-r--r--library/intl/resources/country/se-FI.json761
-rw-r--r--library/intl/resources/country/se.json761
-rw-r--r--library/intl/resources/country/seh.json761
-rw-r--r--library/intl/resources/country/ses.json761
-rw-r--r--library/intl/resources/country/sg.json761
-rw-r--r--library/intl/resources/country/shi-Latn.json761
-rw-r--r--library/intl/resources/country/shi.json761
-rw-r--r--library/intl/resources/country/si.json761
-rw-r--r--library/intl/resources/country/sk.json761
-rw-r--r--library/intl/resources/country/sl.json761
-rw-r--r--library/intl/resources/country/sn.json761
-rw-r--r--library/intl/resources/country/so.json761
-rw-r--r--library/intl/resources/country/sq.json761
-rw-r--r--library/intl/resources/country/sr-Latn.json761
-rw-r--r--library/intl/resources/country/sr.json761
-rw-r--r--library/intl/resources/country/sv-FI.json761
-rw-r--r--library/intl/resources/country/sv.json761
-rw-r--r--library/intl/resources/country/sw.json761
-rw-r--r--library/intl/resources/country/swc.json761
-rw-r--r--library/intl/resources/country/ta.json761
-rw-r--r--library/intl/resources/country/te.json761
-rw-r--r--library/intl/resources/country/teo.json761
-rw-r--r--library/intl/resources/country/th.json761
-rw-r--r--library/intl/resources/country/ti.json761
-rw-r--r--library/intl/resources/country/to.json761
-rw-r--r--library/intl/resources/country/tr.json761
-rw-r--r--library/intl/resources/country/twq.json761
-rw-r--r--library/intl/resources/country/tzm.json761
-rw-r--r--library/intl/resources/country/ug.json761
-rw-r--r--library/intl/resources/country/uk.json761
-rw-r--r--library/intl/resources/country/ur-IN.json761
-rw-r--r--library/intl/resources/country/ur.json761
-rw-r--r--library/intl/resources/country/uz-Cyrl.json761
-rw-r--r--library/intl/resources/country/uz.json761
-rw-r--r--library/intl/resources/country/vai-Latn.json761
-rw-r--r--library/intl/resources/country/vai.json761
-rw-r--r--library/intl/resources/country/vi.json761
-rw-r--r--library/intl/resources/country/vun.json761
-rw-r--r--library/intl/resources/country/wae.json761
-rw-r--r--library/intl/resources/country/xog.json761
-rw-r--r--library/intl/resources/country/yav.json761
-rw-r--r--library/intl/resources/country/yo-BJ.json761
-rw-r--r--library/intl/resources/country/yo.json761
-rw-r--r--library/intl/resources/country/zgh.json761
-rw-r--r--library/intl/resources/country/zh-Hans-HK.json761
-rw-r--r--library/intl/resources/country/zh-Hans-MO.json761
-rw-r--r--library/intl/resources/country/zh-Hans-SG.json761
-rw-r--r--library/intl/resources/country/zh-Hant-HK.json761
-rw-r--r--library/intl/resources/country/zh-Hant-MO.json761
-rw-r--r--library/intl/resources/country/zh-Hant.json761
-rw-r--r--library/intl/resources/country/zh.json761
-rw-r--r--library/intl/resources/country/zu.json761
-rw-r--r--library/intl/resources/currency/af.json634
-rw-r--r--library/intl/resources/currency/agq.json634
-rw-r--r--library/intl/resources/currency/ak.json634
-rw-r--r--library/intl/resources/currency/am.json634
-rw-r--r--library/intl/resources/currency/ar.json634
-rw-r--r--library/intl/resources/currency/asa.json634
-rw-r--r--library/intl/resources/currency/ast.json634
-rw-r--r--library/intl/resources/currency/az.json634
-rw-r--r--library/intl/resources/currency/bas.json634
-rw-r--r--library/intl/resources/currency/base.json683
-rw-r--r--library/intl/resources/currency/be.json634
-rw-r--r--library/intl/resources/currency/bez.json634
-rw-r--r--library/intl/resources/currency/bg.json634
-rw-r--r--library/intl/resources/currency/bm.json634
-rw-r--r--library/intl/resources/currency/bn.json634
-rw-r--r--library/intl/resources/currency/bo.json634
-rw-r--r--library/intl/resources/currency/br.json634
-rw-r--r--library/intl/resources/currency/brx.json634
-rw-r--r--library/intl/resources/currency/bs-Cyrl.json634
-rw-r--r--library/intl/resources/currency/bs.json634
-rw-r--r--library/intl/resources/currency/ca.json634
-rw-r--r--library/intl/resources/currency/cgg.json634
-rw-r--r--library/intl/resources/currency/chr.json634
-rw-r--r--library/intl/resources/currency/cs.json634
-rw-r--r--library/intl/resources/currency/cy.json634
-rw-r--r--library/intl/resources/currency/da.json634
-rw-r--r--library/intl/resources/currency/dav.json634
-rw-r--r--library/intl/resources/currency/de-CH.json634
-rw-r--r--library/intl/resources/currency/de.json634
-rw-r--r--library/intl/resources/currency/dje.json634
-rw-r--r--library/intl/resources/currency/dsb.json634
-rw-r--r--library/intl/resources/currency/dyo.json634
-rw-r--r--library/intl/resources/currency/dz.json634
-rw-r--r--library/intl/resources/currency/ebu.json634
-rw-r--r--library/intl/resources/currency/ee.json634
-rw-r--r--library/intl/resources/currency/el.json634
-rw-r--r--library/intl/resources/currency/en-AU.json634
-rw-r--r--library/intl/resources/currency/en-BE.json634
-rw-r--r--library/intl/resources/currency/en-DG.json634
-rw-r--r--library/intl/resources/currency/en-FK.json634
-rw-r--r--library/intl/resources/currency/en-GB.json634
-rw-r--r--library/intl/resources/currency/en-GG.json634
-rw-r--r--library/intl/resources/currency/en-GI.json634
-rw-r--r--library/intl/resources/currency/en-HK.json634
-rw-r--r--library/intl/resources/currency/en-IE.json634
-rw-r--r--library/intl/resources/currency/en-IM.json634
-rw-r--r--library/intl/resources/currency/en-IN.json634
-rw-r--r--library/intl/resources/currency/en-IO.json634
-rw-r--r--library/intl/resources/currency/en-JE.json634
-rw-r--r--library/intl/resources/currency/en-MO.json634
-rw-r--r--library/intl/resources/currency/en-MT.json634
-rw-r--r--library/intl/resources/currency/en-NZ.json634
-rw-r--r--library/intl/resources/currency/en-PK.json634
-rw-r--r--library/intl/resources/currency/en-SG.json634
-rw-r--r--library/intl/resources/currency/en-SH.json634
-rw-r--r--library/intl/resources/currency/en-VG.json634
-rw-r--r--library/intl/resources/currency/en.json634
-rw-r--r--library/intl/resources/currency/eo.json634
-rw-r--r--library/intl/resources/currency/es-AR.json634
-rw-r--r--library/intl/resources/currency/es-BO.json634
-rw-r--r--library/intl/resources/currency/es-CL.json634
-rw-r--r--library/intl/resources/currency/es-CO.json634
-rw-r--r--library/intl/resources/currency/es-CR.json634
-rw-r--r--library/intl/resources/currency/es-CU.json634
-rw-r--r--library/intl/resources/currency/es-DO.json634
-rw-r--r--library/intl/resources/currency/es-EC.json634
-rw-r--r--library/intl/resources/currency/es-GT.json634
-rw-r--r--library/intl/resources/currency/es-HN.json634
-rw-r--r--library/intl/resources/currency/es-MX.json634
-rw-r--r--library/intl/resources/currency/es-NI.json634
-rw-r--r--library/intl/resources/currency/es-PA.json634
-rw-r--r--library/intl/resources/currency/es-PE.json634
-rw-r--r--library/intl/resources/currency/es-PR.json634
-rw-r--r--library/intl/resources/currency/es-PY.json634
-rw-r--r--library/intl/resources/currency/es-SV.json634
-rw-r--r--library/intl/resources/currency/es-US.json634
-rw-r--r--library/intl/resources/currency/es-UY.json634
-rw-r--r--library/intl/resources/currency/es-VE.json634
-rw-r--r--library/intl/resources/currency/es.json634
-rw-r--r--library/intl/resources/currency/et.json634
-rw-r--r--library/intl/resources/currency/eu.json634
-rw-r--r--library/intl/resources/currency/ewo.json634
-rw-r--r--library/intl/resources/currency/fa-AF.json634
-rw-r--r--library/intl/resources/currency/fa.json634
-rw-r--r--library/intl/resources/currency/ff.json634
-rw-r--r--library/intl/resources/currency/fi.json634
-rw-r--r--library/intl/resources/currency/fil.json634
-rw-r--r--library/intl/resources/currency/fo.json634
-rw-r--r--library/intl/resources/currency/fr-CA.json634
-rw-r--r--library/intl/resources/currency/fr.json634
-rw-r--r--library/intl/resources/currency/fur.json634
-rw-r--r--library/intl/resources/currency/fy.json634
-rw-r--r--library/intl/resources/currency/ga.json634
-rw-r--r--library/intl/resources/currency/gd.json634
-rw-r--r--library/intl/resources/currency/gl.json634
-rw-r--r--library/intl/resources/currency/gsw.json634
-rw-r--r--library/intl/resources/currency/gu.json634
-rw-r--r--library/intl/resources/currency/guz.json634
-rw-r--r--library/intl/resources/currency/ha.json634
-rw-r--r--library/intl/resources/currency/he.json634
-rw-r--r--library/intl/resources/currency/hi.json634
-rw-r--r--library/intl/resources/currency/hr.json634
-rw-r--r--library/intl/resources/currency/hsb.json634
-rw-r--r--library/intl/resources/currency/hu.json634
-rw-r--r--library/intl/resources/currency/hy.json634
-rw-r--r--library/intl/resources/currency/id.json634
-rw-r--r--library/intl/resources/currency/is.json634
-rw-r--r--library/intl/resources/currency/it.json634
-rw-r--r--library/intl/resources/currency/ja.json634
-rw-r--r--library/intl/resources/currency/jgo.json634
-rw-r--r--library/intl/resources/currency/jmc.json634
-rw-r--r--library/intl/resources/currency/ka.json634
-rw-r--r--library/intl/resources/currency/kab.json634
-rw-r--r--library/intl/resources/currency/kam.json634
-rw-r--r--library/intl/resources/currency/kde.json634
-rw-r--r--library/intl/resources/currency/kea.json634
-rw-r--r--library/intl/resources/currency/khq.json634
-rw-r--r--library/intl/resources/currency/ki.json634
-rw-r--r--library/intl/resources/currency/kk.json634
-rw-r--r--library/intl/resources/currency/kl.json634
-rw-r--r--library/intl/resources/currency/kln.json634
-rw-r--r--library/intl/resources/currency/km.json634
-rw-r--r--library/intl/resources/currency/kn.json634
-rw-r--r--library/intl/resources/currency/ko.json634
-rw-r--r--library/intl/resources/currency/ks.json634
-rw-r--r--library/intl/resources/currency/ksb.json634
-rw-r--r--library/intl/resources/currency/ksf.json634
-rw-r--r--library/intl/resources/currency/ksh.json634
-rw-r--r--library/intl/resources/currency/ky.json634
-rw-r--r--library/intl/resources/currency/lag.json634
-rw-r--r--library/intl/resources/currency/lb.json634
-rw-r--r--library/intl/resources/currency/lg.json634
-rw-r--r--library/intl/resources/currency/ln.json634
-rw-r--r--library/intl/resources/currency/lo.json634
-rw-r--r--library/intl/resources/currency/lt.json634
-rw-r--r--library/intl/resources/currency/lu.json634
-rw-r--r--library/intl/resources/currency/luo.json634
-rw-r--r--library/intl/resources/currency/luy.json634
-rw-r--r--library/intl/resources/currency/lv.json634
-rw-r--r--library/intl/resources/currency/mas.json634
-rw-r--r--library/intl/resources/currency/mer.json634
-rw-r--r--library/intl/resources/currency/mfe.json634
-rw-r--r--library/intl/resources/currency/mg.json634
-rw-r--r--library/intl/resources/currency/mgh.json634
-rw-r--r--library/intl/resources/currency/mk.json634
-rw-r--r--library/intl/resources/currency/ml.json634
-rw-r--r--library/intl/resources/currency/mn.json634
-rw-r--r--library/intl/resources/currency/mr.json634
-rw-r--r--library/intl/resources/currency/ms.json634
-rw-r--r--library/intl/resources/currency/mt.json634
-rw-r--r--library/intl/resources/currency/mua.json634
-rw-r--r--library/intl/resources/currency/my.json634
-rw-r--r--library/intl/resources/currency/naq.json634
-rw-r--r--library/intl/resources/currency/nb.json634
-rw-r--r--library/intl/resources/currency/nd.json634
-rw-r--r--library/intl/resources/currency/ne-IN.json634
-rw-r--r--library/intl/resources/currency/ne.json634
-rw-r--r--library/intl/resources/currency/nl.json634
-rw-r--r--library/intl/resources/currency/nmg.json634
-rw-r--r--library/intl/resources/currency/nn.json634
-rw-r--r--library/intl/resources/currency/nus.json634
-rw-r--r--library/intl/resources/currency/nyn.json634
-rw-r--r--library/intl/resources/currency/or.json634
-rw-r--r--library/intl/resources/currency/pa.json634
-rw-r--r--library/intl/resources/currency/pl.json634
-rw-r--r--library/intl/resources/currency/ps.json634
-rw-r--r--library/intl/resources/currency/pt-AO.json634
-rw-r--r--library/intl/resources/currency/pt-CV.json634
-rw-r--r--library/intl/resources/currency/pt-GW.json634
-rw-r--r--library/intl/resources/currency/pt-MO.json634
-rw-r--r--library/intl/resources/currency/pt-MZ.json634
-rw-r--r--library/intl/resources/currency/pt-PT.json634
-rw-r--r--library/intl/resources/currency/pt-ST.json634
-rw-r--r--library/intl/resources/currency/pt-TL.json634
-rw-r--r--library/intl/resources/currency/pt.json634
-rw-r--r--library/intl/resources/currency/rm.json634
-rw-r--r--library/intl/resources/currency/rn.json634
-rw-r--r--library/intl/resources/currency/ro.json634
-rw-r--r--library/intl/resources/currency/rof.json634
-rw-r--r--library/intl/resources/currency/ru.json634
-rw-r--r--library/intl/resources/currency/rwk.json634
-rw-r--r--library/intl/resources/currency/saq.json634
-rw-r--r--library/intl/resources/currency/sbp.json634
-rw-r--r--library/intl/resources/currency/se.json634
-rw-r--r--library/intl/resources/currency/seh.json634
-rw-r--r--library/intl/resources/currency/ses.json634
-rw-r--r--library/intl/resources/currency/sg.json634
-rw-r--r--library/intl/resources/currency/shi-Latn.json634
-rw-r--r--library/intl/resources/currency/shi.json634
-rw-r--r--library/intl/resources/currency/si.json634
-rw-r--r--library/intl/resources/currency/sk.json634
-rw-r--r--library/intl/resources/currency/sl.json634
-rw-r--r--library/intl/resources/currency/sn.json634
-rw-r--r--library/intl/resources/currency/so.json634
-rw-r--r--library/intl/resources/currency/sq.json634
-rw-r--r--library/intl/resources/currency/sr-Cyrl-BA.json634
-rw-r--r--library/intl/resources/currency/sr-Latn-BA.json634
-rw-r--r--library/intl/resources/currency/sr-Latn.json634
-rw-r--r--library/intl/resources/currency/sr.json634
-rw-r--r--library/intl/resources/currency/sv.json634
-rw-r--r--library/intl/resources/currency/sw.json634
-rw-r--r--library/intl/resources/currency/swc.json634
-rw-r--r--library/intl/resources/currency/ta-MY.json634
-rw-r--r--library/intl/resources/currency/ta-SG.json634
-rw-r--r--library/intl/resources/currency/ta.json634
-rw-r--r--library/intl/resources/currency/te.json634
-rw-r--r--library/intl/resources/currency/teo.json634
-rw-r--r--library/intl/resources/currency/th.json634
-rw-r--r--library/intl/resources/currency/ti.json634
-rw-r--r--library/intl/resources/currency/to.json634
-rw-r--r--library/intl/resources/currency/tr.json634
-rw-r--r--library/intl/resources/currency/twq.json634
-rw-r--r--library/intl/resources/currency/tzm.json634
-rw-r--r--library/intl/resources/currency/ug.json634
-rw-r--r--library/intl/resources/currency/uk.json634
-rw-r--r--library/intl/resources/currency/ur-IN.json634
-rw-r--r--library/intl/resources/currency/ur.json634
-rw-r--r--library/intl/resources/currency/uz-Cyrl.json634
-rw-r--r--library/intl/resources/currency/uz.json634
-rw-r--r--library/intl/resources/currency/vai-Latn.json634
-rw-r--r--library/intl/resources/currency/vai.json634
-rw-r--r--library/intl/resources/currency/vi.json634
-rw-r--r--library/intl/resources/currency/vun.json634
-rw-r--r--library/intl/resources/currency/wae.json634
-rw-r--r--library/intl/resources/currency/xog.json634
-rw-r--r--library/intl/resources/currency/yav.json634
-rw-r--r--library/intl/resources/currency/yo-BJ.json634
-rw-r--r--library/intl/resources/currency/yo.json634
-rw-r--r--library/intl/resources/currency/zgh.json634
-rw-r--r--library/intl/resources/currency/zh-Hans-HK.json634
-rw-r--r--library/intl/resources/currency/zh-Hans-MO.json634
-rw-r--r--library/intl/resources/currency/zh-Hans-SG.json634
-rw-r--r--library/intl/resources/currency/zh-Hant-HK.json634
-rw-r--r--library/intl/resources/currency/zh-Hant-MO.json634
-rw-r--r--library/intl/resources/currency/zh-Hant.json634
-rw-r--r--library/intl/resources/currency/zh.json634
-rw-r--r--library/intl/resources/currency/zu.json634
-rw-r--r--library/intl/resources/language/af.json738
-rw-r--r--library/intl/resources/language/agq.json738
-rw-r--r--library/intl/resources/language/ak.json738
-rw-r--r--library/intl/resources/language/am.json738
-rw-r--r--library/intl/resources/language/ar-AE.json738
-rw-r--r--library/intl/resources/language/ar-EG.json738
-rw-r--r--library/intl/resources/language/ar.json738
-rw-r--r--library/intl/resources/language/asa.json738
-rw-r--r--library/intl/resources/language/ast.json738
-rw-r--r--library/intl/resources/language/az.json738
-rw-r--r--library/intl/resources/language/bas.json738
-rw-r--r--library/intl/resources/language/be.json738
-rw-r--r--library/intl/resources/language/bez.json738
-rw-r--r--library/intl/resources/language/bg.json738
-rw-r--r--library/intl/resources/language/bm.json738
-rw-r--r--library/intl/resources/language/bn-IN.json738
-rw-r--r--library/intl/resources/language/bn.json738
-rw-r--r--library/intl/resources/language/bo.json738
-rw-r--r--library/intl/resources/language/br.json738
-rw-r--r--library/intl/resources/language/brx.json738
-rw-r--r--library/intl/resources/language/bs-Cyrl.json738
-rw-r--r--library/intl/resources/language/bs.json738
-rw-r--r--library/intl/resources/language/ca.json738
-rw-r--r--library/intl/resources/language/cgg.json738
-rw-r--r--library/intl/resources/language/chr.json738
-rw-r--r--library/intl/resources/language/cs.json738
-rw-r--r--library/intl/resources/language/cy.json738
-rw-r--r--library/intl/resources/language/da.json738
-rw-r--r--library/intl/resources/language/dav.json738
-rw-r--r--library/intl/resources/language/de-CH.json738
-rw-r--r--library/intl/resources/language/de.json738
-rw-r--r--library/intl/resources/language/dje.json738
-rw-r--r--library/intl/resources/language/dsb.json738
-rw-r--r--library/intl/resources/language/dyo.json738
-rw-r--r--library/intl/resources/language/dz.json738
-rw-r--r--library/intl/resources/language/ebu.json738
-rw-r--r--library/intl/resources/language/ee.json738
-rw-r--r--library/intl/resources/language/el.json738
-rw-r--r--library/intl/resources/language/en-AU.json738
-rw-r--r--library/intl/resources/language/en.json738
-rw-r--r--library/intl/resources/language/eo.json738
-rw-r--r--library/intl/resources/language/es-AR.json738
-rw-r--r--library/intl/resources/language/es-BO.json738
-rw-r--r--library/intl/resources/language/es-CL.json738
-rw-r--r--library/intl/resources/language/es-CO.json738
-rw-r--r--library/intl/resources/language/es-CR.json738
-rw-r--r--library/intl/resources/language/es-CU.json738
-rw-r--r--library/intl/resources/language/es-DO.json738
-rw-r--r--library/intl/resources/language/es-EC.json738
-rw-r--r--library/intl/resources/language/es-GT.json738
-rw-r--r--library/intl/resources/language/es-HN.json738
-rw-r--r--library/intl/resources/language/es-MX.json738
-rw-r--r--library/intl/resources/language/es-NI.json738
-rw-r--r--library/intl/resources/language/es-PA.json738
-rw-r--r--library/intl/resources/language/es-PE.json738
-rw-r--r--library/intl/resources/language/es-PR.json738
-rw-r--r--library/intl/resources/language/es-PY.json738
-rw-r--r--library/intl/resources/language/es-SV.json738
-rw-r--r--library/intl/resources/language/es-US.json738
-rw-r--r--library/intl/resources/language/es-UY.json738
-rw-r--r--library/intl/resources/language/es-VE.json738
-rw-r--r--library/intl/resources/language/es.json738
-rw-r--r--library/intl/resources/language/et.json738
-rw-r--r--library/intl/resources/language/eu.json738
-rw-r--r--library/intl/resources/language/ewo.json738
-rw-r--r--library/intl/resources/language/fa-AF.json738
-rw-r--r--library/intl/resources/language/fa.json738
-rw-r--r--library/intl/resources/language/ff.json738
-rw-r--r--library/intl/resources/language/fi.json738
-rw-r--r--library/intl/resources/language/fil.json738
-rw-r--r--library/intl/resources/language/fo.json738
-rw-r--r--library/intl/resources/language/fr-CA.json738
-rw-r--r--library/intl/resources/language/fr.json738
-rw-r--r--library/intl/resources/language/fur.json738
-rw-r--r--library/intl/resources/language/fy.json738
-rw-r--r--library/intl/resources/language/ga.json738
-rw-r--r--library/intl/resources/language/gd.json738
-rw-r--r--library/intl/resources/language/gl.json738
-rw-r--r--library/intl/resources/language/gsw.json738
-rw-r--r--library/intl/resources/language/gu.json738
-rw-r--r--library/intl/resources/language/guz.json738
-rw-r--r--library/intl/resources/language/ha.json738
-rw-r--r--library/intl/resources/language/he.json738
-rw-r--r--library/intl/resources/language/hi.json738
-rw-r--r--library/intl/resources/language/hr.json738
-rw-r--r--library/intl/resources/language/hsb.json738
-rw-r--r--library/intl/resources/language/hu.json738
-rw-r--r--library/intl/resources/language/hy.json738
-rw-r--r--library/intl/resources/language/id.json738
-rw-r--r--library/intl/resources/language/is.json738
-rw-r--r--library/intl/resources/language/it.json738
-rw-r--r--library/intl/resources/language/ja.json738
-rw-r--r--library/intl/resources/language/jgo.json738
-rw-r--r--library/intl/resources/language/jmc.json738
-rw-r--r--library/intl/resources/language/ka.json738
-rw-r--r--library/intl/resources/language/kab.json738
-rw-r--r--library/intl/resources/language/kam.json738
-rw-r--r--library/intl/resources/language/kde.json738
-rw-r--r--library/intl/resources/language/kea.json738
-rw-r--r--library/intl/resources/language/khq.json738
-rw-r--r--library/intl/resources/language/ki.json738
-rw-r--r--library/intl/resources/language/kk.json738
-rw-r--r--library/intl/resources/language/kl.json738
-rw-r--r--library/intl/resources/language/kln.json738
-rw-r--r--library/intl/resources/language/km.json738
-rw-r--r--library/intl/resources/language/kn.json738
-rw-r--r--library/intl/resources/language/ko.json738
-rw-r--r--library/intl/resources/language/ks.json738
-rw-r--r--library/intl/resources/language/ksb.json738
-rw-r--r--library/intl/resources/language/ksf.json738
-rw-r--r--library/intl/resources/language/ksh.json738
-rw-r--r--library/intl/resources/language/ky.json738
-rw-r--r--library/intl/resources/language/lag.json738
-rw-r--r--library/intl/resources/language/lb.json738
-rw-r--r--library/intl/resources/language/lg.json738
-rw-r--r--library/intl/resources/language/ln.json738
-rw-r--r--library/intl/resources/language/lo.json738
-rw-r--r--library/intl/resources/language/lt.json738
-rw-r--r--library/intl/resources/language/lu.json738
-rw-r--r--library/intl/resources/language/luo.json738
-rw-r--r--library/intl/resources/language/luy.json738
-rw-r--r--library/intl/resources/language/lv.json738
-rw-r--r--library/intl/resources/language/mas.json738
-rw-r--r--library/intl/resources/language/mer.json738
-rw-r--r--library/intl/resources/language/mfe.json738
-rw-r--r--library/intl/resources/language/mg.json738
-rw-r--r--library/intl/resources/language/mgh.json738
-rw-r--r--library/intl/resources/language/mk.json738
-rw-r--r--library/intl/resources/language/ml.json738
-rw-r--r--library/intl/resources/language/mn.json738
-rw-r--r--library/intl/resources/language/mr.json738
-rw-r--r--library/intl/resources/language/ms.json738
-rw-r--r--library/intl/resources/language/mt.json738
-rw-r--r--library/intl/resources/language/mua.json738
-rw-r--r--library/intl/resources/language/my.json738
-rw-r--r--library/intl/resources/language/naq.json738
-rw-r--r--library/intl/resources/language/nb.json738
-rw-r--r--library/intl/resources/language/nd.json738
-rw-r--r--library/intl/resources/language/ne-IN.json738
-rw-r--r--library/intl/resources/language/ne.json738
-rw-r--r--library/intl/resources/language/nl.json738
-rw-r--r--library/intl/resources/language/nmg.json738
-rw-r--r--library/intl/resources/language/nn.json738
-rw-r--r--library/intl/resources/language/nus.json738
-rw-r--r--library/intl/resources/language/nyn.json738
-rw-r--r--library/intl/resources/language/or.json738
-rw-r--r--library/intl/resources/language/pa.json738
-rw-r--r--library/intl/resources/language/pl.json738
-rw-r--r--library/intl/resources/language/ps.json738
-rw-r--r--library/intl/resources/language/pt-AO.json738
-rw-r--r--library/intl/resources/language/pt-CV.json738
-rw-r--r--library/intl/resources/language/pt-GW.json738
-rw-r--r--library/intl/resources/language/pt-MO.json738
-rw-r--r--library/intl/resources/language/pt-MZ.json738
-rw-r--r--library/intl/resources/language/pt-PT.json738
-rw-r--r--library/intl/resources/language/pt-ST.json738
-rw-r--r--library/intl/resources/language/pt-TL.json738
-rw-r--r--library/intl/resources/language/pt.json738
-rw-r--r--library/intl/resources/language/rm.json738
-rw-r--r--library/intl/resources/language/rn.json738
-rw-r--r--library/intl/resources/language/ro.json738
-rw-r--r--library/intl/resources/language/rof.json738
-rw-r--r--library/intl/resources/language/ru.json738
-rw-r--r--library/intl/resources/language/rwk.json738
-rw-r--r--library/intl/resources/language/saq.json738
-rw-r--r--library/intl/resources/language/sbp.json738
-rw-r--r--library/intl/resources/language/se-FI.json738
-rw-r--r--library/intl/resources/language/se.json738
-rw-r--r--library/intl/resources/language/seh.json738
-rw-r--r--library/intl/resources/language/ses.json738
-rw-r--r--library/intl/resources/language/sg.json738
-rw-r--r--library/intl/resources/language/shi-Latn.json738
-rw-r--r--library/intl/resources/language/shi.json738
-rw-r--r--library/intl/resources/language/si.json738
-rw-r--r--library/intl/resources/language/sk.json738
-rw-r--r--library/intl/resources/language/sl.json738
-rw-r--r--library/intl/resources/language/sn.json738
-rw-r--r--library/intl/resources/language/so.json738
-rw-r--r--library/intl/resources/language/sq.json738
-rw-r--r--library/intl/resources/language/sr-Latn.json738
-rw-r--r--library/intl/resources/language/sr.json738
-rw-r--r--library/intl/resources/language/sv-FI.json738
-rw-r--r--library/intl/resources/language/sv.json738
-rw-r--r--library/intl/resources/language/sw.json738
-rw-r--r--library/intl/resources/language/swc.json738
-rw-r--r--library/intl/resources/language/ta.json738
-rw-r--r--library/intl/resources/language/te.json738
-rw-r--r--library/intl/resources/language/teo.json738
-rw-r--r--library/intl/resources/language/th.json738
-rw-r--r--library/intl/resources/language/ti.json738
-rw-r--r--library/intl/resources/language/to.json738
-rw-r--r--library/intl/resources/language/tr.json738
-rw-r--r--library/intl/resources/language/twq.json738
-rw-r--r--library/intl/resources/language/tzm.json738
-rw-r--r--library/intl/resources/language/ug.json738
-rw-r--r--library/intl/resources/language/uk.json738
-rw-r--r--library/intl/resources/language/ur-IN.json738
-rw-r--r--library/intl/resources/language/ur.json738
-rw-r--r--library/intl/resources/language/uz-Cyrl.json738
-rw-r--r--library/intl/resources/language/uz.json738
-rw-r--r--library/intl/resources/language/vai-Latn.json738
-rw-r--r--library/intl/resources/language/vai.json738
-rw-r--r--library/intl/resources/language/vi.json738
-rw-r--r--library/intl/resources/language/vun.json738
-rw-r--r--library/intl/resources/language/wae.json738
-rw-r--r--library/intl/resources/language/xog.json738
-rw-r--r--library/intl/resources/language/yav.json738
-rw-r--r--library/intl/resources/language/yo-BJ.json738
-rw-r--r--library/intl/resources/language/yo.json738
-rw-r--r--library/intl/resources/language/zgh.json738
-rw-r--r--library/intl/resources/language/zh-Hans-HK.json738
-rw-r--r--library/intl/resources/language/zh-Hans-MO.json738
-rw-r--r--library/intl/resources/language/zh-Hans-SG.json738
-rw-r--r--library/intl/resources/language/zh-Hant-HK.json738
-rw-r--r--library/intl/resources/language/zh-Hant-MO.json738
-rw-r--r--library/intl/resources/language/zh-Hant.json738
-rw-r--r--library/intl/resources/language/zh.json738
-rw-r--r--library/intl/resources/language/zu.json738
-rw-r--r--library/intl/resources/number_format/aa.json7
-rw-r--r--library/intl/resources/number_format/af-NA.json9
-rw-r--r--library/intl/resources/number_format/af.json9
-rw-r--r--library/intl/resources/number_format/agq.json9
-rw-r--r--library/intl/resources/number_format/ak.json7
-rw-r--r--library/intl/resources/number_format/am.json7
-rw-r--r--library/intl/resources/number_format/ar-DZ.json11
-rw-r--r--library/intl/resources/number_format/ar-EH.json9
-rw-r--r--library/intl/resources/number_format/ar-LY.json11
-rw-r--r--library/intl/resources/number_format/ar-MA.json11
-rw-r--r--library/intl/resources/number_format/ar-TN.json11
-rw-r--r--library/intl/resources/number_format/ar.json12
-rw-r--r--library/intl/resources/number_format/as.json7
-rw-r--r--library/intl/resources/number_format/asa.json7
-rw-r--r--library/intl/resources/number_format/ast.json9
-rw-r--r--library/intl/resources/number_format/az.json9
-rw-r--r--library/intl/resources/number_format/bas.json9
-rw-r--r--library/intl/resources/number_format/be.json9
-rw-r--r--library/intl/resources/number_format/bem.json7
-rw-r--r--library/intl/resources/number_format/bez.json7
-rw-r--r--library/intl/resources/number_format/bg.json9
-rw-r--r--library/intl/resources/number_format/bm.json7
-rw-r--r--library/intl/resources/number_format/bn.json7
-rw-r--r--library/intl/resources/number_format/bo.json7
-rw-r--r--library/intl/resources/number_format/br.json9
-rw-r--r--library/intl/resources/number_format/brx.json7
-rw-r--r--library/intl/resources/number_format/bs.json9
-rw-r--r--library/intl/resources/number_format/ca.json9
-rw-r--r--library/intl/resources/number_format/cgg.json7
-rw-r--r--library/intl/resources/number_format/chr.json7
-rw-r--r--library/intl/resources/number_format/cs.json9
-rw-r--r--library/intl/resources/number_format/cy.json7
-rw-r--r--library/intl/resources/number_format/da.json9
-rw-r--r--library/intl/resources/number_format/dav.json7
-rw-r--r--library/intl/resources/number_format/de-AT.json9
-rw-r--r--library/intl/resources/number_format/de-CH.json8
-rw-r--r--library/intl/resources/number_format/de-LI.json8
-rw-r--r--library/intl/resources/number_format/de.json9
-rw-r--r--library/intl/resources/number_format/dje.json8
-rw-r--r--library/intl/resources/number_format/dsb.json9
-rw-r--r--library/intl/resources/number_format/dua.json9
-rw-r--r--library/intl/resources/number_format/dyo.json9
-rw-r--r--library/intl/resources/number_format/dz.json7
-rw-r--r--library/intl/resources/number_format/ebu.json7
-rw-r--r--library/intl/resources/number_format/ee.json7
-rw-r--r--library/intl/resources/number_format/el-CY.json9
-rw-r--r--library/intl/resources/number_format/el.json9
-rw-r--r--library/intl/resources/number_format/en-BE.json9
-rw-r--r--library/intl/resources/number_format/en-IN.json7
-rw-r--r--library/intl/resources/number_format/en-PK.json7
-rw-r--r--library/intl/resources/number_format/en-ZA.json9
-rw-r--r--library/intl/resources/number_format/en.json7
-rw-r--r--library/intl/resources/number_format/eo.json10
-rw-r--r--library/intl/resources/number_format/es-AR.json9
-rw-r--r--library/intl/resources/number_format/es-BO.json9
-rw-r--r--library/intl/resources/number_format/es-CL.json9
-rw-r--r--library/intl/resources/number_format/es-CO.json9
-rw-r--r--library/intl/resources/number_format/es-CR.json9
-rw-r--r--library/intl/resources/number_format/es-CU.json7
-rw-r--r--library/intl/resources/number_format/es-DO.json7
-rw-r--r--library/intl/resources/number_format/es-EC.json9
-rw-r--r--library/intl/resources/number_format/es-GQ.json9
-rw-r--r--library/intl/resources/number_format/es-GT.json7
-rw-r--r--library/intl/resources/number_format/es-HN.json7
-rw-r--r--library/intl/resources/number_format/es-MX.json7
-rw-r--r--library/intl/resources/number_format/es-NI.json7
-rw-r--r--library/intl/resources/number_format/es-PA.json7
-rw-r--r--library/intl/resources/number_format/es-PE.json7
-rw-r--r--library/intl/resources/number_format/es-PR.json7
-rw-r--r--library/intl/resources/number_format/es-PY.json9
-rw-r--r--library/intl/resources/number_format/es-SV.json7
-rw-r--r--library/intl/resources/number_format/es-US.json7
-rw-r--r--library/intl/resources/number_format/es-UY.json9
-rw-r--r--library/intl/resources/number_format/es-VE.json9
-rw-r--r--library/intl/resources/number_format/es.json9
-rw-r--r--library/intl/resources/number_format/et.json9
-rw-r--r--library/intl/resources/number_format/eu.json9
-rw-r--r--library/intl/resources/number_format/ewo.json9
-rw-r--r--library/intl/resources/number_format/fa.json12
-rw-r--r--library/intl/resources/number_format/ff.json9
-rw-r--r--library/intl/resources/number_format/fi.json10
-rw-r--r--library/intl/resources/number_format/fil.json7
-rw-r--r--library/intl/resources/number_format/fo.json10
-rw-r--r--library/intl/resources/number_format/fr-BE.json9
-rw-r--r--library/intl/resources/number_format/fr-CH.json8
-rw-r--r--library/intl/resources/number_format/fr-LU.json9
-rw-r--r--library/intl/resources/number_format/fr.json9
-rw-r--r--library/intl/resources/number_format/fur.json9
-rw-r--r--library/intl/resources/number_format/fy.json9
-rw-r--r--library/intl/resources/number_format/ga.json7
-rw-r--r--library/intl/resources/number_format/gd.json7
-rw-r--r--library/intl/resources/number_format/gl.json9
-rw-r--r--library/intl/resources/number_format/gsw.json9
-rw-r--r--library/intl/resources/number_format/gu.json7
-rw-r--r--library/intl/resources/number_format/guz.json7
-rw-r--r--library/intl/resources/number_format/gv.json7
-rw-r--r--library/intl/resources/number_format/ha.json7
-rw-r--r--library/intl/resources/number_format/haw.json7
-rw-r--r--library/intl/resources/number_format/he.json9
-rw-r--r--library/intl/resources/number_format/hi.json7
-rw-r--r--library/intl/resources/number_format/hr.json9
-rw-r--r--library/intl/resources/number_format/hsb.json9
-rw-r--r--library/intl/resources/number_format/hu.json9
-rw-r--r--library/intl/resources/number_format/hy.json9
-rw-r--r--library/intl/resources/number_format/id.json9
-rw-r--r--library/intl/resources/number_format/ig.json7
-rw-r--r--library/intl/resources/number_format/ii.json7
-rw-r--r--library/intl/resources/number_format/is.json9
-rw-r--r--library/intl/resources/number_format/it-CH.json8
-rw-r--r--library/intl/resources/number_format/it.json9
-rw-r--r--library/intl/resources/number_format/ja.json7
-rw-r--r--library/intl/resources/number_format/jgo.json9
-rw-r--r--library/intl/resources/number_format/jmc.json7
-rw-r--r--library/intl/resources/number_format/ka.json9
-rw-r--r--library/intl/resources/number_format/kab.json9
-rw-r--r--library/intl/resources/number_format/kam.json7
-rw-r--r--library/intl/resources/number_format/kde.json7
-rw-r--r--library/intl/resources/number_format/kea.json9
-rw-r--r--library/intl/resources/number_format/khq.json8
-rw-r--r--library/intl/resources/number_format/ki.json7
-rw-r--r--library/intl/resources/number_format/kk.json9
-rw-r--r--library/intl/resources/number_format/kkj.json9
-rw-r--r--library/intl/resources/number_format/kl.json10
-rw-r--r--library/intl/resources/number_format/kln.json7
-rw-r--r--library/intl/resources/number_format/km.json9
-rw-r--r--library/intl/resources/number_format/kn.json7
-rw-r--r--library/intl/resources/number_format/ko.json7
-rw-r--r--library/intl/resources/number_format/kok.json7
-rw-r--r--library/intl/resources/number_format/ks.json12
-rw-r--r--library/intl/resources/number_format/ksb.json7
-rw-r--r--library/intl/resources/number_format/ksf.json9
-rw-r--r--library/intl/resources/number_format/ksh.json10
-rw-r--r--library/intl/resources/number_format/kw.json7
-rw-r--r--library/intl/resources/number_format/ky.json9
-rw-r--r--library/intl/resources/number_format/lag.json7
-rw-r--r--library/intl/resources/number_format/lb.json9
-rw-r--r--library/intl/resources/number_format/lg.json7
-rw-r--r--library/intl/resources/number_format/lkt.json7
-rw-r--r--library/intl/resources/number_format/ln.json9
-rw-r--r--library/intl/resources/number_format/lo.json9
-rw-r--r--library/intl/resources/number_format/lt.json10
-rw-r--r--library/intl/resources/number_format/lu.json9
-rw-r--r--library/intl/resources/number_format/luo.json7
-rw-r--r--library/intl/resources/number_format/luy.json7
-rw-r--r--library/intl/resources/number_format/lv.json9
-rw-r--r--library/intl/resources/number_format/mas.json7
-rw-r--r--library/intl/resources/number_format/mer.json7
-rw-r--r--library/intl/resources/number_format/mfe.json8
-rw-r--r--library/intl/resources/number_format/mg.json7
-rw-r--r--library/intl/resources/number_format/mgh.json9
-rw-r--r--library/intl/resources/number_format/mgo.json7
-rw-r--r--library/intl/resources/number_format/mk.json9
-rw-r--r--library/intl/resources/number_format/ml.json7
-rw-r--r--library/intl/resources/number_format/mn.json7
-rw-r--r--library/intl/resources/number_format/mr.json7
-rw-r--r--library/intl/resources/number_format/ms-Latn-BN.json9
-rw-r--r--library/intl/resources/number_format/ms.json7
-rw-r--r--library/intl/resources/number_format/mt.json7
-rw-r--r--library/intl/resources/number_format/mua.json9
-rw-r--r--library/intl/resources/number_format/my.json7
-rw-r--r--library/intl/resources/number_format/naq.json7
-rw-r--r--library/intl/resources/number_format/nb.json10
-rw-r--r--library/intl/resources/number_format/nd.json7
-rw-r--r--library/intl/resources/number_format/ne.json7
-rw-r--r--library/intl/resources/number_format/nl-BE.json9
-rw-r--r--library/intl/resources/number_format/nl.json9
-rw-r--r--library/intl/resources/number_format/nmg.json9
-rw-r--r--library/intl/resources/number_format/nn.json10
-rw-r--r--library/intl/resources/number_format/nnh.json9
-rw-r--r--library/intl/resources/number_format/nr.json9
-rw-r--r--library/intl/resources/number_format/nso.json8
-rw-r--r--library/intl/resources/number_format/nus.json7
-rw-r--r--library/intl/resources/number_format/nyn.json7
-rw-r--r--library/intl/resources/number_format/om.json7
-rw-r--r--library/intl/resources/number_format/or.json7
-rw-r--r--library/intl/resources/number_format/os.json9
-rw-r--r--library/intl/resources/number_format/pa-Arab.json12
-rw-r--r--library/intl/resources/number_format/pa.json7
-rw-r--r--library/intl/resources/number_format/pl.json9
-rw-r--r--library/intl/resources/number_format/ps.json12
-rw-r--r--library/intl/resources/number_format/pt-AO.json9
-rw-r--r--library/intl/resources/number_format/pt-CV.json9
-rw-r--r--library/intl/resources/number_format/pt-GW.json9
-rw-r--r--library/intl/resources/number_format/pt-MO.json9
-rw-r--r--library/intl/resources/number_format/pt-MZ.json9
-rw-r--r--library/intl/resources/number_format/pt-PT.json9
-rw-r--r--library/intl/resources/number_format/pt-ST.json9
-rw-r--r--library/intl/resources/number_format/pt-TL.json9
-rw-r--r--library/intl/resources/number_format/pt.json9
-rw-r--r--library/intl/resources/number_format/qu-BO.json9
-rw-r--r--library/intl/resources/number_format/qu.json7
-rw-r--r--library/intl/resources/number_format/rm.json9
-rw-r--r--library/intl/resources/number_format/rn.json9
-rw-r--r--library/intl/resources/number_format/ro.json9
-rw-r--r--library/intl/resources/number_format/rof.json7
-rw-r--r--library/intl/resources/number_format/ru.json9
-rw-r--r--library/intl/resources/number_format/rw.json9
-rw-r--r--library/intl/resources/number_format/rwk.json7
-rw-r--r--library/intl/resources/number_format/sah.json7
-rw-r--r--library/intl/resources/number_format/saq.json7
-rw-r--r--library/intl/resources/number_format/sbp.json7
-rw-r--r--library/intl/resources/number_format/se.json10
-rw-r--r--library/intl/resources/number_format/seh.json9
-rw-r--r--library/intl/resources/number_format/ses.json8
-rw-r--r--library/intl/resources/number_format/sg.json9
-rw-r--r--library/intl/resources/number_format/shi.json9
-rw-r--r--library/intl/resources/number_format/si.json7
-rw-r--r--library/intl/resources/number_format/sk.json9
-rw-r--r--library/intl/resources/number_format/sl.json9
-rw-r--r--library/intl/resources/number_format/smn.json7
-rw-r--r--library/intl/resources/number_format/sn.json7
-rw-r--r--library/intl/resources/number_format/so.json7
-rw-r--r--library/intl/resources/number_format/sq.json9
-rw-r--r--library/intl/resources/number_format/sr.json9
-rw-r--r--library/intl/resources/number_format/ss.json9
-rw-r--r--library/intl/resources/number_format/ssy.json7
-rw-r--r--library/intl/resources/number_format/sv.json10
-rw-r--r--library/intl/resources/number_format/sw.json7
-rw-r--r--library/intl/resources/number_format/swc.json9
-rw-r--r--library/intl/resources/number_format/ta-MY.json7
-rw-r--r--library/intl/resources/number_format/ta-SG.json7
-rw-r--r--library/intl/resources/number_format/ta.json7
-rw-r--r--library/intl/resources/number_format/te.json7
-rw-r--r--library/intl/resources/number_format/teo.json7
-rw-r--r--library/intl/resources/number_format/th.json7
-rw-r--r--library/intl/resources/number_format/ti.json7
-rw-r--r--library/intl/resources/number_format/tn.json8
-rw-r--r--library/intl/resources/number_format/to.json7
-rw-r--r--library/intl/resources/number_format/tr.json9
-rw-r--r--library/intl/resources/number_format/ts.json9
-rw-r--r--library/intl/resources/number_format/twq.json8
-rw-r--r--library/intl/resources/number_format/tzm.json9
-rw-r--r--library/intl/resources/number_format/ug.json7
-rw-r--r--library/intl/resources/number_format/uk.json9
-rw-r--r--library/intl/resources/number_format/ur-IN.json9
-rw-r--r--library/intl/resources/number_format/ur.json9
-rw-r--r--library/intl/resources/number_format/uz-Arab.json12
-rw-r--r--library/intl/resources/number_format/uz.json9
-rw-r--r--library/intl/resources/number_format/vai.json7
-rw-r--r--library/intl/resources/number_format/ve.json9
-rw-r--r--library/intl/resources/number_format/vi.json9
-rw-r--r--library/intl/resources/number_format/vo.json7
-rw-r--r--library/intl/resources/number_format/vun.json7
-rw-r--r--library/intl/resources/number_format/wae.json9
-rw-r--r--library/intl/resources/number_format/xog.json7
-rw-r--r--library/intl/resources/number_format/yav.json9
-rw-r--r--library/intl/resources/number_format/yi.json7
-rw-r--r--library/intl/resources/number_format/yo.json7
-rw-r--r--library/intl/resources/number_format/zgh.json9
-rw-r--r--library/intl/resources/number_format/zh-Hans-HK.json7
-rw-r--r--library/intl/resources/number_format/zh-Hans-MO.json7
-rw-r--r--library/intl/resources/number_format/zh-Hans-SG.json7
-rw-r--r--library/intl/resources/number_format/zh-Hant.json7
-rw-r--r--library/intl/resources/number_format/zh.json7
-rw-r--r--library/intl/resources/number_format/zu.json7
-rw-r--r--library/intl/scripts/country/generate.php162
-rw-r--r--library/intl/scripts/currency/generate.php153
-rw-r--r--library/intl/scripts/language/generate.php129
-rw-r--r--library/intl/scripts/number_format/generate.php107
-rw-r--r--library/intl/src/Country/Country.php168
-rw-r--r--library/intl/src/Country/CountryInterface.php99
-rw-r--r--library/intl/src/Country/CountryRepository.php124
-rw-r--r--library/intl/src/Country/CountryRepositoryInterface.php31
-rw-r--r--library/intl/src/Currency/Currency.php168
-rw-r--r--library/intl/src/Currency/CurrencyInterface.php82
-rw-r--r--library/intl/src/Currency/CurrencyRepository.php122
-rw-r--r--library/intl/src/Currency/CurrencyRepositoryInterface.php31
-rw-r--r--library/intl/src/Exception/ExceptionInterface.php7
-rw-r--r--library/intl/src/Exception/InvalidArgumentException.php11
-rw-r--r--library/intl/src/Exception/UnknownCountryException.php11
-rw-r--r--library/intl/src/Exception/UnknownCurrencyException.php11
-rw-r--r--library/intl/src/Exception/UnknownLanguageException.php11
-rw-r--r--library/intl/src/Exception/UnknownLocaleException.php10
-rw-r--r--library/intl/src/Formatter/NumberFormatter.php406
-rw-r--r--library/intl/src/Formatter/NumberFormatterInterface.php134
-rw-r--r--library/intl/src/Language/Language.php91
-rw-r--r--library/intl/src/Language/LanguageInterface.php37
-rw-r--r--library/intl/src/Language/LanguageRepository.php96
-rw-r--r--library/intl/src/Language/LanguageRepositoryInterface.php31
-rw-r--r--library/intl/src/LocaleResolverTrait.php89
-rw-r--r--library/intl/src/NumberFormat/NumberFormat.php269
-rw-r--r--library/intl/src/NumberFormat/NumberFormatInterface.php185
-rw-r--r--library/intl/src/NumberFormat/NumberFormatRepository.php87
-rw-r--r--library/intl/src/NumberFormat/NumberFormatRepositoryInterface.php19
-rw-r--r--library/intl/tests/Country/CountryRepositoryTest.php114
-rw-r--r--library/intl/tests/Country/CountryTest.php83
-rw-r--r--library/intl/tests/Currency/CurrencyRepositoryTest.php113
-rw-r--r--library/intl/tests/Currency/CurrencyTest.php83
-rw-r--r--library/intl/tests/DummyRepository.php23
-rw-r--r--library/intl/tests/Formatter/NumberFormatterTest.php378
-rw-r--r--library/intl/tests/Language/LanguageRepositoryTest.php92
-rw-r--r--library/intl/tests/Language/LanguageTest.php53
-rw-r--r--library/intl/tests/LocaleResolverTest.php51
-rw-r--r--library/intl/tests/NumberFormat/NumberFormatRepositoryTest.php69
-rw-r--r--library/intl/tests/NumberFormat/NumberFormatTest.php131
-rw-r--r--library/intl/vendor/autoload.php7
-rw-r--r--library/intl/vendor/composer/ClassLoader.php387
-rw-r--r--library/intl/vendor/composer/autoload_classmap.php9
-rw-r--r--library/intl/vendor/composer/autoload_namespaces.php9
-rw-r--r--library/intl/vendor/composer/autoload_psr4.php10
-rw-r--r--library/intl/vendor/composer/autoload_real.php50
-rw-r--r--library/jRange/.gitignore2
-rw-r--r--library/jRange/LICENSE21
-rw-r--r--library/jRange/README.md5
-rw-r--r--library/jRange/demo/index.html245
-rw-r--r--library/jRange/demo/main.css289
-rw-r--r--library/jRange/demo/main.less296
-rw-r--r--library/jRange/demo/normalize.css425
-rw-r--r--library/jRange/demo/prism/prism.css193
-rw-r--r--library/jRange/demo/prism/prism.js8
-rw-r--r--library/jRange/jquery.range-min.js1
-rw-r--r--library/jRange/jquery.range.css168
-rw-r--r--library/jRange/jquery.range.js297
-rw-r--r--library/jRange/jquery.range.less192
-rw-r--r--library/jgrowl/README2
-rw-r--r--library/jgrowl/jquery.jgrowl.css137
-rw-r--r--library/jgrowl/jquery.jgrowl_minimized.js13
-rw-r--r--library/jquery-textcomplete/LICENSE21
-rw-r--r--library/jquery-textcomplete/jquery.textcomplete.js1088
-rw-r--r--library/jquery.AreYouSure/.gitignore166
-rw-r--r--library/jquery.AreYouSure/Gruntfile.js26
-rw-r--r--library/jquery.AreYouSure/README.md297
-rw-r--r--library/jquery.AreYouSure/are-you-sure.jquery.json39
-rw-r--r--library/jquery.AreYouSure/ays-beforeunload-shim.js31
-rw-r--r--library/jquery.AreYouSure/bower.json30
-rw-r--r--library/jquery.AreYouSure/demo/are-you-sure-demo.html576
-rw-r--r--library/jquery.AreYouSure/jquery.are-you-sure.js192
-rw-r--r--library/jquery.AreYouSure/package.json45
-rw-r--r--library/jquery.AreYouSure/spec/javascripts/fixtures/input-text.html4
-rw-r--r--library/jquery.AreYouSure/spec/javascripts/jquery.are-you-sure_spec.js28
-rw-r--r--library/jquery.divgrow/divGrow-1.3.1.zipbin2124 -> 0 bytes
-rw-r--r--library/jquery.divgrow/howto46
-rw-r--r--library/jquery.divgrow/jquery.divgrow-1.3.1.js89
-rw-r--r--library/jquery.divgrow/jquery.divgrow-1.3.1.min.js1
-rw-r--r--library/jslider/.gitignore2
-rw-r--r--library/jslider/MIT-LICENSE.txt20
-rw-r--r--library/jslider/Makefile15
-rw-r--r--library/jslider/README.md9
-rw-r--r--library/jslider/bin/jquery.slider.min.css1
-rw-r--r--library/jslider/bin/jquery.slider.min.js1
-rw-r--r--library/jslider/css/jslider.blue.css4
-rw-r--r--library/jslider/css/jslider.css39
-rw-r--r--library/jslider/css/jslider.plastic.css3
-rw-r--r--library/jslider/css/jslider.round.css5
-rw-r--r--library/jslider/css/jslider.round.plastic.css5
-rw-r--r--library/jslider/img/jslider.blue.pngbin1001 -> 0 bytes
-rw-r--r--library/jslider/img/jslider.plastic.pngbin1237 -> 0 bytes
-rw-r--r--library/jslider/img/jslider.pngbin832 -> 0 bytes
-rw-r--r--library/jslider/img/jslider.round.plastic.pngbin1770 -> 0 bytes
-rw-r--r--library/jslider/img/jslider.round.pngbin1871 -> 0 bytes
-rw-r--r--library/jslider/index.html152
-rw-r--r--library/jslider/js/draggable-0.1.js196
-rw-r--r--library/jslider/js/jquery-1.7.1.js9266
-rw-r--r--library/jslider/js/jquery.dependClass-0.1.js56
-rw-r--r--library/jslider/js/jquery.numberformatter-1.2.3.js510
-rw-r--r--library/jslider/js/jquery.slider.js700
-rw-r--r--library/jslider/js/jshashtable-2.1_src.js370
-rw-r--r--library/jslider/js/tmpl.js35
-rw-r--r--library/jslider/src/skin.psdbin143059 -> 0 bytes
-rw-r--r--library/jslider/tests/show_hide.html53
-rw-r--r--library/jslider/tests/zero_value.html64
-rw-r--r--library/jslider/tools/yuicompressor-2.4.7.jarbin891148 -> 0 bytes
-rw-r--r--library/justifiedGallery/dist/css/justifiedGallery.css149
-rw-r--r--library/justifiedGallery/dist/css/justifiedGallery.min.css7
-rw-r--r--library/justifiedGallery/dist/js/jquery.justifiedGallery.js661
-rw-r--r--library/justifiedGallery/dist/js/jquery.justifiedGallery.min.js7
-rw-r--r--library/oauth/LICENSE37
-rw-r--r--library/oauth/LICENSE.txt36
-rw-r--r--library/oauth/http.php2092
-rw-r--r--library/oauth/oauth_client.php2176
-rw-r--r--library/oauth/oauth_client_class.html607
-rw-r--r--library/readmore.js/README.md171
-rw-r--r--library/readmore.js/readmore.js319
-rw-r--r--library/stylish_select/index.html314
-rw-r--r--library/stylish_select/jquery.stylish-select.js492
-rwxr-xr-xlibrary/stylish_select/select-bg.pngbin0 -> 2438 bytes
-rwxr-xr-xlibrary/stylish_select/stylish-select.css121
-rw-r--r--library/twitteroauth.php2
-rw-r--r--mod/achievements.php23
-rw-r--r--mod/acl.php184
-rw-r--r--mod/admin.php246
-rw-r--r--mod/apps.php1
-rw-r--r--mod/blocks.php155
-rw-r--r--mod/bookmarks.php4
-rw-r--r--mod/chanman.php31
-rw-r--r--mod/channel.php63
-rw-r--r--mod/chanview.php14
-rw-r--r--mod/chatsvc.php4
-rw-r--r--mod/cloud.php120
-rw-r--r--mod/connect.php3
-rw-r--r--mod/connections.php74
-rw-r--r--mod/connedit.php138
-rw-r--r--mod/contactgroup.php4
-rw-r--r--mod/delegate.php2
-rw-r--r--mod/directory.php170
-rw-r--r--mod/dirprofile.php184
-rw-r--r--mod/dirsearch.php110
-rw-r--r--mod/display.php29
-rw-r--r--mod/editblock.php198
-rw-r--r--mod/editlayout.php219
-rw-r--r--mod/editpost.php6
-rw-r--r--mod/editwebpage.php126
-rwxr-xr-xmod/events.php155
-rw-r--r--mod/feed.php6
-rw-r--r--mod/filer.php2
-rw-r--r--mod/filerm.php2
-rw-r--r--mod/filestorage.php58
-rw-r--r--mod/follow.php3
-rw-r--r--mod/fsuggest.php2
-rw-r--r--mod/group.php14
-rw-r--r--mod/hcard.php54
-rw-r--r--mod/help.php26
-rw-r--r--mod/home.php209
-rw-r--r--mod/impel.php121
-rw-r--r--mod/import.php147
-rw-r--r--mod/invite.php30
-rw-r--r--mod/item.php396
-rw-r--r--mod/layouts.php130
-rwxr-xr-xmod/like.php35
-rw-r--r--mod/lockview.php12
-rw-r--r--mod/locs.php104
-rw-r--r--mod/lostpass.php4
-rw-r--r--mod/mail.php19
-rw-r--r--mod/manage.php97
-rw-r--r--mod/menu.php72
-rw-r--r--mod/message.php22
-rw-r--r--mod/mitem.php118
-rw-r--r--mod/network.php293
-rw-r--r--mod/new_channel.php6
-rw-r--r--mod/notifications.php6
-rw-r--r--mod/oembed.php5
-rw-r--r--mod/openid.php6
-rw-r--r--mod/p.php52
-rw-r--r--mod/page.php22
-rw-r--r--mod/parse_url.php9
-rw-r--r--mod/photo.php30
-rw-r--r--mod/photos.php507
-rw-r--r--mod/ping.php233
-rw-r--r--mod/poco.php25
-rw-r--r--mod/post.php51
-rw-r--r--mod/profile_photo.php16
-rw-r--r--mod/profiles.php236
-rw-r--r--mod/profperm.php4
-rw-r--r--mod/receive.php77
-rw-r--r--mod/register.php15
-rw-r--r--mod/regmod.php1
-rw-r--r--mod/regver.php2
-rw-r--r--mod/removeaccount.php66
-rw-r--r--mod/removeme.php10
-rw-r--r--mod/rpost.php2
-rw-r--r--mod/search.php45
-rw-r--r--mod/service_limits.php23
-rw-r--r--mod/settings.php391
-rwxr-xr-xmod/setup.php36
-rw-r--r--mod/share.php6
-rw-r--r--mod/siteinfo.php82
-rw-r--r--mod/sitelist.php6
-rw-r--r--mod/smilies.php14
-rw-r--r--mod/sources.php4
-rw-r--r--mod/sslify.php2
-rw-r--r--mod/starred.php2
-rwxr-xr-xmod/subthread.php2
-rw-r--r--mod/tagrm.php120
-rw-r--r--mod/thing.php10
-rw-r--r--mod/uexport.php39
-rw-r--r--mod/update_home.php38
-rw-r--r--mod/viewconnections.php8
-rw-r--r--mod/viewsrc.php10
-rw-r--r--mod/wall_upload.php5
-rw-r--r--mod/webpages.php169
-rw-r--r--mod/xchan.php31
-rw-r--r--mod/xrd.php14
-rw-r--r--mod/zfinger.php47
-rw-r--r--mod/zotfeed.php4
-rw-r--r--util/README2
-rw-r--r--util/messages.po7695
-rw-r--r--util/po2php.php18
-rwxr-xr-xutil/shredder/shredder24
-rw-r--r--util/strings.php2238
-rw-r--r--util/wp/post_to_red/post_to_red.php489
-rw-r--r--util/wp/post_to_red/readme.txt39
l---------vendor/bin/sabredav1
l---------vendor/bin/vobjectvalidate.php1
-rw-r--r--version.inc2
-rw-r--r--view/ca/cmnt_received_eml.tpl18
-rw-r--r--view/ca/follow_notify_eml.tpl13
-rw-r--r--view/ca/friend_complete_eml.tpl19
-rw-r--r--view/ca/intro_complete_eml.tpl21
-rw-r--r--view/ca/mail_received_html_body_eml.tpl24
-rw-r--r--view/ca/mail_received_text_body_eml.tpl9
-rw-r--r--view/ca/request_notify_eml.tpl13
-rw-r--r--view/ca/wall_received_eml.tpl18
-rw-r--r--view/cs/cmnt_received_eml.tpl14
-rw-r--r--view/cs/cmnt_received_html_body_eml.tpl25
-rw-r--r--view/cs/cmnt_received_text_body_eml.tpl14
-rw-r--r--view/cs/follow_notify_eml.tpl14
-rw-r--r--view/cs/friend_complete_eml.tpl22
-rw-r--r--view/cs/intro_complete_eml.tpl22
-rw-r--r--view/cs/mail_received_html_body_eml.tpl25
-rw-r--r--view/cs/mail_received_text_body_eml.tpl10
-rw-r--r--view/cs/request_notify_eml.tpl17
-rw-r--r--view/cs/wall_received_eml.tpl14
-rw-r--r--view/cs/wall_received_html_body_eml.tpl24
-rw-r--r--view/cs/wall_received_text_body_eml.tpl14
-rw-r--r--view/css/bootstrap-red.css70
-rw-r--r--view/css/conversation.css41
-rw-r--r--view/css/default.css6
-rw-r--r--view/css/mod_cloud.css43
-rw-r--r--view/css/mod_connect.css4
-rw-r--r--view/css/mod_connedit.css22
-rw-r--r--view/css/mod_directory.css36
-rw-r--r--view/css/mod_events.css14
-rw-r--r--view/css/mod_group.css2
-rw-r--r--view/css/mod_locs.css3
-rw-r--r--view/css/mod_mail.css4
-rw-r--r--view/css/mod_manage.css46
-rw-r--r--view/css/mod_menu.css3
-rw-r--r--view/css/mod_message.css4
-rw-r--r--view/css/mod_new_channel.css136
-rw-r--r--view/css/mod_photos.css169
-rw-r--r--view/css/mod_profile.css16
-rw-r--r--view/css/mod_profiles.css18
-rw-r--r--view/css/mod_settings.css12
-rw-r--r--view/css/mod_thing.css5
-rw-r--r--view/css/redable.css10
-rw-r--r--view/css/widgets.css126
-rw-r--r--view/de/cmnt_received_eml.tpl17
-rw-r--r--view/de/cmnt_received_html_body_eml.tpl25
-rw-r--r--view/de/cmnt_received_text_body_eml.tpl16
-rw-r--r--view/de/follow_notify_eml.tpl14
-rw-r--r--view/de/friend_complete_eml.tpl22
-rw-r--r--view/de/htconfig.tpl41
-rw-r--r--view/de/intro_complete_eml.tpl22
-rw-r--r--view/de/lostpass_eml.tpl34
-rw-r--r--view/de/mail_received_html_body_eml.tpl26
-rw-r--r--view/de/mail_received_text_body_eml.tpl11
-rw-r--r--view/de/messages.po11066
-rw-r--r--view/de/passchanged_eml.tpl24
-rw-r--r--view/de/register_open_eml.tpl26
-rw-r--r--view/de/register_verify_eml.tpl19
-rw-r--r--view/de/request_notify_eml.tpl17
-rw-r--r--view/de/strings.php2652
-rw-r--r--view/de/update_fail_eml.tpl20
-rw-r--r--view/de/wall_received_eml.tpl18
-rw-r--r--view/de/wall_received_html_body_eml.tpl24
-rw-r--r--view/de/wall_received_text_body_eml.tpl18
-rw-r--r--view/en-au/htconfig.tpl98
-rw-r--r--view/en-au/lostpass_eml.tpl32
-rw-r--r--view/en-au/passchanged_eml.tpl20
-rw-r--r--view/en-au/register_open_eml.tpl19
-rw-r--r--view/en-au/register_verify_eml.tpl25
-rw-r--r--view/en-au/register_verify_member.tpl25
-rw-r--r--view/en-au/strings.php5
-rw-r--r--view/en-au/update_fail_eml.tpl13
-rw-r--r--view/en-gb/htconfig.tpl98
-rw-r--r--view/en-gb/lostpass_eml.tpl32
-rw-r--r--view/en-gb/passchanged_eml.tpl20
-rw-r--r--view/en-gb/register_open_eml.tpl19
-rw-r--r--view/en-gb/register_verify_eml.tpl25
-rw-r--r--view/en-gb/register_verify_member.tpl25
-rw-r--r--view/en-gb/strings.php31
-rw-r--r--view/en-gb/update_fail_eml.tpl13
-rw-r--r--view/en/follow_notify_eml.tpl14
-rw-r--r--view/en/friend_complete_eml.tpl22
-rw-r--r--view/en/htconfig.tpl8
-rw-r--r--view/en/intro_complete_eml.tpl22
-rw-r--r--view/en/request_notify_eml.tpl17
-rw-r--r--view/eo/follow_notify_eml.tpl14
-rw-r--r--view/eo/friend_complete_eml.tpl22
-rw-r--r--view/eo/intro_complete_eml.tpl22
-rw-r--r--view/eo/request_notify_eml.tpl17
-rw-r--r--view/es/cmnt_received_eml.tpl18
-rw-r--r--view/es/follow_notify_eml.tpl14
-rw-r--r--view/es/friend_complete_eml.tpl22
-rw-r--r--view/es/intro_complete_eml.tpl22
-rw-r--r--view/es/mail_received_html_body_eml.tpl24
-rw-r--r--view/es/mail_received_text_body_eml.tpl9
-rw-r--r--view/es/request_notify_eml.tpl17
-rw-r--r--view/es/wall_received_eml.tpl18
-rw-r--r--view/fr/cmnt_received_eml.tpl18
-rw-r--r--view/fr/cmnt_received_html_body_eml.tpl25
-rw-r--r--view/fr/cmnt_received_text_body_eml.tpl15
-rw-r--r--view/fr/follow_notify_eml.tpl14
-rw-r--r--view/fr/friend_complete_eml.tpl22
-rw-r--r--view/fr/htconfig.tpl55
-rw-r--r--view/fr/intro_complete_eml.tpl22
-rw-r--r--view/fr/lostpass_eml.tpl32
-rw-r--r--view/fr/mail_received_html_body_eml.tpl25
-rw-r--r--view/fr/mail_received_text_body_eml.tpl10
-rw-r--r--view/fr/messages.po10078
-rw-r--r--view/fr/passchanged_eml.tpl23
-rw-r--r--view/fr/register_open_eml.tpl25
-rw-r--r--view/fr/register_verify_eml.tpl19
-rw-r--r--view/fr/register_verify_member.tpl24
-rw-r--r--view/fr/request_notify_eml.tpl17
-rw-r--r--view/fr/strings.php2556
-rw-r--r--view/fr/update_fail_eml.tpl29
-rw-r--r--view/fr/wall_received_eml.tpl18
-rw-r--r--view/it/cmnt_received_eml.tpl18
-rw-r--r--view/it/cmnt_received_html_body_eml.tpl25
-rw-r--r--view/it/cmnt_received_text_body_eml.tpl18
-rw-r--r--view/it/follow_notify_eml.tpl14
-rw-r--r--view/it/friend_complete_eml.tpl22
-rw-r--r--view/it/intro_complete_eml.tpl22
-rw-r--r--view/it/lostpass_eml.tpl34
-rw-r--r--view/it/mail_received_html_body_eml.tpl25
-rw-r--r--view/it/mail_received_text_body_eml.tpl10
-rw-r--r--view/it/messages.po10819
-rw-r--r--view/it/passchanged_eml.tpl22
-rw-r--r--view/it/register_open_eml.tpl26
-rw-r--r--view/it/register_verify_eml.tpl19
-rw-r--r--view/it/register_verify_member.tpl24
-rw-r--r--view/it/request_notify_eml.tpl17
-rw-r--r--view/it/strings.php2641
-rw-r--r--view/it/update_fail_eml.tpl20
-rw-r--r--view/it/wall_received_eml.tpl18
-rw-r--r--view/it/wall_received_html_body_eml.tpl24
-rw-r--r--view/it/wall_received_text_body_eml.tpl18
-rw-r--r--view/js/acl.js22
-rw-r--r--view/js/autocomplete.js217
-rw-r--r--view/js/jquery-compat.js71
-rw-r--r--view/js/main.js218
-rw-r--r--view/js/mod_admin.js3
-rw-r--r--view/js/mod_connedit.js45
-rw-r--r--view/js/mod_directory.js3
-rw-r--r--view/js/mod_events.js37
-rw-r--r--view/js/mod_filestorage.js1
-rw-r--r--view/js/mod_new_channel.js5
-rw-r--r--view/js/mod_photos.js17
-rw-r--r--view/js/mod_profiles.js3
-rw-r--r--view/js/mod_settings.js17
-rw-r--r--view/nb-no/follow_notify_eml.tpl14
-rw-r--r--view/nb-no/friend_complete_eml.tpl22
-rw-r--r--view/nb-no/intro_complete_eml.tpl22
-rw-r--r--view/nb-no/messages.po8668
-rw-r--r--view/nb-no/request_notify_eml.tpl17
-rw-r--r--view/nb-no/strings.php1828
-rw-r--r--view/nl/follow_notify_eml.tpl14
-rw-r--r--view/nl/friend_complete_eml.tpl22
-rw-r--r--view/nl/intro_complete_eml.tpl22
-rw-r--r--view/nl/lostpass_eml.tpl34
-rw-r--r--view/nl/messages.po9438
-rw-r--r--view/nl/passchanged_eml.tpl24
-rw-r--r--view/nl/register_open_eml.tpl39
-rw-r--r--view/nl/register_verify_eml.tpl19
-rw-r--r--view/nl/register_verify_member.tpl24
-rw-r--r--view/nl/request_notify_eml.tpl17
-rw-r--r--view/nl/strings.php2106
-rw-r--r--view/nl/update_fail_eml.tpl8
-rw-r--r--view/pdl/mod_connections.pdl1
-rw-r--r--view/php/theme_init.php19
-rw-r--r--view/pt-br/follow_notify_eml.tpl14
-rw-r--r--view/pt-br/friend_complete_eml.tpl23
-rw-r--r--view/pt-br/intro_complete_eml.tpl22
-rw-r--r--view/pt-br/messages.po6559
-rw-r--r--view/pt-br/request_notify_eml.tpl17
-rw-r--r--view/pt-br/strings.php1367
-rw-r--r--view/ru/follow_notify_eml.tpl14
-rw-r--r--view/ru/friend_complete_eml.tpl22
-rw-r--r--view/ru/intro_complete_eml.tpl22
-rw-r--r--view/ru/request_notify_eml.tpl17
-rw-r--r--view/sv/cmnt_received_eml.tpl17
-rw-r--r--view/sv/follow_notify_eml.tpl14
-rw-r--r--view/sv/friend_complete_eml.tpl22
-rw-r--r--view/sv/intro_complete_eml.tpl22
-rw-r--r--view/sv/lostpass_eml.tpl10
-rw-r--r--view/sv/mail_received_html_body_eml.tpl25
-rw-r--r--view/sv/mail_received_text_body_eml.tpl10
-rw-r--r--view/sv/messages.po10756
-rw-r--r--view/sv/passchanged_eml.tpl7
-rw-r--r--view/sv/register_open_eml.tpl12
-rw-r--r--view/sv/register_verify_eml.tpl5
-rw-r--r--view/sv/register_verify_member.tpl24
-rw-r--r--view/sv/request_notify_eml.tpl17
-rw-r--r--view/sv/strings.php2540
-rw-r--r--view/sv/update_fail_eml.tpl16
-rw-r--r--view/sv/wall_received_eml.tpl16
-rw-r--r--view/theme/redbasic/css/blockmode.css15
-rw-r--r--view/theme/redbasic/css/style.css772
-rw-r--r--view/theme/redbasic/php/config.php34
-rw-r--r--view/theme/redbasic/php/style.php71
-rw-r--r--view/theme/redbasic/php/theme_init.php5
-rw-r--r--view/theme/redbasic/schema/dark.php38
-rw-r--r--view/theme/redbasic/schema/simple_black_on_white.php190
-rw-r--r--view/theme/redbasic/schema/simple_green_on_black.php190
-rw-r--r--view/theme/redbasic/schema/simple_white_on_black.php190
-rw-r--r--view/theme/redbasic/tpl/theme_settings.tpl2
-rwxr-xr-xview/tpl/abook_edit.tpl65
-rw-r--r--view/tpl/achievements.tpl9
-rwxr-xr-xview/tpl/acl_selector.tpl8
-rwxr-xr-xview/tpl/admin_aside.tpl45
-rwxr-xr-xview/tpl/admin_channels.tpl2
-rwxr-xr-xview/tpl/admin_hubloc.tpl2
-rwxr-xr-xview/tpl/admin_logs.tpl2
-rwxr-xr-xview/tpl/admin_plugins.tpl2
-rwxr-xr-xview/tpl/admin_plugins_details.tpl2
-rwxr-xr-xview/tpl/admin_site.tpl15
-rwxr-xr-xview/tpl/admin_summary.tpl2
-rwxr-xr-xview/tpl/admin_users.tpl2
-rwxr-xr-xview/tpl/album_edit.tpl33
-rw-r--r--view/tpl/app.tpl2
-rw-r--r--view/tpl/app_select.tpl2
-rwxr-xr-xview/tpl/apps.tpl11
-rwxr-xr-xview/tpl/atom_feed.tpl1
-rwxr-xr-xview/tpl/atom_feed_dfrn.tpl29
-rw-r--r--view/tpl/attach_edit.tpl72
-rw-r--r--view/tpl/blocklist.tpl6
-rwxr-xr-xview/tpl/build_query.tpl2
-rwxr-xr-xview/tpl/categories_widget.tpl6
-rwxr-xr-xview/tpl/channel.tpl4
-rwxr-xr-xview/tpl/channel_import.tpl5
-rwxr-xr-xview/tpl/channels.tpl12
-rw-r--r--view/tpl/chatroom_new.tpl4
-rw-r--r--view/tpl/cloud_actionspanel.tpl42
-rw-r--r--view/tpl/cloud_directory.tpl84
-rw-r--r--view/tpl/cloud_header.tpl13
-rwxr-xr-xview/tpl/comment_item.tpl64
-rwxr-xr-xview/tpl/connection_template.tpl6
-rwxr-xr-xview/tpl/connections.tpl15
-rwxr-xr-xview/tpl/contact_slider.tpl2
-rwxr-xr-xview/tpl/contact_template.tpl2
-rw-r--r--view/tpl/contactsajax.tpl3
-rwxr-xr-xview/tpl/conv_item.tpl6
-rwxr-xr-xview/tpl/conv_list.tpl179
-rwxr-xr-xview/tpl/crepair.tpl45
-rw-r--r--view/tpl/design_tools.tpl2
-rw-r--r--view/tpl/diaspora_comment.tpl11
-rw-r--r--view/tpl/diaspora_comment_relay.tpl12
-rw-r--r--view/tpl/diaspora_conversation.tpl29
-rw-r--r--view/tpl/diaspora_like.tpl12
-rw-r--r--view/tpl/diaspora_like_relay.tpl13
-rw-r--r--view/tpl/diaspora_message.tpl13
-rw-r--r--view/tpl/diaspora_photo.tpl13
-rw-r--r--view/tpl/diaspora_post.tpl12
-rw-r--r--view/tpl/diaspora_relay_retraction.tpl10
-rw-r--r--view/tpl/diaspora_relayable_retraction.tpl11
-rw-r--r--view/tpl/diaspora_reshare.tpl13
-rw-r--r--view/tpl/diaspora_retract.tpl9
-rw-r--r--view/tpl/diaspora_share.tpl8
-rw-r--r--view/tpl/diaspora_signed_retract.tpl10
-rw-r--r--view/tpl/diaspora_vcard.tpl57
-rw-r--r--view/tpl/dir_sort_links.tpl10
-rw-r--r--view/tpl/directajax.tpl4
-rwxr-xr-xview/tpl/directory_header.tpl10
-rwxr-xr-xview/tpl/direntry.tpl30
-rwxr-xr-xview/tpl/direntry_large.tpl43
-rwxr-xr-xview/tpl/display-head.tpl4
-rwxr-xr-xview/tpl/edpage_head.tpl1
-rwxr-xr-xview/tpl/event_form.tpl30
-rwxr-xr-xview/tpl/event_head.tpl12
-rwxr-xr-xview/tpl/events-js.tpl14
-rwxr-xr-xview/tpl/failed_updates.tpl3
-rwxr-xr-xview/tpl/field_acheckbox.tpl4
-rwxr-xr-xview/tpl/field_checkbox.tpl5
-rw-r--r--view/tpl/field_colorinput.tpl2
-rwxr-xr-xview/tpl/field_combobox.tpl2
-rwxr-xr-xview/tpl/field_custom.tpl2
-rwxr-xr-xview/tpl/field_input.tpl2
-rwxr-xr-xview/tpl/field_intcheckbox.tpl5
-rwxr-xr-xview/tpl/field_password.tpl2
-rwxr-xr-xview/tpl/field_radio.tpl2
-rwxr-xr-xview/tpl/field_richtext.tpl2
-rwxr-xr-xview/tpl/field_select.tpl2
-rw-r--r--view/tpl/field_select_disabled.tpl2
-rw-r--r--view/tpl/field_select_grouped.tpl12
-rwxr-xr-xview/tpl/field_select_raw.tpl2
-rwxr-xr-xview/tpl/field_textarea.tpl2
-rwxr-xr-xview/tpl/field_themeselect.tpl2
-rwxr-xr-xview/tpl/field_yesno.tpl2
-rwxr-xr-xview/tpl/fileas_widget.tpl6
-rwxr-xr-xview/tpl/generic_links_widget.tpl4
-rwxr-xr-xview/tpl/group_side.tpl40
-rwxr-xr-xview/tpl/head.tpl7
-rwxr-xr-xview/tpl/hide_comments.tpl4
-rwxr-xr-xview/tpl/install_db.tpl2
-rwxr-xr-xview/tpl/install_settings.tpl3
-rwxr-xr-xview/tpl/intros.tpl17
-rwxr-xr-xview/tpl/intros_header.tpl1
-rwxr-xr-xview/tpl/jot-header.tpl7
-rwxr-xr-xview/tpl/jot.tpl87
-rwxr-xr-xview/tpl/jot_geotag.tpl2
-rwxr-xr-xview/tpl/js_strings.tpl1
-rw-r--r--view/tpl/layoutlist.tpl8
-rwxr-xr-xview/tpl/like_noshare.tpl4
-rw-r--r--view/tpl/list_things.tpl13
-rw-r--r--view/tpl/locmanage.tpl26
-rwxr-xr-xview/tpl/mail_list.tpl2
-rwxr-xr-xview/tpl/main_slider.tpl4
-rw-r--r--view/tpl/menulist.tpl7
-rwxr-xr-xview/tpl/message_side.tpl17
-rw-r--r--view/tpl/mitemedit.tpl2
-rwxr-xr-xview/tpl/msg-header.tpl32
-rwxr-xr-xview/tpl/nav.tpl64
-rwxr-xr-xview/tpl/netfriend.tpl14
-rwxr-xr-xview/tpl/new_channel.tpl9
-rwxr-xr-xview/tpl/nogroup-template.tpl12
-rwxr-xr-xview/tpl/notifications.tpl6
-rwxr-xr-xview/tpl/notifications_comments_item.tpl3
-rwxr-xr-xview/tpl/notifications_dislikes_item.tpl3
-rwxr-xr-xview/tpl/notifications_friends_item.tpl3
-rwxr-xr-xview/tpl/notifications_likes_item.tpl3
-rwxr-xr-xview/tpl/notifications_posts_item.tpl3
-rwxr-xr-xview/tpl/notify.tpl2
-rwxr-xr-xview/tpl/peoplefind.tpl29
-rwxr-xr-xview/tpl/photo_album.tpl33
-rwxr-xr-xview/tpl/photo_albums.tpl24
-rwxr-xr-xview/tpl/photo_item.tpl41
-rwxr-xr-xview/tpl/photo_top.tpl9
-rwxr-xr-xview/tpl/photo_view.tpl241
-rwxr-xr-xview/tpl/photos_recent.tpl24
-rwxr-xr-xview/tpl/photos_upload.tpl102
-rwxr-xr-xview/tpl/photosajax.tpl4
-rwxr-xr-xview/tpl/posted_date_widget.tpl56
-rw-r--r--view/tpl/profdef_edit.tpl16
-rwxr-xr-xview/tpl/profile_advanced.tpl448
-rwxr-xr-xview/tpl/profile_edit.tpl167
-rwxr-xr-xview/tpl/profile_entry.tpl3
-rw-r--r--view/tpl/profile_hide_friends.tpl20
-rwxr-xr-xview/tpl/profile_listing_header.tpl8
-rwxr-xr-xview/tpl/profile_vcard.tpl7
-rwxr-xr-xview/tpl/prv_message.tpl28
-rw-r--r--view/tpl/removeaccount.tpl22
-rw-r--r--view/tpl/safesearch.tpl4
-rw-r--r--view/tpl/saved_searches.tpl10
-rwxr-xr-xview/tpl/saved_searches_aside.tpl14
-rwxr-xr-xview/tpl/search_item.tpl2
-rw-r--r--view/tpl/searchbox.tpl12
-rw-r--r--view/tpl/select_timezone.tpl11
-rwxr-xr-xview/tpl/settings.tpl88
-rwxr-xr-xview/tpl/settings_account.tpl10
-rwxr-xr-xview/tpl/settings_addons.tpl2
-rwxr-xr-xview/tpl/settings_connectors.tpl3
-rwxr-xr-xview/tpl/settings_display.tpl11
-rwxr-xr-xview/tpl/settings_features.tpl4
-rwxr-xr-xview/tpl/settings_oauth.tpl2
-rwxr-xr-xview/tpl/siteinfo.tpl6
-rw-r--r--view/tpl/smarty3/README4
-rw-r--r--view/tpl/suggest_widget.tpl4
-rwxr-xr-xview/tpl/suggestions.tpl20
-rw-r--r--view/tpl/uexport.tpl9
-rwxr-xr-xview/tpl/viewcontact_template.tpl3
-rw-r--r--view/tpl/webpagelist.tpl5
-rw-r--r--view/tpl/xrd_diaspora.tpl3
-rwxr-xr-xview/tpl/xrd_person.tpl10
2895 files changed, 663457 insertions, 102490 deletions
diff --git a/.gitignore b/.gitignore
index 80fe3ec72..a12143ef5 100755
--- a/.gitignore
+++ b/.gitignore
@@ -14,6 +14,9 @@ compiled/
custom/
/store/
+# site apps
+apps/
+
# patch attempts
*.orig
*.rej
@@ -41,3 +44,9 @@ nbproject
#Kdevelop project files
*.kdev4
+
+# Ignore site TOS
+doc/SiteTOS.md
+
+#Ingore site theme schemas
+view/theme/redbasic/schema/default.php
diff --git a/README.md b/README.md
index 1e7e15ec0..12273801d 100644
--- a/README.md
+++ b/README.md
@@ -1,11 +1,13 @@
![the Red Matrix](images/rm.png)
-The RedMatrix (aka "red") is an open source webapp platform providing a complete **decentralised** publishing, sharing, and communications system. It combines communications (private messaging, chat and social networking), and media management (photos, events, files, web pages, app distribution) with enough features to make your head spin.
+One of the traditional problems with independent publishing on the internet has always been the fact that independent publishers often operate as isolated islands within their own website, and spend most of their resources attracting visitors. The rise of corporate providers and social networking services alleviated many of these problems; however centralisation has led to a situation where your content is no longer under your direct control. It is shared fully with corporate advertisers and governments, but ironically you are now often asked to pay money to ensure that your friends can see it. What if you could have advantages of scale and connections that centralisation typically offers whilst maintaining independent control over your own web presence?
-What makes the RedMatrix unique is what we call "magic authentication" - which is based on our groundbreaking work in decentralised identity services. This ties all RedMatrix sites and channels together into a single super-network where the boundaries between different websites are blurred or seemingly non-existent; where "who you are" has nothing to do with "what computer you're connected to", and where website content can adapt itself according to who is viewing it.
+The RedMatrix is a super network created from a huge number of smaller independent and autonomous websites - which are linked together into a cooperative publishing and social platform. It consists of an open source webapp providing a complete multi-user **decentralised** publishing, sharing, and communications system - known as a "hub". Each hub provides communications (private messaging, chat, blogging, forums, and social networking), along with media management (photos, events, files, web pages, shareable apps) for its members; all in a feature-rich platform. These hubs automatically reach out and connect with each other and the rest of the matrix. Privacy and content ownership always remain under the direct personal control of the individual; and permission to access any item can be granted or denied to anybody in the entire matrix.
-Warning: After experiencing magic authentication and nomadic identity, you may find it disconcerting and a bit "primitive" to go back to the old internet. You shouldn't need hundreds of different passwords to use the web ... or be totally isolated from your friends and family because a server or router in another country is having "*issues*".
+What makes the RedMatrix unique is what we call "magic authentication" - which is based on our groundbreaking work in decentralised identity services. No other platform provides this ability. Within the matrix the boundaries between different hubs are blurred or seemingly non-existent. Identity in the matrix is considered transient and potentially nomadic. "Who you are" has nothing to do with "what computer you're connected to", and website content can adapt itself according to who is viewing it. You have the ability to "clone" your identity to other hubs; which allows you to continue to communicate with your friends seamlessly if your primary hub is ever disabled (temporarily or permanently).
+
+The RedMatrix is ideal for communities of any size, from private individuals and families to online forums, business websites, and organisations. It can be used by anybody who has communications or web content that they wish to share, but where they desire complete control of whom they share it with.
-For the average person, the biggest advantage of decentralised identity is that you decide who you want to share your stuff with, and if somebody isn't on your list, they're not going to see it. It's all under your control (we're big on privacy). Use the RedMatrix as a social network or a business website or for personal cloud storage or media publishing - or any number of other uses; limited only by your imagination.
-
The Red Matrix is free and open source distributed under the MIT license.
+
+For a list of public hubs see [redmatrix.me/pubsites](https://redmatrix.me/pubsites). For installation instructions see [install/INSTALL.txt](install/INSTALL.txt)
diff --git a/app/admin.png b/app/admin.png
index f1954e52a..cde922e8e 100644
--- a/app/admin.png
+++ b/app/admin.png
Binary files differ
diff --git a/app/bookmarks.apd b/app/bookmarks.apd
index f126a35c5..6c3d718a8 100644
--- a/app/bookmarks.apd
+++ b/app/bookmarks.apd
@@ -1,4 +1,4 @@
url: $baseurl/bookmarks
requires: local_user
-name: Bookmarks
+name: View bookmarks
photo: $baseurl/app/bookmarks.png
diff --git a/app/bugreport.apd b/app/bugreport.apd
new file mode 100644
index 000000000..42c31f016
--- /dev/null
+++ b/app/bugreport.apd
@@ -0,0 +1,3 @@
+url: https://github.com/friendica/red/issues
+name: Bug Report
+photo: $baseurl/app/bugreport.png
diff --git a/app/bugreport.png b/app/bugreport.png
new file mode 100644
index 000000000..4b59da185
--- /dev/null
+++ b/app/bugreport.png
Binary files differ
diff --git a/app/chat.apd b/app/chat.apd
index 2eba8edba..249608f57 100644
--- a/app/chat.apd
+++ b/app/chat.apd
@@ -1,4 +1,4 @@
url: $baseurl/chat/$nick
requires: local_user
-name: Chat
+name: My chatrooms
photo: $baseurl/app/chat.png
diff --git a/app/chat.png b/app/chat.png
index aa03c75dd..9d3fdebd7 100644
--- a/app/chat.png
+++ b/app/chat.png
Binary files differ
diff --git a/app/connections.apd b/app/connections.apd
index 80f9b4570..146e553e5 100644
--- a/app/connections.apd
+++ b/app/connections.apd
@@ -1,4 +1,4 @@
url: $baseurl/connections
requires: local_user
-name: Address Book
+name: Connections
photo: $baseurl/app/connections.png
diff --git a/app/directory.png b/app/directory.png
index 2df872d94..659f69051 100644
--- a/app/directory.png
+++ b/app/directory.png
Binary files differ
diff --git a/app/events.png b/app/events.png
index 411ee51f9..a5670fd1e 100644
--- a/app/events.png
+++ b/app/events.png
Binary files differ
diff --git a/app/features.png b/app/features.png
index cdccd19f7..5faf14bc3 100644
--- a/app/features.png
+++ b/app/features.png
Binary files differ
diff --git a/app/help.png b/app/help.png
index e1348231c..6b9b1ccb6 100644
--- a/app/help.png
+++ b/app/help.png
Binary files differ
diff --git a/app/home.png b/app/home.png
index 3f1b864fc..4b45f2a7a 100644
--- a/app/home.png
+++ b/app/home.png
Binary files differ
diff --git a/app/invite.png b/app/invite.png
index 1cd9ce254..dbc2cbbfa 100644
--- a/app/invite.png
+++ b/app/invite.png
Binary files differ
diff --git a/app/lang.png b/app/lang.png
index 4c0b9aad1..89a61c26a 100644
--- a/app/lang.png
+++ b/app/lang.png
Binary files differ
diff --git a/app/mail.png b/app/mail.png
index 74fbdb03e..bbd9f8449 100644
--- a/app/mail.png
+++ b/app/mail.png
Binary files differ
diff --git a/app/manage.apd b/app/manage.apd
index ed6cb9f0a..2e0a92d74 100644
--- a/app/manage.apd
+++ b/app/manage.apd
@@ -1,4 +1,4 @@
url: $baseurl/manage
requires: local_user
-name: Channel Select
+name: Channel Manager
photo: $baseurl/app/manage.png
diff --git a/app/manage.png b/app/manage.png
index 4c4d13162..38a4dcbae 100644
--- a/app/manage.png
+++ b/app/manage.png
Binary files differ
diff --git a/app/mood.png b/app/mood.png
index 7df642b96..2a5c1aca6 100644
--- a/app/mood.png
+++ b/app/mood.png
Binary files differ
diff --git a/app/photos.png b/app/photos.png
index b4b2c519e..59b038288 100644
--- a/app/photos.png
+++ b/app/photos.png
Binary files differ
diff --git a/app/poke.png b/app/poke.png
index 1d264dd1b..9655d54ff 100644
--- a/app/poke.png
+++ b/app/poke.png
Binary files differ
diff --git a/app/post.png b/app/post.png
index 11d48e271..4a4355581 100644
--- a/app/post.png
+++ b/app/post.png
Binary files differ
diff --git a/app/pphoto.png b/app/pphoto.png
index eda371e8b..041ff1e0c 100644
--- a/app/pphoto.png
+++ b/app/pphoto.png
Binary files differ
diff --git a/app/probe.apd b/app/probe.apd
index c96399391..e2d2428a0 100644
--- a/app/probe.apd
+++ b/app/probe.apd
@@ -1,4 +1,4 @@
url: $baseurl/probe
requires: local_user
-name: Probe
+name: Remote diagnostics
photo: $baseurl/app/probe.png
diff --git a/app/probe.png b/app/probe.png
index 71a954bf8..21bd85cd9 100644
--- a/app/probe.png
+++ b/app/probe.png
Binary files differ
diff --git a/app/profile.apd b/app/profile.apd
index ce52f960b..d2bdf23a7 100644
--- a/app/profile.apd
+++ b/app/profile.apd
@@ -1,4 +1,4 @@
url: $baseurl/profile/$nick
requires: local_user
-name: Profile
-
+name: View profile
+photo: $baseurl/app/profile.png
diff --git a/app/profile.png b/app/profile.png
new file mode 100644
index 000000000..e6e137c82
--- /dev/null
+++ b/app/profile.png
Binary files differ
diff --git a/app/randprof.png b/app/randprof.png
index 3280ef8ee..7bb438dcd 100644
--- a/app/randprof.png
+++ b/app/randprof.png
Binary files differ
diff --git a/app/search.png b/app/search.png
index e483280ec..505d93c3f 100644
--- a/app/search.png
+++ b/app/search.png
Binary files differ
diff --git a/app/settings.png b/app/settings.png
index ff5d8e5d2..2ba11a79a 100644
--- a/app/settings.png
+++ b/app/settings.png
Binary files differ
diff --git a/app/storage.png b/app/storage.png
index c1f2df801..ad8b89f6a 100644
--- a/app/storage.png
+++ b/app/storage.png
Binary files differ
diff --git a/app/suggest.apd b/app/suggest.apd
index ff82a73d3..f4ca79410 100644
--- a/app/suggest.apd
+++ b/app/suggest.apd
@@ -1,4 +1,4 @@
url: $baseurl/suggest
requires: local_user
-name: Suggest
+name: Suggest channels
photo: $baseurl/app/suggest.png
diff --git a/app/suggest.png b/app/suggest.png
index 6868da30f..ca9180528 100644
--- a/app/suggest.png
+++ b/app/suggest.png
Binary files differ
diff --git a/app/webpages.apd b/app/webpages.apd
index 4241dbb8e..7c7528d6b 100644
--- a/app/webpages.apd
+++ b/app/webpages.apd
@@ -1,4 +1,4 @@
url: $baseurl/webpages/$nick
-requires: local_user
+requires: local_user, webpages
name: Webpages
photo: $baseurl/app/webpages.png
diff --git a/app/webpages.png b/app/webpages.png
index 460117bae..72a091831 100644
--- a/app/webpages.png
+++ b/app/webpages.png
Binary files differ
diff --git a/assets/home.html b/assets/home.html
index 9fc58f0e8..2c3aa6e69 100644
--- a/assets/home.html
+++ b/assets/home.html
@@ -36,58 +36,54 @@ body::after {
</style>
<script>
-
-var terms = new Array(
-"Internet-scale Privacy",
-"Social Networking",
-"Single Sign-On",
-"Photo Albums",
-"Decentralised",
-"Cloud Storage",
-"Own Your Content",
-"Blogging",
-"End-to-end Encryption",
-"Chatrooms",
-"Shareable Apps",
-"Cross-Site Access Control",
-"Unsend Private Mail",
-"Webpage Creation",
-"Content Management",
-"Message Expiration",
-"Games and Utilities",
-"Unincorporated",
-"Forums",
-"Like + Dislike",
-"Share Anything Digital",
-"Communications",
-"Identity-Aware Content",
-"Pseudonyms",
-"Multiple Identities",
-"No Advertising",
-"Rich Text Post/Comment",
-"Event Calendar",
-"Bookmarking",
-"Community Tagging",
-"Mirrored Directory",
-"Nomadic Identity",
-"Derivative Channels",
-"Customised Encryption",
-"Multiple Profiles",
-"Privacy Groups",
-"File Sharing",
-"MIT license",
-"Autonomy",
-"Affinity Filtering",
-"Friend Suggestions",
-"Cross-Site Auth",
-"Themes",
-"Plugins",
-"External API",
-"3rd Party Apps",
-"Open Source",
-null
-);
-
+var terms = new Array("Internet-scale Privacy",
+ "Social Networking",
+ "Single Sign-On",
+ "Photo Albums",
+ "Decentralised",
+ "Cloud Storage",
+ "Own Your Content",
+ "Blogging",
+ "End-to-end Encryption",
+ "Chatrooms",
+ "Shareable Apps",
+ "Cross-Site Access Control",
+ "Unsend Private Mail",
+ "Webpage Creation",
+ "Content Management",
+ "Message Expiration",
+ "Games and Utilities",
+ "Unincorporated",
+ "Forums",
+ "Like + Dislike",
+ "Share Anything Digital",
+ "Communications",
+ "Identity-Aware Content",
+ "Pseudonyms",
+ "Multiple Identities",
+ "No Advertising",
+ "Rich Text Post/Comment",
+ "Event Calendar",
+ "Bookmarking",
+ "Community Tagging",
+ "Mirrored Directory",
+ "Nomadic Identity",
+ "Derivative Channels",
+ "Customised Encryption",
+ "Multiple Profiles",
+ "Privacy Groups",
+ "File Sharing",
+ "MIT license",
+ "Autonomy",
+ "Affinity Filtering",
+ "Friend Suggestions",
+ "Cross-Site Auth",
+ "Themes",
+ "Plugins",
+ "External API",
+ "3rd Party Apps",
+ "Open Source",
+ null);
var r = 0;
var g = 0;
var b = 0;
@@ -104,23 +100,6 @@ var nindex = 0;
var firstTime = 1;
var curr = null;
-function update_element() {
-
- if(firstTime) {
- firstTime = 0;
- fadeout();
- return;
- }
- curr = terms[nindex];
- nindex ++;
- if(terms[nindex] == null)
- nindex = 0;
-
- var id = document.getElementById(element);
- id.innerHTML = curr;
- timer = setTimeout('fadein();',3);
-}
-
function fadeout() {
var id = document.getElementById(element);
@@ -157,19 +136,160 @@ function fadein() {
$(document).ready(function() {
timer = setTimeout('update_element();',2000);
+ var known = {
+ en: true, // ENGLISH
+ fr: true, // FRENCH
+ nl: true, // NETHERLANDS
+ sv: true // SWEDISH
+ // ADD YOUR LANGUAGE HERE.
+ };
+ // Figure out the language, default to English because that's
+ // what I speak.
+ var lang = (navigator.language || navigator.userLanguage || 'en').substr(0, 2);
+ if(!known[lang])
+ lang = 'en';
+ if(lang=="fr") // FRENCH TRANSLATIONS
+ terms = new Array("R&eacute;seau social",
+ "Authentification unique",
+ "Albums Photos",
+ "Decentralis&eacute;e",
+ "Entreposage dans le nuage",
+ "Vous avez le contr&ocirc;le sur vos partages",
+ "Blogue",
+ "Encryption des donn&eacute;es",
+ "Salle de clavardage",
+ "Partage d&rsquo;applications",
+ "Permissions actives sur toute la matrice",
+ "Reprise de courrier",
+ "Cr&eacute;ation de pages web",
+ "Gestion du contenu",
+ "Expiration des messages",
+ "Jeux et Utilitaires",
+ "Non-Incorpor&eacute;",
+ "Forums",
+ "J&rsquo;aime + Je D&eacute;teste",
+ "Partagez tous types de fichiers",
+ "Plateforme de communications",
+ "Le contenu s&rsquo;ajuste aux individus",
+ "Pseudonymes",
+ "Identit&eacute;s multiples",
+ "Aucune publicit&eacute;",
+ "&Eacute;diteur de texte enrichi (partages/commentaires)",
+ "Calendrier d&rsquo;&eacute;v&eacute;nements",
+ "Favoris",
+ "Suivre des personnes/communaut&eacute;s",
+ "R&eacute;pertoire d&rsquo;utilisateurs synchronis&eacute;",
+ "Identit&eacute; nomade",
+ "Canaux d&rsquo;int&eacute;r&ecirc;ts",
+ "Encryption du traffic (SSL)",
+ "Profils multiples",
+ "Groupes priv&eacute;s",
+ "Partage de fichiers",
+ "License MIT",
+ "Autonomie",
+ "Filtre selon les affinit&eacute;s",
+ "Suggestions d&rsquo;amis potentiel",
+ "Authentification sur tous les HUBs de la matrice",
+ "Th&egrave;mes",
+ "Plugins",
+ "API externe",
+ "Application Tierce Partie",
+ "Code Source Ouvert",
+ "Gratuit",
+ null);
+ else if (lang == "sv") // SWEDISH TRANSLATIONS
+ terms = new Array("Sekretess skalad f&ouml;r Internet",
+ "Socialt n&auml;tverkande",
+ "Single Sign-On",
+ "Fotoalbum",
+ "Decentraliserat",
+ "Molnlagring",
+ "Ditt eget inneh&aring;ll",
+ "Blogg",
+ "End-to-end-kryptering",
+ "Chattrum",
+ "Delbara till&auml;ggsprogram",
+ "Kontrollera beh&ouml;righet mellan webbplatser",
+ "&Aring;ngra privata meddelanden",
+ "Skapa webbsidor",
+ "Inneh&aring;llshantering",
+ "Tidsbegr&auml;nsade meddelanden",
+ "Spel och verktyg",
+ "Inte styrt av f&ouml;retag",
+ "Forum",
+ "Gilla + Ogilla",
+ "Dela allt som &auml;r digitalt",
+ "Kommunikation",
+ "Identitsmedvetet inneh&aring;ll",
+ "Pseudonymer",
+ "Multipla identiteter",
+ "Reklamfritt",
+ "Rich Text-inl&auml;gg/-kommentarer",
+ "H&auml;ndelsekalender",
+ "Bokm&auml;rken",
+ "Gemensam taggning",
+ "Speglad katalog",
+ "Nomadisk identitet",
+ "Avknoppade kanaler",
+ "Anpassad kryptering",
+ "Multipla profiler",
+ "Sekretessgrupper",
+ "Fildelning",
+ "MIT-licens",
+ "Sj&auml;lvst&auml;ndighet",
+ "Samh&ouml;righetsfiltrering",
+ "V&auml;nf&ouml;rslag",
+ "Fj&auml;rrinloggning",
+ "Teman",
+ "Till&auml;gg",
+ "Externt API",
+ "Tredjepartsappar",
+ "&Ouml;ppen k&auml;llkod",
+ null);
+
+ // Find all <div>s with a class of "wrapper" and lang attribute equal
+ // to `lang` and make them visibile.
+ $('div.wrapper[lang=' + lang + ']').show();
+
+ // Find all <div>s with a class of "wrapper" and lang attribute not
+ // equal to `lang` and make them invisibile.
+ $('div.wrapper[lang!=' + lang + ']').hide();
});
+function update_element() {
+
+ if(firstTime) {
+ firstTime = 0;
+ fadeout();
+ return;
+ }
+ curr = terms[nindex];
+ nindex ++;
+ if(terms[nindex] == null)
+ nindex = 0;
+
+ var id = document.getElementById(element);
+ id.innerHTML = curr;
+ timer = setTimeout('fadein();',3);
+}
-</script>
+</script>
<div style="margin-top: 50px;"></div>
<center>
+
<img style="width: 330px; margin-top: 30px; margin-bottom: 30px;" src="assets/hashlogo.png" >
<div id="word-flasher" style="font-size: 2.5em; font-weight: bold; margin-bottom: 30px;">&quot;The Network&quot;</div>
+
+<!-- TRANSLATIONS START HERE - REMEMBER TO ADD YOUR LANGUAGE IN THE FUNCTION ABOVE($(document).ready(function() ...)
+
+<!-- ENGLISH FRONTPAGE TRANSLATION STARTS HERE -->
+
+<div lang="en" class="wrapper">
<div class="tr" style="font-size: 1.4em; color: #666; margin-left: 75px; margin-right: 75px;">
-One of the traditional problems with independent publishing on the internet has always been the fact that independent publishers often operate as isolated islands within their own website, and spend most of their resources attracting visitors. The rise of corporate providers and social networking services alleviated many of these problems; however centralisation has led to a situation where your content where is no longer under your direct control. It is shared fully with corporate advertisers and governments, but ironically you are now often asked to pay money to ensure that your friends can see it. What if you could have advantages of scale and connections that centralisation offers whilst maintaining independent control over your own web presence?
+One of the traditional problems with independent publishing on the internet has always been the fact that independent publishers often operate as isolated islands within their own website, and spend most of their resources attracting visitors. The rise of corporate providers and social networking services alleviated many of these problems; however centralisation has led to a situation where your content is no longer under your direct control. It is shared fully with corporate advertisers and governments, but ironically you are now often asked to pay money to ensure that your friends can see it. What if you could have advantages of scale and connections that centralisation typically offers whilst maintaining independent control over your own web presence?
</div>
<br />
<div class="tr" style="font-size: 1.4em; color: #666; margin-left: 75px; margin-right: 75px;">
@@ -181,12 +301,100 @@ What makes the RedMatrix unique is what we call "magic authentication" - which i
</div>
<br />
<div class="tr" style="font-size: 1.4em; color: #666; margin-left: 75px; margin-right: 75px;">
-The RedMatrix is ideal for social communities of any size, from private individuals and families to online forums, business websites, and organisations. It can be used by anybody who has communications or web content that they wish to share, but where they desire complete control of whom they share it with.<br />
+The RedMatrix is ideal for communities of any size, from private individuals and families to online forums, business websites, and organisations. It can be used by anybody who has communications or web content that they wish to share, but where they desire complete control of whom they share it with.<br />
</div>
<br />
<div style="margin-bottom: 15px; color: #808080; font-size: 1.8em;"><strong>RedMatrix - &quot;The Network&quot;</strong></div>
-<div style="font-size: 1.4em;"><a href="pubsites" style="color: white; padding:10px; background-color: #c60032; border-radius: 10px;">Sign up now!</a></div>
+<div style="font-size: 1.4em;">
+<a href="register" style="color: white; padding:10px; background-color: #c60032; border-radius: 10px;">Sign up now!</a>
+<a href="donate" style="color: white; padding:10px; background-color: #c60032; border-radius: 10px;">Donate / Sponsor</a>
+</div>
+<div style="margin-top: 15px; margin-bottom: 15px;"><a href="pubsites">Public Sites</a> | <a href="https://redmatrix.me">Project Home</a> | <a href="https://github.com/friendica/red">Code</a> | <a href="https://zothub.com/channel/one">Developers</a></div>
+</div>
+<!-- FRENCH FRONTPAGE TRANSLATION STARTS HERE -->
-<div style="margin-top: 15px; margin-bottom: 15px;"><a href="pubsites">Public Sites</a> | <a href="https://redmatrix.me">Project Home</a> | <a href="https://github.com/friendica/red">Code</a> | <a href="https://zothub.com/channel/one">Developers</a></div></center>
+<div lang="fr" class="wrapper" style="display: none;">
+<div class="tr" style="font-size: 1.4em; color: #666; margin-left: 75px; margin-right: 75px;">
+La Matrice <span style="color: #c60032;">Rouge</span> &laquo; <span style="color: #c60032;">Red</span>Matrix &raquo; est une <strong>application web d&eacute;centralis&eacute;e</strong>. La centralisation des donn&eacute;es sur des serveurs corporatifs met en jeux votre vie priv&eacute;e et vous assujettit &agrave; la volont&eacute; d&#039;un tiers. Ainsi vos messages, fichiers, photos ne sont plus sous votre contr&ocirc;le et sont partag&eacute;s avec les agences de marketing ainsi que les gouvernements. La Matrice <span style="color: #c60032;">Rouge</span>, c&#039;est un moyen de prot&eacute;ger votre identit&eacute; ainsi que votre vie priv&eacute;e tout en conservant le plein contr&ocirc;le sur le partage de vos donn&eacute;es avec le monde.
+</div>
+<br />
+<div class="tr" style="font-size: 1.4em; color: #666; margin-left: 75px; margin-right: 75px;">
+La Matrice <span style="color: #c60032;">Rouge</span> est un r&eacute;seau constitu&eacute; de serveurs autonomes et ind&eacute;pendants. Ces serveurs, appel&eacute;s &laquo; hubs &raquo;, assurent la r&eacute;silience de vos donn&eacute;es sur le r&eacute;seau. Chacun de ces &laquo; hubs &raquo; garantit des fonctions de communications (Messages priv&eacute;s, clavardage, blogue, forums et toutes les fonctions des r&eacute;seaux sociaux) ainsi que des fonctions de gestions (photos, calendrier, partage de fichiers, cr&eacute;ation de pages web, cr&eacute;ation d&#039;applications) &agrave; ses membres. En tout temps, votre vie priv&eacute;e et le choix du partage de votre contenu sont sous votre contr&ocirc;le exclusif.
+</div>
+<br />
+<div class="tr" style="font-size: 1.4em; color: #666; margin-left: 75px; margin-right: 75px;">
+La Matrice <span style="color: #c60032;">Rouge</span> est unique; elle transporte votre identit&eacute; &agrave; l&#039;aide d'une m&eacute;thode d&#039;authentification innovatrice appel&eacute;e &laquo; authentification magique &raquo; - laquelle est le r&eacute;sultat de la recherche et du d&eacute;veloppement appliqu&eacute;e au service d&#039;<strong>identit&eacute; d&eacute;centralis&eacute;e</strong>. Aucune autre plateforme n&#039;offre ce type d&#039;identit&eacute; &laquo; nomade &raquo;. Ainsi, une fois authentifi&eacute;, vous avez le loisir de vous &laquo; promener &raquo; d&#039;un serveur &agrave; l&#039;autre sans avoir &agrave; reconfirmer votre identit&eacute;. De plus, la Matrice <span style="color: #c60032;">Rouge</span> vous permet de &laquo; cloner &raquo; votre identit&eacute; et de la porter sur un &laquo; hub &raquo; diff&eacute;rent de celui ou vous vous &ecirc;tes inscrit. Voil&agrave; encore un moyen de vous d&eacute;fendre contre toutes formes de censure pour pr&eacute;server votre identit&eacute;, vos listes d&#039;amis, vos publications, photos et fichiers advenant le cas ou votre &laquo; hub &raquo; pr&eacute;f&eacute;r&eacute; serait mis hors ligne. (temporairement ou permanemment).
+</div>
+<br />
+<div class="tr" style="font-size: 1.4em; color: #666; margin-left: 75px; margin-right: 75px;">
+La Matrice <span style="color: #c60032;">Rouge</span> est un outil id&eacute;al pour toutes les communaut&eacute;s en passant par les particuliers et les familles tout en incluant les forums, sites-web d'affaires ainsi que les organisations. C&#039;est une solution de remplacement, non n&eacute;gligeable, aux r&eacute;seaux sociaux actuels rendue accessible &agrave; tous ceux qui sont soucieux de leur vie priv&eacute;e et qui souhaitent conserver le contr&ocirc;le de leur pr&eacute;sence sur internet.<br />
+</div>
+<br />
+<div style="margin-bottom: 15px; color: #808080; font-size: 1.8em;"><strong>RedMatrix - &quot;The Network&quot;</strong></div>
+<div style="font-size: 1.4em;">
+<a href="register" style="color: white; padding:10px; background-color: #c60032; border-radius: 10px;">M'inscrire!</a>
+<a href="donate" style="color: white; padding:10px; background-color: #c60032; border-radius: 10px;">Dons / Sponsors</a>
+</div>
+<div style="margin-top: 15px; margin-bottom: 15px;"><a href="pubsites">Hubs public</a> | <a href="https://redmatrix.me">Le Projet</a> | <a href="https://github.com/friendica/red">Source</a> | <a href="https://zothub.com/channel/one">Developpeurs</a></div>
+</div>
+
+<!-- NETHERLANDS TRANSLATIONS STARTS HERE -->
+
+<div lang="nl" class="wrapper" style="display: none;">
+<div class="tr" style="font-size: 1.4em; color: #666; margin-left: 75px; margin-right: 75px;">
+Een van de traditionele problemen met onafhankelijke internetpublicaties is dat onafhankelijke publicisten met hun eigen website op een geïsoleerd eilandje zitten. Mede hierdoor zijn ze veel tijd en geld kwijt aan het lokken van bezoekers. De opkomst van grote commerciële internetdiensten en sociale netwerken hebben veel van deze problemen verzacht. Het gecentraliseerde karakter van deze diensten heeft er echter voor gezorgd dat jouw publicaties en overige gegevens niet meer direct door jou beheerd worden. Dit wordt allemaal op grote schaal met online advertentiebedrijven en overheden gedeeld, maar ironisch genoeg moet er tegenwoordig wel betaald worden om jouw vrienden en volgers jouw werk te kunnen laten vinden. Wat nou als je de voordelen van gecentraliseerde diensten, zoals de schaal en het grote bereik, kunt combineren met het behoud van eigen beheer over jouw aanwezigheid op internet?
+</div>
+<br />
+<div class="tr" style="font-size: 1.4em; color: #666; margin-left: 75px; margin-right: 75px;">
+De RedMatrix is een supernetwerk bestaande uit een enorme hoeveelheid kleinere onafhankelijke en autonome websites, die aan elkaar gekoppeld een co&ouml;peratief publicatie en sociaal platform vormen. Het bestaat uit een opensource webapplicatie die een compleet <strong>gedecentraliseerd</strong> multi-user publicatie-, communicatie- en social media-systeem biedt, een “hub†geheten. Elke hub verzorgt de communicatie (privéberichten, chatten, bloggen, forums en een sociaal netwerk) en het mediabeheer (foto's, agenda, webpagina's en apps) voor zijn leden; alles in een functie-rijke omgeving. Deze hubs maken automatisch contact met elkaar en de rest van de matrix. Het individu blijft altijd directe controle houden over zijn/haar privacy en eigendom; en aan elk item in de gehele matrix kan aan wie dan ook toegang verleend of geweigerd worden.
+</div>
+<br />
+<div class="tr" style="font-size: 1.4em; color: #666; margin-left: 75px; margin-right: 75px;">
+Wat de Red Matrix uniek maakt is de zogenaamde “magische authenticatieâ€. Gebaseerd op ons baanbrekende werk in gedecentraliseerde identificatie. Geen enkel ander platform biedt deze mogelijkheid. Binnen de matrix zijn de grenzen tussen verschillende websites vervaagd of lijken ze niet meer te bestaan. Een identiteit is binnen de matrix niet statisch en kan zelfs een nomadenbestaan leiden. “Wie je bent†heeft niets te maken met “welke computerserver je verbonden bent†en de inhoud van webpagina's kan zich hierdoor aanpassen aan wie er naar kijkt. Je hebt de mogelijkheid om jouw “identiteit†naar andere hubs te klonen; waardoor je zonder onderbrekingen kan blijven communiceren met je vrienden, wanneer jouw primaire hub is uitgeschakeld (tijdelijk of permanent).
+</div>
+<br />
+<div class="tr" style="font-size: 1.4em; color: #666; margin-left: 75px; margin-right: 75px;">
+De RedMatrix is ideaal voor groepen mensen van welke omvang dan ook, van kleine groepen vrienden en families, tot online forums, zakenwebsites, en organisaties. Het kan door iedereen gebruikt worden die wil communiceren of internetpublicaties wil delen, maar de volledige controle wenst met wie zij willen communiceren en delen.<br />
+</div>
+<br />
+<div style="margin-bottom: 15px; color: #808080; font-size: 1.8em;"><strong>RedMatrix - &quot;The Network&quot;</strong></div>
+<div style="font-size: 1.4em;">
+<a href="register" style="color: white; padding:10px; background-color: #c60032; border-radius: 10px;">Meld je nu aan!</a>
+<a href="donate" style="color: white; padding:10px; background-color: #c60032; border-radius: 10px;">schenking</a>
+</div>
+<div style="margin-top: 15px; margin-bottom: 15px;"><a href="pubsites">Andere openbare hubs</a> | <a href="https://redmatrix.me">Projectwebsite</a> | <a href="https://github.com/friendica/red">Broncode</a> | <a href="https://zothub.com/channel/one">Ontwikkelaars</a></div>
+</div>
+
+<!-- SWEDISH FRONTPAGE TRANSLATION STARTS HERE -->
+
+<div lang="sv" class="wrapper" style="display: none;">
+<div class="tr" style="font-size: 1.4em; color: #666; margin-left: 75px; margin-right: 75px;">
+Ett av de vanliga problemen med oberoende publicering p&aring; n&auml;tet har alltid varit det faktum att oberoende f&ouml;rfattare ofta &auml;r isolerade fr&aring;n varandra p&aring; sin egen webbplats och l&auml;gger det mesta av energin p&aring; att locka och attrahera bes&ouml;kare. Uppkomsten av vinstdrivande tj&auml;nster och s&aring; kallade sociala n&auml;tverk erbj&ouml;d en l&ouml;sning till m&aring;nga av dessa problem. Centraliseringen som p&aring;g&aring;tt har dock lett till att ditt inneh&aring;ll inte l&auml;ngre &auml;r under din direkta kontroll. Det &auml;r delat fullt ut med vinstdrivande annons&ouml;rer och myndigheter, men ironiskt nog uppmanas du ofta att betala pengar f&ouml;r att s&auml;kerst&auml;lla att dina v&auml;nner kan se ditt inneh&aring;ll. F&ouml;rest&auml;ll dig en situation d&auml;r du har f&ouml;rdelarna av den skalbarhet, kontakt och spridning som centraliseringen typiskt erbjuder, samtidigt som du inte ger avkall p&aring; kontroll &ouml;ver din egen n&auml;rvaro p&aring; Internet.
+</div>
+<br />
+<div class="tr" style="font-size: 1.4em; color: #666; margin-left: 75px; margin-right: 75px;">
+RedMatrix &auml;r ett n&auml;tverk sammansatt av ett stort antal mindre, oberoende och sj&auml;lvst&auml;ndiga webbplatser, sammankopplade till en samverkande publicerings- och kommunikationsplattform. Mjukvaran best&aring;r av en webbapplikation sl&auml;ppt som &ouml;ppen k&auml;llkod, som tillhandah&aring;ller ett <strong>decentraliserat</strong> fleranv&auml;ndarsystem f&ouml;r kommunikation, publicering och delning, och n&auml;r den k&ouml;rs utg&ouml;r en nod i n&auml;tverket. Varje nod erbjuder s&aring;v&auml;l kommunikationsverktyg (privata meddelanden, chatt, blogg, forum och traditionellt socialt n&auml;tverkande) som filhantering (foton, kalenderh&auml;ndelser, filer, webbsidor, delbara till&auml;ggsprogram) f&ouml;r alla medlemmar; alltihop i en sammanknuten plattform. Dessa noder tar automatiskt kontakt med varandra och resten av n&auml;tverket. Sekretess och inneh&aring;llsstyrning &auml;r alltid under din direkta personliga kontroll, och beh&ouml;righet till inl&auml;gg eller filer kan ges eller nekas vem som helst i n&auml;tverket.
+</div>
+<br />
+<div class="tr" style="font-size: 1.4em; color: #666; margin-left: 75px; margin-right: 75px;">
+Det som g&ouml;r RedMatrix unikt &auml;r vad vi kallar "magisk fj&auml;rrinloggning" - som &auml;r baserad p&aring; v&aring;rt banbrytande arbete med en decentraliserad identitetshantering. Ingen annan plattform vi k&auml;nner till erbjuder i dagsl&auml;get n&aring;got liknande. Inom n&auml;tverket &auml;r gr&auml;nserna mellan de olika noderna utsuddade eller till synes icke-existerande. En identitet i n&auml;tverket kan vara &ouml;verg&aring;ende och potentiellt nomadisk. "Vem du &auml;r" har inget att g&ouml;ra med "vilken dator du ansluter till inom n&auml;tverket" och webbsidornas inneh&aring;ll kan skapas s&aring; att det anpassar sig utifr&aring;n vem som tittar p&aring; det. Du har m&ouml;jlighet att "klona" din identitet till andra noder, vilket l&aring;ter dig forts&auml;tta att kommunicera med dina v&auml;nner utan avbrott om din prim&auml;ra nod skulle bli otillg&auml;nglig (tillf&auml;lligt eller permanent).
+</div>
+<br />
+<div class="tr" style="font-size: 1.4em; color: #666; margin-left: 75px; margin-right: 75px;">
+RedMatrix passar f&ouml;r grupper av vilken storlek som helst - alltifr&aring;n privatpersoner och familjer till n&auml;tforum, f&ouml;retagswebbplatser och organisationer. Det kan anv&auml;ndas av alla som har inneh&aring;ll de &ouml;nskar dela med sig av och samtidigt ha full kontroll &ouml;ver vem de delar det med.
+</div>
+<br />
+<div style="margin-bottom: 15px; color: #808080; font-size: 1.8em;"><strong>RedMatrix - "N&auml;tverket"</strong></div>
+<div style="font-size: 1.4em;">
+<a href="register" style="color: white; padding:10px; background-color: #c60032; border-radius: 10px;">Registrera dig nu!</a>
+<a href="donate" style="color: white; padding:10px; background-color: #c60032; border-radius: 10px;">Ge ett bidrag / Sponsra</a>
+</div>
+<div style="margin-top: 15px; margin-bottom: 15px;"><a href="pubsites">Offentliga noder</a> | <a href="https://redmatrix.me">Projektets hemsida</a> | <a href="https://github.com/friendica/red">Kod</a> | <a href="https://zothub.com/channel/one">Utvecklare</a></div>
+</div>
+<!-- INSERT NEW TRANSLATIONS HERE -->
+
+<!-- DO NOT REMOVE THE 2 LINES BELOW -->
+</div>
+</center>
diff --git a/boot.php b/boot.php
index af395f30b..54e5676e2 100755
--- a/boot.php
+++ b/boot.php
@@ -1,6 +1,8 @@
<?php
-/** @file */
-
+/** @file boot.php
+ *
+ * This file defines some global constants and includes the central App class.
+ */
/**
* Red Matrix.
@@ -25,7 +27,6 @@
* documented.
*/
-
require_once('include/config.php');
require_once('include/network.php');
require_once('include/plugin.php');
@@ -41,20 +42,30 @@ require_once('include/features.php');
require_once('include/taxonomy.php');
require_once('include/identity.php');
require_once('include/Contact.php');
+require_once('include/account.php');
-define ( 'RED_PLATFORM', 'Red Matrix' );
+define ( 'RED_PLATFORM', 'redmatrix' );
define ( 'RED_VERSION', trim(file_get_contents('version.inc')) . 'R');
define ( 'ZOT_REVISION', 1 );
-define ( 'DB_UPDATE_VERSION', 1118 );
-
-define ( 'EOL', '<br />' . "\r\n" );
-define ( 'ATOM_TIME', 'Y-m-d\TH:i:s\Z' );
+define ( 'DB_UPDATE_VERSION', 1131 );
+/**
+ * Constant with a HTML line break.
+ *
+ * Contains a HTML line break (br) element and a real carriage return with line
+ * feed for the source.
+ * This can be used in HTML and JavaScript where needed a line break.
+ *
+ * @var string
+ */
+define ( 'EOL', '<br>' . "\r\n" );
+define ( 'ATOM_TIME', 'Y-m-d\TH:i:s\Z' );
+//define ( 'NULL_DATE', '0000-00-00 00:00:00' );
define ( 'TEMPLATE_BUILD_PATH', 'store/[data]/smarty3' );
-define ( 'DIRECTORY_MODE_NORMAL', 0x0000); // This is technically DIRECTORY_MODE_TERTIARY, but it's the default, hence 0x0000
+define ( 'DIRECTORY_MODE_NORMAL', 0x0000); // This is technically DIRECTORY_MODE_TERTIARY, but it's the default, hence 0x0000
define ( 'DIRECTORY_MODE_PRIMARY', 0x0001);
define ( 'DIRECTORY_MODE_SECONDARY', 0x0002);
define ( 'DIRECTORY_MODE_STANDALONE', 0x0100);
@@ -71,10 +82,9 @@ $DIRECTORY_FALLBACK_SERVERS = array(
'https://zothub.com',
'https://zotid.net',
'https://redmatrix.nl',
- 'https://whogotzot.com',
- 'https://red.mariovavti.com',
'https://red.zottel.red',
- 'https://red.pixelbits.de'
+ 'https://red.pixelbits.de',
+ 'https://whogotzot.com'
);
@@ -196,7 +206,6 @@ define ( 'UPDATE_SUCCESS', 0);
define ( 'UPDATE_FAILED', 1);
-
define ( 'CLIENT_MODE_NORMAL', 0x0000);
define ( 'CLIENT_MODE_LOAD', 0x0001);
define ( 'CLIENT_MODE_UPDATE', 0x0002);
@@ -216,8 +225,9 @@ define ( 'PAGE_DIRECTORY_CHANNEL', 0x0008 ); // system channel used for director
define ( 'PAGE_PREMIUM', 0x0010 );
define ( 'PAGE_ADULT', 0x0020 );
define ( 'PAGE_CENSORED', 0x0040 ); // Site admin has blocked this channel from appearing in casual search results and site feeds
-
define ( 'PAGE_SYSTEM', 0x1000 );
+define ( 'PAGE_HUBADMIN', 0x2000 ); // set this to indicate a preferred admin channel rather than the
+ // default channel of any accounts with the admin role.
define ( 'PAGE_REMOVED', 0x8000 );
@@ -229,6 +239,9 @@ define ( 'PHOTO_NORMAL', 0x0000 );
define ( 'PHOTO_PROFILE', 0x0001 );
define ( 'PHOTO_XCHAN', 0x0002 );
define ( 'PHOTO_THING', 0x0004 );
+define ( 'PHOTO_ADULT', 0x0008 );
+
+define ( 'PHOTO_FLAG_OS', 0x4000 );
/**
* Menu types
@@ -261,13 +274,11 @@ define ( 'NETWORK_PHANTOM', 'unkn'); // Place holder
* Permissions
*/
-
define ( 'PERMS_R_STREAM', 0x00001);
define ( 'PERMS_R_PROFILE', 0x00002);
define ( 'PERMS_R_PHOTOS', 0x00004);
define ( 'PERMS_R_ABOOK', 0x00008);
-
define ( 'PERMS_W_STREAM', 0x00010);
define ( 'PERMS_W_WALL', 0x00020);
define ( 'PERMS_W_TAGWALL', 0x00040);
@@ -304,7 +315,7 @@ define ( 'ABOOK_FLAG_ARCHIVED' , 0x0008);
define ( 'ABOOK_FLAG_PENDING' , 0x0010);
define ( 'ABOOK_FLAG_UNCONNECTED', 0x0020);
define ( 'ABOOK_FLAG_SELF' , 0x0080);
-
+define ( 'ABOOK_FLAG_FEED' , 0x0100);
define ( 'MAIL_DELETED', 0x0001);
@@ -319,7 +330,6 @@ define ( 'ATTACH_FLAG_DIR', 0x0001);
define ( 'ATTACH_FLAG_OS', 0x0002);
-
define ( 'MENU_ITEM_ZID', 0x0001);
define ( 'MENU_ITEM_NEWWIN', 0x0002);
define ( 'MENU_ITEM_CHATROOM', 0x0004);
@@ -334,13 +344,11 @@ define ( 'POLL_MULTIPLE_CHOICE', 0x0004);
define ( 'POLL_OVERWRITE', 0x8000); // If you vote twice remove the prior entry
-
define ( 'UPDATE_FLAGS_UPDATED', 0x0001);
define ( 'UPDATE_FLAGS_FORCED', 0x0002);
define ( 'UPDATE_FLAGS_DELETED', 0x1000);
-
define ( 'DROPITEM_NORMAL', 0);
define ( 'DROPITEM_PHASE1', 1);
define ( 'DROPITEM_PHASE2', 2);
@@ -376,6 +384,22 @@ define ( 'NOTIFY_POKE', 0x0200 );
define ( 'NOTIFY_SYSTEM', 0x8000 );
+/**
+ * visual notification options
+ */
+
+define ( 'VNOTIFY_NETWORK', 0x0001 );
+define ( 'VNOTIFY_CHANNEL', 0x0002 );
+define ( 'VNOTIFY_MAIL', 0x0004 );
+define ( 'VNOTIFY_EVENT', 0x0008 );
+define ( 'VNOTIFY_EVENTTODAY', 0x0010 );
+define ( 'VNOTIFY_BIRTHDAY', 0x0020 );
+define ( 'VNOTIFY_SYSTEM', 0x0040 );
+define ( 'VNOTIFY_INFO', 0x0080 );
+define ( 'VNOTIFY_ALERT', 0x0100 );
+define ( 'VNOTIFY_INTRO', 0x0200 );
+define ( 'VNOTIFY_REGISTER', 0x0400 );
+
// We need a flag to designate that a site is a
// global directory mirror, but probably doesn't
@@ -396,6 +420,7 @@ define ( 'XCHAN_FLAGS_ORPHAN', 0x0002);
define ( 'XCHAN_FLAGS_CENSORED', 0x0004);
define ( 'XCHAN_FLAGS_SELFCENSORED', 0x0008);
define ( 'XCHAN_FLAGS_SYSTEM', 0x0010);
+define ( 'XCHAN_FLAGS_PUBFORUM', 0x0020);
define ( 'XCHAN_FLAGS_DELETED', 0x1000);
/*
* Traficlights for Administration of HubLoc
@@ -429,7 +454,6 @@ define ( 'TERM_OBJ_OBJECT', 5 );
define ( 'TERM_OBJ_THING', 6 );
define ( 'TERM_OBJ_APP', 7 );
-
/**
* various namespaces we may need to parse
*/
@@ -449,6 +473,8 @@ define ( 'NAMESPACE_FEED', 'http://schemas.google.com/g/2010#updates-
define ( 'NAMESPACE_OSTATUS', 'http://ostatus.org/schema/1.0' );
define ( 'NAMESPACE_STATUSNET', 'http://status.net/schema/api/1/' );
define ( 'NAMESPACE_ATOM1', 'http://www.w3.org/2005/Atom' );
+define ( 'NAMESPACE_YMEDIA', 'http://search.yahoo.com/mrss/' );
+
/**
* activity stream defines
*/
@@ -492,7 +518,6 @@ define ( 'GRAVITY_PARENT', 0);
define ( 'GRAVITY_LIKE', 3);
define ( 'GRAVITY_COMMENT', 6);
-
/**
* Account Flags
*/
@@ -550,7 +575,12 @@ define ( 'ITEM_NOCOMMENT', 0x0800); // commenting/followups are disabled
define ( 'ITEM_OBSCURED', 0x1000); // bit-mangled to protect from casual browsing by site admin
define ( 'ITEM_VERIFIED', 0x2000); // Signature verification was successful
define ( 'ITEM_RETAINED', 0x4000); // We looked at this item once to decide whether or not to expire it, and decided not to.
+define ( 'ITEM_RSS', 0x8000); // Item comes from a feed. Use this to decide whether to link the title
// Don't make us evaluate this same item again.
+
+define ( 'DBTYPE_MYSQL', 0 );
+define ( 'DBTYPE_POSTGRES', 1 );
+
/**
*
* Reverse the effect of magic_quotes_gpc if it is enabled.
@@ -566,7 +596,6 @@ function startup() {
@set_time_limit(0);
if(function_exists ('ini_set')) {
-
// This has to be quite large to deal with embedded private photos
@ini_set('pcre.backtrack_limit', 500000);
@@ -592,14 +621,13 @@ function startup() {
}
unset($process);
}
-
}
/**
- *
* class: App
*
- * Our main application structure for the life of this page
+ * @brief Our main application structure for the life of this page.
+ *
* Primarily deals with the URL that got us here
* and tries to make some sense of it, and
* stores our page contents and config storage
@@ -607,8 +635,6 @@ function startup() {
* before we spit the page out.
*
*/
-
-
class App {
public $install = false; // true if we are installing the software
@@ -620,10 +646,9 @@ class App {
public $poi = null; // "person of interest", generally a referenced connection
public $layout = array(); // Comanche parsed template
-
private $perms = null; // observer permissions
private $widgets = array(); // widgets for this page
- private $widgetlist = null; // widget ordering and inclusion directives
+ //private $widgetlist = null; // widget ordering and inclusion directives
public $groups;
public $language;
@@ -649,30 +674,34 @@ class App {
public $timezone;
public $interactive = true;
public $plugins;
- private $apps = array();
+ private $apps = array();
public $identities;
public $css_sources = array();
public $js_sources = array();
public $theme_info = array();
+ public $is_sys = false;
+ public $nav_sel;
- public $nav_sel;
-
- public $category;
+ public $category;
// Allow themes to control internal parameters
// by changing App values in theme.php
- public $sourcename = '';
- public $videowidth = 425;
- public $videoheight = 350;
- public $force_max_items = 0;
- public $theme_thread_allow = true;
-
- // An array for all theme-controllable parameters
- // Mostly unimplemented yet. Only options 'template_engine' and
- // beyond are used.
+ public $sourcename = '';
+ public $videowidth = 425;
+ public $videoheight = 350;
+ public $force_max_items = 0;
+ public $theme_thread_allow = true;
- private $theme = array(
+ /**
+ * @brief An array for all theme-controllable parameters
+ *
+ * Mostly unimplemented yet. Only options 'template_engine' and
+ * beyond are used.
+ *
+ * @var array
+ */
+ private $theme = array(
'sourcename' => '',
'videowidth' => 425,
'videoheight' => 350,
@@ -682,9 +711,17 @@ class App {
'template_engine' => 'smarty3',
);
- // array of registered template engines ('name'=>'class name')
+ /**
+ * array of registered template engines ('name'=>'class name')
+ *
+ * @var array
+ */
public $template_engines = array();
- // array of instanced template engines ('name'=>'instance')
+ /**
+ * array of instanced template engines ('name'=>'instance')
+ *
+ * @var array
+ */
public $template_engine_instance = array();
private $ldelim = array(
@@ -700,22 +737,13 @@ class App {
private $hostname;
private $baseurl;
private $path;
- private $db;
-
- private $curl_code;
- private $curl_headers;
-
- private $cached_profile_image;
- private $cached_profile_picdate;
-
-
+ /**
+ * App constructor.
+ */
function __construct() {
-
- global $default_timezone;
- $this->timezone = ((x($default_timezone)) ? $default_timezone : 'UTC');
-
- date_default_timezone_set($this->timezone);
+ // we'll reset this after we read our config file
+ date_default_timezone_set('UTC');
$this->config = array('system'=>array());
$this->page = array();
@@ -732,7 +760,6 @@ class App {
. 'library/langdet' . PATH_SEPARATOR
. '.' );
-
$this->scheme = 'http';
if(x($_SERVER,'HTTPS') && $_SERVER['HTTPS'])
$this->scheme = 'https';
@@ -756,8 +783,8 @@ class App {
set_include_path("include/$this->hostname" . PATH_SEPARATOR . get_include_path());
- if((x($_SERVER,'QUERY_STRING')) && substr($_SERVER['QUERY_STRING'],0,2) === "q=") {
- $this->query_string = substr($_SERVER['QUERY_STRING'],2);
+ if((x($_SERVER,'QUERY_STRING')) && substr($_SERVER['QUERY_STRING'], 0, 2) === "q=") {
+ $this->query_string = substr($_SERVER['QUERY_STRING'], 2);
// removing trailing / - maybe a nginx problem
if (substr($this->query_string, 0, 1) == "/")
$this->query_string = substr($this->query_string, 1);
@@ -767,9 +794,8 @@ class App {
// unix style "homedir"
- if(substr($this->cmd,0,1) === '~')
- $this->cmd = 'channel/' . substr($this->cmd,1);
-
+ if(substr($this->cmd, 0, 1) === '~')
+ $this->cmd = 'channel/' . substr($this->cmd, 1);
/**
@@ -799,14 +825,13 @@ class App {
$this->module = 'home';
}
-
/**
* See if there is any page number information, and initialise
* pagination
*/
$this->pager['page'] = ((x($_GET,'page') && intval($_GET['page']) > 0) ? intval($_GET['page']) : 1);
- $this->pager['itemspage'] = 50;
+ $this->pager['itemspage'] = 60;
$this->pager['start'] = ($this->pager['page'] * $this->pager['itemspage']) - $this->pager['itemspage'];
if($this->pager['start'] < 0)
$this->pager['start'] = 0;
@@ -836,26 +861,24 @@ class App {
}
function get_baseurl($ssl = false) {
-
-
if(is_array($this->config)
&& array_key_exists('system',$this->config)
&& is_array($this->config['system'])
&& array_key_exists('baseurl',$this->config['system'])
&& strlen($this->config['system']['baseurl'])) {
$url = $this->config['system']['baseurl'];
+
return $url;
}
-
$scheme = $this->scheme;
$this->baseurl = $scheme . "://" . $this->hostname . ((isset($this->path) && strlen($this->path)) ? '/' . $this->path : '' );
+
return $this->baseurl;
}
function set_baseurl($url) {
-
if(is_array($this->config)
&& array_key_exists('system',$this->config)
&& is_array($this->config['system'])
@@ -877,7 +900,6 @@ class App {
if(x($parsed,'path'))
$this->path = trim($parsed['path'],'\\/');
}
-
}
function get_hostname() {
@@ -889,7 +911,7 @@ class App {
}
function set_path($p) {
- $this->path = trim(trim($p),'/');
+ $this->path = trim(trim($p), '/');
}
function get_path() {
@@ -912,7 +934,6 @@ class App {
return $this->channel;
}
-
function set_observer($xchan) {
$this->observer = $xchan;
}
@@ -952,9 +973,10 @@ class App {
function get_widgets($location = '') {
if($location && count($this->widgets)) {
$ret = array();
- foreach($widgets as $w)
- if($w['location'] == $location)
+ foreach($this->widgets as $w) {
+ if ($w['location'] == $location)
$ret[] = $w;
+ }
$arr = array('location' => $location, 'widgets' => $ret);
call_hooks('get_widgets', $arr);
return $arr['widgets'];
@@ -975,9 +997,13 @@ class App {
function build_pagehead() {
- $interval = ((local_user()) ? get_pconfig(local_user(),'system','update_interval') : 40000);
+ $user_scalable = ((local_user()) ? get_pconfig(local_user(),'system','user_scalable') : 1);
+ if ($user_scalable === false)
+ $user_scalable = 1;
+
+ $interval = ((local_user()) ? get_pconfig(local_user(),'system','update_interval') : 80000);
if($interval < 10000)
- $interval = 40000;
+ $interval = 80000;
if(! x($this->page,'title'))
$this->page['title'] = $this->config['system']['sitename'];
@@ -988,6 +1014,7 @@ class App {
*/
$tpl = get_markup_template('head.tpl');
$this->page['htmlhead'] = replace_macros($tpl, array(
+ '$user_scalable' => $user_scalable,
'$baseurl' => $this->get_baseurl(),
'$local_user' => local_user(),
'$generator' => RED_PLATFORM . ' ' . RED_VERSION,
@@ -997,11 +1024,11 @@ class App {
'$head_js' => head_get_js(),
'$js_strings' => js_strings(),
'$zid' => get_my_address(),
+ '$channel_id' => $this->profile['uid'],
)) . $this->page['htmlhead'];
// always put main.js at the end
$this->page['htmlhead'] .= head_get_main_js();
-
}
/**
@@ -1011,11 +1038,11 @@ class App {
* @param string $name
*/
function register_template_engine($class, $name = '') {
- if ($name===""){
+ if ($name === ""){
$v = get_class_vars( $class );
- if(x($v,"name")) $name = $v['name'];
+ if(x($v, "name")) $name = $v['name'];
}
- if ($name===""){
+ if ($name === ""){
echo "template engine <tt>$class</tt> cannot be registered without a name.\n";
killme();
}
@@ -1026,11 +1053,12 @@ class App {
* return template engine instance. If $name is not defined,
* return engine defined by theme, or default
*
- * @param strin $name Template engine name
+ * @param string $name Template engine name
+ *
* @return object Template Engine instance
*/
function template_engine($name = ''){
- if ($name!=="") {
+ if ($name !== "") {
$template_engine = $name;
} else {
$template_engine = 'smarty3';
@@ -1053,6 +1081,11 @@ class App {
echo "template engine <tt>$template_engine</tt> is not registered!\n"; killme();
}
+ /**
+ * @brief Returns the active template engine.
+ *
+ * @return string
+ */
function get_template_engine() {
return $this->theme['template_engine'];
}
@@ -1071,6 +1104,7 @@ class App {
break;
}*/
}
+
function get_template_ldelim($engine = 'smarty3') {
return $this->ldelim[$engine];
}
@@ -1081,7 +1115,6 @@ class App {
function head_set_icon($icon) {
$this->data['pageicon'] = $icon;
-
}
function head_get_icon() {
@@ -1091,33 +1124,43 @@ class App {
return $icon;
}
-}
-
+} // End App class
-// retrieve the App structure
-// useful in functions which require it but don't get it passed to them
+/**
+ * @brief Retrieve the App structure.
+ *
+ * Useful in functions which require it but don't get it passed to them
+ *
+ * @return App
+ */
function get_app() {
global $a;
return $a;
}
-
-// Multi-purpose function to check variable state.
-// Usage: x($var) or $x($array,'key')
-// returns false if variable/key is not set
-// if variable is set, returns 1 if has 'non-zero' value, otherwise returns 0.
-// e.g. x('') or x(0) returns 0;
-
-
-function x($s,$k = NULL) {
- if($k != NULL) {
- if((is_array($s)) && (array_key_exists($k,$s))) {
+/**
+ * @brief Multi-purpose function to check variable state.
+ *
+ * Usage: x($var) or $x($array, 'key')
+ *
+ * returns false if variable/key is not set
+ * if variable is set, returns 1 if has 'non-zero' value, otherwise returns 0.
+ * e.g. x('') or x(0) returns 0;
+ *
+ * @param string|array $s variable to check
+ * @param string $k key inside the array to check
+ *
+ * @return bool|int
+ */
+function x($s, $k = null) {
+ if($k != null) {
+ if((is_array($s)) && (array_key_exists($k, $s))) {
if($s[$k])
return (int) 1;
return (int) 0;
- }
+ }
return false;
}
else {
@@ -1134,7 +1177,6 @@ function x($s,$k = NULL) {
// called from db initialisation if db is dead.
-
function system_unavailable() {
include('include/system_unavailable.php');
system_down();
@@ -1144,6 +1186,7 @@ function system_unavailable() {
function clean_urls() {
global $a;
+
// if($a->config['system']['clean_urls'])
return true;
// return false;
@@ -1151,32 +1194,51 @@ function clean_urls() {
function z_path() {
global $a;
+
$base = $a->get_baseurl();
if(! clean_urls())
$base .= '/?q=';
+
return $base;
}
+/**
+ * @brief Returns the baseurl.
+ *
+ * @see App::get_baseurl()
+ *
+ * @return string
+ */
function z_root() {
global $a;
return $a->get_baseurl();
}
+/**
+ * @brief Return absolut URL for given $path.
+ *
+ * @param string $path
+ *
+ * @return string
+ */
function absurl($path) {
- if(strpos($path,'/') === 0)
+ if(strpos($path, '/') === 0)
return z_path() . $path;
+
return $path;
}
-function os_mkdir($path,$mode = 0777,$recursive = false) {
+function os_mkdir($path, $mode = 0777, $recursive = false) {
$oldumask = @umask(0);
@mkdir($path, $mode, $recursive);
@umask($oldumask);
}
-
-
-
+/**
+ * @brief Function to check if request was an AJAX (xmlhttprequest) request.
+ *
+ * @return boolean
+ */
function is_ajax() {
return (!empty($_SERVER['HTTP_X_REQUESTED_WITH']) && strtolower($_SERVER['HTTP_X_REQUESTED_WITH']) == 'xmlhttprequest');
}
@@ -1186,7 +1248,6 @@ function is_ajax() {
// base url for use in cmdline programs which don't have
// $_SERVER variables, and synchronising the state of installed plugins.
-
function check_config(&$a) {
$build = get_config('system','db_version');
@@ -1196,21 +1257,22 @@ function check_config(&$a) {
$saved = get_config('system','urlverify');
if(! $saved)
set_config('system','urlverify',bin2hex(z_root()));
+
if(($saved) && ($saved != bin2hex(z_root()))) {
// our URL changed. Do something.
$oldurl = hex2bin($saved);
logger('Baseurl changed!');
- $oldhost = substr($oldurl,strpos($oldurl,'//')+2);
- $host = substr(z_root(),strpos(z_root(),'//')+2);
+ $oldhost = substr($oldurl, strpos($oldurl, '//') + 2);
+ $host = substr(z_root(), strpos(z_root(), '//') + 2);
$is_ip_addr = ((preg_match("/^(\d{1,3})\.(\d{1,3})\.(\d{1,3})\.(\d{1,3})$/",$host)) ? true : false);
$was_ip_addr = ((preg_match("/^(\d{1,3})\.(\d{1,3})\.(\d{1,3})\.(\d{1,3})$/",$oldhost)) ? true : false);
// only change the url to an ip address if it was already an ip and not a dns name
if((! $is_ip_addr) || ($is_ip_addr && $was_ip_addr)) {
fix_system_urls($oldurl,z_root());
- set_config('system','urlverify',bin2hex(z_root()));
+ set_config('system', 'urlverify', bin2hex(z_root()));
}
else
logger('Attempt to change baseurl from a DNS name to an IP address was refused.');
@@ -1225,8 +1287,8 @@ function check_config(&$a) {
// so we just need to keep this around a couple of weeks until the hubs that
// already exist have one
$syschan_exists = get_sys_channel();
- if (! $syschan_exists)
- create_sys_channel();
+ if (! $syschan_exists)
+ create_sys_channel();
if($build != DB_UPDATE_VERSION) {
$stored = intval($build);
@@ -1297,7 +1359,6 @@ function check_config(&$a) {
}
else
set_config('database','update_r' . $x, 'success');
-
}
}
set_config('system','db_version', DB_UPDATE_VERSION);
@@ -1325,11 +1386,11 @@ function check_config(&$a) {
else
$installed = array();
- $plugins = get_config('system','addon');
+ $plugins = get_config('system', 'addon');
$plugins_arr = array();
if($plugins)
- $plugins_arr = explode(',',str_replace(' ', '',$plugins));
+ $plugins_arr = explode(',', str_replace(' ', '', $plugins));
$a->plugins = $plugins_arr;
@@ -1337,7 +1398,7 @@ function check_config(&$a) {
if(count($installed)) {
foreach($installed as $i) {
- if(! in_array($i['name'],$plugins_arr)) {
+ if(! in_array($i['name'], $plugins_arr)) {
unload_plugin($i['name']);
}
else {
@@ -1348,20 +1409,17 @@ function check_config(&$a) {
if(count($plugins_arr)) {
foreach($plugins_arr as $p) {
- if(! in_array($p,$installed_arr)) {
+ if(! in_array($p, $installed_arr)) {
load_plugin($p);
}
}
}
-
load_hooks();
- return;
}
-
-function fix_system_urls($oldurl,$newurl) {
+function fix_system_urls($oldurl, $newurl) {
require_once('include/crypto.php');
@@ -1409,7 +1467,7 @@ function fix_system_urls($oldurl,$newurl) {
$replace_xchan_url = ((strpos($rr['xchan_url'],$oldurl) !== false) ? true : false);
- $x = q("update xchan set xchan_addr = '%s', xchan_url = '%s', xchan_connurl = '%s', xchan_follow = '%s', xchan_connpage = '%s', xchan_photo_l = '%s', xchan_photo_m = '%s', xchan_photo_s = '%s', xchan_photo_date = '%s' where xchan_hash = '%s' limit 1",
+ $x = q("update xchan set xchan_addr = '%s', xchan_url = '%s', xchan_connurl = '%s', xchan_follow = '%s', xchan_connpage = '%s', xchan_photo_l = '%s', xchan_photo_m = '%s', xchan_photo_s = '%s', xchan_photo_date = '%s' where xchan_hash = '%s'",
dbesc($channel_address . '@' . $rhs),
dbesc(($replace_xchan_url) ? str_replace($oldurl,$newurl,$rr['xchan_url']) : $rr['xchan_url']),
dbesc(str_replace($oldurl,$newurl,$rr['xchan_connurl'])),
@@ -1422,7 +1480,7 @@ function fix_system_urls($oldurl,$newurl) {
dbesc($rr['xchan_hash'])
);
- $y = q("update hubloc set hubloc_addr = '%s', hubloc_url = '%s', hubloc_url_sig = '%s', hubloc_host = '%s', hubloc_callback = '%s' where hubloc_hash = '%s' and hubloc_url = '%s' limit 1",
+ $y = q("update hubloc set hubloc_addr = '%s', hubloc_url = '%s', hubloc_url_sig = '%s', hubloc_host = '%s', hubloc_callback = '%s' where hubloc_hash = '%s' and hubloc_url = '%s'",
dbesc($channel_address . '@' . $rhs),
dbesc($newurl),
dbesc(base64url_encode(rsa_sign($newurl,$c[0]['channel_prvkey']))),
@@ -1444,18 +1502,15 @@ function fix_system_urls($oldurl,$newurl) {
}
-
-
// wrapper for adding a login box. If $register == true provide a registration
// link. This will most always depend on the value of $a->config['system']['register_policy'].
// returns the complete html for inserting into the page
-
function login($register = false, $form_id = 'main-login', $hiddens=false) {
$a = get_app();
- $o = "";
+ $o = '';
$reg = false;
- $reglink = get_config('system','register_link');
+ $reglink = get_config('system', 'register_link');
if(! strlen($reglink))
$reglink = 'register';
@@ -1471,18 +1526,18 @@ function login($register = false, $form_id = 'main-login', $hiddens=false) {
$tpl = get_markup_template("logout.tpl");
}
else {
- $a->page['htmlhead'] .= replace_macros(get_markup_template("login_head.tpl"),array(
- '$baseurl' => $a->get_baseurl(true)
- ));
+// There's no such thing as login_head.tpl, has never been in Red, removed from Friendica 1 Jun 2013...
+
+// $a->page['htmlhead'] .= replace_macros(get_markup_template("login_head.tpl"), array(
+// '$baseurl' => $a->get_baseurl(true)
+// ));
$tpl = get_markup_template("login.tpl");
if(strlen($a->query_string))
- $_SESSION['login_return_url'] = $a->query_string;
+ $_SESSION['login_return_url'] = $a->query_string;
}
-
$o .= replace_macros($tpl,array(
-
'$dest_url' => $dest_url,
'$logout' => t('Logout'),
'$login' => t('Login'),
@@ -1491,102 +1546,119 @@ function login($register = false, $form_id = 'main-login', $hiddens=false) {
'$lpassword' => array('password', t('Password'), '', ''),
'$remember' => array('remember', t('Remember me'), '', ''),
'$hiddens' => $hiddens,
-
'$register' => $reg,
-
'$lostpass' => t('Forgot your password?'),
'$lostlink' => t('Password Reset'),
));
- call_hooks('login_hook',$o);
+ call_hooks('login_hook', $o);
return $o;
}
-// Used to end the current process, after saving session state.
-
-
+/**
+ * @brief Used to end the current process, after saving session state.
+ */
function killme() {
session_write_close();
exit;
}
-
-// redirect to another URL and terminate this process.
-
-
+/**
+ * @brief Redirect to another URL and terminate this process.
+ */
function goaway($s) {
header("Location: $s");
killme();
}
-
+/**
+ * @brief Returns the entity id of locally logged in account or false.
+ *
+ * Returns numeric account_id if authenticated or 0. It is possible to be
+ * authenticated and not connected to a channel.
+ *
+ * @return int|bool account_id or false
+ */
function get_account_id() {
if(get_app()->account)
return intval(get_app()->account['account_id']);
+
return false;
}
-
-// Returns the entity id of locally logged in user or false.
-
-
+/**
+ * @brief Returns the entity id (channel_id) of locally logged in user or false.
+ *
+ * Returns authenticated numeric channel_id if authenticated and connected to
+ * a channel or 0. Sometimes referred to as $uid in the code.
+ *
+ * @return int|bool channel_id or false
+ */
function local_user() {
- if((x($_SESSION,'authenticated')) && (x($_SESSION,'uid')))
+ if((x($_SESSION, 'authenticated')) && (x($_SESSION, 'uid')))
return intval($_SESSION['uid']);
+
return false;
}
-
-// Returns contact id of authenticated site visitor or false
-
-
+/**
+ * @brief Returns contact id (visitor_id) of authenticated site visitor or false.
+ *
+ * @return int|bool visitor_id or false
+ */
function remote_user() {
- if((x($_SESSION,'authenticated')) && (x($_SESSION,'visitor_id')))
+ if((x($_SESSION, 'authenticated')) && (x($_SESSION, 'visitor_id')))
return $_SESSION['visitor_id'];
+
return false;
}
-
-// contents of $s are displayed prominently on the page the next time
-// a page is loaded. Usually used for errors or alerts.
-
-
+/**
+ * Contents of $s are displayed prominently on the page the next time
+ * a page is loaded. Usually used for errors or alerts.
+ *
+ * @param string $s Text to display
+ */
function notice($s) {
$a = get_app();
- if(! x($_SESSION,'sysmsg')) $_SESSION['sysmsg'] = array();
+ if(! x($_SESSION, 'sysmsg')) $_SESSION['sysmsg'] = array();
+
if($a->interactive) {
// shameless plug, permission is denied and they have no identity.
// There's a fairly good chance that they've not got zot.
- if((stristr($s,t('permission denied'))) && (! get_observer_hash())) {
- $s .= '<br /><a href="http://getzot.com">' . t('Got Zot?') . '</a>';
+ if((stristr($s, t('permission denied'))) && (! get_observer_hash())) {
+ $s .= '<br><a href="http://getzot.com">' . t('Got Zot?') . '</a>';
}
$_SESSION['sysmsg'][] = $s;
}
}
-
+/**
+ * Contents of $s are displayed prominently on the page the next time a page is
+ * loaded. Usually used for information.
+ * For error and alerts use notice().
+ *
+ * @param string $s Text to display
+ */
function info($s) {
$a = get_app();
- if(! x($_SESSION,'sysmsg_info')) $_SESSION['sysmsg_info'] = array();
+ if(! x($_SESSION, 'sysmsg_info')) $_SESSION['sysmsg_info'] = array();
if($a->interactive)
$_SESSION['sysmsg_info'][] = $s;
}
-
-
-// wrapper around config to limit the text length of an incoming message
-
-
+/**
+ * @brief Wrapper around config to limit the text length of an incoming message
+ *
+ * @return int
+ */
function get_max_import_size() {
- return(intval(get_config('system','max_import_size')));
+ return(intval(get_config('system', 'max_import_size')));
}
-
-
-
/**
*
* Wrap calls to proc_close(proc_open()) and call hook
@@ -1600,8 +1672,6 @@ function get_max_import_size() {
*
* $cmd and string args are surrounded with ""
*/
-
-
function proc_run($cmd){
$a = get_app();
@@ -1634,24 +1704,28 @@ function proc_run($cmd){
if(count($args) && $args[0] === 'php')
$args[0] = ((x($a->config,'system')) && (x($a->config['system'],'php_path')) && (strlen($a->config['system']['php_path'])) ? $a->config['system']['php_path'] : 'php');
- for($x = 0; $x < count($args); $x ++)
+
+ for($x = 0; $x < count($args); $x++)
$args[$x] = escapeshellarg($args[$x]);
$cmdline = implode($args," ");
-
if(is_windows()) {
$cwd = getcwd();
$cmd = "cmd /c start \"title\" /D \"$cwd\" /b $cmdline";
proc_close(proc_open($cmd, array(), $foo));
}
else
- proc_close(proc_open($cmdline." &",array(),$foo));
+ proc_close(proc_open($cmdline ." &", array(), $foo));
}
-
+/**
+ * @brief Checks if we are running on M$ Windows.
+ *
+ * @return bool true if we run on M$ Windows
+ */
function is_windows() {
- return ((strtoupper(substr(PHP_OS,0,3)) === 'WIN') ? true : false);
+ return ((strtoupper(substr(PHP_OS, 0, 3)) === 'WIN') ? true : false);
}
@@ -1683,7 +1757,6 @@ function current_theme(){
$page_theme = null;
}
-
$is_mobile = $a->is_mobile || $a->is_tablet;
$standard_system_theme = ((isset($a->config['system']['theme'])) ? $a->config['system']['theme'] : '');
@@ -1698,7 +1771,7 @@ function current_theme(){
$system_theme = ((isset($a->config['system']['mobile_theme'])) ? $a->config['system']['mobile_theme'] : '');
$theme_name = ((isset($_SESSION) && x($_SESSION,'mobile_theme')) ? $_SESSION['mobile_theme'] : $system_theme);
- if($theme_name === '' || $theme_name === '---' ) {
+ if($theme_name === '' || $theme_name === '---' ) {
// user has selected to have the mobile theme be the same as the normal one
$system_theme = $standard_system_theme;
$theme_name = $standard_theme_name;
@@ -1706,21 +1779,20 @@ function current_theme(){
}
}
else {
- $system_theme = $standard_system_theme;
- $theme_name = $standard_theme_name;
+ $system_theme = $standard_system_theme;
+ $theme_name = $standard_theme_name;
if($page_theme)
$theme_name = $page_theme;
}
-
if($theme_name &&
(file_exists('view/theme/' . $theme_name . '/css/style.css') ||
file_exists('view/theme/' . $theme_name . '/php/style.php')))
return($theme_name);
foreach($app_base_themes as $t) {
- if(file_exists('view/theme/' . $t . '/css/style.css')||
+ if(file_exists('view/theme/' . $t . '/css/style.css') ||
file_exists('view/theme/' . $t . '/php/style.php'))
return($t);
}
@@ -1733,43 +1805,65 @@ function current_theme(){
/**
- * Return full URL to theme which is currently in effect.
+ * @brief Return full URL to theme which is currently in effect.
+ *
* Provide a sane default if nothing is chosen or the specified theme does not exist.
+ *
+ * @param bool $installing default false
+ *
+ * @return string
*/
-
function current_theme_url($installing = false) {
global $a;
+
$t = current_theme();
+
$opts = '';
$opts = (($a->profile_uid) ? '?f=&puid=' . $a->profile_uid : '');
$opts .= ((x($a->layout,'schema')) ? '&schema=' . $a->layout['schema'] : '');
if(file_exists('view/theme/' . $t . '/php/style.php'))
return('view/theme/' . $t . '/php/style.pcss' . $opts);
+
return('view/theme/' . $t . '/css/style.css');
}
+/**
+ * @brief Check if current user has admin role.
+ *
+ * Check if the current user has ACCOUNT_ROLE_ADMIN.
+ *
+ * @return bool true if user is an admin
+ */
function is_site_admin() {
$a = get_app();
+
if((intval($_SESSION['authenticated']))
&& (is_array($a->account))
&& ($a->account['account_roles'] & ACCOUNT_ROLE_ADMIN))
return true;
+
return false;
}
+/**
+ * @brief Check if current user has developer role.
+ *
+ * Check if the current user has ACCOUNT_ROLE_DEVELOPER.
+ *
+ * @return bool true if user is a developer
+ */
function is_developer() {
$a = get_app();
if((intval($_SESSION['authenticated']))
&& (is_array($a->account))
&& ($a->account['account_roles'] & ACCOUNT_ROLE_DEVELOPER))
return true;
+
return false;
}
-
function load_contact_links($uid) {
-
$a = get_app();
$ret = array();
@@ -1779,9 +1873,8 @@ function load_contact_links($uid) {
// logger('load_contact_links');
- $r = q("SELECT abook_id, abook_flags, abook_my_perms, abook_their_perms, xchan_hash, xchan_photo_m, xchan_name, xchan_url from abook left join xchan on abook_xchan = xchan_hash where abook_channel = %d and not (abook_flags & %d) ",
- intval($uid),
- intval(ABOOK_FLAG_SELF)
+ $r = q("SELECT abook_id, abook_flags, abook_my_perms, abook_their_perms, xchan_hash, xchan_photo_m, xchan_name, xchan_url from abook left join xchan on abook_xchan = xchan_hash where abook_channel = %d ",
+ intval($uid)
);
if($r) {
foreach($r as $rr){
@@ -1790,30 +1883,31 @@ function load_contact_links($uid) {
}
else
$ret['empty'] = true;
+
$a->contacts = $ret;
- return;
}
/**
- * returns querystring as string from a mapped array
+ * @brief Returns querystring as string from a mapped array.
+ *
+ * @param array $params mapped array with query parameters
+ * @param string $name of parameter, default null
*
- * @param params Array
* @return string
*/
-
-function build_querystring($params, $name=null) {
- $ret = "";
- foreach($params as $key=>$val) {
+function build_querystring($params, $name = null) {
+ $ret = '';
+ foreach($params as $key => $val) {
if(is_array($val)) {
- if($name==null) {
+ if($name === null) {
$ret .= build_querystring($val, $key);
} else {
- $ret .= build_querystring($val, $name."[$key]");
+ $ret .= build_querystring($val, $name . "[$key]");
}
} else {
$val = urlencode($val);
- if($name!=null) {
+ if($name != null) {
$ret .= $name . "[$key]" . "=$val&";
} else {
$ret .= "$key=$val&";
@@ -1833,6 +1927,7 @@ function argc() {
function argv($x) {
if(array_key_exists($x,get_app()->argv))
return get_app()->argv[$x];
+
return '';
}
@@ -1840,19 +1935,25 @@ function dba_timer() {
return microtime(true);
}
+/**
+ * @brief Returns xchan_hash from the observer.
+ *
+ * @return string Empty if no observer, otherwise xchan_hash from observer
+ */
function get_observer_hash() {
$observer = get_app()->get_observer();
if(is_array($observer))
return $observer['xchan_hash'];
+
return '';
}
/**
-* Returns the complete URL of the current page, e.g.: http(s)://something.com/network
-*
-* Taken from http://webcheatsheet.com/php/get_current_page_url.php
-*/
+ * Returns the complete URL of the current page, e.g.: http(s)://something.com/network
+ *
+ * Taken from http://webcheatsheet.com/php/get_current_page_url.php
+ */
function curPageURL() {
$pageURL = 'http';
if ($_SERVER["HTTPS"] == "on") {$pageURL .= "s";}
@@ -1865,54 +1966,76 @@ function curPageURL() {
return $pageURL;
}
-function get_custom_nav(&$a,$navname) {
+/**
+ * @brief Returns a custom navigation by name???
+ *
+ * If no $navname provided load default page['nav']
+ *
+ * @todo not fully implemented yet
+ *
+ * @param App $a global application object
+ * @param string $navname
+ *
+ * @return mixed
+ */
+function get_custom_nav(&$a, $navname) {
if(! $navname)
return $a->page['nav'];
// load custom nav menu by name here
-
}
-function construct_page(&$a) {
-
+/**
+ * @brief Loads a page definition file for a module.
+ *
+ * If there is no parsed Comanche template already load a module's pdl file
+ * and parse it with Comanche.
+ *
+ * @param App &$a global application object
+ */
+function load_pdl(&$a) {
require_once('include/comanche.php');
- // in case a page has overloaded a module, see if we already have a layout defined
- // otherwise, if a pdl file exists for this module, use it
-
if(! count($a->layout)) {
$n = 'mod_' . $a->module . '.pdl' ;
$u = comanche_get_channel_id();
if($u)
- $s = get_pconfig($u,'system',$n);
+ $s = get_pconfig($u, 'system', $n);
+
if((! $s) && (($p = theme_include($n)) != ''))
$s = @file_get_contents($p);
+
if($s)
- comanche_parser($a,$s);
+ comanche_parser($a, $s);
}
+}
- $comanche = ((count($a->layout)) ? true : false);
+/**
+ * @brief build the page.
+ *
+ * Build the page - now that we have all the components
+ *
+ * @param App &$a global application object
+ */
+function construct_page(&$a) {
- /**
- * Build the page - now that we have all the components
- */
+ $comanche = ((count($a->layout)) ? true : false);
require_once(theme_include('theme_init.php'));
$installing = false;
- if($a->module == 'setup')
+ if($a->module == 'setup') {
$installing = true;
- else {
+ } else {
nav($a);
}
if($comanche) {
if($a->layout['nav']) {
- $a->page['nav'] = get_custom_nav($a->layout['nav']);
+ $a->page['nav'] = get_custom_nav($a, $a->layout['nav']);
}
}
-
if(($p = theme_include(current_theme() . '.js')) != '')
head_add_js($p);
@@ -1921,10 +2044,10 @@ function construct_page(&$a) {
require_once('include/js_strings.php');
- if(x($a->page,'template_style'))
+ if(x($a->page, 'template_style'))
head_add_css($a->page['template_style'] . '.css');
else
- head_add_css(((x($a->page,'template')) ? $a->page['template'] : 'default' ) . '.css');
+ head_add_css(((x($a->page, 'template')) ? $a->page['template'] : 'default' ) . '.css');
head_add_css('mod_' . $a->module . '.css');
head_add_css(current_theme_url($installing));
@@ -1934,11 +2057,12 @@ function construct_page(&$a) {
$a->build_pagehead();
$arr = $a->get_widgets();
- ksort($arr,SORT_NUMERIC);
+ ksort($arr, SORT_NUMERIC);
if(count($arr)) {
foreach($arr as $x) {
- if(! array_key_exists($x['location'],$a->page))
+ if(! array_key_exists($x['location'], $a->page))
$a->page[$x['location']] = '';
+
$a->page[$x['location']] .= $x['html'];
}
}
@@ -1954,27 +2078,25 @@ function construct_page(&$a) {
if($comanche) {
$arr = array('module' => $a->module, 'layout' => $a->layout);
- call_hooks('construct_page',$arr);
+ call_hooks('construct_page', $arr);
$a->layout = $arr['layout'];
foreach($a->layout as $k => $v) {
- if((strpos($k,'region_') === 0) && strlen($v)) {
- if(strpos($v,'$region_') !== false) {
- $v = preg_replace_callback('/\$region_([a-zA-Z0-9]+)/ism','comanche_replace_region',$v);
+ if((strpos($k, 'region_') === 0) && strlen($v)) {
+ if(strpos($v, '$region_') !== false) {
+ $v = preg_replace_callback('/\$region_([a-zA-Z0-9]+)/ism', 'comanche_replace_region', $v);
}
// And a couple of convenience macros
- if(strpos($v,'$nav') !== false) {
- $v = str_replace('$nav',$a->page['nav'],$v);
+ if(strpos($v, '$nav') !== false) {
+ $v = str_replace('$nav', $a->page['nav'], $v);
}
- if(strpos($v,'$content') !== false) {
-
- $v = str_replace('$content',$a->page['content'],$v);
+ if(strpos($v, '$content') !== false) {
+ $v = str_replace('$content', $a->page['content'], $v);
}
- $a->page[substr($k,7)] = $v;
-
+ $a->page[substr($k, 7)] = $v;
}
}
}
@@ -2001,32 +2123,80 @@ function construct_page(&$a) {
header("Content-type: text/html; charset=utf-8");
require_once(theme_include(
- ((x($a->page,'template'))
- ? $a->page['template']
- : 'default' )
- . '.php' )
+ ((x($a->page, 'template')) ? $a->page['template'] : 'default' ) . '.php' )
);
-
- return;
}
-
+/**
+ * @brief Returns RedMatrix's root directory.
+ *
+ * @return string
+ */
function appdirpath() {
return dirname(__FILE__);
}
-
+/**
+ * @brief Set a pageicon.
+ *
+ * @param string $icon
+ */
function head_set_icon($icon) {
global $a;
+
$a->data['pageicon'] = $icon;
// logger('head_set_icon: ' . $icon);
}
+/**
+ * @brief Get the pageicon.
+ *
+ * @return string absolut path to pageicon
+ */
function head_get_icon() {
global $a;
+
$icon = $a->data['pageicon'];
- if(! strpos($icon,'://'))
+ if(! strpos($icon, '://'))
$icon = z_root() . $icon;
+
return $icon;
}
+/**
+ * @brief Return the Realm of the directory.
+ *
+ * @return string
+ */
+function get_directory_realm() {
+ if($x = get_config('system', 'directory_realm'))
+ return $x;
+
+ return DIRECTORY_REALM;
+}
+
+
+/**
+ * @brief return relative date of last completed poller execution
+ */
+
+function get_poller_runtime() {
+ $t = get_config('system','lastpoll');
+ return relative_date($t);
+}
+
+function z_get_upload_dir() {
+ $upload_dir = get_config('system','uploaddir');
+ if(! $upload_dir)
+ $upload_dir = ini_get('upload_tmp_dir');
+ if(! $upload_dir)
+ $upload_dir = sys_get_temp_dir();
+ return $upload_dir;
+}
+
+function z_get_temp_dir() {
+ $temp_dir = get_config('system','tempdir');
+ if(! $temp_dir)
+ $temp_dir = sys_get_temp_dir();
+ return $upload_dir;
+}
diff --git a/doc/AdvancedSearch.md b/doc/AdvancedSearch.md
index 5a9a5a3bc..a67c1fc1f 100644
--- a/doc/AdvancedSearch.md
+++ b/doc/AdvancedSearch.md
@@ -50,8 +50,4 @@ Example:
name="charlie brown" and country=canada and not gender=female
-
-
-
-
-
+#include doc/macros/main_footer.bb;
diff --git a/doc/Comanche.md b/doc/Comanche.md
index 7374e8406..56bf68457 100644
--- a/doc/Comanche.md
+++ b/doc/Comanche.md
@@ -166,4 +166,4 @@ Please note that pasting this example into a layout page is not likely to do any
[/region]
-
+#include doc/macros/main_footer.bb;
diff --git a/doc/Creating-Templates.md b/doc/Creating-Templates.md
index 35003cb1a..6de627f39 100644
--- a/doc/Creating-Templates.md
+++ b/doc/Creating-Templates.md
@@ -88,4 +88,6 @@ and this would place a profile widget into the "foo" region you created.
Use the CSS file to position the region on the page where desired and optionally control its size.
-[To be continued] \ No newline at end of file
+[To be continued]
+
+#include doc/macros/main_footer.bb;
diff --git a/doc/DerivedTheme1.md b/doc/DerivedTheme1.md
index d20a958f2..d4a7ee148 100644
--- a/doc/DerivedTheme1.md
+++ b/doc/DerivedTheme1.md
@@ -74,5 +74,4 @@ Now create the actual CSS file for your theme. Put it in view/theme/mytheme/css
You've just successfully created a derived theme. This needs to be enabled in the admin "themes" panel, and then anybody on the site can use it by selecting it in Settings->Display Settings as their default theme.
-
- \ No newline at end of file
+#include doc/macros/main_footer.bb;
diff --git a/doc/Developers.md b/doc/Developers.md
index baadd1a2e..8252fa91d 100644
--- a/doc/Developers.md
+++ b/doc/Developers.md
@@ -52,4 +52,4 @@ In the interests of consistency we adopt the following code styling. We may acce
* Generally speaking, opening braces go on the same line as the thing which opens the brace. They are the last character on the line. Closing braces are on a line by themselves.
-
+#include doc/macros/main_footer.bb;
diff --git a/doc/External-Resources.md b/doc/External-Resources.md
deleted file mode 100644
index c0880f362..000000000
--- a/doc/External-Resources.md
+++ /dev/null
@@ -1,27 +0,0 @@
-External Resources
-==================
-
-
-
-**Third-Party Themes**
-
-* [APW](https://github.com/beardy-unixer/apw)
-* [Redstrap](https://github.com/omigeot/redstrap3)
-* [Pluto](https://github.com/23n/Pluto)
-* [clean](https://bitbucket.org/tobiasd/red-clean)
-
-
-**Third-Party Addons**
-
-* [BBCode Extensions for Webpages/Wikis](https://github.com/beardy-unixer/red-addons-extra)
-* [ABCjs integration - display scores in posts (WIP)](https://abcentric.net/git/abcjsplugin.git)
-
-**Related projects**
-
-* [Redshare for Firefox](https://addons.mozilla.org/en-US/firefox/addon/redshare/)
-* [Red for Android](https://github.com/cvogeley/red-for-android)
-* [feed2red.pl (posts Atom/RSS feeds to channels)](https://github.com/zzottel/feed2red)
-
-**Utilities**
-
-* [Debian Install Script](https://github.com/beardy-unixer/lowendscript-ng)
diff --git a/doc/Features.md b/doc/Features.md
index 184652742..78c77c9bd 100644
--- a/doc/Features.md
+++ b/doc/Features.md
@@ -105,3 +105,4 @@ Ability to mark special posts with a star indicator
Provide a personal tag cloud on your channel page
+#include doc/macros/main_footer.bb;
diff --git a/doc/Hooks.md b/doc/Hooks.md
index 350068314..90edff623 100644
--- a/doc/Hooks.md
+++ b/doc/Hooks.md
@@ -133,3 +133,4 @@ Hooks - Complete List
* $a->module . '_pre_' . $selname
* $a->module . '_pre_' . $selname
+#include doc/macros/main_footer.bb;
diff --git a/doc/Install.md b/doc/Install.md
deleted file mode 100644
index 1ff6e69e7..000000000
--- a/doc/Install.md
+++ /dev/null
@@ -1,111 +0,0 @@
-
-Red Installation
-===============
-
-Red should run on commodity hosting platforms - such as those used to host Wordpress blogs and Drupal websites. But be aware that Red is more than a simple web application. The kind of functionality offered by Red requires a bit more of the host system than the typical blog. Not every PHP/MySQL hosting provider will be able to support Red. Many will. But **please** review the requirements and confirm these with your hosting provider prior to installation.
-
-Also if you encounter installation issues, please let us know via the Github issue tracker (https://github.com/friendica/red/issues). Please be as clear as you can about your operating environment and provide as much detail as possible about any error messages you may see, so that we can prevent it from happening in the future. Due to the large variety of operating systems and PHP platforms in existence we may have only limited ability to debug your PHP installation or acquire any missing modules - but we will do our best to solve any general code issues.
-
-Before you begin: Choose a domain name or subdomain name for your server. Put some thought into this - because changing it is currently not-supported. Things will break, and some of your friends may have difficulty communicating with you. We plan to address this limitation in a future release.
-
-Decide if you will use SSL and obtain an SSL certificate before software installation. You SHOULD use SSL. If you use SSL, you MUST use a "browser-valid" certificate. You MUST NOT use self-signed certificates!
-
-Please test your certificate prior to installation. A web tool for testing your certificate is available at "http://www.digicert.com/help/". When visiting your site for the first time, please use the SSL ("https://") URL if SSL is available. This will avoid problems later. The installation routine will not allow you to use a non browser-valid certificate.
-
-This restriction is incorporated because public posts from you may for example contain references to images on your own hub. If your certificate is not known by the internet browser of users they get a warning message complaining about some security issues. Although these complains are not the real truth - there are no security issues with your encryption! - the users may be confused, nerved or even worse may become scared about Red Matrix having security issues. Use one of the free certification instances!
-
-1. Requirements
- - Apache with mod-rewrite enabled and "Options All" so you can use a
-local .htaccess file
-
- - PHP 5.3 or later
- - PHP *command line* access with register_argc_argv set to true in the
-php.ini file
- - curl, gd, mysql, and openssl extensions
- - some form of email server or email gateway such that PHP mail() works
- - mcrypt (optional; used for server-to-server message encryption)
-
- - Mysql 5.x
-
- - ability to schedule jobs with cron (Linux/Mac) or Scheduled Tasks
-(Windows) [Note: other options are presented in Section 7 of this document]
-
- - Installation into a top-level domain or sub-domain (without a
-directory/path component in the URL) is preferred. Directory paths will
-not be as convenient to use and have not been thoroughly tested.
-
-
- [Dreamhost.com offers all of the necessary hosting features at a
-reasonable price. If your hosting provider doesn't allow Unix shell access,
-you might have trouble getting everything to work.]
-
-2. Unpack the Red files into the root of your web server document area.
-
- - If you are able to do so, we recommend using git to clone the source repository rather than to use a packaged tar or zip file. This makes the software much easier to update. The Linux command to clone the repository into a directory "mywebsite" would be
-
- `git clone https://github.com/friendica/red.git mywebsite`
-
- - and then you can pick up the latest changes at any time with
-
- `git pull`
-
- - make sure folder *store/[data]/smarty3* exists and is writable by webserver
-
- `mkdir -p "store/\[data\]/smarty3"`
-
- `chmod 777 "store/\[data\]/smarty3"`
-
- - For installing addons
-
- - First you should be **on** your website folder
-
- `cd mywebsite`
-
- - Then you should clone the addon repository (separtely)
-
- `git clone https://github.com/friendica/red-addons.git addon`
-
- - For keeping the addon tree updated, you should be on you addon tree and issue a git pull
-
- `cd mywebsite/addon`
-
- `git pull`
-
- - If you copy the directory tree to your webserver, make sure
- that you also copy .htaccess - as "dot" files are often hidden
- and aren't normally copied.
-
-
-3. Create an empty database and note the access details (hostname, username, password, database name).
-
-4. Visit your website with a web browser and follow the instructions. Please note any error messages and correct these before continuing.
-
-5. *If* the automated installation fails for any reason, check the following:
-
- - ".htconfig.php" exists ... If not, edit htconfig.php and change system settings. Rename
-to .htconfig.php
- - Database is populated. ... If not, import the contents of "database.sql" with phpmyadmin
-or mysql command line
-
-6. At this point visit your website again, and register your personal account.
-Registration errors should all be recoverable automatically.
-If you get any *critical* failure at this point, it generally indicates the
-database was not installed correctly. You might wish to move/rename
-.htconfig.php to another name and empty (called 'dropping') the database
-tables, so that you can start fresh.
-
-7. Set up a cron job or scheduled task to run the poller once every 15
-minutes in order to perform background processing. Example:
-
- `cd /base/directory; /path/to/php include/poller.php`
-
-Change "/base/directory", and "/path/to/php" as appropriate for your situation.
-
-If you are using a Linux server, run "crontab -e" and add a line like the
-one shown, substituting for your unique paths and settings:
-
-`*/15 * * * * cd /home/myname/mywebsite; /usr/bin/php include/poller.php`
-
-You can generally find the location of PHP by executing "which php". If you
-have troubles with this section please contact your hosting provider for
-assistance. Red will not work correctly if you cannot perform this step.
diff --git a/doc/Intro-for-Developers.md b/doc/Intro-for-Developers.md
deleted file mode 100644
index bf74cb7c1..000000000
--- a/doc/Intro-for-Developers.md
+++ /dev/null
@@ -1,105 +0,0 @@
-File system layout:
-===================
-
-[addon] optional addons/plugins
-
-[boot.php] Every process uses this to bootstrap the application structure
-
-[doc] Help Files
-
-[images] core required images
-
-[include] The "model" in MVC - (back-end functions), also contains PHP "executables" for background processing
-
-[index.php] The front-end controller for web access
-
-[install] Installation and upgrade files and DB schema
-
-[js] core required javascript
-
-[library] Third party modules (must be license compatible)
-
-[mod] Controller modules based on URL pathname (e.g. http://sitename/foo loads mod/foo.php)
-
-[spec] protocol specifications
-
-[util] translation tools, main English string database and other miscellaneous utilities
-
-[version.inc] contains current version (auto-updated via cron for the master repository and distributed via git)
-
-[view] theming and language files
-
-
-[view/(css,js,img,php,tpl)] default theme files
-
-[view/(en,it,es ...)] language strings and resources
-
-[view/theme/] individual named themes containing (css,js,img,php,tpl) over-rides
-
-
-The Database:
-=============
-
-* abook - contact table, replaces Friendica 'contact'
-* account - service provider account
-* addon - registered plugins
-* attach - file attachments
-* auth_codes - OAuth usage
-* cache - TBD
-* challenge - old DFRN structure, may re-use or may deprecate
-* channel - replaces Friendica 'user'
-* clients - OAuth usage
-* config - main configuration storage
-* event - Events
-* fcontact - friend suggestion stuff
-* ffinder - friend suggestion stuff
-* fserver - obsolete
-* fsuggest - friend suggestion stuff
-* gcign - ignored friend suggestions
-* gcontact - social graph storage, obsolete
-* glink - social graph storage - obsolete
-* group - privacy groups
-* group_member - privacy groups
-* hook - plugin hook registry
-* hubloc - Red location storage, ties a location to an xchan
-* intro - DFRN introductions, may be obsolete
-* item - posts
-* item_id - other identifiers on other services for posts
-* mail - private messages
-* manage - may be unused in Red, table of accounts that can "su" each other
-* notify - notifications
-* notify-threads - need to factor this out and use item thread info on notifications
-* outq - Red output queue
-* pconfig - personal (per channel) configuration storage
-* photo - photo storage
-* profile - channel profiles
-* profile_check - DFRN remote auth use, may be obsolete
-* queue - old Friendica queue, obsolete
-* register - registrations requiring admin approval
-* session - web session storage
-* site - site table to find directory peers
-* spam - unfinished
-* term - item taxonomy (categories, tags, etc.) table
-* tokens - OAuth usage
-* verify - general purpose verification structure
-* xchan - replaces 'gcontact', list of known channels in the universe
-* xlink - "friends of friends" linkages derived from poco
-* xprof - if this hub is a directory server, contains basic public profile info of everybody in the network
-* xtag - if this hub is a directory server, contains tags or interests of everybody in the network
-
-
-How to theme Red - by Olivier Migeot
-====================================
-
-This is a short documentation on what I found while trying to modify Red's appearance.
-
-First, you'll need to create a new theme. This is in /view/theme, and I chose to copy 'redbasic' since it's the only available for now. Let's assume I named it <theme>.
-
-Oh, and don't forget to rename the _init function in <theme>/php/theme.php to be <theme>_init() instead of redbasic_init().
-
-At that point, if you need to add javascript or css files, add them to <theme>/js or <theme>/css, and then "register" them in <theme>_init() through head_add_js('file.js') and head_add_css('file.css').
-
-Now you'll probably want to alter a template. These can be found in in /view/tpl OR view/<theme>/tpl. All you should have to do is copy whatever you want to tweak from the first place to your theme's own tpl directory.
-
-
-
diff --git a/doc/Plugins.md b/doc/Plugins.md
index c3eaea348..b657f5ceb 100644
--- a/doc/Plugins.md
+++ b/doc/Plugins.md
@@ -180,7 +180,7 @@ Now let's add our functions to create and store preference settings.
/* Add our stylesheet to the page so we can make our settings look nice */
- head_add_css(/addon/randplace/randplace.css');
+ head_add_css('/addon/randplace/randplace.css');
/* Get the current state of our config variable */
@@ -258,3 +258,4 @@ The Red Matrix has _install and _uninstall functions but these are used differen
Changing these will often allow your plugin to function, but please double check all your permission and identity code because the concepts behind it are completely different in the Red Matrix. Many structured data names (especially DB schema columns) are also quite different.
+#include doc/macros/main_footer.bb;
diff --git a/doc/Privacy.md b/doc/Privacy.md
new file mode 100644
index 000000000..2709f47aa
--- /dev/null
+++ b/doc/Privacy.md
@@ -0,0 +1,73 @@
+#Privacy Policy
+
+##Summary
+
+Q: Who can see my content?
+
+A: By default ANYBODY on the internet, UNLESS you restrict it. The RedMatrix allows you to choose the privacy level you desire. Restricted content will NOT be visible to spy networks and their advertisers. It will be protected against eavesdropping by outsiders - to the best of our ability. Hub administrators with sufficient skills and patience MAY be able to eavesdrop on some private communications but they must expend effort to do so. Privacy modes exist within the RedMatrix which are even resistant to eavesdropping by skilled and determined hub administrators.
+
+Q: Can my content be censored?
+
+A: The RedMatrix (the network) CANNOT censor your content. Server and hub administrators are subject to local laws and MAY remove objectionable content from their site/hub. Anybody MAY become a hub administrator, including you; and therefore publish content which might otherwise be censored. You still MAY be subject to local laws.
+
+
+##Definitions
+
+**RedMatrix**
+
+Otherwise referred to as "the network", the RedMatrix is a collection of individual computers/servers (aka **hubs**) which connect together to form a larger cooperative network.
+
+**hub**
+
+An individual computer or server connected to the RedMatrix. These are provided by a **hub administrator** and may be public or private, paid or free.
+
+**hub administrator**
+
+The system operator of an individual hub.
+
+##Policies
+
+**Public Information**
+
+Any information or anything posted by you within the RedMatrix MAY be public or visible to anybody on the internet. To the extent possible, the RedMatrix allows you to protect content and restrict who can view it.
+
+Your profile photo, your channel name, and the location (URL or network address) of your channel are visible to anybody on the internet and privacy controls will not affect the display of these items.
+
+You MAY additionally provide other profile information. Any information which you provide in your "default" or **public profile** MAY be transmitted to other hubs in the RedMatrix and additionally MAY be displayed in the channel directory. You can restrict the viewing of this profile information. It may be restricted only to members of your hub, or only connections (friends), or other limited sets of viewers as you desire. If you wish for your profile to be restricted, you must set the appropriate privacy setting, or simply DO NOT provide additional information.
+
+**Content**
+
+Content you provide (status posts, photos, files, etc.) belongs to you. The RedMatrix default is to publish content openly and visible to anybody on the internet (PUBLIC). You MAY control this in your channel settings and restrict the default permissions or you MAY restrict the visibility of any single published item separately (PRIVATE). The RedMatrix developers will ensure that restricted content is ONLY visible to those in the restriction list - to the best of their ability.
+
+Content (especially status posts) that you share with other networks or that you have made visible to anybody on the internet (PUBLIC) cannot easily be taken back once it has been published. It MAY be shared with other networks and made available through RSS/Atom feeds. It may also be syndicated on other RedMatrix sites. It MAY appear on spy networks and internet searches. If you do not wish this default behaviour please adjust your channel settings and restrict who can see your content.
+
+**Comments and Forum posts**
+
+Comments to posts that were created by others and posts which are designated as forum posts belong to you as the creator/author, but the distribution of these posts is not under your direct control. These posts/comments MAY be re-distributed to others, and MAY be visible to anybody on the internet. In the case of comments, the creator of the "first message" in the thread to which you are replying controls the distribution of all comments and replies to that message.
+
+
+**Private Information**
+
+RedMatrix developers will ensure that any content you provide which is designated as PRIVATE will be protected against eavesdropping - to the best of their ability. Private content is generally hidden or obscured even from hub administrators. It is also stripped from email notifications. It is difficult but NOT impossible for this content to be seen by a hub administrator. This is a side effect of the physical laws of the universe. Unfortunately, if a database needs to decrypt a post at display time, it must have the means to decrypt the post! End to end encryption is also provided and this CANNOT be seen, even by a determined administrator.
+
+##Identity Privacy
+
+Privacy for your identity is another aspect. Because you have a decentralized identity in the Red Matrix, your privacy extends beyond your home hub. If you want to have complete control of your privacy and security you should run your own hub on a dedicated server. For many people, this is complicated and may stretch their technical abilities. So let's list a few precautions you can make to assure your privacy as much as possible.
+
+A decentralized identity has a lot of advantages and gives you al lot of interesting features, but you should be aware of the fact that your identity is known by other hubs in the Red Matrix network. One of those advantages is that other channels can serve you customized content and allow you to see private things (such as private photos which others wish to share with you). Because of this those channels need to know who you are. But we understand that sometimes those other channels know more from you than you might desire. For instance the plug-in Visage that can tell a channel owner the last time you visit their profile. You can easily OPT-OUT of this low level and we think, harmless tracking.
+
+* You can enable [Do Not Track (DNT)](http://donottrack.us/) in your web browser. We respect this new privacy policy proposal. All modern browsers support DNT. You will find it in the privacy settings of your browsers or else you can consult the web browser's manual. This will not affect the functionality of the Red Matrix. This setting is probably enough for most people.
+*You can [disable publication](settings) of your channel in our channel directory. If you want people to find your channel, you should give your channel address directly to them. We think this is a good indication that you prefer extra privacy and automatically enable "Do Not Track" if this is the case.
+* You can have a blocked hub. That means that all channels and content on that hub is not public, and not visible to the outside world. This is something only your hub administrator can do. We also respect this and automatically enable "Do Not Track" if it is set.
+
+###Censorship
+
+The RedMatrix is a global network which is inclusive of all religions and cultures. This does not imply that every member of the network feels the same way you do on contentious issues, and some people may be STRONGLY opposed to the content you post. In general, if you wish to post something that you know may nor be universally acceptable, the best approach is to restrict the audience using privacy controls to a small circle of friends.
+
+The RedMatrix as a network provider is unable to censor content. However, hub administrators MAY censor any content which appears on their hub to comply with local laws or even personal judgement. Their decision is final. If you have issues with any hub administrator, you may move your account and postings to another site which is more in line with your expectations. Please check (periodically) the [Terms of Service](help/TermsOfService) of your hub to learn about any rules or guidelines. If your content consists of material which is illegal or may cause issues, you are STRONGLY encouraged to host your own (become a hub administrator). You may still find that your content is blocked on some hubs, but the RedMatrix as a network cannot block it from being posted.
+
+The RedMatrix RECOMMENDS that hub administrators provide a grace period of 1-2 days between warning an account holder of content that needs to be removed and physically removing or disabling the account. This will give the content owner an opportunity to export their channel meta-data and import it to another site. In rare cases the content may be of such a nature to justify the immediate termination of the account. This is a hub decision, not a RedMatrix decision.
+
+If you typically and regularly post content of an adult or offensive nature, you are STRONGLY encouraged to mark your account "NSFW" (Not Safe For Work). This will prevent the display of your profile photo in the directory except to viewers that have chosen to disable "safe mode". If your profile photo is found by directory administrators to be adult or offensive, the directory administrator MAY flag your profile photo as NSFW. There is currently no official mechanism to contest or reverse this decision, which is why you SHOULD mark your own account NSFW if it is likely to be inappropriate for general audiences.
+
+#include doc/macros/main_footer.bb;
diff --git a/doc/Profiles.md b/doc/Profiles.md
deleted file mode 100644
index 1e9e0fe5e..000000000
--- a/doc/Profiles.md
+++ /dev/null
@@ -1,36 +0,0 @@
-Profiles
-========
-
-* [Home](help)
-
-Red has unlimited profiles. You may use different profiles to show different "sides of yourself" to different audiences. This is different to having different _channels_. Different channels allow for completely different sets of information. You may have a channel for yourself, a channel for your sports team, a channel for your website, or whatever else. A profile allows for finely graded "sides" of each channel. For example, your default public profile might say "Hello, I'm Fred, and I like laughing". You may show your close friends a profile that adds "and I also enjoy dwarf tossing".
-
-You always have a profile known as your "default" or "public" profile. This profile is always available to the general public and cannot be hidden (there may be rare exceptions on privately run or disconnected sites). You may, and probably should restrict the information you make available on your public profile.
-
-That said, if you want other friends to be able to find you, it helps to have the following information in your public profile...
-
-* Your real name or at least a nickname everybody knows
-* A photo of **you**
-* Your location on the planet, at least to a country level.
-
-Without this basic information, you could get very lonely here. Most people (even your best friends) will not try and connect with somebody that has a fake name or doesn't contain a real photo.
-
-In addition, if you'd like to meet people that share some general interests with you, please take a moment and add some "Keywords" to your profile. Such as "music, linux, photography" or whatever. You can add as many keywords as you like.
-
-To create an alternate profile, select "View Profile" from the menu of your Red Matrix site, then click on the pencil at your profile photo. You may edit an existing profile, change the profile photo, add things to a profile or create a new profile. You may also create a "clone" of an existing profile if you only wish to change a few items but don't wish to enter all the information again. To do that, click on the profile you want to clone and choose "Clone this profile" there.
-
-In the list of your profiles, you can also choose the contacts who can see a specific profile. Just click on "Edit visibility" next to the profile in question (only available for the profiles that are not your default profile) and then click on user images to add them to or remove them from the group of people who can see this profile.
-
-Once a profile has been selected, when the person views your profile, they will see the private profile you have assigned. If they are not authenticated, they will see your public profile.
-
-There is a setting which allows you to publish your profile to a directory and ensure that it can be found by others. You can change this setting on the "Settings" page.
-
-If you do not wish to be found be people unless you give them your channel address, you may leave your profile unpublished.
-
-**Keywords and Directory Search**
-
-On the directory page, you may search for people with published profiles. The search is typically for your nickname or part of your full name. However this search will also match against other profile fields - such as gender, location, "about", work, and education. You may also include "Keywords" in your default profile - which may be used to search for common interests with other members. Keywords are used in the channel suggestion tool and although they aren't visible in the directory, they are shown if people visit your profile page.
-
-Directory searches are also able to use "boolean" logic so that you can search for "+lesbian +Florida" and find those who's sexual preference (or keywords) contain the world "lesbian" and that live in Florida. See the section on "Topical Tags" on the [Tags-and-Mentions](help/Tags-and-Mentions) page for more information on performing boolean searches.
-
-On your Connnections page and in the directory there is a link to "Suggestions" or "Channel Suggestions", respectively. This will find channels who have matching and/or similar keywords. The more keywords you provide, the more relevant the search results that are returned. These are sorted by relevance.
diff --git a/doc/Remove-Account.md b/doc/Remove-Account.md
index bc1301b16..322b95578 100644
--- a/doc/Remove-Account.md
+++ b/doc/Remove-Account.md
@@ -21,3 +21,4 @@ If you have identity clones on other sites this only removes the channel instanc
on this site.
+#include doc/macros/main_footer.bb;
diff --git a/doc/Schema-development.md b/doc/Schema-development.md
index 481792fcc..e800479f6 100644
--- a/doc/Schema-development.md
+++ b/doc/Schema-development.md
@@ -74,3 +74,5 @@ theme are as follows:
* reply_photo
* sloppy_photos
Determins whether photos are "sloppy" or aligned. Set or unset (1 or '')
+
+#include doc/macros/main_footer.bb;
diff --git a/doc/Tags-and-Mentions.md b/doc/Tags-and-Mentions.md
index cdee73167..84442dd7a 100644
--- a/doc/Tags-and-Mentions.md
+++ b/doc/Tags-and-Mentions.md
@@ -21,4 +21,6 @@ You may also tag public collections. When you create or edit a collection, there
Topical tags are indicated by preceding the tag name with the # character. This will create a link in the post to a generalised site search for the term provided. For example, #cars will provide a search link for all posts mentioning 'cars' on your site. Topical tags are generally a minimum of three characters in length. Shorter search terms are not likely to yield any search results, although this depends on the database configuration. The same rules apply as with names that spaces within tags are represented by the underscore character. It is therefore not possible to create a tag whose target contains an underscore.
-Topical tags are also not linked if they are purely numeric, e.g. #1. If you wish to use a numerica hashtag, please add some descriptive text such as #2012-elections. \ No newline at end of file
+Topical tags are also not linked if they are purely numeric, e.g. #1. If you wish to use a numerica hashtag, please add some descriptive text such as #2012-elections.
+
+#include doc/macros/main_footer.bb;
diff --git a/doc/To-Do-Code.md b/doc/To-Do-Code.md
deleted file mode 100644
index 8caf40251..000000000
--- a/doc/To-Do-Code.md
+++ /dev/null
@@ -1,62 +0,0 @@
-Project Code To-Do List
-=======================
-
-We need much more than this, but here are areas where developers can help. Please edit this page when items are finished. Another place for developers to start is with the issues list.
-
-* Documentation - see [Red Documentation Project To-Do List](help/To-Do)
-
-* Infinite scroll to the directory pages
-
-* Finish the anti-spam bayesian engine
-
-* Integrate the "open site" list with the register page
-
-* implement oembed provider interface
-
-* implement openid server interface
-
-* Write more webpage layouts
-
-* Write more webpage widgets
-
-* (Advanced) create a UI for building Comanche pages
-
-* External post connectors - create standard interface
-
-* External post connectors, add popular services
-
-* templatise and translate the Web interface to webDAV
-
-* Extend WebDAV to provide desktop access to photo albums
-
-* service classes - provide a pluggable subscription payment gateway for premium accounts
-
-* service classes - account overview page showing resources consumed by channel. With special consideration this page can also be accessed at a meta level by the site admin to drill down on problematic accounts/channels.
-
-* Events module - fix permissions on events, and provide JS translation support for the calendar overview; integrate with calDAV
-
-* Events module - event followups and RSVP
-
-
-* Uploads - integrate https://github.com/blueimp/jQuery-File-Upload
-
-* App taxonomy
-
-* replace the tinymce visual editor and/or make the visual editor pluggable and responsive to different output formats. We probably want library/bbedit for bbcode. This needs a fair bit of work to catch up with our "enhanced bbcode", but start with images, links, bold and highlight and work from there.
-
-* Photos module - turn photos into normal conversations and fix tagging
-
-* Provide RSS feed support which look like channels (in matrix only - copyright issues)
-
-* Create mobile clients for the top platforms - which involves extending the API so that we can do stuff far beyond the current crop of Twitter/Statusnet clients. Ditto for mobile themes. We can probably use something like the Friendica Android app as a base to start from.
-
-* Implement owned and exchangeable "things".
-
-* Family Account creation - using service classes (an account holder can create a certain number of sub-accounts which are all tied to their subscription - if the subscription lapses they all go away).
-
-* Put mod_admin under Comanche
-
-In many cases some of the work has already been started and code exists so that you needn't start from scratch. Please contact one of the developer channels like Channel One (one@zothub.com) before embarking and we can tell you what we already have and provide some insights on how we envision these features fitting together.
-
-
- \ No newline at end of file
diff --git a/doc/To-Do.md b/doc/To-Do.md
deleted file mode 100644
index 76b78b6ac..000000000
--- a/doc/To-Do.md
+++ /dev/null
@@ -1,23 +0,0 @@
-Documentation we need to write
-==============================
-
-
-* Database schema detailed descriptions
-
-* Complete plugin hook documentation
-
-* API documentation
-
-* Function and code documentation (doxygen)
-
-* New Member guide
-
-* "Extra Feature" reference, description of each
-
-* Detailed Personal Settings Documentation
-
-* Administration Guide (post-install)
-
-* Administration Guide (pre-install)
-
-
diff --git a/doc/Translations.md b/doc/Translations.md
index 724286052..7435a28bf 100644
--- a/doc/Translations.md
+++ b/doc/Translations.md
@@ -89,3 +89,5 @@ Links
------
[1]: http://www.transifex.com/projects/p/red-matrix/
+
+#include doc/macros/main_footer.bb;
diff --git a/doc/Webpages.md b/doc/Webpages.md
index e9943fda8..dafd3661d 100644
--- a/doc/Webpages.md
+++ b/doc/Webpages.md
@@ -11,4 +11,6 @@ The "page link title" box allows a user to specify the "pagelinktitle" of this U
Beneath the page creation box, a list of existing pages will appear with an "edit" link. Clicking this will take you to an editor, similar to that of the post editor, where you can make changes to your webpages.
-If you are the admin of a site, you can specify a channel whose webpages we will use at key points around the site. Presently, the only place this is implemented is the home page. If you specify the channel "admin" and then the channel called "admin" creates a webpage called "home", we will display it's content on your websites home page. We expect this functionality to be extended to other areas in future. \ No newline at end of file
+If you are the admin of a site, you can specify a channel whose webpages we will use at key points around the site. Presently, the only place this is implemented is the home page. If you specify the channel "admin" and then the channel called "admin" creates a webpage called "home", we will display it's content on your websites home page. We expect this functionality to be extended to other areas in future.
+
+#include doc/macros/main_footer.bb;
diff --git a/doc/Widgets.md b/doc/Widgets.md
index 48006adcd..d45f719d9 100644
--- a/doc/Widgets.md
+++ b/doc/Widgets.md
@@ -39,6 +39,12 @@ Some/many of these widgets have restrictions which may restrict the type of page
* categories - categories filter (channel page)
* tagcloud_wall - tagcloud for channel page only
+ * args: 'limit' - number of tags to return (default 50)
+<br />&nbsp;<br />
+
+* catcloud_wall - tagcloud for channel page categories
+ * args: 'limit' - number of categories to return (default 50)
+<br />&nbsp;<br />
* affinity - affinity slider for network page - must be logged in
@@ -79,3 +85,18 @@ Some/many of these widgets have restrictions which may restrict the type of page
* style - CSS style string
<br />&nbsp;<br />
+* photo_rand - display a random photo from one of your photo albums. Photo permissions are honoured
+ * args:
+ * album - album name (very strongly recommended if you have lots of photos)
+ * scale - typically 0 (original size), 1 (640px), or 2 (320px)
+ * style - CSS style string
+ * channel_id - if not your own
+<br />&nbsp;<br />
+
+* random_block - display a random block element from your webpage design tools collection. Permissions are honoured.
+ * args:
+ * contains - only return blocks which include the contains string in the block name
+ * channel_id - if not your own
+<br />&nbsp;<br />
+
+#include doc/macros/main_footer.bb;
diff --git a/doc/Zot---A-High-Level-Overview.md b/doc/Zot---A-High-Level-Overview.md
index 07f353552..990ea037b 100644
--- a/doc/Zot---A-High-Level-Overview.md
+++ b/doc/Zot---A-High-Level-Overview.md
@@ -104,4 +104,6 @@ Good enough. Podunk.edu checks out the story and indeed, it is example.com, and
-And that's the package (the original message). Example.com converts this into a form suitable for viewing by Nickordo and notifies Nickordo that there's a new message. Podunk.edu **might** discover that there are other packages waiting for example.com. If this happens it may also send any and all other waiting packages at this time. Each has the original tracking number attached. \ No newline at end of file
+And that's the package (the original message). Example.com converts this into a form suitable for viewing by Nickordo and notifies Nickordo that there's a new message. Podunk.edu **might** discover that there are other packages waiting for example.com. If this happens it may also send any and all other waiting packages at this time. Each has the original tracking number attached.
+
+#include doc/macros/main_footer.bb;
diff --git a/doc/about.bb b/doc/about.bb
index aa4fde54d..bd91970f6 100644
--- a/doc/about.bb
+++ b/doc/about.bb
@@ -20,5 +20,5 @@ Along the way, Red offers a number of unique goodies:
[b]Privacy:[/b] Red identities (Zot IDs) can be deleted, backed up/downloaded, and cloned. The user is in full control of their data. Should you decide to delete all your content and erase your Zot ID, all you have to do is click on a link and it's immediately deleted from the hub. No questions, no fuss.
-Return to the [zrl=[baseurl]/help/main]Main documentation page[/zrl]
+#include doc/macros/main_footer.bb;
diff --git a/doc/account_basics.bb b/doc/account_basics.bb
index 3c5d28fbc..a8fd6e5fd 100644
--- a/doc/account_basics.bb
+++ b/doc/account_basics.bb
@@ -31,3 +31,5 @@ See Also
[zrl=[baseurl]/help/permissions]Permissions[/zrl]
[zrl=[baseurl]/help/profiles]Profiles[/zrl]
[zrl=[baseurl]/help/remove_account]Remove Account[/zrl]
+
+#include doc/macros/main_footer.bb;
diff --git a/doc/accounts.bb b/doc/accounts.bb
index bf57f1234..7c0378504 100644
--- a/doc/accounts.bb
+++ b/doc/accounts.bb
@@ -1,4 +1,4 @@
This one still needs to be written.
-Return to the [zrl=[baseurl]/help/main]Main documentation page[/zrl]
+#include doc/macros/main_footer.bb;
diff --git a/doc/accounts_profiles_channels_basics.bb b/doc/accounts_profiles_channels_basics.bb
index f803f25e9..f8abd3c3b 100644
--- a/doc/accounts_profiles_channels_basics.bb
+++ b/doc/accounts_profiles_channels_basics.bb
@@ -7,7 +7,7 @@ You have [i]one[/i] account. This consists of your email account and your passwo
[i]Think of your account as the way you authenticate at one Red Matrix site. It lets you do things, such as creating profiles and channels with which you can connect to other people.[/i]
[b]Profile[/b]
-You have surely registered with some other internet services, such as forums or online communities. For all of them you provided some information about yourself, such as date of birth, country, age and the likes. If you like you can see your profile here: [baseurl]/profile/[observer.webname] and edit it by clicking on the pencil icon next to your avatar image.
+You have surely registered with some other internet services, such as forums or online communities. For all of them you provided some information about yourself, such as date of birth, country, age and the likes. [observer=1]If you like you can see your profile here: [baseurl]/profile/[observer.webname] and edit it by clicking on the pencil icon next to your avatar image. [/observer]
Unlike other services Red Matrix offers you the advantage of creating [i]many more profiles[/i]. That way you are able to distinguish between profiles targeted specially at everyone (your public profile), your work mates, your family and your partner.
[i]Think of your profile as the basic information about yourself you tell other people.[/i]
@@ -15,5 +15,5 @@ Unlike other services Red Matrix offers you the advantage of creating [i]many mo
During the registration you created your first [i]channel[/i]. Yes, besides several profiles you are able to have several channels. This might be a bit confusing in the beginning, but let's clear things up. You already have created one channel. You can use this one for the public, to communicate with people about every day life. But perhaps you are an avid book reader and many people are bored by that. So you open a [i]second channel[/i] just for the book lovers, where you all can talk about books as much as you like. Obviously this is a new stream of posts, with a new profile (... or new profile[i]s[/i] ...) and completely different contacts. Some connections might exist in both channels, but there will be some that are exclusive to only one of both. You yourself just switch between both of them just like you would in real life switch when talking to people you meet on the street or people you meet specially to talk about books. You can even connect to yourself, or better: to your other channel. :)
[i]Think of a channel as different spaces dedicated to different topics where you meet with different people.[/i]
-Return to the [zrl=[baseurl]/help/main]Main documentation page[/zrl]
+#include doc/macros/main_footer.bb;
diff --git a/doc/addons.bb b/doc/addons.bb
index a4b76929b..726b437ed 100644
--- a/doc/addons.bb
+++ b/doc/addons.bb
@@ -1,5 +1,5 @@
* [zrl=[baseurl]/help/addons_gnusocial]Posting To Gnu Social[/zrl]
-Return to the [zrl=[baseurl]/help/main]Main documentation page[/zrl]
+#include doc/macros/main_footer.bb;
diff --git a/doc/addons_gnusocial.bb b/doc/addons_gnusocial.bb
index 664f1df39..339add5a9 100644
--- a/doc/addons_gnusocial.bb
+++ b/doc/addons_gnusocial.bb
@@ -60,5 +60,5 @@ If you don't choose this option, you will have an option to send a post to your
If all goes well, you have just cross-posted your RedMatrix post to your account on a GNUsocial instance.
-Return to the [zrl=[baseurl]/help/main]Main documentation page[/zrl]
+#include doc/macros/addons_footer.bb;
diff --git a/doc/api_functions.bb b/doc/api_functions.bb
index ade6efd42..c9d90c716 100644
--- a/doc/api_functions.bb
+++ b/doc/api_functions.bb
@@ -129,5 +129,5 @@ Red proposed API extensions to the Twitter API
api/albums/destroy (R),J
api/friends/permissions (R),J
-Return to the [zrl=[baseurl]/help/main]Main documentation page[/zrl]
+#include doc/macros/main_footer.bb;
diff --git a/doc/api_posting.bb b/doc/api_posting.bb
new file mode 100644
index 000000000..fa9558268
--- /dev/null
+++ b/doc/api_posting.bb
@@ -0,0 +1,23 @@
+[b][size=xx-large]Posting to the Matrix via the API[/size][/b]
+
+The API allows you to post to the red# by HTTP POST request. Below you see an example using the command line tool cURL:
+
+[code]curl -ssl -u [color=blue]$E-Mail[/color]:[color=blue]$Password[/color] -d "[color=blue]$Parameters[/color]" [url][observer=1][observer.baseurl][/observer][observer=0]example.com[/observer]/api/statuses/update
+[/url][/code]
+[table][tr][td]$E-Mail:[/td][td]The E-Mail Adress you use to login[/td][/tr]
+[tr][td]$Password:[/td][td]The Password you use to login[/td][/tr]
+[tr][td]$Parameters:[/td][td]That's the interesting part, here you insert the content you want to send using the following parameters:[/td][/tr][/table]
+
+[ul]
+[*]title: the title of the posting
+[*]channel: the channel you want to post to
+[*]category: a comma-seperated list of categories for the posting
+[*]status: the content of the posting, formatted with BBCode
+ OR
+[*]htmlstatus:the content of the posting, formatted in HTML.
+[/ul]
+
+
+Instead of calling [observer=1][observer.baseurl][/observer][observer=0]example.com[/observer]/api/statuses/update which returns a json (you could also add .json on the end to clarify) output, you can use [observer.baseurl]/api/statuses/update.xml to get an xml formatted return.
+
+Instead of Basic HTTP Authentification you could also use oAuth.
diff --git a/doc/bbcode.html b/doc/bbcode.html
index 97a0bbc6c..fac768879 100644
--- a/doc/bbcode.html
+++ b/doc/bbcode.html
@@ -66,8 +66,16 @@
<li>[rpost=title]Text to post[/rpost] The observer will be returned to their home hub to enter a post with the specified title and body. Both are optional <br />
<li>[qr]text to post[/qr] - create a QR code.<br />
<br />
-Return to the <a href="/help/main">Main documentation page[/a]
+</ul>
+<p>These require a suitable map plugin/addon such as openstreetmap or else the result will be blank</p>
+<ul>
+<li>[map] Generate an inline map using the current browser coordinates of the poster, if browser location is enabled<br />
+<li>[map=latitude,longitude] Generate a map using global coordinates.<br />
+<li>[map]Place Name[/map] Generate a map for a given named location. The first matching location is returned. For instance "Sydney" will usually return Sydney, Australia and not Sydney, Nova Scotia, Canada unless the more precise location is specified. It is highly recommended to use the post preview utility to ensure you have the correct location before submitting the post.<br />
+</ul>
+
+#include doc/macros/main_footer.bb;
</div>
diff --git a/doc/campaign.bb b/doc/campaign.bb
index f3d23baa6..b05846a0b 100644
--- a/doc/campaign.bb
+++ b/doc/campaign.bb
@@ -233,5 +233,5 @@ Raising more than our initial goal of funds, will speed up our development effor
Awesome. We'd be more than happy to chat. You can find us {HERE}
-Return to the [url=[baseurl]/help/main]Main documentation page[/url]
+#include doc/macros/main_footer.bb;
diff --git a/doc/channels.bb b/doc/channels.bb
index 42253a664..ff0446541 100644
--- a/doc/channels.bb
+++ b/doc/channels.bb
@@ -20,11 +20,11 @@ You will be asked to provide a channel name, and a short nick name. For a channe
Once you have created your channel, you will be taken to the settings page, where you can configure your channel, and set your default permissions.
-Once you have done this, your channel is ready to use. At [observer.url] you will find your channel &quot;stream&quot;. This is where your recent activity will appear, in reverse chronological order. If you post in the box marked &quot;share&quot;, the entry will appear at the top of your stream. You will also find links to all the other communication areas for this channel here. The &quot;About&quot; tab contains your &quot;profile&quot;, the photos page contain photo albums, and the events page contains events share by both yourself and your contacts.
+Once you have done this, your channel is ready to use. At [observer=1][observer.url][/observer][observer=0]example.com/channel/username[/observer] you will find your channel &quot;stream&quot;. This is where your recent activity will appear, in reverse chronological order. If you post in the box marked &quot;share&quot;, the entry will appear at the top of your stream. You will also find links to all the other communication areas for this channel here. The &quot;About&quot; tab contains your &quot;profile&quot;, the photos page contain photo albums, and the events page contains events share by both yourself and your contacts.
The &quot;Matrix&quot; page contains all recent posts from across the matrix, again in reverse chronologial order. The exact posts that appear here depend largely on your permissions. At their most permissive, you will receive posts from complete strangers. At the other end of the scale, you may see posts from only your friends - or if you're feeling really anti-social, only your own posts.
As mentioned at the start, many other kinds of channel are possible, however, the creation procedure is the same. The difference between channels lies primarily in the permissions assigned. For example, a channel for sharing documents with colleagues at work would probably want more permissive settings for &quot;Can write to my &quot;public&quot; file storage&quot; than a personal account. For more information, see the permissions section.
-Return to the [zrl=[baseurl]/help/main]Main documentation page[/zrl]
+#include doc/macros/main_footer.bb;
diff --git a/doc/checking_account_quota_usage.bb b/doc/checking_account_quota_usage.bb
index 5bf5b3163..ca7e070ad 100644
--- a/doc/checking_account_quota_usage.bb
+++ b/doc/checking_account_quota_usage.bb
@@ -6,12 +6,15 @@ Here's how you can quickly check how much of your assigned quota you're currentl
[b]Check file storage quota levels[/b]
Visit the following URL in your browser:
-[observer.baseurl]/filestorage/[observer.webname]
+[observer=1][observer.baseurl]/filestorage/[observer.webname][/observer]
+[observer=0]example.com/filestorage/username[/observer]
[b]Check uploaded photos storage quota levels[/b]
-[observer.baseurl]/photos/[observer.webname]
+[observer=1][observer.baseurl]/photos/[observer.webname][/observer]
+[observer=0]example.com/photos/username[/observer]
Example:
-[observer.baseurl]/filestorage/[observer.webname]
+[observer=1][observer.baseurl]/filestorage/[observer.webname][/observer]
+[observer=0]example.com/filestorage/username[/observer]
-Return to the [zrl=[baseurl]/help/main]Main documentation page[/zrl]
+#include doc/macros/main_footer.bb;
diff --git a/doc/cloud.bb b/doc/cloud.bb
index e71da78e8..92b97a21c 100644
--- a/doc/cloud.bb
+++ b/doc/cloud.bb
@@ -24,4 +24,4 @@ See: [zrl=[baseurl]/help/cloud_desktop_clients]Cloud Desktop Clients[/zrl]
When using WebDAV, the file is created with your channel's default file permissions and this cannot be changed from within the operating system. It also may not be as restrictive as you would like. What we've found is that the preferred method of making files private is to first create folders or directories; then visit &quot;filestorage/{{username}}&quot;; select the directory and change the permissions. Do this before you put anything into the directory. The directory permissions take precedence so you can then put files or other folders into that container and they will be protected from unwanted viewers by the directory permissions. It is common for folks to create a &quot;personal&quot; or &quot;private&quot; folder which is restricted to themselves. You can use this as a personal cloud to store anything from anywhere on the web or any computer and it is protected from others. You might also create folders for &quot;family&quot; and &quot;friends&quot; with permission granted to appropriate collections of channels.
-Return to the [zrl=[baseurl]/help/main]Main documentation page[/zrl]
+#include doc/macros/main_footer.bb;
diff --git a/doc/cloud_desktop_clients.bb b/doc/cloud_desktop_clients.bb
index 557acb472..2f099527f 100644
--- a/doc/cloud_desktop_clients.bb
+++ b/doc/cloud_desktop_clients.bb
@@ -18,4 +18,4 @@
Note: There have been reported issues with clients that use "chunked transfer encoding", which includes Apple iOS services, and also the "AnyClient" and "CyberDuck" tools. These work fine for downloads, but uploads often end up with files of zero size. This is caused by an incorrect implemention of chunked encoding in some current FCGI (fast-cgi) implementations. Apache running with PHP as a module does not have these issues, but when running under FCGI you may need to use alternative clients or use the web uploader. At the time of this writing the issue has been open and no updates provided for at least a year. If you encounter zero size files with other clients, please check the client notes; as there are occasional configuration issues which can also produce these symptoms.
-Return to the [zrl=[baseurl]/help/main]Main documentation page[/zrl] \ No newline at end of file
+#include doc/macros/cloud_footer.bb;
diff --git a/doc/comanche.bb b/doc/comanche.bb
index 2ab1d4337..19a74833e 100644
--- a/doc/comanche.bb
+++ b/doc/comanche.bb
@@ -29,6 +29,10 @@ Currently there are three layout templates, unless your site provides additional
edgesthree - three column layout with fixed side margins
full - three column layout with fixed side margins and adds a "header" region beneath the navigation bar
+ redable
+
+ A template for reading longer texts. Three columns: aside, content and right_aside. For maximum readability it is advised to only use the middle content column.
+
[/code]
To choose a layout template, use the 'template' tag.
@@ -43,9 +47,12 @@ To choose the "choklet" template with the "three" flavour:
[code]
[template=three]choklet[/template]
[/code]
+
+Or the "redable" (sic) template:
-
-
+[code]
+ [template]redable[/template]
+[/code]
The default template will be used if no other template is specified. The template can use any names it desires for content regions. You will be using 'region' tags to decide what content to place in the respective regions.
@@ -181,4 +188,4 @@ The 'comment' tag is used to delimit comments. These comments will not appear on
[/region]
[/code]
-Return to the [url=[baseurl]/help/main]Main documentation page[/url]
+#include doc/macros/main_footer.bb;
diff --git a/doc/connecting_to_channels.bb b/doc/connecting_to_channels.bb
index a067b6cf2..901565ad3 100644
--- a/doc/connecting_to_channels.bb
+++ b/doc/connecting_to_channels.bb
@@ -16,4 +16,4 @@ You may also connect with any channel by visiting the &quot;Connections&quot; pa
Some channels are designated &quot;Premium Channels&quot; and may require some action on your part before a connection can be established. The Connect button will for these channels will take you to a page which lists in detail what terms the channel owner has set. If the terms are accepted, the connection will then proceed normally. In some cases, such as with celebrities and world-reknowned publishers, this may involve payment. If you do not agree to the terms, the connection will not proceed, or it may proceed but with reduced permissions allowed on your interactions with that channel.
-Return to the [url=[baseurl]/help/main]Main documentation page[/url]
+#include doc/macros/main_footer.bb;
diff --git a/doc/connecting_to_channels.md b/doc/connecting_to_channels.md
index 8a7b0bdde..1e0d4d3fc 100644
--- a/doc/connecting_to_channels.md
+++ b/doc/connecting_to_channels.md
@@ -31,3 +31,4 @@ Here's their meaning:
Some channels are designated "Premium Channels" and **may** require some action on your part before a connection can be established. The Connect button will for these channels will take you to a page which lists in detail what terms the channel owner has set. If the terms are accepted, the connection will then proceed normally. In some cases, such as with celebrities and world-reknowned publishers, this **may** involve payment. If you do not agree to the terms, the connection will not proceed, or it may proceed but with reduced permissions allowed on your interactions with that channel.
+#include doc/macros/main_footer.bb;
diff --git a/doc/credits.bb b/doc/credits.bb
new file mode 100644
index 000000000..d13b99bdd
--- /dev/null
+++ b/doc/credits.bb
@@ -0,0 +1,76 @@
+[b]Credits[/b]
+
+Mike Macgirvin
+Thomas Willingham
+Fabio Comuni
+Simon L'nu
+marijus
+Tobias Diekershoff
+fabrixxm
+tommy tomson
+Simon
+zottel
+Christian Vogeley
+jeroenpraat
+Michael Vogel
+erik
+Zach Prezkuta
+Paolo T
+Michael Meer
+Michael
+Abinoam P. Marques Jr
+Tobias Hößl
+Alexander Kampmann
+Olaf Conradi
+Paolo Tacconi
+tobiasd
+Devlon Duthie
+Zvi ben Yaakov (a.k.a rdc)
+Alexandre Hannud Abdo
+Olivier Migeot
+Chris Case
+Klaus Weidenbach
+Michael Johnston
+olivierm
+Vasudev Kamath
+pixelroot
+Max Weller
+duthied
+Martin Schmitt
+Sebastian Egbers
+Erkan Yilmaz
+sasiflo
+Stefan Parviainen
+Haakon Meland Eriksen
+Oliver Hartmann (23n)
+Erik Lundin
+habeascodice
+sirius
+Charles
+Tony Baldwin
+Hauke Zuehl
+Keith Fernie
+toclimb
+Daniel Frank
+Matthew Exon
+Michal Supler
+Tobias Luther
+U-SOUND\mike
+mrjive
+nostupidzone
+tonnerkiller
+Antoine G
+Christian Drechsler
+Ludovic Grossard
+RedMatrixCanada
+Stanislav Lechev [0xAF]
+aweiher
+bufalo1973
+dsp1986
+felixgilles
+ike
+maase2
+mycocham
+ndurchx
+pafcu
+Simó Albert i Beltran
diff --git a/doc/dav_dolphin.bb b/doc/dav_dolphin.bb
index 4429303d3..a1ebba394 100644
--- a/doc/dav_dolphin.bb
+++ b/doc/dav_dolphin.bb
@@ -6,4 +6,4 @@ When prompted for a username and password, enter your username (the first part o
Note, if you are already logged in to the web interface via Konqueror, you will not be prompted for further authentication.
-Return to the [zrl=[baseurl]/help/main]Main documentation page[/zrl] \ No newline at end of file
+#include doc/macros/cloud_footer.bb;
diff --git a/doc/dav_konqueror.bb b/doc/dav_konqueror.bb
index f44c11fb2..79108e1d0 100644
--- a/doc/dav_konqueror.bb
+++ b/doc/dav_konqueror.bb
@@ -8,4 +8,5 @@ Additionally, if one has authenticated at a different hub during their normal br
This functionality is normally restricted to the web interface, and is not available to any desktop software other than KDE.
-Return to the [zrl=[baseurl]/help/main]Main documentation page[/zrl] \ No newline at end of file
+#include doc/macros/cloud_footer.bb;
+
diff --git a/doc/dav_mount.bb b/doc/dav_mount.bb
index 62edc09d0..d8cb2e08e 100644
--- a/doc/dav_mount.bb
+++ b/doc/dav_mount.bb
@@ -82,5 +82,5 @@ If that still doesn't work, disable the cache. Note that this has a performance
If it [i]still[/i] doesn't work, there is one more thing you can try. (This one is caused by a bug in older versions of dav2fs itself, so updating to a new version may also help). Enable weak etag dropping by setting [code]drop_weak_etags 1[/code]. Unmount and remount your filesystem to apply the changes.
+#include doc/macros/cloud_footer.bb;
-Return to the [zrl=[baseurl]/help/main]Main documentation page[/zrl]
diff --git a/doc/dav_nautilus.bb b/doc/dav_nautilus.bb
index d3c478aa0..51663b6de 100644
--- a/doc/dav_nautilus.bb
+++ b/doc/dav_nautilus.bb
@@ -6,4 +6,4 @@
4. You will be prompted for your username (same as above) and password
5. Your personal DAV directory will be shown in the window
-Return to the [zrl=[baseurl]/help/main]Main documentation page[/zrl] \ No newline at end of file
+#include doc/macros/cloud_footer.bb;
diff --git a/doc/dav_nemo.bb b/doc/dav_nemo.bb
index a2553c1d5..2c88b0782 100644
--- a/doc/dav_nemo.bb
+++ b/doc/dav_nemo.bb
@@ -15,5 +15,5 @@ Fill the dialog
- Passwort: yourpasswort
Once open you can set a bookmark.
-
-Return to the [zrl=[baseurl]/help/main]Main documentation page[/zrl] \ No newline at end of file
+
+#include doc/macros/cloud_footer.bb;
diff --git a/doc/dav_windows.bb b/doc/dav_windows.bb
index 600944b68..0eaffd4d0 100644
--- a/doc/dav_windows.bb
+++ b/doc/dav_windows.bb
@@ -8,4 +8,4 @@ RedDav using Windows 7 graphical user interface wizard:
5. Type your Red account's user name. IMPORTANT - NO at-sign or domain name.
6. Type your Red password
-Return to the [zrl=[baseurl]/help/main]Main documentation page[/zrl] \ No newline at end of file
+#include doc/macros/cloud_footer.bb;
diff --git a/doc/de/about.bb b/doc/de/about.bb
index 581f55569..313337f17 100644
--- a/doc/de/about.bb
+++ b/doc/de/about.bb
@@ -20,4 +20,4 @@ Dabei bietet Red einige einzigartige Leckerbissen:
[b]Privatsphäre:[/b] Red-Identitäten (Zot-IDs) können gelöscht, gesichert/heruntergeladen und geklont werden. Du hast volle Kontrolle über Deine Daten. Wenn Du Dich entscheidest, all Deine Daten und Deine Zot-ID zu löschen, musst Du nur auf einen Link klicken, und sie werden sofort von dem Server gelöscht. Keine Fragen, keine Umstände.
-[url=[baseurl]/help]Zurück zur Hilfe-Startseite[/url]
+#include doc/macros/main_footer.bb;
diff --git a/doc/de/channels.bb b/doc/de/channels.bb
index 0308d4689..19146cf9b 100644
--- a/doc/de/channels.bb
+++ b/doc/de/channels.bb
@@ -11,16 +11,16 @@ Die wichtigsten Funktionen für einen Kanal, der einen selbst repräsentiert, si
Kurz gesagt, ein Kanal der Dich repräsentiert ist sozusagen „Ich im Internet“.
-Du musst Deinen ersten Kanal erstellen, während Du Dich anmeldest. Du kannst auch weitere Kanäle erstellen und zwischen ihnen wechseln, indem Du auf „Kanal-Auswahl“ klickst.
+Du musst Deinen ersten Kanal erstellen, während Du Dich anmeldest. Du kannst auch weitere Kanäle erstellen und zwischen ihnen wechseln, indem Du auf „Kanal-Manager“ im Menü unter Deinem Profilbild klickst.
-Du wirst nach einem Kanalnamen und einem kurzen Spitznamen gefragt. Für einen Kanal, der Dich repräsentiert, ist es eine gute Idee, hier Deinen Realnamen anzugeben, damit Deine Freunde Dich finden und sich mit Dir verbinden können. Der Spitzname wird genutzt, um Deinen „Webbie“ zu erstellen. Das ist so etwas wie ein Username und sieht aus wie eine E-Mail-Adresse, zum Beispiel spitzname@red-hub.de. Überlege ein bisschen, was Du als Spitzname nutzen willst. Stell Dir vor, Du wirst nach Deinem Webbie gefragt und musst Deinem bekannten dann buchstabieren, dass Dein Webbie „llamas.sind-cool_274@example.com“ ist. „llamassindcool@exmaple.com“ wäre da viel einfacher gewesen.
+Du wirst nach einem Kanalnamen und einem kurzen Spitznamen gefragt. Für einen Kanal, der Dich repräsentiert, ist es eine gute Idee, hier Deinen Realnamen anzugeben, damit Deine Freunde Dich finden und sich mit Dir verbinden können. Der Spitzname wird genutzt, um Deinen „Webbie“ zu erstellen. Das ist so etwas wie ein Username und sieht aus wie eine E-Mail-Adresse, zum Beispiel spitzname@red-hub.de. Überlege ein bisschen, was Du als Spitzname nutzen willst. Stell Dir vor, Du wirst nach Deinem Webbie gefragt und musst Deinem Bekannten dann buchstabieren, dass Dein Webbie „llamas.sind-cool_274@example.com“ ist. „llamassindcool@exmaple.com“ wäre da viel einfacher gewesen.
Nachdem Du Deinen Kanal erstellt hast, wirst Du zu den Einstellungen weitergeleitet. Hier kannst Du Deinen Kanal einrichten und die Standard-Berechtigungen setzen.
-Nachdem Du auch das getan hast, kannst Du Deinen Kanal verwenden. Unter der Addresse https://example.com/channel/spitzname ( [observer.url] ) findest Du Deinen Kanal. Hier werden Deine letzten Aktivitäten gezeigt, die neuesten oben. Wenn Du etwas in die Textbox schreibst, in der „Teilen“ steht, wird der neue Eintrag ganz oben in Deinem Kanal auftauchen. Du findest hier auch Links zu den anderen Kommunikationsbereichen Deines Kanals. Der „Über“-Reiter enthält Dein Profil, der „Fotos“-Reiter Deine Fotoalben, und der Veranstaltungskalender enthält Termine und Veranstaltungen, die Du und Deine Kontakte geteilt haben.
+Nachdem Du auch das getan hast, kannst Du Deinen Kanal verwenden. Unter der Addresse https://example.com/channel/spitzname [observer=1]( [observer.url] )[/observer] findest Du Deinen Kanal. Hier werden Deine letzten Aktivitäten gezeigt, die neuesten oben. Wenn Du etwas in die Textbox schreibst, in der „Teilen“ steht, wird der neue Eintrag ganz oben in Deinem Kanal auftauchen. Du findest hier auch Links zu den anderen Kommunikationsbereichen Deines Kanals. Der „Über“-Reiter enthält Dein Profil, der „Fotos“-Reiter Deine Fotoalben, und der Veranstaltungskalender enthält Termine und Veranstaltungen, die Du und Deine Kontakte geteilt haben.
Die „Matrix“-Seite enthält alle neuen Beiträge aus der gesamten Red Matrix, wieder die neuesten oben. Was genau zu sehen ist ist abhängig von den Zugriffsrechten. Falls die Zugriffsrechte Deines Kanals so eingestellt sind, dass jeder Beiträge in Deinen Stream stellen kann, wirst du auch Beiträge von Dir völlig unbekannten Personen hier sehen. Am anderen Ende der Skala kannst Du die Berechtigungen aber auch so einstellen, dass du nur die Beiträge deiner Freunde oder gar nur Deine eigenen siehst.
Wie zu Anfang erwähnt sind viele Arten von Kanälen möglich, diese unterscheiden sich hauptsächlich durch die Berechtigungen. Das Anlegen dieser Kanäle unterscheidet sich dagegen nicht. Beispiel: Um einen Kanal zum Austausch von Dokumenten zu erstellen, wirst du vermutlich die Berechtigung „Kann in meinen öffentlichen Dateiordner schreiben“ freizügiger einstellen. Für weitere Informationen sieh bitte in der Hilfe unter Zugriffsrechte nach.
-[url=[baseurl]/help]Zurück zur Hilfe-Startseite[/url]
+#include doc/macros/main_footer.bb;
diff --git a/doc/de/features.bb b/doc/de/features.bb
index 65ea45679..41dee301a 100644
--- a/doc/de/features.bb
+++ b/doc/de/features.bb
@@ -1,12 +1,10 @@
-[size=24][b]Features der Red-Matrix[/b][/size]
-
-[url=[baseurl]/help]Zurück zur Hilfe-Startseite[/url]
+[size=large][b]Features der Red-Matrix[/b][/size]
Die Red-Matrix ist ein Allzweck-Kommunikationsnetzwerk mit einigen einzigartigen Features. Sie wurde für eine große Bandbreite von Nutzern entwickelt, von Nutzern sozialer Netzwerke über technisch nicht interessierte Blogger bis hin zu PHP-Experten und erfahrenen Systemadministratoren.
Diese Seite listet einige der Kern-Features von Red auf, die in der offiziellen Distribution enthalten sind. Wie immer bei freier Open-Source-Software sind den Möglichkeiten keine Grenzen gesetzt. Beliebige Erweiterungen, Addons, Themes und Konfigurationen sind möglich.
-[b][size=18]Entwickelt für Privatsphäre und Freiheit[/size][/b]
+[h2]Entwickelt für Privatsphäre und Freiheit[/h2]
Eines der Design-Ziele von Red ist einfache Kommunikations über das Web, ohne die Privatsphäre zu vernachlässigen, wenn die Nutzer das Wünschen. Um dieses Ziel zu erreichen, verfügt Red über einige Features, die beliebige Stufen des Privatsphäre-Schutzes ermöglichen:
@@ -83,7 +81,7 @@ Solche Backups sind ein Weg, um Klone zu erstellen, und können genutzt werden,
Konten und Kanäle können sofort gelöscht werden, indem Du einfach auf einen Link klickst. Das wars. Alle damit verbundenen Inhalte werden sofort aus der Matrix gelöscht (inklusiver aller Beiträge und sonstiger Inhalte, die von dem gelöschten Konto/Kanal erzeugt wurden).
-[b][size=18]Erstellen von Inhalten[/size][/b]
+[h2]Erstellen von Inhalten[/h2]
[b]Beiträge schreiben[/b]
@@ -105,4 +103,4 @@ Genau wie jedes andere Blog-System, soziale Netzwerk oder Mikro-Blogging-Dienst
Vor dem Absenden kann eine Vorschau von Beiträgen betrachtet werden.
-[url=[baseurl]/help]Zurück zur Hilfe-Startseite[/url]
+#include doc/macros/main_footer.bb;
diff --git a/doc/de/main.bb b/doc/de/main.bb
index 0b5ced372..f16016124 100644
--- a/doc/de/main.bb
+++ b/doc/de/main.bb
@@ -7,23 +7,25 @@ Die Red-Matrix ist eine dezentrale Kommunikations- und Publishing-Plattform. Sie
[zrl=[baseurl]/help/features]Features der Red-Matrix[/zrl]
Die Red-Matrix funktioniert schon heute als ein globales verteiltes Netzwerk und beweist täglich ihre Vielseitigkeit und Skalierbarkeit auf kleinen Privatservern wie auch auf riesigen Sites.
+Kommunikationsplattformen für Familien, verteilte Online-Communities, Support-Foren, Blogs und Homepages. Oder auch professionelle Inhalte-Anbieter mit kommerziellen Premium-Kanälen und eingeschränktem Zugriff – was immer Du willst, die Red-Matrix unterstützt Dich in Deinem kreativen Schaffen.
[zrl=[baseurl]/help/what_is_zot]Got Zot? Hast Du schon Zot? Wenn nicht wird es Zeit.[/zrl]
-Zot ist das großartige neue Kommunikationsprotokoll, das extra für die Red-Matrix entwickelt wurde. Als Teilnehmer bist Du dank „Nomadischer Identität“ nicht länger an einen Hoster gebunden. Ziehe einfach auf einen anderen Server um und behalte dabei alle Deine Kontakte, oder klone Deinen Kanal und lasse ihn auf mehreren Servern gleichzeitig laufen – sollte einer davon plötzlich geschlossen werden, ist das kein Problem für Dich. Und bist Du erst Teil der Red-Matrix, musst Du Dich nie wieder mehrfach anmelden, selbst wenn Du Seiten auf einem andere Red-Server betrachtest. Zot ist, was die Red-Matrix besonders macht.
+Zot ist das großartige neue Kommunikationsprotokoll, das extra für die Red-Matrix entwickelt wurde. Als Mitglied bist Du dank „Nomadischer Identität“ nicht länger an einen einzigen Server oder Anbieter gebunden. Ziehe einfach auf einen anderen Server um und behalte dabei alle Deine Kontakte, oder klone Deinen Kanal und lasse ihn auf mehreren Servern gleichzeitig laufen – sollte einer davon plötzlich geschlossen werden, ist das kein Problem für Dich. Und bist Du erst Teil der Red-Matrix, musst Du Dich nie wieder mehrfach anmelden, selbst wenn Du Seiten auf einem andere Red-Server betrachtest. Zot ist, was die Red-Matrix besonders macht.
[size=large][b]Erste Schritte[/b][/size]
+[zrl=[baseurl]/help/Privacy]Datenschutz[/zrl]
[zrl=[baseurl]/help/registration]Ein Konto registrieren[/zrl]
[zrl=[baseurl]/help/accounts_profiles_channels_basics]Du in der Red-Matrix: Konten, Profile und Kanäle kurz erklärt[/zrl]
[zrl=[baseurl]/help/profiles]Profile[/zrl]
[zrl=[baseurl]/help/channels]Kanäle[/zrl]
+[zrl=[baseurl]/help/roles]Zugriffsrechte-Kategorien und Kanaltypen[/zrl]
[zrl=[baseurl]/help/first-post]Dein erster Beitrag[/zrl]
[zrl=[baseurl]/help/connecting_to_channels]Sich mit anderen Kanälen verbinden[/zrl]
-[zrl=[baseurl]/help/privacy]Privatsphäre[/zrl]
[zrl=[baseurl]/help/permissions]Zugriffsrechte und Verschlüsselung: Du hast alles unter Kontrolle[/zrl]
[zrl=[baseurl]/help/cloud]Cloud-Speicher[/zrl]
-[zrl=[baseurl]/help/remove_account]Konto löschen[/zrl]
+[zrl=[baseurl]/help/remove_account]Einen Kanal oder das ganze Konto löschen[/zrl]
-[size=large][b]Nutzung der Red-Matrix[/b][/size]
+[size=large][b]Hilfe für RedMatrix-Mitglieder[/b][/size]
[zrl=[baseurl]/help/tags_and_mentions]Tags und Erwähnungen[/zrl]
[zrl=[baseurl]/help/webpages]Webseiten[/zrl]
[zrl=[baseurl]/help/bbcode]BBcode-Referenz für Posts und Kommentare[/zrl]
@@ -31,34 +33,38 @@ Zot ist das großartige neue Kommunikationsprotokoll, das extra für die Red-Mat
[zrl=[baseurl]/help/cloud_desktop_clients]Desktop-Anwendungen und die Cloud[/zrl]
[zrl=[baseurl]/help/AdvancedSearch]Fortgeschrittene Suche im Kanalverzeichnis[/zrl]
[zrl=[baseurl]/help/addons]Hilfe zu Addons[/zrl]
-[zrl=[baseurl]/help/nomadic-identity]Got Zot? Nomadische Identität, Kanal-Klone und mehr[/zrl]
+[zrl=[baseurl]/help/diaspora_compat]Kompatibilität zum Diaspora-Protokoll (zur Kommunikation mit Kontakten aus Diaspora und Friendica)[/zrl]
+[zrl=[baseurl]/help/faq_members]FAQ für Mitglieder[/zrl]
-[size=large][b]Häufig gestellte Fragen für Nutzer[/b][/size]
-[zrl=[baseurl]/help/faq_users]FAQ für Nutzer[/zrl]
-
-[size=large][b]Für Administratoren[/b][/size]
+[size=large][b]Hilfe für Administratoren[/b][/size]
[zrl=[baseurl]/help/install]Installation[/zrl]
[zrl=[baseurl]/help/debian_install]Einfache Installation unter Debian mit einem Skript[/zrl]
[zrl=[baseurl]/help/red2pi]Red auf einem Raspberry Pi installieren[/zrl]
-[zrl=[baseurl]/help/problems-following-an-update]Probleme nach einem Software-Update[/zrl]
[zrl=[baseurl]/help/troubleshooting]Troubleshooting-Tipps[/zrl]
-
-[size=large][b]Häufig gestellte Fragen für Sever-Admins[/b][/size]
+[zrl=[baseurl]/help/hidden_configs]Versteckte Konfigurations-Optionen[/zrl]
[zrl=[baseurl]/help/faq_admins]FAQ für Admins[/zrl]
[size=large][b]Technische Dokumentation[/b][/size]
+[zrl=[baseurl]/help/history]Die Geschichte der RedMatrix[/zrl]
+[zrl=[baseurl]/help/Zot---A-High-Level-Overview]Zot – ein grober Überblick[/zrl]
+[zrl=[baseurl]/help/zot]Eine Einführung ins Zot-Protokoll[/zrl]
+[zrl=[baseurl]/help/zot_structures]Zot-Strukturen[/zrl]
[zrl=[baseurl]/help/comanche]Seitenbeschreibung in Comanche[/zrl]
[zrl=[baseurl]/help/Creating-Templates]Vorlagen erstellen mit Comanche[/zrl]
[zrl=[baseurl]/help/Widgets]Widgets, die Teil der Standardinstallation sind[/zrl]
[zrl=[baseurl]/help/plugins]Plugins[/zrl]
+[zrl=[baseurl]/help/DerivedTheme1]Einen Theme basierend auf einem anderen erstellen[/zrl]
[zrl=[baseurl]/help/schema_development]Schemata[/zrl]
+[zrl=[baseurl]/help/Translations]Ãœbersetzungen[/zrl]
[zrl=[baseurl]/help/developers]Entwickler[/zrl]
[zrl=[baseurl]/help/intro_for_developers]Einführung für Entwickler[/zrl]
[zrl=[baseurl]/help/api_functions]API-Funktionen[/zrl]
+[zrl=[baseurl]/help/api_posting]Mit der API einen Beitrag erstellen[/zrl]
[zrl=[baseurl]/help/developer_function_primer]Ãœbersicht der wichtigsten Red-Funktionen[/zrl]
[zrl=[baseurl]/doc/html/]Code-Referenz (mit doxygen generiert - setzt Cookies)[/zrl]
[zrl=[baseurl]/help/to_do_doco]To-Do-Liste für das Projekt Red-Dokumentation[/zrl]
[zrl=[baseurl]/help/to_do_code]To-Do-Liste für Entwickler[/zrl]
+[zrl=[baseurl]/help/roadmap]Roadmap für Version 3[/zrl]
[zrl=[baseurl]/help/git_for_non_developers]Git für Nicht-Entwickler[/zrl]
[size=large][b]Häufig gestellte Fragen für Entwickler[/b][/size]
@@ -70,5 +76,6 @@ Zot ist das großartige neue Kommunikationsprotokoll, das extra für die Red-Mat
[url=https://github.com/friendica/red-addons]Addons-Website[/url]
[url=https://zothub.com/channel/one]Entwickler-Kanal[/url]
+[url=[baseurl]/help/credits]RedMatrix Credits[/url]
[size=large][b]Ãœber diesen Red-Server[/b][/size]
[zrl=[baseurl]/siteinfo]Informationen zu diesem Server und der Red-Version[/zrl]
diff --git a/doc/de/profiles.bb b/doc/de/profiles.bb
index d6603dd38..cc2d94fb6 100644
--- a/doc/de/profiles.bb
+++ b/doc/de/profiles.bb
@@ -36,4 +36,4 @@ Im Verzeichnis (Kanal-Anzeiger) kannst Du nach Leuten suchen, die ihre Profile v
Auf Deiner „Verbindungen“-Seite und im Verzeichnis (Kanal-Anzeiger) gibt es einen Link „Vorschläge“ bzw. „Kanal-Vorschläge“. Dort findest Du Kanäle, die gleiche oder ähnliche Schlüsselwörter im Profil haben wie Du. Je mehr Schlüsselwörter Du in Dein Standard-Profil einträgst, desto besser werden die Suchergebnisse. Sie sind nach relevanz sortiert.
-[zrl=[baseurl]/help]Zurück zur Hilfe-Startseite[/zrl]
+#include doc/macros/main_footer.bb;
diff --git a/doc/de/registration.bb b/doc/de/registration.bb
index e6c11810a..c7aaac55e 100644
--- a/doc/de/registration.bb
+++ b/doc/de/registration.bb
@@ -12,7 +12,7 @@ Gib ein Passwort Deiner Wahl ein und wiederhole es in der zweiten Box, um sicher
[b]Nutzungsbedingungen[/b]
-Klicke auf den Link, um die Nutzungsbedingungen dieses Servers zu lesen. Wenn Du sie gelesen hast, setze den Haken im Registrierungsformular, um sie zu akzeptieren.
+Klicke auf den Link, um die [zrl=[baseurl]/help/TermsOfService]Nutzungsbedingungen[/zrl] dieses Servers zu lesen. Wenn Du sie gelesen hast, setze den Haken im Registrierungsformular, um sie zu akzeptieren.
[b]Registrieren[/b]
@@ -27,10 +27,10 @@ Der Kanal-Name ist der Titel oder eine kurze Beschreibung des Kanals. Der „Spi
Wenn Dein Kanal angelegt ist, geht es direkt weiter zu den Einstellungen. Dort kannst Du Zugriffsrechte setzen, Funktionen zu- oder abschalten und so weiter. Diese Punkte werden auf den entsprechenden Hilfeseiten erklärt.
Siehe auch
-[zrl=[baseurl]/help/accounts_profiles_channels_basics]Konten, Profile und Kanäle kurz erklärt[/zrl]
+[zrl=[baseurl]/help/accounts_profiles_channels_basics]Grundlagen zu Identitäten in der RedMatrix[/zrl]
[zrl=[baseurl]/help/accounts]Konten[/zrl]
[zrl=[baseurl]/help/profiles]Profile[/zrl]
[zrl=[baseurl]/help/permissions]Zugriffsrechte[/zrl]
[zrl=[baseurl]/help/remove_account]Konto löschen[/zrl]
-[url=[baseurl]/help]Zurück zur Hilfe-Startseite[/url]
+#include doc/macros/main_footer.bb;
diff --git a/doc/debian_install.bb b/doc/debian_install.bb
index f441025ae..e8f4a7bd3 100644
--- a/doc/debian_install.bb
+++ b/doc/debian_install.bb
@@ -1,13 +1,13 @@
[b]Installing On Debian[/b]
While following the instructions for any other installation will work on Debian, for this platform we also provide an install script
-which can be [zrl=http://beardyunixer.com:1234/?p=debian-install-script.git;a=tree]downloaded here[/zrl]
+which can be [url=http://gitweb.whogotzot.com/debian-install-script]downloaded here[/url]
[b]THIS SCRIPT IS MEANT TO BE RUN ON A NEW OR JUST REINSTALLED SERVER[/b]
Some programs such as Apache &amp; Samba are removed by this script.
-Note, this script will use Nginx as the webserver, and dropbear for ssh. It will also install PHP and MySQL from the DotDeb repository. The DotDeb is not an official Debian repository, though it is maintained by Debian developers.
+Note, this script will use Nginx as the webserver. It will also install PHP and MySQL from the DotDeb repository. The DotDeb is not an official Debian repository, though it is maintained by Debian developers.
The file setup-debian.sh has to be on your server.
@@ -17,7 +17,7 @@ For the initial setup git may not be installed on your server, to install git:
If wget is installed try
-[code]wget "http://beardyunixer.com:1234/?p=debian-install-script.git;a=blob_plain;f=debian-setup.sh;hb=HEAD" -O debian-setup.sh[/code]
+[code]wget http://git.beardyunixer.com/debian-install-script/blob/HEAD:/debian-setup.sh[/code]
To install wget:
[code]apt-get install wget[/code]
@@ -29,4 +29,4 @@ To install Red for domain example.com, after the initial server setup run
[code]bash setup-debian.sh red example.com[/code]
-Return to the [zrl=[baseurl]/help/main]Main documentation page[/zrl]
+#include doc/macros/main_footer.bb;
diff --git a/doc/dev-function-overview.md b/doc/dev-function-overview.md
index 3cda8f7c4..5e382201f 100644
--- a/doc/dev-function-overview.md
+++ b/doc/dev-function-overview.md
@@ -48,5 +48,4 @@ Returns the translated variant of $string for the current language or $string (d
Shorthand test to see if variable $var is set and is not empty. Tests vary by type. Returns false if $var or $key is not set.
If variable is set, returns 1 if has 'non-zero' value, otherwise returns 0. -- e.g. x('') or x(0) returns 0;
-Return to the [url=[baseurl]/help/main]Main documentation page[/url]
-
+#include doc/macros/main_footer.bb;
diff --git a/doc/developer_function_primer.bb b/doc/developer_function_primer.bb
index 144664615..3db853b82 100644
--- a/doc/developer_function_primer.bb
+++ b/doc/developer_function_primer.bb
@@ -20,13 +20,13 @@ Returns the global app structure ($a).
(App:: is usually assigned to the global $a), so $a-&gt;get_observer() or get_app()-&gt;get_observer() - returns an xchan structure representing the current viewer if authenticated (locally or remotely).
-[b]get_config($family,$key), get_pconfig($uid,$family,$key)[/b]
+[b]get_config($family,$key), get_pconfig($uid,$family,$key), get_xconfig($xchan_hash,$family,$key)[/b]
Returns the config setting for $family and $key or false if unset.
[b] set_config($family,$key,$value), set_pconfig($uid,$family,$key,$value)[/b]
-Sets the value of config setting for $family and $key to $value. Returns $value. The config versions operate on system-wide settings. The pconfig versions get/set the values for a specific integer uid (channel_id).
+Sets the value of config setting for $family and $key to $value. Returns $value. The config versions operate on system-wide settings. The pconfig versions get/set the values for a specific integer uid (channel_id). The xconfig version get/sets the value for a specific xchan hash - generally used for remote users.
[b]dbesc()[/b]
@@ -44,4 +44,4 @@ Returns the translated variant of $string for the current language or $string (d
Shorthand test to see if variable $var is set and is not empty. Tests vary by type. Returns false if $var or $key is not set. If variable is set, returns 1 if has 'non-zero' value, otherwise returns 0. -- e.g. x('') or x(0) returns 0;
-Return to the [url=[baseurl]/help/main]Main documentation page[/url]
+#include doc/macros/main_footer.bb;
diff --git a/doc/developers.bb b/doc/developers.bb
index a29a848e0..5365fd77a 100644
--- a/doc/developers.bb
+++ b/doc/developers.bb
@@ -64,4 +64,7 @@ In the interests of consistency we adopt the following code styling. We may acce
[li] Generally speaking, opening braces go on the same line as the thing which opens the brace. They are the last character on the line. Closing braces are on a line by themselves. [/li]
-Return to the [url=[baseurl]/help/main]Main documentation page[/url]
+[b]See Also[/b]
+[zrl=[baseurl]/help/sql_conventions]SQL Conventions[/zrl]
+
+#include doc/macros/main_footer.bb;
diff --git a/doc/diaspora_compat.md b/doc/diaspora_compat.md
new file mode 100644
index 000000000..3829a9c64
--- /dev/null
+++ b/doc/diaspora_compat.md
@@ -0,0 +1,57 @@
+##Diaspora Compatibility
+
+Diaspora protocol compatibility is presently considered an ***experimental*** feature. It may not be available on all sites and presents some serious compatibility issues with redmatrix. At the moment these compatibility issues will be shared with "Friendica-over-Diaspora" protocol communications.
+
+Private mail retraction (unsend) will not be possible on Diaspora.
+
+Private posts and their associated comments are sent in plaintext email notifications in Diaspora and Friendica. This is a major privacy issue and affects any private communications you have where *any* member of the conversation is on another network. Be aware of it.
+
+Access control only works on posts and comments. Diaspora members will get permission denied trying to access any other access controlled redmatrix objects such as files, photos, webpages, chatrooms, etc. In the case of private photos that are linked to posts, they will see a "prohibited sign" instead of the photo. Diaspora has no concept of private media. There is no workaround except to make your media resources public (to everybody on the internet).
+
+
+Edited posts will not be delivered. Diaspora members will see the original post/comment without edits. There is no mechanism in the protocol to update an existing post. We cannot delete it and submit another invisibly because the message-id will change and we need to keep the same message-id on our own network. The only workaround is to delete the post/comment and do it over. We may eventually provide a way to delete the out of date copy only from Diaspora and keep it intact on networks that can handle edits.
+
+Nomadic identity will not work with Diaspora. We will eventually provide an **option** which will allow you to "start sharing" from all of your clones when you make the first connection. The Diaspora person does not have to accept this, but it will allow your communications to continue if they accept this connection. Without this option, if you go to another server from where you made the connection originally or you make the connection before creating the clone, you will need to make friends with them again from the new location.
+
+Post expiration is not supported on Diaspora. We will provide you an option to not send expiring posts to that network. In the future this may be provided with a remote delete request.
+
+End-to-end encryption is not supported. We will translate these posts into a lock icon, which can never be unlocked from the Diaspora side.
+
+Message verification will eventually be supported.
+
+Multiple profiles are not supported. Diaspora members can only see your default profile.
+
+Birthday events will not appear in Diaspora. Other events will be translated and sent as a post, but all times will either be in the origination channel's timezone or in GMT. We do not know the recipient's timezone because Diaspora doesn't have this concept.
+
+We currently allow tags to be hijacked by default. We will provide an option to allow you to prevent the other end of the network from hijacking your tags and point them at its own resources.
+
+Community tags will not work. We will send a tagging activity as a comment. It won't do anything.
+
+Privacy tags (@!somebody) will not be available to Diaspora members. These tags may have to be stripped or obscured to prevent them from being hijacked - which could result in privacy issues.
+
+Plus-tagged redmatrix forums should work from Diaspora.
+
+Premium channel redirects will not be sent. If you allow Diaspora connections, they will not see that you have a premium channel.
+
+You cannot use Diaspora channels as channel sources.
+
+
+Dislikes of posts will be converted to comments and you will have the option to send these as comments or not send them to Diaspora (which does not provide dislike). Currently they are not sent.
+
+We will do the same for both likes and dislikes of comments. They can either be sent as comments or you will have the ability to prevent them from being transmitted to Diaspora. Currently they are not sent.
+
+
+"observer tags" will be converted to empty text.
+
+
+Embedded apps will be translated into links.
+
+
+Embedded page design elements (work in progress) will be either stripped or converted to an error message.
+
+Diaspora members will not appear in the directory.
+
+
+There are differences in oembed compatibility between the networks. Some embedded resources will turn into a link on one side or the other.
+
+#include doc/macros/main_footer.bb;
diff --git a/doc/doco.bb b/doc/doco.bb
new file mode 100644
index 000000000..7ca64cfea
--- /dev/null
+++ b/doc/doco.bb
@@ -0,0 +1,33 @@
+[b]Creating Documentation[/b]
+
+To contribute documentation, simply put some words in a cunning order, and make their existence known to a developer. You can do this literally anywhere as long as a developer can see it. Once made aware, somebody will check it in for you. You should try to avoid proprietary formats, or locations that require authentication with methods other than Zot in order to make it easy for a developer to access, but even this is not a strict requirement.
+
+If you wish to contribute directly, that's fine too. To contribute directly, documentation should be in one of the following formats:
+
+[li]Markdown[/li]
+[li]BBCode[/li]
+[li]HTML[/li]
+[li]Plain Text[/li]
+
+Other formats are also allowed, but support for the format must be added to mod/help.php first.
+
+If editing a plain text file, please keep column width to 80. This is because plain text is used in instances where we may not have a working installation - the installation documentation, for example - and it should be easy to read these from a CLI text editor.
+
+The advantage of Markdown is that it is human readable.
+
+The advantage of BBCode is that it is identity aware.
+
+Therefore, if using BBCode, try to make the most of it:
+[li]Use ZRL links where appropriate to ensure a link to another site retains authentication and keeps identity based documentation working[/li]
+[li]Use baseurl or observer.baseurl tags where appropriate instead of example.com for authenticated viewers.[/li]
+[li]Support non-authenticated users with observer=0 tags. We presently do not do this due to historical oversights. This needs adding everywhere[/li]
+
+[b]Translations[/b]
+
+To translate documentation, or provided documentation in languages other than English:
+[li]Create a directory in doc/ with your two letter country code if it doesn't already exist (eg, doc/de/ for German or doc/fr/ for French)[/li]
+[li]Create a document with the same filename as the English version, but with content in your own language. This allows us to fallback to the English if the translation for a particular page is not provided[/li]
+
+To create documentation that has no equivalent file in English, you can create a new file with a name of your choosing - but you'll also need to provide a localised version of the index page (main.bb in English) to make it accessible from the menu.
+
+#include doc/macros/main_footer.bb;
diff --git a/doc/external-resource-links.bb b/doc/external-resource-links.bb
index b84096b50..ca1d6f55e 100644
--- a/doc/external-resource-links.bb
+++ b/doc/external-resource-links.bb
@@ -4,21 +4,20 @@
[b]Third-Party Themes[/b]
[*][url=https://github.com/omigeot/redstrap3]Redstrap[/url]
-[*][url=https://github.com/23n/Pluto]Pluto[/url]
[*][url=https://bitbucket.org/tobiasd/red-clean]Clean[/url]
[*][url=https://github.com/tonybaldwin/redmatrixthemes/]nubasic[/url]
[b]Third-Party Addons[/b]
-[*][url=http://beardyunixer.com:1234/?p=red-addons.git;a=tree]Webpage/Publishing orientated addons and modules[/url]
+[*][url=http://gitweb.whogotzot.com/red-addons-extra/tree]Additional RedMatrix addons[/url]
[*][url=https://abcentric.net/git/abcjsplugin.git]ABCjs integration - display scores in posts (WIP)[/url]
-
+[*][url=http://gitweb.whogotzot.com/extra_dir_fns/tree]Extra directory functions[/url]
[b]Related Projects[/b]
[*][url=https://addons.mozilla.org/en-US/firefox/addon/redshare/]Redshare for Firefox[/url]
[*][url=https://github.com/cvogeley/red-for-android]Red for Android[/url]
[*][url=https://github.com/zzottel/feed2red]feed2red.pl (posts Atom/RSS feeds to channel)[/url]
-
+[*][url=http://gitweb.whogotzot.com/red-stable/tree]Red Stable - up-to-date-but-not-bleeding-edge RedMatrix distribution[/url]
[b]Utilities[/b]
-[*][url=http://beardyunixer.com:1234/?p=debian-install-script.git;a=tree]Debian Install Script[/url]
+[*][url=http://gitweb.whogotzot.com/debian-install-script]Debian Install Script[/url]
-Return to the [url=[baseurl]/help/main]Main documentation page[/url]
+#include doc/macros/main_footer.bb;
diff --git a/doc/extra_features.bb b/doc/extra_features.bb
index 372ac6bbe..2e877375e 100644
--- a/doc/extra_features.bb
+++ b/doc/extra_features.bb
@@ -94,4 +94,4 @@ Ability to mark special posts with a star indicator
Provide a personal tag cloud on your channel page
-Return to the [zrl=[baseurl]/help/main]Main documentation page[/zrl]
+#include doc/macros/main_footer.bb;
diff --git a/doc/faq_admins.bb b/doc/faq_admins.bb
index 1679ec246..953563230 100644
--- a/doc/faq_admins.bb
+++ b/doc/faq_admins.bb
@@ -35,14 +35,37 @@ Don't listen on port 443 if you cannot use it. It is strongly recommended to so
valid SSL certificate rather than disabling port 443.
[*]
+[b]How do I update a non-Git install?[/b]
+1) Backup .htconfig.php
+2) Backup everything in store/
+3) Backup any custom changes in mod/site/ and view/site
+3) Delete your existing installation
+4) Upload the new version.
+5) Upload the new version of themes and addons.
+6) Restore everything backed up earlier.
+
+[*]
[b]What do I need to do when moving my hub to a different server[/b]
1) Git clone on the new server. Repeat the process for any custom themes, and addons.
-2) Copy .htconfig.php
+2) Rsync .htconfig.php
3) Rsync everything in store/
-4) Rsync everything in custom/ (this will only exist if you have custom modules)
+4) Rsync everything in mod/site/ and view/site (these will only exist if you have custom modules)
5) Dump and restore DB.
+[*]
+[b]How do I reinstall an existing hub on the same server?[/b]
+
+1) [code]git reset --hard HEAD[/code] will reset all files to their upstream defaults. This will not reset any local files that do not also exist upstream. Eg, if you have local changes to mod/channel.php, this will reset them - but will not reset any changes in mod/site/channel.php
+2) If you absolutely must reinstall - for example, if you need to upgrade operating system - follow the steps for moving to a different server, but instead of using rsync, backup and restore some other way.
+
+Do not reinstall a hub with a fresh database and fresh .htconfig.php unless as a very last resort. Creating a temporary account and ask for help via a support channel for non-trivial reinstalls is preferable to reinstalling fresh.
+
+[*]
+[b]How do I set the default homepage for logged out viewers?[/b]
+
+Use the custom_home addon available in the main addons repository.
+
[/ul]
-Return to the [zrl=[baseurl]/help/main]Main documentation page[/zrl]
+#include doc/macros/main_footer.bb;
diff --git a/doc/faq_developers.bb b/doc/faq_developers.bb
index 192dcb5c5..61843648a 100644
--- a/doc/faq_developers.bb
+++ b/doc/faq_developers.bb
@@ -1,6 +1,5 @@
[size=large][b]Frequently Asked Questions For Developers[/b][/size]
-(...) still needs to be written (...)
[ul]
[*][b]What does $a mean?[/b]
@@ -26,3 +25,7 @@ function foo() {
}
[/code]
[/ul]
+
+
+#include doc/macros/main_footer.bb;
+
diff --git a/doc/faq_members.bb b/doc/faq_members.bb
new file mode 100644
index 000000000..a089b8b0c
--- /dev/null
+++ b/doc/faq_members.bb
@@ -0,0 +1,15 @@
+[size=large][b]The Red Matrix FAQ[/b][/size]
+
+[ul]
+[*][b]I am able to edit a post's text after I saved it, but is there a way to change the permissions?[/b]
+Short anser: No, there isn't. There are reasons. You are able to change permissons to your files, photos and the likes, but not to posts after you have saved them. The main reason is: Once you have saved a post it is being distributed either to the public channel and from there to other Red Matrix servers or to those you intended it to go. Just like you cannot reclaim something you gave to another person, you cannot change permissions to Red Matrix posts. We would need to track everywhere your posting goes, keep track of everyone you allowed to see it and then keep track of from whom to delete it.
+If a posting is public this is even harder, as the Red Matrix is a global network and there is no way to follow a post, let alone reclaim it reliably. Other networks that may receive your post have no reliable way to delete or reclaim the post.
+[*][b]I downloaded my channel and imported it (cloned my identity) to another site but there is no content, no posts, no photos. What is wrong???[/b]
+To be honest: Nothing. That's the way it is right now. Technically it is surely possible to take at least your own posts and maybe even files with you, but this has simply put not implemented yet. When creating this feature we thought that keeping all your contacts was more important. Your friends have already seen your old content. Once we find someone willing to implement this, it will be done. :)
+[*][b]I can't see private resources[/b]
+You have probably disabled third party cookies. You need to enable them for remote authentication to work.
+[*][b]There are a lot of foreign language posts. Let's auto-translate them.[/b]
+There are also a lot of [b]private[/b] foreign language posts and auto-translation services would require us to transmit these private messages to the translation service; and we don't know what they will do with them on their servers. Actually we do know thanks to Edward Snowden. Our best bet is a project called [b][i]Apertium[/i][/b] which is an open source translator we can install locally. It is currently missing German translations - which are the most requested translation in the matrix. Once again, this will be implemented when we find somebody who really wants to make it happen.
+[/ul]
+
+#include doc/macros/main_footer.bb;
diff --git a/doc/faq_users.bb b/doc/faq_users.bb
deleted file mode 100644
index 1a864f64a..000000000
--- a/doc/faq_users.bb
+++ /dev/null
@@ -1,14 +0,0 @@
-[size=large][b]The Red Matrix FAQ[/b][/size]
-
-[ul]
-[*][b]I am able to edit a post's text after I saved it, but is there a way to change the permissions?[/b]
-Short anser: No, there isn't. This has got some resons. You are able to change permissons to your files, photos and the likes, but not to posts after you have saved them. The reason is: Once you have saved a post it is being distributed either to the public channel and from there to other Red Matrix servers or to those you intended it to go. Just like you cannot reclaim a few after you have sold them off to some people, you cannot change permissions to Red Matrix posts. We would need to track everywhere your posting goes, keep track of everyone you allowed to see it and then keep track of from whom to delete it.
-If a posting is public this is even harder, as the Red Matrix is a global network and there is no way to follow a post, let alone reclaim it reliably.
-Once you have sent out an email there too is no way to take it back. So think wisely and keep alert when posting. :)
-[*][b]I downloaded my channel and uploaded it to another site but there is no content, no posts, no photos. What is wrong???[/b]
-To be honest: Nothing. That's the way it is right now. Technically it is surely possible to take at least your own posts and maybe even files with you, but this has simply put not implemented yet. When creating this feature we thought that keeping all your contacts was more important. Once we find someone willing to implement this, it will be done. :)
-[*][b]I can't see private resources[/b]
-You have probably disabled third party cookies. You need to enable them for remote authentication to work.
-[/ul]
-
-Return to the [zrl=[baseurl]/help/main]Main documentation page[/zrl]
diff --git a/doc/features.bb b/doc/features.bb
index 388f9bc91..5e42532f2 100644
--- a/doc/features.bb
+++ b/doc/features.bb
@@ -1,17 +1,17 @@
[b]Features[/b]
-[b][color= grey][size=24]Red Matrix Features[/size][/color][/b]
+[b][size=24]Red Matrix Features[/size][/b]
The Red Matrix is a general-purpose communication network, with several unique features. It is designed to be used by the widest range of users on the web, from non-technical bloggers, to expert PHP programmers and seasoned systems administrators.
-This page lists some of the core features of Red that are bundled with the official. As with any free and open source software, there may be many other extensions, additions, plugins, themes and configurations that are limited only by the needs and imagination of Red's users.
+This page lists some of the core features of Red that are bundled with the official release. As with most free and open source software, there may be many other extensions, additions, plugins, themes and configurations that are limited only by the needs and imagination of Red's users.
-[b][color= grey][size=20]Built for Privacy and Freedom[/size][/color][/b]
+[b][size=20]Built for Privacy and Freedom[/size][/b]
One of the design goals of Red is to enable easy communication on the web, while preserving privacy, if so desired by users. To achieve this goal, Red includes a number of features allowing arbitrary levels of privacy:
-[b][color= grey]Affinity Slider[/color][/b]
+[b]Affinity Slider[/b]
When adding contacts in the Red Matrix, users have the option of assigning affinity levels to the new member in their contact list. For example, when adding someone who happens to be a person who's blog you follow, you could assign their channel an affinity level of &quot;Acquaintances&quot;.
@@ -23,89 +23,174 @@ At this point, Red's [i]Affinity Slider[/i] tool, which usually appears at the t
The Affinity Slider allows instantaneous filtering of large amounts of content, grouped by levels of closeness.
-[b][color= grey]Access Control Lists[/color][/b]
+[b]Access Control Lists[/b]
-When sharing content with someone in their contact list, users have the option of restricting who sees the content. By clicking on the padlock underneath the sharing box, one could choose desired recipients of the post, by clicking on their names.
+When sharing content with someone in their contact list, users have the option of restricting who sees the content. By clicking on the padlock underneath the sharing box, one may choose desired recipients of the post, by clicking on their names.
Once sent, the message will be viewable only by the sender and the selected recipients. In other words, the message will not appear on any public walls.
+Access Control Lists may be applied to content and posts, photos, events, webpages, chatrooms and files.
-[b][color=grey]Private Message Encryption and Privacy Concerns[/color][/b]
+[b]Single Sign-on[/b]
-In the Red Matrix, public messages are not encrypted prior to leaving the originating server, they are also stored in the database in clear text.
+Access Control Lists work for all channels in the matrix due to our unique single sign-on technology. Most internal links provide an identity token which can be verified on other Redmatrix sites and used to control access to private resources. You login once to your home hub. After that, authentication to all Redmatrix resources is "magic".
-Messages marked [b][color=white]private[/color][/b], however, are encrypted with AES-CBC 256-bit symmetric cipher, which is then protected (encrypted in turn) by public key cryptography, based on 4096-bit RSA keys, associated with the channel that is sending the message.
-Each Red channel has it's own unique set of private and associated public RSA 4096-bit keys, generated when the channels is first created.
+[b]WebDAV enabled File Storage[/b]
-[b][color= grey]TLS/SSL[/color][/b]
+Files may be uploaded to your personal storage area using your operating system utilities (drag and drop in most cases). You may protect these files with Access Control Lists to any combination of Redmatrix members (including some third party network members) or make them public.
+
+[b]Photo Albums[/b]
+
+Store photos in albums. These may be protected by Access Control Lists.
+
+[b]Events Calendar[/b]
+
+Create and manage events, which may also be protected with Access Control Lists. Events can be exported to other software using the industry standard vcalendar/iCal format and shared in posts with others. Birthday events are automatically added from your friends and converted to your correct timezone so that you will know precisely when the birthday occurs - no matter where you are located in the world in relation to the birthday person.
+
+[b]Chatrooms[/b]
+
+You may create any number of personal chatrooms and allow access via Access Control Lists. These are typically more secure than XMPP, IRC, and other Instant Messaging transports, though we also allow using these other services via plugins.
+
+[b]Webpage Building[/b]
+
+Redmatrix has many "Content Management" creation tools for building webpages, including layout editing, menus, blocks, widgets, and page/content regions. All of these may be access controlled so that the resulting pages are private to their intended audience.
+
+[b]Apps[/b]
+
+Apps may be built and distributed by members. These are different from traditional "vendor lockin" apps because they are controlled completely by the author - who can provide access control on the destination app pages and charge accordingly for this access. Most apps in Redmatrix are free and can be created easily by those with no programming skills.
+
+[b]Layout[/b]
+
+Page layout is based on a description language called Comanche. Redmatrix is itself written in Comanche layouts which you can change. This allows a level of customisation you won't typically find in so-called "multi-user environments".
+
+[b]Bookmarks[/b]
+
+Share and save/manage bookmarks from links provided in conversations.
+
+
+[b]Private Message Encryption and Privacy Concerns[/b]
+
+Messages marked [b]private[/b] are encrypted with AES-CBC 256-bit symmetric cipher, which is then protected (encrypted in turn) by public key cryptography, based on 4096-bit RSA keys, associated with the channel that is sending the message.
+
+These private messages are also stored in an encrypted form on remote systems.
+
+Each Red channel has it's own unique set of private and associated public RSA 4096-bit keys, generated when the channels is first created.
+
+Additionally, messages may be created utilising "end-to-end encryption" which cannot be read by Redmatrix operators or ISPs or anybody who does not know the passcode.
+
+Public messages are generally not encrypted in transit or in storage.
+
+Private messages may be retracted (unsent) although there is no guarantee the recipient hasn't read it yet.
+
+Posts and messages may be created with an expiration date, at which time they will be deleted/removed on the recipient's site.
+
+
+[b]Service Federation[/b]
+
+In addition to addon "cross-post connectors" to a variety of alternate networks, there is native support for importation of content from RSS/Atom feeds and using this to create special channels. Also, an experimental but working implementation of the Diaspora protocol allows communication with people on the Friendica and Diaspora decentralised social networks. This is currently marked experimental because these networks do not have the same level of privacy and encryption features and abilities as Redmatrix and may present privacy risks.
+
+There is also experimental support for OpenID authentication which may be used in Access Control Lists. This is a work in progress.
+
+Channels may have permissions to become "derivative channels" where two or more existing channels combine to create a new topical channel.
+
+[b]Collections[/b]
+
+"Collections" is our implementation of privacy groups, which is similar to Google "Circles" and Diaspora "Aspects". This allows you to filter your incoming stream by collections or groups, and automatically set the outbound Access Control List to only those in the Collection when you post. You may over-ride this at any time.
+
+
+[b]Directory Services[/b]
+
+We provide easy access to a directory of members and provide decentralised tools capable of providing friend "suggestions". The directories are normal Redmatrix sites which have chosen to accept the directory server role. This requires more resources than most typical sites so is not the default. Directories are synchronised and mirrored so that they all contain up-to-date information on the entire network (subject to normal propagation delays).
+
+
+[b]TLS/SSL[/b]
For Red hubs that use TLS/SSL, client to server communications are encrypted via TLS/SSL. Given recent disclosures in the media regarding widespread, global surveillance and encryption circumvention by the NSA and GCHQ, it is reasonable to assume that HTTPS-protected communications may be compromised in various ways.
-[b][color= grey]Channel Settings[/color][/b]
+[b]Channel Settings[/b]
-In Red, each channel allows fine-grained permissions to be set for various aspects of communication. For example, under the &quot;Security and Privacy Settings&quot; heading, each aspect on the left side of the page, has six (6) possible viewing/access options, that can be selected by clicking on the dropdown menu.
+When a channel is created, a role is chosen which applies a number of pre-configured security and privacy settings. These are chosen for best practives to maintain privacy at the requested levels.
+
+If you choose a "custom" privacy role, each channel allows fine-grained permissions to be set for various aspects of communication. For example, under the &quot;Security and Privacy Settings&quot; heading, each aspect on the left side of the page, has six (6) possible viewing/access options, that can be selected by clicking on the dropdown menu. There are also a number of other privacy settings you may edit.
[img]https://friendicared.net/photo/0f5be8da282858edd645b0a1a6626491.png[/img]
-The six options are:
+The options are:
- Nobody except yourself.
- Only those you specifically allow.
- Anybody in your address book.
- Anybody on this website.
- Anybody in this network.
+ - Anybody authenticated.
- Anybody on the Internet.
-[b][color= grey]Account Cloning[/color][/b]
+[b]Public and Private Forums[/b]
+
+Forums are typically channels which may be open to participation from multiple authors. There are currently two mechanisms to post to forums: 1) "wall-to-wall" posts and 2) via forum @mention tags. Forums can be created by anybody and used for any purpose. The directory contains an option to search for public forums. Private forums can only be posted to and often only seen by members.
+
-Accounts in the Red Matrix are called to as [i]nomadic identities[/]. Nomadic, because a user's identity (see What is Zot? for the full explanation) is stuck to the hub where the identity was originally created. For example, when you created your Facebook, or Gmail account, it is tied to those services. They cannot function without Facebook.com or Gmail.com.
+[b]Account Cloning[/b]
-By contrast, say you've created a Red identity called [b][color=white]tina@redhub.com[/color][/b]. You can clone it to another Red hub by choosing the same, or a different name: [b][color=white]liveForever@SomeRedMatrixHub.info[/color][/b]
+Accounts in the Red Matrix are referred to as [i]nomadic identities[/i], because a user's identity is not bound to the hub where the identity was originally created (see What is Zot? for the full explanation). For example, when you create a Facebook or Gmail account, it is tied to those services. They cannot function without Facebook.com or Gmail.com.
+
+By contrast, say you've created a Red identity called [b]tina@redhub.com[/b]. You can clone it to another Red hub by choosing the same, or a different name: [b]liveForever@SomeRedMatrixHub.info[/b]
Both channels are now synchronized, which means all your contacts and preferences will be duplicated on your clone. It doesn't matter whether you send a post from your original hub, or the new hub. Posts will be mirrored on both accounts.
This is a rather revolutionary feature, if we consider some scenarios:
- - What happens if the hub where an identity is based, suddenly goes offline? Without cloning, a user will not be able to communicate until that hub comes back online. With cloning, you just log into your cloned account, and life goes on happily ever after.
+ - What happens if the hub where an identity is based suddenly goes offline? Without cloning, a user will not be able to communicate until that hub comes back online. With cloning, you just log into your cloned account, and life goes on happily ever after.
- The administrator of your hub can no longer afford to pay for his free and public Red Matrix hub. He announces that the hub will be shutting down in two weeks. This gives you ample time to clone your identity(ies) and preserve your Red relationships, friends and content.
- - What if your identity is subject to government censorship? Your hub provider is compelled to delete your account, along with any identities and associated data. With cloning, the Red Matrix offers [b][color=white]censorship resistance [/color][/b]. You can have hundreds of clones, if you wanted to, all named different, and existing on many different hubs, strewn around the internet.
+ - What if your identity is subject to government censorship? Your hub provider is compelled to delete your account, along with any identities and associated data. With cloning, the Red Matrix offers [b]censorship resistance[/b]. You can have hundreds of clones, if you wanted to, all named different, and existing on many different hubs, strewn around the internet.
Red offers interesting new possibilities for privacy. You can read more at the &lt;&lt;Private Communications Best Practices&gt;&gt; page.
Some caveats apply. For a full explanation of identity cloning, read the &lt;HOW TO CLONE MY IDENTITY&gt;.
+[b]Multiple Profiles[/b]
+
+Any number of profiles may be created containing different information and these may be made visible to certain of your connections/friends. A "default" profile can be seen by anybody and may contain limited information, with more information available to select groups or people.
-[b][color= grey]Account Backup[/color][/b]
+[b]Account Backup[/b]
Red offers a simple, one-click account backup, where you can download a complete backup of your profile(s).
Backups can then be used to clone or restore a profile.
-[b][color= grey]Account Deletion[/color][/b]
+[b]Account Deletion[/b]
-Accounts can be immediately deleted by clicking on a link. That's it. All associated content is immediately deleted from the matrix (this includes posts and any other content produced by the deleted profile).
+Accounts can be immediately deleted by clicking on a link. That's it. All associated content is then deleted from the matrix (this includes posts and any other content produced by the deleted profile). Depending on the number of connections you have, the process of deleting remote content could take some time but it is scheduled to happen as quickly as is practical.
-[b][color=grey][size=20]Content Creation[/size][/color][/b]
+[b][size=20]Content Creation[/size][/b]
-[b][color=white]Writing Posts[/color][/b]
+[b]Writing Posts[/b]
-Red supports a number of different ways of adding content, from a graphical text editor, to various types of markup and pure HTML.
+Red supports a number of different ways of adding rich-text content. The default is a custom variant of BBcode, tailored for use in Redmatrix. You may also enable the use of Markdown if you find that easier to work with. A visual editor may also be used. The traditional visual editor for Redmatrix had some serious issues and has since been removed. We are currently looking for a replacement.
-Red bundles the TinyMCE rich text editor, which can be turned on under &quot;Settings.&quot;
-For user who prefer not to use TinyMCE, content can be entered by typing BBCode markup.
-Furthermore, when creating &quot;Websites&quot; or using &quot;Comanche&quot; and its PCL[FINISH], content can be entered in HTML, Markdown and plain text.
+When creating &quot;Websites&quot;, content may be entered in HTML, Markdown, BBcode, and/or plain text.
-[b][color=white]Deletion of content[/color][/b]
-Any content created in the Red Matrix remains under the control of the user (or channel) that originally created. At any time, a user can delete a message, or a range of messages. The deletion process ensures that the content is deleted, regardless of whether it was posted on a channel's primary (home) hub, or on another hub, where the channel was remotely authenticated via Zot.
+[b]Deletion of content[/b]
+Any content created in the Red Matrix remains under the control of the member (or channel) that originally created it. At any time, a member can delete a message, or a range of messages. The deletion process ensures that the content is deleted, regardless of whether it was posted on a channel's primary (home) hub, or on another hub, where the channel was remotely authenticated via Zot.
-[b][color=white]Media[/color][/b]
+[b]Media[/b]
Similar to any other modern blogging system, social network, or a micro-blogging service, Red supports the uploading of files, embedding of videos, linking web pages.
-[b][color=white]Previewing[/color][/b]
-Post can be previewed prior to sending.
+[b]Previewing/Editing[/b]
+Post can be previewed prior to sending and edited after sending.
+
+[b]Extending Redmatrix[/b]
+
+Redmatrix can be extended in a number of ways, through site customisation, personal customisation, option setting, themes, and addons/plugins.
+
+[b]API[/b]
+
+An API is available for use by third-party services. This is based originally on the early Twitter API (for which hundreds of third-party tools exist). It is currently being extended to provide access to facilities and abilities which are specific to Redmatrix. Access may be provided by login/password or OAuth and client registration of OAuth applications is provided.
+
+
-Return to the [url=[baseurl]/help/main]Main documentation page[/url] \ No newline at end of file
+#include doc/macros/main_footer.bb;
diff --git a/doc/git_for_non_developers.bb b/doc/git_for_non_developers.bb
index e68634da1..029a6eb77 100644
--- a/doc/git_for_non_developers.bb
+++ b/doc/git_for_non_developers.bb
@@ -41,6 +41,31 @@ This will open up an editor where you can describe the changes you have made. S
Finally, push the changes to your own git
[code]git push[/code]
-And that's it!
+And that's it, your repo is up to date!
-Return to the [url=[baseurl]/help/main]Main documentation page[/url] \ No newline at end of file
+All you need to do now is actually create the pull request. There are two ways to do this.
+
+The easy way, if you're using Github is to simply click the green button at the top of your own copy of the repository, enter a description of the changes, and click 'create pull request'. The
+main repository, themes, and addons all have their main branch at Github, so this method can be used most of the time.
+
+Most people can stop here.
+
+Some projects in the extended RedMatrix ecosphere have no Github presence, to pull request these is a bit different - you'll have to create your pull request manually. Fortunately, this isn't
+much harder.
+
+[code]git request-pull -p <start> <url>[/code]
+
+Start is the name of a commit to start at. This must exist upstream. Normally, you just want master.
+
+URL is the URL of [i]your[/i] repo.
+
+One can also specify <end>. This defaults to HEAD.
+
+Example:
+[code]
+git request-pull master https://example.com/project
+[/code]
+
+And simply send the output to the project maintainer.
+
+#include doc/macros/main_footer.bb;
diff --git a/doc/hidden_configs.bb b/doc/hidden_configs.bb
new file mode 100644
index 000000000..435042520
--- /dev/null
+++ b/doc/hidden_configs.bb
@@ -0,0 +1,137 @@
+[b]Advanced Configurations for Administrators[/b]
+
+RedMatrix contains many configuration options hidden from the main admin panel.
+These are generally options considered too niche, confusing, or advanced for
+the average member. These settings can be activated from the the top level Red
+directory with the syntax [code]util/config cat key value[/code] for a site
+configuration, or [code]util/pconfig channel_id cat key value[/code] for a
+member configuration.
+
+This document assumes you're an administrator.
+
+[b]pconfig[/b]
+ [b]system > user_scalable[/b]
+ Determine if the app is scalable on touch screens. Defaults to on, to
+ disable, set to zero - real zero, not just false.
+ [b]system > always_my_theme[/b]
+ Always use your own theme when viewing channels on the same hub. This
+ will break in some quite imaginative ways when viewing channels with
+ theme dependent Comanche.
+ [b]system > paranoia[/b]
+ Sets the security level of IP checking. If the IP address of a logged-in session changes
+ apply this level to determine if the account should be logged out as a security breach.
+ Options are:
+ 0 - no IP checking
+ 1 - check 3 octets
+ 2 - check 2 octets
+ 3 - check for any difference at all
+ [b]system > prevent_tag_hijacking[/b]
+ Prevent foreign networks hijacking hashtags in your posts and directing them at its own resources.
+ [b]system > blocked[/b]
+ An array of xchans blocked by this channel. Technically, this is a
+ hidden config and does belong here, however, addons (notably
+ superblock) have made this available in the UI.
+ [b]system > default_cipher[/b]
+ Set the default cipher used for E2EE items.
+ [b]system > network_page_default[/b]
+ Set default params when viewing the network page. This should contain
+ the same querystring as manual filtering.
+ [b]system > display_friend_count[/b]
+ Set the number of connections to display in the connections profile
+ widget.
+ [b]system > taganyone[/b]
+ Requires the config of the same name to be enabled. Allow the @mention tagging
+ of anyone, whether you are connected or not. This doesn't scale.
+ [b]system > startpage[/b]
+ Another of those technically hidden configs made available by addons.
+ Sets the default page to view when logging in. This is exposed to the
+ UI by the startpage addon.
+ [b]system > forcepublicuploads[/b]
+ Force uploaded photos to be public when uploaded as wall items. It
+ makes far more sense to just set your permissions properly in the first
+ place. Do that instead.
+ [b]system > do_not_track[/b]
+ As the browser header. This will break many identity based features.
+ You should really just set permissions that make sense.
+
+[b]Site config[/b]
+ [b]system > taganyone[/b]
+ Allow the @mention tagging of anyone whether you are connected or not.
+ [b]system > directorytags[/b]
+ Set the number of keyword tags displayed on the directory page.
+ [b]system > startpage[/b]
+ Set the default page to be taken to after a login for all channels at
+ this website. Can be overwritten by user settings.
+ [b]system > projecthome[/b]
+ Set the project homepage as the homepage of your hub.
+ [b]system > workflowchannelnext[/b]
+ The page to direct users to immediately after creating a channel.
+ [b]system > max_daily_registrations[/b]
+ Set the maximum number of new registrations allowed on any day.
+ Useful to prevent oversubscription after a bout of publicity
+ for the project.
+ [b]system > tos_url[/b]
+ Set an alternative link for the ToS location.
+ [b]system > block_public_search[/b]
+ Similar to block_public, except only blocks public access to
+ search features. Useful for sites that want to be public, but
+ keep getting hammered by search engines.
+ [b]system > paranoia[/b]
+ As the pconfig, but on a site-wide basis. Can be overwritten
+ by member settings.
+ [b]system > openssl_conf_file[/b]
+ Specify a file containing OpenSSL configuration. Read the code first.
+ If you can't read the code, don't play with it.
+ [b]system > optimize_items[/b]
+ Runs optimise_table during some tasks to keep your database nice and
+ defragmented. This comes at a performance cost while the operations
+ are running, but also keeps things a bit faster while it's not.
+ There also exist CLI utilities for performing this operation, which you
+ may prefer, especially if you're a large site.
+ [b]system > default_expire_days[/b]
+ When creating a new channel, set the default expiration of connections
+ posts to this number of days.
+ [b]system > dlogfile[/b]
+ Logfile to use for logging development errors. Exactly the same as
+ logger otherwise. This isn't magic, and requires your own logging
+ statements. Developer tool.
+ [b]system > authlog[/b]
+ Logfile to use for logging auth errors. Used to plug in to server
+ side software such as fail2ban. Auth failures are still logged to
+ the main logs as well.
+ [b]system > hide_in_statistics[/b]
+ Tell the red statistics servers to completely hide this hub in hub lists.
+ [b]system > reserved_channels[/b]
+ Don't allow members to register channels with this comma separated
+ list of names (no spaces)
+ [b]system > auto_follow[/b]
+ Make the first channel of an account auto-follow channels listed here - comma separated list of webbies (member@hub addresses).
+ [b]system > admin_email[/b]
+ Specifies the administrators email for this site. This is initially set during install.
+ [b]system > cron_hour[/b]
+ Specify an hour in which to run cron_daily. By default with no config, this will run at midnight UTC.
+ [b]system > minimum_feedcheck_minutes[/b]
+ The minimum interval between polling RSS feeds. If this is lower than the cron interval, feeds will be polled with each cronjob
+ [b]system > blacklisted_sites[/b]
+ An array of specific hubs to block from this hub completely.
+ [b]system > ignore_imagick[/b]
+ Ignore imagick and use GD, even if imagick is installed on the server. Prevents some issues with PNG files in older versions of imagick.
+ [b]system > no_age_restriction[/b]
+ Do not restric registration to people over the age of 13
+ [b]system > override_poll_lockfile[/b]
+ Ignore the lock file in the poller process to allow more than one process to run at a time.
+ [b]system > projecthome[/b]
+ Display the project page on your home page for logged out viewers.
+ [b]system > sellpage[/b]
+ A URL shown in the public sites list to sell your hub - display service classes, etc.
+ [b]randprofile > check[/b]
+ When requesting a random profile, check that it actually exists first
+ [b]randprofile > retry[/b]
+ Number of times to retry getting a random profile
+ [b]system > photo_cache_time[/b]
+ How long to cache photos, in seconds. Default is 86400 (1 day).
+ Longer time increases performance, but it also means it takes longer for changed permissions to apply.
+
+
+#include doc/macros/main_footer.bb;
+
diff --git a/doc/history.md b/doc/history.md
new file mode 100644
index 000000000..12091d205
--- /dev/null
+++ b/doc/history.md
@@ -0,0 +1,49 @@
+RedMatrix History
+=================
+
+RedMatrix is a collaborative effort by the RedMatrix community and based on work introduced in Friendica by the Friendica community. The core design, the project mission, and software base itself were created/written primarily by Mike Macgirvin and represent the culmination of over a decade of software design using variations of this platform and an evolving vision of the role of communication software in our lives. Many others have contributed to this work, both conceptually and in terms of actual code (way too many to list individually).
+
+##Mike Macgirvin -- Biography
+
+Mike Macgirvin is an American software engineer now living in Australia. He spent his early adult years designing and repairing semiconductor fabrication equipment for a number of companies as a self-described "machine wizard". In 1985 he became a research engineer at Stanford University for the Gravity Probe-B space mission and soon became a Unix systems administrator writing communication software and utilities; and becoming an expert in emerging internet technologies such as the now ubiquitous "World Wide Web". He authored an email "client" called "ML" which pioneered some advanced concepts in encryption, the ability to filter message streams into different "views", and multi-protocol support; and was an active proponent of and participant in the open source software *movement*. In 1996 he went to Netscape Communications to become tech lead on their Messaging Server and integrate this with Collabra (groupware) into a comprehensive communications server package. He stayed on after Netscape was acquired by America Online and was tech manager of the Groups@AOL project until 2001.
+
+During a layoff round, Mike was let go from America Online in August 2001 and purchased a music store in Mountain View, California later to be known as "Sonica Music Company". Opening a retail store for non-essential goods at the beginning of a prolonged economic downturn was in retrospect probably not the wisest career move. Sonica eventually folded; in late 2006. Mike returned to working on software and systems support full-time and was employed briefly at Symantec before moving to Australia in early 2007. He currently lives on a farm "out in the middle of nowhere" and is employed as a Computer Systems Officer at the University of Wollongong.
+
+
+##RedMatrix - The Early Years
+
+The software which went into creating RedMatrix has been through three distinct historical phases. It began in 2003 when Mike Macgirvin was looking for a content management system to power the website for his music store and found the available solutions to be lacking in various respects. The project was born as the "PurpleHaze weblog" under the nom de plume "Nerdware Communications". It was a multi-user PHP/MySQL CMS which provided blogs, forums, photo albums, events and more. Initially it provided the basis for a social community and shopping for customers of the store, but was also linked to Mike's personal weblog running on another domain. The distinguishing characteristic of this software was the ability for so-called "normal users" to re-assemble the components and choose different content feeds - and in essence create their own personal "multi-user CMS" as a view. Their custom view was able to communicate with anybody else that used the system, but could be partitioned so that adult sites and motorcycle enthusiast sites would not be visible to each other and not clash (or in this case Mike's personal website and the music store website). This software was developed primarily from 2003 until 2008.
+
+In 2006 this software was used as the prototype for Symantec's "safeweb" reputation and community site. It was developed and enhanced until about 2008. A rewrite took place in 2008 named "Reflection" but work stagnated as the community dwindled. The need for content management systems and communications software dropped dramatically during this time as humans flocked to the new social aggregrators - Facebook and Twitter.
+
+
+##Mistpark/Friendica
+
+In early 2010, Mike left Facebook, concerned at the company's increasing hold and control of personal information. In his words "Companies die. We watched it happen in the dot-com years. When they do, their databases are sold to the highest bidder.". Mike used some remnants of the old CMS project to create a decentralised social communications platform. This was launched in July 2010 as "Mistpark". The name was chosen as a tribute to his new home in the Southern Highlands of Australia. The key innovation in this project was the ability to authenticate remotely and invisibly to other decentralised instances of the software so to allow remote viewing of private photos and provide "wall-to-wall" posting across website instances. The lack of simple remote identity *provenance* was a serious limitation of other decentralised communication protocols.
+
+In late 2010, the name was changed to "Friendika". The name Friendika had some symbolic issues, since the suffix was common with "swastika" and "Amerika", both having negative connotations, however the dot-com domain was available. Friendica was in fact the first choice but the 'friendica.com' domain name was already registered. It became available a year later and the project was renamed to Friendica in late 2011.
+
+Soon after version 1 was released in July 2010 - providing basic social communications, the software also took on a new role - cross-service federation; which was first introduced in August and September 2010. Federation allowed the software to "behave as" a StatusNet site and friends and messages could communicate to the other service from their own platforms. It was also hoped to provide federation with Diaspora - a project with similar scope being developed in secret in New York and first released in November of that year. Over the course of the next year, the federation ability was extended to provide integrated communications from RSS feeds, to and from email, StatusNet, Facebook, Twitter, and the emerging Diaspora project. The software provided a single "view" of your entire social space no matter what provider you or your friends used. StatusNet and Diaspora were supported natively so that one account could access any of these services. Facebook and Twitter used "API federation" which required the person to have an account on those services with which to link.
+
+By July 2012, Twitter and Facebook had both changed their terms of service and essentially outlawed "API federation" in the way Friendica was using it. Diaspora announced they were changing their protocol and would not maintain compatibility nor provide any warning when compatibility would break (or documentation on the proposed changes). The creator of StatusNet was also leaving his project to create something new (pump.io). As the software's primary purpose by this time was "federation of different social services into one interface", this created a bit of a crisis. The federated social web was crumbling. Also of concern was that independent and decentralised social websites shut down frequently, requiring all their members to start over again on another site. Often the effort involved to do this seemed daunting - and many people ran back to the relative safety of the large corporate providers - Facebook, Twitter, and now Google+.
+
+Mike realised he did not want to be held hostage to the decisions that other projects and companies and independent websites make. Friendica could operate on its own without attaching to these other networks, but its vision and implementation of a federated social world depended on federation with others for its project identity - so this created an identity crisis.
+
+Mike had been working on this project for some time and there were a number of things which needed re-writing, including the base communication protocol which Friendica used (DFRN or the "Distributed Friends and Relations Network" protocol). These ideas were starting to emerge as a different method of communication he called "zot". Zot began as a way to create a common language for federated websites, but there was no interest in this ability and as mentioned, the federated web was crumbling. The first version was soon scrapped and zot was re-designed and re-ignited as a streamlined communication protocol which was location-independent; e.g. not tied to any website. This would allow people to carry on unaffected if their website operator shut down temporarily or permanently. They wouldn't have to make friends all over again, and permissions of everything on the system wouldn't have to be changed to allow bob@site1 to see something that was private to him, even though he was now bob@site2. This was a serious problem with decentralisation. People moved and their online identities were lost and had to be re-created from scratch and existing relationships destroyed and had to be created all over again.
+
+
+##RedMatrix
+
+In July 2012, Mike left the Friendica project and began development of "zot" and a new base project called "red" in his somewhat elusive *spare time*. Red is Spanish for "network". It wasn't really a "social network" and especially not a "federated social network". It was just Red (technically "la red"), or "the network". Work began by removing all the "federation" components and going back to basics - communication and remote authentication. It was a major re-write and took roughly six months before even basic communication was re-established. It was also no longer compatible with Friendica - which had been given to the "Friendica community" and by this time (December 2012) was developing separately on its own track.
+
+It became clear during this time that the single most compelling feature of the project wasn't the social network at all, but the authentication layer and decentralised access control mechanisms. Combined with zot's location independence it created a new model for software which had never existed previously - decentralised identity-aware web publishing and single sign-on to any compatible provider across the web. These weren't *evolutionary*, they were **revolutionary**. One of the biggest flaws of the modern web is the reliance on different passwords for every service you use, or reliance on a single provider if you were to tie them to - say your Facebook login. Facebook can remove your account at any time. Gone. If you rely on their authentication for all your websites, your entire online identity - now gone. This is also what was missing from Friendica - a compelling software feature which could stand on its own, without requiring a social network and especially without requiring a federated social network with all the mentioned external dependencies.
+
+An early visitor to the project noted that he had some difficulty finding the project on Google because of the choice of name - "red". Yes, this was a poor decision in retrospect. We were buried on page 23,712 of the search results. The concept that was emerging around this identity-aware publishing was that of "a matrix of inter-connected thought streams", since we didn't have a concept of "people" and "friends". All were just connected "channels" with different ways to connect. So "Red Matrix" was chosen to give it a searchable name. It had nothing to do with the Matrix film and red and blue pills, though that is frequently cited (erronously); and in fact isn't a bad analogy.
+
+The concept of identity-aware content was alien to anything that existed previously on the web, so to make it useful we had to provide the ability to use it for content. It needed content publishing tools. This brought back concepts from the old "Content Management System" on which the software was originally based. To get it up and running quickly we created a markup language for webpages called "Comanche" which let you describe a page in high-level terms based on bbcode tags. We also added WebDAV so you could put decentralised access control on files and drag/drop from your operating system. So now you could have private photos, webpages, files, events, conversations, chatrooms - and they are visible to those you choose - no matter what site they use. All they need is zot. And your viewers could move to another site or just pop up at a different site any time they want and we don't care. And it **also** had a built-in social network; with lots of additional privacy and encryption features which were added even before the Snowden revelations gave them added urgency.
+
+Over time a few federation components re-emerged. The ability to view RSS feeds was important to many people. Diaspora never really managed to re-write their protocol, so that was re-implemented and allowed RedMatrix to connect with Diaspora and Friendica again (Friendica still had their Diaspora protocol intact, so this was the most common language now remaining on the free web - despite its faults). Diaspora communications aren't able to make use of the advanced identity features, but they work for basic communications.
+
+That brings us up to the present. Where will RedMatrix go from here? I don't know. That's up to you.
+
+#include doc/macros/main_footer.bb;
diff --git a/doc/html/Contact_8php.html b/doc/html/Contact_8php.html
index 9705147f1..c65ecda8f 100644
--- a/doc/html/Contact_8php.html
+++ b/doc/html/Contact_8php.html
@@ -130,21 +130,20 @@ Functions</h2></td></tr>
<tr class="separator:a024919623a830e8703ac4f23496dd66c"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a2fc191067dd571a79603c66b04b1ca15"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="Contact_8php.html#a2fc191067dd571a79603c66b04b1ca15">user_remove</a> ($uid)</td></tr>
<tr class="separator:a2fc191067dd571a79603c66b04b1ca15"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a6e64de7db60b7243dce45fb6347636ff"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="Contact_8php.html#a6e64de7db60b7243dce45fb6347636ff">account_remove</a> ($account_id, $local=true)</td></tr>
-<tr class="separator:a6e64de7db60b7243dce45fb6347636ff"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a186162051a5127069cc851d78740f205"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="Contact_8php.html#a186162051a5127069cc851d78740f205">channel_remove</a> ($channel_id, $local=true)</td></tr>
-<tr class="separator:a186162051a5127069cc851d78740f205"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a5101d7eca5d6f387e5555f03fe249e33"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="Contact_8php.html#a5101d7eca5d6f387e5555f03fe249e33">account_remove</a> ($account_id, $local=true, $unset_session=true)</td></tr>
+<tr class="separator:a5101d7eca5d6f387e5555f03fe249e33"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ab5895b75a3b2abdddf1cb351a8c6b58b"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="Contact_8php.html#ab5895b75a3b2abdddf1cb351a8c6b58b">rrmdir</a> ($path)</td></tr>
+<tr class="separator:ab5895b75a3b2abdddf1cb351a8c6b58b"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a4e8af0f0525161da74583c04b8b03097"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="Contact_8php.html#a4e8af0f0525161da74583c04b8b03097">channel_remove</a> ($channel_id, $local=true, $unset_session=true)</td></tr>
+<tr class="separator:a4e8af0f0525161da74583c04b8b03097"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a08845ce8c5b997d5edac38ae7118b5c8"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="Contact_8php.html#a08845ce8c5b997d5edac38ae7118b5c8">mark_orphan_hubsxchans</a> ()</td></tr>
<tr class="separator:a08845ce8c5b997d5edac38ae7118b5c8"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:acc12cda999c88c4d6185cca967c15125"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="Contact_8php.html#acc12cda999c88c4d6185cca967c15125">remove_all_xchan_resources</a> ($xchan, $channel_id=0)</td></tr>
<tr class="separator:acc12cda999c88c4d6185cca967c15125"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a28e062c884331dbb5dfa713228c25ad6"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="Contact_8php.html#a28e062c884331dbb5dfa713228c25ad6">contact_remove</a> ($channel_id, $abook_id)</td></tr>
<tr class="separator:a28e062c884331dbb5dfa713228c25ad6"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a38daa1c210b78385307123450ca9a1fc"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="Contact_8php.html#a38daa1c210b78385307123450ca9a1fc">terminate_friendship</a> ($user, $self, $contact)</td></tr>
-<tr class="separator:a38daa1c210b78385307123450ca9a1fc"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a852fa476f0c70bde10a4f2533aec5f71"><td class="memItemLeft" align="right" valign="top"><a class="el" href="theme_2mytheme_2php_2default_8php.html#a3987f5547ceb7e36a210a66a06241a5a">if</a>(!function_exists('mark_for_death')) <br class="typebreak"/>
-<a class="el" href="theme_2mytheme_2php_2default_8php.html#a3987f5547ceb7e36a210a66a06241a5a">if</a>(!function_exists('unmark_for_death'))&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="Contact_8php.html#a852fa476f0c70bde10a4f2533aec5f71">random_profile</a> ()</td></tr>
-<tr class="separator:a852fa476f0c70bde10a4f2533aec5f71"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a7e3f5bef8ea1d2bf8434c9be36a2b713"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="Contact_8php.html#a7e3f5bef8ea1d2bf8434c9be36a2b713">random_profile</a> ()</td></tr>
+<tr class="separator:a7e3f5bef8ea1d2bf8434c9be36a2b713"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<h2 class="groupheader">Function Documentation</h2>
<a class="anchor" id="ae8803c330352cbf1e828eb7490edf47e"></a>
@@ -219,7 +218,7 @@ Functions</h2></td></tr>
</div>
</div>
-<a class="anchor" id="a6e64de7db60b7243dce45fb6347636ff"></a>
+<a class="anchor" id="a5101d7eca5d6f387e5555f03fe249e33"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
@@ -233,7 +232,13 @@ Functions</h2></td></tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">&#160;</td>
- <td class="paramname"><em>$local</em> = <code>true</code>&#160;</td>
+ <td class="paramname"><em>$local</em> = <code>true</code>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">&#160;</td>
+ <td class="paramname"><em>$unset_session</em> = <code>true</code>&#160;</td>
</tr>
<tr>
<td></td>
@@ -243,11 +248,11 @@ Functions</h2></td></tr>
</table>
</div><div class="memdoc">
-<p>Referenced by <a class="el" href="admin_8php.html#a62f10f90c47686c9c3c37c4c03a108d2">admin_page_users()</a>, <a class="el" href="admin_8php.html#a5a696706a3869800e65fb365214241b7">admin_page_users_post()</a>, and <a class="el" href="include_2chanman_8php.html#a21ba9a5c961e866ff27aee3ee67bf99b">chanman_remove_everything_from_network()</a>.</p>
+<p>Referenced by <a class="el" href="admin_8php.html#a62f10f90c47686c9c3c37c4c03a108d2">admin_page_users()</a>, <a class="el" href="admin_8php.html#a5a696706a3869800e65fb365214241b7">admin_page_users_post()</a>, and <a class="el" href="removeaccount_8php.html#a26a3325292e932c59793430ab737126a">removeaccount_post()</a>.</p>
</div>
</div>
-<a class="anchor" id="a186162051a5127069cc851d78740f205"></a>
+<a class="anchor" id="a4e8af0f0525161da74583c04b8b03097"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
@@ -261,7 +266,13 @@ Functions</h2></td></tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">&#160;</td>
- <td class="paramname"><em>$local</em> = <code>true</code>&#160;</td>
+ <td class="paramname"><em>$local</em> = <code>true</code>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">&#160;</td>
+ <td class="paramname"><em>$unset_session</em> = <code>true</code>&#160;</td>
</tr>
<tr>
<td></td>
@@ -271,7 +282,7 @@ Functions</h2></td></tr>
</table>
</div><div class="memdoc">
-<p>Referenced by <a class="el" href="Contact_8php.html#a6e64de7db60b7243dce45fb6347636ff">account_remove()</a>, <a class="el" href="admin_8php.html#ad6f87a764fd35f522c7b4c351d7878ec">admin_page_channels()</a>, <a class="el" href="admin_8php.html#a42e628f367c168add8013352ac74d33f">admin_page_channels_post()</a>, and <a class="el" href="removeme_8php.html#a7be08738beca44bb98a79e01cdb2ee88">removeme_post()</a>.</p>
+<p>Referenced by <a class="el" href="Contact_8php.html#a5101d7eca5d6f387e5555f03fe249e33">account_remove()</a>, <a class="el" href="admin_8php.html#ad6f87a764fd35f522c7b4c351d7878ec">admin_page_channels()</a>, <a class="el" href="admin_8php.html#a42e628f367c168add8013352ac74d33f">admin_page_channels_post()</a>, and <a class="el" href="removeme_8php.html#a7be08738beca44bb98a79e01cdb2ee88">removeme_post()</a>.</p>
</div>
</div>
@@ -305,7 +316,7 @@ Functions</h2></td></tr>
</table>
</div><div class="memdoc">
-<p>Referenced by <a class="el" href="widgets_8php.html#a702e2fc0adc9b615999eca18b7311b5e">widget_photo_albums()</a>.</p>
+<p>Referenced by <a class="el" href="items_8php.html#a52c24114b73c0bdb605a03cd29712223">handle_feed()</a>, and <a class="el" href="widgets_8php.html#a702e2fc0adc9b615999eca18b7311b5e">widget_photo_albums()</a>.</p>
</div>
</div>
@@ -351,7 +362,7 @@ Functions</h2></td></tr>
</table>
</div><div class="memdoc">
-<p>Referenced by <a class="el" href="connedit_8php.html#a795acb3d9d841f55c255d7611681ab67">connedit_content()</a>, and <a class="el" href="post_8php.html#af59e6a1dc22d19d9257b01cd7ccedb75">post_post()</a>.</p>
+<p>Referenced by <a class="el" href="connedit_8php.html#a795acb3d9d841f55c255d7611681ab67">connedit_content()</a>, <a class="el" href="diaspora_8php.html#a938c7ee808d38725c0988fa6006805b9">diaspora_retraction()</a>, <a class="el" href="post_8php.html#af59e6a1dc22d19d9257b01cd7ccedb75">post_post()</a>, and <a class="el" href="zot_8php.html#ac301c67864917c35922257950ae0f95c">process_channel_sync_delivery()</a>.</p>
</div>
</div>
@@ -373,12 +384,12 @@ Functions</h2></td></tr>
</div>
</div>
-<a class="anchor" id="a852fa476f0c70bde10a4f2533aec5f71"></a>
+<a class="anchor" id="a7e3f5bef8ea1d2bf8434c9be36a2b713"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
- <td class="memname"><a class="el" href="theme_2mytheme_2php_2default_8php.html#a3987f5547ceb7e36a210a66a06241a5a">if</a> (!function_exists('mark_for_death')) <a class="el" href="theme_2mytheme_2php_2default_8php.html#a3987f5547ceb7e36a210a66a06241a5a">if</a> (!function_exists('unmark_for_death')) random_profile </td>
+ <td class="memname">random_profile </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td></td>
@@ -446,36 +457,22 @@ Functions</h2></td></tr>
</div>
</div>
-<a class="anchor" id="a38daa1c210b78385307123450ca9a1fc"></a>
+<a class="anchor" id="ab5895b75a3b2abdddf1cb351a8c6b58b"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
- <td class="memname">terminate_friendship </td>
+ <td class="memname">rrmdir </td>
<td>(</td>
<td class="paramtype">&#160;</td>
- <td class="paramname"><em>$user</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
+ <td class="paramname"><em>$path</em></td><td>)</td>
<td></td>
- <td class="paramtype">&#160;</td>
- <td class="paramname"><em>$self</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">&#160;</td>
- <td class="paramname"><em>$contact</em>&#160;</td>
- </tr>
- <tr>
- <td></td>
- <td>)</td>
- <td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
+<p>Referenced by <a class="el" href="Contact_8php.html#a4e8af0f0525161da74583c04b8b03097">channel_remove()</a>.</p>
+
</div>
</div>
<a class="anchor" id="a2fc191067dd571a79603c66b04b1ca15"></a>
diff --git a/doc/html/Contact_8php.js b/doc/html/Contact_8php.js
index a3de0525f..556236836 100644
--- a/doc/html/Contact_8php.js
+++ b/doc/html/Contact_8php.js
@@ -3,17 +3,17 @@ var Contact_8php =
[ "abook_connections", "Contact_8php.html#ae8803c330352cbf1e828eb7490edf47e", null ],
[ "abook_self", "Contact_8php.html#ad5b02c2a962ee55b1b7ca6c159d6e4c5", null ],
[ "abook_toggle_flag", "Contact_8php.html#a024919623a830e8703ac4f23496dd66c", null ],
- [ "account_remove", "Contact_8php.html#a6e64de7db60b7243dce45fb6347636ff", null ],
- [ "channel_remove", "Contact_8php.html#a186162051a5127069cc851d78740f205", null ],
+ [ "account_remove", "Contact_8php.html#a5101d7eca5d6f387e5555f03fe249e33", null ],
+ [ "channel_remove", "Contact_8php.html#a4e8af0f0525161da74583c04b8b03097", null ],
[ "channelx_by_hash", "Contact_8php.html#a483cda56f9e37c3a4a8773dcdfeb0258", null ],
[ "channelx_by_n", "Contact_8php.html#a3a0844dac1e86d523de5d2f432cfeebc", null ],
[ "channelx_by_nick", "Contact_8php.html#a87e699f74a1102b25e8aa0432d86a91e", null ],
[ "contact_remove", "Contact_8php.html#a28e062c884331dbb5dfa713228c25ad6", null ],
[ "mark_orphan_hubsxchans", "Contact_8php.html#a08845ce8c5b997d5edac38ae7118b5c8", null ],
- [ "random_profile", "Contact_8php.html#a852fa476f0c70bde10a4f2533aec5f71", null ],
+ [ "random_profile", "Contact_8php.html#a7e3f5bef8ea1d2bf8434c9be36a2b713", null ],
[ "rconnect_url", "Contact_8php.html#a2f4f495d53f2a334ab75292af79d3c91", null ],
[ "remove_all_xchan_resources", "Contact_8php.html#acc12cda999c88c4d6185cca967c15125", null ],
- [ "terminate_friendship", "Contact_8php.html#a38daa1c210b78385307123450ca9a1fc", null ],
+ [ "rrmdir", "Contact_8php.html#ab5895b75a3b2abdddf1cb351a8c6b58b", null ],
[ "user_remove", "Contact_8php.html#a2fc191067dd571a79603c66b04b1ca15", null ],
[ "vcard_from_xchan", "Contact_8php.html#a6348a532c9d26cd1c9afbc9aa6aa8960", null ]
]; \ No newline at end of file
diff --git a/doc/html/Importer_8php.html b/doc/html/Importer_8php.html
new file mode 100644
index 000000000..1983b152a
--- /dev/null
+++ b/doc/html/Importer_8php.html
@@ -0,0 +1,129 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<meta name="generator" content="Doxygen 1.8.3.1"/>
+<title>The Red Matrix: include/Import/Importer.php File Reference</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="navtree.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="resize.js"></script>
+<script type="text/javascript" src="navtree.js"></script>
+<script type="text/javascript">
+ $(document).ready(initResizable);
+ $(window).load(resizeHeight);
+</script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/search.js"></script>
+<script type="text/javascript">
+ $(document).ready(function() { searchBox.OnSelectItem(0); });
+</script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+ <td id="projectlogo"><img alt="Logo" src="rm-64.png"/></td>
+ <td style="padding-left: 0.5em;">
+ <div id="projectname">The Red Matrix
+ </div>
+ </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.8.3.1 -->
+<script type="text/javascript">
+var searchBox = new SearchBox("searchBox", "search",false,'Search');
+</script>
+ <div id="navrow1" class="tabs">
+ <ul class="tablist">
+ <li><a href="index.html"><span>Main&#160;Page</span></a></li>
+ <li><a href="pages.html"><span>Related&#160;Pages</span></a></li>
+ <li><a href="namespaces.html"><span>Namespaces</span></a></li>
+ <li><a href="annotated.html"><span>Classes</span></a></li>
+ <li class="current"><a href="files.html"><span>Files</span></a></li>
+ <li>
+ <div id="MSearchBox" class="MSearchBoxInactive">
+ <span class="left">
+ <img id="MSearchSelect" src="search/mag_sel.png"
+ onmouseover="return searchBox.OnSearchSelectShow()"
+ onmouseout="return searchBox.OnSearchSelectHide()"
+ alt=""/>
+ <input type="text" id="MSearchField" value="Search" accesskey="S"
+ onfocus="searchBox.OnSearchFieldFocus(true)"
+ onblur="searchBox.OnSearchFieldFocus(false)"
+ onkeyup="searchBox.OnSearchFieldChange(event)"/>
+ </span><span class="right">
+ <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
+ </span>
+ </div>
+ </li>
+ </ul>
+ </div>
+ <div id="navrow2" class="tabs2">
+ <ul class="tablist">
+ <li><a href="files.html"><span>File&#160;List</span></a></li>
+ <li><a href="globals.html"><span>File&#160;Members</span></a></li>
+ </ul>
+ </div>
+</div><!-- top -->
+<div id="side-nav" class="ui-resizable side-nav-resizable">
+ <div id="nav-tree">
+ <div id="nav-tree-contents">
+ <div id="nav-sync" class="sync"></div>
+ </div>
+ </div>
+ <div id="splitbar" style="-moz-user-select:none;"
+ class="ui-resizable-handle">
+ </div>
+</div>
+<script type="text/javascript">
+$(document).ready(function(){initNavTree('Importer_8php.html','');});
+</script>
+<div id="doc-content">
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+ onmouseover="return searchBox.OnSearchSelectShow()"
+ onmouseout="return searchBox.OnSearchSelectHide()"
+ onkeydown="return searchBox.OnSearchSelectKey(event)">
+<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark">&#160;</span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark">&#160;</span>Classes</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark">&#160;</span>Namespaces</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark">&#160;</span>Files</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark">&#160;</span>Functions</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark">&#160;</span>Variables</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark">&#160;</span>Pages</a></div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<iframe src="javascript:void(0)" frameborder="0"
+ name="MSearchResults" id="MSearchResults">
+</iframe>
+</div>
+
+<div class="header">
+ <div class="summary">
+<a href="#nested-classes">Classes</a> &#124;
+<a href="#namespaces">Namespaces</a> </div>
+ <div class="headertitle">
+<div class="title">Importer.php File Reference</div> </div>
+</div><!--header-->
+<div class="contents">
+<table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="nested-classes"></a>
+Classes</h2></td></tr>
+<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classRedMatrix_1_1Import_1_1Import.html">RedMatrix\Import\Import</a></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+</table><table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="namespaces"></a>
+Namespaces</h2></td></tr>
+<tr class="memitem:namespaceRedMatrix_1_1Import"><td class="memItemLeft" align="right" valign="top">namespace &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceRedMatrix_1_1Import.html">RedMatrix\Import</a></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:namespaceRedMatrix"><td class="memItemLeft" align="right" valign="top">namespace &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceRedMatrix.html">RedMatrix</a></td></tr>
+<tr class="memdesc:namespaceRedMatrix"><td class="mdescLeft">&#160;</td><td class="mdescRight">Class <a class="el" href="namespaceRedMatrix_1_1Import.html">Import</a>. <br/></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+</table>
+</div><!-- contents -->
+</div><!-- doc-content -->
+
diff --git a/doc/html/README_8md.html b/doc/html/README_8md.html
index ec5f607aa..0b5de21e2 100644
--- a/doc/html/README_8md.html
+++ b/doc/html/README_8md.html
@@ -28,7 +28,7 @@
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
- <td id="projectlogo"><img alt="Logo" src="rhash-64.png"/></td>
+ <td id="projectlogo"><img alt="Logo" src="rm-64.png"/></td>
<td style="padding-left: 0.5em;">
<div id="projectname">The Red Matrix
</div>
diff --git a/doc/html/RedBasicAuth_8php.html b/doc/html/RedBasicAuth_8php.html
new file mode 100644
index 000000000..86984219c
--- /dev/null
+++ b/doc/html/RedBasicAuth_8php.html
@@ -0,0 +1,127 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<meta name="generator" content="Doxygen 1.8.3.1"/>
+<title>The Red Matrix: include/RedDAV/RedBasicAuth.php File Reference</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="navtree.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="resize.js"></script>
+<script type="text/javascript" src="navtree.js"></script>
+<script type="text/javascript">
+ $(document).ready(initResizable);
+ $(window).load(resizeHeight);
+</script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/search.js"></script>
+<script type="text/javascript">
+ $(document).ready(function() { searchBox.OnSelectItem(0); });
+</script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+ <td id="projectlogo"><img alt="Logo" src="rm-64.png"/></td>
+ <td style="padding-left: 0.5em;">
+ <div id="projectname">The Red Matrix
+ </div>
+ </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.8.3.1 -->
+<script type="text/javascript">
+var searchBox = new SearchBox("searchBox", "search",false,'Search');
+</script>
+ <div id="navrow1" class="tabs">
+ <ul class="tablist">
+ <li><a href="index.html"><span>Main&#160;Page</span></a></li>
+ <li><a href="pages.html"><span>Related&#160;Pages</span></a></li>
+ <li><a href="namespaces.html"><span>Namespaces</span></a></li>
+ <li><a href="annotated.html"><span>Classes</span></a></li>
+ <li class="current"><a href="files.html"><span>Files</span></a></li>
+ <li>
+ <div id="MSearchBox" class="MSearchBoxInactive">
+ <span class="left">
+ <img id="MSearchSelect" src="search/mag_sel.png"
+ onmouseover="return searchBox.OnSearchSelectShow()"
+ onmouseout="return searchBox.OnSearchSelectHide()"
+ alt=""/>
+ <input type="text" id="MSearchField" value="Search" accesskey="S"
+ onfocus="searchBox.OnSearchFieldFocus(true)"
+ onblur="searchBox.OnSearchFieldFocus(false)"
+ onkeyup="searchBox.OnSearchFieldChange(event)"/>
+ </span><span class="right">
+ <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
+ </span>
+ </div>
+ </li>
+ </ul>
+ </div>
+ <div id="navrow2" class="tabs2">
+ <ul class="tablist">
+ <li><a href="files.html"><span>File&#160;List</span></a></li>
+ <li><a href="globals.html"><span>File&#160;Members</span></a></li>
+ </ul>
+ </div>
+</div><!-- top -->
+<div id="side-nav" class="ui-resizable side-nav-resizable">
+ <div id="nav-tree">
+ <div id="nav-tree-contents">
+ <div id="nav-sync" class="sync"></div>
+ </div>
+ </div>
+ <div id="splitbar" style="-moz-user-select:none;"
+ class="ui-resizable-handle">
+ </div>
+</div>
+<script type="text/javascript">
+$(document).ready(function(){initNavTree('RedBasicAuth_8php.html','');});
+</script>
+<div id="doc-content">
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+ onmouseover="return searchBox.OnSearchSelectShow()"
+ onmouseout="return searchBox.OnSearchSelectHide()"
+ onkeydown="return searchBox.OnSearchSelectKey(event)">
+<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark">&#160;</span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark">&#160;</span>Classes</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark">&#160;</span>Namespaces</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark">&#160;</span>Files</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark">&#160;</span>Functions</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark">&#160;</span>Variables</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark">&#160;</span>Pages</a></div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<iframe src="javascript:void(0)" frameborder="0"
+ name="MSearchResults" id="MSearchResults">
+</iframe>
+</div>
+
+<div class="header">
+ <div class="summary">
+<a href="#nested-classes">Classes</a> &#124;
+<a href="#namespaces">Namespaces</a> </div>
+ <div class="headertitle">
+<div class="title">RedBasicAuth.php File Reference</div> </div>
+</div><!--header-->
+<div class="contents">
+<table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="nested-classes"></a>
+Classes</h2></td></tr>
+<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classRedMatrix_1_1RedDAV_1_1RedBasicAuth.html">RedMatrix\RedDAV\RedBasicAuth</a></td></tr>
+<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">Authentication backend class for <a class="el" href="namespaceRedMatrix_1_1RedDAV.html">RedDAV</a>. <a href="classRedMatrix_1_1RedDAV_1_1RedBasicAuth.html#details">More...</a><br/></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+</table><table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="namespaces"></a>
+Namespaces</h2></td></tr>
+<tr class="memitem:namespaceRedMatrix_1_1RedDAV"><td class="memItemLeft" align="right" valign="top">namespace &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceRedMatrix_1_1RedDAV.html">RedMatrix\RedDAV</a></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+</table>
+</div><!-- contents -->
+</div><!-- doc-content -->
+
diff --git a/doc/html/RedBrowser_8php.html b/doc/html/RedBrowser_8php.html
new file mode 100644
index 000000000..7ee0e1d7e
--- /dev/null
+++ b/doc/html/RedBrowser_8php.html
@@ -0,0 +1,127 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<meta name="generator" content="Doxygen 1.8.3.1"/>
+<title>The Red Matrix: include/RedDAV/RedBrowser.php File Reference</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="navtree.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="resize.js"></script>
+<script type="text/javascript" src="navtree.js"></script>
+<script type="text/javascript">
+ $(document).ready(initResizable);
+ $(window).load(resizeHeight);
+</script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/search.js"></script>
+<script type="text/javascript">
+ $(document).ready(function() { searchBox.OnSelectItem(0); });
+</script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+ <td id="projectlogo"><img alt="Logo" src="rm-64.png"/></td>
+ <td style="padding-left: 0.5em;">
+ <div id="projectname">The Red Matrix
+ </div>
+ </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.8.3.1 -->
+<script type="text/javascript">
+var searchBox = new SearchBox("searchBox", "search",false,'Search');
+</script>
+ <div id="navrow1" class="tabs">
+ <ul class="tablist">
+ <li><a href="index.html"><span>Main&#160;Page</span></a></li>
+ <li><a href="pages.html"><span>Related&#160;Pages</span></a></li>
+ <li><a href="namespaces.html"><span>Namespaces</span></a></li>
+ <li><a href="annotated.html"><span>Classes</span></a></li>
+ <li class="current"><a href="files.html"><span>Files</span></a></li>
+ <li>
+ <div id="MSearchBox" class="MSearchBoxInactive">
+ <span class="left">
+ <img id="MSearchSelect" src="search/mag_sel.png"
+ onmouseover="return searchBox.OnSearchSelectShow()"
+ onmouseout="return searchBox.OnSearchSelectHide()"
+ alt=""/>
+ <input type="text" id="MSearchField" value="Search" accesskey="S"
+ onfocus="searchBox.OnSearchFieldFocus(true)"
+ onblur="searchBox.OnSearchFieldFocus(false)"
+ onkeyup="searchBox.OnSearchFieldChange(event)"/>
+ </span><span class="right">
+ <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
+ </span>
+ </div>
+ </li>
+ </ul>
+ </div>
+ <div id="navrow2" class="tabs2">
+ <ul class="tablist">
+ <li><a href="files.html"><span>File&#160;List</span></a></li>
+ <li><a href="globals.html"><span>File&#160;Members</span></a></li>
+ </ul>
+ </div>
+</div><!-- top -->
+<div id="side-nav" class="ui-resizable side-nav-resizable">
+ <div id="nav-tree">
+ <div id="nav-tree-contents">
+ <div id="nav-sync" class="sync"></div>
+ </div>
+ </div>
+ <div id="splitbar" style="-moz-user-select:none;"
+ class="ui-resizable-handle">
+ </div>
+</div>
+<script type="text/javascript">
+$(document).ready(function(){initNavTree('RedBrowser_8php.html','');});
+</script>
+<div id="doc-content">
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+ onmouseover="return searchBox.OnSearchSelectShow()"
+ onmouseout="return searchBox.OnSearchSelectHide()"
+ onkeydown="return searchBox.OnSearchSelectKey(event)">
+<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark">&#160;</span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark">&#160;</span>Classes</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark">&#160;</span>Namespaces</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark">&#160;</span>Files</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark">&#160;</span>Functions</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark">&#160;</span>Variables</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark">&#160;</span>Pages</a></div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<iframe src="javascript:void(0)" frameborder="0"
+ name="MSearchResults" id="MSearchResults">
+</iframe>
+</div>
+
+<div class="header">
+ <div class="summary">
+<a href="#nested-classes">Classes</a> &#124;
+<a href="#namespaces">Namespaces</a> </div>
+ <div class="headertitle">
+<div class="title">RedBrowser.php File Reference</div> </div>
+</div><!--header-->
+<div class="contents">
+<table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="nested-classes"></a>
+Classes</h2></td></tr>
+<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classRedMatrix_1_1RedDAV_1_1RedBrowser.html">RedMatrix\RedDAV\RedBrowser</a></td></tr>
+<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">Provides a DAV frontend for the webbrowser. <a href="classRedMatrix_1_1RedDAV_1_1RedBrowser.html#details">More...</a><br/></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+</table><table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="namespaces"></a>
+Namespaces</h2></td></tr>
+<tr class="memitem:namespaceRedMatrix_1_1RedDAV"><td class="memItemLeft" align="right" valign="top">namespace &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceRedMatrix_1_1RedDAV.html">RedMatrix\RedDAV</a></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+</table>
+</div><!-- contents -->
+</div><!-- doc-content -->
+
diff --git a/doc/html/RedDirectory_8php.html b/doc/html/RedDirectory_8php.html
new file mode 100644
index 000000000..e0e081164
--- /dev/null
+++ b/doc/html/RedDirectory_8php.html
@@ -0,0 +1,127 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<meta name="generator" content="Doxygen 1.8.3.1"/>
+<title>The Red Matrix: include/RedDAV/RedDirectory.php File Reference</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="navtree.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="resize.js"></script>
+<script type="text/javascript" src="navtree.js"></script>
+<script type="text/javascript">
+ $(document).ready(initResizable);
+ $(window).load(resizeHeight);
+</script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/search.js"></script>
+<script type="text/javascript">
+ $(document).ready(function() { searchBox.OnSelectItem(0); });
+</script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+ <td id="projectlogo"><img alt="Logo" src="rm-64.png"/></td>
+ <td style="padding-left: 0.5em;">
+ <div id="projectname">The Red Matrix
+ </div>
+ </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.8.3.1 -->
+<script type="text/javascript">
+var searchBox = new SearchBox("searchBox", "search",false,'Search');
+</script>
+ <div id="navrow1" class="tabs">
+ <ul class="tablist">
+ <li><a href="index.html"><span>Main&#160;Page</span></a></li>
+ <li><a href="pages.html"><span>Related&#160;Pages</span></a></li>
+ <li><a href="namespaces.html"><span>Namespaces</span></a></li>
+ <li><a href="annotated.html"><span>Classes</span></a></li>
+ <li class="current"><a href="files.html"><span>Files</span></a></li>
+ <li>
+ <div id="MSearchBox" class="MSearchBoxInactive">
+ <span class="left">
+ <img id="MSearchSelect" src="search/mag_sel.png"
+ onmouseover="return searchBox.OnSearchSelectShow()"
+ onmouseout="return searchBox.OnSearchSelectHide()"
+ alt=""/>
+ <input type="text" id="MSearchField" value="Search" accesskey="S"
+ onfocus="searchBox.OnSearchFieldFocus(true)"
+ onblur="searchBox.OnSearchFieldFocus(false)"
+ onkeyup="searchBox.OnSearchFieldChange(event)"/>
+ </span><span class="right">
+ <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
+ </span>
+ </div>
+ </li>
+ </ul>
+ </div>
+ <div id="navrow2" class="tabs2">
+ <ul class="tablist">
+ <li><a href="files.html"><span>File&#160;List</span></a></li>
+ <li><a href="globals.html"><span>File&#160;Members</span></a></li>
+ </ul>
+ </div>
+</div><!-- top -->
+<div id="side-nav" class="ui-resizable side-nav-resizable">
+ <div id="nav-tree">
+ <div id="nav-tree-contents">
+ <div id="nav-sync" class="sync"></div>
+ </div>
+ </div>
+ <div id="splitbar" style="-moz-user-select:none;"
+ class="ui-resizable-handle">
+ </div>
+</div>
+<script type="text/javascript">
+$(document).ready(function(){initNavTree('RedDirectory_8php.html','');});
+</script>
+<div id="doc-content">
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+ onmouseover="return searchBox.OnSearchSelectShow()"
+ onmouseout="return searchBox.OnSearchSelectHide()"
+ onkeydown="return searchBox.OnSearchSelectKey(event)">
+<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark">&#160;</span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark">&#160;</span>Classes</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark">&#160;</span>Namespaces</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark">&#160;</span>Files</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark">&#160;</span>Functions</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark">&#160;</span>Variables</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark">&#160;</span>Pages</a></div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<iframe src="javascript:void(0)" frameborder="0"
+ name="MSearchResults" id="MSearchResults">
+</iframe>
+</div>
+
+<div class="header">
+ <div class="summary">
+<a href="#nested-classes">Classes</a> &#124;
+<a href="#namespaces">Namespaces</a> </div>
+ <div class="headertitle">
+<div class="title">RedDirectory.php File Reference</div> </div>
+</div><!--header-->
+<div class="contents">
+<table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="nested-classes"></a>
+Classes</h2></td></tr>
+<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classRedMatrix_1_1RedDAV_1_1RedDirectory.html">RedMatrix\RedDAV\RedDirectory</a></td></tr>
+<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight"><a class="el" href="classRedMatrix_1_1RedDAV_1_1RedDirectory.html" title="RedDirectory class.">RedDirectory</a> class. <a href="classRedMatrix_1_1RedDAV_1_1RedDirectory.html#details">More...</a><br/></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+</table><table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="namespaces"></a>
+Namespaces</h2></td></tr>
+<tr class="memitem:namespaceRedMatrix_1_1RedDAV"><td class="memItemLeft" align="right" valign="top">namespace &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceRedMatrix_1_1RedDAV.html">RedMatrix\RedDAV</a></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+</table>
+</div><!-- contents -->
+</div><!-- doc-content -->
+
diff --git a/doc/html/RedFile_8php.html b/doc/html/RedFile_8php.html
new file mode 100644
index 000000000..218102ecc
--- /dev/null
+++ b/doc/html/RedFile_8php.html
@@ -0,0 +1,127 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<meta name="generator" content="Doxygen 1.8.3.1"/>
+<title>The Red Matrix: include/RedDAV/RedFile.php File Reference</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="navtree.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="resize.js"></script>
+<script type="text/javascript" src="navtree.js"></script>
+<script type="text/javascript">
+ $(document).ready(initResizable);
+ $(window).load(resizeHeight);
+</script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/search.js"></script>
+<script type="text/javascript">
+ $(document).ready(function() { searchBox.OnSelectItem(0); });
+</script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+ <td id="projectlogo"><img alt="Logo" src="rm-64.png"/></td>
+ <td style="padding-left: 0.5em;">
+ <div id="projectname">The Red Matrix
+ </div>
+ </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.8.3.1 -->
+<script type="text/javascript">
+var searchBox = new SearchBox("searchBox", "search",false,'Search');
+</script>
+ <div id="navrow1" class="tabs">
+ <ul class="tablist">
+ <li><a href="index.html"><span>Main&#160;Page</span></a></li>
+ <li><a href="pages.html"><span>Related&#160;Pages</span></a></li>
+ <li><a href="namespaces.html"><span>Namespaces</span></a></li>
+ <li><a href="annotated.html"><span>Classes</span></a></li>
+ <li class="current"><a href="files.html"><span>Files</span></a></li>
+ <li>
+ <div id="MSearchBox" class="MSearchBoxInactive">
+ <span class="left">
+ <img id="MSearchSelect" src="search/mag_sel.png"
+ onmouseover="return searchBox.OnSearchSelectShow()"
+ onmouseout="return searchBox.OnSearchSelectHide()"
+ alt=""/>
+ <input type="text" id="MSearchField" value="Search" accesskey="S"
+ onfocus="searchBox.OnSearchFieldFocus(true)"
+ onblur="searchBox.OnSearchFieldFocus(false)"
+ onkeyup="searchBox.OnSearchFieldChange(event)"/>
+ </span><span class="right">
+ <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
+ </span>
+ </div>
+ </li>
+ </ul>
+ </div>
+ <div id="navrow2" class="tabs2">
+ <ul class="tablist">
+ <li><a href="files.html"><span>File&#160;List</span></a></li>
+ <li><a href="globals.html"><span>File&#160;Members</span></a></li>
+ </ul>
+ </div>
+</div><!-- top -->
+<div id="side-nav" class="ui-resizable side-nav-resizable">
+ <div id="nav-tree">
+ <div id="nav-tree-contents">
+ <div id="nav-sync" class="sync"></div>
+ </div>
+ </div>
+ <div id="splitbar" style="-moz-user-select:none;"
+ class="ui-resizable-handle">
+ </div>
+</div>
+<script type="text/javascript">
+$(document).ready(function(){initNavTree('RedFile_8php.html','');});
+</script>
+<div id="doc-content">
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+ onmouseover="return searchBox.OnSearchSelectShow()"
+ onmouseout="return searchBox.OnSearchSelectHide()"
+ onkeydown="return searchBox.OnSearchSelectKey(event)">
+<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark">&#160;</span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark">&#160;</span>Classes</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark">&#160;</span>Namespaces</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark">&#160;</span>Files</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark">&#160;</span>Functions</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark">&#160;</span>Variables</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark">&#160;</span>Pages</a></div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<iframe src="javascript:void(0)" frameborder="0"
+ name="MSearchResults" id="MSearchResults">
+</iframe>
+</div>
+
+<div class="header">
+ <div class="summary">
+<a href="#nested-classes">Classes</a> &#124;
+<a href="#namespaces">Namespaces</a> </div>
+ <div class="headertitle">
+<div class="title">RedFile.php File Reference</div> </div>
+</div><!--header-->
+<div class="contents">
+<table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="nested-classes"></a>
+Classes</h2></td></tr>
+<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classRedMatrix_1_1RedDAV_1_1RedFile.html">RedMatrix\RedDAV\RedFile</a></td></tr>
+<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">This class represents a file in DAV. <a href="classRedMatrix_1_1RedDAV_1_1RedFile.html#details">More...</a><br/></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+</table><table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="namespaces"></a>
+Namespaces</h2></td></tr>
+<tr class="memitem:namespaceRedMatrix_1_1RedDAV"><td class="memItemLeft" align="right" valign="top">namespace &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceRedMatrix_1_1RedDAV.html">RedMatrix\RedDAV</a></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+</table>
+</div><!-- contents -->
+</div><!-- doc-content -->
+
diff --git a/doc/html/account_8php.html b/doc/html/account_8php.html
index eb7eb62ca..0346796e4 100644
--- a/doc/html/account_8php.html
+++ b/doc/html/account_8php.html
@@ -138,8 +138,48 @@ Functions</h2></td></tr>
<tr class="separator:ad07be417ac7eda939768804106ddea3d"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a0d183a3cb4c67a0f5e906811df7a1fc9"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="account_8php.html#a0d183a3cb4c67a0f5e906811df7a1fc9">downgrade_accounts</a> ()</td></tr>
<tr class="separator:a0d183a3cb4c67a0f5e906811df7a1fc9"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a030cec6793b909c439c0336ba39b1571"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="account_8php.html#a030cec6793b909c439c0336ba39b1571">service_class_allows</a> ($uid, $property, $usage=false)</td></tr>
+<tr class="separator:a030cec6793b909c439c0336ba39b1571"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a905b54e10704b283ac64680a8abc0971"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="account_8php.html#a905b54e10704b283ac64680a8abc0971">service_class_fetch</a> ($uid, $property)</td></tr>
+<tr class="separator:a905b54e10704b283ac64680a8abc0971"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a4328c40ee4b3d68630cf1ebb7b9d4d89"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="account_8php.html#a4328c40ee4b3d68630cf1ebb7b9d4d89">account_service_class_fetch</a> ($aid, $property)</td></tr>
+<tr class="separator:a4328c40ee4b3d68630cf1ebb7b9d4d89"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a4fc13e528367f510fcb6d8bbfc559040"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="account_8php.html#a4fc13e528367f510fcb6d8bbfc559040">upgrade_link</a> ($<a class="el" href="bbcode_8php.html#a009f61aaf78771737ed0765c8463911b">bbcode</a>=false)</td></tr>
+<tr class="separator:a4fc13e528367f510fcb6d8bbfc559040"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a901657dd078e070516cf97285e0bada7"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="account_8php.html#a901657dd078e070516cf97285e0bada7">upgrade_message</a> ($<a class="el" href="bbcode_8php.html#a009f61aaf78771737ed0765c8463911b">bbcode</a>=false)</td></tr>
+<tr class="separator:a901657dd078e070516cf97285e0bada7"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a754d7f53b3abc557b753c057dc4e021d"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="account_8php.html#a754d7f53b3abc557b753c057dc4e021d">upgrade_bool_message</a> ($<a class="el" href="bbcode_8php.html#a009f61aaf78771737ed0765c8463911b">bbcode</a>=false)</td></tr>
+<tr class="separator:a754d7f53b3abc557b753c057dc4e021d"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<h2 class="groupheader">Function Documentation</h2>
+<a class="anchor" id="a4328c40ee4b3d68630cf1ebb7b9d4d89"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">account_service_class_fetch </td>
+ <td>(</td>
+ <td class="paramtype">&#160;</td>
+ <td class="paramname"><em>$aid</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">&#160;</td>
+ <td class="paramname"><em>$property</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p>Referenced by <a class="el" href="import_8php.html#af17fef0410518f7eac205d0ea416eaa2">import_post()</a>, and <a class="el" href="zot_8php.html#ac301c67864917c35922257950ae0f95c">process_channel_sync_delivery()</a>.</p>
+
+</div>
+</div>
<a class="anchor" id="a43e3042b2723d76915a030bac3c668b6"></a>
<div class="memitem">
<div class="memproto">
@@ -312,6 +352,120 @@ Functions</h2></td></tr>
</div>
</div>
+<a class="anchor" id="a030cec6793b909c439c0336ba39b1571"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">service_class_allows </td>
+ <td>(</td>
+ <td class="paramtype">&#160;</td>
+ <td class="paramname"><em>$uid</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">&#160;</td>
+ <td class="paramname"><em>$property</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">&#160;</td>
+ <td class="paramname"><em>$usage</em> = <code>false</code>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p>Referenced by <a class="el" href="identity_8php.html#ac9fcd5c4c371998790b5c55c3d0f4633">identity_check_service_class()</a>, <a class="el" href="item_8php.html#a5b1b36cb301a94b38150074f0d424e74">item_check_service_class()</a>, and <a class="el" href="include_2follow_8php.html#ae387d4ae097c23d69f3247e7f08140c7">new_contact()</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a905b54e10704b283ac64680a8abc0971"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">service_class_fetch </td>
+ <td>(</td>
+ <td class="paramtype">&#160;</td>
+ <td class="paramname"><em>$uid</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">&#160;</td>
+ <td class="paramname"><em>$property</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p>Referenced by <a class="el" href="include_2attach_8php.html#a84a8a64c4805e1525b42d4add464833f">attach_store()</a>, <a class="el" href="include_2chat_8php.html#acdc80dba4eb796c7472b21129b435422">chatroom_create()</a>, <a class="el" href="include_2chat_8php.html#a2c95b545e46bfee64faa05ecf0afea91">chatroom_enter()</a>, <a class="el" href="classRedMatrix_1_1RedDAV_1_1RedDirectory.html#a58e750256cdc2f0f79fbe8d5463ffefe">RedMatrix\RedDAV\RedDirectory\createFile()</a>, <a class="el" href="classRedMatrix_1_1RedDAV_1_1RedBrowser.html#af764d5f14df751f9ec86c34fab300c09">RedMatrix\RedDAV\RedBrowser\generateDirectoryIndex()</a>, <a class="el" href="classRedMatrix_1_1RedDAV_1_1RedDirectory.html#a69db443ed3c84938b4352fe515bf8d68">RedMatrix\RedDAV\RedDirectory\getQuotaInfo()</a>, <a class="el" href="manage_8php.html#a2bca247b5296827638959138367db4f5">manage_content()</a>, <a class="el" href="include_2photos_8php.html#a6c40ef58aefef705a5adc84a40e97109">photo_upload()</a>, <a class="el" href="mod_2photos_8php.html#aa87382611a66ec5effdb2d78f13f5812">photos_content()</a>, <a class="el" href="poller_8php.html#a5f12df3a4738124b6c039971e87e76da">poller_run()</a>, <a class="el" href="zot_8php.html#ac301c67864917c35922257950ae0f95c">process_channel_sync_delivery()</a>, <a class="el" href="classRedMatrix_1_1RedDAV_1_1RedFile.html#a709ec1288d21ddf1353524435ab916f0">RedMatrix\RedDAV\RedFile\put()</a>, and <a class="el" href="widgets_8php.html#ad1bf7aa69e8d100d95faba17c7bc91cd">widget_follow()</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a754d7f53b3abc557b753c057dc4e021d"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">upgrade_bool_message </td>
+ <td>(</td>
+ <td class="paramtype">&#160;</td>
+ <td class="paramname"><em>$bbcode</em> = <code>false</code></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+</div>
+</div>
+<a class="anchor" id="a4fc13e528367f510fcb6d8bbfc559040"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">upgrade_link </td>
+ <td>(</td>
+ <td class="paramtype">&#160;</td>
+ <td class="paramname"><em>$bbcode</em> = <code>false</code></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p>Referenced by <a class="el" href="account_8php.html#a754d7f53b3abc557b753c057dc4e021d">upgrade_bool_message()</a>, and <a class="el" href="account_8php.html#a901657dd078e070516cf97285e0bada7">upgrade_message()</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a901657dd078e070516cf97285e0bada7"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">upgrade_message </td>
+ <td>(</td>
+ <td class="paramtype">&#160;</td>
+ <td class="paramname"><em>$bbcode</em> = <code>false</code></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p>Referenced by <a class="el" href="include_2attach_8php.html#a84a8a64c4805e1525b42d4add464833f">attach_store()</a>, <a class="el" href="include_2chat_8php.html#acdc80dba4eb796c7472b21129b435422">chatroom_create()</a>, <a class="el" href="identity_8php.html#ac9fcd5c4c371998790b5c55c3d0f4633">identity_check_service_class()</a>, <a class="el" href="item_8php.html#a5b1b36cb301a94b38150074f0d424e74">item_check_service_class()</a>, <a class="el" href="include_2follow_8php.html#ae387d4ae097c23d69f3247e7f08140c7">new_contact()</a>, and <a class="el" href="include_2photos_8php.html#a6c40ef58aefef705a5adc84a40e97109">photo_upload()</a>.</p>
+
+</div>
+</div>
<a class="anchor" id="ac5c570a2d46446bad4dd2501e9c5a4b1"></a>
<div class="memitem">
<div class="memproto">
diff --git a/doc/html/account_8php.js b/doc/html/account_8php.js
index 6e509ce60..9434797b1 100644
--- a/doc/html/account_8php.js
+++ b/doc/html/account_8php.js
@@ -1,5 +1,6 @@
var account_8php =
[
+ [ "account_service_class_fetch", "account_8php.html#a4328c40ee4b3d68630cf1ebb7b9d4d89", null ],
[ "account_total", "account_8php.html#a43e3042b2723d76915a030bac3c668b6", null ],
[ "check_account_admin", "account_8php.html#a917d74aad0baf3e0c4b51cf1051e654f", null ],
[ "check_account_email", "account_8php.html#ae052bd5558847bd38e89c213561a9771", null ],
@@ -9,6 +10,11 @@ var account_8php =
[ "downgrade_accounts", "account_8php.html#a0d183a3cb4c67a0f5e906811df7a1fc9", null ],
[ "send_reg_approval_email", "account_8php.html#a014de2d5d5c9785de5bf547a485822fa", null ],
[ "send_verification_email", "account_8php.html#aa9c29c497c17d8f9344dce8631ad8761", null ],
+ [ "service_class_allows", "account_8php.html#a030cec6793b909c439c0336ba39b1571", null ],
+ [ "service_class_fetch", "account_8php.html#a905b54e10704b283ac64680a8abc0971", null ],
+ [ "upgrade_bool_message", "account_8php.html#a754d7f53b3abc557b753c057dc4e021d", null ],
+ [ "upgrade_link", "account_8php.html#a4fc13e528367f510fcb6d8bbfc559040", null ],
+ [ "upgrade_message", "account_8php.html#a901657dd078e070516cf97285e0bada7", null ],
[ "user_allow", "account_8php.html#ac5c570a2d46446bad4dd2501e9c5a4b1", null ],
[ "user_approve", "account_8php.html#ad07be417ac7eda939768804106ddea3d", null ],
[ "user_deny", "account_8php.html#ac1653efba62493b9d87513e1b6c04c83", null ],
diff --git a/doc/html/admin_8php.html b/doc/html/admin_8php.html
index d1e165510..95e86c354 100644
--- a/doc/html/admin_8php.html
+++ b/doc/html/admin_8php.html
@@ -150,6 +150,10 @@ Functions</h2></td></tr>
<tr class="separator:a233b7c8c31776b7020532003c6e44e1c"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a1d1362698af14d209aa3a0fb655551dd"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="admin_8php.html#a1d1362698af14d209aa3a0fb655551dd">admin_page_logs</a> (&amp;$a)</td></tr>
<tr class="separator:a1d1362698af14d209aa3a0fb655551dd"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a278289bc6d45f6f2a272a7ab6a1d1057"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="admin_8php.html#a278289bc6d45f6f2a272a7ab6a1d1057">admin_page_profs_post</a> (&amp;$a)</td></tr>
+<tr class="separator:a278289bc6d45f6f2a272a7ab6a1d1057"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a3deba594ca1e11694eac1de0b724ef0a"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="admin_8php.html#a3deba594ca1e11694eac1de0b724ef0a">admin_page_profs</a> (&amp;$a)</td></tr>
+<tr class="separator:a3deba594ca1e11694eac1de0b724ef0a"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<h2 class="groupheader">Function Documentation</h2>
<a class="anchor" id="afef415e4011607fbb665610441595015"></a>
@@ -167,7 +171,7 @@ Functions</h2></td></tr>
</div><div class="memdoc">
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
- <tr><td class="paramtype"><a class="el" href="classApp.html">App</a></td><td class="paramname">$a</td><td></td></tr>
+ <tr><td class="paramtype"><a class="el" href="classApp.html" title="Our main application structure for the life of this page.">App</a></td><td class="paramname">$a</td><td></td></tr>
</table>
</dd>
</dl>
@@ -192,7 +196,7 @@ Functions</h2></td></tr>
</div><div class="memdoc">
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
- <tr><td class="paramtype"><a class="el" href="classApp.html">App</a></td><td class="paramname">$a</td><td></td></tr>
+ <tr><td class="paramtype"><a class="el" href="classApp.html" title="Our main application structure for the life of this page.">App</a></td><td class="paramname">$a</td><td></td></tr>
</table>
</dd>
</dl>
@@ -218,7 +222,7 @@ Functions</h2></td></tr>
<p>Channels admin page</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
- <tr><td class="paramtype"><a class="el" href="classApp.html">App</a></td><td class="paramname">$a</td><td></td></tr>
+ <tr><td class="paramtype"><a class="el" href="classApp.html" title="Our main application structure for the life of this page.">App</a></td><td class="paramname">$a</td><td></td></tr>
</table>
</dd>
</dl>
@@ -296,7 +300,7 @@ Functions</h2></td></tr>
</div><div class="memdoc">
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
- <tr><td class="paramtype"><a class="el" href="classApp.html">App</a></td><td class="paramname">$a</td><td></td></tr>
+ <tr><td class="paramtype"><a class="el" href="classApp.html" title="Our main application structure for the life of this page.">App</a></td><td class="paramname">$a</td><td></td></tr>
</table>
</dd>
</dl>
@@ -322,7 +326,7 @@ Functions</h2></td></tr>
<p>Logs admin page</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
- <tr><td class="paramtype"><a class="el" href="classApp.html">App</a></td><td class="paramname">$a</td><td></td></tr>
+ <tr><td class="paramtype"><a class="el" href="classApp.html" title="Our main application structure for the life of this page.">App</a></td><td class="paramname">$a</td><td></td></tr>
</table>
</dd>
</dl>
@@ -347,7 +351,7 @@ Functions</h2></td></tr>
<p>Plugins admin page</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
- <tr><td class="paramtype"><a class="el" href="classApp.html">App</a></td><td class="paramname">$a</td><td></td></tr>
+ <tr><td class="paramtype"><a class="el" href="classApp.html" title="Our main application structure for the life of this page.">App</a></td><td class="paramname">$a</td><td></td></tr>
</table>
</dd>
</dl>
@@ -359,6 +363,42 @@ Functions</h2></td></tr>
</div>
</div>
+<a class="anchor" id="a3deba594ca1e11694eac1de0b724ef0a"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">admin_page_profs </td>
+ <td>(</td>
+ <td class="paramtype">&amp;&#160;</td>
+ <td class="paramname"><em>$a</em></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p>Referenced by <a class="el" href="admin_8php.html#afef415e4011607fbb665610441595015">admin_content()</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a278289bc6d45f6f2a272a7ab6a1d1057"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">admin_page_profs_post </td>
+ <td>(</td>
+ <td class="paramtype">&amp;&#160;</td>
+ <td class="paramname"><em>$a</em></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p>Referenced by <a class="el" href="admin_8php.html#acf51f5837a7427832144c2bf7308ada3">admin_post()</a>.</p>
+
+</div>
+</div>
<a class="anchor" id="ac0f3bd12431c056aad77bac9d09fa30e"></a>
<div class="memitem">
<div class="memproto">
@@ -374,7 +414,7 @@ Functions</h2></td></tr>
</div><div class="memdoc">
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
- <tr><td class="paramtype"><a class="el" href="classApp.html">App</a></td><td class="paramname">$a</td><td></td></tr>
+ <tr><td class="paramtype"><a class="el" href="classApp.html" title="Our main application structure for the life of this page.">App</a></td><td class="paramname">$a</td><td></td></tr>
</table>
</dd>
</dl>
@@ -400,7 +440,7 @@ Functions</h2></td></tr>
<p>Admin Site Page </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
- <tr><td class="paramtype"><a class="el" href="classApp.html">App</a></td><td class="paramname">$a</td><td></td></tr>
+ <tr><td class="paramtype"><a class="el" href="classApp.html" title="Our main application structure for the life of this page.">App</a></td><td class="paramname">$a</td><td></td></tr>
</table>
</dd>
</dl>
@@ -425,7 +465,7 @@ Functions</h2></td></tr>
<p>Admin Summary Page </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
- <tr><td class="paramtype"><a class="el" href="classApp.html">App</a></td><td class="paramname">$a</td><td></td></tr>
+ <tr><td class="paramtype"><a class="el" href="classApp.html" title="Our main application structure for the life of this page.">App</a></td><td class="paramname">$a</td><td></td></tr>
</table>
</dd>
</dl>
@@ -451,7 +491,7 @@ Functions</h2></td></tr>
<p>Themes admin page</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
- <tr><td class="paramtype"><a class="el" href="classApp.html">App</a></td><td class="paramname">$a</td><td></td></tr>
+ <tr><td class="paramtype"><a class="el" href="classApp.html" title="Our main application structure for the life of this page.">App</a></td><td class="paramname">$a</td><td></td></tr>
</table>
</dd>
</dl>
@@ -478,7 +518,7 @@ Functions</h2></td></tr>
</div><div class="memdoc">
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
- <tr><td class="paramtype"><a class="el" href="classApp.html">App</a></td><td class="paramname">$a</td><td></td></tr>
+ <tr><td class="paramtype"><a class="el" href="classApp.html" title="Our main application structure for the life of this page.">App</a></td><td class="paramname">$a</td><td></td></tr>
</table>
</dd>
</dl>
@@ -504,7 +544,7 @@ Functions</h2></td></tr>
<p>Users admin page</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
- <tr><td class="paramtype"><a class="el" href="classApp.html">App</a></td><td class="paramname">$a</td><td></td></tr>
+ <tr><td class="paramtype"><a class="el" href="classApp.html" title="Our main application structure for the life of this page.">App</a></td><td class="paramname">$a</td><td></td></tr>
</table>
</dd>
</dl>
@@ -529,7 +569,7 @@ Functions</h2></td></tr>
<p>Red admin </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
- <tr><td class="paramtype"><a class="el" href="classApp.html">App</a></td><td class="paramname">$a</td><td></td></tr>
+ <tr><td class="paramtype"><a class="el" href="classApp.html" title="Our main application structure for the life of this page.">App</a></td><td class="paramname">$a</td><td></td></tr>
</table>
</dd>
</dl>
diff --git a/doc/html/admin_8php.js b/doc/html/admin_8php.js
index 15b1b3522..5b818c41d 100644
--- a/doc/html/admin_8php.js
+++ b/doc/html/admin_8php.js
@@ -9,6 +9,8 @@ var admin_8php =
[ "admin_page_logs", "admin_8php.html#a1d1362698af14d209aa3a0fb655551dd", null ],
[ "admin_page_logs_post", "admin_8php.html#a233b7c8c31776b7020532003c6e44e1c", null ],
[ "admin_page_plugins", "admin_8php.html#a54128076986ba80c4a103de3fc3e19a8", null ],
+ [ "admin_page_profs", "admin_8php.html#a3deba594ca1e11694eac1de0b724ef0a", null ],
+ [ "admin_page_profs_post", "admin_8php.html#a278289bc6d45f6f2a272a7ab6a1d1057", null ],
[ "admin_page_site", "admin_8php.html#ac0f3bd12431c056aad77bac9d09fa30e", null ],
[ "admin_page_site_post", "admin_8php.html#add865f4ae806ecbf716f423fc3e50e4f", null ],
[ "admin_page_summary", "admin_8php.html#ac6e95b920b5abd030cc522964987087a", null ],
diff --git a/doc/html/annotated.html b/doc/html/annotated.html
index 2cefb3e1b..6e1ed1edf 100644
--- a/doc/html/annotated.html
+++ b/doc/html/annotated.html
@@ -110,36 +110,41 @@ $(document).ready(function(){initNavTree('annotated.html','');});
</div><!--header-->
<div class="contents">
<div class="textblock">Here are the classes, structs, unions and interfaces with brief descriptions:</div><div class="directory">
-<table class="directory">
+<div class="levels">[detail level <span onclick="javascript:toggleLevel(1);">1</span><span onclick="javascript:toggleLevel(2);">2</span><span onclick="javascript:toggleLevel(3);">3</span>]</div><table class="directory">
<tr id="row_0_" class="even"><td class="entry"><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2ns.png" alt="N" width="24" height="22" /><a class="el" href="namespaceacl__selectors.html" target="_self">acl_selectors</a></td><td class="desc"></td></tr>
<tr id="row_1_"><td class="entry"><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2ns.png" alt="N" width="24" height="22" /><a class="el" href="namespaceFriendica.html" target="_self">Friendica</a></td><td class="desc"></td></tr>
<tr id="row_2_" class="even"><td class="entry"><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2ns.png" alt="N" width="24" height="22" /><a class="el" href="namespacefriendica-to-smarty-tpl.html" target="_self">friendica-to-smarty-tpl</a></td><td class="desc"></td></tr>
-<tr id="row_3_"><td class="entry"><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2ns.png" alt="N" width="24" height="22" /><a class="el" href="namespaceupdatetpl.html" target="_self">updatetpl</a></td><td class="desc"></td></tr>
-<tr id="row_4_" class="even"><td class="entry"><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2ns.png" alt="N" width="24" height="22" /><a class="el" href="namespaceutil.html" target="_self">util</a></td><td class="desc"></td></tr>
-<tr id="row_5_"><td class="entry"><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="classApp.html" target="_self">App</a></td><td class="desc"></td></tr>
-<tr id="row_6_" class="even"><td class="entry"><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="classBaseObject.html" target="_self">BaseObject</a></td><td class="desc"></td></tr>
-<tr id="row_7_"><td class="entry"><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="classCache.html" target="_self">Cache</a></td><td class="desc"></td></tr>
-<tr id="row_8_" class="even"><td class="entry"><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="classConversation.html" target="_self">Conversation</a></td><td class="desc"></td></tr>
-<tr id="row_9_"><td class="entry"><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="classdba__driver.html" target="_self">dba_driver</a></td><td class="desc"></td></tr>
-<tr id="row_10_" class="even"><td class="entry"><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="classdba__mysql.html" target="_self">dba_mysql</a></td><td class="desc"></td></tr>
-<tr id="row_11_"><td class="entry"><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="classdba__mysqli.html" target="_self">dba_mysqli</a></td><td class="desc"></td></tr>
-<tr id="row_12_" class="even"><td class="entry"><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="classenotify.html" target="_self">enotify</a></td><td class="desc"></td></tr>
-<tr id="row_13_"><td class="entry"><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="classFKOAuth1.html" target="_self">FKOAuth1</a></td><td class="desc"></td></tr>
-<tr id="row_14_" class="even"><td class="entry"><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="classFKOAuthDataStore.html" target="_self">FKOAuthDataStore</a></td><td class="desc"></td></tr>
-<tr id="row_15_"><td class="entry"><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="classFriendicaSmarty.html" target="_self">FriendicaSmarty</a></td><td class="desc"></td></tr>
-<tr id="row_16_" class="even"><td class="entry"><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="classFriendicaSmartyEngine.html" target="_self">FriendicaSmartyEngine</a></td><td class="desc"></td></tr>
-<tr id="row_17_"><td class="entry"><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="classItem.html" target="_self">Item</a></td><td class="desc"></td></tr>
-<tr id="row_18_" class="even"><td class="entry"><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="interfaceITemplateEngine.html" target="_self">ITemplateEngine</a></td><td class="desc"></td></tr>
-<tr id="row_19_"><td class="entry"><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="classphoto__driver.html" target="_self">photo_driver</a></td><td class="desc"></td></tr>
-<tr id="row_20_" class="even"><td class="entry"><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="classphoto__gd.html" target="_self">photo_gd</a></td><td class="desc"></td></tr>
-<tr id="row_21_"><td class="entry"><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="classphoto__imagick.html" target="_self">photo_imagick</a></td><td class="desc"></td></tr>
-<tr id="row_22_" class="even"><td class="entry"><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="classProtoDriver.html" target="_self">ProtoDriver</a></td><td class="desc"></td></tr>
-<tr id="row_23_"><td class="entry"><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="classRedBasicAuth.html" target="_self">RedBasicAuth</a></td><td class="desc"></td></tr>
-<tr id="row_24_" class="even"><td class="entry"><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="classRedBrowser.html" target="_self">RedBrowser</a></td><td class="desc"></td></tr>
-<tr id="row_25_"><td class="entry"><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="classRedDirectory.html" target="_self">RedDirectory</a></td><td class="desc"><a class="el" href="classRedDirectory.html" title="RedDirectory class.">RedDirectory</a> class</td></tr>
-<tr id="row_26_" class="even"><td class="entry"><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="classRedFile.html" target="_self">RedFile</a></td><td class="desc"></td></tr>
-<tr id="row_27_"><td class="entry"><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="classTemplate.html" target="_self">Template</a></td><td class="desc"></td></tr>
-<tr id="row_28_" class="even"><td class="entry"><img src="ftv2lastnode.png" alt="\" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="classZotDriver.html" target="_self">ZotDriver</a></td><td class="desc"></td></tr>
+<tr id="row_3_"><td class="entry"><img id="arr_3_" src="ftv2mnode.png" alt="o" width="16" height="22" onclick="toggleFolder('3_')"/><img src="ftv2ns.png" alt="N" width="24" height="22" /><a class="el" href="namespaceRedMatrix.html" target="_self">RedMatrix</a></td><td class="desc">Class <a class="el" href="namespaceRedMatrix_1_1Import.html">Import</a></td></tr>
+<tr id="row_3_0_" class="even"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img id="arr_3_0_" src="ftv2mnode.png" alt="o" width="16" height="22" onclick="toggleFolder('3_0_')"/><img src="ftv2ns.png" alt="N" width="24" height="22" /><a class="el" href="namespaceRedMatrix_1_1Import.html" target="_self">Import</a></td><td class="desc"></td></tr>
+<tr id="row_3_0_0_"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2lastnode.png" alt="\" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="classRedMatrix_1_1Import_1_1Import.html" target="_self">Import</a></td><td class="desc"></td></tr>
+<tr id="row_3_1_" class="even"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img id="arr_3_1_" src="ftv2mlastnode.png" alt="\" width="16" height="22" onclick="toggleFolder('3_1_')"/><img src="ftv2ns.png" alt="N" width="24" height="22" /><a class="el" href="namespaceRedMatrix_1_1RedDAV.html" target="_self">RedDAV</a></td><td class="desc"></td></tr>
+<tr id="row_3_1_0_"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2blank.png" alt="&#160;" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="classRedMatrix_1_1RedDAV_1_1RedBasicAuth.html" target="_self">RedBasicAuth</a></td><td class="desc">Authentication backend class for <a class="el" href="namespaceRedMatrix_1_1RedDAV.html">RedDAV</a></td></tr>
+<tr id="row_3_1_1_" class="even"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2blank.png" alt="&#160;" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="classRedMatrix_1_1RedDAV_1_1RedBrowser.html" target="_self">RedBrowser</a></td><td class="desc">Provides a DAV frontend for the webbrowser</td></tr>
+<tr id="row_3_1_2_"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2blank.png" alt="&#160;" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="classRedMatrix_1_1RedDAV_1_1RedDirectory.html" target="_self">RedDirectory</a></td><td class="desc"><a class="el" href="classRedMatrix_1_1RedDAV_1_1RedDirectory.html" title="RedDirectory class.">RedDirectory</a> class</td></tr>
+<tr id="row_3_1_3_" class="even"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2blank.png" alt="&#160;" width="16" height="22" /><img src="ftv2lastnode.png" alt="\" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="classRedMatrix_1_1RedDAV_1_1RedFile.html" target="_self">RedFile</a></td><td class="desc">This class represents a file in DAV</td></tr>
+<tr id="row_4_"><td class="entry"><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2ns.png" alt="N" width="24" height="22" /><a class="el" href="namespaceupdatetpl.html" target="_self">updatetpl</a></td><td class="desc"></td></tr>
+<tr id="row_5_" class="even"><td class="entry"><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2ns.png" alt="N" width="24" height="22" /><a class="el" href="namespaceutil.html" target="_self">util</a></td><td class="desc"></td></tr>
+<tr id="row_6_"><td class="entry"><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="classApp.html" target="_self">App</a></td><td class="desc">Our main application structure for the life of this page</td></tr>
+<tr id="row_7_" class="even"><td class="entry"><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="classBaseObject.html" target="_self">BaseObject</a></td><td class="desc"></td></tr>
+<tr id="row_8_"><td class="entry"><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="classCache.html" target="_self">Cache</a></td><td class="desc"></td></tr>
+<tr id="row_9_" class="even"><td class="entry"><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="classConversation.html" target="_self">Conversation</a></td><td class="desc"></td></tr>
+<tr id="row_10_"><td class="entry"><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="classdba__driver.html" target="_self">dba_driver</a></td><td class="desc">Abstract database driver class</td></tr>
+<tr id="row_11_" class="even"><td class="entry"><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="classdba__mysql.html" target="_self">dba_mysql</a></td><td class="desc"></td></tr>
+<tr id="row_12_"><td class="entry"><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="classdba__mysqli.html" target="_self">dba_mysqli</a></td><td class="desc"></td></tr>
+<tr id="row_13_" class="even"><td class="entry"><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="classdba__postgres.html" target="_self">dba_postgres</a></td><td class="desc"></td></tr>
+<tr id="row_14_"><td class="entry"><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="classenotify.html" target="_self">enotify</a></td><td class="desc"></td></tr>
+<tr id="row_15_" class="even"><td class="entry"><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="classFKOAuth1.html" target="_self">FKOAuth1</a></td><td class="desc"></td></tr>
+<tr id="row_16_"><td class="entry"><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="classFKOAuthDataStore.html" target="_self">FKOAuthDataStore</a></td><td class="desc"></td></tr>
+<tr id="row_17_" class="even"><td class="entry"><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="classFriendicaSmarty.html" target="_self">FriendicaSmarty</a></td><td class="desc"></td></tr>
+<tr id="row_18_"><td class="entry"><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="classFriendicaSmartyEngine.html" target="_self">FriendicaSmartyEngine</a></td><td class="desc"></td></tr>
+<tr id="row_19_" class="even"><td class="entry"><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="classItem.html" target="_self">Item</a></td><td class="desc"></td></tr>
+<tr id="row_20_"><td class="entry"><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="interfaceITemplateEngine.html" target="_self">ITemplateEngine</a></td><td class="desc"></td></tr>
+<tr id="row_21_" class="even"><td class="entry"><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="classphoto__driver.html" target="_self">photo_driver</a></td><td class="desc"></td></tr>
+<tr id="row_22_"><td class="entry"><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="classphoto__gd.html" target="_self">photo_gd</a></td><td class="desc"></td></tr>
+<tr id="row_23_" class="even"><td class="entry"><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="classphoto__imagick.html" target="_self">photo_imagick</a></td><td class="desc"></td></tr>
+<tr id="row_24_"><td class="entry"><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="classProtoDriver.html" target="_self">ProtoDriver</a></td><td class="desc"></td></tr>
+<tr id="row_25_" class="even"><td class="entry"><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="classTemplate.html" target="_self">Template</a></td><td class="desc"></td></tr>
+<tr id="row_26_"><td class="entry"><img src="ftv2lastnode.png" alt="\" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="classZotDriver.html" target="_self">ZotDriver</a></td><td class="desc"></td></tr>
</table>
</div><!-- directory -->
</div><!-- contents -->
diff --git a/doc/html/annotated.js b/doc/html/annotated.js
index c6ab45689..3e28eeacf 100644
--- a/doc/html/annotated.js
+++ b/doc/html/annotated.js
@@ -3,6 +3,7 @@ var annotated =
[ "acl_selectors", "namespaceacl__selectors.html", null ],
[ "Friendica", "namespaceFriendica.html", null ],
[ "friendica-to-smarty-tpl", "namespacefriendica-to-smarty-tpl.html", null ],
+ [ "RedMatrix", "namespaceRedMatrix.html", "namespaceRedMatrix" ],
[ "updatetpl", "namespaceupdatetpl.html", null ],
[ "util", "namespaceutil.html", null ],
[ "App", "classApp.html", "classApp" ],
@@ -12,6 +13,7 @@ var annotated =
[ "dba_driver", "classdba__driver.html", "classdba__driver" ],
[ "dba_mysql", "classdba__mysql.html", "classdba__mysql" ],
[ "dba_mysqli", "classdba__mysqli.html", "classdba__mysqli" ],
+ [ "dba_postgres", "classdba__postgres.html", "classdba__postgres" ],
[ "enotify", "classenotify.html", null ],
[ "FKOAuth1", "classFKOAuth1.html", "classFKOAuth1" ],
[ "FKOAuthDataStore", "classFKOAuthDataStore.html", "classFKOAuthDataStore" ],
@@ -23,10 +25,6 @@ var annotated =
[ "photo_gd", "classphoto__gd.html", "classphoto__gd" ],
[ "photo_imagick", "classphoto__imagick.html", "classphoto__imagick" ],
[ "ProtoDriver", "classProtoDriver.html", "classProtoDriver" ],
- [ "RedBasicAuth", "classRedBasicAuth.html", "classRedBasicAuth" ],
- [ "RedBrowser", "classRedBrowser.html", "classRedBrowser" ],
- [ "RedDirectory", "classRedDirectory.html", "classRedDirectory" ],
- [ "RedFile", "classRedFile.html", "classRedFile" ],
[ "Template", "classTemplate.html", "classTemplate" ],
[ "ZotDriver", "classZotDriver.html", "classZotDriver" ]
]; \ No newline at end of file
diff --git a/doc/html/apw_2php_2style_8php.html b/doc/html/apw_2php_2style_8php.html
index 6f613a7d9..b8dba6f3c 100644
--- a/doc/html/apw_2php_2style_8php.html
+++ b/doc/html/apw_2php_2style_8php.html
@@ -114,13 +114,13 @@ $(document).ready(function(){initNavTree('apw_2php_2style_8php.html','');});
Variables</h2></td></tr>
<tr class="memitem:a109bbd7f4add27541707b191b73ef84a"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="apw_2php_2style_8php.html#a109bbd7f4add27541707b191b73ef84a">$uid</a> = <a class="el" href="identity_8php.html#aaeb666872995e3ab8da8f7bc5f3b2bd3">get_theme_uid</a>()</td></tr>
<tr class="separator:a109bbd7f4add27541707b191b73ef84a"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a2f71e817b8fac88ce7f0ec5c0fb88b8d"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="apw_2php_2style_8php.html#a2f71e817b8fac88ce7f0ec5c0fb88b8d">if</a> ($uid) <a class="el" href="include_2config_8php.html#ac543813a980b3841cc5a277fcd4a24a6">load_pconfig</a>($uid</td></tr>
+<tr class="memitem:a2f71e817b8fac88ce7f0ec5c0fb88b8d"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="apw_2php_2style_8php.html#a2f71e817b8fac88ce7f0ec5c0fb88b8d">if</a> ($uid) <a class="el" href="include_2config_8php.html#a559791dda7fef8a4b2394c83e835787b">load_pconfig</a>($uid</td></tr>
<tr class="separator:a2f71e817b8fac88ce7f0ec5c0fb88b8d"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:af3a16c5f0dd7a74cf9acf6a49fff73a7"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="apw_2php_2style_8php.html#af3a16c5f0dd7a74cf9acf6a49fff73a7">$x</a> = <a class="el" href="functions_8php.html#adefe514c95680928b3aae250cbc3c663">splitFilename</a>($font)</td></tr>
<tr class="separator:af3a16c5f0dd7a74cf9acf6a49fff73a7"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:ab9e0f70d44ab67f4334f9883631777fc"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="apw_2php_2style_8php.html#ab9e0f70d44ab67f4334f9883631777fc">$fname</a> = $<a class="el" href="boot_8php.html#a01353c9abebc3544ea080ac161729632">x</a>[0]</td></tr>
+<tr class="memitem:ab9e0f70d44ab67f4334f9883631777fc"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="apw_2php_2style_8php.html#ab9e0f70d44ab67f4334f9883631777fc">$fname</a> = $<a class="el" href="boot_8php.html#ae97836b0547953be182a2334c9c91d3c">x</a>[0]</td></tr>
<tr class="separator:ab9e0f70d44ab67f4334f9883631777fc"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a404171b8f918c116e45a6421c92f0cc9"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="apw_2php_2style_8php.html#a404171b8f918c116e45a6421c92f0cc9">$fext</a> = $<a class="el" href="boot_8php.html#a01353c9abebc3544ea080ac161729632">x</a>[1]</td></tr>
+<tr class="memitem:a404171b8f918c116e45a6421c92f0cc9"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="apw_2php_2style_8php.html#a404171b8f918c116e45a6421c92f0cc9">$fext</a> = $<a class="el" href="boot_8php.html#ae97836b0547953be182a2334c9c91d3c">x</a>[1]</td></tr>
<tr class="separator:a404171b8f918c116e45a6421c92f0cc9"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aa58104ba36588bbf082cecbb3910e2ea"><td class="memItemLeft" align="right" valign="top"><a class="el" href="theme_2mytheme_2php_2default_8php.html#a3987f5547ceb7e36a210a66a06241a5a">if</a>(file_exists('view/theme/apw/font/'.$fname. <br class="typebreak"/>
'i.'.$fext)) <a class="el" href="theme_2mytheme_2php_2default_8php.html#a3987f5547ceb7e36a210a66a06241a5a">if</a>(file_exists('view/theme/apw/font/'.$fname. <br class="typebreak"/>
@@ -143,7 +143,7 @@ Variables</h2></td></tr>
<div class="memproto">
<table class="memname">
<tr>
- <td class="memname">$fext = $<a class="el" href="boot_8php.html#a01353c9abebc3544ea080ac161729632">x</a>[1]</td>
+ <td class="memname">$fext = $<a class="el" href="boot_8php.html#ae97836b0547953be182a2334c9c91d3c">x</a>[1]</td>
</tr>
</table>
</div><div class="memdoc">
@@ -155,7 +155,7 @@ Variables</h2></td></tr>
<div class="memproto">
<table class="memname">
<tr>
- <td class="memname">$fname = $<a class="el" href="boot_8php.html#a01353c9abebc3544ea080ac161729632">x</a>[0]</td>
+ <td class="memname">$fname = $<a class="el" href="boot_8php.html#ae97836b0547953be182a2334c9c91d3c">x</a>[0]</td>
</tr>
</table>
</div><div class="memdoc">
@@ -246,7 +246,7 @@ Variables</h2></td></tr>
</table>
</div><div class="memdoc">
-<p>Referenced by <a class="el" href="admin_8php.html#ad6f87a764fd35f522c7b4c351d7878ec">admin_page_channels()</a>, <a class="el" href="admin_8php.html#a42e628f367c168add8013352ac74d33f">admin_page_channels_post()</a>, <a class="el" href="admin_8php.html#a62f10f90c47686c9c3c37c4c03a108d2">admin_page_users()</a>, <a class="el" href="admin_8php.html#a5a696706a3869800e65fb365214241b7">admin_page_users_post()</a>, <a class="el" href="socgraph_8php.html#a16ac51c505d72987ed8d6d6aed0e8586">all_friends()</a>, <a class="el" href="include_2apps_8php.html#a6b472df85ed875e7ae75642cece5206f">app_destroy()</a>, <a class="el" href="include_2apps_8php.html#a72756e1601489eb77971eeda011446d0">app_install()</a>, <a class="el" href="include_2apps_8php.html#a1adcd1aff4d36ad0277daca9f3d2bbe2">app_installed()</a>, <a class="el" href="include_2apps_8php.html#a01cabfb33b2d0d843cf3bf4e3d3f0ab0">app_list()</a>, <a class="el" href="zot_8php.html#ac34e479d27f32b82dd6b33542f81a6a7">build_sync_packet()</a>, <a class="el" href="include_2chat_8php.html#acea6b176eb7aff44d9ba3ae24ce511d3">chat_message()</a>, <a class="el" href="include_2chat_8php.html#aedcb532a0627b8644001a2fadab4e87a">chatroom_list()</a>, <a class="el" href="items_8php.html#a87ac9e359591721a824ecd23bbb56296">check_item_source()</a>, <a class="el" href="permissions_8php.html#a0f5bd9f7f4c8fb7ba4b2c1ed048b4dc7">check_list_permissions()</a>, <a class="el" href="socgraph_8php.html#a7d34cd58025bcd9e575282f44db75918">common_friends()</a>, <a class="el" href="socgraph_8php.html#ac343a846241d36cdf046b08f3396cfe9">common_friends_zcid()</a>, <a class="el" href="socgraph_8php.html#af29d056beec10b4e38e5209c92452894">count_all_friends()</a>, <a class="el" href="socgraph_8php.html#a887d576f21fd708132a06d0f72f90f84">count_common_friends()</a>, <a class="el" href="socgraph_8php.html#af175807406d94407a5e11742a3287746">count_common_friends_zcid()</a>, <a class="el" href="include_2config_8php.html#a7ad2081c5f812ac4387fd76f3762d941">del_pconfig()</a>, <a class="el" href="zot_8php.html#adfeb9400ae6b726beec89f8f1e8fde72">delete_imported_item()</a>, <a class="el" href="items_8php.html#a668ece2c37f05cc3abe538eb0dabfe55">drop_items()</a>, <a class="el" href="event_8php.html#ac9f206819186b65952ac1869f0da8c6e">event_addtocal()</a>, <a class="el" href="events_8php.html#ab3e8a8f901175f8e40a8089eea45c075">events_post()</a>, <a class="el" href="features_8php.html#a52b5bdfb61b256713efecf7a7b20b0c0">feature_enabled()</a>, <a class="el" href="items_8php.html#a0cf98bb619f07dd18f602683a55a5f59">first_post_date()</a>, <a class="el" href="item_8php.html#a7b63a9d0cd02096e17dcf11f4afa7c10">fix_attached_photo_permissions()</a>, <a class="el" href="items_8php.html#aba98fcbbcd7044a7e9ea34edabc14c87">fix_private_photos()</a>, <a class="el" href="mod_2follow_8php.html#a171f5b19f50d7738adc3b2e96ec6018a">follow_init()</a>, <a class="el" href="permissions_8php.html#aeca9b280f3dc3358c89976d81d690008">get_all_perms()</a>, <a class="el" href="include_2config_8php.html#ad58a4913937179adb13201c2ee3261ad">get_pconfig()</a>, <a class="el" href="identity_8php.html#aaeb666872995e3ab8da8f7bc5f3b2bd3">get_theme_uid()</a>, <a class="el" href="taxonomy_8php.html#a7747fa859ac56fbffd4f9782d85505de">get_things()</a>, <a class="el" href="spam_8php.html#ab8fd81a82c9622cbebb8ceab6b310ca6">get_words()</a>, <a class="el" href="include_2group_8php.html#a06ec565d2b64e79044e7c1bf91a2a4ce">group_add()</a>, <a class="el" href="include_2group_8php.html#a0122ef312df2c5546b1a46b3e6c7b31b">group_add_member()</a>, <a class="el" href="include_2group_8php.html#abd66a5ea34a07a3422dc2dde6c7b3ecb">group_byname()</a>, <a class="el" href="include_2group_8php.html#a90e157b3e1b99c981809cb5a2abd3245">group_rec_byhash()</a>, <a class="el" href="include_2group_8php.html#a4118f498bbd1530c1d0136d016d197a5">group_rmv()</a>, <a class="el" href="include_2group_8php.html#a540e3ef36f47d47532646be4241f6518">group_rmv_member()</a>, <a class="el" href="include_2group_8php.html#afb802ae2ce73aae4bc36d157f7b6a92f">groups_containing()</a>, <a class="el" href="photo__driver_8php.html#a1d0bc7161dec0d177b7d3bbe4421af9a">import_channel_photo()</a>, <a class="el" href="items_8php.html#a02ca33c31ed535d24894f8a9a91ce9df">item_add_cid()</a>, <a class="el" href="items_8php.html#a6f7e1334af5d684a987fa6a3eb37f4cc">item_expire()</a>, <a class="el" href="item_8php.html#a693cd09805755ab85bbb5ecae69a48c3">item_post()</a>, <a class="el" href="items_8php.html#a5ed782ff5b9cf050bec931e06de12c00">item_remove_cid()</a>, <a class="el" href="items_8php.html#acf0bf7c9d21ac84f32effb754f7ad484">item_store_update()</a>, <a class="el" href="items_8php.html#a756738301f2ed96be50232500677d58a">items_fetch()</a>, <a class="el" href="items_8php.html#aa2d3caa2f27720762b5c729e07df40fb">list_post_dates()</a>, <a class="el" href="boot_8php.html#a719c7f3972d5f9268f37a41c76cd4ef6">load_contact_links()</a>, <a class="el" href="include_2config_8php.html#ac543813a980b3841cc5a277fcd4a24a6">load_pconfig()</a>, <a class="el" href="dir__fns_8php.html#acd37b17dce3bdec6d5a6344a20598c1e">local_dir_update()</a>, <a class="el" href="classFKOAuth1.html#a2b1dac2ed31fc6ef84668afdda8b263f">FKOAuth1\loginUser()</a>, <a class="el" href="include_2menu_8php.html#add35fae5e9695031b3d46e30ac409eb8">menu_add_item()</a>, <a class="el" href="include_2menu_8php.html#a9aa8e0052dd47c1a93f53a983bd4620a">menu_del_item()</a>, <a class="el" href="include_2menu_8php.html#a3884bda4d85d84ec99447db9403a68d8">menu_delete()</a>, <a class="el" href="include_2menu_8php.html#ad87f51ce85172bcc3f931aa0cd96a804">menu_delete_id()</a>, <a class="el" href="include_2menu_8php.html#acb66f80ca895a6ccd562b3d9ae7b41aa">menu_edit_item()</a>, <a class="el" href="include_2menu_8php.html#a68ebbf492470c930f652013656f9071d">menu_fetch()</a>, <a class="el" href="include_2group_8php.html#ab0e422a0f31c0c64fd9084ca03d85f32">mini_group_select()</a>, <a class="el" href="mood_8php.html#a7ae136dd7476865b4828136175db5022">mood_init()</a>, <a class="el" href="include_2follow_8php.html#ae387d4ae097c23d69f3247e7f08140c7">new_contact()</a>, <a class="el" href="notifier_8php.html#a568c502f626cff95e344c0748938b85d">notifier_run()</a>, <a class="el" href="comanche_8php.html#af7150df735e5ff9d467994cd6f769c6e">pdl_selector()</a>, <a class="el" href="permissions_8php.html#a67ada9ed51e77885b6b0f6a28cee1835">perm_is_allowed()</a>, <a class="el" href="photo_8php.html#a582779d24882b0d31ee909a91d70a448">photo_init()</a>, <a class="el" href="poke_8php.html#a9725aab97b3983e6a98bd81c4efe7d3b">poke_init()</a>, <a class="el" href="items_8php.html#ad2abb4644ff1f20fefbc80326fe01cf0">posted_dates()</a>, <a class="el" href="include_2message_8php.html#a652973ce47a262f2d238c2fd6233d97e">private_messages_list()</a>, <a class="el" href="zot_8php.html#aad25a3fe0e1566121d6fb8222979bc10">remove_community_tag()</a>, <a class="el" href="include_2message_8php.html#a751ffd6635022b2190f56154ee745752">send_message()</a>, <a class="el" href="plugin_8php.html#a030cec6793b909c439c0336ba39b1571">service_class_allows()</a>, <a class="el" href="plugin_8php.html#a905b54e10704b283ac64680a8abc0971">service_class_fetch()</a>, <a class="el" href="include_2config_8php.html#a61591371cb18764138655d67dc817ab2">set_pconfig()</a>, <a class="el" href="classConversation.html#a8898bddc1e8990e81dab9a13a532cc93">Conversation\set_profile_owner()</a>, <a class="el" href="classphoto__driver.html#a642a8d0c4ad5f887c99c6af77cee287b">photo_driver\store()</a>, <a class="el" href="taxonomy_8php.html#a4ba1339b2a7054971178ce194e4440fd">store_item_tag()</a>, <a class="el" href="socgraph_8php.html#a76e6fca3d2bc842dcd9e710bb87c8329">suggestion_query()</a>, <a class="el" href="items_8php.html#ab1bce4261bcf75ad62753b498a144d17">tag_deliver()</a>, <a class="el" href="taxonomy_8php.html#aaf90ba8b839d6459065f39a4f1109b8a">tagadelic()</a>, <a class="el" href="taxonomy_8php.html#ac21d1dff16d569e7d110167aea4e63c2">tagblock()</a>, <a class="el" href="items_8php.html#a88c6cf7649ac836fbbed82a7a0315110">tgroup_check()</a>, <a class="el" href="widgets_8php.html#a7b1e357b5a2027718470b77ec921fc65">widget_archive()</a>, <a class="el" href="widgets_8php.html#ad1bf7aa69e8d100d95faba17c7bc91cd">widget_follow()</a>, <a class="el" href="widgets_8php.html#a313a8d10ab81c71357c12e67e4d7efd5">widget_item()</a>, <a class="el" href="widgets_8php.html#a6dbc227aac750774284ee39c45f0a200">widget_tagcloud()</a>, and <a class="el" href="items_8php.html#a004e89d86b0f29b2c4da20108ecc4091">zot_feed()</a>.</p>
+<p>Referenced by <a class="el" href="admin_8php.html#ad6f87a764fd35f522c7b4c351d7878ec">admin_page_channels()</a>, <a class="el" href="admin_8php.html#a42e628f367c168add8013352ac74d33f">admin_page_channels_post()</a>, <a class="el" href="admin_8php.html#a62f10f90c47686c9c3c37c4c03a108d2">admin_page_users()</a>, <a class="el" href="admin_8php.html#a5a696706a3869800e65fb365214241b7">admin_page_users_post()</a>, <a class="el" href="socgraph_8php.html#a16ac51c505d72987ed8d6d6aed0e8586">all_friends()</a>, <a class="el" href="include_2apps_8php.html#a6b472df85ed875e7ae75642cece5206f">app_destroy()</a>, <a class="el" href="include_2apps_8php.html#a72756e1601489eb77971eeda011446d0">app_install()</a>, <a class="el" href="include_2apps_8php.html#a1adcd1aff4d36ad0277daca9f3d2bbe2">app_installed()</a>, <a class="el" href="include_2apps_8php.html#a01cabfb33b2d0d843cf3bf4e3d3f0ab0">app_list()</a>, <a class="el" href="blocks_8php.html#a2531a8fd51db3cecb2eb20c002c66e12">blocks_content()</a>, <a class="el" href="zot_8php.html#aa97b33b619dd7132a9274f852af6ceb5">build_sync_packet()</a>, <a class="el" href="taxonomy_8php.html#aa8f8a1ff85daef046298e93c83e7a1b4">catblock()</a>, <a class="el" href="include_2chat_8php.html#acea6b176eb7aff44d9ba3ae24ce511d3">chat_message()</a>, <a class="el" href="include_2chat_8php.html#aedcb532a0627b8644001a2fadab4e87a">chatroom_list()</a>, <a class="el" href="include_2chat_8php.html#a26abdccc2a278a59899896dbbfc6f049">chatroom_list_count()</a>, <a class="el" href="items_8php.html#a87ac9e359591721a824ecd23bbb56296">check_item_source()</a>, <a class="el" href="permissions_8php.html#a0f5bd9f7f4c8fb7ba4b2c1ed048b4dc7">check_list_permissions()</a>, <a class="el" href="socgraph_8php.html#a7d34cd58025bcd9e575282f44db75918">common_friends()</a>, <a class="el" href="socgraph_8php.html#ac343a846241d36cdf046b08f3396cfe9">common_friends_zcid()</a>, <a class="el" href="socgraph_8php.html#af29d056beec10b4e38e5209c92452894">count_all_friends()</a>, <a class="el" href="socgraph_8php.html#a887d576f21fd708132a06d0f72f90f84">count_common_friends()</a>, <a class="el" href="socgraph_8php.html#af175807406d94407a5e11742a3287746">count_common_friends_zcid()</a>, <a class="el" href="include_2config_8php.html#a7ad2081c5f812ac4387fd76f3762d941">del_pconfig()</a>, <a class="el" href="zot_8php.html#adfeb9400ae6b726beec89f8f1e8fde72">delete_imported_item()</a>, <a class="el" href="diaspora_8php.html#aa8e551a53fcce34be3942d0c3e20d1f4">diaspora_get_contact_by_handle()</a>, <a class="el" href="items_8php.html#a668ece2c37f05cc3abe538eb0dabfe55">drop_items()</a>, <a class="el" href="editblock_8php.html#abbe8f55de06967bc8d79d620509a49e6">editblock_content()</a>, <a class="el" href="editlayout_8php.html#aa877e4157a26b099de904164181dd386">editlayout_content()</a>, <a class="el" href="editwebpage_8php.html#a375e945255fad79a71036528f7480650">editwebpage_content()</a>, <a class="el" href="event_8php.html#ac9f206819186b65952ac1869f0da8c6e">event_addtocal()</a>, <a class="el" href="events_8php.html#ab3e8a8f901175f8e40a8089eea45c075">events_post()</a>, <a class="el" href="features_8php.html#a52b5bdfb61b256713efecf7a7b20b0c0">feature_enabled()</a>, <a class="el" href="items_8php.html#a0cf98bb619f07dd18f602683a55a5f59">first_post_date()</a>, <a class="el" href="item_8php.html#a7b63a9d0cd02096e17dcf11f4afa7c10">fix_attached_photo_permissions()</a>, <a class="el" href="items_8php.html#aba98fcbbcd7044a7e9ea34edabc14c87">fix_private_photos()</a>, <a class="el" href="mod_2follow_8php.html#a171f5b19f50d7738adc3b2e96ec6018a">follow_init()</a>, <a class="el" href="permissions_8php.html#aeca9b280f3dc3358c89976d81d690008">get_all_perms()</a>, <a class="el" href="identity_8php.html#a293f416ce9050220b183e08ff5890216">get_channel_default_perms()</a>, <a class="el" href="include_2config_8php.html#ad58a4913937179adb13201c2ee3261ad">get_pconfig()</a>, <a class="el" href="identity_8php.html#aaeb666872995e3ab8da8f7bc5f3b2bd3">get_theme_uid()</a>, <a class="el" href="taxonomy_8php.html#a7747fa859ac56fbffd4f9782d85505de">get_things()</a>, <a class="el" href="spam_8php.html#ab8fd81a82c9622cbebb8ceab6b310ca6">get_words()</a>, <a class="el" href="include_2group_8php.html#a06ec565d2b64e79044e7c1bf91a2a4ce">group_add()</a>, <a class="el" href="include_2group_8php.html#a0122ef312df2c5546b1a46b3e6c7b31b">group_add_member()</a>, <a class="el" href="include_2group_8php.html#abd66a5ea34a07a3422dc2dde6c7b3ecb">group_byname()</a>, <a class="el" href="include_2group_8php.html#a90e157b3e1b99c981809cb5a2abd3245">group_rec_byhash()</a>, <a class="el" href="include_2group_8php.html#a4118f498bbd1530c1d0136d016d197a5">group_rmv()</a>, <a class="el" href="include_2group_8php.html#a540e3ef36f47d47532646be4241f6518">group_rmv_member()</a>, <a class="el" href="include_2group_8php.html#afb802ae2ce73aae4bc36d157f7b6a92f">groups_containing()</a>, <a class="el" href="items_8php.html#a52c24114b73c0bdb605a03cd29712223">handle_feed()</a>, <a class="el" href="photo__driver_8php.html#a1d0bc7161dec0d177b7d3bbe4421af9a">import_channel_photo()</a>, <a class="el" href="items_8php.html#a02ca33c31ed535d24894f8a9a91ce9df">item_add_cid()</a>, <a class="el" href="items_8php.html#a6f7e1334af5d684a987fa6a3eb37f4cc">item_expire()</a>, <a class="el" href="item_8php.html#a693cd09805755ab85bbb5ecae69a48c3">item_post()</a>, <a class="el" href="items_8php.html#a5ed782ff5b9cf050bec931e06de12c00">item_remove_cid()</a>, <a class="el" href="items_8php.html#acf0bf7c9d21ac84f32effb754f7ad484">item_store_update()</a>, <a class="el" href="items_8php.html#a756738301f2ed96be50232500677d58a">items_fetch()</a>, <a class="el" href="layouts_8php.html#a6e0193759ad9eef76d3df2db24237b50">layouts_content()</a>, <a class="el" href="items_8php.html#ab33fa9756aaa5f39a6104d57a62baf00">list_post_dates()</a>, <a class="el" href="boot_8php.html#a719c7f3972d5f9268f37a41c76cd4ef6">load_contact_links()</a>, <a class="el" href="include_2config_8php.html#a559791dda7fef8a4b2394c83e835787b">load_pconfig()</a>, <a class="el" href="dir__fns_8php.html#acd37b17dce3bdec6d5a6344a20598c1e">local_dir_update()</a>, <a class="el" href="classFKOAuth1.html#a2b1dac2ed31fc6ef84668afdda8b263f">FKOAuth1\loginUser()</a>, <a class="el" href="include_2menu_8php.html#add35fae5e9695031b3d46e30ac409eb8">menu_add_item()</a>, <a class="el" href="mod_2menu_8php.html#a6fed23af14d71a78a4153c8363a685cf">menu_content()</a>, <a class="el" href="include_2menu_8php.html#a9aa8e0052dd47c1a93f53a983bd4620a">menu_del_item()</a>, <a class="el" href="include_2menu_8php.html#a3884bda4d85d84ec99447db9403a68d8">menu_delete()</a>, <a class="el" href="include_2menu_8php.html#ad87f51ce85172bcc3f931aa0cd96a804">menu_delete_id()</a>, <a class="el" href="include_2menu_8php.html#acb66f80ca895a6ccd562b3d9ae7b41aa">menu_edit_item()</a>, <a class="el" href="include_2menu_8php.html#a68ebbf492470c930f652013656f9071d">menu_fetch()</a>, <a class="el" href="mod_2menu_8php.html#aaa491ef173868fe002aece4632bcf393">menu_post()</a>, <a class="el" href="include_2group_8php.html#ab0e422a0f31c0c64fd9084ca03d85f32">mini_group_select()</a>, <a class="el" href="mitem_8php.html#a7a31b702ecad18eeb6a38b243ff0037e">mitem_content()</a>, <a class="el" href="mitem_8php.html#a9627cd857cafdf04e4fc0ae48c8e8518">mitem_init()</a>, <a class="el" href="mitem_8php.html#a6ee694cca4b551a20d7c7a94b5243ec1">mitem_post()</a>, <a class="el" href="mood_8php.html#a7ae136dd7476865b4828136175db5022">mood_init()</a>, <a class="el" href="include_2follow_8php.html#ae387d4ae097c23d69f3247e7f08140c7">new_contact()</a>, <a class="el" href="notifier_8php.html#a568c502f626cff95e344c0748938b85d">notifier_run()</a>, <a class="el" href="comanche_8php.html#af7150df735e5ff9d467994cd6f769c6e">pdl_selector()</a>, <a class="el" href="permissions_8php.html#a67ada9ed51e77885b6b0f6a28cee1835">perm_is_allowed()</a>, <a class="el" href="photo_8php.html#a582779d24882b0d31ee909a91d70a448">photo_init()</a>, <a class="el" href="poke_8php.html#a9725aab97b3983e6a98bd81c4efe7d3b">poke_init()</a>, <a class="el" href="items_8php.html#ad2abb4644ff1f20fefbc80326fe01cf0">posted_dates()</a>, <a class="el" href="include_2message_8php.html#a652973ce47a262f2d238c2fd6233d97e">private_messages_list()</a>, <a class="el" href="zot_8php.html#aad25a3fe0e1566121d6fb8222979bc10">remove_community_tag()</a>, <a class="el" href="include_2message_8php.html#a751ffd6635022b2190f56154ee745752">send_message()</a>, <a class="el" href="account_8php.html#a030cec6793b909c439c0336ba39b1571">service_class_allows()</a>, <a class="el" href="account_8php.html#a905b54e10704b283ac64680a8abc0971">service_class_fetch()</a>, <a class="el" href="include_2config_8php.html#a61591371cb18764138655d67dc817ab2">set_pconfig()</a>, <a class="el" href="classConversation.html#a8898bddc1e8990e81dab9a13a532cc93">Conversation\set_profile_owner()</a>, <a class="el" href="classphoto__driver.html#a642a8d0c4ad5f887c99c6af77cee287b">photo_driver\store()</a>, <a class="el" href="taxonomy_8php.html#a4ba1339b2a7054971178ce194e4440fd">store_item_tag()</a>, <a class="el" href="socgraph_8php.html#a76e6fca3d2bc842dcd9e710bb87c8329">suggestion_query()</a>, <a class="el" href="items_8php.html#ab1bce4261bcf75ad62753b498a144d17">tag_deliver()</a>, <a class="el" href="taxonomy_8php.html#aaf90ba8b839d6459065f39a4f1109b8a">tagadelic()</a>, <a class="el" href="taxonomy_8php.html#ac21d1dff16d569e7d110167aea4e63c2">tagblock()</a>, <a class="el" href="items_8php.html#a88c6cf7649ac836fbbed82a7a0315110">tgroup_check()</a>, <a class="el" href="items_8php.html#a9b449eeae50003414b8b30ca927af434">update_feed_item()</a>, <a class="el" href="webpages_8php.html#af3b7397d4abc153e3d2147740ee1a41d">webpages_content()</a>, <a class="el" href="widgets_8php.html#a7b1e357b5a2027718470b77ec921fc65">widget_archive()</a>, <a class="el" href="widgets_8php.html#ad1bf7aa69e8d100d95faba17c7bc91cd">widget_follow()</a>, <a class="el" href="widgets_8php.html#a313a8d10ab81c71357c12e67e4d7efd5">widget_item()</a>, <a class="el" href="widgets_8php.html#a6dbc227aac750774284ee39c45f0a200">widget_tagcloud()</a>, <a class="el" href="taxonomy_8php.html#a83f0a60f9e0c07d8451dc5be95b17287">wtagblock()</a>, and <a class="el" href="items_8php.html#a1cf89557f32d5dfbe8bd90448dc1aa92">zot_feed()</a>.</p>
</div>
</div>
@@ -255,12 +255,12 @@ Variables</h2></td></tr>
<div class="memproto">
<table class="memname">
<tr>
- <td class="memname">$<a class="el" href="boot_8php.html#a01353c9abebc3544ea080ac161729632">x</a> = <a class="el" href="functions_8php.html#adefe514c95680928b3aae250cbc3c663">splitFilename</a>($font)</td>
+ <td class="memname">$<a class="el" href="boot_8php.html#ae97836b0547953be182a2334c9c91d3c">x</a> = <a class="el" href="functions_8php.html#adefe514c95680928b3aae250cbc3c663">splitFilename</a>($font)</td>
</tr>
</table>
</div><div class="memdoc">
-<p>Referenced by <a class="el" href="classTemplate.html#abf71098c80fd1f218a59452b3408309e">Template\_replcb_for()</a>, <a class="el" href="classTemplate.html#ae0836e7d5bd5afceb04f50fd635f1228">Template\_replcb_if()</a>, <a class="el" href="Contact_8php.html#a6e64de7db60b7243dce45fb6347636ff">account_remove()</a>, <a class="el" href="acl_8php.html#ac6776dba871806ecdb5d1659bc2eb07a">acl_init()</a>, <a class="el" href="items_8php.html#a36e656667193c83aa2cc03a024fc131b">activity_sanitise()</a>, <a class="el" href="admin_8php.html#ad6f87a764fd35f522c7b4c351d7878ec">admin_page_channels()</a>, <a class="el" href="admin_8php.html#af124619fdc278fe2bf14c45ddaa260fb">admin_page_themes()</a>, <a class="el" href="crypto_8php.html#a2148d7aac7b30c720f7ebda7e9790286">aes_encapsulate()</a>, <a class="el" href="include_2apps_8php.html#ad5f6f1443725386cc7af5ed34a5fe185">app_decode()</a>, <a class="el" href="include_2apps_8php.html#a72756e1601489eb77971eeda011446d0">app_install()</a>, <a class="el" href="include_2apps_8php.html#a01cabfb33b2d0d843cf3bf4e3d3f0ab0">app_list()</a>, <a class="el" href="include_2apps_8php.html#a1b2e737f477a2e0d9d11ef14adc5aa66">app_render()</a>, <a class="el" href="include_2apps_8php.html#a15626f24069c18816f7cdaf4735f58f9">app_store()</a>, <a class="el" href="include_2apps_8php.html#aeab6a62d2f3dfaa86ed043a006305f46">app_update()</a>, <a class="el" href="mod_2apps_8php.html#a546016cb960d0b110ee8e489dfa6c27c">apps_content()</a>, <a class="el" href="boot_8php.html#a768f00b7d66be0daf7ef4eea2e862006">argv()</a>, <a class="el" href="items_8php.html#abf7a1b73eb352d79acd36309b0dababd">array_sanitise()</a>, <a class="el" href="include_2attach_8php.html#a5c0875eafb8c0f8a0620ff7a875a2221">attach_change_permissions()</a>, <a class="el" href="include_2attach_8php.html#a70bd666e080c2af5a91f5d14c297b8cd">attach_delete()</a>, <a class="el" href="include_2attach_8php.html#a84a8a64c4805e1525b42d4add464833f">attach_store()</a>, <a class="el" href="text_8php.html#a27cd2c1b3bcb49a0cfb7249e851725ca">autoname()</a>, <a class="el" href="bbcode_8php.html#a851f5aafefe52474201b83f9fd65931f">bb_parse_crypt()</a>, <a class="el" href="bbcode_8php.html#a009f61aaf78771737ed0765c8463911b">bbcode()</a>, <a class="el" href="block_8php.html#a8a82a470acdfbc7a8e749509caeeea45">block_content()</a>, <a class="el" href="blocks_8php.html#a2531a8fd51db3cecb2eb20c002c66e12">blocks_content()</a>, <a class="el" href="include_2bookmarks_8php.html#aef1cb2968c41c759f2d106e1088ca323">bookmark_add()</a>, <a class="el" href="mod_2bookmarks_8php.html#a774364b1c8404529581083631703527a">bookmarks_content()</a>, <a class="el" href="zot_8php.html#ac34e479d27f32b82dd6b33542f81a6a7">build_sync_packet()</a>, <a class="el" href="security_8php.html#a8d23d2597aae380a3341872fe9513380">change_channel()</a>, <a class="el" href="channel_8php.html#a9c6a6179e0e626398ebecc6151905ef1">channel_content()</a>, <a class="el" href="mod_2chat_8php.html#a8b0b8bee6fef6477e8c64c5e951b1b4f">chat_content()</a>, <a class="el" href="include_2chat_8php.html#acea6b176eb7aff44d9ba3ae24ce511d3">chat_message()</a>, <a class="el" href="mod_2chat_8php.html#a999d594745597c656c9760253ae297ad">chat_post()</a>, <a class="el" href="include_2chat_8php.html#acdc80dba4eb796c7472b21129b435422">chatroom_create()</a>, <a class="el" href="include_2chat_8php.html#a2c95b545e46bfee64faa05ecf0afea91">chatroom_enter()</a>, <a class="el" href="chatsvc_8php.html#a7032784215e1f6747cf385a6598770f9">chatsvc_content()</a>, <a class="el" href="chatsvc_8php.html#a28d248b056fa47452e28ed01130e9116">chatsvc_init()</a>, <a class="el" href="chatsvc_8php.html#a7c9a9b9c24a2b02eed8efd6b09632d03">chatsvc_post()</a>, <a class="el" href="boot_8php.html#a4c02d88e66852a01bd5a1feecb7c3ce3">check_config()</a>, <a class="el" href="security_8php.html#a9c6180e82150a5a9af91a1255d096b5c">check_form_security_token()</a>, <a class="el" href="items_8php.html#a87ac9e359591721a824ecd23bbb56296">check_item_source()</a>, <a class="el" href="permissions_8php.html#a0f5bd9f7f4c8fb7ba4b2c1ed048b4dc7">check_list_permissions()</a>, <a class="el" href="text_8php.html#a0c65597bb4aed3a039eb795ff540e5e3">check_webbie()</a>, <a class="el" href="classRedDirectory.html#a5e3fc08b2bf9f61cea4d2ccae0495bec">RedDirectory\childExists()</a>, <a class="el" href="cloud_8php.html#a1b79a6fe0454bc76673ad9aef55bf02d">cloud_init()</a>, <a class="el" href="common_8php.html#aca62f113655809f41f49042ce9b123c2">common_init()</a>, <a class="el" href="boot_8php.html#acc4e0c910af066148b810e5fde55fff1">construct_page()</a>, <a class="el" href="conversation_8php.html#affea1afb3f32ca41e966c8ddb4204d81">conversation()</a>, <a class="el" href="classRedDirectory.html#a2d12d99d38a6a75fc9a830b2f7fc0bf0">RedDirectory\createFile()</a>, <a class="el" href="classphoto__gd.html#ab2232d775c8bacf66773a03308105f0c">photo_gd\cropImage()</a>, <a class="el" href="classphoto__imagick.html#a2f33a03a89497a2b2768e29736d4a8a4">photo_imagick\cropImage()</a>, <a class="el" href="datetime_8php.html#ac265b86f384ee094ed5479aae02aa5c8">datesel()</a>, <a class="el" href="datetime_8php.html#a5f29553799005b1fd4e9ce9d98ce05aa">datesel_format()</a>, <a class="el" href="items_8php.html#a56b2a4abcadfac71175cd50555528cc3">decode_tags()</a>, <a class="el" href="deliver_8php.html#a397afcb9afecf0c1816b0951189dd346">deliver_run()</a>, <a class="el" href="taxonomy_8php.html#a088371f4bc19155b2291508f5cd63332">dir_tagadelic()</a>, <a class="el" href="mod_2directory_8php.html#aac79396570d759da2efac24fcedf5b44">directory_content()</a>, <a class="el" href="include_2directory_8php.html#aa75d3b0697ca1456aaabdb37a74aa0f0">directory_run()</a>, <a class="el" href="dirprofile_8php.html#a3e1d30d3d93863ff5615f2df4ac7f052">dirprofile_init()</a>, <a class="el" href="display_8php.html#a37137c98d47bf3306f4c2bb9f5b60de0">display_content()</a>, <a class="el" href="account_8php.html#a0d183a3cb4c67a0f5e906811df7a1fc9">downgrade_accounts()</a>, <a class="el" href="include_2network_8php.html#a469b9bd700269cd07d954f1a16c5899b">email_header_encode()</a>, <a class="el" href="items_8php.html#a82955cc578f0fa600acec84475026194">encode_item()</a>, <a class="el" href="items_8php.html#a2d840c74ed23d1b6c7daee05cf89dda7">encode_mail()</a>, <a class="el" href="event_8php.html#a7378e839ac3de9d55579eb3ec48eaf92">event_store_item()</a>, <a class="el" href="events_8php.html#ab3e8a8f901175f8e40a8089eea45c075">events_post()</a>, <a class="el" href="include_2group_8php.html#a22a81875259c7d3d64d4848afea6b345">expand_groups()</a>, <a class="el" href="expire_8php.html#a444e45c9b67727b27db4c779fd51a298">expire_run()</a>, <a class="el" href="externals_8php.html#a4df44079e6f915286088b7a0d44db926">externals_run()</a>, <a class="el" href="features_8php.html#a52b5bdfb61b256713efecf7a7b20b0c0">feature_enabled()</a>, <a class="el" href="items_8php.html#adf980098b6de9c3993bc3ff26a8dd6f9">fetch_post_tags()</a>, <a class="el" href="filer_8php.html#a5fd5d7e61b2f9c43cb5f110c89dc4274">filer_content()</a>, <a class="el" href="text_8php.html#ace3c98538c63e09b70a363210b414112">find_xchan_in_array()</a>, <a class="el" href="contact__widgets_8php.html#a57e73ebcfd62bb5d8c7a7b9e663726d6">findpeople_widget()</a>, <a class="el" href="items_8php.html#aba98fcbbcd7044a7e9ea34edabc14c87">fix_private_photos()</a>, <a class="el" href="boot_8php.html#aca5e42678e178c6b9034610d66666fd7">fix_system_urls()</a>, <a class="el" href="classphoto__gd.html#a44cedef376044018702d9355ddc813ce">photo_gd\flip()</a>, <a class="el" href="fsuggest_8php.html#a61ecfe10ce937ed526614f8fd3de3c7d">fsuggest_post()</a>, <a class="el" href="permissions_8php.html#aeca9b280f3dc3358c89976d81d690008">get_all_perms()</a>, <a class="el" href="items_8php.html#a536d0313b6ffe33b9d2490c4e25c5361">get_item_elements()</a>, <a class="el" href="items_8php.html#a94ddb1d6c8fa21dd7433677e85168037">get_mail_elements()</a>, <a class="el" href="text_8php.html#a76d1b3435c067978d7b484c45f56472b">get_mentions()</a>, <a class="el" href="identity_8php.html#a332df795f684788002f5a6424abacfd7">get_online_status()</a>, <a class="el" href="items_8php.html#a251343637ff40a50cca93452cd530c26">get_profile_elements()</a>, <a class="el" href="include_2apps_8php.html#ae64f72eb4f126e03b4eb65ed1702a3ca">get_system_apps()</a>, <a class="el" href="taxonomy_8php.html#a0fb8cf0ac7bcbc8b27d856fe9bf69cd1">get_terms_oftype()</a>, <a class="el" href="identity_8php.html#aaeb666872995e3ab8da8f7bc5f3b2bd3">get_theme_uid()</a>, <a class="el" href="taxonomy_8php.html#a7747fa859ac56fbffd4f9782d85505de">get_things()</a>, <a class="el" href="classRedDirectory.html#aaa20f0f44da23781917af8170c0a2569">RedDirectory\getChild()</a>, <a class="el" href="classRedDirectory.html#a70173d4458572d95e586b2037d2fd2f4">RedDirectory\getDir()</a>, <a class="el" href="classRedDirectory.html#a2f7a574f2115f099d6dd103d5b252375">RedDirectory\getQuotaInfo()</a>, <a class="el" href="gprobe_8php.html#adf72cb0a70b5b9d99fdec1cc60e18ed1">gprobe_run()</a>, <a class="el" href="hostxrd_8php.html#aa37ffc8e7900bc76c4828bd25916db92">hostxrd_init()</a>, <a class="el" href="text_8php.html#a436a8de00c942364c2d0fcfc7e1f4b5a">ids_to_querystr()</a>, <a class="el" href="items_8php.html#a6bee35961f2e32905f20367a9309d627">import_author_rss()</a>, <a class="el" href="items_8php.html#ae73794179b62d39bb597ff670ab1c1e5">import_author_xchan()</a>, <a class="el" href="zot_8php.html#ad149f1e98c0c5b88ff9147e6ee3f330d">import_author_zot()</a>, <a class="el" href="zot_8php.html#a3bf11286c2619b4ca28e49d5b5ab374a">import_directory_keywords()</a>, <a class="el" href="zot_8php.html#a20750dd2c36961013fd382fb34e1366c">import_directory_profile()</a>, <a class="el" href="import_8php.html#af17fef0410518f7eac205d0ea416eaa2">import_post()</a>, <a class="el" href="zot_8php.html#a2657e141d62d5f67ad3c87651b585299">import_site()</a>, <a class="el" href="zot_8php.html#a528e97ca5d69c3b7f35c5d954afde315">import_xchan()</a>, <a class="el" href="invite_8php.html#a244385b28cfd021d308715f01158bfd9">invite_content()</a>, <a class="el" href="invite_8php.html#aeb0881c0f93c8e8552e5ed756ce6e5a5">invite_post()</a>, <a class="el" href="item_8php.html#a693cd09805755ab85bbb5ecae69a48c3">item_post()</a>, <a class="el" href="items_8php.html#a5ed782ff5b9cf050bec931e06de12c00">item_remove_cid()</a>, <a class="el" href="items_8php.html#a756738301f2ed96be50232500677d58a">items_fetch()</a>, <a class="el" href="text_8php.html#a0271381208acfa2d4cff36da281e3e23">json_decode_plus()</a>, <a class="el" href="include_2network_8php.html#a4c5d50079e089168d9248427018fffd4">json_return_and_die()</a>, <a class="el" href="layouts_8php.html#a6e0193759ad9eef76d3df2db24237b50">layouts_content()</a>, <a class="el" href="text_8php.html#a2690ad67bb6fb97ef69de3e8d23f2728">legal_webbie()</a>, <a class="el" href="classFKOAuth1.html#a2b1dac2ed31fc6ef84668afdda8b263f">FKOAuth1\loginUser()</a>, <a class="el" href="magic_8php.html#acea2cc792849ca2d71d4b689f66518bf">magic_init()</a>, <a class="el" href="mail_8php.html#acfc2cc0bf4e0b178207758384977f25a">mail_post()</a>, <a class="el" href="manage_8php.html#a2bca247b5296827638959138367db4f5">manage_content()</a>, <a class="el" href="Contact_8php.html#a08845ce8c5b997d5edac38ae7118b5c8">mark_orphan_hubsxchans()</a>, <a class="el" href="match_8php.html#a1dd853e959b9e70c1911bb2fb5f5130d">match_content()</a>, <a class="el" href="mod_2menu_8php.html#a6fed23af14d71a78a4153c8363a685cf">menu_content()</a>, <a class="el" href="include_2menu_8php.html#ad87f51ce85172bcc3f931aa0cd96a804">menu_delete_id()</a>, <a class="el" href="include_2menu_8php.html#a68ebbf492470c930f652013656f9071d">menu_fetch()</a>, <a class="el" href="include_2menu_8php.html#a03a5deed3908543581c074ce333e9d6a">menu_render()</a>, <a class="el" href="text_8php.html#a1633412120f52bdce5f43e0a127d9293">mimetype_select()</a>, <a class="el" href="nav_8php.html#a43be0df73b90647ea70947ce004e231e">nav()</a>, <a class="el" href="acl_8php.html#a57dceff370d4a0e7ae673d50fbfda61f">navbar_complete()</a>, <a class="el" href="netgrowth_8php.html#a9b87bfc25a7cb11bc7f8e1fdd0310919">netgrowth_content()</a>, <a class="el" href="mod_2network_8php.html#a43f2f29b90c5e29072c561934bc8f8b4">network_content()</a>, <a class="el" href="new__channel_8php.html#a1ad7f99e4366a32942c6b954aba3a164">new_channel_init()</a>, <a class="el" href="include_2follow_8php.html#ae387d4ae097c23d69f3247e7f08140c7">new_contact()</a>, <a class="el" href="enotify_8php.html#a3e9a9355b243777c488d2a9883908dfc">notification()</a>, <a class="el" href="notifier_8php.html#a568c502f626cff95e344c0748938b85d">notifier_run()</a>, <a class="el" href="include_2oembed_8php.html#a98549b9af8140eda3eceaeedcaabc2c2">oembed_fetch_url()</a>, <a class="el" href="onedirsync_8php.html#a411aedd47c57476099647961e6a86691">onedirsync_run()</a>, <a class="el" href="onepoll_8php.html#a72753b2fdec79b37c7f432035c91fb6d">onepoll_run()</a>, <a class="el" href="openid_8php.html#a9a13827dbcf61ae4e45f0b6b33a88f43">openid_content()</a>, <a class="el" href="page_8php.html#a91a5f649f68406149108bded1dc90b22">page_content()</a>, <a class="el" href="include_2apps_8php.html#a32fe4ed9666228fd4b67dc487cc57a83">parse_app_description()</a>, <a class="el" href="include_2network_8php.html#a27a951b59d8d622c0b3e7b0673ba74c6">parse_xml_string()</a>, <a class="el" href="pdledit_8php.html#a59cb550f6b7a4e7d8196fbc9de601619">pdledit_content()</a>, <a class="el" href="permissions_8php.html#a67ada9ed51e77885b6b0f6a28cee1835">perm_is_allowed()</a>, <a class="el" href="include_2photos_8php.html#aa27b9e435dcc34e1009f56dc02c7ca51">photos_list_photos()</a>, <a class="el" href="mod_2photos_8php.html#a062bed4d04d14fee8a53f4c9be673080">photos_post()</a>, <a class="el" href="ping_8php.html#a77217b1b190b4c5d8770867b45f0c0a1">ping_init()</a>, <a class="el" href="socgraph_8php.html#a5ef8bef37161df53718a21e93d02fbd6">poco_load()</a>, <a class="el" href="poller_8php.html#a5f12df3a4738124b6c039971e87e76da">poller_run()</a>, <a class="el" href="post_8php.html#af4b48181ce773ef0cdfc972441445c34">post_init()</a>, <a class="el" href="post_8php.html#af59e6a1dc22d19d9257b01cd7ccedb75">post_post()</a>, <a class="el" href="text_8php.html#ac19d2b33a58372a357a43d51eed19162">preg_heart()</a>, <a class="el" href="tpldebug_8php.html#a44778457a6c02554812fbfad19d32ba3">print_template()</a>, <a class="el" href="include_2message_8php.html#a652973ce47a262f2d238c2fd6233d97e">private_messages_list()</a>, <a class="el" href="boot_8php.html#ab346a2ece14993861f3e4206befa94f0">proc_run()</a>, <a class="el" href="zot_8php.html#ac301c67864917c35922257950ae0f95c">process_channel_sync_delivery()</a>, <a class="el" href="zot_8php.html#aa6ae96db8cbbdbb10e6876d206bbf7cc">process_mail_delivery()</a>, <a class="el" href="profile_8php.html#ab5d0246be0552e2182a585c1206d22a5">profile_init()</a>, <a class="el" href="identity_8php.html#a4751b522ea913d0e7ed43e03d22e9e68">profile_load()</a>, <a class="el" href="profile__photo_8php.html#a4b80234074bd603221aa5364f330e479">profile_photo_post()</a>, <a class="el" href="hubloc_8php.html#ad3d0dcfcfcb347744f7617fe6f5de002">prune_hub_reinstalls()</a>, <a class="el" href="zot_8php.html#a083aec6c900d244e1bfc1406f9461465">public_recips()</a>, <a class="el" href="classRedFile.html#a41a49a583eb276b75626fcf97f4a699c">RedFile\put()</a>, <a class="el" href="classdba__mysql.html#ac3fd60c278f400907322dac578754a99">dba_mysql\q()</a>, <a class="el" href="classdba__mysqli.html#a611c4de8d6d7512dffb83a38bb6701ec">dba_mysqli\q()</a>, <a class="el" href="randprof_8php.html#abf5dba3c608b9304cbf68327cd31b090">randprof_init()</a>, <a class="el" href="include_2api_8php.html#aafa82b65a9f879a1a1197cfe8aaf3898">red_item_new()</a>, <a class="el" href="reddav_8php.html#a5df0d09893f2e65dc5cf6bbab6cfb266">RedCollectionData()</a>, <a class="el" href="reddav_8php.html#a9f531641dfb4e43cd88ac1a9ae7e2088">RedFileData()</a>, <a class="el" href="identity_8php.html#a47d6f53216f23a3484061793bef29854">remote_online_status()</a>, <a class="el" href="zot_8php.html#aad25a3fe0e1566121d6fb8222979bc10">remove_community_tag()</a>, <a class="el" href="rpost_8php.html#a8190354d789000806d9879aea276728f">rpost_content()</a>, <a class="el" href="classphoto__driver.html#a5864fae7d8389372955a8e78cec527ac">photo_driver\save()</a>, <a class="el" href="search__ac_8php.html#a14f90c83a3f2be095e9e2992a8d66138">search_ac_init()</a>, <a class="el" href="items_8php.html#aab9e0c58247427126de0699c729c3b6c">send_status_notifications()</a>, <a class="el" href="share_8php.html#afeb26046bdd02567ecd29ab5f188b249">share_init()</a>, <a class="el" href="permissions_8php.html#aa8b7b102c653649d7a71b5a1c044d90d">site_default_perms()</a>, <a class="el" href="text_8php.html#a3d225b253bb9e0f2498c11647d927b0b">smilies()</a>, <a class="el" href="sources_8php.html#ac442ccef080ab95772d8929fcafcb4b7">sources_content()</a>, <a class="el" href="sslify_8php.html#a75b11e54a3d1fc83e7d4c0e8b4dab316">sslify_init()</a>, <a class="el" href="classphoto__driver.html#a642a8d0c4ad5f887c99c6af77cee287b">photo_driver\store()</a>, <a class="el" href="spam_8php.html#a05861201147b9a538d006f0269255cf9">string_splitter()</a>, <a class="el" href="text_8php.html#a8796f6a9ca592ecdce7b3afc3462aa13">stringify_array_elms()</a>, <a class="el" href="dir__fns_8php.html#aa666e7df6ca8c332f4081c9b66b4bdf6">sync_directories()</a>, <a class="el" href="items_8php.html#ab1bce4261bcf75ad62753b498a144d17">tag_deliver()</a>, <a class="el" href="taxonomy_8php.html#aaf90ba8b839d6459065f39a4f1109b8a">tagadelic()</a>, <a class="el" href="tagrm_8php.html#adfd4ea5b4d7fc6d9c9e042af5cd7d49a">tagrm_content()</a>, <a class="el" href="tagrm_8php.html#a1702f40aa53a2fa93deade1f609abe78">tagrm_post()</a>, <a class="el" href="admin_8php.html#ad4f74f33944a98b56d2c8c7601f124a4">theme_status()</a>, <a class="el" href="thing_8php.html#a24a35f1e64029a67fdbea94a776ae04b">thing_content()</a>, <a class="el" href="datetime_8php.html#a36d3d6dff8d76b5f295bb3d9c535a5b1">timesel()</a>, <a class="el" href="admin_8php.html#af81f081851791cd15e49e8ff6722dc27">toggle_theme()</a>, <a class="el" href="dir__fns_8php.html#a44062d4b471d1e83f92f6c184585aa13">update_directory_entry()</a>, <a class="el" href="zot_8php.html#a31aad56acf8ff8f2353e6ff8595544df">update_imported_item()</a>, <a class="el" href="plugin_8php.html#a754d7f53b3abc557b753c057dc4e021d">upgrade_bool_message()</a>, <a class="el" href="plugin_8php.html#a901657dd078e070516cf97285e0bada7">upgrade_message()</a>, <a class="el" href="text_8php.html#a6a3d80a6c6fb234fd0bac44203b828eb">valid_email()</a>, <a class="el" href="classRedBasicAuth.html#a8dfd9a0953f8884723b421b7c1acf79b">RedBasicAuth\validateUserPass()</a>, <a class="el" href="webpages_8php.html#af3b7397d4abc153e3d2147740ee1a41d">webpages_content()</a>, <a class="el" href="setup_8php.html#aea1ebdda58ec938f4e7b31aa5c5f6b58">what_next()</a>, <a class="el" href="widgets_8php.html#add9b24d3304e529a7975e96122315554">widget_affinity()</a>, <a class="el" href="widgets_8php.html#a0e2f5179ed1a73b282dfda7270fcabb3">widget_bookmarkedchats()</a>, <a class="el" href="widgets_8php.html#a50b1410238100c8a94c06b0aa63ee3b8">widget_suggestedchats()</a>, <a class="el" href="widgets_8php.html#a0d404276fedc59f5038cf5c085028326">widget_suggestions()</a>, <a class="el" href="text_8php.html#a36a2e5d418ee81140f25c4233cfecd1f">xchan_query()</a>, <a class="el" href="text_8php.html#aaed4413ed8918838b517e3b2fafaea0d">xmlify()</a>, <a class="el" href="zfinger_8php.html#a8139b83a22ef98869adc10aa224027a0">zfinger_init()</a>, <a class="el" href="zot_8php.html#a928f5643ca66ae9635d85aeb2be62e03">zot_process_response()</a>, <a class="el" href="zot_8php.html#a7ac30ff51274bf0b6d3eade37972145c">zot_refresh()</a>, <a class="el" href="zot_8php.html#a5bcdfef419b16075a0eca990956223dc">zot_register_hub()</a>, and <a class="el" href="zotfeed_8php.html#a24dfc23d366e7f840cf2847d0c1c8eac">zotfeed_init()</a>.</p>
+<p>Referenced by <a class="el" href="classTemplate.html#abf71098c80fd1f218a59452b3408309e">Template\_replcb_for()</a>, <a class="el" href="classTemplate.html#ae0836e7d5bd5afceb04f50fd635f1228">Template\_replcb_if()</a>, <a class="el" href="Contact_8php.html#a5101d7eca5d6f387e5555f03fe249e33">account_remove()</a>, <a class="el" href="acl_8php.html#ac6776dba871806ecdb5d1659bc2eb07a">acl_init()</a>, <a class="el" href="items_8php.html#a36e656667193c83aa2cc03a024fc131b">activity_sanitise()</a>, <a class="el" href="admin_8php.html#ad6f87a764fd35f522c7b4c351d7878ec">admin_page_channels()</a>, <a class="el" href="admin_8php.html#af124619fdc278fe2bf14c45ddaa260fb">admin_page_themes()</a>, <a class="el" href="identity_8php.html#aa870d2c1f558cfd52bef05bc124e8fa4">advanced_profile()</a>, <a class="el" href="crypto_8php.html#a2148d7aac7b30c720f7ebda7e9790286">aes_encapsulate()</a>, <a class="el" href="include_2api_8php.html#ae46f964e5a9c80b96dc78df61c09ed3a">api_group_members()</a>, <a class="el" href="include_2api_8php.html#afe534f826e4282b72d66e8cadca7bb73">api_login()</a>, <a class="el" href="include_2apps_8php.html#ad5f6f1443725386cc7af5ed34a5fe185">app_decode()</a>, <a class="el" href="include_2apps_8php.html#a72756e1601489eb77971eeda011446d0">app_install()</a>, <a class="el" href="include_2apps_8php.html#a01cabfb33b2d0d843cf3bf4e3d3f0ab0">app_list()</a>, <a class="el" href="include_2apps_8php.html#a1b2e737f477a2e0d9d11ef14adc5aa66">app_render()</a>, <a class="el" href="include_2apps_8php.html#a15626f24069c18816f7cdaf4735f58f9">app_store()</a>, <a class="el" href="include_2apps_8php.html#aeab6a62d2f3dfaa86ed043a006305f46">app_update()</a>, <a class="el" href="mod_2apps_8php.html#a546016cb960d0b110ee8e489dfa6c27c">apps_content()</a>, <a class="el" href="boot_8php.html#a768f00b7d66be0daf7ef4eea2e862006">argv()</a>, <a class="el" href="items_8php.html#abf7a1b73eb352d79acd36309b0dababd">array_sanitise()</a>, <a class="el" href="include_2attach_8php.html#a5c0875eafb8c0f8a0620ff7a875a2221">attach_change_permissions()</a>, <a class="el" href="include_2attach_8php.html#a70bd666e080c2af5a91f5d14c297b8cd">attach_delete()</a>, <a class="el" href="include_2attach_8php.html#a84a8a64c4805e1525b42d4add464833f">attach_store()</a>, <a class="el" href="text_8php.html#a27cd2c1b3bcb49a0cfb7249e851725ca">autoname()</a>, <a class="el" href="bbcode_8php.html#a851f5aafefe52474201b83f9fd65931f">bb_parse_crypt()</a>, <a class="el" href="bbcode_8php.html#a009f61aaf78771737ed0765c8463911b">bbcode()</a>, <a class="el" href="block_8php.html#a8a82a470acdfbc7a8e749509caeeea45">block_content()</a>, <a class="el" href="blocks_8php.html#a2531a8fd51db3cecb2eb20c002c66e12">blocks_content()</a>, <a class="el" href="include_2bookmarks_8php.html#aef1cb2968c41c759f2d106e1088ca323">bookmark_add()</a>, <a class="el" href="mod_2bookmarks_8php.html#a774364b1c8404529581083631703527a">bookmarks_content()</a>, <a class="el" href="zot_8php.html#aa97b33b619dd7132a9274f852af6ceb5">build_sync_packet()</a>, <a class="el" href="security_8php.html#a8d23d2597aae380a3341872fe9513380">change_channel()</a>, <a class="el" href="channel_8php.html#a9c6a6179e0e626398ebecc6151905ef1">channel_content()</a>, <a class="el" href="mod_2chat_8php.html#a8b0b8bee6fef6477e8c64c5e951b1b4f">chat_content()</a>, <a class="el" href="include_2chat_8php.html#acea6b176eb7aff44d9ba3ae24ce511d3">chat_message()</a>, <a class="el" href="mod_2chat_8php.html#a999d594745597c656c9760253ae297ad">chat_post()</a>, <a class="el" href="include_2chat_8php.html#acdc80dba4eb796c7472b21129b435422">chatroom_create()</a>, <a class="el" href="include_2chat_8php.html#a2c95b545e46bfee64faa05ecf0afea91">chatroom_enter()</a>, <a class="el" href="chatsvc_8php.html#a7032784215e1f6747cf385a6598770f9">chatsvc_content()</a>, <a class="el" href="chatsvc_8php.html#a28d248b056fa47452e28ed01130e9116">chatsvc_init()</a>, <a class="el" href="chatsvc_8php.html#a7c9a9b9c24a2b02eed8efd6b09632d03">chatsvc_post()</a>, <a class="el" href="boot_8php.html#a4c02d88e66852a01bd5a1feecb7c3ce3">check_config()</a>, <a class="el" href="security_8php.html#a9c6180e82150a5a9af91a1255d096b5c">check_form_security_token()</a>, <a class="el" href="items_8php.html#a87ac9e359591721a824ecd23bbb56296">check_item_source()</a>, <a class="el" href="permissions_8php.html#a0f5bd9f7f4c8fb7ba4b2c1ed048b4dc7">check_list_permissions()</a>, <a class="el" href="text_8php.html#a0c65597bb4aed3a039eb795ff540e5e3">check_webbie()</a>, <a class="el" href="classRedMatrix_1_1RedDAV_1_1RedDirectory.html#a964b13fde1a5da6f76b51ca5519234dc">RedMatrix\RedDAV\RedDirectory\childExists()</a>, <a class="el" href="cloud_8php.html#ad2e96e917852f27dedfc263d37e13756">cloud_init()</a>, <a class="el" href="common_8php.html#aca62f113655809f41f49042ce9b123c2">common_init()</a>, <a class="el" href="connedit_8php.html#a795acb3d9d841f55c255d7611681ab67">connedit_content()</a>, <a class="el" href="boot_8php.html#acc4e0c910af066148b810e5fde55fff1">construct_page()</a>, <a class="el" href="items_8php.html#adc26e08aa61f5666da04ab5d2a9d68a6">consume_feed()</a>, <a class="el" href="conversation_8php.html#affea1afb3f32ca41e966c8ddb4204d81">conversation()</a>, <a class="el" href="classRedMatrix_1_1RedDAV_1_1RedDirectory.html#a58e750256cdc2f0f79fbe8d5463ffefe">RedMatrix\RedDAV\RedDirectory\createFile()</a>, <a class="el" href="classphoto__gd.html#ab2232d775c8bacf66773a03308105f0c">photo_gd\cropImage()</a>, <a class="el" href="classphoto__imagick.html#a2f33a03a89497a2b2768e29736d4a8a4">photo_imagick\cropImage()</a>, <a class="el" href="items_8php.html#a56b2a4abcadfac71175cd50555528cc3">decode_tags()</a>, <a class="el" href="deliver_8php.html#a397afcb9afecf0c1816b0951189dd346">deliver_run()</a>, <a class="el" href="diaspora_8php.html#a0fb2abe304aae19efc040a5e6b917829">diaspora_comment()</a>, <a class="el" href="diaspora_8php.html#a5d57518545baa31cf8a85a937a267681">diaspora_like()</a>, <a class="el" href="bb2diaspora_8php.html#a4a27604f0745f1efda672966aaca9a3b">diaspora_mention_callback()</a>, <a class="el" href="diaspora_8php.html#ac1ab782a34552a7c6b4dc961754ed598">diaspora_request()</a>, <a class="el" href="taxonomy_8php.html#a088371f4bc19155b2291508f5cd63332">dir_tagadelic()</a>, <a class="el" href="mod_2directory_8php.html#aac79396570d759da2efac24fcedf5b44">directory_content()</a>, <a class="el" href="include_2directory_8php.html#aa75d3b0697ca1456aaabdb37a74aa0f0">directory_run()</a>, <a class="el" href="include_2network_8php.html#a5176176ddc1906d91f186df6fbd87b48">discover_by_url()</a>, <a class="el" href="include_2network_8php.html#a63e62946e194928eb17c5a9f2bbef0fe">discover_by_webbie()</a>, <a class="el" href="display_8php.html#a37137c98d47bf3306f4c2bb9f5b60de0">display_content()</a>, <a class="el" href="account_8php.html#a0d183a3cb4c67a0f5e906811df7a1fc9">downgrade_accounts()</a>, <a class="el" href="editblock_8php.html#abbe8f55de06967bc8d79d620509a49e6">editblock_content()</a>, <a class="el" href="editlayout_8php.html#aa877e4157a26b099de904164181dd386">editlayout_content()</a>, <a class="el" href="editwebpage_8php.html#a375e945255fad79a71036528f7480650">editwebpage_content()</a>, <a class="el" href="include_2network_8php.html#a469b9bd700269cd07d954f1a16c5899b">email_header_encode()</a>, <a class="el" href="items_8php.html#a56b0f5d2cb36eb8f4bfca84813884f86">encode_item()</a>, <a class="el" href="items_8php.html#a2d840c74ed23d1b6c7daee05cf89dda7">encode_mail()</a>, <a class="el" href="classdba__postgres.html#a7108eaaae7cc2fb236212041afc9ac0f">dba_postgres\escape()</a>, <a class="el" href="event_8php.html#a7378e839ac3de9d55579eb3ec48eaf92">event_store_item()</a>, <a class="el" href="events_8php.html#ab3e8a8f901175f8e40a8089eea45c075">events_post()</a>, <a class="el" href="include_2group_8php.html#a22a81875259c7d3d64d4848afea6b345">expand_groups()</a>, <a class="el" href="expire_8php.html#a444e45c9b67727b27db4c779fd51a298">expire_run()</a>, <a class="el" href="externals_8php.html#a4df44079e6f915286088b7a0d44db926">externals_run()</a>, <a class="el" href="features_8php.html#a52b5bdfb61b256713efecf7a7b20b0c0">feature_enabled()</a>, <a class="el" href="items_8php.html#adf980098b6de9c3993bc3ff26a8dd6f9">fetch_post_tags()</a>, <a class="el" href="include_2network_8php.html#a850ed5307c6a18076f4b80addc99602d">fetch_xrd_links()</a>, <a class="el" href="filer_8php.html#a5fd5d7e61b2f9c43cb5f110c89dc4274">filer_content()</a>, <a class="el" href="text_8php.html#ace3c98538c63e09b70a363210b414112">find_xchan_in_array()</a>, <a class="el" href="contact__widgets_8php.html#a57e73ebcfd62bb5d8c7a7b9e663726d6">findpeople_widget()</a>, <a class="el" href="items_8php.html#aba98fcbbcd7044a7e9ea34edabc14c87">fix_private_photos()</a>, <a class="el" href="boot_8php.html#aca5e42678e178c6b9034610d66666fd7">fix_system_urls()</a>, <a class="el" href="classphoto__gd.html#a44cedef376044018702d9355ddc813ce">photo_gd\flip()</a>, <a class="el" href="dimport_8php.html#a581f040717941ce3e1868b0b5dceefd1">foofoo()</a>, <a class="el" href="fsuggest_8php.html#a61ecfe10ce937ed526614f8fd3de3c7d">fsuggest_post()</a>, <a class="el" href="permissions_8php.html#aeca9b280f3dc3358c89976d81d690008">get_all_perms()</a>, <a class="el" href="diaspora_8php.html#ac9e41e46626dc608204bf4b5e16e62d7">get_diaspora_reshare_xml()</a>, <a class="el" href="boot_8php.html#a329400dcb29897cdaae3020109272285">get_directory_realm()</a>, <a class="el" href="items_8php.html#a536d0313b6ffe33b9d2490c4e25c5361">get_item_elements()</a>, <a class="el" href="items_8php.html#a94ddb1d6c8fa21dd7433677e85168037">get_mail_elements()</a>, <a class="el" href="text_8php.html#a76d1b3435c067978d7b484c45f56472b">get_mentions()</a>, <a class="el" href="identity_8php.html#a332df795f684788002f5a6424abacfd7">get_online_status()</a>, <a class="el" href="items_8php.html#a251343637ff40a50cca93452cd530c26">get_profile_elements()</a>, <a class="el" href="identity_8php.html#a224710dfb7465b706c91134247c20afa">get_profile_fields_advanced()</a>, <a class="el" href="identity_8php.html#a4ff59df0f0a668a06a8411f87496aa21">get_profile_fields_basic()</a>, <a class="el" href="permissions_8php.html#a9b5f5120566a3699a98efc5ccb0c59fe">get_role_perms()</a>, <a class="el" href="include_2apps_8php.html#ae64f72eb4f126e03b4eb65ed1702a3ca">get_system_apps()</a>, <a class="el" href="taxonomy_8php.html#a0fb8cf0ac7bcbc8b27d856fe9bf69cd1">get_terms_oftype()</a>, <a class="el" href="identity_8php.html#aaeb666872995e3ab8da8f7bc5f3b2bd3">get_theme_uid()</a>, <a class="el" href="taxonomy_8php.html#a7747fa859ac56fbffd4f9782d85505de">get_things()</a>, <a class="el" href="classRedMatrix_1_1RedDAV_1_1RedDirectory.html#a1a37850bdd1f188abd6160559698d5d7">RedMatrix\RedDAV\RedDirectory\getChild()</a>, <a class="el" href="classRedMatrix_1_1RedDAV_1_1RedDirectory.html#a825dc5f3e0f83f50736c16daa6a4809d">RedMatrix\RedDAV\RedDirectory\getDir()</a>, <a class="el" href="classRedMatrix_1_1RedDAV_1_1RedDirectory.html#a69db443ed3c84938b4352fe515bf8d68">RedMatrix\RedDAV\RedDirectory\getQuotaInfo()</a>, <a class="el" href="gprobe_8php.html#adf72cb0a70b5b9d99fdec1cc60e18ed1">gprobe_run()</a>, <a class="el" href="items_8php.html#a52c24114b73c0bdb605a03cd29712223">handle_feed()</a>, <a class="el" href="hcard_8php.html#ac34f26b0e6a37eef44fa49bea135136d">hcard_init()</a>, <a class="el" href="hostxrd_8php.html#aa37ffc8e7900bc76c4828bd25916db92">hostxrd_init()</a>, <a class="el" href="text_8php.html#a436a8de00c942364c2d0fcfc7e1f4b5a">ids_to_querystr()</a>, <a class="el" href="impel_8php.html#ab7db6fca43b42ea4332cb3e841b3cf7b">impel_init()</a>, <a class="el" href="items_8php.html#a2c3f97b2109c05df86d97449b3c78ebc">import_author_diaspora()</a>, <a class="el" href="items_8php.html#a6bee35961f2e32905f20367a9309d627">import_author_rss()</a>, <a class="el" href="items_8php.html#a37f79991f36811cf847446ff60e8e11f">import_author_unknown()</a>, <a class="el" href="items_8php.html#ae73794179b62d39bb597ff670ab1c1e5">import_author_xchan()</a>, <a class="el" href="zot_8php.html#ad149f1e98c0c5b88ff9147e6ee3f330d">import_author_zot()</a>, <a class="el" href="zot_8php.html#a3bf11286c2619b4ca28e49d5b5ab374a">import_directory_keywords()</a>, <a class="el" href="zot_8php.html#a20750dd2c36961013fd382fb34e1366c">import_directory_profile()</a>, <a class="el" href="import_8php.html#af17fef0410518f7eac205d0ea416eaa2">import_post()</a>, <a class="el" href="zot_8php.html#a2657e141d62d5f67ad3c87651b585299">import_site()</a>, <a class="el" href="zot_8php.html#a528e97ca5d69c3b7f35c5d954afde315">import_xchan()</a>, <a class="el" href="invite_8php.html#a244385b28cfd021d308715f01158bfd9">invite_content()</a>, <a class="el" href="invite_8php.html#aeb0881c0f93c8e8552e5ed756ce6e5a5">invite_post()</a>, <a class="el" href="item_8php.html#a693cd09805755ab85bbb5ecae69a48c3">item_post()</a>, <a class="el" href="items_8php.html#a5ed782ff5b9cf050bec931e06de12c00">item_remove_cid()</a>, <a class="el" href="items_8php.html#a756738301f2ed96be50232500677d58a">items_fetch()</a>, <a class="el" href="text_8php.html#a0271381208acfa2d4cff36da281e3e23">json_decode_plus()</a>, <a class="el" href="include_2network_8php.html#a4c5d50079e089168d9248427018fffd4">json_return_and_die()</a>, <a class="el" href="layouts_8php.html#a6e0193759ad9eef76d3df2db24237b50">layouts_content()</a>, <a class="el" href="text_8php.html#a2690ad67bb6fb97ef69de3e8d23f2728">legal_webbie()</a>, <a class="el" href="locs_8php.html#a6c900f53970c0d0e738d2fe06d27ca44">locs_content()</a>, <a class="el" href="classFKOAuth1.html#a2b1dac2ed31fc6ef84668afdda8b263f">FKOAuth1\loginUser()</a>, <a class="el" href="magic_8php.html#acea2cc792849ca2d71d4b689f66518bf">magic_init()</a>, <a class="el" href="mail_8php.html#acfc2cc0bf4e0b178207758384977f25a">mail_post()</a>, <a class="el" href="manage_8php.html#a2bca247b5296827638959138367db4f5">manage_content()</a>, <a class="el" href="Contact_8php.html#a08845ce8c5b997d5edac38ae7118b5c8">mark_orphan_hubsxchans()</a>, <a class="el" href="match_8php.html#a1dd853e959b9e70c1911bb2fb5f5130d">match_content()</a>, <a class="el" href="mod_2menu_8php.html#a6fed23af14d71a78a4153c8363a685cf">menu_content()</a>, <a class="el" href="include_2menu_8php.html#ad87f51ce85172bcc3f931aa0cd96a804">menu_delete_id()</a>, <a class="el" href="include_2menu_8php.html#a68ebbf492470c930f652013656f9071d">menu_fetch()</a>, <a class="el" href="include_2menu_8php.html#a03a5deed3908543581c074ce333e9d6a">menu_render()</a>, <a class="el" href="text_8php.html#a1633412120f52bdce5f43e0a127d9293">mimetype_select()</a>, <a class="el" href="nav_8php.html#a43be0df73b90647ea70947ce004e231e">nav()</a>, <a class="el" href="acl_8php.html#a57dceff370d4a0e7ae673d50fbfda61f">navbar_complete()</a>, <a class="el" href="netgrowth_8php.html#a9b87bfc25a7cb11bc7f8e1fdd0310919">netgrowth_content()</a>, <a class="el" href="mod_2network_8php.html#a43f2f29b90c5e29072c561934bc8f8b4">network_content()</a>, <a class="el" href="new__channel_8php.html#a1ad7f99e4366a32942c6b954aba3a164">new_channel_init()</a>, <a class="el" href="include_2follow_8php.html#ae387d4ae097c23d69f3247e7f08140c7">new_contact()</a>, <a class="el" href="enotify_8php.html#a3e9a9355b243777c488d2a9883908dfc">notification()</a>, <a class="el" href="identity_8php.html#a2e6a1cc35887937823ec7fbb90472afe">notifications_off()</a>, <a class="el" href="identity_8php.html#a5650319c799de09d1b6d1076b6f839a4">notifications_on()</a>, <a class="el" href="notifier_8php.html#a568c502f626cff95e344c0748938b85d">notifier_run()</a>, <a class="el" href="include_2oembed_8php.html#a98549b9af8140eda3eceaeedcaabc2c2">oembed_fetch_url()</a>, <a class="el" href="onedirsync_8php.html#a411aedd47c57476099647961e6a86691">onedirsync_run()</a>, <a class="el" href="onepoll_8php.html#a72753b2fdec79b37c7f432035c91fb6d">onepoll_run()</a>, <a class="el" href="openid_8php.html#a9a13827dbcf61ae4e45f0b6b33a88f43">openid_content()</a>, <a class="el" href="page_8php.html#a4d89800c0366a239191b1692c09635cf">page_init()</a>, <a class="el" href="include_2apps_8php.html#a32fe4ed9666228fd4b67dc487cc57a83">parse_app_description()</a>, <a class="el" href="include_2network_8php.html#a27a951b59d8d622c0b3e7b0673ba74c6">parse_xml_string()</a>, <a class="el" href="pdledit_8php.html#a59cb550f6b7a4e7d8196fbc9de601619">pdledit_content()</a>, <a class="el" href="crypto_8php.html#a798368843cdd9bb08386b48e53e29e8c">pemtome()</a>, <a class="el" href="permissions_8php.html#a67ada9ed51e77885b6b0f6a28cee1835">perm_is_allowed()</a>, <a class="el" href="include_2photos_8php.html#aa27b9e435dcc34e1009f56dc02c7ca51">photos_list_photos()</a>, <a class="el" href="mod_2photos_8php.html#a062bed4d04d14fee8a53f4c9be673080">photos_post()</a>, <a class="el" href="ping_8php.html#a77217b1b190b4c5d8770867b45f0c0a1">ping_init()</a>, <a class="el" href="socgraph_8php.html#a5ef8bef37161df53718a21e93d02fbd6">poco_load()</a>, <a class="el" href="poller_8php.html#a5f12df3a4738124b6c039971e87e76da">poller_run()</a>, <a class="el" href="post_8php.html#af4b48181ce773ef0cdfc972441445c34">post_init()</a>, <a class="el" href="post_8php.html#af59e6a1dc22d19d9257b01cd7ccedb75">post_post()</a>, <a class="el" href="text_8php.html#ac19d2b33a58372a357a43d51eed19162">preg_heart()</a>, <a class="el" href="text_8php.html#ae4df74296fbe55051ed3c035e55205e5">prepare_body()</a>, <a class="el" href="tpldebug_8php.html#a44778457a6c02554812fbfad19d32ba3">print_template()</a>, <a class="el" href="include_2message_8php.html#a652973ce47a262f2d238c2fd6233d97e">private_messages_list()</a>, <a class="el" href="boot_8php.html#ab346a2ece14993861f3e4206befa94f0">proc_run()</a>, <a class="el" href="zot_8php.html#ac301c67864917c35922257950ae0f95c">process_channel_sync_delivery()</a>, <a class="el" href="zot_8php.html#a8eeefdb0dad4c436bea9d1c06c0a7988">process_location_delivery()</a>, <a class="el" href="zot_8php.html#aa6ae96db8cbbdbb10e6876d206bbf7cc">process_mail_delivery()</a>, <a class="el" href="profile_8php.html#ab5d0246be0552e2182a585c1206d22a5">profile_init()</a>, <a class="el" href="identity_8php.html#a4751b522ea913d0e7ed43e03d22e9e68">profile_load()</a>, <a class="el" href="profile__photo_8php.html#a4b80234074bd603221aa5364f330e479">profile_photo_post()</a>, <a class="el" href="profiles_8php.html#a46975783b8b8d70402d51487eb1f0b00">profiles_content()</a>, <a class="el" href="profiles_8php.html#a36f71405ad536228f8bb84a551b23f7e">profiles_init()</a>, <a class="el" href="hubloc_8php.html#ad3d0dcfcfcb347744f7617fe6f5de002">prune_hub_reinstalls()</a>, <a class="el" href="zot_8php.html#a083aec6c900d244e1bfc1406f9461465">public_recips()</a>, <a class="el" href="crypto_8php.html#a2a3fae7caca27f86d158eeaf69b6f287">pubrsatome()</a>, <a class="el" href="classRedMatrix_1_1RedDAV_1_1RedFile.html#a709ec1288d21ddf1353524435ab916f0">RedMatrix\RedDAV\RedFile\put()</a>, <a class="el" href="classdba__mysql.html#ac3fd60c278f400907322dac578754a99">dba_mysql\q()</a>, <a class="el" href="classdba__mysqli.html#a611c4de8d6d7512dffb83a38bb6701ec">dba_mysqli\q()</a>, <a class="el" href="classdba__postgres.html#a70352880231fba0b859f82cd5b290a9a">dba_postgres\q()</a>, <a class="el" href="Contact_8php.html#a7e3f5bef8ea1d2bf8434c9be36a2b713">random_profile()</a>, <a class="el" href="randprof_8php.html#abf5dba3c608b9304cbf68327cd31b090">randprof_init()</a>, <a class="el" href="include_2api_8php.html#aafa82b65a9f879a1a1197cfe8aaf3898">red_item_new()</a>, <a class="el" href="reddav_8php.html#a5df0d09893f2e65dc5cf6bbab6cfb266">RedCollectionData()</a>, <a class="el" href="reddav_8php.html#a9f531641dfb4e43cd88ac1a9ae7e2088">RedFileData()</a>, <a class="el" href="refimport_8php.html#a01a29630fa5e1ce6cd5e1fd75280747c">reflect_comment_store()</a>, <a class="el" href="refimport_8php.html#aa98de7d112e3a5b4b6956f108d04a41d">reflect_find_user()</a>, <a class="el" href="refimport_8php.html#ae9c56f779d1e0ac7bcb2a460129e7ae5">reflect_photo_callback()</a>, <a class="el" href="identity_8php.html#a47d6f53216f23a3484061793bef29854">remote_online_status()</a>, <a class="el" href="zot_8php.html#aad25a3fe0e1566121d6fb8222979bc10">remove_community_tag()</a>, <a class="el" href="hubloc_8php.html#a84c79b7be352f62d12fe4fa2c80fc6ea">remove_obsolete_hublocs()</a>, <a class="el" href="rpost_8php.html#a8190354d789000806d9879aea276728f">rpost_content()</a>, <a class="el" href="classphoto__driver.html#a5864fae7d8389372955a8e78cec527ac">photo_driver\save()</a>, <a class="el" href="include_2network_8php.html#a316f318167a039c89719afbd129a8f3c">scrape_feed()</a>, <a class="el" href="include_2network_8php.html#acb0bd7f5fe38ff1eaebeae3284525070">scrape_vcard()</a>, <a class="el" href="search__ac_8php.html#a14f90c83a3f2be095e9e2992a8d66138">search_ac_init()</a>, <a class="el" href="items_8php.html#aab9e0c58247427126de0699c729c3b6c">send_status_notifications()</a>, <a class="el" href="service__limits_8php.html#a653424aac63c5cd05ba70c3c77bf7f8a">service_limits_content()</a>, <a class="el" href="share_8php.html#afeb26046bdd02567ecd29ab5f188b249">share_init()</a>, <a class="el" href="bb2diaspora_8php.html#ab61b4f8c065e97b151411858bb2f209a">share_unshield()</a>, <a class="el" href="permissions_8php.html#aa8b7b102c653649d7a71b5a1c044d90d">site_default_perms()</a>, <a class="el" href="text_8php.html#a3d225b253bb9e0f2498c11647d927b0b">smilies()</a>, <a class="el" href="sources_8php.html#ac442ccef080ab95772d8929fcafcb4b7">sources_content()</a>, <a class="el" href="sslify_8php.html#a75b11e54a3d1fc83e7d4c0e8b4dab316">sslify_init()</a>, <a class="el" href="classphoto__driver.html#a642a8d0c4ad5f887c99c6af77cee287b">photo_driver\store()</a>, <a class="el" href="items_8php.html#a25221826fa4621f523c68483e3b6af26">store_diaspora_comment_sig()</a>, <a class="el" href="spam_8php.html#a05861201147b9a538d006f0269255cf9">string_splitter()</a>, <a class="el" href="text_8php.html#a8796f6a9ca592ecdce7b3afc3462aa13">stringify_array_elms()</a>, <a class="el" href="dir__fns_8php.html#aa666e7df6ca8c332f4081c9b66b4bdf6">sync_directories()</a>, <a class="el" href="zot_8php.html#ab15c04e7e5f44edf45ec50dd7d183254">sync_locations()</a>, <a class="el" href="items_8php.html#ab1bce4261bcf75ad62753b498a144d17">tag_deliver()</a>, <a class="el" href="taxonomy_8php.html#aaf90ba8b839d6459065f39a4f1109b8a">tagadelic()</a>, <a class="el" href="tagrm_8php.html#adfd4ea5b4d7fc6d9c9e042af5cd7d49a">tagrm_content()</a>, <a class="el" href="tagrm_8php.html#a1702f40aa53a2fa93deade1f609abe78">tagrm_post()</a>, <a class="el" href="admin_8php.html#ad4f74f33944a98b56d2c8c7601f124a4">theme_status()</a>, <a class="el" href="thing_8php.html#a24a35f1e64029a67fdbea94a776ae04b">thing_content()</a>, <a class="el" href="admin_8php.html#af81f081851791cd15e49e8ff6722dc27">toggle_theme()</a>, <a class="el" href="statistics__fns_8php.html#a82726229a961d3bd3d543005c61dd8e6">update_channels_active_halfyear_stat()</a>, <a class="el" href="statistics__fns_8php.html#ad2b7b595c039c4c2eb0d6cd57a393dfe">update_channels_active_monthly_stat()</a>, <a class="el" href="dir__fns_8php.html#a44062d4b471d1e83f92f6c184585aa13">update_directory_entry()</a>, <a class="el" href="zot_8php.html#a31aad56acf8ff8f2353e6ff8595544df">update_imported_item()</a>, <a class="el" href="account_8php.html#a754d7f53b3abc557b753c057dc4e021d">upgrade_bool_message()</a>, <a class="el" href="account_8php.html#a901657dd078e070516cf97285e0bada7">upgrade_message()</a>, <a class="el" href="text_8php.html#a6a3d80a6c6fb234fd0bac44203b828eb">valid_email()</a>, <a class="el" href="classRedMatrix_1_1RedDAV_1_1RedBasicAuth.html#a6ece02655b780469e59e204c5979a624">RedMatrix\RedDAV\RedBasicAuth\validateUserPass()</a>, <a class="el" href="webpages_8php.html#af3b7397d4abc153e3d2147740ee1a41d">webpages_content()</a>, <a class="el" href="setup_8php.html#aea1ebdda58ec938f4e7b31aa5c5f6b58">what_next()</a>, <a class="el" href="widgets_8php.html#add9b24d3304e529a7975e96122315554">widget_affinity()</a>, <a class="el" href="widgets_8php.html#a0e2f5179ed1a73b282dfda7270fcabb3">widget_bookmarkedchats()</a>, <a class="el" href="widgets_8php.html#a50b1410238100c8a94c06b0aa63ee3b8">widget_suggestedchats()</a>, <a class="el" href="widgets_8php.html#a0d404276fedc59f5038cf5c085028326">widget_suggestions()</a>, <a class="el" href="text_8php.html#a905c3895feb6f276df23f07f16f9bb52">xchan_query()</a>, <a class="el" href="text_8php.html#aaed4413ed8918838b517e3b2fafaea0d">xmlify()</a>, <a class="el" href="zfinger_8php.html#a8139b83a22ef98869adc10aa224027a0">zfinger_init()</a>, <a class="el" href="zot_8php.html#a084c581d534e7e3b759488b46602288f">zot_build_packet()</a>, <a class="el" href="zot_8php.html#ae26ce9f1ad74139193fb6319beac5fca">zot_encode_locations()</a>, <a class="el" href="zot_8php.html#a928f5643ca66ae9635d85aeb2be62e03">zot_process_response()</a>, <a class="el" href="zot_8php.html#a7ac30ff51274bf0b6d3eade37972145c">zot_refresh()</a>, <a class="el" href="zot_8php.html#a5bcdfef419b16075a0eca990956223dc">zot_register_hub()</a>, and <a class="el" href="zotfeed_8php.html#a24dfc23d366e7f840cf2847d0c1c8eac">zotfeed_init()</a>.</p>
</div>
</div>
diff --git a/doc/html/auth_8php.html b/doc/html/auth_8php.html
index eefab2c61..9145b5ef3 100644
--- a/doc/html/auth_8php.html
+++ b/doc/html/auth_8php.html
@@ -110,24 +110,38 @@ $(document).ready(function(){initNavTree('auth_8php.html','');});
<div class="title">auth.php File Reference</div> </div>
</div><!--header-->
<div class="contents">
+
+<p>Functions and inline functionality for authentication.
+<a href="#details">More...</a></p>
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="func-members"></a>
Functions</h2></td></tr>
<tr class="memitem:a2add3a1129ffa4d5515442a9d52a9b1a"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="auth_8php.html#a2add3a1129ffa4d5515442a9d52a9b1a">nuke_session</a> ()</td></tr>
+<tr class="memdesc:a2add3a1129ffa4d5515442a9d52a9b1a"><td class="mdescLeft">&#160;</td><td class="mdescRight">Resets the current session. <a href="#a2add3a1129ffa4d5515442a9d52a9b1a">More...</a><br/></td></tr>
<tr class="separator:a2add3a1129ffa4d5515442a9d52a9b1a"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a07bae0e623e2daa9ee2cd5a8aa294dee"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="auth_8php.html#a07bae0e623e2daa9ee2cd5a8aa294dee">account_verify_password</a> ($email, $pass)</td></tr>
+<tr class="memdesc:a07bae0e623e2daa9ee2cd5a8aa294dee"><td class="mdescLeft">&#160;</td><td class="mdescRight">Verify login credentials. <a href="#a07bae0e623e2daa9ee2cd5a8aa294dee">More...</a><br/></td></tr>
<tr class="separator:a07bae0e623e2daa9ee2cd5a8aa294dee"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:ab7be44ee051c0aa29847807cf2c5dd38"><td class="memItemLeft" align="right" valign="top"><a class="el" href="theme_2mytheme_2php_2default_8php.html#a3987f5547ceb7e36a210a66a06241a5a">if</a>((<a class="el" href="boot_8php.html#a01353c9abebc3544ea080ac161729632">x</a>($_POST,'auth-params'))&amp;&amp;$_POST['auth-params']=== <br class="typebreak"/>
-'<a class="el" href="boot_8php.html#aefecf8599036df7f1b95d6820e0e2fa4">login</a>')&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="auth_8php.html#ab7be44ee051c0aa29847807cf2c5dd38">match_openid</a> ($authid)</td></tr>
-<tr class="separator:ab7be44ee051c0aa29847807cf2c5dd38"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ae3ecb5f34f202c7f9a61c5d589f6c6e1"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="auth_8php.html#ae3ecb5f34f202c7f9a61c5d589f6c6e1">log_failed_login</a> ($errormsg)</td></tr>
+<tr class="memdesc:ae3ecb5f34f202c7f9a61c5d589f6c6e1"><td class="mdescLeft">&#160;</td><td class="mdescRight">Log failed logins to a separate auth log. <a href="#ae3ecb5f34f202c7f9a61c5d589f6c6e1">More...</a><br/></td></tr>
+<tr class="separator:ae3ecb5f34f202c7f9a61c5d589f6c6e1"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a69fa663e6baf65f80d1b114ad72615f2"><td class="memItemLeft" align="right" valign="top"><a class="el" href="theme_2mytheme_2php_2default_8php.html#a3987f5547ceb7e36a210a66a06241a5a">if</a>((<a class="el" href="boot_8php.html#ae97836b0547953be182a2334c9c91d3c">x</a>($_POST, 'auth-params'))&amp;&amp;$_POST['auth-params']=== <br class="typebreak"/>
+'<a class="el" href="boot_8php.html#aefecf8599036df7f1b95d6820e0e2fa4">login</a>')&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="auth_8php.html#a69fa663e6baf65f80d1b114ad72615f2">match_openid</a> ($authid)</td></tr>
+<tr class="memdesc:a69fa663e6baf65f80d1b114ad72615f2"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the channel_id for a given openid_identity. <a href="#a69fa663e6baf65f80d1b114ad72615f2">More...</a><br/></td></tr>
+<tr class="separator:a69fa663e6baf65f80d1b114ad72615f2"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="var-members"></a>
Variables</h2></td></tr>
-<tr class="memitem:a0950af7c2888ca1d4743fe5d0bff9ae5"><td class="memItemLeft" align="right" valign="top"><a class="el" href="theme_2mytheme_2php_2default_8php.html#a3987f5547ceb7e36a210a66a06241a5a">if</a>((isset($_SESSION))&amp;&amp;(<a class="el" href="boot_8php.html#a01353c9abebc3544ea080ac161729632">x</a>($_SESSION,'authenticated'))&amp;&amp;((!(<a class="el" href="boot_8php.html#a01353c9abebc3544ea080ac161729632">x</a>($_POST,'auth-params')))||($_POST['auth-params']!== <br class="typebreak"/>
-'<a class="el" href="boot_8php.html#aefecf8599036df7f1b95d6820e0e2fa4">login</a>')))&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="auth_8php.html#a0950af7c2888ca1d4743fe5d0bff9ae5">else</a></td></tr>
-<tr class="separator:a0950af7c2888ca1d4743fe5d0bff9ae5"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a6f60fb54f60cd36c2430d6615a7b4f3f"><td class="memItemLeft" align="right" valign="top"><a class="el" href="theme_2mytheme_2php_2default_8php.html#a3987f5547ceb7e36a210a66a06241a5a">if</a>((isset($_SESSION))&amp;&amp;(<a class="el" href="boot_8php.html#ae97836b0547953be182a2334c9c91d3c">x</a>($_SESSION, <br class="typebreak"/>
+'authenticated'))&amp;&amp;((!(<a class="el" href="boot_8php.html#ae97836b0547953be182a2334c9c91d3c">x</a>($_POST, <br class="typebreak"/>
+'auth-params')))||($_POST['auth-params']!== <br class="typebreak"/>
+'<a class="el" href="boot_8php.html#aefecf8599036df7f1b95d6820e0e2fa4">login</a>')))&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="auth_8php.html#a6f60fb54f60cd36c2430d6615a7b4f3f">else</a></td></tr>
+<tr class="separator:a6f60fb54f60cd36c2430d6615a7b4f3f"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
-<h2 class="groupheader">Function Documentation</h2>
+<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
+<div class="textblock"><p>Functions and inline functionality for authentication. </p>
+<p>This file provides some functions for authentication handling and inline functionality. Look for auth parameters or re-validate an existing session also handles logout. Also provides a function for OpenID identiy matching. </p>
+</div><h2 class="groupheader">Function Documentation</h2>
<a class="anchor" id="a07bae0e623e2daa9ee2cd5a8aa294dee"></a>
<div class="memitem">
<div class="memproto">
@@ -151,20 +165,56 @@ Variables</h2></td></tr>
</tr>
</table>
</div><div class="memdoc">
-<p>Verify login credentials</p>
-<p>Returns account record on success, null on failure </p>
+
+<p>Verify login credentials. </p>
+<p>If system <em>authlog</em> is set a log entry will be added for failed login attempts.</p>
+<dl class="params"><dt>Parameters</dt><dd>
+ <table class="params">
+ <tr><td class="paramtype">string</td><td class="paramname">$email</td><td>The email address to verify. </td></tr>
+ <tr><td class="paramtype">string</td><td class="paramname">$pass</td><td>The provided password to verify. </td></tr>
+ </table>
+ </dd>
+</dl>
+<dl class="section return"><dt>Returns</dt><dd>array|null Returns account record on success, null on failure. </dd></dl>
+
+<p>Referenced by <a class="el" href="include_2api_8php.html#afe534f826e4282b72d66e8cadca7bb73">api_login()</a>, <a class="el" href="removeaccount_8php.html#a26a3325292e932c59793430ab737126a">removeaccount_post()</a>, <a class="el" href="removeme_8php.html#a7be08738beca44bb98a79e01cdb2ee88">removeme_post()</a>, and <a class="el" href="classRedMatrix_1_1RedDAV_1_1RedBasicAuth.html#a6ece02655b780469e59e204c5979a624">RedMatrix\RedDAV\RedBasicAuth\validateUserPass()</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="ae3ecb5f34f202c7f9a61c5d589f6c6e1"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">log_failed_login </td>
+ <td>(</td>
+ <td class="paramtype">&#160;</td>
+ <td class="paramname"><em>$errormsg</em></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p>Log failed logins to a separate auth log. </p>
+<p>Can be used to reduce overhead for server side intrusion prevention, like parse the authlog file with something like fail2ban, OSSEC, etc.</p>
+<dl class="params"><dt>Parameters</dt><dd>
+ <table class="params">
+ <tr><td class="paramtype">string</td><td class="paramname">$errormsg</td><td>Error message to display for failed login. </td></tr>
+ </table>
+ </dd>
+</dl>
<p>A plugin indicates successful login by setting 'authenticated' to non-zero value and returning a user record Plugins should never set 'authenticated' except to indicate success - as hooks may be chained and later plugins should not interfere with an earlier one that succeeded.</p>
-<p>Referenced by <a class="el" href="include_2api_8php.html#afe534f826e4282b72d66e8cadca7bb73">api_login()</a>, <a class="el" href="removeme_8php.html#a7be08738beca44bb98a79e01cdb2ee88">removeme_post()</a>, and <a class="el" href="classRedBasicAuth.html#a8dfd9a0953f8884723b421b7c1acf79b">RedBasicAuth\validateUserPass()</a>.</p>
+<p>Referenced by <a class="el" href="auth_8php.html#a07bae0e623e2daa9ee2cd5a8aa294dee">account_verify_password()</a>, and <a class="el" href="classRedMatrix_1_1RedDAV_1_1RedBasicAuth.html#a6ece02655b780469e59e204c5979a624">RedMatrix\RedDAV\RedBasicAuth\validateUserPass()</a>.</p>
</div>
</div>
-<a class="anchor" id="ab7be44ee051c0aa29847807cf2c5dd38"></a>
+<a class="anchor" id="a69fa663e6baf65f80d1b114ad72615f2"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
- <td class="memname"><a class="el" href="theme_2mytheme_2php_2default_8php.html#a3987f5547ceb7e36a210a66a06241a5a">if</a> ((<a class="el" href="boot_8php.html#a01353c9abebc3544ea080ac161729632">x</a>($_POST,'auth-params'))&amp;&amp;$_POST['auth-params']=== '<a class="el" href="boot_8php.html#aefecf8599036df7f1b95d6820e0e2fa4">login</a>') match_openid </td>
+ <td class="memname"><a class="el" href="theme_2mytheme_2php_2default_8php.html#a3987f5547ceb7e36a210a66a06241a5a">if</a> ((<a class="el" href="boot_8php.html#ae97836b0547953be182a2334c9c91d3c">x</a>($_POST, 'auth-params'))&amp;&amp;$_POST['auth-params']=== '<a class="el" href="boot_8php.html#aefecf8599036df7f1b95d6820e0e2fa4">login</a>') match_openid </td>
<td>(</td>
<td class="paramtype">&#160;</td>
<td class="paramname"><em>$authid</em></td><td>)</td>
@@ -173,6 +223,17 @@ Variables</h2></td></tr>
</table>
</div><div class="memdoc">
+<p>Returns the channel_id for a given openid_identity. </p>
+<p>Queries the values from pconfig configuration for the given openid_identity and returns the corresponding channel_id.</p>
+<p>How do we prevent that an OpenID identity is used more than once?</p>
+<dl class="params"><dt>Parameters</dt><dd>
+ <table class="params">
+ <tr><td class="paramtype">string</td><td class="paramname">$authid</td><td>The given openid_identity </td></tr>
+ </table>
+ </dd>
+</dl>
+<dl class="section return"><dt>Returns</dt><dd>int|bool Return channel_id from pconfig or false. </dd></dl>
+
<p>Referenced by <a class="el" href="openid_8php.html#a9a13827dbcf61ae4e45f0b6b33a88f43">openid_content()</a>.</p>
</div>
@@ -190,30 +251,33 @@ Variables</h2></td></tr>
</table>
</div><div class="memdoc">
+<p>Resets the current session. </p>
+<dl class="section return"><dt>Returns</dt><dd>void </dd></dl>
+
<p>Referenced by <a class="el" href="include_2api_8php.html#a2e94eab9d6c164bfef7a1b2ab87b339b">api_account_logout()</a>.</p>
</div>
</div>
<h2 class="groupheader">Variable Documentation</h2>
-<a class="anchor" id="a0950af7c2888ca1d4743fe5d0bff9ae5"></a>
+<a class="anchor" id="a6f60fb54f60cd36c2430d6615a7b4f3f"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
- <td class="memname"><a class="el" href="theme_2mytheme_2php_2default_8php.html#a3987f5547ceb7e36a210a66a06241a5a">if</a> ((isset($_SESSION))&amp;&amp;(<a class="el" href="boot_8php.html#a01353c9abebc3544ea080ac161729632">x</a>($_SESSION,'authenticated'))&amp;&amp;((!(<a class="el" href="boot_8php.html#a01353c9abebc3544ea080ac161729632">x</a>($_POST,'auth-params')))||($_POST['auth-params']!== '<a class="el" href="boot_8php.html#aefecf8599036df7f1b95d6820e0e2fa4">login</a>'))) else</td>
+ <td class="memname"><a class="el" href="theme_2mytheme_2php_2default_8php.html#a3987f5547ceb7e36a210a66a06241a5a">if</a> ((isset($_SESSION))&amp;&amp;(<a class="el" href="boot_8php.html#ae97836b0547953be182a2334c9c91d3c">x</a>($_SESSION, 'authenticated'))&amp;&amp;((!(<a class="el" href="boot_8php.html#ae97836b0547953be182a2334c9c91d3c">x</a>($_POST, 'auth-params')))||($_POST['auth-params']!== '<a class="el" href="boot_8php.html#aefecf8599036df7f1b95d6820e0e2fa4">login</a>'))) else</td>
</tr>
</table>
</div><div class="memdoc">
<b>Initial value:</b><div class="fragment"><div class="line">{</div>
<div class="line"></div>
<div class="line"> <span class="keywordflow">if</span>(isset($_SESSION)) {</div>
-<div class="line"> <a class="code" href="auth_8php.html#a2add3a1129ffa4d5515442a9d52a9b1a">nuke_session</a>();</div>
+<div class="line"> <a class="code" href="auth_8php.html#a2add3a1129ffa4d5515442a9d52a9b1a" title="Resets the current session.">nuke_session</a>();</div>
<div class="line"> }</div>
<div class="line"></div>
<div class="line"> </div>
<div class="line"></div>
-<div class="line"> <span class="keywordflow">if</span>((<a class="code" href="boot_8php.html#a01353c9abebc3544ea080ac161729632">x</a>($_POST,<span class="stringliteral">&#39;password&#39;</span>)) &amp;&amp; strlen($_POST[<span class="stringliteral">&#39;password&#39;</span>]))</div>
-<div class="line"> $encrypted = hash(<span class="stringliteral">&#39;whirlpool&#39;</span>,trim($_POST[<span class="stringliteral">&#39;password&#39;</span>]))</div>
+<div class="line"> <span class="keywordflow">if</span>((<a class="code" href="boot_8php.html#ae97836b0547953be182a2334c9c91d3c" title="Multi-purpose function to check variable state.">x</a>($_POST, <span class="stringliteral">&#39;password&#39;</span>)) &amp;&amp; strlen($_POST[<span class="stringliteral">&#39;password&#39;</span>]))</div>
+<div class="line"> $encrypted = hash(<span class="stringliteral">&#39;whirlpool&#39;</span>, trim($_POST[<span class="stringliteral">&#39;password&#39;</span>]))</div>
</div><!-- fragment --><p>Inline - not a function look for auth parameters or re-validate an existing session also handles logout </p>
</div>
diff --git a/doc/html/auth_8php.js b/doc/html/auth_8php.js
index 75241485b..b4ab0b9b1 100644
--- a/doc/html/auth_8php.js
+++ b/doc/html/auth_8php.js
@@ -1,7 +1,8 @@
var auth_8php =
[
[ "account_verify_password", "auth_8php.html#a07bae0e623e2daa9ee2cd5a8aa294dee", null ],
- [ "match_openid", "auth_8php.html#ab7be44ee051c0aa29847807cf2c5dd38", null ],
+ [ "log_failed_login", "auth_8php.html#ae3ecb5f34f202c7f9a61c5d589f6c6e1", null ],
+ [ "match_openid", "auth_8php.html#a69fa663e6baf65f80d1b114ad72615f2", null ],
[ "nuke_session", "auth_8php.html#a2add3a1129ffa4d5515442a9d52a9b1a", null ],
- [ "else", "auth_8php.html#a0950af7c2888ca1d4743fe5d0bff9ae5", null ]
+ [ "else", "auth_8php.html#a6f60fb54f60cd36c2430d6615a7b4f3f", null ]
]; \ No newline at end of file
diff --git a/doc/html/bb2diaspora_8php.html b/doc/html/bb2diaspora_8php.html
index 39a4f5db9..b3efd66e6 100644
--- a/doc/html/bb2diaspora_8php.html
+++ b/doc/html/bb2diaspora_8php.html
@@ -116,6 +116,12 @@ Functions</h2></td></tr>
<tr class="separator:a4c2f8f11b29a06809d9b07782215b1b2"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ad0abe1a7ee50aa0736a233df0a422eba"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="bb2diaspora_8php.html#ad0abe1a7ee50aa0736a233df0a422eba">bb_tag_preg_replace</a> ($pattern, $replace, $name, $s)</td></tr>
<tr class="separator:ad0abe1a7ee50aa0736a233df0a422eba"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ad033be99e87a2aaa05e569c68f30792d"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="bb2diaspora_8php.html#ad033be99e87a2aaa05e569c68f30792d">share_shield</a> ($m)</td></tr>
+<tr class="separator:ad033be99e87a2aaa05e569c68f30792d"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ab61b4f8c065e97b151411858bb2f209a"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="bb2diaspora_8php.html#ab61b4f8c065e97b151411858bb2f209a">share_unshield</a> ($m)</td></tr>
+<tr class="separator:ab61b4f8c065e97b151411858bb2f209a"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a4a27604f0745f1efda672966aaca9a3b"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="bb2diaspora_8php.html#a4a27604f0745f1efda672966aaca9a3b">diaspora_mention_callback</a> ($matches)</td></tr>
+<tr class="separator:a4a27604f0745f1efda672966aaca9a3b"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ac9061ee10fcfcdac69566b649614e625"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="bb2diaspora_8php.html#ac9061ee10fcfcdac69566b649614e625">diaspora2bb</a> ($s, $use_zrl=false)</td></tr>
<tr class="separator:ac9061ee10fcfcdac69566b649614e625"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a180b0e3a7d702998be19e3c3b44b0e93"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="bb2diaspora_8php.html#a180b0e3a7d702998be19e3c3b44b0e93">stripdcode_br_cb</a> ($s)</td></tr>
@@ -124,6 +130,12 @@ Functions</h2></td></tr>
<tr class="separator:adc92ccda5f85ed27e64fcc17712c89cc"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a8b96bd45884fa1c40b942939354197d4"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="bb2diaspora_8php.html#a8b96bd45884fa1c40b942939354197d4">diaspora_ol</a> ($s)</td></tr>
<tr class="separator:a8b96bd45884fa1c40b942939354197d4"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a5258d2f1addeb0a2a6b54c4f9e7d0f34"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="bb2diaspora_8php.html#a5258d2f1addeb0a2a6b54c4f9e7d0f34">bb2dmention_callback</a> ($match)</td></tr>
+<tr class="separator:a5258d2f1addeb0a2a6b54c4f9e7d0f34"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:aab32042f8bd63552d3fadeeae9eab083"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="bb2diaspora_8php.html#aab32042f8bd63552d3fadeeae9eab083">bb2diaspora_itemwallwall</a> (&amp;$item)</td></tr>
+<tr class="separator:aab32042f8bd63552d3fadeeae9eab083"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ab27761069ea1275f0fc4c543099c5519"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="bb2diaspora_8php.html#ab27761069ea1275f0fc4c543099c5519">bb2diaspora_itembody</a> ($item, $force_update=false)</td></tr>
+<tr class="separator:ab27761069ea1275f0fc4c543099c5519"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a4f10e0876b27373c762bc1abbe745f5c"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="bb2diaspora_8php.html#a4f10e0876b27373c762bc1abbe745f5c">bb2diaspora</a> ($Text, $preserve_nl=false, $fordiaspora=true)</td></tr>
<tr class="separator:a4f10e0876b27373c762bc1abbe745f5c"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a599428bceb6f6d82a6a78cb66811f747"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="bb2diaspora_8php.html#a599428bceb6f6d82a6a78cb66811f747">unescape_underscores_in_links</a> ($m)</td></tr>
@@ -163,7 +175,69 @@ Functions</h2></td></tr>
</div><div class="memdoc">
<p>Transform #tags, strip off the [url] and replace spaces with underscore</p>
-<p>Referenced by <a class="el" href="bb2diaspora_8php.html#a29a2ad41f5826f3975fa9a49934ff863">format_event_diaspora()</a>.</p>
+<p>Referenced by <a class="el" href="bb2diaspora_8php.html#ab27761069ea1275f0fc4c543099c5519">bb2diaspora_itembody()</a>, <a class="el" href="diaspora_8php.html#aeb2bb78f620dbf51d9335e6eb7444f2c">diaspora_send_mail()</a>, and <a class="el" href="bb2diaspora_8php.html#a29a2ad41f5826f3975fa9a49934ff863">format_event_diaspora()</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="ab27761069ea1275f0fc4c543099c5519"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">bb2diaspora_itembody </td>
+ <td>(</td>
+ <td class="paramtype">&#160;</td>
+ <td class="paramname"><em>$item</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">&#160;</td>
+ <td class="paramname"><em>$force_update</em> = <code>false</code>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p>Referenced by <a class="el" href="diaspora_8php.html#af4698b165766f83d89ec1ea964bc92cc">diaspora_send_followup()</a>, <a class="el" href="diaspora_8php.html#a0b3628a5e53332c3d3196b689fe2b94d">diaspora_send_relay()</a>, <a class="el" href="diaspora_8php.html#a33ae0c4606a7df4d801c05507d87f668">diaspora_send_status()</a>, <a class="el" href="p_8php.html#af9d5530ca0b3dc9409cf591c39e2480e">p_init()</a>, and <a class="el" href="items_8php.html#a25221826fa4621f523c68483e3b6af26">store_diaspora_comment_sig()</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="aab32042f8bd63552d3fadeeae9eab083"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">bb2diaspora_itemwallwall </td>
+ <td>(</td>
+ <td class="paramtype">&amp;&#160;</td>
+ <td class="paramname"><em>$item</em></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p>Referenced by <a class="el" href="bb2diaspora_8php.html#ab27761069ea1275f0fc4c543099c5519">bb2diaspora_itembody()</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a5258d2f1addeb0a2a6b54c4f9e7d0f34"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">bb2dmention_callback </td>
+ <td>(</td>
+ <td class="paramtype">&#160;</td>
+ <td class="paramname"><em>$match</em></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
</div>
</div>
@@ -231,7 +305,23 @@ Functions</h2></td></tr>
</table>
</div><div class="memdoc">
-<p>Referenced by <a class="el" href="item_8php.html#a693cd09805755ab85bbb5ecae69a48c3">item_post()</a>.</p>
+<p>Referenced by <a class="el" href="diaspora_8php.html#a0fb2abe304aae19efc040a5e6b917829">diaspora_comment()</a>, <a class="el" href="diaspora_8php.html#adef30b6fac948baedcc7194d5d155b5f">diaspora_conversation()</a>, <a class="el" href="diaspora_8php.html#a7cff2f8f11044c1b3a360f20e1bbee46">diaspora_message()</a>, <a class="el" href="diaspora_8php.html#a20b968d64ef26afe5cb0cc75a7570a31">diaspora_post()</a>, <a class="el" href="diaspora_8php.html#a2bf43f6b5890897f425ef4325d34b007">diaspora_reshare()</a>, and <a class="el" href="item_8php.html#a693cd09805755ab85bbb5ecae69a48c3">item_post()</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a4a27604f0745f1efda672966aaca9a3b"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">diaspora_mention_callback </td>
+ <td>(</td>
+ <td class="paramtype">&#160;</td>
+ <td class="paramname"><em>$matches</em></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
</div>
</div>
@@ -317,6 +407,38 @@ Functions</h2></td></tr>
</div>
</div>
+<a class="anchor" id="ad033be99e87a2aaa05e569c68f30792d"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">share_shield </td>
+ <td>(</td>
+ <td class="paramtype">&#160;</td>
+ <td class="paramname"><em>$m</em></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+</div>
+</div>
+<a class="anchor" id="ab61b4f8c065e97b151411858bb2f209a"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">share_unshield </td>
+ <td>(</td>
+ <td class="paramtype">&#160;</td>
+ <td class="paramname"><em>$m</em></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+</div>
+</div>
<a class="anchor" id="a180b0e3a7d702998be19e3c3b44b0e93"></a>
<div class="memitem">
<div class="memproto">
diff --git a/doc/html/bb2diaspora_8php.js b/doc/html/bb2diaspora_8php.js
index 39e307383..2f70d373c 100644
--- a/doc/html/bb2diaspora_8php.js
+++ b/doc/html/bb2diaspora_8php.js
@@ -1,12 +1,18 @@
var bb2diaspora_8php =
[
[ "bb2diaspora", "bb2diaspora_8php.html#a4f10e0876b27373c762bc1abbe745f5c", null ],
+ [ "bb2diaspora_itembody", "bb2diaspora_8php.html#ab27761069ea1275f0fc4c543099c5519", null ],
+ [ "bb2diaspora_itemwallwall", "bb2diaspora_8php.html#aab32042f8bd63552d3fadeeae9eab083", null ],
+ [ "bb2dmention_callback", "bb2diaspora_8php.html#a5258d2f1addeb0a2a6b54c4f9e7d0f34", null ],
[ "bb_tag_preg_replace", "bb2diaspora_8php.html#ad0abe1a7ee50aa0736a233df0a422eba", null ],
[ "diaspora2bb", "bb2diaspora_8php.html#ac9061ee10fcfcdac69566b649614e625", null ],
+ [ "diaspora_mention_callback", "bb2diaspora_8php.html#a4a27604f0745f1efda672966aaca9a3b", null ],
[ "diaspora_ol", "bb2diaspora_8php.html#a8b96bd45884fa1c40b942939354197d4", null ],
[ "diaspora_ul", "bb2diaspora_8php.html#adc92ccda5f85ed27e64fcc17712c89cc", null ],
[ "format_event_diaspora", "bb2diaspora_8php.html#a29a2ad41f5826f3975fa9a49934ff863", null ],
[ "get_bb_tag_pos", "bb2diaspora_8php.html#a4c2f8f11b29a06809d9b07782215b1b2", null ],
+ [ "share_shield", "bb2diaspora_8php.html#ad033be99e87a2aaa05e569c68f30792d", null ],
+ [ "share_unshield", "bb2diaspora_8php.html#ab61b4f8c065e97b151411858bb2f209a", null ],
[ "stripdcode_br_cb", "bb2diaspora_8php.html#a180b0e3a7d702998be19e3c3b44b0e93", null ],
[ "unescape_underscores_in_links", "bb2diaspora_8php.html#a599428bceb6f6d82a6a78cb66811f747", null ]
]; \ No newline at end of file
diff --git a/doc/html/bbcode_8php.html b/doc/html/bbcode_8php.html
index 0a8e77351..4eaf2b009 100644
--- a/doc/html/bbcode_8php.html
+++ b/doc/html/bbcode_8php.html
@@ -127,6 +127,8 @@ Functions</h2></td></tr>
<tr class="separator:a851f5aafefe52474201b83f9fd65931f"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:abb02f1044ff1c635d12af690d0f2cfa2"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="bbcode_8php.html#abb02f1044ff1c635d12af690d0f2cfa2">bb_parse_app</a> ($match)</td></tr>
<tr class="separator:abb02f1044ff1c635d12af690d0f2cfa2"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:aa73fb62e7be1fa5fce4ad5f3d4487fc9"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="bbcode_8php.html#aa73fb62e7be1fa5fce4ad5f3d4487fc9">bb_parse_element</a> ($match)</td></tr>
+<tr class="separator:aa73fb62e7be1fa5fce4ad5f3d4487fc9"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a98d0eecc620c19561639f06cfbe8e74c"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="bbcode_8php.html#a98d0eecc620c19561639f06cfbe8e74c">bb_qr</a> ($match)</td></tr>
<tr class="separator:a98d0eecc620c19561639f06cfbe8e74c"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a1c69e021d5e0aef97d6966bf3169c86a"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="bbcode_8php.html#a1c69e021d5e0aef97d6966bf3169c86a">bb_ShareAttributes</a> ($match)</td></tr>
@@ -139,6 +141,10 @@ Functions</h2></td></tr>
<tr class="separator:a2be26414a367118143cc89e2d58e7377"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a5165a5221a52cf1bc1d7812ebd2069c7"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="bbcode_8php.html#a5165a5221a52cf1bc1d7812ebd2069c7">rpost_callback</a> ($match)</td></tr>
<tr class="separator:a5165a5221a52cf1bc1d7812ebd2069c7"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a02d5f2434e7bb5cf683e52a9b4787f24"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="bbcode_8php.html#a02d5f2434e7bb5cf683e52a9b4787f24">bb_map_coords</a> ($match)</td></tr>
+<tr class="separator:a02d5f2434e7bb5cf683e52a9b4787f24"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a7cb403fd1c36d7376c2f3932a1ceb54d"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="bbcode_8php.html#a7cb403fd1c36d7376c2f3932a1ceb54d">bb_map_location</a> ($match)</td></tr>
+<tr class="separator:a7cb403fd1c36d7376c2f3932a1ceb54d"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a3a989cbf308a32468d171d83e9c51d1e"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="bbcode_8php.html#a3a989cbf308a32468d171d83e9c51d1e">bb_sanitize_style</a> ($input)</td></tr>
<tr class="separator:a3a989cbf308a32468d171d83e9c51d1e"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a009f61aaf78771737ed0765c8463911b"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="bbcode_8php.html#a009f61aaf78771737ed0765c8463911b">bbcode</a> ($Text, $preserve_nl=false, $<a class="el" href="bbcode_8php.html#a55b0cb6973f1ec731de0e726bcc0efa7">tryoembed</a>=true)</td></tr>
@@ -161,6 +167,38 @@ Functions</h2></td></tr>
</div>
</div>
+<a class="anchor" id="a02d5f2434e7bb5cf683e52a9b4787f24"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">bb_map_coords </td>
+ <td>(</td>
+ <td class="paramtype">&#160;</td>
+ <td class="paramname"><em>$match</em></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+</div>
+</div>
+<a class="anchor" id="a7cb403fd1c36d7376c2f3932a1ceb54d"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">bb_map_location </td>
+ <td>(</td>
+ <td class="paramtype">&#160;</td>
+ <td class="paramname"><em>$match</em></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+</div>
+</div>
<a class="anchor" id="abb02f1044ff1c635d12af690d0f2cfa2"></a>
<div class="memitem">
<div class="memproto">
@@ -193,6 +231,22 @@ Functions</h2></td></tr>
</div>
</div>
+<a class="anchor" id="aa73fb62e7be1fa5fce4ad5f3d4487fc9"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">bb_parse_element </td>
+ <td>(</td>
+ <td class="paramtype">&#160;</td>
+ <td class="paramname"><em>$match</em></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+</div>
+</div>
<a class="anchor" id="a98d0eecc620c19561639f06cfbe8e74c"></a>
<div class="memitem">
<div class="memproto">
@@ -319,7 +373,7 @@ Functions</h2></td></tr>
</table>
</div><div class="memdoc">
-<p>Referenced by <a class="el" href="identity_8php.html#aa870d2c1f558cfd52bef05bc124e8fa4">advanced_profile()</a>, <a class="el" href="bb2diaspora_8php.html#a4f10e0876b27373c762bc1abbe745f5c">bb2diaspora()</a>, <a class="el" href="chatsvc_8php.html#a7032784215e1f6747cf385a6598770f9">chatsvc_content()</a>, <a class="el" href="items_8php.html#aa9e99613d38a97b39c8cf5449699c2ee">construct_activity_object()</a>, <a class="el" href="items_8php.html#aa579bc4445d60098b1410961ca8e96b7">construct_activity_target()</a>, <a class="el" href="dirprofile_8php.html#a3e1d30d3d93863ff5615f2df4ac7f052">dirprofile_init()</a>, <a class="el" href="events_8php.html#a1d293fb217ae6bc9e3858c4b32e363ec">events_content()</a>, <a class="el" href="event_8php.html#a2ac9f1b08de03250ecd794f705781d17">format_event_html()</a>, <a class="el" href="include_2notify_8php.html#a0e61728e487df50c72e6434f911a57d3">format_notification()</a>, <a class="el" href="identity_8php.html#ae381db3d43f8e7c1da8b15d14ecf5312">get_events()</a>, <a class="el" href="help_8php.html#af055e15f600ffa6fbca9386fdf715224">help_content()</a>, <a class="el" href="mail_8php.html#a3c7c485fc69f92371e8b20936040eca1">mail_content()</a>, <a class="el" href="include_2menu_8php.html#a03a5deed3908543581c074ce333e9d6a">menu_render()</a>, <a class="el" href="mod_2message_8php.html#ac72dfed3ce08fcb331d66b37edc6e15f">message_content()</a>, <a class="el" href="enotify_8php.html#a3e9a9355b243777c488d2a9883908dfc">notification()</a>, <a class="el" href="notifications_8php.html#aadd0b5525bd8c283a5d8a37982bbfe62">notifications_content()</a>, <a class="el" href="mod_2notify_8php.html#acdf3851688ebd6d6a575eb84ef9febe3">notify_content()</a>, <a class="el" href="ping_8php.html#a77217b1b190b4c5d8770867b45f0c0a1">ping_init()</a>, <a class="el" href="siteinfo_8php.html#a70c09bfb6dd1c86a125a35f62ed53656">siteinfo_content()</a>, and <a class="el" href="tagrm_8php.html#adfd4ea5b4d7fc6d9c9e042af5cd7d49a">tagrm_content()</a>.</p>
+<p>Referenced by <a class="el" href="identity_8php.html#aa870d2c1f558cfd52bef05bc124e8fa4">advanced_profile()</a>, <a class="el" href="bb2diaspora_8php.html#a4f10e0876b27373c762bc1abbe745f5c">bb2diaspora()</a>, <a class="el" href="chatsvc_8php.html#a7032784215e1f6747cf385a6598770f9">chatsvc_content()</a>, <a class="el" href="items_8php.html#aa9e99613d38a97b39c8cf5449699c2ee">construct_activity_object()</a>, <a class="el" href="items_8php.html#aa579bc4445d60098b1410961ca8e96b7">construct_activity_target()</a>, <a class="el" href="mod_2directory_8php.html#aac79396570d759da2efac24fcedf5b44">directory_content()</a>, <a class="el" href="events_8php.html#a1d293fb217ae6bc9e3858c4b32e363ec">events_content()</a>, <a class="el" href="event_8php.html#a2ac9f1b08de03250ecd794f705781d17">format_event_html()</a>, <a class="el" href="event_8php.html#a05073cd4ab837bd4a0149e8ed23ce688">format_ical_text()</a>, <a class="el" href="include_2notify_8php.html#a0e61728e487df50c72e6434f911a57d3">format_notification()</a>, <a class="el" href="identity_8php.html#ae381db3d43f8e7c1da8b15d14ecf5312">get_events()</a>, <a class="el" href="help_8php.html#af055e15f600ffa6fbca9386fdf715224">help_content()</a>, <a class="el" href="mail_8php.html#a3c7c485fc69f92371e8b20936040eca1">mail_content()</a>, <a class="el" href="include_2menu_8php.html#a03a5deed3908543581c074ce333e9d6a">menu_render()</a>, <a class="el" href="mod_2message_8php.html#ac72dfed3ce08fcb331d66b37edc6e15f">message_content()</a>, <a class="el" href="enotify_8php.html#a3e9a9355b243777c488d2a9883908dfc">notification()</a>, <a class="el" href="notifications_8php.html#aadd0b5525bd8c283a5d8a37982bbfe62">notifications_content()</a>, <a class="el" href="mod_2notify_8php.html#acdf3851688ebd6d6a575eb84ef9febe3">notify_content()</a>, <a class="el" href="ping_8php.html#a77217b1b190b4c5d8770867b45f0c0a1">ping_init()</a>, <a class="el" href="help_8php.html#a06b2a51aaabed99e53a9b639047c4ce4">preg_callback_help_include()</a>, <a class="el" href="register_8php.html#a0e91f57f111407ea8d3223a05022bb2a">register_content()</a>, <a class="el" href="siteinfo_8php.html#a70c09bfb6dd1c86a125a35f62ed53656">siteinfo_content()</a>, and <a class="el" href="tagrm_8php.html#adfd4ea5b4d7fc6d9c9e042af5cd7d49a">tagrm_content()</a>.</p>
</div>
</div>
diff --git a/doc/html/bbcode_8php.js b/doc/html/bbcode_8php.js
index 816f65396..ad5bce44c 100644
--- a/doc/html/bbcode_8php.js
+++ b/doc/html/bbcode_8php.js
@@ -1,8 +1,11 @@
var bbcode_8php =
[
[ "bb_location", "bbcode_8php.html#a3435c82a6c7693557800cdeb6848d0bd", null ],
+ [ "bb_map_coords", "bbcode_8php.html#a02d5f2434e7bb5cf683e52a9b4787f24", null ],
+ [ "bb_map_location", "bbcode_8php.html#a7cb403fd1c36d7376c2f3932a1ceb54d", null ],
[ "bb_parse_app", "bbcode_8php.html#abb02f1044ff1c635d12af690d0f2cfa2", null ],
[ "bb_parse_crypt", "bbcode_8php.html#a851f5aafefe52474201b83f9fd65931f", null ],
+ [ "bb_parse_element", "bbcode_8php.html#aa73fb62e7be1fa5fce4ad5f3d4487fc9", null ],
[ "bb_qr", "bbcode_8php.html#a98d0eecc620c19561639f06cfbe8e74c", null ],
[ "bb_sanitize_style", "bbcode_8php.html#a3a989cbf308a32468d171d83e9c51d1e", null ],
[ "bb_ShareAttributes", "bbcode_8php.html#a1c69e021d5e0aef97d6966bf3169c86a", null ],
diff --git a/doc/html/blocks_8php.html b/doc/html/blocks_8php.html
index 8993de9ed..d6ab862e3 100644
--- a/doc/html/blocks_8php.html
+++ b/doc/html/blocks_8php.html
@@ -112,6 +112,8 @@ $(document).ready(function(){initNavTree('blocks_8php.html','');});
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="func-members"></a>
Functions</h2></td></tr>
+<tr class="memitem:aebe88302181883d2b17d6e98a1aaebe9"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="blocks_8php.html#aebe88302181883d2b17d6e98a1aaebe9">blocks_init</a> (&amp;$a)</td></tr>
+<tr class="separator:aebe88302181883d2b17d6e98a1aaebe9"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a2531a8fd51db3cecb2eb20c002c66e12"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="blocks_8php.html#a2531a8fd51db3cecb2eb20c002c66e12">blocks_content</a> (&amp;$a)</td></tr>
<tr class="separator:a2531a8fd51db3cecb2eb20c002c66e12"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
@@ -132,6 +134,22 @@ Functions</h2></td></tr>
</div>
</div>
+<a class="anchor" id="aebe88302181883d2b17d6e98a1aaebe9"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">blocks_init </td>
+ <td>(</td>
+ <td class="paramtype">&amp;&#160;</td>
+ <td class="paramname"><em>$a</em></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+</div>
+</div>
</div><!-- contents -->
</div><!-- doc-content -->
diff --git a/doc/html/blocks_8php.js b/doc/html/blocks_8php.js
index b2123aa00..c10da1ce2 100644
--- a/doc/html/blocks_8php.js
+++ b/doc/html/blocks_8php.js
@@ -1,4 +1,5 @@
var blocks_8php =
[
- [ "blocks_content", "blocks_8php.html#a2531a8fd51db3cecb2eb20c002c66e12", null ]
+ [ "blocks_content", "blocks_8php.html#a2531a8fd51db3cecb2eb20c002c66e12", null ],
+ [ "blocks_init", "blocks_8php.html#aebe88302181883d2b17d6e98a1aaebe9", null ]
]; \ No newline at end of file
diff --git a/doc/html/boot_8php.html b/doc/html/boot_8php.html
index eef11c089..96d0dc31f 100644
--- a/doc/html/boot_8php.html
+++ b/doc/html/boot_8php.html
@@ -115,6 +115,7 @@ $(document).ready(function(){initNavTree('boot_8php.html','');});
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="nested-classes"></a>
Classes</h2></td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classApp.html">App</a></td></tr>
+<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">Our main application structure for the life of this page. <a href="classApp.html#details">More...</a><br/></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="func-members"></a>
@@ -122,9 +123,11 @@ Functions</h2></td></tr>
<tr class="memitem:aca47505b8732177f52bb2d647eb2741c"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="boot_8php.html#aca47505b8732177f52bb2d647eb2741c">startup</a> ()</td></tr>
<tr class="separator:aca47505b8732177f52bb2d647eb2741c"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a0e6db7e365f2b041a828b93786f694bc"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="boot_8php.html#a0e6db7e365f2b041a828b93786f694bc">get_app</a> ()</td></tr>
+<tr class="memdesc:a0e6db7e365f2b041a828b93786f694bc"><td class="mdescLeft">&#160;</td><td class="mdescRight">Retrieve the <a class="el" href="classApp.html" title="Our main application structure for the life of this page.">App</a> structure. <a href="#a0e6db7e365f2b041a828b93786f694bc">More...</a><br/></td></tr>
<tr class="separator:a0e6db7e365f2b041a828b93786f694bc"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a01353c9abebc3544ea080ac161729632"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="boot_8php.html#a01353c9abebc3544ea080ac161729632">x</a> ($s, $k=NULL)</td></tr>
-<tr class="separator:a01353c9abebc3544ea080ac161729632"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ae97836b0547953be182a2334c9c91d3c"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="boot_8php.html#ae97836b0547953be182a2334c9c91d3c">x</a> ($s, $k=null)</td></tr>
+<tr class="memdesc:ae97836b0547953be182a2334c9c91d3c"><td class="mdescLeft">&#160;</td><td class="mdescRight">Multi-purpose function to check variable state. <a href="#ae97836b0547953be182a2334c9c91d3c">More...</a><br/></td></tr>
+<tr class="separator:ae97836b0547953be182a2334c9c91d3c"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ac608a34f3bc180e7724192e0fd31f9b0"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="boot_8php.html#ac608a34f3bc180e7724192e0fd31f9b0">system_unavailable</a> ()</td></tr>
<tr class="separator:ac608a34f3bc180e7724192e0fd31f9b0"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ab79b8b4555cae20d03f8200666d89d63"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="boot_8php.html#ab79b8b4555cae20d03f8200666d89d63">clean_urls</a> ()</td></tr>
@@ -132,10 +135,15 @@ Functions</h2></td></tr>
<tr class="memitem:aba208673515cbb8a55e5fa4a1da99fda"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="boot_8php.html#aba208673515cbb8a55e5fa4a1da99fda">z_path</a> ()</td></tr>
<tr class="separator:aba208673515cbb8a55e5fa4a1da99fda"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:add517a0958ac684792c62142a3877f81"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="boot_8php.html#add517a0958ac684792c62142a3877f81">z_root</a> ()</td></tr>
+<tr class="memdesc:add517a0958ac684792c62142a3877f81"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the baseurl. <a href="#add517a0958ac684792c62142a3877f81">More...</a><br/></td></tr>
<tr class="separator:add517a0958ac684792c62142a3877f81"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a081307d681d7d04f17b9ced2076e7c85"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="boot_8php.html#a081307d681d7d04f17b9ced2076e7c85">absurl</a> ($path)</td></tr>
+<tr class="memdesc:a081307d681d7d04f17b9ced2076e7c85"><td class="mdescLeft">&#160;</td><td class="mdescRight">Return absolut URL for given $path. <a href="#a081307d681d7d04f17b9ced2076e7c85">More...</a><br/></td></tr>
<tr class="separator:a081307d681d7d04f17b9ced2076e7c85"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a5fbebdf7a1c0ea8f904dbd9d78c2c06c"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="boot_8php.html#a5fbebdf7a1c0ea8f904dbd9d78c2c06c">os_mkdir</a> ($path, $mode=0777, $recursive=false)</td></tr>
+<tr class="separator:a5fbebdf7a1c0ea8f904dbd9d78c2c06c"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ac17fc8a416ea79e9d5cb4dc9a8ff8c5c"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="boot_8php.html#ac17fc8a416ea79e9d5cb4dc9a8ff8c5c">is_ajax</a> ()</td></tr>
+<tr class="memdesc:ac17fc8a416ea79e9d5cb4dc9a8ff8c5c"><td class="mdescLeft">&#160;</td><td class="mdescRight">Function to check if request was an AJAX (xmlhttprequest) request. <a href="#ac17fc8a416ea79e9d5cb4dc9a8ff8c5c">More...</a><br/></td></tr>
<tr class="separator:ac17fc8a416ea79e9d5cb4dc9a8ff8c5c"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a4c02d88e66852a01bd5a1feecb7c3ce3"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="boot_8php.html#a4c02d88e66852a01bd5a1feecb7c3ce3">check_config</a> (&amp;$a)</td></tr>
<tr class="separator:a4c02d88e66852a01bd5a1feecb7c3ce3"><td class="memSeparator" colspan="2">&#160;</td></tr>
@@ -144,69 +152,99 @@ Functions</h2></td></tr>
<tr class="memitem:aefecf8599036df7f1b95d6820e0e2fa4"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="boot_8php.html#aefecf8599036df7f1b95d6820e0e2fa4">login</a> ($register=false, $form_id= 'main-login', $hiddens=false)</td></tr>
<tr class="separator:aefecf8599036df7f1b95d6820e0e2fa4"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aea7fc57a4d8e9dcb42f2601b0b9b761c"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="boot_8php.html#aea7fc57a4d8e9dcb42f2601b0b9b761c">killme</a> ()</td></tr>
+<tr class="memdesc:aea7fc57a4d8e9dcb42f2601b0b9b761c"><td class="mdescLeft">&#160;</td><td class="mdescRight">Used to end the current process, after saving session state. <a href="#aea7fc57a4d8e9dcb42f2601b0b9b761c">More...</a><br/></td></tr>
<tr class="separator:aea7fc57a4d8e9dcb42f2601b0b9b761c"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a5ab6181607a090bcdbaa13b15b85aba1"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="boot_8php.html#a5ab6181607a090bcdbaa13b15b85aba1">goaway</a> ($s)</td></tr>
+<tr class="memdesc:a5ab6181607a090bcdbaa13b15b85aba1"><td class="mdescLeft">&#160;</td><td class="mdescRight">Redirect to another URL and terminate this process. <a href="#a5ab6181607a090bcdbaa13b15b85aba1">More...</a><br/></td></tr>
<tr class="separator:a5ab6181607a090bcdbaa13b15b85aba1"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:afe88b920aa285982edb817a0dd44eb37"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="boot_8php.html#afe88b920aa285982edb817a0dd44eb37">get_account_id</a> ()</td></tr>
+<tr class="memdesc:afe88b920aa285982edb817a0dd44eb37"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the entity id of locally logged in account or false. <a href="#afe88b920aa285982edb817a0dd44eb37">More...</a><br/></td></tr>
<tr class="separator:afe88b920aa285982edb817a0dd44eb37"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ad4c9dc2c8a82e8f52b7404c1655eab44"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="boot_8php.html#ad4c9dc2c8a82e8f52b7404c1655eab44">local_user</a> ()</td></tr>
+<tr class="memdesc:ad4c9dc2c8a82e8f52b7404c1655eab44"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the entity id (channel_id) of locally logged in user or false. <a href="#ad4c9dc2c8a82e8f52b7404c1655eab44">More...</a><br/></td></tr>
<tr class="separator:ad4c9dc2c8a82e8f52b7404c1655eab44"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a5542c5c2806ab8bca04bad53d47b5209"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="boot_8php.html#a5542c5c2806ab8bca04bad53d47b5209">remote_user</a> ()</td></tr>
+<tr class="memdesc:a5542c5c2806ab8bca04bad53d47b5209"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns contact id (visitor_id) of authenticated site visitor or false. <a href="#a5542c5c2806ab8bca04bad53d47b5209">More...</a><br/></td></tr>
<tr class="separator:a5542c5c2806ab8bca04bad53d47b5209"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a9255af5ae9c887520091ea04763c1a88"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="boot_8php.html#a9255af5ae9c887520091ea04763c1a88">notice</a> ($s)</td></tr>
<tr class="separator:a9255af5ae9c887520091ea04763c1a88"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:adfb2fc7be5a4226c0a8e24131da9d498"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="boot_8php.html#adfb2fc7be5a4226c0a8e24131da9d498">info</a> ($s)</td></tr>
<tr class="separator:adfb2fc7be5a4226c0a8e24131da9d498"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a97769915c9f14adc4f8ab1ea2cecfd90"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="boot_8php.html#a97769915c9f14adc4f8ab1ea2cecfd90">get_max_import_size</a> ()</td></tr>
+<tr class="memdesc:a97769915c9f14adc4f8ab1ea2cecfd90"><td class="mdescLeft">&#160;</td><td class="mdescRight">Wrapper around config to limit the text length of an incoming message. <a href="#a97769915c9f14adc4f8ab1ea2cecfd90">More...</a><br/></td></tr>
<tr class="separator:a97769915c9f14adc4f8ab1ea2cecfd90"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ab346a2ece14993861f3e4206befa94f0"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="boot_8php.html#ab346a2ece14993861f3e4206befa94f0">proc_run</a> ($cmd)</td></tr>
<tr class="separator:ab346a2ece14993861f3e4206befa94f0"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ac5e74f899f6e98d8e91b14ba1c08bc08"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="boot_8php.html#ac5e74f899f6e98d8e91b14ba1c08bc08">is_windows</a> ()</td></tr>
+<tr class="memdesc:ac5e74f899f6e98d8e91b14ba1c08bc08"><td class="mdescLeft">&#160;</td><td class="mdescRight">Checks if we are running on M$ Windows. <a href="#ac5e74f899f6e98d8e91b14ba1c08bc08">More...</a><br/></td></tr>
<tr class="separator:ac5e74f899f6e98d8e91b14ba1c08bc08"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ad206598b909e8eb67eb0e0bb5ef69c13"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="boot_8php.html#ad206598b909e8eb67eb0e0bb5ef69c13">current_theme</a> ()</td></tr>
<tr class="separator:ad206598b909e8eb67eb0e0bb5ef69c13"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a926cad0b3d8b9d9ee5da1898fc063ba3"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="boot_8php.html#a926cad0b3d8b9d9ee5da1898fc063ba3">current_theme_url</a> ($installing=false)</td></tr>
+<tr class="memdesc:a926cad0b3d8b9d9ee5da1898fc063ba3"><td class="mdescLeft">&#160;</td><td class="mdescRight">Return full URL to theme which is currently in effect. <a href="#a926cad0b3d8b9d9ee5da1898fc063ba3">More...</a><br/></td></tr>
<tr class="separator:a926cad0b3d8b9d9ee5da1898fc063ba3"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aa1e828bbbcba170265eb2668d8daf42e"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="boot_8php.html#aa1e828bbbcba170265eb2668d8daf42e">is_site_admin</a> ()</td></tr>
+<tr class="memdesc:aa1e828bbbcba170265eb2668d8daf42e"><td class="mdescLeft">&#160;</td><td class="mdescRight">Check if current user has admin role. <a href="#aa1e828bbbcba170265eb2668d8daf42e">More...</a><br/></td></tr>
<tr class="separator:aa1e828bbbcba170265eb2668d8daf42e"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a6252d8eca67c689d9035ec6da544cf46"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="boot_8php.html#a6252d8eca67c689d9035ec6da544cf46">is_developer</a> ()</td></tr>
+<tr class="memdesc:a6252d8eca67c689d9035ec6da544cf46"><td class="mdescLeft">&#160;</td><td class="mdescRight">Check if current user has developer role. <a href="#a6252d8eca67c689d9035ec6da544cf46">More...</a><br/></td></tr>
<tr class="separator:a6252d8eca67c689d9035ec6da544cf46"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a719c7f3972d5f9268f37a41c76cd4ef6"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="boot_8php.html#a719c7f3972d5f9268f37a41c76cd4ef6">load_contact_links</a> ($uid)</td></tr>
<tr class="separator:a719c7f3972d5f9268f37a41c76cd4ef6"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a9cbab4ee728e9a8b4ce952bae643044e"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="boot_8php.html#a9cbab4ee728e9a8b4ce952bae643044e">build_querystring</a> ($params, $name=null)</td></tr>
+<tr class="memdesc:a9cbab4ee728e9a8b4ce952bae643044e"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns querystring as string from a mapped array. <a href="#a9cbab4ee728e9a8b4ce952bae643044e">More...</a><br/></td></tr>
<tr class="separator:a9cbab4ee728e9a8b4ce952bae643044e"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:abc0a90a1a77f5b668aa7e4b57d1776a7"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="boot_8php.html#abc0a90a1a77f5b668aa7e4b57d1776a7">argc</a> ()</td></tr>
<tr class="separator:abc0a90a1a77f5b668aa7e4b57d1776a7"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a768f00b7d66be0daf7ef4eea2e862006"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="boot_8php.html#a768f00b7d66be0daf7ef4eea2e862006">argv</a> ($<a class="el" href="boot_8php.html#a01353c9abebc3544ea080ac161729632">x</a>)</td></tr>
+<tr class="memitem:a768f00b7d66be0daf7ef4eea2e862006"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="boot_8php.html#a768f00b7d66be0daf7ef4eea2e862006">argv</a> ($<a class="el" href="boot_8php.html#ae97836b0547953be182a2334c9c91d3c">x</a>)</td></tr>
<tr class="separator:a768f00b7d66be0daf7ef4eea2e862006"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a3e0930933fb2c0bf8211cc7ab4e1c3b4"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="boot_8php.html#a3e0930933fb2c0bf8211cc7ab4e1c3b4">dba_timer</a> ()</td></tr>
<tr class="separator:a3e0930933fb2c0bf8211cc7ab4e1c3b4"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a623e49c79943f3e7bdb770d021683cf7"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="boot_8php.html#a623e49c79943f3e7bdb770d021683cf7">get_observer_hash</a> ()</td></tr>
+<tr class="memdesc:a623e49c79943f3e7bdb770d021683cf7"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns xchan_hash from the observer. <a href="#a623e49c79943f3e7bdb770d021683cf7">More...</a><br/></td></tr>
<tr class="separator:a623e49c79943f3e7bdb770d021683cf7"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aa4221641e5c21db69fa52c426b9017f5"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="boot_8php.html#aa4221641e5c21db69fa52c426b9017f5">curPageURL</a> ()</td></tr>
<tr class="separator:aa4221641e5c21db69fa52c426b9017f5"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a899d24fd074594ceebbf72e1feff335f"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="boot_8php.html#a899d24fd074594ceebbf72e1feff335f">get_custom_nav</a> (&amp;$a, $navname)</td></tr>
+<tr class="memdesc:a899d24fd074594ceebbf72e1feff335f"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns a custom navigation by name??? <a href="#a899d24fd074594ceebbf72e1feff335f">More...</a><br/></td></tr>
<tr class="separator:a899d24fd074594ceebbf72e1feff335f"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a50a6707a28c7d05d3f49eaabc7994501"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="boot_8php.html#a50a6707a28c7d05d3f49eaabc7994501">load_pdl</a> (&amp;$a)</td></tr>
+<tr class="memdesc:a50a6707a28c7d05d3f49eaabc7994501"><td class="mdescLeft">&#160;</td><td class="mdescRight">Loads a page definition file for a module. <a href="#a50a6707a28c7d05d3f49eaabc7994501">More...</a><br/></td></tr>
+<tr class="separator:a50a6707a28c7d05d3f49eaabc7994501"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:acc4e0c910af066148b810e5fde55fff1"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="boot_8php.html#acc4e0c910af066148b810e5fde55fff1">construct_page</a> (&amp;$a)</td></tr>
+<tr class="memdesc:acc4e0c910af066148b810e5fde55fff1"><td class="mdescLeft">&#160;</td><td class="mdescRight">build the page. <a href="#acc4e0c910af066148b810e5fde55fff1">More...</a><br/></td></tr>
<tr class="separator:acc4e0c910af066148b810e5fde55fff1"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a75a90b0eadd0df510f7e63210733634d"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="boot_8php.html#a75a90b0eadd0df510f7e63210733634d">appdirpath</a> ()</td></tr>
+<tr class="memdesc:a75a90b0eadd0df510f7e63210733634d"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns <a class="el" href="namespaceRedMatrix.html" title="Class Import.">RedMatrix</a>'s root directory. <a href="#a75a90b0eadd0df510f7e63210733634d">More...</a><br/></td></tr>
<tr class="separator:a75a90b0eadd0df510f7e63210733634d"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a0e4701c9742c3ef88f02ac450a042a84"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="boot_8php.html#a0e4701c9742c3ef88f02ac450a042a84">head_set_icon</a> ($icon)</td></tr>
+<tr class="memdesc:a0e4701c9742c3ef88f02ac450a042a84"><td class="mdescLeft">&#160;</td><td class="mdescRight">Set a pageicon. <a href="#a0e4701c9742c3ef88f02ac450a042a84">More...</a><br/></td></tr>
<tr class="separator:a0e4701c9742c3ef88f02ac450a042a84"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a24a7a70afedd5d85fe0eadc85afa9f77"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="boot_8php.html#a24a7a70afedd5d85fe0eadc85afa9f77">head_get_icon</a> ()</td></tr>
+<tr class="memdesc:a24a7a70afedd5d85fe0eadc85afa9f77"><td class="mdescLeft">&#160;</td><td class="mdescRight">Get the pageicon. <a href="#a24a7a70afedd5d85fe0eadc85afa9f77">More...</a><br/></td></tr>
<tr class="separator:a24a7a70afedd5d85fe0eadc85afa9f77"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a329400dcb29897cdaae3020109272285"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="boot_8php.html#a329400dcb29897cdaae3020109272285">get_directory_realm</a> ()</td></tr>
+<tr class="memdesc:a329400dcb29897cdaae3020109272285"><td class="mdescLeft">&#160;</td><td class="mdescRight">Return the Realm of the directory. <a href="#a329400dcb29897cdaae3020109272285">More...</a><br/></td></tr>
+<tr class="separator:a329400dcb29897cdaae3020109272285"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:aa561f801e962b67a5c4d0548ea95fd17"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="boot_8php.html#aa561f801e962b67a5c4d0548ea95fd17">get_poller_runtime</a> ()</td></tr>
+<tr class="memdesc:aa561f801e962b67a5c4d0548ea95fd17"><td class="mdescLeft">&#160;</td><td class="mdescRight">return relative date of last completed poller execution <a href="#aa561f801e962b67a5c4d0548ea95fd17">More...</a><br/></td></tr>
+<tr class="separator:aa561f801e962b67a5c4d0548ea95fd17"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a476c499e15caf75972fed134a8f23b2e"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="boot_8php.html#a476c499e15caf75972fed134a8f23b2e">z_get_upload_dir</a> ()</td></tr>
+<tr class="separator:a476c499e15caf75972fed134a8f23b2e"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a59717d02602a4babf2a54da8b33d93a5"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="boot_8php.html#a59717d02602a4babf2a54da8b33d93a5">z_get_temp_dir</a> ()</td></tr>
+<tr class="separator:a59717d02602a4babf2a54da8b33d93a5"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="var-members"></a>
Variables</h2></td></tr>
-<tr class="memitem:a96ad56755a21e1361dbd7bf93c9e7ff4"><td class="memItemLeft" align="right" valign="top">const&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="boot_8php.html#a96ad56755a21e1361dbd7bf93c9e7ff4">RED_PLATFORM</a> 'Red Matrix'</td></tr>
+<tr class="memitem:a96ad56755a21e1361dbd7bf93c9e7ff4"><td class="memItemLeft" align="right" valign="top">const&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="boot_8php.html#a96ad56755a21e1361dbd7bf93c9e7ff4">RED_PLATFORM</a> 'redmatrix'</td></tr>
<tr class="separator:a96ad56755a21e1361dbd7bf93c9e7ff4"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a21cc29e0025943e7c28ff58cb4856ac3"><td class="memItemLeft" align="right" valign="top">const&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="boot_8php.html#a21cc29e0025943e7c28ff58cb4856ac3">RED_VERSION</a> trim(file_get_contents('version.inc')) . 'R'</td></tr>
<tr class="separator:a21cc29e0025943e7c28ff58cb4856ac3"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a36b31575f992a10b5927b76efba9362e"><td class="memItemLeft" align="right" valign="top">const&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="boot_8php.html#a36b31575f992a10b5927b76efba9362e">ZOT_REVISION</a> 1</td></tr>
<tr class="separator:a36b31575f992a10b5927b76efba9362e"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:ac59a18a4838710d6c2de37aed6b21f03"><td class="memItemLeft" align="right" valign="top">const&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="boot_8php.html#ac59a18a4838710d6c2de37aed6b21f03">DB_UPDATE_VERSION</a> 1117</td></tr>
+<tr class="memitem:ac59a18a4838710d6c2de37aed6b21f03"><td class="memItemLeft" align="right" valign="top">const&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="boot_8php.html#ac59a18a4838710d6c2de37aed6b21f03">DB_UPDATE_VERSION</a> 1131</td></tr>
<tr class="separator:ac59a18a4838710d6c2de37aed6b21f03"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a0603d6ece8c5d37b4b7db697db053a4b"><td class="memItemLeft" align="right" valign="top">const&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="boot_8php.html#a0603d6ece8c5d37b4b7db697db053a4b">EOL</a> '&lt;br /&gt;' . &quot;\r\n&quot;</td></tr>
+<tr class="memitem:a0603d6ece8c5d37b4b7db697db053a4b"><td class="memItemLeft" align="right" valign="top">const&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="boot_8php.html#a0603d6ece8c5d37b4b7db697db053a4b">EOL</a> '&lt;br&gt;' . &quot;\r\n&quot;</td></tr>
<tr class="separator:a0603d6ece8c5d37b4b7db697db053a4b"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ad34c1547020a305915bcc39707744690"><td class="memItemLeft" align="right" valign="top">const&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="boot_8php.html#ad34c1547020a305915bcc39707744690">ATOM_TIME</a> 'Y-m-d\TH:i:s\Z'</td></tr>
<tr class="separator:ad34c1547020a305915bcc39707744690"><td class="memSeparator" colspan="2">&#160;</td></tr>
@@ -304,6 +342,8 @@ Variables</h2></td></tr>
<tr class="separator:a36003bebe4ce860c6652bcc3e09b2214"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a6ee7a72d558d1851bbb9e3cdde377932"><td class="memItemLeft" align="right" valign="top">const&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="boot_8php.html#a6ee7a72d558d1851bbb9e3cdde377932">PAGE_SYSTEM</a> 0x1000</td></tr>
<tr class="separator:a6ee7a72d558d1851bbb9e3cdde377932"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:afbb21ecccac9819aa65397e816868a5f"><td class="memItemLeft" align="right" valign="top">const&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="boot_8php.html#afbb21ecccac9819aa65397e816868a5f">PAGE_HUBADMIN</a> 0x2000</td></tr>
+<tr class="separator:afbb21ecccac9819aa65397e816868a5f"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a4edce16cb7f21cdafa1e85bf63d713e6"><td class="memItemLeft" align="right" valign="top">const&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="boot_8php.html#a4edce16cb7f21cdafa1e85bf63d713e6">PAGE_REMOVED</a> 0x8000</td></tr>
<tr class="separator:a4edce16cb7f21cdafa1e85bf63d713e6"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a4a49b29838ef2c45ab3556b52baec6a4"><td class="memItemLeft" align="right" valign="top">const&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="boot_8php.html#a4a49b29838ef2c45ab3556b52baec6a4">PHOTO_NORMAL</a> 0x0000</td></tr>
@@ -314,6 +354,10 @@ Variables</h2></td></tr>
<tr class="separator:ac43182e0d8bae7576a30b603774974f8"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a78849a1bf8ce8d9804b4cbb502e8f383"><td class="memItemLeft" align="right" valign="top">const&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="boot_8php.html#a78849a1bf8ce8d9804b4cbb502e8f383">PHOTO_THING</a> 0x0004</td></tr>
<tr class="separator:a78849a1bf8ce8d9804b4cbb502e8f383"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a921c55b9fa59a327a5f0e07fa1ccb2e0"><td class="memItemLeft" align="right" valign="top">const&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="boot_8php.html#a921c55b9fa59a327a5f0e07fa1ccb2e0">PHOTO_ADULT</a> 0x0008</td></tr>
+<tr class="separator:a921c55b9fa59a327a5f0e07fa1ccb2e0"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ab49a5d43ce1150c5af8c750ccb14e15f"><td class="memItemLeft" align="right" valign="top">const&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="boot_8php.html#ab49a5d43ce1150c5af8c750ccb14e15f">PHOTO_FLAG_OS</a> 0x4000</td></tr>
+<tr class="separator:ab49a5d43ce1150c5af8c750ccb14e15f"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a718a801b0be6cbaef5e519516da12721"><td class="memItemLeft" align="right" valign="top">const&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="boot_8php.html#a718a801b0be6cbaef5e519516da12721">MENU_SYSTEM</a> 0x0001</td></tr>
<tr class="separator:a718a801b0be6cbaef5e519516da12721"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a458e19af801bc4b0d1f1ce1a6d9e857e"><td class="memItemLeft" align="right" valign="top">const&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="boot_8php.html#a458e19af801bc4b0d1f1ce1a6d9e857e">MENU_BOOKMARK</a> 0x0002</td></tr>
@@ -378,8 +422,8 @@ Variables</h2></td></tr>
<tr class="separator:aa9244fc9cc221980c07a20cc534111be"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aae6c941bde5fd6fce07e51dba7326ead"><td class="memItemLeft" align="right" valign="top">const&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="boot_8php.html#aae6c941bde5fd6fce07e51dba7326ead">PERMS_A_REPUBLISH</a> 0x10000</td></tr>
<tr class="separator:aae6c941bde5fd6fce07e51dba7326ead"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a8b2af16eaee9e7768a88d0e437877f3b"><td class="memItemLeft" align="right" valign="top">const&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="boot_8php.html#a8b2af16eaee9e7768a88d0e437877f3b">PERMS_A_BOOKMARK</a> 0x20000</td></tr>
-<tr class="separator:a8b2af16eaee9e7768a88d0e437877f3b"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:af3ff14985bffbd951a6ea356b7ec3007"><td class="memItemLeft" align="right" valign="top">const&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="boot_8php.html#af3ff14985bffbd951a6ea356b7ec3007">PERMS_W_LIKE</a> 0x20000</td></tr>
+<tr class="separator:af3ff14985bffbd951a6ea356b7ec3007"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aff210e8403dd72368522b17fb6e5d4e7"><td class="memItemLeft" align="right" valign="top">const&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="boot_8php.html#aff210e8403dd72368522b17fb6e5d4e7">PERMS_PUBLIC</a> 0x0001</td></tr>
<tr class="separator:aff210e8403dd72368522b17fb6e5d4e7"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a6df1102664f64b274810db85197c2755"><td class="memItemLeft" align="right" valign="top">const&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="boot_8php.html#a6df1102664f64b274810db85197c2755">PERMS_NETWORK</a> 0x0002</td></tr>
@@ -408,6 +452,8 @@ Variables</h2></td></tr>
<tr class="separator:a7eeb83e15968f7a6cc5937d493815773"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a0450389f24c632906fbc24347700a543"><td class="memItemLeft" align="right" valign="top">const&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="boot_8php.html#a0450389f24c632906fbc24347700a543">ABOOK_FLAG_SELF</a> 0x0080</td></tr>
<tr class="separator:a0450389f24c632906fbc24347700a543"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ae0d9527117cd87dcba11986047ae336e"><td class="memItemLeft" align="right" valign="top">const&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="boot_8php.html#ae0d9527117cd87dcba11986047ae336e">ABOOK_FLAG_FEED</a> 0x0100</td></tr>
+<tr class="separator:ae0d9527117cd87dcba11986047ae336e"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ad0876e837cf3fad8a26417e315f6e2c8"><td class="memItemLeft" align="right" valign="top">const&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="boot_8php.html#ad0876e837cf3fad8a26417e315f6e2c8">MAIL_DELETED</a> 0x0001</td></tr>
<tr class="separator:ad0876e837cf3fad8a26417e315f6e2c8"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aa3679df31c8dad1b71816b0322d5baff"><td class="memItemLeft" align="right" valign="top">const&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="boot_8php.html#aa3679df31c8dad1b71816b0322d5baff">MAIL_REPLIED</a> 0x0002</td></tr>
@@ -476,6 +522,28 @@ Variables</h2></td></tr>
<tr class="separator:aca08bc4f1554ba877500f6abcc99e1e8"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a14d44d4a00223dc3db4ea962325db192"><td class="memItemLeft" align="right" valign="top">const&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="boot_8php.html#a14d44d4a00223dc3db4ea962325db192">NOTIFY_SYSTEM</a> 0x8000</td></tr>
<tr class="separator:a14d44d4a00223dc3db4ea962325db192"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a997614f25e58f8313641e1eb0109fd10"><td class="memItemLeft" align="right" valign="top">const&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="boot_8php.html#a997614f25e58f8313641e1eb0109fd10">VNOTIFY_NETWORK</a> 0x0001</td></tr>
+<tr class="separator:a997614f25e58f8313641e1eb0109fd10"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a7b511bd93202c43405adbe3b5bcebbfe"><td class="memItemLeft" align="right" valign="top">const&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="boot_8php.html#a7b511bd93202c43405adbe3b5bcebbfe">VNOTIFY_CHANNEL</a> 0x0002</td></tr>
+<tr class="separator:a7b511bd93202c43405adbe3b5bcebbfe"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a0afeb43da443d6ff3526ede5ecdcc3b3"><td class="memItemLeft" align="right" valign="top">const&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="boot_8php.html#a0afeb43da443d6ff3526ede5ecdcc3b3">VNOTIFY_MAIL</a> 0x0004</td></tr>
+<tr class="separator:a0afeb43da443d6ff3526ede5ecdcc3b3"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ad94aca4c260b8a892397786201dc4664"><td class="memItemLeft" align="right" valign="top">const&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="boot_8php.html#ad94aca4c260b8a892397786201dc4664">VNOTIFY_EVENT</a> 0x0008</td></tr>
+<tr class="separator:ad94aca4c260b8a892397786201dc4664"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a76480b213af379c0c6c7fa4e39019ca9"><td class="memItemLeft" align="right" valign="top">const&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="boot_8php.html#a76480b213af379c0c6c7fa4e39019ca9">VNOTIFY_EVENTTODAY</a> 0x0010</td></tr>
+<tr class="separator:a76480b213af379c0c6c7fa4e39019ca9"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ac89396b9144391acd08d6d0f9b332220"><td class="memItemLeft" align="right" valign="top">const&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="boot_8php.html#ac89396b9144391acd08d6d0f9b332220">VNOTIFY_BIRTHDAY</a> 0x0020</td></tr>
+<tr class="separator:ac89396b9144391acd08d6d0f9b332220"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a7e5627b5ca4b7464feb0f08663b19ea1"><td class="memItemLeft" align="right" valign="top">const&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="boot_8php.html#a7e5627b5ca4b7464feb0f08663b19ea1">VNOTIFY_SYSTEM</a> 0x0040</td></tr>
+<tr class="separator:a7e5627b5ca4b7464feb0f08663b19ea1"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a37281c30bd92cecb499878d6778c570f"><td class="memItemLeft" align="right" valign="top">const&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="boot_8php.html#a37281c30bd92cecb499878d6778c570f">VNOTIFY_INFO</a> 0x0080</td></tr>
+<tr class="separator:a37281c30bd92cecb499878d6778c570f"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a9f8a2938ddd9ee2867e6f8ce77b61b2f"><td class="memItemLeft" align="right" valign="top">const&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="boot_8php.html#a9f8a2938ddd9ee2867e6f8ce77b61b2f">VNOTIFY_ALERT</a> 0x0100</td></tr>
+<tr class="separator:a9f8a2938ddd9ee2867e6f8ce77b61b2f"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a1997c4b7d0253e036bc0fb6b20e4af71"><td class="memItemLeft" align="right" valign="top">const&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="boot_8php.html#a1997c4b7d0253e036bc0fb6b20e4af71">VNOTIFY_INTRO</a> 0x0200</td></tr>
+<tr class="separator:a1997c4b7d0253e036bc0fb6b20e4af71"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ae09767b94688657978ff9366ec63684b"><td class="memItemLeft" align="right" valign="top">const&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="boot_8php.html#ae09767b94688657978ff9366ec63684b">VNOTIFY_REGISTER</a> 0x0400</td></tr>
+<tr class="separator:ae09767b94688657978ff9366ec63684b"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a3ad9cc5d4354be741fa1de12b96e9955"><td class="memItemLeft" align="right" valign="top">const&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="boot_8php.html#a3ad9cc5d4354be741fa1de12b96e9955">HUBLOC_FLAGS_PRIMARY</a> 0x0001</td></tr>
<tr class="separator:a3ad9cc5d4354be741fa1de12b96e9955"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ab54b24cc302e1a42a67a49d788b6b764"><td class="memItemLeft" align="right" valign="top">const&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="boot_8php.html#ab54b24cc302e1a42a67a49d788b6b764">HUBLOC_FLAGS_UNVERIFIED</a> 0x0002</td></tr>
@@ -496,6 +564,8 @@ Variables</h2></td></tr>
<tr class="separator:a5a681a672e007cdc22b43345d71f07c6"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:afef254290febac854c85fc698d9483a6"><td class="memItemLeft" align="right" valign="top">const&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="boot_8php.html#afef254290febac854c85fc698d9483a6">XCHAN_FLAGS_SYSTEM</a> 0x0010</td></tr>
<tr class="separator:afef254290febac854c85fc698d9483a6"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a0209e605028a5bb492683951ab30d49d"><td class="memItemLeft" align="right" valign="top">const&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="boot_8php.html#a0209e605028a5bb492683951ab30d49d">XCHAN_FLAGS_PUBFORUM</a> 0x0020</td></tr>
+<tr class="separator:a0209e605028a5bb492683951ab30d49d"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a9ea1290e00c6d40684892047f2c778a9"><td class="memItemLeft" align="right" valign="top">const&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="boot_8php.html#a9ea1290e00c6d40684892047f2c778a9">XCHAN_FLAGS_DELETED</a> 0x1000</td></tr>
<tr class="separator:a9ea1290e00c6d40684892047f2c778a9"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aa589421267f0c2f0d643f727792cce35"><td class="memItemLeft" align="right" valign="top">const&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="boot_8php.html#aa589421267f0c2f0d643f727792cce35">HUBLOC_NOTUSED</a> 0x0000</td></tr>
@@ -570,6 +640,8 @@ Variables</h2></td></tr>
<tr class="separator:afaf93b7026f784b113b4f8921745891e"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a444ce608ce34efb82ee11852f36e825f"><td class="memItemLeft" align="right" valign="top">const&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="boot_8php.html#a444ce608ce34efb82ee11852f36e825f">NAMESPACE_ATOM1</a> 'http://www.w3.org/2005/Atom'</td></tr>
<tr class="separator:a444ce608ce34efb82ee11852f36e825f"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a3d48dffd9dc73a187263c3002cdf00c0"><td class="memItemLeft" align="right" valign="top">const&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="boot_8php.html#a3d48dffd9dc73a187263c3002cdf00c0">NAMESPACE_YMEDIA</a> 'http://search.yahoo.com/mrss/'</td></tr>
+<tr class="separator:a3d48dffd9dc73a187263c3002cdf00c0"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:abdcdfc873ace4e0902177bad934de0c0"><td class="memItemLeft" align="right" valign="top">const&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="boot_8php.html#abdcdfc873ace4e0902177bad934de0c0">ACTIVITY_LIKE</a> <a class="el" href="boot_8php.html#a7b8f8ad9dbe82711257d23891ef6b133">NAMESPACE_ACTIVITY_SCHEMA</a> . 'like'</td></tr>
<tr class="separator:abdcdfc873ace4e0902177bad934de0c0"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a0e57f846e6d47a308feced0f7274f178"><td class="memItemLeft" align="right" valign="top">const&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="boot_8php.html#a0e57f846e6d47a308feced0f7274f178">ACTIVITY_DISLIKE</a> <a class="el" href="boot_8php.html#a49f2a70b3b43aa904223a8d19e986a47">NAMESPACE_ZOT</a> . '/activity/dislike'</td></tr>
@@ -704,8 +776,16 @@ Variables</h2></td></tr>
<tr class="separator:a18a400fa45e5632811b33041d8c048bf"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a11cfe7d99b4dac0454d0de8873989f81"><td class="memItemLeft" align="right" valign="top">const&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="boot_8php.html#a11cfe7d99b4dac0454d0de8873989f81">ITEM_RETAINED</a> 0x4000</td></tr>
<tr class="separator:a11cfe7d99b4dac0454d0de8873989f81"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ac4d1c93dabcace711ffb4931204c336b"><td class="memItemLeft" align="right" valign="top">const&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="boot_8php.html#ac4d1c93dabcace711ffb4931204c336b">ITEM_RSS</a> 0x8000</td></tr>
+<tr class="separator:ac4d1c93dabcace711ffb4931204c336b"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a8c9a11c47394244cbe18cd75b9726d5f"><td class="memItemLeft" align="right" valign="top">const&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="boot_8php.html#a8c9a11c47394244cbe18cd75b9726d5f">DBTYPE_MYSQL</a> 0</td></tr>
+<tr class="separator:a8c9a11c47394244cbe18cd75b9726d5f"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a37ddabc112db443b4c67fbc0f708817e"><td class="memItemLeft" align="right" valign="top">const&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="boot_8php.html#a37ddabc112db443b4c67fbc0f708817e">DBTYPE_POSTGRES</a> 1</td></tr>
+<tr class="separator:a37ddabc112db443b4c67fbc0f708817e"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
-<h2 class="groupheader">Function Documentation</h2>
+<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
+<div class="textblock"><p>This file defines some global constants and includes the central <a class="el" href="classApp.html" title="Our main application structure for the life of this page.">App</a> class. </p>
+</div><h2 class="groupheader">Function Documentation</h2>
<a class="anchor" id="a081307d681d7d04f17b9ced2076e7c85"></a>
<div class="memitem">
<div class="memproto">
@@ -720,6 +800,15 @@ Variables</h2></td></tr>
</table>
</div><div class="memdoc">
+<p>Return absolut URL for given $path. </p>
+<dl class="params"><dt>Parameters</dt><dd>
+ <table class="params">
+ <tr><td class="paramtype">string</td><td class="paramname">$path</td><td></td></tr>
+ </table>
+ </dd>
+</dl>
+<dl class="section return"><dt>Returns</dt><dd>string </dd></dl>
+
</div>
</div>
<a class="anchor" id="a75a90b0eadd0df510f7e63210733634d"></a>
@@ -735,6 +824,9 @@ Variables</h2></td></tr>
</table>
</div><div class="memdoc">
+<p>Returns <a class="el" href="namespaceRedMatrix.html" title="Class Import.">RedMatrix</a>'s root directory. </p>
+<dl class="section return"><dt>Returns</dt><dd>string </dd></dl>
+
<p>Referenced by <a class="el" href="include_2network_8php.html#a78e89557b2fbd344ad790846d761b0c7">get_capath()</a>.</p>
</div>
@@ -752,7 +844,7 @@ Variables</h2></td></tr>
</table>
</div><div class="memdoc">
-<p>Referenced by <a class="el" href="classApp.html#af6d39f63fb7116bbeb04e51696f99474">App\__construct()</a>, <a class="el" href="__well__known_8php.html#a6ebfa937a2024f0b5dab53f0ac90fed0">_well_known_init()</a>, <a class="el" href="achievements_8php.html#a35ae04ada0e227d19671f289a32fb30e">achievements_content()</a>, <a class="el" href="admin_8php.html#afef415e4011607fbb665610441595015">admin_content()</a>, <a class="el" href="admin_8php.html#ad6f87a764fd35f522c7b4c351d7878ec">admin_page_channels()</a>, <a class="el" href="admin_8php.html#aaa6addf2dbc3f3fcf99244a56b41eade">admin_page_dbsync()</a>, <a class="el" href="admin_8php.html#a62f10f90c47686c9c3c37c4c03a108d2">admin_page_users()</a>, <a class="el" href="admin_8php.html#acf51f5837a7427832144c2bf7308ada3">admin_post()</a>, <a class="el" href="include_2api_8php.html#aa40bae797bcd9ccacffdce5a3b5a1afa">api_get_user()</a>, <a class="el" href="mod_2apps_8php.html#a546016cb960d0b110ee8e489dfa6c27c">apps_content()</a>, <a class="el" href="mod_2attach_8php.html#aa88eb5ad87aa1036a30e70339cc6c1b1">attach_init()</a>, <a class="el" href="block_8php.html#a8a82a470acdfbc7a8e749509caeeea45">block_content()</a>, <a class="el" href="blocks_8php.html#a2531a8fd51db3cecb2eb20c002c66e12">blocks_content()</a>, <a class="el" href="channel_8php.html#ac7c8c7845741baadf87fae6bc279f3dc">channel_init()</a>, <a class="el" href="mod_2chat_8php.html#a8b0b8bee6fef6477e8c64c5e951b1b4f">chat_content()</a>, <a class="el" href="mod_2chat_8php.html#aa9ae4782e9baef0b7314ab9527c2707e">chat_init()</a>, <a class="el" href="cloud_8php.html#a1b79a6fe0454bc76673ad9aef55bf02d">cloud_init()</a>, <a class="el" href="common_8php.html#aca62f113655809f41f49042ce9b123c2">common_init()</a>, <a class="el" href="connect_8php.html#ad46a38f32fd7a3d324b1fa26373efa36">connect_init()</a>, <a class="el" href="connections_8php.html#aec2e457420fce3e3bf6a9f48e36df25c">connections_content()</a>, <a class="el" href="connedit_8php.html#a795acb3d9d841f55c255d7611681ab67">connedit_content()</a>, <a class="el" href="connedit_8php.html#a4da871e075597a09a8b374b9171dd92e">connedit_init()</a>, <a class="el" href="contactgroup_8php.html#a18c7391b1b25debaf98c9dba639caab3">contactgroup_content()</a>, <a class="el" href="dirsearch_8php.html#aa1fb04e1de4f25b63349ac78f94ceb4c">dirsearch_content()</a>, <a class="el" href="display_8php.html#a37137c98d47bf3306f4c2bb9f5b60de0">display_content()</a>, <a class="el" href="editblock_8php.html#abbe8f55de06967bc8d79d620509a49e6">editblock_content()</a>, <a class="el" href="editlayout_8php.html#aa877e4157a26b099de904164181dd386">editlayout_content()</a>, <a class="el" href="editpost_8php.html#a34011690864d122680c802e9e748ccfb">editpost_content()</a>, <a class="el" href="editwebpage_8php.html#a375e945255fad79a71036528f7480650">editwebpage_content()</a>, <a class="el" href="events_8php.html#a1d293fb217ae6bc9e3858c4b32e363ec">events_content()</a>, <a class="el" href="feed_8php.html#af86137700b56f33d1d5f25c8dec22c04">feed_init()</a>, <a class="el" href="filestorage_8php.html#a61bb1be78472555df4ce619f51014040">filestorage_content()</a>, <a class="el" href="mod_2group_8php.html#a07a64f6c65b0080d8190b3d9728a7a83">group_content()</a>, <a class="el" href="mod_2group_8php.html#aed1f009b1221348021bb34761160ef35">group_post()</a>, <a class="el" href="help_8php.html#af055e15f600ffa6fbca9386fdf715224">help_content()</a>, <a class="el" href="importelm_8php.html#a1a4f71e6d76ace6add5e9659845f5e5f">importelm_post()</a>, <a class="el" href="item_8php.html#a764bbb2e9a885a86fb23d0b5e4a09221">item_content()</a>, <a class="el" href="layouts_8php.html#a6e0193759ad9eef76d3df2db24237b50">layouts_content()</a>, <a class="el" href="like_8php.html#a9d7dd268f21c21e9d29dd2aca2dd9538">like_content()</a>, <a class="el" href="lockview_8php.html#a851e26ab9a1008df5c5ebebea31e9b44">lockview_content()</a>, <a class="el" href="mail_8php.html#a3c7c485fc69f92371e8b20936040eca1">mail_content()</a>, <a class="el" href="manage_8php.html#a2bca247b5296827638959138367db4f5">manage_content()</a>, <a class="el" href="mod_2menu_8php.html#a6fed23af14d71a78a4153c8363a685cf">menu_content()</a>, <a class="el" href="mod_2menu_8php.html#aaa491ef173868fe002aece4632bcf393">menu_post()</a>, <a class="el" href="mod_2message_8php.html#ac72dfed3ce08fcb331d66b37edc6e15f">message_content()</a>, <a class="el" href="mitem_8php.html#a7a31b702ecad18eeb6a38b243ff0037e">mitem_content()</a>, <a class="el" href="mitem_8php.html#a9627cd857cafdf04e4fc0ae48c8e8518">mitem_init()</a>, <a class="el" href="mitem_8php.html#a6ee694cca4b551a20d7c7a94b5243ec1">mitem_post()</a>, <a class="el" href="new__channel_8php.html#a1ad7f99e4366a32942c6b954aba3a164">new_channel_init()</a>, <a class="el" href="notes_8php.html#a4dbd7b1f906440746af48b484d66535a">notes_init()</a>, <a class="el" href="mod_2notify_8php.html#a94f9a6a9d4b5fd704baafff0c34f41ae">notify_init()</a>, <a class="el" href="mod_2oembed_8php.html#a9145025aaf057fb5d3f9f7011e5e1014">oembed_init()</a>, <a class="el" href="oexchange_8php.html#a2d8b785cd7d041a4e6274f5af370cf26">oexchange_content()</a>, <a class="el" href="oexchange_8php.html#ac8e2e469ddc3db984b0c1b44558aca59">oexchange_init()</a>, <a class="el" href="online_8php.html#a80e107c84eb722b0ca11d0413b96f9f7">online_init()</a>, <a class="el" href="page_8php.html#a91a5f649f68406149108bded1dc90b22">page_content()</a>, <a class="el" href="pdledit_8php.html#a59cb550f6b7a4e7d8196fbc9de601619">pdledit_content()</a>, <a class="el" href="photo_8php.html#a582779d24882b0d31ee909a91d70a448">photo_init()</a>, <a class="el" href="mod_2photos_8php.html#aa87382611a66ec5effdb2d78f13f5812">photos_content()</a>, <a class="el" href="mod_2photos_8php.html#ab950295cd77626f5fe65331a87693014">photos_init()</a>, <a class="el" href="mod_2photos_8php.html#a062bed4d04d14fee8a53f4c9be673080">photos_post()</a>, <a class="el" href="ping_8php.html#a77217b1b190b4c5d8770867b45f0c0a1">ping_init()</a>, <a class="el" href="poco_8php.html#a53def16f75e3d41f1d2bb7cfa4905498">poco_init()</a>, <a class="el" href="profile_8php.html#ab5d0246be0552e2182a585c1206d22a5">profile_init()</a>, <a class="el" href="profile__photo_8php.html#a4b80234074bd603221aa5364f330e479">profile_photo_post()</a>, <a class="el" href="profiles_8php.html#a46975783b8b8d70402d51487eb1f0b00">profiles_content()</a>, <a class="el" href="profiles_8php.html#a36f71405ad536228f8bb84a551b23f7e">profiles_init()</a>, <a class="el" href="profiles_8php.html#ab0362c81b1d3b0b12a772b9fac446e04">profiles_post()</a>, <a class="el" href="profperm_8php.html#aef015787de2373d9fb3fe3f814fb5023">profperm_content()</a>, <a class="el" href="queue_8php.html#af8c93de86d866c3200174c8450a0f341">queue_run()</a>, <a class="el" href="rbmark_8php.html#a43fec4960b50926251574762cc491f76">rbmark_content()</a>, <a class="el" href="register_8php.html#ae20c0cd40f738d6295de58b9202c83d5">register_init()</a>, <a class="el" href="regmod_8php.html#a7953df4e32e63946565e90cdd5d50409">regmod_content()</a>, <a class="el" href="regver_8php.html#ad2c5f644fd1b099abd7c715b7df6f50f">regver_content()</a>, <a class="el" href="rpost_8php.html#a8190354d789000806d9879aea276728f">rpost_content()</a>, <a class="el" href="settings_8php.html#a3a4cde287482fced008583f54ba2a722">settings_init()</a>, <a class="el" href="settings_8php.html#aa7ee94d88ac088edb04ccf3a26de3586">settings_post()</a>, <a class="el" href="setup_8php.html#a267555abd17290e659b4bf44b885e4e0">setup_init()</a>, <a class="el" href="share_8php.html#afeb26046bdd02567ecd29ab5f188b249">share_init()</a>, <a class="el" href="sources_8php.html#ac442ccef080ab95772d8929fcafcb4b7">sources_content()</a>, <a class="el" href="starred_8php.html#a63024fb418c678e49fd535e3752d349a">starred_init()</a>, <a class="el" href="subthread_8php.html#a50368f3d825b77996030528e7fbfa3d3">subthread_content()</a>, <a class="el" href="tagger_8php.html#a0e4a3eb177d1684553c547503d67161c">tagger_content()</a>, <a class="el" href="thing_8php.html#a24a35f1e64029a67fdbea94a776ae04b">thing_content()</a>, <a class="el" href="uexport_8php.html#a118920137dedebe0581623a2e57e7b0d">uexport_init()</a>, <a class="el" href="update__channel_8php.html#aca52a9da500f0db2f0a8666af5bc06ba">update_channel_content()</a>, <a class="el" href="update__display_8php.html#aa36ac524059e209d5d75a03c16206246">update_display_content()</a>, <a class="el" href="update__network_8php.html#a8abf5b9f65af6a27ee2f9d7207ed1b41">update_network_content()</a>, <a class="el" href="update__search_8php.html#ace4c3a23fa7d6922399e27c297a6ba52">update_search_content()</a>, <a class="el" href="viewconnections_8php.html#a00163d50b17568f7b0e48b1ca9ab7330">viewconnections_init()</a>, <a class="el" href="viewsrc_8php.html#a6eff3d0c1d7d14b335c4edb785cd60a4">viewsrc_content()</a>, <a class="el" href="wall__attach_8php.html#a7385e970e93228d082f0fd7254f6e653">wall_attach_post()</a>, <a class="el" href="wall__upload_8php.html#a7cbe204244cf9e0380ee932263a74d8f">wall_upload_post()</a>, <a class="el" href="webpages_8php.html#af3b7397d4abc153e3d2147740ee1a41d">webpages_content()</a>, <a class="el" href="xref_8php.html#a9bee399213b8de8226b0d60834307473">xref_init()</a>, and <a class="el" href="zotfeed_8php.html#a24dfc23d366e7f840cf2847d0c1c8eac">zotfeed_init()</a>.</p>
+<p>Referenced by <a class="el" href="classApp.html#af6d39f63fb7116bbeb04e51696f99474">App\__construct()</a>, <a class="el" href="__well__known_8php.html#a6ebfa937a2024f0b5dab53f0ac90fed0">_well_known_init()</a>, <a class="el" href="achievements_8php.html#a35ae04ada0e227d19671f289a32fb30e">achievements_content()</a>, <a class="el" href="admin_8php.html#afef415e4011607fbb665610441595015">admin_content()</a>, <a class="el" href="admin_8php.html#ad6f87a764fd35f522c7b4c351d7878ec">admin_page_channels()</a>, <a class="el" href="admin_8php.html#aaa6addf2dbc3f3fcf99244a56b41eade">admin_page_dbsync()</a>, <a class="el" href="admin_8php.html#a3deba594ca1e11694eac1de0b724ef0a">admin_page_profs()</a>, <a class="el" href="admin_8php.html#a62f10f90c47686c9c3c37c4c03a108d2">admin_page_users()</a>, <a class="el" href="admin_8php.html#acf51f5837a7427832144c2bf7308ada3">admin_post()</a>, <a class="el" href="include_2api_8php.html#aa40bae797bcd9ccacffdce5a3b5a1afa">api_get_user()</a>, <a class="el" href="mod_2apps_8php.html#a546016cb960d0b110ee8e489dfa6c27c">apps_content()</a>, <a class="el" href="mod_2attach_8php.html#aa88eb5ad87aa1036a30e70339cc6c1b1">attach_init()</a>, <a class="el" href="block_8php.html#a8a82a470acdfbc7a8e749509caeeea45">block_content()</a>, <a class="el" href="blocks_8php.html#aebe88302181883d2b17d6e98a1aaebe9">blocks_init()</a>, <a class="el" href="channel_8php.html#ac7c8c7845741baadf87fae6bc279f3dc">channel_init()</a>, <a class="el" href="mod_2chat_8php.html#a8b0b8bee6fef6477e8c64c5e951b1b4f">chat_content()</a>, <a class="el" href="mod_2chat_8php.html#aa9ae4782e9baef0b7314ab9527c2707e">chat_init()</a>, <a class="el" href="cloud_8php.html#ad2e96e917852f27dedfc263d37e13756">cloud_init()</a>, <a class="el" href="common_8php.html#aca62f113655809f41f49042ce9b123c2">common_init()</a>, <a class="el" href="connect_8php.html#ad46a38f32fd7a3d324b1fa26373efa36">connect_init()</a>, <a class="el" href="connections_8php.html#aec2e457420fce3e3bf6a9f48e36df25c">connections_content()</a>, <a class="el" href="connedit_8php.html#a795acb3d9d841f55c255d7611681ab67">connedit_content()</a>, <a class="el" href="connedit_8php.html#a4da871e075597a09a8b374b9171dd92e">connedit_init()</a>, <a class="el" href="contactgroup_8php.html#a18c7391b1b25debaf98c9dba639caab3">contactgroup_content()</a>, <a class="el" href="dirsearch_8php.html#aa1fb04e1de4f25b63349ac78f94ceb4c">dirsearch_content()</a>, <a class="el" href="display_8php.html#a37137c98d47bf3306f4c2bb9f5b60de0">display_content()</a>, <a class="el" href="editblock_8php.html#abbe8f55de06967bc8d79d620509a49e6">editblock_content()</a>, <a class="el" href="editblock_8php.html#ab7806bb42ae5e93f0330d7bd179d4b3e">editblock_init()</a>, <a class="el" href="editlayout_8php.html#aa877e4157a26b099de904164181dd386">editlayout_content()</a>, <a class="el" href="editlayout_8php.html#a97c1e93d9e75ad8cd2c2f9a7f77341a7">editlayout_init()</a>, <a class="el" href="editpost_8php.html#a34011690864d122680c802e9e748ccfb">editpost_content()</a>, <a class="el" href="editwebpage_8php.html#a375e945255fad79a71036528f7480650">editwebpage_content()</a>, <a class="el" href="editwebpage_8php.html#a94109f9c796fbe92508bf9574e35d19f">editwebpage_init()</a>, <a class="el" href="events_8php.html#a1d293fb217ae6bc9e3858c4b32e363ec">events_content()</a>, <a class="el" href="feed_8php.html#af86137700b56f33d1d5f25c8dec22c04">feed_init()</a>, <a class="el" href="filestorage_8php.html#a61bb1be78472555df4ce619f51014040">filestorage_content()</a>, <a class="el" href="mod_2group_8php.html#a07a64f6c65b0080d8190b3d9728a7a83">group_content()</a>, <a class="el" href="mod_2group_8php.html#aed1f009b1221348021bb34761160ef35">group_post()</a>, <a class="el" href="hcard_8php.html#ac34f26b0e6a37eef44fa49bea135136d">hcard_init()</a>, <a class="el" href="help_8php.html#af055e15f600ffa6fbca9386fdf715224">help_content()</a>, <a class="el" href="home_8php.html#a6e3dbf78f4ed74ab2577de221190b33f">home_content()</a>, <a class="el" href="home_8php.html#ac4642c38b6f23a8d065dd4a75c620bde">home_init()</a>, <a class="el" href="importelm_8php.html#a1a4f71e6d76ace6add5e9659845f5e5f">importelm_post()</a>, <a class="el" href="item_8php.html#a764bbb2e9a885a86fb23d0b5e4a09221">item_content()</a>, <a class="el" href="layouts_8php.html#a6e0193759ad9eef76d3df2db24237b50">layouts_content()</a>, <a class="el" href="layouts_8php.html#a39c8e9f72641c684c8b689bd91a642fa">layouts_init()</a>, <a class="el" href="like_8php.html#a9d7dd268f21c21e9d29dd2aca2dd9538">like_content()</a>, <a class="el" href="lockview_8php.html#a851e26ab9a1008df5c5ebebea31e9b44">lockview_content()</a>, <a class="el" href="mail_8php.html#a3c7c485fc69f92371e8b20936040eca1">mail_content()</a>, <a class="el" href="manage_8php.html#a2bca247b5296827638959138367db4f5">manage_content()</a>, <a class="el" href="mod_2menu_8php.html#a6fed23af14d71a78a4153c8363a685cf">menu_content()</a>, <a class="el" href="mod_2menu_8php.html#aaa491ef173868fe002aece4632bcf393">menu_post()</a>, <a class="el" href="mod_2message_8php.html#ac72dfed3ce08fcb331d66b37edc6e15f">message_content()</a>, <a class="el" href="mitem_8php.html#a7a31b702ecad18eeb6a38b243ff0037e">mitem_content()</a>, <a class="el" href="mitem_8php.html#a9627cd857cafdf04e4fc0ae48c8e8518">mitem_init()</a>, <a class="el" href="mitem_8php.html#a6ee694cca4b551a20d7c7a94b5243ec1">mitem_post()</a>, <a class="el" href="new__channel_8php.html#a1ad7f99e4366a32942c6b954aba3a164">new_channel_init()</a>, <a class="el" href="notes_8php.html#a4dbd7b1f906440746af48b484d66535a">notes_init()</a>, <a class="el" href="mod_2notify_8php.html#a94f9a6a9d4b5fd704baafff0c34f41ae">notify_init()</a>, <a class="el" href="mod_2oembed_8php.html#a9145025aaf057fb5d3f9f7011e5e1014">oembed_init()</a>, <a class="el" href="oexchange_8php.html#a2d8b785cd7d041a4e6274f5af370cf26">oexchange_content()</a>, <a class="el" href="oexchange_8php.html#ac8e2e469ddc3db984b0c1b44558aca59">oexchange_init()</a>, <a class="el" href="online_8php.html#a80e107c84eb722b0ca11d0413b96f9f7">online_init()</a>, <a class="el" href="p_8php.html#af9d5530ca0b3dc9409cf591c39e2480e">p_init()</a>, <a class="el" href="page_8php.html#a4d89800c0366a239191b1692c09635cf">page_init()</a>, <a class="el" href="pdledit_8php.html#a59cb550f6b7a4e7d8196fbc9de601619">pdledit_content()</a>, <a class="el" href="photo_8php.html#a582779d24882b0d31ee909a91d70a448">photo_init()</a>, <a class="el" href="mod_2photos_8php.html#aa87382611a66ec5effdb2d78f13f5812">photos_content()</a>, <a class="el" href="mod_2photos_8php.html#ab950295cd77626f5fe65331a87693014">photos_init()</a>, <a class="el" href="mod_2photos_8php.html#a062bed4d04d14fee8a53f4c9be673080">photos_post()</a>, <a class="el" href="ping_8php.html#a77217b1b190b4c5d8770867b45f0c0a1">ping_init()</a>, <a class="el" href="poco_8php.html#a53def16f75e3d41f1d2bb7cfa4905498">poco_init()</a>, <a class="el" href="profile_8php.html#ab5d0246be0552e2182a585c1206d22a5">profile_init()</a>, <a class="el" href="profile__photo_8php.html#a4b80234074bd603221aa5364f330e479">profile_photo_post()</a>, <a class="el" href="profiles_8php.html#a46975783b8b8d70402d51487eb1f0b00">profiles_content()</a>, <a class="el" href="profiles_8php.html#a36f71405ad536228f8bb84a551b23f7e">profiles_init()</a>, <a class="el" href="profiles_8php.html#ab0362c81b1d3b0b12a772b9fac446e04">profiles_post()</a>, <a class="el" href="profperm_8php.html#aef015787de2373d9fb3fe3f814fb5023">profperm_content()</a>, <a class="el" href="queue_8php.html#af8c93de86d866c3200174c8450a0f341">queue_run()</a>, <a class="el" href="rbmark_8php.html#a43fec4960b50926251574762cc491f76">rbmark_content()</a>, <a class="el" href="receive_8php.html#a03d8fa26e77844020ba5602deca7d494">receive_post()</a>, <a class="el" href="register_8php.html#ae20c0cd40f738d6295de58b9202c83d5">register_init()</a>, <a class="el" href="regmod_8php.html#a7953df4e32e63946565e90cdd5d50409">regmod_content()</a>, <a class="el" href="regver_8php.html#ad2c5f644fd1b099abd7c715b7df6f50f">regver_content()</a>, <a class="el" href="rpost_8php.html#a8190354d789000806d9879aea276728f">rpost_content()</a>, <a class="el" href="settings_8php.html#a3a4cde287482fced008583f54ba2a722">settings_init()</a>, <a class="el" href="settings_8php.html#aa7ee94d88ac088edb04ccf3a26de3586">settings_post()</a>, <a class="el" href="setup_8php.html#a267555abd17290e659b4bf44b885e4e0">setup_init()</a>, <a class="el" href="share_8php.html#afeb26046bdd02567ecd29ab5f188b249">share_init()</a>, <a class="el" href="sources_8php.html#ac442ccef080ab95772d8929fcafcb4b7">sources_content()</a>, <a class="el" href="starred_8php.html#a63024fb418c678e49fd535e3752d349a">starred_init()</a>, <a class="el" href="subthread_8php.html#a50368f3d825b77996030528e7fbfa3d3">subthread_content()</a>, <a class="el" href="tagger_8php.html#a0e4a3eb177d1684553c547503d67161c">tagger_content()</a>, <a class="el" href="tagrm_8php.html#adfd4ea5b4d7fc6d9c9e042af5cd7d49a">tagrm_content()</a>, <a class="el" href="thing_8php.html#a24a35f1e64029a67fdbea94a776ae04b">thing_content()</a>, <a class="el" href="uexport_8php.html#a118920137dedebe0581623a2e57e7b0d">uexport_init()</a>, <a class="el" href="update__channel_8php.html#aca52a9da500f0db2f0a8666af5bc06ba">update_channel_content()</a>, <a class="el" href="update__display_8php.html#aa36ac524059e209d5d75a03c16206246">update_display_content()</a>, <a class="el" href="update__home_8php.html#a668340089acd150b830134476a647d05">update_home_content()</a>, <a class="el" href="update__network_8php.html#a8abf5b9f65af6a27ee2f9d7207ed1b41">update_network_content()</a>, <a class="el" href="update__search_8php.html#ace4c3a23fa7d6922399e27c297a6ba52">update_search_content()</a>, <a class="el" href="viewconnections_8php.html#a00163d50b17568f7b0e48b1ca9ab7330">viewconnections_init()</a>, <a class="el" href="viewsrc_8php.html#a6eff3d0c1d7d14b335c4edb785cd60a4">viewsrc_content()</a>, <a class="el" href="wall__attach_8php.html#a7385e970e93228d082f0fd7254f6e653">wall_attach_post()</a>, <a class="el" href="wall__upload_8php.html#a7cbe204244cf9e0380ee932263a74d8f">wall_upload_post()</a>, <a class="el" href="webpages_8php.html#af9ad0b65eba79acead3fa32b43d888b7">webpages_init()</a>, <a class="el" href="xref_8php.html#a9bee399213b8de8226b0d60834307473">xref_init()</a>, and <a class="el" href="zotfeed_8php.html#a24dfc23d366e7f840cf2847d0c1c8eac">zotfeed_init()</a>.</p>
</div>
</div>
@@ -770,7 +862,7 @@ Variables</h2></td></tr>
</table>
</div><div class="memdoc">
-<p>Referenced by <a class="el" href="classApp.html#af6d39f63fb7116bbeb04e51696f99474">App\__construct()</a>, <a class="el" href="__well__known_8php.html#a6ebfa937a2024f0b5dab53f0ac90fed0">_well_known_init()</a>, <a class="el" href="achievements_8php.html#a35ae04ada0e227d19671f289a32fb30e">achievements_content()</a>, <a class="el" href="admin_8php.html#afef415e4011607fbb665610441595015">admin_content()</a>, <a class="el" href="admin_8php.html#ad6f87a764fd35f522c7b4c351d7878ec">admin_page_channels()</a>, <a class="el" href="admin_8php.html#aaa6addf2dbc3f3fcf99244a56b41eade">admin_page_dbsync()</a>, <a class="el" href="admin_8php.html#a62f10f90c47686c9c3c37c4c03a108d2">admin_page_users()</a>, <a class="el" href="admin_8php.html#acf51f5837a7427832144c2bf7308ada3">admin_post()</a>, <a class="el" href="include_2api_8php.html#aa40bae797bcd9ccacffdce5a3b5a1afa">api_get_user()</a>, <a class="el" href="include_2api_8php.html#ad4c29f43418f6110f85a6b3998239ab4">api_statuses_destroy()</a>, <a class="el" href="include_2api_8php.html#ae0fa388479cace9c5a7a45b571ab42f8">api_statuses_repeat()</a>, <a class="el" href="include_2api_8php.html#af6f1d89cdb0a0621025efbec1597bc63">api_statuses_show()</a>, <a class="el" href="mod_2apps_8php.html#a546016cb960d0b110ee8e489dfa6c27c">apps_content()</a>, <a class="el" href="mod_2attach_8php.html#aa88eb5ad87aa1036a30e70339cc6c1b1">attach_init()</a>, <a class="el" href="block_8php.html#a8a82a470acdfbc7a8e749509caeeea45">block_content()</a>, <a class="el" href="block_8php.html#a9b61c96044ed2a068f18c10370a78d5c">block_init()</a>, <a class="el" href="blocks_8php.html#a2531a8fd51db3cecb2eb20c002c66e12">blocks_content()</a>, <a class="el" href="channel_8php.html#ac7c8c7845741baadf87fae6bc279f3dc">channel_init()</a>, <a class="el" href="mod_2chat_8php.html#a8b0b8bee6fef6477e8c64c5e951b1b4f">chat_content()</a>, <a class="el" href="mod_2chat_8php.html#aa9ae4782e9baef0b7314ab9527c2707e">chat_init()</a>, <a class="el" href="cloud_8php.html#a1b79a6fe0454bc76673ad9aef55bf02d">cloud_init()</a>, <a class="el" href="common_8php.html#aca62f113655809f41f49042ce9b123c2">common_init()</a>, <a class="el" href="connect_8php.html#ad46a38f32fd7a3d324b1fa26373efa36">connect_init()</a>, <a class="el" href="connections_8php.html#aec2e457420fce3e3bf6a9f48e36df25c">connections_content()</a>, <a class="el" href="connections_8php.html#a1224058db8e3fb56463eb312f98e561d">connections_post()</a>, <a class="el" href="connedit_8php.html#a795acb3d9d841f55c255d7611681ab67">connedit_content()</a>, <a class="el" href="connedit_8php.html#a4da871e075597a09a8b374b9171dd92e">connedit_init()</a>, <a class="el" href="connedit_8php.html#a234c48426b652bf4d37053f2af329ac5">connedit_post()</a>, <a class="el" href="contactgroup_8php.html#a18c7391b1b25debaf98c9dba639caab3">contactgroup_content()</a>, <a class="el" href="dirsearch_8php.html#aa1fb04e1de4f25b63349ac78f94ceb4c">dirsearch_content()</a>, <a class="el" href="display_8php.html#a37137c98d47bf3306f4c2bb9f5b60de0">display_content()</a>, <a class="el" href="editblock_8php.html#abbe8f55de06967bc8d79d620509a49e6">editblock_content()</a>, <a class="el" href="editlayout_8php.html#aa877e4157a26b099de904164181dd386">editlayout_content()</a>, <a class="el" href="editpost_8php.html#a34011690864d122680c802e9e748ccfb">editpost_content()</a>, <a class="el" href="editwebpage_8php.html#a375e945255fad79a71036528f7480650">editwebpage_content()</a>, <a class="el" href="events_8php.html#a1d293fb217ae6bc9e3858c4b32e363ec">events_content()</a>, <a class="el" href="feed_8php.html#af86137700b56f33d1d5f25c8dec22c04">feed_init()</a>, <a class="el" href="filestorage_8php.html#a61bb1be78472555df4ce619f51014040">filestorage_content()</a>, <a class="el" href="identity_8php.html#a332df795f684788002f5a6424abacfd7">get_online_status()</a>, <a class="el" href="mod_2group_8php.html#a07a64f6c65b0080d8190b3d9728a7a83">group_content()</a>, <a class="el" href="mod_2group_8php.html#aed1f009b1221348021bb34761160ef35">group_post()</a>, <a class="el" href="help_8php.html#af055e15f600ffa6fbca9386fdf715224">help_content()</a>, <a class="el" href="importelm_8php.html#a1a4f71e6d76ace6add5e9659845f5e5f">importelm_post()</a>, <a class="el" href="item_8php.html#a764bbb2e9a885a86fb23d0b5e4a09221">item_content()</a>, <a class="el" href="layouts_8php.html#a6e0193759ad9eef76d3df2db24237b50">layouts_content()</a>, <a class="el" href="like_8php.html#a9d7dd268f21c21e9d29dd2aca2dd9538">like_content()</a>, <a class="el" href="lockview_8php.html#a851e26ab9a1008df5c5ebebea31e9b44">lockview_content()</a>, <a class="el" href="mail_8php.html#a3c7c485fc69f92371e8b20936040eca1">mail_content()</a>, <a class="el" href="manage_8php.html#a2bca247b5296827638959138367db4f5">manage_content()</a>, <a class="el" href="mod_2menu_8php.html#a6fed23af14d71a78a4153c8363a685cf">menu_content()</a>, <a class="el" href="mod_2menu_8php.html#aaa491ef173868fe002aece4632bcf393">menu_post()</a>, <a class="el" href="mod_2message_8php.html#ac72dfed3ce08fcb331d66b37edc6e15f">message_content()</a>, <a class="el" href="mitem_8php.html#a7a31b702ecad18eeb6a38b243ff0037e">mitem_content()</a>, <a class="el" href="mitem_8php.html#a9627cd857cafdf04e4fc0ae48c8e8518">mitem_init()</a>, <a class="el" href="mitem_8php.html#a6ee694cca4b551a20d7c7a94b5243ec1">mitem_post()</a>, <a class="el" href="new__channel_8php.html#a1ad7f99e4366a32942c6b954aba3a164">new_channel_init()</a>, <a class="el" href="notes_8php.html#a4dbd7b1f906440746af48b484d66535a">notes_init()</a>, <a class="el" href="mod_2notify_8php.html#a94f9a6a9d4b5fd704baafff0c34f41ae">notify_init()</a>, <a class="el" href="mod_2oembed_8php.html#a9145025aaf057fb5d3f9f7011e5e1014">oembed_init()</a>, <a class="el" href="oexchange_8php.html#a2d8b785cd7d041a4e6274f5af370cf26">oexchange_content()</a>, <a class="el" href="oexchange_8php.html#ac8e2e469ddc3db984b0c1b44558aca59">oexchange_init()</a>, <a class="el" href="online_8php.html#a80e107c84eb722b0ca11d0413b96f9f7">online_init()</a>, <a class="el" href="page_8php.html#a91a5f649f68406149108bded1dc90b22">page_content()</a>, <a class="el" href="page_8php.html#a4d89800c0366a239191b1692c09635cf">page_init()</a>, <a class="el" href="pdledit_8php.html#a59cb550f6b7a4e7d8196fbc9de601619">pdledit_content()</a>, <a class="el" href="photo_8php.html#a582779d24882b0d31ee909a91d70a448">photo_init()</a>, <a class="el" href="mod_2photos_8php.html#aa87382611a66ec5effdb2d78f13f5812">photos_content()</a>, <a class="el" href="mod_2photos_8php.html#ab950295cd77626f5fe65331a87693014">photos_init()</a>, <a class="el" href="mod_2photos_8php.html#a062bed4d04d14fee8a53f4c9be673080">photos_post()</a>, <a class="el" href="ping_8php.html#a77217b1b190b4c5d8770867b45f0c0a1">ping_init()</a>, <a class="el" href="poco_8php.html#a53def16f75e3d41f1d2bb7cfa4905498">poco_init()</a>, <a class="el" href="profile_8php.html#ab5d0246be0552e2182a585c1206d22a5">profile_init()</a>, <a class="el" href="profile__photo_8php.html#a4b80234074bd603221aa5364f330e479">profile_photo_post()</a>, <a class="el" href="profiles_8php.html#a46975783b8b8d70402d51487eb1f0b00">profiles_content()</a>, <a class="el" href="profiles_8php.html#a36f71405ad536228f8bb84a551b23f7e">profiles_init()</a>, <a class="el" href="profiles_8php.html#ab0362c81b1d3b0b12a772b9fac446e04">profiles_post()</a>, <a class="el" href="profperm_8php.html#aef015787de2373d9fb3fe3f814fb5023">profperm_content()</a>, <a class="el" href="queue_8php.html#af8c93de86d866c3200174c8450a0f341">queue_run()</a>, <a class="el" href="rbmark_8php.html#a43fec4960b50926251574762cc491f76">rbmark_content()</a>, <a class="el" href="register_8php.html#ae20c0cd40f738d6295de58b9202c83d5">register_init()</a>, <a class="el" href="regmod_8php.html#a7953df4e32e63946565e90cdd5d50409">regmod_content()</a>, <a class="el" href="regver_8php.html#ad2c5f644fd1b099abd7c715b7df6f50f">regver_content()</a>, <a class="el" href="rpost_8php.html#a8190354d789000806d9879aea276728f">rpost_content()</a>, <a class="el" href="settings_8php.html#aa7ee94d88ac088edb04ccf3a26de3586">settings_post()</a>, <a class="el" href="setup_8php.html#a267555abd17290e659b4bf44b885e4e0">setup_init()</a>, <a class="el" href="share_8php.html#afeb26046bdd02567ecd29ab5f188b249">share_init()</a>, <a class="el" href="sources_8php.html#ac442ccef080ab95772d8929fcafcb4b7">sources_content()</a>, <a class="el" href="starred_8php.html#a63024fb418c678e49fd535e3752d349a">starred_init()</a>, <a class="el" href="subthread_8php.html#a50368f3d825b77996030528e7fbfa3d3">subthread_content()</a>, <a class="el" href="tagger_8php.html#a0e4a3eb177d1684553c547503d67161c">tagger_content()</a>, <a class="el" href="thing_8php.html#a24a35f1e64029a67fdbea94a776ae04b">thing_content()</a>, <a class="el" href="uexport_8php.html#a118920137dedebe0581623a2e57e7b0d">uexport_init()</a>, <a class="el" href="update__channel_8php.html#aca52a9da500f0db2f0a8666af5bc06ba">update_channel_content()</a>, <a class="el" href="update__display_8php.html#aa36ac524059e209d5d75a03c16206246">update_display_content()</a>, <a class="el" href="update__network_8php.html#a8abf5b9f65af6a27ee2f9d7207ed1b41">update_network_content()</a>, <a class="el" href="update__search_8php.html#ace4c3a23fa7d6922399e27c297a6ba52">update_search_content()</a>, <a class="el" href="view_8php.html#ac168f6c61a91ba2063f13b441c0ae96e">view_init()</a>, <a class="el" href="viewconnections_8php.html#a00163d50b17568f7b0e48b1ca9ab7330">viewconnections_init()</a>, <a class="el" href="viewsrc_8php.html#a6eff3d0c1d7d14b335c4edb785cd60a4">viewsrc_content()</a>, <a class="el" href="wall__attach_8php.html#a7385e970e93228d082f0fd7254f6e653">wall_attach_post()</a>, <a class="el" href="wall__upload_8php.html#a7cbe204244cf9e0380ee932263a74d8f">wall_upload_post()</a>, <a class="el" href="webpages_8php.html#af3b7397d4abc153e3d2147740ee1a41d">webpages_content()</a>, <a class="el" href="widgets_8php.html#aa189a07241246d97efbee29f1c6a6f7f">widget_collections()</a>, <a class="el" href="widgets_8php.html#afa2e55a78f95667a6da082efac7fec74">widget_mailmenu()</a>, <a class="el" href="widgets_8php.html#aaa73bcf1702eaadd9dcd253502f55e01">widget_settings_menu()</a>, <a class="el" href="xref_8php.html#a9bee399213b8de8226b0d60834307473">xref_init()</a>, and <a class="el" href="zotfeed_8php.html#a24dfc23d366e7f840cf2847d0c1c8eac">zotfeed_init()</a>.</p>
+<p>Referenced by <a class="el" href="classApp.html#af6d39f63fb7116bbeb04e51696f99474">App\__construct()</a>, <a class="el" href="__well__known_8php.html#a6ebfa937a2024f0b5dab53f0ac90fed0">_well_known_init()</a>, <a class="el" href="achievements_8php.html#a35ae04ada0e227d19671f289a32fb30e">achievements_content()</a>, <a class="el" href="admin_8php.html#afef415e4011607fbb665610441595015">admin_content()</a>, <a class="el" href="admin_8php.html#ad6f87a764fd35f522c7b4c351d7878ec">admin_page_channels()</a>, <a class="el" href="admin_8php.html#aaa6addf2dbc3f3fcf99244a56b41eade">admin_page_dbsync()</a>, <a class="el" href="admin_8php.html#a3deba594ca1e11694eac1de0b724ef0a">admin_page_profs()</a>, <a class="el" href="admin_8php.html#a62f10f90c47686c9c3c37c4c03a108d2">admin_page_users()</a>, <a class="el" href="admin_8php.html#acf51f5837a7427832144c2bf7308ada3">admin_post()</a>, <a class="el" href="include_2api_8php.html#aa40bae797bcd9ccacffdce5a3b5a1afa">api_get_user()</a>, <a class="el" href="include_2api_8php.html#ad4c29f43418f6110f85a6b3998239ab4">api_statuses_destroy()</a>, <a class="el" href="include_2api_8php.html#ae0fa388479cace9c5a7a45b571ab42f8">api_statuses_repeat()</a>, <a class="el" href="include_2api_8php.html#af6f1d89cdb0a0621025efbec1597bc63">api_statuses_show()</a>, <a class="el" href="mod_2apps_8php.html#a546016cb960d0b110ee8e489dfa6c27c">apps_content()</a>, <a class="el" href="mod_2attach_8php.html#aa88eb5ad87aa1036a30e70339cc6c1b1">attach_init()</a>, <a class="el" href="block_8php.html#a8a82a470acdfbc7a8e749509caeeea45">block_content()</a>, <a class="el" href="block_8php.html#a9b61c96044ed2a068f18c10370a78d5c">block_init()</a>, <a class="el" href="blocks_8php.html#a2531a8fd51db3cecb2eb20c002c66e12">blocks_content()</a>, <a class="el" href="blocks_8php.html#aebe88302181883d2b17d6e98a1aaebe9">blocks_init()</a>, <a class="el" href="channel_8php.html#ac7c8c7845741baadf87fae6bc279f3dc">channel_init()</a>, <a class="el" href="mod_2chat_8php.html#a8b0b8bee6fef6477e8c64c5e951b1b4f">chat_content()</a>, <a class="el" href="mod_2chat_8php.html#aa9ae4782e9baef0b7314ab9527c2707e">chat_init()</a>, <a class="el" href="cloud_8php.html#ad2e96e917852f27dedfc263d37e13756">cloud_init()</a>, <a class="el" href="common_8php.html#aca62f113655809f41f49042ce9b123c2">common_init()</a>, <a class="el" href="connect_8php.html#ad46a38f32fd7a3d324b1fa26373efa36">connect_init()</a>, <a class="el" href="connections_8php.html#aec2e457420fce3e3bf6a9f48e36df25c">connections_content()</a>, <a class="el" href="connections_8php.html#a1224058db8e3fb56463eb312f98e561d">connections_post()</a>, <a class="el" href="connedit_8php.html#a795acb3d9d841f55c255d7611681ab67">connedit_content()</a>, <a class="el" href="connedit_8php.html#a4da871e075597a09a8b374b9171dd92e">connedit_init()</a>, <a class="el" href="connedit_8php.html#a234c48426b652bf4d37053f2af329ac5">connedit_post()</a>, <a class="el" href="contactgroup_8php.html#a18c7391b1b25debaf98c9dba639caab3">contactgroup_content()</a>, <a class="el" href="dirsearch_8php.html#aa1fb04e1de4f25b63349ac78f94ceb4c">dirsearch_content()</a>, <a class="el" href="display_8php.html#a37137c98d47bf3306f4c2bb9f5b60de0">display_content()</a>, <a class="el" href="editblock_8php.html#abbe8f55de06967bc8d79d620509a49e6">editblock_content()</a>, <a class="el" href="editblock_8php.html#ab7806bb42ae5e93f0330d7bd179d4b3e">editblock_init()</a>, <a class="el" href="editlayout_8php.html#aa877e4157a26b099de904164181dd386">editlayout_content()</a>, <a class="el" href="editlayout_8php.html#a97c1e93d9e75ad8cd2c2f9a7f77341a7">editlayout_init()</a>, <a class="el" href="editpost_8php.html#a34011690864d122680c802e9e748ccfb">editpost_content()</a>, <a class="el" href="editwebpage_8php.html#a375e945255fad79a71036528f7480650">editwebpage_content()</a>, <a class="el" href="editwebpage_8php.html#a94109f9c796fbe92508bf9574e35d19f">editwebpage_init()</a>, <a class="el" href="events_8php.html#a1d293fb217ae6bc9e3858c4b32e363ec">events_content()</a>, <a class="el" href="feed_8php.html#af86137700b56f33d1d5f25c8dec22c04">feed_init()</a>, <a class="el" href="filestorage_8php.html#a61bb1be78472555df4ce619f51014040">filestorage_content()</a>, <a class="el" href="identity_8php.html#a332df795f684788002f5a6424abacfd7">get_online_status()</a>, <a class="el" href="mod_2group_8php.html#a07a64f6c65b0080d8190b3d9728a7a83">group_content()</a>, <a class="el" href="mod_2group_8php.html#aed1f009b1221348021bb34761160ef35">group_post()</a>, <a class="el" href="hcard_8php.html#ac34f26b0e6a37eef44fa49bea135136d">hcard_init()</a>, <a class="el" href="help_8php.html#af055e15f600ffa6fbca9386fdf715224">help_content()</a>, <a class="el" href="home_8php.html#a6e3dbf78f4ed74ab2577de221190b33f">home_content()</a>, <a class="el" href="home_8php.html#ac4642c38b6f23a8d065dd4a75c620bde">home_init()</a>, <a class="el" href="importelm_8php.html#a1a4f71e6d76ace6add5e9659845f5e5f">importelm_post()</a>, <a class="el" href="item_8php.html#a764bbb2e9a885a86fb23d0b5e4a09221">item_content()</a>, <a class="el" href="layouts_8php.html#a6e0193759ad9eef76d3df2db24237b50">layouts_content()</a>, <a class="el" href="layouts_8php.html#a39c8e9f72641c684c8b689bd91a642fa">layouts_init()</a>, <a class="el" href="like_8php.html#a9d7dd268f21c21e9d29dd2aca2dd9538">like_content()</a>, <a class="el" href="lockview_8php.html#a851e26ab9a1008df5c5ebebea31e9b44">lockview_content()</a>, <a class="el" href="mail_8php.html#a3c7c485fc69f92371e8b20936040eca1">mail_content()</a>, <a class="el" href="manage_8php.html#a2bca247b5296827638959138367db4f5">manage_content()</a>, <a class="el" href="mod_2menu_8php.html#a6fed23af14d71a78a4153c8363a685cf">menu_content()</a>, <a class="el" href="mod_2menu_8php.html#aaa491ef173868fe002aece4632bcf393">menu_post()</a>, <a class="el" href="mod_2message_8php.html#ac72dfed3ce08fcb331d66b37edc6e15f">message_content()</a>, <a class="el" href="mitem_8php.html#a7a31b702ecad18eeb6a38b243ff0037e">mitem_content()</a>, <a class="el" href="mitem_8php.html#a9627cd857cafdf04e4fc0ae48c8e8518">mitem_init()</a>, <a class="el" href="mitem_8php.html#a6ee694cca4b551a20d7c7a94b5243ec1">mitem_post()</a>, <a class="el" href="new__channel_8php.html#a1ad7f99e4366a32942c6b954aba3a164">new_channel_init()</a>, <a class="el" href="notes_8php.html#a4dbd7b1f906440746af48b484d66535a">notes_init()</a>, <a class="el" href="mod_2notify_8php.html#a94f9a6a9d4b5fd704baafff0c34f41ae">notify_init()</a>, <a class="el" href="mod_2oembed_8php.html#a9145025aaf057fb5d3f9f7011e5e1014">oembed_init()</a>, <a class="el" href="oexchange_8php.html#a2d8b785cd7d041a4e6274f5af370cf26">oexchange_content()</a>, <a class="el" href="oexchange_8php.html#ac8e2e469ddc3db984b0c1b44558aca59">oexchange_init()</a>, <a class="el" href="online_8php.html#a80e107c84eb722b0ca11d0413b96f9f7">online_init()</a>, <a class="el" href="p_8php.html#af9d5530ca0b3dc9409cf591c39e2480e">p_init()</a>, <a class="el" href="page_8php.html#a4d89800c0366a239191b1692c09635cf">page_init()</a>, <a class="el" href="pdledit_8php.html#a59cb550f6b7a4e7d8196fbc9de601619">pdledit_content()</a>, <a class="el" href="photo_8php.html#a582779d24882b0d31ee909a91d70a448">photo_init()</a>, <a class="el" href="mod_2photos_8php.html#aa87382611a66ec5effdb2d78f13f5812">photos_content()</a>, <a class="el" href="mod_2photos_8php.html#ab950295cd77626f5fe65331a87693014">photos_init()</a>, <a class="el" href="mod_2photos_8php.html#a062bed4d04d14fee8a53f4c9be673080">photos_post()</a>, <a class="el" href="ping_8php.html#a77217b1b190b4c5d8770867b45f0c0a1">ping_init()</a>, <a class="el" href="poco_8php.html#a53def16f75e3d41f1d2bb7cfa4905498">poco_init()</a>, <a class="el" href="profile_8php.html#ab5d0246be0552e2182a585c1206d22a5">profile_init()</a>, <a class="el" href="profile__photo_8php.html#a4b80234074bd603221aa5364f330e479">profile_photo_post()</a>, <a class="el" href="profiles_8php.html#a46975783b8b8d70402d51487eb1f0b00">profiles_content()</a>, <a class="el" href="profiles_8php.html#a36f71405ad536228f8bb84a551b23f7e">profiles_init()</a>, <a class="el" href="profiles_8php.html#ab0362c81b1d3b0b12a772b9fac446e04">profiles_post()</a>, <a class="el" href="profperm_8php.html#aef015787de2373d9fb3fe3f814fb5023">profperm_content()</a>, <a class="el" href="queue_8php.html#af8c93de86d866c3200174c8450a0f341">queue_run()</a>, <a class="el" href="rbmark_8php.html#a43fec4960b50926251574762cc491f76">rbmark_content()</a>, <a class="el" href="receive_8php.html#a03d8fa26e77844020ba5602deca7d494">receive_post()</a>, <a class="el" href="register_8php.html#ae20c0cd40f738d6295de58b9202c83d5">register_init()</a>, <a class="el" href="regmod_8php.html#a7953df4e32e63946565e90cdd5d50409">regmod_content()</a>, <a class="el" href="regver_8php.html#ad2c5f644fd1b099abd7c715b7df6f50f">regver_content()</a>, <a class="el" href="rpost_8php.html#a8190354d789000806d9879aea276728f">rpost_content()</a>, <a class="el" href="settings_8php.html#aa7ee94d88ac088edb04ccf3a26de3586">settings_post()</a>, <a class="el" href="setup_8php.html#a267555abd17290e659b4bf44b885e4e0">setup_init()</a>, <a class="el" href="share_8php.html#afeb26046bdd02567ecd29ab5f188b249">share_init()</a>, <a class="el" href="sources_8php.html#ac442ccef080ab95772d8929fcafcb4b7">sources_content()</a>, <a class="el" href="starred_8php.html#a63024fb418c678e49fd535e3752d349a">starred_init()</a>, <a class="el" href="subthread_8php.html#a50368f3d825b77996030528e7fbfa3d3">subthread_content()</a>, <a class="el" href="tagger_8php.html#a0e4a3eb177d1684553c547503d67161c">tagger_content()</a>, <a class="el" href="tagrm_8php.html#adfd4ea5b4d7fc6d9c9e042af5cd7d49a">tagrm_content()</a>, <a class="el" href="thing_8php.html#a24a35f1e64029a67fdbea94a776ae04b">thing_content()</a>, <a class="el" href="uexport_8php.html#a118920137dedebe0581623a2e57e7b0d">uexport_init()</a>, <a class="el" href="update__channel_8php.html#aca52a9da500f0db2f0a8666af5bc06ba">update_channel_content()</a>, <a class="el" href="update__display_8php.html#aa36ac524059e209d5d75a03c16206246">update_display_content()</a>, <a class="el" href="update__home_8php.html#a668340089acd150b830134476a647d05">update_home_content()</a>, <a class="el" href="update__network_8php.html#a8abf5b9f65af6a27ee2f9d7207ed1b41">update_network_content()</a>, <a class="el" href="update__search_8php.html#ace4c3a23fa7d6922399e27c297a6ba52">update_search_content()</a>, <a class="el" href="view_8php.html#ac168f6c61a91ba2063f13b441c0ae96e">view_init()</a>, <a class="el" href="viewconnections_8php.html#a00163d50b17568f7b0e48b1ca9ab7330">viewconnections_init()</a>, <a class="el" href="viewsrc_8php.html#a6eff3d0c1d7d14b335c4edb785cd60a4">viewsrc_content()</a>, <a class="el" href="wall__attach_8php.html#a7385e970e93228d082f0fd7254f6e653">wall_attach_post()</a>, <a class="el" href="wall__upload_8php.html#a7cbe204244cf9e0380ee932263a74d8f">wall_upload_post()</a>, <a class="el" href="webpages_8php.html#af3b7397d4abc153e3d2147740ee1a41d">webpages_content()</a>, <a class="el" href="webpages_8php.html#af9ad0b65eba79acead3fa32b43d888b7">webpages_init()</a>, <a class="el" href="widgets_8php.html#aa189a07241246d97efbee29f1c6a6f7f">widget_collections()</a>, <a class="el" href="widgets_8php.html#afa2e55a78f95667a6da082efac7fec74">widget_mailmenu()</a>, <a class="el" href="widgets_8php.html#aaa73bcf1702eaadd9dcd253502f55e01">widget_settings_menu()</a>, <a class="el" href="xref_8php.html#a9bee399213b8de8226b0d60834307473">xref_init()</a>, and <a class="el" href="zotfeed_8php.html#a24dfc23d366e7f840cf2847d0c1c8eac">zotfeed_init()</a>.</p>
</div>
</div>
@@ -797,10 +889,12 @@ Variables</h2></td></tr>
</tr>
</table>
</div><div class="memdoc">
-<p>returns querystring as string from a mapped array</p>
+
+<p>Returns querystring as string from a mapped array. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
- <tr><td class="paramname">params</td><td>Array </td></tr>
+ <tr><td class="paramtype">array</td><td class="paramname">$params</td><td>mapped array with query parameters </td></tr>
+ <tr><td class="paramtype">string</td><td class="paramname">$name</td><td>of parameter, default null</td></tr>
</table>
</dd>
</dl>
@@ -856,9 +950,17 @@ Variables</h2></td></tr>
</tr>
</table>
</div><div class="memdoc">
+
+<p>build the page. </p>
<p>Build the page - now that we have all the components</p>
+<dl class="params"><dt>Parameters</dt><dd>
+ <table class="params">
+ <tr><td class="paramtype"><a class="el" href="classApp.html" title="Our main application structure for the life of this page.">App</a></td><td class="paramname">&amp;$a</td><td>global application object </td></tr>
+ </table>
+ </dd>
+</dl>
-<p>Referenced by <a class="el" href="classRedBrowser.html#a1f7daf50bb9bfcde7345b3b1908dbd7e">RedBrowser\generateDirectoryIndex()</a>.</p>
+<p>Referenced by <a class="el" href="classRedMatrix_1_1RedDAV_1_1RedBrowser.html#af764d5f14df751f9ec86c34fab300c09">RedMatrix\RedDAV\RedBrowser\generateDirectoryIndex()</a>.</p>
</div>
</div>
@@ -894,7 +996,7 @@ Variables</h2></td></tr>
</table>
</div><div class="memdoc">
-<p>Referenced by <a class="el" href="classFriendicaSmarty.html#af12091b920b95eeef1218cbc48066ca6">FriendicaSmarty\__construct()</a>, <a class="el" href="boot_8php.html#acc4e0c910af066148b810e5fde55fff1">construct_page()</a>, <a class="el" href="boot_8php.html#a926cad0b3d8b9d9ee5da1898fc063ba3">current_theme_url()</a>, and <a class="el" href="plugin_8php.html#a65fedcffbe03562ef844cabee37d34e2">theme_include()</a>.</p>
+<p>Referenced by <a class="el" href="classFriendicaSmarty.html#af12091b920b95eeef1218cbc48066ca6">FriendicaSmarty\__construct()</a>, <a class="el" href="cloud_8php.html#ad2e96e917852f27dedfc263d37e13756">cloud_init()</a>, <a class="el" href="boot_8php.html#acc4e0c910af066148b810e5fde55fff1">construct_page()</a>, <a class="el" href="boot_8php.html#a926cad0b3d8b9d9ee5da1898fc063ba3">current_theme_url()</a>, and <a class="el" href="plugin_8php.html#a65fedcffbe03562ef844cabee37d34e2">theme_include()</a>.</p>
</div>
</div>
@@ -911,7 +1013,16 @@ Variables</h2></td></tr>
</tr>
</table>
</div><div class="memdoc">
-<p>Return full URL to theme which is currently in effect. Provide a sane default if nothing is chosen or the specified theme does not exist. </p>
+
+<p>Return full URL to theme which is currently in effect. </p>
+<p>Provide a sane default if nothing is chosen or the specified theme does not exist.</p>
+<dl class="params"><dt>Parameters</dt><dd>
+ <table class="params">
+ <tr><td class="paramtype">bool</td><td class="paramname">$installing</td><td>default false</td></tr>
+ </table>
+ </dd>
+</dl>
+<dl class="section return"><dt>Returns</dt><dd>string </dd></dl>
<p>Referenced by <a class="el" href="boot_8php.html#acc4e0c910af066148b810e5fde55fff1">construct_page()</a>.</p>
@@ -930,7 +1041,7 @@ Variables</h2></td></tr>
</table>
</div><div class="memdoc">
-<p>Referenced by <a class="el" href="conversation_8php.html#affea1afb3f32ca41e966c8ddb4204d81">conversation()</a>, <a class="el" href="classItem.html#ad5dcbe0b94cb2d5719bc5b6bd8ad60c8">Item\get_template_data()</a>, <a class="el" href="items_8php.html#a756738301f2ed96be50232500677d58a">items_fetch()</a>, <a class="el" href="ping_8php.html#a77217b1b190b4c5d8770867b45f0c0a1">ping_init()</a>, and <a class="el" href="classTemplate.html#a07737733f6949bdedea1e3d301b2ab7b">Template\replace_macros()</a>.</p>
+<p>Referenced by <a class="el" href="items_8php.html#a756738301f2ed96be50232500677d58a">items_fetch()</a>, <a class="el" href="ping_8php.html#a77217b1b190b4c5d8770867b45f0c0a1">ping_init()</a>, and <a class="el" href="classTemplate.html#a07737733f6949bdedea1e3d301b2ab7b">Template\replace_macros()</a>.</p>
</div>
</div>
@@ -975,7 +1086,11 @@ Variables</h2></td></tr>
</table>
</div><div class="memdoc">
-<p>Referenced by <a class="el" href="include_2api_8php.html#afb99daa6b731bf497b81f2128084852c">api_user()</a>, <a class="el" href="security_8php.html#a8d23d2597aae380a3341872fe9513380">change_channel()</a>, <a class="el" href="channel_8php.html#a9c6a6179e0e626398ebecc6151905ef1">channel_content()</a>, <a class="el" href="events_8php.html#ab3e8a8f901175f8e40a8089eea45c075">events_post()</a>, <a class="el" href="feed_8php.html#af86137700b56f33d1d5f25c8dec22c04">feed_init()</a>, <a class="el" href="home_8php.html#ac4642c38b6f23a8d065dd4a75c620bde">home_init()</a>, <a class="el" href="identity_8php.html#a2ab5172eabd375869060c9ad68323f5c">identity_selector()</a>, <a class="el" href="import_8php.html#afdf25ed70096d5dbf4f6d0ca79fea184">import_content()</a>, <a class="el" href="import_8php.html#af17fef0410518f7eac205d0ea416eaa2">import_post()</a>, <a class="el" href="item_8php.html#a693cd09805755ab85bbb5ecae69a48c3">item_post()</a>, <a class="el" href="manage_8php.html#a2bca247b5296827638959138367db4f5">manage_content()</a>, <a class="el" href="text_8php.html#a1633412120f52bdce5f43e0a127d9293">mimetype_select()</a>, <a class="el" href="mood_8php.html#a7ae136dd7476865b4828136175db5022">mood_init()</a>, <a class="el" href="nav_8php.html#a43be0df73b90647ea70947ce004e231e">nav()</a>, <a class="el" href="new__channel_8php.html#ae585191610f79da129492482ce8e2fee">new_channel_content()</a>, <a class="el" href="new__channel_8php.html#a180b0646957db8290482f02454ad7f23">new_channel_post()</a>, <a class="el" href="include_2follow_8php.html#ae387d4ae097c23d69f3247e7f08140c7">new_contact()</a>, <a class="el" href="profile_8php.html#a3775cf6eef6587e5143133356a7b76c0">profile_content()</a>, <a class="el" href="profile__photo_8php.html#a4b80234074bd603221aa5364f330e479">profile_photo_post()</a>, <a class="el" href="profiles_8php.html#a36f71405ad536228f8bb84a551b23f7e">profiles_init()</a>, <a class="el" href="rpost_8php.html#a8190354d789000806d9879aea276728f">rpost_content()</a>, <a class="el" href="settings_8php.html#aa7ee94d88ac088edb04ccf3a26de3586">settings_post()</a>, <a class="el" href="text_8php.html#a324c58f37f6acdf9cd1922aa76077d9f">z_input_filter()</a>, and <a class="el" href="zotfeed_8php.html#a24dfc23d366e7f840cf2847d0c1c8eac">zotfeed_init()</a>.</p>
+<p>Returns the entity id of locally logged in account or false. </p>
+<p>Returns numeric account_id if authenticated or 0. It is possible to be authenticated and not connected to a channel.</p>
+<dl class="section return"><dt>Returns</dt><dd>int|bool account_id or false </dd></dl>
+
+<p>Referenced by <a class="el" href="include_2api_8php.html#afb99daa6b731bf497b81f2128084852c">api_user()</a>, <a class="el" href="security_8php.html#a8d23d2597aae380a3341872fe9513380">change_channel()</a>, <a class="el" href="channel_8php.html#a9c6a6179e0e626398ebecc6151905ef1">channel_content()</a>, <a class="el" href="events_8php.html#ab3e8a8f901175f8e40a8089eea45c075">events_post()</a>, <a class="el" href="feed_8php.html#af86137700b56f33d1d5f25c8dec22c04">feed_init()</a>, <a class="el" href="home_8php.html#ac4642c38b6f23a8d065dd4a75c620bde">home_init()</a>, <a class="el" href="identity_8php.html#a2ab5172eabd375869060c9ad68323f5c">identity_selector()</a>, <a class="el" href="import_8php.html#afdf25ed70096d5dbf4f6d0ca79fea184">import_content()</a>, <a class="el" href="import_8php.html#af17fef0410518f7eac205d0ea416eaa2">import_post()</a>, <a class="el" href="item_8php.html#a693cd09805755ab85bbb5ecae69a48c3">item_post()</a>, <a class="el" href="manage_8php.html#a2bca247b5296827638959138367db4f5">manage_content()</a>, <a class="el" href="text_8php.html#a1633412120f52bdce5f43e0a127d9293">mimetype_select()</a>, <a class="el" href="mood_8php.html#a7ae136dd7476865b4828136175db5022">mood_init()</a>, <a class="el" href="nav_8php.html#a43be0df73b90647ea70947ce004e231e">nav()</a>, <a class="el" href="new__channel_8php.html#ae585191610f79da129492482ce8e2fee">new_channel_content()</a>, <a class="el" href="new__channel_8php.html#a180b0646957db8290482f02454ad7f23">new_channel_post()</a>, <a class="el" href="include_2follow_8php.html#ae387d4ae097c23d69f3247e7f08140c7">new_contact()</a>, <a class="el" href="profile_8php.html#a3775cf6eef6587e5143133356a7b76c0">profile_content()</a>, <a class="el" href="profile__photo_8php.html#a4b80234074bd603221aa5364f330e479">profile_photo_post()</a>, <a class="el" href="profiles_8php.html#a36f71405ad536228f8bb84a551b23f7e">profiles_init()</a>, <a class="el" href="removeaccount_8php.html#a26a3325292e932c59793430ab737126a">removeaccount_post()</a>, <a class="el" href="rpost_8php.html#a8190354d789000806d9879aea276728f">rpost_content()</a>, <a class="el" href="settings_8php.html#aa7ee94d88ac088edb04ccf3a26de3586">settings_post()</a>, <a class="el" href="text_8php.html#a324c58f37f6acdf9cd1922aa76077d9f">z_input_filter()</a>, and <a class="el" href="zotfeed_8php.html#a24dfc23d366e7f840cf2847d0c1c8eac">zotfeed_init()</a>.</p>
</div>
</div>
@@ -992,7 +1107,11 @@ Variables</h2></td></tr>
</table>
</div><div class="memdoc">
-<p>Referenced by <a class="el" href="classFriendicaSmarty.html#af12091b920b95eeef1218cbc48066ca6">FriendicaSmarty\__construct()</a>, <a class="el" href="classFriendicaSmartyEngine.html#ab7c305bd8c386c2944e4dc9136cea5b6">FriendicaSmartyEngine\__construct()</a>, <a class="el" href="Contact_8php.html#a024919623a830e8703ac4f23496dd66c">abook_toggle_flag()</a>, <a class="el" href="zot_8php.html#a703f528ade8382cf374e4119bd6f7859">allowed_public_recips()</a>, <a class="el" href="include_2api_8php.html#a5990101034e7abf6404feba3cd273629">api_apply_template()</a>, <a class="el" href="include_2api_8php.html#a4c6fb9fb5203aa60f4b3afd4521db8ea">api_format_items()</a>, <a class="el" href="include_2api_8php.html#aa40bae797bcd9ccacffdce5a3b5a1afa">api_get_user()</a>, <a class="el" href="include_2api_8php.html#a528d8070ee74ea800102936ce73cf366">api_statuses_home_timeline()</a>, <a class="el" href="include_2api_8php.html#ae0fa388479cace9c5a7a45b571ab42f8">api_statuses_repeat()</a>, <a class="el" href="include_2api_8php.html#a32f0dda848d0c11c727fe1c3e741c283">api_statuses_user_timeline()</a>, <a class="el" href="include_2api_8php.html#afb99daa6b731bf497b81f2128084852c">api_user()</a>, <a class="el" href="include_2apps_8php.html#a1b2e737f477a2e0d9d11ef14adc5aa66">app_render()</a>, <a class="el" href="include_2apps_8php.html#a15626f24069c18816f7cdaf4735f58f9">app_store()</a>, <a class="el" href="boot_8php.html#abc0a90a1a77f5b668aa7e4b57d1776a7">argc()</a>, <a class="el" href="boot_8php.html#a768f00b7d66be0daf7ef4eea2e862006">argv()</a>, <a class="el" href="items_8php.html#a275108c050f7eb18bcbb5018e6b81cf6">atom_entry()</a>, <a class="el" href="security_8php.html#adc7bf51e3b8d67bd80e9348f9ab03733">authenticate_success()</a>, <a class="el" href="include_2network_8php.html#ab07ce9d75eae559865ed90aad2154bd7">avatar_img()</a>, <a class="el" href="bbcode_8php.html#a009f61aaf78771737ed0765c8463911b">bbcode()</a>, <a class="el" href="conversation_8php.html#ad470fc7766f0db66d138fa1916c7a8b7">best_link_url()</a>, <a class="el" href="blogga_2view_2theme_2blog_2theme_8php.html#af634a3f721c5e238530d0636d33230ec">blogtheme_imgurl()</a>, <a class="el" href="zot_8php.html#ac34e479d27f32b82dd6b33542f81a6a7">build_sync_packet()</a>, <a class="el" href="plugin_8php.html#a7f05de16c0a32602853b09b99dd85e7c">call_hooks()</a>, <a class="el" href="items_8php.html#a1e75047cf175aaee8dd16aa761913ff9">can_comment_on_post()</a>, <a class="el" href="contact__widgets_8php.html#a165eb021e61c4dcab2a552f28628d353">categories_widget()</a>, <a class="el" href="security_8php.html#a8d23d2597aae380a3341872fe9513380">change_channel()</a>, <a class="el" href="Contact_8php.html#a186162051a5127069cc851d78740f205">channel_remove()</a>, <a class="el" href="security_8php.html#a9c6180e82150a5a9af91a1255d096b5c">check_form_security_token()</a>, <a class="el" href="security_8php.html#a444ac867dfa8c37cf0a7a226412bee28">check_form_security_token_ForbiddenOnErr()</a>, <a class="el" href="security_8php.html#a77ba0d1889a39cf32434c5ce96fe1433">check_form_security_token_redirectOnErr()</a>, <a class="el" href="setup_8php.html#a0c3f3b671381f6dccd924b8ecdfc56c4">check_htaccess()</a>, <a class="el" href="cli__suggest_8php.html#a8f3a60fc96f4bec7d3837c4efc7725f2">cli_suggest_run()</a>, <a class="el" href="comanche_8php.html#aed39ecad69234f3ddf61f0dedb49a58e">comanche_get_channel_id()</a>, <a class="el" href="comanche_8php.html#a028f004d5b8c23d6367816d899e17cfe">comanche_replace_region()</a>, <a class="el" href="comanche_8php.html#a6b0191c1a63db1696a2eb139d90d9e7f">comanche_widget()</a>, <a class="el" href="contact__widgets_8php.html#a552f8544528cec0c995cea7287ea9d65">common_friends_visitor_widget()</a>, <a class="el" href="connedit_8php.html#a795acb3d9d841f55c255d7611681ab67">connedit_content()</a>, <a class="el" href="text_8php.html#ad6432621d0fafcbcf3d3b9b49bef7784">contact_block()</a>, <a class="el" href="acl__selectors_8php.html#a9476997d2968a5794f3723878ed89c91">contact_select()</a>, <a class="el" href="identity_8php.html#a345f4c943d84de502ec6e72d2c813945">create_identity()</a>, <a class="el" href="boot_8php.html#ad206598b909e8eb67eb0e0bb5ef69c13">current_theme()</a>, <a class="el" href="deliver_8php.html#a397afcb9afecf0c1816b0951189dd346">deliver_run()</a>, <a class="el" href="text_8php.html#a87a3cefc603302c78982f1d8e1245265">design_tools()</a>, <a class="el" href="taxonomy_8php.html#a599ee71dd3194c8127b00dabec77abc1">dir_tagblock()</a>, <a class="el" href="items_8php.html#a555762e1022a4b8e3c3abd32e7812408">drop_item()</a>, <a class="el" href="editpost_8php.html#a34011690864d122680c802e9e748ccfb">editpost_content()</a>, <a class="el" href="event_8php.html#a7378e839ac3de9d55579eb3ec48eaf92">event_store_item()</a>, <a class="el" href="externals_8php.html#a4df44079e6f915286088b7a0d44db926">externals_run()</a>, <a class="el" href="contact__widgets_8php.html#a1eda66319d170f60a8d07c7ece95533b">fileas_widget()</a>, <a class="el" href="contact__widgets_8php.html#a57e73ebcfd62bb5d8c7a7b9e663726d6">findpeople_widget()</a>, <a class="el" href="item_8php.html#a7b63a9d0cd02096e17dcf11f4afa7c10">fix_attached_photo_permissions()</a>, <a class="el" href="items_8php.html#aba98fcbbcd7044a7e9ea34edabc14c87">fix_private_photos()</a>, <a class="el" href="bb2diaspora_8php.html#a29a2ad41f5826f3975fa9a49934ff863">format_event_diaspora()</a>, <a class="el" href="classRedBrowser.html#a1f7daf50bb9bfcde7345b3b1908dbd7e">RedBrowser\generateDirectoryIndex()</a>, <a class="el" href="boot_8php.html#afe88b920aa285982edb817a0dd44eb37">get_account_id()</a>, <a class="el" href="language_8php.html#a980dee1d8715a98ab02e36b59facf8ed">get_best_language()</a>, <a class="el" href="identity_8php.html#ad2c97627a313d53df1a1c7b4215ddb51">get_birthdays()</a>, <a class="el" href="identity_8php.html#ae381db3d43f8e7c1da8b15d14ecf5312">get_events()</a>, <a class="el" href="items_8php.html#a04a35b610acfe54434df08adec39c0c7">get_feed_for()</a>, <a class="el" href="security_8php.html#acd06ef411116115c2f0a92633700db8a">get_form_security_token()</a>, <a class="el" href="classFriendicaSmartyEngine.html#a35ec0ee828c36640ea25296bcb84a118">FriendicaSmartyEngine\get_intltext_template()</a>, <a class="el" href="plugin_8php.html#acb63c27d07f6d7dffe95f98a6cef1295">get_intltext_template()</a>, <a class="el" href="plugin_8php.html#a75f7dfed291fd7add7fc85b5c022a1f4">get_markup_template()</a>, <a class="el" href="boot_8php.html#a623e49c79943f3e7bdb770d021683cf7">get_observer_hash()</a>, <a class="el" href="text_8php.html#aac0969ae09853205992ba06ab9f9f61a">get_plink()</a>, <a class="el" href="settings_8php.html#a39abc76ff5459c57e3b957664f273f18">get_theme_config_file()</a>, <a class="el" href="plugin_8php.html#a48047edfbef770125a5508dcc2f9282f">get_theme_screenshot()</a>, <a class="el" href="gprobe_8php.html#adf72cb0a70b5b9d99fdec1cc60e18ed1">gprobe_run()</a>, <a class="el" href="acl__selectors_8php.html#aa1e3bc344ca2b29f97eb9860216d21a0">group_select()</a>, <a class="el" href="photo__driver_8php.html#a243cee492ce443afb6a7d77d54b6c4aa">guess_image_type()</a>, <a class="el" href="item_8php.html#aa22feef4de326e1d7078dedd892e615c">handle_tag()</a>, <a class="el" href="plugin_8php.html#a23c4fccf1eb5fcd63b24783ba1f05f7a">head_add_css()</a>, <a class="el" href="plugin_8php.html#a516591850f4fd49fd1425cfa54089db8">head_add_js()</a>, <a class="el" href="plugin_8php.html#af92789f559b89a380e49d303218aeeca">head_get_css()</a>, <a class="el" href="plugin_8php.html#a65ab52cb1a7030d5190e247211bef2a1">head_get_js()</a>, <a class="el" href="plugin_8php.html#a9ab6caae31935f6cf781ce7872db7cdf">head_remove_css()</a>, <a class="el" href="plugin_8php.html#a4a0ae7b881e7c8af99a69e3b03f898b4">head_remove_js()</a>, <a class="el" href="identity_8php.html#a2ab5172eabd375869060c9ad68323f5c">identity_selector()</a>, <a class="el" href="photo__driver_8php.html#a1d0bc7161dec0d177b7d3bbe4421af9a">import_channel_photo()</a>, <a class="el" href="zot_8php.html#a20750dd2c36961013fd382fb34e1366c">import_directory_profile()</a>, <a class="el" href="import_8php.html#af17fef0410518f7eac205d0ea416eaa2">import_post()</a>, <a class="el" href="photo__driver_8php.html#a78f5a10c568d2a9bbbb129dc96548887">import_profile_photo()</a>, <a class="el" href="zot_8php.html#a528e97ca5d69c3b7f35c5d954afde315">import_xchan()</a>, <a class="el" href="boot_8php.html#adfb2fc7be5a4226c0a8e24131da9d498">info()</a>, <a class="el" href="plugin_8php.html#aeaebe63dcf6fa2794f363ba2bc0b2c6b">insert_hook()</a>, <a class="el" href="boot_8php.html#a6252d8eca67c689d9035ec6da544cf46">is_developer()</a>, <a class="el" href="identity_8php.html#a4e996e44b50330098a04b467367a559f">is_public_profile()</a>, <a class="el" href="boot_8php.html#aa1e828bbbcba170265eb2668d8daf42e">is_site_admin()</a>, <a class="el" href="text_8php.html#aa6b0aa8afbeab50d1a3058ad21acb74e">item_message_id()</a>, <a class="el" href="conversation_8php.html#aacbb12d372d5e9c3ab0735b4aea48fb3">item_photo_menu()</a>, <a class="el" href="conversation_8php.html#adda79b75bf1ccf6ce9503aa310953533">item_redir_and_replace_images()</a>, <a class="el" href="items_8php.html#a2541e6861a56d145c9281877cc501615">item_store()</a>, <a class="el" href="items_8php.html#acf0bf7c9d21ac84f32effb754f7ad484">item_store_update()</a>, <a class="el" href="items_8php.html#a756738301f2ed96be50232500677d58a">items_fetch()</a>, <a class="el" href="boot_8php.html#a719c7f3972d5f9268f37a41c76cd4ef6">load_contact_links()</a>, <a class="el" href="plugin_8php.html#a326365e48ef94f0b9a0a771b8d75e813">load_hooks()</a>, <a class="el" href="dir__fns_8php.html#acd37b17dce3bdec6d5a6344a20598c1e">local_dir_update()</a>, <a class="el" href="boot_8php.html#aefecf8599036df7f1b95d6820e0e2fa4">login()</a>, <a class="el" href="classFKOAuth1.html#a2b1dac2ed31fc6ef84668afdda8b263f">FKOAuth1\loginUser()</a>, <a class="el" href="manage_8php.html#a2bca247b5296827638959138367db4f5">manage_content()</a>, <a class="el" href="items_8php.html#ac1fcf621dce7370515b420a7753f4726">map_scope()</a>, <a class="el" href="include_2menu_8php.html#add35fae5e9695031b3d46e30ac409eb8">menu_add_item()</a>, <a class="el" href="include_2menu_8php.html#acb66f80ca895a6ccd562b3d9ae7b41aa">menu_edit_item()</a>, <a class="el" href="nav_8php.html#ac3c920ce3ea5b0d9e0678ee37155f06a">nav_set_selected()</a>, <a class="el" href="include_2follow_8php.html#ae387d4ae097c23d69f3247e7f08140c7">new_contact()</a>, <a class="el" href="boot_8php.html#a9255af5ae9c887520091ea04763c1a88">notice()</a>, <a class="el" href="enotify_8php.html#a3e9a9355b243777c488d2a9883908dfc">notification()</a>, <a class="el" href="notifier_8php.html#a568c502f626cff95e344c0748938b85d">notifier_run()</a>, <a class="el" href="include_2oembed_8php.html#a98549b9af8140eda3eceaeedcaabc2c2">oembed_fetch_url()</a>, <a class="el" href="include_2oembed_8php.html#a26bb4c1e330d2f94ea7b6ce2fe970cf3">oembed_format_object()</a>, <a class="el" href="include_2oembed_8php.html#a9e57f3e36a0a0a47e6db79544b701d9a">oembed_iframe()</a>, <a class="el" href="onedirsync_8php.html#a411aedd47c57476099647961e6a86691">onedirsync_run()</a>, <a class="el" href="onepoll_8php.html#a72753b2fdec79b37c7f432035c91fb6d">onepoll_run()</a>, <a class="el" href="page_8php.html#a91a5f649f68406149108bded1dc90b22">page_content()</a>, <a class="el" href="include_2apps_8php.html#a32fe4ed9666228fd4b67dc487cc57a83">parse_app_description()</a>, <a class="el" href="include_2photos_8php.html#af24c6aeed28ecc31ec39e7d9a1804979">photos_album_widget()</a>, <a class="el" href="mod_2photos_8php.html#aa87382611a66ec5effdb2d78f13f5812">photos_content()</a>, <a class="el" href="ping_8php.html#a77217b1b190b4c5d8770867b45f0c0a1">ping_init()</a>, <a class="el" href="socgraph_8php.html#a5ef8bef37161df53718a21e93d02fbd6">poco_load()</a>, <a class="el" href="poller_8php.html#a5f12df3a4738124b6c039971e87e76da">poller_run()</a>, <a class="el" href="items_8php.html#a410f9c743877c125ca06312373346903">post_activity_item()</a>, <a class="el" href="text_8php.html#ac19d2b33a58372a357a43d51eed19162">preg_heart()</a>, <a class="el" href="text_8php.html#ae4df74296fbe55051ed3c035e55205e5">prepare_body()</a>, <a class="el" href="boot_8php.html#ab346a2ece14993861f3e4206befa94f0">proc_run()</a>, <a class="el" href="zot_8php.html#a4d9e6ca295e443b740d9960c304b3474">process_delivery()</a>, <a class="el" href="activities_8php.html#a80134e807719b3c54aba971958d2e132">profile_activity()</a>, <a class="el" href="identity_8php.html#a432259b2cf5b6f59be53e71db9f2c7dc">profile_sidebar()</a>, <a class="el" href="security_8php.html#ab3bdd30dc60d9ee72370b866aa4a2d01">public_permissions_sql()</a>, <a class="el" href="comanche_8php.html#a3d11417d2d846dbe72638a556529ff8f">register_page_template()</a>, <a class="el" href="text_8php.html#a9c6ce4e12a4ac883c5e3f36fed6e1e09">replace_macros()</a>, <a class="el" href="rmagic_8php.html#a95455edd43f1bff39446a57388cdde16">rmagic_init()</a>, <a class="el" href="bbcode_8php.html#a5165a5221a52cf1bc1d7812ebd2069c7">rpost_callback()</a>, <a class="el" href="include_2network_8php.html#ae8d9c41a11000fb8667039fc71b4f73f">scale_external_images()</a>, <a class="el" href="text_8php.html#a876e94892867019935b348b573299352">search()</a>, <a class="el" href="text_8php.html#aae91e4d2a2c6f7a9daccd2c186ae3447">searchbox()</a>, <a class="el" href="include_2message_8php.html#a751ffd6635022b2190f56154ee745752">send_message()</a>, <a class="el" href="account_8php.html#a014de2d5d5c9785de5bf547a485822fa">send_reg_approval_email()</a>, <a class="el" href="items_8php.html#aab9e0c58247427126de0699c729c3b6c">send_status_notifications()</a>, <a class="el" href="account_8php.html#aa9c29c497c17d8f9344dce8631ad8761">send_verification_email()</a>, <a class="el" href="plugin_8php.html#a030cec6793b909c439c0336ba39b1571">service_class_allows()</a>, <a class="el" href="plugin_8php.html#a905b54e10704b283ac64680a8abc0971">service_class_fetch()</a>, <a class="el" href="text_8php.html#a3d225b253bb9e0f2498c11647d927b0b">smilies()</a>, <a class="el" href="items_8php.html#ab1bce4261bcf75ad62753b498a144d17">tag_deliver()</a>, <a class="el" href="Contact_8php.html#a38daa1c210b78385307123450ca9a1fc">terminate_friendship()</a>, <a class="el" href="items_8php.html#a88c6cf7649ac836fbbed82a7a0315110">tgroup_check()</a>, <a class="el" href="plugin_8php.html#a65fedcffbe03562ef844cabee37d34e2">theme_include()</a>, <a class="el" href="bbcode_8php.html#aa92f119341f4c69dcef2768a013079b8">tryzrlvideo()</a>, <a class="el" href="language_8php.html#a686bcafa6b0d5c86d37b38a1db5b6997">tt()</a>, <a class="el" href="socgraph_8php.html#a790690bb1a1d02483fe31632a160144d">update_suggestions()</a>, <a class="el" href="account_8php.html#ac5c570a2d46446bad4dd2501e9c5a4b1">user_allow()</a>, <a class="el" href="account_8php.html#ad07be417ac7eda939768804106ddea3d">user_approve()</a>, <a class="el" href="Contact_8php.html#a6348a532c9d26cd1c9afbc9aa6aa8960">vcard_from_xchan()</a>, <a class="el" href="account_8php.html#acd6b8d2124ba5ea4f4794d2c58ae8bf5">verify_email_address()</a>, <a class="el" href="wfinger_8php.html#ae21e50c8d0a5f3c9be9f43a4e519acd3">wfinger_init()</a>, <a class="el" href="setup_8php.html#aea1ebdda58ec938f4e7b31aa5c5f6b58">what_next()</a>, <a class="el" href="widgets_8php.html#a7b1e357b5a2027718470b77ec921fc65">widget_archive()</a>, <a class="el" href="widgets_8php.html#af37fdad3b2e861d860a4a8c4d8a76c0b">widget_categories()</a>, <a class="el" href="widgets_8php.html#a47c72aac42058ea086c9ef8651c259da">widget_chatroom_list()</a>, <a class="el" href="widgets_8php.html#aa189a07241246d97efbee29f1c6a6f7f">widget_collections()</a>, <a class="el" href="widgets_8php.html#a145ff35319cfa47a9cc07f9425bd674b">widget_design_tools()</a>, <a class="el" href="widgets_8php.html#a5ab3b64496e02cab56429978ad55f1c0">widget_filer()</a>, <a class="el" href="widgets_8php.html#ad1bf7aa69e8d100d95faba17c7bc91cd">widget_follow()</a>, <a class="el" href="widgets_8php.html#a70442dfa079312d9d5e5ee01be51a165">widget_fullprofile()</a>, <a class="el" href="widgets_8php.html#afa2e55a78f95667a6da082efac7fec74">widget_mailmenu()</a>, <a class="el" href="widgets_8php.html#a3bdfb81bf9a8ddf219924fa7eaf22013">widget_menu_preview()</a>, <a class="el" href="widgets_8php.html#a702e2fc0adc9b615999eca18b7311b5e">widget_photo_albums()</a>, <a class="el" href="widgets_8php.html#abd2e508a2a0b911c4a838e3cb7599923">widget_profile()</a>, <a class="el" href="widgets_8php.html#a94203eb9bcd63cbdecbbcb15163598d8">widget_savedsearch()</a>, <a class="el" href="widgets_8php.html#aaa73bcf1702eaadd9dcd253502f55e01">widget_settings_menu()</a>, <a class="el" href="widgets_8php.html#a6dbc227aac750774284ee39c45f0a200">widget_tagcloud()</a>, <a class="el" href="widgets_8php.html#ae4ced69d83dbdd9e6b51660d9eba8653">widget_tagcloud_wall()</a>, <a class="el" href="widgets_8php.html#abe03366fd22fd27d683518fa0765da50">widget_vcard()</a>, <a class="el" href="include_2network_8php.html#aafd06c0a75402aefb06cfb9f9740fa37">z_fetch_url()</a>, and <a class="el" href="zot_8php.html#a95528377d7303131958c9f0b7158fdce">zot_finger()</a>.</p>
+<p>Retrieve the <a class="el" href="classApp.html" title="Our main application structure for the life of this page.">App</a> structure. </p>
+<p>Useful in functions which require it but don't get it passed to them</p>
+<dl class="section return"><dt>Returns</dt><dd><a class="el" href="classApp.html" title="Our main application structure for the life of this page.">App</a> </dd></dl>
+
+<p>Referenced by <a class="el" href="classFriendicaSmarty.html#af12091b920b95eeef1218cbc48066ca6">FriendicaSmarty\__construct()</a>, <a class="el" href="classFriendicaSmartyEngine.html#ab7c305bd8c386c2944e4dc9136cea5b6">FriendicaSmartyEngine\__construct()</a>, <a class="el" href="Contact_8php.html#a024919623a830e8703ac4f23496dd66c">abook_toggle_flag()</a>, <a class="el" href="Contact_8php.html#a5101d7eca5d6f387e5555f03fe249e33">account_remove()</a>, <a class="el" href="zot_8php.html#a703f528ade8382cf374e4119bd6f7859">allowed_public_recips()</a>, <a class="el" href="include_2api_8php.html#a5990101034e7abf6404feba3cd273629">api_apply_template()</a>, <a class="el" href="include_2api_8php.html#a4c6fb9fb5203aa60f4b3afd4521db8ea">api_format_items()</a>, <a class="el" href="include_2api_8php.html#aa40bae797bcd9ccacffdce5a3b5a1afa">api_get_user()</a>, <a class="el" href="include_2api_8php.html#a528d8070ee74ea800102936ce73cf366">api_statuses_home_timeline()</a>, <a class="el" href="include_2api_8php.html#ae0fa388479cace9c5a7a45b571ab42f8">api_statuses_repeat()</a>, <a class="el" href="include_2api_8php.html#a32f0dda848d0c11c727fe1c3e741c283">api_statuses_user_timeline()</a>, <a class="el" href="include_2api_8php.html#afb99daa6b731bf497b81f2128084852c">api_user()</a>, <a class="el" href="include_2apps_8php.html#a1b2e737f477a2e0d9d11ef14adc5aa66">app_render()</a>, <a class="el" href="include_2apps_8php.html#a15626f24069c18816f7cdaf4735f58f9">app_store()</a>, <a class="el" href="boot_8php.html#abc0a90a1a77f5b668aa7e4b57d1776a7">argc()</a>, <a class="el" href="boot_8php.html#a768f00b7d66be0daf7ef4eea2e862006">argv()</a>, <a class="el" href="items_8php.html#a275108c050f7eb18bcbb5018e6b81cf6">atom_entry()</a>, <a class="el" href="security_8php.html#adc7bf51e3b8d67bd80e9348f9ab03733">authenticate_success()</a>, <a class="el" href="include_2network_8php.html#ab07ce9d75eae559865ed90aad2154bd7">avatar_img()</a>, <a class="el" href="bbcode_8php.html#a009f61aaf78771737ed0765c8463911b">bbcode()</a>, <a class="el" href="conversation_8php.html#ad470fc7766f0db66d138fa1916c7a8b7">best_link_url()</a>, <a class="el" href="zot_8php.html#aa97b33b619dd7132a9274f852af6ceb5">build_sync_packet()</a>, <a class="el" href="plugin_8php.html#a7f05de16c0a32602853b09b99dd85e7c">call_hooks()</a>, <a class="el" href="items_8php.html#a1e75047cf175aaee8dd16aa761913ff9">can_comment_on_post()</a>, <a class="el" href="contact__widgets_8php.html#a165eb021e61c4dcab2a552f28628d353">categories_widget()</a>, <a class="el" href="security_8php.html#a8d23d2597aae380a3341872fe9513380">change_channel()</a>, <a class="el" href="Contact_8php.html#a4e8af0f0525161da74583c04b8b03097">channel_remove()</a>, <a class="el" href="security_8php.html#a9c6180e82150a5a9af91a1255d096b5c">check_form_security_token()</a>, <a class="el" href="security_8php.html#a444ac867dfa8c37cf0a7a226412bee28">check_form_security_token_ForbiddenOnErr()</a>, <a class="el" href="security_8php.html#a77ba0d1889a39cf32434c5ce96fe1433">check_form_security_token_redirectOnErr()</a>, <a class="el" href="setup_8php.html#a0c3f3b671381f6dccd924b8ecdfc56c4">check_htaccess()</a>, <a class="el" href="cli__suggest_8php.html#a8f3a60fc96f4bec7d3837c4efc7725f2">cli_suggest_run()</a>, <a class="el" href="comanche_8php.html#aed39ecad69234f3ddf61f0dedb49a58e">comanche_get_channel_id()</a>, <a class="el" href="comanche_8php.html#a028f004d5b8c23d6367816d899e17cfe">comanche_replace_region()</a>, <a class="el" href="comanche_8php.html#a6b0191c1a63db1696a2eb139d90d9e7f">comanche_widget()</a>, <a class="el" href="contact__widgets_8php.html#a552f8544528cec0c995cea7287ea9d65">common_friends_visitor_widget()</a>, <a class="el" href="connedit_8php.html#a795acb3d9d841f55c255d7611681ab67">connedit_content()</a>, <a class="el" href="text_8php.html#ad6432621d0fafcbcf3d3b9b49bef7784">contact_block()</a>, <a class="el" href="acl__selectors_8php.html#a9476997d2968a5794f3723878ed89c91">contact_select()</a>, <a class="el" href="identity_8php.html#a345f4c943d84de502ec6e72d2c813945">create_identity()</a>, <a class="el" href="boot_8php.html#ad206598b909e8eb67eb0e0bb5ef69c13">current_theme()</a>, <a class="el" href="deliver_8php.html#a397afcb9afecf0c1816b0951189dd346">deliver_run()</a>, <a class="el" href="text_8php.html#a87a3cefc603302c78982f1d8e1245265">design_tools()</a>, <a class="el" href="diaspora_8php.html#a006731620a5242d410358b32678e48e3">diaspora_asphoto()</a>, <a class="el" href="diaspora_8php.html#a0fb2abe304aae19efc040a5e6b917829">diaspora_comment()</a>, <a class="el" href="diaspora_8php.html#adef30b6fac948baedcc7194d5d155b5f">diaspora_conversation()</a>, <a class="el" href="diaspora_8php.html#a5d57518545baa31cf8a85a937a267681">diaspora_like()</a>, <a class="el" href="diaspora_8php.html#a7cff2f8f11044c1b3a360f20e1bbee46">diaspora_message()</a>, <a class="el" href="diaspora_8php.html#a4901762cba5cd8dcdc57bdf285eefb1b">diaspora_msg_build()</a>, <a class="el" href="diaspora_8php.html#a71fe9bb66626b4197ae018a230778bb2">diaspora_photo()</a>, <a class="el" href="diaspora_8php.html#a20b968d64ef26afe5cb0cc75a7570a31">diaspora_post()</a>, <a class="el" href="diaspora_8php.html#a900abf51398b2ef26cd2cd31c52f1b0f">diaspora_profile()</a>, <a class="el" href="diaspora_8php.html#a586d5a3ba92d35cee14f879f290072aa">diaspora_pubmsg_build()</a>, <a class="el" href="diaspora_8php.html#ac1ab782a34552a7c6b4dc961754ed598">diaspora_request()</a>, <a class="el" href="diaspora_8php.html#a2bf43f6b5890897f425ef4325d34b007">diaspora_reshare()</a>, <a class="el" href="diaspora_8php.html#af4698b165766f83d89ec1ea964bc92cc">diaspora_send_followup()</a>, <a class="el" href="diaspora_8php.html#ae6f52efd81fe515cd9912bc8293abf5b">diaspora_send_images()</a>, <a class="el" href="diaspora_8php.html#aeb2bb78f620dbf51d9335e6eb7444f2c">diaspora_send_mail()</a>, <a class="el" href="diaspora_8php.html#a0b3628a5e53332c3d3196b689fe2b94d">diaspora_send_relay()</a>, <a class="el" href="diaspora_8php.html#a1704748aa2384c73e43f10e71defd31a">diaspora_send_retraction()</a>, <a class="el" href="diaspora_8php.html#a33ae0c4606a7df4d801c05507d87f668">diaspora_send_status()</a>, <a class="el" href="diaspora_8php.html#a69f250b078a46e405647428ec3399a16">diaspora_share()</a>, <a class="el" href="diaspora_8php.html#aa704d6aa2ac77be345c0f501168e6e56">diaspora_transmit()</a>, <a class="el" href="diaspora_8php.html#ab736d6f32b5de31c97cb579fc730e200">diaspora_unshare()</a>, <a class="el" href="taxonomy_8php.html#a599ee71dd3194c8127b00dabec77abc1">dir_tagblock()</a>, <a class="el" href="dirsearch_8php.html#aa1fb04e1de4f25b63349ac78f94ceb4c">dirsearch_content()</a>, <a class="el" href="items_8php.html#a555762e1022a4b8e3c3abd32e7812408">drop_item()</a>, <a class="el" href="editpost_8php.html#a34011690864d122680c802e9e748ccfb">editpost_content()</a>, <a class="el" href="event_8php.html#a7378e839ac3de9d55579eb3ec48eaf92">event_store_item()</a>, <a class="el" href="externals_8php.html#a4df44079e6f915286088b7a0d44db926">externals_run()</a>, <a class="el" href="contact__widgets_8php.html#a1eda66319d170f60a8d07c7ece95533b">fileas_widget()</a>, <a class="el" href="contact__widgets_8php.html#a57e73ebcfd62bb5d8c7a7b9e663726d6">findpeople_widget()</a>, <a class="el" href="item_8php.html#a7b63a9d0cd02096e17dcf11f4afa7c10">fix_attached_photo_permissions()</a>, <a class="el" href="items_8php.html#aba98fcbbcd7044a7e9ea34edabc14c87">fix_private_photos()</a>, <a class="el" href="bb2diaspora_8php.html#a29a2ad41f5826f3975fa9a49934ff863">format_event_diaspora()</a>, <a class="el" href="classRedMatrix_1_1RedDAV_1_1RedBrowser.html#af764d5f14df751f9ec86c34fab300c09">RedMatrix\RedDAV\RedBrowser\generateDirectoryIndex()</a>, <a class="el" href="boot_8php.html#afe88b920aa285982edb817a0dd44eb37">get_account_id()</a>, <a class="el" href="language_8php.html#a980dee1d8715a98ab02e36b59facf8ed">get_best_language()</a>, <a class="el" href="identity_8php.html#ad2c97627a313d53df1a1c7b4215ddb51">get_birthdays()</a>, <a class="el" href="identity_8php.html#ae381db3d43f8e7c1da8b15d14ecf5312">get_events()</a>, <a class="el" href="items_8php.html#a04a35b610acfe54434df08adec39c0c7">get_feed_for()</a>, <a class="el" href="security_8php.html#acd06ef411116115c2f0a92633700db8a">get_form_security_token()</a>, <a class="el" href="classFriendicaSmartyEngine.html#a35ec0ee828c36640ea25296bcb84a118">FriendicaSmartyEngine\get_intltext_template()</a>, <a class="el" href="plugin_8php.html#acb63c27d07f6d7dffe95f98a6cef1295">get_intltext_template()</a>, <a class="el" href="plugin_8php.html#a75f7dfed291fd7add7fc85b5c022a1f4">get_markup_template()</a>, <a class="el" href="boot_8php.html#a623e49c79943f3e7bdb770d021683cf7">get_observer_hash()</a>, <a class="el" href="settings_8php.html#a39abc76ff5459c57e3b957664f273f18">get_theme_config_file()</a>, <a class="el" href="plugin_8php.html#a48047edfbef770125a5508dcc2f9282f">get_theme_screenshot()</a>, <a class="el" href="gprobe_8php.html#adf72cb0a70b5b9d99fdec1cc60e18ed1">gprobe_run()</a>, <a class="el" href="acl__selectors_8php.html#aa1e3bc344ca2b29f97eb9860216d21a0">group_select()</a>, <a class="el" href="photo__driver_8php.html#a243cee492ce443afb6a7d77d54b6c4aa">guess_image_type()</a>, <a class="el" href="text_8php.html#aa22feef4de326e1d7078dedd892e615c">handle_tag()</a>, <a class="el" href="plugin_8php.html#a23c4fccf1eb5fcd63b24783ba1f05f7a">head_add_css()</a>, <a class="el" href="plugin_8php.html#a516591850f4fd49fd1425cfa54089db8">head_add_js()</a>, <a class="el" href="plugin_8php.html#af92789f559b89a380e49d303218aeeca">head_get_css()</a>, <a class="el" href="plugin_8php.html#a65ab52cb1a7030d5190e247211bef2a1">head_get_js()</a>, <a class="el" href="plugin_8php.html#a9ab6caae31935f6cf781ce7872db7cdf">head_remove_css()</a>, <a class="el" href="plugin_8php.html#a4a0ae7b881e7c8af99a69e3b03f898b4">head_remove_js()</a>, <a class="el" href="event_8php.html#ab8cc2825013e724dc26229026711cf93">ical_wrapper()</a>, <a class="el" href="identity_8php.html#a2ab5172eabd375869060c9ad68323f5c">identity_selector()</a>, <a class="el" href="photo__driver_8php.html#a1d0bc7161dec0d177b7d3bbe4421af9a">import_channel_photo()</a>, <a class="el" href="zot_8php.html#a20750dd2c36961013fd382fb34e1366c">import_directory_profile()</a>, <a class="el" href="import_8php.html#af17fef0410518f7eac205d0ea416eaa2">import_post()</a>, <a class="el" href="photo__driver_8php.html#a78f5a10c568d2a9bbbb129dc96548887">import_profile_photo()</a>, <a class="el" href="zot_8php.html#a528e97ca5d69c3b7f35c5d954afde315">import_xchan()</a>, <a class="el" href="boot_8php.html#adfb2fc7be5a4226c0a8e24131da9d498">info()</a>, <a class="el" href="plugin_8php.html#aeaebe63dcf6fa2794f363ba2bc0b2c6b">insert_hook()</a>, <a class="el" href="boot_8php.html#a6252d8eca67c689d9035ec6da544cf46">is_developer()</a>, <a class="el" href="identity_8php.html#a4e996e44b50330098a04b467367a559f">is_public_profile()</a>, <a class="el" href="boot_8php.html#aa1e828bbbcba170265eb2668d8daf42e">is_site_admin()</a>, <a class="el" href="text_8php.html#aa6b0aa8afbeab50d1a3058ad21acb74e">item_message_id()</a>, <a class="el" href="conversation_8php.html#aacbb12d372d5e9c3ab0735b4aea48fb3">item_photo_menu()</a>, <a class="el" href="conversation_8php.html#adda79b75bf1ccf6ce9503aa310953533">item_redir_and_replace_images()</a>, <a class="el" href="items_8php.html#a2541e6861a56d145c9281877cc501615">item_store()</a>, <a class="el" href="items_8php.html#acf0bf7c9d21ac84f32effb754f7ad484">item_store_update()</a>, <a class="el" href="items_8php.html#a756738301f2ed96be50232500677d58a">items_fetch()</a>, <a class="el" href="text_8php.html#a4446c7f8996a280f7e08b7bfe6c6c8bc">list_smilies()</a>, <a class="el" href="boot_8php.html#a719c7f3972d5f9268f37a41c76cd4ef6">load_contact_links()</a>, <a class="el" href="plugin_8php.html#a326365e48ef94f0b9a0a771b8d75e813">load_hooks()</a>, <a class="el" href="dir__fns_8php.html#acd37b17dce3bdec6d5a6344a20598c1e">local_dir_update()</a>, <a class="el" href="boot_8php.html#aefecf8599036df7f1b95d6820e0e2fa4">login()</a>, <a class="el" href="classFKOAuth1.html#a2b1dac2ed31fc6ef84668afdda8b263f">FKOAuth1\loginUser()</a>, <a class="el" href="manage_8php.html#a2bca247b5296827638959138367db4f5">manage_content()</a>, <a class="el" href="items_8php.html#a8675e62674de6fb7c42e4a408c7116cc">map_scope()</a>, <a class="el" href="include_2menu_8php.html#add35fae5e9695031b3d46e30ac409eb8">menu_add_item()</a>, <a class="el" href="include_2menu_8php.html#acb66f80ca895a6ccd562b3d9ae7b41aa">menu_edit_item()</a>, <a class="el" href="nav_8php.html#ac3c920ce3ea5b0d9e0678ee37155f06a">nav_set_selected()</a>, <a class="el" href="include_2follow_8php.html#ae387d4ae097c23d69f3247e7f08140c7">new_contact()</a>, <a class="el" href="boot_8php.html#a9255af5ae9c887520091ea04763c1a88">notice()</a>, <a class="el" href="enotify_8php.html#a3e9a9355b243777c488d2a9883908dfc">notification()</a>, <a class="el" href="notifier_8php.html#a568c502f626cff95e344c0748938b85d">notifier_run()</a>, <a class="el" href="include_2oembed_8php.html#a98549b9af8140eda3eceaeedcaabc2c2">oembed_fetch_url()</a>, <a class="el" href="include_2oembed_8php.html#a26bb4c1e330d2f94ea7b6ce2fe970cf3">oembed_format_object()</a>, <a class="el" href="onedirsync_8php.html#a411aedd47c57476099647961e6a86691">onedirsync_run()</a>, <a class="el" href="onepoll_8php.html#a72753b2fdec79b37c7f432035c91fb6d">onepoll_run()</a>, <a class="el" href="page_8php.html#a4d89800c0366a239191b1692c09635cf">page_init()</a>, <a class="el" href="include_2apps_8php.html#a32fe4ed9666228fd4b67dc487cc57a83">parse_app_description()</a>, <a class="el" href="include_2photos_8php.html#af24c6aeed28ecc31ec39e7d9a1804979">photos_album_widget()</a>, <a class="el" href="ping_8php.html#a77217b1b190b4c5d8770867b45f0c0a1">ping_init()</a>, <a class="el" href="socgraph_8php.html#a5ef8bef37161df53718a21e93d02fbd6">poco_load()</a>, <a class="el" href="poller_8php.html#a5f12df3a4738124b6c039971e87e76da">poller_run()</a>, <a class="el" href="items_8php.html#a410f9c743877c125ca06312373346903">post_activity_item()</a>, <a class="el" href="text_8php.html#ac19d2b33a58372a357a43d51eed19162">preg_heart()</a>, <a class="el" href="boot_8php.html#ab346a2ece14993861f3e4206befa94f0">proc_run()</a>, <a class="el" href="zot_8php.html#a0e3006e7a456b2175a9badc96bc5176d">process_delivery()</a>, <a class="el" href="zot_8php.html#a8eeefdb0dad4c436bea9d1c06c0a7988">process_location_delivery()</a>, <a class="el" href="activities_8php.html#a80134e807719b3c54aba971958d2e132">profile_activity()</a>, <a class="el" href="identity_8php.html#a432259b2cf5b6f59be53e71db9f2c7dc">profile_sidebar()</a>, <a class="el" href="comanche_8php.html#a3d11417d2d846dbe72638a556529ff8f">register_page_template()</a>, <a class="el" href="text_8php.html#a9c6ce4e12a4ac883c5e3f36fed6e1e09">replace_macros()</a>, <a class="el" href="rmagic_8php.html#a95455edd43f1bff39446a57388cdde16">rmagic_init()</a>, <a class="el" href="bbcode_8php.html#a5165a5221a52cf1bc1d7812ebd2069c7">rpost_callback()</a>, <a class="el" href="include_2network_8php.html#ae8d9c41a11000fb8667039fc71b4f73f">scale_external_images()</a>, <a class="el" href="include_2network_8php.html#a316f318167a039c89719afbd129a8f3c">scrape_feed()</a>, <a class="el" href="include_2network_8php.html#acb0bd7f5fe38ff1eaebeae3284525070">scrape_vcard()</a>, <a class="el" href="text_8php.html#a876e94892867019935b348b573299352">search()</a>, <a class="el" href="include_2message_8php.html#a751ffd6635022b2190f56154ee745752">send_message()</a>, <a class="el" href="account_8php.html#a014de2d5d5c9785de5bf547a485822fa">send_reg_approval_email()</a>, <a class="el" href="items_8php.html#aab9e0c58247427126de0699c729c3b6c">send_status_notifications()</a>, <a class="el" href="account_8php.html#aa9c29c497c17d8f9344dce8631ad8761">send_verification_email()</a>, <a class="el" href="account_8php.html#a030cec6793b909c439c0336ba39b1571">service_class_allows()</a>, <a class="el" href="account_8php.html#a905b54e10704b283ac64680a8abc0971">service_class_fetch()</a>, <a class="el" href="siteinfo_8php.html#a3efbd0bd6564af19ec0a9ce0294e59d0">siteinfo_init()</a>, <a class="el" href="text_8php.html#a3d225b253bb9e0f2498c11647d927b0b">smilies()</a>, <a class="el" href="items_8php.html#a25221826fa4621f523c68483e3b6af26">store_diaspora_comment_sig()</a>, <a class="el" href="items_8php.html#ab1bce4261bcf75ad62753b498a144d17">tag_deliver()</a>, <a class="el" href="items_8php.html#a88c6cf7649ac836fbbed82a7a0315110">tgroup_check()</a>, <a class="el" href="plugin_8php.html#a65fedcffbe03562ef844cabee37d34e2">theme_include()</a>, <a class="el" href="bbcode_8php.html#aa92f119341f4c69dcef2768a013079b8">tryzrlvideo()</a>, <a class="el" href="language_8php.html#a686bcafa6b0d5c86d37b38a1db5b6997">tt()</a>, <a class="el" href="socgraph_8php.html#a790690bb1a1d02483fe31632a160144d">update_suggestions()</a>, <a class="el" href="account_8php.html#ac5c570a2d46446bad4dd2501e9c5a4b1">user_allow()</a>, <a class="el" href="account_8php.html#ad07be417ac7eda939768804106ddea3d">user_approve()</a>, <a class="el" href="Contact_8php.html#a6348a532c9d26cd1c9afbc9aa6aa8960">vcard_from_xchan()</a>, <a class="el" href="account_8php.html#acd6b8d2124ba5ea4f4794d2c58ae8bf5">verify_email_address()</a>, <a class="el" href="wfinger_8php.html#ae21e50c8d0a5f3c9be9f43a4e519acd3">wfinger_init()</a>, <a class="el" href="setup_8php.html#aea1ebdda58ec938f4e7b31aa5c5f6b58">what_next()</a>, <a class="el" href="widgets_8php.html#a7b1e357b5a2027718470b77ec921fc65">widget_archive()</a>, <a class="el" href="widgets_8php.html#af919de8e7e2ba8192a65fadc72a2c8b5">widget_catcloud_wall()</a>, <a class="el" href="widgets_8php.html#af37fdad3b2e861d860a4a8c4d8a76c0b">widget_categories()</a>, <a class="el" href="widgets_8php.html#a47c72aac42058ea086c9ef8651c259da">widget_chatroom_list()</a>, <a class="el" href="widgets_8php.html#aa189a07241246d97efbee29f1c6a6f7f">widget_collections()</a>, <a class="el" href="widgets_8php.html#a145ff35319cfa47a9cc07f9425bd674b">widget_design_tools()</a>, <a class="el" href="widgets_8php.html#a5ab3b64496e02cab56429978ad55f1c0">widget_filer()</a>, <a class="el" href="widgets_8php.html#ad1bf7aa69e8d100d95faba17c7bc91cd">widget_follow()</a>, <a class="el" href="widgets_8php.html#a70442dfa079312d9d5e5ee01be51a165">widget_fullprofile()</a>, <a class="el" href="widgets_8php.html#afa2e55a78f95667a6da082efac7fec74">widget_mailmenu()</a>, <a class="el" href="widgets_8php.html#a3bdfb81bf9a8ddf219924fa7eaf22013">widget_menu_preview()</a>, <a class="el" href="widgets_8php.html#a702e2fc0adc9b615999eca18b7311b5e">widget_photo_albums()</a>, <a class="el" href="widgets_8php.html#af8eb466ef91d9e96e13335ead5eba380">widget_photo_rand()</a>, <a class="el" href="widgets_8php.html#abd2e508a2a0b911c4a838e3cb7599923">widget_profile()</a>, <a class="el" href="widgets_8php.html#a829c5a5c7448129266fc1df3ae1a3c2e">widget_random_block()</a>, <a class="el" href="widgets_8php.html#a94203eb9bcd63cbdecbbcb15163598d8">widget_savedsearch()</a>, <a class="el" href="widgets_8php.html#aaa73bcf1702eaadd9dcd253502f55e01">widget_settings_menu()</a>, <a class="el" href="widgets_8php.html#a6dbc227aac750774284ee39c45f0a200">widget_tagcloud()</a>, <a class="el" href="widgets_8php.html#ae4ced69d83dbdd9e6b51660d9eba8653">widget_tagcloud_wall()</a>, <a class="el" href="widgets_8php.html#abe03366fd22fd27d683518fa0765da50">widget_vcard()</a>, <a class="el" href="include_2network_8php.html#aafd06c0a75402aefb06cfb9f9740fa37">z_fetch_url()</a>, and <a class="el" href="zot_8php.html#a95528377d7303131958c9f0b7158fdce">zot_finger()</a>.</p>
</div>
</div>
@@ -1020,10 +1139,42 @@ Variables</h2></td></tr>
</table>
</div><div class="memdoc">
+<p>Returns a custom navigation by name??? </p>
+<p>If no $navname provided load default page['nav']</p>
+<dl class="todo"><dt><b><a class="el" href="todo.html#_todo000001">Todo:</a></b></dt><dd>not fully implemented yet</dd></dl>
+<dl class="params"><dt>Parameters</dt><dd>
+ <table class="params">
+ <tr><td class="paramtype"><a class="el" href="classApp.html" title="Our main application structure for the life of this page.">App</a></td><td class="paramname">$a</td><td>global application object </td></tr>
+ <tr><td class="paramtype">string</td><td class="paramname">$navname</td><td></td></tr>
+ </table>
+ </dd>
+</dl>
+<dl class="section return"><dt>Returns</dt><dd>mixed </dd></dl>
+
<p>Referenced by <a class="el" href="boot_8php.html#acc4e0c910af066148b810e5fde55fff1">construct_page()</a>.</p>
</div>
</div>
+<a class="anchor" id="a329400dcb29897cdaae3020109272285"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">get_directory_realm </td>
+ <td>(</td>
+ <td class="paramname"></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p>Return the Realm of the directory. </p>
+<dl class="section return"><dt>Returns</dt><dd>string </dd></dl>
+
+<p>Referenced by <a class="el" href="zot_8php.html#a528e97ca5d69c3b7f35c5d954afde315">import_xchan()</a>, <a class="el" href="dirsearch_8php.html#a985d410a170549429857af6ff2673149">list_public_sites()</a>, <a class="el" href="sitelist_8php.html#a665a59bf60f780b40f32c909f4a473b1">sitelist_init()</a>, <a class="el" href="dir__fns_8php.html#aa666e7df6ca8c332f4081c9b66b4bdf6">sync_directories()</a>, and <a class="el" href="zfinger_8php.html#a8139b83a22ef98869adc10aa224027a0">zfinger_init()</a>.</p>
+
+</div>
+</div>
<a class="anchor" id="a97769915c9f14adc4f8ab1ea2cecfd90"></a>
<div class="memitem">
<div class="memproto">
@@ -1037,7 +1188,10 @@ Variables</h2></td></tr>
</table>
</div><div class="memdoc">
-<p>Referenced by <a class="el" href="items_8php.html#af94c281016c6c912d06e064113336c5c">limit_body_size()</a>.</p>
+<p>Wrapper around config to limit the text length of an incoming message. </p>
+<dl class="section return"><dt>Returns</dt><dd>int </dd></dl>
+
+<p>Referenced by <a class="el" href="items_8php.html#a536d0313b6ffe33b9d2490c4e25c5361">get_item_elements()</a>, and <a class="el" href="items_8php.html#af94c281016c6c912d06e064113336c5c">limit_body_size()</a>.</p>
</div>
</div>
@@ -1054,7 +1208,29 @@ Variables</h2></td></tr>
</table>
</div><div class="memdoc">
-<p>Referenced by <a class="el" href="identity_8php.html#aa870d2c1f558cfd52bef05bc124e8fa4">advanced_profile()</a>, <a class="el" href="include_2api_8php.html#a32f0dda848d0c11c727fe1c3e741c283">api_statuses_user_timeline()</a>, <a class="el" href="include_2apps_8php.html#a15626f24069c18816f7cdaf4735f58f9">app_store()</a>, <a class="el" href="include_2apps_8php.html#aeab6a62d2f3dfaa86ed043a006305f46">app_update()</a>, <a class="el" href="include_2attach_8php.html#a0d07c5b83d3d54e186f752e571847b36">attach_by_hash()</a>, <a class="el" href="include_2attach_8php.html#ad991208ce939387e2f93a3bce7d09932">attach_by_hash_nodata()</a>, <a class="el" href="include_2attach_8php.html#ab6830b3ab74a5d284876141ac80f6cbc">attach_mkdir()</a>, <a class="el" href="include_2attach_8php.html#a84a8a64c4805e1525b42d4add464833f">attach_store()</a>, <a class="el" href="block_8php.html#a8a82a470acdfbc7a8e749509caeeea45">block_content()</a>, <a class="el" href="mod_2bookmarks_8php.html#a774364b1c8404529581083631703527a">bookmarks_content()</a>, <a class="el" href="mod_2chat_8php.html#a8b0b8bee6fef6477e8c64c5e951b1b4f">chat_content()</a>, <a class="el" href="chatsvc_8php.html#a7032784215e1f6747cf385a6598770f9">chatsvc_content()</a>, <a class="el" href="chatsvc_8php.html#a28d248b056fa47452e28ed01130e9116">chatsvc_init()</a>, <a class="el" href="chatsvc_8php.html#a7c9a9b9c24a2b02eed8efd6b09632d03">chatsvc_post()</a>, <a class="el" href="cloud_8php.html#a1b79a6fe0454bc76673ad9aef55bf02d">cloud_init()</a>, <a class="el" href="comanche_8php.html#ad5a44e42231759aba1dda49e0490501e">comanche_menu()</a>, <a class="el" href="common_8php.html#ab63408f39abef7a6915186e8dabc5a96">common_content()</a>, <a class="el" href="contact__widgets_8php.html#a552f8544528cec0c995cea7287ea9d65">common_friends_visitor_widget()</a>, <a class="el" href="text_8php.html#ad6432621d0fafcbcf3d3b9b49bef7784">contact_block()</a>, <a class="el" href="dir__fns_8php.html#acf621621e929d49441da30aad76a58cf">dir_safe_mode()</a>, <a class="el" href="mod_2directory_8php.html#aac79396570d759da2efac24fcedf5b44">directory_content()</a>, <a class="el" href="display_8php.html#a37137c98d47bf3306f4c2bb9f5b60de0">display_content()</a>, <a class="el" href="editblock_8php.html#abbe8f55de06967bc8d79d620509a49e6">editblock_content()</a>, <a class="el" href="editlayout_8php.html#aa877e4157a26b099de904164181dd386">editlayout_content()</a>, <a class="el" href="editpost_8php.html#a34011690864d122680c802e9e748ccfb">editpost_content()</a>, <a class="el" href="editwebpage_8php.html#a375e945255fad79a71036528f7480650">editwebpage_content()</a>, <a class="el" href="events_8php.html#ab3e8a8f901175f8e40a8089eea45c075">events_post()</a>, <a class="el" href="items_8php.html#a079e099e15d88d47aeb6ca6d60da7107">get_public_feed()</a>, <a class="el" href="importelm_8php.html#a1a4f71e6d76ace6add5e9659845f5e5f">importelm_post()</a>, <a class="el" href="item_8php.html#a764bbb2e9a885a86fb23d0b5e4a09221">item_content()</a>, <a class="el" href="security_8php.html#a9355488460ab11d6058656ff919e5cf9">item_permissions_sql()</a>, <a class="el" href="magic_8php.html#acea2cc792849ca2d71d4b689f66518bf">magic_init()</a>, <a class="el" href="mitem_8php.html#a7a31b702ecad18eeb6a38b243ff0037e">mitem_content()</a>, <a class="el" href="include_2follow_8php.html#ae387d4ae097c23d69f3247e7f08140c7">new_contact()</a>, <a class="el" href="boot_8php.html#a9255af5ae9c887520091ea04763c1a88">notice()</a>, <a class="el" href="security_8php.html#afa683bc025a1d2fe9065e2f6cd71a22f">permissions_sql()</a>, <a class="el" href="photo_8php.html#a582779d24882b0d31ee909a91d70a448">photo_init()</a>, <a class="el" href="mod_2photos_8php.html#aa87382611a66ec5effdb2d78f13f5812">photos_content()</a>, <a class="el" href="mod_2photos_8php.html#a062bed4d04d14fee8a53f4c9be673080">photos_post()</a>, <a class="el" href="ping_8php.html#a77217b1b190b4c5d8770867b45f0c0a1">ping_init()</a>, <a class="el" href="text_8php.html#ae4df74296fbe55051ed3c035e55205e5">prepare_body()</a>, <a class="el" href="profile_8php.html#a3775cf6eef6587e5143133356a7b76c0">profile_content()</a>, <a class="el" href="identity_8php.html#a432259b2cf5b6f59be53e71db9f2c7dc">profile_sidebar()</a>, <a class="el" href="search_8php.html#ab2568591359edde5b483a6cd9a24b2cc">search_content()</a>, <a class="el" href="classRedBrowser.html#a40fdbb9d9fe6c1243bbf135dd5b0a06f">RedBrowser\set_writeable()</a>, <a class="el" href="security_8php.html#a3ef2be6a7e4928e39d50059d6feb457c">stream_perms_xchans()</a>, <a class="el" href="suggest_8php.html#a58748a8235d4523f8333847f3e42dd91">suggest_content()</a>, <a class="el" href="tagger_8php.html#a0e4a3eb177d1684553c547503d67161c">tagger_content()</a>, <a class="el" href="thing_8php.html#a8be23b1d475ec3d9291999221c674c80">thing_init()</a>, <a class="el" href="toggle__safesearch_8php.html#a23d5cfb2727a266e44993ffbf5595a79">toggle_safesearch_init()</a>, <a class="el" href="viewconnections_8php.html#ab6c4d983e97b3a8a879567ff76507776">viewconnections_content()</a>, <a class="el" href="vote_8php.html#a6aa67489bf458ca5e3206e46dac68596">vote_content()</a>, <a class="el" href="vote_8php.html#a57a9516ee1b923b224e66dcc47377fb2">vote_post()</a>, <a class="el" href="wall__attach_8php.html#a7385e970e93228d082f0fd7254f6e653">wall_attach_post()</a>, <a class="el" href="widgets_8php.html#a7b1e357b5a2027718470b77ec921fc65">widget_archive()</a>, <a class="el" href="widgets_8php.html#a0e2f5179ed1a73b282dfda7270fcabb3">widget_bookmarkedchats()</a>, <a class="el" href="widgets_8php.html#af37fdad3b2e861d860a4a8c4d8a76c0b">widget_categories()</a>, <a class="el" href="widgets_8php.html#a313a8d10ab81c71357c12e67e4d7efd5">widget_item()</a>, <a class="el" href="widgets_8php.html#a702e2fc0adc9b615999eca18b7311b5e">widget_photo_albums()</a>, <a class="el" href="widgets_8php.html#a50b1410238100c8a94c06b0aa63ee3b8">widget_suggestedchats()</a>, <a class="el" href="widgets_8php.html#a0d404276fedc59f5038cf5c085028326">widget_suggestions()</a>, <a class="el" href="widgets_8php.html#ae4ced69d83dbdd9e6b51660d9eba8653">widget_tagcloud_wall()</a>, and <a class="el" href="include_2attach_8php.html#aeb07968990e66a88c95483ca09a7f909">z_readdir()</a>.</p>
+<p>Returns xchan_hash from the observer. </p>
+<dl class="section return"><dt>Returns</dt><dd>string Empty if no observer, otherwise xchan_hash from observer </dd></dl>
+
+<p>Referenced by <a class="el" href="identity_8php.html#aa870d2c1f558cfd52bef05bc124e8fa4">advanced_profile()</a>, <a class="el" href="include_2api_8php.html#a32f0dda848d0c11c727fe1c3e741c283">api_statuses_user_timeline()</a>, <a class="el" href="include_2apps_8php.html#a15626f24069c18816f7cdaf4735f58f9">app_store()</a>, <a class="el" href="include_2apps_8php.html#aeab6a62d2f3dfaa86ed043a006305f46">app_update()</a>, <a class="el" href="include_2attach_8php.html#a0d07c5b83d3d54e186f752e571847b36">attach_by_hash()</a>, <a class="el" href="include_2attach_8php.html#ad991208ce939387e2f93a3bce7d09932">attach_by_hash_nodata()</a>, <a class="el" href="include_2attach_8php.html#ab6830b3ab74a5d284876141ac80f6cbc">attach_mkdir()</a>, <a class="el" href="include_2attach_8php.html#a84a8a64c4805e1525b42d4add464833f">attach_store()</a>, <a class="el" href="block_8php.html#a8a82a470acdfbc7a8e749509caeeea45">block_content()</a>, <a class="el" href="mod_2bookmarks_8php.html#a774364b1c8404529581083631703527a">bookmarks_content()</a>, <a class="el" href="mod_2chat_8php.html#a8b0b8bee6fef6477e8c64c5e951b1b4f">chat_content()</a>, <a class="el" href="chatsvc_8php.html#a7032784215e1f6747cf385a6598770f9">chatsvc_content()</a>, <a class="el" href="chatsvc_8php.html#a28d248b056fa47452e28ed01130e9116">chatsvc_init()</a>, <a class="el" href="chatsvc_8php.html#a7c9a9b9c24a2b02eed8efd6b09632d03">chatsvc_post()</a>, <a class="el" href="cloud_8php.html#ad2e96e917852f27dedfc263d37e13756">cloud_init()</a>, <a class="el" href="comanche_8php.html#ad5a44e42231759aba1dda49e0490501e">comanche_menu()</a>, <a class="el" href="common_8php.html#ab63408f39abef7a6915186e8dabc5a96">common_content()</a>, <a class="el" href="contact__widgets_8php.html#a552f8544528cec0c995cea7287ea9d65">common_friends_visitor_widget()</a>, <a class="el" href="text_8php.html#ad6432621d0fafcbcf3d3b9b49bef7784">contact_block()</a>, <a class="el" href="dir__fns_8php.html#acf621621e929d49441da30aad76a58cf">dir_safe_mode()</a>, <a class="el" href="mod_2directory_8php.html#aac79396570d759da2efac24fcedf5b44">directory_content()</a>, <a class="el" href="display_8php.html#a37137c98d47bf3306f4c2bb9f5b60de0">display_content()</a>, <a class="el" href="editpost_8php.html#a34011690864d122680c802e9e748ccfb">editpost_content()</a>, <a class="el" href="events_8php.html#ab3e8a8f901175f8e40a8089eea45c075">events_post()</a>, <a class="el" href="items_8php.html#a079e099e15d88d47aeb6ca6d60da7107">get_public_feed()</a>, <a class="el" href="impel_8php.html#ab7db6fca43b42ea4332cb3e841b3cf7b">impel_init()</a>, <a class="el" href="importelm_8php.html#a1a4f71e6d76ace6add5e9659845f5e5f">importelm_post()</a>, <a class="el" href="item_8php.html#a764bbb2e9a885a86fb23d0b5e4a09221">item_content()</a>, <a class="el" href="security_8php.html#a9355488460ab11d6058656ff919e5cf9">item_permissions_sql()</a>, <a class="el" href="magic_8php.html#acea2cc792849ca2d71d4b689f66518bf">magic_init()</a>, <a class="el" href="include_2follow_8php.html#ae387d4ae097c23d69f3247e7f08140c7">new_contact()</a>, <a class="el" href="boot_8php.html#a9255af5ae9c887520091ea04763c1a88">notice()</a>, <a class="el" href="security_8php.html#afa683bc025a1d2fe9065e2f6cd71a22f">permissions_sql()</a>, <a class="el" href="photo_8php.html#a582779d24882b0d31ee909a91d70a448">photo_init()</a>, <a class="el" href="mod_2photos_8php.html#aa87382611a66ec5effdb2d78f13f5812">photos_content()</a>, <a class="el" href="mod_2photos_8php.html#a062bed4d04d14fee8a53f4c9be673080">photos_post()</a>, <a class="el" href="ping_8php.html#a77217b1b190b4c5d8770867b45f0c0a1">ping_init()</a>, <a class="el" href="poll_8php.html#a26be9d4f230cb68f5be326198cfc6c77">poll_post()</a>, <a class="el" href="text_8php.html#ae4df74296fbe55051ed3c035e55205e5">prepare_body()</a>, <a class="el" href="profile_8php.html#a3775cf6eef6587e5143133356a7b76c0">profile_content()</a>, <a class="el" href="identity_8php.html#a432259b2cf5b6f59be53e71db9f2c7dc">profile_sidebar()</a>, <a class="el" href="classRedMatrix_1_1RedDAV_1_1RedBrowser.html#aa1607857cb59738c4dce2fe8e73d8f19">RedMatrix\RedDAV\RedBrowser\set_writeable()</a>, <a class="el" href="security_8php.html#a3ef2be6a7e4928e39d50059d6feb457c">stream_perms_xchans()</a>, <a class="el" href="suggest_8php.html#a58748a8235d4523f8333847f3e42dd91">suggest_content()</a>, <a class="el" href="tagger_8php.html#a0e4a3eb177d1684553c547503d67161c">tagger_content()</a>, <a class="el" href="thing_8php.html#a8be23b1d475ec3d9291999221c674c80">thing_init()</a>, <a class="el" href="toggle__safesearch_8php.html#a23d5cfb2727a266e44993ffbf5595a79">toggle_safesearch_init()</a>, <a class="el" href="viewconnections_8php.html#ab6c4d983e97b3a8a879567ff76507776">viewconnections_content()</a>, <a class="el" href="vote_8php.html#a6aa67489bf458ca5e3206e46dac68596">vote_content()</a>, <a class="el" href="vote_8php.html#a57a9516ee1b923b224e66dcc47377fb2">vote_post()</a>, <a class="el" href="wall__attach_8php.html#a7385e970e93228d082f0fd7254f6e653">wall_attach_post()</a>, <a class="el" href="widgets_8php.html#a7b1e357b5a2027718470b77ec921fc65">widget_archive()</a>, <a class="el" href="widgets_8php.html#a0e2f5179ed1a73b282dfda7270fcabb3">widget_bookmarkedchats()</a>, <a class="el" href="widgets_8php.html#af919de8e7e2ba8192a65fadc72a2c8b5">widget_catcloud_wall()</a>, <a class="el" href="widgets_8php.html#af37fdad3b2e861d860a4a8c4d8a76c0b">widget_categories()</a>, <a class="el" href="widgets_8php.html#a313a8d10ab81c71357c12e67e4d7efd5">widget_item()</a>, <a class="el" href="widgets_8php.html#a702e2fc0adc9b615999eca18b7311b5e">widget_photo_albums()</a>, <a class="el" href="widgets_8php.html#a50b1410238100c8a94c06b0aa63ee3b8">widget_suggestedchats()</a>, <a class="el" href="widgets_8php.html#a0d404276fedc59f5038cf5c085028326">widget_suggestions()</a>, <a class="el" href="widgets_8php.html#ae4ced69d83dbdd9e6b51660d9eba8653">widget_tagcloud_wall()</a>, and <a class="el" href="include_2attach_8php.html#aeb07968990e66a88c95483ca09a7f909">z_readdir()</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="aa561f801e962b67a5c4d0548ea95fd17"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">get_poller_runtime </td>
+ <td>(</td>
+ <td class="paramname"></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p>return relative date of last completed poller execution </p>
+
+<p>Referenced by <a class="el" href="siteinfo_8php.html#a70c09bfb6dd1c86a125a35f62ed53656">siteinfo_content()</a>.</p>
</div>
</div>
@@ -1072,7 +1248,9 @@ Variables</h2></td></tr>
</table>
</div><div class="memdoc">
-<p>Referenced by <a class="el" href="admin_8php.html#ad6f87a764fd35f522c7b4c351d7878ec">admin_page_channels()</a>, <a class="el" href="admin_8php.html#a42e628f367c168add8013352ac74d33f">admin_page_channels_post()</a>, <a class="el" href="admin_8php.html#aaa6addf2dbc3f3fcf99244a56b41eade">admin_page_dbsync()</a>, <a class="el" href="admin_8php.html#a6943543f3138f6ee182cb701f415d1cc">admin_page_hubloc()</a>, <a class="el" href="admin_8php.html#a60ba9783ad14545814919970bc3fb725">admin_page_hubloc_post()</a>, <a class="el" href="admin_8php.html#a233b7c8c31776b7020532003c6e44e1c">admin_page_logs_post()</a>, <a class="el" href="admin_8php.html#a54128076986ba80c4a103de3fc3e19a8">admin_page_plugins()</a>, <a class="el" href="admin_8php.html#add865f4ae806ecbf716f423fc3e50e4f">admin_page_site_post()</a>, <a class="el" href="admin_8php.html#af124619fdc278fe2bf14c45ddaa260fb">admin_page_themes()</a>, <a class="el" href="admin_8php.html#a62f10f90c47686c9c3c37c4c03a108d2">admin_page_users()</a>, <a class="el" href="admin_8php.html#a5a696706a3869800e65fb365214241b7">admin_page_users_post()</a>, <a class="el" href="admin_8php.html#acf51f5837a7427832144c2bf7308ada3">admin_post()</a>, <a class="el" href="mod_2api_8php.html#a33315b5bbf5418f6850b2038107b526d">api_content()</a>, <a class="el" href="appman_8php.html#a2979acbe47ffaecfa19b9eabfbfbde39">appman_post()</a>, <a class="el" href="security_8php.html#adc7bf51e3b8d67bd80e9348f9ab03733">authenticate_success()</a>, <a class="el" href="channel_8php.html#a9c6a6179e0e626398ebecc6151905ef1">channel_content()</a>, <a class="el" href="Contact_8php.html#a186162051a5127069cc851d78740f205">channel_remove()</a>, <a class="el" href="chanview_8php.html#a4192c6da888c8c1165851acf9ad4cb8b">chanview_content()</a>, <a class="el" href="mod_2chat_8php.html#a8b0b8bee6fef6477e8c64c5e951b1b4f">chat_content()</a>, <a class="el" href="mod_2chat_8php.html#a999d594745597c656c9760253ae297ad">chat_post()</a>, <a class="el" href="chatsvc_8php.html#a7032784215e1f6747cf385a6598770f9">chatsvc_content()</a>, <a class="el" href="security_8php.html#a77ba0d1889a39cf32434c5ce96fe1433">check_form_security_token_redirectOnErr()</a>, <a class="el" href="connect_8php.html#a417ec27afe33f21a929667a665e32ee2">connect_post()</a>, <a class="el" href="connections_8php.html#a1224058db8e3fb56463eb312f98e561d">connections_post()</a>, <a class="el" href="connedit_8php.html#a795acb3d9d841f55c255d7611681ab67">connedit_content()</a>, <a class="el" href="connedit_8php.html#a234c48426b652bf4d37053f2af329ac5">connedit_post()</a>, <a class="el" href="delegate_8php.html#a943eea8996ef348eb845c498f9f354dd">delegate_content()</a>, <a class="el" href="mod_2directory_8php.html#aac79396570d759da2efac24fcedf5b44">directory_content()</a>, <a class="el" href="display_8php.html#a37137c98d47bf3306f4c2bb9f5b60de0">display_content()</a>, <a class="el" href="items_8php.html#a555762e1022a4b8e3c3abd32e7812408">drop_item()</a>, <a class="el" href="events_8php.html#ab3e8a8f901175f8e40a8089eea45c075">events_post()</a>, <a class="el" href="filerm_8php.html#ae2eb28d2054fa2c37e38689882172208">filerm_content()</a>, <a class="el" href="filestorage_8php.html#a61bb1be78472555df4ce619f51014040">filestorage_content()</a>, <a class="el" href="filestorage_8php.html#ad3b64e3ece9831f9d3a9f00c0ae983cd">filestorage_post()</a>, <a class="el" href="mod_2follow_8php.html#a171f5b19f50d7738adc3b2e96ec6018a">follow_init()</a>, <a class="el" href="mod_2group_8php.html#a07a64f6c65b0080d8190b3d9728a7a83">group_content()</a>, <a class="el" href="mod_2group_8php.html#aed1f009b1221348021bb34761160ef35">group_post()</a>, <a class="el" href="home_8php.html#ac4642c38b6f23a8d065dd4a75c620bde">home_init()</a>, <a class="el" href="import_8php.html#af17fef0410518f7eac205d0ea416eaa2">import_post()</a>, <a class="el" href="item_8php.html#a693cd09805755ab85bbb5ecae69a48c3">item_post()</a>, <a class="el" href="login_8php.html#a1d69ca88eb9005a7026e128b9a645904">login_content()</a>, <a class="el" href="lostpass_8php.html#a0314d94e48c789b1b3a201d740c9eab3">lostpass_content()</a>, <a class="el" href="lostpass_8php.html#a8ed35ba71a4404eaf4903da61d0321cc">lostpass_post()</a>, <a class="el" href="magic_8php.html#acea2cc792849ca2d71d4b689f66518bf">magic_init()</a>, <a class="el" href="mail_8php.html#a3c7c485fc69f92371e8b20936040eca1">mail_content()</a>, <a class="el" href="mail_8php.html#acfc2cc0bf4e0b178207758384977f25a">mail_post()</a>, <a class="el" href="manage_8php.html#a2bca247b5296827638959138367db4f5">manage_content()</a>, <a class="el" href="mod_2menu_8php.html#a6fed23af14d71a78a4153c8363a685cf">menu_content()</a>, <a class="el" href="mod_2menu_8php.html#aaa491ef173868fe002aece4632bcf393">menu_post()</a>, <a class="el" href="mod_2message_8php.html#ac72dfed3ce08fcb331d66b37edc6e15f">message_content()</a>, <a class="el" href="mitem_8php.html#a7a31b702ecad18eeb6a38b243ff0037e">mitem_content()</a>, <a class="el" href="mitem_8php.html#a6ee694cca4b551a20d7c7a94b5243ec1">mitem_post()</a>, <a class="el" href="mood_8php.html#a7ae136dd7476865b4828136175db5022">mood_init()</a>, <a class="el" href="mod_2network_8php.html#a43f2f29b90c5e29072c561934bc8f8b4">network_content()</a>, <a class="el" href="new__channel_8php.html#a180b0646957db8290482f02454ad7f23">new_channel_post()</a>, <a class="el" href="include_2follow_8php.html#ae387d4ae097c23d69f3247e7f08140c7">new_contact()</a>, <a class="el" href="notifications_8php.html#a5baffec7b2e625c9f9cefbc097550d33">notifications_post()</a>, <a class="el" href="mod_2notify_8php.html#a94f9a6a9d4b5fd704baafff0c34f41ae">notify_init()</a>, <a class="el" href="openid_8php.html#a9a13827dbcf61ae4e45f0b6b33a88f43">openid_content()</a>, <a class="el" href="pdledit_8php.html#a81da3c955d0e3db55d148a31483104c7">pdledit_post()</a>, <a class="el" href="mod_2photos_8php.html#a062bed4d04d14fee8a53f4c9be673080">photos_post()</a>, <a class="el" href="post_8php.html#af4b48181ce773ef0cdfc972441445c34">post_init()</a>, <a class="el" href="profile__photo_8php.html#a4b80234074bd603221aa5364f330e479">profile_photo_post()</a>, <a class="el" href="profiles_8php.html#a36f71405ad536228f8bb84a551b23f7e">profiles_init()</a>, <a class="el" href="randprof_8php.html#abf5dba3c608b9304cbf68327cd31b090">randprof_init()</a>, <a class="el" href="rbmark_8php.html#a43fec4960b50926251574762cc491f76">rbmark_content()</a>, <a class="el" href="rbmark_8php.html#ac5a66aa8599fa5dc702bae396d8d1f8c">rbmark_post()</a>, <a class="el" href="register_8php.html#a51731dcc1917c58a790eb1c0f6132271">register_post()</a>, <a class="el" href="removeme_8php.html#a065a589caa2aa84c60f7073a28f0ad9c">removeme_content()</a>, <a class="el" href="rmagic_8php.html#a95455edd43f1bff39446a57388cdde16">rmagic_init()</a>, <a class="el" href="rmagic_8php.html#a869de069d081b3c4e98b957d06bbf08f">rmagic_post()</a>, <a class="el" href="rpost_8php.html#a8190354d789000806d9879aea276728f">rpost_content()</a>, <a class="el" href="search_8php.html#ab2568591359edde5b483a6cd9a24b2cc">search_content()</a>, <a class="el" href="settings_8php.html#aa7ee94d88ac088edb04ccf3a26de3586">settings_post()</a>, <a class="el" href="sources_8php.html#ac442ccef080ab95772d8929fcafcb4b7">sources_content()</a>, <a class="el" href="sources_8php.html#ac73298ff162ce7b2de8dcaf3d3305b1e">sources_post()</a>, <a class="el" href="sslify_8php.html#a75b11e54a3d1fc83e7d4c0e8b4dab316">sslify_init()</a>, <a class="el" href="tagrm_8php.html#adfd4ea5b4d7fc6d9c9e042af5cd7d49a">tagrm_content()</a>, <a class="el" href="tagrm_8php.html#a1702f40aa53a2fa93deade1f609abe78">tagrm_post()</a>, <a class="el" href="toggle__mobile_8php.html#aca53ade8971802b45c31e722b22c6254">toggle_mobile_init()</a>, <a class="el" href="toggle__safesearch_8php.html#a23d5cfb2727a266e44993ffbf5595a79">toggle_safesearch_init()</a>, <a class="el" href="wfinger_8php.html#ae21e50c8d0a5f3c9be9f43a4e519acd3">wfinger_init()</a>, <a class="el" href="xref_8php.html#a9bee399213b8de8226b0d60834307473">xref_init()</a>, and <a class="el" href="identity_8php.html#a680fbafc2db023c5b1309e0180e81315">zid_init()</a>.</p>
+<p>Redirect to another URL and terminate this process. </p>
+
+<p>Referenced by <a class="el" href="Contact_8php.html#a5101d7eca5d6f387e5555f03fe249e33">account_remove()</a>, <a class="el" href="admin_8php.html#ad6f87a764fd35f522c7b4c351d7878ec">admin_page_channels()</a>, <a class="el" href="admin_8php.html#a42e628f367c168add8013352ac74d33f">admin_page_channels_post()</a>, <a class="el" href="admin_8php.html#aaa6addf2dbc3f3fcf99244a56b41eade">admin_page_dbsync()</a>, <a class="el" href="admin_8php.html#a6943543f3138f6ee182cb701f415d1cc">admin_page_hubloc()</a>, <a class="el" href="admin_8php.html#a60ba9783ad14545814919970bc3fb725">admin_page_hubloc_post()</a>, <a class="el" href="admin_8php.html#a233b7c8c31776b7020532003c6e44e1c">admin_page_logs_post()</a>, <a class="el" href="admin_8php.html#a54128076986ba80c4a103de3fc3e19a8">admin_page_plugins()</a>, <a class="el" href="admin_8php.html#a3deba594ca1e11694eac1de0b724ef0a">admin_page_profs()</a>, <a class="el" href="admin_8php.html#a278289bc6d45f6f2a272a7ab6a1d1057">admin_page_profs_post()</a>, <a class="el" href="admin_8php.html#add865f4ae806ecbf716f423fc3e50e4f">admin_page_site_post()</a>, <a class="el" href="admin_8php.html#af124619fdc278fe2bf14c45ddaa260fb">admin_page_themes()</a>, <a class="el" href="admin_8php.html#a62f10f90c47686c9c3c37c4c03a108d2">admin_page_users()</a>, <a class="el" href="admin_8php.html#a5a696706a3869800e65fb365214241b7">admin_page_users_post()</a>, <a class="el" href="admin_8php.html#acf51f5837a7427832144c2bf7308ada3">admin_post()</a>, <a class="el" href="mod_2api_8php.html#a33315b5bbf5418f6850b2038107b526d">api_content()</a>, <a class="el" href="appman_8php.html#a2979acbe47ffaecfa19b9eabfbfbde39">appman_post()</a>, <a class="el" href="security_8php.html#adc7bf51e3b8d67bd80e9348f9ab03733">authenticate_success()</a>, <a class="el" href="channel_8php.html#a9c6a6179e0e626398ebecc6151905ef1">channel_content()</a>, <a class="el" href="Contact_8php.html#a4e8af0f0525161da74583c04b8b03097">channel_remove()</a>, <a class="el" href="chanview_8php.html#a4192c6da888c8c1165851acf9ad4cb8b">chanview_content()</a>, <a class="el" href="mod_2chat_8php.html#a8b0b8bee6fef6477e8c64c5e951b1b4f">chat_content()</a>, <a class="el" href="mod_2chat_8php.html#a999d594745597c656c9760253ae297ad">chat_post()</a>, <a class="el" href="chatsvc_8php.html#a7032784215e1f6747cf385a6598770f9">chatsvc_content()</a>, <a class="el" href="security_8php.html#a77ba0d1889a39cf32434c5ce96fe1433">check_form_security_token_redirectOnErr()</a>, <a class="el" href="connect_8php.html#a417ec27afe33f21a929667a665e32ee2">connect_post()</a>, <a class="el" href="connections_8php.html#a1224058db8e3fb56463eb312f98e561d">connections_post()</a>, <a class="el" href="connedit_8php.html#a795acb3d9d841f55c255d7611681ab67">connedit_content()</a>, <a class="el" href="connedit_8php.html#a234c48426b652bf4d37053f2af329ac5">connedit_post()</a>, <a class="el" href="delegate_8php.html#a943eea8996ef348eb845c498f9f354dd">delegate_content()</a>, <a class="el" href="mod_2directory_8php.html#aac79396570d759da2efac24fcedf5b44">directory_content()</a>, <a class="el" href="display_8php.html#a37137c98d47bf3306f4c2bb9f5b60de0">display_content()</a>, <a class="el" href="items_8php.html#a555762e1022a4b8e3c3abd32e7812408">drop_item()</a>, <a class="el" href="events_8php.html#ab3e8a8f901175f8e40a8089eea45c075">events_post()</a>, <a class="el" href="filerm_8php.html#ae2eb28d2054fa2c37e38689882172208">filerm_content()</a>, <a class="el" href="filestorage_8php.html#a61bb1be78472555df4ce619f51014040">filestorage_content()</a>, <a class="el" href="filestorage_8php.html#ad3b64e3ece9831f9d3a9f00c0ae983cd">filestorage_post()</a>, <a class="el" href="mod_2follow_8php.html#a171f5b19f50d7738adc3b2e96ec6018a">follow_init()</a>, <a class="el" href="mod_2group_8php.html#a07a64f6c65b0080d8190b3d9728a7a83">group_content()</a>, <a class="el" href="mod_2group_8php.html#aed1f009b1221348021bb34761160ef35">group_post()</a>, <a class="el" href="home_8php.html#ac4642c38b6f23a8d065dd4a75c620bde">home_init()</a>, <a class="el" href="import_8php.html#af17fef0410518f7eac205d0ea416eaa2">import_post()</a>, <a class="el" href="item_8php.html#a693cd09805755ab85bbb5ecae69a48c3">item_post()</a>, <a class="el" href="login_8php.html#a1d69ca88eb9005a7026e128b9a645904">login_content()</a>, <a class="el" href="lostpass_8php.html#a0314d94e48c789b1b3a201d740c9eab3">lostpass_content()</a>, <a class="el" href="lostpass_8php.html#a8ed35ba71a4404eaf4903da61d0321cc">lostpass_post()</a>, <a class="el" href="magic_8php.html#acea2cc792849ca2d71d4b689f66518bf">magic_init()</a>, <a class="el" href="mail_8php.html#a3c7c485fc69f92371e8b20936040eca1">mail_content()</a>, <a class="el" href="mail_8php.html#acfc2cc0bf4e0b178207758384977f25a">mail_post()</a>, <a class="el" href="manage_8php.html#a2bca247b5296827638959138367db4f5">manage_content()</a>, <a class="el" href="mod_2menu_8php.html#a6fed23af14d71a78a4153c8363a685cf">menu_content()</a>, <a class="el" href="mod_2menu_8php.html#aaa491ef173868fe002aece4632bcf393">menu_post()</a>, <a class="el" href="mod_2message_8php.html#ac72dfed3ce08fcb331d66b37edc6e15f">message_content()</a>, <a class="el" href="mitem_8php.html#a7a31b702ecad18eeb6a38b243ff0037e">mitem_content()</a>, <a class="el" href="mitem_8php.html#a6ee694cca4b551a20d7c7a94b5243ec1">mitem_post()</a>, <a class="el" href="mood_8php.html#a7ae136dd7476865b4828136175db5022">mood_init()</a>, <a class="el" href="mod_2network_8php.html#a43f2f29b90c5e29072c561934bc8f8b4">network_content()</a>, <a class="el" href="new__channel_8php.html#a180b0646957db8290482f02454ad7f23">new_channel_post()</a>, <a class="el" href="include_2follow_8php.html#ae387d4ae097c23d69f3247e7f08140c7">new_contact()</a>, <a class="el" href="notifications_8php.html#a5baffec7b2e625c9f9cefbc097550d33">notifications_post()</a>, <a class="el" href="mod_2notify_8php.html#a94f9a6a9d4b5fd704baafff0c34f41ae">notify_init()</a>, <a class="el" href="openid_8php.html#a9a13827dbcf61ae4e45f0b6b33a88f43">openid_content()</a>, <a class="el" href="pdledit_8php.html#a81da3c955d0e3db55d148a31483104c7">pdledit_post()</a>, <a class="el" href="mod_2photos_8php.html#aa87382611a66ec5effdb2d78f13f5812">photos_content()</a>, <a class="el" href="mod_2photos_8php.html#a062bed4d04d14fee8a53f4c9be673080">photos_post()</a>, <a class="el" href="post_8php.html#af4b48181ce773ef0cdfc972441445c34">post_init()</a>, <a class="el" href="profile__photo_8php.html#a4b80234074bd603221aa5364f330e479">profile_photo_post()</a>, <a class="el" href="profiles_8php.html#a36f71405ad536228f8bb84a551b23f7e">profiles_init()</a>, <a class="el" href="randprof_8php.html#abf5dba3c608b9304cbf68327cd31b090">randprof_init()</a>, <a class="el" href="rbmark_8php.html#a43fec4960b50926251574762cc491f76">rbmark_content()</a>, <a class="el" href="rbmark_8php.html#ac5a66aa8599fa5dc702bae396d8d1f8c">rbmark_post()</a>, <a class="el" href="register_8php.html#a51731dcc1917c58a790eb1c0f6132271">register_post()</a>, <a class="el" href="removeaccount_8php.html#a516e7380b9e5796054aa8245f3509695">removeaccount_content()</a>, <a class="el" href="removeme_8php.html#a065a589caa2aa84c60f7073a28f0ad9c">removeme_content()</a>, <a class="el" href="rmagic_8php.html#a95455edd43f1bff39446a57388cdde16">rmagic_init()</a>, <a class="el" href="rmagic_8php.html#a869de069d081b3c4e98b957d06bbf08f">rmagic_post()</a>, <a class="el" href="rpost_8php.html#a8190354d789000806d9879aea276728f">rpost_content()</a>, <a class="el" href="search_8php.html#ab2568591359edde5b483a6cd9a24b2cc">search_content()</a>, <a class="el" href="settings_8php.html#aa7ee94d88ac088edb04ccf3a26de3586">settings_post()</a>, <a class="el" href="sources_8php.html#ac442ccef080ab95772d8929fcafcb4b7">sources_content()</a>, <a class="el" href="sources_8php.html#ac73298ff162ce7b2de8dcaf3d3305b1e">sources_post()</a>, <a class="el" href="sslify_8php.html#a75b11e54a3d1fc83e7d4c0e8b4dab316">sslify_init()</a>, <a class="el" href="tagrm_8php.html#adfd4ea5b4d7fc6d9c9e042af5cd7d49a">tagrm_content()</a>, <a class="el" href="tagrm_8php.html#a1702f40aa53a2fa93deade1f609abe78">tagrm_post()</a>, <a class="el" href="toggle__mobile_8php.html#aca53ade8971802b45c31e722b22c6254">toggle_mobile_init()</a>, <a class="el" href="toggle__safesearch_8php.html#a23d5cfb2727a266e44993ffbf5595a79">toggle_safesearch_init()</a>, <a class="el" href="wfinger_8php.html#ae21e50c8d0a5f3c9be9f43a4e519acd3">wfinger_init()</a>, <a class="el" href="xref_8php.html#a9bee399213b8de8226b0d60834307473">xref_init()</a>, and <a class="el" href="identity_8php.html#a680fbafc2db023c5b1309e0180e81315">zid_init()</a>.</p>
</div>
</div>
@@ -1089,6 +1267,9 @@ Variables</h2></td></tr>
</table>
</div><div class="memdoc">
+<p>Get the pageicon. </p>
+<dl class="section return"><dt>Returns</dt><dd>string absolut path to pageicon </dd></dl>
+
</div>
</div>
<a class="anchor" id="a0e4701c9742c3ef88f02ac450a042a84"></a>
@@ -1105,6 +1286,14 @@ Variables</h2></td></tr>
</table>
</div><div class="memdoc">
+<p>Set a pageicon. </p>
+<dl class="params"><dt>Parameters</dt><dd>
+ <table class="params">
+ <tr><td class="paramtype">string</td><td class="paramname">$icon</td><td></td></tr>
+ </table>
+ </dd>
+</dl>
+
<p>Referenced by <a class="el" href="block_8php.html#a9b61c96044ed2a068f18c10370a78d5c">block_init()</a>, <a class="el" href="connections_8php.html#a1f23623f802af7bd35e95b0e94e5d558">connections_init()</a>, <a class="el" href="connedit_8php.html#a4da871e075597a09a8b374b9171dd92e">connedit_init()</a>, <a class="el" href="mail_8php.html#a3c7c485fc69f92371e8b20936040eca1">mail_content()</a>, <a class="el" href="mod_2message_8php.html#ac72dfed3ce08fcb331d66b37edc6e15f">message_content()</a>, <a class="el" href="mod_2network_8php.html#a180fce90ad11d7e0e45be094da7149ec">network_init()</a>, <a class="el" href="page_8php.html#a4d89800c0366a239191b1692c09635cf">page_init()</a>, <a class="el" href="mod_2photos_8php.html#ab950295cd77626f5fe65331a87693014">photos_init()</a>, and <a class="el" href="identity_8php.html#a432259b2cf5b6f59be53e71db9f2c7dc">profile_sidebar()</a>.</p>
</div>
@@ -1122,8 +1311,15 @@ Variables</h2></td></tr>
</tr>
</table>
</div><div class="memdoc">
+<p>Contents of $s are displayed prominently on the page the next time a page is loaded. Usually used for information. For error and alerts use <a class="el" href="boot_8php.html#a9255af5ae9c887520091ea04763c1a88">notice()</a>.</p>
+<dl class="params"><dt>Parameters</dt><dd>
+ <table class="params">
+ <tr><td class="paramtype">string</td><td class="paramname">$s</td><td>Text to display </td></tr>
+ </table>
+ </dd>
+</dl>
-<p>Referenced by <a class="el" href="admin_8php.html#aaa6addf2dbc3f3fcf99244a56b41eade">admin_page_dbsync()</a>, <a class="el" href="admin_8php.html#a233b7c8c31776b7020532003c6e44e1c">admin_page_logs_post()</a>, <a class="el" href="admin_8php.html#a54128076986ba80c4a103de3fc3e19a8">admin_page_plugins()</a>, <a class="el" href="admin_8php.html#add865f4ae806ecbf716f423fc3e50e4f">admin_page_site_post()</a>, <a class="el" href="admin_8php.html#af124619fdc278fe2bf14c45ddaa260fb">admin_page_themes()</a>, <a class="el" href="admin_8php.html#acf51f5837a7427832144c2bf7308ada3">admin_post()</a>, <a class="el" href="appman_8php.html#a2979acbe47ffaecfa19b9eabfbfbde39">appman_post()</a>, <a class="el" href="mod_2bookmarks_8php.html#a6b7942f3d27e40f0f47c88704127b9b3">bookmarks_init()</a>, <a class="el" href="connections_8php.html#a1224058db8e3fb56463eb312f98e561d">connections_post()</a>, <a class="el" href="connedit_8php.html#a795acb3d9d841f55c255d7611681ab67">connedit_content()</a>, <a class="el" href="connedit_8php.html#a234c48426b652bf4d37053f2af329ac5">connedit_post()</a>, <a class="el" href="mod_2directory_8php.html#aac79396570d759da2efac24fcedf5b44">directory_content()</a>, <a class="el" href="dirprofile_8php.html#a3e1d30d3d93863ff5615f2df4ac7f052">dirprofile_init()</a>, <a class="el" href="filestorage_8php.html#a61bb1be78472555df4ce619f51014040">filestorage_content()</a>, <a class="el" href="mod_2follow_8php.html#a171f5b19f50d7738adc3b2e96ec6018a">follow_init()</a>, <a class="el" href="fsuggest_8php.html#a61ecfe10ce937ed526614f8fd3de3c7d">fsuggest_post()</a>, <a class="el" href="mod_2group_8php.html#a07a64f6c65b0080d8190b3d9728a7a83">group_content()</a>, <a class="el" href="mod_2group_8php.html#aed1f009b1221348021bb34761160ef35">group_post()</a>, <a class="el" href="item_8php.html#a693cd09805755ab85bbb5ecae69a48c3">item_post()</a>, <a class="el" href="lostpass_8php.html#a0314d94e48c789b1b3a201d740c9eab3">lostpass_content()</a>, <a class="el" href="lostpass_8php.html#a8ed35ba71a4404eaf4903da61d0321cc">lostpass_post()</a>, <a class="el" href="mail_8php.html#a3c7c485fc69f92371e8b20936040eca1">mail_content()</a>, <a class="el" href="match_8php.html#a1dd853e959b9e70c1911bb2fb5f5130d">match_content()</a>, <a class="el" href="mod_2menu_8php.html#a6fed23af14d71a78a4153c8363a685cf">menu_content()</a>, <a class="el" href="mod_2menu_8php.html#aaa491ef173868fe002aece4632bcf393">menu_post()</a>, <a class="el" href="mod_2message_8php.html#ac72dfed3ce08fcb331d66b37edc6e15f">message_content()</a>, <a class="el" href="mitem_8php.html#a7a31b702ecad18eeb6a38b243ff0037e">mitem_content()</a>, <a class="el" href="mitem_8php.html#a6ee694cca4b551a20d7c7a94b5243ec1">mitem_post()</a>, <a class="el" href="mod_2network_8php.html#a43f2f29b90c5e29072c561934bc8f8b4">network_content()</a>, <a class="el" href="oexchange_8php.html#a2d8b785cd7d041a4e6274f5af370cf26">oexchange_content()</a>, <a class="el" href="openid_8php.html#a9a13827dbcf61ae4e45f0b6b33a88f43">openid_content()</a>, <a class="el" href="pdledit_8php.html#a81da3c955d0e3db55d148a31483104c7">pdledit_post()</a>, <a class="el" href="post_8php.html#af4b48181ce773ef0cdfc972441445c34">post_init()</a>, <a class="el" href="profile__photo_8php.html#a4b80234074bd603221aa5364f330e479">profile_photo_post()</a>, <a class="el" href="profiles_8php.html#a36f71405ad536228f8bb84a551b23f7e">profiles_init()</a>, <a class="el" href="profiles_8php.html#ab0362c81b1d3b0b12a772b9fac446e04">profiles_post()</a>, <a class="el" href="register_8php.html#a51731dcc1917c58a790eb1c0f6132271">register_post()</a>, <a class="el" href="regmod_8php.html#a7953df4e32e63946565e90cdd5d50409">regmod_content()</a>, <a class="el" href="settings_8php.html#aa7ee94d88ac088edb04ccf3a26de3586">settings_post()</a>, <a class="el" href="sources_8php.html#ac442ccef080ab95772d8929fcafcb4b7">sources_content()</a>, <a class="el" href="sources_8php.html#ac73298ff162ce7b2de8dcaf3d3305b1e">sources_post()</a>, <a class="el" href="suggest_8php.html#a58748a8235d4523f8333847f3e42dd91">suggest_content()</a>, <a class="el" href="tagrm_8php.html#a1702f40aa53a2fa93deade1f609abe78">tagrm_post()</a>, <a class="el" href="thing_8php.html#a8be23b1d475ec3d9291999221c674c80">thing_init()</a>, <a class="el" href="account_8php.html#ac5c570a2d46446bad4dd2501e9c5a4b1">user_allow()</a>, <a class="el" href="account_8php.html#ad07be417ac7eda939768804106ddea3d">user_approve()</a>, and <a class="el" href="viewconnections_8php.html#ab6c4d983e97b3a8a879567ff76507776">viewconnections_content()</a>.</p>
+<p>Referenced by <a class="el" href="admin_8php.html#aaa6addf2dbc3f3fcf99244a56b41eade">admin_page_dbsync()</a>, <a class="el" href="admin_8php.html#a233b7c8c31776b7020532003c6e44e1c">admin_page_logs_post()</a>, <a class="el" href="admin_8php.html#a54128076986ba80c4a103de3fc3e19a8">admin_page_plugins()</a>, <a class="el" href="admin_8php.html#add865f4ae806ecbf716f423fc3e50e4f">admin_page_site_post()</a>, <a class="el" href="admin_8php.html#af124619fdc278fe2bf14c45ddaa260fb">admin_page_themes()</a>, <a class="el" href="admin_8php.html#acf51f5837a7427832144c2bf7308ada3">admin_post()</a>, <a class="el" href="appman_8php.html#a2979acbe47ffaecfa19b9eabfbfbde39">appman_post()</a>, <a class="el" href="mod_2bookmarks_8php.html#a6b7942f3d27e40f0f47c88704127b9b3">bookmarks_init()</a>, <a class="el" href="connections_8php.html#a1224058db8e3fb56463eb312f98e561d">connections_post()</a>, <a class="el" href="connedit_8php.html#a795acb3d9d841f55c255d7611681ab67">connedit_content()</a>, <a class="el" href="connedit_8php.html#a234c48426b652bf4d37053f2af329ac5">connedit_post()</a>, <a class="el" href="mod_2directory_8php.html#aac79396570d759da2efac24fcedf5b44">directory_content()</a>, <a class="el" href="filestorage_8php.html#a61bb1be78472555df4ce619f51014040">filestorage_content()</a>, <a class="el" href="mod_2follow_8php.html#a171f5b19f50d7738adc3b2e96ec6018a">follow_init()</a>, <a class="el" href="fsuggest_8php.html#a61ecfe10ce937ed526614f8fd3de3c7d">fsuggest_post()</a>, <a class="el" href="mod_2group_8php.html#a07a64f6c65b0080d8190b3d9728a7a83">group_content()</a>, <a class="el" href="mod_2group_8php.html#aed1f009b1221348021bb34761160ef35">group_post()</a>, <a class="el" href="impel_8php.html#ab7db6fca43b42ea4332cb3e841b3cf7b">impel_init()</a>, <a class="el" href="item_8php.html#a693cd09805755ab85bbb5ecae69a48c3">item_post()</a>, <a class="el" href="lostpass_8php.html#a0314d94e48c789b1b3a201d740c9eab3">lostpass_content()</a>, <a class="el" href="lostpass_8php.html#a8ed35ba71a4404eaf4903da61d0321cc">lostpass_post()</a>, <a class="el" href="mail_8php.html#a3c7c485fc69f92371e8b20936040eca1">mail_content()</a>, <a class="el" href="match_8php.html#a1dd853e959b9e70c1911bb2fb5f5130d">match_content()</a>, <a class="el" href="mod_2menu_8php.html#a6fed23af14d71a78a4153c8363a685cf">menu_content()</a>, <a class="el" href="mod_2menu_8php.html#aaa491ef173868fe002aece4632bcf393">menu_post()</a>, <a class="el" href="mod_2message_8php.html#ac72dfed3ce08fcb331d66b37edc6e15f">message_content()</a>, <a class="el" href="mitem_8php.html#a7a31b702ecad18eeb6a38b243ff0037e">mitem_content()</a>, <a class="el" href="mitem_8php.html#a6ee694cca4b551a20d7c7a94b5243ec1">mitem_post()</a>, <a class="el" href="mod_2network_8php.html#a43f2f29b90c5e29072c561934bc8f8b4">network_content()</a>, <a class="el" href="oexchange_8php.html#a2d8b785cd7d041a4e6274f5af370cf26">oexchange_content()</a>, <a class="el" href="openid_8php.html#a9a13827dbcf61ae4e45f0b6b33a88f43">openid_content()</a>, <a class="el" href="pdledit_8php.html#a81da3c955d0e3db55d148a31483104c7">pdledit_post()</a>, <a class="el" href="post_8php.html#af4b48181ce773ef0cdfc972441445c34">post_init()</a>, <a class="el" href="profile__photo_8php.html#a4b80234074bd603221aa5364f330e479">profile_photo_post()</a>, <a class="el" href="profiles_8php.html#a36f71405ad536228f8bb84a551b23f7e">profiles_init()</a>, <a class="el" href="profiles_8php.html#ab0362c81b1d3b0b12a772b9fac446e04">profiles_post()</a>, <a class="el" href="register_8php.html#a51731dcc1917c58a790eb1c0f6132271">register_post()</a>, <a class="el" href="regmod_8php.html#a7953df4e32e63946565e90cdd5d50409">regmod_content()</a>, <a class="el" href="settings_8php.html#aa7ee94d88ac088edb04ccf3a26de3586">settings_post()</a>, <a class="el" href="sources_8php.html#ac442ccef080ab95772d8929fcafcb4b7">sources_content()</a>, <a class="el" href="sources_8php.html#ac73298ff162ce7b2de8dcaf3d3305b1e">sources_post()</a>, <a class="el" href="suggest_8php.html#a58748a8235d4523f8333847f3e42dd91">suggest_content()</a>, <a class="el" href="tagrm_8php.html#adfd4ea5b4d7fc6d9c9e042af5cd7d49a">tagrm_content()</a>, <a class="el" href="tagrm_8php.html#a1702f40aa53a2fa93deade1f609abe78">tagrm_post()</a>, <a class="el" href="thing_8php.html#a8be23b1d475ec3d9291999221c674c80">thing_init()</a>, <a class="el" href="account_8php.html#ac5c570a2d46446bad4dd2501e9c5a4b1">user_allow()</a>, <a class="el" href="account_8php.html#ad07be417ac7eda939768804106ddea3d">user_approve()</a>, and <a class="el" href="viewconnections_8php.html#ab6c4d983e97b3a8a879567ff76507776">viewconnections_content()</a>.</p>
</div>
</div>
@@ -1140,6 +1336,9 @@ Variables</h2></td></tr>
</table>
</div><div class="memdoc">
+<p>Function to check if request was an AJAX (xmlhttprequest) request. </p>
+<dl class="section return"><dt>Returns</dt><dd>boolean </dd></dl>
+
<p>Referenced by <a class="el" href="admin_8php.html#afef415e4011607fbb665610441595015">admin_content()</a>, <a class="el" href="admin_8php.html#acf51f5837a7427832144c2bf7308ada3">admin_post()</a>, <a class="el" href="mod_2photos_8php.html#a062bed4d04d14fee8a53f4c9be673080">photos_post()</a>, and <a class="el" href="viewsrc_8php.html#a6eff3d0c1d7d14b335c4edb785cd60a4">viewsrc_content()</a>.</p>
</div>
@@ -1157,6 +1356,12 @@ Variables</h2></td></tr>
</table>
</div><div class="memdoc">
+<p>Check if current user has developer role. </p>
+<p>Check if the current user has ACCOUNT_ROLE_DEVELOPER.</p>
+<dl class="section return"><dt>Returns</dt><dd>bool true if user is a developer </dd></dl>
+
+<p>Referenced by <a class="el" href="achievements_8php.html#a35ae04ada0e227d19671f289a32fb30e">achievements_content()</a>, and <a class="el" href="security_8php.html#a8d23d2597aae380a3341872fe9513380">change_channel()</a>.</p>
+
</div>
</div>
<a class="anchor" id="aa1e828bbbcba170265eb2668d8daf42e"></a>
@@ -1172,7 +1377,11 @@ Variables</h2></td></tr>
</table>
</div><div class="memdoc">
-<p>Referenced by <a class="el" href="admin_8php.html#afef415e4011607fbb665610441595015">admin_content()</a>, <a class="el" href="admin_8php.html#acf51f5837a7427832144c2bf7308ada3">admin_post()</a>, <a class="el" href="include_2apps_8php.html#a1b2e737f477a2e0d9d11ef14adc5aa66">app_render()</a>, <a class="el" href="account_8php.html#a917d74aad0baf3e0c4b51cf1051e654f">check_account_admin()</a>, <a class="el" href="contact__widgets_8php.html#a57e73ebcfd62bb5d8c7a7b9e663726d6">findpeople_widget()</a>, <a class="el" href="invite_8php.html#a244385b28cfd021d308715f01158bfd9">invite_content()</a>, <a class="el" href="invite_8php.html#aeb0881c0f93c8e8552e5ed756ce6e5a5">invite_post()</a>, <a class="el" href="nav_8php.html#a43be0df73b90647ea70947ce004e231e">nav()</a>, <a class="el" href="include_2apps_8php.html#a32fe4ed9666228fd4b67dc487cc57a83">parse_app_description()</a>, <a class="el" href="ping_8php.html#a77217b1b190b4c5d8770867b45f0c0a1">ping_init()</a>, <a class="el" href="register_8php.html#a51731dcc1917c58a790eb1c0f6132271">register_post()</a>, <a class="el" href="regmod_8php.html#a7953df4e32e63946565e90cdd5d50409">regmod_content()</a>, and <a class="el" href="thing_8php.html#a8be23b1d475ec3d9291999221c674c80">thing_init()</a>.</p>
+<p>Check if current user has admin role. </p>
+<p>Check if the current user has ACCOUNT_ROLE_ADMIN.</p>
+<dl class="section return"><dt>Returns</dt><dd>bool true if user is an admin </dd></dl>
+
+<p>Referenced by <a class="el" href="admin_8php.html#afef415e4011607fbb665610441595015">admin_content()</a>, <a class="el" href="admin_8php.html#acf51f5837a7427832144c2bf7308ada3">admin_post()</a>, <a class="el" href="include_2apps_8php.html#a1b2e737f477a2e0d9d11ef14adc5aa66">app_render()</a>, <a class="el" href="blocks_8php.html#a2531a8fd51db3cecb2eb20c002c66e12">blocks_content()</a>, <a class="el" href="blocks_8php.html#aebe88302181883d2b17d6e98a1aaebe9">blocks_init()</a>, <a class="el" href="security_8php.html#a8d23d2597aae380a3341872fe9513380">change_channel()</a>, <a class="el" href="account_8php.html#a917d74aad0baf3e0c4b51cf1051e654f">check_account_admin()</a>, <a class="el" href="text_8php.html#a87a3cefc603302c78982f1d8e1245265">design_tools()</a>, <a class="el" href="editblock_8php.html#abbe8f55de06967bc8d79d620509a49e6">editblock_content()</a>, <a class="el" href="editblock_8php.html#ab7806bb42ae5e93f0330d7bd179d4b3e">editblock_init()</a>, <a class="el" href="editlayout_8php.html#aa877e4157a26b099de904164181dd386">editlayout_content()</a>, <a class="el" href="editlayout_8php.html#a97c1e93d9e75ad8cd2c2f9a7f77341a7">editlayout_init()</a>, <a class="el" href="editwebpage_8php.html#a375e945255fad79a71036528f7480650">editwebpage_content()</a>, <a class="el" href="editwebpage_8php.html#a94109f9c796fbe92508bf9574e35d19f">editwebpage_init()</a>, <a class="el" href="contact__widgets_8php.html#a57e73ebcfd62bb5d8c7a7b9e663726d6">findpeople_widget()</a>, <a class="el" href="invite_8php.html#a244385b28cfd021d308715f01158bfd9">invite_content()</a>, <a class="el" href="invite_8php.html#aeb0881c0f93c8e8552e5ed756ce6e5a5">invite_post()</a>, <a class="el" href="item_8php.html#a693cd09805755ab85bbb5ecae69a48c3">item_post()</a>, <a class="el" href="layouts_8php.html#a6e0193759ad9eef76d3df2db24237b50">layouts_content()</a>, <a class="el" href="layouts_8php.html#a39c8e9f72641c684c8b689bd91a642fa">layouts_init()</a>, <a class="el" href="mod_2menu_8php.html#a6fed23af14d71a78a4153c8363a685cf">menu_content()</a>, <a class="el" href="mod_2menu_8php.html#aaa491ef173868fe002aece4632bcf393">menu_post()</a>, <a class="el" href="mitem_8php.html#a7a31b702ecad18eeb6a38b243ff0037e">mitem_content()</a>, <a class="el" href="mitem_8php.html#a9627cd857cafdf04e4fc0ae48c8e8518">mitem_init()</a>, <a class="el" href="mitem_8php.html#a6ee694cca4b551a20d7c7a94b5243ec1">mitem_post()</a>, <a class="el" href="nav_8php.html#a43be0df73b90647ea70947ce004e231e">nav()</a>, <a class="el" href="include_2apps_8php.html#a32fe4ed9666228fd4b67dc487cc57a83">parse_app_description()</a>, <a class="el" href="ping_8php.html#a77217b1b190b4c5d8770867b45f0c0a1">ping_init()</a>, <a class="el" href="register_8php.html#a51731dcc1917c58a790eb1c0f6132271">register_post()</a>, <a class="el" href="regmod_8php.html#a7953df4e32e63946565e90cdd5d50409">regmod_content()</a>, <a class="el" href="thing_8php.html#a8be23b1d475ec3d9291999221c674c80">thing_init()</a>, <a class="el" href="webpages_8php.html#af3b7397d4abc153e3d2147740ee1a41d">webpages_content()</a>, and <a class="el" href="webpages_8php.html#af9ad0b65eba79acead3fa32b43d888b7">webpages_init()</a>.</p>
</div>
</div>
@@ -1189,6 +1398,9 @@ Variables</h2></td></tr>
</table>
</div><div class="memdoc">
+<p>Checks if we are running on M$ Windows. </p>
+<dl class="section return"><dt>Returns</dt><dd>bool true if we run on M$ Windows </dd></dl>
+
<p>Referenced by <a class="el" href="setup_8php.html#a14d208682a88632290c895d20da6e7d6">check_php()</a>, and <a class="el" href="boot_8php.html#ab346a2ece14993861f3e4206befa94f0">proc_run()</a>.</p>
</div>
@@ -1206,7 +1418,9 @@ Variables</h2></td></tr>
</table>
</div><div class="memdoc">
-<p>Referenced by <a class="el" href="classFriendicaSmartyEngine.html#ab7c305bd8c386c2944e4dc9136cea5b6">FriendicaSmartyEngine\__construct()</a>, <a class="el" href="acl_8php.html#ac6776dba871806ecdb5d1659bc2eb07a">acl_init()</a>, <a class="el" href="admin_8php.html#afef415e4011607fbb665610441595015">admin_content()</a>, <a class="el" href="mod_2api_8php.html#a33315b5bbf5418f6850b2038107b526d">api_content()</a>, <a class="el" href="include_2api_8php.html#a36344c80b8e9755da2f2dd3a0e28cce8">api_ff_ids()</a>, <a class="el" href="include_2api_8php.html#a53b0680b682ae6078f2e1ed18cfb3f74">api_friendica_version()</a>, <a class="el" href="include_2api_8php.html#aff322705cc6084b329003fc8eab0aad0">api_oauth_access_token()</a>, <a class="el" href="include_2api_8php.html#aa1bddb580510e70cc1a7b7381667f1a3">api_oauth_request_token()</a>, <a class="el" href="include_2api_8php.html#a8969e8d9c683f12ba17dcd4b059e020d">api_statusnet_version()</a>, <a class="el" href="mod_2attach_8php.html#aa88eb5ad87aa1036a30e70339cc6c1b1">attach_init()</a>, <a class="el" href="mod_2bookmarks_8php.html#a6b7942f3d27e40f0f47c88704127b9b3">bookmarks_init()</a>, <a class="el" href="security_8php.html#a444ac867dfa8c37cf0a7a226412bee28">check_form_security_token_ForbiddenOnErr()</a>, <a class="el" href="cloud_8php.html#a1b79a6fe0454bc76673ad9aef55bf02d">cloud_init()</a>, <a class="el" href="contactgroup_8php.html#a18c7391b1b25debaf98c9dba639caab3">contactgroup_content()</a>, <a class="el" href="dirprofile_8php.html#a3e1d30d3d93863ff5615f2df4ac7f052">dirprofile_init()</a>, <a class="el" href="events_8php.html#a1d293fb217ae6bc9e3858c4b32e363ec">events_content()</a>, <a class="el" href="fbrowser_8php.html#aee476addcf7a3e0fe9454f7dfd5a56c4">fbrowser_content()</a>, <a class="el" href="feed_8php.html#af86137700b56f33d1d5f25c8dec22c04">feed_init()</a>, <a class="el" href="filer_8php.html#a5fd5d7e61b2f9c43cb5f110c89dc4274">filer_content()</a>, <a class="el" href="filerm_8php.html#ae2eb28d2054fa2c37e38689882172208">filerm_content()</a>, <a class="el" href="boot_8php.html#a5ab6181607a090bcdbaa13b15b85aba1">goaway()</a>, <a class="el" href="hostxrd_8php.html#aa37ffc8e7900bc76c4828bd25916db92">hostxrd_init()</a>, <a class="el" href="include_2network_8php.html#a4cfb2c05a1c295317283d762440ce0b2">http_status_exit()</a>, <a class="el" href="importelm_8php.html#a1a4f71e6d76ace6add5e9659845f5e5f">importelm_post()</a>, <a class="el" href="item_8php.html#a693cd09805755ab85bbb5ecae69a48c3">item_post()</a>, <a class="el" href="include_2network_8php.html#a4c5d50079e089168d9248427018fffd4">json_return_and_die()</a>, <a class="el" href="layouts_8php.html#a6e0193759ad9eef76d3df2db24237b50">layouts_content()</a>, <a class="el" href="like_8php.html#a9d7dd268f21c21e9d29dd2aca2dd9538">like_content()</a>, <a class="el" href="lockview_8php.html#a851e26ab9a1008df5c5ebebea31e9b44">lockview_content()</a>, <a class="el" href="msearch_8php.html#ac80d2a6c0a92e79eec7efbbccd74d9a8">msearch_post()</a>, <a class="el" href="mod_2network_8php.html#a43f2f29b90c5e29072c561934bc8f8b4">network_content()</a>, <a class="el" href="mod_2oembed_8php.html#a9145025aaf057fb5d3f9f7011e5e1014">oembed_init()</a>, <a class="el" href="oexchange_8php.html#ac8e2e469ddc3db984b0c1b44558aca59">oexchange_init()</a>, <a class="el" href="opensearch_8php.html#ad13034877a496565ac7d99e9fc6f55e9">opensearch_init()</a>, <a class="el" href="parse__url_8php.html#a05a9e8944380ba3cf6bbf5893dd4b74b">parse_url_content()</a>, <a class="el" href="photo_8php.html#a582779d24882b0d31ee909a91d70a448">photo_init()</a>, <a class="el" href="mod_2photos_8php.html#a062bed4d04d14fee8a53f4c9be673080">photos_post()</a>, <a class="el" href="php_8php.html#adb7164dfed9a4ecbe2e168e1e78f12f6">php_init()</a>, <a class="el" href="ping_8php.html#a77217b1b190b4c5d8770867b45f0c0a1">ping_init()</a>, <a class="el" href="poco_8php.html#a53def16f75e3d41f1d2bb7cfa4905498">poco_init()</a>, <a class="el" href="poller_8php.html#a5f12df3a4738124b6c039971e87e76da">poller_run()</a>, <a class="el" href="pretheme_8php.html#af5660943ee99db5fd75182316522eafe">pretheme_init()</a>, <a class="el" href="classApp.html#abf46a653d8499e7c253cc1be894a6d83">App\register_template_engine()</a>, <a class="el" href="regmod_8php.html#a7953df4e32e63946565e90cdd5d50409">regmod_content()</a>, <a class="el" href="regver_8php.html#ad2c5f644fd1b099abd7c715b7df6f50f">regver_content()</a>, <a class="el" href="search__ac_8php.html#a14f90c83a3f2be095e9e2992a8d66138">search_ac_init()</a>, <a class="el" href="setup_8php.html#a267555abd17290e659b4bf44b885e4e0">setup_init()</a>, <a class="el" href="setup_8php.html#a13cf286774149a0a7bd8adb8179cec75">setup_post()</a>, <a class="el" href="share_8php.html#afeb26046bdd02567ecd29ab5f188b249">share_init()</a>, <a class="el" href="siteinfo_8php.html#a3efbd0bd6564af19ec0a9ce0294e59d0">siteinfo_init()</a>, <a class="el" href="sitelist_8php.html#a665a59bf60f780b40f32c909f4a473b1">sitelist_init()</a>, <a class="el" href="sslify_8php.html#a75b11e54a3d1fc83e7d4c0e8b4dab316">sslify_init()</a>, <a class="el" href="starred_8php.html#a63024fb418c678e49fd535e3752d349a">starred_init()</a>, <a class="el" href="subthread_8php.html#a50368f3d825b77996030528e7fbfa3d3">subthread_content()</a>, <a class="el" href="boot_8php.html#ac608a34f3bc180e7724192e0fd31f9b0">system_unavailable()</a>, <a class="el" href="tagger_8php.html#a0e4a3eb177d1684553c547503d67161c">tagger_content()</a>, <a class="el" href="classApp.html#a94a1ed2dc493c58612d17035b74ae736">App\template_engine()</a>, <a class="el" href="uexport_8php.html#a118920137dedebe0581623a2e57e7b0d">uexport_init()</a>, <a class="el" href="update__channel_8php.html#aca52a9da500f0db2f0a8666af5bc06ba">update_channel_content()</a>, <a class="el" href="update__display_8php.html#aa36ac524059e209d5d75a03c16206246">update_display_content()</a>, <a class="el" href="update__network_8php.html#a8abf5b9f65af6a27ee2f9d7207ed1b41">update_network_content()</a>, <a class="el" href="update__search_8php.html#ace4c3a23fa7d6922399e27c297a6ba52">update_search_content()</a>, <a class="el" href="view_8php.html#ac168f6c61a91ba2063f13b441c0ae96e">view_init()</a>, <a class="el" href="viewsrc_8php.html#a6eff3d0c1d7d14b335c4edb785cd60a4">viewsrc_content()</a>, <a class="el" href="wall__attach_8php.html#a7385e970e93228d082f0fd7254f6e653">wall_attach_post()</a>, <a class="el" href="wall__upload_8php.html#a7cbe204244cf9e0380ee932263a74d8f">wall_upload_post()</a>, <a class="el" href="wfinger_8php.html#ae21e50c8d0a5f3c9be9f43a4e519acd3">wfinger_init()</a>, <a class="el" href="include_2network_8php.html#a9e9da2aafb806c98ecdc318604e60dc6">xml_status()</a>, and <a class="el" href="xrd_8php.html#aee3cf087968e4a0ff3a87de16eb23270">xrd_init()</a>.</p>
+<p>Used to end the current process, after saving session state. </p>
+
+<p>Referenced by <a class="el" href="classFriendicaSmartyEngine.html#ab7c305bd8c386c2944e4dc9136cea5b6">FriendicaSmartyEngine\__construct()</a>, <a class="el" href="acl_8php.html#ac6776dba871806ecdb5d1659bc2eb07a">acl_init()</a>, <a class="el" href="admin_8php.html#afef415e4011607fbb665610441595015">admin_content()</a>, <a class="el" href="mod_2api_8php.html#a33315b5bbf5418f6850b2038107b526d">api_content()</a>, <a class="el" href="include_2api_8php.html#a36344c80b8e9755da2f2dd3a0e28cce8">api_ff_ids()</a>, <a class="el" href="include_2api_8php.html#a53b0680b682ae6078f2e1ed18cfb3f74">api_friendica_version()</a>, <a class="el" href="include_2api_8php.html#aff322705cc6084b329003fc8eab0aad0">api_oauth_access_token()</a>, <a class="el" href="include_2api_8php.html#aa1bddb580510e70cc1a7b7381667f1a3">api_oauth_request_token()</a>, <a class="el" href="include_2api_8php.html#a8969e8d9c683f12ba17dcd4b059e020d">api_statusnet_version()</a>, <a class="el" href="mod_2attach_8php.html#aa88eb5ad87aa1036a30e70339cc6c1b1">attach_init()</a>, <a class="el" href="mod_2bookmarks_8php.html#a6b7942f3d27e40f0f47c88704127b9b3">bookmarks_init()</a>, <a class="el" href="security_8php.html#a444ac867dfa8c37cf0a7a226412bee28">check_form_security_token_ForbiddenOnErr()</a>, <a class="el" href="cloud_8php.html#ad2e96e917852f27dedfc263d37e13756">cloud_init()</a>, <a class="el" href="connections_8php.html#aec2e457420fce3e3bf6a9f48e36df25c">connections_content()</a>, <a class="el" href="contactgroup_8php.html#a18c7391b1b25debaf98c9dba639caab3">contactgroup_content()</a>, <a class="el" href="mod_2directory_8php.html#aac79396570d759da2efac24fcedf5b44">directory_content()</a>, <a class="el" href="events_8php.html#a1d293fb217ae6bc9e3858c4b32e363ec">events_content()</a>, <a class="el" href="fbrowser_8php.html#aee476addcf7a3e0fe9454f7dfd5a56c4">fbrowser_content()</a>, <a class="el" href="feed_8php.html#af86137700b56f33d1d5f25c8dec22c04">feed_init()</a>, <a class="el" href="filer_8php.html#a5fd5d7e61b2f9c43cb5f110c89dc4274">filer_content()</a>, <a class="el" href="filerm_8php.html#ae2eb28d2054fa2c37e38689882172208">filerm_content()</a>, <a class="el" href="filestorage_8php.html#a61bb1be78472555df4ce619f51014040">filestorage_content()</a>, <a class="el" href="boot_8php.html#a5ab6181607a090bcdbaa13b15b85aba1">goaway()</a>, <a class="el" href="hostxrd_8php.html#aa37ffc8e7900bc76c4828bd25916db92">hostxrd_init()</a>, <a class="el" href="include_2network_8php.html#a4cfb2c05a1c295317283d762440ce0b2">http_status_exit()</a>, <a class="el" href="importelm_8php.html#a1a4f71e6d76ace6add5e9659845f5e5f">importelm_post()</a>, <a class="el" href="item_8php.html#a693cd09805755ab85bbb5ecae69a48c3">item_post()</a>, <a class="el" href="include_2network_8php.html#a4c5d50079e089168d9248427018fffd4">json_return_and_die()</a>, <a class="el" href="layouts_8php.html#a6e0193759ad9eef76d3df2db24237b50">layouts_content()</a>, <a class="el" href="like_8php.html#a9d7dd268f21c21e9d29dd2aca2dd9538">like_content()</a>, <a class="el" href="lockview_8php.html#a851e26ab9a1008df5c5ebebea31e9b44">lockview_content()</a>, <a class="el" href="msearch_8php.html#ac80d2a6c0a92e79eec7efbbccd74d9a8">msearch_post()</a>, <a class="el" href="netgrowth_8php.html#a9b87bfc25a7cb11bc7f8e1fdd0310919">netgrowth_content()</a>, <a class="el" href="mod_2network_8php.html#a43f2f29b90c5e29072c561934bc8f8b4">network_content()</a>, <a class="el" href="mod_2oembed_8php.html#a9145025aaf057fb5d3f9f7011e5e1014">oembed_init()</a>, <a class="el" href="oexchange_8php.html#ac8e2e469ddc3db984b0c1b44558aca59">oexchange_init()</a>, <a class="el" href="opensearch_8php.html#ad13034877a496565ac7d99e9fc6f55e9">opensearch_init()</a>, <a class="el" href="p_8php.html#af9d5530ca0b3dc9409cf591c39e2480e">p_init()</a>, <a class="el" href="parse__url_8php.html#a05a9e8944380ba3cf6bbf5893dd4b74b">parse_url_content()</a>, <a class="el" href="photo_8php.html#a582779d24882b0d31ee909a91d70a448">photo_init()</a>, <a class="el" href="mod_2photos_8php.html#aa87382611a66ec5effdb2d78f13f5812">photos_content()</a>, <a class="el" href="mod_2photos_8php.html#a062bed4d04d14fee8a53f4c9be673080">photos_post()</a>, <a class="el" href="php_8php.html#adb7164dfed9a4ecbe2e168e1e78f12f6">php_init()</a>, <a class="el" href="ping_8php.html#a77217b1b190b4c5d8770867b45f0c0a1">ping_init()</a>, <a class="el" href="poco_8php.html#a53def16f75e3d41f1d2bb7cfa4905498">poco_init()</a>, <a class="el" href="poll_8php.html#a3314c26bd2ac0ed831cebf3315cd3263">poll_content()</a>, <a class="el" href="poller_8php.html#a5f12df3a4738124b6c039971e87e76da">poller_run()</a>, <a class="el" href="pretheme_8php.html#af5660943ee99db5fd75182316522eafe">pretheme_init()</a>, <a class="el" href="profiles_8php.html#a36f71405ad536228f8bb84a551b23f7e">profiles_init()</a>, <a class="el" href="classApp.html#abf46a653d8499e7c253cc1be894a6d83">App\register_template_engine()</a>, <a class="el" href="regmod_8php.html#a7953df4e32e63946565e90cdd5d50409">regmod_content()</a>, <a class="el" href="regver_8php.html#ad2c5f644fd1b099abd7c715b7df6f50f">regver_content()</a>, <a class="el" href="search__ac_8php.html#a14f90c83a3f2be095e9e2992a8d66138">search_ac_init()</a>, <a class="el" href="setup_8php.html#a267555abd17290e659b4bf44b885e4e0">setup_init()</a>, <a class="el" href="setup_8php.html#a13cf286774149a0a7bd8adb8179cec75">setup_post()</a>, <a class="el" href="share_8php.html#afeb26046bdd02567ecd29ab5f188b249">share_init()</a>, <a class="el" href="sitelist_8php.html#a665a59bf60f780b40f32c909f4a473b1">sitelist_init()</a>, <a class="el" href="sslify_8php.html#a75b11e54a3d1fc83e7d4c0e8b4dab316">sslify_init()</a>, <a class="el" href="starred_8php.html#a63024fb418c678e49fd535e3752d349a">starred_init()</a>, <a class="el" href="subthread_8php.html#a50368f3d825b77996030528e7fbfa3d3">subthread_content()</a>, <a class="el" href="boot_8php.html#ac608a34f3bc180e7724192e0fd31f9b0">system_unavailable()</a>, <a class="el" href="tagger_8php.html#a0e4a3eb177d1684553c547503d67161c">tagger_content()</a>, <a class="el" href="classApp.html#a94a1ed2dc493c58612d17035b74ae736">App\template_engine()</a>, <a class="el" href="uexport_8php.html#a118920137dedebe0581623a2e57e7b0d">uexport_init()</a>, <a class="el" href="update__channel_8php.html#aca52a9da500f0db2f0a8666af5bc06ba">update_channel_content()</a>, <a class="el" href="update__display_8php.html#aa36ac524059e209d5d75a03c16206246">update_display_content()</a>, <a class="el" href="update__home_8php.html#a668340089acd150b830134476a647d05">update_home_content()</a>, <a class="el" href="update__network_8php.html#a8abf5b9f65af6a27ee2f9d7207ed1b41">update_network_content()</a>, <a class="el" href="update__search_8php.html#ace4c3a23fa7d6922399e27c297a6ba52">update_search_content()</a>, <a class="el" href="view_8php.html#ac168f6c61a91ba2063f13b441c0ae96e">view_init()</a>, <a class="el" href="viewsrc_8php.html#a6eff3d0c1d7d14b335c4edb785cd60a4">viewsrc_content()</a>, <a class="el" href="wall__attach_8php.html#a7385e970e93228d082f0fd7254f6e653">wall_attach_post()</a>, <a class="el" href="wall__upload_8php.html#a7cbe204244cf9e0380ee932263a74d8f">wall_upload_post()</a>, <a class="el" href="wfinger_8php.html#ae21e50c8d0a5f3c9be9f43a4e519acd3">wfinger_init()</a>, <a class="el" href="include_2network_8php.html#a9e9da2aafb806c98ecdc318604e60dc6">xml_status()</a>, and <a class="el" href="xrd_8php.html#aee3cf087968e4a0ff3a87de16eb23270">xrd_init()</a>.</p>
</div>
</div>
@@ -1228,6 +1442,33 @@ Variables</h2></td></tr>
</div>
</div>
+<a class="anchor" id="a50a6707a28c7d05d3f49eaabc7994501"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">load_pdl </td>
+ <td>(</td>
+ <td class="paramtype">&amp;&#160;</td>
+ <td class="paramname"><em>$a</em></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p>Loads a page definition file for a module. </p>
+<p>If there is no parsed Comanche template already load a module's pdl file and parse it with Comanche.</p>
+<dl class="params"><dt>Parameters</dt><dd>
+ <table class="params">
+ <tr><td class="paramtype"><a class="el" href="classApp.html" title="Our main application structure for the life of this page.">App</a></td><td class="paramname">&amp;$a</td><td>global application object </td></tr>
+ </table>
+ </dd>
+</dl>
+
+<p>Referenced by <a class="el" href="classRedMatrix_1_1RedDAV_1_1RedBrowser.html#af764d5f14df751f9ec86c34fab300c09">RedMatrix\RedDAV\RedBrowser\generateDirectoryIndex()</a>.</p>
+
+</div>
+</div>
<a class="anchor" id="ad4c9dc2c8a82e8f52b7404c1655eab44"></a>
<div class="memitem">
<div class="memproto">
@@ -1241,7 +1482,11 @@ Variables</h2></td></tr>
</table>
</div><div class="memdoc">
-<p>Referenced by <a class="el" href="classConversation.html#af84ea6ccd72214c9bb4c504461cc8b09">Conversation\__construct()</a>, <a class="el" href="acl_8php.html#ac6776dba871806ecdb5d1659bc2eb07a">acl_init()</a>, <a class="el" href="mod_2api_8php.html#a33315b5bbf5418f6850b2038107b526d">api_content()</a>, <a class="el" href="include_2api_8php.html#aa40bae797bcd9ccacffdce5a3b5a1afa">api_get_user()</a>, <a class="el" href="mod_2api_8php.html#a6fe77f05c07cb51048df0d557b4b9bd2">api_post()</a>, <a class="el" href="include_2api_8php.html#afb99daa6b731bf497b81f2128084852c">api_user()</a>, <a class="el" href="include_2apps_8php.html#a1b2e737f477a2e0d9d11ef14adc5aa66">app_render()</a>, <a class="el" href="appman_8php.html#af48805ac2f6f123f2681a8ae1c6f123f">appman_content()</a>, <a class="el" href="appman_8php.html#a2979acbe47ffaecfa19b9eabfbfbde39">appman_post()</a>, <a class="el" href="mod_2apps_8php.html#a546016cb960d0b110ee8e489dfa6c27c">apps_content()</a>, <a class="el" href="view_2theme_2apw_2php_2config_8php.html#ad59fc09da66b66267f9753c8b2dd68d0">apw_form()</a>, <a class="el" href="conversation_8php.html#ad470fc7766f0db66d138fa1916c7a8b7">best_link_url()</a>, <a class="el" href="blocks_8php.html#a2531a8fd51db3cecb2eb20c002c66e12">blocks_content()</a>, <a class="el" href="mod_2bookmarks_8php.html#a774364b1c8404529581083631703527a">bookmarks_content()</a>, <a class="el" href="mod_2bookmarks_8php.html#a6b7942f3d27e40f0f47c88704127b9b3">bookmarks_init()</a>, <a class="el" href="classApp.html#a08f0537964d98958d218066364cff785">App\build_pagehead()</a>, <a class="el" href="zot_8php.html#ac34e479d27f32b82dd6b33542f81a6a7">build_sync_packet()</a>, <a class="el" href="security_8php.html#a8d23d2597aae380a3341872fe9513380">change_channel()</a>, <a class="el" href="channel_8php.html#a9c6a6179e0e626398ebecc6151905ef1">channel_content()</a>, <a class="el" href="channel_8php.html#ac7c8c7845741baadf87fae6bc279f3dc">channel_init()</a>, <a class="el" href="Contact_8php.html#a186162051a5127069cc851d78740f205">channel_remove()</a>, <a class="el" href="chanview_8php.html#a4192c6da888c8c1165851acf9ad4cb8b">chanview_content()</a>, <a class="el" href="mod_2chat_8php.html#a8b0b8bee6fef6477e8c64c5e951b1b4f">chat_content()</a>, <a class="el" href="mod_2chat_8php.html#aa9ae4782e9baef0b7314ab9527c2707e">chat_init()</a>, <a class="el" href="mod_2chat_8php.html#a999d594745597c656c9760253ae297ad">chat_post()</a>, <a class="el" href="cloud_8php.html#a1b79a6fe0454bc76673ad9aef55bf02d">cloud_init()</a>, <a class="el" href="comanche_8php.html#aed39ecad69234f3ddf61f0dedb49a58e">comanche_get_channel_id()</a>, <a class="el" href="contact__widgets_8php.html#a552f8544528cec0c995cea7287ea9d65">common_friends_visitor_widget()</a>, <a class="el" href="connect_8php.html#a489f0a66c660de6ec4d6917b27674f07">connect_content()</a>, <a class="el" href="connect_8php.html#a417ec27afe33f21a929667a665e32ee2">connect_post()</a>, <a class="el" href="connections_8php.html#aec2e457420fce3e3bf6a9f48e36df25c">connections_content()</a>, <a class="el" href="connections_8php.html#a1f23623f802af7bd35e95b0e94e5d558">connections_init()</a>, <a class="el" href="connections_8php.html#a1224058db8e3fb56463eb312f98e561d">connections_post()</a>, <a class="el" href="connedit_8php.html#a795acb3d9d841f55c255d7611681ab67">connedit_content()</a>, <a class="el" href="connedit_8php.html#a4da871e075597a09a8b374b9171dd92e">connedit_init()</a>, <a class="el" href="connedit_8php.html#a234c48426b652bf4d37053f2af329ac5">connedit_post()</a>, <a class="el" href="text_8php.html#ad6432621d0fafcbcf3d3b9b49bef7784">contact_block()</a>, <a class="el" href="acl__selectors_8php.html#a9476997d2968a5794f3723878ed89c91">contact_select()</a>, <a class="el" href="contactgroup_8php.html#a18c7391b1b25debaf98c9dba639caab3">contactgroup_content()</a>, <a class="el" href="conversation_8php.html#affea1afb3f32ca41e966c8ddb4204d81">conversation()</a>, <a class="el" href="boot_8php.html#ad206598b909e8eb67eb0e0bb5ef69c13">current_theme()</a>, <a class="el" href="delegate_8php.html#a943eea8996ef348eb845c498f9f354dd">delegate_content()</a>, <a class="el" href="mod_2directory_8php.html#aac79396570d759da2efac24fcedf5b44">directory_content()</a>, <a class="el" href="dirprofile_8php.html#a3e1d30d3d93863ff5615f2df4ac7f052">dirprofile_init()</a>, <a class="el" href="display_8php.html#a37137c98d47bf3306f4c2bb9f5b60de0">display_content()</a>, <a class="el" href="items_8php.html#a555762e1022a4b8e3c3abd32e7812408">drop_item()</a>, <a class="el" href="items_8php.html#a668ece2c37f05cc3abe538eb0dabfe55">drop_items()</a>, <a class="el" href="editblock_8php.html#abbe8f55de06967bc8d79d620509a49e6">editblock_content()</a>, <a class="el" href="editlayout_8php.html#aa877e4157a26b099de904164181dd386">editlayout_content()</a>, <a class="el" href="editpost_8php.html#a34011690864d122680c802e9e748ccfb">editpost_content()</a>, <a class="el" href="editwebpage_8php.html#a375e945255fad79a71036528f7480650">editwebpage_content()</a>, <a class="el" href="events_8php.html#a1d293fb217ae6bc9e3858c4b32e363ec">events_content()</a>, <a class="el" href="events_8php.html#ab3e8a8f901175f8e40a8089eea45c075">events_post()</a>, <a class="el" href="fbrowser_8php.html#aee476addcf7a3e0fe9454f7dfd5a56c4">fbrowser_content()</a>, <a class="el" href="contact__widgets_8php.html#a1eda66319d170f60a8d07c7ece95533b">fileas_widget()</a>, <a class="el" href="filer_8php.html#a5fd5d7e61b2f9c43cb5f110c89dc4274">filer_content()</a>, <a class="el" href="filerm_8php.html#ae2eb28d2054fa2c37e38689882172208">filerm_content()</a>, <a class="el" href="filestorage_8php.html#a61bb1be78472555df4ce619f51014040">filestorage_content()</a>, <a class="el" href="filestorage_8php.html#ad3b64e3ece9831f9d3a9f00c0ae983cd">filestorage_post()</a>, <a class="el" href="contact__widgets_8php.html#a57e73ebcfd62bb5d8c7a7b9e663726d6">findpeople_widget()</a>, <a class="el" href="mod_2follow_8php.html#a4c540ea4e9f5c581c1a53516ac585592">follow_content()</a>, <a class="el" href="mod_2follow_8php.html#a171f5b19f50d7738adc3b2e96ec6018a">follow_init()</a>, <a class="el" href="fsuggest_8php.html#aa6c49ed4b50a387f1845f36844dd7998">fsuggest_content()</a>, <a class="el" href="fsuggest_8php.html#a61ecfe10ce937ed526614f8fd3de3c7d">fsuggest_post()</a>, <a class="el" href="classRedBrowser.html#a1f7daf50bb9bfcde7345b3b1908dbd7e">RedBrowser\generateDirectoryIndex()</a>, <a class="el" href="identity_8php.html#ad2c97627a313d53df1a1c7b4215ddb51">get_birthdays()</a>, <a class="el" href="classItem.html#a3ee7667c2ec6cd7657328e27848c0bdf">Item\get_comment_box()</a>, <a class="el" href="identity_8php.html#ae381db3d43f8e7c1da8b15d14ecf5312">get_events()</a>, <a class="el" href="identity_8php.html#a332df795f684788002f5a6424abacfd7">get_online_status()</a>, <a class="el" href="classItem.html#ad5dcbe0b94cb2d5719bc5b6bd8ad60c8">Item\get_template_data()</a>, <a class="el" href="identity_8php.html#aaeb666872995e3ab8da8f7bc5f3b2bd3">get_theme_uid()</a>, <a class="el" href="mod_2group_8php.html#a07a64f6c65b0080d8190b3d9728a7a83">group_content()</a>, <a class="el" href="include_2group_8php.html#a5bd191d9692e6c34d48c0ede10810f09">group_get_members()</a>, <a class="el" href="mod_2group_8php.html#aed1f009b1221348021bb34761160ef35">group_post()</a>, <a class="el" href="acl__selectors_8php.html#aa1e3bc344ca2b29f97eb9860216d21a0">group_select()</a>, <a class="el" href="include_2group_8php.html#a6a69bd7be032fa8ce4e49c43a42cc6e9">group_side()</a>, <a class="el" href="item_8php.html#aa22feef4de326e1d7078dedd892e615c">handle_tag()</a>, <a class="el" href="home_8php.html#ac4642c38b6f23a8d065dd4a75c620bde">home_init()</a>, <a class="el" href="identity_8php.html#a2ab5172eabd375869060c9ad68323f5c">identity_selector()</a>, <a class="el" href="invite_8php.html#a244385b28cfd021d308715f01158bfd9">invite_content()</a>, <a class="el" href="invite_8php.html#aeb0881c0f93c8e8552e5ed756ce6e5a5">invite_post()</a>, <a class="el" href="identity_8php.html#a4e996e44b50330098a04b467367a559f">is_public_profile()</a>, <a class="el" href="item_8php.html#a764bbb2e9a885a86fb23d0b5e4a09221">item_content()</a>, <a class="el" href="security_8php.html#a9355488460ab11d6058656ff919e5cf9">item_permissions_sql()</a>, <a class="el" href="conversation_8php.html#aacbb12d372d5e9c3ab0735b4aea48fb3">item_photo_menu()</a>, <a class="el" href="item_8php.html#a693cd09805755ab85bbb5ecae69a48c3">item_post()</a>, <a class="el" href="items_8php.html#a2541e6861a56d145c9281877cc501615">item_store()</a>, <a class="el" href="items_8php.html#acf0bf7c9d21ac84f32effb754f7ad484">item_store_update()</a>, <a class="el" href="items_8php.html#a756738301f2ed96be50232500677d58a">items_fetch()</a>, <a class="el" href="layouts_8php.html#a6e0193759ad9eef76d3df2db24237b50">layouts_content()</a>, <a class="el" href="lockview_8php.html#a851e26ab9a1008df5c5ebebea31e9b44">lockview_content()</a>, <a class="el" href="boot_8php.html#aefecf8599036df7f1b95d6820e0e2fa4">login()</a>, <a class="el" href="login_8php.html#a1d69ca88eb9005a7026e128b9a645904">login_content()</a>, <a class="el" href="magic_8php.html#acea2cc792849ca2d71d4b689f66518bf">magic_init()</a>, <a class="el" href="mail_8php.html#a3c7c485fc69f92371e8b20936040eca1">mail_content()</a>, <a class="el" href="mail_8php.html#acfc2cc0bf4e0b178207758384977f25a">mail_post()</a>, <a class="el" href="manage_8php.html#a2bca247b5296827638959138367db4f5">manage_content()</a>, <a class="el" href="match_8php.html#a1dd853e959b9e70c1911bb2fb5f5130d">match_content()</a>, <a class="el" href="include_2menu_8php.html#add35fae5e9695031b3d46e30ac409eb8">menu_add_item()</a>, <a class="el" href="mod_2menu_8php.html#a6fed23af14d71a78a4153c8363a685cf">menu_content()</a>, <a class="el" href="include_2menu_8php.html#acb66f80ca895a6ccd562b3d9ae7b41aa">menu_edit_item()</a>, <a class="el" href="mod_2menu_8php.html#aaa491ef173868fe002aece4632bcf393">menu_post()</a>, <a class="el" href="mod_2message_8php.html#ac72dfed3ce08fcb331d66b37edc6e15f">message_content()</a>, <a class="el" href="text_8php.html#a1633412120f52bdce5f43e0a127d9293">mimetype_select()</a>, <a class="el" href="mitem_8php.html#a7a31b702ecad18eeb6a38b243ff0037e">mitem_content()</a>, <a class="el" href="mitem_8php.html#a9627cd857cafdf04e4fc0ae48c8e8518">mitem_init()</a>, <a class="el" href="mitem_8php.html#a6ee694cca4b551a20d7c7a94b5243ec1">mitem_post()</a>, <a class="el" href="mood_8php.html#a721b9b6703b3234a005641c92d409b8f">mood_content()</a>, <a class="el" href="mood_8php.html#a7ae136dd7476865b4828136175db5022">mood_init()</a>, <a class="el" href="nav_8php.html#a43be0df73b90647ea70947ce004e231e">nav()</a>, <a class="el" href="acl_8php.html#a57dceff370d4a0e7ae673d50fbfda61f">navbar_complete()</a>, <a class="el" href="mod_2network_8php.html#a43f2f29b90c5e29072c561934bc8f8b4">network_content()</a>, <a class="el" href="mod_2network_8php.html#a180fce90ad11d7e0e45be094da7149ec">network_init()</a>, <a class="el" href="include_2follow_8php.html#ae387d4ae097c23d69f3247e7f08140c7">new_contact()</a>, <a class="el" href="notes_8php.html#a4dbd7b1f906440746af48b484d66535a">notes_init()</a>, <a class="el" href="notifications_8php.html#aadd0b5525bd8c283a5d8a37982bbfe62">notifications_content()</a>, <a class="el" href="notifications_8php.html#a5baffec7b2e625c9f9cefbc097550d33">notifications_post()</a>, <a class="el" href="mod_2notify_8php.html#acdf3851688ebd6d6a575eb84ef9febe3">notify_content()</a>, <a class="el" href="mod_2notify_8php.html#a94f9a6a9d4b5fd704baafff0c34f41ae">notify_init()</a>, <a class="el" href="oexchange_8php.html#a2d8b785cd7d041a4e6274f5af370cf26">oexchange_content()</a>, <a class="el" href="include_2apps_8php.html#a32fe4ed9666228fd4b67dc487cc57a83">parse_app_description()</a>, <a class="el" href="pdledit_8php.html#a59cb550f6b7a4e7d8196fbc9de601619">pdledit_content()</a>, <a class="el" href="pdledit_8php.html#a81da3c955d0e3db55d148a31483104c7">pdledit_post()</a>, <a class="el" href="security_8php.html#afa683bc025a1d2fe9065e2f6cd71a22f">permissions_sql()</a>, <a class="el" href="mod_2photos_8php.html#aa87382611a66ec5effdb2d78f13f5812">photos_content()</a>, <a class="el" href="mod_2photos_8php.html#ab950295cd77626f5fe65331a87693014">photos_init()</a>, <a class="el" href="mod_2photos_8php.html#a062bed4d04d14fee8a53f4c9be673080">photos_post()</a>, <a class="el" href="ping_8php.html#a77217b1b190b4c5d8770867b45f0c0a1">ping_init()</a>, <a class="el" href="poco_8php.html#a53def16f75e3d41f1d2bb7cfa4905498">poco_init()</a>, <a class="el" href="poke_8php.html#ac9190563a8da9c07a16f9dcd71cf6993">poke_content()</a>, <a class="el" href="poke_8php.html#a9725aab97b3983e6a98bd81c4efe7d3b">poke_init()</a>, <a class="el" href="post_8php.html#af4b48181ce773ef0cdfc972441445c34">post_init()</a>, <a class="el" href="text_8php.html#ae4df74296fbe55051ed3c035e55205e5">prepare_body()</a>, <a class="el" href="include_2message_8php.html#a652973ce47a262f2d238c2fd6233d97e">private_messages_list()</a>, <a class="el" href="activities_8php.html#a80134e807719b3c54aba971958d2e132">profile_activity()</a>, <a class="el" href="profile_8php.html#a3775cf6eef6587e5143133356a7b76c0">profile_content()</a>, <a class="el" href="identity_8php.html#ad4a2c8caca8f6ae93633ebeca0ed6620">profile_create_sidebar()</a>, <a class="el" href="profile_8php.html#ab5d0246be0552e2182a585c1206d22a5">profile_init()</a>, <a class="el" href="identity_8php.html#a4751b522ea913d0e7ed43e03d22e9e68">profile_load()</a>, <a class="el" href="profile__photo_8php.html#a140631c56438fbfacb61a1eb43067d02">profile_photo_init()</a>, <a class="el" href="profile__photo_8php.html#a4b80234074bd603221aa5364f330e479">profile_photo_post()</a>, <a class="el" href="profile__photo_8php.html#a561103564199da56e58061a4196eb102">profile_photo_set_profile_perms()</a>, <a class="el" href="identity_8php.html#a432259b2cf5b6f59be53e71db9f2c7dc">profile_sidebar()</a>, <a class="el" href="profiles_8php.html#a46975783b8b8d70402d51487eb1f0b00">profiles_content()</a>, <a class="el" href="profiles_8php.html#a36f71405ad536228f8bb84a551b23f7e">profiles_init()</a>, <a class="el" href="profiles_8php.html#ab0362c81b1d3b0b12a772b9fac446e04">profiles_post()</a>, <a class="el" href="profperm_8php.html#aef015787de2373d9fb3fe3f814fb5023">profperm_content()</a>, <a class="el" href="profperm_8php.html#a17fb64ec05edee1dc94d95438807d6c6">profperm_init()</a>, <a class="el" href="rbmark_8php.html#a43fec4960b50926251574762cc491f76">rbmark_content()</a>, <a class="el" href="view_2theme_2redbasic_2php_2config_8php.html#a8574a41fa9735ee391ba57ab24b93793">redbasic_form()</a>, <a class="el" href="regmod_8php.html#a7953df4e32e63946565e90cdd5d50409">regmod_content()</a>, <a class="el" href="removeme_8php.html#a065a589caa2aa84c60f7073a28f0ad9c">removeme_content()</a>, <a class="el" href="removeme_8php.html#a7be08738beca44bb98a79e01cdb2ee88">removeme_post()</a>, <a class="el" href="rmagic_8php.html#a95455edd43f1bff39446a57388cdde16">rmagic_init()</a>, <a class="el" href="rpost_8php.html#a8190354d789000806d9879aea276728f">rpost_content()</a>, <a class="el" href="text_8php.html#a876e94892867019935b348b573299352">search()</a>, <a class="el" href="search__ac_8php.html#a14f90c83a3f2be095e9e2992a8d66138">search_ac_init()</a>, <a class="el" href="search_8php.html#ab2568591359edde5b483a6cd9a24b2cc">search_content()</a>, <a class="el" href="text_8php.html#aae91e4d2a2c6f7a9daccd2c186ae3447">searchbox()</a>, <a class="el" href="plugin_8php.html#a030cec6793b909c439c0336ba39b1571">service_class_allows()</a>, <a class="el" href="plugin_8php.html#a905b54e10704b283ac64680a8abc0971">service_class_fetch()</a>, <a class="el" href="classConversation.html#a66f121ca4026246f86a732e5faa0682c">Conversation\set_mode()</a>, <a class="el" href="settings_8php.html#a3a4cde287482fced008583f54ba2a722">settings_init()</a>, <a class="el" href="settings_8php.html#aa7ee94d88ac088edb04ccf3a26de3586">settings_post()</a>, <a class="el" href="share_8php.html#afeb26046bdd02567ecd29ab5f188b249">share_init()</a>, <a class="el" href="text_8php.html#a3d225b253bb9e0f2498c11647d927b0b">smilies()</a>, <a class="el" href="sources_8php.html#ac442ccef080ab95772d8929fcafcb4b7">sources_content()</a>, <a class="el" href="sources_8php.html#ac73298ff162ce7b2de8dcaf3d3305b1e">sources_post()</a>, <a class="el" href="starred_8php.html#a63024fb418c678e49fd535e3752d349a">starred_init()</a>, <a class="el" href="security_8php.html#a6126c77a1267e046ac59cf864613f011">stream_perms_api_uids()</a>, <a class="el" href="security_8php.html#a3ef2be6a7e4928e39d50059d6feb457c">stream_perms_xchans()</a>, <a class="el" href="subthread_8php.html#a50368f3d825b77996030528e7fbfa3d3">subthread_content()</a>, <a class="el" href="suggest_8php.html#a58748a8235d4523f8333847f3e42dd91">suggest_content()</a>, <a class="el" href="suggest_8php.html#a696acf1dd8070e479adcc80c63c6718c">suggest_init()</a>, <a class="el" href="tagger_8php.html#a0e4a3eb177d1684553c547503d67161c">tagger_content()</a>, <a class="el" href="tagrm_8php.html#adfd4ea5b4d7fc6d9c9e042af5cd7d49a">tagrm_content()</a>, <a class="el" href="tagrm_8php.html#a1702f40aa53a2fa93deade1f609abe78">tagrm_post()</a>, <a class="el" href="view_2theme_2apw_2php_2config_8php.html#aa7d5739b72efef9822535b2b32d5364d">theme_content()</a>, <a class="el" href="view_2theme_2apw_2php_2config_8php.html#ad29461920cf03b9ce1428e21eb1f4ba6">theme_post()</a>, <a class="el" href="thing_8php.html#a24a35f1e64029a67fdbea94a776ae04b">thing_content()</a>, <a class="el" href="thing_8php.html#a8be23b1d475ec3d9291999221c674c80">thing_init()</a>, <a class="el" href="uexport_8php.html#a118920137dedebe0581623a2e57e7b0d">uexport_init()</a>, <a class="el" href="Contact_8php.html#a6348a532c9d26cd1c9afbc9aa6aa8960">vcard_from_xchan()</a>, <a class="el" href="viewconnections_8php.html#ab6c4d983e97b3a8a879567ff76507776">viewconnections_content()</a>, <a class="el" href="viewconnections_8php.html#a00163d50b17568f7b0e48b1ca9ab7330">viewconnections_init()</a>, <a class="el" href="viewsrc_8php.html#a6eff3d0c1d7d14b335c4edb785cd60a4">viewsrc_content()</a>, <a class="el" href="webpages_8php.html#af3b7397d4abc153e3d2147740ee1a41d">webpages_content()</a>, <a class="el" href="widgets_8php.html#add9b24d3304e529a7975e96122315554">widget_affinity()</a>, <a class="el" href="widgets_8php.html#aced5cb177f630b30799c5eab873ee75c">widget_appselect()</a>, <a class="el" href="widgets_8php.html#a145ff35319cfa47a9cc07f9425bd674b">widget_design_tools()</a>, <a class="el" href="widgets_8php.html#a5ab3b64496e02cab56429978ad55f1c0">widget_filer()</a>, <a class="el" href="widgets_8php.html#ad1bf7aa69e8d100d95faba17c7bc91cd">widget_follow()</a>, <a class="el" href="widgets_8php.html#a70442dfa079312d9d5e5ee01be51a165">widget_fullprofile()</a>, <a class="el" href="widgets_8php.html#afa2e55a78f95667a6da082efac7fec74">widget_mailmenu()</a>, <a class="el" href="widgets_8php.html#a45ea061dabe9a8372e4ca3b9e5714256">widget_notes()</a>, <a class="el" href="widgets_8php.html#abd2e508a2a0b911c4a838e3cb7599923">widget_profile()</a>, <a class="el" href="widgets_8php.html#a94203eb9bcd63cbdecbbcb15163598d8">widget_savedsearch()</a>, <a class="el" href="widgets_8php.html#aaa73bcf1702eaadd9dcd253502f55e01">widget_settings_menu()</a>, <a class="el" href="widgets_8php.html#a0d404276fedc59f5038cf5c085028326">widget_suggestions()</a>, <a class="el" href="text_8php.html#a324c58f37f6acdf9cd1922aa76077d9f">z_input_filter()</a>, <a class="el" href="identity_8php.html#a680fbafc2db023c5b1309e0180e81315">zid_init()</a>, and <a class="el" href="zping_8php.html#a4d3a6b0b8b04ed6469015823e615ee75">zping_content()</a>.</p>
+<p>Returns the entity id (channel_id) of locally logged in user or false. </p>
+<p>Returns authenticated numeric channel_id if authenticated and connected to a channel or 0. Sometimes referred to as $uid in the code.</p>
+<dl class="section return"><dt>Returns</dt><dd>int|bool channel_id or false </dd></dl>
+
+<p>Referenced by <a class="el" href="classConversation.html#af84ea6ccd72214c9bb4c504461cc8b09">Conversation\__construct()</a>, <a class="el" href="acl_8php.html#ac6776dba871806ecdb5d1659bc2eb07a">acl_init()</a>, <a class="el" href="mod_2api_8php.html#a33315b5bbf5418f6850b2038107b526d">api_content()</a>, <a class="el" href="include_2api_8php.html#aa40bae797bcd9ccacffdce5a3b5a1afa">api_get_user()</a>, <a class="el" href="mod_2api_8php.html#a6fe77f05c07cb51048df0d557b4b9bd2">api_post()</a>, <a class="el" href="include_2api_8php.html#afb99daa6b731bf497b81f2128084852c">api_user()</a>, <a class="el" href="include_2apps_8php.html#a1b2e737f477a2e0d9d11ef14adc5aa66">app_render()</a>, <a class="el" href="appman_8php.html#af48805ac2f6f123f2681a8ae1c6f123f">appman_content()</a>, <a class="el" href="appman_8php.html#a2979acbe47ffaecfa19b9eabfbfbde39">appman_post()</a>, <a class="el" href="mod_2apps_8php.html#a546016cb960d0b110ee8e489dfa6c27c">apps_content()</a>, <a class="el" href="view_2theme_2apw_2php_2config_8php.html#ad59fc09da66b66267f9753c8b2dd68d0">apw_form()</a>, <a class="el" href="conversation_8php.html#ad470fc7766f0db66d138fa1916c7a8b7">best_link_url()</a>, <a class="el" href="blocks_8php.html#a2531a8fd51db3cecb2eb20c002c66e12">blocks_content()</a>, <a class="el" href="mod_2bookmarks_8php.html#a774364b1c8404529581083631703527a">bookmarks_content()</a>, <a class="el" href="mod_2bookmarks_8php.html#a6b7942f3d27e40f0f47c88704127b9b3">bookmarks_init()</a>, <a class="el" href="classApp.html#a08f0537964d98958d218066364cff785">App\build_pagehead()</a>, <a class="el" href="zot_8php.html#aa97b33b619dd7132a9274f852af6ceb5">build_sync_packet()</a>, <a class="el" href="security_8php.html#a8d23d2597aae380a3341872fe9513380">change_channel()</a>, <a class="el" href="channel_8php.html#a9c6a6179e0e626398ebecc6151905ef1">channel_content()</a>, <a class="el" href="channel_8php.html#ac7c8c7845741baadf87fae6bc279f3dc">channel_init()</a>, <a class="el" href="Contact_8php.html#a4e8af0f0525161da74583c04b8b03097">channel_remove()</a>, <a class="el" href="chanview_8php.html#a4192c6da888c8c1165851acf9ad4cb8b">chanview_content()</a>, <a class="el" href="mod_2chat_8php.html#a8b0b8bee6fef6477e8c64c5e951b1b4f">chat_content()</a>, <a class="el" href="mod_2chat_8php.html#aa9ae4782e9baef0b7314ab9527c2707e">chat_init()</a>, <a class="el" href="mod_2chat_8php.html#a999d594745597c656c9760253ae297ad">chat_post()</a>, <a class="el" href="cloud_8php.html#ad2e96e917852f27dedfc263d37e13756">cloud_init()</a>, <a class="el" href="comanche_8php.html#aed39ecad69234f3ddf61f0dedb49a58e">comanche_get_channel_id()</a>, <a class="el" href="contact__widgets_8php.html#a552f8544528cec0c995cea7287ea9d65">common_friends_visitor_widget()</a>, <a class="el" href="connect_8php.html#a489f0a66c660de6ec4d6917b27674f07">connect_content()</a>, <a class="el" href="connect_8php.html#a417ec27afe33f21a929667a665e32ee2">connect_post()</a>, <a class="el" href="connections_8php.html#aec2e457420fce3e3bf6a9f48e36df25c">connections_content()</a>, <a class="el" href="connections_8php.html#a1f23623f802af7bd35e95b0e94e5d558">connections_init()</a>, <a class="el" href="connections_8php.html#a1224058db8e3fb56463eb312f98e561d">connections_post()</a>, <a class="el" href="connedit_8php.html#a795acb3d9d841f55c255d7611681ab67">connedit_content()</a>, <a class="el" href="connedit_8php.html#a4da871e075597a09a8b374b9171dd92e">connedit_init()</a>, <a class="el" href="connedit_8php.html#a234c48426b652bf4d37053f2af329ac5">connedit_post()</a>, <a class="el" href="text_8php.html#ad6432621d0fafcbcf3d3b9b49bef7784">contact_block()</a>, <a class="el" href="acl__selectors_8php.html#a9476997d2968a5794f3723878ed89c91">contact_select()</a>, <a class="el" href="contactgroup_8php.html#a18c7391b1b25debaf98c9dba639caab3">contactgroup_content()</a>, <a class="el" href="conversation_8php.html#affea1afb3f32ca41e966c8ddb4204d81">conversation()</a>, <a class="el" href="boot_8php.html#ad206598b909e8eb67eb0e0bb5ef69c13">current_theme()</a>, <a class="el" href="delegate_8php.html#a943eea8996ef348eb845c498f9f354dd">delegate_content()</a>, <a class="el" href="mod_2directory_8php.html#aac79396570d759da2efac24fcedf5b44">directory_content()</a>, <a class="el" href="mod_2directory_8php.html#a5ee59c213508b6b9787612a8219cb5bf">directory_init()</a>, <a class="el" href="display_8php.html#a37137c98d47bf3306f4c2bb9f5b60de0">display_content()</a>, <a class="el" href="items_8php.html#a555762e1022a4b8e3c3abd32e7812408">drop_item()</a>, <a class="el" href="items_8php.html#a668ece2c37f05cc3abe538eb0dabfe55">drop_items()</a>, <a class="el" href="editblock_8php.html#abbe8f55de06967bc8d79d620509a49e6">editblock_content()</a>, <a class="el" href="editlayout_8php.html#aa877e4157a26b099de904164181dd386">editlayout_content()</a>, <a class="el" href="editpost_8php.html#a34011690864d122680c802e9e748ccfb">editpost_content()</a>, <a class="el" href="editwebpage_8php.html#a375e945255fad79a71036528f7480650">editwebpage_content()</a>, <a class="el" href="events_8php.html#a1d293fb217ae6bc9e3858c4b32e363ec">events_content()</a>, <a class="el" href="events_8php.html#ab3e8a8f901175f8e40a8089eea45c075">events_post()</a>, <a class="el" href="fbrowser_8php.html#aee476addcf7a3e0fe9454f7dfd5a56c4">fbrowser_content()</a>, <a class="el" href="contact__widgets_8php.html#a1eda66319d170f60a8d07c7ece95533b">fileas_widget()</a>, <a class="el" href="filer_8php.html#a5fd5d7e61b2f9c43cb5f110c89dc4274">filer_content()</a>, <a class="el" href="filerm_8php.html#ae2eb28d2054fa2c37e38689882172208">filerm_content()</a>, <a class="el" href="filestorage_8php.html#a61bb1be78472555df4ce619f51014040">filestorage_content()</a>, <a class="el" href="filestorage_8php.html#ad3b64e3ece9831f9d3a9f00c0ae983cd">filestorage_post()</a>, <a class="el" href="contact__widgets_8php.html#a57e73ebcfd62bb5d8c7a7b9e663726d6">findpeople_widget()</a>, <a class="el" href="mod_2follow_8php.html#a4c540ea4e9f5c581c1a53516ac585592">follow_content()</a>, <a class="el" href="mod_2follow_8php.html#a171f5b19f50d7738adc3b2e96ec6018a">follow_init()</a>, <a class="el" href="fsuggest_8php.html#aa6c49ed4b50a387f1845f36844dd7998">fsuggest_content()</a>, <a class="el" href="fsuggest_8php.html#a61ecfe10ce937ed526614f8fd3de3c7d">fsuggest_post()</a>, <a class="el" href="classRedMatrix_1_1RedDAV_1_1RedBrowser.html#af764d5f14df751f9ec86c34fab300c09">RedMatrix\RedDAV\RedBrowser\generateDirectoryIndex()</a>, <a class="el" href="identity_8php.html#ad2c97627a313d53df1a1c7b4215ddb51">get_birthdays()</a>, <a class="el" href="classItem.html#a3ee7667c2ec6cd7657328e27848c0bdf">Item\get_comment_box()</a>, <a class="el" href="identity_8php.html#ae381db3d43f8e7c1da8b15d14ecf5312">get_events()</a>, <a class="el" href="identity_8php.html#a332df795f684788002f5a6424abacfd7">get_online_status()</a>, <a class="el" href="classItem.html#ad5dcbe0b94cb2d5719bc5b6bd8ad60c8">Item\get_template_data()</a>, <a class="el" href="identity_8php.html#aaeb666872995e3ab8da8f7bc5f3b2bd3">get_theme_uid()</a>, <a class="el" href="mod_2group_8php.html#a07a64f6c65b0080d8190b3d9728a7a83">group_content()</a>, <a class="el" href="include_2group_8php.html#a5bd191d9692e6c34d48c0ede10810f09">group_get_members()</a>, <a class="el" href="mod_2group_8php.html#aed1f009b1221348021bb34761160ef35">group_post()</a>, <a class="el" href="acl__selectors_8php.html#aa1e3bc344ca2b29f97eb9860216d21a0">group_select()</a>, <a class="el" href="include_2group_8php.html#a6a69bd7be032fa8ce4e49c43a42cc6e9">group_side()</a>, <a class="el" href="text_8php.html#aa22feef4de326e1d7078dedd892e615c">handle_tag()</a>, <a class="el" href="hcard_8php.html#ac34f26b0e6a37eef44fa49bea135136d">hcard_init()</a>, <a class="el" href="home_8php.html#a6e3dbf78f4ed74ab2577de221190b33f">home_content()</a>, <a class="el" href="home_8php.html#ac4642c38b6f23a8d065dd4a75c620bde">home_init()</a>, <a class="el" href="identity_8php.html#a2ab5172eabd375869060c9ad68323f5c">identity_selector()</a>, <a class="el" href="impel_8php.html#ab7db6fca43b42ea4332cb3e841b3cf7b">impel_init()</a>, <a class="el" href="invite_8php.html#a244385b28cfd021d308715f01158bfd9">invite_content()</a>, <a class="el" href="invite_8php.html#aeb0881c0f93c8e8552e5ed756ce6e5a5">invite_post()</a>, <a class="el" href="identity_8php.html#a4e996e44b50330098a04b467367a559f">is_public_profile()</a>, <a class="el" href="item_8php.html#a764bbb2e9a885a86fb23d0b5e4a09221">item_content()</a>, <a class="el" href="security_8php.html#a9355488460ab11d6058656ff919e5cf9">item_permissions_sql()</a>, <a class="el" href="conversation_8php.html#aacbb12d372d5e9c3ab0735b4aea48fb3">item_photo_menu()</a>, <a class="el" href="item_8php.html#a693cd09805755ab85bbb5ecae69a48c3">item_post()</a>, <a class="el" href="items_8php.html#a2541e6861a56d145c9281877cc501615">item_store()</a>, <a class="el" href="items_8php.html#acf0bf7c9d21ac84f32effb754f7ad484">item_store_update()</a>, <a class="el" href="items_8php.html#a756738301f2ed96be50232500677d58a">items_fetch()</a>, <a class="el" href="layouts_8php.html#a6e0193759ad9eef76d3df2db24237b50">layouts_content()</a>, <a class="el" href="lockview_8php.html#a851e26ab9a1008df5c5ebebea31e9b44">lockview_content()</a>, <a class="el" href="locs_8php.html#a6c900f53970c0d0e738d2fe06d27ca44">locs_content()</a>, <a class="el" href="locs_8php.html#a6b43654592919ac863d67a1f787a69b9">locs_post()</a>, <a class="el" href="boot_8php.html#aefecf8599036df7f1b95d6820e0e2fa4">login()</a>, <a class="el" href="login_8php.html#a1d69ca88eb9005a7026e128b9a645904">login_content()</a>, <a class="el" href="magic_8php.html#acea2cc792849ca2d71d4b689f66518bf">magic_init()</a>, <a class="el" href="mail_8php.html#a3c7c485fc69f92371e8b20936040eca1">mail_content()</a>, <a class="el" href="mail_8php.html#acfc2cc0bf4e0b178207758384977f25a">mail_post()</a>, <a class="el" href="manage_8php.html#a2bca247b5296827638959138367db4f5">manage_content()</a>, <a class="el" href="match_8php.html#a1dd853e959b9e70c1911bb2fb5f5130d">match_content()</a>, <a class="el" href="include_2menu_8php.html#add35fae5e9695031b3d46e30ac409eb8">menu_add_item()</a>, <a class="el" href="mod_2menu_8php.html#a6fed23af14d71a78a4153c8363a685cf">menu_content()</a>, <a class="el" href="include_2menu_8php.html#acb66f80ca895a6ccd562b3d9ae7b41aa">menu_edit_item()</a>, <a class="el" href="mod_2menu_8php.html#aaa491ef173868fe002aece4632bcf393">menu_post()</a>, <a class="el" href="mod_2message_8php.html#ac72dfed3ce08fcb331d66b37edc6e15f">message_content()</a>, <a class="el" href="text_8php.html#a1633412120f52bdce5f43e0a127d9293">mimetype_select()</a>, <a class="el" href="mitem_8php.html#a7a31b702ecad18eeb6a38b243ff0037e">mitem_content()</a>, <a class="el" href="mitem_8php.html#a9627cd857cafdf04e4fc0ae48c8e8518">mitem_init()</a>, <a class="el" href="mitem_8php.html#a6ee694cca4b551a20d7c7a94b5243ec1">mitem_post()</a>, <a class="el" href="mood_8php.html#a721b9b6703b3234a005641c92d409b8f">mood_content()</a>, <a class="el" href="mood_8php.html#a7ae136dd7476865b4828136175db5022">mood_init()</a>, <a class="el" href="nav_8php.html#a43be0df73b90647ea70947ce004e231e">nav()</a>, <a class="el" href="acl_8php.html#a57dceff370d4a0e7ae673d50fbfda61f">navbar_complete()</a>, <a class="el" href="mod_2network_8php.html#a43f2f29b90c5e29072c561934bc8f8b4">network_content()</a>, <a class="el" href="mod_2network_8php.html#a180fce90ad11d7e0e45be094da7149ec">network_init()</a>, <a class="el" href="include_2follow_8php.html#ae387d4ae097c23d69f3247e7f08140c7">new_contact()</a>, <a class="el" href="notes_8php.html#a4dbd7b1f906440746af48b484d66535a">notes_init()</a>, <a class="el" href="notifications_8php.html#aadd0b5525bd8c283a5d8a37982bbfe62">notifications_content()</a>, <a class="el" href="notifications_8php.html#a5baffec7b2e625c9f9cefbc097550d33">notifications_post()</a>, <a class="el" href="mod_2notify_8php.html#acdf3851688ebd6d6a575eb84ef9febe3">notify_content()</a>, <a class="el" href="mod_2notify_8php.html#a94f9a6a9d4b5fd704baafff0c34f41ae">notify_init()</a>, <a class="el" href="oexchange_8php.html#a2d8b785cd7d041a4e6274f5af370cf26">oexchange_content()</a>, <a class="el" href="include_2apps_8php.html#a32fe4ed9666228fd4b67dc487cc57a83">parse_app_description()</a>, <a class="el" href="pdledit_8php.html#a59cb550f6b7a4e7d8196fbc9de601619">pdledit_content()</a>, <a class="el" href="pdledit_8php.html#a81da3c955d0e3db55d148a31483104c7">pdledit_post()</a>, <a class="el" href="security_8php.html#afa683bc025a1d2fe9065e2f6cd71a22f">permissions_sql()</a>, <a class="el" href="mod_2photos_8php.html#aa87382611a66ec5effdb2d78f13f5812">photos_content()</a>, <a class="el" href="mod_2photos_8php.html#ab950295cd77626f5fe65331a87693014">photos_init()</a>, <a class="el" href="mod_2photos_8php.html#a062bed4d04d14fee8a53f4c9be673080">photos_post()</a>, <a class="el" href="ping_8php.html#a77217b1b190b4c5d8770867b45f0c0a1">ping_init()</a>, <a class="el" href="poco_8php.html#a53def16f75e3d41f1d2bb7cfa4905498">poco_init()</a>, <a class="el" href="poke_8php.html#ac9190563a8da9c07a16f9dcd71cf6993">poke_content()</a>, <a class="el" href="poke_8php.html#a9725aab97b3983e6a98bd81c4efe7d3b">poke_init()</a>, <a class="el" href="post_8php.html#af4b48181ce773ef0cdfc972441445c34">post_init()</a>, <a class="el" href="text_8php.html#ae4df74296fbe55051ed3c035e55205e5">prepare_body()</a>, <a class="el" href="include_2message_8php.html#a652973ce47a262f2d238c2fd6233d97e">private_messages_list()</a>, <a class="el" href="activities_8php.html#a80134e807719b3c54aba971958d2e132">profile_activity()</a>, <a class="el" href="profile_8php.html#a3775cf6eef6587e5143133356a7b76c0">profile_content()</a>, <a class="el" href="identity_8php.html#ad4a2c8caca8f6ae93633ebeca0ed6620">profile_create_sidebar()</a>, <a class="el" href="profile_8php.html#ab5d0246be0552e2182a585c1206d22a5">profile_init()</a>, <a class="el" href="identity_8php.html#a4751b522ea913d0e7ed43e03d22e9e68">profile_load()</a>, <a class="el" href="profile__photo_8php.html#a140631c56438fbfacb61a1eb43067d02">profile_photo_init()</a>, <a class="el" href="profile__photo_8php.html#a4b80234074bd603221aa5364f330e479">profile_photo_post()</a>, <a class="el" href="profile__photo_8php.html#a561103564199da56e58061a4196eb102">profile_photo_set_profile_perms()</a>, <a class="el" href="identity_8php.html#a432259b2cf5b6f59be53e71db9f2c7dc">profile_sidebar()</a>, <a class="el" href="profiles_8php.html#a46975783b8b8d70402d51487eb1f0b00">profiles_content()</a>, <a class="el" href="profiles_8php.html#a36f71405ad536228f8bb84a551b23f7e">profiles_init()</a>, <a class="el" href="profiles_8php.html#ab0362c81b1d3b0b12a772b9fac446e04">profiles_post()</a>, <a class="el" href="profperm_8php.html#aef015787de2373d9fb3fe3f814fb5023">profperm_content()</a>, <a class="el" href="profperm_8php.html#a17fb64ec05edee1dc94d95438807d6c6">profperm_init()</a>, <a class="el" href="rbmark_8php.html#a43fec4960b50926251574762cc491f76">rbmark_content()</a>, <a class="el" href="view_2theme_2redbasic_2php_2config_8php.html#a8574a41fa9735ee391ba57ab24b93793">redbasic_form()</a>, <a class="el" href="regmod_8php.html#a7953df4e32e63946565e90cdd5d50409">regmod_content()</a>, <a class="el" href="removeaccount_8php.html#a516e7380b9e5796054aa8245f3509695">removeaccount_content()</a>, <a class="el" href="removeaccount_8php.html#a26a3325292e932c59793430ab737126a">removeaccount_post()</a>, <a class="el" href="removeme_8php.html#a065a589caa2aa84c60f7073a28f0ad9c">removeme_content()</a>, <a class="el" href="removeme_8php.html#a7be08738beca44bb98a79e01cdb2ee88">removeme_post()</a>, <a class="el" href="rmagic_8php.html#a95455edd43f1bff39446a57388cdde16">rmagic_init()</a>, <a class="el" href="rpost_8php.html#a8190354d789000806d9879aea276728f">rpost_content()</a>, <a class="el" href="text_8php.html#a876e94892867019935b348b573299352">search()</a>, <a class="el" href="search__ac_8php.html#a14f90c83a3f2be095e9e2992a8d66138">search_ac_init()</a>, <a class="el" href="search_8php.html#ab2568591359edde5b483a6cd9a24b2cc">search_content()</a>, <a class="el" href="text_8php.html#aae91e4d2a2c6f7a9daccd2c186ae3447">searchbox()</a>, <a class="el" href="include_2message_8php.html#a751ffd6635022b2190f56154ee745752">send_message()</a>, <a class="el" href="account_8php.html#a030cec6793b909c439c0336ba39b1571">service_class_allows()</a>, <a class="el" href="account_8php.html#a905b54e10704b283ac64680a8abc0971">service_class_fetch()</a>, <a class="el" href="service__limits_8php.html#a653424aac63c5cd05ba70c3c77bf7f8a">service_limits_content()</a>, <a class="el" href="classConversation.html#a66f121ca4026246f86a732e5faa0682c">Conversation\set_mode()</a>, <a class="el" href="settings_8php.html#a3a4cde287482fced008583f54ba2a722">settings_init()</a>, <a class="el" href="settings_8php.html#aa7ee94d88ac088edb04ccf3a26de3586">settings_post()</a>, <a class="el" href="share_8php.html#afeb26046bdd02567ecd29ab5f188b249">share_init()</a>, <a class="el" href="text_8php.html#a3d225b253bb9e0f2498c11647d927b0b">smilies()</a>, <a class="el" href="sources_8php.html#ac442ccef080ab95772d8929fcafcb4b7">sources_content()</a>, <a class="el" href="sources_8php.html#ac73298ff162ce7b2de8dcaf3d3305b1e">sources_post()</a>, <a class="el" href="starred_8php.html#a63024fb418c678e49fd535e3752d349a">starred_init()</a>, <a class="el" href="security_8php.html#a6126c77a1267e046ac59cf864613f011">stream_perms_api_uids()</a>, <a class="el" href="security_8php.html#a3ef2be6a7e4928e39d50059d6feb457c">stream_perms_xchans()</a>, <a class="el" href="subthread_8php.html#a50368f3d825b77996030528e7fbfa3d3">subthread_content()</a>, <a class="el" href="suggest_8php.html#a58748a8235d4523f8333847f3e42dd91">suggest_content()</a>, <a class="el" href="suggest_8php.html#a696acf1dd8070e479adcc80c63c6718c">suggest_init()</a>, <a class="el" href="tagger_8php.html#a0e4a3eb177d1684553c547503d67161c">tagger_content()</a>, <a class="el" href="tagrm_8php.html#adfd4ea5b4d7fc6d9c9e042af5cd7d49a">tagrm_content()</a>, <a class="el" href="tagrm_8php.html#a1702f40aa53a2fa93deade1f609abe78">tagrm_post()</a>, <a class="el" href="view_2theme_2apw_2php_2config_8php.html#aa7d5739b72efef9822535b2b32d5364d">theme_content()</a>, <a class="el" href="view_2theme_2apw_2php_2config_8php.html#ad29461920cf03b9ce1428e21eb1f4ba6">theme_post()</a>, <a class="el" href="thing_8php.html#a24a35f1e64029a67fdbea94a776ae04b">thing_content()</a>, <a class="el" href="thing_8php.html#a8be23b1d475ec3d9291999221c674c80">thing_init()</a>, <a class="el" href="uexport_8php.html#a118920137dedebe0581623a2e57e7b0d">uexport_init()</a>, <a class="el" href="Contact_8php.html#a6348a532c9d26cd1c9afbc9aa6aa8960">vcard_from_xchan()</a>, <a class="el" href="viewconnections_8php.html#ab6c4d983e97b3a8a879567ff76507776">viewconnections_content()</a>, <a class="el" href="viewconnections_8php.html#a00163d50b17568f7b0e48b1ca9ab7330">viewconnections_init()</a>, <a class="el" href="viewsrc_8php.html#a6eff3d0c1d7d14b335c4edb785cd60a4">viewsrc_content()</a>, <a class="el" href="webpages_8php.html#af3b7397d4abc153e3d2147740ee1a41d">webpages_content()</a>, <a class="el" href="widgets_8php.html#add9b24d3304e529a7975e96122315554">widget_affinity()</a>, <a class="el" href="widgets_8php.html#aced5cb177f630b30799c5eab873ee75c">widget_appselect()</a>, <a class="el" href="widgets_8php.html#a145ff35319cfa47a9cc07f9425bd674b">widget_design_tools()</a>, <a class="el" href="widgets_8php.html#a5ab3b64496e02cab56429978ad55f1c0">widget_filer()</a>, <a class="el" href="widgets_8php.html#ad1bf7aa69e8d100d95faba17c7bc91cd">widget_follow()</a>, <a class="el" href="widgets_8php.html#a70442dfa079312d9d5e5ee01be51a165">widget_fullprofile()</a>, <a class="el" href="widgets_8php.html#afa2e55a78f95667a6da082efac7fec74">widget_mailmenu()</a>, <a class="el" href="widgets_8php.html#a45ea061dabe9a8372e4ca3b9e5714256">widget_notes()</a>, <a class="el" href="widgets_8php.html#abd2e508a2a0b911c4a838e3cb7599923">widget_profile()</a>, <a class="el" href="widgets_8php.html#a94203eb9bcd63cbdecbbcb15163598d8">widget_savedsearch()</a>, <a class="el" href="widgets_8php.html#aaa73bcf1702eaadd9dcd253502f55e01">widget_settings_menu()</a>, <a class="el" href="widgets_8php.html#a0d404276fedc59f5038cf5c085028326">widget_suggestions()</a>, <a class="el" href="text_8php.html#a324c58f37f6acdf9cd1922aa76077d9f">z_input_filter()</a>, <a class="el" href="identity_8php.html#a680fbafc2db023c5b1309e0180e81315">zid_init()</a>, and <a class="el" href="zping_8php.html#a4d3a6b0b8b04ed6469015823e615ee75">zping_content()</a>.</p>
</div>
</div>
@@ -1275,7 +1520,7 @@ Variables</h2></td></tr>
</table>
</div><div class="memdoc">
-<p>Referenced by <a class="el" href="admin_8php.html#afef415e4011607fbb665610441595015">admin_content()</a>, <a class="el" href="mod_2api_8php.html#a33315b5bbf5418f6850b2038107b526d">api_content()</a>, <a class="el" href="channel_8php.html#a9c6a6179e0e626398ebecc6151905ef1">channel_content()</a>, <a class="el" href="connections_8php.html#aec2e457420fce3e3bf6a9f48e36df25c">connections_content()</a>, <a class="el" href="connedit_8php.html#a795acb3d9d841f55c255d7611681ab67">connedit_content()</a>, <a class="el" href="mod_2follow_8php.html#a4c540ea4e9f5c581c1a53516ac585592">follow_content()</a>, <a class="el" href="home_8php.html#aa1cf697851a646755baf537f75334c46">home_content()</a>, <a class="el" href="login_8php.html#a1d69ca88eb9005a7026e128b9a645904">login_content()</a>, <a class="el" href="mail_8php.html#a3c7c485fc69f92371e8b20936040eca1">mail_content()</a>, <a class="el" href="mod_2message_8php.html#ac72dfed3ce08fcb331d66b37edc6e15f">message_content()</a>, <a class="el" href="mod_2network_8php.html#a43f2f29b90c5e29072c561934bc8f8b4">network_content()</a>, <a class="el" href="mod_2notify_8php.html#acdf3851688ebd6d6a575eb84ef9febe3">notify_content()</a>, <a class="el" href="oexchange_8php.html#a2d8b785cd7d041a4e6274f5af370cf26">oexchange_content()</a>, <a class="el" href="post__to__red_8php.html#a75db5d87226a0287a0ac0fa315f2bcfd">post_to_red_displayAdminContent()</a>, <a class="el" href="profile_8php.html#a3775cf6eef6587e5143133356a7b76c0">profile_content()</a>, <a class="el" href="rbmark_8php.html#a43fec4960b50926251574762cc491f76">rbmark_content()</a>, <a class="el" href="regmod_8php.html#a7953df4e32e63946565e90cdd5d50409">regmod_content()</a>, and <a class="el" href="rpost_8php.html#a8190354d789000806d9879aea276728f">rpost_content()</a>.</p>
+<p>Referenced by <a class="el" href="admin_8php.html#afef415e4011607fbb665610441595015">admin_content()</a>, <a class="el" href="mod_2api_8php.html#a33315b5bbf5418f6850b2038107b526d">api_content()</a>, <a class="el" href="channel_8php.html#a9c6a6179e0e626398ebecc6151905ef1">channel_content()</a>, <a class="el" href="connections_8php.html#aec2e457420fce3e3bf6a9f48e36df25c">connections_content()</a>, <a class="el" href="connedit_8php.html#a795acb3d9d841f55c255d7611681ab67">connedit_content()</a>, <a class="el" href="mod_2follow_8php.html#a4c540ea4e9f5c581c1a53516ac585592">follow_content()</a>, <a class="el" href="home_8php.html#a6e3dbf78f4ed74ab2577de221190b33f">home_content()</a>, <a class="el" href="login_8php.html#a1d69ca88eb9005a7026e128b9a645904">login_content()</a>, <a class="el" href="mail_8php.html#a3c7c485fc69f92371e8b20936040eca1">mail_content()</a>, <a class="el" href="mod_2message_8php.html#ac72dfed3ce08fcb331d66b37edc6e15f">message_content()</a>, <a class="el" href="mod_2network_8php.html#a43f2f29b90c5e29072c561934bc8f8b4">network_content()</a>, <a class="el" href="mod_2notify_8php.html#acdf3851688ebd6d6a575eb84ef9febe3">notify_content()</a>, <a class="el" href="oexchange_8php.html#a2d8b785cd7d041a4e6274f5af370cf26">oexchange_content()</a>, <a class="el" href="profile_8php.html#a3775cf6eef6587e5143133356a7b76c0">profile_content()</a>, <a class="el" href="rbmark_8php.html#a43fec4960b50926251574762cc491f76">rbmark_content()</a>, <a class="el" href="regmod_8php.html#a7953df4e32e63946565e90cdd5d50409">regmod_content()</a>, and <a class="el" href="rpost_8php.html#a8190354d789000806d9879aea276728f">rpost_content()</a>.</p>
</div>
</div>
@@ -1292,8 +1537,49 @@ Variables</h2></td></tr>
</tr>
</table>
</div><div class="memdoc">
+<p>Contents of $s are displayed prominently on the page the next time a page is loaded. Usually used for errors or alerts.</p>
+<dl class="params"><dt>Parameters</dt><dd>
+ <table class="params">
+ <tr><td class="paramtype">string</td><td class="paramname">$s</td><td>Text to display </td></tr>
+ </table>
+ </dd>
+</dl>
+
+<p>Referenced by <a class="el" href="Contact_8php.html#a5101d7eca5d6f387e5555f03fe249e33">account_remove()</a>, <a class="el" href="achievements_8php.html#a35ae04ada0e227d19671f289a32fb30e">achievements_content()</a>, <a class="el" href="admin_8php.html#afef415e4011607fbb665610441595015">admin_content()</a>, <a class="el" href="admin_8php.html#ad6f87a764fd35f522c7b4c351d7878ec">admin_page_channels()</a>, <a class="el" href="admin_8php.html#a42e628f367c168add8013352ac74d33f">admin_page_channels_post()</a>, <a class="el" href="admin_8php.html#a6943543f3138f6ee182cb701f415d1cc">admin_page_hubloc()</a>, <a class="el" href="admin_8php.html#a54128076986ba80c4a103de3fc3e19a8">admin_page_plugins()</a>, <a class="el" href="admin_8php.html#a3deba594ca1e11694eac1de0b724ef0a">admin_page_profs()</a>, <a class="el" href="admin_8php.html#af124619fdc278fe2bf14c45ddaa260fb">admin_page_themes()</a>, <a class="el" href="admin_8php.html#a62f10f90c47686c9c3c37c4c03a108d2">admin_page_users()</a>, <a class="el" href="admin_8php.html#a5a696706a3869800e65fb365214241b7">admin_page_users_post()</a>, <a class="el" href="mod_2api_8php.html#a33315b5bbf5418f6850b2038107b526d">api_content()</a>, <a class="el" href="mod_2api_8php.html#a6fe77f05c07cb51048df0d557b4b9bd2">api_post()</a>, <a class="el" href="appman_8php.html#af48805ac2f6f123f2681a8ae1c6f123f">appman_content()</a>, <a class="el" href="appman_8php.html#a2979acbe47ffaecfa19b9eabfbfbde39">appman_post()</a>, <a class="el" href="mod_2attach_8php.html#aa88eb5ad87aa1036a30e70339cc6c1b1">attach_init()</a>, <a class="el" href="block_8php.html#a8a82a470acdfbc7a8e749509caeeea45">block_content()</a>, <a class="el" href="blocks_8php.html#a2531a8fd51db3cecb2eb20c002c66e12">blocks_content()</a>, <a class="el" href="mod_2bookmarks_8php.html#a774364b1c8404529581083631703527a">bookmarks_content()</a>, <a class="el" href="channel_8php.html#a9c6a6179e0e626398ebecc6151905ef1">channel_content()</a>, <a class="el" href="channel_8php.html#ac7c8c7845741baadf87fae6bc279f3dc">channel_init()</a>, <a class="el" href="mod_2chat_8php.html#a8b0b8bee6fef6477e8c64c5e951b1b4f">chat_content()</a>, <a class="el" href="mod_2chat_8php.html#aa9ae4782e9baef0b7314ab9527c2707e">chat_init()</a>, <a class="el" href="include_2chat_8php.html#a2c95b545e46bfee64faa05ecf0afea91">chatroom_enter()</a>, <a class="el" href="security_8php.html#a77ba0d1889a39cf32434c5ce96fe1433">check_form_security_token_redirectOnErr()</a>, <a class="el" href="common_8php.html#ab63408f39abef7a6915186e8dabc5a96">common_content()</a>, <a class="el" href="common_8php.html#aca62f113655809f41f49042ce9b123c2">common_init()</a>, <a class="el" href="connect_8php.html#ad46a38f32fd7a3d324b1fa26373efa36">connect_init()</a>, <a class="el" href="connect_8php.html#a417ec27afe33f21a929667a665e32ee2">connect_post()</a>, <a class="el" href="connections_8php.html#aec2e457420fce3e3bf6a9f48e36df25c">connections_content()</a>, <a class="el" href="connections_8php.html#a1224058db8e3fb56463eb312f98e561d">connections_post()</a>, <a class="el" href="connedit_8php.html#a795acb3d9d841f55c255d7611681ab67">connedit_content()</a>, <a class="el" href="connedit_8php.html#a234c48426b652bf4d37053f2af329ac5">connedit_post()</a>, <a class="el" href="delegate_8php.html#a943eea8996ef348eb845c498f9f354dd">delegate_content()</a>, <a class="el" href="mod_2directory_8php.html#aac79396570d759da2efac24fcedf5b44">directory_content()</a>, <a class="el" href="display_8php.html#a37137c98d47bf3306f4c2bb9f5b60de0">display_content()</a>, <a class="el" href="items_8php.html#a555762e1022a4b8e3c3abd32e7812408">drop_item()</a>, <a class="el" href="editblock_8php.html#abbe8f55de06967bc8d79d620509a49e6">editblock_content()</a>, <a class="el" href="editlayout_8php.html#aa877e4157a26b099de904164181dd386">editlayout_content()</a>, <a class="el" href="editpost_8php.html#a34011690864d122680c802e9e748ccfb">editpost_content()</a>, <a class="el" href="editwebpage_8php.html#a375e945255fad79a71036528f7480650">editwebpage_content()</a>, <a class="el" href="events_8php.html#a1d293fb217ae6bc9e3858c4b32e363ec">events_content()</a>, <a class="el" href="events_8php.html#ab3e8a8f901175f8e40a8089eea45c075">events_post()</a>, <a class="el" href="filestorage_8php.html#a61bb1be78472555df4ce619f51014040">filestorage_content()</a>, <a class="el" href="filestorage_8php.html#ad3b64e3ece9831f9d3a9f00c0ae983cd">filestorage_post()</a>, <a class="el" href="mod_2follow_8php.html#a171f5b19f50d7738adc3b2e96ec6018a">follow_init()</a>, <a class="el" href="fsuggest_8php.html#aa6c49ed4b50a387f1845f36844dd7998">fsuggest_content()</a>, <a class="el" href="fsuggest_8php.html#a61ecfe10ce937ed526614f8fd3de3c7d">fsuggest_post()</a>, <a class="el" href="include_2group_8php.html#a06ec565d2b64e79044e7c1bf91a2a4ce">group_add()</a>, <a class="el" href="mod_2group_8php.html#a07a64f6c65b0080d8190b3d9728a7a83">group_content()</a>, <a class="el" href="mod_2group_8php.html#aed1f009b1221348021bb34761160ef35">group_post()</a>, <a class="el" href="hcard_8php.html#ac34f26b0e6a37eef44fa49bea135136d">hcard_init()</a>, <a class="el" href="import_8php.html#afdf25ed70096d5dbf4f6d0ca79fea184">import_content()</a>, <a class="el" href="import_8php.html#af17fef0410518f7eac205d0ea416eaa2">import_post()</a>, <a class="el" href="importelm_8php.html#a1a4f71e6d76ace6add5e9659845f5e5f">importelm_post()</a>, <a class="el" href="invite_8php.html#a244385b28cfd021d308715f01158bfd9">invite_content()</a>, <a class="el" href="invite_8php.html#aeb0881c0f93c8e8552e5ed756ce6e5a5">invite_post()</a>, <a class="el" href="item_8php.html#a764bbb2e9a885a86fb23d0b5e4a09221">item_content()</a>, <a class="el" href="item_8php.html#a693cd09805755ab85bbb5ecae69a48c3">item_post()</a>, <a class="el" href="layouts_8php.html#a6e0193759ad9eef76d3df2db24237b50">layouts_content()</a>, <a class="el" href="like_8php.html#a9d7dd268f21c21e9d29dd2aca2dd9538">like_content()</a>, <a class="el" href="locs_8php.html#a6c900f53970c0d0e738d2fe06d27ca44">locs_content()</a>, <a class="el" href="locs_8php.html#a6b43654592919ac863d67a1f787a69b9">locs_post()</a>, <a class="el" href="lostpass_8php.html#a0314d94e48c789b1b3a201d740c9eab3">lostpass_content()</a>, <a class="el" href="lostpass_8php.html#a8ed35ba71a4404eaf4903da61d0321cc">lostpass_post()</a>, <a class="el" href="magic_8php.html#acea2cc792849ca2d71d4b689f66518bf">magic_init()</a>, <a class="el" href="mail_8php.html#a3c7c485fc69f92371e8b20936040eca1">mail_content()</a>, <a class="el" href="mail_8php.html#acfc2cc0bf4e0b178207758384977f25a">mail_post()</a>, <a class="el" href="manage_8php.html#a2bca247b5296827638959138367db4f5">manage_content()</a>, <a class="el" href="match_8php.html#a1dd853e959b9e70c1911bb2fb5f5130d">match_content()</a>, <a class="el" href="mod_2menu_8php.html#a6fed23af14d71a78a4153c8363a685cf">menu_content()</a>, <a class="el" href="mod_2menu_8php.html#aaa491ef173868fe002aece4632bcf393">menu_post()</a>, <a class="el" href="mod_2message_8php.html#ac72dfed3ce08fcb331d66b37edc6e15f">message_content()</a>, <a class="el" href="mitem_8php.html#a7a31b702ecad18eeb6a38b243ff0037e">mitem_content()</a>, <a class="el" href="mitem_8php.html#a9627cd857cafdf04e4fc0ae48c8e8518">mitem_init()</a>, <a class="el" href="mitem_8php.html#a6ee694cca4b551a20d7c7a94b5243ec1">mitem_post()</a>, <a class="el" href="mood_8php.html#a721b9b6703b3234a005641c92d409b8f">mood_content()</a>, <a class="el" href="mod_2network_8php.html#a43f2f29b90c5e29072c561934bc8f8b4">network_content()</a>, <a class="el" href="mod_2network_8php.html#a180fce90ad11d7e0e45be094da7149ec">network_init()</a>, <a class="el" href="new__channel_8php.html#ae585191610f79da129492482ce8e2fee">new_channel_content()</a>, <a class="el" href="new__channel_8php.html#a180b0646957db8290482f02454ad7f23">new_channel_post()</a>, <a class="el" href="notifications_8php.html#aadd0b5525bd8c283a5d8a37982bbfe62">notifications_content()</a>, <a class="el" href="notifications_8php.html#a5baffec7b2e625c9f9cefbc097550d33">notifications_post()</a>, <a class="el" href="oexchange_8php.html#a2d8b785cd7d041a4e6274f5af370cf26">oexchange_content()</a>, <a class="el" href="openid_8php.html#a9a13827dbcf61ae4e45f0b6b33a88f43">openid_content()</a>, <a class="el" href="page_8php.html#a4d89800c0366a239191b1692c09635cf">page_init()</a>, <a class="el" href="pdledit_8php.html#a59cb550f6b7a4e7d8196fbc9de601619">pdledit_content()</a>, <a class="el" href="mod_2photos_8php.html#aa87382611a66ec5effdb2d78f13f5812">photos_content()</a>, <a class="el" href="mod_2photos_8php.html#a062bed4d04d14fee8a53f4c9be673080">photos_post()</a>, <a class="el" href="poke_8php.html#ac9190563a8da9c07a16f9dcd71cf6993">poke_content()</a>, <a class="el" href="post_8php.html#af4b48181ce773ef0cdfc972441445c34">post_init()</a>, <a class="el" href="profile_8php.html#a3775cf6eef6587e5143133356a7b76c0">profile_content()</a>, <a class="el" href="profile_8php.html#ab5d0246be0552e2182a585c1206d22a5">profile_init()</a>, <a class="el" href="identity_8php.html#a4751b522ea913d0e7ed43e03d22e9e68">profile_load()</a>, <a class="el" href="profile__photo_8php.html#a4b80234074bd603221aa5364f330e479">profile_photo_post()</a>, <a class="el" href="profiles_8php.html#a46975783b8b8d70402d51487eb1f0b00">profiles_content()</a>, <a class="el" href="profiles_8php.html#a36f71405ad536228f8bb84a551b23f7e">profiles_init()</a>, <a class="el" href="profiles_8php.html#ab0362c81b1d3b0b12a772b9fac446e04">profiles_post()</a>, <a class="el" href="profperm_8php.html#aef015787de2373d9fb3fe3f814fb5023">profperm_content()</a>, <a class="el" href="register_8php.html#a0e91f57f111407ea8d3223a05022bb2a">register_content()</a>, <a class="el" href="register_8php.html#a51731dcc1917c58a790eb1c0f6132271">register_post()</a>, <a class="el" href="regmod_8php.html#a7953df4e32e63946565e90cdd5d50409">regmod_content()</a>, <a class="el" href="removeaccount_8php.html#a26a3325292e932c59793430ab737126a">removeaccount_post()</a>, <a class="el" href="removeme_8php.html#a7be08738beca44bb98a79e01cdb2ee88">removeme_post()</a>, <a class="el" href="rmagic_8php.html#a869de069d081b3c4e98b957d06bbf08f">rmagic_post()</a>, <a class="el" href="search_8php.html#ab2568591359edde5b483a6cd9a24b2cc">search_content()</a>, <a class="el" href="service__limits_8php.html#a653424aac63c5cd05ba70c3c77bf7f8a">service_limits_content()</a>, <a class="el" href="settings_8php.html#aa7ee94d88ac088edb04ccf3a26de3586">settings_post()</a>, <a class="el" href="sources_8php.html#ac442ccef080ab95772d8929fcafcb4b7">sources_content()</a>, <a class="el" href="sources_8php.html#ac73298ff162ce7b2de8dcaf3d3305b1e">sources_post()</a>, <a class="el" href="subthread_8php.html#a50368f3d825b77996030528e7fbfa3d3">subthread_content()</a>, <a class="el" href="suggest_8php.html#a58748a8235d4523f8333847f3e42dd91">suggest_content()</a>, <a class="el" href="thing_8php.html#a24a35f1e64029a67fdbea94a776ae04b">thing_content()</a>, <a class="el" href="thing_8php.html#a8be23b1d475ec3d9291999221c674c80">thing_init()</a>, <a class="el" href="account_8php.html#ac1653efba62493b9d87513e1b6c04c83">user_deny()</a>, <a class="el" href="viewconnections_8php.html#ab6c4d983e97b3a8a879567ff76507776">viewconnections_content()</a>, <a class="el" href="viewsrc_8php.html#a6eff3d0c1d7d14b335c4edb785cd60a4">viewsrc_content()</a>, <a class="el" href="wall__attach_8php.html#a7385e970e93228d082f0fd7254f6e653">wall_attach_post()</a>, <a class="el" href="wall__upload_8php.html#a7cbe204244cf9e0380ee932263a74d8f">wall_upload_post()</a>, <a class="el" href="webpages_8php.html#af3b7397d4abc153e3d2147740ee1a41d">webpages_content()</a>, and <a class="el" href="xchan_8php.html#a9853348bf1a35c644460221ba75edc2d">xchan_content()</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a5fbebdf7a1c0ea8f904dbd9d78c2c06c"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">os_mkdir </td>
+ <td>(</td>
+ <td class="paramtype">&#160;</td>
+ <td class="paramname"><em>$path</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">&#160;</td>
+ <td class="paramname"><em>$mode</em> = <code>0777</code>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">&#160;</td>
+ <td class="paramname"><em>$recursive</em> = <code>false</code>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
-<p>Referenced by <a class="el" href="achievements_8php.html#a35ae04ada0e227d19671f289a32fb30e">achievements_content()</a>, <a class="el" href="admin_8php.html#afef415e4011607fbb665610441595015">admin_content()</a>, <a class="el" href="admin_8php.html#ad6f87a764fd35f522c7b4c351d7878ec">admin_page_channels()</a>, <a class="el" href="admin_8php.html#a42e628f367c168add8013352ac74d33f">admin_page_channels_post()</a>, <a class="el" href="admin_8php.html#a6943543f3138f6ee182cb701f415d1cc">admin_page_hubloc()</a>, <a class="el" href="admin_8php.html#a54128076986ba80c4a103de3fc3e19a8">admin_page_plugins()</a>, <a class="el" href="admin_8php.html#af124619fdc278fe2bf14c45ddaa260fb">admin_page_themes()</a>, <a class="el" href="admin_8php.html#a62f10f90c47686c9c3c37c4c03a108d2">admin_page_users()</a>, <a class="el" href="admin_8php.html#a5a696706a3869800e65fb365214241b7">admin_page_users_post()</a>, <a class="el" href="mod_2api_8php.html#a33315b5bbf5418f6850b2038107b526d">api_content()</a>, <a class="el" href="mod_2api_8php.html#a6fe77f05c07cb51048df0d557b4b9bd2">api_post()</a>, <a class="el" href="appman_8php.html#af48805ac2f6f123f2681a8ae1c6f123f">appman_content()</a>, <a class="el" href="appman_8php.html#a2979acbe47ffaecfa19b9eabfbfbde39">appman_post()</a>, <a class="el" href="mod_2attach_8php.html#aa88eb5ad87aa1036a30e70339cc6c1b1">attach_init()</a>, <a class="el" href="block_8php.html#a8a82a470acdfbc7a8e749509caeeea45">block_content()</a>, <a class="el" href="blocks_8php.html#a2531a8fd51db3cecb2eb20c002c66e12">blocks_content()</a>, <a class="el" href="mod_2bookmarks_8php.html#a774364b1c8404529581083631703527a">bookmarks_content()</a>, <a class="el" href="channel_8php.html#a9c6a6179e0e626398ebecc6151905ef1">channel_content()</a>, <a class="el" href="channel_8php.html#ac7c8c7845741baadf87fae6bc279f3dc">channel_init()</a>, <a class="el" href="chanview_8php.html#a4192c6da888c8c1165851acf9ad4cb8b">chanview_content()</a>, <a class="el" href="mod_2chat_8php.html#a8b0b8bee6fef6477e8c64c5e951b1b4f">chat_content()</a>, <a class="el" href="mod_2chat_8php.html#aa9ae4782e9baef0b7314ab9527c2707e">chat_init()</a>, <a class="el" href="include_2chat_8php.html#a2c95b545e46bfee64faa05ecf0afea91">chatroom_enter()</a>, <a class="el" href="security_8php.html#a77ba0d1889a39cf32434c5ce96fe1433">check_form_security_token_redirectOnErr()</a>, <a class="el" href="common_8php.html#ab63408f39abef7a6915186e8dabc5a96">common_content()</a>, <a class="el" href="common_8php.html#aca62f113655809f41f49042ce9b123c2">common_init()</a>, <a class="el" href="connect_8php.html#ad46a38f32fd7a3d324b1fa26373efa36">connect_init()</a>, <a class="el" href="connect_8php.html#a417ec27afe33f21a929667a665e32ee2">connect_post()</a>, <a class="el" href="connections_8php.html#aec2e457420fce3e3bf6a9f48e36df25c">connections_content()</a>, <a class="el" href="connections_8php.html#a1224058db8e3fb56463eb312f98e561d">connections_post()</a>, <a class="el" href="connedit_8php.html#a795acb3d9d841f55c255d7611681ab67">connedit_content()</a>, <a class="el" href="connedit_8php.html#a234c48426b652bf4d37053f2af329ac5">connedit_post()</a>, <a class="el" href="delegate_8php.html#a943eea8996ef348eb845c498f9f354dd">delegate_content()</a>, <a class="el" href="mod_2directory_8php.html#aac79396570d759da2efac24fcedf5b44">directory_content()</a>, <a class="el" href="dirprofile_8php.html#a3e1d30d3d93863ff5615f2df4ac7f052">dirprofile_init()</a>, <a class="el" href="display_8php.html#a37137c98d47bf3306f4c2bb9f5b60de0">display_content()</a>, <a class="el" href="items_8php.html#a555762e1022a4b8e3c3abd32e7812408">drop_item()</a>, <a class="el" href="editblock_8php.html#abbe8f55de06967bc8d79d620509a49e6">editblock_content()</a>, <a class="el" href="editlayout_8php.html#aa877e4157a26b099de904164181dd386">editlayout_content()</a>, <a class="el" href="editpost_8php.html#a34011690864d122680c802e9e748ccfb">editpost_content()</a>, <a class="el" href="editwebpage_8php.html#a375e945255fad79a71036528f7480650">editwebpage_content()</a>, <a class="el" href="events_8php.html#a1d293fb217ae6bc9e3858c4b32e363ec">events_content()</a>, <a class="el" href="events_8php.html#ab3e8a8f901175f8e40a8089eea45c075">events_post()</a>, <a class="el" href="filestorage_8php.html#a61bb1be78472555df4ce619f51014040">filestorage_content()</a>, <a class="el" href="filestorage_8php.html#ad3b64e3ece9831f9d3a9f00c0ae983cd">filestorage_post()</a>, <a class="el" href="mod_2follow_8php.html#a171f5b19f50d7738adc3b2e96ec6018a">follow_init()</a>, <a class="el" href="fsuggest_8php.html#aa6c49ed4b50a387f1845f36844dd7998">fsuggest_content()</a>, <a class="el" href="fsuggest_8php.html#a61ecfe10ce937ed526614f8fd3de3c7d">fsuggest_post()</a>, <a class="el" href="include_2group_8php.html#a06ec565d2b64e79044e7c1bf91a2a4ce">group_add()</a>, <a class="el" href="mod_2group_8php.html#a07a64f6c65b0080d8190b3d9728a7a83">group_content()</a>, <a class="el" href="mod_2group_8php.html#aed1f009b1221348021bb34761160ef35">group_post()</a>, <a class="el" href="home_8php.html#aa1cf697851a646755baf537f75334c46">home_content()</a>, <a class="el" href="import_8php.html#afdf25ed70096d5dbf4f6d0ca79fea184">import_content()</a>, <a class="el" href="import_8php.html#af17fef0410518f7eac205d0ea416eaa2">import_post()</a>, <a class="el" href="importelm_8php.html#a1a4f71e6d76ace6add5e9659845f5e5f">importelm_post()</a>, <a class="el" href="invite_8php.html#a244385b28cfd021d308715f01158bfd9">invite_content()</a>, <a class="el" href="invite_8php.html#aeb0881c0f93c8e8552e5ed756ce6e5a5">invite_post()</a>, <a class="el" href="item_8php.html#a764bbb2e9a885a86fb23d0b5e4a09221">item_content()</a>, <a class="el" href="item_8php.html#a693cd09805755ab85bbb5ecae69a48c3">item_post()</a>, <a class="el" href="layouts_8php.html#a6e0193759ad9eef76d3df2db24237b50">layouts_content()</a>, <a class="el" href="like_8php.html#a9d7dd268f21c21e9d29dd2aca2dd9538">like_content()</a>, <a class="el" href="lostpass_8php.html#a0314d94e48c789b1b3a201d740c9eab3">lostpass_content()</a>, <a class="el" href="lostpass_8php.html#a8ed35ba71a4404eaf4903da61d0321cc">lostpass_post()</a>, <a class="el" href="magic_8php.html#acea2cc792849ca2d71d4b689f66518bf">magic_init()</a>, <a class="el" href="mail_8php.html#a3c7c485fc69f92371e8b20936040eca1">mail_content()</a>, <a class="el" href="mail_8php.html#acfc2cc0bf4e0b178207758384977f25a">mail_post()</a>, <a class="el" href="manage_8php.html#a2bca247b5296827638959138367db4f5">manage_content()</a>, <a class="el" href="match_8php.html#a1dd853e959b9e70c1911bb2fb5f5130d">match_content()</a>, <a class="el" href="mod_2menu_8php.html#a6fed23af14d71a78a4153c8363a685cf">menu_content()</a>, <a class="el" href="mod_2menu_8php.html#aaa491ef173868fe002aece4632bcf393">menu_post()</a>, <a class="el" href="mod_2message_8php.html#ac72dfed3ce08fcb331d66b37edc6e15f">message_content()</a>, <a class="el" href="mitem_8php.html#a7a31b702ecad18eeb6a38b243ff0037e">mitem_content()</a>, <a class="el" href="mitem_8php.html#a9627cd857cafdf04e4fc0ae48c8e8518">mitem_init()</a>, <a class="el" href="mitem_8php.html#a6ee694cca4b551a20d7c7a94b5243ec1">mitem_post()</a>, <a class="el" href="mood_8php.html#a721b9b6703b3234a005641c92d409b8f">mood_content()</a>, <a class="el" href="mod_2network_8php.html#a43f2f29b90c5e29072c561934bc8f8b4">network_content()</a>, <a class="el" href="mod_2network_8php.html#a180fce90ad11d7e0e45be094da7149ec">network_init()</a>, <a class="el" href="new__channel_8php.html#ae585191610f79da129492482ce8e2fee">new_channel_content()</a>, <a class="el" href="new__channel_8php.html#a180b0646957db8290482f02454ad7f23">new_channel_post()</a>, <a class="el" href="notifications_8php.html#aadd0b5525bd8c283a5d8a37982bbfe62">notifications_content()</a>, <a class="el" href="notifications_8php.html#a5baffec7b2e625c9f9cefbc097550d33">notifications_post()</a>, <a class="el" href="oexchange_8php.html#a2d8b785cd7d041a4e6274f5af370cf26">oexchange_content()</a>, <a class="el" href="openid_8php.html#a9a13827dbcf61ae4e45f0b6b33a88f43">openid_content()</a>, <a class="el" href="page_8php.html#a91a5f649f68406149108bded1dc90b22">page_content()</a>, <a class="el" href="pdledit_8php.html#a59cb550f6b7a4e7d8196fbc9de601619">pdledit_content()</a>, <a class="el" href="mod_2photos_8php.html#aa87382611a66ec5effdb2d78f13f5812">photos_content()</a>, <a class="el" href="mod_2photos_8php.html#a062bed4d04d14fee8a53f4c9be673080">photos_post()</a>, <a class="el" href="poke_8php.html#ac9190563a8da9c07a16f9dcd71cf6993">poke_content()</a>, <a class="el" href="post_8php.html#af4b48181ce773ef0cdfc972441445c34">post_init()</a>, <a class="el" href="profile_8php.html#a3775cf6eef6587e5143133356a7b76c0">profile_content()</a>, <a class="el" href="profile_8php.html#ab5d0246be0552e2182a585c1206d22a5">profile_init()</a>, <a class="el" href="identity_8php.html#a4751b522ea913d0e7ed43e03d22e9e68">profile_load()</a>, <a class="el" href="profile__photo_8php.html#a4b80234074bd603221aa5364f330e479">profile_photo_post()</a>, <a class="el" href="profiles_8php.html#a46975783b8b8d70402d51487eb1f0b00">profiles_content()</a>, <a class="el" href="profiles_8php.html#a36f71405ad536228f8bb84a551b23f7e">profiles_init()</a>, <a class="el" href="profiles_8php.html#ab0362c81b1d3b0b12a772b9fac446e04">profiles_post()</a>, <a class="el" href="profperm_8php.html#aef015787de2373d9fb3fe3f814fb5023">profperm_content()</a>, <a class="el" href="register_8php.html#a0e91f57f111407ea8d3223a05022bb2a">register_content()</a>, <a class="el" href="register_8php.html#a51731dcc1917c58a790eb1c0f6132271">register_post()</a>, <a class="el" href="regmod_8php.html#a7953df4e32e63946565e90cdd5d50409">regmod_content()</a>, <a class="el" href="rmagic_8php.html#a869de069d081b3c4e98b957d06bbf08f">rmagic_post()</a>, <a class="el" href="search_8php.html#ab2568591359edde5b483a6cd9a24b2cc">search_content()</a>, <a class="el" href="settings_8php.html#aa7ee94d88ac088edb04ccf3a26de3586">settings_post()</a>, <a class="el" href="sources_8php.html#ac442ccef080ab95772d8929fcafcb4b7">sources_content()</a>, <a class="el" href="sources_8php.html#ac73298ff162ce7b2de8dcaf3d3305b1e">sources_post()</a>, <a class="el" href="subthread_8php.html#a50368f3d825b77996030528e7fbfa3d3">subthread_content()</a>, <a class="el" href="suggest_8php.html#a58748a8235d4523f8333847f3e42dd91">suggest_content()</a>, <a class="el" href="thing_8php.html#a24a35f1e64029a67fdbea94a776ae04b">thing_content()</a>, <a class="el" href="thing_8php.html#a8be23b1d475ec3d9291999221c674c80">thing_init()</a>, <a class="el" href="account_8php.html#ac1653efba62493b9d87513e1b6c04c83">user_deny()</a>, <a class="el" href="viewconnections_8php.html#ab6c4d983e97b3a8a879567ff76507776">viewconnections_content()</a>, <a class="el" href="viewsrc_8php.html#a6eff3d0c1d7d14b335c4edb785cd60a4">viewsrc_content()</a>, <a class="el" href="wall__attach_8php.html#a7385e970e93228d082f0fd7254f6e653">wall_attach_post()</a>, <a class="el" href="wall__upload_8php.html#a7cbe204244cf9e0380ee932263a74d8f">wall_upload_post()</a>, <a class="el" href="webpages_8php.html#af3b7397d4abc153e3d2147740ee1a41d">webpages_content()</a>, and <a class="el" href="xchan_8php.html#a9853348bf1a35c644460221ba75edc2d">xchan_content()</a>.</p>
+<p>Referenced by <a class="el" href="include_2attach_8php.html#ab6830b3ab74a5d284876141ac80f6cbc">attach_mkdir()</a>, <a class="el" href="security_8php.html#a8d23d2597aae380a3341872fe9513380">change_channel()</a>, <a class="el" href="setup_8php.html#ab4b71369a25021d59247c917e98d8246">check_store()</a>, and <a class="el" href="cloud_8php.html#ad2e96e917852f27dedfc263d37e13756">cloud_init()</a>.</p>
</div>
</div>
@@ -1315,7 +1601,7 @@ Variables</h2></td></tr>
<p>e.g.: proc_run("ls","-la","/tmp");</p>
<p>$cmd and string args are surrounded with "" </p>
-<p>Referenced by <a class="el" href="admin_8php.html#a42e628f367c168add8013352ac74d33f">admin_page_channels_post()</a>, <a class="el" href="zot_8php.html#ac34e479d27f32b82dd6b33542f81a6a7">build_sync_packet()</a>, <a class="el" href="Contact_8php.html#a186162051a5127069cc851d78740f205">channel_remove()</a>, <a class="el" href="connect_8php.html#a417ec27afe33f21a929667a665e32ee2">connect_post()</a>, <a class="el" href="connections_8php.html#a1224058db8e3fb56463eb312f98e561d">connections_post()</a>, <a class="el" href="connedit_8php.html#a795acb3d9d841f55c255d7611681ab67">connedit_content()</a>, <a class="el" href="connedit_8php.html#a234c48426b652bf4d37053f2af329ac5">connedit_post()</a>, <a class="el" href="identity_8php.html#a345f4c943d84de502ec6e72d2c813945">create_identity()</a>, <a class="el" href="include_2directory_8php.html#aa75d3b0697ca1456aaabdb37a74aa0f0">directory_run()</a>, <a class="el" href="items_8php.html#a555762e1022a4b8e3c3abd32e7812408">drop_item()</a>, <a class="el" href="items_8php.html#a668ece2c37f05cc3abe538eb0dabfe55">drop_items()</a>, <a class="el" href="events_8php.html#ab3e8a8f901175f8e40a8089eea45c075">events_post()</a>, <a class="el" href="boot_8php.html#aca5e42678e178c6b9034610d66666fd7">fix_system_urls()</a>, <a class="el" href="mod_2follow_8php.html#a171f5b19f50d7738adc3b2e96ec6018a">follow_init()</a>, <a class="el" href="fsuggest_8php.html#a61ecfe10ce937ed526614f8fd3de3c7d">fsuggest_post()</a>, <a class="el" href="import_8php.html#af17fef0410518f7eac205d0ea416eaa2">import_post()</a>, <a class="el" href="item_8php.html#a693cd09805755ab85bbb5ecae69a48c3">item_post()</a>, <a class="el" href="like_8php.html#a9d7dd268f21c21e9d29dd2aca2dd9538">like_content()</a>, <a class="el" href="mail_8php.html#a3c7c485fc69f92371e8b20936040eca1">mail_content()</a>, <a class="el" href="mood_8php.html#a7ae136dd7476865b4828136175db5022">mood_init()</a>, <a class="el" href="include_2follow_8php.html#ae387d4ae097c23d69f3247e7f08140c7">new_contact()</a>, <a class="el" href="notifier_8php.html#a568c502f626cff95e344c0748938b85d">notifier_run()</a>, <a class="el" href="include_2photos_8php.html#a6c40ef58aefef705a5adc84a40e97109">photo_upload()</a>, <a class="el" href="mod_2photos_8php.html#a062bed4d04d14fee8a53f4c9be673080">photos_post()</a>, <a class="el" href="poller_8php.html#a5f12df3a4738124b6c039971e87e76da">poller_run()</a>, <a class="el" href="items_8php.html#a410f9c743877c125ca06312373346903">post_activity_item()</a>, <a class="el" href="zot_8php.html#a4d9e6ca295e443b740d9960c304b3474">process_delivery()</a>, <a class="el" href="activities_8php.html#a80134e807719b3c54aba971958d2e132">profile_activity()</a>, <a class="el" href="profile__photo_8php.html#a4b80234074bd603221aa5364f330e479">profile_photo_post()</a>, <a class="el" href="profiles_8php.html#ab0362c81b1d3b0b12a772b9fac446e04">profiles_post()</a>, <a class="el" href="include_2message_8php.html#a751ffd6635022b2190f56154ee745752">send_message()</a>, <a class="el" href="settings_8php.html#aa7ee94d88ac088edb04ccf3a26de3586">settings_post()</a>, <a class="el" href="items_8php.html#ab1bce4261bcf75ad62753b498a144d17">tag_deliver()</a>, <a class="el" href="tagger_8php.html#a0e4a3eb177d1684553c547503d67161c">tagger_content()</a>, <a class="el" href="identity_8php.html#a680fbafc2db023c5b1309e0180e81315">zid_init()</a>, and <a class="el" href="zot_8php.html#a7ac30ff51274bf0b6d3eade37972145c">zot_refresh()</a>.</p>
+<p>Referenced by <a class="el" href="admin_8php.html#ad6f87a764fd35f522c7b4c351d7878ec">admin_page_channels()</a>, <a class="el" href="admin_8php.html#a42e628f367c168add8013352ac74d33f">admin_page_channels_post()</a>, <a class="el" href="zot_8php.html#aa97b33b619dd7132a9274f852af6ceb5">build_sync_packet()</a>, <a class="el" href="Contact_8php.html#a4e8af0f0525161da74583c04b8b03097">channel_remove()</a>, <a class="el" href="connect_8php.html#a417ec27afe33f21a929667a665e32ee2">connect_post()</a>, <a class="el" href="connections_8php.html#a1224058db8e3fb56463eb312f98e561d">connections_post()</a>, <a class="el" href="connedit_8php.html#a795acb3d9d841f55c255d7611681ab67">connedit_content()</a>, <a class="el" href="connedit_8php.html#a234c48426b652bf4d37053f2af329ac5">connedit_post()</a>, <a class="el" href="identity_8php.html#a345f4c943d84de502ec6e72d2c813945">create_identity()</a>, <a class="el" href="diaspora_8php.html#a0fb2abe304aae19efc040a5e6b917829">diaspora_comment()</a>, <a class="el" href="diaspora_8php.html#a5d57518545baa31cf8a85a937a267681">diaspora_like()</a>, <a class="el" href="diaspora_8php.html#aa34d2748bb97e9e193cacd572f335055">diaspora_signed_retraction()</a>, <a class="el" href="diaspora_8php.html#aa704d6aa2ac77be345c0f501168e6e56">diaspora_transmit()</a>, <a class="el" href="include_2directory_8php.html#aa75d3b0697ca1456aaabdb37a74aa0f0">directory_run()</a>, <a class="el" href="items_8php.html#a555762e1022a4b8e3c3abd32e7812408">drop_item()</a>, <a class="el" href="items_8php.html#a668ece2c37f05cc3abe538eb0dabfe55">drop_items()</a>, <a class="el" href="events_8php.html#ab3e8a8f901175f8e40a8089eea45c075">events_post()</a>, <a class="el" href="boot_8php.html#aca5e42678e178c6b9034610d66666fd7">fix_system_urls()</a>, <a class="el" href="mod_2follow_8php.html#a171f5b19f50d7738adc3b2e96ec6018a">follow_init()</a>, <a class="el" href="fsuggest_8php.html#a61ecfe10ce937ed526614f8fd3de3c7d">fsuggest_post()</a>, <a class="el" href="import_8php.html#af17fef0410518f7eac205d0ea416eaa2">import_post()</a>, <a class="el" href="item_8php.html#a693cd09805755ab85bbb5ecae69a48c3">item_post()</a>, <a class="el" href="like_8php.html#a9d7dd268f21c21e9d29dd2aca2dd9538">like_content()</a>, <a class="el" href="locs_8php.html#a6b43654592919ac863d67a1f787a69b9">locs_post()</a>, <a class="el" href="mail_8php.html#a3c7c485fc69f92371e8b20936040eca1">mail_content()</a>, <a class="el" href="mood_8php.html#a7ae136dd7476865b4828136175db5022">mood_init()</a>, <a class="el" href="include_2follow_8php.html#ae387d4ae097c23d69f3247e7f08140c7">new_contact()</a>, <a class="el" href="notifier_8php.html#a568c502f626cff95e344c0748938b85d">notifier_run()</a>, <a class="el" href="include_2photos_8php.html#a6c40ef58aefef705a5adc84a40e97109">photo_upload()</a>, <a class="el" href="mod_2photos_8php.html#a062bed4d04d14fee8a53f4c9be673080">photos_post()</a>, <a class="el" href="poller_8php.html#a5f12df3a4738124b6c039971e87e76da">poller_run()</a>, <a class="el" href="items_8php.html#a410f9c743877c125ca06312373346903">post_activity_item()</a>, <a class="el" href="zot_8php.html#a0e3006e7a456b2175a9badc96bc5176d">process_delivery()</a>, <a class="el" href="activities_8php.html#a80134e807719b3c54aba971958d2e132">profile_activity()</a>, <a class="el" href="profile__photo_8php.html#a4b80234074bd603221aa5364f330e479">profile_photo_post()</a>, <a class="el" href="profiles_8php.html#ab0362c81b1d3b0b12a772b9fac446e04">profiles_post()</a>, <a class="el" href="hubloc_8php.html#a84c79b7be352f62d12fe4fa2c80fc6ea">remove_obsolete_hublocs()</a>, <a class="el" href="include_2message_8php.html#a751ffd6635022b2190f56154ee745752">send_message()</a>, <a class="el" href="settings_8php.html#aa7ee94d88ac088edb04ccf3a26de3586">settings_post()</a>, <a class="el" href="items_8php.html#adf2b8137dc4ad9ec958de2842f16f3c2">start_delivery_chain()</a>, <a class="el" href="items_8php.html#ab1bce4261bcf75ad62753b498a144d17">tag_deliver()</a>, <a class="el" href="tagger_8php.html#a0e4a3eb177d1684553c547503d67161c">tagger_content()</a>, <a class="el" href="identity_8php.html#a680fbafc2db023c5b1309e0180e81315">zid_init()</a>, <a class="el" href="zot_8php.html#a3920afe14fc1d82020161b4b86bcd9ac">zot_process_message_request()</a>, and <a class="el" href="zot_8php.html#a7ac30ff51274bf0b6d3eade37972145c">zot_refresh()</a>.</p>
</div>
</div>
@@ -1332,7 +1618,10 @@ Variables</h2></td></tr>
</table>
</div><div class="memdoc">
-<p>Referenced by <a class="el" href="include_2apps_8php.html#a1b2e737f477a2e0d9d11ef14adc5aa66">app_render()</a>, <a class="el" href="channel_8php.html#a9c6a6179e0e626398ebecc6151905ef1">channel_content()</a>, <a class="el" href="mod_2directory_8php.html#aac79396570d759da2efac24fcedf5b44">directory_content()</a>, <a class="el" href="dirprofile_8php.html#a3e1d30d3d93863ff5615f2df4ac7f052">dirprofile_init()</a>, <a class="el" href="display_8php.html#a37137c98d47bf3306f4c2bb9f5b60de0">display_content()</a>, <a class="el" href="items_8php.html#a668ece2c37f05cc3abe538eb0dabfe55">drop_items()</a>, <a class="el" href="identity_8php.html#a332df795f684788002f5a6424abacfd7">get_online_status()</a>, <a class="el" href="item_8php.html#a764bbb2e9a885a86fb23d0b5e4a09221">item_content()</a>, <a class="el" href="security_8php.html#a9355488460ab11d6058656ff919e5cf9">item_permissions_sql()</a>, <a class="el" href="item_8php.html#a693cd09805755ab85bbb5ecae69a48c3">item_post()</a>, <a class="el" href="nav_8php.html#a43be0df73b90647ea70947ce004e231e">nav()</a>, <a class="el" href="acl_8php.html#a57dceff370d4a0e7ae673d50fbfda61f">navbar_complete()</a>, <a class="el" href="oexchange_8php.html#a2d8b785cd7d041a4e6274f5af370cf26">oexchange_content()</a>, <a class="el" href="security_8php.html#afa683bc025a1d2fe9065e2f6cd71a22f">permissions_sql()</a>, <a class="el" href="mod_2photos_8php.html#aa87382611a66ec5effdb2d78f13f5812">photos_content()</a>, <a class="el" href="mod_2photos_8php.html#ab950295cd77626f5fe65331a87693014">photos_init()</a>, <a class="el" href="mod_2photos_8php.html#a062bed4d04d14fee8a53f4c9be673080">photos_post()</a>, <a class="el" href="poco_8php.html#a53def16f75e3d41f1d2bb7cfa4905498">poco_init()</a>, <a class="el" href="post_8php.html#af4b48181ce773ef0cdfc972441445c34">post_init()</a>, <a class="el" href="profile_8php.html#a3775cf6eef6587e5143133356a7b76c0">profile_content()</a>, <a class="el" href="identity_8php.html#ad4a2c8caca8f6ae93633ebeca0ed6620">profile_create_sidebar()</a>, <a class="el" href="identity_8php.html#a432259b2cf5b6f59be53e71db9f2c7dc">profile_sidebar()</a>, <a class="el" href="rpost_8php.html#a8190354d789000806d9879aea276728f">rpost_content()</a>, <a class="el" href="search_8php.html#ab2568591359edde5b483a6cd9a24b2cc">search_content()</a>, <a class="el" href="share_8php.html#afeb26046bdd02567ecd29ab5f188b249">share_init()</a>, <a class="el" href="subthread_8php.html#a50368f3d825b77996030528e7fbfa3d3">subthread_content()</a>, <a class="el" href="tagger_8php.html#a0e4a3eb177d1684553c547503d67161c">tagger_content()</a>, <a class="el" href="viewconnections_8php.html#ab6c4d983e97b3a8a879567ff76507776">viewconnections_content()</a>, <a class="el" href="viewconnections_8php.html#a00163d50b17568f7b0e48b1ca9ab7330">viewconnections_init()</a>, <a class="el" href="widgets_8php.html#a70442dfa079312d9d5e5ee01be51a165">widget_fullprofile()</a>, <a class="el" href="widgets_8php.html#abd2e508a2a0b911c4a838e3cb7599923">widget_profile()</a>, <a class="el" href="identity_8php.html#a680fbafc2db023c5b1309e0180e81315">zid_init()</a>, and <a class="el" href="zotfeed_8php.html#a24dfc23d366e7f840cf2847d0c1c8eac">zotfeed_init()</a>.</p>
+<p>Returns contact id (visitor_id) of authenticated site visitor or false. </p>
+<dl class="section return"><dt>Returns</dt><dd>int|bool visitor_id or false </dd></dl>
+
+<p>Referenced by <a class="el" href="include_2apps_8php.html#a1b2e737f477a2e0d9d11ef14adc5aa66">app_render()</a>, <a class="el" href="channel_8php.html#a9c6a6179e0e626398ebecc6151905ef1">channel_content()</a>, <a class="el" href="mod_2directory_8php.html#aac79396570d759da2efac24fcedf5b44">directory_content()</a>, <a class="el" href="display_8php.html#a37137c98d47bf3306f4c2bb9f5b60de0">display_content()</a>, <a class="el" href="items_8php.html#a668ece2c37f05cc3abe538eb0dabfe55">drop_items()</a>, <a class="el" href="identity_8php.html#a332df795f684788002f5a6424abacfd7">get_online_status()</a>, <a class="el" href="home_8php.html#a6e3dbf78f4ed74ab2577de221190b33f">home_content()</a>, <a class="el" href="item_8php.html#a764bbb2e9a885a86fb23d0b5e4a09221">item_content()</a>, <a class="el" href="security_8php.html#a9355488460ab11d6058656ff919e5cf9">item_permissions_sql()</a>, <a class="el" href="item_8php.html#a693cd09805755ab85bbb5ecae69a48c3">item_post()</a>, <a class="el" href="nav_8php.html#a43be0df73b90647ea70947ce004e231e">nav()</a>, <a class="el" href="acl_8php.html#a57dceff370d4a0e7ae673d50fbfda61f">navbar_complete()</a>, <a class="el" href="oexchange_8php.html#a2d8b785cd7d041a4e6274f5af370cf26">oexchange_content()</a>, <a class="el" href="security_8php.html#afa683bc025a1d2fe9065e2f6cd71a22f">permissions_sql()</a>, <a class="el" href="mod_2photos_8php.html#aa87382611a66ec5effdb2d78f13f5812">photos_content()</a>, <a class="el" href="mod_2photos_8php.html#ab950295cd77626f5fe65331a87693014">photos_init()</a>, <a class="el" href="mod_2photos_8php.html#a062bed4d04d14fee8a53f4c9be673080">photos_post()</a>, <a class="el" href="poco_8php.html#a53def16f75e3d41f1d2bb7cfa4905498">poco_init()</a>, <a class="el" href="post_8php.html#af4b48181ce773ef0cdfc972441445c34">post_init()</a>, <a class="el" href="profile_8php.html#a3775cf6eef6587e5143133356a7b76c0">profile_content()</a>, <a class="el" href="identity_8php.html#ad4a2c8caca8f6ae93633ebeca0ed6620">profile_create_sidebar()</a>, <a class="el" href="identity_8php.html#a432259b2cf5b6f59be53e71db9f2c7dc">profile_sidebar()</a>, <a class="el" href="rpost_8php.html#a8190354d789000806d9879aea276728f">rpost_content()</a>, <a class="el" href="search_8php.html#ab2568591359edde5b483a6cd9a24b2cc">search_content()</a>, <a class="el" href="share_8php.html#afeb26046bdd02567ecd29ab5f188b249">share_init()</a>, <a class="el" href="subthread_8php.html#a50368f3d825b77996030528e7fbfa3d3">subthread_content()</a>, <a class="el" href="tagger_8php.html#a0e4a3eb177d1684553c547503d67161c">tagger_content()</a>, <a class="el" href="viewconnections_8php.html#ab6c4d983e97b3a8a879567ff76507776">viewconnections_content()</a>, <a class="el" href="viewconnections_8php.html#a00163d50b17568f7b0e48b1ca9ab7330">viewconnections_init()</a>, <a class="el" href="widgets_8php.html#a70442dfa079312d9d5e5ee01be51a165">widget_fullprofile()</a>, <a class="el" href="widgets_8php.html#abd2e508a2a0b911c4a838e3cb7599923">widget_profile()</a>, <a class="el" href="identity_8php.html#a680fbafc2db023c5b1309e0180e81315">zid_init()</a>, and <a class="el" href="zotfeed_8php.html#a24dfc23d366e7f840cf2847d0c1c8eac">zotfeed_init()</a>.</p>
</div>
</div>
@@ -1369,7 +1658,7 @@ Variables</h2></td></tr>
</div>
</div>
-<a class="anchor" id="a01353c9abebc3544ea080ac161729632"></a>
+<a class="anchor" id="ae97836b0547953be182a2334c9c91d3c"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
@@ -1383,7 +1672,7 @@ Variables</h2></td></tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">&#160;</td>
- <td class="paramname"><em>$k</em> = <code>NULL</code>&#160;</td>
+ <td class="paramname"><em>$k</em> = <code>null</code>&#160;</td>
</tr>
<tr>
<td></td>
@@ -1393,7 +1682,49 @@ Variables</h2></td></tr>
</table>
</div><div class="memdoc">
-<p>Referenced by <a class="el" href="classFriendicaSmarty.html#af12091b920b95eeef1218cbc48066ca6">FriendicaSmarty\__construct()</a>, <a class="el" href="classApp.html#af6d39f63fb7116bbeb04e51696f99474">App\__construct()</a>, <a class="el" href="acl_8php.html#ac6776dba871806ecdb5d1659bc2eb07a">acl_init()</a>, <a class="el" href="admin_8php.html#a42e628f367c168add8013352ac74d33f">admin_page_channels_post()</a>, <a class="el" href="admin_8php.html#a233b7c8c31776b7020532003c6e44e1c">admin_page_logs_post()</a>, <a class="el" href="admin_8php.html#a54128076986ba80c4a103de3fc3e19a8">admin_page_plugins()</a>, <a class="el" href="admin_8php.html#ac0f3bd12431c056aad77bac9d09fa30e">admin_page_site()</a>, <a class="el" href="admin_8php.html#add865f4ae806ecbf716f423fc3e50e4f">admin_page_site_post()</a>, <a class="el" href="admin_8php.html#af124619fdc278fe2bf14c45ddaa260fb">admin_page_themes()</a>, <a class="el" href="admin_8php.html#a5a696706a3869800e65fb365214241b7">admin_page_users_post()</a>, <a class="el" href="mod_2api_8php.html#a33315b5bbf5418f6850b2038107b526d">api_content()</a>, <a class="el" href="include_2api_8php.html#a7759ccddc8dff012ad168e511ffe5af5">api_direct_messages_box()</a>, <a class="el" href="include_2api_8php.html#a0991f72554f821255397d615e76f3203">api_direct_messages_new()</a>, <a class="el" href="include_2api_8php.html#a2c71b1226ef1283b5370bd1c200fee5f">api_favorites()</a>, <a class="el" href="include_2api_8php.html#ae82608c317421f27446465aa6724733d">api_format_messages()</a>, <a class="el" href="include_2api_8php.html#aa40bae797bcd9ccacffdce5a3b5a1afa">api_get_user()</a>, <a class="el" href="include_2api_8php.html#afe534f826e4282b72d66e8cadca7bb73">api_login()</a>, <a class="el" href="mod_2api_8php.html#a6fe77f05c07cb51048df0d557b4b9bd2">api_post()</a>, <a class="el" href="include_2api_8php.html#aa0d6b29fff0344a8e67f3507a6d01410">api_statuses_f()</a>, <a class="el" href="include_2api_8php.html#a528d8070ee74ea800102936ce73cf366">api_statuses_home_timeline()</a>, <a class="el" href="include_2api_8php.html#a8b25a186bd0893f51aa72a62f655735e">api_statuses_mentions()</a>, <a class="el" href="include_2api_8php.html#ad24ce1bf20867add4c9211a8eaf93f22">api_statuses_public_timeline()</a>, <a class="el" href="include_2api_8php.html#af6f1d89cdb0a0621025efbec1597bc63">api_statuses_show()</a>, <a class="el" href="include_2api_8php.html#ad4d1634df6b35126552324683caaffa2">api_statuses_update()</a>, <a class="el" href="include_2api_8php.html#a32f0dda848d0c11c727fe1c3e741c283">api_statuses_user_timeline()</a>, <a class="el" href="include_2api_8php.html#afb99daa6b731bf497b81f2128084852c">api_user()</a>, <a class="el" href="include_2apps_8php.html#a15626f24069c18816f7cdaf4735f58f9">app_store()</a>, <a class="el" href="include_2apps_8php.html#aeab6a62d2f3dfaa86ed043a006305f46">app_update()</a>, <a class="el" href="include_2attach_8php.html#a84a8a64c4805e1525b42d4add464833f">attach_store()</a>, <a class="el" href="security_8php.html#adc7bf51e3b8d67bd80e9348f9ab03733">authenticate_success()</a>, <a class="el" href="bbcode_8php.html#a009f61aaf78771737ed0765c8463911b">bbcode()</a>, <a class="el" href="event_8php.html#a180cccd63c2a2f00ff432b03113531f3">bbtoevent()</a>, <a class="el" href="conversation_8php.html#ad470fc7766f0db66d138fa1916c7a8b7">best_link_url()</a>, <a class="el" href="include_2bookmarks_8php.html#aef1cb2968c41c759f2d106e1088ca323">bookmark_add()</a>, <a class="el" href="classApp.html#a08f0537964d98958d218066364cff785">App\build_pagehead()</a>, <a class="el" href="channel_8php.html#a9c6a6179e0e626398ebecc6151905ef1">channel_content()</a>, <a class="el" href="chatsvc_8php.html#a7032784215e1f6747cf385a6598770f9">chatsvc_content()</a>, <a class="el" href="security_8php.html#a9c6180e82150a5a9af91a1255d096b5c">check_form_security_token()</a>, <a class="el" href="cloud_8php.html#a1b79a6fe0454bc76673ad9aef55bf02d">cloud_init()</a>, <a class="el" href="connections_8php.html#aec2e457420fce3e3bf6a9f48e36df25c">connections_content()</a>, <a class="el" href="connections_8php.html#a1224058db8e3fb56463eb312f98e561d">connections_post()</a>, <a class="el" href="connedit_8php.html#a795acb3d9d841f55c255d7611681ab67">connedit_content()</a>, <a class="el" href="boot_8php.html#acc4e0c910af066148b810e5fde55fff1">construct_page()</a>, <a class="el" href="items_8php.html#a8794863cdf8ce1333040933d3a3f66bd">consume_feed()</a>, <a class="el" href="conversation_8php.html#affea1afb3f32ca41e966c8ddb4204d81">conversation()</a>, <a class="el" href="account_8php.html#a141fe579c351c78209d425473f978eb5">create_account()</a>, <a class="el" href="identity_8php.html#a345f4c943d84de502ec6e72d2c813945">create_identity()</a>, <a class="el" href="boot_8php.html#ad206598b909e8eb67eb0e0bb5ef69c13">current_theme()</a>, <a class="el" href="boot_8php.html#a926cad0b3d8b9d9ee5da1898fc063ba3">current_theme_url()</a>, <a class="el" href="include_2config_8php.html#a7ad2081c5f812ac4387fd76f3762d941">del_pconfig()</a>, <a class="el" href="include_2config_8php.html#a9c171def547deee16738dc58fdeb4b72">del_xconfig()</a>, <a class="el" href="delegate_8php.html#a943eea8996ef348eb845c498f9f354dd">delegate_content()</a>, <a class="el" href="language_8php.html#a632da17c7ac0d2dc1a00a4706870194b">detect_language()</a>, <a class="el" href="mod_2directory_8php.html#aac79396570d759da2efac24fcedf5b44">directory_content()</a>, <a class="el" href="dirprofile_8php.html#a3e1d30d3d93863ff5615f2df4ac7f052">dirprofile_init()</a>, <a class="el" href="dirsearch_8php.html#aa1fb04e1de4f25b63349ac78f94ceb4c">dirsearch_content()</a>, <a class="el" href="display_8php.html#a37137c98d47bf3306f4c2bb9f5b60de0">display_content()</a>, <a class="el" href="items_8php.html#aa723c0571e314a1853a24c5854b4f54f">encode_rel_links()</a>, <a class="el" href="event_8php.html#ac9f206819186b65952ac1869f0da8c6e">event_addtocal()</a>, <a class="el" href="events_8php.html#a1d293fb217ae6bc9e3858c4b32e363ec">events_content()</a>, <a class="el" href="events_8php.html#ab3e8a8f901175f8e40a8089eea45c075">events_post()</a>, <a class="el" href="feed_8php.html#af86137700b56f33d1d5f25c8dec22c04">feed_init()</a>, <a class="el" href="filerm_8php.html#ae2eb28d2054fa2c37e38689882172208">filerm_content()</a>, <a class="el" href="filestorage_8php.html#ad3b64e3ece9831f9d3a9f00c0ae983cd">filestorage_post()</a>, <a class="el" href="items_8php.html#a896c1809d58f2d7a42cfe14577958ddf">get_atom_elements()</a>, <a class="el" href="language_8php.html#ace67d6cad57da08d030ad9dc9b8c836e">get_browser_language()</a>, <a class="el" href="items_8php.html#a536d0313b6ffe33b9d2490c4e25c5361">get_item_elements()</a>, <a class="el" href="identity_8php.html#a490972c02fdb638c52ec0e012a30bfd2">get_my_address()</a>, <a class="el" href="identity_8php.html#aa46321e1cd6a3b8dfde8bf9510112fec">get_my_url()</a>, <a class="el" href="text_8php.html#aac0969ae09853205992ba06ab9f9f61a">get_plink()</a>, <a class="el" href="items_8php.html#a079e099e15d88d47aeb6ca6d60da7107">get_public_feed()</a>, <a class="el" href="classItem.html#ad5dcbe0b94cb2d5719bc5b6bd8ad60c8">Item\get_template_data()</a>, <a class="el" href="include_2group_8php.html#a06ec565d2b64e79044e7c1bf91a2a4ce">group_add()</a>, <a class="el" href="include_2group_8php.html#a4118f498bbd1530c1d0136d016d197a5">group_rmv()</a>, <a class="el" href="include_2group_8php.html#a6a69bd7be032fa8ce4e49c43a42cc6e9">group_side()</a>, <a class="el" href="home_8php.html#aa1cf697851a646755baf537f75334c46">home_content()</a>, <a class="el" href="import_8php.html#af17fef0410518f7eac205d0ea416eaa2">import_post()</a>, <a class="el" href="zot_8php.html#a528e97ca5d69c3b7f35c5d954afde315">import_xchan()</a>, <a class="el" href="boot_8php.html#adfb2fc7be5a4226c0a8e24131da9d498">info()</a>, <a class="el" href="invite_8php.html#aeb0881c0f93c8e8552e5ed756ce6e5a5">invite_post()</a>, <a class="el" href="item_8php.html#a693cd09805755ab85bbb5ecae69a48c3">item_post()</a>, <a class="el" href="items_8php.html#a2541e6861a56d145c9281877cc501615">item_store()</a>, <a class="el" href="items_8php.html#acf0bf7c9d21ac84f32effb754f7ad484">item_store_update()</a>, <a class="el" href="text_8php.html#a71f6952243d3fe1c5a8154f78027e29c">lang_selector()</a>, <a class="el" href="boot_8php.html#a719c7f3972d5f9268f37a41c76cd4ef6">load_contact_links()</a>, <a class="el" href="boot_8php.html#ad4c9dc2c8a82e8f52b7404c1655eab44">local_user()</a>, <a class="el" href="lostpass_8php.html#a0314d94e48c789b1b3a201d740c9eab3">lostpass_content()</a>, <a class="el" href="magic_8php.html#acea2cc792849ca2d71d4b689f66518bf">magic_init()</a>, <a class="el" href="mail_8php.html#a3c7c485fc69f92371e8b20936040eca1">mail_content()</a>, <a class="el" href="mail_8php.html#acfc2cc0bf4e0b178207758384977f25a">mail_post()</a>, <a class="el" href="items_8php.html#a77da7ce9a117601d49ac4a67c71b514f">mail_store()</a>, <a class="el" href="mood_8php.html#a721b9b6703b3234a005641c92d409b8f">mood_content()</a>, <a class="el" href="mood_8php.html#a7ae136dd7476865b4828136175db5022">mood_init()</a>, <a class="el" href="nav_8php.html#a43be0df73b90647ea70947ce004e231e">nav()</a>, <a class="el" href="acl_8php.html#a57dceff370d4a0e7ae673d50fbfda61f">navbar_complete()</a>, <a class="el" href="mod_2network_8php.html#a43f2f29b90c5e29072c561934bc8f8b4">network_content()</a>, <a class="el" href="new__channel_8php.html#ae585191610f79da129492482ce8e2fee">new_channel_content()</a>, <a class="el" href="session_8php.html#a4c0ead624f95483e386bc80abf570a8f">new_cookie()</a>, <a class="el" href="boot_8php.html#a9255af5ae9c887520091ea04763c1a88">notice()</a>, <a class="el" href="oexchange_8php.html#a2d8b785cd7d041a4e6274f5af370cf26">oexchange_content()</a>, <a class="el" href="openid_8php.html#a9a13827dbcf61ae4e45f0b6b33a88f43">openid_content()</a>, <a class="el" href="parse__url_8php.html#a05a9e8944380ba3cf6bbf5893dd4b74b">parse_url_content()</a>, <a class="el" href="include_2photos_8php.html#a6c40ef58aefef705a5adc84a40e97109">photo_upload()</a>, <a class="el" href="mod_2photos_8php.html#aa87382611a66ec5effdb2d78f13f5812">photos_content()</a>, <a class="el" href="mod_2photos_8php.html#a062bed4d04d14fee8a53f4c9be673080">photos_post()</a>, <a class="el" href="ping_8php.html#a77217b1b190b4c5d8770867b45f0c0a1">ping_init()</a>, <a class="el" href="poco_8php.html#a53def16f75e3d41f1d2bb7cfa4905498">poco_init()</a>, <a class="el" href="socgraph_8php.html#a5ef8bef37161df53718a21e93d02fbd6">poco_load()</a>, <a class="el" href="poke_8php.html#ac9190563a8da9c07a16f9dcd71cf6993">poke_content()</a>, <a class="el" href="poke_8php.html#a9725aab97b3983e6a98bd81c4efe7d3b">poke_init()</a>, <a class="el" href="items_8php.html#a410f9c743877c125ca06312373346903">post_activity_item()</a>, <a class="el" href="post_8php.html#af4b48181ce773ef0cdfc972441445c34">post_init()</a>, <a class="el" href="dba__driver_8php.html#a55bf30d8176967e682656b5be4ad9249">printable()</a>, <a class="el" href="mod_2probe_8php.html#a1f1db3fa6038e451e737964c94bf5e99">probe_content()</a>, <a class="el" href="boot_8php.html#ab346a2ece14993861f3e4206befa94f0">proc_run()</a>, <a class="el" href="profile__photo_8php.html#a4b80234074bd603221aa5364f330e479">profile_photo_post()</a>, <a class="el" href="profile__photo_8php.html#a561103564199da56e58061a4196eb102">profile_photo_set_profile_perms()</a>, <a class="el" href="identity_8php.html#a432259b2cf5b6f59be53e71db9f2c7dc">profile_sidebar()</a>, <a class="el" href="profiles_8php.html#ab0362c81b1d3b0b12a772b9fac446e04">profiles_post()</a>, <a class="el" href="rbmark_8php.html#a43fec4960b50926251574762cc491f76">rbmark_content()</a>, <a class="el" href="rbmark_8php.html#ac5a66aa8599fa5dc702bae396d8d1f8c">rbmark_post()</a>, <a class="el" href="include_2api_8php.html#aafa82b65a9f879a1a1197cfe8aaf3898">red_item_new()</a>, <a class="el" href="session_8php.html#a7f0f50576360d9ba52d29364e0b83a8e">ref_session_read()</a>, <a class="el" href="register_8php.html#a0e91f57f111407ea8d3223a05022bb2a">register_content()</a>, <a class="el" href="register_8php.html#a51731dcc1917c58a790eb1c0f6132271">register_post()</a>, <a class="el" href="classApp.html#abf46a653d8499e7c253cc1be894a6d83">App\register_template_engine()</a>, <a class="el" href="regmod_8php.html#a7953df4e32e63946565e90cdd5d50409">regmod_content()</a>, <a class="el" href="boot_8php.html#a5542c5c2806ab8bca04bad53d47b5209">remote_user()</a>, <a class="el" href="removeme_8php.html#a7be08738beca44bb98a79e01cdb2ee88">removeme_post()</a>, <a class="el" href="rpost_8php.html#a8190354d789000806d9879aea276728f">rpost_content()</a>, <a class="el" href="plugin_8php.html#a0e8c2ea50bfdbc39e17ccccaea21ddc3">script_path()</a>, <a class="el" href="search__ac_8php.html#a14f90c83a3f2be095e9e2992a8d66138">search_ac_init()</a>, <a class="el" href="search_8php.html#ab2568591359edde5b483a6cd9a24b2cc">search_content()</a>, <a class="el" href="search_8php.html#acf19fd30f07f495781ca0d7a0a08b435">search_init()</a>, <a class="el" href="plugin_8php.html#a030cec6793b909c439c0336ba39b1571">service_class_allows()</a>, <a class="el" href="plugin_8php.html#a905b54e10704b283ac64680a8abc0971">service_class_fetch()</a>, <a class="el" href="classApp.html#a78788f6e9d8b713b138f81e457c5cd08">App\set_baseurl()</a>, <a class="el" href="settings_8php.html#aa7ee94d88ac088edb04ccf3a26de3586">settings_post()</a>, <a class="el" href="setup_8php.html#a88247384a96e14516f474d7af6a465c1">setup_content()</a>, <a class="el" href="setup_8php.html#a267555abd17290e659b4bf44b885e4e0">setup_init()</a>, <a class="el" href="siteinfo_8php.html#a3efbd0bd6564af19ec0a9ce0294e59d0">siteinfo_init()</a>, <a class="el" href="suggest_8php.html#a696acf1dd8070e479adcc80c63c6718c">suggest_init()</a>, <a class="el" href="language_8php.html#ac6ae482ee54fa2764d5c2e77305aeb96">t()</a>, <a class="el" href="tagrm_8php.html#a1702f40aa53a2fa93deade1f609abe78">tagrm_post()</a>, <a class="el" href="classApp.html#a94a1ed2dc493c58612d17035b74ae736">App\template_engine()</a>, <a class="el" href="language_8php.html#a686bcafa6b0d5c86d37b38a1db5b6997">tt()</a>, <a class="el" href="identity_8php.html#af2802bc13a00a17b867bba7978ba8f58">validate_channelname()</a>, <a class="el" href="wall__upload_8php.html#a7cbe204244cf9e0380ee932263a74d8f">wall_upload_post()</a>, <a class="el" href="webfinger_8php.html#a17dd28db6d390194bf9ecb809739d1d3">webfinger_content()</a>, <a class="el" href="wfinger_8php.html#ae21e50c8d0a5f3c9be9f43a4e519acd3">wfinger_init()</a>, <a class="el" href="widgets_8php.html#add9b24d3304e529a7975e96122315554">widget_affinity()</a>, <a class="el" href="widgets_8php.html#af37fdad3b2e861d860a4a8c4d8a76c0b">widget_categories()</a>, <a class="el" href="widgets_8php.html#a5ab3b64496e02cab56429978ad55f1c0">widget_filer()</a>, <a class="el" href="widgets_8php.html#a94203eb9bcd63cbdecbbcb15163598d8">widget_savedsearch()</a>, <a class="el" href="widgets_8php.html#a6dbc227aac750774284ee39c45f0a200">widget_tagcloud()</a>, <a class="el" href="xchan_8php.html#a9853348bf1a35c644460221ba75edc2d">xchan_content()</a>, <a class="el" href="include_2network_8php.html#aafd06c0a75402aefb06cfb9f9740fa37">z_fetch_url()</a>, <a class="el" href="include_2network_8php.html#a9129fd55e7fc175b4ea9a195cccc16bc">z_post_url()</a>, and <a class="el" href="zfinger_8php.html#a8139b83a22ef98869adc10aa224027a0">zfinger_init()</a>.</p>
+<p>Multi-purpose function to check variable state. </p>
+<p>Usage: x($var) or $x($array, 'key')</p>
+<p>returns false if variable/key is not set if variable is set, returns 1 if has 'non-zero' value, otherwise returns 0. e.g. x('') or x(0) returns 0;</p>
+<dl class="params"><dt>Parameters</dt><dd>
+ <table class="params">
+ <tr><td class="paramtype">string&#160;|&#160;array</td><td class="paramname">$s</td><td>variable to check </td></tr>
+ <tr><td class="paramtype">string</td><td class="paramname">$k</td><td>key inside the array to check</td></tr>
+ </table>
+ </dd>
+</dl>
+<dl class="section return"><dt>Returns</dt><dd>bool|int </dd></dl>
+
+<p>Referenced by <a class="el" href="classFriendicaSmarty.html#af12091b920b95eeef1218cbc48066ca6">FriendicaSmarty\__construct()</a>, <a class="el" href="classApp.html#af6d39f63fb7116bbeb04e51696f99474">App\__construct()</a>, <a class="el" href="account_8php.html#a4328c40ee4b3d68630cf1ebb7b9d4d89">account_service_class_fetch()</a>, <a class="el" href="acl_8php.html#ac6776dba871806ecdb5d1659bc2eb07a">acl_init()</a>, <a class="el" href="admin_8php.html#a42e628f367c168add8013352ac74d33f">admin_page_channels_post()</a>, <a class="el" href="admin_8php.html#a233b7c8c31776b7020532003c6e44e1c">admin_page_logs_post()</a>, <a class="el" href="admin_8php.html#a54128076986ba80c4a103de3fc3e19a8">admin_page_plugins()</a>, <a class="el" href="admin_8php.html#ac0f3bd12431c056aad77bac9d09fa30e">admin_page_site()</a>, <a class="el" href="admin_8php.html#add865f4ae806ecbf716f423fc3e50e4f">admin_page_site_post()</a>, <a class="el" href="admin_8php.html#af124619fdc278fe2bf14c45ddaa260fb">admin_page_themes()</a>, <a class="el" href="admin_8php.html#a5a696706a3869800e65fb365214241b7">admin_page_users_post()</a>, <a class="el" href="mod_2api_8php.html#a33315b5bbf5418f6850b2038107b526d">api_content()</a>, <a class="el" href="include_2api_8php.html#a7759ccddc8dff012ad168e511ffe5af5">api_direct_messages_box()</a>, <a class="el" href="include_2api_8php.html#a0991f72554f821255397d615e76f3203">api_direct_messages_new()</a>, <a class="el" href="include_2api_8php.html#a2c71b1226ef1283b5370bd1c200fee5f">api_favorites()</a>, <a class="el" href="include_2api_8php.html#ae82608c317421f27446465aa6724733d">api_format_messages()</a>, <a class="el" href="include_2api_8php.html#aa40bae797bcd9ccacffdce5a3b5a1afa">api_get_user()</a>, <a class="el" href="include_2api_8php.html#afe534f826e4282b72d66e8cadca7bb73">api_login()</a>, <a class="el" href="mod_2api_8php.html#a6fe77f05c07cb51048df0d557b4b9bd2">api_post()</a>, <a class="el" href="include_2api_8php.html#aa0d6b29fff0344a8e67f3507a6d01410">api_statuses_f()</a>, <a class="el" href="include_2api_8php.html#a528d8070ee74ea800102936ce73cf366">api_statuses_home_timeline()</a>, <a class="el" href="include_2api_8php.html#a8b25a186bd0893f51aa72a62f655735e">api_statuses_mentions()</a>, <a class="el" href="include_2api_8php.html#ad24ce1bf20867add4c9211a8eaf93f22">api_statuses_public_timeline()</a>, <a class="el" href="include_2api_8php.html#af6f1d89cdb0a0621025efbec1597bc63">api_statuses_show()</a>, <a class="el" href="include_2api_8php.html#ad4d1634df6b35126552324683caaffa2">api_statuses_update()</a>, <a class="el" href="include_2api_8php.html#a32f0dda848d0c11c727fe1c3e741c283">api_statuses_user_timeline()</a>, <a class="el" href="include_2api_8php.html#afb99daa6b731bf497b81f2128084852c">api_user()</a>, <a class="el" href="include_2apps_8php.html#a15626f24069c18816f7cdaf4735f58f9">app_store()</a>, <a class="el" href="include_2apps_8php.html#aeab6a62d2f3dfaa86ed043a006305f46">app_update()</a>, <a class="el" href="include_2attach_8php.html#a84a8a64c4805e1525b42d4add464833f">attach_store()</a>, <a class="el" href="security_8php.html#adc7bf51e3b8d67bd80e9348f9ab03733">authenticate_success()</a>, <a class="el" href="bbcode_8php.html#a009f61aaf78771737ed0765c8463911b">bbcode()</a>, <a class="el" href="event_8php.html#a180cccd63c2a2f00ff432b03113531f3">bbtoevent()</a>, <a class="el" href="conversation_8php.html#ad470fc7766f0db66d138fa1916c7a8b7">best_link_url()</a>, <a class="el" href="include_2bookmarks_8php.html#aef1cb2968c41c759f2d106e1088ca323">bookmark_add()</a>, <a class="el" href="classApp.html#a08f0537964d98958d218066364cff785">App\build_pagehead()</a>, <a class="el" href="channel_8php.html#a9c6a6179e0e626398ebecc6151905ef1">channel_content()</a>, <a class="el" href="chatsvc_8php.html#a7032784215e1f6747cf385a6598770f9">chatsvc_content()</a>, <a class="el" href="security_8php.html#a9c6180e82150a5a9af91a1255d096b5c">check_form_security_token()</a>, <a class="el" href="cli__startup_8php.html#adfdde63686e33ccd4851fa5edc4fc70b">cli_startup()</a>, <a class="el" href="cloud_8php.html#ad2e96e917852f27dedfc263d37e13756">cloud_init()</a>, <a class="el" href="connections_8php.html#aec2e457420fce3e3bf6a9f48e36df25c">connections_content()</a>, <a class="el" href="connections_8php.html#a1224058db8e3fb56463eb312f98e561d">connections_post()</a>, <a class="el" href="connedit_8php.html#a795acb3d9d841f55c255d7611681ab67">connedit_content()</a>, <a class="el" href="boot_8php.html#acc4e0c910af066148b810e5fde55fff1">construct_page()</a>, <a class="el" href="items_8php.html#adc26e08aa61f5666da04ab5d2a9d68a6">consume_feed()</a>, <a class="el" href="conversation_8php.html#affea1afb3f32ca41e966c8ddb4204d81">conversation()</a>, <a class="el" href="account_8php.html#a141fe579c351c78209d425473f978eb5">create_account()</a>, <a class="el" href="identity_8php.html#a345f4c943d84de502ec6e72d2c813945">create_identity()</a>, <a class="el" href="boot_8php.html#ad206598b909e8eb67eb0e0bb5ef69c13">current_theme()</a>, <a class="el" href="boot_8php.html#a926cad0b3d8b9d9ee5da1898fc063ba3">current_theme_url()</a>, <a class="el" href="include_2config_8php.html#a7ad2081c5f812ac4387fd76f3762d941">del_pconfig()</a>, <a class="el" href="include_2config_8php.html#a9c171def547deee16738dc58fdeb4b72">del_xconfig()</a>, <a class="el" href="delegate_8php.html#a943eea8996ef348eb845c498f9f354dd">delegate_content()</a>, <a class="el" href="language_8php.html#a632da17c7ac0d2dc1a00a4706870194b">detect_language()</a>, <a class="el" href="diaspora_8php.html#a006731620a5242d410358b32678e48e3">diaspora_asphoto()</a>, <a class="el" href="diaspora_8php.html#adef30b6fac948baedcc7194d5d155b5f">diaspora_conversation()</a>, <a class="el" href="diaspora_8php.html#a7cff2f8f11044c1b3a360f20e1bbee46">diaspora_message()</a>, <a class="el" href="dir__fns_8php.html#ae56881d69bb6f8e828c9e35454386774">dir_sort_links()</a>, <a class="el" href="mod_2directory_8php.html#aac79396570d759da2efac24fcedf5b44">directory_content()</a>, <a class="el" href="mod_2directory_8php.html#a5ee59c213508b6b9787612a8219cb5bf">directory_init()</a>, <a class="el" href="dirsearch_8php.html#aa1fb04e1de4f25b63349ac78f94ceb4c">dirsearch_content()</a>, <a class="el" href="include_2network_8php.html#a5176176ddc1906d91f186df6fbd87b48">discover_by_url()</a>, <a class="el" href="display_8php.html#a37137c98d47bf3306f4c2bb9f5b60de0">display_content()</a>, <a class="el" href="items_8php.html#aa723c0571e314a1853a24c5854b4f54f">encode_rel_links()</a>, <a class="el" href="event_8php.html#ac9f206819186b65952ac1869f0da8c6e">event_addtocal()</a>, <a class="el" href="events_8php.html#a1d293fb217ae6bc9e3858c4b32e363ec">events_content()</a>, <a class="el" href="events_8php.html#ab3e8a8f901175f8e40a8089eea45c075">events_post()</a>, <a class="el" href="feed_8php.html#af86137700b56f33d1d5f25c8dec22c04">feed_init()</a>, <a class="el" href="filerm_8php.html#ae2eb28d2054fa2c37e38689882172208">filerm_content()</a>, <a class="el" href="filestorage_8php.html#ad3b64e3ece9831f9d3a9f00c0ae983cd">filestorage_post()</a>, <a class="el" href="items_8php.html#a5e5be7bf1f8257dec0b2647e60a3f3f1">get_atom_elements()</a>, <a class="el" href="language_8php.html#ace67d6cad57da08d030ad9dc9b8c836e">get_browser_language()</a>, <a class="el" href="items_8php.html#a536d0313b6ffe33b9d2490c4e25c5361">get_item_elements()</a>, <a class="el" href="identity_8php.html#a490972c02fdb638c52ec0e012a30bfd2">get_my_address()</a>, <a class="el" href="identity_8php.html#aa46321e1cd6a3b8dfde8bf9510112fec">get_my_url()</a>, <a class="el" href="text_8php.html#aac0969ae09853205992ba06ab9f9f61a">get_plink()</a>, <a class="el" href="items_8php.html#a079e099e15d88d47aeb6ca6d60da7107">get_public_feed()</a>, <a class="el" href="classItem.html#ad5dcbe0b94cb2d5719bc5b6bd8ad60c8">Item\get_template_data()</a>, <a class="el" href="datetime_8php.html#afbb34604d0f6e7d2103da4f42e2487b1">get_timezones()</a>, <a class="el" href="include_2group_8php.html#a06ec565d2b64e79044e7c1bf91a2a4ce">group_add()</a>, <a class="el" href="include_2group_8php.html#a4118f498bbd1530c1d0136d016d197a5">group_rmv()</a>, <a class="el" href="include_2group_8php.html#a6a69bd7be032fa8ce4e49c43a42cc6e9">group_side()</a>, <a class="el" href="home_8php.html#a6e3dbf78f4ed74ab2577de221190b33f">home_content()</a>, <a class="el" href="import_8php.html#af17fef0410518f7eac205d0ea416eaa2">import_post()</a>, <a class="el" href="zot_8php.html#a528e97ca5d69c3b7f35c5d954afde315">import_xchan()</a>, <a class="el" href="boot_8php.html#adfb2fc7be5a4226c0a8e24131da9d498">info()</a>, <a class="el" href="invite_8php.html#aeb0881c0f93c8e8552e5ed756ce6e5a5">invite_post()</a>, <a class="el" href="item_8php.html#a693cd09805755ab85bbb5ecae69a48c3">item_post()</a>, <a class="el" href="items_8php.html#a2541e6861a56d145c9281877cc501615">item_store()</a>, <a class="el" href="items_8php.html#acf0bf7c9d21ac84f32effb754f7ad484">item_store_update()</a>, <a class="el" href="text_8php.html#a71f6952243d3fe1c5a8154f78027e29c">lang_selector()</a>, <a class="el" href="boot_8php.html#a719c7f3972d5f9268f37a41c76cd4ef6">load_contact_links()</a>, <a class="el" href="boot_8php.html#ad4c9dc2c8a82e8f52b7404c1655eab44">local_user()</a>, <a class="el" href="lostpass_8php.html#a0314d94e48c789b1b3a201d740c9eab3">lostpass_content()</a>, <a class="el" href="magic_8php.html#acea2cc792849ca2d71d4b689f66518bf">magic_init()</a>, <a class="el" href="mail_8php.html#a3c7c485fc69f92371e8b20936040eca1">mail_content()</a>, <a class="el" href="mail_8php.html#acfc2cc0bf4e0b178207758384977f25a">mail_post()</a>, <a class="el" href="items_8php.html#a77da7ce9a117601d49ac4a67c71b514f">mail_store()</a>, <a class="el" href="mood_8php.html#a721b9b6703b3234a005641c92d409b8f">mood_content()</a>, <a class="el" href="mood_8php.html#a7ae136dd7476865b4828136175db5022">mood_init()</a>, <a class="el" href="nav_8php.html#a43be0df73b90647ea70947ce004e231e">nav()</a>, <a class="el" href="acl_8php.html#a57dceff370d4a0e7ae673d50fbfda61f">navbar_complete()</a>, <a class="el" href="mod_2network_8php.html#a43f2f29b90c5e29072c561934bc8f8b4">network_content()</a>, <a class="el" href="new__channel_8php.html#ae585191610f79da129492482ce8e2fee">new_channel_content()</a>, <a class="el" href="session_8php.html#a4c0ead624f95483e386bc80abf570a8f">new_cookie()</a>, <a class="el" href="boot_8php.html#a9255af5ae9c887520091ea04763c1a88">notice()</a>, <a class="el" href="oexchange_8php.html#a2d8b785cd7d041a4e6274f5af370cf26">oexchange_content()</a>, <a class="el" href="openid_8php.html#a9a13827dbcf61ae4e45f0b6b33a88f43">openid_content()</a>, <a class="el" href="parse__url_8php.html#a05a9e8944380ba3cf6bbf5893dd4b74b">parse_url_content()</a>, <a class="el" href="include_2photos_8php.html#a6c40ef58aefef705a5adc84a40e97109">photo_upload()</a>, <a class="el" href="mod_2photos_8php.html#aa87382611a66ec5effdb2d78f13f5812">photos_content()</a>, <a class="el" href="mod_2photos_8php.html#a062bed4d04d14fee8a53f4c9be673080">photos_post()</a>, <a class="el" href="ping_8php.html#a77217b1b190b4c5d8770867b45f0c0a1">ping_init()</a>, <a class="el" href="poco_8php.html#a53def16f75e3d41f1d2bb7cfa4905498">poco_init()</a>, <a class="el" href="socgraph_8php.html#a5ef8bef37161df53718a21e93d02fbd6">poco_load()</a>, <a class="el" href="poke_8php.html#ac9190563a8da9c07a16f9dcd71cf6993">poke_content()</a>, <a class="el" href="poke_8php.html#a9725aab97b3983e6a98bd81c4efe7d3b">poke_init()</a>, <a class="el" href="items_8php.html#a410f9c743877c125ca06312373346903">post_activity_item()</a>, <a class="el" href="post_8php.html#af4b48181ce773ef0cdfc972441445c34">post_init()</a>, <a class="el" href="mod_2probe_8php.html#a1f1db3fa6038e451e737964c94bf5e99">probe_content()</a>, <a class="el" href="boot_8php.html#ab346a2ece14993861f3e4206befa94f0">proc_run()</a>, <a class="el" href="profile__photo_8php.html#a4b80234074bd603221aa5364f330e479">profile_photo_post()</a>, <a class="el" href="profile__photo_8php.html#a561103564199da56e58061a4196eb102">profile_photo_set_profile_perms()</a>, <a class="el" href="identity_8php.html#a432259b2cf5b6f59be53e71db9f2c7dc">profile_sidebar()</a>, <a class="el" href="profiles_8php.html#ab0362c81b1d3b0b12a772b9fac446e04">profiles_post()</a>, <a class="el" href="rbmark_8php.html#a43fec4960b50926251574762cc491f76">rbmark_content()</a>, <a class="el" href="rbmark_8php.html#ac5a66aa8599fa5dc702bae396d8d1f8c">rbmark_post()</a>, <a class="el" href="include_2api_8php.html#aafa82b65a9f879a1a1197cfe8aaf3898">red_item_new()</a>, <a class="el" href="session_8php.html#a7f0f50576360d9ba52d29364e0b83a8e">ref_session_read()</a>, <a class="el" href="register_8php.html#a0e91f57f111407ea8d3223a05022bb2a">register_content()</a>, <a class="el" href="register_8php.html#a51731dcc1917c58a790eb1c0f6132271">register_post()</a>, <a class="el" href="classApp.html#abf46a653d8499e7c253cc1be894a6d83">App\register_template_engine()</a>, <a class="el" href="regmod_8php.html#a7953df4e32e63946565e90cdd5d50409">regmod_content()</a>, <a class="el" href="boot_8php.html#a5542c5c2806ab8bca04bad53d47b5209">remote_user()</a>, <a class="el" href="removeaccount_8php.html#a26a3325292e932c59793430ab737126a">removeaccount_post()</a>, <a class="el" href="removeme_8php.html#a7be08738beca44bb98a79e01cdb2ee88">removeme_post()</a>, <a class="el" href="rpost_8php.html#a8190354d789000806d9879aea276728f">rpost_content()</a>, <a class="el" href="include_2network_8php.html#a316f318167a039c89719afbd129a8f3c">scrape_feed()</a>, <a class="el" href="plugin_8php.html#a0e8c2ea50bfdbc39e17ccccaea21ddc3">script_path()</a>, <a class="el" href="search__ac_8php.html#a14f90c83a3f2be095e9e2992a8d66138">search_ac_init()</a>, <a class="el" href="search_8php.html#ab2568591359edde5b483a6cd9a24b2cc">search_content()</a>, <a class="el" href="search_8php.html#acf19fd30f07f495781ca0d7a0a08b435">search_init()</a>, <a class="el" href="account_8php.html#a030cec6793b909c439c0336ba39b1571">service_class_allows()</a>, <a class="el" href="account_8php.html#a905b54e10704b283ac64680a8abc0971">service_class_fetch()</a>, <a class="el" href="classApp.html#a78788f6e9d8b713b138f81e457c5cd08">App\set_baseurl()</a>, <a class="el" href="settings_8php.html#aa7ee94d88ac088edb04ccf3a26de3586">settings_post()</a>, <a class="el" href="setup_8php.html#a88247384a96e14516f474d7af6a465c1">setup_content()</a>, <a class="el" href="setup_8php.html#a267555abd17290e659b4bf44b885e4e0">setup_init()</a>, <a class="el" href="suggest_8php.html#a696acf1dd8070e479adcc80c63c6718c">suggest_init()</a>, <a class="el" href="language_8php.html#ac6ae482ee54fa2764d5c2e77305aeb96">t()</a>, <a class="el" href="tagrm_8php.html#a1702f40aa53a2fa93deade1f609abe78">tagrm_post()</a>, <a class="el" href="classApp.html#a94a1ed2dc493c58612d17035b74ae736">App\template_engine()</a>, <a class="el" href="language_8php.html#a686bcafa6b0d5c86d37b38a1db5b6997">tt()</a>, <a class="el" href="identity_8php.html#af2802bc13a00a17b867bba7978ba8f58">validate_channelname()</a>, <a class="el" href="wall__upload_8php.html#a7cbe204244cf9e0380ee932263a74d8f">wall_upload_post()</a>, <a class="el" href="webfinger_8php.html#a17dd28db6d390194bf9ecb809739d1d3">webfinger_content()</a>, <a class="el" href="wfinger_8php.html#ae21e50c8d0a5f3c9be9f43a4e519acd3">wfinger_init()</a>, <a class="el" href="widgets_8php.html#add9b24d3304e529a7975e96122315554">widget_affinity()</a>, <a class="el" href="widgets_8php.html#af37fdad3b2e861d860a4a8c4d8a76c0b">widget_categories()</a>, <a class="el" href="widgets_8php.html#a5ab3b64496e02cab56429978ad55f1c0">widget_filer()</a>, <a class="el" href="widgets_8php.html#a94203eb9bcd63cbdecbbcb15163598d8">widget_savedsearch()</a>, <a class="el" href="widgets_8php.html#a6dbc227aac750774284ee39c45f0a200">widget_tagcloud()</a>, <a class="el" href="xchan_8php.html#a9853348bf1a35c644460221ba75edc2d">xchan_content()</a>, <a class="el" href="include_2network_8php.html#aafd06c0a75402aefb06cfb9f9740fa37">z_fetch_url()</a>, <a class="el" href="include_2network_8php.html#a9129fd55e7fc175b4ea9a195cccc16bc">z_post_url()</a>, and <a class="el" href="zfinger_8php.html#a8139b83a22ef98869adc10aa224027a0">zfinger_init()</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a59717d02602a4babf2a54da8b33d93a5"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">z_get_temp_dir </td>
+ <td>(</td>
+ <td class="paramname"></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+</div>
+</div>
+<a class="anchor" id="a476c499e15caf75972fed134a8f23b2e"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">z_get_upload_dir </td>
+ <td>(</td>
+ <td class="paramname"></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
</div>
</div>
@@ -1427,7 +1758,11 @@ Variables</h2></td></tr>
</table>
</div><div class="memdoc">
-<p>Referenced by <a class="el" href="zot_8php.html#a703f528ade8382cf374e4119bd6f7859">allowed_public_recips()</a>, <a class="el" href="include_2apps_8php.html#a1b2e737f477a2e0d9d11ef14adc5aa66">app_render()</a>, <a class="el" href="include_2apps_8php.html#a15626f24069c18816f7cdaf4735f58f9">app_store()</a>, <a class="el" href="include_2apps_8php.html#aeab6a62d2f3dfaa86ed043a006305f46">app_update()</a>, <a class="el" href="appman_8php.html#a2979acbe47ffaecfa19b9eabfbfbde39">appman_post()</a>, <a class="el" href="security_8php.html#adc7bf51e3b8d67bd80e9348f9ab03733">authenticate_success()</a>, <a class="el" href="bbcode_8php.html#a851f5aafefe52474201b83f9fd65931f">bb_parse_crypt()</a>, <a class="el" href="bbcode_8php.html#a009f61aaf78771737ed0765c8463911b">bbcode()</a>, <a class="el" href="blocks_8php.html#a2531a8fd51db3cecb2eb20c002c66e12">blocks_content()</a>, <a class="el" href="text_8php.html#a85e3a4851c16674834010d8419a5d7ca">chanlink_cid()</a>, <a class="el" href="text_8php.html#a55ab893be57feda59c2a7ba1e58ff2d0">chanlink_hash()</a>, <a class="el" href="text_8php.html#a2e8d6c402603be3a1256a16605e09c2a">chanlink_url()</a>, <a class="el" href="channel_8php.html#a9c6a6179e0e626398ebecc6151905ef1">channel_content()</a>, <a class="el" href="Contact_8php.html#a186162051a5127069cc851d78740f205">channel_remove()</a>, <a class="el" href="mod_2chat_8php.html#a8b0b8bee6fef6477e8c64c5e951b1b4f">chat_content()</a>, <a class="el" href="mod_2chat_8php.html#a999d594745597c656c9760253ae297ad">chat_post()</a>, <a class="el" href="chatsvc_8php.html#a7032784215e1f6747cf385a6598770f9">chatsvc_content()</a>, <a class="el" href="boot_8php.html#a4c02d88e66852a01bd5a1feecb7c3ce3">check_config()</a>, <a class="el" href="connect_8php.html#a417ec27afe33f21a929667a665e32ee2">connect_post()</a>, <a class="el" href="connections_8php.html#aec2e457420fce3e3bf6a9f48e36df25c">connections_content()</a>, <a class="el" href="connections_8php.html#a1224058db8e3fb56463eb312f98e561d">connections_post()</a>, <a class="el" href="conversation_8php.html#affea1afb3f32ca41e966c8ddb4204d81">conversation()</a>, <a class="el" href="identity_8php.html#a345f4c943d84de502ec6e72d2c813945">create_identity()</a>, <a class="el" href="deliver_8php.html#a397afcb9afecf0c1816b0951189dd346">deliver_run()</a>, <a class="el" href="mod_2directory_8php.html#aac79396570d759da2efac24fcedf5b44">directory_content()</a>, <a class="el" href="dirprofile_8php.html#a3e1d30d3d93863ff5615f2df4ac7f052">dirprofile_init()</a>, <a class="el" href="display_8php.html#a37137c98d47bf3306f4c2bb9f5b60de0">display_content()</a>, <a class="el" href="event_8php.html#a7378e839ac3de9d55579eb3ec48eaf92">event_store_item()</a>, <a class="el" href="externals_8php.html#a4df44079e6f915286088b7a0d44db926">externals_run()</a>, <a class="el" href="filestorage_8php.html#a61bb1be78472555df4ce619f51014040">filestorage_content()</a>, <a class="el" href="dir__fns_8php.html#a8c15aa69da12f2d3476b9e93b82b337d">find_upstream_directory()</a>, <a class="el" href="mod_2follow_8php.html#a171f5b19f50d7738adc3b2e96ec6018a">follow_init()</a>, <a class="el" href="text_8php.html#a3054189cff173977f4216c9a3dd29e1b">format_categories()</a>, <a class="el" href="text_8php.html#a4e4d42b0a805148d9f9a92bcac89bf91">format_filer()</a>, <a class="el" href="include_2attach_8php.html#a1d72ef7cb940f6868e3e2a841cadfe8f">get_parent_cloudpath()</a>, <a class="el" href="classRedBrowser.html#a87529b4988a7777b49616f5c0a1c55d3">RedBrowser\getAssetUrl()</a>, <a class="el" href="mod_2group_8php.html#aed1f009b1221348021bb34761160ef35">group_post()</a>, <a class="el" href="item_8php.html#aa22feef4de326e1d7078dedd892e615c">handle_tag()</a>, <a class="el" href="classApp.html#af17df107f2216ddf5ad2a7e0f2ba2166">App\head_get_icon()</a>, <a class="el" href="boot_8php.html#a24a7a70afedd5d85fe0eadc85afa9f77">head_get_icon()</a>, <a class="el" href="home_8php.html#ac4642c38b6f23a8d065dd4a75c620bde">home_init()</a>, <a class="el" href="hostxrd_8php.html#aa37ffc8e7900bc76c4828bd25916db92">hostxrd_init()</a>, <a class="el" href="import_8php.html#af17fef0410518f7eac205d0ea416eaa2">import_post()</a>, <a class="el" href="zot_8php.html#a528e97ca5d69c3b7f35c5d954afde315">import_xchan()</a>, <a class="el" href="invite_8php.html#a244385b28cfd021d308715f01158bfd9">invite_content()</a>, <a class="el" href="item_8php.html#a693cd09805755ab85bbb5ecae69a48c3">item_post()</a>, <a class="el" href="items_8php.html#a2541e6861a56d145c9281877cc501615">item_store()</a>, <a class="el" href="layouts_8php.html#a6e0193759ad9eef76d3df2db24237b50">layouts_content()</a>, <a class="el" href="like_8php.html#a9d7dd268f21c21e9d29dd2aca2dd9538">like_content()</a>, <a class="el" href="login_8php.html#a1d69ca88eb9005a7026e128b9a645904">login_content()</a>, <a class="el" href="lostpass_8php.html#a0314d94e48c789b1b3a201d740c9eab3">lostpass_content()</a>, <a class="el" href="lostpass_8php.html#a8ed35ba71a4404eaf4903da61d0321cc">lostpass_post()</a>, <a class="el" href="magic_8php.html#acea2cc792849ca2d71d4b689f66518bf">magic_init()</a>, <a class="el" href="text_8php.html#a24d441d30df4b8e6bf6780bf62a5e2c6">magiclink_url()</a>, <a class="el" href="mail_8php.html#acfc2cc0bf4e0b178207758384977f25a">mail_post()</a>, <a class="el" href="manage_8php.html#a2bca247b5296827638959138367db4f5">manage_content()</a>, <a class="el" href="mod_2menu_8php.html#a6fed23af14d71a78a4153c8363a685cf">menu_content()</a>, <a class="el" href="mod_2menu_8php.html#aaa491ef173868fe002aece4632bcf393">menu_post()</a>, <a class="el" href="mitem_8php.html#a7a31b702ecad18eeb6a38b243ff0037e">mitem_content()</a>, <a class="el" href="mitem_8php.html#a6ee694cca4b551a20d7c7a94b5243ec1">mitem_post()</a>, <a class="el" href="mood_8php.html#a7ae136dd7476865b4828136175db5022">mood_init()</a>, <a class="el" href="nav_8php.html#a43be0df73b90647ea70947ce004e231e">nav()</a>, <a class="el" href="acl_8php.html#a57dceff370d4a0e7ae673d50fbfda61f">navbar_complete()</a>, <a class="el" href="mod_2network_8php.html#a43f2f29b90c5e29072c561934bc8f8b4">network_content()</a>, <a class="el" href="new__channel_8php.html#a180b0646957db8290482f02454ad7f23">new_channel_post()</a>, <a class="el" href="enotify_8php.html#a3e9a9355b243777c488d2a9883908dfc">notification()</a>, <a class="el" href="notifications_8php.html#a5baffec7b2e625c9f9cefbc097550d33">notifications_post()</a>, <a class="el" href="notifier_8php.html#a568c502f626cff95e344c0748938b85d">notifier_run()</a>, <a class="el" href="openid_8php.html#a9a13827dbcf61ae4e45f0b6b33a88f43">openid_content()</a>, <a class="el" href="page__widgets_8php.html#a39d547771c5f12a17c097436c82f0fa2">pagelist_widget()</a>, <a class="el" href="include_2apps_8php.html#a32fe4ed9666228fd4b67dc487cc57a83">parse_app_description()</a>, <a class="el" href="pdledit_8php.html#a81da3c955d0e3db55d148a31483104c7">pdledit_post()</a>, <a class="el" href="include_2photos_8php.html#a6c40ef58aefef705a5adc84a40e97109">photo_upload()</a>, <a class="el" href="include_2photos_8php.html#af24c6aeed28ecc31ec39e7d9a1804979">photos_album_widget()</a>, <a class="el" href="include_2photos_8php.html#aedccaf18282b26899d9549c29bd9d1b9">photos_albums_list()</a>, <a class="el" href="include_2photos_8php.html#ad648c0c5544fe9263409b6f6e57c6274">photos_create_item()</a>, <a class="el" href="include_2photos_8php.html#aa27b9e435dcc34e1009f56dc02c7ca51">photos_list_photos()</a>, <a class="el" href="items_8php.html#a410f9c743877c125ca06312373346903">post_activity_item()</a>, <a class="el" href="post_8php.html#af4b48181ce773ef0cdfc972441445c34">post_init()</a>, <a class="el" href="post_8php.html#af59e6a1dc22d19d9257b01cd7ccedb75">post_post()</a>, <a class="el" href="activities_8php.html#a80134e807719b3c54aba971958d2e132">profile_activity()</a>, <a class="el" href="identity_8php.html#a432259b2cf5b6f59be53e71db9f2c7dc">profile_sidebar()</a>, <a class="el" href="zot_8php.html#a083aec6c900d244e1bfc1406f9461465">public_recips()</a>, <a class="el" href="pubsites_8php.html#af614e279aab54065345bda6b03eafdf0">pubsites_content()</a>, <a class="el" href="rbmark_8php.html#a43fec4960b50926251574762cc491f76">rbmark_content()</a>, <a class="el" href="rbmark_8php.html#ac5a66aa8599fa5dc702bae396d8d1f8c">rbmark_post()</a>, <a class="el" href="register_8php.html#a51731dcc1917c58a790eb1c0f6132271">register_post()</a>, <a class="el" href="removeme_8php.html#a065a589caa2aa84c60f7073a28f0ad9c">removeme_content()</a>, <a class="el" href="rmagic_8php.html#a95455edd43f1bff39446a57388cdde16">rmagic_init()</a>, <a class="el" href="rmagic_8php.html#a869de069d081b3c4e98b957d06bbf08f">rmagic_post()</a>, <a class="el" href="rpost_8php.html#a8190354d789000806d9879aea276728f">rpost_content()</a>, <a class="el" href="plugin_8php.html#a0e8c2ea50bfdbc39e17ccccaea21ddc3">script_path()</a>, <a class="el" href="search_8php.html#ab2568591359edde5b483a6cd9a24b2cc">search_content()</a>, <a class="el" href="text_8php.html#aae91e4d2a2c6f7a9daccd2c186ae3447">searchbox()</a>, <a class="el" href="account_8php.html#a014de2d5d5c9785de5bf547a485822fa">send_reg_approval_email()</a>, <a class="el" href="account_8php.html#aa9c29c497c17d8f9344dce8631ad8761">send_verification_email()</a>, <a class="el" href="setup_8php.html#a88247384a96e14516f474d7af6a465c1">setup_content()</a>, <a class="el" href="setup_8php.html#a13cf286774149a0a7bd8adb8179cec75">setup_post()</a>, <a class="el" href="siteinfo_8php.html#a70c09bfb6dd1c86a125a35f62ed53656">siteinfo_content()</a>, <a class="el" href="siteinfo_8php.html#a3efbd0bd6564af19ec0a9ce0294e59d0">siteinfo_init()</a>, <a class="el" href="sources_8php.html#ac442ccef080ab95772d8929fcafcb4b7">sources_content()</a>, <a class="el" href="sources_8php.html#ac73298ff162ce7b2de8dcaf3d3305b1e">sources_post()</a>, <a class="el" href="text_8php.html#a33bdb5d4bfff2ede7caf61a98ac0a2e9">sslify()</a>, <a class="el" href="dir__fns_8php.html#aa666e7df6ca8c332f4081c9b66b4bdf6">sync_directories()</a>, <a class="el" href="tagger_8php.html#a0e4a3eb177d1684553c547503d67161c">tagger_content()</a>, <a class="el" href="text_8php.html#af9c9ac3f74c82dc60acfa404d0e9dc53">theme_attachments()</a>, <a class="el" href="thing_8php.html#a8be23b1d475ec3d9291999221c674c80">thing_init()</a>, <a class="el" href="toggle__safesearch_8php.html#a23d5cfb2727a266e44993ffbf5595a79">toggle_safesearch_init()</a>, <a class="el" href="socgraph_8php.html#a790690bb1a1d02483fe31632a160144d">update_suggestions()</a>, <a class="el" href="account_8php.html#ac5c570a2d46446bad4dd2501e9c5a4b1">user_allow()</a>, <a class="el" href="Contact_8php.html#a6348a532c9d26cd1c9afbc9aa6aa8960">vcard_from_xchan()</a>, <a class="el" href="account_8php.html#acd6b8d2124ba5ea4f4794d2c58ae8bf5">verify_email_address()</a>, <a class="el" href="webpages_8php.html#af3b7397d4abc153e3d2147740ee1a41d">webpages_content()</a>, <a class="el" href="wfinger_8php.html#ae21e50c8d0a5f3c9be9f43a4e519acd3">wfinger_init()</a>, <a class="el" href="widgets_8php.html#a7b1e357b5a2027718470b77ec921fc65">widget_archive()</a>, <a class="el" href="widgets_8php.html#a47c72aac42058ea086c9ef8651c259da">widget_chatroom_list()</a>, <a class="el" href="widgets_8php.html#a08035db02ff6a23260146b4c64153422">widget_dirtags()</a>, <a class="el" href="widgets_8php.html#a5ab3b64496e02cab56429978ad55f1c0">widget_filer()</a>, <a class="el" href="widgets_8php.html#a94203eb9bcd63cbdecbbcb15163598d8">widget_savedsearch()</a>, <a class="el" href="widgets_8php.html#a0d404276fedc59f5038cf5c085028326">widget_suggestions()</a>, <a class="el" href="xref_8php.html#a9bee399213b8de8226b0d60834307473">xref_init()</a>, <a class="el" href="zfinger_8php.html#a8139b83a22ef98869adc10aa224027a0">zfinger_init()</a>, <a class="el" href="identity_8php.html#a680fbafc2db023c5b1309e0180e81315">zid_init()</a>, <a class="el" href="zot_8php.html#a3862b3161b2c8557dc1a95020179bd81">zot_build_packet()</a>, <a class="el" href="zot_8php.html#a61cdc1ec843663c423ed2d8160ae5aea">zot_fetch()</a>, <a class="el" href="zot_8php.html#ab22d67660702056bf3f4696dcebf5ce7">zot_new_uid()</a>, and <a class="el" href="zot_8php.html#a7ac30ff51274bf0b6d3eade37972145c">zot_refresh()</a>.</p>
+<p>Returns the baseurl. </p>
+<dl class="section see"><dt>See Also</dt><dd><a class="el" href="classApp.html#a604d659d6977a99de42a160343e5289a">App::get_baseurl()</a></dd></dl>
+<dl class="section return"><dt>Returns</dt><dd>string </dd></dl>
+
+<p>Referenced by <a class="el" href="admin_8php.html#afef415e4011607fbb665610441595015">admin_content()</a>, <a class="el" href="admin_8php.html#a3deba594ca1e11694eac1de0b724ef0a">admin_page_profs()</a>, <a class="el" href="admin_8php.html#a278289bc6d45f6f2a272a7ab6a1d1057">admin_page_profs_post()</a>, <a class="el" href="zot_8php.html#a703f528ade8382cf374e4119bd6f7859">allowed_public_recips()</a>, <a class="el" href="include_2apps_8php.html#a1b2e737f477a2e0d9d11ef14adc5aa66">app_render()</a>, <a class="el" href="include_2apps_8php.html#a15626f24069c18816f7cdaf4735f58f9">app_store()</a>, <a class="el" href="include_2apps_8php.html#aeab6a62d2f3dfaa86ed043a006305f46">app_update()</a>, <a class="el" href="appman_8php.html#a2979acbe47ffaecfa19b9eabfbfbde39">appman_post()</a>, <a class="el" href="security_8php.html#adc7bf51e3b8d67bd80e9348f9ab03733">authenticate_success()</a>, <a class="el" href="bbcode_8php.html#a851f5aafefe52474201b83f9fd65931f">bb_parse_crypt()</a>, <a class="el" href="bbcode_8php.html#a009f61aaf78771737ed0765c8463911b">bbcode()</a>, <a class="el" href="blocks_8php.html#a2531a8fd51db3cecb2eb20c002c66e12">blocks_content()</a>, <a class="el" href="text_8php.html#a85e3a4851c16674834010d8419a5d7ca">chanlink_cid()</a>, <a class="el" href="text_8php.html#a55ab893be57feda59c2a7ba1e58ff2d0">chanlink_hash()</a>, <a class="el" href="text_8php.html#a2e8d6c402603be3a1256a16605e09c2a">chanlink_url()</a>, <a class="el" href="channel_8php.html#a9c6a6179e0e626398ebecc6151905ef1">channel_content()</a>, <a class="el" href="Contact_8php.html#a4e8af0f0525161da74583c04b8b03097">channel_remove()</a>, <a class="el" href="mod_2chat_8php.html#a8b0b8bee6fef6477e8c64c5e951b1b4f">chat_content()</a>, <a class="el" href="mod_2chat_8php.html#a999d594745597c656c9760253ae297ad">chat_post()</a>, <a class="el" href="chatsvc_8php.html#a7032784215e1f6747cf385a6598770f9">chatsvc_content()</a>, <a class="el" href="boot_8php.html#a4c02d88e66852a01bd5a1feecb7c3ce3">check_config()</a>, <a class="el" href="connect_8php.html#a417ec27afe33f21a929667a665e32ee2">connect_post()</a>, <a class="el" href="connections_8php.html#aec2e457420fce3e3bf6a9f48e36df25c">connections_content()</a>, <a class="el" href="connections_8php.html#a1224058db8e3fb56463eb312f98e561d">connections_post()</a>, <a class="el" href="conversation_8php.html#affea1afb3f32ca41e966c8ddb4204d81">conversation()</a>, <a class="el" href="identity_8php.html#a345f4c943d84de502ec6e72d2c813945">create_identity()</a>, <a class="el" href="deliver_8php.html#a397afcb9afecf0c1816b0951189dd346">deliver_run()</a>, <a class="el" href="diaspora_8php.html#a0fb2abe304aae19efc040a5e6b917829">diaspora_comment()</a>, <a class="el" href="diaspora_8php.html#a5d57518545baa31cf8a85a937a267681">diaspora_like()</a>, <a class="el" href="diaspora_8php.html#a20b968d64ef26afe5cb0cc75a7570a31">diaspora_post()</a>, <a class="el" href="diaspora_8php.html#ac1ab782a34552a7c6b4dc961754ed598">diaspora_request()</a>, <a class="el" href="diaspora_8php.html#a2bf43f6b5890897f425ef4325d34b007">diaspora_reshare()</a>, <a class="el" href="mod_2directory_8php.html#aac79396570d759da2efac24fcedf5b44">directory_content()</a>, <a class="el" href="include_2network_8php.html#a5176176ddc1906d91f186df6fbd87b48">discover_by_url()</a>, <a class="el" href="include_2network_8php.html#a63e62946e194928eb17c5a9f2bbef0fe">discover_by_webbie()</a>, <a class="el" href="display_8php.html#a37137c98d47bf3306f4c2bb9f5b60de0">display_content()</a>, <a class="el" href="event_8php.html#a7378e839ac3de9d55579eb3ec48eaf92">event_store_item()</a>, <a class="el" href="externals_8php.html#a4df44079e6f915286088b7a0d44db926">externals_run()</a>, <a class="el" href="filestorage_8php.html#a61bb1be78472555df4ce619f51014040">filestorage_content()</a>, <a class="el" href="dir__fns_8php.html#a8c15aa69da12f2d3476b9e93b82b337d">find_upstream_directory()</a>, <a class="el" href="mod_2follow_8php.html#a171f5b19f50d7738adc3b2e96ec6018a">follow_init()</a>, <a class="el" href="text_8php.html#a3054189cff173977f4216c9a3dd29e1b">format_categories()</a>, <a class="el" href="text_8php.html#a4e4d42b0a805148d9f9a92bcac89bf91">format_filer()</a>, <a class="el" href="include_2attach_8php.html#a1d72ef7cb940f6868e3e2a841cadfe8f">get_parent_cloudpath()</a>, <a class="el" href="classItem.html#ad5dcbe0b94cb2d5719bc5b6bd8ad60c8">Item\get_template_data()</a>, <a class="el" href="classRedMatrix_1_1RedDAV_1_1RedBrowser.html#acaa792c08d24e9dc2919759e92ba037d">RedMatrix\RedDAV\RedBrowser\getAssetUrl()</a>, <a class="el" href="mod_2group_8php.html#aed1f009b1221348021bb34761160ef35">group_post()</a>, <a class="el" href="text_8php.html#aa22feef4de326e1d7078dedd892e615c">handle_tag()</a>, <a class="el" href="classApp.html#af17df107f2216ddf5ad2a7e0f2ba2166">App\head_get_icon()</a>, <a class="el" href="boot_8php.html#a24a7a70afedd5d85fe0eadc85afa9f77">head_get_icon()</a>, <a class="el" href="home_8php.html#a6e3dbf78f4ed74ab2577de221190b33f">home_content()</a>, <a class="el" href="home_8php.html#ac4642c38b6f23a8d065dd4a75c620bde">home_init()</a>, <a class="el" href="hostxrd_8php.html#aa37ffc8e7900bc76c4828bd25916db92">hostxrd_init()</a>, <a class="el" href="import_8php.html#af17fef0410518f7eac205d0ea416eaa2">import_post()</a>, <a class="el" href="zot_8php.html#a528e97ca5d69c3b7f35c5d954afde315">import_xchan()</a>, <a class="el" href="invite_8php.html#a244385b28cfd021d308715f01158bfd9">invite_content()</a>, <a class="el" href="conversation_8php.html#aacbb12d372d5e9c3ab0735b4aea48fb3">item_photo_menu()</a>, <a class="el" href="item_8php.html#a693cd09805755ab85bbb5ecae69a48c3">item_post()</a>, <a class="el" href="items_8php.html#a2541e6861a56d145c9281877cc501615">item_store()</a>, <a class="el" href="layouts_8php.html#a6e0193759ad9eef76d3df2db24237b50">layouts_content()</a>, <a class="el" href="like_8php.html#a9d7dd268f21c21e9d29dd2aca2dd9538">like_content()</a>, <a class="el" href="locs_8php.html#a6b43654592919ac863d67a1f787a69b9">locs_post()</a>, <a class="el" href="login_8php.html#a1d69ca88eb9005a7026e128b9a645904">login_content()</a>, <a class="el" href="lostpass_8php.html#a0314d94e48c789b1b3a201d740c9eab3">lostpass_content()</a>, <a class="el" href="lostpass_8php.html#a8ed35ba71a4404eaf4903da61d0321cc">lostpass_post()</a>, <a class="el" href="magic_8php.html#acea2cc792849ca2d71d4b689f66518bf">magic_init()</a>, <a class="el" href="text_8php.html#a24d441d30df4b8e6bf6780bf62a5e2c6">magiclink_url()</a>, <a class="el" href="mail_8php.html#acfc2cc0bf4e0b178207758384977f25a">mail_post()</a>, <a class="el" href="manage_8php.html#a2bca247b5296827638959138367db4f5">manage_content()</a>, <a class="el" href="mod_2menu_8php.html#a6fed23af14d71a78a4153c8363a685cf">menu_content()</a>, <a class="el" href="mod_2menu_8php.html#aaa491ef173868fe002aece4632bcf393">menu_post()</a>, <a class="el" href="mitem_8php.html#a7a31b702ecad18eeb6a38b243ff0037e">mitem_content()</a>, <a class="el" href="mitem_8php.html#a6ee694cca4b551a20d7c7a94b5243ec1">mitem_post()</a>, <a class="el" href="mood_8php.html#a7ae136dd7476865b4828136175db5022">mood_init()</a>, <a class="el" href="nav_8php.html#a43be0df73b90647ea70947ce004e231e">nav()</a>, <a class="el" href="acl_8php.html#a57dceff370d4a0e7ae673d50fbfda61f">navbar_complete()</a>, <a class="el" href="mod_2network_8php.html#a43f2f29b90c5e29072c561934bc8f8b4">network_content()</a>, <a class="el" href="new__channel_8php.html#a180b0646957db8290482f02454ad7f23">new_channel_post()</a>, <a class="el" href="enotify_8php.html#a3e9a9355b243777c488d2a9883908dfc">notification()</a>, <a class="el" href="notifications_8php.html#a5baffec7b2e625c9f9cefbc097550d33">notifications_post()</a>, <a class="el" href="notifier_8php.html#a568c502f626cff95e344c0748938b85d">notifier_run()</a>, <a class="el" href="include_2oembed_8php.html#a9e57f3e36a0a0a47e6db79544b701d9a">oembed_iframe()</a>, <a class="el" href="openid_8php.html#a9a13827dbcf61ae4e45f0b6b33a88f43">openid_content()</a>, <a class="el" href="page__widgets_8php.html#a39d547771c5f12a17c097436c82f0fa2">pagelist_widget()</a>, <a class="el" href="include_2apps_8php.html#a32fe4ed9666228fd4b67dc487cc57a83">parse_app_description()</a>, <a class="el" href="pdledit_8php.html#a81da3c955d0e3db55d148a31483104c7">pdledit_post()</a>, <a class="el" href="include_2photos_8php.html#a6c40ef58aefef705a5adc84a40e97109">photo_upload()</a>, <a class="el" href="include_2photos_8php.html#af24c6aeed28ecc31ec39e7d9a1804979">photos_album_widget()</a>, <a class="el" href="include_2photos_8php.html#aedccaf18282b26899d9549c29bd9d1b9">photos_albums_list()</a>, <a class="el" href="include_2photos_8php.html#ad648c0c5544fe9263409b6f6e57c6274">photos_create_item()</a>, <a class="el" href="include_2photos_8php.html#aa27b9e435dcc34e1009f56dc02c7ca51">photos_list_photos()</a>, <a class="el" href="poll_8php.html#a3314c26bd2ac0ed831cebf3315cd3263">poll_content()</a>, <a class="el" href="items_8php.html#a410f9c743877c125ca06312373346903">post_activity_item()</a>, <a class="el" href="post_8php.html#af4b48181ce773ef0cdfc972441445c34">post_init()</a>, <a class="el" href="post_8php.html#af59e6a1dc22d19d9257b01cd7ccedb75">post_post()</a>, <a class="el" href="activities_8php.html#a80134e807719b3c54aba971958d2e132">profile_activity()</a>, <a class="el" href="identity_8php.html#a432259b2cf5b6f59be53e71db9f2c7dc">profile_sidebar()</a>, <a class="el" href="zot_8php.html#a083aec6c900d244e1bfc1406f9461465">public_recips()</a>, <a class="el" href="pubsites_8php.html#af614e279aab54065345bda6b03eafdf0">pubsites_content()</a>, <a class="el" href="rbmark_8php.html#a43fec4960b50926251574762cc491f76">rbmark_content()</a>, <a class="el" href="rbmark_8php.html#ac5a66aa8599fa5dc702bae396d8d1f8c">rbmark_post()</a>, <a class="el" href="refimport_8php.html#a53434bc19e6264db89e18d92ddc09860">reflect_article_callback()</a>, <a class="el" href="refimport_8php.html#a01a29630fa5e1ce6cd5e1fd75280747c">reflect_comment_store()</a>, <a class="el" href="refimport_8php.html#ae9c56f779d1e0ac7bcb2a460129e7ae5">reflect_photo_callback()</a>, <a class="el" href="register_8php.html#a51731dcc1917c58a790eb1c0f6132271">register_post()</a>, <a class="el" href="hubloc_8php.html#a84c79b7be352f62d12fe4fa2c80fc6ea">remove_obsolete_hublocs()</a>, <a class="el" href="removeaccount_8php.html#a516e7380b9e5796054aa8245f3509695">removeaccount_content()</a>, <a class="el" href="removeme_8php.html#a065a589caa2aa84c60f7073a28f0ad9c">removeme_content()</a>, <a class="el" href="rmagic_8php.html#a95455edd43f1bff39446a57388cdde16">rmagic_init()</a>, <a class="el" href="rmagic_8php.html#a869de069d081b3c4e98b957d06bbf08f">rmagic_post()</a>, <a class="el" href="rpost_8php.html#a8190354d789000806d9879aea276728f">rpost_content()</a>, <a class="el" href="plugin_8php.html#a0e8c2ea50bfdbc39e17ccccaea21ddc3">script_path()</a>, <a class="el" href="search_8php.html#ab2568591359edde5b483a6cd9a24b2cc">search_content()</a>, <a class="el" href="text_8php.html#aae91e4d2a2c6f7a9daccd2c186ae3447">searchbox()</a>, <a class="el" href="account_8php.html#a014de2d5d5c9785de5bf547a485822fa">send_reg_approval_email()</a>, <a class="el" href="account_8php.html#aa9c29c497c17d8f9344dce8631ad8761">send_verification_email()</a>, <a class="el" href="setup_8php.html#a88247384a96e14516f474d7af6a465c1">setup_content()</a>, <a class="el" href="setup_8php.html#a13cf286774149a0a7bd8adb8179cec75">setup_post()</a>, <a class="el" href="siteinfo_8php.html#a70c09bfb6dd1c86a125a35f62ed53656">siteinfo_content()</a>, <a class="el" href="siteinfo_8php.html#a3efbd0bd6564af19ec0a9ce0294e59d0">siteinfo_init()</a>, <a class="el" href="sources_8php.html#ac442ccef080ab95772d8929fcafcb4b7">sources_content()</a>, <a class="el" href="sources_8php.html#ac73298ff162ce7b2de8dcaf3d3305b1e">sources_post()</a>, <a class="el" href="text_8php.html#a33bdb5d4bfff2ede7caf61a98ac0a2e9">sslify()</a>, <a class="el" href="dir__fns_8php.html#aa666e7df6ca8c332f4081c9b66b4bdf6">sync_directories()</a>, <a class="el" href="tagger_8php.html#a0e4a3eb177d1684553c547503d67161c">tagger_content()</a>, <a class="el" href="text_8php.html#af9c9ac3f74c82dc60acfa404d0e9dc53">theme_attachments()</a>, <a class="el" href="thing_8php.html#a8be23b1d475ec3d9291999221c674c80">thing_init()</a>, <a class="el" href="toggle__safesearch_8php.html#a23d5cfb2727a266e44993ffbf5595a79">toggle_safesearch_init()</a>, <a class="el" href="socgraph_8php.html#a790690bb1a1d02483fe31632a160144d">update_suggestions()</a>, <a class="el" href="account_8php.html#ac5c570a2d46446bad4dd2501e9c5a4b1">user_allow()</a>, <a class="el" href="Contact_8php.html#a6348a532c9d26cd1c9afbc9aa6aa8960">vcard_from_xchan()</a>, <a class="el" href="account_8php.html#acd6b8d2124ba5ea4f4794d2c58ae8bf5">verify_email_address()</a>, <a class="el" href="webpages_8php.html#af3b7397d4abc153e3d2147740ee1a41d">webpages_content()</a>, <a class="el" href="wfinger_8php.html#ae21e50c8d0a5f3c9be9f43a4e519acd3">wfinger_init()</a>, <a class="el" href="widgets_8php.html#a7b1e357b5a2027718470b77ec921fc65">widget_archive()</a>, <a class="el" href="widgets_8php.html#a47c72aac42058ea086c9ef8651c259da">widget_chatroom_list()</a>, <a class="el" href="widgets_8php.html#a08035db02ff6a23260146b4c64153422">widget_dirtags()</a>, <a class="el" href="widgets_8php.html#a5ab3b64496e02cab56429978ad55f1c0">widget_filer()</a>, <a class="el" href="widgets_8php.html#a94203eb9bcd63cbdecbbcb15163598d8">widget_savedsearch()</a>, <a class="el" href="widgets_8php.html#a0d404276fedc59f5038cf5c085028326">widget_suggestions()</a>, <a class="el" href="hubloc_8php.html#acb708dd197aae72a4858cf5ff4e3195b">xchan_store()</a>, <a class="el" href="xref_8php.html#a9bee399213b8de8226b0d60834307473">xref_init()</a>, <a class="el" href="zfinger_8php.html#a8139b83a22ef98869adc10aa224027a0">zfinger_init()</a>, <a class="el" href="identity_8php.html#a680fbafc2db023c5b1309e0180e81315">zid_init()</a>, <a class="el" href="zot_8php.html#a084c581d534e7e3b759488b46602288f">zot_build_packet()</a>, <a class="el" href="zot_8php.html#a61cdc1ec843663c423ed2d8160ae5aea">zot_fetch()</a>, <a class="el" href="zot_8php.html#ab22d67660702056bf3f4696dcebf5ce7">zot_new_uid()</a>, and <a class="el" href="zot_8php.html#a7ac30ff51274bf0b6d3eade37972145c">zot_refresh()</a>.</p>
</div>
</div>
@@ -1445,10 +1780,9 @@ Variables</h2></td></tr>
<div class="line"> <span class="stringliteral">&#39;https://zothub.com&#39;</span>, </div>
<div class="line"> <span class="stringliteral">&#39;https://zotid.net&#39;</span>, </div>
<div class="line"> <span class="stringliteral">&#39;https://redmatrix.nl&#39;</span>, </div>
-<div class="line"> <span class="stringliteral">&#39;https://whogotzot.com&#39;</span>, </div>
-<div class="line"> <span class="stringliteral">&#39;https://red.mariovavti.com&#39;</span>,</div>
<div class="line"> <span class="stringliteral">&#39;https://red.zottel.red&#39;</span>,</div>
-<div class="line"> <span class="stringliteral">&#39;https://red.pixelbits.de&#39;</span></div>
+<div class="line"> <span class="stringliteral">&#39;https://red.pixelbits.de&#39;</span>,</div>
+<div class="line"> <span class="stringliteral">&#39;https://whogotzot.com&#39;</span></div>
<div class="line">)</div>
</div><!-- fragment -->
<p>Referenced by <a class="el" href="dir__fns_8php.html#a8c15aa69da12f2d3476b9e93b82b337d">find_upstream_directory()</a>.</p>
@@ -1465,7 +1799,7 @@ Variables</h2></td></tr>
</table>
</div><div class="memdoc">
-<p>Referenced by <a class="el" href="Contact_8php.html#a024919623a830e8703ac4f23496dd66c">abook_toggle_flag()</a>, <a class="el" href="acl_8php.html#ac6776dba871806ecdb5d1659bc2eb07a">acl_init()</a>, <a class="el" href="items_8php.html#a01e3cf44e082fa9bd06dcde5bf713d70">collect_recipients()</a>, <a class="el" href="connections_8php.html#aec2e457420fce3e3bf6a9f48e36df25c">connections_content()</a>, <a class="el" href="connedit_8php.html#a795acb3d9d841f55c255d7611681ab67">connedit_content()</a>, <a class="el" href="Contact_8php.html#a28e062c884331dbb5dfa713228c25ad6">contact_remove()</a>, and <a class="el" href="poller_8php.html#a5f12df3a4738124b6c039971e87e76da">poller_run()</a>.</p>
+<p>Referenced by <a class="el" href="Contact_8php.html#a024919623a830e8703ac4f23496dd66c">abook_toggle_flag()</a>, <a class="el" href="acl_8php.html#ac6776dba871806ecdb5d1659bc2eb07a">acl_init()</a>, <a class="el" href="items_8php.html#a772f0ae77ad77c8ab68ed918a3870946">collect_recipients()</a>, <a class="el" href="connections_8php.html#aec2e457420fce3e3bf6a9f48e36df25c">connections_content()</a>, <a class="el" href="connedit_8php.html#a795acb3d9d841f55c255d7611681ab67">connedit_content()</a>, <a class="el" href="text_8php.html#ad6432621d0fafcbcf3d3b9b49bef7784">contact_block()</a>, <a class="el" href="Contact_8php.html#a28e062c884331dbb5dfa713228c25ad6">contact_remove()</a>, <a class="el" href="mod_2group_8php.html#a07a64f6c65b0080d8190b3d9728a7a83">group_content()</a>, <a class="el" href="onepoll_8php.html#a72753b2fdec79b37c7f432035c91fb6d">onepoll_run()</a>, <a class="el" href="poller_8php.html#a5f12df3a4738124b6c039971e87e76da">poller_run()</a>, and <a class="el" href="viewconnections_8php.html#ab6c4d983e97b3a8a879567ff76507776">viewconnections_content()</a>.</p>
</div>
</div>
@@ -1479,7 +1813,21 @@ Variables</h2></td></tr>
</table>
</div><div class="memdoc">
-<p>Referenced by <a class="el" href="acl_8php.html#ac6776dba871806ecdb5d1659bc2eb07a">acl_init()</a>, <a class="el" href="channel_8php.html#a9c6a6179e0e626398ebecc6151905ef1">channel_content()</a>, <a class="el" href="connections_8php.html#aec2e457420fce3e3bf6a9f48e36df25c">connections_content()</a>, <a class="el" href="connedit_8php.html#a795acb3d9d841f55c255d7611681ab67">connedit_content()</a>, <a class="el" href="permissions_8php.html#aeca9b280f3dc3358c89976d81d690008">get_all_perms()</a>, <a class="el" href="mod_2group_8php.html#a07a64f6c65b0080d8190b3d9728a7a83">group_content()</a>, <a class="el" href="include_2group_8php.html#a5bd191d9692e6c34d48c0ede10810f09">group_get_members()</a>, <a class="el" href="items_8php.html#a756738301f2ed96be50232500677d58a">items_fetch()</a>, <a class="el" href="mod_2network_8php.html#a43f2f29b90c5e29072c561934bc8f8b4">network_content()</a>, and <a class="el" href="permissions_8php.html#a67ada9ed51e77885b6b0f6a28cee1835">perm_is_allowed()</a>.</p>
+<p>Referenced by <a class="el" href="acl_8php.html#ac6776dba871806ecdb5d1659bc2eb07a">acl_init()</a>, <a class="el" href="channel_8php.html#a9c6a6179e0e626398ebecc6151905ef1">channel_content()</a>, <a class="el" href="connections_8php.html#aec2e457420fce3e3bf6a9f48e36df25c">connections_content()</a>, <a class="el" href="connedit_8php.html#a795acb3d9d841f55c255d7611681ab67">connedit_content()</a>, <a class="el" href="permissions_8php.html#aeca9b280f3dc3358c89976d81d690008">get_all_perms()</a>, <a class="el" href="mod_2group_8php.html#a07a64f6c65b0080d8190b3d9728a7a83">group_content()</a>, <a class="el" href="include_2group_8php.html#a5bd191d9692e6c34d48c0ede10810f09">group_get_members()</a>, <a class="el" href="home_8php.html#a6e3dbf78f4ed74ab2577de221190b33f">home_content()</a>, <a class="el" href="items_8php.html#a756738301f2ed96be50232500677d58a">items_fetch()</a>, <a class="el" href="mod_2network_8php.html#a43f2f29b90c5e29072c561934bc8f8b4">network_content()</a>, <a class="el" href="onepoll_8php.html#a72753b2fdec79b37c7f432035c91fb6d">onepoll_run()</a>, and <a class="el" href="permissions_8php.html#a67ada9ed51e77885b6b0f6a28cee1835">perm_is_allowed()</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="ae0d9527117cd87dcba11986047ae336e"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">const ABOOK_FLAG_FEED 0x0100</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p>Referenced by <a class="el" href="items_8php.html#a87ac9e359591721a824ecd23bbb56296">check_item_source()</a>, <a class="el" href="import_8php.html#af17fef0410518f7eac205d0ea416eaa2">import_post()</a>, <a class="el" href="include_2follow_8php.html#ae387d4ae097c23d69f3247e7f08140c7">new_contact()</a>, <a class="el" href="onepoll_8php.html#a72753b2fdec79b37c7f432035c91fb6d">onepoll_run()</a>, <a class="el" href="poller_8php.html#a5f12df3a4738124b6c039971e87e76da">poller_run()</a>, and <a class="el" href="zot_8php.html#ac301c67864917c35922257950ae0f95c">process_channel_sync_delivery()</a>.</p>
</div>
</div>
@@ -1493,7 +1841,7 @@ Variables</h2></td></tr>
</table>
</div><div class="memdoc">
-<p>Referenced by <a class="el" href="connections_8php.html#aec2e457420fce3e3bf6a9f48e36df25c">connections_content()</a>, <a class="el" href="connedit_8php.html#a795acb3d9d841f55c255d7611681ab67">connedit_content()</a>, <a class="el" href="onepoll_8php.html#a72753b2fdec79b37c7f432035c91fb6d">onepoll_run()</a>, and <a class="el" href="poller_8php.html#a5f12df3a4738124b6c039971e87e76da">poller_run()</a>.</p>
+<p>Referenced by <a class="el" href="connections_8php.html#aec2e457420fce3e3bf6a9f48e36df25c">connections_content()</a>, <a class="el" href="connedit_8php.html#a795acb3d9d841f55c255d7611681ab67">connedit_content()</a>, <a class="el" href="connedit_8php.html#a234c48426b652bf4d37053f2af329ac5">connedit_post()</a>, <a class="el" href="text_8php.html#ad6432621d0fafcbcf3d3b9b49bef7784">contact_block()</a>, <a class="el" href="onepoll_8php.html#a72753b2fdec79b37c7f432035c91fb6d">onepoll_run()</a>, <a class="el" href="poller_8php.html#a5f12df3a4738124b6c039971e87e76da">poller_run()</a>, and <a class="el" href="viewconnections_8php.html#ab6c4d983e97b3a8a879567ff76507776">viewconnections_content()</a>.</p>
</div>
</div>
@@ -1507,7 +1855,7 @@ Variables</h2></td></tr>
</table>
</div><div class="memdoc">
-<p>Referenced by <a class="el" href="connections_8php.html#aec2e457420fce3e3bf6a9f48e36df25c">connections_content()</a>, <a class="el" href="connedit_8php.html#a795acb3d9d841f55c255d7611681ab67">connedit_content()</a>, <a class="el" href="permissions_8php.html#aeca9b280f3dc3358c89976d81d690008">get_all_perms()</a>, <a class="el" href="permissions_8php.html#a67ada9ed51e77885b6b0f6a28cee1835">perm_is_allowed()</a>, and <a class="el" href="ping_8php.html#a77217b1b190b4c5d8770867b45f0c0a1">ping_init()</a>.</p>
+<p>Referenced by <a class="el" href="connections_8php.html#aec2e457420fce3e3bf6a9f48e36df25c">connections_content()</a>, <a class="el" href="connedit_8php.html#a795acb3d9d841f55c255d7611681ab67">connedit_content()</a>, <a class="el" href="permissions_8php.html#aeca9b280f3dc3358c89976d81d690008">get_all_perms()</a>, <a class="el" href="manage_8php.html#a2bca247b5296827638959138367db4f5">manage_content()</a>, <a class="el" href="onepoll_8php.html#a72753b2fdec79b37c7f432035c91fb6d">onepoll_run()</a>, <a class="el" href="permissions_8php.html#a67ada9ed51e77885b6b0f6a28cee1835">perm_is_allowed()</a>, <a class="el" href="ping_8php.html#a77217b1b190b4c5d8770867b45f0c0a1">ping_init()</a>, and <a class="el" href="poller_8php.html#a5f12df3a4738124b6c039971e87e76da">poller_run()</a>.</p>
</div>
</div>
@@ -1521,7 +1869,7 @@ Variables</h2></td></tr>
</table>
</div><div class="memdoc">
-<p>Referenced by <a class="el" href="acl_8php.html#ac6776dba871806ecdb5d1659bc2eb07a">acl_init()</a>, <a class="el" href="items_8php.html#a01e3cf44e082fa9bd06dcde5bf713d70">collect_recipients()</a>, <a class="el" href="connections_8php.html#aec2e457420fce3e3bf6a9f48e36df25c">connections_content()</a>, <a class="el" href="connections_8php.html#a1224058db8e3fb56463eb312f98e561d">connections_post()</a>, <a class="el" href="connedit_8php.html#a795acb3d9d841f55c255d7611681ab67">connedit_content()</a>, <a class="el" href="connedit_8php.html#a234c48426b652bf4d37053f2af329ac5">connedit_post()</a>, <a class="el" href="text_8php.html#ad6432621d0fafcbcf3d3b9b49bef7784">contact_block()</a>, <a class="el" href="permissions_8php.html#aeca9b280f3dc3358c89976d81d690008">get_all_perms()</a>, <a class="el" href="mod_2group_8php.html#a07a64f6c65b0080d8190b3d9728a7a83">group_content()</a>, <a class="el" href="include_2group_8php.html#a5bd191d9692e6c34d48c0ede10810f09">group_get_members()</a>, <a class="el" href="onepoll_8php.html#a72753b2fdec79b37c7f432035c91fb6d">onepoll_run()</a>, <a class="el" href="permissions_8php.html#a67ada9ed51e77885b6b0f6a28cee1835">perm_is_allowed()</a>, <a class="el" href="ping_8php.html#a77217b1b190b4c5d8770867b45f0c0a1">ping_init()</a>, <a class="el" href="poller_8php.html#a5f12df3a4738124b6c039971e87e76da">poller_run()</a>, <a class="el" href="zot_8php.html#a083aec6c900d244e1bfc1406f9461465">public_recips()</a>, <a class="el" href="viewconnections_8php.html#ab6c4d983e97b3a8a879567ff76507776">viewconnections_content()</a>, and <a class="el" href="zot_8php.html#a7ac30ff51274bf0b6d3eade37972145c">zot_refresh()</a>.</p>
+<p>Referenced by <a class="el" href="acl_8php.html#ac6776dba871806ecdb5d1659bc2eb07a">acl_init()</a>, <a class="el" href="items_8php.html#a772f0ae77ad77c8ab68ed918a3870946">collect_recipients()</a>, <a class="el" href="connections_8php.html#aec2e457420fce3e3bf6a9f48e36df25c">connections_content()</a>, <a class="el" href="connections_8php.html#a1224058db8e3fb56463eb312f98e561d">connections_post()</a>, <a class="el" href="connedit_8php.html#a795acb3d9d841f55c255d7611681ab67">connedit_content()</a>, <a class="el" href="connedit_8php.html#a234c48426b652bf4d37053f2af329ac5">connedit_post()</a>, <a class="el" href="text_8php.html#ad6432621d0fafcbcf3d3b9b49bef7784">contact_block()</a>, <a class="el" href="diaspora_8php.html#ac1ab782a34552a7c6b4dc961754ed598">diaspora_request()</a>, <a class="el" href="permissions_8php.html#aeca9b280f3dc3358c89976d81d690008">get_all_perms()</a>, <a class="el" href="mod_2group_8php.html#a07a64f6c65b0080d8190b3d9728a7a83">group_content()</a>, <a class="el" href="include_2group_8php.html#a5bd191d9692e6c34d48c0ede10810f09">group_get_members()</a>, <a class="el" href="manage_8php.html#a2bca247b5296827638959138367db4f5">manage_content()</a>, <a class="el" href="onepoll_8php.html#a72753b2fdec79b37c7f432035c91fb6d">onepoll_run()</a>, <a class="el" href="permissions_8php.html#a67ada9ed51e77885b6b0f6a28cee1835">perm_is_allowed()</a>, <a class="el" href="ping_8php.html#a77217b1b190b4c5d8770867b45f0c0a1">ping_init()</a>, <a class="el" href="poller_8php.html#a5f12df3a4738124b6c039971e87e76da">poller_run()</a>, <a class="el" href="zot_8php.html#a083aec6c900d244e1bfc1406f9461465">public_recips()</a>, <a class="el" href="viewconnections_8php.html#ab6c4d983e97b3a8a879567ff76507776">viewconnections_content()</a>, and <a class="el" href="zot_8php.html#a7ac30ff51274bf0b6d3eade37972145c">zot_refresh()</a>.</p>
</div>
</div>
@@ -1535,7 +1883,7 @@ Variables</h2></td></tr>
</table>
</div><div class="memdoc">
-<p>Referenced by <a class="el" href="Contact_8php.html#ae8803c330352cbf1e828eb7490edf47e">abook_connections()</a>, <a class="el" href="Contact_8php.html#ad5b02c2a962ee55b1b7ca6c159d6e4c5">abook_self()</a>, <a class="el" href="acl_8php.html#ac6776dba871806ecdb5d1659bc2eb07a">acl_init()</a>, <a class="el" href="classConversation.html#a8335cdd43f1836e3c255638e61a09e16">Conversation\add_thread()</a>, <a class="el" href="include_2api_8php.html#aa40bae797bcd9ccacffdce5a3b5a1afa">api_get_user()</a>, <a class="el" href="Contact_8php.html#a186162051a5127069cc851d78740f205">channel_remove()</a>, <a class="el" href="items_8php.html#a01e3cf44e082fa9bd06dcde5bf713d70">collect_recipients()</a>, <a class="el" href="connections_8php.html#aec2e457420fce3e3bf6a9f48e36df25c">connections_content()</a>, <a class="el" href="connections_8php.html#a1224058db8e3fb56463eb312f98e561d">connections_post()</a>, <a class="el" href="connedit_8php.html#a795acb3d9d841f55c255d7611681ab67">connedit_content()</a>, <a class="el" href="connedit_8php.html#a234c48426b652bf4d37053f2af329ac5">connedit_post()</a>, <a class="el" href="text_8php.html#ad6432621d0fafcbcf3d3b9b49bef7784">contact_block()</a>, <a class="el" href="Contact_8php.html#a28e062c884331dbb5dfa713228c25ad6">contact_remove()</a>, <a class="el" href="acl__selectors_8php.html#a9476997d2968a5794f3723878ed89c91">contact_select()</a>, <a class="el" href="contactgroup_8php.html#a18c7391b1b25debaf98c9dba639caab3">contactgroup_content()</a>, <a class="el" href="identity_8php.html#a345f4c943d84de502ec6e72d2c813945">create_identity()</a>, <a class="el" href="permissions_8php.html#aeca9b280f3dc3358c89976d81d690008">get_all_perms()</a>, <a class="el" href="item_8php.html#a693cd09805755ab85bbb5ecae69a48c3">item_post()</a>, <a class="el" href="boot_8php.html#a719c7f3972d5f9268f37a41c76cd4ef6">load_contact_links()</a>, <a class="el" href="include_2follow_8php.html#ae387d4ae097c23d69f3247e7f08140c7">new_contact()</a>, <a class="el" href="notifier_8php.html#a568c502f626cff95e344c0748938b85d">notifier_run()</a>, <a class="el" href="permissions_8php.html#a67ada9ed51e77885b6b0f6a28cee1835">perm_is_allowed()</a>, <a class="el" href="ping_8php.html#a77217b1b190b4c5d8770867b45f0c0a1">ping_init()</a>, <a class="el" href="poco_8php.html#a53def16f75e3d41f1d2bb7cfa4905498">poco_init()</a>, <a class="el" href="viewconnections_8php.html#ab6c4d983e97b3a8a879567ff76507776">viewconnections_content()</a>, <a class="el" href="widgets_8php.html#ad1bf7aa69e8d100d95faba17c7bc91cd">widget_follow()</a>, <a class="el" href="widgets_8php.html#aaa73bcf1702eaadd9dcd253502f55e01">widget_settings_menu()</a>, and <a class="el" href="zot_8php.html#a7ac30ff51274bf0b6d3eade37972145c">zot_refresh()</a>.</p>
+<p>Referenced by <a class="el" href="Contact_8php.html#ae8803c330352cbf1e828eb7490edf47e">abook_connections()</a>, <a class="el" href="Contact_8php.html#ad5b02c2a962ee55b1b7ca6c159d6e4c5">abook_self()</a>, <a class="el" href="acl_8php.html#ac6776dba871806ecdb5d1659bc2eb07a">acl_init()</a>, <a class="el" href="classConversation.html#a8335cdd43f1836e3c255638e61a09e16">Conversation\add_thread()</a>, <a class="el" href="include_2api_8php.html#aa40bae797bcd9ccacffdce5a3b5a1afa">api_get_user()</a>, <a class="el" href="Contact_8php.html#a4e8af0f0525161da74583c04b8b03097">channel_remove()</a>, <a class="el" href="items_8php.html#a772f0ae77ad77c8ab68ed918a3870946">collect_recipients()</a>, <a class="el" href="connections_8php.html#aec2e457420fce3e3bf6a9f48e36df25c">connections_content()</a>, <a class="el" href="connections_8php.html#a1224058db8e3fb56463eb312f98e561d">connections_post()</a>, <a class="el" href="connedit_8php.html#a795acb3d9d841f55c255d7611681ab67">connedit_content()</a>, <a class="el" href="connedit_8php.html#a234c48426b652bf4d37053f2af329ac5">connedit_post()</a>, <a class="el" href="text_8php.html#ad6432621d0fafcbcf3d3b9b49bef7784">contact_block()</a>, <a class="el" href="Contact_8php.html#a28e062c884331dbb5dfa713228c25ad6">contact_remove()</a>, <a class="el" href="acl__selectors_8php.html#a9476997d2968a5794f3723878ed89c91">contact_select()</a>, <a class="el" href="contactgroup_8php.html#a18c7391b1b25debaf98c9dba639caab3">contactgroup_content()</a>, <a class="el" href="identity_8php.html#a345f4c943d84de502ec6e72d2c813945">create_identity()</a>, <a class="el" href="permissions_8php.html#aeca9b280f3dc3358c89976d81d690008">get_all_perms()</a>, <a class="el" href="identity_8php.html#a293f416ce9050220b183e08ff5890216">get_channel_default_perms()</a>, <a class="el" href="conversation_8php.html#aacbb12d372d5e9c3ab0735b4aea48fb3">item_photo_menu()</a>, <a class="el" href="item_8php.html#a693cd09805755ab85bbb5ecae69a48c3">item_post()</a>, <a class="el" href="manage_8php.html#a2bca247b5296827638959138367db4f5">manage_content()</a>, <a class="el" href="include_2follow_8php.html#ae387d4ae097c23d69f3247e7f08140c7">new_contact()</a>, <a class="el" href="notifier_8php.html#a568c502f626cff95e344c0748938b85d">notifier_run()</a>, <a class="el" href="permissions_8php.html#a67ada9ed51e77885b6b0f6a28cee1835">perm_is_allowed()</a>, <a class="el" href="ping_8php.html#a77217b1b190b4c5d8770867b45f0c0a1">ping_init()</a>, <a class="el" href="poco_8php.html#a53def16f75e3d41f1d2bb7cfa4905498">poco_init()</a>, <a class="el" href="poller_8php.html#a5f12df3a4738124b6c039971e87e76da">poller_run()</a>, <a class="el" href="zot_8php.html#ac301c67864917c35922257950ae0f95c">process_channel_sync_delivery()</a>, <a class="el" href="settings_8php.html#aa7ee94d88ac088edb04ccf3a26de3586">settings_post()</a>, <a class="el" href="viewconnections_8php.html#ab6c4d983e97b3a8a879567ff76507776">viewconnections_content()</a>, <a class="el" href="widgets_8php.html#ad1bf7aa69e8d100d95faba17c7bc91cd">widget_follow()</a>, <a class="el" href="widgets_8php.html#aaa73bcf1702eaadd9dcd253502f55e01">widget_settings_menu()</a>, <a class="el" href="zfinger_8php.html#a8139b83a22ef98869adc10aa224027a0">zfinger_init()</a>, and <a class="el" href="zot_8php.html#a7ac30ff51274bf0b6d3eade37972145c">zot_refresh()</a>.</p>
</div>
</div>
@@ -1549,7 +1897,7 @@ Variables</h2></td></tr>
</table>
</div><div class="memdoc">
-<p>Referenced by <a class="el" href="connections_8php.html#aec2e457420fce3e3bf6a9f48e36df25c">connections_content()</a>, <a class="el" href="onepoll_8php.html#a72753b2fdec79b37c7f432035c91fb6d">onepoll_run()</a>, <a class="el" href="poller_8php.html#a5f12df3a4738124b6c039971e87e76da">poller_run()</a>, and <a class="el" href="zot_8php.html#a7ac30ff51274bf0b6d3eade37972145c">zot_refresh()</a>.</p>
+<p>Referenced by <a class="el" href="onepoll_8php.html#a72753b2fdec79b37c7f432035c91fb6d">onepoll_run()</a>, <a class="el" href="poller_8php.html#a5f12df3a4738124b6c039971e87e76da">poller_run()</a>, and <a class="el" href="zot_8php.html#a7ac30ff51274bf0b6d3eade37972145c">zot_refresh()</a>.</p>
</div>
</div>
@@ -1620,7 +1968,7 @@ Variables</h2></td></tr>
</table>
</div><div class="memdoc">
-<p>Referenced by <a class="el" href="admin_8php.html#a62f10f90c47686c9c3c37c4c03a108d2">admin_page_users()</a>, <a class="el" href="admin_8php.html#a5a696706a3869800e65fb365214241b7">admin_page_users_post()</a>, <a class="el" href="register_8php.html#a51731dcc1917c58a790eb1c0f6132271">register_post()</a>, <a class="el" href="account_8php.html#ac5c570a2d46446bad4dd2501e9c5a4b1">user_allow()</a>, and <a class="el" href="account_8php.html#ad07be417ac7eda939768804106ddea3d">user_approve()</a>.</p>
+<p>Referenced by <a class="el" href="auth_8php.html#a07bae0e623e2daa9ee2cd5a8aa294dee">account_verify_password()</a>, <a class="el" href="admin_8php.html#a62f10f90c47686c9c3c37c4c03a108d2">admin_page_users()</a>, <a class="el" href="admin_8php.html#a5a696706a3869800e65fb365214241b7">admin_page_users_post()</a>, <a class="el" href="register_8php.html#a51731dcc1917c58a790eb1c0f6132271">register_post()</a>, <a class="el" href="account_8php.html#ac5c570a2d46446bad4dd2501e9c5a4b1">user_allow()</a>, and <a class="el" href="account_8php.html#ad07be417ac7eda939768804106ddea3d">user_approve()</a>.</p>
</div>
</div>
@@ -1634,7 +1982,7 @@ Variables</h2></td></tr>
</table>
</div><div class="memdoc">
-<p>Referenced by <a class="el" href="account_8php.html#a0d183a3cb4c67a0f5e906811df7a1fc9">downgrade_accounts()</a>.</p>
+<p>Referenced by <a class="el" href="auth_8php.html#a07bae0e623e2daa9ee2cd5a8aa294dee">account_verify_password()</a>, and <a class="el" href="account_8php.html#a0d183a3cb4c67a0f5e906811df7a1fc9">downgrade_accounts()</a>.</p>
</div>
</div>
@@ -1649,7 +1997,7 @@ Variables</h2></td></tr>
</div><div class="memdoc">
<p>Account Flags </p>
-<p>Referenced by <a class="el" href="auth_8php.html#a07bae0e623e2daa9ee2cd5a8aa294dee">account_verify_password()</a>, <a class="el" href="account_8php.html#a141fe579c351c78209d425473f978eb5">create_account()</a>, <a class="el" href="onepoll_8php.html#a72753b2fdec79b37c7f432035c91fb6d">onepoll_run()</a>, <a class="el" href="openid_8php.html#a9a13827dbcf61ae4e45f0b6b33a88f43">openid_content()</a>, <a class="el" href="poller_8php.html#a5f12df3a4738124b6c039971e87e76da">poller_run()</a>, <a class="el" href="register_8php.html#a51731dcc1917c58a790eb1c0f6132271">register_post()</a>, and <a class="el" href="classRedBasicAuth.html#a8dfd9a0953f8884723b421b7c1acf79b">RedBasicAuth\validateUserPass()</a>.</p>
+<p>Referenced by <a class="el" href="auth_8php.html#a07bae0e623e2daa9ee2cd5a8aa294dee">account_verify_password()</a>, <a class="el" href="account_8php.html#a141fe579c351c78209d425473f978eb5">create_account()</a>, <a class="el" href="onepoll_8php.html#a72753b2fdec79b37c7f432035c91fb6d">onepoll_run()</a>, <a class="el" href="openid_8php.html#a9a13827dbcf61ae4e45f0b6b33a88f43">openid_content()</a>, <a class="el" href="poller_8php.html#a5f12df3a4738124b6c039971e87e76da">poller_run()</a>, <a class="el" href="register_8php.html#a51731dcc1917c58a790eb1c0f6132271">register_post()</a>, and <a class="el" href="classRedMatrix_1_1RedDAV_1_1RedBasicAuth.html#a6ece02655b780469e59e204c5979a624">RedMatrix\RedDAV\RedBasicAuth\validateUserPass()</a>.</p>
</div>
</div>
@@ -1663,7 +2011,7 @@ Variables</h2></td></tr>
</table>
</div><div class="memdoc">
-<p>Referenced by <a class="el" href="admin_8php.html#a62f10f90c47686c9c3c37c4c03a108d2">admin_page_users()</a>, <a class="el" href="ping_8php.html#a77217b1b190b4c5d8770867b45f0c0a1">ping_init()</a>, <a class="el" href="register_8php.html#a51731dcc1917c58a790eb1c0f6132271">register_post()</a>, <a class="el" href="account_8php.html#ac5c570a2d46446bad4dd2501e9c5a4b1">user_allow()</a>, and <a class="el" href="account_8php.html#ad07be417ac7eda939768804106ddea3d">user_approve()</a>.</p>
+<p>Referenced by <a class="el" href="auth_8php.html#a07bae0e623e2daa9ee2cd5a8aa294dee">account_verify_password()</a>, <a class="el" href="admin_8php.html#a62f10f90c47686c9c3c37c4c03a108d2">admin_page_users()</a>, <a class="el" href="ping_8php.html#a77217b1b190b4c5d8770867b45f0c0a1">ping_init()</a>, <a class="el" href="register_8php.html#a51731dcc1917c58a790eb1c0f6132271">register_post()</a>, <a class="el" href="account_8php.html#ac5c570a2d46446bad4dd2501e9c5a4b1">user_allow()</a>, and <a class="el" href="account_8php.html#ad07be417ac7eda939768804106ddea3d">user_approve()</a>.</p>
</div>
</div>
@@ -1677,6 +2025,8 @@ Variables</h2></td></tr>
</table>
</div><div class="memdoc">
+<p>Referenced by <a class="el" href="auth_8php.html#a07bae0e623e2daa9ee2cd5a8aa294dee">account_verify_password()</a>.</p>
+
</div>
</div>
<a class="anchor" id="ac8400313df2c831653f9036f71ebd86d"></a>
@@ -1689,7 +2039,7 @@ Variables</h2></td></tr>
</table>
</div><div class="memdoc">
-<p>Referenced by <a class="el" href="Contact_8php.html#a6e64de7db60b7243dce45fb6347636ff">account_remove()</a>, <a class="el" href="account_8php.html#a141fe579c351c78209d425473f978eb5">create_account()</a>, <a class="el" href="boot_8php.html#aa1e828bbbcba170265eb2668d8daf42e">is_site_admin()</a>, and <a class="el" href="account_8php.html#a014de2d5d5c9785de5bf547a485822fa">send_reg_approval_email()</a>.</p>
+<p>Referenced by <a class="el" href="Contact_8php.html#a5101d7eca5d6f387e5555f03fe249e33">account_remove()</a>, <a class="el" href="account_8php.html#a141fe579c351c78209d425473f978eb5">create_account()</a>, <a class="el" href="boot_8php.html#aa1e828bbbcba170265eb2668d8daf42e">is_site_admin()</a>, and <a class="el" href="account_8php.html#a014de2d5d5c9785de5bf547a485822fa">send_reg_approval_email()</a>.</p>
</div>
</div>
@@ -1704,7 +2054,7 @@ Variables</h2></td></tr>
</div><div class="memdoc">
<p>Account roles </p>
-<p>Referenced by <a class="el" href="item_8php.html#a693cd09805755ab85bbb5ecae69a48c3">item_post()</a>, <a class="el" href="text_8php.html#a1633412120f52bdce5f43e0a127d9293">mimetype_select()</a>, and <a class="el" href="text_8php.html#a324c58f37f6acdf9cd1922aa76077d9f">z_input_filter()</a>.</p>
+<p>Referenced by <a class="el" href="impel_8php.html#ab7db6fca43b42ea4332cb3e841b3cf7b">impel_init()</a>, <a class="el" href="item_8php.html#a693cd09805755ab85bbb5ecae69a48c3">item_post()</a>, <a class="el" href="text_8php.html#a1633412120f52bdce5f43e0a127d9293">mimetype_select()</a>, and <a class="el" href="text_8php.html#a324c58f37f6acdf9cd1922aa76077d9f">z_input_filter()</a>.</p>
</div>
</div>
@@ -1744,7 +2094,7 @@ Variables</h2></td></tr>
</table>
</div><div class="memdoc">
-<p>Referenced by <a class="el" href="auth_8php.html#a07bae0e623e2daa9ee2cd5a8aa294dee">account_verify_password()</a>, <a class="el" href="onepoll_8php.html#a72753b2fdec79b37c7f432035c91fb6d">onepoll_run()</a>, <a class="el" href="openid_8php.html#a9a13827dbcf61ae4e45f0b6b33a88f43">openid_content()</a>, <a class="el" href="poller_8php.html#a5f12df3a4738124b6c039971e87e76da">poller_run()</a>, <a class="el" href="register_8php.html#a51731dcc1917c58a790eb1c0f6132271">register_post()</a>, <a class="el" href="account_8php.html#ad07be417ac7eda939768804106ddea3d">user_approve()</a>, and <a class="el" href="classRedBasicAuth.html#a8dfd9a0953f8884723b421b7c1acf79b">RedBasicAuth\validateUserPass()</a>.</p>
+<p>Referenced by <a class="el" href="auth_8php.html#a07bae0e623e2daa9ee2cd5a8aa294dee">account_verify_password()</a>, <a class="el" href="onepoll_8php.html#a72753b2fdec79b37c7f432035c91fb6d">onepoll_run()</a>, <a class="el" href="openid_8php.html#a9a13827dbcf61ae4e45f0b6b33a88f43">openid_content()</a>, <a class="el" href="poller_8php.html#a5f12df3a4738124b6c039971e87e76da">poller_run()</a>, <a class="el" href="register_8php.html#a51731dcc1917c58a790eb1c0f6132271">register_post()</a>, <a class="el" href="account_8php.html#ad07be417ac7eda939768804106ddea3d">user_approve()</a>, and <a class="el" href="classRedMatrix_1_1RedDAV_1_1RedBasicAuth.html#a6ece02655b780469e59e204c5979a624">RedMatrix\RedDAV\RedBasicAuth\validateUserPass()</a>.</p>
</div>
</div>
@@ -1758,7 +2108,7 @@ Variables</h2></td></tr>
</table>
</div><div class="memdoc">
-<p>Referenced by <a class="el" href="classItem.html#a80dcd9d0f548c3ad550abe7e6981fb51">Item\add_child()</a>, <a class="el" href="classConversation.html#a8335cdd43f1836e3c255638e61a09e16">Conversation\add_thread()</a>, <a class="el" href="items_8php.html#a8794863cdf8ce1333040933d3a3f66bd">consume_feed()</a>, <a class="el" href="conversation_8php.html#affea1afb3f32ca41e966c8ddb4204d81">conversation()</a>, <a class="el" href="like_8php.html#a9d7dd268f21c21e9d29dd2aca2dd9538">like_content()</a>, <a class="el" href="conversation_8php.html#afe5b2f38d8b803edb0d7ec5fa2868db0">like_puller()</a>, <a class="el" href="conversation_8php.html#a9bd7f9fb6678736c581bcba3b17f471c">localize_item()</a>, and <a class="el" href="conversation_8php.html#a7eeaaf44506815576f3bd80053ef52c3">visible_activity()</a>.</p>
+<p>Referenced by <a class="el" href="classItem.html#a80dcd9d0f548c3ad550abe7e6981fb51">Item\add_child()</a>, <a class="el" href="classConversation.html#a8335cdd43f1836e3c255638e61a09e16">Conversation\add_thread()</a>, <a class="el" href="channel_8php.html#a9c6a6179e0e626398ebecc6151905ef1">channel_content()</a>, <a class="el" href="conversation_8php.html#affea1afb3f32ca41e966c8ddb4204d81">conversation()</a>, <a class="el" href="diaspora_8php.html#af4698b165766f83d89ec1ea964bc92cc">diaspora_send_followup()</a>, <a class="el" href="like_8php.html#a9d7dd268f21c21e9d29dd2aca2dd9538">like_content()</a>, <a class="el" href="conversation_8php.html#afe5b2f38d8b803edb0d7ec5fa2868db0">like_puller()</a>, <a class="el" href="conversation_8php.html#a9bd7f9fb6678736c581bcba3b17f471c">localize_item()</a>, <a class="el" href="mod_2network_8php.html#a43f2f29b90c5e29072c561934bc8f8b4">network_content()</a>, and <a class="el" href="conversation_8php.html#a7eeaaf44506815576f3bd80053ef52c3">visible_activity()</a>.</p>
</div>
</div>
@@ -1784,7 +2134,7 @@ Variables</h2></td></tr>
</table>
</div><div class="memdoc">
-<p>Referenced by <a class="el" href="items_8php.html#a8794863cdf8ce1333040933d3a3f66bd">consume_feed()</a>, and <a class="el" href="subthread_8php.html#a50368f3d825b77996030528e7fbfa3d3">subthread_content()</a>.</p>
+<p>Referenced by <a class="el" href="subthread_8php.html#a50368f3d825b77996030528e7fbfa3d3">subthread_content()</a>.</p>
</div>
</div>
@@ -1798,7 +2148,7 @@ Variables</h2></td></tr>
</table>
</div><div class="memdoc">
-<p>Referenced by <a class="el" href="conversation_8php.html#a9bd7f9fb6678736c581bcba3b17f471c">localize_item()</a>.</p>
+<p>Referenced by <a class="el" href="connedit_8php.html#a234c48426b652bf4d37053f2af329ac5">connedit_post()</a>, and <a class="el" href="conversation_8php.html#a9bd7f9fb6678736c581bcba3b17f471c">localize_item()</a>.</p>
</div>
</div>
@@ -1825,7 +2175,7 @@ Variables</h2></td></tr>
</div><div class="memdoc">
<p>activity stream defines </p>
-<p>Referenced by <a class="el" href="classItem.html#a80dcd9d0f548c3ad550abe7e6981fb51">Item\add_child()</a>, <a class="el" href="classConversation.html#a8335cdd43f1836e3c255638e61a09e16">Conversation\add_thread()</a>, <a class="el" href="identity_8php.html#aa870d2c1f558cfd52bef05bc124e8fa4">advanced_profile()</a>, <a class="el" href="items_8php.html#a8794863cdf8ce1333040933d3a3f66bd">consume_feed()</a>, <a class="el" href="conversation_8php.html#affea1afb3f32ca41e966c8ddb4204d81">conversation()</a>, <a class="el" href="like_8php.html#a9d7dd268f21c21e9d29dd2aca2dd9538">like_content()</a>, <a class="el" href="conversation_8php.html#afe5b2f38d8b803edb0d7ec5fa2868db0">like_puller()</a>, <a class="el" href="conversation_8php.html#a9bd7f9fb6678736c581bcba3b17f471c">localize_item()</a>, and <a class="el" href="conversation_8php.html#a7eeaaf44506815576f3bd80053ef52c3">visible_activity()</a>.</p>
+<p>Referenced by <a class="el" href="classItem.html#a80dcd9d0f548c3ad550abe7e6981fb51">Item\add_child()</a>, <a class="el" href="classConversation.html#a8335cdd43f1836e3c255638e61a09e16">Conversation\add_thread()</a>, <a class="el" href="identity_8php.html#aa870d2c1f558cfd52bef05bc124e8fa4">advanced_profile()</a>, <a class="el" href="channel_8php.html#a9c6a6179e0e626398ebecc6151905ef1">channel_content()</a>, <a class="el" href="conversation_8php.html#affea1afb3f32ca41e966c8ddb4204d81">conversation()</a>, <a class="el" href="diaspora_8php.html#a5d57518545baa31cf8a85a937a267681">diaspora_like()</a>, <a class="el" href="diaspora_8php.html#af4698b165766f83d89ec1ea964bc92cc">diaspora_send_followup()</a>, <a class="el" href="diaspora_8php.html#a0b3628a5e53332c3d3196b689fe2b94d">diaspora_send_relay()</a>, <a class="el" href="diaspora_8php.html#a1704748aa2384c73e43f10e71defd31a">diaspora_send_retraction()</a>, <a class="el" href="like_8php.html#a9d7dd268f21c21e9d29dd2aca2dd9538">like_content()</a>, <a class="el" href="conversation_8php.html#afe5b2f38d8b803edb0d7ec5fa2868db0">like_puller()</a>, <a class="el" href="conversation_8php.html#a9bd7f9fb6678736c581bcba3b17f471c">localize_item()</a>, <a class="el" href="mod_2network_8php.html#a43f2f29b90c5e29072c561934bc8f8b4">network_content()</a>, and <a class="el" href="conversation_8php.html#a7eeaaf44506815576f3bd80053ef52c3">visible_activity()</a>.</p>
</div>
</div>
@@ -1877,7 +2227,7 @@ Variables</h2></td></tr>
</table>
</div><div class="memdoc">
-<p>Referenced by <a class="el" href="items_8php.html#a8794863cdf8ce1333040933d3a3f66bd">consume_feed()</a>, <a class="el" href="event_8php.html#ac9f206819186b65952ac1869f0da8c6e">event_addtocal()</a>, <a class="el" href="event_8php.html#a7378e839ac3de9d55579eb3ec48eaf92">event_store_item()</a>, <a class="el" href="classItem.html#ad5dcbe0b94cb2d5719bc5b6bd8ad60c8">Item\get_template_data()</a>, <a class="el" href="conversation_8php.html#a9bd7f9fb6678736c581bcba3b17f471c">localize_item()</a>, and <a class="el" href="tagger_8php.html#a0e4a3eb177d1684553c547503d67161c">tagger_content()</a>.</p>
+<p>Referenced by <a class="el" href="event_8php.html#ac9f206819186b65952ac1869f0da8c6e">event_addtocal()</a>, <a class="el" href="event_8php.html#a7378e839ac3de9d55579eb3ec48eaf92">event_store_item()</a>, <a class="el" href="classItem.html#ad5dcbe0b94cb2d5719bc5b6bd8ad60c8">Item\get_template_data()</a>, <a class="el" href="conversation_8php.html#a9bd7f9fb6678736c581bcba3b17f471c">localize_item()</a>, and <a class="el" href="tagger_8php.html#a0e4a3eb177d1684553c547503d67161c">tagger_content()</a>.</p>
</div>
</div>
@@ -1915,7 +2265,7 @@ Variables</h2></td></tr>
</table>
</div><div class="memdoc">
-<p>Referenced by <a class="el" href="include_2api_8php.html#a4c6fb9fb5203aa60f4b3afd4521db8ea">api_format_items()</a>, <a class="el" href="items_8php.html#a8794863cdf8ce1333040933d3a3f66bd">consume_feed()</a>, <a class="el" href="like_8php.html#a9d7dd268f21c21e9d29dd2aca2dd9538">like_content()</a>, <a class="el" href="conversation_8php.html#a9bd7f9fb6678736c581bcba3b17f471c">localize_item()</a>, <a class="el" href="items_8php.html#a410f9c743877c125ca06312373346903">post_activity_item()</a>, <a class="el" href="subthread_8php.html#a50368f3d825b77996030528e7fbfa3d3">subthread_content()</a>, and <a class="el" href="tagger_8php.html#a0e4a3eb177d1684553c547503d67161c">tagger_content()</a>.</p>
+<p>Referenced by <a class="el" href="include_2api_8php.html#a4c6fb9fb5203aa60f4b3afd4521db8ea">api_format_items()</a>, <a class="el" href="diaspora_8php.html#a5d57518545baa31cf8a85a937a267681">diaspora_like()</a>, <a class="el" href="like_8php.html#a9d7dd268f21c21e9d29dd2aca2dd9538">like_content()</a>, <a class="el" href="conversation_8php.html#a9bd7f9fb6678736c581bcba3b17f471c">localize_item()</a>, <a class="el" href="items_8php.html#a410f9c743877c125ca06312373346903">post_activity_item()</a>, <a class="el" href="subthread_8php.html#a50368f3d825b77996030528e7fbfa3d3">subthread_content()</a>, and <a class="el" href="tagger_8php.html#a0e4a3eb177d1684553c547503d67161c">tagger_content()</a>.</p>
</div>
</div>
@@ -1941,7 +2291,7 @@ Variables</h2></td></tr>
</table>
</div><div class="memdoc">
-<p>Referenced by <a class="el" href="items_8php.html#a896c1809d58f2d7a42cfe14577958ddf">get_atom_elements()</a>, <a class="el" href="conversation_8php.html#a9bd7f9fb6678736c581bcba3b17f471c">localize_item()</a>, <a class="el" href="poke_8php.html#a9725aab97b3983e6a98bd81c4efe7d3b">poke_init()</a>, and <a class="el" href="items_8php.html#ab1bce4261bcf75ad62753b498a144d17">tag_deliver()</a>.</p>
+<p>Referenced by <a class="el" href="connedit_8php.html#a234c48426b652bf4d37053f2af329ac5">connedit_post()</a>, <a class="el" href="items_8php.html#a5e5be7bf1f8257dec0b2647e60a3f3f1">get_atom_elements()</a>, <a class="el" href="conversation_8php.html#a9bd7f9fb6678736c581bcba3b17f471c">localize_item()</a>, <a class="el" href="poke_8php.html#a9725aab97b3983e6a98bd81c4efe7d3b">poke_init()</a>, and <a class="el" href="items_8php.html#ab1bce4261bcf75ad62753b498a144d17">tag_deliver()</a>.</p>
</div>
</div>
@@ -1955,7 +2305,7 @@ Variables</h2></td></tr>
</table>
</div><div class="memdoc">
-<p>Referenced by <a class="el" href="like_8php.html#a9d7dd268f21c21e9d29dd2aca2dd9538">like_content()</a>, <a class="el" href="conversation_8php.html#a9bd7f9fb6678736c581bcba3b17f471c">localize_item()</a>, <a class="el" href="subthread_8php.html#a50368f3d825b77996030528e7fbfa3d3">subthread_content()</a>, and <a class="el" href="tagger_8php.html#a0e4a3eb177d1684553c547503d67161c">tagger_content()</a>.</p>
+<p>Referenced by <a class="el" href="diaspora_8php.html#a5d57518545baa31cf8a85a937a267681">diaspora_like()</a>, <a class="el" href="like_8php.html#a9d7dd268f21c21e9d29dd2aca2dd9538">like_content()</a>, <a class="el" href="conversation_8php.html#a9bd7f9fb6678736c581bcba3b17f471c">localize_item()</a>, <a class="el" href="subthread_8php.html#a50368f3d825b77996030528e7fbfa3d3">subthread_content()</a>, and <a class="el" href="tagger_8php.html#a0e4a3eb177d1684553c547503d67161c">tagger_content()</a>.</p>
</div>
</div>
@@ -1983,7 +2333,7 @@ Variables</h2></td></tr>
</table>
</div><div class="memdoc">
-<p>Referenced by <a class="el" href="items_8php.html#a8794863cdf8ce1333040933d3a3f66bd">consume_feed()</a>, <a class="el" href="zot_8php.html#aad25a3fe0e1566121d6fb8222979bc10">remove_community_tag()</a>, <a class="el" href="items_8php.html#ab1bce4261bcf75ad62753b498a144d17">tag_deliver()</a>, and <a class="el" href="tagger_8php.html#a0e4a3eb177d1684553c547503d67161c">tagger_content()</a>.</p>
+<p>Referenced by <a class="el" href="zot_8php.html#aad25a3fe0e1566121d6fb8222979bc10">remove_community_tag()</a>, <a class="el" href="items_8php.html#ab1bce4261bcf75ad62753b498a144d17">tag_deliver()</a>, and <a class="el" href="tagger_8php.html#a0e4a3eb177d1684553c547503d67161c">tagger_content()</a>.</p>
</div>
</div>
@@ -2025,7 +2375,7 @@ Variables</h2></td></tr>
</table>
</div><div class="memdoc">
-<p>Referenced by <a class="el" href="include_2api_8php.html#a4c6fb9fb5203aa60f4b3afd4521db8ea">api_format_items()</a>, <a class="el" href="include_2api_8php.html#a645397787618b5c548a31e8686e8cca4">api_status_show()</a>, <a class="el" href="include_2api_8php.html#abe8e929e93f7ab134b1cb1fb30f19a76">api_users_show()</a>, <a class="el" href="items_8php.html#a8f3c85c584ccd2b98c3ca440e45b40f8">construct_verb()</a>, <a class="el" href="event_8php.html#a7378e839ac3de9d55579eb3ec48eaf92">event_store_item()</a>, <a class="el" href="item_8php.html#a693cd09805755ab85bbb5ecae69a48c3">item_post()</a>, <a class="el" href="text_8php.html#ac1dbf2e37e8069bea2c0f557fdbf203e">item_post_type()</a>, <a class="el" href="items_8php.html#a77da7ce9a117601d49ac4a67c71b514f">mail_store()</a>, <a class="el" href="include_2photos_8php.html#a6c40ef58aefef705a5adc84a40e97109">photo_upload()</a>, <a class="el" href="items_8php.html#a410f9c743877c125ca06312373346903">post_activity_item()</a>, and <a class="el" href="items_8php.html#aab9e0c58247427126de0699c729c3b6c">send_status_notifications()</a>.</p>
+<p>Referenced by <a class="el" href="include_2api_8php.html#a4c6fb9fb5203aa60f4b3afd4521db8ea">api_format_items()</a>, <a class="el" href="include_2api_8php.html#a645397787618b5c548a31e8686e8cca4">api_status_show()</a>, <a class="el" href="include_2api_8php.html#abe8e929e93f7ab134b1cb1fb30f19a76">api_users_show()</a>, <a class="el" href="items_8php.html#a8f3c85c584ccd2b98c3ca440e45b40f8">construct_verb()</a>, <a class="el" href="diaspora_8php.html#a0fb2abe304aae19efc040a5e6b917829">diaspora_comment()</a>, <a class="el" href="diaspora_8php.html#a20b968d64ef26afe5cb0cc75a7570a31">diaspora_post()</a>, <a class="el" href="event_8php.html#a7378e839ac3de9d55579eb3ec48eaf92">event_store_item()</a>, <a class="el" href="item_8php.html#a693cd09805755ab85bbb5ecae69a48c3">item_post()</a>, <a class="el" href="text_8php.html#ac1dbf2e37e8069bea2c0f557fdbf203e">item_post_type()</a>, <a class="el" href="items_8php.html#a77da7ce9a117601d49ac4a67c71b514f">mail_store()</a>, <a class="el" href="include_2photos_8php.html#a6c40ef58aefef705a5adc84a40e97109">photo_upload()</a>, <a class="el" href="items_8php.html#a410f9c743877c125ca06312373346903">post_activity_item()</a>, <a class="el" href="refimport_8php.html#ad97ebb5feda0230a4834e0b3637a0d29">refimport_content()</a>, <a class="el" href="refimport_8php.html#a01a29630fa5e1ce6cd5e1fd75280747c">reflect_comment_store()</a>, and <a class="el" href="items_8php.html#aab9e0c58247427126de0699c729c3b6c">send_status_notifications()</a>.</p>
</div>
</div>
@@ -2039,8 +2389,6 @@ Variables</h2></td></tr>
</table>
</div><div class="memdoc">
-<p>Referenced by <a class="el" href="items_8php.html#a8794863cdf8ce1333040933d3a3f66bd">consume_feed()</a>.</p>
-
</div>
</div>
<a class="anchor" id="a12c781cefc20167231e2e3fd5866b1b5"></a>
@@ -2053,7 +2401,7 @@ Variables</h2></td></tr>
</table>
</div><div class="memdoc">
-<p>Referenced by <a class="el" href="items_8php.html#a8794863cdf8ce1333040933d3a3f66bd">consume_feed()</a>, <a class="el" href="zot_8php.html#aad25a3fe0e1566121d6fb8222979bc10">remove_community_tag()</a>, <a class="el" href="items_8php.html#ab1bce4261bcf75ad62753b498a144d17">tag_deliver()</a>, and <a class="el" href="tagger_8php.html#a0e4a3eb177d1684553c547503d67161c">tagger_content()</a>.</p>
+<p>Referenced by <a class="el" href="zot_8php.html#aad25a3fe0e1566121d6fb8222979bc10">remove_community_tag()</a>, <a class="el" href="items_8php.html#ab1bce4261bcf75ad62753b498a144d17">tag_deliver()</a>, and <a class="el" href="tagger_8php.html#a0e4a3eb177d1684553c547503d67161c">tagger_content()</a>.</p>
</div>
</div>
@@ -2067,7 +2415,7 @@ Variables</h2></td></tr>
</table>
</div><div class="memdoc">
-<p>Referenced by <a class="el" href="items_8php.html#a8794863cdf8ce1333040933d3a3f66bd">consume_feed()</a>, and <a class="el" href="items_8php.html#a896c1809d58f2d7a42cfe14577958ddf">get_atom_elements()</a>.</p>
+<p>Referenced by <a class="el" href="items_8php.html#a5e5be7bf1f8257dec0b2647e60a3f3f1">get_atom_elements()</a>.</p>
</div>
</div>
@@ -2081,8 +2429,6 @@ Variables</h2></td></tr>
</table>
</div><div class="memdoc">
-<p>Referenced by <a class="el" href="items_8php.html#a8794863cdf8ce1333040933d3a3f66bd">consume_feed()</a>.</p>
-
</div>
</div>
<a class="anchor" id="a7f4264232dbb6c3b41f2617deecb1866"></a>
@@ -2123,7 +2469,7 @@ Variables</h2></td></tr>
</table>
</div><div class="memdoc">
-<p>Referenced by <a class="el" href="include_2attach_8php.html#a5c0875eafb8c0f8a0620ff7a875a2221">attach_change_permissions()</a>, <a class="el" href="include_2attach_8php.html#a70bd666e080c2af5a91f5d14c297b8cd">attach_delete()</a>, <a class="el" href="include_2attach_8php.html#ab6830b3ab74a5d284876141ac80f6cbc">attach_mkdir()</a>, <a class="el" href="classRedFile.html#aef71c9eaac7052be7dc8602eb12171e7">RedFile\delete()</a>, <a class="el" href="filestorage_8php.html#a61bb1be78472555df4ce619f51014040">filestorage_content()</a>, <a class="el" href="include_2attach_8php.html#a6aa00ea010ea030110faefb75eafc1ce">get_cloudpath()</a>, <a class="el" href="classRedDirectory.html#a70173d4458572d95e586b2037d2fd2f4">RedDirectory\getDir()</a>, <a class="el" href="reddav_8php.html#a5df0d09893f2e65dc5cf6bbab6cfb266">RedCollectionData()</a>, <a class="el" href="reddav_8php.html#a9f531641dfb4e43cd88ac1a9ae7e2088">RedFileData()</a>, and <a class="el" href="include_2attach_8php.html#aeb07968990e66a88c95483ca09a7f909">z_readdir()</a>.</p>
+<p>Referenced by <a class="el" href="include_2attach_8php.html#a5c0875eafb8c0f8a0620ff7a875a2221">attach_change_permissions()</a>, <a class="el" href="include_2attach_8php.html#a70bd666e080c2af5a91f5d14c297b8cd">attach_delete()</a>, <a class="el" href="include_2attach_8php.html#ab6830b3ab74a5d284876141ac80f6cbc">attach_mkdir()</a>, <a class="el" href="classRedMatrix_1_1RedDAV_1_1RedFile.html#ab7ab7ba81fab28eb02382cfdfd80ecfe">RedMatrix\RedDAV\RedFile\delete()</a>, <a class="el" href="filestorage_8php.html#a61bb1be78472555df4ce619f51014040">filestorage_content()</a>, <a class="el" href="include_2attach_8php.html#a6aa00ea010ea030110faefb75eafc1ce">get_cloudpath()</a>, <a class="el" href="classRedMatrix_1_1RedDAV_1_1RedDirectory.html#a825dc5f3e0f83f50736c16daa6a4809d">RedMatrix\RedDAV\RedDirectory\getDir()</a>, <a class="el" href="reddav_8php.html#a5df0d09893f2e65dc5cf6bbab6cfb266">RedCollectionData()</a>, <a class="el" href="reddav_8php.html#a9f531641dfb4e43cd88ac1a9ae7e2088">RedFileData()</a>, and <a class="el" href="include_2attach_8php.html#aeb07968990e66a88c95483ca09a7f909">z_readdir()</a>.</p>
</div>
</div>
@@ -2137,7 +2483,7 @@ Variables</h2></td></tr>
</table>
</div><div class="memdoc">
-<p>Referenced by <a class="el" href="include_2attach_8php.html#a70bd666e080c2af5a91f5d14c297b8cd">attach_delete()</a>, <a class="el" href="mod_2attach_8php.html#aa88eb5ad87aa1036a30e70339cc6c1b1">attach_init()</a>, <a class="el" href="include_2attach_8php.html#ab6830b3ab74a5d284876141ac80f6cbc">attach_mkdir()</a>, <a class="el" href="classRedDirectory.html#a2d12d99d38a6a75fc9a830b2f7fc0bf0">RedDirectory\createFile()</a>, <a class="el" href="classRedFile.html#a7c868dfcef6c70cd0e24cf3caa2c3535">RedFile\get()</a>, and <a class="el" href="classRedFile.html#a41a49a583eb276b75626fcf97f4a699c">RedFile\put()</a>.</p>
+<p>Referenced by <a class="el" href="include_2attach_8php.html#a70bd666e080c2af5a91f5d14c297b8cd">attach_delete()</a>, <a class="el" href="mod_2attach_8php.html#aa88eb5ad87aa1036a30e70339cc6c1b1">attach_init()</a>, <a class="el" href="include_2attach_8php.html#ab6830b3ab74a5d284876141ac80f6cbc">attach_mkdir()</a>, <a class="el" href="classRedMatrix_1_1RedDAV_1_1RedDirectory.html#a58e750256cdc2f0f79fbe8d5463ffefe">RedMatrix\RedDAV\RedDirectory\createFile()</a>, <a class="el" href="classRedMatrix_1_1RedDAV_1_1RedFile.html#a7241beecd01f5bb4e74659863dd85bd8">RedMatrix\RedDAV\RedFile\get()</a>, and <a class="el" href="classRedMatrix_1_1RedDAV_1_1RedFile.html#a709ec1288d21ddf1353524435ab916f0">RedMatrix\RedDAV\RedFile\put()</a>.</p>
</div>
</div>
@@ -2194,7 +2540,7 @@ Variables</h2></td></tr>
</div><div class="memdoc">
<p>relationship types </p>
-<p>Referenced by <a class="el" href="items_8php.html#a8794863cdf8ce1333040933d3a3f66bd">consume_feed()</a>.</p>
+<p>Referenced by <a class="el" href="diaspora_8php.html#a7cff2f8f11044c1b3a360f20e1bbee46">diaspora_message()</a>.</p>
</div>
</div>
@@ -2227,12 +2573,38 @@ Variables</h2></td></tr>
<div class="memproto">
<table class="memname">
<tr>
- <td class="memname">const DB_UPDATE_VERSION 1117</td>
+ <td class="memname">const DB_UPDATE_VERSION 1131</td>
</tr>
</table>
</div><div class="memdoc">
-<p>Referenced by <a class="el" href="include_2api_8php.html#a623793229a7256dd31bcfd5ab90eef08">api_statusnet_config()</a>, <a class="el" href="boot_8php.html#a4c02d88e66852a01bd5a1feecb7c3ce3">check_config()</a>, <a class="el" href="identity_8php.html#a3570a4eb77332b292d394c4132cb8f03">identity_basic_export()</a>, and <a class="el" href="zfinger_8php.html#a8139b83a22ef98869adc10aa224027a0">zfinger_init()</a>.</p>
+<p>Referenced by <a class="el" href="include_2api_8php.html#a623793229a7256dd31bcfd5ab90eef08">api_statusnet_config()</a>, <a class="el" href="boot_8php.html#a4c02d88e66852a01bd5a1feecb7c3ce3">check_config()</a>, <a class="el" href="identity_8php.html#afaedbc8e2d2a70ec8b006162baac5249">identity_basic_export()</a>, and <a class="el" href="zfinger_8php.html#a8139b83a22ef98869adc10aa224027a0">zfinger_init()</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a8c9a11c47394244cbe18cd75b9726d5f"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">const DBTYPE_MYSQL 0</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+</div>
+</div>
+<a class="anchor" id="a37ddabc112db443b4c67fbc0f708817e"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">const DBTYPE_POSTGRES 1</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p>Referenced by <a class="el" href="text_8php.html#ad6432621d0fafcbcf3d3b9b49bef7784">contact_block()</a>, <a class="el" href="dba__driver_8php.html#a5df8499634c47b30191f34069d7b98c0">dba_factory()</a>, <a class="el" href="queue_8php.html#af8c93de86d866c3200174c8450a0f341">queue_run()</a>, <a class="el" href="reddav_8php.html#a5df0d09893f2e65dc5cf6bbab6cfb266">RedCollectionData()</a>, and <a class="el" href="search_8php.html#ab2568591359edde5b483a6cd9a24b2cc">search_content()</a>.</p>
</div>
</div>
@@ -2287,7 +2659,7 @@ Variables</h2></td></tr>
</table>
</div><div class="memdoc">
-<p>Referenced by <a class="el" href="mod_2directory_8php.html#aac79396570d759da2efac24fcedf5b44">directory_content()</a>, <a class="el" href="include_2directory_8php.html#aa75d3b0697ca1456aaabdb37a74aa0f0">directory_run()</a>, <a class="el" href="dirprofile_8php.html#a3e1d30d3d93863ff5615f2df4ac7f052">dirprofile_init()</a>, <a class="el" href="zot_8php.html#a2657e141d62d5f67ad3c87651b585299">import_site()</a>, <a class="el" href="acl_8php.html#a57dceff370d4a0e7ae673d50fbfda61f">navbar_complete()</a>, <a class="el" href="poller_8php.html#a5f12df3a4738124b6c039971e87e76da">poller_run()</a>, <a class="el" href="pubsites_8php.html#af614e279aab54065345bda6b03eafdf0">pubsites_content()</a>, <a class="el" href="dir__fns_8php.html#aa666e7df6ca8c332f4081c9b66b4bdf6">sync_directories()</a>, <a class="el" href="socgraph_8php.html#a790690bb1a1d02483fe31632a160144d">update_suggestions()</a>, and <a class="el" href="zfinger_8php.html#a8139b83a22ef98869adc10aa224027a0">zfinger_init()</a>.</p>
+<p>Referenced by <a class="el" href="dir__fns_8php.html#a2f7d74bb2aea8bcd2537aee5c6708a16">check_upstream_directory()</a>, <a class="el" href="mod_2directory_8php.html#aac79396570d759da2efac24fcedf5b44">directory_content()</a>, <a class="el" href="include_2directory_8php.html#aa75d3b0697ca1456aaabdb37a74aa0f0">directory_run()</a>, <a class="el" href="zot_8php.html#a2657e141d62d5f67ad3c87651b585299">import_site()</a>, <a class="el" href="acl_8php.html#a57dceff370d4a0e7ae673d50fbfda61f">navbar_complete()</a>, <a class="el" href="poller_8php.html#a5f12df3a4738124b6c039971e87e76da">poller_run()</a>, <a class="el" href="pubsites_8php.html#af614e279aab54065345bda6b03eafdf0">pubsites_content()</a>, <a class="el" href="dir__fns_8php.html#aa666e7df6ca8c332f4081c9b66b4bdf6">sync_directories()</a>, <a class="el" href="socgraph_8php.html#a790690bb1a1d02483fe31632a160144d">update_suggestions()</a>, and <a class="el" href="zfinger_8php.html#a8139b83a22ef98869adc10aa224027a0">zfinger_init()</a>.</p>
</div>
</div>
@@ -2301,7 +2673,7 @@ Variables</h2></td></tr>
</table>
</div><div class="memdoc">
-<p>Referenced by <a class="el" href="zot_8php.html#a2657e141d62d5f67ad3c87651b585299">import_site()</a>, <a class="el" href="poller_8php.html#a5f12df3a4738124b6c039971e87e76da">poller_run()</a>, <a class="el" href="dir__fns_8php.html#aa666e7df6ca8c332f4081c9b66b4bdf6">sync_directories()</a>, and <a class="el" href="zfinger_8php.html#a8139b83a22ef98869adc10aa224027a0">zfinger_init()</a>.</p>
+<p>Referenced by <a class="el" href="dir__fns_8php.html#a2f7d74bb2aea8bcd2537aee5c6708a16">check_upstream_directory()</a>, <a class="el" href="zot_8php.html#a2657e141d62d5f67ad3c87651b585299">import_site()</a>, <a class="el" href="poller_8php.html#a5f12df3a4738124b6c039971e87e76da">poller_run()</a>, <a class="el" href="dir__fns_8php.html#aa666e7df6ca8c332f4081c9b66b4bdf6">sync_directories()</a>, and <a class="el" href="zfinger_8php.html#a8139b83a22ef98869adc10aa224027a0">zfinger_init()</a>.</p>
</div>
</div>
@@ -2315,7 +2687,7 @@ Variables</h2></td></tr>
</table>
</div><div class="memdoc">
-<p>Referenced by <a class="el" href="mod_2directory_8php.html#aac79396570d759da2efac24fcedf5b44">directory_content()</a>, <a class="el" href="include_2directory_8php.html#aa75d3b0697ca1456aaabdb37a74aa0f0">directory_run()</a>, <a class="el" href="dirprofile_8php.html#a3e1d30d3d93863ff5615f2df4ac7f052">dirprofile_init()</a>, <a class="el" href="externals_8php.html#a4df44079e6f915286088b7a0d44db926">externals_run()</a>, <a class="el" href="zot_8php.html#a2657e141d62d5f67ad3c87651b585299">import_site()</a>, <a class="el" href="zot_8php.html#a528e97ca5d69c3b7f35c5d954afde315">import_xchan()</a>, <a class="el" href="acl_8php.html#a57dceff370d4a0e7ae673d50fbfda61f">navbar_complete()</a>, <a class="el" href="pubsites_8php.html#af614e279aab54065345bda6b03eafdf0">pubsites_content()</a>, <a class="el" href="dir__fns_8php.html#aa666e7df6ca8c332f4081c9b66b4bdf6">sync_directories()</a>, <a class="el" href="socgraph_8php.html#a790690bb1a1d02483fe31632a160144d">update_suggestions()</a>, and <a class="el" href="zfinger_8php.html#a8139b83a22ef98869adc10aa224027a0">zfinger_init()</a>.</p>
+<p>Referenced by <a class="el" href="dir__fns_8php.html#a2f7d74bb2aea8bcd2537aee5c6708a16">check_upstream_directory()</a>, <a class="el" href="mod_2directory_8php.html#aac79396570d759da2efac24fcedf5b44">directory_content()</a>, <a class="el" href="include_2directory_8php.html#aa75d3b0697ca1456aaabdb37a74aa0f0">directory_run()</a>, <a class="el" href="dirsearch_8php.html#aa1fb04e1de4f25b63349ac78f94ceb4c">dirsearch_content()</a>, <a class="el" href="externals_8php.html#a4df44079e6f915286088b7a0d44db926">externals_run()</a>, <a class="el" href="zot_8php.html#a2657e141d62d5f67ad3c87651b585299">import_site()</a>, <a class="el" href="zot_8php.html#a528e97ca5d69c3b7f35c5d954afde315">import_xchan()</a>, <a class="el" href="acl_8php.html#a57dceff370d4a0e7ae673d50fbfda61f">navbar_complete()</a>, <a class="el" href="pubsites_8php.html#af614e279aab54065345bda6b03eafdf0">pubsites_content()</a>, <a class="el" href="dir__fns_8php.html#aa666e7df6ca8c332f4081c9b66b4bdf6">sync_directories()</a>, <a class="el" href="socgraph_8php.html#a790690bb1a1d02483fe31632a160144d">update_suggestions()</a>, and <a class="el" href="zfinger_8php.html#a8139b83a22ef98869adc10aa224027a0">zfinger_init()</a>.</p>
</div>
</div>
@@ -2329,6 +2701,8 @@ Variables</h2></td></tr>
</table>
</div><div class="memdoc">
+<p>Referenced by <a class="el" href="boot_8php.html#a329400dcb29897cdaae3020109272285">get_directory_realm()</a>, <a class="el" href="dirsearch_8php.html#a985d410a170549429857af6ff2673149">list_public_sites()</a>, <a class="el" href="sitelist_8php.html#a665a59bf60f780b40f32c909f4a473b1">sitelist_init()</a>, and <a class="el" href="dir__fns_8php.html#aa666e7df6ca8c332f4081c9b66b4bdf6">sync_directories()</a>.</p>
+
</div>
</div>
<a class="anchor" id="a7037bcbca223395c06bc67f65024de7a"></a>
@@ -2355,7 +2729,7 @@ Variables</h2></td></tr>
</table>
</div><div class="memdoc">
-<p>Referenced by <a class="el" href="zot_8php.html#adfeb9400ae6b726beec89f8f1e8fde72">delete_imported_item()</a>, <a class="el" href="items_8php.html#aac8c9eb4338e2a996c43914392c6cfdb">delete_item_lowlevel()</a>, and <a class="el" href="item_8php.html#a764bbb2e9a885a86fb23d0b5e4a09221">item_content()</a>.</p>
+<p>Referenced by <a class="el" href="zot_8php.html#adfeb9400ae6b726beec89f8f1e8fde72">delete_imported_item()</a>, <a class="el" href="items_8php.html#aac8c9eb4338e2a996c43914392c6cfdb">delete_item_lowlevel()</a>, <a class="el" href="diaspora_8php.html#aa34d2748bb97e9e193cacd572f335055">diaspora_signed_retraction()</a>, <a class="el" href="items_8php.html#a555762e1022a4b8e3c3abd32e7812408">drop_item()</a>, <a class="el" href="item_8php.html#a764bbb2e9a885a86fb23d0b5e4a09221">item_content()</a>, and <a class="el" href="like_8php.html#a9d7dd268f21c21e9d29dd2aca2dd9538">like_content()</a>.</p>
</div>
</div>
@@ -2378,12 +2752,12 @@ Variables</h2></td></tr>
<div class="memproto">
<table class="memname">
<tr>
- <td class="memname">const EOL '&lt;br /&gt;' . &quot;\r\n&quot;</td>
+ <td class="memname">const EOL '&lt;br&gt;' . &quot;\r\n&quot;</td>
</tr>
</table>
</div><div class="memdoc">
-<p>Referenced by <a class="el" href="achievements_8php.html#a35ae04ada0e227d19671f289a32fb30e">achievements_content()</a>, <a class="el" href="admin_8php.html#ad6f87a764fd35f522c7b4c351d7878ec">admin_page_channels()</a>, <a class="el" href="admin_8php.html#aaa6addf2dbc3f3fcf99244a56b41eade">admin_page_dbsync()</a>, <a class="el" href="admin_8php.html#a6943543f3138f6ee182cb701f415d1cc">admin_page_hubloc()</a>, <a class="el" href="admin_8php.html#add865f4ae806ecbf716f423fc3e50e4f">admin_page_site_post()</a>, <a class="el" href="admin_8php.html#a62f10f90c47686c9c3c37c4c03a108d2">admin_page_users()</a>, <a class="el" href="mod_2api_8php.html#a33315b5bbf5418f6850b2038107b526d">api_content()</a>, <a class="el" href="mod_2api_8php.html#a6fe77f05c07cb51048df0d557b4b9bd2">api_post()</a>, <a class="el" href="appman_8php.html#af48805ac2f6f123f2681a8ae1c6f123f">appman_content()</a>, <a class="el" href="appman_8php.html#a2979acbe47ffaecfa19b9eabfbfbde39">appman_post()</a>, <a class="el" href="mod_2attach_8php.html#aa88eb5ad87aa1036a30e70339cc6c1b1">attach_init()</a>, <a class="el" href="block_8php.html#a8a82a470acdfbc7a8e749509caeeea45">block_content()</a>, <a class="el" href="blocks_8php.html#a2531a8fd51db3cecb2eb20c002c66e12">blocks_content()</a>, <a class="el" href="mod_2bookmarks_8php.html#a774364b1c8404529581083631703527a">bookmarks_content()</a>, <a class="el" href="mod_2bookmarks_8php.html#a6b7942f3d27e40f0f47c88704127b9b3">bookmarks_init()</a>, <a class="el" href="channel_8php.html#a9c6a6179e0e626398ebecc6151905ef1">channel_content()</a>, <a class="el" href="channel_8php.html#ac7c8c7845741baadf87fae6bc279f3dc">channel_init()</a>, <a class="el" href="chanview_8php.html#a4192c6da888c8c1165851acf9ad4cb8b">chanview_content()</a>, <a class="el" href="mod_2chat_8php.html#a8b0b8bee6fef6477e8c64c5e951b1b4f">chat_content()</a>, <a class="el" href="mod_2chat_8php.html#aa9ae4782e9baef0b7314ab9527c2707e">chat_init()</a>, <a class="el" href="include_2chat_8php.html#a2c95b545e46bfee64faa05ecf0afea91">chatroom_enter()</a>, <a class="el" href="account_8php.html#ae052bd5558847bd38e89c213561a9771">check_account_email()</a>, <a class="el" href="account_8php.html#aaff7720423417a4333697894ffd9ddeb">check_account_invite()</a>, <a class="el" href="security_8php.html#a20f8b9851f23ee8894b8925584ef6821">check_form_security_std_err_msg()</a>, <a class="el" href="setup_8php.html#a0c3f3b671381f6dccd924b8ecdfc56c4">check_htaccess()</a>, <a class="el" href="setup_8php.html#aa3bbb111780da70ba35cc23a306f2c76">check_keys()</a>, <a class="el" href="setup_8php.html#a14d208682a88632290c895d20da6e7d6">check_php()</a>, <a class="el" href="setup_8php.html#afd8b0b3ade1507c45325caf377bf459d">check_smarty3()</a>, <a class="el" href="setup_8php.html#ab4b71369a25021d59247c917e98d8246">check_store()</a>, <a class="el" href="common_8php.html#ab63408f39abef7a6915186e8dabc5a96">common_content()</a>, <a class="el" href="common_8php.html#aca62f113655809f41f49042ce9b123c2">common_init()</a>, <a class="el" href="connect_8php.html#ad46a38f32fd7a3d324b1fa26373efa36">connect_init()</a>, <a class="el" href="connections_8php.html#aec2e457420fce3e3bf6a9f48e36df25c">connections_content()</a>, <a class="el" href="connections_8php.html#a1224058db8e3fb56463eb312f98e561d">connections_post()</a>, <a class="el" href="connedit_8php.html#a795acb3d9d841f55c255d7611681ab67">connedit_content()</a>, <a class="el" href="connedit_8php.html#a234c48426b652bf4d37053f2af329ac5">connedit_post()</a>, <a class="el" href="delegate_8php.html#a943eea8996ef348eb845c498f9f354dd">delegate_content()</a>, <a class="el" href="mod_2directory_8php.html#aac79396570d759da2efac24fcedf5b44">directory_content()</a>, <a class="el" href="dirprofile_8php.html#a3e1d30d3d93863ff5615f2df4ac7f052">dirprofile_init()</a>, <a class="el" href="display_8php.html#a37137c98d47bf3306f4c2bb9f5b60de0">display_content()</a>, <a class="el" href="items_8php.html#a555762e1022a4b8e3c3abd32e7812408">drop_item()</a>, <a class="el" href="editblock_8php.html#abbe8f55de06967bc8d79d620509a49e6">editblock_content()</a>, <a class="el" href="editlayout_8php.html#aa877e4157a26b099de904164181dd386">editlayout_content()</a>, <a class="el" href="editpost_8php.html#a34011690864d122680c802e9e748ccfb">editpost_content()</a>, <a class="el" href="editwebpage_8php.html#a375e945255fad79a71036528f7480650">editwebpage_content()</a>, <a class="el" href="events_8php.html#a1d293fb217ae6bc9e3858c4b32e363ec">events_content()</a>, <a class="el" href="events_8php.html#ab3e8a8f901175f8e40a8089eea45c075">events_post()</a>, <a class="el" href="filestorage_8php.html#a61bb1be78472555df4ce619f51014040">filestorage_content()</a>, <a class="el" href="filestorage_8php.html#ad3b64e3ece9831f9d3a9f00c0ae983cd">filestorage_post()</a>, <a class="el" href="mod_2follow_8php.html#a171f5b19f50d7738adc3b2e96ec6018a">follow_init()</a>, <a class="el" href="conversation_8php.html#a3d8e30cc94f9a175054c021305d3aca3">format_like()</a>, <a class="el" href="fsuggest_8php.html#aa6c49ed4b50a387f1845f36844dd7998">fsuggest_content()</a>, <a class="el" href="fsuggest_8php.html#a61ecfe10ce937ed526614f8fd3de3c7d">fsuggest_post()</a>, <a class="el" href="include_2group_8php.html#a06ec565d2b64e79044e7c1bf91a2a4ce">group_add()</a>, <a class="el" href="mod_2group_8php.html#a07a64f6c65b0080d8190b3d9728a7a83">group_content()</a>, <a class="el" href="mod_2group_8php.html#aed1f009b1221348021bb34761160ef35">group_post()</a>, <a class="el" href="home_8php.html#aa1cf697851a646755baf537f75334c46">home_content()</a>, <a class="el" href="import_8php.html#af17fef0410518f7eac205d0ea416eaa2">import_post()</a>, <a class="el" href="zot_8php.html#a528e97ca5d69c3b7f35c5d954afde315">import_xchan()</a>, <a class="el" href="importelm_8php.html#a1a4f71e6d76ace6add5e9659845f5e5f">importelm_post()</a>, <a class="el" href="invite_8php.html#a244385b28cfd021d308715f01158bfd9">invite_content()</a>, <a class="el" href="invite_8php.html#aeb0881c0f93c8e8552e5ed756ce6e5a5">invite_post()</a>, <a class="el" href="item_8php.html#a764bbb2e9a885a86fb23d0b5e4a09221">item_content()</a>, <a class="el" href="item_8php.html#a693cd09805755ab85bbb5ecae69a48c3">item_post()</a>, <a class="el" href="layouts_8php.html#a6e0193759ad9eef76d3df2db24237b50">layouts_content()</a>, <a class="el" href="like_8php.html#a9d7dd268f21c21e9d29dd2aca2dd9538">like_content()</a>, <a class="el" href="setup_8php.html#ad2e0375a9ab87ebe6e78124ee125054a">load_database()</a>, <a class="el" href="lostpass_8php.html#a0314d94e48c789b1b3a201d740c9eab3">lostpass_content()</a>, <a class="el" href="lostpass_8php.html#a8ed35ba71a4404eaf4903da61d0321cc">lostpass_post()</a>, <a class="el" href="magic_8php.html#acea2cc792849ca2d71d4b689f66518bf">magic_init()</a>, <a class="el" href="mail_8php.html#a3c7c485fc69f92371e8b20936040eca1">mail_content()</a>, <a class="el" href="mail_8php.html#acfc2cc0bf4e0b178207758384977f25a">mail_post()</a>, <a class="el" href="manage_8php.html#a2bca247b5296827638959138367db4f5">manage_content()</a>, <a class="el" href="match_8php.html#a1dd853e959b9e70c1911bb2fb5f5130d">match_content()</a>, <a class="el" href="mod_2menu_8php.html#a6fed23af14d71a78a4153c8363a685cf">menu_content()</a>, <a class="el" href="mod_2menu_8php.html#aaa491ef173868fe002aece4632bcf393">menu_post()</a>, <a class="el" href="mod_2message_8php.html#ac72dfed3ce08fcb331d66b37edc6e15f">message_content()</a>, <a class="el" href="mitem_8php.html#a7a31b702ecad18eeb6a38b243ff0037e">mitem_content()</a>, <a class="el" href="mitem_8php.html#a9627cd857cafdf04e4fc0ae48c8e8518">mitem_init()</a>, <a class="el" href="mitem_8php.html#a6ee694cca4b551a20d7c7a94b5243ec1">mitem_post()</a>, <a class="el" href="mood_8php.html#a721b9b6703b3234a005641c92d409b8f">mood_content()</a>, <a class="el" href="mod_2network_8php.html#a43f2f29b90c5e29072c561934bc8f8b4">network_content()</a>, <a class="el" href="mod_2network_8php.html#a180fce90ad11d7e0e45be094da7149ec">network_init()</a>, <a class="el" href="new__channel_8php.html#ae585191610f79da129492482ce8e2fee">new_channel_content()</a>, <a class="el" href="new__channel_8php.html#a180b0646957db8290482f02454ad7f23">new_channel_post()</a>, <a class="el" href="notifications_8php.html#aadd0b5525bd8c283a5d8a37982bbfe62">notifications_content()</a>, <a class="el" href="notifications_8php.html#a5baffec7b2e625c9f9cefbc097550d33">notifications_post()</a>, <a class="el" href="oexchange_8php.html#a2d8b785cd7d041a4e6274f5af370cf26">oexchange_content()</a>, <a class="el" href="openid_8php.html#a9a13827dbcf61ae4e45f0b6b33a88f43">openid_content()</a>, <a class="el" href="page_8php.html#a91a5f649f68406149108bded1dc90b22">page_content()</a>, <a class="el" href="pdledit_8php.html#a59cb550f6b7a4e7d8196fbc9de601619">pdledit_content()</a>, <a class="el" href="pdledit_8php.html#a81da3c955d0e3db55d148a31483104c7">pdledit_post()</a>, <a class="el" href="mod_2photos_8php.html#aa87382611a66ec5effdb2d78f13f5812">photos_content()</a>, <a class="el" href="mod_2photos_8php.html#a062bed4d04d14fee8a53f4c9be673080">photos_post()</a>, <a class="el" href="poke_8php.html#ac9190563a8da9c07a16f9dcd71cf6993">poke_content()</a>, <a class="el" href="post_8php.html#af4b48181ce773ef0cdfc972441445c34">post_init()</a>, <a class="el" href="post_8php.html#af59e6a1dc22d19d9257b01cd7ccedb75">post_post()</a>, <a class="el" href="profile_8php.html#a3775cf6eef6587e5143133356a7b76c0">profile_content()</a>, <a class="el" href="profile_8php.html#ab5d0246be0552e2182a585c1206d22a5">profile_init()</a>, <a class="el" href="identity_8php.html#a4751b522ea913d0e7ed43e03d22e9e68">profile_load()</a>, <a class="el" href="profile__photo_8php.html#a4b80234074bd603221aa5364f330e479">profile_photo_post()</a>, <a class="el" href="profiles_8php.html#a46975783b8b8d70402d51487eb1f0b00">profiles_content()</a>, <a class="el" href="profiles_8php.html#a36f71405ad536228f8bb84a551b23f7e">profiles_init()</a>, <a class="el" href="profiles_8php.html#ab0362c81b1d3b0b12a772b9fac446e04">profiles_post()</a>, <a class="el" href="profperm_8php.html#aef015787de2373d9fb3fe3f814fb5023">profperm_content()</a>, <a class="el" href="pubsites_8php.html#af614e279aab54065345bda6b03eafdf0">pubsites_content()</a>, <a class="el" href="register_8php.html#a0e91f57f111407ea8d3223a05022bb2a">register_content()</a>, <a class="el" href="register_8php.html#a51731dcc1917c58a790eb1c0f6132271">register_post()</a>, <a class="el" href="regmod_8php.html#a7953df4e32e63946565e90cdd5d50409">regmod_content()</a>, <a class="el" href="rmagic_8php.html#a869de069d081b3c4e98b957d06bbf08f">rmagic_post()</a>, <a class="el" href="search_8php.html#ab2568591359edde5b483a6cd9a24b2cc">search_content()</a>, <a class="el" href="settings_8php.html#aa7ee94d88ac088edb04ccf3a26de3586">settings_post()</a>, <a class="el" href="setup_8php.html#a88247384a96e14516f474d7af6a465c1">setup_content()</a>, <a class="el" href="sources_8php.html#ac442ccef080ab95772d8929fcafcb4b7">sources_content()</a>, <a class="el" href="sources_8php.html#ac73298ff162ce7b2de8dcaf3d3305b1e">sources_post()</a>, <a class="el" href="subthread_8php.html#a50368f3d825b77996030528e7fbfa3d3">subthread_content()</a>, <a class="el" href="suggest_8php.html#a58748a8235d4523f8333847f3e42dd91">suggest_content()</a>, <a class="el" href="tagrm_8php.html#a1702f40aa53a2fa93deade1f609abe78">tagrm_post()</a>, <a class="el" href="thing_8php.html#a24a35f1e64029a67fdbea94a776ae04b">thing_content()</a>, <a class="el" href="thing_8php.html#a8be23b1d475ec3d9291999221c674c80">thing_init()</a>, <a class="el" href="account_8php.html#ac5c570a2d46446bad4dd2501e9c5a4b1">user_allow()</a>, <a class="el" href="account_8php.html#ad07be417ac7eda939768804106ddea3d">user_approve()</a>, <a class="el" href="account_8php.html#ac1653efba62493b9d87513e1b6c04c83">user_deny()</a>, <a class="el" href="viewconnections_8php.html#ab6c4d983e97b3a8a879567ff76507776">viewconnections_content()</a>, <a class="el" href="viewsrc_8php.html#a6eff3d0c1d7d14b335c4edb785cd60a4">viewsrc_content()</a>, <a class="el" href="wall__attach_8php.html#a7385e970e93228d082f0fd7254f6e653">wall_attach_post()</a>, <a class="el" href="wall__upload_8php.html#a7cbe204244cf9e0380ee932263a74d8f">wall_upload_post()</a>, <a class="el" href="webpages_8php.html#af3b7397d4abc153e3d2147740ee1a41d">webpages_content()</a>, and <a class="el" href="xchan_8php.html#a9853348bf1a35c644460221ba75edc2d">xchan_content()</a>.</p>
+<p>Referenced by <a class="el" href="Contact_8php.html#a5101d7eca5d6f387e5555f03fe249e33">account_remove()</a>, <a class="el" href="achievements_8php.html#a35ae04ada0e227d19671f289a32fb30e">achievements_content()</a>, <a class="el" href="admin_8php.html#ad6f87a764fd35f522c7b4c351d7878ec">admin_page_channels()</a>, <a class="el" href="admin_8php.html#aaa6addf2dbc3f3fcf99244a56b41eade">admin_page_dbsync()</a>, <a class="el" href="admin_8php.html#a6943543f3138f6ee182cb701f415d1cc">admin_page_hubloc()</a>, <a class="el" href="admin_8php.html#a3deba594ca1e11694eac1de0b724ef0a">admin_page_profs()</a>, <a class="el" href="admin_8php.html#add865f4ae806ecbf716f423fc3e50e4f">admin_page_site_post()</a>, <a class="el" href="admin_8php.html#a62f10f90c47686c9c3c37c4c03a108d2">admin_page_users()</a>, <a class="el" href="mod_2api_8php.html#a33315b5bbf5418f6850b2038107b526d">api_content()</a>, <a class="el" href="mod_2api_8php.html#a6fe77f05c07cb51048df0d557b4b9bd2">api_post()</a>, <a class="el" href="appman_8php.html#af48805ac2f6f123f2681a8ae1c6f123f">appman_content()</a>, <a class="el" href="appman_8php.html#a2979acbe47ffaecfa19b9eabfbfbde39">appman_post()</a>, <a class="el" href="mod_2attach_8php.html#aa88eb5ad87aa1036a30e70339cc6c1b1">attach_init()</a>, <a class="el" href="block_8php.html#a8a82a470acdfbc7a8e749509caeeea45">block_content()</a>, <a class="el" href="blocks_8php.html#a2531a8fd51db3cecb2eb20c002c66e12">blocks_content()</a>, <a class="el" href="mod_2bookmarks_8php.html#a774364b1c8404529581083631703527a">bookmarks_content()</a>, <a class="el" href="mod_2bookmarks_8php.html#a6b7942f3d27e40f0f47c88704127b9b3">bookmarks_init()</a>, <a class="el" href="channel_8php.html#a9c6a6179e0e626398ebecc6151905ef1">channel_content()</a>, <a class="el" href="channel_8php.html#ac7c8c7845741baadf87fae6bc279f3dc">channel_init()</a>, <a class="el" href="mod_2chat_8php.html#a8b0b8bee6fef6477e8c64c5e951b1b4f">chat_content()</a>, <a class="el" href="mod_2chat_8php.html#aa9ae4782e9baef0b7314ab9527c2707e">chat_init()</a>, <a class="el" href="include_2chat_8php.html#a2c95b545e46bfee64faa05ecf0afea91">chatroom_enter()</a>, <a class="el" href="account_8php.html#ae052bd5558847bd38e89c213561a9771">check_account_email()</a>, <a class="el" href="account_8php.html#aaff7720423417a4333697894ffd9ddeb">check_account_invite()</a>, <a class="el" href="security_8php.html#a20f8b9851f23ee8894b8925584ef6821">check_form_security_std_err_msg()</a>, <a class="el" href="setup_8php.html#a0c3f3b671381f6dccd924b8ecdfc56c4">check_htaccess()</a>, <a class="el" href="setup_8php.html#aa3bbb111780da70ba35cc23a306f2c76">check_keys()</a>, <a class="el" href="setup_8php.html#a14d208682a88632290c895d20da6e7d6">check_php()</a>, <a class="el" href="setup_8php.html#afd8b0b3ade1507c45325caf377bf459d">check_smarty3()</a>, <a class="el" href="setup_8php.html#ab4b71369a25021d59247c917e98d8246">check_store()</a>, <a class="el" href="common_8php.html#ab63408f39abef7a6915186e8dabc5a96">common_content()</a>, <a class="el" href="common_8php.html#aca62f113655809f41f49042ce9b123c2">common_init()</a>, <a class="el" href="connect_8php.html#ad46a38f32fd7a3d324b1fa26373efa36">connect_init()</a>, <a class="el" href="connections_8php.html#aec2e457420fce3e3bf6a9f48e36df25c">connections_content()</a>, <a class="el" href="connections_8php.html#a1224058db8e3fb56463eb312f98e561d">connections_post()</a>, <a class="el" href="connedit_8php.html#a795acb3d9d841f55c255d7611681ab67">connedit_content()</a>, <a class="el" href="connedit_8php.html#a234c48426b652bf4d37053f2af329ac5">connedit_post()</a>, <a class="el" href="delegate_8php.html#a943eea8996ef348eb845c498f9f354dd">delegate_content()</a>, <a class="el" href="mod_2directory_8php.html#aac79396570d759da2efac24fcedf5b44">directory_content()</a>, <a class="el" href="display_8php.html#a37137c98d47bf3306f4c2bb9f5b60de0">display_content()</a>, <a class="el" href="items_8php.html#a555762e1022a4b8e3c3abd32e7812408">drop_item()</a>, <a class="el" href="editblock_8php.html#abbe8f55de06967bc8d79d620509a49e6">editblock_content()</a>, <a class="el" href="editlayout_8php.html#aa877e4157a26b099de904164181dd386">editlayout_content()</a>, <a class="el" href="editpost_8php.html#a34011690864d122680c802e9e748ccfb">editpost_content()</a>, <a class="el" href="editwebpage_8php.html#a375e945255fad79a71036528f7480650">editwebpage_content()</a>, <a class="el" href="events_8php.html#a1d293fb217ae6bc9e3858c4b32e363ec">events_content()</a>, <a class="el" href="events_8php.html#ab3e8a8f901175f8e40a8089eea45c075">events_post()</a>, <a class="el" href="filestorage_8php.html#a61bb1be78472555df4ce619f51014040">filestorage_content()</a>, <a class="el" href="filestorage_8php.html#ad3b64e3ece9831f9d3a9f00c0ae983cd">filestorage_post()</a>, <a class="el" href="mod_2follow_8php.html#a171f5b19f50d7738adc3b2e96ec6018a">follow_init()</a>, <a class="el" href="conversation_8php.html#a3d8e30cc94f9a175054c021305d3aca3">format_like()</a>, <a class="el" href="fsuggest_8php.html#aa6c49ed4b50a387f1845f36844dd7998">fsuggest_content()</a>, <a class="el" href="fsuggest_8php.html#a61ecfe10ce937ed526614f8fd3de3c7d">fsuggest_post()</a>, <a class="el" href="include_2group_8php.html#a06ec565d2b64e79044e7c1bf91a2a4ce">group_add()</a>, <a class="el" href="mod_2group_8php.html#a07a64f6c65b0080d8190b3d9728a7a83">group_content()</a>, <a class="el" href="mod_2group_8php.html#aed1f009b1221348021bb34761160ef35">group_post()</a>, <a class="el" href="hcard_8php.html#ac34f26b0e6a37eef44fa49bea135136d">hcard_init()</a>, <a class="el" href="import_8php.html#af17fef0410518f7eac205d0ea416eaa2">import_post()</a>, <a class="el" href="importelm_8php.html#a1a4f71e6d76ace6add5e9659845f5e5f">importelm_post()</a>, <a class="el" href="invite_8php.html#a244385b28cfd021d308715f01158bfd9">invite_content()</a>, <a class="el" href="invite_8php.html#aeb0881c0f93c8e8552e5ed756ce6e5a5">invite_post()</a>, <a class="el" href="item_8php.html#a764bbb2e9a885a86fb23d0b5e4a09221">item_content()</a>, <a class="el" href="item_8php.html#a693cd09805755ab85bbb5ecae69a48c3">item_post()</a>, <a class="el" href="layouts_8php.html#a6e0193759ad9eef76d3df2db24237b50">layouts_content()</a>, <a class="el" href="like_8php.html#a9d7dd268f21c21e9d29dd2aca2dd9538">like_content()</a>, <a class="el" href="setup_8php.html#ad2e0375a9ab87ebe6e78124ee125054a">load_database()</a>, <a class="el" href="locs_8php.html#a6c900f53970c0d0e738d2fe06d27ca44">locs_content()</a>, <a class="el" href="locs_8php.html#a6b43654592919ac863d67a1f787a69b9">locs_post()</a>, <a class="el" href="lostpass_8php.html#a0314d94e48c789b1b3a201d740c9eab3">lostpass_content()</a>, <a class="el" href="lostpass_8php.html#a8ed35ba71a4404eaf4903da61d0321cc">lostpass_post()</a>, <a class="el" href="magic_8php.html#acea2cc792849ca2d71d4b689f66518bf">magic_init()</a>, <a class="el" href="mail_8php.html#a3c7c485fc69f92371e8b20936040eca1">mail_content()</a>, <a class="el" href="mail_8php.html#acfc2cc0bf4e0b178207758384977f25a">mail_post()</a>, <a class="el" href="manage_8php.html#a2bca247b5296827638959138367db4f5">manage_content()</a>, <a class="el" href="match_8php.html#a1dd853e959b9e70c1911bb2fb5f5130d">match_content()</a>, <a class="el" href="mod_2menu_8php.html#a6fed23af14d71a78a4153c8363a685cf">menu_content()</a>, <a class="el" href="mod_2menu_8php.html#aaa491ef173868fe002aece4632bcf393">menu_post()</a>, <a class="el" href="mod_2message_8php.html#ac72dfed3ce08fcb331d66b37edc6e15f">message_content()</a>, <a class="el" href="mitem_8php.html#a7a31b702ecad18eeb6a38b243ff0037e">mitem_content()</a>, <a class="el" href="mitem_8php.html#a9627cd857cafdf04e4fc0ae48c8e8518">mitem_init()</a>, <a class="el" href="mitem_8php.html#a6ee694cca4b551a20d7c7a94b5243ec1">mitem_post()</a>, <a class="el" href="mood_8php.html#a721b9b6703b3234a005641c92d409b8f">mood_content()</a>, <a class="el" href="mod_2network_8php.html#a43f2f29b90c5e29072c561934bc8f8b4">network_content()</a>, <a class="el" href="mod_2network_8php.html#a180fce90ad11d7e0e45be094da7149ec">network_init()</a>, <a class="el" href="new__channel_8php.html#ae585191610f79da129492482ce8e2fee">new_channel_content()</a>, <a class="el" href="new__channel_8php.html#a180b0646957db8290482f02454ad7f23">new_channel_post()</a>, <a class="el" href="notifications_8php.html#aadd0b5525bd8c283a5d8a37982bbfe62">notifications_content()</a>, <a class="el" href="notifications_8php.html#a5baffec7b2e625c9f9cefbc097550d33">notifications_post()</a>, <a class="el" href="oexchange_8php.html#a2d8b785cd7d041a4e6274f5af370cf26">oexchange_content()</a>, <a class="el" href="openid_8php.html#a9a13827dbcf61ae4e45f0b6b33a88f43">openid_content()</a>, <a class="el" href="page_8php.html#a4d89800c0366a239191b1692c09635cf">page_init()</a>, <a class="el" href="pdledit_8php.html#a59cb550f6b7a4e7d8196fbc9de601619">pdledit_content()</a>, <a class="el" href="pdledit_8php.html#a81da3c955d0e3db55d148a31483104c7">pdledit_post()</a>, <a class="el" href="mod_2photos_8php.html#aa87382611a66ec5effdb2d78f13f5812">photos_content()</a>, <a class="el" href="mod_2photos_8php.html#a062bed4d04d14fee8a53f4c9be673080">photos_post()</a>, <a class="el" href="poke_8php.html#ac9190563a8da9c07a16f9dcd71cf6993">poke_content()</a>, <a class="el" href="post_8php.html#af4b48181ce773ef0cdfc972441445c34">post_init()</a>, <a class="el" href="post_8php.html#af59e6a1dc22d19d9257b01cd7ccedb75">post_post()</a>, <a class="el" href="profile_8php.html#a3775cf6eef6587e5143133356a7b76c0">profile_content()</a>, <a class="el" href="profile_8php.html#ab5d0246be0552e2182a585c1206d22a5">profile_init()</a>, <a class="el" href="identity_8php.html#a4751b522ea913d0e7ed43e03d22e9e68">profile_load()</a>, <a class="el" href="profile__photo_8php.html#a4b80234074bd603221aa5364f330e479">profile_photo_post()</a>, <a class="el" href="profiles_8php.html#a46975783b8b8d70402d51487eb1f0b00">profiles_content()</a>, <a class="el" href="profiles_8php.html#a36f71405ad536228f8bb84a551b23f7e">profiles_init()</a>, <a class="el" href="profiles_8php.html#ab0362c81b1d3b0b12a772b9fac446e04">profiles_post()</a>, <a class="el" href="profperm_8php.html#aef015787de2373d9fb3fe3f814fb5023">profperm_content()</a>, <a class="el" href="pubsites_8php.html#af614e279aab54065345bda6b03eafdf0">pubsites_content()</a>, <a class="el" href="refimport_8php.html#ad97ebb5feda0230a4834e0b3637a0d29">refimport_content()</a>, <a class="el" href="register_8php.html#a0e91f57f111407ea8d3223a05022bb2a">register_content()</a>, <a class="el" href="register_8php.html#a51731dcc1917c58a790eb1c0f6132271">register_post()</a>, <a class="el" href="regmod_8php.html#a7953df4e32e63946565e90cdd5d50409">regmod_content()</a>, <a class="el" href="removeaccount_8php.html#a26a3325292e932c59793430ab737126a">removeaccount_post()</a>, <a class="el" href="removeme_8php.html#a7be08738beca44bb98a79e01cdb2ee88">removeme_post()</a>, <a class="el" href="rmagic_8php.html#a869de069d081b3c4e98b957d06bbf08f">rmagic_post()</a>, <a class="el" href="search_8php.html#ab2568591359edde5b483a6cd9a24b2cc">search_content()</a>, <a class="el" href="service__limits_8php.html#a653424aac63c5cd05ba70c3c77bf7f8a">service_limits_content()</a>, <a class="el" href="settings_8php.html#aa7ee94d88ac088edb04ccf3a26de3586">settings_post()</a>, <a class="el" href="setup_8php.html#a88247384a96e14516f474d7af6a465c1">setup_content()</a>, <a class="el" href="sources_8php.html#ac442ccef080ab95772d8929fcafcb4b7">sources_content()</a>, <a class="el" href="sources_8php.html#ac73298ff162ce7b2de8dcaf3d3305b1e">sources_post()</a>, <a class="el" href="subthread_8php.html#a50368f3d825b77996030528e7fbfa3d3">subthread_content()</a>, <a class="el" href="suggest_8php.html#a58748a8235d4523f8333847f3e42dd91">suggest_content()</a>, <a class="el" href="zot_8php.html#ab15c04e7e5f44edf45ec50dd7d183254">sync_locations()</a>, <a class="el" href="tagrm_8php.html#adfd4ea5b4d7fc6d9c9e042af5cd7d49a">tagrm_content()</a>, <a class="el" href="tagrm_8php.html#a1702f40aa53a2fa93deade1f609abe78">tagrm_post()</a>, <a class="el" href="thing_8php.html#a24a35f1e64029a67fdbea94a776ae04b">thing_content()</a>, <a class="el" href="thing_8php.html#a8be23b1d475ec3d9291999221c674c80">thing_init()</a>, <a class="el" href="account_8php.html#ac5c570a2d46446bad4dd2501e9c5a4b1">user_allow()</a>, <a class="el" href="account_8php.html#ad07be417ac7eda939768804106ddea3d">user_approve()</a>, <a class="el" href="account_8php.html#ac1653efba62493b9d87513e1b6c04c83">user_deny()</a>, <a class="el" href="viewconnections_8php.html#ab6c4d983e97b3a8a879567ff76507776">viewconnections_content()</a>, <a class="el" href="viewsrc_8php.html#a6eff3d0c1d7d14b335c4edb785cd60a4">viewsrc_content()</a>, <a class="el" href="wall__attach_8php.html#a7385e970e93228d082f0fd7254f6e653">wall_attach_post()</a>, <a class="el" href="wall__upload_8php.html#a7cbe204244cf9e0380ee932263a74d8f">wall_upload_post()</a>, <a class="el" href="webpages_8php.html#af3b7397d4abc153e3d2147740ee1a41d">webpages_content()</a>, <a class="el" href="xchan_8php.html#a9853348bf1a35c644460221ba75edc2d">xchan_content()</a>, and <a class="el" href="zot_8php.html#a3920afe14fc1d82020161b4b86bcd9ac">zot_process_message_request()</a>.</p>
</div>
</div>
@@ -2409,7 +2783,7 @@ Variables</h2></td></tr>
</table>
</div><div class="memdoc">
-<p>Referenced by <a class="el" href="items_8php.html#a8794863cdf8ce1333040933d3a3f66bd">consume_feed()</a>, and <a class="el" href="subthread_8php.html#a50368f3d825b77996030528e7fbfa3d3">subthread_content()</a>.</p>
+<p>Referenced by <a class="el" href="subthread_8php.html#a50368f3d825b77996030528e7fbfa3d3">subthread_content()</a>.</p>
</div>
</div>
@@ -2436,7 +2810,7 @@ Variables</h2></td></tr>
</table>
</div><div class="memdoc">
-<p>Referenced by <a class="el" href="Contact_8php.html#a186162051a5127069cc851d78740f205">channel_remove()</a>, <a class="el" href="zot_8php.html#a528e97ca5d69c3b7f35c5d954afde315">import_xchan()</a>, <a class="el" href="notifier_8php.html#a568c502f626cff95e344c0748938b85d">notifier_run()</a>, <a class="el" href="post_8php.html#af59e6a1dc22d19d9257b01cd7ccedb75">post_post()</a>, <a class="el" href="Contact_8php.html#acc12cda999c88c4d6185cca967c15125">remove_all_xchan_resources()</a>, <a class="el" href="zfinger_8php.html#a8139b83a22ef98869adc10aa224027a0">zfinger_init()</a>, and <a class="el" href="zot_8php.html#ae7cec2b417b5858fd4a41070f843d1d7">zot_get_hublocs()</a>.</p>
+<p>Referenced by <a class="el" href="Contact_8php.html#a4e8af0f0525161da74583c04b8b03097">channel_remove()</a>, <a class="el" href="locs_8php.html#a6c900f53970c0d0e738d2fe06d27ca44">locs_content()</a>, <a class="el" href="locs_8php.html#a6b43654592919ac863d67a1f787a69b9">locs_post()</a>, <a class="el" href="notifier_8php.html#a568c502f626cff95e344c0748938b85d">notifier_run()</a>, <a class="el" href="post_8php.html#af59e6a1dc22d19d9257b01cd7ccedb75">post_post()</a>, <a class="el" href="Contact_8php.html#acc12cda999c88c4d6185cca967c15125">remove_all_xchan_resources()</a>, <a class="el" href="hubloc_8php.html#a84c79b7be352f62d12fe4fa2c80fc6ea">remove_obsolete_hublocs()</a>, <a class="el" href="zot_8php.html#ab15c04e7e5f44edf45ec50dd7d183254">sync_locations()</a>, <a class="el" href="zot_8php.html#ae26ce9f1ad74139193fb6319beac5fca">zot_encode_locations()</a>, <a class="el" href="zot_8php.html#ae7cec2b417b5858fd4a41070f843d1d7">zot_get_hublocs()</a>, and <a class="el" href="zot_8php.html#a3920afe14fc1d82020161b4b86bcd9ac">zot_process_message_request()</a>.</p>
</div>
</div>
@@ -2450,7 +2824,7 @@ Variables</h2></td></tr>
</table>
</div><div class="memdoc">
-<p>Referenced by <a class="el" href="zot_8php.html#a528e97ca5d69c3b7f35c5d954afde315">import_xchan()</a>, <a class="el" href="Contact_8php.html#a08845ce8c5b997d5edac38ae7118b5c8">mark_orphan_hubsxchans()</a>, and <a class="el" href="post_8php.html#af59e6a1dc22d19d9257b01cd7ccedb75">post_post()</a>.</p>
+<p>Referenced by <a class="el" href="Contact_8php.html#a08845ce8c5b997d5edac38ae7118b5c8">mark_orphan_hubsxchans()</a>, <a class="el" href="post_8php.html#af59e6a1dc22d19d9257b01cd7ccedb75">post_post()</a>, and <a class="el" href="zot_8php.html#ab15c04e7e5f44edf45ec50dd7d183254">sync_locations()</a>.</p>
</div>
</div>
@@ -2464,7 +2838,7 @@ Variables</h2></td></tr>
</table>
</div><div class="memdoc">
-<p>Referenced by <a class="el" href="identity_8php.html#a345f4c943d84de502ec6e72d2c813945">create_identity()</a>, <a class="el" href="zot_8php.html#ad149f1e98c0c5b88ff9147e6ee3f330d">import_author_zot()</a>, <a class="el" href="import_8php.html#af17fef0410518f7eac205d0ea416eaa2">import_post()</a>, <a class="el" href="zot_8php.html#a528e97ca5d69c3b7f35c5d954afde315">import_xchan()</a>, <a class="el" href="Contact_8php.html#a2f4f495d53f2a334ab75292af79d3c91">rconnect_url()</a>, <a class="el" href="text_8php.html#a543447c5ed766535221e2d9636b379ee">xchan_mail_query()</a>, <a class="el" href="text_8php.html#a36a2e5d418ee81140f25c4233cfecd1f">xchan_query()</a>, <a class="el" href="zfinger_8php.html#a8139b83a22ef98869adc10aa224027a0">zfinger_init()</a>, <a class="el" href="zot_8php.html#a95528377d7303131958c9f0b7158fdce">zot_finger()</a>, and <a class="el" href="zot_8php.html#a7ac30ff51274bf0b6d3eade37972145c">zot_refresh()</a>.</p>
+<p>Referenced by <a class="el" href="identity_8php.html#a345f4c943d84de502ec6e72d2c813945">create_identity()</a>, <a class="el" href="include_2network_8php.html#a63e62946e194928eb17c5a9f2bbef0fe">discover_by_webbie()</a>, <a class="el" href="hubloc_8php.html#ad86214b3a74084bd7b54e8d6c919ce4d">hubloc_change_primary()</a>, <a class="el" href="zot_8php.html#ad149f1e98c0c5b88ff9147e6ee3f330d">import_author_zot()</a>, <a class="el" href="import_8php.html#af17fef0410518f7eac205d0ea416eaa2">import_post()</a>, <a class="el" href="locs_8php.html#a6c900f53970c0d0e738d2fe06d27ca44">locs_content()</a>, <a class="el" href="locs_8php.html#a6b43654592919ac863d67a1f787a69b9">locs_post()</a>, <a class="el" href="Contact_8php.html#a2f4f495d53f2a334ab75292af79d3c91">rconnect_url()</a>, <a class="el" href="zot_8php.html#ab15c04e7e5f44edf45ec50dd7d183254">sync_locations()</a>, <a class="el" href="text_8php.html#a543447c5ed766535221e2d9636b379ee">xchan_mail_query()</a>, <a class="el" href="text_8php.html#a905c3895feb6f276df23f07f16f9bb52">xchan_query()</a>, <a class="el" href="zot_8php.html#ae26ce9f1ad74139193fb6319beac5fca">zot_encode_locations()</a>, <a class="el" href="zot_8php.html#a95528377d7303131958c9f0b7158fdce">zot_finger()</a>, and <a class="el" href="zot_8php.html#a7ac30ff51274bf0b6d3eade37972145c">zot_refresh()</a>.</p>
</div>
</div>
@@ -2478,7 +2852,7 @@ Variables</h2></td></tr>
</table>
</div><div class="memdoc">
-<p>Referenced by <a class="el" href="zfinger_8php.html#a8139b83a22ef98869adc10aa224027a0">zfinger_init()</a>.</p>
+<p>Referenced by <a class="el" href="zot_8php.html#ae26ce9f1ad74139193fb6319beac5fca">zot_encode_locations()</a>.</p>
</div>
</div>
@@ -2504,7 +2878,7 @@ Variables</h2></td></tr>
</table>
</div><div class="memdoc">
-<p>Referenced by <a class="el" href="zot_8php.html#a528e97ca5d69c3b7f35c5d954afde315">import_xchan()</a>, <a class="el" href="Contact_8php.html#a08845ce8c5b997d5edac38ae7118b5c8">mark_orphan_hubsxchans()</a>, and <a class="el" href="post_8php.html#af59e6a1dc22d19d9257b01cd7ccedb75">post_post()</a>.</p>
+<p>Referenced by <a class="el" href="Contact_8php.html#a08845ce8c5b997d5edac38ae7118b5c8">mark_orphan_hubsxchans()</a>, <a class="el" href="notifier_8php.html#a568c502f626cff95e344c0748938b85d">notifier_run()</a>, <a class="el" href="onedirsync_8php.html#a411aedd47c57476099647961e6a86691">onedirsync_run()</a>, <a class="el" href="post_8php.html#af59e6a1dc22d19d9257b01cd7ccedb75">post_post()</a>, <a class="el" href="zot_8php.html#ab15c04e7e5f44edf45ec50dd7d183254">sync_locations()</a>, and <a class="el" href="zot_8php.html#a3920afe14fc1d82020161b4b86bcd9ac">zot_process_message_request()</a>.</p>
</div>
</div>
@@ -2582,7 +2956,7 @@ Variables</h2></td></tr>
</table>
</div><div class="memdoc">
-<p>Referenced by <a class="el" href="block_8php.html#a8a82a470acdfbc7a8e749509caeeea45">block_content()</a>, <a class="el" href="blocks_8php.html#a2531a8fd51db3cecb2eb20c002c66e12">blocks_content()</a>, <a class="el" href="editblock_8php.html#abbe8f55de06967bc8d79d620509a49e6">editblock_content()</a>, <a class="el" href="notifier_8php.html#a568c502f626cff95e344c0748938b85d">notifier_run()</a>, and <a class="el" href="items_8php.html#a2baa9e05f1e8aa3dd61c85803ae39bd6">update_remote_id()</a>.</p>
+<p>Referenced by <a class="el" href="block_8php.html#a8a82a470acdfbc7a8e749509caeeea45">block_content()</a>, <a class="el" href="blocks_8php.html#a2531a8fd51db3cecb2eb20c002c66e12">blocks_content()</a>, <a class="el" href="editblock_8php.html#abbe8f55de06967bc8d79d620509a49e6">editblock_content()</a>, <a class="el" href="impel_8php.html#ab7db6fca43b42ea4332cb3e841b3cf7b">impel_init()</a>, <a class="el" href="notifier_8php.html#a568c502f626cff95e344c0748938b85d">notifier_run()</a>, <a class="el" href="items_8php.html#a2baa9e05f1e8aa3dd61c85803ae39bd6">update_remote_id()</a>, and <a class="el" href="widgets_8php.html#a829c5a5c7448129266fc1df3ae1a3c2e">widget_random_block()</a>.</p>
</div>
</div>
@@ -2610,7 +2984,7 @@ Variables</h2></td></tr>
</table>
</div><div class="memdoc">
-<p>Referenced by <a class="el" href="items_8php.html#a8794863cdf8ce1333040933d3a3f66bd">consume_feed()</a>, <a class="el" href="zot_8php.html#adfeb9400ae6b726beec89f8f1e8fde72">delete_imported_item()</a>, <a class="el" href="items_8php.html#aac8c9eb4338e2a996c43914392c6cfdb">delete_item_lowlevel()</a>, <a class="el" href="items_8php.html#a555762e1022a4b8e3c3abd32e7812408">drop_item()</a>, <a class="el" href="items_8php.html#a5f690fc2484abec07840b4f9dd525bd9">encode_item_flags()</a>, <a class="el" href="expire_8php.html#a444e45c9b67727b27db4c779fd51a298">expire_run()</a>, <a class="el" href="items_8php.html#a536d0313b6ffe33b9d2490c4e25c5361">get_item_elements()</a>, <a class="el" href="item_8php.html#a5b1b36cb301a94b38150074f0d424e74">item_check_service_class()</a>, <a class="el" href="items_8php.html#a2541e6861a56d145c9281877cc501615">item_store()</a>, <a class="el" href="like_8php.html#a9d7dd268f21c21e9d29dd2aca2dd9538">like_content()</a>, <a class="el" href="notifier_8php.html#a568c502f626cff95e344c0748938b85d">notifier_run()</a>, <a class="el" href="mod_2photos_8php.html#a062bed4d04d14fee8a53f4c9be673080">photos_post()</a>, <a class="el" href="poller_8php.html#a5f12df3a4738124b6c039971e87e76da">poller_run()</a>, and <a class="el" href="zot_8php.html#a4d9e6ca295e443b740d9960c304b3474">process_delivery()</a>.</p>
+<p>Referenced by <a class="el" href="items_8php.html#adc26e08aa61f5666da04ab5d2a9d68a6">consume_feed()</a>, <a class="el" href="zot_8php.html#adfeb9400ae6b726beec89f8f1e8fde72">delete_imported_item()</a>, <a class="el" href="items_8php.html#aac8c9eb4338e2a996c43914392c6cfdb">delete_item_lowlevel()</a>, <a class="el" href="diaspora_8php.html#a131abd521b218d6ae6f7d2917d8b2605">diaspora_process_outbound()</a>, <a class="el" href="diaspora_8php.html#af4698b165766f83d89ec1ea964bc92cc">diaspora_send_followup()</a>, <a class="el" href="diaspora_8php.html#a0b3628a5e53332c3d3196b689fe2b94d">diaspora_send_relay()</a>, <a class="el" href="items_8php.html#a555762e1022a4b8e3c3abd32e7812408">drop_item()</a>, <a class="el" href="items_8php.html#a5f690fc2484abec07840b4f9dd525bd9">encode_item_flags()</a>, <a class="el" href="expire_8php.html#a444e45c9b67727b27db4c779fd51a298">expire_run()</a>, <a class="el" href="items_8php.html#a536d0313b6ffe33b9d2490c4e25c5361">get_item_elements()</a>, <a class="el" href="identity_8php.html#afaedbc8e2d2a70ec8b006162baac5249">identity_basic_export()</a>, <a class="el" href="item_8php.html#a5b1b36cb301a94b38150074f0d424e74">item_check_service_class()</a>, <a class="el" href="items_8php.html#a2541e6861a56d145c9281877cc501615">item_store()</a>, <a class="el" href="notifier_8php.html#a568c502f626cff95e344c0748938b85d">notifier_run()</a>, <a class="el" href="mod_2photos_8php.html#a062bed4d04d14fee8a53f4c9be673080">photos_post()</a>, <a class="el" href="poller_8php.html#a5f12df3a4738124b6c039971e87e76da">poller_run()</a>, and <a class="el" href="zot_8php.html#a0e3006e7a456b2175a9badc96bc5176d">process_delivery()</a>.</p>
</div>
</div>
@@ -2624,7 +2998,7 @@ Variables</h2></td></tr>
</table>
</div><div class="memdoc">
-<p>Referenced by <a class="el" href="item_8php.html#a693cd09805755ab85bbb5ecae69a48c3">item_post()</a>, <a class="el" href="include_2photos_8php.html#a6c40ef58aefef705a5adc84a40e97109">photo_upload()</a>, and <a class="el" href="include_2photos_8php.html#ad648c0c5544fe9263409b6f6e57c6274">photos_create_item()</a>.</p>
+<p>Referenced by <a class="el" href="item_8php.html#a693cd09805755ab85bbb5ecae69a48c3">item_post()</a>, <a class="el" href="like_8php.html#a9d7dd268f21c21e9d29dd2aca2dd9538">like_content()</a>, <a class="el" href="include_2photos_8php.html#a6c40ef58aefef705a5adc84a40e97109">photo_upload()</a>, and <a class="el" href="include_2photos_8php.html#ad648c0c5544fe9263409b6f6e57c6274">photos_create_item()</a>.</p>
</div>
</div>
@@ -2666,7 +3040,7 @@ Variables</h2></td></tr>
</table>
</div><div class="memdoc">
-<p>Referenced by <a class="el" href="classConversation.html#a8335cdd43f1836e3c255638e61a09e16">Conversation\add_thread()</a>, <a class="el" href="items_8php.html#a82955cc578f0fa600acec84475026194">encode_item()</a>, and <a class="el" href="items_8php.html#a2541e6861a56d145c9281877cc501615">item_store()</a>.</p>
+<p>Referenced by <a class="el" href="classConversation.html#a8335cdd43f1836e3c255638e61a09e16">Conversation\add_thread()</a>, <a class="el" href="items_8php.html#a56b0f5d2cb36eb8f4bfca84813884f86">encode_item()</a>, <a class="el" href="items_8php.html#a2541e6861a56d145c9281877cc501615">item_store()</a>, and <a class="el" href="items_8php.html#adf2b8137dc4ad9ec958de2842f16f3c2">start_delivery_chain()</a>.</p>
</div>
</div>
@@ -2708,7 +3082,7 @@ Variables</h2></td></tr>
</table>
</div><div class="memdoc">
-<p>Referenced by <a class="el" href="editpost_8php.html#a34011690864d122680c802e9e748ccfb">editpost_content()</a>, <a class="el" href="editwebpage_8php.html#a375e945255fad79a71036528f7480650">editwebpage_content()</a>, <a class="el" href="items_8php.html#a82955cc578f0fa600acec84475026194">encode_item()</a>, <a class="el" href="items_8php.html#a536d0313b6ffe33b9d2490c4e25c5361">get_item_elements()</a>, <a class="el" href="item_8php.html#a693cd09805755ab85bbb5ecae69a48c3">item_post()</a>, <a class="el" href="items_8php.html#a2541e6861a56d145c9281877cc501615">item_store()</a>, <a class="el" href="items_8php.html#acf0bf7c9d21ac84f32effb754f7ad484">item_store_update()</a>, <a class="el" href="items_8php.html#a410f9c743877c125ca06312373346903">post_activity_item()</a>, <a class="el" href="items_8php.html#ab1bce4261bcf75ad62753b498a144d17">tag_deliver()</a>, and <a class="el" href="text_8php.html#a8264348059abd1d4d5bb521323d3b19a">unobscure()</a>.</p>
+<p>Referenced by <a class="el" href="bb2diaspora_8php.html#ab27761069ea1275f0fc4c543099c5519">bb2diaspora_itembody()</a>, <a class="el" href="diaspora_8php.html#a131abd521b218d6ae6f7d2917d8b2605">diaspora_process_outbound()</a>, <a class="el" href="editpost_8php.html#a34011690864d122680c802e9e748ccfb">editpost_content()</a>, <a class="el" href="editwebpage_8php.html#a375e945255fad79a71036528f7480650">editwebpage_content()</a>, <a class="el" href="items_8php.html#a56b0f5d2cb36eb8f4bfca84813884f86">encode_item()</a>, <a class="el" href="items_8php.html#a536d0313b6ffe33b9d2490c4e25c5361">get_item_elements()</a>, <a class="el" href="item_8php.html#a693cd09805755ab85bbb5ecae69a48c3">item_post()</a>, <a class="el" href="items_8php.html#a2541e6861a56d145c9281877cc501615">item_store()</a>, <a class="el" href="items_8php.html#acf0bf7c9d21ac84f32effb754f7ad484">item_store_update()</a>, <a class="el" href="conversation_8php.html#a9bd7f9fb6678736c581bcba3b17f471c">localize_item()</a>, <a class="el" href="enotify_8php.html#a3e9a9355b243777c488d2a9883908dfc">notification()</a>, <a class="el" href="items_8php.html#a410f9c743877c125ca06312373346903">post_activity_item()</a>, <a class="el" href="items_8php.html#adf2b8137dc4ad9ec958de2842f16f3c2">start_delivery_chain()</a>, <a class="el" href="items_8php.html#ab1bce4261bcf75ad62753b498a144d17">tag_deliver()</a>, <a class="el" href="items_8php.html#a88c6cf7649ac836fbbed82a7a0315110">tgroup_check()</a>, <a class="el" href="text_8php.html#a8264348059abd1d4d5bb521323d3b19a">unobscure()</a>, and <a class="el" href="viewsrc_8php.html#a6eff3d0c1d7d14b335c4edb785cd60a4">viewsrc_content()</a>.</p>
</div>
</div>
@@ -2723,7 +3097,7 @@ Variables</h2></td></tr>
</div><div class="memdoc">
<p><a class="el" href="classItem.html">Item</a> Flags </p>
-<p>Referenced by <a class="el" href="event_8php.html#a7378e839ac3de9d55579eb3ec48eaf92">event_store_item()</a>, <a class="el" href="externals_8php.html#a4df44079e6f915286088b7a0d44db926">externals_run()</a>, <a class="el" href="item_8php.html#a693cd09805755ab85bbb5ecae69a48c3">item_post()</a>, <a class="el" href="like_8php.html#a9d7dd268f21c21e9d29dd2aca2dd9538">like_content()</a>, <a class="el" href="mood_8php.html#a7ae136dd7476865b4828136175db5022">mood_init()</a>, <a class="el" href="notifier_8php.html#a568c502f626cff95e344c0748938b85d">notifier_run()</a>, <a class="el" href="include_2photos_8php.html#a6c40ef58aefef705a5adc84a40e97109">photo_upload()</a>, <a class="el" href="include_2photos_8php.html#ad648c0c5544fe9263409b6f6e57c6274">photos_create_item()</a>, <a class="el" href="poke_8php.html#a9725aab97b3983e6a98bd81c4efe7d3b">poke_init()</a>, <a class="el" href="items_8php.html#a410f9c743877c125ca06312373346903">post_activity_item()</a>, <a class="el" href="activities_8php.html#a80134e807719b3c54aba971958d2e132">profile_activity()</a>, <a class="el" href="subthread_8php.html#a50368f3d825b77996030528e7fbfa3d3">subthread_content()</a>, <a class="el" href="items_8php.html#ab1bce4261bcf75ad62753b498a144d17">tag_deliver()</a>, <a class="el" href="tagger_8php.html#a0e4a3eb177d1684553c547503d67161c">tagger_content()</a>, and <a class="el" href="thing_8php.html#a8be23b1d475ec3d9291999221c674c80">thing_init()</a>.</p>
+<p>Referenced by <a class="el" href="connedit_8php.html#a234c48426b652bf4d37053f2af329ac5">connedit_post()</a>, <a class="el" href="diaspora_8php.html#a0fb2abe304aae19efc040a5e6b917829">diaspora_comment()</a>, <a class="el" href="diaspora_8php.html#a5d57518545baa31cf8a85a937a267681">diaspora_like()</a>, <a class="el" href="diaspora_8php.html#aa34d2748bb97e9e193cacd572f335055">diaspora_signed_retraction()</a>, <a class="el" href="event_8php.html#a7378e839ac3de9d55579eb3ec48eaf92">event_store_item()</a>, <a class="el" href="externals_8php.html#a4df44079e6f915286088b7a0d44db926">externals_run()</a>, <a class="el" href="item_8php.html#a693cd09805755ab85bbb5ecae69a48c3">item_post()</a>, <a class="el" href="like_8php.html#a9d7dd268f21c21e9d29dd2aca2dd9538">like_content()</a>, <a class="el" href="mood_8php.html#a7ae136dd7476865b4828136175db5022">mood_init()</a>, <a class="el" href="notifier_8php.html#a568c502f626cff95e344c0748938b85d">notifier_run()</a>, <a class="el" href="include_2photos_8php.html#a6c40ef58aefef705a5adc84a40e97109">photo_upload()</a>, <a class="el" href="include_2photos_8php.html#ad648c0c5544fe9263409b6f6e57c6274">photos_create_item()</a>, <a class="el" href="poke_8php.html#a9725aab97b3983e6a98bd81c4efe7d3b">poke_init()</a>, <a class="el" href="items_8php.html#a410f9c743877c125ca06312373346903">post_activity_item()</a>, <a class="el" href="zot_8php.html#a0e3006e7a456b2175a9badc96bc5176d">process_delivery()</a>, <a class="el" href="activities_8php.html#a80134e807719b3c54aba971958d2e132">profile_activity()</a>, <a class="el" href="refimport_8php.html#ad97ebb5feda0230a4834e0b3637a0d29">refimport_content()</a>, <a class="el" href="refimport_8php.html#a01a29630fa5e1ce6cd5e1fd75280747c">reflect_comment_store()</a>, <a class="el" href="items_8php.html#adf2b8137dc4ad9ec958de2842f16f3c2">start_delivery_chain()</a>, <a class="el" href="subthread_8php.html#a50368f3d825b77996030528e7fbfa3d3">subthread_content()</a>, <a class="el" href="items_8php.html#ab1bce4261bcf75ad62753b498a144d17">tag_deliver()</a>, <a class="el" href="tagger_8php.html#a0e4a3eb177d1684553c547503d67161c">tagger_content()</a>, and <a class="el" href="thing_8php.html#a8be23b1d475ec3d9291999221c674c80">thing_init()</a>.</p>
</div>
</div>
@@ -2737,7 +3111,7 @@ Variables</h2></td></tr>
</table>
</div><div class="memdoc">
-<p>Referenced by <a class="el" href="editlayout_8php.html#aa877e4157a26b099de904164181dd386">editlayout_content()</a>, <a class="el" href="items_8php.html#a2541e6861a56d145c9281877cc501615">item_store()</a>, <a class="el" href="text_8php.html#a3999a0b3e22e440f280ee791ce34d384">layout_select()</a>, <a class="el" href="layouts_8php.html#a6e0193759ad9eef76d3df2db24237b50">layouts_content()</a>, <a class="el" href="notifier_8php.html#a568c502f626cff95e344c0748938b85d">notifier_run()</a>, and <a class="el" href="items_8php.html#a2baa9e05f1e8aa3dd61c85803ae39bd6">update_remote_id()</a>.</p>
+<p>Referenced by <a class="el" href="editlayout_8php.html#aa877e4157a26b099de904164181dd386">editlayout_content()</a>, <a class="el" href="impel_8php.html#ab7db6fca43b42ea4332cb3e841b3cf7b">impel_init()</a>, <a class="el" href="items_8php.html#a2541e6861a56d145c9281877cc501615">item_store()</a>, <a class="el" href="text_8php.html#a3999a0b3e22e440f280ee791ce34d384">layout_select()</a>, <a class="el" href="layouts_8php.html#a6e0193759ad9eef76d3df2db24237b50">layouts_content()</a>, <a class="el" href="notifier_8php.html#a568c502f626cff95e344c0748938b85d">notifier_run()</a>, and <a class="el" href="items_8php.html#a2baa9e05f1e8aa3dd61c85803ae39bd6">update_remote_id()</a>.</p>
</div>
</div>
@@ -2781,6 +3155,20 @@ Variables</h2></td></tr>
</div>
</div>
+<a class="anchor" id="ac4d1c93dabcace711ffb4931204c336b"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">const ITEM_RSS 0x8000</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p>Referenced by <a class="el" href="items_8php.html#a5e5be7bf1f8257dec0b2647e60a3f3f1">get_atom_elements()</a>.</p>
+
+</div>
+</div>
<a class="anchor" id="a40d885b2cfd736aab4234ae641ca4dfb"></a>
<div class="memitem">
<div class="memproto">
@@ -2817,7 +3205,7 @@ Variables</h2></td></tr>
</table>
</div><div class="memdoc">
-<p>Referenced by <a class="el" href="channel_8php.html#a9c6a6179e0e626398ebecc6151905ef1">channel_content()</a>, <a class="el" href="items_8php.html#a5f690fc2484abec07840b4f9dd525bd9">encode_item_flags()</a>, <a class="el" href="event_8php.html#a7378e839ac3de9d55579eb3ec48eaf92">event_store_item()</a>, <a class="el" href="include_2notify_8php.html#a0e61728e487df50c72e6434f911a57d3">format_notification()</a>, <a class="el" href="item_8php.html#a693cd09805755ab85bbb5ecae69a48c3">item_post()</a>, <a class="el" href="items_8php.html#a2541e6861a56d145c9281877cc501615">item_store()</a>, <a class="el" href="items_8php.html#a756738301f2ed96be50232500677d58a">items_fetch()</a>, <a class="el" href="like_8php.html#a9d7dd268f21c21e9d29dd2aca2dd9538">like_content()</a>, <a class="el" href="conversation_8php.html#a9bd7f9fb6678736c581bcba3b17f471c">localize_item()</a>, <a class="el" href="mood_8php.html#a7ae136dd7476865b4828136175db5022">mood_init()</a>, <a class="el" href="mod_2network_8php.html#a43f2f29b90c5e29072c561934bc8f8b4">network_content()</a>, <a class="el" href="include_2photos_8php.html#a6c40ef58aefef705a5adc84a40e97109">photo_upload()</a>, <a class="el" href="include_2photos_8php.html#ad648c0c5544fe9263409b6f6e57c6274">photos_create_item()</a>, <a class="el" href="poke_8php.html#a9725aab97b3983e6a98bd81c4efe7d3b">poke_init()</a>, <a class="el" href="items_8php.html#a410f9c743877c125ca06312373346903">post_activity_item()</a>, <a class="el" href="activities_8php.html#a80134e807719b3c54aba971958d2e132">profile_activity()</a>, <a class="el" href="subthread_8php.html#a50368f3d825b77996030528e7fbfa3d3">subthread_content()</a>, <a class="el" href="items_8php.html#ab1bce4261bcf75ad62753b498a144d17">tag_deliver()</a>, and <a class="el" href="thing_8php.html#a8be23b1d475ec3d9291999221c674c80">thing_init()</a>.</p>
+<p>Referenced by <a class="el" href="channel_8php.html#a9c6a6179e0e626398ebecc6151905ef1">channel_content()</a>, <a class="el" href="connedit_8php.html#a234c48426b652bf4d37053f2af329ac5">connedit_post()</a>, <a class="el" href="diaspora_8php.html#a20b968d64ef26afe5cb0cc75a7570a31">diaspora_post()</a>, <a class="el" href="items_8php.html#a5f690fc2484abec07840b4f9dd525bd9">encode_item_flags()</a>, <a class="el" href="event_8php.html#a7378e839ac3de9d55579eb3ec48eaf92">event_store_item()</a>, <a class="el" href="include_2notify_8php.html#a0e61728e487df50c72e6434f911a57d3">format_notification()</a>, <a class="el" href="item_8php.html#a693cd09805755ab85bbb5ecae69a48c3">item_post()</a>, <a class="el" href="items_8php.html#a2541e6861a56d145c9281877cc501615">item_store()</a>, <a class="el" href="items_8php.html#a756738301f2ed96be50232500677d58a">items_fetch()</a>, <a class="el" href="like_8php.html#a9d7dd268f21c21e9d29dd2aca2dd9538">like_content()</a>, <a class="el" href="conversation_8php.html#a9bd7f9fb6678736c581bcba3b17f471c">localize_item()</a>, <a class="el" href="mood_8php.html#a7ae136dd7476865b4828136175db5022">mood_init()</a>, <a class="el" href="mod_2network_8php.html#a43f2f29b90c5e29072c561934bc8f8b4">network_content()</a>, <a class="el" href="include_2photos_8php.html#a6c40ef58aefef705a5adc84a40e97109">photo_upload()</a>, <a class="el" href="include_2photos_8php.html#ad648c0c5544fe9263409b6f6e57c6274">photos_create_item()</a>, <a class="el" href="poke_8php.html#a9725aab97b3983e6a98bd81c4efe7d3b">poke_init()</a>, <a class="el" href="items_8php.html#a410f9c743877c125ca06312373346903">post_activity_item()</a>, <a class="el" href="activities_8php.html#a80134e807719b3c54aba971958d2e132">profile_activity()</a>, <a class="el" href="refimport_8php.html#ad97ebb5feda0230a4834e0b3637a0d29">refimport_content()</a>, <a class="el" href="subthread_8php.html#a50368f3d825b77996030528e7fbfa3d3">subthread_content()</a>, <a class="el" href="items_8php.html#ab1bce4261bcf75ad62753b498a144d17">tag_deliver()</a>, and <a class="el" href="thing_8php.html#a8be23b1d475ec3d9291999221c674c80">thing_init()</a>.</p>
</div>
</div>
@@ -2845,7 +3233,7 @@ Variables</h2></td></tr>
</table>
</div><div class="memdoc">
-<p>Referenced by <a class="el" href="include_2api_8php.html#a528d8070ee74ea800102936ce73cf366">api_statuses_home_timeline()</a>, <a class="el" href="channel_8php.html#a9c6a6179e0e626398ebecc6151905ef1">channel_content()</a>, <a class="el" href="display_8php.html#a37137c98d47bf3306f4c2bb9f5b60de0">display_content()</a>, <a class="el" href="include_2notify_8php.html#a0e61728e487df50c72e6434f911a57d3">format_notification()</a>, <a class="el" href="item_8php.html#a693cd09805755ab85bbb5ecae69a48c3">item_post()</a>, <a class="el" href="items_8php.html#a2541e6861a56d145c9281877cc501615">item_store()</a>, <a class="el" href="items_8php.html#acf0bf7c9d21ac84f32effb754f7ad484">item_store_update()</a>, <a class="el" href="items_8php.html#a756738301f2ed96be50232500677d58a">items_fetch()</a>, <a class="el" href="mood_8php.html#a7ae136dd7476865b4828136175db5022">mood_init()</a>, <a class="el" href="mod_2network_8php.html#a43f2f29b90c5e29072c561934bc8f8b4">network_content()</a>, and <a class="el" href="ping_8php.html#a77217b1b190b4c5d8770867b45f0c0a1">ping_init()</a>.</p>
+<p>Referenced by <a class="el" href="include_2api_8php.html#a528d8070ee74ea800102936ce73cf366">api_statuses_home_timeline()</a>, <a class="el" href="channel_8php.html#a9c6a6179e0e626398ebecc6151905ef1">channel_content()</a>, <a class="el" href="classItem.html#ae0c48b2fed5558642549cabd547fc4f3">Item\count_unseen_descendants()</a>, <a class="el" href="diaspora_8php.html#a20b968d64ef26afe5cb0cc75a7570a31">diaspora_post()</a>, <a class="el" href="display_8php.html#a37137c98d47bf3306f4c2bb9f5b60de0">display_content()</a>, <a class="el" href="include_2notify_8php.html#a0e61728e487df50c72e6434f911a57d3">format_notification()</a>, <a class="el" href="home_8php.html#a6e3dbf78f4ed74ab2577de221190b33f">home_content()</a>, <a class="el" href="item_8php.html#a693cd09805755ab85bbb5ecae69a48c3">item_post()</a>, <a class="el" href="items_8php.html#a2541e6861a56d145c9281877cc501615">item_store()</a>, <a class="el" href="items_8php.html#acf0bf7c9d21ac84f32effb754f7ad484">item_store_update()</a>, <a class="el" href="items_8php.html#a756738301f2ed96be50232500677d58a">items_fetch()</a>, <a class="el" href="manage_8php.html#a2bca247b5296827638959138367db4f5">manage_content()</a>, <a class="el" href="mood_8php.html#a7ae136dd7476865b4828136175db5022">mood_init()</a>, <a class="el" href="mod_2network_8php.html#a43f2f29b90c5e29072c561934bc8f8b4">network_content()</a>, and <a class="el" href="ping_8php.html#a77217b1b190b4c5d8770867b45f0c0a1">ping_init()</a>.</p>
</div>
</div>
@@ -2859,7 +3247,7 @@ Variables</h2></td></tr>
</table>
</div><div class="memdoc">
-<p>Referenced by <a class="el" href="externals_8php.html#a4df44079e6f915286088b7a0d44db926">externals_run()</a>, <a class="el" href="items_8php.html#a2541e6861a56d145c9281877cc501615">item_store()</a>, <a class="el" href="notifier_8php.html#a568c502f626cff95e344c0748938b85d">notifier_run()</a>, <a class="el" href="items_8php.html#ab1bce4261bcf75ad62753b498a144d17">tag_deliver()</a>, and <a class="el" href="items_8php.html#a88c6cf7649ac836fbbed82a7a0315110">tgroup_check()</a>.</p>
+<p>Referenced by <a class="el" href="externals_8php.html#a4df44079e6f915286088b7a0d44db926">externals_run()</a>, <a class="el" href="items_8php.html#a2541e6861a56d145c9281877cc501615">item_store()</a>, <a class="el" href="notifier_8php.html#a568c502f626cff95e344c0748938b85d">notifier_run()</a>, <a class="el" href="items_8php.html#adf2b8137dc4ad9ec958de2842f16f3c2">start_delivery_chain()</a>, <a class="el" href="items_8php.html#ab1bce4261bcf75ad62753b498a144d17">tag_deliver()</a>, and <a class="el" href="items_8php.html#a88c6cf7649ac836fbbed82a7a0315110">tgroup_check()</a>.</p>
</div>
</div>
@@ -2900,7 +3288,7 @@ Variables</h2></td></tr>
</div><div class="memdoc">
<p><a class="el" href="classItem.html">Item</a> visibility </p>
-<p>Referenced by <a class="el" href="items_8php.html#a0cf98bb619f07dd18f602683a55a5f59">first_post_date()</a>, <a class="el" href="include_2photos_8php.html#a6c40ef58aefef705a5adc84a40e97109">photo_upload()</a>, <a class="el" href="include_2photos_8php.html#ad648c0c5544fe9263409b6f6e57c6274">photos_create_item()</a>, and <a class="el" href="ping_8php.html#a77217b1b190b4c5d8770867b45f0c0a1">ping_init()</a>.</p>
+<p>Referenced by <a class="el" href="items_8php.html#a0cf98bb619f07dd18f602683a55a5f59">first_post_date()</a>, <a class="el" href="manage_8php.html#a2bca247b5296827638959138367db4f5">manage_content()</a>, <a class="el" href="include_2photos_8php.html#a6c40ef58aefef705a5adc84a40e97109">photo_upload()</a>, <a class="el" href="include_2photos_8php.html#ad648c0c5544fe9263409b6f6e57c6274">photos_create_item()</a>, and <a class="el" href="ping_8php.html#a77217b1b190b4c5d8770867b45f0c0a1">ping_init()</a>.</p>
</div>
</div>
@@ -2914,7 +3302,7 @@ Variables</h2></td></tr>
</table>
</div><div class="memdoc">
-<p>Referenced by <a class="el" href="include_2api_8php.html#aa40bae797bcd9ccacffdce5a3b5a1afa">api_get_user()</a>, <a class="el" href="channel_8php.html#a9c6a6179e0e626398ebecc6151905ef1">channel_content()</a>, <a class="el" href="items_8php.html#a555762e1022a4b8e3c3abd32e7812408">drop_item()</a>, <a class="el" href="event_8php.html#a7378e839ac3de9d55579eb3ec48eaf92">event_store_item()</a>, <a class="el" href="events_8php.html#a1d293fb217ae6bc9e3858c4b32e363ec">events_content()</a>, <a class="el" href="externals_8php.html#a4df44079e6f915286088b7a0d44db926">externals_run()</a>, <a class="el" href="items_8php.html#a0cf98bb619f07dd18f602683a55a5f59">first_post_date()</a>, <a class="el" href="items_8php.html#a6f7e1334af5d684a987fa6a3eb37f4cc">item_expire()</a>, <a class="el" href="item_8php.html#a693cd09805755ab85bbb5ecae69a48c3">item_post()</a>, <a class="el" href="items_8php.html#a2541e6861a56d145c9281877cc501615">item_store()</a>, <a class="el" href="items_8php.html#a756738301f2ed96be50232500677d58a">items_fetch()</a>, <a class="el" href="like_8php.html#a9d7dd268f21c21e9d29dd2aca2dd9538">like_content()</a>, <a class="el" href="mood_8php.html#a7ae136dd7476865b4828136175db5022">mood_init()</a>, <a class="el" href="enotify_8php.html#a3e9a9355b243777c488d2a9883908dfc">notification()</a>, <a class="el" href="notifier_8php.html#a568c502f626cff95e344c0748938b85d">notifier_run()</a>, <a class="el" href="include_2photos_8php.html#a6c40ef58aefef705a5adc84a40e97109">photo_upload()</a>, <a class="el" href="include_2photos_8php.html#ad648c0c5544fe9263409b6f6e57c6274">photos_create_item()</a>, <a class="el" href="ping_8php.html#a77217b1b190b4c5d8770867b45f0c0a1">ping_init()</a>, <a class="el" href="poke_8php.html#a9725aab97b3983e6a98bd81c4efe7d3b">poke_init()</a>, <a class="el" href="items_8php.html#a410f9c743877c125ca06312373346903">post_activity_item()</a>, <a class="el" href="zot_8php.html#a4d9e6ca295e443b740d9960c304b3474">process_delivery()</a>, <a class="el" href="activities_8php.html#a80134e807719b3c54aba971958d2e132">profile_activity()</a>, <a class="el" href="subthread_8php.html#a50368f3d825b77996030528e7fbfa3d3">subthread_content()</a>, <a class="el" href="items_8php.html#ab1bce4261bcf75ad62753b498a144d17">tag_deliver()</a>, <a class="el" href="tagger_8php.html#a0e4a3eb177d1684553c547503d67161c">tagger_content()</a>, <a class="el" href="thing_8php.html#a8be23b1d475ec3d9291999221c674c80">thing_init()</a>, <a class="el" href="widgets_8php.html#ae4ced69d83dbdd9e6b51660d9eba8653">widget_tagcloud_wall()</a>, and <a class="el" href="items_8php.html#a004e89d86b0f29b2c4da20108ecc4091">zot_feed()</a>.</p>
+<p>Referenced by <a class="el" href="include_2api_8php.html#aa40bae797bcd9ccacffdce5a3b5a1afa">api_get_user()</a>, <a class="el" href="channel_8php.html#a9c6a6179e0e626398ebecc6151905ef1">channel_content()</a>, <a class="el" href="connedit_8php.html#a234c48426b652bf4d37053f2af329ac5">connedit_post()</a>, <a class="el" href="items_8php.html#a555762e1022a4b8e3c3abd32e7812408">drop_item()</a>, <a class="el" href="event_8php.html#a7378e839ac3de9d55579eb3ec48eaf92">event_store_item()</a>, <a class="el" href="events_8php.html#a1d293fb217ae6bc9e3858c4b32e363ec">events_content()</a>, <a class="el" href="externals_8php.html#a4df44079e6f915286088b7a0d44db926">externals_run()</a>, <a class="el" href="items_8php.html#a0cf98bb619f07dd18f602683a55a5f59">first_post_date()</a>, <a class="el" href="identity_8php.html#afaedbc8e2d2a70ec8b006162baac5249">identity_basic_export()</a>, <a class="el" href="items_8php.html#a6f7e1334af5d684a987fa6a3eb37f4cc">item_expire()</a>, <a class="el" href="item_8php.html#a693cd09805755ab85bbb5ecae69a48c3">item_post()</a>, <a class="el" href="items_8php.html#a2541e6861a56d145c9281877cc501615">item_store()</a>, <a class="el" href="items_8php.html#a756738301f2ed96be50232500677d58a">items_fetch()</a>, <a class="el" href="like_8php.html#a9d7dd268f21c21e9d29dd2aca2dd9538">like_content()</a>, <a class="el" href="manage_8php.html#a2bca247b5296827638959138367db4f5">manage_content()</a>, <a class="el" href="mood_8php.html#a7ae136dd7476865b4828136175db5022">mood_init()</a>, <a class="el" href="enotify_8php.html#a3e9a9355b243777c488d2a9883908dfc">notification()</a>, <a class="el" href="notifier_8php.html#a568c502f626cff95e344c0748938b85d">notifier_run()</a>, <a class="el" href="p_8php.html#af9d5530ca0b3dc9409cf591c39e2480e">p_init()</a>, <a class="el" href="include_2photos_8php.html#a6c40ef58aefef705a5adc84a40e97109">photo_upload()</a>, <a class="el" href="include_2photos_8php.html#ad648c0c5544fe9263409b6f6e57c6274">photos_create_item()</a>, <a class="el" href="ping_8php.html#a77217b1b190b4c5d8770867b45f0c0a1">ping_init()</a>, <a class="el" href="poke_8php.html#a9725aab97b3983e6a98bd81c4efe7d3b">poke_init()</a>, <a class="el" href="items_8php.html#a410f9c743877c125ca06312373346903">post_activity_item()</a>, <a class="el" href="zot_8php.html#a0e3006e7a456b2175a9badc96bc5176d">process_delivery()</a>, <a class="el" href="activities_8php.html#a80134e807719b3c54aba971958d2e132">profile_activity()</a>, <a class="el" href="refimport_8php.html#ad97ebb5feda0230a4834e0b3637a0d29">refimport_content()</a>, <a class="el" href="refimport_8php.html#a01a29630fa5e1ce6cd5e1fd75280747c">reflect_comment_store()</a>, <a class="el" href="items_8php.html#adf2b8137dc4ad9ec958de2842f16f3c2">start_delivery_chain()</a>, <a class="el" href="subthread_8php.html#a50368f3d825b77996030528e7fbfa3d3">subthread_content()</a>, <a class="el" href="items_8php.html#ab1bce4261bcf75ad62753b498a144d17">tag_deliver()</a>, <a class="el" href="tagger_8php.html#a0e4a3eb177d1684553c547503d67161c">tagger_content()</a>, <a class="el" href="thing_8php.html#a8be23b1d475ec3d9291999221c674c80">thing_init()</a>, <a class="el" href="statistics__fns_8php.html#a82726229a961d3bd3d543005c61dd8e6">update_channels_active_halfyear_stat()</a>, <a class="el" href="statistics__fns_8php.html#ad2b7b595c039c4c2eb0d6cd57a393dfe">update_channels_active_monthly_stat()</a>, <a class="el" href="statistics__fns_8php.html#a9dd516dda693f17f5ce48a94876f7efa">update_local_posts_stat()</a>, <a class="el" href="widgets_8php.html#af919de8e7e2ba8192a65fadc72a2c8b5">widget_catcloud_wall()</a>, <a class="el" href="widgets_8php.html#ae4ced69d83dbdd9e6b51660d9eba8653">widget_tagcloud_wall()</a>, and <a class="el" href="items_8php.html#a1cf89557f32d5dfbe8bd90448dc1aa92">zot_feed()</a>.</p>
</div>
</div>
@@ -2928,7 +3316,7 @@ Variables</h2></td></tr>
</table>
</div><div class="memdoc">
-<p>Referenced by <a class="el" href="display_8php.html#a37137c98d47bf3306f4c2bb9f5b60de0">display_content()</a>, <a class="el" href="editwebpage_8php.html#a375e945255fad79a71036528f7480650">editwebpage_content()</a>, <a class="el" href="home_8php.html#aa1cf697851a646755baf537f75334c46">home_content()</a>, <a class="el" href="item_8php.html#a5b1b36cb301a94b38150074f0d424e74">item_check_service_class()</a>, <a class="el" href="items_8php.html#a756738301f2ed96be50232500677d58a">items_fetch()</a>, <a class="el" href="notifier_8php.html#a568c502f626cff95e344c0748938b85d">notifier_run()</a>, <a class="el" href="page_8php.html#a91a5f649f68406149108bded1dc90b22">page_content()</a>, <a class="el" href="items_8php.html#a2baa9e05f1e8aa3dd61c85803ae39bd6">update_remote_id()</a>, <a class="el" href="webpages_8php.html#af3b7397d4abc153e3d2147740ee1a41d">webpages_content()</a>, <a class="el" href="widgets_8php.html#a313a8d10ab81c71357c12e67e4d7efd5">widget_item()</a>, and <a class="el" href="widgets_8php.html#a6dbc227aac750774284ee39c45f0a200">widget_tagcloud()</a>.</p>
+<p>Referenced by <a class="el" href="display_8php.html#a37137c98d47bf3306f4c2bb9f5b60de0">display_content()</a>, <a class="el" href="editwebpage_8php.html#a375e945255fad79a71036528f7480650">editwebpage_content()</a>, <a class="el" href="home_8php.html#a6e3dbf78f4ed74ab2577de221190b33f">home_content()</a>, <a class="el" href="impel_8php.html#ab7db6fca43b42ea4332cb3e841b3cf7b">impel_init()</a>, <a class="el" href="item_8php.html#a5b1b36cb301a94b38150074f0d424e74">item_check_service_class()</a>, <a class="el" href="items_8php.html#a756738301f2ed96be50232500677d58a">items_fetch()</a>, <a class="el" href="notifier_8php.html#a568c502f626cff95e344c0748938b85d">notifier_run()</a>, <a class="el" href="page_8php.html#a4d89800c0366a239191b1692c09635cf">page_init()</a>, <a class="el" href="items_8php.html#a2baa9e05f1e8aa3dd61c85803ae39bd6">update_remote_id()</a>, <a class="el" href="webpages_8php.html#af3b7397d4abc153e3d2147740ee1a41d">webpages_content()</a>, <a class="el" href="widgets_8php.html#a313a8d10ab81c71357c12e67e4d7efd5">widget_item()</a>, and <a class="el" href="widgets_8php.html#a6dbc227aac750774284ee39c45f0a200">widget_tagcloud()</a>.</p>
</div>
</div>
@@ -3000,7 +3388,7 @@ Variables</h2></td></tr>
</table>
</div><div class="memdoc">
-<p>Referenced by <a class="el" href="classRedDirectory.html#a1e35e3cd31d2a15250655e4cafdea180">RedDirectory\__construct()</a>, <a class="el" href="classRedFile.html#a9a67bdb34c9db6ce144b3f371148b183">RedFile\__construct()</a>, <a class="el" href="admin_8php.html#a1d1362698af14d209aa3a0fb655551dd">admin_page_logs()</a>, <a class="el" href="zot_8php.html#ac34e479d27f32b82dd6b33542f81a6a7">build_sync_packet()</a>, <a class="el" href="security_8php.html#a444ac867dfa8c37cf0a7a226412bee28">check_form_security_token_ForbiddenOnErr()</a>, <a class="el" href="security_8php.html#a77ba0d1889a39cf32434c5ce96fe1433">check_form_security_token_redirectOnErr()</a>, <a class="el" href="classRedDirectory.html#a5e3fc08b2bf9f61cea4d2ccae0495bec">RedDirectory\childExists()</a>, <a class="el" href="classRedDirectory.html#a2d12d99d38a6a75fc9a830b2f7fc0bf0">RedDirectory\createFile()</a>, <a class="el" href="deliver_8php.html#a397afcb9afecf0c1816b0951189dd346">deliver_run()</a>, <a class="el" href="language_8php.html#a632da17c7ac0d2dc1a00a4706870194b">detect_language()</a>, <a class="el" href="dirsearch_8php.html#a7d4cd9890d5ed23c3efc58e2a778a305">dir_parse_query()</a>, <a class="el" href="mod_2directory_8php.html#aac79396570d759da2efac24fcedf5b44">directory_content()</a>, <a class="el" href="dirprofile_8php.html#a3e1d30d3d93863ff5615f2df4ac7f052">dirprofile_init()</a>, <a class="el" href="items_8php.html#a82955cc578f0fa600acec84475026194">encode_item()</a>, <a class="el" href="items_8php.html#aba98fcbbcd7044a7e9ea34edabc14c87">fix_private_photos()</a>, <a class="el" href="classRedDirectory.html#aaa20f0f44da23781917af8170c0a2569">RedDirectory\getChild()</a>, <a class="el" href="classRedDirectory.html#aa42d3065f6f065b17db87146a7cb031a">RedDirectory\getChildren()</a>, <a class="el" href="classRedDirectory.html#a70173d4458572d95e586b2037d2fd2f4">RedDirectory\getDir()</a>, <a class="el" href="classRedDirectory.html#af6e4475dbd5abcdede00d20b8d388583">RedDirectory\getName()</a>, <a class="el" href="zot_8php.html#a528e97ca5d69c3b7f35c5d954afde315">import_xchan()</a>, <a class="el" href="item_8php.html#a693cd09805755ab85bbb5ecae69a48c3">item_post()</a>, <a class="el" href="items_8php.html#a2541e6861a56d145c9281877cc501615">item_store()</a>, <a class="el" href="items_8php.html#acf0bf7c9d21ac84f32effb754f7ad484">item_store_update()</a>, <a class="el" href="classRedDirectory.html#a11376aed1963b4471eb1592c13c63976">RedDirectory\log()</a>, <a class="el" href="classRedBasicAuth.html#a2cc8b1eac9c5a799bfb53ea7f287f3f0">RedBasicAuth\log()</a>, <a class="el" href="magic_8php.html#acea2cc792849ca2d71d4b689f66518bf">magic_init()</a>, <a class="el" href="mail_8php.html#acfc2cc0bf4e0b178207758384977f25a">mail_post()</a>, <a class="el" href="items_8php.html#a77da7ce9a117601d49ac4a67c71b514f">mail_store()</a>, <a class="el" href="include_2group_8php.html#ab0e422a0f31c0c64fd9084ca03d85f32">mini_group_select()</a>, <a class="el" href="include_2follow_8php.html#ae387d4ae097c23d69f3247e7f08140c7">new_contact()</a>, <a class="el" href="notifier_8php.html#a568c502f626cff95e344c0748938b85d">notifier_run()</a>, <a class="el" href="onepoll_8php.html#a72753b2fdec79b37c7f432035c91fb6d">onepoll_run()</a>, <a class="el" href="openid_8php.html#a9a13827dbcf61ae4e45f0b6b33a88f43">openid_content()</a>, <a class="el" href="include_2network_8php.html#a27a951b59d8d622c0b3e7b0673ba74c6">parse_xml_string()</a>, <a class="el" href="mod_2photos_8php.html#a062bed4d04d14fee8a53f4c9be673080">photos_post()</a>, <a class="el" href="ping_8php.html#a77217b1b190b4c5d8770867b45f0c0a1">ping_init()</a>, <a class="el" href="socgraph_8php.html#a5ef8bef37161df53718a21e93d02fbd6">poco_load()</a>, <a class="el" href="post_8php.html#af59e6a1dc22d19d9257b01cd7ccedb75">post_post()</a>, <a class="el" href="zot_8php.html#a083aec6c900d244e1bfc1406f9461465">public_recips()</a>, <a class="el" href="reddav_8php.html#ae92ea0df1993f6a7bcd1b6efa6c1fb66">RedChannelList()</a>, <a class="el" href="reddav_8php.html#a5df0d09893f2e65dc5cf6bbab6cfb266">RedCollectionData()</a>, <a class="el" href="classRedDirectory.html#adc48035679e52c55d9881f83de535553">RedDirectory\setName()</a>, <a class="el" href="dir__fns_8php.html#aa666e7df6ca8c332f4081c9b66b4bdf6">sync_directories()</a>, <a class="el" href="items_8php.html#ab1bce4261bcf75ad62753b498a144d17">tag_deliver()</a>, <a class="el" href="items_8php.html#a88c6cf7649ac836fbbed82a7a0315110">tgroup_check()</a>, <a class="el" href="dir__fns_8php.html#a44062d4b471d1e83f92f6c184585aa13">update_directory_entry()</a>, <a class="el" href="include_2network_8php.html#adf6008b38c555e98e7ed10da9ede2335">webfinger_dfrn()</a>, <a class="el" href="include_2network_8php.html#a99353baabbc3e0584b85eb79ee802cff">xml2array()</a>, <a class="el" href="include_2network_8php.html#aafd06c0a75402aefb06cfb9f9740fa37">z_fetch_url()</a>, <a class="el" href="include_2network_8php.html#a9129fd55e7fc175b4ea9a195cccc16bc">z_post_url()</a>, <a class="el" href="zot_8php.html#a3862b3161b2c8557dc1a95020179bd81">zot_build_packet()</a>, <a class="el" href="zot_8php.html#a61cdc1ec843663c423ed2d8160ae5aea">zot_fetch()</a>, <a class="el" href="zot_8php.html#aeea071f17e306fe3d0c488551906bfab">zot_import()</a>, <a class="el" href="zot_8php.html#a928f5643ca66ae9635d85aeb2be62e03">zot_process_response()</a>, <a class="el" href="zot_8php.html#a7ac30ff51274bf0b6d3eade37972145c">zot_refresh()</a>, and <a class="el" href="zot_8php.html#a5bcdfef419b16075a0eca990956223dc">zot_register_hub()</a>.</p>
+<p>Referenced by <a class="el" href="admin_8php.html#a1d1362698af14d209aa3a0fb655551dd">admin_page_logs()</a>, <a class="el" href="zot_8php.html#a703f528ade8382cf374e4119bd6f7859">allowed_public_recips()</a>, <a class="el" href="bb2diaspora_8php.html#aab32042f8bd63552d3fadeeae9eab083">bb2diaspora_itemwallwall()</a>, <a class="el" href="zot_8php.html#aa97b33b619dd7132a9274f852af6ceb5">build_sync_packet()</a>, <a class="el" href="security_8php.html#a444ac867dfa8c37cf0a7a226412bee28">check_form_security_token_ForbiddenOnErr()</a>, <a class="el" href="security_8php.html#a77ba0d1889a39cf32434c5ce96fe1433">check_form_security_token_redirectOnErr()</a>, <a class="el" href="items_8php.html#adc26e08aa61f5666da04ab5d2a9d68a6">consume_feed()</a>, <a class="el" href="deliver_8php.html#a397afcb9afecf0c1816b0951189dd346">deliver_run()</a>, <a class="el" href="language_8php.html#a632da17c7ac0d2dc1a00a4706870194b">detect_language()</a>, <a class="el" href="diaspora_8php.html#a849754ec369e1a60fadae5c14584ca36">diaspora_decode()</a>, <a class="el" href="diaspora_8php.html#a4901762cba5cd8dcdc57bdf285eefb1b">diaspora_msg_build()</a>, <a class="el" href="diaspora_8php.html#a586d5a3ba92d35cee14f879f290072aa">diaspora_pubmsg_build()</a>, <a class="el" href="diaspora_8php.html#a2bf43f6b5890897f425ef4325d34b007">diaspora_reshare()</a>, <a class="el" href="diaspora_8php.html#af4698b165766f83d89ec1ea964bc92cc">diaspora_send_followup()</a>, <a class="el" href="diaspora_8php.html#ae6f52efd81fe515cd9912bc8293abf5b">diaspora_send_images()</a>, <a class="el" href="diaspora_8php.html#aeb2bb78f620dbf51d9335e6eb7444f2c">diaspora_send_mail()</a>, <a class="el" href="diaspora_8php.html#a0b3628a5e53332c3d3196b689fe2b94d">diaspora_send_relay()</a>, <a class="el" href="diaspora_8php.html#a33ae0c4606a7df4d801c05507d87f668">diaspora_send_status()</a>, <a class="el" href="dirsearch_8php.html#a7d4cd9890d5ed23c3efc58e2a778a305">dir_parse_query()</a>, <a class="el" href="mod_2directory_8php.html#aac79396570d759da2efac24fcedf5b44">directory_content()</a>, <a class="el" href="include_2network_8php.html#a5176176ddc1906d91f186df6fbd87b48">discover_by_url()</a>, <a class="el" href="items_8php.html#a56b0f5d2cb36eb8f4bfca84813884f86">encode_item()</a>, <a class="el" href="include_2network_8php.html#a850ed5307c6a18076f4b80addc99602d">fetch_xrd_links()</a>, <a class="el" href="diaspora_8php.html#aade0c165fcdded71352c7a67bf6ce37b">find_diaspora_person_by_handle()</a>, <a class="el" href="items_8php.html#aba98fcbbcd7044a7e9ea34edabc14c87">fix_private_photos()</a>, <a class="el" href="items_8php.html#a5e5be7bf1f8257dec0b2647e60a3f3f1">get_atom_elements()</a>, <a class="el" href="classRedMatrix_1_1RedDAV_1_1RedDirectory.html#a1a37850bdd1f188abd6160559698d5d7">RedMatrix\RedDAV\RedDirectory\getChild()</a>, <a class="el" href="classRedMatrix_1_1RedDAV_1_1RedDirectory.html#a825dc5f3e0f83f50736c16daa6a4809d">RedMatrix\RedDAV\RedDirectory\getDir()</a>, <a class="el" href="impel_8php.html#ab7db6fca43b42ea4332cb3e841b3cf7b">impel_init()</a>, <a class="el" href="zot_8php.html#a528e97ca5d69c3b7f35c5d954afde315">import_xchan()</a>, <a class="el" href="item_8php.html#a693cd09805755ab85bbb5ecae69a48c3">item_post()</a>, <a class="el" href="items_8php.html#a2541e6861a56d145c9281877cc501615">item_store()</a>, <a class="el" href="items_8php.html#acf0bf7c9d21ac84f32effb754f7ad484">item_store_update()</a>, <a class="el" href="classRedMatrix_1_1RedDAV_1_1RedDirectory.html#af90a1a74cfd643a5c56b9a17ea250d59">RedMatrix\RedDAV\RedDirectory\log()</a>, <a class="el" href="classRedMatrix_1_1RedDAV_1_1RedBasicAuth.html#abf6fe89b0a8239ed93c3b07e1fbce75b">RedMatrix\RedDAV\RedBasicAuth\log()</a>, <a class="el" href="magic_8php.html#acea2cc792849ca2d71d4b689f66518bf">magic_init()</a>, <a class="el" href="mail_8php.html#acfc2cc0bf4e0b178207758384977f25a">mail_post()</a>, <a class="el" href="items_8php.html#a77da7ce9a117601d49ac4a67c71b514f">mail_store()</a>, <a class="el" href="include_2group_8php.html#ab0e422a0f31c0c64fd9084ca03d85f32">mini_group_select()</a>, <a class="el" href="include_2follow_8php.html#ae387d4ae097c23d69f3247e7f08140c7">new_contact()</a>, <a class="el" href="notifier_8php.html#a568c502f626cff95e344c0748938b85d">notifier_run()</a>, <a class="el" href="include_2network_8php.html#a872bbe72d23826c64c9e0f822180a3ec">old_webfinger()</a>, <a class="el" href="onepoll_8php.html#a72753b2fdec79b37c7f432035c91fb6d">onepoll_run()</a>, <a class="el" href="openid_8php.html#a9a13827dbcf61ae4e45f0b6b33a88f43">openid_content()</a>, <a class="el" href="include_2network_8php.html#a27a951b59d8d622c0b3e7b0673ba74c6">parse_xml_string()</a>, <a class="el" href="mod_2photos_8php.html#a062bed4d04d14fee8a53f4c9be673080">photos_post()</a>, <a class="el" href="ping_8php.html#a77217b1b190b4c5d8770867b45f0c0a1">ping_init()</a>, <a class="el" href="socgraph_8php.html#a5ef8bef37161df53718a21e93d02fbd6">poco_load()</a>, <a class="el" href="post_8php.html#af59e6a1dc22d19d9257b01cd7ccedb75">post_post()</a>, <a class="el" href="zot_8php.html#a083aec6c900d244e1bfc1406f9461465">public_recips()</a>, <a class="el" href="receive_8php.html#a03d8fa26e77844020ba5602deca7d494">receive_post()</a>, <a class="el" href="reddav_8php.html#ae92ea0df1993f6a7bcd1b6efa6c1fb66">RedChannelList()</a>, <a class="el" href="reddav_8php.html#a9f531641dfb4e43cd88ac1a9ae7e2088">RedFileData()</a>, <a class="el" href="classRedMatrix_1_1RedDAV_1_1RedFile.html#a0350cb4e0327e1f9922869a48ee04f1d">RedMatrix\RedDAV\RedFile\setName()</a>, <a class="el" href="classRedMatrix_1_1RedDAV_1_1RedDirectory.html#a14ac61d31a031d139956763db4e03956">RedMatrix\RedDAV\RedDirectory\setName()</a>, <a class="el" href="dir__fns_8php.html#aa666e7df6ca8c332f4081c9b66b4bdf6">sync_directories()</a>, <a class="el" href="items_8php.html#ab1bce4261bcf75ad62753b498a144d17">tag_deliver()</a>, <a class="el" href="items_8php.html#a88c6cf7649ac836fbbed82a7a0315110">tgroup_check()</a>, <a class="el" href="dir__fns_8php.html#a44062d4b471d1e83f92f6c184585aa13">update_directory_entry()</a>, <a class="el" href="items_8php.html#a9b449eeae50003414b8b30ca927af434">update_feed_item()</a>, <a class="el" href="include_2network_8php.html#a99353baabbc3e0584b85eb79ee802cff">xml2array()</a>, <a class="el" href="include_2network_8php.html#aafd06c0a75402aefb06cfb9f9740fa37">z_fetch_url()</a>, <a class="el" href="include_2network_8php.html#a9129fd55e7fc175b4ea9a195cccc16bc">z_post_url()</a>, <a class="el" href="zot_8php.html#a084c581d534e7e3b759488b46602288f">zot_build_packet()</a>, <a class="el" href="zot_8php.html#a61cdc1ec843663c423ed2d8160ae5aea">zot_fetch()</a>, <a class="el" href="zot_8php.html#a95528377d7303131958c9f0b7158fdce">zot_finger()</a>, <a class="el" href="zot_8php.html#aeea071f17e306fe3d0c488551906bfab">zot_import()</a>, <a class="el" href="zot_8php.html#a928f5643ca66ae9635d85aeb2be62e03">zot_process_response()</a>, <a class="el" href="zot_8php.html#a7ac30ff51274bf0b6d3eade37972145c">zot_refresh()</a>, and <a class="el" href="zot_8php.html#a5bcdfef419b16075a0eca990956223dc">zot_register_hub()</a>.</p>
</div>
</div>
@@ -3014,7 +3402,7 @@ Variables</h2></td></tr>
</table>
</div><div class="memdoc">
-<p>Referenced by <a class="el" href="classItem.html#a80dcd9d0f548c3ad550abe7e6981fb51">Item\add_child()</a>, <a class="el" href="classConversation.html#a8335cdd43f1836e3c255638e61a09e16">Conversation\add_thread()</a>, <a class="el" href="admin_8php.html#afef415e4011607fbb665610441595015">admin_content()</a>, <a class="el" href="admin_8php.html#a60ba9783ad14545814919970bc3fb725">admin_page_hubloc_post()</a>, <a class="el" href="admin_8php.html#a1d1362698af14d209aa3a0fb655551dd">admin_page_logs()</a>, <a class="el" href="admin_8php.html#acf51f5837a7427832144c2bf7308ada3">admin_post()</a>, <a class="el" href="include_2api_8php.html#afe534f826e4282b72d66e8cadca7bb73">api_login()</a>, <a class="el" href="include_2api_8php.html#a32f0dda848d0c11c727fe1c3e741c283">api_statuses_user_timeline()</a>, <a class="el" href="include_2network_8php.html#ab07ce9d75eae559865ed90aad2154bd7">avatar_img()</a>, <a class="el" href="include_2bookmarks_8php.html#aef1cb2968c41c759f2d106e1088ca323">bookmark_add()</a>, <a class="el" href="items_8php.html#a8794863cdf8ce1333040933d3a3f66bd">consume_feed()</a>, <a class="el" href="conversation_8php.html#affea1afb3f32ca41e966c8ddb4204d81">conversation()</a>, <a class="el" href="classRedDirectory.html#a986936910f0216887a25e28916c166c7">RedDirectory\createDirectory()</a>, <a class="el" href="classRedDirectory.html#a2d12d99d38a6a75fc9a830b2f7fc0bf0">RedDirectory\createFile()</a>, <a class="el" href="classRedFile.html#aef71c9eaac7052be7dc8602eb12171e7">RedFile\delete()</a>, <a class="el" href="zot_8php.html#adfeb9400ae6b726beec89f8f1e8fde72">delete_imported_item()</a>, <a class="el" href="deliver_8php.html#a397afcb9afecf0c1816b0951189dd346">deliver_run()</a>, <a class="el" href="mod_2directory_8php.html#aac79396570d759da2efac24fcedf5b44">directory_content()</a>, <a class="el" href="include_2directory_8php.html#aa75d3b0697ca1456aaabdb37a74aa0f0">directory_run()</a>, <a class="el" href="dirprofile_8php.html#a3e1d30d3d93863ff5615f2df4ac7f052">dirprofile_init()</a>, <a class="el" href="expire_8php.html#a444e45c9b67727b27db4c779fd51a298">expire_run()</a>, <a class="el" href="externals_8php.html#a4df44079e6f915286088b7a0d44db926">externals_run()</a>, <a class="el" href="items_8php.html#aba98fcbbcd7044a7e9ea34edabc14c87">fix_private_photos()</a>, <a class="el" href="classRedFile.html#a7c868dfcef6c70cd0e24cf3caa2c3535">RedFile\get()</a>, <a class="el" href="language_8php.html#a43e6ddba9df019c9ac3ab4c94c444ae7">get_language_name()</a>, <a class="el" href="classConversation.html#a2a96b7a6573ae53db861624659e831cb">Conversation\get_template_data()</a>, <a class="el" href="classRedDirectory.html#a70173d4458572d95e586b2037d2fd2f4">RedDirectory\getDir()</a>, <a class="el" href="classRedFile.html#a0c961c5f49544d2502420361fa526437">RedFile\getName()</a>, <a class="el" href="mod_2group_8php.html#a07a64f6c65b0080d8190b3d9728a7a83">group_content()</a>, <a class="el" href="photo__driver_8php.html#a243cee492ce443afb6a7d77d54b6c4aa">guess_image_type()</a>, <a class="el" href="items_8php.html#a6bee35961f2e32905f20367a9309d627">import_author_rss()</a>, <a class="el" href="zot_8php.html#ad149f1e98c0c5b88ff9147e6ee3f330d">import_author_zot()</a>, <a class="el" href="photo__driver_8php.html#a1d0bc7161dec0d177b7d3bbe4421af9a">import_channel_photo()</a>, <a class="el" href="zot_8php.html#a20750dd2c36961013fd382fb34e1366c">import_directory_profile()</a>, <a class="el" href="photo__driver_8php.html#a78f5a10c568d2a9bbbb129dc96548887">import_profile_photo()</a>, <a class="el" href="zot_8php.html#a528e97ca5d69c3b7f35c5d954afde315">import_xchan()</a>, <a class="el" href="item_8php.html#a693cd09805755ab85bbb5ecae69a48c3">item_post()</a>, <a class="el" href="items_8php.html#a2541e6861a56d145c9281877cc501615">item_store()</a>, <a class="el" href="items_8php.html#acf0bf7c9d21ac84f32effb754f7ad484">item_store_update()</a>, <a class="el" href="like_8php.html#a9d7dd268f21c21e9d29dd2aca2dd9538">like_content()</a>, <a class="el" href="items_8php.html#af94c281016c6c912d06e064113336c5c">limit_body_size()</a>, <a class="el" href="plugin_8php.html#a9ca9632b7309a65b05c03a3e2f473a3d">load_plugin()</a>, <a class="el" href="dir__fns_8php.html#acd37b17dce3bdec6d5a6344a20598c1e">local_dir_update()</a>, <a class="el" href="classFKOAuth1.html#a2b1dac2ed31fc6ef84668afdda8b263f">FKOAuth1\loginUser()</a>, <a class="el" href="magic_8php.html#acea2cc792849ca2d71d4b689f66518bf">magic_init()</a>, <a class="el" href="items_8php.html#a77da7ce9a117601d49ac4a67c71b514f">mail_store()</a>, <a class="el" href="mood_8php.html#a7ae136dd7476865b4828136175db5022">mood_init()</a>, <a class="el" href="include_2follow_8php.html#ae387d4ae097c23d69f3247e7f08140c7">new_contact()</a>, <a class="el" href="notes_8php.html#a4dbd7b1f906440746af48b484d66535a">notes_init()</a>, <a class="el" href="enotify_8php.html#a3e9a9355b243777c488d2a9883908dfc">notification()</a>, <a class="el" href="notifier_8php.html#a568c502f626cff95e344c0748938b85d">notifier_run()</a>, <a class="el" href="parse__url_8php.html#a05a9e8944380ba3cf6bbf5893dd4b74b">parse_url_content()</a>, <a class="el" href="include_2photos_8php.html#a6c40ef58aefef705a5adc84a40e97109">photo_upload()</a>, <a class="el" href="mod_2photos_8php.html#a062bed4d04d14fee8a53f4c9be673080">photos_post()</a>, <a class="el" href="poco_8php.html#a53def16f75e3d41f1d2bb7cfa4905498">poco_init()</a>, <a class="el" href="socgraph_8php.html#a5ef8bef37161df53718a21e93d02fbd6">poco_load()</a>, <a class="el" href="poke_8php.html#a9725aab97b3983e6a98bd81c4efe7d3b">poke_init()</a>, <a class="el" href="post_8php.html#af59e6a1dc22d19d9257b01cd7ccedb75">post_post()</a>, <a class="el" href="zot_8php.html#a4d9e6ca295e443b740d9960c304b3474">process_delivery()</a>, <a class="el" href="zot_8php.html#a9a57b40669351c9791126b925cb7ef3b">process_profile_delivery()</a>, <a class="el" href="identity_8php.html#a4751b522ea913d0e7ed43e03d22e9e68">profile_load()</a>, <a class="el" href="classRedFile.html#a41a49a583eb276b75626fcf97f4a699c">RedFile\put()</a>, <a class="el" href="reddav_8php.html#a9f531641dfb4e43cd88ac1a9ae7e2088">RedFileData()</a>, <a class="el" href="classItem.html#a2ce70ef63f9f4d86a09c351678806925">Item\remove_child()</a>, <a class="el" href="include_2network_8php.html#ae8d9c41a11000fb8667039fc71b4f73f">scale_external_images()</a>, <a class="el" href="classenotify.html#afbc088860f534c6c05788b48cfc262c6">enotify\send()</a>, <a class="el" href="classConversation.html#a66f121ca4026246f86a732e5faa0682c">Conversation\set_mode()</a>, <a class="el" href="classRedFile.html#a38a82bfc1b30028ea6ac75923e90fa25">RedFile\setName()</a>, <a class="el" href="security_8php.html#a6126c77a1267e046ac59cf864613f011">stream_perms_api_uids()</a>, <a class="el" href="security_8php.html#a3ef2be6a7e4928e39d50059d6feb457c">stream_perms_xchans()</a>, <a class="el" href="items_8php.html#ab1bce4261bcf75ad62753b498a144d17">tag_deliver()</a>, <a class="el" href="plugin_8php.html#a90538627db68605aeb6db17a8ead6523">unload_plugin()</a>, <a class="el" href="include_2network_8php.html#aafd06c0a75402aefb06cfb9f9740fa37">z_fetch_url()</a>, <a class="el" href="include_2network_8php.html#a9129fd55e7fc175b4ea9a195cccc16bc">z_post_url()</a>, <a class="el" href="items_8php.html#a004e89d86b0f29b2c4da20108ecc4091">zot_feed()</a>, <a class="el" href="zot_8php.html#a95528377d7303131958c9f0b7158fdce">zot_finger()</a>, <a class="el" href="zot_8php.html#a55056e863a7860bc0cf922e78fcce073">zot_gethub()</a>, <a class="el" href="zot_8php.html#a5bcdfef419b16075a0eca990956223dc">zot_register_hub()</a>, and <a class="el" href="zotfeed_8php.html#a24dfc23d366e7f840cf2847d0c1c8eac">zotfeed_init()</a>.</p>
+<p>Referenced by <a class="el" href="classItem.html#a80dcd9d0f548c3ad550abe7e6981fb51">Item\add_child()</a>, <a class="el" href="classConversation.html#a8335cdd43f1836e3c255638e61a09e16">Conversation\add_thread()</a>, <a class="el" href="admin_8php.html#afef415e4011607fbb665610441595015">admin_content()</a>, <a class="el" href="admin_8php.html#a60ba9783ad14545814919970bc3fb725">admin_page_hubloc_post()</a>, <a class="el" href="admin_8php.html#a1d1362698af14d209aa3a0fb655551dd">admin_page_logs()</a>, <a class="el" href="admin_8php.html#acf51f5837a7427832144c2bf7308ada3">admin_post()</a>, <a class="el" href="include_2api_8php.html#afe534f826e4282b72d66e8cadca7bb73">api_login()</a>, <a class="el" href="include_2api_8php.html#a32f0dda848d0c11c727fe1c3e741c283">api_statuses_user_timeline()</a>, <a class="el" href="include_2network_8php.html#ab07ce9d75eae559865ed90aad2154bd7">avatar_img()</a>, <a class="el" href="bb2diaspora_8php.html#aab32042f8bd63552d3fadeeae9eab083">bb2diaspora_itemwallwall()</a>, <a class="el" href="include_2bookmarks_8php.html#aef1cb2968c41c759f2d106e1088ca323">bookmark_add()</a>, <a class="el" href="items_8php.html#adc26e08aa61f5666da04ab5d2a9d68a6">consume_feed()</a>, <a class="el" href="conversation_8php.html#affea1afb3f32ca41e966c8ddb4204d81">conversation()</a>, <a class="el" href="classRedMatrix_1_1RedDAV_1_1RedDirectory.html#aca0e8d574ea66a0e210f571700663c62">RedMatrix\RedDAV\RedDirectory\createDirectory()</a>, <a class="el" href="classRedMatrix_1_1RedDAV_1_1RedDirectory.html#a58e750256cdc2f0f79fbe8d5463ffefe">RedMatrix\RedDAV\RedDirectory\createFile()</a>, <a class="el" href="classRedMatrix_1_1RedDAV_1_1RedFile.html#ab7ab7ba81fab28eb02382cfdfd80ecfe">RedMatrix\RedDAV\RedFile\delete()</a>, <a class="el" href="zot_8php.html#adfeb9400ae6b726beec89f8f1e8fde72">delete_imported_item()</a>, <a class="el" href="deliver_8php.html#a397afcb9afecf0c1816b0951189dd346">deliver_run()</a>, <a class="el" href="diaspora_8php.html#adef30b6fac948baedcc7194d5d155b5f">diaspora_conversation()</a>, <a class="el" href="diaspora_8php.html#a5ed66b910d7b0284f9b3ee04e72306ff">diaspora_handle_from_contact()</a>, <a class="el" href="diaspora_8php.html#a5d57518545baa31cf8a85a937a267681">diaspora_like()</a>, <a class="el" href="diaspora_8php.html#a7cff2f8f11044c1b3a360f20e1bbee46">diaspora_message()</a>, <a class="el" href="diaspora_8php.html#a71fe9bb66626b4197ae018a230778bb2">diaspora_photo()</a>, <a class="el" href="diaspora_8php.html#a2bf43f6b5890897f425ef4325d34b007">diaspora_reshare()</a>, <a class="el" href="diaspora_8php.html#aa704d6aa2ac77be345c0f501168e6e56">diaspora_transmit()</a>, <a class="el" href="mod_2directory_8php.html#aac79396570d759da2efac24fcedf5b44">directory_content()</a>, <a class="el" href="include_2directory_8php.html#aa75d3b0697ca1456aaabdb37a74aa0f0">directory_run()</a>, <a class="el" href="include_2network_8php.html#a63e62946e194928eb17c5a9f2bbef0fe">discover_by_webbie()</a>, <a class="el" href="expire_8php.html#a444e45c9b67727b27db4c779fd51a298">expire_run()</a>, <a class="el" href="externals_8php.html#a4df44079e6f915286088b7a0d44db926">externals_run()</a>, <a class="el" href="include_2network_8php.html#a8d5a3afb51cc932032b5dcc159efaae0">fetch_lrdd_template()</a>, <a class="el" href="items_8php.html#aba98fcbbcd7044a7e9ea34edabc14c87">fix_private_photos()</a>, <a class="el" href="classRedMatrix_1_1RedDAV_1_1RedFile.html#a7241beecd01f5bb4e74659863dd85bd8">RedMatrix\RedDAV\RedFile\get()</a>, <a class="el" href="diaspora_8php.html#a9bf7ef4094e0e14f6e2b7fe76ab7ad2e">get_diaspora_key()</a>, <a class="el" href="diaspora_8php.html#ac9e41e46626dc608204bf4b5e16e62d7">get_diaspora_reshare_xml()</a>, <a class="el" href="classConversation.html#a2a96b7a6573ae53db861624659e831cb">Conversation\get_template_data()</a>, <a class="el" href="mod_2group_8php.html#a07a64f6c65b0080d8190b3d9728a7a83">group_content()</a>, <a class="el" href="photo__driver_8php.html#a243cee492ce443afb6a7d77d54b6c4aa">guess_image_type()</a>, <a class="el" href="hubloc_8php.html#ad86214b3a74084bd7b54e8d6c919ce4d">hubloc_change_primary()</a>, <a class="el" href="items_8php.html#a6bee35961f2e32905f20367a9309d627">import_author_rss()</a>, <a class="el" href="items_8php.html#a37f79991f36811cf847446ff60e8e11f">import_author_unknown()</a>, <a class="el" href="zot_8php.html#ad149f1e98c0c5b88ff9147e6ee3f330d">import_author_zot()</a>, <a class="el" href="photo__driver_8php.html#a1d0bc7161dec0d177b7d3bbe4421af9a">import_channel_photo()</a>, <a class="el" href="zot_8php.html#a20750dd2c36961013fd382fb34e1366c">import_directory_profile()</a>, <a class="el" href="photo__driver_8php.html#a78f5a10c568d2a9bbbb129dc96548887">import_profile_photo()</a>, <a class="el" href="zot_8php.html#a528e97ca5d69c3b7f35c5d954afde315">import_xchan()</a>, <a class="el" href="item_8php.html#a693cd09805755ab85bbb5ecae69a48c3">item_post()</a>, <a class="el" href="items_8php.html#a2541e6861a56d145c9281877cc501615">item_store()</a>, <a class="el" href="items_8php.html#acf0bf7c9d21ac84f32effb754f7ad484">item_store_update()</a>, <a class="el" href="like_8php.html#a9d7dd268f21c21e9d29dd2aca2dd9538">like_content()</a>, <a class="el" href="items_8php.html#af94c281016c6c912d06e064113336c5c">limit_body_size()</a>, <a class="el" href="plugin_8php.html#a9ca9632b7309a65b05c03a3e2f473a3d">load_plugin()</a>, <a class="el" href="dir__fns_8php.html#acd37b17dce3bdec6d5a6344a20598c1e">local_dir_update()</a>, <a class="el" href="classFKOAuth1.html#a2b1dac2ed31fc6ef84668afdda8b263f">FKOAuth1\loginUser()</a>, <a class="el" href="magic_8php.html#acea2cc792849ca2d71d4b689f66518bf">magic_init()</a>, <a class="el" href="items_8php.html#a77da7ce9a117601d49ac4a67c71b514f">mail_store()</a>, <a class="el" href="mood_8php.html#a7ae136dd7476865b4828136175db5022">mood_init()</a>, <a class="el" href="include_2follow_8php.html#ae387d4ae097c23d69f3247e7f08140c7">new_contact()</a>, <a class="el" href="notes_8php.html#a4dbd7b1f906440746af48b484d66535a">notes_init()</a>, <a class="el" href="enotify_8php.html#a3e9a9355b243777c488d2a9883908dfc">notification()</a>, <a class="el" href="notifier_8php.html#a568c502f626cff95e344c0748938b85d">notifier_run()</a>, <a class="el" href="onepoll_8php.html#a72753b2fdec79b37c7f432035c91fb6d">onepoll_run()</a>, <a class="el" href="parse__url_8php.html#a05a9e8944380ba3cf6bbf5893dd4b74b">parse_url_content()</a>, <a class="el" href="include_2photos_8php.html#a6c40ef58aefef705a5adc84a40e97109">photo_upload()</a>, <a class="el" href="mod_2photos_8php.html#a062bed4d04d14fee8a53f4c9be673080">photos_post()</a>, <a class="el" href="poco_8php.html#a53def16f75e3d41f1d2bb7cfa4905498">poco_init()</a>, <a class="el" href="socgraph_8php.html#a5ef8bef37161df53718a21e93d02fbd6">poco_load()</a>, <a class="el" href="poke_8php.html#a9725aab97b3983e6a98bd81c4efe7d3b">poke_init()</a>, <a class="el" href="post_8php.html#af59e6a1dc22d19d9257b01cd7ccedb75">post_post()</a>, <a class="el" href="zot_8php.html#a0e3006e7a456b2175a9badc96bc5176d">process_delivery()</a>, <a class="el" href="zot_8php.html#a8eeefdb0dad4c436bea9d1c06c0a7988">process_location_delivery()</a>, <a class="el" href="zot_8php.html#a9a57b40669351c9791126b925cb7ef3b">process_profile_delivery()</a>, <a class="el" href="identity_8php.html#a4751b522ea913d0e7ed43e03d22e9e68">profile_load()</a>, <a class="el" href="classRedMatrix_1_1RedDAV_1_1RedFile.html#a709ec1288d21ddf1353524435ab916f0">RedMatrix\RedDAV\RedFile\put()</a>, <a class="el" href="queue_8php.html#af8c93de86d866c3200174c8450a0f341">queue_run()</a>, <a class="el" href="receive_8php.html#a03d8fa26e77844020ba5602deca7d494">receive_post()</a>, <a class="el" href="classItem.html#a2ce70ef63f9f4d86a09c351678806925">Item\remove_child()</a>, <a class="el" href="hubloc_8php.html#a84c79b7be352f62d12fe4fa2c80fc6ea">remove_obsolete_hublocs()</a>, <a class="el" href="include_2network_8php.html#ae8d9c41a11000fb8667039fc71b4f73f">scale_external_images()</a>, <a class="el" href="include_2network_8php.html#a316f318167a039c89719afbd129a8f3c">scrape_feed()</a>, <a class="el" href="classenotify.html#afbc088860f534c6c05788b48cfc262c6">enotify\send()</a>, <a class="el" href="classConversation.html#a66f121ca4026246f86a732e5faa0682c">Conversation\set_mode()</a>, <a class="el" href="items_8php.html#a25221826fa4621f523c68483e3b6af26">store_diaspora_comment_sig()</a>, <a class="el" href="security_8php.html#a6126c77a1267e046ac59cf864613f011">stream_perms_api_uids()</a>, <a class="el" href="security_8php.html#a3ef2be6a7e4928e39d50059d6feb457c">stream_perms_xchans()</a>, <a class="el" href="zot_8php.html#ab15c04e7e5f44edf45ec50dd7d183254">sync_locations()</a>, <a class="el" href="items_8php.html#ab1bce4261bcf75ad62753b498a144d17">tag_deliver()</a>, <a class="el" href="plugin_8php.html#a90538627db68605aeb6db17a8ead6523">unload_plugin()</a>, <a class="el" href="include_2network_8php.html#aafd06c0a75402aefb06cfb9f9740fa37">z_fetch_url()</a>, <a class="el" href="include_2network_8php.html#a9129fd55e7fc175b4ea9a195cccc16bc">z_post_url()</a>, <a class="el" href="items_8php.html#a1cf89557f32d5dfbe8bd90448dc1aa92">zot_feed()</a>, <a class="el" href="zot_8php.html#a95528377d7303131958c9f0b7158fdce">zot_finger()</a>, <a class="el" href="zot_8php.html#a55056e863a7860bc0cf922e78fcce073">zot_gethub()</a>, <a class="el" href="zot_8php.html#a5bcdfef419b16075a0eca990956223dc">zot_register_hub()</a>, and <a class="el" href="zotfeed_8php.html#a24dfc23d366e7f840cf2847d0c1c8eac">zotfeed_init()</a>.</p>
</div>
</div>
@@ -3083,7 +3471,7 @@ Variables</h2></td></tr>
</table>
</div><div class="memdoc">
-<p>Referenced by <a class="el" href="items_8php.html#a2d840c74ed23d1b6c7daee05cf89dda7">encode_mail()</a>, <a class="el" href="items_8php.html#a94ddb1d6c8fa21dd7433677e85168037">get_mail_elements()</a>, <a class="el" href="include_2message_8php.html#a5f8de9847e203329e317ac38dc646898">private_messages_fetch_conversation()</a>, <a class="el" href="include_2message_8php.html#a254a756031e4d5e94f85e2939bdb5091">private_messages_fetch_message()</a>, <a class="el" href="include_2message_8php.html#a652973ce47a262f2d238c2fd6233d97e">private_messages_list()</a>, and <a class="el" href="include_2message_8php.html#a751ffd6635022b2190f56154ee745752">send_message()</a>.</p>
+<p>Referenced by <a class="el" href="diaspora_8php.html#adef30b6fac948baedcc7194d5d155b5f">diaspora_conversation()</a>, <a class="el" href="diaspora_8php.html#a7cff2f8f11044c1b3a360f20e1bbee46">diaspora_message()</a>, <a class="el" href="diaspora_8php.html#aeb2bb78f620dbf51d9335e6eb7444f2c">diaspora_send_mail()</a>, <a class="el" href="items_8php.html#a2d840c74ed23d1b6c7daee05cf89dda7">encode_mail()</a>, <a class="el" href="items_8php.html#a94ddb1d6c8fa21dd7433677e85168037">get_mail_elements()</a>, <a class="el" href="include_2message_8php.html#a5f8de9847e203329e317ac38dc646898">private_messages_fetch_conversation()</a>, <a class="el" href="include_2message_8php.html#a254a756031e4d5e94f85e2939bdb5091">private_messages_fetch_message()</a>, <a class="el" href="include_2message_8php.html#a652973ce47a262f2d238c2fd6233d97e">private_messages_list()</a>, and <a class="el" href="include_2message_8php.html#a751ffd6635022b2190f56154ee745752">send_message()</a>.</p>
</div>
</div>
@@ -3123,7 +3511,7 @@ Variables</h2></td></tr>
</table>
</div><div class="memdoc">
-<p>Referenced by <a class="el" href="ping_8php.html#a77217b1b190b4c5d8770867b45f0c0a1">ping_init()</a>, <a class="el" href="include_2message_8php.html#a5f8de9847e203329e317ac38dc646898">private_messages_fetch_conversation()</a>, <a class="el" href="include_2message_8php.html#a254a756031e4d5e94f85e2939bdb5091">private_messages_fetch_message()</a>, and <a class="el" href="include_2message_8php.html#a652973ce47a262f2d238c2fd6233d97e">private_messages_list()</a>.</p>
+<p>Referenced by <a class="el" href="manage_8php.html#a2bca247b5296827638959138367db4f5">manage_content()</a>, <a class="el" href="ping_8php.html#a77217b1b190b4c5d8770867b45f0c0a1">ping_init()</a>, <a class="el" href="include_2message_8php.html#a5f8de9847e203329e317ac38dc646898">private_messages_fetch_conversation()</a>, <a class="el" href="include_2message_8php.html#a254a756031e4d5e94f85e2939bdb5091">private_messages_fetch_message()</a>, and <a class="el" href="include_2message_8php.html#a652973ce47a262f2d238c2fd6233d97e">private_messages_list()</a>.</p>
</div>
</div>
@@ -3170,7 +3558,7 @@ Variables</h2></td></tr>
</table>
</div><div class="memdoc">
-<p>Referenced by <a class="el" href="include_2bookmarks_8php.html#aef1cb2968c41c759f2d106e1088ca323">bookmark_add()</a>, <a class="el" href="mod_2bookmarks_8php.html#a774364b1c8404529581083631703527a">bookmarks_content()</a>, <a class="el" href="mod_2menu_8php.html#a6fed23af14d71a78a4153c8363a685cf">menu_content()</a>, <a class="el" href="mod_2menu_8php.html#aaa491ef173868fe002aece4632bcf393">menu_post()</a>, and <a class="el" href="rbmark_8php.html#a43fec4960b50926251574762cc491f76">rbmark_content()</a>.</p>
+<p>Referenced by <a class="el" href="include_2bookmarks_8php.html#aef1cb2968c41c759f2d106e1088ca323">bookmark_add()</a>, <a class="el" href="mod_2bookmarks_8php.html#a774364b1c8404529581083631703527a">bookmarks_content()</a>, <a class="el" href="mod_2menu_8php.html#a6fed23af14d71a78a4153c8363a685cf">menu_content()</a>, <a class="el" href="mod_2menu_8php.html#aaa491ef173868fe002aece4632bcf393">menu_post()</a>, <a class="el" href="nav_8php.html#a43be0df73b90647ea70947ce004e231e">nav()</a>, and <a class="el" href="rbmark_8php.html#a43fec4960b50926251574762cc491f76">rbmark_content()</a>.</p>
</div>
</div>
@@ -3227,7 +3615,7 @@ Variables</h2></td></tr>
</div><div class="memdoc">
<p>Menu types </p>
-<p>Referenced by <a class="el" href="include_2bookmarks_8php.html#aef1cb2968c41c759f2d106e1088ca323">bookmark_add()</a>, <a class="el" href="mod_2bookmarks_8php.html#a774364b1c8404529581083631703527a">bookmarks_content()</a>, <a class="el" href="mod_2menu_8php.html#a6fed23af14d71a78a4153c8363a685cf">menu_content()</a>, and <a class="el" href="mod_2menu_8php.html#aaa491ef173868fe002aece4632bcf393">menu_post()</a>.</p>
+<p>Referenced by <a class="el" href="include_2bookmarks_8php.html#aef1cb2968c41c759f2d106e1088ca323">bookmark_add()</a>, <a class="el" href="mod_2bookmarks_8php.html#a774364b1c8404529581083631703527a">bookmarks_content()</a>, <a class="el" href="mod_2menu_8php.html#a6fed23af14d71a78a4153c8363a685cf">menu_content()</a>, <a class="el" href="mod_2menu_8php.html#aaa491ef173868fe002aece4632bcf393">menu_post()</a>, and <a class="el" href="nav_8php.html#a43be0df73b90647ea70947ce004e231e">nav()</a>.</p>
</div>
</div>
@@ -3241,7 +3629,7 @@ Variables</h2></td></tr>
</table>
</div><div class="memdoc">
-<p>Referenced by <a class="el" href="items_8php.html#a896c1809d58f2d7a42cfe14577958ddf">get_atom_elements()</a>.</p>
+<p>Referenced by <a class="el" href="items_8php.html#a5e5be7bf1f8257dec0b2647e60a3f3f1">get_atom_elements()</a>.</p>
</div>
</div>
@@ -3281,7 +3669,7 @@ Variables</h2></td></tr>
</table>
</div><div class="memdoc">
-<p>Referenced by <a class="el" href="items_8php.html#a896c1809d58f2d7a42cfe14577958ddf">get_atom_elements()</a>, and <a class="el" href="include_2network_8php.html#adf6008b38c555e98e7ed10da9ede2335">webfinger_dfrn()</a>.</p>
+<p>Referenced by <a class="el" href="include_2network_8php.html#a63e62946e194928eb17c5a9f2bbef0fe">discover_by_webbie()</a>, and <a class="el" href="items_8php.html#a5e5be7bf1f8257dec0b2647e60a3f3f1">get_atom_elements()</a>.</p>
</div>
</div>
@@ -3295,6 +3683,8 @@ Variables</h2></td></tr>
</table>
</div><div class="memdoc">
+<p>Referenced by <a class="el" href="include_2network_8php.html#a63e62946e194928eb17c5a9f2bbef0fe">discover_by_webbie()</a>.</p>
+
</div>
</div>
<a class="anchor" id="a03d19251c245587de7ed959300b87bdf"></a>
@@ -3307,7 +3697,7 @@ Variables</h2></td></tr>
</table>
</div><div class="memdoc">
-<p>Referenced by <a class="el" href="items_8php.html#a896c1809d58f2d7a42cfe14577958ddf">get_atom_elements()</a>.</p>
+<p>Referenced by <a class="el" href="items_8php.html#a5e5be7bf1f8257dec0b2647e60a3f3f1">get_atom_elements()</a>.</p>
</div>
</div>
@@ -3347,8 +3737,6 @@ Variables</h2></td></tr>
</table>
</div><div class="memdoc">
-<p>Referenced by <a class="el" href="include_2network_8php.html#adf6008b38c555e98e7ed10da9ede2335">webfinger_dfrn()</a>.</p>
-
</div>
</div>
<a class="anchor" id="a0b73e2548d6f9beb9c93211f488e336a"></a>
@@ -3373,6 +3761,8 @@ Variables</h2></td></tr>
</table>
</div><div class="memdoc">
+<p>Referenced by <a class="el" href="diaspora_8php.html#a849754ec369e1a60fadae5c14584ca36">diaspora_decode()</a>.</p>
+
</div>
</div>
<a class="anchor" id="afaf93b7026f784b113b4f8921745891e"></a>
@@ -3385,7 +3775,7 @@ Variables</h2></td></tr>
</table>
</div><div class="memdoc">
-<p>Referenced by <a class="el" href="items_8php.html#a896c1809d58f2d7a42cfe14577958ddf">get_atom_elements()</a>.</p>
+<p>Referenced by <a class="el" href="items_8php.html#a5e5be7bf1f8257dec0b2647e60a3f3f1">get_atom_elements()</a>.</p>
</div>
</div>
@@ -3399,7 +3789,7 @@ Variables</h2></td></tr>
</table>
</div><div class="memdoc">
-<p>Referenced by <a class="el" href="items_8php.html#a8794863cdf8ce1333040933d3a3f66bd">consume_feed()</a>.</p>
+<p>Referenced by <a class="el" href="items_8php.html#adc26e08aa61f5666da04ab5d2a9d68a6">consume_feed()</a>.</p>
</div>
</div>
@@ -3413,7 +3803,21 @@ Variables</h2></td></tr>
</table>
</div><div class="memdoc">
-<p>Referenced by <a class="el" href="items_8php.html#a8794863cdf8ce1333040933d3a3f66bd">consume_feed()</a>.</p>
+<p>Referenced by <a class="el" href="items_8php.html#adc26e08aa61f5666da04ab5d2a9d68a6">consume_feed()</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a3d48dffd9dc73a187263c3002cdf00c0"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">const NAMESPACE_YMEDIA 'http://search.yahoo.com/mrss/'</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p>Referenced by <a class="el" href="items_8php.html#a5e5be7bf1f8257dec0b2647e60a3f3f1">get_atom_elements()</a>.</p>
</div>
</div>
@@ -3428,6 +3832,8 @@ Variables</h2></td></tr>
</div><div class="memdoc">
<p>various namespaces we may need to parse </p>
+<p>Referenced by <a class="el" href="items_8php.html#a5e5be7bf1f8257dec0b2647e60a3f3f1">get_atom_elements()</a>.</p>
+
</div>
</div>
<a class="anchor" id="ae3cef7b63e25e7bafea3fcf6b99fad0e"></a>
@@ -3441,7 +3847,7 @@ Variables</h2></td></tr>
</div><div class="memdoc">
<p>Network and protocol family types </p>
-<p>Referenced by <a class="el" href="conversation_8php.html#ad470fc7766f0db66d138fa1916c7a8b7">best_link_url()</a>, <a class="el" href="items_8php.html#a8794863cdf8ce1333040933d3a3f66bd">consume_feed()</a>, <a class="el" href="delegate_8php.html#a943eea8996ef348eb845c498f9f354dd">delegate_content()</a>, <a class="el" href="identity_8php.html#ad2c97627a313d53df1a1c7b4215ddb51">get_birthdays()</a>, <a class="el" href="contact__selectors_8php.html#ad472e4716426dd1a9dd77b62962454be">network_to_name()</a>, and <a class="el" href="Contact_8php.html#a38daa1c210b78385307123450ca9a1fc">terminate_friendship()</a>.</p>
+<p>Referenced by <a class="el" href="conversation_8php.html#ad470fc7766f0db66d138fa1916c7a8b7">best_link_url()</a>, <a class="el" href="delegate_8php.html#a943eea8996ef348eb845c498f9f354dd">delegate_content()</a>, <a class="el" href="identity_8php.html#ad2c97627a313d53df1a1c7b4215ddb51">get_birthdays()</a>, and <a class="el" href="contact__selectors_8php.html#ad472e4716426dd1a9dd77b62962454be">network_to_name()</a>.</p>
</div>
</div>
@@ -3455,7 +3861,7 @@ Variables</h2></td></tr>
</table>
</div><div class="memdoc">
-<p>Referenced by <a class="el" href="contact__selectors_8php.html#ad472e4716426dd1a9dd77b62962454be">network_to_name()</a>.</p>
+<p>Referenced by <a class="el" href="diaspora_8php.html#a006731620a5242d410358b32678e48e3">diaspora_asphoto()</a>, and <a class="el" href="contact__selectors_8php.html#ad472e4716426dd1a9dd77b62962454be">network_to_name()</a>.</p>
</div>
</div>
@@ -3646,7 +4052,7 @@ Variables</h2></td></tr>
</div><div class="memdoc">
<p>email notification options </p>
-<p>Referenced by <a class="el" href="enotify_8php.html#a3e9a9355b243777c488d2a9883908dfc">notification()</a>, and <a class="el" href="zot_8php.html#a7ac30ff51274bf0b6d3eade37972145c">zot_refresh()</a>.</p>
+<p>Referenced by <a class="el" href="diaspora_8php.html#ac1ab782a34552a7c6b4dc961754ed598">diaspora_request()</a>, <a class="el" href="enotify_8php.html#a3e9a9355b243777c488d2a9883908dfc">notification()</a>, and <a class="el" href="zot_8php.html#a7ac30ff51274bf0b6d3eade37972145c">zot_refresh()</a>.</p>
</div>
</div>
@@ -3770,7 +4176,7 @@ Variables</h2></td></tr>
</table>
</div><div class="memdoc">
-<p>Referenced by <a class="el" href="settings_8php.html#aa7ee94d88ac088edb04ccf3a26de3586">settings_post()</a>, and <a class="el" href="zfinger_8php.html#a8139b83a22ef98869adc10aa224027a0">zfinger_init()</a>.</p>
+<p>Referenced by <a class="el" href="settings_8php.html#aa7ee94d88ac088edb04ccf3a26de3586">settings_post()</a>, <a class="el" href="security_8php.html#a6126c77a1267e046ac59cf864613f011">stream_perms_api_uids()</a>, <a class="el" href="security_8php.html#a3ef2be6a7e4928e39d50059d6feb457c">stream_perms_xchans()</a>, and <a class="el" href="zfinger_8php.html#a8139b83a22ef98869adc10aa224027a0">zfinger_init()</a>.</p>
</div>
</div>
@@ -3838,6 +4244,20 @@ Variables</h2></td></tr>
</div>
</div>
+<a class="anchor" id="afbb21ecccac9819aa65397e816868a5f"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">const PAGE_HUBADMIN 0x2000</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p>Referenced by <a class="el" href="siteinfo_8php.html#a3efbd0bd6564af19ec0a9ce0294e59d0">siteinfo_init()</a>.</p>
+
+</div>
+</div>
<a class="anchor" id="a09532c3f750ae8c4527e63b2b790cbf3"></a>
<div class="memitem">
<div class="memproto">
@@ -3877,7 +4297,7 @@ Variables</h2></td></tr>
</table>
</div><div class="memdoc">
-<p>Referenced by <a class="el" href="admin_8php.html#ad6f87a764fd35f522c7b4c351d7878ec">admin_page_channels()</a>, <a class="el" href="admin_8php.html#a62f10f90c47686c9c3c37c4c03a108d2">admin_page_users()</a>, <a class="el" href="zot_8php.html#a703f528ade8382cf374e4119bd6f7859">allowed_public_recips()</a>, <a class="el" href="security_8php.html#adc7bf51e3b8d67bd80e9348f9ab03733">authenticate_success()</a>, <a class="el" href="security_8php.html#a8d23d2597aae380a3341872fe9513380">change_channel()</a>, <a class="el" href="Contact_8php.html#a186162051a5127069cc851d78740f205">channel_remove()</a>, <a class="el" href="identity_8php.html#a77d2237f1846964634b1c99089c27c7d">channel_total()</a>, <a class="el" href="Contact_8php.html#a483cda56f9e37c3a4a8773dcdfeb0258">channelx_by_hash()</a>, <a class="el" href="Contact_8php.html#a3a0844dac1e86d523de5d2f432cfeebc">channelx_by_n()</a>, <a class="el" href="Contact_8php.html#a87e699f74a1102b25e8aa0432d86a91e">channelx_by_nick()</a>, <a class="el" href="classRedDirectory.html#a986936910f0216887a25e28916c166c7">RedDirectory\createDirectory()</a>, <a class="el" href="classRedDirectory.html#a2d12d99d38a6a75fc9a830b2f7fc0bf0">RedDirectory\createFile()</a>, <a class="el" href="classRedDirectory.html#a70173d4458572d95e586b2037d2fd2f4">RedDirectory\getDir()</a>, <a class="el" href="classRedDirectory.html#a2f7a574f2115f099d6dd103d5b252375">RedDirectory\getQuotaInfo()</a>, <a class="el" href="identity_8php.html#ac9fcd5c4c371998790b5c55c3d0f4633">identity_check_service_class()</a>, <a class="el" href="identity_8php.html#a2ab5172eabd375869060c9ad68323f5c">identity_selector()</a>, <a class="el" href="manage_8php.html#a2bca247b5296827638959138367db4f5">manage_content()</a>, <a class="el" href="enotify_8php.html#a3e9a9355b243777c488d2a9883908dfc">notification()</a>, <a class="el" href="post_8php.html#af4b48181ce773ef0cdfc972441445c34">post_init()</a>, <a class="el" href="identity_8php.html#a4751b522ea913d0e7ed43e03d22e9e68">profile_load()</a>, <a class="el" href="zot_8php.html#a083aec6c900d244e1bfc1406f9461465">public_recips()</a>, <a class="el" href="classRedFile.html#a41a49a583eb276b75626fcf97f4a699c">RedFile\put()</a>, <a class="el" href="reddav_8php.html#ae92ea0df1993f6a7bcd1b6efa6c1fb66">RedChannelList()</a>, <a class="el" href="security_8php.html#a6126c77a1267e046ac59cf864613f011">stream_perms_api_uids()</a>, <a class="el" href="security_8php.html#a3ef2be6a7e4928e39d50059d6feb457c">stream_perms_xchans()</a>, <a class="el" href="zfinger_8php.html#a8139b83a22ef98869adc10aa224027a0">zfinger_init()</a>, <a class="el" href="zot_8php.html#aeea071f17e306fe3d0c488551906bfab">zot_import()</a>, and <a class="el" href="zotfeed_8php.html#a24dfc23d366e7f840cf2847d0c1c8eac">zotfeed_init()</a>.</p>
+<p>Referenced by <a class="el" href="admin_8php.html#ad6f87a764fd35f522c7b4c351d7878ec">admin_page_channels()</a>, <a class="el" href="admin_8php.html#a62f10f90c47686c9c3c37c4c03a108d2">admin_page_users()</a>, <a class="el" href="zot_8php.html#a703f528ade8382cf374e4119bd6f7859">allowed_public_recips()</a>, <a class="el" href="security_8php.html#adc7bf51e3b8d67bd80e9348f9ab03733">authenticate_success()</a>, <a class="el" href="security_8php.html#a8d23d2597aae380a3341872fe9513380">change_channel()</a>, <a class="el" href="Contact_8php.html#a4e8af0f0525161da74583c04b8b03097">channel_remove()</a>, <a class="el" href="identity_8php.html#a77d2237f1846964634b1c99089c27c7d">channel_total()</a>, <a class="el" href="Contact_8php.html#a483cda56f9e37c3a4a8773dcdfeb0258">channelx_by_hash()</a>, <a class="el" href="Contact_8php.html#a3a0844dac1e86d523de5d2f432cfeebc">channelx_by_n()</a>, <a class="el" href="Contact_8php.html#a87e699f74a1102b25e8aa0432d86a91e">channelx_by_nick()</a>, <a class="el" href="classRedMatrix_1_1RedDAV_1_1RedDirectory.html#aca0e8d574ea66a0e210f571700663c62">RedMatrix\RedDAV\RedDirectory\createDirectory()</a>, <a class="el" href="classRedMatrix_1_1RedDAV_1_1RedDirectory.html#a58e750256cdc2f0f79fbe8d5463ffefe">RedMatrix\RedDAV\RedDirectory\createFile()</a>, <a class="el" href="classRedMatrix_1_1RedDAV_1_1RedDirectory.html#a825dc5f3e0f83f50736c16daa6a4809d">RedMatrix\RedDAV\RedDirectory\getDir()</a>, <a class="el" href="classRedMatrix_1_1RedDAV_1_1RedDirectory.html#a69db443ed3c84938b4352fe515bf8d68">RedMatrix\RedDAV\RedDirectory\getQuotaInfo()</a>, <a class="el" href="identity_8php.html#ac9fcd5c4c371998790b5c55c3d0f4633">identity_check_service_class()</a>, <a class="el" href="identity_8php.html#a2ab5172eabd375869060c9ad68323f5c">identity_selector()</a>, <a class="el" href="manage_8php.html#a2bca247b5296827638959138367db4f5">manage_content()</a>, <a class="el" href="nav_8php.html#a43be0df73b90647ea70947ce004e231e">nav()</a>, <a class="el" href="enotify_8php.html#a3e9a9355b243777c488d2a9883908dfc">notification()</a>, <a class="el" href="post_8php.html#af4b48181ce773ef0cdfc972441445c34">post_init()</a>, <a class="el" href="identity_8php.html#a4751b522ea913d0e7ed43e03d22e9e68">profile_load()</a>, <a class="el" href="zot_8php.html#a083aec6c900d244e1bfc1406f9461465">public_recips()</a>, <a class="el" href="classRedMatrix_1_1RedDAV_1_1RedFile.html#a709ec1288d21ddf1353524435ab916f0">RedMatrix\RedDAV\RedFile\put()</a>, <a class="el" href="receive_8php.html#a03d8fa26e77844020ba5602deca7d494">receive_post()</a>, <a class="el" href="reddav_8php.html#ae92ea0df1993f6a7bcd1b6efa6c1fb66">RedChannelList()</a>, <a class="el" href="security_8php.html#a6126c77a1267e046ac59cf864613f011">stream_perms_api_uids()</a>, <a class="el" href="security_8php.html#a3ef2be6a7e4928e39d50059d6feb457c">stream_perms_xchans()</a>, <a class="el" href="zfinger_8php.html#a8139b83a22ef98869adc10aa224027a0">zfinger_init()</a>, <a class="el" href="zot_8php.html#aeea071f17e306fe3d0c488551906bfab">zot_import()</a>, and <a class="el" href="zotfeed_8php.html#a24dfc23d366e7f840cf2847d0c1c8eac">zotfeed_init()</a>.</p>
</div>
</div>
@@ -3891,19 +4311,7 @@ Variables</h2></td></tr>
</table>
</div><div class="memdoc">
-<p>Referenced by <a class="el" href="identity_8php.html#a345f4c943d84de502ec6e72d2c813945">create_identity()</a>, <a class="el" href="identity_8php.html#a1cf83ac2b645de12868edaa3a5718f05">create_sys_channel()</a>, <a class="el" href="identity_8php.html#aaff86ee3b5984821e7a256c2da5f1a51">get_sys_channel()</a>, <a class="el" href="identity_8php.html#aa4bd4abfcba883f43919e89ec6419025">is_sys_channel()</a>, <a class="el" href="security_8php.html#a6126c77a1267e046ac59cf864613f011">stream_perms_api_uids()</a>, and <a class="el" href="zfinger_8php.html#a8139b83a22ef98869adc10aa224027a0">zfinger_init()</a>.</p>
-
-</div>
-</div>
-<a class="anchor" id="a8b2af16eaee9e7768a88d0e437877f3b"></a>
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">const PERMS_A_BOOKMARK 0x20000</td>
- </tr>
- </table>
-</div><div class="memdoc">
+<p>Referenced by <a class="el" href="security_8php.html#a8d23d2597aae380a3341872fe9513380">change_channel()</a>, <a class="el" href="identity_8php.html#a345f4c943d84de502ec6e72d2c813945">create_identity()</a>, <a class="el" href="identity_8php.html#a1cf83ac2b645de12868edaa3a5718f05">create_sys_channel()</a>, <a class="el" href="identity_8php.html#aaff86ee3b5984821e7a256c2da5f1a51">get_sys_channel()</a>, <a class="el" href="identity_8php.html#aa4bd4abfcba883f43919e89ec6419025">is_sys_channel()</a>, <a class="el" href="zot_8php.html#a0e3006e7a456b2175a9badc96bc5176d">process_delivery()</a>, <a class="el" href="security_8php.html#a6126c77a1267e046ac59cf864613f011">stream_perms_api_uids()</a>, <a class="el" href="security_8php.html#a3ef2be6a7e4928e39d50059d6feb457c">stream_perms_xchans()</a>, and <a class="el" href="zfinger_8php.html#a8139b83a22ef98869adc10aa224027a0">zfinger_init()</a>.</p>
</div>
</div>
@@ -3931,7 +4339,7 @@ Variables</h2></td></tr>
</table>
</div><div class="memdoc">
-<p>Referenced by <a class="el" href="items_8php.html#a87ac9e359591721a824ecd23bbb56296">check_item_source()</a>, and <a class="el" href="permissions_8php.html#a040fd3d3b8517658b1668ae0cd093972">get_perms()</a>.</p>
+<p>Referenced by <a class="el" href="items_8php.html#a87ac9e359591721a824ecd23bbb56296">check_item_source()</a>, <a class="el" href="permissions_8php.html#a040fd3d3b8517658b1668ae0cd093972">get_perms()</a>, <a class="el" href="permissions_8php.html#a9b5f5120566a3699a98efc5ccb0c59fe">get_role_perms()</a>, and <a class="el" href="include_2follow_8php.html#ae387d4ae097c23d69f3247e7f08140c7">new_contact()</a>.</p>
</div>
</div>
@@ -3945,7 +4353,7 @@ Variables</h2></td></tr>
</table>
</div><div class="memdoc">
-<p>Referenced by <a class="el" href="permissions_8php.html#aeca9b280f3dc3358c89976d81d690008">get_all_perms()</a>, and <a class="el" href="permissions_8php.html#a67ada9ed51e77885b6b0f6a28cee1835">perm_is_allowed()</a>.</p>
+<p>Referenced by <a class="el" href="permissions_8php.html#aeca9b280f3dc3358c89976d81d690008">get_all_perms()</a>, <a class="el" href="items_8php.html#a8675e62674de6fb7c42e4a408c7116cc">map_scope()</a>, and <a class="el" href="permissions_8php.html#a67ada9ed51e77885b6b0f6a28cee1835">perm_is_allowed()</a>.</p>
</div>
</div>
@@ -3959,7 +4367,7 @@ Variables</h2></td></tr>
</table>
</div><div class="memdoc">
-<p>Referenced by <a class="el" href="permissions_8php.html#aeca9b280f3dc3358c89976d81d690008">get_all_perms()</a>, <a class="el" href="items_8php.html#ac1fcf621dce7370515b420a7753f4726">map_scope()</a>, <a class="el" href="permissions_8php.html#a67ada9ed51e77885b6b0f6a28cee1835">perm_is_allowed()</a>, and <a class="el" href="zot_8php.html#a083aec6c900d244e1bfc1406f9461465">public_recips()</a>.</p>
+<p>Referenced by <a class="el" href="permissions_8php.html#aeca9b280f3dc3358c89976d81d690008">get_all_perms()</a>, <a class="el" href="items_8php.html#a8675e62674de6fb7c42e4a408c7116cc">map_scope()</a>, <a class="el" href="permissions_8php.html#a67ada9ed51e77885b6b0f6a28cee1835">perm_is_allowed()</a>, and <a class="el" href="zot_8php.html#a083aec6c900d244e1bfc1406f9461465">public_recips()</a>.</p>
</div>
</div>
@@ -3973,7 +4381,7 @@ Variables</h2></td></tr>
</table>
</div><div class="memdoc">
-<p>Referenced by <a class="el" href="display_8php.html#a37137c98d47bf3306f4c2bb9f5b60de0">display_content()</a>, <a class="el" href="permissions_8php.html#aeca9b280f3dc3358c89976d81d690008">get_all_perms()</a>, <a class="el" href="items_8php.html#ac1fcf621dce7370515b420a7753f4726">map_scope()</a>, <a class="el" href="permissions_8php.html#a67ada9ed51e77885b6b0f6a28cee1835">perm_is_allowed()</a>, <a class="el" href="zot_8php.html#a083aec6c900d244e1bfc1406f9461465">public_recips()</a>, <a class="el" href="search_8php.html#ab2568591359edde5b483a6cd9a24b2cc">search_content()</a>, <a class="el" href="security_8php.html#a6126c77a1267e046ac59cf864613f011">stream_perms_api_uids()</a>, and <a class="el" href="security_8php.html#a3ef2be6a7e4928e39d50059d6feb457c">stream_perms_xchans()</a>.</p>
+<p>Referenced by <a class="el" href="display_8php.html#a37137c98d47bf3306f4c2bb9f5b60de0">display_content()</a>, <a class="el" href="permissions_8php.html#aeca9b280f3dc3358c89976d81d690008">get_all_perms()</a>, <a class="el" href="permissions_8php.html#a9b5f5120566a3699a98efc5ccb0c59fe">get_role_perms()</a>, <a class="el" href="items_8php.html#a8675e62674de6fb7c42e4a408c7116cc">map_scope()</a>, <a class="el" href="permissions_8php.html#a67ada9ed51e77885b6b0f6a28cee1835">perm_is_allowed()</a>, <a class="el" href="zot_8php.html#a083aec6c900d244e1bfc1406f9461465">public_recips()</a>, <a class="el" href="search_8php.html#ab2568591359edde5b483a6cd9a24b2cc">search_content()</a>, <a class="el" href="permissions_8php.html#aa8b7b102c653649d7a71b5a1c044d90d">site_default_perms()</a>, <a class="el" href="security_8php.html#a6126c77a1267e046ac59cf864613f011">stream_perms_api_uids()</a>, and <a class="el" href="security_8php.html#a3ef2be6a7e4928e39d50059d6feb457c">stream_perms_xchans()</a>.</p>
</div>
</div>
@@ -3987,7 +4395,7 @@ Variables</h2></td></tr>
</table>
</div><div class="memdoc">
-<p>Referenced by <a class="el" href="permissions_8php.html#aeca9b280f3dc3358c89976d81d690008">get_all_perms()</a>, <a class="el" href="items_8php.html#ac1fcf621dce7370515b420a7753f4726">map_scope()</a>, <a class="el" href="permissions_8php.html#a67ada9ed51e77885b6b0f6a28cee1835">perm_is_allowed()</a>, <a class="el" href="zot_8php.html#a083aec6c900d244e1bfc1406f9461465">public_recips()</a>, and <a class="el" href="zot_8php.html#a7ac30ff51274bf0b6d3eade37972145c">zot_refresh()</a>.</p>
+<p>Referenced by <a class="el" href="permissions_8php.html#aeca9b280f3dc3358c89976d81d690008">get_all_perms()</a>, <a class="el" href="items_8php.html#a8675e62674de6fb7c42e4a408c7116cc">map_scope()</a>, <a class="el" href="permissions_8php.html#a67ada9ed51e77885b6b0f6a28cee1835">perm_is_allowed()</a>, <a class="el" href="zot_8php.html#a083aec6c900d244e1bfc1406f9461465">public_recips()</a>, and <a class="el" href="zot_8php.html#a7ac30ff51274bf0b6d3eade37972145c">zot_refresh()</a>.</p>
</div>
</div>
@@ -4001,7 +4409,7 @@ Variables</h2></td></tr>
</table>
</div><div class="memdoc">
-<p>Referenced by <a class="el" href="display_8php.html#a37137c98d47bf3306f4c2bb9f5b60de0">display_content()</a>, <a class="el" href="permissions_8php.html#aeca9b280f3dc3358c89976d81d690008">get_all_perms()</a>, <a class="el" href="identity_8php.html#a4e996e44b50330098a04b467367a559f">is_public_profile()</a>, <a class="el" href="items_8php.html#ac1fcf621dce7370515b420a7753f4726">map_scope()</a>, <a class="el" href="permissions_8php.html#a67ada9ed51e77885b6b0f6a28cee1835">perm_is_allowed()</a>, <a class="el" href="zot_8php.html#a083aec6c900d244e1bfc1406f9461465">public_recips()</a>, <a class="el" href="search_8php.html#ab2568591359edde5b483a6cd9a24b2cc">search_content()</a>, <a class="el" href="permissions_8php.html#aa8b7b102c653649d7a71b5a1c044d90d">site_default_perms()</a>, <a class="el" href="security_8php.html#a6126c77a1267e046ac59cf864613f011">stream_perms_api_uids()</a>, <a class="el" href="security_8php.html#a3ef2be6a7e4928e39d50059d6feb457c">stream_perms_xchans()</a>, and <a class="el" href="items_8php.html#a004e89d86b0f29b2c4da20108ecc4091">zot_feed()</a>.</p>
+<p>Referenced by <a class="el" href="display_8php.html#a37137c98d47bf3306f4c2bb9f5b60de0">display_content()</a>, <a class="el" href="permissions_8php.html#aeca9b280f3dc3358c89976d81d690008">get_all_perms()</a>, <a class="el" href="permissions_8php.html#a9b5f5120566a3699a98efc5ccb0c59fe">get_role_perms()</a>, <a class="el" href="identity_8php.html#a4e996e44b50330098a04b467367a559f">is_public_profile()</a>, <a class="el" href="items_8php.html#a8675e62674de6fb7c42e4a408c7116cc">map_scope()</a>, <a class="el" href="permissions_8php.html#a67ada9ed51e77885b6b0f6a28cee1835">perm_is_allowed()</a>, <a class="el" href="zot_8php.html#a083aec6c900d244e1bfc1406f9461465">public_recips()</a>, <a class="el" href="search_8php.html#ab2568591359edde5b483a6cd9a24b2cc">search_content()</a>, <a class="el" href="permissions_8php.html#aa8b7b102c653649d7a71b5a1c044d90d">site_default_perms()</a>, <a class="el" href="security_8php.html#a6126c77a1267e046ac59cf864613f011">stream_perms_api_uids()</a>, <a class="el" href="security_8php.html#a3ef2be6a7e4928e39d50059d6feb457c">stream_perms_xchans()</a>, and <a class="el" href="items_8php.html#a1cf89557f32d5dfbe8bd90448dc1aa92">zot_feed()</a>.</p>
</div>
</div>
@@ -4015,7 +4423,7 @@ Variables</h2></td></tr>
</table>
</div><div class="memdoc">
-<p>Referenced by <a class="el" href="permissions_8php.html#a040fd3d3b8517658b1668ae0cd093972">get_perms()</a>.</p>
+<p>Referenced by <a class="el" href="identity_8php.html#a345f4c943d84de502ec6e72d2c813945">create_identity()</a>, <a class="el" href="diaspora_8php.html#ac1ab782a34552a7c6b4dc961754ed598">diaspora_request()</a>, <a class="el" href="permissions_8php.html#a040fd3d3b8517658b1668ae0cd093972">get_perms()</a>, and <a class="el" href="permissions_8php.html#a9b5f5120566a3699a98efc5ccb0c59fe">get_role_perms()</a>.</p>
</div>
</div>
@@ -4029,7 +4437,7 @@ Variables</h2></td></tr>
</table>
</div><div class="memdoc">
-<p>Referenced by <a class="el" href="permissions_8php.html#a040fd3d3b8517658b1668ae0cd093972">get_perms()</a>.</p>
+<p>Referenced by <a class="el" href="identity_8php.html#a345f4c943d84de502ec6e72d2c813945">create_identity()</a>, <a class="el" href="diaspora_8php.html#ac1ab782a34552a7c6b4dc961754ed598">diaspora_request()</a>, <a class="el" href="permissions_8php.html#a040fd3d3b8517658b1668ae0cd093972">get_perms()</a>, and <a class="el" href="permissions_8php.html#a9b5f5120566a3699a98efc5ccb0c59fe">get_role_perms()</a>.</p>
</div>
</div>
@@ -4043,7 +4451,7 @@ Variables</h2></td></tr>
</table>
</div><div class="memdoc">
-<p>Referenced by <a class="el" href="permissions_8php.html#a040fd3d3b8517658b1668ae0cd093972">get_perms()</a>.</p>
+<p>Referenced by <a class="el" href="identity_8php.html#a345f4c943d84de502ec6e72d2c813945">create_identity()</a>, <a class="el" href="diaspora_8php.html#ac1ab782a34552a7c6b4dc961754ed598">diaspora_request()</a>, <a class="el" href="permissions_8php.html#a040fd3d3b8517658b1668ae0cd093972">get_perms()</a>, and <a class="el" href="permissions_8php.html#a9b5f5120566a3699a98efc5ccb0c59fe">get_role_perms()</a>.</p>
</div>
</div>
@@ -4057,7 +4465,7 @@ Variables</h2></td></tr>
</table>
</div><div class="memdoc">
-<p>Referenced by <a class="el" href="permissions_8php.html#a040fd3d3b8517658b1668ae0cd093972">get_perms()</a>.</p>
+<p>Referenced by <a class="el" href="identity_8php.html#a345f4c943d84de502ec6e72d2c813945">create_identity()</a>, <a class="el" href="diaspora_8php.html#ac1ab782a34552a7c6b4dc961754ed598">diaspora_request()</a>, <a class="el" href="permissions_8php.html#a040fd3d3b8517658b1668ae0cd093972">get_perms()</a>, and <a class="el" href="permissions_8php.html#a9b5f5120566a3699a98efc5ccb0c59fe">get_role_perms()</a>.</p>
</div>
</div>
@@ -4071,7 +4479,7 @@ Variables</h2></td></tr>
</table>
</div><div class="memdoc">
-<p>Referenced by <a class="el" href="permissions_8php.html#a040fd3d3b8517658b1668ae0cd093972">get_perms()</a>.</p>
+<p>Referenced by <a class="el" href="identity_8php.html#a345f4c943d84de502ec6e72d2c813945">create_identity()</a>, <a class="el" href="diaspora_8php.html#ac1ab782a34552a7c6b4dc961754ed598">diaspora_request()</a>, <a class="el" href="permissions_8php.html#a040fd3d3b8517658b1668ae0cd093972">get_perms()</a>, and <a class="el" href="permissions_8php.html#a9b5f5120566a3699a98efc5ccb0c59fe">get_role_perms()</a>.</p>
</div>
</div>
@@ -4086,7 +4494,7 @@ Variables</h2></td></tr>
</div><div class="memdoc">
<p>Permissions </p>
-<p>Referenced by <a class="el" href="mod_2follow_8php.html#a171f5b19f50d7738adc3b2e96ec6018a">follow_init()</a>, <a class="el" href="permissions_8php.html#a040fd3d3b8517658b1668ae0cd093972">get_perms()</a>, <a class="el" href="onepoll_8php.html#a72753b2fdec79b37c7f432035c91fb6d">onepoll_run()</a>, and <a class="el" href="zot_8php.html#a7ac30ff51274bf0b6d3eade37972145c">zot_refresh()</a>.</p>
+<p>Referenced by <a class="el" href="identity_8php.html#a345f4c943d84de502ec6e72d2c813945">create_identity()</a>, <a class="el" href="diaspora_8php.html#ac1ab782a34552a7c6b4dc961754ed598">diaspora_request()</a>, <a class="el" href="mod_2follow_8php.html#a171f5b19f50d7738adc3b2e96ec6018a">follow_init()</a>, <a class="el" href="permissions_8php.html#a040fd3d3b8517658b1668ae0cd093972">get_perms()</a>, <a class="el" href="permissions_8php.html#a9b5f5120566a3699a98efc5ccb0c59fe">get_role_perms()</a>, <a class="el" href="include_2follow_8php.html#ae387d4ae097c23d69f3247e7f08140c7">new_contact()</a>, <a class="el" href="onepoll_8php.html#a72753b2fdec79b37c7f432035c91fb6d">onepoll_run()</a>, and <a class="el" href="zot_8php.html#a7ac30ff51274bf0b6d3eade37972145c">zot_refresh()</a>.</p>
</div>
</div>
@@ -4100,7 +4508,7 @@ Variables</h2></td></tr>
</table>
</div><div class="memdoc">
-<p>Referenced by <a class="el" href="permissions_8php.html#aeca9b280f3dc3358c89976d81d690008">get_all_perms()</a>, <a class="el" href="items_8php.html#ac1fcf621dce7370515b420a7753f4726">map_scope()</a>, <a class="el" href="permissions_8php.html#a67ada9ed51e77885b6b0f6a28cee1835">perm_is_allowed()</a>, <a class="el" href="zot_8php.html#a083aec6c900d244e1bfc1406f9461465">public_recips()</a>, <a class="el" href="security_8php.html#a6126c77a1267e046ac59cf864613f011">stream_perms_api_uids()</a>, and <a class="el" href="security_8php.html#a3ef2be6a7e4928e39d50059d6feb457c">stream_perms_xchans()</a>.</p>
+<p>Referenced by <a class="el" href="permissions_8php.html#aeca9b280f3dc3358c89976d81d690008">get_all_perms()</a>, <a class="el" href="items_8php.html#a8675e62674de6fb7c42e4a408c7116cc">map_scope()</a>, <a class="el" href="permissions_8php.html#a67ada9ed51e77885b6b0f6a28cee1835">perm_is_allowed()</a>, <a class="el" href="zot_8php.html#a083aec6c900d244e1bfc1406f9461465">public_recips()</a>, <a class="el" href="security_8php.html#a6126c77a1267e046ac59cf864613f011">stream_perms_api_uids()</a>, and <a class="el" href="security_8php.html#a3ef2be6a7e4928e39d50059d6feb457c">stream_perms_xchans()</a>.</p>
</div>
</div>
@@ -4114,7 +4522,7 @@ Variables</h2></td></tr>
</table>
</div><div class="memdoc">
-<p>Referenced by <a class="el" href="connedit_8php.html#a795acb3d9d841f55c255d7611681ab67">connedit_content()</a>, <a class="el" href="permissions_8php.html#aeca9b280f3dc3358c89976d81d690008">get_all_perms()</a>, <a class="el" href="permissions_8php.html#a67ada9ed51e77885b6b0f6a28cee1835">perm_is_allowed()</a>, <a class="el" href="zot_8php.html#a083aec6c900d244e1bfc1406f9461465">public_recips()</a>, and <a class="el" href="permissions_8php.html#aa8b7b102c653649d7a71b5a1c044d90d">site_default_perms()</a>.</p>
+<p>Referenced by <a class="el" href="connedit_8php.html#a795acb3d9d841f55c255d7611681ab67">connedit_content()</a>, <a class="el" href="permissions_8php.html#aeca9b280f3dc3358c89976d81d690008">get_all_perms()</a>, <a class="el" href="permissions_8php.html#a9b5f5120566a3699a98efc5ccb0c59fe">get_role_perms()</a>, <a class="el" href="permissions_8php.html#a67ada9ed51e77885b6b0f6a28cee1835">perm_is_allowed()</a>, <a class="el" href="zot_8php.html#a083aec6c900d244e1bfc1406f9461465">public_recips()</a>, and <a class="el" href="permissions_8php.html#aa8b7b102c653649d7a71b5a1c044d90d">site_default_perms()</a>.</p>
</div>
</div>
@@ -4128,7 +4536,7 @@ Variables</h2></td></tr>
</table>
</div><div class="memdoc">
-<p>Referenced by <a class="el" href="permissions_8php.html#a040fd3d3b8517658b1668ae0cd093972">get_perms()</a>.</p>
+<p>Referenced by <a class="el" href="identity_8php.html#a345f4c943d84de502ec6e72d2c813945">create_identity()</a>, <a class="el" href="diaspora_8php.html#ac1ab782a34552a7c6b4dc961754ed598">diaspora_request()</a>, <a class="el" href="permissions_8php.html#a040fd3d3b8517658b1668ae0cd093972">get_perms()</a>, and <a class="el" href="permissions_8php.html#a9b5f5120566a3699a98efc5ccb0c59fe">get_role_perms()</a>.</p>
</div>
</div>
@@ -4142,7 +4550,21 @@ Variables</h2></td></tr>
</table>
</div><div class="memdoc">
-<p>Referenced by <a class="el" href="items_8php.html#a1e75047cf175aaee8dd16aa761913ff9">can_comment_on_post()</a>, <a class="el" href="permissions_8php.html#a040fd3d3b8517658b1668ae0cd093972">get_perms()</a>, and <a class="el" href="zot_8php.html#a083aec6c900d244e1bfc1406f9461465">public_recips()</a>.</p>
+<p>Referenced by <a class="el" href="items_8php.html#a1e75047cf175aaee8dd16aa761913ff9">can_comment_on_post()</a>, <a class="el" href="identity_8php.html#a345f4c943d84de502ec6e72d2c813945">create_identity()</a>, <a class="el" href="diaspora_8php.html#ac1ab782a34552a7c6b4dc961754ed598">diaspora_request()</a>, <a class="el" href="permissions_8php.html#a040fd3d3b8517658b1668ae0cd093972">get_perms()</a>, <a class="el" href="permissions_8php.html#a9b5f5120566a3699a98efc5ccb0c59fe">get_role_perms()</a>, and <a class="el" href="zot_8php.html#a083aec6c900d244e1bfc1406f9461465">public_recips()</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="af3ff14985bffbd951a6ea356b7ec3007"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">const PERMS_W_LIKE 0x20000</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p>Referenced by <a class="el" href="identity_8php.html#a345f4c943d84de502ec6e72d2c813945">create_identity()</a>, <a class="el" href="permissions_8php.html#a040fd3d3b8517658b1668ae0cd093972">get_perms()</a>, and <a class="el" href="permissions_8php.html#a9b5f5120566a3699a98efc5ccb0c59fe">get_role_perms()</a>.</p>
</div>
</div>
@@ -4156,7 +4578,7 @@ Variables</h2></td></tr>
</table>
</div><div class="memdoc">
-<p>Referenced by <a class="el" href="acl_8php.html#ac6776dba871806ecdb5d1659bc2eb07a">acl_init()</a>, <a class="el" href="permissions_8php.html#a040fd3d3b8517658b1668ae0cd093972">get_perms()</a>, <a class="el" href="mail_8php.html#acfc2cc0bf4e0b178207758384977f25a">mail_post()</a>, <a class="el" href="include_2follow_8php.html#ae387d4ae097c23d69f3247e7f08140c7">new_contact()</a>, and <a class="el" href="zot_8php.html#a083aec6c900d244e1bfc1406f9461465">public_recips()</a>.</p>
+<p>Referenced by <a class="el" href="acl_8php.html#ac6776dba871806ecdb5d1659bc2eb07a">acl_init()</a>, <a class="el" href="identity_8php.html#a345f4c943d84de502ec6e72d2c813945">create_identity()</a>, <a class="el" href="diaspora_8php.html#ac1ab782a34552a7c6b4dc961754ed598">diaspora_request()</a>, <a class="el" href="permissions_8php.html#a040fd3d3b8517658b1668ae0cd093972">get_perms()</a>, <a class="el" href="permissions_8php.html#a9b5f5120566a3699a98efc5ccb0c59fe">get_role_perms()</a>, <a class="el" href="mail_8php.html#acfc2cc0bf4e0b178207758384977f25a">mail_post()</a>, and <a class="el" href="zot_8php.html#a083aec6c900d244e1bfc1406f9461465">public_recips()</a>.</p>
</div>
</div>
@@ -4198,7 +4620,7 @@ Variables</h2></td></tr>
</table>
</div><div class="memdoc">
-<p>Referenced by <a class="el" href="permissions_8php.html#a040fd3d3b8517658b1668ae0cd093972">get_perms()</a>.</p>
+<p>Referenced by <a class="el" href="permissions_8php.html#a040fd3d3b8517658b1668ae0cd093972">get_perms()</a>, and <a class="el" href="permissions_8php.html#a9b5f5120566a3699a98efc5ccb0c59fe">get_role_perms()</a>.</p>
</div>
</div>
@@ -4212,7 +4634,7 @@ Variables</h2></td></tr>
</table>
</div><div class="memdoc">
-<p>Referenced by <a class="el" href="include_2api_8php.html#a36344c80b8e9755da2f2dd3a0e28cce8">api_ff_ids()</a>, <a class="el" href="include_2api_8php.html#aa0d6b29fff0344a8e67f3507a6d01410">api_statuses_f()</a>, <a class="el" href="permissions_8php.html#a040fd3d3b8517658b1668ae0cd093972">get_perms()</a>, <a class="el" href="include_2follow_8php.html#ae387d4ae097c23d69f3247e7f08140c7">new_contact()</a>, and <a class="el" href="zot_8php.html#a083aec6c900d244e1bfc1406f9461465">public_recips()</a>.</p>
+<p>Referenced by <a class="el" href="include_2api_8php.html#a36344c80b8e9755da2f2dd3a0e28cce8">api_ff_ids()</a>, <a class="el" href="include_2api_8php.html#aa0d6b29fff0344a8e67f3507a6d01410">api_statuses_f()</a>, <a class="el" href="identity_8php.html#a345f4c943d84de502ec6e72d2c813945">create_identity()</a>, <a class="el" href="diaspora_8php.html#ac1ab782a34552a7c6b4dc961754ed598">diaspora_request()</a>, <a class="el" href="permissions_8php.html#a040fd3d3b8517658b1668ae0cd093972">get_perms()</a>, <a class="el" href="permissions_8php.html#a9b5f5120566a3699a98efc5ccb0c59fe">get_role_perms()</a>, and <a class="el" href="zot_8php.html#a083aec6c900d244e1bfc1406f9461465">public_recips()</a>.</p>
</div>
</div>
@@ -4226,7 +4648,7 @@ Variables</h2></td></tr>
</table>
</div><div class="memdoc">
-<p>Referenced by <a class="el" href="acl_8php.html#ac6776dba871806ecdb5d1659bc2eb07a">acl_init()</a>, <a class="el" href="permissions_8php.html#a040fd3d3b8517658b1668ae0cd093972">get_perms()</a>, and <a class="el" href="item_8php.html#a693cd09805755ab85bbb5ecae69a48c3">item_post()</a>.</p>
+<p>Referenced by <a class="el" href="acl_8php.html#ac6776dba871806ecdb5d1659bc2eb07a">acl_init()</a>, <a class="el" href="permissions_8php.html#a040fd3d3b8517658b1668ae0cd093972">get_perms()</a>, <a class="el" href="permissions_8php.html#a9b5f5120566a3699a98efc5ccb0c59fe">get_role_perms()</a>, <a class="el" href="item_8php.html#a693cd09805755ab85bbb5ecae69a48c3">item_post()</a>, and <a class="el" href="zfinger_8php.html#a8139b83a22ef98869adc10aa224027a0">zfinger_init()</a>.</p>
</div>
</div>
@@ -4240,7 +4662,33 @@ Variables</h2></td></tr>
</table>
</div><div class="memdoc">
-<p>Referenced by <a class="el" href="permissions_8php.html#a040fd3d3b8517658b1668ae0cd093972">get_perms()</a>.</p>
+<p>Referenced by <a class="el" href="identity_8php.html#a345f4c943d84de502ec6e72d2c813945">create_identity()</a>, <a class="el" href="permissions_8php.html#a040fd3d3b8517658b1668ae0cd093972">get_perms()</a>, and <a class="el" href="permissions_8php.html#a9b5f5120566a3699a98efc5ccb0c59fe">get_role_perms()</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a921c55b9fa59a327a5f0e07fa1ccb2e0"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">const PHOTO_ADULT 0x0008</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p>Referenced by <a class="el" href="mod_2photos_8php.html#aa87382611a66ec5effdb2d78f13f5812">photos_content()</a>, and <a class="el" href="mod_2photos_8php.html#a062bed4d04d14fee8a53f4c9be673080">photos_post()</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="ab49a5d43ce1150c5af8c750ccb14e15f"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">const PHOTO_FLAG_OS 0x4000</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
</div>
</div>
@@ -4255,7 +4703,7 @@ Variables</h2></td></tr>
</div><div class="memdoc">
<p>Photo types </p>
-<p>Referenced by <a class="el" href="include_2photos_8php.html#a6c40ef58aefef705a5adc84a40e97109">photo_upload()</a>, <a class="el" href="include_2photos_8php.html#aedccaf18282b26899d9549c29bd9d1b9">photos_albums_list()</a>, <a class="el" href="mod_2photos_8php.html#aa87382611a66ec5effdb2d78f13f5812">photos_content()</a>, <a class="el" href="include_2photos_8php.html#aa27b9e435dcc34e1009f56dc02c7ca51">photos_list_photos()</a>, <a class="el" href="mod_2photos_8php.html#a062bed4d04d14fee8a53f4c9be673080">photos_post()</a>, and <a class="el" href="profile__photo_8php.html#a4b80234074bd603221aa5364f330e479">profile_photo_post()</a>.</p>
+<p>Referenced by <a class="el" href="include_2photos_8php.html#a6c40ef58aefef705a5adc84a40e97109">photo_upload()</a>, <a class="el" href="include_2photos_8php.html#aedccaf18282b26899d9549c29bd9d1b9">photos_albums_list()</a>, <a class="el" href="mod_2photos_8php.html#aa87382611a66ec5effdb2d78f13f5812">photos_content()</a>, <a class="el" href="include_2photos_8php.html#aa27b9e435dcc34e1009f56dc02c7ca51">photos_list_photos()</a>, and <a class="el" href="profile__photo_8php.html#a4b80234074bd603221aa5364f330e479">profile_photo_post()</a>.</p>
</div>
</div>
@@ -4269,7 +4717,7 @@ Variables</h2></td></tr>
</table>
</div><div class="memdoc">
-<p>Referenced by <a class="el" href="photo__driver_8php.html#a1d0bc7161dec0d177b7d3bbe4421af9a">import_channel_photo()</a>, <a class="el" href="include_2photos_8php.html#aedccaf18282b26899d9549c29bd9d1b9">photos_albums_list()</a>, <a class="el" href="mod_2photos_8php.html#aa87382611a66ec5effdb2d78f13f5812">photos_content()</a>, <a class="el" href="include_2photos_8php.html#aa27b9e435dcc34e1009f56dc02c7ca51">photos_list_photos()</a>, <a class="el" href="mod_2photos_8php.html#a062bed4d04d14fee8a53f4c9be673080">photos_post()</a>, <a class="el" href="profile__photo_8php.html#a4b80234074bd603221aa5364f330e479">profile_photo_post()</a>, and <a class="el" href="classphoto__driver.html#a5864fae7d8389372955a8e78cec527ac">photo_driver\save()</a>.</p>
+<p>Referenced by <a class="el" href="photo__driver_8php.html#a1d0bc7161dec0d177b7d3bbe4421af9a">import_channel_photo()</a>, <a class="el" href="include_2photos_8php.html#aedccaf18282b26899d9549c29bd9d1b9">photos_albums_list()</a>, <a class="el" href="mod_2photos_8php.html#aa87382611a66ec5effdb2d78f13f5812">photos_content()</a>, <a class="el" href="include_2photos_8php.html#aa27b9e435dcc34e1009f56dc02c7ca51">photos_list_photos()</a>, <a class="el" href="profile__photo_8php.html#a4b80234074bd603221aa5364f330e479">profile_photo_post()</a>, and <a class="el" href="classphoto__driver.html#a5864fae7d8389372955a8e78cec527ac">photo_driver\save()</a>.</p>
</div>
</div>
@@ -4374,7 +4822,7 @@ Variables</h2></td></tr>
<div class="memproto">
<table class="memname">
<tr>
- <td class="memname">const RED_PLATFORM 'Red Matrix'</td>
+ <td class="memname">const RED_PLATFORM 'redmatrix'</td>
</tr>
</table>
</div><div class="memdoc">
@@ -4383,7 +4831,7 @@ Variables</h2></td></tr>
<p>This allows any individual website to participate in a matrix of linked sites and people and media sharing which is far greater than the reach of an individual site.</p>
<p>If you are reading the source code and come across a function or code block which is not documented, but you have a good idea what it does, please add some descriptive comments and push it to the main project. Even if your description isn't perfect, it gives us a base which we can build on and correct - so that eventually everything is fully documented. </p>
-<p>Referenced by <a class="el" href="include_2api_8php.html#a623793229a7256dd31bcfd5ab90eef08">api_statusnet_config()</a>, <a class="el" href="classApp.html#a08f0537964d98958d218066364cff785">App\build_pagehead()</a>, <a class="el" href="items_8php.html#a04a35b610acfe54434df08adec39c0c7">get_feed_for()</a>, <a class="el" href="identity_8php.html#a3570a4eb77332b292d394c4132cb8f03">identity_basic_export()</a>, <a class="el" href="parse__url_8php.html#a05a9e8944380ba3cf6bbf5893dd4b74b">parse_url_content()</a>, <a class="el" href="siteinfo_8php.html#a3efbd0bd6564af19ec0a9ce0294e59d0">siteinfo_init()</a>, and <a class="el" href="zfinger_8php.html#a8139b83a22ef98869adc10aa224027a0">zfinger_init()</a>.</p>
+<p>Referenced by <a class="el" href="include_2api_8php.html#a623793229a7256dd31bcfd5ab90eef08">api_statusnet_config()</a>, <a class="el" href="classApp.html#a08f0537964d98958d218066364cff785">App\build_pagehead()</a>, <a class="el" href="items_8php.html#a04a35b610acfe54434df08adec39c0c7">get_feed_for()</a>, <a class="el" href="event_8php.html#ab8cc2825013e724dc26229026711cf93">ical_wrapper()</a>, <a class="el" href="identity_8php.html#afaedbc8e2d2a70ec8b006162baac5249">identity_basic_export()</a>, <a class="el" href="parse__url_8php.html#a05a9e8944380ba3cf6bbf5893dd4b74b">parse_url_content()</a>, <a class="el" href="siteinfo_8php.html#a3efbd0bd6564af19ec0a9ce0294e59d0">siteinfo_init()</a>, and <a class="el" href="zfinger_8php.html#a8139b83a22ef98869adc10aa224027a0">zfinger_init()</a>.</p>
</div>
</div>
@@ -4397,7 +4845,7 @@ Variables</h2></td></tr>
</table>
</div><div class="memdoc">
-<p>Referenced by <a class="el" href="admin_8php.html#ac6e95b920b5abd030cc522964987087a">admin_page_summary()</a>, <a class="el" href="include_2api_8php.html#a53b0680b682ae6078f2e1ed18cfb3f74">api_friendica_version()</a>, <a class="el" href="include_2api_8php.html#a623793229a7256dd31bcfd5ab90eef08">api_statusnet_config()</a>, <a class="el" href="classApp.html#a08f0537964d98958d218066364cff785">App\build_pagehead()</a>, <a class="el" href="items_8php.html#a04a35b610acfe54434df08adec39c0c7">get_feed_for()</a>, <a class="el" href="identity_8php.html#a3570a4eb77332b292d394c4132cb8f03">identity_basic_export()</a>, <a class="el" href="siteinfo_8php.html#a70c09bfb6dd1c86a125a35f62ed53656">siteinfo_content()</a>, <a class="el" href="siteinfo_8php.html#a3efbd0bd6564af19ec0a9ce0294e59d0">siteinfo_init()</a>, and <a class="el" href="zfinger_8php.html#a8139b83a22ef98869adc10aa224027a0">zfinger_init()</a>.</p>
+<p>Referenced by <a class="el" href="admin_8php.html#ac6e95b920b5abd030cc522964987087a">admin_page_summary()</a>, <a class="el" href="include_2api_8php.html#a53b0680b682ae6078f2e1ed18cfb3f74">api_friendica_version()</a>, <a class="el" href="include_2api_8php.html#a623793229a7256dd31bcfd5ab90eef08">api_statusnet_config()</a>, <a class="el" href="classApp.html#a08f0537964d98958d218066364cff785">App\build_pagehead()</a>, <a class="el" href="items_8php.html#a04a35b610acfe54434df08adec39c0c7">get_feed_for()</a>, <a class="el" href="identity_8php.html#afaedbc8e2d2a70ec8b006162baac5249">identity_basic_export()</a>, <a class="el" href="siteinfo_8php.html#a70c09bfb6dd1c86a125a35f62ed53656">siteinfo_content()</a>, <a class="el" href="siteinfo_8php.html#a3efbd0bd6564af19ec0a9ce0294e59d0">siteinfo_init()</a>, and <a class="el" href="zfinger_8php.html#a8139b83a22ef98869adc10aa224027a0">zfinger_init()</a>.</p>
</div>
</div>
@@ -4426,7 +4874,7 @@ Variables</h2></td></tr>
</div><div class="memdoc">
<p>registration policies </p>
-<p>Referenced by <a class="el" href="admin_8php.html#ac0f3bd12431c056aad77bac9d09fa30e">admin_page_site()</a>, <a class="el" href="include_2api_8php.html#a623793229a7256dd31bcfd5ab90eef08">api_statusnet_config()</a>, <a class="el" href="home_8php.html#aa1cf697851a646755baf537f75334c46">home_content()</a>, <a class="el" href="zot_8php.html#a2657e141d62d5f67ad3c87651b585299">import_site()</a>, <a class="el" href="login_8php.html#a1d69ca88eb9005a7026e128b9a645904">login_content()</a>, <a class="el" href="register_8php.html#a0e91f57f111407ea8d3223a05022bb2a">register_content()</a>, <a class="el" href="register_8php.html#a51731dcc1917c58a790eb1c0f6132271">register_post()</a>, <a class="el" href="regmod_8php.html#a7953df4e32e63946565e90cdd5d50409">regmod_content()</a>, and <a class="el" href="zfinger_8php.html#a8139b83a22ef98869adc10aa224027a0">zfinger_init()</a>.</p>
+<p>Referenced by <a class="el" href="admin_8php.html#ac0f3bd12431c056aad77bac9d09fa30e">admin_page_site()</a>, <a class="el" href="include_2api_8php.html#a623793229a7256dd31bcfd5ab90eef08">api_statusnet_config()</a>, <a class="el" href="home_8php.html#a6e3dbf78f4ed74ab2577de221190b33f">home_content()</a>, <a class="el" href="zot_8php.html#a2657e141d62d5f67ad3c87651b585299">import_site()</a>, <a class="el" href="login_8php.html#a1d69ca88eb9005a7026e128b9a645904">login_content()</a>, <a class="el" href="register_8php.html#a0e91f57f111407ea8d3223a05022bb2a">register_content()</a>, <a class="el" href="register_8php.html#a51731dcc1917c58a790eb1c0f6132271">register_post()</a>, <a class="el" href="regmod_8php.html#a7953df4e32e63946565e90cdd5d50409">regmod_content()</a>, and <a class="el" href="zfinger_8php.html#a8139b83a22ef98869adc10aa224027a0">zfinger_init()</a>.</p>
</div>
</div>
@@ -4492,7 +4940,7 @@ Variables</h2></td></tr>
</div><div class="memdoc">
<p>Default permissions for file-based storage (webDAV, etc.) These files will be owned by the webserver who will need write access to the "storage" folder. Ideally you should make this 700, however some hosted platforms may not let you change ownership of this directory so we're defaulting to both owner-write and group-write privilege. This should work for most cases without modification. Over-ride this in your .htconfig.php if you need something either more or less restrictive. </p>
-<p>Referenced by <a class="el" href="include_2attach_8php.html#ab6830b3ab74a5d284876141ac80f6cbc">attach_mkdir()</a>, <a class="el" href="security_8php.html#a8d23d2597aae380a3341872fe9513380">change_channel()</a>, <a class="el" href="setup_8php.html#ab4b71369a25021d59247c917e98d8246">check_store()</a>, and <a class="el" href="cloud_8php.html#a1b79a6fe0454bc76673ad9aef55bf02d">cloud_init()</a>.</p>
+<p>Referenced by <a class="el" href="include_2attach_8php.html#ab6830b3ab74a5d284876141ac80f6cbc">attach_mkdir()</a>, <a class="el" href="security_8php.html#a8d23d2597aae380a3341872fe9513380">change_channel()</a>, <a class="el" href="setup_8php.html#ab4b71369a25021d59247c917e98d8246">check_store()</a>, and <a class="el" href="cloud_8php.html#ad2e96e917852f27dedfc263d37e13756">cloud_init()</a>.</p>
</div>
</div>
@@ -4506,7 +4954,7 @@ Variables</h2></td></tr>
</table>
</div><div class="memdoc">
-<p>Referenced by <a class="el" href="setup_8php.html#afd8b0b3ade1507c45325caf377bf459d">check_smarty3()</a>.</p>
+<p>Referenced by <a class="el" href="classFriendicaSmartyEngine.html#ab7c305bd8c386c2944e4dc9136cea5b6">FriendicaSmartyEngine\__construct()</a>, and <a class="el" href="setup_8php.html#afd8b0b3ade1507c45325caf377bf459d">check_smarty3()</a>.</p>
</div>
</div>
@@ -4520,7 +4968,7 @@ Variables</h2></td></tr>
</table>
</div><div class="memdoc">
-<p>Referenced by <a class="el" href="mod_2bookmarks_8php.html#a6b7942f3d27e40f0f47c88704127b9b3">bookmarks_init()</a>, <a class="el" href="items_8php.html#a56b2a4abcadfac71175cd50555528cc3">decode_tags()</a>, <a class="el" href="items_8php.html#ac6673627d289ee4f547de0fe3b7acd0a">encode_item_terms()</a>, <a class="el" href="classItem.html#ad5dcbe0b94cb2d5719bc5b6bd8ad60c8">Item\get_template_data()</a>, and <a class="el" href="item_8php.html#aa22feef4de326e1d7078dedd892e615c">handle_tag()</a>.</p>
+<p>Referenced by <a class="el" href="mod_2bookmarks_8php.html#a6b7942f3d27e40f0f47c88704127b9b3">bookmarks_init()</a>, <a class="el" href="items_8php.html#a56b2a4abcadfac71175cd50555528cc3">decode_tags()</a>, <a class="el" href="items_8php.html#ac6673627d289ee4f547de0fe3b7acd0a">encode_item_terms()</a>, <a class="el" href="items_8php.html#a5e5be7bf1f8257dec0b2647e60a3f3f1">get_atom_elements()</a>, <a class="el" href="classItem.html#ad5dcbe0b94cb2d5719bc5b6bd8ad60c8">Item\get_template_data()</a>, and <a class="el" href="text_8php.html#aa22feef4de326e1d7078dedd892e615c">handle_tag()</a>.</p>
</div>
</div>
@@ -4534,7 +4982,7 @@ Variables</h2></td></tr>
</table>
</div><div class="memdoc">
-<p>Referenced by <a class="el" href="contact__widgets_8php.html#a165eb021e61c4dcab2a552f28628d353">categories_widget()</a>, <a class="el" href="channel_8php.html#a9c6a6179e0e626398ebecc6151905ef1">channel_content()</a>, <a class="el" href="items_8php.html#a56b2a4abcadfac71175cd50555528cc3">decode_tags()</a>, <a class="el" href="editpost_8php.html#a34011690864d122680c802e9e748ccfb">editpost_content()</a>, <a class="el" href="items_8php.html#ac6673627d289ee4f547de0fe3b7acd0a">encode_item_terms()</a>, <a class="el" href="taxonomy_8php.html#a163b5131f388080b0fc82398d3a32fe1">file_tag_file_query()</a>, <a class="el" href="filerm_8php.html#ae2eb28d2054fa2c37e38689882172208">filerm_content()</a>, <a class="el" href="text_8php.html#a3054189cff173977f4216c9a3dd29e1b">format_categories()</a>, <a class="el" href="item_8php.html#a693cd09805755ab85bbb5ecae69a48c3">item_post()</a>, and <a class="el" href="widgets_8php.html#a6dbc227aac750774284ee39c45f0a200">widget_tagcloud()</a>.</p>
+<p>Referenced by <a class="el" href="contact__widgets_8php.html#a165eb021e61c4dcab2a552f28628d353">categories_widget()</a>, <a class="el" href="channel_8php.html#a9c6a6179e0e626398ebecc6151905ef1">channel_content()</a>, <a class="el" href="items_8php.html#a56b2a4abcadfac71175cd50555528cc3">decode_tags()</a>, <a class="el" href="editpost_8php.html#a34011690864d122680c802e9e748ccfb">editpost_content()</a>, <a class="el" href="items_8php.html#ac6673627d289ee4f547de0fe3b7acd0a">encode_item_terms()</a>, <a class="el" href="events_8php.html#a1d293fb217ae6bc9e3858c4b32e363ec">events_content()</a>, <a class="el" href="events_8php.html#ab3e8a8f901175f8e40a8089eea45c075">events_post()</a>, <a class="el" href="taxonomy_8php.html#a163b5131f388080b0fc82398d3a32fe1">file_tag_file_query()</a>, <a class="el" href="filerm_8php.html#ae2eb28d2054fa2c37e38689882172208">filerm_content()</a>, <a class="el" href="text_8php.html#a3054189cff173977f4216c9a3dd29e1b">format_categories()</a>, <a class="el" href="items_8php.html#a5e5be7bf1f8257dec0b2647e60a3f3f1">get_atom_elements()</a>, <a class="el" href="item_8php.html#a693cd09805755ab85bbb5ecae69a48c3">item_post()</a>, <a class="el" href="mod_2network_8php.html#a43f2f29b90c5e29072c561934bc8f8b4">network_content()</a>, <a class="el" href="refimport_8php.html#ad97ebb5feda0230a4834e0b3637a0d29">refimport_content()</a>, and <a class="el" href="widgets_8php.html#a6dbc227aac750774284ee39c45f0a200">widget_tagcloud()</a>.</p>
</div>
</div>
@@ -4562,7 +5010,7 @@ Variables</h2></td></tr>
</table>
</div><div class="memdoc">
-<p>Referenced by <a class="el" href="items_8php.html#a87ac9e359591721a824ecd23bbb56296">check_item_source()</a>, <a class="el" href="conversation_8php.html#affea1afb3f32ca41e966c8ddb4204d81">conversation()</a>, <a class="el" href="items_8php.html#a56b2a4abcadfac71175cd50555528cc3">decode_tags()</a>, <a class="el" href="items_8php.html#ac6673627d289ee4f547de0fe3b7acd0a">encode_item_terms()</a>, <a class="el" href="text_8php.html#a3a0c432a484c17d7720b8ba2d6bfdd59">format_hashtags()</a>, <a class="el" href="taxonomy_8php.html#adfead45e3b8a3dfb2b4a4b9281d0dbe1">format_term_for_display()</a>, <a class="el" href="items_8php.html#a896c1809d58f2d7a42cfe14577958ddf">get_atom_elements()</a>, <a class="el" href="item_8php.html#aa22feef4de326e1d7078dedd892e615c">handle_tag()</a>, <a class="el" href="items_8php.html#a649dc3e53ed794d0ead4b5d037f8d8d7">item_getfeedtags()</a>, <a class="el" href="items_8php.html#a756738301f2ed96be50232500677d58a">items_fetch()</a>, <a class="el" href="mod_2network_8php.html#a43f2f29b90c5e29072c561934bc8f8b4">network_content()</a>, <a class="el" href="zot_8php.html#aad25a3fe0e1566121d6fb8222979bc10">remove_community_tag()</a>, <a class="el" href="search__ac_8php.html#a14f90c83a3f2be095e9e2992a8d66138">search_ac_init()</a>, <a class="el" href="search_8php.html#ab2568591359edde5b483a6cd9a24b2cc">search_content()</a>, <a class="el" href="items_8php.html#ab1bce4261bcf75ad62753b498a144d17">tag_deliver()</a>, and <a class="el" href="tagger_8php.html#a0e4a3eb177d1684553c547503d67161c">tagger_content()</a>.</p>
+<p>Referenced by <a class="el" href="channel_8php.html#a9c6a6179e0e626398ebecc6151905ef1">channel_content()</a>, <a class="el" href="items_8php.html#a87ac9e359591721a824ecd23bbb56296">check_item_source()</a>, <a class="el" href="conversation_8php.html#affea1afb3f32ca41e966c8ddb4204d81">conversation()</a>, <a class="el" href="items_8php.html#a56b2a4abcadfac71175cd50555528cc3">decode_tags()</a>, <a class="el" href="diaspora_8php.html#a0fb2abe304aae19efc040a5e6b917829">diaspora_comment()</a>, <a class="el" href="diaspora_8php.html#a20b968d64ef26afe5cb0cc75a7570a31">diaspora_post()</a>, <a class="el" href="diaspora_8php.html#a2bf43f6b5890897f425ef4325d34b007">diaspora_reshare()</a>, <a class="el" href="items_8php.html#ac6673627d289ee4f547de0fe3b7acd0a">encode_item_terms()</a>, <a class="el" href="text_8php.html#a3a0c432a484c17d7720b8ba2d6bfdd59">format_hashtags()</a>, <a class="el" href="taxonomy_8php.html#adfead45e3b8a3dfb2b4a4b9281d0dbe1">format_term_for_display()</a>, <a class="el" href="items_8php.html#a5e5be7bf1f8257dec0b2647e60a3f3f1">get_atom_elements()</a>, <a class="el" href="text_8php.html#aa22feef4de326e1d7078dedd892e615c">handle_tag()</a>, <a class="el" href="items_8php.html#a649dc3e53ed794d0ead4b5d037f8d8d7">item_getfeedtags()</a>, <a class="el" href="items_8php.html#a756738301f2ed96be50232500677d58a">items_fetch()</a>, <a class="el" href="mod_2network_8php.html#a43f2f29b90c5e29072c561934bc8f8b4">network_content()</a>, <a class="el" href="zot_8php.html#aad25a3fe0e1566121d6fb8222979bc10">remove_community_tag()</a>, <a class="el" href="search__ac_8php.html#a14f90c83a3f2be095e9e2992a8d66138">search_ac_init()</a>, <a class="el" href="search_8php.html#ab2568591359edde5b483a6cd9a24b2cc">search_content()</a>, <a class="el" href="items_8php.html#ab1bce4261bcf75ad62753b498a144d17">tag_deliver()</a>, and <a class="el" href="tagger_8php.html#a0e4a3eb177d1684553c547503d67161c">tagger_content()</a>.</p>
</div>
</div>
@@ -4576,7 +5024,7 @@ Variables</h2></td></tr>
</table>
</div><div class="memdoc">
-<p>Referenced by <a class="el" href="conversation_8php.html#affea1afb3f32ca41e966c8ddb4204d81">conversation()</a>, <a class="el" href="items_8php.html#a56b2a4abcadfac71175cd50555528cc3">decode_tags()</a>, <a class="el" href="items_8php.html#ac6673627d289ee4f547de0fe3b7acd0a">encode_item_terms()</a>, <a class="el" href="items_8php.html#adf980098b6de9c3993bc3ff26a8dd6f9">fetch_post_tags()</a>, <a class="el" href="text_8php.html#ad8c6e13d6accf057136c5f30a23a5f08">format_mentions()</a>, <a class="el" href="taxonomy_8php.html#adfead45e3b8a3dfb2b4a4b9281d0dbe1">format_term_for_display()</a>, <a class="el" href="items_8php.html#a896c1809d58f2d7a42cfe14577958ddf">get_atom_elements()</a>, <a class="el" href="text_8php.html#a76d1b3435c067978d7b484c45f56472b">get_mentions()</a>, <a class="el" href="item_8php.html#aa22feef4de326e1d7078dedd892e615c">handle_tag()</a>, <a class="el" href="items_8php.html#a649dc3e53ed794d0ead4b5d037f8d8d7">item_getfeedtags()</a>, <a class="el" href="items_8php.html#ab1bce4261bcf75ad62753b498a144d17">tag_deliver()</a>, and <a class="el" href="items_8php.html#a88c6cf7649ac836fbbed82a7a0315110">tgroup_check()</a>.</p>
+<p>Referenced by <a class="el" href="conversation_8php.html#affea1afb3f32ca41e966c8ddb4204d81">conversation()</a>, <a class="el" href="items_8php.html#a56b2a4abcadfac71175cd50555528cc3">decode_tags()</a>, <a class="el" href="diaspora_8php.html#a0fb2abe304aae19efc040a5e6b917829">diaspora_comment()</a>, <a class="el" href="diaspora_8php.html#a20b968d64ef26afe5cb0cc75a7570a31">diaspora_post()</a>, <a class="el" href="diaspora_8php.html#a2bf43f6b5890897f425ef4325d34b007">diaspora_reshare()</a>, <a class="el" href="items_8php.html#ac6673627d289ee4f547de0fe3b7acd0a">encode_item_terms()</a>, <a class="el" href="items_8php.html#adf980098b6de9c3993bc3ff26a8dd6f9">fetch_post_tags()</a>, <a class="el" href="text_8php.html#ad8c6e13d6accf057136c5f30a23a5f08">format_mentions()</a>, <a class="el" href="taxonomy_8php.html#adfead45e3b8a3dfb2b4a4b9281d0dbe1">format_term_for_display()</a>, <a class="el" href="items_8php.html#a5e5be7bf1f8257dec0b2647e60a3f3f1">get_atom_elements()</a>, <a class="el" href="text_8php.html#a76d1b3435c067978d7b484c45f56472b">get_mentions()</a>, <a class="el" href="text_8php.html#aa22feef4de326e1d7078dedd892e615c">handle_tag()</a>, <a class="el" href="items_8php.html#a649dc3e53ed794d0ead4b5d037f8d8d7">item_getfeedtags()</a>, <a class="el" href="items_8php.html#ab1bce4261bcf75ad62753b498a144d17">tag_deliver()</a>, and <a class="el" href="items_8php.html#a88c6cf7649ac836fbbed82a7a0315110">tgroup_check()</a>.</p>
</div>
</div>
@@ -4638,7 +5086,7 @@ Variables</h2></td></tr>
</table>
</div><div class="memdoc">
-<p>Referenced by <a class="el" href="items_8php.html#aac8c9eb4338e2a996c43914392c6cfdb">delete_item_lowlevel()</a>, <a class="el" href="items_8php.html#adf980098b6de9c3993bc3ff26a8dd6f9">fetch_post_tags()</a>, <a class="el" href="filer_8php.html#a5fd5d7e61b2f9c43cb5f110c89dc4274">filer_content()</a>, <a class="el" href="items_8php.html#a896c1809d58f2d7a42cfe14577958ddf">get_atom_elements()</a>, <a class="el" href="item_8php.html#a693cd09805755ab85bbb5ecae69a48c3">item_post()</a>, <a class="el" href="items_8php.html#a2541e6861a56d145c9281877cc501615">item_store()</a>, <a class="el" href="items_8php.html#acf0bf7c9d21ac84f32effb754f7ad484">item_store_update()</a>, <a class="el" href="mod_2photos_8php.html#a062bed4d04d14fee8a53f4c9be673080">photos_post()</a>, <a class="el" href="zot_8php.html#aad25a3fe0e1566121d6fb8222979bc10">remove_community_tag()</a>, <a class="el" href="search_8php.html#ab2568591359edde5b483a6cd9a24b2cc">search_content()</a>, <a class="el" href="items_8php.html#ab1bce4261bcf75ad62753b498a144d17">tag_deliver()</a>, <a class="el" href="taxonomy_8php.html#aaf90ba8b839d6459065f39a4f1109b8a">tagadelic()</a>, and <a class="el" href="tagger_8php.html#a0e4a3eb177d1684553c547503d67161c">tagger_content()</a>.</p>
+<p>Referenced by <a class="el" href="items_8php.html#aac8c9eb4338e2a996c43914392c6cfdb">delete_item_lowlevel()</a>, <a class="el" href="diaspora_8php.html#a0fb2abe304aae19efc040a5e6b917829">diaspora_comment()</a>, <a class="el" href="diaspora_8php.html#a20b968d64ef26afe5cb0cc75a7570a31">diaspora_post()</a>, <a class="el" href="diaspora_8php.html#a2bf43f6b5890897f425ef4325d34b007">diaspora_reshare()</a>, <a class="el" href="event_8php.html#a7378e839ac3de9d55579eb3ec48eaf92">event_store_item()</a>, <a class="el" href="events_8php.html#ab3e8a8f901175f8e40a8089eea45c075">events_post()</a>, <a class="el" href="items_8php.html#adf980098b6de9c3993bc3ff26a8dd6f9">fetch_post_tags()</a>, <a class="el" href="filer_8php.html#a5fd5d7e61b2f9c43cb5f110c89dc4274">filer_content()</a>, <a class="el" href="items_8php.html#a5e5be7bf1f8257dec0b2647e60a3f3f1">get_atom_elements()</a>, <a class="el" href="item_8php.html#a693cd09805755ab85bbb5ecae69a48c3">item_post()</a>, <a class="el" href="items_8php.html#a2541e6861a56d145c9281877cc501615">item_store()</a>, <a class="el" href="items_8php.html#acf0bf7c9d21ac84f32effb754f7ad484">item_store_update()</a>, <a class="el" href="mod_2photos_8php.html#a062bed4d04d14fee8a53f4c9be673080">photos_post()</a>, <a class="el" href="refimport_8php.html#ad97ebb5feda0230a4834e0b3637a0d29">refimport_content()</a>, <a class="el" href="zot_8php.html#aad25a3fe0e1566121d6fb8222979bc10">remove_community_tag()</a>, <a class="el" href="search_8php.html#ab2568591359edde5b483a6cd9a24b2cc">search_content()</a>, <a class="el" href="items_8php.html#ab1bce4261bcf75ad62753b498a144d17">tag_deliver()</a>, <a class="el" href="taxonomy_8php.html#aaf90ba8b839d6459065f39a4f1109b8a">tagadelic()</a>, and <a class="el" href="tagger_8php.html#a0e4a3eb177d1684553c547503d67161c">tagger_content()</a>.</p>
</div>
</div>
@@ -4692,7 +5140,7 @@ Variables</h2></td></tr>
</table>
</div><div class="memdoc">
-<p>Referenced by <a class="el" href="widgets_8php.html#a94203eb9bcd63cbdecbbcb15163598d8">widget_savedsearch()</a>.</p>
+<p>Referenced by <a class="el" href="identity_8php.html#afaedbc8e2d2a70ec8b006162baac5249">identity_basic_export()</a>, and <a class="el" href="widgets_8php.html#a94203eb9bcd63cbdecbbcb15163598d8">widget_savedsearch()</a>.</p>
</div>
</div>
@@ -4706,7 +5154,7 @@ Variables</h2></td></tr>
</table>
</div><div class="memdoc">
-<p>Referenced by <a class="el" href="items_8php.html#a56b2a4abcadfac71175cd50555528cc3">decode_tags()</a>, and <a class="el" href="thing_8php.html#a8be23b1d475ec3d9291999221c674c80">thing_init()</a>.</p>
+<p>Referenced by <a class="el" href="items_8php.html#a56b2a4abcadfac71175cd50555528cc3">decode_tags()</a>, <a class="el" href="identity_8php.html#afaedbc8e2d2a70ec8b006162baac5249">identity_basic_export()</a>, and <a class="el" href="thing_8php.html#a8be23b1d475ec3d9291999221c674c80">thing_init()</a>.</p>
</div>
</div>
@@ -4721,7 +5169,7 @@ Variables</h2></td></tr>
</div><div class="memdoc">
<p>Tag/term types </p>
-<p>Referenced by <a class="el" href="conversation_8php.html#affea1afb3f32ca41e966c8ddb4204d81">conversation()</a>, <a class="el" href="items_8php.html#a56b2a4abcadfac71175cd50555528cc3">decode_tags()</a>, <a class="el" href="items_8php.html#ac6673627d289ee4f547de0fe3b7acd0a">encode_item_terms()</a>, <a class="el" href="items_8php.html#a896c1809d58f2d7a42cfe14577958ddf">get_atom_elements()</a>, and <a class="el" href="item_8php.html#aa22feef4de326e1d7078dedd892e615c">handle_tag()</a>.</p>
+<p>Referenced by <a class="el" href="conversation_8php.html#affea1afb3f32ca41e966c8ddb4204d81">conversation()</a>, <a class="el" href="items_8php.html#a56b2a4abcadfac71175cd50555528cc3">decode_tags()</a>, <a class="el" href="items_8php.html#ac6673627d289ee4f547de0fe3b7acd0a">encode_item_terms()</a>, and <a class="el" href="text_8php.html#aa22feef4de326e1d7078dedd892e615c">handle_tag()</a>.</p>
</div>
</div>
@@ -4777,7 +5225,7 @@ Variables</h2></td></tr>
</table>
</div><div class="memdoc">
-<p>Referenced by <a class="el" href="zot_8php.html#a528e97ca5d69c3b7f35c5d954afde315">import_xchan()</a>, <a class="el" href="dir__fns_8php.html#acd37b17dce3bdec6d5a6344a20598c1e">local_dir_update()</a>, <a class="el" href="onedirsync_8php.html#a411aedd47c57476099647961e6a86691">onedirsync_run()</a>, <a class="el" href="poller_8php.html#a5f12df3a4738124b6c039971e87e76da">poller_run()</a>, <a class="el" href="zot_8php.html#a9a57b40669351c9791126b925cb7ef3b">process_profile_delivery()</a>, <a class="el" href="zot_8php.html#ab319d1d9fff9c7775d9daef42d1f33dd">update_modtime()</a>, and <a class="el" href="zot_8php.html#a7ac30ff51274bf0b6d3eade37972145c">zot_refresh()</a>.</p>
+<p>Referenced by <a class="el" href="zot_8php.html#a528e97ca5d69c3b7f35c5d954afde315">import_xchan()</a>, <a class="el" href="dir__fns_8php.html#acd37b17dce3bdec6d5a6344a20598c1e">local_dir_update()</a>, <a class="el" href="onedirsync_8php.html#a411aedd47c57476099647961e6a86691">onedirsync_run()</a>, <a class="el" href="poller_8php.html#a5f12df3a4738124b6c039971e87e76da">poller_run()</a>, <a class="el" href="zot_8php.html#a8eeefdb0dad4c436bea9d1c06c0a7988">process_location_delivery()</a>, <a class="el" href="zot_8php.html#a9a57b40669351c9791126b925cb7ef3b">process_profile_delivery()</a>, <a class="el" href="zot_8php.html#ab319d1d9fff9c7775d9daef42d1f33dd">update_modtime()</a>, and <a class="el" href="zot_8php.html#a7ac30ff51274bf0b6d3eade37972145c">zot_refresh()</a>.</p>
</div>
</div>
@@ -4796,6 +5244,161 @@ Variables</h2></td></tr>
</div>
</div>
+<a class="anchor" id="a9f8a2938ddd9ee2867e6f8ce77b61b2f"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">const VNOTIFY_ALERT 0x0100</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p>Referenced by <a class="el" href="ping_8php.html#a77217b1b190b4c5d8770867b45f0c0a1">ping_init()</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="ac89396b9144391acd08d6d0f9b332220"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">const VNOTIFY_BIRTHDAY 0x0020</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p>Referenced by <a class="el" href="ping_8php.html#a77217b1b190b4c5d8770867b45f0c0a1">ping_init()</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a7b511bd93202c43405adbe3b5bcebbfe"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">const VNOTIFY_CHANNEL 0x0002</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p>Referenced by <a class="el" href="ping_8php.html#a77217b1b190b4c5d8770867b45f0c0a1">ping_init()</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="ad94aca4c260b8a892397786201dc4664"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">const VNOTIFY_EVENT 0x0008</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p>Referenced by <a class="el" href="ping_8php.html#a77217b1b190b4c5d8770867b45f0c0a1">ping_init()</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a76480b213af379c0c6c7fa4e39019ca9"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">const VNOTIFY_EVENTTODAY 0x0010</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p>Referenced by <a class="el" href="ping_8php.html#a77217b1b190b4c5d8770867b45f0c0a1">ping_init()</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a37281c30bd92cecb499878d6778c570f"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">const VNOTIFY_INFO 0x0080</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p>Referenced by <a class="el" href="ping_8php.html#a77217b1b190b4c5d8770867b45f0c0a1">ping_init()</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a1997c4b7d0253e036bc0fb6b20e4af71"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">const VNOTIFY_INTRO 0x0200</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p>Referenced by <a class="el" href="ping_8php.html#a77217b1b190b4c5d8770867b45f0c0a1">ping_init()</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a0afeb43da443d6ff3526ede5ecdcc3b3"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">const VNOTIFY_MAIL 0x0004</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p>Referenced by <a class="el" href="ping_8php.html#a77217b1b190b4c5d8770867b45f0c0a1">ping_init()</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a997614f25e58f8313641e1eb0109fd10"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">const VNOTIFY_NETWORK 0x0001</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+<p>visual notification options </p>
+
+<p>Referenced by <a class="el" href="ping_8php.html#a77217b1b190b4c5d8770867b45f0c0a1">ping_init()</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="ae09767b94688657978ff9366ec63684b"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">const VNOTIFY_REGISTER 0x0400</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p>Referenced by <a class="el" href="ping_8php.html#a77217b1b190b4c5d8770867b45f0c0a1">ping_init()</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a7e5627b5ca4b7464feb0f08663b19ea1"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">const VNOTIFY_SYSTEM 0x0040</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p>Referenced by <a class="el" href="ping_8php.html#a77217b1b190b4c5d8770867b45f0c0a1">ping_init()</a>.</p>
+
+</div>
+</div>
<a class="anchor" id="accd6f36cc9f40225cbd720e4d12a7c6e"></a>
<div class="memitem">
<div class="memproto">
@@ -4820,7 +5423,7 @@ Variables</h2></td></tr>
</table>
</div><div class="memdoc">
-<p>Referenced by <a class="el" href="acl_8php.html#ac6776dba871806ecdb5d1659bc2eb07a">acl_init()</a>, <a class="el" href="Contact_8php.html#a186162051a5127069cc851d78740f205">channel_remove()</a>, <a class="el" href="connections_8php.html#aec2e457420fce3e3bf6a9f48e36df25c">connections_content()</a>, <a class="el" href="text_8php.html#ad6432621d0fafcbcf3d3b9b49bef7784">contact_block()</a>, <a class="el" href="dirsearch_8php.html#aa1fb04e1de4f25b63349ac78f94ceb4c">dirsearch_content()</a>, <a class="el" href="mod_2group_8php.html#a07a64f6c65b0080d8190b3d9728a7a83">group_content()</a>, <a class="el" href="include_2group_8php.html#a5bd191d9692e6c34d48c0ede10810f09">group_get_members()</a>, <a class="el" href="zot_8php.html#a528e97ca5d69c3b7f35c5d954afde315">import_xchan()</a>, <a class="el" href="ping_8php.html#a77217b1b190b4c5d8770867b45f0c0a1">ping_init()</a>, <a class="el" href="Contact_8php.html#acc12cda999c88c4d6185cca967c15125">remove_all_xchan_resources()</a>, <a class="el" href="socgraph_8php.html#a76e6fca3d2bc842dcd9e710bb87c8329">suggestion_query()</a>, <a class="el" href="viewconnections_8php.html#ab6c4d983e97b3a8a879567ff76507776">viewconnections_content()</a>, and <a class="el" href="zfinger_8php.html#a8139b83a22ef98869adc10aa224027a0">zfinger_init()</a>.</p>
+<p>Referenced by <a class="el" href="acl_8php.html#ac6776dba871806ecdb5d1659bc2eb07a">acl_init()</a>, <a class="el" href="Contact_8php.html#a4e8af0f0525161da74583c04b8b03097">channel_remove()</a>, <a class="el" href="connections_8php.html#aec2e457420fce3e3bf6a9f48e36df25c">connections_content()</a>, <a class="el" href="text_8php.html#ad6432621d0fafcbcf3d3b9b49bef7784">contact_block()</a>, <a class="el" href="dirsearch_8php.html#aa1fb04e1de4f25b63349ac78f94ceb4c">dirsearch_content()</a>, <a class="el" href="mod_2group_8php.html#a07a64f6c65b0080d8190b3d9728a7a83">group_content()</a>, <a class="el" href="include_2group_8php.html#a5bd191d9692e6c34d48c0ede10810f09">group_get_members()</a>, <a class="el" href="zot_8php.html#a528e97ca5d69c3b7f35c5d954afde315">import_xchan()</a>, <a class="el" href="manage_8php.html#a2bca247b5296827638959138367db4f5">manage_content()</a>, <a class="el" href="ping_8php.html#a77217b1b190b4c5d8770867b45f0c0a1">ping_init()</a>, <a class="el" href="Contact_8php.html#acc12cda999c88c4d6185cca967c15125">remove_all_xchan_resources()</a>, <a class="el" href="socgraph_8php.html#a76e6fca3d2bc842dcd9e710bb87c8329">suggestion_query()</a>, <a class="el" href="viewconnections_8php.html#ab6c4d983e97b3a8a879567ff76507776">viewconnections_content()</a>, and <a class="el" href="zfinger_8php.html#a8139b83a22ef98869adc10aa224027a0">zfinger_init()</a>.</p>
</div>
</div>
@@ -4862,7 +5465,21 @@ Variables</h2></td></tr>
</table>
</div><div class="memdoc">
-<p>Referenced by <a class="el" href="connections_8php.html#aec2e457420fce3e3bf6a9f48e36df25c">connections_content()</a>, <a class="el" href="text_8php.html#ad6432621d0fafcbcf3d3b9b49bef7784">contact_block()</a>, <a class="el" href="dirsearch_8php.html#aa1fb04e1de4f25b63349ac78f94ceb4c">dirsearch_content()</a>, <a class="el" href="zot_8php.html#a528e97ca5d69c3b7f35c5d954afde315">import_xchan()</a>, <a class="el" href="Contact_8php.html#a08845ce8c5b997d5edac38ae7118b5c8">mark_orphan_hubsxchans()</a>, <a class="el" href="ping_8php.html#a77217b1b190b4c5d8770867b45f0c0a1">ping_init()</a>, <a class="el" href="post_8php.html#af59e6a1dc22d19d9257b01cd7ccedb75">post_post()</a>, and <a class="el" href="viewconnections_8php.html#ab6c4d983e97b3a8a879567ff76507776">viewconnections_content()</a>.</p>
+<p>Referenced by <a class="el" href="connections_8php.html#aec2e457420fce3e3bf6a9f48e36df25c">connections_content()</a>, <a class="el" href="text_8php.html#ad6432621d0fafcbcf3d3b9b49bef7784">contact_block()</a>, <a class="el" href="dirsearch_8php.html#aa1fb04e1de4f25b63349ac78f94ceb4c">dirsearch_content()</a>, <a class="el" href="manage_8php.html#a2bca247b5296827638959138367db4f5">manage_content()</a>, <a class="el" href="Contact_8php.html#a08845ce8c5b997d5edac38ae7118b5c8">mark_orphan_hubsxchans()</a>, <a class="el" href="ping_8php.html#a77217b1b190b4c5d8770867b45f0c0a1">ping_init()</a>, <a class="el" href="post_8php.html#af59e6a1dc22d19d9257b01cd7ccedb75">post_post()</a>, <a class="el" href="zot_8php.html#ab15c04e7e5f44edf45ec50dd7d183254">sync_locations()</a>, and <a class="el" href="viewconnections_8php.html#ab6c4d983e97b3a8a879567ff76507776">viewconnections_content()</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a0209e605028a5bb492683951ab30d49d"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">const XCHAN_FLAGS_PUBFORUM 0x0020</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p>Referenced by <a class="el" href="dirsearch_8php.html#aa1fb04e1de4f25b63349ac78f94ceb4c">dirsearch_content()</a>, and <a class="el" href="zot_8php.html#a528e97ca5d69c3b7f35c5d954afde315">import_xchan()</a>.</p>
</div>
</div>
@@ -4876,7 +5493,7 @@ Variables</h2></td></tr>
</table>
</div><div class="memdoc">
-<p>Referenced by <a class="el" href="dirsearch_8php.html#aa1fb04e1de4f25b63349ac78f94ceb4c">dirsearch_content()</a>, <a class="el" href="zot_8php.html#a20750dd2c36961013fd382fb34e1366c">import_directory_profile()</a>, and <a class="el" href="zot_8php.html#a528e97ca5d69c3b7f35c5d954afde315">import_xchan()</a>.</p>
+<p>Referenced by <a class="el" href="dirsearch_8php.html#aa1fb04e1de4f25b63349ac78f94ceb4c">dirsearch_content()</a>, <a class="el" href="zot_8php.html#a20750dd2c36961013fd382fb34e1366c">import_directory_profile()</a>, <a class="el" href="zot_8php.html#a528e97ca5d69c3b7f35c5d954afde315">import_xchan()</a>, and <a class="el" href="zot_8php.html#a0e3006e7a456b2175a9badc96bc5176d">process_delivery()</a>.</p>
</div>
</div>
@@ -4917,7 +5534,7 @@ Variables</h2></td></tr>
</table>
</div><div class="memdoc">
-<p>Referenced by <a class="el" href="include_2api_8php.html#a623793229a7256dd31bcfd5ab90eef08">api_statusnet_config()</a>, <a class="el" href="magic_8php.html#acea2cc792849ca2d71d4b689f66518bf">magic_init()</a>, and <a class="el" href="zot_8php.html#a3862b3161b2c8557dc1a95020179bd81">zot_build_packet()</a>.</p>
+<p>Referenced by <a class="el" href="include_2api_8php.html#a623793229a7256dd31bcfd5ab90eef08">api_statusnet_config()</a>, <a class="el" href="magic_8php.html#acea2cc792849ca2d71d4b689f66518bf">magic_init()</a>, and <a class="el" href="zot_8php.html#a084c581d534e7e3b759488b46602288f">zot_build_packet()</a>.</p>
</div>
</div>
diff --git a/doc/html/boot_8php.js b/doc/html/boot_8php.js
index 26e01354b..af99f9851 100644
--- a/doc/html/boot_8php.js
+++ b/doc/html/boot_8php.js
@@ -17,8 +17,10 @@ var boot_8php =
[ "get_account_id", "boot_8php.html#afe88b920aa285982edb817a0dd44eb37", null ],
[ "get_app", "boot_8php.html#a0e6db7e365f2b041a828b93786f694bc", null ],
[ "get_custom_nav", "boot_8php.html#a899d24fd074594ceebbf72e1feff335f", null ],
+ [ "get_directory_realm", "boot_8php.html#a329400dcb29897cdaae3020109272285", null ],
[ "get_max_import_size", "boot_8php.html#a97769915c9f14adc4f8ab1ea2cecfd90", null ],
[ "get_observer_hash", "boot_8php.html#a623e49c79943f3e7bdb770d021683cf7", null ],
+ [ "get_poller_runtime", "boot_8php.html#aa561f801e962b67a5c4d0548ea95fd17", null ],
[ "goaway", "boot_8php.html#a5ab6181607a090bcdbaa13b15b85aba1", null ],
[ "head_get_icon", "boot_8php.html#a24a7a70afedd5d85fe0eadc85afa9f77", null ],
[ "head_set_icon", "boot_8php.html#a0e4701c9742c3ef88f02ac450a042a84", null ],
@@ -29,19 +31,24 @@ var boot_8php =
[ "is_windows", "boot_8php.html#ac5e74f899f6e98d8e91b14ba1c08bc08", null ],
[ "killme", "boot_8php.html#aea7fc57a4d8e9dcb42f2601b0b9b761c", null ],
[ "load_contact_links", "boot_8php.html#a719c7f3972d5f9268f37a41c76cd4ef6", null ],
+ [ "load_pdl", "boot_8php.html#a50a6707a28c7d05d3f49eaabc7994501", null ],
[ "local_user", "boot_8php.html#ad4c9dc2c8a82e8f52b7404c1655eab44", null ],
[ "login", "boot_8php.html#aefecf8599036df7f1b95d6820e0e2fa4", null ],
[ "notice", "boot_8php.html#a9255af5ae9c887520091ea04763c1a88", null ],
+ [ "os_mkdir", "boot_8php.html#a5fbebdf7a1c0ea8f904dbd9d78c2c06c", null ],
[ "proc_run", "boot_8php.html#ab346a2ece14993861f3e4206befa94f0", null ],
[ "remote_user", "boot_8php.html#a5542c5c2806ab8bca04bad53d47b5209", null ],
[ "startup", "boot_8php.html#aca47505b8732177f52bb2d647eb2741c", null ],
[ "system_unavailable", "boot_8php.html#ac608a34f3bc180e7724192e0fd31f9b0", null ],
- [ "x", "boot_8php.html#a01353c9abebc3544ea080ac161729632", null ],
+ [ "x", "boot_8php.html#ae97836b0547953be182a2334c9c91d3c", null ],
+ [ "z_get_temp_dir", "boot_8php.html#a59717d02602a4babf2a54da8b33d93a5", null ],
+ [ "z_get_upload_dir", "boot_8php.html#a476c499e15caf75972fed134a8f23b2e", null ],
[ "z_path", "boot_8php.html#aba208673515cbb8a55e5fa4a1da99fda", null ],
[ "z_root", "boot_8php.html#add517a0958ac684792c62142a3877f81", null ],
[ "$DIRECTORY_FALLBACK_SERVERS", "boot_8php.html#a107d53f96acf5319905a34b1870db09a", null ],
[ "ABOOK_FLAG_ARCHIVED", "boot_8php.html#a222395aa223cfbff6166fab0b4e2e1d5", null ],
[ "ABOOK_FLAG_BLOCKED", "boot_8php.html#a52b599cd13e152ebc80d7e4413683195", null ],
+ [ "ABOOK_FLAG_FEED", "boot_8php.html#ae0d9527117cd87dcba11986047ae336e", null ],
[ "ABOOK_FLAG_HIDDEN", "boot_8php.html#a34c756469ebed32e2fc987bcde62d382", null ],
[ "ABOOK_FLAG_IGNORED", "boot_8php.html#aa3425e2de85b08f7041656d3a8502cb6", null ],
[ "ABOOK_FLAG_PENDING", "boot_8php.html#a68eebe493e6f729ffd1aeda7a4b11155", null ],
@@ -97,6 +104,8 @@ var boot_8php =
[ "CONTACT_IS_FRIEND", "boot_8php.html#a27299ecfb9e9a99826f17a1c14c6995f", null ],
[ "CONTACT_IS_SHARING", "boot_8php.html#a6c5e9e293c8242dcb9bc2c3ea2fee2c9", null ],
[ "DB_UPDATE_VERSION", "boot_8php.html#ac59a18a4838710d6c2de37aed6b21f03", null ],
+ [ "DBTYPE_MYSQL", "boot_8php.html#a8c9a11c47394244cbe18cd75b9726d5f", null ],
+ [ "DBTYPE_POSTGRES", "boot_8php.html#a37ddabc112db443b4c67fbc0f708817e", null ],
[ "DEFAULT_DB_ENGINE", "boot_8php.html#aa8a2b61e70900139d1ca28e46f1da49d", null ],
[ "DIRECTORY_FALLBACK_MASTER", "boot_8php.html#abedd940e664017c61b48c6efa31d0cb8", null ],
[ "DIRECTORY_MODE_NORMAL", "boot_8php.html#ab7d65a7e7417825a4db62906bb600729", null ],
@@ -137,6 +146,7 @@ var boot_8php =
[ "ITEM_PENDING_REMOVE", "boot_8php.html#a028380b2902a86ba32198f6d3b5d10bb", null ],
[ "ITEM_RELAY", "boot_8php.html#a2958a2bd5422b85329d7c36c06dbc221", null ],
[ "ITEM_RETAINED", "boot_8php.html#a11cfe7d99b4dac0454d0de8873989f81", null ],
+ [ "ITEM_RSS", "boot_8php.html#ac4d1c93dabcace711ffb4931204c336b", null ],
[ "ITEM_SPAM", "boot_8php.html#a40d885b2cfd736aab4234ae641ca4dfb", null ],
[ "ITEM_STARRED", "boot_8php.html#a7af107fab8d62b9a73801713b774ed30", null ],
[ "ITEM_THREAD_TOP", "boot_8php.html#a749144d8dd9c1366596a0213c277d050", null ],
@@ -183,6 +193,7 @@ var boot_8php =
[ "NAMESPACE_STATUSNET", "boot_8php.html#afaf93b7026f784b113b4f8921745891e", null ],
[ "NAMESPACE_THREAD", "boot_8php.html#a1d6e7f4c08bb68e4a424326a811bdd86", null ],
[ "NAMESPACE_TOMB", "boot_8php.html#a4bfe22e163657690dfb6d5b1d04cb47e", null ],
+ [ "NAMESPACE_YMEDIA", "boot_8php.html#a3d48dffd9dc73a187263c3002cdf00c0", null ],
[ "NAMESPACE_ZOT", "boot_8php.html#a49f2a70b3b43aa904223a8d19e986a47", null ],
[ "NETWORK_DFRN", "boot_8php.html#ae3cef7b63e25e7bafea3fcf6b99fad0e", null ],
[ "NETWORK_DIASPORA", "boot_8php.html#a38f6c7fe33b5434a24b4314567753dfa", null ],
@@ -214,11 +225,11 @@ var boot_8php =
[ "PAGE_CENSORED", "boot_8php.html#a36003bebe4ce860c6652bcc3e09b2214", null ],
[ "PAGE_DIRECTORY_CHANNEL", "boot_8php.html#a5b8484922918946d041e5e0515dbe718", null ],
[ "PAGE_HIDDEN", "boot_8php.html#a5e322a2a2d0f51924c0b2e874988e640", null ],
+ [ "PAGE_HUBADMIN", "boot_8php.html#afbb21ecccac9819aa65397e816868a5f", null ],
[ "PAGE_NORMAL", "boot_8php.html#a09532c3f750ae8c4527e63b2b790cbf3", null ],
[ "PAGE_PREMIUM", "boot_8php.html#ab3920c2f3cd64802c0b7ff625c3b2ea8", null ],
[ "PAGE_REMOVED", "boot_8php.html#a4edce16cb7f21cdafa1e85bf63d713e6", null ],
[ "PAGE_SYSTEM", "boot_8php.html#a6ee7a72d558d1851bbb9e3cdde377932", null ],
- [ "PERMS_A_BOOKMARK", "boot_8php.html#a8b2af16eaee9e7768a88d0e437877f3b", null ],
[ "PERMS_A_DELEGATE", "boot_8php.html#a423505ab8dbd8e39d04ae3fe1374102b", null ],
[ "PERMS_A_REPUBLISH", "boot_8php.html#aae6c941bde5fd6fce07e51dba7326ead", null ],
[ "PERMS_AUTHED", "boot_8php.html#a852d4036a3bed66af1534d014c4ecde2", null ],
@@ -236,6 +247,7 @@ var boot_8php =
[ "PERMS_SPECIFIC", "boot_8php.html#a9cc986b4f9dd6558cbb2e25aadbfd964", null ],
[ "PERMS_W_CHAT", "boot_8php.html#acd877c405b06b348b37b6f7e62a211e9", null ],
[ "PERMS_W_COMMENT", "boot_8php.html#a32df13fec0e43281da5979e1f5579aa8", null ],
+ [ "PERMS_W_LIKE", "boot_8php.html#af3ff14985bffbd951a6ea356b7ec3007", null ],
[ "PERMS_W_MAIL", "boot_8php.html#a6b31dd451bc6c37fe7c9c766ff385aaf", null ],
[ "PERMS_W_PAGES", "boot_8php.html#aa9244fc9cc221980c07a20cc534111be", null ],
[ "PERMS_W_PHOTOS", "boot_8php.html#a57eee7352714c004d36c26dda74af73e", null ],
@@ -243,6 +255,8 @@ var boot_8php =
[ "PERMS_W_STREAM", "boot_8php.html#a8bb0395933b5e886f086f6a2fb0bfa55", null ],
[ "PERMS_W_TAGWALL", "boot_8php.html#a99a4a17cb644e7e6826ea07ecaf09777", null ],
[ "PERMS_W_WALL", "boot_8php.html#a6b14a31a8aa9f3452a13383f413bffa2", null ],
+ [ "PHOTO_ADULT", "boot_8php.html#a921c55b9fa59a327a5f0e07fa1ccb2e0", null ],
+ [ "PHOTO_FLAG_OS", "boot_8php.html#ab49a5d43ce1150c5af8c750ccb14e15f", null ],
[ "PHOTO_NORMAL", "boot_8php.html#a4a49b29838ef2c45ab3556b52baec6a4", null ],
[ "PHOTO_PROFILE", "boot_8php.html#ab4bc9c50ecc927b92d519e36562b0df0", null ],
[ "PHOTO_THING", "boot_8php.html#a78849a1bf8ce8d9804b4cbb502e8f383", null ],
@@ -283,11 +297,23 @@ var boot_8php =
[ "UPDATE_FLAGS_FORCED", "boot_8php.html#ab9dca53455cd157d3c6ba2bdecdbd22d", null ],
[ "UPDATE_FLAGS_UPDATED", "boot_8php.html#a9690d73434125ce594a1f5e7c2a4f7c0", null ],
[ "UPDATE_SUCCESS", "boot_8php.html#ac86615ddc0763a00f5311c90e991730c", null ],
+ [ "VNOTIFY_ALERT", "boot_8php.html#a9f8a2938ddd9ee2867e6f8ce77b61b2f", null ],
+ [ "VNOTIFY_BIRTHDAY", "boot_8php.html#ac89396b9144391acd08d6d0f9b332220", null ],
+ [ "VNOTIFY_CHANNEL", "boot_8php.html#a7b511bd93202c43405adbe3b5bcebbfe", null ],
+ [ "VNOTIFY_EVENT", "boot_8php.html#ad94aca4c260b8a892397786201dc4664", null ],
+ [ "VNOTIFY_EVENTTODAY", "boot_8php.html#a76480b213af379c0c6c7fa4e39019ca9", null ],
+ [ "VNOTIFY_INFO", "boot_8php.html#a37281c30bd92cecb499878d6778c570f", null ],
+ [ "VNOTIFY_INTRO", "boot_8php.html#a1997c4b7d0253e036bc0fb6b20e4af71", null ],
+ [ "VNOTIFY_MAIL", "boot_8php.html#a0afeb43da443d6ff3526ede5ecdcc3b3", null ],
+ [ "VNOTIFY_NETWORK", "boot_8php.html#a997614f25e58f8313641e1eb0109fd10", null ],
+ [ "VNOTIFY_REGISTER", "boot_8php.html#ae09767b94688657978ff9366ec63684b", null ],
+ [ "VNOTIFY_SYSTEM", "boot_8php.html#a7e5627b5ca4b7464feb0f08663b19ea1", null ],
[ "XCHAN_FLAGS_CENSORED", "boot_8php.html#accd6f36cc9f40225cbd720e4d12a7c6e", null ],
[ "XCHAN_FLAGS_DELETED", "boot_8php.html#a9ea1290e00c6d40684892047f2c778a9", null ],
[ "XCHAN_FLAGS_HIDDEN", "boot_8php.html#a1af3ed96de14aa0d7891b39cc75b60f2", null ],
[ "XCHAN_FLAGS_NORMAL", "boot_8php.html#a8fdcc4ffb365a3267bd02ce8a8d466d6", null ],
[ "XCHAN_FLAGS_ORPHAN", "boot_8php.html#a1c923b99bf77e4203ae94e5684b6ad0f", null ],
+ [ "XCHAN_FLAGS_PUBFORUM", "boot_8php.html#a0209e605028a5bb492683951ab30d49d", null ],
[ "XCHAN_FLAGS_SELFCENSORED", "boot_8php.html#a5a681a672e007cdc22b43345d71f07c6", null ],
[ "XCHAN_FLAGS_SYSTEM", "boot_8php.html#afef254290febac854c85fc698d9483a6", null ],
[ "ZCURL_TIMEOUT", "boot_8php.html#a3cd42a70c6b3999590e4fd7a1a9096af", null ],
diff --git a/doc/html/chanman_8php.html b/doc/html/chanman_8php.html
index 4d829d819..de9e44539 100644
--- a/doc/html/chanman_8php.html
+++ b/doc/html/chanman_8php.html
@@ -4,7 +4,7 @@
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.3.1"/>
-<title>The Red Matrix: mod/chanman.php File Reference</title>
+<title>The Red Matrix: include/chanman.php File Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
@@ -28,7 +28,7 @@
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
- <td id="projectlogo"><img alt="Logo" src="rhash-64.png"/></td>
+ <td id="projectlogo"><img alt="Logo" src="rm-64.png"/></td>
<td style="padding-left: 0.5em;">
<div id="projectname">The Red Matrix
</div>
@@ -103,10 +103,35 @@ $(document).ready(function(){initNavTree('chanman_8php.html','');});
</div>
<div class="header">
+ <div class="summary">
+<a href="#func-members">Functions</a> </div>
<div class="headertitle">
<div class="title">chanman.php File Reference</div> </div>
</div><!--header-->
<div class="contents">
+<table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="func-members"></a>
+Functions</h2></td></tr>
+<tr class="memitem:a21ba9a5c961e866ff27aee3ee67bf99b"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="chanman_8php.html#a21ba9a5c961e866ff27aee3ee67bf99b">chanman_remove_everything_from_network</a> ($channel_id)</td></tr>
+<tr class="separator:a21ba9a5c961e866ff27aee3ee67bf99b"><td class="memSeparator" colspan="2">&#160;</td></tr>
+</table>
+<h2 class="groupheader">Function Documentation</h2>
+<a class="anchor" id="a21ba9a5c961e866ff27aee3ee67bf99b"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">chanman_remove_everything_from_network </td>
+ <td>(</td>
+ <td class="paramtype">&#160;</td>
+ <td class="paramname"><em>$channel_id</em></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+</div>
+</div>
</div><!-- contents -->
</div><!-- doc-content -->
diff --git a/doc/html/chanman_8php.js b/doc/html/chanman_8php.js
new file mode 100644
index 000000000..803e97f0b
--- /dev/null
+++ b/doc/html/chanman_8php.js
@@ -0,0 +1,4 @@
+var chanman_8php =
+[
+ [ "chanman_remove_everything_from_network", "chanman_8php.html#a21ba9a5c961e866ff27aee3ee67bf99b", null ]
+]; \ No newline at end of file
diff --git a/doc/html/channel_8php.html b/doc/html/channel_8php.html
index 61550f610..b9c52f43a 100644
--- a/doc/html/channel_8php.html
+++ b/doc/html/channel_8php.html
@@ -148,6 +148,7 @@ Functions</h2></td></tr>
</table>
</div><div class="memdoc">
<p>Get permissions SQL - if $remote_contact is true, our remote user has been pre-verified and we already have fetched his/her groups</p>
+<p>in "list mode", only mark the parent item and any like activities as "seen". We won't distinguish between comment likes and post likes. The important thing is that the number of unseen comments will be accurate. The SQL to separate the comment likes could also get somewhat hairy.</p>
<p>Referenced by <a class="el" href="update__channel_8php.html#aca52a9da500f0db2f0a8666af5bc06ba">update_channel_content()</a>.</p>
diff --git a/doc/html/classApp-members.html b/doc/html/classApp-members.html
index 6e2218d84..199120188 100644
--- a/doc/html/classApp-members.html
+++ b/doc/html/classApp-members.html
@@ -117,8 +117,6 @@ $(document).ready(function(){initNavTree('classApp.html','');});
<tr class="even"><td class="entry"><a class="el" href="classApp.html#af58db526040829b1c8bd95561b329262">$argc</a></td><td class="entry"><a class="el" href="classApp.html">App</a></td><td class="entry"></td></tr>
<tr><td class="entry"><a class="el" href="classApp.html#ab3da757abe5cb45bf88f07cc51a73b58">$argv</a></td><td class="entry"><a class="el" href="classApp.html">App</a></td><td class="entry"></td></tr>
<tr class="even"><td class="entry"><a class="el" href="classApp.html#ad5175536561021548ae8188e24c7b80c">$baseurl</a></td><td class="entry"><a class="el" href="classApp.html">App</a></td><td class="entry"><span class="mlabel">private</span></td></tr>
- <tr><td class="entry"><a class="el" href="classApp.html#abe0e4fa91097f7a6588e1213a834121c">$cached_profile_image</a></td><td class="entry"><a class="el" href="classApp.html">App</a></td><td class="entry"><span class="mlabel">private</span></td></tr>
- <tr class="even"><td class="entry"><a class="el" href="classApp.html#aab4a685d15a363bb1d7edbbc20bfb94e">$cached_profile_picdate</a></td><td class="entry"><a class="el" href="classApp.html">App</a></td><td class="entry"><span class="mlabel">private</span></td></tr>
<tr><td class="entry"><a class="el" href="classApp.html#a5cfc098c061b7d765add58fd2ca97445">$category</a></td><td class="entry"><a class="el" href="classApp.html">App</a></td><td class="entry"></td></tr>
<tr class="even"><td class="entry"><a class="el" href="classApp.html#a050b0696118da47e8b30859ad1a2c149">$channel</a></td><td class="entry"><a class="el" href="classApp.html">App</a></td><td class="entry"></td></tr>
<tr><td class="entry"><a class="el" href="classApp.html#ad1c8eb91a6fd470b94f34b7fdad3a2d0">$cid</a></td><td class="entry"><a class="el" href="classApp.html">App</a></td><td class="entry"></td></tr>
@@ -128,18 +126,16 @@ $(document).ready(function(){initNavTree('classApp.html','');});
<tr><td class="entry"><a class="el" href="classApp.html#a61ca6e3af82071ea25ff2fd5dbcddae2">$contacts</a></td><td class="entry"><a class="el" href="classApp.html">App</a></td><td class="entry"></td></tr>
<tr class="even"><td class="entry"><a class="el" href="classApp.html#ac1d80a14492acc932715d54567d8a589">$content</a></td><td class="entry"><a class="el" href="classApp.html">App</a></td><td class="entry"></td></tr>
<tr><td class="entry"><a class="el" href="classApp.html#a6f55d087e1ff4710132c1b0863faa2ee">$css_sources</a></td><td class="entry"><a class="el" href="classApp.html">App</a></td><td class="entry"></td></tr>
- <tr class="even"><td class="entry"><a class="el" href="classApp.html#a256360c9184fed6d7556e0bc0a835d7f">$curl_code</a></td><td class="entry"><a class="el" href="classApp.html">App</a></td><td class="entry"><span class="mlabel">private</span></td></tr>
- <tr><td class="entry"><a class="el" href="classApp.html#af5007c42a693afd9c4899c243b2e1363">$curl_headers</a></td><td class="entry"><a class="el" href="classApp.html">App</a></td><td class="entry"><span class="mlabel">private</span></td></tr>
<tr class="even"><td class="entry"><a class="el" href="classApp.html#a0ce85be198e46570366cb3344f3c55b8">$data</a></td><td class="entry"><a class="el" href="classApp.html">App</a></td><td class="entry"></td></tr>
- <tr><td class="entry"><a class="el" href="classApp.html#a330410a288f3393d53772f5e98f857ea">$db</a></td><td class="entry"><a class="el" href="classApp.html">App</a></td><td class="entry"><span class="mlabel">private</span></td></tr>
- <tr class="even"><td class="entry"><a class="el" href="classApp.html#ac1a8b2cd40609b231a560201a08852ba">$error</a></td><td class="entry"><a class="el" href="classApp.html">App</a></td><td class="entry"></td></tr>
- <tr><td class="entry"><a class="el" href="classApp.html#ae3f47830543d0d902f66913def8db66b">$force_max_items</a></td><td class="entry"><a class="el" href="classApp.html">App</a></td><td class="entry"></td></tr>
- <tr class="even"><td class="entry"><a class="el" href="classApp.html#ac6e6b1c7d6df408580ff79977fcfa656">$groups</a></td><td class="entry"><a class="el" href="classApp.html">App</a></td><td class="entry"></td></tr>
- <tr><td class="entry"><a class="el" href="classApp.html#a3694aa1907aa103a2adbc71f926f0fa0">$hooks</a></td><td class="entry"><a class="el" href="classApp.html">App</a></td><td class="entry"></td></tr>
- <tr class="even"><td class="entry"><a class="el" href="classApp.html#a037049cba88dfc6ff94f4b5b779e3fd3">$hostname</a></td><td class="entry"><a class="el" href="classApp.html">App</a></td><td class="entry"><span class="mlabel">private</span></td></tr>
- <tr><td class="entry"><a class="el" href="classApp.html#a7954862f44f606b0ff83d4c74d15e792">$identities</a></td><td class="entry"><a class="el" href="classApp.html">App</a></td><td class="entry"></td></tr>
- <tr class="even"><td class="entry"><a class="el" href="classApp.html#a576ecb1c5b4a283221e6f2f0ec248251">$install</a></td><td class="entry"><a class="el" href="classApp.html">App</a></td><td class="entry"></td></tr>
- <tr><td class="entry"><a class="el" href="classApp.html#a4c7cfc62d39508086cf300dc2e39c4df">$interactive</a></td><td class="entry"><a class="el" href="classApp.html">App</a></td><td class="entry"></td></tr>
+ <tr><td class="entry"><a class="el" href="classApp.html#ac1a8b2cd40609b231a560201a08852ba">$error</a></td><td class="entry"><a class="el" href="classApp.html">App</a></td><td class="entry"></td></tr>
+ <tr class="even"><td class="entry"><a class="el" href="classApp.html#ae3f47830543d0d902f66913def8db66b">$force_max_items</a></td><td class="entry"><a class="el" href="classApp.html">App</a></td><td class="entry"></td></tr>
+ <tr><td class="entry"><a class="el" href="classApp.html#ac6e6b1c7d6df408580ff79977fcfa656">$groups</a></td><td class="entry"><a class="el" href="classApp.html">App</a></td><td class="entry"></td></tr>
+ <tr class="even"><td class="entry"><a class="el" href="classApp.html#a3694aa1907aa103a2adbc71f926f0fa0">$hooks</a></td><td class="entry"><a class="el" href="classApp.html">App</a></td><td class="entry"></td></tr>
+ <tr><td class="entry"><a class="el" href="classApp.html#a037049cba88dfc6ff94f4b5b779e3fd3">$hostname</a></td><td class="entry"><a class="el" href="classApp.html">App</a></td><td class="entry"><span class="mlabel">private</span></td></tr>
+ <tr class="even"><td class="entry"><a class="el" href="classApp.html#a7954862f44f606b0ff83d4c74d15e792">$identities</a></td><td class="entry"><a class="el" href="classApp.html">App</a></td><td class="entry"></td></tr>
+ <tr><td class="entry"><a class="el" href="classApp.html#a576ecb1c5b4a283221e6f2f0ec248251">$install</a></td><td class="entry"><a class="el" href="classApp.html">App</a></td><td class="entry"></td></tr>
+ <tr class="even"><td class="entry"><a class="el" href="classApp.html#a4c7cfc62d39508086cf300dc2e39c4df">$interactive</a></td><td class="entry"><a class="el" href="classApp.html">App</a></td><td class="entry"></td></tr>
+ <tr><td class="entry"><a class="el" href="classApp.html#a1f60d19d47021629faac7a0a6d917e94">$is_sys</a></td><td class="entry"><a class="el" href="classApp.html">App</a></td><td class="entry"></td></tr>
<tr class="even"><td class="entry"><a class="el" href="classApp.html#a11e24b3ed9b33ffee7dd41d110b4366d">$js_sources</a></td><td class="entry"><a class="el" href="classApp.html">App</a></td><td class="entry"></td></tr>
<tr><td class="entry"><a class="el" href="classApp.html#a1a297e70b3667b83f4460aa7ed9f5d6f">$language</a></td><td class="entry"><a class="el" href="classApp.html">App</a></td><td class="entry"></td></tr>
<tr class="even"><td class="entry"><a class="el" href="classApp.html#a58ac598544892ff7c32890291b72635e">$layout</a></td><td class="entry"><a class="el" href="classApp.html">App</a></td><td class="entry"></td></tr>
@@ -170,40 +166,39 @@ $(document).ready(function(){initNavTree('classApp.html','');});
<tr><td class="entry"><a class="el" href="classApp.html#a91fd3c8b89016113b05f3be24805ccff">$user</a></td><td class="entry"><a class="el" href="classApp.html">App</a></td><td class="entry"></td></tr>
<tr class="even"><td class="entry"><a class="el" href="classApp.html#a56b1a432c96aef8b1971f779c9d93c8c">$videoheight</a></td><td class="entry"><a class="el" href="classApp.html">App</a></td><td class="entry"></td></tr>
<tr><td class="entry"><a class="el" href="classApp.html#adf2aaf95b062736a6fd5fc70fadf80e8">$videowidth</a></td><td class="entry"><a class="el" href="classApp.html">App</a></td><td class="entry"></td></tr>
- <tr class="even"><td class="entry"><a class="el" href="classApp.html#a4833bee2eae4ad1691a04fa19e11a766">$widgetlist</a></td><td class="entry"><a class="el" href="classApp.html">App</a></td><td class="entry"><span class="mlabel">private</span></td></tr>
- <tr><td class="entry"><a class="el" href="classApp.html#aa5a87c46ab3fee21362c466bf78042ef">$widgets</a></td><td class="entry"><a class="el" href="classApp.html">App</a></td><td class="entry"><span class="mlabel">private</span></td></tr>
- <tr class="even"><td class="entry"><a class="el" href="classApp.html#af6d39f63fb7116bbeb04e51696f99474">__construct</a>()</td><td class="entry"><a class="el" href="classApp.html">App</a></td><td class="entry"></td></tr>
- <tr><td class="entry"><a class="el" href="classApp.html#a08f0537964d98958d218066364cff785">build_pagehead</a>()</td><td class="entry"><a class="el" href="classApp.html">App</a></td><td class="entry"></td></tr>
- <tr class="even"><td class="entry"><a class="el" href="classApp.html#a08bc87aff64f39fbc084e9d6545cee4d">get_account</a>()</td><td class="entry"><a class="el" href="classApp.html">App</a></td><td class="entry"></td></tr>
- <tr><td class="entry"><a class="el" href="classApp.html#a5c63eabdc7fdd8b6e3348980ec16a3ad">get_apps</a>()</td><td class="entry"><a class="el" href="classApp.html">App</a></td><td class="entry"></td></tr>
- <tr class="even"><td class="entry"><a class="el" href="classApp.html#a604d659d6977a99de42a160343e5289a">get_baseurl</a>($ssl=false)</td><td class="entry"><a class="el" href="classApp.html">App</a></td><td class="entry"></td></tr>
- <tr><td class="entry"><a class="el" href="classApp.html#a084e03c77686d8c13390fef3f7428a2b">get_channel</a>()</td><td class="entry"><a class="el" href="classApp.html">App</a></td><td class="entry"></td></tr>
- <tr class="even"><td class="entry"><a class="el" href="classApp.html#a4659785d13e4bac0bed50dbb1b0d4299">get_groups</a>()</td><td class="entry"><a class="el" href="classApp.html">App</a></td><td class="entry"></td></tr>
- <tr><td class="entry"><a class="el" href="classApp.html#a622eace13f8fc9f4b5672a68e2bc4396">get_hostname</a>()</td><td class="entry"><a class="el" href="classApp.html">App</a></td><td class="entry"></td></tr>
- <tr class="even"><td class="entry"><a class="el" href="classApp.html#a1ad3bb1b68439b3b7cbe630918e618d2">get_observer</a>()</td><td class="entry"><a class="el" href="classApp.html">App</a></td><td class="entry"></td></tr>
- <tr><td class="entry"><a class="el" href="classApp.html#a5293a8543ba338dcf38cd4ff3bc5d4be">get_path</a>()</td><td class="entry"><a class="el" href="classApp.html">App</a></td><td class="entry"></td></tr>
- <tr class="even"><td class="entry"><a class="el" href="classApp.html#adb5a4bb657881e553978ff390babd01f">get_perms</a>()</td><td class="entry"><a class="el" href="classApp.html">App</a></td><td class="entry"></td></tr>
- <tr><td class="entry"><a class="el" href="classApp.html#acb27e607fe4c82603444676e25c36b70">get_template_engine</a>()</td><td class="entry"><a class="el" href="classApp.html">App</a></td><td class="entry"></td></tr>
- <tr class="even"><td class="entry"><a class="el" href="classApp.html#a2eb832a8577dee7d40b93abdf6d1d35a">get_template_ldelim</a>($engine= 'smarty3')</td><td class="entry"><a class="el" href="classApp.html">App</a></td><td class="entry"></td></tr>
- <tr><td class="entry"><a class="el" href="classApp.html#aab23c59172310fd30f2d60dc039d3eea">get_template_rdelim</a>($engine= 'smarty3')</td><td class="entry"><a class="el" href="classApp.html">App</a></td><td class="entry"></td></tr>
- <tr class="even"><td class="entry"><a class="el" href="classApp.html#a871898becd0697d778f36d9336253ae8">get_widgets</a>($location= '')</td><td class="entry"><a class="el" href="classApp.html">App</a></td><td class="entry"></td></tr>
- <tr><td class="entry"><a class="el" href="classApp.html#af17df107f2216ddf5ad2a7e0f2ba2166">head_get_icon</a>()</td><td class="entry"><a class="el" href="classApp.html">App</a></td><td class="entry"></td></tr>
- <tr class="even"><td class="entry"><a class="el" href="classApp.html#a8863703a0305eaa45eb970dbd2046291">head_set_icon</a>($icon)</td><td class="entry"><a class="el" href="classApp.html">App</a></td><td class="entry"></td></tr>
- <tr><td class="entry"><a class="el" href="classApp.html#abf46a653d8499e7c253cc1be894a6d83">register_template_engine</a>($class, $name= '')</td><td class="entry"><a class="el" href="classApp.html">App</a></td><td class="entry"></td></tr>
- <tr class="even"><td class="entry"><a class="el" href="classApp.html#aeb1fe1c8ad9aa639909bd183ce578536">set_account</a>($acct)</td><td class="entry"><a class="el" href="classApp.html">App</a></td><td class="entry"></td></tr>
- <tr><td class="entry"><a class="el" href="classApp.html#abea5a4f77dcd53c928dc4eed86616637">set_apps</a>($arr)</td><td class="entry"><a class="el" href="classApp.html">App</a></td><td class="entry"></td></tr>
- <tr class="even"><td class="entry"><a class="el" href="classApp.html#a78788f6e9d8b713b138f81e457c5cd08">set_baseurl</a>($url)</td><td class="entry"><a class="el" href="classApp.html">App</a></td><td class="entry"></td></tr>
- <tr><td class="entry"><a class="el" href="classApp.html#a89e9feb2bfb5253883a9720beaffe876">set_channel</a>($channel)</td><td class="entry"><a class="el" href="classApp.html">App</a></td><td class="entry"></td></tr>
- <tr class="even"><td class="entry"><a class="el" href="classApp.html#a3d84af5e42082098672531cd1a618853">set_groups</a>($g)</td><td class="entry"><a class="el" href="classApp.html">App</a></td><td class="entry"></td></tr>
- <tr><td class="entry"><a class="el" href="classApp.html#a344d2b7dc2f276648d521aee4da1731c">set_hostname</a>($h)</td><td class="entry"><a class="el" href="classApp.html">App</a></td><td class="entry"></td></tr>
- <tr class="even"><td class="entry"><a class="el" href="classApp.html#a4776d9322edea17fae56afa5d01a323e">set_observer</a>($xchan)</td><td class="entry"><a class="el" href="classApp.html">App</a></td><td class="entry"></td></tr>
- <tr><td class="entry"><a class="el" href="classApp.html#a4bdd7bfed62f50515fce652127bf481b">set_pager_itemspage</a>($n)</td><td class="entry"><a class="el" href="classApp.html">App</a></td><td class="entry"></td></tr>
- <tr class="even"><td class="entry"><a class="el" href="classApp.html#a560189f048d3db2f526841963cc43e97">set_pager_total</a>($n)</td><td class="entry"><a class="el" href="classApp.html">App</a></td><td class="entry"></td></tr>
- <tr><td class="entry"><a class="el" href="classApp.html#adb060d5c7f35a521ec7ec0effbe08097">set_path</a>($p)</td><td class="entry"><a class="el" href="classApp.html">App</a></td><td class="entry"></td></tr>
- <tr class="even"><td class="entry"><a class="el" href="classApp.html#a557d7b779d8259027f4724ebf7b248dc">set_perms</a>($perms)</td><td class="entry"><a class="el" href="classApp.html">App</a></td><td class="entry"></td></tr>
- <tr><td class="entry"><a class="el" href="classApp.html#a20d1890cc16b22ba79eeb0cbf2f719f7">set_template_engine</a>($engine= 'smarty3')</td><td class="entry"><a class="el" href="classApp.html">App</a></td><td class="entry"></td></tr>
- <tr class="even"><td class="entry"><a class="el" href="classApp.html#a123b903dfe5d3488cc68db3471d36fd2">set_widget</a>($title, $html, $location= 'aside')</td><td class="entry"><a class="el" href="classApp.html">App</a></td><td class="entry"></td></tr>
- <tr><td class="entry"><a class="el" href="classApp.html#a94a1ed2dc493c58612d17035b74ae736">template_engine</a>($name= '')</td><td class="entry"><a class="el" href="classApp.html">App</a></td><td class="entry"></td></tr>
+ <tr class="even"><td class="entry"><a class="el" href="classApp.html#aa5a87c46ab3fee21362c466bf78042ef">$widgets</a></td><td class="entry"><a class="el" href="classApp.html">App</a></td><td class="entry"><span class="mlabel">private</span></td></tr>
+ <tr><td class="entry"><a class="el" href="classApp.html#af6d39f63fb7116bbeb04e51696f99474">__construct</a>()</td><td class="entry"><a class="el" href="classApp.html">App</a></td><td class="entry"></td></tr>
+ <tr class="even"><td class="entry"><a class="el" href="classApp.html#a08f0537964d98958d218066364cff785">build_pagehead</a>()</td><td class="entry"><a class="el" href="classApp.html">App</a></td><td class="entry"></td></tr>
+ <tr><td class="entry"><a class="el" href="classApp.html#a08bc87aff64f39fbc084e9d6545cee4d">get_account</a>()</td><td class="entry"><a class="el" href="classApp.html">App</a></td><td class="entry"></td></tr>
+ <tr class="even"><td class="entry"><a class="el" href="classApp.html#a5c63eabdc7fdd8b6e3348980ec16a3ad">get_apps</a>()</td><td class="entry"><a class="el" href="classApp.html">App</a></td><td class="entry"></td></tr>
+ <tr><td class="entry"><a class="el" href="classApp.html#a604d659d6977a99de42a160343e5289a">get_baseurl</a>($ssl=false)</td><td class="entry"><a class="el" href="classApp.html">App</a></td><td class="entry"></td></tr>
+ <tr class="even"><td class="entry"><a class="el" href="classApp.html#a084e03c77686d8c13390fef3f7428a2b">get_channel</a>()</td><td class="entry"><a class="el" href="classApp.html">App</a></td><td class="entry"></td></tr>
+ <tr><td class="entry"><a class="el" href="classApp.html#a4659785d13e4bac0bed50dbb1b0d4299">get_groups</a>()</td><td class="entry"><a class="el" href="classApp.html">App</a></td><td class="entry"></td></tr>
+ <tr class="even"><td class="entry"><a class="el" href="classApp.html#a622eace13f8fc9f4b5672a68e2bc4396">get_hostname</a>()</td><td class="entry"><a class="el" href="classApp.html">App</a></td><td class="entry"></td></tr>
+ <tr><td class="entry"><a class="el" href="classApp.html#a1ad3bb1b68439b3b7cbe630918e618d2">get_observer</a>()</td><td class="entry"><a class="el" href="classApp.html">App</a></td><td class="entry"></td></tr>
+ <tr class="even"><td class="entry"><a class="el" href="classApp.html#a5293a8543ba338dcf38cd4ff3bc5d4be">get_path</a>()</td><td class="entry"><a class="el" href="classApp.html">App</a></td><td class="entry"></td></tr>
+ <tr><td class="entry"><a class="el" href="classApp.html#adb5a4bb657881e553978ff390babd01f">get_perms</a>()</td><td class="entry"><a class="el" href="classApp.html">App</a></td><td class="entry"></td></tr>
+ <tr class="even"><td class="entry"><a class="el" href="classApp.html#acb27e607fe4c82603444676e25c36b70">get_template_engine</a>()</td><td class="entry"><a class="el" href="classApp.html">App</a></td><td class="entry"></td></tr>
+ <tr><td class="entry"><a class="el" href="classApp.html#a2eb832a8577dee7d40b93abdf6d1d35a">get_template_ldelim</a>($engine= 'smarty3')</td><td class="entry"><a class="el" href="classApp.html">App</a></td><td class="entry"></td></tr>
+ <tr class="even"><td class="entry"><a class="el" href="classApp.html#aab23c59172310fd30f2d60dc039d3eea">get_template_rdelim</a>($engine= 'smarty3')</td><td class="entry"><a class="el" href="classApp.html">App</a></td><td class="entry"></td></tr>
+ <tr><td class="entry"><a class="el" href="classApp.html#a871898becd0697d778f36d9336253ae8">get_widgets</a>($location= '')</td><td class="entry"><a class="el" href="classApp.html">App</a></td><td class="entry"></td></tr>
+ <tr class="even"><td class="entry"><a class="el" href="classApp.html#af17df107f2216ddf5ad2a7e0f2ba2166">head_get_icon</a>()</td><td class="entry"><a class="el" href="classApp.html">App</a></td><td class="entry"></td></tr>
+ <tr><td class="entry"><a class="el" href="classApp.html#a8863703a0305eaa45eb970dbd2046291">head_set_icon</a>($icon)</td><td class="entry"><a class="el" href="classApp.html">App</a></td><td class="entry"></td></tr>
+ <tr class="even"><td class="entry"><a class="el" href="classApp.html#abf46a653d8499e7c253cc1be894a6d83">register_template_engine</a>($class, $name= '')</td><td class="entry"><a class="el" href="classApp.html">App</a></td><td class="entry"></td></tr>
+ <tr><td class="entry"><a class="el" href="classApp.html#aeb1fe1c8ad9aa639909bd183ce578536">set_account</a>($acct)</td><td class="entry"><a class="el" href="classApp.html">App</a></td><td class="entry"></td></tr>
+ <tr class="even"><td class="entry"><a class="el" href="classApp.html#abea5a4f77dcd53c928dc4eed86616637">set_apps</a>($arr)</td><td class="entry"><a class="el" href="classApp.html">App</a></td><td class="entry"></td></tr>
+ <tr><td class="entry"><a class="el" href="classApp.html#a78788f6e9d8b713b138f81e457c5cd08">set_baseurl</a>($url)</td><td class="entry"><a class="el" href="classApp.html">App</a></td><td class="entry"></td></tr>
+ <tr class="even"><td class="entry"><a class="el" href="classApp.html#a89e9feb2bfb5253883a9720beaffe876">set_channel</a>($channel)</td><td class="entry"><a class="el" href="classApp.html">App</a></td><td class="entry"></td></tr>
+ <tr><td class="entry"><a class="el" href="classApp.html#a3d84af5e42082098672531cd1a618853">set_groups</a>($g)</td><td class="entry"><a class="el" href="classApp.html">App</a></td><td class="entry"></td></tr>
+ <tr class="even"><td class="entry"><a class="el" href="classApp.html#a344d2b7dc2f276648d521aee4da1731c">set_hostname</a>($h)</td><td class="entry"><a class="el" href="classApp.html">App</a></td><td class="entry"></td></tr>
+ <tr><td class="entry"><a class="el" href="classApp.html#a4776d9322edea17fae56afa5d01a323e">set_observer</a>($xchan)</td><td class="entry"><a class="el" href="classApp.html">App</a></td><td class="entry"></td></tr>
+ <tr class="even"><td class="entry"><a class="el" href="classApp.html#a4bdd7bfed62f50515fce652127bf481b">set_pager_itemspage</a>($n)</td><td class="entry"><a class="el" href="classApp.html">App</a></td><td class="entry"></td></tr>
+ <tr><td class="entry"><a class="el" href="classApp.html#a560189f048d3db2f526841963cc43e97">set_pager_total</a>($n)</td><td class="entry"><a class="el" href="classApp.html">App</a></td><td class="entry"></td></tr>
+ <tr class="even"><td class="entry"><a class="el" href="classApp.html#adb060d5c7f35a521ec7ec0effbe08097">set_path</a>($p)</td><td class="entry"><a class="el" href="classApp.html">App</a></td><td class="entry"></td></tr>
+ <tr><td class="entry"><a class="el" href="classApp.html#a557d7b779d8259027f4724ebf7b248dc">set_perms</a>($perms)</td><td class="entry"><a class="el" href="classApp.html">App</a></td><td class="entry"></td></tr>
+ <tr class="even"><td class="entry"><a class="el" href="classApp.html#a20d1890cc16b22ba79eeb0cbf2f719f7">set_template_engine</a>($engine= 'smarty3')</td><td class="entry"><a class="el" href="classApp.html">App</a></td><td class="entry"></td></tr>
+ <tr><td class="entry"><a class="el" href="classApp.html#a123b903dfe5d3488cc68db3471d36fd2">set_widget</a>($title, $html, $location= 'aside')</td><td class="entry"><a class="el" href="classApp.html">App</a></td><td class="entry"></td></tr>
+ <tr class="even"><td class="entry"><a class="el" href="classApp.html#a94a1ed2dc493c58612d17035b74ae736">template_engine</a>($name= '')</td><td class="entry"><a class="el" href="classApp.html">App</a></td><td class="entry"></td></tr>
</table></div><!-- contents -->
</div><!-- doc-content -->
diff --git a/doc/html/classApp.html b/doc/html/classApp.html
index bd8e6bbf0..e3d0760b2 100644
--- a/doc/html/classApp.html
+++ b/doc/html/classApp.html
@@ -114,6 +114,9 @@ $(document).ready(function(){initNavTree('classApp.html','');});
<div class="title">App Class Reference</div> </div>
</div><!--header-->
<div class="contents">
+
+<p>Our main application structure for the life of this page.
+ <a href="classApp.html#details">More...</a></p>
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-methods"></a>
Public Member Functions</h2></td></tr>
@@ -170,6 +173,7 @@ Public Member Functions</h2></td></tr>
<tr class="memitem:a94a1ed2dc493c58612d17035b74ae736"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classApp.html#a94a1ed2dc493c58612d17035b74ae736">template_engine</a> ($name= '')</td></tr>
<tr class="separator:a94a1ed2dc493c58612d17035b74ae736"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:acb27e607fe4c82603444676e25c36b70"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classApp.html#acb27e607fe4c82603444676e25c36b70">get_template_engine</a> ()</td></tr>
+<tr class="memdesc:acb27e607fe4c82603444676e25c36b70"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the active template engine. <a href="#acb27e607fe4c82603444676e25c36b70">More...</a><br/></td></tr>
<tr class="separator:acb27e607fe4c82603444676e25c36b70"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a20d1890cc16b22ba79eeb0cbf2f719f7"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classApp.html#a20d1890cc16b22ba79eeb0cbf2f719f7">set_template_engine</a> ($engine= 'smarty3')</td></tr>
<tr class="separator:a20d1890cc16b22ba79eeb0cbf2f719f7"><td class="memSeparator" colspan="2">&#160;</td></tr>
@@ -254,6 +258,8 @@ Public Attributes</h2></td></tr>
<tr class="separator:a11e24b3ed9b33ffee7dd41d110b4366d"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aeca29fd4f7192ca07369b3c598c36e67"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classApp.html#aeca29fd4f7192ca07369b3c598c36e67">$theme_info</a> = array()</td></tr>
<tr class="separator:aeca29fd4f7192ca07369b3c598c36e67"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a1f60d19d47021629faac7a0a6d917e94"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classApp.html#a1f60d19d47021629faac7a0a6d917e94">$is_sys</a> = false</td></tr>
+<tr class="separator:a1f60d19d47021629faac7a0a6d917e94"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a33a8e90b60ec4438f6fbf299d0f6839c"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classApp.html#a33a8e90b60ec4438f6fbf299d0f6839c">$nav_sel</a></td></tr>
<tr class="separator:a33a8e90b60ec4438f6fbf299d0f6839c"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a5cfc098c061b7d765add58fd2ca97445"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classApp.html#a5cfc098c061b7d765add58fd2ca97445">$category</a></td></tr>
@@ -279,8 +285,6 @@ Private Attributes</h2></td></tr>
<tr class="separator:ab47de68fa39806d1fb0976407e188b77"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aa5a87c46ab3fee21362c466bf78042ef"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classApp.html#aa5a87c46ab3fee21362c466bf78042ef">$widgets</a> = array()</td></tr>
<tr class="separator:aa5a87c46ab3fee21362c466bf78042ef"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a4833bee2eae4ad1691a04fa19e11a766"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classApp.html#a4833bee2eae4ad1691a04fa19e11a766">$widgetlist</a> = null</td></tr>
-<tr class="separator:a4833bee2eae4ad1691a04fa19e11a766"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a230e975296cf164da2fee35ef720964f"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classApp.html#a230e975296cf164da2fee35ef720964f">$apps</a> = array()</td></tr>
<tr class="separator:a230e975296cf164da2fee35ef720964f"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a764cc6cd7578132c21d2b4545de9301c"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classApp.html#a764cc6cd7578132c21d2b4545de9301c">$theme</a></td></tr>
@@ -297,20 +301,11 @@ Private Attributes</h2></td></tr>
<tr class="separator:ad5175536561021548ae8188e24c7b80c"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:acad5896b7a79ae31433ad8f89606c728"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classApp.html#acad5896b7a79ae31433ad8f89606c728">$path</a></td></tr>
<tr class="separator:acad5896b7a79ae31433ad8f89606c728"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a330410a288f3393d53772f5e98f857ea"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classApp.html#a330410a288f3393d53772f5e98f857ea">$db</a></td></tr>
-<tr class="separator:a330410a288f3393d53772f5e98f857ea"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a256360c9184fed6d7556e0bc0a835d7f"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classApp.html#a256360c9184fed6d7556e0bc0a835d7f">$curl_code</a></td></tr>
-<tr class="separator:a256360c9184fed6d7556e0bc0a835d7f"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:af5007c42a693afd9c4899c243b2e1363"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classApp.html#af5007c42a693afd9c4899c243b2e1363">$curl_headers</a></td></tr>
-<tr class="separator:af5007c42a693afd9c4899c243b2e1363"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:abe0e4fa91097f7a6588e1213a834121c"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classApp.html#abe0e4fa91097f7a6588e1213a834121c">$cached_profile_image</a></td></tr>
-<tr class="separator:abe0e4fa91097f7a6588e1213a834121c"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:aab4a685d15a363bb1d7edbbc20bfb94e"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classApp.html#aab4a685d15a363bb1d7edbbc20bfb94e">$cached_profile_picdate</a></td></tr>
-<tr class="separator:aab4a685d15a363bb1d7edbbc20bfb94e"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
-<div class="textblock"><p>class: <a class="el" href="classApp.html">App</a></p>
-<p>Our main application structure for the life of this page Primarily deals with the URL that got us here and tries to make some sense of it, and stores our page contents and config storage and anything else that might need to be passed around before we spit the page out. </p>
+<div class="textblock"><p>Our main application structure for the life of this page. </p>
+<p>class: <a class="el" href="classApp.html" title="Our main application structure for the life of this page.">App</a></p>
+<p>Primarily deals with the URL that got us here and tries to make some sense of it, and stores our page contents and config storage and anything else that might need to be passed around before we spit the page out. </p>
</div><h2 class="groupheader">Constructor &amp; Destructor Documentation</h2>
<a class="anchor" id="af6d39f63fb7116bbeb04e51696f99474"></a>
<div class="memitem">
@@ -324,6 +319,7 @@ Private Attributes</h2></td></tr>
</tr>
</table>
</div><div class="memdoc">
+<p><a class="el" href="classApp.html" title="Our main application structure for the life of this page.">App</a> constructor. </p>
<p>Figure out if we are running at the top of a domain or in a sub-directory and adjust accordingly</p>
<p>Break the URL path into C style argc/argv style arguments for our modules. Given "http://example.com/module/arg1/arg2", $this-&gt;argc will be 3 (integer) and $this-&gt;argv will contain: [0] =&gt; 'module' [1] =&gt; 'arg1' [2] =&gt; 'arg2'</p>
<p>There will always be one argument. If provided a naked domain URL, $this-&gt;argv[0] is set to "home".</p>
@@ -500,6 +496,9 @@ Private Attributes</h2></td></tr>
</table>
</div><div class="memdoc">
+<p>Returns the active template engine. </p>
+<dl class="section return"><dt>Returns</dt><dd>string </dd></dl>
+
</div>
</div>
<a class="anchor" id="a2eb832a8577dee7d40b93abdf6d1d35a"></a>
@@ -861,7 +860,7 @@ Private Attributes</h2></td></tr>
<p>return template engine instance. If $name is not defined, return engine defined by theme, or default</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
- <tr><td class="paramtype">strin</td><td class="paramname">$name</td><td><a class="el" href="classTemplate.html">Template</a> engine name </td></tr>
+ <tr><td class="paramtype">string</td><td class="paramname">$name</td><td><a class="el" href="classTemplate.html">Template</a> engine name</td></tr>
</table>
</dd>
</dl>
@@ -952,46 +951,6 @@ Private Attributes</h2></td></tr>
</div>
</div>
-<a class="anchor" id="abe0e4fa91097f7a6588e1213a834121c"></a>
-<div class="memitem">
-<div class="memproto">
-<table class="mlabels">
- <tr>
- <td class="mlabels-left">
- <table class="memname">
- <tr>
- <td class="memname">App::$cached_profile_image</td>
- </tr>
- </table>
- </td>
- <td class="mlabels-right">
-<span class="mlabels"><span class="mlabel">private</span></span> </td>
- </tr>
-</table>
-</div><div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="aab4a685d15a363bb1d7edbbc20bfb94e"></a>
-<div class="memitem">
-<div class="memproto">
-<table class="mlabels">
- <tr>
- <td class="mlabels-left">
- <table class="memname">
- <tr>
- <td class="memname">App::$cached_profile_picdate</td>
- </tr>
- </table>
- </td>
- <td class="mlabels-right">
-<span class="mlabels"><span class="mlabel">private</span></span> </td>
- </tr>
-</table>
-</div><div class="memdoc">
-
-</div>
-</div>
<a class="anchor" id="a5cfc098c061b7d765add58fd2ca97445"></a>
<div class="memitem">
<div class="memproto">
@@ -1102,46 +1061,6 @@ Private Attributes</h2></td></tr>
</div>
</div>
-<a class="anchor" id="a256360c9184fed6d7556e0bc0a835d7f"></a>
-<div class="memitem">
-<div class="memproto">
-<table class="mlabels">
- <tr>
- <td class="mlabels-left">
- <table class="memname">
- <tr>
- <td class="memname">App::$curl_code</td>
- </tr>
- </table>
- </td>
- <td class="mlabels-right">
-<span class="mlabels"><span class="mlabel">private</span></span> </td>
- </tr>
-</table>
-</div><div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="af5007c42a693afd9c4899c243b2e1363"></a>
-<div class="memitem">
-<div class="memproto">
-<table class="mlabels">
- <tr>
- <td class="mlabels-left">
- <table class="memname">
- <tr>
- <td class="memname">App::$curl_headers</td>
- </tr>
- </table>
- </td>
- <td class="mlabels-right">
-<span class="mlabels"><span class="mlabel">private</span></span> </td>
- </tr>
-</table>
-</div><div class="memdoc">
-
-</div>
-</div>
<a class="anchor" id="a0ce85be198e46570366cb3344f3c55b8"></a>
<div class="memitem">
<div class="memproto">
@@ -1154,26 +1073,6 @@ Private Attributes</h2></td></tr>
</div>
</div>
-<a class="anchor" id="a330410a288f3393d53772f5e98f857ea"></a>
-<div class="memitem">
-<div class="memproto">
-<table class="mlabels">
- <tr>
- <td class="mlabels-left">
- <table class="memname">
- <tr>
- <td class="memname">App::$db</td>
- </tr>
- </table>
- </td>
- <td class="mlabels-right">
-<span class="mlabels"><span class="mlabel">private</span></span> </td>
- </tr>
-</table>
-</div><div class="memdoc">
-
-</div>
-</div>
<a class="anchor" id="ac1a8b2cd40609b231a560201a08852ba"></a>
<div class="memitem">
<div class="memproto">
@@ -1282,6 +1181,18 @@ Private Attributes</h2></td></tr>
</div>
</div>
+<a class="anchor" id="a1f60d19d47021629faac7a0a6d917e94"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">App::$is_sys = false</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+</div>
+</div>
<a class="anchor" id="a11e24b3ed9b33ffee7dd41d110b4366d"></a>
<div class="memitem">
<div class="memproto">
@@ -1715,26 +1626,6 @@ Private Attributes</h2></td></tr>
</div>
</div>
-<a class="anchor" id="a4833bee2eae4ad1691a04fa19e11a766"></a>
-<div class="memitem">
-<div class="memproto">
-<table class="mlabels">
- <tr>
- <td class="mlabels-left">
- <table class="memname">
- <tr>
- <td class="memname">App::$widgetlist = null</td>
- </tr>
- </table>
- </td>
- <td class="mlabels-right">
-<span class="mlabels"><span class="mlabel">private</span></span> </td>
- </tr>
-</table>
-</div><div class="memdoc">
-
-</div>
-</div>
<a class="anchor" id="aa5a87c46ab3fee21362c466bf78042ef"></a>
<div class="memitem">
<div class="memproto">
@@ -1753,8 +1644,6 @@ Private Attributes</h2></td></tr>
</table>
</div><div class="memdoc">
-<p>Referenced by <a class="el" href="classApp.html#a871898becd0697d778f36d9336253ae8">get_widgets()</a>.</p>
-
</div>
</div>
<hr/>The documentation for this class was generated from the following file:<ul>
diff --git a/doc/html/classApp.js b/doc/html/classApp.js
index c7c8e3b05..248861737 100644
--- a/doc/html/classApp.js
+++ b/doc/html/classApp.js
@@ -37,8 +37,6 @@ var classApp =
[ "$argc", "classApp.html#af58db526040829b1c8bd95561b329262", null ],
[ "$argv", "classApp.html#ab3da757abe5cb45bf88f07cc51a73b58", null ],
[ "$baseurl", "classApp.html#ad5175536561021548ae8188e24c7b80c", null ],
- [ "$cached_profile_image", "classApp.html#abe0e4fa91097f7a6588e1213a834121c", null ],
- [ "$cached_profile_picdate", "classApp.html#aab4a685d15a363bb1d7edbbc20bfb94e", null ],
[ "$category", "classApp.html#a5cfc098c061b7d765add58fd2ca97445", null ],
[ "$channel", "classApp.html#a050b0696118da47e8b30859ad1a2c149", null ],
[ "$cid", "classApp.html#ad1c8eb91a6fd470b94f34b7fdad3a2d0", null ],
@@ -48,10 +46,7 @@ var classApp =
[ "$contacts", "classApp.html#a61ca6e3af82071ea25ff2fd5dbcddae2", null ],
[ "$content", "classApp.html#ac1d80a14492acc932715d54567d8a589", null ],
[ "$css_sources", "classApp.html#a6f55d087e1ff4710132c1b0863faa2ee", null ],
- [ "$curl_code", "classApp.html#a256360c9184fed6d7556e0bc0a835d7f", null ],
- [ "$curl_headers", "classApp.html#af5007c42a693afd9c4899c243b2e1363", null ],
[ "$data", "classApp.html#a0ce85be198e46570366cb3344f3c55b8", null ],
- [ "$db", "classApp.html#a330410a288f3393d53772f5e98f857ea", null ],
[ "$error", "classApp.html#ac1a8b2cd40609b231a560201a08852ba", null ],
[ "$force_max_items", "classApp.html#ae3f47830543d0d902f66913def8db66b", null ],
[ "$groups", "classApp.html#ac6e6b1c7d6df408580ff79977fcfa656", null ],
@@ -60,6 +55,7 @@ var classApp =
[ "$identities", "classApp.html#a7954862f44f606b0ff83d4c74d15e792", null ],
[ "$install", "classApp.html#a576ecb1c5b4a283221e6f2f0ec248251", null ],
[ "$interactive", "classApp.html#a4c7cfc62d39508086cf300dc2e39c4df", null ],
+ [ "$is_sys", "classApp.html#a1f60d19d47021629faac7a0a6d917e94", null ],
[ "$js_sources", "classApp.html#a11e24b3ed9b33ffee7dd41d110b4366d", null ],
[ "$language", "classApp.html#a1a297e70b3667b83f4460aa7ed9f5d6f", null ],
[ "$layout", "classApp.html#a58ac598544892ff7c32890291b72635e", null ],
@@ -90,6 +86,5 @@ var classApp =
[ "$user", "classApp.html#a91fd3c8b89016113b05f3be24805ccff", null ],
[ "$videoheight", "classApp.html#a56b1a432c96aef8b1971f779c9d93c8c", null ],
[ "$videowidth", "classApp.html#adf2aaf95b062736a6fd5fc70fadf80e8", null ],
- [ "$widgetlist", "classApp.html#a4833bee2eae4ad1691a04fa19e11a766", null ],
[ "$widgets", "classApp.html#aa5a87c46ab3fee21362c466bf78042ef", null ]
]; \ No newline at end of file
diff --git a/doc/html/classFriendicaSmarty.html b/doc/html/classFriendicaSmarty.html
index e0edc33b3..61ef0e4c0 100644
--- a/doc/html/classFriendicaSmarty.html
+++ b/doc/html/classFriendicaSmarty.html
@@ -181,7 +181,7 @@ Public Attributes</h2></td></tr>
</div>
</div>
<hr/>The documentation for this class was generated from the following file:<ul>
-<li>include/<a class="el" href="friendica__smarty_8php.html">friendica_smarty.php</a></li>
+<li>include/<a class="el" href="smarty_8php.html">smarty.php</a></li>
</ul>
</div><!-- contents -->
</div><!-- doc-content -->
diff --git a/doc/html/classFriendicaSmartyEngine.html b/doc/html/classFriendicaSmartyEngine.html
index 756258847..7fc1217af 100644
--- a/doc/html/classFriendicaSmartyEngine.html
+++ b/doc/html/classFriendicaSmartyEngine.html
@@ -260,7 +260,7 @@ Static Public Attributes</h2></td></tr>
</div>
</div>
<hr/>The documentation for this class was generated from the following file:<ul>
-<li>include/<a class="el" href="friendica__smarty_8php.html">friendica_smarty.php</a></li>
+<li>include/<a class="el" href="smarty_8php.html">smarty.php</a></li>
</ul>
</div><!-- contents -->
</div><!-- doc-content -->
diff --git a/doc/html/classItem-members.html b/doc/html/classItem-members.html
index 3da704b93..1a4f80c9a 100644
--- a/doc/html/classItem-members.html
+++ b/doc/html/classItem-members.html
@@ -118,20 +118,22 @@ $(document).ready(function(){initNavTree('classItem.html','');});
<tr><td class="entry"><a class="el" href="classItem.html#aa2c221231ad0fc3720ccc1f00f0c6304">$commentable</a></td><td class="entry"><a class="el" href="classItem.html">Item</a></td><td class="entry"><span class="mlabel">private</span></td></tr>
<tr class="even"><td class="entry"><a class="el" href="classItem.html#a007424e3e3171dcfb4312a02161da6cd">$conversation</a></td><td class="entry"><a class="el" href="classItem.html">Item</a></td><td class="entry"><span class="mlabel">private</span></td></tr>
<tr><td class="entry"><a class="el" href="classItem.html#aec24e233f9098f902b1e57e60dcb2019">$data</a></td><td class="entry"><a class="el" href="classItem.html">Item</a></td><td class="entry"></td></tr>
- <tr class="even"><td class="entry"><a class="el" href="classItem.html#a9594df6014b0b6f45364ea7a34510130">$owner_name</a></td><td class="entry"><a class="el" href="classItem.html">Item</a></td><td class="entry"><span class="mlabel">private</span></td></tr>
- <tr><td class="entry"><a class="el" href="classItem.html#a078f95b4134ce3a1df344cf8d386f986">$owner_photo</a></td><td class="entry"><a class="el" href="classItem.html">Item</a></td><td class="entry"><span class="mlabel">private</span></td></tr>
- <tr class="even"><td class="entry"><a class="el" href="classItem.html#afa54851df82962c7c42dea3cc9f5c92c">$owner_url</a></td><td class="entry"><a class="el" href="classItem.html">Item</a></td><td class="entry"><span class="mlabel">private</span></td></tr>
- <tr><td class="entry"><a class="el" href="classItem.html#a1a1e42877e6ac7af50286142ceb483d2">$parent</a></td><td class="entry"><a class="el" href="classItem.html">Item</a></td><td class="entry"><span class="mlabel">private</span></td></tr>
- <tr class="even"><td class="entry"><a class="el" href="classItem.html#a5b561415861f5b89b0733aacfe0428d1">$redirect_url</a></td><td class="entry"><a class="el" href="classItem.html">Item</a></td><td class="entry"><span class="mlabel">private</span></td></tr>
- <tr><td class="entry"><a class="el" href="classItem.html#a7f7bc059de377319282cb4ef4a828480">$template</a></td><td class="entry"><a class="el" href="classItem.html">Item</a></td><td class="entry"><span class="mlabel">private</span></td></tr>
- <tr class="even"><td class="entry"><a class="el" href="classItem.html#a1cb6aa8abdf7ea7daca647e40c8ea3a2">$threaded</a></td><td class="entry"><a class="el" href="classItem.html">Item</a></td><td class="entry"><span class="mlabel">private</span></td></tr>
- <tr><td class="entry"><a class="el" href="classItem.html#a5cfa6cf964f433a917a81cab079ff9d8">$toplevel</a></td><td class="entry"><a class="el" href="classItem.html">Item</a></td><td class="entry"><span class="mlabel">private</span></td></tr>
- <tr class="even"><td class="entry"><a class="el" href="classItem.html#a4a123ae98987c1e30ecb15c4edf5a3b8">$visiting</a></td><td class="entry"><a class="el" href="classItem.html">Item</a></td><td class="entry"><span class="mlabel">private</span></td></tr>
- <tr><td class="entry"><a class="el" href="classItem.html#a5d29ddecc073151a65a8e2ea2f6e4189">$wall_to_wall</a></td><td class="entry"><a class="el" href="classItem.html">Item</a></td><td class="entry"><span class="mlabel">private</span></td></tr>
- <tr class="even"><td class="entry"><a class="el" href="classItem.html#a248f45871ecfe82a08d1d4c0769b2eb2">__construct</a>($data)</td><td class="entry"><a class="el" href="classItem.html">Item</a></td><td class="entry"></td></tr>
- <tr><td class="entry"><a class="el" href="classItem.html#a80dcd9d0f548c3ad550abe7e6981fb51">add_child</a>($item)</td><td class="entry"><a class="el" href="classItem.html">Item</a></td><td class="entry"></td></tr>
- <tr class="even"><td class="entry"><a class="el" href="classItem.html#abcdb0ea9bcd1576bc99bba9b8f700bb8">check_wall_to_wall</a>()</td><td class="entry"><a class="el" href="classItem.html">Item</a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
- <tr><td class="entry"><a class="el" href="classItem.html#aca1e66988ed00cd627b2a359b72cd0ae">count_descendants</a>()</td><td class="entry"><a class="el" href="classItem.html">Item</a></td><td class="entry"><span class="mlabel">private</span></td></tr>
+ <tr class="even"><td class="entry"><a class="el" href="classItem.html#a88a99e2d1245925867f249f543358e72">$display_mode</a></td><td class="entry"><a class="el" href="classItem.html">Item</a></td><td class="entry"><span class="mlabel">private</span></td></tr>
+ <tr><td class="entry"><a class="el" href="classItem.html#a9594df6014b0b6f45364ea7a34510130">$owner_name</a></td><td class="entry"><a class="el" href="classItem.html">Item</a></td><td class="entry"><span class="mlabel">private</span></td></tr>
+ <tr class="even"><td class="entry"><a class="el" href="classItem.html#a078f95b4134ce3a1df344cf8d386f986">$owner_photo</a></td><td class="entry"><a class="el" href="classItem.html">Item</a></td><td class="entry"><span class="mlabel">private</span></td></tr>
+ <tr><td class="entry"><a class="el" href="classItem.html#afa54851df82962c7c42dea3cc9f5c92c">$owner_url</a></td><td class="entry"><a class="el" href="classItem.html">Item</a></td><td class="entry"><span class="mlabel">private</span></td></tr>
+ <tr class="even"><td class="entry"><a class="el" href="classItem.html#a1a1e42877e6ac7af50286142ceb483d2">$parent</a></td><td class="entry"><a class="el" href="classItem.html">Item</a></td><td class="entry"><span class="mlabel">private</span></td></tr>
+ <tr><td class="entry"><a class="el" href="classItem.html#a5b561415861f5b89b0733aacfe0428d1">$redirect_url</a></td><td class="entry"><a class="el" href="classItem.html">Item</a></td><td class="entry"><span class="mlabel">private</span></td></tr>
+ <tr class="even"><td class="entry"><a class="el" href="classItem.html#a7f7bc059de377319282cb4ef4a828480">$template</a></td><td class="entry"><a class="el" href="classItem.html">Item</a></td><td class="entry"><span class="mlabel">private</span></td></tr>
+ <tr><td class="entry"><a class="el" href="classItem.html#a1cb6aa8abdf7ea7daca647e40c8ea3a2">$threaded</a></td><td class="entry"><a class="el" href="classItem.html">Item</a></td><td class="entry"><span class="mlabel">private</span></td></tr>
+ <tr class="even"><td class="entry"><a class="el" href="classItem.html#a5cfa6cf964f433a917a81cab079ff9d8">$toplevel</a></td><td class="entry"><a class="el" href="classItem.html">Item</a></td><td class="entry"><span class="mlabel">private</span></td></tr>
+ <tr><td class="entry"><a class="el" href="classItem.html#a4a123ae98987c1e30ecb15c4edf5a3b8">$visiting</a></td><td class="entry"><a class="el" href="classItem.html">Item</a></td><td class="entry"><span class="mlabel">private</span></td></tr>
+ <tr class="even"><td class="entry"><a class="el" href="classItem.html#a5d29ddecc073151a65a8e2ea2f6e4189">$wall_to_wall</a></td><td class="entry"><a class="el" href="classItem.html">Item</a></td><td class="entry"><span class="mlabel">private</span></td></tr>
+ <tr><td class="entry"><a class="el" href="classItem.html#a248f45871ecfe82a08d1d4c0769b2eb2">__construct</a>($data)</td><td class="entry"><a class="el" href="classItem.html">Item</a></td><td class="entry"></td></tr>
+ <tr class="even"><td class="entry"><a class="el" href="classItem.html#a80dcd9d0f548c3ad550abe7e6981fb51">add_child</a>($item)</td><td class="entry"><a class="el" href="classItem.html">Item</a></td><td class="entry"></td></tr>
+ <tr><td class="entry"><a class="el" href="classItem.html#abcdb0ea9bcd1576bc99bba9b8f700bb8">check_wall_to_wall</a>()</td><td class="entry"><a class="el" href="classItem.html">Item</a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
+ <tr class="even"><td class="entry"><a class="el" href="classItem.html#aca1e66988ed00cd627b2a359b72cd0ae">count_descendants</a>()</td><td class="entry"><a class="el" href="classItem.html">Item</a></td><td class="entry"><span class="mlabel">private</span></td></tr>
+ <tr><td class="entry"><a class="el" href="classItem.html#ae0c48b2fed5558642549cabd547fc4f3">count_unseen_descendants</a>()</td><td class="entry"><a class="el" href="classItem.html">Item</a></td><td class="entry"><span class="mlabel">private</span></td></tr>
<tr class="even"><td class="entry"><a class="el" href="classBaseObject.html#ac43f10e69ce80c78e4870636250fc8a2">get_app</a>()</td><td class="entry"><a class="el" href="classBaseObject.html">BaseObject</a></td><td class="entry"></td></tr>
<tr><td class="entry"><a class="el" href="classItem.html#a632185dd25c5caf277067c76230a4320">get_child</a>($id)</td><td class="entry"><a class="el" href="classItem.html">Item</a></td><td class="entry"></td></tr>
<tr class="even"><td class="entry"><a class="el" href="classItem.html#aa0ee775ec94abccec6c798428835d001">get_children</a>()</td><td class="entry"><a class="el" href="classItem.html">Item</a></td><td class="entry"></td></tr>
@@ -140,26 +142,28 @@ $(document).ready(function(){initNavTree('classItem.html','');});
<tr><td class="entry"><a class="el" href="classItem.html#a0c301aaed2b7d682728d18db3a22afa3">get_conversation</a>()</td><td class="entry"><a class="el" href="classItem.html">Item</a></td><td class="entry"></td></tr>
<tr class="even"><td class="entry"><a class="el" href="classItem.html#ad3638f93065693c1f69eb349feb1b7aa">get_data</a>()</td><td class="entry"><a class="el" href="classItem.html">Item</a></td><td class="entry"></td></tr>
<tr><td class="entry"><a class="el" href="classItem.html#ac6f1c96cc82a0dfb7e881fc70309ea3c">get_data_value</a>($name)</td><td class="entry"><a class="el" href="classItem.html">Item</a></td><td class="entry"></td></tr>
- <tr class="even"><td class="entry"><a class="el" href="classItem.html#ac0f27e58532612f6e7a54c8a621b9b92">get_id</a>()</td><td class="entry"><a class="el" href="classItem.html">Item</a></td><td class="entry"></td></tr>
- <tr><td class="entry"><a class="el" href="classItem.html#a67892aa23d19f4431bb2e5f43c74000e">get_owner_name</a>()</td><td class="entry"><a class="el" href="classItem.html">Item</a></td><td class="entry"><span class="mlabel">private</span></td></tr>
- <tr class="even"><td class="entry"><a class="el" href="classItem.html#aa541bc4290e51bfd688d6921bebabc73">get_owner_photo</a>()</td><td class="entry"><a class="el" href="classItem.html">Item</a></td><td class="entry"><span class="mlabel">private</span></td></tr>
- <tr><td class="entry"><a class="el" href="classItem.html#a9f2d219da712390f59012fc32a342074">get_owner_url</a>()</td><td class="entry"><a class="el" href="classItem.html">Item</a></td><td class="entry"><span class="mlabel">private</span></td></tr>
- <tr class="even"><td class="entry"><a class="el" href="classItem.html#a4b92e3a9d6212c553aa2661489bd95d8">get_parent</a>()</td><td class="entry"><a class="el" href="classItem.html">Item</a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
- <tr><td class="entry"><a class="el" href="classItem.html#a428f448f89a8629055ea3294eb942aea">get_redirect_url</a>()</td><td class="entry"><a class="el" href="classItem.html">Item</a></td><td class="entry"><span class="mlabel">private</span></td></tr>
- <tr class="even"><td class="entry"><a class="el" href="classItem.html#aba23a0a9d89e316d2b343cc46d695d91">get_template</a>()</td><td class="entry"><a class="el" href="classItem.html">Item</a></td><td class="entry"><span class="mlabel">private</span></td></tr>
- <tr><td class="entry"><a class="el" href="classItem.html#ad5dcbe0b94cb2d5719bc5b6bd8ad60c8">get_template_data</a>($alike, $dlike, $thread_level=1)</td><td class="entry"><a class="el" href="classItem.html">Item</a></td><td class="entry"></td></tr>
- <tr class="even"><td class="entry"><a class="el" href="classItem.html#ac04525a8be24c12b0a2ae4ca1ba4b967">is_commentable</a>()</td><td class="entry"><a class="el" href="classItem.html">Item</a></td><td class="entry"></td></tr>
- <tr><td class="entry"><a class="el" href="classItem.html#a5b2fafdca55aefeaa08993a5a60529f0">is_threaded</a>()</td><td class="entry"><a class="el" href="classItem.html">Item</a></td><td class="entry"></td></tr>
- <tr class="even"><td class="entry"><a class="el" href="classItem.html#aa49e40f961dff66da32c5ae110e32993">is_toplevel</a>()</td><td class="entry"><a class="el" href="classItem.html">Item</a></td><td class="entry"><span class="mlabel">private</span></td></tr>
- <tr><td class="entry"><a class="el" href="classItem.html#a97c7feeea7f26a73176cb19faa455e12">is_visiting</a>()</td><td class="entry"><a class="el" href="classItem.html">Item</a></td><td class="entry"><span class="mlabel">private</span></td></tr>
- <tr class="even"><td class="entry"><a class="el" href="classItem.html#aabf87ded59c25b5fe2b2296678e70509">is_wall_to_wall</a>()</td><td class="entry"><a class="el" href="classItem.html">Item</a></td><td class="entry"><span class="mlabel">private</span></td></tr>
- <tr><td class="entry"><a class="el" href="classItem.html#a2ce70ef63f9f4d86a09c351678806925">remove_child</a>($item)</td><td class="entry"><a class="el" href="classItem.html">Item</a></td><td class="entry"></td></tr>
- <tr class="even"><td class="entry"><a class="el" href="classItem.html#aa452b5bcd8dea12119b09212c615cb41">remove_parent</a>()</td><td class="entry"><a class="el" href="classItem.html">Item</a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
- <tr><td class="entry"><a class="el" href="classBaseObject.html#a0a9acda12d751692834cf6999f889223">set_app</a>($app)</td><td class="entry"><a class="el" href="classBaseObject.html">BaseObject</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
- <tr class="even"><td class="entry"><a class="el" href="classItem.html#aa1bd19fc8b5577078530265a7bf64123">set_commentable</a>($val)</td><td class="entry"><a class="el" href="classItem.html">Item</a></td><td class="entry"></td></tr>
- <tr><td class="entry"><a class="el" href="classItem.html#aa8b1bbc4236890694635295e46d7fd72">set_conversation</a>($conv)</td><td class="entry"><a class="el" href="classItem.html">Item</a></td><td class="entry"></td></tr>
+ <tr class="even"><td class="entry"><a class="el" href="classItem.html#a23d4057883f8ed888c0c2ff12d8aa5d0">get_display_mode</a>()</td><td class="entry"><a class="el" href="classItem.html">Item</a></td><td class="entry"></td></tr>
+ <tr><td class="entry"><a class="el" href="classItem.html#ac0f27e58532612f6e7a54c8a621b9b92">get_id</a>()</td><td class="entry"><a class="el" href="classItem.html">Item</a></td><td class="entry"></td></tr>
+ <tr class="even"><td class="entry"><a class="el" href="classItem.html#a67892aa23d19f4431bb2e5f43c74000e">get_owner_name</a>()</td><td class="entry"><a class="el" href="classItem.html">Item</a></td><td class="entry"><span class="mlabel">private</span></td></tr>
+ <tr><td class="entry"><a class="el" href="classItem.html#aa541bc4290e51bfd688d6921bebabc73">get_owner_photo</a>()</td><td class="entry"><a class="el" href="classItem.html">Item</a></td><td class="entry"><span class="mlabel">private</span></td></tr>
+ <tr class="even"><td class="entry"><a class="el" href="classItem.html#a9f2d219da712390f59012fc32a342074">get_owner_url</a>()</td><td class="entry"><a class="el" href="classItem.html">Item</a></td><td class="entry"><span class="mlabel">private</span></td></tr>
+ <tr><td class="entry"><a class="el" href="classItem.html#a4b92e3a9d6212c553aa2661489bd95d8">get_parent</a>()</td><td class="entry"><a class="el" href="classItem.html">Item</a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
+ <tr class="even"><td class="entry"><a class="el" href="classItem.html#a428f448f89a8629055ea3294eb942aea">get_redirect_url</a>()</td><td class="entry"><a class="el" href="classItem.html">Item</a></td><td class="entry"><span class="mlabel">private</span></td></tr>
+ <tr><td class="entry"><a class="el" href="classItem.html#aba23a0a9d89e316d2b343cc46d695d91">get_template</a>()</td><td class="entry"><a class="el" href="classItem.html">Item</a></td><td class="entry"></td></tr>
+ <tr class="even"><td class="entry"><a class="el" href="classItem.html#ad5dcbe0b94cb2d5719bc5b6bd8ad60c8">get_template_data</a>($alike, $dlike, $thread_level=1)</td><td class="entry"><a class="el" href="classItem.html">Item</a></td><td class="entry"></td></tr>
+ <tr><td class="entry"><a class="el" href="classItem.html#ac04525a8be24c12b0a2ae4ca1ba4b967">is_commentable</a>()</td><td class="entry"><a class="el" href="classItem.html">Item</a></td><td class="entry"></td></tr>
+ <tr class="even"><td class="entry"><a class="el" href="classItem.html#a5b2fafdca55aefeaa08993a5a60529f0">is_threaded</a>()</td><td class="entry"><a class="el" href="classItem.html">Item</a></td><td class="entry"></td></tr>
+ <tr><td class="entry"><a class="el" href="classItem.html#aa49e40f961dff66da32c5ae110e32993">is_toplevel</a>()</td><td class="entry"><a class="el" href="classItem.html">Item</a></td><td class="entry"><span class="mlabel">private</span></td></tr>
+ <tr class="even"><td class="entry"><a class="el" href="classItem.html#a97c7feeea7f26a73176cb19faa455e12">is_visiting</a>()</td><td class="entry"><a class="el" href="classItem.html">Item</a></td><td class="entry"><span class="mlabel">private</span></td></tr>
+ <tr><td class="entry"><a class="el" href="classItem.html#aabf87ded59c25b5fe2b2296678e70509">is_wall_to_wall</a>()</td><td class="entry"><a class="el" href="classItem.html">Item</a></td><td class="entry"><span class="mlabel">private</span></td></tr>
+ <tr class="even"><td class="entry"><a class="el" href="classItem.html#a2ce70ef63f9f4d86a09c351678806925">remove_child</a>($item)</td><td class="entry"><a class="el" href="classItem.html">Item</a></td><td class="entry"></td></tr>
+ <tr><td class="entry"><a class="el" href="classItem.html#aa452b5bcd8dea12119b09212c615cb41">remove_parent</a>()</td><td class="entry"><a class="el" href="classItem.html">Item</a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
+ <tr class="even"><td class="entry"><a class="el" href="classBaseObject.html#a0a9acda12d751692834cf6999f889223">set_app</a>($app)</td><td class="entry"><a class="el" href="classBaseObject.html">BaseObject</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
+ <tr><td class="entry"><a class="el" href="classItem.html#aa1bd19fc8b5577078530265a7bf64123">set_commentable</a>($val)</td><td class="entry"><a class="el" href="classItem.html">Item</a></td><td class="entry"></td></tr>
+ <tr class="even"><td class="entry"><a class="el" href="classItem.html#aa8b1bbc4236890694635295e46d7fd72">set_conversation</a>($conv)</td><td class="entry"><a class="el" href="classItem.html">Item</a></td><td class="entry"></td></tr>
+ <tr><td class="entry"><a class="el" href="classItem.html#ac09a4728d37b7783714243f7f8167214">set_display_mode</a>($mode)</td><td class="entry"><a class="el" href="classItem.html">Item</a></td><td class="entry"></td></tr>
<tr class="even"><td class="entry"><a class="el" href="classItem.html#a9890ff72662d5bba301d1f2dd8aec9d7">set_parent</a>($item)</td><td class="entry"><a class="el" href="classItem.html">Item</a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
- <tr><td class="entry"><a class="el" href="classItem.html#af1b73df9b7c4b927e26b7e243b491f42">set_template</a>($t)</td><td class="entry"><a class="el" href="classItem.html">Item</a></td><td class="entry"><span class="mlabel">private</span></td></tr>
+ <tr><td class="entry"><a class="el" href="classItem.html#af1b73df9b7c4b927e26b7e243b491f42">set_template</a>($t)</td><td class="entry"><a class="el" href="classItem.html">Item</a></td><td class="entry"></td></tr>
</table></div><!-- contents -->
</div><!-- doc-content -->
diff --git a/doc/html/classItem.html b/doc/html/classItem.html
index 131cf6d82..413293348 100644
--- a/doc/html/classItem.html
+++ b/doc/html/classItem.html
@@ -134,6 +134,10 @@ Public Member Functions</h2></td></tr>
<tr class="separator:ad5dcbe0b94cb2d5719bc5b6bd8ad60c8"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ac0f27e58532612f6e7a54c8a621b9b92"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classItem.html#ac0f27e58532612f6e7a54c8a621b9b92">get_id</a> ()</td></tr>
<tr class="separator:ac0f27e58532612f6e7a54c8a621b9b92"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a23d4057883f8ed888c0c2ff12d8aa5d0"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classItem.html#a23d4057883f8ed888c0c2ff12d8aa5d0">get_display_mode</a> ()</td></tr>
+<tr class="separator:a23d4057883f8ed888c0c2ff12d8aa5d0"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ac09a4728d37b7783714243f7f8167214"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classItem.html#ac09a4728d37b7783714243f7f8167214">set_display_mode</a> ($mode)</td></tr>
+<tr class="separator:ac09a4728d37b7783714243f7f8167214"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a5b2fafdca55aefeaa08993a5a60529f0"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classItem.html#a5b2fafdca55aefeaa08993a5a60529f0">is_threaded</a> ()</td></tr>
<tr class="separator:a5b2fafdca55aefeaa08993a5a60529f0"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aa1bd19fc8b5577078530265a7bf64123"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classItem.html#aa1bd19fc8b5577078530265a7bf64123">set_commentable</a> ($val)</td></tr>
@@ -156,6 +160,10 @@ Public Member Functions</h2></td></tr>
<tr class="separator:ad3638f93065693c1f69eb349feb1b7aa"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ac6f1c96cc82a0dfb7e881fc70309ea3c"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classItem.html#ac6f1c96cc82a0dfb7e881fc70309ea3c">get_data_value</a> ($name)</td></tr>
<tr class="separator:ac6f1c96cc82a0dfb7e881fc70309ea3c"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:aba23a0a9d89e316d2b343cc46d695d91"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classItem.html#aba23a0a9d89e316d2b343cc46d695d91">get_template</a> ()</td></tr>
+<tr class="separator:aba23a0a9d89e316d2b343cc46d695d91"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:af1b73df9b7c4b927e26b7e243b491f42"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classItem.html#af1b73df9b7c4b927e26b7e243b491f42">set_template</a> ($<a class="el" href="language_8php.html#ac6ae482ee54fa2764d5c2e77305aeb96">t</a>)</td></tr>
+<tr class="separator:af1b73df9b7c4b927e26b7e243b491f42"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="inherit_header pub_methods_classBaseObject"><td colspan="2" onclick="javascript:toggleInherit('pub_methods_classBaseObject')"><img src="closed.png" alt="-"/>&#160;Public Member Functions inherited from <a class="el" href="classBaseObject.html">BaseObject</a></td></tr>
<tr class="memitem:ac43f10e69ce80c78e4870636250fc8a2 inherit pub_methods_classBaseObject"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classBaseObject.html#ac43f10e69ce80c78e4870636250fc8a2">get_app</a> ()</td></tr>
<tr class="separator:ac43f10e69ce80c78e4870636250fc8a2 inherit pub_methods_classBaseObject"><td class="memSeparator" colspan="2">&#160;</td></tr>
@@ -178,14 +186,12 @@ Protected Member Functions</h2></td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pri-methods"></a>
Private Member Functions</h2></td></tr>
-<tr class="memitem:aba23a0a9d89e316d2b343cc46d695d91"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classItem.html#aba23a0a9d89e316d2b343cc46d695d91">get_template</a> ()</td></tr>
-<tr class="separator:aba23a0a9d89e316d2b343cc46d695d91"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:af1b73df9b7c4b927e26b7e243b491f42"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classItem.html#af1b73df9b7c4b927e26b7e243b491f42">set_template</a> ($<a class="el" href="language_8php.html#ac6ae482ee54fa2764d5c2e77305aeb96">t</a>)</td></tr>
-<tr class="separator:af1b73df9b7c4b927e26b7e243b491f42"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aa49e40f961dff66da32c5ae110e32993"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classItem.html#aa49e40f961dff66da32c5ae110e32993">is_toplevel</a> ()</td></tr>
<tr class="separator:aa49e40f961dff66da32c5ae110e32993"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aca1e66988ed00cd627b2a359b72cd0ae"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classItem.html#aca1e66988ed00cd627b2a359b72cd0ae">count_descendants</a> ()</td></tr>
<tr class="separator:aca1e66988ed00cd627b2a359b72cd0ae"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ae0c48b2fed5558642549cabd547fc4f3"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classItem.html#ae0c48b2fed5558642549cabd547fc4f3">count_unseen_descendants</a> ()</td></tr>
+<tr class="separator:ae0c48b2fed5558642549cabd547fc4f3"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a904421c7a427411bb2ab473bca872f63"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classItem.html#a904421c7a427411bb2ab473bca872f63">get_comment_box_template</a> ()</td></tr>
<tr class="separator:a904421c7a427411bb2ab473bca872f63"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a3ee7667c2ec6cd7657328e27848c0bdf"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classItem.html#a3ee7667c2ec6cd7657328e27848c0bdf">get_comment_box</a> ($indent)</td></tr>
@@ -235,6 +241,8 @@ Private Attributes</h2></td></tr>
<tr class="separator:a4a123ae98987c1e30ecb15c4edf5a3b8"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:acc32426c0f465391be8a99ad810c7b8e"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classItem.html#acc32426c0f465391be8a99ad810c7b8e">$channel</a> = null</td></tr>
<tr class="separator:acc32426c0f465391be8a99ad810c7b8e"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a88a99e2d1245925867f249f543358e72"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classItem.html#a88a99e2d1245925867f249f543358e72">$display_mode</a> = 'normal'</td></tr>
+<tr class="separator:a88a99e2d1245925867f249f543358e72"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="inherited"></a>
Additional Inherited Members</h2></td></tr>
@@ -333,6 +341,31 @@ Additional Inherited Members</h2></td></tr>
</div>
</div>
+<a class="anchor" id="ae0c48b2fed5558642549cabd547fc4f3"></a>
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+ <tr>
+ <td class="mlabels-left">
+ <table class="memname">
+ <tr>
+ <td class="memname">Item::count_unseen_descendants </td>
+ <td>(</td>
+ <td class="paramname"></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+ </td>
+ <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">private</span></span> </td>
+ </tr>
+</table>
+</div><div class="memdoc">
+
+<p>Referenced by <a class="el" href="classItem.html#ad5dcbe0b94cb2d5719bc5b6bd8ad60c8">get_template_data()</a>.</p>
+
+</div>
+</div>
<a class="anchor" id="a632185dd25c5caf277067c76230a4320"></a>
<div class="memitem">
<div class="memproto">
@@ -366,7 +399,7 @@ Additional Inherited Members</h2></td></tr>
</div><div class="memdoc">
<p>Get all our children </p>
-<p>Referenced by <a class="el" href="classItem.html#aca1e66988ed00cd627b2a359b72cd0ae">count_descendants()</a>, <a class="el" href="classItem.html#a632185dd25c5caf277067c76230a4320">get_child()</a>, <a class="el" href="classItem.html#ad5dcbe0b94cb2d5719bc5b6bd8ad60c8">get_template_data()</a>, <a class="el" href="classItem.html#a2ce70ef63f9f4d86a09c351678806925">remove_child()</a>, <a class="el" href="classItem.html#aa1bd19fc8b5577078530265a7bf64123">set_commentable()</a>, and <a class="el" href="classItem.html#aa8b1bbc4236890694635295e46d7fd72">set_conversation()</a>.</p>
+<p>Referenced by <a class="el" href="classItem.html#aca1e66988ed00cd627b2a359b72cd0ae">count_descendants()</a>, <a class="el" href="classItem.html#ae0c48b2fed5558642549cabd547fc4f3">count_unseen_descendants()</a>, <a class="el" href="classItem.html#a632185dd25c5caf277067c76230a4320">get_child()</a>, <a class="el" href="classItem.html#ad5dcbe0b94cb2d5719bc5b6bd8ad60c8">get_template_data()</a>, <a class="el" href="classItem.html#a2ce70ef63f9f4d86a09c351678806925">remove_child()</a>, <a class="el" href="classItem.html#aa1bd19fc8b5577078530265a7bf64123">set_commentable()</a>, and <a class="el" href="classItem.html#aa8b1bbc4236890694635295e46d7fd72">set_conversation()</a>.</p>
</div>
</div>
@@ -481,6 +514,23 @@ Additional Inherited Members</h2></td></tr>
</div>
</div>
+<a class="anchor" id="a23d4057883f8ed888c0c2ff12d8aa5d0"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">Item::get_display_mode </td>
+ <td>(</td>
+ <td class="paramname"></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p>Referenced by <a class="el" href="classItem.html#ad5dcbe0b94cb2d5719bc5b6bd8ad60c8">get_template_data()</a>.</p>
+
+</div>
+</div>
<a class="anchor" id="ac0f27e58532612f6e7a54c8a621b9b92"></a>
<div class="memitem">
<div class="memproto">
@@ -625,9 +675,6 @@ Additional Inherited Members</h2></td></tr>
<a class="anchor" id="aba23a0a9d89e316d2b343cc46d695d91"></a>
<div class="memitem">
<div class="memproto">
-<table class="mlabels">
- <tr>
- <td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">Item::get_template </td>
@@ -636,11 +683,6 @@ Additional Inherited Members</h2></td></tr>
<td></td>
</tr>
</table>
- </td>
- <td class="mlabels-right">
-<span class="mlabels"><span class="mlabel">private</span></span> </td>
- </tr>
-</table>
</div><div class="memdoc">
<p>Get template </p>
@@ -864,6 +906,22 @@ Additional Inherited Members</h2></td></tr>
</div>
</div>
+<a class="anchor" id="ac09a4728d37b7783714243f7f8167214"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">Item::set_display_mode </td>
+ <td>(</td>
+ <td class="paramtype">&#160;</td>
+ <td class="paramname"><em>$mode</em></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+</div>
+</div>
<a class="anchor" id="a9890ff72662d5bba301d1f2dd8aec9d7"></a>
<div class="memitem">
<div class="memproto">
@@ -892,9 +950,6 @@ Additional Inherited Members</h2></td></tr>
<a class="anchor" id="af1b73df9b7c4b927e26b7e243b491f42"></a>
<div class="memitem">
<div class="memproto">
-<table class="mlabels">
- <tr>
- <td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">Item::set_template </td>
@@ -904,11 +959,6 @@ Additional Inherited Members</h2></td></tr>
<td></td>
</tr>
</table>
- </td>
- <td class="mlabels-right">
-<span class="mlabels"><span class="mlabel">private</span></span> </td>
- </tr>
-</table>
</div><div class="memdoc">
</div>
@@ -952,7 +1002,7 @@ Additional Inherited Members</h2></td></tr>
</table>
</div><div class="memdoc">
-<p>Referenced by <a class="el" href="classItem.html#aca1e66988ed00cd627b2a359b72cd0ae">count_descendants()</a>, <a class="el" href="classItem.html#aa0ee775ec94abccec6c798428835d001">get_children()</a>, and <a class="el" href="classItem.html#ad5dcbe0b94cb2d5719bc5b6bd8ad60c8">get_template_data()</a>.</p>
+<p>Referenced by <a class="el" href="classItem.html#aca1e66988ed00cd627b2a359b72cd0ae">count_descendants()</a>, <a class="el" href="classItem.html#ae0c48b2fed5558642549cabd547fc4f3">count_unseen_descendants()</a>, <a class="el" href="classItem.html#aa0ee775ec94abccec6c798428835d001">get_children()</a>, and <a class="el" href="classItem.html#ad5dcbe0b94cb2d5719bc5b6bd8ad60c8">get_template_data()</a>.</p>
</div>
</div>
@@ -1036,6 +1086,28 @@ Additional Inherited Members</h2></td></tr>
</div>
</div>
+<a class="anchor" id="a88a99e2d1245925867f249f543358e72"></a>
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+ <tr>
+ <td class="mlabels-left">
+ <table class="memname">
+ <tr>
+ <td class="memname">Item::$display_mode = 'normal'</td>
+ </tr>
+ </table>
+ </td>
+ <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">private</span></span> </td>
+ </tr>
+</table>
+</div><div class="memdoc">
+
+<p>Referenced by <a class="el" href="classItem.html#a23d4057883f8ed888c0c2ff12d8aa5d0">get_display_mode()</a>.</p>
+
+</div>
+</div>
<a class="anchor" id="a9594df6014b0b6f45364ea7a34510130"></a>
<div class="memitem">
<div class="memproto">
diff --git a/doc/html/classItem.js b/doc/html/classItem.js
index afdf7677d..7c2ed1e04 100644
--- a/doc/html/classItem.js
+++ b/doc/html/classItem.js
@@ -4,6 +4,7 @@ var classItem =
[ "add_child", "classItem.html#a80dcd9d0f548c3ad550abe7e6981fb51", null ],
[ "check_wall_to_wall", "classItem.html#abcdb0ea9bcd1576bc99bba9b8f700bb8", null ],
[ "count_descendants", "classItem.html#aca1e66988ed00cd627b2a359b72cd0ae", null ],
+ [ "count_unseen_descendants", "classItem.html#ae0c48b2fed5558642549cabd547fc4f3", null ],
[ "get_child", "classItem.html#a632185dd25c5caf277067c76230a4320", null ],
[ "get_children", "classItem.html#aa0ee775ec94abccec6c798428835d001", null ],
[ "get_comment_box", "classItem.html#a3ee7667c2ec6cd7657328e27848c0bdf", null ],
@@ -11,6 +12,7 @@ var classItem =
[ "get_conversation", "classItem.html#a0c301aaed2b7d682728d18db3a22afa3", null ],
[ "get_data", "classItem.html#ad3638f93065693c1f69eb349feb1b7aa", null ],
[ "get_data_value", "classItem.html#ac6f1c96cc82a0dfb7e881fc70309ea3c", null ],
+ [ "get_display_mode", "classItem.html#a23d4057883f8ed888c0c2ff12d8aa5d0", null ],
[ "get_id", "classItem.html#ac0f27e58532612f6e7a54c8a621b9b92", null ],
[ "get_owner_name", "classItem.html#a67892aa23d19f4431bb2e5f43c74000e", null ],
[ "get_owner_photo", "classItem.html#aa541bc4290e51bfd688d6921bebabc73", null ],
@@ -28,6 +30,7 @@ var classItem =
[ "remove_parent", "classItem.html#aa452b5bcd8dea12119b09212c615cb41", null ],
[ "set_commentable", "classItem.html#aa1bd19fc8b5577078530265a7bf64123", null ],
[ "set_conversation", "classItem.html#aa8b1bbc4236890694635295e46d7fd72", null ],
+ [ "set_display_mode", "classItem.html#ac09a4728d37b7783714243f7f8167214", null ],
[ "set_parent", "classItem.html#a9890ff72662d5bba301d1f2dd8aec9d7", null ],
[ "set_template", "classItem.html#af1b73df9b7c4b927e26b7e243b491f42", null ],
[ "$channel", "classItem.html#acc32426c0f465391be8a99ad810c7b8e", null ],
@@ -36,6 +39,7 @@ var classItem =
[ "$commentable", "classItem.html#aa2c221231ad0fc3720ccc1f00f0c6304", null ],
[ "$conversation", "classItem.html#a007424e3e3171dcfb4312a02161da6cd", null ],
[ "$data", "classItem.html#aec24e233f9098f902b1e57e60dcb2019", null ],
+ [ "$display_mode", "classItem.html#a88a99e2d1245925867f249f543358e72", null ],
[ "$owner_name", "classItem.html#a9594df6014b0b6f45364ea7a34510130", null ],
[ "$owner_photo", "classItem.html#a078f95b4134ce3a1df344cf8d386f986", null ],
[ "$owner_url", "classItem.html#afa54851df82962c7c42dea3cc9f5c92c", null ],
diff --git a/doc/html/classRedBasicAuth-members.html b/doc/html/classRedBasicAuth-members.html
index ab4dd9f76..bb4f57333 100644
--- a/doc/html/classRedBasicAuth-members.html
+++ b/doc/html/classRedBasicAuth-members.html
@@ -115,14 +115,18 @@ $(document).ready(function(){initNavTree('classRedBasicAuth.html','');});
<tr class="even"><td class="entry"><a class="el" href="classRedBasicAuth.html#af14337f1baad407f8a85d48205c0f30e">$browser</a></td><td class="entry"><a class="el" href="classRedBasicAuth.html">RedBasicAuth</a></td><td class="entry"></td></tr>
<tr><td class="entry"><a class="el" href="classRedBasicAuth.html#ad5a3ea4dc4783b242d9dc6e76478b6ef">$channel_hash</a></td><td class="entry"><a class="el" href="classRedBasicAuth.html">RedBasicAuth</a></td><td class="entry"></td></tr>
<tr class="even"><td class="entry"><a class="el" href="classRedBasicAuth.html#a2dab393650d1573e3515969a153e8354">$channel_id</a></td><td class="entry"><a class="el" href="classRedBasicAuth.html">RedBasicAuth</a></td><td class="entry"></td></tr>
- <tr><td class="entry"><a class="el" href="classRedBasicAuth.html#a438ab125b6ef46581947e35d49cdebac">$channel_name</a></td><td class="entry"><a class="el" href="classRedBasicAuth.html">RedBasicAuth</a></td><td class="entry"></td></tr>
+ <tr><td class="entry"><a class="el" href="classRedBasicAuth.html#a438ab125b6ef46581947e35d49cdebac">$channel_name</a></td><td class="entry"><a class="el" href="classRedBasicAuth.html">RedBasicAuth</a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
<tr class="even"><td class="entry"><a class="el" href="classRedBasicAuth.html#aa75dc43b59adc98e38a98517d3fd35d1">$observer</a></td><td class="entry"><a class="el" href="classRedBasicAuth.html">RedBasicAuth</a></td><td class="entry"></td></tr>
<tr><td class="entry"><a class="el" href="classRedBasicAuth.html#a09c1488a0b290f5a54dc15180c5690d7">$owner_id</a></td><td class="entry"><a class="el" href="classRedBasicAuth.html">RedBasicAuth</a></td><td class="entry"></td></tr>
<tr class="even"><td class="entry"><a class="el" href="classRedBasicAuth.html#a8d09b8d784cc810a0b3be580d05106a7">$owner_nick</a></td><td class="entry"><a class="el" href="classRedBasicAuth.html">RedBasicAuth</a></td><td class="entry"></td></tr>
- <tr><td class="entry"><a class="el" href="classRedBasicAuth.html#a2d0246ed446fd5e55c17938b4ce6ac47">$timezone</a></td><td class="entry"><a class="el" href="classRedBasicAuth.html">RedBasicAuth</a></td><td class="entry"></td></tr>
+ <tr><td class="entry"><a class="el" href="classRedBasicAuth.html#a2d0246ed446fd5e55c17938b4ce6ac47">$timezone</a></td><td class="entry"><a class="el" href="classRedBasicAuth.html">RedBasicAuth</a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
+ <tr class="even"><td class="entry"><a class="el" href="classRedBasicAuth.html#a4a584de8eb31c786fabd8f6e1a6c8925">getCurrentUser</a>()</td><td class="entry"><a class="el" href="classRedBasicAuth.html">RedBasicAuth</a></td><td class="entry"></td></tr>
+ <tr><td class="entry"><a class="el" href="classRedBasicAuth.html#a9fdd4b890e3e7c7e1ae96ead2301418f">getTimezone</a>()</td><td class="entry"><a class="el" href="classRedBasicAuth.html">RedBasicAuth</a></td><td class="entry"></td></tr>
<tr class="even"><td class="entry"><a class="el" href="classRedBasicAuth.html#a2cc8b1eac9c5a799bfb53ea7f287f3f0">log</a>()</td><td class="entry"><a class="el" href="classRedBasicAuth.html">RedBasicAuth</a></td><td class="entry"></td></tr>
- <tr><td class="entry"><a class="el" href="classRedBasicAuth.html#a358ddad4abb5aa8c1382cf49a907adbc">setBrowserPlugin</a>($browser)</td><td class="entry"><a class="el" href="classRedBasicAuth.html">RedBasicAuth</a></td><td class="entry"></td></tr>
- <tr class="even"><td class="entry"><a class="el" href="classRedBasicAuth.html#a072e8244a9a7f191b32d3db5ac94f857">setCurrentUser</a>($name)</td><td class="entry"><a class="el" href="classRedBasicAuth.html">RedBasicAuth</a></td><td class="entry"></td></tr>
+ <tr><td class="entry"><a class="el" href="classRedBasicAuth.html#a3ef43177abe0ef72da140a25bc568333">setAuthenticated</a>($r)</td><td class="entry"><a class="el" href="classRedBasicAuth.html">RedBasicAuth</a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
+ <tr class="even"><td class="entry"><a class="el" href="classRedBasicAuth.html#a358ddad4abb5aa8c1382cf49a907adbc">setBrowserPlugin</a>($browser)</td><td class="entry"><a class="el" href="classRedBasicAuth.html">RedBasicAuth</a></td><td class="entry"></td></tr>
+ <tr><td class="entry"><a class="el" href="classRedBasicAuth.html#a072e8244a9a7f191b32d3db5ac94f857">setCurrentUser</a>($name)</td><td class="entry"><a class="el" href="classRedBasicAuth.html">RedBasicAuth</a></td><td class="entry"></td></tr>
+ <tr class="even"><td class="entry"><a class="el" href="classRedBasicAuth.html#a2f5d4ef7040c65b79b2fdfdf1212395a">setTimezone</a>($timezone)</td><td class="entry"><a class="el" href="classRedBasicAuth.html">RedBasicAuth</a></td><td class="entry"></td></tr>
<tr><td class="entry"><a class="el" href="classRedBasicAuth.html#a8dfd9a0953f8884723b421b7c1acf79b">validateUserPass</a>($username, $password)</td><td class="entry"><a class="el" href="classRedBasicAuth.html">RedBasicAuth</a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
</table></div><!-- contents -->
</div><!-- doc-content -->
diff --git a/doc/html/classRedBasicAuth.html b/doc/html/classRedBasicAuth.html
index 6a8e064d9..e51a60e4c 100644
--- a/doc/html/classRedBasicAuth.html
+++ b/doc/html/classRedBasicAuth.html
@@ -109,11 +109,15 @@ $(document).ready(function(){initNavTree('classRedBasicAuth.html','');});
<a href="#pub-methods">Public Member Functions</a> &#124;
<a href="#pub-attribs">Public Attributes</a> &#124;
<a href="#pro-methods">Protected Member Functions</a> &#124;
+<a href="#pro-attribs">Protected Attributes</a> &#124;
<a href="classRedBasicAuth-members.html">List of all members</a> </div>
<div class="headertitle">
<div class="title">RedBasicAuth Class Reference</div> </div>
</div><!--header-->
<div class="contents">
+
+<p>Authentication backend class for RedDAV.
+ <a href="classRedBasicAuth.html#details">More...</a></p>
<div class="dynheader">
Inheritance diagram for RedBasicAuth:</div>
<div class="dyncontent">
@@ -127,16 +131,22 @@ Inheritance diagram for RedBasicAuth:</div>
Public Member Functions</h2></td></tr>
<tr class="memitem:a072e8244a9a7f191b32d3db5ac94f857"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classRedBasicAuth.html#a072e8244a9a7f191b32d3db5ac94f857">setCurrentUser</a> ($name)</td></tr>
<tr class="separator:a072e8244a9a7f191b32d3db5ac94f857"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a4a584de8eb31c786fabd8f6e1a6c8925"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classRedBasicAuth.html#a4a584de8eb31c786fabd8f6e1a6c8925">getCurrentUser</a> ()</td></tr>
+<tr class="separator:a4a584de8eb31c786fabd8f6e1a6c8925"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a2f5d4ef7040c65b79b2fdfdf1212395a"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classRedBasicAuth.html#a2f5d4ef7040c65b79b2fdfdf1212395a">setTimezone</a> ($timezone)</td></tr>
+<tr class="memdesc:a2f5d4ef7040c65b79b2fdfdf1212395a"><td class="mdescLeft">&#160;</td><td class="mdescRight">Sets the timezone from the channel in <a class="el" href="classRedBasicAuth.html" title="Authentication backend class for RedDAV.">RedBasicAuth</a>. <a href="#a2f5d4ef7040c65b79b2fdfdf1212395a">More...</a><br/></td></tr>
+<tr class="separator:a2f5d4ef7040c65b79b2fdfdf1212395a"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a9fdd4b890e3e7c7e1ae96ead2301418f"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classRedBasicAuth.html#a9fdd4b890e3e7c7e1ae96ead2301418f">getTimezone</a> ()</td></tr>
+<tr class="memdesc:a9fdd4b890e3e7c7e1ae96ead2301418f"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the timezone. <a href="#a9fdd4b890e3e7c7e1ae96ead2301418f">More...</a><br/></td></tr>
+<tr class="separator:a9fdd4b890e3e7c7e1ae96ead2301418f"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a358ddad4abb5aa8c1382cf49a907adbc"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classRedBasicAuth.html#a358ddad4abb5aa8c1382cf49a907adbc">setBrowserPlugin</a> ($browser)</td></tr>
-<tr class="memdesc:a358ddad4abb5aa8c1382cf49a907adbc"><td class="mdescLeft">&#160;</td><td class="mdescRight">Set browser plugin. <a href="#a358ddad4abb5aa8c1382cf49a907adbc">More...</a><br/></td></tr>
+<tr class="memdesc:a358ddad4abb5aa8c1382cf49a907adbc"><td class="mdescLeft">&#160;</td><td class="mdescRight">Set browser plugin for SabreDAV. <a href="#a358ddad4abb5aa8c1382cf49a907adbc">More...</a><br/></td></tr>
<tr class="separator:a358ddad4abb5aa8c1382cf49a907adbc"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a2cc8b1eac9c5a799bfb53ea7f287f3f0"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classRedBasicAuth.html#a2cc8b1eac9c5a799bfb53ea7f287f3f0">log</a> ()</td></tr>
<tr class="separator:a2cc8b1eac9c5a799bfb53ea7f287f3f0"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-attribs"></a>
Public Attributes</h2></td></tr>
-<tr class="memitem:a438ab125b6ef46581947e35d49cdebac"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classRedBasicAuth.html#a438ab125b6ef46581947e35d49cdebac">$channel_name</a> = ''</td></tr>
-<tr class="separator:a438ab125b6ef46581947e35d49cdebac"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a2dab393650d1573e3515969a153e8354"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classRedBasicAuth.html#a2dab393650d1573e3515969a153e8354">$channel_id</a> = 0</td></tr>
<tr class="separator:a2dab393650d1573e3515969a153e8354"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ad5a3ea4dc4783b242d9dc6e76478b6ef"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classRedBasicAuth.html#ad5a3ea4dc4783b242d9dc6e76478b6ef">$channel_hash</a> = ''</td></tr>
@@ -145,21 +155,68 @@ Public Attributes</h2></td></tr>
<tr class="separator:aa75dc43b59adc98e38a98517d3fd35d1"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:af14337f1baad407f8a85d48205c0f30e"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classRedBasicAuth.html#af14337f1baad407f8a85d48205c0f30e">$browser</a></td></tr>
<tr class="separator:af14337f1baad407f8a85d48205c0f30e"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a09c1488a0b290f5a54dc15180c5690d7"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classRedBasicAuth.html#a09c1488a0b290f5a54dc15180c5690d7">$owner_id</a></td></tr>
+<tr class="memitem:a09c1488a0b290f5a54dc15180c5690d7"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classRedBasicAuth.html#a09c1488a0b290f5a54dc15180c5690d7">$owner_id</a> = 0</td></tr>
<tr class="separator:a09c1488a0b290f5a54dc15180c5690d7"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a8d09b8d784cc810a0b3be580d05106a7"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classRedBasicAuth.html#a8d09b8d784cc810a0b3be580d05106a7">$owner_nick</a> = ''</td></tr>
<tr class="separator:a8d09b8d784cc810a0b3be580d05106a7"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a2d0246ed446fd5e55c17938b4ce6ac47"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classRedBasicAuth.html#a2d0246ed446fd5e55c17938b4ce6ac47">$timezone</a></td></tr>
-<tr class="separator:a2d0246ed446fd5e55c17938b4ce6ac47"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pro-methods"></a>
Protected Member Functions</h2></td></tr>
<tr class="memitem:a8dfd9a0953f8884723b421b7c1acf79b"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classRedBasicAuth.html#a8dfd9a0953f8884723b421b7c1acf79b">validateUserPass</a> ($username, $password)</td></tr>
+<tr class="memdesc:a8dfd9a0953f8884723b421b7c1acf79b"><td class="mdescLeft">&#160;</td><td class="mdescRight">Validates a username and password. <a href="#a8dfd9a0953f8884723b421b7c1acf79b">More...</a><br/></td></tr>
<tr class="separator:a8dfd9a0953f8884723b421b7c1acf79b"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a3ef43177abe0ef72da140a25bc568333"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classRedBasicAuth.html#a3ef43177abe0ef72da140a25bc568333">setAuthenticated</a> ($r)</td></tr>
+<tr class="memdesc:a3ef43177abe0ef72da140a25bc568333"><td class="mdescLeft">&#160;</td><td class="mdescRight">Sets variables and session parameters after successfull authentication. <a href="#a3ef43177abe0ef72da140a25bc568333">More...</a><br/></td></tr>
+<tr class="separator:a3ef43177abe0ef72da140a25bc568333"><td class="memSeparator" colspan="2">&#160;</td></tr>
+</table><table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pro-attribs"></a>
+Protected Attributes</h2></td></tr>
+<tr class="memitem:a438ab125b6ef46581947e35d49cdebac"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classRedBasicAuth.html#a438ab125b6ef46581947e35d49cdebac">$channel_name</a> = null</td></tr>
+<tr class="separator:a438ab125b6ef46581947e35d49cdebac"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a2d0246ed446fd5e55c17938b4ce6ac47"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classRedBasicAuth.html#a2d0246ed446fd5e55c17938b4ce6ac47">$timezone</a> = ''</td></tr>
+<tr class="separator:a2d0246ed446fd5e55c17938b4ce6ac47"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
-<div class="textblock"><p><a class="el" href="classRedBasicAuth.html">RedBasicAuth</a> class. </p>
+<div class="textblock"><p>Authentication backend class for RedDAV. </p>
+<p>This class also contains some data which is not necessary for authentication like timezone settings. </p>
</div><h2 class="groupheader">Member Function Documentation</h2>
+<a class="anchor" id="a4a584de8eb31c786fabd8f6e1a6c8925"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">RedBasicAuth::getCurrentUser </td>
+ <td>(</td>
+ <td class="paramname"></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+<p>Returns information about the currently logged-in channel.</p>
+<p>If nobody is currently logged in, this method should return null.</p>
+<dl class="section see"><dt>See Also</dt><dd>DAV::getCurrentUser </dd></dl>
+<dl class="section return"><dt>Returns</dt><dd>string|null </dd></dl>
+
+</div>
+</div>
+<a class="anchor" id="a9fdd4b890e3e7c7e1ae96ead2301418f"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">RedBasicAuth::getTimezone </td>
+ <td>(</td>
+ <td class="paramname"></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p>Returns the timezone. </p>
+<dl class="section return"><dt>Returns</dt><dd>string Return the channel's timezone. </dd></dl>
+
+</div>
+</div>
<a class="anchor" id="a2cc8b1eac9c5a799bfb53ea7f287f3f0"></a>
<div class="memitem">
<div class="memproto">
@@ -172,6 +229,43 @@ Protected Member Functions</h2></td></tr>
</tr>
</table>
</div><div class="memdoc">
+<p>Prints out all <a class="el" href="classRedBasicAuth.html" title="Authentication backend class for RedDAV.">RedBasicAuth</a> variables to <a class="el" href="text_8php.html#a030fa5ecc64168af0c4f44897a9bce63">logger()</a>.</p>
+<dl class="section return"><dt>Returns</dt><dd>void </dd></dl>
+
+</div>
+</div>
+<a class="anchor" id="a3ef43177abe0ef72da140a25bc568333"></a>
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+ <tr>
+ <td class="mlabels-left">
+ <table class="memname">
+ <tr>
+ <td class="memname">RedBasicAuth::setAuthenticated </td>
+ <td>(</td>
+ <td class="paramtype">&#160;</td>
+ <td class="paramname"><em>$r</em></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+ </td>
+ <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">protected</span></span> </td>
+ </tr>
+</table>
+</div><div class="memdoc">
+
+<p>Sets variables and session parameters after successfull authentication. </p>
+<dl class="params"><dt>Parameters</dt><dd>
+ <table class="params">
+ <tr><td class="paramtype">array</td><td class="paramname">$r</td><td>Array with the values for the authenticated channel. </td></tr>
+ </table>
+ </dd>
+</dl>
+<dl class="section return"><dt>Returns</dt><dd>bool </dd></dl>
+
+<p>Referenced by <a class="el" href="classRedBasicAuth.html#a8dfd9a0953f8884723b421b7c1acf79b">validateUserPass()</a>.</p>
</div>
</div>
@@ -189,8 +283,8 @@ Protected Member Functions</h2></td></tr>
</table>
</div><div class="memdoc">
-<p>Set browser plugin. </p>
-<dl class="section see"><dt>See Also</dt><dd><a class="el" href="classRedBrowser.html#a40fdbb9d9fe6c1243bbf135dd5b0a06f">RedBrowser::set_writeable()</a> </dd></dl>
+<p>Set browser plugin for SabreDAV. </p>
+<dl class="section see"><dt>See Also</dt><dd>RedBrowser::set_writeable() </dd></dl>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramtype">DAV\Browser\Plugin</td><td class="paramname">$browser</td><td></td></tr>
@@ -213,6 +307,39 @@ Protected Member Functions</h2></td></tr>
</tr>
</table>
</div><div class="memdoc">
+<p>Sets the channel_name from the currently logged-in channel.</p>
+<dl class="params"><dt>Parameters</dt><dd>
+ <table class="params">
+ <tr><td class="paramtype">string</td><td class="paramname">$name</td><td>The channel's name </td></tr>
+ </table>
+ </dd>
+</dl>
+
+</div>
+</div>
+<a class="anchor" id="a2f5d4ef7040c65b79b2fdfdf1212395a"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">RedBasicAuth::setTimezone </td>
+ <td>(</td>
+ <td class="paramtype">&#160;</td>
+ <td class="paramname"><em>$timezone</em></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p>Sets the timezone from the channel in <a class="el" href="classRedBasicAuth.html" title="Authentication backend class for RedDAV.">RedBasicAuth</a>. </p>
+<p>Set in <a class="el" href="cloud_8php.html" title="Initialize RedMatrix&#39;s cloud (SabreDAV).">mod/cloud.php</a> if the channel has a timezone set.</p>
+<dl class="params"><dt>Parameters</dt><dd>
+ <table class="params">
+ <tr><td class="paramtype">string</td><td class="paramname">$timezone</td><td>The channel's timezone. </td></tr>
+ </table>
+ </dd>
+</dl>
+<dl class="section return"><dt>Returns</dt><dd>void </dd></dl>
</div>
</div>
@@ -247,6 +374,10 @@ Protected Member Functions</h2></td></tr>
</tr>
</table>
</div><div class="memdoc">
+
+<p>Validates a username and password. </p>
+<p>Guest access is granted with the password "+++".</p>
+<dl class="section see"><dt>See Also</dt><dd>DAV::validateUserPass </dd></dl>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramtype">string</td><td class="paramname">$username</td><td></td></tr>
@@ -254,6 +385,7 @@ Protected Member Functions</h2></td></tr>
</table>
</dd>
</dl>
+<dl class="section return"><dt>Returns</dt><dd>bool </dd></dl>
</div>
</div>
@@ -299,13 +431,23 @@ Protected Member Functions</h2></td></tr>
<a class="anchor" id="a438ab125b6ef46581947e35d49cdebac"></a>
<div class="memitem">
<div class="memproto">
+<table class="mlabels">
+ <tr>
+ <td class="mlabels-left">
<table class="memname">
<tr>
- <td class="memname">RedBasicAuth::$channel_name = ''</td>
+ <td class="memname">RedBasicAuth::$channel_name = null</td>
</tr>
</table>
+ </td>
+ <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">protected</span></span> </td>
+ </tr>
+</table>
</div><div class="memdoc">
+<p>Referenced by <a class="el" href="classRedBasicAuth.html#a4a584de8eb31c786fabd8f6e1a6c8925">getCurrentUser()</a>.</p>
+
</div>
</div>
<a class="anchor" id="aa75dc43b59adc98e38a98517d3fd35d1"></a>
@@ -325,7 +467,7 @@ Protected Member Functions</h2></td></tr>
<div class="memproto">
<table class="memname">
<tr>
- <td class="memname">RedBasicAuth::$owner_id</td>
+ <td class="memname">RedBasicAuth::$owner_id = 0</td>
</tr>
</table>
</div><div class="memdoc">
@@ -347,13 +489,23 @@ Protected Member Functions</h2></td></tr>
<a class="anchor" id="a2d0246ed446fd5e55c17938b4ce6ac47"></a>
<div class="memitem">
<div class="memproto">
+<table class="mlabels">
+ <tr>
+ <td class="mlabels-left">
<table class="memname">
<tr>
- <td class="memname">RedBasicAuth::$timezone</td>
+ <td class="memname">RedBasicAuth::$timezone = ''</td>
</tr>
</table>
+ </td>
+ <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">protected</span></span> </td>
+ </tr>
+</table>
</div><div class="memdoc">
+<p>Referenced by <a class="el" href="classRedBasicAuth.html#a9fdd4b890e3e7c7e1ae96ead2301418f">getTimezone()</a>, and <a class="el" href="classRedBasicAuth.html#a2f5d4ef7040c65b79b2fdfdf1212395a">setTimezone()</a>.</p>
+
</div>
</div>
<hr/>The documentation for this class was generated from the following file:<ul>
diff --git a/doc/html/classRedBasicAuth.js b/doc/html/classRedBasicAuth.js
index ab8a752b6..7b0a17424 100644
--- a/doc/html/classRedBasicAuth.js
+++ b/doc/html/classRedBasicAuth.js
@@ -1,8 +1,12 @@
var classRedBasicAuth =
[
+ [ "getCurrentUser", "classRedBasicAuth.html#a4a584de8eb31c786fabd8f6e1a6c8925", null ],
+ [ "getTimezone", "classRedBasicAuth.html#a9fdd4b890e3e7c7e1ae96ead2301418f", null ],
[ "log", "classRedBasicAuth.html#a2cc8b1eac9c5a799bfb53ea7f287f3f0", null ],
+ [ "setAuthenticated", "classRedBasicAuth.html#a3ef43177abe0ef72da140a25bc568333", null ],
[ "setBrowserPlugin", "classRedBasicAuth.html#a358ddad4abb5aa8c1382cf49a907adbc", null ],
[ "setCurrentUser", "classRedBasicAuth.html#a072e8244a9a7f191b32d3db5ac94f857", null ],
+ [ "setTimezone", "classRedBasicAuth.html#a2f5d4ef7040c65b79b2fdfdf1212395a", null ],
[ "validateUserPass", "classRedBasicAuth.html#a8dfd9a0953f8884723b421b7c1acf79b", null ],
[ "$browser", "classRedBasicAuth.html#af14337f1baad407f8a85d48205c0f30e", null ],
[ "$channel_hash", "classRedBasicAuth.html#ad5a3ea4dc4783b242d9dc6e76478b6ef", null ],
diff --git a/doc/html/classRedDirectory.html b/doc/html/classRedDirectory.html
index 51064468b..2975fc2ef 100644
--- a/doc/html/classRedDirectory.html
+++ b/doc/html/classRedDirectory.html
@@ -169,24 +169,21 @@ Private Member Functions</h2></td></tr>
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pri-attribs"></a>
Private Attributes</h2></td></tr>
<tr class="memitem:acb32b8df27538c57772824a745e751d7"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classRedDirectory.html#acb32b8df27538c57772824a745e751d7">$red_path</a></td></tr>
-<tr class="memdesc:acb32b8df27538c57772824a745e751d7"><td class="mdescLeft">&#160;</td><td class="mdescRight">The path inside /cloud. <a href="#acb32b8df27538c57772824a745e751d7">More...</a><br/></td></tr>
<tr class="separator:acb32b8df27538c57772824a745e751d7"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aa10254abf177bb2a0e4a88495725e09b"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classRedDirectory.html#aa10254abf177bb2a0e4a88495725e09b">$folder_hash</a></td></tr>
<tr class="separator:aa10254abf177bb2a0e4a88495725e09b"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a0f113244cd85c17848df991001d024f4"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classRedDirectory.html#a0f113244cd85c17848df991001d024f4">$ext_path</a></td></tr>
-<tr class="memdesc:a0f113244cd85c17848df991001d024f4"><td class="mdescLeft">&#160;</td><td class="mdescRight">The full path as seen in the browser. /cloud + $red_path. <a href="#a0f113244cd85c17848df991001d024f4">More...</a><br/></td></tr>
<tr class="separator:a0f113244cd85c17848df991001d024f4"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ad87c514a307ec97ba0f1372e9bcfa6a4"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classRedDirectory.html#ad87c514a307ec97ba0f1372e9bcfa6a4">$root_dir</a> = ''</td></tr>
<tr class="separator:ad87c514a307ec97ba0f1372e9bcfa6a4"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a9616af16cd19a18a6afebebcc2881c44"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classRedDirectory.html#a9616af16cd19a18a6afebebcc2881c44">$auth</a></td></tr>
<tr class="separator:a9616af16cd19a18a6afebebcc2881c44"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a3c148c07ad909985125aa4926d8d0021"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classRedDirectory.html#a3c148c07ad909985125aa4926d8d0021">$os_path</a> = ''</td></tr>
-<tr class="memdesc:a3c148c07ad909985125aa4926d8d0021"><td class="mdescLeft">&#160;</td><td class="mdescRight">The real path on the filesystem. The actual path in store/ with the hashed names. <a href="#a3c148c07ad909985125aa4926d8d0021">More...</a><br/></td></tr>
<tr class="separator:a3c148c07ad909985125aa4926d8d0021"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
<div class="textblock"><p><a class="el" href="classRedDirectory.html" title="RedDirectory class.">RedDirectory</a> class. </p>
-<p>A class that represents a directory. </p>
+<p>A class that represents a directory.</p>
</div><h2 class="groupheader">Constructor &amp; Destructor Documentation</h2>
<a class="anchor" id="a1e35e3cd31d2a15250655e4cafdea180"></a>
<div class="memitem">
@@ -216,7 +213,7 @@ Private Attributes</h2></td></tr>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramtype">string</td><td class="paramname">$ext_path</td><td>a full path </td></tr>
- <tr><td class="paramtype"><a class="el" href="classRedBasicAuth.html">RedBasicAuth</a></td><td class="paramname">&amp;$auth_plugin</td><td></td></tr>
+ <tr><td class="paramtype"><a class="el" href="classRedBasicAuth.html" title="Authentication backend class for RedDAV.">RedBasicAuth</a></td><td class="paramname">&amp;$auth_plugin</td><td></td></tr>
</table>
</dd>
</dl>
@@ -385,7 +382,7 @@ Private Attributes</h2></td></tr>
</tr>
</table>
</div><div class="memdoc">
-<dl class="todo"><dt><b><a class="el" href="todo.html#_todo000005">Todo:</a></b></dt><dd>add description of what this function does.</dd></dl>
+<dl class="todo"><dt><b><a class="el" href="todo.html#_todo000008">Todo:</a></b></dt><dd>add description of what this function does.</dd></dl>
<dl class="exception"><dt>Exceptions</dt><dd>
<table class="exception">
<tr><td class="paramname">DAV\Exception\NotFound</td><td></td></tr>
@@ -494,7 +491,7 @@ Private Attributes</h2></td></tr>
</div><div class="memdoc">
<p>Renames the directory. </p>
-<dl class="todo"><dt><b><a class="el" href="todo.html#_todo000004">Todo:</a></b></dt><dd>handle duplicate directory name</dd></dl>
+<dl class="todo"><dt><b><a class="el" href="todo.html#_todo000007">Todo:</a></b></dt><dd>handle duplicate directory name</dd></dl>
<dl class="exception"><dt>Exceptions</dt><dd>
<table class="exception">
<tr><td class="paramname">DAV\Exception\Forbidden</td><td></td></tr>
@@ -550,9 +547,6 @@ Private Attributes</h2></td></tr>
</table>
</div><div class="memdoc">
-<p>The full path as seen in the browser. /cloud + $red_path. </p>
-<dl class="todo"><dt><b><a class="el" href="todo.html#_todo000003">Todo:</a></b></dt><dd>I think this is not used anywhere, we always strip '/cloud' and only use it in debug </dd></dl>
-
<p>Referenced by <a class="el" href="classRedDirectory.html#a1e35e3cd31d2a15250655e4cafdea180">__construct()</a>, and <a class="el" href="classRedDirectory.html#a70173d4458572d95e586b2037d2fd2f4">getDir()</a>.</p>
</div>
@@ -595,8 +589,6 @@ Private Attributes</h2></td></tr>
</table>
</div><div class="memdoc">
-<p>The real path on the filesystem. The actual path in store/ with the hashed names. </p>
-
<p>Referenced by <a class="el" href="classRedDirectory.html#a2d12d99d38a6a75fc9a830b2f7fc0bf0">createFile()</a>, and <a class="el" href="classRedDirectory.html#a70173d4458572d95e586b2037d2fd2f4">getDir()</a>.</p>
</div>
@@ -619,8 +611,6 @@ Private Attributes</h2></td></tr>
</table>
</div><div class="memdoc">
-<p>The path inside /cloud. </p>
-
</div>
</div>
<a class="anchor" id="ad87c514a307ec97ba0f1372e9bcfa6a4"></a>
diff --git a/doc/html/classRedDirectory.png b/doc/html/classRedDirectory.png
index 75da336b4..05439b4c5 100644
--- a/doc/html/classRedDirectory.png
+++ b/doc/html/classRedDirectory.png
Binary files differ
diff --git a/doc/html/classRedMatrix_1_1Import_1_1Import-members.html b/doc/html/classRedMatrix_1_1Import_1_1Import-members.html
new file mode 100644
index 000000000..2be66a2ea
--- /dev/null
+++ b/doc/html/classRedMatrix_1_1Import_1_1Import-members.html
@@ -0,0 +1,132 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<meta name="generator" content="Doxygen 1.8.3.1"/>
+<title>The Red Matrix: Member List</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="navtree.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="resize.js"></script>
+<script type="text/javascript" src="navtree.js"></script>
+<script type="text/javascript">
+ $(document).ready(initResizable);
+ $(window).load(resizeHeight);
+</script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/search.js"></script>
+<script type="text/javascript">
+ $(document).ready(function() { searchBox.OnSelectItem(0); });
+</script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+ <td id="projectlogo"><img alt="Logo" src="rm-64.png"/></td>
+ <td style="padding-left: 0.5em;">
+ <div id="projectname">The Red Matrix
+ </div>
+ </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.8.3.1 -->
+<script type="text/javascript">
+var searchBox = new SearchBox("searchBox", "search",false,'Search');
+</script>
+ <div id="navrow1" class="tabs">
+ <ul class="tablist">
+ <li><a href="index.html"><span>Main&#160;Page</span></a></li>
+ <li><a href="pages.html"><span>Related&#160;Pages</span></a></li>
+ <li><a href="namespaces.html"><span>Namespaces</span></a></li>
+ <li class="current"><a href="annotated.html"><span>Classes</span></a></li>
+ <li><a href="files.html"><span>Files</span></a></li>
+ <li>
+ <div id="MSearchBox" class="MSearchBoxInactive">
+ <span class="left">
+ <img id="MSearchSelect" src="search/mag_sel.png"
+ onmouseover="return searchBox.OnSearchSelectShow()"
+ onmouseout="return searchBox.OnSearchSelectHide()"
+ alt=""/>
+ <input type="text" id="MSearchField" value="Search" accesskey="S"
+ onfocus="searchBox.OnSearchFieldFocus(true)"
+ onblur="searchBox.OnSearchFieldFocus(false)"
+ onkeyup="searchBox.OnSearchFieldChange(event)"/>
+ </span><span class="right">
+ <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
+ </span>
+ </div>
+ </li>
+ </ul>
+ </div>
+ <div id="navrow2" class="tabs2">
+ <ul class="tablist">
+ <li><a href="annotated.html"><span>Class&#160;List</span></a></li>
+ <li><a href="classes.html"><span>Class&#160;Index</span></a></li>
+ <li><a href="hierarchy.html"><span>Class&#160;Hierarchy</span></a></li>
+ <li><a href="functions.html"><span>Class&#160;Members</span></a></li>
+ </ul>
+ </div>
+</div><!-- top -->
+<div id="side-nav" class="ui-resizable side-nav-resizable">
+ <div id="nav-tree">
+ <div id="nav-tree-contents">
+ <div id="nav-sync" class="sync"></div>
+ </div>
+ </div>
+ <div id="splitbar" style="-moz-user-select:none;"
+ class="ui-resizable-handle">
+ </div>
+</div>
+<script type="text/javascript">
+$(document).ready(function(){initNavTree('classRedMatrix_1_1Import_1_1Import.html','');});
+</script>
+<div id="doc-content">
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+ onmouseover="return searchBox.OnSearchSelectShow()"
+ onmouseout="return searchBox.OnSearchSelectHide()"
+ onkeydown="return searchBox.OnSearchSelectKey(event)">
+<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark">&#160;</span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark">&#160;</span>Classes</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark">&#160;</span>Namespaces</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark">&#160;</span>Files</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark">&#160;</span>Functions</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark">&#160;</span>Variables</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark">&#160;</span>Pages</a></div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<iframe src="javascript:void(0)" frameborder="0"
+ name="MSearchResults" id="MSearchResults">
+</iframe>
+</div>
+
+<div class="header">
+ <div class="headertitle">
+<div class="title">RedMatrix\Import\Import Member List</div> </div>
+</div><!--header-->
+<div class="contents">
+
+<p>This is the complete list of members for <a class="el" href="classRedMatrix_1_1Import_1_1Import.html">RedMatrix\Import\Import</a>, including all inherited members.</p>
+<table class="directory">
+ <tr class="even"><td class="entry"><a class="el" href="classRedMatrix_1_1Import_1_1Import.html#a864aac9fadb4846f5d9f840e8e0f440f">$credentials</a></td><td class="entry"><a class="el" href="classRedMatrix_1_1Import_1_1Import.html">RedMatrix\Import\Import</a></td><td class="entry"><span class="mlabel">private</span></td></tr>
+ <tr><td class="entry"><a class="el" href="classRedMatrix_1_1Import_1_1Import.html#ad0d2bdc3b388220479063915b4f5c2fc">$itemlist</a></td><td class="entry"><a class="el" href="classRedMatrix_1_1Import_1_1Import.html">RedMatrix\Import\Import</a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
+ <tr class="even"><td class="entry"><a class="el" href="classRedMatrix_1_1Import_1_1Import.html#a0a05dac405ccc5b617b7b7b3c8ed783c">$items</a></td><td class="entry"><a class="el" href="classRedMatrix_1_1Import_1_1Import.html">RedMatrix\Import\Import</a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
+ <tr><td class="entry"><a class="el" href="classRedMatrix_1_1Import_1_1Import.html#a88c2eeba8d0cba3e7c12a2c45ba0fbc6">$src_items</a></td><td class="entry"><a class="el" href="classRedMatrix_1_1Import_1_1Import.html">RedMatrix\Import\Import</a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
+ <tr class="even"><td class="entry"><a class="el" href="classRedMatrix_1_1Import_1_1Import.html#a5434325afb2c633c52540127d717800a">convert_child</a>($child)</td><td class="entry"><a class="el" href="classRedMatrix_1_1Import_1_1Import.html">RedMatrix\Import\Import</a></td><td class="entry"></td></tr>
+ <tr><td class="entry"><a class="el" href="classRedMatrix_1_1Import_1_1Import.html#a107703a43a1b0ceb2af7ae470cb3f218">convert_item</a>($item_ident)</td><td class="entry"><a class="el" href="classRedMatrix_1_1Import_1_1Import.html">RedMatrix\Import\Import</a></td><td class="entry"></td></tr>
+ <tr class="even"><td class="entry"><a class="el" href="classRedMatrix_1_1Import_1_1Import.html#addf6e53dacd971eaab49be4b17a767d6">convert_taxonomy</a>($item_ident)</td><td class="entry"><a class="el" href="classRedMatrix_1_1Import_1_1Import.html">RedMatrix\Import\Import</a></td><td class="entry"></td></tr>
+ <tr><td class="entry"><a class="el" href="classRedMatrix_1_1Import_1_1Import.html#a57561904b0f127e0d9a3e2c33688daf8">get_children</a>($item_ident)</td><td class="entry"><a class="el" href="classRedMatrix_1_1Import_1_1Import.html">RedMatrix\Import\Import</a></td><td class="entry"></td></tr>
+ <tr class="even"><td class="entry"><a class="el" href="classRedMatrix_1_1Import_1_1Import.html#a24134929d9a8a682da2036a0bf326367">get_credentials</a>()</td><td class="entry"><a class="el" href="classRedMatrix_1_1Import_1_1Import.html">RedMatrix\Import\Import</a></td><td class="entry"></td></tr>
+ <tr><td class="entry"><a class="el" href="classRedMatrix_1_1Import_1_1Import.html#a27987a41cb703a796f1821baeb4774a2">get_item</a>($item_ident)</td><td class="entry"><a class="el" href="classRedMatrix_1_1Import_1_1Import.html">RedMatrix\Import\Import</a></td><td class="entry"></td></tr>
+ <tr class="even"><td class="entry"><a class="el" href="classRedMatrix_1_1Import_1_1Import.html#a772c28edf36aaf8e66007a95004c4059">get_item_ident</a>($item)</td><td class="entry"><a class="el" href="classRedMatrix_1_1Import_1_1Import.html">RedMatrix\Import\Import</a></td><td class="entry"></td></tr>
+ <tr><td class="entry"><a class="el" href="classRedMatrix_1_1Import_1_1Import.html#a855cd5a79b95d269ae8737fae774e3bc">get_itemlist</a>()</td><td class="entry"><a class="el" href="classRedMatrix_1_1Import_1_1Import.html">RedMatrix\Import\Import</a></td><td class="entry"></td></tr>
+ <tr class="even"><td class="entry"><a class="el" href="classRedMatrix_1_1Import_1_1Import.html#ae3c6472bea1a44025bc2e152604eb20c">get_taxonomy</a>($item_ident)</td><td class="entry"><a class="el" href="classRedMatrix_1_1Import_1_1Import.html">RedMatrix\Import\Import</a></td><td class="entry"></td></tr>
+ <tr><td class="entry"><a class="el" href="classRedMatrix_1_1Import_1_1Import.html#a8d138a9a7d4f79b81d3446ca216a602c">run</a>()</td><td class="entry"><a class="el" href="classRedMatrix_1_1Import_1_1Import.html">RedMatrix\Import\Import</a></td><td class="entry"></td></tr>
+ <tr class="even"><td class="entry"><a class="el" href="classRedMatrix_1_1Import_1_1Import.html#a33ed595de044c0ec1cd84cca719e31dc">store</a>($item, $update=false)</td><td class="entry"><a class="el" href="classRedMatrix_1_1Import_1_1Import.html">RedMatrix\Import\Import</a></td><td class="entry"></td></tr>
+</table></div><!-- contents -->
+</div><!-- doc-content -->
+
diff --git a/doc/html/classRedMatrix_1_1Import_1_1Import.html b/doc/html/classRedMatrix_1_1Import_1_1Import.html
new file mode 100644
index 000000000..2119780c3
--- /dev/null
+++ b/doc/html/classRedMatrix_1_1Import_1_1Import.html
@@ -0,0 +1,447 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<meta name="generator" content="Doxygen 1.8.3.1"/>
+<title>The Red Matrix: RedMatrix\Import\Import Class Reference</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="navtree.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="resize.js"></script>
+<script type="text/javascript" src="navtree.js"></script>
+<script type="text/javascript">
+ $(document).ready(initResizable);
+ $(window).load(resizeHeight);
+</script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/search.js"></script>
+<script type="text/javascript">
+ $(document).ready(function() { searchBox.OnSelectItem(0); });
+</script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+ <td id="projectlogo"><img alt="Logo" src="rm-64.png"/></td>
+ <td style="padding-left: 0.5em;">
+ <div id="projectname">The Red Matrix
+ </div>
+ </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.8.3.1 -->
+<script type="text/javascript">
+var searchBox = new SearchBox("searchBox", "search",false,'Search');
+</script>
+ <div id="navrow1" class="tabs">
+ <ul class="tablist">
+ <li><a href="index.html"><span>Main&#160;Page</span></a></li>
+ <li><a href="pages.html"><span>Related&#160;Pages</span></a></li>
+ <li><a href="namespaces.html"><span>Namespaces</span></a></li>
+ <li class="current"><a href="annotated.html"><span>Classes</span></a></li>
+ <li><a href="files.html"><span>Files</span></a></li>
+ <li>
+ <div id="MSearchBox" class="MSearchBoxInactive">
+ <span class="left">
+ <img id="MSearchSelect" src="search/mag_sel.png"
+ onmouseover="return searchBox.OnSearchSelectShow()"
+ onmouseout="return searchBox.OnSearchSelectHide()"
+ alt=""/>
+ <input type="text" id="MSearchField" value="Search" accesskey="S"
+ onfocus="searchBox.OnSearchFieldFocus(true)"
+ onblur="searchBox.OnSearchFieldFocus(false)"
+ onkeyup="searchBox.OnSearchFieldChange(event)"/>
+ </span><span class="right">
+ <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
+ </span>
+ </div>
+ </li>
+ </ul>
+ </div>
+ <div id="navrow2" class="tabs2">
+ <ul class="tablist">
+ <li><a href="annotated.html"><span>Class&#160;List</span></a></li>
+ <li><a href="classes.html"><span>Class&#160;Index</span></a></li>
+ <li><a href="hierarchy.html"><span>Class&#160;Hierarchy</span></a></li>
+ <li><a href="functions.html"><span>Class&#160;Members</span></a></li>
+ </ul>
+ </div>
+</div><!-- top -->
+<div id="side-nav" class="ui-resizable side-nav-resizable">
+ <div id="nav-tree">
+ <div id="nav-tree-contents">
+ <div id="nav-sync" class="sync"></div>
+ </div>
+ </div>
+ <div id="splitbar" style="-moz-user-select:none;"
+ class="ui-resizable-handle">
+ </div>
+</div>
+<script type="text/javascript">
+$(document).ready(function(){initNavTree('classRedMatrix_1_1Import_1_1Import.html','');});
+</script>
+<div id="doc-content">
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+ onmouseover="return searchBox.OnSearchSelectShow()"
+ onmouseout="return searchBox.OnSearchSelectHide()"
+ onkeydown="return searchBox.OnSearchSelectKey(event)">
+<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark">&#160;</span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark">&#160;</span>Classes</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark">&#160;</span>Namespaces</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark">&#160;</span>Files</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark">&#160;</span>Functions</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark">&#160;</span>Variables</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark">&#160;</span>Pages</a></div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<iframe src="javascript:void(0)" frameborder="0"
+ name="MSearchResults" id="MSearchResults">
+</iframe>
+</div>
+
+<div class="header">
+ <div class="summary">
+<a href="#pub-methods">Public Member Functions</a> &#124;
+<a href="#pro-attribs">Protected Attributes</a> &#124;
+<a href="#pri-attribs">Private Attributes</a> &#124;
+<a href="classRedMatrix_1_1Import_1_1Import-members.html">List of all members</a> </div>
+ <div class="headertitle">
+<div class="title">RedMatrix\Import\Import Class Reference</div> </div>
+</div><!--header-->
+<div class="contents">
+<table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-methods"></a>
+Public Member Functions</h2></td></tr>
+<tr class="memitem:a24134929d9a8a682da2036a0bf326367"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classRedMatrix_1_1Import_1_1Import.html#a24134929d9a8a682da2036a0bf326367">get_credentials</a> ()</td></tr>
+<tr class="separator:a24134929d9a8a682da2036a0bf326367"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a855cd5a79b95d269ae8737fae774e3bc"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classRedMatrix_1_1Import_1_1Import.html#a855cd5a79b95d269ae8737fae774e3bc">get_itemlist</a> ()</td></tr>
+<tr class="separator:a855cd5a79b95d269ae8737fae774e3bc"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a772c28edf36aaf8e66007a95004c4059"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classRedMatrix_1_1Import_1_1Import.html#a772c28edf36aaf8e66007a95004c4059">get_item_ident</a> ($item)</td></tr>
+<tr class="separator:a772c28edf36aaf8e66007a95004c4059"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a27987a41cb703a796f1821baeb4774a2"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classRedMatrix_1_1Import_1_1Import.html#a27987a41cb703a796f1821baeb4774a2">get_item</a> ($item_ident)</td></tr>
+<tr class="separator:a27987a41cb703a796f1821baeb4774a2"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ae3c6472bea1a44025bc2e152604eb20c"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classRedMatrix_1_1Import_1_1Import.html#ae3c6472bea1a44025bc2e152604eb20c">get_taxonomy</a> ($item_ident)</td></tr>
+<tr class="separator:ae3c6472bea1a44025bc2e152604eb20c"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a57561904b0f127e0d9a3e2c33688daf8"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classRedMatrix_1_1Import_1_1Import.html#a57561904b0f127e0d9a3e2c33688daf8">get_children</a> ($item_ident)</td></tr>
+<tr class="separator:a57561904b0f127e0d9a3e2c33688daf8"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a107703a43a1b0ceb2af7ae470cb3f218"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classRedMatrix_1_1Import_1_1Import.html#a107703a43a1b0ceb2af7ae470cb3f218">convert_item</a> ($item_ident)</td></tr>
+<tr class="separator:a107703a43a1b0ceb2af7ae470cb3f218"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:addf6e53dacd971eaab49be4b17a767d6"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classRedMatrix_1_1Import_1_1Import.html#addf6e53dacd971eaab49be4b17a767d6">convert_taxonomy</a> ($item_ident)</td></tr>
+<tr class="separator:addf6e53dacd971eaab49be4b17a767d6"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a5434325afb2c633c52540127d717800a"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classRedMatrix_1_1Import_1_1Import.html#a5434325afb2c633c52540127d717800a">convert_child</a> ($child)</td></tr>
+<tr class="separator:a5434325afb2c633c52540127d717800a"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a33ed595de044c0ec1cd84cca719e31dc"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classRedMatrix_1_1Import_1_1Import.html#a33ed595de044c0ec1cd84cca719e31dc">store</a> ($item, $update=false)</td></tr>
+<tr class="separator:a33ed595de044c0ec1cd84cca719e31dc"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a8d138a9a7d4f79b81d3446ca216a602c"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classRedMatrix_1_1Import_1_1Import.html#a8d138a9a7d4f79b81d3446ca216a602c">run</a> ()</td></tr>
+<tr class="separator:a8d138a9a7d4f79b81d3446ca216a602c"><td class="memSeparator" colspan="2">&#160;</td></tr>
+</table><table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pro-attribs"></a>
+Protected Attributes</h2></td></tr>
+<tr class="memitem:ad0d2bdc3b388220479063915b4f5c2fc"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classRedMatrix_1_1Import_1_1Import.html#ad0d2bdc3b388220479063915b4f5c2fc">$itemlist</a> = null</td></tr>
+<tr class="separator:ad0d2bdc3b388220479063915b4f5c2fc"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a88c2eeba8d0cba3e7c12a2c45ba0fbc6"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classRedMatrix_1_1Import_1_1Import.html#a88c2eeba8d0cba3e7c12a2c45ba0fbc6">$src_items</a> = null</td></tr>
+<tr class="separator:a88c2eeba8d0cba3e7c12a2c45ba0fbc6"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a0a05dac405ccc5b617b7b7b3c8ed783c"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classRedMatrix_1_1Import_1_1Import.html#a0a05dac405ccc5b617b7b7b3c8ed783c">$items</a> = null</td></tr>
+<tr class="separator:a0a05dac405ccc5b617b7b7b3c8ed783c"><td class="memSeparator" colspan="2">&#160;</td></tr>
+</table><table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pri-attribs"></a>
+Private Attributes</h2></td></tr>
+<tr class="memitem:a864aac9fadb4846f5d9f840e8e0f440f"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classRedMatrix_1_1Import_1_1Import.html#a864aac9fadb4846f5d9f840e8e0f440f">$credentials</a> = null</td></tr>
+<tr class="separator:a864aac9fadb4846f5d9f840e8e0f440f"><td class="memSeparator" colspan="2">&#160;</td></tr>
+</table>
+<h2 class="groupheader">Member Function Documentation</h2>
+<a class="anchor" id="a5434325afb2c633c52540127d717800a"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">RedMatrix\Import\Import::convert_child </td>
+ <td>(</td>
+ <td class="paramtype">&#160;</td>
+ <td class="paramname"><em>$child</em></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p>Referenced by <a class="el" href="classRedMatrix_1_1Import_1_1Import.html#a8d138a9a7d4f79b81d3446ca216a602c">RedMatrix\Import\Import\run()</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a107703a43a1b0ceb2af7ae470cb3f218"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">RedMatrix\Import\Import::convert_item </td>
+ <td>(</td>
+ <td class="paramtype">&#160;</td>
+ <td class="paramname"><em>$item_ident</em></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p>Referenced by <a class="el" href="classRedMatrix_1_1Import_1_1Import.html#a8d138a9a7d4f79b81d3446ca216a602c">RedMatrix\Import\Import\run()</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="addf6e53dacd971eaab49be4b17a767d6"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">RedMatrix\Import\Import::convert_taxonomy </td>
+ <td>(</td>
+ <td class="paramtype">&#160;</td>
+ <td class="paramname"><em>$item_ident</em></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p>Referenced by <a class="el" href="classRedMatrix_1_1Import_1_1Import.html#a8d138a9a7d4f79b81d3446ca216a602c">RedMatrix\Import\Import\run()</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a57561904b0f127e0d9a3e2c33688daf8"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">RedMatrix\Import\Import::get_children </td>
+ <td>(</td>
+ <td class="paramtype">&#160;</td>
+ <td class="paramname"><em>$item_ident</em></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p>Referenced by <a class="el" href="classRedMatrix_1_1Import_1_1Import.html#a8d138a9a7d4f79b81d3446ca216a602c">RedMatrix\Import\Import\run()</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a24134929d9a8a682da2036a0bf326367"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">RedMatrix\Import\Import::get_credentials </td>
+ <td>(</td>
+ <td class="paramname"></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p>Referenced by <a class="el" href="classRedMatrix_1_1Import_1_1Import.html#a8d138a9a7d4f79b81d3446ca216a602c">RedMatrix\Import\Import\run()</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a27987a41cb703a796f1821baeb4774a2"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">RedMatrix\Import\Import::get_item </td>
+ <td>(</td>
+ <td class="paramtype">&#160;</td>
+ <td class="paramname"><em>$item_ident</em></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p>Referenced by <a class="el" href="classRedMatrix_1_1Import_1_1Import.html#a8d138a9a7d4f79b81d3446ca216a602c">RedMatrix\Import\Import\run()</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a772c28edf36aaf8e66007a95004c4059"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">RedMatrix\Import\Import::get_item_ident </td>
+ <td>(</td>
+ <td class="paramtype">&#160;</td>
+ <td class="paramname"><em>$item</em></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+</div>
+</div>
+<a class="anchor" id="a855cd5a79b95d269ae8737fae774e3bc"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">RedMatrix\Import\Import::get_itemlist </td>
+ <td>(</td>
+ <td class="paramname"></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p>Referenced by <a class="el" href="classRedMatrix_1_1Import_1_1Import.html#a8d138a9a7d4f79b81d3446ca216a602c">RedMatrix\Import\Import\run()</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="ae3c6472bea1a44025bc2e152604eb20c"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">RedMatrix\Import\Import::get_taxonomy </td>
+ <td>(</td>
+ <td class="paramtype">&#160;</td>
+ <td class="paramname"><em>$item_ident</em></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p>Referenced by <a class="el" href="classRedMatrix_1_1Import_1_1Import.html#a8d138a9a7d4f79b81d3446ca216a602c">RedMatrix\Import\Import\run()</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a8d138a9a7d4f79b81d3446ca216a602c"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">RedMatrix\Import\Import::run </td>
+ <td>(</td>
+ <td class="paramname"></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+</div>
+</div>
+<a class="anchor" id="a33ed595de044c0ec1cd84cca719e31dc"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">RedMatrix\Import\Import::store </td>
+ <td>(</td>
+ <td class="paramtype">&#160;</td>
+ <td class="paramname"><em>$item</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">&#160;</td>
+ <td class="paramname"><em>$update</em> = <code>false</code>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+</div>
+</div>
+<h2 class="groupheader">Member Data Documentation</h2>
+<a class="anchor" id="a864aac9fadb4846f5d9f840e8e0f440f"></a>
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+ <tr>
+ <td class="mlabels-left">
+ <table class="memname">
+ <tr>
+ <td class="memname">RedMatrix\Import\Import::$credentials = null</td>
+ </tr>
+ </table>
+ </td>
+ <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">private</span></span> </td>
+ </tr>
+</table>
+</div><div class="memdoc">
+
+<p>Referenced by <a class="el" href="classRedMatrix_1_1Import_1_1Import.html#a24134929d9a8a682da2036a0bf326367">RedMatrix\Import\Import\get_credentials()</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="ad0d2bdc3b388220479063915b4f5c2fc"></a>
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+ <tr>
+ <td class="mlabels-left">
+ <table class="memname">
+ <tr>
+ <td class="memname">RedMatrix\Import\Import::$itemlist = null</td>
+ </tr>
+ </table>
+ </td>
+ <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">protected</span></span> </td>
+ </tr>
+</table>
+</div><div class="memdoc">
+
+<p>Referenced by <a class="el" href="classRedMatrix_1_1Import_1_1Import.html#a855cd5a79b95d269ae8737fae774e3bc">RedMatrix\Import\Import\get_itemlist()</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a0a05dac405ccc5b617b7b7b3c8ed783c"></a>
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+ <tr>
+ <td class="mlabels-left">
+ <table class="memname">
+ <tr>
+ <td class="memname">RedMatrix\Import\Import::$items = null</td>
+ </tr>
+ </table>
+ </td>
+ <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">protected</span></span> </td>
+ </tr>
+</table>
+</div><div class="memdoc">
+
+</div>
+</div>
+<a class="anchor" id="a88c2eeba8d0cba3e7c12a2c45ba0fbc6"></a>
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+ <tr>
+ <td class="mlabels-left">
+ <table class="memname">
+ <tr>
+ <td class="memname">RedMatrix\Import\Import::$src_items = null</td>
+ </tr>
+ </table>
+ </td>
+ <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">protected</span></span> </td>
+ </tr>
+</table>
+</div><div class="memdoc">
+
+</div>
+</div>
+<hr/>The documentation for this class was generated from the following file:<ul>
+<li>include/Import/<a class="el" href="Importer_8php.html">Importer.php</a></li>
+</ul>
+</div><!-- contents -->
+</div><!-- doc-content -->
+
diff --git a/doc/html/classRedMatrix_1_1Import_1_1Import.js b/doc/html/classRedMatrix_1_1Import_1_1Import.js
new file mode 100644
index 000000000..03e429289
--- /dev/null
+++ b/doc/html/classRedMatrix_1_1Import_1_1Import.js
@@ -0,0 +1,18 @@
+var classRedMatrix_1_1Import_1_1Import =
+[
+ [ "convert_child", "classRedMatrix_1_1Import_1_1Import.html#a5434325afb2c633c52540127d717800a", null ],
+ [ "convert_item", "classRedMatrix_1_1Import_1_1Import.html#a107703a43a1b0ceb2af7ae470cb3f218", null ],
+ [ "convert_taxonomy", "classRedMatrix_1_1Import_1_1Import.html#addf6e53dacd971eaab49be4b17a767d6", null ],
+ [ "get_children", "classRedMatrix_1_1Import_1_1Import.html#a57561904b0f127e0d9a3e2c33688daf8", null ],
+ [ "get_credentials", "classRedMatrix_1_1Import_1_1Import.html#a24134929d9a8a682da2036a0bf326367", null ],
+ [ "get_item", "classRedMatrix_1_1Import_1_1Import.html#a27987a41cb703a796f1821baeb4774a2", null ],
+ [ "get_item_ident", "classRedMatrix_1_1Import_1_1Import.html#a772c28edf36aaf8e66007a95004c4059", null ],
+ [ "get_itemlist", "classRedMatrix_1_1Import_1_1Import.html#a855cd5a79b95d269ae8737fae774e3bc", null ],
+ [ "get_taxonomy", "classRedMatrix_1_1Import_1_1Import.html#ae3c6472bea1a44025bc2e152604eb20c", null ],
+ [ "run", "classRedMatrix_1_1Import_1_1Import.html#a8d138a9a7d4f79b81d3446ca216a602c", null ],
+ [ "store", "classRedMatrix_1_1Import_1_1Import.html#a33ed595de044c0ec1cd84cca719e31dc", null ],
+ [ "$credentials", "classRedMatrix_1_1Import_1_1Import.html#a864aac9fadb4846f5d9f840e8e0f440f", null ],
+ [ "$itemlist", "classRedMatrix_1_1Import_1_1Import.html#ad0d2bdc3b388220479063915b4f5c2fc", null ],
+ [ "$items", "classRedMatrix_1_1Import_1_1Import.html#a0a05dac405ccc5b617b7b7b3c8ed783c", null ],
+ [ "$src_items", "classRedMatrix_1_1Import_1_1Import.html#a88c2eeba8d0cba3e7c12a2c45ba0fbc6", null ]
+]; \ No newline at end of file
diff --git a/doc/html/classRedMatrix_1_1RedDAV_1_1RedBasicAuth-members.html b/doc/html/classRedMatrix_1_1RedDAV_1_1RedBasicAuth-members.html
new file mode 100644
index 000000000..f2f77b15f
--- /dev/null
+++ b/doc/html/classRedMatrix_1_1RedDAV_1_1RedBasicAuth-members.html
@@ -0,0 +1,133 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<meta name="generator" content="Doxygen 1.8.3.1"/>
+<title>The Red Matrix: Member List</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="navtree.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="resize.js"></script>
+<script type="text/javascript" src="navtree.js"></script>
+<script type="text/javascript">
+ $(document).ready(initResizable);
+ $(window).load(resizeHeight);
+</script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/search.js"></script>
+<script type="text/javascript">
+ $(document).ready(function() { searchBox.OnSelectItem(0); });
+</script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+ <td id="projectlogo"><img alt="Logo" src="rm-64.png"/></td>
+ <td style="padding-left: 0.5em;">
+ <div id="projectname">The Red Matrix
+ </div>
+ </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.8.3.1 -->
+<script type="text/javascript">
+var searchBox = new SearchBox("searchBox", "search",false,'Search');
+</script>
+ <div id="navrow1" class="tabs">
+ <ul class="tablist">
+ <li><a href="index.html"><span>Main&#160;Page</span></a></li>
+ <li><a href="pages.html"><span>Related&#160;Pages</span></a></li>
+ <li><a href="namespaces.html"><span>Namespaces</span></a></li>
+ <li class="current"><a href="annotated.html"><span>Classes</span></a></li>
+ <li><a href="files.html"><span>Files</span></a></li>
+ <li>
+ <div id="MSearchBox" class="MSearchBoxInactive">
+ <span class="left">
+ <img id="MSearchSelect" src="search/mag_sel.png"
+ onmouseover="return searchBox.OnSearchSelectShow()"
+ onmouseout="return searchBox.OnSearchSelectHide()"
+ alt=""/>
+ <input type="text" id="MSearchField" value="Search" accesskey="S"
+ onfocus="searchBox.OnSearchFieldFocus(true)"
+ onblur="searchBox.OnSearchFieldFocus(false)"
+ onkeyup="searchBox.OnSearchFieldChange(event)"/>
+ </span><span class="right">
+ <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
+ </span>
+ </div>
+ </li>
+ </ul>
+ </div>
+ <div id="navrow2" class="tabs2">
+ <ul class="tablist">
+ <li><a href="annotated.html"><span>Class&#160;List</span></a></li>
+ <li><a href="classes.html"><span>Class&#160;Index</span></a></li>
+ <li><a href="hierarchy.html"><span>Class&#160;Hierarchy</span></a></li>
+ <li><a href="functions.html"><span>Class&#160;Members</span></a></li>
+ </ul>
+ </div>
+</div><!-- top -->
+<div id="side-nav" class="ui-resizable side-nav-resizable">
+ <div id="nav-tree">
+ <div id="nav-tree-contents">
+ <div id="nav-sync" class="sync"></div>
+ </div>
+ </div>
+ <div id="splitbar" style="-moz-user-select:none;"
+ class="ui-resizable-handle">
+ </div>
+</div>
+<script type="text/javascript">
+$(document).ready(function(){initNavTree('classRedMatrix_1_1RedDAV_1_1RedBasicAuth.html','');});
+</script>
+<div id="doc-content">
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+ onmouseover="return searchBox.OnSearchSelectShow()"
+ onmouseout="return searchBox.OnSearchSelectHide()"
+ onkeydown="return searchBox.OnSearchSelectKey(event)">
+<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark">&#160;</span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark">&#160;</span>Classes</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark">&#160;</span>Namespaces</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark">&#160;</span>Files</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark">&#160;</span>Functions</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark">&#160;</span>Variables</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark">&#160;</span>Pages</a></div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<iframe src="javascript:void(0)" frameborder="0"
+ name="MSearchResults" id="MSearchResults">
+</iframe>
+</div>
+
+<div class="header">
+ <div class="headertitle">
+<div class="title">RedMatrix\RedDAV\RedBasicAuth Member List</div> </div>
+</div><!--header-->
+<div class="contents">
+
+<p>This is the complete list of members for <a class="el" href="classRedMatrix_1_1RedDAV_1_1RedBasicAuth.html">RedMatrix\RedDAV\RedBasicAuth</a>, including all inherited members.</p>
+<table class="directory">
+ <tr class="even"><td class="entry"><a class="el" href="classRedMatrix_1_1RedDAV_1_1RedBasicAuth.html#a167ae032bd2ad8e6caa2e1e1a6f1b5d3">$browser</a></td><td class="entry"><a class="el" href="classRedMatrix_1_1RedDAV_1_1RedBasicAuth.html">RedMatrix\RedDAV\RedBasicAuth</a></td><td class="entry"></td></tr>
+ <tr><td class="entry"><a class="el" href="classRedMatrix_1_1RedDAV_1_1RedBasicAuth.html#a112ad78a863dc0e598b5f02c596798c0">$channel_hash</a></td><td class="entry"><a class="el" href="classRedMatrix_1_1RedDAV_1_1RedBasicAuth.html">RedMatrix\RedDAV\RedBasicAuth</a></td><td class="entry"></td></tr>
+ <tr class="even"><td class="entry"><a class="el" href="classRedMatrix_1_1RedDAV_1_1RedBasicAuth.html#abe1defedb90ac8e3b6487e124e625521">$channel_id</a></td><td class="entry"><a class="el" href="classRedMatrix_1_1RedDAV_1_1RedBasicAuth.html">RedMatrix\RedDAV\RedBasicAuth</a></td><td class="entry"></td></tr>
+ <tr><td class="entry"><a class="el" href="classRedMatrix_1_1RedDAV_1_1RedBasicAuth.html#a76fdb7fd5dd7376155abb5a58cd6fd69">$channel_name</a></td><td class="entry"><a class="el" href="classRedMatrix_1_1RedDAV_1_1RedBasicAuth.html">RedMatrix\RedDAV\RedBasicAuth</a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
+ <tr class="even"><td class="entry"><a class="el" href="classRedMatrix_1_1RedDAV_1_1RedBasicAuth.html#a605aa09565a097316b80f0d17d6b5823">$observer</a></td><td class="entry"><a class="el" href="classRedMatrix_1_1RedDAV_1_1RedBasicAuth.html">RedMatrix\RedDAV\RedBasicAuth</a></td><td class="entry"></td></tr>
+ <tr><td class="entry"><a class="el" href="classRedMatrix_1_1RedDAV_1_1RedBasicAuth.html#a1a23c349cc4699a8474505972684ea9c">$owner_id</a></td><td class="entry"><a class="el" href="classRedMatrix_1_1RedDAV_1_1RedBasicAuth.html">RedMatrix\RedDAV\RedBasicAuth</a></td><td class="entry"></td></tr>
+ <tr class="even"><td class="entry"><a class="el" href="classRedMatrix_1_1RedDAV_1_1RedBasicAuth.html#aad0ef0cc05c407de84dbfbf2050bbbbe">$owner_nick</a></td><td class="entry"><a class="el" href="classRedMatrix_1_1RedDAV_1_1RedBasicAuth.html">RedMatrix\RedDAV\RedBasicAuth</a></td><td class="entry"></td></tr>
+ <tr><td class="entry"><a class="el" href="classRedMatrix_1_1RedDAV_1_1RedBasicAuth.html#a849c99cf0a7ad065d630c8a30106ad5e">$timezone</a></td><td class="entry"><a class="el" href="classRedMatrix_1_1RedDAV_1_1RedBasicAuth.html">RedMatrix\RedDAV\RedBasicAuth</a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
+ <tr class="even"><td class="entry"><a class="el" href="classRedMatrix_1_1RedDAV_1_1RedBasicAuth.html#aa0b2a5fa9186d7dc0e637f1ecb379c42">getCurrentUser</a>()</td><td class="entry"><a class="el" href="classRedMatrix_1_1RedDAV_1_1RedBasicAuth.html">RedMatrix\RedDAV\RedBasicAuth</a></td><td class="entry"></td></tr>
+ <tr><td class="entry"><a class="el" href="classRedMatrix_1_1RedDAV_1_1RedBasicAuth.html#a6333c8ce58998bd11bf8102afe3b0748">getTimezone</a>()</td><td class="entry"><a class="el" href="classRedMatrix_1_1RedDAV_1_1RedBasicAuth.html">RedMatrix\RedDAV\RedBasicAuth</a></td><td class="entry"></td></tr>
+ <tr class="even"><td class="entry"><a class="el" href="classRedMatrix_1_1RedDAV_1_1RedBasicAuth.html#abf6fe89b0a8239ed93c3b07e1fbce75b">log</a>()</td><td class="entry"><a class="el" href="classRedMatrix_1_1RedDAV_1_1RedBasicAuth.html">RedMatrix\RedDAV\RedBasicAuth</a></td><td class="entry"></td></tr>
+ <tr><td class="entry"><a class="el" href="classRedMatrix_1_1RedDAV_1_1RedBasicAuth.html#a2926fe923baade564f2663632fa8c633">setAuthenticated</a>($r)</td><td class="entry"><a class="el" href="classRedMatrix_1_1RedDAV_1_1RedBasicAuth.html">RedMatrix\RedDAV\RedBasicAuth</a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
+ <tr class="even"><td class="entry"><a class="el" href="classRedMatrix_1_1RedDAV_1_1RedBasicAuth.html#adc72f36f0b2b17b20ea4df900afcd697">setBrowserPlugin</a>($browser)</td><td class="entry"><a class="el" href="classRedMatrix_1_1RedDAV_1_1RedBasicAuth.html">RedMatrix\RedDAV\RedBasicAuth</a></td><td class="entry"></td></tr>
+ <tr><td class="entry"><a class="el" href="classRedMatrix_1_1RedDAV_1_1RedBasicAuth.html#aadce020fb595c7943829d7f995d3f998">setCurrentUser</a>($name)</td><td class="entry"><a class="el" href="classRedMatrix_1_1RedDAV_1_1RedBasicAuth.html">RedMatrix\RedDAV\RedBasicAuth</a></td><td class="entry"></td></tr>
+ <tr class="even"><td class="entry"><a class="el" href="classRedMatrix_1_1RedDAV_1_1RedBasicAuth.html#af6d239fefed05859327ee8db626703f9">setTimezone</a>($timezone)</td><td class="entry"><a class="el" href="classRedMatrix_1_1RedDAV_1_1RedBasicAuth.html">RedMatrix\RedDAV\RedBasicAuth</a></td><td class="entry"></td></tr>
+ <tr><td class="entry"><a class="el" href="classRedMatrix_1_1RedDAV_1_1RedBasicAuth.html#a6ece02655b780469e59e204c5979a624">validateUserPass</a>($username, $password)</td><td class="entry"><a class="el" href="classRedMatrix_1_1RedDAV_1_1RedBasicAuth.html">RedMatrix\RedDAV\RedBasicAuth</a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
+</table></div><!-- contents -->
+</div><!-- doc-content -->
+
diff --git a/doc/html/classRedMatrix_1_1RedDAV_1_1RedBasicAuth.html b/doc/html/classRedMatrix_1_1RedDAV_1_1RedBasicAuth.html
new file mode 100644
index 000000000..732ee436e
--- /dev/null
+++ b/doc/html/classRedMatrix_1_1RedDAV_1_1RedBasicAuth.html
@@ -0,0 +1,519 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<meta name="generator" content="Doxygen 1.8.3.1"/>
+<title>The Red Matrix: RedMatrix\RedDAV\RedBasicAuth Class Reference</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="navtree.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="resize.js"></script>
+<script type="text/javascript" src="navtree.js"></script>
+<script type="text/javascript">
+ $(document).ready(initResizable);
+ $(window).load(resizeHeight);
+</script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/search.js"></script>
+<script type="text/javascript">
+ $(document).ready(function() { searchBox.OnSelectItem(0); });
+</script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+ <td id="projectlogo"><img alt="Logo" src="rm-64.png"/></td>
+ <td style="padding-left: 0.5em;">
+ <div id="projectname">The Red Matrix
+ </div>
+ </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.8.3.1 -->
+<script type="text/javascript">
+var searchBox = new SearchBox("searchBox", "search",false,'Search');
+</script>
+ <div id="navrow1" class="tabs">
+ <ul class="tablist">
+ <li><a href="index.html"><span>Main&#160;Page</span></a></li>
+ <li><a href="pages.html"><span>Related&#160;Pages</span></a></li>
+ <li><a href="namespaces.html"><span>Namespaces</span></a></li>
+ <li class="current"><a href="annotated.html"><span>Classes</span></a></li>
+ <li><a href="files.html"><span>Files</span></a></li>
+ <li>
+ <div id="MSearchBox" class="MSearchBoxInactive">
+ <span class="left">
+ <img id="MSearchSelect" src="search/mag_sel.png"
+ onmouseover="return searchBox.OnSearchSelectShow()"
+ onmouseout="return searchBox.OnSearchSelectHide()"
+ alt=""/>
+ <input type="text" id="MSearchField" value="Search" accesskey="S"
+ onfocus="searchBox.OnSearchFieldFocus(true)"
+ onblur="searchBox.OnSearchFieldFocus(false)"
+ onkeyup="searchBox.OnSearchFieldChange(event)"/>
+ </span><span class="right">
+ <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
+ </span>
+ </div>
+ </li>
+ </ul>
+ </div>
+ <div id="navrow2" class="tabs2">
+ <ul class="tablist">
+ <li><a href="annotated.html"><span>Class&#160;List</span></a></li>
+ <li><a href="classes.html"><span>Class&#160;Index</span></a></li>
+ <li><a href="hierarchy.html"><span>Class&#160;Hierarchy</span></a></li>
+ <li><a href="functions.html"><span>Class&#160;Members</span></a></li>
+ </ul>
+ </div>
+</div><!-- top -->
+<div id="side-nav" class="ui-resizable side-nav-resizable">
+ <div id="nav-tree">
+ <div id="nav-tree-contents">
+ <div id="nav-sync" class="sync"></div>
+ </div>
+ </div>
+ <div id="splitbar" style="-moz-user-select:none;"
+ class="ui-resizable-handle">
+ </div>
+</div>
+<script type="text/javascript">
+$(document).ready(function(){initNavTree('classRedMatrix_1_1RedDAV_1_1RedBasicAuth.html','');});
+</script>
+<div id="doc-content">
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+ onmouseover="return searchBox.OnSearchSelectShow()"
+ onmouseout="return searchBox.OnSearchSelectHide()"
+ onkeydown="return searchBox.OnSearchSelectKey(event)">
+<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark">&#160;</span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark">&#160;</span>Classes</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark">&#160;</span>Namespaces</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark">&#160;</span>Files</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark">&#160;</span>Functions</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark">&#160;</span>Variables</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark">&#160;</span>Pages</a></div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<iframe src="javascript:void(0)" frameborder="0"
+ name="MSearchResults" id="MSearchResults">
+</iframe>
+</div>
+
+<div class="header">
+ <div class="summary">
+<a href="#pub-methods">Public Member Functions</a> &#124;
+<a href="#pub-attribs">Public Attributes</a> &#124;
+<a href="#pro-methods">Protected Member Functions</a> &#124;
+<a href="#pro-attribs">Protected Attributes</a> &#124;
+<a href="classRedMatrix_1_1RedDAV_1_1RedBasicAuth-members.html">List of all members</a> </div>
+ <div class="headertitle">
+<div class="title">RedMatrix\RedDAV\RedBasicAuth Class Reference</div> </div>
+</div><!--header-->
+<div class="contents">
+
+<p>Authentication backend class for <a class="el" href="namespaceRedMatrix_1_1RedDAV.html">RedDAV</a>.
+ <a href="classRedMatrix_1_1RedDAV_1_1RedBasicAuth.html#details">More...</a></p>
+<div class="dynheader">
+Inheritance diagram for RedMatrix\RedDAV\RedBasicAuth:</div>
+<div class="dyncontent">
+ <div class="center">
+ <img src="classRedMatrix_1_1RedDAV_1_1RedBasicAuth.png" usemap="#RedMatrix\RedDAV\RedBasicAuth_map" alt=""/>
+ <map id="RedMatrix\RedDAV\RedBasicAuth_map" name="RedMatrix\RedDAV\RedBasicAuth_map">
+</map>
+ </div></div>
+<table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-methods"></a>
+Public Member Functions</h2></td></tr>
+<tr class="memitem:aadce020fb595c7943829d7f995d3f998"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classRedMatrix_1_1RedDAV_1_1RedBasicAuth.html#aadce020fb595c7943829d7f995d3f998">setCurrentUser</a> ($name)</td></tr>
+<tr class="separator:aadce020fb595c7943829d7f995d3f998"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:aa0b2a5fa9186d7dc0e637f1ecb379c42"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classRedMatrix_1_1RedDAV_1_1RedBasicAuth.html#aa0b2a5fa9186d7dc0e637f1ecb379c42">getCurrentUser</a> ()</td></tr>
+<tr class="separator:aa0b2a5fa9186d7dc0e637f1ecb379c42"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:af6d239fefed05859327ee8db626703f9"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classRedMatrix_1_1RedDAV_1_1RedBasicAuth.html#af6d239fefed05859327ee8db626703f9">setTimezone</a> ($timezone)</td></tr>
+<tr class="memdesc:af6d239fefed05859327ee8db626703f9"><td class="mdescLeft">&#160;</td><td class="mdescRight">Sets the timezone from the channel in <a class="el" href="classRedMatrix_1_1RedDAV_1_1RedBasicAuth.html" title="Authentication backend class for RedDAV.">RedBasicAuth</a>. <a href="#af6d239fefed05859327ee8db626703f9">More...</a><br/></td></tr>
+<tr class="separator:af6d239fefed05859327ee8db626703f9"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a6333c8ce58998bd11bf8102afe3b0748"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classRedMatrix_1_1RedDAV_1_1RedBasicAuth.html#a6333c8ce58998bd11bf8102afe3b0748">getTimezone</a> ()</td></tr>
+<tr class="memdesc:a6333c8ce58998bd11bf8102afe3b0748"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the timezone. <a href="#a6333c8ce58998bd11bf8102afe3b0748">More...</a><br/></td></tr>
+<tr class="separator:a6333c8ce58998bd11bf8102afe3b0748"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:adc72f36f0b2b17b20ea4df900afcd697"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classRedMatrix_1_1RedDAV_1_1RedBasicAuth.html#adc72f36f0b2b17b20ea4df900afcd697">setBrowserPlugin</a> ($browser)</td></tr>
+<tr class="memdesc:adc72f36f0b2b17b20ea4df900afcd697"><td class="mdescLeft">&#160;</td><td class="mdescRight">Set browser plugin for SabreDAV. <a href="#adc72f36f0b2b17b20ea4df900afcd697">More...</a><br/></td></tr>
+<tr class="separator:adc72f36f0b2b17b20ea4df900afcd697"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:abf6fe89b0a8239ed93c3b07e1fbce75b"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classRedMatrix_1_1RedDAV_1_1RedBasicAuth.html#abf6fe89b0a8239ed93c3b07e1fbce75b">log</a> ()</td></tr>
+<tr class="memdesc:abf6fe89b0a8239ed93c3b07e1fbce75b"><td class="mdescLeft">&#160;</td><td class="mdescRight">Prints out all <a class="el" href="classRedMatrix_1_1RedDAV_1_1RedBasicAuth.html" title="Authentication backend class for RedDAV.">RedBasicAuth</a> variables to <a class="el" href="text_8php.html#a030fa5ecc64168af0c4f44897a9bce63" title="Logging function for RedMatrix.">logger()</a>. <a href="#abf6fe89b0a8239ed93c3b07e1fbce75b">More...</a><br/></td></tr>
+<tr class="separator:abf6fe89b0a8239ed93c3b07e1fbce75b"><td class="memSeparator" colspan="2">&#160;</td></tr>
+</table><table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-attribs"></a>
+Public Attributes</h2></td></tr>
+<tr class="memitem:abe1defedb90ac8e3b6487e124e625521"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classRedMatrix_1_1RedDAV_1_1RedBasicAuth.html#abe1defedb90ac8e3b6487e124e625521">$channel_id</a> = 0</td></tr>
+<tr class="separator:abe1defedb90ac8e3b6487e124e625521"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a112ad78a863dc0e598b5f02c596798c0"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classRedMatrix_1_1RedDAV_1_1RedBasicAuth.html#a112ad78a863dc0e598b5f02c596798c0">$channel_hash</a> = ''</td></tr>
+<tr class="separator:a112ad78a863dc0e598b5f02c596798c0"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a605aa09565a097316b80f0d17d6b5823"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classRedMatrix_1_1RedDAV_1_1RedBasicAuth.html#a605aa09565a097316b80f0d17d6b5823">$observer</a> = ''</td></tr>
+<tr class="separator:a605aa09565a097316b80f0d17d6b5823"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a167ae032bd2ad8e6caa2e1e1a6f1b5d3"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classRedMatrix_1_1RedDAV_1_1RedBasicAuth.html#a167ae032bd2ad8e6caa2e1e1a6f1b5d3">$browser</a></td></tr>
+<tr class="separator:a167ae032bd2ad8e6caa2e1e1a6f1b5d3"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a1a23c349cc4699a8474505972684ea9c"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classRedMatrix_1_1RedDAV_1_1RedBasicAuth.html#a1a23c349cc4699a8474505972684ea9c">$owner_id</a> = 0</td></tr>
+<tr class="separator:a1a23c349cc4699a8474505972684ea9c"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:aad0ef0cc05c407de84dbfbf2050bbbbe"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classRedMatrix_1_1RedDAV_1_1RedBasicAuth.html#aad0ef0cc05c407de84dbfbf2050bbbbe">$owner_nick</a> = ''</td></tr>
+<tr class="separator:aad0ef0cc05c407de84dbfbf2050bbbbe"><td class="memSeparator" colspan="2">&#160;</td></tr>
+</table><table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pro-methods"></a>
+Protected Member Functions</h2></td></tr>
+<tr class="memitem:a6ece02655b780469e59e204c5979a624"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classRedMatrix_1_1RedDAV_1_1RedBasicAuth.html#a6ece02655b780469e59e204c5979a624">validateUserPass</a> ($username, $password)</td></tr>
+<tr class="memdesc:a6ece02655b780469e59e204c5979a624"><td class="mdescLeft">&#160;</td><td class="mdescRight">Validates a username and password. <a href="#a6ece02655b780469e59e204c5979a624">More...</a><br/></td></tr>
+<tr class="separator:a6ece02655b780469e59e204c5979a624"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a2926fe923baade564f2663632fa8c633"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classRedMatrix_1_1RedDAV_1_1RedBasicAuth.html#a2926fe923baade564f2663632fa8c633">setAuthenticated</a> ($r)</td></tr>
+<tr class="memdesc:a2926fe923baade564f2663632fa8c633"><td class="mdescLeft">&#160;</td><td class="mdescRight">Sets variables and session parameters after successfull authentication. <a href="#a2926fe923baade564f2663632fa8c633">More...</a><br/></td></tr>
+<tr class="separator:a2926fe923baade564f2663632fa8c633"><td class="memSeparator" colspan="2">&#160;</td></tr>
+</table><table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pro-attribs"></a>
+Protected Attributes</h2></td></tr>
+<tr class="memitem:a76fdb7fd5dd7376155abb5a58cd6fd69"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classRedMatrix_1_1RedDAV_1_1RedBasicAuth.html#a76fdb7fd5dd7376155abb5a58cd6fd69">$channel_name</a> = null</td></tr>
+<tr class="separator:a76fdb7fd5dd7376155abb5a58cd6fd69"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a849c99cf0a7ad065d630c8a30106ad5e"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classRedMatrix_1_1RedDAV_1_1RedBasicAuth.html#a849c99cf0a7ad065d630c8a30106ad5e">$timezone</a> = ''</td></tr>
+<tr class="separator:a849c99cf0a7ad065d630c8a30106ad5e"><td class="memSeparator" colspan="2">&#160;</td></tr>
+</table>
+<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
+<div class="textblock"><p>Authentication backend class for <a class="el" href="namespaceRedMatrix_1_1RedDAV.html">RedDAV</a>. </p>
+<p>This class also contains some data which is not necessary for authentication like timezone settings.</p>
+<p><a class="el" href=""><a href="http://opensource.org/licenses/mit-license.php">http://opensource.org/licenses/mit-license.php</a> The MIT License (MIT) </a></p>
+</div><h2 class="groupheader">Member Function Documentation</h2>
+<a class="anchor" id="aa0b2a5fa9186d7dc0e637f1ecb379c42"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">RedMatrix\RedDAV\RedBasicAuth::getCurrentUser </td>
+ <td>(</td>
+ <td class="paramname"></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+<p>Returns information about the currently logged-in channel.</p>
+<p>If nobody is currently logged in, this method should return null.</p>
+<dl class="section see"><dt>See Also</dt><dd>::getCurrentUser </dd></dl>
+<dl class="section return"><dt>Returns</dt><dd>string|null </dd></dl>
+
+</div>
+</div>
+<a class="anchor" id="a6333c8ce58998bd11bf8102afe3b0748"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">RedMatrix\RedDAV\RedBasicAuth::getTimezone </td>
+ <td>(</td>
+ <td class="paramname"></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p>Returns the timezone. </p>
+<dl class="section return"><dt>Returns</dt><dd>string Return the channel's timezone. </dd></dl>
+
+</div>
+</div>
+<a class="anchor" id="abf6fe89b0a8239ed93c3b07e1fbce75b"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">RedMatrix\RedDAV\RedBasicAuth::log </td>
+ <td>(</td>
+ <td class="paramname"></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p>Prints out all <a class="el" href="classRedMatrix_1_1RedDAV_1_1RedBasicAuth.html" title="Authentication backend class for RedDAV.">RedBasicAuth</a> variables to <a class="el" href="text_8php.html#a030fa5ecc64168af0c4f44897a9bce63" title="Logging function for RedMatrix.">logger()</a>. </p>
+<dl class="section return"><dt>Returns</dt><dd>void </dd></dl>
+
+</div>
+</div>
+<a class="anchor" id="a2926fe923baade564f2663632fa8c633"></a>
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+ <tr>
+ <td class="mlabels-left">
+ <table class="memname">
+ <tr>
+ <td class="memname">RedMatrix\RedDAV\RedBasicAuth::setAuthenticated </td>
+ <td>(</td>
+ <td class="paramtype">&#160;</td>
+ <td class="paramname"><em>$r</em></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+ </td>
+ <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">protected</span></span> </td>
+ </tr>
+</table>
+</div><div class="memdoc">
+
+<p>Sets variables and session parameters after successfull authentication. </p>
+<dl class="params"><dt>Parameters</dt><dd>
+ <table class="params">
+ <tr><td class="paramtype">array</td><td class="paramname">$r</td><td>Array with the values for the authenticated channel. </td></tr>
+ </table>
+ </dd>
+</dl>
+<dl class="section return"><dt>Returns</dt><dd>bool </dd></dl>
+
+<p>Referenced by <a class="el" href="classRedMatrix_1_1RedDAV_1_1RedBasicAuth.html#a6ece02655b780469e59e204c5979a624">RedMatrix\RedDAV\RedBasicAuth\validateUserPass()</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="adc72f36f0b2b17b20ea4df900afcd697"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">RedMatrix\RedDAV\RedBasicAuth::setBrowserPlugin </td>
+ <td>(</td>
+ <td class="paramtype">&#160;</td>
+ <td class="paramname"><em>$browser</em></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p>Set browser plugin for SabreDAV. </p>
+<dl class="section see"><dt>See Also</dt><dd><a class="el" href="classRedMatrix_1_1RedDAV_1_1RedBrowser.html#aa1607857cb59738c4dce2fe8e73d8f19">RedBrowser::set_writeable()</a> </dd></dl>
+<dl class="params"><dt>Parameters</dt><dd>
+ <table class="params">
+ <tr><td class="paramtype">\Sabre\DAV\Browser\Plugin</td><td class="paramname">$browser</td><td></td></tr>
+ </table>
+ </dd>
+</dl>
+
+</div>
+</div>
+<a class="anchor" id="aadce020fb595c7943829d7f995d3f998"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">RedMatrix\RedDAV\RedBasicAuth::setCurrentUser </td>
+ <td>(</td>
+ <td class="paramtype">&#160;</td>
+ <td class="paramname"><em>$name</em></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+<p>Sets the channel_name from the currently logged-in channel.</p>
+<dl class="params"><dt>Parameters</dt><dd>
+ <table class="params">
+ <tr><td class="paramtype">string</td><td class="paramname">$name</td><td>The channel's name </td></tr>
+ </table>
+ </dd>
+</dl>
+
+</div>
+</div>
+<a class="anchor" id="af6d239fefed05859327ee8db626703f9"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">RedMatrix\RedDAV\RedBasicAuth::setTimezone </td>
+ <td>(</td>
+ <td class="paramtype">&#160;</td>
+ <td class="paramname"><em>$timezone</em></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p>Sets the timezone from the channel in <a class="el" href="classRedMatrix_1_1RedDAV_1_1RedBasicAuth.html" title="Authentication backend class for RedDAV.">RedBasicAuth</a>. </p>
+<p>Set in <a class="el" href="cloud_8php.html" title="Initialize RedMatrix&#39;s cloud (SabreDAV).">mod/cloud.php</a> if the channel has a timezone set.</p>
+<dl class="params"><dt>Parameters</dt><dd>
+ <table class="params">
+ <tr><td class="paramtype">string</td><td class="paramname">$timezone</td><td>The channel's timezone. </td></tr>
+ </table>
+ </dd>
+</dl>
+<dl class="section return"><dt>Returns</dt><dd>void </dd></dl>
+
+</div>
+</div>
+<a class="anchor" id="a6ece02655b780469e59e204c5979a624"></a>
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+ <tr>
+ <td class="mlabels-left">
+ <table class="memname">
+ <tr>
+ <td class="memname">RedMatrix\RedDAV\RedBasicAuth::validateUserPass </td>
+ <td>(</td>
+ <td class="paramtype">&#160;</td>
+ <td class="paramname"><em>$username</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">&#160;</td>
+ <td class="paramname"><em>$password</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+ </td>
+ <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">protected</span></span> </td>
+ </tr>
+</table>
+</div><div class="memdoc">
+
+<p>Validates a username and password. </p>
+<p>Guest access is granted with the password "+++".</p>
+<dl class="section see"><dt>See Also</dt><dd>::validateUserPass </dd></dl>
+<dl class="params"><dt>Parameters</dt><dd>
+ <table class="params">
+ <tr><td class="paramtype">string</td><td class="paramname">$username</td><td></td></tr>
+ <tr><td class="paramtype">string</td><td class="paramname">$password</td><td></td></tr>
+ </table>
+ </dd>
+</dl>
+<dl class="section return"><dt>Returns</dt><dd>bool </dd></dl>
+
+</div>
+</div>
+<h2 class="groupheader">Member Data Documentation</h2>
+<a class="anchor" id="a167ae032bd2ad8e6caa2e1e1a6f1b5d3"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">RedMatrix\RedDAV\RedBasicAuth::$browser</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p>Referenced by <a class="el" href="classRedMatrix_1_1RedDAV_1_1RedBasicAuth.html#adc72f36f0b2b17b20ea4df900afcd697">RedMatrix\RedDAV\RedBasicAuth\setBrowserPlugin()</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a112ad78a863dc0e598b5f02c596798c0"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">RedMatrix\RedDAV\RedBasicAuth::$channel_hash = ''</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+</div>
+</div>
+<a class="anchor" id="abe1defedb90ac8e3b6487e124e625521"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">RedMatrix\RedDAV\RedBasicAuth::$channel_id = 0</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+</div>
+</div>
+<a class="anchor" id="a76fdb7fd5dd7376155abb5a58cd6fd69"></a>
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+ <tr>
+ <td class="mlabels-left">
+ <table class="memname">
+ <tr>
+ <td class="memname">RedMatrix\RedDAV\RedBasicAuth::$channel_name = null</td>
+ </tr>
+ </table>
+ </td>
+ <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">protected</span></span> </td>
+ </tr>
+</table>
+</div><div class="memdoc">
+
+<p>Referenced by <a class="el" href="classRedMatrix_1_1RedDAV_1_1RedBasicAuth.html#aa0b2a5fa9186d7dc0e637f1ecb379c42">RedMatrix\RedDAV\RedBasicAuth\getCurrentUser()</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a605aa09565a097316b80f0d17d6b5823"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">RedMatrix\RedDAV\RedBasicAuth::$observer = ''</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+</div>
+</div>
+<a class="anchor" id="a1a23c349cc4699a8474505972684ea9c"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">RedMatrix\RedDAV\RedBasicAuth::$owner_id = 0</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+</div>
+</div>
+<a class="anchor" id="aad0ef0cc05c407de84dbfbf2050bbbbe"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">RedMatrix\RedDAV\RedBasicAuth::$owner_nick = ''</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+</div>
+</div>
+<a class="anchor" id="a849c99cf0a7ad065d630c8a30106ad5e"></a>
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+ <tr>
+ <td class="mlabels-left">
+ <table class="memname">
+ <tr>
+ <td class="memname">RedMatrix\RedDAV\RedBasicAuth::$timezone = ''</td>
+ </tr>
+ </table>
+ </td>
+ <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">protected</span></span> </td>
+ </tr>
+</table>
+</div><div class="memdoc">
+
+<p>Referenced by <a class="el" href="classRedMatrix_1_1RedDAV_1_1RedBasicAuth.html#a6333c8ce58998bd11bf8102afe3b0748">RedMatrix\RedDAV\RedBasicAuth\getTimezone()</a>, and <a class="el" href="classRedMatrix_1_1RedDAV_1_1RedBasicAuth.html#af6d239fefed05859327ee8db626703f9">RedMatrix\RedDAV\RedBasicAuth\setTimezone()</a>.</p>
+
+</div>
+</div>
+<hr/>The documentation for this class was generated from the following file:<ul>
+<li>include/RedDAV/<a class="el" href="RedBasicAuth_8php.html">RedBasicAuth.php</a></li>
+</ul>
+</div><!-- contents -->
+</div><!-- doc-content -->
+
diff --git a/doc/html/classRedMatrix_1_1RedDAV_1_1RedBasicAuth.js b/doc/html/classRedMatrix_1_1RedDAV_1_1RedBasicAuth.js
new file mode 100644
index 000000000..b48393cea
--- /dev/null
+++ b/doc/html/classRedMatrix_1_1RedDAV_1_1RedBasicAuth.js
@@ -0,0 +1,19 @@
+var classRedMatrix_1_1RedDAV_1_1RedBasicAuth =
+[
+ [ "getCurrentUser", "classRedMatrix_1_1RedDAV_1_1RedBasicAuth.html#aa0b2a5fa9186d7dc0e637f1ecb379c42", null ],
+ [ "getTimezone", "classRedMatrix_1_1RedDAV_1_1RedBasicAuth.html#a6333c8ce58998bd11bf8102afe3b0748", null ],
+ [ "log", "classRedMatrix_1_1RedDAV_1_1RedBasicAuth.html#abf6fe89b0a8239ed93c3b07e1fbce75b", null ],
+ [ "setAuthenticated", "classRedMatrix_1_1RedDAV_1_1RedBasicAuth.html#a2926fe923baade564f2663632fa8c633", null ],
+ [ "setBrowserPlugin", "classRedMatrix_1_1RedDAV_1_1RedBasicAuth.html#adc72f36f0b2b17b20ea4df900afcd697", null ],
+ [ "setCurrentUser", "classRedMatrix_1_1RedDAV_1_1RedBasicAuth.html#aadce020fb595c7943829d7f995d3f998", null ],
+ [ "setTimezone", "classRedMatrix_1_1RedDAV_1_1RedBasicAuth.html#af6d239fefed05859327ee8db626703f9", null ],
+ [ "validateUserPass", "classRedMatrix_1_1RedDAV_1_1RedBasicAuth.html#a6ece02655b780469e59e204c5979a624", null ],
+ [ "$browser", "classRedMatrix_1_1RedDAV_1_1RedBasicAuth.html#a167ae032bd2ad8e6caa2e1e1a6f1b5d3", null ],
+ [ "$channel_hash", "classRedMatrix_1_1RedDAV_1_1RedBasicAuth.html#a112ad78a863dc0e598b5f02c596798c0", null ],
+ [ "$channel_id", "classRedMatrix_1_1RedDAV_1_1RedBasicAuth.html#abe1defedb90ac8e3b6487e124e625521", null ],
+ [ "$channel_name", "classRedMatrix_1_1RedDAV_1_1RedBasicAuth.html#a76fdb7fd5dd7376155abb5a58cd6fd69", null ],
+ [ "$observer", "classRedMatrix_1_1RedDAV_1_1RedBasicAuth.html#a605aa09565a097316b80f0d17d6b5823", null ],
+ [ "$owner_id", "classRedMatrix_1_1RedDAV_1_1RedBasicAuth.html#a1a23c349cc4699a8474505972684ea9c", null ],
+ [ "$owner_nick", "classRedMatrix_1_1RedDAV_1_1RedBasicAuth.html#aad0ef0cc05c407de84dbfbf2050bbbbe", null ],
+ [ "$timezone", "classRedMatrix_1_1RedDAV_1_1RedBasicAuth.html#a849c99cf0a7ad065d630c8a30106ad5e", null ]
+]; \ No newline at end of file
diff --git a/doc/html/classRedMatrix_1_1RedDAV_1_1RedBasicAuth.png b/doc/html/classRedMatrix_1_1RedDAV_1_1RedBasicAuth.png
new file mode 100644
index 000000000..f361b604b
--- /dev/null
+++ b/doc/html/classRedMatrix_1_1RedDAV_1_1RedBasicAuth.png
Binary files differ
diff --git a/doc/html/classRedMatrix_1_1RedDAV_1_1RedBrowser-members.html b/doc/html/classRedMatrix_1_1RedDAV_1_1RedBrowser-members.html
new file mode 100644
index 000000000..489d61569
--- /dev/null
+++ b/doc/html/classRedMatrix_1_1RedDAV_1_1RedBrowser-members.html
@@ -0,0 +1,127 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<meta name="generator" content="Doxygen 1.8.3.1"/>
+<title>The Red Matrix: Member List</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="navtree.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="resize.js"></script>
+<script type="text/javascript" src="navtree.js"></script>
+<script type="text/javascript">
+ $(document).ready(initResizable);
+ $(window).load(resizeHeight);
+</script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/search.js"></script>
+<script type="text/javascript">
+ $(document).ready(function() { searchBox.OnSelectItem(0); });
+</script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+ <td id="projectlogo"><img alt="Logo" src="rm-64.png"/></td>
+ <td style="padding-left: 0.5em;">
+ <div id="projectname">The Red Matrix
+ </div>
+ </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.8.3.1 -->
+<script type="text/javascript">
+var searchBox = new SearchBox("searchBox", "search",false,'Search');
+</script>
+ <div id="navrow1" class="tabs">
+ <ul class="tablist">
+ <li><a href="index.html"><span>Main&#160;Page</span></a></li>
+ <li><a href="pages.html"><span>Related&#160;Pages</span></a></li>
+ <li><a href="namespaces.html"><span>Namespaces</span></a></li>
+ <li class="current"><a href="annotated.html"><span>Classes</span></a></li>
+ <li><a href="files.html"><span>Files</span></a></li>
+ <li>
+ <div id="MSearchBox" class="MSearchBoxInactive">
+ <span class="left">
+ <img id="MSearchSelect" src="search/mag_sel.png"
+ onmouseover="return searchBox.OnSearchSelectShow()"
+ onmouseout="return searchBox.OnSearchSelectHide()"
+ alt=""/>
+ <input type="text" id="MSearchField" value="Search" accesskey="S"
+ onfocus="searchBox.OnSearchFieldFocus(true)"
+ onblur="searchBox.OnSearchFieldFocus(false)"
+ onkeyup="searchBox.OnSearchFieldChange(event)"/>
+ </span><span class="right">
+ <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
+ </span>
+ </div>
+ </li>
+ </ul>
+ </div>
+ <div id="navrow2" class="tabs2">
+ <ul class="tablist">
+ <li><a href="annotated.html"><span>Class&#160;List</span></a></li>
+ <li><a href="classes.html"><span>Class&#160;Index</span></a></li>
+ <li><a href="hierarchy.html"><span>Class&#160;Hierarchy</span></a></li>
+ <li><a href="functions.html"><span>Class&#160;Members</span></a></li>
+ </ul>
+ </div>
+</div><!-- top -->
+<div id="side-nav" class="ui-resizable side-nav-resizable">
+ <div id="nav-tree">
+ <div id="nav-tree-contents">
+ <div id="nav-sync" class="sync"></div>
+ </div>
+ </div>
+ <div id="splitbar" style="-moz-user-select:none;"
+ class="ui-resizable-handle">
+ </div>
+</div>
+<script type="text/javascript">
+$(document).ready(function(){initNavTree('classRedMatrix_1_1RedDAV_1_1RedBrowser.html','');});
+</script>
+<div id="doc-content">
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+ onmouseover="return searchBox.OnSearchSelectShow()"
+ onmouseout="return searchBox.OnSearchSelectHide()"
+ onkeydown="return searchBox.OnSearchSelectKey(event)">
+<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark">&#160;</span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark">&#160;</span>Classes</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark">&#160;</span>Namespaces</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark">&#160;</span>Files</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark">&#160;</span>Functions</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark">&#160;</span>Variables</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark">&#160;</span>Pages</a></div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<iframe src="javascript:void(0)" frameborder="0"
+ name="MSearchResults" id="MSearchResults">
+</iframe>
+</div>
+
+<div class="header">
+ <div class="headertitle">
+<div class="title">RedMatrix\RedDAV\RedBrowser Member List</div> </div>
+</div><!--header-->
+<div class="contents">
+
+<p>This is the complete list of members for <a class="el" href="classRedMatrix_1_1RedDAV_1_1RedBrowser.html">RedMatrix\RedDAV\RedBrowser</a>, including all inherited members.</p>
+<table class="directory">
+ <tr class="even"><td class="entry"><a class="el" href="classRedMatrix_1_1RedDAV_1_1RedBrowser.html#ad19179bf4ac7f18fafa7e2e3df800142">$auth</a></td><td class="entry"><a class="el" href="classRedMatrix_1_1RedDAV_1_1RedBrowser.html">RedMatrix\RedDAV\RedBrowser</a></td><td class="entry"><span class="mlabel">private</span></td></tr>
+ <tr><td class="entry"><a class="el" href="classRedMatrix_1_1RedDAV_1_1RedBrowser.html#a8161f2a0be205412e263c947b5ec46c5">__construct</a>(&amp;$auth)</td><td class="entry"><a class="el" href="classRedMatrix_1_1RedDAV_1_1RedBrowser.html">RedMatrix\RedDAV\RedBrowser</a></td><td class="entry"></td></tr>
+ <tr class="even"><td class="entry"><a class="el" href="classRedMatrix_1_1RedDAV_1_1RedBrowser.html#ad4bc0516533c62733f38043a37267d78">findAttachHash</a>($owner, $parentHash, $attachName)</td><td class="entry"><a class="el" href="classRedMatrix_1_1RedDAV_1_1RedBrowser.html">RedMatrix\RedDAV\RedBrowser</a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
+ <tr><td class="entry"><a class="el" href="classRedMatrix_1_1RedDAV_1_1RedBrowser.html#a0733e38e254474d9a456825e72f1ddfd">findAttachIdByHash</a>($attachHash)</td><td class="entry"><a class="el" href="classRedMatrix_1_1RedDAV_1_1RedBrowser.html">RedMatrix\RedDAV\RedBrowser</a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
+ <tr class="even"><td class="entry"><a class="el" href="classRedMatrix_1_1RedDAV_1_1RedBrowser.html#af764d5f14df751f9ec86c34fab300c09">generateDirectoryIndex</a>($path)</td><td class="entry"><a class="el" href="classRedMatrix_1_1RedDAV_1_1RedBrowser.html">RedMatrix\RedDAV\RedBrowser</a></td><td class="entry"></td></tr>
+ <tr><td class="entry"><a class="el" href="classRedMatrix_1_1RedDAV_1_1RedBrowser.html#acaa792c08d24e9dc2919759e92ba037d">getAssetUrl</a>($assetName)</td><td class="entry"><a class="el" href="classRedMatrix_1_1RedDAV_1_1RedBrowser.html">RedMatrix\RedDAV\RedBrowser</a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
+ <tr class="even"><td class="entry"><a class="el" href="classRedMatrix_1_1RedDAV_1_1RedBrowser.html#a810af4506cb3247e0ea7b0c4accbbc7a">getIconFromType</a>($type)</td><td class="entry"><a class="el" href="classRedMatrix_1_1RedDAV_1_1RedBrowser.html">RedMatrix\RedDAV\RedBrowser</a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
+ <tr><td class="entry"><a class="el" href="classRedMatrix_1_1RedDAV_1_1RedBrowser.html#a3bd98af2d1cdfd8f26deb914596176cf">htmlActionsPanel</a>(DAV\INode $node, &amp;$output)</td><td class="entry"><a class="el" href="classRedMatrix_1_1RedDAV_1_1RedBrowser.html">RedMatrix\RedDAV\RedBrowser</a></td><td class="entry"></td></tr>
+ <tr class="even"><td class="entry"><a class="el" href="classRedMatrix_1_1RedDAV_1_1RedBrowser.html#aa1607857cb59738c4dce2fe8e73d8f19">set_writeable</a>()</td><td class="entry"><a class="el" href="classRedMatrix_1_1RedDAV_1_1RedBrowser.html">RedMatrix\RedDAV\RedBrowser</a></td><td class="entry"></td></tr>
+ <tr><td class="entry"><a class="el" href="classRedMatrix_1_1RedDAV_1_1RedBrowser.html#a242ce69a2fe5a5fdf9c2b8d3954accfd">userReadableSize</a>($size)</td><td class="entry"><a class="el" href="classRedMatrix_1_1RedDAV_1_1RedBrowser.html">RedMatrix\RedDAV\RedBrowser</a></td><td class="entry"></td></tr>
+</table></div><!-- contents -->
+</div><!-- doc-content -->
+
diff --git a/doc/html/classRedMatrix_1_1RedDAV_1_1RedBrowser.html b/doc/html/classRedMatrix_1_1RedDAV_1_1RedBrowser.html
new file mode 100644
index 000000000..95f63702d
--- /dev/null
+++ b/doc/html/classRedMatrix_1_1RedDAV_1_1RedBrowser.html
@@ -0,0 +1,490 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<meta name="generator" content="Doxygen 1.8.3.1"/>
+<title>The Red Matrix: RedMatrix\RedDAV\RedBrowser Class Reference</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="navtree.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="resize.js"></script>
+<script type="text/javascript" src="navtree.js"></script>
+<script type="text/javascript">
+ $(document).ready(initResizable);
+ $(window).load(resizeHeight);
+</script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/search.js"></script>
+<script type="text/javascript">
+ $(document).ready(function() { searchBox.OnSelectItem(0); });
+</script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+ <td id="projectlogo"><img alt="Logo" src="rm-64.png"/></td>
+ <td style="padding-left: 0.5em;">
+ <div id="projectname">The Red Matrix
+ </div>
+ </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.8.3.1 -->
+<script type="text/javascript">
+var searchBox = new SearchBox("searchBox", "search",false,'Search');
+</script>
+ <div id="navrow1" class="tabs">
+ <ul class="tablist">
+ <li><a href="index.html"><span>Main&#160;Page</span></a></li>
+ <li><a href="pages.html"><span>Related&#160;Pages</span></a></li>
+ <li><a href="namespaces.html"><span>Namespaces</span></a></li>
+ <li class="current"><a href="annotated.html"><span>Classes</span></a></li>
+ <li><a href="files.html"><span>Files</span></a></li>
+ <li>
+ <div id="MSearchBox" class="MSearchBoxInactive">
+ <span class="left">
+ <img id="MSearchSelect" src="search/mag_sel.png"
+ onmouseover="return searchBox.OnSearchSelectShow()"
+ onmouseout="return searchBox.OnSearchSelectHide()"
+ alt=""/>
+ <input type="text" id="MSearchField" value="Search" accesskey="S"
+ onfocus="searchBox.OnSearchFieldFocus(true)"
+ onblur="searchBox.OnSearchFieldFocus(false)"
+ onkeyup="searchBox.OnSearchFieldChange(event)"/>
+ </span><span class="right">
+ <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
+ </span>
+ </div>
+ </li>
+ </ul>
+ </div>
+ <div id="navrow2" class="tabs2">
+ <ul class="tablist">
+ <li><a href="annotated.html"><span>Class&#160;List</span></a></li>
+ <li><a href="classes.html"><span>Class&#160;Index</span></a></li>
+ <li><a href="hierarchy.html"><span>Class&#160;Hierarchy</span></a></li>
+ <li><a href="functions.html"><span>Class&#160;Members</span></a></li>
+ </ul>
+ </div>
+</div><!-- top -->
+<div id="side-nav" class="ui-resizable side-nav-resizable">
+ <div id="nav-tree">
+ <div id="nav-tree-contents">
+ <div id="nav-sync" class="sync"></div>
+ </div>
+ </div>
+ <div id="splitbar" style="-moz-user-select:none;"
+ class="ui-resizable-handle">
+ </div>
+</div>
+<script type="text/javascript">
+$(document).ready(function(){initNavTree('classRedMatrix_1_1RedDAV_1_1RedBrowser.html','');});
+</script>
+<div id="doc-content">
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+ onmouseover="return searchBox.OnSearchSelectShow()"
+ onmouseout="return searchBox.OnSearchSelectHide()"
+ onkeydown="return searchBox.OnSearchSelectKey(event)">
+<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark">&#160;</span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark">&#160;</span>Classes</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark">&#160;</span>Namespaces</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark">&#160;</span>Files</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark">&#160;</span>Functions</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark">&#160;</span>Variables</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark">&#160;</span>Pages</a></div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<iframe src="javascript:void(0)" frameborder="0"
+ name="MSearchResults" id="MSearchResults">
+</iframe>
+</div>
+
+<div class="header">
+ <div class="summary">
+<a href="#pub-methods">Public Member Functions</a> &#124;
+<a href="#pro-methods">Protected Member Functions</a> &#124;
+<a href="#pri-attribs">Private Attributes</a> &#124;
+<a href="classRedMatrix_1_1RedDAV_1_1RedBrowser-members.html">List of all members</a> </div>
+ <div class="headertitle">
+<div class="title">RedMatrix\RedDAV\RedBrowser Class Reference</div> </div>
+</div><!--header-->
+<div class="contents">
+
+<p>Provides a DAV frontend for the webbrowser.
+ <a href="classRedMatrix_1_1RedDAV_1_1RedBrowser.html#details">More...</a></p>
+<div class="dynheader">
+Inheritance diagram for RedMatrix\RedDAV\RedBrowser:</div>
+<div class="dyncontent">
+ <div class="center">
+ <img src="classRedMatrix_1_1RedDAV_1_1RedBrowser.png" usemap="#RedMatrix\RedDAV\RedBrowser_map" alt=""/>
+ <map id="RedMatrix\RedDAV\RedBrowser_map" name="RedMatrix\RedDAV\RedBrowser_map">
+</map>
+ </div></div>
+<table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-methods"></a>
+Public Member Functions</h2></td></tr>
+<tr class="memitem:a8161f2a0be205412e263c947b5ec46c5"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classRedMatrix_1_1RedDAV_1_1RedBrowser.html#a8161f2a0be205412e263c947b5ec46c5">__construct</a> (&amp;$auth)</td></tr>
+<tr class="memdesc:a8161f2a0be205412e263c947b5ec46c5"><td class="mdescLeft">&#160;</td><td class="mdescRight">Constructor for <a class="el" href="classRedMatrix_1_1RedDAV_1_1RedBrowser.html" title="Provides a DAV frontend for the webbrowser.">RedBrowser</a> class. <a href="#a8161f2a0be205412e263c947b5ec46c5">More...</a><br/></td></tr>
+<tr class="separator:a8161f2a0be205412e263c947b5ec46c5"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:aa1607857cb59738c4dce2fe8e73d8f19"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classRedMatrix_1_1RedDAV_1_1RedBrowser.html#aa1607857cb59738c4dce2fe8e73d8f19">set_writeable</a> ()</td></tr>
+<tr class="separator:aa1607857cb59738c4dce2fe8e73d8f19"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:af764d5f14df751f9ec86c34fab300c09"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classRedMatrix_1_1RedDAV_1_1RedBrowser.html#af764d5f14df751f9ec86c34fab300c09">generateDirectoryIndex</a> ($path)</td></tr>
+<tr class="memdesc:af764d5f14df751f9ec86c34fab300c09"><td class="mdescLeft">&#160;</td><td class="mdescRight">Creates the directory listing for the given path. <a href="#af764d5f14df751f9ec86c34fab300c09">More...</a><br/></td></tr>
+<tr class="separator:af764d5f14df751f9ec86c34fab300c09"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a242ce69a2fe5a5fdf9c2b8d3954accfd"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classRedMatrix_1_1RedDAV_1_1RedBrowser.html#a242ce69a2fe5a5fdf9c2b8d3954accfd">userReadableSize</a> ($size)</td></tr>
+<tr class="memdesc:a242ce69a2fe5a5fdf9c2b8d3954accfd"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns a human readable formatted string for filesizes. <a href="#a242ce69a2fe5a5fdf9c2b8d3954accfd">More...</a><br/></td></tr>
+<tr class="separator:a242ce69a2fe5a5fdf9c2b8d3954accfd"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a3bd98af2d1cdfd8f26deb914596176cf"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classRedMatrix_1_1RedDAV_1_1RedBrowser.html#a3bd98af2d1cdfd8f26deb914596176cf">htmlActionsPanel</a> (DAV\INode $node, &amp;$output)</td></tr>
+<tr class="memdesc:a3bd98af2d1cdfd8f26deb914596176cf"><td class="mdescLeft">&#160;</td><td class="mdescRight">Creates a form to add new folders and upload files. <a href="#a3bd98af2d1cdfd8f26deb914596176cf">More...</a><br/></td></tr>
+<tr class="separator:a3bd98af2d1cdfd8f26deb914596176cf"><td class="memSeparator" colspan="2">&#160;</td></tr>
+</table><table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pro-methods"></a>
+Protected Member Functions</h2></td></tr>
+<tr class="memitem:acaa792c08d24e9dc2919759e92ba037d"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classRedMatrix_1_1RedDAV_1_1RedBrowser.html#acaa792c08d24e9dc2919759e92ba037d">getAssetUrl</a> ($assetName)</td></tr>
+<tr class="separator:acaa792c08d24e9dc2919759e92ba037d"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a810af4506cb3247e0ea7b0c4accbbc7a"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classRedMatrix_1_1RedDAV_1_1RedBrowser.html#a810af4506cb3247e0ea7b0c4accbbc7a">getIconFromType</a> ($type)</td></tr>
+<tr class="memdesc:a810af4506cb3247e0ea7b0c4accbbc7a"><td class="mdescLeft">&#160;</td><td class="mdescRight">returns icon name for use with e.g. font-awesome based on mime-type <a href="#a810af4506cb3247e0ea7b0c4accbbc7a">More...</a><br/></td></tr>
+<tr class="separator:a810af4506cb3247e0ea7b0c4accbbc7a"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ad4bc0516533c62733f38043a37267d78"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classRedMatrix_1_1RedDAV_1_1RedBrowser.html#ad4bc0516533c62733f38043a37267d78">findAttachHash</a> ($owner, $parentHash, $attachName)</td></tr>
+<tr class="memdesc:ad4bc0516533c62733f38043a37267d78"><td class="mdescLeft">&#160;</td><td class="mdescRight">Return the hash of an attachment. <a href="#ad4bc0516533c62733f38043a37267d78">More...</a><br/></td></tr>
+<tr class="separator:ad4bc0516533c62733f38043a37267d78"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a0733e38e254474d9a456825e72f1ddfd"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classRedMatrix_1_1RedDAV_1_1RedBrowser.html#a0733e38e254474d9a456825e72f1ddfd">findAttachIdByHash</a> ($attachHash)</td></tr>
+<tr class="memdesc:a0733e38e254474d9a456825e72f1ddfd"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns an attachment's id for a given hash. <a href="#a0733e38e254474d9a456825e72f1ddfd">More...</a><br/></td></tr>
+<tr class="separator:a0733e38e254474d9a456825e72f1ddfd"><td class="memSeparator" colspan="2">&#160;</td></tr>
+</table><table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pri-attribs"></a>
+Private Attributes</h2></td></tr>
+<tr class="memitem:ad19179bf4ac7f18fafa7e2e3df800142"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classRedMatrix_1_1RedDAV_1_1RedBrowser.html#ad19179bf4ac7f18fafa7e2e3df800142">$auth</a></td></tr>
+<tr class="separator:ad19179bf4ac7f18fafa7e2e3df800142"><td class="memSeparator" colspan="2">&#160;</td></tr>
+</table>
+<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
+<div class="textblock"><p>Provides a DAV frontend for the webbrowser. </p>
+<p><a class="el" href="classRedMatrix_1_1RedDAV_1_1RedBrowser.html" title="Provides a DAV frontend for the webbrowser.">RedBrowser</a> is a SabreDAV server-plugin to provide a view to the DAV storage for the webbrowser.</p>
+<p><a class="el" href=""><a href="http://opensource.org/licenses/mit-license.php">http://opensource.org/licenses/mit-license.php</a> The MIT License (MIT) </a></p>
+</div><h2 class="groupheader">Constructor &amp; Destructor Documentation</h2>
+<a class="anchor" id="a8161f2a0be205412e263c947b5ec46c5"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">RedMatrix\RedDAV\RedBrowser::__construct </td>
+ <td>(</td>
+ <td class="paramtype">&amp;&#160;</td>
+ <td class="paramname"><em>$auth</em></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p>Constructor for <a class="el" href="classRedMatrix_1_1RedDAV_1_1RedBrowser.html" title="Provides a DAV frontend for the webbrowser.">RedBrowser</a> class. </p>
+<p>$enablePost will be activated through <a class="el" href="classRedMatrix_1_1RedDAV_1_1RedBrowser.html#aa1607857cb59738c4dce2fe8e73d8f19">set_writeable()</a> in a later stage. At the moment the write_storage permission is only valid for the whole folder. No file specific permissions yet. </p>
+<dl class="todo"><dt><b><a class="el" href="todo.html#_todo000003">Todo:</a></b></dt><dd>disable enablePost by default and only activate if permissions grant edit rights.</dd></dl>
+<p>Disable assets with $enableAssets = false. Should get some thumbnail views anyway.</p>
+<dl class="params"><dt>Parameters</dt><dd>
+ <table class="params">
+ <tr><td class="paramtype"><a class="el" href="classRedMatrix_1_1RedDAV_1_1RedBasicAuth.html" title="Authentication backend class for RedDAV.">RedBasicAuth</a></td><td class="paramname">&amp;$auth</td><td></td></tr>
+ </table>
+ </dd>
+</dl>
+
+</div>
+</div>
+<h2 class="groupheader">Member Function Documentation</h2>
+<a class="anchor" id="ad4bc0516533c62733f38043a37267d78"></a>
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+ <tr>
+ <td class="mlabels-left">
+ <table class="memname">
+ <tr>
+ <td class="memname">RedMatrix\RedDAV\RedBrowser::findAttachHash </td>
+ <td>(</td>
+ <td class="paramtype">&#160;</td>
+ <td class="paramname"><em>$owner</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">&#160;</td>
+ <td class="paramname"><em>$parentHash</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">&#160;</td>
+ <td class="paramname"><em>$attachName</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+ </td>
+ <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">protected</span></span> </td>
+ </tr>
+</table>
+</div><div class="memdoc">
+
+<p>Return the hash of an attachment. </p>
+<p>Given the owner, the parent folder and and attach name get the attachment hash.</p>
+<dl class="params"><dt>Parameters</dt><dd>
+ <table class="params">
+ <tr><td class="paramtype">int</td><td class="paramname">$owner</td><td>The owner_id </td></tr>
+ <tr><td class="paramtype">string</td><td class="paramname">$hash</td><td>The parent's folder hash </td></tr>
+ <tr><td class="paramtype">string</td><td class="paramname">$attachName</td><td>The name of the attachment </td></tr>
+ </table>
+ </dd>
+</dl>
+<dl class="section return"><dt>Returns</dt><dd>string </dd></dl>
+
+<p>Referenced by <a class="el" href="classRedMatrix_1_1RedDAV_1_1RedBrowser.html#af764d5f14df751f9ec86c34fab300c09">RedMatrix\RedDAV\RedBrowser\generateDirectoryIndex()</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a0733e38e254474d9a456825e72f1ddfd"></a>
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+ <tr>
+ <td class="mlabels-left">
+ <table class="memname">
+ <tr>
+ <td class="memname">RedMatrix\RedDAV\RedBrowser::findAttachIdByHash </td>
+ <td>(</td>
+ <td class="paramtype">&#160;</td>
+ <td class="paramname"><em>$attachHash</em></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+ </td>
+ <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">protected</span></span> </td>
+ </tr>
+</table>
+</div><div class="memdoc">
+
+<p>Returns an attachment's id for a given hash. </p>
+<p>This id is used to access the attachment in filestorage/</p>
+<dl class="params"><dt>Parameters</dt><dd>
+ <table class="params">
+ <tr><td class="paramtype">string</td><td class="paramname">$attachHash</td><td>The hash of an attachment </td></tr>
+ </table>
+ </dd>
+</dl>
+<dl class="section return"><dt>Returns</dt><dd>string </dd></dl>
+
+<p>Referenced by <a class="el" href="classRedMatrix_1_1RedDAV_1_1RedBrowser.html#af764d5f14df751f9ec86c34fab300c09">RedMatrix\RedDAV\RedBrowser\generateDirectoryIndex()</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="af764d5f14df751f9ec86c34fab300c09"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">RedMatrix\RedDAV\RedBrowser::generateDirectoryIndex </td>
+ <td>(</td>
+ <td class="paramtype">&#160;</td>
+ <td class="paramname"><em>$path</em></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p>Creates the directory listing for the given path. </p>
+<dl class="params"><dt>Parameters</dt><dd>
+ <table class="params">
+ <tr><td class="paramtype">string</td><td class="paramname">$path</td><td>which should be displayed </td></tr>
+ </table>
+ </dd>
+</dl>
+
+</div>
+</div>
+<a class="anchor" id="acaa792c08d24e9dc2919759e92ba037d"></a>
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+ <tr>
+ <td class="mlabels-left">
+ <table class="memname">
+ <tr>
+ <td class="memname">RedMatrix\RedDAV\RedBrowser::getAssetUrl </td>
+ <td>(</td>
+ <td class="paramtype">&#160;</td>
+ <td class="paramname"><em>$assetName</em></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+ </td>
+ <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">protected</span></span> </td>
+ </tr>
+</table>
+</div><div class="memdoc">
+<p>This method takes a path/name of an asset and turns it into url suiteable for http access.</p>
+<dl class="params"><dt>Parameters</dt><dd>
+ <table class="params">
+ <tr><td class="paramtype">string</td><td class="paramname">$assetName</td><td></td></tr>
+ </table>
+ </dd>
+</dl>
+<dl class="section return"><dt>Returns</dt><dd>string </dd></dl>
+
+<p>Referenced by <a class="el" href="classRedMatrix_1_1RedDAV_1_1RedBrowser.html#af764d5f14df751f9ec86c34fab300c09">RedMatrix\RedDAV\RedBrowser\generateDirectoryIndex()</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a810af4506cb3247e0ea7b0c4accbbc7a"></a>
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+ <tr>
+ <td class="mlabels-left">
+ <table class="memname">
+ <tr>
+ <td class="memname">RedMatrix\RedDAV\RedBrowser::getIconFromType </td>
+ <td>(</td>
+ <td class="paramtype">&#160;</td>
+ <td class="paramname"><em>$type</em></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+ </td>
+ <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">protected</span></span> </td>
+ </tr>
+</table>
+</div><div class="memdoc">
+
+<p>returns icon name for use with e.g. font-awesome based on mime-type </p>
+<dl class="params"><dt>Parameters</dt><dd>
+ <table class="params">
+ <tr><td class="paramtype">string</td><td class="paramname">$type</td><td></td></tr>
+ </table>
+ </dd>
+</dl>
+<dl class="section return"><dt>Returns</dt><dd>string </dd></dl>
+
+<p>Referenced by <a class="el" href="classRedMatrix_1_1RedDAV_1_1RedBrowser.html#af764d5f14df751f9ec86c34fab300c09">RedMatrix\RedDAV\RedBrowser\generateDirectoryIndex()</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a3bd98af2d1cdfd8f26deb914596176cf"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">RedMatrix\RedDAV\RedBrowser::htmlActionsPanel </td>
+ <td>(</td>
+ <td class="paramtype">DAV\INode&#160;</td>
+ <td class="paramname"><em>$node</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">&amp;&#160;</td>
+ <td class="paramname"><em>$output</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p>Creates a form to add new folders and upload files. </p>
+<dl class="params"><dt>Parameters</dt><dd>
+ <table class="params">
+ <tr><td class="paramtype">\Sabre\DAV\INode</td><td class="paramname">$node</td><td></td></tr>
+ <tr><td class="paramtype">string</td><td class="paramname">&amp;$output</td><td></td></tr>
+ </table>
+ </dd>
+</dl>
+
+</div>
+</div>
+<a class="anchor" id="aa1607857cb59738c4dce2fe8e73d8f19"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">RedMatrix\RedDAV\RedBrowser::set_writeable </td>
+ <td>(</td>
+ <td class="paramname"></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+<p>The DAV browser is instantiated after the auth module and directory classes but before we know the current directory and who the owner and observer are. So we add a pointer to the browser into the auth module and vice versa. Then when we've figured out what directory is actually being accessed, we call the following function to decide whether or not to show web elements which include writeable objects.</p>
+<p>It only disable/enable the visible parts. Not the POST handler which handels the actual requests when uploading files or creating folders.</p>
+<dl class="todo"><dt><b><a class="el" href="todo.html#_todo000004">Todo:</a></b></dt><dd>Maybe this whole way of doing this can be solved with some $server-&gt;subscribeEvent(). </dd></dl>
+
+</div>
+</div>
+<a class="anchor" id="a242ce69a2fe5a5fdf9c2b8d3954accfd"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">RedMatrix\RedDAV\RedBrowser::userReadableSize </td>
+ <td>(</td>
+ <td class="paramtype">&#160;</td>
+ <td class="paramname"><em>$size</em></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p>Returns a human readable formatted string for filesizes. </p>
+<p>Don't we need such a functionality in other places, too?</p>
+<dl class="params"><dt>Parameters</dt><dd>
+ <table class="params">
+ <tr><td class="paramtype">int</td><td class="paramname">$size</td><td>filesize in bytes </td></tr>
+ </table>
+ </dd>
+</dl>
+<dl class="section return"><dt>Returns</dt><dd>string </dd></dl>
+
+<p>Referenced by <a class="el" href="classRedMatrix_1_1RedDAV_1_1RedBrowser.html#af764d5f14df751f9ec86c34fab300c09">RedMatrix\RedDAV\RedBrowser\generateDirectoryIndex()</a>.</p>
+
+</div>
+</div>
+<h2 class="groupheader">Member Data Documentation</h2>
+<a class="anchor" id="ad19179bf4ac7f18fafa7e2e3df800142"></a>
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+ <tr>
+ <td class="mlabels-left">
+ <table class="memname">
+ <tr>
+ <td class="memname">RedMatrix\RedDAV\RedBrowser::$auth</td>
+ </tr>
+ </table>
+ </td>
+ <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">private</span></span> </td>
+ </tr>
+</table>
+</div><div class="memdoc">
+
+<p>Referenced by <a class="el" href="classRedMatrix_1_1RedDAV_1_1RedBrowser.html#a8161f2a0be205412e263c947b5ec46c5">RedMatrix\RedDAV\RedBrowser\__construct()</a>.</p>
+
+</div>
+</div>
+<hr/>The documentation for this class was generated from the following file:<ul>
+<li>include/RedDAV/<a class="el" href="RedBrowser_8php.html">RedBrowser.php</a></li>
+</ul>
+</div><!-- contents -->
+</div><!-- doc-content -->
+
diff --git a/doc/html/classRedMatrix_1_1RedDAV_1_1RedBrowser.js b/doc/html/classRedMatrix_1_1RedDAV_1_1RedBrowser.js
new file mode 100644
index 000000000..79397d288
--- /dev/null
+++ b/doc/html/classRedMatrix_1_1RedDAV_1_1RedBrowser.js
@@ -0,0 +1,13 @@
+var classRedMatrix_1_1RedDAV_1_1RedBrowser =
+[
+ [ "__construct", "classRedMatrix_1_1RedDAV_1_1RedBrowser.html#a8161f2a0be205412e263c947b5ec46c5", null ],
+ [ "findAttachHash", "classRedMatrix_1_1RedDAV_1_1RedBrowser.html#ad4bc0516533c62733f38043a37267d78", null ],
+ [ "findAttachIdByHash", "classRedMatrix_1_1RedDAV_1_1RedBrowser.html#a0733e38e254474d9a456825e72f1ddfd", null ],
+ [ "generateDirectoryIndex", "classRedMatrix_1_1RedDAV_1_1RedBrowser.html#af764d5f14df751f9ec86c34fab300c09", null ],
+ [ "getAssetUrl", "classRedMatrix_1_1RedDAV_1_1RedBrowser.html#acaa792c08d24e9dc2919759e92ba037d", null ],
+ [ "getIconFromType", "classRedMatrix_1_1RedDAV_1_1RedBrowser.html#a810af4506cb3247e0ea7b0c4accbbc7a", null ],
+ [ "htmlActionsPanel", "classRedMatrix_1_1RedDAV_1_1RedBrowser.html#a3bd98af2d1cdfd8f26deb914596176cf", null ],
+ [ "set_writeable", "classRedMatrix_1_1RedDAV_1_1RedBrowser.html#aa1607857cb59738c4dce2fe8e73d8f19", null ],
+ [ "userReadableSize", "classRedMatrix_1_1RedDAV_1_1RedBrowser.html#a242ce69a2fe5a5fdf9c2b8d3954accfd", null ],
+ [ "$auth", "classRedMatrix_1_1RedDAV_1_1RedBrowser.html#ad19179bf4ac7f18fafa7e2e3df800142", null ]
+]; \ No newline at end of file
diff --git a/doc/html/classRedMatrix_1_1RedDAV_1_1RedBrowser.png b/doc/html/classRedMatrix_1_1RedDAV_1_1RedBrowser.png
new file mode 100644
index 000000000..c549bff94
--- /dev/null
+++ b/doc/html/classRedMatrix_1_1RedDAV_1_1RedBrowser.png
Binary files differ
diff --git a/doc/html/classRedMatrix_1_1RedDAV_1_1RedDirectory-members.html b/doc/html/classRedMatrix_1_1RedDAV_1_1RedDirectory-members.html
new file mode 100644
index 000000000..b6cf43ad2
--- /dev/null
+++ b/doc/html/classRedMatrix_1_1RedDAV_1_1RedDirectory-members.html
@@ -0,0 +1,135 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<meta name="generator" content="Doxygen 1.8.3.1"/>
+<title>The Red Matrix: Member List</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="navtree.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="resize.js"></script>
+<script type="text/javascript" src="navtree.js"></script>
+<script type="text/javascript">
+ $(document).ready(initResizable);
+ $(window).load(resizeHeight);
+</script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/search.js"></script>
+<script type="text/javascript">
+ $(document).ready(function() { searchBox.OnSelectItem(0); });
+</script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+ <td id="projectlogo"><img alt="Logo" src="rm-64.png"/></td>
+ <td style="padding-left: 0.5em;">
+ <div id="projectname">The Red Matrix
+ </div>
+ </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.8.3.1 -->
+<script type="text/javascript">
+var searchBox = new SearchBox("searchBox", "search",false,'Search');
+</script>
+ <div id="navrow1" class="tabs">
+ <ul class="tablist">
+ <li><a href="index.html"><span>Main&#160;Page</span></a></li>
+ <li><a href="pages.html"><span>Related&#160;Pages</span></a></li>
+ <li><a href="namespaces.html"><span>Namespaces</span></a></li>
+ <li class="current"><a href="annotated.html"><span>Classes</span></a></li>
+ <li><a href="files.html"><span>Files</span></a></li>
+ <li>
+ <div id="MSearchBox" class="MSearchBoxInactive">
+ <span class="left">
+ <img id="MSearchSelect" src="search/mag_sel.png"
+ onmouseover="return searchBox.OnSearchSelectShow()"
+ onmouseout="return searchBox.OnSearchSelectHide()"
+ alt=""/>
+ <input type="text" id="MSearchField" value="Search" accesskey="S"
+ onfocus="searchBox.OnSearchFieldFocus(true)"
+ onblur="searchBox.OnSearchFieldFocus(false)"
+ onkeyup="searchBox.OnSearchFieldChange(event)"/>
+ </span><span class="right">
+ <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
+ </span>
+ </div>
+ </li>
+ </ul>
+ </div>
+ <div id="navrow2" class="tabs2">
+ <ul class="tablist">
+ <li><a href="annotated.html"><span>Class&#160;List</span></a></li>
+ <li><a href="classes.html"><span>Class&#160;Index</span></a></li>
+ <li><a href="hierarchy.html"><span>Class&#160;Hierarchy</span></a></li>
+ <li><a href="functions.html"><span>Class&#160;Members</span></a></li>
+ </ul>
+ </div>
+</div><!-- top -->
+<div id="side-nav" class="ui-resizable side-nav-resizable">
+ <div id="nav-tree">
+ <div id="nav-tree-contents">
+ <div id="nav-sync" class="sync"></div>
+ </div>
+ </div>
+ <div id="splitbar" style="-moz-user-select:none;"
+ class="ui-resizable-handle">
+ </div>
+</div>
+<script type="text/javascript">
+$(document).ready(function(){initNavTree('classRedMatrix_1_1RedDAV_1_1RedDirectory.html','');});
+</script>
+<div id="doc-content">
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+ onmouseover="return searchBox.OnSearchSelectShow()"
+ onmouseout="return searchBox.OnSearchSelectHide()"
+ onkeydown="return searchBox.OnSearchSelectKey(event)">
+<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark">&#160;</span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark">&#160;</span>Classes</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark">&#160;</span>Namespaces</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark">&#160;</span>Files</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark">&#160;</span>Functions</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark">&#160;</span>Variables</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark">&#160;</span>Pages</a></div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<iframe src="javascript:void(0)" frameborder="0"
+ name="MSearchResults" id="MSearchResults">
+</iframe>
+</div>
+
+<div class="header">
+ <div class="headertitle">
+<div class="title">RedMatrix\RedDAV\RedDirectory Member List</div> </div>
+</div><!--header-->
+<div class="contents">
+
+<p>This is the complete list of members for <a class="el" href="classRedMatrix_1_1RedDAV_1_1RedDirectory.html">RedMatrix\RedDAV\RedDirectory</a>, including all inherited members.</p>
+<table class="directory">
+ <tr class="even"><td class="entry"><a class="el" href="classRedMatrix_1_1RedDAV_1_1RedDirectory.html#aab6907e7fb7f9f7227f9cd42bdc84eb9">$auth</a></td><td class="entry"><a class="el" href="classRedMatrix_1_1RedDAV_1_1RedDirectory.html">RedMatrix\RedDAV\RedDirectory</a></td><td class="entry"><span class="mlabel">private</span></td></tr>
+ <tr><td class="entry"><a class="el" href="classRedMatrix_1_1RedDAV_1_1RedDirectory.html#adf8735b3118cdf2f42416edaf42b82e9">$ext_path</a></td><td class="entry"><a class="el" href="classRedMatrix_1_1RedDAV_1_1RedDirectory.html">RedMatrix\RedDAV\RedDirectory</a></td><td class="entry"><span class="mlabel">private</span></td></tr>
+ <tr class="even"><td class="entry"><a class="el" href="classRedMatrix_1_1RedDAV_1_1RedDirectory.html#a2fc4e6b9be2108bbaa1ca1a03fd6d44e">$folder_hash</a></td><td class="entry"><a class="el" href="classRedMatrix_1_1RedDAV_1_1RedDirectory.html">RedMatrix\RedDAV\RedDirectory</a></td><td class="entry"><span class="mlabel">private</span></td></tr>
+ <tr><td class="entry"><a class="el" href="classRedMatrix_1_1RedDAV_1_1RedDirectory.html#a17ea47e34cb76b6e79f36ebed790d76a">$os_path</a></td><td class="entry"><a class="el" href="classRedMatrix_1_1RedDAV_1_1RedDirectory.html">RedMatrix\RedDAV\RedDirectory</a></td><td class="entry"><span class="mlabel">private</span></td></tr>
+ <tr class="even"><td class="entry"><a class="el" href="classRedMatrix_1_1RedDAV_1_1RedDirectory.html#a4bba2e56bc8ec3e05f05eae46f56f36d">$red_path</a></td><td class="entry"><a class="el" href="classRedMatrix_1_1RedDAV_1_1RedDirectory.html">RedMatrix\RedDAV\RedDirectory</a></td><td class="entry"><span class="mlabel">private</span></td></tr>
+ <tr><td class="entry"><a class="el" href="classRedMatrix_1_1RedDAV_1_1RedDirectory.html#a438066fb1565fbcffa22c12d5ce23695">$root_dir</a></td><td class="entry"><a class="el" href="classRedMatrix_1_1RedDAV_1_1RedDirectory.html">RedMatrix\RedDAV\RedDirectory</a></td><td class="entry"><span class="mlabel">private</span></td></tr>
+ <tr class="even"><td class="entry"><a class="el" href="classRedMatrix_1_1RedDAV_1_1RedDirectory.html#a76b58fe5223e565c97f1b9af93031a99">__construct</a>($ext_path, &amp;$auth_plugin)</td><td class="entry"><a class="el" href="classRedMatrix_1_1RedDAV_1_1RedDirectory.html">RedMatrix\RedDAV\RedDirectory</a></td><td class="entry"></td></tr>
+ <tr><td class="entry"><a class="el" href="classRedMatrix_1_1RedDAV_1_1RedDirectory.html#a964b13fde1a5da6f76b51ca5519234dc">childExists</a>($name)</td><td class="entry"><a class="el" href="classRedMatrix_1_1RedDAV_1_1RedDirectory.html">RedMatrix\RedDAV\RedDirectory</a></td><td class="entry"></td></tr>
+ <tr class="even"><td class="entry"><a class="el" href="classRedMatrix_1_1RedDAV_1_1RedDirectory.html#aca0e8d574ea66a0e210f571700663c62">createDirectory</a>($name)</td><td class="entry"><a class="el" href="classRedMatrix_1_1RedDAV_1_1RedDirectory.html">RedMatrix\RedDAV\RedDirectory</a></td><td class="entry"></td></tr>
+ <tr><td class="entry"><a class="el" href="classRedMatrix_1_1RedDAV_1_1RedDirectory.html#a58e750256cdc2f0f79fbe8d5463ffefe">createFile</a>($name, $data=null)</td><td class="entry"><a class="el" href="classRedMatrix_1_1RedDAV_1_1RedDirectory.html">RedMatrix\RedDAV\RedDirectory</a></td><td class="entry"></td></tr>
+ <tr class="even"><td class="entry"><a class="el" href="classRedMatrix_1_1RedDAV_1_1RedDirectory.html#a1a37850bdd1f188abd6160559698d5d7">getChild</a>($name)</td><td class="entry"><a class="el" href="classRedMatrix_1_1RedDAV_1_1RedDirectory.html">RedMatrix\RedDAV\RedDirectory</a></td><td class="entry"></td></tr>
+ <tr><td class="entry"><a class="el" href="classRedMatrix_1_1RedDAV_1_1RedDirectory.html#a9b9a0b5bfa4de1f78e6cafaa534b6f6a">getChildren</a>()</td><td class="entry"><a class="el" href="classRedMatrix_1_1RedDAV_1_1RedDirectory.html">RedMatrix\RedDAV\RedDirectory</a></td><td class="entry"></td></tr>
+ <tr class="even"><td class="entry"><a class="el" href="classRedMatrix_1_1RedDAV_1_1RedDirectory.html#a825dc5f3e0f83f50736c16daa6a4809d">getDir</a>()</td><td class="entry"><a class="el" href="classRedMatrix_1_1RedDAV_1_1RedDirectory.html">RedMatrix\RedDAV\RedDirectory</a></td><td class="entry"></td></tr>
+ <tr><td class="entry"><a class="el" href="classRedMatrix_1_1RedDAV_1_1RedDirectory.html#a69db5f641f8f5dc999e55cee1832ecd5">getLastModified</a>()</td><td class="entry"><a class="el" href="classRedMatrix_1_1RedDAV_1_1RedDirectory.html">RedMatrix\RedDAV\RedDirectory</a></td><td class="entry"></td></tr>
+ <tr class="even"><td class="entry"><a class="el" href="classRedMatrix_1_1RedDAV_1_1RedDirectory.html#a55f7172814a0749b5342f152ab3fa0df">getName</a>()</td><td class="entry"><a class="el" href="classRedMatrix_1_1RedDAV_1_1RedDirectory.html">RedMatrix\RedDAV\RedDirectory</a></td><td class="entry"></td></tr>
+ <tr><td class="entry"><a class="el" href="classRedMatrix_1_1RedDAV_1_1RedDirectory.html#a69db443ed3c84938b4352fe515bf8d68">getQuotaInfo</a>()</td><td class="entry"><a class="el" href="classRedMatrix_1_1RedDAV_1_1RedDirectory.html">RedMatrix\RedDAV\RedDirectory</a></td><td class="entry"></td></tr>
+ <tr class="even"><td class="entry"><a class="el" href="classRedMatrix_1_1RedDAV_1_1RedDirectory.html#af90a1a74cfd643a5c56b9a17ea250d59">log</a>()</td><td class="entry"><a class="el" href="classRedMatrix_1_1RedDAV_1_1RedDirectory.html">RedMatrix\RedDAV\RedDirectory</a></td><td class="entry"><span class="mlabel">private</span></td></tr>
+ <tr><td class="entry"><a class="el" href="classRedMatrix_1_1RedDAV_1_1RedDirectory.html#a14ac61d31a031d139956763db4e03956">setName</a>($name)</td><td class="entry"><a class="el" href="classRedMatrix_1_1RedDAV_1_1RedDirectory.html">RedMatrix\RedDAV\RedDirectory</a></td><td class="entry"></td></tr>
+</table></div><!-- contents -->
+</div><!-- doc-content -->
+
diff --git a/doc/html/classRedMatrix_1_1RedDAV_1_1RedDirectory.html b/doc/html/classRedMatrix_1_1RedDAV_1_1RedDirectory.html
new file mode 100644
index 000000000..ba9db5894
--- /dev/null
+++ b/doc/html/classRedMatrix_1_1RedDAV_1_1RedDirectory.html
@@ -0,0 +1,642 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<meta name="generator" content="Doxygen 1.8.3.1"/>
+<title>The Red Matrix: RedMatrix\RedDAV\RedDirectory Class Reference</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="navtree.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="resize.js"></script>
+<script type="text/javascript" src="navtree.js"></script>
+<script type="text/javascript">
+ $(document).ready(initResizable);
+ $(window).load(resizeHeight);
+</script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/search.js"></script>
+<script type="text/javascript">
+ $(document).ready(function() { searchBox.OnSelectItem(0); });
+</script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+ <td id="projectlogo"><img alt="Logo" src="rm-64.png"/></td>
+ <td style="padding-left: 0.5em;">
+ <div id="projectname">The Red Matrix
+ </div>
+ </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.8.3.1 -->
+<script type="text/javascript">
+var searchBox = new SearchBox("searchBox", "search",false,'Search');
+</script>
+ <div id="navrow1" class="tabs">
+ <ul class="tablist">
+ <li><a href="index.html"><span>Main&#160;Page</span></a></li>
+ <li><a href="pages.html"><span>Related&#160;Pages</span></a></li>
+ <li><a href="namespaces.html"><span>Namespaces</span></a></li>
+ <li class="current"><a href="annotated.html"><span>Classes</span></a></li>
+ <li><a href="files.html"><span>Files</span></a></li>
+ <li>
+ <div id="MSearchBox" class="MSearchBoxInactive">
+ <span class="left">
+ <img id="MSearchSelect" src="search/mag_sel.png"
+ onmouseover="return searchBox.OnSearchSelectShow()"
+ onmouseout="return searchBox.OnSearchSelectHide()"
+ alt=""/>
+ <input type="text" id="MSearchField" value="Search" accesskey="S"
+ onfocus="searchBox.OnSearchFieldFocus(true)"
+ onblur="searchBox.OnSearchFieldFocus(false)"
+ onkeyup="searchBox.OnSearchFieldChange(event)"/>
+ </span><span class="right">
+ <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
+ </span>
+ </div>
+ </li>
+ </ul>
+ </div>
+ <div id="navrow2" class="tabs2">
+ <ul class="tablist">
+ <li><a href="annotated.html"><span>Class&#160;List</span></a></li>
+ <li><a href="classes.html"><span>Class&#160;Index</span></a></li>
+ <li><a href="hierarchy.html"><span>Class&#160;Hierarchy</span></a></li>
+ <li><a href="functions.html"><span>Class&#160;Members</span></a></li>
+ </ul>
+ </div>
+</div><!-- top -->
+<div id="side-nav" class="ui-resizable side-nav-resizable">
+ <div id="nav-tree">
+ <div id="nav-tree-contents">
+ <div id="nav-sync" class="sync"></div>
+ </div>
+ </div>
+ <div id="splitbar" style="-moz-user-select:none;"
+ class="ui-resizable-handle">
+ </div>
+</div>
+<script type="text/javascript">
+$(document).ready(function(){initNavTree('classRedMatrix_1_1RedDAV_1_1RedDirectory.html','');});
+</script>
+<div id="doc-content">
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+ onmouseover="return searchBox.OnSearchSelectShow()"
+ onmouseout="return searchBox.OnSearchSelectHide()"
+ onkeydown="return searchBox.OnSearchSelectKey(event)">
+<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark">&#160;</span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark">&#160;</span>Classes</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark">&#160;</span>Namespaces</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark">&#160;</span>Files</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark">&#160;</span>Functions</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark">&#160;</span>Variables</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark">&#160;</span>Pages</a></div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<iframe src="javascript:void(0)" frameborder="0"
+ name="MSearchResults" id="MSearchResults">
+</iframe>
+</div>
+
+<div class="header">
+ <div class="summary">
+<a href="#pub-methods">Public Member Functions</a> &#124;
+<a href="#pri-methods">Private Member Functions</a> &#124;
+<a href="#pri-attribs">Private Attributes</a> &#124;
+<a href="classRedMatrix_1_1RedDAV_1_1RedDirectory-members.html">List of all members</a> </div>
+ <div class="headertitle">
+<div class="title">RedMatrix\RedDAV\RedDirectory Class Reference</div> </div>
+</div><!--header-->
+<div class="contents">
+
+<p><a class="el" href="classRedMatrix_1_1RedDAV_1_1RedDirectory.html" title="RedDirectory class.">RedDirectory</a> class.
+ <a href="classRedMatrix_1_1RedDAV_1_1RedDirectory.html#details">More...</a></p>
+<div class="dynheader">
+Inheritance diagram for RedMatrix\RedDAV\RedDirectory:</div>
+<div class="dyncontent">
+ <div class="center">
+ <img src="classRedMatrix_1_1RedDAV_1_1RedDirectory.png" usemap="#RedMatrix\RedDAV\RedDirectory_map" alt=""/>
+ <map id="RedMatrix\RedDAV\RedDirectory_map" name="RedMatrix\RedDAV\RedDirectory_map">
+</map>
+ </div></div>
+<table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-methods"></a>
+Public Member Functions</h2></td></tr>
+<tr class="memitem:a76b58fe5223e565c97f1b9af93031a99"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classRedMatrix_1_1RedDAV_1_1RedDirectory.html#a76b58fe5223e565c97f1b9af93031a99">__construct</a> ($ext_path, &amp;$auth_plugin)</td></tr>
+<tr class="memdesc:a76b58fe5223e565c97f1b9af93031a99"><td class="mdescLeft">&#160;</td><td class="mdescRight">Sets up the directory node, expects a full path. <a href="#a76b58fe5223e565c97f1b9af93031a99">More...</a><br/></td></tr>
+<tr class="separator:a76b58fe5223e565c97f1b9af93031a99"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a9b9a0b5bfa4de1f78e6cafaa534b6f6a"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classRedMatrix_1_1RedDAV_1_1RedDirectory.html#a9b9a0b5bfa4de1f78e6cafaa534b6f6a">getChildren</a> ()</td></tr>
+<tr class="memdesc:a9b9a0b5bfa4de1f78e6cafaa534b6f6a"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns an array with all the child nodes. <a href="#a9b9a0b5bfa4de1f78e6cafaa534b6f6a">More...</a><br/></td></tr>
+<tr class="separator:a9b9a0b5bfa4de1f78e6cafaa534b6f6a"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a1a37850bdd1f188abd6160559698d5d7"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classRedMatrix_1_1RedDAV_1_1RedDirectory.html#a1a37850bdd1f188abd6160559698d5d7">getChild</a> ($name)</td></tr>
+<tr class="memdesc:a1a37850bdd1f188abd6160559698d5d7"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns a child by name. <a href="#a1a37850bdd1f188abd6160559698d5d7">More...</a><br/></td></tr>
+<tr class="separator:a1a37850bdd1f188abd6160559698d5d7"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a55f7172814a0749b5342f152ab3fa0df"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classRedMatrix_1_1RedDAV_1_1RedDirectory.html#a55f7172814a0749b5342f152ab3fa0df">getName</a> ()</td></tr>
+<tr class="memdesc:a55f7172814a0749b5342f152ab3fa0df"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the name of the directory. <a href="#a55f7172814a0749b5342f152ab3fa0df">More...</a><br/></td></tr>
+<tr class="separator:a55f7172814a0749b5342f152ab3fa0df"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a14ac61d31a031d139956763db4e03956"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classRedMatrix_1_1RedDAV_1_1RedDirectory.html#a14ac61d31a031d139956763db4e03956">setName</a> ($name)</td></tr>
+<tr class="memdesc:a14ac61d31a031d139956763db4e03956"><td class="mdescLeft">&#160;</td><td class="mdescRight">Renames the directory. <a href="#a14ac61d31a031d139956763db4e03956">More...</a><br/></td></tr>
+<tr class="separator:a14ac61d31a031d139956763db4e03956"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a58e750256cdc2f0f79fbe8d5463ffefe"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classRedMatrix_1_1RedDAV_1_1RedDirectory.html#a58e750256cdc2f0f79fbe8d5463ffefe">createFile</a> ($name, $data=null)</td></tr>
+<tr class="memdesc:a58e750256cdc2f0f79fbe8d5463ffefe"><td class="mdescLeft">&#160;</td><td class="mdescRight">Creates a new file in the directory. <a href="#a58e750256cdc2f0f79fbe8d5463ffefe">More...</a><br/></td></tr>
+<tr class="separator:a58e750256cdc2f0f79fbe8d5463ffefe"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:aca0e8d574ea66a0e210f571700663c62"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classRedMatrix_1_1RedDAV_1_1RedDirectory.html#aca0e8d574ea66a0e210f571700663c62">createDirectory</a> ($name)</td></tr>
+<tr class="memdesc:aca0e8d574ea66a0e210f571700663c62"><td class="mdescLeft">&#160;</td><td class="mdescRight">Creates a new subdirectory. <a href="#aca0e8d574ea66a0e210f571700663c62">More...</a><br/></td></tr>
+<tr class="separator:aca0e8d574ea66a0e210f571700663c62"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a964b13fde1a5da6f76b51ca5519234dc"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classRedMatrix_1_1RedDAV_1_1RedDirectory.html#a964b13fde1a5da6f76b51ca5519234dc">childExists</a> ($name)</td></tr>
+<tr class="memdesc:a964b13fde1a5da6f76b51ca5519234dc"><td class="mdescLeft">&#160;</td><td class="mdescRight">Checks if a child exists. <a href="#a964b13fde1a5da6f76b51ca5519234dc">More...</a><br/></td></tr>
+<tr class="separator:a964b13fde1a5da6f76b51ca5519234dc"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a825dc5f3e0f83f50736c16daa6a4809d"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classRedMatrix_1_1RedDAV_1_1RedDirectory.html#a825dc5f3e0f83f50736c16daa6a4809d">getDir</a> ()</td></tr>
+<tr class="separator:a825dc5f3e0f83f50736c16daa6a4809d"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a69db5f641f8f5dc999e55cee1832ecd5"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classRedMatrix_1_1RedDAV_1_1RedDirectory.html#a69db5f641f8f5dc999e55cee1832ecd5">getLastModified</a> ()</td></tr>
+<tr class="memdesc:a69db5f641f8f5dc999e55cee1832ecd5"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the last modification time for the directory, as a UNIX timestamp. <a href="#a69db5f641f8f5dc999e55cee1832ecd5">More...</a><br/></td></tr>
+<tr class="separator:a69db5f641f8f5dc999e55cee1832ecd5"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a69db443ed3c84938b4352fe515bf8d68"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classRedMatrix_1_1RedDAV_1_1RedDirectory.html#a69db443ed3c84938b4352fe515bf8d68">getQuotaInfo</a> ()</td></tr>
+<tr class="memdesc:a69db443ed3c84938b4352fe515bf8d68"><td class="mdescLeft">&#160;</td><td class="mdescRight">Return quota usage. <a href="#a69db443ed3c84938b4352fe515bf8d68">More...</a><br/></td></tr>
+<tr class="separator:a69db443ed3c84938b4352fe515bf8d68"><td class="memSeparator" colspan="2">&#160;</td></tr>
+</table><table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pri-methods"></a>
+Private Member Functions</h2></td></tr>
+<tr class="memitem:af90a1a74cfd643a5c56b9a17ea250d59"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classRedMatrix_1_1RedDAV_1_1RedDirectory.html#af90a1a74cfd643a5c56b9a17ea250d59">log</a> ()</td></tr>
+<tr class="separator:af90a1a74cfd643a5c56b9a17ea250d59"><td class="memSeparator" colspan="2">&#160;</td></tr>
+</table><table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pri-attribs"></a>
+Private Attributes</h2></td></tr>
+<tr class="memitem:a4bba2e56bc8ec3e05f05eae46f56f36d"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classRedMatrix_1_1RedDAV_1_1RedDirectory.html#a4bba2e56bc8ec3e05f05eae46f56f36d">$red_path</a></td></tr>
+<tr class="separator:a4bba2e56bc8ec3e05f05eae46f56f36d"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a2fc4e6b9be2108bbaa1ca1a03fd6d44e"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classRedMatrix_1_1RedDAV_1_1RedDirectory.html#a2fc4e6b9be2108bbaa1ca1a03fd6d44e">$folder_hash</a></td></tr>
+<tr class="separator:a2fc4e6b9be2108bbaa1ca1a03fd6d44e"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:adf8735b3118cdf2f42416edaf42b82e9"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classRedMatrix_1_1RedDAV_1_1RedDirectory.html#adf8735b3118cdf2f42416edaf42b82e9">$ext_path</a></td></tr>
+<tr class="separator:adf8735b3118cdf2f42416edaf42b82e9"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a438066fb1565fbcffa22c12d5ce23695"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classRedMatrix_1_1RedDAV_1_1RedDirectory.html#a438066fb1565fbcffa22c12d5ce23695">$root_dir</a> = ''</td></tr>
+<tr class="separator:a438066fb1565fbcffa22c12d5ce23695"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:aab6907e7fb7f9f7227f9cd42bdc84eb9"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classRedMatrix_1_1RedDAV_1_1RedDirectory.html#aab6907e7fb7f9f7227f9cd42bdc84eb9">$auth</a></td></tr>
+<tr class="separator:aab6907e7fb7f9f7227f9cd42bdc84eb9"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a17ea47e34cb76b6e79f36ebed790d76a"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classRedMatrix_1_1RedDAV_1_1RedDirectory.html#a17ea47e34cb76b6e79f36ebed790d76a">$os_path</a> = ''</td></tr>
+<tr class="separator:a17ea47e34cb76b6e79f36ebed790d76a"><td class="memSeparator" colspan="2">&#160;</td></tr>
+</table>
+<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
+<div class="textblock"><p><a class="el" href="classRedMatrix_1_1RedDAV_1_1RedDirectory.html" title="RedDirectory class.">RedDirectory</a> class. </p>
+<p>A class that represents a directory.</p>
+<p><a class="el" href=""><a href="http://opensource.org/licenses/mit-license.php">http://opensource.org/licenses/mit-license.php</a> The MIT License (MIT) </a></p>
+</div><h2 class="groupheader">Constructor &amp; Destructor Documentation</h2>
+<a class="anchor" id="a76b58fe5223e565c97f1b9af93031a99"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">RedMatrix\RedDAV\RedDirectory::__construct </td>
+ <td>(</td>
+ <td class="paramtype">&#160;</td>
+ <td class="paramname"><em>$ext_path</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">&amp;&#160;</td>
+ <td class="paramname"><em>$auth_plugin</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p>Sets up the directory node, expects a full path. </p>
+<dl class="params"><dt>Parameters</dt><dd>
+ <table class="params">
+ <tr><td class="paramtype">string</td><td class="paramname">$ext_path</td><td>a full path </td></tr>
+ <tr><td class="paramtype"><a class="el" href="classRedMatrix_1_1RedDAV_1_1RedBasicAuth.html" title="Authentication backend class for RedDAV.">RedBasicAuth</a></td><td class="paramname">&amp;$auth_plugin</td><td></td></tr>
+ </table>
+ </dd>
+</dl>
+
+</div>
+</div>
+<h2 class="groupheader">Member Function Documentation</h2>
+<a class="anchor" id="a964b13fde1a5da6f76b51ca5519234dc"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">RedMatrix\RedDAV\RedDirectory::childExists </td>
+ <td>(</td>
+ <td class="paramtype">&#160;</td>
+ <td class="paramname"><em>$name</em></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p>Checks if a child exists. </p>
+<dl class="params"><dt>Parameters</dt><dd>
+ <table class="params">
+ <tr><td class="paramtype">string</td><td class="paramname">$name</td><td>The name to check if it exists. </td></tr>
+ </table>
+ </dd>
+</dl>
+<dl class="section return"><dt>Returns</dt><dd>boolean </dd></dl>
+
+</div>
+</div>
+<a class="anchor" id="aca0e8d574ea66a0e210f571700663c62"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">RedMatrix\RedDAV\RedDirectory::createDirectory </td>
+ <td>(</td>
+ <td class="paramtype">&#160;</td>
+ <td class="paramname"><em>$name</em></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p>Creates a new subdirectory. </p>
+<dl class="params"><dt>Parameters</dt><dd>
+ <table class="params">
+ <tr><td class="paramtype">string</td><td class="paramname">$name</td><td>the directory to create </td></tr>
+ </table>
+ </dd>
+</dl>
+<dl class="section return"><dt>Returns</dt><dd>void </dd></dl>
+
+</div>
+</div>
+<a class="anchor" id="a58e750256cdc2f0f79fbe8d5463ffefe"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">RedMatrix\RedDAV\RedDirectory::createFile </td>
+ <td>(</td>
+ <td class="paramtype">&#160;</td>
+ <td class="paramname"><em>$name</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">&#160;</td>
+ <td class="paramname"><em>$data</em> = <code>null</code>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p>Creates a new file in the directory. </p>
+<p>Data will either be supplied as a stream resource, or in certain cases as a string. Keep in mind that you may have to support either.</p>
+<p>After successful creation of the file, you may choose to return the ETag of the new file here.</p>
+<dl class="exception"><dt>Exceptions</dt><dd>
+ <table class="exception">
+ <tr><td class="paramname">\Sabre\DAV\Exception\Forbidden</td><td></td></tr>
+ </table>
+ </dd>
+</dl>
+<dl class="params"><dt>Parameters</dt><dd>
+ <table class="params">
+ <tr><td class="paramtype">string</td><td class="paramname">$name</td><td>Name of the file </td></tr>
+ <tr><td class="paramtype">resource&#160;|&#160;string</td><td class="paramname">$data</td><td>Initial payload </td></tr>
+ </table>
+ </dd>
+</dl>
+<dl class="section return"><dt>Returns</dt><dd>null|string ETag </dd></dl>
+
+</div>
+</div>
+<a class="anchor" id="a1a37850bdd1f188abd6160559698d5d7"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">RedMatrix\RedDAV\RedDirectory::getChild </td>
+ <td>(</td>
+ <td class="paramtype">&#160;</td>
+ <td class="paramname"><em>$name</em></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p>Returns a child by name. </p>
+<dl class="exception"><dt>Exceptions</dt><dd>
+ <table class="exception">
+ <tr><td class="paramname">\Sabre\DAV\Exception\Forbidden</td><td></td></tr>
+ <tr><td class="paramname">\Sabre\DAV\Exception\NotFound</td><td></td></tr>
+ </table>
+ </dd>
+</dl>
+<dl class="params"><dt>Parameters</dt><dd>
+ <table class="params">
+ <tr><td class="paramtype">string</td><td class="paramname">$name</td><td></td></tr>
+ </table>
+ </dd>
+</dl>
+
+</div>
+</div>
+<a class="anchor" id="a9b9a0b5bfa4de1f78e6cafaa534b6f6a"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">RedMatrix\RedDAV\RedDirectory::getChildren </td>
+ <td>(</td>
+ <td class="paramname"></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p>Returns an array with all the child nodes. </p>
+<dl class="exception"><dt>Exceptions</dt><dd>
+ <table class="exception">
+ <tr><td class="paramname">\Sabre\DAV\Exception\Forbidden</td><td></td></tr>
+ </table>
+ </dd>
+</dl>
+<dl class="section return"><dt>Returns</dt><dd>array [] </dd></dl>
+
+</div>
+</div>
+<a class="anchor" id="a825dc5f3e0f83f50736c16daa6a4809d"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">RedMatrix\RedDAV\RedDirectory::getDir </td>
+ <td>(</td>
+ <td class="paramname"></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+<dl class="todo"><dt><b><a class="el" href="todo.html#_todo000007">Todo:</a></b></dt><dd>add description of what this function does.</dd></dl>
+<dl class="exception"><dt>Exceptions</dt><dd>
+ <table class="exception">
+ <tr><td class="paramname">\Sabre\DAV\Exception\NotFound</td><td></td></tr>
+ </table>
+ </dd>
+</dl>
+<dl class="section return"><dt>Returns</dt><dd>void </dd></dl>
+
+<p>Referenced by <a class="el" href="classRedMatrix_1_1RedDAV_1_1RedDirectory.html#a76b58fe5223e565c97f1b9af93031a99">RedMatrix\RedDAV\RedDirectory\__construct()</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a69db5f641f8f5dc999e55cee1832ecd5"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">RedMatrix\RedDAV\RedDirectory::getLastModified </td>
+ <td>(</td>
+ <td class="paramname"></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p>Returns the last modification time for the directory, as a UNIX timestamp. </p>
+<p>It looks for the last edited file in the folder. If it is an empty folder it returns the lastmodified time of the folder itself, to prevent zero timestamps.</p>
+<dl class="section return"><dt>Returns</dt><dd>int last modification time in UNIX timestamp </dd></dl>
+
+</div>
+</div>
+<a class="anchor" id="a55f7172814a0749b5342f152ab3fa0df"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">RedMatrix\RedDAV\RedDirectory::getName </td>
+ <td>(</td>
+ <td class="paramname"></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p>Returns the name of the directory. </p>
+<dl class="section return"><dt>Returns</dt><dd>string </dd></dl>
+
+</div>
+</div>
+<a class="anchor" id="a69db443ed3c84938b4352fe515bf8d68"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">RedMatrix\RedDAV\RedDirectory::getQuotaInfo </td>
+ <td>(</td>
+ <td class="paramname"></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p>Return quota usage. </p>
+<p>Should guests relly see the used/free values from filesystem of the complete store directory?</p>
+<dl class="section return"><dt>Returns</dt><dd>array with used and free values in bytes. </dd></dl>
+
+</div>
+</div>
+<a class="anchor" id="af90a1a74cfd643a5c56b9a17ea250d59"></a>
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+ <tr>
+ <td class="mlabels-left">
+ <table class="memname">
+ <tr>
+ <td class="memname">RedMatrix\RedDAV\RedDirectory::log </td>
+ <td>(</td>
+ <td class="paramname"></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+ </td>
+ <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">private</span></span> </td>
+ </tr>
+</table>
+</div><div class="memdoc">
+
+<p>Referenced by <a class="el" href="classRedMatrix_1_1RedDAV_1_1RedDirectory.html#a9b9a0b5bfa4de1f78e6cafaa534b6f6a">RedMatrix\RedDAV\RedDirectory\getChildren()</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a14ac61d31a031d139956763db4e03956"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">RedMatrix\RedDAV\RedDirectory::setName </td>
+ <td>(</td>
+ <td class="paramtype">&#160;</td>
+ <td class="paramname"><em>$name</em></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p>Renames the directory. </p>
+<dl class="todo"><dt><b><a class="el" href="todo.html#_todo000006">Todo:</a></b></dt><dd>handle duplicate directory name</dd></dl>
+<dl class="exception"><dt>Exceptions</dt><dd>
+ <table class="exception">
+ <tr><td class="paramname">\Sabre\DAV\Exception\Forbidden</td><td></td></tr>
+ </table>
+ </dd>
+</dl>
+<dl class="params"><dt>Parameters</dt><dd>
+ <table class="params">
+ <tr><td class="paramtype">string</td><td class="paramname">$name</td><td>The new name of the directory. </td></tr>
+ </table>
+ </dd>
+</dl>
+<dl class="section return"><dt>Returns</dt><dd>void </dd></dl>
+
+</div>
+</div>
+<h2 class="groupheader">Member Data Documentation</h2>
+<a class="anchor" id="aab6907e7fb7f9f7227f9cd42bdc84eb9"></a>
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+ <tr>
+ <td class="mlabels-left">
+ <table class="memname">
+ <tr>
+ <td class="memname">RedMatrix\RedDAV\RedDirectory::$auth</td>
+ </tr>
+ </table>
+ </td>
+ <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">private</span></span> </td>
+ </tr>
+</table>
+</div><div class="memdoc">
+
+</div>
+</div>
+<a class="anchor" id="adf8735b3118cdf2f42416edaf42b82e9"></a>
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+ <tr>
+ <td class="mlabels-left">
+ <table class="memname">
+ <tr>
+ <td class="memname">RedMatrix\RedDAV\RedDirectory::$ext_path</td>
+ </tr>
+ </table>
+ </td>
+ <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">private</span></span> </td>
+ </tr>
+</table>
+</div><div class="memdoc">
+
+<p>Referenced by <a class="el" href="classRedMatrix_1_1RedDAV_1_1RedDirectory.html#a76b58fe5223e565c97f1b9af93031a99">RedMatrix\RedDAV\RedDirectory\__construct()</a>, and <a class="el" href="classRedMatrix_1_1RedDAV_1_1RedDirectory.html#a825dc5f3e0f83f50736c16daa6a4809d">RedMatrix\RedDAV\RedDirectory\getDir()</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a2fc4e6b9be2108bbaa1ca1a03fd6d44e"></a>
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+ <tr>
+ <td class="mlabels-left">
+ <table class="memname">
+ <tr>
+ <td class="memname">RedMatrix\RedDAV\RedDirectory::$folder_hash</td>
+ </tr>
+ </table>
+ </td>
+ <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">private</span></span> </td>
+ </tr>
+</table>
+</div><div class="memdoc">
+
+</div>
+</div>
+<a class="anchor" id="a17ea47e34cb76b6e79f36ebed790d76a"></a>
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+ <tr>
+ <td class="mlabels-left">
+ <table class="memname">
+ <tr>
+ <td class="memname">RedMatrix\RedDAV\RedDirectory::$os_path = ''</td>
+ </tr>
+ </table>
+ </td>
+ <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">private</span></span> </td>
+ </tr>
+</table>
+</div><div class="memdoc">
+
+<p>Referenced by <a class="el" href="classRedMatrix_1_1RedDAV_1_1RedDirectory.html#a58e750256cdc2f0f79fbe8d5463ffefe">RedMatrix\RedDAV\RedDirectory\createFile()</a>, and <a class="el" href="classRedMatrix_1_1RedDAV_1_1RedDirectory.html#a825dc5f3e0f83f50736c16daa6a4809d">RedMatrix\RedDAV\RedDirectory\getDir()</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a4bba2e56bc8ec3e05f05eae46f56f36d"></a>
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+ <tr>
+ <td class="mlabels-left">
+ <table class="memname">
+ <tr>
+ <td class="memname">RedMatrix\RedDAV\RedDirectory::$red_path</td>
+ </tr>
+ </table>
+ </td>
+ <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">private</span></span> </td>
+ </tr>
+</table>
+</div><div class="memdoc">
+
+</div>
+</div>
+<a class="anchor" id="a438066fb1565fbcffa22c12d5ce23695"></a>
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+ <tr>
+ <td class="mlabels-left">
+ <table class="memname">
+ <tr>
+ <td class="memname">RedMatrix\RedDAV\RedDirectory::$root_dir = ''</td>
+ </tr>
+ </table>
+ </td>
+ <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">private</span></span> </td>
+ </tr>
+</table>
+</div><div class="memdoc">
+
+</div>
+</div>
+<hr/>The documentation for this class was generated from the following file:<ul>
+<li>include/RedDAV/<a class="el" href="RedDirectory_8php.html">RedDirectory.php</a></li>
+</ul>
+</div><!-- contents -->
+</div><!-- doc-content -->
+
diff --git a/doc/html/classRedMatrix_1_1RedDAV_1_1RedDirectory.js b/doc/html/classRedMatrix_1_1RedDAV_1_1RedDirectory.js
new file mode 100644
index 000000000..bbb92425f
--- /dev/null
+++ b/doc/html/classRedMatrix_1_1RedDAV_1_1RedDirectory.js
@@ -0,0 +1,21 @@
+var classRedMatrix_1_1RedDAV_1_1RedDirectory =
+[
+ [ "__construct", "classRedMatrix_1_1RedDAV_1_1RedDirectory.html#a76b58fe5223e565c97f1b9af93031a99", null ],
+ [ "childExists", "classRedMatrix_1_1RedDAV_1_1RedDirectory.html#a964b13fde1a5da6f76b51ca5519234dc", null ],
+ [ "createDirectory", "classRedMatrix_1_1RedDAV_1_1RedDirectory.html#aca0e8d574ea66a0e210f571700663c62", null ],
+ [ "createFile", "classRedMatrix_1_1RedDAV_1_1RedDirectory.html#a58e750256cdc2f0f79fbe8d5463ffefe", null ],
+ [ "getChild", "classRedMatrix_1_1RedDAV_1_1RedDirectory.html#a1a37850bdd1f188abd6160559698d5d7", null ],
+ [ "getChildren", "classRedMatrix_1_1RedDAV_1_1RedDirectory.html#a9b9a0b5bfa4de1f78e6cafaa534b6f6a", null ],
+ [ "getDir", "classRedMatrix_1_1RedDAV_1_1RedDirectory.html#a825dc5f3e0f83f50736c16daa6a4809d", null ],
+ [ "getLastModified", "classRedMatrix_1_1RedDAV_1_1RedDirectory.html#a69db5f641f8f5dc999e55cee1832ecd5", null ],
+ [ "getName", "classRedMatrix_1_1RedDAV_1_1RedDirectory.html#a55f7172814a0749b5342f152ab3fa0df", null ],
+ [ "getQuotaInfo", "classRedMatrix_1_1RedDAV_1_1RedDirectory.html#a69db443ed3c84938b4352fe515bf8d68", null ],
+ [ "log", "classRedMatrix_1_1RedDAV_1_1RedDirectory.html#af90a1a74cfd643a5c56b9a17ea250d59", null ],
+ [ "setName", "classRedMatrix_1_1RedDAV_1_1RedDirectory.html#a14ac61d31a031d139956763db4e03956", null ],
+ [ "$auth", "classRedMatrix_1_1RedDAV_1_1RedDirectory.html#aab6907e7fb7f9f7227f9cd42bdc84eb9", null ],
+ [ "$ext_path", "classRedMatrix_1_1RedDAV_1_1RedDirectory.html#adf8735b3118cdf2f42416edaf42b82e9", null ],
+ [ "$folder_hash", "classRedMatrix_1_1RedDAV_1_1RedDirectory.html#a2fc4e6b9be2108bbaa1ca1a03fd6d44e", null ],
+ [ "$os_path", "classRedMatrix_1_1RedDAV_1_1RedDirectory.html#a17ea47e34cb76b6e79f36ebed790d76a", null ],
+ [ "$red_path", "classRedMatrix_1_1RedDAV_1_1RedDirectory.html#a4bba2e56bc8ec3e05f05eae46f56f36d", null ],
+ [ "$root_dir", "classRedMatrix_1_1RedDAV_1_1RedDirectory.html#a438066fb1565fbcffa22c12d5ce23695", null ]
+]; \ No newline at end of file
diff --git a/doc/html/classRedMatrix_1_1RedDAV_1_1RedDirectory.png b/doc/html/classRedMatrix_1_1RedDAV_1_1RedDirectory.png
new file mode 100644
index 000000000..e3eeebb23
--- /dev/null
+++ b/doc/html/classRedMatrix_1_1RedDAV_1_1RedDirectory.png
Binary files differ
diff --git a/doc/html/classRedMatrix_1_1RedDAV_1_1RedFile-members.html b/doc/html/classRedMatrix_1_1RedDAV_1_1RedFile-members.html
new file mode 100644
index 000000000..2206f8cbf
--- /dev/null
+++ b/doc/html/classRedMatrix_1_1RedDAV_1_1RedFile-members.html
@@ -0,0 +1,130 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<meta name="generator" content="Doxygen 1.8.3.1"/>
+<title>The Red Matrix: Member List</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="navtree.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="resize.js"></script>
+<script type="text/javascript" src="navtree.js"></script>
+<script type="text/javascript">
+ $(document).ready(initResizable);
+ $(window).load(resizeHeight);
+</script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/search.js"></script>
+<script type="text/javascript">
+ $(document).ready(function() { searchBox.OnSelectItem(0); });
+</script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+ <td id="projectlogo"><img alt="Logo" src="rm-64.png"/></td>
+ <td style="padding-left: 0.5em;">
+ <div id="projectname">The Red Matrix
+ </div>
+ </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.8.3.1 -->
+<script type="text/javascript">
+var searchBox = new SearchBox("searchBox", "search",false,'Search');
+</script>
+ <div id="navrow1" class="tabs">
+ <ul class="tablist">
+ <li><a href="index.html"><span>Main&#160;Page</span></a></li>
+ <li><a href="pages.html"><span>Related&#160;Pages</span></a></li>
+ <li><a href="namespaces.html"><span>Namespaces</span></a></li>
+ <li class="current"><a href="annotated.html"><span>Classes</span></a></li>
+ <li><a href="files.html"><span>Files</span></a></li>
+ <li>
+ <div id="MSearchBox" class="MSearchBoxInactive">
+ <span class="left">
+ <img id="MSearchSelect" src="search/mag_sel.png"
+ onmouseover="return searchBox.OnSearchSelectShow()"
+ onmouseout="return searchBox.OnSearchSelectHide()"
+ alt=""/>
+ <input type="text" id="MSearchField" value="Search" accesskey="S"
+ onfocus="searchBox.OnSearchFieldFocus(true)"
+ onblur="searchBox.OnSearchFieldFocus(false)"
+ onkeyup="searchBox.OnSearchFieldChange(event)"/>
+ </span><span class="right">
+ <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
+ </span>
+ </div>
+ </li>
+ </ul>
+ </div>
+ <div id="navrow2" class="tabs2">
+ <ul class="tablist">
+ <li><a href="annotated.html"><span>Class&#160;List</span></a></li>
+ <li><a href="classes.html"><span>Class&#160;Index</span></a></li>
+ <li><a href="hierarchy.html"><span>Class&#160;Hierarchy</span></a></li>
+ <li><a href="functions.html"><span>Class&#160;Members</span></a></li>
+ </ul>
+ </div>
+</div><!-- top -->
+<div id="side-nav" class="ui-resizable side-nav-resizable">
+ <div id="nav-tree">
+ <div id="nav-tree-contents">
+ <div id="nav-sync" class="sync"></div>
+ </div>
+ </div>
+ <div id="splitbar" style="-moz-user-select:none;"
+ class="ui-resizable-handle">
+ </div>
+</div>
+<script type="text/javascript">
+$(document).ready(function(){initNavTree('classRedMatrix_1_1RedDAV_1_1RedFile.html','');});
+</script>
+<div id="doc-content">
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+ onmouseover="return searchBox.OnSearchSelectShow()"
+ onmouseout="return searchBox.OnSearchSelectHide()"
+ onkeydown="return searchBox.OnSearchSelectKey(event)">
+<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark">&#160;</span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark">&#160;</span>Classes</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark">&#160;</span>Namespaces</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark">&#160;</span>Files</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark">&#160;</span>Functions</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark">&#160;</span>Variables</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark">&#160;</span>Pages</a></div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<iframe src="javascript:void(0)" frameborder="0"
+ name="MSearchResults" id="MSearchResults">
+</iframe>
+</div>
+
+<div class="header">
+ <div class="headertitle">
+<div class="title">RedMatrix\RedDAV\RedFile Member List</div> </div>
+</div><!--header-->
+<div class="contents">
+
+<p>This is the complete list of members for <a class="el" href="classRedMatrix_1_1RedDAV_1_1RedFile.html">RedMatrix\RedDAV\RedFile</a>, including all inherited members.</p>
+<table class="directory">
+ <tr class="even"><td class="entry"><a class="el" href="classRedMatrix_1_1RedDAV_1_1RedFile.html#a21b6e9d420c352f25610a33f57858215">$auth</a></td><td class="entry"><a class="el" href="classRedMatrix_1_1RedDAV_1_1RedFile.html">RedMatrix\RedDAV\RedFile</a></td><td class="entry"><span class="mlabel">private</span></td></tr>
+ <tr><td class="entry"><a class="el" href="classRedMatrix_1_1RedDAV_1_1RedFile.html#a235700e2dfbe21dc41613d36e30e8acc">$data</a></td><td class="entry"><a class="el" href="classRedMatrix_1_1RedDAV_1_1RedFile.html">RedMatrix\RedDAV\RedFile</a></td><td class="entry"><span class="mlabel">private</span></td></tr>
+ <tr class="even"><td class="entry"><a class="el" href="classRedMatrix_1_1RedDAV_1_1RedFile.html#ab722dcb8c4598426c81fa2b2e4fad5f2">$name</a></td><td class="entry"><a class="el" href="classRedMatrix_1_1RedDAV_1_1RedFile.html">RedMatrix\RedDAV\RedFile</a></td><td class="entry"><span class="mlabel">private</span></td></tr>
+ <tr><td class="entry"><a class="el" href="classRedMatrix_1_1RedDAV_1_1RedFile.html#a05798eac84c578152ff21758261c6ac6">__construct</a>($name, $data, &amp;$auth)</td><td class="entry"><a class="el" href="classRedMatrix_1_1RedDAV_1_1RedFile.html">RedMatrix\RedDAV\RedFile</a></td><td class="entry"></td></tr>
+ <tr class="even"><td class="entry"><a class="el" href="classRedMatrix_1_1RedDAV_1_1RedFile.html#ab7ab7ba81fab28eb02382cfdfd80ecfe">delete</a>()</td><td class="entry"><a class="el" href="classRedMatrix_1_1RedDAV_1_1RedFile.html">RedMatrix\RedDAV\RedFile</a></td><td class="entry"></td></tr>
+ <tr><td class="entry"><a class="el" href="classRedMatrix_1_1RedDAV_1_1RedFile.html#a7241beecd01f5bb4e74659863dd85bd8">get</a>()</td><td class="entry"><a class="el" href="classRedMatrix_1_1RedDAV_1_1RedFile.html">RedMatrix\RedDAV\RedFile</a></td><td class="entry"></td></tr>
+ <tr class="even"><td class="entry"><a class="el" href="classRedMatrix_1_1RedDAV_1_1RedFile.html#af5c88b75d0c1f590af03755534cb167e">getContentType</a>()</td><td class="entry"><a class="el" href="classRedMatrix_1_1RedDAV_1_1RedFile.html">RedMatrix\RedDAV\RedFile</a></td><td class="entry"></td></tr>
+ <tr><td class="entry"><a class="el" href="classRedMatrix_1_1RedDAV_1_1RedFile.html#a9f14682acf3ccb70df5af5dd0687c689">getETag</a>()</td><td class="entry"><a class="el" href="classRedMatrix_1_1RedDAV_1_1RedFile.html">RedMatrix\RedDAV\RedFile</a></td><td class="entry"></td></tr>
+ <tr class="even"><td class="entry"><a class="el" href="classRedMatrix_1_1RedDAV_1_1RedFile.html#ac47016aa0e3f6f1a1c4570bd6fd8cf25">getLastModified</a>()</td><td class="entry"><a class="el" href="classRedMatrix_1_1RedDAV_1_1RedFile.html">RedMatrix\RedDAV\RedFile</a></td><td class="entry"></td></tr>
+ <tr><td class="entry"><a class="el" href="classRedMatrix_1_1RedDAV_1_1RedFile.html#ac945aa782d6c035d339e59974266ec4d">getName</a>()</td><td class="entry"><a class="el" href="classRedMatrix_1_1RedDAV_1_1RedFile.html">RedMatrix\RedDAV\RedFile</a></td><td class="entry"></td></tr>
+ <tr class="even"><td class="entry"><a class="el" href="classRedMatrix_1_1RedDAV_1_1RedFile.html#a07e1b19e7aaf3dcce822e9be8823a87d">getSize</a>()</td><td class="entry"><a class="el" href="classRedMatrix_1_1RedDAV_1_1RedFile.html">RedMatrix\RedDAV\RedFile</a></td><td class="entry"></td></tr>
+ <tr><td class="entry"><a class="el" href="classRedMatrix_1_1RedDAV_1_1RedFile.html#a709ec1288d21ddf1353524435ab916f0">put</a>($data)</td><td class="entry"><a class="el" href="classRedMatrix_1_1RedDAV_1_1RedFile.html">RedMatrix\RedDAV\RedFile</a></td><td class="entry"></td></tr>
+ <tr class="even"><td class="entry"><a class="el" href="classRedMatrix_1_1RedDAV_1_1RedFile.html#a0350cb4e0327e1f9922869a48ee04f1d">setName</a>($newName)</td><td class="entry"><a class="el" href="classRedMatrix_1_1RedDAV_1_1RedFile.html">RedMatrix\RedDAV\RedFile</a></td><td class="entry"></td></tr>
+</table></div><!-- contents -->
+</div><!-- doc-content -->
+
diff --git a/doc/html/classRedMatrix_1_1RedDAV_1_1RedFile.html b/doc/html/classRedMatrix_1_1RedDAV_1_1RedFile.html
new file mode 100644
index 000000000..1f48aa7b7
--- /dev/null
+++ b/doc/html/classRedMatrix_1_1RedDAV_1_1RedFile.html
@@ -0,0 +1,479 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<meta name="generator" content="Doxygen 1.8.3.1"/>
+<title>The Red Matrix: RedMatrix\RedDAV\RedFile Class Reference</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="navtree.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="resize.js"></script>
+<script type="text/javascript" src="navtree.js"></script>
+<script type="text/javascript">
+ $(document).ready(initResizable);
+ $(window).load(resizeHeight);
+</script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/search.js"></script>
+<script type="text/javascript">
+ $(document).ready(function() { searchBox.OnSelectItem(0); });
+</script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+ <td id="projectlogo"><img alt="Logo" src="rm-64.png"/></td>
+ <td style="padding-left: 0.5em;">
+ <div id="projectname">The Red Matrix
+ </div>
+ </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.8.3.1 -->
+<script type="text/javascript">
+var searchBox = new SearchBox("searchBox", "search",false,'Search');
+</script>
+ <div id="navrow1" class="tabs">
+ <ul class="tablist">
+ <li><a href="index.html"><span>Main&#160;Page</span></a></li>
+ <li><a href="pages.html"><span>Related&#160;Pages</span></a></li>
+ <li><a href="namespaces.html"><span>Namespaces</span></a></li>
+ <li class="current"><a href="annotated.html"><span>Classes</span></a></li>
+ <li><a href="files.html"><span>Files</span></a></li>
+ <li>
+ <div id="MSearchBox" class="MSearchBoxInactive">
+ <span class="left">
+ <img id="MSearchSelect" src="search/mag_sel.png"
+ onmouseover="return searchBox.OnSearchSelectShow()"
+ onmouseout="return searchBox.OnSearchSelectHide()"
+ alt=""/>
+ <input type="text" id="MSearchField" value="Search" accesskey="S"
+ onfocus="searchBox.OnSearchFieldFocus(true)"
+ onblur="searchBox.OnSearchFieldFocus(false)"
+ onkeyup="searchBox.OnSearchFieldChange(event)"/>
+ </span><span class="right">
+ <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
+ </span>
+ </div>
+ </li>
+ </ul>
+ </div>
+ <div id="navrow2" class="tabs2">
+ <ul class="tablist">
+ <li><a href="annotated.html"><span>Class&#160;List</span></a></li>
+ <li><a href="classes.html"><span>Class&#160;Index</span></a></li>
+ <li><a href="hierarchy.html"><span>Class&#160;Hierarchy</span></a></li>
+ <li><a href="functions.html"><span>Class&#160;Members</span></a></li>
+ </ul>
+ </div>
+</div><!-- top -->
+<div id="side-nav" class="ui-resizable side-nav-resizable">
+ <div id="nav-tree">
+ <div id="nav-tree-contents">
+ <div id="nav-sync" class="sync"></div>
+ </div>
+ </div>
+ <div id="splitbar" style="-moz-user-select:none;"
+ class="ui-resizable-handle">
+ </div>
+</div>
+<script type="text/javascript">
+$(document).ready(function(){initNavTree('classRedMatrix_1_1RedDAV_1_1RedFile.html','');});
+</script>
+<div id="doc-content">
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+ onmouseover="return searchBox.OnSearchSelectShow()"
+ onmouseout="return searchBox.OnSearchSelectHide()"
+ onkeydown="return searchBox.OnSearchSelectKey(event)">
+<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark">&#160;</span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark">&#160;</span>Classes</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark">&#160;</span>Namespaces</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark">&#160;</span>Files</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark">&#160;</span>Functions</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark">&#160;</span>Variables</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark">&#160;</span>Pages</a></div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<iframe src="javascript:void(0)" frameborder="0"
+ name="MSearchResults" id="MSearchResults">
+</iframe>
+</div>
+
+<div class="header">
+ <div class="summary">
+<a href="#pub-methods">Public Member Functions</a> &#124;
+<a href="#pri-attribs">Private Attributes</a> &#124;
+<a href="classRedMatrix_1_1RedDAV_1_1RedFile-members.html">List of all members</a> </div>
+ <div class="headertitle">
+<div class="title">RedMatrix\RedDAV\RedFile Class Reference</div> </div>
+</div><!--header-->
+<div class="contents">
+
+<p>This class represents a file in DAV.
+ <a href="classRedMatrix_1_1RedDAV_1_1RedFile.html#details">More...</a></p>
+<div class="dynheader">
+Inheritance diagram for RedMatrix\RedDAV\RedFile:</div>
+<div class="dyncontent">
+ <div class="center">
+ <img src="classRedMatrix_1_1RedDAV_1_1RedFile.png" usemap="#RedMatrix\RedDAV\RedFile_map" alt=""/>
+ <map id="RedMatrix\RedDAV\RedFile_map" name="RedMatrix\RedDAV\RedFile_map">
+</map>
+ </div></div>
+<table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-methods"></a>
+Public Member Functions</h2></td></tr>
+<tr class="memitem:a05798eac84c578152ff21758261c6ac6"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classRedMatrix_1_1RedDAV_1_1RedFile.html#a05798eac84c578152ff21758261c6ac6">__construct</a> ($name, $data, &amp;$auth)</td></tr>
+<tr class="separator:a05798eac84c578152ff21758261c6ac6"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ac945aa782d6c035d339e59974266ec4d"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classRedMatrix_1_1RedDAV_1_1RedFile.html#ac945aa782d6c035d339e59974266ec4d">getName</a> ()</td></tr>
+<tr class="memdesc:ac945aa782d6c035d339e59974266ec4d"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the name of the file. <a href="#ac945aa782d6c035d339e59974266ec4d">More...</a><br/></td></tr>
+<tr class="separator:ac945aa782d6c035d339e59974266ec4d"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a0350cb4e0327e1f9922869a48ee04f1d"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classRedMatrix_1_1RedDAV_1_1RedFile.html#a0350cb4e0327e1f9922869a48ee04f1d">setName</a> ($newName)</td></tr>
+<tr class="memdesc:a0350cb4e0327e1f9922869a48ee04f1d"><td class="mdescLeft">&#160;</td><td class="mdescRight">Renames the file. <a href="#a0350cb4e0327e1f9922869a48ee04f1d">More...</a><br/></td></tr>
+<tr class="separator:a0350cb4e0327e1f9922869a48ee04f1d"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a709ec1288d21ddf1353524435ab916f0"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classRedMatrix_1_1RedDAV_1_1RedFile.html#a709ec1288d21ddf1353524435ab916f0">put</a> ($data)</td></tr>
+<tr class="memdesc:a709ec1288d21ddf1353524435ab916f0"><td class="mdescLeft">&#160;</td><td class="mdescRight">Updates the data of the file. <a href="#a709ec1288d21ddf1353524435ab916f0">More...</a><br/></td></tr>
+<tr class="separator:a709ec1288d21ddf1353524435ab916f0"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a7241beecd01f5bb4e74659863dd85bd8"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classRedMatrix_1_1RedDAV_1_1RedFile.html#a7241beecd01f5bb4e74659863dd85bd8">get</a> ()</td></tr>
+<tr class="memdesc:a7241beecd01f5bb4e74659863dd85bd8"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the raw data. <a href="#a7241beecd01f5bb4e74659863dd85bd8">More...</a><br/></td></tr>
+<tr class="separator:a7241beecd01f5bb4e74659863dd85bd8"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a9f14682acf3ccb70df5af5dd0687c689"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classRedMatrix_1_1RedDAV_1_1RedFile.html#a9f14682acf3ccb70df5af5dd0687c689">getETag</a> ()</td></tr>
+<tr class="memdesc:a9f14682acf3ccb70df5af5dd0687c689"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the ETag for a file. <a href="#a9f14682acf3ccb70df5af5dd0687c689">More...</a><br/></td></tr>
+<tr class="separator:a9f14682acf3ccb70df5af5dd0687c689"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:af5c88b75d0c1f590af03755534cb167e"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classRedMatrix_1_1RedDAV_1_1RedFile.html#af5c88b75d0c1f590af03755534cb167e">getContentType</a> ()</td></tr>
+<tr class="memdesc:af5c88b75d0c1f590af03755534cb167e"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the mime-type for a file. <a href="#af5c88b75d0c1f590af03755534cb167e">More...</a><br/></td></tr>
+<tr class="separator:af5c88b75d0c1f590af03755534cb167e"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a07e1b19e7aaf3dcce822e9be8823a87d"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classRedMatrix_1_1RedDAV_1_1RedFile.html#a07e1b19e7aaf3dcce822e9be8823a87d">getSize</a> ()</td></tr>
+<tr class="memdesc:a07e1b19e7aaf3dcce822e9be8823a87d"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the size of the node, in bytes. <a href="#a07e1b19e7aaf3dcce822e9be8823a87d">More...</a><br/></td></tr>
+<tr class="separator:a07e1b19e7aaf3dcce822e9be8823a87d"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ac47016aa0e3f6f1a1c4570bd6fd8cf25"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classRedMatrix_1_1RedDAV_1_1RedFile.html#ac47016aa0e3f6f1a1c4570bd6fd8cf25">getLastModified</a> ()</td></tr>
+<tr class="memdesc:ac47016aa0e3f6f1a1c4570bd6fd8cf25"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the last modification time for the file, as a unix timestamp. <a href="#ac47016aa0e3f6f1a1c4570bd6fd8cf25">More...</a><br/></td></tr>
+<tr class="separator:ac47016aa0e3f6f1a1c4570bd6fd8cf25"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ab7ab7ba81fab28eb02382cfdfd80ecfe"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classRedMatrix_1_1RedDAV_1_1RedFile.html#ab7ab7ba81fab28eb02382cfdfd80ecfe">delete</a> ()</td></tr>
+<tr class="memdesc:ab7ab7ba81fab28eb02382cfdfd80ecfe"><td class="mdescLeft">&#160;</td><td class="mdescRight">Delete the file. <a href="#ab7ab7ba81fab28eb02382cfdfd80ecfe">More...</a><br/></td></tr>
+<tr class="separator:ab7ab7ba81fab28eb02382cfdfd80ecfe"><td class="memSeparator" colspan="2">&#160;</td></tr>
+</table><table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pri-attribs"></a>
+Private Attributes</h2></td></tr>
+<tr class="memitem:a235700e2dfbe21dc41613d36e30e8acc"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classRedMatrix_1_1RedDAV_1_1RedFile.html#a235700e2dfbe21dc41613d36e30e8acc">$data</a></td></tr>
+<tr class="separator:a235700e2dfbe21dc41613d36e30e8acc"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a21b6e9d420c352f25610a33f57858215"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classRedMatrix_1_1RedDAV_1_1RedFile.html#a21b6e9d420c352f25610a33f57858215">$auth</a></td></tr>
+<tr class="separator:a21b6e9d420c352f25610a33f57858215"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ab722dcb8c4598426c81fa2b2e4fad5f2"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classRedMatrix_1_1RedDAV_1_1RedFile.html#ab722dcb8c4598426c81fa2b2e4fad5f2">$name</a></td></tr>
+<tr class="separator:ab722dcb8c4598426c81fa2b2e4fad5f2"><td class="memSeparator" colspan="2">&#160;</td></tr>
+</table>
+<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
+<div class="textblock"><p>This class represents a file in DAV. </p>
+<p>It provides all functions to work with files in Red's cloud through DAV protocol.</p>
+<p><a class="el" href=""><a href="http://opensource.org/licenses/mit-license.php">http://opensource.org/licenses/mit-license.php</a> The MIT License (MIT) </a></p>
+</div><h2 class="groupheader">Constructor &amp; Destructor Documentation</h2>
+<a class="anchor" id="a05798eac84c578152ff21758261c6ac6"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">RedMatrix\RedDAV\RedFile::__construct </td>
+ <td>(</td>
+ <td class="paramtype">&#160;</td>
+ <td class="paramname"><em>$name</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">&#160;</td>
+ <td class="paramname"><em>$data</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">&amp;&#160;</td>
+ <td class="paramname"><em>$auth</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+<p>Sets up the node, expects a full path name.</p>
+<dl class="params"><dt>Parameters</dt><dd>
+ <table class="params">
+ <tr><td class="paramtype">string</td><td class="paramname">$name</td><td></td></tr>
+ <tr><td class="paramtype">array</td><td class="paramname">$data</td><td>from attach table </td></tr>
+ <tr><td class="paramtype"></td><td class="paramname">&amp;$auth</td><td></td></tr>
+ </table>
+ </dd>
+</dl>
+
+</div>
+</div>
+<h2 class="groupheader">Member Function Documentation</h2>
+<a class="anchor" id="ab7ab7ba81fab28eb02382cfdfd80ecfe"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">RedMatrix\RedDAV\RedFile::delete </td>
+ <td>(</td>
+ <td class="paramname"></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p>Delete the file. </p>
+<p>This method checks the permissions and then calls <a class="el" href="include_2attach_8php.html#a70bd666e080c2af5a91f5d14c297b8cd" title="Delete a file/directory from a channel.">attach_delete()</a> function to actually remove the file.</p>
+<dl class="exception"><dt>Exceptions</dt><dd>
+ <table class="exception">
+ <tr><td class="paramname">\Sabre\DAV\Exception\Forbidden</td><td></td></tr>
+ </table>
+ </dd>
+</dl>
+
+</div>
+</div>
+<a class="anchor" id="a7241beecd01f5bb4e74659863dd85bd8"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">RedMatrix\RedDAV\RedFile::get </td>
+ <td>(</td>
+ <td class="paramname"></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p>Returns the raw data. </p>
+<dl class="section return"><dt>Returns</dt><dd>string </dd></dl>
+
+</div>
+</div>
+<a class="anchor" id="af5c88b75d0c1f590af03755534cb167e"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">RedMatrix\RedDAV\RedFile::getContentType </td>
+ <td>(</td>
+ <td class="paramname"></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p>Returns the mime-type for a file. </p>
+<p>If null is returned, we'll assume application/octet-stream</p>
+<dl class="section return"><dt>Returns</dt><dd>mixed </dd></dl>
+
+</div>
+</div>
+<a class="anchor" id="a9f14682acf3ccb70df5af5dd0687c689"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">RedMatrix\RedDAV\RedFile::getETag </td>
+ <td>(</td>
+ <td class="paramname"></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p>Returns the ETag for a file. </p>
+<p>An ETag is a unique identifier representing the current version of the file. If the file changes, the ETag MUST change. The ETag is an arbitrary string, but MUST be surrounded by double-quotes.</p>
+<p>Return null if the ETag can not effectively be determined.</p>
+<dl class="section return"><dt>Returns</dt><dd>null|string </dd></dl>
+
+</div>
+</div>
+<a class="anchor" id="ac47016aa0e3f6f1a1c4570bd6fd8cf25"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">RedMatrix\RedDAV\RedFile::getLastModified </td>
+ <td>(</td>
+ <td class="paramname"></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p>Returns the last modification time for the file, as a unix timestamp. </p>
+<dl class="section return"><dt>Returns</dt><dd>int last modification time in UNIX timestamp </dd></dl>
+
+</div>
+</div>
+<a class="anchor" id="ac945aa782d6c035d339e59974266ec4d"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">RedMatrix\RedDAV\RedFile::getName </td>
+ <td>(</td>
+ <td class="paramname"></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p>Returns the name of the file. </p>
+<dl class="section return"><dt>Returns</dt><dd>string </dd></dl>
+
+</div>
+</div>
+<a class="anchor" id="a07e1b19e7aaf3dcce822e9be8823a87d"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">RedMatrix\RedDAV\RedFile::getSize </td>
+ <td>(</td>
+ <td class="paramname"></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p>Returns the size of the node, in bytes. </p>
+<dl class="section return"><dt>Returns</dt><dd>int filesize in bytes </dd></dl>
+
+</div>
+</div>
+<a class="anchor" id="a709ec1288d21ddf1353524435ab916f0"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">RedMatrix\RedDAV\RedFile::put </td>
+ <td>(</td>
+ <td class="paramtype">&#160;</td>
+ <td class="paramname"><em>$data</em></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p>Updates the data of the file. </p>
+<dl class="params"><dt>Parameters</dt><dd>
+ <table class="params">
+ <tr><td class="paramtype">resource</td><td class="paramname">$data</td><td></td></tr>
+ </table>
+ </dd>
+</dl>
+<dl class="section return"><dt>Returns</dt><dd>void </dd></dl>
+
+</div>
+</div>
+<a class="anchor" id="a0350cb4e0327e1f9922869a48ee04f1d"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">RedMatrix\RedDAV\RedFile::setName </td>
+ <td>(</td>
+ <td class="paramtype">&#160;</td>
+ <td class="paramname"><em>$newName</em></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p>Renames the file. </p>
+<dl class="exception"><dt>Exceptions</dt><dd>
+ <table class="exception">
+ <tr><td class="paramname">Sabre\DAV\Exception\Forbidden</td><td></td></tr>
+ </table>
+ </dd>
+</dl>
+<dl class="params"><dt>Parameters</dt><dd>
+ <table class="params">
+ <tr><td class="paramtype">string</td><td class="paramname">$name</td><td>The new name of the file. </td></tr>
+ </table>
+ </dd>
+</dl>
+<dl class="section return"><dt>Returns</dt><dd>void </dd></dl>
+
+</div>
+</div>
+<h2 class="groupheader">Member Data Documentation</h2>
+<a class="anchor" id="a21b6e9d420c352f25610a33f57858215"></a>
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+ <tr>
+ <td class="mlabels-left">
+ <table class="memname">
+ <tr>
+ <td class="memname">RedMatrix\RedDAV\RedFile::$auth</td>
+ </tr>
+ </table>
+ </td>
+ <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">private</span></span> </td>
+ </tr>
+</table>
+</div><div class="memdoc">
+
+<p>Referenced by <a class="el" href="classRedMatrix_1_1RedDAV_1_1RedFile.html#a05798eac84c578152ff21758261c6ac6">RedMatrix\RedDAV\RedFile\__construct()</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a235700e2dfbe21dc41613d36e30e8acc"></a>
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+ <tr>
+ <td class="mlabels-left">
+ <table class="memname">
+ <tr>
+ <td class="memname">RedMatrix\RedDAV\RedFile::$data</td>
+ </tr>
+ </table>
+ </td>
+ <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">private</span></span> </td>
+ </tr>
+</table>
+</div><div class="memdoc">
+
+<p>Referenced by <a class="el" href="classRedMatrix_1_1RedDAV_1_1RedFile.html#a05798eac84c578152ff21758261c6ac6">RedMatrix\RedDAV\RedFile\__construct()</a>, and <a class="el" href="classRedMatrix_1_1RedDAV_1_1RedFile.html#a709ec1288d21ddf1353524435ab916f0">RedMatrix\RedDAV\RedFile\put()</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="ab722dcb8c4598426c81fa2b2e4fad5f2"></a>
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+ <tr>
+ <td class="mlabels-left">
+ <table class="memname">
+ <tr>
+ <td class="memname">RedMatrix\RedDAV\RedFile::$name</td>
+ </tr>
+ </table>
+ </td>
+ <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">private</span></span> </td>
+ </tr>
+</table>
+</div><div class="memdoc">
+
+<p>Referenced by <a class="el" href="classRedMatrix_1_1RedDAV_1_1RedFile.html#a05798eac84c578152ff21758261c6ac6">RedMatrix\RedDAV\RedFile\__construct()</a>.</p>
+
+</div>
+</div>
+<hr/>The documentation for this class was generated from the following file:<ul>
+<li>include/RedDAV/<a class="el" href="RedFile_8php.html">RedFile.php</a></li>
+</ul>
+</div><!-- contents -->
+</div><!-- doc-content -->
+
diff --git a/doc/html/classRedMatrix_1_1RedDAV_1_1RedFile.js b/doc/html/classRedMatrix_1_1RedDAV_1_1RedFile.js
new file mode 100644
index 000000000..c65382641
--- /dev/null
+++ b/doc/html/classRedMatrix_1_1RedDAV_1_1RedFile.js
@@ -0,0 +1,16 @@
+var classRedMatrix_1_1RedDAV_1_1RedFile =
+[
+ [ "__construct", "classRedMatrix_1_1RedDAV_1_1RedFile.html#a05798eac84c578152ff21758261c6ac6", null ],
+ [ "delete", "classRedMatrix_1_1RedDAV_1_1RedFile.html#ab7ab7ba81fab28eb02382cfdfd80ecfe", null ],
+ [ "get", "classRedMatrix_1_1RedDAV_1_1RedFile.html#a7241beecd01f5bb4e74659863dd85bd8", null ],
+ [ "getContentType", "classRedMatrix_1_1RedDAV_1_1RedFile.html#af5c88b75d0c1f590af03755534cb167e", null ],
+ [ "getETag", "classRedMatrix_1_1RedDAV_1_1RedFile.html#a9f14682acf3ccb70df5af5dd0687c689", null ],
+ [ "getLastModified", "classRedMatrix_1_1RedDAV_1_1RedFile.html#ac47016aa0e3f6f1a1c4570bd6fd8cf25", null ],
+ [ "getName", "classRedMatrix_1_1RedDAV_1_1RedFile.html#ac945aa782d6c035d339e59974266ec4d", null ],
+ [ "getSize", "classRedMatrix_1_1RedDAV_1_1RedFile.html#a07e1b19e7aaf3dcce822e9be8823a87d", null ],
+ [ "put", "classRedMatrix_1_1RedDAV_1_1RedFile.html#a709ec1288d21ddf1353524435ab916f0", null ],
+ [ "setName", "classRedMatrix_1_1RedDAV_1_1RedFile.html#a0350cb4e0327e1f9922869a48ee04f1d", null ],
+ [ "$auth", "classRedMatrix_1_1RedDAV_1_1RedFile.html#a21b6e9d420c352f25610a33f57858215", null ],
+ [ "$data", "classRedMatrix_1_1RedDAV_1_1RedFile.html#a235700e2dfbe21dc41613d36e30e8acc", null ],
+ [ "$name", "classRedMatrix_1_1RedDAV_1_1RedFile.html#ab722dcb8c4598426c81fa2b2e4fad5f2", null ]
+]; \ No newline at end of file
diff --git a/doc/html/classRedMatrix_1_1RedDAV_1_1RedFile.png b/doc/html/classRedMatrix_1_1RedDAV_1_1RedFile.png
new file mode 100644
index 000000000..9a1837e1c
--- /dev/null
+++ b/doc/html/classRedMatrix_1_1RedDAV_1_1RedFile.png
Binary files differ
diff --git a/doc/html/classRedmatrix_1_1Import_1_1Import-members.html b/doc/html/classRedmatrix_1_1Import_1_1Import-members.html
new file mode 100644
index 000000000..2be66a2ea
--- /dev/null
+++ b/doc/html/classRedmatrix_1_1Import_1_1Import-members.html
@@ -0,0 +1,132 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<meta name="generator" content="Doxygen 1.8.3.1"/>
+<title>The Red Matrix: Member List</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="navtree.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="resize.js"></script>
+<script type="text/javascript" src="navtree.js"></script>
+<script type="text/javascript">
+ $(document).ready(initResizable);
+ $(window).load(resizeHeight);
+</script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/search.js"></script>
+<script type="text/javascript">
+ $(document).ready(function() { searchBox.OnSelectItem(0); });
+</script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+ <td id="projectlogo"><img alt="Logo" src="rm-64.png"/></td>
+ <td style="padding-left: 0.5em;">
+ <div id="projectname">The Red Matrix
+ </div>
+ </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.8.3.1 -->
+<script type="text/javascript">
+var searchBox = new SearchBox("searchBox", "search",false,'Search');
+</script>
+ <div id="navrow1" class="tabs">
+ <ul class="tablist">
+ <li><a href="index.html"><span>Main&#160;Page</span></a></li>
+ <li><a href="pages.html"><span>Related&#160;Pages</span></a></li>
+ <li><a href="namespaces.html"><span>Namespaces</span></a></li>
+ <li class="current"><a href="annotated.html"><span>Classes</span></a></li>
+ <li><a href="files.html"><span>Files</span></a></li>
+ <li>
+ <div id="MSearchBox" class="MSearchBoxInactive">
+ <span class="left">
+ <img id="MSearchSelect" src="search/mag_sel.png"
+ onmouseover="return searchBox.OnSearchSelectShow()"
+ onmouseout="return searchBox.OnSearchSelectHide()"
+ alt=""/>
+ <input type="text" id="MSearchField" value="Search" accesskey="S"
+ onfocus="searchBox.OnSearchFieldFocus(true)"
+ onblur="searchBox.OnSearchFieldFocus(false)"
+ onkeyup="searchBox.OnSearchFieldChange(event)"/>
+ </span><span class="right">
+ <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
+ </span>
+ </div>
+ </li>
+ </ul>
+ </div>
+ <div id="navrow2" class="tabs2">
+ <ul class="tablist">
+ <li><a href="annotated.html"><span>Class&#160;List</span></a></li>
+ <li><a href="classes.html"><span>Class&#160;Index</span></a></li>
+ <li><a href="hierarchy.html"><span>Class&#160;Hierarchy</span></a></li>
+ <li><a href="functions.html"><span>Class&#160;Members</span></a></li>
+ </ul>
+ </div>
+</div><!-- top -->
+<div id="side-nav" class="ui-resizable side-nav-resizable">
+ <div id="nav-tree">
+ <div id="nav-tree-contents">
+ <div id="nav-sync" class="sync"></div>
+ </div>
+ </div>
+ <div id="splitbar" style="-moz-user-select:none;"
+ class="ui-resizable-handle">
+ </div>
+</div>
+<script type="text/javascript">
+$(document).ready(function(){initNavTree('classRedMatrix_1_1Import_1_1Import.html','');});
+</script>
+<div id="doc-content">
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+ onmouseover="return searchBox.OnSearchSelectShow()"
+ onmouseout="return searchBox.OnSearchSelectHide()"
+ onkeydown="return searchBox.OnSearchSelectKey(event)">
+<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark">&#160;</span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark">&#160;</span>Classes</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark">&#160;</span>Namespaces</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark">&#160;</span>Files</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark">&#160;</span>Functions</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark">&#160;</span>Variables</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark">&#160;</span>Pages</a></div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<iframe src="javascript:void(0)" frameborder="0"
+ name="MSearchResults" id="MSearchResults">
+</iframe>
+</div>
+
+<div class="header">
+ <div class="headertitle">
+<div class="title">RedMatrix\Import\Import Member List</div> </div>
+</div><!--header-->
+<div class="contents">
+
+<p>This is the complete list of members for <a class="el" href="classRedMatrix_1_1Import_1_1Import.html">RedMatrix\Import\Import</a>, including all inherited members.</p>
+<table class="directory">
+ <tr class="even"><td class="entry"><a class="el" href="classRedMatrix_1_1Import_1_1Import.html#a864aac9fadb4846f5d9f840e8e0f440f">$credentials</a></td><td class="entry"><a class="el" href="classRedMatrix_1_1Import_1_1Import.html">RedMatrix\Import\Import</a></td><td class="entry"><span class="mlabel">private</span></td></tr>
+ <tr><td class="entry"><a class="el" href="classRedMatrix_1_1Import_1_1Import.html#ad0d2bdc3b388220479063915b4f5c2fc">$itemlist</a></td><td class="entry"><a class="el" href="classRedMatrix_1_1Import_1_1Import.html">RedMatrix\Import\Import</a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
+ <tr class="even"><td class="entry"><a class="el" href="classRedMatrix_1_1Import_1_1Import.html#a0a05dac405ccc5b617b7b7b3c8ed783c">$items</a></td><td class="entry"><a class="el" href="classRedMatrix_1_1Import_1_1Import.html">RedMatrix\Import\Import</a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
+ <tr><td class="entry"><a class="el" href="classRedMatrix_1_1Import_1_1Import.html#a88c2eeba8d0cba3e7c12a2c45ba0fbc6">$src_items</a></td><td class="entry"><a class="el" href="classRedMatrix_1_1Import_1_1Import.html">RedMatrix\Import\Import</a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
+ <tr class="even"><td class="entry"><a class="el" href="classRedMatrix_1_1Import_1_1Import.html#a5434325afb2c633c52540127d717800a">convert_child</a>($child)</td><td class="entry"><a class="el" href="classRedMatrix_1_1Import_1_1Import.html">RedMatrix\Import\Import</a></td><td class="entry"></td></tr>
+ <tr><td class="entry"><a class="el" href="classRedMatrix_1_1Import_1_1Import.html#a107703a43a1b0ceb2af7ae470cb3f218">convert_item</a>($item_ident)</td><td class="entry"><a class="el" href="classRedMatrix_1_1Import_1_1Import.html">RedMatrix\Import\Import</a></td><td class="entry"></td></tr>
+ <tr class="even"><td class="entry"><a class="el" href="classRedMatrix_1_1Import_1_1Import.html#addf6e53dacd971eaab49be4b17a767d6">convert_taxonomy</a>($item_ident)</td><td class="entry"><a class="el" href="classRedMatrix_1_1Import_1_1Import.html">RedMatrix\Import\Import</a></td><td class="entry"></td></tr>
+ <tr><td class="entry"><a class="el" href="classRedMatrix_1_1Import_1_1Import.html#a57561904b0f127e0d9a3e2c33688daf8">get_children</a>($item_ident)</td><td class="entry"><a class="el" href="classRedMatrix_1_1Import_1_1Import.html">RedMatrix\Import\Import</a></td><td class="entry"></td></tr>
+ <tr class="even"><td class="entry"><a class="el" href="classRedMatrix_1_1Import_1_1Import.html#a24134929d9a8a682da2036a0bf326367">get_credentials</a>()</td><td class="entry"><a class="el" href="classRedMatrix_1_1Import_1_1Import.html">RedMatrix\Import\Import</a></td><td class="entry"></td></tr>
+ <tr><td class="entry"><a class="el" href="classRedMatrix_1_1Import_1_1Import.html#a27987a41cb703a796f1821baeb4774a2">get_item</a>($item_ident)</td><td class="entry"><a class="el" href="classRedMatrix_1_1Import_1_1Import.html">RedMatrix\Import\Import</a></td><td class="entry"></td></tr>
+ <tr class="even"><td class="entry"><a class="el" href="classRedMatrix_1_1Import_1_1Import.html#a772c28edf36aaf8e66007a95004c4059">get_item_ident</a>($item)</td><td class="entry"><a class="el" href="classRedMatrix_1_1Import_1_1Import.html">RedMatrix\Import\Import</a></td><td class="entry"></td></tr>
+ <tr><td class="entry"><a class="el" href="classRedMatrix_1_1Import_1_1Import.html#a855cd5a79b95d269ae8737fae774e3bc">get_itemlist</a>()</td><td class="entry"><a class="el" href="classRedMatrix_1_1Import_1_1Import.html">RedMatrix\Import\Import</a></td><td class="entry"></td></tr>
+ <tr class="even"><td class="entry"><a class="el" href="classRedMatrix_1_1Import_1_1Import.html#ae3c6472bea1a44025bc2e152604eb20c">get_taxonomy</a>($item_ident)</td><td class="entry"><a class="el" href="classRedMatrix_1_1Import_1_1Import.html">RedMatrix\Import\Import</a></td><td class="entry"></td></tr>
+ <tr><td class="entry"><a class="el" href="classRedMatrix_1_1Import_1_1Import.html#a8d138a9a7d4f79b81d3446ca216a602c">run</a>()</td><td class="entry"><a class="el" href="classRedMatrix_1_1Import_1_1Import.html">RedMatrix\Import\Import</a></td><td class="entry"></td></tr>
+ <tr class="even"><td class="entry"><a class="el" href="classRedMatrix_1_1Import_1_1Import.html#a33ed595de044c0ec1cd84cca719e31dc">store</a>($item, $update=false)</td><td class="entry"><a class="el" href="classRedMatrix_1_1Import_1_1Import.html">RedMatrix\Import\Import</a></td><td class="entry"></td></tr>
+</table></div><!-- contents -->
+</div><!-- doc-content -->
+
diff --git a/doc/html/classRedmatrix_1_1Import_1_1Import.html b/doc/html/classRedmatrix_1_1Import_1_1Import.html
new file mode 100644
index 000000000..2119780c3
--- /dev/null
+++ b/doc/html/classRedmatrix_1_1Import_1_1Import.html
@@ -0,0 +1,447 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<meta name="generator" content="Doxygen 1.8.3.1"/>
+<title>The Red Matrix: RedMatrix\Import\Import Class Reference</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="navtree.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="resize.js"></script>
+<script type="text/javascript" src="navtree.js"></script>
+<script type="text/javascript">
+ $(document).ready(initResizable);
+ $(window).load(resizeHeight);
+</script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/search.js"></script>
+<script type="text/javascript">
+ $(document).ready(function() { searchBox.OnSelectItem(0); });
+</script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+ <td id="projectlogo"><img alt="Logo" src="rm-64.png"/></td>
+ <td style="padding-left: 0.5em;">
+ <div id="projectname">The Red Matrix
+ </div>
+ </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.8.3.1 -->
+<script type="text/javascript">
+var searchBox = new SearchBox("searchBox", "search",false,'Search');
+</script>
+ <div id="navrow1" class="tabs">
+ <ul class="tablist">
+ <li><a href="index.html"><span>Main&#160;Page</span></a></li>
+ <li><a href="pages.html"><span>Related&#160;Pages</span></a></li>
+ <li><a href="namespaces.html"><span>Namespaces</span></a></li>
+ <li class="current"><a href="annotated.html"><span>Classes</span></a></li>
+ <li><a href="files.html"><span>Files</span></a></li>
+ <li>
+ <div id="MSearchBox" class="MSearchBoxInactive">
+ <span class="left">
+ <img id="MSearchSelect" src="search/mag_sel.png"
+ onmouseover="return searchBox.OnSearchSelectShow()"
+ onmouseout="return searchBox.OnSearchSelectHide()"
+ alt=""/>
+ <input type="text" id="MSearchField" value="Search" accesskey="S"
+ onfocus="searchBox.OnSearchFieldFocus(true)"
+ onblur="searchBox.OnSearchFieldFocus(false)"
+ onkeyup="searchBox.OnSearchFieldChange(event)"/>
+ </span><span class="right">
+ <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
+ </span>
+ </div>
+ </li>
+ </ul>
+ </div>
+ <div id="navrow2" class="tabs2">
+ <ul class="tablist">
+ <li><a href="annotated.html"><span>Class&#160;List</span></a></li>
+ <li><a href="classes.html"><span>Class&#160;Index</span></a></li>
+ <li><a href="hierarchy.html"><span>Class&#160;Hierarchy</span></a></li>
+ <li><a href="functions.html"><span>Class&#160;Members</span></a></li>
+ </ul>
+ </div>
+</div><!-- top -->
+<div id="side-nav" class="ui-resizable side-nav-resizable">
+ <div id="nav-tree">
+ <div id="nav-tree-contents">
+ <div id="nav-sync" class="sync"></div>
+ </div>
+ </div>
+ <div id="splitbar" style="-moz-user-select:none;"
+ class="ui-resizable-handle">
+ </div>
+</div>
+<script type="text/javascript">
+$(document).ready(function(){initNavTree('classRedMatrix_1_1Import_1_1Import.html','');});
+</script>
+<div id="doc-content">
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+ onmouseover="return searchBox.OnSearchSelectShow()"
+ onmouseout="return searchBox.OnSearchSelectHide()"
+ onkeydown="return searchBox.OnSearchSelectKey(event)">
+<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark">&#160;</span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark">&#160;</span>Classes</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark">&#160;</span>Namespaces</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark">&#160;</span>Files</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark">&#160;</span>Functions</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark">&#160;</span>Variables</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark">&#160;</span>Pages</a></div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<iframe src="javascript:void(0)" frameborder="0"
+ name="MSearchResults" id="MSearchResults">
+</iframe>
+</div>
+
+<div class="header">
+ <div class="summary">
+<a href="#pub-methods">Public Member Functions</a> &#124;
+<a href="#pro-attribs">Protected Attributes</a> &#124;
+<a href="#pri-attribs">Private Attributes</a> &#124;
+<a href="classRedMatrix_1_1Import_1_1Import-members.html">List of all members</a> </div>
+ <div class="headertitle">
+<div class="title">RedMatrix\Import\Import Class Reference</div> </div>
+</div><!--header-->
+<div class="contents">
+<table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-methods"></a>
+Public Member Functions</h2></td></tr>
+<tr class="memitem:a24134929d9a8a682da2036a0bf326367"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classRedMatrix_1_1Import_1_1Import.html#a24134929d9a8a682da2036a0bf326367">get_credentials</a> ()</td></tr>
+<tr class="separator:a24134929d9a8a682da2036a0bf326367"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a855cd5a79b95d269ae8737fae774e3bc"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classRedMatrix_1_1Import_1_1Import.html#a855cd5a79b95d269ae8737fae774e3bc">get_itemlist</a> ()</td></tr>
+<tr class="separator:a855cd5a79b95d269ae8737fae774e3bc"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a772c28edf36aaf8e66007a95004c4059"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classRedMatrix_1_1Import_1_1Import.html#a772c28edf36aaf8e66007a95004c4059">get_item_ident</a> ($item)</td></tr>
+<tr class="separator:a772c28edf36aaf8e66007a95004c4059"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a27987a41cb703a796f1821baeb4774a2"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classRedMatrix_1_1Import_1_1Import.html#a27987a41cb703a796f1821baeb4774a2">get_item</a> ($item_ident)</td></tr>
+<tr class="separator:a27987a41cb703a796f1821baeb4774a2"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ae3c6472bea1a44025bc2e152604eb20c"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classRedMatrix_1_1Import_1_1Import.html#ae3c6472bea1a44025bc2e152604eb20c">get_taxonomy</a> ($item_ident)</td></tr>
+<tr class="separator:ae3c6472bea1a44025bc2e152604eb20c"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a57561904b0f127e0d9a3e2c33688daf8"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classRedMatrix_1_1Import_1_1Import.html#a57561904b0f127e0d9a3e2c33688daf8">get_children</a> ($item_ident)</td></tr>
+<tr class="separator:a57561904b0f127e0d9a3e2c33688daf8"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a107703a43a1b0ceb2af7ae470cb3f218"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classRedMatrix_1_1Import_1_1Import.html#a107703a43a1b0ceb2af7ae470cb3f218">convert_item</a> ($item_ident)</td></tr>
+<tr class="separator:a107703a43a1b0ceb2af7ae470cb3f218"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:addf6e53dacd971eaab49be4b17a767d6"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classRedMatrix_1_1Import_1_1Import.html#addf6e53dacd971eaab49be4b17a767d6">convert_taxonomy</a> ($item_ident)</td></tr>
+<tr class="separator:addf6e53dacd971eaab49be4b17a767d6"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a5434325afb2c633c52540127d717800a"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classRedMatrix_1_1Import_1_1Import.html#a5434325afb2c633c52540127d717800a">convert_child</a> ($child)</td></tr>
+<tr class="separator:a5434325afb2c633c52540127d717800a"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a33ed595de044c0ec1cd84cca719e31dc"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classRedMatrix_1_1Import_1_1Import.html#a33ed595de044c0ec1cd84cca719e31dc">store</a> ($item, $update=false)</td></tr>
+<tr class="separator:a33ed595de044c0ec1cd84cca719e31dc"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a8d138a9a7d4f79b81d3446ca216a602c"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classRedMatrix_1_1Import_1_1Import.html#a8d138a9a7d4f79b81d3446ca216a602c">run</a> ()</td></tr>
+<tr class="separator:a8d138a9a7d4f79b81d3446ca216a602c"><td class="memSeparator" colspan="2">&#160;</td></tr>
+</table><table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pro-attribs"></a>
+Protected Attributes</h2></td></tr>
+<tr class="memitem:ad0d2bdc3b388220479063915b4f5c2fc"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classRedMatrix_1_1Import_1_1Import.html#ad0d2bdc3b388220479063915b4f5c2fc">$itemlist</a> = null</td></tr>
+<tr class="separator:ad0d2bdc3b388220479063915b4f5c2fc"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a88c2eeba8d0cba3e7c12a2c45ba0fbc6"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classRedMatrix_1_1Import_1_1Import.html#a88c2eeba8d0cba3e7c12a2c45ba0fbc6">$src_items</a> = null</td></tr>
+<tr class="separator:a88c2eeba8d0cba3e7c12a2c45ba0fbc6"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a0a05dac405ccc5b617b7b7b3c8ed783c"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classRedMatrix_1_1Import_1_1Import.html#a0a05dac405ccc5b617b7b7b3c8ed783c">$items</a> = null</td></tr>
+<tr class="separator:a0a05dac405ccc5b617b7b7b3c8ed783c"><td class="memSeparator" colspan="2">&#160;</td></tr>
+</table><table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pri-attribs"></a>
+Private Attributes</h2></td></tr>
+<tr class="memitem:a864aac9fadb4846f5d9f840e8e0f440f"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classRedMatrix_1_1Import_1_1Import.html#a864aac9fadb4846f5d9f840e8e0f440f">$credentials</a> = null</td></tr>
+<tr class="separator:a864aac9fadb4846f5d9f840e8e0f440f"><td class="memSeparator" colspan="2">&#160;</td></tr>
+</table>
+<h2 class="groupheader">Member Function Documentation</h2>
+<a class="anchor" id="a5434325afb2c633c52540127d717800a"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">RedMatrix\Import\Import::convert_child </td>
+ <td>(</td>
+ <td class="paramtype">&#160;</td>
+ <td class="paramname"><em>$child</em></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p>Referenced by <a class="el" href="classRedMatrix_1_1Import_1_1Import.html#a8d138a9a7d4f79b81d3446ca216a602c">RedMatrix\Import\Import\run()</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a107703a43a1b0ceb2af7ae470cb3f218"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">RedMatrix\Import\Import::convert_item </td>
+ <td>(</td>
+ <td class="paramtype">&#160;</td>
+ <td class="paramname"><em>$item_ident</em></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p>Referenced by <a class="el" href="classRedMatrix_1_1Import_1_1Import.html#a8d138a9a7d4f79b81d3446ca216a602c">RedMatrix\Import\Import\run()</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="addf6e53dacd971eaab49be4b17a767d6"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">RedMatrix\Import\Import::convert_taxonomy </td>
+ <td>(</td>
+ <td class="paramtype">&#160;</td>
+ <td class="paramname"><em>$item_ident</em></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p>Referenced by <a class="el" href="classRedMatrix_1_1Import_1_1Import.html#a8d138a9a7d4f79b81d3446ca216a602c">RedMatrix\Import\Import\run()</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a57561904b0f127e0d9a3e2c33688daf8"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">RedMatrix\Import\Import::get_children </td>
+ <td>(</td>
+ <td class="paramtype">&#160;</td>
+ <td class="paramname"><em>$item_ident</em></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p>Referenced by <a class="el" href="classRedMatrix_1_1Import_1_1Import.html#a8d138a9a7d4f79b81d3446ca216a602c">RedMatrix\Import\Import\run()</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a24134929d9a8a682da2036a0bf326367"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">RedMatrix\Import\Import::get_credentials </td>
+ <td>(</td>
+ <td class="paramname"></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p>Referenced by <a class="el" href="classRedMatrix_1_1Import_1_1Import.html#a8d138a9a7d4f79b81d3446ca216a602c">RedMatrix\Import\Import\run()</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a27987a41cb703a796f1821baeb4774a2"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">RedMatrix\Import\Import::get_item </td>
+ <td>(</td>
+ <td class="paramtype">&#160;</td>
+ <td class="paramname"><em>$item_ident</em></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p>Referenced by <a class="el" href="classRedMatrix_1_1Import_1_1Import.html#a8d138a9a7d4f79b81d3446ca216a602c">RedMatrix\Import\Import\run()</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a772c28edf36aaf8e66007a95004c4059"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">RedMatrix\Import\Import::get_item_ident </td>
+ <td>(</td>
+ <td class="paramtype">&#160;</td>
+ <td class="paramname"><em>$item</em></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+</div>
+</div>
+<a class="anchor" id="a855cd5a79b95d269ae8737fae774e3bc"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">RedMatrix\Import\Import::get_itemlist </td>
+ <td>(</td>
+ <td class="paramname"></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p>Referenced by <a class="el" href="classRedMatrix_1_1Import_1_1Import.html#a8d138a9a7d4f79b81d3446ca216a602c">RedMatrix\Import\Import\run()</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="ae3c6472bea1a44025bc2e152604eb20c"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">RedMatrix\Import\Import::get_taxonomy </td>
+ <td>(</td>
+ <td class="paramtype">&#160;</td>
+ <td class="paramname"><em>$item_ident</em></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p>Referenced by <a class="el" href="classRedMatrix_1_1Import_1_1Import.html#a8d138a9a7d4f79b81d3446ca216a602c">RedMatrix\Import\Import\run()</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a8d138a9a7d4f79b81d3446ca216a602c"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">RedMatrix\Import\Import::run </td>
+ <td>(</td>
+ <td class="paramname"></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+</div>
+</div>
+<a class="anchor" id="a33ed595de044c0ec1cd84cca719e31dc"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">RedMatrix\Import\Import::store </td>
+ <td>(</td>
+ <td class="paramtype">&#160;</td>
+ <td class="paramname"><em>$item</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">&#160;</td>
+ <td class="paramname"><em>$update</em> = <code>false</code>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+</div>
+</div>
+<h2 class="groupheader">Member Data Documentation</h2>
+<a class="anchor" id="a864aac9fadb4846f5d9f840e8e0f440f"></a>
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+ <tr>
+ <td class="mlabels-left">
+ <table class="memname">
+ <tr>
+ <td class="memname">RedMatrix\Import\Import::$credentials = null</td>
+ </tr>
+ </table>
+ </td>
+ <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">private</span></span> </td>
+ </tr>
+</table>
+</div><div class="memdoc">
+
+<p>Referenced by <a class="el" href="classRedMatrix_1_1Import_1_1Import.html#a24134929d9a8a682da2036a0bf326367">RedMatrix\Import\Import\get_credentials()</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="ad0d2bdc3b388220479063915b4f5c2fc"></a>
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+ <tr>
+ <td class="mlabels-left">
+ <table class="memname">
+ <tr>
+ <td class="memname">RedMatrix\Import\Import::$itemlist = null</td>
+ </tr>
+ </table>
+ </td>
+ <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">protected</span></span> </td>
+ </tr>
+</table>
+</div><div class="memdoc">
+
+<p>Referenced by <a class="el" href="classRedMatrix_1_1Import_1_1Import.html#a855cd5a79b95d269ae8737fae774e3bc">RedMatrix\Import\Import\get_itemlist()</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a0a05dac405ccc5b617b7b7b3c8ed783c"></a>
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+ <tr>
+ <td class="mlabels-left">
+ <table class="memname">
+ <tr>
+ <td class="memname">RedMatrix\Import\Import::$items = null</td>
+ </tr>
+ </table>
+ </td>
+ <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">protected</span></span> </td>
+ </tr>
+</table>
+</div><div class="memdoc">
+
+</div>
+</div>
+<a class="anchor" id="a88c2eeba8d0cba3e7c12a2c45ba0fbc6"></a>
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+ <tr>
+ <td class="mlabels-left">
+ <table class="memname">
+ <tr>
+ <td class="memname">RedMatrix\Import\Import::$src_items = null</td>
+ </tr>
+ </table>
+ </td>
+ <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">protected</span></span> </td>
+ </tr>
+</table>
+</div><div class="memdoc">
+
+</div>
+</div>
+<hr/>The documentation for this class was generated from the following file:<ul>
+<li>include/Import/<a class="el" href="Importer_8php.html">Importer.php</a></li>
+</ul>
+</div><!-- contents -->
+</div><!-- doc-content -->
+
diff --git a/doc/html/classRedmatrix_1_1Import_1_1Import.js b/doc/html/classRedmatrix_1_1Import_1_1Import.js
new file mode 100644
index 000000000..03e429289
--- /dev/null
+++ b/doc/html/classRedmatrix_1_1Import_1_1Import.js
@@ -0,0 +1,18 @@
+var classRedMatrix_1_1Import_1_1Import =
+[
+ [ "convert_child", "classRedMatrix_1_1Import_1_1Import.html#a5434325afb2c633c52540127d717800a", null ],
+ [ "convert_item", "classRedMatrix_1_1Import_1_1Import.html#a107703a43a1b0ceb2af7ae470cb3f218", null ],
+ [ "convert_taxonomy", "classRedMatrix_1_1Import_1_1Import.html#addf6e53dacd971eaab49be4b17a767d6", null ],
+ [ "get_children", "classRedMatrix_1_1Import_1_1Import.html#a57561904b0f127e0d9a3e2c33688daf8", null ],
+ [ "get_credentials", "classRedMatrix_1_1Import_1_1Import.html#a24134929d9a8a682da2036a0bf326367", null ],
+ [ "get_item", "classRedMatrix_1_1Import_1_1Import.html#a27987a41cb703a796f1821baeb4774a2", null ],
+ [ "get_item_ident", "classRedMatrix_1_1Import_1_1Import.html#a772c28edf36aaf8e66007a95004c4059", null ],
+ [ "get_itemlist", "classRedMatrix_1_1Import_1_1Import.html#a855cd5a79b95d269ae8737fae774e3bc", null ],
+ [ "get_taxonomy", "classRedMatrix_1_1Import_1_1Import.html#ae3c6472bea1a44025bc2e152604eb20c", null ],
+ [ "run", "classRedMatrix_1_1Import_1_1Import.html#a8d138a9a7d4f79b81d3446ca216a602c", null ],
+ [ "store", "classRedMatrix_1_1Import_1_1Import.html#a33ed595de044c0ec1cd84cca719e31dc", null ],
+ [ "$credentials", "classRedMatrix_1_1Import_1_1Import.html#a864aac9fadb4846f5d9f840e8e0f440f", null ],
+ [ "$itemlist", "classRedMatrix_1_1Import_1_1Import.html#ad0d2bdc3b388220479063915b4f5c2fc", null ],
+ [ "$items", "classRedMatrix_1_1Import_1_1Import.html#a0a05dac405ccc5b617b7b7b3c8ed783c", null ],
+ [ "$src_items", "classRedMatrix_1_1Import_1_1Import.html#a88c2eeba8d0cba3e7c12a2c45ba0fbc6", null ]
+]; \ No newline at end of file
diff --git a/doc/html/classdba__driver-members.html b/doc/html/classdba__driver-members.html
index cf4075c93..40c9f7ed0 100644
--- a/doc/html/classdba__driver-members.html
+++ b/doc/html/classdba__driver-members.html
@@ -119,11 +119,23 @@ $(document).ready(function(){initNavTree('classdba__driver.html','');});
<tr class="even"><td class="entry"><a class="el" href="classdba__driver.html#af3541d13ccb7a3eddfc03e253c746186">__construct</a>($server, $port, $user, $pass, $db, $install=false)</td><td class="entry"><a class="el" href="classdba__driver.html">dba_driver</a></td><td class="entry"></td></tr>
<tr><td class="entry"><a class="el" href="classdba__driver.html#a1a8bc9dc839a6320a0e07d8047a6b721">__destruct</a>()</td><td class="entry"><a class="el" href="classdba__driver.html">dba_driver</a></td><td class="entry"></td></tr>
<tr class="even"><td class="entry"><a class="el" href="classdba__driver.html#a5afa54172f3c837df61643f8f5b2c975">close</a>()</td><td class="entry"><a class="el" href="classdba__driver.html">dba_driver</a></td><td class="entry"></td></tr>
- <tr><td class="entry"><a class="el" href="classdba__driver.html#ae533e62a240a793f17aef5ab4ef10edc">connect</a>($server, $port, $user, $pass, $db)</td><td class="entry"><a class="el" href="classdba__driver.html">dba_driver</a></td><td class="entry"></td></tr>
- <tr class="even"><td class="entry"><a class="el" href="classdba__driver.html#adcc1f8955120fec0708bce39202d0422">dbg</a>($dbg)</td><td class="entry"><a class="el" href="classdba__driver.html">dba_driver</a></td><td class="entry"></td></tr>
- <tr><td class="entry"><a class="el" href="classdba__driver.html#afc95ffa103a3290581b537670cde5311">escape</a>($str)</td><td class="entry"><a class="el" href="classdba__driver.html">dba_driver</a></td><td class="entry"></td></tr>
- <tr class="even"><td class="entry"><a class="el" href="classdba__driver.html#a4ccb27243e62a8ca30dd8e1b8cc67746">install</a>($server, $user, $pass, $db)</td><td class="entry"><a class="el" href="classdba__driver.html">dba_driver</a></td><td class="entry"></td></tr>
+ <tr><td class="entry"><a class="el" href="classdba__driver.html#ab9982f38a02f008b127a0f3ccc1e99f4">concat</a>($fld, $sep)</td><td class="entry"><a class="el" href="classdba__driver.html">dba_driver</a></td><td class="entry"></td></tr>
+ <tr class="even"><td class="entry"><a class="el" href="classdba__driver.html#ae533e62a240a793f17aef5ab4ef10edc">connect</a>($server, $port, $user, $pass, $db)</td><td class="entry"><a class="el" href="classdba__driver.html">dba_driver</a></td><td class="entry"></td></tr>
+ <tr><td class="entry"><a class="el" href="classdba__driver.html#adcc1f8955120fec0708bce39202d0422">dbg</a>($dbg)</td><td class="entry"><a class="el" href="classdba__driver.html">dba_driver</a></td><td class="entry"></td></tr>
+ <tr class="even"><td class="entry"><a class="el" href="classdba__driver.html#afc95ffa103a3290581b537670cde5311">escape</a>($str)</td><td class="entry"><a class="el" href="classdba__driver.html">dba_driver</a></td><td class="entry"></td></tr>
+ <tr><td class="entry"><a class="el" href="classdba__driver.html#a7dbe8318587ff1694825042bf58f4fbd">escapebin</a>($str)</td><td class="entry"><a class="el" href="classdba__driver.html">dba_driver</a></td><td class="entry"></td></tr>
+ <tr class="even"><td class="entry"><a class="el" href="classdba__driver.html#a8d6a79d39d7eaee5aea4e952c4529d48">get_install_script</a>()</td><td class="entry"><a class="el" href="classdba__driver.html">dba_driver</a></td><td class="entry"></td></tr>
+ <tr><td class="entry"><a class="el" href="classdba__driver.html#a65a5c7b355ab5529a43049e160006426">get_null_date</a>()</td><td class="entry"><a class="el" href="classdba__driver.html">dba_driver</a></td><td class="entry"></td></tr>
+ <tr class="even"><td class="entry"><a class="el" href="classdba__driver.html#a02165fc4bee63d040ebd963a4fa82a14">getdriver</a>()</td><td class="entry"><a class="el" href="classdba__driver.html">dba_driver</a></td><td class="entry"></td></tr>
+ <tr><td class="entry"><a class="el" href="classdba__driver.html#a4ccb27243e62a8ca30dd8e1b8cc67746">install</a>($server, $user, $pass, $db)</td><td class="entry"><a class="el" href="classdba__driver.html">dba_driver</a></td><td class="entry"></td></tr>
+ <tr class="even"><td class="entry"><a class="el" href="classdba__driver.html#a98d8523dcedda316085b4d4f856b6583">INSTALL_SCRIPT</a></td><td class="entry"><a class="el" href="classdba__driver.html">dba_driver</a></td><td class="entry"></td></tr>
+ <tr><td class="entry"><a class="el" href="classdba__driver.html#afce39394c010ea589d99a21579b2c31e">NULL_DATE</a></td><td class="entry"><a class="el" href="classdba__driver.html">dba_driver</a></td><td class="entry"></td></tr>
+ <tr class="even"><td class="entry"><a class="el" href="classdba__driver.html#a77e59dcbeab30ca6000131d2e9ad4092">optimize_table</a>($table)</td><td class="entry"><a class="el" href="classdba__driver.html">dba_driver</a></td><td class="entry"></td></tr>
<tr><td class="entry"><a class="el" href="classdba__driver.html#a558e738b88ae893cc5d79ffa3793d555">q</a>($sql)</td><td class="entry"><a class="el" href="classdba__driver.html">dba_driver</a></td><td class="entry"></td></tr>
+ <tr class="even"><td class="entry"><a class="el" href="classdba__driver.html#ac9127e9c55fcc93bcfbb323b9b99b9d9">quote_interval</a>($txt)</td><td class="entry"><a class="el" href="classdba__driver.html">dba_driver</a></td><td class="entry"></td></tr>
+ <tr><td class="entry"><a class="el" href="classdba__driver.html#ab43184239e1d6eb00a98319f4a3df155">unescapebin</a>($str)</td><td class="entry"><a class="el" href="classdba__driver.html">dba_driver</a></td><td class="entry"></td></tr>
+ <tr class="even"><td class="entry"><a class="el" href="classdba__driver.html#aa3325d982d4ee5d1114fd7e02a4356e8">UTC_NOW</a></td><td class="entry"><a class="el" href="classdba__driver.html">dba_driver</a></td><td class="entry"></td></tr>
+ <tr><td class="entry"><a class="el" href="classdba__driver.html#ad700712879719bee23752b8f424d97d0">utcnow</a>()</td><td class="entry"><a class="el" href="classdba__driver.html">dba_driver</a></td><td class="entry"></td></tr>
</table></div><!-- contents -->
</div><!-- doc-content -->
diff --git a/doc/html/classdba__driver.html b/doc/html/classdba__driver.html
index e70d8bf1f..4c917a0dd 100644
--- a/doc/html/classdba__driver.html
+++ b/doc/html/classdba__driver.html
@@ -114,38 +114,72 @@ $(document).ready(function(){initNavTree('classdba__driver.html','');});
<div class="title">dba_driver Class Reference</div> </div>
</div><!--header-->
<div class="contents">
+
+<p>abstract database driver class.
+ <a href="classdba__driver.html#details">More...</a></p>
<div class="dynheader">
Inheritance diagram for dba_driver:</div>
<div class="dyncontent">
<div class="center">
<img src="classdba__driver.png" usemap="#dba_driver_map" alt=""/>
<map id="dba_driver_map" name="dba_driver_map">
-<area href="classdba__mysql.html" alt="dba_mysql" shape="rect" coords="0,56,74,80"/>
-<area href="classdba__mysqli.html" alt="dba_mysqli" shape="rect" coords="84,56,158,80"/>
+<area href="classdba__mysql.html" alt="dba_mysql" shape="rect" coords="0,56,88,80"/>
+<area href="classdba__mysqli.html" alt="dba_mysqli" shape="rect" coords="98,56,186,80"/>
+<area href="classdba__postgres.html" alt="dba_postgres" shape="rect" coords="196,56,284,80"/>
</map>
</div></div>
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-methods"></a>
Public Member Functions</h2></td></tr>
<tr class="memitem:ae533e62a240a793f17aef5ab4ef10edc"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classdba__driver.html#ae533e62a240a793f17aef5ab4ef10edc">connect</a> ($server, $port, $user, $pass, $db)</td></tr>
+<tr class="memdesc:ae533e62a240a793f17aef5ab4ef10edc"><td class="mdescLeft">&#160;</td><td class="mdescRight">Connect to the database. <a href="#ae533e62a240a793f17aef5ab4ef10edc">More...</a><br/></td></tr>
<tr class="separator:ae533e62a240a793f17aef5ab4ef10edc"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a558e738b88ae893cc5d79ffa3793d555"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classdba__driver.html#a558e738b88ae893cc5d79ffa3793d555">q</a> ($sql)</td></tr>
+<tr class="memdesc:a558e738b88ae893cc5d79ffa3793d555"><td class="mdescLeft">&#160;</td><td class="mdescRight">Perform a DB query with the SQL statement $sql. <a href="#a558e738b88ae893cc5d79ffa3793d555">More...</a><br/></td></tr>
<tr class="separator:a558e738b88ae893cc5d79ffa3793d555"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:afc95ffa103a3290581b537670cde5311"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classdba__driver.html#afc95ffa103a3290581b537670cde5311">escape</a> ($str)</td></tr>
+<tr class="memdesc:afc95ffa103a3290581b537670cde5311"><td class="mdescLeft">&#160;</td><td class="mdescRight">Escape a string before being passed to a DB query. <a href="#afc95ffa103a3290581b537670cde5311">More...</a><br/></td></tr>
<tr class="separator:afc95ffa103a3290581b537670cde5311"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a5afa54172f3c837df61643f8f5b2c975"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classdba__driver.html#a5afa54172f3c837df61643f8f5b2c975">close</a> ()</td></tr>
+<tr class="memdesc:a5afa54172f3c837df61643f8f5b2c975"><td class="mdescLeft">&#160;</td><td class="mdescRight">Close the database connection. <a href="#a5afa54172f3c837df61643f8f5b2c975">More...</a><br/></td></tr>
<tr class="separator:a5afa54172f3c837df61643f8f5b2c975"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a02165fc4bee63d040ebd963a4fa82a14"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classdba__driver.html#a02165fc4bee63d040ebd963a4fa82a14">getdriver</a> ()</td></tr>
+<tr class="memdesc:a02165fc4bee63d040ebd963a4fa82a14"><td class="mdescLeft">&#160;</td><td class="mdescRight">Return text name for db driver. <a href="#a02165fc4bee63d040ebd963a4fa82a14">More...</a><br/></td></tr>
+<tr class="separator:a02165fc4bee63d040ebd963a4fa82a14"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:af3541d13ccb7a3eddfc03e253c746186"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classdba__driver.html#af3541d13ccb7a3eddfc03e253c746186">__construct</a> ($server, $port, $user, $pass, $db, $<a class="el" href="classdba__driver.html#a4ccb27243e62a8ca30dd8e1b8cc67746">install</a>=false)</td></tr>
<tr class="separator:af3541d13ccb7a3eddfc03e253c746186"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a65a5c7b355ab5529a43049e160006426"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classdba__driver.html#a65a5c7b355ab5529a43049e160006426">get_null_date</a> ()</td></tr>
+<tr class="separator:a65a5c7b355ab5529a43049e160006426"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a8d6a79d39d7eaee5aea4e952c4529d48"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classdba__driver.html#a8d6a79d39d7eaee5aea4e952c4529d48">get_install_script</a> ()</td></tr>
+<tr class="separator:a8d6a79d39d7eaee5aea4e952c4529d48"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ad700712879719bee23752b8f424d97d0"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classdba__driver.html#ad700712879719bee23752b8f424d97d0">utcnow</a> ()</td></tr>
+<tr class="separator:ad700712879719bee23752b8f424d97d0"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a4ccb27243e62a8ca30dd8e1b8cc67746"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classdba__driver.html#a4ccb27243e62a8ca30dd8e1b8cc67746">install</a> ($server, $user, $pass, $db)</td></tr>
<tr class="separator:a4ccb27243e62a8ca30dd8e1b8cc67746"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:adcc1f8955120fec0708bce39202d0422"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classdba__driver.html#adcc1f8955120fec0708bce39202d0422">dbg</a> ($dbg)</td></tr>
+<tr class="memdesc:adcc1f8955120fec0708bce39202d0422"><td class="mdescLeft">&#160;</td><td class="mdescRight">Sets the database driver's debugging state. <a href="#adcc1f8955120fec0708bce39202d0422">More...</a><br/></td></tr>
<tr class="separator:adcc1f8955120fec0708bce39202d0422"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a1a8bc9dc839a6320a0e07d8047a6b721"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classdba__driver.html#a1a8bc9dc839a6320a0e07d8047a6b721">__destruct</a> ()</td></tr>
<tr class="separator:a1a8bc9dc839a6320a0e07d8047a6b721"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ac9127e9c55fcc93bcfbb323b9b99b9d9"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classdba__driver.html#ac9127e9c55fcc93bcfbb323b9b99b9d9">quote_interval</a> ($txt)</td></tr>
+<tr class="separator:ac9127e9c55fcc93bcfbb323b9b99b9d9"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a77e59dcbeab30ca6000131d2e9ad4092"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classdba__driver.html#a77e59dcbeab30ca6000131d2e9ad4092">optimize_table</a> ($table)</td></tr>
+<tr class="separator:a77e59dcbeab30ca6000131d2e9ad4092"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ab9982f38a02f008b127a0f3ccc1e99f4"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classdba__driver.html#ab9982f38a02f008b127a0f3ccc1e99f4">concat</a> ($fld, $sep)</td></tr>
+<tr class="separator:ab9982f38a02f008b127a0f3ccc1e99f4"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a7dbe8318587ff1694825042bf58f4fbd"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classdba__driver.html#a7dbe8318587ff1694825042bf58f4fbd">escapebin</a> ($str)</td></tr>
+<tr class="separator:a7dbe8318587ff1694825042bf58f4fbd"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ab43184239e1d6eb00a98319f4a3df155"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classdba__driver.html#ab43184239e1d6eb00a98319f4a3df155">unescapebin</a> ($str)</td></tr>
+<tr class="separator:ab43184239e1d6eb00a98319f4a3df155"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-attribs"></a>
Public Attributes</h2></td></tr>
+<tr class="memitem:a98d8523dcedda316085b4d4f856b6583"><td class="memItemLeft" align="right" valign="top">const&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classdba__driver.html#a98d8523dcedda316085b4d4f856b6583">INSTALL_SCRIPT</a> ='<a class="el" href="classdba__driver.html#a4ccb27243e62a8ca30dd8e1b8cc67746">install</a>/schema_mysql.sql'</td></tr>
+<tr class="separator:a98d8523dcedda316085b4d4f856b6583"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:afce39394c010ea589d99a21579b2c31e"><td class="memItemLeft" align="right" valign="top">const&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classdba__driver.html#afce39394c010ea589d99a21579b2c31e">NULL_DATE</a> = '0000-00-00 00:00:00'</td></tr>
+<tr class="separator:afce39394c010ea589d99a21579b2c31e"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:aa3325d982d4ee5d1114fd7e02a4356e8"><td class="memItemLeft" align="right" valign="top">const&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classdba__driver.html#aa3325d982d4ee5d1114fd7e02a4356e8">UTC_NOW</a> = 'UTC_TIMESTAMP()'</td></tr>
+<tr class="separator:aa3325d982d4ee5d1114fd7e02a4356e8"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a205f6535e399700b6fca2492f96f2229"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classdba__driver.html#a205f6535e399700b6fca2492f96f2229">$connected</a> = false</td></tr>
<tr class="separator:a205f6535e399700b6fca2492f96f2229"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a84675d28c7bd9b7290dd37e66dbd216c"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classdba__driver.html#a84675d28c7bd9b7290dd37e66dbd216c">$error</a> = false</td></tr>
@@ -158,7 +192,10 @@ Protected Attributes</h2></td></tr>
<tr class="memitem:a3033b5f1c2716b52202faeaae2592fe6"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classdba__driver.html#a3033b5f1c2716b52202faeaae2592fe6">$db</a></td></tr>
<tr class="separator:a3033b5f1c2716b52202faeaae2592fe6"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
-<h2 class="groupheader">Constructor &amp; Destructor Documentation</h2>
+<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
+<div class="textblock"><p>abstract database driver class. </p>
+<p>This class gets extended by the real database driver classes, e.g. <a class="el" href="classdba__mysql.html">dba_mysql</a>, <a class="el" href="classdba__mysqli.html">dba_mysqli</a>. </p>
+</div><h2 class="groupheader">Constructor &amp; Destructor Documentation</h2>
<a class="anchor" id="af3541d13ccb7a3eddfc03e253c746186"></a>
<div class="memitem">
<div class="memproto">
@@ -246,10 +283,39 @@ Protected Attributes</h2></td></tr>
</table>
</div><div class="memdoc">
+<p>Close the database connection. </p>
+<p>This abstract function needs to be implemented in the real driver. </p>
+
<p>Referenced by <a class="el" href="classdba__driver.html#a1a8bc9dc839a6320a0e07d8047a6b721">__destruct()</a>.</p>
</div>
</div>
+<a class="anchor" id="ab9982f38a02f008b127a0f3ccc1e99f4"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">dba_driver::concat </td>
+ <td>(</td>
+ <td class="paramtype">&#160;</td>
+ <td class="paramname"><em>$fld</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">&#160;</td>
+ <td class="paramname"><em>$sep</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+</div>
+</div>
<a class="anchor" id="ae533e62a240a793f17aef5ab4ef10edc"></a>
<div class="memitem">
<div class="memproto">
@@ -300,6 +366,20 @@ Protected Attributes</h2></td></tr>
</table>
</div><div class="memdoc">
+<p>Connect to the database. </p>
+<p>This abstract function needs to be implemented in the real driver.</p>
+<dl class="params"><dt>Parameters</dt><dd>
+ <table class="params">
+ <tr><td class="paramtype">string</td><td class="paramname">$server</td><td>DB server name </td></tr>
+ <tr><td class="paramtype">string</td><td class="paramname">$port</td><td>DB port </td></tr>
+ <tr><td class="paramtype">string</td><td class="paramname">$user</td><td>DB username </td></tr>
+ <tr><td class="paramtype">string</td><td class="paramname">$pass</td><td>DB password </td></tr>
+ <tr><td class="paramtype">string</td><td class="paramname">$db</td><td>database name </td></tr>
+ </table>
+ </dd>
+</dl>
+<dl class="section return"><dt>Returns</dt><dd>bool </dd></dl>
+
<p>Referenced by <a class="el" href="classdba__driver.html#af3541d13ccb7a3eddfc03e253c746186">__construct()</a>.</p>
</div>
@@ -318,6 +398,14 @@ Protected Attributes</h2></td></tr>
</table>
</div><div class="memdoc">
+<p>Sets the database driver's debugging state. </p>
+<dl class="params"><dt>Parameters</dt><dd>
+ <table class="params">
+ <tr><td class="paramtype">int</td><td class="paramname">$dbg</td><td>0 to disable debugging </td></tr>
+ </table>
+ </dd>
+</dl>
+
</div>
</div>
<a class="anchor" id="afc95ffa103a3290581b537670cde5311"></a>
@@ -342,6 +430,87 @@ Protected Attributes</h2></td></tr>
</table>
</div><div class="memdoc">
+<p>Escape a string before being passed to a DB query. </p>
+<p>This abstract function needs to be implemented in the real driver.</p>
+<dl class="params"><dt>Parameters</dt><dd>
+ <table class="params">
+ <tr><td class="paramtype">string</td><td class="paramname">$str</td><td>The string to escape. </td></tr>
+ </table>
+ </dd>
+</dl>
+
+</div>
+</div>
+<a class="anchor" id="a7dbe8318587ff1694825042bf58f4fbd"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">dba_driver::escapebin </td>
+ <td>(</td>
+ <td class="paramtype">&#160;</td>
+ <td class="paramname"><em>$str</em></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+</div>
+</div>
+<a class="anchor" id="a8d6a79d39d7eaee5aea4e952c4529d48"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">dba_driver::get_install_script </td>
+ <td>(</td>
+ <td class="paramname"></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+</div>
+</div>
+<a class="anchor" id="a65a5c7b355ab5529a43049e160006426"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">dba_driver::get_null_date </td>
+ <td>(</td>
+ <td class="paramname"></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+</div>
+</div>
+<a class="anchor" id="a02165fc4bee63d040ebd963a4fa82a14"></a>
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+ <tr>
+ <td class="mlabels-left">
+ <table class="memname">
+ <tr>
+ <td class="memname">dba_driver::getdriver </td>
+ <td>(</td>
+ <td class="paramname"></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+ </td>
+ <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">abstract</span></span> </td>
+ </tr>
+</table>
+</div><div class="memdoc">
+
+<p>Return text name for db driver. </p>
+<p>This abstract function needs to be implemented in the real driver. </p>
+
</div>
</div>
<a class="anchor" id="a4ccb27243e62a8ca30dd8e1b8cc67746"></a>
@@ -384,6 +553,22 @@ Protected Attributes</h2></td></tr>
</div>
</div>
+<a class="anchor" id="a77e59dcbeab30ca6000131d2e9ad4092"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">dba_driver::optimize_table </td>
+ <td>(</td>
+ <td class="paramtype">&#160;</td>
+ <td class="paramname"><em>$table</em></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+</div>
+</div>
<a class="anchor" id="a558e738b88ae893cc5d79ffa3793d555"></a>
<div class="memitem">
<div class="memproto">
@@ -406,6 +591,64 @@ Protected Attributes</h2></td></tr>
</table>
</div><div class="memdoc">
+<p>Perform a DB query with the SQL statement $sql. </p>
+<p>This abstract function needs to be implemented in the real driver.</p>
+<dl class="params"><dt>Parameters</dt><dd>
+ <table class="params">
+ <tr><td class="paramtype">string</td><td class="paramname">$sql</td><td>The SQL query to execute </td></tr>
+ </table>
+ </dd>
+</dl>
+
+<p>Referenced by <a class="el" href="classdba__driver.html#a77e59dcbeab30ca6000131d2e9ad4092">optimize_table()</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="ac9127e9c55fcc93bcfbb323b9b99b9d9"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">dba_driver::quote_interval </td>
+ <td>(</td>
+ <td class="paramtype">&#160;</td>
+ <td class="paramname"><em>$txt</em></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+</div>
+</div>
+<a class="anchor" id="ab43184239e1d6eb00a98319f4a3df155"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">dba_driver::unescapebin </td>
+ <td>(</td>
+ <td class="paramtype">&#160;</td>
+ <td class="paramname"><em>$str</em></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+</div>
+</div>
+<a class="anchor" id="ad700712879719bee23752b8f424d97d0"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">dba_driver::utcnow </td>
+ <td>(</td>
+ <td class="paramname"></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
</div>
</div>
<h2 class="groupheader">Member Data Documentation</h2>
@@ -419,6 +662,8 @@ Protected Attributes</h2></td></tr>
</table>
</div><div class="memdoc">
+<p>Referenced by <a class="el" href="classdba__postgres.html#ab36244320f5b71dba92d9318ccf3f34e">dba_postgres\connect()</a>.</p>
+
</div>
</div>
<a class="anchor" id="a3033b5f1c2716b52202faeaae2592fe6"></a>
@@ -439,7 +684,7 @@ Protected Attributes</h2></td></tr>
</table>
</div><div class="memdoc">
-<p>Referenced by <a class="el" href="classdba__driver.html#af3541d13ccb7a3eddfc03e253c746186">__construct()</a>, <a class="el" href="classdba__mysqli.html#add062bd93961e5f0194d94820e9a51b1">dba_mysqli\connect()</a>, and <a class="el" href="classdba__mysql.html#a1887338627ce0e28786839363014bd0b">dba_mysql\connect()</a>.</p>
+<p>Referenced by <a class="el" href="classdba__driver.html#af3541d13ccb7a3eddfc03e253c746186">__construct()</a>, <a class="el" href="classdba__mysqli.html#add062bd93961e5f0194d94820e9a51b1">dba_mysqli\connect()</a>, <a class="el" href="classdba__mysql.html#a1887338627ce0e28786839363014bd0b">dba_mysql\connect()</a>, and <a class="el" href="classdba__postgres.html#ab36244320f5b71dba92d9318ccf3f34e">dba_postgres\connect()</a>.</p>
</div>
</div>
@@ -475,6 +720,42 @@ Protected Attributes</h2></td></tr>
</div>
</div>
+<a class="anchor" id="a98d8523dcedda316085b4d4f856b6583"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">const dba_driver::INSTALL_SCRIPT ='<a class="el" href="classdba__driver.html#a4ccb27243e62a8ca30dd8e1b8cc67746">install</a>/schema_mysql.sql'</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+</div>
+</div>
+<a class="anchor" id="afce39394c010ea589d99a21579b2c31e"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">const dba_driver::NULL_DATE = '0000-00-00 00:00:00'</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+</div>
+</div>
+<a class="anchor" id="aa3325d982d4ee5d1114fd7e02a4356e8"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">const dba_driver::UTC_NOW = 'UTC_TIMESTAMP()'</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+</div>
+</div>
<hr/>The documentation for this class was generated from the following file:<ul>
<li>include/dba/<a class="el" href="dba__driver_8php.html">dba_driver.php</a></li>
</ul>
diff --git a/doc/html/classdba__driver.js b/doc/html/classdba__driver.js
index 14c656ca8..ea24b64f9 100644
--- a/doc/html/classdba__driver.js
+++ b/doc/html/classdba__driver.js
@@ -3,13 +3,25 @@ var classdba__driver =
[ "__construct", "classdba__driver.html#af3541d13ccb7a3eddfc03e253c746186", null ],
[ "__destruct", "classdba__driver.html#a1a8bc9dc839a6320a0e07d8047a6b721", null ],
[ "close", "classdba__driver.html#a5afa54172f3c837df61643f8f5b2c975", null ],
+ [ "concat", "classdba__driver.html#ab9982f38a02f008b127a0f3ccc1e99f4", null ],
[ "connect", "classdba__driver.html#ae533e62a240a793f17aef5ab4ef10edc", null ],
[ "dbg", "classdba__driver.html#adcc1f8955120fec0708bce39202d0422", null ],
[ "escape", "classdba__driver.html#afc95ffa103a3290581b537670cde5311", null ],
+ [ "escapebin", "classdba__driver.html#a7dbe8318587ff1694825042bf58f4fbd", null ],
+ [ "get_install_script", "classdba__driver.html#a8d6a79d39d7eaee5aea4e952c4529d48", null ],
+ [ "get_null_date", "classdba__driver.html#a65a5c7b355ab5529a43049e160006426", null ],
+ [ "getdriver", "classdba__driver.html#a02165fc4bee63d040ebd963a4fa82a14", null ],
[ "install", "classdba__driver.html#a4ccb27243e62a8ca30dd8e1b8cc67746", null ],
+ [ "optimize_table", "classdba__driver.html#a77e59dcbeab30ca6000131d2e9ad4092", null ],
[ "q", "classdba__driver.html#a558e738b88ae893cc5d79ffa3793d555", null ],
+ [ "quote_interval", "classdba__driver.html#ac9127e9c55fcc93bcfbb323b9b99b9d9", null ],
+ [ "unescapebin", "classdba__driver.html#ab43184239e1d6eb00a98319f4a3df155", null ],
+ [ "utcnow", "classdba__driver.html#ad700712879719bee23752b8f424d97d0", null ],
[ "$connected", "classdba__driver.html#a205f6535e399700b6fca2492f96f2229", null ],
[ "$db", "classdba__driver.html#a3033b5f1c2716b52202faeaae2592fe6", null ],
[ "$debug", "classdba__driver.html#af48e2afeded5285766bf92e22123ed03", null ],
- [ "$error", "classdba__driver.html#a84675d28c7bd9b7290dd37e66dbd216c", null ]
+ [ "$error", "classdba__driver.html#a84675d28c7bd9b7290dd37e66dbd216c", null ],
+ [ "INSTALL_SCRIPT", "classdba__driver.html#a98d8523dcedda316085b4d4f856b6583", null ],
+ [ "NULL_DATE", "classdba__driver.html#afce39394c010ea589d99a21579b2c31e", null ],
+ [ "UTC_NOW", "classdba__driver.html#aa3325d982d4ee5d1114fd7e02a4356e8", null ]
]; \ No newline at end of file
diff --git a/doc/html/classdba__driver.png b/doc/html/classdba__driver.png
index 7c5b7cf41..b9cc8c832 100644
--- a/doc/html/classdba__driver.png
+++ b/doc/html/classdba__driver.png
Binary files differ
diff --git a/doc/html/classdba__mysql-members.html b/doc/html/classdba__mysql-members.html
index 15a22064f..a74cfc456 100644
--- a/doc/html/classdba__mysql-members.html
+++ b/doc/html/classdba__mysql-members.html
@@ -119,11 +119,23 @@ $(document).ready(function(){initNavTree('classdba__mysql.html','');});
<tr class="even"><td class="entry"><a class="el" href="classdba__driver.html#af3541d13ccb7a3eddfc03e253c746186">__construct</a>($server, $port, $user, $pass, $db, $install=false)</td><td class="entry"><a class="el" href="classdba__driver.html">dba_driver</a></td><td class="entry"></td></tr>
<tr><td class="entry"><a class="el" href="classdba__driver.html#a1a8bc9dc839a6320a0e07d8047a6b721">__destruct</a>()</td><td class="entry"><a class="el" href="classdba__driver.html">dba_driver</a></td><td class="entry"></td></tr>
<tr class="even"><td class="entry"><a class="el" href="classdba__mysql.html#a850586714ef897bd25f643c89b4ef76e">close</a>()</td><td class="entry"><a class="el" href="classdba__mysql.html">dba_mysql</a></td><td class="entry"></td></tr>
- <tr><td class="entry"><a class="el" href="classdba__mysql.html#a1887338627ce0e28786839363014bd0b">connect</a>($server, $port, $user, $pass, $db)</td><td class="entry"><a class="el" href="classdba__mysql.html">dba_mysql</a></td><td class="entry"></td></tr>
- <tr class="even"><td class="entry"><a class="el" href="classdba__driver.html#adcc1f8955120fec0708bce39202d0422">dbg</a>($dbg)</td><td class="entry"><a class="el" href="classdba__driver.html">dba_driver</a></td><td class="entry"></td></tr>
- <tr><td class="entry"><a class="el" href="classdba__mysql.html#a99a7691ea6cb1300031fb6549379066e">escape</a>($str)</td><td class="entry"><a class="el" href="classdba__mysql.html">dba_mysql</a></td><td class="entry"></td></tr>
- <tr class="even"><td class="entry"><a class="el" href="classdba__driver.html#a4ccb27243e62a8ca30dd8e1b8cc67746">install</a>($server, $user, $pass, $db)</td><td class="entry"><a class="el" href="classdba__driver.html">dba_driver</a></td><td class="entry"></td></tr>
+ <tr><td class="entry"><a class="el" href="classdba__driver.html#ab9982f38a02f008b127a0f3ccc1e99f4">concat</a>($fld, $sep)</td><td class="entry"><a class="el" href="classdba__driver.html">dba_driver</a></td><td class="entry"></td></tr>
+ <tr class="even"><td class="entry"><a class="el" href="classdba__mysql.html#a1887338627ce0e28786839363014bd0b">connect</a>($server, $port, $user, $pass, $db)</td><td class="entry"><a class="el" href="classdba__mysql.html">dba_mysql</a></td><td class="entry"></td></tr>
+ <tr><td class="entry"><a class="el" href="classdba__driver.html#adcc1f8955120fec0708bce39202d0422">dbg</a>($dbg)</td><td class="entry"><a class="el" href="classdba__driver.html">dba_driver</a></td><td class="entry"></td></tr>
+ <tr class="even"><td class="entry"><a class="el" href="classdba__mysql.html#a99a7691ea6cb1300031fb6549379066e">escape</a>($str)</td><td class="entry"><a class="el" href="classdba__mysql.html">dba_mysql</a></td><td class="entry"></td></tr>
+ <tr><td class="entry"><a class="el" href="classdba__driver.html#a7dbe8318587ff1694825042bf58f4fbd">escapebin</a>($str)</td><td class="entry"><a class="el" href="classdba__driver.html">dba_driver</a></td><td class="entry"></td></tr>
+ <tr class="even"><td class="entry"><a class="el" href="classdba__driver.html#a8d6a79d39d7eaee5aea4e952c4529d48">get_install_script</a>()</td><td class="entry"><a class="el" href="classdba__driver.html">dba_driver</a></td><td class="entry"></td></tr>
+ <tr><td class="entry"><a class="el" href="classdba__driver.html#a65a5c7b355ab5529a43049e160006426">get_null_date</a>()</td><td class="entry"><a class="el" href="classdba__driver.html">dba_driver</a></td><td class="entry"></td></tr>
+ <tr class="even"><td class="entry"><a class="el" href="classdba__mysql.html#a31011edd67b6b394355bf04cedb498d0">getdriver</a>()</td><td class="entry"><a class="el" href="classdba__mysql.html">dba_mysql</a></td><td class="entry"></td></tr>
+ <tr><td class="entry"><a class="el" href="classdba__driver.html#a4ccb27243e62a8ca30dd8e1b8cc67746">install</a>($server, $user, $pass, $db)</td><td class="entry"><a class="el" href="classdba__driver.html">dba_driver</a></td><td class="entry"></td></tr>
+ <tr class="even"><td class="entry"><a class="el" href="classdba__driver.html#a98d8523dcedda316085b4d4f856b6583">INSTALL_SCRIPT</a></td><td class="entry"><a class="el" href="classdba__driver.html">dba_driver</a></td><td class="entry"></td></tr>
+ <tr><td class="entry"><a class="el" href="classdba__driver.html#afce39394c010ea589d99a21579b2c31e">NULL_DATE</a></td><td class="entry"><a class="el" href="classdba__driver.html">dba_driver</a></td><td class="entry"></td></tr>
+ <tr class="even"><td class="entry"><a class="el" href="classdba__driver.html#a77e59dcbeab30ca6000131d2e9ad4092">optimize_table</a>($table)</td><td class="entry"><a class="el" href="classdba__driver.html">dba_driver</a></td><td class="entry"></td></tr>
<tr><td class="entry"><a class="el" href="classdba__mysql.html#ac3fd60c278f400907322dac578754a99">q</a>($sql)</td><td class="entry"><a class="el" href="classdba__mysql.html">dba_mysql</a></td><td class="entry"></td></tr>
+ <tr class="even"><td class="entry"><a class="el" href="classdba__driver.html#ac9127e9c55fcc93bcfbb323b9b99b9d9">quote_interval</a>($txt)</td><td class="entry"><a class="el" href="classdba__driver.html">dba_driver</a></td><td class="entry"></td></tr>
+ <tr><td class="entry"><a class="el" href="classdba__driver.html#ab43184239e1d6eb00a98319f4a3df155">unescapebin</a>($str)</td><td class="entry"><a class="el" href="classdba__driver.html">dba_driver</a></td><td class="entry"></td></tr>
+ <tr class="even"><td class="entry"><a class="el" href="classdba__driver.html#aa3325d982d4ee5d1114fd7e02a4356e8">UTC_NOW</a></td><td class="entry"><a class="el" href="classdba__driver.html">dba_driver</a></td><td class="entry"></td></tr>
+ <tr><td class="entry"><a class="el" href="classdba__driver.html#ad700712879719bee23752b8f424d97d0">utcnow</a>()</td><td class="entry"><a class="el" href="classdba__driver.html">dba_driver</a></td><td class="entry"></td></tr>
</table></div><!-- contents -->
</div><!-- doc-content -->
diff --git a/doc/html/classdba__mysql.html b/doc/html/classdba__mysql.html
index df61678d5..c0bd780a2 100644
--- a/doc/html/classdba__mysql.html
+++ b/doc/html/classdba__mysql.html
@@ -118,7 +118,7 @@ Inheritance diagram for dba_mysql:</div>
<div class="center">
<img src="classdba__mysql.png" usemap="#dba_mysql_map" alt=""/>
<map id="dba_mysql_map" name="dba_mysql_map">
-<area href="classdba__driver.html" alt="dba_driver" shape="rect" coords="0,0,74,24"/>
+<area href="classdba__driver.html" title="abstract database driver class." alt="dba_driver" shape="rect" coords="0,0,74,24"/>
</map>
</div></div>
<table class="memberdecls">
@@ -132,27 +132,59 @@ Public Member Functions</h2></td></tr>
<tr class="separator:a99a7691ea6cb1300031fb6549379066e"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a850586714ef897bd25f643c89b4ef76e"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classdba__mysql.html#a850586714ef897bd25f643c89b4ef76e">close</a> ()</td></tr>
<tr class="separator:a850586714ef897bd25f643c89b4ef76e"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a31011edd67b6b394355bf04cedb498d0"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classdba__mysql.html#a31011edd67b6b394355bf04cedb498d0">getdriver</a> ()</td></tr>
+<tr class="separator:a31011edd67b6b394355bf04cedb498d0"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="inherit_header pub_methods_classdba__driver"><td colspan="2" onclick="javascript:toggleInherit('pub_methods_classdba__driver')"><img src="closed.png" alt="-"/>&#160;Public Member Functions inherited from <a class="el" href="classdba__driver.html">dba_driver</a></td></tr>
<tr class="memitem:ae533e62a240a793f17aef5ab4ef10edc inherit pub_methods_classdba__driver"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classdba__driver.html#ae533e62a240a793f17aef5ab4ef10edc">connect</a> ($server, $port, $user, $pass, $db)</td></tr>
+<tr class="memdesc:ae533e62a240a793f17aef5ab4ef10edc inherit pub_methods_classdba__driver"><td class="mdescLeft">&#160;</td><td class="mdescRight">Connect to the database. <a href="#ae533e62a240a793f17aef5ab4ef10edc">More...</a><br/></td></tr>
<tr class="separator:ae533e62a240a793f17aef5ab4ef10edc inherit pub_methods_classdba__driver"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a558e738b88ae893cc5d79ffa3793d555 inherit pub_methods_classdba__driver"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classdba__driver.html#a558e738b88ae893cc5d79ffa3793d555">q</a> ($sql)</td></tr>
+<tr class="memdesc:a558e738b88ae893cc5d79ffa3793d555 inherit pub_methods_classdba__driver"><td class="mdescLeft">&#160;</td><td class="mdescRight">Perform a DB query with the SQL statement $sql. <a href="#a558e738b88ae893cc5d79ffa3793d555">More...</a><br/></td></tr>
<tr class="separator:a558e738b88ae893cc5d79ffa3793d555 inherit pub_methods_classdba__driver"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:afc95ffa103a3290581b537670cde5311 inherit pub_methods_classdba__driver"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classdba__driver.html#afc95ffa103a3290581b537670cde5311">escape</a> ($str)</td></tr>
+<tr class="memdesc:afc95ffa103a3290581b537670cde5311 inherit pub_methods_classdba__driver"><td class="mdescLeft">&#160;</td><td class="mdescRight">Escape a string before being passed to a DB query. <a href="#afc95ffa103a3290581b537670cde5311">More...</a><br/></td></tr>
<tr class="separator:afc95ffa103a3290581b537670cde5311 inherit pub_methods_classdba__driver"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a5afa54172f3c837df61643f8f5b2c975 inherit pub_methods_classdba__driver"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classdba__driver.html#a5afa54172f3c837df61643f8f5b2c975">close</a> ()</td></tr>
+<tr class="memdesc:a5afa54172f3c837df61643f8f5b2c975 inherit pub_methods_classdba__driver"><td class="mdescLeft">&#160;</td><td class="mdescRight">Close the database connection. <a href="#a5afa54172f3c837df61643f8f5b2c975">More...</a><br/></td></tr>
<tr class="separator:a5afa54172f3c837df61643f8f5b2c975 inherit pub_methods_classdba__driver"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a02165fc4bee63d040ebd963a4fa82a14 inherit pub_methods_classdba__driver"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classdba__driver.html#a02165fc4bee63d040ebd963a4fa82a14">getdriver</a> ()</td></tr>
+<tr class="memdesc:a02165fc4bee63d040ebd963a4fa82a14 inherit pub_methods_classdba__driver"><td class="mdescLeft">&#160;</td><td class="mdescRight">Return text name for db driver. <a href="#a02165fc4bee63d040ebd963a4fa82a14">More...</a><br/></td></tr>
+<tr class="separator:a02165fc4bee63d040ebd963a4fa82a14 inherit pub_methods_classdba__driver"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:af3541d13ccb7a3eddfc03e253c746186 inherit pub_methods_classdba__driver"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classdba__driver.html#af3541d13ccb7a3eddfc03e253c746186">__construct</a> ($server, $port, $user, $pass, $db, $<a class="el" href="classdba__driver.html#a4ccb27243e62a8ca30dd8e1b8cc67746">install</a>=false)</td></tr>
<tr class="separator:af3541d13ccb7a3eddfc03e253c746186 inherit pub_methods_classdba__driver"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a65a5c7b355ab5529a43049e160006426 inherit pub_methods_classdba__driver"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classdba__driver.html#a65a5c7b355ab5529a43049e160006426">get_null_date</a> ()</td></tr>
+<tr class="separator:a65a5c7b355ab5529a43049e160006426 inherit pub_methods_classdba__driver"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a8d6a79d39d7eaee5aea4e952c4529d48 inherit pub_methods_classdba__driver"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classdba__driver.html#a8d6a79d39d7eaee5aea4e952c4529d48">get_install_script</a> ()</td></tr>
+<tr class="separator:a8d6a79d39d7eaee5aea4e952c4529d48 inherit pub_methods_classdba__driver"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ad700712879719bee23752b8f424d97d0 inherit pub_methods_classdba__driver"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classdba__driver.html#ad700712879719bee23752b8f424d97d0">utcnow</a> ()</td></tr>
+<tr class="separator:ad700712879719bee23752b8f424d97d0 inherit pub_methods_classdba__driver"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a4ccb27243e62a8ca30dd8e1b8cc67746 inherit pub_methods_classdba__driver"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classdba__driver.html#a4ccb27243e62a8ca30dd8e1b8cc67746">install</a> ($server, $user, $pass, $db)</td></tr>
<tr class="separator:a4ccb27243e62a8ca30dd8e1b8cc67746 inherit pub_methods_classdba__driver"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:adcc1f8955120fec0708bce39202d0422 inherit pub_methods_classdba__driver"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classdba__driver.html#adcc1f8955120fec0708bce39202d0422">dbg</a> ($dbg)</td></tr>
+<tr class="memdesc:adcc1f8955120fec0708bce39202d0422 inherit pub_methods_classdba__driver"><td class="mdescLeft">&#160;</td><td class="mdescRight">Sets the database driver's debugging state. <a href="#adcc1f8955120fec0708bce39202d0422">More...</a><br/></td></tr>
<tr class="separator:adcc1f8955120fec0708bce39202d0422 inherit pub_methods_classdba__driver"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a1a8bc9dc839a6320a0e07d8047a6b721 inherit pub_methods_classdba__driver"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classdba__driver.html#a1a8bc9dc839a6320a0e07d8047a6b721">__destruct</a> ()</td></tr>
<tr class="separator:a1a8bc9dc839a6320a0e07d8047a6b721 inherit pub_methods_classdba__driver"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ac9127e9c55fcc93bcfbb323b9b99b9d9 inherit pub_methods_classdba__driver"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classdba__driver.html#ac9127e9c55fcc93bcfbb323b9b99b9d9">quote_interval</a> ($txt)</td></tr>
+<tr class="separator:ac9127e9c55fcc93bcfbb323b9b99b9d9 inherit pub_methods_classdba__driver"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a77e59dcbeab30ca6000131d2e9ad4092 inherit pub_methods_classdba__driver"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classdba__driver.html#a77e59dcbeab30ca6000131d2e9ad4092">optimize_table</a> ($table)</td></tr>
+<tr class="separator:a77e59dcbeab30ca6000131d2e9ad4092 inherit pub_methods_classdba__driver"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ab9982f38a02f008b127a0f3ccc1e99f4 inherit pub_methods_classdba__driver"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classdba__driver.html#ab9982f38a02f008b127a0f3ccc1e99f4">concat</a> ($fld, $sep)</td></tr>
+<tr class="separator:ab9982f38a02f008b127a0f3ccc1e99f4 inherit pub_methods_classdba__driver"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a7dbe8318587ff1694825042bf58f4fbd inherit pub_methods_classdba__driver"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classdba__driver.html#a7dbe8318587ff1694825042bf58f4fbd">escapebin</a> ($str)</td></tr>
+<tr class="separator:a7dbe8318587ff1694825042bf58f4fbd inherit pub_methods_classdba__driver"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ab43184239e1d6eb00a98319f4a3df155 inherit pub_methods_classdba__driver"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classdba__driver.html#ab43184239e1d6eb00a98319f4a3df155">unescapebin</a> ($str)</td></tr>
+<tr class="separator:ab43184239e1d6eb00a98319f4a3df155 inherit pub_methods_classdba__driver"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="inherited"></a>
Additional Inherited Members</h2></td></tr>
<tr class="inherit_header pub_attribs_classdba__driver"><td colspan="2" onclick="javascript:toggleInherit('pub_attribs_classdba__driver')"><img src="closed.png" alt="-"/>&#160;Public Attributes inherited from <a class="el" href="classdba__driver.html">dba_driver</a></td></tr>
+<tr class="memitem:a98d8523dcedda316085b4d4f856b6583 inherit pub_attribs_classdba__driver"><td class="memItemLeft" align="right" valign="top">const&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classdba__driver.html#a98d8523dcedda316085b4d4f856b6583">INSTALL_SCRIPT</a> ='<a class="el" href="classdba__driver.html#a4ccb27243e62a8ca30dd8e1b8cc67746">install</a>/schema_mysql.sql'</td></tr>
+<tr class="separator:a98d8523dcedda316085b4d4f856b6583 inherit pub_attribs_classdba__driver"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:afce39394c010ea589d99a21579b2c31e inherit pub_attribs_classdba__driver"><td class="memItemLeft" align="right" valign="top">const&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classdba__driver.html#afce39394c010ea589d99a21579b2c31e">NULL_DATE</a> = '0000-00-00 00:00:00'</td></tr>
+<tr class="separator:afce39394c010ea589d99a21579b2c31e inherit pub_attribs_classdba__driver"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:aa3325d982d4ee5d1114fd7e02a4356e8 inherit pub_attribs_classdba__driver"><td class="memItemLeft" align="right" valign="top">const&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classdba__driver.html#aa3325d982d4ee5d1114fd7e02a4356e8">UTC_NOW</a> = 'UTC_TIMESTAMP()'</td></tr>
+<tr class="separator:aa3325d982d4ee5d1114fd7e02a4356e8 inherit pub_attribs_classdba__driver"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a205f6535e399700b6fca2492f96f2229 inherit pub_attribs_classdba__driver"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classdba__driver.html#a205f6535e399700b6fca2492f96f2229">$connected</a> = false</td></tr>
<tr class="separator:a205f6535e399700b6fca2492f96f2229 inherit pub_attribs_classdba__driver"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a84675d28c7bd9b7290dd37e66dbd216c inherit pub_attribs_classdba__driver"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classdba__driver.html#a84675d28c7bd9b7290dd37e66dbd216c">$error</a> = false</td></tr>
@@ -239,6 +271,21 @@ Additional Inherited Members</h2></td></tr>
</div>
</div>
+<a class="anchor" id="a31011edd67b6b394355bf04cedb498d0"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">dba_mysql::getdriver </td>
+ <td>(</td>
+ <td class="paramname"></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+</div>
+</div>
<a class="anchor" id="ac3fd60c278f400907322dac578754a99"></a>
<div class="memitem">
<div class="memproto">
diff --git a/doc/html/classdba__mysql.js b/doc/html/classdba__mysql.js
index 9e5452f55..ec4c52eaf 100644
--- a/doc/html/classdba__mysql.js
+++ b/doc/html/classdba__mysql.js
@@ -3,5 +3,6 @@ var classdba__mysql =
[ "close", "classdba__mysql.html#a850586714ef897bd25f643c89b4ef76e", null ],
[ "connect", "classdba__mysql.html#a1887338627ce0e28786839363014bd0b", null ],
[ "escape", "classdba__mysql.html#a99a7691ea6cb1300031fb6549379066e", null ],
+ [ "getdriver", "classdba__mysql.html#a31011edd67b6b394355bf04cedb498d0", null ],
[ "q", "classdba__mysql.html#ac3fd60c278f400907322dac578754a99", null ]
]; \ No newline at end of file
diff --git a/doc/html/classdba__mysqli-members.html b/doc/html/classdba__mysqli-members.html
index cdfcb2dc4..0c43b330e 100644
--- a/doc/html/classdba__mysqli-members.html
+++ b/doc/html/classdba__mysqli-members.html
@@ -119,11 +119,23 @@ $(document).ready(function(){initNavTree('classdba__mysqli.html','');});
<tr class="even"><td class="entry"><a class="el" href="classdba__driver.html#af3541d13ccb7a3eddfc03e253c746186">__construct</a>($server, $port, $user, $pass, $db, $install=false)</td><td class="entry"><a class="el" href="classdba__driver.html">dba_driver</a></td><td class="entry"></td></tr>
<tr><td class="entry"><a class="el" href="classdba__driver.html#a1a8bc9dc839a6320a0e07d8047a6b721">__destruct</a>()</td><td class="entry"><a class="el" href="classdba__driver.html">dba_driver</a></td><td class="entry"></td></tr>
<tr class="even"><td class="entry"><a class="el" href="classdba__mysqli.html#acb38f2c851187ad632ecfab30fdfab55">close</a>()</td><td class="entry"><a class="el" href="classdba__mysqli.html">dba_mysqli</a></td><td class="entry"></td></tr>
- <tr><td class="entry"><a class="el" href="classdba__mysqli.html#add062bd93961e5f0194d94820e9a51b1">connect</a>($server, $port, $user, $pass, $db)</td><td class="entry"><a class="el" href="classdba__mysqli.html">dba_mysqli</a></td><td class="entry"></td></tr>
- <tr class="even"><td class="entry"><a class="el" href="classdba__driver.html#adcc1f8955120fec0708bce39202d0422">dbg</a>($dbg)</td><td class="entry"><a class="el" href="classdba__driver.html">dba_driver</a></td><td class="entry"></td></tr>
- <tr><td class="entry"><a class="el" href="classdba__mysqli.html#a27d6a748af7f80028801306e7ea33f64">escape</a>($str)</td><td class="entry"><a class="el" href="classdba__mysqli.html">dba_mysqli</a></td><td class="entry"></td></tr>
- <tr class="even"><td class="entry"><a class="el" href="classdba__driver.html#a4ccb27243e62a8ca30dd8e1b8cc67746">install</a>($server, $user, $pass, $db)</td><td class="entry"><a class="el" href="classdba__driver.html">dba_driver</a></td><td class="entry"></td></tr>
+ <tr><td class="entry"><a class="el" href="classdba__driver.html#ab9982f38a02f008b127a0f3ccc1e99f4">concat</a>($fld, $sep)</td><td class="entry"><a class="el" href="classdba__driver.html">dba_driver</a></td><td class="entry"></td></tr>
+ <tr class="even"><td class="entry"><a class="el" href="classdba__mysqli.html#add062bd93961e5f0194d94820e9a51b1">connect</a>($server, $port, $user, $pass, $db)</td><td class="entry"><a class="el" href="classdba__mysqli.html">dba_mysqli</a></td><td class="entry"></td></tr>
+ <tr><td class="entry"><a class="el" href="classdba__driver.html#adcc1f8955120fec0708bce39202d0422">dbg</a>($dbg)</td><td class="entry"><a class="el" href="classdba__driver.html">dba_driver</a></td><td class="entry"></td></tr>
+ <tr class="even"><td class="entry"><a class="el" href="classdba__mysqli.html#a27d6a748af7f80028801306e7ea33f64">escape</a>($str)</td><td class="entry"><a class="el" href="classdba__mysqli.html">dba_mysqli</a></td><td class="entry"></td></tr>
+ <tr><td class="entry"><a class="el" href="classdba__driver.html#a7dbe8318587ff1694825042bf58f4fbd">escapebin</a>($str)</td><td class="entry"><a class="el" href="classdba__driver.html">dba_driver</a></td><td class="entry"></td></tr>
+ <tr class="even"><td class="entry"><a class="el" href="classdba__driver.html#a8d6a79d39d7eaee5aea4e952c4529d48">get_install_script</a>()</td><td class="entry"><a class="el" href="classdba__driver.html">dba_driver</a></td><td class="entry"></td></tr>
+ <tr><td class="entry"><a class="el" href="classdba__driver.html#a65a5c7b355ab5529a43049e160006426">get_null_date</a>()</td><td class="entry"><a class="el" href="classdba__driver.html">dba_driver</a></td><td class="entry"></td></tr>
+ <tr class="even"><td class="entry"><a class="el" href="classdba__mysqli.html#a6eb6c578c6928908321e5e6da866e1db">getdriver</a>()</td><td class="entry"><a class="el" href="classdba__mysqli.html">dba_mysqli</a></td><td class="entry"></td></tr>
+ <tr><td class="entry"><a class="el" href="classdba__driver.html#a4ccb27243e62a8ca30dd8e1b8cc67746">install</a>($server, $user, $pass, $db)</td><td class="entry"><a class="el" href="classdba__driver.html">dba_driver</a></td><td class="entry"></td></tr>
+ <tr class="even"><td class="entry"><a class="el" href="classdba__driver.html#a98d8523dcedda316085b4d4f856b6583">INSTALL_SCRIPT</a></td><td class="entry"><a class="el" href="classdba__driver.html">dba_driver</a></td><td class="entry"></td></tr>
+ <tr><td class="entry"><a class="el" href="classdba__driver.html#afce39394c010ea589d99a21579b2c31e">NULL_DATE</a></td><td class="entry"><a class="el" href="classdba__driver.html">dba_driver</a></td><td class="entry"></td></tr>
+ <tr class="even"><td class="entry"><a class="el" href="classdba__driver.html#a77e59dcbeab30ca6000131d2e9ad4092">optimize_table</a>($table)</td><td class="entry"><a class="el" href="classdba__driver.html">dba_driver</a></td><td class="entry"></td></tr>
<tr><td class="entry"><a class="el" href="classdba__mysqli.html#a611c4de8d6d7512dffb83a38bb6701ec">q</a>($sql)</td><td class="entry"><a class="el" href="classdba__mysqli.html">dba_mysqli</a></td><td class="entry"></td></tr>
+ <tr class="even"><td class="entry"><a class="el" href="classdba__driver.html#ac9127e9c55fcc93bcfbb323b9b99b9d9">quote_interval</a>($txt)</td><td class="entry"><a class="el" href="classdba__driver.html">dba_driver</a></td><td class="entry"></td></tr>
+ <tr><td class="entry"><a class="el" href="classdba__driver.html#ab43184239e1d6eb00a98319f4a3df155">unescapebin</a>($str)</td><td class="entry"><a class="el" href="classdba__driver.html">dba_driver</a></td><td class="entry"></td></tr>
+ <tr class="even"><td class="entry"><a class="el" href="classdba__driver.html#aa3325d982d4ee5d1114fd7e02a4356e8">UTC_NOW</a></td><td class="entry"><a class="el" href="classdba__driver.html">dba_driver</a></td><td class="entry"></td></tr>
+ <tr><td class="entry"><a class="el" href="classdba__driver.html#ad700712879719bee23752b8f424d97d0">utcnow</a>()</td><td class="entry"><a class="el" href="classdba__driver.html">dba_driver</a></td><td class="entry"></td></tr>
</table></div><!-- contents -->
</div><!-- doc-content -->
diff --git a/doc/html/classdba__mysqli.html b/doc/html/classdba__mysqli.html
index 985a7216b..df0c38b6a 100644
--- a/doc/html/classdba__mysqli.html
+++ b/doc/html/classdba__mysqli.html
@@ -118,7 +118,7 @@ Inheritance diagram for dba_mysqli:</div>
<div class="center">
<img src="classdba__mysqli.png" usemap="#dba_mysqli_map" alt=""/>
<map id="dba_mysqli_map" name="dba_mysqli_map">
-<area href="classdba__driver.html" alt="dba_driver" shape="rect" coords="0,0,74,24"/>
+<area href="classdba__driver.html" title="abstract database driver class." alt="dba_driver" shape="rect" coords="0,0,74,24"/>
</map>
</div></div>
<table class="memberdecls">
@@ -132,27 +132,59 @@ Public Member Functions</h2></td></tr>
<tr class="separator:a27d6a748af7f80028801306e7ea33f64"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:acb38f2c851187ad632ecfab30fdfab55"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classdba__mysqli.html#acb38f2c851187ad632ecfab30fdfab55">close</a> ()</td></tr>
<tr class="separator:acb38f2c851187ad632ecfab30fdfab55"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a6eb6c578c6928908321e5e6da866e1db"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classdba__mysqli.html#a6eb6c578c6928908321e5e6da866e1db">getdriver</a> ()</td></tr>
+<tr class="separator:a6eb6c578c6928908321e5e6da866e1db"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="inherit_header pub_methods_classdba__driver"><td colspan="2" onclick="javascript:toggleInherit('pub_methods_classdba__driver')"><img src="closed.png" alt="-"/>&#160;Public Member Functions inherited from <a class="el" href="classdba__driver.html">dba_driver</a></td></tr>
<tr class="memitem:ae533e62a240a793f17aef5ab4ef10edc inherit pub_methods_classdba__driver"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classdba__driver.html#ae533e62a240a793f17aef5ab4ef10edc">connect</a> ($server, $port, $user, $pass, $db)</td></tr>
+<tr class="memdesc:ae533e62a240a793f17aef5ab4ef10edc inherit pub_methods_classdba__driver"><td class="mdescLeft">&#160;</td><td class="mdescRight">Connect to the database. <a href="#ae533e62a240a793f17aef5ab4ef10edc">More...</a><br/></td></tr>
<tr class="separator:ae533e62a240a793f17aef5ab4ef10edc inherit pub_methods_classdba__driver"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a558e738b88ae893cc5d79ffa3793d555 inherit pub_methods_classdba__driver"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classdba__driver.html#a558e738b88ae893cc5d79ffa3793d555">q</a> ($sql)</td></tr>
+<tr class="memdesc:a558e738b88ae893cc5d79ffa3793d555 inherit pub_methods_classdba__driver"><td class="mdescLeft">&#160;</td><td class="mdescRight">Perform a DB query with the SQL statement $sql. <a href="#a558e738b88ae893cc5d79ffa3793d555">More...</a><br/></td></tr>
<tr class="separator:a558e738b88ae893cc5d79ffa3793d555 inherit pub_methods_classdba__driver"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:afc95ffa103a3290581b537670cde5311 inherit pub_methods_classdba__driver"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classdba__driver.html#afc95ffa103a3290581b537670cde5311">escape</a> ($str)</td></tr>
+<tr class="memdesc:afc95ffa103a3290581b537670cde5311 inherit pub_methods_classdba__driver"><td class="mdescLeft">&#160;</td><td class="mdescRight">Escape a string before being passed to a DB query. <a href="#afc95ffa103a3290581b537670cde5311">More...</a><br/></td></tr>
<tr class="separator:afc95ffa103a3290581b537670cde5311 inherit pub_methods_classdba__driver"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a5afa54172f3c837df61643f8f5b2c975 inherit pub_methods_classdba__driver"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classdba__driver.html#a5afa54172f3c837df61643f8f5b2c975">close</a> ()</td></tr>
+<tr class="memdesc:a5afa54172f3c837df61643f8f5b2c975 inherit pub_methods_classdba__driver"><td class="mdescLeft">&#160;</td><td class="mdescRight">Close the database connection. <a href="#a5afa54172f3c837df61643f8f5b2c975">More...</a><br/></td></tr>
<tr class="separator:a5afa54172f3c837df61643f8f5b2c975 inherit pub_methods_classdba__driver"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a02165fc4bee63d040ebd963a4fa82a14 inherit pub_methods_classdba__driver"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classdba__driver.html#a02165fc4bee63d040ebd963a4fa82a14">getdriver</a> ()</td></tr>
+<tr class="memdesc:a02165fc4bee63d040ebd963a4fa82a14 inherit pub_methods_classdba__driver"><td class="mdescLeft">&#160;</td><td class="mdescRight">Return text name for db driver. <a href="#a02165fc4bee63d040ebd963a4fa82a14">More...</a><br/></td></tr>
+<tr class="separator:a02165fc4bee63d040ebd963a4fa82a14 inherit pub_methods_classdba__driver"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:af3541d13ccb7a3eddfc03e253c746186 inherit pub_methods_classdba__driver"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classdba__driver.html#af3541d13ccb7a3eddfc03e253c746186">__construct</a> ($server, $port, $user, $pass, $db, $<a class="el" href="classdba__driver.html#a4ccb27243e62a8ca30dd8e1b8cc67746">install</a>=false)</td></tr>
<tr class="separator:af3541d13ccb7a3eddfc03e253c746186 inherit pub_methods_classdba__driver"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a65a5c7b355ab5529a43049e160006426 inherit pub_methods_classdba__driver"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classdba__driver.html#a65a5c7b355ab5529a43049e160006426">get_null_date</a> ()</td></tr>
+<tr class="separator:a65a5c7b355ab5529a43049e160006426 inherit pub_methods_classdba__driver"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a8d6a79d39d7eaee5aea4e952c4529d48 inherit pub_methods_classdba__driver"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classdba__driver.html#a8d6a79d39d7eaee5aea4e952c4529d48">get_install_script</a> ()</td></tr>
+<tr class="separator:a8d6a79d39d7eaee5aea4e952c4529d48 inherit pub_methods_classdba__driver"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ad700712879719bee23752b8f424d97d0 inherit pub_methods_classdba__driver"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classdba__driver.html#ad700712879719bee23752b8f424d97d0">utcnow</a> ()</td></tr>
+<tr class="separator:ad700712879719bee23752b8f424d97d0 inherit pub_methods_classdba__driver"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a4ccb27243e62a8ca30dd8e1b8cc67746 inherit pub_methods_classdba__driver"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classdba__driver.html#a4ccb27243e62a8ca30dd8e1b8cc67746">install</a> ($server, $user, $pass, $db)</td></tr>
<tr class="separator:a4ccb27243e62a8ca30dd8e1b8cc67746 inherit pub_methods_classdba__driver"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:adcc1f8955120fec0708bce39202d0422 inherit pub_methods_classdba__driver"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classdba__driver.html#adcc1f8955120fec0708bce39202d0422">dbg</a> ($dbg)</td></tr>
+<tr class="memdesc:adcc1f8955120fec0708bce39202d0422 inherit pub_methods_classdba__driver"><td class="mdescLeft">&#160;</td><td class="mdescRight">Sets the database driver's debugging state. <a href="#adcc1f8955120fec0708bce39202d0422">More...</a><br/></td></tr>
<tr class="separator:adcc1f8955120fec0708bce39202d0422 inherit pub_methods_classdba__driver"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a1a8bc9dc839a6320a0e07d8047a6b721 inherit pub_methods_classdba__driver"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classdba__driver.html#a1a8bc9dc839a6320a0e07d8047a6b721">__destruct</a> ()</td></tr>
<tr class="separator:a1a8bc9dc839a6320a0e07d8047a6b721 inherit pub_methods_classdba__driver"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ac9127e9c55fcc93bcfbb323b9b99b9d9 inherit pub_methods_classdba__driver"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classdba__driver.html#ac9127e9c55fcc93bcfbb323b9b99b9d9">quote_interval</a> ($txt)</td></tr>
+<tr class="separator:ac9127e9c55fcc93bcfbb323b9b99b9d9 inherit pub_methods_classdba__driver"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a77e59dcbeab30ca6000131d2e9ad4092 inherit pub_methods_classdba__driver"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classdba__driver.html#a77e59dcbeab30ca6000131d2e9ad4092">optimize_table</a> ($table)</td></tr>
+<tr class="separator:a77e59dcbeab30ca6000131d2e9ad4092 inherit pub_methods_classdba__driver"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ab9982f38a02f008b127a0f3ccc1e99f4 inherit pub_methods_classdba__driver"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classdba__driver.html#ab9982f38a02f008b127a0f3ccc1e99f4">concat</a> ($fld, $sep)</td></tr>
+<tr class="separator:ab9982f38a02f008b127a0f3ccc1e99f4 inherit pub_methods_classdba__driver"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a7dbe8318587ff1694825042bf58f4fbd inherit pub_methods_classdba__driver"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classdba__driver.html#a7dbe8318587ff1694825042bf58f4fbd">escapebin</a> ($str)</td></tr>
+<tr class="separator:a7dbe8318587ff1694825042bf58f4fbd inherit pub_methods_classdba__driver"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ab43184239e1d6eb00a98319f4a3df155 inherit pub_methods_classdba__driver"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classdba__driver.html#ab43184239e1d6eb00a98319f4a3df155">unescapebin</a> ($str)</td></tr>
+<tr class="separator:ab43184239e1d6eb00a98319f4a3df155 inherit pub_methods_classdba__driver"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="inherited"></a>
Additional Inherited Members</h2></td></tr>
<tr class="inherit_header pub_attribs_classdba__driver"><td colspan="2" onclick="javascript:toggleInherit('pub_attribs_classdba__driver')"><img src="closed.png" alt="-"/>&#160;Public Attributes inherited from <a class="el" href="classdba__driver.html">dba_driver</a></td></tr>
+<tr class="memitem:a98d8523dcedda316085b4d4f856b6583 inherit pub_attribs_classdba__driver"><td class="memItemLeft" align="right" valign="top">const&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classdba__driver.html#a98d8523dcedda316085b4d4f856b6583">INSTALL_SCRIPT</a> ='<a class="el" href="classdba__driver.html#a4ccb27243e62a8ca30dd8e1b8cc67746">install</a>/schema_mysql.sql'</td></tr>
+<tr class="separator:a98d8523dcedda316085b4d4f856b6583 inherit pub_attribs_classdba__driver"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:afce39394c010ea589d99a21579b2c31e inherit pub_attribs_classdba__driver"><td class="memItemLeft" align="right" valign="top">const&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classdba__driver.html#afce39394c010ea589d99a21579b2c31e">NULL_DATE</a> = '0000-00-00 00:00:00'</td></tr>
+<tr class="separator:afce39394c010ea589d99a21579b2c31e inherit pub_attribs_classdba__driver"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:aa3325d982d4ee5d1114fd7e02a4356e8 inherit pub_attribs_classdba__driver"><td class="memItemLeft" align="right" valign="top">const&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classdba__driver.html#aa3325d982d4ee5d1114fd7e02a4356e8">UTC_NOW</a> = 'UTC_TIMESTAMP()'</td></tr>
+<tr class="separator:aa3325d982d4ee5d1114fd7e02a4356e8 inherit pub_attribs_classdba__driver"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a205f6535e399700b6fca2492f96f2229 inherit pub_attribs_classdba__driver"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classdba__driver.html#a205f6535e399700b6fca2492f96f2229">$connected</a> = false</td></tr>
<tr class="separator:a205f6535e399700b6fca2492f96f2229 inherit pub_attribs_classdba__driver"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a84675d28c7bd9b7290dd37e66dbd216c inherit pub_attribs_classdba__driver"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classdba__driver.html#a84675d28c7bd9b7290dd37e66dbd216c">$error</a> = false</td></tr>
@@ -239,6 +271,21 @@ Additional Inherited Members</h2></td></tr>
</div>
</div>
+<a class="anchor" id="a6eb6c578c6928908321e5e6da866e1db"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">dba_mysqli::getdriver </td>
+ <td>(</td>
+ <td class="paramname"></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+</div>
+</div>
<a class="anchor" id="a611c4de8d6d7512dffb83a38bb6701ec"></a>
<div class="memitem">
<div class="memproto">
diff --git a/doc/html/classdba__mysqli.js b/doc/html/classdba__mysqli.js
index a5f54698e..ab2d66be7 100644
--- a/doc/html/classdba__mysqli.js
+++ b/doc/html/classdba__mysqli.js
@@ -3,5 +3,6 @@ var classdba__mysqli =
[ "close", "classdba__mysqli.html#acb38f2c851187ad632ecfab30fdfab55", null ],
[ "connect", "classdba__mysqli.html#add062bd93961e5f0194d94820e9a51b1", null ],
[ "escape", "classdba__mysqli.html#a27d6a748af7f80028801306e7ea33f64", null ],
+ [ "getdriver", "classdba__mysqli.html#a6eb6c578c6928908321e5e6da866e1db", null ],
[ "q", "classdba__mysqli.html#a611c4de8d6d7512dffb83a38bb6701ec", null ]
]; \ No newline at end of file
diff --git a/doc/html/classdba__postgres-members.html b/doc/html/classdba__postgres-members.html
new file mode 100644
index 000000000..2796566d5
--- /dev/null
+++ b/doc/html/classdba__postgres-members.html
@@ -0,0 +1,142 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<meta name="generator" content="Doxygen 1.8.3.1"/>
+<title>The Red Matrix: Member List</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="navtree.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="resize.js"></script>
+<script type="text/javascript" src="navtree.js"></script>
+<script type="text/javascript">
+ $(document).ready(initResizable);
+ $(window).load(resizeHeight);
+</script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/search.js"></script>
+<script type="text/javascript">
+ $(document).ready(function() { searchBox.OnSelectItem(0); });
+</script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+ <td id="projectlogo"><img alt="Logo" src="rm-64.png"/></td>
+ <td style="padding-left: 0.5em;">
+ <div id="projectname">The Red Matrix
+ </div>
+ </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.8.3.1 -->
+<script type="text/javascript">
+var searchBox = new SearchBox("searchBox", "search",false,'Search');
+</script>
+ <div id="navrow1" class="tabs">
+ <ul class="tablist">
+ <li><a href="index.html"><span>Main&#160;Page</span></a></li>
+ <li><a href="pages.html"><span>Related&#160;Pages</span></a></li>
+ <li><a href="namespaces.html"><span>Namespaces</span></a></li>
+ <li class="current"><a href="annotated.html"><span>Classes</span></a></li>
+ <li><a href="files.html"><span>Files</span></a></li>
+ <li>
+ <div id="MSearchBox" class="MSearchBoxInactive">
+ <span class="left">
+ <img id="MSearchSelect" src="search/mag_sel.png"
+ onmouseover="return searchBox.OnSearchSelectShow()"
+ onmouseout="return searchBox.OnSearchSelectHide()"
+ alt=""/>
+ <input type="text" id="MSearchField" value="Search" accesskey="S"
+ onfocus="searchBox.OnSearchFieldFocus(true)"
+ onblur="searchBox.OnSearchFieldFocus(false)"
+ onkeyup="searchBox.OnSearchFieldChange(event)"/>
+ </span><span class="right">
+ <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
+ </span>
+ </div>
+ </li>
+ </ul>
+ </div>
+ <div id="navrow2" class="tabs2">
+ <ul class="tablist">
+ <li><a href="annotated.html"><span>Class&#160;List</span></a></li>
+ <li><a href="classes.html"><span>Class&#160;Index</span></a></li>
+ <li><a href="hierarchy.html"><span>Class&#160;Hierarchy</span></a></li>
+ <li><a href="functions.html"><span>Class&#160;Members</span></a></li>
+ </ul>
+ </div>
+</div><!-- top -->
+<div id="side-nav" class="ui-resizable side-nav-resizable">
+ <div id="nav-tree">
+ <div id="nav-tree-contents">
+ <div id="nav-sync" class="sync"></div>
+ </div>
+ </div>
+ <div id="splitbar" style="-moz-user-select:none;"
+ class="ui-resizable-handle">
+ </div>
+</div>
+<script type="text/javascript">
+$(document).ready(function(){initNavTree('classdba__postgres.html','');});
+</script>
+<div id="doc-content">
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+ onmouseover="return searchBox.OnSearchSelectShow()"
+ onmouseout="return searchBox.OnSearchSelectHide()"
+ onkeydown="return searchBox.OnSearchSelectKey(event)">
+<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark">&#160;</span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark">&#160;</span>Classes</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark">&#160;</span>Namespaces</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark">&#160;</span>Files</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark">&#160;</span>Functions</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark">&#160;</span>Variables</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark">&#160;</span>Pages</a></div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<iframe src="javascript:void(0)" frameborder="0"
+ name="MSearchResults" id="MSearchResults">
+</iframe>
+</div>
+
+<div class="header">
+ <div class="headertitle">
+<div class="title">dba_postgres Member List</div> </div>
+</div><!--header-->
+<div class="contents">
+
+<p>This is the complete list of members for <a class="el" href="classdba__postgres.html">dba_postgres</a>, including all inherited members.</p>
+<table class="directory">
+ <tr class="even"><td class="entry"><a class="el" href="classdba__driver.html#a205f6535e399700b6fca2492f96f2229">$connected</a></td><td class="entry"><a class="el" href="classdba__driver.html">dba_driver</a></td><td class="entry"></td></tr>
+ <tr><td class="entry"><a class="el" href="classdba__driver.html#a3033b5f1c2716b52202faeaae2592fe6">$db</a></td><td class="entry"><a class="el" href="classdba__driver.html">dba_driver</a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
+ <tr class="even"><td class="entry"><a class="el" href="classdba__driver.html#af48e2afeded5285766bf92e22123ed03">$debug</a></td><td class="entry"><a class="el" href="classdba__driver.html">dba_driver</a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
+ <tr><td class="entry"><a class="el" href="classdba__driver.html#a84675d28c7bd9b7290dd37e66dbd216c">$error</a></td><td class="entry"><a class="el" href="classdba__driver.html">dba_driver</a></td><td class="entry"></td></tr>
+ <tr class="even"><td class="entry"><a class="el" href="classdba__driver.html#af3541d13ccb7a3eddfc03e253c746186">__construct</a>($server, $port, $user, $pass, $db, $install=false)</td><td class="entry"><a class="el" href="classdba__driver.html">dba_driver</a></td><td class="entry"></td></tr>
+ <tr><td class="entry"><a class="el" href="classdba__driver.html#a1a8bc9dc839a6320a0e07d8047a6b721">__destruct</a>()</td><td class="entry"><a class="el" href="classdba__driver.html">dba_driver</a></td><td class="entry"></td></tr>
+ <tr class="even"><td class="entry"><a class="el" href="classdba__postgres.html#a731d8648b41b8a126f6b99bdd5414058">close</a>()</td><td class="entry"><a class="el" href="classdba__postgres.html">dba_postgres</a></td><td class="entry"></td></tr>
+ <tr><td class="entry"><a class="el" href="classdba__postgres.html#a7ea3f24ad260c1e21588f8b5af595caa">concat</a>($fld, $sep)</td><td class="entry"><a class="el" href="classdba__postgres.html">dba_postgres</a></td><td class="entry"></td></tr>
+ <tr class="even"><td class="entry"><a class="el" href="classdba__postgres.html#ab36244320f5b71dba92d9318ccf3f34e">connect</a>($server, $port, $user, $pass, $db)</td><td class="entry"><a class="el" href="classdba__postgres.html">dba_postgres</a></td><td class="entry"></td></tr>
+ <tr><td class="entry"><a class="el" href="classdba__driver.html#adcc1f8955120fec0708bce39202d0422">dbg</a>($dbg)</td><td class="entry"><a class="el" href="classdba__driver.html">dba_driver</a></td><td class="entry"></td></tr>
+ <tr class="even"><td class="entry"><a class="el" href="classdba__postgres.html#a7108eaaae7cc2fb236212041afc9ac0f">escape</a>($str)</td><td class="entry"><a class="el" href="classdba__postgres.html">dba_postgres</a></td><td class="entry"></td></tr>
+ <tr><td class="entry"><a class="el" href="classdba__postgres.html#ab2e44e9f41d05e585afd873d18e8c127">escape_identifier</a>($str)</td><td class="entry"><a class="el" href="classdba__postgres.html">dba_postgres</a></td><td class="entry"></td></tr>
+ <tr class="even"><td class="entry"><a class="el" href="classdba__postgres.html#a8d2c6d8c92fe6f074452876483dd17fc">escapebin</a>($str)</td><td class="entry"><a class="el" href="classdba__postgres.html">dba_postgres</a></td><td class="entry"></td></tr>
+ <tr><td class="entry"><a class="el" href="classdba__driver.html#a8d6a79d39d7eaee5aea4e952c4529d48">get_install_script</a>()</td><td class="entry"><a class="el" href="classdba__driver.html">dba_driver</a></td><td class="entry"></td></tr>
+ <tr class="even"><td class="entry"><a class="el" href="classdba__driver.html#a65a5c7b355ab5529a43049e160006426">get_null_date</a>()</td><td class="entry"><a class="el" href="classdba__driver.html">dba_driver</a></td><td class="entry"></td></tr>
+ <tr><td class="entry"><a class="el" href="classdba__postgres.html#ae0f834413e57cf0735ae7b64b2f71e68">getdriver</a>()</td><td class="entry"><a class="el" href="classdba__postgres.html">dba_postgres</a></td><td class="entry"></td></tr>
+ <tr class="even"><td class="entry"><a class="el" href="classdba__driver.html#a4ccb27243e62a8ca30dd8e1b8cc67746">install</a>($server, $user, $pass, $db)</td><td class="entry"><a class="el" href="classdba__driver.html">dba_driver</a></td><td class="entry"></td></tr>
+ <tr><td class="entry"><a class="el" href="classdba__postgres.html#a7267f91c3f87f600b30d7560de62dfd7">INSTALL_SCRIPT</a></td><td class="entry"><a class="el" href="classdba__postgres.html">dba_postgres</a></td><td class="entry"></td></tr>
+ <tr class="even"><td class="entry"><a class="el" href="classdba__postgres.html#aeb404a85974d6c5df30c21650888000b">NULL_DATE</a></td><td class="entry"><a class="el" href="classdba__postgres.html">dba_postgres</a></td><td class="entry"></td></tr>
+ <tr><td class="entry"><a class="el" href="classdba__postgres.html#a3de1ac375e98886dfc38fd0066e88f90">optimize_table</a>($table)</td><td class="entry"><a class="el" href="classdba__postgres.html">dba_postgres</a></td><td class="entry"></td></tr>
+ <tr class="even"><td class="entry"><a class="el" href="classdba__postgres.html#a70352880231fba0b859f82cd5b290a9a">q</a>($sql)</td><td class="entry"><a class="el" href="classdba__postgres.html">dba_postgres</a></td><td class="entry"></td></tr>
+ <tr><td class="entry"><a class="el" href="classdba__postgres.html#a56f926f218155c88807e0e06f6817a72">quote_interval</a>($txt)</td><td class="entry"><a class="el" href="classdba__postgres.html">dba_postgres</a></td><td class="entry"></td></tr>
+ <tr class="even"><td class="entry"><a class="el" href="classdba__postgres.html#a677f850211975c9ab89602c67e2dcad9">unescapebin</a>($str)</td><td class="entry"><a class="el" href="classdba__postgres.html">dba_postgres</a></td><td class="entry"></td></tr>
+ <tr><td class="entry"><a class="el" href="classdba__postgres.html#ace80a204e34b20b9907650399cce02a3">UTC_NOW</a></td><td class="entry"><a class="el" href="classdba__postgres.html">dba_postgres</a></td><td class="entry"></td></tr>
+ <tr class="even"><td class="entry"><a class="el" href="classdba__driver.html#ad700712879719bee23752b8f424d97d0">utcnow</a>()</td><td class="entry"><a class="el" href="classdba__driver.html">dba_driver</a></td><td class="entry"></td></tr>
+</table></div><!-- contents -->
+</div><!-- doc-content -->
+
diff --git a/doc/html/classdba__postgres.html b/doc/html/classdba__postgres.html
new file mode 100644
index 000000000..c88750564
--- /dev/null
+++ b/doc/html/classdba__postgres.html
@@ -0,0 +1,477 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<meta name="generator" content="Doxygen 1.8.3.1"/>
+<title>The Red Matrix: dba_postgres Class Reference</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="navtree.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="resize.js"></script>
+<script type="text/javascript" src="navtree.js"></script>
+<script type="text/javascript">
+ $(document).ready(initResizable);
+ $(window).load(resizeHeight);
+</script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/search.js"></script>
+<script type="text/javascript">
+ $(document).ready(function() { searchBox.OnSelectItem(0); });
+</script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+ <td id="projectlogo"><img alt="Logo" src="rm-64.png"/></td>
+ <td style="padding-left: 0.5em;">
+ <div id="projectname">The Red Matrix
+ </div>
+ </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.8.3.1 -->
+<script type="text/javascript">
+var searchBox = new SearchBox("searchBox", "search",false,'Search');
+</script>
+ <div id="navrow1" class="tabs">
+ <ul class="tablist">
+ <li><a href="index.html"><span>Main&#160;Page</span></a></li>
+ <li><a href="pages.html"><span>Related&#160;Pages</span></a></li>
+ <li><a href="namespaces.html"><span>Namespaces</span></a></li>
+ <li class="current"><a href="annotated.html"><span>Classes</span></a></li>
+ <li><a href="files.html"><span>Files</span></a></li>
+ <li>
+ <div id="MSearchBox" class="MSearchBoxInactive">
+ <span class="left">
+ <img id="MSearchSelect" src="search/mag_sel.png"
+ onmouseover="return searchBox.OnSearchSelectShow()"
+ onmouseout="return searchBox.OnSearchSelectHide()"
+ alt=""/>
+ <input type="text" id="MSearchField" value="Search" accesskey="S"
+ onfocus="searchBox.OnSearchFieldFocus(true)"
+ onblur="searchBox.OnSearchFieldFocus(false)"
+ onkeyup="searchBox.OnSearchFieldChange(event)"/>
+ </span><span class="right">
+ <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
+ </span>
+ </div>
+ </li>
+ </ul>
+ </div>
+ <div id="navrow2" class="tabs2">
+ <ul class="tablist">
+ <li><a href="annotated.html"><span>Class&#160;List</span></a></li>
+ <li><a href="classes.html"><span>Class&#160;Index</span></a></li>
+ <li><a href="hierarchy.html"><span>Class&#160;Hierarchy</span></a></li>
+ <li><a href="functions.html"><span>Class&#160;Members</span></a></li>
+ </ul>
+ </div>
+</div><!-- top -->
+<div id="side-nav" class="ui-resizable side-nav-resizable">
+ <div id="nav-tree">
+ <div id="nav-tree-contents">
+ <div id="nav-sync" class="sync"></div>
+ </div>
+ </div>
+ <div id="splitbar" style="-moz-user-select:none;"
+ class="ui-resizable-handle">
+ </div>
+</div>
+<script type="text/javascript">
+$(document).ready(function(){initNavTree('classdba__postgres.html','');});
+</script>
+<div id="doc-content">
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+ onmouseover="return searchBox.OnSearchSelectShow()"
+ onmouseout="return searchBox.OnSearchSelectHide()"
+ onkeydown="return searchBox.OnSearchSelectKey(event)">
+<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark">&#160;</span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark">&#160;</span>Classes</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark">&#160;</span>Namespaces</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark">&#160;</span>Files</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark">&#160;</span>Functions</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark">&#160;</span>Variables</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark">&#160;</span>Pages</a></div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<iframe src="javascript:void(0)" frameborder="0"
+ name="MSearchResults" id="MSearchResults">
+</iframe>
+</div>
+
+<div class="header">
+ <div class="summary">
+<a href="#pub-methods">Public Member Functions</a> &#124;
+<a href="#pub-attribs">Public Attributes</a> &#124;
+<a href="classdba__postgres-members.html">List of all members</a> </div>
+ <div class="headertitle">
+<div class="title">dba_postgres Class Reference</div> </div>
+</div><!--header-->
+<div class="contents">
+<div class="dynheader">
+Inheritance diagram for dba_postgres:</div>
+<div class="dyncontent">
+ <div class="center">
+ <img src="classdba__postgres.png" usemap="#dba_postgres_map" alt=""/>
+ <map id="dba_postgres_map" name="dba_postgres_map">
+<area href="classdba__driver.html" title="abstract database driver class." alt="dba_driver" shape="rect" coords="0,0,88,24"/>
+</map>
+ </div></div>
+<table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-methods"></a>
+Public Member Functions</h2></td></tr>
+<tr class="memitem:ab36244320f5b71dba92d9318ccf3f34e"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classdba__postgres.html#ab36244320f5b71dba92d9318ccf3f34e">connect</a> ($server, $port, $user, $pass, $db)</td></tr>
+<tr class="separator:ab36244320f5b71dba92d9318ccf3f34e"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a70352880231fba0b859f82cd5b290a9a"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classdba__postgres.html#a70352880231fba0b859f82cd5b290a9a">q</a> ($sql)</td></tr>
+<tr class="separator:a70352880231fba0b859f82cd5b290a9a"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a7108eaaae7cc2fb236212041afc9ac0f"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classdba__postgres.html#a7108eaaae7cc2fb236212041afc9ac0f">escape</a> ($str)</td></tr>
+<tr class="separator:a7108eaaae7cc2fb236212041afc9ac0f"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a8d2c6d8c92fe6f074452876483dd17fc"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classdba__postgres.html#a8d2c6d8c92fe6f074452876483dd17fc">escapebin</a> ($str)</td></tr>
+<tr class="separator:a8d2c6d8c92fe6f074452876483dd17fc"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a677f850211975c9ab89602c67e2dcad9"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classdba__postgres.html#a677f850211975c9ab89602c67e2dcad9">unescapebin</a> ($str)</td></tr>
+<tr class="separator:a677f850211975c9ab89602c67e2dcad9"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a731d8648b41b8a126f6b99bdd5414058"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classdba__postgres.html#a731d8648b41b8a126f6b99bdd5414058">close</a> ()</td></tr>
+<tr class="separator:a731d8648b41b8a126f6b99bdd5414058"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a56f926f218155c88807e0e06f6817a72"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classdba__postgres.html#a56f926f218155c88807e0e06f6817a72">quote_interval</a> ($txt)</td></tr>
+<tr class="separator:a56f926f218155c88807e0e06f6817a72"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ab2e44e9f41d05e585afd873d18e8c127"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classdba__postgres.html#ab2e44e9f41d05e585afd873d18e8c127">escape_identifier</a> ($str)</td></tr>
+<tr class="separator:ab2e44e9f41d05e585afd873d18e8c127"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a3de1ac375e98886dfc38fd0066e88f90"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classdba__postgres.html#a3de1ac375e98886dfc38fd0066e88f90">optimize_table</a> ($table)</td></tr>
+<tr class="separator:a3de1ac375e98886dfc38fd0066e88f90"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a7ea3f24ad260c1e21588f8b5af595caa"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classdba__postgres.html#a7ea3f24ad260c1e21588f8b5af595caa">concat</a> ($fld, $sep)</td></tr>
+<tr class="separator:a7ea3f24ad260c1e21588f8b5af595caa"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ae0f834413e57cf0735ae7b64b2f71e68"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classdba__postgres.html#ae0f834413e57cf0735ae7b64b2f71e68">getdriver</a> ()</td></tr>
+<tr class="separator:ae0f834413e57cf0735ae7b64b2f71e68"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="inherit_header pub_methods_classdba__driver"><td colspan="2" onclick="javascript:toggleInherit('pub_methods_classdba__driver')"><img src="closed.png" alt="-"/>&#160;Public Member Functions inherited from <a class="el" href="classdba__driver.html">dba_driver</a></td></tr>
+<tr class="memitem:ae533e62a240a793f17aef5ab4ef10edc inherit pub_methods_classdba__driver"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classdba__driver.html#ae533e62a240a793f17aef5ab4ef10edc">connect</a> ($server, $port, $user, $pass, $db)</td></tr>
+<tr class="memdesc:ae533e62a240a793f17aef5ab4ef10edc inherit pub_methods_classdba__driver"><td class="mdescLeft">&#160;</td><td class="mdescRight">Connect to the database. <a href="#ae533e62a240a793f17aef5ab4ef10edc">More...</a><br/></td></tr>
+<tr class="separator:ae533e62a240a793f17aef5ab4ef10edc inherit pub_methods_classdba__driver"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a558e738b88ae893cc5d79ffa3793d555 inherit pub_methods_classdba__driver"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classdba__driver.html#a558e738b88ae893cc5d79ffa3793d555">q</a> ($sql)</td></tr>
+<tr class="memdesc:a558e738b88ae893cc5d79ffa3793d555 inherit pub_methods_classdba__driver"><td class="mdescLeft">&#160;</td><td class="mdescRight">Perform a DB query with the SQL statement $sql. <a href="#a558e738b88ae893cc5d79ffa3793d555">More...</a><br/></td></tr>
+<tr class="separator:a558e738b88ae893cc5d79ffa3793d555 inherit pub_methods_classdba__driver"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:afc95ffa103a3290581b537670cde5311 inherit pub_methods_classdba__driver"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classdba__driver.html#afc95ffa103a3290581b537670cde5311">escape</a> ($str)</td></tr>
+<tr class="memdesc:afc95ffa103a3290581b537670cde5311 inherit pub_methods_classdba__driver"><td class="mdescLeft">&#160;</td><td class="mdescRight">Escape a string before being passed to a DB query. <a href="#afc95ffa103a3290581b537670cde5311">More...</a><br/></td></tr>
+<tr class="separator:afc95ffa103a3290581b537670cde5311 inherit pub_methods_classdba__driver"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a5afa54172f3c837df61643f8f5b2c975 inherit pub_methods_classdba__driver"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classdba__driver.html#a5afa54172f3c837df61643f8f5b2c975">close</a> ()</td></tr>
+<tr class="memdesc:a5afa54172f3c837df61643f8f5b2c975 inherit pub_methods_classdba__driver"><td class="mdescLeft">&#160;</td><td class="mdescRight">Close the database connection. <a href="#a5afa54172f3c837df61643f8f5b2c975">More...</a><br/></td></tr>
+<tr class="separator:a5afa54172f3c837df61643f8f5b2c975 inherit pub_methods_classdba__driver"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a02165fc4bee63d040ebd963a4fa82a14 inherit pub_methods_classdba__driver"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classdba__driver.html#a02165fc4bee63d040ebd963a4fa82a14">getdriver</a> ()</td></tr>
+<tr class="memdesc:a02165fc4bee63d040ebd963a4fa82a14 inherit pub_methods_classdba__driver"><td class="mdescLeft">&#160;</td><td class="mdescRight">Return text name for db driver. <a href="#a02165fc4bee63d040ebd963a4fa82a14">More...</a><br/></td></tr>
+<tr class="separator:a02165fc4bee63d040ebd963a4fa82a14 inherit pub_methods_classdba__driver"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:af3541d13ccb7a3eddfc03e253c746186 inherit pub_methods_classdba__driver"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classdba__driver.html#af3541d13ccb7a3eddfc03e253c746186">__construct</a> ($server, $port, $user, $pass, $db, $<a class="el" href="classdba__driver.html#a4ccb27243e62a8ca30dd8e1b8cc67746">install</a>=false)</td></tr>
+<tr class="separator:af3541d13ccb7a3eddfc03e253c746186 inherit pub_methods_classdba__driver"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a65a5c7b355ab5529a43049e160006426 inherit pub_methods_classdba__driver"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classdba__driver.html#a65a5c7b355ab5529a43049e160006426">get_null_date</a> ()</td></tr>
+<tr class="separator:a65a5c7b355ab5529a43049e160006426 inherit pub_methods_classdba__driver"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a8d6a79d39d7eaee5aea4e952c4529d48 inherit pub_methods_classdba__driver"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classdba__driver.html#a8d6a79d39d7eaee5aea4e952c4529d48">get_install_script</a> ()</td></tr>
+<tr class="separator:a8d6a79d39d7eaee5aea4e952c4529d48 inherit pub_methods_classdba__driver"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ad700712879719bee23752b8f424d97d0 inherit pub_methods_classdba__driver"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classdba__driver.html#ad700712879719bee23752b8f424d97d0">utcnow</a> ()</td></tr>
+<tr class="separator:ad700712879719bee23752b8f424d97d0 inherit pub_methods_classdba__driver"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a4ccb27243e62a8ca30dd8e1b8cc67746 inherit pub_methods_classdba__driver"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classdba__driver.html#a4ccb27243e62a8ca30dd8e1b8cc67746">install</a> ($server, $user, $pass, $db)</td></tr>
+<tr class="separator:a4ccb27243e62a8ca30dd8e1b8cc67746 inherit pub_methods_classdba__driver"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:adcc1f8955120fec0708bce39202d0422 inherit pub_methods_classdba__driver"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classdba__driver.html#adcc1f8955120fec0708bce39202d0422">dbg</a> ($dbg)</td></tr>
+<tr class="memdesc:adcc1f8955120fec0708bce39202d0422 inherit pub_methods_classdba__driver"><td class="mdescLeft">&#160;</td><td class="mdescRight">Sets the database driver's debugging state. <a href="#adcc1f8955120fec0708bce39202d0422">More...</a><br/></td></tr>
+<tr class="separator:adcc1f8955120fec0708bce39202d0422 inherit pub_methods_classdba__driver"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a1a8bc9dc839a6320a0e07d8047a6b721 inherit pub_methods_classdba__driver"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classdba__driver.html#a1a8bc9dc839a6320a0e07d8047a6b721">__destruct</a> ()</td></tr>
+<tr class="separator:a1a8bc9dc839a6320a0e07d8047a6b721 inherit pub_methods_classdba__driver"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ac9127e9c55fcc93bcfbb323b9b99b9d9 inherit pub_methods_classdba__driver"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classdba__driver.html#ac9127e9c55fcc93bcfbb323b9b99b9d9">quote_interval</a> ($txt)</td></tr>
+<tr class="separator:ac9127e9c55fcc93bcfbb323b9b99b9d9 inherit pub_methods_classdba__driver"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a77e59dcbeab30ca6000131d2e9ad4092 inherit pub_methods_classdba__driver"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classdba__driver.html#a77e59dcbeab30ca6000131d2e9ad4092">optimize_table</a> ($table)</td></tr>
+<tr class="separator:a77e59dcbeab30ca6000131d2e9ad4092 inherit pub_methods_classdba__driver"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ab9982f38a02f008b127a0f3ccc1e99f4 inherit pub_methods_classdba__driver"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classdba__driver.html#ab9982f38a02f008b127a0f3ccc1e99f4">concat</a> ($fld, $sep)</td></tr>
+<tr class="separator:ab9982f38a02f008b127a0f3ccc1e99f4 inherit pub_methods_classdba__driver"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a7dbe8318587ff1694825042bf58f4fbd inherit pub_methods_classdba__driver"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classdba__driver.html#a7dbe8318587ff1694825042bf58f4fbd">escapebin</a> ($str)</td></tr>
+<tr class="separator:a7dbe8318587ff1694825042bf58f4fbd inherit pub_methods_classdba__driver"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ab43184239e1d6eb00a98319f4a3df155 inherit pub_methods_classdba__driver"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classdba__driver.html#ab43184239e1d6eb00a98319f4a3df155">unescapebin</a> ($str)</td></tr>
+<tr class="separator:ab43184239e1d6eb00a98319f4a3df155 inherit pub_methods_classdba__driver"><td class="memSeparator" colspan="2">&#160;</td></tr>
+</table><table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-attribs"></a>
+Public Attributes</h2></td></tr>
+<tr class="memitem:a7267f91c3f87f600b30d7560de62dfd7"><td class="memItemLeft" align="right" valign="top">const&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classdba__postgres.html#a7267f91c3f87f600b30d7560de62dfd7">INSTALL_SCRIPT</a> ='<a class="el" href="classdba__driver.html#a4ccb27243e62a8ca30dd8e1b8cc67746">install</a>/schema_postgres.sql'</td></tr>
+<tr class="separator:a7267f91c3f87f600b30d7560de62dfd7"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:aeb404a85974d6c5df30c21650888000b"><td class="memItemLeft" align="right" valign="top">const&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classdba__postgres.html#aeb404a85974d6c5df30c21650888000b">NULL_DATE</a> = '0001-01-01 00:00:00'</td></tr>
+<tr class="separator:aeb404a85974d6c5df30c21650888000b"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ace80a204e34b20b9907650399cce02a3"><td class="memItemLeft" align="right" valign="top">const&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classdba__postgres.html#ace80a204e34b20b9907650399cce02a3">UTC_NOW</a> = &quot;now() at time zone 'UTC'&quot;</td></tr>
+<tr class="separator:ace80a204e34b20b9907650399cce02a3"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="inherit_header pub_attribs_classdba__driver"><td colspan="2" onclick="javascript:toggleInherit('pub_attribs_classdba__driver')"><img src="closed.png" alt="-"/>&#160;Public Attributes inherited from <a class="el" href="classdba__driver.html">dba_driver</a></td></tr>
+<tr class="memitem:a98d8523dcedda316085b4d4f856b6583 inherit pub_attribs_classdba__driver"><td class="memItemLeft" align="right" valign="top">const&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classdba__driver.html#a98d8523dcedda316085b4d4f856b6583">INSTALL_SCRIPT</a> ='<a class="el" href="classdba__driver.html#a4ccb27243e62a8ca30dd8e1b8cc67746">install</a>/schema_mysql.sql'</td></tr>
+<tr class="separator:a98d8523dcedda316085b4d4f856b6583 inherit pub_attribs_classdba__driver"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:afce39394c010ea589d99a21579b2c31e inherit pub_attribs_classdba__driver"><td class="memItemLeft" align="right" valign="top">const&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classdba__driver.html#afce39394c010ea589d99a21579b2c31e">NULL_DATE</a> = '0000-00-00 00:00:00'</td></tr>
+<tr class="separator:afce39394c010ea589d99a21579b2c31e inherit pub_attribs_classdba__driver"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:aa3325d982d4ee5d1114fd7e02a4356e8 inherit pub_attribs_classdba__driver"><td class="memItemLeft" align="right" valign="top">const&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classdba__driver.html#aa3325d982d4ee5d1114fd7e02a4356e8">UTC_NOW</a> = 'UTC_TIMESTAMP()'</td></tr>
+<tr class="separator:aa3325d982d4ee5d1114fd7e02a4356e8 inherit pub_attribs_classdba__driver"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a205f6535e399700b6fca2492f96f2229 inherit pub_attribs_classdba__driver"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classdba__driver.html#a205f6535e399700b6fca2492f96f2229">$connected</a> = false</td></tr>
+<tr class="separator:a205f6535e399700b6fca2492f96f2229 inherit pub_attribs_classdba__driver"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a84675d28c7bd9b7290dd37e66dbd216c inherit pub_attribs_classdba__driver"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classdba__driver.html#a84675d28c7bd9b7290dd37e66dbd216c">$error</a> = false</td></tr>
+<tr class="separator:a84675d28c7bd9b7290dd37e66dbd216c inherit pub_attribs_classdba__driver"><td class="memSeparator" colspan="2">&#160;</td></tr>
+</table><table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="inherited"></a>
+Additional Inherited Members</h2></td></tr>
+<tr class="inherit_header pro_attribs_classdba__driver"><td colspan="2" onclick="javascript:toggleInherit('pro_attribs_classdba__driver')"><img src="closed.png" alt="-"/>&#160;Protected Attributes inherited from <a class="el" href="classdba__driver.html">dba_driver</a></td></tr>
+<tr class="memitem:af48e2afeded5285766bf92e22123ed03 inherit pro_attribs_classdba__driver"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classdba__driver.html#af48e2afeded5285766bf92e22123ed03">$debug</a> = 0</td></tr>
+<tr class="separator:af48e2afeded5285766bf92e22123ed03 inherit pro_attribs_classdba__driver"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a3033b5f1c2716b52202faeaae2592fe6 inherit pro_attribs_classdba__driver"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classdba__driver.html#a3033b5f1c2716b52202faeaae2592fe6">$db</a></td></tr>
+<tr class="separator:a3033b5f1c2716b52202faeaae2592fe6 inherit pro_attribs_classdba__driver"><td class="memSeparator" colspan="2">&#160;</td></tr>
+</table>
+<h2 class="groupheader">Member Function Documentation</h2>
+<a class="anchor" id="a731d8648b41b8a126f6b99bdd5414058"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">dba_postgres::close </td>
+ <td>(</td>
+ <td class="paramname"></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+</div>
+</div>
+<a class="anchor" id="a7ea3f24ad260c1e21588f8b5af595caa"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">dba_postgres::concat </td>
+ <td>(</td>
+ <td class="paramtype">&#160;</td>
+ <td class="paramname"><em>$fld</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">&#160;</td>
+ <td class="paramname"><em>$sep</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+</div>
+</div>
+<a class="anchor" id="ab36244320f5b71dba92d9318ccf3f34e"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">dba_postgres::connect </td>
+ <td>(</td>
+ <td class="paramtype">&#160;</td>
+ <td class="paramname"><em>$server</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">&#160;</td>
+ <td class="paramname"><em>$port</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">&#160;</td>
+ <td class="paramname"><em>$user</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">&#160;</td>
+ <td class="paramname"><em>$pass</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">&#160;</td>
+ <td class="paramname"><em>$db</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+</div>
+</div>
+<a class="anchor" id="a7108eaaae7cc2fb236212041afc9ac0f"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">dba_postgres::escape </td>
+ <td>(</td>
+ <td class="paramtype">&#160;</td>
+ <td class="paramname"><em>$str</em></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+</div>
+</div>
+<a class="anchor" id="ab2e44e9f41d05e585afd873d18e8c127"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">dba_postgres::escape_identifier </td>
+ <td>(</td>
+ <td class="paramtype">&#160;</td>
+ <td class="paramname"><em>$str</em></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+</div>
+</div>
+<a class="anchor" id="a8d2c6d8c92fe6f074452876483dd17fc"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">dba_postgres::escapebin </td>
+ <td>(</td>
+ <td class="paramtype">&#160;</td>
+ <td class="paramname"><em>$str</em></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+</div>
+</div>
+<a class="anchor" id="ae0f834413e57cf0735ae7b64b2f71e68"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">dba_postgres::getdriver </td>
+ <td>(</td>
+ <td class="paramname"></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+</div>
+</div>
+<a class="anchor" id="a3de1ac375e98886dfc38fd0066e88f90"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">dba_postgres::optimize_table </td>
+ <td>(</td>
+ <td class="paramtype">&#160;</td>
+ <td class="paramname"><em>$table</em></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+</div>
+</div>
+<a class="anchor" id="a70352880231fba0b859f82cd5b290a9a"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">dba_postgres::q </td>
+ <td>(</td>
+ <td class="paramtype">&#160;</td>
+ <td class="paramname"><em>$sql</em></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p>Referenced by <a class="el" href="classdba__postgres.html#ab36244320f5b71dba92d9318ccf3f34e">connect()</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a56f926f218155c88807e0e06f6817a72"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">dba_postgres::quote_interval </td>
+ <td>(</td>
+ <td class="paramtype">&#160;</td>
+ <td class="paramname"><em>$txt</em></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+</div>
+</div>
+<a class="anchor" id="a677f850211975c9ab89602c67e2dcad9"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">dba_postgres::unescapebin </td>
+ <td>(</td>
+ <td class="paramtype">&#160;</td>
+ <td class="paramname"><em>$str</em></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+</div>
+</div>
+<h2 class="groupheader">Member Data Documentation</h2>
+<a class="anchor" id="a7267f91c3f87f600b30d7560de62dfd7"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">const dba_postgres::INSTALL_SCRIPT ='<a class="el" href="classdba__driver.html#a4ccb27243e62a8ca30dd8e1b8cc67746">install</a>/schema_postgres.sql'</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+</div>
+</div>
+<a class="anchor" id="aeb404a85974d6c5df30c21650888000b"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">const dba_postgres::NULL_DATE = '0001-01-01 00:00:00'</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+</div>
+</div>
+<a class="anchor" id="ace80a204e34b20b9907650399cce02a3"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">const dba_postgres::UTC_NOW = &quot;now() at time zone 'UTC'&quot;</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+</div>
+</div>
+<hr/>The documentation for this class was generated from the following file:<ul>
+<li>include/dba/<a class="el" href="dba__postgres_8php.html">dba_postgres.php</a></li>
+</ul>
+</div><!-- contents -->
+</div><!-- doc-content -->
+
diff --git a/doc/html/classdba__postgres.js b/doc/html/classdba__postgres.js
new file mode 100644
index 000000000..64f18d9d9
--- /dev/null
+++ b/doc/html/classdba__postgres.js
@@ -0,0 +1,17 @@
+var classdba__postgres =
+[
+ [ "close", "classdba__postgres.html#a731d8648b41b8a126f6b99bdd5414058", null ],
+ [ "concat", "classdba__postgres.html#a7ea3f24ad260c1e21588f8b5af595caa", null ],
+ [ "connect", "classdba__postgres.html#ab36244320f5b71dba92d9318ccf3f34e", null ],
+ [ "escape", "classdba__postgres.html#a7108eaaae7cc2fb236212041afc9ac0f", null ],
+ [ "escape_identifier", "classdba__postgres.html#ab2e44e9f41d05e585afd873d18e8c127", null ],
+ [ "escapebin", "classdba__postgres.html#a8d2c6d8c92fe6f074452876483dd17fc", null ],
+ [ "getdriver", "classdba__postgres.html#ae0f834413e57cf0735ae7b64b2f71e68", null ],
+ [ "optimize_table", "classdba__postgres.html#a3de1ac375e98886dfc38fd0066e88f90", null ],
+ [ "q", "classdba__postgres.html#a70352880231fba0b859f82cd5b290a9a", null ],
+ [ "quote_interval", "classdba__postgres.html#a56f926f218155c88807e0e06f6817a72", null ],
+ [ "unescapebin", "classdba__postgres.html#a677f850211975c9ab89602c67e2dcad9", null ],
+ [ "INSTALL_SCRIPT", "classdba__postgres.html#a7267f91c3f87f600b30d7560de62dfd7", null ],
+ [ "NULL_DATE", "classdba__postgres.html#aeb404a85974d6c5df30c21650888000b", null ],
+ [ "UTC_NOW", "classdba__postgres.html#ace80a204e34b20b9907650399cce02a3", null ]
+]; \ No newline at end of file
diff --git a/doc/html/classdba__postgres.png b/doc/html/classdba__postgres.png
new file mode 100644
index 000000000..b57f604c4
--- /dev/null
+++ b/doc/html/classdba__postgres.png
Binary files differ
diff --git a/doc/html/classes.html b/doc/html/classes.html
index 4125fa1dd..62aa19187 100644
--- a/doc/html/classes.html
+++ b/doc/html/classes.html
@@ -122,18 +122,18 @@ $(document).ready(function(){initNavTree('classes.html','');});
</td><td rowspan="2" valign="bottom"><a name="letter_R"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah">&#160;&#160;R&#160;&#160;</div></td></tr></table>
</td><td></td></tr>
<tr><td valign="top"><a class="el" href="classdba__mysqli.html">dba_mysqli</a>&#160;&#160;&#160;</td><td></td></tr>
-<tr><td valign="top"><a class="el" href="classBaseObject.html">BaseObject</a>&#160;&#160;&#160;</td><td rowspan="2" valign="bottom"><a name="letter_E"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah">&#160;&#160;E&#160;&#160;</div></td></tr></table>
-</td><td valign="top"><a class="el" href="classItem.html">Item</a>&#160;&#160;&#160;</td><td valign="top"><a class="el" href="classRedBasicAuth.html">RedBasicAuth</a>&#160;&#160;&#160;</td><td></td></tr>
+<tr><td valign="top"><a class="el" href="classBaseObject.html">BaseObject</a>&#160;&#160;&#160;</td><td valign="top"><a class="el" href="classdba__postgres.html">dba_postgres</a>&#160;&#160;&#160;</td><td valign="top"><a class="el" href="classRedMatrix_1_1Import_1_1Import.html">Import</a> (<a class="el" href="namespaceRedMatrix_1_1Import.html">RedMatrix\Import</a>)&#160;&#160;&#160;</td><td valign="top"><a class="el" href="classRedMatrix_1_1RedDAV_1_1RedBasicAuth.html">RedBasicAuth</a> (<a class="el" href="namespaceRedMatrix_1_1RedDAV.html">RedMatrix\RedDAV</a>)&#160;&#160;&#160;</td><td></td></tr>
<tr><td rowspan="2" valign="bottom"><a name="letter_C"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah">&#160;&#160;C&#160;&#160;</div></td></tr></table>
-</td><td valign="top"><a class="el" href="interfaceITemplateEngine.html">ITemplateEngine</a>&#160;&#160;&#160;</td><td valign="top"><a class="el" href="classRedBrowser.html">RedBrowser</a>&#160;&#160;&#160;</td><td></td></tr>
-<tr><td valign="top"><a class="el" href="classenotify.html">enotify</a>&#160;&#160;&#160;</td><td rowspan="2" valign="bottom"><a name="letter_P"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah">&#160;&#160;P&#160;&#160;</div></td></tr></table>
-</td><td valign="top"><a class="el" href="classRedDirectory.html">RedDirectory</a>&#160;&#160;&#160;</td><td></td></tr>
-<tr><td valign="top"><a class="el" href="classCache.html">Cache</a>&#160;&#160;&#160;</td><td rowspan="2" valign="bottom"><a name="letter_F"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah">&#160;&#160;F&#160;&#160;</div></td></tr></table>
-</td><td valign="top"><a class="el" href="classRedFile.html">RedFile</a>&#160;&#160;&#160;</td><td></td></tr>
-<tr><td valign="top"><a class="el" href="classConversation.html">Conversation</a>&#160;&#160;&#160;</td><td valign="top"><a class="el" href="classphoto__driver.html">photo_driver</a>&#160;&#160;&#160;</td><td rowspan="2" valign="bottom"><a name="letter_T"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah">&#160;&#160;T&#160;&#160;</div></td></tr></table>
+</td><td rowspan="2" valign="bottom"><a name="letter_E"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah">&#160;&#160;E&#160;&#160;</div></td></tr></table>
+</td><td valign="top"><a class="el" href="classItem.html">Item</a>&#160;&#160;&#160;</td><td valign="top"><a class="el" href="classRedMatrix_1_1RedDAV_1_1RedBrowser.html">RedBrowser</a> (<a class="el" href="namespaceRedMatrix_1_1RedDAV.html">RedMatrix\RedDAV</a>)&#160;&#160;&#160;</td><td></td></tr>
+<tr><td valign="top"><a class="el" href="interfaceITemplateEngine.html">ITemplateEngine</a>&#160;&#160;&#160;</td><td valign="top"><a class="el" href="classRedMatrix_1_1RedDAV_1_1RedDirectory.html">RedDirectory</a> (<a class="el" href="namespaceRedMatrix_1_1RedDAV.html">RedMatrix\RedDAV</a>)&#160;&#160;&#160;</td><td></td></tr>
+<tr><td valign="top"><a class="el" href="classCache.html">Cache</a>&#160;&#160;&#160;</td><td valign="top"><a class="el" href="classenotify.html">enotify</a>&#160;&#160;&#160;</td><td rowspan="2" valign="bottom"><a name="letter_P"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah">&#160;&#160;P&#160;&#160;</div></td></tr></table>
+</td><td valign="top"><a class="el" href="classRedMatrix_1_1RedDAV_1_1RedFile.html">RedFile</a> (<a class="el" href="namespaceRedMatrix_1_1RedDAV.html">RedMatrix\RedDAV</a>)&#160;&#160;&#160;</td><td></td></tr>
+<tr><td valign="top"><a class="el" href="classConversation.html">Conversation</a>&#160;&#160;&#160;</td><td rowspan="2" valign="bottom"><a name="letter_F"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah">&#160;&#160;F&#160;&#160;</div></td></tr></table>
+</td><td rowspan="2" valign="bottom"><a name="letter_T"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah">&#160;&#160;T&#160;&#160;</div></td></tr></table>
</td><td></td></tr>
-<tr><td></td><td valign="top"><a class="el" href="classFKOAuth1.html">FKOAuth1</a>&#160;&#160;&#160;</td><td></td><td></td></tr>
-<tr><td></td><td></td><td></td><td valign="top"><a class="el" href="classTemplate.html">Template</a>&#160;&#160;&#160;</td><td></td></tr>
+<tr><td></td><td valign="top"><a class="el" href="classphoto__driver.html">photo_driver</a>&#160;&#160;&#160;</td><td></td></tr>
+<tr><td></td><td valign="top"><a class="el" href="classFKOAuth1.html">FKOAuth1</a>&#160;&#160;&#160;</td><td></td><td valign="top"><a class="el" href="classTemplate.html">Template</a>&#160;&#160;&#160;</td><td></td></tr>
<tr><td></td><td></td><td></td><td></td><td></td></tr>
</table>
<div class="qindex"><a class="qindex" href="#letter_A">A</a>&#160;|&#160;<a class="qindex" href="#letter_B">B</a>&#160;|&#160;<a class="qindex" href="#letter_C">C</a>&#160;|&#160;<a class="qindex" href="#letter_D">D</a>&#160;|&#160;<a class="qindex" href="#letter_E">E</a>&#160;|&#160;<a class="qindex" href="#letter_F">F</a>&#160;|&#160;<a class="qindex" href="#letter_I">I</a>&#160;|&#160;<a class="qindex" href="#letter_P">P</a>&#160;|&#160;<a class="qindex" href="#letter_R">R</a>&#160;|&#160;<a class="qindex" href="#letter_T">T</a>&#160;|&#160;<a class="qindex" href="#letter_Z">Z</a></div>
diff --git a/doc/html/classphoto__driver.html b/doc/html/classphoto__driver.html
index 8a8ed59ff..f6c922574 100644
--- a/doc/html/classphoto__driver.html
+++ b/doc/html/classphoto__driver.html
@@ -142,7 +142,7 @@ Public Member Functions</h2></td></tr>
<tr class="separator:a2f2b6337cf9aa0688d10b422123f0eec"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a2b2a99021fc63ed6465d703ddddcb832"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classphoto__driver.html#a2b2a99021fc63ed6465d703ddddcb832">flip</a> ($horiz=true, $vert=false)</td></tr>
<tr class="separator:a2b2a99021fc63ed6465d703ddddcb832"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a2e6e61f1e356a90bc978f4404a77137e"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classphoto__driver.html#a2e6e61f1e356a90bc978f4404a77137e">cropImage</a> ($max, $<a class="el" href="boot_8php.html#a01353c9abebc3544ea080ac161729632">x</a>, $y, $w, $h)</td></tr>
+<tr class="memitem:a2e6e61f1e356a90bc978f4404a77137e"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classphoto__driver.html#a2e6e61f1e356a90bc978f4404a77137e">cropImage</a> ($max, $<a class="el" href="boot_8php.html#ae97836b0547953be182a2334c9c91d3c">x</a>, $y, $w, $h)</td></tr>
<tr class="separator:a2e6e61f1e356a90bc978f4404a77137e"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:abc9f73ad90923772d52b9fcc4eb117dd"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classphoto__driver.html#abc9f73ad90923772d52b9fcc4eb117dd">imageString</a> ()</td></tr>
<tr class="separator:abc9f73ad90923772d52b9fcc4eb117dd"><td class="memSeparator" colspan="2">&#160;</td></tr>
diff --git a/doc/html/classphoto__gd.html b/doc/html/classphoto__gd.html
index f6d76b31c..53d819bfb 100644
--- a/doc/html/classphoto__gd.html
+++ b/doc/html/classphoto__gd.html
@@ -140,7 +140,7 @@ Public Member Functions</h2></td></tr>
<tr class="separator:a77f87730b11093b76980c541159df37d"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a44cedef376044018702d9355ddc813ce"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classphoto__gd.html#a44cedef376044018702d9355ddc813ce">flip</a> ($horiz=true, $vert=false)</td></tr>
<tr class="separator:a44cedef376044018702d9355ddc813ce"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:ab2232d775c8bacf66773a03308105f0c"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classphoto__gd.html#ab2232d775c8bacf66773a03308105f0c">cropImage</a> ($max, $<a class="el" href="boot_8php.html#a01353c9abebc3544ea080ac161729632">x</a>, $y, $w, $h)</td></tr>
+<tr class="memitem:ab2232d775c8bacf66773a03308105f0c"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classphoto__gd.html#ab2232d775c8bacf66773a03308105f0c">cropImage</a> ($max, $<a class="el" href="boot_8php.html#ae97836b0547953be182a2334c9c91d3c">x</a>, $y, $w, $h)</td></tr>
<tr class="separator:ab2232d775c8bacf66773a03308105f0c"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a0795fc029be382557ae3f6e285f40e00"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classphoto__gd.html#a0795fc029be382557ae3f6e285f40e00">imageString</a> ()</td></tr>
<tr class="separator:a0795fc029be382557ae3f6e285f40e00"><td class="memSeparator" colspan="2">&#160;</td></tr>
@@ -161,7 +161,7 @@ Public Member Functions</h2></td></tr>
<tr class="separator:a2f2b6337cf9aa0688d10b422123f0eec inherit pub_methods_classphoto__driver"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a2b2a99021fc63ed6465d703ddddcb832 inherit pub_methods_classphoto__driver"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classphoto__driver.html#a2b2a99021fc63ed6465d703ddddcb832">flip</a> ($horiz=true, $vert=false)</td></tr>
<tr class="separator:a2b2a99021fc63ed6465d703ddddcb832 inherit pub_methods_classphoto__driver"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a2e6e61f1e356a90bc978f4404a77137e inherit pub_methods_classphoto__driver"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classphoto__driver.html#a2e6e61f1e356a90bc978f4404a77137e">cropImage</a> ($max, $<a class="el" href="boot_8php.html#a01353c9abebc3544ea080ac161729632">x</a>, $y, $w, $h)</td></tr>
+<tr class="memitem:a2e6e61f1e356a90bc978f4404a77137e inherit pub_methods_classphoto__driver"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classphoto__driver.html#a2e6e61f1e356a90bc978f4404a77137e">cropImage</a> ($max, $<a class="el" href="boot_8php.html#ae97836b0547953be182a2334c9c91d3c">x</a>, $y, $w, $h)</td></tr>
<tr class="separator:a2e6e61f1e356a90bc978f4404a77137e inherit pub_methods_classphoto__driver"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:abc9f73ad90923772d52b9fcc4eb117dd inherit pub_methods_classphoto__driver"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classphoto__driver.html#abc9f73ad90923772d52b9fcc4eb117dd">imageString</a> ()</td></tr>
<tr class="separator:abc9f73ad90923772d52b9fcc4eb117dd inherit pub_methods_classphoto__driver"><td class="memSeparator" colspan="2">&#160;</td></tr>
diff --git a/doc/html/classphoto__imagick.html b/doc/html/classphoto__imagick.html
index 8b6f1c630..bc6554cd0 100644
--- a/doc/html/classphoto__imagick.html
+++ b/doc/html/classphoto__imagick.html
@@ -142,7 +142,7 @@ Public Member Functions</h2></td></tr>
<tr class="separator:a9df5738a4a18e76dd304c440e96f045f"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aff6bcdbab18593a3fc5a480db8509393"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classphoto__imagick.html#aff6bcdbab18593a3fc5a480db8509393">flip</a> ($horiz=true, $vert=false)</td></tr>
<tr class="separator:aff6bcdbab18593a3fc5a480db8509393"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a2f33a03a89497a2b2768e29736d4a8a4"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classphoto__imagick.html#a2f33a03a89497a2b2768e29736d4a8a4">cropImage</a> ($max, $<a class="el" href="boot_8php.html#a01353c9abebc3544ea080ac161729632">x</a>, $y, $w, $h)</td></tr>
+<tr class="memitem:a2f33a03a89497a2b2768e29736d4a8a4"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classphoto__imagick.html#a2f33a03a89497a2b2768e29736d4a8a4">cropImage</a> ($max, $<a class="el" href="boot_8php.html#ae97836b0547953be182a2334c9c91d3c">x</a>, $y, $w, $h)</td></tr>
<tr class="separator:a2f33a03a89497a2b2768e29736d4a8a4"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a70adbef31128c0ac8cbc5dcf34cdb019"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classphoto__imagick.html#a70adbef31128c0ac8cbc5dcf34cdb019">imageString</a> ()</td></tr>
<tr class="separator:a70adbef31128c0ac8cbc5dcf34cdb019"><td class="memSeparator" colspan="2">&#160;</td></tr>
@@ -163,7 +163,7 @@ Public Member Functions</h2></td></tr>
<tr class="separator:a2f2b6337cf9aa0688d10b422123f0eec inherit pub_methods_classphoto__driver"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a2b2a99021fc63ed6465d703ddddcb832 inherit pub_methods_classphoto__driver"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classphoto__driver.html#a2b2a99021fc63ed6465d703ddddcb832">flip</a> ($horiz=true, $vert=false)</td></tr>
<tr class="separator:a2b2a99021fc63ed6465d703ddddcb832 inherit pub_methods_classphoto__driver"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a2e6e61f1e356a90bc978f4404a77137e inherit pub_methods_classphoto__driver"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classphoto__driver.html#a2e6e61f1e356a90bc978f4404a77137e">cropImage</a> ($max, $<a class="el" href="boot_8php.html#a01353c9abebc3544ea080ac161729632">x</a>, $y, $w, $h)</td></tr>
+<tr class="memitem:a2e6e61f1e356a90bc978f4404a77137e inherit pub_methods_classphoto__driver"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classphoto__driver.html#a2e6e61f1e356a90bc978f4404a77137e">cropImage</a> ($max, $<a class="el" href="boot_8php.html#ae97836b0547953be182a2334c9c91d3c">x</a>, $y, $w, $h)</td></tr>
<tr class="separator:a2e6e61f1e356a90bc978f4404a77137e inherit pub_methods_classphoto__driver"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:abc9f73ad90923772d52b9fcc4eb117dd inherit pub_methods_classphoto__driver"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classphoto__driver.html#abc9f73ad90923772d52b9fcc4eb117dd">imageString</a> ()</td></tr>
<tr class="separator:abc9f73ad90923772d52b9fcc4eb117dd inherit pub_methods_classphoto__driver"><td class="memSeparator" colspan="2">&#160;</td></tr>
diff --git a/doc/html/cloud_8php.html b/doc/html/cloud_8php.html
index 33b1a3d56..c8a127ea6 100644
--- a/doc/html/cloud_8php.html
+++ b/doc/html/cloud_8php.html
@@ -110,25 +110,27 @@ $(document).ready(function(){initNavTree('cloud_8php.html','');});
</div><!--header-->
<div class="contents">
-<p>Initialize Red Matrix's cloud (SabreDAV)
+<p>Initialize <a class="el" href="namespaceRedMatrix.html" title="Class Import.">RedMatrix</a>'s cloud (SabreDAV).
<a href="#details">More...</a></p>
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="func-members"></a>
Functions</h2></td></tr>
-<tr class="memitem:a1b79a6fe0454bc76673ad9aef55bf02d"><td class="memItemLeft" align="right" valign="top"><a class="el" href="theme_2mytheme_2php_2default_8php.html#a3987f5547ceb7e36a210a66a06241a5a">if</a>(<a class="el" href="boot_8php.html#a01353c9abebc3544ea080ac161729632">x</a>($_SERVER,'REDIRECT_REMOTE_USER')) <br class="typebreak"/>
-<a class="el" href="theme_2mytheme_2php_2default_8php.html#a3987f5547ceb7e36a210a66a06241a5a">if</a>(<a class="el" href="boot_8php.html#a01353c9abebc3544ea080ac161729632">x</a>($_SERVER,'HTTP_AUTHORIZATION'))&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="cloud_8php.html#a1b79a6fe0454bc76673ad9aef55bf02d">cloud_init</a> (&amp;$a)</td></tr>
-<tr class="memdesc:a1b79a6fe0454bc76673ad9aef55bf02d"><td class="mdescLeft">&#160;</td><td class="mdescRight">Fires up the SabreDAV server. <a href="#a1b79a6fe0454bc76673ad9aef55bf02d">More...</a><br/></td></tr>
-<tr class="separator:a1b79a6fe0454bc76673ad9aef55bf02d"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ad2e96e917852f27dedfc263d37e13756"><td class="memItemLeft" align="right" valign="top"><a class="el" href="theme_2mytheme_2php_2default_8php.html#a3987f5547ceb7e36a210a66a06241a5a">if</a>(<a class="el" href="boot_8php.html#ae97836b0547953be182a2334c9c91d3c">x</a>($_SERVER, <br class="typebreak"/>
+'REDIRECT_REMOTE_USER')) <a class="el" href="theme_2mytheme_2php_2default_8php.html#a3987f5547ceb7e36a210a66a06241a5a">if</a>(<a class="el" href="boot_8php.html#ae97836b0547953be182a2334c9c91d3c">x</a>($_SERVER, <br class="typebreak"/>
+'HTTP_AUTHORIZATION'))&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="cloud_8php.html#ad2e96e917852f27dedfc263d37e13756">cloud_init</a> (&amp;$a)</td></tr>
+<tr class="memdesc:ad2e96e917852f27dedfc263d37e13756"><td class="mdescLeft">&#160;</td><td class="mdescRight">Fires up the SabreDAV server. <a href="#ad2e96e917852f27dedfc263d37e13756">More...</a><br/></td></tr>
+<tr class="separator:ad2e96e917852f27dedfc263d37e13756"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
-<div class="textblock"><p>Initialize Red Matrix's cloud (SabreDAV) </p>
+<div class="textblock"><p>Initialize <a class="el" href="namespaceRedMatrix.html" title="Class Import.">RedMatrix</a>'s cloud (SabreDAV). </p>
+<p>Module for accessing the DAV storage area. </p>
</div><h2 class="groupheader">Function Documentation</h2>
-<a class="anchor" id="a1b79a6fe0454bc76673ad9aef55bf02d"></a>
+<a class="anchor" id="ad2e96e917852f27dedfc263d37e13756"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
- <td class="memname"><a class="el" href="theme_2mytheme_2php_2default_8php.html#a3987f5547ceb7e36a210a66a06241a5a">if</a> (<a class="el" href="boot_8php.html#a01353c9abebc3544ea080ac161729632">x</a>($_SERVER,'REDIRECT_REMOTE_USER')) <a class="el" href="theme_2mytheme_2php_2default_8php.html#a3987f5547ceb7e36a210a66a06241a5a">if</a> (<a class="el" href="boot_8php.html#a01353c9abebc3544ea080ac161729632">x</a>($_SERVER,'HTTP_AUTHORIZATION')) cloud_init </td>
+ <td class="memname"><a class="el" href="theme_2mytheme_2php_2default_8php.html#a3987f5547ceb7e36a210a66a06241a5a">if</a> (<a class="el" href="boot_8php.html#ae97836b0547953be182a2334c9c91d3c">x</a>($_SERVER, 'REDIRECT_REMOTE_USER')) <a class="el" href="theme_2mytheme_2php_2default_8php.html#a3987f5547ceb7e36a210a66a06241a5a">if</a> (<a class="el" href="boot_8php.html#ae97836b0547953be182a2334c9c91d3c">x</a>($_SERVER, 'HTTP_AUTHORIZATION')) cloud_init </td>
<td>(</td>
<td class="paramtype">&amp;&#160;</td>
<td class="paramname"><em>$a</em></td><td>)</td>
@@ -140,7 +142,7 @@ Functions</h2></td></tr>
<p>Fires up the SabreDAV server. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
- <tr><td class="paramtype"><a class="el" href="classApp.html">App</a></td><td class="paramname">&amp;$a</td><td></td></tr>
+ <tr><td class="paramtype"><a class="el" href="classApp.html" title="Our main application structure for the life of this page.">App</a></td><td class="paramname">&amp;$a</td><td></td></tr>
</table>
</dd>
</dl>
diff --git a/doc/html/cloud_8php.js b/doc/html/cloud_8php.js
index 6b3de1272..333d1c197 100644
--- a/doc/html/cloud_8php.js
+++ b/doc/html/cloud_8php.js
@@ -1,4 +1,4 @@
var cloud_8php =
[
- [ "cloud_init", "cloud_8php.html#a1b79a6fe0454bc76673ad9aef55bf02d", null ]
+ [ "cloud_init", "cloud_8php.html#ad2e96e917852f27dedfc263d37e13756", null ]
]; \ No newline at end of file
diff --git a/doc/html/comanche_8php.html b/doc/html/comanche_8php.html
index 5967a7d6a..aec807d58 100644
--- a/doc/html/comanche_8php.html
+++ b/doc/html/comanche_8php.html
@@ -166,7 +166,7 @@ Functions</h2></td></tr>
</div><div class="memdoc">
<p><a class="el" href="comanche_8php.html#aed39ecad69234f3ddf61f0dedb49a58e">comanche_get_channel_id()</a> Returns the channel_id of the profile owner of the page, or the local_user if there is no profile owner. Otherwise returns 0 </p>
-<p>Referenced by <a class="el" href="comanche_8php.html#a5a7ab801717d38e91ac910b933973887">comanche_block()</a>, <a class="el" href="comanche_8php.html#ad5a44e42231759aba1dda49e0490501e">comanche_menu()</a>, and <a class="el" href="boot_8php.html#acc4e0c910af066148b810e5fde55fff1">construct_page()</a>.</p>
+<p>Referenced by <a class="el" href="comanche_8php.html#a5a7ab801717d38e91ac910b933973887">comanche_block()</a>, <a class="el" href="comanche_8php.html#ad5a44e42231759aba1dda49e0490501e">comanche_menu()</a>, and <a class="el" href="boot_8php.html#a50a6707a28c7d05d3f49eaabc7994501">load_pdl()</a>.</p>
</div>
</div>
@@ -222,7 +222,7 @@ Functions</h2></td></tr>
</table>
</div><div class="memdoc">
-<p>Referenced by <a class="el" href="boot_8php.html#acc4e0c910af066148b810e5fde55fff1">construct_page()</a>, and <a class="el" href="page_8php.html#a91a5f649f68406149108bded1dc90b22">page_content()</a>.</p>
+<p>Referenced by <a class="el" href="boot_8php.html#a50a6707a28c7d05d3f49eaabc7994501">load_pdl()</a>, and <a class="el" href="page_8php.html#a4d89800c0366a239191b1692c09635cf">page_init()</a>.</p>
</div>
</div>
diff --git a/doc/html/contact__selectors_8php.html b/doc/html/contact__selectors_8php.html
index ca9945e46..83d773fc0 100644
--- a/doc/html/contact__selectors_8php.html
+++ b/doc/html/contact__selectors_8php.html
@@ -114,8 +114,6 @@ $(document).ready(function(){initNavTree('contact__selectors_8php.html','');});
Functions</h2></td></tr>
<tr class="memitem:a2c743d2eb526eb758d943a1490162d75"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="contact__selectors_8php.html#a2c743d2eb526eb758d943a1490162d75">contact_profile_assign</a> ($current)</td></tr>
<tr class="separator:a2c743d2eb526eb758d943a1490162d75"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:ae499960d6467bd30c78607b1018baf53"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="contact__selectors_8php.html#ae499960d6467bd30c78607b1018baf53">contact_reputation</a> ($current)</td></tr>
-<tr class="separator:ae499960d6467bd30c78607b1018baf53"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a9839e8fdaac7ffb37bf1420493f5c28f"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="contact__selectors_8php.html#a9839e8fdaac7ffb37bf1420493f5c28f">contact_poll_interval</a> ($current, $disabled=false)</td></tr>
<tr class="separator:a9839e8fdaac7ffb37bf1420493f5c28f"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ad472e4716426dd1a9dd77b62962454be"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="contact__selectors_8php.html#ad472e4716426dd1a9dd77b62962454be">network_to_name</a> ($s)</td></tr>
@@ -168,22 +166,6 @@ Functions</h2></td></tr>
</div>
</div>
-<a class="anchor" id="ae499960d6467bd30c78607b1018baf53"></a>
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">contact_reputation </td>
- <td>(</td>
- <td class="paramtype">&#160;</td>
- <td class="paramname"><em>$current</em></td><td>)</td>
- <td></td>
- </tr>
- </table>
-</div><div class="memdoc">
-
-</div>
-</div>
<a class="anchor" id="ad472e4716426dd1a9dd77b62962454be"></a>
<div class="memitem">
<div class="memproto">
diff --git a/doc/html/contact__selectors_8php.js b/doc/html/contact__selectors_8php.js
index dcf8466e2..fd8a2cb0f 100644
--- a/doc/html/contact__selectors_8php.js
+++ b/doc/html/contact__selectors_8php.js
@@ -2,6 +2,5 @@ var contact__selectors_8php =
[
[ "contact_poll_interval", "contact__selectors_8php.html#a9839e8fdaac7ffb37bf1420493f5c28f", null ],
[ "contact_profile_assign", "contact__selectors_8php.html#a2c743d2eb526eb758d943a1490162d75", null ],
- [ "contact_reputation", "contact__selectors_8php.html#ae499960d6467bd30c78607b1018baf53", null ],
[ "network_to_name", "contact__selectors_8php.html#ad472e4716426dd1a9dd77b62962454be", null ]
]; \ No newline at end of file
diff --git a/doc/html/conversation_8php.html b/doc/html/conversation_8php.html
index 723c0f719..350d2463d 100644
--- a/doc/html/conversation_8php.html
+++ b/doc/html/conversation_8php.html
@@ -129,10 +129,11 @@ Functions</h2></td></tr>
<tr class="memitem:aacbb12d372d5e9c3ab0735b4aea48fb3"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="conversation_8php.html#aacbb12d372d5e9c3ab0735b4aea48fb3">item_photo_menu</a> ($item)</td></tr>
<tr class="separator:aacbb12d372d5e9c3ab0735b4aea48fb3"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:afe5b2f38d8b803edb0d7ec5fa2868db0"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="conversation_8php.html#afe5b2f38d8b803edb0d7ec5fa2868db0">like_puller</a> ($a, $item, &amp;$arr, $mode)</td></tr>
+<tr class="memdesc:afe5b2f38d8b803edb0d7ec5fa2868db0"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns a like/dislike entry. It gives back a HTML link to the channel that liked/disliked. <a href="#afe5b2f38d8b803edb0d7ec5fa2868db0">More...</a><br/></td></tr>
<tr class="separator:afe5b2f38d8b803edb0d7ec5fa2868db0"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a3d8e30cc94f9a175054c021305d3aca3"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="conversation_8php.html#a3d8e30cc94f9a175054c021305d3aca3">format_like</a> ($cnt, $arr, $type, $id)</td></tr>
<tr class="separator:a3d8e30cc94f9a175054c021305d3aca3"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a2a7d541854bba755eb8ada59af7dcb1a"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="conversation_8php.html#a2a7d541854bba755eb8ada59af7dcb1a">status_editor</a> ($a, $<a class="el" href="boot_8php.html#a01353c9abebc3544ea080ac161729632">x</a>, $popup=false)</td></tr>
+<tr class="memitem:a2a7d541854bba755eb8ada59af7dcb1a"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="conversation_8php.html#a2a7d541854bba755eb8ada59af7dcb1a">status_editor</a> ($a, $<a class="el" href="boot_8php.html#ae97836b0547953be182a2334c9c91d3c">x</a>, $popup=false)</td></tr>
<tr class="separator:a2a7d541854bba755eb8ada59af7dcb1a"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a7f6ef0dfa554bacf620e84c18d386e67"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="conversation_8php.html#a7f6ef0dfa554bacf620e84c18d386e67">get_item_children</a> ($arr, $parent)</td></tr>
<tr class="separator:a7f6ef0dfa554bacf620e84c18d386e67"><td class="memSeparator" colspan="2">&#160;</td></tr>
@@ -148,7 +149,7 @@ Functions</h2></td></tr>
<tr class="separator:a9cc2a679606da9e535a06433f9f553a0"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a9f909b8885259b79c6ac8da93afd8f11"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="conversation_8php.html#a9f909b8885259b79c6ac8da93afd8f11">sort_thr_commented</a> ($a, $b)</td></tr>
<tr class="separator:a9f909b8885259b79c6ac8da93afd8f11"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:ae59703b07ce2ddf627b4172ff26058b6"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="conversation_8php.html#ae59703b07ce2ddf627b4172ff26058b6">find_thread_parent_index</a> ($arr, $<a class="el" href="boot_8php.html#a01353c9abebc3544ea080ac161729632">x</a>)</td></tr>
+<tr class="memitem:ae59703b07ce2ddf627b4172ff26058b6"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="conversation_8php.html#ae59703b07ce2ddf627b4172ff26058b6">find_thread_parent_index</a> ($arr, $<a class="el" href="boot_8php.html#ae97836b0547953be182a2334c9c91d3c">x</a>)</td></tr>
<tr class="separator:ae59703b07ce2ddf627b4172ff26058b6"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a0891aaa4492cba2b51eda12fe01957f3"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="conversation_8php.html#a0891aaa4492cba2b51eda12fe01957f3">format_location</a> ($item)</td></tr>
<tr class="separator:a0891aaa4492cba2b51eda12fe01957f3"><td class="memSeparator" colspan="2">&#160;</td></tr>
@@ -230,7 +231,7 @@ Functions</h2></td></tr>
</table>
</div><div class="memdoc">
-<p>Referenced by <a class="el" href="channel_8php.html#a9c6a6179e0e626398ebecc6151905ef1">channel_content()</a>, <a class="el" href="display_8php.html#a37137c98d47bf3306f4c2bb9f5b60de0">display_content()</a>, <a class="el" href="items_8php.html#a756738301f2ed96be50232500677d58a">items_fetch()</a>, <a class="el" href="mod_2network_8php.html#a43f2f29b90c5e29072c561934bc8f8b4">network_content()</a>, and <a class="el" href="items_8php.html#a004e89d86b0f29b2c4da20108ecc4091">zot_feed()</a>.</p>
+<p>Referenced by <a class="el" href="channel_8php.html#a9c6a6179e0e626398ebecc6151905ef1">channel_content()</a>, <a class="el" href="display_8php.html#a37137c98d47bf3306f4c2bb9f5b60de0">display_content()</a>, <a class="el" href="home_8php.html#a6e3dbf78f4ed74ab2577de221190b33f">home_content()</a>, <a class="el" href="items_8php.html#a756738301f2ed96be50232500677d58a">items_fetch()</a>, <a class="el" href="mod_2network_8php.html#a43f2f29b90c5e29072c561934bc8f8b4">network_content()</a>, and <a class="el" href="items_8php.html#a1cf89557f32d5dfbe8bd90448dc1aa92">zot_feed()</a>.</p>
</div>
</div>
@@ -287,7 +288,7 @@ Functions</h2></td></tr>
<li>conversation view The $mode parameter decides between the various renderings and also figures out how to determine page owner and other contextual items that are based on unique features of the calling module. </li>
</ul>
-<p>Referenced by <a class="el" href="channel_8php.html#a9c6a6179e0e626398ebecc6151905ef1">channel_content()</a>, <a class="el" href="display_8php.html#a37137c98d47bf3306f4c2bb9f5b60de0">display_content()</a>, <a class="el" href="item_8php.html#a693cd09805755ab85bbb5ecae69a48c3">item_post()</a>, <a class="el" href="mod_2network_8php.html#a43f2f29b90c5e29072c561934bc8f8b4">network_content()</a>, <a class="el" href="classItem.html#aa452b5bcd8dea12119b09212c615cb41">Item\remove_parent()</a>, <a class="el" href="search_8php.html#ab2568591359edde5b483a6cd9a24b2cc">search_content()</a>, and <a class="el" href="classItem.html#aa8b1bbc4236890694635295e46d7fd72">Item\set_conversation()</a>.</p>
+<p>Referenced by <a class="el" href="channel_8php.html#a9c6a6179e0e626398ebecc6151905ef1">channel_content()</a>, <a class="el" href="display_8php.html#a37137c98d47bf3306f4c2bb9f5b60de0">display_content()</a>, <a class="el" href="home_8php.html#a6e3dbf78f4ed74ab2577de221190b33f">home_content()</a>, <a class="el" href="item_8php.html#a693cd09805755ab85bbb5ecae69a48c3">item_post()</a>, <a class="el" href="mod_2network_8php.html#a43f2f29b90c5e29072c561934bc8f8b4">network_content()</a>, <a class="el" href="classItem.html#aa452b5bcd8dea12119b09212c615cb41">Item\remove_parent()</a>, <a class="el" href="search_8php.html#ab2568591359edde5b483a6cd9a24b2cc">search_content()</a>, and <a class="el" href="classItem.html#aa8b1bbc4236890694635295e46d7fd72">Item\set_conversation()</a>.</p>
</div>
</div>
@@ -520,6 +521,18 @@ Functions</h2></td></tr>
</table>
</div><div class="memdoc">
+<p>Returns a like/dislike entry. It gives back a HTML link to the channel that liked/disliked. </p>
+<dl class="params"><dt>Parameters</dt><dd>
+ <table class="params">
+ <tr><td class="paramtype">array</td><td class="paramname">$a</td><td>(not used) </td></tr>
+ <tr><td class="paramtype">array</td><td class="paramname">$item</td><td></td></tr>
+ <tr><td class="paramtype">array</td><td class="paramname">&amp;$arr</td><td></td></tr>
+ <tr><td class="paramtype">string</td><td class="paramname">$mode</td><td>like/dislike </td></tr>
+ </table>
+ </dd>
+</dl>
+<dl class="section return"><dt>Returns</dt><dd>void </dd></dl>
+
<p>Referenced by <a class="el" href="conversation_8php.html#affea1afb3f32ca41e966c8ddb4204d81">conversation()</a>.</p>
</div>
@@ -574,7 +587,7 @@ Functions</h2></td></tr>
</table>
</div><div class="memdoc">
-<p>Referenced by <a class="el" href="block_8php.html#a8a82a470acdfbc7a8e749509caeeea45">block_content()</a>, <a class="el" href="home_8php.html#aa1cf697851a646755baf537f75334c46">home_content()</a>, <a class="el" href="page_8php.html#a91a5f649f68406149108bded1dc90b22">page_content()</a>, and <a class="el" href="widgets_8php.html#a313a8d10ab81c71357c12e67e4d7efd5">widget_item()</a>.</p>
+<p>Referenced by <a class="el" href="block_8php.html#a8a82a470acdfbc7a8e749509caeeea45">block_content()</a>, <a class="el" href="home_8php.html#a6e3dbf78f4ed74ab2577de221190b33f">home_content()</a>, <a class="el" href="page_8php.html#a91a5f649f68406149108bded1dc90b22">page_content()</a>, and <a class="el" href="widgets_8php.html#a313a8d10ab81c71357c12e67e4d7efd5">widget_item()</a>.</p>
</div>
</div>
@@ -608,7 +621,7 @@ Functions</h2></td></tr>
</table>
</div><div class="memdoc">
-<p>Referenced by <a class="el" href="mod_2bookmarks_8php.html#a774364b1c8404529581083631703527a">bookmarks_content()</a>, <a class="el" href="channel_8php.html#a9c6a6179e0e626398ebecc6151905ef1">channel_content()</a>, <a class="el" href="mod_2chat_8php.html#a8b0b8bee6fef6477e8c64c5e951b1b4f">chat_content()</a>, <a class="el" href="events_8php.html#a1d293fb217ae6bc9e3858c4b32e363ec">events_content()</a>, <a class="el" href="classRedBrowser.html#a1f7daf50bb9bfcde7345b3b1908dbd7e">RedBrowser\generateDirectoryIndex()</a>, <a class="el" href="mod_2photos_8php.html#aa87382611a66ec5effdb2d78f13f5812">photos_content()</a>, <a class="el" href="profile_8php.html#a3775cf6eef6587e5143133356a7b76c0">profile_content()</a>, and <a class="el" href="webpages_8php.html#af3b7397d4abc153e3d2147740ee1a41d">webpages_content()</a>.</p>
+<p>Referenced by <a class="el" href="mod_2bookmarks_8php.html#a774364b1c8404529581083631703527a">bookmarks_content()</a>, <a class="el" href="channel_8php.html#a9c6a6179e0e626398ebecc6151905ef1">channel_content()</a>, <a class="el" href="mod_2chat_8php.html#a8b0b8bee6fef6477e8c64c5e951b1b4f">chat_content()</a>, <a class="el" href="events_8php.html#a1d293fb217ae6bc9e3858c4b32e363ec">events_content()</a>, <a class="el" href="classRedMatrix_1_1RedDAV_1_1RedBrowser.html#af764d5f14df751f9ec86c34fab300c09">RedMatrix\RedDAV\RedBrowser\generateDirectoryIndex()</a>, <a class="el" href="mod_2photos_8php.html#aa87382611a66ec5effdb2d78f13f5812">photos_content()</a>, <a class="el" href="profile_8php.html#a3775cf6eef6587e5143133356a7b76c0">profile_content()</a>, and <a class="el" href="webpages_8php.html#af3b7397d4abc153e3d2147740ee1a41d">webpages_content()</a>.</p>
</div>
</div>
@@ -770,7 +783,7 @@ Functions</h2></td></tr>
</table>
</div><div class="memdoc">
-<p>Referenced by <a class="el" href="classItem.html#a248f45871ecfe82a08d1d4c0769b2eb2">Item\__construct()</a>, <a class="el" href="conversation_8php.html#affea1afb3f32ca41e966c8ddb4204d81">conversation()</a>, <a class="el" href="conversation_8php.html#ab2383dff4f823e580399ff469d90ab19">count_descendants()</a>, and <a class="el" href="enotify_8php.html#a3e9a9355b243777c488d2a9883908dfc">notification()</a>.</p>
+<p>Referenced by <a class="el" href="classItem.html#a248f45871ecfe82a08d1d4c0769b2eb2">Item\__construct()</a>, <a class="el" href="conversation_8php.html#affea1afb3f32ca41e966c8ddb4204d81">conversation()</a>, <a class="el" href="conversation_8php.html#ab2383dff4f823e580399ff469d90ab19">count_descendants()</a>, <a class="el" href="classItem.html#ae0c48b2fed5558642549cabd547fc4f3">Item\count_unseen_descendants()</a>, and <a class="el" href="enotify_8php.html#a3e9a9355b243777c488d2a9883908dfc">notification()</a>.</p>
</div>
</div>
diff --git a/doc/html/crypto_8php.html b/doc/html/crypto_8php.html
index e4c56ec98..c860813bb 100644
--- a/doc/html/crypto_8php.html
+++ b/doc/html/crypto_8php.html
@@ -134,6 +134,32 @@ Functions</h2></td></tr>
<tr class="separator:aca7c3a574bfb6c6ef1f2403a56823914"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aae0ab70d6a199b29555b1ac3cf250d6a"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="crypto_8php.html#aae0ab70d6a199b29555b1ac3cf250d6a">new_keypair</a> ($bits)</td></tr>
<tr class="separator:aae0ab70d6a199b29555b1ac3cf250d6a"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a4d15d19b446dbf47804675df7c85e2a9"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="crypto_8php.html#a4d15d19b446dbf47804675df7c85e2a9">pkcs1to8</a> ($oldkey, $len)</td></tr>
+<tr class="separator:a4d15d19b446dbf47804675df7c85e2a9"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a7427a18417341aa35e2207bfa205e432"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="crypto_8php.html#a7427a18417341aa35e2207bfa205e432">pkcs8to1</a> ($oldkey, $len)</td></tr>
+<tr class="separator:a7427a18417341aa35e2207bfa205e432"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a630e1574554f34e7c38511585d9e71a2"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="crypto_8php.html#a630e1574554f34e7c38511585d9e71a2">DerToPem</a> ($Der, $Private=false)</td></tr>
+<tr class="separator:a630e1574554f34e7c38511585d9e71a2"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ae5af17db1cb5d7c91d486e1264079839"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="crypto_8php.html#ae5af17db1cb5d7c91d486e1264079839">DerToRsa</a> ($Der)</td></tr>
+<tr class="separator:ae5af17db1cb5d7c91d486e1264079839"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a0e941b6b18ff895d1a2448741abf2ef2"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="crypto_8php.html#a0e941b6b18ff895d1a2448741abf2ef2">pkcs8_encode</a> ($Modulus, $PublicExponent)</td></tr>
+<tr class="separator:a0e941b6b18ff895d1a2448741abf2ef2"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a890b443f80f0968fb9eabd93fc99dbb5"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="crypto_8php.html#a890b443f80f0968fb9eabd93fc99dbb5">pkcs1_encode</a> ($Modulus, $PublicExponent)</td></tr>
+<tr class="separator:a890b443f80f0968fb9eabd93fc99dbb5"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:af8bbdeaf4abed7b40365d301e6013c85"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="crypto_8php.html#af8bbdeaf4abed7b40365d301e6013c85">metopem</a> ($m, $e)</td></tr>
+<tr class="separator:af8bbdeaf4abed7b40365d301e6013c85"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a2a3fae7caca27f86d158eeaf69b6f287"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="crypto_8php.html#a2a3fae7caca27f86d158eeaf69b6f287">pubrsatome</a> ($key, &amp;$m, &amp;$e)</td></tr>
+<tr class="separator:a2a3fae7caca27f86d158eeaf69b6f287"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a7f7e650aaeaa3832580a73eb00966b26"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="crypto_8php.html#a7f7e650aaeaa3832580a73eb00966b26">rsatopem</a> ($key)</td></tr>
+<tr class="separator:a7f7e650aaeaa3832580a73eb00966b26"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a35bc357c93f4ddc67ef377620b0349e8"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="crypto_8php.html#a35bc357c93f4ddc67ef377620b0349e8">pemtorsa</a> ($key)</td></tr>
+<tr class="separator:a35bc357c93f4ddc67ef377620b0349e8"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a798368843cdd9bb08386b48e53e29e8c"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="crypto_8php.html#a798368843cdd9bb08386b48e53e29e8c">pemtome</a> ($key, &amp;$m, &amp;$e)</td></tr>
+<tr class="separator:a798368843cdd9bb08386b48e53e29e8c"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a573f02517abe4ac9241268263063b2a0"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="crypto_8php.html#a573f02517abe4ac9241268263063b2a0">metorsa</a> ($m, $e)</td></tr>
+<tr class="separator:a573f02517abe4ac9241268263063b2a0"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a9191447cc46f0b4eaba3273e313994d5"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="crypto_8php.html#a9191447cc46f0b4eaba3273e313994d5">salmon_key</a> ($pubkey)</td></tr>
+<tr class="separator:a9191447cc46f0b4eaba3273e313994d5"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<h2 class="groupheader">Function Documentation</h2>
<a class="anchor" id="ac852ee41392d1358c3a54d54935e0bf9"></a>
@@ -228,7 +254,7 @@ Functions</h2></td></tr>
</table>
</div><div class="memdoc">
-<p>Referenced by <a class="el" href="crypto_8php.html#a32fc08d57a5694f94d8543ecbb03323c">crypto_encapsulate()</a>, <a class="el" href="item_8php.html#a693cd09805755ab85bbb5ecae69a48c3">item_post()</a>, <a class="el" href="items_8php.html#a410f9c743877c125ca06312373346903">post_activity_item()</a>, and <a class="el" href="zfinger_8php.html#a8139b83a22ef98869adc10aa224027a0">zfinger_init()</a>.</p>
+<p>Referenced by <a class="el" href="crypto_8php.html#a32fc08d57a5694f94d8543ecbb03323c">crypto_encapsulate()</a>.</p>
</div>
</div>
@@ -290,7 +316,7 @@ Functions</h2></td></tr>
</table>
</div><div class="memdoc">
-<p>Referenced by <a class="el" href="items_8php.html#a536d0313b6ffe33b9d2490c4e25c5361">get_item_elements()</a>, <a class="el" href="items_8php.html#a94ddb1d6c8fa21dd7433677e85168037">get_mail_elements()</a>, <a class="el" href="items_8php.html#a2541e6861a56d145c9281877cc501615">item_store()</a>, <a class="el" href="items_8php.html#acf0bf7c9d21ac84f32effb754f7ad484">item_store_update()</a>, <a class="el" href="post_8php.html#af59e6a1dc22d19d9257b01cd7ccedb75">post_post()</a>, <a class="el" href="include_2message_8php.html#a751ffd6635022b2190f56154ee745752">send_message()</a>, <a class="el" href="zot_8php.html#a3862b3161b2c8557dc1a95020179bd81">zot_build_packet()</a>, and <a class="el" href="zot_8php.html#a61cdc1ec843663c423ed2d8160ae5aea">zot_fetch()</a>.</p>
+<p>Referenced by <a class="el" href="diaspora_8php.html#a0fb2abe304aae19efc040a5e6b917829">diaspora_comment()</a>, <a class="el" href="diaspora_8php.html#adef30b6fac948baedcc7194d5d155b5f">diaspora_conversation()</a>, <a class="el" href="diaspora_8php.html#a5d57518545baa31cf8a85a937a267681">diaspora_like()</a>, <a class="el" href="diaspora_8php.html#a7cff2f8f11044c1b3a360f20e1bbee46">diaspora_message()</a>, <a class="el" href="items_8php.html#a536d0313b6ffe33b9d2490c4e25c5361">get_item_elements()</a>, <a class="el" href="items_8php.html#a94ddb1d6c8fa21dd7433677e85168037">get_mail_elements()</a>, <a class="el" href="item_8php.html#a693cd09805755ab85bbb5ecae69a48c3">item_post()</a>, <a class="el" href="items_8php.html#a2541e6861a56d145c9281877cc501615">item_store()</a>, <a class="el" href="items_8php.html#acf0bf7c9d21ac84f32effb754f7ad484">item_store_update()</a>, <a class="el" href="conversation_8php.html#a9bd7f9fb6678736c581bcba3b17f471c">localize_item()</a>, <a class="el" href="items_8php.html#a410f9c743877c125ca06312373346903">post_activity_item()</a>, <a class="el" href="post_8php.html#af59e6a1dc22d19d9257b01cd7ccedb75">post_post()</a>, <a class="el" href="include_2message_8php.html#a751ffd6635022b2190f56154ee745752">send_message()</a>, <a class="el" href="items_8php.html#adf2b8137dc4ad9ec958de2842f16f3c2">start_delivery_chain()</a>, <a class="el" href="items_8php.html#a25221826fa4621f523c68483e3b6af26">store_diaspora_comment_sig()</a>, <a class="el" href="zfinger_8php.html#a8139b83a22ef98869adc10aa224027a0">zfinger_init()</a>, <a class="el" href="zot_8php.html#a084c581d534e7e3b759488b46602288f">zot_build_packet()</a>, and <a class="el" href="zot_8php.html#a61cdc1ec843663c423ed2d8160ae5aea">zot_fetch()</a>.</p>
</div>
</div>
@@ -318,7 +344,109 @@ Functions</h2></td></tr>
</table>
</div><div class="memdoc">
-<p>Referenced by <a class="el" href="editpost_8php.html#a34011690864d122680c802e9e748ccfb">editpost_content()</a>, <a class="el" href="editwebpage_8php.html#a375e945255fad79a71036528f7480650">editwebpage_content()</a>, <a class="el" href="items_8php.html#a82955cc578f0fa600acec84475026194">encode_item()</a>, <a class="el" href="items_8php.html#a2d840c74ed23d1b6c7daee05cf89dda7">encode_mail()</a>, <a class="el" href="mail_8php.html#acfc2cc0bf4e0b178207758384977f25a">mail_post()</a>, <a class="el" href="include_2follow_8php.html#ae387d4ae097c23d69f3247e7f08140c7">new_contact()</a>, <a class="el" href="post_8php.html#af59e6a1dc22d19d9257b01cd7ccedb75">post_post()</a>, <a class="el" href="include_2message_8php.html#a5f8de9847e203329e317ac38dc646898">private_messages_fetch_conversation()</a>, <a class="el" href="include_2message_8php.html#a254a756031e4d5e94f85e2939bdb5091">private_messages_fetch_message()</a>, <a class="el" href="include_2message_8php.html#a652973ce47a262f2d238c2fd6233d97e">private_messages_list()</a>, <a class="el" href="mod_2probe_8php.html#a1f1db3fa6038e451e737964c94bf5e99">probe_content()</a>, <a class="el" href="items_8php.html#ab1bce4261bcf75ad62753b498a144d17">tag_deliver()</a>, <a class="el" href="text_8php.html#a8264348059abd1d4d5bb521323d3b19a">unobscure()</a>, <a class="el" href="zot_8php.html#aeea071f17e306fe3d0c488551906bfab">zot_import()</a>, and <a class="el" href="zot_8php.html#a7ac30ff51274bf0b6d3eade37972145c">zot_refresh()</a>.</p>
+<p>Referenced by <a class="el" href="bb2diaspora_8php.html#ab27761069ea1275f0fc4c543099c5519">bb2diaspora_itembody()</a>, <a class="el" href="diaspora_8php.html#a131abd521b218d6ae6f7d2917d8b2605">diaspora_process_outbound()</a>, <a class="el" href="diaspora_8php.html#af4698b165766f83d89ec1ea964bc92cc">diaspora_send_followup()</a>, <a class="el" href="diaspora_8php.html#aeb2bb78f620dbf51d9335e6eb7444f2c">diaspora_send_mail()</a>, <a class="el" href="diaspora_8php.html#a0b3628a5e53332c3d3196b689fe2b94d">diaspora_send_relay()</a>, <a class="el" href="editpost_8php.html#a34011690864d122680c802e9e748ccfb">editpost_content()</a>, <a class="el" href="editwebpage_8php.html#a375e945255fad79a71036528f7480650">editwebpage_content()</a>, <a class="el" href="items_8php.html#a56b0f5d2cb36eb8f4bfca84813884f86">encode_item()</a>, <a class="el" href="items_8php.html#a2d840c74ed23d1b6c7daee05cf89dda7">encode_mail()</a>, <a class="el" href="mail_8php.html#acfc2cc0bf4e0b178207758384977f25a">mail_post()</a>, <a class="el" href="include_2follow_8php.html#ae387d4ae097c23d69f3247e7f08140c7">new_contact()</a>, <a class="el" href="post_8php.html#af59e6a1dc22d19d9257b01cd7ccedb75">post_post()</a>, <a class="el" href="include_2message_8php.html#a5f8de9847e203329e317ac38dc646898">private_messages_fetch_conversation()</a>, <a class="el" href="include_2message_8php.html#a254a756031e4d5e94f85e2939bdb5091">private_messages_fetch_message()</a>, <a class="el" href="include_2message_8php.html#a652973ce47a262f2d238c2fd6233d97e">private_messages_list()</a>, <a class="el" href="mod_2probe_8php.html#a1f1db3fa6038e451e737964c94bf5e99">probe_content()</a>, <a class="el" href="items_8php.html#adf2b8137dc4ad9ec958de2842f16f3c2">start_delivery_chain()</a>, <a class="el" href="items_8php.html#ab1bce4261bcf75ad62753b498a144d17">tag_deliver()</a>, <a class="el" href="items_8php.html#a88c6cf7649ac836fbbed82a7a0315110">tgroup_check()</a>, <a class="el" href="text_8php.html#a8264348059abd1d4d5bb521323d3b19a">unobscure()</a>, <a class="el" href="viewsrc_8php.html#a6eff3d0c1d7d14b335c4edb785cd60a4">viewsrc_content()</a>, <a class="el" href="zot_8php.html#aeea071f17e306fe3d0c488551906bfab">zot_import()</a>, and <a class="el" href="zot_8php.html#a7ac30ff51274bf0b6d3eade37972145c">zot_refresh()</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a630e1574554f34e7c38511585d9e71a2"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">DerToPem </td>
+ <td>(</td>
+ <td class="paramtype">&#160;</td>
+ <td class="paramname"><em>$Der</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">&#160;</td>
+ <td class="paramname"><em>$Private</em> = <code>false</code>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p>Referenced by <a class="el" href="crypto_8php.html#af8bbdeaf4abed7b40365d301e6013c85">metopem()</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="ae5af17db1cb5d7c91d486e1264079839"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">DerToRsa </td>
+ <td>(</td>
+ <td class="paramtype">&#160;</td>
+ <td class="paramname"><em>$Der</em></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p>Referenced by <a class="el" href="crypto_8php.html#a573f02517abe4ac9241268263063b2a0">metorsa()</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="af8bbdeaf4abed7b40365d301e6013c85"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">metopem </td>
+ <td>(</td>
+ <td class="paramtype">&#160;</td>
+ <td class="paramname"><em>$m</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">&#160;</td>
+ <td class="paramname"><em>$e</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p>Referenced by <a class="el" href="crypto_8php.html#a7f7e650aaeaa3832580a73eb00966b26">rsatopem()</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a573f02517abe4ac9241268263063b2a0"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">metorsa </td>
+ <td>(</td>
+ <td class="paramtype">&#160;</td>
+ <td class="paramname"><em>$m</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">&#160;</td>
+ <td class="paramname"><em>$e</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p>Referenced by <a class="el" href="crypto_8php.html#a35bc357c93f4ddc67ef377620b0349e8">pemtorsa()</a>.</p>
</div>
</div>
@@ -336,7 +464,113 @@ Functions</h2></td></tr>
</table>
</div><div class="memdoc">
-<p>Referenced by <a class="el" href="account_8php.html#a141fe579c351c78209d425473f978eb5">create_account()</a>, <a class="el" href="identity_8php.html#a345f4c943d84de502ec6e72d2c813945">create_identity()</a>, and <a class="el" href="identity_8php.html#a1cf83ac2b645de12868edaa3a5718f05">create_sys_channel()</a>.</p>
+<p>Referenced by <a class="el" href="account_8php.html#a141fe579c351c78209d425473f978eb5">create_account()</a>, <a class="el" href="identity_8php.html#a345f4c943d84de502ec6e72d2c813945">create_identity()</a>, <a class="el" href="identity_8php.html#a1cf83ac2b645de12868edaa3a5718f05">create_sys_channel()</a>, and <a class="el" href="dimport_8php.html#a581f040717941ce3e1868b0b5dceefd1">foofoo()</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a798368843cdd9bb08386b48e53e29e8c"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">pemtome </td>
+ <td>(</td>
+ <td class="paramtype">&#160;</td>
+ <td class="paramname"><em>$key</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">&amp;&#160;</td>
+ <td class="paramname"><em>$m</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">&amp;&#160;</td>
+ <td class="paramname"><em>$e</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p>Referenced by <a class="el" href="crypto_8php.html#a35bc357c93f4ddc67ef377620b0349e8">pemtorsa()</a>, and <a class="el" href="crypto_8php.html#a9191447cc46f0b4eaba3273e313994d5">salmon_key()</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a35bc357c93f4ddc67ef377620b0349e8"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">pemtorsa </td>
+ <td>(</td>
+ <td class="paramtype">&#160;</td>
+ <td class="paramname"><em>$key</em></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p>Referenced by <a class="el" href="xrd_8php.html#aee3cf087968e4a0ff3a87de16eb23270">xrd_init()</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a890b443f80f0968fb9eabd93fc99dbb5"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">pkcs1_encode </td>
+ <td>(</td>
+ <td class="paramtype">&#160;</td>
+ <td class="paramname"><em>$Modulus</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">&#160;</td>
+ <td class="paramname"><em>$PublicExponent</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p>Referenced by <a class="el" href="crypto_8php.html#a573f02517abe4ac9241268263063b2a0">metorsa()</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a4d15d19b446dbf47804675df7c85e2a9"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">pkcs1to8 </td>
+ <td>(</td>
+ <td class="paramtype">&#160;</td>
+ <td class="paramname"><em>$oldkey</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">&#160;</td>
+ <td class="paramname"><em>$len</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
</div>
</div>
@@ -364,7 +598,7 @@ Functions</h2></td></tr>
</table>
</div><div class="memdoc">
-<p>Referenced by <a class="el" href="crypto_8php.html#a5c61821d205f95f127114159cbffa764">AES256CBC_encrypt()</a>.</p>
+<p>Referenced by <a class="el" href="crypto_8php.html#a5c61821d205f95f127114159cbffa764">AES256CBC_encrypt()</a>, and <a class="el" href="diaspora_8php.html#a4901762cba5cd8dcdc57bdf285eefb1b">diaspora_msg_build()</a>.</p>
</div>
</div>
@@ -382,7 +616,95 @@ Functions</h2></td></tr>
</table>
</div><div class="memdoc">
-<p>Referenced by <a class="el" href="crypto_8php.html#ac852ee41392d1358c3a54d54935e0bf9">AES256CBC_decrypt()</a>.</p>
+<p>Referenced by <a class="el" href="crypto_8php.html#ac852ee41392d1358c3a54d54935e0bf9">AES256CBC_decrypt()</a>, and <a class="el" href="diaspora_8php.html#a849754ec369e1a60fadae5c14584ca36">diaspora_decode()</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a0e941b6b18ff895d1a2448741abf2ef2"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">pkcs8_encode </td>
+ <td>(</td>
+ <td class="paramtype">&#160;</td>
+ <td class="paramname"><em>$Modulus</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">&#160;</td>
+ <td class="paramname"><em>$PublicExponent</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p>Referenced by <a class="el" href="crypto_8php.html#af8bbdeaf4abed7b40365d301e6013c85">metopem()</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a7427a18417341aa35e2207bfa205e432"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">pkcs8to1 </td>
+ <td>(</td>
+ <td class="paramtype">&#160;</td>
+ <td class="paramname"><em>$oldkey</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">&#160;</td>
+ <td class="paramname"><em>$len</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+</div>
+</div>
+<a class="anchor" id="a2a3fae7caca27f86d158eeaf69b6f287"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">pubrsatome </td>
+ <td>(</td>
+ <td class="paramtype">&#160;</td>
+ <td class="paramname"><em>$key</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">&amp;&#160;</td>
+ <td class="paramname"><em>$m</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">&amp;&#160;</td>
+ <td class="paramname"><em>$e</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p>Referenced by <a class="el" href="crypto_8php.html#a7f7e650aaeaa3832580a73eb00966b26">rsatopem()</a>.</p>
</div>
</div>
@@ -416,7 +738,7 @@ Functions</h2></td></tr>
</table>
</div><div class="memdoc">
-<p>Referenced by <a class="el" href="identity_8php.html#a345f4c943d84de502ec6e72d2c813945">create_identity()</a>, <a class="el" href="boot_8php.html#aca5e42678e178c6b9034610d66666fd7">fix_system_urls()</a>, <a class="el" href="import_8php.html#af17fef0410518f7eac205d0ea416eaa2">import_post()</a>, <a class="el" href="item_8php.html#a693cd09805755ab85bbb5ecae69a48c3">item_post()</a>, <a class="el" href="items_8php.html#a2541e6861a56d145c9281877cc501615">item_store()</a>, <a class="el" href="items_8php.html#acf0bf7c9d21ac84f32effb754f7ad484">item_store_update()</a>, <a class="el" href="magic_8php.html#acea2cc792849ca2d71d4b689f66518bf">magic_init()</a>, <a class="el" href="items_8php.html#a410f9c743877c125ca06312373346903">post_activity_item()</a>, <a class="el" href="post_8php.html#af59e6a1dc22d19d9257b01cd7ccedb75">post_post()</a>, <a class="el" href="zfinger_8php.html#a8139b83a22ef98869adc10aa224027a0">zfinger_init()</a>, <a class="el" href="zot_8php.html#a3862b3161b2c8557dc1a95020179bd81">zot_build_packet()</a>, and <a class="el" href="zot_8php.html#a61cdc1ec843663c423ed2d8160ae5aea">zot_fetch()</a>.</p>
+<p>Referenced by <a class="el" href="identity_8php.html#a345f4c943d84de502ec6e72d2c813945">create_identity()</a>, <a class="el" href="diaspora_8php.html#a4901762cba5cd8dcdc57bdf285eefb1b">diaspora_msg_build()</a>, <a class="el" href="diaspora_8php.html#a586d5a3ba92d35cee14f879f290072aa">diaspora_pubmsg_build()</a>, <a class="el" href="diaspora_8php.html#af4698b165766f83d89ec1ea964bc92cc">diaspora_send_followup()</a>, <a class="el" href="diaspora_8php.html#aeb2bb78f620dbf51d9335e6eb7444f2c">diaspora_send_mail()</a>, <a class="el" href="diaspora_8php.html#a0b3628a5e53332c3d3196b689fe2b94d">diaspora_send_relay()</a>, <a class="el" href="diaspora_8php.html#a1704748aa2384c73e43f10e71defd31a">diaspora_send_retraction()</a>, <a class="el" href="boot_8php.html#aca5e42678e178c6b9034610d66666fd7">fix_system_urls()</a>, <a class="el" href="import_8php.html#af17fef0410518f7eac205d0ea416eaa2">import_post()</a>, <a class="el" href="item_8php.html#a693cd09805755ab85bbb5ecae69a48c3">item_post()</a>, <a class="el" href="items_8php.html#a2541e6861a56d145c9281877cc501615">item_store()</a>, <a class="el" href="items_8php.html#acf0bf7c9d21ac84f32effb754f7ad484">item_store_update()</a>, <a class="el" href="magic_8php.html#acea2cc792849ca2d71d4b689f66518bf">magic_init()</a>, <a class="el" href="items_8php.html#a410f9c743877c125ca06312373346903">post_activity_item()</a>, <a class="el" href="post_8php.html#af59e6a1dc22d19d9257b01cd7ccedb75">post_post()</a>, <a class="el" href="items_8php.html#a25221826fa4621f523c68483e3b6af26">store_diaspora_comment_sig()</a>, <a class="el" href="zfinger_8php.html#a8139b83a22ef98869adc10aa224027a0">zfinger_init()</a>, <a class="el" href="zot_8php.html#a084c581d534e7e3b759488b46602288f">zot_build_packet()</a>, and <a class="el" href="zot_8php.html#a61cdc1ec843663c423ed2d8160ae5aea">zot_fetch()</a>.</p>
</div>
</div>
@@ -456,7 +778,43 @@ Functions</h2></td></tr>
</table>
</div><div class="memdoc">
-<p>Referenced by <a class="el" href="items_8php.html#a536d0313b6ffe33b9d2490c4e25c5361">get_item_elements()</a>, <a class="el" href="zot_8php.html#a2657e141d62d5f67ad3c87651b585299">import_site()</a>, <a class="el" href="zot_8php.html#a528e97ca5d69c3b7f35c5d954afde315">import_xchan()</a>, <a class="el" href="post_8php.html#af4b48181ce773ef0cdfc972441445c34">post_init()</a>, <a class="el" href="post_8php.html#af59e6a1dc22d19d9257b01cd7ccedb75">post_post()</a>, <a class="el" href="zfinger_8php.html#a8139b83a22ef98869adc10aa224027a0">zfinger_init()</a>, and <a class="el" href="zot_8php.html#a5bcdfef419b16075a0eca990956223dc">zot_register_hub()</a>.</p>
+<p>Referenced by <a class="el" href="diaspora_8php.html#a0fb2abe304aae19efc040a5e6b917829">diaspora_comment()</a>, <a class="el" href="diaspora_8php.html#adef30b6fac948baedcc7194d5d155b5f">diaspora_conversation()</a>, <a class="el" href="diaspora_8php.html#a849754ec369e1a60fadae5c14584ca36">diaspora_decode()</a>, <a class="el" href="diaspora_8php.html#a5d57518545baa31cf8a85a937a267681">diaspora_like()</a>, <a class="el" href="diaspora_8php.html#a7cff2f8f11044c1b3a360f20e1bbee46">diaspora_message()</a>, <a class="el" href="diaspora_8php.html#aa34d2748bb97e9e193cacd572f335055">diaspora_signed_retraction()</a>, <a class="el" href="items_8php.html#a536d0313b6ffe33b9d2490c4e25c5361">get_item_elements()</a>, <a class="el" href="zot_8php.html#a2657e141d62d5f67ad3c87651b585299">import_site()</a>, <a class="el" href="zot_8php.html#a528e97ca5d69c3b7f35c5d954afde315">import_xchan()</a>, <a class="el" href="post_8php.html#af4b48181ce773ef0cdfc972441445c34">post_init()</a>, <a class="el" href="post_8php.html#af59e6a1dc22d19d9257b01cd7ccedb75">post_post()</a>, <a class="el" href="zot_8php.html#ab15c04e7e5f44edf45ec50dd7d183254">sync_locations()</a>, <a class="el" href="zfinger_8php.html#a8139b83a22ef98869adc10aa224027a0">zfinger_init()</a>, and <a class="el" href="zot_8php.html#a5bcdfef419b16075a0eca990956223dc">zot_register_hub()</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a7f7e650aaeaa3832580a73eb00966b26"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">rsatopem </td>
+ <td>(</td>
+ <td class="paramtype">&#160;</td>
+ <td class="paramname"><em>$key</em></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p>Referenced by <a class="el" href="include_2network_8php.html#a63e62946e194928eb17c5a9f2bbef0fe">discover_by_webbie()</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a9191447cc46f0b4eaba3273e313994d5"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">salmon_key </td>
+ <td>(</td>
+ <td class="paramtype">&#160;</td>
+ <td class="paramname"><em>$pubkey</em></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p>Referenced by <a class="el" href="xrd_8php.html#aee3cf087968e4a0ff3a87de16eb23270">xrd_init()</a>.</p>
</div>
</div>
diff --git a/doc/html/crypto_8php.js b/doc/html/crypto_8php.js
index 8894f46c6..dca2088c1 100644
--- a/doc/html/crypto_8php.js
+++ b/doc/html/crypto_8php.js
@@ -6,9 +6,22 @@ var crypto_8php =
[ "aes_unencapsulate", "crypto_8php.html#aca7c3a574bfb6c6ef1f2403a56823914", null ],
[ "crypto_encapsulate", "crypto_8php.html#a32fc08d57a5694f94d8543ecbb03323c", null ],
[ "crypto_unencapsulate", "crypto_8php.html#a0781202b0a43b82426929cc87c2fa2b5", null ],
+ [ "DerToPem", "crypto_8php.html#a630e1574554f34e7c38511585d9e71a2", null ],
+ [ "DerToRsa", "crypto_8php.html#ae5af17db1cb5d7c91d486e1264079839", null ],
+ [ "metopem", "crypto_8php.html#af8bbdeaf4abed7b40365d301e6013c85", null ],
+ [ "metorsa", "crypto_8php.html#a573f02517abe4ac9241268263063b2a0", null ],
[ "new_keypair", "crypto_8php.html#aae0ab70d6a199b29555b1ac3cf250d6a", null ],
+ [ "pemtome", "crypto_8php.html#a798368843cdd9bb08386b48e53e29e8c", null ],
+ [ "pemtorsa", "crypto_8php.html#a35bc357c93f4ddc67ef377620b0349e8", null ],
+ [ "pkcs1_encode", "crypto_8php.html#a890b443f80f0968fb9eabd93fc99dbb5", null ],
+ [ "pkcs1to8", "crypto_8php.html#a4d15d19b446dbf47804675df7c85e2a9", null ],
[ "pkcs5_pad", "crypto_8php.html#ad5e51fd44cff93cfaa07a37e24a5edec", null ],
[ "pkcs5_unpad", "crypto_8php.html#ac95ac3b1b23b65b04a86613d4206ae85", null ],
+ [ "pkcs8_encode", "crypto_8php.html#a0e941b6b18ff895d1a2448741abf2ef2", null ],
+ [ "pkcs8to1", "crypto_8php.html#a7427a18417341aa35e2207bfa205e432", null ],
+ [ "pubrsatome", "crypto_8php.html#a2a3fae7caca27f86d158eeaf69b6f287", null ],
[ "rsa_sign", "crypto_8php.html#a920e5f222d0020f47556033d8b2b6552", null ],
- [ "rsa_verify", "crypto_8php.html#ab4f21d8f6b8ece0915e7c8bb73379f96", null ]
+ [ "rsa_verify", "crypto_8php.html#ab4f21d8f6b8ece0915e7c8bb73379f96", null ],
+ [ "rsatopem", "crypto_8php.html#a7f7e650aaeaa3832580a73eb00966b26", null ],
+ [ "salmon_key", "crypto_8php.html#a9191447cc46f0b4eaba3273e313994d5", null ]
]; \ No newline at end of file
diff --git a/doc/html/datetime_8php.html b/doc/html/datetime_8php.html
index 11cf53606..26ce4f177 100644
--- a/doc/html/datetime_8php.html
+++ b/doc/html/datetime_8php.html
@@ -114,20 +114,18 @@ $(document).ready(function(){initNavTree('datetime_8php.html','');});
Functions</h2></td></tr>
<tr class="memitem:aa51b5a7ea4f931b23acbdfcea46e9865"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="datetime_8php.html#aa51b5a7ea4f931b23acbdfcea46e9865">timezone_cmp</a> ($a, $b)</td></tr>
<tr class="separator:aa51b5a7ea4f931b23acbdfcea46e9865"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a633dadba426fa2f60b25fabdb19ebc1f"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="datetime_8php.html#a633dadba426fa2f60b25fabdb19ebc1f">select_timezone</a> ($current= 'America/Los_Angeles')</td></tr>
-<tr class="separator:a633dadba426fa2f60b25fabdb19ebc1f"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a03900dcf0f9e3c58793a031673a70326"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="datetime_8php.html#a03900dcf0f9e3c58793a031673a70326">field_timezone</a> ($name='timezone', $label='', $current= 'America/Los_Angeles', $help)</td></tr>
-<tr class="separator:a03900dcf0f9e3c58793a031673a70326"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:afbb34604d0f6e7d2103da4f42e2487b1"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="datetime_8php.html#afbb34604d0f6e7d2103da4f42e2487b1">get_timezones</a> ()</td></tr>
+<tr class="separator:afbb34604d0f6e7d2103da4f42e2487b1"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ad6301e74b0f9267d52f8d432b5beb226"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="datetime_8php.html#ad6301e74b0f9267d52f8d432b5beb226">datetime_convert</a> ($from= 'UTC', $to= 'UTC', $s= 'now', $fmt=&quot;Y-m-d H:i:s&quot;)</td></tr>
<tr class="separator:ad6301e74b0f9267d52f8d432b5beb226"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a3f2897db32e745fe2f3e70a6b46578f8"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="datetime_8php.html#a3f2897db32e745fe2f3e70a6b46578f8">dob</a> ($dob)</td></tr>
<tr class="separator:a3f2897db32e745fe2f3e70a6b46578f8"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a5f29553799005b1fd4e9ce9d98ce05aa"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="datetime_8php.html#a5f29553799005b1fd4e9ce9d98ce05aa">datesel_format</a> ($f)</td></tr>
-<tr class="separator:a5f29553799005b1fd4e9ce9d98ce05aa"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:ac265b86f384ee094ed5479aae02aa5c8"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="datetime_8php.html#ac265b86f384ee094ed5479aae02aa5c8">datesel</a> ($f, $pre, $ymin, $ymax, $allow_blank, $y, $m, $d)</td></tr>
-<tr class="separator:ac265b86f384ee094ed5479aae02aa5c8"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a36d3d6dff8d76b5f295bb3d9c535a5b1"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="datetime_8php.html#a36d3d6dff8d76b5f295bb3d9c535a5b1">timesel</a> ($pre, $h, $m)</td></tr>
-<tr class="separator:a36d3d6dff8d76b5f295bb3d9c535a5b1"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a77bb385ae8a9e7ca663309c102c0d766"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="datetime_8php.html#a77bb385ae8a9e7ca663309c102c0d766">datesel</a> ($format, $min, $max, $default, $id= 'datepicker')</td></tr>
+<tr class="separator:a77bb385ae8a9e7ca663309c102c0d766"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a3f239f94e23335d860b148958d87a093"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="datetime_8php.html#a3f239f94e23335d860b148958d87a093">timesel</a> ($format, $h, $m, $id='timepicker')</td></tr>
+<tr class="separator:a3f239f94e23335d860b148958d87a093"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a72218e5ee21876484934bacbb6bd9ba3"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="datetime_8php.html#a72218e5ee21876484934bacbb6bd9ba3">datetimesel</a> ($format, $min, $max, $default, $id= 'datetimepicker', $pickdate=true, $picktime=true, $minfrom= '', $maxfrom= '')</td></tr>
+<tr class="separator:a72218e5ee21876484934bacbb6bd9ba3"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a8ae8dc95ace7ac27fa5a1ecf42b78c82"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="datetime_8php.html#a8ae8dc95ace7ac27fa5a1ecf42b78c82">relative_date</a> ($posted_date, $format=null)</td></tr>
<tr class="separator:a8ae8dc95ace7ac27fa5a1ecf42b78c82"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:abc1652f96799cec6fce8797ba2ebc2df"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="datetime_8php.html#abc1652f96799cec6fce8797ba2ebc2df">age</a> ($<a class="el" href="datetime_8php.html#a3f2897db32e745fe2f3e70a6b46578f8">dob</a>, $owner_tz= '', $viewer_tz= '')</td></tr>
@@ -174,7 +172,7 @@ Functions</h2></td></tr>
</table>
</div><div class="memdoc">
-<p>Referenced by <a class="el" href="identity_8php.html#aa870d2c1f558cfd52bef05bc124e8fa4">advanced_profile()</a>, <a class="el" href="mod_2directory_8php.html#aac79396570d759da2efac24fcedf5b44">directory_content()</a>, <a class="el" href="dirprofile_8php.html#a3e1d30d3d93863ff5615f2df4ac7f052">dirprofile_init()</a>, <a class="el" href="dir__fns_8php.html#acd37b17dce3bdec6d5a6344a20598c1e">local_dir_update()</a>, <a class="el" href="profiles_8php.html#a46975783b8b8d70402d51487eb1f0b00">profiles_content()</a>, and <a class="el" href="zfinger_8php.html#a8139b83a22ef98869adc10aa224027a0">zfinger_init()</a>.</p>
+<p>Referenced by <a class="el" href="identity_8php.html#aa870d2c1f558cfd52bef05bc124e8fa4">advanced_profile()</a>, <a class="el" href="mod_2directory_8php.html#aac79396570d759da2efac24fcedf5b44">directory_content()</a>, <a class="el" href="dir__fns_8php.html#acd37b17dce3bdec6d5a6344a20598c1e">local_dir_update()</a>, <a class="el" href="profiles_8php.html#a46975783b8b8d70402d51487eb1f0b00">profiles_content()</a>, and <a class="el" href="zfinger_8php.html#a8139b83a22ef98869adc10aa224027a0">zfinger_init()</a>.</p>
</div>
</div>
@@ -218,7 +216,7 @@ Functions</h2></td></tr>
</div>
</div>
-<a class="anchor" id="ac265b86f384ee094ed5479aae02aa5c8"></a>
+<a class="anchor" id="a77bb385ae8a9e7ca663309c102c0d766"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
@@ -226,49 +224,31 @@ Functions</h2></td></tr>
<td class="memname">datesel </td>
<td>(</td>
<td class="paramtype">&#160;</td>
- <td class="paramname"><em>$f</em>, </td>
+ <td class="paramname"><em>$format</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">&#160;</td>
- <td class="paramname"><em>$pre</em>, </td>
+ <td class="paramname"><em>$min</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">&#160;</td>
- <td class="paramname"><em>$ymin</em>, </td>
+ <td class="paramname"><em>$max</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">&#160;</td>
- <td class="paramname"><em>$ymax</em>, </td>
+ <td class="paramname"><em>$default</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">&#160;</td>
- <td class="paramname"><em>$allow_blank</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">&#160;</td>
- <td class="paramname"><em>$y</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">&#160;</td>
- <td class="paramname"><em>$m</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">&#160;</td>
- <td class="paramname"><em>$d</em>&#160;</td>
+ <td class="paramname"><em>$id</em> = <code>'datepicker'</code>&#160;</td>
</tr>
<tr>
<td></td>
@@ -277,26 +257,17 @@ Functions</h2></td></tr>
</tr>
</table>
</div><div class="memdoc">
-
-<p>Referenced by <a class="el" href="datetime_8php.html#a3f2897db32e745fe2f3e70a6b46578f8">dob()</a>, and <a class="el" href="events_8php.html#a1d293fb217ae6bc9e3858c4b32e363ec">events_content()</a>.</p>
-
-</div>
-</div>
-<a class="anchor" id="a5f29553799005b1fd4e9ce9d98ce05aa"></a>
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">datesel_format </td>
- <td>(</td>
- <td class="paramtype">&#160;</td>
- <td class="paramname"><em>$f</em></td><td>)</td>
- <td></td>
- </tr>
- </table>
-</div><div class="memdoc">
-
-<p>Referenced by <a class="el" href="events_8php.html#a1d293fb217ae6bc9e3858c4b32e363ec">events_content()</a>, and <a class="el" href="profiles_8php.html#a46975783b8b8d70402d51487eb1f0b00">profiles_content()</a>.</p>
+<p>returns a date selector </p>
+<dl class="params"><dt>Parameters</dt><dd>
+ <table class="params">
+ <tr><td class="paramname">$format</td><td>format string, e.g. 'ymd' or 'mdy'. Not currently supported </td></tr>
+ <tr><td class="paramname">$min</td><td>unix timestamp of minimum date </td></tr>
+ <tr><td class="paramname">$max</td><td>unix timestap of maximum date </td></tr>
+ <tr><td class="paramname">$default</td><td>unix timestamp of default date </td></tr>
+ <tr><td class="paramname">$id</td><td>id and name of datetimepicker (defaults to "datetimepicker") </td></tr>
+ </table>
+ </dd>
+</dl>
</div>
</div>
@@ -336,55 +307,67 @@ Functions</h2></td></tr>
</table>
</div><div class="memdoc">
-<p>Referenced by <a class="el" href="Contact_8php.html#a024919623a830e8703ac4f23496dd66c">abook_toggle_flag()</a>, <a class="el" href="auth_8php.html#a07bae0e623e2daa9ee2cd5a8aa294dee">account_verify_password()</a>, <a class="el" href="identity_8php.html#aa870d2c1f558cfd52bef05bc124e8fa4">advanced_profile()</a>, <a class="el" href="datetime_8php.html#abc1652f96799cec6fce8797ba2ebc2df">age()</a>, <a class="el" href="include_2api_8php.html#ae8f5863e18d69421005c71441c9d99a5">api_account_rate_limit_status()</a>, <a class="el" href="include_2api_8php.html#aea2dda92a155f2843a0ca188d8dfdf25">api_date()</a>, <a class="el" href="include_2api_8php.html#a6a04b48168ba1d9dd2de3081a630611f">api_rss_extra()</a>, <a class="el" href="items_8php.html#a275108c050f7eb18bcbb5018e6b81cf6">atom_entry()</a>, <a class="el" href="include_2attach_8php.html#a70bd666e080c2af5a91f5d14c297b8cd">attach_delete()</a>, <a class="el" href="include_2attach_8php.html#ab6830b3ab74a5d284876141ac80f6cbc">attach_mkdir()</a>, <a class="el" href="include_2attach_8php.html#a84a8a64c4805e1525b42d4add464833f">attach_store()</a>, <a class="el" href="security_8php.html#adc7bf51e3b8d67bd80e9348f9ab03733">authenticate_success()</a>, <a class="el" href="zot_8php.html#ac34e479d27f32b82dd6b33542f81a6a7">build_sync_packet()</a>, <a class="el" href="datetime_8php.html#aea356409ba69f9de412298c998595dd2">cal()</a>, <a class="el" href="channel_8php.html#a9c6a6179e0e626398ebecc6151905ef1">channel_content()</a>, <a class="el" href="Contact_8php.html#a186162051a5127069cc851d78740f205">channel_remove()</a>, <a class="el" href="include_2chat_8php.html#acea6b176eb7aff44d9ba3ae24ce511d3">chat_message()</a>, <a class="el" href="include_2chat_8php.html#acdc80dba4eb796c7472b21129b435422">chatroom_create()</a>, <a class="el" href="include_2chat_8php.html#a2c95b545e46bfee64faa05ecf0afea91">chatroom_enter()</a>, <a class="el" href="chatsvc_8php.html#a7032784215e1f6747cf385a6598770f9">chatsvc_content()</a>, <a class="el" href="chatsvc_8php.html#a7c9a9b9c24a2b02eed8efd6b09632d03">chatsvc_post()</a>, <a class="el" href="classCache.html#ab14d0f4bdf7116a94d545c574b38f568">Cache\clear()</a>, <a class="el" href="items_8php.html#a8794863cdf8ce1333040933d3a3f66bd">consume_feed()</a>, <a class="el" href="conversation_8php.html#affea1afb3f32ca41e966c8ddb4204d81">conversation()</a>, <a class="el" href="account_8php.html#a141fe579c351c78209d425473f978eb5">create_account()</a>, <a class="el" href="identity_8php.html#a345f4c943d84de502ec6e72d2c813945">create_identity()</a>, <a class="el" href="classRedDirectory.html#a2d12d99d38a6a75fc9a830b2f7fc0bf0">RedDirectory\createFile()</a>, <a class="el" href="cronhooks_8php.html#a4c4c1bbec4ecc9a0efa00dd6afd2c0ca">cronhooks_run()</a>, <a class="el" href="items_8php.html#aac8c9eb4338e2a996c43914392c6cfdb">delete_item_lowlevel()</a>, <a class="el" href="deliver_8php.html#a397afcb9afecf0c1816b0951189dd346">deliver_run()</a>, <a class="el" href="include_2directory_8php.html#aa75d3b0697ca1456aaabdb37a74aa0f0">directory_run()</a>, <a class="el" href="dirsearch_8php.html#aa1fb04e1de4f25b63349ac78f94ceb4c">dirsearch_content()</a>, <a class="el" href="text_8php.html#a0a1f7c0e97f9ecbebf3e5834582b014c">dlogger()</a>, <a class="el" href="datetime_8php.html#a3f2897db32e745fe2f3e70a6b46578f8">dob()</a>, <a class="el" href="editpost_8php.html#a34011690864d122680c802e9e748ccfb">editpost_content()</a>, <a class="el" href="event_8php.html#a32ba1b9ddf7a744a9a1512b052e5f850">ev_compare()</a>, <a class="el" href="event_8php.html#af5ac41e7ea3f7131088fe6333fd2846c">event_store_event()</a>, <a class="el" href="events_8php.html#a1d293fb217ae6bc9e3858c4b32e363ec">events_content()</a>, <a class="el" href="events_8php.html#ab3e8a8f901175f8e40a8089eea45c075">events_post()</a>, <a class="el" href="externals_8php.html#a4df44079e6f915286088b7a0d44db926">externals_run()</a>, <a class="el" href="items_8php.html#a0cf98bb619f07dd18f602683a55a5f59">first_post_date()</a>, <a class="el" href="boot_8php.html#aca5e42678e178c6b9034610d66666fd7">fix_system_urls()</a>, <a class="el" href="bb2diaspora_8php.html#a29a2ad41f5826f3975fa9a49934ff863">format_event_diaspora()</a>, <a class="el" href="event_8php.html#a2ac9f1b08de03250ecd794f705781d17">format_event_html()</a>, <a class="el" href="fsuggest_8php.html#a61ecfe10ce937ed526614f8fd3de3c7d">fsuggest_post()</a>, <a class="el" href="classRedBrowser.html#a1f7daf50bb9bfcde7345b3b1908dbd7e">RedBrowser\generateDirectoryIndex()</a>, <a class="el" href="items_8php.html#a896c1809d58f2d7a42cfe14577958ddf">get_atom_elements()</a>, <a class="el" href="identity_8php.html#ad2c97627a313d53df1a1c7b4215ddb51">get_birthdays()</a>, <a class="el" href="identity_8php.html#ae381db3d43f8e7c1da8b15d14ecf5312">get_events()</a>, <a class="el" href="items_8php.html#a04a35b610acfe54434df08adec39c0c7">get_feed_for()</a>, <a class="el" href="datetime_8php.html#aba971b67f17fecf050813f1eba72367f">get_first_dim()</a>, <a class="el" href="items_8php.html#a536d0313b6ffe33b9d2490c4e25c5361">get_item_elements()</a>, <a class="el" href="items_8php.html#a94ddb1d6c8fa21dd7433677e85168037">get_mail_elements()</a>, <a class="el" href="items_8php.html#a251343637ff40a50cca93452cd530c26">get_profile_elements()</a>, <a class="el" href="items_8php.html#a079e099e15d88d47aeb6ca6d60da7107">get_public_feed()</a>, <a class="el" href="classItem.html#ad5dcbe0b94cb2d5719bc5b6bd8ad60c8">Item\get_template_data()</a>, <a class="el" href="classRedDirectory.html#a6c7e08199abc24e6eeb94a4037ef8bfc">RedDirectory\getLastModified()</a>, <a class="el" href="classRedFile.html#a41562a28007789bbe7fe06d6a20eef47">RedFile\getLastModified()</a>, <a class="el" href="items_8php.html#a6bee35961f2e32905f20367a9309d627">import_author_rss()</a>, <a class="el" href="zot_8php.html#a20750dd2c36961013fd382fb34e1366c">import_directory_profile()</a>, <a class="el" href="import_8php.html#af17fef0410518f7eac205d0ea416eaa2">import_post()</a>, <a class="el" href="zot_8php.html#a2657e141d62d5f67ad3c87651b585299">import_site()</a>, <a class="el" href="zot_8php.html#a528e97ca5d69c3b7f35c5d954afde315">import_xchan()</a>, <a class="el" href="invite_8php.html#aeb0881c0f93c8e8552e5ed756ce6e5a5">invite_post()</a>, <a class="el" href="item_8php.html#a693cd09805755ab85bbb5ecae69a48c3">item_post()</a>, <a class="el" href="items_8php.html#a2541e6861a56d145c9281877cc501615">item_store()</a>, <a class="el" href="items_8php.html#acf0bf7c9d21ac84f32effb754f7ad484">item_store_update()</a>, <a class="el" href="items_8php.html#a756738301f2ed96be50232500677d58a">items_fetch()</a>, <a class="el" href="like_8php.html#a9d7dd268f21c21e9d29dd2aca2dd9538">like_content()</a>, <a class="el" href="items_8php.html#aa2d3caa2f27720762b5c729e07df40fb">list_post_dates()</a>, <a class="el" href="text_8php.html#a030fa5ecc64168af0c4f44897a9bce63">logger()</a>, <a class="el" href="magic_8php.html#acea2cc792849ca2d71d4b689f66518bf">magic_init()</a>, <a class="el" href="mail_8php.html#a3c7c485fc69f92371e8b20936040eca1">mail_content()</a>, <a class="el" href="mail_8php.html#acfc2cc0bf4e0b178207758384977f25a">mail_post()</a>, <a class="el" href="items_8php.html#a77da7ce9a117601d49ac4a67c71b514f">mail_store()</a>, <a class="el" href="mod_2message_8php.html#ac72dfed3ce08fcb331d66b37edc6e15f">message_content()</a>, <a class="el" href="mod_2network_8php.html#a43f2f29b90c5e29072c561934bc8f8b4">network_content()</a>, <a class="el" href="include_2follow_8php.html#ae387d4ae097c23d69f3247e7f08140c7">new_contact()</a>, <a class="el" href="enotify_8php.html#a3e9a9355b243777c488d2a9883908dfc">notification()</a>, <a class="el" href="notifier_8php.html#a568c502f626cff95e344c0748938b85d">notifier_run()</a>, <a class="el" href="onepoll_8php.html#a72753b2fdec79b37c7f432035c91fb6d">onepoll_run()</a>, <a class="el" href="openid_8php.html#a9a13827dbcf61ae4e45f0b6b33a88f43">openid_content()</a>, <a class="el" href="page__widgets_8php.html#a39d547771c5f12a17c097436c82f0fa2">pagelist_widget()</a>, <a class="el" href="include_2photos_8php.html#a6c40ef58aefef705a5adc84a40e97109">photo_upload()</a>, <a class="el" href="mod_2photos_8php.html#a062bed4d04d14fee8a53f4c9be673080">photos_post()</a>, <a class="el" href="ping_8php.html#a77217b1b190b4c5d8770867b45f0c0a1">ping_init()</a>, <a class="el" href="socgraph_8php.html#a5ef8bef37161df53718a21e93d02fbd6">poco_load()</a>, <a class="el" href="poller_8php.html#a5f12df3a4738124b6c039971e87e76da">poller_run()</a>, <a class="el" href="post_8php.html#af59e6a1dc22d19d9257b01cd7ccedb75">post_post()</a>, <a class="el" href="items_8php.html#ad2abb4644ff1f20fefbc80326fe01cf0">posted_dates()</a>, <a class="el" href="profile__photo_8php.html#a4b80234074bd603221aa5364f330e479">profile_photo_post()</a>, <a class="el" href="profiles_8php.html#a46975783b8b8d70402d51487eb1f0b00">profiles_content()</a>, <a class="el" href="profiles_8php.html#ab0362c81b1d3b0b12a772b9fac446e04">profiles_post()</a>, <a class="el" href="hubloc_8php.html#ad3d0dcfcfcb347744f7617fe6f5de002">prune_hub_reinstalls()</a>, <a class="el" href="classRedFile.html#a41a49a583eb276b75626fcf97f4a699c">RedFile\put()</a>, <a class="el" href="classdba__mysql.html#ac3fd60c278f400907322dac578754a99">dba_mysql\q()</a>, <a class="el" href="classdba__mysqli.html#a611c4de8d6d7512dffb83a38bb6701ec">dba_mysqli\q()</a>, <a class="el" href="queue_8php.html#af8c93de86d866c3200174c8450a0f341">queue_run()</a>, <a class="el" href="datetime_8php.html#a8ae8dc95ace7ac27fa5a1ecf42b78c82">relative_date()</a>, <a class="el" href="classphoto__driver.html#a5864fae7d8389372955a8e78cec527ac">photo_driver\save()</a>, <a class="el" href="include_2message_8php.html#a751ffd6635022b2190f56154ee745752">send_message()</a>, <a class="el" href="account_8php.html#a014de2d5d5c9785de5bf547a485822fa">send_reg_approval_email()</a>, <a class="el" href="classCache.html#ae622b82adc1c2fb1f3e2cc4fd9688fce">Cache\set()</a>, <a class="el" href="settings_8php.html#aa7ee94d88ac088edb04ccf3a26de3586">settings_post()</a>, <a class="el" href="classphoto__driver.html#a642a8d0c4ad5f887c99c6af77cee287b">photo_driver\store()</a>, <a class="el" href="dir__fns_8php.html#aa666e7df6ca8c332f4081c9b66b4bdf6">sync_directories()</a>, <a class="el" href="items_8php.html#ab1bce4261bcf75ad62753b498a144d17">tag_deliver()</a>, <a class="el" href="datetime_8php.html#af1cd77c97c901d9239cb7a61f97f9826">update_birthdays()</a>, <a class="el" href="dir__fns_8php.html#a44062d4b471d1e83f92f6c184585aa13">update_directory_entry()</a>, <a class="el" href="zot_8php.html#ab319d1d9fff9c7775d9daef42d1f33dd">update_modtime()</a>, <a class="el" href="queue__fn_8php.html#a4c2876181f75a4a61e85b7f00dfdbba1">update_queue_time()</a>, <a class="el" href="account_8php.html#acd6b8d2124ba5ea4f4794d2c58ae8bf5">verify_email_address()</a>, <a class="el" href="webpages_8php.html#af3b7397d4abc153e3d2147740ee1a41d">webpages_content()</a>, <a class="el" href="datetime_8php.html#ab55e545b72ec8c097e052ea7d373491f">z_birthday()</a>, <a class="el" href="items_8php.html#a004e89d86b0f29b2c4da20108ecc4091">zot_feed()</a>, <a class="el" href="zot_8php.html#a928f5643ca66ae9635d85aeb2be62e03">zot_process_response()</a>, <a class="el" href="zot_8php.html#a7ac30ff51274bf0b6d3eade37972145c">zot_refresh()</a>, and <a class="el" href="zotfeed_8php.html#a24dfc23d366e7f840cf2847d0c1c8eac">zotfeed_init()</a>.</p>
+<p>Referenced by <a class="el" href="Contact_8php.html#a024919623a830e8703ac4f23496dd66c">abook_toggle_flag()</a>, <a class="el" href="identity_8php.html#aa870d2c1f558cfd52bef05bc124e8fa4">advanced_profile()</a>, <a class="el" href="datetime_8php.html#abc1652f96799cec6fce8797ba2ebc2df">age()</a>, <a class="el" href="include_2api_8php.html#ae8f5863e18d69421005c71441c9d99a5">api_account_rate_limit_status()</a>, <a class="el" href="include_2api_8php.html#aea2dda92a155f2843a0ca188d8dfdf25">api_date()</a>, <a class="el" href="include_2api_8php.html#a6a04b48168ba1d9dd2de3081a630611f">api_rss_extra()</a>, <a class="el" href="items_8php.html#a275108c050f7eb18bcbb5018e6b81cf6">atom_entry()</a>, <a class="el" href="include_2attach_8php.html#a70bd666e080c2af5a91f5d14c297b8cd">attach_delete()</a>, <a class="el" href="include_2attach_8php.html#ab6830b3ab74a5d284876141ac80f6cbc">attach_mkdir()</a>, <a class="el" href="include_2attach_8php.html#a84a8a64c4805e1525b42d4add464833f">attach_store()</a>, <a class="el" href="security_8php.html#adc7bf51e3b8d67bd80e9348f9ab03733">authenticate_success()</a>, <a class="el" href="zot_8php.html#aa97b33b619dd7132a9274f852af6ceb5">build_sync_packet()</a>, <a class="el" href="datetime_8php.html#aea356409ba69f9de412298c998595dd2">cal()</a>, <a class="el" href="channel_8php.html#a9c6a6179e0e626398ebecc6151905ef1">channel_content()</a>, <a class="el" href="Contact_8php.html#a4e8af0f0525161da74583c04b8b03097">channel_remove()</a>, <a class="el" href="include_2chat_8php.html#acea6b176eb7aff44d9ba3ae24ce511d3">chat_message()</a>, <a class="el" href="include_2chat_8php.html#acdc80dba4eb796c7472b21129b435422">chatroom_create()</a>, <a class="el" href="include_2chat_8php.html#a2c95b545e46bfee64faa05ecf0afea91">chatroom_enter()</a>, <a class="el" href="chatsvc_8php.html#a7032784215e1f6747cf385a6598770f9">chatsvc_content()</a>, <a class="el" href="chatsvc_8php.html#a7c9a9b9c24a2b02eed8efd6b09632d03">chatsvc_post()</a>, <a class="el" href="classCache.html#ab14d0f4bdf7116a94d545c574b38f568">Cache\clear()</a>, <a class="el" href="items_8php.html#abeb7886cde44d9a83dbaf2bc4ab18723">comments_are_now_closed()</a>, <a class="el" href="items_8php.html#adc26e08aa61f5666da04ab5d2a9d68a6">consume_feed()</a>, <a class="el" href="conversation_8php.html#affea1afb3f32ca41e966c8ddb4204d81">conversation()</a>, <a class="el" href="account_8php.html#a141fe579c351c78209d425473f978eb5">create_account()</a>, <a class="el" href="identity_8php.html#a345f4c943d84de502ec6e72d2c813945">create_identity()</a>, <a class="el" href="classRedMatrix_1_1RedDAV_1_1RedDirectory.html#a58e750256cdc2f0f79fbe8d5463ffefe">RedMatrix\RedDAV\RedDirectory\createFile()</a>, <a class="el" href="cronhooks_8php.html#a4c4c1bbec4ecc9a0efa00dd6afd2c0ca">cronhooks_run()</a>, <a class="el" href="items_8php.html#aac8c9eb4338e2a996c43914392c6cfdb">delete_item_lowlevel()</a>, <a class="el" href="deliver_8php.html#a397afcb9afecf0c1816b0951189dd346">deliver_run()</a>, <a class="el" href="diaspora_8php.html#a006731620a5242d410358b32678e48e3">diaspora_asphoto()</a>, <a class="el" href="diaspora_8php.html#a0fb2abe304aae19efc040a5e6b917829">diaspora_comment()</a>, <a class="el" href="diaspora_8php.html#adef30b6fac948baedcc7194d5d155b5f">diaspora_conversation()</a>, <a class="el" href="diaspora_8php.html#a7cff2f8f11044c1b3a360f20e1bbee46">diaspora_message()</a>, <a class="el" href="diaspora_8php.html#a20b968d64ef26afe5cb0cc75a7570a31">diaspora_post()</a>, <a class="el" href="diaspora_8php.html#a900abf51398b2ef26cd2cd31c52f1b0f">diaspora_profile()</a>, <a class="el" href="diaspora_8php.html#ac1ab782a34552a7c6b4dc961754ed598">diaspora_request()</a>, <a class="el" href="diaspora_8php.html#a2bf43f6b5890897f425ef4325d34b007">diaspora_reshare()</a>, <a class="el" href="diaspora_8php.html#ae6f52efd81fe515cd9912bc8293abf5b">diaspora_send_images()</a>, <a class="el" href="diaspora_8php.html#aeb2bb78f620dbf51d9335e6eb7444f2c">diaspora_send_mail()</a>, <a class="el" href="diaspora_8php.html#a33ae0c4606a7df4d801c05507d87f668">diaspora_send_status()</a>, <a class="el" href="diaspora_8php.html#aa704d6aa2ac77be345c0f501168e6e56">diaspora_transmit()</a>, <a class="el" href="include_2directory_8php.html#aa75d3b0697ca1456aaabdb37a74aa0f0">directory_run()</a>, <a class="el" href="dirsearch_8php.html#aa1fb04e1de4f25b63349ac78f94ceb4c">dirsearch_content()</a>, <a class="el" href="include_2network_8php.html#a5176176ddc1906d91f186df6fbd87b48">discover_by_url()</a>, <a class="el" href="include_2network_8php.html#a63e62946e194928eb17c5a9f2bbef0fe">discover_by_webbie()</a>, <a class="el" href="text_8php.html#a0a1f7c0e97f9ecbebf3e5834582b014c">dlogger()</a>, <a class="el" href="datetime_8php.html#a3f2897db32e745fe2f3e70a6b46578f8">dob()</a>, <a class="el" href="editpost_8php.html#a34011690864d122680c802e9e748ccfb">editpost_content()</a>, <a class="el" href="event_8php.html#a32ba1b9ddf7a744a9a1512b052e5f850">ev_compare()</a>, <a class="el" href="event_8php.html#af5ac41e7ea3f7131088fe6333fd2846c">event_store_event()</a>, <a class="el" href="events_8php.html#a1d293fb217ae6bc9e3858c4b32e363ec">events_content()</a>, <a class="el" href="events_8php.html#ab3e8a8f901175f8e40a8089eea45c075">events_post()</a>, <a class="el" href="externals_8php.html#a4df44079e6f915286088b7a0d44db926">externals_run()</a>, <a class="el" href="items_8php.html#a0cf98bb619f07dd18f602683a55a5f59">first_post_date()</a>, <a class="el" href="boot_8php.html#aca5e42678e178c6b9034610d66666fd7">fix_system_urls()</a>, <a class="el" href="bb2diaspora_8php.html#a29a2ad41f5826f3975fa9a49934ff863">format_event_diaspora()</a>, <a class="el" href="event_8php.html#a2ac9f1b08de03250ecd794f705781d17">format_event_html()</a>, <a class="el" href="event_8php.html#a3ff7f1824540a38f4a3991a59a9542d4">format_event_ical()</a>, <a class="el" href="fsuggest_8php.html#a61ecfe10ce937ed526614f8fd3de3c7d">fsuggest_post()</a>, <a class="el" href="classRedMatrix_1_1RedDAV_1_1RedBrowser.html#af764d5f14df751f9ec86c34fab300c09">RedMatrix\RedDAV\RedBrowser\generateDirectoryIndex()</a>, <a class="el" href="items_8php.html#a5e5be7bf1f8257dec0b2647e60a3f3f1">get_atom_elements()</a>, <a class="el" href="identity_8php.html#ad2c97627a313d53df1a1c7b4215ddb51">get_birthdays()</a>, <a class="el" href="identity_8php.html#ae381db3d43f8e7c1da8b15d14ecf5312">get_events()</a>, <a class="el" href="items_8php.html#a04a35b610acfe54434df08adec39c0c7">get_feed_for()</a>, <a class="el" href="datetime_8php.html#aba971b67f17fecf050813f1eba72367f">get_first_dim()</a>, <a class="el" href="items_8php.html#a536d0313b6ffe33b9d2490c4e25c5361">get_item_elements()</a>, <a class="el" href="items_8php.html#a94ddb1d6c8fa21dd7433677e85168037">get_mail_elements()</a>, <a class="el" href="items_8php.html#a251343637ff40a50cca93452cd530c26">get_profile_elements()</a>, <a class="el" href="items_8php.html#a079e099e15d88d47aeb6ca6d60da7107">get_public_feed()</a>, <a class="el" href="classItem.html#ad5dcbe0b94cb2d5719bc5b6bd8ad60c8">Item\get_template_data()</a>, <a class="el" href="classRedMatrix_1_1RedDAV_1_1RedFile.html#ac47016aa0e3f6f1a1c4570bd6fd8cf25">RedMatrix\RedDAV\RedFile\getLastModified()</a>, <a class="el" href="classRedMatrix_1_1RedDAV_1_1RedDirectory.html#a69db5f641f8f5dc999e55cee1832ecd5">RedMatrix\RedDAV\RedDirectory\getLastModified()</a>, <a class="el" href="home_8php.html#a6e3dbf78f4ed74ab2577de221190b33f">home_content()</a>, <a class="el" href="impel_8php.html#ab7db6fca43b42ea4332cb3e841b3cf7b">impel_init()</a>, <a class="el" href="items_8php.html#a6bee35961f2e32905f20367a9309d627">import_author_rss()</a>, <a class="el" href="items_8php.html#a37f79991f36811cf847446ff60e8e11f">import_author_unknown()</a>, <a class="el" href="zot_8php.html#a20750dd2c36961013fd382fb34e1366c">import_directory_profile()</a>, <a class="el" href="import_8php.html#af17fef0410518f7eac205d0ea416eaa2">import_post()</a>, <a class="el" href="zot_8php.html#a2657e141d62d5f67ad3c87651b585299">import_site()</a>, <a class="el" href="zot_8php.html#a528e97ca5d69c3b7f35c5d954afde315">import_xchan()</a>, <a class="el" href="invite_8php.html#aeb0881c0f93c8e8552e5ed756ce6e5a5">invite_post()</a>, <a class="el" href="item_8php.html#a693cd09805755ab85bbb5ecae69a48c3">item_post()</a>, <a class="el" href="items_8php.html#a2541e6861a56d145c9281877cc501615">item_store()</a>, <a class="el" href="items_8php.html#acf0bf7c9d21ac84f32effb754f7ad484">item_store_update()</a>, <a class="el" href="items_8php.html#a756738301f2ed96be50232500677d58a">items_fetch()</a>, <a class="el" href="items_8php.html#ab33fa9756aaa5f39a6104d57a62baf00">list_post_dates()</a>, <a class="el" href="auth_8php.html#ae3ecb5f34f202c7f9a61c5d589f6c6e1">log_failed_login()</a>, <a class="el" href="text_8php.html#a030fa5ecc64168af0c4f44897a9bce63">logger()</a>, <a class="el" href="magic_8php.html#acea2cc792849ca2d71d4b689f66518bf">magic_init()</a>, <a class="el" href="mail_8php.html#a3c7c485fc69f92371e8b20936040eca1">mail_content()</a>, <a class="el" href="mail_8php.html#acfc2cc0bf4e0b178207758384977f25a">mail_post()</a>, <a class="el" href="items_8php.html#a77da7ce9a117601d49ac4a67c71b514f">mail_store()</a>, <a class="el" href="manage_8php.html#a2bca247b5296827638959138367db4f5">manage_content()</a>, <a class="el" href="mod_2message_8php.html#ac72dfed3ce08fcb331d66b37edc6e15f">message_content()</a>, <a class="el" href="mod_2network_8php.html#a43f2f29b90c5e29072c561934bc8f8b4">network_content()</a>, <a class="el" href="include_2follow_8php.html#ae387d4ae097c23d69f3247e7f08140c7">new_contact()</a>, <a class="el" href="enotify_8php.html#a3e9a9355b243777c488d2a9883908dfc">notification()</a>, <a class="el" href="notifier_8php.html#a568c502f626cff95e344c0748938b85d">notifier_run()</a>, <a class="el" href="onepoll_8php.html#a72753b2fdec79b37c7f432035c91fb6d">onepoll_run()</a>, <a class="el" href="openid_8php.html#a9a13827dbcf61ae4e45f0b6b33a88f43">openid_content()</a>, <a class="el" href="p_8php.html#af9d5530ca0b3dc9409cf591c39e2480e">p_init()</a>, <a class="el" href="page__widgets_8php.html#a39d547771c5f12a17c097436c82f0fa2">pagelist_widget()</a>, <a class="el" href="include_2photos_8php.html#a6c40ef58aefef705a5adc84a40e97109">photo_upload()</a>, <a class="el" href="mod_2photos_8php.html#a062bed4d04d14fee8a53f4c9be673080">photos_post()</a>, <a class="el" href="ping_8php.html#a77217b1b190b4c5d8770867b45f0c0a1">ping_init()</a>, <a class="el" href="socgraph_8php.html#a5ef8bef37161df53718a21e93d02fbd6">poco_load()</a>, <a class="el" href="poller_8php.html#a5f12df3a4738124b6c039971e87e76da">poller_run()</a>, <a class="el" href="post_8php.html#af59e6a1dc22d19d9257b01cd7ccedb75">post_post()</a>, <a class="el" href="items_8php.html#ad2abb4644ff1f20fefbc80326fe01cf0">posted_dates()</a>, <a class="el" href="profile__photo_8php.html#a4b80234074bd603221aa5364f330e479">profile_photo_post()</a>, <a class="el" href="profiles_8php.html#a46975783b8b8d70402d51487eb1f0b00">profiles_content()</a>, <a class="el" href="profiles_8php.html#ab0362c81b1d3b0b12a772b9fac446e04">profiles_post()</a>, <a class="el" href="hubloc_8php.html#ad3d0dcfcfcb347744f7617fe6f5de002">prune_hub_reinstalls()</a>, <a class="el" href="classRedMatrix_1_1RedDAV_1_1RedFile.html#a709ec1288d21ddf1353524435ab916f0">RedMatrix\RedDAV\RedFile\put()</a>, <a class="el" href="classdba__mysql.html#ac3fd60c278f400907322dac578754a99">dba_mysql\q()</a>, <a class="el" href="classdba__mysqli.html#a611c4de8d6d7512dffb83a38bb6701ec">dba_mysqli\q()</a>, <a class="el" href="classdba__postgres.html#a70352880231fba0b859f82cd5b290a9a">dba_postgres\q()</a>, <a class="el" href="queue_8php.html#af8c93de86d866c3200174c8450a0f341">queue_run()</a>, <a class="el" href="datetime_8php.html#a8ae8dc95ace7ac27fa5a1ecf42b78c82">relative_date()</a>, <a class="el" href="removeaccount_8php.html#a26a3325292e932c59793430ab737126a">removeaccount_post()</a>, <a class="el" href="removeme_8php.html#a7be08738beca44bb98a79e01cdb2ee88">removeme_post()</a>, <a class="el" href="classphoto__driver.html#a5864fae7d8389372955a8e78cec527ac">photo_driver\save()</a>, <a class="el" href="include_2message_8php.html#a751ffd6635022b2190f56154ee745752">send_message()</a>, <a class="el" href="account_8php.html#a014de2d5d5c9785de5bf547a485822fa">send_reg_approval_email()</a>, <a class="el" href="classCache.html#ae622b82adc1c2fb1f3e2cc4fd9688fce">Cache\set()</a>, <a class="el" href="settings_8php.html#aa7ee94d88ac088edb04ccf3a26de3586">settings_post()</a>, <a class="el" href="classphoto__driver.html#a642a8d0c4ad5f887c99c6af77cee287b">photo_driver\store()</a>, <a class="el" href="dir__fns_8php.html#aa666e7df6ca8c332f4081c9b66b4bdf6">sync_directories()</a>, <a class="el" href="zot_8php.html#ab15c04e7e5f44edf45ec50dd7d183254">sync_locations()</a>, <a class="el" href="items_8php.html#ab1bce4261bcf75ad62753b498a144d17">tag_deliver()</a>, <a class="el" href="datetime_8php.html#af1cd77c97c901d9239cb7a61f97f9826">update_birthdays()</a>, <a class="el" href="dir__fns_8php.html#a44062d4b471d1e83f92f6c184585aa13">update_directory_entry()</a>, <a class="el" href="zot_8php.html#ab319d1d9fff9c7775d9daef42d1f33dd">update_modtime()</a>, <a class="el" href="queue__fn_8php.html#a4c2876181f75a4a61e85b7f00dfdbba1">update_queue_time()</a>, <a class="el" href="account_8php.html#acd6b8d2124ba5ea4f4794d2c58ae8bf5">verify_email_address()</a>, <a class="el" href="webpages_8php.html#af3b7397d4abc153e3d2147740ee1a41d">webpages_content()</a>, <a class="el" href="widgets_8php.html#a7b1e357b5a2027718470b77ec921fc65">widget_archive()</a>, <a class="el" href="hubloc_8php.html#acb708dd197aae72a4858cf5ff4e3195b">xchan_store()</a>, <a class="el" href="datetime_8php.html#ab55e545b72ec8c097e052ea7d373491f">z_birthday()</a>, <a class="el" href="items_8php.html#a1cf89557f32d5dfbe8bd90448dc1aa92">zot_feed()</a>, <a class="el" href="zot_8php.html#a3920afe14fc1d82020161b4b86bcd9ac">zot_process_message_request()</a>, <a class="el" href="zot_8php.html#a928f5643ca66ae9635d85aeb2be62e03">zot_process_response()</a>, <a class="el" href="zot_8php.html#a7ac30ff51274bf0b6d3eade37972145c">zot_refresh()</a>, and <a class="el" href="zotfeed_8php.html#a24dfc23d366e7f840cf2847d0c1c8eac">zotfeed_init()</a>.</p>
</div>
</div>
-<a class="anchor" id="a3f2897db32e745fe2f3e70a6b46578f8"></a>
+<a class="anchor" id="a72218e5ee21876484934bacbb6bd9ba3"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
- <td class="memname">dob </td>
+ <td class="memname">datetimesel </td>
<td>(</td>
<td class="paramtype">&#160;</td>
- <td class="paramname"><em>$dob</em></td><td>)</td>
+ <td class="paramname"><em>$format</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
<td></td>
+ <td class="paramtype">&#160;</td>
+ <td class="paramname"><em>$min</em>, </td>
</tr>
- </table>
-</div><div class="memdoc">
-
-<p>Referenced by <a class="el" href="profiles_8php.html#a46975783b8b8d70402d51487eb1f0b00">profiles_content()</a>.</p>
-
-</div>
-</div>
-<a class="anchor" id="a03900dcf0f9e3c58793a031673a70326"></a>
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
<tr>
- <td class="memname">field_timezone </td>
- <td>(</td>
+ <td class="paramkey"></td>
+ <td></td>
<td class="paramtype">&#160;</td>
- <td class="paramname"><em>$name</em> = <code>'timezone'</code>, </td>
+ <td class="paramname"><em>$max</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">&#160;</td>
- <td class="paramname"><em>$label</em> = <code>''</code>, </td>
+ <td class="paramname"><em>$default</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">&#160;</td>
- <td class="paramname"><em>$current</em> = <code>'America/Los_Angeles'</code>, </td>
+ <td class="paramname"><em>$id</em> = <code>'datetimepicker'</code>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">&#160;</td>
- <td class="paramname"><em>$help</em>&#160;</td>
+ <td class="paramname"><em>$pickdate</em> = <code>true</code>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">&#160;</td>
+ <td class="paramname"><em>$picktime</em> = <code>true</code>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">&#160;</td>
+ <td class="paramname"><em>$minfrom</em> = <code>''</code>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">&#160;</td>
+ <td class="paramname"><em>$maxfrom</em> = <code>''</code>&#160;</td>
</tr>
<tr>
<td></td>
@@ -393,8 +376,41 @@ Functions</h2></td></tr>
</tr>
</table>
</div><div class="memdoc">
+<p>returns a datetime selector </p>
+<dl class="params"><dt>Parameters</dt><dd>
+ <table class="params">
+ <tr><td class="paramname">$format</td><td>format string, e.g. 'ymd' or 'mdy'. Not currently supported </td></tr>
+ <tr><td class="paramname">$min</td><td>unix timestamp of minimum date </td></tr>
+ <tr><td class="paramname">$max</td><td>unix timestap of maximum date </td></tr>
+ <tr><td class="paramname">$default</td><td>unix timestamp of default date </td></tr>
+ <tr><td class="paramname">$id</td><td>id and name of datetimepicker (defaults to "datetimepicker") </td></tr>
+ <tr><td class="paramname">$pickdate</td><td>true to show date picker (default) </td></tr>
+ <tr><td class="paramname">$picktime</td><td>true to show time picker (default) </td></tr>
+ <tr><td class="paramname">$minfrom</td><td>set minimum date from picker with id $minfrom (none by default) </td></tr>
+ <tr><td class="paramname">$maxfrom</td><td>set maximum date from picker with id $maxfrom (none by default) </td></tr>
+ </table>
+ </dd>
+</dl>
+
+<p>Referenced by <a class="el" href="datetime_8php.html#a77bb385ae8a9e7ca663309c102c0d766">datesel()</a>, <a class="el" href="events_8php.html#a1d293fb217ae6bc9e3858c4b32e363ec">events_content()</a>, and <a class="el" href="datetime_8php.html#a3f239f94e23335d860b148958d87a093">timesel()</a>.</p>
-<p>Referenced by <a class="el" href="setup_8php.html#a88247384a96e14516f474d7af6a465c1">setup_content()</a>.</p>
+</div>
+</div>
+<a class="anchor" id="a3f2897db32e745fe2f3e70a6b46578f8"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">dob </td>
+ <td>(</td>
+ <td class="paramtype">&#160;</td>
+ <td class="paramname"><em>$dob</em></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p>Referenced by <a class="el" href="profiles_8php.html#a46975783b8b8d70402d51487eb1f0b00">profiles_content()</a>.</p>
</div>
</div>
@@ -422,7 +438,7 @@ Functions</h2></td></tr>
</table>
</div><div class="memdoc">
-<p>Referenced by <a class="el" href="datetime_8php.html#aea356409ba69f9de412298c998595dd2">cal()</a>, <a class="el" href="events_8php.html#a1d293fb217ae6bc9e3858c4b32e363ec">events_content()</a>, <a class="el" href="items_8php.html#aa2d3caa2f27720762b5c729e07df40fb">list_post_dates()</a>, and <a class="el" href="items_8php.html#ad2abb4644ff1f20fefbc80326fe01cf0">posted_dates()</a>.</p>
+<p>Referenced by <a class="el" href="datetime_8php.html#aea356409ba69f9de412298c998595dd2">cal()</a>, <a class="el" href="events_8php.html#a1d293fb217ae6bc9e3858c4b32e363ec">events_content()</a>, <a class="el" href="items_8php.html#ab33fa9756aaa5f39a6104d57a62baf00">list_post_dates()</a>, and <a class="el" href="items_8php.html#ad2abb4644ff1f20fefbc80326fe01cf0">posted_dates()</a>.</p>
</div>
</div>
@@ -454,6 +470,23 @@ Functions</h2></td></tr>
</div>
</div>
+<a class="anchor" id="afbb34604d0f6e7d2103da4f42e2487b1"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">get_timezones </td>
+ <td>(</td>
+ <td class="paramname"></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p>Referenced by <a class="el" href="setup_8php.html#a88247384a96e14516f474d7af6a465c1">setup_content()</a>.</p>
+
+</div>
+</div>
<a class="anchor" id="a8ae8dc95ace7ac27fa5a1ecf42b78c82"></a>
<div class="memitem">
<div class="memproto">
@@ -478,49 +511,37 @@ Functions</h2></td></tr>
</table>
</div><div class="memdoc">
-<p>Referenced by <a class="el" href="identity_8php.html#aa870d2c1f558cfd52bef05bc124e8fa4">advanced_profile()</a>, <a class="el" href="connedit_8php.html#a795acb3d9d841f55c255d7611681ab67">connedit_content()</a>, <a class="el" href="conversation_8php.html#affea1afb3f32ca41e966c8ddb4204d81">conversation()</a>, <a class="el" href="include_2notify_8php.html#a0e61728e487df50c72e6434f911a57d3">format_notification()</a>, <a class="el" href="classItem.html#ad5dcbe0b94cb2d5719bc5b6bd8ad60c8">Item\get_template_data()</a>, <a class="el" href="notifications_8php.html#aadd0b5525bd8c283a5d8a37982bbfe62">notifications_content()</a>, <a class="el" href="mod_2notify_8php.html#acdf3851688ebd6d6a575eb84ef9febe3">notify_content()</a>, and <a class="el" href="ping_8php.html#a77217b1b190b4c5d8770867b45f0c0a1">ping_init()</a>.</p>
+<p>Referenced by <a class="el" href="identity_8php.html#aa870d2c1f558cfd52bef05bc124e8fa4">advanced_profile()</a>, <a class="el" href="connedit_8php.html#a795acb3d9d841f55c255d7611681ab67">connedit_content()</a>, <a class="el" href="conversation_8php.html#affea1afb3f32ca41e966c8ddb4204d81">conversation()</a>, <a class="el" href="include_2notify_8php.html#a0e61728e487df50c72e6434f911a57d3">format_notification()</a>, <a class="el" href="boot_8php.html#aa561f801e962b67a5c4d0548ea95fd17">get_poller_runtime()</a>, <a class="el" href="classItem.html#ad5dcbe0b94cb2d5719bc5b6bd8ad60c8">Item\get_template_data()</a>, <a class="el" href="notifications_8php.html#aadd0b5525bd8c283a5d8a37982bbfe62">notifications_content()</a>, <a class="el" href="mod_2notify_8php.html#acdf3851688ebd6d6a575eb84ef9febe3">notify_content()</a>, and <a class="el" href="ping_8php.html#a77217b1b190b4c5d8770867b45f0c0a1">ping_init()</a>.</p>
</div>
</div>
-<a class="anchor" id="a633dadba426fa2f60b25fabdb19ebc1f"></a>
+<a class="anchor" id="a3f239f94e23335d860b148958d87a093"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
- <td class="memname">select_timezone </td>
+ <td class="memname">timesel </td>
<td>(</td>
<td class="paramtype">&#160;</td>
- <td class="paramname"><em>$current</em> = <code>'America/Los_Angeles'</code></td><td>)</td>
- <td></td>
+ <td class="paramname"><em>$format</em>, </td>
</tr>
- </table>
-</div><div class="memdoc">
-
-<p>Referenced by <a class="el" href="datetime_8php.html#a03900dcf0f9e3c58793a031673a70326">field_timezone()</a>.</p>
-
-</div>
-</div>
-<a class="anchor" id="a36d3d6dff8d76b5f295bb3d9c535a5b1"></a>
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
<tr>
- <td class="memname">timesel </td>
- <td>(</td>
+ <td class="paramkey"></td>
+ <td></td>
<td class="paramtype">&#160;</td>
- <td class="paramname"><em>$pre</em>, </td>
+ <td class="paramname"><em>$h</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">&#160;</td>
- <td class="paramname"><em>$h</em>, </td>
+ <td class="paramname"><em>$m</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">&#160;</td>
- <td class="paramname"><em>$m</em>&#160;</td>
+ <td class="paramname"><em>$id</em> = <code>'timepicker'</code>&#160;</td>
</tr>
<tr>
<td></td>
@@ -529,8 +550,16 @@ Functions</h2></td></tr>
</tr>
</table>
</div><div class="memdoc">
-
-<p>Referenced by <a class="el" href="events_8php.html#a1d293fb217ae6bc9e3858c4b32e363ec">events_content()</a>.</p>
+<p>returns a time selector </p>
+<dl class="params"><dt>Parameters</dt><dd>
+ <table class="params">
+ <tr><td class="paramname">$format</td><td>format string, e.g. 'ymd' or 'mdy'. Not currently supported </td></tr>
+ <tr><td class="paramname">$h</td><td>already selected hour </td></tr>
+ <tr><td class="paramname">$m</td><td>already selected minute </td></tr>
+ <tr><td class="paramname">$id</td><td>id and name of datetimepicker (defaults to "timepicker") </td></tr>
+ </table>
+ </dd>
+</dl>
</div>
</div>
diff --git a/doc/html/datetime_8php.js b/doc/html/datetime_8php.js
index 19d2d7f24..bca9ee938 100644
--- a/doc/html/datetime_8php.js
+++ b/doc/html/datetime_8php.js
@@ -2,16 +2,15 @@ var datetime_8php =
[
[ "age", "datetime_8php.html#abc1652f96799cec6fce8797ba2ebc2df", null ],
[ "cal", "datetime_8php.html#aea356409ba69f9de412298c998595dd2", null ],
- [ "datesel", "datetime_8php.html#ac265b86f384ee094ed5479aae02aa5c8", null ],
- [ "datesel_format", "datetime_8php.html#a5f29553799005b1fd4e9ce9d98ce05aa", null ],
+ [ "datesel", "datetime_8php.html#a77bb385ae8a9e7ca663309c102c0d766", null ],
[ "datetime_convert", "datetime_8php.html#ad6301e74b0f9267d52f8d432b5beb226", null ],
+ [ "datetimesel", "datetime_8php.html#a72218e5ee21876484934bacbb6bd9ba3", null ],
[ "dob", "datetime_8php.html#a3f2897db32e745fe2f3e70a6b46578f8", null ],
- [ "field_timezone", "datetime_8php.html#a03900dcf0f9e3c58793a031673a70326", null ],
[ "get_dim", "datetime_8php.html#a7df24d72ea05922d3127363e2295174c", null ],
[ "get_first_dim", "datetime_8php.html#aba971b67f17fecf050813f1eba72367f", null ],
+ [ "get_timezones", "datetime_8php.html#afbb34604d0f6e7d2103da4f42e2487b1", null ],
[ "relative_date", "datetime_8php.html#a8ae8dc95ace7ac27fa5a1ecf42b78c82", null ],
- [ "select_timezone", "datetime_8php.html#a633dadba426fa2f60b25fabdb19ebc1f", null ],
- [ "timesel", "datetime_8php.html#a36d3d6dff8d76b5f295bb3d9c535a5b1", null ],
+ [ "timesel", "datetime_8php.html#a3f239f94e23335d860b148958d87a093", null ],
[ "timezone_cmp", "datetime_8php.html#aa51b5a7ea4f931b23acbdfcea46e9865", null ],
[ "update_birthdays", "datetime_8php.html#af1cd77c97c901d9239cb7a61f97f9826", null ],
[ "z_birthday", "datetime_8php.html#ab55e545b72ec8c097e052ea7d373491f", null ]
diff --git a/doc/html/dba__driver_8php.html b/doc/html/dba__driver_8php.html
index 1c0317f16..dcfa2ffac 100644
--- a/doc/html/dba__driver_8php.html
+++ b/doc/html/dba__driver_8php.html
@@ -110,33 +110,162 @@ $(document).ready(function(){initNavTree('dba__driver_8php.html','');});
<div class="title">dba_driver.php File Reference</div> </div>
</div><!--header-->
<div class="contents">
+
+<p>some database related functions and abstract driver class.
+<a href="#details">More...</a></p>
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="nested-classes"></a>
Classes</h2></td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classdba__driver.html">dba_driver</a></td></tr>
+<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">abstract database driver class. <a href="classdba__driver.html#details">More...</a><br/></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="func-members"></a>
Functions</h2></td></tr>
-<tr class="memitem:ac10e60f6e5b95bcf67bd82cb88f37947"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="dba__driver_8php.html#ac10e60f6e5b95bcf67bd82cb88f37947">dba_factory</a> ($server, $port, $user, $pass, $db, $install=false)</td></tr>
-<tr class="separator:ac10e60f6e5b95bcf67bd82cb88f37947"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a5df8499634c47b30191f34069d7b98c0"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="dba__driver_8php.html#a5df8499634c47b30191f34069d7b98c0">dba_factory</a> ($server, $port, $user, $pass, $db, $dbtype, $install=false)</td></tr>
+<tr class="memdesc:a5df8499634c47b30191f34069d7b98c0"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the database driver object. <a href="#a5df8499634c47b30191f34069d7b98c0">More...</a><br/></td></tr>
+<tr class="separator:a5df8499634c47b30191f34069d7b98c0"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a55bf30d8176967e682656b5be4ad9249"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="dba__driver_8php.html#a55bf30d8176967e682656b5be4ad9249">printable</a> ($s)</td></tr>
<tr class="separator:a55bf30d8176967e682656b5be4ad9249"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aa6607893d8f60ade9122bcfbd1a53ffb"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="dba__driver_8php.html#aa6607893d8f60ade9122bcfbd1a53ffb">dbg</a> ($state)</td></tr>
+<tr class="memdesc:aa6607893d8f60ade9122bcfbd1a53ffb"><td class="mdescLeft">&#160;</td><td class="mdescRight">set database driver debugging state. <a href="#aa6607893d8f60ade9122bcfbd1a53ffb">More...</a><br/></td></tr>
<tr class="separator:aa6607893d8f60ade9122bcfbd1a53ffb"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ab222aa1dbf9ea93b320f82028739127e"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="dba__driver_8php.html#ab222aa1dbf9ea93b320f82028739127e">dbesc</a> ($str)</td></tr>
+<tr class="memdesc:ab222aa1dbf9ea93b320f82028739127e"><td class="mdescLeft">&#160;</td><td class="mdescRight">Escape strings being passed to DB queries. <a href="#ab222aa1dbf9ea93b320f82028739127e">More...</a><br/></td></tr>
<tr class="separator:ab222aa1dbf9ea93b320f82028739127e"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a2a38996670c2936b5769270c49c57593"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="dba__driver_8php.html#a2a38996670c2936b5769270c49c57593">dbescbin</a> ($str)</td></tr>
+<tr class="separator:a2a38996670c2936b5769270c49c57593"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:afaaa1a7eff9c1b65b3b8c464ae37640e"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="dba__driver_8php.html#afaaa1a7eff9c1b65b3b8c464ae37640e">dbunescbin</a> ($str)</td></tr>
+<tr class="separator:afaaa1a7eff9c1b65b3b8c464ae37640e"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a2c8a72ec73f39b17a167c90737693f78"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="dba__driver_8php.html#a2c8a72ec73f39b17a167c90737693f78">dbescdate</a> ($date)</td></tr>
+<tr class="separator:a2c8a72ec73f39b17a167c90737693f78"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:acec84a8fb75d78daf657cbe5df74e25a"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="dba__driver_8php.html#acec84a8fb75d78daf657cbe5df74e25a">db_quoteinterval</a> ($txt)</td></tr>
+<tr class="separator:acec84a8fb75d78daf657cbe5df74e25a"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:aa051799567690a124a3b865bf902f58a"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="dba__driver_8php.html#aa051799567690a124a3b865bf902f58a">dbesc_identifier</a> ($str)</td></tr>
+<tr class="separator:aa051799567690a124a3b865bf902f58a"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a30e9a643be804e905f5614a3279d2645"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="dba__driver_8php.html#a30e9a643be804e905f5614a3279d2645">db_utcnow</a> ()</td></tr>
+<tr class="separator:a30e9a643be804e905f5614a3279d2645"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a75098bf1d59ea57f7ebae657a369137e"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="dba__driver_8php.html#a75098bf1d59ea57f7ebae657a369137e">db_optimizetable</a> ($table)</td></tr>
+<tr class="separator:a75098bf1d59ea57f7ebae657a369137e"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a7c1b98a710ead27382c958ad3216c4ee"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="dba__driver_8php.html#a7c1b98a710ead27382c958ad3216c4ee">db_concat</a> ($fld, $sep)</td></tr>
+<tr class="separator:a7c1b98a710ead27382c958ad3216c4ee"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a2c09a731d3b4fef41fed0e83db01be1f"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="dba__driver_8php.html#a2c09a731d3b4fef41fed0e83db01be1f">q</a> ($sql)</td></tr>
+<tr class="memdesc:a2c09a731d3b4fef41fed0e83db01be1f"><td class="mdescLeft">&#160;</td><td class="mdescRight">Execute a SQL query with printf style args. <a href="#a2c09a731d3b4fef41fed0e83db01be1f">More...</a><br/></td></tr>
<tr class="separator:a2c09a731d3b4fef41fed0e83db01be1f"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aa377074e70981e8c4e82ca0accd068ee"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="dba__driver_8php.html#aa377074e70981e8c4e82ca0accd068ee">dbq</a> ($sql)</td></tr>
+<tr class="memdesc:aa377074e70981e8c4e82ca0accd068ee"><td class="mdescLeft">&#160;</td><td class="mdescRight">Raw DB query, no arguments. <a href="#aa377074e70981e8c4e82ca0accd068ee">More...</a><br/></td></tr>
<tr class="separator:aa377074e70981e8c4e82ca0accd068ee"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:af531546fac5f0836a8557a4f6dfee930"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="dba__driver_8php.html#af531546fac5f0836a8557a4f6dfee930">dbesc_array_cb</a> (&amp;$item, $key)</td></tr>
<tr class="separator:af531546fac5f0836a8557a4f6dfee930"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a65b83462bd26968106aebd43f16540e4"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="dba__driver_8php.html#a65b83462bd26968106aebd43f16540e4">dbesc_array</a> (&amp;$arr)</td></tr>
<tr class="separator:a65b83462bd26968106aebd43f16540e4"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a2994daa03b1c23229a27e39bcab75e67"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="dba__driver_8php.html#a2994daa03b1c23229a27e39bcab75e67">db_getfunc</a> ($f)</td></tr>
+<tr class="separator:a2994daa03b1c23229a27e39bcab75e67"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
-<h2 class="groupheader">Function Documentation</h2>
-<a class="anchor" id="ac10e60f6e5b95bcf67bd82cb88f37947"></a>
+<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
+<div class="textblock"><p>some database related functions and abstract driver class. </p>
+<p>This file contains the abstract database driver class <a class="el" href="classdba__driver.html" title="abstract database driver class.">dba_driver</a> and some functions for working with databases. </p>
+</div><h2 class="groupheader">Function Documentation</h2>
+<a class="anchor" id="a7c1b98a710ead27382c958ad3216c4ee"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">db_concat </td>
+ <td>(</td>
+ <td class="paramtype">&#160;</td>
+ <td class="paramname"><em>$fld</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">&#160;</td>
+ <td class="paramname"><em>$sep</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p>Referenced by <a class="el" href="acl_8php.html#ac6776dba871806ecdb5d1659bc2eb07a">acl_init()</a>, and <a class="el" href="admin_8php.html#a62f10f90c47686c9c3c37c4c03a108d2">admin_page_users()</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a2994daa03b1c23229a27e39bcab75e67"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">db_getfunc </td>
+ <td>(</td>
+ <td class="paramtype">&#160;</td>
+ <td class="paramname"><em>$f</em></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p>Referenced by <a class="el" href="Contact_8php.html#a024919623a830e8703ac4f23496dd66c">abook_toggle_flag()</a>, <a class="el" href="socgraph_8php.html#a7d34cd58025bcd9e575282f44db75918">common_friends()</a>, <a class="el" href="connect_8php.html#a417ec27afe33f21a929667a665e32ee2">connect_post()</a>, <a class="el" href="account_8php.html#a0d183a3cb4c67a0f5e906811df7a1fc9">downgrade_accounts()</a>, <a class="el" href="externals_8php.html#a4df44079e6f915286088b7a0d44db926">externals_run()</a>, <a class="el" href="security_8php.html#a9355488460ab11d6058656ff919e5cf9">item_permissions_sql()</a>, <a class="el" href="security_8php.html#afa683bc025a1d2fe9065e2f6cd71a22f">permissions_sql()</a>, <a class="el" href="poller_8php.html#a5f12df3a4738124b6c039971e87e76da">poller_run()</a>, <a class="el" href="security_8php.html#ab3bdd30dc60d9ee72370b866aa4a2d01">public_permissions_sql()</a>, <a class="el" href="Contact_8php.html#a7e3f5bef8ea1d2bf8434c9be36a2b713">random_profile()</a>, <a class="el" href="search_8php.html#ab2568591359edde5b483a6cd9a24b2cc">search_content()</a>, and <a class="el" href="widgets_8php.html#a829c5a5c7448129266fc1df3ae1a3c2e">widget_random_block()</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a75098bf1d59ea57f7ebae657a369137e"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">db_optimizetable </td>
+ <td>(</td>
+ <td class="paramtype">&#160;</td>
+ <td class="paramname"><em>$table</em></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p>Referenced by <a class="el" href="session_8php.html#ac95373f4966862a028033dd2f94d4da1">ref_session_gc()</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="acec84a8fb75d78daf657cbe5df74e25a"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">db_quoteinterval </td>
+ <td>(</td>
+ <td class="paramtype">&#160;</td>
+ <td class="paramname"><em>$txt</em></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p>Referenced by <a class="el" href="include_2chat_8php.html#a2c95b545e46bfee64faa05ecf0afea91">chatroom_enter()</a>, <a class="el" href="expire_8php.html#a444e45c9b67727b27db4c779fd51a298">expire_run()</a>, <a class="el" href="items_8php.html#a6f7e1334af5d684a987fa6a3eb37f4cc">item_expire()</a>, <a class="el" href="Contact_8php.html#a08845ce8c5b997d5edac38ae7118b5c8">mark_orphan_hubsxchans()</a>, <a class="el" href="notifier_8php.html#a568c502f626cff95e344c0748938b85d">notifier_run()</a>, <a class="el" href="onepoll_8php.html#a72753b2fdec79b37c7f432035c91fb6d">onepoll_run()</a>, <a class="el" href="include_2photos_8php.html#a6c40ef58aefef705a5adc84a40e97109">photo_upload()</a>, <a class="el" href="ping_8php.html#a77217b1b190b4c5d8770867b45f0c0a1">ping_init()</a>, <a class="el" href="socgraph_8php.html#a5ef8bef37161df53718a21e93d02fbd6">poco_load()</a>, <a class="el" href="poller_8php.html#a5f12df3a4738124b6c039971e87e76da">poller_run()</a>, <a class="el" href="post_8php.html#af59e6a1dc22d19d9257b01cd7ccedb75">post_post()</a>, <a class="el" href="queue_8php.html#af8c93de86d866c3200174c8450a0f341">queue_run()</a>, <a class="el" href="Contact_8php.html#a7e3f5bef8ea1d2bf8434c9be36a2b713">random_profile()</a>, <a class="el" href="register_8php.html#a0e91f57f111407ea8d3223a05022bb2a">register_content()</a>, <a class="el" href="register_8php.html#a51731dcc1917c58a790eb1c0f6132271">register_post()</a>, <a class="el" href="datetime_8php.html#af1cd77c97c901d9239cb7a61f97f9826">update_birthdays()</a>, <a class="el" href="statistics__fns_8php.html#a82726229a961d3bd3d543005c61dd8e6">update_channels_active_halfyear_stat()</a>, <a class="el" href="statistics__fns_8php.html#ad2b7b595c039c4c2eb0d6cd57a393dfe">update_channels_active_monthly_stat()</a>, and <a class="el" href="socgraph_8php.html#a790690bb1a1d02483fe31632a160144d">update_suggestions()</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a30e9a643be804e905f5614a3279d2645"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">db_utcnow </td>
+ <td>(</td>
+ <td class="paramname"></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p>Referenced by <a class="el" href="include_2chat_8php.html#a2c95b545e46bfee64faa05ecf0afea91">chatroom_enter()</a>, <a class="el" href="expire_8php.html#a444e45c9b67727b27db4c779fd51a298">expire_run()</a>, <a class="el" href="items_8php.html#a6f7e1334af5d684a987fa6a3eb37f4cc">item_expire()</a>, <a class="el" href="Contact_8php.html#a08845ce8c5b997d5edac38ae7118b5c8">mark_orphan_hubsxchans()</a>, <a class="el" href="notifier_8php.html#a568c502f626cff95e344c0748938b85d">notifier_run()</a>, <a class="el" href="onepoll_8php.html#a72753b2fdec79b37c7f432035c91fb6d">onepoll_run()</a>, <a class="el" href="include_2photos_8php.html#a6c40ef58aefef705a5adc84a40e97109">photo_upload()</a>, <a class="el" href="ping_8php.html#a77217b1b190b4c5d8770867b45f0c0a1">ping_init()</a>, <a class="el" href="socgraph_8php.html#a5ef8bef37161df53718a21e93d02fbd6">poco_load()</a>, <a class="el" href="poller_8php.html#a5f12df3a4738124b6c039971e87e76da">poller_run()</a>, <a class="el" href="post_8php.html#af59e6a1dc22d19d9257b01cd7ccedb75">post_post()</a>, <a class="el" href="queue_8php.html#af8c93de86d866c3200174c8450a0f341">queue_run()</a>, <a class="el" href="Contact_8php.html#a7e3f5bef8ea1d2bf8434c9be36a2b713">random_profile()</a>, <a class="el" href="register_8php.html#a0e91f57f111407ea8d3223a05022bb2a">register_content()</a>, <a class="el" href="register_8php.html#a51731dcc1917c58a790eb1c0f6132271">register_post()</a>, <a class="el" href="datetime_8php.html#af1cd77c97c901d9239cb7a61f97f9826">update_birthdays()</a>, <a class="el" href="statistics__fns_8php.html#a82726229a961d3bd3d543005c61dd8e6">update_channels_active_halfyear_stat()</a>, <a class="el" href="statistics__fns_8php.html#ad2b7b595c039c4c2eb0d6cd57a393dfe">update_channels_active_monthly_stat()</a>, and <a class="el" href="socgraph_8php.html#a790690bb1a1d02483fe31632a160144d">update_suggestions()</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a5df8499634c47b30191f34069d7b98c0"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
@@ -174,6 +303,12 @@ Functions</h2></td></tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">&#160;</td>
+ <td class="paramname"><em>$dbtype</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">&#160;</td>
<td class="paramname"><em>$install</em> = <code>false</code>&#160;</td>
</tr>
<tr>
@@ -184,6 +319,22 @@ Functions</h2></td></tr>
</table>
</div><div class="memdoc">
+<p>Returns the database driver object. </p>
+<p>If available it will use PHP's mysqli otherwise mysql driver.</p>
+<dl class="params"><dt>Parameters</dt><dd>
+ <table class="params">
+ <tr><td class="paramtype">string</td><td class="paramname">$server</td><td>DB server name </td></tr>
+ <tr><td class="paramtype">string</td><td class="paramname">$port</td><td>DB port </td></tr>
+ <tr><td class="paramtype">string</td><td class="paramname">$user</td><td>DB username </td></tr>
+ <tr><td class="paramtype">string</td><td class="paramname">$pass</td><td>DB password </td></tr>
+ <tr><td class="paramtype">string</td><td class="paramname">$db</td><td>database name </td></tr>
+ <tr><td class="paramtype">string</td><td class="paramname">$dbtype</td><td>0 for mysql, 1 for postgres </td></tr>
+ <tr><td class="paramtype">bool</td><td class="paramname">$install</td><td>Defaults to false </td></tr>
+ </table>
+ </dd>
+</dl>
+<dl class="section return"><dt>Returns</dt><dd>null|dba_driver A database driver object (dba_mysql|dba_mysqli) or null if no driver found. </dd></dl>
+
<p>Referenced by <a class="el" href="cli__startup_8php.html#adfdde63686e33ccd4851fa5edc4fc70b">cli_startup()</a>, and <a class="el" href="setup_8php.html#a13cf286774149a0a7bd8adb8179cec75">setup_post()</a>.</p>
</div>
@@ -202,7 +353,17 @@ Functions</h2></td></tr>
</table>
</div><div class="memdoc">
-<p>Referenced by <a class="el" href="Contact_8php.html#a024919623a830e8703ac4f23496dd66c">abook_toggle_flag()</a>, <a class="el" href="auth_8php.html#a07bae0e623e2daa9ee2cd5a8aa294dee">account_verify_password()</a>, <a class="el" href="achievements_8php.html#a35ae04ada0e227d19671f289a32fb30e">achievements_content()</a>, <a class="el" href="acl_8php.html#ac6776dba871806ecdb5d1659bc2eb07a">acl_init()</a>, <a class="el" href="items_8php.html#a81565acf729e629e588d823308448e3c">add_source_route()</a>, <a class="el" href="admin_8php.html#a62f10f90c47686c9c3c37c4c03a108d2">admin_page_users()</a>, <a class="el" href="identity_8php.html#aa870d2c1f558cfd52bef05bc124e8fa4">advanced_profile()</a>, <a class="el" href="zot_8php.html#a703f528ade8382cf374e4119bd6f7859">allowed_public_recips()</a>, <a class="el" href="include_2api_8php.html#a0991f72554f821255397d615e76f3203">api_direct_messages_new()</a>, <a class="el" href="include_2api_8php.html#aa40bae797bcd9ccacffdce5a3b5a1afa">api_get_user()</a>, <a class="el" href="include_2api_8php.html#a645397787618b5c548a31e8686e8cca4">api_status_show()</a>, <a class="el" href="include_2api_8php.html#ad4c29f43418f6110f85a6b3998239ab4">api_statuses_destroy()</a>, <a class="el" href="include_2api_8php.html#a8b25a186bd0893f51aa72a62f655735e">api_statuses_mentions()</a>, <a class="el" href="include_2api_8php.html#afb99daa6b731bf497b81f2128084852c">api_user()</a>, <a class="el" href="include_2api_8php.html#abe8e929e93f7ab134b1cb1fb30f19a76">api_users_show()</a>, <a class="el" href="include_2apps_8php.html#a6b472df85ed875e7ae75642cece5206f">app_destroy()</a>, <a class="el" href="include_2apps_8php.html#a1adcd1aff4d36ad0277daca9f3d2bbe2">app_installed()</a>, <a class="el" href="include_2apps_8php.html#a15626f24069c18816f7cdaf4735f58f9">app_store()</a>, <a class="el" href="include_2apps_8php.html#aeab6a62d2f3dfaa86ed043a006305f46">app_update()</a>, <a class="el" href="appman_8php.html#af48805ac2f6f123f2681a8ae1c6f123f">appman_content()</a>, <a class="el" href="include_2attach_8php.html#a0d07c5b83d3d54e186f752e571847b36">attach_by_hash()</a>, <a class="el" href="include_2attach_8php.html#ad991208ce939387e2f93a3bce7d09932">attach_by_hash_nodata()</a>, <a class="el" href="include_2attach_8php.html#a5c0875eafb8c0f8a0620ff7a875a2221">attach_change_permissions()</a>, <a class="el" href="include_2attach_8php.html#a887d2d44a3ef18dcb6624e7fb58dc8e3">attach_count_files()</a>, <a class="el" href="include_2attach_8php.html#a70bd666e080c2af5a91f5d14c297b8cd">attach_delete()</a>, <a class="el" href="include_2attach_8php.html#a3634af95f11a023dd8e882c3c7a3600d">attach_list_files()</a>, <a class="el" href="include_2attach_8php.html#ab6830b3ab74a5d284876141ac80f6cbc">attach_mkdir()</a>, <a class="el" href="include_2attach_8php.html#a84a8a64c4805e1525b42d4add464833f">attach_store()</a>, <a class="el" href="security_8php.html#adc7bf51e3b8d67bd80e9348f9ab03733">authenticate_success()</a>, <a class="el" href="block_8php.html#a8a82a470acdfbc7a8e749509caeeea45">block_content()</a>, <a class="el" href="blocks_8php.html#a2531a8fd51db3cecb2eb20c002c66e12">blocks_content()</a>, <a class="el" href="include_2bookmarks_8php.html#aef1cb2968c41c759f2d106e1088ca323">bookmark_add()</a>, <a class="el" href="mod_2bookmarks_8php.html#a6b7942f3d27e40f0f47c88704127b9b3">bookmarks_init()</a>, <a class="el" href="zot_8php.html#ac34e479d27f32b82dd6b33542f81a6a7">build_sync_packet()</a>, <a class="el" href="plugin_8php.html#a7f05de16c0a32602853b09b99dd85e7c">call_hooks()</a>, <a class="el" href="contact__widgets_8php.html#a165eb021e61c4dcab2a552f28628d353">categories_widget()</a>, <a class="el" href="security_8php.html#a8d23d2597aae380a3341872fe9513380">change_channel()</a>, <a class="el" href="channel_8php.html#a9c6a6179e0e626398ebecc6151905ef1">channel_content()</a>, <a class="el" href="Contact_8php.html#a186162051a5127069cc851d78740f205">channel_remove()</a>, <a class="el" href="Contact_8php.html#a483cda56f9e37c3a4a8773dcdfeb0258">channelx_by_hash()</a>, <a class="el" href="Contact_8php.html#a3a0844dac1e86d523de5d2f432cfeebc">channelx_by_n()</a>, <a class="el" href="Contact_8php.html#a87e699f74a1102b25e8aa0432d86a91e">channelx_by_nick()</a>, <a class="el" href="chanview_8php.html#a4192c6da888c8c1165851acf9ad4cb8b">chanview_content()</a>, <a class="el" href="include_2chat_8php.html#acea6b176eb7aff44d9ba3ae24ce511d3">chat_message()</a>, <a class="el" href="mod_2chat_8php.html#a999d594745597c656c9760253ae297ad">chat_post()</a>, <a class="el" href="include_2chat_8php.html#acdc80dba4eb796c7472b21129b435422">chatroom_create()</a>, <a class="el" href="include_2chat_8php.html#a2ba3af6884ecdce95de69262fe599639">chatroom_destroy()</a>, <a class="el" href="include_2chat_8php.html#a2c95b545e46bfee64faa05ecf0afea91">chatroom_enter()</a>, <a class="el" href="include_2chat_8php.html#a1ee1360f7d2549c7549ae07cb5190f0f">chatroom_leave()</a>, <a class="el" href="chatsvc_8php.html#a7032784215e1f6747cf385a6598770f9">chatsvc_content()</a>, <a class="el" href="chatsvc_8php.html#a7c9a9b9c24a2b02eed8efd6b09632d03">chatsvc_post()</a>, <a class="el" href="account_8php.html#ae052bd5558847bd38e89c213561a9771">check_account_email()</a>, <a class="el" href="account_8php.html#aaff7720423417a4333697894ffd9ddeb">check_account_invite()</a>, <a class="el" href="items_8php.html#a87ac9e359591721a824ecd23bbb56296">check_item_source()</a>, <a class="el" href="text_8php.html#a0c65597bb4aed3a039eb795ff540e5e3">check_webbie()</a>, <a class="el" href="classCache.html#ab14d0f4bdf7116a94d545c574b38f568">Cache\clear()</a>, <a class="el" href="comanche_8php.html#a5a7ab801717d38e91ac910b933973887">comanche_block()</a>, <a class="el" href="socgraph_8php.html#a7d34cd58025bcd9e575282f44db75918">common_friends()</a>, <a class="el" href="connect_8php.html#ad46a38f32fd7a3d324b1fa26373efa36">connect_init()</a>, <a class="el" href="connect_8php.html#a417ec27afe33f21a929667a665e32ee2">connect_post()</a>, <a class="el" href="connections_8php.html#aec2e457420fce3e3bf6a9f48e36df25c">connections_content()</a>, <a class="el" href="connections_8php.html#a1224058db8e3fb56463eb312f98e561d">connections_post()</a>, <a class="el" href="connedit_8php.html#a234c48426b652bf4d37053f2af329ac5">connedit_post()</a>, <a class="el" href="items_8php.html#a8794863cdf8ce1333040933d3a3f66bd">consume_feed()</a>, <a class="el" href="Contact_8php.html#a28e062c884331dbb5dfa713228c25ad6">contact_remove()</a>, <a class="el" href="contactgroup_8php.html#a18c7391b1b25debaf98c9dba639caab3">contactgroup_content()</a>, <a class="el" href="socgraph_8php.html#a887d576f21fd708132a06d0f72f90f84">count_common_friends()</a>, <a class="el" href="account_8php.html#a141fe579c351c78209d425473f978eb5">create_account()</a>, <a class="el" href="identity_8php.html#a345f4c943d84de502ec6e72d2c813945">create_identity()</a>, <a class="el" href="classRedDirectory.html#a2d12d99d38a6a75fc9a830b2f7fc0bf0">RedDirectory\createFile()</a>, <a class="el" href="dba__driver_8php.html#af531546fac5f0836a8557a4f6dfee930">dbesc_array_cb()</a>, <a class="el" href="include_2config_8php.html#a549910227348003efc3c05c9105c42da">del_config()</a>, <a class="el" href="include_2config_8php.html#a7ad2081c5f812ac4387fd76f3762d941">del_pconfig()</a>, <a class="el" href="include_2config_8php.html#a9c171def547deee16738dc58fdeb4b72">del_xconfig()</a>, <a class="el" href="delegate_8php.html#a943eea8996ef348eb845c498f9f354dd">delegate_content()</a>, <a class="el" href="zot_8php.html#adfeb9400ae6b726beec89f8f1e8fde72">delete_imported_item()</a>, <a class="el" href="items_8php.html#aac8c9eb4338e2a996c43914392c6cfdb">delete_item_lowlevel()</a>, <a class="el" href="deliver_8php.html#a397afcb9afecf0c1816b0951189dd346">deliver_run()</a>, <a class="el" href="dirsearch_8php.html#a52bcac49b0e35cc8c6b70066143c2ee2">dir_query_build()</a>, <a class="el" href="include_2directory_8php.html#aa75d3b0697ca1456aaabdb37a74aa0f0">directory_run()</a>, <a class="el" href="dirsearch_8php.html#aa1fb04e1de4f25b63349ac78f94ceb4c">dirsearch_content()</a>, <a class="el" href="display_8php.html#a37137c98d47bf3306f4c2bb9f5b60de0">display_content()</a>, <a class="el" href="account_8php.html#a0d183a3cb4c67a0f5e906811df7a1fc9">downgrade_accounts()</a>, <a class="el" href="editlayout_8php.html#aa877e4157a26b099de904164181dd386">editlayout_content()</a>, <a class="el" href="editpost_8php.html#a34011690864d122680c802e9e748ccfb">editpost_content()</a>, <a class="el" href="editwebpage_8php.html#a375e945255fad79a71036528f7480650">editwebpage_content()</a>, <a class="el" href="event_8php.html#ac9f206819186b65952ac1869f0da8c6e">event_addtocal()</a>, <a class="el" href="event_8php.html#af5ac41e7ea3f7131088fe6333fd2846c">event_store_event()</a>, <a class="el" href="event_8php.html#a7378e839ac3de9d55579eb3ec48eaf92">event_store_item()</a>, <a class="el" href="events_8php.html#a1d293fb217ae6bc9e3858c4b32e363ec">events_content()</a>, <a class="el" href="events_8php.html#ab3e8a8f901175f8e40a8089eea45c075">events_post()</a>, <a class="el" href="externals_8php.html#a4df44079e6f915286088b7a0d44db926">externals_run()</a>, <a class="el" href="fbrowser_8php.html#aee476addcf7a3e0fe9454f7dfd5a56c4">fbrowser_content()</a>, <a class="el" href="feed_8php.html#af86137700b56f33d1d5f25c8dec22c04">feed_init()</a>, <a class="el" href="items_8php.html#adf980098b6de9c3993bc3ff26a8dd6f9">fetch_post_tags()</a>, <a class="el" href="taxonomy_8php.html#a163b5131f388080b0fc82398d3a32fe1">file_tag_file_query()</a>, <a class="el" href="filerm_8php.html#ae2eb28d2054fa2c37e38689882172208">filerm_content()</a>, <a class="el" href="filestorage_8php.html#a61bb1be78472555df4ce619f51014040">filestorage_content()</a>, <a class="el" href="include_2attach_8php.html#a4dbfd7e1cef52aa9ef52f4b88929fa86">find_filename_by_hash()</a>, <a class="el" href="include_2attach_8php.html#a052f14487ff2ce72f62a09fac8d7e997">find_folder_hash_by_attach_hash()</a>, <a class="el" href="classRedBrowser.html#ae4edd4e10c709e2624c1aeb47b0440c5">RedBrowser\findAttachHash()</a>, <a class="el" href="classRedBrowser.html#a20d81230645ddca08a88bfd9ea9f88f1">RedBrowser\findAttachIdByHash()</a>, <a class="el" href="item_8php.html#a7b63a9d0cd02096e17dcf11f4afa7c10">fix_attached_photo_permissions()</a>, <a class="el" href="items_8php.html#aba98fcbbcd7044a7e9ea34edabc14c87">fix_private_photos()</a>, <a class="el" href="boot_8php.html#aca5e42678e178c6b9034610d66666fd7">fix_system_urls()</a>, <a class="el" href="fsuggest_8php.html#a61ecfe10ce937ed526614f8fd3de3c7d">fsuggest_post()</a>, <a class="el" href="classCache.html#a70392b109331897bf9fdd7f1960e21de">Cache\get()</a>, <a class="el" href="classRedFile.html#a7c868dfcef6c70cd0e24cf3caa2c3535">RedFile\get()</a>, <a class="el" href="permissions_8php.html#aeca9b280f3dc3358c89976d81d690008">get_all_perms()</a>, <a class="el" href="identity_8php.html#ad2c97627a313d53df1a1c7b4215ddb51">get_birthdays()</a>, <a class="el" href="identity_8php.html#ac73b3e13778c564c877554517a7f51ba">get_channel_by_nick()</a>, <a class="el" href="include_2attach_8php.html#a6aa00ea010ea030110faefb75eafc1ce">get_cloudpath()</a>, <a class="el" href="include_2config_8php.html#af08b7adb63adfb2eda7c466fba0cce74">get_config_from_storage()</a>, <a class="el" href="identity_8php.html#ae381db3d43f8e7c1da8b15d14ecf5312">get_events()</a>, <a class="el" href="items_8php.html#a536d0313b6ffe33b9d2490c4e25c5361">get_item_elements()</a>, <a class="el" href="identity_8php.html#a332df795f684788002f5a6424abacfd7">get_online_status()</a>, <a class="el" href="taxonomy_8php.html#a7747fa859ac56fbffd4f9782d85505de">get_things()</a>, <a class="el" href="classRedDirectory.html#a70173d4458572d95e586b2037d2fd2f4">RedDirectory\getDir()</a>, <a class="el" href="classRedDirectory.html#a6c7e08199abc24e6eeb94a4037ef8bfc">RedDirectory\getLastModified()</a>, <a class="el" href="gprobe_8php.html#adf72cb0a70b5b9d99fdec1cc60e18ed1">gprobe_run()</a>, <a class="el" href="include_2group_8php.html#a06ec565d2b64e79044e7c1bf91a2a4ce">group_add()</a>, <a class="el" href="include_2group_8php.html#a0122ef312df2c5546b1a46b3e6c7b31b">group_add_member()</a>, <a class="el" href="include_2group_8php.html#abd66a5ea34a07a3422dc2dde6c7b3ecb">group_byname()</a>, <a class="el" href="mod_2group_8php.html#a07a64f6c65b0080d8190b3d9728a7a83">group_content()</a>, <a class="el" href="mod_2group_8php.html#aed1f009b1221348021bb34761160ef35">group_post()</a>, <a class="el" href="include_2group_8php.html#a90e157b3e1b99c981809cb5a2abd3245">group_rec_byhash()</a>, <a class="el" href="include_2group_8php.html#a4118f498bbd1530c1d0136d016d197a5">group_rmv()</a>, <a class="el" href="include_2group_8php.html#a540e3ef36f47d47532646be4241f6518">group_rmv_member()</a>, <a class="el" href="include_2group_8php.html#afb802ae2ce73aae4bc36d157f7b6a92f">groups_containing()</a>, <a class="el" href="item_8php.html#aa22feef4de326e1d7078dedd892e615c">handle_tag()</a>, <a class="el" href="home_8php.html#aa1cf697851a646755baf537f75334c46">home_content()</a>, <a class="el" href="items_8php.html#a6bee35961f2e32905f20367a9309d627">import_author_rss()</a>, <a class="el" href="zot_8php.html#ad149f1e98c0c5b88ff9147e6ee3f330d">import_author_zot()</a>, <a class="el" href="zot_8php.html#a3bf11286c2619b4ca28e49d5b5ab374a">import_directory_keywords()</a>, <a class="el" href="zot_8php.html#a20750dd2c36961013fd382fb34e1366c">import_directory_profile()</a>, <a class="el" href="import_8php.html#af17fef0410518f7eac205d0ea416eaa2">import_post()</a>, <a class="el" href="photo__driver_8php.html#a78f5a10c568d2a9bbbb129dc96548887">import_profile_photo()</a>, <a class="el" href="zot_8php.html#a2657e141d62d5f67ad3c87651b585299">import_site()</a>, <a class="el" href="zot_8php.html#a528e97ca5d69c3b7f35c5d954afde315">import_xchan()</a>, <a class="el" href="plugin_8php.html#a482131013272a1d5d5c1b1469c6c55d5">install_plugin()</a>, <a class="el" href="invite_8php.html#aeb0881c0f93c8e8552e5ed756ce6e5a5">invite_post()</a>, <a class="el" href="items_8php.html#a02ca33c31ed535d24894f8a9a91ce9df">item_add_cid()</a>, <a class="el" href="text_8php.html#aa6b0aa8afbeab50d1a3058ad21acb74e">item_message_id()</a>, <a class="el" href="security_8php.html#a9355488460ab11d6058656ff919e5cf9">item_permissions_sql()</a>, <a class="el" href="item_8php.html#a693cd09805755ab85bbb5ecae69a48c3">item_post()</a>, <a class="el" href="items_8php.html#a5ed782ff5b9cf050bec931e06de12c00">item_remove_cid()</a>, <a class="el" href="items_8php.html#a2541e6861a56d145c9281877cc501615">item_store()</a>, <a class="el" href="items_8php.html#acf0bf7c9d21ac84f32effb754f7ad484">item_store_update()</a>, <a class="el" href="items_8php.html#a756738301f2ed96be50232500677d58a">items_fetch()</a>, <a class="el" href="layouts_8php.html#a6e0193759ad9eef76d3df2db24237b50">layouts_content()</a>, <a class="el" href="like_8php.html#a9d7dd268f21c21e9d29dd2aca2dd9538">like_content()</a>, <a class="el" href="include_2config_8php.html#a27559f388c9b9af81c94e48d6889d1d1">load_config()</a>, <a class="el" href="plugin_8php.html#a9ca9632b7309a65b05c03a3e2f473a3d">load_plugin()</a>, <a class="el" href="include_2config_8php.html#a55bbed9a014c9109c767486834f3ca33">load_xconfig()</a>, <a class="el" href="dir__fns_8php.html#acd37b17dce3bdec6d5a6344a20598c1e">local_dir_update()</a>, <a class="el" href="lockview_8php.html#a851e26ab9a1008df5c5ebebea31e9b44">lockview_content()</a>, <a class="el" href="classFKOAuthDataStore.html#a1148d47b546350bf440bdd92792c5df1">FKOAuthDataStore\lookup_consumer()</a>, <a class="el" href="classFKOAuthDataStore.html#a4edfe2e77ecd2e16ff6b5eb516ed3599">FKOAuthDataStore\lookup_nonce()</a>, <a class="el" href="classFKOAuthDataStore.html#a96f76387c3a93b0abe27a98013804bab">FKOAuthDataStore\lookup_token()</a>, <a class="el" href="lostpass_8php.html#a0314d94e48c789b1b3a201d740c9eab3">lostpass_content()</a>, <a class="el" href="lostpass_8php.html#a8ed35ba71a4404eaf4903da61d0321cc">lostpass_post()</a>, <a class="el" href="magic_8php.html#acea2cc792849ca2d71d4b689f66518bf">magic_init()</a>, <a class="el" href="items_8php.html#a77da7ce9a117601d49ac4a67c71b514f">mail_store()</a>, <a class="el" href="Contact_8php.html#a08845ce8c5b997d5edac38ae7118b5c8">mark_orphan_hubsxchans()</a>, <a class="el" href="auth_8php.html#ab7be44ee051c0aa29847807cf2c5dd38">match_openid()</a>, <a class="el" href="include_2group_8php.html#a048f6892bfd28852de1b76470df411de">member_of()</a>, <a class="el" href="include_2menu_8php.html#add35fae5e9695031b3d46e30ac409eb8">menu_add_item()</a>, <a class="el" href="include_2menu_8php.html#a08a800821721781a8dfffbe31481ff98">menu_create()</a>, <a class="el" href="include_2menu_8php.html#a3884bda4d85d84ec99447db9403a68d8">menu_delete()</a>, <a class="el" href="include_2menu_8php.html#a6a33c6a3db2a7510b16cc656edaec571">menu_edit()</a>, <a class="el" href="include_2menu_8php.html#acb66f80ca895a6ccd562b3d9ae7b41aa">menu_edit_item()</a>, <a class="el" href="include_2menu_8php.html#a68ebbf492470c930f652013656f9071d">menu_fetch()</a>, <a class="el" href="include_2menu_8php.html#a32701c4245e78ba9106eef52c08bf33d">menu_list()</a>, <a class="el" href="msearch_8php.html#ac80d2a6c0a92e79eec7efbbccd74d9a8">msearch_post()</a>, <a class="el" href="netgrowth_8php.html#a9b87bfc25a7cb11bc7f8e1fdd0310919">netgrowth_content()</a>, <a class="el" href="mod_2network_8php.html#a43f2f29b90c5e29072c561934bc8f8b4">network_content()</a>, <a class="el" href="classFKOAuthDataStore.html#a434882f03e3cdb171ed89e09e337e934">FKOAuthDataStore\new_access_token()</a>, <a class="el" href="include_2follow_8php.html#ae387d4ae097c23d69f3247e7f08140c7">new_contact()</a>, <a class="el" href="session_8php.html#a4c0ead624f95483e386bc80abf570a8f">new_cookie()</a>, <a class="el" href="classFKOAuthDataStore.html#a431b44d70e3da6a8256ab38f710e3050">FKOAuthDataStore\new_request_token()</a>, <a class="el" href="enotify_8php.html#a3e9a9355b243777c488d2a9883908dfc">notification()</a>, <a class="el" href="notifier_8php.html#a568c502f626cff95e344c0748938b85d">notifier_run()</a>, <a class="el" href="mod_2notify_8php.html#a94f9a6a9d4b5fd704baafff0c34f41ae">notify_init()</a>, <a class="el" href="mod_2api_8php.html#a02ae0f60e240dc806b860edb7d582117">oauth_get_client()</a>, <a class="el" href="include_2oembed_8php.html#a98549b9af8140eda3eceaeedcaabc2c2">oembed_fetch_url()</a>, <a class="el" href="onedirsync_8php.html#a411aedd47c57476099647961e6a86691">onedirsync_run()</a>, <a class="el" href="onepoll_8php.html#a72753b2fdec79b37c7f432035c91fb6d">onepoll_run()</a>, <a class="el" href="openid_8php.html#a9a13827dbcf61ae4e45f0b6b33a88f43">openid_content()</a>, <a class="el" href="page_8php.html#a91a5f649f68406149108bded1dc90b22">page_content()</a>, <a class="el" href="permissions_8php.html#a67ada9ed51e77885b6b0f6a28cee1835">perm_is_allowed()</a>, <a class="el" href="security_8php.html#afa683bc025a1d2fe9065e2f6cd71a22f">permissions_sql()</a>, <a class="el" href="photo_8php.html#a582779d24882b0d31ee909a91d70a448">photo_init()</a>, <a class="el" href="text_8php.html#aa5528f41533927e1bd2da3618a74a6d7">photo_new_resource()</a>, <a class="el" href="include_2photos_8php.html#a6c40ef58aefef705a5adc84a40e97109">photo_upload()</a>, <a class="el" href="include_2photos_8php.html#a8e8b7be99e24c2497bc2cb3339280c35">photos_album_exists()</a>, <a class="el" href="include_2photos_8php.html#a7e7abc69872180697c5471dc69349afe">photos_album_get_db_idstr()</a>, <a class="el" href="include_2photos_8php.html#ab0365f25b22ccea5f085fe7c49e1f4ab">photos_album_rename()</a>, <a class="el" href="mod_2photos_8php.html#aa87382611a66ec5effdb2d78f13f5812">photos_content()</a>, <a class="el" href="include_2photos_8php.html#aa27b9e435dcc34e1009f56dc02c7ca51">photos_list_photos()</a>, <a class="el" href="mod_2photos_8php.html#a062bed4d04d14fee8a53f4c9be673080">photos_post()</a>, <a class="el" href="ping_8php.html#a77217b1b190b4c5d8770867b45f0c0a1">ping_init()</a>, <a class="el" href="plugin_8php.html#a855c4fdb38c0fc2714d537752a4347f9">plugin_is_installed()</a>, <a class="el" href="poco_8php.html#a53def16f75e3d41f1d2bb7cfa4905498">poco_init()</a>, <a class="el" href="socgraph_8php.html#a5ef8bef37161df53718a21e93d02fbd6">poco_load()</a>, <a class="el" href="poller_8php.html#a5f12df3a4738124b6c039971e87e76da">poller_run()</a>, <a class="el" href="post_8php.html#af4b48181ce773ef0cdfc972441445c34">post_init()</a>, <a class="el" href="post_8php.html#af59e6a1dc22d19d9257b01cd7ccedb75">post_post()</a>, <a class="el" href="include_2message_8php.html#aed272d77c06a309e2836ac79e75613f1">private_messages_drop()</a>, <a class="el" href="include_2message_8php.html#a5f8de9847e203329e317ac38dc646898">private_messages_fetch_conversation()</a>, <a class="el" href="include_2message_8php.html#a254a756031e4d5e94f85e2939bdb5091">private_messages_fetch_message()</a>, <a class="el" href="include_2message_8php.html#a652973ce47a262f2d238c2fd6233d97e">private_messages_list()</a>, <a class="el" href="zot_8php.html#ac301c67864917c35922257950ae0f95c">process_channel_sync_delivery()</a>, <a class="el" href="zot_8php.html#a4d9e6ca295e443b740d9960c304b3474">process_delivery()</a>, <a class="el" href="zot_8php.html#aa6ae96db8cbbdbb10e6876d206bbf7cc">process_mail_delivery()</a>, <a class="el" href="zot_8php.html#a9a57b40669351c9791126b925cb7ef3b">process_profile_delivery()</a>, <a class="el" href="profile_8php.html#ab5d0246be0552e2182a585c1206d22a5">profile_init()</a>, <a class="el" href="identity_8php.html#a4751b522ea913d0e7ed43e03d22e9e68">profile_load()</a>, <a class="el" href="profile__photo_8php.html#a4b80234074bd603221aa5364f330e479">profile_photo_post()</a>, <a class="el" href="profile__photo_8php.html#a561103564199da56e58061a4196eb102">profile_photo_set_profile_perms()</a>, <a class="el" href="profiles_8php.html#a36f71405ad536228f8bb84a551b23f7e">profiles_init()</a>, <a class="el" href="profiles_8php.html#ab0362c81b1d3b0b12a772b9fac446e04">profiles_post()</a>, <a class="el" href="profperm_8php.html#aef015787de2373d9fb3fe3f814fb5023">profperm_content()</a>, <a class="el" href="hubloc_8php.html#ad3d0dcfcfcb347744f7617fe6f5de002">prune_hub_reinstalls()</a>, <a class="el" href="security_8php.html#ab3bdd30dc60d9ee72370b866aa4a2d01">public_permissions_sql()</a>, <a class="el" href="zot_8php.html#a083aec6c900d244e1bfc1406f9461465">public_recips()</a>, <a class="el" href="classRedFile.html#a41a49a583eb276b75626fcf97f4a699c">RedFile\put()</a>, <a class="el" href="queue_8php.html#af8c93de86d866c3200174c8450a0f341">queue_run()</a>, <a class="el" href="Contact_8php.html#a2f4f495d53f2a334ab75292af79d3c91">rconnect_url()</a>, <a class="el" href="items_8php.html#a4e6d7639431e0dd8e9f4dba8e1ac408b">red_zrl_callback()</a>, <a class="el" href="items_8php.html#a78a60e39f6991bd3324a24dcbf9dac5a">red_zrlify_img_callback()</a>, <a class="el" href="reddav_8php.html#a5df0d09893f2e65dc5cf6bbab6cfb266">RedCollectionData()</a>, <a class="el" href="reddav_8php.html#a9f531641dfb4e43cd88ac1a9ae7e2088">RedFileData()</a>, <a class="el" href="session_8php.html#af230b86bfff7db66c3bdd7e0bbc24052">ref_session_destroy()</a>, <a class="el" href="session_8php.html#ac95373f4966862a028033dd2f94d4da1">ref_session_gc()</a>, <a class="el" href="session_8php.html#a7f0f50576360d9ba52d29364e0b83a8e">ref_session_read()</a>, <a class="el" href="session_8php.html#ac4461c1984543d3553e73dba2771568f">ref_session_write()</a>, <a class="el" href="plugin_8php.html#a425472c5f3afc137268b2ad45652b209">register_hook()</a>, <a class="el" href="register_8php.html#a51731dcc1917c58a790eb1c0f6132271">register_post()</a>, <a class="el" href="identity_8php.html#a47d6f53216f23a3484061793bef29854">remote_online_status()</a>, <a class="el" href="Contact_8php.html#acc12cda999c88c4d6185cca967c15125">remove_all_xchan_resources()</a>, <a class="el" href="zot_8php.html#aad25a3fe0e1566121d6fb8222979bc10">remove_community_tag()</a>, <a class="el" href="queue__fn_8php.html#a8fe71e981399bbf5d000a6ca42f57b24">remove_queue_item()</a>, <a class="el" href="rmagic_8php.html#a95455edd43f1bff39446a57388cdde16">rmagic_init()</a>, <a class="el" href="rmagic_8php.html#a869de069d081b3c4e98b957d06bbf08f">rmagic_post()</a>, <a class="el" href="rpost_8php.html#a8190354d789000806d9879aea276728f">rpost_content()</a>, <a class="el" href="classphoto__driver.html#a5864fae7d8389372955a8e78cec527ac">photo_driver\save()</a>, <a class="el" href="search__ac_8php.html#a14f90c83a3f2be095e9e2992a8d66138">search_ac_init()</a>, <a class="el" href="search_8php.html#ab2568591359edde5b483a6cd9a24b2cc">search_content()</a>, <a class="el" href="include_2message_8php.html#a751ffd6635022b2190f56154ee745752">send_message()</a>, <a class="el" href="account_8php.html#a014de2d5d5c9785de5bf547a485822fa">send_reg_approval_email()</a>, <a class="el" href="items_8php.html#aab9e0c58247427126de0699c729c3b6c">send_status_notifications()</a>, <a class="el" href="classCache.html#ae622b82adc1c2fb1f3e2cc4fd9688fce">Cache\set()</a>, <a class="el" href="include_2config_8php.html#ad6da879e4fb5b37d1e161d4e9be5c32a">set_config()</a>, <a class="el" href="include_2config_8php.html#a61591371cb18764138655d67dc817ab2">set_pconfig()</a>, <a class="el" href="include_2config_8php.html#afe117b70f1bba2f6348d9300b601f86e">set_xconfig()</a>, <a class="el" href="classRedDirectory.html#adc48035679e52c55d9881f83de535553">RedDirectory\setName()</a>, <a class="el" href="classRedFile.html#a38a82bfc1b30028ea6ac75923e90fa25">RedFile\setName()</a>, <a class="el" href="settings_8php.html#aa7ee94d88ac088edb04ccf3a26de3586">settings_post()</a>, <a class="el" href="siteinfo_8php.html#a3efbd0bd6564af19ec0a9ce0294e59d0">siteinfo_init()</a>, <a class="el" href="sources_8php.html#ac442ccef080ab95772d8929fcafcb4b7">sources_content()</a>, <a class="el" href="sources_8php.html#ac73298ff162ce7b2de8dcaf3d3305b1e">sources_post()</a>, <a class="el" href="classphoto__driver.html#a642a8d0c4ad5f887c99c6af77cee287b">photo_driver\store()</a>, <a class="el" href="taxonomy_8php.html#a4ba1339b2a7054971178ce194e4440fd">store_item_tag()</a>, <a class="el" href="security_8php.html#a3ef2be6a7e4928e39d50059d6feb457c">stream_perms_xchans()</a>, <a class="el" href="text_8php.html#a8796f6a9ca592ecdce7b3afc3462aa13">stringify_array_elms()</a>, <a class="el" href="subthread_8php.html#a50368f3d825b77996030528e7fbfa3d3">subthread_content()</a>, <a class="el" href="suggest_8php.html#a696acf1dd8070e479adcc80c63c6718c">suggest_init()</a>, <a class="el" href="dir__fns_8php.html#aa666e7df6ca8c332f4081c9b66b4bdf6">sync_directories()</a>, <a class="el" href="items_8php.html#ab1bce4261bcf75ad62753b498a144d17">tag_deliver()</a>, <a class="el" href="tagger_8php.html#a0e4a3eb177d1684553c547503d67161c">tagger_content()</a>, <a class="el" href="tagrm_8php.html#a1702f40aa53a2fa93deade1f609abe78">tagrm_post()</a>, <a class="el" href="taxonomy_8php.html#a7a913d19c77610da689be48fbbf6734c">term_query()</a>, <a class="el" href="items_8php.html#a88c6cf7649ac836fbbed82a7a0315110">tgroup_check()</a>, <a class="el" href="thing_8php.html#a24a35f1e64029a67fdbea94a776ae04b">thing_content()</a>, <a class="el" href="thing_8php.html#a8be23b1d475ec3d9291999221c674c80">thing_init()</a>, <a class="el" href="bbcode_8php.html#a39de4de32a9456d1ca914d0dc52bd322">tryzrlaudio()</a>, <a class="el" href="bbcode_8php.html#aa92f119341f4c69dcef2768a013079b8">tryzrlvideo()</a>, <a class="el" href="plugin_8php.html#a093a9cb98f51e3643634bd8bc6ed6e76">uninstall_plugin()</a>, <a class="el" href="plugin_8php.html#a56f71fe5adf9586ce950523d8180443e">unregister_hook()</a>, <a class="el" href="datetime_8php.html#af1cd77c97c901d9239cb7a61f97f9826">update_birthdays()</a>, <a class="el" href="dir__fns_8php.html#a44062d4b471d1e83f92f6c184585aa13">update_directory_entry()</a>, <a class="el" href="zot_8php.html#ab319d1d9fff9c7775d9daef42d1f33dd">update_modtime()</a>, <a class="el" href="queue__fn_8php.html#a4c2876181f75a4a61e85b7f00dfdbba1">update_queue_time()</a>, <a class="el" href="items_8php.html#a2baa9e05f1e8aa3dd61c85803ae39bd6">update_remote_id()</a>, <a class="el" href="account_8php.html#ac5c570a2d46446bad4dd2501e9c5a4b1">user_allow()</a>, <a class="el" href="account_8php.html#ad07be417ac7eda939768804106ddea3d">user_approve()</a>, <a class="el" href="account_8php.html#ac1653efba62493b9d87513e1b6c04c83">user_deny()</a>, <a class="el" href="classRedBasicAuth.html#a8dfd9a0953f8884723b421b7c1acf79b">RedBasicAuth\validateUserPass()</a>, <a class="el" href="Contact_8php.html#a6348a532c9d26cd1c9afbc9aa6aa8960">vcard_from_xchan()</a>, <a class="el" href="account_8php.html#acd6b8d2124ba5ea4f4794d2c58ae8bf5">verify_email_address()</a>, <a class="el" href="vote_8php.html#a57a9516ee1b923b224e66dcc47377fb2">vote_post()</a>, <a class="el" href="webpages_8php.html#af3b7397d4abc153e3d2147740ee1a41d">webpages_content()</a>, <a class="el" href="wfinger_8php.html#ae21e50c8d0a5f3c9be9f43a4e519acd3">wfinger_init()</a>, <a class="el" href="widgets_8php.html#a0e2f5179ed1a73b282dfda7270fcabb3">widget_bookmarkedchats()</a>, <a class="el" href="widgets_8php.html#a313a8d10ab81c71357c12e67e4d7efd5">widget_item()</a>, <a class="el" href="widgets_8php.html#a94203eb9bcd63cbdecbbcb15163598d8">widget_savedsearch()</a>, <a class="el" href="xchan_8php.html#a9853348bf1a35c644460221ba75edc2d">xchan_content()</a>, <a class="el" href="text_8php.html#a543447c5ed766535221e2d9636b379ee">xchan_mail_query()</a>, <a class="el" href="text_8php.html#a36a2e5d418ee81140f25c4233cfecd1f">xchan_query()</a>, <a class="el" href="xrd_8php.html#aee3cf087968e4a0ff3a87de16eb23270">xrd_init()</a>, <a class="el" href="include_2attach_8php.html#aeb07968990e66a88c95483ca09a7f909">z_readdir()</a>, <a class="el" href="zfinger_8php.html#a8139b83a22ef98869adc10aa224027a0">zfinger_init()</a>, <a class="el" href="identity_8php.html#a680fbafc2db023c5b1309e0180e81315">zid_init()</a>, <a class="el" href="items_8php.html#a004e89d86b0f29b2c4da20108ecc4091">zot_feed()</a>, <a class="el" href="zot_8php.html#a95528377d7303131958c9f0b7158fdce">zot_finger()</a>, <a class="el" href="zot_8php.html#ae7cec2b417b5858fd4a41070f843d1d7">zot_get_hublocs()</a>, <a class="el" href="zot_8php.html#a55056e863a7860bc0cf922e78fcce073">zot_gethub()</a>, <a class="el" href="zot_8php.html#a928f5643ca66ae9635d85aeb2be62e03">zot_process_response()</a>, <a class="el" href="zot_8php.html#a7ac30ff51274bf0b6d3eade37972145c">zot_refresh()</a>, and <a class="el" href="zotfeed_8php.html#a24dfc23d366e7f840cf2847d0c1c8eac">zotfeed_init()</a>.</p>
+<p>Escape strings being passed to DB queries. </p>
+<p>Always escape strings being used in DB queries. This function returns the escaped string. Integer DB parameters should all be proven integers by wrapping with intval().</p>
+<dl class="params"><dt>Parameters</dt><dd>
+ <table class="params">
+ <tr><td class="paramtype">string</td><td class="paramname">$str</td><td>A string to pass to a DB query </td></tr>
+ </table>
+ </dd>
+</dl>
+<dl class="section return"><dt>Returns</dt><dd>Return an escaped string of the value to pass to a DB query. </dd></dl>
+
+<p>Referenced by <a class="el" href="Contact_8php.html#a024919623a830e8703ac4f23496dd66c">abook_toggle_flag()</a>, <a class="el" href="auth_8php.html#a07bae0e623e2daa9ee2cd5a8aa294dee">account_verify_password()</a>, <a class="el" href="achievements_8php.html#a35ae04ada0e227d19671f289a32fb30e">achievements_content()</a>, <a class="el" href="acl_8php.html#ac6776dba871806ecdb5d1659bc2eb07a">acl_init()</a>, <a class="el" href="items_8php.html#a81565acf729e629e588d823308448e3c">add_source_route()</a>, <a class="el" href="admin_8php.html#a278289bc6d45f6f2a272a7ab6a1d1057">admin_page_profs_post()</a>, <a class="el" href="admin_8php.html#a62f10f90c47686c9c3c37c4c03a108d2">admin_page_users()</a>, <a class="el" href="identity_8php.html#aa870d2c1f558cfd52bef05bc124e8fa4">advanced_profile()</a>, <a class="el" href="zot_8php.html#a703f528ade8382cf374e4119bd6f7859">allowed_public_recips()</a>, <a class="el" href="include_2api_8php.html#a0991f72554f821255397d615e76f3203">api_direct_messages_new()</a>, <a class="el" href="include_2api_8php.html#aa40bae797bcd9ccacffdce5a3b5a1afa">api_get_user()</a>, <a class="el" href="include_2api_8php.html#afe534f826e4282b72d66e8cadca7bb73">api_login()</a>, <a class="el" href="include_2api_8php.html#a645397787618b5c548a31e8686e8cca4">api_status_show()</a>, <a class="el" href="include_2api_8php.html#ad4c29f43418f6110f85a6b3998239ab4">api_statuses_destroy()</a>, <a class="el" href="include_2api_8php.html#a8b25a186bd0893f51aa72a62f655735e">api_statuses_mentions()</a>, <a class="el" href="include_2api_8php.html#afb99daa6b731bf497b81f2128084852c">api_user()</a>, <a class="el" href="include_2api_8php.html#abe8e929e93f7ab134b1cb1fb30f19a76">api_users_show()</a>, <a class="el" href="include_2apps_8php.html#a6b472df85ed875e7ae75642cece5206f">app_destroy()</a>, <a class="el" href="include_2apps_8php.html#a1adcd1aff4d36ad0277daca9f3d2bbe2">app_installed()</a>, <a class="el" href="include_2apps_8php.html#a15626f24069c18816f7cdaf4735f58f9">app_store()</a>, <a class="el" href="include_2apps_8php.html#aeab6a62d2f3dfaa86ed043a006305f46">app_update()</a>, <a class="el" href="appman_8php.html#af48805ac2f6f123f2681a8ae1c6f123f">appman_content()</a>, <a class="el" href="include_2attach_8php.html#a0d07c5b83d3d54e186f752e571847b36">attach_by_hash()</a>, <a class="el" href="include_2attach_8php.html#ad991208ce939387e2f93a3bce7d09932">attach_by_hash_nodata()</a>, <a class="el" href="include_2attach_8php.html#a5c0875eafb8c0f8a0620ff7a875a2221">attach_change_permissions()</a>, <a class="el" href="include_2attach_8php.html#a887d2d44a3ef18dcb6624e7fb58dc8e3">attach_count_files()</a>, <a class="el" href="include_2attach_8php.html#a70bd666e080c2af5a91f5d14c297b8cd">attach_delete()</a>, <a class="el" href="include_2attach_8php.html#a3634af95f11a023dd8e882c3c7a3600d">attach_list_files()</a>, <a class="el" href="include_2attach_8php.html#ab6830b3ab74a5d284876141ac80f6cbc">attach_mkdir()</a>, <a class="el" href="include_2attach_8php.html#a84a8a64c4805e1525b42d4add464833f">attach_store()</a>, <a class="el" href="security_8php.html#adc7bf51e3b8d67bd80e9348f9ab03733">authenticate_success()</a>, <a class="el" href="bb2diaspora_8php.html#aab32042f8bd63552d3fadeeae9eab083">bb2diaspora_itemwallwall()</a>, <a class="el" href="bb2diaspora_8php.html#a5258d2f1addeb0a2a6b54c4f9e7d0f34">bb2dmention_callback()</a>, <a class="el" href="block_8php.html#a8a82a470acdfbc7a8e749509caeeea45">block_content()</a>, <a class="el" href="blocks_8php.html#a2531a8fd51db3cecb2eb20c002c66e12">blocks_content()</a>, <a class="el" href="include_2bookmarks_8php.html#aef1cb2968c41c759f2d106e1088ca323">bookmark_add()</a>, <a class="el" href="mod_2bookmarks_8php.html#a6b7942f3d27e40f0f47c88704127b9b3">bookmarks_init()</a>, <a class="el" href="zot_8php.html#aa97b33b619dd7132a9274f852af6ceb5">build_sync_packet()</a>, <a class="el" href="plugin_8php.html#a7f05de16c0a32602853b09b99dd85e7c">call_hooks()</a>, <a class="el" href="contact__widgets_8php.html#a165eb021e61c4dcab2a552f28628d353">categories_widget()</a>, <a class="el" href="security_8php.html#a8d23d2597aae380a3341872fe9513380">change_channel()</a>, <a class="el" href="channel_8php.html#a9c6a6179e0e626398ebecc6151905ef1">channel_content()</a>, <a class="el" href="Contact_8php.html#a4e8af0f0525161da74583c04b8b03097">channel_remove()</a>, <a class="el" href="Contact_8php.html#a483cda56f9e37c3a4a8773dcdfeb0258">channelx_by_hash()</a>, <a class="el" href="Contact_8php.html#a3a0844dac1e86d523de5d2f432cfeebc">channelx_by_n()</a>, <a class="el" href="Contact_8php.html#a87e699f74a1102b25e8aa0432d86a91e">channelx_by_nick()</a>, <a class="el" href="chanview_8php.html#a4192c6da888c8c1165851acf9ad4cb8b">chanview_content()</a>, <a class="el" href="include_2chat_8php.html#acea6b176eb7aff44d9ba3ae24ce511d3">chat_message()</a>, <a class="el" href="mod_2chat_8php.html#a999d594745597c656c9760253ae297ad">chat_post()</a>, <a class="el" href="include_2chat_8php.html#acdc80dba4eb796c7472b21129b435422">chatroom_create()</a>, <a class="el" href="include_2chat_8php.html#a2ba3af6884ecdce95de69262fe599639">chatroom_destroy()</a>, <a class="el" href="include_2chat_8php.html#a2c95b545e46bfee64faa05ecf0afea91">chatroom_enter()</a>, <a class="el" href="include_2chat_8php.html#a1ee1360f7d2549c7549ae07cb5190f0f">chatroom_leave()</a>, <a class="el" href="chatsvc_8php.html#a7032784215e1f6747cf385a6598770f9">chatsvc_content()</a>, <a class="el" href="chatsvc_8php.html#a7c9a9b9c24a2b02eed8efd6b09632d03">chatsvc_post()</a>, <a class="el" href="account_8php.html#ae052bd5558847bd38e89c213561a9771">check_account_email()</a>, <a class="el" href="account_8php.html#aaff7720423417a4333697894ffd9ddeb">check_account_invite()</a>, <a class="el" href="items_8php.html#a87ac9e359591721a824ecd23bbb56296">check_item_source()</a>, <a class="el" href="dir__fns_8php.html#a2f7d74bb2aea8bcd2537aee5c6708a16">check_upstream_directory()</a>, <a class="el" href="text_8php.html#a0c65597bb4aed3a039eb795ff540e5e3">check_webbie()</a>, <a class="el" href="classCache.html#ab14d0f4bdf7116a94d545c574b38f568">Cache\clear()</a>, <a class="el" href="comanche_8php.html#a5a7ab801717d38e91ac910b933973887">comanche_block()</a>, <a class="el" href="socgraph_8php.html#a7d34cd58025bcd9e575282f44db75918">common_friends()</a>, <a class="el" href="connect_8php.html#ad46a38f32fd7a3d324b1fa26373efa36">connect_init()</a>, <a class="el" href="connect_8php.html#a417ec27afe33f21a929667a665e32ee2">connect_post()</a>, <a class="el" href="connections_8php.html#aec2e457420fce3e3bf6a9f48e36df25c">connections_content()</a>, <a class="el" href="connections_8php.html#a1224058db8e3fb56463eb312f98e561d">connections_post()</a>, <a class="el" href="connedit_8php.html#a234c48426b652bf4d37053f2af329ac5">connedit_post()</a>, <a class="el" href="items_8php.html#adc26e08aa61f5666da04ab5d2a9d68a6">consume_feed()</a>, <a class="el" href="Contact_8php.html#a28e062c884331dbb5dfa713228c25ad6">contact_remove()</a>, <a class="el" href="contactgroup_8php.html#a18c7391b1b25debaf98c9dba639caab3">contactgroup_content()</a>, <a class="el" href="socgraph_8php.html#a887d576f21fd708132a06d0f72f90f84">count_common_friends()</a>, <a class="el" href="account_8php.html#a141fe579c351c78209d425473f978eb5">create_account()</a>, <a class="el" href="identity_8php.html#a345f4c943d84de502ec6e72d2c813945">create_identity()</a>, <a class="el" href="classRedMatrix_1_1RedDAV_1_1RedDirectory.html#a58e750256cdc2f0f79fbe8d5463ffefe">RedMatrix\RedDAV\RedDirectory\createFile()</a>, <a class="el" href="include_2config_8php.html#a549910227348003efc3c05c9105c42da">del_config()</a>, <a class="el" href="include_2config_8php.html#a7ad2081c5f812ac4387fd76f3762d941">del_pconfig()</a>, <a class="el" href="include_2config_8php.html#a9c171def547deee16738dc58fdeb4b72">del_xconfig()</a>, <a class="el" href="delegate_8php.html#a943eea8996ef348eb845c498f9f354dd">delegate_content()</a>, <a class="el" href="zot_8php.html#adfeb9400ae6b726beec89f8f1e8fde72">delete_imported_item()</a>, <a class="el" href="items_8php.html#aac8c9eb4338e2a996c43914392c6cfdb">delete_item_lowlevel()</a>, <a class="el" href="deliver_8php.html#a397afcb9afecf0c1816b0951189dd346">deliver_run()</a>, <a class="el" href="diaspora_8php.html#a006731620a5242d410358b32678e48e3">diaspora_asphoto()</a>, <a class="el" href="diaspora_8php.html#a0fb2abe304aae19efc040a5e6b917829">diaspora_comment()</a>, <a class="el" href="diaspora_8php.html#adef30b6fac948baedcc7194d5d155b5f">diaspora_conversation()</a>, <a class="el" href="diaspora_8php.html#ab99505944728d46585b8312989de533d">diaspora_dispatch_public()</a>, <a class="el" href="diaspora_8php.html#aa8e551a53fcce34be3942d0c3e20d1f4">diaspora_get_contact_by_handle()</a>, <a class="el" href="diaspora_8php.html#a5ed66b910d7b0284f9b3ee04e72306ff">diaspora_handle_from_contact()</a>, <a class="el" href="diaspora_8php.html#a5d57518545baa31cf8a85a937a267681">diaspora_like()</a>, <a class="el" href="bb2diaspora_8php.html#a4a27604f0745f1efda672966aaca9a3b">diaspora_mention_callback()</a>, <a class="el" href="diaspora_8php.html#a7cff2f8f11044c1b3a360f20e1bbee46">diaspora_message()</a>, <a class="el" href="diaspora_8php.html#a71fe9bb66626b4197ae018a230778bb2">diaspora_photo()</a>, <a class="el" href="diaspora_8php.html#a20b968d64ef26afe5cb0cc75a7570a31">diaspora_post()</a>, <a class="el" href="diaspora_8php.html#a131abd521b218d6ae6f7d2917d8b2605">diaspora_process_outbound()</a>, <a class="el" href="diaspora_8php.html#ac1ab782a34552a7c6b4dc961754ed598">diaspora_request()</a>, <a class="el" href="diaspora_8php.html#a2bf43f6b5890897f425ef4325d34b007">diaspora_reshare()</a>, <a class="el" href="diaspora_8php.html#a938c7ee808d38725c0988fa6006805b9">diaspora_retraction()</a>, <a class="el" href="diaspora_8php.html#af4698b165766f83d89ec1ea964bc92cc">diaspora_send_followup()</a>, <a class="el" href="diaspora_8php.html#ae6f52efd81fe515cd9912bc8293abf5b">diaspora_send_images()</a>, <a class="el" href="diaspora_8php.html#a0b3628a5e53332c3d3196b689fe2b94d">diaspora_send_relay()</a>, <a class="el" href="diaspora_8php.html#a69f250b078a46e405647428ec3399a16">diaspora_share()</a>, <a class="el" href="diaspora_8php.html#aa34d2748bb97e9e193cacd572f335055">diaspora_signed_retraction()</a>, <a class="el" href="diaspora_8php.html#aa704d6aa2ac77be345c0f501168e6e56">diaspora_transmit()</a>, <a class="el" href="dirsearch_8php.html#ab6d5fefa98da249a994b910434a669c2">dir_flag_build()</a>, <a class="el" href="dirsearch_8php.html#a52bcac49b0e35cc8c6b70066143c2ee2">dir_query_build()</a>, <a class="el" href="mod_2directory_8php.html#a5ee59c213508b6b9787612a8219cb5bf">directory_init()</a>, <a class="el" href="include_2directory_8php.html#aa75d3b0697ca1456aaabdb37a74aa0f0">directory_run()</a>, <a class="el" href="dirsearch_8php.html#aa1fb04e1de4f25b63349ac78f94ceb4c">dirsearch_content()</a>, <a class="el" href="include_2network_8php.html#a5176176ddc1906d91f186df6fbd87b48">discover_by_url()</a>, <a class="el" href="include_2network_8php.html#a63e62946e194928eb17c5a9f2bbef0fe">discover_by_webbie()</a>, <a class="el" href="display_8php.html#a37137c98d47bf3306f4c2bb9f5b60de0">display_content()</a>, <a class="el" href="account_8php.html#a0d183a3cb4c67a0f5e906811df7a1fc9">downgrade_accounts()</a>, <a class="el" href="editblock_8php.html#abbe8f55de06967bc8d79d620509a49e6">editblock_content()</a>, <a class="el" href="editlayout_8php.html#aa877e4157a26b099de904164181dd386">editlayout_content()</a>, <a class="el" href="editpost_8php.html#a34011690864d122680c802e9e748ccfb">editpost_content()</a>, <a class="el" href="editwebpage_8php.html#a375e945255fad79a71036528f7480650">editwebpage_content()</a>, <a class="el" href="event_8php.html#ac9f206819186b65952ac1869f0da8c6e">event_addtocal()</a>, <a class="el" href="event_8php.html#af5ac41e7ea3f7131088fe6333fd2846c">event_store_event()</a>, <a class="el" href="event_8php.html#a7378e839ac3de9d55579eb3ec48eaf92">event_store_item()</a>, <a class="el" href="events_8php.html#a1d293fb217ae6bc9e3858c4b32e363ec">events_content()</a>, <a class="el" href="events_8php.html#ab3e8a8f901175f8e40a8089eea45c075">events_post()</a>, <a class="el" href="externals_8php.html#a4df44079e6f915286088b7a0d44db926">externals_run()</a>, <a class="el" href="fbrowser_8php.html#aee476addcf7a3e0fe9454f7dfd5a56c4">fbrowser_content()</a>, <a class="el" href="feed_8php.html#af86137700b56f33d1d5f25c8dec22c04">feed_init()</a>, <a class="el" href="items_8php.html#adf980098b6de9c3993bc3ff26a8dd6f9">fetch_post_tags()</a>, <a class="el" href="taxonomy_8php.html#a163b5131f388080b0fc82398d3a32fe1">file_tag_file_query()</a>, <a class="el" href="filerm_8php.html#ae2eb28d2054fa2c37e38689882172208">filerm_content()</a>, <a class="el" href="filestorage_8php.html#a61bb1be78472555df4ce619f51014040">filestorage_content()</a>, <a class="el" href="items_8php.html#a8cda98925a4c5c2f6dade70d9586d79a">filter_insecure()</a>, <a class="el" href="diaspora_8php.html#aade0c165fcdded71352c7a67bf6ce37b">find_diaspora_person_by_handle()</a>, <a class="el" href="include_2attach_8php.html#a4dbfd7e1cef52aa9ef52f4b88929fa86">find_filename_by_hash()</a>, <a class="el" href="include_2attach_8php.html#a052f14487ff2ce72f62a09fac8d7e997">find_folder_hash_by_attach_hash()</a>, <a class="el" href="classRedMatrix_1_1RedDAV_1_1RedBrowser.html#ad4bc0516533c62733f38043a37267d78">RedMatrix\RedDAV\RedBrowser\findAttachHash()</a>, <a class="el" href="classRedMatrix_1_1RedDAV_1_1RedBrowser.html#a0733e38e254474d9a456825e72f1ddfd">RedMatrix\RedDAV\RedBrowser\findAttachIdByHash()</a>, <a class="el" href="item_8php.html#a7b63a9d0cd02096e17dcf11f4afa7c10">fix_attached_photo_permissions()</a>, <a class="el" href="items_8php.html#aba98fcbbcd7044a7e9ea34edabc14c87">fix_private_photos()</a>, <a class="el" href="boot_8php.html#aca5e42678e178c6b9034610d66666fd7">fix_system_urls()</a>, <a class="el" href="fsuggest_8php.html#a61ecfe10ce937ed526614f8fd3de3c7d">fsuggest_post()</a>, <a class="el" href="classCache.html#a70392b109331897bf9fdd7f1960e21de">Cache\get()</a>, <a class="el" href="classRedMatrix_1_1RedDAV_1_1RedFile.html#a7241beecd01f5bb4e74659863dd85bd8">RedMatrix\RedDAV\RedFile\get()</a>, <a class="el" href="permissions_8php.html#aeca9b280f3dc3358c89976d81d690008">get_all_perms()</a>, <a class="el" href="identity_8php.html#ad2c97627a313d53df1a1c7b4215ddb51">get_birthdays()</a>, <a class="el" href="identity_8php.html#ac73b3e13778c564c877554517a7f51ba">get_channel_by_nick()</a>, <a class="el" href="include_2attach_8php.html#a6aa00ea010ea030110faefb75eafc1ce">get_cloudpath()</a>, <a class="el" href="include_2config_8php.html#af08b7adb63adfb2eda7c466fba0cce74">get_config_from_storage()</a>, <a class="el" href="identity_8php.html#ae381db3d43f8e7c1da8b15d14ecf5312">get_events()</a>, <a class="el" href="items_8php.html#a536d0313b6ffe33b9d2490c4e25c5361">get_item_elements()</a>, <a class="el" href="identity_8php.html#a332df795f684788002f5a6424abacfd7">get_online_status()</a>, <a class="el" href="taxonomy_8php.html#a7747fa859ac56fbffd4f9782d85505de">get_things()</a>, <a class="el" href="classRedMatrix_1_1RedDAV_1_1RedDirectory.html#a825dc5f3e0f83f50736c16daa6a4809d">RedMatrix\RedDAV\RedDirectory\getDir()</a>, <a class="el" href="classRedMatrix_1_1RedDAV_1_1RedDirectory.html#a69db5f641f8f5dc999e55cee1832ecd5">RedMatrix\RedDAV\RedDirectory\getLastModified()</a>, <a class="el" href="gprobe_8php.html#adf72cb0a70b5b9d99fdec1cc60e18ed1">gprobe_run()</a>, <a class="el" href="include_2group_8php.html#a06ec565d2b64e79044e7c1bf91a2a4ce">group_add()</a>, <a class="el" href="include_2group_8php.html#a0122ef312df2c5546b1a46b3e6c7b31b">group_add_member()</a>, <a class="el" href="include_2group_8php.html#abd66a5ea34a07a3422dc2dde6c7b3ecb">group_byname()</a>, <a class="el" href="mod_2group_8php.html#a07a64f6c65b0080d8190b3d9728a7a83">group_content()</a>, <a class="el" href="mod_2group_8php.html#aed1f009b1221348021bb34761160ef35">group_post()</a>, <a class="el" href="include_2group_8php.html#a90e157b3e1b99c981809cb5a2abd3245">group_rec_byhash()</a>, <a class="el" href="include_2group_8php.html#a4118f498bbd1530c1d0136d016d197a5">group_rmv()</a>, <a class="el" href="include_2group_8php.html#a540e3ef36f47d47532646be4241f6518">group_rmv_member()</a>, <a class="el" href="include_2group_8php.html#afb802ae2ce73aae4bc36d157f7b6a92f">groups_containing()</a>, <a class="el" href="items_8php.html#a52c24114b73c0bdb605a03cd29712223">handle_feed()</a>, <a class="el" href="text_8php.html#aa22feef4de326e1d7078dedd892e615c">handle_tag()</a>, <a class="el" href="hcard_8php.html#ac34f26b0e6a37eef44fa49bea135136d">hcard_init()</a>, <a class="el" href="home_8php.html#a6e3dbf78f4ed74ab2577de221190b33f">home_content()</a>, <a class="el" href="hubloc_8php.html#ad86214b3a74084bd7b54e8d6c919ce4d">hubloc_change_primary()</a>, <a class="el" href="impel_8php.html#ab7db6fca43b42ea4332cb3e841b3cf7b">impel_init()</a>, <a class="el" href="items_8php.html#a2c3f97b2109c05df86d97449b3c78ebc">import_author_diaspora()</a>, <a class="el" href="items_8php.html#a6bee35961f2e32905f20367a9309d627">import_author_rss()</a>, <a class="el" href="items_8php.html#a37f79991f36811cf847446ff60e8e11f">import_author_unknown()</a>, <a class="el" href="zot_8php.html#ad149f1e98c0c5b88ff9147e6ee3f330d">import_author_zot()</a>, <a class="el" href="zot_8php.html#a3bf11286c2619b4ca28e49d5b5ab374a">import_directory_keywords()</a>, <a class="el" href="zot_8php.html#a20750dd2c36961013fd382fb34e1366c">import_directory_profile()</a>, <a class="el" href="import_8php.html#af17fef0410518f7eac205d0ea416eaa2">import_post()</a>, <a class="el" href="photo__driver_8php.html#a78f5a10c568d2a9bbbb129dc96548887">import_profile_photo()</a>, <a class="el" href="zot_8php.html#a2657e141d62d5f67ad3c87651b585299">import_site()</a>, <a class="el" href="zot_8php.html#a528e97ca5d69c3b7f35c5d954afde315">import_xchan()</a>, <a class="el" href="plugin_8php.html#a482131013272a1d5d5c1b1469c6c55d5">install_plugin()</a>, <a class="el" href="invite_8php.html#aeb0881c0f93c8e8552e5ed756ce6e5a5">invite_post()</a>, <a class="el" href="hubloc_8php.html#aebd244b4616ded022cbbee5e82926951">is_matrix_url()</a>, <a class="el" href="items_8php.html#a02ca33c31ed535d24894f8a9a91ce9df">item_add_cid()</a>, <a class="el" href="text_8php.html#aa6b0aa8afbeab50d1a3058ad21acb74e">item_message_id()</a>, <a class="el" href="security_8php.html#a9355488460ab11d6058656ff919e5cf9">item_permissions_sql()</a>, <a class="el" href="item_8php.html#a693cd09805755ab85bbb5ecae69a48c3">item_post()</a>, <a class="el" href="items_8php.html#a5ed782ff5b9cf050bec931e06de12c00">item_remove_cid()</a>, <a class="el" href="items_8php.html#a2541e6861a56d145c9281877cc501615">item_store()</a>, <a class="el" href="items_8php.html#acf0bf7c9d21ac84f32effb754f7ad484">item_store_update()</a>, <a class="el" href="items_8php.html#a756738301f2ed96be50232500677d58a">items_fetch()</a>, <a class="el" href="layouts_8php.html#a6e0193759ad9eef76d3df2db24237b50">layouts_content()</a>, <a class="el" href="like_8php.html#a9d7dd268f21c21e9d29dd2aca2dd9538">like_content()</a>, <a class="el" href="dirsearch_8php.html#a985d410a170549429857af6ff2673149">list_public_sites()</a>, <a class="el" href="include_2config_8php.html#a27559f388c9b9af81c94e48d6889d1d1">load_config()</a>, <a class="el" href="plugin_8php.html#a9ca9632b7309a65b05c03a3e2f473a3d">load_plugin()</a>, <a class="el" href="include_2config_8php.html#aee4b619839cf4b64220f34edf5c67b52">load_xconfig()</a>, <a class="el" href="dir__fns_8php.html#acd37b17dce3bdec6d5a6344a20598c1e">local_dir_update()</a>, <a class="el" href="lockview_8php.html#a851e26ab9a1008df5c5ebebea31e9b44">lockview_content()</a>, <a class="el" href="locs_8php.html#a6c900f53970c0d0e738d2fe06d27ca44">locs_content()</a>, <a class="el" href="locs_8php.html#a6b43654592919ac863d67a1f787a69b9">locs_post()</a>, <a class="el" href="classFKOAuthDataStore.html#a1148d47b546350bf440bdd92792c5df1">FKOAuthDataStore\lookup_consumer()</a>, <a class="el" href="classFKOAuthDataStore.html#a4edfe2e77ecd2e16ff6b5eb516ed3599">FKOAuthDataStore\lookup_nonce()</a>, <a class="el" href="classFKOAuthDataStore.html#a96f76387c3a93b0abe27a98013804bab">FKOAuthDataStore\lookup_token()</a>, <a class="el" href="lostpass_8php.html#a0314d94e48c789b1b3a201d740c9eab3">lostpass_content()</a>, <a class="el" href="lostpass_8php.html#a8ed35ba71a4404eaf4903da61d0321cc">lostpass_post()</a>, <a class="el" href="magic_8php.html#acea2cc792849ca2d71d4b689f66518bf">magic_init()</a>, <a class="el" href="mail_8php.html#a3c7c485fc69f92371e8b20936040eca1">mail_content()</a>, <a class="el" href="items_8php.html#a77da7ce9a117601d49ac4a67c71b514f">mail_store()</a>, <a class="el" href="manage_8php.html#a2bca247b5296827638959138367db4f5">manage_content()</a>, <a class="el" href="Contact_8php.html#a08845ce8c5b997d5edac38ae7118b5c8">mark_orphan_hubsxchans()</a>, <a class="el" href="auth_8php.html#a69fa663e6baf65f80d1b114ad72615f2">match_openid()</a>, <a class="el" href="include_2group_8php.html#a048f6892bfd28852de1b76470df411de">member_of()</a>, <a class="el" href="include_2menu_8php.html#add35fae5e9695031b3d46e30ac409eb8">menu_add_item()</a>, <a class="el" href="include_2menu_8php.html#a08a800821721781a8dfffbe31481ff98">menu_create()</a>, <a class="el" href="include_2menu_8php.html#a3884bda4d85d84ec99447db9403a68d8">menu_delete()</a>, <a class="el" href="include_2menu_8php.html#a6a33c6a3db2a7510b16cc656edaec571">menu_edit()</a>, <a class="el" href="include_2menu_8php.html#acb66f80ca895a6ccd562b3d9ae7b41aa">menu_edit_item()</a>, <a class="el" href="include_2menu_8php.html#a68ebbf492470c930f652013656f9071d">menu_fetch()</a>, <a class="el" href="include_2menu_8php.html#a32701c4245e78ba9106eef52c08bf33d">menu_list()</a>, <a class="el" href="include_2menu_8php.html#a251bf7e15d21627fd92614198e41c485">menu_list_count()</a>, <a class="el" href="msearch_8php.html#ac80d2a6c0a92e79eec7efbbccd74d9a8">msearch_post()</a>, <a class="el" href="netgrowth_8php.html#a9b87bfc25a7cb11bc7f8e1fdd0310919">netgrowth_content()</a>, <a class="el" href="mod_2network_8php.html#a43f2f29b90c5e29072c561934bc8f8b4">network_content()</a>, <a class="el" href="classFKOAuthDataStore.html#a434882f03e3cdb171ed89e09e337e934">FKOAuthDataStore\new_access_token()</a>, <a class="el" href="include_2follow_8php.html#ae387d4ae097c23d69f3247e7f08140c7">new_contact()</a>, <a class="el" href="session_8php.html#a4c0ead624f95483e386bc80abf570a8f">new_cookie()</a>, <a class="el" href="classFKOAuthDataStore.html#a431b44d70e3da6a8256ab38f710e3050">FKOAuthDataStore\new_request_token()</a>, <a class="el" href="enotify_8php.html#a3e9a9355b243777c488d2a9883908dfc">notification()</a>, <a class="el" href="notifier_8php.html#a568c502f626cff95e344c0748938b85d">notifier_run()</a>, <a class="el" href="mod_2notify_8php.html#a94f9a6a9d4b5fd704baafff0c34f41ae">notify_init()</a>, <a class="el" href="mod_2api_8php.html#a02ae0f60e240dc806b860edb7d582117">oauth_get_client()</a>, <a class="el" href="onedirsync_8php.html#a411aedd47c57476099647961e6a86691">onedirsync_run()</a>, <a class="el" href="onepoll_8php.html#a72753b2fdec79b37c7f432035c91fb6d">onepoll_run()</a>, <a class="el" href="openid_8php.html#a9a13827dbcf61ae4e45f0b6b33a88f43">openid_content()</a>, <a class="el" href="p_8php.html#af9d5530ca0b3dc9409cf591c39e2480e">p_init()</a>, <a class="el" href="page_8php.html#a4d89800c0366a239191b1692c09635cf">page_init()</a>, <a class="el" href="permissions_8php.html#a67ada9ed51e77885b6b0f6a28cee1835">perm_is_allowed()</a>, <a class="el" href="security_8php.html#afa683bc025a1d2fe9065e2f6cd71a22f">permissions_sql()</a>, <a class="el" href="photo_8php.html#a582779d24882b0d31ee909a91d70a448">photo_init()</a>, <a class="el" href="text_8php.html#aa5528f41533927e1bd2da3618a74a6d7">photo_new_resource()</a>, <a class="el" href="include_2photos_8php.html#a6c40ef58aefef705a5adc84a40e97109">photo_upload()</a>, <a class="el" href="include_2photos_8php.html#a8e8b7be99e24c2497bc2cb3339280c35">photos_album_exists()</a>, <a class="el" href="include_2photos_8php.html#a7e7abc69872180697c5471dc69349afe">photos_album_get_db_idstr()</a>, <a class="el" href="include_2photos_8php.html#ab0365f25b22ccea5f085fe7c49e1f4ab">photos_album_rename()</a>, <a class="el" href="mod_2photos_8php.html#aa87382611a66ec5effdb2d78f13f5812">photos_content()</a>, <a class="el" href="include_2photos_8php.html#aa27b9e435dcc34e1009f56dc02c7ca51">photos_list_photos()</a>, <a class="el" href="mod_2photos_8php.html#a062bed4d04d14fee8a53f4c9be673080">photos_post()</a>, <a class="el" href="ping_8php.html#a77217b1b190b4c5d8770867b45f0c0a1">ping_init()</a>, <a class="el" href="plugin_8php.html#a855c4fdb38c0fc2714d537752a4347f9">plugin_is_installed()</a>, <a class="el" href="poco_8php.html#a53def16f75e3d41f1d2bb7cfa4905498">poco_init()</a>, <a class="el" href="socgraph_8php.html#a5ef8bef37161df53718a21e93d02fbd6">poco_load()</a>, <a class="el" href="poll_8php.html#a26be9d4f230cb68f5be326198cfc6c77">poll_post()</a>, <a class="el" href="poller_8php.html#a5f12df3a4738124b6c039971e87e76da">poller_run()</a>, <a class="el" href="post_8php.html#af4b48181ce773ef0cdfc972441445c34">post_init()</a>, <a class="el" href="post_8php.html#af59e6a1dc22d19d9257b01cd7ccedb75">post_post()</a>, <a class="el" href="include_2message_8php.html#aed272d77c06a309e2836ac79e75613f1">private_messages_drop()</a>, <a class="el" href="include_2message_8php.html#a5f8de9847e203329e317ac38dc646898">private_messages_fetch_conversation()</a>, <a class="el" href="include_2message_8php.html#a254a756031e4d5e94f85e2939bdb5091">private_messages_fetch_message()</a>, <a class="el" href="include_2message_8php.html#a652973ce47a262f2d238c2fd6233d97e">private_messages_list()</a>, <a class="el" href="zot_8php.html#ac301c67864917c35922257950ae0f95c">process_channel_sync_delivery()</a>, <a class="el" href="zot_8php.html#a0e3006e7a456b2175a9badc96bc5176d">process_delivery()</a>, <a class="el" href="zot_8php.html#a8eeefdb0dad4c436bea9d1c06c0a7988">process_location_delivery()</a>, <a class="el" href="zot_8php.html#aa6ae96db8cbbdbb10e6876d206bbf7cc">process_mail_delivery()</a>, <a class="el" href="zot_8php.html#a9a57b40669351c9791126b925cb7ef3b">process_profile_delivery()</a>, <a class="el" href="profile_8php.html#ab5d0246be0552e2182a585c1206d22a5">profile_init()</a>, <a class="el" href="identity_8php.html#a4751b522ea913d0e7ed43e03d22e9e68">profile_load()</a>, <a class="el" href="profile__photo_8php.html#a4b80234074bd603221aa5364f330e479">profile_photo_post()</a>, <a class="el" href="profile__photo_8php.html#a561103564199da56e58061a4196eb102">profile_photo_set_profile_perms()</a>, <a class="el" href="profiles_8php.html#a46975783b8b8d70402d51487eb1f0b00">profiles_content()</a>, <a class="el" href="profiles_8php.html#a36f71405ad536228f8bb84a551b23f7e">profiles_init()</a>, <a class="el" href="profiles_8php.html#ab0362c81b1d3b0b12a772b9fac446e04">profiles_post()</a>, <a class="el" href="profperm_8php.html#aef015787de2373d9fb3fe3f814fb5023">profperm_content()</a>, <a class="el" href="hubloc_8php.html#ad3d0dcfcfcb347744f7617fe6f5de002">prune_hub_reinstalls()</a>, <a class="el" href="security_8php.html#ab3bdd30dc60d9ee72370b866aa4a2d01">public_permissions_sql()</a>, <a class="el" href="zot_8php.html#a083aec6c900d244e1bfc1406f9461465">public_recips()</a>, <a class="el" href="classRedMatrix_1_1RedDAV_1_1RedFile.html#a709ec1288d21ddf1353524435ab916f0">RedMatrix\RedDAV\RedFile\put()</a>, <a class="el" href="queue_8php.html#af8c93de86d866c3200174c8450a0f341">queue_run()</a>, <a class="el" href="Contact_8php.html#a2f4f495d53f2a334ab75292af79d3c91">rconnect_url()</a>, <a class="el" href="receive_8php.html#a03d8fa26e77844020ba5602deca7d494">receive_post()</a>, <a class="el" href="reddav_8php.html#a5df0d09893f2e65dc5cf6bbab6cfb266">RedCollectionData()</a>, <a class="el" href="reddav_8php.html#a9f531641dfb4e43cd88ac1a9ae7e2088">RedFileData()</a>, <a class="el" href="session_8php.html#af230b86bfff7db66c3bdd7e0bbc24052">ref_session_destroy()</a>, <a class="el" href="session_8php.html#ac95373f4966862a028033dd2f94d4da1">ref_session_gc()</a>, <a class="el" href="session_8php.html#a7f0f50576360d9ba52d29364e0b83a8e">ref_session_read()</a>, <a class="el" href="session_8php.html#ac4461c1984543d3553e73dba2771568f">ref_session_write()</a>, <a class="el" href="refimport_8php.html#ad97ebb5feda0230a4834e0b3637a0d29">refimport_content()</a>, <a class="el" href="refimport_8php.html#a01a29630fa5e1ce6cd5e1fd75280747c">reflect_comment_store()</a>, <a class="el" href="refimport_8php.html#a6c3e0475fde9fe72ff2492a5e3e5259c">reflect_get_channel()</a>, <a class="el" href="plugin_8php.html#a425472c5f3afc137268b2ad45652b209">register_hook()</a>, <a class="el" href="register_8php.html#a51731dcc1917c58a790eb1c0f6132271">register_post()</a>, <a class="el" href="identity_8php.html#a47d6f53216f23a3484061793bef29854">remote_online_status()</a>, <a class="el" href="Contact_8php.html#acc12cda999c88c4d6185cca967c15125">remove_all_xchan_resources()</a>, <a class="el" href="zot_8php.html#aad25a3fe0e1566121d6fb8222979bc10">remove_community_tag()</a>, <a class="el" href="hubloc_8php.html#a84c79b7be352f62d12fe4fa2c80fc6ea">remove_obsolete_hublocs()</a>, <a class="el" href="queue__fn_8php.html#a8fe71e981399bbf5d000a6ca42f57b24">remove_queue_item()</a>, <a class="el" href="rmagic_8php.html#a95455edd43f1bff39446a57388cdde16">rmagic_init()</a>, <a class="el" href="rmagic_8php.html#a869de069d081b3c4e98b957d06bbf08f">rmagic_post()</a>, <a class="el" href="rpost_8php.html#a8190354d789000806d9879aea276728f">rpost_content()</a>, <a class="el" href="classphoto__driver.html#a5864fae7d8389372955a8e78cec527ac">photo_driver\save()</a>, <a class="el" href="search__ac_8php.html#a14f90c83a3f2be095e9e2992a8d66138">search_ac_init()</a>, <a class="el" href="search_8php.html#ab2568591359edde5b483a6cd9a24b2cc">search_content()</a>, <a class="el" href="include_2message_8php.html#a751ffd6635022b2190f56154ee745752">send_message()</a>, <a class="el" href="account_8php.html#a014de2d5d5c9785de5bf547a485822fa">send_reg_approval_email()</a>, <a class="el" href="items_8php.html#aab9e0c58247427126de0699c729c3b6c">send_status_notifications()</a>, <a class="el" href="classCache.html#ae622b82adc1c2fb1f3e2cc4fd9688fce">Cache\set()</a>, <a class="el" href="include_2config_8php.html#ad6da879e4fb5b37d1e161d4e9be5c32a">set_config()</a>, <a class="el" href="include_2config_8php.html#a61591371cb18764138655d67dc817ab2">set_pconfig()</a>, <a class="el" href="include_2config_8php.html#afe117b70f1bba2f6348d9300b601f86e">set_xconfig()</a>, <a class="el" href="classRedMatrix_1_1RedDAV_1_1RedFile.html#a0350cb4e0327e1f9922869a48ee04f1d">RedMatrix\RedDAV\RedFile\setName()</a>, <a class="el" href="classRedMatrix_1_1RedDAV_1_1RedDirectory.html#a14ac61d31a031d139956763db4e03956">RedMatrix\RedDAV\RedDirectory\setName()</a>, <a class="el" href="settings_8php.html#aa7ee94d88ac088edb04ccf3a26de3586">settings_post()</a>, <a class="el" href="sitelist_8php.html#a665a59bf60f780b40f32c909f4a473b1">sitelist_init()</a>, <a class="el" href="sources_8php.html#ac442ccef080ab95772d8929fcafcb4b7">sources_content()</a>, <a class="el" href="sources_8php.html#ac73298ff162ce7b2de8dcaf3d3305b1e">sources_post()</a>, <a class="el" href="items_8php.html#adf2b8137dc4ad9ec958de2842f16f3c2">start_delivery_chain()</a>, <a class="el" href="classphoto__driver.html#a642a8d0c4ad5f887c99c6af77cee287b">photo_driver\store()</a>, <a class="el" href="items_8php.html#a25221826fa4621f523c68483e3b6af26">store_diaspora_comment_sig()</a>, <a class="el" href="taxonomy_8php.html#a4ba1339b2a7054971178ce194e4440fd">store_item_tag()</a>, <a class="el" href="security_8php.html#a3ef2be6a7e4928e39d50059d6feb457c">stream_perms_xchans()</a>, <a class="el" href="text_8php.html#a8796f6a9ca592ecdce7b3afc3462aa13">stringify_array_elms()</a>, <a class="el" href="subthread_8php.html#a50368f3d825b77996030528e7fbfa3d3">subthread_content()</a>, <a class="el" href="suggest_8php.html#a696acf1dd8070e479adcc80c63c6718c">suggest_init()</a>, <a class="el" href="dir__fns_8php.html#aa666e7df6ca8c332f4081c9b66b4bdf6">sync_directories()</a>, <a class="el" href="zot_8php.html#ab15c04e7e5f44edf45ec50dd7d183254">sync_locations()</a>, <a class="el" href="items_8php.html#ab1bce4261bcf75ad62753b498a144d17">tag_deliver()</a>, <a class="el" href="tagger_8php.html#a0e4a3eb177d1684553c547503d67161c">tagger_content()</a>, <a class="el" href="taxonomy_8php.html#a7a913d19c77610da689be48fbbf6734c">term_query()</a>, <a class="el" href="items_8php.html#a88c6cf7649ac836fbbed82a7a0315110">tgroup_check()</a>, <a class="el" href="thing_8php.html#a24a35f1e64029a67fdbea94a776ae04b">thing_content()</a>, <a class="el" href="thing_8php.html#a8be23b1d475ec3d9291999221c674c80">thing_init()</a>, <a class="el" href="plugin_8php.html#a093a9cb98f51e3643634bd8bc6ed6e76">uninstall_plugin()</a>, <a class="el" href="plugin_8php.html#a56f71fe5adf9586ce950523d8180443e">unregister_hook()</a>, <a class="el" href="datetime_8php.html#af1cd77c97c901d9239cb7a61f97f9826">update_birthdays()</a>, <a class="el" href="dir__fns_8php.html#a44062d4b471d1e83f92f6c184585aa13">update_directory_entry()</a>, <a class="el" href="zot_8php.html#ab319d1d9fff9c7775d9daef42d1f33dd">update_modtime()</a>, <a class="el" href="queue__fn_8php.html#a4c2876181f75a4a61e85b7f00dfdbba1">update_queue_time()</a>, <a class="el" href="items_8php.html#a2baa9e05f1e8aa3dd61c85803ae39bd6">update_remote_id()</a>, <a class="el" href="account_8php.html#ac5c570a2d46446bad4dd2501e9c5a4b1">user_allow()</a>, <a class="el" href="account_8php.html#ad07be417ac7eda939768804106ddea3d">user_approve()</a>, <a class="el" href="account_8php.html#ac1653efba62493b9d87513e1b6c04c83">user_deny()</a>, <a class="el" href="classRedMatrix_1_1RedDAV_1_1RedBasicAuth.html#a6ece02655b780469e59e204c5979a624">RedMatrix\RedDAV\RedBasicAuth\validateUserPass()</a>, <a class="el" href="Contact_8php.html#a6348a532c9d26cd1c9afbc9aa6aa8960">vcard_from_xchan()</a>, <a class="el" href="account_8php.html#acd6b8d2124ba5ea4f4794d2c58ae8bf5">verify_email_address()</a>, <a class="el" href="vote_8php.html#a57a9516ee1b923b224e66dcc47377fb2">vote_post()</a>, <a class="el" href="webpages_8php.html#af3b7397d4abc153e3d2147740ee1a41d">webpages_content()</a>, <a class="el" href="wfinger_8php.html#ae21e50c8d0a5f3c9be9f43a4e519acd3">wfinger_init()</a>, <a class="el" href="widgets_8php.html#a0e2f5179ed1a73b282dfda7270fcabb3">widget_bookmarkedchats()</a>, <a class="el" href="widgets_8php.html#a313a8d10ab81c71357c12e67e4d7efd5">widget_item()</a>, <a class="el" href="widgets_8php.html#a829c5a5c7448129266fc1df3ae1a3c2e">widget_random_block()</a>, <a class="el" href="widgets_8php.html#a94203eb9bcd63cbdecbbcb15163598d8">widget_savedsearch()</a>, <a class="el" href="xchan_8php.html#a9853348bf1a35c644460221ba75edc2d">xchan_content()</a>, <a class="el" href="text_8php.html#a543447c5ed766535221e2d9636b379ee">xchan_mail_query()</a>, <a class="el" href="text_8php.html#a905c3895feb6f276df23f07f16f9bb52">xchan_query()</a>, <a class="el" href="hubloc_8php.html#acb708dd197aae72a4858cf5ff4e3195b">xchan_store()</a>, <a class="el" href="xrd_8php.html#aee3cf087968e4a0ff3a87de16eb23270">xrd_init()</a>, <a class="el" href="include_2attach_8php.html#aeb07968990e66a88c95483ca09a7f909">z_readdir()</a>, <a class="el" href="zfinger_8php.html#a8139b83a22ef98869adc10aa224027a0">zfinger_init()</a>, <a class="el" href="identity_8php.html#a680fbafc2db023c5b1309e0180e81315">zid_init()</a>, <a class="el" href="items_8php.html#a1cf89557f32d5dfbe8bd90448dc1aa92">zot_feed()</a>, <a class="el" href="zot_8php.html#a95528377d7303131958c9f0b7158fdce">zot_finger()</a>, <a class="el" href="zot_8php.html#ae7cec2b417b5858fd4a41070f843d1d7">zot_get_hublocs()</a>, <a class="el" href="zot_8php.html#a55056e863a7860bc0cf922e78fcce073">zot_gethub()</a>, <a class="el" href="zot_8php.html#a3920afe14fc1d82020161b4b86bcd9ac">zot_process_message_request()</a>, <a class="el" href="zot_8php.html#a928f5643ca66ae9635d85aeb2be62e03">zot_process_response()</a>, <a class="el" href="zot_8php.html#a7ac30ff51274bf0b6d3eade37972145c">zot_refresh()</a>, and <a class="el" href="zotfeed_8php.html#a24dfc23d366e7f840cf2847d0c1c8eac">zotfeed_init()</a>.</p>
</div>
</div>
@@ -250,6 +411,58 @@ Functions</h2></td></tr>
</div>
</div>
+<a class="anchor" id="aa051799567690a124a3b865bf902f58a"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">dbesc_identifier </td>
+ <td>(</td>
+ <td class="paramtype">&#160;</td>
+ <td class="paramname"><em>$str</em></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+</div>
+</div>
+<a class="anchor" id="a2a38996670c2936b5769270c49c57593"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">dbescbin </td>
+ <td>(</td>
+ <td class="paramtype">&#160;</td>
+ <td class="paramname"><em>$str</em></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p>Referenced by <a class="el" href="include_2attach_8php.html#a84a8a64c4805e1525b42d4add464833f">attach_store()</a>, <a class="el" href="mod_2photos_8php.html#a062bed4d04d14fee8a53f4c9be673080">photos_post()</a>, <a class="el" href="classphoto__driver.html#a5864fae7d8389372955a8e78cec527ac">photo_driver\save()</a>, and <a class="el" href="classphoto__driver.html#a642a8d0c4ad5f887c99c6af77cee287b">photo_driver\store()</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a2c8a72ec73f39b17a167c90737693f78"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">dbescdate </td>
+ <td>(</td>
+ <td class="paramtype">&#160;</td>
+ <td class="paramname"><em>$date</em></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p>Referenced by <a class="el" href="include_2network_8php.html#a63e62946e194928eb17c5a9f2bbef0fe">discover_by_webbie()</a>, and <a class="el" href="zot_8php.html#a528e97ca5d69c3b7f35c5d954afde315">import_xchan()</a>.</p>
+
+</div>
+</div>
<a class="anchor" id="aa6607893d8f60ade9122bcfbd1a53ffb"></a>
<div class="memitem">
<div class="memproto">
@@ -264,6 +477,16 @@ Functions</h2></td></tr>
</table>
</div><div class="memdoc">
+<p>set database driver debugging state. </p>
+<dl class="params"><dt>Parameters</dt><dd>
+ <table class="params">
+ <tr><td class="paramtype">int</td><td class="paramname">$state</td><td>0 to disable debugging </td></tr>
+ </table>
+ </dd>
+</dl>
+
+<p>Referenced by <a class="el" href="connedit_8php.html#a234c48426b652bf4d37053f2af329ac5">connedit_post()</a>.</p>
+
</div>
</div>
<a class="anchor" id="aa377074e70981e8c4e82ca0accd068ee"></a>
@@ -279,12 +502,38 @@ Functions</h2></td></tr>
</tr>
</table>
</div><div class="memdoc">
-<p>Raw db query, no arguments </p>
+
+<p>Raw DB query, no arguments. </p>
+<p>This function executes a raw DB query without any arguments.</p>
+<dl class="params"><dt>Parameters</dt><dd>
+ <table class="params">
+ <tr><td class="paramtype">string</td><td class="paramname">$sql</td><td>The SQL query to execute </td></tr>
+ </table>
+ </dd>
+</dl>
<p>Referenced by <a class="el" href="import_8php.html#af17fef0410518f7eac205d0ea416eaa2">import_post()</a>, <a class="el" href="items_8php.html#a2541e6861a56d145c9281877cc501615">item_store()</a>, <a class="el" href="items_8php.html#acf0bf7c9d21ac84f32effb754f7ad484">item_store_update()</a>, <a class="el" href="items_8php.html#a77da7ce9a117601d49ac4a67c71b514f">mail_store()</a>, <a class="el" href="zot_8php.html#ac301c67864917c35922257950ae0f95c">process_channel_sync_delivery()</a>, and <a class="el" href="profiles_8php.html#a36f71405ad536228f8bb84a551b23f7e">profiles_init()</a>.</p>
</div>
</div>
+<a class="anchor" id="afaaa1a7eff9c1b65b3b8c464ae37640e"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">dbunescbin </td>
+ <td>(</td>
+ <td class="paramtype">&#160;</td>
+ <td class="paramname"><em>$str</em></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p>Referenced by <a class="el" href="photo_8php.html#a582779d24882b0d31ee909a91d70a448">photo_init()</a>, and <a class="el" href="mod_2photos_8php.html#a062bed4d04d14fee8a53f4c9be673080">photos_post()</a>.</p>
+
+</div>
+</div>
<a class="anchor" id="a55bf30d8176967e682656b5be4ad9249"></a>
<div class="memitem">
<div class="memproto">
@@ -299,7 +548,7 @@ Functions</h2></td></tr>
</table>
</div><div class="memdoc">
-<p>Referenced by <a class="el" href="classdba__mysql.html#ac3fd60c278f400907322dac578754a99">dba_mysql\q()</a>, and <a class="el" href="classdba__mysqli.html#a611c4de8d6d7512dffb83a38bb6701ec">dba_mysqli\q()</a>.</p>
+<p>Referenced by <a class="el" href="classdba__mysql.html#ac3fd60c278f400907322dac578754a99">dba_mysql\q()</a>, <a class="el" href="classdba__mysqli.html#a611c4de8d6d7512dffb83a38bb6701ec">dba_mysqli\q()</a>, and <a class="el" href="classdba__postgres.html#a70352880231fba0b859f82cd5b290a9a">dba_postgres\q()</a>.</p>
</div>
</div>
@@ -316,9 +565,19 @@ Functions</h2></td></tr>
</tr>
</table>
</div><div class="memdoc">
-<p>This will happen occasionally trying to store the session data after abnormal program termination</p>
-<p>Referenced by <a class="el" href="Contact_8php.html#ae8803c330352cbf1e828eb7490edf47e">abook_connections()</a>, <a class="el" href="Contact_8php.html#ad5b02c2a962ee55b1b7ca6c159d6e4c5">abook_self()</a>, <a class="el" href="Contact_8php.html#a024919623a830e8703ac4f23496dd66c">abook_toggle_flag()</a>, <a class="el" href="Contact_8php.html#a6e64de7db60b7243dce45fb6347636ff">account_remove()</a>, <a class="el" href="account_8php.html#a43e3042b2723d76915a030bac3c668b6">account_total()</a>, <a class="el" href="auth_8php.html#a07bae0e623e2daa9ee2cd5a8aa294dee">account_verify_password()</a>, <a class="el" href="achievements_8php.html#a35ae04ada0e227d19671f289a32fb30e">achievements_content()</a>, <a class="el" href="acl_8php.html#ac6776dba871806ecdb5d1659bc2eb07a">acl_init()</a>, <a class="el" href="items_8php.html#a81565acf729e629e588d823308448e3c">add_source_route()</a>, <a class="el" href="admin_8php.html#afef415e4011607fbb665610441595015">admin_content()</a>, <a class="el" href="admin_8php.html#ad6f87a764fd35f522c7b4c351d7878ec">admin_page_channels()</a>, <a class="el" href="admin_8php.html#a42e628f367c168add8013352ac74d33f">admin_page_channels_post()</a>, <a class="el" href="admin_8php.html#aaa6addf2dbc3f3fcf99244a56b41eade">admin_page_dbsync()</a>, <a class="el" href="admin_8php.html#a6943543f3138f6ee182cb701f415d1cc">admin_page_hubloc()</a>, <a class="el" href="admin_8php.html#a60ba9783ad14545814919970bc3fb725">admin_page_hubloc_post()</a>, <a class="el" href="admin_8php.html#ac6e95b920b5abd030cc522964987087a">admin_page_summary()</a>, <a class="el" href="admin_8php.html#a62f10f90c47686c9c3c37c4c03a108d2">admin_page_users()</a>, <a class="el" href="admin_8php.html#a5a696706a3869800e65fb365214241b7">admin_page_users_post()</a>, <a class="el" href="identity_8php.html#aa870d2c1f558cfd52bef05bc124e8fa4">advanced_profile()</a>, <a class="el" href="socgraph_8php.html#a16ac51c505d72987ed8d6d6aed0e8586">all_friends()</a>, <a class="el" href="zot_8php.html#a703f528ade8382cf374e4119bd6f7859">allowed_public_recips()</a>, <a class="el" href="include_2api_8php.html#a7759ccddc8dff012ad168e511ffe5af5">api_direct_messages_box()</a>, <a class="el" href="include_2api_8php.html#a0991f72554f821255397d615e76f3203">api_direct_messages_new()</a>, <a class="el" href="include_2api_8php.html#a2c71b1226ef1283b5370bd1c200fee5f">api_favorites()</a>, <a class="el" href="include_2api_8php.html#a36344c80b8e9755da2f2dd3a0e28cce8">api_ff_ids()</a>, <a class="el" href="include_2api_8php.html#a4c6fb9fb5203aa60f4b3afd4521db8ea">api_format_items()</a>, <a class="el" href="include_2api_8php.html#aa40bae797bcd9ccacffdce5a3b5a1afa">api_get_user()</a>, <a class="el" href="include_2api_8php.html#a645397787618b5c548a31e8686e8cca4">api_status_show()</a>, <a class="el" href="include_2api_8php.html#ad4c29f43418f6110f85a6b3998239ab4">api_statuses_destroy()</a>, <a class="el" href="include_2api_8php.html#aa0d6b29fff0344a8e67f3507a6d01410">api_statuses_f()</a>, <a class="el" href="include_2api_8php.html#a528d8070ee74ea800102936ce73cf366">api_statuses_home_timeline()</a>, <a class="el" href="include_2api_8php.html#a8b25a186bd0893f51aa72a62f655735e">api_statuses_mentions()</a>, <a class="el" href="include_2api_8php.html#ad24ce1bf20867add4c9211a8eaf93f22">api_statuses_public_timeline()</a>, <a class="el" href="include_2api_8php.html#ae0fa388479cace9c5a7a45b571ab42f8">api_statuses_repeat()</a>, <a class="el" href="include_2api_8php.html#af6f1d89cdb0a0621025efbec1597bc63">api_statuses_show()</a>, <a class="el" href="include_2api_8php.html#afb99daa6b731bf497b81f2128084852c">api_user()</a>, <a class="el" href="include_2api_8php.html#abe8e929e93f7ab134b1cb1fb30f19a76">api_users_show()</a>, <a class="el" href="include_2apps_8php.html#a6b472df85ed875e7ae75642cece5206f">app_destroy()</a>, <a class="el" href="include_2apps_8php.html#a1adcd1aff4d36ad0277daca9f3d2bbe2">app_installed()</a>, <a class="el" href="include_2apps_8php.html#a01cabfb33b2d0d843cf3bf4e3d3f0ab0">app_list()</a>, <a class="el" href="include_2apps_8php.html#a15626f24069c18816f7cdaf4735f58f9">app_store()</a>, <a class="el" href="include_2apps_8php.html#aeab6a62d2f3dfaa86ed043a006305f46">app_update()</a>, <a class="el" href="appman_8php.html#af48805ac2f6f123f2681a8ae1c6f123f">appman_content()</a>, <a class="el" href="include_2attach_8php.html#a0d07c5b83d3d54e186f752e571847b36">attach_by_hash()</a>, <a class="el" href="include_2attach_8php.html#ad991208ce939387e2f93a3bce7d09932">attach_by_hash_nodata()</a>, <a class="el" href="include_2attach_8php.html#a5c0875eafb8c0f8a0620ff7a875a2221">attach_change_permissions()</a>, <a class="el" href="include_2attach_8php.html#a887d2d44a3ef18dcb6624e7fb58dc8e3">attach_count_files()</a>, <a class="el" href="include_2attach_8php.html#a70bd666e080c2af5a91f5d14c297b8cd">attach_delete()</a>, <a class="el" href="mod_2attach_8php.html#aa88eb5ad87aa1036a30e70339cc6c1b1">attach_init()</a>, <a class="el" href="include_2attach_8php.html#a3634af95f11a023dd8e882c3c7a3600d">attach_list_files()</a>, <a class="el" href="include_2attach_8php.html#ab6830b3ab74a5d284876141ac80f6cbc">attach_mkdir()</a>, <a class="el" href="include_2attach_8php.html#a84a8a64c4805e1525b42d4add464833f">attach_store()</a>, <a class="el" href="security_8php.html#adc7bf51e3b8d67bd80e9348f9ab03733">authenticate_success()</a>, <a class="el" href="block_8php.html#a8a82a470acdfbc7a8e749509caeeea45">block_content()</a>, <a class="el" href="blocks_8php.html#a2531a8fd51db3cecb2eb20c002c66e12">blocks_content()</a>, <a class="el" href="include_2bookmarks_8php.html#aef1cb2968c41c759f2d106e1088ca323">bookmark_add()</a>, <a class="el" href="mod_2bookmarks_8php.html#a6b7942f3d27e40f0f47c88704127b9b3">bookmarks_init()</a>, <a class="el" href="zot_8php.html#ac34e479d27f32b82dd6b33542f81a6a7">build_sync_packet()</a>, <a class="el" href="plugin_8php.html#a7f05de16c0a32602853b09b99dd85e7c">call_hooks()</a>, <a class="el" href="contact__widgets_8php.html#a165eb021e61c4dcab2a552f28628d353">categories_widget()</a>, <a class="el" href="security_8php.html#a8d23d2597aae380a3341872fe9513380">change_channel()</a>, <a class="el" href="include_2chanman_8php.html#a21ba9a5c961e866ff27aee3ee67bf99b">chanman_remove_everything_from_network()</a>, <a class="el" href="channel_8php.html#a9c6a6179e0e626398ebecc6151905ef1">channel_content()</a>, <a class="el" href="Contact_8php.html#a186162051a5127069cc851d78740f205">channel_remove()</a>, <a class="el" href="identity_8php.html#a77d2237f1846964634b1c99089c27c7d">channel_total()</a>, <a class="el" href="Contact_8php.html#a483cda56f9e37c3a4a8773dcdfeb0258">channelx_by_hash()</a>, <a class="el" href="Contact_8php.html#a3a0844dac1e86d523de5d2f432cfeebc">channelx_by_n()</a>, <a class="el" href="Contact_8php.html#a87e699f74a1102b25e8aa0432d86a91e">channelx_by_nick()</a>, <a class="el" href="chanview_8php.html#a4192c6da888c8c1165851acf9ad4cb8b">chanview_content()</a>, <a class="el" href="mod_2chat_8php.html#a8b0b8bee6fef6477e8c64c5e951b1b4f">chat_content()</a>, <a class="el" href="include_2chat_8php.html#acea6b176eb7aff44d9ba3ae24ce511d3">chat_message()</a>, <a class="el" href="mod_2chat_8php.html#a999d594745597c656c9760253ae297ad">chat_post()</a>, <a class="el" href="include_2chat_8php.html#acdc80dba4eb796c7472b21129b435422">chatroom_create()</a>, <a class="el" href="include_2chat_8php.html#a2ba3af6884ecdce95de69262fe599639">chatroom_destroy()</a>, <a class="el" href="include_2chat_8php.html#a2c95b545e46bfee64faa05ecf0afea91">chatroom_enter()</a>, <a class="el" href="include_2chat_8php.html#a1ee1360f7d2549c7549ae07cb5190f0f">chatroom_leave()</a>, <a class="el" href="include_2chat_8php.html#aedcb532a0627b8644001a2fadab4e87a">chatroom_list()</a>, <a class="el" href="chatsvc_8php.html#a7032784215e1f6747cf385a6598770f9">chatsvc_content()</a>, <a class="el" href="chatsvc_8php.html#a28d248b056fa47452e28ed01130e9116">chatsvc_init()</a>, <a class="el" href="chatsvc_8php.html#a7c9a9b9c24a2b02eed8efd6b09632d03">chatsvc_post()</a>, <a class="el" href="account_8php.html#ae052bd5558847bd38e89c213561a9771">check_account_email()</a>, <a class="el" href="account_8php.html#aaff7720423417a4333697894ffd9ddeb">check_account_invite()</a>, <a class="el" href="boot_8php.html#a4c02d88e66852a01bd5a1feecb7c3ce3">check_config()</a>, <a class="el" href="items_8php.html#a87ac9e359591721a824ecd23bbb56296">check_item_source()</a>, <a class="el" href="text_8php.html#a0c65597bb4aed3a039eb795ff540e5e3">check_webbie()</a>, <a class="el" href="classCache.html#ab14d0f4bdf7116a94d545c574b38f568">Cache\clear()</a>, <a class="el" href="items_8php.html#a01e3cf44e082fa9bd06dcde5bf713d70">collect_recipients()</a>, <a class="el" href="comanche_8php.html#a5a7ab801717d38e91ac910b933973887">comanche_block()</a>, <a class="el" href="socgraph_8php.html#a7d34cd58025bcd9e575282f44db75918">common_friends()</a>, <a class="el" href="socgraph_8php.html#ac343a846241d36cdf046b08f3396cfe9">common_friends_zcid()</a>, <a class="el" href="common_8php.html#aca62f113655809f41f49042ce9b123c2">common_init()</a>, <a class="el" href="connect_8php.html#ad46a38f32fd7a3d324b1fa26373efa36">connect_init()</a>, <a class="el" href="connect_8php.html#a417ec27afe33f21a929667a665e32ee2">connect_post()</a>, <a class="el" href="connections_8php.html#aec2e457420fce3e3bf6a9f48e36df25c">connections_content()</a>, <a class="el" href="connections_8php.html#a1224058db8e3fb56463eb312f98e561d">connections_post()</a>, <a class="el" href="connedit_8php.html#a795acb3d9d841f55c255d7611681ab67">connedit_content()</a>, <a class="el" href="connedit_8php.html#a4da871e075597a09a8b374b9171dd92e">connedit_init()</a>, <a class="el" href="connedit_8php.html#a234c48426b652bf4d37053f2af329ac5">connedit_post()</a>, <a class="el" href="items_8php.html#a8794863cdf8ce1333040933d3a3f66bd">consume_feed()</a>, <a class="el" href="text_8php.html#ad6432621d0fafcbcf3d3b9b49bef7784">contact_block()</a>, <a class="el" href="contact__selectors_8php.html#a2c743d2eb526eb758d943a1490162d75">contact_profile_assign()</a>, <a class="el" href="Contact_8php.html#a28e062c884331dbb5dfa713228c25ad6">contact_remove()</a>, <a class="el" href="acl__selectors_8php.html#a9476997d2968a5794f3723878ed89c91">contact_select()</a>, <a class="el" href="contactgroup_8php.html#a18c7391b1b25debaf98c9dba639caab3">contactgroup_content()</a>, <a class="el" href="socgraph_8php.html#af29d056beec10b4e38e5209c92452894">count_all_friends()</a>, <a class="el" href="socgraph_8php.html#a887d576f21fd708132a06d0f72f90f84">count_common_friends()</a>, <a class="el" href="socgraph_8php.html#af175807406d94407a5e11742a3287746">count_common_friends_zcid()</a>, <a class="el" href="account_8php.html#a141fe579c351c78209d425473f978eb5">create_account()</a>, <a class="el" href="identity_8php.html#a345f4c943d84de502ec6e72d2c813945">create_identity()</a>, <a class="el" href="classRedDirectory.html#a986936910f0216887a25e28916c166c7">RedDirectory\createDirectory()</a>, <a class="el" href="classRedDirectory.html#a2d12d99d38a6a75fc9a830b2f7fc0bf0">RedDirectory\createFile()</a>, <a class="el" href="boot_8php.html#ad206598b909e8eb67eb0e0bb5ef69c13">current_theme()</a>, <a class="el" href="include_2config_8php.html#a549910227348003efc3c05c9105c42da">del_config()</a>, <a class="el" href="include_2config_8php.html#a7ad2081c5f812ac4387fd76f3762d941">del_pconfig()</a>, <a class="el" href="include_2config_8php.html#a9c171def547deee16738dc58fdeb4b72">del_xconfig()</a>, <a class="el" href="delegate_8php.html#a943eea8996ef348eb845c498f9f354dd">delegate_content()</a>, <a class="el" href="zot_8php.html#adfeb9400ae6b726beec89f8f1e8fde72">delete_imported_item()</a>, <a class="el" href="items_8php.html#aac8c9eb4338e2a996c43914392c6cfdb">delete_item_lowlevel()</a>, <a class="el" href="deliver_8php.html#a397afcb9afecf0c1816b0951189dd346">deliver_run()</a>, <a class="el" href="dirsearch_8php.html#a7d4cd9890d5ed23c3efc58e2a778a305">dir_parse_query()</a>, <a class="el" href="taxonomy_8php.html#a088371f4bc19155b2291508f5cd63332">dir_tagadelic()</a>, <a class="el" href="mod_2directory_8php.html#aac79396570d759da2efac24fcedf5b44">directory_content()</a>, <a class="el" href="include_2directory_8php.html#aa75d3b0697ca1456aaabdb37a74aa0f0">directory_run()</a>, <a class="el" href="dirprofile_8php.html#a3e1d30d3d93863ff5615f2df4ac7f052">dirprofile_init()</a>, <a class="el" href="dirsearch_8php.html#aa1fb04e1de4f25b63349ac78f94ceb4c">dirsearch_content()</a>, <a class="el" href="display_8php.html#a37137c98d47bf3306f4c2bb9f5b60de0">display_content()</a>, <a class="el" href="account_8php.html#a0d183a3cb4c67a0f5e906811df7a1fc9">downgrade_accounts()</a>, <a class="el" href="items_8php.html#a555762e1022a4b8e3c3abd32e7812408">drop_item()</a>, <a class="el" href="editblock_8php.html#abbe8f55de06967bc8d79d620509a49e6">editblock_content()</a>, <a class="el" href="editlayout_8php.html#aa877e4157a26b099de904164181dd386">editlayout_content()</a>, <a class="el" href="editpost_8php.html#a34011690864d122680c802e9e748ccfb">editpost_content()</a>, <a class="el" href="editwebpage_8php.html#a375e945255fad79a71036528f7480650">editwebpage_content()</a>, <a class="el" href="items_8php.html#a82955cc578f0fa600acec84475026194">encode_item()</a>, <a class="el" href="event_8php.html#ac9f206819186b65952ac1869f0da8c6e">event_addtocal()</a>, <a class="el" href="event_8php.html#af5ac41e7ea3f7131088fe6333fd2846c">event_store_event()</a>, <a class="el" href="event_8php.html#a7378e839ac3de9d55579eb3ec48eaf92">event_store_item()</a>, <a class="el" href="events_8php.html#a1d293fb217ae6bc9e3858c4b32e363ec">events_content()</a>, <a class="el" href="events_8php.html#ab3e8a8f901175f8e40a8089eea45c075">events_post()</a>, <a class="el" href="include_2group_8php.html#a22a81875259c7d3d64d4848afea6b345">expand_groups()</a>, <a class="el" href="expire_8php.html#a444e45c9b67727b27db4c779fd51a298">expire_run()</a>, <a class="el" href="externals_8php.html#a4df44079e6f915286088b7a0d44db926">externals_run()</a>, <a class="el" href="fbrowser_8php.html#aee476addcf7a3e0fe9454f7dfd5a56c4">fbrowser_content()</a>, <a class="el" href="feed_8php.html#af86137700b56f33d1d5f25c8dec22c04">feed_init()</a>, <a class="el" href="items_8php.html#adf980098b6de9c3993bc3ff26a8dd6f9">fetch_post_tags()</a>, <a class="el" href="contact__widgets_8php.html#a1eda66319d170f60a8d07c7ece95533b">fileas_widget()</a>, <a class="el" href="filer_8php.html#a5fd5d7e61b2f9c43cb5f110c89dc4274">filer_content()</a>, <a class="el" href="filerm_8php.html#ae2eb28d2054fa2c37e38689882172208">filerm_content()</a>, <a class="el" href="filestorage_8php.html#a61bb1be78472555df4ce619f51014040">filestorage_content()</a>, <a class="el" href="include_2attach_8php.html#a4dbfd7e1cef52aa9ef52f4b88929fa86">find_filename_by_hash()</a>, <a class="el" href="include_2attach_8php.html#a052f14487ff2ce72f62a09fac8d7e997">find_folder_hash_by_attach_hash()</a>, <a class="el" href="classRedBrowser.html#ae4edd4e10c709e2624c1aeb47b0440c5">RedBrowser\findAttachHash()</a>, <a class="el" href="classRedBrowser.html#a20d81230645ddca08a88bfd9ea9f88f1">RedBrowser\findAttachIdByHash()</a>, <a class="el" href="items_8php.html#a0cf98bb619f07dd18f602683a55a5f59">first_post_date()</a>, <a class="el" href="item_8php.html#a7b63a9d0cd02096e17dcf11f4afa7c10">fix_attached_photo_permissions()</a>, <a class="el" href="items_8php.html#aba98fcbbcd7044a7e9ea34edabc14c87">fix_private_photos()</a>, <a class="el" href="boot_8php.html#aca5e42678e178c6b9034610d66666fd7">fix_system_urls()</a>, <a class="el" href="fsuggest_8php.html#aa6c49ed4b50a387f1845f36844dd7998">fsuggest_content()</a>, <a class="el" href="fsuggest_8php.html#a61ecfe10ce937ed526614f8fd3de3c7d">fsuggest_post()</a>, <a class="el" href="classRedBrowser.html#a1f7daf50bb9bfcde7345b3b1908dbd7e">RedBrowser\generateDirectoryIndex()</a>, <a class="el" href="classCache.html#a70392b109331897bf9fdd7f1960e21de">Cache\get()</a>, <a class="el" href="classRedFile.html#a7c868dfcef6c70cd0e24cf3caa2c3535">RedFile\get()</a>, <a class="el" href="permissions_8php.html#aeca9b280f3dc3358c89976d81d690008">get_all_perms()</a>, <a class="el" href="identity_8php.html#ad2c97627a313d53df1a1c7b4215ddb51">get_birthdays()</a>, <a class="el" href="identity_8php.html#ac73b3e13778c564c877554517a7f51ba">get_channel_by_nick()</a>, <a class="el" href="include_2attach_8php.html#a6aa00ea010ea030110faefb75eafc1ce">get_cloudpath()</a>, <a class="el" href="include_2config_8php.html#af08b7adb63adfb2eda7c466fba0cce74">get_config_from_storage()</a>, <a class="el" href="identity_8php.html#ae381db3d43f8e7c1da8b15d14ecf5312">get_events()</a>, <a class="el" href="items_8php.html#a536d0313b6ffe33b9d2490c4e25c5361">get_item_elements()</a>, <a class="el" href="identity_8php.html#a332df795f684788002f5a6424abacfd7">get_online_status()</a>, <a class="el" href="identity_8php.html#aaff86ee3b5984821e7a256c2da5f1a51">get_sys_channel()</a>, <a class="el" href="taxonomy_8php.html#a7747fa859ac56fbffd4f9782d85505de">get_things()</a>, <a class="el" href="spam_8php.html#ab8fd81a82c9622cbebb8ceab6b310ca6">get_words()</a>, <a class="el" href="classRedDirectory.html#a70173d4458572d95e586b2037d2fd2f4">RedDirectory\getDir()</a>, <a class="el" href="classRedDirectory.html#a6c7e08199abc24e6eeb94a4037ef8bfc">RedDirectory\getLastModified()</a>, <a class="el" href="classRedDirectory.html#a2f7a574f2115f099d6dd103d5b252375">RedDirectory\getQuotaInfo()</a>, <a class="el" href="gprobe_8php.html#adf72cb0a70b5b9d99fdec1cc60e18ed1">gprobe_run()</a>, <a class="el" href="include_2group_8php.html#a06ec565d2b64e79044e7c1bf91a2a4ce">group_add()</a>, <a class="el" href="include_2group_8php.html#a0122ef312df2c5546b1a46b3e6c7b31b">group_add_member()</a>, <a class="el" href="include_2group_8php.html#abd66a5ea34a07a3422dc2dde6c7b3ecb">group_byname()</a>, <a class="el" href="mod_2group_8php.html#a07a64f6c65b0080d8190b3d9728a7a83">group_content()</a>, <a class="el" href="include_2group_8php.html#a5bd191d9692e6c34d48c0ede10810f09">group_get_members()</a>, <a class="el" href="mod_2group_8php.html#aed1f009b1221348021bb34761160ef35">group_post()</a>, <a class="el" href="include_2group_8php.html#a90e157b3e1b99c981809cb5a2abd3245">group_rec_byhash()</a>, <a class="el" href="include_2group_8php.html#a4118f498bbd1530c1d0136d016d197a5">group_rmv()</a>, <a class="el" href="include_2group_8php.html#a540e3ef36f47d47532646be4241f6518">group_rmv_member()</a>, <a class="el" href="acl__selectors_8php.html#aa1e3bc344ca2b29f97eb9860216d21a0">group_select()</a>, <a class="el" href="include_2group_8php.html#a6a69bd7be032fa8ce4e49c43a42cc6e9">group_side()</a>, <a class="el" href="include_2group_8php.html#afb802ae2ce73aae4bc36d157f7b6a92f">groups_containing()</a>, <a class="el" href="item_8php.html#aa22feef4de326e1d7078dedd892e615c">handle_tag()</a>, <a class="el" href="home_8php.html#aa1cf697851a646755baf537f75334c46">home_content()</a>, <a class="el" href="identity_8php.html#a3570a4eb77332b292d394c4132cb8f03">identity_basic_export()</a>, <a class="el" href="identity_8php.html#ac9fcd5c4c371998790b5c55c3d0f4633">identity_check_service_class()</a>, <a class="el" href="identity_8php.html#a2ab5172eabd375869060c9ad68323f5c">identity_selector()</a>, <a class="el" href="items_8php.html#a6bee35961f2e32905f20367a9309d627">import_author_rss()</a>, <a class="el" href="zot_8php.html#ad149f1e98c0c5b88ff9147e6ee3f330d">import_author_zot()</a>, <a class="el" href="zot_8php.html#a3bf11286c2619b4ca28e49d5b5ab374a">import_directory_keywords()</a>, <a class="el" href="zot_8php.html#a20750dd2c36961013fd382fb34e1366c">import_directory_profile()</a>, <a class="el" href="import_8php.html#af17fef0410518f7eac205d0ea416eaa2">import_post()</a>, <a class="el" href="photo__driver_8php.html#a78f5a10c568d2a9bbbb129dc96548887">import_profile_photo()</a>, <a class="el" href="zot_8php.html#a2657e141d62d5f67ad3c87651b585299">import_site()</a>, <a class="el" href="zot_8php.html#a528e97ca5d69c3b7f35c5d954afde315">import_xchan()</a>, <a class="el" href="plugin_8php.html#a482131013272a1d5d5c1b1469c6c55d5">install_plugin()</a>, <a class="el" href="invite_8php.html#aeb0881c0f93c8e8552e5ed756ce6e5a5">invite_post()</a>, <a class="el" href="identity_8php.html#aa4bd4abfcba883f43919e89ec6419025">is_sys_channel()</a>, <a class="el" href="items_8php.html#a02ca33c31ed535d24894f8a9a91ce9df">item_add_cid()</a>, <a class="el" href="item_8php.html#a5b1b36cb301a94b38150074f0d424e74">item_check_service_class()</a>, <a class="el" href="item_8php.html#a764bbb2e9a885a86fb23d0b5e4a09221">item_content()</a>, <a class="el" href="items_8php.html#a6f7e1334af5d684a987fa6a3eb37f4cc">item_expire()</a>, <a class="el" href="text_8php.html#aa6b0aa8afbeab50d1a3058ad21acb74e">item_message_id()</a>, <a class="el" href="item_8php.html#a693cd09805755ab85bbb5ecae69a48c3">item_post()</a>, <a class="el" href="items_8php.html#a5ed782ff5b9cf050bec931e06de12c00">item_remove_cid()</a>, <a class="el" href="items_8php.html#a2541e6861a56d145c9281877cc501615">item_store()</a>, <a class="el" href="items_8php.html#acf0bf7c9d21ac84f32effb754f7ad484">item_store_update()</a>, <a class="el" href="items_8php.html#a756738301f2ed96be50232500677d58a">items_fetch()</a>, <a class="el" href="text_8php.html#a3999a0b3e22e440f280ee791ce34d384">layout_select()</a>, <a class="el" href="layouts_8php.html#a6e0193759ad9eef76d3df2db24237b50">layouts_content()</a>, <a class="el" href="like_8php.html#a9d7dd268f21c21e9d29dd2aca2dd9538">like_content()</a>, <a class="el" href="dirsearch_8php.html#a985d410a170549429857af6ff2673149">list_public_sites()</a>, <a class="el" href="include_2config_8php.html#a27559f388c9b9af81c94e48d6889d1d1">load_config()</a>, <a class="el" href="boot_8php.html#a719c7f3972d5f9268f37a41c76cd4ef6">load_contact_links()</a>, <a class="el" href="plugin_8php.html#a326365e48ef94f0b9a0a771b8d75e813">load_hooks()</a>, <a class="el" href="include_2config_8php.html#ac543813a980b3841cc5a277fcd4a24a6">load_pconfig()</a>, <a class="el" href="plugin_8php.html#a9ca9632b7309a65b05c03a3e2f473a3d">load_plugin()</a>, <a class="el" href="language_8php.html#a7e9904c730bb24ddcb0ff50fc96f6b05">load_translation_table()</a>, <a class="el" href="include_2config_8php.html#a55bbed9a014c9109c767486834f3ca33">load_xconfig()</a>, <a class="el" href="dir__fns_8php.html#acd37b17dce3bdec6d5a6344a20598c1e">local_dir_update()</a>, <a class="el" href="lockview_8php.html#a851e26ab9a1008df5c5ebebea31e9b44">lockview_content()</a>, <a class="el" href="classFKOAuth1.html#a2b1dac2ed31fc6ef84668afdda8b263f">FKOAuth1\loginUser()</a>, <a class="el" href="classFKOAuthDataStore.html#a1148d47b546350bf440bdd92792c5df1">FKOAuthDataStore\lookup_consumer()</a>, <a class="el" href="classFKOAuthDataStore.html#a4edfe2e77ecd2e16ff6b5eb516ed3599">FKOAuthDataStore\lookup_nonce()</a>, <a class="el" href="classFKOAuthDataStore.html#a96f76387c3a93b0abe27a98013804bab">FKOAuthDataStore\lookup_token()</a>, <a class="el" href="lostpass_8php.html#a0314d94e48c789b1b3a201d740c9eab3">lostpass_content()</a>, <a class="el" href="lostpass_8php.html#a8ed35ba71a4404eaf4903da61d0321cc">lostpass_post()</a>, <a class="el" href="magic_8php.html#acea2cc792849ca2d71d4b689f66518bf">magic_init()</a>, <a class="el" href="mail_8php.html#a3c7c485fc69f92371e8b20936040eca1">mail_content()</a>, <a class="el" href="items_8php.html#a77da7ce9a117601d49ac4a67c71b514f">mail_store()</a>, <a class="el" href="manage_8php.html#a2bca247b5296827638959138367db4f5">manage_content()</a>, <a class="el" href="Contact_8php.html#a08845ce8c5b997d5edac38ae7118b5c8">mark_orphan_hubsxchans()</a>, <a class="el" href="match_8php.html#a1dd853e959b9e70c1911bb2fb5f5130d">match_content()</a>, <a class="el" href="auth_8php.html#ab7be44ee051c0aa29847807cf2c5dd38">match_openid()</a>, <a class="el" href="include_2group_8php.html#a048f6892bfd28852de1b76470df411de">member_of()</a>, <a class="el" href="include_2menu_8php.html#add35fae5e9695031b3d46e30ac409eb8">menu_add_item()</a>, <a class="el" href="include_2menu_8php.html#a08a800821721781a8dfffbe31481ff98">menu_create()</a>, <a class="el" href="include_2menu_8php.html#a9aa8e0052dd47c1a93f53a983bd4620a">menu_del_item()</a>, <a class="el" href="include_2menu_8php.html#a3884bda4d85d84ec99447db9403a68d8">menu_delete()</a>, <a class="el" href="include_2menu_8php.html#ad87f51ce85172bcc3f931aa0cd96a804">menu_delete_id()</a>, <a class="el" href="include_2menu_8php.html#a6a33c6a3db2a7510b16cc656edaec571">menu_edit()</a>, <a class="el" href="include_2menu_8php.html#acb66f80ca895a6ccd562b3d9ae7b41aa">menu_edit_item()</a>, <a class="el" href="include_2menu_8php.html#a68ebbf492470c930f652013656f9071d">menu_fetch()</a>, <a class="el" href="include_2menu_8php.html#a47447c01ba8ea04cd74af1d4c5b68fc7">menu_fetch_id()</a>, <a class="el" href="include_2menu_8php.html#a32701c4245e78ba9106eef52c08bf33d">menu_list()</a>, <a class="el" href="text_8php.html#a1633412120f52bdce5f43e0a127d9293">mimetype_select()</a>, <a class="el" href="include_2group_8php.html#ab0e422a0f31c0c64fd9084ca03d85f32">mini_group_select()</a>, <a class="el" href="mitem_8php.html#a7a31b702ecad18eeb6a38b243ff0037e">mitem_content()</a>, <a class="el" href="mood_8php.html#a7ae136dd7476865b4828136175db5022">mood_init()</a>, <a class="el" href="msearch_8php.html#ac80d2a6c0a92e79eec7efbbccd74d9a8">msearch_post()</a>, <a class="el" href="netgrowth_8php.html#a9b87bfc25a7cb11bc7f8e1fdd0310919">netgrowth_content()</a>, <a class="el" href="mod_2network_8php.html#a43f2f29b90c5e29072c561934bc8f8b4">network_content()</a>, <a class="el" href="classFKOAuthDataStore.html#a434882f03e3cdb171ed89e09e337e934">FKOAuthDataStore\new_access_token()</a>, <a class="el" href="include_2follow_8php.html#ae387d4ae097c23d69f3247e7f08140c7">new_contact()</a>, <a class="el" href="session_8php.html#a4c0ead624f95483e386bc80abf570a8f">new_cookie()</a>, <a class="el" href="classFKOAuthDataStore.html#a431b44d70e3da6a8256ab38f710e3050">FKOAuthDataStore\new_request_token()</a>, <a class="el" href="enotify_8php.html#a3e9a9355b243777c488d2a9883908dfc">notification()</a>, <a class="el" href="notifications_8php.html#aadd0b5525bd8c283a5d8a37982bbfe62">notifications_content()</a>, <a class="el" href="notifications_8php.html#a5baffec7b2e625c9f9cefbc097550d33">notifications_post()</a>, <a class="el" href="notifier_8php.html#a568c502f626cff95e344c0748938b85d">notifier_run()</a>, <a class="el" href="mod_2notify_8php.html#acdf3851688ebd6d6a575eb84ef9febe3">notify_content()</a>, <a class="el" href="mod_2notify_8php.html#a94f9a6a9d4b5fd704baafff0c34f41ae">notify_init()</a>, <a class="el" href="mod_2api_8php.html#a02ae0f60e240dc806b860edb7d582117">oauth_get_client()</a>, <a class="el" href="include_2oembed_8php.html#a98549b9af8140eda3eceaeedcaabc2c2">oembed_fetch_url()</a>, <a class="el" href="onedirsync_8php.html#a411aedd47c57476099647961e6a86691">onedirsync_run()</a>, <a class="el" href="onepoll_8php.html#a72753b2fdec79b37c7f432035c91fb6d">onepoll_run()</a>, <a class="el" href="openid_8php.html#a9a13827dbcf61ae4e45f0b6b33a88f43">openid_content()</a>, <a class="el" href="page_8php.html#a91a5f649f68406149108bded1dc90b22">page_content()</a>, <a class="el" href="page__widgets_8php.html#a39d547771c5f12a17c097436c82f0fa2">pagelist_widget()</a>, <a class="el" href="comanche_8php.html#af7150df735e5ff9d467994cd6f769c6e">pdl_selector()</a>, <a class="el" href="permissions_8php.html#a67ada9ed51e77885b6b0f6a28cee1835">perm_is_allowed()</a>, <a class="el" href="photo_8php.html#a582779d24882b0d31ee909a91d70a448">photo_init()</a>, <a class="el" href="text_8php.html#aa5528f41533927e1bd2da3618a74a6d7">photo_new_resource()</a>, <a class="el" href="include_2photos_8php.html#a6c40ef58aefef705a5adc84a40e97109">photo_upload()</a>, <a class="el" href="include_2photos_8php.html#a8e8b7be99e24c2497bc2cb3339280c35">photos_album_exists()</a>, <a class="el" href="include_2photos_8php.html#a7e7abc69872180697c5471dc69349afe">photos_album_get_db_idstr()</a>, <a class="el" href="include_2photos_8php.html#ab0365f25b22ccea5f085fe7c49e1f4ab">photos_album_rename()</a>, <a class="el" href="include_2photos_8php.html#aedccaf18282b26899d9549c29bd9d1b9">photos_albums_list()</a>, <a class="el" href="mod_2photos_8php.html#aa87382611a66ec5effdb2d78f13f5812">photos_content()</a>, <a class="el" href="include_2photos_8php.html#aa27b9e435dcc34e1009f56dc02c7ca51">photos_list_photos()</a>, <a class="el" href="mod_2photos_8php.html#a062bed4d04d14fee8a53f4c9be673080">photos_post()</a>, <a class="el" href="ping_8php.html#a77217b1b190b4c5d8770867b45f0c0a1">ping_init()</a>, <a class="el" href="plugin_8php.html#a855c4fdb38c0fc2714d537752a4347f9">plugin_is_installed()</a>, <a class="el" href="poco_8php.html#a53def16f75e3d41f1d2bb7cfa4905498">poco_init()</a>, <a class="el" href="socgraph_8php.html#a5ef8bef37161df53718a21e93d02fbd6">poco_load()</a>, <a class="el" href="poke_8php.html#ac9190563a8da9c07a16f9dcd71cf6993">poke_content()</a>, <a class="el" href="poke_8php.html#a9725aab97b3983e6a98bd81c4efe7d3b">poke_init()</a>, <a class="el" href="poller_8php.html#a5f12df3a4738124b6c039971e87e76da">poller_run()</a>, <a class="el" href="items_8php.html#a410f9c743877c125ca06312373346903">post_activity_item()</a>, <a class="el" href="post_8php.html#af4b48181ce773ef0cdfc972441445c34">post_init()</a>, <a class="el" href="post_8php.html#af59e6a1dc22d19d9257b01cd7ccedb75">post_post()</a>, <a class="el" href="include_2message_8php.html#aed272d77c06a309e2836ac79e75613f1">private_messages_drop()</a>, <a class="el" href="include_2message_8php.html#a5f8de9847e203329e317ac38dc646898">private_messages_fetch_conversation()</a>, <a class="el" href="include_2message_8php.html#a254a756031e4d5e94f85e2939bdb5091">private_messages_fetch_message()</a>, <a class="el" href="include_2message_8php.html#a652973ce47a262f2d238c2fd6233d97e">private_messages_list()</a>, <a class="el" href="zot_8php.html#ac301c67864917c35922257950ae0f95c">process_channel_sync_delivery()</a>, <a class="el" href="zot_8php.html#a4d9e6ca295e443b740d9960c304b3474">process_delivery()</a>, <a class="el" href="zot_8php.html#aa6ae96db8cbbdbb10e6876d206bbf7cc">process_mail_delivery()</a>, <a class="el" href="zot_8php.html#a9a57b40669351c9791126b925cb7ef3b">process_profile_delivery()</a>, <a class="el" href="profile_8php.html#ab5d0246be0552e2182a585c1206d22a5">profile_init()</a>, <a class="el" href="identity_8php.html#a4751b522ea913d0e7ed43e03d22e9e68">profile_load()</a>, <a class="el" href="profile__photo_8php.html#a4b80234074bd603221aa5364f330e479">profile_photo_post()</a>, <a class="el" href="profile__photo_8php.html#a561103564199da56e58061a4196eb102">profile_photo_set_profile_perms()</a>, <a class="el" href="identity_8php.html#a432259b2cf5b6f59be53e71db9f2c7dc">profile_sidebar()</a>, <a class="el" href="profiles_8php.html#a46975783b8b8d70402d51487eb1f0b00">profiles_content()</a>, <a class="el" href="profiles_8php.html#a36f71405ad536228f8bb84a551b23f7e">profiles_init()</a>, <a class="el" href="profiles_8php.html#ab0362c81b1d3b0b12a772b9fac446e04">profiles_post()</a>, <a class="el" href="profperm_8php.html#aef015787de2373d9fb3fe3f814fb5023">profperm_content()</a>, <a class="el" href="hubloc_8php.html#ad3d0dcfcfcb347744f7617fe6f5de002">prune_hub_reinstalls()</a>, <a class="el" href="zot_8php.html#a083aec6c900d244e1bfc1406f9461465">public_recips()</a>, <a class="el" href="classRedFile.html#a41a49a583eb276b75626fcf97f4a699c">RedFile\put()</a>, <a class="el" href="queue_8php.html#af8c93de86d866c3200174c8450a0f341">queue_run()</a>, <a class="el" href="Contact_8php.html#a852fa476f0c70bde10a4f2533aec5f71">random_profile()</a>, <a class="el" href="Contact_8php.html#a2f4f495d53f2a334ab75292af79d3c91">rconnect_url()</a>, <a class="el" href="items_8php.html#a4e6d7639431e0dd8e9f4dba8e1ac408b">red_zrl_callback()</a>, <a class="el" href="items_8php.html#a78a60e39f6991bd3324a24dcbf9dac5a">red_zrlify_img_callback()</a>, <a class="el" href="reddav_8php.html#ae92ea0df1993f6a7bcd1b6efa6c1fb66">RedChannelList()</a>, <a class="el" href="reddav_8php.html#a5df0d09893f2e65dc5cf6bbab6cfb266">RedCollectionData()</a>, <a class="el" href="reddav_8php.html#a9f531641dfb4e43cd88ac1a9ae7e2088">RedFileData()</a>, <a class="el" href="session_8php.html#af230b86bfff7db66c3bdd7e0bbc24052">ref_session_destroy()</a>, <a class="el" href="session_8php.html#ac95373f4966862a028033dd2f94d4da1">ref_session_gc()</a>, <a class="el" href="session_8php.html#a7f0f50576360d9ba52d29364e0b83a8e">ref_session_read()</a>, <a class="el" href="session_8php.html#ac4461c1984543d3553e73dba2771568f">ref_session_write()</a>, <a class="el" href="register_8php.html#a0e91f57f111407ea8d3223a05022bb2a">register_content()</a>, <a class="el" href="plugin_8php.html#a425472c5f3afc137268b2ad45652b209">register_hook()</a>, <a class="el" href="register_8php.html#a51731dcc1917c58a790eb1c0f6132271">register_post()</a>, <a class="el" href="plugin_8php.html#af9ac19004dca49adae1ac7a0d9f3b025">reload_plugins()</a>, <a class="el" href="identity_8php.html#a47d6f53216f23a3484061793bef29854">remote_online_status()</a>, <a class="el" href="Contact_8php.html#acc12cda999c88c4d6185cca967c15125">remove_all_xchan_resources()</a>, <a class="el" href="zot_8php.html#aad25a3fe0e1566121d6fb8222979bc10">remove_community_tag()</a>, <a class="el" href="queue__fn_8php.html#a8fe71e981399bbf5d000a6ca42f57b24">remove_queue_item()</a>, <a class="el" href="items_8php.html#af6237605c60d69abdd959ddbbee3420c">retain_item()</a>, <a class="el" href="rmagic_8php.html#a95455edd43f1bff39446a57388cdde16">rmagic_init()</a>, <a class="el" href="rmagic_8php.html#a869de069d081b3c4e98b957d06bbf08f">rmagic_post()</a>, <a class="el" href="rpost_8php.html#a8190354d789000806d9879aea276728f">rpost_content()</a>, <a class="el" href="classphoto__driver.html#a5864fae7d8389372955a8e78cec527ac">photo_driver\save()</a>, <a class="el" href="search__ac_8php.html#a14f90c83a3f2be095e9e2992a8d66138">search_ac_init()</a>, <a class="el" href="search_8php.html#ab2568591359edde5b483a6cd9a24b2cc">search_content()</a>, <a class="el" href="include_2message_8php.html#a751ffd6635022b2190f56154ee745752">send_message()</a>, <a class="el" href="account_8php.html#a014de2d5d5c9785de5bf547a485822fa">send_reg_approval_email()</a>, <a class="el" href="items_8php.html#aab9e0c58247427126de0699c729c3b6c">send_status_notifications()</a>, <a class="el" href="plugin_8php.html#a030cec6793b909c439c0336ba39b1571">service_class_allows()</a>, <a class="el" href="plugin_8php.html#a905b54e10704b283ac64680a8abc0971">service_class_fetch()</a>, <a class="el" href="classCache.html#ae622b82adc1c2fb1f3e2cc4fd9688fce">Cache\set()</a>, <a class="el" href="include_2config_8php.html#ad6da879e4fb5b37d1e161d4e9be5c32a">set_config()</a>, <a class="el" href="identity_8php.html#a78151baf4407a8482d2681a91a9c486b">set_default_login_identity()</a>, <a class="el" href="include_2config_8php.html#a61591371cb18764138655d67dc817ab2">set_pconfig()</a>, <a class="el" href="include_2config_8php.html#afe117b70f1bba2f6348d9300b601f86e">set_xconfig()</a>, <a class="el" href="classRedDirectory.html#adc48035679e52c55d9881f83de535553">RedDirectory\setName()</a>, <a class="el" href="classRedFile.html#a38a82bfc1b30028ea6ac75923e90fa25">RedFile\setName()</a>, <a class="el" href="settings_8php.html#aa7ee94d88ac088edb04ccf3a26de3586">settings_post()</a>, <a class="el" href="setup_8php.html#a88247384a96e14516f474d7af6a465c1">setup_content()</a>, <a class="el" href="share_8php.html#afeb26046bdd02567ecd29ab5f188b249">share_init()</a>, <a class="el" href="siteinfo_8php.html#a70c09bfb6dd1c86a125a35f62ed53656">siteinfo_content()</a>, <a class="el" href="siteinfo_8php.html#a3efbd0bd6564af19ec0a9ce0294e59d0">siteinfo_init()</a>, <a class="el" href="sitelist_8php.html#a665a59bf60f780b40f32c909f4a473b1">sitelist_init()</a>, <a class="el" href="sources_8php.html#ac442ccef080ab95772d8929fcafcb4b7">sources_content()</a>, <a class="el" href="sources_8php.html#ac73298ff162ce7b2de8dcaf3d3305b1e">sources_post()</a>, <a class="el" href="starred_8php.html#a63024fb418c678e49fd535e3752d349a">starred_init()</a>, <a class="el" href="classphoto__driver.html#a642a8d0c4ad5f887c99c6af77cee287b">photo_driver\store()</a>, <a class="el" href="taxonomy_8php.html#a4ba1339b2a7054971178ce194e4440fd">store_item_tag()</a>, <a class="el" href="security_8php.html#a6126c77a1267e046ac59cf864613f011">stream_perms_api_uids()</a>, <a class="el" href="security_8php.html#a3ef2be6a7e4928e39d50059d6feb457c">stream_perms_xchans()</a>, <a class="el" href="subthread_8php.html#a50368f3d825b77996030528e7fbfa3d3">subthread_content()</a>, <a class="el" href="suggest_8php.html#a696acf1dd8070e479adcc80c63c6718c">suggest_init()</a>, <a class="el" href="socgraph_8php.html#a76e6fca3d2bc842dcd9e710bb87c8329">suggestion_query()</a>, <a class="el" href="dir__fns_8php.html#aa666e7df6ca8c332f4081c9b66b4bdf6">sync_directories()</a>, <a class="el" href="items_8php.html#ab1bce4261bcf75ad62753b498a144d17">tag_deliver()</a>, <a class="el" href="taxonomy_8php.html#aaf90ba8b839d6459065f39a4f1109b8a">tagadelic()</a>, <a class="el" href="tagger_8php.html#a0e4a3eb177d1684553c547503d67161c">tagger_content()</a>, <a class="el" href="tagrm_8php.html#adfd4ea5b4d7fc6d9c9e042af5cd7d49a">tagrm_content()</a>, <a class="el" href="tagrm_8php.html#a1702f40aa53a2fa93deade1f609abe78">tagrm_post()</a>, <a class="el" href="items_8php.html#a88c6cf7649ac836fbbed82a7a0315110">tgroup_check()</a>, <a class="el" href="thing_8php.html#a24a35f1e64029a67fdbea94a776ae04b">thing_content()</a>, <a class="el" href="thing_8php.html#a8be23b1d475ec3d9291999221c674c80">thing_init()</a>, <a class="el" href="bbcode_8php.html#a39de4de32a9456d1ca914d0dc52bd322">tryzrlaudio()</a>, <a class="el" href="bbcode_8php.html#aa92f119341f4c69dcef2768a013079b8">tryzrlvideo()</a>, <a class="el" href="plugin_8php.html#a093a9cb98f51e3643634bd8bc6ed6e76">uninstall_plugin()</a>, <a class="el" href="plugin_8php.html#a56f71fe5adf9586ce950523d8180443e">unregister_hook()</a>, <a class="el" href="datetime_8php.html#af1cd77c97c901d9239cb7a61f97f9826">update_birthdays()</a>, <a class="el" href="dir__fns_8php.html#a44062d4b471d1e83f92f6c184585aa13">update_directory_entry()</a>, <a class="el" href="zot_8php.html#ab319d1d9fff9c7775d9daef42d1f33dd">update_modtime()</a>, <a class="el" href="queue__fn_8php.html#a4c2876181f75a4a61e85b7f00dfdbba1">update_queue_time()</a>, <a class="el" href="items_8php.html#a2baa9e05f1e8aa3dd61c85803ae39bd6">update_remote_id()</a>, <a class="el" href="socgraph_8php.html#a790690bb1a1d02483fe31632a160144d">update_suggestions()</a>, <a class="el" href="account_8php.html#ac5c570a2d46446bad4dd2501e9c5a4b1">user_allow()</a>, <a class="el" href="account_8php.html#ad07be417ac7eda939768804106ddea3d">user_approve()</a>, <a class="el" href="account_8php.html#ac1653efba62493b9d87513e1b6c04c83">user_deny()</a>, <a class="el" href="classRedBasicAuth.html#a8dfd9a0953f8884723b421b7c1acf79b">RedBasicAuth\validateUserPass()</a>, <a class="el" href="Contact_8php.html#a6348a532c9d26cd1c9afbc9aa6aa8960">vcard_from_xchan()</a>, <a class="el" href="account_8php.html#acd6b8d2124ba5ea4f4794d2c58ae8bf5">verify_email_address()</a>, <a class="el" href="viewconnections_8php.html#ab6c4d983e97b3a8a879567ff76507776">viewconnections_content()</a>, <a class="el" href="viewsrc_8php.html#a6eff3d0c1d7d14b335c4edb785cd60a4">viewsrc_content()</a>, <a class="el" href="vote_8php.html#a6aa67489bf458ca5e3206e46dac68596">vote_content()</a>, <a class="el" href="vote_8php.html#ae0c6610f40afbbc1f4fe6494c51fbab2">vote_init()</a>, <a class="el" href="vote_8php.html#a57a9516ee1b923b224e66dcc47377fb2">vote_post()</a>, <a class="el" href="webpages_8php.html#af3b7397d4abc153e3d2147740ee1a41d">webpages_content()</a>, <a class="el" href="wfinger_8php.html#ae21e50c8d0a5f3c9be9f43a4e519acd3">wfinger_init()</a>, <a class="el" href="widgets_8php.html#a0e2f5179ed1a73b282dfda7270fcabb3">widget_bookmarkedchats()</a>, <a class="el" href="widgets_8php.html#a5ab3b64496e02cab56429978ad55f1c0">widget_filer()</a>, <a class="el" href="widgets_8php.html#ad1bf7aa69e8d100d95faba17c7bc91cd">widget_follow()</a>, <a class="el" href="widgets_8php.html#a313a8d10ab81c71357c12e67e4d7efd5">widget_item()</a>, <a class="el" href="widgets_8php.html#a94203eb9bcd63cbdecbbcb15163598d8">widget_savedsearch()</a>, <a class="el" href="widgets_8php.html#aaa73bcf1702eaadd9dcd253502f55e01">widget_settings_menu()</a>, <a class="el" href="widgets_8php.html#a50b1410238100c8a94c06b0aa63ee3b8">widget_suggestedchats()</a>, <a class="el" href="xchan_8php.html#a9853348bf1a35c644460221ba75edc2d">xchan_content()</a>, <a class="el" href="text_8php.html#a543447c5ed766535221e2d9636b379ee">xchan_mail_query()</a>, <a class="el" href="text_8php.html#a36a2e5d418ee81140f25c4233cfecd1f">xchan_query()</a>, <a class="el" href="xrd_8php.html#aee3cf087968e4a0ff3a87de16eb23270">xrd_init()</a>, <a class="el" href="text_8php.html#a324c58f37f6acdf9cd1922aa76077d9f">z_input_filter()</a>, <a class="el" href="include_2attach_8php.html#aeb07968990e66a88c95483ca09a7f909">z_readdir()</a>, <a class="el" href="zfinger_8php.html#a8139b83a22ef98869adc10aa224027a0">zfinger_init()</a>, <a class="el" href="identity_8php.html#a680fbafc2db023c5b1309e0180e81315">zid_init()</a>, <a class="el" href="items_8php.html#a004e89d86b0f29b2c4da20108ecc4091">zot_feed()</a>, <a class="el" href="zot_8php.html#a95528377d7303131958c9f0b7158fdce">zot_finger()</a>, <a class="el" href="zot_8php.html#ae7cec2b417b5858fd4a41070f843d1d7">zot_get_hublocs()</a>, <a class="el" href="zot_8php.html#a55056e863a7860bc0cf922e78fcce073">zot_gethub()</a>, <a class="el" href="zot_8php.html#aeea071f17e306fe3d0c488551906bfab">zot_import()</a>, <a class="el" href="zot_8php.html#a928f5643ca66ae9635d85aeb2be62e03">zot_process_response()</a>, <a class="el" href="zot_8php.html#a7ac30ff51274bf0b6d3eade37972145c">zot_refresh()</a>, and <a class="el" href="zotfeed_8php.html#a24dfc23d366e7f840cf2847d0c1c8eac">zotfeed_init()</a>.</p>
+<p>Execute a SQL query with printf style args. </p>
+<p>printf style arguments s and d are replaced with variable arguments, which should each be appropriately <a class="el" href="dba__driver_8php.html#ab222aa1dbf9ea93b320f82028739127e" title="Escape strings being passed to DB queries.">dbesc()</a> or intval(). SELECT queries return an array of results or false if SQL or DB error. Other queries return true if the command was successful or false if it wasn't.</p>
+<p>Example: $r = q("SELECT * FROM &lt;tt&gt;%s&lt;/tt&gt; WHERE &lt;tt&gt;uid&lt;/tt&gt; = %d", 'user', 1);</p>
+<dl class="params"><dt>Parameters</dt><dd>
+ <table class="params">
+ <tr><td class="paramtype">string</td><td class="paramname">$sql</td><td>The SQL query to execute </td></tr>
+ </table>
+ </dd>
+</dl>
+<dl class="section return"><dt>Returns</dt><dd>bool|array </dd></dl>
+
+<p>Referenced by <a class="el" href="Contact_8php.html#ae8803c330352cbf1e828eb7490edf47e">abook_connections()</a>, <a class="el" href="Contact_8php.html#ad5b02c2a962ee55b1b7ca6c159d6e4c5">abook_self()</a>, <a class="el" href="Contact_8php.html#a024919623a830e8703ac4f23496dd66c">abook_toggle_flag()</a>, <a class="el" href="Contact_8php.html#a5101d7eca5d6f387e5555f03fe249e33">account_remove()</a>, <a class="el" href="account_8php.html#a4328c40ee4b3d68630cf1ebb7b9d4d89">account_service_class_fetch()</a>, <a class="el" href="account_8php.html#a43e3042b2723d76915a030bac3c668b6">account_total()</a>, <a class="el" href="auth_8php.html#a07bae0e623e2daa9ee2cd5a8aa294dee">account_verify_password()</a>, <a class="el" href="achievements_8php.html#a35ae04ada0e227d19671f289a32fb30e">achievements_content()</a>, <a class="el" href="acl_8php.html#ac6776dba871806ecdb5d1659bc2eb07a">acl_init()</a>, <a class="el" href="items_8php.html#a81565acf729e629e588d823308448e3c">add_source_route()</a>, <a class="el" href="admin_8php.html#afef415e4011607fbb665610441595015">admin_content()</a>, <a class="el" href="admin_8php.html#ad6f87a764fd35f522c7b4c351d7878ec">admin_page_channels()</a>, <a class="el" href="admin_8php.html#a42e628f367c168add8013352ac74d33f">admin_page_channels_post()</a>, <a class="el" href="admin_8php.html#aaa6addf2dbc3f3fcf99244a56b41eade">admin_page_dbsync()</a>, <a class="el" href="admin_8php.html#a6943543f3138f6ee182cb701f415d1cc">admin_page_hubloc()</a>, <a class="el" href="admin_8php.html#a60ba9783ad14545814919970bc3fb725">admin_page_hubloc_post()</a>, <a class="el" href="admin_8php.html#a3deba594ca1e11694eac1de0b724ef0a">admin_page_profs()</a>, <a class="el" href="admin_8php.html#a278289bc6d45f6f2a272a7ab6a1d1057">admin_page_profs_post()</a>, <a class="el" href="admin_8php.html#ac6e95b920b5abd030cc522964987087a">admin_page_summary()</a>, <a class="el" href="admin_8php.html#a62f10f90c47686c9c3c37c4c03a108d2">admin_page_users()</a>, <a class="el" href="admin_8php.html#a5a696706a3869800e65fb365214241b7">admin_page_users_post()</a>, <a class="el" href="identity_8php.html#aa870d2c1f558cfd52bef05bc124e8fa4">advanced_profile()</a>, <a class="el" href="socgraph_8php.html#a16ac51c505d72987ed8d6d6aed0e8586">all_friends()</a>, <a class="el" href="zot_8php.html#a703f528ade8382cf374e4119bd6f7859">allowed_public_recips()</a>, <a class="el" href="include_2api_8php.html#a7759ccddc8dff012ad168e511ffe5af5">api_direct_messages_box()</a>, <a class="el" href="include_2api_8php.html#a0991f72554f821255397d615e76f3203">api_direct_messages_new()</a>, <a class="el" href="include_2api_8php.html#a2c71b1226ef1283b5370bd1c200fee5f">api_favorites()</a>, <a class="el" href="include_2api_8php.html#a36344c80b8e9755da2f2dd3a0e28cce8">api_ff_ids()</a>, <a class="el" href="include_2api_8php.html#a4c6fb9fb5203aa60f4b3afd4521db8ea">api_format_items()</a>, <a class="el" href="include_2api_8php.html#aa40bae797bcd9ccacffdce5a3b5a1afa">api_get_user()</a>, <a class="el" href="include_2api_8php.html#ad5fe62d6c25c86999f627b2e6cfde536">api_group()</a>, <a class="el" href="include_2api_8php.html#ae46f964e5a9c80b96dc78df61c09ed3a">api_group_members()</a>, <a class="el" href="include_2api_8php.html#afe534f826e4282b72d66e8cadca7bb73">api_login()</a>, <a class="el" href="include_2api_8php.html#a645397787618b5c548a31e8686e8cca4">api_status_show()</a>, <a class="el" href="include_2api_8php.html#ad4c29f43418f6110f85a6b3998239ab4">api_statuses_destroy()</a>, <a class="el" href="include_2api_8php.html#aa0d6b29fff0344a8e67f3507a6d01410">api_statuses_f()</a>, <a class="el" href="include_2api_8php.html#a528d8070ee74ea800102936ce73cf366">api_statuses_home_timeline()</a>, <a class="el" href="include_2api_8php.html#a8b25a186bd0893f51aa72a62f655735e">api_statuses_mentions()</a>, <a class="el" href="include_2api_8php.html#ad24ce1bf20867add4c9211a8eaf93f22">api_statuses_public_timeline()</a>, <a class="el" href="include_2api_8php.html#ae0fa388479cace9c5a7a45b571ab42f8">api_statuses_repeat()</a>, <a class="el" href="include_2api_8php.html#af6f1d89cdb0a0621025efbec1597bc63">api_statuses_show()</a>, <a class="el" href="include_2api_8php.html#afb99daa6b731bf497b81f2128084852c">api_user()</a>, <a class="el" href="include_2api_8php.html#abe8e929e93f7ab134b1cb1fb30f19a76">api_users_show()</a>, <a class="el" href="include_2apps_8php.html#a6b472df85ed875e7ae75642cece5206f">app_destroy()</a>, <a class="el" href="include_2apps_8php.html#a1adcd1aff4d36ad0277daca9f3d2bbe2">app_installed()</a>, <a class="el" href="include_2apps_8php.html#a01cabfb33b2d0d843cf3bf4e3d3f0ab0">app_list()</a>, <a class="el" href="include_2apps_8php.html#a15626f24069c18816f7cdaf4735f58f9">app_store()</a>, <a class="el" href="include_2apps_8php.html#aeab6a62d2f3dfaa86ed043a006305f46">app_update()</a>, <a class="el" href="appman_8php.html#af48805ac2f6f123f2681a8ae1c6f123f">appman_content()</a>, <a class="el" href="include_2attach_8php.html#a0d07c5b83d3d54e186f752e571847b36">attach_by_hash()</a>, <a class="el" href="include_2attach_8php.html#ad991208ce939387e2f93a3bce7d09932">attach_by_hash_nodata()</a>, <a class="el" href="include_2attach_8php.html#a5c0875eafb8c0f8a0620ff7a875a2221">attach_change_permissions()</a>, <a class="el" href="include_2attach_8php.html#a887d2d44a3ef18dcb6624e7fb58dc8e3">attach_count_files()</a>, <a class="el" href="include_2attach_8php.html#a70bd666e080c2af5a91f5d14c297b8cd">attach_delete()</a>, <a class="el" href="mod_2attach_8php.html#aa88eb5ad87aa1036a30e70339cc6c1b1">attach_init()</a>, <a class="el" href="include_2attach_8php.html#a3634af95f11a023dd8e882c3c7a3600d">attach_list_files()</a>, <a class="el" href="include_2attach_8php.html#ab6830b3ab74a5d284876141ac80f6cbc">attach_mkdir()</a>, <a class="el" href="include_2attach_8php.html#a84a8a64c4805e1525b42d4add464833f">attach_store()</a>, <a class="el" href="security_8php.html#adc7bf51e3b8d67bd80e9348f9ab03733">authenticate_success()</a>, <a class="el" href="bb2diaspora_8php.html#aab32042f8bd63552d3fadeeae9eab083">bb2diaspora_itemwallwall()</a>, <a class="el" href="bb2diaspora_8php.html#a5258d2f1addeb0a2a6b54c4f9e7d0f34">bb2dmention_callback()</a>, <a class="el" href="block_8php.html#a8a82a470acdfbc7a8e749509caeeea45">block_content()</a>, <a class="el" href="blocks_8php.html#a2531a8fd51db3cecb2eb20c002c66e12">blocks_content()</a>, <a class="el" href="include_2bookmarks_8php.html#aef1cb2968c41c759f2d106e1088ca323">bookmark_add()</a>, <a class="el" href="mod_2bookmarks_8php.html#a6b7942f3d27e40f0f47c88704127b9b3">bookmarks_init()</a>, <a class="el" href="zot_8php.html#aa97b33b619dd7132a9274f852af6ceb5">build_sync_packet()</a>, <a class="el" href="plugin_8php.html#a7f05de16c0a32602853b09b99dd85e7c">call_hooks()</a>, <a class="el" href="taxonomy_8php.html#aa8f8a1ff85daef046298e93c83e7a1b4">catblock()</a>, <a class="el" href="contact__widgets_8php.html#a165eb021e61c4dcab2a552f28628d353">categories_widget()</a>, <a class="el" href="security_8php.html#a8d23d2597aae380a3341872fe9513380">change_channel()</a>, <a class="el" href="channel_8php.html#a9c6a6179e0e626398ebecc6151905ef1">channel_content()</a>, <a class="el" href="Contact_8php.html#a4e8af0f0525161da74583c04b8b03097">channel_remove()</a>, <a class="el" href="identity_8php.html#a77d2237f1846964634b1c99089c27c7d">channel_total()</a>, <a class="el" href="Contact_8php.html#a483cda56f9e37c3a4a8773dcdfeb0258">channelx_by_hash()</a>, <a class="el" href="Contact_8php.html#a3a0844dac1e86d523de5d2f432cfeebc">channelx_by_n()</a>, <a class="el" href="Contact_8php.html#a87e699f74a1102b25e8aa0432d86a91e">channelx_by_nick()</a>, <a class="el" href="chanview_8php.html#a4192c6da888c8c1165851acf9ad4cb8b">chanview_content()</a>, <a class="el" href="mod_2chat_8php.html#a8b0b8bee6fef6477e8c64c5e951b1b4f">chat_content()</a>, <a class="el" href="include_2chat_8php.html#acea6b176eb7aff44d9ba3ae24ce511d3">chat_message()</a>, <a class="el" href="mod_2chat_8php.html#a999d594745597c656c9760253ae297ad">chat_post()</a>, <a class="el" href="include_2chat_8php.html#acdc80dba4eb796c7472b21129b435422">chatroom_create()</a>, <a class="el" href="include_2chat_8php.html#a2ba3af6884ecdce95de69262fe599639">chatroom_destroy()</a>, <a class="el" href="include_2chat_8php.html#a2c95b545e46bfee64faa05ecf0afea91">chatroom_enter()</a>, <a class="el" href="include_2chat_8php.html#a1ee1360f7d2549c7549ae07cb5190f0f">chatroom_leave()</a>, <a class="el" href="include_2chat_8php.html#aedcb532a0627b8644001a2fadab4e87a">chatroom_list()</a>, <a class="el" href="include_2chat_8php.html#a26abdccc2a278a59899896dbbfc6f049">chatroom_list_count()</a>, <a class="el" href="chatsvc_8php.html#a7032784215e1f6747cf385a6598770f9">chatsvc_content()</a>, <a class="el" href="chatsvc_8php.html#a28d248b056fa47452e28ed01130e9116">chatsvc_init()</a>, <a class="el" href="chatsvc_8php.html#a7c9a9b9c24a2b02eed8efd6b09632d03">chatsvc_post()</a>, <a class="el" href="account_8php.html#ae052bd5558847bd38e89c213561a9771">check_account_email()</a>, <a class="el" href="account_8php.html#aaff7720423417a4333697894ffd9ddeb">check_account_invite()</a>, <a class="el" href="boot_8php.html#a4c02d88e66852a01bd5a1feecb7c3ce3">check_config()</a>, <a class="el" href="items_8php.html#a87ac9e359591721a824ecd23bbb56296">check_item_source()</a>, <a class="el" href="dir__fns_8php.html#a2f7d74bb2aea8bcd2537aee5c6708a16">check_upstream_directory()</a>, <a class="el" href="text_8php.html#a0c65597bb4aed3a039eb795ff540e5e3">check_webbie()</a>, <a class="el" href="classCache.html#ab14d0f4bdf7116a94d545c574b38f568">Cache\clear()</a>, <a class="el" href="items_8php.html#a772f0ae77ad77c8ab68ed918a3870946">collect_recipients()</a>, <a class="el" href="comanche_8php.html#a5a7ab801717d38e91ac910b933973887">comanche_block()</a>, <a class="el" href="socgraph_8php.html#a7d34cd58025bcd9e575282f44db75918">common_friends()</a>, <a class="el" href="socgraph_8php.html#ac343a846241d36cdf046b08f3396cfe9">common_friends_zcid()</a>, <a class="el" href="common_8php.html#aca62f113655809f41f49042ce9b123c2">common_init()</a>, <a class="el" href="connect_8php.html#ad46a38f32fd7a3d324b1fa26373efa36">connect_init()</a>, <a class="el" href="connect_8php.html#a417ec27afe33f21a929667a665e32ee2">connect_post()</a>, <a class="el" href="connections_8php.html#aec2e457420fce3e3bf6a9f48e36df25c">connections_content()</a>, <a class="el" href="connections_8php.html#a1224058db8e3fb56463eb312f98e561d">connections_post()</a>, <a class="el" href="connedit_8php.html#a795acb3d9d841f55c255d7611681ab67">connedit_content()</a>, <a class="el" href="connedit_8php.html#a4da871e075597a09a8b374b9171dd92e">connedit_init()</a>, <a class="el" href="connedit_8php.html#a234c48426b652bf4d37053f2af329ac5">connedit_post()</a>, <a class="el" href="items_8php.html#adc26e08aa61f5666da04ab5d2a9d68a6">consume_feed()</a>, <a class="el" href="text_8php.html#ad6432621d0fafcbcf3d3b9b49bef7784">contact_block()</a>, <a class="el" href="contact__selectors_8php.html#a2c743d2eb526eb758d943a1490162d75">contact_profile_assign()</a>, <a class="el" href="Contact_8php.html#a28e062c884331dbb5dfa713228c25ad6">contact_remove()</a>, <a class="el" href="acl__selectors_8php.html#a9476997d2968a5794f3723878ed89c91">contact_select()</a>, <a class="el" href="contactgroup_8php.html#a18c7391b1b25debaf98c9dba639caab3">contactgroup_content()</a>, <a class="el" href="socgraph_8php.html#af29d056beec10b4e38e5209c92452894">count_all_friends()</a>, <a class="el" href="socgraph_8php.html#a887d576f21fd708132a06d0f72f90f84">count_common_friends()</a>, <a class="el" href="socgraph_8php.html#af175807406d94407a5e11742a3287746">count_common_friends_zcid()</a>, <a class="el" href="account_8php.html#a141fe579c351c78209d425473f978eb5">create_account()</a>, <a class="el" href="identity_8php.html#a345f4c943d84de502ec6e72d2c813945">create_identity()</a>, <a class="el" href="classRedMatrix_1_1RedDAV_1_1RedDirectory.html#aca0e8d574ea66a0e210f571700663c62">RedMatrix\RedDAV\RedDirectory\createDirectory()</a>, <a class="el" href="classRedMatrix_1_1RedDAV_1_1RedDirectory.html#a58e750256cdc2f0f79fbe8d5463ffefe">RedMatrix\RedDAV\RedDirectory\createFile()</a>, <a class="el" href="boot_8php.html#ad206598b909e8eb67eb0e0bb5ef69c13">current_theme()</a>, <a class="el" href="include_2config_8php.html#a549910227348003efc3c05c9105c42da">del_config()</a>, <a class="el" href="include_2config_8php.html#a7ad2081c5f812ac4387fd76f3762d941">del_pconfig()</a>, <a class="el" href="include_2config_8php.html#a9c171def547deee16738dc58fdeb4b72">del_xconfig()</a>, <a class="el" href="delegate_8php.html#a943eea8996ef348eb845c498f9f354dd">delegate_content()</a>, <a class="el" href="zot_8php.html#adfeb9400ae6b726beec89f8f1e8fde72">delete_imported_item()</a>, <a class="el" href="items_8php.html#aac8c9eb4338e2a996c43914392c6cfdb">delete_item_lowlevel()</a>, <a class="el" href="deliver_8php.html#a397afcb9afecf0c1816b0951189dd346">deliver_run()</a>, <a class="el" href="diaspora_8php.html#a006731620a5242d410358b32678e48e3">diaspora_asphoto()</a>, <a class="el" href="diaspora_8php.html#a0fb2abe304aae19efc040a5e6b917829">diaspora_comment()</a>, <a class="el" href="diaspora_8php.html#adef30b6fac948baedcc7194d5d155b5f">diaspora_conversation()</a>, <a class="el" href="diaspora_8php.html#ab99505944728d46585b8312989de533d">diaspora_dispatch_public()</a>, <a class="el" href="diaspora_8php.html#aa8e551a53fcce34be3942d0c3e20d1f4">diaspora_get_contact_by_handle()</a>, <a class="el" href="diaspora_8php.html#a5ed66b910d7b0284f9b3ee04e72306ff">diaspora_handle_from_contact()</a>, <a class="el" href="diaspora_8php.html#a5d57518545baa31cf8a85a937a267681">diaspora_like()</a>, <a class="el" href="bb2diaspora_8php.html#a4a27604f0745f1efda672966aaca9a3b">diaspora_mention_callback()</a>, <a class="el" href="diaspora_8php.html#a7cff2f8f11044c1b3a360f20e1bbee46">diaspora_message()</a>, <a class="el" href="diaspora_8php.html#a71fe9bb66626b4197ae018a230778bb2">diaspora_photo()</a>, <a class="el" href="diaspora_8php.html#a20b968d64ef26afe5cb0cc75a7570a31">diaspora_post()</a>, <a class="el" href="diaspora_8php.html#a131abd521b218d6ae6f7d2917d8b2605">diaspora_process_outbound()</a>, <a class="el" href="diaspora_8php.html#ac1ab782a34552a7c6b4dc961754ed598">diaspora_request()</a>, <a class="el" href="diaspora_8php.html#a2bf43f6b5890897f425ef4325d34b007">diaspora_reshare()</a>, <a class="el" href="diaspora_8php.html#a938c7ee808d38725c0988fa6006805b9">diaspora_retraction()</a>, <a class="el" href="diaspora_8php.html#af4698b165766f83d89ec1ea964bc92cc">diaspora_send_followup()</a>, <a class="el" href="diaspora_8php.html#ae6f52efd81fe515cd9912bc8293abf5b">diaspora_send_images()</a>, <a class="el" href="diaspora_8php.html#aeb2bb78f620dbf51d9335e6eb7444f2c">diaspora_send_mail()</a>, <a class="el" href="diaspora_8php.html#a0b3628a5e53332c3d3196b689fe2b94d">diaspora_send_relay()</a>, <a class="el" href="diaspora_8php.html#a69f250b078a46e405647428ec3399a16">diaspora_share()</a>, <a class="el" href="diaspora_8php.html#aa34d2748bb97e9e193cacd572f335055">diaspora_signed_retraction()</a>, <a class="el" href="diaspora_8php.html#aa704d6aa2ac77be345c0f501168e6e56">diaspora_transmit()</a>, <a class="el" href="dirsearch_8php.html#a7d4cd9890d5ed23c3efc58e2a778a305">dir_parse_query()</a>, <a class="el" href="taxonomy_8php.html#a088371f4bc19155b2291508f5cd63332">dir_tagadelic()</a>, <a class="el" href="mod_2directory_8php.html#aac79396570d759da2efac24fcedf5b44">directory_content()</a>, <a class="el" href="mod_2directory_8php.html#a5ee59c213508b6b9787612a8219cb5bf">directory_init()</a>, <a class="el" href="include_2directory_8php.html#aa75d3b0697ca1456aaabdb37a74aa0f0">directory_run()</a>, <a class="el" href="dirsearch_8php.html#aa1fb04e1de4f25b63349ac78f94ceb4c">dirsearch_content()</a>, <a class="el" href="include_2network_8php.html#a5176176ddc1906d91f186df6fbd87b48">discover_by_url()</a>, <a class="el" href="include_2network_8php.html#a63e62946e194928eb17c5a9f2bbef0fe">discover_by_webbie()</a>, <a class="el" href="display_8php.html#a37137c98d47bf3306f4c2bb9f5b60de0">display_content()</a>, <a class="el" href="account_8php.html#a0d183a3cb4c67a0f5e906811df7a1fc9">downgrade_accounts()</a>, <a class="el" href="items_8php.html#a555762e1022a4b8e3c3abd32e7812408">drop_item()</a>, <a class="el" href="editblock_8php.html#abbe8f55de06967bc8d79d620509a49e6">editblock_content()</a>, <a class="el" href="editlayout_8php.html#aa877e4157a26b099de904164181dd386">editlayout_content()</a>, <a class="el" href="editpost_8php.html#a34011690864d122680c802e9e748ccfb">editpost_content()</a>, <a class="el" href="editwebpage_8php.html#a375e945255fad79a71036528f7480650">editwebpage_content()</a>, <a class="el" href="items_8php.html#a56b0f5d2cb36eb8f4bfca84813884f86">encode_item()</a>, <a class="el" href="event_8php.html#ac9f206819186b65952ac1869f0da8c6e">event_addtocal()</a>, <a class="el" href="event_8php.html#af5ac41e7ea3f7131088fe6333fd2846c">event_store_event()</a>, <a class="el" href="event_8php.html#a7378e839ac3de9d55579eb3ec48eaf92">event_store_item()</a>, <a class="el" href="events_8php.html#a1d293fb217ae6bc9e3858c4b32e363ec">events_content()</a>, <a class="el" href="events_8php.html#ab3e8a8f901175f8e40a8089eea45c075">events_post()</a>, <a class="el" href="include_2group_8php.html#a22a81875259c7d3d64d4848afea6b345">expand_groups()</a>, <a class="el" href="expire_8php.html#a444e45c9b67727b27db4c779fd51a298">expire_run()</a>, <a class="el" href="externals_8php.html#a4df44079e6f915286088b7a0d44db926">externals_run()</a>, <a class="el" href="fbrowser_8php.html#aee476addcf7a3e0fe9454f7dfd5a56c4">fbrowser_content()</a>, <a class="el" href="feed_8php.html#af86137700b56f33d1d5f25c8dec22c04">feed_init()</a>, <a class="el" href="items_8php.html#adf980098b6de9c3993bc3ff26a8dd6f9">fetch_post_tags()</a>, <a class="el" href="contact__widgets_8php.html#a1eda66319d170f60a8d07c7ece95533b">fileas_widget()</a>, <a class="el" href="filer_8php.html#a5fd5d7e61b2f9c43cb5f110c89dc4274">filer_content()</a>, <a class="el" href="filerm_8php.html#ae2eb28d2054fa2c37e38689882172208">filerm_content()</a>, <a class="el" href="filestorage_8php.html#a61bb1be78472555df4ce619f51014040">filestorage_content()</a>, <a class="el" href="items_8php.html#a8cda98925a4c5c2f6dade70d9586d79a">filter_insecure()</a>, <a class="el" href="diaspora_8php.html#aade0c165fcdded71352c7a67bf6ce37b">find_diaspora_person_by_handle()</a>, <a class="el" href="include_2attach_8php.html#a4dbfd7e1cef52aa9ef52f4b88929fa86">find_filename_by_hash()</a>, <a class="el" href="include_2attach_8php.html#a052f14487ff2ce72f62a09fac8d7e997">find_folder_hash_by_attach_hash()</a>, <a class="el" href="classRedMatrix_1_1RedDAV_1_1RedBrowser.html#ad4bc0516533c62733f38043a37267d78">RedMatrix\RedDAV\RedBrowser\findAttachHash()</a>, <a class="el" href="classRedMatrix_1_1RedDAV_1_1RedBrowser.html#a0733e38e254474d9a456825e72f1ddfd">RedMatrix\RedDAV\RedBrowser\findAttachIdByHash()</a>, <a class="el" href="items_8php.html#a0cf98bb619f07dd18f602683a55a5f59">first_post_date()</a>, <a class="el" href="item_8php.html#a7b63a9d0cd02096e17dcf11f4afa7c10">fix_attached_photo_permissions()</a>, <a class="el" href="items_8php.html#aba98fcbbcd7044a7e9ea34edabc14c87">fix_private_photos()</a>, <a class="el" href="boot_8php.html#aca5e42678e178c6b9034610d66666fd7">fix_system_urls()</a>, <a class="el" href="fsuggest_8php.html#aa6c49ed4b50a387f1845f36844dd7998">fsuggest_content()</a>, <a class="el" href="fsuggest_8php.html#a61ecfe10ce937ed526614f8fd3de3c7d">fsuggest_post()</a>, <a class="el" href="classRedMatrix_1_1RedDAV_1_1RedBrowser.html#af764d5f14df751f9ec86c34fab300c09">RedMatrix\RedDAV\RedBrowser\generateDirectoryIndex()</a>, <a class="el" href="classCache.html#a70392b109331897bf9fdd7f1960e21de">Cache\get()</a>, <a class="el" href="classRedMatrix_1_1RedDAV_1_1RedFile.html#a7241beecd01f5bb4e74659863dd85bd8">RedMatrix\RedDAV\RedFile\get()</a>, <a class="el" href="permissions_8php.html#aeca9b280f3dc3358c89976d81d690008">get_all_perms()</a>, <a class="el" href="identity_8php.html#ad2c97627a313d53df1a1c7b4215ddb51">get_birthdays()</a>, <a class="el" href="identity_8php.html#ac73b3e13778c564c877554517a7f51ba">get_channel_by_nick()</a>, <a class="el" href="identity_8php.html#a293f416ce9050220b183e08ff5890216">get_channel_default_perms()</a>, <a class="el" href="include_2attach_8php.html#a6aa00ea010ea030110faefb75eafc1ce">get_cloudpath()</a>, <a class="el" href="include_2config_8php.html#af08b7adb63adfb2eda7c466fba0cce74">get_config_from_storage()</a>, <a class="el" href="identity_8php.html#ae381db3d43f8e7c1da8b15d14ecf5312">get_events()</a>, <a class="el" href="items_8php.html#a536d0313b6ffe33b9d2490c4e25c5361">get_item_elements()</a>, <a class="el" href="identity_8php.html#a332df795f684788002f5a6424abacfd7">get_online_status()</a>, <a class="el" href="identity_8php.html#aaff86ee3b5984821e7a256c2da5f1a51">get_sys_channel()</a>, <a class="el" href="taxonomy_8php.html#a7747fa859ac56fbffd4f9782d85505de">get_things()</a>, <a class="el" href="spam_8php.html#ab8fd81a82c9622cbebb8ceab6b310ca6">get_words()</a>, <a class="el" href="classRedMatrix_1_1RedDAV_1_1RedDirectory.html#a825dc5f3e0f83f50736c16daa6a4809d">RedMatrix\RedDAV\RedDirectory\getDir()</a>, <a class="el" href="classRedMatrix_1_1RedDAV_1_1RedDirectory.html#a69db5f641f8f5dc999e55cee1832ecd5">RedMatrix\RedDAV\RedDirectory\getLastModified()</a>, <a class="el" href="classRedMatrix_1_1RedDAV_1_1RedDirectory.html#a69db443ed3c84938b4352fe515bf8d68">RedMatrix\RedDAV\RedDirectory\getQuotaInfo()</a>, <a class="el" href="gprobe_8php.html#adf72cb0a70b5b9d99fdec1cc60e18ed1">gprobe_run()</a>, <a class="el" href="include_2group_8php.html#a06ec565d2b64e79044e7c1bf91a2a4ce">group_add()</a>, <a class="el" href="include_2group_8php.html#a0122ef312df2c5546b1a46b3e6c7b31b">group_add_member()</a>, <a class="el" href="include_2group_8php.html#abd66a5ea34a07a3422dc2dde6c7b3ecb">group_byname()</a>, <a class="el" href="mod_2group_8php.html#a07a64f6c65b0080d8190b3d9728a7a83">group_content()</a>, <a class="el" href="include_2group_8php.html#a5bd191d9692e6c34d48c0ede10810f09">group_get_members()</a>, <a class="el" href="mod_2group_8php.html#aed1f009b1221348021bb34761160ef35">group_post()</a>, <a class="el" href="include_2group_8php.html#a90e157b3e1b99c981809cb5a2abd3245">group_rec_byhash()</a>, <a class="el" href="include_2group_8php.html#a4118f498bbd1530c1d0136d016d197a5">group_rmv()</a>, <a class="el" href="include_2group_8php.html#a540e3ef36f47d47532646be4241f6518">group_rmv_member()</a>, <a class="el" href="acl__selectors_8php.html#aa1e3bc344ca2b29f97eb9860216d21a0">group_select()</a>, <a class="el" href="include_2group_8php.html#a6a69bd7be032fa8ce4e49c43a42cc6e9">group_side()</a>, <a class="el" href="include_2group_8php.html#afb802ae2ce73aae4bc36d157f7b6a92f">groups_containing()</a>, <a class="el" href="items_8php.html#a52c24114b73c0bdb605a03cd29712223">handle_feed()</a>, <a class="el" href="text_8php.html#aa22feef4de326e1d7078dedd892e615c">handle_tag()</a>, <a class="el" href="hcard_8php.html#ac34f26b0e6a37eef44fa49bea135136d">hcard_init()</a>, <a class="el" href="home_8php.html#a6e3dbf78f4ed74ab2577de221190b33f">home_content()</a>, <a class="el" href="hubloc_8php.html#ad86214b3a74084bd7b54e8d6c919ce4d">hubloc_change_primary()</a>, <a class="el" href="identity_8php.html#afaedbc8e2d2a70ec8b006162baac5249">identity_basic_export()</a>, <a class="el" href="identity_8php.html#ac9fcd5c4c371998790b5c55c3d0f4633">identity_check_service_class()</a>, <a class="el" href="identity_8php.html#a2ab5172eabd375869060c9ad68323f5c">identity_selector()</a>, <a class="el" href="impel_8php.html#ab7db6fca43b42ea4332cb3e841b3cf7b">impel_init()</a>, <a class="el" href="items_8php.html#a2c3f97b2109c05df86d97449b3c78ebc">import_author_diaspora()</a>, <a class="el" href="items_8php.html#a6bee35961f2e32905f20367a9309d627">import_author_rss()</a>, <a class="el" href="items_8php.html#a37f79991f36811cf847446ff60e8e11f">import_author_unknown()</a>, <a class="el" href="zot_8php.html#ad149f1e98c0c5b88ff9147e6ee3f330d">import_author_zot()</a>, <a class="el" href="zot_8php.html#a3bf11286c2619b4ca28e49d5b5ab374a">import_directory_keywords()</a>, <a class="el" href="zot_8php.html#a20750dd2c36961013fd382fb34e1366c">import_directory_profile()</a>, <a class="el" href="import_8php.html#af17fef0410518f7eac205d0ea416eaa2">import_post()</a>, <a class="el" href="photo__driver_8php.html#a78f5a10c568d2a9bbbb129dc96548887">import_profile_photo()</a>, <a class="el" href="zot_8php.html#a2657e141d62d5f67ad3c87651b585299">import_site()</a>, <a class="el" href="zot_8php.html#a528e97ca5d69c3b7f35c5d954afde315">import_xchan()</a>, <a class="el" href="plugin_8php.html#a482131013272a1d5d5c1b1469c6c55d5">install_plugin()</a>, <a class="el" href="invite_8php.html#aeb0881c0f93c8e8552e5ed756ce6e5a5">invite_post()</a>, <a class="el" href="hubloc_8php.html#aebd244b4616ded022cbbee5e82926951">is_matrix_url()</a>, <a class="el" href="identity_8php.html#aa4bd4abfcba883f43919e89ec6419025">is_sys_channel()</a>, <a class="el" href="items_8php.html#a02ca33c31ed535d24894f8a9a91ce9df">item_add_cid()</a>, <a class="el" href="item_8php.html#a5b1b36cb301a94b38150074f0d424e74">item_check_service_class()</a>, <a class="el" href="item_8php.html#a764bbb2e9a885a86fb23d0b5e4a09221">item_content()</a>, <a class="el" href="items_8php.html#a6f7e1334af5d684a987fa6a3eb37f4cc">item_expire()</a>, <a class="el" href="text_8php.html#aa6b0aa8afbeab50d1a3058ad21acb74e">item_message_id()</a>, <a class="el" href="item_8php.html#a693cd09805755ab85bbb5ecae69a48c3">item_post()</a>, <a class="el" href="items_8php.html#a5ed782ff5b9cf050bec931e06de12c00">item_remove_cid()</a>, <a class="el" href="items_8php.html#a2541e6861a56d145c9281877cc501615">item_store()</a>, <a class="el" href="items_8php.html#acf0bf7c9d21ac84f32effb754f7ad484">item_store_update()</a>, <a class="el" href="items_8php.html#a756738301f2ed96be50232500677d58a">items_fetch()</a>, <a class="el" href="text_8php.html#a3999a0b3e22e440f280ee791ce34d384">layout_select()</a>, <a class="el" href="layouts_8php.html#a6e0193759ad9eef76d3df2db24237b50">layouts_content()</a>, <a class="el" href="like_8php.html#a9d7dd268f21c21e9d29dd2aca2dd9538">like_content()</a>, <a class="el" href="dirsearch_8php.html#a985d410a170549429857af6ff2673149">list_public_sites()</a>, <a class="el" href="include_2config_8php.html#a27559f388c9b9af81c94e48d6889d1d1">load_config()</a>, <a class="el" href="boot_8php.html#a719c7f3972d5f9268f37a41c76cd4ef6">load_contact_links()</a>, <a class="el" href="plugin_8php.html#a326365e48ef94f0b9a0a771b8d75e813">load_hooks()</a>, <a class="el" href="include_2config_8php.html#a559791dda7fef8a4b2394c83e835787b">load_pconfig()</a>, <a class="el" href="plugin_8php.html#a9ca9632b7309a65b05c03a3e2f473a3d">load_plugin()</a>, <a class="el" href="language_8php.html#a7e9904c730bb24ddcb0ff50fc96f6b05">load_translation_table()</a>, <a class="el" href="include_2config_8php.html#aee4b619839cf4b64220f34edf5c67b52">load_xconfig()</a>, <a class="el" href="dir__fns_8php.html#acd37b17dce3bdec6d5a6344a20598c1e">local_dir_update()</a>, <a class="el" href="lockview_8php.html#a851e26ab9a1008df5c5ebebea31e9b44">lockview_content()</a>, <a class="el" href="locs_8php.html#a6c900f53970c0d0e738d2fe06d27ca44">locs_content()</a>, <a class="el" href="locs_8php.html#a6b43654592919ac863d67a1f787a69b9">locs_post()</a>, <a class="el" href="classFKOAuth1.html#a2b1dac2ed31fc6ef84668afdda8b263f">FKOAuth1\loginUser()</a>, <a class="el" href="classFKOAuthDataStore.html#a1148d47b546350bf440bdd92792c5df1">FKOAuthDataStore\lookup_consumer()</a>, <a class="el" href="classFKOAuthDataStore.html#a4edfe2e77ecd2e16ff6b5eb516ed3599">FKOAuthDataStore\lookup_nonce()</a>, <a class="el" href="classFKOAuthDataStore.html#a96f76387c3a93b0abe27a98013804bab">FKOAuthDataStore\lookup_token()</a>, <a class="el" href="lostpass_8php.html#a0314d94e48c789b1b3a201d740c9eab3">lostpass_content()</a>, <a class="el" href="lostpass_8php.html#a8ed35ba71a4404eaf4903da61d0321cc">lostpass_post()</a>, <a class="el" href="magic_8php.html#acea2cc792849ca2d71d4b689f66518bf">magic_init()</a>, <a class="el" href="mail_8php.html#a3c7c485fc69f92371e8b20936040eca1">mail_content()</a>, <a class="el" href="items_8php.html#a77da7ce9a117601d49ac4a67c71b514f">mail_store()</a>, <a class="el" href="manage_8php.html#a2bca247b5296827638959138367db4f5">manage_content()</a>, <a class="el" href="Contact_8php.html#a08845ce8c5b997d5edac38ae7118b5c8">mark_orphan_hubsxchans()</a>, <a class="el" href="match_8php.html#a1dd853e959b9e70c1911bb2fb5f5130d">match_content()</a>, <a class="el" href="auth_8php.html#a69fa663e6baf65f80d1b114ad72615f2">match_openid()</a>, <a class="el" href="include_2group_8php.html#a048f6892bfd28852de1b76470df411de">member_of()</a>, <a class="el" href="include_2menu_8php.html#add35fae5e9695031b3d46e30ac409eb8">menu_add_item()</a>, <a class="el" href="include_2menu_8php.html#a08a800821721781a8dfffbe31481ff98">menu_create()</a>, <a class="el" href="include_2menu_8php.html#a9aa8e0052dd47c1a93f53a983bd4620a">menu_del_item()</a>, <a class="el" href="include_2menu_8php.html#a3884bda4d85d84ec99447db9403a68d8">menu_delete()</a>, <a class="el" href="include_2menu_8php.html#ad87f51ce85172bcc3f931aa0cd96a804">menu_delete_id()</a>, <a class="el" href="include_2menu_8php.html#a6a33c6a3db2a7510b16cc656edaec571">menu_edit()</a>, <a class="el" href="include_2menu_8php.html#acb66f80ca895a6ccd562b3d9ae7b41aa">menu_edit_item()</a>, <a class="el" href="include_2menu_8php.html#a68ebbf492470c930f652013656f9071d">menu_fetch()</a>, <a class="el" href="include_2menu_8php.html#a47447c01ba8ea04cd74af1d4c5b68fc7">menu_fetch_id()</a>, <a class="el" href="include_2menu_8php.html#a32701c4245e78ba9106eef52c08bf33d">menu_list()</a>, <a class="el" href="include_2menu_8php.html#a251bf7e15d21627fd92614198e41c485">menu_list_count()</a>, <a class="el" href="text_8php.html#a1633412120f52bdce5f43e0a127d9293">mimetype_select()</a>, <a class="el" href="include_2group_8php.html#ab0e422a0f31c0c64fd9084ca03d85f32">mini_group_select()</a>, <a class="el" href="mitem_8php.html#a7a31b702ecad18eeb6a38b243ff0037e">mitem_content()</a>, <a class="el" href="mood_8php.html#a7ae136dd7476865b4828136175db5022">mood_init()</a>, <a class="el" href="msearch_8php.html#ac80d2a6c0a92e79eec7efbbccd74d9a8">msearch_post()</a>, <a class="el" href="nav_8php.html#a43be0df73b90647ea70947ce004e231e">nav()</a>, <a class="el" href="netgrowth_8php.html#a9b87bfc25a7cb11bc7f8e1fdd0310919">netgrowth_content()</a>, <a class="el" href="mod_2network_8php.html#a43f2f29b90c5e29072c561934bc8f8b4">network_content()</a>, <a class="el" href="classFKOAuthDataStore.html#a434882f03e3cdb171ed89e09e337e934">FKOAuthDataStore\new_access_token()</a>, <a class="el" href="include_2follow_8php.html#ae387d4ae097c23d69f3247e7f08140c7">new_contact()</a>, <a class="el" href="session_8php.html#a4c0ead624f95483e386bc80abf570a8f">new_cookie()</a>, <a class="el" href="classFKOAuthDataStore.html#a431b44d70e3da6a8256ab38f710e3050">FKOAuthDataStore\new_request_token()</a>, <a class="el" href="enotify_8php.html#a3e9a9355b243777c488d2a9883908dfc">notification()</a>, <a class="el" href="notifications_8php.html#aadd0b5525bd8c283a5d8a37982bbfe62">notifications_content()</a>, <a class="el" href="identity_8php.html#a2e6a1cc35887937823ec7fbb90472afe">notifications_off()</a>, <a class="el" href="identity_8php.html#a5650319c799de09d1b6d1076b6f839a4">notifications_on()</a>, <a class="el" href="notifications_8php.html#a5baffec7b2e625c9f9cefbc097550d33">notifications_post()</a>, <a class="el" href="notifier_8php.html#a568c502f626cff95e344c0748938b85d">notifier_run()</a>, <a class="el" href="mod_2notify_8php.html#acdf3851688ebd6d6a575eb84ef9febe3">notify_content()</a>, <a class="el" href="mod_2notify_8php.html#a94f9a6a9d4b5fd704baafff0c34f41ae">notify_init()</a>, <a class="el" href="mod_2api_8php.html#a02ae0f60e240dc806b860edb7d582117">oauth_get_client()</a>, <a class="el" href="onedirsync_8php.html#a411aedd47c57476099647961e6a86691">onedirsync_run()</a>, <a class="el" href="onepoll_8php.html#a72753b2fdec79b37c7f432035c91fb6d">onepoll_run()</a>, <a class="el" href="openid_8php.html#a9a13827dbcf61ae4e45f0b6b33a88f43">openid_content()</a>, <a class="el" href="p_8php.html#af9d5530ca0b3dc9409cf591c39e2480e">p_init()</a>, <a class="el" href="page_8php.html#a4d89800c0366a239191b1692c09635cf">page_init()</a>, <a class="el" href="page__widgets_8php.html#a39d547771c5f12a17c097436c82f0fa2">pagelist_widget()</a>, <a class="el" href="comanche_8php.html#af7150df735e5ff9d467994cd6f769c6e">pdl_selector()</a>, <a class="el" href="permissions_8php.html#a67ada9ed51e77885b6b0f6a28cee1835">perm_is_allowed()</a>, <a class="el" href="photo_8php.html#a582779d24882b0d31ee909a91d70a448">photo_init()</a>, <a class="el" href="text_8php.html#aa5528f41533927e1bd2da3618a74a6d7">photo_new_resource()</a>, <a class="el" href="include_2photos_8php.html#a6c40ef58aefef705a5adc84a40e97109">photo_upload()</a>, <a class="el" href="include_2photos_8php.html#a8e8b7be99e24c2497bc2cb3339280c35">photos_album_exists()</a>, <a class="el" href="include_2photos_8php.html#a7e7abc69872180697c5471dc69349afe">photos_album_get_db_idstr()</a>, <a class="el" href="include_2photos_8php.html#ab0365f25b22ccea5f085fe7c49e1f4ab">photos_album_rename()</a>, <a class="el" href="include_2photos_8php.html#aedccaf18282b26899d9549c29bd9d1b9">photos_albums_list()</a>, <a class="el" href="mod_2photos_8php.html#aa87382611a66ec5effdb2d78f13f5812">photos_content()</a>, <a class="el" href="include_2photos_8php.html#aa27b9e435dcc34e1009f56dc02c7ca51">photos_list_photos()</a>, <a class="el" href="mod_2photos_8php.html#a062bed4d04d14fee8a53f4c9be673080">photos_post()</a>, <a class="el" href="ping_8php.html#a77217b1b190b4c5d8770867b45f0c0a1">ping_init()</a>, <a class="el" href="plugin_8php.html#a855c4fdb38c0fc2714d537752a4347f9">plugin_is_installed()</a>, <a class="el" href="poco_8php.html#a53def16f75e3d41f1d2bb7cfa4905498">poco_init()</a>, <a class="el" href="socgraph_8php.html#a5ef8bef37161df53718a21e93d02fbd6">poco_load()</a>, <a class="el" href="poke_8php.html#ac9190563a8da9c07a16f9dcd71cf6993">poke_content()</a>, <a class="el" href="poke_8php.html#a9725aab97b3983e6a98bd81c4efe7d3b">poke_init()</a>, <a class="el" href="poll_8php.html#a3314c26bd2ac0ed831cebf3315cd3263">poll_content()</a>, <a class="el" href="poll_8php.html#a26be9d4f230cb68f5be326198cfc6c77">poll_post()</a>, <a class="el" href="poller_8php.html#a5f12df3a4738124b6c039971e87e76da">poller_run()</a>, <a class="el" href="items_8php.html#a410f9c743877c125ca06312373346903">post_activity_item()</a>, <a class="el" href="post_8php.html#af4b48181ce773ef0cdfc972441445c34">post_init()</a>, <a class="el" href="post_8php.html#af59e6a1dc22d19d9257b01cd7ccedb75">post_post()</a>, <a class="el" href="include_2message_8php.html#aed272d77c06a309e2836ac79e75613f1">private_messages_drop()</a>, <a class="el" href="include_2message_8php.html#a5f8de9847e203329e317ac38dc646898">private_messages_fetch_conversation()</a>, <a class="el" href="include_2message_8php.html#a254a756031e4d5e94f85e2939bdb5091">private_messages_fetch_message()</a>, <a class="el" href="include_2message_8php.html#a652973ce47a262f2d238c2fd6233d97e">private_messages_list()</a>, <a class="el" href="zot_8php.html#ac301c67864917c35922257950ae0f95c">process_channel_sync_delivery()</a>, <a class="el" href="zot_8php.html#a0e3006e7a456b2175a9badc96bc5176d">process_delivery()</a>, <a class="el" href="zot_8php.html#a8eeefdb0dad4c436bea9d1c06c0a7988">process_location_delivery()</a>, <a class="el" href="zot_8php.html#aa6ae96db8cbbdbb10e6876d206bbf7cc">process_mail_delivery()</a>, <a class="el" href="zot_8php.html#a9a57b40669351c9791126b925cb7ef3b">process_profile_delivery()</a>, <a class="el" href="profile_8php.html#ab5d0246be0552e2182a585c1206d22a5">profile_init()</a>, <a class="el" href="identity_8php.html#a4751b522ea913d0e7ed43e03d22e9e68">profile_load()</a>, <a class="el" href="profile__photo_8php.html#a4b80234074bd603221aa5364f330e479">profile_photo_post()</a>, <a class="el" href="profile__photo_8php.html#a561103564199da56e58061a4196eb102">profile_photo_set_profile_perms()</a>, <a class="el" href="identity_8php.html#a432259b2cf5b6f59be53e71db9f2c7dc">profile_sidebar()</a>, <a class="el" href="profiles_8php.html#a46975783b8b8d70402d51487eb1f0b00">profiles_content()</a>, <a class="el" href="profiles_8php.html#a36f71405ad536228f8bb84a551b23f7e">profiles_init()</a>, <a class="el" href="profiles_8php.html#ab0362c81b1d3b0b12a772b9fac446e04">profiles_post()</a>, <a class="el" href="profperm_8php.html#aef015787de2373d9fb3fe3f814fb5023">profperm_content()</a>, <a class="el" href="hubloc_8php.html#ad3d0dcfcfcb347744f7617fe6f5de002">prune_hub_reinstalls()</a>, <a class="el" href="zot_8php.html#a083aec6c900d244e1bfc1406f9461465">public_recips()</a>, <a class="el" href="classRedMatrix_1_1RedDAV_1_1RedFile.html#a709ec1288d21ddf1353524435ab916f0">RedMatrix\RedDAV\RedFile\put()</a>, <a class="el" href="queue_8php.html#af8c93de86d866c3200174c8450a0f341">queue_run()</a>, <a class="el" href="Contact_8php.html#a7e3f5bef8ea1d2bf8434c9be36a2b713">random_profile()</a>, <a class="el" href="Contact_8php.html#a2f4f495d53f2a334ab75292af79d3c91">rconnect_url()</a>, <a class="el" href="receive_8php.html#a03d8fa26e77844020ba5602deca7d494">receive_post()</a>, <a class="el" href="reddav_8php.html#ae92ea0df1993f6a7bcd1b6efa6c1fb66">RedChannelList()</a>, <a class="el" href="reddav_8php.html#a5df0d09893f2e65dc5cf6bbab6cfb266">RedCollectionData()</a>, <a class="el" href="reddav_8php.html#a9f531641dfb4e43cd88ac1a9ae7e2088">RedFileData()</a>, <a class="el" href="session_8php.html#af230b86bfff7db66c3bdd7e0bbc24052">ref_session_destroy()</a>, <a class="el" href="session_8php.html#ac95373f4966862a028033dd2f94d4da1">ref_session_gc()</a>, <a class="el" href="session_8php.html#a7f0f50576360d9ba52d29364e0b83a8e">ref_session_read()</a>, <a class="el" href="session_8php.html#ac4461c1984543d3553e73dba2771568f">ref_session_write()</a>, <a class="el" href="refimport_8php.html#ad97ebb5feda0230a4834e0b3637a0d29">refimport_content()</a>, <a class="el" href="refimport_8php.html#a01a29630fa5e1ce6cd5e1fd75280747c">reflect_comment_store()</a>, <a class="el" href="refimport_8php.html#a6c3e0475fde9fe72ff2492a5e3e5259c">reflect_get_channel()</a>, <a class="el" href="register_8php.html#a0e91f57f111407ea8d3223a05022bb2a">register_content()</a>, <a class="el" href="plugin_8php.html#a425472c5f3afc137268b2ad45652b209">register_hook()</a>, <a class="el" href="register_8php.html#a51731dcc1917c58a790eb1c0f6132271">register_post()</a>, <a class="el" href="plugin_8php.html#af9ac19004dca49adae1ac7a0d9f3b025">reload_plugins()</a>, <a class="el" href="identity_8php.html#a47d6f53216f23a3484061793bef29854">remote_online_status()</a>, <a class="el" href="Contact_8php.html#acc12cda999c88c4d6185cca967c15125">remove_all_xchan_resources()</a>, <a class="el" href="zot_8php.html#aad25a3fe0e1566121d6fb8222979bc10">remove_community_tag()</a>, <a class="el" href="hubloc_8php.html#a84c79b7be352f62d12fe4fa2c80fc6ea">remove_obsolete_hublocs()</a>, <a class="el" href="queue__fn_8php.html#a8fe71e981399bbf5d000a6ca42f57b24">remove_queue_item()</a>, <a class="el" href="items_8php.html#af6237605c60d69abdd959ddbbee3420c">retain_item()</a>, <a class="el" href="rmagic_8php.html#a95455edd43f1bff39446a57388cdde16">rmagic_init()</a>, <a class="el" href="rmagic_8php.html#a869de069d081b3c4e98b957d06bbf08f">rmagic_post()</a>, <a class="el" href="rpost_8php.html#a8190354d789000806d9879aea276728f">rpost_content()</a>, <a class="el" href="classphoto__driver.html#a5864fae7d8389372955a8e78cec527ac">photo_driver\save()</a>, <a class="el" href="search__ac_8php.html#a14f90c83a3f2be095e9e2992a8d66138">search_ac_init()</a>, <a class="el" href="search_8php.html#ab2568591359edde5b483a6cd9a24b2cc">search_content()</a>, <a class="el" href="include_2message_8php.html#a751ffd6635022b2190f56154ee745752">send_message()</a>, <a class="el" href="account_8php.html#a014de2d5d5c9785de5bf547a485822fa">send_reg_approval_email()</a>, <a class="el" href="items_8php.html#aab9e0c58247427126de0699c729c3b6c">send_status_notifications()</a>, <a class="el" href="account_8php.html#a030cec6793b909c439c0336ba39b1571">service_class_allows()</a>, <a class="el" href="account_8php.html#a905b54e10704b283ac64680a8abc0971">service_class_fetch()</a>, <a class="el" href="classCache.html#ae622b82adc1c2fb1f3e2cc4fd9688fce">Cache\set()</a>, <a class="el" href="include_2config_8php.html#ad6da879e4fb5b37d1e161d4e9be5c32a">set_config()</a>, <a class="el" href="identity_8php.html#a78151baf4407a8482d2681a91a9c486b">set_default_login_identity()</a>, <a class="el" href="include_2config_8php.html#a61591371cb18764138655d67dc817ab2">set_pconfig()</a>, <a class="el" href="include_2config_8php.html#afe117b70f1bba2f6348d9300b601f86e">set_xconfig()</a>, <a class="el" href="classRedMatrix_1_1RedDAV_1_1RedFile.html#a0350cb4e0327e1f9922869a48ee04f1d">RedMatrix\RedDAV\RedFile\setName()</a>, <a class="el" href="classRedMatrix_1_1RedDAV_1_1RedDirectory.html#a14ac61d31a031d139956763db4e03956">RedMatrix\RedDAV\RedDirectory\setName()</a>, <a class="el" href="settings_8php.html#aa7ee94d88ac088edb04ccf3a26de3586">settings_post()</a>, <a class="el" href="setup_8php.html#a88247384a96e14516f474d7af6a465c1">setup_content()</a>, <a class="el" href="share_8php.html#afeb26046bdd02567ecd29ab5f188b249">share_init()</a>, <a class="el" href="siteinfo_8php.html#a70c09bfb6dd1c86a125a35f62ed53656">siteinfo_content()</a>, <a class="el" href="siteinfo_8php.html#a3efbd0bd6564af19ec0a9ce0294e59d0">siteinfo_init()</a>, <a class="el" href="sitelist_8php.html#a665a59bf60f780b40f32c909f4a473b1">sitelist_init()</a>, <a class="el" href="sources_8php.html#ac442ccef080ab95772d8929fcafcb4b7">sources_content()</a>, <a class="el" href="sources_8php.html#ac73298ff162ce7b2de8dcaf3d3305b1e">sources_post()</a>, <a class="el" href="starred_8php.html#a63024fb418c678e49fd535e3752d349a">starred_init()</a>, <a class="el" href="items_8php.html#adf2b8137dc4ad9ec958de2842f16f3c2">start_delivery_chain()</a>, <a class="el" href="classphoto__driver.html#a642a8d0c4ad5f887c99c6af77cee287b">photo_driver\store()</a>, <a class="el" href="items_8php.html#a25221826fa4621f523c68483e3b6af26">store_diaspora_comment_sig()</a>, <a class="el" href="taxonomy_8php.html#a4ba1339b2a7054971178ce194e4440fd">store_item_tag()</a>, <a class="el" href="security_8php.html#a6126c77a1267e046ac59cf864613f011">stream_perms_api_uids()</a>, <a class="el" href="security_8php.html#a3ef2be6a7e4928e39d50059d6feb457c">stream_perms_xchans()</a>, <a class="el" href="subthread_8php.html#a50368f3d825b77996030528e7fbfa3d3">subthread_content()</a>, <a class="el" href="suggest_8php.html#a696acf1dd8070e479adcc80c63c6718c">suggest_init()</a>, <a class="el" href="socgraph_8php.html#a76e6fca3d2bc842dcd9e710bb87c8329">suggestion_query()</a>, <a class="el" href="dir__fns_8php.html#aa666e7df6ca8c332f4081c9b66b4bdf6">sync_directories()</a>, <a class="el" href="zot_8php.html#ab15c04e7e5f44edf45ec50dd7d183254">sync_locations()</a>, <a class="el" href="items_8php.html#ab1bce4261bcf75ad62753b498a144d17">tag_deliver()</a>, <a class="el" href="taxonomy_8php.html#aaf90ba8b839d6459065f39a4f1109b8a">tagadelic()</a>, <a class="el" href="tagger_8php.html#a0e4a3eb177d1684553c547503d67161c">tagger_content()</a>, <a class="el" href="tagrm_8php.html#adfd4ea5b4d7fc6d9c9e042af5cd7d49a">tagrm_content()</a>, <a class="el" href="tagrm_8php.html#a1702f40aa53a2fa93deade1f609abe78">tagrm_post()</a>, <a class="el" href="items_8php.html#a88c6cf7649ac836fbbed82a7a0315110">tgroup_check()</a>, <a class="el" href="thing_8php.html#a24a35f1e64029a67fdbea94a776ae04b">thing_content()</a>, <a class="el" href="thing_8php.html#a8be23b1d475ec3d9291999221c674c80">thing_init()</a>, <a class="el" href="plugin_8php.html#a093a9cb98f51e3643634bd8bc6ed6e76">uninstall_plugin()</a>, <a class="el" href="plugin_8php.html#a56f71fe5adf9586ce950523d8180443e">unregister_hook()</a>, <a class="el" href="datetime_8php.html#af1cd77c97c901d9239cb7a61f97f9826">update_birthdays()</a>, <a class="el" href="statistics__fns_8php.html#a82726229a961d3bd3d543005c61dd8e6">update_channels_active_halfyear_stat()</a>, <a class="el" href="statistics__fns_8php.html#ad2b7b595c039c4c2eb0d6cd57a393dfe">update_channels_active_monthly_stat()</a>, <a class="el" href="statistics__fns_8php.html#a05858927cce81fd367aedf85a94ed90c">update_channels_total_stat()</a>, <a class="el" href="dir__fns_8php.html#a44062d4b471d1e83f92f6c184585aa13">update_directory_entry()</a>, <a class="el" href="statistics__fns_8php.html#a9dd516dda693f17f5ce48a94876f7efa">update_local_posts_stat()</a>, <a class="el" href="zot_8php.html#ab319d1d9fff9c7775d9daef42d1f33dd">update_modtime()</a>, <a class="el" href="queue__fn_8php.html#a4c2876181f75a4a61e85b7f00dfdbba1">update_queue_time()</a>, <a class="el" href="items_8php.html#a2baa9e05f1e8aa3dd61c85803ae39bd6">update_remote_id()</a>, <a class="el" href="socgraph_8php.html#a790690bb1a1d02483fe31632a160144d">update_suggestions()</a>, <a class="el" href="account_8php.html#ac5c570a2d46446bad4dd2501e9c5a4b1">user_allow()</a>, <a class="el" href="account_8php.html#ad07be417ac7eda939768804106ddea3d">user_approve()</a>, <a class="el" href="account_8php.html#ac1653efba62493b9d87513e1b6c04c83">user_deny()</a>, <a class="el" href="classRedMatrix_1_1RedDAV_1_1RedBasicAuth.html#a6ece02655b780469e59e204c5979a624">RedMatrix\RedDAV\RedBasicAuth\validateUserPass()</a>, <a class="el" href="Contact_8php.html#a6348a532c9d26cd1c9afbc9aa6aa8960">vcard_from_xchan()</a>, <a class="el" href="account_8php.html#acd6b8d2124ba5ea4f4794d2c58ae8bf5">verify_email_address()</a>, <a class="el" href="viewconnections_8php.html#ab6c4d983e97b3a8a879567ff76507776">viewconnections_content()</a>, <a class="el" href="viewsrc_8php.html#a6eff3d0c1d7d14b335c4edb785cd60a4">viewsrc_content()</a>, <a class="el" href="vote_8php.html#a6aa67489bf458ca5e3206e46dac68596">vote_content()</a>, <a class="el" href="vote_8php.html#ae0c6610f40afbbc1f4fe6494c51fbab2">vote_init()</a>, <a class="el" href="vote_8php.html#a57a9516ee1b923b224e66dcc47377fb2">vote_post()</a>, <a class="el" href="webpages_8php.html#af3b7397d4abc153e3d2147740ee1a41d">webpages_content()</a>, <a class="el" href="wfinger_8php.html#ae21e50c8d0a5f3c9be9f43a4e519acd3">wfinger_init()</a>, <a class="el" href="widgets_8php.html#a0e2f5179ed1a73b282dfda7270fcabb3">widget_bookmarkedchats()</a>, <a class="el" href="widgets_8php.html#a5ab3b64496e02cab56429978ad55f1c0">widget_filer()</a>, <a class="el" href="widgets_8php.html#ad1bf7aa69e8d100d95faba17c7bc91cd">widget_follow()</a>, <a class="el" href="widgets_8php.html#a313a8d10ab81c71357c12e67e4d7efd5">widget_item()</a>, <a class="el" href="widgets_8php.html#a829c5a5c7448129266fc1df3ae1a3c2e">widget_random_block()</a>, <a class="el" href="widgets_8php.html#a94203eb9bcd63cbdecbbcb15163598d8">widget_savedsearch()</a>, <a class="el" href="widgets_8php.html#aaa73bcf1702eaadd9dcd253502f55e01">widget_settings_menu()</a>, <a class="el" href="widgets_8php.html#a50b1410238100c8a94c06b0aa63ee3b8">widget_suggestedchats()</a>, <a class="el" href="taxonomy_8php.html#a83f0a60f9e0c07d8451dc5be95b17287">wtagblock()</a>, <a class="el" href="xchan_8php.html#a9853348bf1a35c644460221ba75edc2d">xchan_content()</a>, <a class="el" href="hubloc_8php.html#af1b476c936f96a93282b1d058e3d05ea">xchan_fetch()</a>, <a class="el" href="text_8php.html#a543447c5ed766535221e2d9636b379ee">xchan_mail_query()</a>, <a class="el" href="text_8php.html#a905c3895feb6f276df23f07f16f9bb52">xchan_query()</a>, <a class="el" href="hubloc_8php.html#acb708dd197aae72a4858cf5ff4e3195b">xchan_store()</a>, <a class="el" href="xrd_8php.html#aee3cf087968e4a0ff3a87de16eb23270">xrd_init()</a>, <a class="el" href="text_8php.html#a324c58f37f6acdf9cd1922aa76077d9f">z_input_filter()</a>, <a class="el" href="include_2attach_8php.html#aeb07968990e66a88c95483ca09a7f909">z_readdir()</a>, <a class="el" href="zfinger_8php.html#a8139b83a22ef98869adc10aa224027a0">zfinger_init()</a>, <a class="el" href="identity_8php.html#a680fbafc2db023c5b1309e0180e81315">zid_init()</a>, <a class="el" href="items_8php.html#a1cf89557f32d5dfbe8bd90448dc1aa92">zot_feed()</a>, <a class="el" href="zot_8php.html#a95528377d7303131958c9f0b7158fdce">zot_finger()</a>, <a class="el" href="zot_8php.html#ae7cec2b417b5858fd4a41070f843d1d7">zot_get_hublocs()</a>, <a class="el" href="zot_8php.html#a55056e863a7860bc0cf922e78fcce073">zot_gethub()</a>, <a class="el" href="zot_8php.html#aeea071f17e306fe3d0c488551906bfab">zot_import()</a>, <a class="el" href="zot_8php.html#a3920afe14fc1d82020161b4b86bcd9ac">zot_process_message_request()</a>, <a class="el" href="zot_8php.html#a928f5643ca66ae9635d85aeb2be62e03">zot_process_response()</a>, <a class="el" href="zot_8php.html#a7ac30ff51274bf0b6d3eade37972145c">zot_refresh()</a>, and <a class="el" href="zotfeed_8php.html#a24dfc23d366e7f840cf2847d0c1c8eac">zotfeed_init()</a>.</p>
</div>
</div>
diff --git a/doc/html/dba__driver_8php.js b/doc/html/dba__driver_8php.js
index 425133552..cfe110f61 100644
--- a/doc/html/dba__driver_8php.js
+++ b/doc/html/dba__driver_8php.js
@@ -1,12 +1,21 @@
var dba__driver_8php =
[
[ "dba_driver", "classdba__driver.html", "classdba__driver" ],
- [ "dba_factory", "dba__driver_8php.html#ac10e60f6e5b95bcf67bd82cb88f37947", null ],
+ [ "db_concat", "dba__driver_8php.html#a7c1b98a710ead27382c958ad3216c4ee", null ],
+ [ "db_getfunc", "dba__driver_8php.html#a2994daa03b1c23229a27e39bcab75e67", null ],
+ [ "db_optimizetable", "dba__driver_8php.html#a75098bf1d59ea57f7ebae657a369137e", null ],
+ [ "db_quoteinterval", "dba__driver_8php.html#acec84a8fb75d78daf657cbe5df74e25a", null ],
+ [ "db_utcnow", "dba__driver_8php.html#a30e9a643be804e905f5614a3279d2645", null ],
+ [ "dba_factory", "dba__driver_8php.html#a5df8499634c47b30191f34069d7b98c0", null ],
[ "dbesc", "dba__driver_8php.html#ab222aa1dbf9ea93b320f82028739127e", null ],
[ "dbesc_array", "dba__driver_8php.html#a65b83462bd26968106aebd43f16540e4", null ],
[ "dbesc_array_cb", "dba__driver_8php.html#af531546fac5f0836a8557a4f6dfee930", null ],
+ [ "dbesc_identifier", "dba__driver_8php.html#aa051799567690a124a3b865bf902f58a", null ],
+ [ "dbescbin", "dba__driver_8php.html#a2a38996670c2936b5769270c49c57593", null ],
+ [ "dbescdate", "dba__driver_8php.html#a2c8a72ec73f39b17a167c90737693f78", null ],
[ "dbg", "dba__driver_8php.html#aa6607893d8f60ade9122bcfbd1a53ffb", null ],
[ "dbq", "dba__driver_8php.html#aa377074e70981e8c4e82ca0accd068ee", null ],
+ [ "dbunescbin", "dba__driver_8php.html#afaaa1a7eff9c1b65b3b8c464ae37640e", null ],
[ "printable", "dba__driver_8php.html#a55bf30d8176967e682656b5be4ad9249", null ],
[ "q", "dba__driver_8php.html#a2c09a731d3b4fef41fed0e83db01be1f", null ]
]; \ No newline at end of file
diff --git a/doc/html/dba__postgres_8php.html b/doc/html/dba__postgres_8php.html
new file mode 100644
index 000000000..de5f03278
--- /dev/null
+++ b/doc/html/dba__postgres_8php.html
@@ -0,0 +1,120 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<meta name="generator" content="Doxygen 1.8.3.1"/>
+<title>The Red Matrix: include/dba/dba_postgres.php File Reference</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="navtree.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="resize.js"></script>
+<script type="text/javascript" src="navtree.js"></script>
+<script type="text/javascript">
+ $(document).ready(initResizable);
+ $(window).load(resizeHeight);
+</script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/search.js"></script>
+<script type="text/javascript">
+ $(document).ready(function() { searchBox.OnSelectItem(0); });
+</script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+ <td id="projectlogo"><img alt="Logo" src="rm-64.png"/></td>
+ <td style="padding-left: 0.5em;">
+ <div id="projectname">The Red Matrix
+ </div>
+ </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.8.3.1 -->
+<script type="text/javascript">
+var searchBox = new SearchBox("searchBox", "search",false,'Search');
+</script>
+ <div id="navrow1" class="tabs">
+ <ul class="tablist">
+ <li><a href="index.html"><span>Main&#160;Page</span></a></li>
+ <li><a href="pages.html"><span>Related&#160;Pages</span></a></li>
+ <li><a href="namespaces.html"><span>Namespaces</span></a></li>
+ <li><a href="annotated.html"><span>Classes</span></a></li>
+ <li class="current"><a href="files.html"><span>Files</span></a></li>
+ <li>
+ <div id="MSearchBox" class="MSearchBoxInactive">
+ <span class="left">
+ <img id="MSearchSelect" src="search/mag_sel.png"
+ onmouseover="return searchBox.OnSearchSelectShow()"
+ onmouseout="return searchBox.OnSearchSelectHide()"
+ alt=""/>
+ <input type="text" id="MSearchField" value="Search" accesskey="S"
+ onfocus="searchBox.OnSearchFieldFocus(true)"
+ onblur="searchBox.OnSearchFieldFocus(false)"
+ onkeyup="searchBox.OnSearchFieldChange(event)"/>
+ </span><span class="right">
+ <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
+ </span>
+ </div>
+ </li>
+ </ul>
+ </div>
+ <div id="navrow2" class="tabs2">
+ <ul class="tablist">
+ <li><a href="files.html"><span>File&#160;List</span></a></li>
+ <li><a href="globals.html"><span>File&#160;Members</span></a></li>
+ </ul>
+ </div>
+</div><!-- top -->
+<div id="side-nav" class="ui-resizable side-nav-resizable">
+ <div id="nav-tree">
+ <div id="nav-tree-contents">
+ <div id="nav-sync" class="sync"></div>
+ </div>
+ </div>
+ <div id="splitbar" style="-moz-user-select:none;"
+ class="ui-resizable-handle">
+ </div>
+</div>
+<script type="text/javascript">
+$(document).ready(function(){initNavTree('dba__postgres_8php.html','');});
+</script>
+<div id="doc-content">
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+ onmouseover="return searchBox.OnSearchSelectShow()"
+ onmouseout="return searchBox.OnSearchSelectHide()"
+ onkeydown="return searchBox.OnSearchSelectKey(event)">
+<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark">&#160;</span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark">&#160;</span>Classes</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark">&#160;</span>Namespaces</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark">&#160;</span>Files</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark">&#160;</span>Functions</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark">&#160;</span>Variables</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark">&#160;</span>Pages</a></div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<iframe src="javascript:void(0)" frameborder="0"
+ name="MSearchResults" id="MSearchResults">
+</iframe>
+</div>
+
+<div class="header">
+ <div class="summary">
+<a href="#nested-classes">Classes</a> </div>
+ <div class="headertitle">
+<div class="title">dba_postgres.php File Reference</div> </div>
+</div><!--header-->
+<div class="contents">
+<table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="nested-classes"></a>
+Classes</h2></td></tr>
+<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classdba__postgres.html">dba_postgres</a></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+</table>
+</div><!-- contents -->
+</div><!-- doc-content -->
+
diff --git a/doc/html/diaspora_8php.html b/doc/html/diaspora_8php.html
new file mode 100644
index 000000000..6396a547b
--- /dev/null
+++ b/doc/html/diaspora_8php.html
@@ -0,0 +1,1289 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<meta name="generator" content="Doxygen 1.8.3.1"/>
+<title>The Red Matrix: include/diaspora.php File Reference</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="navtree.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="resize.js"></script>
+<script type="text/javascript" src="navtree.js"></script>
+<script type="text/javascript">
+ $(document).ready(initResizable);
+ $(window).load(resizeHeight);
+</script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/search.js"></script>
+<script type="text/javascript">
+ $(document).ready(function() { searchBox.OnSelectItem(0); });
+</script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+ <td id="projectlogo"><img alt="Logo" src="rm-64.png"/></td>
+ <td style="padding-left: 0.5em;">
+ <div id="projectname">The Red Matrix
+ </div>
+ </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.8.3.1 -->
+<script type="text/javascript">
+var searchBox = new SearchBox("searchBox", "search",false,'Search');
+</script>
+ <div id="navrow1" class="tabs">
+ <ul class="tablist">
+ <li><a href="index.html"><span>Main&#160;Page</span></a></li>
+ <li><a href="pages.html"><span>Related&#160;Pages</span></a></li>
+ <li><a href="namespaces.html"><span>Namespaces</span></a></li>
+ <li><a href="annotated.html"><span>Classes</span></a></li>
+ <li class="current"><a href="files.html"><span>Files</span></a></li>
+ <li>
+ <div id="MSearchBox" class="MSearchBoxInactive">
+ <span class="left">
+ <img id="MSearchSelect" src="search/mag_sel.png"
+ onmouseover="return searchBox.OnSearchSelectShow()"
+ onmouseout="return searchBox.OnSearchSelectHide()"
+ alt=""/>
+ <input type="text" id="MSearchField" value="Search" accesskey="S"
+ onfocus="searchBox.OnSearchFieldFocus(true)"
+ onblur="searchBox.OnSearchFieldFocus(false)"
+ onkeyup="searchBox.OnSearchFieldChange(event)"/>
+ </span><span class="right">
+ <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
+ </span>
+ </div>
+ </li>
+ </ul>
+ </div>
+ <div id="navrow2" class="tabs2">
+ <ul class="tablist">
+ <li><a href="files.html"><span>File&#160;List</span></a></li>
+ <li><a href="globals.html"><span>File&#160;Members</span></a></li>
+ </ul>
+ </div>
+</div><!-- top -->
+<div id="side-nav" class="ui-resizable side-nav-resizable">
+ <div id="nav-tree">
+ <div id="nav-tree-contents">
+ <div id="nav-sync" class="sync"></div>
+ </div>
+ </div>
+ <div id="splitbar" style="-moz-user-select:none;"
+ class="ui-resizable-handle">
+ </div>
+</div>
+<script type="text/javascript">
+$(document).ready(function(){initNavTree('diaspora_8php.html','');});
+</script>
+<div id="doc-content">
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+ onmouseover="return searchBox.OnSearchSelectShow()"
+ onmouseout="return searchBox.OnSearchSelectHide()"
+ onkeydown="return searchBox.OnSearchSelectKey(event)">
+<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark">&#160;</span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark">&#160;</span>Classes</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark">&#160;</span>Namespaces</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark">&#160;</span>Files</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark">&#160;</span>Functions</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark">&#160;</span>Variables</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark">&#160;</span>Pages</a></div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<iframe src="javascript:void(0)" frameborder="0"
+ name="MSearchResults" id="MSearchResults">
+</iframe>
+</div>
+
+<div class="header">
+ <div class="summary">
+<a href="#func-members">Functions</a> </div>
+ <div class="headertitle">
+<div class="title">diaspora.php File Reference</div> </div>
+</div><!--header-->
+<div class="contents">
+<table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="func-members"></a>
+Functions</h2></td></tr>
+<tr class="memitem:ab99505944728d46585b8312989de533d"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="diaspora_8php.html#ab99505944728d46585b8312989de533d">diaspora_dispatch_public</a> ($msg)</td></tr>
+<tr class="separator:ab99505944728d46585b8312989de533d"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a6f0a67b6b17503c125af32763be931b7"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="diaspora_8php.html#a6f0a67b6b17503c125af32763be931b7">diaspora_dispatch</a> ($importer, $msg, $attempt=1)</td></tr>
+<tr class="separator:a6f0a67b6b17503c125af32763be931b7"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a858f70153c384f8778082cf7843a19da"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="diaspora_8php.html#a858f70153c384f8778082cf7843a19da">diaspora_is_blacklisted</a> ($s)</td></tr>
+<tr class="separator:a858f70153c384f8778082cf7843a19da"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a131abd521b218d6ae6f7d2917d8b2605"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="diaspora_8php.html#a131abd521b218d6ae6f7d2917d8b2605">diaspora_process_outbound</a> ($arr)</td></tr>
+<tr class="separator:a131abd521b218d6ae6f7d2917d8b2605"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a5ed66b910d7b0284f9b3ee04e72306ff"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="diaspora_8php.html#a5ed66b910d7b0284f9b3ee04e72306ff">diaspora_handle_from_contact</a> ($contact_hash)</td></tr>
+<tr class="separator:a5ed66b910d7b0284f9b3ee04e72306ff"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:aa8e551a53fcce34be3942d0c3e20d1f4"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="diaspora_8php.html#aa8e551a53fcce34be3942d0c3e20d1f4">diaspora_get_contact_by_handle</a> ($uid, $handle)</td></tr>
+<tr class="separator:aa8e551a53fcce34be3942d0c3e20d1f4"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:aade0c165fcdded71352c7a67bf6ce37b"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="diaspora_8php.html#aade0c165fcdded71352c7a67bf6ce37b">find_diaspora_person_by_handle</a> ($handle)</td></tr>
+<tr class="separator:aade0c165fcdded71352c7a67bf6ce37b"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a9bf7ef4094e0e14f6e2b7fe76ab7ad2e"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="diaspora_8php.html#a9bf7ef4094e0e14f6e2b7fe76ab7ad2e">get_diaspora_key</a> ($handle)</td></tr>
+<tr class="separator:a9bf7ef4094e0e14f6e2b7fe76ab7ad2e"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a586d5a3ba92d35cee14f879f290072aa"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="diaspora_8php.html#a586d5a3ba92d35cee14f879f290072aa">diaspora_pubmsg_build</a> ($msg, $channel, $contact, $prvkey, $pubkey)</td></tr>
+<tr class="separator:a586d5a3ba92d35cee14f879f290072aa"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a4901762cba5cd8dcdc57bdf285eefb1b"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="diaspora_8php.html#a4901762cba5cd8dcdc57bdf285eefb1b">diaspora_msg_build</a> ($msg, $channel, $contact, $prvkey, $pubkey, $public=false)</td></tr>
+<tr class="separator:a4901762cba5cd8dcdc57bdf285eefb1b"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a849754ec369e1a60fadae5c14584ca36"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="diaspora_8php.html#a849754ec369e1a60fadae5c14584ca36">diaspora_decode</a> ($importer, $xml)</td></tr>
+<tr class="separator:a849754ec369e1a60fadae5c14584ca36"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ac1ab782a34552a7c6b4dc961754ed598"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="diaspora_8php.html#ac1ab782a34552a7c6b4dc961754ed598">diaspora_request</a> ($importer, $xml)</td></tr>
+<tr class="separator:ac1ab782a34552a7c6b4dc961754ed598"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a20b968d64ef26afe5cb0cc75a7570a31"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="diaspora_8php.html#a20b968d64ef26afe5cb0cc75a7570a31">diaspora_post</a> ($importer, $xml, $msg)</td></tr>
+<tr class="separator:a20b968d64ef26afe5cb0cc75a7570a31"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ac9e41e46626dc608204bf4b5e16e62d7"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="diaspora_8php.html#ac9e41e46626dc608204bf4b5e16e62d7">get_diaspora_reshare_xml</a> ($url, $recurse=0)</td></tr>
+<tr class="separator:ac9e41e46626dc608204bf4b5e16e62d7"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a2bf43f6b5890897f425ef4325d34b007"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="diaspora_8php.html#a2bf43f6b5890897f425ef4325d34b007">diaspora_reshare</a> ($importer, $xml, $msg)</td></tr>
+<tr class="separator:a2bf43f6b5890897f425ef4325d34b007"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a006731620a5242d410358b32678e48e3"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="diaspora_8php.html#a006731620a5242d410358b32678e48e3">diaspora_asphoto</a> ($importer, $xml, $msg)</td></tr>
+<tr class="separator:a006731620a5242d410358b32678e48e3"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a0fb2abe304aae19efc040a5e6b917829"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="diaspora_8php.html#a0fb2abe304aae19efc040a5e6b917829">diaspora_comment</a> ($importer, $xml, $msg)</td></tr>
+<tr class="separator:a0fb2abe304aae19efc040a5e6b917829"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:adef30b6fac948baedcc7194d5d155b5f"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="diaspora_8php.html#adef30b6fac948baedcc7194d5d155b5f">diaspora_conversation</a> ($importer, $xml, $msg)</td></tr>
+<tr class="separator:adef30b6fac948baedcc7194d5d155b5f"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a7cff2f8f11044c1b3a360f20e1bbee46"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="diaspora_8php.html#a7cff2f8f11044c1b3a360f20e1bbee46">diaspora_message</a> ($importer, $xml, $msg)</td></tr>
+<tr class="separator:a7cff2f8f11044c1b3a360f20e1bbee46"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a71fe9bb66626b4197ae018a230778bb2"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="diaspora_8php.html#a71fe9bb66626b4197ae018a230778bb2">diaspora_photo</a> ($importer, $xml, $msg, $attempt=1)</td></tr>
+<tr class="separator:a71fe9bb66626b4197ae018a230778bb2"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a5d57518545baa31cf8a85a937a267681"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="diaspora_8php.html#a5d57518545baa31cf8a85a937a267681">diaspora_like</a> ($importer, $xml, $msg)</td></tr>
+<tr class="separator:a5d57518545baa31cf8a85a937a267681"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a938c7ee808d38725c0988fa6006805b9"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="diaspora_8php.html#a938c7ee808d38725c0988fa6006805b9">diaspora_retraction</a> ($importer, $xml)</td></tr>
+<tr class="separator:a938c7ee808d38725c0988fa6006805b9"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:aa34d2748bb97e9e193cacd572f335055"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="diaspora_8php.html#aa34d2748bb97e9e193cacd572f335055">diaspora_signed_retraction</a> ($importer, $xml, $msg)</td></tr>
+<tr class="separator:aa34d2748bb97e9e193cacd572f335055"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a900abf51398b2ef26cd2cd31c52f1b0f"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="diaspora_8php.html#a900abf51398b2ef26cd2cd31c52f1b0f">diaspora_profile</a> ($importer, $xml, $msg)</td></tr>
+<tr class="separator:a900abf51398b2ef26cd2cd31c52f1b0f"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a69f250b078a46e405647428ec3399a16"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="diaspora_8php.html#a69f250b078a46e405647428ec3399a16">diaspora_share</a> ($owner, $contact)</td></tr>
+<tr class="separator:a69f250b078a46e405647428ec3399a16"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ab736d6f32b5de31c97cb579fc730e200"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="diaspora_8php.html#ab736d6f32b5de31c97cb579fc730e200">diaspora_unshare</a> ($owner, $contact)</td></tr>
+<tr class="separator:ab736d6f32b5de31c97cb579fc730e200"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a33ae0c4606a7df4d801c05507d87f668"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="diaspora_8php.html#a33ae0c4606a7df4d801c05507d87f668">diaspora_send_status</a> ($item, $owner, $contact, $public_batch=false)</td></tr>
+<tr class="separator:a33ae0c4606a7df4d801c05507d87f668"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ad9985cc4214bdfc14878785c838c8690"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="diaspora_8php.html#ad9985cc4214bdfc14878785c838c8690">diaspora_is_reshare</a> ($body)</td></tr>
+<tr class="separator:ad9985cc4214bdfc14878785c838c8690"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ae6f52efd81fe515cd9912bc8293abf5b"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="diaspora_8php.html#ae6f52efd81fe515cd9912bc8293abf5b">diaspora_send_images</a> ($item, $owner, $contact, $images, $public_batch=false)</td></tr>
+<tr class="separator:ae6f52efd81fe515cd9912bc8293abf5b"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:af4698b165766f83d89ec1ea964bc92cc"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="diaspora_8php.html#af4698b165766f83d89ec1ea964bc92cc">diaspora_send_followup</a> ($item, $owner, $contact, $public_batch=false)</td></tr>
+<tr class="separator:af4698b165766f83d89ec1ea964bc92cc"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a0b3628a5e53332c3d3196b689fe2b94d"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="diaspora_8php.html#a0b3628a5e53332c3d3196b689fe2b94d">diaspora_send_relay</a> ($item, $owner, $contact, $public_batch=false)</td></tr>
+<tr class="separator:a0b3628a5e53332c3d3196b689fe2b94d"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a1704748aa2384c73e43f10e71defd31a"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="diaspora_8php.html#a1704748aa2384c73e43f10e71defd31a">diaspora_send_retraction</a> ($item, $owner, $contact, $public_batch=false)</td></tr>
+<tr class="separator:a1704748aa2384c73e43f10e71defd31a"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:aeb2bb78f620dbf51d9335e6eb7444f2c"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="diaspora_8php.html#aeb2bb78f620dbf51d9335e6eb7444f2c">diaspora_send_mail</a> ($item, $owner, $contact)</td></tr>
+<tr class="separator:aeb2bb78f620dbf51d9335e6eb7444f2c"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:aa704d6aa2ac77be345c0f501168e6e56"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="diaspora_8php.html#aa704d6aa2ac77be345c0f501168e6e56">diaspora_transmit</a> ($owner, $contact, $slap, $public_batch, $<a class="el" href="queue_8php.html#af8c93de86d866c3200174c8450a0f341">queue_run</a>=false)</td></tr>
+<tr class="separator:aa704d6aa2ac77be345c0f501168e6e56"><td class="memSeparator" colspan="2">&#160;</td></tr>
+</table>
+<h2 class="groupheader">Function Documentation</h2>
+<a class="anchor" id="a006731620a5242d410358b32678e48e3"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">diaspora_asphoto </td>
+ <td>(</td>
+ <td class="paramtype">&#160;</td>
+ <td class="paramname"><em>$importer</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">&#160;</td>
+ <td class="paramname"><em>$xml</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">&#160;</td>
+ <td class="paramname"><em>$msg</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p>Referenced by <a class="el" href="diaspora_8php.html#a6f0a67b6b17503c125af32763be931b7">diaspora_dispatch()</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a0fb2abe304aae19efc040a5e6b917829"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">diaspora_comment </td>
+ <td>(</td>
+ <td class="paramtype">&#160;</td>
+ <td class="paramname"><em>$importer</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">&#160;</td>
+ <td class="paramname"><em>$xml</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">&#160;</td>
+ <td class="paramname"><em>$msg</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p>Referenced by <a class="el" href="diaspora_8php.html#a6f0a67b6b17503c125af32763be931b7">diaspora_dispatch()</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="adef30b6fac948baedcc7194d5d155b5f"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">diaspora_conversation </td>
+ <td>(</td>
+ <td class="paramtype">&#160;</td>
+ <td class="paramname"><em>$importer</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">&#160;</td>
+ <td class="paramname"><em>$xml</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">&#160;</td>
+ <td class="paramname"><em>$msg</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p>Referenced by <a class="el" href="diaspora_8php.html#a6f0a67b6b17503c125af32763be931b7">diaspora_dispatch()</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a849754ec369e1a60fadae5c14584ca36"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">diaspora_decode </td>
+ <td>(</td>
+ <td class="paramtype">&#160;</td>
+ <td class="paramname"><em>$importer</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">&#160;</td>
+ <td class="paramname"><em>$xml</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+<p>diaspora_decode($importer,$xml) array $importer -&gt; from user table string $xml -&gt; urldecoded Diaspora salmon</p>
+<p>Returns array 'message' -&gt; decoded Diaspora XML message 'author' -&gt; author diaspora handle 'key' -&gt; author public key (converted to pkcs#8)</p>
+<p>Author and key are used elsewhere to save a lookup for verifying replies and likes </p>
+<pre class="fragment"> $decrypted now contains something like
+
+ &lt;decrypted_header&gt;
+ &lt;iv&gt;8e+G2+ET8l5BPuW0sVTnQw==&lt;/iv&gt;
+ &lt;aes_key&gt;UvSMb4puPeB14STkcDWq+4QE302Edu15oaprAQSkLKU=&lt;/aes_key&gt;
+</pre><p>OBSOLETE </p>
+<pre class="fragment"> &lt;author&gt;
+ &lt;name&gt;Ryan Hughes&lt;/name&gt;
+ &lt;uri&gt;acct:galaxor@diaspora.pirateship.org&lt;/uri&gt;
+ &lt;/author&gt;
+</pre><p>CURRENT </p>
+<pre class="fragment"> &lt;author_id&gt;galaxor@diaspora.priateship.org&lt;/author_id&gt;
+</pre><p>END DIFFS </p>
+<pre class="fragment"> &lt;/decrypted_header&gt;
+</pre>
+<p>Referenced by <a class="el" href="receive_8php.html#a03d8fa26e77844020ba5602deca7d494">receive_post()</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a6f0a67b6b17503c125af32763be931b7"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">diaspora_dispatch </td>
+ <td>(</td>
+ <td class="paramtype">&#160;</td>
+ <td class="paramname"><em>$importer</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">&#160;</td>
+ <td class="paramname"><em>$msg</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">&#160;</td>
+ <td class="paramname"><em>$attempt</em> = <code>1</code>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p>Referenced by <a class="el" href="diaspora_8php.html#ab99505944728d46585b8312989de533d">diaspora_dispatch_public()</a>, and <a class="el" href="receive_8php.html#a03d8fa26e77844020ba5602deca7d494">receive_post()</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="ab99505944728d46585b8312989de533d"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">diaspora_dispatch_public </td>
+ <td>(</td>
+ <td class="paramtype">&#160;</td>
+ <td class="paramname"><em>$msg</em></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p>Referenced by <a class="el" href="receive_8php.html#a03d8fa26e77844020ba5602deca7d494">receive_post()</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="aa8e551a53fcce34be3942d0c3e20d1f4"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">diaspora_get_contact_by_handle </td>
+ <td>(</td>
+ <td class="paramtype">&#160;</td>
+ <td class="paramname"><em>$uid</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">&#160;</td>
+ <td class="paramname"><em>$handle</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p>Referenced by <a class="el" href="diaspora_8php.html#a006731620a5242d410358b32678e48e3">diaspora_asphoto()</a>, <a class="el" href="diaspora_8php.html#a0fb2abe304aae19efc040a5e6b917829">diaspora_comment()</a>, <a class="el" href="diaspora_8php.html#adef30b6fac948baedcc7194d5d155b5f">diaspora_conversation()</a>, <a class="el" href="diaspora_8php.html#a5d57518545baa31cf8a85a937a267681">diaspora_like()</a>, <a class="el" href="diaspora_8php.html#a7cff2f8f11044c1b3a360f20e1bbee46">diaspora_message()</a>, <a class="el" href="diaspora_8php.html#a71fe9bb66626b4197ae018a230778bb2">diaspora_photo()</a>, <a class="el" href="diaspora_8php.html#a20b968d64ef26afe5cb0cc75a7570a31">diaspora_post()</a>, <a class="el" href="diaspora_8php.html#a900abf51398b2ef26cd2cd31c52f1b0f">diaspora_profile()</a>, <a class="el" href="diaspora_8php.html#ac1ab782a34552a7c6b4dc961754ed598">diaspora_request()</a>, <a class="el" href="diaspora_8php.html#a2bf43f6b5890897f425ef4325d34b007">diaspora_reshare()</a>, <a class="el" href="diaspora_8php.html#a938c7ee808d38725c0988fa6006805b9">diaspora_retraction()</a>, and <a class="el" href="diaspora_8php.html#aa34d2748bb97e9e193cacd572f335055">diaspora_signed_retraction()</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a5ed66b910d7b0284f9b3ee04e72306ff"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">diaspora_handle_from_contact </td>
+ <td>(</td>
+ <td class="paramtype">&#160;</td>
+ <td class="paramname"><em>$contact_hash</em></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p>Referenced by <a class="el" href="diaspora_8php.html#a0b3628a5e53332c3d3196b689fe2b94d">diaspora_send_relay()</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a858f70153c384f8778082cf7843a19da"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">diaspora_is_blacklisted </td>
+ <td>(</td>
+ <td class="paramtype">&#160;</td>
+ <td class="paramname"><em>$s</em></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p>Referenced by <a class="el" href="diaspora_8php.html#aa8e551a53fcce34be3942d0c3e20d1f4">diaspora_get_contact_by_handle()</a>, and <a class="el" href="diaspora_8php.html#aade0c165fcdded71352c7a67bf6ce37b">find_diaspora_person_by_handle()</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="ad9985cc4214bdfc14878785c838c8690"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">diaspora_is_reshare </td>
+ <td>(</td>
+ <td class="paramtype">&#160;</td>
+ <td class="paramname"><em>$body</em></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p>Referenced by <a class="el" href="diaspora_8php.html#a33ae0c4606a7df4d801c05507d87f668">diaspora_send_status()</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a5d57518545baa31cf8a85a937a267681"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">diaspora_like </td>
+ <td>(</td>
+ <td class="paramtype">&#160;</td>
+ <td class="paramname"><em>$importer</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">&#160;</td>
+ <td class="paramname"><em>$xml</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">&#160;</td>
+ <td class="paramname"><em>$msg</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p>Referenced by <a class="el" href="diaspora_8php.html#a6f0a67b6b17503c125af32763be931b7">diaspora_dispatch()</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a7cff2f8f11044c1b3a360f20e1bbee46"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">diaspora_message </td>
+ <td>(</td>
+ <td class="paramtype">&#160;</td>
+ <td class="paramname"><em>$importer</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">&#160;</td>
+ <td class="paramname"><em>$xml</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">&#160;</td>
+ <td class="paramname"><em>$msg</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p>Referenced by <a class="el" href="diaspora_8php.html#a6f0a67b6b17503c125af32763be931b7">diaspora_dispatch()</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a4901762cba5cd8dcdc57bdf285eefb1b"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">diaspora_msg_build </td>
+ <td>(</td>
+ <td class="paramtype">&#160;</td>
+ <td class="paramname"><em>$msg</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">&#160;</td>
+ <td class="paramname"><em>$channel</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">&#160;</td>
+ <td class="paramname"><em>$contact</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">&#160;</td>
+ <td class="paramname"><em>$prvkey</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">&#160;</td>
+ <td class="paramname"><em>$pubkey</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">&#160;</td>
+ <td class="paramname"><em>$public</em> = <code>false</code>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p>Referenced by <a class="el" href="diaspora_8php.html#af4698b165766f83d89ec1ea964bc92cc">diaspora_send_followup()</a>, <a class="el" href="diaspora_8php.html#ae6f52efd81fe515cd9912bc8293abf5b">diaspora_send_images()</a>, <a class="el" href="diaspora_8php.html#aeb2bb78f620dbf51d9335e6eb7444f2c">diaspora_send_mail()</a>, <a class="el" href="diaspora_8php.html#a0b3628a5e53332c3d3196b689fe2b94d">diaspora_send_relay()</a>, <a class="el" href="diaspora_8php.html#a1704748aa2384c73e43f10e71defd31a">diaspora_send_retraction()</a>, <a class="el" href="diaspora_8php.html#a33ae0c4606a7df4d801c05507d87f668">diaspora_send_status()</a>, <a class="el" href="diaspora_8php.html#a69f250b078a46e405647428ec3399a16">diaspora_share()</a>, and <a class="el" href="diaspora_8php.html#ab736d6f32b5de31c97cb579fc730e200">diaspora_unshare()</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a71fe9bb66626b4197ae018a230778bb2"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">diaspora_photo </td>
+ <td>(</td>
+ <td class="paramtype">&#160;</td>
+ <td class="paramname"><em>$importer</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">&#160;</td>
+ <td class="paramname"><em>$xml</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">&#160;</td>
+ <td class="paramname"><em>$msg</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">&#160;</td>
+ <td class="paramname"><em>$attempt</em> = <code>1</code>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p>Referenced by <a class="el" href="diaspora_8php.html#a6f0a67b6b17503c125af32763be931b7">diaspora_dispatch()</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a20b968d64ef26afe5cb0cc75a7570a31"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">diaspora_post </td>
+ <td>(</td>
+ <td class="paramtype">&#160;</td>
+ <td class="paramname"><em>$importer</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">&#160;</td>
+ <td class="paramname"><em>$xml</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">&#160;</td>
+ <td class="paramname"><em>$msg</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p>Referenced by <a class="el" href="diaspora_8php.html#a6f0a67b6b17503c125af32763be931b7">diaspora_dispatch()</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a131abd521b218d6ae6f7d2917d8b2605"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">diaspora_process_outbound </td>
+ <td>(</td>
+ <td class="paramtype">&#160;</td>
+ <td class="paramname"><em>$arr</em></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p>Referenced by <a class="el" href="notifier_8php.html#a568c502f626cff95e344c0748938b85d">notifier_run()</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a900abf51398b2ef26cd2cd31c52f1b0f"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">diaspora_profile </td>
+ <td>(</td>
+ <td class="paramtype">&#160;</td>
+ <td class="paramname"><em>$importer</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">&#160;</td>
+ <td class="paramname"><em>$xml</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">&#160;</td>
+ <td class="paramname"><em>$msg</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p>Referenced by <a class="el" href="diaspora_8php.html#a6f0a67b6b17503c125af32763be931b7">diaspora_dispatch()</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a586d5a3ba92d35cee14f879f290072aa"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">diaspora_pubmsg_build </td>
+ <td>(</td>
+ <td class="paramtype">&#160;</td>
+ <td class="paramname"><em>$msg</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">&#160;</td>
+ <td class="paramname"><em>$channel</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">&#160;</td>
+ <td class="paramname"><em>$contact</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">&#160;</td>
+ <td class="paramname"><em>$prvkey</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">&#160;</td>
+ <td class="paramname"><em>$pubkey</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p>Referenced by <a class="el" href="diaspora_8php.html#a4901762cba5cd8dcdc57bdf285eefb1b">diaspora_msg_build()</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="ac1ab782a34552a7c6b4dc961754ed598"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">diaspora_request </td>
+ <td>(</td>
+ <td class="paramtype">&#160;</td>
+ <td class="paramname"><em>$importer</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">&#160;</td>
+ <td class="paramname"><em>$xml</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+<p>If there is a default group for this channel, add this member to it </p>
+
+<p>Referenced by <a class="el" href="diaspora_8php.html#a6f0a67b6b17503c125af32763be931b7">diaspora_dispatch()</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a2bf43f6b5890897f425ef4325d34b007"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">diaspora_reshare </td>
+ <td>(</td>
+ <td class="paramtype">&#160;</td>
+ <td class="paramname"><em>$importer</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">&#160;</td>
+ <td class="paramname"><em>$xml</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">&#160;</td>
+ <td class="paramname"><em>$msg</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p>Referenced by <a class="el" href="diaspora_8php.html#a6f0a67b6b17503c125af32763be931b7">diaspora_dispatch()</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a938c7ee808d38725c0988fa6006805b9"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">diaspora_retraction </td>
+ <td>(</td>
+ <td class="paramtype">&#160;</td>
+ <td class="paramname"><em>$importer</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">&#160;</td>
+ <td class="paramname"><em>$xml</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p>Referenced by <a class="el" href="diaspora_8php.html#a6f0a67b6b17503c125af32763be931b7">diaspora_dispatch()</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="af4698b165766f83d89ec1ea964bc92cc"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">diaspora_send_followup </td>
+ <td>(</td>
+ <td class="paramtype">&#160;</td>
+ <td class="paramname"><em>$item</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">&#160;</td>
+ <td class="paramname"><em>$owner</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">&#160;</td>
+ <td class="paramname"><em>$contact</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">&#160;</td>
+ <td class="paramname"><em>$public_batch</em> = <code>false</code>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p>Referenced by <a class="el" href="diaspora_8php.html#a131abd521b218d6ae6f7d2917d8b2605">diaspora_process_outbound()</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="ae6f52efd81fe515cd9912bc8293abf5b"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">diaspora_send_images </td>
+ <td>(</td>
+ <td class="paramtype">&#160;</td>
+ <td class="paramname"><em>$item</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">&#160;</td>
+ <td class="paramname"><em>$owner</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">&#160;</td>
+ <td class="paramname"><em>$contact</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">&#160;</td>
+ <td class="paramname"><em>$images</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">&#160;</td>
+ <td class="paramname"><em>$public_batch</em> = <code>false</code>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p>Referenced by <a class="el" href="diaspora_8php.html#a33ae0c4606a7df4d801c05507d87f668">diaspora_send_status()</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="aeb2bb78f620dbf51d9335e6eb7444f2c"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">diaspora_send_mail </td>
+ <td>(</td>
+ <td class="paramtype">&#160;</td>
+ <td class="paramname"><em>$item</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">&#160;</td>
+ <td class="paramname"><em>$owner</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">&#160;</td>
+ <td class="paramname"><em>$contact</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p>Referenced by <a class="el" href="diaspora_8php.html#a131abd521b218d6ae6f7d2917d8b2605">diaspora_process_outbound()</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a0b3628a5e53332c3d3196b689fe2b94d"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">diaspora_send_relay </td>
+ <td>(</td>
+ <td class="paramtype">&#160;</td>
+ <td class="paramname"><em>$item</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">&#160;</td>
+ <td class="paramname"><em>$owner</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">&#160;</td>
+ <td class="paramname"><em>$contact</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">&#160;</td>
+ <td class="paramname"><em>$public_batch</em> = <code>false</code>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p>Referenced by <a class="el" href="diaspora_8php.html#a131abd521b218d6ae6f7d2917d8b2605">diaspora_process_outbound()</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a1704748aa2384c73e43f10e71defd31a"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">diaspora_send_retraction </td>
+ <td>(</td>
+ <td class="paramtype">&#160;</td>
+ <td class="paramname"><em>$item</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">&#160;</td>
+ <td class="paramname"><em>$owner</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">&#160;</td>
+ <td class="paramname"><em>$contact</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">&#160;</td>
+ <td class="paramname"><em>$public_batch</em> = <code>false</code>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p>Referenced by <a class="el" href="diaspora_8php.html#a131abd521b218d6ae6f7d2917d8b2605">diaspora_process_outbound()</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a33ae0c4606a7df4d801c05507d87f668"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">diaspora_send_status </td>
+ <td>(</td>
+ <td class="paramtype">&#160;</td>
+ <td class="paramname"><em>$item</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">&#160;</td>
+ <td class="paramname"><em>$owner</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">&#160;</td>
+ <td class="paramname"><em>$contact</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">&#160;</td>
+ <td class="paramname"><em>$public_batch</em> = <code>false</code>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p>Referenced by <a class="el" href="diaspora_8php.html#a131abd521b218d6ae6f7d2917d8b2605">diaspora_process_outbound()</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a69f250b078a46e405647428ec3399a16"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">diaspora_share </td>
+ <td>(</td>
+ <td class="paramtype">&#160;</td>
+ <td class="paramname"><em>$owner</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">&#160;</td>
+ <td class="paramname"><em>$contact</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p>Referenced by <a class="el" href="diaspora_8php.html#ac1ab782a34552a7c6b4dc961754ed598">diaspora_request()</a>, and <a class="el" href="notifier_8php.html#a568c502f626cff95e344c0748938b85d">notifier_run()</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="aa34d2748bb97e9e193cacd572f335055"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">diaspora_signed_retraction </td>
+ <td>(</td>
+ <td class="paramtype">&#160;</td>
+ <td class="paramname"><em>$importer</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">&#160;</td>
+ <td class="paramname"><em>$xml</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">&#160;</td>
+ <td class="paramname"><em>$msg</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p>Referenced by <a class="el" href="diaspora_8php.html#a6f0a67b6b17503c125af32763be931b7">diaspora_dispatch()</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="aa704d6aa2ac77be345c0f501168e6e56"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">diaspora_transmit </td>
+ <td>(</td>
+ <td class="paramtype">&#160;</td>
+ <td class="paramname"><em>$owner</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">&#160;</td>
+ <td class="paramname"><em>$contact</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">&#160;</td>
+ <td class="paramname"><em>$slap</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">&#160;</td>
+ <td class="paramname"><em>$public_batch</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">&#160;</td>
+ <td class="paramname"><em>$queue_run</em> = <code>false</code>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p>Referenced by <a class="el" href="diaspora_8php.html#af4698b165766f83d89ec1ea964bc92cc">diaspora_send_followup()</a>, <a class="el" href="diaspora_8php.html#ae6f52efd81fe515cd9912bc8293abf5b">diaspora_send_images()</a>, <a class="el" href="diaspora_8php.html#aeb2bb78f620dbf51d9335e6eb7444f2c">diaspora_send_mail()</a>, <a class="el" href="diaspora_8php.html#a0b3628a5e53332c3d3196b689fe2b94d">diaspora_send_relay()</a>, <a class="el" href="diaspora_8php.html#a1704748aa2384c73e43f10e71defd31a">diaspora_send_retraction()</a>, <a class="el" href="diaspora_8php.html#a33ae0c4606a7df4d801c05507d87f668">diaspora_send_status()</a>, <a class="el" href="diaspora_8php.html#a69f250b078a46e405647428ec3399a16">diaspora_share()</a>, and <a class="el" href="diaspora_8php.html#ab736d6f32b5de31c97cb579fc730e200">diaspora_unshare()</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="ab736d6f32b5de31c97cb579fc730e200"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">diaspora_unshare </td>
+ <td>(</td>
+ <td class="paramtype">&#160;</td>
+ <td class="paramname"><em>$owner</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">&#160;</td>
+ <td class="paramname"><em>$contact</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+</div>
+</div>
+<a class="anchor" id="aade0c165fcdded71352c7a67bf6ce37b"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">find_diaspora_person_by_handle </td>
+ <td>(</td>
+ <td class="paramtype">&#160;</td>
+ <td class="paramname"><em>$handle</em></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p>Referenced by <a class="el" href="diaspora_8php.html#a0fb2abe304aae19efc040a5e6b917829">diaspora_comment()</a>, <a class="el" href="diaspora_8php.html#adef30b6fac948baedcc7194d5d155b5f">diaspora_conversation()</a>, <a class="el" href="diaspora_8php.html#a5d57518545baa31cf8a85a937a267681">diaspora_like()</a>, <a class="el" href="diaspora_8php.html#a7cff2f8f11044c1b3a360f20e1bbee46">diaspora_message()</a>, <a class="el" href="diaspora_8php.html#ac1ab782a34552a7c6b4dc961754ed598">diaspora_request()</a>, <a class="el" href="diaspora_8php.html#a2bf43f6b5890897f425ef4325d34b007">diaspora_reshare()</a>, and <a class="el" href="diaspora_8php.html#a9bf7ef4094e0e14f6e2b7fe76ab7ad2e">get_diaspora_key()</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a9bf7ef4094e0e14f6e2b7fe76ab7ad2e"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">get_diaspora_key </td>
+ <td>(</td>
+ <td class="paramtype">&#160;</td>
+ <td class="paramname"><em>$handle</em></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p>Referenced by <a class="el" href="diaspora_8php.html#a849754ec369e1a60fadae5c14584ca36">diaspora_decode()</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="ac9e41e46626dc608204bf4b5e16e62d7"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">get_diaspora_reshare_xml </td>
+ <td>(</td>
+ <td class="paramtype">&#160;</td>
+ <td class="paramname"><em>$url</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">&#160;</td>
+ <td class="paramname"><em>$recurse</em> = <code>0</code>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p>Referenced by <a class="el" href="diaspora_8php.html#a2bf43f6b5890897f425ef4325d34b007">diaspora_reshare()</a>.</p>
+
+</div>
+</div>
+</div><!-- contents -->
+</div><!-- doc-content -->
+
diff --git a/doc/html/diaspora_8php.js b/doc/html/diaspora_8php.js
new file mode 100644
index 000000000..9db03ac5d
--- /dev/null
+++ b/doc/html/diaspora_8php.js
@@ -0,0 +1,37 @@
+var diaspora_8php =
+[
+ [ "diaspora_asphoto", "diaspora_8php.html#a006731620a5242d410358b32678e48e3", null ],
+ [ "diaspora_comment", "diaspora_8php.html#a0fb2abe304aae19efc040a5e6b917829", null ],
+ [ "diaspora_conversation", "diaspora_8php.html#adef30b6fac948baedcc7194d5d155b5f", null ],
+ [ "diaspora_decode", "diaspora_8php.html#a849754ec369e1a60fadae5c14584ca36", null ],
+ [ "diaspora_dispatch", "diaspora_8php.html#a6f0a67b6b17503c125af32763be931b7", null ],
+ [ "diaspora_dispatch_public", "diaspora_8php.html#ab99505944728d46585b8312989de533d", null ],
+ [ "diaspora_get_contact_by_handle", "diaspora_8php.html#aa8e551a53fcce34be3942d0c3e20d1f4", null ],
+ [ "diaspora_handle_from_contact", "diaspora_8php.html#a5ed66b910d7b0284f9b3ee04e72306ff", null ],
+ [ "diaspora_is_blacklisted", "diaspora_8php.html#a858f70153c384f8778082cf7843a19da", null ],
+ [ "diaspora_is_reshare", "diaspora_8php.html#ad9985cc4214bdfc14878785c838c8690", null ],
+ [ "diaspora_like", "diaspora_8php.html#a5d57518545baa31cf8a85a937a267681", null ],
+ [ "diaspora_message", "diaspora_8php.html#a7cff2f8f11044c1b3a360f20e1bbee46", null ],
+ [ "diaspora_msg_build", "diaspora_8php.html#a4901762cba5cd8dcdc57bdf285eefb1b", null ],
+ [ "diaspora_photo", "diaspora_8php.html#a71fe9bb66626b4197ae018a230778bb2", null ],
+ [ "diaspora_post", "diaspora_8php.html#a20b968d64ef26afe5cb0cc75a7570a31", null ],
+ [ "diaspora_process_outbound", "diaspora_8php.html#a131abd521b218d6ae6f7d2917d8b2605", null ],
+ [ "diaspora_profile", "diaspora_8php.html#a900abf51398b2ef26cd2cd31c52f1b0f", null ],
+ [ "diaspora_pubmsg_build", "diaspora_8php.html#a586d5a3ba92d35cee14f879f290072aa", null ],
+ [ "diaspora_request", "diaspora_8php.html#ac1ab782a34552a7c6b4dc961754ed598", null ],
+ [ "diaspora_reshare", "diaspora_8php.html#a2bf43f6b5890897f425ef4325d34b007", null ],
+ [ "diaspora_retraction", "diaspora_8php.html#a938c7ee808d38725c0988fa6006805b9", null ],
+ [ "diaspora_send_followup", "diaspora_8php.html#af4698b165766f83d89ec1ea964bc92cc", null ],
+ [ "diaspora_send_images", "diaspora_8php.html#ae6f52efd81fe515cd9912bc8293abf5b", null ],
+ [ "diaspora_send_mail", "diaspora_8php.html#aeb2bb78f620dbf51d9335e6eb7444f2c", null ],
+ [ "diaspora_send_relay", "diaspora_8php.html#a0b3628a5e53332c3d3196b689fe2b94d", null ],
+ [ "diaspora_send_retraction", "diaspora_8php.html#a1704748aa2384c73e43f10e71defd31a", null ],
+ [ "diaspora_send_status", "diaspora_8php.html#a33ae0c4606a7df4d801c05507d87f668", null ],
+ [ "diaspora_share", "diaspora_8php.html#a69f250b078a46e405647428ec3399a16", null ],
+ [ "diaspora_signed_retraction", "diaspora_8php.html#aa34d2748bb97e9e193cacd572f335055", null ],
+ [ "diaspora_transmit", "diaspora_8php.html#aa704d6aa2ac77be345c0f501168e6e56", null ],
+ [ "diaspora_unshare", "diaspora_8php.html#ab736d6f32b5de31c97cb579fc730e200", null ],
+ [ "find_diaspora_person_by_handle", "diaspora_8php.html#aade0c165fcdded71352c7a67bf6ce37b", null ],
+ [ "get_diaspora_key", "diaspora_8php.html#a9bf7ef4094e0e14f6e2b7fe76ab7ad2e", null ],
+ [ "get_diaspora_reshare_xml", "diaspora_8php.html#ac9e41e46626dc608204bf4b5e16e62d7", null ]
+]; \ No newline at end of file
diff --git a/doc/html/dimport_8php.html b/doc/html/dimport_8php.html
new file mode 100644
index 000000000..925e95097
--- /dev/null
+++ b/doc/html/dimport_8php.html
@@ -0,0 +1,136 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<meta name="generator" content="Doxygen 1.8.3.1"/>
+<title>The Red Matrix: include/dimport.php File Reference</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="navtree.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="resize.js"></script>
+<script type="text/javascript" src="navtree.js"></script>
+<script type="text/javascript">
+ $(document).ready(initResizable);
+ $(window).load(resizeHeight);
+</script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/search.js"></script>
+<script type="text/javascript">
+ $(document).ready(function() { searchBox.OnSelectItem(0); });
+</script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+ <td id="projectlogo"><img alt="Logo" src="rm-64.png"/></td>
+ <td style="padding-left: 0.5em;">
+ <div id="projectname">The Red Matrix
+ </div>
+ </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.8.3.1 -->
+<script type="text/javascript">
+var searchBox = new SearchBox("searchBox", "search",false,'Search');
+</script>
+ <div id="navrow1" class="tabs">
+ <ul class="tablist">
+ <li><a href="index.html"><span>Main&#160;Page</span></a></li>
+ <li><a href="pages.html"><span>Related&#160;Pages</span></a></li>
+ <li><a href="namespaces.html"><span>Namespaces</span></a></li>
+ <li><a href="annotated.html"><span>Classes</span></a></li>
+ <li class="current"><a href="files.html"><span>Files</span></a></li>
+ <li>
+ <div id="MSearchBox" class="MSearchBoxInactive">
+ <span class="left">
+ <img id="MSearchSelect" src="search/mag_sel.png"
+ onmouseover="return searchBox.OnSearchSelectShow()"
+ onmouseout="return searchBox.OnSearchSelectHide()"
+ alt=""/>
+ <input type="text" id="MSearchField" value="Search" accesskey="S"
+ onfocus="searchBox.OnSearchFieldFocus(true)"
+ onblur="searchBox.OnSearchFieldFocus(false)"
+ onkeyup="searchBox.OnSearchFieldChange(event)"/>
+ </span><span class="right">
+ <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
+ </span>
+ </div>
+ </li>
+ </ul>
+ </div>
+ <div id="navrow2" class="tabs2">
+ <ul class="tablist">
+ <li><a href="files.html"><span>File&#160;List</span></a></li>
+ <li><a href="globals.html"><span>File&#160;Members</span></a></li>
+ </ul>
+ </div>
+</div><!-- top -->
+<div id="side-nav" class="ui-resizable side-nav-resizable">
+ <div id="nav-tree">
+ <div id="nav-tree-contents">
+ <div id="nav-sync" class="sync"></div>
+ </div>
+ </div>
+ <div id="splitbar" style="-moz-user-select:none;"
+ class="ui-resizable-handle">
+ </div>
+</div>
+<script type="text/javascript">
+$(document).ready(function(){initNavTree('dimport_8php.html','');});
+</script>
+<div id="doc-content">
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+ onmouseover="return searchBox.OnSearchSelectShow()"
+ onmouseout="return searchBox.OnSearchSelectHide()"
+ onkeydown="return searchBox.OnSearchSelectKey(event)">
+<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark">&#160;</span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark">&#160;</span>Classes</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark">&#160;</span>Namespaces</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark">&#160;</span>Files</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark">&#160;</span>Functions</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark">&#160;</span>Variables</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark">&#160;</span>Pages</a></div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<iframe src="javascript:void(0)" frameborder="0"
+ name="MSearchResults" id="MSearchResults">
+</iframe>
+</div>
+
+<div class="header">
+ <div class="summary">
+<a href="#func-members">Functions</a> </div>
+ <div class="headertitle">
+<div class="title">dimport.php File Reference</div> </div>
+</div><!--header-->
+<div class="contents">
+<table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="func-members"></a>
+Functions</h2></td></tr>
+<tr class="memitem:a581f040717941ce3e1868b0b5dceefd1"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="dimport_8php.html#a581f040717941ce3e1868b0b5dceefd1">foofoo</a> ()</td></tr>
+<tr class="separator:a581f040717941ce3e1868b0b5dceefd1"><td class="memSeparator" colspan="2">&#160;</td></tr>
+</table>
+<h2 class="groupheader">Function Documentation</h2>
+<a class="anchor" id="a581f040717941ce3e1868b0b5dceefd1"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">foofoo </td>
+ <td>(</td>
+ <td class="paramname"></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+</div>
+</div>
+</div><!-- contents -->
+</div><!-- doc-content -->
+
diff --git a/doc/html/dimport_8php.js b/doc/html/dimport_8php.js
new file mode 100644
index 000000000..1f463fb3d
--- /dev/null
+++ b/doc/html/dimport_8php.js
@@ -0,0 +1,4 @@
+var dimport_8php =
+[
+ [ "foofoo", "dimport_8php.html#a581f040717941ce3e1868b0b5dceefd1", null ]
+]; \ No newline at end of file
diff --git a/doc/html/dir_0262a6a8df56a167e3761b6e5a54bb1c.html b/doc/html/dir_0262a6a8df56a167e3761b6e5a54bb1c.html
new file mode 100644
index 000000000..e3fe69222
--- /dev/null
+++ b/doc/html/dir_0262a6a8df56a167e3761b6e5a54bb1c.html
@@ -0,0 +1,112 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<meta name="generator" content="Doxygen 1.8.3.1"/>
+<title>The Red Matrix: view/theme/suckerberg Directory Reference</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="navtree.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="resize.js"></script>
+<script type="text/javascript" src="navtree.js"></script>
+<script type="text/javascript">
+ $(document).ready(initResizable);
+ $(window).load(resizeHeight);
+</script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/search.js"></script>
+<script type="text/javascript">
+ $(document).ready(function() { searchBox.OnSelectItem(0); });
+</script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+ <td id="projectlogo"><img alt="Logo" src="rm-64.png"/></td>
+ <td style="padding-left: 0.5em;">
+ <div id="projectname">The Red Matrix
+ </div>
+ </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.8.3.1 -->
+<script type="text/javascript">
+var searchBox = new SearchBox("searchBox", "search",false,'Search');
+</script>
+ <div id="navrow1" class="tabs">
+ <ul class="tablist">
+ <li><a href="index.html"><span>Main&#160;Page</span></a></li>
+ <li><a href="pages.html"><span>Related&#160;Pages</span></a></li>
+ <li><a href="namespaces.html"><span>Namespaces</span></a></li>
+ <li><a href="annotated.html"><span>Classes</span></a></li>
+ <li><a href="files.html"><span>Files</span></a></li>
+ <li>
+ <div id="MSearchBox" class="MSearchBoxInactive">
+ <span class="left">
+ <img id="MSearchSelect" src="search/mag_sel.png"
+ onmouseover="return searchBox.OnSearchSelectShow()"
+ onmouseout="return searchBox.OnSearchSelectHide()"
+ alt=""/>
+ <input type="text" id="MSearchField" value="Search" accesskey="S"
+ onfocus="searchBox.OnSearchFieldFocus(true)"
+ onblur="searchBox.OnSearchFieldFocus(false)"
+ onkeyup="searchBox.OnSearchFieldChange(event)"/>
+ </span><span class="right">
+ <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
+ </span>
+ </div>
+ </li>
+ </ul>
+ </div>
+</div><!-- top -->
+<div id="side-nav" class="ui-resizable side-nav-resizable">
+ <div id="nav-tree">
+ <div id="nav-tree-contents">
+ <div id="nav-sync" class="sync"></div>
+ </div>
+ </div>
+ <div id="splitbar" style="-moz-user-select:none;"
+ class="ui-resizable-handle">
+ </div>
+</div>
+<script type="text/javascript">
+$(document).ready(function(){initNavTree('dir_0262a6a8df56a167e3761b6e5a54bb1c.html','');});
+</script>
+<div id="doc-content">
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+ onmouseover="return searchBox.OnSearchSelectShow()"
+ onmouseout="return searchBox.OnSearchSelectHide()"
+ onkeydown="return searchBox.OnSearchSelectKey(event)">
+<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark">&#160;</span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark">&#160;</span>Classes</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark">&#160;</span>Namespaces</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark">&#160;</span>Files</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark">&#160;</span>Functions</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark">&#160;</span>Variables</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark">&#160;</span>Pages</a></div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<iframe src="javascript:void(0)" frameborder="0"
+ name="MSearchResults" id="MSearchResults">
+</iframe>
+</div>
+
+<div class="header">
+ <div class="headertitle">
+<div class="title">suckerberg Directory Reference</div> </div>
+</div><!--header-->
+<div class="contents">
+<table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="subdirs"></a>
+Directories</h2></td></tr>
+<tr class="memitem:dir_ac4f5165c8d71ebb1a1a0a168a48f3f7"><td class="memItemLeft" align="right" valign="top">directory &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="dir_ac4f5165c8d71ebb1a1a0a168a48f3f7.html">php</a></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+</table>
+</div><!-- contents -->
+</div><!-- doc-content -->
+
diff --git a/doc/html/dir_0262a6a8df56a167e3761b6e5a54bb1c.js b/doc/html/dir_0262a6a8df56a167e3761b6e5a54bb1c.js
new file mode 100644
index 000000000..c0919b906
--- /dev/null
+++ b/doc/html/dir_0262a6a8df56a167e3761b6e5a54bb1c.js
@@ -0,0 +1,4 @@
+var dir_0262a6a8df56a167e3761b6e5a54bb1c =
+[
+ [ "php", "dir_ac4f5165c8d71ebb1a1a0a168a48f3f7.html", "dir_ac4f5165c8d71ebb1a1a0a168a48f3f7" ]
+]; \ No newline at end of file
diff --git a/doc/html/dir_21bc5169ff11430004758be31dcfc6c4.html b/doc/html/dir_21bc5169ff11430004758be31dcfc6c4.html
index 51284f865..ac82b3a1d 100644
--- a/doc/html/dir_21bc5169ff11430004758be31dcfc6c4.html
+++ b/doc/html/dir_21bc5169ff11430004758be31dcfc6c4.html
@@ -105,11 +105,14 @@ $(document).ready(function(){initNavTree('dir_21bc5169ff11430004758be31dcfc6c4.h
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="files"></a>
Files</h2></td></tr>
<tr class="memitem:dba__driver_8php"><td class="memItemLeft" align="right" valign="top">file &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="dba__driver_8php.html">dba_driver.php</a></td></tr>
+<tr class="memdesc:dba__driver_8php"><td class="mdescLeft">&#160;</td><td class="mdescRight">some database related functions and abstract driver class. <br/></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:dba__mysql_8php"><td class="memItemLeft" align="right" valign="top">file &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="dba__mysql_8php.html">dba_mysql.php</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:dba__mysqli_8php"><td class="memItemLeft" align="right" valign="top">file &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="dba__mysqli_8php.html">dba_mysqli.php</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:dba__postgres_8php"><td class="memItemLeft" align="right" valign="top">file &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="dba__postgres_8php.html">dba_postgres.php</a></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
</div><!-- contents -->
</div><!-- doc-content -->
diff --git a/doc/html/dir_21bc5169ff11430004758be31dcfc6c4.js b/doc/html/dir_21bc5169ff11430004758be31dcfc6c4.js
index 7b0143847..1c1549310 100644
--- a/doc/html/dir_21bc5169ff11430004758be31dcfc6c4.js
+++ b/doc/html/dir_21bc5169ff11430004758be31dcfc6c4.js
@@ -6,5 +6,8 @@ var dir_21bc5169ff11430004758be31dcfc6c4 =
] ],
[ "dba_mysqli.php", "dba__mysqli_8php.html", [
[ "dba_mysqli", "classdba__mysqli.html", "classdba__mysqli" ]
+ ] ],
+ [ "dba_postgres.php", "dba__postgres_8php.html", [
+ [ "dba_postgres", "classdba__postgres.html", "classdba__postgres" ]
] ]
]; \ No newline at end of file
diff --git a/doc/html/dir_23ec12649285f9fabf3a6b7380226c28.html b/doc/html/dir_23ec12649285f9fabf3a6b7380226c28.html
index 44036cc73..a67f14997 100644
--- a/doc/html/dir_23ec12649285f9fabf3a6b7380226c28.html
+++ b/doc/html/dir_23ec12649285f9fabf3a6b7380226c28.html
@@ -106,8 +106,6 @@ $(document).ready(function(){initNavTree('dir_23ec12649285f9fabf3a6b7380226c28.h
Directories</h2></td></tr>
<tr class="memitem:dir_0eaa4a0adae8ba4811e133c6e594aeee"><td class="memItemLeft" align="right" valign="top">directory &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="dir_0eaa4a0adae8ba4811e133c6e594aeee.html">fpostit</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:dir_720432dea4a717197ae070dbc42b8f20"><td class="memItemLeft" align="right" valign="top">directory &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="dir_720432dea4a717197ae070dbc42b8f20.html">wp</a></td></tr>
-<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="files"></a>
Files</h2></td></tr>
diff --git a/doc/html/dir_23ec12649285f9fabf3a6b7380226c28.js b/doc/html/dir_23ec12649285f9fabf3a6b7380226c28.js
index e59a2a7c4..1ea37ec69 100644
--- a/doc/html/dir_23ec12649285f9fabf3a6b7380226c28.js
+++ b/doc/html/dir_23ec12649285f9fabf3a6b7380226c28.js
@@ -1,7 +1,6 @@
var dir_23ec12649285f9fabf3a6b7380226c28 =
[
[ "fpostit", "dir_0eaa4a0adae8ba4811e133c6e594aeee.html", "dir_0eaa4a0adae8ba4811e133c6e594aeee" ],
- [ "wp", "dir_720432dea4a717197ae070dbc42b8f20.html", "dir_720432dea4a717197ae070dbc42b8f20" ],
[ "db_update.php", "db__update_8php.html", null ],
[ "docblox_errorchecker.php", "docblox__errorchecker_8php.html", "docblox__errorchecker_8php" ],
[ "extract.php", "extract_8php.html", "extract_8php" ],
diff --git a/doc/html/dir_3d9c9d0c5e9556dd3eba1e072fa6eaeb.html b/doc/html/dir_3d9c9d0c5e9556dd3eba1e072fa6eaeb.html
index 0f7deb162..9949aeeb2 100644
--- a/doc/html/dir_3d9c9d0c5e9556dd3eba1e072fa6eaeb.html
+++ b/doc/html/dir_3d9c9d0c5e9556dd3eba1e072fa6eaeb.html
@@ -112,6 +112,12 @@ Files</h2></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:notred_8php"><td class="memItemLeft" align="right" valign="top">file &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="notred_8php.html">notred.php</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:simple__black__on__white_8php"><td class="memItemLeft" align="right" valign="top">file &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="simple__black__on__white_8php.html">simple_black_on_white.php</a></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:simple__green__on__black_8php"><td class="memItemLeft" align="right" valign="top">file &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="simple__green__on__black_8php.html">simple_green_on_black.php</a></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:simple__white__on__black_8php"><td class="memItemLeft" align="right" valign="top">file &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="simple__white__on__black_8php.html">simple_white_on_black.php</a></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
</div><!-- contents -->
</div><!-- doc-content -->
diff --git a/doc/html/dir_3d9c9d0c5e9556dd3eba1e072fa6eaeb.js b/doc/html/dir_3d9c9d0c5e9556dd3eba1e072fa6eaeb.js
index 0ec7e6954..459c9186f 100644
--- a/doc/html/dir_3d9c9d0c5e9556dd3eba1e072fa6eaeb.js
+++ b/doc/html/dir_3d9c9d0c5e9556dd3eba1e072fa6eaeb.js
@@ -3,5 +3,8 @@ var dir_3d9c9d0c5e9556dd3eba1e072fa6eaeb =
[ "boxy.php", "boxy_8php.html", null ],
[ "BS-Default.php", "BS-Default_8php.html", null ],
[ "dark.php", "dark_8php.html", null ],
- [ "notred.php", "notred_8php.html", null ]
+ [ "notred.php", "notred_8php.html", null ],
+ [ "simple_black_on_white.php", "simple__black__on__white_8php.html", null ],
+ [ "simple_green_on_black.php", "simple__green__on__black_8php.html", null ],
+ [ "simple_white_on_black.php", "simple__white__on__black_8php.html", null ]
]; \ No newline at end of file
diff --git a/doc/html/dir_4acb285a1960a920438b718da0958cf4.html b/doc/html/dir_4acb285a1960a920438b718da0958cf4.html
new file mode 100644
index 000000000..b609d2603
--- /dev/null
+++ b/doc/html/dir_4acb285a1960a920438b718da0958cf4.html
@@ -0,0 +1,112 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<meta name="generator" content="Doxygen 1.8.3.1"/>
+<title>The Red Matrix: view/theme/stumble Directory Reference</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="navtree.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="resize.js"></script>
+<script type="text/javascript" src="navtree.js"></script>
+<script type="text/javascript">
+ $(document).ready(initResizable);
+ $(window).load(resizeHeight);
+</script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/search.js"></script>
+<script type="text/javascript">
+ $(document).ready(function() { searchBox.OnSelectItem(0); });
+</script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+ <td id="projectlogo"><img alt="Logo" src="rm-64.png"/></td>
+ <td style="padding-left: 0.5em;">
+ <div id="projectname">The Red Matrix
+ </div>
+ </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.8.3.1 -->
+<script type="text/javascript">
+var searchBox = new SearchBox("searchBox", "search",false,'Search');
+</script>
+ <div id="navrow1" class="tabs">
+ <ul class="tablist">
+ <li><a href="index.html"><span>Main&#160;Page</span></a></li>
+ <li><a href="pages.html"><span>Related&#160;Pages</span></a></li>
+ <li><a href="namespaces.html"><span>Namespaces</span></a></li>
+ <li><a href="annotated.html"><span>Classes</span></a></li>
+ <li><a href="files.html"><span>Files</span></a></li>
+ <li>
+ <div id="MSearchBox" class="MSearchBoxInactive">
+ <span class="left">
+ <img id="MSearchSelect" src="search/mag_sel.png"
+ onmouseover="return searchBox.OnSearchSelectShow()"
+ onmouseout="return searchBox.OnSearchSelectHide()"
+ alt=""/>
+ <input type="text" id="MSearchField" value="Search" accesskey="S"
+ onfocus="searchBox.OnSearchFieldFocus(true)"
+ onblur="searchBox.OnSearchFieldFocus(false)"
+ onkeyup="searchBox.OnSearchFieldChange(event)"/>
+ </span><span class="right">
+ <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
+ </span>
+ </div>
+ </li>
+ </ul>
+ </div>
+</div><!-- top -->
+<div id="side-nav" class="ui-resizable side-nav-resizable">
+ <div id="nav-tree">
+ <div id="nav-tree-contents">
+ <div id="nav-sync" class="sync"></div>
+ </div>
+ </div>
+ <div id="splitbar" style="-moz-user-select:none;"
+ class="ui-resizable-handle">
+ </div>
+</div>
+<script type="text/javascript">
+$(document).ready(function(){initNavTree('dir_4acb285a1960a920438b718da0958cf4.html','');});
+</script>
+<div id="doc-content">
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+ onmouseover="return searchBox.OnSearchSelectShow()"
+ onmouseout="return searchBox.OnSearchSelectHide()"
+ onkeydown="return searchBox.OnSearchSelectKey(event)">
+<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark">&#160;</span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark">&#160;</span>Classes</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark">&#160;</span>Namespaces</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark">&#160;</span>Files</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark">&#160;</span>Functions</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark">&#160;</span>Variables</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark">&#160;</span>Pages</a></div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<iframe src="javascript:void(0)" frameborder="0"
+ name="MSearchResults" id="MSearchResults">
+</iframe>
+</div>
+
+<div class="header">
+ <div class="headertitle">
+<div class="title">stumble Directory Reference</div> </div>
+</div><!--header-->
+<div class="contents">
+<table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="subdirs"></a>
+Directories</h2></td></tr>
+<tr class="memitem:dir_65522070e0a83623cefc01ebe26a83e3"><td class="memItemLeft" align="right" valign="top">directory &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="dir_65522070e0a83623cefc01ebe26a83e3.html">php</a></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+</table>
+</div><!-- contents -->
+</div><!-- doc-content -->
+
diff --git a/doc/html/dir_4acb285a1960a920438b718da0958cf4.js b/doc/html/dir_4acb285a1960a920438b718da0958cf4.js
new file mode 100644
index 000000000..ddf00ba8a
--- /dev/null
+++ b/doc/html/dir_4acb285a1960a920438b718da0958cf4.js
@@ -0,0 +1,4 @@
+var dir_4acb285a1960a920438b718da0958cf4 =
+[
+ [ "php", "dir_65522070e0a83623cefc01ebe26a83e3.html", "dir_65522070e0a83623cefc01ebe26a83e3" ]
+]; \ No newline at end of file
diff --git a/doc/html/dir_65522070e0a83623cefc01ebe26a83e3.html b/doc/html/dir_65522070e0a83623cefc01ebe26a83e3.html
new file mode 100644
index 000000000..70b82fa1e
--- /dev/null
+++ b/doc/html/dir_65522070e0a83623cefc01ebe26a83e3.html
@@ -0,0 +1,114 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<meta name="generator" content="Doxygen 1.8.3.1"/>
+<title>The Red Matrix: view/theme/stumble/php Directory Reference</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="navtree.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="resize.js"></script>
+<script type="text/javascript" src="navtree.js"></script>
+<script type="text/javascript">
+ $(document).ready(initResizable);
+ $(window).load(resizeHeight);
+</script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/search.js"></script>
+<script type="text/javascript">
+ $(document).ready(function() { searchBox.OnSelectItem(0); });
+</script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+ <td id="projectlogo"><img alt="Logo" src="rm-64.png"/></td>
+ <td style="padding-left: 0.5em;">
+ <div id="projectname">The Red Matrix
+ </div>
+ </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.8.3.1 -->
+<script type="text/javascript">
+var searchBox = new SearchBox("searchBox", "search",false,'Search');
+</script>
+ <div id="navrow1" class="tabs">
+ <ul class="tablist">
+ <li><a href="index.html"><span>Main&#160;Page</span></a></li>
+ <li><a href="pages.html"><span>Related&#160;Pages</span></a></li>
+ <li><a href="namespaces.html"><span>Namespaces</span></a></li>
+ <li><a href="annotated.html"><span>Classes</span></a></li>
+ <li><a href="files.html"><span>Files</span></a></li>
+ <li>
+ <div id="MSearchBox" class="MSearchBoxInactive">
+ <span class="left">
+ <img id="MSearchSelect" src="search/mag_sel.png"
+ onmouseover="return searchBox.OnSearchSelectShow()"
+ onmouseout="return searchBox.OnSearchSelectHide()"
+ alt=""/>
+ <input type="text" id="MSearchField" value="Search" accesskey="S"
+ onfocus="searchBox.OnSearchFieldFocus(true)"
+ onblur="searchBox.OnSearchFieldFocus(false)"
+ onkeyup="searchBox.OnSearchFieldChange(event)"/>
+ </span><span class="right">
+ <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
+ </span>
+ </div>
+ </li>
+ </ul>
+ </div>
+</div><!-- top -->
+<div id="side-nav" class="ui-resizable side-nav-resizable">
+ <div id="nav-tree">
+ <div id="nav-tree-contents">
+ <div id="nav-sync" class="sync"></div>
+ </div>
+ </div>
+ <div id="splitbar" style="-moz-user-select:none;"
+ class="ui-resizable-handle">
+ </div>
+</div>
+<script type="text/javascript">
+$(document).ready(function(){initNavTree('dir_65522070e0a83623cefc01ebe26a83e3.html','');});
+</script>
+<div id="doc-content">
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+ onmouseover="return searchBox.OnSearchSelectShow()"
+ onmouseout="return searchBox.OnSearchSelectHide()"
+ onkeydown="return searchBox.OnSearchSelectKey(event)">
+<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark">&#160;</span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark">&#160;</span>Classes</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark">&#160;</span>Namespaces</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark">&#160;</span>Files</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark">&#160;</span>Functions</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark">&#160;</span>Variables</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark">&#160;</span>Pages</a></div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<iframe src="javascript:void(0)" frameborder="0"
+ name="MSearchResults" id="MSearchResults">
+</iframe>
+</div>
+
+<div class="header">
+ <div class="headertitle">
+<div class="title">php Directory Reference</div> </div>
+</div><!--header-->
+<div class="contents">
+<table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="files"></a>
+Files</h2></td></tr>
+<tr class="memitem:stumble_2php_2style_8php"><td class="memItemLeft" align="right" valign="top">file &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="stumble_2php_2style_8php.html">style.php</a></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:stumble_2php_2theme_8php"><td class="memItemLeft" align="right" valign="top">file &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="stumble_2php_2theme_8php.html">theme.php</a></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+</table>
+</div><!-- contents -->
+</div><!-- doc-content -->
+
diff --git a/doc/html/dir_65522070e0a83623cefc01ebe26a83e3.js b/doc/html/dir_65522070e0a83623cefc01ebe26a83e3.js
new file mode 100644
index 000000000..f914d9b01
--- /dev/null
+++ b/doc/html/dir_65522070e0a83623cefc01ebe26a83e3.js
@@ -0,0 +1,5 @@
+var dir_65522070e0a83623cefc01ebe26a83e3 =
+[
+ [ "style.php", "stumble_2php_2style_8php.html", null ],
+ [ "theme.php", "stumble_2php_2theme_8php.html", "stumble_2php_2theme_8php" ]
+]; \ No newline at end of file
diff --git a/doc/html/dir_6e52a2a2cd27c08b7df5e5cdb216bd77.html b/doc/html/dir_6e52a2a2cd27c08b7df5e5cdb216bd77.html
new file mode 100644
index 000000000..920784d3d
--- /dev/null
+++ b/doc/html/dir_6e52a2a2cd27c08b7df5e5cdb216bd77.html
@@ -0,0 +1,112 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<meta name="generator" content="Doxygen 1.8.3.1"/>
+<title>The Red Matrix: view/theme/hivenet Directory Reference</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="navtree.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="resize.js"></script>
+<script type="text/javascript" src="navtree.js"></script>
+<script type="text/javascript">
+ $(document).ready(initResizable);
+ $(window).load(resizeHeight);
+</script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/search.js"></script>
+<script type="text/javascript">
+ $(document).ready(function() { searchBox.OnSelectItem(0); });
+</script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+ <td id="projectlogo"><img alt="Logo" src="rm-64.png"/></td>
+ <td style="padding-left: 0.5em;">
+ <div id="projectname">The Red Matrix
+ </div>
+ </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.8.3.1 -->
+<script type="text/javascript">
+var searchBox = new SearchBox("searchBox", "search",false,'Search');
+</script>
+ <div id="navrow1" class="tabs">
+ <ul class="tablist">
+ <li><a href="index.html"><span>Main&#160;Page</span></a></li>
+ <li><a href="pages.html"><span>Related&#160;Pages</span></a></li>
+ <li><a href="namespaces.html"><span>Namespaces</span></a></li>
+ <li><a href="annotated.html"><span>Classes</span></a></li>
+ <li><a href="files.html"><span>Files</span></a></li>
+ <li>
+ <div id="MSearchBox" class="MSearchBoxInactive">
+ <span class="left">
+ <img id="MSearchSelect" src="search/mag_sel.png"
+ onmouseover="return searchBox.OnSearchSelectShow()"
+ onmouseout="return searchBox.OnSearchSelectHide()"
+ alt=""/>
+ <input type="text" id="MSearchField" value="Search" accesskey="S"
+ onfocus="searchBox.OnSearchFieldFocus(true)"
+ onblur="searchBox.OnSearchFieldFocus(false)"
+ onkeyup="searchBox.OnSearchFieldChange(event)"/>
+ </span><span class="right">
+ <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
+ </span>
+ </div>
+ </li>
+ </ul>
+ </div>
+</div><!-- top -->
+<div id="side-nav" class="ui-resizable side-nav-resizable">
+ <div id="nav-tree">
+ <div id="nav-tree-contents">
+ <div id="nav-sync" class="sync"></div>
+ </div>
+ </div>
+ <div id="splitbar" style="-moz-user-select:none;"
+ class="ui-resizable-handle">
+ </div>
+</div>
+<script type="text/javascript">
+$(document).ready(function(){initNavTree('dir_6e52a2a2cd27c08b7df5e5cdb216bd77.html','');});
+</script>
+<div id="doc-content">
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+ onmouseover="return searchBox.OnSearchSelectShow()"
+ onmouseout="return searchBox.OnSearchSelectHide()"
+ onkeydown="return searchBox.OnSearchSelectKey(event)">
+<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark">&#160;</span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark">&#160;</span>Classes</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark">&#160;</span>Namespaces</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark">&#160;</span>Files</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark">&#160;</span>Functions</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark">&#160;</span>Variables</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark">&#160;</span>Pages</a></div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<iframe src="javascript:void(0)" frameborder="0"
+ name="MSearchResults" id="MSearchResults">
+</iframe>
+</div>
+
+<div class="header">
+ <div class="headertitle">
+<div class="title">hivenet Directory Reference</div> </div>
+</div><!--header-->
+<div class="contents">
+<table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="subdirs"></a>
+Directories</h2></td></tr>
+<tr class="memitem:dir_9ef82eb3846cd201470898c3b6ef38cf"><td class="memItemLeft" align="right" valign="top">directory &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="dir_9ef82eb3846cd201470898c3b6ef38cf.html">php</a></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+</table>
+</div><!-- contents -->
+</div><!-- doc-content -->
+
diff --git a/doc/html/dir_6e52a2a2cd27c08b7df5e5cdb216bd77.js b/doc/html/dir_6e52a2a2cd27c08b7df5e5cdb216bd77.js
new file mode 100644
index 000000000..cc2615730
--- /dev/null
+++ b/doc/html/dir_6e52a2a2cd27c08b7df5e5cdb216bd77.js
@@ -0,0 +1,4 @@
+var dir_6e52a2a2cd27c08b7df5e5cdb216bd77 =
+[
+ [ "php", "dir_9ef82eb3846cd201470898c3b6ef38cf.html", "dir_9ef82eb3846cd201470898c3b6ef38cf" ]
+]; \ No newline at end of file
diff --git a/doc/html/dir_7edbbd0f8c514efef79942dcdc21f738.html b/doc/html/dir_7edbbd0f8c514efef79942dcdc21f738.html
new file mode 100644
index 000000000..d477e48a8
--- /dev/null
+++ b/doc/html/dir_7edbbd0f8c514efef79942dcdc21f738.html
@@ -0,0 +1,114 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<meta name="generator" content="Doxygen 1.8.3.1"/>
+<title>The Red Matrix: include/Import Directory Reference</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="navtree.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="resize.js"></script>
+<script type="text/javascript" src="navtree.js"></script>
+<script type="text/javascript">
+ $(document).ready(initResizable);
+ $(window).load(resizeHeight);
+</script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/search.js"></script>
+<script type="text/javascript">
+ $(document).ready(function() { searchBox.OnSelectItem(0); });
+</script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+ <td id="projectlogo"><img alt="Logo" src="rm-64.png"/></td>
+ <td style="padding-left: 0.5em;">
+ <div id="projectname">The Red Matrix
+ </div>
+ </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.8.3.1 -->
+<script type="text/javascript">
+var searchBox = new SearchBox("searchBox", "search",false,'Search');
+</script>
+ <div id="navrow1" class="tabs">
+ <ul class="tablist">
+ <li><a href="index.html"><span>Main&#160;Page</span></a></li>
+ <li><a href="pages.html"><span>Related&#160;Pages</span></a></li>
+ <li><a href="namespaces.html"><span>Namespaces</span></a></li>
+ <li><a href="annotated.html"><span>Classes</span></a></li>
+ <li><a href="files.html"><span>Files</span></a></li>
+ <li>
+ <div id="MSearchBox" class="MSearchBoxInactive">
+ <span class="left">
+ <img id="MSearchSelect" src="search/mag_sel.png"
+ onmouseover="return searchBox.OnSearchSelectShow()"
+ onmouseout="return searchBox.OnSearchSelectHide()"
+ alt=""/>
+ <input type="text" id="MSearchField" value="Search" accesskey="S"
+ onfocus="searchBox.OnSearchFieldFocus(true)"
+ onblur="searchBox.OnSearchFieldFocus(false)"
+ onkeyup="searchBox.OnSearchFieldChange(event)"/>
+ </span><span class="right">
+ <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
+ </span>
+ </div>
+ </li>
+ </ul>
+ </div>
+</div><!-- top -->
+<div id="side-nav" class="ui-resizable side-nav-resizable">
+ <div id="nav-tree">
+ <div id="nav-tree-contents">
+ <div id="nav-sync" class="sync"></div>
+ </div>
+ </div>
+ <div id="splitbar" style="-moz-user-select:none;"
+ class="ui-resizable-handle">
+ </div>
+</div>
+<script type="text/javascript">
+$(document).ready(function(){initNavTree('dir_7edbbd0f8c514efef79942dcdc21f738.html','');});
+</script>
+<div id="doc-content">
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+ onmouseover="return searchBox.OnSearchSelectShow()"
+ onmouseout="return searchBox.OnSearchSelectHide()"
+ onkeydown="return searchBox.OnSearchSelectKey(event)">
+<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark">&#160;</span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark">&#160;</span>Classes</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark">&#160;</span>Namespaces</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark">&#160;</span>Files</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark">&#160;</span>Functions</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark">&#160;</span>Variables</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark">&#160;</span>Pages</a></div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<iframe src="javascript:void(0)" frameborder="0"
+ name="MSearchResults" id="MSearchResults">
+</iframe>
+</div>
+
+<div class="header">
+ <div class="headertitle">
+<div class="title">Import Directory Reference</div> </div>
+</div><!--header-->
+<div class="contents">
+<table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="files"></a>
+Files</h2></td></tr>
+<tr class="memitem:Importer_8php"><td class="memItemLeft" align="right" valign="top">file &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="Importer_8php.html">Importer.php</a></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:refimport_8php"><td class="memItemLeft" align="right" valign="top">file &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="refimport_8php.html">refimport.php</a></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+</table>
+</div><!-- contents -->
+</div><!-- doc-content -->
+
diff --git a/doc/html/dir_7edbbd0f8c514efef79942dcdc21f738.js b/doc/html/dir_7edbbd0f8c514efef79942dcdc21f738.js
new file mode 100644
index 000000000..70fef9c82
--- /dev/null
+++ b/doc/html/dir_7edbbd0f8c514efef79942dcdc21f738.js
@@ -0,0 +1,7 @@
+var dir_7edbbd0f8c514efef79942dcdc21f738 =
+[
+ [ "Importer.php", "Importer_8php.html", [
+ [ "Import", "classRedMatrix_1_1Import_1_1Import.html", "classRedMatrix_1_1Import_1_1Import" ]
+ ] ],
+ [ "refimport.php", "refimport_8php.html", "refimport_8php" ]
+]; \ No newline at end of file
diff --git a/doc/html/dir_817f6d302394b98e59575acdb59998bc.html b/doc/html/dir_817f6d302394b98e59575acdb59998bc.html
index 827718f9f..3c4237aac 100644
--- a/doc/html/dir_817f6d302394b98e59575acdb59998bc.html
+++ b/doc/html/dir_817f6d302394b98e59575acdb59998bc.html
@@ -116,6 +116,8 @@ Files</h2></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:none_8php"><td class="memItemLeft" align="right" valign="top">file &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="none_8php.html">none.php</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:redable_8php"><td class="memItemLeft" align="right" valign="top">file &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="redable_8php.html">redable.php</a></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:php_2theme__init_8php"><td class="memItemLeft" align="right" valign="top">file &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="php_2theme__init_8php.html">theme_init.php</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
diff --git a/doc/html/dir_817f6d302394b98e59575acdb59998bc.js b/doc/html/dir_817f6d302394b98e59575acdb59998bc.js
index 7e1b24bb6..c33882a29 100644
--- a/doc/html/dir_817f6d302394b98e59575acdb59998bc.js
+++ b/doc/html/dir_817f6d302394b98e59575acdb59998bc.js
@@ -6,5 +6,6 @@ var dir_817f6d302394b98e59575acdb59998bc =
[ "minimal.php", "minimal_8php.html", null ],
[ "mod_import.php", "mod__import_8php.html", "mod__import_8php" ],
[ "none.php", "none_8php.html", null ],
+ [ "redable.php", "redable_8php.html", "redable_8php" ],
[ "theme_init.php", "php_2theme__init_8php.html", "php_2theme__init_8php" ]
]; \ No newline at end of file
diff --git a/doc/html/dir_8543001e5d25368a6edede3e63efb554.html b/doc/html/dir_8543001e5d25368a6edede3e63efb554.html
index 5c15c9f91..da6696cd0 100644
--- a/doc/html/dir_8543001e5d25368a6edede3e63efb554.html
+++ b/doc/html/dir_8543001e5d25368a6edede3e63efb554.html
@@ -106,12 +106,16 @@ $(document).ready(function(){initNavTree('dir_8543001e5d25368a6edede3e63efb554.h
Directories</h2></td></tr>
<tr class="memitem:dir_d520c5cf583201d9437764f209363c22"><td class="memItemLeft" align="right" valign="top">directory &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="dir_d520c5cf583201d9437764f209363c22.html">apw</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:dir_922c77e958c99a98db92d38a3a349bf2"><td class="memItemLeft" align="right" valign="top">directory &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="dir_922c77e958c99a98db92d38a3a349bf2.html">blogga</a></td></tr>
+<tr class="memitem:dir_6e52a2a2cd27c08b7df5e5cdb216bd77"><td class="memItemLeft" align="right" valign="top">directory &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="dir_6e52a2a2cd27c08b7df5e5cdb216bd77.html">hivenet</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:dir_8e58ba5e98ac07e59ee15ca7486c9950"><td class="memItemLeft" align="right" valign="top">directory &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="dir_8e58ba5e98ac07e59ee15ca7486c9950.html">mytheme</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:dir_55dbaf9b7b53c4fc605c9011743a7353"><td class="memItemLeft" align="right" valign="top">directory &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="dir_55dbaf9b7b53c4fc605c9011743a7353.html">redbasic</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:dir_4acb285a1960a920438b718da0958cf4"><td class="memItemLeft" align="right" valign="top">directory &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="dir_4acb285a1960a920438b718da0958cf4.html">stumble</a></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:dir_0262a6a8df56a167e3761b6e5a54bb1c"><td class="memItemLeft" align="right" valign="top">directory &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="dir_0262a6a8df56a167e3761b6e5a54bb1c.html">suckerberg</a></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
</div><!-- contents -->
</div><!-- doc-content -->
diff --git a/doc/html/dir_8543001e5d25368a6edede3e63efb554.js b/doc/html/dir_8543001e5d25368a6edede3e63efb554.js
index 25e3e7cc0..8851cf93a 100644
--- a/doc/html/dir_8543001e5d25368a6edede3e63efb554.js
+++ b/doc/html/dir_8543001e5d25368a6edede3e63efb554.js
@@ -1,7 +1,9 @@
var dir_8543001e5d25368a6edede3e63efb554 =
[
[ "apw", "dir_d520c5cf583201d9437764f209363c22.html", "dir_d520c5cf583201d9437764f209363c22" ],
- [ "blogga", "dir_922c77e958c99a98db92d38a3a349bf2.html", "dir_922c77e958c99a98db92d38a3a349bf2" ],
+ [ "hivenet", "dir_6e52a2a2cd27c08b7df5e5cdb216bd77.html", "dir_6e52a2a2cd27c08b7df5e5cdb216bd77" ],
[ "mytheme", "dir_8e58ba5e98ac07e59ee15ca7486c9950.html", "dir_8e58ba5e98ac07e59ee15ca7486c9950" ],
- [ "redbasic", "dir_55dbaf9b7b53c4fc605c9011743a7353.html", "dir_55dbaf9b7b53c4fc605c9011743a7353" ]
+ [ "redbasic", "dir_55dbaf9b7b53c4fc605c9011743a7353.html", "dir_55dbaf9b7b53c4fc605c9011743a7353" ],
+ [ "stumble", "dir_4acb285a1960a920438b718da0958cf4.html", "dir_4acb285a1960a920438b718da0958cf4" ],
+ [ "suckerberg", "dir_0262a6a8df56a167e3761b6e5a54bb1c.html", "dir_0262a6a8df56a167e3761b6e5a54bb1c" ]
]; \ No newline at end of file
diff --git a/doc/html/dir_9ef82eb3846cd201470898c3b6ef38cf.html b/doc/html/dir_9ef82eb3846cd201470898c3b6ef38cf.html
new file mode 100644
index 000000000..91c6ed04b
--- /dev/null
+++ b/doc/html/dir_9ef82eb3846cd201470898c3b6ef38cf.html
@@ -0,0 +1,114 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<meta name="generator" content="Doxygen 1.8.3.1"/>
+<title>The Red Matrix: view/theme/hivenet/php Directory Reference</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="navtree.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="resize.js"></script>
+<script type="text/javascript" src="navtree.js"></script>
+<script type="text/javascript">
+ $(document).ready(initResizable);
+ $(window).load(resizeHeight);
+</script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/search.js"></script>
+<script type="text/javascript">
+ $(document).ready(function() { searchBox.OnSelectItem(0); });
+</script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+ <td id="projectlogo"><img alt="Logo" src="rm-64.png"/></td>
+ <td style="padding-left: 0.5em;">
+ <div id="projectname">The Red Matrix
+ </div>
+ </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.8.3.1 -->
+<script type="text/javascript">
+var searchBox = new SearchBox("searchBox", "search",false,'Search');
+</script>
+ <div id="navrow1" class="tabs">
+ <ul class="tablist">
+ <li><a href="index.html"><span>Main&#160;Page</span></a></li>
+ <li><a href="pages.html"><span>Related&#160;Pages</span></a></li>
+ <li><a href="namespaces.html"><span>Namespaces</span></a></li>
+ <li><a href="annotated.html"><span>Classes</span></a></li>
+ <li><a href="files.html"><span>Files</span></a></li>
+ <li>
+ <div id="MSearchBox" class="MSearchBoxInactive">
+ <span class="left">
+ <img id="MSearchSelect" src="search/mag_sel.png"
+ onmouseover="return searchBox.OnSearchSelectShow()"
+ onmouseout="return searchBox.OnSearchSelectHide()"
+ alt=""/>
+ <input type="text" id="MSearchField" value="Search" accesskey="S"
+ onfocus="searchBox.OnSearchFieldFocus(true)"
+ onblur="searchBox.OnSearchFieldFocus(false)"
+ onkeyup="searchBox.OnSearchFieldChange(event)"/>
+ </span><span class="right">
+ <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
+ </span>
+ </div>
+ </li>
+ </ul>
+ </div>
+</div><!-- top -->
+<div id="side-nav" class="ui-resizable side-nav-resizable">
+ <div id="nav-tree">
+ <div id="nav-tree-contents">
+ <div id="nav-sync" class="sync"></div>
+ </div>
+ </div>
+ <div id="splitbar" style="-moz-user-select:none;"
+ class="ui-resizable-handle">
+ </div>
+</div>
+<script type="text/javascript">
+$(document).ready(function(){initNavTree('dir_9ef82eb3846cd201470898c3b6ef38cf.html','');});
+</script>
+<div id="doc-content">
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+ onmouseover="return searchBox.OnSearchSelectShow()"
+ onmouseout="return searchBox.OnSearchSelectHide()"
+ onkeydown="return searchBox.OnSearchSelectKey(event)">
+<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark">&#160;</span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark">&#160;</span>Classes</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark">&#160;</span>Namespaces</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark">&#160;</span>Files</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark">&#160;</span>Functions</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark">&#160;</span>Variables</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark">&#160;</span>Pages</a></div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<iframe src="javascript:void(0)" frameborder="0"
+ name="MSearchResults" id="MSearchResults">
+</iframe>
+</div>
+
+<div class="header">
+ <div class="headertitle">
+<div class="title">php Directory Reference</div> </div>
+</div><!--header-->
+<div class="contents">
+<table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="files"></a>
+Files</h2></td></tr>
+<tr class="memitem:hivenet_2php_2style_8php"><td class="memItemLeft" align="right" valign="top">file &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="hivenet_2php_2style_8php.html">style.php</a></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:hivenet_2php_2theme_8php"><td class="memItemLeft" align="right" valign="top">file &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="hivenet_2php_2theme_8php.html">theme.php</a></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+</table>
+</div><!-- contents -->
+</div><!-- doc-content -->
+
diff --git a/doc/html/dir_9ef82eb3846cd201470898c3b6ef38cf.js b/doc/html/dir_9ef82eb3846cd201470898c3b6ef38cf.js
new file mode 100644
index 000000000..576c2c655
--- /dev/null
+++ b/doc/html/dir_9ef82eb3846cd201470898c3b6ef38cf.js
@@ -0,0 +1,5 @@
+var dir_9ef82eb3846cd201470898c3b6ef38cf =
+[
+ [ "style.php", "hivenet_2php_2style_8php.html", null ],
+ [ "theme.php", "hivenet_2php_2theme_8php.html", "hivenet_2php_2theme_8php" ]
+]; \ No newline at end of file
diff --git a/doc/html/dir__fns_8php.html b/doc/html/dir__fns_8php.html
index 8ab7ddf42..5e83185aa 100644
--- a/doc/html/dir__fns_8php.html
+++ b/doc/html/dir__fns_8php.html
@@ -114,6 +114,8 @@ $(document).ready(function(){initNavTree('dir__fns_8php.html','');});
Functions</h2></td></tr>
<tr class="memitem:a8c15aa69da12f2d3476b9e93b82b337d"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="dir__fns_8php.html#a8c15aa69da12f2d3476b9e93b82b337d">find_upstream_directory</a> ($dirmode)</td></tr>
<tr class="separator:a8c15aa69da12f2d3476b9e93b82b337d"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a2f7d74bb2aea8bcd2537aee5c6708a16"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="dir__fns_8php.html#a2f7d74bb2aea8bcd2537aee5c6708a16">check_upstream_directory</a> ()</td></tr>
+<tr class="separator:a2f7d74bb2aea8bcd2537aee5c6708a16"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ae56881d69bb6f8e828c9e35454386774"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="dir__fns_8php.html#ae56881d69bb6f8e828c9e35454386774">dir_sort_links</a> ()</td></tr>
<tr class="separator:ae56881d69bb6f8e828c9e35454386774"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:acf621621e929d49441da30aad76a58cf"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="dir__fns_8php.html#acf621621e929d49441da30aad76a58cf">dir_safe_mode</a> ()</td></tr>
@@ -126,6 +128,24 @@ Functions</h2></td></tr>
<tr class="separator:acd37b17dce3bdec6d5a6344a20598c1e"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<h2 class="groupheader">Function Documentation</h2>
+<a class="anchor" id="a2f7d74bb2aea8bcd2537aee5c6708a16"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">check_upstream_directory </td>
+ <td>(</td>
+ <td class="paramname"></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+<p>Directories may come and go over time. We will need to check that our directory server is still valid occasionally, and reset to something that is if our directory has gone offline for any reason</p>
+
+<p>Referenced by <a class="el" href="poller_8php.html#a5f12df3a4738124b6c039971e87e76da">poller_run()</a>.</p>
+
+</div>
+</div>
<a class="anchor" id="acf621621e929d49441da30aad76a58cf"></a>
<div class="memitem">
<div class="memproto">
@@ -175,7 +195,7 @@ Functions</h2></td></tr>
</div><div class="memdoc">
<p>No directory has yet been set. For most sites, pick one at random from our list of directory servers. However, if we're a directory server ourself, point at the local instance We will then set this value so this should only ever happen once. Ideally there will be an admin setting to change to a different directory server if you don't like our choice or if circumstances change.</p>
-<p>Referenced by <a class="el" href="mod_2directory_8php.html#aac79396570d759da2efac24fcedf5b44">directory_content()</a>, <a class="el" href="include_2directory_8php.html#aa75d3b0697ca1456aaabdb37a74aa0f0">directory_run()</a>, <a class="el" href="dirprofile_8php.html#a3e1d30d3d93863ff5615f2df4ac7f052">dirprofile_init()</a>, <a class="el" href="acl_8php.html#a57dceff370d4a0e7ae673d50fbfda61f">navbar_complete()</a>, <a class="el" href="pubsites_8php.html#af614e279aab54065345bda6b03eafdf0">pubsites_content()</a>, and <a class="el" href="socgraph_8php.html#a790690bb1a1d02483fe31632a160144d">update_suggestions()</a>.</p>
+<p>Referenced by <a class="el" href="mod_2directory_8php.html#aac79396570d759da2efac24fcedf5b44">directory_content()</a>, <a class="el" href="include_2directory_8php.html#aa75d3b0697ca1456aaabdb37a74aa0f0">directory_run()</a>, <a class="el" href="acl_8php.html#a57dceff370d4a0e7ae673d50fbfda61f">navbar_complete()</a>, <a class="el" href="pubsites_8php.html#af614e279aab54065345bda6b03eafdf0">pubsites_content()</a>, and <a class="el" href="socgraph_8php.html#a790690bb1a1d02483fe31632a160144d">update_suggestions()</a>.</p>
</div>
</div>
diff --git a/doc/html/dir__fns_8php.js b/doc/html/dir__fns_8php.js
index 9c745ff6f..d0a717014 100644
--- a/doc/html/dir__fns_8php.js
+++ b/doc/html/dir__fns_8php.js
@@ -1,5 +1,6 @@
var dir__fns_8php =
[
+ [ "check_upstream_directory", "dir__fns_8php.html#a2f7d74bb2aea8bcd2537aee5c6708a16", null ],
[ "dir_safe_mode", "dir__fns_8php.html#acf621621e929d49441da30aad76a58cf", null ],
[ "dir_sort_links", "dir__fns_8php.html#ae56881d69bb6f8e828c9e35454386774", null ],
[ "find_upstream_directory", "dir__fns_8php.html#a8c15aa69da12f2d3476b9e93b82b337d", null ],
diff --git a/doc/html/dir_ac4f5165c8d71ebb1a1a0a168a48f3f7.html b/doc/html/dir_ac4f5165c8d71ebb1a1a0a168a48f3f7.html
new file mode 100644
index 000000000..76a464461
--- /dev/null
+++ b/doc/html/dir_ac4f5165c8d71ebb1a1a0a168a48f3f7.html
@@ -0,0 +1,114 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<meta name="generator" content="Doxygen 1.8.3.1"/>
+<title>The Red Matrix: view/theme/suckerberg/php Directory Reference</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="navtree.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="resize.js"></script>
+<script type="text/javascript" src="navtree.js"></script>
+<script type="text/javascript">
+ $(document).ready(initResizable);
+ $(window).load(resizeHeight);
+</script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/search.js"></script>
+<script type="text/javascript">
+ $(document).ready(function() { searchBox.OnSelectItem(0); });
+</script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+ <td id="projectlogo"><img alt="Logo" src="rm-64.png"/></td>
+ <td style="padding-left: 0.5em;">
+ <div id="projectname">The Red Matrix
+ </div>
+ </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.8.3.1 -->
+<script type="text/javascript">
+var searchBox = new SearchBox("searchBox", "search",false,'Search');
+</script>
+ <div id="navrow1" class="tabs">
+ <ul class="tablist">
+ <li><a href="index.html"><span>Main&#160;Page</span></a></li>
+ <li><a href="pages.html"><span>Related&#160;Pages</span></a></li>
+ <li><a href="namespaces.html"><span>Namespaces</span></a></li>
+ <li><a href="annotated.html"><span>Classes</span></a></li>
+ <li><a href="files.html"><span>Files</span></a></li>
+ <li>
+ <div id="MSearchBox" class="MSearchBoxInactive">
+ <span class="left">
+ <img id="MSearchSelect" src="search/mag_sel.png"
+ onmouseover="return searchBox.OnSearchSelectShow()"
+ onmouseout="return searchBox.OnSearchSelectHide()"
+ alt=""/>
+ <input type="text" id="MSearchField" value="Search" accesskey="S"
+ onfocus="searchBox.OnSearchFieldFocus(true)"
+ onblur="searchBox.OnSearchFieldFocus(false)"
+ onkeyup="searchBox.OnSearchFieldChange(event)"/>
+ </span><span class="right">
+ <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
+ </span>
+ </div>
+ </li>
+ </ul>
+ </div>
+</div><!-- top -->
+<div id="side-nav" class="ui-resizable side-nav-resizable">
+ <div id="nav-tree">
+ <div id="nav-tree-contents">
+ <div id="nav-sync" class="sync"></div>
+ </div>
+ </div>
+ <div id="splitbar" style="-moz-user-select:none;"
+ class="ui-resizable-handle">
+ </div>
+</div>
+<script type="text/javascript">
+$(document).ready(function(){initNavTree('dir_ac4f5165c8d71ebb1a1a0a168a48f3f7.html','');});
+</script>
+<div id="doc-content">
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+ onmouseover="return searchBox.OnSearchSelectShow()"
+ onmouseout="return searchBox.OnSearchSelectHide()"
+ onkeydown="return searchBox.OnSearchSelectKey(event)">
+<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark">&#160;</span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark">&#160;</span>Classes</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark">&#160;</span>Namespaces</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark">&#160;</span>Files</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark">&#160;</span>Functions</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark">&#160;</span>Variables</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark">&#160;</span>Pages</a></div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<iframe src="javascript:void(0)" frameborder="0"
+ name="MSearchResults" id="MSearchResults">
+</iframe>
+</div>
+
+<div class="header">
+ <div class="headertitle">
+<div class="title">php Directory Reference</div> </div>
+</div><!--header-->
+<div class="contents">
+<table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="files"></a>
+Files</h2></td></tr>
+<tr class="memitem:suckerberg_2php_2style_8php"><td class="memItemLeft" align="right" valign="top">file &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="suckerberg_2php_2style_8php.html">style.php</a></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:suckerberg_2php_2theme_8php"><td class="memItemLeft" align="right" valign="top">file &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="suckerberg_2php_2theme_8php.html">theme.php</a></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+</table>
+</div><!-- contents -->
+</div><!-- doc-content -->
+
diff --git a/doc/html/dir_ac4f5165c8d71ebb1a1a0a168a48f3f7.js b/doc/html/dir_ac4f5165c8d71ebb1a1a0a168a48f3f7.js
new file mode 100644
index 000000000..0e2f340ef
--- /dev/null
+++ b/doc/html/dir_ac4f5165c8d71ebb1a1a0a168a48f3f7.js
@@ -0,0 +1,5 @@
+var dir_ac4f5165c8d71ebb1a1a0a168a48f3f7 =
+[
+ [ "style.php", "suckerberg_2php_2style_8php.html", null ],
+ [ "theme.php", "suckerberg_2php_2theme_8php.html", "suckerberg_2php_2theme_8php" ]
+]; \ No newline at end of file
diff --git a/doc/html/dir_d41ce877eb409a4791b288730010abe2.html b/doc/html/dir_d41ce877eb409a4791b288730010abe2.html
index a64bf15ff..eebd1d1dc 100644
--- a/doc/html/dir_d41ce877eb409a4791b288730010abe2.html
+++ b/doc/html/dir_d41ce877eb409a4791b288730010abe2.html
@@ -126,8 +126,6 @@ Files</h2></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:mod_2bookmarks_8php"><td class="memItemLeft" align="right" valign="top">file &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="mod_2bookmarks_8php.html">bookmarks.php</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:mod_2chanman_8php"><td class="memItemLeft" align="right" valign="top">file &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="mod_2chanman_8php.html">chanman.php</a></td></tr>
-<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:channel_8php"><td class="memItemLeft" align="right" valign="top">file &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="channel_8php.html">channel.php</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:chanview_8php"><td class="memItemLeft" align="right" valign="top">file &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="chanview_8php.html">chanview.php</a></td></tr>
@@ -137,7 +135,7 @@ Files</h2></td></tr>
<tr class="memitem:chatsvc_8php"><td class="memItemLeft" align="right" valign="top">file &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="chatsvc_8php.html">chatsvc.php</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:cloud_8php"><td class="memItemLeft" align="right" valign="top">file &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="cloud_8php.html">cloud.php</a></td></tr>
-<tr class="memdesc:cloud_8php"><td class="mdescLeft">&#160;</td><td class="mdescRight">Initialize Red Matrix's cloud (SabreDAV) <br/></td></tr>
+<tr class="memdesc:cloud_8php"><td class="mdescLeft">&#160;</td><td class="mdescRight">Initialize <a class="el" href="namespaceRedMatrix.html" title="Class Import.">RedMatrix</a>'s cloud (SabreDAV). <br/></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:common_8php"><td class="memItemLeft" align="right" valign="top">file &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="common_8php.html">common.php</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
@@ -153,8 +151,6 @@ Files</h2></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:mod_2directory_8php"><td class="memItemLeft" align="right" valign="top">file &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="mod_2directory_8php.html">directory.php</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:dirprofile_8php"><td class="memItemLeft" align="right" valign="top">file &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="dirprofile_8php.html">dirprofile.php</a></td></tr>
-<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:dirsearch_8php"><td class="memItemLeft" align="right" valign="top">file &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="dirsearch_8php.html">dirsearch.php</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:display_8php"><td class="memItemLeft" align="right" valign="top">file &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="display_8php.html">display.php</a></td></tr>
@@ -185,12 +181,16 @@ Files</h2></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:mod_2group_8php"><td class="memItemLeft" align="right" valign="top">file &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="mod_2group_8php.html">group.php</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:hcard_8php"><td class="memItemLeft" align="right" valign="top">file &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="hcard_8php.html">hcard.php</a></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:help_8php"><td class="memItemLeft" align="right" valign="top">file &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="help_8php.html">help.php</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:home_8php"><td class="memItemLeft" align="right" valign="top">file &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="home_8php.html">home.php</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:hostxrd_8php"><td class="memItemLeft" align="right" valign="top">file &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="hostxrd_8php.html">hostxrd.php</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:impel_8php"><td class="memItemLeft" align="right" valign="top">file &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="impel_8php.html">impel.php</a></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:import_8php"><td class="memItemLeft" align="right" valign="top">file &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="import_8php.html">import.php</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:importelm_8php"><td class="memItemLeft" align="right" valign="top">file &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="importelm_8php.html">importelm.php</a></td></tr>
@@ -207,6 +207,8 @@ Files</h2></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:lockview_8php"><td class="memItemLeft" align="right" valign="top">file &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="lockview_8php.html">lockview.php</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:locs_8php"><td class="memItemLeft" align="right" valign="top">file &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="locs_8php.html">locs.php</a></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:login_8php"><td class="memItemLeft" align="right" valign="top">file &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="login_8php.html">login.php</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:lostpass_8php"><td class="memItemLeft" align="right" valign="top">file &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="lostpass_8php.html">lostpass.php</a></td></tr>
@@ -251,6 +253,8 @@ Files</h2></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:opensearch_8php"><td class="memItemLeft" align="right" valign="top">file &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="opensearch_8php.html">opensearch.php</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:p_8php"><td class="memItemLeft" align="right" valign="top">file &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="p_8php.html">p.php</a></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:page_8php"><td class="memItemLeft" align="right" valign="top">file &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="page_8php.html">page.php</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:parse__url_8php"><td class="memItemLeft" align="right" valign="top">file &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="parse__url_8php.html">parse_url.php</a></td></tr>
@@ -269,6 +273,8 @@ Files</h2></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:poke_8php"><td class="memItemLeft" align="right" valign="top">file &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="poke_8php.html">poke.php</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:poll_8php"><td class="memItemLeft" align="right" valign="top">file &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="poll_8php.html">poll.php</a></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:post_8php"><td class="memItemLeft" align="right" valign="top">file &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="post_8php.html">post.php</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:pretheme_8php"><td class="memItemLeft" align="right" valign="top">file &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="pretheme_8php.html">pretheme.php</a></td></tr>
@@ -289,12 +295,16 @@ Files</h2></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:rbmark_8php"><td class="memItemLeft" align="right" valign="top">file &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rbmark_8php.html">rbmark.php</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:receive_8php"><td class="memItemLeft" align="right" valign="top">file &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="receive_8php.html">receive.php</a></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:register_8php"><td class="memItemLeft" align="right" valign="top">file &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="register_8php.html">register.php</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:regmod_8php"><td class="memItemLeft" align="right" valign="top">file &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="regmod_8php.html">regmod.php</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:regver_8php"><td class="memItemLeft" align="right" valign="top">file &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="regver_8php.html">regver.php</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:removeaccount_8php"><td class="memItemLeft" align="right" valign="top">file &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="removeaccount_8php.html">removeaccount.php</a></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:removeme_8php"><td class="memItemLeft" align="right" valign="top">file &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="removeme_8php.html">removeme.php</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:rmagic_8php"><td class="memItemLeft" align="right" valign="top">file &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rmagic_8php.html">rmagic.php</a></td></tr>
@@ -307,6 +317,8 @@ Files</h2></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:search__ac_8php"><td class="memItemLeft" align="right" valign="top">file &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="search__ac_8php.html">search_ac.php</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:service__limits_8php"><td class="memItemLeft" align="right" valign="top">file &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="service__limits_8php.html">service_limits.php</a></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:settings_8php"><td class="memItemLeft" align="right" valign="top">file &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="settings_8php.html">settings.php</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:setup_8php"><td class="memItemLeft" align="right" valign="top">file &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="setup_8php.html">setup.php</a></td></tr>
@@ -345,6 +357,8 @@ Files</h2></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:update__display_8php"><td class="memItemLeft" align="right" valign="top">file &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="update__display_8php.html">update_display.php</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:update__home_8php"><td class="memItemLeft" align="right" valign="top">file &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="update__home_8php.html">update_home.php</a></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:update__network_8php"><td class="memItemLeft" align="right" valign="top">file &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="update__network_8php.html">update_network.php</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:update__search_8php"><td class="memItemLeft" align="right" valign="top">file &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="update__search_8php.html">update_search.php</a></td></tr>
diff --git a/doc/html/dir_d41ce877eb409a4791b288730010abe2.js b/doc/html/dir_d41ce877eb409a4791b288730010abe2.js
index 34ba6ba4a..df75ab37a 100644
--- a/doc/html/dir_d41ce877eb409a4791b288730010abe2.js
+++ b/doc/html/dir_d41ce877eb409a4791b288730010abe2.js
@@ -11,7 +11,6 @@ var dir_d41ce877eb409a4791b288730010abe2 =
[ "block.php", "block_8php.html", "block_8php" ],
[ "blocks.php", "blocks_8php.html", "blocks_8php" ],
[ "bookmarks.php", "mod_2bookmarks_8php.html", "mod_2bookmarks_8php" ],
- [ "chanman.php", "mod_2chanman_8php.html", null ],
[ "channel.php", "channel_8php.html", "channel_8php" ],
[ "chanview.php", "chanview_8php.html", "chanview_8php" ],
[ "chat.php", "mod_2chat_8php.html", "mod_2chat_8php" ],
@@ -24,7 +23,6 @@ var dir_d41ce877eb409a4791b288730010abe2 =
[ "contactgroup.php", "contactgroup_8php.html", "contactgroup_8php" ],
[ "delegate.php", "delegate_8php.html", "delegate_8php" ],
[ "directory.php", "mod_2directory_8php.html", "mod_2directory_8php" ],
- [ "dirprofile.php", "dirprofile_8php.html", "dirprofile_8php" ],
[ "dirsearch.php", "dirsearch_8php.html", "dirsearch_8php" ],
[ "display.php", "display_8php.html", "display_8php" ],
[ "editblock.php", "editblock_8php.html", "editblock_8php" ],
@@ -40,9 +38,11 @@ var dir_d41ce877eb409a4791b288730010abe2 =
[ "follow.php", "mod_2follow_8php.html", "mod_2follow_8php" ],
[ "fsuggest.php", "fsuggest_8php.html", "fsuggest_8php" ],
[ "group.php", "mod_2group_8php.html", "mod_2group_8php" ],
+ [ "hcard.php", "hcard_8php.html", "hcard_8php" ],
[ "help.php", "help_8php.html", "help_8php" ],
[ "home.php", "home_8php.html", "home_8php" ],
[ "hostxrd.php", "hostxrd_8php.html", "hostxrd_8php" ],
+ [ "impel.php", "impel_8php.html", "impel_8php" ],
[ "import.php", "import_8php.html", "import_8php" ],
[ "importelm.php", "importelm_8php.html", "importelm_8php" ],
[ "invite.php", "invite_8php.html", "invite_8php" ],
@@ -51,6 +51,7 @@ var dir_d41ce877eb409a4791b288730010abe2 =
[ "layouts.php", "layouts_8php.html", "layouts_8php" ],
[ "like.php", "like_8php.html", "like_8php" ],
[ "lockview.php", "lockview_8php.html", "lockview_8php" ],
+ [ "locs.php", "locs_8php.html", "locs_8php" ],
[ "login.php", "login_8php.html", "login_8php" ],
[ "lostpass.php", "lostpass_8php.html", "lostpass_8php" ],
[ "magic.php", "magic_8php.html", "magic_8php" ],
@@ -73,6 +74,7 @@ var dir_d41ce877eb409a4791b288730010abe2 =
[ "online.php", "online_8php.html", "online_8php" ],
[ "openid.php", "openid_8php.html", "openid_8php" ],
[ "opensearch.php", "opensearch_8php.html", "opensearch_8php" ],
+ [ "p.php", "p_8php.html", "p_8php" ],
[ "page.php", "page_8php.html", "page_8php" ],
[ "parse_url.php", "parse__url_8php.html", "parse__url_8php" ],
[ "pdledit.php", "pdledit_8php.html", "pdledit_8php" ],
@@ -82,6 +84,7 @@ var dir_d41ce877eb409a4791b288730010abe2 =
[ "ping.php", "ping_8php.html", "ping_8php" ],
[ "poco.php", "poco_8php.html", "poco_8php" ],
[ "poke.php", "poke_8php.html", "poke_8php" ],
+ [ "poll.php", "poll_8php.html", "poll_8php" ],
[ "post.php", "post_8php.html", "post_8php" ],
[ "pretheme.php", "pretheme_8php.html", "pretheme_8php" ],
[ "probe.php", "mod_2probe_8php.html", "mod_2probe_8php" ],
@@ -92,15 +95,18 @@ var dir_d41ce877eb409a4791b288730010abe2 =
[ "pubsites.php", "pubsites_8php.html", "pubsites_8php" ],
[ "randprof.php", "randprof_8php.html", "randprof_8php" ],
[ "rbmark.php", "rbmark_8php.html", "rbmark_8php" ],
+ [ "receive.php", "receive_8php.html", "receive_8php" ],
[ "register.php", "register_8php.html", "register_8php" ],
[ "regmod.php", "regmod_8php.html", "regmod_8php" ],
[ "regver.php", "regver_8php.html", "regver_8php" ],
+ [ "removeaccount.php", "removeaccount_8php.html", "removeaccount_8php" ],
[ "removeme.php", "removeme_8php.html", "removeme_8php" ],
[ "rmagic.php", "rmagic_8php.html", "rmagic_8php" ],
[ "rpost.php", "rpost_8php.html", "rpost_8php" ],
[ "rsd_xml.php", "rsd__xml_8php.html", "rsd__xml_8php" ],
[ "search.php", "search_8php.html", "search_8php" ],
[ "search_ac.php", "search__ac_8php.html", "search__ac_8php" ],
+ [ "service_limits.php", "service__limits_8php.html", "service__limits_8php" ],
[ "settings.php", "settings_8php.html", "settings_8php" ],
[ "setup.php", "setup_8php.html", "setup_8php" ],
[ "share.php", "share_8php.html", "share_8php" ],
@@ -120,6 +126,7 @@ var dir_d41ce877eb409a4791b288730010abe2 =
[ "uexport.php", "uexport_8php.html", "uexport_8php" ],
[ "update_channel.php", "update__channel_8php.html", "update__channel_8php" ],
[ "update_display.php", "update__display_8php.html", "update__display_8php" ],
+ [ "update_home.php", "update__home_8php.html", "update__home_8php" ],
[ "update_network.php", "update__network_8php.html", "update__network_8php" ],
[ "update_search.php", "update__search_8php.html", "update__search_8php" ],
[ "view.php", "view_8php.html", "view_8php" ],
diff --git a/doc/html/dir_d44c64559bbebec7f509842c48db8b23.html b/doc/html/dir_d44c64559bbebec7f509842c48db8b23.html
index f072d2ca1..538c6c7a9 100644
--- a/doc/html/dir_d44c64559bbebec7f509842c48db8b23.html
+++ b/doc/html/dir_d44c64559bbebec7f509842c48db8b23.html
@@ -106,8 +106,12 @@ $(document).ready(function(){initNavTree('dir_d44c64559bbebec7f509842c48db8b23.h
Directories</h2></td></tr>
<tr class="memitem:dir_21bc5169ff11430004758be31dcfc6c4"><td class="memItemLeft" align="right" valign="top">directory &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="dir_21bc5169ff11430004758be31dcfc6c4.html">dba</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:dir_7edbbd0f8c514efef79942dcdc21f738"><td class="memItemLeft" align="right" valign="top">directory &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="dir_7edbbd0f8c514efef79942dcdc21f738.html">Import</a></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:dir_aae29906d7bfc07d076125f669c8352e"><td class="memItemLeft" align="right" valign="top">directory &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="dir_aae29906d7bfc07d076125f669c8352e.html">photo</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:dir_e7f045be8bb383d8447c6a6b84145083"><td class="memItemLeft" align="right" valign="top">directory &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="dir_e7f045be8bb383d8447c6a6b84145083.html">RedDAV</a></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="files"></a>
Files</h2></td></tr>
@@ -125,6 +129,7 @@ Files</h2></td></tr>
<tr class="memdesc:include_2attach_8php"><td class="mdescLeft">&#160;</td><td class="mdescRight">File/attach API with the potential for revision control. <br/></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:auth_8php"><td class="memItemLeft" align="right" valign="top">file &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="auth_8php.html">auth.php</a></td></tr>
+<tr class="memdesc:auth_8php"><td class="mdescLeft">&#160;</td><td class="mdescRight">Functions and inline functionality for authentication. <br/></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:BaseObject_8php"><td class="memItemLeft" align="right" valign="top">file &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="BaseObject_8php.html">BaseObject.php</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
@@ -136,8 +141,6 @@ Files</h2></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:cache_8php"><td class="memItemLeft" align="right" valign="top">file &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="cache_8php.html">cache.php</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:include_2chanman_8php"><td class="memItemLeft" align="right" valign="top">file &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="include_2chanman_8php.html">chanman.php</a></td></tr>
-<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:include_2chat_8php"><td class="memItemLeft" align="right" valign="top">file &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="include_2chat_8php.html">chat.php</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:cli__startup_8php"><td class="memItemLeft" align="right" valign="top">file &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="cli__startup_8php.html">cli_startup.php</a></td></tr>
@@ -147,6 +150,7 @@ Files</h2></td></tr>
<tr class="memitem:comanche_8php"><td class="memItemLeft" align="right" valign="top">file &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="comanche_8php.html">comanche.php</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:include_2config_8php"><td class="memItemLeft" align="right" valign="top">file &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="include_2config_8php.html">config.php</a></td></tr>
+<tr class="memdesc:include_2config_8php"><td class="mdescLeft">&#160;</td><td class="mdescRight">Arbitrary configuration storage. <br/></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:Contact_8php"><td class="memItemLeft" align="right" valign="top">file &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="Contact_8php.html">Contact.php</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
@@ -166,6 +170,10 @@ Files</h2></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:deliver_8php"><td class="memItemLeft" align="right" valign="top">file &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="deliver_8php.html">deliver.php</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:diaspora_8php"><td class="memItemLeft" align="right" valign="top">file &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="diaspora_8php.html">diaspora.php</a></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:dimport_8php"><td class="memItemLeft" align="right" valign="top">file &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="dimport_8php.html">dimport.php</a></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:dir__fns_8php"><td class="memItemLeft" align="right" valign="top">file &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="dir__fns_8php.html">dir_fns.php</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:include_2directory_8php"><td class="memItemLeft" align="right" valign="top">file &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="include_2directory_8php.html">directory.php</a></td></tr>
@@ -180,9 +188,9 @@ Files</h2></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:features_8php"><td class="memItemLeft" align="right" valign="top">file &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="features_8php.html">features.php</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:include_2follow_8php"><td class="memItemLeft" align="right" valign="top">file &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="include_2follow_8php.html">follow.php</a></td></tr>
+<tr class="memitem:fixd_8php"><td class="memItemLeft" align="right" valign="top">file &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="fixd_8php.html">fixd.php</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:friendica__smarty_8php"><td class="memItemLeft" align="right" valign="top">file &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="friendica__smarty_8php.html">friendica_smarty.php</a></td></tr>
+<tr class="memitem:include_2follow_8php"><td class="memItemLeft" align="right" valign="top">file &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="include_2follow_8php.html">follow.php</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gprobe_8php"><td class="memItemLeft" align="right" valign="top">file &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="gprobe_8php.html">gprobe.php</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
@@ -247,16 +255,20 @@ Files</h2></td></tr>
<tr class="memitem:queue__fn_8php"><td class="memItemLeft" align="right" valign="top">file &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="queue__fn_8php.html">queue_fn.php</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:reddav_8php"><td class="memItemLeft" align="right" valign="top">file &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="reddav_8php.html">reddav.php</a></td></tr>
-<tr class="memdesc:reddav_8php"><td class="mdescLeft">&#160;</td><td class="mdescRight">DAV related classes from SabreDAV for Red Matrix. <br/></td></tr>
+<tr class="memdesc:reddav_8php"><td class="mdescLeft">&#160;</td><td class="mdescRight">some DAV related functions for <a class="el" href="namespaceRedMatrix.html" title="Class Import.">RedMatrix</a>. <br/></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:security_8php"><td class="memItemLeft" align="right" valign="top">file &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="security_8php.html">security.php</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:session_8php"><td class="memItemLeft" align="right" valign="top">file &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="session_8php.html">session.php</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:smarty_8php"><td class="memItemLeft" align="right" valign="top">file &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="smarty_8php.html">smarty.php</a></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:socgraph_8php"><td class="memItemLeft" align="right" valign="top">file &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="socgraph_8php.html">socgraph.php</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:spam_8php"><td class="memItemLeft" align="right" valign="top">file &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="spam_8php.html">spam.php</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:statistics__fns_8php"><td class="memItemLeft" align="right" valign="top">file &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="statistics__fns_8php.html">statistics_fns.php</a></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:system__unavailable_8php"><td class="memItemLeft" align="right" valign="top">file &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="system__unavailable_8php.html">system_unavailable.php</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:taxonomy_8php"><td class="memItemLeft" align="right" valign="top">file &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="taxonomy_8php.html">taxonomy.php</a></td></tr>
@@ -266,6 +278,7 @@ Files</h2></td></tr>
<tr class="memitem:text_8php"><td class="memItemLeft" align="right" valign="top">file &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="text_8php.html">text.php</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:widgets_8php"><td class="memItemLeft" align="right" valign="top">file &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="widgets_8php.html">widgets.php</a></td></tr>
+<tr class="memdesc:widgets_8php"><td class="mdescLeft">&#160;</td><td class="mdescRight">This file contains the widgets. <br/></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:zot_8php"><td class="memItemLeft" align="right" valign="top">file &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="zot_8php.html">zot.php</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
diff --git a/doc/html/dir_d44c64559bbebec7f509842c48db8b23.js b/doc/html/dir_d44c64559bbebec7f509842c48db8b23.js
index 3ccb3d653..30877f15e 100644
--- a/doc/html/dir_d44c64559bbebec7f509842c48db8b23.js
+++ b/doc/html/dir_d44c64559bbebec7f509842c48db8b23.js
@@ -1,7 +1,9 @@
var dir_d44c64559bbebec7f509842c48db8b23 =
[
[ "dba", "dir_21bc5169ff11430004758be31dcfc6c4.html", "dir_21bc5169ff11430004758be31dcfc6c4" ],
+ [ "Import", "dir_7edbbd0f8c514efef79942dcdc21f738.html", "dir_7edbbd0f8c514efef79942dcdc21f738" ],
[ "photo", "dir_aae29906d7bfc07d076125f669c8352e.html", "dir_aae29906d7bfc07d076125f669c8352e" ],
+ [ "RedDAV", "dir_e7f045be8bb383d8447c6a6b84145083.html", "dir_e7f045be8bb383d8447c6a6b84145083" ],
[ "account.php", "account_8php.html", "account_8php" ],
[ "acl_selectors.php", "acl__selectors_8php.html", "acl__selectors_8php" ],
[ "activities.php", "activities_8php.html", "activities_8php" ],
@@ -18,7 +20,6 @@ var dir_d44c64559bbebec7f509842c48db8b23 =
[ "cache.php", "cache_8php.html", [
[ "Cache", "classCache.html", null ]
] ],
- [ "chanman.php", "include_2chanman_8php.html", "include_2chanman_8php" ],
[ "chat.php", "include_2chat_8php.html", "include_2chat_8php" ],
[ "cli_startup.php", "cli__startup_8php.html", "cli__startup_8php" ],
[ "cli_suggest.php", "cli__suggest_8php.html", "cli__suggest_8php" ],
@@ -35,6 +36,8 @@ var dir_d44c64559bbebec7f509842c48db8b23 =
[ "crypto.php", "crypto_8php.html", "crypto_8php" ],
[ "datetime.php", "datetime_8php.html", "datetime_8php" ],
[ "deliver.php", "deliver_8php.html", "deliver_8php" ],
+ [ "diaspora.php", "diaspora_8php.html", "diaspora_8php" ],
+ [ "dimport.php", "dimport_8php.html", "dimport_8php" ],
[ "dir_fns.php", "dir__fns_8php.html", "dir__fns_8php" ],
[ "directory.php", "include_2directory_8php.html", "include_2directory_8php" ],
[ "enotify.php", "enotify_8php.html", "enotify_8php" ],
@@ -42,11 +45,8 @@ var dir_d44c64559bbebec7f509842c48db8b23 =
[ "expire.php", "expire_8php.html", "expire_8php" ],
[ "externals.php", "externals_8php.html", "externals_8php" ],
[ "features.php", "features_8php.html", "features_8php" ],
+ [ "fixd.php", "fixd_8php.html", "fixd_8php" ],
[ "follow.php", "include_2follow_8php.html", "include_2follow_8php" ],
- [ "friendica_smarty.php", "friendica__smarty_8php.html", [
- [ "FriendicaSmarty", "classFriendicaSmarty.html", "classFriendicaSmarty" ],
- [ "FriendicaSmartyEngine", "classFriendicaSmartyEngine.html", "classFriendicaSmartyEngine" ]
- ] ],
[ "gprobe.php", "gprobe_8php.html", "gprobe_8php" ],
[ "group.php", "include_2group_8php.html", "include_2group_8php" ],
[ "html2bbcode.php", "html2bbcode_8php.html", "html2bbcode_8php" ],
@@ -87,8 +87,13 @@ var dir_d44c64559bbebec7f509842c48db8b23 =
[ "reddav.php", "reddav_8php.html", "reddav_8php" ],
[ "security.php", "security_8php.html", "security_8php" ],
[ "session.php", "session_8php.html", "session_8php" ],
+ [ "smarty.php", "smarty_8php.html", [
+ [ "FriendicaSmarty", "classFriendicaSmarty.html", "classFriendicaSmarty" ],
+ [ "FriendicaSmartyEngine", "classFriendicaSmartyEngine.html", "classFriendicaSmartyEngine" ]
+ ] ],
[ "socgraph.php", "socgraph_8php.html", "socgraph_8php" ],
[ "spam.php", "spam_8php.html", "spam_8php" ],
+ [ "statistics_fns.php", "statistics__fns_8php.html", "statistics__fns_8php" ],
[ "system_unavailable.php", "system__unavailable_8php.html", "system__unavailable_8php" ],
[ "taxonomy.php", "taxonomy_8php.html", "taxonomy_8php" ],
[ "template_processor.php", "template__processor_8php.html", "template__processor_8php" ],
diff --git a/doc/html/dir_e7f045be8bb383d8447c6a6b84145083.html b/doc/html/dir_e7f045be8bb383d8447c6a6b84145083.html
new file mode 100644
index 000000000..14d998f04
--- /dev/null
+++ b/doc/html/dir_e7f045be8bb383d8447c6a6b84145083.html
@@ -0,0 +1,118 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<meta name="generator" content="Doxygen 1.8.3.1"/>
+<title>The Red Matrix: include/RedDAV Directory Reference</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="navtree.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="resize.js"></script>
+<script type="text/javascript" src="navtree.js"></script>
+<script type="text/javascript">
+ $(document).ready(initResizable);
+ $(window).load(resizeHeight);
+</script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/search.js"></script>
+<script type="text/javascript">
+ $(document).ready(function() { searchBox.OnSelectItem(0); });
+</script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+ <td id="projectlogo"><img alt="Logo" src="rm-64.png"/></td>
+ <td style="padding-left: 0.5em;">
+ <div id="projectname">The Red Matrix
+ </div>
+ </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.8.3.1 -->
+<script type="text/javascript">
+var searchBox = new SearchBox("searchBox", "search",false,'Search');
+</script>
+ <div id="navrow1" class="tabs">
+ <ul class="tablist">
+ <li><a href="index.html"><span>Main&#160;Page</span></a></li>
+ <li><a href="pages.html"><span>Related&#160;Pages</span></a></li>
+ <li><a href="namespaces.html"><span>Namespaces</span></a></li>
+ <li><a href="annotated.html"><span>Classes</span></a></li>
+ <li><a href="files.html"><span>Files</span></a></li>
+ <li>
+ <div id="MSearchBox" class="MSearchBoxInactive">
+ <span class="left">
+ <img id="MSearchSelect" src="search/mag_sel.png"
+ onmouseover="return searchBox.OnSearchSelectShow()"
+ onmouseout="return searchBox.OnSearchSelectHide()"
+ alt=""/>
+ <input type="text" id="MSearchField" value="Search" accesskey="S"
+ onfocus="searchBox.OnSearchFieldFocus(true)"
+ onblur="searchBox.OnSearchFieldFocus(false)"
+ onkeyup="searchBox.OnSearchFieldChange(event)"/>
+ </span><span class="right">
+ <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
+ </span>
+ </div>
+ </li>
+ </ul>
+ </div>
+</div><!-- top -->
+<div id="side-nav" class="ui-resizable side-nav-resizable">
+ <div id="nav-tree">
+ <div id="nav-tree-contents">
+ <div id="nav-sync" class="sync"></div>
+ </div>
+ </div>
+ <div id="splitbar" style="-moz-user-select:none;"
+ class="ui-resizable-handle">
+ </div>
+</div>
+<script type="text/javascript">
+$(document).ready(function(){initNavTree('dir_e7f045be8bb383d8447c6a6b84145083.html','');});
+</script>
+<div id="doc-content">
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+ onmouseover="return searchBox.OnSearchSelectShow()"
+ onmouseout="return searchBox.OnSearchSelectHide()"
+ onkeydown="return searchBox.OnSearchSelectKey(event)">
+<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark">&#160;</span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark">&#160;</span>Classes</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark">&#160;</span>Namespaces</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark">&#160;</span>Files</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark">&#160;</span>Functions</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark">&#160;</span>Variables</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark">&#160;</span>Pages</a></div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<iframe src="javascript:void(0)" frameborder="0"
+ name="MSearchResults" id="MSearchResults">
+</iframe>
+</div>
+
+<div class="header">
+ <div class="headertitle">
+<div class="title">RedDAV Directory Reference</div> </div>
+</div><!--header-->
+<div class="contents">
+<table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="files"></a>
+Files</h2></td></tr>
+<tr class="memitem:RedBasicAuth_8php"><td class="memItemLeft" align="right" valign="top">file &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="RedBasicAuth_8php.html">RedBasicAuth.php</a></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:RedBrowser_8php"><td class="memItemLeft" align="right" valign="top">file &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="RedBrowser_8php.html">RedBrowser.php</a></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:RedDirectory_8php"><td class="memItemLeft" align="right" valign="top">file &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="RedDirectory_8php.html">RedDirectory.php</a></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:RedFile_8php"><td class="memItemLeft" align="right" valign="top">file &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="RedFile_8php.html">RedFile.php</a></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+</table>
+</div><!-- contents -->
+</div><!-- doc-content -->
+
diff --git a/doc/html/dir_e7f045be8bb383d8447c6a6b84145083.js b/doc/html/dir_e7f045be8bb383d8447c6a6b84145083.js
new file mode 100644
index 000000000..477c22fe8
--- /dev/null
+++ b/doc/html/dir_e7f045be8bb383d8447c6a6b84145083.js
@@ -0,0 +1,15 @@
+var dir_e7f045be8bb383d8447c6a6b84145083 =
+[
+ [ "RedBasicAuth.php", "RedBasicAuth_8php.html", [
+ [ "RedBasicAuth", "classRedMatrix_1_1RedDAV_1_1RedBasicAuth.html", "classRedMatrix_1_1RedDAV_1_1RedBasicAuth" ]
+ ] ],
+ [ "RedBrowser.php", "RedBrowser_8php.html", [
+ [ "RedBrowser", "classRedMatrix_1_1RedDAV_1_1RedBrowser.html", "classRedMatrix_1_1RedDAV_1_1RedBrowser" ]
+ ] ],
+ [ "RedDirectory.php", "RedDirectory_8php.html", [
+ [ "RedDirectory", "classRedMatrix_1_1RedDAV_1_1RedDirectory.html", "classRedMatrix_1_1RedDAV_1_1RedDirectory" ]
+ ] ],
+ [ "RedFile.php", "RedFile_8php.html", [
+ [ "RedFile", "classRedMatrix_1_1RedDAV_1_1RedFile.html", "classRedMatrix_1_1RedDAV_1_1RedFile" ]
+ ] ]
+]; \ No newline at end of file
diff --git a/doc/html/dirsearch_8php.html b/doc/html/dirsearch_8php.html
index 8727aa805..8ea9faed9 100644
--- a/doc/html/dirsearch_8php.html
+++ b/doc/html/dirsearch_8php.html
@@ -118,12 +118,54 @@ Functions</h2></td></tr>
<tr class="separator:aa1fb04e1de4f25b63349ac78f94ceb4c"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a52bcac49b0e35cc8c6b70066143c2ee2"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="dirsearch_8php.html#a52bcac49b0e35cc8c6b70066143c2ee2">dir_query_build</a> ($joiner, $field, $s)</td></tr>
<tr class="separator:a52bcac49b0e35cc8c6b70066143c2ee2"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ab6d5fefa98da249a994b910434a669c2"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="dirsearch_8php.html#ab6d5fefa98da249a994b910434a669c2">dir_flag_build</a> ($joiner, $field, $bit, $s)</td></tr>
+<tr class="separator:ab6d5fefa98da249a994b910434a669c2"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a7d4cd9890d5ed23c3efc58e2a778a305"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="dirsearch_8php.html#a7d4cd9890d5ed23c3efc58e2a778a305">dir_parse_query</a> ($s)</td></tr>
<tr class="separator:a7d4cd9890d5ed23c3efc58e2a778a305"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a985d410a170549429857af6ff2673149"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="dirsearch_8php.html#a985d410a170549429857af6ff2673149">list_public_sites</a> ()</td></tr>
<tr class="separator:a985d410a170549429857af6ff2673149"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<h2 class="groupheader">Function Documentation</h2>
+<a class="anchor" id="ab6d5fefa98da249a994b910434a669c2"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">dir_flag_build </td>
+ <td>(</td>
+ <td class="paramtype">&#160;</td>
+ <td class="paramname"><em>$joiner</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">&#160;</td>
+ <td class="paramname"><em>$field</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">&#160;</td>
+ <td class="paramname"><em>$bit</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">&#160;</td>
+ <td class="paramname"><em>$s</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p>Referenced by <a class="el" href="dirsearch_8php.html#aa1fb04e1de4f25b63349ac78f94ceb4c">dirsearch_content()</a>.</p>
+
+</div>
+</div>
<a class="anchor" id="a7d4cd9890d5ed23c3efc58e2a778a305"></a>
<div class="memitem">
<div class="memproto">
diff --git a/doc/html/dirsearch_8php.js b/doc/html/dirsearch_8php.js
index 325a941b9..635a97231 100644
--- a/doc/html/dirsearch_8php.js
+++ b/doc/html/dirsearch_8php.js
@@ -1,5 +1,6 @@
var dirsearch_8php =
[
+ [ "dir_flag_build", "dirsearch_8php.html#ab6d5fefa98da249a994b910434a669c2", null ],
[ "dir_parse_query", "dirsearch_8php.html#a7d4cd9890d5ed23c3efc58e2a778a305", null ],
[ "dir_query_build", "dirsearch_8php.html#a52bcac49b0e35cc8c6b70066143c2ee2", null ],
[ "dirsearch_content", "dirsearch_8php.html#aa1fb04e1de4f25b63349ac78f94ceb4c", null ],
diff --git a/doc/html/docblox__errorchecker_8php.html b/doc/html/docblox__errorchecker_8php.html
index a4f776e08..f1ec0802f 100644
--- a/doc/html/docblox__errorchecker_8php.html
+++ b/doc/html/docblox__errorchecker_8php.html
@@ -253,7 +253,7 @@ Variables</h2></td></tr>
</table>
</div><div class="memdoc">
-<p>Referenced by <a class="el" href="crypto_8php.html#a2148d7aac7b30c720f7ebda7e9790286">aes_encapsulate()</a>, <a class="el" href="crypto_8php.html#aca7c3a574bfb6c6ef1f2403a56823914">aes_unencapsulate()</a>, <a class="el" href="text_8php.html#a75c243e06341ec16bd5a44b9b1cacd85">alt_pager()</a>, <a class="el" href="mod_2bookmarks_8php.html#a6b7942f3d27e40f0f47c88704127b9b3">bookmarks_init()</a>, <a class="el" href="boot_8php.html#a4c02d88e66852a01bd5a1feecb7c3ce3">check_config()</a>, <a class="el" href="items_8php.html#a555762e1022a4b8e3c3abd32e7812408">drop_item()</a>, <a class="el" href="event_8php.html#a7378e839ac3de9d55579eb3ec48eaf92">event_store_item()</a>, <a class="el" href="items_8php.html#aba98fcbbcd7044a7e9ea34edabc14c87">fix_private_photos()</a>, <a class="el" href="classRedBrowser.html#a1f7daf50bb9bfcde7345b3b1908dbd7e">RedBrowser\generateDirectoryIndex()</a>, <a class="el" href="bb2diaspora_8php.html#a4c2f8f11b29a06809d9b07782215b1b2">get_bb_tag_pos()</a>, <a class="el" href="text_8php.html#a1557112a774ec00fa06ed6b6f6495506">is_a_date_arg()</a>, <a class="el" href="item_8php.html#a764bbb2e9a885a86fb23d0b5e4a09221">item_content()</a>, <a class="el" href="item_8php.html#a693cd09805755ab85bbb5ecae69a48c3">item_post()</a>, <a class="el" href="conversation_8php.html#adda79b75bf1ccf6ce9503aa310953533">item_redir_and_replace_images()</a>, <a class="el" href="text_8php.html#ae17b39d5e321debd3ad16dcbbde842b8">jindent()</a>, <a class="el" href="setup_8php.html#a2b375ddc555140236fc500135de99371">load_database_rem()</a>, <a class="el" href="html2bbcode_8php.html#a39c662b19d318990fee2ba795a55d7a7">node2bbcodesub()</a>, <a class="el" href="enotify_8php.html#a3e9a9355b243777c488d2a9883908dfc">notification()</a>, <a class="el" href="text_8php.html#afe9f178d264d44a94dc1292aaf0fd585">paginate()</a>, <a class="el" href="mod_2photos_8php.html#a062bed4d04d14fee8a53f4c9be673080">photos_post()</a>, <a class="el" href="activities_8php.html#a80134e807719b3c54aba971958d2e132">profile_activity()</a>, <a class="el" href="plugin_8php.html#af9ac19004dca49adae1ac7a0d9f3b025">reload_plugins()</a>, <a class="el" href="zot_8php.html#aad25a3fe0e1566121d6fb8222979bc10">remove_community_tag()</a>, <a class="el" href="include_2network_8php.html#ae8d9c41a11000fb8667039fc71b4f73f">scale_external_images()</a>, <a class="el" href="items_8php.html#ab1bce4261bcf75ad62753b498a144d17">tag_deliver()</a>, and <a class="el" href="zot_8php.html#aeea071f17e306fe3d0c488551906bfab">zot_import()</a>.</p>
+<p>Referenced by <a class="el" href="crypto_8php.html#a2148d7aac7b30c720f7ebda7e9790286">aes_encapsulate()</a>, <a class="el" href="crypto_8php.html#aca7c3a574bfb6c6ef1f2403a56823914">aes_unencapsulate()</a>, <a class="el" href="text_8php.html#a75c243e06341ec16bd5a44b9b1cacd85">alt_pager()</a>, <a class="el" href="mod_2bookmarks_8php.html#a6b7942f3d27e40f0f47c88704127b9b3">bookmarks_init()</a>, <a class="el" href="boot_8php.html#a4c02d88e66852a01bd5a1feecb7c3ce3">check_config()</a>, <a class="el" href="diaspora_8php.html#a5d57518545baa31cf8a85a937a267681">diaspora_like()</a>, <a class="el" href="include_2network_8php.html#a63e62946e194928eb17c5a9f2bbef0fe">discover_by_webbie()</a>, <a class="el" href="items_8php.html#a555762e1022a4b8e3c3abd32e7812408">drop_item()</a>, <a class="el" href="event_8php.html#a7378e839ac3de9d55579eb3ec48eaf92">event_store_item()</a>, <a class="el" href="items_8php.html#aba98fcbbcd7044a7e9ea34edabc14c87">fix_private_photos()</a>, <a class="el" href="classRedMatrix_1_1RedDAV_1_1RedBrowser.html#af764d5f14df751f9ec86c34fab300c09">RedMatrix\RedDAV\RedBrowser\generateDirectoryIndex()</a>, <a class="el" href="bb2diaspora_8php.html#a4c2f8f11b29a06809d9b07782215b1b2">get_bb_tag_pos()</a>, <a class="el" href="impel_8php.html#ab7db6fca43b42ea4332cb3e841b3cf7b">impel_init()</a>, <a class="el" href="import_8php.html#af17fef0410518f7eac205d0ea416eaa2">import_post()</a>, <a class="el" href="text_8php.html#a1557112a774ec00fa06ed6b6f6495506">is_a_date_arg()</a>, <a class="el" href="item_8php.html#a764bbb2e9a885a86fb23d0b5e4a09221">item_content()</a>, <a class="el" href="item_8php.html#a693cd09805755ab85bbb5ecae69a48c3">item_post()</a>, <a class="el" href="conversation_8php.html#adda79b75bf1ccf6ce9503aa310953533">item_redir_and_replace_images()</a>, <a class="el" href="text_8php.html#ae17b39d5e321debd3ad16dcbbde842b8">jindent()</a>, <a class="el" href="setup_8php.html#a2b375ddc555140236fc500135de99371">load_database_rem()</a>, <a class="el" href="html2bbcode_8php.html#a39c662b19d318990fee2ba795a55d7a7">node2bbcodesub()</a>, <a class="el" href="enotify_8php.html#a3e9a9355b243777c488d2a9883908dfc">notification()</a>, <a class="el" href="text_8php.html#afe9f178d264d44a94dc1292aaf0fd585">paginate()</a>, <a class="el" href="mod_2photos_8php.html#a062bed4d04d14fee8a53f4c9be673080">photos_post()</a>, <a class="el" href="activities_8php.html#a80134e807719b3c54aba971958d2e132">profile_activity()</a>, <a class="el" href="Contact_8php.html#a7e3f5bef8ea1d2bf8434c9be36a2b713">random_profile()</a>, <a class="el" href="plugin_8php.html#af9ac19004dca49adae1ac7a0d9f3b025">reload_plugins()</a>, <a class="el" href="zot_8php.html#aad25a3fe0e1566121d6fb8222979bc10">remove_community_tag()</a>, <a class="el" href="include_2network_8php.html#ae8d9c41a11000fb8667039fc71b4f73f">scale_external_images()</a>, <a class="el" href="smilies_8php.html#ab43b1e9f33a700a830aff14c7b3a617f">smilies_content()</a>, <a class="el" href="items_8php.html#ab1bce4261bcf75ad62753b498a144d17">tag_deliver()</a>, and <a class="el" href="zot_8php.html#aeea071f17e306fe3d0c488551906bfab">zot_import()</a>.</p>
</div>
</div>
@@ -279,7 +279,7 @@ Variables</h2></td></tr>
</table>
</div><div class="memdoc">
-<p>Referenced by <a class="el" href="setup_8php.html#aa3bbb111780da70ba35cc23a306f2c76">check_keys()</a>, <a class="el" href="event_8php.html#a7378e839ac3de9d55579eb3ec48eaf92">event_store_item()</a>, <a class="el" href="items_8php.html#aba98fcbbcd7044a7e9ea34edabc14c87">fix_private_photos()</a>, <a class="el" href="items_8php.html#a896c1809d58f2d7a42cfe14577958ddf">get_atom_elements()</a>, <a class="el" href="bb2diaspora_8php.html#a4c2f8f11b29a06809d9b07782215b1b2">get_bb_tag_pos()</a>, <a class="el" href="invite_8php.html#aeb0881c0f93c8e8552e5ed756ce6e5a5">invite_post()</a>, <a class="el" href="lostpass_8php.html#a0314d94e48c789b1b3a201d740c9eab3">lostpass_content()</a>, <a class="el" href="lostpass_8php.html#a8ed35ba71a4404eaf4903da61d0321cc">lostpass_post()</a>, <a class="el" href="photo_8php.html#a582779d24882b0d31ee909a91d70a448">photo_init()</a>, <a class="el" href="mod_2photos_8php.html#a062bed4d04d14fee8a53f4c9be673080">photos_post()</a>, <a class="el" href="mod_2probe_8php.html#a1f1db3fa6038e451e737964c94bf5e99">probe_content()</a>, <a class="el" href="activities_8php.html#a80134e807719b3c54aba971958d2e132">profile_activity()</a>, <a class="el" href="register_8php.html#a51731dcc1917c58a790eb1c0f6132271">register_post()</a>, <a class="el" href="classenotify.html#afbc088860f534c6c05788b48cfc262c6">enotify\send()</a>, <a class="el" href="account_8php.html#a014de2d5d5c9785de5bf547a485822fa">send_reg_approval_email()</a>, <a class="el" href="account_8php.html#aa9c29c497c17d8f9344dce8631ad8761">send_verification_email()</a>, <a class="el" href="account_8php.html#ac5c570a2d46446bad4dd2501e9c5a4b1">user_allow()</a>, <a class="el" href="account_8php.html#acd6b8d2124ba5ea4f4794d2c58ae8bf5">verify_email_address()</a>, and <a class="el" href="webfinger_8php.html#a17dd28db6d390194bf9ecb809739d1d3">webfinger_content()</a>.</p>
+<p>Referenced by <a class="el" href="setup_8php.html#aa3bbb111780da70ba35cc23a306f2c76">check_keys()</a>, <a class="el" href="event_8php.html#a7378e839ac3de9d55579eb3ec48eaf92">event_store_item()</a>, <a class="el" href="items_8php.html#aba98fcbbcd7044a7e9ea34edabc14c87">fix_private_photos()</a>, <a class="el" href="items_8php.html#a5e5be7bf1f8257dec0b2647e60a3f3f1">get_atom_elements()</a>, <a class="el" href="bb2diaspora_8php.html#a4c2f8f11b29a06809d9b07782215b1b2">get_bb_tag_pos()</a>, <a class="el" href="invite_8php.html#aeb0881c0f93c8e8552e5ed756ce6e5a5">invite_post()</a>, <a class="el" href="lostpass_8php.html#a0314d94e48c789b1b3a201d740c9eab3">lostpass_content()</a>, <a class="el" href="lostpass_8php.html#a8ed35ba71a4404eaf4903da61d0321cc">lostpass_post()</a>, <a class="el" href="photo_8php.html#a582779d24882b0d31ee909a91d70a448">photo_init()</a>, <a class="el" href="mod_2photos_8php.html#a062bed4d04d14fee8a53f4c9be673080">photos_post()</a>, <a class="el" href="mod_2probe_8php.html#a1f1db3fa6038e451e737964c94bf5e99">probe_content()</a>, <a class="el" href="activities_8php.html#a80134e807719b3c54aba971958d2e132">profile_activity()</a>, <a class="el" href="register_8php.html#a51731dcc1917c58a790eb1c0f6132271">register_post()</a>, <a class="el" href="classenotify.html#afbc088860f534c6c05788b48cfc262c6">enotify\send()</a>, <a class="el" href="account_8php.html#a014de2d5d5c9785de5bf547a485822fa">send_reg_approval_email()</a>, <a class="el" href="account_8php.html#aa9c29c497c17d8f9344dce8631ad8761">send_verification_email()</a>, <a class="el" href="account_8php.html#ac5c570a2d46446bad4dd2501e9c5a4b1">user_allow()</a>, <a class="el" href="account_8php.html#acd6b8d2124ba5ea4f4794d2c58ae8bf5">verify_email_address()</a>, and <a class="el" href="webfinger_8php.html#a17dd28db6d390194bf9ecb809739d1d3">webfinger_content()</a>.</p>
</div>
</div>
diff --git a/doc/html/editblock_8php.html b/doc/html/editblock_8php.html
index f33d0956e..019938416 100644
--- a/doc/html/editblock_8php.html
+++ b/doc/html/editblock_8php.html
@@ -112,6 +112,8 @@ $(document).ready(function(){initNavTree('editblock_8php.html','');});
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="func-members"></a>
Functions</h2></td></tr>
+<tr class="memitem:ab7806bb42ae5e93f0330d7bd179d4b3e"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="editblock_8php.html#ab7806bb42ae5e93f0330d7bd179d4b3e">editblock_init</a> (&amp;$a)</td></tr>
+<tr class="separator:ab7806bb42ae5e93f0330d7bd179d4b3e"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:abbe8f55de06967bc8d79d620509a49e6"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="editblock_8php.html#abbe8f55de06967bc8d79d620509a49e6">editblock_content</a> (&amp;$a)</td></tr>
<tr class="separator:abbe8f55de06967bc8d79d620509a49e6"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
@@ -132,6 +134,22 @@ Functions</h2></td></tr>
</div>
</div>
+<a class="anchor" id="ab7806bb42ae5e93f0330d7bd179d4b3e"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">editblock_init </td>
+ <td>(</td>
+ <td class="paramtype">&amp;&#160;</td>
+ <td class="paramname"><em>$a</em></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+</div>
+</div>
</div><!-- contents -->
</div><!-- doc-content -->
diff --git a/doc/html/editblock_8php.js b/doc/html/editblock_8php.js
index dae23cf05..7acf62547 100644
--- a/doc/html/editblock_8php.js
+++ b/doc/html/editblock_8php.js
@@ -1,4 +1,5 @@
var editblock_8php =
[
- [ "editblock_content", "editblock_8php.html#abbe8f55de06967bc8d79d620509a49e6", null ]
+ [ "editblock_content", "editblock_8php.html#abbe8f55de06967bc8d79d620509a49e6", null ],
+ [ "editblock_init", "editblock_8php.html#ab7806bb42ae5e93f0330d7bd179d4b3e", null ]
]; \ No newline at end of file
diff --git a/doc/html/editlayout_8php.html b/doc/html/editlayout_8php.html
index e59994c3e..ec62348c1 100644
--- a/doc/html/editlayout_8php.html
+++ b/doc/html/editlayout_8php.html
@@ -112,6 +112,8 @@ $(document).ready(function(){initNavTree('editlayout_8php.html','');});
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="func-members"></a>
Functions</h2></td></tr>
+<tr class="memitem:a97c1e93d9e75ad8cd2c2f9a7f77341a7"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="editlayout_8php.html#a97c1e93d9e75ad8cd2c2f9a7f77341a7">editlayout_init</a> (&amp;$a)</td></tr>
+<tr class="separator:a97c1e93d9e75ad8cd2c2f9a7f77341a7"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aa877e4157a26b099de904164181dd386"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="editlayout_8php.html#aa877e4157a26b099de904164181dd386">editlayout_content</a> (&amp;$a)</td></tr>
<tr class="separator:aa877e4157a26b099de904164181dd386"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
@@ -132,6 +134,22 @@ Functions</h2></td></tr>
</div>
</div>
+<a class="anchor" id="a97c1e93d9e75ad8cd2c2f9a7f77341a7"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">editlayout_init </td>
+ <td>(</td>
+ <td class="paramtype">&amp;&#160;</td>
+ <td class="paramname"><em>$a</em></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+</div>
+</div>
</div><!-- contents -->
</div><!-- doc-content -->
diff --git a/doc/html/editlayout_8php.js b/doc/html/editlayout_8php.js
index a41acddd1..0720ddc09 100644
--- a/doc/html/editlayout_8php.js
+++ b/doc/html/editlayout_8php.js
@@ -1,4 +1,5 @@
var editlayout_8php =
[
- [ "editlayout_content", "editlayout_8php.html#aa877e4157a26b099de904164181dd386", null ]
+ [ "editlayout_content", "editlayout_8php.html#aa877e4157a26b099de904164181dd386", null ],
+ [ "editlayout_init", "editlayout_8php.html#a97c1e93d9e75ad8cd2c2f9a7f77341a7", null ]
]; \ No newline at end of file
diff --git a/doc/html/editwebpage_8php.html b/doc/html/editwebpage_8php.html
index e8f689b67..8672a9779 100644
--- a/doc/html/editwebpage_8php.html
+++ b/doc/html/editwebpage_8php.html
@@ -112,6 +112,8 @@ $(document).ready(function(){initNavTree('editwebpage_8php.html','');});
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="func-members"></a>
Functions</h2></td></tr>
+<tr class="memitem:a94109f9c796fbe92508bf9574e35d19f"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="editwebpage_8php.html#a94109f9c796fbe92508bf9574e35d19f">editwebpage_init</a> (&amp;$a)</td></tr>
+<tr class="separator:a94109f9c796fbe92508bf9574e35d19f"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a375e945255fad79a71036528f7480650"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="editwebpage_8php.html#a375e945255fad79a71036528f7480650">editwebpage_content</a> (&amp;$a)</td></tr>
<tr class="separator:a375e945255fad79a71036528f7480650"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
@@ -132,6 +134,22 @@ Functions</h2></td></tr>
</div>
</div>
+<a class="anchor" id="a94109f9c796fbe92508bf9574e35d19f"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">editwebpage_init </td>
+ <td>(</td>
+ <td class="paramtype">&amp;&#160;</td>
+ <td class="paramname"><em>$a</em></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+</div>
+</div>
</div><!-- contents -->
</div><!-- doc-content -->
diff --git a/doc/html/editwebpage_8php.js b/doc/html/editwebpage_8php.js
index c9e825bb8..ccce7d0cd 100644
--- a/doc/html/editwebpage_8php.js
+++ b/doc/html/editwebpage_8php.js
@@ -1,4 +1,5 @@
var editwebpage_8php =
[
- [ "editwebpage_content", "editwebpage_8php.html#a375e945255fad79a71036528f7480650", null ]
+ [ "editwebpage_content", "editwebpage_8php.html#a375e945255fad79a71036528f7480650", null ],
+ [ "editwebpage_init", "editwebpage_8php.html#a94109f9c796fbe92508bf9574e35d19f", null ]
]; \ No newline at end of file
diff --git a/doc/html/enotify_8php.html b/doc/html/enotify_8php.html
index 897ffa7f0..b896e9bbf 100644
--- a/doc/html/enotify_8php.html
+++ b/doc/html/enotify_8php.html
@@ -136,7 +136,7 @@ Functions</h2></td></tr>
</table>
</div><div class="memdoc">
-<p>Referenced by <a class="el" href="item_8php.html#a693cd09805755ab85bbb5ecae69a48c3">item_post()</a>, <a class="el" href="items_8php.html#a77da7ce9a117601d49ac4a67c71b514f">mail_store()</a>, <a class="el" href="items_8php.html#aab9e0c58247427126de0699c729c3b6c">send_status_notifications()</a>, <a class="el" href="items_8php.html#ab1bce4261bcf75ad62753b498a144d17">tag_deliver()</a>, and <a class="el" href="zot_8php.html#a7ac30ff51274bf0b6d3eade37972145c">zot_refresh()</a>.</p>
+<p>Referenced by <a class="el" href="diaspora_8php.html#ac1ab782a34552a7c6b4dc961754ed598">diaspora_request()</a>, <a class="el" href="item_8php.html#a693cd09805755ab85bbb5ecae69a48c3">item_post()</a>, <a class="el" href="items_8php.html#a77da7ce9a117601d49ac4a67c71b514f">mail_store()</a>, <a class="el" href="items_8php.html#aab9e0c58247427126de0699c729c3b6c">send_status_notifications()</a>, <a class="el" href="items_8php.html#ab1bce4261bcf75ad62753b498a144d17">tag_deliver()</a>, and <a class="el" href="zot_8php.html#a7ac30ff51274bf0b6d3eade37972145c">zot_refresh()</a>.</p>
</div>
</div>
diff --git a/doc/html/event_8php.html b/doc/html/event_8php.html
index 656ce68bf..827491d8c 100644
--- a/doc/html/event_8php.html
+++ b/doc/html/event_8php.html
@@ -114,6 +114,12 @@ $(document).ready(function(){initNavTree('event_8php.html','');});
Functions</h2></td></tr>
<tr class="memitem:a2ac9f1b08de03250ecd794f705781d17"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="event_8php.html#a2ac9f1b08de03250ecd794f705781d17">format_event_html</a> ($ev)</td></tr>
<tr class="separator:a2ac9f1b08de03250ecd794f705781d17"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ab8cc2825013e724dc26229026711cf93"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="event_8php.html#ab8cc2825013e724dc26229026711cf93">ical_wrapper</a> ($ev)</td></tr>
+<tr class="separator:ab8cc2825013e724dc26229026711cf93"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a3ff7f1824540a38f4a3991a59a9542d4"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="event_8php.html#a3ff7f1824540a38f4a3991a59a9542d4">format_event_ical</a> ($ev)</td></tr>
+<tr class="separator:a3ff7f1824540a38f4a3991a59a9542d4"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a05073cd4ab837bd4a0149e8ed23ce688"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="event_8php.html#a05073cd4ab837bd4a0149e8ed23ce688">format_ical_text</a> ($s)</td></tr>
+<tr class="separator:a05073cd4ab837bd4a0149e8ed23ce688"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:abb74206cf42d694307c3d7abb7af9869"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="event_8php.html#abb74206cf42d694307c3d7abb7af9869">format_event_bbcode</a> ($ev)</td></tr>
<tr class="separator:abb74206cf42d694307c3d7abb7af9869"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a184d6b9690e5b6dee35a0aa9edd47279"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="event_8php.html#a184d6b9690e5b6dee35a0aa9edd47279">bbtovcal</a> ($s)</td></tr>
@@ -146,7 +152,7 @@ Functions</h2></td></tr>
</table>
</div><div class="memdoc">
-<p>Referenced by <a class="el" href="bbcode_8php.html#a009f61aaf78771737ed0765c8463911b">bbcode()</a>, <a class="el" href="event_8php.html#a184d6b9690e5b6dee35a0aa9edd47279">bbtovcal()</a>, <a class="el" href="items_8php.html#a8794863cdf8ce1333040933d3a3f66bd">consume_feed()</a>, and <a class="el" href="event_8php.html#ac9f206819186b65952ac1869f0da8c6e">event_addtocal()</a>.</p>
+<p>Referenced by <a class="el" href="bbcode_8php.html#a009f61aaf78771737ed0765c8463911b">bbcode()</a>, <a class="el" href="event_8php.html#a184d6b9690e5b6dee35a0aa9edd47279">bbtovcal()</a>, and <a class="el" href="event_8php.html#ac9f206819186b65952ac1869f0da8c6e">event_addtocal()</a>.</p>
</div>
</div>
@@ -302,6 +308,60 @@ Functions</h2></td></tr>
</div>
</div>
+<a class="anchor" id="a3ff7f1824540a38f4a3991a59a9542d4"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">format_event_ical </td>
+ <td>(</td>
+ <td class="paramtype">&#160;</td>
+ <td class="paramname"><em>$ev</em></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p>Referenced by <a class="el" href="event_8php.html#ab8cc2825013e724dc26229026711cf93">ical_wrapper()</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a05073cd4ab837bd4a0149e8ed23ce688"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">format_ical_text </td>
+ <td>(</td>
+ <td class="paramtype">&#160;</td>
+ <td class="paramname"><em>$s</em></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p>Referenced by <a class="el" href="event_8php.html#a3ff7f1824540a38f4a3991a59a9542d4">format_event_ical()</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="ab8cc2825013e724dc26229026711cf93"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">ical_wrapper </td>
+ <td>(</td>
+ <td class="paramtype">&#160;</td>
+ <td class="paramname"><em>$ev</em></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p>Referenced by <a class="el" href="events_8php.html#a1d293fb217ae6bc9e3858c4b32e363ec">events_content()</a>.</p>
+
+</div>
+</div>
<a class="anchor" id="a018ea4484910a873a7c1eaa126de9b1a"></a>
<div class="memitem">
<div class="memproto">
diff --git a/doc/html/event_8php.js b/doc/html/event_8php.js
index b748ecc51..f95c17696 100644
--- a/doc/html/event_8php.js
+++ b/doc/html/event_8php.js
@@ -8,5 +8,8 @@ var event_8php =
[ "event_store_item", "event_8php.html#a7378e839ac3de9d55579eb3ec48eaf92", null ],
[ "format_event_bbcode", "event_8php.html#abb74206cf42d694307c3d7abb7af9869", null ],
[ "format_event_html", "event_8php.html#a2ac9f1b08de03250ecd794f705781d17", null ],
+ [ "format_event_ical", "event_8php.html#a3ff7f1824540a38f4a3991a59a9542d4", null ],
+ [ "format_ical_text", "event_8php.html#a05073cd4ab837bd4a0149e8ed23ce688", null ],
+ [ "ical_wrapper", "event_8php.html#ab8cc2825013e724dc26229026711cf93", null ],
[ "sort_by_date", "event_8php.html#a018ea4484910a873a7c1eaa126de9b1a", null ]
]; \ No newline at end of file
diff --git a/doc/html/extract_8php.html b/doc/html/extract_8php.html
index 70f8b1a87..422f1cf38 100644
--- a/doc/html/extract_8php.html
+++ b/doc/html/extract_8php.html
@@ -132,7 +132,7 @@ Variables</h2></td></tr>
</table>
</div><div class="memdoc">
-<p>Referenced by <a class="el" href="__well__known_8php.html#a6ebfa937a2024f0b5dab53f0ac90fed0">_well_known_init()</a>, <a class="el" href="items_8php.html#a36e656667193c83aa2cc03a024fc131b">activity_sanitise()</a>, <a class="el" href="include_2api_8php.html#a6a04b48168ba1d9dd2de3081a630611f">api_rss_extra()</a>, <a class="el" href="include_2api_8php.html#a32f0dda848d0c11c727fe1c3e741c283">api_statuses_user_timeline()</a>, <a class="el" href="include_2apps_8php.html#a15626f24069c18816f7cdaf4735f58f9">app_store()</a>, <a class="el" href="include_2apps_8php.html#aeab6a62d2f3dfaa86ed043a006305f46">app_update()</a>, <a class="el" href="appman_8php.html#a2979acbe47ffaecfa19b9eabfbfbde39">appman_post()</a>, <a class="el" href="items_8php.html#abf7a1b73eb352d79acd36309b0dababd">array_sanitise()</a>, <a class="el" href="include_2attach_8php.html#ab6830b3ab74a5d284876141ac80f6cbc">attach_mkdir()</a>, <a class="el" href="include_2attach_8php.html#a84a8a64c4805e1525b42d4add464833f">attach_store()</a>, <a class="el" href="include_2bookmarks_8php.html#aef1cb2968c41c759f2d106e1088ca323">bookmark_add()</a>, <a class="el" href="include_2chat_8php.html#acea6b176eb7aff44d9ba3ae24ce511d3">chat_message()</a>, <a class="el" href="mod_2chat_8php.html#a999d594745597c656c9760253ae297ad">chat_post()</a>, <a class="el" href="include_2chat_8php.html#acdc80dba4eb796c7472b21129b435422">chatroom_create()</a>, <a class="el" href="include_2chat_8php.html#a2ba3af6884ecdce95de69262fe599639">chatroom_destroy()</a>, <a class="el" href="chatsvc_8php.html#a7c9a9b9c24a2b02eed8efd6b09632d03">chatsvc_post()</a>, <a class="el" href="account_8php.html#a917d74aad0baf3e0c4b51cf1051e654f">check_account_admin()</a>, <a class="el" href="account_8php.html#ae052bd5558847bd38e89c213561a9771">check_account_email()</a>, <a class="el" href="account_8php.html#aaff7720423417a4333697894ffd9ddeb">check_account_invite()</a>, <a class="el" href="account_8php.html#a144b4891022567668375b58ea61cfff0">check_account_password()</a>, <a class="el" href="permissions_8php.html#a0f5bd9f7f4c8fb7ba4b2c1ed048b4dc7">check_list_permissions()</a>, <a class="el" href="text_8php.html#a0c65597bb4aed3a039eb795ff540e5e3">check_webbie()</a>, <a class="el" href="connect_8php.html#a489f0a66c660de6ec4d6917b27674f07">connect_content()</a>, <a class="el" href="connections_8php.html#a1224058db8e3fb56463eb312f98e561d">connections_post()</a>, <a class="el" href="connedit_8php.html#a795acb3d9d841f55c255d7611681ab67">connedit_content()</a>, <a class="el" href="connedit_8php.html#a234c48426b652bf4d37053f2af329ac5">connedit_post()</a>, <a class="el" href="boot_8php.html#acc4e0c910af066148b810e5fde55fff1">construct_page()</a>, <a class="el" href="text_8php.html#ad6432621d0fafcbcf3d3b9b49bef7784">contact_block()</a>, <a class="el" href="acl__selectors_8php.html#a9476997d2968a5794f3723878ed89c91">contact_select()</a>, <a class="el" href="conversation_8php.html#affea1afb3f32ca41e966c8ddb4204d81">conversation()</a>, <a class="el" href="account_8php.html#a141fe579c351c78209d425473f978eb5">create_account()</a>, <a class="el" href="identity_8php.html#a345f4c943d84de502ec6e72d2c813945">create_identity()</a>, <a class="el" href="dba__driver_8php.html#a65b83462bd26968106aebd43f16540e4">dbesc_array()</a>, <a class="el" href="mod_2directory_8php.html#aac79396570d759da2efac24fcedf5b44">directory_content()</a>, <a class="el" href="items_8php.html#a555762e1022a4b8e3c3abd32e7812408">drop_item()</a>, <a class="el" href="event_8php.html#af5ac41e7ea3f7131088fe6333fd2846c">event_store_event()</a>, <a class="el" href="event_8php.html#a7378e839ac3de9d55579eb3ec48eaf92">event_store_item()</a>, <a class="el" href="externals_8php.html#a4df44079e6f915286088b7a0d44db926">externals_run()</a>, <a class="el" href="features_8php.html#a52b5bdfb61b256713efecf7a7b20b0c0">feature_enabled()</a>, <a class="el" href="text_8php.html#ace3c98538c63e09b70a363210b414112">find_xchan_in_array()</a>, <a class="el" href="conversation_8php.html#a3d8e30cc94f9a175054c021305d3aca3">format_like()</a>, <a class="el" href="permissions_8php.html#aeca9b280f3dc3358c89976d81d690008">get_all_perms()</a>, <a class="el" href="items_8php.html#a896c1809d58f2d7a42cfe14577958ddf">get_atom_elements()</a>, <a class="el" href="include_2attach_8php.html#a6aa00ea010ea030110faefb75eafc1ce">get_cloudpath()</a>, <a class="el" href="features_8php.html#ae73c5b03b01c7284ed7e7e0e774e975c">get_features()</a>, <a class="el" href="items_8php.html#a536d0313b6ffe33b9d2490c4e25c5361">get_item_elements()</a>, <a class="el" href="items_8php.html#a94ddb1d6c8fa21dd7433677e85168037">get_mail_elements()</a>, <a class="el" href="text_8php.html#a736db13a966b8abaf8c9198faa35911a">get_mood_verbs()</a>, <a class="el" href="text_8php.html#aa46f941155c2ac1155f2f17ffb0adb66">get_poke_verbs()</a>, <a class="el" href="items_8php.html#a251343637ff40a50cca93452cd530c26">get_profile_elements()</a>, <a class="el" href="classItem.html#ad5dcbe0b94cb2d5719bc5b6bd8ad60c8">Item\get_template_data()</a>, <a class="el" href="taxonomy_8php.html#a0fb8cf0ac7bcbc8b27d856fe9bf69cd1">get_terms_oftype()</a>, <a class="el" href="classApp.html#a871898becd0697d778f36d9336253ae8">App\get_widgets()</a>, <a class="el" href="acl__selectors_8php.html#aa1e3bc344ca2b29f97eb9860216d21a0">group_select()</a>, <a class="el" href="hostxrd_8php.html#aa37ffc8e7900bc76c4828bd25916db92">hostxrd_init()</a>, <a class="el" href="text_8php.html#a436a8de00c942364c2d0fcfc7e1f4b5a">ids_to_querystr()</a>, <a class="el" href="items_8php.html#a6bee35961f2e32905f20367a9309d627">import_author_rss()</a>, <a class="el" href="items_8php.html#ae73794179b62d39bb597ff670ab1c1e5">import_author_xchan()</a>, <a class="el" href="zot_8php.html#a20750dd2c36961013fd382fb34e1366c">import_directory_profile()</a>, <a class="el" href="import_8php.html#af17fef0410518f7eac205d0ea416eaa2">import_post()</a>, <a class="el" href="zot_8php.html#a2657e141d62d5f67ad3c87651b585299">import_site()</a>, <a class="el" href="zot_8php.html#a528e97ca5d69c3b7f35c5d954afde315">import_xchan()</a>, <a class="el" href="items_8php.html#a09d425596b9f8663472cf7474ad36d96">item_getfeedattach()</a>, <a class="el" href="items_8php.html#a2541e6861a56d145c9281877cc501615">item_store()</a>, <a class="el" href="items_8php.html#acf0bf7c9d21ac84f32effb754f7ad484">item_store_update()</a>, <a class="el" href="items_8php.html#a756738301f2ed96be50232500677d58a">items_fetch()</a>, <a class="el" href="like_8php.html#a9d7dd268f21c21e9d29dd2aca2dd9538">like_content()</a>, <a class="el" href="conversation_8php.html#afe5b2f38d8b803edb0d7ec5fa2868db0">like_puller()</a>, <a class="el" href="setup_8php.html#ad2e0375a9ab87ebe6e78124ee125054a">load_database()</a>, <a class="el" href="magic_8php.html#acea2cc792849ca2d71d4b689f66518bf">magic_init()</a>, <a class="el" href="items_8php.html#a77da7ce9a117601d49ac4a67c71b514f">mail_store()</a>, <a class="el" href="include_2menu_8php.html#add35fae5e9695031b3d46e30ac409eb8">menu_add_item()</a>, <a class="el" href="include_2menu_8php.html#a08a800821721781a8dfffbe31481ff98">menu_create()</a>, <a class="el" href="include_2menu_8php.html#a6a33c6a3db2a7510b16cc656edaec571">menu_edit()</a>, <a class="el" href="include_2menu_8php.html#acb66f80ca895a6ccd562b3d9ae7b41aa">menu_edit_item()</a>, <a class="el" href="mood_8php.html#a7ae136dd7476865b4828136175db5022">mood_init()</a>, <a class="el" href="mod_2network_8php.html#a43f2f29b90c5e29072c561934bc8f8b4">network_content()</a>, <a class="el" href="new__channel_8php.html#a180b0646957db8290482f02454ad7f23">new_channel_post()</a>, <a class="el" href="include_2follow_8php.html#ae387d4ae097c23d69f3247e7f08140c7">new_contact()</a>, <a class="el" href="taxonomy_8php.html#a03f55ee46c5f496e42f3d29db8d09cce">obj_verbs()</a>, <a class="el" href="openid_8php.html#a9a13827dbcf61ae4e45f0b6b33a88f43">openid_content()</a>, <a class="el" href="parse__url_8php.html#a05a9e8944380ba3cf6bbf5893dd4b74b">parse_url_content()</a>, <a class="el" href="comanche_8php.html#af7150df735e5ff9d467994cd6f769c6e">pdl_selector()</a>, <a class="el" href="permissions_8php.html#a67ada9ed51e77885b6b0f6a28cee1835">perm_is_allowed()</a>, <a class="el" href="include_2photos_8php.html#a6c40ef58aefef705a5adc84a40e97109">photo_upload()</a>, <a class="el" href="include_2photos_8php.html#a7e7abc69872180697c5471dc69349afe">photos_album_get_db_idstr()</a>, <a class="el" href="include_2photos_8php.html#ad648c0c5544fe9263409b6f6e57c6274">photos_create_item()</a>, <a class="el" href="ping_8php.html#a77217b1b190b4c5d8770867b45f0c0a1">ping_init()</a>, <a class="el" href="po2php_8php.html#a3b75e36f913198299e99559b175cd8b4">po2php_run()</a>, <a class="el" href="poke_8php.html#a9725aab97b3983e6a98bd81c4efe7d3b">poke_init()</a>, <a class="el" href="items_8php.html#a410f9c743877c125ca06312373346903">post_activity_item()</a>, <a class="el" href="post_8php.html#af4b48181ce773ef0cdfc972441445c34">post_init()</a>, <a class="el" href="post_8php.html#af59e6a1dc22d19d9257b01cd7ccedb75">post_post()</a>, <a class="el" href="boot_8php.html#ab346a2ece14993861f3e4206befa94f0">proc_run()</a>, <a class="el" href="zot_8php.html#ac301c67864917c35922257950ae0f95c">process_channel_sync_delivery()</a>, <a class="el" href="zot_8php.html#a4d9e6ca295e443b740d9960c304b3474">process_delivery()</a>, <a class="el" href="zot_8php.html#aa6ae96db8cbbdbb10e6876d206bbf7cc">process_mail_delivery()</a>, <a class="el" href="zot_8php.html#a9a57b40669351c9791126b925cb7ef3b">process_profile_delivery()</a>, <a class="el" href="activities_8php.html#a80134e807719b3c54aba971958d2e132">profile_activity()</a>, <a class="el" href="identity_8php.html#a432259b2cf5b6f59be53e71db9f2c7dc">profile_sidebar()</a>, <a class="el" href="profiles_8php.html#a46975783b8b8d70402d51487eb1f0b00">profiles_content()</a>, <a class="el" href="view_2theme_2redbasic_2php_2config_8php.html#a8574a41fa9735ee391ba57ab24b93793">redbasic_form()</a>, <a class="el" href="comanche_8php.html#a3d11417d2d846dbe72638a556529ff8f">register_page_template()</a>, <a class="el" href="register_8php.html#a51731dcc1917c58a790eb1c0f6132271">register_post()</a>, <a class="el" href="zot_8php.html#aad25a3fe0e1566121d6fb8222979bc10">remove_community_tag()</a>, <a class="el" href="text_8php.html#a9c6ce4e12a4ac883c5e3f36fed6e1e09">replace_macros()</a>, <a class="el" href="rmagic_8php.html#a869de069d081b3c4e98b957d06bbf08f">rmagic_post()</a>, <a class="el" href="classphoto__driver.html#a5864fae7d8389372955a8e78cec527ac">photo_driver\save()</a>, <a class="el" href="account_8php.html#a014de2d5d5c9785de5bf547a485822fa">send_reg_approval_email()</a>, <a class="el" href="plugin_8php.html#a030cec6793b909c439c0336ba39b1571">service_class_allows()</a>, <a class="el" href="plugin_8php.html#a905b54e10704b283ac64680a8abc0971">service_class_fetch()</a>, <a class="el" href="classApp.html#abea5a4f77dcd53c928dc4eed86616637">App\set_apps()</a>, <a class="el" href="settings_8php.html#aa7ee94d88ac088edb04ccf3a26de3586">settings_post()</a>, <a class="el" href="event_8php.html#a018ea4484910a873a7c1eaa126de9b1a">sort_by_date()</a>, <a class="el" href="text_8php.html#a8796f6a9ca592ecdce7b3afc3462aa13">stringify_array_elms()</a>, <a class="el" href="subthread_8php.html#a50368f3d825b77996030528e7fbfa3d3">subthread_content()</a>, <a class="el" href="suggest_8php.html#a58748a8235d4523f8333847f3e42dd91">suggest_content()</a>, <a class="el" href="items_8php.html#ab1bce4261bcf75ad62753b498a144d17">tag_deliver()</a>, <a class="el" href="tagger_8php.html#a0e4a3eb177d1684553c547503d67161c">tagger_content()</a>, <a class="el" href="tagrm_8php.html#adfd4ea5b4d7fc6d9c9e042af5cd7d49a">tagrm_content()</a>, <a class="el" href="tagrm_8php.html#a1702f40aa53a2fa93deade1f609abe78">tagrm_post()</a>, <a class="el" href="text_8php.html#af9c9ac3f74c82dc60acfa404d0e9dc53">theme_attachments()</a>, <a class="el" href="view_2theme_2redbasic_2php_2config_8php.html#aa7d5739b72efef9822535b2b32d5364d">theme_content()</a>, <a class="el" href="thing_8php.html#a8be23b1d475ec3d9291999221c674c80">thing_init()</a>, <a class="el" href="include_2apps_8php.html#a48289d5cc44b7638191738106ac5d030">translate_system_apps()</a>, <a class="el" href="identity_8php.html#af2802bc13a00a17b867bba7978ba8f58">validate_channelname()</a>, <a class="el" href="account_8php.html#acd6b8d2124ba5ea4f4794d2c58ae8bf5">verify_email_address()</a>, <a class="el" href="wfinger_8php.html#ae21e50c8d0a5f3c9be9f43a4e519acd3">wfinger_init()</a>, <a class="el" href="widgets_8php.html#add9b24d3304e529a7975e96122315554">widget_affinity()</a>, <a class="el" href="widgets_8php.html#a7b1e357b5a2027718470b77ec921fc65">widget_archive()</a>, <a class="el" href="widgets_8php.html#a9d60539db68042e63c0015abd69a6f7a">widget_clock()</a>, <a class="el" href="widgets_8php.html#a313a8d10ab81c71357c12e67e4d7efd5">widget_item()</a>, <a class="el" href="widgets_8php.html#a999ba893cac7600d3d3b4e7e14cf8c20">widget_photo()</a>, <a class="el" href="widgets_8php.html#a0d404276fedc59f5038cf5c085028326">widget_suggestions()</a>, <a class="el" href="widgets_8php.html#ae4ced69d83dbdd9e6b51660d9eba8653">widget_tagcloud_wall()</a>, <a class="el" href="text_8php.html#a543447c5ed766535221e2d9636b379ee">xchan_mail_query()</a>, <a class="el" href="text_8php.html#a36a2e5d418ee81140f25c4233cfecd1f">xchan_query()</a>, <a class="el" href="include_2network_8php.html#a99353baabbc3e0584b85eb79ee802cff">xml2array()</a>, <a class="el" href="xrd_8php.html#aee3cf087968e4a0ff3a87de16eb23270">xrd_init()</a>, <a class="el" href="zfinger_8php.html#a8139b83a22ef98869adc10aa224027a0">zfinger_init()</a>, <a class="el" href="identity_8php.html#a5b815330f3d177ab383af37a6c12e532">zid()</a>, <a class="el" href="identity_8php.html#a680fbafc2db023c5b1309e0180e81315">zid_init()</a>, <a class="el" href="zot_8php.html#a61cdc1ec843663c423ed2d8160ae5aea">zot_fetch()</a>, <a class="el" href="zot_8php.html#a55056e863a7860bc0cf922e78fcce073">zot_gethub()</a>, <a class="el" href="zot_8php.html#aeea071f17e306fe3d0c488551906bfab">zot_import()</a>, <a class="el" href="zot_8php.html#a928f5643ca66ae9635d85aeb2be62e03">zot_process_response()</a>, and <a class="el" href="zot_8php.html#a5bcdfef419b16075a0eca990956223dc">zot_register_hub()</a>.</p>
+<p>Referenced by <a class="el" href="__well__known_8php.html#a6ebfa937a2024f0b5dab53f0ac90fed0">_well_known_init()</a>, <a class="el" href="account_8php.html#a4328c40ee4b3d68630cf1ebb7b9d4d89">account_service_class_fetch()</a>, <a class="el" href="items_8php.html#a36e656667193c83aa2cc03a024fc131b">activity_sanitise()</a>, <a class="el" href="include_2api_8php.html#a6a04b48168ba1d9dd2de3081a630611f">api_rss_extra()</a>, <a class="el" href="include_2api_8php.html#a32f0dda848d0c11c727fe1c3e741c283">api_statuses_user_timeline()</a>, <a class="el" href="include_2apps_8php.html#a15626f24069c18816f7cdaf4735f58f9">app_store()</a>, <a class="el" href="include_2apps_8php.html#aeab6a62d2f3dfaa86ed043a006305f46">app_update()</a>, <a class="el" href="appman_8php.html#a2979acbe47ffaecfa19b9eabfbfbde39">appman_post()</a>, <a class="el" href="items_8php.html#abf7a1b73eb352d79acd36309b0dababd">array_sanitise()</a>, <a class="el" href="include_2attach_8php.html#ab6830b3ab74a5d284876141ac80f6cbc">attach_mkdir()</a>, <a class="el" href="include_2attach_8php.html#a84a8a64c4805e1525b42d4add464833f">attach_store()</a>, <a class="el" href="include_2bookmarks_8php.html#aef1cb2968c41c759f2d106e1088ca323">bookmark_add()</a>, <a class="el" href="include_2chat_8php.html#acea6b176eb7aff44d9ba3ae24ce511d3">chat_message()</a>, <a class="el" href="mod_2chat_8php.html#a999d594745597c656c9760253ae297ad">chat_post()</a>, <a class="el" href="include_2chat_8php.html#acdc80dba4eb796c7472b21129b435422">chatroom_create()</a>, <a class="el" href="include_2chat_8php.html#a2ba3af6884ecdce95de69262fe599639">chatroom_destroy()</a>, <a class="el" href="chatsvc_8php.html#a7c9a9b9c24a2b02eed8efd6b09632d03">chatsvc_post()</a>, <a class="el" href="account_8php.html#a917d74aad0baf3e0c4b51cf1051e654f">check_account_admin()</a>, <a class="el" href="account_8php.html#ae052bd5558847bd38e89c213561a9771">check_account_email()</a>, <a class="el" href="account_8php.html#aaff7720423417a4333697894ffd9ddeb">check_account_invite()</a>, <a class="el" href="account_8php.html#a144b4891022567668375b58ea61cfff0">check_account_password()</a>, <a class="el" href="permissions_8php.html#a0f5bd9f7f4c8fb7ba4b2c1ed048b4dc7">check_list_permissions()</a>, <a class="el" href="text_8php.html#a0c65597bb4aed3a039eb795ff540e5e3">check_webbie()</a>, <a class="el" href="connect_8php.html#a489f0a66c660de6ec4d6917b27674f07">connect_content()</a>, <a class="el" href="connections_8php.html#a1224058db8e3fb56463eb312f98e561d">connections_post()</a>, <a class="el" href="connedit_8php.html#a795acb3d9d841f55c255d7611681ab67">connedit_content()</a>, <a class="el" href="connedit_8php.html#a234c48426b652bf4d37053f2af329ac5">connedit_post()</a>, <a class="el" href="boot_8php.html#acc4e0c910af066148b810e5fde55fff1">construct_page()</a>, <a class="el" href="text_8php.html#ad6432621d0fafcbcf3d3b9b49bef7784">contact_block()</a>, <a class="el" href="acl__selectors_8php.html#a9476997d2968a5794f3723878ed89c91">contact_select()</a>, <a class="el" href="conversation_8php.html#affea1afb3f32ca41e966c8ddb4204d81">conversation()</a>, <a class="el" href="account_8php.html#a141fe579c351c78209d425473f978eb5">create_account()</a>, <a class="el" href="identity_8php.html#a345f4c943d84de502ec6e72d2c813945">create_identity()</a>, <a class="el" href="diaspora_8php.html#a5d57518545baa31cf8a85a937a267681">diaspora_like()</a>, <a class="el" href="diaspora_8php.html#a131abd521b218d6ae6f7d2917d8b2605">diaspora_process_outbound()</a>, <a class="el" href="mod_2directory_8php.html#aac79396570d759da2efac24fcedf5b44">directory_content()</a>, <a class="el" href="include_2network_8php.html#a5176176ddc1906d91f186df6fbd87b48">discover_by_url()</a>, <a class="el" href="include_2network_8php.html#a63e62946e194928eb17c5a9f2bbef0fe">discover_by_webbie()</a>, <a class="el" href="items_8php.html#a555762e1022a4b8e3c3abd32e7812408">drop_item()</a>, <a class="el" href="event_8php.html#af5ac41e7ea3f7131088fe6333fd2846c">event_store_event()</a>, <a class="el" href="event_8php.html#a7378e839ac3de9d55579eb3ec48eaf92">event_store_item()</a>, <a class="el" href="externals_8php.html#a4df44079e6f915286088b7a0d44db926">externals_run()</a>, <a class="el" href="features_8php.html#a52b5bdfb61b256713efecf7a7b20b0c0">feature_enabled()</a>, <a class="el" href="include_2network_8php.html#a850ed5307c6a18076f4b80addc99602d">fetch_xrd_links()</a>, <a class="el" href="items_8php.html#a8cda98925a4c5c2f6dade70d9586d79a">filter_insecure()</a>, <a class="el" href="text_8php.html#ace3c98538c63e09b70a363210b414112">find_xchan_in_array()</a>, <a class="el" href="dimport_8php.html#a581f040717941ce3e1868b0b5dceefd1">foofoo()</a>, <a class="el" href="conversation_8php.html#a3d8e30cc94f9a175054c021305d3aca3">format_like()</a>, <a class="el" href="text_8php.html#ae0333c304ec5b4b72e66bb2933fa7357">generate_map()</a>, <a class="el" href="text_8php.html#af5eb4a9c1599764f80c5bc71e0125d4b">generate_named_map()</a>, <a class="el" href="permissions_8php.html#aeca9b280f3dc3358c89976d81d690008">get_all_perms()</a>, <a class="el" href="items_8php.html#a5e5be7bf1f8257dec0b2647e60a3f3f1">get_atom_elements()</a>, <a class="el" href="include_2attach_8php.html#a6aa00ea010ea030110faefb75eafc1ce">get_cloudpath()</a>, <a class="el" href="features_8php.html#ae73c5b03b01c7284ed7e7e0e774e975c">get_features()</a>, <a class="el" href="items_8php.html#a536d0313b6ffe33b9d2490c4e25c5361">get_item_elements()</a>, <a class="el" href="items_8php.html#a94ddb1d6c8fa21dd7433677e85168037">get_mail_elements()</a>, <a class="el" href="text_8php.html#a736db13a966b8abaf8c9198faa35911a">get_mood_verbs()</a>, <a class="el" href="text_8php.html#aa46f941155c2ac1155f2f17ffb0adb66">get_poke_verbs()</a>, <a class="el" href="items_8php.html#a251343637ff40a50cca93452cd530c26">get_profile_elements()</a>, <a class="el" href="classItem.html#ad5dcbe0b94cb2d5719bc5b6bd8ad60c8">Item\get_template_data()</a>, <a class="el" href="taxonomy_8php.html#a0fb8cf0ac7bcbc8b27d856fe9bf69cd1">get_terms_oftype()</a>, <a class="el" href="classApp.html#a871898becd0697d778f36d9336253ae8">App\get_widgets()</a>, <a class="el" href="acl__selectors_8php.html#aa1e3bc344ca2b29f97eb9860216d21a0">group_select()</a>, <a class="el" href="hostxrd_8php.html#aa37ffc8e7900bc76c4828bd25916db92">hostxrd_init()</a>, <a class="el" href="text_8php.html#a436a8de00c942364c2d0fcfc7e1f4b5a">ids_to_querystr()</a>, <a class="el" href="impel_8php.html#ab7db6fca43b42ea4332cb3e841b3cf7b">impel_init()</a>, <a class="el" href="items_8php.html#a6bee35961f2e32905f20367a9309d627">import_author_rss()</a>, <a class="el" href="items_8php.html#a37f79991f36811cf847446ff60e8e11f">import_author_unknown()</a>, <a class="el" href="items_8php.html#ae73794179b62d39bb597ff670ab1c1e5">import_author_xchan()</a>, <a class="el" href="zot_8php.html#a20750dd2c36961013fd382fb34e1366c">import_directory_profile()</a>, <a class="el" href="import_8php.html#af17fef0410518f7eac205d0ea416eaa2">import_post()</a>, <a class="el" href="zot_8php.html#a2657e141d62d5f67ad3c87651b585299">import_site()</a>, <a class="el" href="zot_8php.html#a528e97ca5d69c3b7f35c5d954afde315">import_xchan()</a>, <a class="el" href="items_8php.html#a09d425596b9f8663472cf7474ad36d96">item_getfeedattach()</a>, <a class="el" href="items_8php.html#a2541e6861a56d145c9281877cc501615">item_store()</a>, <a class="el" href="items_8php.html#acf0bf7c9d21ac84f32effb754f7ad484">item_store_update()</a>, <a class="el" href="items_8php.html#a756738301f2ed96be50232500677d58a">items_fetch()</a>, <a class="el" href="like_8php.html#a9d7dd268f21c21e9d29dd2aca2dd9538">like_content()</a>, <a class="el" href="conversation_8php.html#afe5b2f38d8b803edb0d7ec5fa2868db0">like_puller()</a>, <a class="el" href="setup_8php.html#ad2e0375a9ab87ebe6e78124ee125054a">load_database()</a>, <a class="el" href="magic_8php.html#acea2cc792849ca2d71d4b689f66518bf">magic_init()</a>, <a class="el" href="items_8php.html#a77da7ce9a117601d49ac4a67c71b514f">mail_store()</a>, <a class="el" href="include_2menu_8php.html#add35fae5e9695031b3d46e30ac409eb8">menu_add_item()</a>, <a class="el" href="include_2menu_8php.html#a08a800821721781a8dfffbe31481ff98">menu_create()</a>, <a class="el" href="include_2menu_8php.html#a6a33c6a3db2a7510b16cc656edaec571">menu_edit()</a>, <a class="el" href="include_2menu_8php.html#acb66f80ca895a6ccd562b3d9ae7b41aa">menu_edit_item()</a>, <a class="el" href="mood_8php.html#a7ae136dd7476865b4828136175db5022">mood_init()</a>, <a class="el" href="mod_2network_8php.html#a43f2f29b90c5e29072c561934bc8f8b4">network_content()</a>, <a class="el" href="new__channel_8php.html#a180b0646957db8290482f02454ad7f23">new_channel_post()</a>, <a class="el" href="include_2follow_8php.html#ae387d4ae097c23d69f3247e7f08140c7">new_contact()</a>, <a class="el" href="taxonomy_8php.html#a03f55ee46c5f496e42f3d29db8d09cce">obj_verbs()</a>, <a class="el" href="openid_8php.html#a9a13827dbcf61ae4e45f0b6b33a88f43">openid_content()</a>, <a class="el" href="parse__url_8php.html#a05a9e8944380ba3cf6bbf5893dd4b74b">parse_url_content()</a>, <a class="el" href="comanche_8php.html#af7150df735e5ff9d467994cd6f769c6e">pdl_selector()</a>, <a class="el" href="permissions_8php.html#a67ada9ed51e77885b6b0f6a28cee1835">perm_is_allowed()</a>, <a class="el" href="include_2photos_8php.html#a6c40ef58aefef705a5adc84a40e97109">photo_upload()</a>, <a class="el" href="include_2photos_8php.html#a7e7abc69872180697c5471dc69349afe">photos_album_get_db_idstr()</a>, <a class="el" href="include_2photos_8php.html#ad648c0c5544fe9263409b6f6e57c6274">photos_create_item()</a>, <a class="el" href="ping_8php.html#a77217b1b190b4c5d8770867b45f0c0a1">ping_init()</a>, <a class="el" href="po2php_8php.html#a3b75e36f913198299e99559b175cd8b4">po2php_run()</a>, <a class="el" href="poke_8php.html#a9725aab97b3983e6a98bd81c4efe7d3b">poke_init()</a>, <a class="el" href="items_8php.html#a410f9c743877c125ca06312373346903">post_activity_item()</a>, <a class="el" href="post_8php.html#af4b48181ce773ef0cdfc972441445c34">post_init()</a>, <a class="el" href="post_8php.html#af59e6a1dc22d19d9257b01cd7ccedb75">post_post()</a>, <a class="el" href="boot_8php.html#ab346a2ece14993861f3e4206befa94f0">proc_run()</a>, <a class="el" href="zot_8php.html#ac301c67864917c35922257950ae0f95c">process_channel_sync_delivery()</a>, <a class="el" href="zot_8php.html#a0e3006e7a456b2175a9badc96bc5176d">process_delivery()</a>, <a class="el" href="zot_8php.html#a8eeefdb0dad4c436bea9d1c06c0a7988">process_location_delivery()</a>, <a class="el" href="zot_8php.html#aa6ae96db8cbbdbb10e6876d206bbf7cc">process_mail_delivery()</a>, <a class="el" href="zot_8php.html#a9a57b40669351c9791126b925cb7ef3b">process_profile_delivery()</a>, <a class="el" href="activities_8php.html#a80134e807719b3c54aba971958d2e132">profile_activity()</a>, <a class="el" href="identity_8php.html#a432259b2cf5b6f59be53e71db9f2c7dc">profile_sidebar()</a>, <a class="el" href="profiles_8php.html#a46975783b8b8d70402d51487eb1f0b00">profiles_content()</a>, <a class="el" href="view_2theme_2redbasic_2php_2config_8php.html#a8574a41fa9735ee391ba57ab24b93793">redbasic_form()</a>, <a class="el" href="refimport_8php.html#ad97ebb5feda0230a4834e0b3637a0d29">refimport_content()</a>, <a class="el" href="refimport_8php.html#a01a29630fa5e1ce6cd5e1fd75280747c">reflect_comment_store()</a>, <a class="el" href="comanche_8php.html#a3d11417d2d846dbe72638a556529ff8f">register_page_template()</a>, <a class="el" href="register_8php.html#a51731dcc1917c58a790eb1c0f6132271">register_post()</a>, <a class="el" href="zot_8php.html#aad25a3fe0e1566121d6fb8222979bc10">remove_community_tag()</a>, <a class="el" href="text_8php.html#a9c6ce4e12a4ac883c5e3f36fed6e1e09">replace_macros()</a>, <a class="el" href="rmagic_8php.html#a869de069d081b3c4e98b957d06bbf08f">rmagic_post()</a>, <a class="el" href="classphoto__driver.html#a5864fae7d8389372955a8e78cec527ac">photo_driver\save()</a>, <a class="el" href="account_8php.html#a014de2d5d5c9785de5bf547a485822fa">send_reg_approval_email()</a>, <a class="el" href="account_8php.html#a030cec6793b909c439c0336ba39b1571">service_class_allows()</a>, <a class="el" href="account_8php.html#a905b54e10704b283ac64680a8abc0971">service_class_fetch()</a>, <a class="el" href="classApp.html#abea5a4f77dcd53c928dc4eed86616637">App\set_apps()</a>, <a class="el" href="event_8php.html#a018ea4484910a873a7c1eaa126de9b1a">sort_by_date()</a>, <a class="el" href="text_8php.html#a8796f6a9ca592ecdce7b3afc3462aa13">stringify_array_elms()</a>, <a class="el" href="subthread_8php.html#a50368f3d825b77996030528e7fbfa3d3">subthread_content()</a>, <a class="el" href="suggest_8php.html#a58748a8235d4523f8333847f3e42dd91">suggest_content()</a>, <a class="el" href="zot_8php.html#ab15c04e7e5f44edf45ec50dd7d183254">sync_locations()</a>, <a class="el" href="items_8php.html#ab1bce4261bcf75ad62753b498a144d17">tag_deliver()</a>, <a class="el" href="tagger_8php.html#a0e4a3eb177d1684553c547503d67161c">tagger_content()</a>, <a class="el" href="text_8php.html#af9c9ac3f74c82dc60acfa404d0e9dc53">theme_attachments()</a>, <a class="el" href="view_2theme_2redbasic_2php_2config_8php.html#aa7d5739b72efef9822535b2b32d5364d">theme_content()</a>, <a class="el" href="thing_8php.html#a8be23b1d475ec3d9291999221c674c80">thing_init()</a>, <a class="el" href="include_2apps_8php.html#a48289d5cc44b7638191738106ac5d030">translate_system_apps()</a>, <a class="el" href="identity_8php.html#af2802bc13a00a17b867bba7978ba8f58">validate_channelname()</a>, <a class="el" href="account_8php.html#acd6b8d2124ba5ea4f4794d2c58ae8bf5">verify_email_address()</a>, <a class="el" href="wfinger_8php.html#ae21e50c8d0a5f3c9be9f43a4e519acd3">wfinger_init()</a>, <a class="el" href="widgets_8php.html#add9b24d3304e529a7975e96122315554">widget_affinity()</a>, <a class="el" href="widgets_8php.html#a7b1e357b5a2027718470b77ec921fc65">widget_archive()</a>, <a class="el" href="widgets_8php.html#af919de8e7e2ba8192a65fadc72a2c8b5">widget_catcloud_wall()</a>, <a class="el" href="widgets_8php.html#a9d60539db68042e63c0015abd69a6f7a">widget_clock()</a>, <a class="el" href="widgets_8php.html#a313a8d10ab81c71357c12e67e4d7efd5">widget_item()</a>, <a class="el" href="widgets_8php.html#a999ba893cac7600d3d3b4e7e14cf8c20">widget_photo()</a>, <a class="el" href="widgets_8php.html#af8eb466ef91d9e96e13335ead5eba380">widget_photo_rand()</a>, <a class="el" href="widgets_8php.html#a829c5a5c7448129266fc1df3ae1a3c2e">widget_random_block()</a>, <a class="el" href="widgets_8php.html#a0d404276fedc59f5038cf5c085028326">widget_suggestions()</a>, <a class="el" href="widgets_8php.html#ae4ced69d83dbdd9e6b51660d9eba8653">widget_tagcloud_wall()</a>, <a class="el" href="hubloc_8php.html#af1b476c936f96a93282b1d058e3d05ea">xchan_fetch()</a>, <a class="el" href="text_8php.html#a543447c5ed766535221e2d9636b379ee">xchan_mail_query()</a>, <a class="el" href="text_8php.html#a905c3895feb6f276df23f07f16f9bb52">xchan_query()</a>, <a class="el" href="hubloc_8php.html#acb708dd197aae72a4858cf5ff4e3195b">xchan_store()</a>, <a class="el" href="include_2network_8php.html#a99353baabbc3e0584b85eb79ee802cff">xml2array()</a>, <a class="el" href="xrd_8php.html#aee3cf087968e4a0ff3a87de16eb23270">xrd_init()</a>, <a class="el" href="zfinger_8php.html#a8139b83a22ef98869adc10aa224027a0">zfinger_init()</a>, <a class="el" href="identity_8php.html#a5b815330f3d177ab383af37a6c12e532">zid()</a>, <a class="el" href="identity_8php.html#a680fbafc2db023c5b1309e0180e81315">zid_init()</a>, <a class="el" href="items_8php.html#a1cf89557f32d5dfbe8bd90448dc1aa92">zot_feed()</a>, <a class="el" href="zot_8php.html#a61cdc1ec843663c423ed2d8160ae5aea">zot_fetch()</a>, <a class="el" href="zot_8php.html#a55056e863a7860bc0cf922e78fcce073">zot_gethub()</a>, <a class="el" href="zot_8php.html#aeea071f17e306fe3d0c488551906bfab">zot_import()</a>, <a class="el" href="zot_8php.html#a3920afe14fc1d82020161b4b86bcd9ac">zot_process_message_request()</a>, <a class="el" href="zot_8php.html#a928f5643ca66ae9635d85aeb2be62e03">zot_process_response()</a>, and <a class="el" href="zot_8php.html#a5bcdfef419b16075a0eca990956223dc">zot_register_hub()</a>.</p>
</div>
</div>
@@ -146,7 +146,7 @@ Variables</h2></td></tr>
</table>
</div><div class="memdoc">
-<p>Referenced by <a class="el" href="admin_8php.html#a54128076986ba80c4a103de3fc3e19a8">admin_page_plugins()</a>, <a class="el" href="admin_8php.html#ac0f3bd12431c056aad77bac9d09fa30e">admin_page_site()</a>, <a class="el" href="admin_8php.html#af124619fdc278fe2bf14c45ddaa260fb">admin_page_themes()</a>, <a class="el" href="view_2theme_2apw_2php_2config_8php.html#ad59fc09da66b66267f9753c8b2dd68d0">apw_form()</a>, <a class="el" href="fbrowser_8php.html#aee476addcf7a3e0fe9454f7dfd5a56c4">fbrowser_content()</a>, <a class="el" href="classRedBrowser.html#a1f7daf50bb9bfcde7345b3b1908dbd7e">RedBrowser\generateDirectoryIndex()</a>, <a class="el" href="include_2apps_8php.html#ae64f72eb4f126e03b4eb65ed1702a3ca">get_system_apps()</a>, <a class="el" href="pdledit_8php.html#a59cb550f6b7a4e7d8196fbc9de601619">pdledit_content()</a>, and <a class="el" href="view_2theme_2redbasic_2php_2config_8php.html#a8574a41fa9735ee391ba57ab24b93793">redbasic_form()</a>.</p>
+<p>Referenced by <a class="el" href="admin_8php.html#a54128076986ba80c4a103de3fc3e19a8">admin_page_plugins()</a>, <a class="el" href="admin_8php.html#ac0f3bd12431c056aad77bac9d09fa30e">admin_page_site()</a>, <a class="el" href="admin_8php.html#af124619fdc278fe2bf14c45ddaa260fb">admin_page_themes()</a>, <a class="el" href="view_2theme_2apw_2php_2config_8php.html#ad59fc09da66b66267f9753c8b2dd68d0">apw_form()</a>, <a class="el" href="fbrowser_8php.html#aee476addcf7a3e0fe9454f7dfd5a56c4">fbrowser_content()</a>, <a class="el" href="classRedMatrix_1_1RedDAV_1_1RedBrowser.html#af764d5f14df751f9ec86c34fab300c09">RedMatrix\RedDAV\RedBrowser\generateDirectoryIndex()</a>, <a class="el" href="include_2apps_8php.html#ae64f72eb4f126e03b4eb65ed1702a3ca">get_system_apps()</a>, <a class="el" href="pdledit_8php.html#a59cb550f6b7a4e7d8196fbc9de601619">pdledit_content()</a>, <a class="el" href="view_2theme_2redbasic_2php_2config_8php.html#a8574a41fa9735ee391ba57ab24b93793">redbasic_form()</a>, <a class="el" href="refimport_8php.html#ad97ebb5feda0230a4834e0b3637a0d29">refimport_content()</a>, and <a class="el" href="Contact_8php.html#ab5895b75a3b2abdddf1cb351a8c6b58b">rrmdir()</a>.</p>
</div>
</div>
@@ -160,7 +160,7 @@ Variables</h2></td></tr>
</table>
</div><div class="memdoc">
-<p>Referenced by <a class="el" href="classTemplate.html#ac41c96e1f407b1a910029e5f4b7de8e4">Template\_build_nodes()</a>, <a class="el" href="classTemplate.html#aa6f9bd7a8f7512efcf90e8d376fe05ee">Template\_replcb_node()</a>, <a class="el" href="admin_8php.html#af124619fdc278fe2bf14c45ddaa260fb">admin_page_themes()</a>, <a class="el" href="include_2apps_8php.html#ad5f6f1443725386cc7af5ed34a5fe185">app_decode()</a>, <a class="el" href="text_8php.html#a95fd2f8f23a1948414a03ebc963bac57">attribute_contains()</a>, <a class="el" href="text_8php.html#a13286f8a95d2de6b102966ecc270c8d6">base64url_decode()</a>, <a class="el" href="text_8php.html#a070384ec000fd65043fce11d5392d241">base64url_encode()</a>, <a class="el" href="bb2diaspora_8php.html#ad0abe1a7ee50aa0736a233df0a422eba">bb_tag_preg_replace()</a>, <a class="el" href="text_8php.html#a3d2793d66db3345fd290b71e2eadf98e">bb_translate_video()</a>, <a class="el" href="event_8php.html#a180cccd63c2a2f00ff432b03113531f3">bbtoevent()</a>, <a class="el" href="event_8php.html#a184d6b9690e5b6dee35a0aa9edd47279">bbtovcal()</a>, <a class="el" href="mod_2bookmarks_8php.html#a6b7942f3d27e40f0f47c88704127b9b3">bookmarks_init()</a>, <a class="el" href="text_8php.html#a55ab893be57feda59c2a7ba1e58ff2d0">chanlink_hash()</a>, <a class="el" href="text_8php.html#a2e8d6c402603be3a1256a16605e09c2a">chanlink_url()</a>, <a class="el" href="comanche_8php.html#a1a208fdb40dd83d6298caec4290ee922">comanche_parser()</a>, <a class="el" href="comanche_8php.html#a5718daeda40bf835345fe061e8808cdf">comanche_region()</a>, <a class="el" href="comanche_8php.html#ae9fe1ce574db3dd0931eada80234f82a">comanche_webpage()</a>, <a class="el" href="boot_8php.html#acc4e0c910af066148b810e5fde55fff1">construct_page()</a>, <a class="el" href="datetime_8php.html#ad6301e74b0f9267d52f8d432b5beb226">datetime_convert()</a>, <a class="el" href="text_8php.html#a63fb21c0bed2fc72eef2c1471ac42b63">day_translate()</a>, <a class="el" href="language_8php.html#a632da17c7ac0d2dc1a00a4706870194b">detect_language()</a>, <a class="el" href="bb2diaspora_8php.html#ac9061ee10fcfcdac69566b649614e625">diaspora2bb()</a>, <a class="el" href="bb2diaspora_8php.html#a8b96bd45884fa1c40b942939354197d4">diaspora_ol()</a>, <a class="el" href="bb2diaspora_8php.html#adc92ccda5f85ed27e64fcc17712c89cc">diaspora_ul()</a>, <a class="el" href="dirsearch_8php.html#a7d4cd9890d5ed23c3efc58e2a778a305">dir_parse_query()</a>, <a class="el" href="dirsearch_8php.html#a52bcac49b0e35cc8c6b70066143c2ee2">dir_query_build()</a>, <a class="el" href="text_8php.html#ae4282a39492caa23ccbc2ce98e54f110">expand_acl()</a>, <a class="el" href="taxonomy_8php.html#a08df5164926d2b31b8e9fcfe919de2b6">file_tag_decode()</a>, <a class="el" href="taxonomy_8php.html#a3299482ac20e9d79453048dd52881d37">file_tag_encode()</a>, <a class="el" href="taxonomy_8php.html#a163b5131f388080b0fc82398d3a32fe1">file_tag_file_query()</a>, <a class="el" href="text_8php.html#afdc69fe3f6c09e35e46304dcea63ae28">fix_mce_lf()</a>, <a class="el" href="items_8php.html#aba98fcbbcd7044a7e9ea34edabc14c87">fix_private_photos()</a>, <a class="el" href="text_8php.html#a3054189cff173977f4216c9a3dd29e1b">format_categories()</a>, <a class="el" href="text_8php.html#a4e4d42b0a805148d9f9a92bcac89bf91">format_filer()</a>, <a class="el" href="text_8php.html#a3a0c432a484c17d7720b8ba2d6bfdd59">format_hashtags()</a>, <a class="el" href="text_8php.html#ad8c6e13d6accf057136c5f30a23a5f08">format_mentions()</a>, <a class="el" href="taxonomy_8php.html#adfead45e3b8a3dfb2b4a4b9281d0dbe1">format_term_for_display()</a>, <a class="el" href="bb2diaspora_8php.html#a4c2f8f11b29a06809d9b07782215b1b2">get_bb_tag_pos()</a>, <a class="el" href="plugin_8php.html#acb63c27d07f6d7dffe95f98a6cef1295">get_intltext_template()</a>, <a class="el" href="language_8php.html#a43e6ddba9df019c9ac3ab4c94c444ae7">get_language_name()</a>, <a class="el" href="plugin_8php.html#a75f7dfed291fd7add7fc85b5c022a1f4">get_markup_template()</a>, <a class="el" href="text_8php.html#a4659fbc4e54ddc700c3aa66b9092c623">get_tags()</a>, <a class="el" href="text_8php.html#a138a3a611fa7f4f3630674145fc826bf">html2bb_video()</a>, <a class="el" href="boot_8php.html#adfb2fc7be5a4226c0a8e24131da9d498">info()</a>, <a class="el" href="text_8php.html#a1557112a774ec00fa06ed6b6f6495506">is_a_date_arg()</a>, <a class="el" href="identity_8php.html#ae2b140df652a55ca11bb6a99005fce35">is_foreigner()</a>, <a class="el" href="identity_8php.html#a9637c557e13d9671f3eeb124ab98212a">is_member()</a>, <a class="el" href="text_8php.html#a0271381208acfa2d4cff36da281e3e23">json_decode_plus()</a>, <a class="el" href="text_8php.html#a2690ad67bb6fb97ef69de3e8d23f2728">legal_webbie()</a>, <a class="el" href="text_8php.html#a11255c8c4e5245b6c24f97684826aa54">linkify()</a>, <a class="el" href="text_8php.html#a1e510c53624933ce9b7d6715784894db">magic_link()</a>, <a class="el" href="mail_8php.html#a3c7c485fc69f92371e8b20936040eca1">mail_content()</a>, <a class="el" href="contact__selectors_8php.html#ad472e4716426dd1a9dd77b62962454be">network_to_name()</a>, <a class="el" href="text_8php.html#adba17ec946f4285285dc100f7860bf51">normalise_openid()</a>, <a class="el" href="boot_8php.html#a9255af5ae9c887520091ea04763c1a88">notice()</a>, <a class="el" href="notifier_8php.html#a568c502f626cff95e344c0748938b85d">notifier_run()</a>, <a class="el" href="include_2oembed_8php.html#a9e57f3e36a0a0a47e6db79544b701d9a">oembed_iframe()</a>, <a class="el" href="include_2oembed_8php.html#a00c4c80deffd9daf8dc97b58d4c64ed0">oembed_replacecb()</a>, <a class="el" href="oexchange_8php.html#a2d8b785cd7d041a4e6274f5af370cf26">oexchange_content()</a>, <a class="el" href="include_2network_8php.html#a27a951b59d8d622c0b3e7b0673ba74c6">parse_xml_string()</a>, <a class="el" href="mod_2photos_8php.html#a062bed4d04d14fee8a53f4c9be673080">photos_post()</a>, <a class="el" href="socgraph_8php.html#a5ef8bef37161df53718a21e93d02fbd6">poco_load()</a>, <a class="el" href="text_8php.html#ae4df74296fbe55051ed3c035e55205e5">prepare_body()</a>, <a class="el" href="tpldebug_8php.html#a44778457a6c02554812fbfad19d32ba3">print_template()</a>, <a class="el" href="dba__driver_8php.html#a55bf30d8176967e682656b5be4ad9249">printable()</a>, <a class="el" href="include_2message_8php.html#a5f8de9847e203329e317ac38dc646898">private_messages_fetch_conversation()</a>, <a class="el" href="include_2message_8php.html#a254a756031e4d5e94f85e2939bdb5091">private_messages_fetch_message()</a>, <a class="el" href="include_2message_8php.html#a652973ce47a262f2d238c2fd6233d97e">private_messages_list()</a>, <a class="el" href="text_8php.html#a4e7698aca48982512594b274543c3b9b">protect_sprintf()</a>, <a class="el" href="text_8php.html#a4841df5beabdd1bdd1ed56781a915d61">purify_html()</a>, <a class="el" href="text_8php.html#afc998d2796a6b2a08e96f7cc061e7221">qp()</a>, <a class="el" href="text_8php.html#a9d6a5ee1290de7a8b483fe78585daade">random_string()</a>, <a class="el" href="classTemplate.html#a285b5b2007dbbf733476273df3fed4ef">Template\replace()</a>, <a class="el" href="text_8php.html#a9c6ce4e12a4ac883c5e3f36fed6e1e09">replace_macros()</a>, <a class="el" href="classFriendicaSmartyEngine.html#ad62f1181d2f02b54b46731ad2bd46db2">FriendicaSmartyEngine\replace_macros()</a>, <a class="el" href="classTemplate.html#a07737733f6949bdedea1e3d301b2ab7b">Template\replace_macros()</a>, <a class="el" href="include_2network_8php.html#ae8d9c41a11000fb8667039fc71b4f73f">scale_external_images()</a>, <a class="el" href="text_8php.html#a876e94892867019935b348b573299352">search()</a>, <a class="el" href="text_8php.html#aae91e4d2a2c6f7a9daccd2c186ae3447">searchbox()</a>, <a class="el" href="siteinfo_8php.html#a70c09bfb6dd1c86a125a35f62ed53656">siteinfo_content()</a>, <a class="el" href="text_8php.html#a3d225b253bb9e0f2498c11647d927b0b">smilies()</a>, <a class="el" href="text_8php.html#a33bdb5d4bfff2ede7caf61a98ac0a2e9">sslify()</a>, <a class="el" href="spam_8php.html#a05861201147b9a538d006f0269255cf9">string_splitter()</a>, <a class="el" href="text_8php.html#a2f2585385530cb935a6325c809d84a4d">strip_zids()</a>, <a class="el" href="bb2diaspora_8php.html#a180b0e3a7d702998be19e3c3b44b0e93">stripdcode_br_cb()</a>, <a class="el" href="language_8php.html#ac6ae482ee54fa2764d5c2e77305aeb96">t()</a>, <a class="el" href="template__processor_8php.html#ab2bcd8738f20f293636a6ae8e1099db5">template_escape()</a>, <a class="el" href="template__processor_8php.html#ac635bb19a5f6eadd6b0cddefdd537c1e">template_unescape()</a>, <a class="el" href="taxonomy_8php.html#a7a913d19c77610da689be48fbbf6734c">term_query()</a>, <a class="el" href="text_8php.html#af9c9ac3f74c82dc60acfa404d0e9dc53">theme_attachments()</a>, <a class="el" href="text_8php.html#a29d6b804e368d3ef359ee295e96ed4c7">unamp()</a>, <a class="el" href="text_8php.html#a740ad03e00459039a2c0992246c4e727">undo_post_tagging()</a>, <a class="el" href="text_8php.html#a1360fed7f918d859daaca1c9f384f9af">unxmlify()</a>, <a class="el" href="classTemplate.html#abbc484016ddf5d818f55b823cae6feb0">Template\var_replace()</a>, <a class="el" href="include_2network_8php.html#a8122356933bcd6b0a8567e8e15ae5cc5">webfinger()</a>, <a class="el" href="include_2network_8php.html#adf6008b38c555e98e7ed10da9ede2335">webfinger_dfrn()</a>, <a class="el" href="boot_8php.html#a01353c9abebc3544ea080ac161729632">x()</a>, <a class="el" href="include_2network_8php.html#aafd06c0a75402aefb06cfb9f9740fa37">z_fetch_url()</a>, <a class="el" href="text_8php.html#a324c58f37f6acdf9cd1922aa76077d9f">z_input_filter()</a>, <a class="el" href="include_2network_8php.html#a9129fd55e7fc175b4ea9a195cccc16bc">z_post_url()</a>, <a class="el" href="zfinger_8php.html#a8139b83a22ef98869adc10aa224027a0">zfinger_init()</a>, and <a class="el" href="identity_8php.html#a5b815330f3d177ab383af37a6c12e532">zid()</a>.</p>
+<p>Referenced by <a class="el" href="classTemplate.html#ac41c96e1f407b1a910029e5f4b7de8e4">Template\_build_nodes()</a>, <a class="el" href="classTemplate.html#aa6f9bd7a8f7512efcf90e8d376fe05ee">Template\_replcb_node()</a>, <a class="el" href="admin_8php.html#af124619fdc278fe2bf14c45ddaa260fb">admin_page_themes()</a>, <a class="el" href="include_2apps_8php.html#ad5f6f1443725386cc7af5ed34a5fe185">app_decode()</a>, <a class="el" href="text_8php.html#a95fd2f8f23a1948414a03ebc963bac57">attribute_contains()</a>, <a class="el" href="text_8php.html#a13286f8a95d2de6b102966ecc270c8d6">base64url_decode()</a>, <a class="el" href="text_8php.html#a070384ec000fd65043fce11d5392d241">base64url_encode()</a>, <a class="el" href="bb2diaspora_8php.html#ad0abe1a7ee50aa0736a233df0a422eba">bb_tag_preg_replace()</a>, <a class="el" href="text_8php.html#a3d2793d66db3345fd290b71e2eadf98e">bb_translate_video()</a>, <a class="el" href="event_8php.html#a180cccd63c2a2f00ff432b03113531f3">bbtoevent()</a>, <a class="el" href="event_8php.html#a184d6b9690e5b6dee35a0aa9edd47279">bbtovcal()</a>, <a class="el" href="mod_2bookmarks_8php.html#a6b7942f3d27e40f0f47c88704127b9b3">bookmarks_init()</a>, <a class="el" href="text_8php.html#a55ab893be57feda59c2a7ba1e58ff2d0">chanlink_hash()</a>, <a class="el" href="text_8php.html#a2e8d6c402603be3a1256a16605e09c2a">chanlink_url()</a>, <a class="el" href="comanche_8php.html#a1a208fdb40dd83d6298caec4290ee922">comanche_parser()</a>, <a class="el" href="comanche_8php.html#a5718daeda40bf835345fe061e8808cdf">comanche_region()</a>, <a class="el" href="comanche_8php.html#ae9fe1ce574db3dd0931eada80234f82a">comanche_webpage()</a>, <a class="el" href="datetime_8php.html#ad6301e74b0f9267d52f8d432b5beb226">datetime_convert()</a>, <a class="el" href="text_8php.html#a63fb21c0bed2fc72eef2c1471ac42b63">day_translate()</a>, <a class="el" href="language_8php.html#a632da17c7ac0d2dc1a00a4706870194b">detect_language()</a>, <a class="el" href="bb2diaspora_8php.html#ac9061ee10fcfcdac69566b649614e625">diaspora2bb()</a>, <a class="el" href="diaspora_8php.html#a858f70153c384f8778082cf7843a19da">diaspora_is_blacklisted()</a>, <a class="el" href="bb2diaspora_8php.html#a8b96bd45884fa1c40b942939354197d4">diaspora_ol()</a>, <a class="el" href="bb2diaspora_8php.html#adc92ccda5f85ed27e64fcc17712c89cc">diaspora_ul()</a>, <a class="el" href="dirsearch_8php.html#ab6d5fefa98da249a994b910434a669c2">dir_flag_build()</a>, <a class="el" href="dirsearch_8php.html#a7d4cd9890d5ed23c3efc58e2a778a305">dir_parse_query()</a>, <a class="el" href="dirsearch_8php.html#a52bcac49b0e35cc8c6b70066143c2ee2">dir_query_build()</a>, <a class="el" href="event_8php.html#a7378e839ac3de9d55579eb3ec48eaf92">event_store_item()</a>, <a class="el" href="text_8php.html#ae4282a39492caa23ccbc2ce98e54f110">expand_acl()</a>, <a class="el" href="text_8php.html#a3ba47b4dd1248e7e51095572e7b814dc">extra_query_args()</a>, <a class="el" href="taxonomy_8php.html#a08df5164926d2b31b8e9fcfe919de2b6">file_tag_decode()</a>, <a class="el" href="taxonomy_8php.html#a3299482ac20e9d79453048dd52881d37">file_tag_encode()</a>, <a class="el" href="taxonomy_8php.html#a163b5131f388080b0fc82398d3a32fe1">file_tag_file_query()</a>, <a class="el" href="text_8php.html#afdc69fe3f6c09e35e46304dcea63ae28">fix_mce_lf()</a>, <a class="el" href="items_8php.html#aba98fcbbcd7044a7e9ea34edabc14c87">fix_private_photos()</a>, <a class="el" href="text_8php.html#a3054189cff173977f4216c9a3dd29e1b">format_categories()</a>, <a class="el" href="text_8php.html#a4e4d42b0a805148d9f9a92bcac89bf91">format_filer()</a>, <a class="el" href="text_8php.html#a3a0c432a484c17d7720b8ba2d6bfdd59">format_hashtags()</a>, <a class="el" href="event_8php.html#a05073cd4ab837bd4a0149e8ed23ce688">format_ical_text()</a>, <a class="el" href="text_8php.html#ad8c6e13d6accf057136c5f30a23a5f08">format_mentions()</a>, <a class="el" href="taxonomy_8php.html#adfead45e3b8a3dfb2b4a4b9281d0dbe1">format_term_for_display()</a>, <a class="el" href="bb2diaspora_8php.html#a4c2f8f11b29a06809d9b07782215b1b2">get_bb_tag_pos()</a>, <a class="el" href="plugin_8php.html#acb63c27d07f6d7dffe95f98a6cef1295">get_intltext_template()</a>, <a class="el" href="language_8php.html#a43e6ddba9df019c9ac3ab4c94c444ae7">get_language_name()</a>, <a class="el" href="plugin_8php.html#a75f7dfed291fd7add7fc85b5c022a1f4">get_markup_template()</a>, <a class="el" href="text_8php.html#a4659fbc4e54ddc700c3aa66b9092c623">get_tags()</a>, <a class="el" href="text_8php.html#a138a3a611fa7f4f3630674145fc826bf">html2bb_video()</a>, <a class="el" href="zot_8php.html#a528e97ca5d69c3b7f35c5d954afde315">import_xchan()</a>, <a class="el" href="boot_8php.html#adfb2fc7be5a4226c0a8e24131da9d498">info()</a>, <a class="el" href="text_8php.html#a1557112a774ec00fa06ed6b6f6495506">is_a_date_arg()</a>, <a class="el" href="identity_8php.html#ae2b140df652a55ca11bb6a99005fce35">is_foreigner()</a>, <a class="el" href="identity_8php.html#a9637c557e13d9671f3eeb124ab98212a">is_member()</a>, <a class="el" href="text_8php.html#a0271381208acfa2d4cff36da281e3e23">json_decode_plus()</a>, <a class="el" href="text_8php.html#a2690ad67bb6fb97ef69de3e8d23f2728">legal_webbie()</a>, <a class="el" href="text_8php.html#a11255c8c4e5245b6c24f97684826aa54">linkify()</a>, <a class="el" href="boot_8php.html#a50a6707a28c7d05d3f49eaabc7994501">load_pdl()</a>, <a class="el" href="text_8php.html#a1e510c53624933ce9b7d6715784894db">magic_link()</a>, <a class="el" href="mail_8php.html#a3c7c485fc69f92371e8b20936040eca1">mail_content()</a>, <a class="el" href="contact__selectors_8php.html#ad472e4716426dd1a9dd77b62962454be">network_to_name()</a>, <a class="el" href="text_8php.html#adba17ec946f4285285dc100f7860bf51">normalise_openid()</a>, <a class="el" href="boot_8php.html#a9255af5ae9c887520091ea04763c1a88">notice()</a>, <a class="el" href="notifier_8php.html#a568c502f626cff95e344c0748938b85d">notifier_run()</a>, <a class="el" href="include_2oembed_8php.html#a9e57f3e36a0a0a47e6db79544b701d9a">oembed_iframe()</a>, <a class="el" href="include_2oembed_8php.html#a00c4c80deffd9daf8dc97b58d4c64ed0">oembed_replacecb()</a>, <a class="el" href="oexchange_8php.html#a2d8b785cd7d041a4e6274f5af370cf26">oexchange_content()</a>, <a class="el" href="include_2network_8php.html#a27a951b59d8d622c0b3e7b0673ba74c6">parse_xml_string()</a>, <a class="el" href="mod_2photos_8php.html#a062bed4d04d14fee8a53f4c9be673080">photos_post()</a>, <a class="el" href="socgraph_8php.html#a5ef8bef37161df53718a21e93d02fbd6">poco_load()</a>, <a class="el" href="text_8php.html#ae4df74296fbe55051ed3c035e55205e5">prepare_body()</a>, <a class="el" href="tpldebug_8php.html#a44778457a6c02554812fbfad19d32ba3">print_template()</a>, <a class="el" href="include_2message_8php.html#a5f8de9847e203329e317ac38dc646898">private_messages_fetch_conversation()</a>, <a class="el" href="include_2message_8php.html#a254a756031e4d5e94f85e2939bdb5091">private_messages_fetch_message()</a>, <a class="el" href="include_2message_8php.html#a652973ce47a262f2d238c2fd6233d97e">private_messages_list()</a>, <a class="el" href="text_8php.html#a4e7698aca48982512594b274543c3b9b">protect_sprintf()</a>, <a class="el" href="text_8php.html#a4841df5beabdd1bdd1ed56781a915d61">purify_html()</a>, <a class="el" href="text_8php.html#afc998d2796a6b2a08e96f7cc061e7221">qp()</a>, <a class="el" href="text_8php.html#a9d6a5ee1290de7a8b483fe78585daade">random_string()</a>, <a class="el" href="refimport_8php.html#ad97ebb5feda0230a4834e0b3637a0d29">refimport_content()</a>, <a class="el" href="classTemplate.html#a285b5b2007dbbf733476273df3fed4ef">Template\replace()</a>, <a class="el" href="text_8php.html#a9c6ce4e12a4ac883c5e3f36fed6e1e09">replace_macros()</a>, <a class="el" href="classFriendicaSmartyEngine.html#ad62f1181d2f02b54b46731ad2bd46db2">FriendicaSmartyEngine\replace_macros()</a>, <a class="el" href="classTemplate.html#a07737733f6949bdedea1e3d301b2ab7b">Template\replace_macros()</a>, <a class="el" href="include_2network_8php.html#ae8d9c41a11000fb8667039fc71b4f73f">scale_external_images()</a>, <a class="el" href="include_2network_8php.html#a316f318167a039c89719afbd129a8f3c">scrape_feed()</a>, <a class="el" href="include_2network_8php.html#acb0bd7f5fe38ff1eaebeae3284525070">scrape_vcard()</a>, <a class="el" href="text_8php.html#a876e94892867019935b348b573299352">search()</a>, <a class="el" href="text_8php.html#aae91e4d2a2c6f7a9daccd2c186ae3447">searchbox()</a>, <a class="el" href="siteinfo_8php.html#a70c09bfb6dd1c86a125a35f62ed53656">siteinfo_content()</a>, <a class="el" href="text_8php.html#a3d225b253bb9e0f2498c11647d927b0b">smilies()</a>, <a class="el" href="text_8php.html#a33bdb5d4bfff2ede7caf61a98ac0a2e9">sslify()</a>, <a class="el" href="spam_8php.html#a05861201147b9a538d006f0269255cf9">string_splitter()</a>, <a class="el" href="text_8php.html#a2f2585385530cb935a6325c809d84a4d">strip_zids()</a>, <a class="el" href="bb2diaspora_8php.html#a180b0e3a7d702998be19e3c3b44b0e93">stripdcode_br_cb()</a>, <a class="el" href="language_8php.html#ac6ae482ee54fa2764d5c2e77305aeb96">t()</a>, <a class="el" href="template__processor_8php.html#ab2bcd8738f20f293636a6ae8e1099db5">template_escape()</a>, <a class="el" href="template__processor_8php.html#ac635bb19a5f6eadd6b0cddefdd537c1e">template_unescape()</a>, <a class="el" href="taxonomy_8php.html#a7a913d19c77610da689be48fbbf6734c">term_query()</a>, <a class="el" href="text_8php.html#af9c9ac3f74c82dc60acfa404d0e9dc53">theme_attachments()</a>, <a class="el" href="text_8php.html#a29d6b804e368d3ef359ee295e96ed4c7">unamp()</a>, <a class="el" href="text_8php.html#a740ad03e00459039a2c0992246c4e727">undo_post_tagging()</a>, <a class="el" href="text_8php.html#a1360fed7f918d859daaca1c9f384f9af">unxmlify()</a>, <a class="el" href="statistics__fns_8php.html#a82726229a961d3bd3d543005c61dd8e6">update_channels_active_halfyear_stat()</a>, <a class="el" href="statistics__fns_8php.html#ad2b7b595c039c4c2eb0d6cd57a393dfe">update_channels_active_monthly_stat()</a>, <a class="el" href="classTemplate.html#abbc484016ddf5d818f55b823cae6feb0">Template\var_replace()</a>, <a class="el" href="include_2network_8php.html#a3e6c751a51de33ad3563f0938296e78a">webfinger_rfc7033()</a>, <a class="el" href="boot_8php.html#ae97836b0547953be182a2334c9c91d3c">x()</a>, <a class="el" href="xchan_8php.html#a9853348bf1a35c644460221ba75edc2d">xchan_content()</a>, <a class="el" href="include_2network_8php.html#aafd06c0a75402aefb06cfb9f9740fa37">z_fetch_url()</a>, <a class="el" href="text_8php.html#a324c58f37f6acdf9cd1922aa76077d9f">z_input_filter()</a>, <a class="el" href="include_2network_8php.html#a9129fd55e7fc175b4ea9a195cccc16bc">z_post_url()</a>, <a class="el" href="zfinger_8php.html#a8139b83a22ef98869adc10aa224027a0">zfinger_init()</a>, and <a class="el" href="identity_8php.html#a5b815330f3d177ab383af37a6c12e532">zid()</a>.</p>
</div>
</div>
diff --git a/doc/html/fbrowser_8php.html b/doc/html/fbrowser_8php.html
index 0ccc72963..a94a434cf 100644
--- a/doc/html/fbrowser_8php.html
+++ b/doc/html/fbrowser_8php.html
@@ -137,7 +137,7 @@ Functions</h2></td></tr>
</div><div class="memdoc">
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
- <tr><td class="paramtype"><a class="el" href="classApp.html">App</a></td><td class="paramname">$a</td><td></td></tr>
+ <tr><td class="paramtype"><a class="el" href="classApp.html" title="Our main application structure for the life of this page.">App</a></td><td class="paramname">$a</td><td></td></tr>
</table>
</dd>
</dl>
diff --git a/doc/html/features_8php.html b/doc/html/features_8php.html
index 027ede8ab..7ec917b62 100644
--- a/doc/html/features_8php.html
+++ b/doc/html/features_8php.html
@@ -142,7 +142,7 @@ Functions</h2></td></tr>
</table>
</div><div class="memdoc">
-<p>Referenced by <a class="el" href="include_2apps_8php.html#a1b2e737f477a2e0d9d11ef14adc5aa66">app_render()</a>, <a class="el" href="view_2theme_2apw_2php_2config_8php.html#ad59fc09da66b66267f9753c8b2dd68d0">apw_form()</a>, <a class="el" href="contact__widgets_8php.html#a165eb021e61c4dcab2a552f28628d353">categories_widget()</a>, <a class="el" href="connedit_8php.html#a795acb3d9d841f55c255d7611681ab67">connedit_content()</a>, <a class="el" href="conversation_8php.html#affea1afb3f32ca41e966c8ddb4204d81">conversation()</a>, <a class="el" href="editblock_8php.html#abbe8f55de06967bc8d79d620509a49e6">editblock_content()</a>, <a class="el" href="editlayout_8php.html#aa877e4157a26b099de904164181dd386">editlayout_content()</a>, <a class="el" href="editpost_8php.html#a34011690864d122680c802e9e748ccfb">editpost_content()</a>, <a class="el" href="editwebpage_8php.html#a375e945255fad79a71036528f7480650">editwebpage_content()</a>, <a class="el" href="classItem.html#a3ee7667c2ec6cd7657328e27848c0bdf">Item\get_comment_box()</a>, <a class="el" href="classItem.html#ad5dcbe0b94cb2d5719bc5b6bd8ad60c8">Item\get_template_data()</a>, <a class="el" href="item_8php.html#a693cd09805755ab85bbb5ecae69a48c3">item_post()</a>, <a class="el" href="mail_8php.html#a3c7c485fc69f92371e8b20936040eca1">mail_content()</a>, <a class="el" href="nav_8php.html#a43be0df73b90647ea70947ce004e231e">nav()</a>, <a class="el" href="include_2apps_8php.html#a32fe4ed9666228fd4b67dc487cc57a83">parse_app_description()</a>, <a class="el" href="identity_8php.html#a432259b2cf5b6f59be53e71db9f2c7dc">profile_sidebar()</a>, <a class="el" href="view_2theme_2redbasic_2php_2config_8php.html#a8574a41fa9735ee391ba57ab24b93793">redbasic_form()</a>, <a class="el" href="text_8php.html#a876e94892867019935b348b573299352">search()</a>, <a class="el" href="search_8php.html#ab2568591359edde5b483a6cd9a24b2cc">search_content()</a>, <a class="el" href="text_8php.html#aae91e4d2a2c6f7a9daccd2c186ae3447">searchbox()</a>, <a class="el" href="sources_8php.html#ac442ccef080ab95772d8929fcafcb4b7">sources_content()</a>, <a class="el" href="sources_8php.html#ac73298ff162ce7b2de8dcaf3d3305b1e">sources_post()</a>, <a class="el" href="thing_8php.html#a24a35f1e64029a67fdbea94a776ae04b">thing_content()</a>, <a class="el" href="widgets_8php.html#add9b24d3304e529a7975e96122315554">widget_affinity()</a>, <a class="el" href="widgets_8php.html#a7b1e357b5a2027718470b77ec921fc65">widget_archive()</a>, <a class="el" href="widgets_8php.html#a45ea061dabe9a8372e4ca3b9e5714256">widget_notes()</a>, <a class="el" href="widgets_8php.html#a94203eb9bcd63cbdecbbcb15163598d8">widget_savedsearch()</a>, <a class="el" href="widgets_8php.html#aaa73bcf1702eaadd9dcd253502f55e01">widget_settings_menu()</a>, <a class="el" href="widgets_8php.html#a0d404276fedc59f5038cf5c085028326">widget_suggestions()</a>, and <a class="el" href="widgets_8php.html#ae4ced69d83dbdd9e6b51660d9eba8653">widget_tagcloud_wall()</a>.</p>
+<p>Referenced by <a class="el" href="include_2apps_8php.html#a1b2e737f477a2e0d9d11ef14adc5aa66">app_render()</a>, <a class="el" href="view_2theme_2apw_2php_2config_8php.html#ad59fc09da66b66267f9753c8b2dd68d0">apw_form()</a>, <a class="el" href="blocks_8php.html#a2531a8fd51db3cecb2eb20c002c66e12">blocks_content()</a>, <a class="el" href="contact__widgets_8php.html#a165eb021e61c4dcab2a552f28628d353">categories_widget()</a>, <a class="el" href="connedit_8php.html#a795acb3d9d841f55c255d7611681ab67">connedit_content()</a>, <a class="el" href="conversation_8php.html#affea1afb3f32ca41e966c8ddb4204d81">conversation()</a>, <a class="el" href="editpost_8php.html#a34011690864d122680c802e9e748ccfb">editpost_content()</a>, <a class="el" href="events_8php.html#a1d293fb217ae6bc9e3858c4b32e363ec">events_content()</a>, <a class="el" href="classItem.html#a3ee7667c2ec6cd7657328e27848c0bdf">Item\get_comment_box()</a>, <a class="el" href="classItem.html#ad5dcbe0b94cb2d5719bc5b6bd8ad60c8">Item\get_template_data()</a>, <a class="el" href="item_8php.html#a693cd09805755ab85bbb5ecae69a48c3">item_post()</a>, <a class="el" href="mail_8php.html#a3c7c485fc69f92371e8b20936040eca1">mail_content()</a>, <a class="el" href="nav_8php.html#a43be0df73b90647ea70947ce004e231e">nav()</a>, <a class="el" href="include_2apps_8php.html#a32fe4ed9666228fd4b67dc487cc57a83">parse_app_description()</a>, <a class="el" href="identity_8php.html#a4751b522ea913d0e7ed43e03d22e9e68">profile_load()</a>, <a class="el" href="identity_8php.html#a432259b2cf5b6f59be53e71db9f2c7dc">profile_sidebar()</a>, <a class="el" href="profiles_8php.html#a46975783b8b8d70402d51487eb1f0b00">profiles_content()</a>, <a class="el" href="profiles_8php.html#a36f71405ad536228f8bb84a551b23f7e">profiles_init()</a>, <a class="el" href="profiles_8php.html#ab0362c81b1d3b0b12a772b9fac446e04">profiles_post()</a>, <a class="el" href="view_2theme_2redbasic_2php_2config_8php.html#a8574a41fa9735ee391ba57ab24b93793">redbasic_form()</a>, <a class="el" href="text_8php.html#a876e94892867019935b348b573299352">search()</a>, <a class="el" href="search_8php.html#ab2568591359edde5b483a6cd9a24b2cc">search_content()</a>, <a class="el" href="text_8php.html#aae91e4d2a2c6f7a9daccd2c186ae3447">searchbox()</a>, <a class="el" href="sources_8php.html#ac442ccef080ab95772d8929fcafcb4b7">sources_content()</a>, <a class="el" href="sources_8php.html#ac73298ff162ce7b2de8dcaf3d3305b1e">sources_post()</a>, <a class="el" href="thing_8php.html#a24a35f1e64029a67fdbea94a776ae04b">thing_content()</a>, <a class="el" href="webpages_8php.html#af3b7397d4abc153e3d2147740ee1a41d">webpages_content()</a>, <a class="el" href="widgets_8php.html#add9b24d3304e529a7975e96122315554">widget_affinity()</a>, <a class="el" href="widgets_8php.html#a7b1e357b5a2027718470b77ec921fc65">widget_archive()</a>, <a class="el" href="widgets_8php.html#a45ea061dabe9a8372e4ca3b9e5714256">widget_notes()</a>, <a class="el" href="widgets_8php.html#a94203eb9bcd63cbdecbbcb15163598d8">widget_savedsearch()</a>, <a class="el" href="widgets_8php.html#aaa73bcf1702eaadd9dcd253502f55e01">widget_settings_menu()</a>, <a class="el" href="widgets_8php.html#a0d404276fedc59f5038cf5c085028326">widget_suggestions()</a>, and <a class="el" href="widgets_8php.html#ae4ced69d83dbdd9e6b51660d9eba8653">widget_tagcloud_wall()</a>.</p>
</div>
</div>
@@ -159,6 +159,8 @@ Functions</h2></td></tr>
</table>
</div><div class="memdoc">
+<p>Referenced by <a class="el" href="settings_8php.html#aa7ee94d88ac088edb04ccf3a26de3586">settings_post()</a>.</p>
+
</div>
</div>
</div><!-- contents -->
diff --git a/doc/html/files.html b/doc/html/files.html
index 3f12e7398..c711be295 100644
--- a/doc/html/files.html
+++ b/doc/html/files.html
@@ -108,93 +108,105 @@ $(document).ready(function(){initNavTree('files.html','');});
</div><!--header-->
<div class="contents">
<div class="textblock">Here is a list of all files with brief descriptions:</div><div class="directory">
-<div class="levels">[detail level <span onclick="javascript:toggleLevel(1);">1</span><span onclick="javascript:toggleLevel(2);">2</span><span onclick="javascript:toggleLevel(3);">3</span><span onclick="javascript:toggleLevel(4);">4</span><span onclick="javascript:toggleLevel(5);">5</span><span onclick="javascript:toggleLevel(6);">6</span><span onclick="javascript:toggleLevel(7);">7</span>]</div><table class="directory">
+<div class="levels">[detail level <span onclick="javascript:toggleLevel(1);">1</span><span onclick="javascript:toggleLevel(2);">2</span><span onclick="javascript:toggleLevel(3);">3</span><span onclick="javascript:toggleLevel(4);">4</span><span onclick="javascript:toggleLevel(5);">5</span>]</div><table class="directory">
<tr id="row_0_" class="even"><td class="entry"><img id="arr_0_" src="ftv2pnode.png" alt="o" width="16" height="22" onclick="toggleFolder('0_')"/><img id="img_0_" src="ftv2folderclosed.png" alt="+" width="24" height="22" onclick="toggleFolder('0_')"/><a class="el" href="dir_d44c64559bbebec7f509842c48db8b23.html" target="_self">include</a></td><td class="desc"></td></tr>
<tr id="row_0_0_" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img id="arr_0_0_" src="ftv2pnode.png" alt="o" width="16" height="22" onclick="toggleFolder('0_0_')"/><img id="img_0_0_" src="ftv2folderclosed.png" alt="+" width="24" height="22" onclick="toggleFolder('0_0_')"/><a class="el" href="dir_21bc5169ff11430004758be31dcfc6c4.html" target="_self">dba</a></td><td class="desc"></td></tr>
-<tr id="row_0_0_0_" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2doc.png" alt="*" width="24" height="22" /><a class="el" href="dba__driver_8php.html" target="_self">dba_driver.php</a></td><td class="desc"></td></tr>
+<tr id="row_0_0_0_" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2doc.png" alt="*" width="24" height="22" /><a class="el" href="dba__driver_8php.html" target="_self">dba_driver.php</a></td><td class="desc">Some database related functions and abstract driver class</td></tr>
<tr id="row_0_0_1_" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2doc.png" alt="*" width="24" height="22" /><a class="el" href="dba__mysql_8php.html" target="_self">dba_mysql.php</a></td><td class="desc"></td></tr>
-<tr id="row_0_0_2_" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2lastnode.png" alt="\" width="16" height="22" /><img src="ftv2doc.png" alt="*" width="24" height="22" /><a class="el" href="dba__mysqli_8php.html" target="_self">dba_mysqli.php</a></td><td class="desc"></td></tr>
-<tr id="row_0_1_" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img id="arr_0_1_" src="ftv2pnode.png" alt="o" width="16" height="22" onclick="toggleFolder('0_1_')"/><img id="img_0_1_" src="ftv2folderclosed.png" alt="+" width="24" height="22" onclick="toggleFolder('0_1_')"/><a class="el" href="dir_aae29906d7bfc07d076125f669c8352e.html" target="_self">photo</a></td><td class="desc"></td></tr>
-<tr id="row_0_1_0_" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2doc.png" alt="*" width="24" height="22" /><a class="el" href="photo__driver_8php.html" target="_self">photo_driver.php</a></td><td class="desc"></td></tr>
-<tr id="row_0_1_1_" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2doc.png" alt="*" width="24" height="22" /><a class="el" href="photo__gd_8php.html" target="_self">photo_gd.php</a></td><td class="desc"></td></tr>
-<tr id="row_0_1_2_" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2lastnode.png" alt="\" width="16" height="22" /><img src="ftv2doc.png" alt="*" width="24" height="22" /><a class="el" href="photo__imagick_8php.html" target="_self">photo_imagick.php</a></td><td class="desc"></td></tr>
-<tr id="row_0_2_" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2doc.png" alt="*" width="24" height="22" /><a class="el" href="account_8php.html" target="_self">account.php</a></td><td class="desc"></td></tr>
-<tr id="row_0_3_" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2doc.png" alt="*" width="24" height="22" /><a class="el" href="acl__selectors_8php.html" target="_self">acl_selectors.php</a></td><td class="desc"></td></tr>
-<tr id="row_0_4_" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2doc.png" alt="*" width="24" height="22" /><a class="el" href="activities_8php.html" target="_self">activities.php</a></td><td class="desc"></td></tr>
-<tr id="row_0_5_" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2doc.png" alt="*" width="24" height="22" /><a class="el" href="include_2api_8php.html" target="_self">api.php</a></td><td class="desc"></td></tr>
-<tr id="row_0_6_" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2doc.png" alt="*" width="24" height="22" /><a class="el" href="include_2apps_8php.html" target="_self">apps.php</a></td><td class="desc"></td></tr>
-<tr id="row_0_7_" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2doc.png" alt="*" width="24" height="22" /><a class="el" href="include_2attach_8php.html" target="_self">attach.php</a></td><td class="desc">File/attach API with the potential for revision control</td></tr>
-<tr id="row_0_8_" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2doc.png" alt="*" width="24" height="22" /><a class="el" href="auth_8php.html" target="_self">auth.php</a></td><td class="desc"></td></tr>
-<tr id="row_0_9_" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2doc.png" alt="*" width="24" height="22" /><a class="el" href="BaseObject_8php.html" target="_self">BaseObject.php</a></td><td class="desc"></td></tr>
-<tr id="row_0_10_" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2doc.png" alt="*" width="24" height="22" /><a class="el" href="bb2diaspora_8php.html" target="_self">bb2diaspora.php</a></td><td class="desc"></td></tr>
-<tr id="row_0_11_" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2doc.png" alt="*" width="24" height="22" /><a class="el" href="bbcode_8php.html" target="_self">bbcode.php</a></td><td class="desc"></td></tr>
-<tr id="row_0_12_" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2doc.png" alt="*" width="24" height="22" /><a class="el" href="include_2bookmarks_8php.html" target="_self">bookmarks.php</a></td><td class="desc"></td></tr>
-<tr id="row_0_13_" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2doc.png" alt="*" width="24" height="22" /><a class="el" href="cache_8php.html" target="_self">cache.php</a></td><td class="desc"></td></tr>
-<tr id="row_0_14_" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2doc.png" alt="*" width="24" height="22" /><a class="el" href="include_2chanman_8php.html" target="_self">chanman.php</a></td><td class="desc"></td></tr>
-<tr id="row_0_15_" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2doc.png" alt="*" width="24" height="22" /><a class="el" href="include_2chat_8php.html" target="_self">chat.php</a></td><td class="desc"></td></tr>
-<tr id="row_0_16_" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2doc.png" alt="*" width="24" height="22" /><a class="el" href="cli__startup_8php.html" target="_self">cli_startup.php</a></td><td class="desc"></td></tr>
-<tr id="row_0_17_" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2doc.png" alt="*" width="24" height="22" /><a class="el" href="cli__suggest_8php.html" target="_self">cli_suggest.php</a></td><td class="desc"></td></tr>
-<tr id="row_0_18_" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2doc.png" alt="*" width="24" height="22" /><a class="el" href="comanche_8php.html" target="_self">comanche.php</a></td><td class="desc"></td></tr>
-<tr id="row_0_19_" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2doc.png" alt="*" width="24" height="22" /><a class="el" href="include_2config_8php.html" target="_self">config.php</a></td><td class="desc"></td></tr>
-<tr id="row_0_20_" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2doc.png" alt="*" width="24" height="22" /><a class="el" href="Contact_8php.html" target="_self">Contact.php</a></td><td class="desc"></td></tr>
-<tr id="row_0_21_" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2doc.png" alt="*" width="24" height="22" /><a class="el" href="contact__selectors_8php.html" target="_self">contact_selectors.php</a></td><td class="desc"></td></tr>
-<tr id="row_0_22_" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2doc.png" alt="*" width="24" height="22" /><a class="el" href="contact__widgets_8php.html" target="_self">contact_widgets.php</a></td><td class="desc"></td></tr>
-<tr id="row_0_23_" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2doc.png" alt="*" width="24" height="22" /><a class="el" href="conversation_8php.html" target="_self">conversation.php</a></td><td class="desc"></td></tr>
-<tr id="row_0_24_" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2doc.png" alt="*" width="24" height="22" /><a class="el" href="ConversationObject_8php.html" target="_self">ConversationObject.php</a></td><td class="desc"></td></tr>
-<tr id="row_0_25_" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2doc.png" alt="*" width="24" height="22" /><a class="el" href="cronhooks_8php.html" target="_self">cronhooks.php</a></td><td class="desc"></td></tr>
-<tr id="row_0_26_" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2doc.png" alt="*" width="24" height="22" /><a class="el" href="crypto_8php.html" target="_self">crypto.php</a></td><td class="desc"></td></tr>
-<tr id="row_0_27_" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2doc.png" alt="*" width="24" height="22" /><a class="el" href="datetime_8php.html" target="_self">datetime.php</a></td><td class="desc"></td></tr>
-<tr id="row_0_28_" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2doc.png" alt="*" width="24" height="22" /><a class="el" href="deliver_8php.html" target="_self">deliver.php</a></td><td class="desc"></td></tr>
-<tr id="row_0_29_" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2doc.png" alt="*" width="24" height="22" /><a class="el" href="dir__fns_8php.html" target="_self">dir_fns.php</a></td><td class="desc"></td></tr>
-<tr id="row_0_30_" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2doc.png" alt="*" width="24" height="22" /><a class="el" href="include_2directory_8php.html" target="_self">directory.php</a></td><td class="desc"></td></tr>
-<tr id="row_0_31_" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2doc.png" alt="*" width="24" height="22" /><a class="el" href="enotify_8php.html" target="_self">enotify.php</a></td><td class="desc"></td></tr>
-<tr id="row_0_32_" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2doc.png" alt="*" width="24" height="22" /><a class="el" href="event_8php.html" target="_self">event.php</a></td><td class="desc"></td></tr>
-<tr id="row_0_33_" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2doc.png" alt="*" width="24" height="22" /><a class="el" href="expire_8php.html" target="_self">expire.php</a></td><td class="desc"></td></tr>
-<tr id="row_0_34_" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2doc.png" alt="*" width="24" height="22" /><a class="el" href="externals_8php.html" target="_self">externals.php</a></td><td class="desc"></td></tr>
-<tr id="row_0_35_" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2doc.png" alt="*" width="24" height="22" /><a class="el" href="features_8php.html" target="_self">features.php</a></td><td class="desc"></td></tr>
-<tr id="row_0_36_" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2doc.png" alt="*" width="24" height="22" /><a class="el" href="include_2follow_8php.html" target="_self">follow.php</a></td><td class="desc"></td></tr>
-<tr id="row_0_37_" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2doc.png" alt="*" width="24" height="22" /><a class="el" href="friendica__smarty_8php.html" target="_self">friendica_smarty.php</a></td><td class="desc"></td></tr>
-<tr id="row_0_38_" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2doc.png" alt="*" width="24" height="22" /><a class="el" href="gprobe_8php.html" target="_self">gprobe.php</a></td><td class="desc"></td></tr>
-<tr id="row_0_39_" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2doc.png" alt="*" width="24" height="22" /><a class="el" href="include_2group_8php.html" target="_self">group.php</a></td><td class="desc"></td></tr>
-<tr id="row_0_40_" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2doc.png" alt="*" width="24" height="22" /><a class="el" href="html2bbcode_8php.html" target="_self">html2bbcode.php</a></td><td class="desc"></td></tr>
-<tr id="row_0_41_" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2doc.png" alt="*" width="24" height="22" /><a class="el" href="html2plain_8php.html" target="_self">html2plain.php</a></td><td class="desc"></td></tr>
-<tr id="row_0_42_" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2doc.png" alt="*" width="24" height="22" /><a class="el" href="hubloc_8php.html" target="_self">hubloc.php</a></td><td class="desc"></td></tr>
-<tr id="row_0_43_" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2doc.png" alt="*" width="24" height="22" /><a class="el" href="identity_8php.html" target="_self">identity.php</a></td><td class="desc"></td></tr>
-<tr id="row_0_44_" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2doc.png" alt="*" width="24" height="22" /><a class="el" href="ItemObject_8php.html" target="_self">ItemObject.php</a></td><td class="desc"></td></tr>
-<tr id="row_0_45_" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2doc.png" alt="*" width="24" height="22" /><a class="el" href="ITemplateEngine_8php.html" target="_self">ITemplateEngine.php</a></td><td class="desc"></td></tr>
-<tr id="row_0_46_" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2doc.png" alt="*" width="24" height="22" /><a class="el" href="items_8php.html" target="_self">items.php</a></td><td class="desc"></td></tr>
-<tr id="row_0_47_" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2doc.png" alt="*" width="24" height="22" /><a class="el" href="language_8php.html" target="_self">language.php</a></td><td class="desc">Translation support</td></tr>
-<tr id="row_0_48_" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2doc.png" alt="*" width="24" height="22" /><a class="el" href="include_2menu_8php.html" target="_self">menu.php</a></td><td class="desc"></td></tr>
-<tr id="row_0_49_" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2doc.png" alt="*" width="24" height="22" /><a class="el" href="include_2message_8php.html" target="_self">message.php</a></td><td class="desc"></td></tr>
-<tr id="row_0_50_" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2doc.png" alt="*" width="24" height="22" /><a class="el" href="nav_8php.html" target="_self">nav.php</a></td><td class="desc"></td></tr>
-<tr id="row_0_51_" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2doc.png" alt="*" width="24" height="22" /><a class="el" href="include_2network_8php.html" target="_self">network.php</a></td><td class="desc"></td></tr>
-<tr id="row_0_52_" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2doc.png" alt="*" width="24" height="22" /><a class="el" href="notifier_8php.html" target="_self">notifier.php</a></td><td class="desc"></td></tr>
-<tr id="row_0_53_" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2doc.png" alt="*" width="24" height="22" /><a class="el" href="include_2notify_8php.html" target="_self">notify.php</a></td><td class="desc"></td></tr>
-<tr id="row_0_54_" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2doc.png" alt="*" width="24" height="22" /><a class="el" href="oauth_8php.html" target="_self">oauth.php</a></td><td class="desc"></td></tr>
-<tr id="row_0_55_" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2doc.png" alt="*" width="24" height="22" /><a class="el" href="include_2oembed_8php.html" target="_self">oembed.php</a></td><td class="desc"></td></tr>
-<tr id="row_0_56_" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2doc.png" alt="*" width="24" height="22" /><a class="el" href="onedirsync_8php.html" target="_self">onedirsync.php</a></td><td class="desc"></td></tr>
-<tr id="row_0_57_" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2doc.png" alt="*" width="24" height="22" /><a class="el" href="onepoll_8php.html" target="_self">onepoll.php</a></td><td class="desc"></td></tr>
-<tr id="row_0_58_" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2doc.png" alt="*" width="24" height="22" /><a class="el" href="page__widgets_8php.html" target="_self">page_widgets.php</a></td><td class="desc"></td></tr>
-<tr id="row_0_59_" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2doc.png" alt="*" width="24" height="22" /><a class="el" href="permissions_8php.html" target="_self">permissions.php</a></td><td class="desc"></td></tr>
-<tr id="row_0_60_" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2doc.png" alt="*" width="24" height="22" /><a class="el" href="include_2photos_8php.html" target="_self">photos.php</a></td><td class="desc"></td></tr>
-<tr id="row_0_61_" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2doc.png" alt="*" width="24" height="22" /><a class="el" href="plugin_8php.html" target="_self">plugin.php</a></td><td class="desc">Some functions to handle addons and themes</td></tr>
-<tr id="row_0_62_" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2doc.png" alt="*" width="24" height="22" /><a class="el" href="poller_8php.html" target="_self">poller.php</a></td><td class="desc"></td></tr>
-<tr id="row_0_63_" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2doc.png" alt="*" width="24" height="22" /><a class="el" href="include_2probe_8php.html" target="_self">probe.php</a></td><td class="desc"></td></tr>
-<tr id="row_0_64_" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2doc.png" alt="*" width="24" height="22" /><a class="el" href="profile__selectors_8php.html" target="_self">profile_selectors.php</a></td><td class="desc"></td></tr>
-<tr id="row_0_65_" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2doc.png" alt="*" width="24" height="22" /><a class="el" href="ProtoDriver_8php.html" target="_self">ProtoDriver.php</a></td><td class="desc"></td></tr>
-<tr id="row_0_66_" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2doc.png" alt="*" width="24" height="22" /><a class="el" href="queue_8php.html" target="_self">queue.php</a></td><td class="desc"></td></tr>
-<tr id="row_0_67_" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2doc.png" alt="*" width="24" height="22" /><a class="el" href="queue__fn_8php.html" target="_self">queue_fn.php</a></td><td class="desc"></td></tr>
-<tr id="row_0_68_" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2doc.png" alt="*" width="24" height="22" /><a class="el" href="reddav_8php.html" target="_self">reddav.php</a></td><td class="desc">DAV related classes from SabreDAV for Red Matrix</td></tr>
-<tr id="row_0_69_" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2doc.png" alt="*" width="24" height="22" /><a class="el" href="security_8php.html" target="_self">security.php</a></td><td class="desc"></td></tr>
-<tr id="row_0_70_" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2doc.png" alt="*" width="24" height="22" /><a class="el" href="session_8php.html" target="_self">session.php</a></td><td class="desc"></td></tr>
-<tr id="row_0_71_" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2doc.png" alt="*" width="24" height="22" /><a class="el" href="socgraph_8php.html" target="_self">socgraph.php</a></td><td class="desc"></td></tr>
-<tr id="row_0_72_" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2doc.png" alt="*" width="24" height="22" /><a class="el" href="spam_8php.html" target="_self">spam.php</a></td><td class="desc"></td></tr>
-<tr id="row_0_73_" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2doc.png" alt="*" width="24" height="22" /><a class="el" href="system__unavailable_8php.html" target="_self">system_unavailable.php</a></td><td class="desc"></td></tr>
-<tr id="row_0_74_" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2doc.png" alt="*" width="24" height="22" /><a class="el" href="taxonomy_8php.html" target="_self">taxonomy.php</a></td><td class="desc"></td></tr>
-<tr id="row_0_75_" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2doc.png" alt="*" width="24" height="22" /><a class="el" href="template__processor_8php.html" target="_self">template_processor.php</a></td><td class="desc"></td></tr>
-<tr id="row_0_76_" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2doc.png" alt="*" width="24" height="22" /><a class="el" href="text_8php.html" target="_self">text.php</a></td><td class="desc"></td></tr>
-<tr id="row_0_77_" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2doc.png" alt="*" width="24" height="22" /><a class="el" href="widgets_8php.html" target="_self">widgets.php</a></td><td class="desc"></td></tr>
-<tr id="row_0_78_" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2lastnode.png" alt="\" width="16" height="22" /><img src="ftv2doc.png" alt="*" width="24" height="22" /><a class="el" href="zot_8php.html" target="_self">zot.php</a></td><td class="desc"></td></tr>
+<tr id="row_0_0_2_" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2doc.png" alt="*" width="24" height="22" /><a class="el" href="dba__mysqli_8php.html" target="_self">dba_mysqli.php</a></td><td class="desc"></td></tr>
+<tr id="row_0_0_3_" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2lastnode.png" alt="\" width="16" height="22" /><img src="ftv2doc.png" alt="*" width="24" height="22" /><a class="el" href="dba__postgres_8php.html" target="_self">dba_postgres.php</a></td><td class="desc"></td></tr>
+<tr id="row_0_1_" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img id="arr_0_1_" src="ftv2pnode.png" alt="o" width="16" height="22" onclick="toggleFolder('0_1_')"/><img id="img_0_1_" src="ftv2folderclosed.png" alt="+" width="24" height="22" onclick="toggleFolder('0_1_')"/><a class="el" href="dir_7edbbd0f8c514efef79942dcdc21f738.html" target="_self">Import</a></td><td class="desc"></td></tr>
+<tr id="row_0_1_0_" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2doc.png" alt="*" width="24" height="22" /><a class="el" href="Importer_8php.html" target="_self">Importer.php</a></td><td class="desc"></td></tr>
+<tr id="row_0_1_1_" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2lastnode.png" alt="\" width="16" height="22" /><img src="ftv2doc.png" alt="*" width="24" height="22" /><a class="el" href="refimport_8php.html" target="_self">refimport.php</a></td><td class="desc"></td></tr>
+<tr id="row_0_2_" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img id="arr_0_2_" src="ftv2pnode.png" alt="o" width="16" height="22" onclick="toggleFolder('0_2_')"/><img id="img_0_2_" src="ftv2folderclosed.png" alt="+" width="24" height="22" onclick="toggleFolder('0_2_')"/><a class="el" href="dir_aae29906d7bfc07d076125f669c8352e.html" target="_self">photo</a></td><td class="desc"></td></tr>
+<tr id="row_0_2_0_" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2doc.png" alt="*" width="24" height="22" /><a class="el" href="photo__driver_8php.html" target="_self">photo_driver.php</a></td><td class="desc"></td></tr>
+<tr id="row_0_2_1_" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2doc.png" alt="*" width="24" height="22" /><a class="el" href="photo__gd_8php.html" target="_self">photo_gd.php</a></td><td class="desc"></td></tr>
+<tr id="row_0_2_2_" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2lastnode.png" alt="\" width="16" height="22" /><img src="ftv2doc.png" alt="*" width="24" height="22" /><a class="el" href="photo__imagick_8php.html" target="_self">photo_imagick.php</a></td><td class="desc"></td></tr>
+<tr id="row_0_3_" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img id="arr_0_3_" src="ftv2pnode.png" alt="o" width="16" height="22" onclick="toggleFolder('0_3_')"/><img id="img_0_3_" src="ftv2folderclosed.png" alt="+" width="24" height="22" onclick="toggleFolder('0_3_')"/><a class="el" href="dir_e7f045be8bb383d8447c6a6b84145083.html" target="_self">RedDAV</a></td><td class="desc"></td></tr>
+<tr id="row_0_3_0_" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2doc.png" alt="*" width="24" height="22" /><a class="el" href="RedBasicAuth_8php.html" target="_self">RedBasicAuth.php</a></td><td class="desc"></td></tr>
+<tr id="row_0_3_1_" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2doc.png" alt="*" width="24" height="22" /><a class="el" href="RedBrowser_8php.html" target="_self">RedBrowser.php</a></td><td class="desc"></td></tr>
+<tr id="row_0_3_2_" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2doc.png" alt="*" width="24" height="22" /><a class="el" href="RedDirectory_8php.html" target="_self">RedDirectory.php</a></td><td class="desc"></td></tr>
+<tr id="row_0_3_3_" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2lastnode.png" alt="\" width="16" height="22" /><img src="ftv2doc.png" alt="*" width="24" height="22" /><a class="el" href="RedFile_8php.html" target="_self">RedFile.php</a></td><td class="desc"></td></tr>
+<tr id="row_0_4_" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2doc.png" alt="*" width="24" height="22" /><a class="el" href="account_8php.html" target="_self">account.php</a></td><td class="desc"></td></tr>
+<tr id="row_0_5_" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2doc.png" alt="*" width="24" height="22" /><a class="el" href="acl__selectors_8php.html" target="_self">acl_selectors.php</a></td><td class="desc"></td></tr>
+<tr id="row_0_6_" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2doc.png" alt="*" width="24" height="22" /><a class="el" href="activities_8php.html" target="_self">activities.php</a></td><td class="desc"></td></tr>
+<tr id="row_0_7_" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2doc.png" alt="*" width="24" height="22" /><a class="el" href="include_2api_8php.html" target="_self">api.php</a></td><td class="desc"></td></tr>
+<tr id="row_0_8_" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2doc.png" alt="*" width="24" height="22" /><a class="el" href="include_2apps_8php.html" target="_self">apps.php</a></td><td class="desc"></td></tr>
+<tr id="row_0_9_" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2doc.png" alt="*" width="24" height="22" /><a class="el" href="include_2attach_8php.html" target="_self">attach.php</a></td><td class="desc">File/attach API with the potential for revision control</td></tr>
+<tr id="row_0_10_" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2doc.png" alt="*" width="24" height="22" /><a class="el" href="auth_8php.html" target="_self">auth.php</a></td><td class="desc">Functions and inline functionality for authentication</td></tr>
+<tr id="row_0_11_" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2doc.png" alt="*" width="24" height="22" /><a class="el" href="BaseObject_8php.html" target="_self">BaseObject.php</a></td><td class="desc"></td></tr>
+<tr id="row_0_12_" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2doc.png" alt="*" width="24" height="22" /><a class="el" href="bb2diaspora_8php.html" target="_self">bb2diaspora.php</a></td><td class="desc"></td></tr>
+<tr id="row_0_13_" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2doc.png" alt="*" width="24" height="22" /><a class="el" href="bbcode_8php.html" target="_self">bbcode.php</a></td><td class="desc"></td></tr>
+<tr id="row_0_14_" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2doc.png" alt="*" width="24" height="22" /><a class="el" href="include_2bookmarks_8php.html" target="_self">bookmarks.php</a></td><td class="desc"></td></tr>
+<tr id="row_0_15_" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2doc.png" alt="*" width="24" height="22" /><a class="el" href="cache_8php.html" target="_self">cache.php</a></td><td class="desc"></td></tr>
+<tr id="row_0_16_" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2doc.png" alt="*" width="24" height="22" /><a class="el" href="include_2chat_8php.html" target="_self">chat.php</a></td><td class="desc"></td></tr>
+<tr id="row_0_17_" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2doc.png" alt="*" width="24" height="22" /><a class="el" href="cli__startup_8php.html" target="_self">cli_startup.php</a></td><td class="desc"></td></tr>
+<tr id="row_0_18_" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2doc.png" alt="*" width="24" height="22" /><a class="el" href="cli__suggest_8php.html" target="_self">cli_suggest.php</a></td><td class="desc"></td></tr>
+<tr id="row_0_19_" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2doc.png" alt="*" width="24" height="22" /><a class="el" href="comanche_8php.html" target="_self">comanche.php</a></td><td class="desc"></td></tr>
+<tr id="row_0_20_" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2doc.png" alt="*" width="24" height="22" /><a class="el" href="include_2config_8php.html" target="_self">config.php</a></td><td class="desc">Arbitrary configuration storage</td></tr>
+<tr id="row_0_21_" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2doc.png" alt="*" width="24" height="22" /><a class="el" href="Contact_8php.html" target="_self">Contact.php</a></td><td class="desc"></td></tr>
+<tr id="row_0_22_" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2doc.png" alt="*" width="24" height="22" /><a class="el" href="contact__selectors_8php.html" target="_self">contact_selectors.php</a></td><td class="desc"></td></tr>
+<tr id="row_0_23_" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2doc.png" alt="*" width="24" height="22" /><a class="el" href="contact__widgets_8php.html" target="_self">contact_widgets.php</a></td><td class="desc"></td></tr>
+<tr id="row_0_24_" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2doc.png" alt="*" width="24" height="22" /><a class="el" href="conversation_8php.html" target="_self">conversation.php</a></td><td class="desc"></td></tr>
+<tr id="row_0_25_" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2doc.png" alt="*" width="24" height="22" /><a class="el" href="ConversationObject_8php.html" target="_self">ConversationObject.php</a></td><td class="desc"></td></tr>
+<tr id="row_0_26_" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2doc.png" alt="*" width="24" height="22" /><a class="el" href="cronhooks_8php.html" target="_self">cronhooks.php</a></td><td class="desc"></td></tr>
+<tr id="row_0_27_" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2doc.png" alt="*" width="24" height="22" /><a class="el" href="crypto_8php.html" target="_self">crypto.php</a></td><td class="desc"></td></tr>
+<tr id="row_0_28_" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2doc.png" alt="*" width="24" height="22" /><a class="el" href="datetime_8php.html" target="_self">datetime.php</a></td><td class="desc"></td></tr>
+<tr id="row_0_29_" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2doc.png" alt="*" width="24" height="22" /><a class="el" href="deliver_8php.html" target="_self">deliver.php</a></td><td class="desc"></td></tr>
+<tr id="row_0_30_" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2doc.png" alt="*" width="24" height="22" /><a class="el" href="diaspora_8php.html" target="_self">diaspora.php</a></td><td class="desc"></td></tr>
+<tr id="row_0_31_" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2doc.png" alt="*" width="24" height="22" /><a class="el" href="dimport_8php.html" target="_self">dimport.php</a></td><td class="desc"></td></tr>
+<tr id="row_0_32_" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2doc.png" alt="*" width="24" height="22" /><a class="el" href="dir__fns_8php.html" target="_self">dir_fns.php</a></td><td class="desc"></td></tr>
+<tr id="row_0_33_" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2doc.png" alt="*" width="24" height="22" /><a class="el" href="include_2directory_8php.html" target="_self">directory.php</a></td><td class="desc"></td></tr>
+<tr id="row_0_34_" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2doc.png" alt="*" width="24" height="22" /><a class="el" href="enotify_8php.html" target="_self">enotify.php</a></td><td class="desc"></td></tr>
+<tr id="row_0_35_" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2doc.png" alt="*" width="24" height="22" /><a class="el" href="event_8php.html" target="_self">event.php</a></td><td class="desc"></td></tr>
+<tr id="row_0_36_" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2doc.png" alt="*" width="24" height="22" /><a class="el" href="expire_8php.html" target="_self">expire.php</a></td><td class="desc"></td></tr>
+<tr id="row_0_37_" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2doc.png" alt="*" width="24" height="22" /><a class="el" href="externals_8php.html" target="_self">externals.php</a></td><td class="desc"></td></tr>
+<tr id="row_0_38_" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2doc.png" alt="*" width="24" height="22" /><a class="el" href="features_8php.html" target="_self">features.php</a></td><td class="desc"></td></tr>
+<tr id="row_0_39_" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2doc.png" alt="*" width="24" height="22" /><a class="el" href="fixd_8php.html" target="_self">fixd.php</a></td><td class="desc"></td></tr>
+<tr id="row_0_40_" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2doc.png" alt="*" width="24" height="22" /><a class="el" href="include_2follow_8php.html" target="_self">follow.php</a></td><td class="desc"></td></tr>
+<tr id="row_0_41_" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2doc.png" alt="*" width="24" height="22" /><a class="el" href="gprobe_8php.html" target="_self">gprobe.php</a></td><td class="desc"></td></tr>
+<tr id="row_0_42_" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2doc.png" alt="*" width="24" height="22" /><a class="el" href="include_2group_8php.html" target="_self">group.php</a></td><td class="desc"></td></tr>
+<tr id="row_0_43_" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2doc.png" alt="*" width="24" height="22" /><a class="el" href="html2bbcode_8php.html" target="_self">html2bbcode.php</a></td><td class="desc"></td></tr>
+<tr id="row_0_44_" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2doc.png" alt="*" width="24" height="22" /><a class="el" href="html2plain_8php.html" target="_self">html2plain.php</a></td><td class="desc"></td></tr>
+<tr id="row_0_45_" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2doc.png" alt="*" width="24" height="22" /><a class="el" href="hubloc_8php.html" target="_self">hubloc.php</a></td><td class="desc"></td></tr>
+<tr id="row_0_46_" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2doc.png" alt="*" width="24" height="22" /><a class="el" href="identity_8php.html" target="_self">identity.php</a></td><td class="desc"></td></tr>
+<tr id="row_0_47_" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2doc.png" alt="*" width="24" height="22" /><a class="el" href="ItemObject_8php.html" target="_self">ItemObject.php</a></td><td class="desc"></td></tr>
+<tr id="row_0_48_" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2doc.png" alt="*" width="24" height="22" /><a class="el" href="ITemplateEngine_8php.html" target="_self">ITemplateEngine.php</a></td><td class="desc"></td></tr>
+<tr id="row_0_49_" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2doc.png" alt="*" width="24" height="22" /><a class="el" href="items_8php.html" target="_self">items.php</a></td><td class="desc"></td></tr>
+<tr id="row_0_50_" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2doc.png" alt="*" width="24" height="22" /><a class="el" href="language_8php.html" target="_self">language.php</a></td><td class="desc">Translation support</td></tr>
+<tr id="row_0_51_" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2doc.png" alt="*" width="24" height="22" /><a class="el" href="include_2menu_8php.html" target="_self">menu.php</a></td><td class="desc"></td></tr>
+<tr id="row_0_52_" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2doc.png" alt="*" width="24" height="22" /><a class="el" href="include_2message_8php.html" target="_self">message.php</a></td><td class="desc"></td></tr>
+<tr id="row_0_53_" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2doc.png" alt="*" width="24" height="22" /><a class="el" href="nav_8php.html" target="_self">nav.php</a></td><td class="desc"></td></tr>
+<tr id="row_0_54_" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2doc.png" alt="*" width="24" height="22" /><a class="el" href="include_2network_8php.html" target="_self">network.php</a></td><td class="desc"></td></tr>
+<tr id="row_0_55_" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2doc.png" alt="*" width="24" height="22" /><a class="el" href="notifier_8php.html" target="_self">notifier.php</a></td><td class="desc"></td></tr>
+<tr id="row_0_56_" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2doc.png" alt="*" width="24" height="22" /><a class="el" href="include_2notify_8php.html" target="_self">notify.php</a></td><td class="desc"></td></tr>
+<tr id="row_0_57_" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2doc.png" alt="*" width="24" height="22" /><a class="el" href="oauth_8php.html" target="_self">oauth.php</a></td><td class="desc"></td></tr>
+<tr id="row_0_58_" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2doc.png" alt="*" width="24" height="22" /><a class="el" href="include_2oembed_8php.html" target="_self">oembed.php</a></td><td class="desc"></td></tr>
+<tr id="row_0_59_" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2doc.png" alt="*" width="24" height="22" /><a class="el" href="onedirsync_8php.html" target="_self">onedirsync.php</a></td><td class="desc"></td></tr>
+<tr id="row_0_60_" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2doc.png" alt="*" width="24" height="22" /><a class="el" href="onepoll_8php.html" target="_self">onepoll.php</a></td><td class="desc"></td></tr>
+<tr id="row_0_61_" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2doc.png" alt="*" width="24" height="22" /><a class="el" href="page__widgets_8php.html" target="_self">page_widgets.php</a></td><td class="desc"></td></tr>
+<tr id="row_0_62_" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2doc.png" alt="*" width="24" height="22" /><a class="el" href="permissions_8php.html" target="_self">permissions.php</a></td><td class="desc"></td></tr>
+<tr id="row_0_63_" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2doc.png" alt="*" width="24" height="22" /><a class="el" href="include_2photos_8php.html" target="_self">photos.php</a></td><td class="desc"></td></tr>
+<tr id="row_0_64_" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2doc.png" alt="*" width="24" height="22" /><a class="el" href="plugin_8php.html" target="_self">plugin.php</a></td><td class="desc">Some functions to handle addons and themes</td></tr>
+<tr id="row_0_65_" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2doc.png" alt="*" width="24" height="22" /><a class="el" href="poller_8php.html" target="_self">poller.php</a></td><td class="desc"></td></tr>
+<tr id="row_0_66_" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2doc.png" alt="*" width="24" height="22" /><a class="el" href="include_2probe_8php.html" target="_self">probe.php</a></td><td class="desc"></td></tr>
+<tr id="row_0_67_" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2doc.png" alt="*" width="24" height="22" /><a class="el" href="profile__selectors_8php.html" target="_self">profile_selectors.php</a></td><td class="desc"></td></tr>
+<tr id="row_0_68_" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2doc.png" alt="*" width="24" height="22" /><a class="el" href="ProtoDriver_8php.html" target="_self">ProtoDriver.php</a></td><td class="desc"></td></tr>
+<tr id="row_0_69_" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2doc.png" alt="*" width="24" height="22" /><a class="el" href="queue_8php.html" target="_self">queue.php</a></td><td class="desc"></td></tr>
+<tr id="row_0_70_" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2doc.png" alt="*" width="24" height="22" /><a class="el" href="queue__fn_8php.html" target="_self">queue_fn.php</a></td><td class="desc"></td></tr>
+<tr id="row_0_71_" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2doc.png" alt="*" width="24" height="22" /><a class="el" href="reddav_8php.html" target="_self">reddav.php</a></td><td class="desc">Some DAV related functions for <a class="el" href="namespaceRedMatrix.html" title="Class Import.">RedMatrix</a></td></tr>
+<tr id="row_0_72_" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2doc.png" alt="*" width="24" height="22" /><a class="el" href="security_8php.html" target="_self">security.php</a></td><td class="desc"></td></tr>
+<tr id="row_0_73_" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2doc.png" alt="*" width="24" height="22" /><a class="el" href="session_8php.html" target="_self">session.php</a></td><td class="desc"></td></tr>
+<tr id="row_0_74_" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2doc.png" alt="*" width="24" height="22" /><a class="el" href="smarty_8php.html" target="_self">smarty.php</a></td><td class="desc"></td></tr>
+<tr id="row_0_75_" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2doc.png" alt="*" width="24" height="22" /><a class="el" href="socgraph_8php.html" target="_self">socgraph.php</a></td><td class="desc"></td></tr>
+<tr id="row_0_76_" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2doc.png" alt="*" width="24" height="22" /><a class="el" href="spam_8php.html" target="_self">spam.php</a></td><td class="desc"></td></tr>
+<tr id="row_0_77_" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2doc.png" alt="*" width="24" height="22" /><a class="el" href="statistics__fns_8php.html" target="_self">statistics_fns.php</a></td><td class="desc"></td></tr>
+<tr id="row_0_78_" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2doc.png" alt="*" width="24" height="22" /><a class="el" href="system__unavailable_8php.html" target="_self">system_unavailable.php</a></td><td class="desc"></td></tr>
+<tr id="row_0_79_" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2doc.png" alt="*" width="24" height="22" /><a class="el" href="taxonomy_8php.html" target="_self">taxonomy.php</a></td><td class="desc"></td></tr>
+<tr id="row_0_80_" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2doc.png" alt="*" width="24" height="22" /><a class="el" href="template__processor_8php.html" target="_self">template_processor.php</a></td><td class="desc"></td></tr>
+<tr id="row_0_81_" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2doc.png" alt="*" width="24" height="22" /><a class="el" href="text_8php.html" target="_self">text.php</a></td><td class="desc"></td></tr>
+<tr id="row_0_82_" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2doc.png" alt="*" width="24" height="22" /><a class="el" href="widgets_8php.html" target="_self">widgets.php</a></td><td class="desc">This file contains the widgets</td></tr>
+<tr id="row_0_83_" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2lastnode.png" alt="\" width="16" height="22" /><img src="ftv2doc.png" alt="*" width="24" height="22" /><a class="el" href="zot_8php.html" target="_self">zot.php</a></td><td class="desc"></td></tr>
<tr id="row_1_"><td class="entry"><img id="arr_1_" src="ftv2pnode.png" alt="o" width="16" height="22" onclick="toggleFolder('1_')"/><img id="img_1_" src="ftv2folderclosed.png" alt="+" width="24" height="22" onclick="toggleFolder('1_')"/><a class="el" href="dir_d41ce877eb409a4791b288730010abe2.html" target="_self">mod</a></td><td class="desc"></td></tr>
<tr id="row_1_0_" class="even" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2doc.png" alt="*" width="24" height="22" /><a class="el" href="__well__known_8php.html" target="_self">_well_known.php</a></td><td class="desc"></td></tr>
<tr id="row_1_1_" class="even" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2doc.png" alt="*" width="24" height="22" /><a class="el" href="achievements_8php.html" target="_self">achievements.php</a></td><td class="desc"></td></tr>
@@ -207,38 +219,38 @@ $(document).ready(function(){initNavTree('files.html','');});
<tr id="row_1_8_" class="even" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2doc.png" alt="*" width="24" height="22" /><a class="el" href="block_8php.html" target="_self">block.php</a></td><td class="desc"></td></tr>
<tr id="row_1_9_" class="even" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2doc.png" alt="*" width="24" height="22" /><a class="el" href="blocks_8php.html" target="_self">blocks.php</a></td><td class="desc"></td></tr>
<tr id="row_1_10_" class="even" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2doc.png" alt="*" width="24" height="22" /><a class="el" href="mod_2bookmarks_8php.html" target="_self">bookmarks.php</a></td><td class="desc"></td></tr>
-<tr id="row_1_11_" class="even" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2doc.png" alt="*" width="24" height="22" /><a class="el" href="mod_2chanman_8php.html" target="_self">chanman.php</a></td><td class="desc"></td></tr>
-<tr id="row_1_12_" class="even" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2doc.png" alt="*" width="24" height="22" /><a class="el" href="channel_8php.html" target="_self">channel.php</a></td><td class="desc"></td></tr>
-<tr id="row_1_13_" class="even" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2doc.png" alt="*" width="24" height="22" /><a class="el" href="chanview_8php.html" target="_self">chanview.php</a></td><td class="desc"></td></tr>
-<tr id="row_1_14_" class="even" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2doc.png" alt="*" width="24" height="22" /><a class="el" href="mod_2chat_8php.html" target="_self">chat.php</a></td><td class="desc"></td></tr>
-<tr id="row_1_15_" class="even" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2doc.png" alt="*" width="24" height="22" /><a class="el" href="chatsvc_8php.html" target="_self">chatsvc.php</a></td><td class="desc"></td></tr>
-<tr id="row_1_16_" class="even" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2doc.png" alt="*" width="24" height="22" /><a class="el" href="cloud_8php.html" target="_self">cloud.php</a></td><td class="desc">Initialize Red Matrix's cloud (SabreDAV)</td></tr>
-<tr id="row_1_17_" class="even" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2doc.png" alt="*" width="24" height="22" /><a class="el" href="common_8php.html" target="_self">common.php</a></td><td class="desc"></td></tr>
-<tr id="row_1_18_" class="even" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2doc.png" alt="*" width="24" height="22" /><a class="el" href="connect_8php.html" target="_self">connect.php</a></td><td class="desc"></td></tr>
-<tr id="row_1_19_" class="even" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2doc.png" alt="*" width="24" height="22" /><a class="el" href="connections_8php.html" target="_self">connections.php</a></td><td class="desc"></td></tr>
-<tr id="row_1_20_" class="even" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2doc.png" alt="*" width="24" height="22" /><a class="el" href="connedit_8php.html" target="_self">connedit.php</a></td><td class="desc"></td></tr>
-<tr id="row_1_21_" class="even" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2doc.png" alt="*" width="24" height="22" /><a class="el" href="contactgroup_8php.html" target="_self">contactgroup.php</a></td><td class="desc"></td></tr>
-<tr id="row_1_22_" class="even" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2doc.png" alt="*" width="24" height="22" /><a class="el" href="delegate_8php.html" target="_self">delegate.php</a></td><td class="desc"></td></tr>
-<tr id="row_1_23_" class="even" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2doc.png" alt="*" width="24" height="22" /><a class="el" href="mod_2directory_8php.html" target="_self">directory.php</a></td><td class="desc"></td></tr>
-<tr id="row_1_24_" class="even" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2doc.png" alt="*" width="24" height="22" /><a class="el" href="dirprofile_8php.html" target="_self">dirprofile.php</a></td><td class="desc"></td></tr>
-<tr id="row_1_25_" class="even" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2doc.png" alt="*" width="24" height="22" /><a class="el" href="dirsearch_8php.html" target="_self">dirsearch.php</a></td><td class="desc"></td></tr>
-<tr id="row_1_26_" class="even" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2doc.png" alt="*" width="24" height="22" /><a class="el" href="display_8php.html" target="_self">display.php</a></td><td class="desc"></td></tr>
-<tr id="row_1_27_" class="even" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2doc.png" alt="*" width="24" height="22" /><a class="el" href="editblock_8php.html" target="_self">editblock.php</a></td><td class="desc"></td></tr>
-<tr id="row_1_28_" class="even" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2doc.png" alt="*" width="24" height="22" /><a class="el" href="editlayout_8php.html" target="_self">editlayout.php</a></td><td class="desc"></td></tr>
-<tr id="row_1_29_" class="even" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2doc.png" alt="*" width="24" height="22" /><a class="el" href="editpost_8php.html" target="_self">editpost.php</a></td><td class="desc"></td></tr>
-<tr id="row_1_30_" class="even" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2doc.png" alt="*" width="24" height="22" /><a class="el" href="editwebpage_8php.html" target="_self">editwebpage.php</a></td><td class="desc"></td></tr>
-<tr id="row_1_31_" class="even" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2doc.png" alt="*" width="24" height="22" /><a class="el" href="events_8php.html" target="_self">events.php</a></td><td class="desc"></td></tr>
-<tr id="row_1_32_" class="even" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2doc.png" alt="*" width="24" height="22" /><a class="el" href="fbrowser_8php.html" target="_self">fbrowser.php</a></td><td class="desc"></td></tr>
-<tr id="row_1_33_" class="even" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2doc.png" alt="*" width="24" height="22" /><a class="el" href="feed_8php.html" target="_self">feed.php</a></td><td class="desc"></td></tr>
-<tr id="row_1_34_" class="even" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2doc.png" alt="*" width="24" height="22" /><a class="el" href="filer_8php.html" target="_self">filer.php</a></td><td class="desc"></td></tr>
-<tr id="row_1_35_" class="even" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2doc.png" alt="*" width="24" height="22" /><a class="el" href="filerm_8php.html" target="_self">filerm.php</a></td><td class="desc"></td></tr>
-<tr id="row_1_36_" class="even" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2doc.png" alt="*" width="24" height="22" /><a class="el" href="filestorage_8php.html" target="_self">filestorage.php</a></td><td class="desc"></td></tr>
-<tr id="row_1_37_" class="even" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2doc.png" alt="*" width="24" height="22" /><a class="el" href="mod_2follow_8php.html" target="_self">follow.php</a></td><td class="desc"></td></tr>
-<tr id="row_1_38_" class="even" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2doc.png" alt="*" width="24" height="22" /><a class="el" href="fsuggest_8php.html" target="_self">fsuggest.php</a></td><td class="desc"></td></tr>
-<tr id="row_1_39_" class="even" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2doc.png" alt="*" width="24" height="22" /><a class="el" href="mod_2group_8php.html" target="_self">group.php</a></td><td class="desc"></td></tr>
-<tr id="row_1_40_" class="even" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2doc.png" alt="*" width="24" height="22" /><a class="el" href="help_8php.html" target="_self">help.php</a></td><td class="desc"></td></tr>
-<tr id="row_1_41_" class="even" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2doc.png" alt="*" width="24" height="22" /><a class="el" href="home_8php.html" target="_self">home.php</a></td><td class="desc"></td></tr>
-<tr id="row_1_42_" class="even" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2doc.png" alt="*" width="24" height="22" /><a class="el" href="hostxrd_8php.html" target="_self">hostxrd.php</a></td><td class="desc"></td></tr>
+<tr id="row_1_11_" class="even" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2doc.png" alt="*" width="24" height="22" /><a class="el" href="channel_8php.html" target="_self">channel.php</a></td><td class="desc"></td></tr>
+<tr id="row_1_12_" class="even" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2doc.png" alt="*" width="24" height="22" /><a class="el" href="chanview_8php.html" target="_self">chanview.php</a></td><td class="desc"></td></tr>
+<tr id="row_1_13_" class="even" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2doc.png" alt="*" width="24" height="22" /><a class="el" href="mod_2chat_8php.html" target="_self">chat.php</a></td><td class="desc"></td></tr>
+<tr id="row_1_14_" class="even" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2doc.png" alt="*" width="24" height="22" /><a class="el" href="chatsvc_8php.html" target="_self">chatsvc.php</a></td><td class="desc"></td></tr>
+<tr id="row_1_15_" class="even" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2doc.png" alt="*" width="24" height="22" /><a class="el" href="cloud_8php.html" target="_self">cloud.php</a></td><td class="desc">Initialize <a class="el" href="namespaceRedMatrix.html" title="Class Import.">RedMatrix</a>'s cloud (SabreDAV)</td></tr>
+<tr id="row_1_16_" class="even" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2doc.png" alt="*" width="24" height="22" /><a class="el" href="common_8php.html" target="_self">common.php</a></td><td class="desc"></td></tr>
+<tr id="row_1_17_" class="even" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2doc.png" alt="*" width="24" height="22" /><a class="el" href="connect_8php.html" target="_self">connect.php</a></td><td class="desc"></td></tr>
+<tr id="row_1_18_" class="even" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2doc.png" alt="*" width="24" height="22" /><a class="el" href="connections_8php.html" target="_self">connections.php</a></td><td class="desc"></td></tr>
+<tr id="row_1_19_" class="even" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2doc.png" alt="*" width="24" height="22" /><a class="el" href="connedit_8php.html" target="_self">connedit.php</a></td><td class="desc"></td></tr>
+<tr id="row_1_20_" class="even" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2doc.png" alt="*" width="24" height="22" /><a class="el" href="contactgroup_8php.html" target="_self">contactgroup.php</a></td><td class="desc"></td></tr>
+<tr id="row_1_21_" class="even" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2doc.png" alt="*" width="24" height="22" /><a class="el" href="delegate_8php.html" target="_self">delegate.php</a></td><td class="desc"></td></tr>
+<tr id="row_1_22_" class="even" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2doc.png" alt="*" width="24" height="22" /><a class="el" href="mod_2directory_8php.html" target="_self">directory.php</a></td><td class="desc"></td></tr>
+<tr id="row_1_23_" class="even" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2doc.png" alt="*" width="24" height="22" /><a class="el" href="dirsearch_8php.html" target="_self">dirsearch.php</a></td><td class="desc"></td></tr>
+<tr id="row_1_24_" class="even" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2doc.png" alt="*" width="24" height="22" /><a class="el" href="display_8php.html" target="_self">display.php</a></td><td class="desc"></td></tr>
+<tr id="row_1_25_" class="even" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2doc.png" alt="*" width="24" height="22" /><a class="el" href="editblock_8php.html" target="_self">editblock.php</a></td><td class="desc"></td></tr>
+<tr id="row_1_26_" class="even" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2doc.png" alt="*" width="24" height="22" /><a class="el" href="editlayout_8php.html" target="_self">editlayout.php</a></td><td class="desc"></td></tr>
+<tr id="row_1_27_" class="even" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2doc.png" alt="*" width="24" height="22" /><a class="el" href="editpost_8php.html" target="_self">editpost.php</a></td><td class="desc"></td></tr>
+<tr id="row_1_28_" class="even" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2doc.png" alt="*" width="24" height="22" /><a class="el" href="editwebpage_8php.html" target="_self">editwebpage.php</a></td><td class="desc"></td></tr>
+<tr id="row_1_29_" class="even" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2doc.png" alt="*" width="24" height="22" /><a class="el" href="events_8php.html" target="_self">events.php</a></td><td class="desc"></td></tr>
+<tr id="row_1_30_" class="even" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2doc.png" alt="*" width="24" height="22" /><a class="el" href="fbrowser_8php.html" target="_self">fbrowser.php</a></td><td class="desc"></td></tr>
+<tr id="row_1_31_" class="even" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2doc.png" alt="*" width="24" height="22" /><a class="el" href="feed_8php.html" target="_self">feed.php</a></td><td class="desc"></td></tr>
+<tr id="row_1_32_" class="even" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2doc.png" alt="*" width="24" height="22" /><a class="el" href="filer_8php.html" target="_self">filer.php</a></td><td class="desc"></td></tr>
+<tr id="row_1_33_" class="even" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2doc.png" alt="*" width="24" height="22" /><a class="el" href="filerm_8php.html" target="_self">filerm.php</a></td><td class="desc"></td></tr>
+<tr id="row_1_34_" class="even" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2doc.png" alt="*" width="24" height="22" /><a class="el" href="filestorage_8php.html" target="_self">filestorage.php</a></td><td class="desc"></td></tr>
+<tr id="row_1_35_" class="even" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2doc.png" alt="*" width="24" height="22" /><a class="el" href="mod_2follow_8php.html" target="_self">follow.php</a></td><td class="desc"></td></tr>
+<tr id="row_1_36_" class="even" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2doc.png" alt="*" width="24" height="22" /><a class="el" href="fsuggest_8php.html" target="_self">fsuggest.php</a></td><td class="desc"></td></tr>
+<tr id="row_1_37_" class="even" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2doc.png" alt="*" width="24" height="22" /><a class="el" href="mod_2group_8php.html" target="_self">group.php</a></td><td class="desc"></td></tr>
+<tr id="row_1_38_" class="even" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2doc.png" alt="*" width="24" height="22" /><a class="el" href="hcard_8php.html" target="_self">hcard.php</a></td><td class="desc"></td></tr>
+<tr id="row_1_39_" class="even" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2doc.png" alt="*" width="24" height="22" /><a class="el" href="help_8php.html" target="_self">help.php</a></td><td class="desc"></td></tr>
+<tr id="row_1_40_" class="even" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2doc.png" alt="*" width="24" height="22" /><a class="el" href="home_8php.html" target="_self">home.php</a></td><td class="desc"></td></tr>
+<tr id="row_1_41_" class="even" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2doc.png" alt="*" width="24" height="22" /><a class="el" href="hostxrd_8php.html" target="_self">hostxrd.php</a></td><td class="desc"></td></tr>
+<tr id="row_1_42_" class="even" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2doc.png" alt="*" width="24" height="22" /><a class="el" href="impel_8php.html" target="_self">impel.php</a></td><td class="desc"></td></tr>
<tr id="row_1_43_" class="even" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2doc.png" alt="*" width="24" height="22" /><a class="el" href="import_8php.html" target="_self">import.php</a></td><td class="desc"></td></tr>
<tr id="row_1_44_" class="even" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2doc.png" alt="*" width="24" height="22" /><a class="el" href="importelm_8php.html" target="_self">importelm.php</a></td><td class="desc"></td></tr>
<tr id="row_1_45_" class="even" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2doc.png" alt="*" width="24" height="22" /><a class="el" href="invite_8php.html" target="_self">invite.php</a></td><td class="desc"></td></tr>
@@ -247,108 +259,112 @@ $(document).ready(function(){initNavTree('files.html','');});
<tr id="row_1_48_" class="even" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2doc.png" alt="*" width="24" height="22" /><a class="el" href="layouts_8php.html" target="_self">layouts.php</a></td><td class="desc"></td></tr>
<tr id="row_1_49_" class="even" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2doc.png" alt="*" width="24" height="22" /><a class="el" href="like_8php.html" target="_self">like.php</a></td><td class="desc"></td></tr>
<tr id="row_1_50_" class="even" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2doc.png" alt="*" width="24" height="22" /><a class="el" href="lockview_8php.html" target="_self">lockview.php</a></td><td class="desc"></td></tr>
-<tr id="row_1_51_" class="even" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2doc.png" alt="*" width="24" height="22" /><a class="el" href="login_8php.html" target="_self">login.php</a></td><td class="desc"></td></tr>
-<tr id="row_1_52_" class="even" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2doc.png" alt="*" width="24" height="22" /><a class="el" href="lostpass_8php.html" target="_self">lostpass.php</a></td><td class="desc"></td></tr>
-<tr id="row_1_53_" class="even" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2doc.png" alt="*" width="24" height="22" /><a class="el" href="magic_8php.html" target="_self">magic.php</a></td><td class="desc"></td></tr>
-<tr id="row_1_54_" class="even" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2doc.png" alt="*" width="24" height="22" /><a class="el" href="mail_8php.html" target="_self">mail.php</a></td><td class="desc"></td></tr>
-<tr id="row_1_55_" class="even" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2doc.png" alt="*" width="24" height="22" /><a class="el" href="manage_8php.html" target="_self">manage.php</a></td><td class="desc"></td></tr>
-<tr id="row_1_56_" class="even" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2doc.png" alt="*" width="24" height="22" /><a class="el" href="match_8php.html" target="_self">match.php</a></td><td class="desc"></td></tr>
-<tr id="row_1_57_" class="even" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2doc.png" alt="*" width="24" height="22" /><a class="el" href="mod_2menu_8php.html" target="_self">menu.php</a></td><td class="desc"></td></tr>
-<tr id="row_1_58_" class="even" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2doc.png" alt="*" width="24" height="22" /><a class="el" href="mod_2message_8php.html" target="_self">message.php</a></td><td class="desc"></td></tr>
-<tr id="row_1_59_" class="even" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2doc.png" alt="*" width="24" height="22" /><a class="el" href="mitem_8php.html" target="_self">mitem.php</a></td><td class="desc"></td></tr>
-<tr id="row_1_60_" class="even" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2doc.png" alt="*" width="24" height="22" /><a class="el" href="mood_8php.html" target="_self">mood.php</a></td><td class="desc"></td></tr>
-<tr id="row_1_61_" class="even" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2doc.png" alt="*" width="24" height="22" /><a class="el" href="msearch_8php.html" target="_self">msearch.php</a></td><td class="desc"></td></tr>
-<tr id="row_1_62_" class="even" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2doc.png" alt="*" width="24" height="22" /><a class="el" href="netgrowth_8php.html" target="_self">netgrowth.php</a></td><td class="desc"></td></tr>
-<tr id="row_1_63_" class="even" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2doc.png" alt="*" width="24" height="22" /><a class="el" href="mod_2network_8php.html" target="_self">network.php</a></td><td class="desc"></td></tr>
-<tr id="row_1_64_" class="even" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2doc.png" alt="*" width="24" height="22" /><a class="el" href="new__channel_8php.html" target="_self">new_channel.php</a></td><td class="desc"></td></tr>
-<tr id="row_1_65_" class="even" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2doc.png" alt="*" width="24" height="22" /><a class="el" href="notes_8php.html" target="_self">notes.php</a></td><td class="desc"></td></tr>
-<tr id="row_1_66_" class="even" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2doc.png" alt="*" width="24" height="22" /><a class="el" href="notifications_8php.html" target="_self">notifications.php</a></td><td class="desc"></td></tr>
-<tr id="row_1_67_" class="even" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2doc.png" alt="*" width="24" height="22" /><a class="el" href="mod_2notify_8php.html" target="_self">notify.php</a></td><td class="desc"></td></tr>
-<tr id="row_1_68_" class="even" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2doc.png" alt="*" width="24" height="22" /><a class="el" href="mod_2oembed_8php.html" target="_self">oembed.php</a></td><td class="desc"></td></tr>
-<tr id="row_1_69_" class="even" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2doc.png" alt="*" width="24" height="22" /><a class="el" href="oexchange_8php.html" target="_self">oexchange.php</a></td><td class="desc"></td></tr>
-<tr id="row_1_70_" class="even" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2doc.png" alt="*" width="24" height="22" /><a class="el" href="online_8php.html" target="_self">online.php</a></td><td class="desc"></td></tr>
-<tr id="row_1_71_" class="even" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2doc.png" alt="*" width="24" height="22" /><a class="el" href="openid_8php.html" target="_self">openid.php</a></td><td class="desc"></td></tr>
-<tr id="row_1_72_" class="even" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2doc.png" alt="*" width="24" height="22" /><a class="el" href="opensearch_8php.html" target="_self">opensearch.php</a></td><td class="desc"></td></tr>
-<tr id="row_1_73_" class="even" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2doc.png" alt="*" width="24" height="22" /><a class="el" href="page_8php.html" target="_self">page.php</a></td><td class="desc"></td></tr>
-<tr id="row_1_74_" class="even" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2doc.png" alt="*" width="24" height="22" /><a class="el" href="parse__url_8php.html" target="_self">parse_url.php</a></td><td class="desc"></td></tr>
-<tr id="row_1_75_" class="even" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2doc.png" alt="*" width="24" height="22" /><a class="el" href="pdledit_8php.html" target="_self">pdledit.php</a></td><td class="desc"></td></tr>
-<tr id="row_1_76_" class="even" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2doc.png" alt="*" width="24" height="22" /><a class="el" href="photo_8php.html" target="_self">photo.php</a></td><td class="desc"></td></tr>
-<tr id="row_1_77_" class="even" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2doc.png" alt="*" width="24" height="22" /><a class="el" href="mod_2photos_8php.html" target="_self">photos.php</a></td><td class="desc"></td></tr>
-<tr id="row_1_78_" class="even" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2doc.png" alt="*" width="24" height="22" /><a class="el" href="php_8php.html" target="_self">php.php</a></td><td class="desc"></td></tr>
-<tr id="row_1_79_" class="even" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2doc.png" alt="*" width="24" height="22" /><a class="el" href="ping_8php.html" target="_self">ping.php</a></td><td class="desc"></td></tr>
-<tr id="row_1_80_" class="even" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2doc.png" alt="*" width="24" height="22" /><a class="el" href="poco_8php.html" target="_self">poco.php</a></td><td class="desc"></td></tr>
-<tr id="row_1_81_" class="even" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2doc.png" alt="*" width="24" height="22" /><a class="el" href="poke_8php.html" target="_self">poke.php</a></td><td class="desc"></td></tr>
-<tr id="row_1_82_" class="even" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2doc.png" alt="*" width="24" height="22" /><a class="el" href="post_8php.html" target="_self">post.php</a></td><td class="desc"></td></tr>
-<tr id="row_1_83_" class="even" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2doc.png" alt="*" width="24" height="22" /><a class="el" href="pretheme_8php.html" target="_self">pretheme.php</a></td><td class="desc"></td></tr>
-<tr id="row_1_84_" class="even" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2doc.png" alt="*" width="24" height="22" /><a class="el" href="mod_2probe_8php.html" target="_self">probe.php</a></td><td class="desc"></td></tr>
-<tr id="row_1_85_" class="even" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2doc.png" alt="*" width="24" height="22" /><a class="el" href="profile_8php.html" target="_self">profile.php</a></td><td class="desc"></td></tr>
-<tr id="row_1_86_" class="even" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2doc.png" alt="*" width="24" height="22" /><a class="el" href="profile__photo_8php.html" target="_self">profile_photo.php</a></td><td class="desc"></td></tr>
-<tr id="row_1_87_" class="even" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2doc.png" alt="*" width="24" height="22" /><a class="el" href="profiles_8php.html" target="_self">profiles.php</a></td><td class="desc"></td></tr>
-<tr id="row_1_88_" class="even" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2doc.png" alt="*" width="24" height="22" /><a class="el" href="profperm_8php.html" target="_self">profperm.php</a></td><td class="desc"></td></tr>
-<tr id="row_1_89_" class="even" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2doc.png" alt="*" width="24" height="22" /><a class="el" href="pubsites_8php.html" target="_self">pubsites.php</a></td><td class="desc"></td></tr>
-<tr id="row_1_90_" class="even" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2doc.png" alt="*" width="24" height="22" /><a class="el" href="randprof_8php.html" target="_self">randprof.php</a></td><td class="desc"></td></tr>
-<tr id="row_1_91_" class="even" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2doc.png" alt="*" width="24" height="22" /><a class="el" href="rbmark_8php.html" target="_self">rbmark.php</a></td><td class="desc"></td></tr>
-<tr id="row_1_92_" class="even" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2doc.png" alt="*" width="24" height="22" /><a class="el" href="register_8php.html" target="_self">register.php</a></td><td class="desc"></td></tr>
-<tr id="row_1_93_" class="even" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2doc.png" alt="*" width="24" height="22" /><a class="el" href="regmod_8php.html" target="_self">regmod.php</a></td><td class="desc"></td></tr>
-<tr id="row_1_94_" class="even" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2doc.png" alt="*" width="24" height="22" /><a class="el" href="regver_8php.html" target="_self">regver.php</a></td><td class="desc"></td></tr>
-<tr id="row_1_95_" class="even" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2doc.png" alt="*" width="24" height="22" /><a class="el" href="removeme_8php.html" target="_self">removeme.php</a></td><td class="desc"></td></tr>
-<tr id="row_1_96_" class="even" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2doc.png" alt="*" width="24" height="22" /><a class="el" href="rmagic_8php.html" target="_self">rmagic.php</a></td><td class="desc"></td></tr>
-<tr id="row_1_97_" class="even" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2doc.png" alt="*" width="24" height="22" /><a class="el" href="rpost_8php.html" target="_self">rpost.php</a></td><td class="desc"></td></tr>
-<tr id="row_1_98_" class="even" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2doc.png" alt="*" width="24" height="22" /><a class="el" href="rsd__xml_8php.html" target="_self">rsd_xml.php</a></td><td class="desc"></td></tr>
-<tr id="row_1_99_" class="even" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2doc.png" alt="*" width="24" height="22" /><a class="el" href="search_8php.html" target="_self">search.php</a></td><td class="desc"></td></tr>
-<tr id="row_1_100_" class="even" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2doc.png" alt="*" width="24" height="22" /><a class="el" href="search__ac_8php.html" target="_self">search_ac.php</a></td><td class="desc"></td></tr>
-<tr id="row_1_101_" class="even" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2doc.png" alt="*" width="24" height="22" /><a class="el" href="settings_8php.html" target="_self">settings.php</a></td><td class="desc"></td></tr>
-<tr id="row_1_102_" class="even" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2doc.png" alt="*" width="24" height="22" /><a class="el" href="setup_8php.html" target="_self">setup.php</a></td><td class="desc"></td></tr>
-<tr id="row_1_103_" class="even" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2doc.png" alt="*" width="24" height="22" /><a class="el" href="share_8php.html" target="_self">share.php</a></td><td class="desc"></td></tr>
-<tr id="row_1_104_" class="even" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2doc.png" alt="*" width="24" height="22" /><a class="el" href="siteinfo_8php.html" target="_self">siteinfo.php</a></td><td class="desc"></td></tr>
-<tr id="row_1_105_" class="even" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2doc.png" alt="*" width="24" height="22" /><a class="el" href="sitelist_8php.html" target="_self">sitelist.php</a></td><td class="desc"></td></tr>
-<tr id="row_1_106_" class="even" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2doc.png" alt="*" width="24" height="22" /><a class="el" href="smilies_8php.html" target="_self">smilies.php</a></td><td class="desc"></td></tr>
-<tr id="row_1_107_" class="even" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2doc.png" alt="*" width="24" height="22" /><a class="el" href="sources_8php.html" target="_self">sources.php</a></td><td class="desc"></td></tr>
-<tr id="row_1_108_" class="even" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2doc.png" alt="*" width="24" height="22" /><a class="el" href="sslify_8php.html" target="_self">sslify.php</a></td><td class="desc"></td></tr>
-<tr id="row_1_109_" class="even" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2doc.png" alt="*" width="24" height="22" /><a class="el" href="starred_8php.html" target="_self">starred.php</a></td><td class="desc"></td></tr>
-<tr id="row_1_110_" class="even" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2doc.png" alt="*" width="24" height="22" /><a class="el" href="subthread_8php.html" target="_self">subthread.php</a></td><td class="desc"></td></tr>
-<tr id="row_1_111_" class="even" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2doc.png" alt="*" width="24" height="22" /><a class="el" href="suggest_8php.html" target="_self">suggest.php</a></td><td class="desc"></td></tr>
-<tr id="row_1_112_" class="even" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2doc.png" alt="*" width="24" height="22" /><a class="el" href="tagger_8php.html" target="_self">tagger.php</a></td><td class="desc"></td></tr>
-<tr id="row_1_113_" class="even" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2doc.png" alt="*" width="24" height="22" /><a class="el" href="tagrm_8php.html" target="_self">tagrm.php</a></td><td class="desc"></td></tr>
-<tr id="row_1_114_" class="even" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2doc.png" alt="*" width="24" height="22" /><a class="el" href="thing_8php.html" target="_self">thing.php</a></td><td class="desc"></td></tr>
-<tr id="row_1_115_" class="even" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2doc.png" alt="*" width="24" height="22" /><a class="el" href="toggle__mobile_8php.html" target="_self">toggle_mobile.php</a></td><td class="desc"></td></tr>
-<tr id="row_1_116_" class="even" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2doc.png" alt="*" width="24" height="22" /><a class="el" href="toggle__safesearch_8php.html" target="_self">toggle_safesearch.php</a></td><td class="desc"></td></tr>
-<tr id="row_1_117_" class="even" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2doc.png" alt="*" width="24" height="22" /><a class="el" href="uexport_8php.html" target="_self">uexport.php</a></td><td class="desc"></td></tr>
-<tr id="row_1_118_" class="even" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2doc.png" alt="*" width="24" height="22" /><a class="el" href="update__channel_8php.html" target="_self">update_channel.php</a></td><td class="desc"></td></tr>
-<tr id="row_1_119_" class="even" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2doc.png" alt="*" width="24" height="22" /><a class="el" href="update__display_8php.html" target="_self">update_display.php</a></td><td class="desc"></td></tr>
-<tr id="row_1_120_" class="even" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2doc.png" alt="*" width="24" height="22" /><a class="el" href="update__network_8php.html" target="_self">update_network.php</a></td><td class="desc"></td></tr>
-<tr id="row_1_121_" class="even" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2doc.png" alt="*" width="24" height="22" /><a class="el" href="update__search_8php.html" target="_self">update_search.php</a></td><td class="desc"></td></tr>
-<tr id="row_1_122_" class="even" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2doc.png" alt="*" width="24" height="22" /><a class="el" href="view_8php.html" target="_self">view.php</a></td><td class="desc"></td></tr>
-<tr id="row_1_123_" class="even" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2doc.png" alt="*" width="24" height="22" /><a class="el" href="viewconnections_8php.html" target="_self">viewconnections.php</a></td><td class="desc"></td></tr>
-<tr id="row_1_124_" class="even" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2doc.png" alt="*" width="24" height="22" /><a class="el" href="viewsrc_8php.html" target="_self">viewsrc.php</a></td><td class="desc"></td></tr>
-<tr id="row_1_125_" class="even" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2doc.png" alt="*" width="24" height="22" /><a class="el" href="vote_8php.html" target="_self">vote.php</a></td><td class="desc"></td></tr>
-<tr id="row_1_126_" class="even" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2doc.png" alt="*" width="24" height="22" /><a class="el" href="wall__attach_8php.html" target="_self">wall_attach.php</a></td><td class="desc"></td></tr>
-<tr id="row_1_127_" class="even" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2doc.png" alt="*" width="24" height="22" /><a class="el" href="wall__upload_8php.html" target="_self">wall_upload.php</a></td><td class="desc"></td></tr>
-<tr id="row_1_128_" class="even" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2doc.png" alt="*" width="24" height="22" /><a class="el" href="webfinger_8php.html" target="_self">webfinger.php</a></td><td class="desc"></td></tr>
-<tr id="row_1_129_" class="even" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2doc.png" alt="*" width="24" height="22" /><a class="el" href="webpages_8php.html" target="_self">webpages.php</a></td><td class="desc"></td></tr>
-<tr id="row_1_130_" class="even" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2doc.png" alt="*" width="24" height="22" /><a class="el" href="wfinger_8php.html" target="_self">wfinger.php</a></td><td class="desc"></td></tr>
-<tr id="row_1_131_" class="even" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2doc.png" alt="*" width="24" height="22" /><a class="el" href="xchan_8php.html" target="_self">xchan.php</a></td><td class="desc"></td></tr>
-<tr id="row_1_132_" class="even" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2doc.png" alt="*" width="24" height="22" /><a class="el" href="xrd_8php.html" target="_self">xrd.php</a></td><td class="desc"></td></tr>
-<tr id="row_1_133_" class="even" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2doc.png" alt="*" width="24" height="22" /><a class="el" href="xref_8php.html" target="_self">xref.php</a></td><td class="desc"></td></tr>
-<tr id="row_1_134_" class="even" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2doc.png" alt="*" width="24" height="22" /><a class="el" href="zfinger_8php.html" target="_self">zfinger.php</a></td><td class="desc"></td></tr>
-<tr id="row_1_135_" class="even" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2doc.png" alt="*" width="24" height="22" /><a class="el" href="zotfeed_8php.html" target="_self">zotfeed.php</a></td><td class="desc"></td></tr>
-<tr id="row_1_136_" class="even" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2lastnode.png" alt="\" width="16" height="22" /><img src="ftv2doc.png" alt="*" width="24" height="22" /><a class="el" href="zping_8php.html" target="_self">zping.php</a></td><td class="desc"></td></tr>
+<tr id="row_1_51_" class="even" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2doc.png" alt="*" width="24" height="22" /><a class="el" href="locs_8php.html" target="_self">locs.php</a></td><td class="desc"></td></tr>
+<tr id="row_1_52_" class="even" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2doc.png" alt="*" width="24" height="22" /><a class="el" href="login_8php.html" target="_self">login.php</a></td><td class="desc"></td></tr>
+<tr id="row_1_53_" class="even" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2doc.png" alt="*" width="24" height="22" /><a class="el" href="lostpass_8php.html" target="_self">lostpass.php</a></td><td class="desc"></td></tr>
+<tr id="row_1_54_" class="even" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2doc.png" alt="*" width="24" height="22" /><a class="el" href="magic_8php.html" target="_self">magic.php</a></td><td class="desc"></td></tr>
+<tr id="row_1_55_" class="even" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2doc.png" alt="*" width="24" height="22" /><a class="el" href="mail_8php.html" target="_self">mail.php</a></td><td class="desc"></td></tr>
+<tr id="row_1_56_" class="even" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2doc.png" alt="*" width="24" height="22" /><a class="el" href="manage_8php.html" target="_self">manage.php</a></td><td class="desc"></td></tr>
+<tr id="row_1_57_" class="even" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2doc.png" alt="*" width="24" height="22" /><a class="el" href="match_8php.html" target="_self">match.php</a></td><td class="desc"></td></tr>
+<tr id="row_1_58_" class="even" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2doc.png" alt="*" width="24" height="22" /><a class="el" href="mod_2menu_8php.html" target="_self">menu.php</a></td><td class="desc"></td></tr>
+<tr id="row_1_59_" class="even" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2doc.png" alt="*" width="24" height="22" /><a class="el" href="mod_2message_8php.html" target="_self">message.php</a></td><td class="desc"></td></tr>
+<tr id="row_1_60_" class="even" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2doc.png" alt="*" width="24" height="22" /><a class="el" href="mitem_8php.html" target="_self">mitem.php</a></td><td class="desc"></td></tr>
+<tr id="row_1_61_" class="even" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2doc.png" alt="*" width="24" height="22" /><a class="el" href="mood_8php.html" target="_self">mood.php</a></td><td class="desc"></td></tr>
+<tr id="row_1_62_" class="even" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2doc.png" alt="*" width="24" height="22" /><a class="el" href="msearch_8php.html" target="_self">msearch.php</a></td><td class="desc"></td></tr>
+<tr id="row_1_63_" class="even" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2doc.png" alt="*" width="24" height="22" /><a class="el" href="netgrowth_8php.html" target="_self">netgrowth.php</a></td><td class="desc"></td></tr>
+<tr id="row_1_64_" class="even" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2doc.png" alt="*" width="24" height="22" /><a class="el" href="mod_2network_8php.html" target="_self">network.php</a></td><td class="desc"></td></tr>
+<tr id="row_1_65_" class="even" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2doc.png" alt="*" width="24" height="22" /><a class="el" href="new__channel_8php.html" target="_self">new_channel.php</a></td><td class="desc"></td></tr>
+<tr id="row_1_66_" class="even" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2doc.png" alt="*" width="24" height="22" /><a class="el" href="notes_8php.html" target="_self">notes.php</a></td><td class="desc"></td></tr>
+<tr id="row_1_67_" class="even" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2doc.png" alt="*" width="24" height="22" /><a class="el" href="notifications_8php.html" target="_self">notifications.php</a></td><td class="desc"></td></tr>
+<tr id="row_1_68_" class="even" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2doc.png" alt="*" width="24" height="22" /><a class="el" href="mod_2notify_8php.html" target="_self">notify.php</a></td><td class="desc"></td></tr>
+<tr id="row_1_69_" class="even" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2doc.png" alt="*" width="24" height="22" /><a class="el" href="mod_2oembed_8php.html" target="_self">oembed.php</a></td><td class="desc"></td></tr>
+<tr id="row_1_70_" class="even" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2doc.png" alt="*" width="24" height="22" /><a class="el" href="oexchange_8php.html" target="_self">oexchange.php</a></td><td class="desc"></td></tr>
+<tr id="row_1_71_" class="even" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2doc.png" alt="*" width="24" height="22" /><a class="el" href="online_8php.html" target="_self">online.php</a></td><td class="desc"></td></tr>
+<tr id="row_1_72_" class="even" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2doc.png" alt="*" width="24" height="22" /><a class="el" href="openid_8php.html" target="_self">openid.php</a></td><td class="desc"></td></tr>
+<tr id="row_1_73_" class="even" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2doc.png" alt="*" width="24" height="22" /><a class="el" href="opensearch_8php.html" target="_self">opensearch.php</a></td><td class="desc"></td></tr>
+<tr id="row_1_74_" class="even" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2doc.png" alt="*" width="24" height="22" /><a class="el" href="p_8php.html" target="_self">p.php</a></td><td class="desc"></td></tr>
+<tr id="row_1_75_" class="even" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2doc.png" alt="*" width="24" height="22" /><a class="el" href="page_8php.html" target="_self">page.php</a></td><td class="desc"></td></tr>
+<tr id="row_1_76_" class="even" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2doc.png" alt="*" width="24" height="22" /><a class="el" href="parse__url_8php.html" target="_self">parse_url.php</a></td><td class="desc"></td></tr>
+<tr id="row_1_77_" class="even" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2doc.png" alt="*" width="24" height="22" /><a class="el" href="pdledit_8php.html" target="_self">pdledit.php</a></td><td class="desc"></td></tr>
+<tr id="row_1_78_" class="even" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2doc.png" alt="*" width="24" height="22" /><a class="el" href="photo_8php.html" target="_self">photo.php</a></td><td class="desc"></td></tr>
+<tr id="row_1_79_" class="even" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2doc.png" alt="*" width="24" height="22" /><a class="el" href="mod_2photos_8php.html" target="_self">photos.php</a></td><td class="desc"></td></tr>
+<tr id="row_1_80_" class="even" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2doc.png" alt="*" width="24" height="22" /><a class="el" href="php_8php.html" target="_self">php.php</a></td><td class="desc"></td></tr>
+<tr id="row_1_81_" class="even" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2doc.png" alt="*" width="24" height="22" /><a class="el" href="ping_8php.html" target="_self">ping.php</a></td><td class="desc"></td></tr>
+<tr id="row_1_82_" class="even" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2doc.png" alt="*" width="24" height="22" /><a class="el" href="poco_8php.html" target="_self">poco.php</a></td><td class="desc"></td></tr>
+<tr id="row_1_83_" class="even" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2doc.png" alt="*" width="24" height="22" /><a class="el" href="poke_8php.html" target="_self">poke.php</a></td><td class="desc"></td></tr>
+<tr id="row_1_84_" class="even" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2doc.png" alt="*" width="24" height="22" /><a class="el" href="poll_8php.html" target="_self">poll.php</a></td><td class="desc"></td></tr>
+<tr id="row_1_85_" class="even" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2doc.png" alt="*" width="24" height="22" /><a class="el" href="post_8php.html" target="_self">post.php</a></td><td class="desc"></td></tr>
+<tr id="row_1_86_" class="even" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2doc.png" alt="*" width="24" height="22" /><a class="el" href="pretheme_8php.html" target="_self">pretheme.php</a></td><td class="desc"></td></tr>
+<tr id="row_1_87_" class="even" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2doc.png" alt="*" width="24" height="22" /><a class="el" href="mod_2probe_8php.html" target="_self">probe.php</a></td><td class="desc"></td></tr>
+<tr id="row_1_88_" class="even" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2doc.png" alt="*" width="24" height="22" /><a class="el" href="profile_8php.html" target="_self">profile.php</a></td><td class="desc"></td></tr>
+<tr id="row_1_89_" class="even" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2doc.png" alt="*" width="24" height="22" /><a class="el" href="profile__photo_8php.html" target="_self">profile_photo.php</a></td><td class="desc"></td></tr>
+<tr id="row_1_90_" class="even" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2doc.png" alt="*" width="24" height="22" /><a class="el" href="profiles_8php.html" target="_self">profiles.php</a></td><td class="desc"></td></tr>
+<tr id="row_1_91_" class="even" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2doc.png" alt="*" width="24" height="22" /><a class="el" href="profperm_8php.html" target="_self">profperm.php</a></td><td class="desc"></td></tr>
+<tr id="row_1_92_" class="even" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2doc.png" alt="*" width="24" height="22" /><a class="el" href="pubsites_8php.html" target="_self">pubsites.php</a></td><td class="desc"></td></tr>
+<tr id="row_1_93_" class="even" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2doc.png" alt="*" width="24" height="22" /><a class="el" href="randprof_8php.html" target="_self">randprof.php</a></td><td class="desc"></td></tr>
+<tr id="row_1_94_" class="even" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2doc.png" alt="*" width="24" height="22" /><a class="el" href="rbmark_8php.html" target="_self">rbmark.php</a></td><td class="desc"></td></tr>
+<tr id="row_1_95_" class="even" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2doc.png" alt="*" width="24" height="22" /><a class="el" href="receive_8php.html" target="_self">receive.php</a></td><td class="desc"></td></tr>
+<tr id="row_1_96_" class="even" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2doc.png" alt="*" width="24" height="22" /><a class="el" href="register_8php.html" target="_self">register.php</a></td><td class="desc"></td></tr>
+<tr id="row_1_97_" class="even" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2doc.png" alt="*" width="24" height="22" /><a class="el" href="regmod_8php.html" target="_self">regmod.php</a></td><td class="desc"></td></tr>
+<tr id="row_1_98_" class="even" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2doc.png" alt="*" width="24" height="22" /><a class="el" href="regver_8php.html" target="_self">regver.php</a></td><td class="desc"></td></tr>
+<tr id="row_1_99_" class="even" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2doc.png" alt="*" width="24" height="22" /><a class="el" href="removeaccount_8php.html" target="_self">removeaccount.php</a></td><td class="desc"></td></tr>
+<tr id="row_1_100_" class="even" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2doc.png" alt="*" width="24" height="22" /><a class="el" href="removeme_8php.html" target="_self">removeme.php</a></td><td class="desc"></td></tr>
+<tr id="row_1_101_" class="even" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2doc.png" alt="*" width="24" height="22" /><a class="el" href="rmagic_8php.html" target="_self">rmagic.php</a></td><td class="desc"></td></tr>
+<tr id="row_1_102_" class="even" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2doc.png" alt="*" width="24" height="22" /><a class="el" href="rpost_8php.html" target="_self">rpost.php</a></td><td class="desc"></td></tr>
+<tr id="row_1_103_" class="even" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2doc.png" alt="*" width="24" height="22" /><a class="el" href="rsd__xml_8php.html" target="_self">rsd_xml.php</a></td><td class="desc"></td></tr>
+<tr id="row_1_104_" class="even" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2doc.png" alt="*" width="24" height="22" /><a class="el" href="search_8php.html" target="_self">search.php</a></td><td class="desc"></td></tr>
+<tr id="row_1_105_" class="even" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2doc.png" alt="*" width="24" height="22" /><a class="el" href="search__ac_8php.html" target="_self">search_ac.php</a></td><td class="desc"></td></tr>
+<tr id="row_1_106_" class="even" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2doc.png" alt="*" width="24" height="22" /><a class="el" href="service__limits_8php.html" target="_self">service_limits.php</a></td><td class="desc"></td></tr>
+<tr id="row_1_107_" class="even" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2doc.png" alt="*" width="24" height="22" /><a class="el" href="settings_8php.html" target="_self">settings.php</a></td><td class="desc"></td></tr>
+<tr id="row_1_108_" class="even" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2doc.png" alt="*" width="24" height="22" /><a class="el" href="setup_8php.html" target="_self">setup.php</a></td><td class="desc"></td></tr>
+<tr id="row_1_109_" class="even" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2doc.png" alt="*" width="24" height="22" /><a class="el" href="share_8php.html" target="_self">share.php</a></td><td class="desc"></td></tr>
+<tr id="row_1_110_" class="even" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2doc.png" alt="*" width="24" height="22" /><a class="el" href="siteinfo_8php.html" target="_self">siteinfo.php</a></td><td class="desc"></td></tr>
+<tr id="row_1_111_" class="even" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2doc.png" alt="*" width="24" height="22" /><a class="el" href="sitelist_8php.html" target="_self">sitelist.php</a></td><td class="desc"></td></tr>
+<tr id="row_1_112_" class="even" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2doc.png" alt="*" width="24" height="22" /><a class="el" href="smilies_8php.html" target="_self">smilies.php</a></td><td class="desc"></td></tr>
+<tr id="row_1_113_" class="even" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2doc.png" alt="*" width="24" height="22" /><a class="el" href="sources_8php.html" target="_self">sources.php</a></td><td class="desc"></td></tr>
+<tr id="row_1_114_" class="even" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2doc.png" alt="*" width="24" height="22" /><a class="el" href="sslify_8php.html" target="_self">sslify.php</a></td><td class="desc"></td></tr>
+<tr id="row_1_115_" class="even" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2doc.png" alt="*" width="24" height="22" /><a class="el" href="starred_8php.html" target="_self">starred.php</a></td><td class="desc"></td></tr>
+<tr id="row_1_116_" class="even" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2doc.png" alt="*" width="24" height="22" /><a class="el" href="subthread_8php.html" target="_self">subthread.php</a></td><td class="desc"></td></tr>
+<tr id="row_1_117_" class="even" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2doc.png" alt="*" width="24" height="22" /><a class="el" href="suggest_8php.html" target="_self">suggest.php</a></td><td class="desc"></td></tr>
+<tr id="row_1_118_" class="even" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2doc.png" alt="*" width="24" height="22" /><a class="el" href="tagger_8php.html" target="_self">tagger.php</a></td><td class="desc"></td></tr>
+<tr id="row_1_119_" class="even" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2doc.png" alt="*" width="24" height="22" /><a class="el" href="tagrm_8php.html" target="_self">tagrm.php</a></td><td class="desc"></td></tr>
+<tr id="row_1_120_" class="even" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2doc.png" alt="*" width="24" height="22" /><a class="el" href="thing_8php.html" target="_self">thing.php</a></td><td class="desc"></td></tr>
+<tr id="row_1_121_" class="even" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2doc.png" alt="*" width="24" height="22" /><a class="el" href="toggle__mobile_8php.html" target="_self">toggle_mobile.php</a></td><td class="desc"></td></tr>
+<tr id="row_1_122_" class="even" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2doc.png" alt="*" width="24" height="22" /><a class="el" href="toggle__safesearch_8php.html" target="_self">toggle_safesearch.php</a></td><td class="desc"></td></tr>
+<tr id="row_1_123_" class="even" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2doc.png" alt="*" width="24" height="22" /><a class="el" href="uexport_8php.html" target="_self">uexport.php</a></td><td class="desc"></td></tr>
+<tr id="row_1_124_" class="even" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2doc.png" alt="*" width="24" height="22" /><a class="el" href="update__channel_8php.html" target="_self">update_channel.php</a></td><td class="desc"></td></tr>
+<tr id="row_1_125_" class="even" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2doc.png" alt="*" width="24" height="22" /><a class="el" href="update__display_8php.html" target="_self">update_display.php</a></td><td class="desc"></td></tr>
+<tr id="row_1_126_" class="even" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2doc.png" alt="*" width="24" height="22" /><a class="el" href="update__home_8php.html" target="_self">update_home.php</a></td><td class="desc"></td></tr>
+<tr id="row_1_127_" class="even" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2doc.png" alt="*" width="24" height="22" /><a class="el" href="update__network_8php.html" target="_self">update_network.php</a></td><td class="desc"></td></tr>
+<tr id="row_1_128_" class="even" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2doc.png" alt="*" width="24" height="22" /><a class="el" href="update__search_8php.html" target="_self">update_search.php</a></td><td class="desc"></td></tr>
+<tr id="row_1_129_" class="even" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2doc.png" alt="*" width="24" height="22" /><a class="el" href="view_8php.html" target="_self">view.php</a></td><td class="desc"></td></tr>
+<tr id="row_1_130_" class="even" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2doc.png" alt="*" width="24" height="22" /><a class="el" href="viewconnections_8php.html" target="_self">viewconnections.php</a></td><td class="desc"></td></tr>
+<tr id="row_1_131_" class="even" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2doc.png" alt="*" width="24" height="22" /><a class="el" href="viewsrc_8php.html" target="_self">viewsrc.php</a></td><td class="desc"></td></tr>
+<tr id="row_1_132_" class="even" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2doc.png" alt="*" width="24" height="22" /><a class="el" href="vote_8php.html" target="_self">vote.php</a></td><td class="desc"></td></tr>
+<tr id="row_1_133_" class="even" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2doc.png" alt="*" width="24" height="22" /><a class="el" href="wall__attach_8php.html" target="_self">wall_attach.php</a></td><td class="desc"></td></tr>
+<tr id="row_1_134_" class="even" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2doc.png" alt="*" width="24" height="22" /><a class="el" href="wall__upload_8php.html" target="_self">wall_upload.php</a></td><td class="desc"></td></tr>
+<tr id="row_1_135_" class="even" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2doc.png" alt="*" width="24" height="22" /><a class="el" href="webfinger_8php.html" target="_self">webfinger.php</a></td><td class="desc"></td></tr>
+<tr id="row_1_136_" class="even" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2doc.png" alt="*" width="24" height="22" /><a class="el" href="webpages_8php.html" target="_self">webpages.php</a></td><td class="desc"></td></tr>
+<tr id="row_1_137_" class="even" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2doc.png" alt="*" width="24" height="22" /><a class="el" href="wfinger_8php.html" target="_self">wfinger.php</a></td><td class="desc"></td></tr>
+<tr id="row_1_138_" class="even" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2doc.png" alt="*" width="24" height="22" /><a class="el" href="xchan_8php.html" target="_self">xchan.php</a></td><td class="desc"></td></tr>
+<tr id="row_1_139_" class="even" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2doc.png" alt="*" width="24" height="22" /><a class="el" href="xrd_8php.html" target="_self">xrd.php</a></td><td class="desc"></td></tr>
+<tr id="row_1_140_" class="even" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2doc.png" alt="*" width="24" height="22" /><a class="el" href="xref_8php.html" target="_self">xref.php</a></td><td class="desc"></td></tr>
+<tr id="row_1_141_" class="even" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2doc.png" alt="*" width="24" height="22" /><a class="el" href="zfinger_8php.html" target="_self">zfinger.php</a></td><td class="desc"></td></tr>
+<tr id="row_1_142_" class="even" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2doc.png" alt="*" width="24" height="22" /><a class="el" href="zotfeed_8php.html" target="_self">zotfeed.php</a></td><td class="desc"></td></tr>
+<tr id="row_1_143_" class="even" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2lastnode.png" alt="\" width="16" height="22" /><img src="ftv2doc.png" alt="*" width="24" height="22" /><a class="el" href="zping_8php.html" target="_self">zping.php</a></td><td class="desc"></td></tr>
<tr id="row_2_" class="even"><td class="entry"><img id="arr_2_" src="ftv2pnode.png" alt="o" width="16" height="22" onclick="toggleFolder('2_')"/><img id="img_2_" src="ftv2folderclosed.png" alt="+" width="24" height="22" onclick="toggleFolder('2_')"/><a class="el" href="dir_23ec12649285f9fabf3a6b7380226c28.html" target="_self">util</a></td><td class="desc"></td></tr>
<tr id="row_2_0_" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img id="arr_2_0_" src="ftv2pnode.png" alt="o" width="16" height="22" onclick="toggleFolder('2_0_')"/><img id="img_2_0_" src="ftv2folderclosed.png" alt="+" width="24" height="22" onclick="toggleFolder('2_0_')"/><a class="el" href="dir_0eaa4a0adae8ba4811e133c6e594aeee.html" target="_self">fpostit</a></td><td class="desc"></td></tr>
<tr id="row_2_0_0_" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2lastnode.png" alt="\" width="16" height="22" /><img src="ftv2doc.png" alt="*" width="24" height="22" /><a class="el" href="fpostit_8php.html" target="_self">fpostit.php</a></td><td class="desc"></td></tr>
-<tr id="row_2_1_" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img id="arr_2_1_" src="ftv2pnode.png" alt="o" width="16" height="22" onclick="toggleFolder('2_1_')"/><img id="img_2_1_" src="ftv2folderclosed.png" alt="+" width="24" height="22" onclick="toggleFolder('2_1_')"/><a class="el" href="dir_720432dea4a717197ae070dbc42b8f20.html" target="_self">wp</a></td><td class="desc"></td></tr>
-<tr id="row_2_1_0_" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img id="arr_2_1_0_" src="ftv2plastnode.png" alt="\" width="16" height="22" onclick="toggleFolder('2_1_0_')"/><img id="img_2_1_0_" src="ftv2folderclosed.png" alt="+" width="24" height="22" onclick="toggleFolder('2_1_0_')"/><a class="el" href="dir_25f74a9991dbbca1b52a94e358ca73c1.html" target="_self">post_to_red</a></td><td class="desc"></td></tr>
-<tr id="row_2_1_0_0_" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2blank.png" alt="&#160;" width="16" height="22" /><img src="ftv2lastnode.png" alt="\" width="16" height="22" /><img src="ftv2doc.png" alt="*" width="24" height="22" /><a class="el" href="post__to__red_8php.html" target="_self">post_to_red.php</a></td><td class="desc"></td></tr>
-<tr id="row_2_2_" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2doc.png" alt="*" width="24" height="22" /><a class="el" href="db__update_8php.html" target="_self">db_update.php</a></td><td class="desc"></td></tr>
-<tr id="row_2_3_" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2doc.png" alt="*" width="24" height="22" /><a class="el" href="docblox__errorchecker_8php.html" target="_self">docblox_errorchecker.php</a></td><td class="desc"></td></tr>
-<tr id="row_2_4_" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2doc.png" alt="*" width="24" height="22" /><a class="el" href="extract_8php.html" target="_self">extract.php</a></td><td class="desc"></td></tr>
-<tr id="row_2_5_" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2doc.png" alt="*" width="24" height="22" /><a class="el" href="friendica-to-smarty-tpl_8py.html" target="_self">friendica-to-smarty-tpl.py</a></td><td class="desc"></td></tr>
-<tr id="row_2_6_" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2doc.png" alt="*" width="24" height="22" /><a class="el" href="php2po_8php.html" target="_self">php2po.php</a></td><td class="desc"></td></tr>
-<tr id="row_2_7_" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2doc.png" alt="*" width="24" height="22" /><a class="el" href="po2php_8php.html" target="_self">po2php.php</a></td><td class="desc"></td></tr>
-<tr id="row_2_8_" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2doc.png" alt="*" width="24" height="22" /><a class="el" href="tpldebug_8php.html" target="_self">tpldebug.php</a></td><td class="desc"></td></tr>
-<tr id="row_2_9_" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2doc.png" alt="*" width="24" height="22" /><a class="el" href="typo_8php.html" target="_self">typo.php</a></td><td class="desc"></td></tr>
-<tr id="row_2_10_" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2doc.png" alt="*" width="24" height="22" /><a class="el" href="typohelper_8php.html" target="_self">typohelper.php</a></td><td class="desc"></td></tr>
-<tr id="row_2_11_" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2lastnode.png" alt="\" width="16" height="22" /><img src="ftv2doc.png" alt="*" width="24" height="22" /><a class="el" href="updatetpl_8py.html" target="_self">updatetpl.py</a></td><td class="desc"></td></tr>
+<tr id="row_2_1_" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2doc.png" alt="*" width="24" height="22" /><a class="el" href="db__update_8php.html" target="_self">db_update.php</a></td><td class="desc"></td></tr>
+<tr id="row_2_2_" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2doc.png" alt="*" width="24" height="22" /><a class="el" href="docblox__errorchecker_8php.html" target="_self">docblox_errorchecker.php</a></td><td class="desc"></td></tr>
+<tr id="row_2_3_" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2doc.png" alt="*" width="24" height="22" /><a class="el" href="extract_8php.html" target="_self">extract.php</a></td><td class="desc"></td></tr>
+<tr id="row_2_4_" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2doc.png" alt="*" width="24" height="22" /><a class="el" href="friendica-to-smarty-tpl_8py.html" target="_self">friendica-to-smarty-tpl.py</a></td><td class="desc"></td></tr>
+<tr id="row_2_5_" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2doc.png" alt="*" width="24" height="22" /><a class="el" href="php2po_8php.html" target="_self">php2po.php</a></td><td class="desc"></td></tr>
+<tr id="row_2_6_" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2doc.png" alt="*" width="24" height="22" /><a class="el" href="po2php_8php.html" target="_self">po2php.php</a></td><td class="desc"></td></tr>
+<tr id="row_2_7_" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2doc.png" alt="*" width="24" height="22" /><a class="el" href="tpldebug_8php.html" target="_self">tpldebug.php</a></td><td class="desc"></td></tr>
+<tr id="row_2_8_" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2doc.png" alt="*" width="24" height="22" /><a class="el" href="typo_8php.html" target="_self">typo.php</a></td><td class="desc"></td></tr>
+<tr id="row_2_9_" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2doc.png" alt="*" width="24" height="22" /><a class="el" href="typohelper_8php.html" target="_self">typohelper.php</a></td><td class="desc"></td></tr>
+<tr id="row_2_10_" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2lastnode.png" alt="\" width="16" height="22" /><img src="ftv2doc.png" alt="*" width="24" height="22" /><a class="el" href="updatetpl_8py.html" target="_self">updatetpl.py</a></td><td class="desc"></td></tr>
<tr id="row_3_"><td class="entry"><img id="arr_3_" src="ftv2pnode.png" alt="o" width="16" height="22" onclick="toggleFolder('3_')"/><img id="img_3_" src="ftv2folderclosed.png" alt="+" width="24" height="22" onclick="toggleFolder('3_')"/><a class="el" href="dir_b2f003339c516cc00c8cadcafbe82f13.html" target="_self">view</a></td><td class="desc"></td></tr>
<tr id="row_3_0_" class="even" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img id="arr_3_0_" src="ftv2pnode.png" alt="o" width="16" height="22" onclick="toggleFolder('3_0_')"/><img id="img_3_0_" src="ftv2folderclosed.png" alt="+" width="24" height="22" onclick="toggleFolder('3_0_')"/><a class="el" href="dir_817f6d302394b98e59575acdb59998bc.html" target="_self">php</a></td><td class="desc"></td></tr>
<tr id="row_3_0_0_" class="even" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2doc.png" alt="*" width="24" height="22" /><a class="el" href="choklet_8php.html" target="_self">choklet.php</a></td><td class="desc"></td></tr>
@@ -357,7 +373,8 @@ $(document).ready(function(){initNavTree('files.html','');});
<tr id="row_3_0_3_" class="even" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2doc.png" alt="*" width="24" height="22" /><a class="el" href="minimal_8php.html" target="_self">minimal.php</a></td><td class="desc"></td></tr>
<tr id="row_3_0_4_" class="even" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2doc.png" alt="*" width="24" height="22" /><a class="el" href="mod__import_8php.html" target="_self">mod_import.php</a></td><td class="desc"></td></tr>
<tr id="row_3_0_5_" class="even" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2doc.png" alt="*" width="24" height="22" /><a class="el" href="none_8php.html" target="_self">none.php</a></td><td class="desc"></td></tr>
-<tr id="row_3_0_6_" class="even" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2lastnode.png" alt="\" width="16" height="22" /><img src="ftv2doc.png" alt="*" width="24" height="22" /><a class="el" href="php_2theme__init_8php.html" target="_self">theme_init.php</a></td><td class="desc"></td></tr>
+<tr id="row_3_0_6_" class="even" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2doc.png" alt="*" width="24" height="22" /><a class="el" href="redable_8php.html" target="_self">redable.php</a></td><td class="desc"></td></tr>
+<tr id="row_3_0_7_" class="even" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2lastnode.png" alt="\" width="16" height="22" /><img src="ftv2doc.png" alt="*" width="24" height="22" /><a class="el" href="php_2theme__init_8php.html" target="_self">theme_init.php</a></td><td class="desc"></td></tr>
<tr id="row_3_1_" class="even" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img id="arr_3_1_" src="ftv2plastnode.png" alt="\" width="16" height="22" onclick="toggleFolder('3_1_')"/><img id="img_3_1_" src="ftv2folderclosed.png" alt="+" width="24" height="22" onclick="toggleFolder('3_1_')"/><a class="el" href="dir_8543001e5d25368a6edede3e63efb554.html" target="_self">theme</a></td><td class="desc"></td></tr>
<tr id="row_3_1_0_" class="even" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2blank.png" alt="&#160;" width="16" height="22" /><img id="arr_3_1_0_" src="ftv2pnode.png" alt="o" width="16" height="22" onclick="toggleFolder('3_1_0_')"/><img id="img_3_1_0_" src="ftv2folderclosed.png" alt="+" width="24" height="22" onclick="toggleFolder('3_1_0_')"/><a class="el" href="dir_d520c5cf583201d9437764f209363c22.html" target="_self">apw</a></td><td class="desc"></td></tr>
<tr id="row_3_1_0_0_" class="even" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2blank.png" alt="&#160;" width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img id="arr_3_1_0_0_" src="ftv2pnode.png" alt="o" width="16" height="22" onclick="toggleFolder('3_1_0_0_')"/><img id="img_3_1_0_0_" src="ftv2folderclosed.png" alt="+" width="24" height="22" onclick="toggleFolder('3_1_0_0_')"/><a class="el" href="dir_f19da925ee886ec38f19b0e8c19779bc.html" target="_self">css</a></td><td class="desc"></td></tr>
@@ -380,34 +397,37 @@ $(document).ready(function(){initNavTree('files.html','');});
<tr id="row_3_1_0_2_8_" class="even" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2blank.png" alt="&#160;" width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2blank.png" alt="&#160;" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2doc.png" alt="*" width="24" height="22" /><a class="el" href="pine_8php.html" target="_self">pine.php</a></td><td class="desc"></td></tr>
<tr id="row_3_1_0_2_9_" class="even" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2blank.png" alt="&#160;" width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2blank.png" alt="&#160;" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2doc.png" alt="*" width="24" height="22" /><a class="el" href="redbasic_8php.html" target="_self">redbasic.php</a></td><td class="desc"></td></tr>
<tr id="row_3_1_0_2_10_" class="even" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2blank.png" alt="&#160;" width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2blank.png" alt="&#160;" width="16" height="22" /><img src="ftv2lastnode.png" alt="\" width="16" height="22" /><img src="ftv2doc.png" alt="*" width="24" height="22" /><a class="el" href="widedarkness_8php.html" target="_self">widedarkness.php</a></td><td class="desc"></td></tr>
-<tr id="row_3_1_1_" class="even" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2blank.png" alt="&#160;" width="16" height="22" /><img id="arr_3_1_1_" src="ftv2pnode.png" alt="o" width="16" height="22" onclick="toggleFolder('3_1_1_')"/><img id="img_3_1_1_" src="ftv2folderclosed.png" alt="+" width="24" height="22" onclick="toggleFolder('3_1_1_')"/><a class="el" href="dir_922c77e958c99a98db92d38a3a349bf2.html" target="_self">blogga</a></td><td class="desc"></td></tr>
-<tr id="row_3_1_1_0_" class="even" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2blank.png" alt="&#160;" width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img id="arr_3_1_1_0_" src="ftv2pnode.png" alt="o" width="16" height="22" onclick="toggleFolder('3_1_1_0_')"/><img id="img_3_1_1_0_" src="ftv2folderclosed.png" alt="+" width="24" height="22" onclick="toggleFolder('3_1_1_0_')"/><a class="el" href="dir_c02447ad39a5307c81c64e880ec9e8d3.html" target="_self">php</a></td><td class="desc"></td></tr>
-<tr id="row_3_1_1_0_0_" class="even" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2blank.png" alt="&#160;" width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2doc.png" alt="*" width="24" height="22" /><a class="el" href="view_2theme_2blogga_2php_2config_8php.html" target="_self">config.php</a></td><td class="desc"></td></tr>
-<tr id="row_3_1_1_0_1_" class="even" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2blank.png" alt="&#160;" width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2doc.png" alt="*" width="24" height="22" /><a class="el" href="theme_2blogga_2php_2default_8php.html" target="_self">default.php</a></td><td class="desc"></td></tr>
-<tr id="row_3_1_1_0_2_" class="even" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2blank.png" alt="&#160;" width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2doc.png" alt="*" width="24" height="22" /><a class="el" href="blogga_2php_2theme_8php.html" target="_self">theme.php</a></td><td class="desc"></td></tr>
-<tr id="row_3_1_1_0_3_" class="even" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2blank.png" alt="&#160;" width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2lastnode.png" alt="\" width="16" height="22" /><img src="ftv2doc.png" alt="*" width="24" height="22" /><a class="el" href="theme_2blogga_2php_2theme__init_8php.html" target="_self">theme_init.php</a></td><td class="desc"></td></tr>
-<tr id="row_3_1_1_1_" class="even" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2blank.png" alt="&#160;" width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img id="arr_3_1_1_1_" src="ftv2plastnode.png" alt="\" width="16" height="22" onclick="toggleFolder('3_1_1_1_')"/><img id="img_3_1_1_1_" src="ftv2folderclosed.png" alt="+" width="24" height="22" onclick="toggleFolder('3_1_1_1_')"/><a class="el" href="dir_92d6b429199666aa3765c8a934db5e14.html" target="_self">view</a></td><td class="desc"></td></tr>
-<tr id="row_3_1_1_1_0_" class="even" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2blank.png" alt="&#160;" width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2blank.png" alt="&#160;" width="16" height="22" /><img id="arr_3_1_1_1_0_" src="ftv2plastnode.png" alt="\" width="16" height="22" onclick="toggleFolder('3_1_1_1_0_')"/><img id="img_3_1_1_1_0_" src="ftv2folderclosed.png" alt="+" width="24" height="22" onclick="toggleFolder('3_1_1_1_0_')"/><a class="el" href="dir_6cee3bb9ace89cc4e2f065aa2ca7bc5b.html" target="_self">theme</a></td><td class="desc"></td></tr>
-<tr id="row_3_1_1_1_0_0_" class="even" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2blank.png" alt="&#160;" width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2blank.png" alt="&#160;" width="16" height="22" /><img src="ftv2blank.png" alt="&#160;" width="16" height="22" /><img id="arr_3_1_1_1_0_0_" src="ftv2plastnode.png" alt="\" width="16" height="22" onclick="toggleFolder('3_1_1_1_0_0_')"/><img id="img_3_1_1_1_0_0_" src="ftv2folderclosed.png" alt="+" width="24" height="22" onclick="toggleFolder('3_1_1_1_0_0_')"/><a class="el" href="dir_a8a0005c2b8590c535262d232c22afab.html" target="_self">blog</a></td><td class="desc"></td></tr>
-<tr id="row_3_1_1_1_0_0_0_" class="even" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2blank.png" alt="&#160;" width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2blank.png" alt="&#160;" width="16" height="22" /><img src="ftv2blank.png" alt="&#160;" width="16" height="22" /><img src="ftv2blank.png" alt="&#160;" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2doc.png" alt="*" width="24" height="22" /><a class="el" href="view_2theme_2blogga_2view_2theme_2blog_2config_8php.html" target="_self">config.php</a></td><td class="desc"></td></tr>
-<tr id="row_3_1_1_1_0_0_1_" class="even" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2blank.png" alt="&#160;" width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2blank.png" alt="&#160;" width="16" height="22" /><img src="ftv2blank.png" alt="&#160;" width="16" height="22" /><img src="ftv2blank.png" alt="&#160;" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2doc.png" alt="*" width="24" height="22" /><a class="el" href="theme_2blogga_2view_2theme_2blog_2default_8php.html" target="_self">default.php</a></td><td class="desc"></td></tr>
-<tr id="row_3_1_1_1_0_0_2_" class="even" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2blank.png" alt="&#160;" width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2blank.png" alt="&#160;" width="16" height="22" /><img src="ftv2blank.png" alt="&#160;" width="16" height="22" /><img src="ftv2blank.png" alt="&#160;" width="16" height="22" /><img src="ftv2lastnode.png" alt="\" width="16" height="22" /><img src="ftv2doc.png" alt="*" width="24" height="22" /><a class="el" href="blogga_2view_2theme_2blog_2theme_8php.html" target="_self">theme.php</a></td><td class="desc"></td></tr>
+<tr id="row_3_1_1_" class="even" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2blank.png" alt="&#160;" width="16" height="22" /><img id="arr_3_1_1_" src="ftv2pnode.png" alt="o" width="16" height="22" onclick="toggleFolder('3_1_1_')"/><img id="img_3_1_1_" src="ftv2folderclosed.png" alt="+" width="24" height="22" onclick="toggleFolder('3_1_1_')"/><a class="el" href="dir_6e52a2a2cd27c08b7df5e5cdb216bd77.html" target="_self">hivenet</a></td><td class="desc"></td></tr>
+<tr id="row_3_1_1_0_" class="even" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2blank.png" alt="&#160;" width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img id="arr_3_1_1_0_" src="ftv2plastnode.png" alt="\" width="16" height="22" onclick="toggleFolder('3_1_1_0_')"/><img id="img_3_1_1_0_" src="ftv2folderclosed.png" alt="+" width="24" height="22" onclick="toggleFolder('3_1_1_0_')"/><a class="el" href="dir_9ef82eb3846cd201470898c3b6ef38cf.html" target="_self">php</a></td><td class="desc"></td></tr>
+<tr id="row_3_1_1_0_0_" class="even" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2blank.png" alt="&#160;" width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2blank.png" alt="&#160;" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2doc.png" alt="*" width="24" height="22" /><a class="el" href="hivenet_2php_2style_8php.html" target="_self">style.php</a></td><td class="desc"></td></tr>
+<tr id="row_3_1_1_0_1_" class="even" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2blank.png" alt="&#160;" width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2blank.png" alt="&#160;" width="16" height="22" /><img src="ftv2lastnode.png" alt="\" width="16" height="22" /><img src="ftv2doc.png" alt="*" width="24" height="22" /><a class="el" href="hivenet_2php_2theme_8php.html" target="_self">theme.php</a></td><td class="desc"></td></tr>
<tr id="row_3_1_2_" class="even" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2blank.png" alt="&#160;" width="16" height="22" /><img id="arr_3_1_2_" src="ftv2pnode.png" alt="o" width="16" height="22" onclick="toggleFolder('3_1_2_')"/><img id="img_3_1_2_" src="ftv2folderclosed.png" alt="+" width="24" height="22" onclick="toggleFolder('3_1_2_')"/><a class="el" href="dir_8e58ba5e98ac07e59ee15ca7486c9950.html" target="_self">mytheme</a></td><td class="desc"></td></tr>
<tr id="row_3_1_2_0_" class="even" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2blank.png" alt="&#160;" width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img id="arr_3_1_2_0_" src="ftv2plastnode.png" alt="\" width="16" height="22" onclick="toggleFolder('3_1_2_0_')"/><img id="img_3_1_2_0_" src="ftv2folderclosed.png" alt="+" width="24" height="22" onclick="toggleFolder('3_1_2_0_')"/><a class="el" href="dir_887fdc94312ba7b057b6bfe7fdd27ea5.html" target="_self">php</a></td><td class="desc"></td></tr>
<tr id="row_3_1_2_0_0_" class="even" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2blank.png" alt="&#160;" width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2blank.png" alt="&#160;" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2doc.png" alt="*" width="24" height="22" /><a class="el" href="theme_2mytheme_2php_2default_8php.html" target="_self">default.php</a></td><td class="desc"></td></tr>
<tr id="row_3_1_2_0_1_" class="even" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2blank.png" alt="&#160;" width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2blank.png" alt="&#160;" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2doc.png" alt="*" width="24" height="22" /><a class="el" href="mytheme_2php_2style_8php.html" target="_self">style.php</a></td><td class="desc"></td></tr>
<tr id="row_3_1_2_0_2_" class="even" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2blank.png" alt="&#160;" width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2blank.png" alt="&#160;" width="16" height="22" /><img src="ftv2lastnode.png" alt="\" width="16" height="22" /><img src="ftv2doc.png" alt="*" width="24" height="22" /><a class="el" href="mytheme_2php_2theme_8php.html" target="_self">theme.php</a></td><td class="desc"></td></tr>
-<tr id="row_3_1_3_" class="even" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2blank.png" alt="&#160;" width="16" height="22" /><img id="arr_3_1_3_" src="ftv2plastnode.png" alt="\" width="16" height="22" onclick="toggleFolder('3_1_3_')"/><img id="img_3_1_3_" src="ftv2folderclosed.png" alt="+" width="24" height="22" onclick="toggleFolder('3_1_3_')"/><a class="el" href="dir_55dbaf9b7b53c4fc605c9011743a7353.html" target="_self">redbasic</a></td><td class="desc"></td></tr>
-<tr id="row_3_1_3_0_" class="even" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2blank.png" alt="&#160;" width="16" height="22" /><img src="ftv2blank.png" alt="&#160;" width="16" height="22" /><img id="arr_3_1_3_0_" src="ftv2pnode.png" alt="o" width="16" height="22" onclick="toggleFolder('3_1_3_0_')"/><img id="img_3_1_3_0_" src="ftv2folderclosed.png" alt="+" width="24" height="22" onclick="toggleFolder('3_1_3_0_')"/><a class="el" href="dir_032dd9e2cfe278a2cfa5eb9547448eb9.html" target="_self">php</a></td><td class="desc"></td></tr>
-<tr id="row_3_1_3_0_0_" class="even" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2blank.png" alt="&#160;" width="16" height="22" /><img src="ftv2blank.png" alt="&#160;" width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2doc.png" alt="*" width="24" height="22" /><a class="el" href="view_2theme_2redbasic_2php_2config_8php.html" target="_self">config.php</a></td><td class="desc"></td></tr>
-<tr id="row_3_1_3_0_1_" class="even" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2blank.png" alt="&#160;" width="16" height="22" /><img src="ftv2blank.png" alt="&#160;" width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2doc.png" alt="*" width="24" height="22" /><a class="el" href="redbasic_2php_2style_8php.html" target="_self">style.php</a></td><td class="desc"></td></tr>
-<tr id="row_3_1_3_0_2_" class="even" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2blank.png" alt="&#160;" width="16" height="22" /><img src="ftv2blank.png" alt="&#160;" width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2doc.png" alt="*" width="24" height="22" /><a class="el" href="redbasic_2php_2theme_8php.html" target="_self">theme.php</a></td><td class="desc"></td></tr>
-<tr id="row_3_1_3_0_3_" class="even" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2blank.png" alt="&#160;" width="16" height="22" /><img src="ftv2blank.png" alt="&#160;" width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2lastnode.png" alt="\" width="16" height="22" /><img src="ftv2doc.png" alt="*" width="24" height="22" /><a class="el" href="theme_2redbasic_2php_2theme__init_8php.html" target="_self">theme_init.php</a></td><td class="desc"></td></tr>
-<tr id="row_3_1_3_1_" class="even" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2blank.png" alt="&#160;" width="16" height="22" /><img src="ftv2blank.png" alt="&#160;" width="16" height="22" /><img id="arr_3_1_3_1_" src="ftv2plastnode.png" alt="\" width="16" height="22" onclick="toggleFolder('3_1_3_1_')"/><img id="img_3_1_3_1_" src="ftv2folderclosed.png" alt="+" width="24" height="22" onclick="toggleFolder('3_1_3_1_')"/><a class="el" href="dir_3d9c9d0c5e9556dd3eba1e072fa6eaeb.html" target="_self">schema</a></td><td class="desc"></td></tr>
-<tr id="row_3_1_3_1_0_" class="even" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2blank.png" alt="&#160;" width="16" height="22" /><img src="ftv2blank.png" alt="&#160;" width="16" height="22" /><img src="ftv2blank.png" alt="&#160;" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2doc.png" alt="*" width="24" height="22" /><a class="el" href="boxy_8php.html" target="_self">boxy.php</a></td><td class="desc"></td></tr>
-<tr id="row_3_1_3_1_1_" class="even" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2blank.png" alt="&#160;" width="16" height="22" /><img src="ftv2blank.png" alt="&#160;" width="16" height="22" /><img src="ftv2blank.png" alt="&#160;" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2doc.png" alt="*" width="24" height="22" /><a class="el" href="BS-Default_8php.html" target="_self">BS-Default.php</a></td><td class="desc"></td></tr>
-<tr id="row_3_1_3_1_2_" class="even" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2blank.png" alt="&#160;" width="16" height="22" /><img src="ftv2blank.png" alt="&#160;" width="16" height="22" /><img src="ftv2blank.png" alt="&#160;" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2doc.png" alt="*" width="24" height="22" /><a class="el" href="dark_8php.html" target="_self">dark.php</a></td><td class="desc"></td></tr>
-<tr id="row_3_1_3_1_3_" class="even" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2blank.png" alt="&#160;" width="16" height="22" /><img src="ftv2blank.png" alt="&#160;" width="16" height="22" /><img src="ftv2blank.png" alt="&#160;" width="16" height="22" /><img src="ftv2lastnode.png" alt="\" width="16" height="22" /><img src="ftv2doc.png" alt="*" width="24" height="22" /><a class="el" href="notred_8php.html" target="_self">notred.php</a></td><td class="desc"></td></tr>
+<tr id="row_3_1_3_" class="even" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2blank.png" alt="&#160;" width="16" height="22" /><img id="arr_3_1_3_" src="ftv2pnode.png" alt="o" width="16" height="22" onclick="toggleFolder('3_1_3_')"/><img id="img_3_1_3_" src="ftv2folderclosed.png" alt="+" width="24" height="22" onclick="toggleFolder('3_1_3_')"/><a class="el" href="dir_55dbaf9b7b53c4fc605c9011743a7353.html" target="_self">redbasic</a></td><td class="desc"></td></tr>
+<tr id="row_3_1_3_0_" class="even" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2blank.png" alt="&#160;" width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img id="arr_3_1_3_0_" src="ftv2pnode.png" alt="o" width="16" height="22" onclick="toggleFolder('3_1_3_0_')"/><img id="img_3_1_3_0_" src="ftv2folderclosed.png" alt="+" width="24" height="22" onclick="toggleFolder('3_1_3_0_')"/><a class="el" href="dir_032dd9e2cfe278a2cfa5eb9547448eb9.html" target="_self">php</a></td><td class="desc"></td></tr>
+<tr id="row_3_1_3_0_0_" class="even" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2blank.png" alt="&#160;" width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2doc.png" alt="*" width="24" height="22" /><a class="el" href="view_2theme_2redbasic_2php_2config_8php.html" target="_self">config.php</a></td><td class="desc"></td></tr>
+<tr id="row_3_1_3_0_1_" class="even" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2blank.png" alt="&#160;" width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2doc.png" alt="*" width="24" height="22" /><a class="el" href="redbasic_2php_2style_8php.html" target="_self">style.php</a></td><td class="desc"></td></tr>
+<tr id="row_3_1_3_0_2_" class="even" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2blank.png" alt="&#160;" width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2doc.png" alt="*" width="24" height="22" /><a class="el" href="redbasic_2php_2theme_8php.html" target="_self">theme.php</a></td><td class="desc"></td></tr>
+<tr id="row_3_1_3_0_3_" class="even" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2blank.png" alt="&#160;" width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2lastnode.png" alt="\" width="16" height="22" /><img src="ftv2doc.png" alt="*" width="24" height="22" /><a class="el" href="theme_2redbasic_2php_2theme__init_8php.html" target="_self">theme_init.php</a></td><td class="desc"></td></tr>
+<tr id="row_3_1_3_1_" class="even" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2blank.png" alt="&#160;" width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img id="arr_3_1_3_1_" src="ftv2plastnode.png" alt="\" width="16" height="22" onclick="toggleFolder('3_1_3_1_')"/><img id="img_3_1_3_1_" src="ftv2folderclosed.png" alt="+" width="24" height="22" onclick="toggleFolder('3_1_3_1_')"/><a class="el" href="dir_3d9c9d0c5e9556dd3eba1e072fa6eaeb.html" target="_self">schema</a></td><td class="desc"></td></tr>
+<tr id="row_3_1_3_1_0_" class="even" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2blank.png" alt="&#160;" width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2blank.png" alt="&#160;" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2doc.png" alt="*" width="24" height="22" /><a class="el" href="boxy_8php.html" target="_self">boxy.php</a></td><td class="desc"></td></tr>
+<tr id="row_3_1_3_1_1_" class="even" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2blank.png" alt="&#160;" width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2blank.png" alt="&#160;" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2doc.png" alt="*" width="24" height="22" /><a class="el" href="BS-Default_8php.html" target="_self">BS-Default.php</a></td><td class="desc"></td></tr>
+<tr id="row_3_1_3_1_2_" class="even" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2blank.png" alt="&#160;" width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2blank.png" alt="&#160;" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2doc.png" alt="*" width="24" height="22" /><a class="el" href="dark_8php.html" target="_self">dark.php</a></td><td class="desc"></td></tr>
+<tr id="row_3_1_3_1_3_" class="even" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2blank.png" alt="&#160;" width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2blank.png" alt="&#160;" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2doc.png" alt="*" width="24" height="22" /><a class="el" href="notred_8php.html" target="_self">notred.php</a></td><td class="desc"></td></tr>
+<tr id="row_3_1_3_1_4_" class="even" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2blank.png" alt="&#160;" width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2blank.png" alt="&#160;" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2doc.png" alt="*" width="24" height="22" /><a class="el" href="simple__black__on__white_8php.html" target="_self">simple_black_on_white.php</a></td><td class="desc"></td></tr>
+<tr id="row_3_1_3_1_5_" class="even" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2blank.png" alt="&#160;" width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2blank.png" alt="&#160;" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2doc.png" alt="*" width="24" height="22" /><a class="el" href="simple__green__on__black_8php.html" target="_self">simple_green_on_black.php</a></td><td class="desc"></td></tr>
+<tr id="row_3_1_3_1_6_" class="even" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2blank.png" alt="&#160;" width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2blank.png" alt="&#160;" width="16" height="22" /><img src="ftv2lastnode.png" alt="\" width="16" height="22" /><img src="ftv2doc.png" alt="*" width="24" height="22" /><a class="el" href="simple__white__on__black_8php.html" target="_self">simple_white_on_black.php</a></td><td class="desc"></td></tr>
+<tr id="row_3_1_4_" class="even" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2blank.png" alt="&#160;" width="16" height="22" /><img id="arr_3_1_4_" src="ftv2pnode.png" alt="o" width="16" height="22" onclick="toggleFolder('3_1_4_')"/><img id="img_3_1_4_" src="ftv2folderclosed.png" alt="+" width="24" height="22" onclick="toggleFolder('3_1_4_')"/><a class="el" href="dir_4acb285a1960a920438b718da0958cf4.html" target="_self">stumble</a></td><td class="desc"></td></tr>
+<tr id="row_3_1_4_0_" class="even" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2blank.png" alt="&#160;" width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img id="arr_3_1_4_0_" src="ftv2plastnode.png" alt="\" width="16" height="22" onclick="toggleFolder('3_1_4_0_')"/><img id="img_3_1_4_0_" src="ftv2folderclosed.png" alt="+" width="24" height="22" onclick="toggleFolder('3_1_4_0_')"/><a class="el" href="dir_65522070e0a83623cefc01ebe26a83e3.html" target="_self">php</a></td><td class="desc"></td></tr>
+<tr id="row_3_1_4_0_0_" class="even" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2blank.png" alt="&#160;" width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2blank.png" alt="&#160;" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2doc.png" alt="*" width="24" height="22" /><a class="el" href="stumble_2php_2style_8php.html" target="_self">style.php</a></td><td class="desc"></td></tr>
+<tr id="row_3_1_4_0_1_" class="even" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2blank.png" alt="&#160;" width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2blank.png" alt="&#160;" width="16" height="22" /><img src="ftv2lastnode.png" alt="\" width="16" height="22" /><img src="ftv2doc.png" alt="*" width="24" height="22" /><a class="el" href="stumble_2php_2theme_8php.html" target="_self">theme.php</a></td><td class="desc"></td></tr>
+<tr id="row_3_1_5_" class="even" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2blank.png" alt="&#160;" width="16" height="22" /><img id="arr_3_1_5_" src="ftv2plastnode.png" alt="\" width="16" height="22" onclick="toggleFolder('3_1_5_')"/><img id="img_3_1_5_" src="ftv2folderclosed.png" alt="+" width="24" height="22" onclick="toggleFolder('3_1_5_')"/><a class="el" href="dir_0262a6a8df56a167e3761b6e5a54bb1c.html" target="_self">suckerberg</a></td><td class="desc"></td></tr>
+<tr id="row_3_1_5_0_" class="even" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2blank.png" alt="&#160;" width="16" height="22" /><img src="ftv2blank.png" alt="&#160;" width="16" height="22" /><img id="arr_3_1_5_0_" src="ftv2plastnode.png" alt="\" width="16" height="22" onclick="toggleFolder('3_1_5_0_')"/><img id="img_3_1_5_0_" src="ftv2folderclosed.png" alt="+" width="24" height="22" onclick="toggleFolder('3_1_5_0_')"/><a class="el" href="dir_ac4f5165c8d71ebb1a1a0a168a48f3f7.html" target="_self">php</a></td><td class="desc"></td></tr>
+<tr id="row_3_1_5_0_0_" class="even" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2blank.png" alt="&#160;" width="16" height="22" /><img src="ftv2blank.png" alt="&#160;" width="16" height="22" /><img src="ftv2blank.png" alt="&#160;" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2doc.png" alt="*" width="24" height="22" /><a class="el" href="suckerberg_2php_2style_8php.html" target="_self">style.php</a></td><td class="desc"></td></tr>
+<tr id="row_3_1_5_0_1_" class="even" style="display:none;"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2blank.png" alt="&#160;" width="16" height="22" /><img src="ftv2blank.png" alt="&#160;" width="16" height="22" /><img src="ftv2blank.png" alt="&#160;" width="16" height="22" /><img src="ftv2lastnode.png" alt="\" width="16" height="22" /><img src="ftv2doc.png" alt="*" width="24" height="22" /><a class="el" href="suckerberg_2php_2theme_8php.html" target="_self">theme.php</a></td><td class="desc"></td></tr>
<tr id="row_4_" class="even"><td class="entry"><img src="ftv2lastnode.png" alt="\" width="16" height="22" /><img src="ftv2doc.png" alt="*" width="24" height="22" /><a class="el" href="boot_8php.html" target="_self">boot.php</a></td><td class="desc"></td></tr>
</table>
</div><!-- directory -->
diff --git a/doc/html/filestorage_8php.html b/doc/html/filestorage_8php.html
index 91508e06f..5696cd2a8 100644
--- a/doc/html/filestorage_8php.html
+++ b/doc/html/filestorage_8php.html
@@ -147,6 +147,12 @@ Functions</h2></td></tr>
</tr>
</table>
</div><div class="memdoc">
+<dl class="params"><dt>Parameters</dt><dd>
+ <table class="params">
+ <tr><td class="paramtype">object</td><td class="paramname">&amp;$a</td><td></td></tr>
+ </table>
+ </dd>
+</dl>
</div>
</div>
diff --git a/doc/html/fixd_8php.html b/doc/html/fixd_8php.html
new file mode 100644
index 000000000..7386d674a
--- /dev/null
+++ b/doc/html/fixd_8php.html
@@ -0,0 +1,181 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<meta name="generator" content="Doxygen 1.8.3.1"/>
+<title>The Red Matrix: include/fixd.php File Reference</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="navtree.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="resize.js"></script>
+<script type="text/javascript" src="navtree.js"></script>
+<script type="text/javascript">
+ $(document).ready(initResizable);
+ $(window).load(resizeHeight);
+</script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/search.js"></script>
+<script type="text/javascript">
+ $(document).ready(function() { searchBox.OnSelectItem(0); });
+</script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+ <td id="projectlogo"><img alt="Logo" src="rm-64.png"/></td>
+ <td style="padding-left: 0.5em;">
+ <div id="projectname">The Red Matrix
+ </div>
+ </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.8.3.1 -->
+<script type="text/javascript">
+var searchBox = new SearchBox("searchBox", "search",false,'Search');
+</script>
+ <div id="navrow1" class="tabs">
+ <ul class="tablist">
+ <li><a href="index.html"><span>Main&#160;Page</span></a></li>
+ <li><a href="pages.html"><span>Related&#160;Pages</span></a></li>
+ <li><a href="namespaces.html"><span>Namespaces</span></a></li>
+ <li><a href="annotated.html"><span>Classes</span></a></li>
+ <li class="current"><a href="files.html"><span>Files</span></a></li>
+ <li>
+ <div id="MSearchBox" class="MSearchBoxInactive">
+ <span class="left">
+ <img id="MSearchSelect" src="search/mag_sel.png"
+ onmouseover="return searchBox.OnSearchSelectShow()"
+ onmouseout="return searchBox.OnSearchSelectHide()"
+ alt=""/>
+ <input type="text" id="MSearchField" value="Search" accesskey="S"
+ onfocus="searchBox.OnSearchFieldFocus(true)"
+ onblur="searchBox.OnSearchFieldFocus(false)"
+ onkeyup="searchBox.OnSearchFieldChange(event)"/>
+ </span><span class="right">
+ <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
+ </span>
+ </div>
+ </li>
+ </ul>
+ </div>
+ <div id="navrow2" class="tabs2">
+ <ul class="tablist">
+ <li><a href="files.html"><span>File&#160;List</span></a></li>
+ <li><a href="globals.html"><span>File&#160;Members</span></a></li>
+ </ul>
+ </div>
+</div><!-- top -->
+<div id="side-nav" class="ui-resizable side-nav-resizable">
+ <div id="nav-tree">
+ <div id="nav-tree-contents">
+ <div id="nav-sync" class="sync"></div>
+ </div>
+ </div>
+ <div id="splitbar" style="-moz-user-select:none;"
+ class="ui-resizable-handle">
+ </div>
+</div>
+<script type="text/javascript">
+$(document).ready(function(){initNavTree('fixd_8php.html','');});
+</script>
+<div id="doc-content">
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+ onmouseover="return searchBox.OnSearchSelectShow()"
+ onmouseout="return searchBox.OnSearchSelectHide()"
+ onkeydown="return searchBox.OnSearchSelectKey(event)">
+<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark">&#160;</span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark">&#160;</span>Classes</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark">&#160;</span>Namespaces</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark">&#160;</span>Files</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark">&#160;</span>Functions</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark">&#160;</span>Variables</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark">&#160;</span>Pages</a></div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<iframe src="javascript:void(0)" frameborder="0"
+ name="MSearchResults" id="MSearchResults">
+</iframe>
+</div>
+
+<div class="header">
+ <div class="summary">
+<a href="#var-members">Variables</a> </div>
+ <div class="headertitle">
+<div class="title">fixd.php File Reference</div> </div>
+</div><!--header-->
+<div class="contents">
+<table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="var-members"></a>
+Variables</h2></td></tr>
+<tr class="memitem:a2da3681c9cce2efe7de29aa578ff4219"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="fixd_8php.html#a2da3681c9cce2efe7de29aa578ff4219">$rand</a> = <a class="el" href="dba__driver_8php.html#a2994daa03b1c23229a27e39bcab75e67">db_getfunc</a>('RAND')</td></tr>
+<tr class="separator:a2da3681c9cce2efe7de29aa578ff4219"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a8abe176bc41afd728f32ba8c506cbd98"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="fixd_8php.html#a8abe176bc41afd728f32ba8c506cbd98">$r</a> = <a class="el" href="dba__driver_8php.html#a2c09a731d3b4fef41fed0e83db01be1f">q</a>(&quot;select xchan_addr, hubloc_url from xchan left join hubloc on hubloc_hash = xchan_hash where xchan_network like '%%diaspora%%' order by $rand&quot;)</td></tr>
+<tr class="separator:a8abe176bc41afd728f32ba8c506cbd98"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a241b818f48030b628685b2e5119c5624"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="fixd_8php.html#a241b818f48030b628685b2e5119c5624">$total</a> = 0</td></tr>
+<tr class="separator:a241b818f48030b628685b2e5119c5624"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a9d4f8a2ab4d92b3ccfd7cba0458098eb"><td class="memItemLeft" align="right" valign="top"><a class="el" href="typo_8php.html#a329c9c12217d2c8660c47bbc7c8df4c5">foreach</a>($r as $rr) print $total&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="fixd_8php.html#a9d4f8a2ab4d92b3ccfd7cba0458098eb">n</a></td></tr>
+<tr class="separator:a9d4f8a2ab4d92b3ccfd7cba0458098eb"><td class="memSeparator" colspan="2">&#160;</td></tr>
+</table>
+<h2 class="groupheader">Variable Documentation</h2>
+<a class="anchor" id="a8abe176bc41afd728f32ba8c506cbd98"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">$r = <a class="el" href="dba__driver_8php.html#a2c09a731d3b4fef41fed0e83db01be1f">q</a>(&quot;select xchan_addr, hubloc_url from xchan left join hubloc on hubloc_hash = xchan_hash where xchan_network like '%%diaspora%%' order by $rand&quot;)</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p>Referenced by <a class="el" href="Contact_8php.html#ae8803c330352cbf1e828eb7490edf47e">abook_connections()</a>, <a class="el" href="Contact_8php.html#ad5b02c2a962ee55b1b7ca6c159d6e4c5">abook_self()</a>, <a class="el" href="Contact_8php.html#a024919623a830e8703ac4f23496dd66c">abook_toggle_flag()</a>, <a class="el" href="Contact_8php.html#a5101d7eca5d6f387e5555f03fe249e33">account_remove()</a>, <a class="el" href="account_8php.html#a4328c40ee4b3d68630cf1ebb7b9d4d89">account_service_class_fetch()</a>, <a class="el" href="account_8php.html#a43e3042b2723d76915a030bac3c668b6">account_total()</a>, <a class="el" href="auth_8php.html#a07bae0e623e2daa9ee2cd5a8aa294dee">account_verify_password()</a>, <a class="el" href="achievements_8php.html#a35ae04ada0e227d19671f289a32fb30e">achievements_content()</a>, <a class="el" href="acl_8php.html#ac6776dba871806ecdb5d1659bc2eb07a">acl_init()</a>, <a class="el" href="items_8php.html#a81565acf729e629e588d823308448e3c">add_source_route()</a>, <a class="el" href="admin_8php.html#afef415e4011607fbb665610441595015">admin_content()</a>, <a class="el" href="admin_8php.html#aaa6addf2dbc3f3fcf99244a56b41eade">admin_page_dbsync()</a>, <a class="el" href="admin_8php.html#a60ba9783ad14545814919970bc3fb725">admin_page_hubloc_post()</a>, <a class="el" href="admin_8php.html#a3deba594ca1e11694eac1de0b724ef0a">admin_page_profs()</a>, <a class="el" href="admin_8php.html#a278289bc6d45f6f2a272a7ab6a1d1057">admin_page_profs_post()</a>, <a class="el" href="admin_8php.html#ac6e95b920b5abd030cc522964987087a">admin_page_summary()</a>, <a class="el" href="socgraph_8php.html#a16ac51c505d72987ed8d6d6aed0e8586">all_friends()</a>, <a class="el" href="zot_8php.html#a703f528ade8382cf374e4119bd6f7859">allowed_public_recips()</a>, <a class="el" href="include_2api_8php.html#a176c448d79c211ad41c2bbe3124658f5">api_call()</a>, <a class="el" href="include_2api_8php.html#a7759ccddc8dff012ad168e511ffe5af5">api_direct_messages_box()</a>, <a class="el" href="include_2api_8php.html#a0991f72554f821255397d615e76f3203">api_direct_messages_new()</a>, <a class="el" href="include_2api_8php.html#a2c71b1226ef1283b5370bd1c200fee5f">api_favorites()</a>, <a class="el" href="include_2api_8php.html#a36344c80b8e9755da2f2dd3a0e28cce8">api_ff_ids()</a>, <a class="el" href="include_2api_8php.html#a4c6fb9fb5203aa60f4b3afd4521db8ea">api_format_items()</a>, <a class="el" href="include_2api_8php.html#aa40bae797bcd9ccacffdce5a3b5a1afa">api_get_user()</a>, <a class="el" href="include_2api_8php.html#ad5fe62d6c25c86999f627b2e6cfde536">api_group()</a>, <a class="el" href="include_2api_8php.html#ae46f964e5a9c80b96dc78df61c09ed3a">api_group_members()</a>, <a class="el" href="include_2api_8php.html#afe534f826e4282b72d66e8cadca7bb73">api_login()</a>, <a class="el" href="include_2api_8php.html#aff322705cc6084b329003fc8eab0aad0">api_oauth_access_token()</a>, <a class="el" href="include_2api_8php.html#aa1bddb580510e70cc1a7b7381667f1a3">api_oauth_request_token()</a>, <a class="el" href="include_2api_8php.html#a4fe872332ff0bd8d5eae2f0c6819cb60">api_red_xchan()</a>, <a class="el" href="include_2api_8php.html#ad4c29f43418f6110f85a6b3998239ab4">api_statuses_destroy()</a>, <a class="el" href="include_2api_8php.html#aa0d6b29fff0344a8e67f3507a6d01410">api_statuses_f()</a>, <a class="el" href="include_2api_8php.html#a528d8070ee74ea800102936ce73cf366">api_statuses_home_timeline()</a>, <a class="el" href="include_2api_8php.html#a8b25a186bd0893f51aa72a62f655735e">api_statuses_mentions()</a>, <a class="el" href="include_2api_8php.html#ad24ce1bf20867add4c9211a8eaf93f22">api_statuses_public_timeline()</a>, <a class="el" href="include_2api_8php.html#ae0fa388479cace9c5a7a45b571ab42f8">api_statuses_repeat()</a>, <a class="el" href="include_2api_8php.html#af6f1d89cdb0a0621025efbec1597bc63">api_statuses_show()</a>, <a class="el" href="include_2api_8php.html#a32f0dda848d0c11c727fe1c3e741c283">api_statuses_user_timeline()</a>, <a class="el" href="include_2apps_8php.html#a6b472df85ed875e7ae75642cece5206f">app_destroy()</a>, <a class="el" href="include_2apps_8php.html#a1adcd1aff4d36ad0277daca9f3d2bbe2">app_installed()</a>, <a class="el" href="include_2apps_8php.html#a01cabfb33b2d0d843cf3bf4e3d3f0ab0">app_list()</a>, <a class="el" href="include_2apps_8php.html#a15626f24069c18816f7cdaf4735f58f9">app_store()</a>, <a class="el" href="include_2apps_8php.html#aeab6a62d2f3dfaa86ed043a006305f46">app_update()</a>, <a class="el" href="appman_8php.html#af48805ac2f6f123f2681a8ae1c6f123f">appman_content()</a>, <a class="el" href="include_2attach_8php.html#a0d07c5b83d3d54e186f752e571847b36">attach_by_hash()</a>, <a class="el" href="include_2attach_8php.html#ad991208ce939387e2f93a3bce7d09932">attach_by_hash_nodata()</a>, <a class="el" href="include_2attach_8php.html#a5c0875eafb8c0f8a0620ff7a875a2221">attach_change_permissions()</a>, <a class="el" href="include_2attach_8php.html#a887d2d44a3ef18dcb6624e7fb58dc8e3">attach_count_files()</a>, <a class="el" href="include_2attach_8php.html#a70bd666e080c2af5a91f5d14c297b8cd">attach_delete()</a>, <a class="el" href="mod_2attach_8php.html#aa88eb5ad87aa1036a30e70339cc6c1b1">attach_init()</a>, <a class="el" href="include_2attach_8php.html#a3634af95f11a023dd8e882c3c7a3600d">attach_list_files()</a>, <a class="el" href="include_2attach_8php.html#ab6830b3ab74a5d284876141ac80f6cbc">attach_mkdir()</a>, <a class="el" href="include_2attach_8php.html#a84a8a64c4805e1525b42d4add464833f">attach_store()</a>, <a class="el" href="security_8php.html#adc7bf51e3b8d67bd80e9348f9ab03733">authenticate_success()</a>, <a class="el" href="text_8php.html#a27cd2c1b3bcb49a0cfb7249e851725ca">autoname()</a>, <a class="el" href="bb2diaspora_8php.html#aab32042f8bd63552d3fadeeae9eab083">bb2diaspora_itemwallwall()</a>, <a class="el" href="bb2diaspora_8php.html#a5258d2f1addeb0a2a6b54c4f9e7d0f34">bb2dmention_callback()</a>, <a class="el" href="text_8php.html#a3d2793d66db3345fd290b71e2eadf98e">bb_translate_video()</a>, <a class="el" href="block_8php.html#a8a82a470acdfbc7a8e749509caeeea45">block_content()</a>, <a class="el" href="blocks_8php.html#a2531a8fd51db3cecb2eb20c002c66e12">blocks_content()</a>, <a class="el" href="include_2bookmarks_8php.html#aef1cb2968c41c759f2d106e1088ca323">bookmark_add()</a>, <a class="el" href="zot_8php.html#aa97b33b619dd7132a9274f852af6ceb5">build_sync_packet()</a>, <a class="el" href="taxonomy_8php.html#aa8f8a1ff85daef046298e93c83e7a1b4">catblock()</a>, <a class="el" href="contact__widgets_8php.html#a165eb021e61c4dcab2a552f28628d353">categories_widget()</a>, <a class="el" href="security_8php.html#a8d23d2597aae380a3341872fe9513380">change_channel()</a>, <a class="el" href="channel_8php.html#a9c6a6179e0e626398ebecc6151905ef1">channel_content()</a>, <a class="el" href="Contact_8php.html#a4e8af0f0525161da74583c04b8b03097">channel_remove()</a>, <a class="el" href="identity_8php.html#a77d2237f1846964634b1c99089c27c7d">channel_total()</a>, <a class="el" href="Contact_8php.html#a483cda56f9e37c3a4a8773dcdfeb0258">channelx_by_hash()</a>, <a class="el" href="Contact_8php.html#a3a0844dac1e86d523de5d2f432cfeebc">channelx_by_n()</a>, <a class="el" href="Contact_8php.html#a87e699f74a1102b25e8aa0432d86a91e">channelx_by_nick()</a>, <a class="el" href="chanview_8php.html#a4192c6da888c8c1165851acf9ad4cb8b">chanview_content()</a>, <a class="el" href="mod_2chat_8php.html#a8b0b8bee6fef6477e8c64c5e951b1b4f">chat_content()</a>, <a class="el" href="include_2chat_8php.html#acea6b176eb7aff44d9ba3ae24ce511d3">chat_message()</a>, <a class="el" href="include_2chat_8php.html#acdc80dba4eb796c7472b21129b435422">chatroom_create()</a>, <a class="el" href="include_2chat_8php.html#a2ba3af6884ecdce95de69262fe599639">chatroom_destroy()</a>, <a class="el" href="include_2chat_8php.html#a2c95b545e46bfee64faa05ecf0afea91">chatroom_enter()</a>, <a class="el" href="include_2chat_8php.html#a1ee1360f7d2549c7549ae07cb5190f0f">chatroom_leave()</a>, <a class="el" href="include_2chat_8php.html#aedcb532a0627b8644001a2fadab4e87a">chatroom_list()</a>, <a class="el" href="include_2chat_8php.html#a26abdccc2a278a59899896dbbfc6f049">chatroom_list_count()</a>, <a class="el" href="chatsvc_8php.html#a7032784215e1f6747cf385a6598770f9">chatsvc_content()</a>, <a class="el" href="chatsvc_8php.html#a7c9a9b9c24a2b02eed8efd6b09632d03">chatsvc_post()</a>, <a class="el" href="account_8php.html#ae052bd5558847bd38e89c213561a9771">check_account_email()</a>, <a class="el" href="account_8php.html#aaff7720423417a4333697894ffd9ddeb">check_account_invite()</a>, <a class="el" href="boot_8php.html#a4c02d88e66852a01bd5a1feecb7c3ce3">check_config()</a>, <a class="el" href="items_8php.html#a87ac9e359591721a824ecd23bbb56296">check_item_source()</a>, <a class="el" href="dir__fns_8php.html#a2f7d74bb2aea8bcd2537aee5c6708a16">check_upstream_directory()</a>, <a class="el" href="text_8php.html#a0c65597bb4aed3a039eb795ff540e5e3">check_webbie()</a>, <a class="el" href="items_8php.html#a772f0ae77ad77c8ab68ed918a3870946">collect_recipients()</a>, <a class="el" href="comanche_8php.html#a5a7ab801717d38e91ac910b933973887">comanche_block()</a>, <a class="el" href="common_8php.html#ab63408f39abef7a6915186e8dabc5a96">common_content()</a>, <a class="el" href="socgraph_8php.html#a7d34cd58025bcd9e575282f44db75918">common_friends()</a>, <a class="el" href="contact__widgets_8php.html#a552f8544528cec0c995cea7287ea9d65">common_friends_visitor_widget()</a>, <a class="el" href="socgraph_8php.html#ac343a846241d36cdf046b08f3396cfe9">common_friends_zcid()</a>, <a class="el" href="connect_8php.html#ad46a38f32fd7a3d324b1fa26373efa36">connect_init()</a>, <a class="el" href="connect_8php.html#a417ec27afe33f21a929667a665e32ee2">connect_post()</a>, <a class="el" href="connections_8php.html#aec2e457420fce3e3bf6a9f48e36df25c">connections_content()</a>, <a class="el" href="connections_8php.html#a1224058db8e3fb56463eb312f98e561d">connections_post()</a>, <a class="el" href="connedit_8php.html#a4da871e075597a09a8b374b9171dd92e">connedit_init()</a>, <a class="el" href="connedit_8php.html#a234c48426b652bf4d37053f2af329ac5">connedit_post()</a>, <a class="el" href="items_8php.html#aa9e99613d38a97b39c8cf5449699c2ee">construct_activity_object()</a>, <a class="el" href="items_8php.html#aa579bc4445d60098b1410961ca8e96b7">construct_activity_target()</a>, <a class="el" href="items_8php.html#adc26e08aa61f5666da04ab5d2a9d68a6">consume_feed()</a>, <a class="el" href="text_8php.html#ad6432621d0fafcbcf3d3b9b49bef7784">contact_block()</a>, <a class="el" href="contact__selectors_8php.html#a2c743d2eb526eb758d943a1490162d75">contact_profile_assign()</a>, <a class="el" href="Contact_8php.html#a28e062c884331dbb5dfa713228c25ad6">contact_remove()</a>, <a class="el" href="acl__selectors_8php.html#a9476997d2968a5794f3723878ed89c91">contact_select()</a>, <a class="el" href="contactgroup_8php.html#a18c7391b1b25debaf98c9dba639caab3">contactgroup_content()</a>, <a class="el" href="socgraph_8php.html#af29d056beec10b4e38e5209c92452894">count_all_friends()</a>, <a class="el" href="socgraph_8php.html#a887d576f21fd708132a06d0f72f90f84">count_common_friends()</a>, <a class="el" href="socgraph_8php.html#af175807406d94407a5e11742a3287746">count_common_friends_zcid()</a>, <a class="el" href="account_8php.html#a141fe579c351c78209d425473f978eb5">create_account()</a>, <a class="el" href="identity_8php.html#a345f4c943d84de502ec6e72d2c813945">create_identity()</a>, <a class="el" href="classRedMatrix_1_1RedDAV_1_1RedDirectory.html#aca0e8d574ea66a0e210f571700663c62">RedMatrix\RedDAV\RedDirectory\createDirectory()</a>, <a class="el" href="classRedMatrix_1_1RedDAV_1_1RedDirectory.html#a58e750256cdc2f0f79fbe8d5463ffefe">RedMatrix\RedDAV\RedDirectory\createFile()</a>, <a class="el" href="boot_8php.html#ad206598b909e8eb67eb0e0bb5ef69c13">current_theme()</a>, <a class="el" href="delegate_8php.html#a943eea8996ef348eb845c498f9f354dd">delegate_content()</a>, <a class="el" href="zot_8php.html#adfeb9400ae6b726beec89f8f1e8fde72">delete_imported_item()</a>, <a class="el" href="items_8php.html#aac8c9eb4338e2a996c43914392c6cfdb">delete_item_lowlevel()</a>, <a class="el" href="deliver_8php.html#a397afcb9afecf0c1816b0951189dd346">deliver_run()</a>, <a class="el" href="diaspora_8php.html#a006731620a5242d410358b32678e48e3">diaspora_asphoto()</a>, <a class="el" href="diaspora_8php.html#a0fb2abe304aae19efc040a5e6b917829">diaspora_comment()</a>, <a class="el" href="diaspora_8php.html#adef30b6fac948baedcc7194d5d155b5f">diaspora_conversation()</a>, <a class="el" href="diaspora_8php.html#ab99505944728d46585b8312989de533d">diaspora_dispatch_public()</a>, <a class="el" href="diaspora_8php.html#aa8e551a53fcce34be3942d0c3e20d1f4">diaspora_get_contact_by_handle()</a>, <a class="el" href="diaspora_8php.html#a5ed66b910d7b0284f9b3ee04e72306ff">diaspora_handle_from_contact()</a>, <a class="el" href="diaspora_8php.html#a5d57518545baa31cf8a85a937a267681">diaspora_like()</a>, <a class="el" href="bb2diaspora_8php.html#a4a27604f0745f1efda672966aaca9a3b">diaspora_mention_callback()</a>, <a class="el" href="diaspora_8php.html#a7cff2f8f11044c1b3a360f20e1bbee46">diaspora_message()</a>, <a class="el" href="diaspora_8php.html#a71fe9bb66626b4197ae018a230778bb2">diaspora_photo()</a>, <a class="el" href="diaspora_8php.html#a20b968d64ef26afe5cb0cc75a7570a31">diaspora_post()</a>, <a class="el" href="diaspora_8php.html#a131abd521b218d6ae6f7d2917d8b2605">diaspora_process_outbound()</a>, <a class="el" href="diaspora_8php.html#ac1ab782a34552a7c6b4dc961754ed598">diaspora_request()</a>, <a class="el" href="diaspora_8php.html#a2bf43f6b5890897f425ef4325d34b007">diaspora_reshare()</a>, <a class="el" href="diaspora_8php.html#a938c7ee808d38725c0988fa6006805b9">diaspora_retraction()</a>, <a class="el" href="diaspora_8php.html#ae6f52efd81fe515cd9912bc8293abf5b">diaspora_send_images()</a>, <a class="el" href="diaspora_8php.html#aeb2bb78f620dbf51d9335e6eb7444f2c">diaspora_send_mail()</a>, <a class="el" href="diaspora_8php.html#aa34d2748bb97e9e193cacd572f335055">diaspora_signed_retraction()</a>, <a class="el" href="taxonomy_8php.html#a088371f4bc19155b2291508f5cd63332">dir_tagadelic()</a>, <a class="el" href="taxonomy_8php.html#a599ee71dd3194c8127b00dabec77abc1">dir_tagblock()</a>, <a class="el" href="mod_2directory_8php.html#aac79396570d759da2efac24fcedf5b44">directory_content()</a>, <a class="el" href="dirsearch_8php.html#aa1fb04e1de4f25b63349ac78f94ceb4c">dirsearch_content()</a>, <a class="el" href="include_2network_8php.html#a5176176ddc1906d91f186df6fbd87b48">discover_by_url()</a>, <a class="el" href="include_2network_8php.html#a63e62946e194928eb17c5a9f2bbef0fe">discover_by_webbie()</a>, <a class="el" href="display_8php.html#a37137c98d47bf3306f4c2bb9f5b60de0">display_content()</a>, <a class="el" href="account_8php.html#a0d183a3cb4c67a0f5e906811df7a1fc9">downgrade_accounts()</a>, <a class="el" href="items_8php.html#a555762e1022a4b8e3c3abd32e7812408">drop_item()</a>, <a class="el" href="editblock_8php.html#abbe8f55de06967bc8d79d620509a49e6">editblock_content()</a>, <a class="el" href="editlayout_8php.html#aa877e4157a26b099de904164181dd386">editlayout_content()</a>, <a class="el" href="editwebpage_8php.html#a375e945255fad79a71036528f7480650">editwebpage_content()</a>, <a class="el" href="items_8php.html#a56b0f5d2cb36eb8f4bfca84813884f86">encode_item()</a>, <a class="el" href="event_8php.html#ac9f206819186b65952ac1869f0da8c6e">event_addtocal()</a>, <a class="el" href="event_8php.html#af5ac41e7ea3f7131088fe6333fd2846c">event_store_event()</a>, <a class="el" href="event_8php.html#a7378e839ac3de9d55579eb3ec48eaf92">event_store_item()</a>, <a class="el" href="events_8php.html#a1d293fb217ae6bc9e3858c4b32e363ec">events_content()</a>, <a class="el" href="include_2group_8php.html#a22a81875259c7d3d64d4848afea6b345">expand_groups()</a>, <a class="el" href="expire_8php.html#a444e45c9b67727b27db4c779fd51a298">expire_run()</a>, <a class="el" href="externals_8php.html#a4df44079e6f915286088b7a0d44db926">externals_run()</a>, <a class="el" href="fbrowser_8php.html#aee476addcf7a3e0fe9454f7dfd5a56c4">fbrowser_content()</a>, <a class="el" href="feed_8php.html#af86137700b56f33d1d5f25c8dec22c04">feed_init()</a>, <a class="el" href="contact__widgets_8php.html#a1eda66319d170f60a8d07c7ece95533b">fileas_widget()</a>, <a class="el" href="filer_8php.html#a5fd5d7e61b2f9c43cb5f110c89dc4274">filer_content()</a>, <a class="el" href="filerm_8php.html#ae2eb28d2054fa2c37e38689882172208">filerm_content()</a>, <a class="el" href="filestorage_8php.html#a61bb1be78472555df4ce619f51014040">filestorage_content()</a>, <a class="el" href="items_8php.html#a8cda98925a4c5c2f6dade70d9586d79a">filter_insecure()</a>, <a class="el" href="diaspora_8php.html#aade0c165fcdded71352c7a67bf6ce37b">find_diaspora_person_by_handle()</a>, <a class="el" href="include_2attach_8php.html#a4dbfd7e1cef52aa9ef52f4b88929fa86">find_filename_by_hash()</a>, <a class="el" href="include_2attach_8php.html#a052f14487ff2ce72f62a09fac8d7e997">find_folder_hash_by_attach_hash()</a>, <a class="el" href="classRedMatrix_1_1RedDAV_1_1RedBrowser.html#ad4bc0516533c62733f38043a37267d78">RedMatrix\RedDAV\RedBrowser\findAttachHash()</a>, <a class="el" href="classRedMatrix_1_1RedDAV_1_1RedBrowser.html#a0733e38e254474d9a456825e72f1ddfd">RedMatrix\RedDAV\RedBrowser\findAttachIdByHash()</a>, <a class="el" href="items_8php.html#a0cf98bb619f07dd18f602683a55a5f59">first_post_date()</a>, <a class="el" href="item_8php.html#a7b63a9d0cd02096e17dcf11f4afa7c10">fix_attached_photo_permissions()</a>, <a class="el" href="items_8php.html#aba98fcbbcd7044a7e9ea34edabc14c87">fix_private_photos()</a>, <a class="el" href="boot_8php.html#aca5e42678e178c6b9034610d66666fd7">fix_system_urls()</a>, <a class="el" href="fsuggest_8php.html#aa6c49ed4b50a387f1845f36844dd7998">fsuggest_content()</a>, <a class="el" href="fsuggest_8php.html#a61ecfe10ce937ed526614f8fd3de3c7d">fsuggest_post()</a>, <a class="el" href="classRedMatrix_1_1RedDAV_1_1RedBrowser.html#af764d5f14df751f9ec86c34fab300c09">RedMatrix\RedDAV\RedBrowser\generateDirectoryIndex()</a>, <a class="el" href="classCache.html#a70392b109331897bf9fdd7f1960e21de">Cache\get()</a>, <a class="el" href="classRedMatrix_1_1RedDAV_1_1RedFile.html#a7241beecd01f5bb4e74659863dd85bd8">RedMatrix\RedDAV\RedFile\get()</a>, <a class="el" href="permissions_8php.html#aeca9b280f3dc3358c89976d81d690008">get_all_perms()</a>, <a class="el" href="identity_8php.html#ad2c97627a313d53df1a1c7b4215ddb51">get_birthdays()</a>, <a class="el" href="identity_8php.html#ac73b3e13778c564c877554517a7f51ba">get_channel_by_nick()</a>, <a class="el" href="identity_8php.html#a293f416ce9050220b183e08ff5890216">get_channel_default_perms()</a>, <a class="el" href="include_2attach_8php.html#a6aa00ea010ea030110faefb75eafc1ce">get_cloudpath()</a>, <a class="el" href="diaspora_8php.html#a9bf7ef4094e0e14f6e2b7fe76ab7ad2e">get_diaspora_key()</a>, <a class="el" href="identity_8php.html#ae381db3d43f8e7c1da8b15d14ecf5312">get_events()</a>, <a class="el" href="items_8php.html#a536d0313b6ffe33b9d2490c4e25c5361">get_item_elements()</a>, <a class="el" href="identity_8php.html#a332df795f684788002f5a6424abacfd7">get_online_status()</a>, <a class="el" href="plugin_8php.html#aff0178bd8d0b34a94d5efddc883edd35">get_plugin_info()</a>, <a class="el" href="identity_8php.html#aaff86ee3b5984821e7a256c2da5f1a51">get_sys_channel()</a>, <a class="el" href="plugin_8php.html#ad48de9c0fb7f19413a2aa49250d00405">get_theme_info()</a>, <a class="el" href="taxonomy_8php.html#a7747fa859ac56fbffd4f9782d85505de">get_things()</a>, <a class="el" href="spam_8php.html#ab8fd81a82c9622cbebb8ceab6b310ca6">get_words()</a>, <a class="el" href="classRedMatrix_1_1RedDAV_1_1RedDirectory.html#a825dc5f3e0f83f50736c16daa6a4809d">RedMatrix\RedDAV\RedDirectory\getDir()</a>, <a class="el" href="classRedMatrix_1_1RedDAV_1_1RedDirectory.html#a69db5f641f8f5dc999e55cee1832ecd5">RedMatrix\RedDAV\RedDirectory\getLastModified()</a>, <a class="el" href="gprobe_8php.html#adf72cb0a70b5b9d99fdec1cc60e18ed1">gprobe_run()</a>, <a class="el" href="include_2group_8php.html#a06ec565d2b64e79044e7c1bf91a2a4ce">group_add()</a>, <a class="el" href="include_2group_8php.html#a0122ef312df2c5546b1a46b3e6c7b31b">group_add_member()</a>, <a class="el" href="include_2group_8php.html#abd66a5ea34a07a3422dc2dde6c7b3ecb">group_byname()</a>, <a class="el" href="mod_2group_8php.html#a07a64f6c65b0080d8190b3d9728a7a83">group_content()</a>, <a class="el" href="include_2group_8php.html#a5bd191d9692e6c34d48c0ede10810f09">group_get_members()</a>, <a class="el" href="mod_2group_8php.html#aed1f009b1221348021bb34761160ef35">group_post()</a>, <a class="el" href="include_2group_8php.html#a90e157b3e1b99c981809cb5a2abd3245">group_rec_byhash()</a>, <a class="el" href="include_2group_8php.html#a4118f498bbd1530c1d0136d016d197a5">group_rmv()</a>, <a class="el" href="include_2group_8php.html#a540e3ef36f47d47532646be4241f6518">group_rmv_member()</a>, <a class="el" href="acl__selectors_8php.html#aa1e3bc344ca2b29f97eb9860216d21a0">group_select()</a>, <a class="el" href="include_2group_8php.html#a6a69bd7be032fa8ce4e49c43a42cc6e9">group_side()</a>, <a class="el" href="include_2group_8php.html#afb802ae2ce73aae4bc36d157f7b6a92f">groups_containing()</a>, <a class="el" href="text_8php.html#aa22feef4de326e1d7078dedd892e615c">handle_tag()</a>, <a class="el" href="hcard_8php.html#ac34f26b0e6a37eef44fa49bea135136d">hcard_init()</a>, <a class="el" href="home_8php.html#a6e3dbf78f4ed74ab2577de221190b33f">home_content()</a>, <a class="el" href="hubloc_8php.html#ad86214b3a74084bd7b54e8d6c919ce4d">hubloc_change_primary()</a>, <a class="el" href="identity_8php.html#afaedbc8e2d2a70ec8b006162baac5249">identity_basic_export()</a>, <a class="el" href="identity_8php.html#ac9fcd5c4c371998790b5c55c3d0f4633">identity_check_service_class()</a>, <a class="el" href="identity_8php.html#a2ab5172eabd375869060c9ad68323f5c">identity_selector()</a>, <a class="el" href="items_8php.html#a2c3f97b2109c05df86d97449b3c78ebc">import_author_diaspora()</a>, <a class="el" href="items_8php.html#a6bee35961f2e32905f20367a9309d627">import_author_rss()</a>, <a class="el" href="items_8php.html#a37f79991f36811cf847446ff60e8e11f">import_author_unknown()</a>, <a class="el" href="zot_8php.html#ad149f1e98c0c5b88ff9147e6ee3f330d">import_author_zot()</a>, <a class="el" href="photo__driver_8php.html#a1d0bc7161dec0d177b7d3bbe4421af9a">import_channel_photo()</a>, <a class="el" href="zot_8php.html#a3bf11286c2619b4ca28e49d5b5ab374a">import_directory_keywords()</a>, <a class="el" href="zot_8php.html#a20750dd2c36961013fd382fb34e1366c">import_directory_profile()</a>, <a class="el" href="import_8php.html#af17fef0410518f7eac205d0ea416eaa2">import_post()</a>, <a class="el" href="photo__driver_8php.html#a78f5a10c568d2a9bbbb129dc96548887">import_profile_photo()</a>, <a class="el" href="zot_8php.html#a2657e141d62d5f67ad3c87651b585299">import_site()</a>, <a class="el" href="zot_8php.html#a528e97ca5d69c3b7f35c5d954afde315">import_xchan()</a>, <a class="el" href="importelm_8php.html#a1a4f71e6d76ace6add5e9659845f5e5f">importelm_post()</a>, <a class="el" href="plugin_8php.html#a482131013272a1d5d5c1b1469c6c55d5">install_plugin()</a>, <a class="el" href="invite_8php.html#aeb0881c0f93c8e8552e5ed756ce6e5a5">invite_post()</a>, <a class="el" href="hubloc_8php.html#aebd244b4616ded022cbbee5e82926951">is_matrix_url()</a>, <a class="el" href="identity_8php.html#aa4bd4abfcba883f43919e89ec6419025">is_sys_channel()</a>, <a class="el" href="items_8php.html#a02ca33c31ed535d24894f8a9a91ce9df">item_add_cid()</a>, <a class="el" href="item_8php.html#a5b1b36cb301a94b38150074f0d424e74">item_check_service_class()</a>, <a class="el" href="items_8php.html#a6f7e1334af5d684a987fa6a3eb37f4cc">item_expire()</a>, <a class="el" href="items_8php.html#a09d425596b9f8663472cf7474ad36d96">item_getfeedattach()</a>, <a class="el" href="text_8php.html#aa6b0aa8afbeab50d1a3058ad21acb74e">item_message_id()</a>, <a class="el" href="item_8php.html#a693cd09805755ab85bbb5ecae69a48c3">item_post()</a>, <a class="el" href="items_8php.html#a5ed782ff5b9cf050bec931e06de12c00">item_remove_cid()</a>, <a class="el" href="items_8php.html#a2541e6861a56d145c9281877cc501615">item_store()</a>, <a class="el" href="items_8php.html#acf0bf7c9d21ac84f32effb754f7ad484">item_store_update()</a>, <a class="el" href="items_8php.html#a756738301f2ed96be50232500677d58a">items_fetch()</a>, <a class="el" href="text_8php.html#a3999a0b3e22e440f280ee791ce34d384">layout_select()</a>, <a class="el" href="layouts_8php.html#a6e0193759ad9eef76d3df2db24237b50">layouts_content()</a>, <a class="el" href="like_8php.html#a9d7dd268f21c21e9d29dd2aca2dd9538">like_content()</a>, <a class="el" href="dirsearch_8php.html#a985d410a170549429857af6ff2673149">list_public_sites()</a>, <a class="el" href="include_2config_8php.html#a27559f388c9b9af81c94e48d6889d1d1">load_config()</a>, <a class="el" href="boot_8php.html#a719c7f3972d5f9268f37a41c76cd4ef6">load_contact_links()</a>, <a class="el" href="setup_8php.html#ad2e0375a9ab87ebe6e78124ee125054a">load_database()</a>, <a class="el" href="plugin_8php.html#a326365e48ef94f0b9a0a771b8d75e813">load_hooks()</a>, <a class="el" href="include_2config_8php.html#a559791dda7fef8a4b2394c83e835787b">load_pconfig()</a>, <a class="el" href="include_2config_8php.html#aee4b619839cf4b64220f34edf5c67b52">load_xconfig()</a>, <a class="el" href="dir__fns_8php.html#acd37b17dce3bdec6d5a6344a20598c1e">local_dir_update()</a>, <a class="el" href="lockview_8php.html#a851e26ab9a1008df5c5ebebea31e9b44">lockview_content()</a>, <a class="el" href="locs_8php.html#a6c900f53970c0d0e738d2fe06d27ca44">locs_content()</a>, <a class="el" href="locs_8php.html#a6b43654592919ac863d67a1f787a69b9">locs_post()</a>, <a class="el" href="classFKOAuth1.html#a2b1dac2ed31fc6ef84668afdda8b263f">FKOAuth1\loginUser()</a>, <a class="el" href="classFKOAuthDataStore.html#a1148d47b546350bf440bdd92792c5df1">FKOAuthDataStore\lookup_consumer()</a>, <a class="el" href="classFKOAuthDataStore.html#a4edfe2e77ecd2e16ff6b5eb516ed3599">FKOAuthDataStore\lookup_nonce()</a>, <a class="el" href="classFKOAuthDataStore.html#a96f76387c3a93b0abe27a98013804bab">FKOAuthDataStore\lookup_token()</a>, <a class="el" href="lostpass_8php.html#a0314d94e48c789b1b3a201d740c9eab3">lostpass_content()</a>, <a class="el" href="lostpass_8php.html#a8ed35ba71a4404eaf4903da61d0321cc">lostpass_post()</a>, <a class="el" href="magic_8php.html#acea2cc792849ca2d71d4b689f66518bf">magic_init()</a>, <a class="el" href="mail_8php.html#a3c7c485fc69f92371e8b20936040eca1">mail_content()</a>, <a class="el" href="items_8php.html#a77da7ce9a117601d49ac4a67c71b514f">mail_store()</a>, <a class="el" href="manage_8php.html#a2bca247b5296827638959138367db4f5">manage_content()</a>, <a class="el" href="Contact_8php.html#a08845ce8c5b997d5edac38ae7118b5c8">mark_orphan_hubsxchans()</a>, <a class="el" href="match_8php.html#a1dd853e959b9e70c1911bb2fb5f5130d">match_content()</a>, <a class="el" href="auth_8php.html#a69fa663e6baf65f80d1b114ad72615f2">match_openid()</a>, <a class="el" href="include_2group_8php.html#a048f6892bfd28852de1b76470df411de">member_of()</a>, <a class="el" href="include_2menu_8php.html#add35fae5e9695031b3d46e30ac409eb8">menu_add_item()</a>, <a class="el" href="mod_2menu_8php.html#a6fed23af14d71a78a4153c8363a685cf">menu_content()</a>, <a class="el" href="include_2menu_8php.html#a08a800821721781a8dfffbe31481ff98">menu_create()</a>, <a class="el" href="include_2menu_8php.html#a9aa8e0052dd47c1a93f53a983bd4620a">menu_del_item()</a>, <a class="el" href="include_2menu_8php.html#a3884bda4d85d84ec99447db9403a68d8">menu_delete()</a>, <a class="el" href="include_2menu_8php.html#ad87f51ce85172bcc3f931aa0cd96a804">menu_delete_id()</a>, <a class="el" href="include_2menu_8php.html#a6a33c6a3db2a7510b16cc656edaec571">menu_edit()</a>, <a class="el" href="include_2menu_8php.html#acb66f80ca895a6ccd562b3d9ae7b41aa">menu_edit_item()</a>, <a class="el" href="include_2menu_8php.html#a68ebbf492470c930f652013656f9071d">menu_fetch()</a>, <a class="el" href="include_2menu_8php.html#a47447c01ba8ea04cd74af1d4c5b68fc7">menu_fetch_id()</a>, <a class="el" href="include_2menu_8php.html#a32701c4245e78ba9106eef52c08bf33d">menu_list()</a>, <a class="el" href="include_2menu_8php.html#a251bf7e15d21627fd92614198e41c485">menu_list_count()</a>, <a class="el" href="mod_2menu_8php.html#aaa491ef173868fe002aece4632bcf393">menu_post()</a>, <a class="el" href="mod_2message_8php.html#ac72dfed3ce08fcb331d66b37edc6e15f">message_content()</a>, <a class="el" href="text_8php.html#a1633412120f52bdce5f43e0a127d9293">mimetype_select()</a>, <a class="el" href="include_2group_8php.html#ab0e422a0f31c0c64fd9084ca03d85f32">mini_group_select()</a>, <a class="el" href="mitem_8php.html#a7a31b702ecad18eeb6a38b243ff0037e">mitem_content()</a>, <a class="el" href="mitem_8php.html#a6ee694cca4b551a20d7c7a94b5243ec1">mitem_post()</a>, <a class="el" href="mood_8php.html#a7ae136dd7476865b4828136175db5022">mood_init()</a>, <a class="el" href="msearch_8php.html#ac80d2a6c0a92e79eec7efbbccd74d9a8">msearch_post()</a>, <a class="el" href="netgrowth_8php.html#a9b87bfc25a7cb11bc7f8e1fdd0310919">netgrowth_content()</a>, <a class="el" href="mod_2network_8php.html#a43f2f29b90c5e29072c561934bc8f8b4">network_content()</a>, <a class="el" href="classFKOAuthDataStore.html#a434882f03e3cdb171ed89e09e337e934">FKOAuthDataStore\new_access_token()</a>, <a class="el" href="include_2follow_8php.html#ae387d4ae097c23d69f3247e7f08140c7">new_contact()</a>, <a class="el" href="classFKOAuthDataStore.html#a431b44d70e3da6a8256ab38f710e3050">FKOAuthDataStore\new_request_token()</a>, <a class="el" href="enotify_8php.html#a3e9a9355b243777c488d2a9883908dfc">notification()</a>, <a class="el" href="notifications_8php.html#aadd0b5525bd8c283a5d8a37982bbfe62">notifications_content()</a>, <a class="el" href="identity_8php.html#a2e6a1cc35887937823ec7fbb90472afe">notifications_off()</a>, <a class="el" href="notifications_8php.html#a5baffec7b2e625c9f9cefbc097550d33">notifications_post()</a>, <a class="el" href="notifier_8php.html#a568c502f626cff95e344c0748938b85d">notifier_run()</a>, <a class="el" href="mod_2notify_8php.html#acdf3851688ebd6d6a575eb84ef9febe3">notify_content()</a>, <a class="el" href="mod_2notify_8php.html#a94f9a6a9d4b5fd704baafff0c34f41ae">notify_init()</a>, <a class="el" href="mod_2api_8php.html#a02ae0f60e240dc806b860edb7d582117">oauth_get_client()</a>, <a class="el" href="onedirsync_8php.html#a411aedd47c57476099647961e6a86691">onedirsync_run()</a>, <a class="el" href="onepoll_8php.html#a72753b2fdec79b37c7f432035c91fb6d">onepoll_run()</a>, <a class="el" href="openid_8php.html#a9a13827dbcf61ae4e45f0b6b33a88f43">openid_content()</a>, <a class="el" href="p_8php.html#af9d5530ca0b3dc9409cf591c39e2480e">p_init()</a>, <a class="el" href="page_8php.html#a91a5f649f68406149108bded1dc90b22">page_content()</a>, <a class="el" href="page_8php.html#a4d89800c0366a239191b1692c09635cf">page_init()</a>, <a class="el" href="page__widgets_8php.html#a39d547771c5f12a17c097436c82f0fa2">pagelist_widget()</a>, <a class="el" href="comanche_8php.html#af7150df735e5ff9d467994cd6f769c6e">pdl_selector()</a>, <a class="el" href="crypto_8php.html#a798368843cdd9bb08386b48e53e29e8c">pemtome()</a>, <a class="el" href="permissions_8php.html#a67ada9ed51e77885b6b0f6a28cee1835">perm_is_allowed()</a>, <a class="el" href="photo_8php.html#a582779d24882b0d31ee909a91d70a448">photo_init()</a>, <a class="el" href="text_8php.html#aa5528f41533927e1bd2da3618a74a6d7">photo_new_resource()</a>, <a class="el" href="include_2photos_8php.html#a6c40ef58aefef705a5adc84a40e97109">photo_upload()</a>, <a class="el" href="include_2photos_8php.html#a8e8b7be99e24c2497bc2cb3339280c35">photos_album_exists()</a>, <a class="el" href="include_2photos_8php.html#a7e7abc69872180697c5471dc69349afe">photos_album_get_db_idstr()</a>, <a class="el" href="mod_2photos_8php.html#aa87382611a66ec5effdb2d78f13f5812">photos_content()</a>, <a class="el" href="include_2photos_8php.html#aa27b9e435dcc34e1009f56dc02c7ca51">photos_list_photos()</a>, <a class="el" href="mod_2photos_8php.html#a062bed4d04d14fee8a53f4c9be673080">photos_post()</a>, <a class="el" href="ping_8php.html#a77217b1b190b4c5d8770867b45f0c0a1">ping_init()</a>, <a class="el" href="plugin_8php.html#a855c4fdb38c0fc2714d537752a4347f9">plugin_is_installed()</a>, <a class="el" href="poco_8php.html#a53def16f75e3d41f1d2bb7cfa4905498">poco_init()</a>, <a class="el" href="socgraph_8php.html#a5ef8bef37161df53718a21e93d02fbd6">poco_load()</a>, <a class="el" href="poke_8php.html#ac9190563a8da9c07a16f9dcd71cf6993">poke_content()</a>, <a class="el" href="poke_8php.html#a9725aab97b3983e6a98bd81c4efe7d3b">poke_init()</a>, <a class="el" href="poller_8php.html#a5f12df3a4738124b6c039971e87e76da">poller_run()</a>, <a class="el" href="items_8php.html#a410f9c743877c125ca06312373346903">post_activity_item()</a>, <a class="el" href="post_8php.html#af59e6a1dc22d19d9257b01cd7ccedb75">post_post()</a>, <a class="el" href="text_8php.html#ac19d2b33a58372a357a43d51eed19162">preg_heart()</a>, <a class="el" href="include_2message_8php.html#aed272d77c06a309e2836ac79e75613f1">private_messages_drop()</a>, <a class="el" href="include_2message_8php.html#a5f8de9847e203329e317ac38dc646898">private_messages_fetch_conversation()</a>, <a class="el" href="include_2message_8php.html#a254a756031e4d5e94f85e2939bdb5091">private_messages_fetch_message()</a>, <a class="el" href="include_2message_8php.html#a652973ce47a262f2d238c2fd6233d97e">private_messages_list()</a>, <a class="el" href="zot_8php.html#ac301c67864917c35922257950ae0f95c">process_channel_sync_delivery()</a>, <a class="el" href="zot_8php.html#a0e3006e7a456b2175a9badc96bc5176d">process_delivery()</a>, <a class="el" href="zot_8php.html#a8eeefdb0dad4c436bea9d1c06c0a7988">process_location_delivery()</a>, <a class="el" href="zot_8php.html#aa6ae96db8cbbdbb10e6876d206bbf7cc">process_mail_delivery()</a>, <a class="el" href="zot_8php.html#a9a57b40669351c9791126b925cb7ef3b">process_profile_delivery()</a>, <a class="el" href="profile_8php.html#ab5d0246be0552e2182a585c1206d22a5">profile_init()</a>, <a class="el" href="identity_8php.html#a4751b522ea913d0e7ed43e03d22e9e68">profile_load()</a>, <a class="el" href="profile__photo_8php.html#a4b80234074bd603221aa5364f330e479">profile_photo_post()</a>, <a class="el" href="profile__photo_8php.html#a561103564199da56e58061a4196eb102">profile_photo_set_profile_perms()</a>, <a class="el" href="identity_8php.html#a432259b2cf5b6f59be53e71db9f2c7dc">profile_sidebar()</a>, <a class="el" href="profiles_8php.html#a46975783b8b8d70402d51487eb1f0b00">profiles_content()</a>, <a class="el" href="profiles_8php.html#a36f71405ad536228f8bb84a551b23f7e">profiles_init()</a>, <a class="el" href="profiles_8php.html#ab0362c81b1d3b0b12a772b9fac446e04">profiles_post()</a>, <a class="el" href="profperm_8php.html#aef015787de2373d9fb3fe3f814fb5023">profperm_content()</a>, <a class="el" href="hubloc_8php.html#ad3d0dcfcfcb347744f7617fe6f5de002">prune_hub_reinstalls()</a>, <a class="el" href="zot_8php.html#a083aec6c900d244e1bfc1406f9461465">public_recips()</a>, <a class="el" href="crypto_8php.html#a2a3fae7caca27f86d158eeaf69b6f287">pubrsatome()</a>, <a class="el" href="classRedMatrix_1_1RedDAV_1_1RedFile.html#a709ec1288d21ddf1353524435ab916f0">RedMatrix\RedDAV\RedFile\put()</a>, <a class="el" href="classdba__mysql.html#ac3fd60c278f400907322dac578754a99">dba_mysql\q()</a>, <a class="el" href="classdba__mysqli.html#a611c4de8d6d7512dffb83a38bb6701ec">dba_mysqli\q()</a>, <a class="el" href="classdba__postgres.html#a70352880231fba0b859f82cd5b290a9a">dba_postgres\q()</a>, <a class="el" href="queue_8php.html#af8c93de86d866c3200174c8450a0f341">queue_run()</a>, <a class="el" href="Contact_8php.html#a7e3f5bef8ea1d2bf8434c9be36a2b713">random_profile()</a>, <a class="el" href="Contact_8php.html#a2f4f495d53f2a334ab75292af79d3c91">rconnect_url()</a>, <a class="el" href="receive_8php.html#a03d8fa26e77844020ba5602deca7d494">receive_post()</a>, <a class="el" href="reddav_8php.html#ae92ea0df1993f6a7bcd1b6efa6c1fb66">RedChannelList()</a>, <a class="el" href="reddav_8php.html#a5df0d09893f2e65dc5cf6bbab6cfb266">RedCollectionData()</a>, <a class="el" href="reddav_8php.html#a9f531641dfb4e43cd88ac1a9ae7e2088">RedFileData()</a>, <a class="el" href="session_8php.html#a7f0f50576360d9ba52d29364e0b83a8e">ref_session_read()</a>, <a class="el" href="session_8php.html#ac4461c1984543d3553e73dba2771568f">ref_session_write()</a>, <a class="el" href="refimport_8php.html#ad97ebb5feda0230a4834e0b3637a0d29">refimport_content()</a>, <a class="el" href="refimport_8php.html#a01a29630fa5e1ce6cd5e1fd75280747c">reflect_comment_store()</a>, <a class="el" href="register_8php.html#a0e91f57f111407ea8d3223a05022bb2a">register_content()</a>, <a class="el" href="plugin_8php.html#a425472c5f3afc137268b2ad45652b209">register_hook()</a>, <a class="el" href="register_8php.html#a51731dcc1917c58a790eb1c0f6132271">register_post()</a>, <a class="el" href="datetime_8php.html#a8ae8dc95ace7ac27fa5a1ecf42b78c82">relative_date()</a>, <a class="el" href="plugin_8php.html#af9ac19004dca49adae1ac7a0d9f3b025">reload_plugins()</a>, <a class="el" href="identity_8php.html#a47d6f53216f23a3484061793bef29854">remote_online_status()</a>, <a class="el" href="Contact_8php.html#acc12cda999c88c4d6185cca967c15125">remove_all_xchan_resources()</a>, <a class="el" href="zot_8php.html#aad25a3fe0e1566121d6fb8222979bc10">remove_community_tag()</a>, <a class="el" href="hubloc_8php.html#a84c79b7be352f62d12fe4fa2c80fc6ea">remove_obsolete_hublocs()</a>, <a class="el" href="text_8php.html#a9c6ce4e12a4ac883c5e3f36fed6e1e09">replace_macros()</a>, <a class="el" href="classFriendicaSmartyEngine.html#ad62f1181d2f02b54b46731ad2bd46db2">FriendicaSmartyEngine\replace_macros()</a>, <a class="el" href="items_8php.html#af6237605c60d69abdd959ddbbee3420c">retain_item()</a>, <a class="el" href="rmagic_8php.html#a95455edd43f1bff39446a57388cdde16">rmagic_init()</a>, <a class="el" href="rmagic_8php.html#a869de069d081b3c4e98b957d06bbf08f">rmagic_post()</a>, <a class="el" href="rpost_8php.html#a8190354d789000806d9879aea276728f">rpost_content()</a>, <a class="el" href="classphoto__driver.html#a5864fae7d8389372955a8e78cec527ac">photo_driver\save()</a>, <a class="el" href="search__ac_8php.html#a14f90c83a3f2be095e9e2992a8d66138">search_ac_init()</a>, <a class="el" href="search_8php.html#ab2568591359edde5b483a6cd9a24b2cc">search_content()</a>, <a class="el" href="include_2message_8php.html#a751ffd6635022b2190f56154ee745752">send_message()</a>, <a class="el" href="account_8php.html#a014de2d5d5c9785de5bf547a485822fa">send_reg_approval_email()</a>, <a class="el" href="items_8php.html#aab9e0c58247427126de0699c729c3b6c">send_status_notifications()</a>, <a class="el" href="account_8php.html#a030cec6793b909c439c0336ba39b1571">service_class_allows()</a>, <a class="el" href="account_8php.html#a905b54e10704b283ac64680a8abc0971">service_class_fetch()</a>, <a class="el" href="classCache.html#ae622b82adc1c2fb1f3e2cc4fd9688fce">Cache\set()</a>, <a class="el" href="identity_8php.html#a78151baf4407a8482d2681a91a9c486b">set_default_login_identity()</a>, <a class="el" href="classRedMatrix_1_1RedDAV_1_1RedBasicAuth.html#a2926fe923baade564f2663632fa8c633">RedMatrix\RedDAV\RedBasicAuth\setAuthenticated()</a>, <a class="el" href="classRedMatrix_1_1RedDAV_1_1RedFile.html#a0350cb4e0327e1f9922869a48ee04f1d">RedMatrix\RedDAV\RedFile\setName()</a>, <a class="el" href="classRedMatrix_1_1RedDAV_1_1RedDirectory.html#a14ac61d31a031d139956763db4e03956">RedMatrix\RedDAV\RedDirectory\setName()</a>, <a class="el" href="settings_8php.html#aa7ee94d88ac088edb04ccf3a26de3586">settings_post()</a>, <a class="el" href="setup_8php.html#a88247384a96e14516f474d7af6a465c1">setup_content()</a>, <a class="el" href="share_8php.html#afeb26046bdd02567ecd29ab5f188b249">share_init()</a>, <a class="el" href="siteinfo_8php.html#a70c09bfb6dd1c86a125a35f62ed53656">siteinfo_content()</a>, <a class="el" href="siteinfo_8php.html#a3efbd0bd6564af19ec0a9ce0294e59d0">siteinfo_init()</a>, <a class="el" href="sitelist_8php.html#a665a59bf60f780b40f32c909f4a473b1">sitelist_init()</a>, <a class="el" href="sources_8php.html#ac442ccef080ab95772d8929fcafcb4b7">sources_content()</a>, <a class="el" href="sources_8php.html#ac73298ff162ce7b2de8dcaf3d3305b1e">sources_post()</a>, <a class="el" href="starred_8php.html#a63024fb418c678e49fd535e3752d349a">starred_init()</a>, <a class="el" href="items_8php.html#adf2b8137dc4ad9ec958de2842f16f3c2">start_delivery_chain()</a>, <a class="el" href="classphoto__driver.html#a642a8d0c4ad5f887c99c6af77cee287b">photo_driver\store()</a>, <a class="el" href="items_8php.html#a25221826fa4621f523c68483e3b6af26">store_diaspora_comment_sig()</a>, <a class="el" href="taxonomy_8php.html#a4ba1339b2a7054971178ce194e4440fd">store_item_tag()</a>, <a class="el" href="security_8php.html#a6126c77a1267e046ac59cf864613f011">stream_perms_api_uids()</a>, <a class="el" href="security_8php.html#a3ef2be6a7e4928e39d50059d6feb457c">stream_perms_xchans()</a>, <a class="el" href="subthread_8php.html#a50368f3d825b77996030528e7fbfa3d3">subthread_content()</a>, <a class="el" href="suggest_8php.html#a58748a8235d4523f8333847f3e42dd91">suggest_content()</a>, <a class="el" href="socgraph_8php.html#a76e6fca3d2bc842dcd9e710bb87c8329">suggestion_query()</a>, <a class="el" href="dir__fns_8php.html#aa666e7df6ca8c332f4081c9b66b4bdf6">sync_directories()</a>, <a class="el" href="zot_8php.html#ab15c04e7e5f44edf45ec50dd7d183254">sync_locations()</a>, <a class="el" href="items_8php.html#ab1bce4261bcf75ad62753b498a144d17">tag_deliver()</a>, <a class="el" href="taxonomy_8php.html#aaf90ba8b839d6459065f39a4f1109b8a">tagadelic()</a>, <a class="el" href="taxonomy_8php.html#ac21d1dff16d569e7d110167aea4e63c2">tagblock()</a>, <a class="el" href="tagger_8php.html#a0e4a3eb177d1684553c547503d67161c">tagger_content()</a>, <a class="el" href="tagrm_8php.html#adfd4ea5b4d7fc6d9c9e042af5cd7d49a">tagrm_content()</a>, <a class="el" href="tagrm_8php.html#a1702f40aa53a2fa93deade1f609abe78">tagrm_post()</a>, <a class="el" href="items_8php.html#a88c6cf7649ac836fbbed82a7a0315110">tgroup_check()</a>, <a class="el" href="text_8php.html#af9c9ac3f74c82dc60acfa404d0e9dc53">theme_attachments()</a>, <a class="el" href="thing_8php.html#a24a35f1e64029a67fdbea94a776ae04b">thing_content()</a>, <a class="el" href="thing_8php.html#a8be23b1d475ec3d9291999221c674c80">thing_init()</a>, <a class="el" href="plugin_8php.html#a56f71fe5adf9586ce950523d8180443e">unregister_hook()</a>, <a class="el" href="datetime_8php.html#af1cd77c97c901d9239cb7a61f97f9826">update_birthdays()</a>, <a class="el" href="statistics__fns_8php.html#a82726229a961d3bd3d543005c61dd8e6">update_channels_active_halfyear_stat()</a>, <a class="el" href="statistics__fns_8php.html#ad2b7b595c039c4c2eb0d6cd57a393dfe">update_channels_active_monthly_stat()</a>, <a class="el" href="statistics__fns_8php.html#a05858927cce81fd367aedf85a94ed90c">update_channels_total_stat()</a>, <a class="el" href="dir__fns_8php.html#a44062d4b471d1e83f92f6c184585aa13">update_directory_entry()</a>, <a class="el" href="items_8php.html#a2baa9e05f1e8aa3dd61c85803ae39bd6">update_remote_id()</a>, <a class="el" href="socgraph_8php.html#a790690bb1a1d02483fe31632a160144d">update_suggestions()</a>, <a class="el" href="account_8php.html#ac5c570a2d46446bad4dd2501e9c5a4b1">user_allow()</a>, <a class="el" href="account_8php.html#ad07be417ac7eda939768804106ddea3d">user_approve()</a>, <a class="el" href="account_8php.html#ac1653efba62493b9d87513e1b6c04c83">user_deny()</a>, <a class="el" href="classRedMatrix_1_1RedDAV_1_1RedBasicAuth.html#a6ece02655b780469e59e204c5979a624">RedMatrix\RedDAV\RedBasicAuth\validateUserPass()</a>, <a class="el" href="Contact_8php.html#a6348a532c9d26cd1c9afbc9aa6aa8960">vcard_from_xchan()</a>, <a class="el" href="account_8php.html#acd6b8d2124ba5ea4f4794d2c58ae8bf5">verify_email_address()</a>, <a class="el" href="viewconnections_8php.html#ab6c4d983e97b3a8a879567ff76507776">viewconnections_content()</a>, <a class="el" href="viewsrc_8php.html#a6eff3d0c1d7d14b335c4edb785cd60a4">viewsrc_content()</a>, <a class="el" href="vote_8php.html#a6aa67489bf458ca5e3206e46dac68596">vote_content()</a>, <a class="el" href="vote_8php.html#ae0c6610f40afbbc1f4fe6494c51fbab2">vote_init()</a>, <a class="el" href="vote_8php.html#a57a9516ee1b923b224e66dcc47377fb2">vote_post()</a>, <a class="el" href="wall__attach_8php.html#a7385e970e93228d082f0fd7254f6e653">wall_attach_post()</a>, <a class="el" href="webpages_8php.html#af3b7397d4abc153e3d2147740ee1a41d">webpages_content()</a>, <a class="el" href="wfinger_8php.html#ae21e50c8d0a5f3c9be9f43a4e519acd3">wfinger_init()</a>, <a class="el" href="widgets_8php.html#a0e2f5179ed1a73b282dfda7270fcabb3">widget_bookmarkedchats()</a>, <a class="el" href="widgets_8php.html#a47c72aac42058ea086c9ef8651c259da">widget_chatroom_list()</a>, <a class="el" href="widgets_8php.html#a5ab3b64496e02cab56429978ad55f1c0">widget_filer()</a>, <a class="el" href="widgets_8php.html#ad1bf7aa69e8d100d95faba17c7bc91cd">widget_follow()</a>, <a class="el" href="widgets_8php.html#a313a8d10ab81c71357c12e67e4d7efd5">widget_item()</a>, <a class="el" href="widgets_8php.html#a829c5a5c7448129266fc1df3ae1a3c2e">widget_random_block()</a>, <a class="el" href="widgets_8php.html#a94203eb9bcd63cbdecbbcb15163598d8">widget_savedsearch()</a>, <a class="el" href="widgets_8php.html#a50b1410238100c8a94c06b0aa63ee3b8">widget_suggestedchats()</a>, <a class="el" href="widgets_8php.html#a0d404276fedc59f5038cf5c085028326">widget_suggestions()</a>, <a class="el" href="widgets_8php.html#a6dbc227aac750774284ee39c45f0a200">widget_tagcloud()</a>, <a class="el" href="taxonomy_8php.html#a83f0a60f9e0c07d8451dc5be95b17287">wtagblock()</a>, <a class="el" href="xchan_8php.html#a9853348bf1a35c644460221ba75edc2d">xchan_content()</a>, <a class="el" href="hubloc_8php.html#af1b476c936f96a93282b1d058e3d05ea">xchan_fetch()</a>, <a class="el" href="hubloc_8php.html#acb708dd197aae72a4858cf5ff4e3195b">xchan_store()</a>, <a class="el" href="xrd_8php.html#aee3cf087968e4a0ff3a87de16eb23270">xrd_init()</a>, <a class="el" href="text_8php.html#a324c58f37f6acdf9cd1922aa76077d9f">z_input_filter()</a>, <a class="el" href="include_2attach_8php.html#aeb07968990e66a88c95483ca09a7f909">z_readdir()</a>, <a class="el" href="zfinger_8php.html#a8139b83a22ef98869adc10aa224027a0">zfinger_init()</a>, <a class="el" href="identity_8php.html#a680fbafc2db023c5b1309e0180e81315">zid_init()</a>, <a class="el" href="items_8php.html#a1cf89557f32d5dfbe8bd90448dc1aa92">zot_feed()</a>, <a class="el" href="zot_8php.html#a95528377d7303131958c9f0b7158fdce">zot_finger()</a>, <a class="el" href="zot_8php.html#a55056e863a7860bc0cf922e78fcce073">zot_gethub()</a>, <a class="el" href="zot_8php.html#aeea071f17e306fe3d0c488551906bfab">zot_import()</a>, <a class="el" href="zot_8php.html#a3920afe14fc1d82020161b4b86bcd9ac">zot_process_message_request()</a>, <a class="el" href="zot_8php.html#a928f5643ca66ae9635d85aeb2be62e03">zot_process_response()</a>, <a class="el" href="zot_8php.html#a7ac30ff51274bf0b6d3eade37972145c">zot_refresh()</a>, <a class="el" href="zotfeed_8php.html#a24dfc23d366e7f840cf2847d0c1c8eac">zotfeed_init()</a>, and <a class="el" href="zping_8php.html#a4d3a6b0b8b04ed6469015823e615ee75">zping_content()</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a2da3681c9cce2efe7de29aa578ff4219"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">$rand = <a class="el" href="dba__driver_8php.html#a2994daa03b1c23229a27e39bcab75e67">db_getfunc</a>('RAND')</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p>Referenced by <a class="el" href="socgraph_8php.html#a7d34cd58025bcd9e575282f44db75918">common_friends()</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a241b818f48030b628685b2e5119c5624"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">$total = 0</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p>Referenced by <a class="el" href="admin_8php.html#ad6f87a764fd35f522c7b4c351d7878ec">admin_page_channels()</a>, <a class="el" href="admin_8php.html#a62f10f90c47686c9c3c37c4c03a108d2">admin_page_users()</a>, <a class="el" href="connections_8php.html#aec2e457420fce3e3bf6a9f48e36df25c">connections_content()</a>, <a class="el" href="text_8php.html#ad6432621d0fafcbcf3d3b9b49bef7784">contact_block()</a>, <a class="el" href="conversation_8php.html#ab2383dff4f823e580399ff469d90ab19">count_descendants()</a>, <a class="el" href="classItem.html#aca1e66988ed00cd627b2a359b72cd0ae">Item\count_descendants()</a>, <a class="el" href="classItem.html#ae0c48b2fed5558642549cabd547fc4f3">Item\count_unseen_descendants()</a>, <a class="el" href="externals_8php.html#a4df44079e6f915286088b7a0d44db926">externals_run()</a>, <a class="el" href="identity_8php.html#ad2c97627a313d53df1a1c7b4215ddb51">get_birthdays()</a>, <a class="el" href="identity_8php.html#ae381db3d43f8e7c1da8b15d14ecf5312">get_events()</a>, <a class="el" href="invite_8php.html#aeb0881c0f93c8e8552e5ed756ce6e5a5">invite_post()</a>, <a class="el" href="msearch_8php.html#ac80d2a6c0a92e79eec7efbbccd74d9a8">msearch_post()</a>, <a class="el" href="onepoll_8php.html#a72753b2fdec79b37c7f432035c91fb6d">onepoll_run()</a>, and <a class="el" href="socgraph_8php.html#a5ef8bef37161df53718a21e93d02fbd6">poco_load()</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a9d4f8a2ab4d92b3ccfd7cba0458098eb"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="typo_8php.html#a329c9c12217d2c8660c47bbc7c8df4c5">foreach</a> ($r as $rr) print $total n</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+</div>
+</div>
+</div><!-- contents -->
+</div><!-- doc-content -->
+
diff --git a/doc/html/fixd_8php.js b/doc/html/fixd_8php.js
new file mode 100644
index 000000000..2486b89d6
--- /dev/null
+++ b/doc/html/fixd_8php.js
@@ -0,0 +1,7 @@
+var fixd_8php =
+[
+ [ "$r", "fixd_8php.html#a8abe176bc41afd728f32ba8c506cbd98", null ],
+ [ "$rand", "fixd_8php.html#a2da3681c9cce2efe7de29aa578ff4219", null ],
+ [ "$total", "fixd_8php.html#a241b818f48030b628685b2e5119c5624", null ],
+ [ "n", "fixd_8php.html#a9d4f8a2ab4d92b3ccfd7cba0458098eb", null ]
+]; \ No newline at end of file
diff --git a/doc/html/frphotohelper_8php.html b/doc/html/frphotohelper_8php.html
new file mode 100644
index 000000000..11ae583a6
--- /dev/null
+++ b/doc/html/frphotohelper_8php.html
@@ -0,0 +1,486 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<meta name="generator" content="Doxygen 1.8.3.1"/>
+<title>The Red Matrix: util/frphotohelper.php File Reference</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="navtree.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="resize.js"></script>
+<script type="text/javascript" src="navtree.js"></script>
+<script type="text/javascript">
+ $(document).ready(initResizable);
+ $(window).load(resizeHeight);
+</script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/search.js"></script>
+<script type="text/javascript">
+ $(document).ready(function() { searchBox.OnSelectItem(0); });
+</script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+ <td id="projectlogo"><img alt="Logo" src="rm-64.png"/></td>
+ <td style="padding-left: 0.5em;">
+ <div id="projectname">The Red Matrix
+ </div>
+ </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.8.3.1 -->
+<script type="text/javascript">
+var searchBox = new SearchBox("searchBox", "search",false,'Search');
+</script>
+ <div id="navrow1" class="tabs">
+ <ul class="tablist">
+ <li><a href="index.html"><span>Main&#160;Page</span></a></li>
+ <li><a href="pages.html"><span>Related&#160;Pages</span></a></li>
+ <li><a href="namespaces.html"><span>Namespaces</span></a></li>
+ <li><a href="annotated.html"><span>Classes</span></a></li>
+ <li class="current"><a href="files.html"><span>Files</span></a></li>
+ <li>
+ <div id="MSearchBox" class="MSearchBoxInactive">
+ <span class="left">
+ <img id="MSearchSelect" src="search/mag_sel.png"
+ onmouseover="return searchBox.OnSearchSelectShow()"
+ onmouseout="return searchBox.OnSearchSelectHide()"
+ alt=""/>
+ <input type="text" id="MSearchField" value="Search" accesskey="S"
+ onfocus="searchBox.OnSearchFieldFocus(true)"
+ onblur="searchBox.OnSearchFieldFocus(false)"
+ onkeyup="searchBox.OnSearchFieldChange(event)"/>
+ </span><span class="right">
+ <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
+ </span>
+ </div>
+ </li>
+ </ul>
+ </div>
+ <div id="navrow2" class="tabs2">
+ <ul class="tablist">
+ <li><a href="files.html"><span>File&#160;List</span></a></li>
+ <li><a href="globals.html"><span>File&#160;Members</span></a></li>
+ </ul>
+ </div>
+</div><!-- top -->
+<div id="side-nav" class="ui-resizable side-nav-resizable">
+ <div id="nav-tree">
+ <div id="nav-tree-contents">
+ <div id="nav-sync" class="sync"></div>
+ </div>
+ </div>
+ <div id="splitbar" style="-moz-user-select:none;"
+ class="ui-resizable-handle">
+ </div>
+</div>
+<script type="text/javascript">
+$(document).ready(function(){initNavTree('frphotohelper_8php.html','');});
+</script>
+<div id="doc-content">
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+ onmouseover="return searchBox.OnSearchSelectShow()"
+ onmouseout="return searchBox.OnSearchSelectHide()"
+ onkeydown="return searchBox.OnSearchSelectKey(event)">
+<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark">&#160;</span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark">&#160;</span>Classes</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark">&#160;</span>Namespaces</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark">&#160;</span>Files</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark">&#160;</span>Functions</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark">&#160;</span>Variables</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark">&#160;</span>Pages</a></div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<iframe src="javascript:void(0)" frameborder="0"
+ name="MSearchResults" id="MSearchResults">
+</iframe>
+</div>
+
+<div class="header">
+ <div class="summary">
+<a href="#var-members">Variables</a> </div>
+ <div class="headertitle">
+<div class="title">frphotohelper.php File Reference</div> </div>
+</div><!--header-->
+<div class="contents">
+<table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="var-members"></a>
+Variables</h2></td></tr>
+<tr class="memitem:acebf83966ef6d7e5645a6b62ba368f9f"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="frphotohelper_8php.html#acebf83966ef6d7e5645a6b62ba368f9f">$a</a> = <a class="el" href="boot_8php.html#a0e6db7e365f2b041a828b93786f694bc">get_app</a>()</td></tr>
+<tr class="separator:acebf83966ef6d7e5645a6b62ba368f9f"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a2d2299040f635cee8d5aac68230dd630"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="frphotohelper_8php.html#a2d2299040f635cee8d5aac68230dd630">$photo_id</a> = $<a class="el" href="boot_8php.html#a768f00b7d66be0daf7ef4eea2e862006">argv</a>[1]</td></tr>
+<tr class="separator:a2d2299040f635cee8d5aac68230dd630"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a1ce9aa56ce28b42f5db69d00d4c78972"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="frphotohelper_8php.html#a1ce9aa56ce28b42f5db69d00d4c78972">$channel_address</a> = $<a class="el" href="boot_8php.html#a768f00b7d66be0daf7ef4eea2e862006">argv</a>[2]</td></tr>
+<tr class="separator:a1ce9aa56ce28b42f5db69d00d4c78972"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a2059b37bbca58d2613c70af2c19eddce"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="frphotohelper_8php.html#a2059b37bbca58d2613c70af2c19eddce">$fr_server</a> = urldecode($<a class="el" href="boot_8php.html#a768f00b7d66be0daf7ef4eea2e862006">argv</a>[3])</td></tr>
+<tr class="separator:a2059b37bbca58d2613c70af2c19eddce"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:aef9f7eafd54f6e36423347bed723c67e"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="frphotohelper_8php.html#aef9f7eafd54f6e36423347bed723c67e">$cookies</a> = 'store/[data]/frphoto_cookie_' . $channel_address</td></tr>
+<tr class="separator:aef9f7eafd54f6e36423347bed723c67e"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ab73d7f4f2dae233dd561e7fdaab3a77b"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="frphotohelper_8php.html#ab73d7f4f2dae233dd561e7fdaab3a77b">$c</a></td></tr>
+<tr class="separator:ab73d7f4f2dae233dd561e7fdaab3a77b"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ac162139c764f53cc07f42b09432549ba"><td class="memItemLeft" align="right" valign="top"><a class="el" href="theme_2mytheme_2php_2default_8php.html#a3987f5547ceb7e36a210a66a06241a5a">if</a>(!$c)&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="frphotohelper_8php.html#ac162139c764f53cc07f42b09432549ba">$channel</a> = $c[0]</td></tr>
+<tr class="separator:ac162139c764f53cc07f42b09432549ba"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a696b903bbc5c02914bdd402e91826eca"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="frphotohelper_8php.html#a696b903bbc5c02914bdd402e91826eca">$ch</a> = curl_init($fr_server . '/api/friendica/photo?f=&amp;photo_id=' . $photo_id)</td></tr>
+<tr class="separator:a696b903bbc5c02914bdd402e91826eca"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a73004ce9cd673c1bfafd1dc351134797"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="frphotohelper_8php.html#a73004ce9cd673c1bfafd1dc351134797">$output</a> = curl_exec($ch)</td></tr>
+<tr class="separator:a73004ce9cd673c1bfafd1dc351134797"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a6f16db779ef3ccea921b277b5dc245d1"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="frphotohelper_8php.html#a6f16db779ef3ccea921b277b5dc245d1">$j</a> = json_decode($output,true)</td></tr>
+<tr class="separator:a6f16db779ef3ccea921b277b5dc245d1"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a67e94494731d99ed23b123e95175bc10"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="frphotohelper_8php.html#a67e94494731d99ed23b123e95175bc10">$args</a> = array()</td></tr>
+<tr class="separator:a67e94494731d99ed23b123e95175bc10"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:acaefa2c3b286896f12eb55ae56e154af"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="frphotohelper_8php.html#acaefa2c3b286896f12eb55ae56e154af">$args</a> ['data'] = base64_decode($j['data'])</td></tr>
+<tr class="separator:acaefa2c3b286896f12eb55ae56e154af"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ad3310ef5d714f2baae2d882a1e22cf05"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="frphotohelper_8php.html#ad3310ef5d714f2baae2d882a1e22cf05">$args</a> ['filename'] = $j['filename']</td></tr>
+<tr class="separator:ad3310ef5d714f2baae2d882a1e22cf05"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:adbc68ba8d9b3e0fac2d4c9fb683ef9f6"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="frphotohelper_8php.html#adbc68ba8d9b3e0fac2d4c9fb683ef9f6">$args</a> ['resource_id'] = $j['resource-id']</td></tr>
+<tr class="separator:adbc68ba8d9b3e0fac2d4c9fb683ef9f6"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ad4237a752a460152a5445abcb50238cf"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="frphotohelper_8php.html#ad4237a752a460152a5445abcb50238cf">$args</a> ['scale'] = $j['scale']</td></tr>
+<tr class="separator:ad4237a752a460152a5445abcb50238cf"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a44a64913242d4235e332cc69885c1460"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="frphotohelper_8php.html#a44a64913242d4235e332cc69885c1460">$args</a> ['album'] = $j['album']</td></tr>
+<tr class="separator:a44a64913242d4235e332cc69885c1460"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a6bb04aa9e43d97273fc84b6e308999c5"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="frphotohelper_8php.html#a6bb04aa9e43d97273fc84b6e308999c5">$args</a> ['not_visible'] = 1</td></tr>
+<tr class="separator:a6bb04aa9e43d97273fc84b6e308999c5"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ab93f92df528f98af0f4511720032b03c"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="frphotohelper_8php.html#ab93f92df528f98af0f4511720032b03c">$args</a> ['created'] = $j['created']</td></tr>
+<tr class="separator:ab93f92df528f98af0f4511720032b03c"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a1fba6794d8decbc7b957710af3179c10"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="frphotohelper_8php.html#a1fba6794d8decbc7b957710af3179c10">$args</a> ['edited'] = $j['edited']</td></tr>
+<tr class="separator:a1fba6794d8decbc7b957710af3179c10"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a88f7360b97eecb65e5e13708a093d172"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="frphotohelper_8php.html#a88f7360b97eecb65e5e13708a093d172">$args</a> ['title'] = $j['title']</td></tr>
+<tr class="separator:a88f7360b97eecb65e5e13708a093d172"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ad5fe4c1396829f3ce98eec037db698b2"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="frphotohelper_8php.html#ad5fe4c1396829f3ce98eec037db698b2">$args</a> ['description'] = $j['desc']</td></tr>
+<tr class="separator:ad5fe4c1396829f3ce98eec037db698b2"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ab66e3756cdc86eaa61d42e675092c649"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="frphotohelper_8php.html#ab66e3756cdc86eaa61d42e675092c649">$args</a> ['type'] = $j['type']</td></tr>
+<tr class="separator:ab66e3756cdc86eaa61d42e675092c649"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a8abe176bc41afd728f32ba8c506cbd98"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="frphotohelper_8php.html#a8abe176bc41afd728f32ba8c506cbd98">$r</a></td></tr>
+<tr class="separator:a8abe176bc41afd728f32ba8c506cbd98"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a83d5f232bed56a5af8173818b0bdf79d"><td class="memItemLeft" align="right" valign="top"><a class="el" href="theme_2mytheme_2php_2default_8php.html#a3987f5547ceb7e36a210a66a06241a5a">if</a>($r)&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="frphotohelper_8php.html#a83d5f232bed56a5af8173818b0bdf79d">$ret</a> = <a class="el" href="include_2photos_8php.html#a6c40ef58aefef705a5adc84a40e97109">photo_upload</a>($channel,$channel,$args)</td></tr>
+<tr class="separator:a83d5f232bed56a5af8173818b0bdf79d"><td class="memSeparator" colspan="2">&#160;</td></tr>
+</table>
+<h2 class="groupheader">Variable Documentation</h2>
+<a class="anchor" id="acebf83966ef6d7e5645a6b62ba368f9f"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">$a = <a class="el" href="boot_8php.html#a0e6db7e365f2b041a828b93786f694bc">get_app</a>()</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p>Referenced by <a class="el" href="classFriendicaSmarty.html#af12091b920b95eeef1218cbc48066ca6">FriendicaSmarty\__construct()</a>, <a class="el" href="classItem.html#a248f45871ecfe82a08d1d4c0769b2eb2">Item\__construct()</a>, <a class="el" href="classFriendicaSmartyEngine.html#ab7c305bd8c386c2944e4dc9136cea5b6">FriendicaSmartyEngine\__construct()</a>, <a class="el" href="classTemplate.html#ae0836e7d5bd5afceb04f50fd635f1228">Template\_replcb_if()</a>, <a class="el" href="classTemplate.html#a86e8fd27955ef10cadfd86f3fca70677">Template\_replcb_inc()</a>, <a class="el" href="__well__known_8php.html#a6ebfa937a2024f0b5dab53f0ac90fed0">_well_known_init()</a>, <a class="el" href="Contact_8php.html#a024919623a830e8703ac4f23496dd66c">abook_toggle_flag()</a>, <a class="el" href="achievements_8php.html#a35ae04ada0e227d19671f289a32fb30e">achievements_content()</a>, <a class="el" href="acl_8php.html#ac6776dba871806ecdb5d1659bc2eb07a">acl_init()</a>, <a class="el" href="admin_8php.html#afef415e4011607fbb665610441595015">admin_content()</a>, <a class="el" href="admin_8php.html#ad6f87a764fd35f522c7b4c351d7878ec">admin_page_channels()</a>, <a class="el" href="admin_8php.html#a42e628f367c168add8013352ac74d33f">admin_page_channels_post()</a>, <a class="el" href="admin_8php.html#aaa6addf2dbc3f3fcf99244a56b41eade">admin_page_dbsync()</a>, <a class="el" href="admin_8php.html#a6943543f3138f6ee182cb701f415d1cc">admin_page_hubloc()</a>, <a class="el" href="admin_8php.html#a60ba9783ad14545814919970bc3fb725">admin_page_hubloc_post()</a>, <a class="el" href="admin_8php.html#a1d1362698af14d209aa3a0fb655551dd">admin_page_logs()</a>, <a class="el" href="admin_8php.html#a233b7c8c31776b7020532003c6e44e1c">admin_page_logs_post()</a>, <a class="el" href="admin_8php.html#a54128076986ba80c4a103de3fc3e19a8">admin_page_plugins()</a>, <a class="el" href="admin_8php.html#ac0f3bd12431c056aad77bac9d09fa30e">admin_page_site()</a>, <a class="el" href="admin_8php.html#add865f4ae806ecbf716f423fc3e50e4f">admin_page_site_post()</a>, <a class="el" href="admin_8php.html#ac6e95b920b5abd030cc522964987087a">admin_page_summary()</a>, <a class="el" href="admin_8php.html#af124619fdc278fe2bf14c45ddaa260fb">admin_page_themes()</a>, <a class="el" href="admin_8php.html#a62f10f90c47686c9c3c37c4c03a108d2">admin_page_users()</a>, <a class="el" href="admin_8php.html#a5a696706a3869800e65fb365214241b7">admin_page_users_post()</a>, <a class="el" href="admin_8php.html#acf51f5837a7427832144c2bf7308ada3">admin_post()</a>, <a class="el" href="identity_8php.html#aa870d2c1f558cfd52bef05bc124e8fa4">advanced_profile()</a>, <a class="el" href="include_2network_8php.html#aba38458a2ff2d92d3536488dbb119694">allowed_email()</a>, <a class="el" href="include_2network_8php.html#aee35d9ad6b3f872bfb39ba3598936aa7">allowed_url()</a>, <a class="el" href="text_8php.html#a75c243e06341ec16bd5a44b9b1cacd85">alt_pager()</a>, <a class="el" href="include_2api_8php.html#a864191bb876a515ed71b17e260ef35ad">api_account_verify_credentials()</a>, <a class="el" href="include_2api_8php.html#aa9dc5350b26d6c7727d6c4b641ecba18">api_albums()</a>, <a class="el" href="include_2api_8php.html#a5990101034e7abf6404feba3cd273629">api_apply_template()</a>, <a class="el" href="include_2api_8php.html#a176c448d79c211ad41c2bbe3124658f5">api_call()</a>, <a class="el" href="mod_2api_8php.html#a33315b5bbf5418f6850b2038107b526d">api_content()</a>, <a class="el" href="include_2api_8php.html#a970b02c06dea8b229aa3d5fff9cf4705">api_direct_messages_all()</a>, <a class="el" href="include_2api_8php.html#a7759ccddc8dff012ad168e511ffe5af5">api_direct_messages_box()</a>, <a class="el" href="include_2api_8php.html#a9160288b7ac220635942d8dc209b78c3">api_direct_messages_conversation()</a>, <a class="el" href="include_2api_8php.html#ad2b0192f3006918bea895de8074bf8d2">api_direct_messages_inbox()</a>, <a class="el" href="include_2api_8php.html#a0991f72554f821255397d615e76f3203">api_direct_messages_new()</a>, <a class="el" href="include_2api_8php.html#a58cf4c02ef435996f5c3bc4283d3968d">api_direct_messages_sentbox()</a>, <a class="el" href="include_2api_8php.html#a2c71b1226ef1283b5370bd1c200fee5f">api_favorites()</a>, <a class="el" href="include_2api_8php.html#ab1ecb58954f722444bfe03233345cb1b">api_followers_ids()</a>, <a class="el" href="include_2api_8php.html#a18cab7c6391df5c421753463f5d2a879">api_format_as()</a>, <a class="el" href="include_2api_8php.html#a4c6fb9fb5203aa60f4b3afd4521db8ea">api_format_items()</a>, <a class="el" href="include_2api_8php.html#acafd2899309a005fcb725289173dc7fe">api_friends_ids()</a>, <a class="el" href="include_2api_8php.html#aa40bae797bcd9ccacffdce5a3b5a1afa">api_get_user()</a>, <a class="el" href="include_2api_8php.html#aa49741342ad8ba285737eea1209a37e1">api_item_get_user()</a>, <a class="el" href="include_2api_8php.html#afe534f826e4282b72d66e8cadca7bb73">api_login()</a>, <a class="el" href="include_2api_8php.html#aa6fc3bc8c0fad1d081db0dcc456dd77f">api_photos()</a>, <a class="el" href="mod_2api_8php.html#a6fe77f05c07cb51048df0d557b4b9bd2">api_post()</a>, <a class="el" href="include_2api_8php.html#a6a04b48168ba1d9dd2de3081a630611f">api_rss_extra()</a>, <a class="el" href="include_2api_8php.html#a645397787618b5c548a31e8686e8cca4">api_status_show()</a>, <a class="el" href="include_2api_8php.html#ad4c29f43418f6110f85a6b3998239ab4">api_statuses_destroy()</a>, <a class="el" href="include_2api_8php.html#aa0d6b29fff0344a8e67f3507a6d01410">api_statuses_f()</a>, <a class="el" href="include_2api_8php.html#a6951c690d87775eb37e569c66011988e">api_statuses_followers()</a>, <a class="el" href="include_2api_8php.html#ade742525b2e41c82b090799ef3c51d5e">api_statuses_friends()</a>, <a class="el" href="include_2api_8php.html#a528d8070ee74ea800102936ce73cf366">api_statuses_home_timeline()</a>, <a class="el" href="include_2api_8php.html#a450d8732b7b608f7ac929aee61572b95">api_statuses_mediap()</a>, <a class="el" href="include_2api_8php.html#a8b25a186bd0893f51aa72a62f655735e">api_statuses_mentions()</a>, <a class="el" href="include_2api_8php.html#ad24ce1bf20867add4c9211a8eaf93f22">api_statuses_public_timeline()</a>, <a class="el" href="include_2api_8php.html#ae0fa388479cace9c5a7a45b571ab42f8">api_statuses_repeat()</a>, <a class="el" href="include_2api_8php.html#af6f1d89cdb0a0621025efbec1597bc63">api_statuses_show()</a>, <a class="el" href="include_2api_8php.html#ad4d1634df6b35126552324683caaffa2">api_statuses_update()</a>, <a class="el" href="include_2api_8php.html#a32f0dda848d0c11c727fe1c3e741c283">api_statuses_user_timeline()</a>, <a class="el" href="include_2api_8php.html#a623793229a7256dd31bcfd5ab90eef08">api_statusnet_config()</a>, <a class="el" href="include_2api_8php.html#abe8e929e93f7ab134b1cb1fb30f19a76">api_users_show()</a>, <a class="el" href="include_2apps_8php.html#ab93a3310b7de99ee90f673518eccb658">app_name_compare()</a>, <a class="el" href="appman_8php.html#af48805ac2f6f123f2681a8ae1c6f123f">appman_content()</a>, <a class="el" href="view_2theme_2apw_2php_2config_8php.html#ad59fc09da66b66267f9753c8b2dd68d0">apw_form()</a>, <a class="el" href="items_8php.html#a275108c050f7eb18bcbb5018e6b81cf6">atom_entry()</a>, <a class="el" href="text_8php.html#a95fd2f8f23a1948414a03ebc963bac57">attribute_contains()</a>, <a class="el" href="security_8php.html#adc7bf51e3b8d67bd80e9348f9ab03733">authenticate_success()</a>, <a class="el" href="include_2network_8php.html#ab07ce9d75eae559865ed90aad2154bd7">avatar_img()</a>, <a class="el" href="bbcode_8php.html#a3a989cbf308a32468d171d83e9c51d1e">bb_sanitize_style()</a>, <a class="el" href="bbcode_8php.html#a009f61aaf78771737ed0765c8463911b">bbcode()</a>, <a class="el" href="conversation_8php.html#ad470fc7766f0db66d138fa1916c7a8b7">best_link_url()</a>, <a class="el" href="block_8php.html#a8a82a470acdfbc7a8e749509caeeea45">block_content()</a>, <a class="el" href="block_8php.html#a9b61c96044ed2a068f18c10370a78d5c">block_init()</a>, <a class="el" href="blocks_8php.html#a2531a8fd51db3cecb2eb20c002c66e12">blocks_content()</a>, <a class="el" href="blogga_2php_2theme_8php.html#aa55c1cb1f05087b5002ecb633b550b1b">blog_init()</a>, <a class="el" href="blogga_2view_2theme_2blog_2theme_8php.html#a028ae8e9f2824670dfa76a6651d817e5">blogtheme_display_item()</a>, <a class="el" href="view_2theme_2blogga_2php_2config_8php.html#a8a311a402d3e746ce53fadc38e4b2d27">blogtheme_form()</a>, <a class="el" href="blogga_2view_2theme_2blog_2theme_8php.html#af634a3f721c5e238530d0636d33230ec">blogtheme_imgurl()</a>, <a class="el" href="mod_2bookmarks_8php.html#a774364b1c8404529581083631703527a">bookmarks_content()</a>, <a class="el" href="mod_2bookmarks_8php.html#a6b7942f3d27e40f0f47c88704127b9b3">bookmarks_init()</a>, <a class="el" href="zot_8php.html#aa97b33b619dd7132a9274f852af6ceb5">build_sync_packet()</a>, <a class="el" href="datetime_8php.html#aea356409ba69f9de412298c998595dd2">cal()</a>, <a class="el" href="plugin_8php.html#a7f05de16c0a32602853b09b99dd85e7c">call_hooks()</a>, <a class="el" href="contact__widgets_8php.html#a165eb021e61c4dcab2a552f28628d353">categories_widget()</a>, <a class="el" href="channel_8php.html#a9c6a6179e0e626398ebecc6151905ef1">channel_content()</a>, <a class="el" href="channel_8php.html#ac7c8c7845741baadf87fae6bc279f3dc">channel_init()</a>, <a class="el" href="Contact_8php.html#a4e8af0f0525161da74583c04b8b03097">channel_remove()</a>, <a class="el" href="chanview_8php.html#a4192c6da888c8c1165851acf9ad4cb8b">chanview_content()</a>, <a class="el" href="mod_2chat_8php.html#a8b0b8bee6fef6477e8c64c5e951b1b4f">chat_content()</a>, <a class="el" href="mod_2chat_8php.html#aa9ae4782e9baef0b7314ab9527c2707e">chat_init()</a>, <a class="el" href="mod_2chat_8php.html#a999d594745597c656c9760253ae297ad">chat_post()</a>, <a class="el" href="chatsvc_8php.html#a7032784215e1f6747cf385a6598770f9">chatsvc_content()</a>, <a class="el" href="chatsvc_8php.html#a28d248b056fa47452e28ed01130e9116">chatsvc_init()</a>, <a class="el" href="chatsvc_8php.html#a7c9a9b9c24a2b02eed8efd6b09632d03">chatsvc_post()</a>, <a class="el" href="boot_8php.html#a4c02d88e66852a01bd5a1feecb7c3ce3">check_config()</a>, <a class="el" href="security_8php.html#a9c6180e82150a5a9af91a1255d096b5c">check_form_security_token()</a>, <a class="el" href="security_8php.html#a444ac867dfa8c37cf0a7a226412bee28">check_form_security_token_ForbiddenOnErr()</a>, <a class="el" href="security_8php.html#a77ba0d1889a39cf32434c5ce96fe1433">check_form_security_token_redirectOnErr()</a>, <a class="el" href="setup_8php.html#a0c3f3b671381f6dccd924b8ecdfc56c4">check_htaccess()</a>, <a class="el" href="boot_8php.html#ab79b8b4555cae20d03f8200666d89d63">clean_urls()</a>, <a class="el" href="cli__startup_8php.html#adfdde63686e33ccd4851fa5edc4fc70b">cli_startup()</a>, <a class="el" href="cli__suggest_8php.html#a8f3a60fc96f4bec7d3837c4efc7725f2">cli_suggest_run()</a>, <a class="el" href="cloud_8php.html#a1b79a6fe0454bc76673ad9aef55bf02d">cloud_init()</a>, <a class="el" href="comanche_8php.html#a1a208fdb40dd83d6298caec4290ee922">comanche_parser()</a>, <a class="el" href="comanche_8php.html#a028f004d5b8c23d6367816d899e17cfe">comanche_replace_region()</a>, <a class="el" href="comanche_8php.html#a6b0191c1a63db1696a2eb139d90d9e7f">comanche_widget()</a>, <a class="el" href="common_8php.html#ab63408f39abef7a6915186e8dabc5a96">common_content()</a>, <a class="el" href="contact__widgets_8php.html#a552f8544528cec0c995cea7287ea9d65">common_friends_visitor_widget()</a>, <a class="el" href="common_8php.html#aca62f113655809f41f49042ce9b123c2">common_init()</a>, <a class="el" href="connect_8php.html#a489f0a66c660de6ec4d6917b27674f07">connect_content()</a>, <a class="el" href="connect_8php.html#ad46a38f32fd7a3d324b1fa26373efa36">connect_init()</a>, <a class="el" href="connect_8php.html#a417ec27afe33f21a929667a665e32ee2">connect_post()</a>, <a class="el" href="connections_8php.html#a15af118efee9c948b6f8294e54a73bb2">connections_clone()</a>, <a class="el" href="connections_8php.html#aec2e457420fce3e3bf6a9f48e36df25c">connections_content()</a>, <a class="el" href="connections_8php.html#a1f23623f802af7bd35e95b0e94e5d558">connections_init()</a>, <a class="el" href="connections_8php.html#a1224058db8e3fb56463eb312f98e561d">connections_post()</a>, <a class="el" href="connedit_8php.html#a707ea7e63cf9674025b1d6b081ae74f5">connedit_clone()</a>, <a class="el" href="connedit_8php.html#a795acb3d9d841f55c255d7611681ab67">connedit_content()</a>, <a class="el" href="connedit_8php.html#a4da871e075597a09a8b374b9171dd92e">connedit_init()</a>, <a class="el" href="connedit_8php.html#a234c48426b652bf4d37053f2af329ac5">connedit_post()</a>, <a class="el" href="boot_8php.html#acc4e0c910af066148b810e5fde55fff1">construct_page()</a>, <a class="el" href="text_8php.html#ad6432621d0fafcbcf3d3b9b49bef7784">contact_block()</a>, <a class="el" href="acl__selectors_8php.html#a9476997d2968a5794f3723878ed89c91">contact_select()</a>, <a class="el" href="conversation_8php.html#affea1afb3f32ca41e966c8ddb4204d81">conversation()</a>, <a class="el" href="identity_8php.html#a345f4c943d84de502ec6e72d2c813945">create_identity()</a>, <a class="el" href="boot_8php.html#ad206598b909e8eb67eb0e0bb5ef69c13">current_theme()</a>, <a class="el" href="boot_8php.html#a926cad0b3d8b9d9ee5da1898fc063ba3">current_theme_url()</a>, <a class="el" href="include_2config_8php.html#a549910227348003efc3c05c9105c42da">del_config()</a>, <a class="el" href="include_2config_8php.html#a7ad2081c5f812ac4387fd76f3762d941">del_pconfig()</a>, <a class="el" href="include_2config_8php.html#a9c171def547deee16738dc58fdeb4b72">del_xconfig()</a>, <a class="el" href="delegate_8php.html#a943eea8996ef348eb845c498f9f354dd">delegate_content()</a>, <a class="el" href="deliver_8php.html#a397afcb9afecf0c1816b0951189dd346">deliver_run()</a>, <a class="el" href="diaspora_8php.html#a006731620a5242d410358b32678e48e3">diaspora_asphoto()</a>, <a class="el" href="diaspora_8php.html#a0fb2abe304aae19efc040a5e6b917829">diaspora_comment()</a>, <a class="el" href="diaspora_8php.html#adef30b6fac948baedcc7194d5d155b5f">diaspora_conversation()</a>, <a class="el" href="diaspora_8php.html#a5d57518545baa31cf8a85a937a267681">diaspora_like()</a>, <a class="el" href="diaspora_8php.html#a7cff2f8f11044c1b3a360f20e1bbee46">diaspora_message()</a>, <a class="el" href="diaspora_8php.html#aca23425928635776dc17927041fc3fa8">diaspora_msg_build()</a>, <a class="el" href="diaspora_8php.html#a71fe9bb66626b4197ae018a230778bb2">diaspora_photo()</a>, <a class="el" href="diaspora_8php.html#a20b968d64ef26afe5cb0cc75a7570a31">diaspora_post()</a>, <a class="el" href="diaspora_8php.html#a900abf51398b2ef26cd2cd31c52f1b0f">diaspora_profile()</a>, <a class="el" href="diaspora_8php.html#addaf8f202e52e3f0a49ed05681f9405c">diaspora_pubmsg_build()</a>, <a class="el" href="diaspora_8php.html#ac1ab782a34552a7c6b4dc961754ed598">diaspora_request()</a>, <a class="el" href="diaspora_8php.html#a2bf43f6b5890897f425ef4325d34b007">diaspora_reshare()</a>, <a class="el" href="diaspora_8php.html#af4698b165766f83d89ec1ea964bc92cc">diaspora_send_followup()</a>, <a class="el" href="diaspora_8php.html#ae6f52efd81fe515cd9912bc8293abf5b">diaspora_send_images()</a>, <a class="el" href="diaspora_8php.html#aeb2bb78f620dbf51d9335e6eb7444f2c">diaspora_send_mail()</a>, <a class="el" href="diaspora_8php.html#a0b3628a5e53332c3d3196b689fe2b94d">diaspora_send_relay()</a>, <a class="el" href="diaspora_8php.html#a1704748aa2384c73e43f10e71defd31a">diaspora_send_retraction()</a>, <a class="el" href="diaspora_8php.html#a33ae0c4606a7df4d801c05507d87f668">diaspora_send_status()</a>, <a class="el" href="diaspora_8php.html#af3a7f9879c14fec761dcc5563fb39bac">diaspora_share()</a>, <a class="el" href="diaspora_8php.html#aa704d6aa2ac77be345c0f501168e6e56">diaspora_transmit()</a>, <a class="el" href="diaspora_8php.html#aa4b1cc0bca5c3fe8d11557685e0238a9">diaspora_unshare()</a>, <a class="el" href="mod_2directory_8php.html#aac79396570d759da2efac24fcedf5b44">directory_content()</a>, <a class="el" href="mod_2directory_8php.html#a5ee59c213508b6b9787612a8219cb5bf">directory_init()</a>, <a class="el" href="dirsearch_8php.html#a3e51964ae3f5ff147403407b65324752">dirsearch_init()</a>, <a class="el" href="display_8php.html#a37137c98d47bf3306f4c2bb9f5b60de0">display_content()</a>, <a class="el" href="text_8php.html#a0a1f7c0e97f9ecbebf3e5834582b014c">dlogger()</a>, <a class="el" href="items_8php.html#a555762e1022a4b8e3c3abd32e7812408">drop_item()</a>, <a class="el" href="editblock_8php.html#abbe8f55de06967bc8d79d620509a49e6">editblock_content()</a>, <a class="el" href="editlayout_8php.html#aa877e4157a26b099de904164181dd386">editlayout_content()</a>, <a class="el" href="editpost_8php.html#a34011690864d122680c802e9e748ccfb">editpost_content()</a>, <a class="el" href="editwebpage_8php.html#a375e945255fad79a71036528f7480650">editwebpage_content()</a>, <a class="el" href="event_8php.html#a32ba1b9ddf7a744a9a1512b052e5f850">ev_compare()</a>, <a class="el" href="event_8php.html#a7378e839ac3de9d55579eb3ec48eaf92">event_store_item()</a>, <a class="el" href="events_8php.html#a1d293fb217ae6bc9e3858c4b32e363ec">events_content()</a>, <a class="el" href="events_8php.html#ab3e8a8f901175f8e40a8089eea45c075">events_post()</a>, <a class="el" href="text_8php.html#ae4282a39492caa23ccbc2ce98e54f110">expand_acl()</a>, <a class="el" href="include_2group_8php.html#a22a81875259c7d3d64d4848afea6b345">expand_groups()</a>, <a class="el" href="externals_8php.html#a4df44079e6f915286088b7a0d44db926">externals_run()</a>, <a class="el" href="fbrowser_8php.html#aee476addcf7a3e0fe9454f7dfd5a56c4">fbrowser_content()</a>, <a class="el" href="contact__widgets_8php.html#a1eda66319d170f60a8d07c7ece95533b">fileas_widget()</a>, <a class="el" href="filer_8php.html#a5fd5d7e61b2f9c43cb5f110c89dc4274">filer_content()</a>, <a class="el" href="filerm_8php.html#ae2eb28d2054fa2c37e38689882172208">filerm_content()</a>, <a class="el" href="filestorage_8php.html#a61bb1be78472555df4ce619f51014040">filestorage_content()</a>, <a class="el" href="filestorage_8php.html#ad3b64e3ece9831f9d3a9f00c0ae983cd">filestorage_post()</a>, <a class="el" href="contact__widgets_8php.html#a57e73ebcfd62bb5d8c7a7b9e663726d6">findpeople_widget()</a>, <a class="el" href="items_8php.html#aba98fcbbcd7044a7e9ea34edabc14c87">fix_private_photos()</a>, <a class="el" href="mod_2follow_8php.html#a171f5b19f50d7738adc3b2e96ec6018a">follow_init()</a>, <a class="el" href="bb2diaspora_8php.html#a29a2ad41f5826f3975fa9a49934ff863">format_event_diaspora()</a>, <a class="el" href="frphotos_8php.html#a4a33fadb181497eff301ee5132ec61d1">frphotos_init()</a>, <a class="el" href="fsuggest_8php.html#aa6c49ed4b50a387f1845f36844dd7998">fsuggest_content()</a>, <a class="el" href="fsuggest_8php.html#a61ecfe10ce937ed526614f8fd3de3c7d">fsuggest_post()</a>, <a class="el" href="classBaseObject.html#ac43f10e69ce80c78e4870636250fc8a2">BaseObject\get_app()</a>, <a class="el" href="boot_8php.html#a0e6db7e365f2b041a828b93786f694bc">get_app()</a>, <a class="el" href="language_8php.html#a980dee1d8715a98ab02e36b59facf8ed">get_best_language()</a>, <a class="el" href="identity_8php.html#ad2c97627a313d53df1a1c7b4215ddb51">get_birthdays()</a>, <a class="el" href="classItem.html#a3ee7667c2ec6cd7657328e27848c0bdf">Item\get_comment_box()</a>, <a class="el" href="include_2config_8php.html#af02c96e6b37335774b548914ede1d22e">get_config()</a>, <a class="el" href="boot_8php.html#a899d24fd074594ceebbf72e1feff335f">get_custom_nav()</a>, <a class="el" href="identity_8php.html#ae381db3d43f8e7c1da8b15d14ecf5312">get_events()</a>, <a class="el" href="security_8php.html#acd06ef411116115c2f0a92633700db8a">get_form_security_token()</a>, <a class="el" href="classFriendicaSmartyEngine.html#a35ec0ee828c36640ea25296bcb84a118">FriendicaSmartyEngine\get_intltext_template()</a>, <a class="el" href="plugin_8php.html#acb63c27d07f6d7dffe95f98a6cef1295">get_intltext_template()</a>, <a class="el" href="plugin_8php.html#a75f7dfed291fd7add7fc85b5c022a1f4">get_markup_template()</a>, <a class="el" href="include_2config_8php.html#ad58a4913937179adb13201c2ee3261ad">get_pconfig()</a>, <a class="el" href="text_8php.html#aac0969ae09853205992ba06ab9f9f61a">get_plink()</a>, <a class="el" href="classItem.html#ad5dcbe0b94cb2d5719bc5b6bd8ad60c8">Item\get_template_data()</a>, <a class="el" href="plugin_8php.html#a48047edfbef770125a5508dcc2f9282f">get_theme_screenshot()</a>, <a class="el" href="include_2config_8php.html#aa3dc1d3de2d091ac702e675acd3a085e">get_xconfig()</a>, <a class="el" href="gprobe_8php.html#adf72cb0a70b5b9d99fdec1cc60e18ed1">gprobe_run()</a>, <a class="el" href="mod_2group_8php.html#a07a64f6c65b0080d8190b3d9728a7a83">group_content()</a>, <a class="el" href="mod_2group_8php.html#aed1f009b1221348021bb34761160ef35">group_post()</a>, <a class="el" href="acl__selectors_8php.html#aa1e3bc344ca2b29f97eb9860216d21a0">group_select()</a>, <a class="el" href="photo__driver_8php.html#a243cee492ce443afb6a7d77d54b6c4aa">guess_image_type()</a>, <a class="el" href="item_8php.html#aa22feef4de326e1d7078dedd892e615c">handle_tag()</a>, <a class="el" href="hcard_8php.html#ac34f26b0e6a37eef44fa49bea135136d">hcard_init()</a>, <a class="el" href="boot_8php.html#a24a7a70afedd5d85fe0eadc85afa9f77">head_get_icon()</a>, <a class="el" href="plugin_8php.html#a9ab6caae31935f6cf781ce7872db7cdf">head_remove_css()</a>, <a class="el" href="plugin_8php.html#a4a0ae7b881e7c8af99a69e3b03f898b4">head_remove_js()</a>, <a class="el" href="boot_8php.html#a0e4701c9742c3ef88f02ac450a042a84">head_set_icon()</a>, <a class="el" href="help_8php.html#af055e15f600ffa6fbca9386fdf715224">help_content()</a>, <a class="el" href="home_8php.html#aa1cf697851a646755baf537f75334c46">home_content()</a>, <a class="el" href="home_8php.html#ac4642c38b6f23a8d065dd4a75c620bde">home_init()</a>, <a class="el" href="hostxrd_8php.html#aa37ffc8e7900bc76c4828bd25916db92">hostxrd_init()</a>, <a class="el" href="photo__driver_8php.html#a1d0bc7161dec0d177b7d3bbe4421af9a">import_channel_photo()</a>, <a class="el" href="import_8php.html#af17fef0410518f7eac205d0ea416eaa2">import_post()</a>, <a class="el" href="photo__driver_8php.html#a78f5a10c568d2a9bbbb129dc96548887">import_profile_photo()</a>, <a class="el" href="boot_8php.html#adfb2fc7be5a4226c0a8e24131da9d498">info()</a>, <a class="el" href="plugin_8php.html#aeaebe63dcf6fa2794f363ba2bc0b2c6b">insert_hook()</a>, <a class="el" href="invite_8php.html#a244385b28cfd021d308715f01158bfd9">invite_content()</a>, <a class="el" href="invite_8php.html#aeb0881c0f93c8e8552e5ed756ce6e5a5">invite_post()</a>, <a class="el" href="boot_8php.html#a6252d8eca67c689d9035ec6da544cf46">is_developer()</a>, <a class="el" href="boot_8php.html#aa1e828bbbcba170265eb2668d8daf42e">is_site_admin()</a>, <a class="el" href="conversation_8php.html#aacbb12d372d5e9c3ab0735b4aea48fb3">item_photo_menu()</a>, <a class="el" href="item_8php.html#a693cd09805755ab85bbb5ecae69a48c3">item_post()</a>, <a class="el" href="items_8php.html#a756738301f2ed96be50232500677d58a">items_fetch()</a>, <a class="el" href="text_8php.html#a71f6952243d3fe1c5a8154f78027e29c">lang_selector()</a>, <a class="el" href="layouts_8php.html#a6e0193759ad9eef76d3df2db24237b50">layouts_content()</a>, <a class="el" href="like_8php.html#a9d7dd268f21c21e9d29dd2aca2dd9538">like_content()</a>, <a class="el" href="text_8php.html#a47c1e4a5f3f53027daacd8a9db24f285">link_compare()</a>, <a class="el" href="include_2config_8php.html#a27559f388c9b9af81c94e48d6889d1d1">load_config()</a>, <a class="el" href="boot_8php.html#a719c7f3972d5f9268f37a41c76cd4ef6">load_contact_links()</a>, <a class="el" href="setup_8php.html#ad2e0375a9ab87ebe6e78124ee125054a">load_database()</a>, <a class="el" href="plugin_8php.html#a326365e48ef94f0b9a0a771b8d75e813">load_hooks()</a>, <a class="el" href="include_2config_8php.html#ac543813a980b3841cc5a277fcd4a24a6">load_pconfig()</a>, <a class="el" href="language_8php.html#a7e9904c730bb24ddcb0ff50fc96f6b05">load_translation_table()</a>, <a class="el" href="include_2config_8php.html#a55bbed9a014c9109c767486834f3ca33">load_xconfig()</a>, <a class="el" href="text_8php.html#a030fa5ecc64168af0c4f44897a9bce63">logger()</a>, <a class="el" href="boot_8php.html#aefecf8599036df7f1b95d6820e0e2fa4">login()</a>, <a class="el" href="login_8php.html#a1d69ca88eb9005a7026e128b9a645904">login_content()</a>, <a class="el" href="classFKOAuth1.html#a2b1dac2ed31fc6ef84668afdda8b263f">FKOAuth1\loginUser()</a>, <a class="el" href="lostpass_8php.html#a0314d94e48c789b1b3a201d740c9eab3">lostpass_content()</a>, <a class="el" href="lostpass_8php.html#a8ed35ba71a4404eaf4903da61d0321cc">lostpass_post()</a>, <a class="el" href="magic_8php.html#acea2cc792849ca2d71d4b689f66518bf">magic_init()</a>, <a class="el" href="mail_8php.html#a3c7c485fc69f92371e8b20936040eca1">mail_content()</a>, <a class="el" href="mail_8php.html#acfc2cc0bf4e0b178207758384977f25a">mail_post()</a>, <a class="el" href="setup_8php.html#abe405d227ba7232971964a706d4f3bce">manual_config()</a>, <a class="el" href="match_8php.html#a1dd853e959b9e70c1911bb2fb5f5130d">match_content()</a>, <a class="el" href="mod_2message_8php.html#ac72dfed3ce08fcb331d66b37edc6e15f">message_content()</a>, <a class="el" href="mitem_8php.html#a7a31b702ecad18eeb6a38b243ff0037e">mitem_content()</a>, <a class="el" href="mitem_8php.html#a9627cd857cafdf04e4fc0ae48c8e8518">mitem_init()</a>, <a class="el" href="mitem_8php.html#a6ee694cca4b551a20d7c7a94b5243ec1">mitem_post()</a>, <a class="el" href="mood_8php.html#a7ae136dd7476865b4828136175db5022">mood_init()</a>, <a class="el" href="msearch_8php.html#ac80d2a6c0a92e79eec7efbbccd74d9a8">msearch_post()</a>, <a class="el" href="mytheme_2php_2theme_8php.html#a6ce5df8ece6acc09c1fddaccbeb244e8">mytheme_init()</a>, <a class="el" href="nav_8php.html#a43be0df73b90647ea70947ce004e231e">nav()</a>, <a class="el" href="nav_8php.html#ac3c920ce3ea5b0d9e0678ee37155f06a">nav_set_selected()</a>, <a class="el" href="mod_2network_8php.html#a43f2f29b90c5e29072c561934bc8f8b4">network_content()</a>, <a class="el" href="mod_2network_8php.html#a180fce90ad11d7e0e45be094da7149ec">network_init()</a>, <a class="el" href="include_2follow_8php.html#ae387d4ae097c23d69f3247e7f08140c7">new_contact()</a>, <a class="el" href="boot_8php.html#a9255af5ae9c887520091ea04763c1a88">notice()</a>, <a class="el" href="enotify_8php.html#a3e9a9355b243777c488d2a9883908dfc">notification()</a>, <a class="el" href="notifications_8php.html#aadd0b5525bd8c283a5d8a37982bbfe62">notifications_content()</a>, <a class="el" href="notifications_8php.html#a5baffec7b2e625c9f9cefbc097550d33">notifications_post()</a>, <a class="el" href="notifier_8php.html#a568c502f626cff95e344c0748938b85d">notifier_run()</a>, <a class="el" href="mod_2notify_8php.html#acdf3851688ebd6d6a575eb84ef9febe3">notify_content()</a>, <a class="el" href="mod_2notify_8php.html#a94f9a6a9d4b5fd704baafff0c34f41ae">notify_init()</a>, <a class="el" href="include_2oembed_8php.html#a98549b9af8140eda3eceaeedcaabc2c2">oembed_fetch_url()</a>, <a class="el" href="include_2oembed_8php.html#a26bb4c1e330d2f94ea7b6ce2fe970cf3">oembed_format_object()</a>, <a class="el" href="include_2oembed_8php.html#a9e57f3e36a0a0a47e6db79544b701d9a">oembed_iframe()</a>, <a class="el" href="oexchange_8php.html#a2d8b785cd7d041a4e6274f5af370cf26">oexchange_content()</a>, <a class="el" href="oexchange_8php.html#ac8e2e469ddc3db984b0c1b44558aca59">oexchange_init()</a>, <a class="el" href="onedirsync_8php.html#a411aedd47c57476099647961e6a86691">onedirsync_run()</a>, <a class="el" href="onepoll_8php.html#a72753b2fdec79b37c7f432035c91fb6d">onepoll_run()</a>, <a class="el" href="openid_8php.html#a9a13827dbcf61ae4e45f0b6b33a88f43">openid_content()</a>, <a class="el" href="opensearch_8php.html#ad13034877a496565ac7d99e9fc6f55e9">opensearch_init()</a>, <a class="el" href="page_8php.html#a91a5f649f68406149108bded1dc90b22">page_content()</a>, <a class="el" href="page_8php.html#a4d89800c0366a239191b1692c09635cf">page_init()</a>, <a class="el" href="text_8php.html#afe9f178d264d44a94dc1292aaf0fd585">paginate()</a>, <a class="el" href="photo_8php.html#a582779d24882b0d31ee909a91d70a448">photo_init()</a>, <a class="el" href="mod_2photos_8php.html#aa87382611a66ec5effdb2d78f13f5812">photos_content()</a>, <a class="el" href="mod_2photos_8php.html#ab950295cd77626f5fe65331a87693014">photos_init()</a>, <a class="el" href="mod_2photos_8php.html#a062bed4d04d14fee8a53f4c9be673080">photos_post()</a>, <a class="el" href="ping_8php.html#a77217b1b190b4c5d8770867b45f0c0a1">ping_init()</a>, <a class="el" href="poco_8php.html#a53def16f75e3d41f1d2bb7cfa4905498">poco_init()</a>, <a class="el" href="socgraph_8php.html#a5ef8bef37161df53718a21e93d02fbd6">poco_load()</a>, <a class="el" href="poke_8php.html#a9725aab97b3983e6a98bd81c4efe7d3b">poke_init()</a>, <a class="el" href="poller_8php.html#a5f12df3a4738124b6c039971e87e76da">poller_run()</a>, <a class="el" href="language_8php.html#a78bd204955ec4cc3a9ac651285a1689d">pop_lang()</a>, <a class="el" href="post_8php.html#af4b48181ce773ef0cdfc972441445c34">post_init()</a>, <a class="el" href="text_8php.html#ac19d2b33a58372a357a43d51eed19162">preg_heart()</a>, <a class="el" href="text_8php.html#ae4df74296fbe55051ed3c035e55205e5">prepare_body()</a>, <a class="el" href="mod_2probe_8php.html#a1f1db3fa6038e451e737964c94bf5e99">probe_content()</a>, <a class="el" href="boot_8php.html#ab346a2ece14993861f3e4206befa94f0">proc_run()</a>, <a class="el" href="activities_8php.html#a80134e807719b3c54aba971958d2e132">profile_activity()</a>, <a class="el" href="profile_8php.html#a3775cf6eef6587e5143133356a7b76c0">profile_content()</a>, <a class="el" href="identity_8php.html#ad4a2c8caca8f6ae93633ebeca0ed6620">profile_create_sidebar()</a>, <a class="el" href="profile_8php.html#ab5d0246be0552e2182a585c1206d22a5">profile_init()</a>, <a class="el" href="identity_8php.html#a4751b522ea913d0e7ed43e03d22e9e68">profile_load()</a>, <a class="el" href="profile__photo_8php.html#a140631c56438fbfacb61a1eb43067d02">profile_photo_init()</a>, <a class="el" href="profile__photo_8php.html#a4b80234074bd603221aa5364f330e479">profile_photo_post()</a>, <a class="el" href="identity_8php.html#a432259b2cf5b6f59be53e71db9f2c7dc">profile_sidebar()</a>, <a class="el" href="profiles_8php.html#a46975783b8b8d70402d51487eb1f0b00">profiles_content()</a>, <a class="el" href="profiles_8php.html#a36f71405ad536228f8bb84a551b23f7e">profiles_init()</a>, <a class="el" href="profiles_8php.html#ab0362c81b1d3b0b12a772b9fac446e04">profiles_post()</a>, <a class="el" href="profperm_8php.html#a17fb64ec05edee1dc94d95438807d6c6">profperm_init()</a>, <a class="el" href="language_8php.html#ac9142ef1d01a235c760deb0f16643f5a">push_lang()</a>, <a class="el" href="queue_8php.html#af8c93de86d866c3200174c8450a0f341">queue_run()</a>, <a class="el" href="randprof_8php.html#abf5dba3c608b9304cbf68327cd31b090">randprof_init()</a>, <a class="el" href="rbmark_8php.html#a43fec4960b50926251574762cc491f76">rbmark_content()</a>, <a class="el" href="rbmark_8php.html#ac5a66aa8599fa5dc702bae396d8d1f8c">rbmark_post()</a>, <a class="el" href="include_2api_8php.html#aafa82b65a9f879a1a1197cfe8aaf3898">red_item_new()</a>, <a class="el" href="view_2theme_2redbasic_2php_2config_8php.html#a8574a41fa9735ee391ba57ab24b93793">redbasic_form()</a>, <a class="el" href="register_8php.html#a0e91f57f111407ea8d3223a05022bb2a">register_content()</a>, <a class="el" href="regmod_8php.html#a7953df4e32e63946565e90cdd5d50409">regmod_content()</a>, <a class="el" href="regver_8php.html#ad2c5f644fd1b099abd7c715b7df6f50f">regver_content()</a>, <a class="el" href="datetime_8php.html#a8ae8dc95ace7ac27fa5a1ecf42b78c82">relative_date()</a>, <a class="el" href="removeaccount_8php.html#a516e7380b9e5796054aa8245f3509695">removeaccount_content()</a>, <a class="el" href="removeaccount_8php.html#a26a3325292e932c59793430ab737126a">removeaccount_post()</a>, <a class="el" href="removeme_8php.html#a065a589caa2aa84c60f7073a28f0ad9c">removeme_content()</a>, <a class="el" href="removeme_8php.html#a7be08738beca44bb98a79e01cdb2ee88">removeme_post()</a>, <a class="el" href="text_8php.html#a9c6ce4e12a4ac883c5e3f36fed6e1e09">replace_macros()</a>, <a class="el" href="rmagic_8php.html#a869de069d081b3c4e98b957d06bbf08f">rmagic_post()</a>, <a class="el" href="rpost_8php.html#a8190354d789000806d9879aea276728f">rpost_content()</a>, <a class="el" href="include_2network_8php.html#ae8d9c41a11000fb8667039fc71b4f73f">scale_external_images()</a>, <a class="el" href="text_8php.html#a876e94892867019935b348b573299352">search()</a>, <a class="el" href="search__ac_8php.html#a14f90c83a3f2be095e9e2992a8d66138">search_ac_init()</a>, <a class="el" href="search_8php.html#ab2568591359edde5b483a6cd9a24b2cc">search_content()</a>, <a class="el" href="search_8php.html#acf19fd30f07f495781ca0d7a0a08b435">search_init()</a>, <a class="el" href="text_8php.html#aae91e4d2a2c6f7a9daccd2c186ae3447">searchbox()</a>, <a class="el" href="include_2message_8php.html#a751ffd6635022b2190f56154ee745752">send_message()</a>, <a class="el" href="plugin_8php.html#a030cec6793b909c439c0336ba39b1571">service_class_allows()</a>, <a class="el" href="plugin_8php.html#a905b54e10704b283ac64680a8abc0971">service_class_fetch()</a>, <a class="el" href="include_2config_8php.html#ad6da879e4fb5b37d1e161d4e9be5c32a">set_config()</a>, <a class="el" href="classConversation.html#a66f121ca4026246f86a732e5faa0682c">Conversation\set_mode()</a>, <a class="el" href="include_2config_8php.html#a61591371cb18764138655d67dc817ab2">set_pconfig()</a>, <a class="el" href="include_2config_8php.html#afe117b70f1bba2f6348d9300b601f86e">set_xconfig()</a>, <a class="el" href="settings_8php.html#a3a4cde287482fced008583f54ba2a722">settings_init()</a>, <a class="el" href="settings_8php.html#aa7ee94d88ac088edb04ccf3a26de3586">settings_post()</a>, <a class="el" href="setup_8php.html#a88247384a96e14516f474d7af6a465c1">setup_content()</a>, <a class="el" href="setup_8php.html#a13cf286774149a0a7bd8adb8179cec75">setup_post()</a>, <a class="el" href="share_8php.html#afeb26046bdd02567ecd29ab5f188b249">share_init()</a>, <a class="el" href="siteinfo_8php.html#a70c09bfb6dd1c86a125a35f62ed53656">siteinfo_content()</a>, <a class="el" href="siteinfo_8php.html#a3efbd0bd6564af19ec0a9ce0294e59d0">siteinfo_init()</a>, <a class="el" href="text_8php.html#a3d225b253bb9e0f2498c11647d927b0b">smilies()</a>, <a class="el" href="sources_8php.html#ac73298ff162ce7b2de8dcaf3d3305b1e">sources_post()</a>, <a class="el" href="subthread_8php.html#a50368f3d825b77996030528e7fbfa3d3">subthread_content()</a>, <a class="el" href="suggest_8php.html#a58748a8235d4523f8333847f3e42dd91">suggest_content()</a>, <a class="el" href="language_8php.html#ac6ae482ee54fa2764d5c2e77305aeb96">t()</a>, <a class="el" href="items_8php.html#ab1bce4261bcf75ad62753b498a144d17">tag_deliver()</a>, <a class="el" href="text_8php.html#ac2ff88e800f74b22e9cc091c10809c54">tag_sort_length()</a>, <a class="el" href="tagger_8php.html#a0e4a3eb177d1684553c547503d67161c">tagger_content()</a>, <a class="el" href="tagrm_8php.html#adfd4ea5b4d7fc6d9c9e042af5cd7d49a">tagrm_content()</a>, <a class="el" href="tagrm_8php.html#a1702f40aa53a2fa93deade1f609abe78">tagrm_post()</a>, <a class="el" href="taxonomy_8php.html#aaeded36bcc983b35d9205fe5b6c18c43">tags_sort()</a>, <a class="el" href="items_8php.html#a88c6cf7649ac836fbbed82a7a0315110">tgroup_check()</a>, <a class="el" href="view_2theme_2blogga_2php_2config_8php.html#a09cd81013505f83aea0771243a1e4e53">theme_admin()</a>, <a class="el" href="view_2theme_2apw_2php_2config_8php.html#aa7d5739b72efef9822535b2b32d5364d">theme_content()</a>, <a class="el" href="plugin_8php.html#a65fedcffbe03562ef844cabee37d34e2">theme_include()</a>, <a class="el" href="thing_8php.html#a24a35f1e64029a67fdbea94a776ae04b">thing_content()</a>, <a class="el" href="thing_8php.html#a8be23b1d475ec3d9291999221c674c80">thing_init()</a>, <a class="el" href="datetime_8php.html#aa51b5a7ea4f931b23acbdfcea46e9865">timezone_cmp()</a>, <a class="el" href="toggle__mobile_8php.html#aca53ade8971802b45c31e722b22c6254">toggle_mobile_init()</a>, <a class="el" href="language_8php.html#a686bcafa6b0d5c86d37b38a1db5b6997">tt()</a>, <a class="el" href="uexport_8php.html#a118920137dedebe0581623a2e57e7b0d">uexport_init()</a>, <a class="el" href="update__channel_8php.html#aca52a9da500f0db2f0a8666af5bc06ba">update_channel_content()</a>, <a class="el" href="update__display_8php.html#aa36ac524059e209d5d75a03c16206246">update_display_content()</a>, <a class="el" href="update__network_8php.html#a8abf5b9f65af6a27ee2f9d7207ed1b41">update_network_content()</a>, <a class="el" href="update__search_8php.html#ace4c3a23fa7d6922399e27c297a6ba52">update_search_content()</a>, <a class="el" href="socgraph_8php.html#a790690bb1a1d02483fe31632a160144d">update_suggestions()</a>, <a class="el" href="account_8php.html#ac5c570a2d46446bad4dd2501e9c5a4b1">user_allow()</a>, <a class="el" href="account_8php.html#ad07be417ac7eda939768804106ddea3d">user_approve()</a>, <a class="el" href="Contact_8php.html#a6348a532c9d26cd1c9afbc9aa6aa8960">vcard_from_xchan()</a>, <a class="el" href="viewconnections_8php.html#ab6c4d983e97b3a8a879567ff76507776">viewconnections_content()</a>, <a class="el" href="viewconnections_8php.html#a00163d50b17568f7b0e48b1ca9ab7330">viewconnections_init()</a>, <a class="el" href="viewsrc_8php.html#a6eff3d0c1d7d14b335c4edb785cd60a4">viewsrc_content()</a>, <a class="el" href="vote_8php.html#a6aa67489bf458ca5e3206e46dac68596">vote_content()</a>, <a class="el" href="vote_8php.html#ae0c6610f40afbbc1f4fe6494c51fbab2">vote_init()</a>, <a class="el" href="vote_8php.html#a57a9516ee1b923b224e66dcc47377fb2">vote_post()</a>, <a class="el" href="wall__upload_8php.html#a7cbe204244cf9e0380ee932263a74d8f">wall_upload_post()</a>, <a class="el" href="webpages_8php.html#af3b7397d4abc153e3d2147740ee1a41d">webpages_content()</a>, <a class="el" href="wfinger_8php.html#ae21e50c8d0a5f3c9be9f43a4e519acd3">wfinger_init()</a>, <a class="el" href="setup_8php.html#aea1ebdda58ec938f4e7b31aa5c5f6b58">what_next()</a>, <a class="el" href="widgets_8php.html#a7b1e357b5a2027718470b77ec921fc65">widget_archive()</a>, <a class="el" href="widgets_8php.html#af37fdad3b2e861d860a4a8c4d8a76c0b">widget_categories()</a>, <a class="el" href="widgets_8php.html#a47c72aac42058ea086c9ef8651c259da">widget_chatroom_list()</a>, <a class="el" href="widgets_8php.html#a145ff35319cfa47a9cc07f9425bd674b">widget_design_tools()</a>, <a class="el" href="widgets_8php.html#a5ab3b64496e02cab56429978ad55f1c0">widget_filer()</a>, <a class="el" href="widgets_8php.html#ad1bf7aa69e8d100d95faba17c7bc91cd">widget_follow()</a>, <a class="el" href="widgets_8php.html#a70442dfa079312d9d5e5ee01be51a165">widget_fullprofile()</a>, <a class="el" href="widgets_8php.html#a313a8d10ab81c71357c12e67e4d7efd5">widget_item()</a>, <a class="el" href="widgets_8php.html#afa2e55a78f95667a6da082efac7fec74">widget_mailmenu()</a>, <a class="el" href="widgets_8php.html#a702e2fc0adc9b615999eca18b7311b5e">widget_photo_albums()</a>, <a class="el" href="widgets_8php.html#abd2e508a2a0b911c4a838e3cb7599923">widget_profile()</a>, <a class="el" href="widgets_8php.html#a94203eb9bcd63cbdecbbcb15163598d8">widget_savedsearch()</a>, <a class="el" href="widgets_8php.html#aaa73bcf1702eaadd9dcd253502f55e01">widget_settings_menu()</a>, <a class="el" href="widgets_8php.html#a6dbc227aac750774284ee39c45f0a200">widget_tagcloud()</a>, <a class="el" href="widgets_8php.html#ae4ced69d83dbdd9e6b51660d9eba8653">widget_tagcloud_wall()</a>, <a class="el" href="xrd_8php.html#aee3cf087968e4a0ff3a87de16eb23270">xrd_init()</a>, <a class="el" href="include_2network_8php.html#aafd06c0a75402aefb06cfb9f9740fa37">z_fetch_url()</a>, <a class="el" href="boot_8php.html#aba208673515cbb8a55e5fa4a1da99fda">z_path()</a>, <a class="el" href="boot_8php.html#add517a0958ac684792c62142a3877f81">z_root()</a>, <a class="el" href="zfinger_8php.html#a8139b83a22ef98869adc10aa224027a0">zfinger_init()</a>, <a class="el" href="identity_8php.html#a680fbafc2db023c5b1309e0180e81315">zid_init()</a>, <a class="el" href="zotfeed_8php.html#a24dfc23d366e7f840cf2847d0c1c8eac">zotfeed_init()</a>, and <a class="el" href="zping_8php.html#a4d3a6b0b8b04ed6469015823e615ee75">zping_content()</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a67e94494731d99ed23b123e95175bc10"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">$args = array()</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p>Referenced by <a class="el" href="classTemplate.html#a4b933954086d9e01a1804b0b1c6ee93e">Template\_replcb_debug()</a>, <a class="el" href="classTemplate.html#abf71098c80fd1f218a59452b3408309e">Template\_replcb_for()</a>, <a class="el" href="classTemplate.html#ae0836e7d5bd5afceb04f50fd635f1228">Template\_replcb_if()</a>, <a class="el" href="classTemplate.html#a86e8fd27955ef10cadfd86f3fca70677">Template\_replcb_inc()</a>, <a class="el" href="conversation_8php.html#aacbb12d372d5e9c3ab0735b4aea48fb3">item_photo_menu()</a>, <a class="el" href="include_2photos_8php.html#a6c40ef58aefef705a5adc84a40e97109">photo_upload()</a>, <a class="el" href="boot_8php.html#ab346a2ece14993861f3e4206befa94f0">proc_run()</a>, <a class="el" href="dba__driver_8php.html#a2c09a731d3b4fef41fed0e83db01be1f">q()</a>, <a class="el" href="post__to__red_8php.html#a085c250d4ceff5e4f10052f3d2039823">red_comment()</a>, <a class="el" href="wall__upload_8php.html#a7cbe204244cf9e0380ee932263a74d8f">wall_upload_post()</a>, <a class="el" href="widgets_8php.html#aa189a07241246d97efbee29f1c6a6f7f">widget_collections()</a>, and <a class="el" href="widgets_8php.html#a6dbc227aac750774284ee39c45f0a200">widget_tagcloud()</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="acaefa2c3b286896f12eb55ae56e154af"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">$args['data'] = base64_decode($j['data'])</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+</div>
+</div>
+<a class="anchor" id="ad3310ef5d714f2baae2d882a1e22cf05"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">$args['filename'] = $j['filename']</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+</div>
+</div>
+<a class="anchor" id="adbc68ba8d9b3e0fac2d4c9fb683ef9f6"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">$args['resource_id'] = $j['resource-id']</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+</div>
+</div>
+<a class="anchor" id="ad4237a752a460152a5445abcb50238cf"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">$args['scale'] = $j['scale']</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+</div>
+</div>
+<a class="anchor" id="a44a64913242d4235e332cc69885c1460"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">$args['album'] = $j['album']</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+</div>
+</div>
+<a class="anchor" id="a6bb04aa9e43d97273fc84b6e308999c5"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">$args['not_visible'] = 1</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+</div>
+</div>
+<a class="anchor" id="ab93f92df528f98af0f4511720032b03c"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">$args['created'] = $j['created']</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+</div>
+</div>
+<a class="anchor" id="a1fba6794d8decbc7b957710af3179c10"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">$args['edited'] = $j['edited']</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+</div>
+</div>
+<a class="anchor" id="a88f7360b97eecb65e5e13708a093d172"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">$args['title'] = $j['title']</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+</div>
+</div>
+<a class="anchor" id="ad5fe4c1396829f3ce98eec037db698b2"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">$args['description'] = $j['desc']</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+</div>
+</div>
+<a class="anchor" id="ab66e3756cdc86eaa61d42e675092c649"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">$args['type'] = $j['type']</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+</div>
+</div>
+<a class="anchor" id="ab73d7f4f2dae233dd561e7fdaab3a77b"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">$c</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+<b>Initial value:</b><div class="fragment"><div class="line">= <a class="code" href="dba__driver_8php.html#a2c09a731d3b4fef41fed0e83db01be1f">q</a>(<span class="stringliteral">&quot;select * from channel left join xchan on channel_hash = xchan_hash where channel_address = &#39;%s&#39; limit 1&quot;</span>,</div>
+<div class="line"> <a class="code" href="dba__driver_8php.html#ab222aa1dbf9ea93b320f82028739127e">dbesc</a>(<a class="code" href="frphotohelper_8php.html#a1ce9aa56ce28b42f5db69d00d4c78972">$channel_address</a>)</div>
+<div class="line"> )</div>
+</div><!-- fragment -->
+<p>Referenced by <a class="el" href="classConversation.html#af84ea6ccd72214c9bb4c504461cc8b09">Conversation\__construct()</a>, <a class="el" href="include_2api_8php.html#afb99daa6b731bf497b81f2128084852c">api_user()</a>, <a class="el" href="include_2attach_8php.html#a70bd666e080c2af5a91f5d14c297b8cd">attach_delete()</a>, <a class="el" href="mod_2attach_8php.html#aa88eb5ad87aa1036a30e70339cc6c1b1">attach_init()</a>, <a class="el" href="account_8php.html#a141fe579c351c78209d425473f978eb5">create_account()</a>, <a class="el" href="classRedDirectory.html#a2d12d99d38a6a75fc9a830b2f7fc0bf0">RedDirectory\createFile()</a>, <a class="el" href="diaspora_8php.html#adef30b6fac948baedcc7194d5d155b5f">diaspora_conversation()</a>, <a class="el" href="diaspora_8php.html#a7cff2f8f11044c1b3a360f20e1bbee46">diaspora_message()</a>, <a class="el" href="editblock_8php.html#abbe8f55de06967bc8d79d620509a49e6">editblock_content()</a>, <a class="el" href="event_8php.html#ac9f206819186b65952ac1869f0da8c6e">event_addtocal()</a>, <a class="el" href="boot_8php.html#aca5e42678e178c6b9034610d66666fd7">fix_system_urls()</a>, <a class="el" href="permissions_8php.html#aeca9b280f3dc3358c89976d81d690008">get_all_perms()</a>, <a class="el" href="classRedDirectory.html#a2f7a574f2115f099d6dd103d5b252375">RedDirectory\getQuotaInfo()</a>, <a class="el" href="include_2group_8php.html#afb802ae2ce73aae4bc36d157f7b6a92f">groups_containing()</a>, <a class="el" href="items_8php.html#a756738301f2ed96be50232500677d58a">items_fetch()</a>, <a class="el" href="include_2config_8php.html#ac543813a980b3841cc5a277fcd4a24a6">load_pconfig()</a>, <a class="el" href="include_2config_8php.html#a55bbed9a014c9109c767486834f3ca33">load_xconfig()</a>, <a class="el" href="manage_8php.html#a2bca247b5296827638959138367db4f5">manage_content()</a>, <a class="el" href="include_2group_8php.html#a048f6892bfd28852de1b76470df411de">member_of()</a>, <a class="el" href="mod_2network_8php.html#a43f2f29b90c5e29072c561934bc8f8b4">network_content()</a>, <a class="el" href="permissions_8php.html#a67ada9ed51e77885b6b0f6a28cee1835">perm_is_allowed()</a>, <a class="el" href="crypto_8php.html#a4d15d19b446dbf47804675df7c85e2a9">pkcs1to8()</a>, <a class="el" href="poco_8php.html#a53def16f75e3d41f1d2bb7cfa4905498">poco_init()</a>, <a class="el" href="poller_8php.html#a5f12df3a4738124b6c039971e87e76da">poller_run()</a>, <a class="el" href="post_8php.html#af4b48181ce773ef0cdfc972441445c34">post_init()</a>, <a class="el" href="post_8php.html#af59e6a1dc22d19d9257b01cd7ccedb75">post_post()</a>, <a class="el" href="include_2message_8php.html#a5f8de9847e203329e317ac38dc646898">private_messages_fetch_conversation()</a>, <a class="el" href="include_2message_8php.html#a254a756031e4d5e94f85e2939bdb5091">private_messages_fetch_message()</a>, <a class="el" href="include_2message_8php.html#a652973ce47a262f2d238c2fd6233d97e">private_messages_list()</a>, <a class="el" href="classRedFile.html#a41a49a583eb276b75626fcf97f4a699c">RedFile\put()</a>, <a class="el" href="include_2network_8php.html#ae8d9c41a11000fb8667039fc71b4f73f">scale_external_images()</a>, <a class="el" href="setup_8php.html#a88247384a96e14516f474d7af6a465c1">setup_content()</a>, and <a class="el" href="zot_8php.html#a5bcdfef419b16075a0eca990956223dc">zot_register_hub()</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a696b903bbc5c02914bdd402e91826eca"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">$ch = curl_init($fr_server . '/api/friendica/photo?f=&amp;photo_id=' . $photo_id)</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p>Referenced by <a class="el" href="frphotos_8php.html#a4a33fadb181497eff301ee5132ec61d1">frphotos_init()</a>, <a class="el" href="like_8php.html#a9d7dd268f21c21e9d29dd2aca2dd9538">like_content()</a>, <a class="el" href="include_2follow_8php.html#ae387d4ae097c23d69f3247e7f08140c7">new_contact()</a>, <a class="el" href="activities_8php.html#a80134e807719b3c54aba971958d2e132">profile_activity()</a>, <a class="el" href="include_2network_8php.html#aafd06c0a75402aefb06cfb9f9740fa37">z_fetch_url()</a>, and <a class="el" href="include_2network_8php.html#a9129fd55e7fc175b4ea9a195cccc16bc">z_post_url()</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="ac162139c764f53cc07f42b09432549ba"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="theme_2mytheme_2php_2default_8php.html#a3987f5547ceb7e36a210a66a06241a5a">if</a> (!$c) $channel = $c[0]</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p>Referenced by <a class="el" href="admin_8php.html#ad6f87a764fd35f522c7b4c351d7878ec">admin_page_channels()</a>, <a class="el" href="include_2api_8php.html#a176c448d79c211ad41c2bbe3124658f5">api_call()</a>, <a class="el" href="include_2api_8php.html#afb99daa6b731bf497b81f2128084852c">api_user()</a>, <a class="el" href="appman_8php.html#af48805ac2f6f123f2681a8ae1c6f123f">appman_content()</a>, <a class="el" href="include_2attach_8php.html#ab6830b3ab74a5d284876141ac80f6cbc">attach_mkdir()</a>, <a class="el" href="include_2attach_8php.html#a84a8a64c4805e1525b42d4add464833f">attach_store()</a>, <a class="el" href="bbcode_8php.html#a009f61aaf78771737ed0765c8463911b">bbcode()</a>, <a class="el" href="blocks_8php.html#a2531a8fd51db3cecb2eb20c002c66e12">blocks_content()</a>, <a class="el" href="include_2bookmarks_8php.html#aef1cb2968c41c759f2d106e1088ca323">bookmark_add()</a>, <a class="el" href="mod_2bookmarks_8php.html#a774364b1c8404529581083631703527a">bookmarks_content()</a>, <a class="el" href="zot_8php.html#aa97b33b619dd7132a9274f852af6ceb5">build_sync_packet()</a>, <a class="el" href="channel_8php.html#a9c6a6179e0e626398ebecc6151905ef1">channel_content()</a>, <a class="el" href="channel_8php.html#ac7c8c7845741baadf87fae6bc279f3dc">channel_init()</a>, <a class="el" href="Contact_8php.html#a4e8af0f0525161da74583c04b8b03097">channel_remove()</a>, <a class="el" href="mod_2chat_8php.html#a8b0b8bee6fef6477e8c64c5e951b1b4f">chat_content()</a>, <a class="el" href="mod_2chat_8php.html#aa9ae4782e9baef0b7314ab9527c2707e">chat_init()</a>, <a class="el" href="mod_2chat_8php.html#a999d594745597c656c9760253ae297ad">chat_post()</a>, <a class="el" href="include_2chat_8php.html#acdc80dba4eb796c7472b21129b435422">chatroom_create()</a>, <a class="el" href="include_2chat_8php.html#a2ba3af6884ecdce95de69262fe599639">chatroom_destroy()</a>, <a class="el" href="cloud_8php.html#a1b79a6fe0454bc76673ad9aef55bf02d">cloud_init()</a>, <a class="el" href="connections_8php.html#a1f23623f802af7bd35e95b0e94e5d558">connections_init()</a>, <a class="el" href="connections_8php.html#a1224058db8e3fb56463eb312f98e561d">connections_post()</a>, <a class="el" href="connedit_8php.html#a795acb3d9d841f55c255d7611681ab67">connedit_content()</a>, <a class="el" href="connedit_8php.html#a4da871e075597a09a8b374b9171dd92e">connedit_init()</a>, <a class="el" href="connedit_8php.html#a234c48426b652bf4d37053f2af329ac5">connedit_post()</a>, <a class="el" href="conversation_8php.html#affea1afb3f32ca41e966c8ddb4204d81">conversation()</a>, <a class="el" href="text_8php.html#a87a3cefc603302c78982f1d8e1245265">design_tools()</a>, <a class="el" href="include_2directory_8php.html#aa75d3b0697ca1456aaabdb37a74aa0f0">directory_run()</a>, <a class="el" href="display_8php.html#a37137c98d47bf3306f4c2bb9f5b60de0">display_content()</a>, <a class="el" href="editblock_8php.html#abbe8f55de06967bc8d79d620509a49e6">editblock_content()</a>, <a class="el" href="editlayout_8php.html#aa877e4157a26b099de904164181dd386">editlayout_content()</a>, <a class="el" href="editpost_8php.html#a34011690864d122680c802e9e748ccfb">editpost_content()</a>, <a class="el" href="editwebpage_8php.html#a375e945255fad79a71036528f7480650">editwebpage_content()</a>, <a class="el" href="event_8php.html#ac9f206819186b65952ac1869f0da8c6e">event_addtocal()</a>, <a class="el" href="events_8php.html#a1d293fb217ae6bc9e3858c4b32e363ec">events_content()</a>, <a class="el" href="events_8php.html#ab3e8a8f901175f8e40a8089eea45c075">events_post()</a>, <a class="el" href="feed_8php.html#af86137700b56f33d1d5f25c8dec22c04">feed_init()</a>, <a class="el" href="filestorage_8php.html#a61bb1be78472555df4ce619f51014040">filestorage_content()</a>, <a class="el" href="filestorage_8php.html#ad3b64e3ece9831f9d3a9f00c0ae983cd">filestorage_post()</a>, <a class="el" href="item_8php.html#a3daae7944f737bd30412a0d042207c0f">fix_attached_file_permissions()</a>, <a class="el" href="frphotos_8php.html#a4a33fadb181497eff301ee5132ec61d1">frphotos_init()</a>, <a class="el" href="items_8php.html#a04a35b610acfe54434df08adec39c0c7">get_feed_for()</a>, <a class="el" href="items_8php.html#a079e099e15d88d47aeb6ca6d60da7107">get_public_feed()</a>, <a class="el" href="item_8php.html#aa22feef4de326e1d7078dedd892e615c">handle_tag()</a>, <a class="el" href="hcard_8php.html#ac34f26b0e6a37eef44fa49bea135136d">hcard_init()</a>, <a class="el" href="home_8php.html#ac4642c38b6f23a8d065dd4a75c620bde">home_init()</a>, <a class="el" href="import_8php.html#af17fef0410518f7eac205d0ea416eaa2">import_post()</a>, <a class="el" href="importelm_8php.html#a1a4f71e6d76ace6add5e9659845f5e5f">importelm_post()</a>, <a class="el" href="invite_8php.html#a244385b28cfd021d308715f01158bfd9">invite_content()</a>, <a class="el" href="identity_8php.html#a4e996e44b50330098a04b467367a559f">is_public_profile()</a>, <a class="el" href="conversation_8php.html#aacbb12d372d5e9c3ab0735b4aea48fb3">item_photo_menu()</a>, <a class="el" href="item_8php.html#a693cd09805755ab85bbb5ecae69a48c3">item_post()</a>, <a class="el" href="items_8php.html#a2541e6861a56d145c9281877cc501615">item_store()</a>, <a class="el" href="items_8php.html#acf0bf7c9d21ac84f32effb754f7ad484">item_store_update()</a>, <a class="el" href="items_8php.html#a756738301f2ed96be50232500677d58a">items_fetch()</a>, <a class="el" href="layouts_8php.html#a6e0193759ad9eef76d3df2db24237b50">layouts_content()</a>, <a class="el" href="magic_8php.html#acea2cc792849ca2d71d4b689f66518bf">magic_init()</a>, <a class="el" href="mail_8php.html#a3c7c485fc69f92371e8b20936040eca1">mail_content()</a>, <a class="el" href="mail_8php.html#acfc2cc0bf4e0b178207758384977f25a">mail_post()</a>, <a class="el" href="include_2menu_8php.html#add35fae5e9695031b3d46e30ac409eb8">menu_add_item()</a>, <a class="el" href="include_2menu_8php.html#acb66f80ca895a6ccd562b3d9ae7b41aa">menu_edit_item()</a>, <a class="el" href="mod_2message_8php.html#ac72dfed3ce08fcb331d66b37edc6e15f">message_content()</a>, <a class="el" href="mitem_8php.html#a7a31b702ecad18eeb6a38b243ff0037e">mitem_content()</a>, <a class="el" href="mitem_8php.html#a6ee694cca4b551a20d7c7a94b5243ec1">mitem_post()</a>, <a class="el" href="mood_8php.html#a7ae136dd7476865b4828136175db5022">mood_init()</a>, <a class="el" href="nav_8php.html#a43be0df73b90647ea70947ce004e231e">nav()</a>, <a class="el" href="mod_2network_8php.html#a43f2f29b90c5e29072c561934bc8f8b4">network_content()</a>, <a class="el" href="mod_2network_8php.html#a180fce90ad11d7e0e45be094da7149ec">network_init()</a>, <a class="el" href="include_2follow_8php.html#ae387d4ae097c23d69f3247e7f08140c7">new_contact()</a>, <a class="el" href="notifier_8php.html#a568c502f626cff95e344c0748938b85d">notifier_run()</a>, <a class="el" href="include_2apps_8php.html#a32fe4ed9666228fd4b67dc487cc57a83">parse_app_description()</a>, <a class="el" href="include_2photos_8php.html#a6c40ef58aefef705a5adc84a40e97109">photo_upload()</a>, <a class="el" href="include_2photos_8php.html#aedccaf18282b26899d9549c29bd9d1b9">photos_albums_list()</a>, <a class="el" href="mod_2photos_8php.html#aa87382611a66ec5effdb2d78f13f5812">photos_content()</a>, <a class="el" href="include_2photos_8php.html#ad648c0c5544fe9263409b6f6e57c6274">photos_create_item()</a>, <a class="el" href="include_2photos_8php.html#aa27b9e435dcc34e1009f56dc02c7ca51">photos_list_photos()</a>, <a class="el" href="ping_8php.html#a77217b1b190b4c5d8770867b45f0c0a1">ping_init()</a>, <a class="el" href="poke_8php.html#a9725aab97b3983e6a98bd81c4efe7d3b">poke_init()</a>, <a class="el" href="items_8php.html#a410f9c743877c125ca06312373346903">post_activity_item()</a>, <a class="el" href="post__to__red_8php.html#a5cc2a89a6d33cdb8e2ca557a69bef42d">post_to_red_delete_comment()</a>, <a class="el" href="post__to__red_8php.html#a4674bb5ce2baa32c559607460c39a2c5">post_to_red_delete_post()</a>, <a class="el" href="post__to__red_8php.html#a75db5d87226a0287a0ac0fa315f2bcfd">post_to_red_displayAdminContent()</a>, <a class="el" href="post__to__red_8php.html#af5fd50e2c42ede85f8a9e8d9ee3cf540">post_to_red_post()</a>, <a class="el" href="mod_2probe_8php.html#a1f1db3fa6038e451e737964c94bf5e99">probe_content()</a>, <a class="el" href="zot_8php.html#ac301c67864917c35922257950ae0f95c">process_channel_sync_delivery()</a>, <a class="el" href="zot_8php.html#a4d9e6ca295e443b740d9960c304b3474">process_delivery()</a>, <a class="el" href="zot_8php.html#aa6ae96db8cbbdbb10e6876d206bbf7cc">process_mail_delivery()</a>, <a class="el" href="profile_8php.html#ab5d0246be0552e2182a585c1206d22a5">profile_init()</a>, <a class="el" href="profile__photo_8php.html#a140631c56438fbfacb61a1eb43067d02">profile_photo_init()</a>, <a class="el" href="profile__photo_8php.html#a4b80234074bd603221aa5364f330e479">profile_photo_post()</a>, <a class="el" href="profiles_8php.html#a46975783b8b8d70402d51487eb1f0b00">profiles_content()</a>, <a class="el" href="profiles_8php.html#ab0362c81b1d3b0b12a772b9fac446e04">profiles_post()</a>, <a class="el" href="profperm_8php.html#a17fb64ec05edee1dc94d95438807d6c6">profperm_init()</a>, <a class="el" href="rbmark_8php.html#a43fec4960b50926251574762cc491f76">rbmark_content()</a>, <a class="el" href="rbmark_8php.html#ac5a66aa8599fa5dc702bae396d8d1f8c">rbmark_post()</a>, <a class="el" href="rpost_8php.html#a8190354d789000806d9879aea276728f">rpost_content()</a>, <a class="el" href="include_2message_8php.html#a751ffd6635022b2190f56154ee745752">send_message()</a>, <a class="el" href="settings_8php.html#aa7ee94d88ac088edb04ccf3a26de3586">settings_post()</a>, <a class="el" href="sources_8php.html#ac73298ff162ce7b2de8dcaf3d3305b1e">sources_post()</a>, <a class="el" href="tagger_8php.html#a0e4a3eb177d1684553c547503d67161c">tagger_content()</a>, <a class="el" href="thing_8php.html#a24a35f1e64029a67fdbea94a776ae04b">thing_content()</a>, <a class="el" href="thing_8php.html#a8be23b1d475ec3d9291999221c674c80">thing_init()</a>, <a class="el" href="uexport_8php.html#a118920137dedebe0581623a2e57e7b0d">uexport_init()</a>, <a class="el" href="items_8php.html#a2baa9e05f1e8aa3dd61c85803ae39bd6">update_remote_id()</a>, <a class="el" href="wall__attach_8php.html#a7385e970e93228d082f0fd7254f6e653">wall_attach_post()</a>, <a class="el" href="wall__upload_8php.html#a7cbe204244cf9e0380ee932263a74d8f">wall_upload_post()</a>, <a class="el" href="webpages_8php.html#af3b7397d4abc153e3d2147740ee1a41d">webpages_content()</a>, <a class="el" href="wfinger_8php.html#ae21e50c8d0a5f3c9be9f43a4e519acd3">wfinger_init()</a>, <a class="el" href="widgets_8php.html#aaa73bcf1702eaadd9dcd253502f55e01">widget_settings_menu()</a>, <a class="el" href="zot_8php.html#a3862b3161b2c8557dc1a95020179bd81">zot_build_packet()</a>, <a class="el" href="zot_8php.html#a95528377d7303131958c9f0b7158fdce">zot_finger()</a>, and <a class="el" href="zot_8php.html#a7ac30ff51274bf0b6d3eade37972145c">zot_refresh()</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a1ce9aa56ce28b42f5db69d00d4c78972"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">$channel_address = $<a class="el" href="boot_8php.html#a768f00b7d66be0daf7ef4eea2e862006">argv</a>[2]</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p>Referenced by <a class="el" href="include_2attach_8php.html#a70bd666e080c2af5a91f5d14c297b8cd">attach_delete()</a>, <a class="el" href="block_8php.html#a8a82a470acdfbc7a8e749509caeeea45">block_content()</a>, <a class="el" href="boot_8php.html#aca5e42678e178c6b9034610d66666fd7">fix_system_urls()</a>, <a class="el" href="home_8php.html#aa1cf697851a646755baf537f75334c46">home_content()</a>, <a class="el" href="page_8php.html#a91a5f649f68406149108bded1dc90b22">page_content()</a>, and <a class="el" href="zotfeed_8php.html#a24dfc23d366e7f840cf2847d0c1c8eac">zotfeed_init()</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="aef9f7eafd54f6e36423347bed723c67e"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">$cookies = 'store/[data]/frphoto_cookie_' . $channel_address</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p>Referenced by <a class="el" href="frphotos_8php.html#a4a33fadb181497eff301ee5132ec61d1">frphotos_init()</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a2059b37bbca58d2613c70af2c19eddce"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">$fr_server = urldecode($<a class="el" href="boot_8php.html#a768f00b7d66be0daf7ef4eea2e862006">argv</a>[3])</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p>Referenced by <a class="el" href="frphotos_8php.html#a4a33fadb181497eff301ee5132ec61d1">frphotos_init()</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a6f16db779ef3ccea921b277b5dc245d1"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">$j = json_decode($output,true)</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p>Referenced by <a class="el" href="include_2apps_8php.html#a1cb5c016510e39bcdc1d1c096d51c5c7">app_encode()</a>, <a class="el" href="chanview_8php.html#a4192c6da888c8c1165851acf9ad4cb8b">chanview_content()</a>, <a class="el" href="mod_2directory_8php.html#aac79396570d759da2efac24fcedf5b44">directory_content()</a>, <a class="el" href="dirprofile_8php.html#a3e1d30d3d93863ff5615f2df4ac7f052">dirprofile_init()</a>, <a class="el" href="editpost_8php.html#a34011690864d122680c802e9e748ccfb">editpost_content()</a>, <a class="el" href="events_8php.html#a1d293fb217ae6bc9e3858c4b32e363ec">events_content()</a>, <a class="el" href="externals_8php.html#a4df44079e6f915286088b7a0d44db926">externals_run()</a>, <a class="el" href="frphotos_8php.html#a4a33fadb181497eff301ee5132ec61d1">frphotos_init()</a>, <a class="el" href="text_8php.html#a3972701c5c83624ec4e2d06242f614e7">get_rel_link()</a>, <a class="el" href="gprobe_8php.html#adf72cb0a70b5b9d99fdec1cc60e18ed1">gprobe_run()</a>, <a class="el" href="text_8php.html#ae17b39d5e321debd3ad16dcbbde842b8">jindent()</a>, <a class="el" href="magic_8php.html#acea2cc792849ca2d71d4b689f66518bf">magic_init()</a>, <a class="el" href="mail_8php.html#acfc2cc0bf4e0b178207758384977f25a">mail_post()</a>, <a class="el" href="match_8php.html#a1dd853e959b9e70c1911bb2fb5f5130d">match_content()</a>, <a class="el" href="acl_8php.html#a57dceff370d4a0e7ae673d50fbfda61f">navbar_complete()</a>, <a class="el" href="include_2follow_8php.html#ae387d4ae097c23d69f3247e7f08140c7">new_contact()</a>, <a class="el" href="include_2oembed_8php.html#a98549b9af8140eda3eceaeedcaabc2c2">oembed_fetch_url()</a>, <a class="el" href="include_2oembed_8php.html#a26bb4c1e330d2f94ea7b6ce2fe970cf3">oembed_format_object()</a>, <a class="el" href="mod_2oembed_8php.html#a9145025aaf057fb5d3f9f7011e5e1014">oembed_init()</a>, <a class="el" href="include_2oembed_8php.html#a00c4c80deffd9daf8dc97b58d4c64ed0">oembed_replacecb()</a>, <a class="el" href="onepoll_8php.html#a72753b2fdec79b37c7f432035c91fb6d">onepoll_run()</a>, <a class="el" href="socgraph_8php.html#a5ef8bef37161df53718a21e93d02fbd6">poco_load()</a>, <a class="el" href="post_8php.html#af4b48181ce773ef0cdfc972441445c34">post_init()</a>, <a class="el" href="mod_2probe_8php.html#a1f1db3fa6038e451e737964c94bf5e99">probe_content()</a>, <a class="el" href="zot_8php.html#ac301c67864917c35922257950ae0f95c">process_channel_sync_delivery()</a>, <a class="el" href="profiles_8php.html#ab0362c81b1d3b0b12a772b9fac446e04">profiles_post()</a>, <a class="el" href="pubsites_8php.html#af614e279aab54065345bda6b03eafdf0">pubsites_content()</a>, <a class="el" href="identity_8php.html#a47d6f53216f23a3484061793bef29854">remote_online_status()</a>, <a class="el" href="dir__fns_8php.html#aa666e7df6ca8c332f4081c9b66b4bdf6">sync_directories()</a>, <a class="el" href="dir__fns_8php.html#a44062d4b471d1e83f92f6c184585aa13">update_directory_entry()</a>, <a class="el" href="socgraph_8php.html#a790690bb1a1d02483fe31632a160144d">update_suggestions()</a>, and <a class="el" href="zot_8php.html#a7ac30ff51274bf0b6d3eade37972145c">zot_refresh()</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a73004ce9cd673c1bfafd1dc351134797"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">$output = curl_exec($ch)</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p>Referenced by <a class="el" href="frphotos_8php.html#a4a33fadb181497eff301ee5132ec61d1">frphotos_init()</a>, <a class="el" href="classRedBrowser.html#a1f7daf50bb9bfcde7345b3b1908dbd7e">RedBrowser\generateDirectoryIndex()</a>, <a class="el" href="classRedBrowser.html#a7f6bf0bda07833f4c647557bd172e349">RedBrowser\htmlActionsPanel()</a>, <a class="el" href="msearch_8php.html#ac80d2a6c0a92e79eec7efbbccd74d9a8">msearch_post()</a>, and <a class="el" href="text_8php.html#a9c6ce4e12a4ac883c5e3f36fed6e1e09">replace_macros()</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a2d2299040f635cee8d5aac68230dd630"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">$photo_id = $<a class="el" href="boot_8php.html#a768f00b7d66be0daf7ef4eea2e862006">argv</a>[1]</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+</div>
+</div>
+<a class="anchor" id="a8abe176bc41afd728f32ba8c506cbd98"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">$r</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+<b>Initial value:</b><div class="fragment"><div class="line">= <a class="code" href="dba__driver_8php.html#a2c09a731d3b4fef41fed0e83db01be1f">q</a>(<span class="stringliteral">&quot;select * from photo where resource_id = &#39;%s&#39; and uid = %d limit 1&quot;</span>,</div>
+<div class="line"> <a class="code" href="dba__driver_8php.html#ab222aa1dbf9ea93b320f82028739127e">dbesc</a>(<a class="code" href="frphotohelper_8php.html#a67e94494731d99ed23b123e95175bc10">$args</a>[<span class="stringliteral">&#39;resource_id&#39;</span>]),</div>
+<div class="line"> intval(<a class="code" href="frphotohelper_8php.html#ac162139c764f53cc07f42b09432549ba">$channel</a>[<span class="stringliteral">&#39;channel_id&#39;</span>])</div>
+<div class="line"> )</div>
+</div><!-- fragment -->
+<p>Referenced by <a class="el" href="Contact_8php.html#ae8803c330352cbf1e828eb7490edf47e">abook_connections()</a>, <a class="el" href="Contact_8php.html#ad5b02c2a962ee55b1b7ca6c159d6e4c5">abook_self()</a>, <a class="el" href="Contact_8php.html#a024919623a830e8703ac4f23496dd66c">abook_toggle_flag()</a>, <a class="el" href="Contact_8php.html#a5101d7eca5d6f387e5555f03fe249e33">account_remove()</a>, <a class="el" href="account_8php.html#a43e3042b2723d76915a030bac3c668b6">account_total()</a>, <a class="el" href="auth_8php.html#a07bae0e623e2daa9ee2cd5a8aa294dee">account_verify_password()</a>, <a class="el" href="achievements_8php.html#a35ae04ada0e227d19671f289a32fb30e">achievements_content()</a>, <a class="el" href="acl_8php.html#ac6776dba871806ecdb5d1659bc2eb07a">acl_init()</a>, <a class="el" href="items_8php.html#a81565acf729e629e588d823308448e3c">add_source_route()</a>, <a class="el" href="admin_8php.html#afef415e4011607fbb665610441595015">admin_content()</a>, <a class="el" href="admin_8php.html#aaa6addf2dbc3f3fcf99244a56b41eade">admin_page_dbsync()</a>, <a class="el" href="admin_8php.html#a60ba9783ad14545814919970bc3fb725">admin_page_hubloc_post()</a>, <a class="el" href="admin_8php.html#ac6e95b920b5abd030cc522964987087a">admin_page_summary()</a>, <a class="el" href="socgraph_8php.html#a16ac51c505d72987ed8d6d6aed0e8586">all_friends()</a>, <a class="el" href="zot_8php.html#a703f528ade8382cf374e4119bd6f7859">allowed_public_recips()</a>, <a class="el" href="include_2api_8php.html#a176c448d79c211ad41c2bbe3124658f5">api_call()</a>, <a class="el" href="include_2api_8php.html#a7759ccddc8dff012ad168e511ffe5af5">api_direct_messages_box()</a>, <a class="el" href="include_2api_8php.html#a0991f72554f821255397d615e76f3203">api_direct_messages_new()</a>, <a class="el" href="include_2api_8php.html#a2c71b1226ef1283b5370bd1c200fee5f">api_favorites()</a>, <a class="el" href="include_2api_8php.html#a36344c80b8e9755da2f2dd3a0e28cce8">api_ff_ids()</a>, <a class="el" href="include_2api_8php.html#a4c6fb9fb5203aa60f4b3afd4521db8ea">api_format_items()</a>, <a class="el" href="include_2api_8php.html#aa40bae797bcd9ccacffdce5a3b5a1afa">api_get_user()</a>, <a class="el" href="include_2api_8php.html#afe534f826e4282b72d66e8cadca7bb73">api_login()</a>, <a class="el" href="include_2api_8php.html#aff322705cc6084b329003fc8eab0aad0">api_oauth_access_token()</a>, <a class="el" href="include_2api_8php.html#aa1bddb580510e70cc1a7b7381667f1a3">api_oauth_request_token()</a>, <a class="el" href="include_2api_8php.html#ad4c29f43418f6110f85a6b3998239ab4">api_statuses_destroy()</a>, <a class="el" href="include_2api_8php.html#aa0d6b29fff0344a8e67f3507a6d01410">api_statuses_f()</a>, <a class="el" href="include_2api_8php.html#a528d8070ee74ea800102936ce73cf366">api_statuses_home_timeline()</a>, <a class="el" href="include_2api_8php.html#a8b25a186bd0893f51aa72a62f655735e">api_statuses_mentions()</a>, <a class="el" href="include_2api_8php.html#ad24ce1bf20867add4c9211a8eaf93f22">api_statuses_public_timeline()</a>, <a class="el" href="include_2api_8php.html#ae0fa388479cace9c5a7a45b571ab42f8">api_statuses_repeat()</a>, <a class="el" href="include_2api_8php.html#af6f1d89cdb0a0621025efbec1597bc63">api_statuses_show()</a>, <a class="el" href="include_2api_8php.html#a32f0dda848d0c11c727fe1c3e741c283">api_statuses_user_timeline()</a>, <a class="el" href="include_2apps_8php.html#a6b472df85ed875e7ae75642cece5206f">app_destroy()</a>, <a class="el" href="include_2apps_8php.html#a1adcd1aff4d36ad0277daca9f3d2bbe2">app_installed()</a>, <a class="el" href="include_2apps_8php.html#a01cabfb33b2d0d843cf3bf4e3d3f0ab0">app_list()</a>, <a class="el" href="include_2apps_8php.html#a15626f24069c18816f7cdaf4735f58f9">app_store()</a>, <a class="el" href="include_2apps_8php.html#aeab6a62d2f3dfaa86ed043a006305f46">app_update()</a>, <a class="el" href="appman_8php.html#af48805ac2f6f123f2681a8ae1c6f123f">appman_content()</a>, <a class="el" href="include_2attach_8php.html#a0d07c5b83d3d54e186f752e571847b36">attach_by_hash()</a>, <a class="el" href="include_2attach_8php.html#ad991208ce939387e2f93a3bce7d09932">attach_by_hash_nodata()</a>, <a class="el" href="include_2attach_8php.html#a5c0875eafb8c0f8a0620ff7a875a2221">attach_change_permissions()</a>, <a class="el" href="include_2attach_8php.html#a887d2d44a3ef18dcb6624e7fb58dc8e3">attach_count_files()</a>, <a class="el" href="include_2attach_8php.html#a70bd666e080c2af5a91f5d14c297b8cd">attach_delete()</a>, <a class="el" href="mod_2attach_8php.html#aa88eb5ad87aa1036a30e70339cc6c1b1">attach_init()</a>, <a class="el" href="include_2attach_8php.html#a3634af95f11a023dd8e882c3c7a3600d">attach_list_files()</a>, <a class="el" href="include_2attach_8php.html#ab6830b3ab74a5d284876141ac80f6cbc">attach_mkdir()</a>, <a class="el" href="include_2attach_8php.html#a84a8a64c4805e1525b42d4add464833f">attach_store()</a>, <a class="el" href="security_8php.html#adc7bf51e3b8d67bd80e9348f9ab03733">authenticate_success()</a>, <a class="el" href="text_8php.html#a27cd2c1b3bcb49a0cfb7249e851725ca">autoname()</a>, <a class="el" href="text_8php.html#a3d2793d66db3345fd290b71e2eadf98e">bb_translate_video()</a>, <a class="el" href="block_8php.html#a8a82a470acdfbc7a8e749509caeeea45">block_content()</a>, <a class="el" href="blocks_8php.html#a2531a8fd51db3cecb2eb20c002c66e12">blocks_content()</a>, <a class="el" href="include_2bookmarks_8php.html#aef1cb2968c41c759f2d106e1088ca323">bookmark_add()</a>, <a class="el" href="zot_8php.html#aa97b33b619dd7132a9274f852af6ceb5">build_sync_packet()</a>, <a class="el" href="contact__widgets_8php.html#a165eb021e61c4dcab2a552f28628d353">categories_widget()</a>, <a class="el" href="security_8php.html#a8d23d2597aae380a3341872fe9513380">change_channel()</a>, <a class="el" href="include_2chanman_8php.html#a21ba9a5c961e866ff27aee3ee67bf99b">chanman_remove_everything_from_network()</a>, <a class="el" href="channel_8php.html#a9c6a6179e0e626398ebecc6151905ef1">channel_content()</a>, <a class="el" href="Contact_8php.html#a4e8af0f0525161da74583c04b8b03097">channel_remove()</a>, <a class="el" href="identity_8php.html#a77d2237f1846964634b1c99089c27c7d">channel_total()</a>, <a class="el" href="Contact_8php.html#a483cda56f9e37c3a4a8773dcdfeb0258">channelx_by_hash()</a>, <a class="el" href="Contact_8php.html#a3a0844dac1e86d523de5d2f432cfeebc">channelx_by_n()</a>, <a class="el" href="Contact_8php.html#a87e699f74a1102b25e8aa0432d86a91e">channelx_by_nick()</a>, <a class="el" href="chanview_8php.html#a4192c6da888c8c1165851acf9ad4cb8b">chanview_content()</a>, <a class="el" href="mod_2chat_8php.html#a8b0b8bee6fef6477e8c64c5e951b1b4f">chat_content()</a>, <a class="el" href="include_2chat_8php.html#acea6b176eb7aff44d9ba3ae24ce511d3">chat_message()</a>, <a class="el" href="include_2chat_8php.html#acdc80dba4eb796c7472b21129b435422">chatroom_create()</a>, <a class="el" href="include_2chat_8php.html#a2ba3af6884ecdce95de69262fe599639">chatroom_destroy()</a>, <a class="el" href="include_2chat_8php.html#a2c95b545e46bfee64faa05ecf0afea91">chatroom_enter()</a>, <a class="el" href="include_2chat_8php.html#a1ee1360f7d2549c7549ae07cb5190f0f">chatroom_leave()</a>, <a class="el" href="include_2chat_8php.html#aedcb532a0627b8644001a2fadab4e87a">chatroom_list()</a>, <a class="el" href="chatsvc_8php.html#a7032784215e1f6747cf385a6598770f9">chatsvc_content()</a>, <a class="el" href="chatsvc_8php.html#a7c9a9b9c24a2b02eed8efd6b09632d03">chatsvc_post()</a>, <a class="el" href="account_8php.html#ae052bd5558847bd38e89c213561a9771">check_account_email()</a>, <a class="el" href="account_8php.html#aaff7720423417a4333697894ffd9ddeb">check_account_invite()</a>, <a class="el" href="boot_8php.html#a4c02d88e66852a01bd5a1feecb7c3ce3">check_config()</a>, <a class="el" href="items_8php.html#a87ac9e359591721a824ecd23bbb56296">check_item_source()</a>, <a class="el" href="text_8php.html#a0c65597bb4aed3a039eb795ff540e5e3">check_webbie()</a>, <a class="el" href="items_8php.html#a772f0ae77ad77c8ab68ed918a3870946">collect_recipients()</a>, <a class="el" href="comanche_8php.html#a5a7ab801717d38e91ac910b933973887">comanche_block()</a>, <a class="el" href="common_8php.html#ab63408f39abef7a6915186e8dabc5a96">common_content()</a>, <a class="el" href="socgraph_8php.html#a7d34cd58025bcd9e575282f44db75918">common_friends()</a>, <a class="el" href="contact__widgets_8php.html#a552f8544528cec0c995cea7287ea9d65">common_friends_visitor_widget()</a>, <a class="el" href="socgraph_8php.html#ac343a846241d36cdf046b08f3396cfe9">common_friends_zcid()</a>, <a class="el" href="connect_8php.html#ad46a38f32fd7a3d324b1fa26373efa36">connect_init()</a>, <a class="el" href="connect_8php.html#a417ec27afe33f21a929667a665e32ee2">connect_post()</a>, <a class="el" href="connections_8php.html#aec2e457420fce3e3bf6a9f48e36df25c">connections_content()</a>, <a class="el" href="connections_8php.html#a1224058db8e3fb56463eb312f98e561d">connections_post()</a>, <a class="el" href="connedit_8php.html#a4da871e075597a09a8b374b9171dd92e">connedit_init()</a>, <a class="el" href="connedit_8php.html#a234c48426b652bf4d37053f2af329ac5">connedit_post()</a>, <a class="el" href="items_8php.html#aa9e99613d38a97b39c8cf5449699c2ee">construct_activity_object()</a>, <a class="el" href="items_8php.html#aa579bc4445d60098b1410961ca8e96b7">construct_activity_target()</a>, <a class="el" href="items_8php.html#a8794863cdf8ce1333040933d3a3f66bd">consume_feed()</a>, <a class="el" href="text_8php.html#ad6432621d0fafcbcf3d3b9b49bef7784">contact_block()</a>, <a class="el" href="contact__selectors_8php.html#a2c743d2eb526eb758d943a1490162d75">contact_profile_assign()</a>, <a class="el" href="Contact_8php.html#a28e062c884331dbb5dfa713228c25ad6">contact_remove()</a>, <a class="el" href="acl__selectors_8php.html#a9476997d2968a5794f3723878ed89c91">contact_select()</a>, <a class="el" href="contactgroup_8php.html#a18c7391b1b25debaf98c9dba639caab3">contactgroup_content()</a>, <a class="el" href="socgraph_8php.html#af29d056beec10b4e38e5209c92452894">count_all_friends()</a>, <a class="el" href="socgraph_8php.html#a887d576f21fd708132a06d0f72f90f84">count_common_friends()</a>, <a class="el" href="socgraph_8php.html#af175807406d94407a5e11742a3287746">count_common_friends_zcid()</a>, <a class="el" href="account_8php.html#a141fe579c351c78209d425473f978eb5">create_account()</a>, <a class="el" href="identity_8php.html#a345f4c943d84de502ec6e72d2c813945">create_identity()</a>, <a class="el" href="classRedDirectory.html#a986936910f0216887a25e28916c166c7">RedDirectory\createDirectory()</a>, <a class="el" href="classRedDirectory.html#a2d12d99d38a6a75fc9a830b2f7fc0bf0">RedDirectory\createFile()</a>, <a class="el" href="boot_8php.html#ad206598b909e8eb67eb0e0bb5ef69c13">current_theme()</a>, <a class="el" href="delegate_8php.html#a943eea8996ef348eb845c498f9f354dd">delegate_content()</a>, <a class="el" href="zot_8php.html#adfeb9400ae6b726beec89f8f1e8fde72">delete_imported_item()</a>, <a class="el" href="items_8php.html#aac8c9eb4338e2a996c43914392c6cfdb">delete_item_lowlevel()</a>, <a class="el" href="deliver_8php.html#a397afcb9afecf0c1816b0951189dd346">deliver_run()</a>, <a class="el" href="diaspora_8php.html#a006731620a5242d410358b32678e48e3">diaspora_asphoto()</a>, <a class="el" href="diaspora_8php.html#a0fb2abe304aae19efc040a5e6b917829">diaspora_comment()</a>, <a class="el" href="diaspora_8php.html#adef30b6fac948baedcc7194d5d155b5f">diaspora_conversation()</a>, <a class="el" href="diaspora_8php.html#ab99505944728d46585b8312989de533d">diaspora_dispatch_public()</a>, <a class="el" href="diaspora_8php.html#aa8e551a53fcce34be3942d0c3e20d1f4">diaspora_get_contact_by_handle()</a>, <a class="el" href="diaspora_8php.html#a625056c9dab9b9779d0665650e260bb9">diaspora_handle_from_contact()</a>, <a class="el" href="diaspora_8php.html#a5d57518545baa31cf8a85a937a267681">diaspora_like()</a>, <a class="el" href="diaspora_8php.html#a7cff2f8f11044c1b3a360f20e1bbee46">diaspora_message()</a>, <a class="el" href="diaspora_8php.html#a71fe9bb66626b4197ae018a230778bb2">diaspora_photo()</a>, <a class="el" href="diaspora_8php.html#a20b968d64ef26afe5cb0cc75a7570a31">diaspora_post()</a>, <a class="el" href="diaspora_8php.html#a900abf51398b2ef26cd2cd31c52f1b0f">diaspora_profile()</a>, <a class="el" href="diaspora_8php.html#ac1ab782a34552a7c6b4dc961754ed598">diaspora_request()</a>, <a class="el" href="diaspora_8php.html#a2bf43f6b5890897f425ef4325d34b007">diaspora_reshare()</a>, <a class="el" href="diaspora_8php.html#a938c7ee808d38725c0988fa6006805b9">diaspora_retraction()</a>, <a class="el" href="diaspora_8php.html#ae6f52efd81fe515cd9912bc8293abf5b">diaspora_send_images()</a>, <a class="el" href="diaspora_8php.html#aeb2bb78f620dbf51d9335e6eb7444f2c">diaspora_send_mail()</a>, <a class="el" href="diaspora_8php.html#aa34d2748bb97e9e193cacd572f335055">diaspora_signed_retraction()</a>, <a class="el" href="diaspora_8php.html#aa704d6aa2ac77be345c0f501168e6e56">diaspora_transmit()</a>, <a class="el" href="taxonomy_8php.html#a088371f4bc19155b2291508f5cd63332">dir_tagadelic()</a>, <a class="el" href="taxonomy_8php.html#a599ee71dd3194c8127b00dabec77abc1">dir_tagblock()</a>, <a class="el" href="dirprofile_8php.html#a3e1d30d3d93863ff5615f2df4ac7f052">dirprofile_init()</a>, <a class="el" href="dirsearch_8php.html#aa1fb04e1de4f25b63349ac78f94ceb4c">dirsearch_content()</a>, <a class="el" href="display_8php.html#a37137c98d47bf3306f4c2bb9f5b60de0">display_content()</a>, <a class="el" href="account_8php.html#a0d183a3cb4c67a0f5e906811df7a1fc9">downgrade_accounts()</a>, <a class="el" href="items_8php.html#a555762e1022a4b8e3c3abd32e7812408">drop_item()</a>, <a class="el" href="editlayout_8php.html#aa877e4157a26b099de904164181dd386">editlayout_content()</a>, <a class="el" href="editwebpage_8php.html#a375e945255fad79a71036528f7480650">editwebpage_content()</a>, <a class="el" href="items_8php.html#a82955cc578f0fa600acec84475026194">encode_item()</a>, <a class="el" href="event_8php.html#ac9f206819186b65952ac1869f0da8c6e">event_addtocal()</a>, <a class="el" href="event_8php.html#af5ac41e7ea3f7131088fe6333fd2846c">event_store_event()</a>, <a class="el" href="event_8php.html#a7378e839ac3de9d55579eb3ec48eaf92">event_store_item()</a>, <a class="el" href="events_8php.html#a1d293fb217ae6bc9e3858c4b32e363ec">events_content()</a>, <a class="el" href="include_2group_8php.html#a22a81875259c7d3d64d4848afea6b345">expand_groups()</a>, <a class="el" href="expire_8php.html#a444e45c9b67727b27db4c779fd51a298">expire_run()</a>, <a class="el" href="externals_8php.html#a4df44079e6f915286088b7a0d44db926">externals_run()</a>, <a class="el" href="fbrowser_8php.html#aee476addcf7a3e0fe9454f7dfd5a56c4">fbrowser_content()</a>, <a class="el" href="feed_8php.html#af86137700b56f33d1d5f25c8dec22c04">feed_init()</a>, <a class="el" href="contact__widgets_8php.html#a1eda66319d170f60a8d07c7ece95533b">fileas_widget()</a>, <a class="el" href="filer_8php.html#a5fd5d7e61b2f9c43cb5f110c89dc4274">filer_content()</a>, <a class="el" href="filerm_8php.html#ae2eb28d2054fa2c37e38689882172208">filerm_content()</a>, <a class="el" href="filestorage_8php.html#a61bb1be78472555df4ce619f51014040">filestorage_content()</a>, <a class="el" href="diaspora_8php.html#aade0c165fcdded71352c7a67bf6ce37b">find_diaspora_person_by_handle()</a>, <a class="el" href="include_2attach_8php.html#a4dbfd7e1cef52aa9ef52f4b88929fa86">find_filename_by_hash()</a>, <a class="el" href="include_2attach_8php.html#a052f14487ff2ce72f62a09fac8d7e997">find_folder_hash_by_attach_hash()</a>, <a class="el" href="classRedBrowser.html#ae4edd4e10c709e2624c1aeb47b0440c5">RedBrowser\findAttachHash()</a>, <a class="el" href="classRedBrowser.html#a20d81230645ddca08a88bfd9ea9f88f1">RedBrowser\findAttachIdByHash()</a>, <a class="el" href="items_8php.html#a0cf98bb619f07dd18f602683a55a5f59">first_post_date()</a>, <a class="el" href="item_8php.html#a7b63a9d0cd02096e17dcf11f4afa7c10">fix_attached_photo_permissions()</a>, <a class="el" href="items_8php.html#aba98fcbbcd7044a7e9ea34edabc14c87">fix_private_photos()</a>, <a class="el" href="boot_8php.html#aca5e42678e178c6b9034610d66666fd7">fix_system_urls()</a>, <a class="el" href="frphotos_8php.html#a4a33fadb181497eff301ee5132ec61d1">frphotos_init()</a>, <a class="el" href="fsuggest_8php.html#aa6c49ed4b50a387f1845f36844dd7998">fsuggest_content()</a>, <a class="el" href="fsuggest_8php.html#a61ecfe10ce937ed526614f8fd3de3c7d">fsuggest_post()</a>, <a class="el" href="classRedBrowser.html#a1f7daf50bb9bfcde7345b3b1908dbd7e">RedBrowser\generateDirectoryIndex()</a>, <a class="el" href="classCache.html#a70392b109331897bf9fdd7f1960e21de">Cache\get()</a>, <a class="el" href="classRedFile.html#a7c868dfcef6c70cd0e24cf3caa2c3535">RedFile\get()</a>, <a class="el" href="permissions_8php.html#aeca9b280f3dc3358c89976d81d690008">get_all_perms()</a>, <a class="el" href="identity_8php.html#ad2c97627a313d53df1a1c7b4215ddb51">get_birthdays()</a>, <a class="el" href="identity_8php.html#ac73b3e13778c564c877554517a7f51ba">get_channel_by_nick()</a>, <a class="el" href="include_2attach_8php.html#a6aa00ea010ea030110faefb75eafc1ce">get_cloudpath()</a>, <a class="el" href="diaspora_8php.html#a986114ce8d7a582ebd0b5972738e1fc2">get_diaspora_key()</a>, <a class="el" href="identity_8php.html#ae381db3d43f8e7c1da8b15d14ecf5312">get_events()</a>, <a class="el" href="items_8php.html#a536d0313b6ffe33b9d2490c4e25c5361">get_item_elements()</a>, <a class="el" href="identity_8php.html#a332df795f684788002f5a6424abacfd7">get_online_status()</a>, <a class="el" href="plugin_8php.html#aff0178bd8d0b34a94d5efddc883edd35">get_plugin_info()</a>, <a class="el" href="identity_8php.html#aaff86ee3b5984821e7a256c2da5f1a51">get_sys_channel()</a>, <a class="el" href="plugin_8php.html#ad48de9c0fb7f19413a2aa49250d00405">get_theme_info()</a>, <a class="el" href="taxonomy_8php.html#a7747fa859ac56fbffd4f9782d85505de">get_things()</a>, <a class="el" href="spam_8php.html#ab8fd81a82c9622cbebb8ceab6b310ca6">get_words()</a>, <a class="el" href="classRedDirectory.html#a70173d4458572d95e586b2037d2fd2f4">RedDirectory\getDir()</a>, <a class="el" href="classRedDirectory.html#a6c7e08199abc24e6eeb94a4037ef8bfc">RedDirectory\getLastModified()</a>, <a class="el" href="gprobe_8php.html#adf72cb0a70b5b9d99fdec1cc60e18ed1">gprobe_run()</a>, <a class="el" href="include_2group_8php.html#a06ec565d2b64e79044e7c1bf91a2a4ce">group_add()</a>, <a class="el" href="include_2group_8php.html#a0122ef312df2c5546b1a46b3e6c7b31b">group_add_member()</a>, <a class="el" href="include_2group_8php.html#abd66a5ea34a07a3422dc2dde6c7b3ecb">group_byname()</a>, <a class="el" href="mod_2group_8php.html#a07a64f6c65b0080d8190b3d9728a7a83">group_content()</a>, <a class="el" href="include_2group_8php.html#a5bd191d9692e6c34d48c0ede10810f09">group_get_members()</a>, <a class="el" href="mod_2group_8php.html#aed1f009b1221348021bb34761160ef35">group_post()</a>, <a class="el" href="include_2group_8php.html#a90e157b3e1b99c981809cb5a2abd3245">group_rec_byhash()</a>, <a class="el" href="include_2group_8php.html#a4118f498bbd1530c1d0136d016d197a5">group_rmv()</a>, <a class="el" href="include_2group_8php.html#a540e3ef36f47d47532646be4241f6518">group_rmv_member()</a>, <a class="el" href="acl__selectors_8php.html#aa1e3bc344ca2b29f97eb9860216d21a0">group_select()</a>, <a class="el" href="include_2group_8php.html#a6a69bd7be032fa8ce4e49c43a42cc6e9">group_side()</a>, <a class="el" href="include_2group_8php.html#afb802ae2ce73aae4bc36d157f7b6a92f">groups_containing()</a>, <a class="el" href="item_8php.html#aa22feef4de326e1d7078dedd892e615c">handle_tag()</a>, <a class="el" href="hcard_8php.html#ac34f26b0e6a37eef44fa49bea135136d">hcard_init()</a>, <a class="el" href="home_8php.html#aa1cf697851a646755baf537f75334c46">home_content()</a>, <a class="el" href="identity_8php.html#a3570a4eb77332b292d394c4132cb8f03">identity_basic_export()</a>, <a class="el" href="identity_8php.html#ac9fcd5c4c371998790b5c55c3d0f4633">identity_check_service_class()</a>, <a class="el" href="identity_8php.html#a2ab5172eabd375869060c9ad68323f5c">identity_selector()</a>, <a class="el" href="items_8php.html#a6bee35961f2e32905f20367a9309d627">import_author_rss()</a>, <a class="el" href="zot_8php.html#ad149f1e98c0c5b88ff9147e6ee3f330d">import_author_zot()</a>, <a class="el" href="photo__driver_8php.html#a1d0bc7161dec0d177b7d3bbe4421af9a">import_channel_photo()</a>, <a class="el" href="zot_8php.html#a3bf11286c2619b4ca28e49d5b5ab374a">import_directory_keywords()</a>, <a class="el" href="zot_8php.html#a20750dd2c36961013fd382fb34e1366c">import_directory_profile()</a>, <a class="el" href="import_8php.html#af17fef0410518f7eac205d0ea416eaa2">import_post()</a>, <a class="el" href="photo__driver_8php.html#a78f5a10c568d2a9bbbb129dc96548887">import_profile_photo()</a>, <a class="el" href="zot_8php.html#a2657e141d62d5f67ad3c87651b585299">import_site()</a>, <a class="el" href="zot_8php.html#a528e97ca5d69c3b7f35c5d954afde315">import_xchan()</a>, <a class="el" href="importelm_8php.html#a1a4f71e6d76ace6add5e9659845f5e5f">importelm_post()</a>, <a class="el" href="plugin_8php.html#a482131013272a1d5d5c1b1469c6c55d5">install_plugin()</a>, <a class="el" href="invite_8php.html#aeb0881c0f93c8e8552e5ed756ce6e5a5">invite_post()</a>, <a class="el" href="hubloc_8php.html#aebd244b4616ded022cbbee5e82926951">is_matrix_url()</a>, <a class="el" href="identity_8php.html#aa4bd4abfcba883f43919e89ec6419025">is_sys_channel()</a>, <a class="el" href="items_8php.html#a02ca33c31ed535d24894f8a9a91ce9df">item_add_cid()</a>, <a class="el" href="item_8php.html#a5b1b36cb301a94b38150074f0d424e74">item_check_service_class()</a>, <a class="el" href="items_8php.html#a6f7e1334af5d684a987fa6a3eb37f4cc">item_expire()</a>, <a class="el" href="items_8php.html#a09d425596b9f8663472cf7474ad36d96">item_getfeedattach()</a>, <a class="el" href="text_8php.html#aa6b0aa8afbeab50d1a3058ad21acb74e">item_message_id()</a>, <a class="el" href="item_8php.html#a693cd09805755ab85bbb5ecae69a48c3">item_post()</a>, <a class="el" href="items_8php.html#a5ed782ff5b9cf050bec931e06de12c00">item_remove_cid()</a>, <a class="el" href="items_8php.html#a2541e6861a56d145c9281877cc501615">item_store()</a>, <a class="el" href="items_8php.html#acf0bf7c9d21ac84f32effb754f7ad484">item_store_update()</a>, <a class="el" href="items_8php.html#a756738301f2ed96be50232500677d58a">items_fetch()</a>, <a class="el" href="text_8php.html#a3999a0b3e22e440f280ee791ce34d384">layout_select()</a>, <a class="el" href="layouts_8php.html#a6e0193759ad9eef76d3df2db24237b50">layouts_content()</a>, <a class="el" href="like_8php.html#a9d7dd268f21c21e9d29dd2aca2dd9538">like_content()</a>, <a class="el" href="dirsearch_8php.html#a985d410a170549429857af6ff2673149">list_public_sites()</a>, <a class="el" href="include_2config_8php.html#a27559f388c9b9af81c94e48d6889d1d1">load_config()</a>, <a class="el" href="boot_8php.html#a719c7f3972d5f9268f37a41c76cd4ef6">load_contact_links()</a>, <a class="el" href="setup_8php.html#ad2e0375a9ab87ebe6e78124ee125054a">load_database()</a>, <a class="el" href="plugin_8php.html#a326365e48ef94f0b9a0a771b8d75e813">load_hooks()</a>, <a class="el" href="include_2config_8php.html#ac543813a980b3841cc5a277fcd4a24a6">load_pconfig()</a>, <a class="el" href="include_2config_8php.html#a55bbed9a014c9109c767486834f3ca33">load_xconfig()</a>, <a class="el" href="dir__fns_8php.html#acd37b17dce3bdec6d5a6344a20598c1e">local_dir_update()</a>, <a class="el" href="lockview_8php.html#a851e26ab9a1008df5c5ebebea31e9b44">lockview_content()</a>, <a class="el" href="classFKOAuth1.html#a2b1dac2ed31fc6ef84668afdda8b263f">FKOAuth1\loginUser()</a>, <a class="el" href="classFKOAuthDataStore.html#a1148d47b546350bf440bdd92792c5df1">FKOAuthDataStore\lookup_consumer()</a>, <a class="el" href="classFKOAuthDataStore.html#a4edfe2e77ecd2e16ff6b5eb516ed3599">FKOAuthDataStore\lookup_nonce()</a>, <a class="el" href="classFKOAuthDataStore.html#a96f76387c3a93b0abe27a98013804bab">FKOAuthDataStore\lookup_token()</a>, <a class="el" href="lostpass_8php.html#a0314d94e48c789b1b3a201d740c9eab3">lostpass_content()</a>, <a class="el" href="lostpass_8php.html#a8ed35ba71a4404eaf4903da61d0321cc">lostpass_post()</a>, <a class="el" href="magic_8php.html#acea2cc792849ca2d71d4b689f66518bf">magic_init()</a>, <a class="el" href="mail_8php.html#a3c7c485fc69f92371e8b20936040eca1">mail_content()</a>, <a class="el" href="items_8php.html#a77da7ce9a117601d49ac4a67c71b514f">mail_store()</a>, <a class="el" href="manage_8php.html#a2bca247b5296827638959138367db4f5">manage_content()</a>, <a class="el" href="Contact_8php.html#a08845ce8c5b997d5edac38ae7118b5c8">mark_orphan_hubsxchans()</a>, <a class="el" href="match_8php.html#a1dd853e959b9e70c1911bb2fb5f5130d">match_content()</a>, <a class="el" href="auth_8php.html#ab7be44ee051c0aa29847807cf2c5dd38">match_openid()</a>, <a class="el" href="include_2group_8php.html#a048f6892bfd28852de1b76470df411de">member_of()</a>, <a class="el" href="include_2menu_8php.html#add35fae5e9695031b3d46e30ac409eb8">menu_add_item()</a>, <a class="el" href="mod_2menu_8php.html#a6fed23af14d71a78a4153c8363a685cf">menu_content()</a>, <a class="el" href="include_2menu_8php.html#a08a800821721781a8dfffbe31481ff98">menu_create()</a>, <a class="el" href="include_2menu_8php.html#a9aa8e0052dd47c1a93f53a983bd4620a">menu_del_item()</a>, <a class="el" href="include_2menu_8php.html#a3884bda4d85d84ec99447db9403a68d8">menu_delete()</a>, <a class="el" href="include_2menu_8php.html#ad87f51ce85172bcc3f931aa0cd96a804">menu_delete_id()</a>, <a class="el" href="include_2menu_8php.html#a6a33c6a3db2a7510b16cc656edaec571">menu_edit()</a>, <a class="el" href="include_2menu_8php.html#acb66f80ca895a6ccd562b3d9ae7b41aa">menu_edit_item()</a>, <a class="el" href="include_2menu_8php.html#a68ebbf492470c930f652013656f9071d">menu_fetch()</a>, <a class="el" href="include_2menu_8php.html#a47447c01ba8ea04cd74af1d4c5b68fc7">menu_fetch_id()</a>, <a class="el" href="include_2menu_8php.html#a32701c4245e78ba9106eef52c08bf33d">menu_list()</a>, <a class="el" href="mod_2menu_8php.html#aaa491ef173868fe002aece4632bcf393">menu_post()</a>, <a class="el" href="mod_2message_8php.html#ac72dfed3ce08fcb331d66b37edc6e15f">message_content()</a>, <a class="el" href="text_8php.html#a1633412120f52bdce5f43e0a127d9293">mimetype_select()</a>, <a class="el" href="include_2group_8php.html#ab0e422a0f31c0c64fd9084ca03d85f32">mini_group_select()</a>, <a class="el" href="mitem_8php.html#a7a31b702ecad18eeb6a38b243ff0037e">mitem_content()</a>, <a class="el" href="mitem_8php.html#a6ee694cca4b551a20d7c7a94b5243ec1">mitem_post()</a>, <a class="el" href="mood_8php.html#a7ae136dd7476865b4828136175db5022">mood_init()</a>, <a class="el" href="msearch_8php.html#ac80d2a6c0a92e79eec7efbbccd74d9a8">msearch_post()</a>, <a class="el" href="netgrowth_8php.html#a9b87bfc25a7cb11bc7f8e1fdd0310919">netgrowth_content()</a>, <a class="el" href="mod_2network_8php.html#a43f2f29b90c5e29072c561934bc8f8b4">network_content()</a>, <a class="el" href="classFKOAuthDataStore.html#a434882f03e3cdb171ed89e09e337e934">FKOAuthDataStore\new_access_token()</a>, <a class="el" href="include_2follow_8php.html#ae387d4ae097c23d69f3247e7f08140c7">new_contact()</a>, <a class="el" href="classFKOAuthDataStore.html#a431b44d70e3da6a8256ab38f710e3050">FKOAuthDataStore\new_request_token()</a>, <a class="el" href="enotify_8php.html#a3e9a9355b243777c488d2a9883908dfc">notification()</a>, <a class="el" href="notifications_8php.html#aadd0b5525bd8c283a5d8a37982bbfe62">notifications_content()</a>, <a class="el" href="notifications_8php.html#a5baffec7b2e625c9f9cefbc097550d33">notifications_post()</a>, <a class="el" href="notifier_8php.html#a568c502f626cff95e344c0748938b85d">notifier_run()</a>, <a class="el" href="mod_2notify_8php.html#acdf3851688ebd6d6a575eb84ef9febe3">notify_content()</a>, <a class="el" href="mod_2notify_8php.html#a94f9a6a9d4b5fd704baafff0c34f41ae">notify_init()</a>, <a class="el" href="mod_2api_8php.html#a02ae0f60e240dc806b860edb7d582117">oauth_get_client()</a>, <a class="el" href="onedirsync_8php.html#a411aedd47c57476099647961e6a86691">onedirsync_run()</a>, <a class="el" href="onepoll_8php.html#a72753b2fdec79b37c7f432035c91fb6d">onepoll_run()</a>, <a class="el" href="openid_8php.html#a9a13827dbcf61ae4e45f0b6b33a88f43">openid_content()</a>, <a class="el" href="page_8php.html#a91a5f649f68406149108bded1dc90b22">page_content()</a>, <a class="el" href="page__widgets_8php.html#a39d547771c5f12a17c097436c82f0fa2">pagelist_widget()</a>, <a class="el" href="comanche_8php.html#af7150df735e5ff9d467994cd6f769c6e">pdl_selector()</a>, <a class="el" href="permissions_8php.html#a67ada9ed51e77885b6b0f6a28cee1835">perm_is_allowed()</a>, <a class="el" href="photo_8php.html#a582779d24882b0d31ee909a91d70a448">photo_init()</a>, <a class="el" href="text_8php.html#aa5528f41533927e1bd2da3618a74a6d7">photo_new_resource()</a>, <a class="el" href="include_2photos_8php.html#a6c40ef58aefef705a5adc84a40e97109">photo_upload()</a>, <a class="el" href="include_2photos_8php.html#a8e8b7be99e24c2497bc2cb3339280c35">photos_album_exists()</a>, <a class="el" href="include_2photos_8php.html#a7e7abc69872180697c5471dc69349afe">photos_album_get_db_idstr()</a>, <a class="el" href="mod_2photos_8php.html#aa87382611a66ec5effdb2d78f13f5812">photos_content()</a>, <a class="el" href="include_2photos_8php.html#aa27b9e435dcc34e1009f56dc02c7ca51">photos_list_photos()</a>, <a class="el" href="mod_2photos_8php.html#a062bed4d04d14fee8a53f4c9be673080">photos_post()</a>, <a class="el" href="ping_8php.html#a77217b1b190b4c5d8770867b45f0c0a1">ping_init()</a>, <a class="el" href="plugin_8php.html#a855c4fdb38c0fc2714d537752a4347f9">plugin_is_installed()</a>, <a class="el" href="poco_8php.html#a53def16f75e3d41f1d2bb7cfa4905498">poco_init()</a>, <a class="el" href="socgraph_8php.html#a5ef8bef37161df53718a21e93d02fbd6">poco_load()</a>, <a class="el" href="poke_8php.html#ac9190563a8da9c07a16f9dcd71cf6993">poke_content()</a>, <a class="el" href="poke_8php.html#a9725aab97b3983e6a98bd81c4efe7d3b">poke_init()</a>, <a class="el" href="poller_8php.html#a5f12df3a4738124b6c039971e87e76da">poller_run()</a>, <a class="el" href="items_8php.html#a410f9c743877c125ca06312373346903">post_activity_item()</a>, <a class="el" href="post_8php.html#af59e6a1dc22d19d9257b01cd7ccedb75">post_post()</a>, <a class="el" href="text_8php.html#ac19d2b33a58372a357a43d51eed19162">preg_heart()</a>, <a class="el" href="include_2message_8php.html#aed272d77c06a309e2836ac79e75613f1">private_messages_drop()</a>, <a class="el" href="include_2message_8php.html#a5f8de9847e203329e317ac38dc646898">private_messages_fetch_conversation()</a>, <a class="el" href="include_2message_8php.html#a254a756031e4d5e94f85e2939bdb5091">private_messages_fetch_message()</a>, <a class="el" href="include_2message_8php.html#a652973ce47a262f2d238c2fd6233d97e">private_messages_list()</a>, <a class="el" href="zot_8php.html#ac301c67864917c35922257950ae0f95c">process_channel_sync_delivery()</a>, <a class="el" href="zot_8php.html#a4d9e6ca295e443b740d9960c304b3474">process_delivery()</a>, <a class="el" href="zot_8php.html#aa6ae96db8cbbdbb10e6876d206bbf7cc">process_mail_delivery()</a>, <a class="el" href="zot_8php.html#a9a57b40669351c9791126b925cb7ef3b">process_profile_delivery()</a>, <a class="el" href="profile_8php.html#ab5d0246be0552e2182a585c1206d22a5">profile_init()</a>, <a class="el" href="identity_8php.html#a4751b522ea913d0e7ed43e03d22e9e68">profile_load()</a>, <a class="el" href="profile__photo_8php.html#a4b80234074bd603221aa5364f330e479">profile_photo_post()</a>, <a class="el" href="profile__photo_8php.html#a561103564199da56e58061a4196eb102">profile_photo_set_profile_perms()</a>, <a class="el" href="identity_8php.html#a432259b2cf5b6f59be53e71db9f2c7dc">profile_sidebar()</a>, <a class="el" href="profiles_8php.html#a46975783b8b8d70402d51487eb1f0b00">profiles_content()</a>, <a class="el" href="profiles_8php.html#a36f71405ad536228f8bb84a551b23f7e">profiles_init()</a>, <a class="el" href="profiles_8php.html#ab0362c81b1d3b0b12a772b9fac446e04">profiles_post()</a>, <a class="el" href="profperm_8php.html#aef015787de2373d9fb3fe3f814fb5023">profperm_content()</a>, <a class="el" href="hubloc_8php.html#ad3d0dcfcfcb347744f7617fe6f5de002">prune_hub_reinstalls()</a>, <a class="el" href="zot_8php.html#a083aec6c900d244e1bfc1406f9461465">public_recips()</a>, <a class="el" href="classRedFile.html#a41a49a583eb276b75626fcf97f4a699c">RedFile\put()</a>, <a class="el" href="classdba__mysql.html#ac3fd60c278f400907322dac578754a99">dba_mysql\q()</a>, <a class="el" href="classdba__mysqli.html#a611c4de8d6d7512dffb83a38bb6701ec">dba_mysqli\q()</a>, <a class="el" href="queue_8php.html#af8c93de86d866c3200174c8450a0f341">queue_run()</a>, <a class="el" href="Contact_8php.html#a7e3f5bef8ea1d2bf8434c9be36a2b713">random_profile()</a>, <a class="el" href="Contact_8php.html#a2f4f495d53f2a334ab75292af79d3c91">rconnect_url()</a>, <a class="el" href="receive_8php.html#a03d8fa26e77844020ba5602deca7d494">receive_post()</a>, <a class="el" href="reddav_8php.html#ae92ea0df1993f6a7bcd1b6efa6c1fb66">RedChannelList()</a>, <a class="el" href="reddav_8php.html#a5df0d09893f2e65dc5cf6bbab6cfb266">RedCollectionData()</a>, <a class="el" href="reddav_8php.html#a9f531641dfb4e43cd88ac1a9ae7e2088">RedFileData()</a>, <a class="el" href="session_8php.html#a7f0f50576360d9ba52d29364e0b83a8e">ref_session_read()</a>, <a class="el" href="session_8php.html#ac4461c1984543d3553e73dba2771568f">ref_session_write()</a>, <a class="el" href="register_8php.html#a0e91f57f111407ea8d3223a05022bb2a">register_content()</a>, <a class="el" href="plugin_8php.html#a425472c5f3afc137268b2ad45652b209">register_hook()</a>, <a class="el" href="register_8php.html#a51731dcc1917c58a790eb1c0f6132271">register_post()</a>, <a class="el" href="datetime_8php.html#a8ae8dc95ace7ac27fa5a1ecf42b78c82">relative_date()</a>, <a class="el" href="plugin_8php.html#af9ac19004dca49adae1ac7a0d9f3b025">reload_plugins()</a>, <a class="el" href="identity_8php.html#a47d6f53216f23a3484061793bef29854">remote_online_status()</a>, <a class="el" href="Contact_8php.html#acc12cda999c88c4d6185cca967c15125">remove_all_xchan_resources()</a>, <a class="el" href="zot_8php.html#aad25a3fe0e1566121d6fb8222979bc10">remove_community_tag()</a>, <a class="el" href="text_8php.html#a9c6ce4e12a4ac883c5e3f36fed6e1e09">replace_macros()</a>, <a class="el" href="classFriendicaSmartyEngine.html#ad62f1181d2f02b54b46731ad2bd46db2">FriendicaSmartyEngine\replace_macros()</a>, <a class="el" href="items_8php.html#af6237605c60d69abdd959ddbbee3420c">retain_item()</a>, <a class="el" href="rmagic_8php.html#a95455edd43f1bff39446a57388cdde16">rmagic_init()</a>, <a class="el" href="rmagic_8php.html#a869de069d081b3c4e98b957d06bbf08f">rmagic_post()</a>, <a class="el" href="rpost_8php.html#a8190354d789000806d9879aea276728f">rpost_content()</a>, <a class="el" href="classphoto__driver.html#a5864fae7d8389372955a8e78cec527ac">photo_driver\save()</a>, <a class="el" href="search__ac_8php.html#a14f90c83a3f2be095e9e2992a8d66138">search_ac_init()</a>, <a class="el" href="search_8php.html#ab2568591359edde5b483a6cd9a24b2cc">search_content()</a>, <a class="el" href="include_2message_8php.html#a751ffd6635022b2190f56154ee745752">send_message()</a>, <a class="el" href="account_8php.html#a014de2d5d5c9785de5bf547a485822fa">send_reg_approval_email()</a>, <a class="el" href="items_8php.html#aab9e0c58247427126de0699c729c3b6c">send_status_notifications()</a>, <a class="el" href="plugin_8php.html#a030cec6793b909c439c0336ba39b1571">service_class_allows()</a>, <a class="el" href="plugin_8php.html#a905b54e10704b283ac64680a8abc0971">service_class_fetch()</a>, <a class="el" href="classCache.html#ae622b82adc1c2fb1f3e2cc4fd9688fce">Cache\set()</a>, <a class="el" href="identity_8php.html#a78151baf4407a8482d2681a91a9c486b">set_default_login_identity()</a>, <a class="el" href="classRedDirectory.html#adc48035679e52c55d9881f83de535553">RedDirectory\setName()</a>, <a class="el" href="classRedFile.html#a38a82bfc1b30028ea6ac75923e90fa25">RedFile\setName()</a>, <a class="el" href="settings_8php.html#aa7ee94d88ac088edb04ccf3a26de3586">settings_post()</a>, <a class="el" href="setup_8php.html#a88247384a96e14516f474d7af6a465c1">setup_content()</a>, <a class="el" href="share_8php.html#afeb26046bdd02567ecd29ab5f188b249">share_init()</a>, <a class="el" href="siteinfo_8php.html#a70c09bfb6dd1c86a125a35f62ed53656">siteinfo_content()</a>, <a class="el" href="siteinfo_8php.html#a3efbd0bd6564af19ec0a9ce0294e59d0">siteinfo_init()</a>, <a class="el" href="sitelist_8php.html#a665a59bf60f780b40f32c909f4a473b1">sitelist_init()</a>, <a class="el" href="sources_8php.html#ac442ccef080ab95772d8929fcafcb4b7">sources_content()</a>, <a class="el" href="sources_8php.html#ac73298ff162ce7b2de8dcaf3d3305b1e">sources_post()</a>, <a class="el" href="starred_8php.html#a63024fb418c678e49fd535e3752d349a">starred_init()</a>, <a class="el" href="classphoto__driver.html#a642a8d0c4ad5f887c99c6af77cee287b">photo_driver\store()</a>, <a class="el" href="taxonomy_8php.html#a4ba1339b2a7054971178ce194e4440fd">store_item_tag()</a>, <a class="el" href="security_8php.html#a6126c77a1267e046ac59cf864613f011">stream_perms_api_uids()</a>, <a class="el" href="security_8php.html#a3ef2be6a7e4928e39d50059d6feb457c">stream_perms_xchans()</a>, <a class="el" href="subthread_8php.html#a50368f3d825b77996030528e7fbfa3d3">subthread_content()</a>, <a class="el" href="suggest_8php.html#a58748a8235d4523f8333847f3e42dd91">suggest_content()</a>, <a class="el" href="socgraph_8php.html#a76e6fca3d2bc842dcd9e710bb87c8329">suggestion_query()</a>, <a class="el" href="dir__fns_8php.html#aa666e7df6ca8c332f4081c9b66b4bdf6">sync_directories()</a>, <a class="el" href="items_8php.html#ab1bce4261bcf75ad62753b498a144d17">tag_deliver()</a>, <a class="el" href="taxonomy_8php.html#aaf90ba8b839d6459065f39a4f1109b8a">tagadelic()</a>, <a class="el" href="taxonomy_8php.html#ac21d1dff16d569e7d110167aea4e63c2">tagblock()</a>, <a class="el" href="tagger_8php.html#a0e4a3eb177d1684553c547503d67161c">tagger_content()</a>, <a class="el" href="tagrm_8php.html#adfd4ea5b4d7fc6d9c9e042af5cd7d49a">tagrm_content()</a>, <a class="el" href="tagrm_8php.html#a1702f40aa53a2fa93deade1f609abe78">tagrm_post()</a>, <a class="el" href="items_8php.html#a88c6cf7649ac836fbbed82a7a0315110">tgroup_check()</a>, <a class="el" href="text_8php.html#af9c9ac3f74c82dc60acfa404d0e9dc53">theme_attachments()</a>, <a class="el" href="thing_8php.html#a24a35f1e64029a67fdbea94a776ae04b">thing_content()</a>, <a class="el" href="thing_8php.html#a8be23b1d475ec3d9291999221c674c80">thing_init()</a>, <a class="el" href="plugin_8php.html#a56f71fe5adf9586ce950523d8180443e">unregister_hook()</a>, <a class="el" href="datetime_8php.html#af1cd77c97c901d9239cb7a61f97f9826">update_birthdays()</a>, <a class="el" href="dir__fns_8php.html#a44062d4b471d1e83f92f6c184585aa13">update_directory_entry()</a>, <a class="el" href="items_8php.html#a2baa9e05f1e8aa3dd61c85803ae39bd6">update_remote_id()</a>, <a class="el" href="socgraph_8php.html#a790690bb1a1d02483fe31632a160144d">update_suggestions()</a>, <a class="el" href="account_8php.html#ac5c570a2d46446bad4dd2501e9c5a4b1">user_allow()</a>, <a class="el" href="account_8php.html#ad07be417ac7eda939768804106ddea3d">user_approve()</a>, <a class="el" href="account_8php.html#ac1653efba62493b9d87513e1b6c04c83">user_deny()</a>, <a class="el" href="classRedBasicAuth.html#a8dfd9a0953f8884723b421b7c1acf79b">RedBasicAuth\validateUserPass()</a>, <a class="el" href="Contact_8php.html#a6348a532c9d26cd1c9afbc9aa6aa8960">vcard_from_xchan()</a>, <a class="el" href="account_8php.html#acd6b8d2124ba5ea4f4794d2c58ae8bf5">verify_email_address()</a>, <a class="el" href="viewconnections_8php.html#ab6c4d983e97b3a8a879567ff76507776">viewconnections_content()</a>, <a class="el" href="viewsrc_8php.html#a6eff3d0c1d7d14b335c4edb785cd60a4">viewsrc_content()</a>, <a class="el" href="vote_8php.html#a6aa67489bf458ca5e3206e46dac68596">vote_content()</a>, <a class="el" href="vote_8php.html#ae0c6610f40afbbc1f4fe6494c51fbab2">vote_init()</a>, <a class="el" href="vote_8php.html#a57a9516ee1b923b224e66dcc47377fb2">vote_post()</a>, <a class="el" href="wall__attach_8php.html#a7385e970e93228d082f0fd7254f6e653">wall_attach_post()</a>, <a class="el" href="webpages_8php.html#af3b7397d4abc153e3d2147740ee1a41d">webpages_content()</a>, <a class="el" href="wfinger_8php.html#ae21e50c8d0a5f3c9be9f43a4e519acd3">wfinger_init()</a>, <a class="el" href="widgets_8php.html#a0e2f5179ed1a73b282dfda7270fcabb3">widget_bookmarkedchats()</a>, <a class="el" href="widgets_8php.html#a47c72aac42058ea086c9ef8651c259da">widget_chatroom_list()</a>, <a class="el" href="widgets_8php.html#a5ab3b64496e02cab56429978ad55f1c0">widget_filer()</a>, <a class="el" href="widgets_8php.html#ad1bf7aa69e8d100d95faba17c7bc91cd">widget_follow()</a>, <a class="el" href="widgets_8php.html#a313a8d10ab81c71357c12e67e4d7efd5">widget_item()</a>, <a class="el" href="widgets_8php.html#a94203eb9bcd63cbdecbbcb15163598d8">widget_savedsearch()</a>, <a class="el" href="widgets_8php.html#a50b1410238100c8a94c06b0aa63ee3b8">widget_suggestedchats()</a>, <a class="el" href="widgets_8php.html#a0d404276fedc59f5038cf5c085028326">widget_suggestions()</a>, <a class="el" href="widgets_8php.html#a6dbc227aac750774284ee39c45f0a200">widget_tagcloud()</a>, <a class="el" href="xchan_8php.html#a9853348bf1a35c644460221ba75edc2d">xchan_content()</a>, <a class="el" href="xrd_8php.html#aee3cf087968e4a0ff3a87de16eb23270">xrd_init()</a>, <a class="el" href="text_8php.html#a324c58f37f6acdf9cd1922aa76077d9f">z_input_filter()</a>, <a class="el" href="include_2attach_8php.html#aeb07968990e66a88c95483ca09a7f909">z_readdir()</a>, <a class="el" href="zfinger_8php.html#a8139b83a22ef98869adc10aa224027a0">zfinger_init()</a>, <a class="el" href="identity_8php.html#a680fbafc2db023c5b1309e0180e81315">zid_init()</a>, <a class="el" href="items_8php.html#a004e89d86b0f29b2c4da20108ecc4091">zot_feed()</a>, <a class="el" href="zot_8php.html#a95528377d7303131958c9f0b7158fdce">zot_finger()</a>, <a class="el" href="zot_8php.html#a55056e863a7860bc0cf922e78fcce073">zot_gethub()</a>, <a class="el" href="zot_8php.html#aeea071f17e306fe3d0c488551906bfab">zot_import()</a>, <a class="el" href="zot_8php.html#a928f5643ca66ae9635d85aeb2be62e03">zot_process_response()</a>, <a class="el" href="zot_8php.html#a7ac30ff51274bf0b6d3eade37972145c">zot_refresh()</a>, <a class="el" href="zotfeed_8php.html#a24dfc23d366e7f840cf2847d0c1c8eac">zotfeed_init()</a>, and <a class="el" href="zping_8php.html#a4d3a6b0b8b04ed6469015823e615ee75">zping_content()</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a83d5f232bed56a5af8173818b0bdf79d"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="theme_2mytheme_2php_2default_8php.html#a3987f5547ceb7e36a210a66a06241a5a">if</a> ($r) $ret = <a class="el" href="include_2photos_8php.html#a6c40ef58aefef705a5adc84a40e97109">photo_upload</a>($channel,$channel,$args)</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p>Referenced by <a class="el" href="classTemplate.html#a4b933954086d9e01a1804b0b1c6ee93e">Template\_replcb_debug()</a>, <a class="el" href="classTemplate.html#abf71098c80fd1f218a59452b3408309e">Template\_replcb_for()</a>, <a class="el" href="classTemplate.html#a86e8fd27955ef10cadfd86f3fca70677">Template\_replcb_inc()</a>, <a class="el" href="items_8php.html#a36e656667193c83aa2cc03a024fc131b">activity_sanitise()</a>, <a class="el" href="include_2api_8php.html#a5990101034e7abf6404feba3cd273629">api_apply_template()</a>, <a class="el" href="include_2api_8php.html#a7759ccddc8dff012ad168e511ffe5af5">api_direct_messages_box()</a>, <a class="el" href="include_2api_8php.html#a0991f72554f821255397d615e76f3203">api_direct_messages_new()</a>, <a class="el" href="include_2api_8php.html#a2c71b1226ef1283b5370bd1c200fee5f">api_favorites()</a>, <a class="el" href="include_2api_8php.html#a36344c80b8e9755da2f2dd3a0e28cce8">api_ff_ids()</a>, <a class="el" href="include_2api_8php.html#a18cab7c6391df5c421753463f5d2a879">api_format_as()</a>, <a class="el" href="include_2api_8php.html#a4c6fb9fb5203aa60f4b3afd4521db8ea">api_format_items()</a>, <a class="el" href="include_2api_8php.html#ae82608c317421f27446465aa6724733d">api_format_messages()</a>, <a class="el" href="include_2api_8php.html#aa40bae797bcd9ccacffdce5a3b5a1afa">api_get_user()</a>, <a class="el" href="include_2api_8php.html#aa49741342ad8ba285737eea1209a37e1">api_item_get_user()</a>, <a class="el" href="include_2api_8php.html#aa0d6b29fff0344a8e67f3507a6d01410">api_statuses_f()</a>, <a class="el" href="include_2api_8php.html#a528d8070ee74ea800102936ce73cf366">api_statuses_home_timeline()</a>, <a class="el" href="include_2api_8php.html#a8b25a186bd0893f51aa72a62f655735e">api_statuses_mentions()</a>, <a class="el" href="include_2api_8php.html#ad24ce1bf20867add4c9211a8eaf93f22">api_statuses_public_timeline()</a>, <a class="el" href="include_2api_8php.html#af6f1d89cdb0a0621025efbec1597bc63">api_statuses_show()</a>, <a class="el" href="include_2api_8php.html#a32f0dda848d0c11c727fe1c3e741c283">api_statuses_user_timeline()</a>, <a class="el" href="include_2apps_8php.html#a1cb5c016510e39bcdc1d1c096d51c5c7">app_encode()</a>, <a class="el" href="include_2apps_8php.html#a15626f24069c18816f7cdaf4735f58f9">app_store()</a>, <a class="el" href="include_2apps_8php.html#aeab6a62d2f3dfaa86ed043a006305f46">app_update()</a>, <a class="el" href="items_8php.html#abf7a1b73eb352d79acd36309b0dababd">array_sanitise()</a>, <a class="el" href="include_2attach_8php.html#a0d07c5b83d3d54e186f752e571847b36">attach_by_hash()</a>, <a class="el" href="include_2attach_8php.html#ad991208ce939387e2f93a3bce7d09932">attach_by_hash_nodata()</a>, <a class="el" href="include_2attach_8php.html#a887d2d44a3ef18dcb6624e7fb58dc8e3">attach_count_files()</a>, <a class="el" href="include_2attach_8php.html#a3634af95f11a023dd8e882c3c7a3600d">attach_list_files()</a>, <a class="el" href="include_2attach_8php.html#ab6830b3ab74a5d284876141ac80f6cbc">attach_mkdir()</a>, <a class="el" href="include_2attach_8php.html#a84a8a64c4805e1525b42d4add464833f">attach_store()</a>, <a class="el" href="boot_8php.html#a9cbab4ee728e9a8b4ce952bae643044e">build_querystring()</a>, <a class="el" href="security_8php.html#a8d23d2597aae380a3341872fe9513380">change_channel()</a>, <a class="el" href="include_2chanman_8php.html#a21ba9a5c961e866ff27aee3ee67bf99b">chanman_remove_everything_from_network()</a>, <a class="el" href="chanview_8php.html#a4192c6da888c8c1165851acf9ad4cb8b">chanview_content()</a>, <a class="el" href="mod_2chat_8php.html#a8b0b8bee6fef6477e8c64c5e951b1b4f">chat_content()</a>, <a class="el" href="include_2chat_8php.html#acea6b176eb7aff44d9ba3ae24ce511d3">chat_message()</a>, <a class="el" href="include_2chat_8php.html#acdc80dba4eb796c7472b21129b435422">chatroom_create()</a>, <a class="el" href="include_2chat_8php.html#a2ba3af6884ecdce95de69262fe599639">chatroom_destroy()</a>, <a class="el" href="chatsvc_8php.html#a7032784215e1f6747cf385a6598770f9">chatsvc_content()</a>, <a class="el" href="chatsvc_8php.html#a28d248b056fa47452e28ed01130e9116">chatsvc_init()</a>, <a class="el" href="chatsvc_8php.html#a7c9a9b9c24a2b02eed8efd6b09632d03">chatsvc_post()</a>, <a class="el" href="comanche_8php.html#ae9fe1ce574db3dd0931eada80234f82a">comanche_webpage()</a>, <a class="el" href="identity_8php.html#a345f4c943d84de502ec6e72d2c813945">create_identity()</a>, <a class="el" href="text_8php.html#a63fb21c0bed2fc72eef2c1471ac42b63">day_translate()</a>, <a class="el" href="dba__driver_8php.html#aa377074e70981e8c4e82ca0accd068ee">dbq()</a>, <a class="el" href="items_8php.html#a56b2a4abcadfac71175cd50555528cc3">decode_tags()</a>, <a class="el" href="include_2config_8php.html#a549910227348003efc3c05c9105c42da">del_config()</a>, <a class="el" href="include_2config_8php.html#a7ad2081c5f812ac4387fd76f3762d941">del_pconfig()</a>, <a class="el" href="include_2config_8php.html#a9c171def547deee16738dc58fdeb4b72">del_xconfig()</a>, <a class="el" href="diaspora_8php.html#a6f0a67b6b17503c125af32763be931b7">diaspora_dispatch()</a>, <a class="el" href="diaspora_8php.html#ad9985cc4214bdfc14878785c838c8690">diaspora_is_reshare()</a>, <a class="el" href="diaspora_8php.html#ac1ab782a34552a7c6b4dc961754ed598">diaspora_request()</a>, <a class="el" href="diaspora_8php.html#a33ae0c4606a7df4d801c05507d87f668">diaspora_send_status()</a>, <a class="el" href="dirsearch_8php.html#a7d4cd9890d5ed23c3efc58e2a778a305">dir_parse_query()</a>, <a class="el" href="dirsearch_8php.html#a52bcac49b0e35cc8c6b70066143c2ee2">dir_query_build()</a>, <a class="el" href="dirsearch_8php.html#aa1fb04e1de4f25b63349ac78f94ceb4c">dirsearch_content()</a>, <a class="el" href="account_8php.html#a0d183a3cb4c67a0f5e906811df7a1fc9">downgrade_accounts()</a>, <a class="el" href="items_8php.html#a5f690fc2484abec07840b4f9dd525bd9">encode_item_flags()</a>, <a class="el" href="items_8php.html#ac6673627d289ee4f547de0fe3b7acd0a">encode_item_terms()</a>, <a class="el" href="items_8php.html#a566c601726697e044e75284af7fb6f17">encode_item_xchan()</a>, <a class="el" href="text_8php.html#ae4282a39492caa23ccbc2ce98e54f110">expand_acl()</a>, <a class="el" href="include_2group_8php.html#a22a81875259c7d3d64d4848afea6b345">expand_groups()</a>, <a class="el" href="include_2notify_8php.html#a0e61728e487df50c72e6434f911a57d3">format_notification()</a>, <a class="el" href="permissions_8php.html#aeca9b280f3dc3358c89976d81d690008">get_all_perms()</a>, <a class="el" href="include_2config_8php.html#af08b7adb63adfb2eda7c466fba0cce74">get_config_from_storage()</a>, <a class="el" href="identity_8php.html#a332df795f684788002f5a6424abacfd7">get_online_status()</a>, <a class="el" href="permissions_8php.html#a040fd3d3b8517658b1668ae0cd093972">get_perms()</a>, <a class="el" href="include_2apps_8php.html#ae64f72eb4f126e03b4eb65ed1702a3ca">get_system_apps()</a>, <a class="el" href="text_8php.html#a4659fbc4e54ddc700c3aa66b9092c623">get_tags()</a>, <a class="el" href="taxonomy_8php.html#a0fb8cf0ac7bcbc8b27d856fe9bf69cd1">get_terms_oftype()</a>, <a class="el" href="classApp.html#a871898becd0697d778f36d9336253ae8">App\get_widgets()</a>, <a class="el" href="classRedFile.html#ae96d5caa2db7a461c57b24380fa87e28">RedFile\getETag()</a>, <a class="el" href="include_2group_8php.html#a06ec565d2b64e79044e7c1bf91a2a4ce">group_add()</a>, <a class="el" href="include_2group_8php.html#a5bd191d9692e6c34d48c0ede10810f09">group_get_members()</a>, <a class="el" href="include_2group_8php.html#a4118f498bbd1530c1d0136d016d197a5">group_rmv()</a>, <a class="el" href="include_2group_8php.html#afb802ae2ce73aae4bc36d157f7b6a92f">groups_containing()</a>, <a class="el" href="home_8php.html#ac4642c38b6f23a8d065dd4a75c620bde">home_init()</a>, <a class="el" href="identity_8php.html#a3570a4eb77332b292d394c4132cb8f03">identity_basic_export()</a>, <a class="el" href="identity_8php.html#ac9fcd5c4c371998790b5c55c3d0f4633">identity_check_service_class()</a>, <a class="el" href="import_8php.html#af17fef0410518f7eac205d0ea416eaa2">import_post()</a>, <a class="el" href="zot_8php.html#a528e97ca5d69c3b7f35c5d954afde315">import_xchan()</a>, <a class="el" href="item_8php.html#a5b1b36cb301a94b38150074f0d424e74">item_check_service_class()</a>, <a class="el" href="items_8php.html#a09d425596b9f8663472cf7474ad36d96">item_getfeedattach()</a>, <a class="el" href="items_8php.html#a649dc3e53ed794d0ead4b5d037f8d8d7">item_getfeedtags()</a>, <a class="el" href="item_8php.html#a693cd09805755ab85bbb5ecae69a48c3">item_post()</a>, <a class="el" href="items_8php.html#a2541e6861a56d145c9281877cc501615">item_store()</a>, <a class="el" href="items_8php.html#acf0bf7c9d21ac84f32effb754f7ad484">item_store_update()</a>, <a class="el" href="items_8php.html#aa2d3caa2f27720762b5c729e07df40fb">list_post_dates()</a>, <a class="el" href="dirsearch_8php.html#a985d410a170549429857af6ff2673149">list_public_sites()</a>, <a class="el" href="boot_8php.html#a719c7f3972d5f9268f37a41c76cd4ef6">load_contact_links()</a>, <a class="el" href="magic_8php.html#acea2cc792849ca2d71d4b689f66518bf">magic_init()</a>, <a class="el" href="mail_8php.html#acfc2cc0bf4e0b178207758384977f25a">mail_post()</a>, <a class="el" href="netgrowth_8php.html#a9b87bfc25a7cb11bc7f8e1fdd0310919">netgrowth_content()</a>, <a class="el" href="classFKOAuthDataStore.html#a434882f03e3cdb171ed89e09e337e934">FKOAuthDataStore\new_access_token()</a>, <a class="el" href="include_2follow_8php.html#ae387d4ae097c23d69f3247e7f08140c7">new_contact()</a>, <a class="el" href="text_8php.html#a4bbb7d00c05cd20b4e043424f322388f">normalise_link()</a>, <a class="el" href="notes_8php.html#a4dbd7b1f906440746af48b484d66535a">notes_init()</a>, <a class="el" href="include_2oembed_8php.html#a26bb4c1e330d2f94ea7b6ce2fe970cf3">oembed_format_object()</a>, <a class="el" href="oexchange_8php.html#a2d8b785cd7d041a4e6274f5af370cf26">oexchange_content()</a>, <a class="el" href="online_8php.html#a80e107c84eb722b0ca11d0413b96f9f7">online_init()</a>, <a class="el" href="include_2apps_8php.html#a32fe4ed9666228fd4b67dc487cc57a83">parse_app_description()</a>, <a class="el" href="text_8php.html#a98fd99dee3da8cf4c148dc04efe782ee">perms2str()</a>, <a class="el" href="include_2photos_8php.html#a6c40ef58aefef705a5adc84a40e97109">photo_upload()</a>, <a class="el" href="include_2photos_8php.html#aedccaf18282b26899d9549c29bd9d1b9">photos_albums_list()</a>, <a class="el" href="mod_2photos_8php.html#aa87382611a66ec5effdb2d78f13f5812">photos_content()</a>, <a class="el" href="include_2photos_8php.html#aa27b9e435dcc34e1009f56dc02c7ca51">photos_list_photos()</a>, <a class="el" href="poco_8php.html#a53def16f75e3d41f1d2bb7cfa4905498">poco_init()</a>, <a class="el" href="items_8php.html#a410f9c743877c125ca06312373346903">post_activity_item()</a>, <a class="el" href="post_8php.html#af4b48181ce773ef0cdfc972441445c34">post_init()</a>, <a class="el" href="post_8php.html#af59e6a1dc22d19d9257b01cd7ccedb75">post_post()</a>, <a class="el" href="items_8php.html#ad2abb4644ff1f20fefbc80326fe01cf0">posted_dates()</a>, <a class="el" href="include_2probe_8php.html#aa748dc73a6686c13826b1ee9d16c800d">probe_well_known()</a>, <a class="el" href="pubsites_8php.html#af614e279aab54065345bda6b03eafdf0">pubsites_content()</a>, <a class="el" href="receive_8php.html#a03d8fa26e77844020ba5602deca7d494">receive_post()</a>, <a class="el" href="reddav_8php.html#ae92ea0df1993f6a7bcd1b6efa6c1fb66">RedChannelList()</a>, <a class="el" href="reddav_8php.html#a5df0d09893f2e65dc5cf6bbab6cfb266">RedCollectionData()</a>, <a class="el" href="include_2message_8php.html#a751ffd6635022b2190f56154ee745752">send_message()</a>, <a class="el" href="include_2config_8php.html#ad6da879e4fb5b37d1e161d4e9be5c32a">set_config()</a>, <a class="el" href="include_2config_8php.html#a61591371cb18764138655d67dc817ab2">set_pconfig()</a>, <a class="el" href="include_2config_8php.html#afe117b70f1bba2f6348d9300b601f86e">set_xconfig()</a>, <a class="el" href="permissions_8php.html#aa8b7b102c653649d7a71b5a1c044d90d">site_default_perms()</a>, <a class="el" href="security_8php.html#a6126c77a1267e046ac59cf864613f011">stream_perms_api_uids()</a>, <a class="el" href="security_8php.html#a3ef2be6a7e4928e39d50059d6feb457c">stream_perms_xchans()</a>, <a class="el" href="spam_8php.html#a05861201147b9a538d006f0269255cf9">string_splitter()</a>, <a class="el" href="tagger_8php.html#a0e4a3eb177d1684553c547503d67161c">tagger_content()</a>, <a class="el" href="thing_8php.html#a8be23b1d475ec3d9291999221c674c80">thing_init()</a>, <a class="el" href="text_8php.html#a1360fed7f918d859daaca1c9f384f9af">unxmlify()</a>, <a class="el" href="socgraph_8php.html#a790690bb1a1d02483fe31632a160144d">update_suggestions()</a>, <a class="el" href="account_8php.html#ac5c570a2d46446bad4dd2501e9c5a4b1">user_allow()</a>, <a class="el" href="account_8php.html#ad07be417ac7eda939768804106ddea3d">user_approve()</a>, <a class="el" href="classRedBrowser.html#ad3418b8ccad42a1ef4ad0079e15b2e64">RedBrowser\userReadableSize()</a>, <a class="el" href="wall__upload_8php.html#a7cbe204244cf9e0380ee932263a74d8f">wall_upload_post()</a>, <a class="el" href="widgets_8php.html#a7b1e357b5a2027718470b77ec921fc65">widget_archive()</a>, <a class="el" href="include_2network_8php.html#aafd06c0a75402aefb06cfb9f9740fa37">z_fetch_url()</a>, <a class="el" href="include_2network_8php.html#a9129fd55e7fc175b4ea9a195cccc16bc">z_post_url()</a>, <a class="el" href="include_2attach_8php.html#aeb07968990e66a88c95483ca09a7f909">z_readdir()</a>, <a class="el" href="zfinger_8php.html#a8139b83a22ef98869adc10aa224027a0">zfinger_init()</a>, and <a class="el" href="zot_8php.html#ae7cec2b417b5858fd4a41070f843d1d7">zot_get_hublocs()</a>.</p>
+
+</div>
+</div>
+</div><!-- contents -->
+</div><!-- doc-content -->
+
diff --git a/doc/html/frphotohelper_8php.js b/doc/html/frphotohelper_8php.js
new file mode 100644
index 000000000..6a5e283d3
--- /dev/null
+++ b/doc/html/frphotohelper_8php.js
@@ -0,0 +1,27 @@
+var frphotohelper_8php =
+[
+ [ "$a", "frphotohelper_8php.html#acebf83966ef6d7e5645a6b62ba368f9f", null ],
+ [ "$args", "frphotohelper_8php.html#a67e94494731d99ed23b123e95175bc10", null ],
+ [ "$args", "frphotohelper_8php.html#acaefa2c3b286896f12eb55ae56e154af", null ],
+ [ "$args", "frphotohelper_8php.html#ad3310ef5d714f2baae2d882a1e22cf05", null ],
+ [ "$args", "frphotohelper_8php.html#adbc68ba8d9b3e0fac2d4c9fb683ef9f6", null ],
+ [ "$args", "frphotohelper_8php.html#ad4237a752a460152a5445abcb50238cf", null ],
+ [ "$args", "frphotohelper_8php.html#a44a64913242d4235e332cc69885c1460", null ],
+ [ "$args", "frphotohelper_8php.html#a6bb04aa9e43d97273fc84b6e308999c5", null ],
+ [ "$args", "frphotohelper_8php.html#ab93f92df528f98af0f4511720032b03c", null ],
+ [ "$args", "frphotohelper_8php.html#a1fba6794d8decbc7b957710af3179c10", null ],
+ [ "$args", "frphotohelper_8php.html#a88f7360b97eecb65e5e13708a093d172", null ],
+ [ "$args", "frphotohelper_8php.html#ad5fe4c1396829f3ce98eec037db698b2", null ],
+ [ "$args", "frphotohelper_8php.html#ab66e3756cdc86eaa61d42e675092c649", null ],
+ [ "$c", "frphotohelper_8php.html#ab73d7f4f2dae233dd561e7fdaab3a77b", null ],
+ [ "$ch", "frphotohelper_8php.html#a696b903bbc5c02914bdd402e91826eca", null ],
+ [ "$channel", "frphotohelper_8php.html#ac162139c764f53cc07f42b09432549ba", null ],
+ [ "$channel_address", "frphotohelper_8php.html#a1ce9aa56ce28b42f5db69d00d4c78972", null ],
+ [ "$cookies", "frphotohelper_8php.html#aef9f7eafd54f6e36423347bed723c67e", null ],
+ [ "$fr_server", "frphotohelper_8php.html#a2059b37bbca58d2613c70af2c19eddce", null ],
+ [ "$j", "frphotohelper_8php.html#a6f16db779ef3ccea921b277b5dc245d1", null ],
+ [ "$output", "frphotohelper_8php.html#a73004ce9cd673c1bfafd1dc351134797", null ],
+ [ "$photo_id", "frphotohelper_8php.html#a2d2299040f635cee8d5aac68230dd630", null ],
+ [ "$r", "frphotohelper_8php.html#a8abe176bc41afd728f32ba8c506cbd98", null ],
+ [ "$ret", "frphotohelper_8php.html#a83d5f232bed56a5af8173818b0bdf79d", null ]
+]; \ No newline at end of file
diff --git a/doc/html/frphotos_8php.html b/doc/html/frphotos_8php.html
new file mode 100644
index 000000000..d65b82b6d
--- /dev/null
+++ b/doc/html/frphotos_8php.html
@@ -0,0 +1,155 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<meta name="generator" content="Doxygen 1.8.3.1"/>
+<title>The Red Matrix: mod/frphotos.php File Reference</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="navtree.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="resize.js"></script>
+<script type="text/javascript" src="navtree.js"></script>
+<script type="text/javascript">
+ $(document).ready(initResizable);
+ $(window).load(resizeHeight);
+</script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/search.js"></script>
+<script type="text/javascript">
+ $(document).ready(function() { searchBox.OnSelectItem(0); });
+</script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+ <td id="projectlogo"><img alt="Logo" src="rm-64.png"/></td>
+ <td style="padding-left: 0.5em;">
+ <div id="projectname">The Red Matrix
+ </div>
+ </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.8.3.1 -->
+<script type="text/javascript">
+var searchBox = new SearchBox("searchBox", "search",false,'Search');
+</script>
+ <div id="navrow1" class="tabs">
+ <ul class="tablist">
+ <li><a href="index.html"><span>Main&#160;Page</span></a></li>
+ <li><a href="pages.html"><span>Related&#160;Pages</span></a></li>
+ <li><a href="namespaces.html"><span>Namespaces</span></a></li>
+ <li><a href="annotated.html"><span>Classes</span></a></li>
+ <li class="current"><a href="files.html"><span>Files</span></a></li>
+ <li>
+ <div id="MSearchBox" class="MSearchBoxInactive">
+ <span class="left">
+ <img id="MSearchSelect" src="search/mag_sel.png"
+ onmouseover="return searchBox.OnSearchSelectShow()"
+ onmouseout="return searchBox.OnSearchSelectHide()"
+ alt=""/>
+ <input type="text" id="MSearchField" value="Search" accesskey="S"
+ onfocus="searchBox.OnSearchFieldFocus(true)"
+ onblur="searchBox.OnSearchFieldFocus(false)"
+ onkeyup="searchBox.OnSearchFieldChange(event)"/>
+ </span><span class="right">
+ <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
+ </span>
+ </div>
+ </li>
+ </ul>
+ </div>
+ <div id="navrow2" class="tabs2">
+ <ul class="tablist">
+ <li><a href="files.html"><span>File&#160;List</span></a></li>
+ <li><a href="globals.html"><span>File&#160;Members</span></a></li>
+ </ul>
+ </div>
+</div><!-- top -->
+<div id="side-nav" class="ui-resizable side-nav-resizable">
+ <div id="nav-tree">
+ <div id="nav-tree-contents">
+ <div id="nav-sync" class="sync"></div>
+ </div>
+ </div>
+ <div id="splitbar" style="-moz-user-select:none;"
+ class="ui-resizable-handle">
+ </div>
+</div>
+<script type="text/javascript">
+$(document).ready(function(){initNavTree('frphotos_8php.html','');});
+</script>
+<div id="doc-content">
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+ onmouseover="return searchBox.OnSearchSelectShow()"
+ onmouseout="return searchBox.OnSearchSelectHide()"
+ onkeydown="return searchBox.OnSearchSelectKey(event)">
+<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark">&#160;</span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark">&#160;</span>Classes</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark">&#160;</span>Namespaces</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark">&#160;</span>Files</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark">&#160;</span>Functions</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark">&#160;</span>Variables</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark">&#160;</span>Pages</a></div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<iframe src="javascript:void(0)" frameborder="0"
+ name="MSearchResults" id="MSearchResults">
+</iframe>
+</div>
+
+<div class="header">
+ <div class="summary">
+<a href="#func-members">Functions</a> </div>
+ <div class="headertitle">
+<div class="title">frphotos.php File Reference</div> </div>
+</div><!--header-->
+<div class="contents">
+<table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="func-members"></a>
+Functions</h2></td></tr>
+<tr class="memitem:a4a33fadb181497eff301ee5132ec61d1"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="frphotos_8php.html#a4a33fadb181497eff301ee5132ec61d1">frphotos_init</a> (&amp;$a)</td></tr>
+<tr class="separator:a4a33fadb181497eff301ee5132ec61d1"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a6536248e7dda3f06cf37838064b961a4"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="frphotos_8php.html#a6536248e7dda3f06cf37838064b961a4">frphotos_content</a> (&amp;$a)</td></tr>
+<tr class="separator:a6536248e7dda3f06cf37838064b961a4"><td class="memSeparator" colspan="2">&#160;</td></tr>
+</table>
+<h2 class="groupheader">Function Documentation</h2>
+<a class="anchor" id="a6536248e7dda3f06cf37838064b961a4"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">frphotos_content </td>
+ <td>(</td>
+ <td class="paramtype">&amp;&#160;</td>
+ <td class="paramname"><em>$a</em></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+</div>
+</div>
+<a class="anchor" id="a4a33fadb181497eff301ee5132ec61d1"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">frphotos_init </td>
+ <td>(</td>
+ <td class="paramtype">&amp;&#160;</td>
+ <td class="paramname"><em>$a</em></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+</div>
+</div>
+</div><!-- contents -->
+</div><!-- doc-content -->
+
diff --git a/doc/html/frphotos_8php.js b/doc/html/frphotos_8php.js
new file mode 100644
index 000000000..179e98384
--- /dev/null
+++ b/doc/html/frphotos_8php.js
@@ -0,0 +1,5 @@
+var frphotos_8php =
+[
+ [ "frphotos_content", "frphotos_8php.html#a6536248e7dda3f06cf37838064b961a4", null ],
+ [ "frphotos_init", "frphotos_8php.html#a4a33fadb181497eff301ee5132ec61d1", null ]
+]; \ No newline at end of file
diff --git a/doc/html/full_8php.html b/doc/html/full_8php.html
index 1d4f388a1..711ab2fec 100644
--- a/doc/html/full_8php.html
+++ b/doc/html/full_8php.html
@@ -112,7 +112,7 @@ $(document).ready(function(){initNavTree('full_8php.html','');});
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="var-members"></a>
Variables</h2></td></tr>
-<tr class="memitem:a3987f5547ceb7e36a210a66a06241a5a"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="full_8php.html#a3987f5547ceb7e36a210a66a06241a5a">if</a> (<a class="el" href="boot_8php.html#a01353c9abebc3544ea080ac161729632">x</a>($<a class="el" href="mod__import_8php.html#a8db1899eeeb44dabd0904065b63627bb">page</a>,'htmlhead')) echo $<a class="el" href="mod__import_8php.html#a8db1899eeeb44dabd0904065b63627bb">page</a>['htmlhead']?&gt;&lt;/head &gt;&lt; body &gt;&lt; header &gt;&lt;?php if(<a class="el" href="boot_8php.html#a01353c9abebc3544ea080ac161729632">x</a>($<a class="el" href="mod__import_8php.html#a8db1899eeeb44dabd0904065b63627bb">page</a></td></tr>
+<tr class="memitem:a3987f5547ceb7e36a210a66a06241a5a"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="full_8php.html#a3987f5547ceb7e36a210a66a06241a5a">if</a> (<a class="el" href="boot_8php.html#ae97836b0547953be182a2334c9c91d3c">x</a>($<a class="el" href="mod__import_8php.html#a8db1899eeeb44dabd0904065b63627bb">page</a>,'htmlhead')) echo $<a class="el" href="mod__import_8php.html#a8db1899eeeb44dabd0904065b63627bb">page</a>['htmlhead']?&gt;&lt;/head &gt;&lt; body &gt;&lt; header &gt;&lt;?php if(<a class="el" href="boot_8php.html#ae97836b0547953be182a2334c9c91d3c">x</a>($<a class="el" href="mod__import_8php.html#a8db1899eeeb44dabd0904065b63627bb">page</a></td></tr>
<tr class="separator:a3987f5547ceb7e36a210a66a06241a5a"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<h2 class="groupheader">Variable Documentation</h2>
@@ -121,7 +121,7 @@ Variables</h2></td></tr>
<div class="memproto">
<table class="memname">
<tr>
- <td class="memname">if(<a class="el" href="boot_8php.html#a01353c9abebc3544ea080ac161729632">x</a>($<a class="el" href="mod__import_8php.html#a8db1899eeeb44dabd0904065b63627bb">page</a>,'htmlhead')) echo $<a class="el" href="mod__import_8php.html#a8db1899eeeb44dabd0904065b63627bb">page</a>['htmlhead']?&gt;&lt;/head &gt;&lt; body &gt;&lt; header &gt;&lt;?php if(<a class="el" href="boot_8php.html#a01353c9abebc3544ea080ac161729632">x</a>($<a class="el" href="mod__import_8php.html#a8db1899eeeb44dabd0904065b63627bb">page</a></td>
+ <td class="memname">if(<a class="el" href="boot_8php.html#ae97836b0547953be182a2334c9c91d3c">x</a>($<a class="el" href="mod__import_8php.html#a8db1899eeeb44dabd0904065b63627bb">page</a>,'htmlhead')) echo $<a class="el" href="mod__import_8php.html#a8db1899eeeb44dabd0904065b63627bb">page</a>['htmlhead']?&gt;&lt;/head &gt;&lt; body &gt;&lt; header &gt;&lt;?php if(<a class="el" href="boot_8php.html#ae97836b0547953be182a2334c9c91d3c">x</a>($<a class="el" href="mod__import_8php.html#a8db1899eeeb44dabd0904065b63627bb">page</a></td>
</tr>
</table>
</div><div class="memdoc">
diff --git a/doc/html/functions.html b/doc/html/functions.html
index 21db0a41a..be0509f05 100644
--- a/doc/html/functions.html
+++ b/doc/html/functions.html
@@ -156,21 +156,15 @@ $(document).ready(function(){initNavTree('functions.html','');});
: <a class="el" href="classApp.html#ab3da757abe5cb45bf88f07cc51a73b58">App</a>
</li>
<li>$auth
-: <a class="el" href="classRedBrowser.html#ab6d6d1e2a67e06b344a4cede1bd00b35">RedBrowser</a>
-, <a class="el" href="classRedDirectory.html#a9616af16cd19a18a6afebebcc2881c44">RedDirectory</a>
-, <a class="el" href="classRedFile.html#a4b5d0e33f919c6c175b30a55de6263f2">RedFile</a>
+: <a class="el" href="classRedMatrix_1_1RedDAV_1_1RedFile.html#a21b6e9d420c352f25610a33f57858215">RedMatrix\RedDAV\RedFile</a>
+, <a class="el" href="classRedMatrix_1_1RedDAV_1_1RedBrowser.html#ad19179bf4ac7f18fafa7e2e3df800142">RedMatrix\RedDAV\RedBrowser</a>
+, <a class="el" href="classRedMatrix_1_1RedDAV_1_1RedDirectory.html#aab6907e7fb7f9f7227f9cd42bdc84eb9">RedMatrix\RedDAV\RedDirectory</a>
</li>
<li>$baseurl
: <a class="el" href="classApp.html#ad5175536561021548ae8188e24c7b80c">App</a>
</li>
<li>$browser
-: <a class="el" href="classRedBasicAuth.html#af14337f1baad407f8a85d48205c0f30e">RedBasicAuth</a>
-</li>
-<li>$cached_profile_image
-: <a class="el" href="classApp.html#abe0e4fa91097f7a6588e1213a834121c">App</a>
-</li>
-<li>$cached_profile_picdate
-: <a class="el" href="classApp.html#aab4a685d15a363bb1d7edbbc20bfb94e">App</a>
+: <a class="el" href="classRedMatrix_1_1RedDAV_1_1RedBasicAuth.html#a167ae032bd2ad8e6caa2e1e1a6f1b5d3">RedMatrix\RedDAV\RedBasicAuth</a>
</li>
<li>$category
: <a class="el" href="classApp.html#a5cfc098c061b7d765add58fd2ca97445">App</a>
@@ -180,13 +174,13 @@ $(document).ready(function(){initNavTree('functions.html','');});
, <a class="el" href="classItem.html#acc32426c0f465391be8a99ad810c7b8e">Item</a>
</li>
<li>$channel_hash
-: <a class="el" href="classRedBasicAuth.html#ad5a3ea4dc4783b242d9dc6e76478b6ef">RedBasicAuth</a>
+: <a class="el" href="classRedMatrix_1_1RedDAV_1_1RedBasicAuth.html#a112ad78a863dc0e598b5f02c596798c0">RedMatrix\RedDAV\RedBasicAuth</a>
</li>
<li>$channel_id
-: <a class="el" href="classRedBasicAuth.html#a2dab393650d1573e3515969a153e8354">RedBasicAuth</a>
+: <a class="el" href="classRedMatrix_1_1RedDAV_1_1RedBasicAuth.html#abe1defedb90ac8e3b6487e124e625521">RedMatrix\RedDAV\RedBasicAuth</a>
</li>
<li>$channel_name
-: <a class="el" href="classRedBasicAuth.html#a438ab125b6ef46581947e35d49cdebac">RedBasicAuth</a>
+: <a class="el" href="classRedMatrix_1_1RedDAV_1_1RedBasicAuth.html#a76fdb7fd5dd7376155abb5a58cd6fd69">RedMatrix\RedDAV\RedBasicAuth</a>
</li>
<li>$children
: <a class="el" href="classItem.html#a80dcd0fb7673776c0967839d429c2a0f">Item</a>
@@ -225,31 +219,30 @@ $(document).ready(function(){initNavTree('functions.html','');});
<li>$conversation
: <a class="el" href="classItem.html#a007424e3e3171dcfb4312a02161da6cd">Item</a>
</li>
+<li>$credentials
+: <a class="el" href="classRedMatrix_1_1Import_1_1Import.html#a864aac9fadb4846f5d9f840e8e0f440f">RedMatrix\Import\Import</a>
+</li>
<li>$css_sources
: <a class="el" href="classApp.html#a6f55d087e1ff4710132c1b0863faa2ee">App</a>
</li>
-<li>$curl_code
-: <a class="el" href="classApp.html#a256360c9184fed6d7556e0bc0a835d7f">App</a>
-</li>
-<li>$curl_headers
-: <a class="el" href="classApp.html#af5007c42a693afd9c4899c243b2e1363">App</a>
-</li>
<li>$d
: <a class="el" href="classTemplate.html#a8469ab2988b6be2681516dc4b4e07d38">Template</a>
</li>
<li>$data
: <a class="el" href="classApp.html#a0ce85be198e46570366cb3344f3c55b8">App</a>
, <a class="el" href="classItem.html#aec24e233f9098f902b1e57e60dcb2019">Item</a>
-, <a class="el" href="classRedFile.html#a2ff12032b45538353eded9809d3b7550">RedFile</a>
+, <a class="el" href="classRedMatrix_1_1RedDAV_1_1RedFile.html#a235700e2dfbe21dc41613d36e30e8acc">RedMatrix\RedDAV\RedFile</a>
</li>
<li>$db
-: <a class="el" href="classApp.html#a330410a288f3393d53772f5e98f857ea">App</a>
-, <a class="el" href="classdba__driver.html#a3033b5f1c2716b52202faeaae2592fe6">dba_driver</a>
+: <a class="el" href="classdba__driver.html#a3033b5f1c2716b52202faeaae2592fe6">dba_driver</a>
</li>
<li>$debug
: <a class="el" href="classdba__driver.html#af48e2afeded5285766bf92e22123ed03">dba_driver</a>
, <a class="el" href="classTemplate.html#afc4afb6f89bebcd5480022312a56cb4a">Template</a>
</li>
+<li>$display_mode
+: <a class="el" href="classItem.html#a88a99e2d1245925867f249f543358e72">Item</a>
+</li>
<li>$done
: <a class="el" href="classTemplate.html#abda4c8d049f70553338eae7c905e9d5c">Template</a>
</li>
@@ -258,13 +251,13 @@ $(document).ready(function(){initNavTree('functions.html','');});
, <a class="el" href="classdba__driver.html#a84675d28c7bd9b7290dd37e66dbd216c">dba_driver</a>
</li>
<li>$ext_path
-: <a class="el" href="classRedDirectory.html#a0f113244cd85c17848df991001d024f4">RedDirectory</a>
+: <a class="el" href="classRedMatrix_1_1RedDAV_1_1RedDirectory.html#adf8735b3118cdf2f42416edaf42b82e9">RedMatrix\RedDAV\RedDirectory</a>
</li>
<li>$filename
: <a class="el" href="classFriendicaSmarty.html#a33fabbd4d6eef869df496adf357ae690">FriendicaSmarty</a>
</li>
<li>$folder_hash
-: <a class="el" href="classRedDirectory.html#aa10254abf177bb2a0e4a88495725e09b">RedDirectory</a>
+: <a class="el" href="classRedMatrix_1_1RedDAV_1_1RedDirectory.html#a2fc4e6b9be2108bbaa1ca1a03fd6d44e">RedMatrix\RedDAV\RedDirectory</a>
</li>
<li>$force_max_items
: <a class="el" href="classApp.html#ae3f47830543d0d902f66913def8db66b">App</a>
@@ -293,6 +286,15 @@ $(document).ready(function(){initNavTree('functions.html','');});
<li>$interactive
: <a class="el" href="classApp.html#a4c7cfc62d39508086cf300dc2e39c4df">App</a>
</li>
+<li>$is_sys
+: <a class="el" href="classApp.html#a1f60d19d47021629faac7a0a6d917e94">App</a>
+</li>
+<li>$itemlist
+: <a class="el" href="classRedMatrix_1_1Import_1_1Import.html#ad0d2bdc3b388220479063915b4f5c2fc">RedMatrix\Import\Import</a>
+</li>
+<li>$items
+: <a class="el" href="classRedMatrix_1_1Import_1_1Import.html#a0a05dac405ccc5b617b7b7b3c8ed783c">RedMatrix\Import\Import</a>
+</li>
<li>$js_sources
: <a class="el" href="classApp.html#a11e24b3ed9b33ffee7dd41d110b4366d">App</a>
</li>
@@ -318,8 +320,8 @@ $(document).ready(function(){initNavTree('functions.html','');});
: <a class="el" href="classApp.html#a6e4f0fbfa3cf6c11baebe22a03db6165">App</a>
</li>
<li>$name
-: <a class="el" href="classFriendicaSmartyEngine.html#aaba6a42101bc9ae32e36b7fa2e243f02">FriendicaSmartyEngine</a>
-, <a class="el" href="classRedFile.html#acc48c05cd5a70951cb3c615ad84f03ba">RedFile</a>
+: <a class="el" href="classRedMatrix_1_1RedDAV_1_1RedFile.html#ab722dcb8c4598426c81fa2b2e4fad5f2">RedMatrix\RedDAV\RedFile</a>
+, <a class="el" href="classFriendicaSmartyEngine.html#aaba6a42101bc9ae32e36b7fa2e243f02">FriendicaSmartyEngine</a>
, <a class="el" href="classTemplate.html#a6eb301a51cc94d8b94f4548fbad85eae">Template</a>
</li>
<li>$nav_sel
@@ -330,20 +332,20 @@ $(document).ready(function(){initNavTree('functions.html','');});
</li>
<li>$observer
: <a class="el" href="classConversation.html#a8748445aa26047ebed5141f3c3cbc244">Conversation</a>
-, <a class="el" href="classRedBasicAuth.html#aa75dc43b59adc98e38a98517d3fd35d1">RedBasicAuth</a>
+, <a class="el" href="classRedMatrix_1_1RedDAV_1_1RedBasicAuth.html#a605aa09565a097316b80f0d17d6b5823">RedMatrix\RedDAV\RedBasicAuth</a>
, <a class="el" href="classApp.html#a4ffe529fb14389f7fedf5fdc5f722e7f">App</a>
</li>
<li>$os_path
-: <a class="el" href="classRedDirectory.html#a3c148c07ad909985125aa4926d8d0021">RedDirectory</a>
+: <a class="el" href="classRedMatrix_1_1RedDAV_1_1RedDirectory.html#a17ea47e34cb76b6e79f36ebed790d76a">RedMatrix\RedDAV\RedDirectory</a>
</li>
<li>$owner_id
-: <a class="el" href="classRedBasicAuth.html#a09c1488a0b290f5a54dc15180c5690d7">RedBasicAuth</a>
+: <a class="el" href="classRedMatrix_1_1RedDAV_1_1RedBasicAuth.html#a1a23c349cc4699a8474505972684ea9c">RedMatrix\RedDAV\RedBasicAuth</a>
</li>
<li>$owner_name
: <a class="el" href="classItem.html#a9594df6014b0b6f45364ea7a34510130">Item</a>
</li>
<li>$owner_nick
-: <a class="el" href="classRedBasicAuth.html#a8d09b8d784cc810a0b3be580d05106a7">RedBasicAuth</a>
+: <a class="el" href="classRedMatrix_1_1RedDAV_1_1RedBasicAuth.html#aad0ef0cc05c407de84dbfbf2050bbbbe">RedMatrix\RedDAV\RedBasicAuth</a>
</li>
<li>$owner_photo
: <a class="el" href="classItem.html#a078f95b4134ce3a1df344cf8d386f986">Item</a>
@@ -397,7 +399,7 @@ $(document).ready(function(){initNavTree('functions.html','');});
: <a class="el" href="classApp.html#a244b2d53b21be269aad2269d23192f95">App</a>
</li>
<li>$red_path
-: <a class="el" href="classRedDirectory.html#acb32b8df27538c57772824a745e751d7">RedDirectory</a>
+: <a class="el" href="classRedMatrix_1_1RedDAV_1_1RedDirectory.html#a4bba2e56bc8ec3e05f05eae46f56f36d">RedMatrix\RedDAV\RedDirectory</a>
</li>
<li>$redirect_url
: <a class="el" href="classItem.html#a5b561415861f5b89b0733aacfe0428d1">Item</a>
@@ -406,7 +408,7 @@ $(document).ready(function(){initNavTree('functions.html','');});
: <a class="el" href="classTemplate.html#a4e86b566c3f728e95ce5db1b33665c10">Template</a>
</li>
<li>$root_dir
-: <a class="el" href="classRedDirectory.html#ad87c514a307ec97ba0f1372e9bcfa6a4">RedDirectory</a>
+: <a class="el" href="classRedMatrix_1_1RedDAV_1_1RedDirectory.html#a438066fb1565fbcffa22c12d5ce23695">RedMatrix\RedDAV\RedDirectory</a>
</li>
<li>$scheme
: <a class="el" href="classApp.html#ad082d63acc078e5bf23825a03bdd6a76">App</a>
@@ -417,6 +419,9 @@ $(document).ready(function(){initNavTree('functions.html','');});
<li>$sourcename
: <a class="el" href="classApp.html#a13710907ef62554a0b4dd8a5eaa2eb11">App</a>
</li>
+<li>$src_items
+: <a class="el" href="classRedMatrix_1_1Import_1_1Import.html#a88c2eeba8d0cba3e7c12a2c45ba0fbc6">RedMatrix\Import\Import</a>
+</li>
<li>$stack
: <a class="el" href="classTemplate.html#a6f0efc256688c36110180b501067ff11">Template</a>
</li>
@@ -448,7 +453,7 @@ $(document).ready(function(){initNavTree('functions.html','');});
: <a class="el" href="classConversation.html#a41f4a549e6a99f98935c4742addd22c8">Conversation</a>
</li>
<li>$timezone
-: <a class="el" href="classRedBasicAuth.html#a2d0246ed446fd5e55c17938b4ce6ac47">RedBasicAuth</a>
+: <a class="el" href="classRedMatrix_1_1RedDAV_1_1RedBasicAuth.html#a849c99cf0a7ad065d630c8a30106ad5e">RedMatrix\RedDAV\RedBasicAuth</a>
, <a class="el" href="classApp.html#ab35b01a366a2ea95725e97af278f87ab">App</a>
</li>
<li>$toplevel
@@ -478,9 +483,6 @@ $(document).ready(function(){initNavTree('functions.html','');});
<li>$wall_to_wall
: <a class="el" href="classItem.html#a5d29ddecc073151a65a8e2ea2f6e4189">Item</a>
</li>
-<li>$widgetlist
-: <a class="el" href="classApp.html#a4833bee2eae4ad1691a04fa19e11a766">App</a>
-</li>
<li>$widgets
: <a class="el" href="classApp.html#aa5a87c46ab3fee21362c466bf78042ef">App</a>
</li>
diff --git a/doc/html/functions_0x5f.html b/doc/html/functions_0x5f.html
index 7698f8773..e94eaa1c4 100644
--- a/doc/html/functions_0x5f.html
+++ b/doc/html/functions_0x5f.html
@@ -143,15 +143,15 @@ $(document).ready(function(){initNavTree('functions_0x5f.html','');});
<li>__construct()
: <a class="el" href="classApp.html#af6d39f63fb7116bbeb04e51696f99474">App</a>
, <a class="el" href="classConversation.html#af84ea6ccd72214c9bb4c504461cc8b09">Conversation</a>
+, <a class="el" href="classItem.html#a248f45871ecfe82a08d1d4c0769b2eb2">Item</a>
+, <a class="el" href="classRedMatrix_1_1RedDAV_1_1RedDirectory.html#a76b58fe5223e565c97f1b9af93031a99">RedMatrix\RedDAV\RedDirectory</a>
+, <a class="el" href="classRedMatrix_1_1RedDAV_1_1RedFile.html#a05798eac84c578152ff21758261c6ac6">RedMatrix\RedDAV\RedFile</a>
+, <a class="el" href="classFKOAuth1.html#a2f1276872329a6f0b704ccda1a4b9fa6">FKOAuth1</a>
, <a class="el" href="classFriendicaSmarty.html#af12091b920b95eeef1218cbc48066ca6">FriendicaSmarty</a>
-, <a class="el" href="classphoto__driver.html#ac6e85f8e507cab4e755ed7acdec401ae">photo_driver</a>
-, <a class="el" href="classRedDirectory.html#a1e35e3cd31d2a15250655e4cafdea180">RedDirectory</a>
, <a class="el" href="classFriendicaSmartyEngine.html#ab7c305bd8c386c2944e4dc9136cea5b6">FriendicaSmartyEngine</a>
-, <a class="el" href="classRedFile.html#a9a67bdb34c9db6ce144b3f371148b183">RedFile</a>
-, <a class="el" href="classRedBrowser.html#a4b76be9ccef0262cf78fffb4129eda93">RedBrowser</a>
, <a class="el" href="classdba__driver.html#af3541d13ccb7a3eddfc03e253c746186">dba_driver</a>
-, <a class="el" href="classItem.html#a248f45871ecfe82a08d1d4c0769b2eb2">Item</a>
-, <a class="el" href="classFKOAuth1.html#a2f1276872329a6f0b704ccda1a4b9fa6">FKOAuth1</a>
+, <a class="el" href="classphoto__driver.html#ac6e85f8e507cab4e755ed7acdec401ae">photo_driver</a>
+, <a class="el" href="classRedMatrix_1_1RedDAV_1_1RedBrowser.html#a8161f2a0be205412e263c947b5ec46c5">RedMatrix\RedDAV\RedBrowser</a>
</li>
<li>__destruct()
: <a class="el" href="classdba__driver.html#a1a8bc9dc839a6320a0e07d8047a6b721">dba_driver</a>
diff --git a/doc/html/functions_0x63.html b/doc/html/functions_0x63.html
index cdcca330f..7070c95ef 100644
--- a/doc/html/functions_0x63.html
+++ b/doc/html/functions_0x63.html
@@ -148,13 +148,14 @@ $(document).ready(function(){initNavTree('functions_0x63.html','');});
: <a class="el" href="classItem.html#abcdb0ea9bcd1576bc99bba9b8f700bb8">Item</a>
</li>
<li>childExists()
-: <a class="el" href="classRedDirectory.html#a5e3fc08b2bf9f61cea4d2ccae0495bec">RedDirectory</a>
+: <a class="el" href="classRedMatrix_1_1RedDAV_1_1RedDirectory.html#a964b13fde1a5da6f76b51ca5519234dc">RedMatrix\RedDAV\RedDirectory</a>
</li>
<li>clear()
: <a class="el" href="classCache.html#ab14d0f4bdf7116a94d545c574b38f568">Cache</a>
</li>
<li>close()
: <a class="el" href="classdba__mysqli.html#acb38f2c851187ad632ecfab30fdfab55">dba_mysqli</a>
+, <a class="el" href="classdba__postgres.html#a731d8648b41b8a126f6b99bdd5414058">dba_postgres</a>
, <a class="el" href="classdba__driver.html#a5afa54172f3c837df61643f8f5b2c975">dba_driver</a>
, <a class="el" href="classdba__mysql.html#a850586714ef897bd25f643c89b4ef76e">dba_mysql</a>
</li>
@@ -166,24 +167,41 @@ $(document).ready(function(){initNavTree('functions_0x63.html','');});
: <a class="el" href="classProtoDriver.html#af66171aa7dab9b62cee915cb4f1abe1b">ProtoDriver</a>
, <a class="el" href="classZotDriver.html#a2e15ff09772f0608203dad1c98299394">ZotDriver</a>
</li>
+<li>concat()
+: <a class="el" href="classdba__driver.html#ab9982f38a02f008b127a0f3ccc1e99f4">dba_driver</a>
+, <a class="el" href="classdba__postgres.html#a7ea3f24ad260c1e21588f8b5af595caa">dba_postgres</a>
+</li>
<li>connect()
: <a class="el" href="classdba__driver.html#ae533e62a240a793f17aef5ab4ef10edc">dba_driver</a>
-, <a class="el" href="classdba__mysqli.html#add062bd93961e5f0194d94820e9a51b1">dba_mysqli</a>
, <a class="el" href="classdba__mysql.html#a1887338627ce0e28786839363014bd0b">dba_mysql</a>
+, <a class="el" href="classdba__mysqli.html#add062bd93961e5f0194d94820e9a51b1">dba_mysqli</a>
+, <a class="el" href="classdba__postgres.html#ab36244320f5b71dba92d9318ccf3f34e">dba_postgres</a>
+</li>
+<li>convert_child()
+: <a class="el" href="classRedMatrix_1_1Import_1_1Import.html#a5434325afb2c633c52540127d717800a">RedMatrix\Import\Import</a>
+</li>
+<li>convert_item()
+: <a class="el" href="classRedMatrix_1_1Import_1_1Import.html#a107703a43a1b0ceb2af7ae470cb3f218">RedMatrix\Import\Import</a>
+</li>
+<li>convert_taxonomy()
+: <a class="el" href="classRedMatrix_1_1Import_1_1Import.html#addf6e53dacd971eaab49be4b17a767d6">RedMatrix\Import\Import</a>
</li>
<li>count_descendants()
: <a class="el" href="classItem.html#aca1e66988ed00cd627b2a359b72cd0ae">Item</a>
</li>
+<li>count_unseen_descendants()
+: <a class="el" href="classItem.html#ae0c48b2fed5558642549cabd547fc4f3">Item</a>
+</li>
<li>createDirectory()
-: <a class="el" href="classRedDirectory.html#a986936910f0216887a25e28916c166c7">RedDirectory</a>
+: <a class="el" href="classRedMatrix_1_1RedDAV_1_1RedDirectory.html#aca0e8d574ea66a0e210f571700663c62">RedMatrix\RedDAV\RedDirectory</a>
</li>
<li>createFile()
-: <a class="el" href="classRedDirectory.html#a2d12d99d38a6a75fc9a830b2f7fc0bf0">RedDirectory</a>
+: <a class="el" href="classRedMatrix_1_1RedDAV_1_1RedDirectory.html#a58e750256cdc2f0f79fbe8d5463ffefe">RedMatrix\RedDAV\RedDirectory</a>
</li>
<li>cropImage()
: <a class="el" href="classphoto__driver.html#a2e6e61f1e356a90bc978f4404a77137e">photo_driver</a>
-, <a class="el" href="classphoto__gd.html#ab2232d775c8bacf66773a03308105f0c">photo_gd</a>
, <a class="el" href="classphoto__imagick.html#a2f33a03a89497a2b2768e29736d4a8a4">photo_imagick</a>
+, <a class="el" href="classphoto__gd.html#ab2232d775c8bacf66773a03308105f0c">photo_gd</a>
</li>
</ul>
</div><!-- contents -->
diff --git a/doc/html/functions_0x64.html b/doc/html/functions_0x64.html
index 7c8b04fa0..2bada26c8 100644
--- a/doc/html/functions_0x64.html
+++ b/doc/html/functions_0x64.html
@@ -144,7 +144,7 @@ $(document).ready(function(){initNavTree('functions_0x64.html','');});
: <a class="el" href="classdba__driver.html#adcc1f8955120fec0708bce39202d0422">dba_driver</a>
</li>
<li>delete()
-: <a class="el" href="classRedFile.html#aef71c9eaac7052be7dc8602eb12171e7">RedFile</a>
+: <a class="el" href="classRedMatrix_1_1RedDAV_1_1RedFile.html#ab7ab7ba81fab28eb02382cfdfd80ecfe">RedMatrix\RedDAV\RedFile</a>
</li>
<li>deliver()
: <a class="el" href="classZotDriver.html#a876e3e0e4cad83c0b58c8696b344be6f">ZotDriver</a>
diff --git a/doc/html/functions_0x65.html b/doc/html/functions_0x65.html
index f9b5ba9bd..efb086291 100644
--- a/doc/html/functions_0x65.html
+++ b/doc/html/functions_0x65.html
@@ -142,8 +142,16 @@ $(document).ready(function(){initNavTree('functions_0x65.html','');});
<h3><a class="anchor" id="index_e"></a>- e -</h3><ul>
<li>escape()
: <a class="el" href="classdba__driver.html#afc95ffa103a3290581b537670cde5311">dba_driver</a>
-, <a class="el" href="classdba__mysqli.html#a27d6a748af7f80028801306e7ea33f64">dba_mysqli</a>
, <a class="el" href="classdba__mysql.html#a99a7691ea6cb1300031fb6549379066e">dba_mysql</a>
+, <a class="el" href="classdba__postgres.html#a7108eaaae7cc2fb236212041afc9ac0f">dba_postgres</a>
+, <a class="el" href="classdba__mysqli.html#a27d6a748af7f80028801306e7ea33f64">dba_mysqli</a>
+</li>
+<li>escape_identifier()
+: <a class="el" href="classdba__postgres.html#ab2e44e9f41d05e585afd873d18e8c127">dba_postgres</a>
+</li>
+<li>escapebin()
+: <a class="el" href="classdba__driver.html#a7dbe8318587ff1694825042bf58f4fbd">dba_driver</a>
+, <a class="el" href="classdba__postgres.html#a8d2c6d8c92fe6f074452876483dd17fc">dba_postgres</a>
</li>
</ul>
</div><!-- contents -->
diff --git a/doc/html/functions_0x66.html b/doc/html/functions_0x66.html
index c0135d718..75316b566 100644
--- a/doc/html/functions_0x66.html
+++ b/doc/html/functions_0x66.html
@@ -141,10 +141,10 @@ $(document).ready(function(){initNavTree('functions_0x66.html','');});
<h3><a class="anchor" id="index_f"></a>- f -</h3><ul>
<li>findAttachHash()
-: <a class="el" href="classRedBrowser.html#ae4edd4e10c709e2624c1aeb47b0440c5">RedBrowser</a>
+: <a class="el" href="classRedMatrix_1_1RedDAV_1_1RedBrowser.html#ad4bc0516533c62733f38043a37267d78">RedMatrix\RedDAV\RedBrowser</a>
</li>
<li>findAttachIdByHash()
-: <a class="el" href="classRedBrowser.html#a20d81230645ddca08a88bfd9ea9f88f1">RedBrowser</a>
+: <a class="el" href="classRedMatrix_1_1RedDAV_1_1RedBrowser.html#a0733e38e254474d9a456825e72f1ddfd">RedMatrix\RedDAV\RedBrowser</a>
</li>
<li>flip()
: <a class="el" href="classphoto__gd.html#a44cedef376044018702d9355ddc813ce">photo_gd</a>
diff --git a/doc/html/functions_0x67.html b/doc/html/functions_0x67.html
index 99d35cdc0..c100ff9b0 100644
--- a/doc/html/functions_0x67.html
+++ b/doc/html/functions_0x67.html
@@ -144,10 +144,10 @@ $(document).ready(function(){initNavTree('functions_0x67.html','');});
: <a class="el" href="classFKOAuthDataStore.html#aa1a268be88ad3979bb4cc35bbb4dc819">FKOAuthDataStore</a>
</li>
<li>generateDirectoryIndex()
-: <a class="el" href="classRedBrowser.html#a1f7daf50bb9bfcde7345b3b1908dbd7e">RedBrowser</a>
+: <a class="el" href="classRedMatrix_1_1RedDAV_1_1RedBrowser.html#af764d5f14df751f9ec86c34fab300c09">RedMatrix\RedDAV\RedBrowser</a>
</li>
<li>get()
-: <a class="el" href="classRedFile.html#a7c868dfcef6c70cd0e24cf3caa2c3535">RedFile</a>
+: <a class="el" href="classRedMatrix_1_1RedDAV_1_1RedFile.html#a7241beecd01f5bb4e74659863dd85bd8">RedMatrix\RedDAV\RedFile</a>
, <a class="el" href="classCache.html#a70392b109331897bf9fdd7f1960e21de">Cache</a>
</li>
<li>get_account()
@@ -169,7 +169,8 @@ $(document).ready(function(){initNavTree('functions_0x67.html','');});
: <a class="el" href="classItem.html#a632185dd25c5caf277067c76230a4320">Item</a>
</li>
<li>get_children()
-: <a class="el" href="classItem.html#aa0ee775ec94abccec6c798428835d001">Item</a>
+: <a class="el" href="classRedMatrix_1_1Import_1_1Import.html#a57561904b0f127e0d9a3e2c33688daf8">RedMatrix\Import\Import</a>
+, <a class="el" href="classItem.html#aa0ee775ec94abccec6c798428835d001">Item</a>
</li>
<li>get_cipher()
: <a class="el" href="classConversation.html#a4aab60bb39fa6761b6cacdc8d9da2901">Conversation</a>
@@ -183,12 +184,18 @@ $(document).ready(function(){initNavTree('functions_0x67.html','');});
<li>get_conversation()
: <a class="el" href="classItem.html#a0c301aaed2b7d682728d18db3a22afa3">Item</a>
</li>
+<li>get_credentials()
+: <a class="el" href="classRedMatrix_1_1Import_1_1Import.html#a24134929d9a8a682da2036a0bf326367">RedMatrix\Import\Import</a>
+</li>
<li>get_data()
: <a class="el" href="classItem.html#ad3638f93065693c1f69eb349feb1b7aa">Item</a>
</li>
<li>get_data_value()
: <a class="el" href="classItem.html#ac6f1c96cc82a0dfb7e881fc70309ea3c">Item</a>
</li>
+<li>get_display_mode()
+: <a class="el" href="classItem.html#a23d4057883f8ed888c0c2ff12d8aa5d0">Item</a>
+</li>
<li>get_FormatsMap()
: <a class="el" href="classphoto__imagick.html#aef020d929f66f4370e33fc158c8eebd4">photo_imagick</a>
</li>
@@ -201,17 +208,32 @@ $(document).ready(function(){initNavTree('functions_0x67.html','');});
<li>get_id()
: <a class="el" href="classItem.html#ac0f27e58532612f6e7a54c8a621b9b92">Item</a>
</li>
+<li>get_install_script()
+: <a class="el" href="classdba__driver.html#a8d6a79d39d7eaee5aea4e952c4529d48">dba_driver</a>
+</li>
<li>get_intltext_template()
: <a class="el" href="classFriendicaSmartyEngine.html#a35ec0ee828c36640ea25296bcb84a118">FriendicaSmartyEngine</a>
</li>
+<li>get_item()
+: <a class="el" href="classRedMatrix_1_1Import_1_1Import.html#a27987a41cb703a796f1821baeb4774a2">RedMatrix\Import\Import</a>
+</li>
+<li>get_item_ident()
+: <a class="el" href="classRedMatrix_1_1Import_1_1Import.html#a772c28edf36aaf8e66007a95004c4059">RedMatrix\Import\Import</a>
+</li>
+<li>get_itemlist()
+: <a class="el" href="classRedMatrix_1_1Import_1_1Import.html#a855cd5a79b95d269ae8737fae774e3bc">RedMatrix\Import\Import</a>
+</li>
<li>get_markup_template()
-: <a class="el" href="classFriendicaSmartyEngine.html#aab5994077fc3a64222e41b28e2bd8d88">FriendicaSmartyEngine</a>
+: <a class="el" href="classTemplate.html#afd97b4b1e7754a550e67c0ea79159059">Template</a>
, <a class="el" href="interfaceITemplateEngine.html#aaf2698adbf46c073c24b162fe1b1c442">ITemplateEngine</a>
-, <a class="el" href="classTemplate.html#afd97b4b1e7754a550e67c0ea79159059">Template</a>
+, <a class="el" href="classFriendicaSmartyEngine.html#aab5994077fc3a64222e41b28e2bd8d88">FriendicaSmartyEngine</a>
</li>
<li>get_mode()
: <a class="el" href="classConversation.html#a87a0d704d5f2b1a008cc2e9ce06a1bcd">Conversation</a>
</li>
+<li>get_null_date()
+: <a class="el" href="classdba__driver.html#a65a5c7b355ab5529a43049e160006426">dba_driver</a>
+</li>
<li>get_observer()
: <a class="el" href="classApp.html#a1ad3bb1b68439b3b7cbe630918e618d2">App</a>
, <a class="el" href="classConversation.html#ae3d4190142e12b57051f11f2911f77a0">Conversation</a>
@@ -240,6 +262,9 @@ $(document).ready(function(){initNavTree('functions_0x67.html','');});
<li>get_redirect_url()
: <a class="el" href="classItem.html#a428f448f89a8629055ea3294eb942aea">Item</a>
</li>
+<li>get_taxonomy()
+: <a class="el" href="classRedMatrix_1_1Import_1_1Import.html#ae3c6472bea1a44025bc2e152604eb20c">RedMatrix\Import\Import</a>
+</li>
<li>get_template()
: <a class="el" href="classItem.html#aba23a0a9d89e316d2b343cc46d695d91">Item</a>
</li>
@@ -263,22 +288,31 @@ $(document).ready(function(){initNavTree('functions_0x67.html','');});
: <a class="el" href="classApp.html#a871898becd0697d778f36d9336253ae8">App</a>
</li>
<li>getAssetUrl()
-: <a class="el" href="classRedBrowser.html#a87529b4988a7777b49616f5c0a1c55d3">RedBrowser</a>
+: <a class="el" href="classRedMatrix_1_1RedDAV_1_1RedBrowser.html#acaa792c08d24e9dc2919759e92ba037d">RedMatrix\RedDAV\RedBrowser</a>
</li>
<li>getChild()
-: <a class="el" href="classRedDirectory.html#aaa20f0f44da23781917af8170c0a2569">RedDirectory</a>
+: <a class="el" href="classRedMatrix_1_1RedDAV_1_1RedDirectory.html#a1a37850bdd1f188abd6160559698d5d7">RedMatrix\RedDAV\RedDirectory</a>
</li>
<li>getChildren()
-: <a class="el" href="classRedDirectory.html#aa42d3065f6f065b17db87146a7cb031a">RedDirectory</a>
+: <a class="el" href="classRedMatrix_1_1RedDAV_1_1RedDirectory.html#a9b9a0b5bfa4de1f78e6cafaa534b6f6a">RedMatrix\RedDAV\RedDirectory</a>
</li>
<li>getContentType()
-: <a class="el" href="classRedFile.html#a26416827eb68554d033d1e2e5cc6dd3b">RedFile</a>
+: <a class="el" href="classRedMatrix_1_1RedDAV_1_1RedFile.html#af5c88b75d0c1f590af03755534cb167e">RedMatrix\RedDAV\RedFile</a>
+</li>
+<li>getCurrentUser()
+: <a class="el" href="classRedMatrix_1_1RedDAV_1_1RedBasicAuth.html#aa0b2a5fa9186d7dc0e637f1ecb379c42">RedMatrix\RedDAV\RedBasicAuth</a>
</li>
<li>getDir()
-: <a class="el" href="classRedDirectory.html#a70173d4458572d95e586b2037d2fd2f4">RedDirectory</a>
+: <a class="el" href="classRedMatrix_1_1RedDAV_1_1RedDirectory.html#a825dc5f3e0f83f50736c16daa6a4809d">RedMatrix\RedDAV\RedDirectory</a>
+</li>
+<li>getdriver()
+: <a class="el" href="classdba__postgres.html#ae0f834413e57cf0735ae7b64b2f71e68">dba_postgres</a>
+, <a class="el" href="classdba__mysql.html#a31011edd67b6b394355bf04cedb498d0">dba_mysql</a>
+, <a class="el" href="classdba__mysqli.html#a6eb6c578c6928908321e5e6da866e1db">dba_mysqli</a>
+, <a class="el" href="classdba__driver.html#a02165fc4bee63d040ebd963a4fa82a14">dba_driver</a>
</li>
<li>getETag()
-: <a class="el" href="classRedFile.html#ae96d5caa2db7a461c57b24380fa87e28">RedFile</a>
+: <a class="el" href="classRedMatrix_1_1RedDAV_1_1RedFile.html#a9f14682acf3ccb70df5af5dd0687c689">RedMatrix\RedDAV\RedFile</a>
</li>
<li>getExt()
: <a class="el" href="classphoto__driver.html#aa2efb5b2a6af3fd67e3f1c2b9852a5ba">photo_driver</a>
@@ -286,24 +320,30 @@ $(document).ready(function(){initNavTree('functions_0x67.html','');});
<li>getHeight()
: <a class="el" href="classphoto__driver.html#af769e9abb144e57002c59aa2aa8f3468">photo_driver</a>
</li>
+<li>getIconFromType()
+: <a class="el" href="classRedMatrix_1_1RedDAV_1_1RedBrowser.html#a810af4506cb3247e0ea7b0c4accbbc7a">RedMatrix\RedDAV\RedBrowser</a>
+</li>
<li>getImage()
-: <a class="el" href="classphoto__gd.html#a86757ba021fd80d1a5cf8c2f766a8484">photo_gd</a>
-, <a class="el" href="classphoto__driver.html#ab98da263bd7341fc132c4fb6fc76e8d5">photo_driver</a>
+: <a class="el" href="classphoto__driver.html#ab98da263bd7341fc132c4fb6fc76e8d5">photo_driver</a>
+, <a class="el" href="classphoto__gd.html#a86757ba021fd80d1a5cf8c2f766a8484">photo_gd</a>
, <a class="el" href="classphoto__imagick.html#ad07288e0eb3922cb08cc9d33a163decc">photo_imagick</a>
</li>
<li>getLastModified()
-: <a class="el" href="classRedDirectory.html#a6c7e08199abc24e6eeb94a4037ef8bfc">RedDirectory</a>
-, <a class="el" href="classRedFile.html#a41562a28007789bbe7fe06d6a20eef47">RedFile</a>
+: <a class="el" href="classRedMatrix_1_1RedDAV_1_1RedFile.html#ac47016aa0e3f6f1a1c4570bd6fd8cf25">RedMatrix\RedDAV\RedFile</a>
+, <a class="el" href="classRedMatrix_1_1RedDAV_1_1RedDirectory.html#a69db5f641f8f5dc999e55cee1832ecd5">RedMatrix\RedDAV\RedDirectory</a>
</li>
<li>getName()
-: <a class="el" href="classRedFile.html#a0c961c5f49544d2502420361fa526437">RedFile</a>
-, <a class="el" href="classRedDirectory.html#af6e4475dbd5abcdede00d20b8d388583">RedDirectory</a>
+: <a class="el" href="classRedMatrix_1_1RedDAV_1_1RedFile.html#ac945aa782d6c035d339e59974266ec4d">RedMatrix\RedDAV\RedFile</a>
+, <a class="el" href="classRedMatrix_1_1RedDAV_1_1RedDirectory.html#a55f7172814a0749b5342f152ab3fa0df">RedMatrix\RedDAV\RedDirectory</a>
</li>
<li>getQuotaInfo()
-: <a class="el" href="classRedDirectory.html#a2f7a574f2115f099d6dd103d5b252375">RedDirectory</a>
+: <a class="el" href="classRedMatrix_1_1RedDAV_1_1RedDirectory.html#a69db443ed3c84938b4352fe515bf8d68">RedMatrix\RedDAV\RedDirectory</a>
</li>
<li>getSize()
-: <a class="el" href="classRedFile.html#acb1edbe1848fab05347746fa1ea09d8f">RedFile</a>
+: <a class="el" href="classRedMatrix_1_1RedDAV_1_1RedFile.html#a07e1b19e7aaf3dcce822e9be8823a87d">RedMatrix\RedDAV\RedFile</a>
+</li>
+<li>getTimezone()
+: <a class="el" href="classRedMatrix_1_1RedDAV_1_1RedBasicAuth.html#a6333c8ce58998bd11bf8102afe3b0748">RedMatrix\RedDAV\RedBasicAuth</a>
</li>
<li>getType()
: <a class="el" href="classphoto__driver.html#a6c6c16dbc4f517ce799f9143ed61f0e3">photo_driver</a>
diff --git a/doc/html/functions_0x68.html b/doc/html/functions_0x68.html
index 5a61a6a4c..221892d5e 100644
--- a/doc/html/functions_0x68.html
+++ b/doc/html/functions_0x68.html
@@ -147,7 +147,7 @@ $(document).ready(function(){initNavTree('functions_0x68.html','');});
: <a class="el" href="classApp.html#a8863703a0305eaa45eb970dbd2046291">App</a>
</li>
<li>htmlActionsPanel()
-: <a class="el" href="classRedBrowser.html#a7f6bf0bda07833f4c647557bd172e349">RedBrowser</a>
+: <a class="el" href="classRedMatrix_1_1RedDAV_1_1RedBrowser.html#a3bd98af2d1cdfd8f26deb914596176cf">RedMatrix\RedDAV\RedBrowser</a>
</li>
</ul>
</div><!-- contents -->
diff --git a/doc/html/functions_0x69.html b/doc/html/functions_0x69.html
index 5c919b259..3d44a81a4 100644
--- a/doc/html/functions_0x69.html
+++ b/doc/html/functions_0x69.html
@@ -148,9 +148,13 @@ $(document).ready(function(){initNavTree('functions_0x69.html','');});
<li>install()
: <a class="el" href="classdba__driver.html#a4ccb27243e62a8ca30dd8e1b8cc67746">dba_driver</a>
</li>
+<li>INSTALL_SCRIPT
+: <a class="el" href="classdba__driver.html#a98d8523dcedda316085b4d4f856b6583">dba_driver</a>
+, <a class="el" href="classdba__postgres.html#a7267f91c3f87f600b30d7560de62dfd7">dba_postgres</a>
+</li>
<li>is_commentable()
-: <a class="el" href="classConversation.html#a8b47c92b69459d461ea3cc9aae9597a3">Conversation</a>
-, <a class="el" href="classItem.html#ac04525a8be24c12b0a2ae4ca1ba4b967">Item</a>
+: <a class="el" href="classItem.html#ac04525a8be24c12b0a2ae4ca1ba4b967">Item</a>
+, <a class="el" href="classConversation.html#a8b47c92b69459d461ea3cc9aae9597a3">Conversation</a>
</li>
<li>is_preview()
: <a class="el" href="classConversation.html#adf25ce023b69a166c63c6e84e02c136a">Conversation</a>
diff --git a/doc/html/functions_0x6c.html b/doc/html/functions_0x6c.html
index c032d01b6..97abf9ab9 100644
--- a/doc/html/functions_0x6c.html
+++ b/doc/html/functions_0x6c.html
@@ -146,8 +146,8 @@ $(document).ready(function(){initNavTree('functions_0x6c.html','');});
, <a class="el" href="classphoto__imagick.html#a2c9168f110ccd6c264095d766615dfa8">photo_imagick</a>
</li>
<li>log()
-: <a class="el" href="classRedDirectory.html#a11376aed1963b4471eb1592c13c63976">RedDirectory</a>
-, <a class="el" href="classRedBasicAuth.html#a2cc8b1eac9c5a799bfb53ea7f287f3f0">RedBasicAuth</a>
+: <a class="el" href="classRedMatrix_1_1RedDAV_1_1RedBasicAuth.html#abf6fe89b0a8239ed93c3b07e1fbce75b">RedMatrix\RedDAV\RedBasicAuth</a>
+, <a class="el" href="classRedMatrix_1_1RedDAV_1_1RedDirectory.html#af90a1a74cfd643a5c56b9a17ea250d59">RedMatrix\RedDAV\RedDirectory</a>
</li>
<li>loginUser()
: <a class="el" href="classFKOAuth1.html#a2b1dac2ed31fc6ef84668afdda8b263f">FKOAuth1</a>
diff --git a/doc/html/functions_0x6e.html b/doc/html/functions_0x6e.html
index 72fb064ff..5fde22d13 100644
--- a/doc/html/functions_0x6e.html
+++ b/doc/html/functions_0x6e.html
@@ -146,6 +146,10 @@ $(document).ready(function(){initNavTree('functions_0x6e.html','');});
<li>new_request_token()
: <a class="el" href="classFKOAuthDataStore.html#a431b44d70e3da6a8256ab38f710e3050">FKOAuthDataStore</a>
</li>
+<li>NULL_DATE
+: <a class="el" href="classdba__driver.html#afce39394c010ea589d99a21579b2c31e">dba_driver</a>
+, <a class="el" href="classdba__postgres.html#aeb404a85974d6c5df30c21650888000b">dba_postgres</a>
+</li>
</ul>
</div><!-- contents -->
</div><!-- doc-content -->
diff --git a/doc/html/functions_0x6f.html b/doc/html/functions_0x6f.html
index cff96e18b..0d3b556fc 100644
--- a/doc/html/functions_0x6f.html
+++ b/doc/html/functions_0x6f.html
@@ -140,6 +140,10 @@ $(document).ready(function(){initNavTree('functions_0x6f.html','');});
<div class="textblock">Here is a list of all class members with links to the classes they belong to:</div>
<h3><a class="anchor" id="index_o"></a>- o -</h3><ul>
+<li>optimize_table()
+: <a class="el" href="classdba__driver.html#a77e59dcbeab30ca6000131d2e9ad4092">dba_driver</a>
+, <a class="el" href="classdba__postgres.html#a3de1ac375e98886dfc38fd0066e88f90">dba_postgres</a>
+</li>
<li>orient()
: <a class="el" href="classphoto__driver.html#a4de5bac8daea8f291a33c80788019d0d">photo_driver</a>
</li>
diff --git a/doc/html/functions_0x70.html b/doc/html/functions_0x70.html
index 543a28bda..f67e4b87b 100644
--- a/doc/html/functions_0x70.html
+++ b/doc/html/functions_0x70.html
@@ -144,7 +144,7 @@ $(document).ready(function(){initNavTree('functions_0x70.html','');});
: <a class="el" href="classFriendicaSmarty.html#a6a4d4281d6fa9be1d37a97b188ffe8c9">FriendicaSmarty</a>
</li>
<li>put()
-: <a class="el" href="classRedFile.html#a41a49a583eb276b75626fcf97f4a699c">RedFile</a>
+: <a class="el" href="classRedMatrix_1_1RedDAV_1_1RedFile.html#a709ec1288d21ddf1353524435ab916f0">RedMatrix\RedDAV\RedFile</a>
</li>
</ul>
</div><!-- contents -->
diff --git a/doc/html/functions_0x71.html b/doc/html/functions_0x71.html
index 0fc0b0367..3419cc601 100644
--- a/doc/html/functions_0x71.html
+++ b/doc/html/functions_0x71.html
@@ -142,8 +142,13 @@ $(document).ready(function(){initNavTree('functions_0x71.html','');});
<h3><a class="anchor" id="index_q"></a>- q -</h3><ul>
<li>q()
: <a class="el" href="classdba__driver.html#a558e738b88ae893cc5d79ffa3793d555">dba_driver</a>
-, <a class="el" href="classdba__mysqli.html#a611c4de8d6d7512dffb83a38bb6701ec">dba_mysqli</a>
, <a class="el" href="classdba__mysql.html#ac3fd60c278f400907322dac578754a99">dba_mysql</a>
+, <a class="el" href="classdba__postgres.html#a70352880231fba0b859f82cd5b290a9a">dba_postgres</a>
+, <a class="el" href="classdba__mysqli.html#a611c4de8d6d7512dffb83a38bb6701ec">dba_mysqli</a>
+</li>
+<li>quote_interval()
+: <a class="el" href="classdba__postgres.html#a56f926f218155c88807e0e06f6817a72">dba_postgres</a>
+, <a class="el" href="classdba__driver.html#ac9127e9c55fcc93bcfbb323b9b99b9d9">dba_driver</a>
</li>
</ul>
</div><!-- contents -->
diff --git a/doc/html/functions_0x72.html b/doc/html/functions_0x72.html
index 1f4340843..d840367ff 100644
--- a/doc/html/functions_0x72.html
+++ b/doc/html/functions_0x72.html
@@ -153,14 +153,17 @@ $(document).ready(function(){initNavTree('functions_0x72.html','');});
: <a class="el" href="classTemplate.html#a285b5b2007dbbf733476273df3fed4ef">Template</a>
</li>
<li>replace_macros()
-: <a class="el" href="classTemplate.html#a07737733f6949bdedea1e3d301b2ab7b">Template</a>
+: <a class="el" href="interfaceITemplateEngine.html#aaa7381c8becc3d1c1790b53988a0f243">ITemplateEngine</a>
+, <a class="el" href="classTemplate.html#a07737733f6949bdedea1e3d301b2ab7b">Template</a>
, <a class="el" href="classFriendicaSmartyEngine.html#ad62f1181d2f02b54b46731ad2bd46db2">FriendicaSmartyEngine</a>
-, <a class="el" href="interfaceITemplateEngine.html#aaa7381c8becc3d1c1790b53988a0f243">ITemplateEngine</a>
</li>
<li>rotate()
-: <a class="el" href="classphoto__imagick.html#a9df5738a4a18e76dd304c440e96f045f">photo_imagick</a>
+: <a class="el" href="classphoto__gd.html#a77f87730b11093b76980c541159df37d">photo_gd</a>
, <a class="el" href="classphoto__driver.html#a2f2b6337cf9aa0688d10b422123f0eec">photo_driver</a>
-, <a class="el" href="classphoto__gd.html#a77f87730b11093b76980c541159df37d">photo_gd</a>
+, <a class="el" href="classphoto__imagick.html#a9df5738a4a18e76dd304c440e96f045f">photo_imagick</a>
+</li>
+<li>run()
+: <a class="el" href="classRedMatrix_1_1Import_1_1Import.html#a8d138a9a7d4f79b81d3446ca216a602c">RedMatrix\Import\Import</a>
</li>
</ul>
</div><!-- contents -->
diff --git a/doc/html/functions_0x73.html b/doc/html/functions_0x73.html
index aea19c463..49d226ca8 100644
--- a/doc/html/functions_0x73.html
+++ b/doc/html/functions_0x73.html
@@ -182,6 +182,9 @@ $(document).ready(function(){initNavTree('functions_0x73.html','');});
<li>set_conversation()
: <a class="el" href="classItem.html#aa8b1bbc4236890694635295e46d7fd72">Item</a>
</li>
+<li>set_display_mode()
+: <a class="el" href="classItem.html#ac09a4728d37b7783714243f7f8167214">Item</a>
+</li>
<li>set_groups()
: <a class="el" href="classApp.html#a3d84af5e42082098672531cd1a618853">App</a>
</li>
@@ -222,30 +225,37 @@ $(document).ready(function(){initNavTree('functions_0x73.html','');});
: <a class="el" href="classApp.html#a123b903dfe5d3488cc68db3471d36fd2">App</a>
</li>
<li>set_writeable()
-: <a class="el" href="classRedBrowser.html#a40fdbb9d9fe6c1243bbf135dd5b0a06f">RedBrowser</a>
+: <a class="el" href="classRedMatrix_1_1RedDAV_1_1RedBrowser.html#aa1607857cb59738c4dce2fe8e73d8f19">RedMatrix\RedDAV\RedBrowser</a>
+</li>
+<li>setAuthenticated()
+: <a class="el" href="classRedMatrix_1_1RedDAV_1_1RedBasicAuth.html#a2926fe923baade564f2663632fa8c633">RedMatrix\RedDAV\RedBasicAuth</a>
</li>
<li>setBrowserPlugin()
-: <a class="el" href="classRedBasicAuth.html#a358ddad4abb5aa8c1382cf49a907adbc">RedBasicAuth</a>
+: <a class="el" href="classRedMatrix_1_1RedDAV_1_1RedBasicAuth.html#adc72f36f0b2b17b20ea4df900afcd697">RedMatrix\RedDAV\RedBasicAuth</a>
</li>
<li>setCurrentUser()
-: <a class="el" href="classRedBasicAuth.html#a072e8244a9a7f191b32d3db5ac94f857">RedBasicAuth</a>
+: <a class="el" href="classRedMatrix_1_1RedDAV_1_1RedBasicAuth.html#aadce020fb595c7943829d7f995d3f998">RedMatrix\RedDAV\RedBasicAuth</a>
</li>
<li>setDimensions()
-: <a class="el" href="classphoto__gd.html#a1c75304bd15f3b9986f0b315fb59271e">photo_gd</a>
+: <a class="el" href="classphoto__driver.html#ae663867d2c4eaa2fae50d60670920143">photo_driver</a>
, <a class="el" href="classphoto__imagick.html#af92901d252c1e6ab5b54eebedbed23bb">photo_imagick</a>
-, <a class="el" href="classphoto__driver.html#ae663867d2c4eaa2fae50d60670920143">photo_driver</a>
+, <a class="el" href="classphoto__gd.html#a1c75304bd15f3b9986f0b315fb59271e">photo_gd</a>
</li>
<li>setName()
-: <a class="el" href="classRedDirectory.html#adc48035679e52c55d9881f83de535553">RedDirectory</a>
-, <a class="el" href="classRedFile.html#a38a82bfc1b30028ea6ac75923e90fa25">RedFile</a>
+: <a class="el" href="classRedMatrix_1_1RedDAV_1_1RedDirectory.html#a14ac61d31a031d139956763db4e03956">RedMatrix\RedDAV\RedDirectory</a>
+, <a class="el" href="classRedMatrix_1_1RedDAV_1_1RedFile.html#a0350cb4e0327e1f9922869a48ee04f1d">RedMatrix\RedDAV\RedFile</a>
+</li>
+<li>setTimezone()
+: <a class="el" href="classRedMatrix_1_1RedDAV_1_1RedBasicAuth.html#af6d239fefed05859327ee8db626703f9">RedMatrix\RedDAV\RedBasicAuth</a>
</li>
<li>store()
-: <a class="el" href="classphoto__driver.html#a642a8d0c4ad5f887c99c6af77cee287b">photo_driver</a>
+: <a class="el" href="classRedMatrix_1_1Import_1_1Import.html#a33ed595de044c0ec1cd84cca719e31dc">RedMatrix\Import\Import</a>
+, <a class="el" href="classphoto__driver.html#a642a8d0c4ad5f887c99c6af77cee287b">photo_driver</a>
</li>
<li>supportedTypes()
-: <a class="el" href="classphoto__imagick.html#a27596faca6108d9d563674d1b654a0b7">photo_imagick</a>
+: <a class="el" href="classphoto__gd.html#a16f3dd7d3559f715aa2fe3f7880836dd">photo_gd</a>
+, <a class="el" href="classphoto__imagick.html#a27596faca6108d9d563674d1b654a0b7">photo_imagick</a>
, <a class="el" href="classphoto__driver.html#a6eee8e36eaf9339f4faf80ddd43162da">photo_driver</a>
-, <a class="el" href="classphoto__gd.html#a16f3dd7d3559f715aa2fe3f7880836dd">photo_gd</a>
</li>
</ul>
</div><!-- contents -->
diff --git a/doc/html/functions_0x75.html b/doc/html/functions_0x75.html
index be02f7916..69f595432 100644
--- a/doc/html/functions_0x75.html
+++ b/doc/html/functions_0x75.html
@@ -140,8 +140,19 @@ $(document).ready(function(){initNavTree('functions_0x75.html','');});
<div class="textblock">Here is a list of all class members with links to the classes they belong to:</div>
<h3><a class="anchor" id="index_u"></a>- u -</h3><ul>
+<li>unescapebin()
+: <a class="el" href="classdba__driver.html#ab43184239e1d6eb00a98319f4a3df155">dba_driver</a>
+, <a class="el" href="classdba__postgres.html#a677f850211975c9ab89602c67e2dcad9">dba_postgres</a>
+</li>
<li>userReadableSize()
-: <a class="el" href="classRedBrowser.html#ad3418b8ccad42a1ef4ad0079e15b2e64">RedBrowser</a>
+: <a class="el" href="classRedMatrix_1_1RedDAV_1_1RedBrowser.html#a242ce69a2fe5a5fdf9c2b8d3954accfd">RedMatrix\RedDAV\RedBrowser</a>
+</li>
+<li>UTC_NOW
+: <a class="el" href="classdba__driver.html#aa3325d982d4ee5d1114fd7e02a4356e8">dba_driver</a>
+, <a class="el" href="classdba__postgres.html#ace80a204e34b20b9907650399cce02a3">dba_postgres</a>
+</li>
+<li>utcnow()
+: <a class="el" href="classdba__driver.html#ad700712879719bee23752b8f424d97d0">dba_driver</a>
</li>
</ul>
</div><!-- contents -->
diff --git a/doc/html/functions_0x76.html b/doc/html/functions_0x76.html
index 04dc1bc4f..7e530d4a2 100644
--- a/doc/html/functions_0x76.html
+++ b/doc/html/functions_0x76.html
@@ -141,7 +141,7 @@ $(document).ready(function(){initNavTree('functions_0x76.html','');});
<h3><a class="anchor" id="index_v"></a>- v -</h3><ul>
<li>validateUserPass()
-: <a class="el" href="classRedBasicAuth.html#a8dfd9a0953f8884723b421b7c1acf79b">RedBasicAuth</a>
+: <a class="el" href="classRedMatrix_1_1RedDAV_1_1RedBasicAuth.html#a6ece02655b780469e59e204c5979a624">RedMatrix\RedDAV\RedBasicAuth</a>
</li>
<li>var_replace()
: <a class="el" href="classTemplate.html#abbc484016ddf5d818f55b823cae6feb0">Template</a>
diff --git a/doc/html/functions_func.html b/doc/html/functions_func.html
index a25888e23..14866baca 100644
--- a/doc/html/functions_func.html
+++ b/doc/html/functions_func.html
@@ -142,15 +142,15 @@ $(document).ready(function(){initNavTree('functions_func.html','');});
<li>__construct()
: <a class="el" href="classApp.html#af6d39f63fb7116bbeb04e51696f99474">App</a>
, <a class="el" href="classConversation.html#af84ea6ccd72214c9bb4c504461cc8b09">Conversation</a>
+, <a class="el" href="classItem.html#a248f45871ecfe82a08d1d4c0769b2eb2">Item</a>
+, <a class="el" href="classRedMatrix_1_1RedDAV_1_1RedDirectory.html#a76b58fe5223e565c97f1b9af93031a99">RedMatrix\RedDAV\RedDirectory</a>
+, <a class="el" href="classRedMatrix_1_1RedDAV_1_1RedFile.html#a05798eac84c578152ff21758261c6ac6">RedMatrix\RedDAV\RedFile</a>
+, <a class="el" href="classFKOAuth1.html#a2f1276872329a6f0b704ccda1a4b9fa6">FKOAuth1</a>
, <a class="el" href="classFriendicaSmarty.html#af12091b920b95eeef1218cbc48066ca6">FriendicaSmarty</a>
-, <a class="el" href="classphoto__driver.html#ac6e85f8e507cab4e755ed7acdec401ae">photo_driver</a>
-, <a class="el" href="classRedDirectory.html#a1e35e3cd31d2a15250655e4cafdea180">RedDirectory</a>
, <a class="el" href="classFriendicaSmartyEngine.html#ab7c305bd8c386c2944e4dc9136cea5b6">FriendicaSmartyEngine</a>
-, <a class="el" href="classRedFile.html#a9a67bdb34c9db6ce144b3f371148b183">RedFile</a>
-, <a class="el" href="classRedBrowser.html#a4b76be9ccef0262cf78fffb4129eda93">RedBrowser</a>
, <a class="el" href="classdba__driver.html#af3541d13ccb7a3eddfc03e253c746186">dba_driver</a>
-, <a class="el" href="classItem.html#a248f45871ecfe82a08d1d4c0769b2eb2">Item</a>
-, <a class="el" href="classFKOAuth1.html#a2f1276872329a6f0b704ccda1a4b9fa6">FKOAuth1</a>
+, <a class="el" href="classphoto__driver.html#ac6e85f8e507cab4e755ed7acdec401ae">photo_driver</a>
+, <a class="el" href="classRedMatrix_1_1RedDAV_1_1RedBrowser.html#a8161f2a0be205412e263c947b5ec46c5">RedMatrix\RedDAV\RedBrowser</a>
</li>
<li>__destruct()
: <a class="el" href="classdba__driver.html#a1a8bc9dc839a6320a0e07d8047a6b721">dba_driver</a>
diff --git a/doc/html/functions_func_0x63.html b/doc/html/functions_func_0x63.html
index 349a68589..4c98531a6 100644
--- a/doc/html/functions_func_0x63.html
+++ b/doc/html/functions_func_0x63.html
@@ -147,13 +147,14 @@ $(document).ready(function(){initNavTree('functions_func_0x63.html','');});
: <a class="el" href="classItem.html#abcdb0ea9bcd1576bc99bba9b8f700bb8">Item</a>
</li>
<li>childExists()
-: <a class="el" href="classRedDirectory.html#a5e3fc08b2bf9f61cea4d2ccae0495bec">RedDirectory</a>
+: <a class="el" href="classRedMatrix_1_1RedDAV_1_1RedDirectory.html#a964b13fde1a5da6f76b51ca5519234dc">RedMatrix\RedDAV\RedDirectory</a>
</li>
<li>clear()
: <a class="el" href="classCache.html#ab14d0f4bdf7116a94d545c574b38f568">Cache</a>
</li>
<li>close()
: <a class="el" href="classdba__mysqli.html#acb38f2c851187ad632ecfab30fdfab55">dba_mysqli</a>
+, <a class="el" href="classdba__postgres.html#a731d8648b41b8a126f6b99bdd5414058">dba_postgres</a>
, <a class="el" href="classdba__driver.html#a5afa54172f3c837df61643f8f5b2c975">dba_driver</a>
, <a class="el" href="classdba__mysql.html#a850586714ef897bd25f643c89b4ef76e">dba_mysql</a>
</li>
@@ -165,24 +166,41 @@ $(document).ready(function(){initNavTree('functions_func_0x63.html','');});
: <a class="el" href="classProtoDriver.html#af66171aa7dab9b62cee915cb4f1abe1b">ProtoDriver</a>
, <a class="el" href="classZotDriver.html#a2e15ff09772f0608203dad1c98299394">ZotDriver</a>
</li>
+<li>concat()
+: <a class="el" href="classdba__driver.html#ab9982f38a02f008b127a0f3ccc1e99f4">dba_driver</a>
+, <a class="el" href="classdba__postgres.html#a7ea3f24ad260c1e21588f8b5af595caa">dba_postgres</a>
+</li>
<li>connect()
: <a class="el" href="classdba__driver.html#ae533e62a240a793f17aef5ab4ef10edc">dba_driver</a>
-, <a class="el" href="classdba__mysqli.html#add062bd93961e5f0194d94820e9a51b1">dba_mysqli</a>
, <a class="el" href="classdba__mysql.html#a1887338627ce0e28786839363014bd0b">dba_mysql</a>
+, <a class="el" href="classdba__mysqli.html#add062bd93961e5f0194d94820e9a51b1">dba_mysqli</a>
+, <a class="el" href="classdba__postgres.html#ab36244320f5b71dba92d9318ccf3f34e">dba_postgres</a>
+</li>
+<li>convert_child()
+: <a class="el" href="classRedMatrix_1_1Import_1_1Import.html#a5434325afb2c633c52540127d717800a">RedMatrix\Import\Import</a>
+</li>
+<li>convert_item()
+: <a class="el" href="classRedMatrix_1_1Import_1_1Import.html#a107703a43a1b0ceb2af7ae470cb3f218">RedMatrix\Import\Import</a>
+</li>
+<li>convert_taxonomy()
+: <a class="el" href="classRedMatrix_1_1Import_1_1Import.html#addf6e53dacd971eaab49be4b17a767d6">RedMatrix\Import\Import</a>
</li>
<li>count_descendants()
: <a class="el" href="classItem.html#aca1e66988ed00cd627b2a359b72cd0ae">Item</a>
</li>
+<li>count_unseen_descendants()
+: <a class="el" href="classItem.html#ae0c48b2fed5558642549cabd547fc4f3">Item</a>
+</li>
<li>createDirectory()
-: <a class="el" href="classRedDirectory.html#a986936910f0216887a25e28916c166c7">RedDirectory</a>
+: <a class="el" href="classRedMatrix_1_1RedDAV_1_1RedDirectory.html#aca0e8d574ea66a0e210f571700663c62">RedMatrix\RedDAV\RedDirectory</a>
</li>
<li>createFile()
-: <a class="el" href="classRedDirectory.html#a2d12d99d38a6a75fc9a830b2f7fc0bf0">RedDirectory</a>
+: <a class="el" href="classRedMatrix_1_1RedDAV_1_1RedDirectory.html#a58e750256cdc2f0f79fbe8d5463ffefe">RedMatrix\RedDAV\RedDirectory</a>
</li>
<li>cropImage()
: <a class="el" href="classphoto__driver.html#a2e6e61f1e356a90bc978f4404a77137e">photo_driver</a>
-, <a class="el" href="classphoto__gd.html#ab2232d775c8bacf66773a03308105f0c">photo_gd</a>
, <a class="el" href="classphoto__imagick.html#a2f33a03a89497a2b2768e29736d4a8a4">photo_imagick</a>
+, <a class="el" href="classphoto__gd.html#ab2232d775c8bacf66773a03308105f0c">photo_gd</a>
</li>
</ul>
</div><!-- contents -->
diff --git a/doc/html/functions_func_0x64.html b/doc/html/functions_func_0x64.html
index a44648c78..4470d1ada 100644
--- a/doc/html/functions_func_0x64.html
+++ b/doc/html/functions_func_0x64.html
@@ -143,7 +143,7 @@ $(document).ready(function(){initNavTree('functions_func_0x64.html','');});
: <a class="el" href="classdba__driver.html#adcc1f8955120fec0708bce39202d0422">dba_driver</a>
</li>
<li>delete()
-: <a class="el" href="classRedFile.html#aef71c9eaac7052be7dc8602eb12171e7">RedFile</a>
+: <a class="el" href="classRedMatrix_1_1RedDAV_1_1RedFile.html#ab7ab7ba81fab28eb02382cfdfd80ecfe">RedMatrix\RedDAV\RedFile</a>
</li>
<li>deliver()
: <a class="el" href="classZotDriver.html#a876e3e0e4cad83c0b58c8696b344be6f">ZotDriver</a>
diff --git a/doc/html/functions_func_0x65.html b/doc/html/functions_func_0x65.html
index 2add8b68a..8fa81466f 100644
--- a/doc/html/functions_func_0x65.html
+++ b/doc/html/functions_func_0x65.html
@@ -141,8 +141,16 @@ $(document).ready(function(){initNavTree('functions_func_0x65.html','');});
<h3><a class="anchor" id="index_e"></a>- e -</h3><ul>
<li>escape()
: <a class="el" href="classdba__driver.html#afc95ffa103a3290581b537670cde5311">dba_driver</a>
-, <a class="el" href="classdba__mysqli.html#a27d6a748af7f80028801306e7ea33f64">dba_mysqli</a>
, <a class="el" href="classdba__mysql.html#a99a7691ea6cb1300031fb6549379066e">dba_mysql</a>
+, <a class="el" href="classdba__postgres.html#a7108eaaae7cc2fb236212041afc9ac0f">dba_postgres</a>
+, <a class="el" href="classdba__mysqli.html#a27d6a748af7f80028801306e7ea33f64">dba_mysqli</a>
+</li>
+<li>escape_identifier()
+: <a class="el" href="classdba__postgres.html#ab2e44e9f41d05e585afd873d18e8c127">dba_postgres</a>
+</li>
+<li>escapebin()
+: <a class="el" href="classdba__driver.html#a7dbe8318587ff1694825042bf58f4fbd">dba_driver</a>
+, <a class="el" href="classdba__postgres.html#a8d2c6d8c92fe6f074452876483dd17fc">dba_postgres</a>
</li>
</ul>
</div><!-- contents -->
diff --git a/doc/html/functions_func_0x66.html b/doc/html/functions_func_0x66.html
index fe8b7eaa1..cb6652bdd 100644
--- a/doc/html/functions_func_0x66.html
+++ b/doc/html/functions_func_0x66.html
@@ -140,10 +140,10 @@ $(document).ready(function(){initNavTree('functions_func_0x66.html','');});
<h3><a class="anchor" id="index_f"></a>- f -</h3><ul>
<li>findAttachHash()
-: <a class="el" href="classRedBrowser.html#ae4edd4e10c709e2624c1aeb47b0440c5">RedBrowser</a>
+: <a class="el" href="classRedMatrix_1_1RedDAV_1_1RedBrowser.html#ad4bc0516533c62733f38043a37267d78">RedMatrix\RedDAV\RedBrowser</a>
</li>
<li>findAttachIdByHash()
-: <a class="el" href="classRedBrowser.html#a20d81230645ddca08a88bfd9ea9f88f1">RedBrowser</a>
+: <a class="el" href="classRedMatrix_1_1RedDAV_1_1RedBrowser.html#a0733e38e254474d9a456825e72f1ddfd">RedMatrix\RedDAV\RedBrowser</a>
</li>
<li>flip()
: <a class="el" href="classphoto__gd.html#a44cedef376044018702d9355ddc813ce">photo_gd</a>
diff --git a/doc/html/functions_func_0x67.html b/doc/html/functions_func_0x67.html
index d93dd43c3..206c53287 100644
--- a/doc/html/functions_func_0x67.html
+++ b/doc/html/functions_func_0x67.html
@@ -143,10 +143,10 @@ $(document).ready(function(){initNavTree('functions_func_0x67.html','');});
: <a class="el" href="classFKOAuthDataStore.html#aa1a268be88ad3979bb4cc35bbb4dc819">FKOAuthDataStore</a>
</li>
<li>generateDirectoryIndex()
-: <a class="el" href="classRedBrowser.html#a1f7daf50bb9bfcde7345b3b1908dbd7e">RedBrowser</a>
+: <a class="el" href="classRedMatrix_1_1RedDAV_1_1RedBrowser.html#af764d5f14df751f9ec86c34fab300c09">RedMatrix\RedDAV\RedBrowser</a>
</li>
<li>get()
-: <a class="el" href="classRedFile.html#a7c868dfcef6c70cd0e24cf3caa2c3535">RedFile</a>
+: <a class="el" href="classRedMatrix_1_1RedDAV_1_1RedFile.html#a7241beecd01f5bb4e74659863dd85bd8">RedMatrix\RedDAV\RedFile</a>
, <a class="el" href="classCache.html#a70392b109331897bf9fdd7f1960e21de">Cache</a>
</li>
<li>get_account()
@@ -168,7 +168,8 @@ $(document).ready(function(){initNavTree('functions_func_0x67.html','');});
: <a class="el" href="classItem.html#a632185dd25c5caf277067c76230a4320">Item</a>
</li>
<li>get_children()
-: <a class="el" href="classItem.html#aa0ee775ec94abccec6c798428835d001">Item</a>
+: <a class="el" href="classRedMatrix_1_1Import_1_1Import.html#a57561904b0f127e0d9a3e2c33688daf8">RedMatrix\Import\Import</a>
+, <a class="el" href="classItem.html#aa0ee775ec94abccec6c798428835d001">Item</a>
</li>
<li>get_cipher()
: <a class="el" href="classConversation.html#a4aab60bb39fa6761b6cacdc8d9da2901">Conversation</a>
@@ -182,12 +183,18 @@ $(document).ready(function(){initNavTree('functions_func_0x67.html','');});
<li>get_conversation()
: <a class="el" href="classItem.html#a0c301aaed2b7d682728d18db3a22afa3">Item</a>
</li>
+<li>get_credentials()
+: <a class="el" href="classRedMatrix_1_1Import_1_1Import.html#a24134929d9a8a682da2036a0bf326367">RedMatrix\Import\Import</a>
+</li>
<li>get_data()
: <a class="el" href="classItem.html#ad3638f93065693c1f69eb349feb1b7aa">Item</a>
</li>
<li>get_data_value()
: <a class="el" href="classItem.html#ac6f1c96cc82a0dfb7e881fc70309ea3c">Item</a>
</li>
+<li>get_display_mode()
+: <a class="el" href="classItem.html#a23d4057883f8ed888c0c2ff12d8aa5d0">Item</a>
+</li>
<li>get_FormatsMap()
: <a class="el" href="classphoto__imagick.html#aef020d929f66f4370e33fc158c8eebd4">photo_imagick</a>
</li>
@@ -200,17 +207,32 @@ $(document).ready(function(){initNavTree('functions_func_0x67.html','');});
<li>get_id()
: <a class="el" href="classItem.html#ac0f27e58532612f6e7a54c8a621b9b92">Item</a>
</li>
+<li>get_install_script()
+: <a class="el" href="classdba__driver.html#a8d6a79d39d7eaee5aea4e952c4529d48">dba_driver</a>
+</li>
<li>get_intltext_template()
: <a class="el" href="classFriendicaSmartyEngine.html#a35ec0ee828c36640ea25296bcb84a118">FriendicaSmartyEngine</a>
</li>
+<li>get_item()
+: <a class="el" href="classRedMatrix_1_1Import_1_1Import.html#a27987a41cb703a796f1821baeb4774a2">RedMatrix\Import\Import</a>
+</li>
+<li>get_item_ident()
+: <a class="el" href="classRedMatrix_1_1Import_1_1Import.html#a772c28edf36aaf8e66007a95004c4059">RedMatrix\Import\Import</a>
+</li>
+<li>get_itemlist()
+: <a class="el" href="classRedMatrix_1_1Import_1_1Import.html#a855cd5a79b95d269ae8737fae774e3bc">RedMatrix\Import\Import</a>
+</li>
<li>get_markup_template()
-: <a class="el" href="classFriendicaSmartyEngine.html#aab5994077fc3a64222e41b28e2bd8d88">FriendicaSmartyEngine</a>
+: <a class="el" href="classTemplate.html#afd97b4b1e7754a550e67c0ea79159059">Template</a>
, <a class="el" href="interfaceITemplateEngine.html#aaf2698adbf46c073c24b162fe1b1c442">ITemplateEngine</a>
-, <a class="el" href="classTemplate.html#afd97b4b1e7754a550e67c0ea79159059">Template</a>
+, <a class="el" href="classFriendicaSmartyEngine.html#aab5994077fc3a64222e41b28e2bd8d88">FriendicaSmartyEngine</a>
</li>
<li>get_mode()
: <a class="el" href="classConversation.html#a87a0d704d5f2b1a008cc2e9ce06a1bcd">Conversation</a>
</li>
+<li>get_null_date()
+: <a class="el" href="classdba__driver.html#a65a5c7b355ab5529a43049e160006426">dba_driver</a>
+</li>
<li>get_observer()
: <a class="el" href="classApp.html#a1ad3bb1b68439b3b7cbe630918e618d2">App</a>
, <a class="el" href="classConversation.html#ae3d4190142e12b57051f11f2911f77a0">Conversation</a>
@@ -239,6 +261,9 @@ $(document).ready(function(){initNavTree('functions_func_0x67.html','');});
<li>get_redirect_url()
: <a class="el" href="classItem.html#a428f448f89a8629055ea3294eb942aea">Item</a>
</li>
+<li>get_taxonomy()
+: <a class="el" href="classRedMatrix_1_1Import_1_1Import.html#ae3c6472bea1a44025bc2e152604eb20c">RedMatrix\Import\Import</a>
+</li>
<li>get_template()
: <a class="el" href="classItem.html#aba23a0a9d89e316d2b343cc46d695d91">Item</a>
</li>
@@ -262,22 +287,31 @@ $(document).ready(function(){initNavTree('functions_func_0x67.html','');});
: <a class="el" href="classApp.html#a871898becd0697d778f36d9336253ae8">App</a>
</li>
<li>getAssetUrl()
-: <a class="el" href="classRedBrowser.html#a87529b4988a7777b49616f5c0a1c55d3">RedBrowser</a>
+: <a class="el" href="classRedMatrix_1_1RedDAV_1_1RedBrowser.html#acaa792c08d24e9dc2919759e92ba037d">RedMatrix\RedDAV\RedBrowser</a>
</li>
<li>getChild()
-: <a class="el" href="classRedDirectory.html#aaa20f0f44da23781917af8170c0a2569">RedDirectory</a>
+: <a class="el" href="classRedMatrix_1_1RedDAV_1_1RedDirectory.html#a1a37850bdd1f188abd6160559698d5d7">RedMatrix\RedDAV\RedDirectory</a>
</li>
<li>getChildren()
-: <a class="el" href="classRedDirectory.html#aa42d3065f6f065b17db87146a7cb031a">RedDirectory</a>
+: <a class="el" href="classRedMatrix_1_1RedDAV_1_1RedDirectory.html#a9b9a0b5bfa4de1f78e6cafaa534b6f6a">RedMatrix\RedDAV\RedDirectory</a>
</li>
<li>getContentType()
-: <a class="el" href="classRedFile.html#a26416827eb68554d033d1e2e5cc6dd3b">RedFile</a>
+: <a class="el" href="classRedMatrix_1_1RedDAV_1_1RedFile.html#af5c88b75d0c1f590af03755534cb167e">RedMatrix\RedDAV\RedFile</a>
+</li>
+<li>getCurrentUser()
+: <a class="el" href="classRedMatrix_1_1RedDAV_1_1RedBasicAuth.html#aa0b2a5fa9186d7dc0e637f1ecb379c42">RedMatrix\RedDAV\RedBasicAuth</a>
</li>
<li>getDir()
-: <a class="el" href="classRedDirectory.html#a70173d4458572d95e586b2037d2fd2f4">RedDirectory</a>
+: <a class="el" href="classRedMatrix_1_1RedDAV_1_1RedDirectory.html#a825dc5f3e0f83f50736c16daa6a4809d">RedMatrix\RedDAV\RedDirectory</a>
+</li>
+<li>getdriver()
+: <a class="el" href="classdba__postgres.html#ae0f834413e57cf0735ae7b64b2f71e68">dba_postgres</a>
+, <a class="el" href="classdba__mysql.html#a31011edd67b6b394355bf04cedb498d0">dba_mysql</a>
+, <a class="el" href="classdba__mysqli.html#a6eb6c578c6928908321e5e6da866e1db">dba_mysqli</a>
+, <a class="el" href="classdba__driver.html#a02165fc4bee63d040ebd963a4fa82a14">dba_driver</a>
</li>
<li>getETag()
-: <a class="el" href="classRedFile.html#ae96d5caa2db7a461c57b24380fa87e28">RedFile</a>
+: <a class="el" href="classRedMatrix_1_1RedDAV_1_1RedFile.html#a9f14682acf3ccb70df5af5dd0687c689">RedMatrix\RedDAV\RedFile</a>
</li>
<li>getExt()
: <a class="el" href="classphoto__driver.html#aa2efb5b2a6af3fd67e3f1c2b9852a5ba">photo_driver</a>
@@ -285,24 +319,30 @@ $(document).ready(function(){initNavTree('functions_func_0x67.html','');});
<li>getHeight()
: <a class="el" href="classphoto__driver.html#af769e9abb144e57002c59aa2aa8f3468">photo_driver</a>
</li>
+<li>getIconFromType()
+: <a class="el" href="classRedMatrix_1_1RedDAV_1_1RedBrowser.html#a810af4506cb3247e0ea7b0c4accbbc7a">RedMatrix\RedDAV\RedBrowser</a>
+</li>
<li>getImage()
-: <a class="el" href="classphoto__gd.html#a86757ba021fd80d1a5cf8c2f766a8484">photo_gd</a>
-, <a class="el" href="classphoto__driver.html#ab98da263bd7341fc132c4fb6fc76e8d5">photo_driver</a>
+: <a class="el" href="classphoto__driver.html#ab98da263bd7341fc132c4fb6fc76e8d5">photo_driver</a>
+, <a class="el" href="classphoto__gd.html#a86757ba021fd80d1a5cf8c2f766a8484">photo_gd</a>
, <a class="el" href="classphoto__imagick.html#ad07288e0eb3922cb08cc9d33a163decc">photo_imagick</a>
</li>
<li>getLastModified()
-: <a class="el" href="classRedDirectory.html#a6c7e08199abc24e6eeb94a4037ef8bfc">RedDirectory</a>
-, <a class="el" href="classRedFile.html#a41562a28007789bbe7fe06d6a20eef47">RedFile</a>
+: <a class="el" href="classRedMatrix_1_1RedDAV_1_1RedFile.html#ac47016aa0e3f6f1a1c4570bd6fd8cf25">RedMatrix\RedDAV\RedFile</a>
+, <a class="el" href="classRedMatrix_1_1RedDAV_1_1RedDirectory.html#a69db5f641f8f5dc999e55cee1832ecd5">RedMatrix\RedDAV\RedDirectory</a>
</li>
<li>getName()
-: <a class="el" href="classRedFile.html#a0c961c5f49544d2502420361fa526437">RedFile</a>
-, <a class="el" href="classRedDirectory.html#af6e4475dbd5abcdede00d20b8d388583">RedDirectory</a>
+: <a class="el" href="classRedMatrix_1_1RedDAV_1_1RedFile.html#ac945aa782d6c035d339e59974266ec4d">RedMatrix\RedDAV\RedFile</a>
+, <a class="el" href="classRedMatrix_1_1RedDAV_1_1RedDirectory.html#a55f7172814a0749b5342f152ab3fa0df">RedMatrix\RedDAV\RedDirectory</a>
</li>
<li>getQuotaInfo()
-: <a class="el" href="classRedDirectory.html#a2f7a574f2115f099d6dd103d5b252375">RedDirectory</a>
+: <a class="el" href="classRedMatrix_1_1RedDAV_1_1RedDirectory.html#a69db443ed3c84938b4352fe515bf8d68">RedMatrix\RedDAV\RedDirectory</a>
</li>
<li>getSize()
-: <a class="el" href="classRedFile.html#acb1edbe1848fab05347746fa1ea09d8f">RedFile</a>
+: <a class="el" href="classRedMatrix_1_1RedDAV_1_1RedFile.html#a07e1b19e7aaf3dcce822e9be8823a87d">RedMatrix\RedDAV\RedFile</a>
+</li>
+<li>getTimezone()
+: <a class="el" href="classRedMatrix_1_1RedDAV_1_1RedBasicAuth.html#a6333c8ce58998bd11bf8102afe3b0748">RedMatrix\RedDAV\RedBasicAuth</a>
</li>
<li>getType()
: <a class="el" href="classphoto__driver.html#a6c6c16dbc4f517ce799f9143ed61f0e3">photo_driver</a>
diff --git a/doc/html/functions_func_0x68.html b/doc/html/functions_func_0x68.html
index f520afb12..afa29fced 100644
--- a/doc/html/functions_func_0x68.html
+++ b/doc/html/functions_func_0x68.html
@@ -146,7 +146,7 @@ $(document).ready(function(){initNavTree('functions_func_0x68.html','');});
: <a class="el" href="classApp.html#a8863703a0305eaa45eb970dbd2046291">App</a>
</li>
<li>htmlActionsPanel()
-: <a class="el" href="classRedBrowser.html#a7f6bf0bda07833f4c647557bd172e349">RedBrowser</a>
+: <a class="el" href="classRedMatrix_1_1RedDAV_1_1RedBrowser.html#a3bd98af2d1cdfd8f26deb914596176cf">RedMatrix\RedDAV\RedBrowser</a>
</li>
</ul>
</div><!-- contents -->
diff --git a/doc/html/functions_func_0x6c.html b/doc/html/functions_func_0x6c.html
index 8ff2e29fe..0a8e5dd19 100644
--- a/doc/html/functions_func_0x6c.html
+++ b/doc/html/functions_func_0x6c.html
@@ -145,8 +145,8 @@ $(document).ready(function(){initNavTree('functions_func_0x6c.html','');});
, <a class="el" href="classphoto__imagick.html#a2c9168f110ccd6c264095d766615dfa8">photo_imagick</a>
</li>
<li>log()
-: <a class="el" href="classRedDirectory.html#a11376aed1963b4471eb1592c13c63976">RedDirectory</a>
-, <a class="el" href="classRedBasicAuth.html#a2cc8b1eac9c5a799bfb53ea7f287f3f0">RedBasicAuth</a>
+: <a class="el" href="classRedMatrix_1_1RedDAV_1_1RedBasicAuth.html#abf6fe89b0a8239ed93c3b07e1fbce75b">RedMatrix\RedDAV\RedBasicAuth</a>
+, <a class="el" href="classRedMatrix_1_1RedDAV_1_1RedDirectory.html#af90a1a74cfd643a5c56b9a17ea250d59">RedMatrix\RedDAV\RedDirectory</a>
</li>
<li>loginUser()
: <a class="el" href="classFKOAuth1.html#a2b1dac2ed31fc6ef84668afdda8b263f">FKOAuth1</a>
diff --git a/doc/html/functions_func_0x6f.html b/doc/html/functions_func_0x6f.html
index c955abd89..382222e6f 100644
--- a/doc/html/functions_func_0x6f.html
+++ b/doc/html/functions_func_0x6f.html
@@ -139,6 +139,10 @@ $(document).ready(function(){initNavTree('functions_func_0x6f.html','');});
&#160;
<h3><a class="anchor" id="index_o"></a>- o -</h3><ul>
+<li>optimize_table()
+: <a class="el" href="classdba__driver.html#a77e59dcbeab30ca6000131d2e9ad4092">dba_driver</a>
+, <a class="el" href="classdba__postgres.html#a3de1ac375e98886dfc38fd0066e88f90">dba_postgres</a>
+</li>
<li>orient()
: <a class="el" href="classphoto__driver.html#a4de5bac8daea8f291a33c80788019d0d">photo_driver</a>
</li>
diff --git a/doc/html/functions_func_0x70.html b/doc/html/functions_func_0x70.html
index 01b2a562d..b450d4bd0 100644
--- a/doc/html/functions_func_0x70.html
+++ b/doc/html/functions_func_0x70.html
@@ -143,7 +143,7 @@ $(document).ready(function(){initNavTree('functions_func_0x70.html','');});
: <a class="el" href="classFriendicaSmarty.html#a6a4d4281d6fa9be1d37a97b188ffe8c9">FriendicaSmarty</a>
</li>
<li>put()
-: <a class="el" href="classRedFile.html#a41a49a583eb276b75626fcf97f4a699c">RedFile</a>
+: <a class="el" href="classRedMatrix_1_1RedDAV_1_1RedFile.html#a709ec1288d21ddf1353524435ab916f0">RedMatrix\RedDAV\RedFile</a>
</li>
</ul>
</div><!-- contents -->
diff --git a/doc/html/functions_func_0x71.html b/doc/html/functions_func_0x71.html
index df5b7d285..186454586 100644
--- a/doc/html/functions_func_0x71.html
+++ b/doc/html/functions_func_0x71.html
@@ -141,8 +141,13 @@ $(document).ready(function(){initNavTree('functions_func_0x71.html','');});
<h3><a class="anchor" id="index_q"></a>- q -</h3><ul>
<li>q()
: <a class="el" href="classdba__driver.html#a558e738b88ae893cc5d79ffa3793d555">dba_driver</a>
-, <a class="el" href="classdba__mysqli.html#a611c4de8d6d7512dffb83a38bb6701ec">dba_mysqli</a>
, <a class="el" href="classdba__mysql.html#ac3fd60c278f400907322dac578754a99">dba_mysql</a>
+, <a class="el" href="classdba__postgres.html#a70352880231fba0b859f82cd5b290a9a">dba_postgres</a>
+, <a class="el" href="classdba__mysqli.html#a611c4de8d6d7512dffb83a38bb6701ec">dba_mysqli</a>
+</li>
+<li>quote_interval()
+: <a class="el" href="classdba__postgres.html#a56f926f218155c88807e0e06f6817a72">dba_postgres</a>
+, <a class="el" href="classdba__driver.html#ac9127e9c55fcc93bcfbb323b9b99b9d9">dba_driver</a>
</li>
</ul>
</div><!-- contents -->
diff --git a/doc/html/functions_func_0x72.html b/doc/html/functions_func_0x72.html
index edbd1da17..8fc461d7d 100644
--- a/doc/html/functions_func_0x72.html
+++ b/doc/html/functions_func_0x72.html
@@ -152,14 +152,17 @@ $(document).ready(function(){initNavTree('functions_func_0x72.html','');});
: <a class="el" href="classTemplate.html#a285b5b2007dbbf733476273df3fed4ef">Template</a>
</li>
<li>replace_macros()
-: <a class="el" href="classTemplate.html#a07737733f6949bdedea1e3d301b2ab7b">Template</a>
+: <a class="el" href="interfaceITemplateEngine.html#aaa7381c8becc3d1c1790b53988a0f243">ITemplateEngine</a>
+, <a class="el" href="classTemplate.html#a07737733f6949bdedea1e3d301b2ab7b">Template</a>
, <a class="el" href="classFriendicaSmartyEngine.html#ad62f1181d2f02b54b46731ad2bd46db2">FriendicaSmartyEngine</a>
-, <a class="el" href="interfaceITemplateEngine.html#aaa7381c8becc3d1c1790b53988a0f243">ITemplateEngine</a>
</li>
<li>rotate()
-: <a class="el" href="classphoto__imagick.html#a9df5738a4a18e76dd304c440e96f045f">photo_imagick</a>
+: <a class="el" href="classphoto__gd.html#a77f87730b11093b76980c541159df37d">photo_gd</a>
, <a class="el" href="classphoto__driver.html#a2f2b6337cf9aa0688d10b422123f0eec">photo_driver</a>
-, <a class="el" href="classphoto__gd.html#a77f87730b11093b76980c541159df37d">photo_gd</a>
+, <a class="el" href="classphoto__imagick.html#a9df5738a4a18e76dd304c440e96f045f">photo_imagick</a>
+</li>
+<li>run()
+: <a class="el" href="classRedMatrix_1_1Import_1_1Import.html#a8d138a9a7d4f79b81d3446ca216a602c">RedMatrix\Import\Import</a>
</li>
</ul>
</div><!-- contents -->
diff --git a/doc/html/functions_func_0x73.html b/doc/html/functions_func_0x73.html
index 90cfed4bc..9a5cd3d9f 100644
--- a/doc/html/functions_func_0x73.html
+++ b/doc/html/functions_func_0x73.html
@@ -181,6 +181,9 @@ $(document).ready(function(){initNavTree('functions_func_0x73.html','');});
<li>set_conversation()
: <a class="el" href="classItem.html#aa8b1bbc4236890694635295e46d7fd72">Item</a>
</li>
+<li>set_display_mode()
+: <a class="el" href="classItem.html#ac09a4728d37b7783714243f7f8167214">Item</a>
+</li>
<li>set_groups()
: <a class="el" href="classApp.html#a3d84af5e42082098672531cd1a618853">App</a>
</li>
@@ -221,30 +224,37 @@ $(document).ready(function(){initNavTree('functions_func_0x73.html','');});
: <a class="el" href="classApp.html#a123b903dfe5d3488cc68db3471d36fd2">App</a>
</li>
<li>set_writeable()
-: <a class="el" href="classRedBrowser.html#a40fdbb9d9fe6c1243bbf135dd5b0a06f">RedBrowser</a>
+: <a class="el" href="classRedMatrix_1_1RedDAV_1_1RedBrowser.html#aa1607857cb59738c4dce2fe8e73d8f19">RedMatrix\RedDAV\RedBrowser</a>
+</li>
+<li>setAuthenticated()
+: <a class="el" href="classRedMatrix_1_1RedDAV_1_1RedBasicAuth.html#a2926fe923baade564f2663632fa8c633">RedMatrix\RedDAV\RedBasicAuth</a>
</li>
<li>setBrowserPlugin()
-: <a class="el" href="classRedBasicAuth.html#a358ddad4abb5aa8c1382cf49a907adbc">RedBasicAuth</a>
+: <a class="el" href="classRedMatrix_1_1RedDAV_1_1RedBasicAuth.html#adc72f36f0b2b17b20ea4df900afcd697">RedMatrix\RedDAV\RedBasicAuth</a>
</li>
<li>setCurrentUser()
-: <a class="el" href="classRedBasicAuth.html#a072e8244a9a7f191b32d3db5ac94f857">RedBasicAuth</a>
+: <a class="el" href="classRedMatrix_1_1RedDAV_1_1RedBasicAuth.html#aadce020fb595c7943829d7f995d3f998">RedMatrix\RedDAV\RedBasicAuth</a>
</li>
<li>setDimensions()
-: <a class="el" href="classphoto__gd.html#a1c75304bd15f3b9986f0b315fb59271e">photo_gd</a>
+: <a class="el" href="classphoto__driver.html#ae663867d2c4eaa2fae50d60670920143">photo_driver</a>
, <a class="el" href="classphoto__imagick.html#af92901d252c1e6ab5b54eebedbed23bb">photo_imagick</a>
-, <a class="el" href="classphoto__driver.html#ae663867d2c4eaa2fae50d60670920143">photo_driver</a>
+, <a class="el" href="classphoto__gd.html#a1c75304bd15f3b9986f0b315fb59271e">photo_gd</a>
</li>
<li>setName()
-: <a class="el" href="classRedDirectory.html#adc48035679e52c55d9881f83de535553">RedDirectory</a>
-, <a class="el" href="classRedFile.html#a38a82bfc1b30028ea6ac75923e90fa25">RedFile</a>
+: <a class="el" href="classRedMatrix_1_1RedDAV_1_1RedDirectory.html#a14ac61d31a031d139956763db4e03956">RedMatrix\RedDAV\RedDirectory</a>
+, <a class="el" href="classRedMatrix_1_1RedDAV_1_1RedFile.html#a0350cb4e0327e1f9922869a48ee04f1d">RedMatrix\RedDAV\RedFile</a>
+</li>
+<li>setTimezone()
+: <a class="el" href="classRedMatrix_1_1RedDAV_1_1RedBasicAuth.html#af6d239fefed05859327ee8db626703f9">RedMatrix\RedDAV\RedBasicAuth</a>
</li>
<li>store()
-: <a class="el" href="classphoto__driver.html#a642a8d0c4ad5f887c99c6af77cee287b">photo_driver</a>
+: <a class="el" href="classRedMatrix_1_1Import_1_1Import.html#a33ed595de044c0ec1cd84cca719e31dc">RedMatrix\Import\Import</a>
+, <a class="el" href="classphoto__driver.html#a642a8d0c4ad5f887c99c6af77cee287b">photo_driver</a>
</li>
<li>supportedTypes()
-: <a class="el" href="classphoto__imagick.html#a27596faca6108d9d563674d1b654a0b7">photo_imagick</a>
+: <a class="el" href="classphoto__gd.html#a16f3dd7d3559f715aa2fe3f7880836dd">photo_gd</a>
+, <a class="el" href="classphoto__imagick.html#a27596faca6108d9d563674d1b654a0b7">photo_imagick</a>
, <a class="el" href="classphoto__driver.html#a6eee8e36eaf9339f4faf80ddd43162da">photo_driver</a>
-, <a class="el" href="classphoto__gd.html#a16f3dd7d3559f715aa2fe3f7880836dd">photo_gd</a>
</li>
</ul>
</div><!-- contents -->
diff --git a/doc/html/functions_func_0x75.html b/doc/html/functions_func_0x75.html
index 150e28988..7996cb15c 100644
--- a/doc/html/functions_func_0x75.html
+++ b/doc/html/functions_func_0x75.html
@@ -139,8 +139,15 @@ $(document).ready(function(){initNavTree('functions_func_0x75.html','');});
&#160;
<h3><a class="anchor" id="index_u"></a>- u -</h3><ul>
+<li>unescapebin()
+: <a class="el" href="classdba__driver.html#ab43184239e1d6eb00a98319f4a3df155">dba_driver</a>
+, <a class="el" href="classdba__postgres.html#a677f850211975c9ab89602c67e2dcad9">dba_postgres</a>
+</li>
<li>userReadableSize()
-: <a class="el" href="classRedBrowser.html#ad3418b8ccad42a1ef4ad0079e15b2e64">RedBrowser</a>
+: <a class="el" href="classRedMatrix_1_1RedDAV_1_1RedBrowser.html#a242ce69a2fe5a5fdf9c2b8d3954accfd">RedMatrix\RedDAV\RedBrowser</a>
+</li>
+<li>utcnow()
+: <a class="el" href="classdba__driver.html#ad700712879719bee23752b8f424d97d0">dba_driver</a>
</li>
</ul>
</div><!-- contents -->
diff --git a/doc/html/functions_func_0x76.html b/doc/html/functions_func_0x76.html
index 54c79f0bd..c6e5fd2be 100644
--- a/doc/html/functions_func_0x76.html
+++ b/doc/html/functions_func_0x76.html
@@ -140,7 +140,7 @@ $(document).ready(function(){initNavTree('functions_func_0x76.html','');});
<h3><a class="anchor" id="index_v"></a>- v -</h3><ul>
<li>validateUserPass()
-: <a class="el" href="classRedBasicAuth.html#a8dfd9a0953f8884723b421b7c1acf79b">RedBasicAuth</a>
+: <a class="el" href="classRedMatrix_1_1RedDAV_1_1RedBasicAuth.html#a6ece02655b780469e59e204c5979a624">RedMatrix\RedDAV\RedBasicAuth</a>
</li>
<li>var_replace()
: <a class="el" href="classTemplate.html#abbc484016ddf5d818f55b823cae6feb0">Template</a>
diff --git a/doc/html/functions_vars.html b/doc/html/functions_vars.html
index bb05f0d18..a01410c3e 100644
--- a/doc/html/functions_vars.html
+++ b/doc/html/functions_vars.html
@@ -85,6 +85,9 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
<div id="navrow4" class="tabs3">
<ul class="tablist">
<li><a href="#index_0x24"><span>$</span></a></li>
+ <li><a href="#index_i"><span>i</span></a></li>
+ <li><a href="#index_n"><span>n</span></a></li>
+ <li><a href="#index_u"><span>u</span></a></li>
</ul>
</div>
</div><!-- top -->
@@ -136,21 +139,15 @@ $(document).ready(function(){initNavTree('functions_vars.html','');});
: <a class="el" href="classApp.html#ab3da757abe5cb45bf88f07cc51a73b58">App</a>
</li>
<li>$auth
-: <a class="el" href="classRedBrowser.html#ab6d6d1e2a67e06b344a4cede1bd00b35">RedBrowser</a>
-, <a class="el" href="classRedDirectory.html#a9616af16cd19a18a6afebebcc2881c44">RedDirectory</a>
-, <a class="el" href="classRedFile.html#a4b5d0e33f919c6c175b30a55de6263f2">RedFile</a>
+: <a class="el" href="classRedMatrix_1_1RedDAV_1_1RedFile.html#a21b6e9d420c352f25610a33f57858215">RedMatrix\RedDAV\RedFile</a>
+, <a class="el" href="classRedMatrix_1_1RedDAV_1_1RedBrowser.html#ad19179bf4ac7f18fafa7e2e3df800142">RedMatrix\RedDAV\RedBrowser</a>
+, <a class="el" href="classRedMatrix_1_1RedDAV_1_1RedDirectory.html#aab6907e7fb7f9f7227f9cd42bdc84eb9">RedMatrix\RedDAV\RedDirectory</a>
</li>
<li>$baseurl
: <a class="el" href="classApp.html#ad5175536561021548ae8188e24c7b80c">App</a>
</li>
<li>$browser
-: <a class="el" href="classRedBasicAuth.html#af14337f1baad407f8a85d48205c0f30e">RedBasicAuth</a>
-</li>
-<li>$cached_profile_image
-: <a class="el" href="classApp.html#abe0e4fa91097f7a6588e1213a834121c">App</a>
-</li>
-<li>$cached_profile_picdate
-: <a class="el" href="classApp.html#aab4a685d15a363bb1d7edbbc20bfb94e">App</a>
+: <a class="el" href="classRedMatrix_1_1RedDAV_1_1RedBasicAuth.html#a167ae032bd2ad8e6caa2e1e1a6f1b5d3">RedMatrix\RedDAV\RedBasicAuth</a>
</li>
<li>$category
: <a class="el" href="classApp.html#a5cfc098c061b7d765add58fd2ca97445">App</a>
@@ -160,13 +157,13 @@ $(document).ready(function(){initNavTree('functions_vars.html','');});
, <a class="el" href="classItem.html#acc32426c0f465391be8a99ad810c7b8e">Item</a>
</li>
<li>$channel_hash
-: <a class="el" href="classRedBasicAuth.html#ad5a3ea4dc4783b242d9dc6e76478b6ef">RedBasicAuth</a>
+: <a class="el" href="classRedMatrix_1_1RedDAV_1_1RedBasicAuth.html#a112ad78a863dc0e598b5f02c596798c0">RedMatrix\RedDAV\RedBasicAuth</a>
</li>
<li>$channel_id
-: <a class="el" href="classRedBasicAuth.html#a2dab393650d1573e3515969a153e8354">RedBasicAuth</a>
+: <a class="el" href="classRedMatrix_1_1RedDAV_1_1RedBasicAuth.html#abe1defedb90ac8e3b6487e124e625521">RedMatrix\RedDAV\RedBasicAuth</a>
</li>
<li>$channel_name
-: <a class="el" href="classRedBasicAuth.html#a438ab125b6ef46581947e35d49cdebac">RedBasicAuth</a>
+: <a class="el" href="classRedMatrix_1_1RedDAV_1_1RedBasicAuth.html#a76fdb7fd5dd7376155abb5a58cd6fd69">RedMatrix\RedDAV\RedBasicAuth</a>
</li>
<li>$children
: <a class="el" href="classItem.html#a80dcd0fb7673776c0967839d429c2a0f">Item</a>
@@ -205,31 +202,30 @@ $(document).ready(function(){initNavTree('functions_vars.html','');});
<li>$conversation
: <a class="el" href="classItem.html#a007424e3e3171dcfb4312a02161da6cd">Item</a>
</li>
+<li>$credentials
+: <a class="el" href="classRedMatrix_1_1Import_1_1Import.html#a864aac9fadb4846f5d9f840e8e0f440f">RedMatrix\Import\Import</a>
+</li>
<li>$css_sources
: <a class="el" href="classApp.html#a6f55d087e1ff4710132c1b0863faa2ee">App</a>
</li>
-<li>$curl_code
-: <a class="el" href="classApp.html#a256360c9184fed6d7556e0bc0a835d7f">App</a>
-</li>
-<li>$curl_headers
-: <a class="el" href="classApp.html#af5007c42a693afd9c4899c243b2e1363">App</a>
-</li>
<li>$d
: <a class="el" href="classTemplate.html#a8469ab2988b6be2681516dc4b4e07d38">Template</a>
</li>
<li>$data
: <a class="el" href="classApp.html#a0ce85be198e46570366cb3344f3c55b8">App</a>
, <a class="el" href="classItem.html#aec24e233f9098f902b1e57e60dcb2019">Item</a>
-, <a class="el" href="classRedFile.html#a2ff12032b45538353eded9809d3b7550">RedFile</a>
+, <a class="el" href="classRedMatrix_1_1RedDAV_1_1RedFile.html#a235700e2dfbe21dc41613d36e30e8acc">RedMatrix\RedDAV\RedFile</a>
</li>
<li>$db
-: <a class="el" href="classApp.html#a330410a288f3393d53772f5e98f857ea">App</a>
-, <a class="el" href="classdba__driver.html#a3033b5f1c2716b52202faeaae2592fe6">dba_driver</a>
+: <a class="el" href="classdba__driver.html#a3033b5f1c2716b52202faeaae2592fe6">dba_driver</a>
</li>
<li>$debug
: <a class="el" href="classdba__driver.html#af48e2afeded5285766bf92e22123ed03">dba_driver</a>
, <a class="el" href="classTemplate.html#afc4afb6f89bebcd5480022312a56cb4a">Template</a>
</li>
+<li>$display_mode
+: <a class="el" href="classItem.html#a88a99e2d1245925867f249f543358e72">Item</a>
+</li>
<li>$done
: <a class="el" href="classTemplate.html#abda4c8d049f70553338eae7c905e9d5c">Template</a>
</li>
@@ -238,13 +234,13 @@ $(document).ready(function(){initNavTree('functions_vars.html','');});
, <a class="el" href="classdba__driver.html#a84675d28c7bd9b7290dd37e66dbd216c">dba_driver</a>
</li>
<li>$ext_path
-: <a class="el" href="classRedDirectory.html#a0f113244cd85c17848df991001d024f4">RedDirectory</a>
+: <a class="el" href="classRedMatrix_1_1RedDAV_1_1RedDirectory.html#adf8735b3118cdf2f42416edaf42b82e9">RedMatrix\RedDAV\RedDirectory</a>
</li>
<li>$filename
: <a class="el" href="classFriendicaSmarty.html#a33fabbd4d6eef869df496adf357ae690">FriendicaSmarty</a>
</li>
<li>$folder_hash
-: <a class="el" href="classRedDirectory.html#aa10254abf177bb2a0e4a88495725e09b">RedDirectory</a>
+: <a class="el" href="classRedMatrix_1_1RedDAV_1_1RedDirectory.html#a2fc4e6b9be2108bbaa1ca1a03fd6d44e">RedMatrix\RedDAV\RedDirectory</a>
</li>
<li>$force_max_items
: <a class="el" href="classApp.html#ae3f47830543d0d902f66913def8db66b">App</a>
@@ -273,6 +269,15 @@ $(document).ready(function(){initNavTree('functions_vars.html','');});
<li>$interactive
: <a class="el" href="classApp.html#a4c7cfc62d39508086cf300dc2e39c4df">App</a>
</li>
+<li>$is_sys
+: <a class="el" href="classApp.html#a1f60d19d47021629faac7a0a6d917e94">App</a>
+</li>
+<li>$itemlist
+: <a class="el" href="classRedMatrix_1_1Import_1_1Import.html#ad0d2bdc3b388220479063915b4f5c2fc">RedMatrix\Import\Import</a>
+</li>
+<li>$items
+: <a class="el" href="classRedMatrix_1_1Import_1_1Import.html#a0a05dac405ccc5b617b7b7b3c8ed783c">RedMatrix\Import\Import</a>
+</li>
<li>$js_sources
: <a class="el" href="classApp.html#a11e24b3ed9b33ffee7dd41d110b4366d">App</a>
</li>
@@ -298,8 +303,8 @@ $(document).ready(function(){initNavTree('functions_vars.html','');});
: <a class="el" href="classApp.html#a6e4f0fbfa3cf6c11baebe22a03db6165">App</a>
</li>
<li>$name
-: <a class="el" href="classFriendicaSmartyEngine.html#aaba6a42101bc9ae32e36b7fa2e243f02">FriendicaSmartyEngine</a>
-, <a class="el" href="classRedFile.html#acc48c05cd5a70951cb3c615ad84f03ba">RedFile</a>
+: <a class="el" href="classRedMatrix_1_1RedDAV_1_1RedFile.html#ab722dcb8c4598426c81fa2b2e4fad5f2">RedMatrix\RedDAV\RedFile</a>
+, <a class="el" href="classFriendicaSmartyEngine.html#aaba6a42101bc9ae32e36b7fa2e243f02">FriendicaSmartyEngine</a>
, <a class="el" href="classTemplate.html#a6eb301a51cc94d8b94f4548fbad85eae">Template</a>
</li>
<li>$nav_sel
@@ -310,20 +315,20 @@ $(document).ready(function(){initNavTree('functions_vars.html','');});
</li>
<li>$observer
: <a class="el" href="classConversation.html#a8748445aa26047ebed5141f3c3cbc244">Conversation</a>
-, <a class="el" href="classRedBasicAuth.html#aa75dc43b59adc98e38a98517d3fd35d1">RedBasicAuth</a>
+, <a class="el" href="classRedMatrix_1_1RedDAV_1_1RedBasicAuth.html#a605aa09565a097316b80f0d17d6b5823">RedMatrix\RedDAV\RedBasicAuth</a>
, <a class="el" href="classApp.html#a4ffe529fb14389f7fedf5fdc5f722e7f">App</a>
</li>
<li>$os_path
-: <a class="el" href="classRedDirectory.html#a3c148c07ad909985125aa4926d8d0021">RedDirectory</a>
+: <a class="el" href="classRedMatrix_1_1RedDAV_1_1RedDirectory.html#a17ea47e34cb76b6e79f36ebed790d76a">RedMatrix\RedDAV\RedDirectory</a>
</li>
<li>$owner_id
-: <a class="el" href="classRedBasicAuth.html#a09c1488a0b290f5a54dc15180c5690d7">RedBasicAuth</a>
+: <a class="el" href="classRedMatrix_1_1RedDAV_1_1RedBasicAuth.html#a1a23c349cc4699a8474505972684ea9c">RedMatrix\RedDAV\RedBasicAuth</a>
</li>
<li>$owner_name
: <a class="el" href="classItem.html#a9594df6014b0b6f45364ea7a34510130">Item</a>
</li>
<li>$owner_nick
-: <a class="el" href="classRedBasicAuth.html#a8d09b8d784cc810a0b3be580d05106a7">RedBasicAuth</a>
+: <a class="el" href="classRedMatrix_1_1RedDAV_1_1RedBasicAuth.html#aad0ef0cc05c407de84dbfbf2050bbbbe">RedMatrix\RedDAV\RedBasicAuth</a>
</li>
<li>$owner_photo
: <a class="el" href="classItem.html#a078f95b4134ce3a1df344cf8d386f986">Item</a>
@@ -377,7 +382,7 @@ $(document).ready(function(){initNavTree('functions_vars.html','');});
: <a class="el" href="classApp.html#a244b2d53b21be269aad2269d23192f95">App</a>
</li>
<li>$red_path
-: <a class="el" href="classRedDirectory.html#acb32b8df27538c57772824a745e751d7">RedDirectory</a>
+: <a class="el" href="classRedMatrix_1_1RedDAV_1_1RedDirectory.html#a4bba2e56bc8ec3e05f05eae46f56f36d">RedMatrix\RedDAV\RedDirectory</a>
</li>
<li>$redirect_url
: <a class="el" href="classItem.html#a5b561415861f5b89b0733aacfe0428d1">Item</a>
@@ -386,7 +391,7 @@ $(document).ready(function(){initNavTree('functions_vars.html','');});
: <a class="el" href="classTemplate.html#a4e86b566c3f728e95ce5db1b33665c10">Template</a>
</li>
<li>$root_dir
-: <a class="el" href="classRedDirectory.html#ad87c514a307ec97ba0f1372e9bcfa6a4">RedDirectory</a>
+: <a class="el" href="classRedMatrix_1_1RedDAV_1_1RedDirectory.html#a438066fb1565fbcffa22c12d5ce23695">RedMatrix\RedDAV\RedDirectory</a>
</li>
<li>$scheme
: <a class="el" href="classApp.html#ad082d63acc078e5bf23825a03bdd6a76">App</a>
@@ -397,6 +402,9 @@ $(document).ready(function(){initNavTree('functions_vars.html','');});
<li>$sourcename
: <a class="el" href="classApp.html#a13710907ef62554a0b4dd8a5eaa2eb11">App</a>
</li>
+<li>$src_items
+: <a class="el" href="classRedMatrix_1_1Import_1_1Import.html#a88c2eeba8d0cba3e7c12a2c45ba0fbc6">RedMatrix\Import\Import</a>
+</li>
<li>$stack
: <a class="el" href="classTemplate.html#a6f0efc256688c36110180b501067ff11">Template</a>
</li>
@@ -428,7 +436,7 @@ $(document).ready(function(){initNavTree('functions_vars.html','');});
: <a class="el" href="classConversation.html#a41f4a549e6a99f98935c4742addd22c8">Conversation</a>
</li>
<li>$timezone
-: <a class="el" href="classRedBasicAuth.html#a2d0246ed446fd5e55c17938b4ce6ac47">RedBasicAuth</a>
+: <a class="el" href="classRedMatrix_1_1RedDAV_1_1RedBasicAuth.html#a849c99cf0a7ad065d630c8a30106ad5e">RedMatrix\RedDAV\RedBasicAuth</a>
, <a class="el" href="classApp.html#ab35b01a366a2ea95725e97af278f87ab">App</a>
</li>
<li>$toplevel
@@ -458,9 +466,6 @@ $(document).ready(function(){initNavTree('functions_vars.html','');});
<li>$wall_to_wall
: <a class="el" href="classItem.html#a5d29ddecc073151a65a8e2ea2f6e4189">Item</a>
</li>
-<li>$widgetlist
-: <a class="el" href="classApp.html#a4833bee2eae4ad1691a04fa19e11a766">App</a>
-</li>
<li>$widgets
: <a class="el" href="classApp.html#aa5a87c46ab3fee21362c466bf78042ef">App</a>
</li>
@@ -471,6 +476,30 @@ $(document).ready(function(){initNavTree('functions_vars.html','');});
: <a class="el" href="classConversation.html#ae81221251307e315f566a11f921ce0a9">Conversation</a>
</li>
</ul>
+
+
+<h3><a class="anchor" id="index_i"></a>- i -</h3><ul>
+<li>INSTALL_SCRIPT
+: <a class="el" href="classdba__driver.html#a98d8523dcedda316085b4d4f856b6583">dba_driver</a>
+, <a class="el" href="classdba__postgres.html#a7267f91c3f87f600b30d7560de62dfd7">dba_postgres</a>
+</li>
+</ul>
+
+
+<h3><a class="anchor" id="index_n"></a>- n -</h3><ul>
+<li>NULL_DATE
+: <a class="el" href="classdba__driver.html#afce39394c010ea589d99a21579b2c31e">dba_driver</a>
+, <a class="el" href="classdba__postgres.html#aeb404a85974d6c5df30c21650888000b">dba_postgres</a>
+</li>
+</ul>
+
+
+<h3><a class="anchor" id="index_u"></a>- u -</h3><ul>
+<li>UTC_NOW
+: <a class="el" href="classdba__driver.html#aa3325d982d4ee5d1114fd7e02a4356e8">dba_driver</a>
+, <a class="el" href="classdba__postgres.html#ace80a204e34b20b9907650399cce02a3">dba_postgres</a>
+</li>
+</ul>
</div><!-- contents -->
</div><!-- doc-content -->
diff --git a/doc/html/globals.html b/doc/html/globals.html
index d96b84b06..b0a91ce95 100644
--- a/doc/html/globals.html
+++ b/doc/html/globals.html
@@ -156,9 +156,6 @@ $(document).ready(function(){initNavTree('globals.html','');});
<li>$aside
: <a class="el" href="minimalisticdarkness_8php.html#a6e5d97615c6faef5dbffe04b8024ceaf">minimalisticdarkness.php</a>
</li>
-<li>$bodyclass
-: <a class="el" href="theme_2blogga_2php_2default_8php.html#a720581ae288aa09511670563e4205a4a">default.php</a>
-</li>
<li>$called_api
: <a class="el" href="include_2api_8php.html#aa62b15a6bbb280e86b98132eb214013d">api.php</a>
</li>
@@ -184,9 +181,9 @@ $(document).ready(function(){initNavTree('globals.html','');});
: <a class="el" href="docblox__errorchecker_8php.html#a648a570b0f9f6e0e51b7267647c4b09b">docblox_errorchecker.php</a>
</li>
<li>$files
-: <a class="el" href="extract_8php.html#a9590b15215a21e9b42eb546aeef79704">extract.php</a>
+: <a class="el" href="typo_8php.html#a9590b15215a21e9b42eb546aeef79704">typo.php</a>
+, <a class="el" href="extract_8php.html#a9590b15215a21e9b42eb546aeef79704">extract.php</a>
, <a class="el" href="tpldebug_8php.html#a5358407d65f2ca826f96356a6642d149">tpldebug.php</a>
-, <a class="el" href="typo_8php.html#a9590b15215a21e9b42eb546aeef79704">typo.php</a>
</li>
<li>$fname
: <a class="el" href="apw_2php_2style_8php.html#ab9e0f70d44ab67f4334f9883631777fc">style.php</a>
@@ -194,12 +191,6 @@ $(document).ready(function(){initNavTree('globals.html','');});
<li>$gc_probability
: <a class="el" href="session_8php.html#a96b09cc763572f45280786a7b33feb7e">session.php</a>
</li>
-<li>$headimg
-: <a class="el" href="theme_2blogga_2php_2default_8php.html#ac7062908d1eb80c0735270f7997c4527">default.php</a>
-</li>
-<li>$headimghome
-: <a class="el" href="theme_2blogga_2php_2default_8php.html#a1230ab83d4ec9785d8f3a966f33dc5f3">default.php</a>
-</li>
<li>$i
: <a class="el" href="docblox__errorchecker_8php.html#a83018d9153d17d91fbcf3bc10158d34f">docblox_errorchecker.php</a>
</li>
@@ -245,15 +236,15 @@ $(document).ready(function(){initNavTree('globals.html','');});
<li>$phpfile
: <a class="el" href="php2po_8php.html#abbb0e5fd8fbc1f13a9bf68f86eb3d2a4">php2po.php</a>
</li>
-<li>$plugin
-: <a class="el" href="post__to__red_8php.html#ada8a7130088351710bb02ed622d6bf65">post_to_red.php</a>
-</li>
-<li>$plugin_dir
-: <a class="el" href="post__to__red_8php.html#a99811555b30bde504a863e44015f2f19">post_to_red.php</a>
-</li>
<li>$pofile
: <a class="el" href="php2po_8php.html#a401d84ce156e49e8168bd0c4781e1be1">php2po.php</a>
</li>
+<li>$r
+: <a class="el" href="fixd_8php.html#a8abe176bc41afd728f32ba8c506cbd98">fixd.php</a>
+</li>
+<li>$rand
+: <a class="el" href="fixd_8php.html#a2da3681c9cce2efe7de29aa578ff4219">fixd.php</a>
+</li>
<li>$res
: <a class="el" href="docblox__errorchecker_8php.html#a49a8a4009b02e49717caa88b128affc5">docblox_errorchecker.php</a>
</li>
@@ -284,6 +275,9 @@ $(document).ready(function(){initNavTree('globals.html','');});
<li>$strongmacro
: <a class="el" href="apw_2php_2style_8php.html#aa58104ba36588bbf082cecbb3910e2ea">style.php</a>
</li>
+<li>$total
+: <a class="el" href="fixd_8php.html#a241b818f48030b628685b2e5119c5624">fixd.php</a>
+</li>
<li>$uid
: <a class="el" href="apw_2php_2style_8php.html#a109bbd7f4add27541707b191b73ef84a">style.php</a>
</li>
diff --git a/doc/html/globals_0x61.html b/doc/html/globals_0x61.html
index 08e4c8ab3..1274fbb03 100644
--- a/doc/html/globals_0x61.html
+++ b/doc/html/globals_0x61.html
@@ -153,6 +153,9 @@ $(document).ready(function(){initNavTree('globals_0x61.html','');});
<li>ABOOK_FLAG_BLOCKED
: <a class="el" href="boot_8php.html#a52b599cd13e152ebc80d7e4413683195">boot.php</a>
</li>
+<li>ABOOK_FLAG_FEED
+: <a class="el" href="boot_8php.html#ae0d9527117cd87dcba11986047ae336e">boot.php</a>
+</li>
<li>ABOOK_FLAG_HIDDEN
: <a class="el" href="boot_8php.html#a34c756469ebed32e2fc987bcde62d382">boot.php</a>
</li>
@@ -205,7 +208,7 @@ $(document).ready(function(){initNavTree('globals_0x61.html','');});
: <a class="el" href="boot_8php.html#a032bbd6d0321e99e9117332c9ed2b1b8">boot.php</a>
</li>
<li>account_remove()
-: <a class="el" href="Contact_8php.html#a6e64de7db60b7243dce45fb6347636ff">Contact.php</a>
+: <a class="el" href="Contact_8php.html#a5101d7eca5d6f387e5555f03fe249e33">Contact.php</a>
</li>
<li>ACCOUNT_REMOVED
: <a class="el" href="boot_8php.html#ab5ddbe69d3d03acd06e1fb281488cb78">boot.php</a>
@@ -222,6 +225,9 @@ $(document).ready(function(){initNavTree('globals_0x61.html','');});
<li>ACCOUNT_ROLE_SYSTEM
: <a class="el" href="boot_8php.html#a7c2eb822d50e1554bf5c32861f36342b">boot.php</a>
</li>
+<li>account_service_class_fetch()
+: <a class="el" href="account_8php.html#a4328c40ee4b3d68630cf1ebb7b9d4d89">account.php</a>
+</li>
<li>account_total()
: <a class="el" href="account_8php.html#a43e3042b2723d76915a030bac3c668b6">account.php</a>
</li>
@@ -354,6 +360,12 @@ $(document).ready(function(){initNavTree('globals_0x61.html','');});
<li>admin_page_plugins()
: <a class="el" href="admin_8php.html#a54128076986ba80c4a103de3fc3e19a8">admin.php</a>
</li>
+<li>admin_page_profs()
+: <a class="el" href="admin_8php.html#a3deba594ca1e11694eac1de0b724ef0a">admin.php</a>
+</li>
+<li>admin_page_profs_post()
+: <a class="el" href="admin_8php.html#a278289bc6d45f6f2a272a7ab6a1d1057">admin.php</a>
+</li>
<li>admin_page_site()
: <a class="el" href="admin_8php.html#ac0f3bd12431c056aad77bac9d09fa30e">admin.php</a>
</li>
@@ -483,6 +495,12 @@ $(document).ready(function(){initNavTree('globals_0x61.html','');});
<li>api_get_user()
: <a class="el" href="include_2api_8php.html#aa40bae797bcd9ccacffdce5a3b5a1afa">api.php</a>
</li>
+<li>api_group()
+: <a class="el" href="include_2api_8php.html#ad5fe62d6c25c86999f627b2e6cfde536">api.php</a>
+</li>
+<li>api_group_members()
+: <a class="el" href="include_2api_8php.html#ae46f964e5a9c80b96dc78df61c09ed3a">api.php</a>
+</li>
<li>api_help_test()
: <a class="el" href="include_2api_8php.html#ac5a64cc81d70ff3cf866093ea9721d23">api.php</a>
</li>
@@ -504,6 +522,9 @@ $(document).ready(function(){initNavTree('globals_0x61.html','');});
<li>api_post()
: <a class="el" href="mod_2api_8php.html#a6fe77f05c07cb51048df0d557b4b9bd2">api.php</a>
</li>
+<li>api_red_xchan()
+: <a class="el" href="include_2api_8php.html#a4fe872332ff0bd8d5eae2f0c6819cb60">api.php</a>
+</li>
<li>api_register_func()
: <a class="el" href="include_2api_8php.html#ac2c2b18c426d697d11a830bca146be8a">api.php</a>
</li>
diff --git a/doc/html/globals_0x62.html b/doc/html/globals_0x62.html
index 038121491..a5ffe38ed 100644
--- a/doc/html/globals_0x62.html
+++ b/doc/html/globals_0x62.html
@@ -153,15 +153,33 @@ $(document).ready(function(){initNavTree('globals_0x62.html','');});
<li>bb2diaspora()
: <a class="el" href="bb2diaspora_8php.html#a4f10e0876b27373c762bc1abbe745f5c">bb2diaspora.php</a>
</li>
+<li>bb2diaspora_itembody()
+: <a class="el" href="bb2diaspora_8php.html#ab27761069ea1275f0fc4c543099c5519">bb2diaspora.php</a>
+</li>
+<li>bb2diaspora_itemwallwall()
+: <a class="el" href="bb2diaspora_8php.html#aab32042f8bd63552d3fadeeae9eab083">bb2diaspora.php</a>
+</li>
+<li>bb2dmention_callback()
+: <a class="el" href="bb2diaspora_8php.html#a5258d2f1addeb0a2a6b54c4f9e7d0f34">bb2diaspora.php</a>
+</li>
<li>bb_location()
: <a class="el" href="bbcode_8php.html#a3435c82a6c7693557800cdeb6848d0bd">bbcode.php</a>
</li>
+<li>bb_map_coords()
+: <a class="el" href="bbcode_8php.html#a02d5f2434e7bb5cf683e52a9b4787f24">bbcode.php</a>
+</li>
+<li>bb_map_location()
+: <a class="el" href="bbcode_8php.html#a7cb403fd1c36d7376c2f3932a1ceb54d">bbcode.php</a>
+</li>
<li>bb_parse_app()
: <a class="el" href="bbcode_8php.html#abb02f1044ff1c635d12af690d0f2cfa2">bbcode.php</a>
</li>
<li>bb_parse_crypt()
: <a class="el" href="bbcode_8php.html#a851f5aafefe52474201b83f9fd65931f">bbcode.php</a>
</li>
+<li>bb_parse_element()
+: <a class="el" href="bbcode_8php.html#aa73fb62e7be1fa5fce4ad5f3d4487fc9">bbcode.php</a>
+</li>
<li>bb_qr()
: <a class="el" href="bbcode_8php.html#a98d0eecc620c19561639f06cfbe8e74c">bbcode.php</a>
</li>
@@ -210,23 +228,8 @@ $(document).ready(function(){initNavTree('globals_0x62.html','');});
<li>blocks_content()
: <a class="el" href="blocks_8php.html#a2531a8fd51db3cecb2eb20c002c66e12">blocks.php</a>
</li>
-<li>blog_init()
-: <a class="el" href="blogga_2php_2theme_8php.html#aa55c1cb1f05087b5002ecb633b550b1b">theme.php</a>
-</li>
-<li>blog_install()
-: <a class="el" href="blogga_2view_2theme_2blog_2theme_8php.html#aae58cc837fe56473d9f3370abfe533ae">theme.php</a>
-</li>
-<li>blog_uninstall()
-: <a class="el" href="blogga_2view_2theme_2blog_2theme_8php.html#a3e77dbe111f330c64a1ff6c741cd515c">theme.php</a>
-</li>
-<li>blogtheme_display_item()
-: <a class="el" href="blogga_2view_2theme_2blog_2theme_8php.html#a028ae8e9f2824670dfa76a6651d817e5">theme.php</a>
-</li>
-<li>blogtheme_form()
-: <a class="el" href="view_2theme_2blogga_2view_2theme_2blog_2config_8php.html#a8a311a402d3e746ce53fadc38e4b2d27">config.php</a>
-</li>
-<li>blogtheme_imgurl()
-: <a class="el" href="blogga_2view_2theme_2blog_2theme_8php.html#af634a3f721c5e238530d0636d33230ec">theme.php</a>
+<li>blocks_init()
+: <a class="el" href="blocks_8php.html#aebe88302181883d2b17d6e98a1aaebe9">blocks.php</a>
</li>
<li>bookmark_add()
: <a class="el" href="include_2bookmarks_8php.html#aef1cb2968c41c759f2d106e1088ca323">bookmarks.php</a>
@@ -244,7 +247,7 @@ $(document).ready(function(){initNavTree('globals_0x62.html','');});
: <a class="el" href="boot_8php.html#a9cbab4ee728e9a8b4ce952bae643044e">boot.php</a>
</li>
<li>build_sync_packet()
-: <a class="el" href="zot_8php.html#ac34e479d27f32b82dd6b33542f81a6a7">zot.php</a>
+: <a class="el" href="zot_8php.html#aa97b33b619dd7132a9274f852af6ceb5">zot.php</a>
</li>
</ul>
</div><!-- contents -->
diff --git a/doc/html/globals_0x63.html b/doc/html/globals_0x63.html
index c70985c35..16df1649d 100644
--- a/doc/html/globals_0x63.html
+++ b/doc/html/globals_0x63.html
@@ -153,6 +153,9 @@ $(document).ready(function(){initNavTree('globals_0x63.html','');});
<li>can_comment_on_post()
: <a class="el" href="items_8php.html#a1e75047cf175aaee8dd16aa761913ff9">items.php</a>
</li>
+<li>catblock()
+: <a class="el" href="taxonomy_8php.html#aa8f8a1ff85daef046298e93c83e7a1b4">taxonomy.php</a>
+</li>
<li>categories_widget()
: <a class="el" href="contact__widgets_8php.html#a165eb021e61c4dcab2a552f28628d353">contact_widgets.php</a>
</li>
@@ -168,9 +171,6 @@ $(document).ready(function(){initNavTree('globals_0x63.html','');});
<li>chanlink_url()
: <a class="el" href="text_8php.html#a2e8d6c402603be3a1256a16605e09c2a">text.php</a>
</li>
-<li>chanman_remove_everything_from_network()
-: <a class="el" href="include_2chanman_8php.html#a21ba9a5c961e866ff27aee3ee67bf99b">chanman.php</a>
-</li>
<li>channel_content()
: <a class="el" href="channel_8php.html#a9c6a6179e0e626398ebecc6151905ef1">channel.php</a>
</li>
@@ -178,7 +178,7 @@ $(document).ready(function(){initNavTree('globals_0x63.html','');});
: <a class="el" href="channel_8php.html#ac7c8c7845741baadf87fae6bc279f3dc">channel.php</a>
</li>
<li>channel_remove()
-: <a class="el" href="Contact_8php.html#a186162051a5127069cc851d78740f205">Contact.php</a>
+: <a class="el" href="Contact_8php.html#a4e8af0f0525161da74583c04b8b03097">Contact.php</a>
</li>
<li>channel_total()
: <a class="el" href="identity_8php.html#a77d2237f1846964634b1c99089c27c7d">identity.php</a>
@@ -222,6 +222,9 @@ $(document).ready(function(){initNavTree('globals_0x63.html','');});
<li>chatroom_list()
: <a class="el" href="include_2chat_8php.html#aedcb532a0627b8644001a2fadab4e87a">chat.php</a>
</li>
+<li>chatroom_list_count()
+: <a class="el" href="include_2chat_8php.html#a26abdccc2a278a59899896dbbfc6f049">chat.php</a>
+</li>
<li>chatsvc_content()
: <a class="el" href="chatsvc_8php.html#a7032784215e1f6747cf385a6598770f9">chatsvc.php</a>
</li>
@@ -288,6 +291,9 @@ $(document).ready(function(){initNavTree('globals_0x63.html','');});
<li>check_store()
: <a class="el" href="setup_8php.html#ab4b71369a25021d59247c917e98d8246">setup.php</a>
</li>
+<li>check_upstream_directory()
+: <a class="el" href="dir__fns_8php.html#a2f7d74bb2aea8bcd2537aee5c6708a16">dir_fns.php</a>
+</li>
<li>check_webbie()
: <a class="el" href="text_8php.html#a0c65597bb4aed3a039eb795ff540e5e3">text.php</a>
</li>
@@ -313,10 +319,10 @@ $(document).ready(function(){initNavTree('globals_0x63.html','');});
: <a class="el" href="boot_8php.html#a3f40aa5bafff8c4eebdc62e5121daf77">boot.php</a>
</li>
<li>cloud_init()
-: <a class="el" href="cloud_8php.html#a1b79a6fe0454bc76673ad9aef55bf02d">cloud.php</a>
+: <a class="el" href="cloud_8php.html#ad2e96e917852f27dedfc263d37e13756">cloud.php</a>
</li>
<li>collect_recipients()
-: <a class="el" href="items_8php.html#a01e3cf44e082fa9bd06dcde5bf713d70">items.php</a>
+: <a class="el" href="items_8php.html#a772f0ae77ad77c8ab68ed918a3870946">items.php</a>
</li>
<li>collecturls()
: <a class="el" href="html2plain_8php.html#ae1c203d0f089d5678d73a6c64a395201">html2plain.php</a>
@@ -345,6 +351,9 @@ $(document).ready(function(){initNavTree('globals_0x63.html','');});
<li>comanche_widget()
: <a class="el" href="comanche_8php.html#a6b0191c1a63db1696a2eb139d90d9e7f">comanche.php</a>
</li>
+<li>comments_are_now_closed()
+: <a class="el" href="items_8php.html#abeb7886cde44d9a83dbaf2bc4ab18723">items.php</a>
+</li>
<li>common_content()
: <a class="el" href="common_8php.html#ab63408f39abef7a6915186e8dabc5a96">common.php</a>
</li>
@@ -412,7 +421,7 @@ $(document).ready(function(){initNavTree('globals_0x63.html','');});
: <a class="el" href="items_8php.html#a8f3c85c584ccd2b98c3ca440e45b40f8">items.php</a>
</li>
<li>consume_feed()
-: <a class="el" href="items_8php.html#a8794863cdf8ce1333040933d3a3f66bd">items.php</a>
+: <a class="el" href="items_8php.html#adc26e08aa61f5666da04ab5d2a9d68a6">items.php</a>
</li>
<li>contact_block()
: <a class="el" href="text_8php.html#ad6432621d0fafcbcf3d3b9b49bef7784">text.php</a>
@@ -435,9 +444,6 @@ $(document).ready(function(){initNavTree('globals_0x63.html','');});
<li>contact_remove()
: <a class="el" href="Contact_8php.html#a28e062c884331dbb5dfa713228c25ad6">Contact.php</a>
</li>
-<li>contact_reputation()
-: <a class="el" href="contact__selectors_8php.html#ae499960d6467bd30c78607b1018baf53">contact_selectors.php</a>
-</li>
<li>contact_select()
: <a class="el" href="acl__selectors_8php.html#a9476997d2968a5794f3723878ed89c91">acl_selectors.php</a>
</li>
diff --git a/doc/html/globals_0x64.html b/doc/html/globals_0x64.html
index af464b9b2..77a5ed11d 100644
--- a/doc/html/globals_0x64.html
+++ b/doc/html/globals_0x64.html
@@ -145,22 +145,37 @@ $(document).ready(function(){initNavTree('globals_0x64.html','');});
<h3><a class="anchor" id="index_d"></a>- d -</h3><ul>
<li>datesel()
-: <a class="el" href="datetime_8php.html#ac265b86f384ee094ed5479aae02aa5c8">datetime.php</a>
-</li>
-<li>datesel_format()
-: <a class="el" href="datetime_8php.html#a5f29553799005b1fd4e9ce9d98ce05aa">datetime.php</a>
+: <a class="el" href="datetime_8php.html#a77bb385ae8a9e7ca663309c102c0d766">datetime.php</a>
</li>
<li>datetime_convert()
: <a class="el" href="datetime_8php.html#ad6301e74b0f9267d52f8d432b5beb226">datetime.php</a>
</li>
+<li>datetimesel()
+: <a class="el" href="datetime_8php.html#a72218e5ee21876484934bacbb6bd9ba3">datetime.php</a>
+</li>
<li>day_translate()
: <a class="el" href="text_8php.html#a63fb21c0bed2fc72eef2c1471ac42b63">text.php</a>
</li>
+<li>db_concat()
+: <a class="el" href="dba__driver_8php.html#a7c1b98a710ead27382c958ad3216c4ee">dba_driver.php</a>
+</li>
+<li>db_getfunc()
+: <a class="el" href="dba__driver_8php.html#a2994daa03b1c23229a27e39bcab75e67">dba_driver.php</a>
+</li>
+<li>db_optimizetable()
+: <a class="el" href="dba__driver_8php.html#a75098bf1d59ea57f7ebae657a369137e">dba_driver.php</a>
+</li>
+<li>db_quoteinterval()
+: <a class="el" href="dba__driver_8php.html#acec84a8fb75d78daf657cbe5df74e25a">dba_driver.php</a>
+</li>
<li>DB_UPDATE_VERSION
: <a class="el" href="boot_8php.html#ac59a18a4838710d6c2de37aed6b21f03">boot.php</a>
</li>
+<li>db_utcnow()
+: <a class="el" href="dba__driver_8php.html#a30e9a643be804e905f5614a3279d2645">dba_driver.php</a>
+</li>
<li>dba_factory()
-: <a class="el" href="dba__driver_8php.html#ac10e60f6e5b95bcf67bd82cb88f37947">dba_driver.php</a>
+: <a class="el" href="dba__driver_8php.html#a5df8499634c47b30191f34069d7b98c0">dba_driver.php</a>
</li>
<li>dba_timer()
: <a class="el" href="boot_8php.html#a3e0930933fb2c0bf8211cc7ab4e1c3b4">boot.php</a>
@@ -174,12 +189,30 @@ $(document).ready(function(){initNavTree('globals_0x64.html','');});
<li>dbesc_array_cb()
: <a class="el" href="dba__driver_8php.html#af531546fac5f0836a8557a4f6dfee930">dba_driver.php</a>
</li>
+<li>dbesc_identifier()
+: <a class="el" href="dba__driver_8php.html#aa051799567690a124a3b865bf902f58a">dba_driver.php</a>
+</li>
+<li>dbescbin()
+: <a class="el" href="dba__driver_8php.html#a2a38996670c2936b5769270c49c57593">dba_driver.php</a>
+</li>
+<li>dbescdate()
+: <a class="el" href="dba__driver_8php.html#a2c8a72ec73f39b17a167c90737693f78">dba_driver.php</a>
+</li>
<li>dbg()
: <a class="el" href="dba__driver_8php.html#aa6607893d8f60ade9122bcfbd1a53ffb">dba_driver.php</a>
</li>
<li>dbq()
: <a class="el" href="dba__driver_8php.html#aa377074e70981e8c4e82ca0accd068ee">dba_driver.php</a>
</li>
+<li>DBTYPE_MYSQL
+: <a class="el" href="boot_8php.html#a8c9a11c47394244cbe18cd75b9726d5f">boot.php</a>
+</li>
+<li>DBTYPE_POSTGRES
+: <a class="el" href="boot_8php.html#a37ddabc112db443b4c67fbc0f708817e">boot.php</a>
+</li>
+<li>dbunescbin()
+: <a class="el" href="dba__driver_8php.html#afaaa1a7eff9c1b65b3b8c464ae37640e">dba_driver.php</a>
+</li>
<li>decode_tags()
: <a class="el" href="items_8php.html#a56b2a4abcadfac71175cd50555528cc3">items.php</a>
</li>
@@ -210,6 +243,12 @@ $(document).ready(function(){initNavTree('globals_0x64.html','');});
<li>deliver_run()
: <a class="el" href="deliver_8php.html#a397afcb9afecf0c1816b0951189dd346">deliver.php</a>
</li>
+<li>DerToPem()
+: <a class="el" href="crypto_8php.html#a630e1574554f34e7c38511585d9e71a2">crypto.php</a>
+</li>
+<li>DerToRsa()
+: <a class="el" href="crypto_8php.html#ae5af17db1cb5d7c91d486e1264079839">crypto.php</a>
+</li>
<li>design_tools()
: <a class="el" href="text_8php.html#a87a3cefc603302c78982f1d8e1245265">text.php</a>
</li>
@@ -219,12 +258,111 @@ $(document).ready(function(){initNavTree('globals_0x64.html','');});
<li>diaspora2bb()
: <a class="el" href="bb2diaspora_8php.html#ac9061ee10fcfcdac69566b649614e625">bb2diaspora.php</a>
</li>
+<li>diaspora_asphoto()
+: <a class="el" href="diaspora_8php.html#a006731620a5242d410358b32678e48e3">diaspora.php</a>
+</li>
+<li>diaspora_comment()
+: <a class="el" href="diaspora_8php.html#a0fb2abe304aae19efc040a5e6b917829">diaspora.php</a>
+</li>
+<li>diaspora_conversation()
+: <a class="el" href="diaspora_8php.html#adef30b6fac948baedcc7194d5d155b5f">diaspora.php</a>
+</li>
+<li>diaspora_decode()
+: <a class="el" href="diaspora_8php.html#a849754ec369e1a60fadae5c14584ca36">diaspora.php</a>
+</li>
+<li>diaspora_dispatch()
+: <a class="el" href="diaspora_8php.html#a6f0a67b6b17503c125af32763be931b7">diaspora.php</a>
+</li>
+<li>diaspora_dispatch_public()
+: <a class="el" href="diaspora_8php.html#ab99505944728d46585b8312989de533d">diaspora.php</a>
+</li>
+<li>diaspora_get_contact_by_handle()
+: <a class="el" href="diaspora_8php.html#aa8e551a53fcce34be3942d0c3e20d1f4">diaspora.php</a>
+</li>
+<li>diaspora_handle_from_contact()
+: <a class="el" href="diaspora_8php.html#a5ed66b910d7b0284f9b3ee04e72306ff">diaspora.php</a>
+</li>
+<li>diaspora_is_blacklisted()
+: <a class="el" href="diaspora_8php.html#a858f70153c384f8778082cf7843a19da">diaspora.php</a>
+</li>
+<li>diaspora_is_reshare()
+: <a class="el" href="diaspora_8php.html#ad9985cc4214bdfc14878785c838c8690">diaspora.php</a>
+</li>
+<li>diaspora_like()
+: <a class="el" href="diaspora_8php.html#a5d57518545baa31cf8a85a937a267681">diaspora.php</a>
+</li>
+<li>diaspora_mention_callback()
+: <a class="el" href="bb2diaspora_8php.html#a4a27604f0745f1efda672966aaca9a3b">bb2diaspora.php</a>
+</li>
+<li>diaspora_message()
+: <a class="el" href="diaspora_8php.html#a7cff2f8f11044c1b3a360f20e1bbee46">diaspora.php</a>
+</li>
+<li>diaspora_msg_build()
+: <a class="el" href="diaspora_8php.html#a4901762cba5cd8dcdc57bdf285eefb1b">diaspora.php</a>
+</li>
<li>diaspora_ol()
: <a class="el" href="bb2diaspora_8php.html#a8b96bd45884fa1c40b942939354197d4">bb2diaspora.php</a>
</li>
+<li>diaspora_photo()
+: <a class="el" href="diaspora_8php.html#a71fe9bb66626b4197ae018a230778bb2">diaspora.php</a>
+</li>
+<li>diaspora_post()
+: <a class="el" href="diaspora_8php.html#a20b968d64ef26afe5cb0cc75a7570a31">diaspora.php</a>
+</li>
+<li>diaspora_process_outbound()
+: <a class="el" href="diaspora_8php.html#a131abd521b218d6ae6f7d2917d8b2605">diaspora.php</a>
+</li>
+<li>diaspora_profile()
+: <a class="el" href="diaspora_8php.html#a900abf51398b2ef26cd2cd31c52f1b0f">diaspora.php</a>
+</li>
+<li>diaspora_pubmsg_build()
+: <a class="el" href="diaspora_8php.html#a586d5a3ba92d35cee14f879f290072aa">diaspora.php</a>
+</li>
+<li>diaspora_request()
+: <a class="el" href="diaspora_8php.html#ac1ab782a34552a7c6b4dc961754ed598">diaspora.php</a>
+</li>
+<li>diaspora_reshare()
+: <a class="el" href="diaspora_8php.html#a2bf43f6b5890897f425ef4325d34b007">diaspora.php</a>
+</li>
+<li>diaspora_retraction()
+: <a class="el" href="diaspora_8php.html#a938c7ee808d38725c0988fa6006805b9">diaspora.php</a>
+</li>
+<li>diaspora_send_followup()
+: <a class="el" href="diaspora_8php.html#af4698b165766f83d89ec1ea964bc92cc">diaspora.php</a>
+</li>
+<li>diaspora_send_images()
+: <a class="el" href="diaspora_8php.html#ae6f52efd81fe515cd9912bc8293abf5b">diaspora.php</a>
+</li>
+<li>diaspora_send_mail()
+: <a class="el" href="diaspora_8php.html#aeb2bb78f620dbf51d9335e6eb7444f2c">diaspora.php</a>
+</li>
+<li>diaspora_send_relay()
+: <a class="el" href="diaspora_8php.html#a0b3628a5e53332c3d3196b689fe2b94d">diaspora.php</a>
+</li>
+<li>diaspora_send_retraction()
+: <a class="el" href="diaspora_8php.html#a1704748aa2384c73e43f10e71defd31a">diaspora.php</a>
+</li>
+<li>diaspora_send_status()
+: <a class="el" href="diaspora_8php.html#a33ae0c4606a7df4d801c05507d87f668">diaspora.php</a>
+</li>
+<li>diaspora_share()
+: <a class="el" href="diaspora_8php.html#a69f250b078a46e405647428ec3399a16">diaspora.php</a>
+</li>
+<li>diaspora_signed_retraction()
+: <a class="el" href="diaspora_8php.html#aa34d2748bb97e9e193cacd572f335055">diaspora.php</a>
+</li>
+<li>diaspora_transmit()
+: <a class="el" href="diaspora_8php.html#aa704d6aa2ac77be345c0f501168e6e56">diaspora.php</a>
+</li>
<li>diaspora_ul()
: <a class="el" href="bb2diaspora_8php.html#adc92ccda5f85ed27e64fcc17712c89cc">bb2diaspora.php</a>
</li>
+<li>diaspora_unshare()
+: <a class="el" href="diaspora_8php.html#ab736d6f32b5de31c97cb579fc730e200">diaspora.php</a>
+</li>
+<li>dir_flag_build()
+: <a class="el" href="dirsearch_8php.html#ab6d5fefa98da249a994b910434a669c2">dirsearch.php</a>
+</li>
<li>dir_parse_query()
: <a class="el" href="dirsearch_8php.html#a7d4cd9890d5ed23c3efc58e2a778a305">dirsearch.php</a>
</li>
@@ -270,15 +408,18 @@ $(document).ready(function(){initNavTree('globals_0x64.html','');});
<li>directory_run()
: <a class="el" href="include_2directory_8php.html#aa75d3b0697ca1456aaabdb37a74aa0f0">directory.php</a>
</li>
-<li>dirprofile_init()
-: <a class="el" href="dirprofile_8php.html#a3e1d30d3d93863ff5615f2df4ac7f052">dirprofile.php</a>
-</li>
<li>dirsearch_content()
: <a class="el" href="dirsearch_8php.html#aa1fb04e1de4f25b63349ac78f94ceb4c">dirsearch.php</a>
</li>
<li>dirsearch_init()
: <a class="el" href="dirsearch_8php.html#a3e51964ae3f5ff147403407b65324752">dirsearch.php</a>
</li>
+<li>discover_by_url()
+: <a class="el" href="include_2network_8php.html#a5176176ddc1906d91f186df6fbd87b48">network.php</a>
+</li>
+<li>discover_by_webbie()
+: <a class="el" href="include_2network_8php.html#a63e62946e194928eb17c5a9f2bbef0fe">network.php</a>
+</li>
<li>display_content()
: <a class="el" href="display_8php.html#a37137c98d47bf3306f4c2bb9f5b60de0">display.php</a>
</li>
diff --git a/doc/html/globals_0x65.html b/doc/html/globals_0x65.html
index e79e01487..15f68dbbc 100644
--- a/doc/html/globals_0x65.html
+++ b/doc/html/globals_0x65.html
@@ -147,20 +147,29 @@ $(document).ready(function(){initNavTree('globals_0x65.html','');});
<li>editblock_content()
: <a class="el" href="editblock_8php.html#abbe8f55de06967bc8d79d620509a49e6">editblock.php</a>
</li>
+<li>editblock_init()
+: <a class="el" href="editblock_8php.html#ab7806bb42ae5e93f0330d7bd179d4b3e">editblock.php</a>
+</li>
<li>editlayout_content()
: <a class="el" href="editlayout_8php.html#aa877e4157a26b099de904164181dd386">editlayout.php</a>
</li>
+<li>editlayout_init()
+: <a class="el" href="editlayout_8php.html#a97c1e93d9e75ad8cd2c2f9a7f77341a7">editlayout.php</a>
+</li>
<li>editpost_content()
: <a class="el" href="editpost_8php.html#a34011690864d122680c802e9e748ccfb">editpost.php</a>
</li>
<li>editwebpage_content()
: <a class="el" href="editwebpage_8php.html#a375e945255fad79a71036528f7480650">editwebpage.php</a>
</li>
+<li>editwebpage_init()
+: <a class="el" href="editwebpage_8php.html#a94109f9c796fbe92508bf9574e35d19f">editwebpage.php</a>
+</li>
<li>else
-: <a class="el" href="redbasic_2php_2style_8php.html#ab3afb90d611eca90819f597a2c0bb459">style.php</a>
-, <a class="el" href="auth_8php.html#a0950af7c2888ca1d4743fe5d0bff9ae5">auth.php</a>
+: <a class="el" href="auth_8php.html#a6f60fb54f60cd36c2430d6615a7b4f3f">auth.php</a>
, <a class="el" href="fpostit_8php.html#a501b5ca82f287509fc691c88524064c1">fpostit.php</a>
, <a class="el" href="tpldebug_8php.html#afbc7aadb3f7ff1edf0aaaa326a42179c">tpldebug.php</a>
+, <a class="el" href="redbasic_2php_2style_8php.html#ab3afb90d611eca90819f597a2c0bb459">style.php</a>
</li>
<li>email_header_encode()
: <a class="el" href="include_2network_8php.html#a469b9bd700269cd07d954f1a16c5899b">network.php</a>
@@ -169,7 +178,7 @@ $(document).ready(function(){initNavTree('globals_0x65.html','');});
: <a class="el" href="include_2network_8php.html#a1ff07d9fad93b713b93da0ab77aab7f0">network.php</a>
</li>
<li>encode_item()
-: <a class="el" href="items_8php.html#a82955cc578f0fa600acec84475026194">items.php</a>
+: <a class="el" href="items_8php.html#a56b0f5d2cb36eb8f4bfca84813884f86">items.php</a>
</li>
<li>encode_item_flags()
: <a class="el" href="items_8php.html#a5f690fc2484abec07840b4f9dd525bd9">items.php</a>
@@ -228,6 +237,9 @@ $(document).ready(function(){initNavTree('globals_0x65.html','');});
<li>externals_run()
: <a class="el" href="externals_8php.html#a4df44079e6f915286088b7a0d44db926">externals.php</a>
</li>
+<li>extra_query_args()
+: <a class="el" href="text_8php.html#a3ba47b4dd1248e7e51095572e7b814dc">text.php</a>
+</li>
</ul>
</div><!-- contents -->
</div><!-- doc-content -->
diff --git a/doc/html/globals_0x66.html b/doc/html/globals_0x66.html
index be952deff..8557076c6 100644
--- a/doc/html/globals_0x66.html
+++ b/doc/html/globals_0x66.html
@@ -165,8 +165,8 @@ $(document).ready(function(){initNavTree('globals_0x66.html','');});
<li>fetch_post_tags()
: <a class="el" href="items_8php.html#adf980098b6de9c3993bc3ff26a8dd6f9">items.php</a>
</li>
-<li>field_timezone()
-: <a class="el" href="datetime_8php.html#a03900dcf0f9e3c58793a031673a70326">datetime.php</a>
+<li>fetch_xrd_links()
+: <a class="el" href="include_2network_8php.html#a850ed5307c6a18076f4b80addc99602d">network.php</a>
</li>
<li>file_tag_decode()
: <a class="el" href="taxonomy_8php.html#a08df5164926d2b31b8e9fcfe919de2b6">taxonomy.php</a>
@@ -192,6 +192,12 @@ $(document).ready(function(){initNavTree('globals_0x66.html','');});
<li>filestorage_post()
: <a class="el" href="filestorage_8php.html#ad3b64e3ece9831f9d3a9f00c0ae983cd">filestorage.php</a>
</li>
+<li>filter_insecure()
+: <a class="el" href="items_8php.html#a8cda98925a4c5c2f6dade70d9586d79a">items.php</a>
+</li>
+<li>find_diaspora_person_by_handle()
+: <a class="el" href="diaspora_8php.html#aade0c165fcdded71352c7a67bf6ce37b">diaspora.php</a>
+</li>
<li>find_filename_by_hash()
: <a class="el" href="include_2attach_8php.html#a4dbfd7e1cef52aa9ef52f4b88929fa86">attach.php</a>
</li>
@@ -237,6 +243,9 @@ $(document).ready(function(){initNavTree('globals_0x66.html','');});
<li>follow_init()
: <a class="el" href="mod_2follow_8php.html#a171f5b19f50d7738adc3b2e96ec6018a">follow.php</a>
</li>
+<li>foofoo()
+: <a class="el" href="dimport_8php.html#a581f040717941ce3e1868b0b5dceefd1">dimport.php</a>
+</li>
<li>foreach
: <a class="el" href="typo_8php.html#a329c9c12217d2c8660c47bbc7c8df4c5">typo.php</a>
</li>
@@ -255,12 +264,18 @@ $(document).ready(function(){initNavTree('globals_0x66.html','');});
<li>format_event_html()
: <a class="el" href="event_8php.html#a2ac9f1b08de03250ecd794f705781d17">event.php</a>
</li>
+<li>format_event_ical()
+: <a class="el" href="event_8php.html#a3ff7f1824540a38f4a3991a59a9542d4">event.php</a>
+</li>
<li>format_filer()
: <a class="el" href="text_8php.html#a4e4d42b0a805148d9f9a92bcac89bf91">text.php</a>
</li>
<li>format_hashtags()
: <a class="el" href="text_8php.html#a3a0c432a484c17d7720b8ba2d6bfdd59">text.php</a>
</li>
+<li>format_ical_text()
+: <a class="el" href="event_8php.html#a05073cd4ab837bd4a0149e8ed23ce688">event.php</a>
+</li>
<li>format_js_if_exists()
: <a class="el" href="plugin_8php.html#ad9ff8ba554576383c5911a4bce068c1f">plugin.php</a>
</li>
diff --git a/doc/html/globals_0x67.html b/doc/html/globals_0x67.html
index 560088f35..6f5a7ac19 100644
--- a/doc/html/globals_0x67.html
+++ b/doc/html/globals_0x67.html
@@ -147,6 +147,15 @@ $(document).ready(function(){initNavTree('globals_0x67.html','');});
<li>gender_selector()
: <a class="el" href="profile__selectors_8php.html#ae2b2c087e6530c61c0b256fd26d52355">profile_selectors.php</a>
</li>
+<li>gender_selector_min()
+: <a class="el" href="profile__selectors_8php.html#a8bfa1ca2d1598a3d65f1f9bb803ca816">profile_selectors.php</a>
+</li>
+<li>generate_map()
+: <a class="el" href="text_8php.html#ae0333c304ec5b4b72e66bb2933fa7357">text.php</a>
+</li>
+<li>generate_named_map()
+: <a class="el" href="text_8php.html#af5eb4a9c1599764f80c5bc71e0125d4b">text.php</a>
+</li>
<li>get_account_id()
: <a class="el" href="boot_8php.html#afe88b920aa285982edb817a0dd44eb37">boot.php</a>
</li>
@@ -157,7 +166,7 @@ $(document).ready(function(){initNavTree('globals_0x67.html','');});
: <a class="el" href="boot_8php.html#a0e6db7e365f2b041a828b93786f694bc">boot.php</a>
</li>
<li>get_atom_elements()
-: <a class="el" href="items_8php.html#a896c1809d58f2d7a42cfe14577958ddf">items.php</a>
+: <a class="el" href="items_8php.html#a5e5be7bf1f8257dec0b2647e60a3f3f1">items.php</a>
</li>
<li>get_bb_tag_pos()
: <a class="el" href="bb2diaspora_8php.html#a4c2f8f11b29a06809d9b07782215b1b2">bb2diaspora.php</a>
@@ -180,6 +189,9 @@ $(document).ready(function(){initNavTree('globals_0x67.html','');});
<li>get_channel_by_nick()
: <a class="el" href="identity_8php.html#ac73b3e13778c564c877554517a7f51ba">identity.php</a>
</li>
+<li>get_channel_default_perms()
+: <a class="el" href="identity_8php.html#a293f416ce9050220b183e08ff5890216">identity.php</a>
+</li>
<li>get_cloudpath()
: <a class="el" href="include_2attach_8php.html#a6aa00ea010ea030110faefb75eafc1ce">attach.php</a>
</li>
@@ -198,9 +210,18 @@ $(document).ready(function(){initNavTree('globals_0x67.html','');});
<li>get_default_profile_photo()
: <a class="el" href="identity_8php.html#ab1485a26b032956e1496fc08c58b83ed">identity.php</a>
</li>
+<li>get_diaspora_key()
+: <a class="el" href="diaspora_8php.html#a9bf7ef4094e0e14f6e2b7fe76ab7ad2e">diaspora.php</a>
+</li>
+<li>get_diaspora_reshare_xml()
+: <a class="el" href="diaspora_8php.html#ac9e41e46626dc608204bf4b5e16e62d7">diaspora.php</a>
+</li>
<li>get_dim()
: <a class="el" href="datetime_8php.html#a7df24d72ea05922d3127363e2295174c">datetime.php</a>
</li>
+<li>get_directory_realm()
+: <a class="el" href="boot_8php.html#a329400dcb29897cdaae3020109272285">boot.php</a>
+</li>
<li>get_events()
: <a class="el" href="identity_8php.html#ae381db3d43f8e7c1da8b15d14ecf5312">identity.php</a>
</li>
@@ -276,15 +297,30 @@ $(document).ready(function(){initNavTree('globals_0x67.html','');});
<li>get_poke_verbs()
: <a class="el" href="text_8php.html#aa46f941155c2ac1155f2f17ffb0adb66">text.php</a>
</li>
+<li>get_poller_runtime()
+: <a class="el" href="boot_8php.html#aa561f801e962b67a5c4d0548ea95fd17">boot.php</a>
+</li>
<li>get_profile_elements()
: <a class="el" href="items_8php.html#a251343637ff40a50cca93452cd530c26">items.php</a>
</li>
+<li>get_profile_fields_advanced()
+: <a class="el" href="identity_8php.html#a224710dfb7465b706c91134247c20afa">identity.php</a>
+</li>
+<li>get_profile_fields_basic()
+: <a class="el" href="identity_8php.html#a4ff59df0f0a668a06a8411f87496aa21">identity.php</a>
+</li>
<li>get_public_feed()
: <a class="el" href="items_8php.html#a079e099e15d88d47aeb6ca6d60da7107">items.php</a>
</li>
<li>get_rel_link()
: <a class="el" href="text_8php.html#a3972701c5c83624ec4e2d06242f614e7">text.php</a>
</li>
+<li>get_role_perms()
+: <a class="el" href="permissions_8php.html#a9b5f5120566a3699a98efc5ccb0c59fe">permissions.php</a>
+</li>
+<li>get_roles()
+: <a class="el" href="permissions_8php.html#a6b239a0d494b92a89ce7bf9c7e588991">permissions.php</a>
+</li>
<li>get_rpost_path()
: <a class="el" href="zot_8php.html#a8e22dbc6f884be3644a892a876cbd972">zot.php</a>
</li>
@@ -315,6 +351,9 @@ $(document).ready(function(){initNavTree('globals_0x67.html','');});
<li>get_things()
: <a class="el" href="taxonomy_8php.html#a7747fa859ac56fbffd4f9782d85505de">taxonomy.php</a>
</li>
+<li>get_timezones()
+: <a class="el" href="datetime_8php.html#afbb34604d0f6e7d2103da4f42e2487b1">datetime.php</a>
+</li>
<li>get_words()
: <a class="el" href="spam_8php.html#ab8fd81a82c9622cbebb8ceab6b310ca6">spam.php</a>
</li>
diff --git a/doc/html/globals_0x68.html b/doc/html/globals_0x68.html
index 5d9eb7bce..eda1d5c74 100644
--- a/doc/html/globals_0x68.html
+++ b/doc/html/globals_0x68.html
@@ -144,12 +144,21 @@ $(document).ready(function(){initNavTree('globals_0x68.html','');});
<div class="textblock">Here is a list of all file members with links to the files they belong to:</div>
<h3><a class="anchor" id="index_h"></a>- h -</h3><ul>
+<li>handle_feed()
+: <a class="el" href="items_8php.html#a52c24114b73c0bdb605a03cd29712223">items.php</a>
+</li>
<li>handle_tag()
-: <a class="el" href="item_8php.html#aa22feef4de326e1d7078dedd892e615c">item.php</a>
+: <a class="el" href="text_8php.html#aa22feef4de326e1d7078dedd892e615c">text.php</a>
</li>
<li>has_permissions()
: <a class="el" href="items_8php.html#a77051724d1784074ff187e73a4db93fe">items.php</a>
</li>
+<li>hcard_content()
+: <a class="el" href="hcard_8php.html#a3663012f1549849af88aba2bb87388e3">hcard.php</a>
+</li>
+<li>hcard_init()
+: <a class="el" href="hcard_8php.html#ac34f26b0e6a37eef44fa49bea135136d">hcard.php</a>
+</li>
<li>head_add_css()
: <a class="el" href="plugin_8php.html#a23c4fccf1eb5fcd63b24783ba1f05f7a">plugin.php</a>
</li>
@@ -180,8 +189,11 @@ $(document).ready(function(){initNavTree('globals_0x68.html','');});
<li>help_content()
: <a class="el" href="help_8php.html#af055e15f600ffa6fbca9386fdf715224">help.php</a>
</li>
+<li>hivenet_init()
+: <a class="el" href="hivenet_2php_2theme_8php.html#a3a8b539b112ae63936025236dbaf0a29">theme.php</a>
+</li>
<li>home_content()
-: <a class="el" href="home_8php.html#aa1cf697851a646755baf537f75334c46">home.php</a>
+: <a class="el" href="home_8php.html#a6e3dbf78f4ed74ab2577de221190b33f">home.php</a>
</li>
<li>home_init()
: <a class="el" href="home_8php.html#ac4642c38b6f23a8d065dd4a75c620bde">home.php</a>
@@ -201,6 +213,9 @@ $(document).ready(function(){initNavTree('globals_0x68.html','');});
<li>http_status_exit()
: <a class="el" href="include_2network_8php.html#a4cfb2c05a1c295317283d762440ce0b2">network.php</a>
</li>
+<li>hubloc_change_primary()
+: <a class="el" href="hubloc_8php.html#ad86214b3a74084bd7b54e8d6c919ce4d">hubloc.php</a>
+</li>
<li>HUBLOC_FLAGS_DELETED
: <a class="el" href="boot_8php.html#a7c286add8961fd2d79216314cd4aadd8">boot.php</a>
</li>
diff --git a/doc/html/globals_0x69.html b/doc/html/globals_0x69.html
index 5d75dabb0..46871c62e 100644
--- a/doc/html/globals_0x69.html
+++ b/doc/html/globals_0x69.html
@@ -144,8 +144,11 @@ $(document).ready(function(){initNavTree('globals_0x69.html','');});
<div class="textblock">Here is a list of all file members with links to the files they belong to:</div>
<h3><a class="anchor" id="index_i"></a>- i -</h3><ul>
+<li>ical_wrapper()
+: <a class="el" href="event_8php.html#ab8cc2825013e724dc26229026711cf93">event.php</a>
+</li>
<li>identity_basic_export()
-: <a class="el" href="identity_8php.html#a3570a4eb77332b292d394c4132cb8f03">identity.php</a>
+: <a class="el" href="identity_8php.html#afaedbc8e2d2a70ec8b006162baac5249">identity.php</a>
</li>
<li>identity_check_service_class()
: <a class="el" href="identity_8php.html#ac9fcd5c4c371998790b5c55c3d0f4633">identity.php</a>
@@ -157,15 +160,25 @@ $(document).ready(function(){initNavTree('globals_0x69.html','');});
: <a class="el" href="text_8php.html#a436a8de00c942364c2d0fcfc7e1f4b5a">text.php</a>
</li>
<li>if
-: <a class="el" href="apw_2php_2style_8php.html#a2f71e817b8fac88ce7f0ec5c0fb88b8d">style.php</a>
+: <a class="el" href="full_8php.html#a3987f5547ceb7e36a210a66a06241a5a">full.php</a>
+, <a class="el" href="redable_8php.html#a3987f5547ceb7e36a210a66a06241a5a">redable.php</a>
+, <a class="el" href="apw_2php_2style_8php.html#a2f71e817b8fac88ce7f0ec5c0fb88b8d">style.php</a>
, <a class="el" href="theme_2mytheme_2php_2default_8php.html#a3987f5547ceb7e36a210a66a06241a5a">default.php</a>
, <a class="el" href="php2po_8php.html#a45b05625748f412ec97afcd61cf7980b">php2po.php</a>
, <a class="el" href="php_2default_8php.html#a3987f5547ceb7e36a210a66a06241a5a">default.php</a>
-, <a class="el" href="full_8php.html#a3987f5547ceb7e36a210a66a06241a5a">full.php</a>
+</li>
+<li>impel_init()
+: <a class="el" href="impel_8php.html#ab7db6fca43b42ea4332cb3e841b3cf7b">impel.php</a>
+</li>
+<li>import_author_diaspora()
+: <a class="el" href="items_8php.html#a2c3f97b2109c05df86d97449b3c78ebc">items.php</a>
</li>
<li>import_author_rss()
: <a class="el" href="items_8php.html#a6bee35961f2e32905f20367a9309d627">items.php</a>
</li>
+<li>import_author_unknown()
+: <a class="el" href="items_8php.html#a37f79991f36811cf847446ff60e8e11f">items.php</a>
+</li>
<li>import_author_xchan()
: <a class="el" href="items_8php.html#ae73794179b62d39bb597ff670ab1c1e5">items.php</a>
</li>
@@ -229,6 +242,9 @@ $(document).ready(function(){initNavTree('globals_0x69.html','');});
<li>is_foreigner()
: <a class="el" href="identity_8php.html#ae2b140df652a55ca11bb6a99005fce35">identity.php</a>
</li>
+<li>is_matrix_url()
+: <a class="el" href="hubloc_8php.html#aebd244b4616ded022cbbee5e82926951">hubloc.php</a>
+</li>
<li>is_member()
: <a class="el" href="identity_8php.html#a9637c557e13d9671f3eeb124ab98212a">identity.php</a>
</li>
@@ -337,6 +353,9 @@ $(document).ready(function(){initNavTree('globals_0x69.html','');});
<li>ITEM_RETAINED
: <a class="el" href="boot_8php.html#a11cfe7d99b4dac0454d0de8873989f81">boot.php</a>
</li>
+<li>ITEM_RSS
+: <a class="el" href="boot_8php.html#ac4d1c93dabcace711ffb4931204c336b">boot.php</a>
+</li>
<li>ITEM_SPAM
: <a class="el" href="boot_8php.html#a40d885b2cfd736aab4234ae641ca4dfb">boot.php</a>
</li>
diff --git a/doc/html/globals_0x6c.html b/doc/html/globals_0x6c.html
index 808af3f25..7aac6e427 100644
--- a/doc/html/globals_0x6c.html
+++ b/doc/html/globals_0x6c.html
@@ -162,6 +162,9 @@ $(document).ready(function(){initNavTree('globals_0x6c.html','');});
<li>layouts_content()
: <a class="el" href="layouts_8php.html#a6e0193759ad9eef76d3df2db24237b50">layouts.php</a>
</li>
+<li>layouts_init()
+: <a class="el" href="layouts_8php.html#a39c8e9f72641c684c8b689bd91a642fa">layouts.php</a>
+</li>
<li>legal_webbie()
: <a class="el" href="text_8php.html#a2690ad67bb6fb97ef69de3e8d23f2728">text.php</a>
</li>
@@ -181,11 +184,14 @@ $(document).ready(function(){initNavTree('globals_0x6c.html','');});
: <a class="el" href="text_8php.html#a11255c8c4e5245b6c24f97684826aa54">text.php</a>
</li>
<li>list_post_dates()
-: <a class="el" href="items_8php.html#aa2d3caa2f27720762b5c729e07df40fb">items.php</a>
+: <a class="el" href="items_8php.html#ab33fa9756aaa5f39a6104d57a62baf00">items.php</a>
</li>
<li>list_public_sites()
: <a class="el" href="dirsearch_8php.html#a985d410a170549429857af6ff2673149">dirsearch.php</a>
</li>
+<li>list_smilies()
+: <a class="el" href="text_8php.html#a4446c7f8996a280f7e08b7bfe6c6c8bc">text.php</a>
+</li>
<li>load_config()
: <a class="el" href="include_2config_8php.html#a27559f388c9b9af81c94e48d6889d1d1">config.php</a>
</li>
@@ -202,7 +208,10 @@ $(document).ready(function(){initNavTree('globals_0x6c.html','');});
: <a class="el" href="plugin_8php.html#a326365e48ef94f0b9a0a771b8d75e813">plugin.php</a>
</li>
<li>load_pconfig()
-: <a class="el" href="include_2config_8php.html#ac543813a980b3841cc5a277fcd4a24a6">config.php</a>
+: <a class="el" href="include_2config_8php.html#a559791dda7fef8a4b2394c83e835787b">config.php</a>
+</li>
+<li>load_pdl()
+: <a class="el" href="boot_8php.html#a50a6707a28c7d05d3f49eaabc7994501">boot.php</a>
</li>
<li>load_plugin()
: <a class="el" href="plugin_8php.html#a9ca9632b7309a65b05c03a3e2f473a3d">plugin.php</a>
@@ -211,7 +220,7 @@ $(document).ready(function(){initNavTree('globals_0x6c.html','');});
: <a class="el" href="language_8php.html#a7e9904c730bb24ddcb0ff50fc96f6b05">language.php</a>
</li>
<li>load_xconfig()
-: <a class="el" href="include_2config_8php.html#a55bbed9a014c9109c767486834f3ca33">config.php</a>
+: <a class="el" href="include_2config_8php.html#aee4b619839cf4b64220f34edf5c67b52">config.php</a>
</li>
<li>local_dir_update()
: <a class="el" href="dir__fns_8php.html#acd37b17dce3bdec6d5a6344a20598c1e">dir_fns.php</a>
@@ -225,6 +234,15 @@ $(document).ready(function(){initNavTree('globals_0x6c.html','');});
<li>lockview_content()
: <a class="el" href="lockview_8php.html#a851e26ab9a1008df5c5ebebea31e9b44">lockview.php</a>
</li>
+<li>locs_content()
+: <a class="el" href="locs_8php.html#a6c900f53970c0d0e738d2fe06d27ca44">locs.php</a>
+</li>
+<li>locs_post()
+: <a class="el" href="locs_8php.html#a6b43654592919ac863d67a1f787a69b9">locs.php</a>
+</li>
+<li>log_failed_login()
+: <a class="el" href="auth_8php.html#ae3ecb5f34f202c7f9a61c5d589f6c6e1">auth.php</a>
+</li>
<li>logger()
: <a class="el" href="text_8php.html#a030fa5ecc64168af0c4f44897a9bce63">text.php</a>
</li>
diff --git a/doc/html/globals_0x6d.html b/doc/html/globals_0x6d.html
index ee4d52af8..8a4bcc2cc 100644
--- a/doc/html/globals_0x6d.html
+++ b/doc/html/globals_0x6d.html
@@ -180,6 +180,9 @@ $(document).ready(function(){initNavTree('globals_0x6d.html','');});
<li>mail_store()
: <a class="el" href="items_8php.html#a77da7ce9a117601d49ac4a67c71b514f">items.php</a>
</li>
+<li>make_xchan_hash()
+: <a class="el" href="zot_8php.html#a0fc2211c5309d9f925ecc4115e3fdb75">zot.php</a>
+</li>
<li>manage_content()
: <a class="el" href="manage_8php.html#a2bca247b5296827638959138367db4f5">manage.php</a>
</li>
@@ -187,11 +190,14 @@ $(document).ready(function(){initNavTree('globals_0x6d.html','');});
: <a class="el" href="setup_8php.html#abe405d227ba7232971964a706d4f3bce">setup.php</a>
</li>
<li>map_scope()
-: <a class="el" href="items_8php.html#ac1fcf621dce7370515b420a7753f4726">items.php</a>
+: <a class="el" href="items_8php.html#a8675e62674de6fb7c42e4a408c7116cc">items.php</a>
</li>
<li>marital_selector()
: <a class="el" href="profile__selectors_8php.html#a7473dd095987e1cdcc79d4f0bb5e6798">profile_selectors.php</a>
</li>
+<li>marital_selector_min()
+: <a class="el" href="profile__selectors_8php.html#adc79715bd2e102b4583fb530749ec534">profile_selectors.php</a>
+</li>
<li>mark_orphan_hubsxchans()
: <a class="el" href="Contact_8php.html#a08845ce8c5b997d5edac38ae7118b5c8">Contact.php</a>
</li>
@@ -199,7 +205,7 @@ $(document).ready(function(){initNavTree('globals_0x6d.html','');});
: <a class="el" href="match_8php.html#a1dd853e959b9e70c1911bb2fb5f5130d">match.php</a>
</li>
<li>match_openid()
-: <a class="el" href="auth_8php.html#ab7be44ee051c0aa29847807cf2c5dd38">auth.php</a>
+: <a class="el" href="auth_8php.html#a69fa663e6baf65f80d1b114ad72615f2">auth.php</a>
</li>
<li>MAX_IMAGE_LENGTH
: <a class="el" href="boot_8php.html#a525ca93ff35d3535d1a2b8ba57876afa">boot.php</a>
@@ -255,6 +261,9 @@ $(document).ready(function(){initNavTree('globals_0x6d.html','');});
<li>menu_list()
: <a class="el" href="include_2menu_8php.html#a32701c4245e78ba9106eef52c08bf33d">menu.php</a>
</li>
+<li>menu_list_count()
+: <a class="el" href="include_2menu_8php.html#a251bf7e15d21627fd92614198e41c485">menu.php</a>
+</li>
<li>menu_post()
: <a class="el" href="mod_2menu_8php.html#aaa491ef173868fe002aece4632bcf393">menu.php</a>
</li>
@@ -267,6 +276,12 @@ $(document).ready(function(){initNavTree('globals_0x6d.html','');});
<li>message_content()
: <a class="el" href="mod_2message_8php.html#ac72dfed3ce08fcb331d66b37edc6e15f">message.php</a>
</li>
+<li>metopem()
+: <a class="el" href="crypto_8php.html#af8bbdeaf4abed7b40365d301e6013c85">crypto.php</a>
+</li>
+<li>metorsa()
+: <a class="el" href="crypto_8php.html#a573f02517abe4ac9241268263063b2a0">crypto.php</a>
+</li>
<li>micropro()
: <a class="el" href="text_8php.html#a2a902f5fdba8646333e997898ac45ea3">text.php</a>
</li>
diff --git a/doc/html/globals_0x6e.html b/doc/html/globals_0x6e.html
index bfe2639a5..0da5b30b7 100644
--- a/doc/html/globals_0x6e.html
+++ b/doc/html/globals_0x6e.html
@@ -145,7 +145,8 @@ $(document).ready(function(){initNavTree('globals_0x6e.html','');});
<h3><a class="anchor" id="index_n"></a>- n -</h3><ul>
<li>n
-: <a class="el" href="php2po_8php.html#a1594a11499d06cc8a789ee7ca0c7a12b">php2po.php</a>
+: <a class="el" href="fixd_8php.html#a9d4f8a2ab4d92b3ccfd7cba0458098eb">fixd.php</a>
+, <a class="el" href="php2po_8php.html#a1594a11499d06cc8a789ee7ca0c7a12b">php2po.php</a>
</li>
<li>namesList()
: <a class="el" href="docblox__errorchecker_8php.html#a2b767cfc461fdd5061fffc9e4a806d5b">docblox_errorchecker.php</a>
@@ -192,6 +193,9 @@ $(document).ready(function(){initNavTree('globals_0x6e.html','');});
<li>NAMESPACE_TOMB
: <a class="el" href="boot_8php.html#a4bfe22e163657690dfb6d5b1d04cb47e">boot.php</a>
</li>
+<li>NAMESPACE_YMEDIA
+: <a class="el" href="boot_8php.html#a3d48dffd9dc73a187263c3002cdf00c0">boot.php</a>
+</li>
<li>NAMESPACE_ZOT
: <a class="el" href="boot_8php.html#a49f2a70b3b43aa904223a8d19e986a47">boot.php</a>
</li>
@@ -306,6 +310,12 @@ $(document).ready(function(){initNavTree('globals_0x6e.html','');});
<li>notifications_content()
: <a class="el" href="notifications_8php.html#aadd0b5525bd8c283a5d8a37982bbfe62">notifications.php</a>
</li>
+<li>notifications_off()
+: <a class="el" href="identity_8php.html#a2e6a1cc35887937823ec7fbb90472afe">identity.php</a>
+</li>
+<li>notifications_on()
+: <a class="el" href="identity_8php.html#a5650319c799de09d1b6d1076b6f839a4">identity.php</a>
+</li>
<li>notifications_post()
: <a class="el" href="notifications_8php.html#a5baffec7b2e625c9f9cefbc097550d33">notifications.php</a>
</li>
diff --git a/doc/html/globals_0x6f.html b/doc/html/globals_0x6f.html
index 790779373..53902b780 100644
--- a/doc/html/globals_0x6f.html
+++ b/doc/html/globals_0x6f.html
@@ -186,6 +186,9 @@ $(document).ready(function(){initNavTree('globals_0x6f.html','');});
<li>oexchange_init()
: <a class="el" href="oexchange_8php.html#ac8e2e469ddc3db984b0c1b44558aca59">oexchange.php</a>
</li>
+<li>old_webfinger()
+: <a class="el" href="include_2network_8php.html#a872bbe72d23826c64c9e0f822180a3ec">network.php</a>
+</li>
<li>onedirsync_run()
: <a class="el" href="onedirsync_8php.html#a411aedd47c57476099647961e6a86691">onedirsync.php</a>
</li>
@@ -201,6 +204,9 @@ $(document).ready(function(){initNavTree('globals_0x6f.html','');});
<li>opensearch_init()
: <a class="el" href="opensearch_8php.html#ad13034877a496565ac7d99e9fc6f55e9">opensearch.php</a>
</li>
+<li>os_mkdir()
+: <a class="el" href="boot_8php.html#a5fbebdf7a1c0ea8f904dbd9d78c2c06c">boot.php</a>
+</li>
</ul>
</div><!-- contents -->
</div><!-- doc-content -->
diff --git a/doc/html/globals_0x70.html b/doc/html/globals_0x70.html
index be6b6772e..2f99e443d 100644
--- a/doc/html/globals_0x70.html
+++ b/doc/html/globals_0x70.html
@@ -144,6 +144,9 @@ $(document).ready(function(){initNavTree('globals_0x70.html','');});
<div class="textblock">Here is a list of all file members with links to the files they belong to:</div>
<h3><a class="anchor" id="index_p"></a>- p -</h3><ul>
+<li>p_init()
+: <a class="el" href="p_8php.html#af9d5530ca0b3dc9409cf591c39e2480e">p.php</a>
+</li>
<li>page
: <a class="el" href="mod__import_8php.html#a8db1899eeeb44dabd0904065b63627bb">mod_import.php</a>
</li>
@@ -168,6 +171,9 @@ $(document).ready(function(){initNavTree('globals_0x70.html','');});
<li>PAGE_HIDDEN
: <a class="el" href="boot_8php.html#a5e322a2a2d0f51924c0b2e874988e640">boot.php</a>
</li>
+<li>PAGE_HUBADMIN
+: <a class="el" href="boot_8php.html#afbb21ecccac9819aa65397e816868a5f">boot.php</a>
+</li>
<li>page_init()
: <a class="el" href="page_8php.html#a4d89800c0366a239191b1692c09635cf">page.php</a>
</li>
@@ -213,6 +219,12 @@ $(document).ready(function(){initNavTree('globals_0x70.html','');});
<li>pdledit_post()
: <a class="el" href="pdledit_8php.html#a81da3c955d0e3db55d148a31483104c7">pdledit.php</a>
</li>
+<li>pemtome()
+: <a class="el" href="crypto_8php.html#a798368843cdd9bb08386b48e53e29e8c">crypto.php</a>
+</li>
+<li>pemtorsa()
+: <a class="el" href="crypto_8php.html#a35bc357c93f4ddc67ef377620b0349e8">crypto.php</a>
+</li>
<li>perm_is_allowed()
: <a class="el" href="permissions_8php.html#a67ada9ed51e77885b6b0f6a28cee1835">permissions.php</a>
</li>
@@ -222,9 +234,6 @@ $(document).ready(function(){initNavTree('globals_0x70.html','');});
<li>perms2str()
: <a class="el" href="text_8php.html#a98fd99dee3da8cf4c148dc04efe782ee">text.php</a>
</li>
-<li>PERMS_A_BOOKMARK
-: <a class="el" href="boot_8php.html#a8b2af16eaee9e7768a88d0e437877f3b">boot.php</a>
-</li>
<li>PERMS_A_DELEGATE
: <a class="el" href="boot_8php.html#a423505ab8dbd8e39d04ae3fe1374102b">boot.php</a>
</li>
@@ -276,6 +285,9 @@ $(document).ready(function(){initNavTree('globals_0x70.html','');});
<li>PERMS_W_COMMENT
: <a class="el" href="boot_8php.html#a32df13fec0e43281da5979e1f5579aa8">boot.php</a>
</li>
+<li>PERMS_W_LIKE
+: <a class="el" href="boot_8php.html#af3ff14985bffbd951a6ea356b7ec3007">boot.php</a>
+</li>
<li>PERMS_W_MAIL
: <a class="el" href="boot_8php.html#a6b31dd451bc6c37fe7c9c766ff385aaf">boot.php</a>
</li>
@@ -297,9 +309,15 @@ $(document).ready(function(){initNavTree('globals_0x70.html','');});
<li>PERMS_W_WALL
: <a class="el" href="boot_8php.html#a6b14a31a8aa9f3452a13383f413bffa2">boot.php</a>
</li>
+<li>PHOTO_ADULT
+: <a class="el" href="boot_8php.html#a921c55b9fa59a327a5f0e07fa1ccb2e0">boot.php</a>
+</li>
<li>photo_factory()
: <a class="el" href="photo__driver_8php.html#a32e2817faa25d7f11f60a8abff565035">photo_driver.php</a>
</li>
+<li>PHOTO_FLAG_OS
+: <a class="el" href="boot_8php.html#ab49a5d43ce1150c5af8c750ccb14e15f">boot.php</a>
+</li>
<li>photo_init()
: <a class="el" href="photo_8php.html#a582779d24882b0d31ee909a91d70a448">photo.php</a>
</li>
@@ -360,12 +378,24 @@ $(document).ready(function(){initNavTree('globals_0x70.html','');});
<li>pipe_streams()
: <a class="el" href="include_2attach_8php.html#a5d484de2d19a93071571d6499a50ae34">attach.php</a>
</li>
+<li>pkcs1_encode()
+: <a class="el" href="crypto_8php.html#a890b443f80f0968fb9eabd93fc99dbb5">crypto.php</a>
+</li>
+<li>pkcs1to8()
+: <a class="el" href="crypto_8php.html#a4d15d19b446dbf47804675df7c85e2a9">crypto.php</a>
+</li>
<li>pkcs5_pad()
: <a class="el" href="crypto_8php.html#ad5e51fd44cff93cfaa07a37e24a5edec">crypto.php</a>
</li>
<li>pkcs5_unpad()
: <a class="el" href="crypto_8php.html#ac95ac3b1b23b65b04a86613d4206ae85">crypto.php</a>
</li>
+<li>pkcs8_encode()
+: <a class="el" href="crypto_8php.html#a0e941b6b18ff895d1a2448741abf2ef2">crypto.php</a>
+</li>
+<li>pkcs8to1()
+: <a class="el" href="crypto_8php.html#a7427a18417341aa35e2207bfa205e432">crypto.php</a>
+</li>
<li>plugin_is_installed()
: <a class="el" href="plugin_8php.html#a855c4fdb38c0fc2714d537752a4347f9">plugin.php</a>
</li>
@@ -387,12 +417,21 @@ $(document).ready(function(){initNavTree('globals_0x70.html','');});
<li>poke_init()
: <a class="el" href="poke_8php.html#a9725aab97b3983e6a98bd81c4efe7d3b">poke.php</a>
</li>
+<li>poll_content()
+: <a class="el" href="poll_8php.html#a3314c26bd2ac0ed831cebf3315cd3263">poll.php</a>
+</li>
+<li>poll_init()
+: <a class="el" href="poll_8php.html#ab9ecd5b71af090a5da9c93f34f7ec930">poll.php</a>
+</li>
<li>POLL_MULTIPLE_CHOICE
: <a class="el" href="boot_8php.html#abbf5ac24eb8aeedb862f618ee0d21e86">boot.php</a>
</li>
<li>POLL_OVERWRITE
: <a class="el" href="boot_8php.html#a2b525996e4426bdddbcec277778bde08">boot.php</a>
</li>
+<li>poll_post()
+: <a class="el" href="poll_8php.html#a26be9d4f230cb68f5be326198cfc6c77">poll.php</a>
+</li>
<li>POLL_SIMPLE_RATING
: <a class="el" href="boot_8php.html#ad88a70ec62e08d590123d3697dfe64d5">boot.php</a>
</li>
@@ -417,63 +456,6 @@ $(document).ready(function(){initNavTree('globals_0x70.html','');});
<li>post_post()
: <a class="el" href="post_8php.html#af59e6a1dc22d19d9257b01cd7ccedb75">post.php</a>
</li>
-<li>post_to_red_acct_name
-: <a class="el" href="post__to__red_8php.html#a588cea66afe0b32f27f2713d44940119">post_to_red.php</a>
-</li>
-<li>post_to_red_admin()
-: <a class="el" href="post__to__red_8php.html#aeec4125719184e7b097b3b9fba3101b5">post_to_red.php</a>
-</li>
-<li>post_to_red_deactivate()
-: <a class="el" href="post__to__red_8php.html#a49fd35f7b1cdddfe6e26ddfcf8d3c4ec">post_to_red.php</a>
-</li>
-<li>post_to_red_delete_comment()
-: <a class="el" href="post__to__red_8php.html#a5cc2a89a6d33cdb8e2ca557a69bef42d">post_to_red.php</a>
-</li>
-<li>post_to_red_delete_post()
-: <a class="el" href="post__to__red_8php.html#a4674bb5ce2baa32c559607460c39a2c5">post_to_red.php</a>
-</li>
-<li>post_to_red_display_admin_page()
-: <a class="el" href="post__to__red_8php.html#a8ec8f8809e3c5d1b2c9598c8185d63aa">post_to_red.php</a>
-</li>
-<li>post_to_red_displayAdminContent()
-: <a class="el" href="post__to__red_8php.html#a75db5d87226a0287a0ac0fa315f2bcfd">post_to_red.php</a>
-</li>
-<li>post_to_red_get_acct_name()
-: <a class="el" href="post__to__red_8php.html#ae6f3a2c0561cbeacda5be565b06de8a7">post_to_red.php</a>
-</li>
-<li>post_to_red_get_avatar()
-: <a class="el" href="post__to__red_8php.html#ae0b881461afbdba93d9329068ea52136">post_to_red.php</a>
-</li>
-<li>post_to_red_get_channel_name()
-: <a class="el" href="post__to__red_8php.html#aacba7a0646fc00ae6ac4f5dc383fccab">post_to_red.php</a>
-</li>
-<li>post_to_red_get_password()
-: <a class="el" href="post__to__red_8php.html#a4d90ac085c14f53ff4d8ab4c23477ea6">post_to_red.php</a>
-</li>
-<li>post_to_red_get_seed_location()
-: <a class="el" href="post__to__red_8php.html#a96d0ccecb96600ef1bfd50ab3f77315f">post_to_red.php</a>
-</li>
-<li>post_to_red_path
-: <a class="el" href="post__to__red_8php.html#a6210f39392a5f0fa0255cc7d3760493a">post_to_red.php</a>
-</li>
-<li>post_to_red_post()
-: <a class="el" href="post__to__red_8php.html#af5fd50e2c42ede85f8a9e8d9ee3cf540">post_to_red.php</a>
-</li>
-<li>post_to_red_post_checkbox()
-: <a class="el" href="post__to__red_8php.html#a0f139dea77a94c98f26007963eea639c">post_to_red.php</a>
-</li>
-<li>post_to_red_post_field_data()
-: <a class="el" href="post__to__red_8php.html#a7e68a8d9c83cb28d032aad3ea85ce0a6">post_to_red.php</a>
-</li>
-<li>post_to_red_post_meta_content()
-: <a class="el" href="post__to__red_8php.html#aa97aeda12ef080665f16311a4e1eb901">post_to_red.php</a>
-</li>
-<li>post_to_red_settings_link()
-: <a class="el" href="post__to__red_8php.html#a906be8f72cf1aa2e199c0683ea6a4017">post_to_red.php</a>
-</li>
-<li>post_to_red_version
-: <a class="el" href="post__to__red_8php.html#af3e7ebd361d4ed7cb6d43209970cd94a">post_to_red.php</a>
-</li>
<li>posted_dates()
: <a class="el" href="items_8php.html#ad2abb4644ff1f20fefbc80326fe01cf0">items.php</a>
</li>
@@ -547,7 +529,10 @@ $(document).ready(function(){initNavTree('globals_0x70.html','');});
: <a class="el" href="zot_8php.html#ac301c67864917c35922257950ae0f95c">zot.php</a>
</li>
<li>process_delivery()
-: <a class="el" href="zot_8php.html#a4d9e6ca295e443b740d9960c304b3474">zot.php</a>
+: <a class="el" href="zot_8php.html#a0e3006e7a456b2175a9badc96bc5176d">zot.php</a>
+</li>
+<li>process_location_delivery()
+: <a class="el" href="zot_8php.html#a8eeefdb0dad4c436bea9d1c06c0a7988">zot.php</a>
</li>
<li>process_mail_delivery()
: <a class="el" href="zot_8php.html#aa6ae96db8cbbdbb10e6876d206bbf7cc">zot.php</a>
@@ -615,6 +600,9 @@ $(document).ready(function(){initNavTree('globals_0x70.html','');});
<li>public_recips()
: <a class="el" href="zot_8php.html#a083aec6c900d244e1bfc1406f9461465">zot.php</a>
</li>
+<li>pubrsatome()
+: <a class="el" href="crypto_8php.html#a2a3fae7caca27f86d158eeaf69b6f287">crypto.php</a>
+</li>
<li>pubsites_content()
: <a class="el" href="pubsites_8php.html#af614e279aab54065345bda6b03eafdf0">pubsites.php</a>
</li>
diff --git a/doc/html/globals_0x72.html b/doc/html/globals_0x72.html
index a2f1cbafb..26138e9bd 100644
--- a/doc/html/globals_0x72.html
+++ b/doc/html/globals_0x72.html
@@ -145,7 +145,7 @@ $(document).ready(function(){initNavTree('globals_0x72.html','');});
<h3><a class="anchor" id="index_r"></a>- r -</h3><ul>
<li>random_profile()
-: <a class="el" href="Contact_8php.html#a852fa476f0c70bde10a4f2533aec5f71">Contact.php</a>
+: <a class="el" href="Contact_8php.html#a7e3f5bef8ea1d2bf8434c9be36a2b713">Contact.php</a>
</li>
<li>random_string()
: <a class="el" href="text_8php.html#a9d6a5ee1290de7a8b483fe78585daade">text.php</a>
@@ -171,8 +171,8 @@ $(document).ready(function(){initNavTree('globals_0x72.html','');});
<li>rebuild_theme_table()
: <a class="el" href="admin_8php.html#ae46311a3fefc21abc838a26e91789de6">admin.php</a>
</li>
-<li>red_comment()
-: <a class="el" href="post__to__red_8php.html#a085c250d4ceff5e4f10052f3d2039823">post_to_red.php</a>
+<li>receive_post()
+: <a class="el" href="receive_8php.html#a03d8fa26e77844020ba5602deca7d494">receive.php</a>
</li>
<li>red_escape_codeblock()
: <a class="el" href="items_8php.html#a49905ea75adfe8a2d110be344d18d6a6">items.php</a>
@@ -192,9 +192,6 @@ $(document).ready(function(){initNavTree('globals_0x72.html','');});
<li>RED_VERSION
: <a class="el" href="boot_8php.html#a21cc29e0025943e7c28ff58cb4856ac3">boot.php</a>
</li>
-<li>red_xmlrpc_methods()
-: <a class="el" href="post__to__red_8php.html#a3a2af6ad845239f26e86fccabf8639e1">post_to_red.php</a>
-</li>
<li>red_zrl_callback()
: <a class="el" href="items_8php.html#a4e6d7639431e0dd8e9f4dba8e1ac408b">items.php</a>
</li>
@@ -216,6 +213,9 @@ $(document).ready(function(){initNavTree('globals_0x72.html','');});
<li>RedFileData()
: <a class="el" href="reddav_8php.html#a9f531641dfb4e43cd88ac1a9ae7e2088">reddav.php</a>
</li>
+<li>REDMATRIX_IMPORTCHANNEL
+: <a class="el" href="refimport_8php.html#a54003135d7c8994a76e831fb6faa2fe6">refimport.php</a>
+</li>
<li>reduce()
: <a class="el" href="docblox__errorchecker_8php.html#ae9562cf60aa693114603d27b55d2185f">docblox_errorchecker.php</a>
</li>
@@ -237,6 +237,42 @@ $(document).ready(function(){initNavTree('globals_0x72.html','');});
<li>ref_session_write()
: <a class="el" href="session_8php.html#ac4461c1984543d3553e73dba2771568f">session.php</a>
</li>
+<li>refimport_content()
+: <a class="el" href="refimport_8php.html#ad97ebb5feda0230a4834e0b3637a0d29">refimport.php</a>
+</li>
+<li>reflect_article_callback()
+: <a class="el" href="refimport_8php.html#a53434bc19e6264db89e18d92ddc09860">refimport.php</a>
+</li>
+<li>REFLECT_BASEURL
+: <a class="el" href="refimport_8php.html#ac43699d8ae86175e049aa4e87853caac">refimport.php</a>
+</li>
+<li>REFLECT_BLOGNAME
+: <a class="el" href="refimport_8php.html#a8459983ebf013ed5737f7ed317bfae1f">refimport.php</a>
+</li>
+<li>reflect_comment_store()
+: <a class="el" href="refimport_8php.html#a01a29630fa5e1ce6cd5e1fd75280747c">refimport.php</a>
+</li>
+<li>REFLECT_EXPORTUSERNAME
+: <a class="el" href="refimport_8php.html#ad297afe0730c9119dd94d3cf0521b025">refimport.php</a>
+</li>
+<li>reflect_find_user()
+: <a class="el" href="refimport_8php.html#aa98de7d112e3a5b4b6956f108d04a41d">refimport.php</a>
+</li>
+<li>reflect_get_channel()
+: <a class="el" href="refimport_8php.html#a6c3e0475fde9fe72ff2492a5e3e5259c">refimport.php</a>
+</li>
+<li>REFLECT_MAXPERRUN
+: <a class="el" href="refimport_8php.html#a9c1f681f1f303400a9818696a9f96d6f">refimport.php</a>
+</li>
+<li>REFLECT_OVERWRITE
+: <a class="el" href="refimport_8php.html#aeec793cefa260f788b7d005adcb35796">refimport.php</a>
+</li>
+<li>reflect_photo_callback()
+: <a class="el" href="refimport_8php.html#ae9c56f779d1e0ac7bcb2a460129e7ae5">refimport.php</a>
+</li>
+<li>REFLECT_USERFILE
+: <a class="el" href="refimport_8php.html#a684a44d2401abf75f441591bcb41d10d">refimport.php</a>
+</li>
<li>REGISTER_APPROVE
: <a class="el" href="boot_8php.html#a7176c0f9f1c98421b97735d892cf6252">boot.php</a>
</li>
@@ -288,9 +324,18 @@ $(document).ready(function(){initNavTree('globals_0x72.html','');});
<li>remove_community_tag()
: <a class="el" href="zot_8php.html#aad25a3fe0e1566121d6fb8222979bc10">zot.php</a>
</li>
+<li>remove_obsolete_hublocs()
+: <a class="el" href="hubloc_8php.html#a84c79b7be352f62d12fe4fa2c80fc6ea">hubloc.php</a>
+</li>
<li>remove_queue_item()
: <a class="el" href="queue__fn_8php.html#a8fe71e981399bbf5d000a6ca42f57b24">queue_fn.php</a>
</li>
+<li>removeaccount_content()
+: <a class="el" href="removeaccount_8php.html#a516e7380b9e5796054aa8245f3509695">removeaccount.php</a>
+</li>
+<li>removeaccount_post()
+: <a class="el" href="removeaccount_8php.html#a26a3325292e932c59793430ab737126a">removeaccount.php</a>
+</li>
<li>removeme_content()
: <a class="el" href="removeme_8php.html#a065a589caa2aa84c60f7073a28f0ad9c">removeme.php</a>
</li>
@@ -330,12 +375,18 @@ $(document).ready(function(){initNavTree('globals_0x72.html','');});
<li>rpost_content()
: <a class="el" href="rpost_8php.html#a8190354d789000806d9879aea276728f">rpost.php</a>
</li>
+<li>rrmdir()
+: <a class="el" href="Contact_8php.html#ab5895b75a3b2abdddf1cb351a8c6b58b">Contact.php</a>
+</li>
<li>rsa_sign()
: <a class="el" href="crypto_8php.html#a920e5f222d0020f47556033d8b2b6552">crypto.php</a>
</li>
<li>rsa_verify()
: <a class="el" href="crypto_8php.html#ab4f21d8f6b8ece0915e7c8bb73379f96">crypto.php</a>
</li>
+<li>rsatopem()
+: <a class="el" href="crypto_8php.html#a7f7e650aaeaa3832580a73eb00966b26">crypto.php</a>
+</li>
<li>rsd_xml_content()
: <a class="el" href="rsd__xml_8php.html#a740cd02fa15e5a53f8547fac73f0ab82">rsd_xml.php</a>
</li>
diff --git a/doc/html/globals_0x73.html b/doc/html/globals_0x73.html
index 6c525c6ee..dadbc4e5d 100644
--- a/doc/html/globals_0x73.html
+++ b/doc/html/globals_0x73.html
@@ -144,12 +144,21 @@ $(document).ready(function(){initNavTree('globals_0x73.html','');});
<div class="textblock">Here is a list of all file members with links to the files they belong to:</div>
<h3><a class="anchor" id="index_s"></a>- s -</h3><ul>
+<li>salmon_key()
+: <a class="el" href="crypto_8php.html#a9191447cc46f0b4eaba3273e313994d5">crypto.php</a>
+</li>
<li>sanitise_acl()
: <a class="el" href="text_8php.html#a9fbeae13c9abd6e27cb4d8d1817f969c">text.php</a>
</li>
<li>scale_external_images()
: <a class="el" href="include_2network_8php.html#ae8d9c41a11000fb8667039fc71b4f73f">network.php</a>
</li>
+<li>scrape_feed()
+: <a class="el" href="include_2network_8php.html#a316f318167a039c89719afbd129a8f3c">network.php</a>
+</li>
+<li>scrape_vcard()
+: <a class="el" href="include_2network_8php.html#acb0bd7f5fe38ff1eaebeae3284525070">network.php</a>
+</li>
<li>script_path()
: <a class="el" href="plugin_8php.html#a0e8c2ea50bfdbc39e17ccccaea21ddc3">plugin.php</a>
</li>
@@ -168,9 +177,6 @@ $(document).ready(function(){initNavTree('globals_0x73.html','');});
<li>searchbox()
: <a class="el" href="text_8php.html#aae91e4d2a2c6f7a9daccd2c186ae3447">text.php</a>
</li>
-<li>select_timezone()
-: <a class="el" href="datetime_8php.html#a633dadba426fa2f60b25fabdb19ebc1f">datetime.php</a>
-</li>
<li>send_message()
: <a class="el" href="include_2message_8php.html#a751ffd6635022b2190f56154ee745752">message.php</a>
</li>
@@ -184,10 +190,13 @@ $(document).ready(function(){initNavTree('globals_0x73.html','');});
: <a class="el" href="account_8php.html#aa9c29c497c17d8f9344dce8631ad8761">account.php</a>
</li>
<li>service_class_allows()
-: <a class="el" href="plugin_8php.html#a030cec6793b909c439c0336ba39b1571">plugin.php</a>
+: <a class="el" href="account_8php.html#a030cec6793b909c439c0336ba39b1571">account.php</a>
</li>
<li>service_class_fetch()
-: <a class="el" href="plugin_8php.html#a905b54e10704b283ac64680a8abc0971">plugin.php</a>
+: <a class="el" href="account_8php.html#a905b54e10704b283ac64680a8abc0971">account.php</a>
+</li>
+<li>service_limits_content()
+: <a class="el" href="service__limits_8php.html#a653424aac63c5cd05ba70c3c77bf7f8a">service_limits.php</a>
</li>
<li>set_config()
: <a class="el" href="include_2config_8php.html#ad6da879e4fb5b37d1e161d4e9be5c32a">config.php</a>
@@ -219,9 +228,18 @@ $(document).ready(function(){initNavTree('globals_0x73.html','');});
<li>sexpref_selector()
: <a class="el" href="profile__selectors_8php.html#a3b50b3ea4ea4bdbebebfffc5d1b157c7">profile_selectors.php</a>
</li>
+<li>sexpref_selector_min()
+: <a class="el" href="profile__selectors_8php.html#ab0eae5c0ceba77364469f0f580f0d074">profile_selectors.php</a>
+</li>
<li>share_init()
: <a class="el" href="share_8php.html#afeb26046bdd02567ecd29ab5f188b249">share.php</a>
</li>
+<li>share_shield()
+: <a class="el" href="bb2diaspora_8php.html#ad033be99e87a2aaa05e569c68f30792d">bb2diaspora.php</a>
+</li>
+<li>share_unshield()
+: <a class="el" href="bb2diaspora_8php.html#ab61b4f8c065e97b151411858bb2f209a">bb2diaspora.php</a>
+</li>
<li>showForm()
: <a class="el" href="fpostit_8php.html#a3f3ae3ae61578b5671673914fd894443">fpostit.php</a>
</li>
@@ -291,6 +309,9 @@ $(document).ready(function(){initNavTree('globals_0x73.html','');});
<li>starred_init()
: <a class="el" href="starred_8php.html#a63024fb418c678e49fd535e3752d349a">starred.php</a>
</li>
+<li>start_delivery_chain()
+: <a class="el" href="items_8php.html#adf2b8137dc4ad9ec958de2842f16f3c2">items.php</a>
+</li>
<li>startup()
: <a class="el" href="boot_8php.html#aca47505b8732177f52bb2d647eb2741c">boot.php</a>
</li>
@@ -300,6 +321,9 @@ $(document).ready(function(){initNavTree('globals_0x73.html','');});
<li>STORAGE_DEFAULT_PERMISSIONS
: <a class="el" href="boot_8php.html#aecaa1b6945b317ba8f1daf4af2aed8e6">boot.php</a>
</li>
+<li>store_diaspora_comment_sig()
+: <a class="el" href="items_8php.html#a25221826fa4621f523c68483e3b6af26">items.php</a>
+</li>
<li>store_item_tag()
: <a class="el" href="taxonomy_8php.html#a4ba1339b2a7054971178ce194e4440fd">taxonomy.php</a>
</li>
@@ -324,9 +348,15 @@ $(document).ready(function(){initNavTree('globals_0x73.html','');});
<li>stripdcode_br_cb()
: <a class="el" href="bb2diaspora_8php.html#a180b0e3a7d702998be19e3c3b44b0e93">bb2diaspora.php</a>
</li>
+<li>stumble_init()
+: <a class="el" href="stumble_2php_2theme_8php.html#a71db9eff6289e0ee47771c37c01d6753">theme.php</a>
+</li>
<li>subthread_content()
: <a class="el" href="subthread_8php.html#a50368f3d825b77996030528e7fbfa3d3">subthread.php</a>
</li>
+<li>suckerberg_init()
+: <a class="el" href="suckerberg_2php_2theme_8php.html#a4104fce7d5fb71d15ed811978b628fc8">theme.php</a>
+</li>
<li>suggest_content()
: <a class="el" href="suggest_8php.html#a58748a8235d4523f8333847f3e42dd91">suggest.php</a>
</li>
@@ -339,6 +369,9 @@ $(document).ready(function(){initNavTree('globals_0x73.html','');});
<li>sync_directories()
: <a class="el" href="dir__fns_8php.html#aa666e7df6ca8c332f4081c9b66b4bdf6">dir_fns.php</a>
</li>
+<li>sync_locations()
+: <a class="el" href="zot_8php.html#ab15c04e7e5f44edf45ec50dd7d183254">zot.php</a>
+</li>
<li>system_down()
: <a class="el" href="system__unavailable_8php.html#a73751a6bcc17ad3ca503496e2fb020fa">system_unavailable.php</a>
</li>
diff --git a/doc/html/globals_0x74.html b/doc/html/globals_0x74.html
index c5db44832..791885bd4 100644
--- a/doc/html/globals_0x74.html
+++ b/doc/html/globals_0x74.html
@@ -231,21 +231,12 @@ $(document).ready(function(){initNavTree('globals_0x74.html','');});
<li>TERM_UNKNOWN
: <a class="el" href="boot_8php.html#a0c59dde058efebbc66520d136cbd1631">boot.php</a>
</li>
-<li>terminate_friendship()
-: <a class="el" href="Contact_8php.html#a38daa1c210b78385307123450ca9a1fc">Contact.php</a>
-</li>
<li>termtype()
: <a class="el" href="items_8php.html#ad34827ed330898456783fb14c7b46154">items.php</a>
</li>
<li>tgroup_check()
: <a class="el" href="items_8php.html#a88c6cf7649ac836fbbed82a7a0315110">items.php</a>
</li>
-<li>theme_admin()
-: <a class="el" href="view_2theme_2blogga_2php_2config_8php.html#a09cd81013505f83aea0771243a1e4e53">config.php</a>
-</li>
-<li>theme_admin_post()
-: <a class="el" href="view_2theme_2blogga_2php_2config_8php.html#aef2da5582b7cb6b5f63e5ca5d69fd30b">config.php</a>
-</li>
<li>theme_attachments()
: <a class="el" href="text_8php.html#af9c9ac3f74c82dc60acfa404d0e9dc53">text.php</a>
</li>
@@ -256,7 +247,7 @@ $(document).ready(function(){initNavTree('globals_0x74.html','');});
: <a class="el" href="plugin_8php.html#a65fedcffbe03562ef844cabee37d34e2">plugin.php</a>
</li>
<li>theme_post()
-: <a class="el" href="view_2theme_2blogga_2php_2config_8php.html#ad29461920cf03b9ce1428e21eb1f4ba6">config.php</a>
+: <a class="el" href="view_2theme_2apw_2php_2config_8php.html#ad29461920cf03b9ce1428e21eb1f4ba6">config.php</a>
</li>
<li>theme_status()
: <a class="el" href="admin_8php.html#ad4f74f33944a98b56d2c8c7601f124a4">admin.php</a>
@@ -268,7 +259,7 @@ $(document).ready(function(){initNavTree('globals_0x74.html','');});
: <a class="el" href="thing_8php.html#a8be23b1d475ec3d9291999221c674c80">thing.php</a>
</li>
<li>timesel()
-: <a class="el" href="datetime_8php.html#a36d3d6dff8d76b5f295bb3d9c535a5b1">datetime.php</a>
+: <a class="el" href="datetime_8php.html#a3f239f94e23335d860b148958d87a093">datetime.php</a>
</li>
<li>timezone_cmp()
: <a class="el" href="datetime_8php.html#aa51b5a7ea4f931b23acbdfcea46e9865">datetime.php</a>
@@ -285,9 +276,15 @@ $(document).ready(function(){initNavTree('globals_0x74.html','');});
<li>toggle_theme()
: <a class="el" href="admin_8php.html#af81f081851791cd15e49e8ff6722dc27">admin.php</a>
</li>
+<li>translate_scope()
+: <a class="el" href="items_8php.html#aabfaa193b83154c2a81e91284e5d5e59">items.php</a>
+</li>
<li>translate_system_apps()
: <a class="el" href="include_2apps_8php.html#a48289d5cc44b7638191738106ac5d030">apps.php</a>
</li>
+<li>trim_message()
+: <a class="el" href="po2php_8php.html#a4f3dc9b019d0cd1dc171c54c991ef334">po2php.php</a>
+</li>
<li>tryoembed()
: <a class="el" href="bbcode_8php.html#a55b0cb6973f1ec731de0e726bcc0efa7">bbcode.php</a>
</li>
diff --git a/doc/html/globals_0x75.html b/doc/html/globals_0x75.html
index 7797435b2..95ad7b526 100644
--- a/doc/html/globals_0x75.html
+++ b/doc/html/globals_0x75.html
@@ -144,6 +144,9 @@ $(document).ready(function(){initNavTree('globals_0x75.html','');});
<div class="textblock">Here is a list of all file members with links to the files they belong to:</div>
<h3><a class="anchor" id="index_u"></a>- u -</h3><ul>
+<li>uexport_content()
+: <a class="el" href="uexport_8php.html#ae6f79d60916c01675c8cf663cb5fec84">uexport.php</a>
+</li>
<li>uexport_init()
: <a class="el" href="uexport_8php.html#a118920137dedebe0581623a2e57e7b0d">uexport.php</a>
</li>
@@ -177,6 +180,15 @@ $(document).ready(function(){initNavTree('globals_0x75.html','');});
<li>update_channel_content()
: <a class="el" href="update__channel_8php.html#aca52a9da500f0db2f0a8666af5bc06ba">update_channel.php</a>
</li>
+<li>update_channels_active_halfyear_stat()
+: <a class="el" href="statistics__fns_8php.html#a82726229a961d3bd3d543005c61dd8e6">statistics_fns.php</a>
+</li>
+<li>update_channels_active_monthly_stat()
+: <a class="el" href="statistics__fns_8php.html#ad2b7b595c039c4c2eb0d6cd57a393dfe">statistics_fns.php</a>
+</li>
+<li>update_channels_total_stat()
+: <a class="el" href="statistics__fns_8php.html#a05858927cce81fd367aedf85a94ed90c">statistics_fns.php</a>
+</li>
<li>update_directory_entry()
: <a class="el" href="dir__fns_8php.html#a44062d4b471d1e83f92f6c184585aa13">dir_fns.php</a>
</li>
@@ -186,6 +198,9 @@ $(document).ready(function(){initNavTree('globals_0x75.html','');});
<li>UPDATE_FAILED
: <a class="el" href="boot_8php.html#a75fc600186b13c3b25e661afefb5eac8">boot.php</a>
</li>
+<li>update_feed_item()
+: <a class="el" href="items_8php.html#a9b449eeae50003414b8b30ca927af434">items.php</a>
+</li>
<li>UPDATE_FLAGS_DELETED
: <a class="el" href="boot_8php.html#aea392cb26ed617f3a8cde648385b5df0">boot.php</a>
</li>
@@ -195,9 +210,15 @@ $(document).ready(function(){initNavTree('globals_0x75.html','');});
<li>UPDATE_FLAGS_UPDATED
: <a class="el" href="boot_8php.html#a9690d73434125ce594a1f5e7c2a4f7c0">boot.php</a>
</li>
+<li>update_home_content()
+: <a class="el" href="update__home_8php.html#a668340089acd150b830134476a647d05">update_home.php</a>
+</li>
<li>update_imported_item()
: <a class="el" href="zot_8php.html#a31aad56acf8ff8f2353e6ff8595544df">zot.php</a>
</li>
+<li>update_local_posts_stat()
+: <a class="el" href="statistics__fns_8php.html#a9dd516dda693f17f5ce48a94876f7efa">statistics_fns.php</a>
+</li>
<li>update_modtime()
: <a class="el" href="zot_8php.html#ab319d1d9fff9c7775d9daef42d1f33dd">zot.php</a>
</li>
@@ -220,13 +241,13 @@ $(document).ready(function(){initNavTree('globals_0x75.html','');});
: <a class="el" href="socgraph_8php.html#a790690bb1a1d02483fe31632a160144d">socgraph.php</a>
</li>
<li>upgrade_bool_message()
-: <a class="el" href="plugin_8php.html#a754d7f53b3abc557b753c057dc4e021d">plugin.php</a>
+: <a class="el" href="account_8php.html#a754d7f53b3abc557b753c057dc4e021d">account.php</a>
</li>
<li>upgrade_link()
-: <a class="el" href="plugin_8php.html#a4fc13e528367f510fcb6d8bbfc559040">plugin.php</a>
+: <a class="el" href="account_8php.html#a4fc13e528367f510fcb6d8bbfc559040">account.php</a>
</li>
<li>upgrade_message()
-: <a class="el" href="plugin_8php.html#a901657dd078e070516cf97285e0bada7">plugin.php</a>
+: <a class="el" href="account_8php.html#a901657dd078e070516cf97285e0bada7">account.php</a>
</li>
<li>user_allow()
: <a class="el" href="account_8php.html#ac5c570a2d46446bad4dd2501e9c5a4b1">account.php</a>
diff --git a/doc/html/globals_0x76.html b/doc/html/globals_0x76.html
index 749f67860..a37a10692 100644
--- a/doc/html/globals_0x76.html
+++ b/doc/html/globals_0x76.html
@@ -177,6 +177,39 @@ $(document).ready(function(){initNavTree('globals_0x76.html','');});
<li>visible_activity()
: <a class="el" href="conversation_8php.html#a7eeaaf44506815576f3bd80053ef52c3">conversation.php</a>
</li>
+<li>VNOTIFY_ALERT
+: <a class="el" href="boot_8php.html#a9f8a2938ddd9ee2867e6f8ce77b61b2f">boot.php</a>
+</li>
+<li>VNOTIFY_BIRTHDAY
+: <a class="el" href="boot_8php.html#ac89396b9144391acd08d6d0f9b332220">boot.php</a>
+</li>
+<li>VNOTIFY_CHANNEL
+: <a class="el" href="boot_8php.html#a7b511bd93202c43405adbe3b5bcebbfe">boot.php</a>
+</li>
+<li>VNOTIFY_EVENT
+: <a class="el" href="boot_8php.html#ad94aca4c260b8a892397786201dc4664">boot.php</a>
+</li>
+<li>VNOTIFY_EVENTTODAY
+: <a class="el" href="boot_8php.html#a76480b213af379c0c6c7fa4e39019ca9">boot.php</a>
+</li>
+<li>VNOTIFY_INFO
+: <a class="el" href="boot_8php.html#a37281c30bd92cecb499878d6778c570f">boot.php</a>
+</li>
+<li>VNOTIFY_INTRO
+: <a class="el" href="boot_8php.html#a1997c4b7d0253e036bc0fb6b20e4af71">boot.php</a>
+</li>
+<li>VNOTIFY_MAIL
+: <a class="el" href="boot_8php.html#a0afeb43da443d6ff3526ede5ecdcc3b3">boot.php</a>
+</li>
+<li>VNOTIFY_NETWORK
+: <a class="el" href="boot_8php.html#a997614f25e58f8313641e1eb0109fd10">boot.php</a>
+</li>
+<li>VNOTIFY_REGISTER
+: <a class="el" href="boot_8php.html#ae09767b94688657978ff9366ec63684b">boot.php</a>
+</li>
+<li>VNOTIFY_SYSTEM
+: <a class="el" href="boot_8php.html#a7e5627b5ca4b7464feb0f08663b19ea1">boot.php</a>
+</li>
<li>vote_content()
: <a class="el" href="vote_8php.html#a6aa67489bf458ca5e3206e46dac68596">vote.php</a>
</li>
diff --git a/doc/html/globals_0x77.html b/doc/html/globals_0x77.html
index f4c80c5be..4eed5dc3a 100644
--- a/doc/html/globals_0x77.html
+++ b/doc/html/globals_0x77.html
@@ -150,18 +150,18 @@ $(document).ready(function(){initNavTree('globals_0x77.html','');});
<li>wall_upload_post()
: <a class="el" href="wall__upload_8php.html#a7cbe204244cf9e0380ee932263a74d8f">wall_upload.php</a>
</li>
-<li>webfinger()
-: <a class="el" href="include_2network_8php.html#a8122356933bcd6b0a8567e8e15ae5cc5">network.php</a>
-</li>
<li>webfinger_content()
: <a class="el" href="webfinger_8php.html#a17dd28db6d390194bf9ecb809739d1d3">webfinger.php</a>
</li>
-<li>webfinger_dfrn()
-: <a class="el" href="include_2network_8php.html#adf6008b38c555e98e7ed10da9ede2335">network.php</a>
+<li>webfinger_rfc7033()
+: <a class="el" href="include_2network_8php.html#a3e6c751a51de33ad3563f0938296e78a">network.php</a>
</li>
<li>webpages_content()
: <a class="el" href="webpages_8php.html#af3b7397d4abc153e3d2147740ee1a41d">webpages.php</a>
</li>
+<li>webpages_init()
+: <a class="el" href="webpages_8php.html#af9ad0b65eba79acead3fa32b43d888b7">webpages.php</a>
+</li>
<li>wfinger_init()
: <a class="el" href="wfinger_8php.html#ae21e50c8d0a5f3c9be9f43a4e519acd3">wfinger.php</a>
</li>
@@ -183,6 +183,9 @@ $(document).ready(function(){initNavTree('globals_0x77.html','');});
<li>widget_bookmarkedchats()
: <a class="el" href="widgets_8php.html#a0e2f5179ed1a73b282dfda7270fcabb3">widgets.php</a>
</li>
+<li>widget_catcloud_wall()
+: <a class="el" href="widgets_8php.html#af919de8e7e2ba8192a65fadc72a2c8b5">widgets.php</a>
+</li>
<li>widget_categories()
: <a class="el" href="widgets_8php.html#af37fdad3b2e861d860a4a8c4d8a76c0b">widgets.php</a>
</li>
@@ -237,9 +240,15 @@ $(document).ready(function(){initNavTree('globals_0x77.html','');});
<li>widget_photo_albums()
: <a class="el" href="widgets_8php.html#a702e2fc0adc9b615999eca18b7311b5e">widgets.php</a>
</li>
+<li>widget_photo_rand()
+: <a class="el" href="widgets_8php.html#af8eb466ef91d9e96e13335ead5eba380">widgets.php</a>
+</li>
<li>widget_profile()
: <a class="el" href="widgets_8php.html#abd2e508a2a0b911c4a838e3cb7599923">widgets.php</a>
</li>
+<li>widget_random_block()
+: <a class="el" href="widgets_8php.html#a829c5a5c7448129266fc1df3ae1a3c2e">widgets.php</a>
+</li>
<li>widget_savedsearch()
: <a class="el" href="widgets_8php.html#a94203eb9bcd63cbdecbbcb15163598d8">widgets.php</a>
</li>
@@ -264,6 +273,9 @@ $(document).ready(function(){initNavTree('globals_0x77.html','');});
<li>writepages_widget()
: <a class="el" href="page__widgets_8php.html#a1a1e729da27f252cab6678288a17958f">page_widgets.php</a>
</li>
+<li>wtagblock()
+: <a class="el" href="taxonomy_8php.html#a83f0a60f9e0c07d8451dc5be95b17287">taxonomy.php</a>
+</li>
</ul>
</div><!-- contents -->
</div><!-- doc-content -->
diff --git a/doc/html/globals_0x78.html b/doc/html/globals_0x78.html
index f016dce14..e3a2f782c 100644
--- a/doc/html/globals_0x78.html
+++ b/doc/html/globals_0x78.html
@@ -145,11 +145,14 @@ $(document).ready(function(){initNavTree('globals_0x78.html','');});
<h3><a class="anchor" id="index_x"></a>- x -</h3><ul>
<li>x()
-: <a class="el" href="boot_8php.html#a01353c9abebc3544ea080ac161729632">boot.php</a>
+: <a class="el" href="boot_8php.html#ae97836b0547953be182a2334c9c91d3c">boot.php</a>
</li>
<li>xchan_content()
: <a class="el" href="xchan_8php.html#a9853348bf1a35c644460221ba75edc2d">xchan.php</a>
</li>
+<li>xchan_fetch()
+: <a class="el" href="hubloc_8php.html#af1b476c936f96a93282b1d058e3d05ea">hubloc.php</a>
+</li>
<li>XCHAN_FLAGS_CENSORED
: <a class="el" href="boot_8php.html#accd6f36cc9f40225cbd720e4d12a7c6e">boot.php</a>
</li>
@@ -165,6 +168,9 @@ $(document).ready(function(){initNavTree('globals_0x78.html','');});
<li>XCHAN_FLAGS_ORPHAN
: <a class="el" href="boot_8php.html#a1c923b99bf77e4203ae94e5684b6ad0f">boot.php</a>
</li>
+<li>XCHAN_FLAGS_PUBFORUM
+: <a class="el" href="boot_8php.html#a0209e605028a5bb492683951ab30d49d">boot.php</a>
+</li>
<li>XCHAN_FLAGS_SELFCENSORED
: <a class="el" href="boot_8php.html#a5a681a672e007cdc22b43345d71f07c6">boot.php</a>
</li>
@@ -175,7 +181,10 @@ $(document).ready(function(){initNavTree('globals_0x78.html','');});
: <a class="el" href="text_8php.html#a543447c5ed766535221e2d9636b379ee">text.php</a>
</li>
<li>xchan_query()
-: <a class="el" href="text_8php.html#a36a2e5d418ee81140f25c4233cfecd1f">text.php</a>
+: <a class="el" href="text_8php.html#a905c3895feb6f276df23f07f16f9bb52">text.php</a>
+</li>
+<li>xchan_store()
+: <a class="el" href="hubloc_8php.html#acb708dd197aae72a4858cf5ff4e3195b">hubloc.php</a>
</li>
<li>xml2array()
: <a class="el" href="include_2network_8php.html#a99353baabbc3e0584b85eb79ee802cff">network.php</a>
@@ -186,9 +195,6 @@ $(document).ready(function(){initNavTree('globals_0x78.html','');});
<li>xmlify()
: <a class="el" href="text_8php.html#aaed4413ed8918838b517e3b2fafaea0d">text.php</a>
</li>
-<li>xpost_to_html2bbcode()
-: <a class="el" href="post__to__red_8php.html#af2713018a2dc97e88f121fc6215beb66">post_to_red.php</a>
-</li>
<li>xrd_init()
: <a class="el" href="xrd_8php.html#aee3cf087968e4a0ff3a87de16eb23270">xrd.php</a>
</li>
diff --git a/doc/html/globals_0x7a.html b/doc/html/globals_0x7a.html
index 96043b279..7fcd3ebdf 100644
--- a/doc/html/globals_0x7a.html
+++ b/doc/html/globals_0x7a.html
@@ -150,6 +150,12 @@ $(document).ready(function(){initNavTree('globals_0x7a.html','');});
<li>z_fetch_url()
: <a class="el" href="include_2network_8php.html#aafd06c0a75402aefb06cfb9f9740fa37">network.php</a>
</li>
+<li>z_get_temp_dir()
+: <a class="el" href="boot_8php.html#a59717d02602a4babf2a54da8b33d93a5">boot.php</a>
+</li>
+<li>z_get_upload_dir()
+: <a class="el" href="boot_8php.html#a476c499e15caf75972fed134a8f23b2e">boot.php</a>
+</li>
<li>z_input_filter()
: <a class="el" href="text_8php.html#a324c58f37f6acdf9cd1922aa76077d9f">text.php</a>
</li>
@@ -162,6 +168,9 @@ $(document).ready(function(){initNavTree('globals_0x7a.html','');});
<li>z_post_url()
: <a class="el" href="include_2network_8php.html#a9129fd55e7fc175b4ea9a195cccc16bc">network.php</a>
</li>
+<li>z_post_url_json()
+: <a class="el" href="include_2network_8php.html#a984708e60d531b31b2d1f88b5f408f7b">network.php</a>
+</li>
<li>z_readdir()
: <a class="el" href="include_2attach_8php.html#aeb07968990e66a88c95483ca09a7f909">attach.php</a>
</li>
@@ -190,10 +199,13 @@ $(document).ready(function(){initNavTree('globals_0x7a.html','');});
: <a class="el" href="text_8php.html#a29988052f3944111def3b6aaf2c7a8f6">text.php</a>
</li>
<li>zot_build_packet()
-: <a class="el" href="zot_8php.html#a3862b3161b2c8557dc1a95020179bd81">zot.php</a>
+: <a class="el" href="zot_8php.html#a084c581d534e7e3b759488b46602288f">zot.php</a>
+</li>
+<li>zot_encode_locations()
+: <a class="el" href="zot_8php.html#ae26ce9f1ad74139193fb6319beac5fca">zot.php</a>
</li>
<li>zot_feed()
-: <a class="el" href="items_8php.html#a004e89d86b0f29b2c4da20108ecc4091">items.php</a>
+: <a class="el" href="items_8php.html#a1cf89557f32d5dfbe8bd90448dc1aa92">items.php</a>
</li>
<li>zot_fetch()
: <a class="el" href="zot_8php.html#a61cdc1ec843663c423ed2d8160ae5aea">zot.php</a>
@@ -213,6 +225,9 @@ $(document).ready(function(){initNavTree('globals_0x7a.html','');});
<li>zot_new_uid()
: <a class="el" href="zot_8php.html#ab22d67660702056bf3f4696dcebf5ce7">zot.php</a>
</li>
+<li>zot_process_message_request()
+: <a class="el" href="zot_8php.html#a3920afe14fc1d82020161b4b86bcd9ac">zot.php</a>
+</li>
<li>zot_process_response()
: <a class="el" href="zot_8php.html#a928f5643ca66ae9635d85aeb2be62e03">zot.php</a>
</li>
diff --git a/doc/html/globals_func_0x61.html b/doc/html/globals_func_0x61.html
index 8564aac27..a7712761a 100644
--- a/doc/html/globals_func_0x61.html
+++ b/doc/html/globals_func_0x61.html
@@ -156,7 +156,10 @@ $(document).ready(function(){initNavTree('globals_func_0x61.html','');});
: <a class="el" href="boot_8php.html#a081307d681d7d04f17b9ced2076e7c85">boot.php</a>
</li>
<li>account_remove()
-: <a class="el" href="Contact_8php.html#a6e64de7db60b7243dce45fb6347636ff">Contact.php</a>
+: <a class="el" href="Contact_8php.html#a5101d7eca5d6f387e5555f03fe249e33">Contact.php</a>
+</li>
+<li>account_service_class_fetch()
+: <a class="el" href="account_8php.html#a4328c40ee4b3d68630cf1ebb7b9d4d89">account.php</a>
</li>
<li>account_total()
: <a class="el" href="account_8php.html#a43e3042b2723d76915a030bac3c668b6">account.php</a>
@@ -209,6 +212,12 @@ $(document).ready(function(){initNavTree('globals_func_0x61.html','');});
<li>admin_page_plugins()
: <a class="el" href="admin_8php.html#a54128076986ba80c4a103de3fc3e19a8">admin.php</a>
</li>
+<li>admin_page_profs()
+: <a class="el" href="admin_8php.html#a3deba594ca1e11694eac1de0b724ef0a">admin.php</a>
+</li>
+<li>admin_page_profs_post()
+: <a class="el" href="admin_8php.html#a278289bc6d45f6f2a272a7ab6a1d1057">admin.php</a>
+</li>
<li>admin_page_site()
: <a class="el" href="admin_8php.html#ac0f3bd12431c056aad77bac9d09fa30e">admin.php</a>
</li>
@@ -338,6 +347,12 @@ $(document).ready(function(){initNavTree('globals_func_0x61.html','');});
<li>api_get_user()
: <a class="el" href="include_2api_8php.html#aa40bae797bcd9ccacffdce5a3b5a1afa">api.php</a>
</li>
+<li>api_group()
+: <a class="el" href="include_2api_8php.html#ad5fe62d6c25c86999f627b2e6cfde536">api.php</a>
+</li>
+<li>api_group_members()
+: <a class="el" href="include_2api_8php.html#ae46f964e5a9c80b96dc78df61c09ed3a">api.php</a>
+</li>
<li>api_help_test()
: <a class="el" href="include_2api_8php.html#ac5a64cc81d70ff3cf866093ea9721d23">api.php</a>
</li>
@@ -359,6 +374,9 @@ $(document).ready(function(){initNavTree('globals_func_0x61.html','');});
<li>api_post()
: <a class="el" href="mod_2api_8php.html#a6fe77f05c07cb51048df0d557b4b9bd2">api.php</a>
</li>
+<li>api_red_xchan()
+: <a class="el" href="include_2api_8php.html#a4fe872332ff0bd8d5eae2f0c6819cb60">api.php</a>
+</li>
<li>api_register_func()
: <a class="el" href="include_2api_8php.html#ac2c2b18c426d697d11a830bca146be8a">api.php</a>
</li>
diff --git a/doc/html/globals_func_0x62.html b/doc/html/globals_func_0x62.html
index eea71bca0..c9af0a0ff 100644
--- a/doc/html/globals_func_0x62.html
+++ b/doc/html/globals_func_0x62.html
@@ -152,15 +152,33 @@ $(document).ready(function(){initNavTree('globals_func_0x62.html','');});
<li>bb2diaspora()
: <a class="el" href="bb2diaspora_8php.html#a4f10e0876b27373c762bc1abbe745f5c">bb2diaspora.php</a>
</li>
+<li>bb2diaspora_itembody()
+: <a class="el" href="bb2diaspora_8php.html#ab27761069ea1275f0fc4c543099c5519">bb2diaspora.php</a>
+</li>
+<li>bb2diaspora_itemwallwall()
+: <a class="el" href="bb2diaspora_8php.html#aab32042f8bd63552d3fadeeae9eab083">bb2diaspora.php</a>
+</li>
+<li>bb2dmention_callback()
+: <a class="el" href="bb2diaspora_8php.html#a5258d2f1addeb0a2a6b54c4f9e7d0f34">bb2diaspora.php</a>
+</li>
<li>bb_location()
: <a class="el" href="bbcode_8php.html#a3435c82a6c7693557800cdeb6848d0bd">bbcode.php</a>
</li>
+<li>bb_map_coords()
+: <a class="el" href="bbcode_8php.html#a02d5f2434e7bb5cf683e52a9b4787f24">bbcode.php</a>
+</li>
+<li>bb_map_location()
+: <a class="el" href="bbcode_8php.html#a7cb403fd1c36d7376c2f3932a1ceb54d">bbcode.php</a>
+</li>
<li>bb_parse_app()
: <a class="el" href="bbcode_8php.html#abb02f1044ff1c635d12af690d0f2cfa2">bbcode.php</a>
</li>
<li>bb_parse_crypt()
: <a class="el" href="bbcode_8php.html#a851f5aafefe52474201b83f9fd65931f">bbcode.php</a>
</li>
+<li>bb_parse_element()
+: <a class="el" href="bbcode_8php.html#aa73fb62e7be1fa5fce4ad5f3d4487fc9">bbcode.php</a>
+</li>
<li>bb_qr()
: <a class="el" href="bbcode_8php.html#a98d0eecc620c19561639f06cfbe8e74c">bbcode.php</a>
</li>
@@ -209,23 +227,8 @@ $(document).ready(function(){initNavTree('globals_func_0x62.html','');});
<li>blocks_content()
: <a class="el" href="blocks_8php.html#a2531a8fd51db3cecb2eb20c002c66e12">blocks.php</a>
</li>
-<li>blog_init()
-: <a class="el" href="blogga_2php_2theme_8php.html#aa55c1cb1f05087b5002ecb633b550b1b">theme.php</a>
-</li>
-<li>blog_install()
-: <a class="el" href="blogga_2view_2theme_2blog_2theme_8php.html#aae58cc837fe56473d9f3370abfe533ae">theme.php</a>
-</li>
-<li>blog_uninstall()
-: <a class="el" href="blogga_2view_2theme_2blog_2theme_8php.html#a3e77dbe111f330c64a1ff6c741cd515c">theme.php</a>
-</li>
-<li>blogtheme_display_item()
-: <a class="el" href="blogga_2view_2theme_2blog_2theme_8php.html#a028ae8e9f2824670dfa76a6651d817e5">theme.php</a>
-</li>
-<li>blogtheme_form()
-: <a class="el" href="view_2theme_2blogga_2view_2theme_2blog_2config_8php.html#a8a311a402d3e746ce53fadc38e4b2d27">config.php</a>
-</li>
-<li>blogtheme_imgurl()
-: <a class="el" href="blogga_2view_2theme_2blog_2theme_8php.html#af634a3f721c5e238530d0636d33230ec">theme.php</a>
+<li>blocks_init()
+: <a class="el" href="blocks_8php.html#aebe88302181883d2b17d6e98a1aaebe9">blocks.php</a>
</li>
<li>bookmark_add()
: <a class="el" href="include_2bookmarks_8php.html#aef1cb2968c41c759f2d106e1088ca323">bookmarks.php</a>
@@ -243,7 +246,7 @@ $(document).ready(function(){initNavTree('globals_func_0x62.html','');});
: <a class="el" href="boot_8php.html#a9cbab4ee728e9a8b4ce952bae643044e">boot.php</a>
</li>
<li>build_sync_packet()
-: <a class="el" href="zot_8php.html#ac34e479d27f32b82dd6b33542f81a6a7">zot.php</a>
+: <a class="el" href="zot_8php.html#aa97b33b619dd7132a9274f852af6ceb5">zot.php</a>
</li>
</ul>
</div><!-- contents -->
diff --git a/doc/html/globals_func_0x63.html b/doc/html/globals_func_0x63.html
index 1ad9f318b..62db2f3e8 100644
--- a/doc/html/globals_func_0x63.html
+++ b/doc/html/globals_func_0x63.html
@@ -152,6 +152,9 @@ $(document).ready(function(){initNavTree('globals_func_0x63.html','');});
<li>can_comment_on_post()
: <a class="el" href="items_8php.html#a1e75047cf175aaee8dd16aa761913ff9">items.php</a>
</li>
+<li>catblock()
+: <a class="el" href="taxonomy_8php.html#aa8f8a1ff85daef046298e93c83e7a1b4">taxonomy.php</a>
+</li>
<li>categories_widget()
: <a class="el" href="contact__widgets_8php.html#a165eb021e61c4dcab2a552f28628d353">contact_widgets.php</a>
</li>
@@ -167,9 +170,6 @@ $(document).ready(function(){initNavTree('globals_func_0x63.html','');});
<li>chanlink_url()
: <a class="el" href="text_8php.html#a2e8d6c402603be3a1256a16605e09c2a">text.php</a>
</li>
-<li>chanman_remove_everything_from_network()
-: <a class="el" href="include_2chanman_8php.html#a21ba9a5c961e866ff27aee3ee67bf99b">chanman.php</a>
-</li>
<li>channel_content()
: <a class="el" href="channel_8php.html#a9c6a6179e0e626398ebecc6151905ef1">channel.php</a>
</li>
@@ -177,7 +177,7 @@ $(document).ready(function(){initNavTree('globals_func_0x63.html','');});
: <a class="el" href="channel_8php.html#ac7c8c7845741baadf87fae6bc279f3dc">channel.php</a>
</li>
<li>channel_remove()
-: <a class="el" href="Contact_8php.html#a186162051a5127069cc851d78740f205">Contact.php</a>
+: <a class="el" href="Contact_8php.html#a4e8af0f0525161da74583c04b8b03097">Contact.php</a>
</li>
<li>channel_total()
: <a class="el" href="identity_8php.html#a77d2237f1846964634b1c99089c27c7d">identity.php</a>
@@ -221,6 +221,9 @@ $(document).ready(function(){initNavTree('globals_func_0x63.html','');});
<li>chatroom_list()
: <a class="el" href="include_2chat_8php.html#aedcb532a0627b8644001a2fadab4e87a">chat.php</a>
</li>
+<li>chatroom_list_count()
+: <a class="el" href="include_2chat_8php.html#a26abdccc2a278a59899896dbbfc6f049">chat.php</a>
+</li>
<li>chatsvc_content()
: <a class="el" href="chatsvc_8php.html#a7032784215e1f6747cf385a6598770f9">chatsvc.php</a>
</li>
@@ -287,6 +290,9 @@ $(document).ready(function(){initNavTree('globals_func_0x63.html','');});
<li>check_store()
: <a class="el" href="setup_8php.html#ab4b71369a25021d59247c917e98d8246">setup.php</a>
</li>
+<li>check_upstream_directory()
+: <a class="el" href="dir__fns_8php.html#a2f7d74bb2aea8bcd2537aee5c6708a16">dir_fns.php</a>
+</li>
<li>check_webbie()
: <a class="el" href="text_8php.html#a0c65597bb4aed3a039eb795ff540e5e3">text.php</a>
</li>
@@ -303,10 +309,10 @@ $(document).ready(function(){initNavTree('globals_func_0x63.html','');});
: <a class="el" href="cli__suggest_8php.html#a8f3a60fc96f4bec7d3837c4efc7725f2">cli_suggest.php</a>
</li>
<li>cloud_init()
-: <a class="el" href="cloud_8php.html#a1b79a6fe0454bc76673ad9aef55bf02d">cloud.php</a>
+: <a class="el" href="cloud_8php.html#ad2e96e917852f27dedfc263d37e13756">cloud.php</a>
</li>
<li>collect_recipients()
-: <a class="el" href="items_8php.html#a01e3cf44e082fa9bd06dcde5bf713d70">items.php</a>
+: <a class="el" href="items_8php.html#a772f0ae77ad77c8ab68ed918a3870946">items.php</a>
</li>
<li>collecturls()
: <a class="el" href="html2plain_8php.html#ae1c203d0f089d5678d73a6c64a395201">html2plain.php</a>
@@ -335,6 +341,9 @@ $(document).ready(function(){initNavTree('globals_func_0x63.html','');});
<li>comanche_widget()
: <a class="el" href="comanche_8php.html#a6b0191c1a63db1696a2eb139d90d9e7f">comanche.php</a>
</li>
+<li>comments_are_now_closed()
+: <a class="el" href="items_8php.html#abeb7886cde44d9a83dbaf2bc4ab18723">items.php</a>
+</li>
<li>common_content()
: <a class="el" href="common_8php.html#ab63408f39abef7a6915186e8dabc5a96">common.php</a>
</li>
@@ -402,7 +411,7 @@ $(document).ready(function(){initNavTree('globals_func_0x63.html','');});
: <a class="el" href="items_8php.html#a8f3c85c584ccd2b98c3ca440e45b40f8">items.php</a>
</li>
<li>consume_feed()
-: <a class="el" href="items_8php.html#a8794863cdf8ce1333040933d3a3f66bd">items.php</a>
+: <a class="el" href="items_8php.html#adc26e08aa61f5666da04ab5d2a9d68a6">items.php</a>
</li>
<li>contact_block()
: <a class="el" href="text_8php.html#ad6432621d0fafcbcf3d3b9b49bef7784">text.php</a>
@@ -416,9 +425,6 @@ $(document).ready(function(){initNavTree('globals_func_0x63.html','');});
<li>contact_remove()
: <a class="el" href="Contact_8php.html#a28e062c884331dbb5dfa713228c25ad6">Contact.php</a>
</li>
-<li>contact_reputation()
-: <a class="el" href="contact__selectors_8php.html#ae499960d6467bd30c78607b1018baf53">contact_selectors.php</a>
-</li>
<li>contact_select()
: <a class="el" href="acl__selectors_8php.html#a9476997d2968a5794f3723878ed89c91">acl_selectors.php</a>
</li>
diff --git a/doc/html/globals_func_0x64.html b/doc/html/globals_func_0x64.html
index ff73d8335..430403744 100644
--- a/doc/html/globals_func_0x64.html
+++ b/doc/html/globals_func_0x64.html
@@ -144,19 +144,34 @@ $(document).ready(function(){initNavTree('globals_func_0x64.html','');});
<h3><a class="anchor" id="index_d"></a>- d -</h3><ul>
<li>datesel()
-: <a class="el" href="datetime_8php.html#ac265b86f384ee094ed5479aae02aa5c8">datetime.php</a>
-</li>
-<li>datesel_format()
-: <a class="el" href="datetime_8php.html#a5f29553799005b1fd4e9ce9d98ce05aa">datetime.php</a>
+: <a class="el" href="datetime_8php.html#a77bb385ae8a9e7ca663309c102c0d766">datetime.php</a>
</li>
<li>datetime_convert()
: <a class="el" href="datetime_8php.html#ad6301e74b0f9267d52f8d432b5beb226">datetime.php</a>
</li>
+<li>datetimesel()
+: <a class="el" href="datetime_8php.html#a72218e5ee21876484934bacbb6bd9ba3">datetime.php</a>
+</li>
<li>day_translate()
: <a class="el" href="text_8php.html#a63fb21c0bed2fc72eef2c1471ac42b63">text.php</a>
</li>
+<li>db_concat()
+: <a class="el" href="dba__driver_8php.html#a7c1b98a710ead27382c958ad3216c4ee">dba_driver.php</a>
+</li>
+<li>db_getfunc()
+: <a class="el" href="dba__driver_8php.html#a2994daa03b1c23229a27e39bcab75e67">dba_driver.php</a>
+</li>
+<li>db_optimizetable()
+: <a class="el" href="dba__driver_8php.html#a75098bf1d59ea57f7ebae657a369137e">dba_driver.php</a>
+</li>
+<li>db_quoteinterval()
+: <a class="el" href="dba__driver_8php.html#acec84a8fb75d78daf657cbe5df74e25a">dba_driver.php</a>
+</li>
+<li>db_utcnow()
+: <a class="el" href="dba__driver_8php.html#a30e9a643be804e905f5614a3279d2645">dba_driver.php</a>
+</li>
<li>dba_factory()
-: <a class="el" href="dba__driver_8php.html#ac10e60f6e5b95bcf67bd82cb88f37947">dba_driver.php</a>
+: <a class="el" href="dba__driver_8php.html#a5df8499634c47b30191f34069d7b98c0">dba_driver.php</a>
</li>
<li>dba_timer()
: <a class="el" href="boot_8php.html#a3e0930933fb2c0bf8211cc7ab4e1c3b4">boot.php</a>
@@ -170,12 +185,24 @@ $(document).ready(function(){initNavTree('globals_func_0x64.html','');});
<li>dbesc_array_cb()
: <a class="el" href="dba__driver_8php.html#af531546fac5f0836a8557a4f6dfee930">dba_driver.php</a>
</li>
+<li>dbesc_identifier()
+: <a class="el" href="dba__driver_8php.html#aa051799567690a124a3b865bf902f58a">dba_driver.php</a>
+</li>
+<li>dbescbin()
+: <a class="el" href="dba__driver_8php.html#a2a38996670c2936b5769270c49c57593">dba_driver.php</a>
+</li>
+<li>dbescdate()
+: <a class="el" href="dba__driver_8php.html#a2c8a72ec73f39b17a167c90737693f78">dba_driver.php</a>
+</li>
<li>dbg()
: <a class="el" href="dba__driver_8php.html#aa6607893d8f60ade9122bcfbd1a53ffb">dba_driver.php</a>
</li>
<li>dbq()
: <a class="el" href="dba__driver_8php.html#aa377074e70981e8c4e82ca0accd068ee">dba_driver.php</a>
</li>
+<li>dbunescbin()
+: <a class="el" href="dba__driver_8php.html#afaaa1a7eff9c1b65b3b8c464ae37640e">dba_driver.php</a>
+</li>
<li>decode_tags()
: <a class="el" href="items_8php.html#a56b2a4abcadfac71175cd50555528cc3">items.php</a>
</li>
@@ -203,6 +230,12 @@ $(document).ready(function(){initNavTree('globals_func_0x64.html','');});
<li>deliver_run()
: <a class="el" href="deliver_8php.html#a397afcb9afecf0c1816b0951189dd346">deliver.php</a>
</li>
+<li>DerToPem()
+: <a class="el" href="crypto_8php.html#a630e1574554f34e7c38511585d9e71a2">crypto.php</a>
+</li>
+<li>DerToRsa()
+: <a class="el" href="crypto_8php.html#ae5af17db1cb5d7c91d486e1264079839">crypto.php</a>
+</li>
<li>design_tools()
: <a class="el" href="text_8php.html#a87a3cefc603302c78982f1d8e1245265">text.php</a>
</li>
@@ -212,12 +245,111 @@ $(document).ready(function(){initNavTree('globals_func_0x64.html','');});
<li>diaspora2bb()
: <a class="el" href="bb2diaspora_8php.html#ac9061ee10fcfcdac69566b649614e625">bb2diaspora.php</a>
</li>
+<li>diaspora_asphoto()
+: <a class="el" href="diaspora_8php.html#a006731620a5242d410358b32678e48e3">diaspora.php</a>
+</li>
+<li>diaspora_comment()
+: <a class="el" href="diaspora_8php.html#a0fb2abe304aae19efc040a5e6b917829">diaspora.php</a>
+</li>
+<li>diaspora_conversation()
+: <a class="el" href="diaspora_8php.html#adef30b6fac948baedcc7194d5d155b5f">diaspora.php</a>
+</li>
+<li>diaspora_decode()
+: <a class="el" href="diaspora_8php.html#a849754ec369e1a60fadae5c14584ca36">diaspora.php</a>
+</li>
+<li>diaspora_dispatch()
+: <a class="el" href="diaspora_8php.html#a6f0a67b6b17503c125af32763be931b7">diaspora.php</a>
+</li>
+<li>diaspora_dispatch_public()
+: <a class="el" href="diaspora_8php.html#ab99505944728d46585b8312989de533d">diaspora.php</a>
+</li>
+<li>diaspora_get_contact_by_handle()
+: <a class="el" href="diaspora_8php.html#aa8e551a53fcce34be3942d0c3e20d1f4">diaspora.php</a>
+</li>
+<li>diaspora_handle_from_contact()
+: <a class="el" href="diaspora_8php.html#a5ed66b910d7b0284f9b3ee04e72306ff">diaspora.php</a>
+</li>
+<li>diaspora_is_blacklisted()
+: <a class="el" href="diaspora_8php.html#a858f70153c384f8778082cf7843a19da">diaspora.php</a>
+</li>
+<li>diaspora_is_reshare()
+: <a class="el" href="diaspora_8php.html#ad9985cc4214bdfc14878785c838c8690">diaspora.php</a>
+</li>
+<li>diaspora_like()
+: <a class="el" href="diaspora_8php.html#a5d57518545baa31cf8a85a937a267681">diaspora.php</a>
+</li>
+<li>diaspora_mention_callback()
+: <a class="el" href="bb2diaspora_8php.html#a4a27604f0745f1efda672966aaca9a3b">bb2diaspora.php</a>
+</li>
+<li>diaspora_message()
+: <a class="el" href="diaspora_8php.html#a7cff2f8f11044c1b3a360f20e1bbee46">diaspora.php</a>
+</li>
+<li>diaspora_msg_build()
+: <a class="el" href="diaspora_8php.html#a4901762cba5cd8dcdc57bdf285eefb1b">diaspora.php</a>
+</li>
<li>diaspora_ol()
: <a class="el" href="bb2diaspora_8php.html#a8b96bd45884fa1c40b942939354197d4">bb2diaspora.php</a>
</li>
+<li>diaspora_photo()
+: <a class="el" href="diaspora_8php.html#a71fe9bb66626b4197ae018a230778bb2">diaspora.php</a>
+</li>
+<li>diaspora_post()
+: <a class="el" href="diaspora_8php.html#a20b968d64ef26afe5cb0cc75a7570a31">diaspora.php</a>
+</li>
+<li>diaspora_process_outbound()
+: <a class="el" href="diaspora_8php.html#a131abd521b218d6ae6f7d2917d8b2605">diaspora.php</a>
+</li>
+<li>diaspora_profile()
+: <a class="el" href="diaspora_8php.html#a900abf51398b2ef26cd2cd31c52f1b0f">diaspora.php</a>
+</li>
+<li>diaspora_pubmsg_build()
+: <a class="el" href="diaspora_8php.html#a586d5a3ba92d35cee14f879f290072aa">diaspora.php</a>
+</li>
+<li>diaspora_request()
+: <a class="el" href="diaspora_8php.html#ac1ab782a34552a7c6b4dc961754ed598">diaspora.php</a>
+</li>
+<li>diaspora_reshare()
+: <a class="el" href="diaspora_8php.html#a2bf43f6b5890897f425ef4325d34b007">diaspora.php</a>
+</li>
+<li>diaspora_retraction()
+: <a class="el" href="diaspora_8php.html#a938c7ee808d38725c0988fa6006805b9">diaspora.php</a>
+</li>
+<li>diaspora_send_followup()
+: <a class="el" href="diaspora_8php.html#af4698b165766f83d89ec1ea964bc92cc">diaspora.php</a>
+</li>
+<li>diaspora_send_images()
+: <a class="el" href="diaspora_8php.html#ae6f52efd81fe515cd9912bc8293abf5b">diaspora.php</a>
+</li>
+<li>diaspora_send_mail()
+: <a class="el" href="diaspora_8php.html#aeb2bb78f620dbf51d9335e6eb7444f2c">diaspora.php</a>
+</li>
+<li>diaspora_send_relay()
+: <a class="el" href="diaspora_8php.html#a0b3628a5e53332c3d3196b689fe2b94d">diaspora.php</a>
+</li>
+<li>diaspora_send_retraction()
+: <a class="el" href="diaspora_8php.html#a1704748aa2384c73e43f10e71defd31a">diaspora.php</a>
+</li>
+<li>diaspora_send_status()
+: <a class="el" href="diaspora_8php.html#a33ae0c4606a7df4d801c05507d87f668">diaspora.php</a>
+</li>
+<li>diaspora_share()
+: <a class="el" href="diaspora_8php.html#a69f250b078a46e405647428ec3399a16">diaspora.php</a>
+</li>
+<li>diaspora_signed_retraction()
+: <a class="el" href="diaspora_8php.html#aa34d2748bb97e9e193cacd572f335055">diaspora.php</a>
+</li>
+<li>diaspora_transmit()
+: <a class="el" href="diaspora_8php.html#aa704d6aa2ac77be345c0f501168e6e56">diaspora.php</a>
+</li>
<li>diaspora_ul()
: <a class="el" href="bb2diaspora_8php.html#adc92ccda5f85ed27e64fcc17712c89cc">bb2diaspora.php</a>
</li>
+<li>diaspora_unshare()
+: <a class="el" href="diaspora_8php.html#ab736d6f32b5de31c97cb579fc730e200">diaspora.php</a>
+</li>
+<li>dir_flag_build()
+: <a class="el" href="dirsearch_8php.html#ab6d5fefa98da249a994b910434a669c2">dirsearch.php</a>
+</li>
<li>dir_parse_query()
: <a class="el" href="dirsearch_8php.html#a7d4cd9890d5ed23c3efc58e2a778a305">dirsearch.php</a>
</li>
@@ -245,15 +377,18 @@ $(document).ready(function(){initNavTree('globals_func_0x64.html','');});
<li>directory_run()
: <a class="el" href="include_2directory_8php.html#aa75d3b0697ca1456aaabdb37a74aa0f0">directory.php</a>
</li>
-<li>dirprofile_init()
-: <a class="el" href="dirprofile_8php.html#a3e1d30d3d93863ff5615f2df4ac7f052">dirprofile.php</a>
-</li>
<li>dirsearch_content()
: <a class="el" href="dirsearch_8php.html#aa1fb04e1de4f25b63349ac78f94ceb4c">dirsearch.php</a>
</li>
<li>dirsearch_init()
: <a class="el" href="dirsearch_8php.html#a3e51964ae3f5ff147403407b65324752">dirsearch.php</a>
</li>
+<li>discover_by_url()
+: <a class="el" href="include_2network_8php.html#a5176176ddc1906d91f186df6fbd87b48">network.php</a>
+</li>
+<li>discover_by_webbie()
+: <a class="el" href="include_2network_8php.html#a63e62946e194928eb17c5a9f2bbef0fe">network.php</a>
+</li>
<li>display_content()
: <a class="el" href="display_8php.html#a37137c98d47bf3306f4c2bb9f5b60de0">display.php</a>
</li>
diff --git a/doc/html/globals_func_0x65.html b/doc/html/globals_func_0x65.html
index 9b7b41459..fc927e91c 100644
--- a/doc/html/globals_func_0x65.html
+++ b/doc/html/globals_func_0x65.html
@@ -146,15 +146,24 @@ $(document).ready(function(){initNavTree('globals_func_0x65.html','');});
<li>editblock_content()
: <a class="el" href="editblock_8php.html#abbe8f55de06967bc8d79d620509a49e6">editblock.php</a>
</li>
+<li>editblock_init()
+: <a class="el" href="editblock_8php.html#ab7806bb42ae5e93f0330d7bd179d4b3e">editblock.php</a>
+</li>
<li>editlayout_content()
: <a class="el" href="editlayout_8php.html#aa877e4157a26b099de904164181dd386">editlayout.php</a>
</li>
+<li>editlayout_init()
+: <a class="el" href="editlayout_8php.html#a97c1e93d9e75ad8cd2c2f9a7f77341a7">editlayout.php</a>
+</li>
<li>editpost_content()
: <a class="el" href="editpost_8php.html#a34011690864d122680c802e9e748ccfb">editpost.php</a>
</li>
<li>editwebpage_content()
: <a class="el" href="editwebpage_8php.html#a375e945255fad79a71036528f7480650">editwebpage.php</a>
</li>
+<li>editwebpage_init()
+: <a class="el" href="editwebpage_8php.html#a94109f9c796fbe92508bf9574e35d19f">editwebpage.php</a>
+</li>
<li>email_header_encode()
: <a class="el" href="include_2network_8php.html#a469b9bd700269cd07d954f1a16c5899b">network.php</a>
</li>
@@ -162,7 +171,7 @@ $(document).ready(function(){initNavTree('globals_func_0x65.html','');});
: <a class="el" href="include_2network_8php.html#a1ff07d9fad93b713b93da0ab77aab7f0">network.php</a>
</li>
<li>encode_item()
-: <a class="el" href="items_8php.html#a82955cc578f0fa600acec84475026194">items.php</a>
+: <a class="el" href="items_8php.html#a56b0f5d2cb36eb8f4bfca84813884f86">items.php</a>
</li>
<li>encode_item_flags()
: <a class="el" href="items_8php.html#a5f690fc2484abec07840b4f9dd525bd9">items.php</a>
@@ -215,6 +224,9 @@ $(document).ready(function(){initNavTree('globals_func_0x65.html','');});
<li>externals_run()
: <a class="el" href="externals_8php.html#a4df44079e6f915286088b7a0d44db926">externals.php</a>
</li>
+<li>extra_query_args()
+: <a class="el" href="text_8php.html#a3ba47b4dd1248e7e51095572e7b814dc">text.php</a>
+</li>
</ul>
</div><!-- contents -->
</div><!-- doc-content -->
diff --git a/doc/html/globals_func_0x66.html b/doc/html/globals_func_0x66.html
index 4fd960efb..66d299ca1 100644
--- a/doc/html/globals_func_0x66.html
+++ b/doc/html/globals_func_0x66.html
@@ -164,8 +164,8 @@ $(document).ready(function(){initNavTree('globals_func_0x66.html','');});
<li>fetch_post_tags()
: <a class="el" href="items_8php.html#adf980098b6de9c3993bc3ff26a8dd6f9">items.php</a>
</li>
-<li>field_timezone()
-: <a class="el" href="datetime_8php.html#a03900dcf0f9e3c58793a031673a70326">datetime.php</a>
+<li>fetch_xrd_links()
+: <a class="el" href="include_2network_8php.html#a850ed5307c6a18076f4b80addc99602d">network.php</a>
</li>
<li>file_tag_decode()
: <a class="el" href="taxonomy_8php.html#a08df5164926d2b31b8e9fcfe919de2b6">taxonomy.php</a>
@@ -191,6 +191,12 @@ $(document).ready(function(){initNavTree('globals_func_0x66.html','');});
<li>filestorage_post()
: <a class="el" href="filestorage_8php.html#ad3b64e3ece9831f9d3a9f00c0ae983cd">filestorage.php</a>
</li>
+<li>filter_insecure()
+: <a class="el" href="items_8php.html#a8cda98925a4c5c2f6dade70d9586d79a">items.php</a>
+</li>
+<li>find_diaspora_person_by_handle()
+: <a class="el" href="diaspora_8php.html#aade0c165fcdded71352c7a67bf6ce37b">diaspora.php</a>
+</li>
<li>find_filename_by_hash()
: <a class="el" href="include_2attach_8php.html#a4dbfd7e1cef52aa9ef52f4b88929fa86">attach.php</a>
</li>
@@ -236,6 +242,9 @@ $(document).ready(function(){initNavTree('globals_func_0x66.html','');});
<li>follow_init()
: <a class="el" href="mod_2follow_8php.html#a171f5b19f50d7738adc3b2e96ec6018a">follow.php</a>
</li>
+<li>foofoo()
+: <a class="el" href="dimport_8php.html#a581f040717941ce3e1868b0b5dceefd1">dimport.php</a>
+</li>
<li>format_categories()
: <a class="el" href="text_8php.html#a3054189cff173977f4216c9a3dd29e1b">text.php</a>
</li>
@@ -251,12 +260,18 @@ $(document).ready(function(){initNavTree('globals_func_0x66.html','');});
<li>format_event_html()
: <a class="el" href="event_8php.html#a2ac9f1b08de03250ecd794f705781d17">event.php</a>
</li>
+<li>format_event_ical()
+: <a class="el" href="event_8php.html#a3ff7f1824540a38f4a3991a59a9542d4">event.php</a>
+</li>
<li>format_filer()
: <a class="el" href="text_8php.html#a4e4d42b0a805148d9f9a92bcac89bf91">text.php</a>
</li>
<li>format_hashtags()
: <a class="el" href="text_8php.html#a3a0c432a484c17d7720b8ba2d6bfdd59">text.php</a>
</li>
+<li>format_ical_text()
+: <a class="el" href="event_8php.html#a05073cd4ab837bd4a0149e8ed23ce688">event.php</a>
+</li>
<li>format_js_if_exists()
: <a class="el" href="plugin_8php.html#ad9ff8ba554576383c5911a4bce068c1f">plugin.php</a>
</li>
diff --git a/doc/html/globals_func_0x67.html b/doc/html/globals_func_0x67.html
index 3b3897ec7..3ba270db9 100644
--- a/doc/html/globals_func_0x67.html
+++ b/doc/html/globals_func_0x67.html
@@ -146,6 +146,15 @@ $(document).ready(function(){initNavTree('globals_func_0x67.html','');});
<li>gender_selector()
: <a class="el" href="profile__selectors_8php.html#ae2b2c087e6530c61c0b256fd26d52355">profile_selectors.php</a>
</li>
+<li>gender_selector_min()
+: <a class="el" href="profile__selectors_8php.html#a8bfa1ca2d1598a3d65f1f9bb803ca816">profile_selectors.php</a>
+</li>
+<li>generate_map()
+: <a class="el" href="text_8php.html#ae0333c304ec5b4b72e66bb2933fa7357">text.php</a>
+</li>
+<li>generate_named_map()
+: <a class="el" href="text_8php.html#af5eb4a9c1599764f80c5bc71e0125d4b">text.php</a>
+</li>
<li>get_account_id()
: <a class="el" href="boot_8php.html#afe88b920aa285982edb817a0dd44eb37">boot.php</a>
</li>
@@ -156,7 +165,7 @@ $(document).ready(function(){initNavTree('globals_func_0x67.html','');});
: <a class="el" href="boot_8php.html#a0e6db7e365f2b041a828b93786f694bc">boot.php</a>
</li>
<li>get_atom_elements()
-: <a class="el" href="items_8php.html#a896c1809d58f2d7a42cfe14577958ddf">items.php</a>
+: <a class="el" href="items_8php.html#a5e5be7bf1f8257dec0b2647e60a3f3f1">items.php</a>
</li>
<li>get_bb_tag_pos()
: <a class="el" href="bb2diaspora_8php.html#a4c2f8f11b29a06809d9b07782215b1b2">bb2diaspora.php</a>
@@ -179,6 +188,9 @@ $(document).ready(function(){initNavTree('globals_func_0x67.html','');});
<li>get_channel_by_nick()
: <a class="el" href="identity_8php.html#ac73b3e13778c564c877554517a7f51ba">identity.php</a>
</li>
+<li>get_channel_default_perms()
+: <a class="el" href="identity_8php.html#a293f416ce9050220b183e08ff5890216">identity.php</a>
+</li>
<li>get_cloudpath()
: <a class="el" href="include_2attach_8php.html#a6aa00ea010ea030110faefb75eafc1ce">attach.php</a>
</li>
@@ -197,9 +209,18 @@ $(document).ready(function(){initNavTree('globals_func_0x67.html','');});
<li>get_default_profile_photo()
: <a class="el" href="identity_8php.html#ab1485a26b032956e1496fc08c58b83ed">identity.php</a>
</li>
+<li>get_diaspora_key()
+: <a class="el" href="diaspora_8php.html#a9bf7ef4094e0e14f6e2b7fe76ab7ad2e">diaspora.php</a>
+</li>
+<li>get_diaspora_reshare_xml()
+: <a class="el" href="diaspora_8php.html#ac9e41e46626dc608204bf4b5e16e62d7">diaspora.php</a>
+</li>
<li>get_dim()
: <a class="el" href="datetime_8php.html#a7df24d72ea05922d3127363e2295174c">datetime.php</a>
</li>
+<li>get_directory_realm()
+: <a class="el" href="boot_8php.html#a329400dcb29897cdaae3020109272285">boot.php</a>
+</li>
<li>get_events()
: <a class="el" href="identity_8php.html#ae381db3d43f8e7c1da8b15d14ecf5312">identity.php</a>
</li>
@@ -275,15 +296,30 @@ $(document).ready(function(){initNavTree('globals_func_0x67.html','');});
<li>get_poke_verbs()
: <a class="el" href="text_8php.html#aa46f941155c2ac1155f2f17ffb0adb66">text.php</a>
</li>
+<li>get_poller_runtime()
+: <a class="el" href="boot_8php.html#aa561f801e962b67a5c4d0548ea95fd17">boot.php</a>
+</li>
<li>get_profile_elements()
: <a class="el" href="items_8php.html#a251343637ff40a50cca93452cd530c26">items.php</a>
</li>
+<li>get_profile_fields_advanced()
+: <a class="el" href="identity_8php.html#a224710dfb7465b706c91134247c20afa">identity.php</a>
+</li>
+<li>get_profile_fields_basic()
+: <a class="el" href="identity_8php.html#a4ff59df0f0a668a06a8411f87496aa21">identity.php</a>
+</li>
<li>get_public_feed()
: <a class="el" href="items_8php.html#a079e099e15d88d47aeb6ca6d60da7107">items.php</a>
</li>
<li>get_rel_link()
: <a class="el" href="text_8php.html#a3972701c5c83624ec4e2d06242f614e7">text.php</a>
</li>
+<li>get_role_perms()
+: <a class="el" href="permissions_8php.html#a9b5f5120566a3699a98efc5ccb0c59fe">permissions.php</a>
+</li>
+<li>get_roles()
+: <a class="el" href="permissions_8php.html#a6b239a0d494b92a89ce7bf9c7e588991">permissions.php</a>
+</li>
<li>get_rpost_path()
: <a class="el" href="zot_8php.html#a8e22dbc6f884be3644a892a876cbd972">zot.php</a>
</li>
@@ -314,6 +350,9 @@ $(document).ready(function(){initNavTree('globals_func_0x67.html','');});
<li>get_things()
: <a class="el" href="taxonomy_8php.html#a7747fa859ac56fbffd4f9782d85505de">taxonomy.php</a>
</li>
+<li>get_timezones()
+: <a class="el" href="datetime_8php.html#afbb34604d0f6e7d2103da4f42e2487b1">datetime.php</a>
+</li>
<li>get_words()
: <a class="el" href="spam_8php.html#ab8fd81a82c9622cbebb8ceab6b310ca6">spam.php</a>
</li>
diff --git a/doc/html/globals_func_0x68.html b/doc/html/globals_func_0x68.html
index b1c95968a..c97ea8315 100644
--- a/doc/html/globals_func_0x68.html
+++ b/doc/html/globals_func_0x68.html
@@ -143,12 +143,21 @@ $(document).ready(function(){initNavTree('globals_func_0x68.html','');});
&#160;
<h3><a class="anchor" id="index_h"></a>- h -</h3><ul>
+<li>handle_feed()
+: <a class="el" href="items_8php.html#a52c24114b73c0bdb605a03cd29712223">items.php</a>
+</li>
<li>handle_tag()
-: <a class="el" href="item_8php.html#aa22feef4de326e1d7078dedd892e615c">item.php</a>
+: <a class="el" href="text_8php.html#aa22feef4de326e1d7078dedd892e615c">text.php</a>
</li>
<li>has_permissions()
: <a class="el" href="items_8php.html#a77051724d1784074ff187e73a4db93fe">items.php</a>
</li>
+<li>hcard_content()
+: <a class="el" href="hcard_8php.html#a3663012f1549849af88aba2bb87388e3">hcard.php</a>
+</li>
+<li>hcard_init()
+: <a class="el" href="hcard_8php.html#ac34f26b0e6a37eef44fa49bea135136d">hcard.php</a>
+</li>
<li>head_add_css()
: <a class="el" href="plugin_8php.html#a23c4fccf1eb5fcd63b24783ba1f05f7a">plugin.php</a>
</li>
@@ -179,8 +188,11 @@ $(document).ready(function(){initNavTree('globals_func_0x68.html','');});
<li>help_content()
: <a class="el" href="help_8php.html#af055e15f600ffa6fbca9386fdf715224">help.php</a>
</li>
+<li>hivenet_init()
+: <a class="el" href="hivenet_2php_2theme_8php.html#a3a8b539b112ae63936025236dbaf0a29">theme.php</a>
+</li>
<li>home_content()
-: <a class="el" href="home_8php.html#aa1cf697851a646755baf537f75334c46">home.php</a>
+: <a class="el" href="home_8php.html#a6e3dbf78f4ed74ab2577de221190b33f">home.php</a>
</li>
<li>home_init()
: <a class="el" href="home_8php.html#ac4642c38b6f23a8d065dd4a75c620bde">home.php</a>
@@ -200,6 +212,9 @@ $(document).ready(function(){initNavTree('globals_func_0x68.html','');});
<li>http_status_exit()
: <a class="el" href="include_2network_8php.html#a4cfb2c05a1c295317283d762440ce0b2">network.php</a>
</li>
+<li>hubloc_change_primary()
+: <a class="el" href="hubloc_8php.html#ad86214b3a74084bd7b54e8d6c919ce4d">hubloc.php</a>
+</li>
</ul>
</div><!-- contents -->
</div><!-- doc-content -->
diff --git a/doc/html/globals_func_0x69.html b/doc/html/globals_func_0x69.html
index 52a74b9b2..7a4c62227 100644
--- a/doc/html/globals_func_0x69.html
+++ b/doc/html/globals_func_0x69.html
@@ -143,8 +143,11 @@ $(document).ready(function(){initNavTree('globals_func_0x69.html','');});
&#160;
<h3><a class="anchor" id="index_i"></a>- i -</h3><ul>
+<li>ical_wrapper()
+: <a class="el" href="event_8php.html#ab8cc2825013e724dc26229026711cf93">event.php</a>
+</li>
<li>identity_basic_export()
-: <a class="el" href="identity_8php.html#a3570a4eb77332b292d394c4132cb8f03">identity.php</a>
+: <a class="el" href="identity_8php.html#afaedbc8e2d2a70ec8b006162baac5249">identity.php</a>
</li>
<li>identity_check_service_class()
: <a class="el" href="identity_8php.html#ac9fcd5c4c371998790b5c55c3d0f4633">identity.php</a>
@@ -155,9 +158,18 @@ $(document).ready(function(){initNavTree('globals_func_0x69.html','');});
<li>ids_to_querystr()
: <a class="el" href="text_8php.html#a436a8de00c942364c2d0fcfc7e1f4b5a">text.php</a>
</li>
+<li>impel_init()
+: <a class="el" href="impel_8php.html#ab7db6fca43b42ea4332cb3e841b3cf7b">impel.php</a>
+</li>
+<li>import_author_diaspora()
+: <a class="el" href="items_8php.html#a2c3f97b2109c05df86d97449b3c78ebc">items.php</a>
+</li>
<li>import_author_rss()
: <a class="el" href="items_8php.html#a6bee35961f2e32905f20367a9309d627">items.php</a>
</li>
+<li>import_author_unknown()
+: <a class="el" href="items_8php.html#a37f79991f36811cf847446ff60e8e11f">items.php</a>
+</li>
<li>import_author_xchan()
: <a class="el" href="items_8php.html#ae73794179b62d39bb597ff670ab1c1e5">items.php</a>
</li>
@@ -221,6 +233,9 @@ $(document).ready(function(){initNavTree('globals_func_0x69.html','');});
<li>is_foreigner()
: <a class="el" href="identity_8php.html#ae2b140df652a55ca11bb6a99005fce35">identity.php</a>
</li>
+<li>is_matrix_url()
+: <a class="el" href="hubloc_8php.html#aebd244b4616ded022cbbee5e82926951">hubloc.php</a>
+</li>
<li>is_member()
: <a class="el" href="identity_8php.html#a9637c557e13d9671f3eeb124ab98212a">identity.php</a>
</li>
diff --git a/doc/html/globals_func_0x6c.html b/doc/html/globals_func_0x6c.html
index 0cf4c0f94..f465f0bce 100644
--- a/doc/html/globals_func_0x6c.html
+++ b/doc/html/globals_func_0x6c.html
@@ -155,6 +155,9 @@ $(document).ready(function(){initNavTree('globals_func_0x6c.html','');});
<li>layouts_content()
: <a class="el" href="layouts_8php.html#a6e0193759ad9eef76d3df2db24237b50">layouts.php</a>
</li>
+<li>layouts_init()
+: <a class="el" href="layouts_8php.html#a39c8e9f72641c684c8b689bd91a642fa">layouts.php</a>
+</li>
<li>legal_webbie()
: <a class="el" href="text_8php.html#a2690ad67bb6fb97ef69de3e8d23f2728">text.php</a>
</li>
@@ -174,11 +177,14 @@ $(document).ready(function(){initNavTree('globals_func_0x6c.html','');});
: <a class="el" href="text_8php.html#a11255c8c4e5245b6c24f97684826aa54">text.php</a>
</li>
<li>list_post_dates()
-: <a class="el" href="items_8php.html#aa2d3caa2f27720762b5c729e07df40fb">items.php</a>
+: <a class="el" href="items_8php.html#ab33fa9756aaa5f39a6104d57a62baf00">items.php</a>
</li>
<li>list_public_sites()
: <a class="el" href="dirsearch_8php.html#a985d410a170549429857af6ff2673149">dirsearch.php</a>
</li>
+<li>list_smilies()
+: <a class="el" href="text_8php.html#a4446c7f8996a280f7e08b7bfe6c6c8bc">text.php</a>
+</li>
<li>load_config()
: <a class="el" href="include_2config_8php.html#a27559f388c9b9af81c94e48d6889d1d1">config.php</a>
</li>
@@ -195,7 +201,10 @@ $(document).ready(function(){initNavTree('globals_func_0x6c.html','');});
: <a class="el" href="plugin_8php.html#a326365e48ef94f0b9a0a771b8d75e813">plugin.php</a>
</li>
<li>load_pconfig()
-: <a class="el" href="include_2config_8php.html#ac543813a980b3841cc5a277fcd4a24a6">config.php</a>
+: <a class="el" href="include_2config_8php.html#a559791dda7fef8a4b2394c83e835787b">config.php</a>
+</li>
+<li>load_pdl()
+: <a class="el" href="boot_8php.html#a50a6707a28c7d05d3f49eaabc7994501">boot.php</a>
</li>
<li>load_plugin()
: <a class="el" href="plugin_8php.html#a9ca9632b7309a65b05c03a3e2f473a3d">plugin.php</a>
@@ -204,7 +213,7 @@ $(document).ready(function(){initNavTree('globals_func_0x6c.html','');});
: <a class="el" href="language_8php.html#a7e9904c730bb24ddcb0ff50fc96f6b05">language.php</a>
</li>
<li>load_xconfig()
-: <a class="el" href="include_2config_8php.html#a55bbed9a014c9109c767486834f3ca33">config.php</a>
+: <a class="el" href="include_2config_8php.html#aee4b619839cf4b64220f34edf5c67b52">config.php</a>
</li>
<li>local_dir_update()
: <a class="el" href="dir__fns_8php.html#acd37b17dce3bdec6d5a6344a20598c1e">dir_fns.php</a>
@@ -218,6 +227,15 @@ $(document).ready(function(){initNavTree('globals_func_0x6c.html','');});
<li>lockview_content()
: <a class="el" href="lockview_8php.html#a851e26ab9a1008df5c5ebebea31e9b44">lockview.php</a>
</li>
+<li>locs_content()
+: <a class="el" href="locs_8php.html#a6c900f53970c0d0e738d2fe06d27ca44">locs.php</a>
+</li>
+<li>locs_post()
+: <a class="el" href="locs_8php.html#a6b43654592919ac863d67a1f787a69b9">locs.php</a>
+</li>
+<li>log_failed_login()
+: <a class="el" href="auth_8php.html#ae3ecb5f34f202c7f9a61c5d589f6c6e1">auth.php</a>
+</li>
<li>logger()
: <a class="el" href="text_8php.html#a030fa5ecc64168af0c4f44897a9bce63">text.php</a>
</li>
diff --git a/doc/html/globals_func_0x6d.html b/doc/html/globals_func_0x6d.html
index ce5db2295..d5f9778a2 100644
--- a/doc/html/globals_func_0x6d.html
+++ b/doc/html/globals_func_0x6d.html
@@ -161,6 +161,9 @@ $(document).ready(function(){initNavTree('globals_func_0x6d.html','');});
<li>mail_store()
: <a class="el" href="items_8php.html#a77da7ce9a117601d49ac4a67c71b514f">items.php</a>
</li>
+<li>make_xchan_hash()
+: <a class="el" href="zot_8php.html#a0fc2211c5309d9f925ecc4115e3fdb75">zot.php</a>
+</li>
<li>manage_content()
: <a class="el" href="manage_8php.html#a2bca247b5296827638959138367db4f5">manage.php</a>
</li>
@@ -168,11 +171,14 @@ $(document).ready(function(){initNavTree('globals_func_0x6d.html','');});
: <a class="el" href="setup_8php.html#abe405d227ba7232971964a706d4f3bce">setup.php</a>
</li>
<li>map_scope()
-: <a class="el" href="items_8php.html#ac1fcf621dce7370515b420a7753f4726">items.php</a>
+: <a class="el" href="items_8php.html#a8675e62674de6fb7c42e4a408c7116cc">items.php</a>
</li>
<li>marital_selector()
: <a class="el" href="profile__selectors_8php.html#a7473dd095987e1cdcc79d4f0bb5e6798">profile_selectors.php</a>
</li>
+<li>marital_selector_min()
+: <a class="el" href="profile__selectors_8php.html#adc79715bd2e102b4583fb530749ec534">profile_selectors.php</a>
+</li>
<li>mark_orphan_hubsxchans()
: <a class="el" href="Contact_8php.html#a08845ce8c5b997d5edac38ae7118b5c8">Contact.php</a>
</li>
@@ -180,7 +186,7 @@ $(document).ready(function(){initNavTree('globals_func_0x6d.html','');});
: <a class="el" href="match_8php.html#a1dd853e959b9e70c1911bb2fb5f5130d">match.php</a>
</li>
<li>match_openid()
-: <a class="el" href="auth_8php.html#ab7be44ee051c0aa29847807cf2c5dd38">auth.php</a>
+: <a class="el" href="auth_8php.html#a69fa663e6baf65f80d1b114ad72615f2">auth.php</a>
</li>
<li>member_of()
: <a class="el" href="include_2group_8php.html#a048f6892bfd28852de1b76470df411de">group.php</a>
@@ -218,6 +224,9 @@ $(document).ready(function(){initNavTree('globals_func_0x6d.html','');});
<li>menu_list()
: <a class="el" href="include_2menu_8php.html#a32701c4245e78ba9106eef52c08bf33d">menu.php</a>
</li>
+<li>menu_list_count()
+: <a class="el" href="include_2menu_8php.html#a251bf7e15d21627fd92614198e41c485">menu.php</a>
+</li>
<li>menu_post()
: <a class="el" href="mod_2menu_8php.html#aaa491ef173868fe002aece4632bcf393">menu.php</a>
</li>
@@ -227,6 +236,12 @@ $(document).ready(function(){initNavTree('globals_func_0x6d.html','');});
<li>message_content()
: <a class="el" href="mod_2message_8php.html#ac72dfed3ce08fcb331d66b37edc6e15f">message.php</a>
</li>
+<li>metopem()
+: <a class="el" href="crypto_8php.html#af8bbdeaf4abed7b40365d301e6013c85">crypto.php</a>
+</li>
+<li>metorsa()
+: <a class="el" href="crypto_8php.html#a573f02517abe4ac9241268263063b2a0">crypto.php</a>
+</li>
<li>micropro()
: <a class="el" href="text_8php.html#a2a902f5fdba8646333e997898ac45ea3">text.php</a>
</li>
diff --git a/doc/html/globals_func_0x6e.html b/doc/html/globals_func_0x6e.html
index df62368c6..45592dc25 100644
--- a/doc/html/globals_func_0x6e.html
+++ b/doc/html/globals_func_0x6e.html
@@ -218,6 +218,12 @@ $(document).ready(function(){initNavTree('globals_func_0x6e.html','');});
<li>notifications_content()
: <a class="el" href="notifications_8php.html#aadd0b5525bd8c283a5d8a37982bbfe62">notifications.php</a>
</li>
+<li>notifications_off()
+: <a class="el" href="identity_8php.html#a2e6a1cc35887937823ec7fbb90472afe">identity.php</a>
+</li>
+<li>notifications_on()
+: <a class="el" href="identity_8php.html#a5650319c799de09d1b6d1076b6f839a4">identity.php</a>
+</li>
<li>notifications_post()
: <a class="el" href="notifications_8php.html#a5baffec7b2e625c9f9cefbc097550d33">notifications.php</a>
</li>
diff --git a/doc/html/globals_func_0x6f.html b/doc/html/globals_func_0x6f.html
index 3287852d1..cf3b88fc4 100644
--- a/doc/html/globals_func_0x6f.html
+++ b/doc/html/globals_func_0x6f.html
@@ -185,6 +185,9 @@ $(document).ready(function(){initNavTree('globals_func_0x6f.html','');});
<li>oexchange_init()
: <a class="el" href="oexchange_8php.html#ac8e2e469ddc3db984b0c1b44558aca59">oexchange.php</a>
</li>
+<li>old_webfinger()
+: <a class="el" href="include_2network_8php.html#a872bbe72d23826c64c9e0f822180a3ec">network.php</a>
+</li>
<li>onedirsync_run()
: <a class="el" href="onedirsync_8php.html#a411aedd47c57476099647961e6a86691">onedirsync.php</a>
</li>
@@ -200,6 +203,9 @@ $(document).ready(function(){initNavTree('globals_func_0x6f.html','');});
<li>opensearch_init()
: <a class="el" href="opensearch_8php.html#ad13034877a496565ac7d99e9fc6f55e9">opensearch.php</a>
</li>
+<li>os_mkdir()
+: <a class="el" href="boot_8php.html#a5fbebdf7a1c0ea8f904dbd9d78c2c06c">boot.php</a>
+</li>
</ul>
</div><!-- contents -->
</div><!-- doc-content -->
diff --git a/doc/html/globals_func_0x70.html b/doc/html/globals_func_0x70.html
index a5bab75dd..fe1a5488a 100644
--- a/doc/html/globals_func_0x70.html
+++ b/doc/html/globals_func_0x70.html
@@ -143,6 +143,9 @@ $(document).ready(function(){initNavTree('globals_func_0x70.html','');});
&#160;
<h3><a class="anchor" id="index_p"></a>- p -</h3><ul>
+<li>p_init()
+: <a class="el" href="p_8php.html#af9d5530ca0b3dc9409cf591c39e2480e">p.php</a>
+</li>
<li>page_content()
: <a class="el" href="page_8php.html#a91a5f649f68406149108bded1dc90b22">page.php</a>
</li>
@@ -179,6 +182,12 @@ $(document).ready(function(){initNavTree('globals_func_0x70.html','');});
<li>pdledit_post()
: <a class="el" href="pdledit_8php.html#a81da3c955d0e3db55d148a31483104c7">pdledit.php</a>
</li>
+<li>pemtome()
+: <a class="el" href="crypto_8php.html#a798368843cdd9bb08386b48e53e29e8c">crypto.php</a>
+</li>
+<li>pemtorsa()
+: <a class="el" href="crypto_8php.html#a35bc357c93f4ddc67ef377620b0349e8">crypto.php</a>
+</li>
<li>perm_is_allowed()
: <a class="el" href="permissions_8php.html#a67ada9ed51e77885b6b0f6a28cee1835">permissions.php</a>
</li>
@@ -239,12 +248,24 @@ $(document).ready(function(){initNavTree('globals_func_0x70.html','');});
<li>pipe_streams()
: <a class="el" href="include_2attach_8php.html#a5d484de2d19a93071571d6499a50ae34">attach.php</a>
</li>
+<li>pkcs1_encode()
+: <a class="el" href="crypto_8php.html#a890b443f80f0968fb9eabd93fc99dbb5">crypto.php</a>
+</li>
+<li>pkcs1to8()
+: <a class="el" href="crypto_8php.html#a4d15d19b446dbf47804675df7c85e2a9">crypto.php</a>
+</li>
<li>pkcs5_pad()
: <a class="el" href="crypto_8php.html#ad5e51fd44cff93cfaa07a37e24a5edec">crypto.php</a>
</li>
<li>pkcs5_unpad()
: <a class="el" href="crypto_8php.html#ac95ac3b1b23b65b04a86613d4206ae85">crypto.php</a>
</li>
+<li>pkcs8_encode()
+: <a class="el" href="crypto_8php.html#a0e941b6b18ff895d1a2448741abf2ef2">crypto.php</a>
+</li>
+<li>pkcs8to1()
+: <a class="el" href="crypto_8php.html#a7427a18417341aa35e2207bfa205e432">crypto.php</a>
+</li>
<li>plugin_is_installed()
: <a class="el" href="plugin_8php.html#a855c4fdb38c0fc2714d537752a4347f9">plugin.php</a>
</li>
@@ -263,6 +284,15 @@ $(document).ready(function(){initNavTree('globals_func_0x70.html','');});
<li>poke_init()
: <a class="el" href="poke_8php.html#a9725aab97b3983e6a98bd81c4efe7d3b">poke.php</a>
</li>
+<li>poll_content()
+: <a class="el" href="poll_8php.html#a3314c26bd2ac0ed831cebf3315cd3263">poll.php</a>
+</li>
+<li>poll_init()
+: <a class="el" href="poll_8php.html#ab9ecd5b71af090a5da9c93f34f7ec930">poll.php</a>
+</li>
+<li>poll_post()
+: <a class="el" href="poll_8php.html#a26be9d4f230cb68f5be326198cfc6c77">poll.php</a>
+</li>
<li>poller_run()
: <a class="el" href="poller_8php.html#a5f12df3a4738124b6c039971e87e76da">poller.php</a>
</li>
@@ -281,54 +311,6 @@ $(document).ready(function(){initNavTree('globals_func_0x70.html','');});
<li>post_post()
: <a class="el" href="post_8php.html#af59e6a1dc22d19d9257b01cd7ccedb75">post.php</a>
</li>
-<li>post_to_red_admin()
-: <a class="el" href="post__to__red_8php.html#aeec4125719184e7b097b3b9fba3101b5">post_to_red.php</a>
-</li>
-<li>post_to_red_deactivate()
-: <a class="el" href="post__to__red_8php.html#a49fd35f7b1cdddfe6e26ddfcf8d3c4ec">post_to_red.php</a>
-</li>
-<li>post_to_red_delete_comment()
-: <a class="el" href="post__to__red_8php.html#a5cc2a89a6d33cdb8e2ca557a69bef42d">post_to_red.php</a>
-</li>
-<li>post_to_red_delete_post()
-: <a class="el" href="post__to__red_8php.html#a4674bb5ce2baa32c559607460c39a2c5">post_to_red.php</a>
-</li>
-<li>post_to_red_display_admin_page()
-: <a class="el" href="post__to__red_8php.html#a8ec8f8809e3c5d1b2c9598c8185d63aa">post_to_red.php</a>
-</li>
-<li>post_to_red_displayAdminContent()
-: <a class="el" href="post__to__red_8php.html#a75db5d87226a0287a0ac0fa315f2bcfd">post_to_red.php</a>
-</li>
-<li>post_to_red_get_acct_name()
-: <a class="el" href="post__to__red_8php.html#ae6f3a2c0561cbeacda5be565b06de8a7">post_to_red.php</a>
-</li>
-<li>post_to_red_get_avatar()
-: <a class="el" href="post__to__red_8php.html#ae0b881461afbdba93d9329068ea52136">post_to_red.php</a>
-</li>
-<li>post_to_red_get_channel_name()
-: <a class="el" href="post__to__red_8php.html#aacba7a0646fc00ae6ac4f5dc383fccab">post_to_red.php</a>
-</li>
-<li>post_to_red_get_password()
-: <a class="el" href="post__to__red_8php.html#a4d90ac085c14f53ff4d8ab4c23477ea6">post_to_red.php</a>
-</li>
-<li>post_to_red_get_seed_location()
-: <a class="el" href="post__to__red_8php.html#a96d0ccecb96600ef1bfd50ab3f77315f">post_to_red.php</a>
-</li>
-<li>post_to_red_post()
-: <a class="el" href="post__to__red_8php.html#af5fd50e2c42ede85f8a9e8d9ee3cf540">post_to_red.php</a>
-</li>
-<li>post_to_red_post_checkbox()
-: <a class="el" href="post__to__red_8php.html#a0f139dea77a94c98f26007963eea639c">post_to_red.php</a>
-</li>
-<li>post_to_red_post_field_data()
-: <a class="el" href="post__to__red_8php.html#a7e68a8d9c83cb28d032aad3ea85ce0a6">post_to_red.php</a>
-</li>
-<li>post_to_red_post_meta_content()
-: <a class="el" href="post__to__red_8php.html#aa97aeda12ef080665f16311a4e1eb901">post_to_red.php</a>
-</li>
-<li>post_to_red_settings_link()
-: <a class="el" href="post__to__red_8php.html#a906be8f72cf1aa2e199c0683ea6a4017">post_to_red.php</a>
-</li>
<li>posted_dates()
: <a class="el" href="items_8php.html#ad2abb4644ff1f20fefbc80326fe01cf0">items.php</a>
</li>
@@ -402,7 +384,10 @@ $(document).ready(function(){initNavTree('globals_func_0x70.html','');});
: <a class="el" href="zot_8php.html#ac301c67864917c35922257950ae0f95c">zot.php</a>
</li>
<li>process_delivery()
-: <a class="el" href="zot_8php.html#a4d9e6ca295e443b740d9960c304b3474">zot.php</a>
+: <a class="el" href="zot_8php.html#a0e3006e7a456b2175a9badc96bc5176d">zot.php</a>
+</li>
+<li>process_location_delivery()
+: <a class="el" href="zot_8php.html#a8eeefdb0dad4c436bea9d1c06c0a7988">zot.php</a>
</li>
<li>process_mail_delivery()
: <a class="el" href="zot_8php.html#aa6ae96db8cbbdbb10e6876d206bbf7cc">zot.php</a>
@@ -470,6 +455,9 @@ $(document).ready(function(){initNavTree('globals_func_0x70.html','');});
<li>public_recips()
: <a class="el" href="zot_8php.html#a083aec6c900d244e1bfc1406f9461465">zot.php</a>
</li>
+<li>pubrsatome()
+: <a class="el" href="crypto_8php.html#a2a3fae7caca27f86d158eeaf69b6f287">crypto.php</a>
+</li>
<li>pubsites_content()
: <a class="el" href="pubsites_8php.html#af614e279aab54065345bda6b03eafdf0">pubsites.php</a>
</li>
diff --git a/doc/html/globals_func_0x72.html b/doc/html/globals_func_0x72.html
index 30a10705b..59369194b 100644
--- a/doc/html/globals_func_0x72.html
+++ b/doc/html/globals_func_0x72.html
@@ -144,7 +144,7 @@ $(document).ready(function(){initNavTree('globals_func_0x72.html','');});
<h3><a class="anchor" id="index_r"></a>- r -</h3><ul>
<li>random_profile()
-: <a class="el" href="Contact_8php.html#a852fa476f0c70bde10a4f2533aec5f71">Contact.php</a>
+: <a class="el" href="Contact_8php.html#a7e3f5bef8ea1d2bf8434c9be36a2b713">Contact.php</a>
</li>
<li>random_string()
: <a class="el" href="text_8php.html#a9d6a5ee1290de7a8b483fe78585daade">text.php</a>
@@ -164,8 +164,8 @@ $(document).ready(function(){initNavTree('globals_func_0x72.html','');});
<li>rebuild_theme_table()
: <a class="el" href="admin_8php.html#ae46311a3fefc21abc838a26e91789de6">admin.php</a>
</li>
-<li>red_comment()
-: <a class="el" href="post__to__red_8php.html#a085c250d4ceff5e4f10052f3d2039823">post_to_red.php</a>
+<li>receive_post()
+: <a class="el" href="receive_8php.html#a03d8fa26e77844020ba5602deca7d494">receive.php</a>
</li>
<li>red_escape_codeblock()
: <a class="el" href="items_8php.html#a49905ea75adfe8a2d110be344d18d6a6">items.php</a>
@@ -179,9 +179,6 @@ $(document).ready(function(){initNavTree('globals_func_0x72.html','');});
<li>red_unescape_codeblock()
: <a class="el" href="items_8php.html#ad4ee16e3ff1eaf60428c61f82ba25e6a">items.php</a>
</li>
-<li>red_xmlrpc_methods()
-: <a class="el" href="post__to__red_8php.html#a3a2af6ad845239f26e86fccabf8639e1">post_to_red.php</a>
-</li>
<li>red_zrl_callback()
: <a class="el" href="items_8php.html#a4e6d7639431e0dd8e9f4dba8e1ac408b">items.php</a>
</li>
@@ -224,6 +221,24 @@ $(document).ready(function(){initNavTree('globals_func_0x72.html','');});
<li>ref_session_write()
: <a class="el" href="session_8php.html#ac4461c1984543d3553e73dba2771568f">session.php</a>
</li>
+<li>refimport_content()
+: <a class="el" href="refimport_8php.html#ad97ebb5feda0230a4834e0b3637a0d29">refimport.php</a>
+</li>
+<li>reflect_article_callback()
+: <a class="el" href="refimport_8php.html#a53434bc19e6264db89e18d92ddc09860">refimport.php</a>
+</li>
+<li>reflect_comment_store()
+: <a class="el" href="refimport_8php.html#a01a29630fa5e1ce6cd5e1fd75280747c">refimport.php</a>
+</li>
+<li>reflect_find_user()
+: <a class="el" href="refimport_8php.html#aa98de7d112e3a5b4b6956f108d04a41d">refimport.php</a>
+</li>
+<li>reflect_get_channel()
+: <a class="el" href="refimport_8php.html#a6c3e0475fde9fe72ff2492a5e3e5259c">refimport.php</a>
+</li>
+<li>reflect_photo_callback()
+: <a class="el" href="refimport_8php.html#ae9c56f779d1e0ac7bcb2a460129e7ae5">refimport.php</a>
+</li>
<li>register_content()
: <a class="el" href="register_8php.html#a0e91f57f111407ea8d3223a05022bb2a">register.php</a>
</li>
@@ -266,9 +281,18 @@ $(document).ready(function(){initNavTree('globals_func_0x72.html','');});
<li>remove_community_tag()
: <a class="el" href="zot_8php.html#aad25a3fe0e1566121d6fb8222979bc10">zot.php</a>
</li>
+<li>remove_obsolete_hublocs()
+: <a class="el" href="hubloc_8php.html#a84c79b7be352f62d12fe4fa2c80fc6ea">hubloc.php</a>
+</li>
<li>remove_queue_item()
: <a class="el" href="queue__fn_8php.html#a8fe71e981399bbf5d000a6ca42f57b24">queue_fn.php</a>
</li>
+<li>removeaccount_content()
+: <a class="el" href="removeaccount_8php.html#a516e7380b9e5796054aa8245f3509695">removeaccount.php</a>
+</li>
+<li>removeaccount_post()
+: <a class="el" href="removeaccount_8php.html#a26a3325292e932c59793430ab737126a">removeaccount.php</a>
+</li>
<li>removeme_content()
: <a class="el" href="removeme_8php.html#a065a589caa2aa84c60f7073a28f0ad9c">removeme.php</a>
</li>
@@ -305,12 +329,18 @@ $(document).ready(function(){initNavTree('globals_func_0x72.html','');});
<li>rpost_content()
: <a class="el" href="rpost_8php.html#a8190354d789000806d9879aea276728f">rpost.php</a>
</li>
+<li>rrmdir()
+: <a class="el" href="Contact_8php.html#ab5895b75a3b2abdddf1cb351a8c6b58b">Contact.php</a>
+</li>
<li>rsa_sign()
: <a class="el" href="crypto_8php.html#a920e5f222d0020f47556033d8b2b6552">crypto.php</a>
</li>
<li>rsa_verify()
: <a class="el" href="crypto_8php.html#ab4f21d8f6b8ece0915e7c8bb73379f96">crypto.php</a>
</li>
+<li>rsatopem()
+: <a class="el" href="crypto_8php.html#a7f7e650aaeaa3832580a73eb00966b26">crypto.php</a>
+</li>
<li>rsd_xml_content()
: <a class="el" href="rsd__xml_8php.html#a740cd02fa15e5a53f8547fac73f0ab82">rsd_xml.php</a>
</li>
diff --git a/doc/html/globals_func_0x73.html b/doc/html/globals_func_0x73.html
index 17278797d..2cd598b41 100644
--- a/doc/html/globals_func_0x73.html
+++ b/doc/html/globals_func_0x73.html
@@ -143,12 +143,21 @@ $(document).ready(function(){initNavTree('globals_func_0x73.html','');});
&#160;
<h3><a class="anchor" id="index_s"></a>- s -</h3><ul>
+<li>salmon_key()
+: <a class="el" href="crypto_8php.html#a9191447cc46f0b4eaba3273e313994d5">crypto.php</a>
+</li>
<li>sanitise_acl()
: <a class="el" href="text_8php.html#a9fbeae13c9abd6e27cb4d8d1817f969c">text.php</a>
</li>
<li>scale_external_images()
: <a class="el" href="include_2network_8php.html#ae8d9c41a11000fb8667039fc71b4f73f">network.php</a>
</li>
+<li>scrape_feed()
+: <a class="el" href="include_2network_8php.html#a316f318167a039c89719afbd129a8f3c">network.php</a>
+</li>
+<li>scrape_vcard()
+: <a class="el" href="include_2network_8php.html#acb0bd7f5fe38ff1eaebeae3284525070">network.php</a>
+</li>
<li>script_path()
: <a class="el" href="plugin_8php.html#a0e8c2ea50bfdbc39e17ccccaea21ddc3">plugin.php</a>
</li>
@@ -167,9 +176,6 @@ $(document).ready(function(){initNavTree('globals_func_0x73.html','');});
<li>searchbox()
: <a class="el" href="text_8php.html#aae91e4d2a2c6f7a9daccd2c186ae3447">text.php</a>
</li>
-<li>select_timezone()
-: <a class="el" href="datetime_8php.html#a633dadba426fa2f60b25fabdb19ebc1f">datetime.php</a>
-</li>
<li>send_message()
: <a class="el" href="include_2message_8php.html#a751ffd6635022b2190f56154ee745752">message.php</a>
</li>
@@ -183,10 +189,13 @@ $(document).ready(function(){initNavTree('globals_func_0x73.html','');});
: <a class="el" href="account_8php.html#aa9c29c497c17d8f9344dce8631ad8761">account.php</a>
</li>
<li>service_class_allows()
-: <a class="el" href="plugin_8php.html#a030cec6793b909c439c0336ba39b1571">plugin.php</a>
+: <a class="el" href="account_8php.html#a030cec6793b909c439c0336ba39b1571">account.php</a>
</li>
<li>service_class_fetch()
-: <a class="el" href="plugin_8php.html#a905b54e10704b283ac64680a8abc0971">plugin.php</a>
+: <a class="el" href="account_8php.html#a905b54e10704b283ac64680a8abc0971">account.php</a>
+</li>
+<li>service_limits_content()
+: <a class="el" href="service__limits_8php.html#a653424aac63c5cd05ba70c3c77bf7f8a">service_limits.php</a>
</li>
<li>set_config()
: <a class="el" href="include_2config_8php.html#ad6da879e4fb5b37d1e161d4e9be5c32a">config.php</a>
@@ -218,9 +227,18 @@ $(document).ready(function(){initNavTree('globals_func_0x73.html','');});
<li>sexpref_selector()
: <a class="el" href="profile__selectors_8php.html#a3b50b3ea4ea4bdbebebfffc5d1b157c7">profile_selectors.php</a>
</li>
+<li>sexpref_selector_min()
+: <a class="el" href="profile__selectors_8php.html#ab0eae5c0ceba77364469f0f580f0d074">profile_selectors.php</a>
+</li>
<li>share_init()
: <a class="el" href="share_8php.html#afeb26046bdd02567ecd29ab5f188b249">share.php</a>
</li>
+<li>share_shield()
+: <a class="el" href="bb2diaspora_8php.html#ad033be99e87a2aaa05e569c68f30792d">bb2diaspora.php</a>
+</li>
+<li>share_unshield()
+: <a class="el" href="bb2diaspora_8php.html#ab61b4f8c065e97b151411858bb2f209a">bb2diaspora.php</a>
+</li>
<li>showForm()
: <a class="el" href="fpostit_8php.html#a3f3ae3ae61578b5671673914fd894443">fpostit.php</a>
</li>
@@ -281,12 +299,18 @@ $(document).ready(function(){initNavTree('globals_func_0x73.html','');});
<li>starred_init()
: <a class="el" href="starred_8php.html#a63024fb418c678e49fd535e3752d349a">starred.php</a>
</li>
+<li>start_delivery_chain()
+: <a class="el" href="items_8php.html#adf2b8137dc4ad9ec958de2842f16f3c2">items.php</a>
+</li>
<li>startup()
: <a class="el" href="boot_8php.html#aca47505b8732177f52bb2d647eb2741c">boot.php</a>
</li>
<li>status_editor()
: <a class="el" href="conversation_8php.html#a2a7d541854bba755eb8ada59af7dcb1a">conversation.php</a>
</li>
+<li>store_diaspora_comment_sig()
+: <a class="el" href="items_8php.html#a25221826fa4621f523c68483e3b6af26">items.php</a>
+</li>
<li>store_item_tag()
: <a class="el" href="taxonomy_8php.html#a4ba1339b2a7054971178ce194e4440fd">taxonomy.php</a>
</li>
@@ -311,9 +335,15 @@ $(document).ready(function(){initNavTree('globals_func_0x73.html','');});
<li>stripdcode_br_cb()
: <a class="el" href="bb2diaspora_8php.html#a180b0e3a7d702998be19e3c3b44b0e93">bb2diaspora.php</a>
</li>
+<li>stumble_init()
+: <a class="el" href="stumble_2php_2theme_8php.html#a71db9eff6289e0ee47771c37c01d6753">theme.php</a>
+</li>
<li>subthread_content()
: <a class="el" href="subthread_8php.html#a50368f3d825b77996030528e7fbfa3d3">subthread.php</a>
</li>
+<li>suckerberg_init()
+: <a class="el" href="suckerberg_2php_2theme_8php.html#a4104fce7d5fb71d15ed811978b628fc8">theme.php</a>
+</li>
<li>suggest_content()
: <a class="el" href="suggest_8php.html#a58748a8235d4523f8333847f3e42dd91">suggest.php</a>
</li>
@@ -326,6 +356,9 @@ $(document).ready(function(){initNavTree('globals_func_0x73.html','');});
<li>sync_directories()
: <a class="el" href="dir__fns_8php.html#aa666e7df6ca8c332f4081c9b66b4bdf6">dir_fns.php</a>
</li>
+<li>sync_locations()
+: <a class="el" href="zot_8php.html#ab15c04e7e5f44edf45ec50dd7d183254">zot.php</a>
+</li>
<li>system_down()
: <a class="el" href="system__unavailable_8php.html#a73751a6bcc17ad3ca503496e2fb020fa">system_unavailable.php</a>
</li>
diff --git a/doc/html/globals_func_0x74.html b/doc/html/globals_func_0x74.html
index d3bf2b66c..6c8d64872 100644
--- a/doc/html/globals_func_0x74.html
+++ b/doc/html/globals_func_0x74.html
@@ -179,21 +179,12 @@ $(document).ready(function(){initNavTree('globals_func_0x74.html','');});
<li>term_query()
: <a class="el" href="taxonomy_8php.html#a7a913d19c77610da689be48fbbf6734c">taxonomy.php</a>
</li>
-<li>terminate_friendship()
-: <a class="el" href="Contact_8php.html#a38daa1c210b78385307123450ca9a1fc">Contact.php</a>
-</li>
<li>termtype()
: <a class="el" href="items_8php.html#ad34827ed330898456783fb14c7b46154">items.php</a>
</li>
<li>tgroup_check()
: <a class="el" href="items_8php.html#a88c6cf7649ac836fbbed82a7a0315110">items.php</a>
</li>
-<li>theme_admin()
-: <a class="el" href="view_2theme_2blogga_2php_2config_8php.html#a09cd81013505f83aea0771243a1e4e53">config.php</a>
-</li>
-<li>theme_admin_post()
-: <a class="el" href="view_2theme_2blogga_2php_2config_8php.html#aef2da5582b7cb6b5f63e5ca5d69fd30b">config.php</a>
-</li>
<li>theme_attachments()
: <a class="el" href="text_8php.html#af9c9ac3f74c82dc60acfa404d0e9dc53">text.php</a>
</li>
@@ -204,7 +195,7 @@ $(document).ready(function(){initNavTree('globals_func_0x74.html','');});
: <a class="el" href="plugin_8php.html#a65fedcffbe03562ef844cabee37d34e2">plugin.php</a>
</li>
<li>theme_post()
-: <a class="el" href="view_2theme_2blogga_2php_2config_8php.html#ad29461920cf03b9ce1428e21eb1f4ba6">config.php</a>
+: <a class="el" href="view_2theme_2apw_2php_2config_8php.html#ad29461920cf03b9ce1428e21eb1f4ba6">config.php</a>
</li>
<li>theme_status()
: <a class="el" href="admin_8php.html#ad4f74f33944a98b56d2c8c7601f124a4">admin.php</a>
@@ -216,7 +207,7 @@ $(document).ready(function(){initNavTree('globals_func_0x74.html','');});
: <a class="el" href="thing_8php.html#a8be23b1d475ec3d9291999221c674c80">thing.php</a>
</li>
<li>timesel()
-: <a class="el" href="datetime_8php.html#a36d3d6dff8d76b5f295bb3d9c535a5b1">datetime.php</a>
+: <a class="el" href="datetime_8php.html#a3f239f94e23335d860b148958d87a093">datetime.php</a>
</li>
<li>timezone_cmp()
: <a class="el" href="datetime_8php.html#aa51b5a7ea4f931b23acbdfcea46e9865">datetime.php</a>
@@ -233,9 +224,15 @@ $(document).ready(function(){initNavTree('globals_func_0x74.html','');});
<li>toggle_theme()
: <a class="el" href="admin_8php.html#af81f081851791cd15e49e8ff6722dc27">admin.php</a>
</li>
+<li>translate_scope()
+: <a class="el" href="items_8php.html#aabfaa193b83154c2a81e91284e5d5e59">items.php</a>
+</li>
<li>translate_system_apps()
: <a class="el" href="include_2apps_8php.html#a48289d5cc44b7638191738106ac5d030">apps.php</a>
</li>
+<li>trim_message()
+: <a class="el" href="po2php_8php.html#a4f3dc9b019d0cd1dc171c54c991ef334">po2php.php</a>
+</li>
<li>tryoembed()
: <a class="el" href="bbcode_8php.html#a55b0cb6973f1ec731de0e726bcc0efa7">bbcode.php</a>
</li>
diff --git a/doc/html/globals_func_0x75.html b/doc/html/globals_func_0x75.html
index 0b57ed450..23cce5cc1 100644
--- a/doc/html/globals_func_0x75.html
+++ b/doc/html/globals_func_0x75.html
@@ -143,6 +143,9 @@ $(document).ready(function(){initNavTree('globals_func_0x75.html','');});
&#160;
<h3><a class="anchor" id="index_u"></a>- u -</h3><ul>
+<li>uexport_content()
+: <a class="el" href="uexport_8php.html#ae6f79d60916c01675c8cf663cb5fec84">uexport.php</a>
+</li>
<li>uexport_init()
: <a class="el" href="uexport_8php.html#a118920137dedebe0581623a2e57e7b0d">uexport.php</a>
</li>
@@ -176,15 +179,33 @@ $(document).ready(function(){initNavTree('globals_func_0x75.html','');});
<li>update_channel_content()
: <a class="el" href="update__channel_8php.html#aca52a9da500f0db2f0a8666af5bc06ba">update_channel.php</a>
</li>
+<li>update_channels_active_halfyear_stat()
+: <a class="el" href="statistics__fns_8php.html#a82726229a961d3bd3d543005c61dd8e6">statistics_fns.php</a>
+</li>
+<li>update_channels_active_monthly_stat()
+: <a class="el" href="statistics__fns_8php.html#ad2b7b595c039c4c2eb0d6cd57a393dfe">statistics_fns.php</a>
+</li>
+<li>update_channels_total_stat()
+: <a class="el" href="statistics__fns_8php.html#a05858927cce81fd367aedf85a94ed90c">statistics_fns.php</a>
+</li>
<li>update_directory_entry()
: <a class="el" href="dir__fns_8php.html#a44062d4b471d1e83f92f6c184585aa13">dir_fns.php</a>
</li>
<li>update_display_content()
: <a class="el" href="update__display_8php.html#aa36ac524059e209d5d75a03c16206246">update_display.php</a>
</li>
+<li>update_feed_item()
+: <a class="el" href="items_8php.html#a9b449eeae50003414b8b30ca927af434">items.php</a>
+</li>
+<li>update_home_content()
+: <a class="el" href="update__home_8php.html#a668340089acd150b830134476a647d05">update_home.php</a>
+</li>
<li>update_imported_item()
: <a class="el" href="zot_8php.html#a31aad56acf8ff8f2353e6ff8595544df">zot.php</a>
</li>
+<li>update_local_posts_stat()
+: <a class="el" href="statistics__fns_8php.html#a9dd516dda693f17f5ce48a94876f7efa">statistics_fns.php</a>
+</li>
<li>update_modtime()
: <a class="el" href="zot_8php.html#ab319d1d9fff9c7775d9daef42d1f33dd">zot.php</a>
</li>
@@ -204,13 +225,13 @@ $(document).ready(function(){initNavTree('globals_func_0x75.html','');});
: <a class="el" href="socgraph_8php.html#a790690bb1a1d02483fe31632a160144d">socgraph.php</a>
</li>
<li>upgrade_bool_message()
-: <a class="el" href="plugin_8php.html#a754d7f53b3abc557b753c057dc4e021d">plugin.php</a>
+: <a class="el" href="account_8php.html#a754d7f53b3abc557b753c057dc4e021d">account.php</a>
</li>
<li>upgrade_link()
-: <a class="el" href="plugin_8php.html#a4fc13e528367f510fcb6d8bbfc559040">plugin.php</a>
+: <a class="el" href="account_8php.html#a4fc13e528367f510fcb6d8bbfc559040">account.php</a>
</li>
<li>upgrade_message()
-: <a class="el" href="plugin_8php.html#a901657dd078e070516cf97285e0bada7">plugin.php</a>
+: <a class="el" href="account_8php.html#a901657dd078e070516cf97285e0bada7">account.php</a>
</li>
<li>user_allow()
: <a class="el" href="account_8php.html#ac5c570a2d46446bad4dd2501e9c5a4b1">account.php</a>
diff --git a/doc/html/globals_func_0x77.html b/doc/html/globals_func_0x77.html
index 8531e1a57..399f6a6fc 100644
--- a/doc/html/globals_func_0x77.html
+++ b/doc/html/globals_func_0x77.html
@@ -149,18 +149,18 @@ $(document).ready(function(){initNavTree('globals_func_0x77.html','');});
<li>wall_upload_post()
: <a class="el" href="wall__upload_8php.html#a7cbe204244cf9e0380ee932263a74d8f">wall_upload.php</a>
</li>
-<li>webfinger()
-: <a class="el" href="include_2network_8php.html#a8122356933bcd6b0a8567e8e15ae5cc5">network.php</a>
-</li>
<li>webfinger_content()
: <a class="el" href="webfinger_8php.html#a17dd28db6d390194bf9ecb809739d1d3">webfinger.php</a>
</li>
-<li>webfinger_dfrn()
-: <a class="el" href="include_2network_8php.html#adf6008b38c555e98e7ed10da9ede2335">network.php</a>
+<li>webfinger_rfc7033()
+: <a class="el" href="include_2network_8php.html#a3e6c751a51de33ad3563f0938296e78a">network.php</a>
</li>
<li>webpages_content()
: <a class="el" href="webpages_8php.html#af3b7397d4abc153e3d2147740ee1a41d">webpages.php</a>
</li>
+<li>webpages_init()
+: <a class="el" href="webpages_8php.html#af9ad0b65eba79acead3fa32b43d888b7">webpages.php</a>
+</li>
<li>wfinger_init()
: <a class="el" href="wfinger_8php.html#ae21e50c8d0a5f3c9be9f43a4e519acd3">wfinger.php</a>
</li>
@@ -179,6 +179,9 @@ $(document).ready(function(){initNavTree('globals_func_0x77.html','');});
<li>widget_bookmarkedchats()
: <a class="el" href="widgets_8php.html#a0e2f5179ed1a73b282dfda7270fcabb3">widgets.php</a>
</li>
+<li>widget_catcloud_wall()
+: <a class="el" href="widgets_8php.html#af919de8e7e2ba8192a65fadc72a2c8b5">widgets.php</a>
+</li>
<li>widget_categories()
: <a class="el" href="widgets_8php.html#af37fdad3b2e861d860a4a8c4d8a76c0b">widgets.php</a>
</li>
@@ -233,9 +236,15 @@ $(document).ready(function(){initNavTree('globals_func_0x77.html','');});
<li>widget_photo_albums()
: <a class="el" href="widgets_8php.html#a702e2fc0adc9b615999eca18b7311b5e">widgets.php</a>
</li>
+<li>widget_photo_rand()
+: <a class="el" href="widgets_8php.html#af8eb466ef91d9e96e13335ead5eba380">widgets.php</a>
+</li>
<li>widget_profile()
: <a class="el" href="widgets_8php.html#abd2e508a2a0b911c4a838e3cb7599923">widgets.php</a>
</li>
+<li>widget_random_block()
+: <a class="el" href="widgets_8php.html#a829c5a5c7448129266fc1df3ae1a3c2e">widgets.php</a>
+</li>
<li>widget_savedsearch()
: <a class="el" href="widgets_8php.html#a94203eb9bcd63cbdecbbcb15163598d8">widgets.php</a>
</li>
@@ -260,6 +269,9 @@ $(document).ready(function(){initNavTree('globals_func_0x77.html','');});
<li>writepages_widget()
: <a class="el" href="page__widgets_8php.html#a1a1e729da27f252cab6678288a17958f">page_widgets.php</a>
</li>
+<li>wtagblock()
+: <a class="el" href="taxonomy_8php.html#a83f0a60f9e0c07d8451dc5be95b17287">taxonomy.php</a>
+</li>
</ul>
</div><!-- contents -->
</div><!-- doc-content -->
diff --git a/doc/html/globals_func_0x78.html b/doc/html/globals_func_0x78.html
index 24b97f465..133418043 100644
--- a/doc/html/globals_func_0x78.html
+++ b/doc/html/globals_func_0x78.html
@@ -144,16 +144,22 @@ $(document).ready(function(){initNavTree('globals_func_0x78.html','');});
<h3><a class="anchor" id="index_x"></a>- x -</h3><ul>
<li>x()
-: <a class="el" href="boot_8php.html#a01353c9abebc3544ea080ac161729632">boot.php</a>
+: <a class="el" href="boot_8php.html#ae97836b0547953be182a2334c9c91d3c">boot.php</a>
</li>
<li>xchan_content()
: <a class="el" href="xchan_8php.html#a9853348bf1a35c644460221ba75edc2d">xchan.php</a>
</li>
+<li>xchan_fetch()
+: <a class="el" href="hubloc_8php.html#af1b476c936f96a93282b1d058e3d05ea">hubloc.php</a>
+</li>
<li>xchan_mail_query()
: <a class="el" href="text_8php.html#a543447c5ed766535221e2d9636b379ee">text.php</a>
</li>
<li>xchan_query()
-: <a class="el" href="text_8php.html#a36a2e5d418ee81140f25c4233cfecd1f">text.php</a>
+: <a class="el" href="text_8php.html#a905c3895feb6f276df23f07f16f9bb52">text.php</a>
+</li>
+<li>xchan_store()
+: <a class="el" href="hubloc_8php.html#acb708dd197aae72a4858cf5ff4e3195b">hubloc.php</a>
</li>
<li>xml2array()
: <a class="el" href="include_2network_8php.html#a99353baabbc3e0584b85eb79ee802cff">network.php</a>
@@ -164,9 +170,6 @@ $(document).ready(function(){initNavTree('globals_func_0x78.html','');});
<li>xmlify()
: <a class="el" href="text_8php.html#aaed4413ed8918838b517e3b2fafaea0d">text.php</a>
</li>
-<li>xpost_to_html2bbcode()
-: <a class="el" href="post__to__red_8php.html#af2713018a2dc97e88f121fc6215beb66">post_to_red.php</a>
-</li>
<li>xrd_init()
: <a class="el" href="xrd_8php.html#aee3cf087968e4a0ff3a87de16eb23270">xrd.php</a>
</li>
diff --git a/doc/html/globals_func_0x7a.html b/doc/html/globals_func_0x7a.html
index 6b484536f..edcfe475d 100644
--- a/doc/html/globals_func_0x7a.html
+++ b/doc/html/globals_func_0x7a.html
@@ -149,6 +149,12 @@ $(document).ready(function(){initNavTree('globals_func_0x7a.html','');});
<li>z_fetch_url()
: <a class="el" href="include_2network_8php.html#aafd06c0a75402aefb06cfb9f9740fa37">network.php</a>
</li>
+<li>z_get_temp_dir()
+: <a class="el" href="boot_8php.html#a59717d02602a4babf2a54da8b33d93a5">boot.php</a>
+</li>
+<li>z_get_upload_dir()
+: <a class="el" href="boot_8php.html#a476c499e15caf75972fed134a8f23b2e">boot.php</a>
+</li>
<li>z_input_filter()
: <a class="el" href="text_8php.html#a324c58f37f6acdf9cd1922aa76077d9f">text.php</a>
</li>
@@ -161,6 +167,9 @@ $(document).ready(function(){initNavTree('globals_func_0x7a.html','');});
<li>z_post_url()
: <a class="el" href="include_2network_8php.html#a9129fd55e7fc175b4ea9a195cccc16bc">network.php</a>
</li>
+<li>z_post_url_json()
+: <a class="el" href="include_2network_8php.html#a984708e60d531b31b2d1f88b5f408f7b">network.php</a>
+</li>
<li>z_readdir()
: <a class="el" href="include_2attach_8php.html#aeb07968990e66a88c95483ca09a7f909">attach.php</a>
</li>
@@ -186,10 +195,13 @@ $(document).ready(function(){initNavTree('globals_func_0x7a.html','');});
: <a class="el" href="text_8php.html#a29988052f3944111def3b6aaf2c7a8f6">text.php</a>
</li>
<li>zot_build_packet()
-: <a class="el" href="zot_8php.html#a3862b3161b2c8557dc1a95020179bd81">zot.php</a>
+: <a class="el" href="zot_8php.html#a084c581d534e7e3b759488b46602288f">zot.php</a>
+</li>
+<li>zot_encode_locations()
+: <a class="el" href="zot_8php.html#ae26ce9f1ad74139193fb6319beac5fca">zot.php</a>
</li>
<li>zot_feed()
-: <a class="el" href="items_8php.html#a004e89d86b0f29b2c4da20108ecc4091">items.php</a>
+: <a class="el" href="items_8php.html#a1cf89557f32d5dfbe8bd90448dc1aa92">items.php</a>
</li>
<li>zot_fetch()
: <a class="el" href="zot_8php.html#a61cdc1ec843663c423ed2d8160ae5aea">zot.php</a>
@@ -209,6 +221,9 @@ $(document).ready(function(){initNavTree('globals_func_0x7a.html','');});
<li>zot_new_uid()
: <a class="el" href="zot_8php.html#ab22d67660702056bf3f4696dcebf5ce7">zot.php</a>
</li>
+<li>zot_process_message_request()
+: <a class="el" href="zot_8php.html#a3920afe14fc1d82020161b4b86bcd9ac">zot.php</a>
+</li>
<li>zot_process_response()
: <a class="el" href="zot_8php.html#a928f5643ca66ae9635d85aeb2be62e03">zot.php</a>
</li>
diff --git a/doc/html/globals_vars.html b/doc/html/globals_vars.html
index db57ee822..ee5b3dd4e 100644
--- a/doc/html/globals_vars.html
+++ b/doc/html/globals_vars.html
@@ -101,6 +101,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
<li><a href="globals_vars_0x73.html#index_s"><span>s</span></a></li>
<li><a href="globals_vars_0x74.html#index_t"><span>t</span></a></li>
<li><a href="globals_vars_0x75.html#index_u"><span>u</span></a></li>
+ <li><a href="globals_vars_0x76.html#index_v"><span>v</span></a></li>
<li><a href="globals_vars_0x77.html#index_w"><span>w</span></a></li>
<li><a href="globals_vars_0x78.html#index_x"><span>x</span></a></li>
<li><a href="globals_vars_0x7a.html#index_z"><span>z</span></a></li>
@@ -151,9 +152,6 @@ $(document).ready(function(){initNavTree('globals_vars.html','');});
<li>$aside
: <a class="el" href="minimalisticdarkness_8php.html#a6e5d97615c6faef5dbffe04b8024ceaf">minimalisticdarkness.php</a>
</li>
-<li>$bodyclass
-: <a class="el" href="theme_2blogga_2php_2default_8php.html#a720581ae288aa09511670563e4205a4a">default.php</a>
-</li>
<li>$called_api
: <a class="el" href="include_2api_8php.html#aa62b15a6bbb280e86b98132eb214013d">api.php</a>
</li>
@@ -179,9 +177,9 @@ $(document).ready(function(){initNavTree('globals_vars.html','');});
: <a class="el" href="docblox__errorchecker_8php.html#a648a570b0f9f6e0e51b7267647c4b09b">docblox_errorchecker.php</a>
</li>
<li>$files
-: <a class="el" href="extract_8php.html#a9590b15215a21e9b42eb546aeef79704">extract.php</a>
+: <a class="el" href="typo_8php.html#a9590b15215a21e9b42eb546aeef79704">typo.php</a>
+, <a class="el" href="extract_8php.html#a9590b15215a21e9b42eb546aeef79704">extract.php</a>
, <a class="el" href="tpldebug_8php.html#a5358407d65f2ca826f96356a6642d149">tpldebug.php</a>
-, <a class="el" href="typo_8php.html#a9590b15215a21e9b42eb546aeef79704">typo.php</a>
</li>
<li>$fname
: <a class="el" href="apw_2php_2style_8php.html#ab9e0f70d44ab67f4334f9883631777fc">style.php</a>
@@ -189,12 +187,6 @@ $(document).ready(function(){initNavTree('globals_vars.html','');});
<li>$gc_probability
: <a class="el" href="session_8php.html#a96b09cc763572f45280786a7b33feb7e">session.php</a>
</li>
-<li>$headimg
-: <a class="el" href="theme_2blogga_2php_2default_8php.html#ac7062908d1eb80c0735270f7997c4527">default.php</a>
-</li>
-<li>$headimghome
-: <a class="el" href="theme_2blogga_2php_2default_8php.html#a1230ab83d4ec9785d8f3a966f33dc5f3">default.php</a>
-</li>
<li>$i
: <a class="el" href="docblox__errorchecker_8php.html#a83018d9153d17d91fbcf3bc10158d34f">docblox_errorchecker.php</a>
</li>
@@ -240,15 +232,15 @@ $(document).ready(function(){initNavTree('globals_vars.html','');});
<li>$phpfile
: <a class="el" href="php2po_8php.html#abbb0e5fd8fbc1f13a9bf68f86eb3d2a4">php2po.php</a>
</li>
-<li>$plugin
-: <a class="el" href="post__to__red_8php.html#ada8a7130088351710bb02ed622d6bf65">post_to_red.php</a>
-</li>
-<li>$plugin_dir
-: <a class="el" href="post__to__red_8php.html#a99811555b30bde504a863e44015f2f19">post_to_red.php</a>
-</li>
<li>$pofile
: <a class="el" href="php2po_8php.html#a401d84ce156e49e8168bd0c4781e1be1">php2po.php</a>
</li>
+<li>$r
+: <a class="el" href="fixd_8php.html#a8abe176bc41afd728f32ba8c506cbd98">fixd.php</a>
+</li>
+<li>$rand
+: <a class="el" href="fixd_8php.html#a2da3681c9cce2efe7de29aa578ff4219">fixd.php</a>
+</li>
<li>$res
: <a class="el" href="docblox__errorchecker_8php.html#a49a8a4009b02e49717caa88b128affc5">docblox_errorchecker.php</a>
</li>
@@ -279,6 +271,9 @@ $(document).ready(function(){initNavTree('globals_vars.html','');});
<li>$strongmacro
: <a class="el" href="apw_2php_2style_8php.html#aa58104ba36588bbf082cecbb3910e2ea">style.php</a>
</li>
+<li>$total
+: <a class="el" href="fixd_8php.html#a241b818f48030b628685b2e5119c5624">fixd.php</a>
+</li>
<li>$uid
: <a class="el" href="apw_2php_2style_8php.html#a109bbd7f4add27541707b191b73ef84a">style.php</a>
</li>
diff --git a/doc/html/globals_vars.js b/doc/html/globals_vars.js
index f614b41fa..280040c50 100644
--- a/doc/html/globals_vars.js
+++ b/doc/html/globals_vars.js
@@ -19,6 +19,7 @@ var globals_vars =
[ "s", "globals_vars_0x73.html", null ],
[ "t", "globals_vars_0x74.html", null ],
[ "u", "globals_vars_0x75.html", null ],
+ [ "v", "globals_vars_0x76.html", null ],
[ "w", "globals_vars_0x77.html", null ],
[ "x", "globals_vars_0x78.html", null ],
[ "z", "globals_vars_0x7a.html", null ]
diff --git a/doc/html/globals_vars_0x61.html b/doc/html/globals_vars_0x61.html
index 10412e050..67bdaf4ce 100644
--- a/doc/html/globals_vars_0x61.html
+++ b/doc/html/globals_vars_0x61.html
@@ -101,6 +101,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
<li><a href="globals_vars_0x73.html#index_s"><span>s</span></a></li>
<li><a href="globals_vars_0x74.html#index_t"><span>t</span></a></li>
<li><a href="globals_vars_0x75.html#index_u"><span>u</span></a></li>
+ <li><a href="globals_vars_0x76.html#index_v"><span>v</span></a></li>
<li><a href="globals_vars_0x77.html#index_w"><span>w</span></a></li>
<li><a href="globals_vars_0x78.html#index_x"><span>x</span></a></li>
<li><a href="globals_vars_0x7a.html#index_z"><span>z</span></a></li>
@@ -145,6 +146,9 @@ $(document).ready(function(){initNavTree('globals_vars_0x61.html','');});
<li>ABOOK_FLAG_BLOCKED
: <a class="el" href="boot_8php.html#a52b599cd13e152ebc80d7e4413683195">boot.php</a>
</li>
+<li>ABOOK_FLAG_FEED
+: <a class="el" href="boot_8php.html#ae0d9527117cd87dcba11986047ae336e">boot.php</a>
+</li>
<li>ABOOK_FLAG_HIDDEN
: <a class="el" href="boot_8php.html#a34c756469ebed32e2fc987bcde62d382">boot.php</a>
</li>
diff --git a/doc/html/globals_vars_0x63.html b/doc/html/globals_vars_0x63.html
index 6899381a8..c0c2ec3e8 100644
--- a/doc/html/globals_vars_0x63.html
+++ b/doc/html/globals_vars_0x63.html
@@ -101,6 +101,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
<li><a href="globals_vars_0x73.html#index_s"><span>s</span></a></li>
<li><a href="globals_vars_0x74.html#index_t"><span>t</span></a></li>
<li><a href="globals_vars_0x75.html#index_u"><span>u</span></a></li>
+ <li><a href="globals_vars_0x76.html#index_v"><span>v</span></a></li>
<li><a href="globals_vars_0x77.html#index_w"><span>w</span></a></li>
<li><a href="globals_vars_0x78.html#index_x"><span>x</span></a></li>
<li><a href="globals_vars_0x7a.html#index_z"><span>z</span></a></li>
diff --git a/doc/html/globals_vars_0x64.html b/doc/html/globals_vars_0x64.html
index cb5747ff2..eeee1c304 100644
--- a/doc/html/globals_vars_0x64.html
+++ b/doc/html/globals_vars_0x64.html
@@ -101,6 +101,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
<li><a href="globals_vars_0x73.html#index_s"><span>s</span></a></li>
<li><a href="globals_vars_0x74.html#index_t"><span>t</span></a></li>
<li><a href="globals_vars_0x75.html#index_u"><span>u</span></a></li>
+ <li><a href="globals_vars_0x76.html#index_v"><span>v</span></a></li>
<li><a href="globals_vars_0x77.html#index_w"><span>w</span></a></li>
<li><a href="globals_vars_0x78.html#index_x"><span>x</span></a></li>
<li><a href="globals_vars_0x7a.html#index_z"><span>z</span></a></li>
@@ -142,6 +143,12 @@ $(document).ready(function(){initNavTree('globals_vars_0x64.html','');});
<li>DB_UPDATE_VERSION
: <a class="el" href="boot_8php.html#ac59a18a4838710d6c2de37aed6b21f03">boot.php</a>
</li>
+<li>DBTYPE_MYSQL
+: <a class="el" href="boot_8php.html#a8c9a11c47394244cbe18cd75b9726d5f">boot.php</a>
+</li>
+<li>DBTYPE_POSTGRES
+: <a class="el" href="boot_8php.html#a37ddabc112db443b4c67fbc0f708817e">boot.php</a>
+</li>
<li>DEFAULT_DB_ENGINE
: <a class="el" href="boot_8php.html#aa8a2b61e70900139d1ca28e46f1da49d">boot.php</a>
</li>
diff --git a/doc/html/globals_vars_0x65.html b/doc/html/globals_vars_0x65.html
index b39b21f8a..586510f97 100644
--- a/doc/html/globals_vars_0x65.html
+++ b/doc/html/globals_vars_0x65.html
@@ -101,6 +101,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
<li><a href="globals_vars_0x73.html#index_s"><span>s</span></a></li>
<li><a href="globals_vars_0x74.html#index_t"><span>t</span></a></li>
<li><a href="globals_vars_0x75.html#index_u"><span>u</span></a></li>
+ <li><a href="globals_vars_0x76.html#index_v"><span>v</span></a></li>
<li><a href="globals_vars_0x77.html#index_w"><span>w</span></a></li>
<li><a href="globals_vars_0x78.html#index_x"><span>x</span></a></li>
<li><a href="globals_vars_0x7a.html#index_z"><span>z</span></a></li>
@@ -140,7 +141,7 @@ $(document).ready(function(){initNavTree('globals_vars_0x65.html','');});
<h3><a class="anchor" id="index_e"></a>- e -</h3><ul>
<li>else
-: <a class="el" href="auth_8php.html#a0950af7c2888ca1d4743fe5d0bff9ae5">auth.php</a>
+: <a class="el" href="auth_8php.html#a6f60fb54f60cd36c2430d6615a7b4f3f">auth.php</a>
, <a class="el" href="fpostit_8php.html#a501b5ca82f287509fc691c88524064c1">fpostit.php</a>
, <a class="el" href="redbasic_2php_2style_8php.html#ab3afb90d611eca90819f597a2c0bb459">style.php</a>
, <a class="el" href="tpldebug_8php.html#afbc7aadb3f7ff1edf0aaaa326a42179c">tpldebug.php</a>
diff --git a/doc/html/globals_vars_0x66.html b/doc/html/globals_vars_0x66.html
index ac01ed206..79f67b3d5 100644
--- a/doc/html/globals_vars_0x66.html
+++ b/doc/html/globals_vars_0x66.html
@@ -101,6 +101,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
<li><a href="globals_vars_0x73.html#index_s"><span>s</span></a></li>
<li><a href="globals_vars_0x74.html#index_t"><span>t</span></a></li>
<li><a href="globals_vars_0x75.html#index_u"><span>u</span></a></li>
+ <li><a href="globals_vars_0x76.html#index_v"><span>v</span></a></li>
<li><a href="globals_vars_0x77.html#index_w"><span>w</span></a></li>
<li><a href="globals_vars_0x78.html#index_x"><span>x</span></a></li>
<li><a href="globals_vars_0x7a.html#index_z"><span>z</span></a></li>
diff --git a/doc/html/globals_vars_0x67.html b/doc/html/globals_vars_0x67.html
index 350a44913..6d33c7a1b 100644
--- a/doc/html/globals_vars_0x67.html
+++ b/doc/html/globals_vars_0x67.html
@@ -101,6 +101,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
<li><a href="globals_vars_0x73.html#index_s"><span>s</span></a></li>
<li><a href="globals_vars_0x74.html#index_t"><span>t</span></a></li>
<li><a href="globals_vars_0x75.html#index_u"><span>u</span></a></li>
+ <li><a href="globals_vars_0x76.html#index_v"><span>v</span></a></li>
<li><a href="globals_vars_0x77.html#index_w"><span>w</span></a></li>
<li><a href="globals_vars_0x78.html#index_x"><span>x</span></a></li>
<li><a href="globals_vars_0x7a.html#index_z"><span>z</span></a></li>
diff --git a/doc/html/globals_vars_0x68.html b/doc/html/globals_vars_0x68.html
index 856ab6ec1..fba7c5730 100644
--- a/doc/html/globals_vars_0x68.html
+++ b/doc/html/globals_vars_0x68.html
@@ -101,6 +101,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
<li><a href="globals_vars_0x73.html#index_s"><span>s</span></a></li>
<li><a href="globals_vars_0x74.html#index_t"><span>t</span></a></li>
<li><a href="globals_vars_0x75.html#index_u"><span>u</span></a></li>
+ <li><a href="globals_vars_0x76.html#index_v"><span>v</span></a></li>
<li><a href="globals_vars_0x77.html#index_w"><span>w</span></a></li>
<li><a href="globals_vars_0x78.html#index_x"><span>x</span></a></li>
<li><a href="globals_vars_0x7a.html#index_z"><span>z</span></a></li>
diff --git a/doc/html/globals_vars_0x69.html b/doc/html/globals_vars_0x69.html
index 5b43c5b0a..a2e21c212 100644
--- a/doc/html/globals_vars_0x69.html
+++ b/doc/html/globals_vars_0x69.html
@@ -101,6 +101,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
<li><a href="globals_vars_0x73.html#index_s"><span>s</span></a></li>
<li><a href="globals_vars_0x74.html#index_t"><span>t</span></a></li>
<li><a href="globals_vars_0x75.html#index_u"><span>u</span></a></li>
+ <li><a href="globals_vars_0x76.html#index_v"><span>v</span></a></li>
<li><a href="globals_vars_0x77.html#index_w"><span>w</span></a></li>
<li><a href="globals_vars_0x78.html#index_x"><span>x</span></a></li>
<li><a href="globals_vars_0x7a.html#index_z"><span>z</span></a></li>
@@ -142,9 +143,10 @@ $(document).ready(function(){initNavTree('globals_vars_0x69.html','');});
<li>if
: <a class="el" href="php2po_8php.html#a45b05625748f412ec97afcd61cf7980b">php2po.php</a>
, <a class="el" href="php_2default_8php.html#a3987f5547ceb7e36a210a66a06241a5a">default.php</a>
+, <a class="el" href="redable_8php.html#a3987f5547ceb7e36a210a66a06241a5a">redable.php</a>
, <a class="el" href="apw_2php_2style_8php.html#a2f71e817b8fac88ce7f0ec5c0fb88b8d">style.php</a>
-, <a class="el" href="theme_2mytheme_2php_2default_8php.html#a3987f5547ceb7e36a210a66a06241a5a">default.php</a>
, <a class="el" href="full_8php.html#a3987f5547ceb7e36a210a66a06241a5a">full.php</a>
+, <a class="el" href="theme_2mytheme_2php_2default_8php.html#a3987f5547ceb7e36a210a66a06241a5a">default.php</a>
</li>
<li>ITEM_BLOCKED
: <a class="el" href="boot_8php.html#ab28dc518fa90b6f617dd8c564eb4f35f">boot.php</a>
@@ -197,6 +199,9 @@ $(document).ready(function(){initNavTree('globals_vars_0x69.html','');});
<li>ITEM_RETAINED
: <a class="el" href="boot_8php.html#a11cfe7d99b4dac0454d0de8873989f81">boot.php</a>
</li>
+<li>ITEM_RSS
+: <a class="el" href="boot_8php.html#ac4d1c93dabcace711ffb4931204c336b">boot.php</a>
+</li>
<li>ITEM_SPAM
: <a class="el" href="boot_8php.html#a40d885b2cfd736aab4234ae641ca4dfb">boot.php</a>
</li>
diff --git a/doc/html/globals_vars_0x6a.html b/doc/html/globals_vars_0x6a.html
index b2d1d4353..b2df893eb 100644
--- a/doc/html/globals_vars_0x6a.html
+++ b/doc/html/globals_vars_0x6a.html
@@ -101,6 +101,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
<li><a href="globals_vars_0x73.html#index_s"><span>s</span></a></li>
<li><a href="globals_vars_0x74.html#index_t"><span>t</span></a></li>
<li><a href="globals_vars_0x75.html#index_u"><span>u</span></a></li>
+ <li><a href="globals_vars_0x76.html#index_v"><span>v</span></a></li>
<li><a href="globals_vars_0x77.html#index_w"><span>w</span></a></li>
<li><a href="globals_vars_0x78.html#index_x"><span>x</span></a></li>
<li><a href="globals_vars_0x7a.html#index_z"><span>z</span></a></li>
diff --git a/doc/html/globals_vars_0x6b.html b/doc/html/globals_vars_0x6b.html
index 8ebbfc2e3..6ef61e098 100644
--- a/doc/html/globals_vars_0x6b.html
+++ b/doc/html/globals_vars_0x6b.html
@@ -101,6 +101,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
<li><a href="globals_vars_0x73.html#index_s"><span>s</span></a></li>
<li><a href="globals_vars_0x74.html#index_t"><span>t</span></a></li>
<li><a href="globals_vars_0x75.html#index_u"><span>u</span></a></li>
+ <li><a href="globals_vars_0x76.html#index_v"><span>v</span></a></li>
<li><a href="globals_vars_0x77.html#index_w"><span>w</span></a></li>
<li><a href="globals_vars_0x78.html#index_x"><span>x</span></a></li>
<li><a href="globals_vars_0x7a.html#index_z"><span>z</span></a></li>
diff --git a/doc/html/globals_vars_0x6c.html b/doc/html/globals_vars_0x6c.html
index f771e49cb..2532cd99d 100644
--- a/doc/html/globals_vars_0x6c.html
+++ b/doc/html/globals_vars_0x6c.html
@@ -101,6 +101,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
<li><a href="globals_vars_0x73.html#index_s"><span>s</span></a></li>
<li><a href="globals_vars_0x74.html#index_t"><span>t</span></a></li>
<li><a href="globals_vars_0x75.html#index_u"><span>u</span></a></li>
+ <li><a href="globals_vars_0x76.html#index_v"><span>v</span></a></li>
<li><a href="globals_vars_0x77.html#index_w"><span>w</span></a></li>
<li><a href="globals_vars_0x78.html#index_x"><span>x</span></a></li>
<li><a href="globals_vars_0x7a.html#index_z"><span>z</span></a></li>
diff --git a/doc/html/globals_vars_0x6d.html b/doc/html/globals_vars_0x6d.html
index b6da098d2..e95cfac46 100644
--- a/doc/html/globals_vars_0x6d.html
+++ b/doc/html/globals_vars_0x6d.html
@@ -101,6 +101,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
<li><a href="globals_vars_0x73.html#index_s"><span>s</span></a></li>
<li><a href="globals_vars_0x74.html#index_t"><span>t</span></a></li>
<li><a href="globals_vars_0x75.html#index_u"><span>u</span></a></li>
+ <li><a href="globals_vars_0x76.html#index_v"><span>v</span></a></li>
<li><a href="globals_vars_0x77.html#index_w"><span>w</span></a></li>
<li><a href="globals_vars_0x78.html#index_x"><span>x</span></a></li>
<li><a href="globals_vars_0x7a.html#index_z"><span>z</span></a></li>
diff --git a/doc/html/globals_vars_0x6e.html b/doc/html/globals_vars_0x6e.html
index 8fcd642b9..42504fe64 100644
--- a/doc/html/globals_vars_0x6e.html
+++ b/doc/html/globals_vars_0x6e.html
@@ -101,6 +101,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
<li><a href="globals_vars_0x73.html#index_s"><span>s</span></a></li>
<li><a href="globals_vars_0x74.html#index_t"><span>t</span></a></li>
<li><a href="globals_vars_0x75.html#index_u"><span>u</span></a></li>
+ <li><a href="globals_vars_0x76.html#index_v"><span>v</span></a></li>
<li><a href="globals_vars_0x77.html#index_w"><span>w</span></a></li>
<li><a href="globals_vars_0x78.html#index_x"><span>x</span></a></li>
<li><a href="globals_vars_0x7a.html#index_z"><span>z</span></a></li>
@@ -140,7 +141,8 @@ $(document).ready(function(){initNavTree('globals_vars_0x6e.html','');});
<h3><a class="anchor" id="index_n"></a>- n -</h3><ul>
<li>n
-: <a class="el" href="php2po_8php.html#a1594a11499d06cc8a789ee7ca0c7a12b">php2po.php</a>
+: <a class="el" href="fixd_8php.html#a9d4f8a2ab4d92b3ccfd7cba0458098eb">fixd.php</a>
+, <a class="el" href="php2po_8php.html#a1594a11499d06cc8a789ee7ca0c7a12b">php2po.php</a>
</li>
<li>NAMESPACE_ACTIVITY
: <a class="el" href="boot_8php.html#a5df5359090d1f8e898c36d7cf8878ad2">boot.php</a>
@@ -184,6 +186,9 @@ $(document).ready(function(){initNavTree('globals_vars_0x6e.html','');});
<li>NAMESPACE_TOMB
: <a class="el" href="boot_8php.html#a4bfe22e163657690dfb6d5b1d04cb47e">boot.php</a>
</li>
+<li>NAMESPACE_YMEDIA
+: <a class="el" href="boot_8php.html#a3d48dffd9dc73a187263c3002cdf00c0">boot.php</a>
+</li>
<li>NAMESPACE_ZOT
: <a class="el" href="boot_8php.html#a49f2a70b3b43aa904223a8d19e986a47">boot.php</a>
</li>
diff --git a/doc/html/globals_vars_0x70.html b/doc/html/globals_vars_0x70.html
index 6709313d4..549605d29 100644
--- a/doc/html/globals_vars_0x70.html
+++ b/doc/html/globals_vars_0x70.html
@@ -101,6 +101,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
<li><a href="globals_vars_0x73.html#index_s"><span>s</span></a></li>
<li><a href="globals_vars_0x74.html#index_t"><span>t</span></a></li>
<li><a href="globals_vars_0x75.html#index_u"><span>u</span></a></li>
+ <li><a href="globals_vars_0x76.html#index_v"><span>v</span></a></li>
<li><a href="globals_vars_0x77.html#index_w"><span>w</span></a></li>
<li><a href="globals_vars_0x78.html#index_x"><span>x</span></a></li>
<li><a href="globals_vars_0x7a.html#index_z"><span>z</span></a></li>
@@ -160,6 +161,9 @@ $(document).ready(function(){initNavTree('globals_vars_0x70.html','');});
<li>PAGE_HIDDEN
: <a class="el" href="boot_8php.html#a5e322a2a2d0f51924c0b2e874988e640">boot.php</a>
</li>
+<li>PAGE_HUBADMIN
+: <a class="el" href="boot_8php.html#afbb21ecccac9819aa65397e816868a5f">boot.php</a>
+</li>
<li>PAGE_NORMAL
: <a class="el" href="boot_8php.html#a09532c3f750ae8c4527e63b2b790cbf3">boot.php</a>
</li>
@@ -172,9 +176,6 @@ $(document).ready(function(){initNavTree('globals_vars_0x70.html','');});
<li>PAGE_SYSTEM
: <a class="el" href="boot_8php.html#a6ee7a72d558d1851bbb9e3cdde377932">boot.php</a>
</li>
-<li>PERMS_A_BOOKMARK
-: <a class="el" href="boot_8php.html#a8b2af16eaee9e7768a88d0e437877f3b">boot.php</a>
-</li>
<li>PERMS_A_DELEGATE
: <a class="el" href="boot_8php.html#a423505ab8dbd8e39d04ae3fe1374102b">boot.php</a>
</li>
@@ -226,6 +227,9 @@ $(document).ready(function(){initNavTree('globals_vars_0x70.html','');});
<li>PERMS_W_COMMENT
: <a class="el" href="boot_8php.html#a32df13fec0e43281da5979e1f5579aa8">boot.php</a>
</li>
+<li>PERMS_W_LIKE
+: <a class="el" href="boot_8php.html#af3ff14985bffbd951a6ea356b7ec3007">boot.php</a>
+</li>
<li>PERMS_W_MAIL
: <a class="el" href="boot_8php.html#a6b31dd451bc6c37fe7c9c766ff385aaf">boot.php</a>
</li>
@@ -247,6 +251,12 @@ $(document).ready(function(){initNavTree('globals_vars_0x70.html','');});
<li>PERMS_W_WALL
: <a class="el" href="boot_8php.html#a6b14a31a8aa9f3452a13383f413bffa2">boot.php</a>
</li>
+<li>PHOTO_ADULT
+: <a class="el" href="boot_8php.html#a921c55b9fa59a327a5f0e07fa1ccb2e0">boot.php</a>
+</li>
+<li>PHOTO_FLAG_OS
+: <a class="el" href="boot_8php.html#ab49a5d43ce1150c5af8c750ccb14e15f">boot.php</a>
+</li>
<li>PHOTO_NORMAL
: <a class="el" href="boot_8php.html#a4a49b29838ef2c45ab3556b52baec6a4">boot.php</a>
</li>
@@ -274,15 +284,6 @@ $(document).ready(function(){initNavTree('globals_vars_0x70.html','');});
<li>POLL_TENSCALE
: <a class="el" href="boot_8php.html#a1ba00027b718db732f30fc0e2c3e0abc">boot.php</a>
</li>
-<li>post_to_red_acct_name
-: <a class="el" href="post__to__red_8php.html#a588cea66afe0b32f27f2713d44940119">post_to_red.php</a>
-</li>
-<li>post_to_red_path
-: <a class="el" href="post__to__red_8php.html#a6210f39392a5f0fa0255cc7d3760493a">post_to_red.php</a>
-</li>
-<li>post_to_red_version
-: <a class="el" href="post__to__red_8php.html#af3e7ebd361d4ed7cb6d43209970cd94a">post_to_red.php</a>
-</li>
</ul>
</div><!-- contents -->
</div><!-- doc-content -->
diff --git a/doc/html/globals_vars_0x72.html b/doc/html/globals_vars_0x72.html
index 12c800d3f..20a6af1a9 100644
--- a/doc/html/globals_vars_0x72.html
+++ b/doc/html/globals_vars_0x72.html
@@ -101,6 +101,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
<li><a href="globals_vars_0x73.html#index_s"><span>s</span></a></li>
<li><a href="globals_vars_0x74.html#index_t"><span>t</span></a></li>
<li><a href="globals_vars_0x75.html#index_u"><span>u</span></a></li>
+ <li><a href="globals_vars_0x76.html#index_v"><span>v</span></a></li>
<li><a href="globals_vars_0x77.html#index_w"><span>w</span></a></li>
<li><a href="globals_vars_0x78.html#index_x"><span>x</span></a></li>
<li><a href="globals_vars_0x7a.html#index_z"><span>z</span></a></li>
@@ -151,6 +152,27 @@ $(document).ready(function(){initNavTree('globals_vars_0x72.html','');});
<li>RED_VERSION
: <a class="el" href="boot_8php.html#a21cc29e0025943e7c28ff58cb4856ac3">boot.php</a>
</li>
+<li>REDMATRIX_IMPORTCHANNEL
+: <a class="el" href="refimport_8php.html#a54003135d7c8994a76e831fb6faa2fe6">refimport.php</a>
+</li>
+<li>REFLECT_BASEURL
+: <a class="el" href="refimport_8php.html#ac43699d8ae86175e049aa4e87853caac">refimport.php</a>
+</li>
+<li>REFLECT_BLOGNAME
+: <a class="el" href="refimport_8php.html#a8459983ebf013ed5737f7ed317bfae1f">refimport.php</a>
+</li>
+<li>REFLECT_EXPORTUSERNAME
+: <a class="el" href="refimport_8php.html#ad297afe0730c9119dd94d3cf0521b025">refimport.php</a>
+</li>
+<li>REFLECT_MAXPERRUN
+: <a class="el" href="refimport_8php.html#a9c1f681f1f303400a9818696a9f96d6f">refimport.php</a>
+</li>
+<li>REFLECT_OVERWRITE
+: <a class="el" href="refimport_8php.html#aeec793cefa260f788b7d005adcb35796">refimport.php</a>
+</li>
+<li>REFLECT_USERFILE
+: <a class="el" href="refimport_8php.html#a684a44d2401abf75f441591bcb41d10d">refimport.php</a>
+</li>
<li>REGISTER_APPROVE
: <a class="el" href="boot_8php.html#a7176c0f9f1c98421b97735d892cf6252">boot.php</a>
</li>
diff --git a/doc/html/globals_vars_0x73.html b/doc/html/globals_vars_0x73.html
index 578fb9bd7..34e04bb36 100644
--- a/doc/html/globals_vars_0x73.html
+++ b/doc/html/globals_vars_0x73.html
@@ -101,6 +101,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
<li class="current"><a href="globals_vars_0x73.html#index_s"><span>s</span></a></li>
<li><a href="globals_vars_0x74.html#index_t"><span>t</span></a></li>
<li><a href="globals_vars_0x75.html#index_u"><span>u</span></a></li>
+ <li><a href="globals_vars_0x76.html#index_v"><span>v</span></a></li>
<li><a href="globals_vars_0x77.html#index_w"><span>w</span></a></li>
<li><a href="globals_vars_0x78.html#index_x"><span>x</span></a></li>
<li><a href="globals_vars_0x7a.html#index_z"><span>z</span></a></li>
diff --git a/doc/html/globals_vars_0x74.html b/doc/html/globals_vars_0x74.html
index 815c04462..193d418d0 100644
--- a/doc/html/globals_vars_0x74.html
+++ b/doc/html/globals_vars_0x74.html
@@ -101,6 +101,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
<li><a href="globals_vars_0x73.html#index_s"><span>s</span></a></li>
<li class="current"><a href="globals_vars_0x74.html#index_t"><span>t</span></a></li>
<li><a href="globals_vars_0x75.html#index_u"><span>u</span></a></li>
+ <li><a href="globals_vars_0x76.html#index_v"><span>v</span></a></li>
<li><a href="globals_vars_0x77.html#index_w"><span>w</span></a></li>
<li><a href="globals_vars_0x78.html#index_x"><span>x</span></a></li>
<li><a href="globals_vars_0x7a.html#index_z"><span>z</span></a></li>
diff --git a/doc/html/globals_vars_0x75.html b/doc/html/globals_vars_0x75.html
index 86d992d41..58204f28b 100644
--- a/doc/html/globals_vars_0x75.html
+++ b/doc/html/globals_vars_0x75.html
@@ -101,6 +101,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
<li><a href="globals_vars_0x73.html#index_s"><span>s</span></a></li>
<li><a href="globals_vars_0x74.html#index_t"><span>t</span></a></li>
<li class="current"><a href="globals_vars_0x75.html#index_u"><span>u</span></a></li>
+ <li><a href="globals_vars_0x76.html#index_v"><span>v</span></a></li>
<li><a href="globals_vars_0x77.html#index_w"><span>w</span></a></li>
<li><a href="globals_vars_0x78.html#index_x"><span>x</span></a></li>
<li><a href="globals_vars_0x7a.html#index_z"><span>z</span></a></li>
diff --git a/doc/html/globals_vars_0x76.html b/doc/html/globals_vars_0x76.html
new file mode 100644
index 000000000..a3452e61d
--- /dev/null
+++ b/doc/html/globals_vars_0x76.html
@@ -0,0 +1,179 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<meta name="generator" content="Doxygen 1.8.3.1"/>
+<title>The Red Matrix: File Members</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="navtree.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="resize.js"></script>
+<script type="text/javascript" src="navtree.js"></script>
+<script type="text/javascript">
+ $(document).ready(initResizable);
+ $(window).load(resizeHeight);
+</script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/search.js"></script>
+<script type="text/javascript">
+ $(document).ready(function() { searchBox.OnSelectItem(0); });
+</script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+ <td id="projectlogo"><img alt="Logo" src="rm-64.png"/></td>
+ <td style="padding-left: 0.5em;">
+ <div id="projectname">The Red Matrix
+ </div>
+ </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.8.3.1 -->
+<script type="text/javascript">
+var searchBox = new SearchBox("searchBox", "search",false,'Search');
+</script>
+ <div id="navrow1" class="tabs">
+ <ul class="tablist">
+ <li><a href="index.html"><span>Main&#160;Page</span></a></li>
+ <li><a href="pages.html"><span>Related&#160;Pages</span></a></li>
+ <li><a href="namespaces.html"><span>Namespaces</span></a></li>
+ <li><a href="annotated.html"><span>Classes</span></a></li>
+ <li class="current"><a href="files.html"><span>Files</span></a></li>
+ <li>
+ <div id="MSearchBox" class="MSearchBoxInactive">
+ <span class="left">
+ <img id="MSearchSelect" src="search/mag_sel.png"
+ onmouseover="return searchBox.OnSearchSelectShow()"
+ onmouseout="return searchBox.OnSearchSelectHide()"
+ alt=""/>
+ <input type="text" id="MSearchField" value="Search" accesskey="S"
+ onfocus="searchBox.OnSearchFieldFocus(true)"
+ onblur="searchBox.OnSearchFieldFocus(false)"
+ onkeyup="searchBox.OnSearchFieldChange(event)"/>
+ </span><span class="right">
+ <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
+ </span>
+ </div>
+ </li>
+ </ul>
+ </div>
+ <div id="navrow2" class="tabs2">
+ <ul class="tablist">
+ <li><a href="files.html"><span>File&#160;List</span></a></li>
+ <li class="current"><a href="globals.html"><span>File&#160;Members</span></a></li>
+ </ul>
+ </div>
+ <div id="navrow3" class="tabs2">
+ <ul class="tablist">
+ <li><a href="globals.html"><span>All</span></a></li>
+ <li><a href="globals_func.html"><span>Functions</span></a></li>
+ <li class="current"><a href="globals_vars.html"><span>Variables</span></a></li>
+ </ul>
+ </div>
+ <div id="navrow4" class="tabs3">
+ <ul class="tablist">
+ <li><a href="globals_vars.html#index_0x24"><span>$</span></a></li>
+ <li><a href="globals_vars_0x61.html#index_a"><span>a</span></a></li>
+ <li><a href="globals_vars_0x63.html#index_c"><span>c</span></a></li>
+ <li><a href="globals_vars_0x64.html#index_d"><span>d</span></a></li>
+ <li><a href="globals_vars_0x65.html#index_e"><span>e</span></a></li>
+ <li><a href="globals_vars_0x66.html#index_f"><span>f</span></a></li>
+ <li><a href="globals_vars_0x67.html#index_g"><span>g</span></a></li>
+ <li><a href="globals_vars_0x68.html#index_h"><span>h</span></a></li>
+ <li><a href="globals_vars_0x69.html#index_i"><span>i</span></a></li>
+ <li><a href="globals_vars_0x6a.html#index_j"><span>j</span></a></li>
+ <li><a href="globals_vars_0x6b.html#index_k"><span>k</span></a></li>
+ <li><a href="globals_vars_0x6c.html#index_l"><span>l</span></a></li>
+ <li><a href="globals_vars_0x6d.html#index_m"><span>m</span></a></li>
+ <li><a href="globals_vars_0x6e.html#index_n"><span>n</span></a></li>
+ <li><a href="globals_vars_0x70.html#index_p"><span>p</span></a></li>
+ <li><a href="globals_vars_0x72.html#index_r"><span>r</span></a></li>
+ <li><a href="globals_vars_0x73.html#index_s"><span>s</span></a></li>
+ <li><a href="globals_vars_0x74.html#index_t"><span>t</span></a></li>
+ <li><a href="globals_vars_0x75.html#index_u"><span>u</span></a></li>
+ <li class="current"><a href="globals_vars_0x76.html#index_v"><span>v</span></a></li>
+ <li><a href="globals_vars_0x77.html#index_w"><span>w</span></a></li>
+ <li><a href="globals_vars_0x78.html#index_x"><span>x</span></a></li>
+ <li><a href="globals_vars_0x7a.html#index_z"><span>z</span></a></li>
+ </ul>
+ </div>
+</div><!-- top -->
+<div id="side-nav" class="ui-resizable side-nav-resizable">
+ <div id="nav-tree">
+ <div id="nav-tree-contents">
+ <div id="nav-sync" class="sync"></div>
+ </div>
+ </div>
+ <div id="splitbar" style="-moz-user-select:none;"
+ class="ui-resizable-handle">
+ </div>
+</div>
+<script type="text/javascript">
+$(document).ready(function(){initNavTree('globals_vars_0x76.html','');});
+</script>
+<div id="doc-content">
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+ onmouseover="return searchBox.OnSearchSelectShow()"
+ onmouseout="return searchBox.OnSearchSelectHide()"
+ onkeydown="return searchBox.OnSearchSelectKey(event)">
+<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark">&#160;</span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark">&#160;</span>Classes</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark">&#160;</span>Namespaces</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark">&#160;</span>Files</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark">&#160;</span>Functions</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark">&#160;</span>Variables</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark">&#160;</span>Pages</a></div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<iframe src="javascript:void(0)" frameborder="0"
+ name="MSearchResults" id="MSearchResults">
+</iframe>
+</div>
+
+<div class="contents">
+&#160;
+
+<h3><a class="anchor" id="index_v"></a>- v -</h3><ul>
+<li>VNOTIFY_ALERT
+: <a class="el" href="boot_8php.html#a9f8a2938ddd9ee2867e6f8ce77b61b2f">boot.php</a>
+</li>
+<li>VNOTIFY_BIRTHDAY
+: <a class="el" href="boot_8php.html#ac89396b9144391acd08d6d0f9b332220">boot.php</a>
+</li>
+<li>VNOTIFY_CHANNEL
+: <a class="el" href="boot_8php.html#a7b511bd93202c43405adbe3b5bcebbfe">boot.php</a>
+</li>
+<li>VNOTIFY_EVENT
+: <a class="el" href="boot_8php.html#ad94aca4c260b8a892397786201dc4664">boot.php</a>
+</li>
+<li>VNOTIFY_EVENTTODAY
+: <a class="el" href="boot_8php.html#a76480b213af379c0c6c7fa4e39019ca9">boot.php</a>
+</li>
+<li>VNOTIFY_INFO
+: <a class="el" href="boot_8php.html#a37281c30bd92cecb499878d6778c570f">boot.php</a>
+</li>
+<li>VNOTIFY_INTRO
+: <a class="el" href="boot_8php.html#a1997c4b7d0253e036bc0fb6b20e4af71">boot.php</a>
+</li>
+<li>VNOTIFY_MAIL
+: <a class="el" href="boot_8php.html#a0afeb43da443d6ff3526ede5ecdcc3b3">boot.php</a>
+</li>
+<li>VNOTIFY_NETWORK
+: <a class="el" href="boot_8php.html#a997614f25e58f8313641e1eb0109fd10">boot.php</a>
+</li>
+<li>VNOTIFY_REGISTER
+: <a class="el" href="boot_8php.html#ae09767b94688657978ff9366ec63684b">boot.php</a>
+</li>
+<li>VNOTIFY_SYSTEM
+: <a class="el" href="boot_8php.html#a7e5627b5ca4b7464feb0f08663b19ea1">boot.php</a>
+</li>
+</ul>
+</div><!-- contents -->
+</div><!-- doc-content -->
+
diff --git a/doc/html/globals_vars_0x77.html b/doc/html/globals_vars_0x77.html
index c9cdeb78a..042ef4a64 100644
--- a/doc/html/globals_vars_0x77.html
+++ b/doc/html/globals_vars_0x77.html
@@ -101,6 +101,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
<li><a href="globals_vars_0x73.html#index_s"><span>s</span></a></li>
<li><a href="globals_vars_0x74.html#index_t"><span>t</span></a></li>
<li><a href="globals_vars_0x75.html#index_u"><span>u</span></a></li>
+ <li><a href="globals_vars_0x76.html#index_v"><span>v</span></a></li>
<li class="current"><a href="globals_vars_0x77.html#index_w"><span>w</span></a></li>
<li><a href="globals_vars_0x78.html#index_x"><span>x</span></a></li>
<li><a href="globals_vars_0x7a.html#index_z"><span>z</span></a></li>
diff --git a/doc/html/globals_vars_0x78.html b/doc/html/globals_vars_0x78.html
index 4278aa8f4..41525e813 100644
--- a/doc/html/globals_vars_0x78.html
+++ b/doc/html/globals_vars_0x78.html
@@ -101,6 +101,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
<li><a href="globals_vars_0x73.html#index_s"><span>s</span></a></li>
<li><a href="globals_vars_0x74.html#index_t"><span>t</span></a></li>
<li><a href="globals_vars_0x75.html#index_u"><span>u</span></a></li>
+ <li><a href="globals_vars_0x76.html#index_v"><span>v</span></a></li>
<li><a href="globals_vars_0x77.html#index_w"><span>w</span></a></li>
<li class="current"><a href="globals_vars_0x78.html#index_x"><span>x</span></a></li>
<li><a href="globals_vars_0x7a.html#index_z"><span>z</span></a></li>
@@ -154,6 +155,9 @@ $(document).ready(function(){initNavTree('globals_vars_0x78.html','');});
<li>XCHAN_FLAGS_ORPHAN
: <a class="el" href="boot_8php.html#a1c923b99bf77e4203ae94e5684b6ad0f">boot.php</a>
</li>
+<li>XCHAN_FLAGS_PUBFORUM
+: <a class="el" href="boot_8php.html#a0209e605028a5bb492683951ab30d49d">boot.php</a>
+</li>
<li>XCHAN_FLAGS_SELFCENSORED
: <a class="el" href="boot_8php.html#a5a681a672e007cdc22b43345d71f07c6">boot.php</a>
</li>
diff --git a/doc/html/globals_vars_0x7a.html b/doc/html/globals_vars_0x7a.html
index 1d8482c2c..2f0197c73 100644
--- a/doc/html/globals_vars_0x7a.html
+++ b/doc/html/globals_vars_0x7a.html
@@ -101,6 +101,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
<li><a href="globals_vars_0x73.html#index_s"><span>s</span></a></li>
<li><a href="globals_vars_0x74.html#index_t"><span>t</span></a></li>
<li><a href="globals_vars_0x75.html#index_u"><span>u</span></a></li>
+ <li><a href="globals_vars_0x76.html#index_v"><span>v</span></a></li>
<li><a href="globals_vars_0x77.html#index_w"><span>w</span></a></li>
<li><a href="globals_vars_0x78.html#index_x"><span>x</span></a></li>
<li class="current"><a href="globals_vars_0x7a.html#index_z"><span>z</span></a></li>
diff --git a/doc/html/hcard_8php.html b/doc/html/hcard_8php.html
index 581077cb3..98f95ba7e 100644
--- a/doc/html/hcard_8php.html
+++ b/doc/html/hcard_8php.html
@@ -114,16 +114,16 @@ $(document).ready(function(){initNavTree('hcard_8php.html','');});
Functions</h2></td></tr>
<tr class="memitem:ac34f26b0e6a37eef44fa49bea135136d"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="hcard_8php.html#ac34f26b0e6a37eef44fa49bea135136d">hcard_init</a> (&amp;$a)</td></tr>
<tr class="separator:ac34f26b0e6a37eef44fa49bea135136d"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a956c7cae2009652a37900306e5b7b73d"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="hcard_8php.html#a956c7cae2009652a37900306e5b7b73d">hcard_aside</a> (&amp;$a)</td></tr>
-<tr class="separator:a956c7cae2009652a37900306e5b7b73d"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a3663012f1549849af88aba2bb87388e3"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="hcard_8php.html#a3663012f1549849af88aba2bb87388e3">hcard_content</a> (&amp;$a)</td></tr>
+<tr class="separator:a3663012f1549849af88aba2bb87388e3"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<h2 class="groupheader">Function Documentation</h2>
-<a class="anchor" id="a956c7cae2009652a37900306e5b7b73d"></a>
+<a class="anchor" id="a3663012f1549849af88aba2bb87388e3"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
- <td class="memname">hcard_aside </td>
+ <td class="memname">hcard_content </td>
<td>(</td>
<td class="paramtype">&amp;&#160;</td>
<td class="paramname"><em>$a</em></td><td>)</td>
diff --git a/doc/html/hcard_8php.js b/doc/html/hcard_8php.js
index fe7ffda18..c87b83294 100644
--- a/doc/html/hcard_8php.js
+++ b/doc/html/hcard_8php.js
@@ -1,5 +1,5 @@
var hcard_8php =
[
- [ "hcard_aside", "hcard_8php.html#a956c7cae2009652a37900306e5b7b73d", null ],
+ [ "hcard_content", "hcard_8php.html#a3663012f1549849af88aba2bb87388e3", null ],
[ "hcard_init", "hcard_8php.html#ac34f26b0e6a37eef44fa49bea135136d", null ]
]; \ No newline at end of file
diff --git a/doc/html/hierarchy.html b/doc/html/hierarchy.html
index 39ff3d4e9..d86962f9f 100644
--- a/doc/html/hierarchy.html
+++ b/doc/html/hierarchy.html
@@ -112,41 +112,51 @@ $(document).ready(function(){initNavTree('hierarchy.html','');});
<div class="textblock">This inheritance list is sorted roughly, but not completely, alphabetically:</div><div class="directory">
<div class="levels">[detail level <span onclick="javascript:toggleLevel(1);">1</span><span onclick="javascript:toggleLevel(2);">2</span>]</div><table class="directory">
<tr id="row_0_" class="even"><td class="entry"><img id="arr_0_" src="ftv2mnode.png" alt="o" width="16" height="22" onclick="toggleFolder('0_')"/><img src="ftv2cl.png" alt="C" width="24" height="22" /><b>AbstractBasic</b></td><td class="desc"></td></tr>
-<tr id="row_0_0_"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2lastnode.png" alt="\" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="classRedBasicAuth.html" target="_self">RedBasicAuth</a></td><td class="desc"></td></tr>
-<tr id="row_1_" class="even"><td class="entry"><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="classApp.html" target="_self">App</a></td><td class="desc"></td></tr>
+<tr id="row_0_0_"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2lastnode.png" alt="\" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="classRedMatrix_1_1RedDAV_1_1RedBasicAuth.html" target="_self">RedMatrix\RedDAV\RedBasicAuth</a></td><td class="desc">Authentication backend class for <a class="el" href="namespaceRedMatrix_1_1RedDAV.html">RedDAV</a></td></tr>
+<tr id="row_1_" class="even"><td class="entry"><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="classApp.html" target="_self">App</a></td><td class="desc">Our main application structure for the life of this page</td></tr>
<tr id="row_2_"><td class="entry"><img id="arr_2_" src="ftv2mnode.png" alt="o" width="16" height="22" onclick="toggleFolder('2_')"/><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="classBaseObject.html" target="_self">BaseObject</a></td><td class="desc"></td></tr>
<tr id="row_2_0_" class="even"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="classConversation.html" target="_self">Conversation</a></td><td class="desc"></td></tr>
<tr id="row_2_1_"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2lastnode.png" alt="\" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="classItem.html" target="_self">Item</a></td><td class="desc"></td></tr>
<tr id="row_3_" class="even"><td class="entry"><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="classCache.html" target="_self">Cache</a></td><td class="desc"></td></tr>
-<tr id="row_4_"><td class="entry"><img id="arr_4_" src="ftv2mnode.png" alt="o" width="16" height="22" onclick="toggleFolder('4_')"/><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="classdba__driver.html" target="_self">dba_driver</a></td><td class="desc"></td></tr>
+<tr id="row_4_"><td class="entry"><img id="arr_4_" src="ftv2mnode.png" alt="o" width="16" height="22" onclick="toggleFolder('4_')"/><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="classdba__driver.html" target="_self">dba_driver</a></td><td class="desc">Abstract database driver class</td></tr>
<tr id="row_4_0_" class="even"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="classdba__mysql.html" target="_self">dba_mysql</a></td><td class="desc"></td></tr>
-<tr id="row_4_1_"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2lastnode.png" alt="\" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="classdba__mysqli.html" target="_self">dba_mysqli</a></td><td class="desc"></td></tr>
-<tr id="row_5_" class="even"><td class="entry"><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="classenotify.html" target="_self">enotify</a></td><td class="desc"></td></tr>
-<tr id="row_6_"><td class="entry"><img id="arr_6_" src="ftv2mnode.png" alt="o" width="16" height="22" onclick="toggleFolder('6_')"/><img src="ftv2cl.png" alt="C" width="24" height="22" /><b>ICollection</b></td><td class="desc"></td></tr>
-<tr id="row_6_0_" class="even"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2lastnode.png" alt="\" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="classRedDirectory.html" target="_self">RedDirectory</a></td><td class="desc"><a class="el" href="classRedDirectory.html" title="RedDirectory class.">RedDirectory</a> class</td></tr>
-<tr id="row_7_"><td class="entry"><img id="arr_7_" src="ftv2mnode.png" alt="o" width="16" height="22" onclick="toggleFolder('7_')"/><img src="ftv2cl.png" alt="C" width="24" height="22" /><b>IFile</b></td><td class="desc"></td></tr>
-<tr id="row_7_0_" class="even"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2lastnode.png" alt="\" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="classRedFile.html" target="_self">RedFile</a></td><td class="desc"></td></tr>
-<tr id="row_8_"><td class="entry"><img id="arr_8_" src="ftv2mnode.png" alt="o" width="16" height="22" onclick="toggleFolder('8_')"/><img src="ftv2cl.png" alt="C" width="24" height="22" /><b>IQuota</b></td><td class="desc"></td></tr>
-<tr id="row_8_0_" class="even"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2lastnode.png" alt="\" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="classRedDirectory.html" target="_self">RedDirectory</a></td><td class="desc"><a class="el" href="classRedDirectory.html" title="RedDirectory class.">RedDirectory</a> class</td></tr>
-<tr id="row_9_"><td class="entry"><img id="arr_9_" src="ftv2mnode.png" alt="o" width="16" height="22" onclick="toggleFolder('9_')"/><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="interfaceITemplateEngine.html" target="_self">ITemplateEngine</a></td><td class="desc"></td></tr>
-<tr id="row_9_0_" class="even"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="classFriendicaSmartyEngine.html" target="_self">FriendicaSmartyEngine</a></td><td class="desc"></td></tr>
-<tr id="row_9_1_"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2lastnode.png" alt="\" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="classTemplate.html" target="_self">Template</a></td><td class="desc"></td></tr>
-<tr id="row_10_" class="even"><td class="entry"><img id="arr_10_" src="ftv2mnode.png" alt="o" width="16" height="22" onclick="toggleFolder('10_')"/><img src="ftv2cl.png" alt="C" width="24" height="22" /><b>Node</b></td><td class="desc"></td></tr>
-<tr id="row_10_0_"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="classRedDirectory.html" target="_self">RedDirectory</a></td><td class="desc"><a class="el" href="classRedDirectory.html" title="RedDirectory class.">RedDirectory</a> class</td></tr>
-<tr id="row_10_1_" class="even"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2lastnode.png" alt="\" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="classRedFile.html" target="_self">RedFile</a></td><td class="desc"></td></tr>
-<tr id="row_11_"><td class="entry"><img id="arr_11_" src="ftv2mnode.png" alt="o" width="16" height="22" onclick="toggleFolder('11_')"/><img src="ftv2cl.png" alt="C" width="24" height="22" /><b>OAuthDataStore</b></td><td class="desc"></td></tr>
-<tr id="row_11_0_" class="even"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2lastnode.png" alt="\" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="classFKOAuthDataStore.html" target="_self">FKOAuthDataStore</a></td><td class="desc"></td></tr>
-<tr id="row_12_"><td class="entry"><img id="arr_12_" src="ftv2mnode.png" alt="o" width="16" height="22" onclick="toggleFolder('12_')"/><img src="ftv2cl.png" alt="C" width="24" height="22" /><b>OAuthServer</b></td><td class="desc"></td></tr>
-<tr id="row_12_0_" class="even"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2lastnode.png" alt="\" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="classFKOAuth1.html" target="_self">FKOAuth1</a></td><td class="desc"></td></tr>
-<tr id="row_13_"><td class="entry"><img id="arr_13_" src="ftv2mnode.png" alt="o" width="16" height="22" onclick="toggleFolder('13_')"/><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="classphoto__driver.html" target="_self">photo_driver</a></td><td class="desc"></td></tr>
-<tr id="row_13_0_" class="even"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="classphoto__gd.html" target="_self">photo_gd</a></td><td class="desc"></td></tr>
-<tr id="row_13_1_"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2lastnode.png" alt="\" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="classphoto__imagick.html" target="_self">photo_imagick</a></td><td class="desc"></td></tr>
-<tr id="row_14_" class="even"><td class="entry"><img id="arr_14_" src="ftv2mnode.png" alt="o" width="16" height="22" onclick="toggleFolder('14_')"/><img src="ftv2cl.png" alt="C" width="24" height="22" /><b>Plugin</b></td><td class="desc"></td></tr>
-<tr id="row_14_0_"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2lastnode.png" alt="\" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="classRedBrowser.html" target="_self">RedBrowser</a></td><td class="desc"></td></tr>
-<tr id="row_15_" class="even"><td class="entry"><img id="arr_15_" src="ftv2mnode.png" alt="o" width="16" height="22" onclick="toggleFolder('15_')"/><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="classProtoDriver.html" target="_self">ProtoDriver</a></td><td class="desc"></td></tr>
-<tr id="row_15_0_"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2lastnode.png" alt="\" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="classZotDriver.html" target="_self">ZotDriver</a></td><td class="desc"></td></tr>
-<tr id="row_16_" class="even"><td class="entry"><img id="arr_16_" src="ftv2mlastnode.png" alt="\" width="16" height="22" onclick="toggleFolder('16_')"/><img src="ftv2cl.png" alt="C" width="24" height="22" /><b>Smarty</b></td><td class="desc"></td></tr>
-<tr id="row_16_0_"><td class="entry"><img src="ftv2blank.png" alt="&#160;" width="16" height="22" /><img src="ftv2lastnode.png" alt="\" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="classFriendicaSmarty.html" target="_self">FriendicaSmarty</a></td><td class="desc"></td></tr>
+<tr id="row_4_1_"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="classdba__mysqli.html" target="_self">dba_mysqli</a></td><td class="desc"></td></tr>
+<tr id="row_4_2_" class="even"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2lastnode.png" alt="\" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="classdba__postgres.html" target="_self">dba_postgres</a></td><td class="desc"></td></tr>
+<tr id="row_5_"><td class="entry"><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="classenotify.html" target="_self">enotify</a></td><td class="desc"></td></tr>
+<tr id="row_6_" class="even"><td class="entry"><img id="arr_6_" src="ftv2mnode.png" alt="o" width="16" height="22" onclick="toggleFolder('6_')"/><img src="ftv2cl.png" alt="C" width="24" height="22" /><b>ICollection</b></td><td class="desc"></td></tr>
+<tr id="row_6_0_"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2lastnode.png" alt="\" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="classRedMatrix_1_1RedDAV_1_1RedDirectory.html" target="_self">RedMatrix\RedDAV\RedDirectory</a></td><td class="desc"><a class="el" href="classRedMatrix_1_1RedDAV_1_1RedDirectory.html" title="RedDirectory class.">RedDirectory</a> class</td></tr>
+<tr id="row_7_" class="even"><td class="entry"><img id="arr_7_" src="ftv2mnode.png" alt="o" width="16" height="22" onclick="toggleFolder('7_')"/><img src="ftv2cl.png" alt="C" width="24" height="22" /><b>IFile</b></td><td class="desc"></td></tr>
+<tr id="row_7_0_"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2lastnode.png" alt="\" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="classRedMatrix_1_1RedDAV_1_1RedFile.html" target="_self">RedMatrix\RedDAV\RedFile</a></td><td class="desc">This class represents a file in DAV</td></tr>
+<tr id="row_8_" class="even"><td class="entry"><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="classRedMatrix_1_1Import_1_1Import.html" target="_self">RedMatrix\Import\Import</a></td><td class="desc"></td></tr>
+<tr id="row_9_"><td class="entry"><img id="arr_9_" src="ftv2mnode.png" alt="o" width="16" height="22" onclick="toggleFolder('9_')"/><img src="ftv2cl.png" alt="C" width="24" height="22" /><b>IQuota</b></td><td class="desc"></td></tr>
+<tr id="row_9_0_" class="even"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2lastnode.png" alt="\" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="classRedMatrix_1_1RedDAV_1_1RedDirectory.html" target="_self">RedMatrix\RedDAV\RedDirectory</a></td><td class="desc"><a class="el" href="classRedMatrix_1_1RedDAV_1_1RedDirectory.html" title="RedDirectory class.">RedDirectory</a> class</td></tr>
+<tr id="row_10_"><td class="entry"><img id="arr_10_" src="ftv2mnode.png" alt="o" width="16" height="22" onclick="toggleFolder('10_')"/><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="interfaceITemplateEngine.html" target="_self">ITemplateEngine</a></td><td class="desc"></td></tr>
+<tr id="row_10_0_" class="even"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="classFriendicaSmartyEngine.html" target="_self">FriendicaSmartyEngine</a></td><td class="desc"></td></tr>
+<tr id="row_10_1_"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2lastnode.png" alt="\" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="classTemplate.html" target="_self">Template</a></td><td class="desc"></td></tr>
+<tr id="row_11_" class="even"><td class="entry"><img id="arr_11_" src="ftv2mnode.png" alt="o" width="16" height="22" onclick="toggleFolder('11_')"/><img src="ftv2cl.png" alt="C" width="24" height="22" /><b>Node</b></td><td class="desc"></td></tr>
+<tr id="row_11_0_"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="classRedMatrix_1_1RedDAV_1_1RedDirectory.html" target="_self">RedMatrix\RedDAV\RedDirectory</a></td><td class="desc"><a class="el" href="classRedMatrix_1_1RedDAV_1_1RedDirectory.html" title="RedDirectory class.">RedDirectory</a> class</td></tr>
+<tr id="row_11_1_" class="even"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2lastnode.png" alt="\" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="classRedMatrix_1_1RedDAV_1_1RedFile.html" target="_self">RedMatrix\RedDAV\RedFile</a></td><td class="desc">This class represents a file in DAV</td></tr>
+<tr id="row_12_"><td class="entry"><img id="arr_12_" src="ftv2mnode.png" alt="o" width="16" height="22" onclick="toggleFolder('12_')"/><img src="ftv2cl.png" alt="C" width="24" height="22" /><b>OAuthDataStore</b></td><td class="desc"></td></tr>
+<tr id="row_12_0_" class="even"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2lastnode.png" alt="\" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="classFKOAuthDataStore.html" target="_self">FKOAuthDataStore</a></td><td class="desc"></td></tr>
+<tr id="row_13_"><td class="entry"><img id="arr_13_" src="ftv2mnode.png" alt="o" width="16" height="22" onclick="toggleFolder('13_')"/><img src="ftv2cl.png" alt="C" width="24" height="22" /><b>OAuthServer</b></td><td class="desc"></td></tr>
+<tr id="row_13_0_" class="even"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2lastnode.png" alt="\" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="classFKOAuth1.html" target="_self">FKOAuth1</a></td><td class="desc"></td></tr>
+<tr id="row_14_"><td class="entry"><img id="arr_14_" src="ftv2mnode.png" alt="o" width="16" height="22" onclick="toggleFolder('14_')"/><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="classphoto__driver.html" target="_self">photo_driver</a></td><td class="desc"></td></tr>
+<tr id="row_14_0_" class="even"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="classphoto__gd.html" target="_self">photo_gd</a></td><td class="desc"></td></tr>
+<tr id="row_14_1_"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2lastnode.png" alt="\" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="classphoto__imagick.html" target="_self">photo_imagick</a></td><td class="desc"></td></tr>
+<tr id="row_15_" class="even"><td class="entry"><img id="arr_15_" src="ftv2mnode.png" alt="o" width="16" height="22" onclick="toggleFolder('15_')"/><img src="ftv2cl.png" alt="C" width="24" height="22" /><b>Plugin</b></td><td class="desc"></td></tr>
+<tr id="row_15_0_"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2lastnode.png" alt="\" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="classRedMatrix_1_1RedDAV_1_1RedBrowser.html" target="_self">RedMatrix\RedDAV\RedBrowser</a></td><td class="desc">Provides a DAV frontend for the webbrowser</td></tr>
+<tr id="row_16_" class="even"><td class="entry"><img id="arr_16_" src="ftv2mnode.png" alt="o" width="16" height="22" onclick="toggleFolder('16_')"/><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="classProtoDriver.html" target="_self">ProtoDriver</a></td><td class="desc"></td></tr>
+<tr id="row_16_0_"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2lastnode.png" alt="\" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="classZotDriver.html" target="_self">ZotDriver</a></td><td class="desc"></td></tr>
+<tr id="row_17_" class="even"><td class="entry"><img id="arr_17_" src="ftv2mnode.png" alt="o" width="16" height="22" onclick="toggleFolder('17_')"/><img src="ftv2cl.png" alt="C" width="24" height="22" /><b>Sabre</b></td><td class="desc"></td></tr>
+<tr id="row_17_0_"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="classRedMatrix_1_1RedDAV_1_1RedBasicAuth.html" target="_self">RedMatrix\RedDAV\RedBasicAuth</a></td><td class="desc">Authentication backend class for <a class="el" href="namespaceRedMatrix_1_1RedDAV.html">RedDAV</a></td></tr>
+<tr id="row_17_1_" class="even"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="classRedMatrix_1_1RedDAV_1_1RedBrowser.html" target="_self">RedMatrix\RedDAV\RedBrowser</a></td><td class="desc">Provides a DAV frontend for the webbrowser</td></tr>
+<tr id="row_17_2_"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="classRedMatrix_1_1RedDAV_1_1RedDirectory.html" target="_self">RedMatrix\RedDAV\RedDirectory</a></td><td class="desc"><a class="el" href="classRedMatrix_1_1RedDAV_1_1RedDirectory.html" title="RedDirectory class.">RedDirectory</a> class</td></tr>
+<tr id="row_17_3_" class="even"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="classRedMatrix_1_1RedDAV_1_1RedDirectory.html" target="_self">RedMatrix\RedDAV\RedDirectory</a></td><td class="desc"><a class="el" href="classRedMatrix_1_1RedDAV_1_1RedDirectory.html" title="RedDirectory class.">RedDirectory</a> class</td></tr>
+<tr id="row_17_4_"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="classRedMatrix_1_1RedDAV_1_1RedDirectory.html" target="_self">RedMatrix\RedDAV\RedDirectory</a></td><td class="desc"><a class="el" href="classRedMatrix_1_1RedDAV_1_1RedDirectory.html" title="RedDirectory class.">RedDirectory</a> class</td></tr>
+<tr id="row_17_5_" class="even"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="classRedMatrix_1_1RedDAV_1_1RedFile.html" target="_self">RedMatrix\RedDAV\RedFile</a></td><td class="desc">This class represents a file in DAV</td></tr>
+<tr id="row_17_6_"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2lastnode.png" alt="\" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="classRedMatrix_1_1RedDAV_1_1RedFile.html" target="_self">RedMatrix\RedDAV\RedFile</a></td><td class="desc">This class represents a file in DAV</td></tr>
+<tr id="row_18_" class="even"><td class="entry"><img id="arr_18_" src="ftv2mlastnode.png" alt="\" width="16" height="22" onclick="toggleFolder('18_')"/><img src="ftv2cl.png" alt="C" width="24" height="22" /><b>Smarty</b></td><td class="desc"></td></tr>
+<tr id="row_18_0_"><td class="entry"><img src="ftv2blank.png" alt="&#160;" width="16" height="22" /><img src="ftv2lastnode.png" alt="\" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="classFriendicaSmarty.html" target="_self">FriendicaSmarty</a></td><td class="desc"></td></tr>
</table>
</div><!-- directory -->
</div><!-- contents -->
diff --git a/doc/html/hierarchy.js b/doc/html/hierarchy.js
index 6259fc750..83fcb9ea8 100644
--- a/doc/html/hierarchy.js
+++ b/doc/html/hierarchy.js
@@ -1,7 +1,7 @@
var hierarchy =
[
[ "AbstractBasic", null, [
- [ "RedBasicAuth", "classRedBasicAuth.html", null ]
+ [ "RedMatrix\\RedDAV\\RedBasicAuth", "classRedMatrix_1_1RedDAV_1_1RedBasicAuth.html", null ]
] ],
[ "App", "classApp.html", null ],
[ "BaseObject", "classBaseObject.html", [
@@ -11,25 +11,27 @@ var hierarchy =
[ "Cache", "classCache.html", null ],
[ "dba_driver", "classdba__driver.html", [
[ "dba_mysql", "classdba__mysql.html", null ],
- [ "dba_mysqli", "classdba__mysqli.html", null ]
+ [ "dba_mysqli", "classdba__mysqli.html", null ],
+ [ "dba_postgres", "classdba__postgres.html", null ]
] ],
[ "enotify", "classenotify.html", null ],
[ "ICollection", null, [
- [ "RedDirectory", "classRedDirectory.html", null ]
+ [ "RedMatrix\\RedDAV\\RedDirectory", "classRedMatrix_1_1RedDAV_1_1RedDirectory.html", null ]
] ],
[ "IFile", null, [
- [ "RedFile", "classRedFile.html", null ]
+ [ "RedMatrix\\RedDAV\\RedFile", "classRedMatrix_1_1RedDAV_1_1RedFile.html", null ]
] ],
+ [ "RedMatrix\\Import\\Import", "classRedMatrix_1_1Import_1_1Import.html", null ],
[ "IQuota", null, [
- [ "RedDirectory", "classRedDirectory.html", null ]
+ [ "RedMatrix\\RedDAV\\RedDirectory", "classRedMatrix_1_1RedDAV_1_1RedDirectory.html", null ]
] ],
[ "ITemplateEngine", "interfaceITemplateEngine.html", [
[ "FriendicaSmartyEngine", "classFriendicaSmartyEngine.html", null ],
[ "Template", "classTemplate.html", null ]
] ],
[ "Node", null, [
- [ "RedDirectory", "classRedDirectory.html", null ],
- [ "RedFile", "classRedFile.html", null ]
+ [ "RedMatrix\\RedDAV\\RedDirectory", "classRedMatrix_1_1RedDAV_1_1RedDirectory.html", null ],
+ [ "RedMatrix\\RedDAV\\RedFile", "classRedMatrix_1_1RedDAV_1_1RedFile.html", null ]
] ],
[ "OAuthDataStore", null, [
[ "FKOAuthDataStore", "classFKOAuthDataStore.html", null ]
@@ -42,11 +44,20 @@ var hierarchy =
[ "photo_imagick", "classphoto__imagick.html", null ]
] ],
[ "Plugin", null, [
- [ "RedBrowser", "classRedBrowser.html", null ]
+ [ "RedMatrix\\RedDAV\\RedBrowser", "classRedMatrix_1_1RedDAV_1_1RedBrowser.html", null ]
] ],
[ "ProtoDriver", "classProtoDriver.html", [
[ "ZotDriver", "classZotDriver.html", null ]
] ],
+ [ "Sabre", null, [
+ [ "RedMatrix\\RedDAV\\RedBasicAuth", "classRedMatrix_1_1RedDAV_1_1RedBasicAuth.html", null ],
+ [ "RedMatrix\\RedDAV\\RedBrowser", "classRedMatrix_1_1RedDAV_1_1RedBrowser.html", null ],
+ [ "RedMatrix\\RedDAV\\RedDirectory", "classRedMatrix_1_1RedDAV_1_1RedDirectory.html", null ],
+ [ "RedMatrix\\RedDAV\\RedDirectory", "classRedMatrix_1_1RedDAV_1_1RedDirectory.html", null ],
+ [ "RedMatrix\\RedDAV\\RedDirectory", "classRedMatrix_1_1RedDAV_1_1RedDirectory.html", null ],
+ [ "RedMatrix\\RedDAV\\RedFile", "classRedMatrix_1_1RedDAV_1_1RedFile.html", null ],
+ [ "RedMatrix\\RedDAV\\RedFile", "classRedMatrix_1_1RedDAV_1_1RedFile.html", null ]
+ ] ],
[ "Smarty", null, [
[ "FriendicaSmarty", "classFriendicaSmarty.html", null ]
] ]
diff --git a/doc/html/hivenet_2php_2style_8php.html b/doc/html/hivenet_2php_2style_8php.html
new file mode 100644
index 000000000..b2adc9011
--- /dev/null
+++ b/doc/html/hivenet_2php_2style_8php.html
@@ -0,0 +1,112 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<meta name="generator" content="Doxygen 1.8.3.1"/>
+<title>The Red Matrix: view/theme/hivenet/php/style.php File Reference</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="navtree.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="resize.js"></script>
+<script type="text/javascript" src="navtree.js"></script>
+<script type="text/javascript">
+ $(document).ready(initResizable);
+ $(window).load(resizeHeight);
+</script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/search.js"></script>
+<script type="text/javascript">
+ $(document).ready(function() { searchBox.OnSelectItem(0); });
+</script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+ <td id="projectlogo"><img alt="Logo" src="rm-64.png"/></td>
+ <td style="padding-left: 0.5em;">
+ <div id="projectname">The Red Matrix
+ </div>
+ </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.8.3.1 -->
+<script type="text/javascript">
+var searchBox = new SearchBox("searchBox", "search",false,'Search');
+</script>
+ <div id="navrow1" class="tabs">
+ <ul class="tablist">
+ <li><a href="index.html"><span>Main&#160;Page</span></a></li>
+ <li><a href="pages.html"><span>Related&#160;Pages</span></a></li>
+ <li><a href="namespaces.html"><span>Namespaces</span></a></li>
+ <li><a href="annotated.html"><span>Classes</span></a></li>
+ <li class="current"><a href="files.html"><span>Files</span></a></li>
+ <li>
+ <div id="MSearchBox" class="MSearchBoxInactive">
+ <span class="left">
+ <img id="MSearchSelect" src="search/mag_sel.png"
+ onmouseover="return searchBox.OnSearchSelectShow()"
+ onmouseout="return searchBox.OnSearchSelectHide()"
+ alt=""/>
+ <input type="text" id="MSearchField" value="Search" accesskey="S"
+ onfocus="searchBox.OnSearchFieldFocus(true)"
+ onblur="searchBox.OnSearchFieldFocus(false)"
+ onkeyup="searchBox.OnSearchFieldChange(event)"/>
+ </span><span class="right">
+ <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
+ </span>
+ </div>
+ </li>
+ </ul>
+ </div>
+ <div id="navrow2" class="tabs2">
+ <ul class="tablist">
+ <li><a href="files.html"><span>File&#160;List</span></a></li>
+ <li><a href="globals.html"><span>File&#160;Members</span></a></li>
+ </ul>
+ </div>
+</div><!-- top -->
+<div id="side-nav" class="ui-resizable side-nav-resizable">
+ <div id="nav-tree">
+ <div id="nav-tree-contents">
+ <div id="nav-sync" class="sync"></div>
+ </div>
+ </div>
+ <div id="splitbar" style="-moz-user-select:none;"
+ class="ui-resizable-handle">
+ </div>
+</div>
+<script type="text/javascript">
+$(document).ready(function(){initNavTree('hivenet_2php_2style_8php.html','');});
+</script>
+<div id="doc-content">
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+ onmouseover="return searchBox.OnSearchSelectShow()"
+ onmouseout="return searchBox.OnSearchSelectHide()"
+ onkeydown="return searchBox.OnSearchSelectKey(event)">
+<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark">&#160;</span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark">&#160;</span>Classes</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark">&#160;</span>Namespaces</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark">&#160;</span>Files</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark">&#160;</span>Functions</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark">&#160;</span>Variables</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark">&#160;</span>Pages</a></div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<iframe src="javascript:void(0)" frameborder="0"
+ name="MSearchResults" id="MSearchResults">
+</iframe>
+</div>
+
+<div class="header">
+ <div class="headertitle">
+<div class="title">style.php File Reference</div> </div>
+</div><!--header-->
+<div class="contents">
+</div><!-- contents -->
+</div><!-- doc-content -->
+
diff --git a/doc/html/hivenet_2php_2theme_8php.html b/doc/html/hivenet_2php_2theme_8php.html
new file mode 100644
index 000000000..de9afb019
--- /dev/null
+++ b/doc/html/hivenet_2php_2theme_8php.html
@@ -0,0 +1,144 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<meta name="generator" content="Doxygen 1.8.3.1"/>
+<title>The Red Matrix: view/theme/hivenet/php/theme.php File Reference</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="navtree.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="resize.js"></script>
+<script type="text/javascript" src="navtree.js"></script>
+<script type="text/javascript">
+ $(document).ready(initResizable);
+ $(window).load(resizeHeight);
+</script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/search.js"></script>
+<script type="text/javascript">
+ $(document).ready(function() { searchBox.OnSelectItem(0); });
+</script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+ <td id="projectlogo"><img alt="Logo" src="rm-64.png"/></td>
+ <td style="padding-left: 0.5em;">
+ <div id="projectname">The Red Matrix
+ </div>
+ </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.8.3.1 -->
+<script type="text/javascript">
+var searchBox = new SearchBox("searchBox", "search",false,'Search');
+</script>
+ <div id="navrow1" class="tabs">
+ <ul class="tablist">
+ <li><a href="index.html"><span>Main&#160;Page</span></a></li>
+ <li><a href="pages.html"><span>Related&#160;Pages</span></a></li>
+ <li><a href="namespaces.html"><span>Namespaces</span></a></li>
+ <li><a href="annotated.html"><span>Classes</span></a></li>
+ <li class="current"><a href="files.html"><span>Files</span></a></li>
+ <li>
+ <div id="MSearchBox" class="MSearchBoxInactive">
+ <span class="left">
+ <img id="MSearchSelect" src="search/mag_sel.png"
+ onmouseover="return searchBox.OnSearchSelectShow()"
+ onmouseout="return searchBox.OnSearchSelectHide()"
+ alt=""/>
+ <input type="text" id="MSearchField" value="Search" accesskey="S"
+ onfocus="searchBox.OnSearchFieldFocus(true)"
+ onblur="searchBox.OnSearchFieldFocus(false)"
+ onkeyup="searchBox.OnSearchFieldChange(event)"/>
+ </span><span class="right">
+ <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
+ </span>
+ </div>
+ </li>
+ </ul>
+ </div>
+ <div id="navrow2" class="tabs2">
+ <ul class="tablist">
+ <li><a href="files.html"><span>File&#160;List</span></a></li>
+ <li><a href="globals.html"><span>File&#160;Members</span></a></li>
+ </ul>
+ </div>
+</div><!-- top -->
+<div id="side-nav" class="ui-resizable side-nav-resizable">
+ <div id="nav-tree">
+ <div id="nav-tree-contents">
+ <div id="nav-sync" class="sync"></div>
+ </div>
+ </div>
+ <div id="splitbar" style="-moz-user-select:none;"
+ class="ui-resizable-handle">
+ </div>
+</div>
+<script type="text/javascript">
+$(document).ready(function(){initNavTree('hivenet_2php_2theme_8php.html','');});
+</script>
+<div id="doc-content">
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+ onmouseover="return searchBox.OnSearchSelectShow()"
+ onmouseout="return searchBox.OnSearchSelectHide()"
+ onkeydown="return searchBox.OnSearchSelectKey(event)">
+<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark">&#160;</span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark">&#160;</span>Classes</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark">&#160;</span>Namespaces</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark">&#160;</span>Files</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark">&#160;</span>Functions</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark">&#160;</span>Variables</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark">&#160;</span>Pages</a></div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<iframe src="javascript:void(0)" frameborder="0"
+ name="MSearchResults" id="MSearchResults">
+</iframe>
+</div>
+
+<div class="header">
+ <div class="summary">
+<a href="#func-members">Functions</a> </div>
+ <div class="headertitle">
+<div class="title">theme.php File Reference</div> </div>
+</div><!--header-->
+<div class="contents">
+<table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="func-members"></a>
+Functions</h2></td></tr>
+<tr class="memitem:a3a8b539b112ae63936025236dbaf0a29"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="hivenet_2php_2theme_8php.html#a3a8b539b112ae63936025236dbaf0a29">hivenet_init</a> (&amp;$a)</td></tr>
+<tr class="separator:a3a8b539b112ae63936025236dbaf0a29"><td class="memSeparator" colspan="2">&#160;</td></tr>
+</table>
+<h2 class="groupheader">Function Documentation</h2>
+<a class="anchor" id="a3a8b539b112ae63936025236dbaf0a29"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">hivenet_init </td>
+ <td>(</td>
+ <td class="paramtype">&amp;&#160;</td>
+ <td class="paramname"><em>$a</em></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+<ul>
+<li>Name: Hivenet</li>
+<li>Description: An experimental red-colored theme based on redbasic</li>
+<li>Version: 1.0</li>
+<li>Author: Sean Tilley</li>
+<li>Compat: Red [*] </li>
+</ul>
+
+</div>
+</div>
+</div><!-- contents -->
+</div><!-- doc-content -->
+
diff --git a/doc/html/hivenet_2php_2theme_8php.js b/doc/html/hivenet_2php_2theme_8php.js
new file mode 100644
index 000000000..f6923b33f
--- /dev/null
+++ b/doc/html/hivenet_2php_2theme_8php.js
@@ -0,0 +1,4 @@
+var hivenet_2php_2theme_8php =
+[
+ [ "hivenet_init", "hivenet_2php_2theme_8php.html#a3a8b539b112ae63936025236dbaf0a29", null ]
+]; \ No newline at end of file
diff --git a/doc/html/home_8php.html b/doc/html/home_8php.html
index ec629b7c2..6e5b05937 100644
--- a/doc/html/home_8php.html
+++ b/doc/html/home_8php.html
@@ -114,11 +114,11 @@ $(document).ready(function(){initNavTree('home_8php.html','');});
Functions</h2></td></tr>
<tr class="memitem:ac4642c38b6f23a8d065dd4a75c620bde"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="home_8php.html#ac4642c38b6f23a8d065dd4a75c620bde">home_init</a> (&amp;$a)</td></tr>
<tr class="separator:ac4642c38b6f23a8d065dd4a75c620bde"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:aa1cf697851a646755baf537f75334c46"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="home_8php.html#aa1cf697851a646755baf537f75334c46">home_content</a> (&amp;$a)</td></tr>
-<tr class="separator:aa1cf697851a646755baf537f75334c46"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a6e3dbf78f4ed74ab2577de221190b33f"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="home_8php.html#a6e3dbf78f4ed74ab2577de221190b33f">home_content</a> (&amp;$a, $update=0, $load=false)</td></tr>
+<tr class="separator:a6e3dbf78f4ed74ab2577de221190b33f"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<h2 class="groupheader">Function Documentation</h2>
-<a class="anchor" id="aa1cf697851a646755baf537f75334c46"></a>
+<a class="anchor" id="a6e3dbf78f4ed74ab2577de221190b33f"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
@@ -126,12 +126,30 @@ Functions</h2></td></tr>
<td class="memname">home_content </td>
<td>(</td>
<td class="paramtype">&amp;&#160;</td>
- <td class="paramname"><em>$a</em></td><td>)</td>
+ <td class="paramname"><em>$a</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">&#160;</td>
+ <td class="paramname"><em>$update</em> = <code>0</code>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
<td></td>
+ <td class="paramtype">&#160;</td>
+ <td class="paramname"><em>$load</em> = <code>false</code>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
+<p>Referenced by <a class="el" href="update__home_8php.html#a668340089acd150b830134476a647d05">update_home_content()</a>.</p>
+
</div>
</div>
<a class="anchor" id="ac4642c38b6f23a8d065dd4a75c620bde"></a>
diff --git a/doc/html/home_8php.js b/doc/html/home_8php.js
index e4f6d5dc9..3aacc0b85 100644
--- a/doc/html/home_8php.js
+++ b/doc/html/home_8php.js
@@ -1,5 +1,5 @@
var home_8php =
[
- [ "home_content", "home_8php.html#aa1cf697851a646755baf537f75334c46", null ],
+ [ "home_content", "home_8php.html#a6e3dbf78f4ed74ab2577de221190b33f", null ],
[ "home_init", "home_8php.html#ac4642c38b6f23a8d065dd4a75c620bde", null ]
]; \ No newline at end of file
diff --git a/doc/html/html2bbcode_8php.html b/doc/html/html2bbcode_8php.html
index 62c70d045..e1496199b 100644
--- a/doc/html/html2bbcode_8php.html
+++ b/doc/html/html2bbcode_8php.html
@@ -164,7 +164,7 @@ Functions</h2></td></tr>
</table>
</div><div class="memdoc">
-<p>Referenced by <a class="el" href="include_2api_8php.html#a450d8732b7b608f7ac929aee61572b95">api_statuses_mediap()</a>, <a class="el" href="include_2api_8php.html#ad4d1634df6b35126552324683caaffa2">api_statuses_update()</a>, <a class="el" href="bb2diaspora_8php.html#ac9061ee10fcfcdac69566b649614e625">diaspora2bb()</a>, <a class="el" href="items_8php.html#a896c1809d58f2d7a42cfe14577958ddf">get_atom_elements()</a>, and <a class="el" href="rpost_8php.html#a8190354d789000806d9879aea276728f">rpost_content()</a>.</p>
+<p>Referenced by <a class="el" href="include_2api_8php.html#a450d8732b7b608f7ac929aee61572b95">api_statuses_mediap()</a>, <a class="el" href="include_2api_8php.html#ad4d1634df6b35126552324683caaffa2">api_statuses_update()</a>, <a class="el" href="bb2diaspora_8php.html#ac9061ee10fcfcdac69566b649614e625">diaspora2bb()</a>, <a class="el" href="items_8php.html#a5e5be7bf1f8257dec0b2647e60a3f3f1">get_atom_elements()</a>, <a class="el" href="refimport_8php.html#ad97ebb5feda0230a4834e0b3637a0d29">refimport_content()</a>, <a class="el" href="refimport_8php.html#a01a29630fa5e1ce6cd5e1fd75280747c">reflect_comment_store()</a>, and <a class="el" href="rpost_8php.html#a8190354d789000806d9879aea276728f">rpost_content()</a>.</p>
</div>
</div>
diff --git a/doc/html/html2plain_8php.html b/doc/html/html2plain_8php.html
index bf8dd4f1e..a050e25f8 100644
--- a/doc/html/html2plain_8php.html
+++ b/doc/html/html2plain_8php.html
@@ -204,7 +204,7 @@ Functions</h2></td></tr>
</table>
</div><div class="memdoc">
-<p>Referenced by <a class="el" href="include_2api_8php.html#a4c6fb9fb5203aa60f4b3afd4521db8ea">api_format_items()</a>, <a class="el" href="include_2api_8php.html#ae82608c317421f27446465aa6724733d">api_format_messages()</a>, <a class="el" href="include_2api_8php.html#a645397787618b5c548a31e8686e8cca4">api_status_show()</a>, <a class="el" href="include_2api_8php.html#abe8e929e93f7ab134b1cb1fb30f19a76">api_users_show()</a>, <a class="el" href="items_8php.html#a87ac9e359591721a824ecd23bbb56296">check_item_source()</a>, and <a class="el" href="include_2network_8php.html#a1ff07d9fad93b713b93da0ab77aab7f0">email_send()</a>.</p>
+<p>Referenced by <a class="el" href="include_2api_8php.html#a4c6fb9fb5203aa60f4b3afd4521db8ea">api_format_items()</a>, <a class="el" href="include_2api_8php.html#ae82608c317421f27446465aa6724733d">api_format_messages()</a>, <a class="el" href="include_2api_8php.html#a645397787618b5c548a31e8686e8cca4">api_status_show()</a>, <a class="el" href="include_2api_8php.html#abe8e929e93f7ab134b1cb1fb30f19a76">api_users_show()</a>, <a class="el" href="items_8php.html#a87ac9e359591721a824ecd23bbb56296">check_item_source()</a>, <a class="el" href="include_2network_8php.html#a1ff07d9fad93b713b93da0ab77aab7f0">email_send()</a>, and <a class="el" href="event_8php.html#a05073cd4ab837bd4a0149e8ed23ce688">format_ical_text()</a>.</p>
</div>
</div>
diff --git a/doc/html/hubloc_8php.html b/doc/html/hubloc_8php.html
index 37e3e05f2..66ef98c09 100644
--- a/doc/html/hubloc_8php.html
+++ b/doc/html/hubloc_8php.html
@@ -112,10 +112,56 @@ $(document).ready(function(){initNavTree('hubloc_8php.html','');});
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="func-members"></a>
Functions</h2></td></tr>
+<tr class="memitem:aebd244b4616ded022cbbee5e82926951"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="hubloc_8php.html#aebd244b4616ded022cbbee5e82926951">is_matrix_url</a> ($url)</td></tr>
+<tr class="separator:aebd244b4616ded022cbbee5e82926951"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ad3d0dcfcfcb347744f7617fe6f5de002"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="hubloc_8php.html#ad3d0dcfcfcb347744f7617fe6f5de002">prune_hub_reinstalls</a> ()</td></tr>
<tr class="separator:ad3d0dcfcfcb347744f7617fe6f5de002"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a84c79b7be352f62d12fe4fa2c80fc6ea"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="hubloc_8php.html#a84c79b7be352f62d12fe4fa2c80fc6ea">remove_obsolete_hublocs</a> ()</td></tr>
+<tr class="separator:a84c79b7be352f62d12fe4fa2c80fc6ea"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ad86214b3a74084bd7b54e8d6c919ce4d"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="hubloc_8php.html#ad86214b3a74084bd7b54e8d6c919ce4d">hubloc_change_primary</a> ($hubloc)</td></tr>
+<tr class="separator:ad86214b3a74084bd7b54e8d6c919ce4d"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:acb708dd197aae72a4858cf5ff4e3195b"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="hubloc_8php.html#acb708dd197aae72a4858cf5ff4e3195b">xchan_store</a> ($arr)</td></tr>
+<tr class="separator:acb708dd197aae72a4858cf5ff4e3195b"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:af1b476c936f96a93282b1d058e3d05ea"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="hubloc_8php.html#af1b476c936f96a93282b1d058e3d05ea">xchan_fetch</a> ($arr)</td></tr>
+<tr class="separator:af1b476c936f96a93282b1d058e3d05ea"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<h2 class="groupheader">Function Documentation</h2>
+<a class="anchor" id="ad86214b3a74084bd7b54e8d6c919ce4d"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">hubloc_change_primary </td>
+ <td>(</td>
+ <td class="paramtype">&#160;</td>
+ <td class="paramname"><em>$hubloc</em></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p>Referenced by <a class="el" href="zot_8php.html#ab15c04e7e5f44edf45ec50dd7d183254">sync_locations()</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="aebd244b4616ded022cbbee5e82926951"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">is_matrix_url </td>
+ <td>(</td>
+ <td class="paramtype">&#160;</td>
+ <td class="paramname"><em>$url</em></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p>Referenced by <a class="el" href="include_2bookmarks_8php.html#aef1cb2968c41c759f2d106e1088ca323">bookmark_add()</a>, <a class="el" href="include_2oembed_8php.html#a98549b9af8140eda3eceaeedcaabc2c2">oembed_fetch_url()</a>, <a class="el" href="items_8php.html#a4e6d7639431e0dd8e9f4dba8e1ac408b">red_zrl_callback()</a>, <a class="el" href="items_8php.html#a78a60e39f6991bd3324a24dcbf9dac5a">red_zrlify_img_callback()</a>, <a class="el" href="bbcode_8php.html#a39de4de32a9456d1ca914d0dc52bd322">tryzrlaudio()</a>, and <a class="el" href="bbcode_8php.html#aa92f119341f4c69dcef2768a013079b8">tryzrlvideo()</a>.</p>
+
+</div>
+</div>
<a class="anchor" id="ad3d0dcfcfcb347744f7617fe6f5de002"></a>
<div class="memitem">
<div class="memproto">
@@ -133,6 +179,59 @@ Functions</h2></td></tr>
</div>
</div>
+<a class="anchor" id="a84c79b7be352f62d12fe4fa2c80fc6ea"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">remove_obsolete_hublocs </td>
+ <td>(</td>
+ <td class="paramname"></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p>Referenced by <a class="el" href="poller_8php.html#a5f12df3a4738124b6c039971e87e76da">poller_run()</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="af1b476c936f96a93282b1d058e3d05ea"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">xchan_fetch </td>
+ <td>(</td>
+ <td class="paramtype">&#160;</td>
+ <td class="paramname"><em>$arr</em></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p>Referenced by <a class="el" href="include_2api_8php.html#a4fe872332ff0bd8d5eae2f0c6819cb60">api_red_xchan()</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="acb708dd197aae72a4858cf5ff4e3195b"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">xchan_store </td>
+ <td>(</td>
+ <td class="paramtype">&#160;</td>
+ <td class="paramname"><em>$arr</em></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p>Referenced by <a class="el" href="include_2api_8php.html#a4fe872332ff0bd8d5eae2f0c6819cb60">api_red_xchan()</a>, and <a class="el" href="refimport_8php.html#a01a29630fa5e1ce6cd5e1fd75280747c">reflect_comment_store()</a>.</p>
+
+</div>
+</div>
</div><!-- contents -->
</div><!-- doc-content -->
diff --git a/doc/html/hubloc_8php.js b/doc/html/hubloc_8php.js
index 0019e397f..d16715d55 100644
--- a/doc/html/hubloc_8php.js
+++ b/doc/html/hubloc_8php.js
@@ -1,4 +1,9 @@
var hubloc_8php =
[
- [ "prune_hub_reinstalls", "hubloc_8php.html#ad3d0dcfcfcb347744f7617fe6f5de002", null ]
+ [ "hubloc_change_primary", "hubloc_8php.html#ad86214b3a74084bd7b54e8d6c919ce4d", null ],
+ [ "is_matrix_url", "hubloc_8php.html#aebd244b4616ded022cbbee5e82926951", null ],
+ [ "prune_hub_reinstalls", "hubloc_8php.html#ad3d0dcfcfcb347744f7617fe6f5de002", null ],
+ [ "remove_obsolete_hublocs", "hubloc_8php.html#a84c79b7be352f62d12fe4fa2c80fc6ea", null ],
+ [ "xchan_fetch", "hubloc_8php.html#af1b476c936f96a93282b1d058e3d05ea", null ],
+ [ "xchan_store", "hubloc_8php.html#acb708dd197aae72a4858cf5ff4e3195b", null ]
]; \ No newline at end of file
diff --git a/doc/html/identity_8php.html b/doc/html/identity_8php.html
index 2cb60d39c..be318d8eb 100644
--- a/doc/html/identity_8php.html
+++ b/doc/html/identity_8php.html
@@ -128,8 +128,8 @@ Functions</h2></td></tr>
<tr class="separator:a345f4c943d84de502ec6e72d2c813945"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a78151baf4407a8482d2681a91a9c486b"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="identity_8php.html#a78151baf4407a8482d2681a91a9c486b">set_default_login_identity</a> ($account_id, $channel_id, $force=true)</td></tr>
<tr class="separator:a78151baf4407a8482d2681a91a9c486b"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a3570a4eb77332b292d394c4132cb8f03"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="identity_8php.html#a3570a4eb77332b292d394c4132cb8f03">identity_basic_export</a> ($channel_id)</td></tr>
-<tr class="separator:a3570a4eb77332b292d394c4132cb8f03"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:afaedbc8e2d2a70ec8b006162baac5249"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="identity_8php.html#afaedbc8e2d2a70ec8b006162baac5249">identity_basic_export</a> ($channel_id, $items=false)</td></tr>
+<tr class="separator:afaedbc8e2d2a70ec8b006162baac5249"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a4751b522ea913d0e7ed43e03d22e9e68"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="identity_8php.html#a4751b522ea913d0e7ed43e03d22e9e68">profile_load</a> (&amp;$a, $nickname, $profile= '')</td></tr>
<tr class="separator:a4751b522ea913d0e7ed43e03d22e9e68"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ad4a2c8caca8f6ae93633ebeca0ed6620"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="identity_8php.html#ad4a2c8caca8f6ae93633ebeca0ed6620">profile_create_sidebar</a> (&amp;$a, $connect=true)</td></tr>
@@ -168,6 +168,16 @@ Functions</h2></td></tr>
<tr class="separator:a2ab5172eabd375869060c9ad68323f5c"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a4e996e44b50330098a04b467367a559f"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="identity_8php.html#a4e996e44b50330098a04b467367a559f">is_public_profile</a> ()</td></tr>
<tr class="separator:a4e996e44b50330098a04b467367a559f"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a4ff59df0f0a668a06a8411f87496aa21"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="identity_8php.html#a4ff59df0f0a668a06a8411f87496aa21">get_profile_fields_basic</a> ($filter=0)</td></tr>
+<tr class="separator:a4ff59df0f0a668a06a8411f87496aa21"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a224710dfb7465b706c91134247c20afa"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="identity_8php.html#a224710dfb7465b706c91134247c20afa">get_profile_fields_advanced</a> ($filter=0)</td></tr>
+<tr class="separator:a224710dfb7465b706c91134247c20afa"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a2e6a1cc35887937823ec7fbb90472afe"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="identity_8php.html#a2e6a1cc35887937823ec7fbb90472afe">notifications_off</a> ($channel_id)</td></tr>
+<tr class="separator:a2e6a1cc35887937823ec7fbb90472afe"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a5650319c799de09d1b6d1076b6f839a4"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="identity_8php.html#a5650319c799de09d1b6d1076b6f839a4">notifications_on</a> ($channel_id, $value)</td></tr>
+<tr class="separator:a5650319c799de09d1b6d1076b6f839a4"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a293f416ce9050220b183e08ff5890216"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="identity_8php.html#a293f416ce9050220b183e08ff5890216">get_channel_default_perms</a> ($uid)</td></tr>
+<tr class="separator:a293f416ce9050220b183e08ff5890216"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<h2 class="groupheader">Function Documentation</h2>
<a class="anchor" id="aa870d2c1f558cfd52bef05bc124e8fa4"></a>
@@ -280,7 +290,25 @@ Functions</h2></td></tr>
</table>
</div><div class="memdoc">
-<p>Referenced by <a class="el" href="editblock_8php.html#abbe8f55de06967bc8d79d620509a49e6">editblock_content()</a>, <a class="el" href="importelm_8php.html#a1a4f71e6d76ace6add5e9659845f5e5f">importelm_post()</a>, <a class="el" href="wall__attach_8php.html#a7385e970e93228d082f0fd7254f6e653">wall_attach_post()</a>, and <a class="el" href="wall__upload_8php.html#a7cbe204244cf9e0380ee932263a74d8f">wall_upload_post()</a>.</p>
+<p>Referenced by <a class="el" href="importelm_8php.html#a1a4f71e6d76ace6add5e9659845f5e5f">importelm_post()</a>, <a class="el" href="wall__attach_8php.html#a7385e970e93228d082f0fd7254f6e653">wall_attach_post()</a>, and <a class="el" href="wall__upload_8php.html#a7cbe204244cf9e0380ee932263a74d8f">wall_upload_post()</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a293f416ce9050220b183e08ff5890216"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">get_channel_default_perms </td>
+ <td>(</td>
+ <td class="paramtype">&#160;</td>
+ <td class="paramname"><em>$uid</em></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p>Referenced by <a class="el" href="connedit_8php.html#a795acb3d9d841f55c255d7611681ab67">connedit_content()</a>, and <a class="el" href="include_2follow_8php.html#ae387d4ae097c23d69f3247e7f08140c7">new_contact()</a>.</p>
</div>
</div>
@@ -306,7 +334,7 @@ Functions</h2></td></tr>
</dl>
<dl class="section return"><dt>Returns</dt><dd>string </dd></dl>
-<p>Referenced by <a class="el" href="include_2apps_8php.html#a1b2e737f477a2e0d9d11ef14adc5aa66">app_render()</a>, <a class="el" href="include_2apps_8php.html#a15626f24069c18816f7cdaf4735f58f9">app_store()</a>, <a class="el" href="include_2apps_8php.html#aeab6a62d2f3dfaa86ed043a006305f46">app_update()</a>, <a class="el" href="include_2network_8php.html#ab07ce9d75eae559865ed90aad2154bd7">avatar_img()</a>, <a class="el" href="photo__driver_8php.html#a78f5a10c568d2a9bbbb129dc96548887">import_profile_photo()</a>, <a class="el" href="openid_8php.html#a9a13827dbcf61ae4e45f0b6b33a88f43">openid_content()</a>, <a class="el" href="include_2apps_8php.html#a32fe4ed9666228fd4b67dc487cc57a83">parse_app_description()</a>, and <a class="el" href="photo_8php.html#a582779d24882b0d31ee909a91d70a448">photo_init()</a>.</p>
+<p>Referenced by <a class="el" href="include_2apps_8php.html#a1b2e737f477a2e0d9d11ef14adc5aa66">app_render()</a>, <a class="el" href="include_2apps_8php.html#a15626f24069c18816f7cdaf4735f58f9">app_store()</a>, <a class="el" href="include_2apps_8php.html#aeab6a62d2f3dfaa86ed043a006305f46">app_update()</a>, <a class="el" href="include_2network_8php.html#ab07ce9d75eae559865ed90aad2154bd7">avatar_img()</a>, <a class="el" href="photo__driver_8php.html#a78f5a10c568d2a9bbbb129dc96548887">import_profile_photo()</a>, <a class="el" href="openid_8php.html#a9a13827dbcf61ae4e45f0b6b33a88f43">openid_content()</a>, <a class="el" href="include_2apps_8php.html#a32fe4ed9666228fd4b67dc487cc57a83">parse_app_description()</a>, <a class="el" href="photo_8php.html#a582779d24882b0d31ee909a91d70a448">photo_init()</a>, <a class="el" href="refimport_8php.html#a01a29630fa5e1ce6cd5e1fd75280747c">reflect_comment_store()</a>, and <a class="el" href="hubloc_8php.html#acb708dd197aae72a4858cf5ff4e3195b">xchan_store()</a>.</p>
</div>
</div>
@@ -377,6 +405,42 @@ Functions</h2></td></tr>
</div>
</div>
+<a class="anchor" id="a224710dfb7465b706c91134247c20afa"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">get_profile_fields_advanced </td>
+ <td>(</td>
+ <td class="paramtype">&#160;</td>
+ <td class="paramname"><em>$filter</em> = <code>0</code></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p>Referenced by <a class="el" href="identity_8php.html#a4751b522ea913d0e7ed43e03d22e9e68">profile_load()</a>, <a class="el" href="profiles_8php.html#a46975783b8b8d70402d51487eb1f0b00">profiles_content()</a>, and <a class="el" href="profiles_8php.html#ab0362c81b1d3b0b12a772b9fac446e04">profiles_post()</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a4ff59df0f0a668a06a8411f87496aa21"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">get_profile_fields_basic </td>
+ <td>(</td>
+ <td class="paramtype">&#160;</td>
+ <td class="paramname"><em>$filter</em> = <code>0</code></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p>Referenced by <a class="el" href="identity_8php.html#a224710dfb7465b706c91134247c20afa">get_profile_fields_advanced()</a>, <a class="el" href="identity_8php.html#a4751b522ea913d0e7ed43e03d22e9e68">profile_load()</a>, <a class="el" href="profiles_8php.html#a46975783b8b8d70402d51487eb1f0b00">profiles_content()</a>, and <a class="el" href="profiles_8php.html#ab0362c81b1d3b0b12a772b9fac446e04">profiles_post()</a>.</p>
+
+</div>
+</div>
<a class="anchor" id="aaff86ee3b5984821e7a256c2da5f1a51"></a>
<div class="memitem">
<div class="memproto">
@@ -390,7 +454,7 @@ Functions</h2></td></tr>
</table>
</div><div class="memdoc">
-<p>Referenced by <a class="el" href="classConversation.html#a8335cdd43f1836e3c255638e61a09e16">Conversation\add_thread()</a>, <a class="el" href="boot_8php.html#a4c02d88e66852a01bd5a1feecb7c3ce3">check_config()</a>, <a class="el" href="identity_8php.html#a1cf83ac2b645de12868edaa3a5718f05">create_sys_channel()</a>, <a class="el" href="display_8php.html#a37137c98d47bf3306f4c2bb9f5b60de0">display_content()</a>, <a class="el" href="expire_8php.html#a444e45c9b67727b27db4c779fd51a298">expire_run()</a>, <a class="el" href="externals_8php.html#a4df44079e6f915286088b7a0d44db926">externals_run()</a>, <a class="el" href="identity_8php.html#aaeb666872995e3ab8da8f7bc5f3b2bd3">get_theme_uid()</a>, <a class="el" href="like_8php.html#a9d7dd268f21c21e9d29dd2aca2dd9538">like_content()</a>, <a class="el" href="mod_2network_8php.html#a43f2f29b90c5e29072c561934bc8f8b4">network_content()</a>, <a class="el" href="notifier_8php.html#a568c502f626cff95e344c0748938b85d">notifier_run()</a>, <a class="el" href="search_8php.html#ab2568591359edde5b483a6cd9a24b2cc">search_content()</a>, <a class="el" href="subthread_8php.html#a50368f3d825b77996030528e7fbfa3d3">subthread_content()</a>, and <a class="el" href="zotfeed_8php.html#a24dfc23d366e7f840cf2847d0c1c8eac">zotfeed_init()</a>.</p>
+<p>Referenced by <a class="el" href="blocks_8php.html#a2531a8fd51db3cecb2eb20c002c66e12">blocks_content()</a>, <a class="el" href="blocks_8php.html#aebe88302181883d2b17d6e98a1aaebe9">blocks_init()</a>, <a class="el" href="boot_8php.html#a4c02d88e66852a01bd5a1feecb7c3ce3">check_config()</a>, <a class="el" href="items_8php.html#a772f0ae77ad77c8ab68ed918a3870946">collect_recipients()</a>, <a class="el" href="conversation_8php.html#affea1afb3f32ca41e966c8ddb4204d81">conversation()</a>, <a class="el" href="identity_8php.html#a1cf83ac2b645de12868edaa3a5718f05">create_sys_channel()</a>, <a class="el" href="text_8php.html#a87a3cefc603302c78982f1d8e1245265">design_tools()</a>, <a class="el" href="display_8php.html#a37137c98d47bf3306f4c2bb9f5b60de0">display_content()</a>, <a class="el" href="editblock_8php.html#abbe8f55de06967bc8d79d620509a49e6">editblock_content()</a>, <a class="el" href="editblock_8php.html#ab7806bb42ae5e93f0330d7bd179d4b3e">editblock_init()</a>, <a class="el" href="editlayout_8php.html#aa877e4157a26b099de904164181dd386">editlayout_content()</a>, <a class="el" href="editlayout_8php.html#a97c1e93d9e75ad8cd2c2f9a7f77341a7">editlayout_init()</a>, <a class="el" href="editwebpage_8php.html#a375e945255fad79a71036528f7480650">editwebpage_content()</a>, <a class="el" href="editwebpage_8php.html#a94109f9c796fbe92508bf9574e35d19f">editwebpage_init()</a>, <a class="el" href="expire_8php.html#a444e45c9b67727b27db4c779fd51a298">expire_run()</a>, <a class="el" href="externals_8php.html#a4df44079e6f915286088b7a0d44db926">externals_run()</a>, <a class="el" href="identity_8php.html#aaeb666872995e3ab8da8f7bc5f3b2bd3">get_theme_uid()</a>, <a class="el" href="home_8php.html#a6e3dbf78f4ed74ab2577de221190b33f">home_content()</a>, <a class="el" href="item_8php.html#a693cd09805755ab85bbb5ecae69a48c3">item_post()</a>, <a class="el" href="layouts_8php.html#a6e0193759ad9eef76d3df2db24237b50">layouts_content()</a>, <a class="el" href="layouts_8php.html#a39c8e9f72641c684c8b689bd91a642fa">layouts_init()</a>, <a class="el" href="like_8php.html#a9d7dd268f21c21e9d29dd2aca2dd9538">like_content()</a>, <a class="el" href="mod_2menu_8php.html#a6fed23af14d71a78a4153c8363a685cf">menu_content()</a>, <a class="el" href="mod_2menu_8php.html#aaa491ef173868fe002aece4632bcf393">menu_post()</a>, <a class="el" href="mitem_8php.html#a7a31b702ecad18eeb6a38b243ff0037e">mitem_content()</a>, <a class="el" href="mitem_8php.html#a9627cd857cafdf04e4fc0ae48c8e8518">mitem_init()</a>, <a class="el" href="mitem_8php.html#a6ee694cca4b551a20d7c7a94b5243ec1">mitem_post()</a>, <a class="el" href="mod_2network_8php.html#a43f2f29b90c5e29072c561934bc8f8b4">network_content()</a>, <a class="el" href="notifier_8php.html#a568c502f626cff95e344c0748938b85d">notifier_run()</a>, <a class="el" href="zot_8php.html#a083aec6c900d244e1bfc1406f9461465">public_recips()</a>, <a class="el" href="search_8php.html#ab2568591359edde5b483a6cd9a24b2cc">search_content()</a>, <a class="el" href="subthread_8php.html#a50368f3d825b77996030528e7fbfa3d3">subthread_content()</a>, <a class="el" href="viewsrc_8php.html#a6eff3d0c1d7d14b335c4edb785cd60a4">viewsrc_content()</a>, <a class="el" href="webpages_8php.html#af3b7397d4abc153e3d2147740ee1a41d">webpages_content()</a>, <a class="el" href="webpages_8php.html#af9ad0b65eba79acead3fa32b43d888b7">webpages_init()</a>, <a class="el" href="zot_8php.html#aeea071f17e306fe3d0c488551906bfab">zot_import()</a>, and <a class="el" href="zotfeed_8php.html#a24dfc23d366e7f840cf2847d0c1c8eac">zotfeed_init()</a>.</p>
</div>
</div>
@@ -409,7 +473,7 @@ Functions</h2></td></tr>
</div>
</div>
-<a class="anchor" id="a3570a4eb77332b292d394c4132cb8f03"></a>
+<a class="anchor" id="afaedbc8e2d2a70ec8b006162baac5249"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
@@ -417,15 +481,26 @@ Functions</h2></td></tr>
<td class="memname">identity_basic_export </td>
<td>(</td>
<td class="paramtype">&#160;</td>
- <td class="paramname"><em>$channel_id</em></td><td>)</td>
+ <td class="paramname"><em>$channel_id</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">&#160;</td>
+ <td class="paramname"><em>$items</em> = <code>false</code>&#160;</td>
+ </tr>
+ <tr>
<td></td>
+ <td>)</td>
+ <td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
-<p>identity_basic_export($channel_id) Create an array representing the important channel information which would be necessary to create a nomadic identity clone. This includes most channel resources and connection information with the exception of content.</p>
+<p>identity_basic_export($channel_id,$items = false) Create an array representing the important channel information which would be necessary to create a nomadic identity clone. This includes most channel resources and connection information with the exception of content.</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
- <tr><td class="paramtype">int</td><td class="paramname">$channel_id</td><td>Channel_id to export</td></tr>
+ <tr><td class="paramtype">int</td><td class="paramname">$channel_id</td><td>Channel_id to export </td></tr>
+ <tr><td class="paramtype">boolean</td><td class="paramname">$items</td><td>Include channel posts (wall items), default false</td></tr>
</table>
</dd>
</dl>
@@ -498,7 +573,7 @@ Functions</h2></td></tr>
</dl>
<dl class="section return"><dt>Returns</dt><dd>boolean true or false </dd></dl>
-<p>Referenced by <a class="el" href="identity_8php.html#a9637c557e13d9671f3eeb124ab98212a">is_member()</a>.</p>
+<p>Referenced by <a class="el" href="identity_8php.html#a9637c557e13d9671f3eeb124ab98212a">is_member()</a>, and <a class="el" href="text_8php.html#af9c9ac3f74c82dc60acfa404d0e9dc53">theme_attachments()</a>.</p>
</div>
</div>
@@ -557,7 +632,61 @@ Functions</h2></td></tr>
</table>
</div><div class="memdoc">
-<p>Referenced by <a class="el" href="items_8php.html#a004e89d86b0f29b2c4da20108ecc4091">zot_feed()</a>.</p>
+<p>Referenced by <a class="el" href="items_8php.html#a1cf89557f32d5dfbe8bd90448dc1aa92">zot_feed()</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a2e6a1cc35887937823ec7fbb90472afe"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">notifications_off </td>
+ <td>(</td>
+ <td class="paramtype">&#160;</td>
+ <td class="paramname"><em>$channel_id</em></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+<p>notifications_off($channel_id) Clear notifyflags for a channel - most likely during bulk import of content or other activity that is likely to generate huge amounts of undesired notifications. </p>
+<dl class="params"><dt>Parameters</dt><dd>
+ <table class="params">
+ <tr><td class="paramtype">int</td><td class="paramname">$channel_id</td><td>The channel to disable notifications for </td></tr>
+ </table>
+ </dd>
+</dl>
+<dl class="section return"><dt>Returns</dt><dd>int Current notification flag value. Send this to <a class="el" href="identity_8php.html#a5650319c799de09d1b6d1076b6f839a4">notifications_on()</a> to restore the channel settings when finished with the activity requiring <a class="el" href="identity_8php.html#a2e6a1cc35887937823ec7fbb90472afe">notifications_off()</a>; </dd></dl>
+
+<p>Referenced by <a class="el" href="import_8php.html#af17fef0410518f7eac205d0ea416eaa2">import_post()</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a5650319c799de09d1b6d1076b6f839a4"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">notifications_on </td>
+ <td>(</td>
+ <td class="paramtype">&#160;</td>
+ <td class="paramname"><em>$channel_id</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">&#160;</td>
+ <td class="paramname"><em>$value</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p>Referenced by <a class="el" href="import_8php.html#af17fef0410518f7eac205d0ea416eaa2">import_post()</a>.</p>
</div>
</div>
@@ -619,9 +748,9 @@ Functions</h2></td></tr>
<p>: profile_load(&amp;$a, $nickname, $profile) Generate </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
- <tr><td class="paramtype"><a class="el" href="classApp.html">App</a></td><td class="paramname">$a</td><td></td></tr>
+ <tr><td class="paramtype"><a class="el" href="classApp.html" title="Our main application structure for the life of this page.">App</a></td><td class="paramname">$a</td><td></td></tr>
<tr><td class="paramtype">string</td><td class="paramname">$nickname</td><td></td></tr>
- <tr><td class="paramtype">string</td><td class="paramname">$profile</td><td>Summary: Loads a profile into the <a class="el" href="classApp.html">App</a> structure. The function requires a writeable copy of the main <a class="el" href="classApp.html">App</a> structure, and the nickname of a valid channel.</td></tr>
+ <tr><td class="paramtype">string</td><td class="paramname">$profile</td><td>Summary: Loads a profile into the <a class="el" href="classApp.html" title="Our main application structure for the life of this page.">App</a> structure. The function requires a writeable copy of the main <a class="el" href="classApp.html" title="Our main application structure for the life of this page.">App</a> structure, and the nickname of a valid channel.</td></tr>
</table>
</dd>
</dl>
@@ -630,7 +759,7 @@ Functions</h2></td></tr>
<p>The channel default theme is also selected for use, unless over-riden elsewhere. </p>
<p>load/reload current theme info</p>
-<p>Referenced by <a class="el" href="achievements_8php.html#a35ae04ada0e227d19671f289a32fb30e">achievements_content()</a>, <a class="el" href="block_8php.html#a9b61c96044ed2a068f18c10370a78d5c">block_init()</a>, <a class="el" href="blocks_8php.html#a2531a8fd51db3cecb2eb20c002c66e12">blocks_content()</a>, <a class="el" href="channel_8php.html#ac7c8c7845741baadf87fae6bc279f3dc">channel_init()</a>, <a class="el" href="mod_2chat_8php.html#aa9ae4782e9baef0b7314ab9527c2707e">chat_init()</a>, <a class="el" href="cloud_8php.html#a1b79a6fe0454bc76673ad9aef55bf02d">cloud_init()</a>, <a class="el" href="common_8php.html#aca62f113655809f41f49042ce9b123c2">common_init()</a>, <a class="el" href="connect_8php.html#ad46a38f32fd7a3d324b1fa26373efa36">connect_init()</a>, <a class="el" href="layouts_8php.html#a6e0193759ad9eef76d3df2db24237b50">layouts_content()</a>, <a class="el" href="page_8php.html#a4d89800c0366a239191b1692c09635cf">page_init()</a>, <a class="el" href="mod_2photos_8php.html#ab950295cd77626f5fe65331a87693014">photos_init()</a>, <a class="el" href="profile_8php.html#ab5d0246be0552e2182a585c1206d22a5">profile_init()</a>, <a class="el" href="profile__photo_8php.html#a140631c56438fbfacb61a1eb43067d02">profile_photo_init()</a>, <a class="el" href="profiles_8php.html#a36f71405ad536228f8bb84a551b23f7e">profiles_init()</a>, <a class="el" href="profperm_8php.html#a17fb64ec05edee1dc94d95438807d6c6">profperm_init()</a>, <a class="el" href="viewconnections_8php.html#a00163d50b17568f7b0e48b1ca9ab7330">viewconnections_init()</a>, and <a class="el" href="webpages_8php.html#af3b7397d4abc153e3d2147740ee1a41d">webpages_content()</a>.</p>
+<p>Referenced by <a class="el" href="achievements_8php.html#a35ae04ada0e227d19671f289a32fb30e">achievements_content()</a>, <a class="el" href="block_8php.html#a9b61c96044ed2a068f18c10370a78d5c">block_init()</a>, <a class="el" href="blocks_8php.html#aebe88302181883d2b17d6e98a1aaebe9">blocks_init()</a>, <a class="el" href="channel_8php.html#ac7c8c7845741baadf87fae6bc279f3dc">channel_init()</a>, <a class="el" href="mod_2chat_8php.html#aa9ae4782e9baef0b7314ab9527c2707e">chat_init()</a>, <a class="el" href="cloud_8php.html#ad2e96e917852f27dedfc263d37e13756">cloud_init()</a>, <a class="el" href="common_8php.html#aca62f113655809f41f49042ce9b123c2">common_init()</a>, <a class="el" href="connect_8php.html#ad46a38f32fd7a3d324b1fa26373efa36">connect_init()</a>, <a class="el" href="editblock_8php.html#ab7806bb42ae5e93f0330d7bd179d4b3e">editblock_init()</a>, <a class="el" href="editlayout_8php.html#a97c1e93d9e75ad8cd2c2f9a7f77341a7">editlayout_init()</a>, <a class="el" href="editwebpage_8php.html#a94109f9c796fbe92508bf9574e35d19f">editwebpage_init()</a>, <a class="el" href="hcard_8php.html#ac34f26b0e6a37eef44fa49bea135136d">hcard_init()</a>, <a class="el" href="layouts_8php.html#a39c8e9f72641c684c8b689bd91a642fa">layouts_init()</a>, <a class="el" href="page_8php.html#a4d89800c0366a239191b1692c09635cf">page_init()</a>, <a class="el" href="mod_2photos_8php.html#ab950295cd77626f5fe65331a87693014">photos_init()</a>, <a class="el" href="profile_8php.html#ab5d0246be0552e2182a585c1206d22a5">profile_init()</a>, <a class="el" href="profile__photo_8php.html#a140631c56438fbfacb61a1eb43067d02">profile_photo_init()</a>, <a class="el" href="profiles_8php.html#a36f71405ad536228f8bb84a551b23f7e">profiles_init()</a>, <a class="el" href="profiles_8php.html#ab0362c81b1d3b0b12a772b9fac446e04">profiles_post()</a>, <a class="el" href="profperm_8php.html#a17fb64ec05edee1dc94d95438807d6c6">profperm_init()</a>, <a class="el" href="viewconnections_8php.html#a00163d50b17568f7b0e48b1ca9ab7330">viewconnections_init()</a>, and <a class="el" href="webpages_8php.html#af9ad0b65eba79acead3fa32b43d888b7">webpages_init()</a>.</p>
</div>
</div>
@@ -686,8 +815,6 @@ Functions</h2></td></tr>
</table>
</div><div class="memdoc">
-<p>Referenced by <a class="el" href="dirprofile_8php.html#a3e1d30d3d93863ff5615f2df4ac7f052">dirprofile_init()</a>.</p>
-
</div>
</div>
<a class="anchor" id="a78151baf4407a8482d2681a91a9c486b"></a>
@@ -795,7 +922,7 @@ Functions</h2></td></tr>
<dl class="section return"><dt>Returns</dt><dd>string</dd></dl>
<p>'zid' string url - url to accept zid string zid - urlencoded zid string result - the return string we calculated, change it if you want to return something else </p>
-<p>Referenced by <a class="el" href="identity_8php.html#aa870d2c1f558cfd52bef05bc124e8fa4">advanced_profile()</a>, <a class="el" href="include_2apps_8php.html#a1b2e737f477a2e0d9d11ef14adc5aa66">app_render()</a>, <a class="el" href="chanview_8php.html#a4192c6da888c8c1165851acf9ad4cb8b">chanview_content()</a>, <a class="el" href="chatsvc_8php.html#a7032784215e1f6747cf385a6598770f9">chatsvc_content()</a>, <a class="el" href="conversation_8php.html#affea1afb3f32ca41e966c8ddb4204d81">conversation()</a>, <a class="el" href="dirprofile_8php.html#a3e1d30d3d93863ff5615f2df4ac7f052">dirprofile_init()</a>, <a class="el" href="text_8php.html#a3054189cff173977f4216c9a3dd29e1b">format_categories()</a>, <a class="el" href="text_8php.html#a3a0c432a484c17d7720b8ba2d6bfdd59">format_hashtags()</a>, <a class="el" href="text_8php.html#ad8c6e13d6accf057136c5f30a23a5f08">format_mentions()</a>, <a class="el" href="text_8php.html#aac0969ae09853205992ba06ab9f9f61a">get_plink()</a>, <a class="el" href="taxonomy_8php.html#a7747fa859ac56fbffd4f9782d85505de">get_things()</a>, <a class="el" href="conversation_8php.html#a9bd7f9fb6678736c581bcba3b17f471c">localize_item()</a>, <a class="el" href="match_8php.html#a1dd853e959b9e70c1911bb2fb5f5130d">match_content()</a>, <a class="el" href="include_2menu_8php.html#a03a5deed3908543581c074ce333e9d6a">menu_render()</a>, <a class="el" href="include_2follow_8php.html#ae387d4ae097c23d69f3247e7f08140c7">new_contact()</a>, <a class="el" href="include_2oembed_8php.html#a98549b9af8140eda3eceaeedcaabc2c2">oembed_fetch_url()</a>, <a class="el" href="include_2apps_8php.html#a32fe4ed9666228fd4b67dc487cc57a83">parse_app_description()</a>, <a class="el" href="bbcode_8php.html#a39de4de32a9456d1ca914d0dc52bd322">tryzrlaudio()</a>, <a class="el" href="bbcode_8php.html#aa92f119341f4c69dcef2768a013079b8">tryzrlvideo()</a>, <a class="el" href="widgets_8php.html#a0e2f5179ed1a73b282dfda7270fcabb3">widget_bookmarkedchats()</a>, <a class="el" href="widgets_8php.html#a999ba893cac7600d3d3b4e7e14cf8c20">widget_photo()</a>, and <a class="el" href="widgets_8php.html#a50b1410238100c8a94c06b0aa63ee3b8">widget_suggestedchats()</a>.</p>
+<p>Referenced by <a class="el" href="identity_8php.html#aa870d2c1f558cfd52bef05bc124e8fa4">advanced_profile()</a>, <a class="el" href="include_2apps_8php.html#a1b2e737f477a2e0d9d11ef14adc5aa66">app_render()</a>, <a class="el" href="chanview_8php.html#a4192c6da888c8c1165851acf9ad4cb8b">chanview_content()</a>, <a class="el" href="chatsvc_8php.html#a7032784215e1f6747cf385a6598770f9">chatsvc_content()</a>, <a class="el" href="conversation_8php.html#affea1afb3f32ca41e966c8ddb4204d81">conversation()</a>, <a class="el" href="text_8php.html#a3054189cff173977f4216c9a3dd29e1b">format_categories()</a>, <a class="el" href="text_8php.html#a3a0c432a484c17d7720b8ba2d6bfdd59">format_hashtags()</a>, <a class="el" href="text_8php.html#ad8c6e13d6accf057136c5f30a23a5f08">format_mentions()</a>, <a class="el" href="text_8php.html#aac0969ae09853205992ba06ab9f9f61a">get_plink()</a>, <a class="el" href="taxonomy_8php.html#a7747fa859ac56fbffd4f9782d85505de">get_things()</a>, <a class="el" href="conversation_8php.html#a9bd7f9fb6678736c581bcba3b17f471c">localize_item()</a>, <a class="el" href="match_8php.html#a1dd853e959b9e70c1911bb2fb5f5130d">match_content()</a>, <a class="el" href="include_2menu_8php.html#a03a5deed3908543581c074ce333e9d6a">menu_render()</a>, <a class="el" href="include_2follow_8php.html#ae387d4ae097c23d69f3247e7f08140c7">new_contact()</a>, <a class="el" href="include_2oembed_8php.html#a98549b9af8140eda3eceaeedcaabc2c2">oembed_fetch_url()</a>, <a class="el" href="include_2apps_8php.html#a32fe4ed9666228fd4b67dc487cc57a83">parse_app_description()</a>, <a class="el" href="bbcode_8php.html#a39de4de32a9456d1ca914d0dc52bd322">tryzrlaudio()</a>, <a class="el" href="bbcode_8php.html#aa92f119341f4c69dcef2768a013079b8">tryzrlvideo()</a>, <a class="el" href="widgets_8php.html#a0e2f5179ed1a73b282dfda7270fcabb3">widget_bookmarkedchats()</a>, <a class="el" href="widgets_8php.html#a999ba893cac7600d3d3b4e7e14cf8c20">widget_photo()</a>, <a class="el" href="widgets_8php.html#af8eb466ef91d9e96e13335ead5eba380">widget_photo_rand()</a>, and <a class="el" href="widgets_8php.html#a50b1410238100c8a94c06b0aa63ee3b8">widget_suggestedchats()</a>.</p>
</div>
</div>
diff --git a/doc/html/identity_8php.js b/doc/html/identity_8php.js
index 7c1f1ac18..92b4f2c38 100644
--- a/doc/html/identity_8php.js
+++ b/doc/html/identity_8php.js
@@ -6,20 +6,25 @@ var identity_8php =
[ "create_sys_channel", "identity_8php.html#a1cf83ac2b645de12868edaa3a5718f05", null ],
[ "get_birthdays", "identity_8php.html#ad2c97627a313d53df1a1c7b4215ddb51", null ],
[ "get_channel_by_nick", "identity_8php.html#ac73b3e13778c564c877554517a7f51ba", null ],
+ [ "get_channel_default_perms", "identity_8php.html#a293f416ce9050220b183e08ff5890216", null ],
[ "get_default_profile_photo", "identity_8php.html#ab1485a26b032956e1496fc08c58b83ed", null ],
[ "get_events", "identity_8php.html#ae381db3d43f8e7c1da8b15d14ecf5312", null ],
[ "get_my_address", "identity_8php.html#a490972c02fdb638c52ec0e012a30bfd2", null ],
[ "get_my_url", "identity_8php.html#aa46321e1cd6a3b8dfde8bf9510112fec", null ],
[ "get_online_status", "identity_8php.html#a332df795f684788002f5a6424abacfd7", null ],
+ [ "get_profile_fields_advanced", "identity_8php.html#a224710dfb7465b706c91134247c20afa", null ],
+ [ "get_profile_fields_basic", "identity_8php.html#a4ff59df0f0a668a06a8411f87496aa21", null ],
[ "get_sys_channel", "identity_8php.html#aaff86ee3b5984821e7a256c2da5f1a51", null ],
[ "get_theme_uid", "identity_8php.html#aaeb666872995e3ab8da8f7bc5f3b2bd3", null ],
- [ "identity_basic_export", "identity_8php.html#a3570a4eb77332b292d394c4132cb8f03", null ],
+ [ "identity_basic_export", "identity_8php.html#afaedbc8e2d2a70ec8b006162baac5249", null ],
[ "identity_check_service_class", "identity_8php.html#ac9fcd5c4c371998790b5c55c3d0f4633", null ],
[ "identity_selector", "identity_8php.html#a2ab5172eabd375869060c9ad68323f5c", null ],
[ "is_foreigner", "identity_8php.html#ae2b140df652a55ca11bb6a99005fce35", null ],
[ "is_member", "identity_8php.html#a9637c557e13d9671f3eeb124ab98212a", null ],
[ "is_public_profile", "identity_8php.html#a4e996e44b50330098a04b467367a559f", null ],
[ "is_sys_channel", "identity_8php.html#aa4bd4abfcba883f43919e89ec6419025", null ],
+ [ "notifications_off", "identity_8php.html#a2e6a1cc35887937823ec7fbb90472afe", null ],
+ [ "notifications_on", "identity_8php.html#a5650319c799de09d1b6d1076b6f839a4", null ],
[ "profile_create_sidebar", "identity_8php.html#ad4a2c8caca8f6ae93633ebeca0ed6620", null ],
[ "profile_load", "identity_8php.html#a4751b522ea913d0e7ed43e03d22e9e68", null ],
[ "profile_sidebar", "identity_8php.html#a432259b2cf5b6f59be53e71db9f2c7dc", null ],
diff --git a/doc/html/impel_8php.html b/doc/html/impel_8php.html
new file mode 100644
index 000000000..1a35a56cf
--- /dev/null
+++ b/doc/html/impel_8php.html
@@ -0,0 +1,137 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<meta name="generator" content="Doxygen 1.8.3.1"/>
+<title>The Red Matrix: mod/impel.php File Reference</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="navtree.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="resize.js"></script>
+<script type="text/javascript" src="navtree.js"></script>
+<script type="text/javascript">
+ $(document).ready(initResizable);
+ $(window).load(resizeHeight);
+</script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/search.js"></script>
+<script type="text/javascript">
+ $(document).ready(function() { searchBox.OnSelectItem(0); });
+</script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+ <td id="projectlogo"><img alt="Logo" src="rm-64.png"/></td>
+ <td style="padding-left: 0.5em;">
+ <div id="projectname">The Red Matrix
+ </div>
+ </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.8.3.1 -->
+<script type="text/javascript">
+var searchBox = new SearchBox("searchBox", "search",false,'Search');
+</script>
+ <div id="navrow1" class="tabs">
+ <ul class="tablist">
+ <li><a href="index.html"><span>Main&#160;Page</span></a></li>
+ <li><a href="pages.html"><span>Related&#160;Pages</span></a></li>
+ <li><a href="namespaces.html"><span>Namespaces</span></a></li>
+ <li><a href="annotated.html"><span>Classes</span></a></li>
+ <li class="current"><a href="files.html"><span>Files</span></a></li>
+ <li>
+ <div id="MSearchBox" class="MSearchBoxInactive">
+ <span class="left">
+ <img id="MSearchSelect" src="search/mag_sel.png"
+ onmouseover="return searchBox.OnSearchSelectShow()"
+ onmouseout="return searchBox.OnSearchSelectHide()"
+ alt=""/>
+ <input type="text" id="MSearchField" value="Search" accesskey="S"
+ onfocus="searchBox.OnSearchFieldFocus(true)"
+ onblur="searchBox.OnSearchFieldFocus(false)"
+ onkeyup="searchBox.OnSearchFieldChange(event)"/>
+ </span><span class="right">
+ <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
+ </span>
+ </div>
+ </li>
+ </ul>
+ </div>
+ <div id="navrow2" class="tabs2">
+ <ul class="tablist">
+ <li><a href="files.html"><span>File&#160;List</span></a></li>
+ <li><a href="globals.html"><span>File&#160;Members</span></a></li>
+ </ul>
+ </div>
+</div><!-- top -->
+<div id="side-nav" class="ui-resizable side-nav-resizable">
+ <div id="nav-tree">
+ <div id="nav-tree-contents">
+ <div id="nav-sync" class="sync"></div>
+ </div>
+ </div>
+ <div id="splitbar" style="-moz-user-select:none;"
+ class="ui-resizable-handle">
+ </div>
+</div>
+<script type="text/javascript">
+$(document).ready(function(){initNavTree('impel_8php.html','');});
+</script>
+<div id="doc-content">
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+ onmouseover="return searchBox.OnSearchSelectShow()"
+ onmouseout="return searchBox.OnSearchSelectHide()"
+ onkeydown="return searchBox.OnSearchSelectKey(event)">
+<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark">&#160;</span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark">&#160;</span>Classes</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark">&#160;</span>Namespaces</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark">&#160;</span>Files</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark">&#160;</span>Functions</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark">&#160;</span>Variables</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark">&#160;</span>Pages</a></div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<iframe src="javascript:void(0)" frameborder="0"
+ name="MSearchResults" id="MSearchResults">
+</iframe>
+</div>
+
+<div class="header">
+ <div class="summary">
+<a href="#func-members">Functions</a> </div>
+ <div class="headertitle">
+<div class="title">impel.php File Reference</div> </div>
+</div><!--header-->
+<div class="contents">
+<table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="func-members"></a>
+Functions</h2></td></tr>
+<tr class="memitem:ab7db6fca43b42ea4332cb3e841b3cf7b"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="impel_8php.html#ab7db6fca43b42ea4332cb3e841b3cf7b">impel_init</a> (&amp;$a)</td></tr>
+<tr class="separator:ab7db6fca43b42ea4332cb3e841b3cf7b"><td class="memSeparator" colspan="2">&#160;</td></tr>
+</table>
+<h2 class="groupheader">Function Documentation</h2>
+<a class="anchor" id="ab7db6fca43b42ea4332cb3e841b3cf7b"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">impel_init </td>
+ <td>(</td>
+ <td class="paramtype">&amp;&#160;</td>
+ <td class="paramname"><em>$a</em></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+</div>
+</div>
+</div><!-- contents -->
+</div><!-- doc-content -->
+
diff --git a/doc/html/impel_8php.js b/doc/html/impel_8php.js
new file mode 100644
index 000000000..fdd6ebee7
--- /dev/null
+++ b/doc/html/impel_8php.js
@@ -0,0 +1,4 @@
+var impel_8php =
+[
+ [ "impel_init", "impel_8php.html#ab7db6fca43b42ea4332cb3e841b3cf7b", null ]
+]; \ No newline at end of file
diff --git a/doc/html/include_2api_8php.html b/doc/html/include_2api_8php.html
index 2491ddee0..2347d75af 100644
--- a/doc/html/include_2api_8php.html
+++ b/doc/html/include_2api_8php.html
@@ -145,6 +145,12 @@ Functions</h2></td></tr>
<tr class="separator:aa9dc5350b26d6c7727d6c4b641ecba18"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aa6fc3bc8c0fad1d081db0dcc456dd77f"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="include_2api_8php.html#aa6fc3bc8c0fad1d081db0dcc456dd77f">api_photos</a> (&amp;$a, $type)</td></tr>
<tr class="separator:aa6fc3bc8c0fad1d081db0dcc456dd77f"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ae46f964e5a9c80b96dc78df61c09ed3a"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="include_2api_8php.html#ae46f964e5a9c80b96dc78df61c09ed3a">api_group_members</a> (&amp;$a, $type)</td></tr>
+<tr class="separator:ae46f964e5a9c80b96dc78df61c09ed3a"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ad5fe62d6c25c86999f627b2e6cfde536"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="include_2api_8php.html#ad5fe62d6c25c86999f627b2e6cfde536">api_group</a> (&amp;$a, $type)</td></tr>
+<tr class="separator:ad5fe62d6c25c86999f627b2e6cfde536"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a4fe872332ff0bd8d5eae2f0c6819cb60"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="include_2api_8php.html#a4fe872332ff0bd8d5eae2f0c6819cb60">api_red_xchan</a> (&amp;$a, $type)</td></tr>
+<tr class="separator:a4fe872332ff0bd8d5eae2f0c6819cb60"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a450d8732b7b608f7ac929aee61572b95"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="include_2api_8php.html#a450d8732b7b608f7ac929aee61572b95">api_statuses_mediap</a> (&amp;$a, $type)</td></tr>
<tr class="separator:a450d8732b7b608f7ac929aee61572b95"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ad4d1634df6b35126552324683caaffa2"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="include_2api_8php.html#ad4d1634df6b35126552324683caaffa2">api_statuses_update</a> (&amp;$a, $type)</td></tr>
@@ -879,6 +885,58 @@ Variables</h2></td></tr>
</div>
</div>
+<a class="anchor" id="ad5fe62d6c25c86999f627b2e6cfde536"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">api_group </td>
+ <td>(</td>
+ <td class="paramtype">&amp;&#160;</td>
+ <td class="paramname"><em>$a</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">&#160;</td>
+ <td class="paramname"><em>$type</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+</div>
+</div>
+<a class="anchor" id="ae46f964e5a9c80b96dc78df61c09ed3a"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">api_group_members </td>
+ <td>(</td>
+ <td class="paramtype">&amp;&#160;</td>
+ <td class="paramname"><em>$a</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">&#160;</td>
+ <td class="paramname"><em>$type</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+</div>
+</div>
<a class="anchor" id="ac5a64cc81d70ff3cf866093ea9721d23"></a>
<div class="memitem">
<div class="memproto">
@@ -1030,6 +1088,32 @@ Variables</h2></td></tr>
</div>
</div>
+<a class="anchor" id="a4fe872332ff0bd8d5eae2f0c6819cb60"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">api_red_xchan </td>
+ <td>(</td>
+ <td class="paramtype">&amp;&#160;</td>
+ <td class="paramname"><em>$a</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">&#160;</td>
+ <td class="paramname"><em>$type</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+</div>
+</div>
<a class="anchor" id="ac2c2b18c426d697d11a830bca146be8a"></a>
<div class="memitem">
<div class="memproto">
@@ -1514,7 +1598,7 @@ Variables</h2></td></tr>
</table>
</div><div class="memdoc">
-<p>Referenced by <a class="el" href="include_2api_8php.html#a864191bb876a515ed71b17e260ef35ad">api_account_verify_credentials()</a>, <a class="el" href="include_2api_8php.html#a176c448d79c211ad41c2bbe3124658f5">api_call()</a>, <a class="el" href="include_2api_8php.html#a72bfecac1970bc29b853073e816388ff">api_channel_stream()</a>, <a class="el" href="include_2api_8php.html#a7759ccddc8dff012ad168e511ffe5af5">api_direct_messages_box()</a>, <a class="el" href="include_2api_8php.html#a0991f72554f821255397d615e76f3203">api_direct_messages_new()</a>, <a class="el" href="include_2api_8php.html#adfc035ee6303c1d8ba5336a4ead2bd53">api_export_basic()</a>, <a class="el" href="include_2api_8php.html#a2c71b1226ef1283b5370bd1c200fee5f">api_favorites()</a>, <a class="el" href="include_2api_8php.html#a36344c80b8e9755da2f2dd3a0e28cce8">api_ff_ids()</a>, <a class="el" href="include_2api_8php.html#aa40bae797bcd9ccacffdce5a3b5a1afa">api_get_user()</a>, <a class="el" href="include_2api_8php.html#ad4c29f43418f6110f85a6b3998239ab4">api_statuses_destroy()</a>, <a class="el" href="include_2api_8php.html#aa0d6b29fff0344a8e67f3507a6d01410">api_statuses_f()</a>, <a class="el" href="include_2api_8php.html#a528d8070ee74ea800102936ce73cf366">api_statuses_home_timeline()</a>, <a class="el" href="include_2api_8php.html#a450d8732b7b608f7ac929aee61572b95">api_statuses_mediap()</a>, <a class="el" href="include_2api_8php.html#a8b25a186bd0893f51aa72a62f655735e">api_statuses_mentions()</a>, <a class="el" href="include_2api_8php.html#ad24ce1bf20867add4c9211a8eaf93f22">api_statuses_public_timeline()</a>, <a class="el" href="include_2api_8php.html#ae0fa388479cace9c5a7a45b571ab42f8">api_statuses_repeat()</a>, <a class="el" href="include_2api_8php.html#af6f1d89cdb0a0621025efbec1597bc63">api_statuses_show()</a>, <a class="el" href="include_2api_8php.html#ad4d1634df6b35126552324683caaffa2">api_statuses_update()</a>, <a class="el" href="include_2api_8php.html#a32f0dda848d0c11c727fe1c3e741c283">api_statuses_user_timeline()</a>, and <a class="el" href="include_2api_8php.html#aafa82b65a9f879a1a1197cfe8aaf3898">red_item_new()</a>.</p>
+<p>Referenced by <a class="el" href="include_2api_8php.html#a864191bb876a515ed71b17e260ef35ad">api_account_verify_credentials()</a>, <a class="el" href="include_2api_8php.html#a176c448d79c211ad41c2bbe3124658f5">api_call()</a>, <a class="el" href="include_2api_8php.html#a72bfecac1970bc29b853073e816388ff">api_channel_stream()</a>, <a class="el" href="include_2api_8php.html#a7759ccddc8dff012ad168e511ffe5af5">api_direct_messages_box()</a>, <a class="el" href="include_2api_8php.html#a0991f72554f821255397d615e76f3203">api_direct_messages_new()</a>, <a class="el" href="include_2api_8php.html#adfc035ee6303c1d8ba5336a4ead2bd53">api_export_basic()</a>, <a class="el" href="include_2api_8php.html#a2c71b1226ef1283b5370bd1c200fee5f">api_favorites()</a>, <a class="el" href="include_2api_8php.html#a36344c80b8e9755da2f2dd3a0e28cce8">api_ff_ids()</a>, <a class="el" href="include_2api_8php.html#aa40bae797bcd9ccacffdce5a3b5a1afa">api_get_user()</a>, <a class="el" href="include_2api_8php.html#ad5fe62d6c25c86999f627b2e6cfde536">api_group()</a>, <a class="el" href="include_2api_8php.html#ae46f964e5a9c80b96dc78df61c09ed3a">api_group_members()</a>, <a class="el" href="include_2api_8php.html#a4fe872332ff0bd8d5eae2f0c6819cb60">api_red_xchan()</a>, <a class="el" href="include_2api_8php.html#ad4c29f43418f6110f85a6b3998239ab4">api_statuses_destroy()</a>, <a class="el" href="include_2api_8php.html#aa0d6b29fff0344a8e67f3507a6d01410">api_statuses_f()</a>, <a class="el" href="include_2api_8php.html#a528d8070ee74ea800102936ce73cf366">api_statuses_home_timeline()</a>, <a class="el" href="include_2api_8php.html#a450d8732b7b608f7ac929aee61572b95">api_statuses_mediap()</a>, <a class="el" href="include_2api_8php.html#a8b25a186bd0893f51aa72a62f655735e">api_statuses_mentions()</a>, <a class="el" href="include_2api_8php.html#ad24ce1bf20867add4c9211a8eaf93f22">api_statuses_public_timeline()</a>, <a class="el" href="include_2api_8php.html#ae0fa388479cace9c5a7a45b571ab42f8">api_statuses_repeat()</a>, <a class="el" href="include_2api_8php.html#af6f1d89cdb0a0621025efbec1597bc63">api_statuses_show()</a>, <a class="el" href="include_2api_8php.html#ad4d1634df6b35126552324683caaffa2">api_statuses_update()</a>, <a class="el" href="include_2api_8php.html#a32f0dda848d0c11c727fe1c3e741c283">api_statuses_user_timeline()</a>, and <a class="el" href="include_2api_8php.html#aafa82b65a9f879a1a1197cfe8aaf3898">red_item_new()</a>.</p>
</div>
</div>
diff --git a/doc/html/include_2api_8php.js b/doc/html/include_2api_8php.js
index 6a699f1fa..6e8ba125d 100644
--- a/doc/html/include_2api_8php.js
+++ b/doc/html/include_2api_8php.js
@@ -24,12 +24,15 @@ var include_2api_8php =
[ "api_friendica_version", "include_2api_8php.html#a53b0680b682ae6078f2e1ed18cfb3f74", null ],
[ "api_friends_ids", "include_2api_8php.html#acafd2899309a005fcb725289173dc7fe", null ],
[ "api_get_user", "include_2api_8php.html#aa40bae797bcd9ccacffdce5a3b5a1afa", null ],
+ [ "api_group", "include_2api_8php.html#ad5fe62d6c25c86999f627b2e6cfde536", null ],
+ [ "api_group_members", "include_2api_8php.html#ae46f964e5a9c80b96dc78df61c09ed3a", null ],
[ "api_help_test", "include_2api_8php.html#ac5a64cc81d70ff3cf866093ea9721d23", null ],
[ "api_item_get_user", "include_2api_8php.html#aa49741342ad8ba285737eea1209a37e1", null ],
[ "api_login", "include_2api_8php.html#afe534f826e4282b72d66e8cadca7bb73", null ],
[ "api_oauth_access_token", "include_2api_8php.html#aff322705cc6084b329003fc8eab0aad0", null ],
[ "api_oauth_request_token", "include_2api_8php.html#aa1bddb580510e70cc1a7b7381667f1a3", null ],
[ "api_photos", "include_2api_8php.html#aa6fc3bc8c0fad1d081db0dcc456dd77f", null ],
+ [ "api_red_xchan", "include_2api_8php.html#a4fe872332ff0bd8d5eae2f0c6819cb60", null ],
[ "api_register_func", "include_2api_8php.html#ac2c2b18c426d697d11a830bca146be8a", null ],
[ "api_rss_extra", "include_2api_8php.html#a6a04b48168ba1d9dd2de3081a630611f", null ],
[ "api_status_show", "include_2api_8php.html#a645397787618b5c548a31e8686e8cca4", null ],
diff --git a/doc/html/include_2attach_8php.html b/doc/html/include_2attach_8php.html
index 8cfed4f91..22833ea99 100644
--- a/doc/html/include_2attach_8php.html
+++ b/doc/html/include_2attach_8php.html
@@ -141,7 +141,7 @@ Functions</h2></td></tr>
<tr class="memdesc:a5c0875eafb8c0f8a0620ff7a875a2221"><td class="mdescLeft">&#160;</td><td class="mdescRight">Changes permissions of a file. <a href="#a5c0875eafb8c0f8a0620ff7a875a2221">More...</a><br/></td></tr>
<tr class="separator:a5c0875eafb8c0f8a0620ff7a875a2221"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a70bd666e080c2af5a91f5d14c297b8cd"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="include_2attach_8php.html#a70bd666e080c2af5a91f5d14c297b8cd">attach_delete</a> ($channel_id, $resource)</td></tr>
-<tr class="memdesc:a70bd666e080c2af5a91f5d14c297b8cd"><td class="mdescLeft">&#160;</td><td class="mdescRight">Delete a file/directory. <a href="#a70bd666e080c2af5a91f5d14c297b8cd">More...</a><br/></td></tr>
+<tr class="memdesc:a70bd666e080c2af5a91f5d14c297b8cd"><td class="mdescLeft">&#160;</td><td class="mdescRight">Delete a file/directory from a channel. <a href="#a70bd666e080c2af5a91f5d14c297b8cd">More...</a><br/></td></tr>
<tr class="separator:a70bd666e080c2af5a91f5d14c297b8cd"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a6aa00ea010ea030110faefb75eafc1ce"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="include_2attach_8php.html#a6aa00ea010ea030110faefb75eafc1ce">get_cloudpath</a> ($arr)</td></tr>
<tr class="memdesc:a6aa00ea010ea030110faefb75eafc1ce"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns path to file in cloud/. <a href="#a6aa00ea010ea030110faefb75eafc1ce">More...</a><br/></td></tr>
@@ -150,8 +150,10 @@ Functions</h2></td></tr>
<tr class="memdesc:a1d72ef7cb940f6868e3e2a841cadfe8f"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns path to parent folder in cloud/. <a href="#a1d72ef7cb940f6868e3e2a841cadfe8f">More...</a><br/></td></tr>
<tr class="separator:a1d72ef7cb940f6868e3e2a841cadfe8f"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a052f14487ff2ce72f62a09fac8d7e997"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="include_2attach_8php.html#a052f14487ff2ce72f62a09fac8d7e997">find_folder_hash_by_attach_hash</a> ($channel_id, $attachHash)</td></tr>
+<tr class="memdesc:a052f14487ff2ce72f62a09fac8d7e997"><td class="mdescLeft">&#160;</td><td class="mdescRight">Return the hash of an attachment's folder. <a href="#a052f14487ff2ce72f62a09fac8d7e997">More...</a><br/></td></tr>
<tr class="separator:a052f14487ff2ce72f62a09fac8d7e997"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a4dbfd7e1cef52aa9ef52f4b88929fa86"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="include_2attach_8php.html#a4dbfd7e1cef52aa9ef52f4b88929fa86">find_filename_by_hash</a> ($channel_id, $attachHash)</td></tr>
+<tr class="memdesc:a4dbfd7e1cef52aa9ef52f4b88929fa86"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the filename of an attachment in a given channel. <a href="#a4dbfd7e1cef52aa9ef52f4b88929fa86">More...</a><br/></td></tr>
<tr class="separator:a4dbfd7e1cef52aa9ef52f4b88929fa86"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a5d484de2d19a93071571d6499a50ae34"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="include_2attach_8php.html#a5d484de2d19a93071571d6499a50ae34">pipe_streams</a> ($in, $out)</td></tr>
<tr class="separator:a5d484de2d19a93071571d6499a50ae34"><td class="memSeparator" colspan="2">&#160;</td></tr>
@@ -391,16 +393,18 @@ Functions</h2></td></tr>
</table>
</div><div class="memdoc">
-<p>Delete a file/directory. </p>
+<p>Delete a file/directory from a channel. </p>
+<p>If the provided resource hash is from a directory it will delete everything recursively under this directory.</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
- <tr><td class="paramtype">int</td><td class="paramname">$channel_id</td><td></td></tr>
- <tr><td class="paramtype">string</td><td class="paramname">$resource</td><td>a hash to delete </td></tr>
+ <tr><td class="paramtype">int</td><td class="paramname">$channel_id</td><td>The id of the channel </td></tr>
+ <tr><td class="paramtype">string</td><td class="paramname">$resource</td><td>The hash to delete </td></tr>
</table>
</dd>
</dl>
+<dl class="section return"><dt>Returns</dt><dd>void </dd></dl>
-<p>Referenced by <a class="el" href="classRedDirectory.html#a2d12d99d38a6a75fc9a830b2f7fc0bf0">RedDirectory\createFile()</a>, <a class="el" href="classRedFile.html#aef71c9eaac7052be7dc8602eb12171e7">RedFile\delete()</a>, <a class="el" href="filestorage_8php.html#a61bb1be78472555df4ce619f51014040">filestorage_content()</a>, and <a class="el" href="classRedFile.html#a41a49a583eb276b75626fcf97f4a699c">RedFile\put()</a>.</p>
+<p>Referenced by <a class="el" href="classRedMatrix_1_1RedDAV_1_1RedDirectory.html#a58e750256cdc2f0f79fbe8d5463ffefe">RedMatrix\RedDAV\RedDirectory\createFile()</a>, <a class="el" href="classRedMatrix_1_1RedDAV_1_1RedFile.html#ab7ab7ba81fab28eb02382cfdfd80ecfe">RedMatrix\RedDAV\RedFile\delete()</a>, <a class="el" href="filestorage_8php.html#a61bb1be78472555df4ce619f51014040">filestorage_content()</a>, and <a class="el" href="classRedMatrix_1_1RedDAV_1_1RedFile.html#a709ec1288d21ddf1353524435ab916f0">RedMatrix\RedDAV\RedFile\put()</a>.</p>
</div>
</div>
@@ -523,7 +527,7 @@ Functions</h2></td></tr>
</dd>
</dl>
-<p>Referenced by <a class="el" href="classRedDirectory.html#a986936910f0216887a25e28916c166c7">RedDirectory\createDirectory()</a>.</p>
+<p>Referenced by <a class="el" href="classRedMatrix_1_1RedDAV_1_1RedDirectory.html#aca0e8d574ea66a0e210f571700663c62">RedMatrix\RedDAV\RedDirectory\createDirectory()</a>.</p>
</div>
</div>
@@ -600,6 +604,16 @@ Functions</h2></td></tr>
</table>
</div><div class="memdoc">
+<p>Returns the filename of an attachment in a given channel. </p>
+<dl class="params"><dt>Parameters</dt><dd>
+ <table class="params">
+ <tr><td class="paramtype">mixed</td><td class="paramname">$channel_id</td><td>The id of the channel </td></tr>
+ <tr><td class="paramtype">mixed</td><td class="paramname">$attachHash</td><td>The hash of the attachment </td></tr>
+ </table>
+ </dd>
+</dl>
+<dl class="section return"><dt>Returns</dt><dd>string The filename of the attachment </dd></dl>
+
<p>Referenced by <a class="el" href="include_2attach_8php.html#a1d72ef7cb940f6868e3e2a841cadfe8f">get_parent_cloudpath()</a>.</p>
</div>
@@ -628,6 +642,16 @@ Functions</h2></td></tr>
</table>
</div><div class="memdoc">
+<p>Return the hash of an attachment's folder. </p>
+<dl class="params"><dt>Parameters</dt><dd>
+ <table class="params">
+ <tr><td class="paramtype">int</td><td class="paramname">$channel_id</td><td>The id of the channel </td></tr>
+ <tr><td class="paramtype">string</td><td class="paramname">$attachHash</td><td>The hash of the attachment </td></tr>
+ </table>
+ </dd>
+</dl>
+<dl class="section return"><dt>Returns</dt><dd>string </dd></dl>
+
<p>Referenced by <a class="el" href="include_2attach_8php.html#a1d72ef7cb940f6868e3e2a841cadfe8f">get_parent_cloudpath()</a>.</p>
</div>
@@ -649,11 +673,11 @@ Functions</h2></td></tr>
<p>Returns path to file in cloud/. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
- <tr><td class="paramname">$arr</td><td></td></tr>
+ <tr><td class="paramtype">array</td><td class="paramname">$arr,[uid]</td><td>int the channels uid $arr[folder] string $arr[filename]] string </td></tr>
</table>
</dd>
</dl>
-<dl class="section return"><dt>Returns</dt><dd>string with the path the file to cloud/ </dd></dl>
+<dl class="section return"><dt>Returns</dt><dd>string path to the file in cloud/ </dd></dl>
<p>Referenced by <a class="el" href="filestorage_8php.html#a61bb1be78472555df4ce619f51014040">filestorage_content()</a>.</p>
@@ -692,11 +716,13 @@ Functions</h2></td></tr>
<p>Returns path to parent folder in cloud/. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
- <tr><td class="paramname">$arr</td><td></td></tr>
+ <tr><td class="paramtype">int</td><td class="paramname">$channel_id</td><td>The id of the channel </td></tr>
+ <tr><td class="paramtype">string</td><td class="paramname">$channel_name</td><td>The name of the channel </td></tr>
+ <tr><td class="paramtype">string</td><td class="paramname">$attachHash</td><td></td></tr>
</table>
</dd>
</dl>
-<dl class="section return"><dt>Returns</dt><dd>string with the folder path </dd></dl>
+<dl class="section return"><dt>Returns</dt><dd>string with the full folder path </dd></dl>
<p>Referenced by <a class="el" href="filestorage_8php.html#a61bb1be78472555df4ce619f51014040">filestorage_content()</a>, and <a class="el" href="filestorage_8php.html#ad3b64e3ece9831f9d3a9f00c0ae983cd">filestorage_post()</a>.</p>
@@ -761,7 +787,7 @@ Functions</h2></td></tr>
</dl>
<dl class="section return"><dt>Returns</dt><dd>string The mimetype according to a file ending. </dd></dl>
-<p>Referenced by <a class="el" href="include_2attach_8php.html#a84a8a64c4805e1525b42d4add464833f">attach_store()</a>, and <a class="el" href="classRedDirectory.html#a2d12d99d38a6a75fc9a830b2f7fc0bf0">RedDirectory\createFile()</a>.</p>
+<p>Referenced by <a class="el" href="include_2attach_8php.html#a84a8a64c4805e1525b42d4add464833f">attach_store()</a>, and <a class="el" href="classRedMatrix_1_1RedDAV_1_1RedDirectory.html#a58e750256cdc2f0f79fbe8d5463ffefe">RedMatrix\RedDAV\RedDirectory\createFile()</a>.</p>
</div>
</div>
diff --git a/doc/html/include_2chat_8php.html b/doc/html/include_2chat_8php.html
index 8d38b7e76..cadccebf3 100644
--- a/doc/html/include_2chat_8php.html
+++ b/doc/html/include_2chat_8php.html
@@ -122,6 +122,8 @@ Functions</h2></td></tr>
<tr class="separator:a1ee1360f7d2549c7549ae07cb5190f0f"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aedcb532a0627b8644001a2fadab4e87a"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="include_2chat_8php.html#aedcb532a0627b8644001a2fadab4e87a">chatroom_list</a> ($uid)</td></tr>
<tr class="separator:aedcb532a0627b8644001a2fadab4e87a"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a26abdccc2a278a59899896dbbfc6f049"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="include_2chat_8php.html#a26abdccc2a278a59899896dbbfc6f049">chatroom_list_count</a> ($uid)</td></tr>
+<tr class="separator:a26abdccc2a278a59899896dbbfc6f049"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:acea6b176eb7aff44d9ba3ae24ce511d3"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="include_2chat_8php.html#acea6b176eb7aff44d9ba3ae24ce511d3">chat_message</a> ($uid, $room_id, $xchan, $text)</td></tr>
<tr class="separator:acea6b176eb7aff44d9ba3ae24ce511d3"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
@@ -309,7 +311,25 @@ Functions</h2></td></tr>
</table>
</div><div class="memdoc">
-<p>Referenced by <a class="el" href="nav_8php.html#a43be0df73b90647ea70947ce004e231e">nav()</a>, and <a class="el" href="widgets_8php.html#a47c72aac42058ea086c9ef8651c259da">widget_chatroom_list()</a>.</p>
+<p>Referenced by <a class="el" href="widgets_8php.html#a47c72aac42058ea086c9ef8651c259da">widget_chatroom_list()</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a26abdccc2a278a59899896dbbfc6f049"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">chatroom_list_count </td>
+ <td>(</td>
+ <td class="paramtype">&#160;</td>
+ <td class="paramname"><em>$uid</em></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p>Referenced by <a class="el" href="nav_8php.html#a43be0df73b90647ea70947ce004e231e">nav()</a>.</p>
</div>
</div>
diff --git a/doc/html/include_2chat_8php.js b/doc/html/include_2chat_8php.js
index db3011fcf..176f640cb 100644
--- a/doc/html/include_2chat_8php.js
+++ b/doc/html/include_2chat_8php.js
@@ -5,5 +5,6 @@ var include_2chat_8php =
[ "chatroom_destroy", "include_2chat_8php.html#a2ba3af6884ecdce95de69262fe599639", null ],
[ "chatroom_enter", "include_2chat_8php.html#a2c95b545e46bfee64faa05ecf0afea91", null ],
[ "chatroom_leave", "include_2chat_8php.html#a1ee1360f7d2549c7549ae07cb5190f0f", null ],
- [ "chatroom_list", "include_2chat_8php.html#aedcb532a0627b8644001a2fadab4e87a", null ]
+ [ "chatroom_list", "include_2chat_8php.html#aedcb532a0627b8644001a2fadab4e87a", null ],
+ [ "chatroom_list_count", "include_2chat_8php.html#a26abdccc2a278a59899896dbbfc6f049", null ]
]; \ No newline at end of file
diff --git a/doc/html/include_2config_8php.html b/doc/html/include_2config_8php.html
index b63261e8e..a965b5ee5 100644
--- a/doc/html/include_2config_8php.html
+++ b/doc/html/include_2config_8php.html
@@ -109,37 +109,72 @@ $(document).ready(function(){initNavTree('include_2config_8php.html','');});
<div class="title">config.php File Reference</div> </div>
</div><!--header-->
<div class="contents">
+
+<p>Arbitrary configuration storage.
+<a href="#details">More...</a></p>
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="func-members"></a>
Functions</h2></td></tr>
<tr class="memitem:a27559f388c9b9af81c94e48d6889d1d1"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="include_2config_8php.html#a27559f388c9b9af81c94e48d6889d1d1">load_config</a> ($family)</td></tr>
+<tr class="memdesc:a27559f388c9b9af81c94e48d6889d1d1"><td class="mdescLeft">&#160;</td><td class="mdescRight">Loads the hub's configuration from database to a cached storage. <a href="#a27559f388c9b9af81c94e48d6889d1d1">More...</a><br/></td></tr>
<tr class="separator:a27559f388c9b9af81c94e48d6889d1d1"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:af02c96e6b37335774b548914ede1d22e"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="include_2config_8php.html#af02c96e6b37335774b548914ede1d22e">get_config</a> ($family, $key)</td></tr>
+<tr class="memdesc:af02c96e6b37335774b548914ede1d22e"><td class="mdescLeft">&#160;</td><td class="mdescRight">Get a particular config variable given the category name ($family) and a key. <a href="#af02c96e6b37335774b548914ede1d22e">More...</a><br/></td></tr>
<tr class="separator:af02c96e6b37335774b548914ede1d22e"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:af08b7adb63adfb2eda7c466fba0cce74"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="include_2config_8php.html#af08b7adb63adfb2eda7c466fba0cce74">get_config_from_storage</a> ($family, $key)</td></tr>
+<tr class="memdesc:af08b7adb63adfb2eda7c466fba0cce74"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns a value directly from the database configuration storage. <a href="#af08b7adb63adfb2eda7c466fba0cce74">More...</a><br/></td></tr>
<tr class="separator:af08b7adb63adfb2eda7c466fba0cce74"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ad6da879e4fb5b37d1e161d4e9be5c32a"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="include_2config_8php.html#ad6da879e4fb5b37d1e161d4e9be5c32a">set_config</a> ($family, $key, $value)</td></tr>
+<tr class="memdesc:ad6da879e4fb5b37d1e161d4e9be5c32a"><td class="mdescLeft">&#160;</td><td class="mdescRight">Sets a configuration value for the hub. <a href="#ad6da879e4fb5b37d1e161d4e9be5c32a">More...</a><br/></td></tr>
<tr class="separator:ad6da879e4fb5b37d1e161d4e9be5c32a"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a549910227348003efc3c05c9105c42da"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="include_2config_8php.html#a549910227348003efc3c05c9105c42da">del_config</a> ($family, $key)</td></tr>
+<tr class="memdesc:a549910227348003efc3c05c9105c42da"><td class="mdescLeft">&#160;</td><td class="mdescRight">Deletes the given key from the hub's configuration database. <a href="#a549910227348003efc3c05c9105c42da">More...</a><br/></td></tr>
<tr class="separator:a549910227348003efc3c05c9105c42da"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:ac543813a980b3841cc5a277fcd4a24a6"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="include_2config_8php.html#ac543813a980b3841cc5a277fcd4a24a6">load_pconfig</a> ($uid, $family= '')</td></tr>
-<tr class="separator:ac543813a980b3841cc5a277fcd4a24a6"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a559791dda7fef8a4b2394c83e835787b"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="include_2config_8php.html#a559791dda7fef8a4b2394c83e835787b">load_pconfig</a> ($uid)</td></tr>
+<tr class="memdesc:a559791dda7fef8a4b2394c83e835787b"><td class="mdescLeft">&#160;</td><td class="mdescRight">Loads all configuration values of a channel into a cached storage. <a href="#a559791dda7fef8a4b2394c83e835787b">More...</a><br/></td></tr>
+<tr class="separator:a559791dda7fef8a4b2394c83e835787b"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ad58a4913937179adb13201c2ee3261ad"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="include_2config_8php.html#ad58a4913937179adb13201c2ee3261ad">get_pconfig</a> ($uid, $family, $key, $instore=false)</td></tr>
+<tr class="memdesc:ad58a4913937179adb13201c2ee3261ad"><td class="mdescLeft">&#160;</td><td class="mdescRight">Get a particular channel's config variable given the category name ($family) and a key. <a href="#ad58a4913937179adb13201c2ee3261ad">More...</a><br/></td></tr>
<tr class="separator:ad58a4913937179adb13201c2ee3261ad"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a61591371cb18764138655d67dc817ab2"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="include_2config_8php.html#a61591371cb18764138655d67dc817ab2">set_pconfig</a> ($uid, $family, $key, $value)</td></tr>
+<tr class="memdesc:a61591371cb18764138655d67dc817ab2"><td class="mdescLeft">&#160;</td><td class="mdescRight">Sets a configuration value for a channel. <a href="#a61591371cb18764138655d67dc817ab2">More...</a><br/></td></tr>
<tr class="separator:a61591371cb18764138655d67dc817ab2"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a7ad2081c5f812ac4387fd76f3762d941"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="include_2config_8php.html#a7ad2081c5f812ac4387fd76f3762d941">del_pconfig</a> ($uid, $family, $key)</td></tr>
+<tr class="memdesc:a7ad2081c5f812ac4387fd76f3762d941"><td class="mdescLeft">&#160;</td><td class="mdescRight">Deletes the given key from the channel's configuration. <a href="#a7ad2081c5f812ac4387fd76f3762d941">More...</a><br/></td></tr>
<tr class="separator:a7ad2081c5f812ac4387fd76f3762d941"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a55bbed9a014c9109c767486834f3ca33"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="include_2config_8php.html#a55bbed9a014c9109c767486834f3ca33">load_xconfig</a> ($xchan, $family= '')</td></tr>
-<tr class="separator:a55bbed9a014c9109c767486834f3ca33"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:aee4b619839cf4b64220f34edf5c67b52"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="include_2config_8php.html#aee4b619839cf4b64220f34edf5c67b52">load_xconfig</a> ($xchan)</td></tr>
+<tr class="memdesc:aee4b619839cf4b64220f34edf5c67b52"><td class="mdescLeft">&#160;</td><td class="mdescRight">Loads a full xchan's configuration into a cached storage. <a href="#aee4b619839cf4b64220f34edf5c67b52">More...</a><br/></td></tr>
+<tr class="separator:aee4b619839cf4b64220f34edf5c67b52"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aa3dc1d3de2d091ac702e675acd3a085e"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="include_2config_8php.html#aa3dc1d3de2d091ac702e675acd3a085e">get_xconfig</a> ($xchan, $family, $key)</td></tr>
+<tr class="memdesc:aa3dc1d3de2d091ac702e675acd3a085e"><td class="mdescLeft">&#160;</td><td class="mdescRight">Get a particular observer's config variable given the category name ($family) and a key. <a href="#aa3dc1d3de2d091ac702e675acd3a085e">More...</a><br/></td></tr>
<tr class="separator:aa3dc1d3de2d091ac702e675acd3a085e"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:afe117b70f1bba2f6348d9300b601f86e"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="include_2config_8php.html#afe117b70f1bba2f6348d9300b601f86e">set_xconfig</a> ($xchan, $family, $key, $value)</td></tr>
+<tr class="memdesc:afe117b70f1bba2f6348d9300b601f86e"><td class="mdescLeft">&#160;</td><td class="mdescRight">Sets a configuration value for an observer. <a href="#afe117b70f1bba2f6348d9300b601f86e">More...</a><br/></td></tr>
<tr class="separator:afe117b70f1bba2f6348d9300b601f86e"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a9c171def547deee16738dc58fdeb4b72"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="include_2config_8php.html#a9c171def547deee16738dc58fdeb4b72">del_xconfig</a> ($xchan, $family, $key)</td></tr>
+<tr class="memdesc:a9c171def547deee16738dc58fdeb4b72"><td class="mdescLeft">&#160;</td><td class="mdescRight">Deletes the given key from the observer's config. <a href="#a9c171def547deee16738dc58fdeb4b72">More...</a><br/></td></tr>
<tr class="separator:a9c171def547deee16738dc58fdeb4b72"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
-<h2 class="groupheader">Function Documentation</h2>
+<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
+<div class="textblock"><p>Arbitrary configuration storage. </p>
+<p>Note: Please do not store booleans - convert to 0/1 integer values The get_?config() functions return boolean false for keys that are unset, and this could lead to subtle bugs.</p>
+<p>Arrays get stored as serialize strings.</p>
+<dl class="todo"><dt><b><a class="el" href="todo.html#_todo000002">Todo:</a></b></dt><dd>There are a few places in the code (such as the admin panel) where boolean configurations need to be fixed as of 10/08/2011.</dd></dl>
+<ul>
+<li><b>config</b> is used for hub specific configurations. It overrides the configurations from .htconfig file. The storage is of size TEXT.</li>
+<li><b>pconfig</b> is used for channel specific configurations and takes a <em>channel_id</em> as identifier. It stores for example which features are enabled per channel. The storage is of size MEDIUMTEXT. <div class="fragment"><div class="line">$var = <a class="code" href="include_2config_8php.html#ad58a4913937179adb13201c2ee3261ad" title="Get a particular channel&#39;s config variable given the category name ($family) and a key...">get_pconfig</a>(<a class="code" href="boot_8php.html#ad4c9dc2c8a82e8f52b7404c1655eab44" title="Returns the entity id (channel_id) of locally logged in user or false.">local_user</a>(), <span class="stringliteral">&#39;category&#39;</span>, <span class="stringliteral">&#39;key&#39;</span>);</div>
+</div><!-- fragment --></li>
+<li><b>xconfig</b> is the same as pconfig, except that it uses <em>xchan</em> as an identifier. This is for example for people who do not have a local account. The storage is of size MEDIUMTEXT. <div class="fragment"><div class="line"> $observer = <a class="code" href="typo_8php.html#acebf83966ef6d7e5645a6b62ba368f9f">$a</a>-&gt;get_observer_hash();</div>
+<div class="line"><span class="keywordflow">if</span> ($observer) {</div>
+<div class="line"> $var = <a class="code" href="include_2config_8php.html#aa3dc1d3de2d091ac702e675acd3a085e" title="Get a particular observer&#39;s config variable given the category name ($family) and a key...">get_xconfig</a>($observer, <span class="stringliteral">&#39;category&#39;</span>, <span class="stringliteral">&#39;key&#39;</span>);</div>
+<div class="line">}</div>
+</div><!-- fragment --></li>
+</ul>
+<ul>
+<li><a class="el" href="include_2config_8php.html#af02c96e6b37335774b548914ede1d22e" title="Get a particular config variable given the category name ($family) and a key.">get_config()</a> and <a class="el" href="include_2config_8php.html#ad6da879e4fb5b37d1e161d4e9be5c32a" title="Sets a configuration value for the hub.">set_config()</a> can also be done through the command line tool util/config</li>
+<li><a class="el" href="include_2config_8php.html#ad58a4913937179adb13201c2ee3261ad" title="Get a particular channel&#39;s config variable given the category name ($family) and a key...">get_pconfig()</a> and <a class="el" href="include_2config_8php.html#a61591371cb18764138655d67dc817ab2" title="Sets a configuration value for a channel.">set_pconfig()</a> can also be done through the command line tool util/pconfig and takes a channel_id as first argument. </li>
+</ul>
+</div><h2 class="groupheader">Function Documentation</h2>
<a class="anchor" id="a549910227348003efc3c05c9105c42da"></a>
<div class="memitem">
<div class="memproto">
@@ -164,6 +199,17 @@ Functions</h2></td></tr>
</table>
</div><div class="memdoc">
+<p>Deletes the given key from the hub's configuration database. </p>
+<p>Removes the configured value from the stored cache in $a-&gt;config[$family] and removes it from the database.</p>
+<dl class="params"><dt>Parameters</dt><dd>
+ <table class="params">
+ <tr><td class="paramtype">string</td><td class="paramname">$family</td><td>The category of the configuration value </td></tr>
+ <tr><td class="paramtype">string</td><td class="paramname">$key</td><td>The configuration key to delete </td></tr>
+ </table>
+ </dd>
+</dl>
+<dl class="section return"><dt>Returns</dt><dd>mixed </dd></dl>
+
<p>Referenced by <a class="el" href="admin_8php.html#add865f4ae806ecbf716f423fc3e50e4f">admin_page_site_post()</a>, and <a class="el" href="classFKOAuthDataStore.html#a434882f03e3cdb171ed89e09e337e934">FKOAuthDataStore\new_access_token()</a>.</p>
</div>
@@ -198,7 +244,19 @@ Functions</h2></td></tr>
</table>
</div><div class="memdoc">
-<p>Referenced by <a class="el" href="pdledit_8php.html#a81da3c955d0e3db55d148a31483104c7">pdledit_post()</a>.</p>
+<p>Deletes the given key from the channel's configuration. </p>
+<p>Removes the configured value from the stored cache in $a-&gt;config[$uid] and removes it from the database.</p>
+<dl class="params"><dt>Parameters</dt><dd>
+ <table class="params">
+ <tr><td class="paramtype">string</td><td class="paramname">$uid</td><td>The channel_id </td></tr>
+ <tr><td class="paramtype">string</td><td class="paramname">$family</td><td>The category of the configuration value </td></tr>
+ <tr><td class="paramtype">string</td><td class="paramname">$key</td><td>The configuration key to delete </td></tr>
+ </table>
+ </dd>
+</dl>
+<dl class="section return"><dt>Returns</dt><dd>mixed </dd></dl>
+
+<p>Referenced by <a class="el" href="pdledit_8php.html#a81da3c955d0e3db55d148a31483104c7">pdledit_post()</a>, and <a class="el" href="settings_8php.html#aa7ee94d88ac088edb04ccf3a26de3586">settings_post()</a>.</p>
</div>
</div>
@@ -232,6 +290,18 @@ Functions</h2></td></tr>
</table>
</div><div class="memdoc">
+<p>Deletes the given key from the observer's config. </p>
+<p>Removes the configured value from the stored cache in $a-&gt;config[$xchan] and removes it from the database.</p>
+<dl class="params"><dt>Parameters</dt><dd>
+ <table class="params">
+ <tr><td class="paramtype">string</td><td class="paramname">$xchan</td><td>The observer's hash </td></tr>
+ <tr><td class="paramtype">string</td><td class="paramname">$family</td><td>The category of the configuration value </td></tr>
+ <tr><td class="paramtype">string</td><td class="paramname">$key</td><td>The configuration key to delete </td></tr>
+ </table>
+ </dd>
+</dl>
+<dl class="section return"><dt>Returns</dt><dd>mixed </dd></dl>
+
</div>
</div>
<a class="anchor" id="af02c96e6b37335774b548914ede1d22e"></a>
@@ -258,7 +328,19 @@ Functions</h2></td></tr>
</table>
</div><div class="memdoc">
-<p>Referenced by <a class="el" href="auth_8php.html#a07bae0e623e2daa9ee2cd5a8aa294dee">account_verify_password()</a>, <a class="el" href="acl_8php.html#ac6776dba871806ecdb5d1659bc2eb07a">acl_init()</a>, <a class="el" href="admin_8php.html#aaa6addf2dbc3f3fcf99244a56b41eade">admin_page_dbsync()</a>, <a class="el" href="admin_8php.html#a1d1362698af14d209aa3a0fb655551dd">admin_page_logs()</a>, <a class="el" href="admin_8php.html#ac0f3bd12431c056aad77bac9d09fa30e">admin_page_site()</a>, <a class="el" href="admin_8php.html#ac6e95b920b5abd030cc522964987087a">admin_page_summary()</a>, <a class="el" href="admin_8php.html#af124619fdc278fe2bf14c45ddaa260fb">admin_page_themes()</a>, <a class="el" href="include_2network_8php.html#aba38458a2ff2d92d3536488dbb119694">allowed_email()</a>, <a class="el" href="include_2network_8php.html#aee35d9ad6b3f872bfb39ba3598936aa7">allowed_url()</a>, <a class="el" href="include_2api_8php.html#a8b25a186bd0893f51aa72a62f655735e">api_statuses_mentions()</a>, <a class="el" href="include_2api_8php.html#a623793229a7256dd31bcfd5ab90eef08">api_statusnet_config()</a>, <a class="el" href="include_2attach_8php.html#a84a8a64c4805e1525b42d4add464833f">attach_store()</a>, <a class="el" href="bbcode_8php.html#a009f61aaf78771737ed0765c8463911b">bbcode()</a>, <a class="el" href="zot_8php.html#ac34e479d27f32b82dd6b33542f81a6a7">build_sync_packet()</a>, <a class="el" href="channel_8php.html#a9c6a6179e0e626398ebecc6151905ef1">channel_content()</a>, <a class="el" href="account_8php.html#a917d74aad0baf3e0c4b51cf1051e654f">check_account_admin()</a>, <a class="el" href="account_8php.html#aaff7720423417a4333697894ffd9ddeb">check_account_invite()</a>, <a class="el" href="boot_8php.html#a4c02d88e66852a01bd5a1feecb7c3ce3">check_config()</a>, <a class="el" href="cli__startup_8php.html#adfdde63686e33ccd4851fa5edc4fc70b">cli_startup()</a>, <a class="el" href="account_8php.html#a141fe579c351c78209d425473f978eb5">create_account()</a>, <a class="el" href="identity_8php.html#a345f4c943d84de502ec6e72d2c813945">create_identity()</a>, <a class="el" href="identity_8php.html#a1cf83ac2b645de12868edaa3a5718f05">create_sys_channel()</a>, <a class="el" href="classRedDirectory.html#a2d12d99d38a6a75fc9a830b2f7fc0bf0">RedDirectory\createFile()</a>, <a class="el" href="language_8php.html#a632da17c7ac0d2dc1a00a4706870194b">detect_language()</a>, <a class="el" href="mod_2directory_8php.html#aac79396570d759da2efac24fcedf5b44">directory_content()</a>, <a class="el" href="include_2directory_8php.html#aa75d3b0697ca1456aaabdb37a74aa0f0">directory_run()</a>, <a class="el" href="dirprofile_8php.html#a3e1d30d3d93863ff5615f2df4ac7f052">dirprofile_init()</a>, <a class="el" href="dirsearch_8php.html#aa1fb04e1de4f25b63349ac78f94ceb4c">dirsearch_content()</a>, <a class="el" href="display_8php.html#a37137c98d47bf3306f4c2bb9f5b60de0">display_content()</a>, <a class="el" href="text_8php.html#a0a1f7c0e97f9ecbebf3e5834582b014c">dlogger()</a>, <a class="el" href="datetime_8php.html#a3f2897db32e745fe2f3e70a6b46578f8">dob()</a>, <a class="el" href="account_8php.html#a0d183a3cb4c67a0f5e906811df7a1fc9">downgrade_accounts()</a>, <a class="el" href="editblock_8php.html#abbe8f55de06967bc8d79d620509a49e6">editblock_content()</a>, <a class="el" href="editpost_8php.html#a34011690864d122680c802e9e748ccfb">editpost_content()</a>, <a class="el" href="editwebpage_8php.html#a375e945255fad79a71036528f7480650">editwebpage_content()</a>, <a class="el" href="items_8php.html#a82955cc578f0fa600acec84475026194">encode_item()</a>, <a class="el" href="items_8php.html#a2d840c74ed23d1b6c7daee05cf89dda7">encode_mail()</a>, <a class="el" href="events_8php.html#a1d293fb217ae6bc9e3858c4b32e363ec">events_content()</a>, <a class="el" href="expire_8php.html#a444e45c9b67727b27db4c779fd51a298">expire_run()</a>, <a class="el" href="externals_8php.html#a4df44079e6f915286088b7a0d44db926">externals_run()</a>, <a class="el" href="features_8php.html#a52b5bdfb61b256713efecf7a7b20b0c0">feature_enabled()</a>, <a class="el" href="feed_8php.html#af86137700b56f33d1d5f25c8dec22c04">feed_init()</a>, <a class="el" href="dir__fns_8php.html#a8c15aa69da12f2d3476b9e93b82b337d">find_upstream_directory()</a>, <a class="el" href="contact__widgets_8php.html#a57e73ebcfd62bb5d8c7a7b9e663726d6">findpeople_widget()</a>, <a class="el" href="permissions_8php.html#aeca9b280f3dc3358c89976d81d690008">get_all_perms()</a>, <a class="el" href="classItem.html#a3ee7667c2ec6cd7657328e27848c0bdf">Item\get_comment_box()</a>, <a class="el" href="identity_8php.html#ab1485a26b032956e1496fc08c58b83ed">get_default_profile_photo()</a>, <a class="el" href="items_8php.html#a536d0313b6ffe33b9d2490c4e25c5361">get_item_elements()</a>, <a class="el" href="items_8php.html#a94ddb1d6c8fa21dd7433677e85168037">get_mail_elements()</a>, <a class="el" href="boot_8php.html#a97769915c9f14adc4f8ab1ea2cecfd90">get_max_import_size()</a>, <a class="el" href="identity_8php.html#a332df795f684788002f5a6424abacfd7">get_online_status()</a>, <a class="el" href="classRedDirectory.html#aaa20f0f44da23781917af8170c0a2569">RedDirectory\getChild()</a>, <a class="el" href="classRedDirectory.html#aa42d3065f6f065b17db87146a7cb031a">RedDirectory\getChildren()</a>, <a class="el" href="mod_2group_8php.html#a07a64f6c65b0080d8190b3d9728a7a83">group_content()</a>, <a class="el" href="home_8php.html#aa1cf697851a646755baf537f75334c46">home_content()</a>, <a class="el" href="home_8php.html#ac4642c38b6f23a8d065dd4a75c620bde">home_init()</a>, <a class="el" href="classphoto__gd.html#a0795fc029be382557ae3f6e285f40e00">photo_gd\imageString()</a>, <a class="el" href="import_8php.html#af17fef0410518f7eac205d0ea416eaa2">import_post()</a>, <a class="el" href="zot_8php.html#a528e97ca5d69c3b7f35c5d954afde315">import_xchan()</a>, <a class="el" href="invite_8php.html#a244385b28cfd021d308715f01158bfd9">invite_content()</a>, <a class="el" href="invite_8php.html#aeb0881c0f93c8e8552e5ed756ce6e5a5">invite_post()</a>, <a class="el" href="identity_8php.html#a4e996e44b50330098a04b467367a559f">is_public_profile()</a>, <a class="el" href="item_8php.html#a693cd09805755ab85bbb5ecae69a48c3">item_post()</a>, <a class="el" href="items_8php.html#a2541e6861a56d145c9281877cc501615">item_store()</a>, <a class="el" href="items_8php.html#acf0bf7c9d21ac84f32effb754f7ad484">item_store_update()</a>, <a class="el" href="classphoto__imagick.html#a2c9168f110ccd6c264095d766615dfa8">photo_imagick\load()</a>, <a class="el" href="text_8php.html#a030fa5ecc64168af0c4f44897a9bce63">logger()</a>, <a class="el" href="boot_8php.html#aefecf8599036df7f1b95d6820e0e2fa4">login()</a>, <a class="el" href="lostpass_8php.html#a0314d94e48c789b1b3a201d740c9eab3">lostpass_content()</a>, <a class="el" href="lostpass_8php.html#a8ed35ba71a4404eaf4903da61d0321cc">lostpass_post()</a>, <a class="el" href="Contact_8php.html#a08845ce8c5b997d5edac38ae7118b5c8">mark_orphan_hubsxchans()</a>, <a class="el" href="nav_8php.html#a43be0df73b90647ea70947ce004e231e">nav()</a>, <a class="el" href="acl_8php.html#a57dceff370d4a0e7ae673d50fbfda61f">navbar_complete()</a>, <a class="el" href="mod_2network_8php.html#a43f2f29b90c5e29072c561934bc8f8b4">network_content()</a>, <a class="el" href="classFKOAuthDataStore.html#a434882f03e3cdb171ed89e09e337e934">FKOAuthDataStore\new_access_token()</a>, <a class="el" href="new__channel_8php.html#a180b0646957db8290482f02454ad7f23">new_channel_post()</a>, <a class="el" href="crypto_8php.html#aae0ab70d6a199b29555b1ac3cf250d6a">new_keypair()</a>, <a class="el" href="enotify_8php.html#a3e9a9355b243777c488d2a9883908dfc">notification()</a>, <a class="el" href="notifier_8php.html#a568c502f626cff95e344c0748938b85d">notifier_run()</a>, <a class="el" href="include_2oembed_8php.html#aba89ae64b355efcb4f706553d3edb6a2">oembed_bbcode2html()</a>, <a class="el" href="openid_8php.html#a9a13827dbcf61ae4e45f0b6b33a88f43">openid_content()</a>, <a class="el" href="parse__url_8php.html#a05a9e8944380ba3cf6bbf5893dd4b74b">parse_url_content()</a>, <a class="el" href="permissions_8php.html#a67ada9ed51e77885b6b0f6a28cee1835">perm_is_allowed()</a>, <a class="el" href="include_2photos_8php.html#a6c40ef58aefef705a5adc84a40e97109">photo_upload()</a>, <a class="el" href="mod_2photos_8php.html#aa87382611a66ec5effdb2d78f13f5812">photos_content()</a>, <a class="el" href="mod_2photos_8php.html#ab950295cd77626f5fe65331a87693014">photos_init()</a>, <a class="el" href="poco_8php.html#a53def16f75e3d41f1d2bb7cfa4905498">poco_init()</a>, <a class="el" href="poller_8php.html#a5f12df3a4738124b6c039971e87e76da">poller_run()</a>, <a class="el" href="items_8php.html#a410f9c743877c125ca06312373346903">post_activity_item()</a>, <a class="el" href="post_8php.html#af59e6a1dc22d19d9257b01cd7ccedb75">post_post()</a>, <a class="el" href="include_2message_8php.html#a5f8de9847e203329e317ac38dc646898">private_messages_fetch_conversation()</a>, <a class="el" href="include_2message_8php.html#a254a756031e4d5e94f85e2939bdb5091">private_messages_fetch_message()</a>, <a class="el" href="include_2message_8php.html#a652973ce47a262f2d238c2fd6233d97e">private_messages_list()</a>, <a class="el" href="profile_8php.html#a3775cf6eef6587e5143133356a7b76c0">profile_content()</a>, <a class="el" href="identity_8php.html#ad4a2c8caca8f6ae93633ebeca0ed6620">profile_create_sidebar()</a>, <a class="el" href="profile__photo_8php.html#a4b80234074bd603221aa5364f330e479">profile_photo_post()</a>, <a class="el" href="profiles_8php.html#a46975783b8b8d70402d51487eb1f0b00">profiles_content()</a>, <a class="el" href="profperm_8php.html#aef015787de2373d9fb3fe3f814fb5023">profperm_content()</a>, <a class="el" href="pubsites_8php.html#af614e279aab54065345bda6b03eafdf0">pubsites_content()</a>, <a class="el" href="classRedFile.html#a41a49a583eb276b75626fcf97f4a699c">RedFile\put()</a>, <a class="el" href="register_8php.html#a0e91f57f111407ea8d3223a05022bb2a">register_content()</a>, <a class="el" href="register_8php.html#a51731dcc1917c58a790eb1c0f6132271">register_post()</a>, <a class="el" href="plugin_8php.html#af9ac19004dca49adae1ac7a0d9f3b025">reload_plugins()</a>, <a class="el" href="Contact_8php.html#acc12cda999c88c4d6185cca967c15125">remove_all_xchan_resources()</a>, <a class="el" href="include_2network_8php.html#ae8d9c41a11000fb8667039fc71b4f73f">scale_external_images()</a>, <a class="el" href="search_8php.html#ab2568591359edde5b483a6cd9a24b2cc">search_content()</a>, <a class="el" href="include_2message_8php.html#a751ffd6635022b2190f56154ee745752">send_message()</a>, <a class="el" href="account_8php.html#a014de2d5d5c9785de5bf547a485822fa">send_reg_approval_email()</a>, <a class="el" href="account_8php.html#aa9c29c497c17d8f9344dce8631ad8761">send_verification_email()</a>, <a class="el" href="plugin_8php.html#a030cec6793b909c439c0336ba39b1571">service_class_allows()</a>, <a class="el" href="plugin_8php.html#a905b54e10704b283ac64680a8abc0971">service_class_fetch()</a>, <a class="el" href="include_2config_8php.html#ad6da879e4fb5b37d1e161d4e9be5c32a">set_config()</a>, <a class="el" href="settings_8php.html#aa7ee94d88ac088edb04ccf3a26de3586">settings_post()</a>, <a class="el" href="permissions_8php.html#aa8b7b102c653649d7a71b5a1c044d90d">site_default_perms()</a>, <a class="el" href="siteinfo_8php.html#a70c09bfb6dd1c86a125a35f62ed53656">siteinfo_content()</a>, <a class="el" href="text_8php.html#a3d225b253bb9e0f2498c11647d927b0b">smilies()</a>, <a class="el" href="items_8php.html#ab1bce4261bcf75ad62753b498a144d17">tag_deliver()</a>, <a class="el" href="view_2theme_2blogga_2php_2config_8php.html#a09cd81013505f83aea0771243a1e4e53">theme_admin()</a>, <a class="el" href="text_8php.html#a8264348059abd1d4d5bb521323d3b19a">unobscure()</a>, <a class="el" href="zot_8php.html#ab319d1d9fff9c7775d9daef42d1f33dd">update_modtime()</a>, <a class="el" href="socgraph_8php.html#a790690bb1a1d02483fe31632a160144d">update_suggestions()</a>, <a class="el" href="plugin_8php.html#a4fc13e528367f510fcb6d8bbfc559040">upgrade_link()</a>, <a class="el" href="account_8php.html#ac5c570a2d46446bad4dd2501e9c5a4b1">user_allow()</a>, <a class="el" href="text_8php.html#a6a3d80a6c6fb234fd0bac44203b828eb">valid_email()</a>, <a class="el" href="include_2network_8php.html#a897e7112d86eb95526cbd0bff9375f02">validate_email()</a>, <a class="el" href="account_8php.html#acd6b8d2124ba5ea4f4794d2c58ae8bf5">verify_email_address()</a>, <a class="el" href="viewconnections_8php.html#ab6c4d983e97b3a8a879567ff76507776">viewconnections_content()</a>, <a class="el" href="viewconnections_8php.html#a00163d50b17568f7b0e48b1ca9ab7330">viewconnections_init()</a>, <a class="el" href="webpages_8php.html#af3b7397d4abc153e3d2147740ee1a41d">webpages_content()</a>, <a class="el" href="widgets_8php.html#a70442dfa079312d9d5e5ee01be51a165">widget_fullprofile()</a>, <a class="el" href="widgets_8php.html#abd2e508a2a0b911c4a838e3cb7599923">widget_profile()</a>, <a class="el" href="include_2network_8php.html#aafd06c0a75402aefb06cfb9f9740fa37">z_fetch_url()</a>, <a class="el" href="include_2network_8php.html#a9129fd55e7fc175b4ea9a195cccc16bc">z_post_url()</a>, <a class="el" href="zfinger_8php.html#a8139b83a22ef98869adc10aa224027a0">zfinger_init()</a>, <a class="el" href="zot_8php.html#a61cdc1ec843663c423ed2d8160ae5aea">zot_fetch()</a>, <a class="el" href="zot_8php.html#aeea071f17e306fe3d0c488551906bfab">zot_import()</a>, and <a class="el" href="zotfeed_8php.html#a24dfc23d366e7f840cf2847d0c1c8eac">zotfeed_init()</a>.</p>
+<p>Get a particular config variable given the category name ($family) and a key. </p>
+<p>Get a particular config variable from the given category ($family) and the $key from a cached storage in $a-&gt;config[$family]. If a key is found in the DB but does not exist in local config cache, pull it into the cache so we do not have to hit the DB again for this item.</p>
+<p>Returns false if not set.</p>
+<dl class="params"><dt>Parameters</dt><dd>
+ <table class="params">
+ <tr><td class="paramtype">string</td><td class="paramname">$family</td><td>The category of the configuration value </td></tr>
+ <tr><td class="paramtype">string</td><td class="paramname">$key</td><td>The configuration key to query </td></tr>
+ </table>
+ </dd>
+</dl>
+<dl class="section return"><dt>Returns</dt><dd>mixed Return value or false on error or if not set </dd></dl>
+
+<p>Referenced by <a class="el" href="account_8php.html#a4328c40ee4b3d68630cf1ebb7b9d4d89">account_service_class_fetch()</a>, <a class="el" href="auth_8php.html#a07bae0e623e2daa9ee2cd5a8aa294dee">account_verify_password()</a>, <a class="el" href="acl_8php.html#ac6776dba871806ecdb5d1659bc2eb07a">acl_init()</a>, <a class="el" href="admin_8php.html#aaa6addf2dbc3f3fcf99244a56b41eade">admin_page_dbsync()</a>, <a class="el" href="admin_8php.html#a1d1362698af14d209aa3a0fb655551dd">admin_page_logs()</a>, <a class="el" href="admin_8php.html#ac0f3bd12431c056aad77bac9d09fa30e">admin_page_site()</a>, <a class="el" href="admin_8php.html#ac6e95b920b5abd030cc522964987087a">admin_page_summary()</a>, <a class="el" href="admin_8php.html#af124619fdc278fe2bf14c45ddaa260fb">admin_page_themes()</a>, <a class="el" href="include_2network_8php.html#aba38458a2ff2d92d3536488dbb119694">allowed_email()</a>, <a class="el" href="include_2network_8php.html#aee35d9ad6b3f872bfb39ba3598936aa7">allowed_url()</a>, <a class="el" href="include_2api_8php.html#a8b25a186bd0893f51aa72a62f655735e">api_statuses_mentions()</a>, <a class="el" href="include_2api_8php.html#a623793229a7256dd31bcfd5ab90eef08">api_statusnet_config()</a>, <a class="el" href="mod_2apps_8php.html#a546016cb960d0b110ee8e489dfa6c27c">apps_content()</a>, <a class="el" href="include_2attach_8php.html#a84a8a64c4805e1525b42d4add464833f">attach_store()</a>, <a class="el" href="bb2diaspora_8php.html#ab27761069ea1275f0fc4c543099c5519">bb2diaspora_itembody()</a>, <a class="el" href="bbcode_8php.html#a009f61aaf78771737ed0765c8463911b">bbcode()</a>, <a class="el" href="zot_8php.html#aa97b33b619dd7132a9274f852af6ceb5">build_sync_packet()</a>, <a class="el" href="channel_8php.html#a9c6a6179e0e626398ebecc6151905ef1">channel_content()</a>, <a class="el" href="account_8php.html#a917d74aad0baf3e0c4b51cf1051e654f">check_account_admin()</a>, <a class="el" href="account_8php.html#aaff7720423417a4333697894ffd9ddeb">check_account_invite()</a>, <a class="el" href="boot_8php.html#a4c02d88e66852a01bd5a1feecb7c3ce3">check_config()</a>, <a class="el" href="dir__fns_8php.html#a2f7d74bb2aea8bcd2537aee5c6708a16">check_upstream_directory()</a>, <a class="el" href="text_8php.html#a0c65597bb4aed3a039eb795ff540e5e3">check_webbie()</a>, <a class="el" href="cli__startup_8php.html#adfdde63686e33ccd4851fa5edc4fc70b">cli_startup()</a>, <a class="el" href="account_8php.html#a141fe579c351c78209d425473f978eb5">create_account()</a>, <a class="el" href="identity_8php.html#a345f4c943d84de502ec6e72d2c813945">create_identity()</a>, <a class="el" href="identity_8php.html#a1cf83ac2b645de12868edaa3a5718f05">create_sys_channel()</a>, <a class="el" href="classRedMatrix_1_1RedDAV_1_1RedDirectory.html#a58e750256cdc2f0f79fbe8d5463ffefe">RedMatrix\RedDAV\RedDirectory\createFile()</a>, <a class="el" href="language_8php.html#a632da17c7ac0d2dc1a00a4706870194b">detect_language()</a>, <a class="el" href="diaspora_8php.html#a0fb2abe304aae19efc040a5e6b917829">diaspora_comment()</a>, <a class="el" href="diaspora_8php.html#adef30b6fac948baedcc7194d5d155b5f">diaspora_conversation()</a>, <a class="el" href="diaspora_8php.html#a6f0a67b6b17503c125af32763be931b7">diaspora_dispatch()</a>, <a class="el" href="diaspora_8php.html#ab99505944728d46585b8312989de533d">diaspora_dispatch_public()</a>, <a class="el" href="diaspora_8php.html#a858f70153c384f8778082cf7843a19da">diaspora_is_blacklisted()</a>, <a class="el" href="diaspora_8php.html#a5d57518545baa31cf8a85a937a267681">diaspora_like()</a>, <a class="el" href="diaspora_8php.html#a7cff2f8f11044c1b3a360f20e1bbee46">diaspora_message()</a>, <a class="el" href="diaspora_8php.html#a131abd521b218d6ae6f7d2917d8b2605">diaspora_process_outbound()</a>, <a class="el" href="diaspora_8php.html#af4698b165766f83d89ec1ea964bc92cc">diaspora_send_followup()</a>, <a class="el" href="diaspora_8php.html#aeb2bb78f620dbf51d9335e6eb7444f2c">diaspora_send_mail()</a>, <a class="el" href="diaspora_8php.html#a0b3628a5e53332c3d3196b689fe2b94d">diaspora_send_relay()</a>, <a class="el" href="diaspora_8php.html#aa704d6aa2ac77be345c0f501168e6e56">diaspora_transmit()</a>, <a class="el" href="mod_2directory_8php.html#aac79396570d759da2efac24fcedf5b44">directory_content()</a>, <a class="el" href="include_2directory_8php.html#aa75d3b0697ca1456aaabdb37a74aa0f0">directory_run()</a>, <a class="el" href="dirsearch_8php.html#aa1fb04e1de4f25b63349ac78f94ceb4c">dirsearch_content()</a>, <a class="el" href="display_8php.html#a37137c98d47bf3306f4c2bb9f5b60de0">display_content()</a>, <a class="el" href="text_8php.html#a0a1f7c0e97f9ecbebf3e5834582b014c">dlogger()</a>, <a class="el" href="datetime_8php.html#a3f2897db32e745fe2f3e70a6b46578f8">dob()</a>, <a class="el" href="account_8php.html#a0d183a3cb4c67a0f5e906811df7a1fc9">downgrade_accounts()</a>, <a class="el" href="editblock_8php.html#abbe8f55de06967bc8d79d620509a49e6">editblock_content()</a>, <a class="el" href="editpost_8php.html#a34011690864d122680c802e9e748ccfb">editpost_content()</a>, <a class="el" href="editwebpage_8php.html#a375e945255fad79a71036528f7480650">editwebpage_content()</a>, <a class="el" href="items_8php.html#a56b0f5d2cb36eb8f4bfca84813884f86">encode_item()</a>, <a class="el" href="items_8php.html#a2d840c74ed23d1b6c7daee05cf89dda7">encode_mail()</a>, <a class="el" href="events_8php.html#a1d293fb217ae6bc9e3858c4b32e363ec">events_content()</a>, <a class="el" href="expire_8php.html#a444e45c9b67727b27db4c779fd51a298">expire_run()</a>, <a class="el" href="externals_8php.html#a4df44079e6f915286088b7a0d44db926">externals_run()</a>, <a class="el" href="features_8php.html#a52b5bdfb61b256713efecf7a7b20b0c0">feature_enabled()</a>, <a class="el" href="feed_8php.html#af86137700b56f33d1d5f25c8dec22c04">feed_init()</a>, <a class="el" href="items_8php.html#a8cda98925a4c5c2f6dade70d9586d79a">filter_insecure()</a>, <a class="el" href="dir__fns_8php.html#a8c15aa69da12f2d3476b9e93b82b337d">find_upstream_directory()</a>, <a class="el" href="contact__widgets_8php.html#a57e73ebcfd62bb5d8c7a7b9e663726d6">findpeople_widget()</a>, <a class="el" href="permissions_8php.html#aeca9b280f3dc3358c89976d81d690008">get_all_perms()</a>, <a class="el" href="classItem.html#a3ee7667c2ec6cd7657328e27848c0bdf">Item\get_comment_box()</a>, <a class="el" href="identity_8php.html#ab1485a26b032956e1496fc08c58b83ed">get_default_profile_photo()</a>, <a class="el" href="boot_8php.html#a329400dcb29897cdaae3020109272285">get_directory_realm()</a>, <a class="el" href="items_8php.html#a536d0313b6ffe33b9d2490c4e25c5361">get_item_elements()</a>, <a class="el" href="items_8php.html#a94ddb1d6c8fa21dd7433677e85168037">get_mail_elements()</a>, <a class="el" href="boot_8php.html#a97769915c9f14adc4f8ab1ea2cecfd90">get_max_import_size()</a>, <a class="el" href="identity_8php.html#a332df795f684788002f5a6424abacfd7">get_online_status()</a>, <a class="el" href="boot_8php.html#aa561f801e962b67a5c4d0548ea95fd17">get_poller_runtime()</a>, <a class="el" href="identity_8php.html#a224710dfb7465b706c91134247c20afa">get_profile_fields_advanced()</a>, <a class="el" href="identity_8php.html#a4ff59df0f0a668a06a8411f87496aa21">get_profile_fields_basic()</a>, <a class="el" href="permissions_8php.html#a9b5f5120566a3699a98efc5ccb0c59fe">get_role_perms()</a>, <a class="el" href="classRedMatrix_1_1RedDAV_1_1RedDirectory.html#a1a37850bdd1f188abd6160559698d5d7">RedMatrix\RedDAV\RedDirectory\getChild()</a>, <a class="el" href="classRedMatrix_1_1RedDAV_1_1RedDirectory.html#a9b9a0b5bfa4de1f78e6cafaa534b6f6a">RedMatrix\RedDAV\RedDirectory\getChildren()</a>, <a class="el" href="mod_2group_8php.html#a07a64f6c65b0080d8190b3d9728a7a83">group_content()</a>, <a class="el" href="photo__driver_8php.html#a243cee492ce443afb6a7d77d54b6c4aa">guess_image_type()</a>, <a class="el" href="home_8php.html#a6e3dbf78f4ed74ab2577de221190b33f">home_content()</a>, <a class="el" href="home_8php.html#ac4642c38b6f23a8d065dd4a75c620bde">home_init()</a>, <a class="el" href="event_8php.html#ab8cc2825013e724dc26229026711cf93">ical_wrapper()</a>, <a class="el" href="identity_8php.html#afaedbc8e2d2a70ec8b006162baac5249">identity_basic_export()</a>, <a class="el" href="classphoto__gd.html#a0795fc029be382557ae3f6e285f40e00">photo_gd\imageString()</a>, <a class="el" href="import_8php.html#af17fef0410518f7eac205d0ea416eaa2">import_post()</a>, <a class="el" href="zot_8php.html#a528e97ca5d69c3b7f35c5d954afde315">import_xchan()</a>, <a class="el" href="invite_8php.html#a244385b28cfd021d308715f01158bfd9">invite_content()</a>, <a class="el" href="invite_8php.html#aeb0881c0f93c8e8552e5ed756ce6e5a5">invite_post()</a>, <a class="el" href="identity_8php.html#a4e996e44b50330098a04b467367a559f">is_public_profile()</a>, <a class="el" href="item_8php.html#a693cd09805755ab85bbb5ecae69a48c3">item_post()</a>, <a class="el" href="items_8php.html#a2541e6861a56d145c9281877cc501615">item_store()</a>, <a class="el" href="items_8php.html#acf0bf7c9d21ac84f32effb754f7ad484">item_store_update()</a>, <a class="el" href="classphoto__imagick.html#a2c9168f110ccd6c264095d766615dfa8">photo_imagick\load()</a>, <a class="el" href="conversation_8php.html#a9bd7f9fb6678736c581bcba3b17f471c">localize_item()</a>, <a class="el" href="auth_8php.html#ae3ecb5f34f202c7f9a61c5d589f6c6e1">log_failed_login()</a>, <a class="el" href="text_8php.html#a030fa5ecc64168af0c4f44897a9bce63">logger()</a>, <a class="el" href="boot_8php.html#aefecf8599036df7f1b95d6820e0e2fa4">login()</a>, <a class="el" href="lostpass_8php.html#a0314d94e48c789b1b3a201d740c9eab3">lostpass_content()</a>, <a class="el" href="lostpass_8php.html#a8ed35ba71a4404eaf4903da61d0321cc">lostpass_post()</a>, <a class="el" href="Contact_8php.html#a08845ce8c5b997d5edac38ae7118b5c8">mark_orphan_hubsxchans()</a>, <a class="el" href="nav_8php.html#a43be0df73b90647ea70947ce004e231e">nav()</a>, <a class="el" href="acl_8php.html#a57dceff370d4a0e7ae673d50fbfda61f">navbar_complete()</a>, <a class="el" href="mod_2network_8php.html#a43f2f29b90c5e29072c561934bc8f8b4">network_content()</a>, <a class="el" href="classFKOAuthDataStore.html#a434882f03e3cdb171ed89e09e337e934">FKOAuthDataStore\new_access_token()</a>, <a class="el" href="new__channel_8php.html#a180b0646957db8290482f02454ad7f23">new_channel_post()</a>, <a class="el" href="include_2follow_8php.html#ae387d4ae097c23d69f3247e7f08140c7">new_contact()</a>, <a class="el" href="crypto_8php.html#aae0ab70d6a199b29555b1ac3cf250d6a">new_keypair()</a>, <a class="el" href="enotify_8php.html#a3e9a9355b243777c488d2a9883908dfc">notification()</a>, <a class="el" href="notifier_8php.html#a568c502f626cff95e344c0748938b85d">notifier_run()</a>, <a class="el" href="include_2oembed_8php.html#aba89ae64b355efcb4f706553d3edb6a2">oembed_bbcode2html()</a>, <a class="el" href="openid_8php.html#a9a13827dbcf61ae4e45f0b6b33a88f43">openid_content()</a>, <a class="el" href="parse__url_8php.html#a05a9e8944380ba3cf6bbf5893dd4b74b">parse_url_content()</a>, <a class="el" href="permissions_8php.html#a67ada9ed51e77885b6b0f6a28cee1835">perm_is_allowed()</a>, <a class="el" href="photo__driver_8php.html#a32e2817faa25d7f11f60a8abff565035">photo_factory()</a>, <a class="el" href="photo_8php.html#a582779d24882b0d31ee909a91d70a448">photo_init()</a>, <a class="el" href="include_2photos_8php.html#a6c40ef58aefef705a5adc84a40e97109">photo_upload()</a>, <a class="el" href="mod_2photos_8php.html#aa87382611a66ec5effdb2d78f13f5812">photos_content()</a>, <a class="el" href="mod_2photos_8php.html#ab950295cd77626f5fe65331a87693014">photos_init()</a>, <a class="el" href="poco_8php.html#a53def16f75e3d41f1d2bb7cfa4905498">poco_init()</a>, <a class="el" href="poller_8php.html#a5f12df3a4738124b6c039971e87e76da">poller_run()</a>, <a class="el" href="items_8php.html#a410f9c743877c125ca06312373346903">post_activity_item()</a>, <a class="el" href="post_8php.html#af59e6a1dc22d19d9257b01cd7ccedb75">post_post()</a>, <a class="el" href="include_2message_8php.html#a5f8de9847e203329e317ac38dc646898">private_messages_fetch_conversation()</a>, <a class="el" href="include_2message_8php.html#a254a756031e4d5e94f85e2939bdb5091">private_messages_fetch_message()</a>, <a class="el" href="include_2message_8php.html#a652973ce47a262f2d238c2fd6233d97e">private_messages_list()</a>, <a class="el" href="profile_8php.html#a3775cf6eef6587e5143133356a7b76c0">profile_content()</a>, <a class="el" href="identity_8php.html#ad4a2c8caca8f6ae93633ebeca0ed6620">profile_create_sidebar()</a>, <a class="el" href="profile__photo_8php.html#a4b80234074bd603221aa5364f330e479">profile_photo_post()</a>, <a class="el" href="profiles_8php.html#a46975783b8b8d70402d51487eb1f0b00">profiles_content()</a>, <a class="el" href="profperm_8php.html#aef015787de2373d9fb3fe3f814fb5023">profperm_content()</a>, <a class="el" href="pubsites_8php.html#af614e279aab54065345bda6b03eafdf0">pubsites_content()</a>, <a class="el" href="classRedMatrix_1_1RedDAV_1_1RedFile.html#a709ec1288d21ddf1353524435ab916f0">RedMatrix\RedDAV\RedFile\put()</a>, <a class="el" href="Contact_8php.html#a7e3f5bef8ea1d2bf8434c9be36a2b713">random_profile()</a>, <a class="el" href="receive_8php.html#a03d8fa26e77844020ba5602deca7d494">receive_post()</a>, <a class="el" href="session_8php.html#ac95373f4966862a028033dd2f94d4da1">ref_session_gc()</a>, <a class="el" href="register_8php.html#a0e91f57f111407ea8d3223a05022bb2a">register_content()</a>, <a class="el" href="register_8php.html#a51731dcc1917c58a790eb1c0f6132271">register_post()</a>, <a class="el" href="plugin_8php.html#af9ac19004dca49adae1ac7a0d9f3b025">reload_plugins()</a>, <a class="el" href="Contact_8php.html#acc12cda999c88c4d6185cca967c15125">remove_all_xchan_resources()</a>, <a class="el" href="hubloc_8php.html#a84c79b7be352f62d12fe4fa2c80fc6ea">remove_obsolete_hublocs()</a>, <a class="el" href="include_2network_8php.html#ae8d9c41a11000fb8667039fc71b4f73f">scale_external_images()</a>, <a class="el" href="search_8php.html#ab2568591359edde5b483a6cd9a24b2cc">search_content()</a>, <a class="el" href="include_2message_8php.html#a751ffd6635022b2190f56154ee745752">send_message()</a>, <a class="el" href="account_8php.html#a014de2d5d5c9785de5bf547a485822fa">send_reg_approval_email()</a>, <a class="el" href="account_8php.html#aa9c29c497c17d8f9344dce8631ad8761">send_verification_email()</a>, <a class="el" href="account_8php.html#a030cec6793b909c439c0336ba39b1571">service_class_allows()</a>, <a class="el" href="account_8php.html#a905b54e10704b283ac64680a8abc0971">service_class_fetch()</a>, <a class="el" href="service__limits_8php.html#a653424aac63c5cd05ba70c3c77bf7f8a">service_limits_content()</a>, <a class="el" href="include_2config_8php.html#ad6da879e4fb5b37d1e161d4e9be5c32a">set_config()</a>, <a class="el" href="settings_8php.html#aa7ee94d88ac088edb04ccf3a26de3586">settings_post()</a>, <a class="el" href="permissions_8php.html#aa8b7b102c653649d7a71b5a1c044d90d">site_default_perms()</a>, <a class="el" href="siteinfo_8php.html#a70c09bfb6dd1c86a125a35f62ed53656">siteinfo_content()</a>, <a class="el" href="siteinfo_8php.html#a3efbd0bd6564af19ec0a9ce0294e59d0">siteinfo_init()</a>, <a class="el" href="text_8php.html#a3d225b253bb9e0f2498c11647d927b0b">smilies()</a>, <a class="el" href="items_8php.html#adf2b8137dc4ad9ec958de2842f16f3c2">start_delivery_chain()</a>, <a class="el" href="items_8php.html#a25221826fa4621f523c68483e3b6af26">store_diaspora_comment_sig()</a>, <a class="el" href="items_8php.html#ab1bce4261bcf75ad62753b498a144d17">tag_deliver()</a>, <a class="el" href="items_8php.html#a88c6cf7649ac836fbbed82a7a0315110">tgroup_check()</a>, <a class="el" href="text_8php.html#a8264348059abd1d4d5bb521323d3b19a">unobscure()</a>, <a class="el" href="zot_8php.html#ab319d1d9fff9c7775d9daef42d1f33dd">update_modtime()</a>, <a class="el" href="socgraph_8php.html#a790690bb1a1d02483fe31632a160144d">update_suggestions()</a>, <a class="el" href="account_8php.html#a4fc13e528367f510fcb6d8bbfc559040">upgrade_link()</a>, <a class="el" href="account_8php.html#ac5c570a2d46446bad4dd2501e9c5a4b1">user_allow()</a>, <a class="el" href="text_8php.html#a6a3d80a6c6fb234fd0bac44203b828eb">valid_email()</a>, <a class="el" href="include_2network_8php.html#a897e7112d86eb95526cbd0bff9375f02">validate_email()</a>, <a class="el" href="account_8php.html#acd6b8d2124ba5ea4f4794d2c58ae8bf5">verify_email_address()</a>, <a class="el" href="viewconnections_8php.html#ab6c4d983e97b3a8a879567ff76507776">viewconnections_content()</a>, <a class="el" href="viewconnections_8php.html#a00163d50b17568f7b0e48b1ca9ab7330">viewconnections_init()</a>, <a class="el" href="viewsrc_8php.html#a6eff3d0c1d7d14b335c4edb785cd60a4">viewsrc_content()</a>, <a class="el" href="widgets_8php.html#a70442dfa079312d9d5e5ee01be51a165">widget_fullprofile()</a>, <a class="el" href="widgets_8php.html#abd2e508a2a0b911c4a838e3cb7599923">widget_profile()</a>, <a class="el" href="include_2network_8php.html#aafd06c0a75402aefb06cfb9f9740fa37">z_fetch_url()</a>, <a class="el" href="boot_8php.html#a59717d02602a4babf2a54da8b33d93a5">z_get_temp_dir()</a>, <a class="el" href="boot_8php.html#a476c499e15caf75972fed134a8f23b2e">z_get_upload_dir()</a>, <a class="el" href="include_2network_8php.html#a9129fd55e7fc175b4ea9a195cccc16bc">z_post_url()</a>, <a class="el" href="zfinger_8php.html#a8139b83a22ef98869adc10aa224027a0">zfinger_init()</a>, <a class="el" href="zot_8php.html#a61cdc1ec843663c423ed2d8160ae5aea">zot_fetch()</a>, <a class="el" href="zot_8php.html#a55056e863a7860bc0cf922e78fcce073">zot_gethub()</a>, <a class="el" href="zot_8php.html#aeea071f17e306fe3d0c488551906bfab">zot_import()</a>, and <a class="el" href="zotfeed_8php.html#a24dfc23d366e7f840cf2847d0c1c8eac">zotfeed_init()</a>.</p>
</div>
</div>
@@ -286,6 +368,17 @@ Functions</h2></td></tr>
</table>
</div><div class="memdoc">
+<p>Returns a value directly from the database configuration storage. </p>
+<p>This function queries directly the database and bypasses the chached storage from get_config($family, $key).</p>
+<dl class="params"><dt>Parameters</dt><dd>
+ <table class="params">
+ <tr><td class="paramtype">string</td><td class="paramname">$family</td><td>The category of the configuration value </td></tr>
+ <tr><td class="paramtype">string</td><td class="paramname">$key</td><td>The configuration key to query </td></tr>
+ </table>
+ </dd>
+</dl>
+<dl class="section return"><dt>Returns</dt><dd>mixed </dd></dl>
+
<p>Referenced by <a class="el" href="include_2config_8php.html#ad6da879e4fb5b37d1e161d4e9be5c32a">set_config()</a>.</p>
</div>
@@ -326,7 +419,21 @@ Functions</h2></td></tr>
</table>
</div><div class="memdoc">
-<p>Referenced by <a class="el" href="classConversation.html#af84ea6ccd72214c9bb4c504461cc8b09">Conversation\__construct()</a>, <a class="el" href="acl_8php.html#ac6776dba871806ecdb5d1659bc2eb07a">acl_init()</a>, <a class="el" href="classApp.html#a08f0537964d98958d218066364cff785">App\build_pagehead()</a>, <a class="el" href="security_8php.html#a8d23d2597aae380a3341872fe9513380">change_channel()</a>, <a class="el" href="channel_8php.html#a9c6a6179e0e626398ebecc6151905ef1">channel_content()</a>, <a class="el" href="connect_8php.html#a489f0a66c660de6ec4d6917b27674f07">connect_content()</a>, <a class="el" href="boot_8php.html#acc4e0c910af066148b810e5fde55fff1">construct_page()</a>, <a class="el" href="text_8php.html#ad6432621d0fafcbcf3d3b9b49bef7784">contact_block()</a>, <a class="el" href="Contact_8php.html#a28e062c884331dbb5dfa713228c25ad6">contact_remove()</a>, <a class="el" href="conversation_8php.html#affea1afb3f32ca41e966c8ddb4204d81">conversation()</a>, <a class="el" href="boot_8php.html#ad206598b909e8eb67eb0e0bb5ef69c13">current_theme()</a>, <a class="el" href="display_8php.html#a37137c98d47bf3306f4c2bb9f5b60de0">display_content()</a>, <a class="el" href="editpost_8php.html#a34011690864d122680c802e9e748ccfb">editpost_content()</a>, <a class="el" href="features_8php.html#a52b5bdfb61b256713efecf7a7b20b0c0">feature_enabled()</a>, <a class="el" href="contact__widgets_8php.html#a57e73ebcfd62bb5d8c7a7b9e663726d6">findpeople_widget()</a>, <a class="el" href="classItem.html#a3ee7667c2ec6cd7657328e27848c0bdf">Item\get_comment_box()</a>, <a class="el" href="identity_8php.html#a332df795f684788002f5a6424abacfd7">get_online_status()</a>, <a class="el" href="identity_8php.html#aaeb666872995e3ab8da8f7bc5f3b2bd3">get_theme_uid()</a>, <a class="el" href="mod_2group_8php.html#a07a64f6c65b0080d8190b3d9728a7a83">group_content()</a>, <a class="el" href="home_8php.html#ac4642c38b6f23a8d065dd4a75c620bde">home_init()</a>, <a class="el" href="invite_8php.html#a244385b28cfd021d308715f01158bfd9">invite_content()</a>, <a class="el" href="invite_8php.html#aeb0881c0f93c8e8552e5ed756ce6e5a5">invite_post()</a>, <a class="el" href="item_8php.html#a693cd09805755ab85bbb5ecae69a48c3">item_post()</a>, <a class="el" href="items_8php.html#a2541e6861a56d145c9281877cc501615">item_store()</a>, <a class="el" href="items_8php.html#acf0bf7c9d21ac84f32effb754f7ad484">item_store_update()</a>, <a class="el" href="items_8php.html#a756738301f2ed96be50232500677d58a">items_fetch()</a>, <a class="el" href="classFKOAuth1.html#a2b1dac2ed31fc6ef84668afdda8b263f">FKOAuth1\loginUser()</a>, <a class="el" href="mail_8php.html#a3c7c485fc69f92371e8b20936040eca1">mail_content()</a>, <a class="el" href="mod_2message_8php.html#ac72dfed3ce08fcb331d66b37edc6e15f">message_content()</a>, <a class="el" href="mod_2network_8php.html#a43f2f29b90c5e29072c561934bc8f8b4">network_content()</a>, <a class="el" href="pdledit_8php.html#a59cb550f6b7a4e7d8196fbc9de601619">pdledit_content()</a>, <a class="el" href="activities_8php.html#a80134e807719b3c54aba971958d2e132">profile_activity()</a>, <a class="el" href="identity_8php.html#a4751b522ea913d0e7ed43e03d22e9e68">profile_load()</a>, <a class="el" href="identity_8php.html#a432259b2cf5b6f59be53e71db9f2c7dc">profile_sidebar()</a>, <a class="el" href="profperm_8php.html#aef015787de2373d9fb3fe3f814fb5023">profperm_content()</a>, <a class="el" href="zot_8php.html#aad25a3fe0e1566121d6fb8222979bc10">remove_community_tag()</a>, <a class="el" href="rpost_8php.html#a8190354d789000806d9879aea276728f">rpost_content()</a>, <a class="el" href="search_8php.html#ab2568591359edde5b483a6cd9a24b2cc">search_content()</a>, <a class="el" href="include_2config_8php.html#a61591371cb18764138655d67dc817ab2">set_pconfig()</a>, <a class="el" href="text_8php.html#a3d225b253bb9e0f2498c11647d927b0b">smilies()</a>, <a class="el" href="items_8php.html#ab1bce4261bcf75ad62753b498a144d17">tag_deliver()</a>, <a class="el" href="view_2theme_2apw_2php_2config_8php.html#aa7d5739b72efef9822535b2b32d5364d">theme_content()</a>, and <a class="el" href="widgets_8php.html#a45ea061dabe9a8372e4ca3b9e5714256">widget_notes()</a>.</p>
+<p>Get a particular channel's config variable given the category name ($family) and a key. </p>
+<p>Get a particular channel's config value from the given category ($family) and the $key from a cached storage in $a-&gt;config[$uid].</p>
+<p>Returns false if not set.</p>
+<dl class="params"><dt>Parameters</dt><dd>
+ <table class="params">
+ <tr><td class="paramtype">string</td><td class="paramname">$uid</td><td>The channel_id </td></tr>
+ <tr><td class="paramtype">string</td><td class="paramname">$family</td><td>The category of the configuration value </td></tr>
+ <tr><td class="paramtype">string</td><td class="paramname">$key</td><td>The configuration key to query </td></tr>
+ <tr><td class="paramtype">boolean</td><td class="paramname">$instore</td><td>(deprecated, without function) </td></tr>
+ </table>
+ </dd>
+</dl>
+<dl class="section return"><dt>Returns</dt><dd>mixed Stored value or false if it does not exist </dd></dl>
+
+<p>Referenced by <a class="el" href="classConversation.html#af84ea6ccd72214c9bb4c504461cc8b09">Conversation\__construct()</a>, <a class="el" href="acl_8php.html#ac6776dba871806ecdb5d1659bc2eb07a">acl_init()</a>, <a class="el" href="bb2diaspora_8php.html#ab27761069ea1275f0fc4c543099c5519">bb2diaspora_itembody()</a>, <a class="el" href="blocks_8php.html#a2531a8fd51db3cecb2eb20c002c66e12">blocks_content()</a>, <a class="el" href="classApp.html#a08f0537964d98958d218066364cff785">App\build_pagehead()</a>, <a class="el" href="security_8php.html#a8d23d2597aae380a3341872fe9513380">change_channel()</a>, <a class="el" href="channel_8php.html#a9c6a6179e0e626398ebecc6151905ef1">channel_content()</a>, <a class="el" href="connect_8php.html#a489f0a66c660de6ec4d6917b27674f07">connect_content()</a>, <a class="el" href="connedit_8php.html#a795acb3d9d841f55c255d7611681ab67">connedit_content()</a>, <a class="el" href="connedit_8php.html#a234c48426b652bf4d37053f2af329ac5">connedit_post()</a>, <a class="el" href="text_8php.html#ad6432621d0fafcbcf3d3b9b49bef7784">contact_block()</a>, <a class="el" href="Contact_8php.html#a28e062c884331dbb5dfa713228c25ad6">contact_remove()</a>, <a class="el" href="conversation_8php.html#affea1afb3f32ca41e966c8ddb4204d81">conversation()</a>, <a class="el" href="boot_8php.html#ad206598b909e8eb67eb0e0bb5ef69c13">current_theme()</a>, <a class="el" href="diaspora_8php.html#ac1ab782a34552a7c6b4dc961754ed598">diaspora_request()</a>, <a class="el" href="mod_2directory_8php.html#aac79396570d759da2efac24fcedf5b44">directory_content()</a>, <a class="el" href="display_8php.html#a37137c98d47bf3306f4c2bb9f5b60de0">display_content()</a>, <a class="el" href="editpost_8php.html#a34011690864d122680c802e9e748ccfb">editpost_content()</a>, <a class="el" href="features_8php.html#a52b5bdfb61b256713efecf7a7b20b0c0">feature_enabled()</a>, <a class="el" href="contact__widgets_8php.html#a57e73ebcfd62bb5d8c7a7b9e663726d6">findpeople_widget()</a>, <a class="el" href="item_8php.html#a3daae7944f737bd30412a0d042207c0f">fix_attached_file_permissions()</a>, <a class="el" href="item_8php.html#a7b63a9d0cd02096e17dcf11f4afa7c10">fix_attached_photo_permissions()</a>, <a class="el" href="classItem.html#a3ee7667c2ec6cd7657328e27848c0bdf">Item\get_comment_box()</a>, <a class="el" href="identity_8php.html#a332df795f684788002f5a6424abacfd7">get_online_status()</a>, <a class="el" href="classItem.html#ad5dcbe0b94cb2d5719bc5b6bd8ad60c8">Item\get_template_data()</a>, <a class="el" href="identity_8php.html#aaeb666872995e3ab8da8f7bc5f3b2bd3">get_theme_uid()</a>, <a class="el" href="mod_2group_8php.html#a07a64f6c65b0080d8190b3d9728a7a83">group_content()</a>, <a class="el" href="home_8php.html#ac4642c38b6f23a8d065dd4a75c620bde">home_init()</a>, <a class="el" href="invite_8php.html#a244385b28cfd021d308715f01158bfd9">invite_content()</a>, <a class="el" href="invite_8php.html#aeb0881c0f93c8e8552e5ed756ce6e5a5">invite_post()</a>, <a class="el" href="item_8php.html#a693cd09805755ab85bbb5ecae69a48c3">item_post()</a>, <a class="el" href="items_8php.html#a2541e6861a56d145c9281877cc501615">item_store()</a>, <a class="el" href="items_8php.html#acf0bf7c9d21ac84f32effb754f7ad484">item_store_update()</a>, <a class="el" href="items_8php.html#a756738301f2ed96be50232500677d58a">items_fetch()</a>, <a class="el" href="boot_8php.html#a50a6707a28c7d05d3f49eaabc7994501">load_pdl()</a>, <a class="el" href="classFKOAuth1.html#a2b1dac2ed31fc6ef84668afdda8b263f">FKOAuth1\loginUser()</a>, <a class="el" href="mail_8php.html#a3c7c485fc69f92371e8b20936040eca1">mail_content()</a>, <a class="el" href="mod_2message_8php.html#ac72dfed3ce08fcb331d66b37edc6e15f">message_content()</a>, <a class="el" href="nav_8php.html#a43be0df73b90647ea70947ce004e231e">nav()</a>, <a class="el" href="mod_2network_8php.html#a43f2f29b90c5e29072c561934bc8f8b4">network_content()</a>, <a class="el" href="include_2follow_8php.html#ae387d4ae097c23d69f3247e7f08140c7">new_contact()</a>, <a class="el" href="enotify_8php.html#a3e9a9355b243777c488d2a9883908dfc">notification()</a>, <a class="el" href="pdledit_8php.html#a59cb550f6b7a4e7d8196fbc9de601619">pdledit_content()</a>, <a class="el" href="ping_8php.html#a77217b1b190b4c5d8770867b45f0c0a1">ping_init()</a>, <a class="el" href="post_8php.html#af59e6a1dc22d19d9257b01cd7ccedb75">post_post()</a>, <a class="el" href="activities_8php.html#a80134e807719b3c54aba971958d2e132">profile_activity()</a>, <a class="el" href="identity_8php.html#a4751b522ea913d0e7ed43e03d22e9e68">profile_load()</a>, <a class="el" href="identity_8php.html#a432259b2cf5b6f59be53e71db9f2c7dc">profile_sidebar()</a>, <a class="el" href="profperm_8php.html#aef015787de2373d9fb3fe3f814fb5023">profperm_content()</a>, <a class="el" href="zot_8php.html#aad25a3fe0e1566121d6fb8222979bc10">remove_community_tag()</a>, <a class="el" href="rpost_8php.html#a8190354d789000806d9879aea276728f">rpost_content()</a>, <a class="el" href="search_8php.html#ab2568591359edde5b483a6cd9a24b2cc">search_content()</a>, <a class="el" href="include_2config_8php.html#a61591371cb18764138655d67dc817ab2">set_pconfig()</a>, <a class="el" href="settings_8php.html#aa7ee94d88ac088edb04ccf3a26de3586">settings_post()</a>, <a class="el" href="text_8php.html#a3d225b253bb9e0f2498c11647d927b0b">smilies()</a>, <a class="el" href="items_8php.html#ab1bce4261bcf75ad62753b498a144d17">tag_deliver()</a>, <a class="el" href="view_2theme_2apw_2php_2config_8php.html#aa7d5739b72efef9822535b2b32d5364d">theme_content()</a>, <a class="el" href="webpages_8php.html#af3b7397d4abc153e3d2147740ee1a41d">webpages_content()</a>, <a class="el" href="widgets_8php.html#a7b1e357b5a2027718470b77ec921fc65">widget_archive()</a>, <a class="el" href="widgets_8php.html#a45ea061dabe9a8372e4ca3b9e5714256">widget_notes()</a>, <a class="el" href="widgets_8php.html#aaa73bcf1702eaadd9dcd253502f55e01">widget_settings_menu()</a>, <a class="el" href="zfinger_8php.html#a8139b83a22ef98869adc10aa224027a0">zfinger_init()</a>, and <a class="el" href="zot_8php.html#a7ac30ff51274bf0b6d3eade37972145c">zot_refresh()</a>.</p>
</div>
</div>
@@ -360,6 +467,19 @@ Functions</h2></td></tr>
</table>
</div><div class="memdoc">
+<p>Get a particular observer's config variable given the category name ($family) and a key. </p>
+<p>Get a particular observer's config value from the given category ($family) and the $key from a cached storage in $a-&gt;config[$xchan].</p>
+<p>Returns false if not set.</p>
+<dl class="params"><dt>Parameters</dt><dd>
+ <table class="params">
+ <tr><td class="paramtype">string</td><td class="paramname">$xchan</td><td>The observer's hash </td></tr>
+ <tr><td class="paramtype">string</td><td class="paramname">$family</td><td>The category of the configuration value </td></tr>
+ <tr><td class="paramtype">string</td><td class="paramname">$key</td><td>The configuration key to query </td></tr>
+ </table>
+ </dd>
+</dl>
+<dl class="section return"><dt>Returns</dt><dd>mixed Stored $value or false if it does not exist </dd></dl>
+
<p>Referenced by <a class="el" href="dir__fns_8php.html#acf621621e929d49441da30aad76a58cf">dir_safe_mode()</a>, <a class="el" href="mod_2directory_8php.html#aac79396570d759da2efac24fcedf5b44">directory_content()</a>, <a class="el" href="include_2config_8php.html#afe117b70f1bba2f6348d9300b601f86e">set_xconfig()</a>, and <a class="el" href="toggle__safesearch_8php.html#a23d5cfb2727a266e44993ffbf5595a79">toggle_safesearch_init()</a>.</p>
</div>
@@ -377,14 +497,21 @@ Functions</h2></td></tr>
</tr>
</table>
</div><div class="memdoc">
-<p>Arbitrary configuration storage Note: Please do not store booleans - convert to 0/1 integer values The get_?config() functions return boolean false for keys that are unset, and this could lead to subtle bugs.</p>
-<p>There are a few places in the code (such as the admin panel) where boolean configurations need to be fixed as of 10/08/2011. </p>
+
+<p>Loads the hub's configuration from database to a cached storage. </p>
+<p>Retrieve a category ($family) of config variables from database to a cached storage in the global $a-&gt;config[$family].</p>
+<dl class="params"><dt>Parameters</dt><dd>
+ <table class="params">
+ <tr><td class="paramtype">string</td><td class="paramname">$family</td><td>The category of the configuration value </td></tr>
+ </table>
+ </dd>
+</dl>
<p>Referenced by <a class="el" href="include_2api_8php.html#a623793229a7256dd31bcfd5ab90eef08">api_statusnet_config()</a>, <a class="el" href="boot_8php.html#a4c02d88e66852a01bd5a1feecb7c3ce3">check_config()</a>, <a class="el" href="cli__startup_8php.html#adfdde63686e33ccd4851fa5edc4fc70b">cli_startup()</a>, and <a class="el" href="include_2config_8php.html#af02c96e6b37335774b548914ede1d22e">get_config()</a>.</p>
</div>
</div>
-<a class="anchor" id="ac543813a980b3841cc5a277fcd4a24a6"></a>
+<a class="anchor" id="a559791dda7fef8a4b2394c83e835787b"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
@@ -392,27 +519,27 @@ Functions</h2></td></tr>
<td class="memname">load_pconfig </td>
<td>(</td>
<td class="paramtype">&#160;</td>
- <td class="paramname"><em>$uid</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">&#160;</td>
- <td class="paramname"><em>$family</em> = <code>''</code>&#160;</td>
- </tr>
- <tr>
+ <td class="paramname"><em>$uid</em></td><td>)</td>
<td></td>
- <td>)</td>
- <td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
+<p>Loads all configuration values of a channel into a cached storage. </p>
+<p>All configuration values of the given channel are stored in global cache which is available under the global variable $a-&gt;config[$uid].</p>
+<dl class="params"><dt>Parameters</dt><dd>
+ <table class="params">
+ <tr><td class="paramtype">string</td><td class="paramname">$uid</td><td>The channel_id </td></tr>
+ </table>
+ </dd>
+</dl>
+<dl class="section return"><dt>Returns</dt><dd>void|false Nothing or false if $uid is false </dd></dl>
+
<p>Referenced by <a class="el" href="conversation_8php.html#affea1afb3f32ca41e966c8ddb4204d81">conversation()</a>, and <a class="el" href="include_2config_8php.html#ad58a4913937179adb13201c2ee3261ad">get_pconfig()</a>.</p>
</div>
</div>
-<a class="anchor" id="a55bbed9a014c9109c767486834f3ca33"></a>
+<a class="anchor" id="aee4b619839cf4b64220f34edf5c67b52"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
@@ -420,22 +547,22 @@ Functions</h2></td></tr>
<td class="memname">load_xconfig </td>
<td>(</td>
<td class="paramtype">&#160;</td>
- <td class="paramname"><em>$xchan</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
+ <td class="paramname"><em>$xchan</em></td><td>)</td>
<td></td>
- <td class="paramtype">&#160;</td>
- <td class="paramname"><em>$family</em> = <code>''</code>&#160;</td>
- </tr>
- <tr>
- <td></td>
- <td>)</td>
- <td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
+<p>Loads a full xchan's configuration into a cached storage. </p>
+<p>All configuration values of the given observer hash are stored in global cache which is available under the global variable $a-&gt;config[$xchan].</p>
+<dl class="params"><dt>Parameters</dt><dd>
+ <table class="params">
+ <tr><td class="paramtype">string</td><td class="paramname">$xchan</td><td>The observer's hash </td></tr>
+ </table>
+ </dd>
+</dl>
+<dl class="section return"><dt>Returns</dt><dd>void|false Returns false if xchan is not set </dd></dl>
+
<p>Referenced by <a class="el" href="include_2config_8php.html#aa3dc1d3de2d091ac702e675acd3a085e">get_xconfig()</a>.</p>
</div>
@@ -470,7 +597,20 @@ Functions</h2></td></tr>
</table>
</div><div class="memdoc">
-<p>Referenced by <a class="el" href="admin_8php.html#aaa6addf2dbc3f3fcf99244a56b41eade">admin_page_dbsync()</a>, <a class="el" href="admin_8php.html#a233b7c8c31776b7020532003c6e44e1c">admin_page_logs_post()</a>, <a class="el" href="admin_8php.html#a54128076986ba80c4a103de3fc3e19a8">admin_page_plugins()</a>, <a class="el" href="admin_8php.html#add865f4ae806ecbf716f423fc3e50e4f">admin_page_site_post()</a>, <a class="el" href="admin_8php.html#af124619fdc278fe2bf14c45ddaa260fb">admin_page_themes()</a>, <a class="el" href="mod_2api_8php.html#a33315b5bbf5418f6850b2038107b526d">api_content()</a>, <a class="el" href="boot_8php.html#a4c02d88e66852a01bd5a1feecb7c3ce3">check_config()</a>, <a class="el" href="account_8php.html#a141fe579c351c78209d425473f978eb5">create_account()</a>, <a class="el" href="identity_8php.html#a1cf83ac2b645de12868edaa3a5718f05">create_sys_channel()</a>, <a class="el" href="dir__fns_8php.html#a8c15aa69da12f2d3476b9e93b82b337d">find_upstream_directory()</a>, <a class="el" href="poller_8php.html#a5f12df3a4738124b6c039971e87e76da">poller_run()</a>, <a class="el" href="view_2theme_2blogga_2php_2config_8php.html#aef2da5582b7cb6b5f63e5ca5d69fd30b">theme_admin_post()</a>, and <a class="el" href="setup_8php.html#aea1ebdda58ec938f4e7b31aa5c5f6b58">what_next()</a>.</p>
+<p>Sets a configuration value for the hub. </p>
+<p>Stores a config value ($value) in the category ($family) under the key ($key).</p>
+<p>Please do not store booleans - convert to 0/1 integer values!</p>
+<dl class="params"><dt>Parameters</dt><dd>
+ <table class="params">
+ <tr><td class="paramtype">string</td><td class="paramname">$family</td><td>The category of the configuration value </td></tr>
+ <tr><td class="paramtype">string</td><td class="paramname">$key</td><td>The configuration key to set </td></tr>
+ <tr><td class="paramtype">mixed</td><td class="paramname">$value</td><td>The value to store in the configuration </td></tr>
+ </table>
+ </dd>
+</dl>
+<dl class="section return"><dt>Returns</dt><dd>mixed Return the set value, or false if the database update failed </dd></dl>
+
+<p>Referenced by <a class="el" href="admin_8php.html#aaa6addf2dbc3f3fcf99244a56b41eade">admin_page_dbsync()</a>, <a class="el" href="admin_8php.html#a233b7c8c31776b7020532003c6e44e1c">admin_page_logs_post()</a>, <a class="el" href="admin_8php.html#a54128076986ba80c4a103de3fc3e19a8">admin_page_plugins()</a>, <a class="el" href="admin_8php.html#add865f4ae806ecbf716f423fc3e50e4f">admin_page_site_post()</a>, <a class="el" href="admin_8php.html#af124619fdc278fe2bf14c45ddaa260fb">admin_page_themes()</a>, <a class="el" href="mod_2api_8php.html#a33315b5bbf5418f6850b2038107b526d">api_content()</a>, <a class="el" href="boot_8php.html#a4c02d88e66852a01bd5a1feecb7c3ce3">check_config()</a>, <a class="el" href="dir__fns_8php.html#a2f7d74bb2aea8bcd2537aee5c6708a16">check_upstream_directory()</a>, <a class="el" href="account_8php.html#a141fe579c351c78209d425473f978eb5">create_account()</a>, <a class="el" href="identity_8php.html#a1cf83ac2b645de12868edaa3a5718f05">create_sys_channel()</a>, <a class="el" href="dir__fns_8php.html#a8c15aa69da12f2d3476b9e93b82b337d">find_upstream_directory()</a>, <a class="el" href="poller_8php.html#a5f12df3a4738124b6c039971e87e76da">poller_run()</a>, <a class="el" href="statistics__fns_8php.html#a82726229a961d3bd3d543005c61dd8e6">update_channels_active_halfyear_stat()</a>, <a class="el" href="statistics__fns_8php.html#ad2b7b595c039c4c2eb0d6cd57a393dfe">update_channels_active_monthly_stat()</a>, <a class="el" href="statistics__fns_8php.html#a05858927cce81fd367aedf85a94ed90c">update_channels_total_stat()</a>, <a class="el" href="statistics__fns_8php.html#a9dd516dda693f17f5ce48a94876f7efa">update_local_posts_stat()</a>, and <a class="el" href="setup_8php.html#aea1ebdda58ec938f4e7b31aa5c5f6b58">what_next()</a>.</p>
</div>
</div>
@@ -510,7 +650,20 @@ Functions</h2></td></tr>
</table>
</div><div class="memdoc">
-<p>Referenced by <a class="el" href="connect_8php.html#a417ec27afe33f21a929667a665e32ee2">connect_post()</a>, <a class="el" href="invite_8php.html#aeb0881c0f93c8e8552e5ed756ce6e5a5">invite_post()</a>, <a class="el" href="notes_8php.html#a4dbd7b1f906440746af48b484d66535a">notes_init()</a>, <a class="el" href="pdledit_8php.html#a81da3c955d0e3db55d148a31483104c7">pdledit_post()</a>, <a class="el" href="zot_8php.html#ac301c67864917c35922257950ae0f95c">process_channel_sync_delivery()</a>, <a class="el" href="register_8php.html#a51731dcc1917c58a790eb1c0f6132271">register_post()</a>, <a class="el" href="settings_8php.html#aa7ee94d88ac088edb04ccf3a26de3586">settings_post()</a>, and <a class="el" href="view_2theme_2apw_2php_2config_8php.html#ad29461920cf03b9ce1428e21eb1f4ba6">theme_post()</a>.</p>
+<p>Sets a configuration value for a channel. </p>
+<p>Stores a config value ($value) in the category ($family) under the key ($key) for the channel_id $uid.</p>
+<p>Please do not store booleans - convert to 0/1 integer values!</p>
+<dl class="params"><dt>Parameters</dt><dd>
+ <table class="params">
+ <tr><td class="paramtype">string</td><td class="paramname">$uid</td><td>The channel_id </td></tr>
+ <tr><td class="paramtype">string</td><td class="paramname">$family</td><td>The category of the configuration value </td></tr>
+ <tr><td class="paramtype">string</td><td class="paramname">$key</td><td>The configuration key to query </td></tr>
+ </table>
+ </dd>
+</dl>
+<dl class="section return"><dt>Returns</dt><dd>mixed Stored $value or false </dd></dl>
+
+<p>Referenced by <a class="el" href="connect_8php.html#a417ec27afe33f21a929667a665e32ee2">connect_post()</a>, <a class="el" href="connedit_8php.html#a234c48426b652bf4d37053f2af329ac5">connedit_post()</a>, <a class="el" href="identity_8php.html#a345f4c943d84de502ec6e72d2c813945">create_identity()</a>, <a class="el" href="invite_8php.html#aeb0881c0f93c8e8552e5ed756ce6e5a5">invite_post()</a>, <a class="el" href="notes_8php.html#a4dbd7b1f906440746af48b484d66535a">notes_init()</a>, <a class="el" href="pdledit_8php.html#a81da3c955d0e3db55d148a31483104c7">pdledit_post()</a>, <a class="el" href="zot_8php.html#ac301c67864917c35922257950ae0f95c">process_channel_sync_delivery()</a>, <a class="el" href="register_8php.html#a51731dcc1917c58a790eb1c0f6132271">register_post()</a>, <a class="el" href="settings_8php.html#aa7ee94d88ac088edb04ccf3a26de3586">settings_post()</a>, and <a class="el" href="view_2theme_2apw_2php_2config_8php.html#ad29461920cf03b9ce1428e21eb1f4ba6">theme_post()</a>.</p>
</div>
</div>
@@ -550,6 +703,19 @@ Functions</h2></td></tr>
</table>
</div><div class="memdoc">
+<p>Sets a configuration value for an observer. </p>
+<p>Stores a config value ($value) in the category ($family) under the key ($key) for the observer's $xchan hash.</p>
+<p>Please do not store booleans - convert to 0/1 integer values!</p>
+<dl class="params"><dt>Parameters</dt><dd>
+ <table class="params">
+ <tr><td class="paramtype">string</td><td class="paramname">$xchan</td><td>The observer's hash </td></tr>
+ <tr><td class="paramtype">string</td><td class="paramname">$family</td><td>The category of the configuration value </td></tr>
+ <tr><td class="paramtype">string</td><td class="paramname">$key</td><td>The configuration key to set </td></tr>
+ </table>
+ </dd>
+</dl>
+<dl class="section return"><dt>Returns</dt><dd>mixed Stored $value or false </dd></dl>
+
<p>Referenced by <a class="el" href="openid_8php.html#a9a13827dbcf61ae4e45f0b6b33a88f43">openid_content()</a>, and <a class="el" href="toggle__safesearch_8php.html#a23d5cfb2727a266e44993ffbf5595a79">toggle_safesearch_init()</a>.</p>
</div>
diff --git a/doc/html/include_2config_8php.js b/doc/html/include_2config_8php.js
index a9f05bed3..5ba8c47a5 100644
--- a/doc/html/include_2config_8php.js
+++ b/doc/html/include_2config_8php.js
@@ -8,8 +8,8 @@ var include_2config_8php =
[ "get_pconfig", "include_2config_8php.html#ad58a4913937179adb13201c2ee3261ad", null ],
[ "get_xconfig", "include_2config_8php.html#aa3dc1d3de2d091ac702e675acd3a085e", null ],
[ "load_config", "include_2config_8php.html#a27559f388c9b9af81c94e48d6889d1d1", null ],
- [ "load_pconfig", "include_2config_8php.html#ac543813a980b3841cc5a277fcd4a24a6", null ],
- [ "load_xconfig", "include_2config_8php.html#a55bbed9a014c9109c767486834f3ca33", null ],
+ [ "load_pconfig", "include_2config_8php.html#a559791dda7fef8a4b2394c83e835787b", null ],
+ [ "load_xconfig", "include_2config_8php.html#aee4b619839cf4b64220f34edf5c67b52", null ],
[ "set_config", "include_2config_8php.html#ad6da879e4fb5b37d1e161d4e9be5c32a", null ],
[ "set_pconfig", "include_2config_8php.html#a61591371cb18764138655d67dc817ab2", null ],
[ "set_xconfig", "include_2config_8php.html#afe117b70f1bba2f6348d9300b601f86e", null ]
diff --git a/doc/html/include_2follow_8php.html b/doc/html/include_2follow_8php.html
index 64e43db27..cef93a114 100644
--- a/doc/html/include_2follow_8php.html
+++ b/doc/html/include_2follow_8php.html
@@ -159,7 +159,7 @@ Functions</h2></td></tr>
</div><div class="memdoc">
<p>If there is a default group for this channel, add this member to it </p>
-<p>Referenced by <a class="el" href="mod_2follow_8php.html#a171f5b19f50d7738adc3b2e96ec6018a">follow_init()</a>.</p>
+<p>Referenced by <a class="el" href="identity_8php.html#a345f4c943d84de502ec6e72d2c813945">create_identity()</a>, and <a class="el" href="mod_2follow_8php.html#a171f5b19f50d7738adc3b2e96ec6018a">follow_init()</a>.</p>
</div>
</div>
diff --git a/doc/html/include_2group_8php.html b/doc/html/include_2group_8php.html
index 84fc3442a..2f442e6c2 100644
--- a/doc/html/include_2group_8php.html
+++ b/doc/html/include_2group_8php.html
@@ -152,7 +152,7 @@ Functions</h2></td></tr>
</table>
</div><div class="memdoc">
-<p>Referenced by <a class="el" href="items_8php.html#a01e3cf44e082fa9bd06dcde5bf713d70">collect_recipients()</a>, and <a class="el" href="items_8php.html#afbcf26dfcf8a83fff952aa858c1b7b67">enumerate_permissions()</a>.</p>
+<p>Referenced by <a class="el" href="items_8php.html#a772f0ae77ad77c8ab68ed918a3870946">collect_recipients()</a>, and <a class="el" href="items_8php.html#afbcf26dfcf8a83fff952aa858c1b7b67">enumerate_permissions()</a>.</p>
</div>
</div>
@@ -186,7 +186,7 @@ Functions</h2></td></tr>
</table>
</div><div class="memdoc">
-<p>Referenced by <a class="el" href="identity_8php.html#a345f4c943d84de502ec6e72d2c813945">create_identity()</a>, and <a class="el" href="mod_2group_8php.html#aed1f009b1221348021bb34761160ef35">group_post()</a>.</p>
+<p>Referenced by <a class="el" href="identity_8php.html#a345f4c943d84de502ec6e72d2c813945">create_identity()</a>, <a class="el" href="mod_2group_8php.html#aed1f009b1221348021bb34761160ef35">group_post()</a>, and <a class="el" href="settings_8php.html#aa7ee94d88ac088edb04ccf3a26de3586">settings_post()</a>.</p>
</div>
</div>
@@ -226,7 +226,7 @@ Functions</h2></td></tr>
</table>
</div><div class="memdoc">
-<p>Referenced by <a class="el" href="connections_8php.html#a1224058db8e3fb56463eb312f98e561d">connections_post()</a>, <a class="el" href="connedit_8php.html#a234c48426b652bf4d37053f2af329ac5">connedit_post()</a>, <a class="el" href="contactgroup_8php.html#a18c7391b1b25debaf98c9dba639caab3">contactgroup_content()</a>, <a class="el" href="mod_2group_8php.html#a07a64f6c65b0080d8190b3d9728a7a83">group_content()</a>, and <a class="el" href="include_2follow_8php.html#ae387d4ae097c23d69f3247e7f08140c7">new_contact()</a>.</p>
+<p>Referenced by <a class="el" href="connections_8php.html#a1224058db8e3fb56463eb312f98e561d">connections_post()</a>, <a class="el" href="connedit_8php.html#a234c48426b652bf4d37053f2af329ac5">connedit_post()</a>, <a class="el" href="contactgroup_8php.html#a18c7391b1b25debaf98c9dba639caab3">contactgroup_content()</a>, <a class="el" href="identity_8php.html#a345f4c943d84de502ec6e72d2c813945">create_identity()</a>, <a class="el" href="diaspora_8php.html#ac1ab782a34552a7c6b4dc961754ed598">diaspora_request()</a>, <a class="el" href="mod_2group_8php.html#a07a64f6c65b0080d8190b3d9728a7a83">group_content()</a>, <a class="el" href="include_2follow_8php.html#ae387d4ae097c23d69f3247e7f08140c7">new_contact()</a>, and <a class="el" href="settings_8php.html#aa7ee94d88ac088edb04ccf3a26de3586">settings_post()</a>.</p>
</div>
</div>
@@ -254,7 +254,7 @@ Functions</h2></td></tr>
</table>
</div><div class="memdoc">
-<p>Referenced by <a class="el" href="include_2group_8php.html#a06ec565d2b64e79044e7c1bf91a2a4ce">group_add()</a>, <a class="el" href="include_2group_8php.html#a0122ef312df2c5546b1a46b3e6c7b31b">group_add_member()</a>, <a class="el" href="mod_2group_8php.html#aed1f009b1221348021bb34761160ef35">group_post()</a>, <a class="el" href="include_2group_8php.html#a540e3ef36f47d47532646be4241f6518">group_rmv_member()</a>, and <a class="el" href="item_8php.html#aa22feef4de326e1d7078dedd892e615c">handle_tag()</a>.</p>
+<p>Referenced by <a class="el" href="include_2group_8php.html#a06ec565d2b64e79044e7c1bf91a2a4ce">group_add()</a>, <a class="el" href="include_2group_8php.html#a0122ef312df2c5546b1a46b3e6c7b31b">group_add_member()</a>, <a class="el" href="mod_2group_8php.html#aed1f009b1221348021bb34761160ef35">group_post()</a>, <a class="el" href="include_2group_8php.html#a540e3ef36f47d47532646be4241f6518">group_rmv_member()</a>, and <a class="el" href="text_8php.html#aa22feef4de326e1d7078dedd892e615c">handle_tag()</a>.</p>
</div>
</div>
@@ -300,7 +300,7 @@ Functions</h2></td></tr>
</table>
</div><div class="memdoc">
-<p>Referenced by <a class="el" href="connections_8php.html#a1224058db8e3fb56463eb312f98e561d">connections_post()</a>, <a class="el" href="connedit_8php.html#a234c48426b652bf4d37053f2af329ac5">connedit_post()</a>, <a class="el" href="items_8php.html#a756738301f2ed96be50232500677d58a">items_fetch()</a>, <a class="el" href="mod_2network_8php.html#a43f2f29b90c5e29072c561934bc8f8b4">network_content()</a>, and <a class="el" href="include_2follow_8php.html#ae387d4ae097c23d69f3247e7f08140c7">new_contact()</a>.</p>
+<p>Referenced by <a class="el" href="connections_8php.html#a1224058db8e3fb56463eb312f98e561d">connections_post()</a>, <a class="el" href="connedit_8php.html#a234c48426b652bf4d37053f2af329ac5">connedit_post()</a>, <a class="el" href="diaspora_8php.html#ac1ab782a34552a7c6b4dc961754ed598">diaspora_request()</a>, <a class="el" href="items_8php.html#a756738301f2ed96be50232500677d58a">items_fetch()</a>, <a class="el" href="mod_2network_8php.html#a43f2f29b90c5e29072c561934bc8f8b4">network_content()</a>, and <a class="el" href="include_2follow_8php.html#ae387d4ae097c23d69f3247e7f08140c7">new_contact()</a>.</p>
</div>
</div>
diff --git a/doc/html/include_2menu_8php.html b/doc/html/include_2menu_8php.html
index b00d62faa..ad434f83d 100644
--- a/doc/html/include_2menu_8php.html
+++ b/doc/html/include_2menu_8php.html
@@ -122,6 +122,8 @@ Functions</h2></td></tr>
<tr class="separator:a08a800821721781a8dfffbe31481ff98"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a32701c4245e78ba9106eef52c08bf33d"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="include_2menu_8php.html#a32701c4245e78ba9106eef52c08bf33d">menu_list</a> ($channel_id, $name= '', $flags=0)</td></tr>
<tr class="separator:a32701c4245e78ba9106eef52c08bf33d"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a251bf7e15d21627fd92614198e41c485"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="include_2menu_8php.html#a251bf7e15d21627fd92614198e41c485">menu_list_count</a> ($channel_id, $name= '', $flags=0)</td></tr>
+<tr class="separator:a251bf7e15d21627fd92614198e41c485"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a6a33c6a3db2a7510b16cc656edaec571"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="include_2menu_8php.html#a6a33c6a3db2a7510b16cc656edaec571">menu_edit</a> ($arr)</td></tr>
<tr class="separator:a6a33c6a3db2a7510b16cc656edaec571"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a3884bda4d85d84ec99447db9403a68d8"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="include_2menu_8php.html#a3884bda4d85d84ec99447db9403a68d8">menu_delete</a> ($menu_name, $uid)</td></tr>
@@ -425,6 +427,40 @@ Functions</h2></td></tr>
</div>
</div>
+<a class="anchor" id="a251bf7e15d21627fd92614198e41c485"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">menu_list_count </td>
+ <td>(</td>
+ <td class="paramtype">&#160;</td>
+ <td class="paramname"><em>$channel_id</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">&#160;</td>
+ <td class="paramname"><em>$name</em> = <code>''</code>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">&#160;</td>
+ <td class="paramname"><em>$flags</em> = <code>0</code>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p>Referenced by <a class="el" href="nav_8php.html#a43be0df73b90647ea70947ce004e231e">nav()</a>.</p>
+
+</div>
+</div>
<a class="anchor" id="a03a5deed3908543581c074ce333e9d6a"></a>
<div class="memitem">
<div class="memproto">
diff --git a/doc/html/include_2menu_8php.js b/doc/html/include_2menu_8php.js
index c5e645c10..0db36147b 100644
--- a/doc/html/include_2menu_8php.js
+++ b/doc/html/include_2menu_8php.js
@@ -10,5 +10,6 @@ var include_2menu_8php =
[ "menu_fetch", "include_2menu_8php.html#a68ebbf492470c930f652013656f9071d", null ],
[ "menu_fetch_id", "include_2menu_8php.html#a47447c01ba8ea04cd74af1d4c5b68fc7", null ],
[ "menu_list", "include_2menu_8php.html#a32701c4245e78ba9106eef52c08bf33d", null ],
+ [ "menu_list_count", "include_2menu_8php.html#a251bf7e15d21627fd92614198e41c485", null ],
[ "menu_render", "include_2menu_8php.html#a03a5deed3908543581c074ce333e9d6a", null ]
]; \ No newline at end of file
diff --git a/doc/html/include_2network_8php.html b/doc/html/include_2network_8php.html
index e73679e37..f30cd1311 100644
--- a/doc/html/include_2network_8php.html
+++ b/doc/html/include_2network_8php.html
@@ -118,7 +118,9 @@ Functions</h2></td></tr>
<tr class="separator:aafd06c0a75402aefb06cfb9f9740fa37"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a9129fd55e7fc175b4ea9a195cccc16bc"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="include_2network_8php.html#a9129fd55e7fc175b4ea9a195cccc16bc">z_post_url</a> ($url, $params, $redirects=0, $opts=array())</td></tr>
<tr class="separator:a9129fd55e7fc175b4ea9a195cccc16bc"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a4c5d50079e089168d9248427018fffd4"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="include_2network_8php.html#a4c5d50079e089168d9248427018fffd4">json_return_and_die</a> ($<a class="el" href="boot_8php.html#a01353c9abebc3544ea080ac161729632">x</a>)</td></tr>
+<tr class="memitem:a984708e60d531b31b2d1f88b5f408f7b"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="include_2network_8php.html#a984708e60d531b31b2d1f88b5f408f7b">z_post_url_json</a> ($url, $params, $redirects=0, $opts=array())</td></tr>
+<tr class="separator:a984708e60d531b31b2d1f88b5f408f7b"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a4c5d50079e089168d9248427018fffd4"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="include_2network_8php.html#a4c5d50079e089168d9248427018fffd4">json_return_and_die</a> ($<a class="el" href="boot_8php.html#ae97836b0547953be182a2334c9c91d3c">x</a>)</td></tr>
<tr class="separator:a4c5d50079e089168d9248427018fffd4"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a9e9da2aafb806c98ecdc318604e60dc6"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="include_2network_8php.html#a9e9da2aafb806c98ecdc318604e60dc6">xml_status</a> ($st, $message= '')</td></tr>
<tr class="separator:a9e9da2aafb806c98ecdc318604e60dc6"><td class="memSeparator" colspan="2">&#160;</td></tr>
@@ -126,12 +128,6 @@ Functions</h2></td></tr>
<tr class="separator:a4cfb2c05a1c295317283d762440ce0b2"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ad4056d3ce69988f5c1a997a79f503246"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="include_2network_8php.html#ad4056d3ce69988f5c1a997a79f503246">convert_xml_element_to_array</a> ($xml_element, &amp;$recursion_depth=0)</td></tr>
<tr class="separator:ad4056d3ce69988f5c1a997a79f503246"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:adf6008b38c555e98e7ed10da9ede2335"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="include_2network_8php.html#adf6008b38c555e98e7ed10da9ede2335">webfinger_dfrn</a> ($s, &amp;$hcard)</td></tr>
-<tr class="separator:adf6008b38c555e98e7ed10da9ede2335"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a8122356933bcd6b0a8567e8e15ae5cc5"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="include_2network_8php.html#a8122356933bcd6b0a8567e8e15ae5cc5">webfinger</a> ($s, $debug=false)</td></tr>
-<tr class="separator:a8122356933bcd6b0a8567e8e15ae5cc5"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a8d5a3afb51cc932032b5dcc159efaae0"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="include_2network_8php.html#a8d5a3afb51cc932032b5dcc159efaae0">fetch_lrdd_template</a> ($host)</td></tr>
-<tr class="separator:a8d5a3afb51cc932032b5dcc159efaae0"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a5caa264fab6d2b2344e6bd5b298b08f2"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="include_2network_8php.html#a5caa264fab6d2b2344e6bd5b298b08f2">validate_url</a> (&amp;$url)</td></tr>
<tr class="separator:a5caa264fab6d2b2344e6bd5b298b08f2"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a897e7112d86eb95526cbd0bff9375f02"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="include_2network_8php.html#a897e7112d86eb95526cbd0bff9375f02">validate_email</a> ($addr)</td></tr>
@@ -152,6 +148,22 @@ Functions</h2></td></tr>
<tr class="separator:a469b9bd700269cd07d954f1a16c5899b"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a1ff07d9fad93b713b93da0ab77aab7f0"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="include_2network_8php.html#a1ff07d9fad93b713b93da0ab77aab7f0">email_send</a> ($addr, $subject, $headers, $item)</td></tr>
<tr class="separator:a1ff07d9fad93b713b93da0ab77aab7f0"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a5176176ddc1906d91f186df6fbd87b48"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="include_2network_8php.html#a5176176ddc1906d91f186df6fbd87b48">discover_by_url</a> ($url, $arr=null)</td></tr>
+<tr class="separator:a5176176ddc1906d91f186df6fbd87b48"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a63e62946e194928eb17c5a9f2bbef0fe"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="include_2network_8php.html#a63e62946e194928eb17c5a9f2bbef0fe">discover_by_webbie</a> ($webbie)</td></tr>
+<tr class="separator:a63e62946e194928eb17c5a9f2bbef0fe"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a3e6c751a51de33ad3563f0938296e78a"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="include_2network_8php.html#a3e6c751a51de33ad3563f0938296e78a">webfinger_rfc7033</a> ($webbie)</td></tr>
+<tr class="separator:a3e6c751a51de33ad3563f0938296e78a"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a872bbe72d23826c64c9e0f822180a3ec"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="include_2network_8php.html#a872bbe72d23826c64c9e0f822180a3ec">old_webfinger</a> ($webbie)</td></tr>
+<tr class="separator:a872bbe72d23826c64c9e0f822180a3ec"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a8d5a3afb51cc932032b5dcc159efaae0"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="include_2network_8php.html#a8d5a3afb51cc932032b5dcc159efaae0">fetch_lrdd_template</a> ($host)</td></tr>
+<tr class="separator:a8d5a3afb51cc932032b5dcc159efaae0"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a850ed5307c6a18076f4b80addc99602d"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="include_2network_8php.html#a850ed5307c6a18076f4b80addc99602d">fetch_xrd_links</a> ($url)</td></tr>
+<tr class="separator:a850ed5307c6a18076f4b80addc99602d"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:acb0bd7f5fe38ff1eaebeae3284525070"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="include_2network_8php.html#acb0bd7f5fe38ff1eaebeae3284525070">scrape_vcard</a> ($url)</td></tr>
+<tr class="separator:acb0bd7f5fe38ff1eaebeae3284525070"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a316f318167a039c89719afbd129a8f3c"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="include_2network_8php.html#a316f318167a039c89719afbd129a8f3c">scrape_feed</a> ($url)</td></tr>
+<tr class="separator:a316f318167a039c89719afbd129a8f3c"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<h2 class="groupheader">Function Documentation</h2>
<a class="anchor" id="aba38458a2ff2d92d3536488dbb119694"></a>
@@ -230,6 +242,54 @@ Functions</h2></td></tr>
</table>
</div><div class="memdoc">
+<p>Referenced by <a class="el" href="include_2network_8php.html#a850ed5307c6a18076f4b80addc99602d">fetch_xrd_links()</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a5176176ddc1906d91f186df6fbd87b48"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">discover_by_url </td>
+ <td>(</td>
+ <td class="paramtype">&#160;</td>
+ <td class="paramname"><em>$url</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">&#160;</td>
+ <td class="paramname"><em>$arr</em> = <code>null</code>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p>Referenced by <a class="el" href="include_2follow_8php.html#ae387d4ae097c23d69f3247e7f08140c7">new_contact()</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a63e62946e194928eb17c5a9f2bbef0fe"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">discover_by_webbie </td>
+ <td>(</td>
+ <td class="paramtype">&#160;</td>
+ <td class="paramname"><em>$webbie</em></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p>Referenced by <a class="el" href="bb2diaspora_8php.html#a4a27604f0745f1efda672966aaca9a3b">diaspora_mention_callback()</a>, <a class="el" href="diaspora_8php.html#aade0c165fcdded71352c7a67bf6ce37b">find_diaspora_person_by_handle()</a>, <a class="el" href="items_8php.html#a2c3f97b2109c05df86d97449b3c78ebc">import_author_diaspora()</a>, and <a class="el" href="include_2follow_8php.html#ae387d4ae097c23d69f3247e7f08140c7">new_contact()</a>.</p>
+
</div>
</div>
<a class="anchor" id="a469b9bd700269cd07d954f1a16c5899b"></a>
@@ -312,7 +372,25 @@ Functions</h2></td></tr>
</table>
</div><div class="memdoc">
-<p>Referenced by <a class="el" href="include_2network_8php.html#a8122356933bcd6b0a8567e8e15ae5cc5">webfinger()</a>.</p>
+<p>Referenced by <a class="el" href="include_2network_8php.html#a872bbe72d23826c64c9e0f822180a3ec">old_webfinger()</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a850ed5307c6a18076f4b80addc99602d"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">fetch_xrd_links </td>
+ <td>(</td>
+ <td class="paramtype">&#160;</td>
+ <td class="paramname"><em>$url</em></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p>Referenced by <a class="el" href="include_2network_8php.html#a8d5a3afb51cc932032b5dcc159efaae0">fetch_lrdd_template()</a>, and <a class="el" href="include_2network_8php.html#a872bbe72d23826c64c9e0f822180a3ec">old_webfinger()</a>.</p>
</div>
</div>
@@ -367,7 +445,7 @@ Functions</h2></td></tr>
</dl>
<dl class="section return"><dt>Returns</dt><dd>(does not return, process is terminated) </dd></dl>
-<p>Referenced by <a class="el" href="__well__known_8php.html#a6ebfa937a2024f0b5dab53f0ac90fed0">_well_known_init()</a>, <a class="el" href="cloud_8php.html#a1b79a6fe0454bc76673ad9aef55bf02d">cloud_init()</a>, <a class="el" href="items_8php.html#a04a35b610acfe54434df08adec39c0c7">get_feed_for()</a>, and <a class="el" href="poco_8php.html#a53def16f75e3d41f1d2bb7cfa4905498">poco_init()</a>.</p>
+<p>Referenced by <a class="el" href="__well__known_8php.html#a6ebfa937a2024f0b5dab53f0ac90fed0">_well_known_init()</a>, <a class="el" href="cloud_8php.html#ad2e96e917852f27dedfc263d37e13756">cloud_init()</a>, <a class="el" href="diaspora_8php.html#a849754ec369e1a60fadae5c14584ca36">diaspora_decode()</a>, <a class="el" href="items_8php.html#a04a35b610acfe54434df08adec39c0c7">get_feed_for()</a>, <a class="el" href="p_8php.html#af9d5530ca0b3dc9409cf591c39e2480e">p_init()</a>, <a class="el" href="poco_8php.html#a53def16f75e3d41f1d2bb7cfa4905498">poco_init()</a>, and <a class="el" href="receive_8php.html#a03d8fa26e77844020ba5602deca7d494">receive_post()</a>.</p>
</div>
</div>
@@ -385,7 +463,25 @@ Functions</h2></td></tr>
</table>
</div><div class="memdoc">
-<p>Referenced by <a class="el" href="include_2api_8php.html#aa9dc5350b26d6c7727d6c4b641ecba18">api_albums()</a>, <a class="el" href="include_2api_8php.html#a72bfecac1970bc29b853073e816388ff">api_channel_stream()</a>, <a class="el" href="include_2api_8php.html#adfc035ee6303c1d8ba5336a4ead2bd53">api_export_basic()</a>, <a class="el" href="include_2api_8php.html#aa6fc3bc8c0fad1d081db0dcc456dd77f">api_photos()</a>, <a class="el" href="mod_2chat_8php.html#a8b0b8bee6fef6477e8c64c5e951b1b4f">chat_content()</a>, <a class="el" href="chatsvc_8php.html#a7032784215e1f6747cf385a6598770f9">chatsvc_content()</a>, <a class="el" href="chatsvc_8php.html#a28d248b056fa47452e28ed01130e9116">chatsvc_init()</a>, <a class="el" href="chatsvc_8php.html#a7c9a9b9c24a2b02eed8efd6b09632d03">chatsvc_post()</a>, <a class="el" href="dirsearch_8php.html#aa1fb04e1de4f25b63349ac78f94ceb4c">dirsearch_content()</a>, <a class="el" href="new__channel_8php.html#a1ad7f99e4366a32942c6b954aba3a164">new_channel_init()</a>, <a class="el" href="notes_8php.html#a4dbd7b1f906440746af48b484d66535a">notes_init()</a>, <a class="el" href="oexchange_8php.html#a2d8b785cd7d041a4e6274f5af370cf26">oexchange_content()</a>, <a class="el" href="online_8php.html#a80e107c84eb722b0ca11d0413b96f9f7">online_init()</a>, <a class="el" href="post_8php.html#af4b48181ce773ef0cdfc972441445c34">post_init()</a>, <a class="el" href="post_8php.html#af59e6a1dc22d19d9257b01cd7ccedb75">post_post()</a>, <a class="el" href="include_2api_8php.html#aafa82b65a9f879a1a1197cfe8aaf3898">red_item_new()</a>, <a class="el" href="register_8php.html#ae20c0cd40f738d6295de58b9202c83d5">register_init()</a>, <a class="el" href="zfinger_8php.html#a8139b83a22ef98869adc10aa224027a0">zfinger_init()</a>, and <a class="el" href="zotfeed_8php.html#a24dfc23d366e7f840cf2847d0c1c8eac">zotfeed_init()</a>.</p>
+<p>Referenced by <a class="el" href="include_2api_8php.html#aa9dc5350b26d6c7727d6c4b641ecba18">api_albums()</a>, <a class="el" href="include_2api_8php.html#a72bfecac1970bc29b853073e816388ff">api_channel_stream()</a>, <a class="el" href="include_2api_8php.html#adfc035ee6303c1d8ba5336a4ead2bd53">api_export_basic()</a>, <a class="el" href="include_2api_8php.html#ad5fe62d6c25c86999f627b2e6cfde536">api_group()</a>, <a class="el" href="include_2api_8php.html#ae46f964e5a9c80b96dc78df61c09ed3a">api_group_members()</a>, <a class="el" href="include_2api_8php.html#aa6fc3bc8c0fad1d081db0dcc456dd77f">api_photos()</a>, <a class="el" href="include_2api_8php.html#a4fe872332ff0bd8d5eae2f0c6819cb60">api_red_xchan()</a>, <a class="el" href="mod_2chat_8php.html#a8b0b8bee6fef6477e8c64c5e951b1b4f">chat_content()</a>, <a class="el" href="chatsvc_8php.html#a7032784215e1f6747cf385a6598770f9">chatsvc_content()</a>, <a class="el" href="chatsvc_8php.html#a28d248b056fa47452e28ed01130e9116">chatsvc_init()</a>, <a class="el" href="chatsvc_8php.html#a7c9a9b9c24a2b02eed8efd6b09632d03">chatsvc_post()</a>, <a class="el" href="dirsearch_8php.html#aa1fb04e1de4f25b63349ac78f94ceb4c">dirsearch_content()</a>, <a class="el" href="impel_8php.html#ab7db6fca43b42ea4332cb3e841b3cf7b">impel_init()</a>, <a class="el" href="new__channel_8php.html#a1ad7f99e4366a32942c6b954aba3a164">new_channel_init()</a>, <a class="el" href="notes_8php.html#a4dbd7b1f906440746af48b484d66535a">notes_init()</a>, <a class="el" href="oexchange_8php.html#a2d8b785cd7d041a4e6274f5af370cf26">oexchange_content()</a>, <a class="el" href="online_8php.html#a80e107c84eb722b0ca11d0413b96f9f7">online_init()</a>, <a class="el" href="post_8php.html#af4b48181ce773ef0cdfc972441445c34">post_init()</a>, <a class="el" href="post_8php.html#af59e6a1dc22d19d9257b01cd7ccedb75">post_post()</a>, <a class="el" href="include_2api_8php.html#aafa82b65a9f879a1a1197cfe8aaf3898">red_item_new()</a>, <a class="el" href="register_8php.html#ae20c0cd40f738d6295de58b9202c83d5">register_init()</a>, <a class="el" href="siteinfo_8php.html#a3efbd0bd6564af19ec0a9ce0294e59d0">siteinfo_init()</a>, <a class="el" href="smilies_8php.html#ab43b1e9f33a700a830aff14c7b3a617f">smilies_content()</a>, <a class="el" href="zfinger_8php.html#a8139b83a22ef98869adc10aa224027a0">zfinger_init()</a>, and <a class="el" href="zotfeed_8php.html#a24dfc23d366e7f840cf2847d0c1c8eac">zotfeed_init()</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a872bbe72d23826c64c9e0f822180a3ec"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">old_webfinger </td>
+ <td>(</td>
+ <td class="paramtype">&#160;</td>
+ <td class="paramname"><em>$webbie</em></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p>Referenced by <a class="el" href="include_2network_8php.html#a63e62946e194928eb17c5a9f2bbef0fe">discover_by_webbie()</a>.</p>
</div>
</div>
@@ -413,7 +509,7 @@ Functions</h2></td></tr>
</table>
</div><div class="memdoc">
-<p>Referenced by <a class="el" href="items_8php.html#a8794863cdf8ce1333040933d3a3f66bd">consume_feed()</a>.</p>
+<p>Referenced by <a class="el" href="diaspora_8php.html#a849754ec369e1a60fadae5c14584ca36">diaspora_decode()</a>, <a class="el" href="diaspora_8php.html#a6f0a67b6b17503c125af32763be931b7">diaspora_dispatch()</a>, <a class="el" href="include_2network_8php.html#a850ed5307c6a18076f4b80addc99602d">fetch_xrd_links()</a>, <a class="el" href="dimport_8php.html#a581f040717941ce3e1868b0b5dceefd1">foofoo()</a>, and <a class="el" href="diaspora_8php.html#ac9e41e46626dc608204bf4b5e16e62d7">get_diaspora_reshare_xml()</a>.</p>
</div>
</div>
@@ -447,96 +543,96 @@ Functions</h2></td></tr>
</table>
</div><div class="memdoc">
-<p>Referenced by <a class="el" href="bb2diaspora_8php.html#ac9061ee10fcfcdac69566b649614e625">diaspora2bb()</a>, and <a class="el" href="item_8php.html#a693cd09805755ab85bbb5ecae69a48c3">item_post()</a>.</p>
+<p>Referenced by <a class="el" href="bb2diaspora_8php.html#ac9061ee10fcfcdac69566b649614e625">diaspora2bb()</a>, <a class="el" href="diaspora_8php.html#a006731620a5242d410358b32678e48e3">diaspora_asphoto()</a>, <a class="el" href="diaspora_8php.html#a20b968d64ef26afe5cb0cc75a7570a31">diaspora_post()</a>, <a class="el" href="diaspora_8php.html#a2bf43f6b5890897f425ef4325d34b007">diaspora_reshare()</a>, and <a class="el" href="item_8php.html#a693cd09805755ab85bbb5ecae69a48c3">item_post()</a>.</p>
</div>
</div>
-<a class="anchor" id="a897e7112d86eb95526cbd0bff9375f02"></a>
+<a class="anchor" id="a316f318167a039c89719afbd129a8f3c"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
- <td class="memname">validate_email </td>
+ <td class="memname">scrape_feed </td>
<td>(</td>
<td class="paramtype">&#160;</td>
- <td class="paramname"><em>$addr</em></td><td>)</td>
+ <td class="paramname"><em>$url</em></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
-<p>Referenced by <a class="el" href="account_8php.html#ae052bd5558847bd38e89c213561a9771">check_account_email()</a>, and <a class="el" href="identity_8php.html#a680fbafc2db023c5b1309e0180e81315">zid_init()</a>.</p>
+<p>Referenced by <a class="el" href="include_2network_8php.html#a5176176ddc1906d91f186df6fbd87b48">discover_by_url()</a>.</p>
</div>
</div>
-<a class="anchor" id="a5caa264fab6d2b2344e6bd5b298b08f2"></a>
+<a class="anchor" id="acb0bd7f5fe38ff1eaebeae3284525070"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
- <td class="memname">validate_url </td>
+ <td class="memname">scrape_vcard </td>
<td>(</td>
- <td class="paramtype">&amp;&#160;</td>
+ <td class="paramtype">&#160;</td>
<td class="paramname"><em>$url</em></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
+<p>Referenced by <a class="el" href="include_2network_8php.html#a63e62946e194928eb17c5a9f2bbef0fe">discover_by_webbie()</a>.</p>
+
</div>
</div>
-<a class="anchor" id="a8122356933bcd6b0a8567e8e15ae5cc5"></a>
+<a class="anchor" id="a897e7112d86eb95526cbd0bff9375f02"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
- <td class="memname">webfinger </td>
+ <td class="memname">validate_email </td>
<td>(</td>
<td class="paramtype">&#160;</td>
- <td class="paramname"><em>$s</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">&#160;</td>
- <td class="paramname"><em>$debug</em> = <code>false</code>&#160;</td>
- </tr>
- <tr>
+ <td class="paramname"><em>$addr</em></td><td>)</td>
<td></td>
- <td>)</td>
- <td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
-<p>Referenced by <a class="el" href="webfinger_8php.html#a17dd28db6d390194bf9ecb809739d1d3">webfinger_content()</a>, and <a class="el" href="include_2network_8php.html#adf6008b38c555e98e7ed10da9ede2335">webfinger_dfrn()</a>.</p>
+<p>Referenced by <a class="el" href="account_8php.html#ae052bd5558847bd38e89c213561a9771">check_account_email()</a>, and <a class="el" href="identity_8php.html#a680fbafc2db023c5b1309e0180e81315">zid_init()</a>.</p>
</div>
</div>
-<a class="anchor" id="adf6008b38c555e98e7ed10da9ede2335"></a>
+<a class="anchor" id="a5caa264fab6d2b2344e6bd5b298b08f2"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
- <td class="memname">webfinger_dfrn </td>
+ <td class="memname">validate_url </td>
<td>(</td>
- <td class="paramtype">&#160;</td>
- <td class="paramname"><em>$s</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
<td class="paramtype">&amp;&#160;</td>
- <td class="paramname"><em>$hcard</em>&#160;</td>
+ <td class="paramname"><em>$url</em></td><td>)</td>
+ <td></td>
</tr>
+ </table>
+</div><div class="memdoc">
+
+</div>
+</div>
+<a class="anchor" id="a3e6c751a51de33ad3563f0938296e78a"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
<tr>
+ <td class="memname">webfinger_rfc7033 </td>
+ <td>(</td>
+ <td class="paramtype">&#160;</td>
+ <td class="paramname"><em>$webbie</em></td><td>)</td>
<td></td>
- <td>)</td>
- <td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
+<p>Referenced by <a class="el" href="include_2network_8php.html#a63e62946e194928eb17c5a9f2bbef0fe">discover_by_webbie()</a>.</p>
+
</div>
</div>
<a class="anchor" id="a99353baabbc3e0584b85eb79ee802cff"></a>
@@ -651,7 +747,7 @@ Functions</h2></td></tr>
</dl>
<dl class="section return"><dt>Returns</dt><dd>array 'return_code' =&gt; HTTP return code or 0 if timeout or failure 'success' =&gt; boolean true (if HTTP 2xx result) or false 'header' =&gt; HTTP headers 'body' =&gt; fetched content </dd></dl>
-<p>Referenced by <a class="el" href="setup_8php.html#a0c3f3b671381f6dccd924b8ecdfc56c4">check_htaccess()</a>, <a class="el" href="mod_2directory_8php.html#aac79396570d759da2efac24fcedf5b44">directory_content()</a>, <a class="el" href="dirprofile_8php.html#a3e1d30d3d93863ff5615f2df4ac7f052">dirprofile_init()</a>, <a class="el" href="externals_8php.html#a4df44079e6f915286088b7a0d44db926">externals_run()</a>, <a class="el" href="import_8php.html#af17fef0410518f7eac205d0ea416eaa2">import_post()</a>, <a class="el" href="photo__driver_8php.html#a78f5a10c568d2a9bbbb129dc96548887">import_profile_photo()</a>, <a class="el" href="zot_8php.html#a2657e141d62d5f67ad3c87651b585299">import_site()</a>, <a class="el" href="zot_8php.html#a528e97ca5d69c3b7f35c5d954afde315">import_xchan()</a>, <a class="el" href="acl_8php.html#a57dceff370d4a0e7ae673d50fbfda61f">navbar_complete()</a>, <a class="el" href="include_2oembed_8php.html#a98549b9af8140eda3eceaeedcaabc2c2">oembed_fetch_url()</a>, <a class="el" href="oexchange_8php.html#a2d8b785cd7d041a4e6274f5af370cf26">oexchange_content()</a>, <a class="el" href="onepoll_8php.html#a72753b2fdec79b37c7f432035c91fb6d">onepoll_run()</a>, <a class="el" href="parse__url_8php.html#a25635549f2c22955d72465f4d2e58993">parseurl_getsiteinfo()</a>, <a class="el" href="socgraph_8php.html#a5ef8bef37161df53718a21e93d02fbd6">poco_load()</a>, <a class="el" href="pubsites_8php.html#af614e279aab54065345bda6b03eafdf0">pubsites_content()</a>, <a class="el" href="identity_8php.html#a47d6f53216f23a3484061793bef29854">remote_online_status()</a>, <a class="el" href="include_2network_8php.html#ae8d9c41a11000fb8667039fc71b4f73f">scale_external_images()</a>, <a class="el" href="setup_8php.html#a13cf286774149a0a7bd8adb8179cec75">setup_post()</a>, <a class="el" href="sslify_8php.html#a75b11e54a3d1fc83e7d4c0e8b4dab316">sslify_init()</a>, <a class="el" href="dir__fns_8php.html#aa666e7df6ca8c332f4081c9b66b4bdf6">sync_directories()</a>, <a class="el" href="socgraph_8php.html#a790690bb1a1d02483fe31632a160144d">update_suggestions()</a>, <a class="el" href="include_2network_8php.html#a9129fd55e7fc175b4ea9a195cccc16bc">z_post_url()</a>, <a class="el" href="zot_8php.html#a95528377d7303131958c9f0b7158fdce">zot_finger()</a>, and <a class="el" href="zot_8php.html#a5bcdfef419b16075a0eca990956223dc">zot_register_hub()</a>.</p>
+<p>Referenced by <a class="el" href="setup_8php.html#a0c3f3b671381f6dccd924b8ecdfc56c4">check_htaccess()</a>, <a class="el" href="mod_2directory_8php.html#aac79396570d759da2efac24fcedf5b44">directory_content()</a>, <a class="el" href="include_2network_8php.html#a5176176ddc1906d91f186df6fbd87b48">discover_by_url()</a>, <a class="el" href="include_2network_8php.html#a63e62946e194928eb17c5a9f2bbef0fe">discover_by_webbie()</a>, <a class="el" href="externals_8php.html#a4df44079e6f915286088b7a0d44db926">externals_run()</a>, <a class="el" href="include_2network_8php.html#a850ed5307c6a18076f4b80addc99602d">fetch_xrd_links()</a>, <a class="el" href="diaspora_8php.html#ac9e41e46626dc608204bf4b5e16e62d7">get_diaspora_reshare_xml()</a>, <a class="el" href="items_8php.html#a52c24114b73c0bdb605a03cd29712223">handle_feed()</a>, <a class="el" href="import_8php.html#af17fef0410518f7eac205d0ea416eaa2">import_post()</a>, <a class="el" href="photo__driver_8php.html#a78f5a10c568d2a9bbbb129dc96548887">import_profile_photo()</a>, <a class="el" href="zot_8php.html#a2657e141d62d5f67ad3c87651b585299">import_site()</a>, <a class="el" href="zot_8php.html#a528e97ca5d69c3b7f35c5d954afde315">import_xchan()</a>, <a class="el" href="acl_8php.html#a57dceff370d4a0e7ae673d50fbfda61f">navbar_complete()</a>, <a class="el" href="include_2oembed_8php.html#a98549b9af8140eda3eceaeedcaabc2c2">oembed_fetch_url()</a>, <a class="el" href="oexchange_8php.html#a2d8b785cd7d041a4e6274f5af370cf26">oexchange_content()</a>, <a class="el" href="onepoll_8php.html#a72753b2fdec79b37c7f432035c91fb6d">onepoll_run()</a>, <a class="el" href="parse__url_8php.html#a25635549f2c22955d72465f4d2e58993">parseurl_getsiteinfo()</a>, <a class="el" href="socgraph_8php.html#a5ef8bef37161df53718a21e93d02fbd6">poco_load()</a>, <a class="el" href="pubsites_8php.html#af614e279aab54065345bda6b03eafdf0">pubsites_content()</a>, <a class="el" href="Contact_8php.html#a7e3f5bef8ea1d2bf8434c9be36a2b713">random_profile()</a>, <a class="el" href="refimport_8php.html#ae9c56f779d1e0ac7bcb2a460129e7ae5">reflect_photo_callback()</a>, <a class="el" href="identity_8php.html#a47d6f53216f23a3484061793bef29854">remote_online_status()</a>, <a class="el" href="include_2network_8php.html#ae8d9c41a11000fb8667039fc71b4f73f">scale_external_images()</a>, <a class="el" href="include_2network_8php.html#a316f318167a039c89719afbd129a8f3c">scrape_feed()</a>, <a class="el" href="include_2network_8php.html#acb0bd7f5fe38ff1eaebeae3284525070">scrape_vcard()</a>, <a class="el" href="setup_8php.html#a13cf286774149a0a7bd8adb8179cec75">setup_post()</a>, <a class="el" href="sslify_8php.html#a75b11e54a3d1fc83e7d4c0e8b4dab316">sslify_init()</a>, <a class="el" href="dir__fns_8php.html#aa666e7df6ca8c332f4081c9b66b4bdf6">sync_directories()</a>, <a class="el" href="socgraph_8php.html#a790690bb1a1d02483fe31632a160144d">update_suggestions()</a>, <a class="el" href="include_2network_8php.html#a3e6c751a51de33ad3563f0938296e78a">webfinger_rfc7033()</a>, <a class="el" href="include_2network_8php.html#a9129fd55e7fc175b4ea9a195cccc16bc">z_post_url()</a>, <a class="el" href="zot_8php.html#a95528377d7303131958c9f0b7158fdce">zot_finger()</a>, and <a class="el" href="zot_8php.html#a5bcdfef419b16075a0eca990956223dc">zot_register_hub()</a>.</p>
</div>
</div>
@@ -690,8 +786,57 @@ Functions</h2></td></tr>
</tr>
</table>
</div><div class="memdoc">
+<p>z_post_url </p>
+<dl class="params"><dt>Parameters</dt><dd>
+ <table class="params">
+ <tr><td class="paramtype">string</td><td class="paramname">$url</td><td>URL to post </td></tr>
+ <tr><td class="paramtype">mixed</td><td class="paramname">$params</td><td>The full data to post in a HTTP "POST" operation. This parameter can either be passed as a urlencoded string like 'para1=val1&amp;para2=val2&amp;...' or as an array with the field name as key and field data as value. If value is an array, the Content-Type header will be set to multipart/form-data. </td></tr>
+ <tr><td class="paramtype">int</td><td class="paramname">$redirects</td><td>= 0 internal use, recursion counter </td></tr>
+ <tr><td class="paramtype">array</td><td class="paramname">$opts</td><td>(optional parameters) 'accept_content' =&gt; supply Accept: header with 'accept_content' as the value 'timeout' =&gt; int seconds, default system config value or 60 seconds 'http_auth' =&gt; username:password 'novalidate' =&gt; do not validate SSL certs, default is to validate using our CA list</td></tr>
+ </table>
+ </dd>
+</dl>
+<dl class="section return"><dt>Returns</dt><dd>array 'return_code' =&gt; HTTP return code or 0 if timeout or failure 'success' =&gt; boolean true (if HTTP 2xx result) or false 'header' =&gt; HTTP headers 'body' =&gt; fetched content </dd></dl>
+
+<p>Referenced by <a class="el" href="deliver_8php.html#a397afcb9afecf0c1816b0951189dd346">deliver_run()</a>, <a class="el" href="oexchange_8php.html#a2d8b785cd7d041a4e6274f5af370cf26">oexchange_content()</a>, <a class="el" href="queue_8php.html#af8c93de86d866c3200174c8450a0f341">queue_run()</a>, <a class="el" href="share_8php.html#afeb26046bdd02567ecd29ab5f188b249">share_init()</a>, <a class="el" href="include_2network_8php.html#a984708e60d531b31b2d1f88b5f408f7b">z_post_url_json()</a>, <a class="el" href="zot_8php.html#a95528377d7303131958c9f0b7158fdce">zot_finger()</a>, <a class="el" href="zot_8php.html#a7ac30ff51274bf0b6d3eade37972145c">zot_refresh()</a>, and <a class="el" href="zot_8php.html#ab3e9b99ddb11353f37f265a05bb42142">zot_zot()</a>.</p>
-<p>Referenced by <a class="el" href="oexchange_8php.html#a2d8b785cd7d041a4e6274f5af370cf26">oexchange_content()</a>, <a class="el" href="share_8php.html#afeb26046bdd02567ecd29ab5f188b249">share_init()</a>, <a class="el" href="zot_8php.html#a95528377d7303131958c9f0b7158fdce">zot_finger()</a>, <a class="el" href="zot_8php.html#a7ac30ff51274bf0b6d3eade37972145c">zot_refresh()</a>, and <a class="el" href="zot_8php.html#ab3e9b99ddb11353f37f265a05bb42142">zot_zot()</a>.</p>
+</div>
+</div>
+<a class="anchor" id="a984708e60d531b31b2d1f88b5f408f7b"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">z_post_url_json </td>
+ <td>(</td>
+ <td class="paramtype">&#160;</td>
+ <td class="paramname"><em>$url</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">&#160;</td>
+ <td class="paramname"><em>$params</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">&#160;</td>
+ <td class="paramname"><em>$redirects</em> = <code>0</code>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">&#160;</td>
+ <td class="paramname"><em>$opts</em> = <code>array()</code>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
</div>
</div>
diff --git a/doc/html/include_2network_8php.js b/doc/html/include_2network_8php.js
index 15e2bab93..4e4382941 100644
--- a/doc/html/include_2network_8php.js
+++ b/doc/html/include_2network_8php.js
@@ -4,20 +4,26 @@ var include_2network_8php =
[ "allowed_url", "include_2network_8php.html#aee35d9ad6b3f872bfb39ba3598936aa7", null ],
[ "avatar_img", "include_2network_8php.html#ab07ce9d75eae559865ed90aad2154bd7", null ],
[ "convert_xml_element_to_array", "include_2network_8php.html#ad4056d3ce69988f5c1a997a79f503246", null ],
+ [ "discover_by_url", "include_2network_8php.html#a5176176ddc1906d91f186df6fbd87b48", null ],
+ [ "discover_by_webbie", "include_2network_8php.html#a63e62946e194928eb17c5a9f2bbef0fe", null ],
[ "email_header_encode", "include_2network_8php.html#a469b9bd700269cd07d954f1a16c5899b", null ],
[ "email_send", "include_2network_8php.html#a1ff07d9fad93b713b93da0ab77aab7f0", null ],
[ "fetch_lrdd_template", "include_2network_8php.html#a8d5a3afb51cc932032b5dcc159efaae0", null ],
+ [ "fetch_xrd_links", "include_2network_8php.html#a850ed5307c6a18076f4b80addc99602d", null ],
[ "get_capath", "include_2network_8php.html#a78e89557b2fbd344ad790846d761b0c7", null ],
[ "http_status_exit", "include_2network_8php.html#a4cfb2c05a1c295317283d762440ce0b2", null ],
[ "json_return_and_die", "include_2network_8php.html#a4c5d50079e089168d9248427018fffd4", null ],
+ [ "old_webfinger", "include_2network_8php.html#a872bbe72d23826c64c9e0f822180a3ec", null ],
[ "parse_xml_string", "include_2network_8php.html#a27a951b59d8d622c0b3e7b0673ba74c6", null ],
[ "scale_external_images", "include_2network_8php.html#ae8d9c41a11000fb8667039fc71b4f73f", null ],
+ [ "scrape_feed", "include_2network_8php.html#a316f318167a039c89719afbd129a8f3c", null ],
+ [ "scrape_vcard", "include_2network_8php.html#acb0bd7f5fe38ff1eaebeae3284525070", null ],
[ "validate_email", "include_2network_8php.html#a897e7112d86eb95526cbd0bff9375f02", null ],
[ "validate_url", "include_2network_8php.html#a5caa264fab6d2b2344e6bd5b298b08f2", null ],
- [ "webfinger", "include_2network_8php.html#a8122356933bcd6b0a8567e8e15ae5cc5", null ],
- [ "webfinger_dfrn", "include_2network_8php.html#adf6008b38c555e98e7ed10da9ede2335", null ],
+ [ "webfinger_rfc7033", "include_2network_8php.html#a3e6c751a51de33ad3563f0938296e78a", null ],
[ "xml2array", "include_2network_8php.html#a99353baabbc3e0584b85eb79ee802cff", null ],
[ "xml_status", "include_2network_8php.html#a9e9da2aafb806c98ecdc318604e60dc6", null ],
[ "z_fetch_url", "include_2network_8php.html#aafd06c0a75402aefb06cfb9f9740fa37", null ],
- [ "z_post_url", "include_2network_8php.html#a9129fd55e7fc175b4ea9a195cccc16bc", null ]
+ [ "z_post_url", "include_2network_8php.html#a9129fd55e7fc175b4ea9a195cccc16bc", null ],
+ [ "z_post_url_json", "include_2network_8php.html#a984708e60d531b31b2d1f88b5f408f7b", null ]
]; \ No newline at end of file
diff --git a/doc/html/include_2oembed_8php.html b/doc/html/include_2oembed_8php.html
index b2e1efc44..6a4a63546 100644
--- a/doc/html/include_2oembed_8php.html
+++ b/doc/html/include_2oembed_8php.html
@@ -245,7 +245,7 @@ Functions</h2></td></tr>
</div><div class="memdoc">
<p>Find <span class="oembed">..<a href="url" rel="oembed">..</a></span> and replace it with [embed]url[/embed] </p>
-<p>Referenced by <a class="el" href="items_8php.html#a896c1809d58f2d7a42cfe14577958ddf">get_atom_elements()</a>, and <a class="el" href="mod_2oembed_8php.html#a9145025aaf057fb5d3f9f7011e5e1014">oembed_init()</a>.</p>
+<p>Referenced by <a class="el" href="items_8php.html#a5e5be7bf1f8257dec0b2647e60a3f3f1">get_atom_elements()</a>, and <a class="el" href="mod_2oembed_8php.html#a9145025aaf057fb5d3f9f7011e5e1014">oembed_init()</a>.</p>
</div>
</div>
diff --git a/doc/html/include_2photos_8php.html b/doc/html/include_2photos_8php.html
index 2e9d67da2..81047d3e7 100644
--- a/doc/html/include_2photos_8php.html
+++ b/doc/html/include_2photos_8php.html
@@ -162,7 +162,7 @@ Functions</h2></td></tr>
<p>Determine the album to use</p>
<p>We create a wall item for every photo, but we don't want to overwhelm the data stream with a hundred newly uploaded photos. So we will make the first photo uploaded to this album in the last several hours visible by default, the rest will become visible over time when and if they acquire comments, likes, dislikes, and/or tags</p>
-<p>Referenced by <a class="el" href="mod_2photos_8php.html#a062bed4d04d14fee8a53f4c9be673080">photos_post()</a>, and <a class="el" href="wall__upload_8php.html#a7cbe204244cf9e0380ee932263a74d8f">wall_upload_post()</a>.</p>
+<p>Referenced by <a class="el" href="mod_2photos_8php.html#a062bed4d04d14fee8a53f4c9be673080">photos_post()</a>, <a class="el" href="refimport_8php.html#ae9c56f779d1e0ac7bcb2a460129e7ae5">reflect_photo_callback()</a>, and <a class="el" href="wall__upload_8php.html#a7cbe204244cf9e0380ee932263a74d8f">wall_upload_post()</a>.</p>
</div>
</div>
@@ -394,7 +394,7 @@ Functions</h2></td></tr>
</table>
</div><div class="memdoc">
-<p>Referenced by <a class="el" href="include_2api_8php.html#aa6fc3bc8c0fad1d081db0dcc456dd77f">api_photos()</a>.</p>
+<p>Referenced by <a class="el" href="include_2api_8php.html#aa6fc3bc8c0fad1d081db0dcc456dd77f">api_photos()</a>, and <a class="el" href="widgets_8php.html#af8eb466ef91d9e96e13335ead5eba380">widget_photo_rand()</a>.</p>
</div>
</div>
diff --git a/doc/html/item_8php.html b/doc/html/item_8php.html
index ebaf4de28..4109e4e21 100644
--- a/doc/html/item_8php.html
+++ b/doc/html/item_8php.html
@@ -116,8 +116,6 @@ Functions</h2></td></tr>
<tr class="separator:a693cd09805755ab85bbb5ecae69a48c3"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a764bbb2e9a885a86fb23d0b5e4a09221"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="item_8php.html#a764bbb2e9a885a86fb23d0b5e4a09221">item_content</a> (&amp;$a)</td></tr>
<tr class="separator:a764bbb2e9a885a86fb23d0b5e4a09221"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:aa22feef4de326e1d7078dedd892e615c"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="item_8php.html#aa22feef4de326e1d7078dedd892e615c">handle_tag</a> ($a, &amp;$body, &amp;$access_tag, &amp;$str_tags, $profile_uid, $tag)</td></tr>
-<tr class="separator:aa22feef4de326e1d7078dedd892e615c"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a7b63a9d0cd02096e17dcf11f4afa7c10"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="item_8php.html#a7b63a9d0cd02096e17dcf11f4afa7c10">fix_attached_photo_permissions</a> ($uid, $xchan_hash, $body, $str_contact_allow, $str_group_allow, $str_contact_deny, $str_group_deny)</td></tr>
<tr class="separator:a7b63a9d0cd02096e17dcf11f4afa7c10"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a3daae7944f737bd30412a0d042207c0f"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="item_8php.html#a3daae7944f737bd30412a0d042207c0f">fix_attached_file_permissions</a> ($channel, $observer_hash, $body, $str_contact_allow, $str_group_allow, $str_contact_deny, $str_group_deny)</td></tr>
@@ -242,70 +240,6 @@ Functions</h2></td></tr>
</div>
</div>
-<a class="anchor" id="aa22feef4de326e1d7078dedd892e615c"></a>
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">handle_tag </td>
- <td>(</td>
- <td class="paramtype">&#160;</td>
- <td class="paramname"><em>$a</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">&amp;&#160;</td>
- <td class="paramname"><em>$body</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">&amp;&#160;</td>
- <td class="paramname"><em>$access_tag</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">&amp;&#160;</td>
- <td class="paramname"><em>$str_tags</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">&#160;</td>
- <td class="paramname"><em>$profile_uid</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">&#160;</td>
- <td class="paramname"><em>$tag</em>&#160;</td>
- </tr>
- <tr>
- <td></td>
- <td>)</td>
- <td></td><td></td>
- </tr>
- </table>
-</div><div class="memdoc">
-<p>This function removes the tag $tag from the text $body and replaces it with the appropiate link.</p>
-<dl class="params"><dt>Parameters</dt><dd>
- <table class="params">
- <tr><td class="paramtype">unknown_type</td><td class="paramname">$body</td><td>the text to replace the tag in </td></tr>
- <tr><td class="paramtype">unknown_type</td><td class="paramname">$access_tag</td><td>- used to return tag ACL exclusions e.g. @!foo </td></tr>
- <tr><td class="paramtype">unknown_type</td><td class="paramname">$str_tags</td><td>string to add the tag to </td></tr>
- <tr><td class="paramtype">unknown_type</td><td class="paramname">$profile_uid</td><td></td></tr>
- <tr><td class="paramtype">unknown_type</td><td class="paramname">$tag</td><td>the tag to replace</td></tr>
- </table>
- </dd>
-</dl>
-<dl class="section return"><dt>Returns</dt><dd>boolean true if replaced, false if not replaced </dd></dl>
-
-<p>Referenced by <a class="el" href="item_8php.html#a693cd09805755ab85bbb5ecae69a48c3">item_post()</a>, and <a class="el" href="mod_2photos_8php.html#a062bed4d04d14fee8a53f4c9be673080">photos_post()</a>.</p>
-
-</div>
-</div>
<a class="anchor" id="a5b1b36cb301a94b38150074f0d424e74"></a>
<div class="memitem">
<div class="memproto">
diff --git a/doc/html/item_8php.js b/doc/html/item_8php.js
index 6fe342a64..4cf9b1b0b 100644
--- a/doc/html/item_8php.js
+++ b/doc/html/item_8php.js
@@ -2,7 +2,6 @@ var item_8php =
[
[ "fix_attached_file_permissions", "item_8php.html#a3daae7944f737bd30412a0d042207c0f", null ],
[ "fix_attached_photo_permissions", "item_8php.html#a7b63a9d0cd02096e17dcf11f4afa7c10", null ],
- [ "handle_tag", "item_8php.html#aa22feef4de326e1d7078dedd892e615c", null ],
[ "item_check_service_class", "item_8php.html#a5b1b36cb301a94b38150074f0d424e74", null ],
[ "item_content", "item_8php.html#a764bbb2e9a885a86fb23d0b5e4a09221", null ],
[ "item_post", "item_8php.html#a693cd09805755ab85bbb5ecae69a48c3", null ]
diff --git a/doc/html/items_8php.html b/doc/html/items_8php.html
index 9629153a7..9cd5f6dea 100644
--- a/doc/html/items_8php.html
+++ b/doc/html/items_8php.html
@@ -112,8 +112,12 @@ $(document).ready(function(){initNavTree('items_8php.html','');});
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="func-members"></a>
Functions</h2></td></tr>
-<tr class="memitem:a01e3cf44e082fa9bd06dcde5bf713d70"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="items_8php.html#a01e3cf44e082fa9bd06dcde5bf713d70">collect_recipients</a> ($item, &amp;$private)</td></tr>
-<tr class="separator:a01e3cf44e082fa9bd06dcde5bf713d70"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a772f0ae77ad77c8ab68ed918a3870946"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="items_8php.html#a772f0ae77ad77c8ab68ed918a3870946">collect_recipients</a> ($item, &amp;$private_envelope)</td></tr>
+<tr class="separator:a772f0ae77ad77c8ab68ed918a3870946"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a8cda98925a4c5c2f6dade70d9586d79a"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="items_8php.html#a8cda98925a4c5c2f6dade70d9586d79a">filter_insecure</a> ($channel_id, $arr)</td></tr>
+<tr class="separator:a8cda98925a4c5c2f6dade70d9586d79a"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:abeb7886cde44d9a83dbaf2bc4ab18723"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="items_8php.html#abeb7886cde44d9a83dbaf2bc4ab18723">comments_are_now_closed</a> ($item)</td></tr>
+<tr class="separator:abeb7886cde44d9a83dbaf2bc4ab18723"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a1e75047cf175aaee8dd16aa761913ff9"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="items_8php.html#a1e75047cf175aaee8dd16aa761913ff9">can_comment_on_post</a> ($observer_xchan, $item)</td></tr>
<tr class="separator:a1e75047cf175aaee8dd16aa761913ff9"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a81565acf729e629e588d823308448e3c"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="items_8php.html#a81565acf729e629e588d823308448e3c">add_source_route</a> ($iid, $hash)</td></tr>
@@ -144,16 +148,22 @@ Functions</h2></td></tr>
<tr class="separator:af94c281016c6c912d06e064113336c5c"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aa371905f0a211b307cb3f7188c6cba04"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="items_8php.html#aa371905f0a211b307cb3f7188c6cba04">title_is_body</a> ($title, $body)</td></tr>
<tr class="separator:aa371905f0a211b307cb3f7188c6cba04"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a536d0313b6ffe33b9d2490c4e25c5361"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="items_8php.html#a536d0313b6ffe33b9d2490c4e25c5361">get_item_elements</a> ($<a class="el" href="boot_8php.html#a01353c9abebc3544ea080ac161729632">x</a>)</td></tr>
+<tr class="memitem:a536d0313b6ffe33b9d2490c4e25c5361"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="items_8php.html#a536d0313b6ffe33b9d2490c4e25c5361">get_item_elements</a> ($<a class="el" href="boot_8php.html#ae97836b0547953be182a2334c9c91d3c">x</a>)</td></tr>
<tr class="separator:a536d0313b6ffe33b9d2490c4e25c5361"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:ae73794179b62d39bb597ff670ab1c1e5"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="items_8php.html#ae73794179b62d39bb597ff670ab1c1e5">import_author_xchan</a> ($<a class="el" href="boot_8php.html#a01353c9abebc3544ea080ac161729632">x</a>)</td></tr>
+<tr class="memitem:ae73794179b62d39bb597ff670ab1c1e5"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="items_8php.html#ae73794179b62d39bb597ff670ab1c1e5">import_author_xchan</a> ($<a class="el" href="boot_8php.html#ae97836b0547953be182a2334c9c91d3c">x</a>)</td></tr>
<tr class="separator:ae73794179b62d39bb597ff670ab1c1e5"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a6bee35961f2e32905f20367a9309d627"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="items_8php.html#a6bee35961f2e32905f20367a9309d627">import_author_rss</a> ($<a class="el" href="boot_8php.html#a01353c9abebc3544ea080ac161729632">x</a>)</td></tr>
+<tr class="memitem:a2c3f97b2109c05df86d97449b3c78ebc"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="items_8php.html#a2c3f97b2109c05df86d97449b3c78ebc">import_author_diaspora</a> ($<a class="el" href="boot_8php.html#ae97836b0547953be182a2334c9c91d3c">x</a>)</td></tr>
+<tr class="separator:a2c3f97b2109c05df86d97449b3c78ebc"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a6bee35961f2e32905f20367a9309d627"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="items_8php.html#a6bee35961f2e32905f20367a9309d627">import_author_rss</a> ($<a class="el" href="boot_8php.html#ae97836b0547953be182a2334c9c91d3c">x</a>)</td></tr>
<tr class="separator:a6bee35961f2e32905f20367a9309d627"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a82955cc578f0fa600acec84475026194"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="items_8php.html#a82955cc578f0fa600acec84475026194">encode_item</a> ($item)</td></tr>
-<tr class="separator:a82955cc578f0fa600acec84475026194"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:ac1fcf621dce7370515b420a7753f4726"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="items_8php.html#ac1fcf621dce7370515b420a7753f4726">map_scope</a> ($scope)</td></tr>
-<tr class="separator:ac1fcf621dce7370515b420a7753f4726"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a37f79991f36811cf847446ff60e8e11f"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="items_8php.html#a37f79991f36811cf847446ff60e8e11f">import_author_unknown</a> ($<a class="el" href="boot_8php.html#ae97836b0547953be182a2334c9c91d3c">x</a>)</td></tr>
+<tr class="separator:a37f79991f36811cf847446ff60e8e11f"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a56b0f5d2cb36eb8f4bfca84813884f86"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="items_8php.html#a56b0f5d2cb36eb8f4bfca84813884f86">encode_item</a> ($item, $mirror=false)</td></tr>
+<tr class="separator:a56b0f5d2cb36eb8f4bfca84813884f86"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a8675e62674de6fb7c42e4a408c7116cc"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="items_8php.html#a8675e62674de6fb7c42e4a408c7116cc">map_scope</a> ($scope, $strip=false)</td></tr>
+<tr class="separator:a8675e62674de6fb7c42e4a408c7116cc"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:aabfaa193b83154c2a81e91284e5d5e59"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="items_8php.html#aabfaa193b83154c2a81e91284e5d5e59">translate_scope</a> ($scope)</td></tr>
+<tr class="separator:aabfaa193b83154c2a81e91284e5d5e59"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a566c601726697e044e75284af7fb6f17"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="items_8php.html#a566c601726697e044e75284af7fb6f17">encode_item_xchan</a> ($xchan)</td></tr>
<tr class="separator:a566c601726697e044e75284af7fb6f17"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ac6673627d289ee4f547de0fe3b7acd0a"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="items_8php.html#ac6673627d289ee4f547de0fe3b7acd0a">encode_item_terms</a> ($terms)</td></tr>
@@ -170,18 +180,20 @@ Functions</h2></td></tr>
<tr class="separator:a5f690fc2484abec07840b4f9dd525bd9"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a2d840c74ed23d1b6c7daee05cf89dda7"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="items_8php.html#a2d840c74ed23d1b6c7daee05cf89dda7">encode_mail</a> ($item)</td></tr>
<tr class="separator:a2d840c74ed23d1b6c7daee05cf89dda7"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a94ddb1d6c8fa21dd7433677e85168037"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="items_8php.html#a94ddb1d6c8fa21dd7433677e85168037">get_mail_elements</a> ($<a class="el" href="boot_8php.html#a01353c9abebc3544ea080ac161729632">x</a>)</td></tr>
+<tr class="memitem:a94ddb1d6c8fa21dd7433677e85168037"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="items_8php.html#a94ddb1d6c8fa21dd7433677e85168037">get_mail_elements</a> ($<a class="el" href="boot_8php.html#ae97836b0547953be182a2334c9c91d3c">x</a>)</td></tr>
<tr class="separator:a94ddb1d6c8fa21dd7433677e85168037"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a251343637ff40a50cca93452cd530c26"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="items_8php.html#a251343637ff40a50cca93452cd530c26">get_profile_elements</a> ($<a class="el" href="boot_8php.html#a01353c9abebc3544ea080ac161729632">x</a>)</td></tr>
+<tr class="memitem:a251343637ff40a50cca93452cd530c26"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="items_8php.html#a251343637ff40a50cca93452cd530c26">get_profile_elements</a> ($<a class="el" href="boot_8php.html#ae97836b0547953be182a2334c9c91d3c">x</a>)</td></tr>
<tr class="separator:a251343637ff40a50cca93452cd530c26"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a896c1809d58f2d7a42cfe14577958ddf"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="items_8php.html#a896c1809d58f2d7a42cfe14577958ddf">get_atom_elements</a> ($feed, $item)</td></tr>
-<tr class="separator:a896c1809d58f2d7a42cfe14577958ddf"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a5e5be7bf1f8257dec0b2647e60a3f3f1"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="items_8php.html#a5e5be7bf1f8257dec0b2647e60a3f3f1">get_atom_elements</a> ($feed, $item, &amp;$author)</td></tr>
+<tr class="separator:a5e5be7bf1f8257dec0b2647e60a3f3f1"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aa723c0571e314a1853a24c5854b4f54f"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="items_8php.html#aa723c0571e314a1853a24c5854b4f54f">encode_rel_links</a> ($links)</td></tr>
<tr class="separator:aa723c0571e314a1853a24c5854b4f54f"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a2541e6861a56d145c9281877cc501615"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="items_8php.html#a2541e6861a56d145c9281877cc501615">item_store</a> ($arr, $allow_exec=false)</td></tr>
<tr class="separator:a2541e6861a56d145c9281877cc501615"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:acf0bf7c9d21ac84f32effb754f7ad484"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="items_8php.html#acf0bf7c9d21ac84f32effb754f7ad484">item_store_update</a> ($arr, $allow_exec=false)</td></tr>
<tr class="separator:acf0bf7c9d21ac84f32effb754f7ad484"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a25221826fa4621f523c68483e3b6af26"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="items_8php.html#a25221826fa4621f523c68483e3b6af26">store_diaspora_comment_sig</a> ($datarray, $channel, $parent_item, $post_id, $walltowall=false)</td></tr>
+<tr class="separator:a25221826fa4621f523c68483e3b6af26"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aab9e0c58247427126de0699c729c3b6c"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="items_8php.html#aab9e0c58247427126de0699c729c3b6c">send_status_notifications</a> ($post_id, $item)</td></tr>
<tr class="separator:aab9e0c58247427126de0699c729c3b6c"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aab9c6bae4c40799867596bdaae9829fd"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="items_8php.html#aab9c6bae4c40799867596bdaae9829fd">get_item_contact</a> ($item, $contacts)</td></tr>
@@ -190,12 +202,18 @@ Functions</h2></td></tr>
<tr class="separator:ab1bce4261bcf75ad62753b498a144d17"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a88c6cf7649ac836fbbed82a7a0315110"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="items_8php.html#a88c6cf7649ac836fbbed82a7a0315110">tgroup_check</a> ($uid, $item)</td></tr>
<tr class="separator:a88c6cf7649ac836fbbed82a7a0315110"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:adf2b8137dc4ad9ec958de2842f16f3c2"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="items_8php.html#adf2b8137dc4ad9ec958de2842f16f3c2">start_delivery_chain</a> ($channel, $item, $item_id, $parent)</td></tr>
+<tr class="separator:adf2b8137dc4ad9ec958de2842f16f3c2"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a87ac9e359591721a824ecd23bbb56296"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="items_8php.html#a87ac9e359591721a824ecd23bbb56296">check_item_source</a> ($uid, $item)</td></tr>
<tr class="separator:a87ac9e359591721a824ecd23bbb56296"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a77da7ce9a117601d49ac4a67c71b514f"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="items_8php.html#a77da7ce9a117601d49ac4a67c71b514f">mail_store</a> ($arr)</td></tr>
<tr class="separator:a77da7ce9a117601d49ac4a67c71b514f"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a8794863cdf8ce1333040933d3a3f66bd"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="items_8php.html#a8794863cdf8ce1333040933d3a3f66bd">consume_feed</a> ($xml, $importer, &amp;$contact, &amp;$hub, $datedir=0, $pass=0)</td></tr>
-<tr class="separator:a8794863cdf8ce1333040933d3a3f66bd"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:adc26e08aa61f5666da04ab5d2a9d68a6"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="items_8php.html#adc26e08aa61f5666da04ab5d2a9d68a6">consume_feed</a> ($xml, $importer, &amp;$contact, $pass=0)</td></tr>
+<tr class="separator:adc26e08aa61f5666da04ab5d2a9d68a6"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a9b449eeae50003414b8b30ca927af434"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="items_8php.html#a9b449eeae50003414b8b30ca927af434">update_feed_item</a> ($uid, $datarray)</td></tr>
+<tr class="separator:a9b449eeae50003414b8b30ca927af434"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a52c24114b73c0bdb605a03cd29712223"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="items_8php.html#a52c24114b73c0bdb605a03cd29712223">handle_feed</a> ($uid, $abook_id, $url)</td></tr>
+<tr class="separator:a52c24114b73c0bdb605a03cd29712223"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a016dd86c827d08db89061ea81d15c6cb"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="items_8php.html#a016dd86c827d08db89061ea81d15c6cb">atom_author</a> ($tag, $name, $uri, $h, $w, $type, $photo)</td></tr>
<tr class="separator:a016dd86c827d08db89061ea81d15c6cb"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a275108c050f7eb18bcbb5018e6b81cf6"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="items_8php.html#a275108c050f7eb18bcbb5018e6b81cf6">atom_entry</a> ($item, $type, $author, $owner, $comment=false, $cid=0)</td></tr>
@@ -224,14 +242,14 @@ Functions</h2></td></tr>
<tr class="separator:aac8c9eb4338e2a996c43914392c6cfdb"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a0cf98bb619f07dd18f602683a55a5f59"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="items_8php.html#a0cf98bb619f07dd18f602683a55a5f59">first_post_date</a> ($uid, $wall=false)</td></tr>
<tr class="separator:a0cf98bb619f07dd18f602683a55a5f59"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:aa2d3caa2f27720762b5c729e07df40fb"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="items_8php.html#aa2d3caa2f27720762b5c729e07df40fb">list_post_dates</a> ($uid, $wall)</td></tr>
-<tr class="separator:aa2d3caa2f27720762b5c729e07df40fb"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ab33fa9756aaa5f39a6104d57a62baf00"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="items_8php.html#ab33fa9756aaa5f39a6104d57a62baf00">list_post_dates</a> ($uid, $wall, $mindate)</td></tr>
+<tr class="separator:ab33fa9756aaa5f39a6104d57a62baf00"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ad2abb4644ff1f20fefbc80326fe01cf0"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="items_8php.html#ad2abb4644ff1f20fefbc80326fe01cf0">posted_dates</a> ($uid, $wall)</td></tr>
<tr class="separator:ad2abb4644ff1f20fefbc80326fe01cf0"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:adf980098b6de9c3993bc3ff26a8dd6f9"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="items_8php.html#adf980098b6de9c3993bc3ff26a8dd6f9">fetch_post_tags</a> ($items, $link=false)</td></tr>
<tr class="separator:adf980098b6de9c3993bc3ff26a8dd6f9"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a004e89d86b0f29b2c4da20108ecc4091"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="items_8php.html#a004e89d86b0f29b2c4da20108ecc4091">zot_feed</a> ($uid, $observer_xchan, $mindate)</td></tr>
-<tr class="separator:a004e89d86b0f29b2c4da20108ecc4091"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a1cf89557f32d5dfbe8bd90448dc1aa92"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="items_8php.html#a1cf89557f32d5dfbe8bd90448dc1aa92">zot_feed</a> ($uid, $observer_xchan, $arr)</td></tr>
+<tr class="separator:a1cf89557f32d5dfbe8bd90448dc1aa92"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a756738301f2ed96be50232500677d58a"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="items_8php.html#a756738301f2ed96be50232500677d58a">items_fetch</a> ($arr, $channel=null, $observer_hash=null, $client_mode=<a class="el" href="boot_8php.html#a43c6c7d84d880e9500bd4f8f8ecc5731">CLIENT_MODE_NORMAL</a>, $module= 'network')</td></tr>
<tr class="separator:a756738301f2ed96be50232500677d58a"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a2baa9e05f1e8aa3dd61c85803ae39bd6"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="items_8php.html#a2baa9e05f1e8aa3dd61c85803ae39bd6">update_remote_id</a> ($channel, $post_id, $webpage, $pagetitle, $namespace, $remote_id, $mid)</td></tr>
@@ -293,7 +311,7 @@ Functions</h2></td></tr>
</dl>
<p>$item['route'] contains a comma-separated list of xchans that sent the current message, somewhat analogous to the * Received: header line in email. We can use this to perform loop detection and to avoid sending a particular item to any "upstream" sender (they already have a copy because they sent it to us). </p>
-<p>Referenced by <a class="el" href="zot_8php.html#a4d9e6ca295e443b740d9960c304b3474">process_delivery()</a>.</p>
+<p>Referenced by <a class="el" href="zot_8php.html#a0e3006e7a456b2175a9badc96bc5176d">process_delivery()</a>.</p>
</div>
</div>
@@ -449,7 +467,7 @@ Functions</h2></td></tr>
</table>
</div><div class="memdoc">
<p>can_comment_on_post($observer_xchan,$item);</p>
-<p>This function examines the comment_policy attached to an item and decides if the current observer has sufficient privileges to comment. This will normally be called on a remote site where <a class="el" href="permissions_8php.html#a67ada9ed51e77885b6b0f6a28cee1835">perm_is_allowed()</a> will not be suitable because the post owner does not have a local channel_id. Generally we should look at the item - in particular the author['book_flags'] and see if ABOOK_FLAG_SELF is set. If it is, you should be able to use perm_is_allowed( ... 'post_comments'), and if it isn't you need to call <a class="el" href="items_8php.html#a1e75047cf175aaee8dd16aa761913ff9">can_comment_on_post()</a> </p>
+<p>This function examines the comment_policy attached to an item and decides if the current observer has sufficient privileges to comment. This will normally be called on a remote site where <a class="el" href="permissions_8php.html#a67ada9ed51e77885b6b0f6a28cee1835" title="Checks if given permission is allowed for given observer on a channel.">perm_is_allowed()</a> will not be suitable because the post owner does not have a local channel_id. Generally we should look at the item - in particular the author['book_flags'] and see if ABOOK_FLAG_SELF is set. If it is, you should be able to use perm_is_allowed( ... 'post_comments'), and if it isn't you need to call <a class="el" href="items_8php.html#a1e75047cf175aaee8dd16aa761913ff9">can_comment_on_post()</a> We also check the comments_closed date/time on the item if this is set. </p>
<p>Referenced by <a class="el" href="classConversation.html#a8335cdd43f1836e3c255638e61a09e16">Conversation\add_thread()</a>, and <a class="el" href="item_8php.html#a693cd09805755ab85bbb5ecae69a48c3">item_post()</a>.</p>
@@ -491,7 +509,7 @@ Functions</h2></td></tr>
</div>
</div>
-<a class="anchor" id="a01e3cf44e082fa9bd06dcde5bf713d70"></a>
+<a class="anchor" id="a772f0ae77ad77c8ab68ed918a3870946"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
@@ -505,7 +523,7 @@ Functions</h2></td></tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">&amp;&#160;</td>
- <td class="paramname"><em>$private</em>&#160;</td>
+ <td class="paramname"><em>$private_envelope</em>&#160;</td>
</tr>
<tr>
<td></td>
@@ -519,6 +537,24 @@ Functions</h2></td></tr>
</div>
</div>
+<a class="anchor" id="abeb7886cde44d9a83dbaf2bc4ab18723"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">comments_are_now_closed </td>
+ <td>(</td>
+ <td class="paramtype">&#160;</td>
+ <td class="paramname"><em>$item</em></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p>Referenced by <a class="el" href="classConversation.html#a8335cdd43f1836e3c255638e61a09e16">Conversation\add_thread()</a>, <a class="el" href="items_8php.html#a1e75047cf175aaee8dd16aa761913ff9">can_comment_on_post()</a>, and <a class="el" href="items_8php.html#a2541e6861a56d145c9281877cc501615">item_store()</a>.</p>
+
+</div>
+</div>
<a class="anchor" id="a0790a4550b829e85504af548623002ca"></a>
<div class="memitem">
<div class="memproto">
@@ -601,7 +637,7 @@ Functions</h2></td></tr>
</div>
</div>
-<a class="anchor" id="a8794863cdf8ce1333040933d3a3f66bd"></a>
+<a class="anchor" id="adc26e08aa61f5666da04ab5d2a9d68a6"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
@@ -626,18 +662,6 @@ Functions</h2></td></tr>
<tr>
<td class="paramkey"></td>
<td></td>
- <td class="paramtype">&amp;&#160;</td>
- <td class="paramname"><em>$hub</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">&#160;</td>
- <td class="paramname"><em>$datedir</em> = <code>0</code>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
<td class="paramtype">&#160;</td>
<td class="paramname"><em>$pass</em> = <code>0</code>&#160;</td>
</tr>
@@ -653,6 +677,8 @@ Functions</h2></td></tr>
<p>$importer = the contact_record (joined to user_record) of the local user who owns this relationship. It is this person's stuff that is going to be updated. $contact = the person who is sending us stuff. If not set, we MAY be processing a "follow" activity from an external network and MAY create an appropriate contact record. Otherwise, we MUST have a contact record. $hub = should we find a hub declation in the feed, pass it back to our calling process, who might (or might not) try and subscribe to it. $datedir sorts in reverse order $pass - by default ($pass = 0) we cannot guarantee that a parent item has been imported prior to its children being seen in the stream unless we are certain of how the feed is arranged/ordered. With $pass = 1, we only pull parent items out of the stream. With $pass = 2, we only pull children (comments/likes).</p>
<p>So running this twice, first with pass 1 and then with pass 2 will do the right thing regardless of feed ordering. This won't be adequate in a fully-threaded model where comments can have sub-threads. That would require some massive sorting to get all the feed items into a mostly linear ordering, and might still require recursion. </p>
+<p>Referenced by <a class="el" href="items_8php.html#a52c24114b73c0bdb605a03cd29712223">handle_feed()</a>.</p>
+
</div>
</div>
<a class="anchor" id="a56b2a4abcadfac71175cd50555528cc3"></a>
@@ -731,7 +757,7 @@ Functions</h2></td></tr>
</table>
</div><div class="memdoc">
-<p>Referenced by <a class="el" href="include_2api_8php.html#ad4c29f43418f6110f85a6b3998239ab4">api_statuses_destroy()</a>, <a class="el" href="Contact_8php.html#a28e062c884331dbb5dfa713228c25ad6">contact_remove()</a>, <a class="el" href="zot_8php.html#adfeb9400ae6b726beec89f8f1e8fde72">delete_imported_item()</a>, <a class="el" href="items_8php.html#a668ece2c37f05cc3abe538eb0dabfe55">drop_items()</a>, <a class="el" href="expire_8php.html#a444e45c9b67727b27db4c779fd51a298">expire_run()</a>, <a class="el" href="item_8php.html#a764bbb2e9a885a86fb23d0b5e4a09221">item_content()</a>, <a class="el" href="items_8php.html#a6f7e1334af5d684a987fa6a3eb37f4cc">item_expire()</a>, <a class="el" href="like_8php.html#a9d7dd268f21c21e9d29dd2aca2dd9538">like_content()</a>, <a class="el" href="mod_2photos_8php.html#a062bed4d04d14fee8a53f4c9be673080">photos_post()</a>, <a class="el" href="poller_8php.html#a5f12df3a4738124b6c039971e87e76da">poller_run()</a>, and <a class="el" href="Contact_8php.html#acc12cda999c88c4d6185cca967c15125">remove_all_xchan_resources()</a>.</p>
+<p>Referenced by <a class="el" href="include_2api_8php.html#ad4c29f43418f6110f85a6b3998239ab4">api_statuses_destroy()</a>, <a class="el" href="items_8php.html#adc26e08aa61f5666da04ab5d2a9d68a6">consume_feed()</a>, <a class="el" href="Contact_8php.html#a28e062c884331dbb5dfa713228c25ad6">contact_remove()</a>, <a class="el" href="zot_8php.html#adfeb9400ae6b726beec89f8f1e8fde72">delete_imported_item()</a>, <a class="el" href="diaspora_8php.html#a938c7ee808d38725c0988fa6006805b9">diaspora_retraction()</a>, <a class="el" href="diaspora_8php.html#aa34d2748bb97e9e193cacd572f335055">diaspora_signed_retraction()</a>, <a class="el" href="items_8php.html#a668ece2c37f05cc3abe538eb0dabfe55">drop_items()</a>, <a class="el" href="expire_8php.html#a444e45c9b67727b27db4c779fd51a298">expire_run()</a>, <a class="el" href="item_8php.html#a764bbb2e9a885a86fb23d0b5e4a09221">item_content()</a>, <a class="el" href="items_8php.html#a6f7e1334af5d684a987fa6a3eb37f4cc">item_expire()</a>, <a class="el" href="like_8php.html#a9d7dd268f21c21e9d29dd2aca2dd9538">like_content()</a>, <a class="el" href="mod_2photos_8php.html#a062bed4d04d14fee8a53f4c9be673080">photos_post()</a>, <a class="el" href="poller_8php.html#a5f12df3a4738124b6c039971e87e76da">poller_run()</a>, and <a class="el" href="Contact_8php.html#acc12cda999c88c4d6185cca967c15125">remove_all_xchan_resources()</a>.</p>
</div>
</div>
@@ -753,7 +779,7 @@ Functions</h2></td></tr>
</div>
</div>
-<a class="anchor" id="a82955cc578f0fa600acec84475026194"></a>
+<a class="anchor" id="a56b0f5d2cb36eb8f4bfca84813884f86"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
@@ -761,13 +787,23 @@ Functions</h2></td></tr>
<td class="memname">encode_item </td>
<td>(</td>
<td class="paramtype">&#160;</td>
- <td class="paramname"><em>$item</em></td><td>)</td>
+ <td class="paramname"><em>$item</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">&#160;</td>
+ <td class="paramname"><em>$mirror</em> = <code>false</code>&#160;</td>
+ </tr>
+ <tr>
<td></td>
+ <td>)</td>
+ <td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
-<p>Referenced by <a class="el" href="notifier_8php.html#a568c502f626cff95e344c0748938b85d">notifier_run()</a>, and <a class="el" href="items_8php.html#a004e89d86b0f29b2c4da20108ecc4091">zot_feed()</a>.</p>
+<p>Referenced by <a class="el" href="identity_8php.html#afaedbc8e2d2a70ec8b006162baac5249">identity_basic_export()</a>, <a class="el" href="notifier_8php.html#a568c502f626cff95e344c0748938b85d">notifier_run()</a>, and <a class="el" href="items_8php.html#a1cf89557f32d5dfbe8bd90448dc1aa92">zot_feed()</a>.</p>
</div>
</div>
@@ -785,7 +821,7 @@ Functions</h2></td></tr>
</table>
</div><div class="memdoc">
-<p>Referenced by <a class="el" href="items_8php.html#a82955cc578f0fa600acec84475026194">encode_item()</a>.</p>
+<p>Referenced by <a class="el" href="items_8php.html#a56b0f5d2cb36eb8f4bfca84813884f86">encode_item()</a>.</p>
</div>
</div>
@@ -803,7 +839,7 @@ Functions</h2></td></tr>
</table>
</div><div class="memdoc">
-<p>Referenced by <a class="el" href="items_8php.html#a82955cc578f0fa600acec84475026194">encode_item()</a>.</p>
+<p>Referenced by <a class="el" href="items_8php.html#a56b0f5d2cb36eb8f4bfca84813884f86">encode_item()</a>.</p>
</div>
</div>
@@ -821,7 +857,7 @@ Functions</h2></td></tr>
</table>
</div><div class="memdoc">
-<p>Referenced by <a class="el" href="items_8php.html#a82955cc578f0fa600acec84475026194">encode_item()</a>, and <a class="el" href="items_8php.html#a2d840c74ed23d1b6c7daee05cf89dda7">encode_mail()</a>.</p>
+<p>Referenced by <a class="el" href="items_8php.html#a56b0f5d2cb36eb8f4bfca84813884f86">encode_item()</a>, and <a class="el" href="items_8php.html#a2d840c74ed23d1b6c7daee05cf89dda7">encode_mail()</a>.</p>
</div>
</div>
@@ -857,7 +893,7 @@ Functions</h2></td></tr>
</table>
</div><div class="memdoc">
-<p>Referenced by <a class="el" href="items_8php.html#a896c1809d58f2d7a42cfe14577958ddf">get_atom_elements()</a>.</p>
+<p>Referenced by <a class="el" href="items_8php.html#a5e5be7bf1f8257dec0b2647e60a3f3f1">get_atom_elements()</a>.</p>
</div>
</div>
@@ -903,7 +939,37 @@ Functions</h2></td></tr>
</table>
</div><div class="memdoc">
-<p>Referenced by <a class="el" href="block_8php.html#a8a82a470acdfbc7a8e749509caeeea45">block_content()</a>, <a class="el" href="mod_2bookmarks_8php.html#a6b7942f3d27e40f0f47c88704127b9b3">bookmarks_init()</a>, <a class="el" href="channel_8php.html#a9c6a6179e0e626398ebecc6151905ef1">channel_content()</a>, <a class="el" href="display_8php.html#a37137c98d47bf3306f4c2bb9f5b60de0">display_content()</a>, <a class="el" href="editpost_8php.html#a34011690864d122680c802e9e748ccfb">editpost_content()</a>, <a class="el" href="event_8php.html#a7378e839ac3de9d55579eb3ec48eaf92">event_store_item()</a>, <a class="el" href="events_8php.html#a1d293fb217ae6bc9e3858c4b32e363ec">events_content()</a>, <a class="el" href="home_8php.html#aa1cf697851a646755baf537f75334c46">home_content()</a>, <a class="el" href="items_8php.html#a6f7e1334af5d684a987fa6a3eb37f4cc">item_expire()</a>, <a class="el" href="items_8php.html#a756738301f2ed96be50232500677d58a">items_fetch()</a>, <a class="el" href="mod_2network_8php.html#a43f2f29b90c5e29072c561934bc8f8b4">network_content()</a>, <a class="el" href="notifier_8php.html#a568c502f626cff95e344c0748938b85d">notifier_run()</a>, <a class="el" href="page_8php.html#a91a5f649f68406149108bded1dc90b22">page_content()</a>, <a class="el" href="search_8php.html#ab2568591359edde5b483a6cd9a24b2cc">search_content()</a>, <a class="el" href="items_8php.html#ab1bce4261bcf75ad62753b498a144d17">tag_deliver()</a>, <a class="el" href="widgets_8php.html#a313a8d10ab81c71357c12e67e4d7efd5">widget_item()</a>, and <a class="el" href="items_8php.html#a004e89d86b0f29b2c4da20108ecc4091">zot_feed()</a>.</p>
+<p>Referenced by <a class="el" href="block_8php.html#a8a82a470acdfbc7a8e749509caeeea45">block_content()</a>, <a class="el" href="mod_2bookmarks_8php.html#a6b7942f3d27e40f0f47c88704127b9b3">bookmarks_init()</a>, <a class="el" href="channel_8php.html#a9c6a6179e0e626398ebecc6151905ef1">channel_content()</a>, <a class="el" href="display_8php.html#a37137c98d47bf3306f4c2bb9f5b60de0">display_content()</a>, <a class="el" href="editpost_8php.html#a34011690864d122680c802e9e748ccfb">editpost_content()</a>, <a class="el" href="event_8php.html#a7378e839ac3de9d55579eb3ec48eaf92">event_store_item()</a>, <a class="el" href="events_8php.html#a1d293fb217ae6bc9e3858c4b32e363ec">events_content()</a>, <a class="el" href="home_8php.html#a6e3dbf78f4ed74ab2577de221190b33f">home_content()</a>, <a class="el" href="identity_8php.html#afaedbc8e2d2a70ec8b006162baac5249">identity_basic_export()</a>, <a class="el" href="items_8php.html#a6f7e1334af5d684a987fa6a3eb37f4cc">item_expire()</a>, <a class="el" href="items_8php.html#a756738301f2ed96be50232500677d58a">items_fetch()</a>, <a class="el" href="mod_2network_8php.html#a43f2f29b90c5e29072c561934bc8f8b4">network_content()</a>, <a class="el" href="notifier_8php.html#a568c502f626cff95e344c0748938b85d">notifier_run()</a>, <a class="el" href="page_8php.html#a91a5f649f68406149108bded1dc90b22">page_content()</a>, <a class="el" href="mod_2photos_8php.html#a062bed4d04d14fee8a53f4c9be673080">photos_post()</a>, <a class="el" href="search_8php.html#ab2568591359edde5b483a6cd9a24b2cc">search_content()</a>, <a class="el" href="items_8php.html#ab1bce4261bcf75ad62753b498a144d17">tag_deliver()</a>, <a class="el" href="tagrm_8php.html#adfd4ea5b4d7fc6d9c9e042af5cd7d49a">tagrm_content()</a>, <a class="el" href="tagrm_8php.html#a1702f40aa53a2fa93deade1f609abe78">tagrm_post()</a>, <a class="el" href="widgets_8php.html#a313a8d10ab81c71357c12e67e4d7efd5">widget_item()</a>, and <a class="el" href="items_8php.html#a1cf89557f32d5dfbe8bd90448dc1aa92">zot_feed()</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a8cda98925a4c5c2f6dade70d9586d79a"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">filter_insecure </td>
+ <td>(</td>
+ <td class="paramtype">&#160;</td>
+ <td class="paramname"><em>$channel_id</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">&#160;</td>
+ <td class="paramname"><em>$arr</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+<p>If channel is configured to filter insecure members of privacy groups (those whose networks leak privacy via email notifications or other criteria) remove them from any privacy groups (collections) that were included in a post. They can still be addressed individually. Networks may need to be added or removed from this list as circumstances change.</p>
+<p>Update: this may need to be the default, which will force people to opt-in to sending stuff privately to insecure platforms. </p>
+
+<p>Referenced by <a class="el" href="items_8php.html#a772f0ae77ad77c8ab68ed918a3870946">collect_recipients()</a>.</p>
</div>
</div>
@@ -931,7 +997,7 @@ Functions</h2></td></tr>
</table>
</div><div class="memdoc">
-<p>Referenced by <a class="el" href="items_8php.html#aa2d3caa2f27720762b5c729e07df40fb">list_post_dates()</a>, and <a class="el" href="items_8php.html#ad2abb4644ff1f20fefbc80326fe01cf0">posted_dates()</a>.</p>
+<p>Referenced by <a class="el" href="items_8php.html#ab33fa9756aaa5f39a6104d57a62baf00">list_post_dates()</a>, and <a class="el" href="items_8php.html#ad2abb4644ff1f20fefbc80326fe01cf0">posted_dates()</a>.</p>
</div>
</div>
@@ -975,7 +1041,7 @@ Functions</h2></td></tr>
</div>
</div>
-<a class="anchor" id="a896c1809d58f2d7a42cfe14577958ddf"></a>
+<a class="anchor" id="a5e5be7bf1f8257dec0b2647e60a3f3f1"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
@@ -989,7 +1055,13 @@ Functions</h2></td></tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">&#160;</td>
- <td class="paramname"><em>$item</em>&#160;</td>
+ <td class="paramname"><em>$item</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">&amp;&#160;</td>
+ <td class="paramname"><em>$author</em>&#160;</td>
</tr>
<tr>
<td></td>
@@ -1000,7 +1072,7 @@ Functions</h2></td></tr>
</div><div class="memdoc">
<p>If there's a copy of the body content which is guaranteed to have survived mangling in transit, use it.</p>
-<p>Referenced by <a class="el" href="items_8php.html#a8794863cdf8ce1333040933d3a3f66bd">consume_feed()</a>.</p>
+<p>Referenced by <a class="el" href="items_8php.html#adc26e08aa61f5666da04ab5d2a9d68a6">consume_feed()</a>.</p>
</div>
</div>
@@ -1078,7 +1150,7 @@ Functions</h2></td></tr>
</table>
</div><div class="memdoc">
-<p>Referenced by <a class="el" href="externals_8php.html#a4df44079e6f915286088b7a0d44db926">externals_run()</a>, <a class="el" href="onepoll_8php.html#a72753b2fdec79b37c7f432035c91fb6d">onepoll_run()</a>, and <a class="el" href="zot_8php.html#aeea071f17e306fe3d0c488551906bfab">zot_import()</a>.</p>
+<p>Referenced by <a class="el" href="externals_8php.html#a4df44079e6f915286088b7a0d44db926">externals_run()</a>, <a class="el" href="import_8php.html#af17fef0410518f7eac205d0ea416eaa2">import_post()</a>, <a class="el" href="onepoll_8php.html#a72753b2fdec79b37c7f432035c91fb6d">onepoll_run()</a>, and <a class="el" href="zot_8php.html#aeea071f17e306fe3d0c488551906bfab">zot_import()</a>.</p>
</div>
</div>
@@ -1147,6 +1219,40 @@ Functions</h2></td></tr>
</div>
</div>
+<a class="anchor" id="a52c24114b73c0bdb605a03cd29712223"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">handle_feed </td>
+ <td>(</td>
+ <td class="paramtype">&#160;</td>
+ <td class="paramname"><em>$uid</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">&#160;</td>
+ <td class="paramname"><em>$abook_id</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">&#160;</td>
+ <td class="paramname"><em>$url</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p>Referenced by <a class="el" href="onepoll_8php.html#a72753b2fdec79b37c7f432035c91fb6d">onepoll_run()</a>.</p>
+
+</div>
+</div>
<a class="anchor" id="a77051724d1784074ff187e73a4db93fe"></a>
<div class="memitem">
<div class="memproto">
@@ -1165,6 +1271,24 @@ Functions</h2></td></tr>
</div>
</div>
+<a class="anchor" id="a2c3f97b2109c05df86d97449b3c78ebc"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">import_author_diaspora </td>
+ <td>(</td>
+ <td class="paramtype">&#160;</td>
+ <td class="paramname"><em>$x</em></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p>Referenced by <a class="el" href="items_8php.html#ae73794179b62d39bb597ff670ab1c1e5">import_author_xchan()</a>, and <a class="el" href="socgraph_8php.html#a5ef8bef37161df53718a21e93d02fbd6">poco_load()</a>.</p>
+
+</div>
+</div>
<a class="anchor" id="a6bee35961f2e32905f20367a9309d627"></a>
<div class="memitem">
<div class="memproto">
@@ -1183,6 +1307,24 @@ Functions</h2></td></tr>
</div>
</div>
+<a class="anchor" id="a37f79991f36811cf847446ff60e8e11f"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">import_author_unknown </td>
+ <td>(</td>
+ <td class="paramtype">&#160;</td>
+ <td class="paramname"><em>$x</em></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p>Referenced by <a class="el" href="items_8php.html#adc26e08aa61f5666da04ab5d2a9d68a6">consume_feed()</a>, and <a class="el" href="items_8php.html#ae73794179b62d39bb597ff670ab1c1e5">import_author_xchan()</a>.</p>
+
+</div>
+</div>
<a class="anchor" id="ae73794179b62d39bb597ff670ab1c1e5"></a>
<div class="memitem">
<div class="memproto">
@@ -1350,7 +1492,7 @@ Functions</h2></td></tr>
</table>
</div><div class="memdoc">
-<p>Referenced by <a class="el" href="event_8php.html#a7378e839ac3de9d55579eb3ec48eaf92">event_store_item()</a>, <a class="el" href="item_8php.html#a693cd09805755ab85bbb5ecae69a48c3">item_post()</a>, <a class="el" href="like_8php.html#a9d7dd268f21c21e9d29dd2aca2dd9538">like_content()</a>, <a class="el" href="mood_8php.html#a7ae136dd7476865b4828136175db5022">mood_init()</a>, <a class="el" href="include_2photos_8php.html#a6c40ef58aefef705a5adc84a40e97109">photo_upload()</a>, <a class="el" href="include_2photos_8php.html#ad648c0c5544fe9263409b6f6e57c6274">photos_create_item()</a>, <a class="el" href="items_8php.html#a410f9c743877c125ca06312373346903">post_activity_item()</a>, <a class="el" href="zot_8php.html#a4d9e6ca295e443b740d9960c304b3474">process_delivery()</a>, <a class="el" href="activities_8php.html#a80134e807719b3c54aba971958d2e132">profile_activity()</a>, and <a class="el" href="subthread_8php.html#a50368f3d825b77996030528e7fbfa3d3">subthread_content()</a>.</p>
+<p>Referenced by <a class="el" href="items_8php.html#adc26e08aa61f5666da04ab5d2a9d68a6">consume_feed()</a>, <a class="el" href="diaspora_8php.html#a006731620a5242d410358b32678e48e3">diaspora_asphoto()</a>, <a class="el" href="diaspora_8php.html#a0fb2abe304aae19efc040a5e6b917829">diaspora_comment()</a>, <a class="el" href="diaspora_8php.html#a5d57518545baa31cf8a85a937a267681">diaspora_like()</a>, <a class="el" href="diaspora_8php.html#a20b968d64ef26afe5cb0cc75a7570a31">diaspora_post()</a>, <a class="el" href="diaspora_8php.html#a2bf43f6b5890897f425ef4325d34b007">diaspora_reshare()</a>, <a class="el" href="event_8php.html#a7378e839ac3de9d55579eb3ec48eaf92">event_store_item()</a>, <a class="el" href="impel_8php.html#ab7db6fca43b42ea4332cb3e841b3cf7b">impel_init()</a>, <a class="el" href="import_8php.html#af17fef0410518f7eac205d0ea416eaa2">import_post()</a>, <a class="el" href="item_8php.html#a693cd09805755ab85bbb5ecae69a48c3">item_post()</a>, <a class="el" href="like_8php.html#a9d7dd268f21c21e9d29dd2aca2dd9538">like_content()</a>, <a class="el" href="mood_8php.html#a7ae136dd7476865b4828136175db5022">mood_init()</a>, <a class="el" href="include_2photos_8php.html#a6c40ef58aefef705a5adc84a40e97109">photo_upload()</a>, <a class="el" href="include_2photos_8php.html#ad648c0c5544fe9263409b6f6e57c6274">photos_create_item()</a>, <a class="el" href="items_8php.html#a410f9c743877c125ca06312373346903">post_activity_item()</a>, <a class="el" href="zot_8php.html#a0e3006e7a456b2175a9badc96bc5176d">process_delivery()</a>, <a class="el" href="activities_8php.html#a80134e807719b3c54aba971958d2e132">profile_activity()</a>, <a class="el" href="refimport_8php.html#ad97ebb5feda0230a4834e0b3637a0d29">refimport_content()</a>, <a class="el" href="refimport_8php.html#a01a29630fa5e1ce6cd5e1fd75280747c">reflect_comment_store()</a>, and <a class="el" href="subthread_8php.html#a50368f3d825b77996030528e7fbfa3d3">subthread_content()</a>.</p>
</div>
</div>
@@ -1378,7 +1520,7 @@ Functions</h2></td></tr>
</table>
</div><div class="memdoc">
-<p>Referenced by <a class="el" href="item_8php.html#a693cd09805755ab85bbb5ecae69a48c3">item_post()</a>, <a class="el" href="mod_2photos_8php.html#a062bed4d04d14fee8a53f4c9be673080">photos_post()</a>, and <a class="el" href="zot_8php.html#a31aad56acf8ff8f2353e6ff8595544df">update_imported_item()</a>.</p>
+<p>Referenced by <a class="el" href="impel_8php.html#ab7db6fca43b42ea4332cb3e841b3cf7b">impel_init()</a>, <a class="el" href="import_8php.html#af17fef0410518f7eac205d0ea416eaa2">import_post()</a>, <a class="el" href="item_8php.html#a693cd09805755ab85bbb5ecae69a48c3">item_post()</a>, <a class="el" href="mod_2photos_8php.html#a062bed4d04d14fee8a53f4c9be673080">photos_post()</a>, <a class="el" href="refimport_8php.html#ad97ebb5feda0230a4834e0b3637a0d29">refimport_content()</a>, <a class="el" href="refimport_8php.html#a01a29630fa5e1ce6cd5e1fd75280747c">reflect_comment_store()</a>, <a class="el" href="tagrm_8php.html#adfd4ea5b4d7fc6d9c9e042af5cd7d49a">tagrm_content()</a>, <a class="el" href="tagrm_8php.html#a1702f40aa53a2fa93deade1f609abe78">tagrm_post()</a>, and <a class="el" href="zot_8php.html#a31aad56acf8ff8f2353e6ff8595544df">update_imported_item()</a>.</p>
</div>
</div>
@@ -1442,11 +1584,11 @@ Functions</h2></td></tr>
</table>
</div><div class="memdoc">
-<p>Referenced by <a class="el" href="items_8php.html#a896c1809d58f2d7a42cfe14577958ddf">get_atom_elements()</a>.</p>
+<p>Referenced by <a class="el" href="items_8php.html#a5e5be7bf1f8257dec0b2647e60a3f3f1">get_atom_elements()</a>.</p>
</div>
</div>
-<a class="anchor" id="aa2d3caa2f27720762b5c729e07df40fb"></a>
+<a class="anchor" id="ab33fa9756aaa5f39a6104d57a62baf00"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
@@ -1460,7 +1602,13 @@ Functions</h2></td></tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">&#160;</td>
- <td class="paramname"><em>$wall</em>&#160;</td>
+ <td class="paramname"><em>$wall</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">&#160;</td>
+ <td class="paramname"><em>$mindate</em>&#160;</td>
</tr>
<tr>
<td></td>
@@ -1493,7 +1641,7 @@ Functions</h2></td></tr>
</div>
</div>
-<a class="anchor" id="ac1fcf621dce7370515b420a7753f4726"></a>
+<a class="anchor" id="a8675e62674de6fb7c42e4a408c7116cc"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
@@ -1501,13 +1649,23 @@ Functions</h2></td></tr>
<td class="memname">map_scope </td>
<td>(</td>
<td class="paramtype">&#160;</td>
- <td class="paramname"><em>$scope</em></td><td>)</td>
+ <td class="paramname"><em>$scope</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
<td></td>
+ <td class="paramtype">&#160;</td>
+ <td class="paramname"><em>$strip</em> = <code>false</code>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
-<p>Referenced by <a class="el" href="items_8php.html#a82955cc578f0fa600acec84475026194">encode_item()</a>, <a class="el" href="item_8php.html#a693cd09805755ab85bbb5ecae69a48c3">item_post()</a>, and <a class="el" href="items_8php.html#a410f9c743877c125ca06312373346903">post_activity_item()</a>.</p>
+<p>Referenced by <a class="el" href="items_8php.html#a56b0f5d2cb36eb8f4bfca84813884f86">encode_item()</a>, <a class="el" href="item_8php.html#a693cd09805755ab85bbb5ecae69a48c3">item_post()</a>, <a class="el" href="items_8php.html#a410f9c743877c125ca06312373346903">post_activity_item()</a>, <a class="el" href="profiles_8php.html#a46975783b8b8d70402d51487eb1f0b00">profiles_content()</a>, and <a class="el" href="items_8php.html#adf2b8137dc4ad9ec958de2842f16f3c2">start_delivery_chain()</a>.</p>
</div>
</div>
@@ -1534,7 +1692,7 @@ Functions</h2></td></tr>
</dl>
<dl class="section return"><dt>Returns</dt><dd>array 'success' =&gt; true or false 'activity' =&gt; the resulting activity if successful </dd></dl>
-<p>Referenced by <a class="el" href="include_2api_8php.html#a72bfecac1970bc29b853073e816388ff">api_channel_stream()</a>, <a class="el" href="poke_8php.html#a9725aab97b3983e6a98bd81c4efe7d3b">poke_init()</a>, <a class="el" href="tagger_8php.html#a0e4a3eb177d1684553c547503d67161c">tagger_content()</a>, and <a class="el" href="thing_8php.html#a8be23b1d475ec3d9291999221c674c80">thing_init()</a>.</p>
+<p>Referenced by <a class="el" href="include_2api_8php.html#a72bfecac1970bc29b853073e816388ff">api_channel_stream()</a>, <a class="el" href="connedit_8php.html#a234c48426b652bf4d37053f2af329ac5">connedit_post()</a>, <a class="el" href="poke_8php.html#a9725aab97b3983e6a98bd81c4efe7d3b">poke_init()</a>, <a class="el" href="tagger_8php.html#a0e4a3eb177d1684553c547503d67161c">tagger_content()</a>, and <a class="el" href="thing_8php.html#a8be23b1d475ec3d9291999221c674c80">thing_init()</a>.</p>
</div>
</div>
@@ -1687,7 +1845,94 @@ Functions</h2></td></tr>
</table>
</div><div class="memdoc">
-<p>Referenced by <a class="el" href="items_8php.html#a2541e6861a56d145c9281877cc501615">item_store()</a>, and <a class="el" href="items_8php.html#acf0bf7c9d21ac84f32effb754f7ad484">item_store_update()</a>.</p>
+<p>Referenced by <a class="el" href="diaspora_8php.html#a0fb2abe304aae19efc040a5e6b917829">diaspora_comment()</a>, <a class="el" href="items_8php.html#a2541e6861a56d145c9281877cc501615">item_store()</a>, and <a class="el" href="items_8php.html#acf0bf7c9d21ac84f32effb754f7ad484">item_store_update()</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="adf2b8137dc4ad9ec958de2842f16f3c2"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">start_delivery_chain </td>
+ <td>(</td>
+ <td class="paramtype">&#160;</td>
+ <td class="paramname"><em>$channel</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">&#160;</td>
+ <td class="paramname"><em>$item</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">&#160;</td>
+ <td class="paramname"><em>$item_id</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">&#160;</td>
+ <td class="paramname"><em>$parent</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+<p>Sourced and tag-delivered posts are re-targetted for delivery to the connections of the channel receiving the post. This starts the second delivery chain, by resetting permissions and ensuring that ITEM_UPLINK is set on the parent post, and storing the current owner_xchan as the source_xchan. We'll become the new owner. If called without $parent, this <em>is</em> the parent post. </p>
+
+<p>Referenced by <a class="el" href="items_8php.html#ab1bce4261bcf75ad62753b498a144d17">tag_deliver()</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a25221826fa4621f523c68483e3b6af26"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">store_diaspora_comment_sig </td>
+ <td>(</td>
+ <td class="paramtype">&#160;</td>
+ <td class="paramname"><em>$datarray</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">&#160;</td>
+ <td class="paramname"><em>$channel</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">&#160;</td>
+ <td class="paramname"><em>$parent_item</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">&#160;</td>
+ <td class="paramname"><em>$post_id</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">&#160;</td>
+ <td class="paramname"><em>$walltowall</em> = <code>false</code>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p>Referenced by <a class="el" href="item_8php.html#a693cd09805755ab85bbb5ecae69a48c3">item_post()</a>.</p>
</div>
</div>
@@ -1714,6 +1959,12 @@ Functions</h2></td></tr>
</tr>
</table>
</div><div class="memdoc">
+<p>Fetch stuff we need - a channel and an item</p>
+<p>Seems like a good place to plug in a poke notification.</p>
+<p>Do community tagging</p>
+<p>A "union" is a message which our channel has sourced from another channel. This sets up a second delivery chain just like forum tags do. Find out if this is a source-able post.</p>
+<p>Now we've got those out of the way. Let's see if this is a post that's tagged for re-delivery</p>
+<p>Kill two birds with one stone. As long as we're here, send a mention notification.</p>
<p>Referenced by <a class="el" href="zot_8php.html#adfeb9400ae6b726beec89f8f1e8fde72">delete_imported_item()</a>, <a class="el" href="item_8php.html#a764bbb2e9a885a86fb23d0b5e4a09221">item_content()</a>, <a class="el" href="items_8php.html#a2541e6861a56d145c9281877cc501615">item_store()</a>, and <a class="el" href="items_8php.html#acf0bf7c9d21ac84f32effb754f7ad484">item_store_update()</a>.</p>
@@ -1760,8 +2011,10 @@ Functions</h2></td></tr>
</tr>
</table>
</div><div class="memdoc">
+<p>tgroup_check($uid,$item)</p>
+<p>This function is called pre-deliver to see if a post matches the criteria to be tag delivered. We don't actually do anything except check that it matches the criteria. This is so that the channel with tag_delivery enabled can receive the post even if they turn off permissions for the sender to send their stream. <a class="el" href="items_8php.html#ab1bce4261bcf75ad62753b498a144d17">tag_deliver()</a> can't be called until the post is actually stored. By then it would be too late to reject it. </p>
-<p>Referenced by <a class="el" href="items_8php.html#a8794863cdf8ce1333040933d3a3f66bd">consume_feed()</a>, and <a class="el" href="zot_8php.html#a4d9e6ca295e443b740d9960c304b3474">process_delivery()</a>.</p>
+<p>Referenced by <a class="el" href="zot_8php.html#a0e3006e7a456b2175a9badc96bc5176d">process_delivery()</a>.</p>
</div>
</div>
@@ -1789,7 +2042,53 @@ Functions</h2></td></tr>
</table>
</div><div class="memdoc">
-<p>Referenced by <a class="el" href="items_8php.html#a896c1809d58f2d7a42cfe14577958ddf">get_atom_elements()</a>.</p>
+<p>Referenced by <a class="el" href="items_8php.html#a5e5be7bf1f8257dec0b2647e60a3f3f1">get_atom_elements()</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="aabfaa193b83154c2a81e91284e5d5e59"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">translate_scope </td>
+ <td>(</td>
+ <td class="paramtype">&#160;</td>
+ <td class="paramname"><em>$scope</em></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p>Referenced by <a class="el" href="lockview_8php.html#a851e26ab9a1008df5c5ebebea31e9b44">lockview_content()</a>, and <a class="el" href="profiles_8php.html#a46975783b8b8d70402d51487eb1f0b00">profiles_content()</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a9b449eeae50003414b8b30ca927af434"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">update_feed_item </td>
+ <td>(</td>
+ <td class="paramtype">&#160;</td>
+ <td class="paramname"><em>$uid</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">&#160;</td>
+ <td class="paramname"><em>$datarray</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p>Referenced by <a class="el" href="items_8php.html#adc26e08aa61f5666da04ab5d2a9d68a6">consume_feed()</a>.</p>
</div>
</div>
@@ -1847,11 +2146,11 @@ Functions</h2></td></tr>
</table>
</div><div class="memdoc">
-<p>Referenced by <a class="el" href="item_8php.html#a693cd09805755ab85bbb5ecae69a48c3">item_post()</a>.</p>
+<p>Referenced by <a class="el" href="impel_8php.html#ab7db6fca43b42ea4332cb3e841b3cf7b">impel_init()</a>, and <a class="el" href="item_8php.html#a693cd09805755ab85bbb5ecae69a48c3">item_post()</a>.</p>
</div>
</div>
-<a class="anchor" id="a004e89d86b0f29b2c4da20108ecc4091"></a>
+<a class="anchor" id="a1cf89557f32d5dfbe8bd90448dc1aa92"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
@@ -1871,7 +2170,7 @@ Functions</h2></td></tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">&#160;</td>
- <td class="paramname"><em>$mindate</em>&#160;</td>
+ <td class="paramname"><em>$arr</em>&#160;</td>
</tr>
<tr>
<td></td>
@@ -1881,7 +2180,7 @@ Functions</h2></td></tr>
</table>
</div><div class="memdoc">
-<p>Referenced by <a class="el" href="zotfeed_8php.html#a24dfc23d366e7f840cf2847d0c1c8eac">zotfeed_init()</a>.</p>
+<p>Referenced by <a class="el" href="zot_8php.html#a3920afe14fc1d82020161b4b86bcd9ac">zot_process_message_request()</a>, and <a class="el" href="zotfeed_8php.html#a24dfc23d366e7f840cf2847d0c1c8eac">zotfeed_init()</a>.</p>
</div>
</div>
diff --git a/doc/html/items_8php.js b/doc/html/items_8php.js
index 8e2a0c55a..f3ac4dfd0 100644
--- a/doc/html/items_8php.js
+++ b/doc/html/items_8php.js
@@ -7,17 +7,18 @@ var items_8php =
[ "atom_entry", "items_8php.html#a275108c050f7eb18bcbb5018e6b81cf6", null ],
[ "can_comment_on_post", "items_8php.html#a1e75047cf175aaee8dd16aa761913ff9", null ],
[ "check_item_source", "items_8php.html#a87ac9e359591721a824ecd23bbb56296", null ],
- [ "collect_recipients", "items_8php.html#a01e3cf44e082fa9bd06dcde5bf713d70", null ],
+ [ "collect_recipients", "items_8php.html#a772f0ae77ad77c8ab68ed918a3870946", null ],
+ [ "comments_are_now_closed", "items_8php.html#abeb7886cde44d9a83dbaf2bc4ab18723", null ],
[ "compare_permissions", "items_8php.html#a0790a4550b829e85504af548623002ca", null ],
[ "construct_activity_object", "items_8php.html#aa9e99613d38a97b39c8cf5449699c2ee", null ],
[ "construct_activity_target", "items_8php.html#aa579bc4445d60098b1410961ca8e96b7", null ],
[ "construct_verb", "items_8php.html#a8f3c85c584ccd2b98c3ca440e45b40f8", null ],
- [ "consume_feed", "items_8php.html#a8794863cdf8ce1333040933d3a3f66bd", null ],
+ [ "consume_feed", "items_8php.html#adc26e08aa61f5666da04ab5d2a9d68a6", null ],
[ "decode_tags", "items_8php.html#a56b2a4abcadfac71175cd50555528cc3", null ],
[ "delete_item_lowlevel", "items_8php.html#aac8c9eb4338e2a996c43914392c6cfdb", null ],
[ "drop_item", "items_8php.html#a555762e1022a4b8e3c3abd32e7812408", null ],
[ "drop_items", "items_8php.html#a668ece2c37f05cc3abe538eb0dabfe55", null ],
- [ "encode_item", "items_8php.html#a82955cc578f0fa600acec84475026194", null ],
+ [ "encode_item", "items_8php.html#a56b0f5d2cb36eb8f4bfca84813884f86", null ],
[ "encode_item_flags", "items_8php.html#a5f690fc2484abec07840b4f9dd525bd9", null ],
[ "encode_item_terms", "items_8php.html#ac6673627d289ee4f547de0fe3b7acd0a", null ],
[ "encode_item_xchan", "items_8php.html#a566c601726697e044e75284af7fb6f17", null ],
@@ -25,17 +26,21 @@ var items_8php =
[ "encode_rel_links", "items_8php.html#aa723c0571e314a1853a24c5854b4f54f", null ],
[ "enumerate_permissions", "items_8php.html#afbcf26dfcf8a83fff952aa858c1b7b67", null ],
[ "fetch_post_tags", "items_8php.html#adf980098b6de9c3993bc3ff26a8dd6f9", null ],
+ [ "filter_insecure", "items_8php.html#a8cda98925a4c5c2f6dade70d9586d79a", null ],
[ "first_post_date", "items_8php.html#a0cf98bb619f07dd18f602683a55a5f59", null ],
[ "fix_private_photos", "items_8php.html#aba98fcbbcd7044a7e9ea34edabc14c87", null ],
- [ "get_atom_elements", "items_8php.html#a896c1809d58f2d7a42cfe14577958ddf", null ],
+ [ "get_atom_elements", "items_8php.html#a5e5be7bf1f8257dec0b2647e60a3f3f1", null ],
[ "get_feed_for", "items_8php.html#a04a35b610acfe54434df08adec39c0c7", null ],
[ "get_item_contact", "items_8php.html#aab9c6bae4c40799867596bdaae9829fd", null ],
[ "get_item_elements", "items_8php.html#a536d0313b6ffe33b9d2490c4e25c5361", null ],
[ "get_mail_elements", "items_8php.html#a94ddb1d6c8fa21dd7433677e85168037", null ],
[ "get_profile_elements", "items_8php.html#a251343637ff40a50cca93452cd530c26", null ],
[ "get_public_feed", "items_8php.html#a079e099e15d88d47aeb6ca6d60da7107", null ],
+ [ "handle_feed", "items_8php.html#a52c24114b73c0bdb605a03cd29712223", null ],
[ "has_permissions", "items_8php.html#a77051724d1784074ff187e73a4db93fe", null ],
+ [ "import_author_diaspora", "items_8php.html#a2c3f97b2109c05df86d97449b3c78ebc", null ],
[ "import_author_rss", "items_8php.html#a6bee35961f2e32905f20367a9309d627", null ],
+ [ "import_author_unknown", "items_8php.html#a37f79991f36811cf847446ff60e8e11f", null ],
[ "import_author_xchan", "items_8php.html#ae73794179b62d39bb597ff670ab1c1e5", null ],
[ "item_add_cid", "items_8php.html#a02ca33c31ed535d24894f8a9a91ce9df", null ],
[ "item_expire", "items_8php.html#a6f7e1334af5d684a987fa6a3eb37f4cc", null ],
@@ -46,9 +51,9 @@ var items_8php =
[ "item_store_update", "items_8php.html#acf0bf7c9d21ac84f32effb754f7ad484", null ],
[ "items_fetch", "items_8php.html#a756738301f2ed96be50232500677d58a", null ],
[ "limit_body_size", "items_8php.html#af94c281016c6c912d06e064113336c5c", null ],
- [ "list_post_dates", "items_8php.html#aa2d3caa2f27720762b5c729e07df40fb", null ],
+ [ "list_post_dates", "items_8php.html#ab33fa9756aaa5f39a6104d57a62baf00", null ],
[ "mail_store", "items_8php.html#a77da7ce9a117601d49ac4a67c71b514f", null ],
- [ "map_scope", "items_8php.html#ac1fcf621dce7370515b420a7753f4726", null ],
+ [ "map_scope", "items_8php.html#a8675e62674de6fb7c42e4a408c7116cc", null ],
[ "post_activity_item", "items_8php.html#a410f9c743877c125ca06312373346903", null ],
[ "posted_dates", "items_8php.html#ad2abb4644ff1f20fefbc80326fe01cf0", null ],
[ "red_escape_codeblock", "items_8php.html#a49905ea75adfe8a2d110be344d18d6a6", null ],
@@ -58,10 +63,14 @@ var items_8php =
[ "red_zrlify_img_callback", "items_8php.html#a78a60e39f6991bd3324a24dcbf9dac5a", null ],
[ "retain_item", "items_8php.html#af6237605c60d69abdd959ddbbee3420c", null ],
[ "send_status_notifications", "items_8php.html#aab9e0c58247427126de0699c729c3b6c", null ],
+ [ "start_delivery_chain", "items_8php.html#adf2b8137dc4ad9ec958de2842f16f3c2", null ],
+ [ "store_diaspora_comment_sig", "items_8php.html#a25221826fa4621f523c68483e3b6af26", null ],
[ "tag_deliver", "items_8php.html#ab1bce4261bcf75ad62753b498a144d17", null ],
[ "termtype", "items_8php.html#ad34827ed330898456783fb14c7b46154", null ],
[ "tgroup_check", "items_8php.html#a88c6cf7649ac836fbbed82a7a0315110", null ],
[ "title_is_body", "items_8php.html#aa371905f0a211b307cb3f7188c6cba04", null ],
+ [ "translate_scope", "items_8php.html#aabfaa193b83154c2a81e91284e5d5e59", null ],
+ [ "update_feed_item", "items_8php.html#a9b449eeae50003414b8b30ca927af434", null ],
[ "update_remote_id", "items_8php.html#a2baa9e05f1e8aa3dd61c85803ae39bd6", null ],
- [ "zot_feed", "items_8php.html#a004e89d86b0f29b2c4da20108ecc4091", null ]
+ [ "zot_feed", "items_8php.html#a1cf89557f32d5dfbe8bd90448dc1aa92", null ]
]; \ No newline at end of file
diff --git a/doc/html/language_8php.html b/doc/html/language_8php.html
index 4fc25ba2c..939a2b1d0 100644
--- a/doc/html/language_8php.html
+++ b/doc/html/language_8php.html
@@ -138,7 +138,6 @@ Functions</h2></td></tr>
<tr class="memdesc:a632da17c7ac0d2dc1a00a4706870194b"><td class="mdescLeft">&#160;</td><td class="mdescRight">Takes a string and tries to identify the language. <a href="#a632da17c7ac0d2dc1a00a4706870194b">More...</a><br/></td></tr>
<tr class="separator:a632da17c7ac0d2dc1a00a4706870194b"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a43e6ddba9df019c9ac3ab4c94c444ae7"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="language_8php.html#a43e6ddba9df019c9ac3ab4c94c444ae7">get_language_name</a> ($s, $l=null)</td></tr>
-<tr class="memdesc:a43e6ddba9df019c9ac3ab4c94c444ae7"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the display name of a given language code. <a href="#a43e6ddba9df019c9ac3ab4c94c444ae7">More...</a><br/></td></tr>
<tr class="separator:a43e6ddba9df019c9ac3ab4c94c444ae7"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
@@ -212,7 +211,7 @@ Functions</h2></td></tr>
<p>Get the browser's submitted preferred languages. </p>
<p>This functions parses the HTTP_ACCEPT_LANGUAGE header sent by the browser and extracts the preferred languages and their priority.</p>
-<p>Get the language setting directly from system variables, bypassing <a class="el" href="include_2config_8php.html#af02c96e6b37335774b548914ede1d22e">get_config()</a> as database may not yet be configured.</p>
+<p>Get the language setting directly from system variables, bypassing <a class="el" href="include_2config_8php.html#af02c96e6b37335774b548914ede1d22e" title="Get a particular config variable given the category name ($family) and a key.">get_config()</a> as database may not yet be configured.</p>
<p>If possible, we use the value from the browser.</p>
<dl class="section return"><dt>Returns</dt><dd>array with ordered list of preferred languages from browser </dd></dl>
@@ -244,18 +243,7 @@ Functions</h2></td></tr>
</table>
</div><div class="memdoc">
-<p>Returns the display name of a given language code. </p>
-<p>By default we use the localized language name. You can switch the result to any language with the optional 2nd parameter $l.</p>
-<p>$s and $l can be in any format that PHP's Locale understands. We will mostly use the 2-letter ISO 639-1 (en, de, fr) format.</p>
-<p>If nothing could be looked up it returns $s.</p>
-<dl class="params"><dt>Parameters</dt><dd>
- <table class="params">
- <tr><td class="paramname">$s</td><td>Language code to look up </td></tr>
- <tr><td class="paramname">$l</td><td>(optional) In which language to return the name </td></tr>
- </table>
- </dd>
-</dl>
-<dl class="section return"><dt>Returns</dt><dd>string with the language name, or $s if unrecognized </dd></dl>
+<p>Referenced by <a class="el" href="text_8php.html#a71f6952243d3fe1c5a8154f78027e29c">lang_selector()</a>.</p>
</div>
</div>
@@ -370,9 +358,9 @@ Functions</h2></td></tr>
</table>
</dd>
</dl>
-<dl class="section return"><dt>Returns</dt><dd>translated string if exsists, otherwise s </dd></dl>
+<dl class="section return"><dt>Returns</dt><dd>translated string if exists, otherwise return $s </dd></dl>
-<p>Referenced by <a class="el" href="achievements_8php.html#a35ae04ada0e227d19671f289a32fb30e">achievements_content()</a>, <a class="el" href="acl_8php.html#ac6776dba871806ecdb5d1659bc2eb07a">acl_init()</a>, <a class="el" href="admin_8php.html#afef415e4011607fbb665610441595015">admin_content()</a>, <a class="el" href="admin_8php.html#ad6f87a764fd35f522c7b4c351d7878ec">admin_page_channels()</a>, <a class="el" href="admin_8php.html#aaa6addf2dbc3f3fcf99244a56b41eade">admin_page_dbsync()</a>, <a class="el" href="admin_8php.html#a6943543f3138f6ee182cb701f415d1cc">admin_page_hubloc()</a>, <a class="el" href="admin_8php.html#a1d1362698af14d209aa3a0fb655551dd">admin_page_logs()</a>, <a class="el" href="admin_8php.html#a233b7c8c31776b7020532003c6e44e1c">admin_page_logs_post()</a>, <a class="el" href="admin_8php.html#a54128076986ba80c4a103de3fc3e19a8">admin_page_plugins()</a>, <a class="el" href="admin_8php.html#ac0f3bd12431c056aad77bac9d09fa30e">admin_page_site()</a>, <a class="el" href="admin_8php.html#add865f4ae806ecbf716f423fc3e50e4f">admin_page_site_post()</a>, <a class="el" href="admin_8php.html#ac6e95b920b5abd030cc522964987087a">admin_page_summary()</a>, <a class="el" href="admin_8php.html#af124619fdc278fe2bf14c45ddaa260fb">admin_page_themes()</a>, <a class="el" href="admin_8php.html#a62f10f90c47686c9c3c37c4c03a108d2">admin_page_users()</a>, <a class="el" href="admin_8php.html#acf51f5837a7427832144c2bf7308ada3">admin_post()</a>, <a class="el" href="identity_8php.html#aa870d2c1f558cfd52bef05bc124e8fa4">advanced_profile()</a>, <a class="el" href="text_8php.html#a75c243e06341ec16bd5a44b9b1cacd85">alt_pager()</a>, <a class="el" href="mod_2api_8php.html#a33315b5bbf5418f6850b2038107b526d">api_content()</a>, <a class="el" href="mod_2api_8php.html#a6fe77f05c07cb51048df0d557b4b9bd2">api_post()</a>, <a class="el" href="include_2api_8php.html#ad24ce1bf20867add4c9211a8eaf93f22">api_statuses_public_timeline()</a>, <a class="el" href="include_2apps_8php.html#a1b2e737f477a2e0d9d11ef14adc5aa66">app_render()</a>, <a class="el" href="include_2apps_8php.html#a15626f24069c18816f7cdaf4735f58f9">app_store()</a>, <a class="el" href="include_2apps_8php.html#aeab6a62d2f3dfaa86ed043a006305f46">app_update()</a>, <a class="el" href="appman_8php.html#af48805ac2f6f123f2681a8ae1c6f123f">appman_content()</a>, <a class="el" href="appman_8php.html#a2979acbe47ffaecfa19b9eabfbfbde39">appman_post()</a>, <a class="el" href="mod_2apps_8php.html#a546016cb960d0b110ee8e489dfa6c27c">apps_content()</a>, <a class="el" href="view_2theme_2apw_2php_2config_8php.html#ad59fc09da66b66267f9753c8b2dd68d0">apw_form()</a>, <a class="el" href="include_2attach_8php.html#a0d07c5b83d3d54e186f752e571847b36">attach_by_hash()</a>, <a class="el" href="include_2attach_8php.html#ad991208ce939387e2f93a3bce7d09932">attach_by_hash_nodata()</a>, <a class="el" href="include_2attach_8php.html#a887d2d44a3ef18dcb6624e7fb58dc8e3">attach_count_files()</a>, <a class="el" href="mod_2attach_8php.html#aa88eb5ad87aa1036a30e70339cc6c1b1">attach_init()</a>, <a class="el" href="include_2attach_8php.html#a3634af95f11a023dd8e882c3c7a3600d">attach_list_files()</a>, <a class="el" href="include_2attach_8php.html#ab6830b3ab74a5d284876141ac80f6cbc">attach_mkdir()</a>, <a class="el" href="include_2attach_8php.html#a84a8a64c4805e1525b42d4add464833f">attach_store()</a>, <a class="el" href="bbcode_8php.html#a009f61aaf78771737ed0765c8463911b">bbcode()</a>, <a class="el" href="block_8php.html#a8a82a470acdfbc7a8e749509caeeea45">block_content()</a>, <a class="el" href="blocks_8php.html#a2531a8fd51db3cecb2eb20c002c66e12">blocks_content()</a>, <a class="el" href="view_2theme_2blogga_2php_2config_8php.html#a8a311a402d3e746ce53fadc38e4b2d27">blogtheme_form()</a>, <a class="el" href="include_2bookmarks_8php.html#aef1cb2968c41c759f2d106e1088ca323">bookmark_add()</a>, <a class="el" href="mod_2bookmarks_8php.html#a774364b1c8404529581083631703527a">bookmarks_content()</a>, <a class="el" href="mod_2bookmarks_8php.html#a6b7942f3d27e40f0f47c88704127b9b3">bookmarks_init()</a>, <a class="el" href="contact__widgets_8php.html#a165eb021e61c4dcab2a552f28628d353">categories_widget()</a>, <a class="el" href="channel_8php.html#a9c6a6179e0e626398ebecc6151905ef1">channel_content()</a>, <a class="el" href="channel_8php.html#ac7c8c7845741baadf87fae6bc279f3dc">channel_init()</a>, <a class="el" href="chanview_8php.html#a4192c6da888c8c1165851acf9ad4cb8b">chanview_content()</a>, <a class="el" href="mod_2chat_8php.html#a8b0b8bee6fef6477e8c64c5e951b1b4f">chat_content()</a>, <a class="el" href="mod_2chat_8php.html#aa9ae4782e9baef0b7314ab9527c2707e">chat_init()</a>, <a class="el" href="include_2chat_8php.html#acdc80dba4eb796c7472b21129b435422">chatroom_create()</a>, <a class="el" href="include_2chat_8php.html#a2ba3af6884ecdce95de69262fe599639">chatroom_destroy()</a>, <a class="el" href="include_2chat_8php.html#a2c95b545e46bfee64faa05ecf0afea91">chatroom_enter()</a>, <a class="el" href="chatsvc_8php.html#a7032784215e1f6747cf385a6598770f9">chatsvc_content()</a>, <a class="el" href="account_8php.html#ae052bd5558847bd38e89c213561a9771">check_account_email()</a>, <a class="el" href="account_8php.html#aaff7720423417a4333697894ffd9ddeb">check_account_invite()</a>, <a class="el" href="boot_8php.html#a4c02d88e66852a01bd5a1feecb7c3ce3">check_config()</a>, <a class="el" href="security_8php.html#a20f8b9851f23ee8894b8925584ef6821">check_form_security_std_err_msg()</a>, <a class="el" href="setup_8php.html#a69a450e06dd3771fb51d3e4b0266a35e">check_funcs()</a>, <a class="el" href="setup_8php.html#a0c3f3b671381f6dccd924b8ecdfc56c4">check_htaccess()</a>, <a class="el" href="setup_8php.html#a5ad92c0857d1dadd6b60a9a557159c9f">check_htconfig()</a>, <a class="el" href="setup_8php.html#aa3bbb111780da70ba35cc23a306f2c76">check_keys()</a>, <a class="el" href="setup_8php.html#a14d208682a88632290c895d20da6e7d6">check_php()</a>, <a class="el" href="setup_8php.html#afd8b0b3ade1507c45325caf377bf459d">check_smarty3()</a>, <a class="el" href="setup_8php.html#ab4b71369a25021d59247c917e98d8246">check_store()</a>, <a class="el" href="cloud_8php.html#a1b79a6fe0454bc76673ad9aef55bf02d">cloud_init()</a>, <a class="el" href="common_8php.html#ab63408f39abef7a6915186e8dabc5a96">common_content()</a>, <a class="el" href="contact__widgets_8php.html#a552f8544528cec0c995cea7287ea9d65">common_friends_visitor_widget()</a>, <a class="el" href="common_8php.html#aca62f113655809f41f49042ce9b123c2">common_init()</a>, <a class="el" href="connect_8php.html#a489f0a66c660de6ec4d6917b27674f07">connect_content()</a>, <a class="el" href="connect_8php.html#ad46a38f32fd7a3d324b1fa26373efa36">connect_init()</a>, <a class="el" href="connect_8php.html#a417ec27afe33f21a929667a665e32ee2">connect_post()</a>, <a class="el" href="connections_8php.html#aec2e457420fce3e3bf6a9f48e36df25c">connections_content()</a>, <a class="el" href="connections_8php.html#a1224058db8e3fb56463eb312f98e561d">connections_post()</a>, <a class="el" href="connedit_8php.html#a795acb3d9d841f55c255d7611681ab67">connedit_content()</a>, <a class="el" href="connedit_8php.html#a234c48426b652bf4d37053f2af329ac5">connedit_post()</a>, <a class="el" href="boot_8php.html#acc4e0c910af066148b810e5fde55fff1">construct_page()</a>, <a class="el" href="text_8php.html#ad6432621d0fafcbcf3d3b9b49bef7784">contact_block()</a>, <a class="el" href="contact__selectors_8php.html#a9839e8fdaac7ffb37bf1420493f5c28f">contact_poll_interval()</a>, <a class="el" href="contact__selectors_8php.html#ae499960d6467bd30c78607b1018baf53">contact_reputation()</a>, <a class="el" href="conversation_8php.html#affea1afb3f32ca41e966c8ddb4204d81">conversation()</a>, <a class="el" href="account_8php.html#a141fe579c351c78209d425473f978eb5">create_account()</a>, <a class="el" href="identity_8php.html#a345f4c943d84de502ec6e72d2c813945">create_identity()</a>, <a class="el" href="datetime_8php.html#a5f29553799005b1fd4e9ce9d98ce05aa">datesel_format()</a>, <a class="el" href="text_8php.html#a63fb21c0bed2fc72eef2c1471ac42b63">day_translate()</a>, <a class="el" href="delegate_8php.html#a943eea8996ef348eb845c498f9f354dd">delegate_content()</a>, <a class="el" href="text_8php.html#a87a3cefc603302c78982f1d8e1245265">design_tools()</a>, <a class="el" href="dir__fns_8php.html#acf621621e929d49441da30aad76a58cf">dir_safe_mode()</a>, <a class="el" href="dir__fns_8php.html#ae56881d69bb6f8e828c9e35454386774">dir_sort_links()</a>, <a class="el" href="taxonomy_8php.html#a599ee71dd3194c8127b00dabec77abc1">dir_tagblock()</a>, <a class="el" href="mod_2directory_8php.html#aac79396570d759da2efac24fcedf5b44">directory_content()</a>, <a class="el" href="dirprofile_8php.html#a3e1d30d3d93863ff5615f2df4ac7f052">dirprofile_init()</a>, <a class="el" href="dirsearch_8php.html#aa1fb04e1de4f25b63349ac78f94ceb4c">dirsearch_content()</a>, <a class="el" href="display_8php.html#a37137c98d47bf3306f4c2bb9f5b60de0">display_content()</a>, <a class="el" href="items_8php.html#a555762e1022a4b8e3c3abd32e7812408">drop_item()</a>, <a class="el" href="editblock_8php.html#abbe8f55de06967bc8d79d620509a49e6">editblock_content()</a>, <a class="el" href="editlayout_8php.html#aa877e4157a26b099de904164181dd386">editlayout_content()</a>, <a class="el" href="editpost_8php.html#a34011690864d122680c802e9e748ccfb">editpost_content()</a>, <a class="el" href="editwebpage_8php.html#a375e945255fad79a71036528f7480650">editwebpage_content()</a>, <a class="el" href="event_8php.html#a7378e839ac3de9d55579eb3ec48eaf92">event_store_item()</a>, <a class="el" href="events_8php.html#a1d293fb217ae6bc9e3858c4b32e363ec">events_content()</a>, <a class="el" href="events_8php.html#ab3e8a8f901175f8e40a8089eea45c075">events_post()</a>, <a class="el" href="fbrowser_8php.html#aee476addcf7a3e0fe9454f7dfd5a56c4">fbrowser_content()</a>, <a class="el" href="contact__widgets_8php.html#a1eda66319d170f60a8d07c7ece95533b">fileas_widget()</a>, <a class="el" href="filer_8php.html#a5fd5d7e61b2f9c43cb5f110c89dc4274">filer_content()</a>, <a class="el" href="filestorage_8php.html#a61bb1be78472555df4ce619f51014040">filestorage_content()</a>, <a class="el" href="filestorage_8php.html#ad3b64e3ece9831f9d3a9f00c0ae983cd">filestorage_post()</a>, <a class="el" href="contact__widgets_8php.html#a57e73ebcfd62bb5d8c7a7b9e663726d6">findpeople_widget()</a>, <a class="el" href="mod_2follow_8php.html#a171f5b19f50d7738adc3b2e96ec6018a">follow_init()</a>, <a class="el" href="text_8php.html#a3054189cff173977f4216c9a3dd29e1b">format_categories()</a>, <a class="el" href="bb2diaspora_8php.html#a29a2ad41f5826f3975fa9a49934ff863">format_event_diaspora()</a>, <a class="el" href="event_8php.html#a2ac9f1b08de03250ecd794f705781d17">format_event_html()</a>, <a class="el" href="text_8php.html#a4e4d42b0a805148d9f9a92bcac89bf91">format_filer()</a>, <a class="el" href="conversation_8php.html#a3d8e30cc94f9a175054c021305d3aca3">format_like()</a>, <a class="el" href="include_2notify_8php.html#a0e61728e487df50c72e6434f911a57d3">format_notification()</a>, <a class="el" href="fsuggest_8php.html#aa6c49ed4b50a387f1845f36844dd7998">fsuggest_content()</a>, <a class="el" href="fsuggest_8php.html#a61ecfe10ce937ed526614f8fd3de3c7d">fsuggest_post()</a>, <a class="el" href="profile__selectors_8php.html#ae2b2c087e6530c61c0b256fd26d52355">gender_selector()</a>, <a class="el" href="classRedBrowser.html#a1f7daf50bb9bfcde7345b3b1908dbd7e">RedBrowser\generateDirectoryIndex()</a>, <a class="el" href="identity_8php.html#ad2c97627a313d53df1a1c7b4215ddb51">get_birthdays()</a>, <a class="el" href="classItem.html#a3ee7667c2ec6cd7657328e27848c0bdf">Item\get_comment_box()</a>, <a class="el" href="identity_8php.html#ae381db3d43f8e7c1da8b15d14ecf5312">get_events()</a>, <a class="el" href="features_8php.html#ae73c5b03b01c7284ed7e7e0e774e975c">get_features()</a>, <a class="el" href="text_8php.html#a736db13a966b8abaf8c9198faa35911a">get_mood_verbs()</a>, <a class="el" href="permissions_8php.html#a040fd3d3b8517658b1668ae0cd093972">get_perms()</a>, <a class="el" href="text_8php.html#aac0969ae09853205992ba06ab9f9f61a">get_plink()</a>, <a class="el" href="text_8php.html#aa46f941155c2ac1155f2f17ffb0adb66">get_poke_verbs()</a>, <a class="el" href="classItem.html#ad5dcbe0b94cb2d5719bc5b6bd8ad60c8">Item\get_template_data()</a>, <a class="el" href="include_2group_8php.html#a06ec565d2b64e79044e7c1bf91a2a4ce">group_add()</a>, <a class="el" href="mod_2group_8php.html#a07a64f6c65b0080d8190b3d9728a7a83">group_content()</a>, <a class="el" href="mod_2group_8php.html#aed1f009b1221348021bb34761160ef35">group_post()</a>, <a class="el" href="include_2group_8php.html#a6a69bd7be032fa8ce4e49c43a42cc6e9">group_side()</a>, <a class="el" href="help_8php.html#af055e15f600ffa6fbca9386fdf715224">help_content()</a>, <a class="el" href="home_8php.html#aa1cf697851a646755baf537f75334c46">home_content()</a>, <a class="el" href="classRedBrowser.html#a7f6bf0bda07833f4c647557bd172e349">RedBrowser\htmlActionsPanel()</a>, <a class="el" href="identity_8php.html#ac9fcd5c4c371998790b5c55c3d0f4633">identity_check_service_class()</a>, <a class="el" href="items_8php.html#a6bee35961f2e32905f20367a9309d627">import_author_rss()</a>, <a class="el" href="photo__driver_8php.html#a1d0bc7161dec0d177b7d3bbe4421af9a">import_channel_photo()</a>, <a class="el" href="import_8php.html#afdf25ed70096d5dbf4f6d0ca79fea184">import_content()</a>, <a class="el" href="import_8php.html#af17fef0410518f7eac205d0ea416eaa2">import_post()</a>, <a class="el" href="zot_8php.html#a528e97ca5d69c3b7f35c5d954afde315">import_xchan()</a>, <a class="el" href="classdba__driver.html#a4ccb27243e62a8ca30dd8e1b8cc67746">dba_driver\install()</a>, <a class="el" href="invite_8php.html#a244385b28cfd021d308715f01158bfd9">invite_content()</a>, <a class="el" href="invite_8php.html#aeb0881c0f93c8e8552e5ed756ce6e5a5">invite_post()</a>, <a class="el" href="item_8php.html#a5b1b36cb301a94b38150074f0d424e74">item_check_service_class()</a>, <a class="el" href="item_8php.html#a764bbb2e9a885a86fb23d0b5e4a09221">item_content()</a>, <a class="el" href="conversation_8php.html#aacbb12d372d5e9c3ab0735b4aea48fb3">item_photo_menu()</a>, <a class="el" href="item_8php.html#a693cd09805755ab85bbb5ecae69a48c3">item_post()</a>, <a class="el" href="text_8php.html#ac1dbf2e37e8069bea2c0f557fdbf203e">item_post_type()</a>, <a class="el" href="items_8php.html#a756738301f2ed96be50232500677d58a">items_fetch()</a>, <a class="el" href="text_8php.html#a71f6952243d3fe1c5a8154f78027e29c">lang_selector()</a>, <a class="el" href="text_8php.html#a3999a0b3e22e440f280ee791ce34d384">layout_select()</a>, <a class="el" href="layouts_8php.html#a6e0193759ad9eef76d3df2db24237b50">layouts_content()</a>, <a class="el" href="like_8php.html#a9d7dd268f21c21e9d29dd2aca2dd9538">like_content()</a>, <a class="el" href="setup_8php.html#ad2e0375a9ab87ebe6e78124ee125054a">load_database()</a>, <a class="el" href="conversation_8php.html#a9bd7f9fb6678736c581bcba3b17f471c">localize_item()</a>, <a class="el" href="lockview_8php.html#a851e26ab9a1008df5c5ebebea31e9b44">lockview_content()</a>, <a class="el" href="boot_8php.html#aefecf8599036df7f1b95d6820e0e2fa4">login()</a>, <a class="el" href="lostpass_8php.html#a0314d94e48c789b1b3a201d740c9eab3">lostpass_content()</a>, <a class="el" href="lostpass_8php.html#a8ed35ba71a4404eaf4903da61d0321cc">lostpass_post()</a>, <a class="el" href="magic_8php.html#acea2cc792849ca2d71d4b689f66518bf">magic_init()</a>, <a class="el" href="mail_8php.html#a3c7c485fc69f92371e8b20936040eca1">mail_content()</a>, <a class="el" href="mail_8php.html#acfc2cc0bf4e0b178207758384977f25a">mail_post()</a>, <a class="el" href="manage_8php.html#a2bca247b5296827638959138367db4f5">manage_content()</a>, <a class="el" href="setup_8php.html#abe405d227ba7232971964a706d4f3bce">manual_config()</a>, <a class="el" href="profile__selectors_8php.html#a7473dd095987e1cdcc79d4f0bb5e6798">marital_selector()</a>, <a class="el" href="match_8php.html#a1dd853e959b9e70c1911bb2fb5f5130d">match_content()</a>, <a class="el" href="mod_2menu_8php.html#a6fed23af14d71a78a4153c8363a685cf">menu_content()</a>, <a class="el" href="mod_2menu_8php.html#aaa491ef173868fe002aece4632bcf393">menu_post()</a>, <a class="el" href="include_2menu_8php.html#a03a5deed3908543581c074ce333e9d6a">menu_render()</a>, <a class="el" href="mod_2message_8php.html#ac72dfed3ce08fcb331d66b37edc6e15f">message_content()</a>, <a class="el" href="text_8php.html#a1633412120f52bdce5f43e0a127d9293">mimetype_select()</a>, <a class="el" href="include_2group_8php.html#ab0e422a0f31c0c64fd9084ca03d85f32">mini_group_select()</a>, <a class="el" href="mitem_8php.html#a7a31b702ecad18eeb6a38b243ff0037e">mitem_content()</a>, <a class="el" href="mitem_8php.html#a9627cd857cafdf04e4fc0ae48c8e8518">mitem_init()</a>, <a class="el" href="mitem_8php.html#a6ee694cca4b551a20d7c7a94b5243ec1">mitem_post()</a>, <a class="el" href="mood_8php.html#a721b9b6703b3234a005641c92d409b8f">mood_content()</a>, <a class="el" href="mood_8php.html#a7ae136dd7476865b4828136175db5022">mood_init()</a>, <a class="el" href="nav_8php.html#a43be0df73b90647ea70947ce004e231e">nav()</a>, <a class="el" href="mod_2network_8php.html#a43f2f29b90c5e29072c561934bc8f8b4">network_content()</a>, <a class="el" href="mod_2network_8php.html#a180fce90ad11d7e0e45be094da7149ec">network_init()</a>, <a class="el" href="contact__selectors_8php.html#ad472e4716426dd1a9dd77b62962454be">network_to_name()</a>, <a class="el" href="new__channel_8php.html#ae585191610f79da129492482ce8e2fee">new_channel_content()</a>, <a class="el" href="new__channel_8php.html#a180b0646957db8290482f02454ad7f23">new_channel_post()</a>, <a class="el" href="include_2follow_8php.html#ae387d4ae097c23d69f3247e7f08140c7">new_contact()</a>, <a class="el" href="boot_8php.html#a9255af5ae9c887520091ea04763c1a88">notice()</a>, <a class="el" href="enotify_8php.html#a3e9a9355b243777c488d2a9883908dfc">notification()</a>, <a class="el" href="notifications_8php.html#aadd0b5525bd8c283a5d8a37982bbfe62">notifications_content()</a>, <a class="el" href="notifications_8php.html#a5baffec7b2e625c9f9cefbc097550d33">notifications_post()</a>, <a class="el" href="mod_2notify_8php.html#acdf3851688ebd6d6a575eb84ef9febe3">notify_content()</a>, <a class="el" href="taxonomy_8php.html#a03f55ee46c5f496e42f3d29db8d09cce">obj_verbs()</a>, <a class="el" href="include_2oembed_8php.html#aba89ae64b355efcb4f706553d3edb6a2">oembed_bbcode2html()</a>, <a class="el" href="include_2oembed_8php.html#a9e57f3e36a0a0a47e6db79544b701d9a">oembed_iframe()</a>, <a class="el" href="oexchange_8php.html#a2d8b785cd7d041a4e6274f5af370cf26">oexchange_content()</a>, <a class="el" href="openid_8php.html#a9a13827dbcf61ae4e45f0b6b33a88f43">openid_content()</a>, <a class="el" href="page_8php.html#a91a5f649f68406149108bded1dc90b22">page_content()</a>, <a class="el" href="page__widgets_8php.html#a39d547771c5f12a17c097436c82f0fa2">pagelist_widget()</a>, <a class="el" href="text_8php.html#afe9f178d264d44a94dc1292aaf0fd585">paginate()</a>, <a class="el" href="comanche_8php.html#af7150df735e5ff9d467994cd6f769c6e">pdl_selector()</a>, <a class="el" href="pdledit_8php.html#a59cb550f6b7a4e7d8196fbc9de601619">pdledit_content()</a>, <a class="el" href="pdledit_8php.html#a81da3c955d0e3db55d148a31483104c7">pdledit_post()</a>, <a class="el" href="include_2photos_8php.html#a6c40ef58aefef705a5adc84a40e97109">photo_upload()</a>, <a class="el" href="include_2photos_8php.html#af24c6aeed28ecc31ec39e7d9a1804979">photos_album_widget()</a>, <a class="el" href="mod_2photos_8php.html#aa87382611a66ec5effdb2d78f13f5812">photos_content()</a>, <a class="el" href="mod_2photos_8php.html#ab950295cd77626f5fe65331a87693014">photos_init()</a>, <a class="el" href="mod_2photos_8php.html#a062bed4d04d14fee8a53f4c9be673080">photos_post()</a>, <a class="el" href="ping_8php.html#a77217b1b190b4c5d8770867b45f0c0a1">ping_init()</a>, <a class="el" href="poke_8php.html#ac9190563a8da9c07a16f9dcd71cf6993">poke_content()</a>, <a class="el" href="poke_8php.html#a9725aab97b3983e6a98bd81c4efe7d3b">poke_init()</a>, <a class="el" href="acl__selectors_8php.html#ad25bba63a51a2b0b5b463efae50df528">populate_acl()</a>, <a class="el" href="items_8php.html#a410f9c743877c125ca06312373346903">post_activity_item()</a>, <a class="el" href="post_8php.html#af4b48181ce773ef0cdfc972441445c34">post_init()</a>, <a class="el" href="mod_2probe_8php.html#a1f1db3fa6038e451e737964c94bf5e99">probe_content()</a>, <a class="el" href="activities_8php.html#a80134e807719b3c54aba971958d2e132">profile_activity()</a>, <a class="el" href="profile_8php.html#a3775cf6eef6587e5143133356a7b76c0">profile_content()</a>, <a class="el" href="profile_8php.html#ab5d0246be0552e2182a585c1206d22a5">profile_init()</a>, <a class="el" href="identity_8php.html#a4751b522ea913d0e7ed43e03d22e9e68">profile_load()</a>, <a class="el" href="profile__photo_8php.html#a4b80234074bd603221aa5364f330e479">profile_photo_post()</a>, <a class="el" href="identity_8php.html#a432259b2cf5b6f59be53e71db9f2c7dc">profile_sidebar()</a>, <a class="el" href="profiles_8php.html#a46975783b8b8d70402d51487eb1f0b00">profiles_content()</a>, <a class="el" href="profiles_8php.html#a36f71405ad536228f8bb84a551b23f7e">profiles_init()</a>, <a class="el" href="profiles_8php.html#ab0362c81b1d3b0b12a772b9fac446e04">profiles_post()</a>, <a class="el" href="profperm_8php.html#aef015787de2373d9fb3fe3f814fb5023">profperm_content()</a>, <a class="el" href="pubsites_8php.html#af614e279aab54065345bda6b03eafdf0">pubsites_content()</a>, <a class="el" href="rbmark_8php.html#a43fec4960b50926251574762cc491f76">rbmark_content()</a>, <a class="el" href="rbmark_8php.html#ac5a66aa8599fa5dc702bae396d8d1f8c">rbmark_post()</a>, <a class="el" href="view_2theme_2redbasic_2php_2config_8php.html#a8574a41fa9735ee391ba57ab24b93793">redbasic_form()</a>, <a class="el" href="register_8php.html#a0e91f57f111407ea8d3223a05022bb2a">register_content()</a>, <a class="el" href="register_8php.html#a51731dcc1917c58a790eb1c0f6132271">register_post()</a>, <a class="el" href="regmod_8php.html#a7953df4e32e63946565e90cdd5d50409">regmod_content()</a>, <a class="el" href="datetime_8php.html#a8ae8dc95ace7ac27fa5a1ecf42b78c82">relative_date()</a>, <a class="el" href="removeme_8php.html#a065a589caa2aa84c60f7073a28f0ad9c">removeme_content()</a>, <a class="el" href="rmagic_8php.html#a3e28db1e5cfa7e5c2617f90222c1caef">rmagic_content()</a>, <a class="el" href="rmagic_8php.html#a869de069d081b3c4e98b957d06bbf08f">rmagic_post()</a>, <a class="el" href="rpost_8php.html#a8190354d789000806d9879aea276728f">rpost_content()</a>, <a class="el" href="include_2network_8php.html#ae8d9c41a11000fb8667039fc71b4f73f">scale_external_images()</a>, <a class="el" href="text_8php.html#a876e94892867019935b348b573299352">search()</a>, <a class="el" href="search_8php.html#ab2568591359edde5b483a6cd9a24b2cc">search_content()</a>, <a class="el" href="text_8php.html#aae91e4d2a2c6f7a9daccd2c186ae3447">searchbox()</a>, <a class="el" href="datetime_8php.html#a633dadba426fa2f60b25fabdb19ebc1f">select_timezone()</a>, <a class="el" href="include_2message_8php.html#a751ffd6635022b2190f56154ee745752">send_message()</a>, <a class="el" href="account_8php.html#a014de2d5d5c9785de5bf547a485822fa">send_reg_approval_email()</a>, <a class="el" href="account_8php.html#aa9c29c497c17d8f9344dce8631ad8761">send_verification_email()</a>, <a class="el" href="settings_8php.html#aa7ee94d88ac088edb04ccf3a26de3586">settings_post()</a>, <a class="el" href="setup_8php.html#a88247384a96e14516f474d7af6a465c1">setup_content()</a>, <a class="el" href="profile__selectors_8php.html#a3b50b3ea4ea4bdbebebfffc5d1b157c7">sexpref_selector()</a>, <a class="el" href="siteinfo_8php.html#a70c09bfb6dd1c86a125a35f62ed53656">siteinfo_content()</a>, <a class="el" href="sources_8php.html#ac442ccef080ab95772d8929fcafcb4b7">sources_content()</a>, <a class="el" href="sources_8php.html#ac73298ff162ce7b2de8dcaf3d3305b1e">sources_post()</a>, <a class="el" href="subthread_8php.html#a50368f3d825b77996030528e7fbfa3d3">subthread_content()</a>, <a class="el" href="suggest_8php.html#a58748a8235d4523f8333847f3e42dd91">suggest_content()</a>, <a class="el" href="taxonomy_8php.html#ac21d1dff16d569e7d110167aea4e63c2">tagblock()</a>, <a class="el" href="tagger_8php.html#a0e4a3eb177d1684553c547503d67161c">tagger_content()</a>, <a class="el" href="tagrm_8php.html#adfd4ea5b4d7fc6d9c9e042af5cd7d49a">tagrm_content()</a>, <a class="el" href="tagrm_8php.html#a1702f40aa53a2fa93deade1f609abe78">tagrm_post()</a>, <a class="el" href="text_8php.html#af9c9ac3f74c82dc60acfa404d0e9dc53">theme_attachments()</a>, <a class="el" href="thing_8php.html#a24a35f1e64029a67fdbea94a776ae04b">thing_content()</a>, <a class="el" href="thing_8php.html#a8be23b1d475ec3d9291999221c674c80">thing_init()</a>, <a class="el" href="datetime_8php.html#aa51b5a7ea4f931b23acbdfcea46e9865">timezone_cmp()</a>, <a class="el" href="include_2apps_8php.html#a48289d5cc44b7638191738106ac5d030">translate_system_apps()</a>, <a class="el" href="datetime_8php.html#af1cd77c97c901d9239cb7a61f97f9826">update_birthdays()</a>, <a class="el" href="update__channel_8php.html#aca52a9da500f0db2f0a8666af5bc06ba">update_channel_content()</a>, <a class="el" href="update__display_8php.html#aa36ac524059e209d5d75a03c16206246">update_display_content()</a>, <a class="el" href="update__network_8php.html#a8abf5b9f65af6a27ee2f9d7207ed1b41">update_network_content()</a>, <a class="el" href="update__search_8php.html#ace4c3a23fa7d6922399e27c297a6ba52">update_search_content()</a>, <a class="el" href="plugin_8php.html#a754d7f53b3abc557b753c057dc4e021d">upgrade_bool_message()</a>, <a class="el" href="plugin_8php.html#a4fc13e528367f510fcb6d8bbfc559040">upgrade_link()</a>, <a class="el" href="plugin_8php.html#a901657dd078e070516cf97285e0bada7">upgrade_message()</a>, <a class="el" href="account_8php.html#ac5c570a2d46446bad4dd2501e9c5a4b1">user_allow()</a>, <a class="el" href="account_8php.html#ad07be417ac7eda939768804106ddea3d">user_approve()</a>, <a class="el" href="account_8php.html#ac1653efba62493b9d87513e1b6c04c83">user_deny()</a>, <a class="el" href="identity_8php.html#af2802bc13a00a17b867bba7978ba8f58">validate_channelname()</a>, <a class="el" href="Contact_8php.html#a6348a532c9d26cd1c9afbc9aa6aa8960">vcard_from_xchan()</a>, <a class="el" href="account_8php.html#acd6b8d2124ba5ea4f4794d2c58ae8bf5">verify_email_address()</a>, <a class="el" href="viewconnections_8php.html#ab6c4d983e97b3a8a879567ff76507776">viewconnections_content()</a>, <a class="el" href="viewsrc_8php.html#a6eff3d0c1d7d14b335c4edb785cd60a4">viewsrc_content()</a>, <a class="el" href="vote_8php.html#a6aa67489bf458ca5e3206e46dac68596">vote_content()</a>, <a class="el" href="wall__upload_8php.html#a7cbe204244cf9e0380ee932263a74d8f">wall_upload_post()</a>, <a class="el" href="webpages_8php.html#af3b7397d4abc153e3d2147740ee1a41d">webpages_content()</a>, <a class="el" href="setup_8php.html#aea1ebdda58ec938f4e7b31aa5c5f6b58">what_next()</a>, <a class="el" href="widgets_8php.html#add9b24d3304e529a7975e96122315554">widget_affinity()</a>, <a class="el" href="widgets_8php.html#aced5cb177f630b30799c5eab873ee75c">widget_appselect()</a>, <a class="el" href="widgets_8php.html#a7b1e357b5a2027718470b77ec921fc65">widget_archive()</a>, <a class="el" href="widgets_8php.html#a0e2f5179ed1a73b282dfda7270fcabb3">widget_bookmarkedchats()</a>, <a class="el" href="widgets_8php.html#a47c72aac42058ea086c9ef8651c259da">widget_chatroom_list()</a>, <a class="el" href="widgets_8php.html#a5ab3b64496e02cab56429978ad55f1c0">widget_filer()</a>, <a class="el" href="widgets_8php.html#ad1bf7aa69e8d100d95faba17c7bc91cd">widget_follow()</a>, <a class="el" href="widgets_8php.html#afa2e55a78f95667a6da082efac7fec74">widget_mailmenu()</a>, <a class="el" href="widgets_8php.html#a45ea061dabe9a8372e4ca3b9e5714256">widget_notes()</a>, <a class="el" href="widgets_8php.html#a94203eb9bcd63cbdecbbcb15163598d8">widget_savedsearch()</a>, <a class="el" href="widgets_8php.html#aaa73bcf1702eaadd9dcd253502f55e01">widget_settings_menu()</a>, <a class="el" href="widgets_8php.html#a50b1410238100c8a94c06b0aa63ee3b8">widget_suggestedchats()</a>, <a class="el" href="widgets_8php.html#a0d404276fedc59f5038cf5c085028326">widget_suggestions()</a>, <a class="el" href="widgets_8php.html#a6dbc227aac750774284ee39c45f0a200">widget_tagcloud()</a>, <a class="el" href="page__widgets_8php.html#a1a1e729da27f252cab6678288a17958f">writepages_widget()</a>, <a class="el" href="xchan_8php.html#a9853348bf1a35c644460221ba75edc2d">xchan_content()</a>, <a class="el" href="include_2attach_8php.html#aeb07968990e66a88c95483ca09a7f909">z_readdir()</a>, and <a class="el" href="zfinger_8php.html#a8139b83a22ef98869adc10aa224027a0">zfinger_init()</a>.</p>
+<p>Referenced by <a class="el" href="Contact_8php.html#a5101d7eca5d6f387e5555f03fe249e33">account_remove()</a>, <a class="el" href="achievements_8php.html#a35ae04ada0e227d19671f289a32fb30e">achievements_content()</a>, <a class="el" href="acl_8php.html#ac6776dba871806ecdb5d1659bc2eb07a">acl_init()</a>, <a class="el" href="admin_8php.html#afef415e4011607fbb665610441595015">admin_content()</a>, <a class="el" href="admin_8php.html#ad6f87a764fd35f522c7b4c351d7878ec">admin_page_channels()</a>, <a class="el" href="admin_8php.html#aaa6addf2dbc3f3fcf99244a56b41eade">admin_page_dbsync()</a>, <a class="el" href="admin_8php.html#a6943543f3138f6ee182cb701f415d1cc">admin_page_hubloc()</a>, <a class="el" href="admin_8php.html#a1d1362698af14d209aa3a0fb655551dd">admin_page_logs()</a>, <a class="el" href="admin_8php.html#a233b7c8c31776b7020532003c6e44e1c">admin_page_logs_post()</a>, <a class="el" href="admin_8php.html#a54128076986ba80c4a103de3fc3e19a8">admin_page_plugins()</a>, <a class="el" href="admin_8php.html#a3deba594ca1e11694eac1de0b724ef0a">admin_page_profs()</a>, <a class="el" href="admin_8php.html#ac0f3bd12431c056aad77bac9d09fa30e">admin_page_site()</a>, <a class="el" href="admin_8php.html#add865f4ae806ecbf716f423fc3e50e4f">admin_page_site_post()</a>, <a class="el" href="admin_8php.html#ac6e95b920b5abd030cc522964987087a">admin_page_summary()</a>, <a class="el" href="admin_8php.html#af124619fdc278fe2bf14c45ddaa260fb">admin_page_themes()</a>, <a class="el" href="admin_8php.html#a62f10f90c47686c9c3c37c4c03a108d2">admin_page_users()</a>, <a class="el" href="admin_8php.html#acf51f5837a7427832144c2bf7308ada3">admin_post()</a>, <a class="el" href="identity_8php.html#aa870d2c1f558cfd52bef05bc124e8fa4">advanced_profile()</a>, <a class="el" href="text_8php.html#a75c243e06341ec16bd5a44b9b1cacd85">alt_pager()</a>, <a class="el" href="mod_2api_8php.html#a33315b5bbf5418f6850b2038107b526d">api_content()</a>, <a class="el" href="mod_2api_8php.html#a6fe77f05c07cb51048df0d557b4b9bd2">api_post()</a>, <a class="el" href="include_2api_8php.html#ad24ce1bf20867add4c9211a8eaf93f22">api_statuses_public_timeline()</a>, <a class="el" href="include_2apps_8php.html#a1b2e737f477a2e0d9d11ef14adc5aa66">app_render()</a>, <a class="el" href="include_2apps_8php.html#a15626f24069c18816f7cdaf4735f58f9">app_store()</a>, <a class="el" href="include_2apps_8php.html#aeab6a62d2f3dfaa86ed043a006305f46">app_update()</a>, <a class="el" href="appman_8php.html#af48805ac2f6f123f2681a8ae1c6f123f">appman_content()</a>, <a class="el" href="appman_8php.html#a2979acbe47ffaecfa19b9eabfbfbde39">appman_post()</a>, <a class="el" href="mod_2apps_8php.html#a546016cb960d0b110ee8e489dfa6c27c">apps_content()</a>, <a class="el" href="view_2theme_2apw_2php_2config_8php.html#ad59fc09da66b66267f9753c8b2dd68d0">apw_form()</a>, <a class="el" href="include_2attach_8php.html#a0d07c5b83d3d54e186f752e571847b36">attach_by_hash()</a>, <a class="el" href="include_2attach_8php.html#ad991208ce939387e2f93a3bce7d09932">attach_by_hash_nodata()</a>, <a class="el" href="include_2attach_8php.html#a887d2d44a3ef18dcb6624e7fb58dc8e3">attach_count_files()</a>, <a class="el" href="mod_2attach_8php.html#aa88eb5ad87aa1036a30e70339cc6c1b1">attach_init()</a>, <a class="el" href="include_2attach_8php.html#a3634af95f11a023dd8e882c3c7a3600d">attach_list_files()</a>, <a class="el" href="include_2attach_8php.html#ab6830b3ab74a5d284876141ac80f6cbc">attach_mkdir()</a>, <a class="el" href="include_2attach_8php.html#a84a8a64c4805e1525b42d4add464833f">attach_store()</a>, <a class="el" href="bb2diaspora_8php.html#ab27761069ea1275f0fc4c543099c5519">bb2diaspora_itembody()</a>, <a class="el" href="bbcode_8php.html#a009f61aaf78771737ed0765c8463911b">bbcode()</a>, <a class="el" href="block_8php.html#a8a82a470acdfbc7a8e749509caeeea45">block_content()</a>, <a class="el" href="blocks_8php.html#a2531a8fd51db3cecb2eb20c002c66e12">blocks_content()</a>, <a class="el" href="include_2bookmarks_8php.html#aef1cb2968c41c759f2d106e1088ca323">bookmark_add()</a>, <a class="el" href="mod_2bookmarks_8php.html#a774364b1c8404529581083631703527a">bookmarks_content()</a>, <a class="el" href="mod_2bookmarks_8php.html#a6b7942f3d27e40f0f47c88704127b9b3">bookmarks_init()</a>, <a class="el" href="taxonomy_8php.html#aa8f8a1ff85daef046298e93c83e7a1b4">catblock()</a>, <a class="el" href="contact__widgets_8php.html#a165eb021e61c4dcab2a552f28628d353">categories_widget()</a>, <a class="el" href="channel_8php.html#a9c6a6179e0e626398ebecc6151905ef1">channel_content()</a>, <a class="el" href="channel_8php.html#ac7c8c7845741baadf87fae6bc279f3dc">channel_init()</a>, <a class="el" href="mod_2chat_8php.html#a8b0b8bee6fef6477e8c64c5e951b1b4f">chat_content()</a>, <a class="el" href="mod_2chat_8php.html#aa9ae4782e9baef0b7314ab9527c2707e">chat_init()</a>, <a class="el" href="include_2chat_8php.html#acdc80dba4eb796c7472b21129b435422">chatroom_create()</a>, <a class="el" href="include_2chat_8php.html#a2ba3af6884ecdce95de69262fe599639">chatroom_destroy()</a>, <a class="el" href="include_2chat_8php.html#a2c95b545e46bfee64faa05ecf0afea91">chatroom_enter()</a>, <a class="el" href="chatsvc_8php.html#a7032784215e1f6747cf385a6598770f9">chatsvc_content()</a>, <a class="el" href="account_8php.html#ae052bd5558847bd38e89c213561a9771">check_account_email()</a>, <a class="el" href="account_8php.html#aaff7720423417a4333697894ffd9ddeb">check_account_invite()</a>, <a class="el" href="boot_8php.html#a4c02d88e66852a01bd5a1feecb7c3ce3">check_config()</a>, <a class="el" href="security_8php.html#a20f8b9851f23ee8894b8925584ef6821">check_form_security_std_err_msg()</a>, <a class="el" href="setup_8php.html#a69a450e06dd3771fb51d3e4b0266a35e">check_funcs()</a>, <a class="el" href="setup_8php.html#a0c3f3b671381f6dccd924b8ecdfc56c4">check_htaccess()</a>, <a class="el" href="setup_8php.html#a5ad92c0857d1dadd6b60a9a557159c9f">check_htconfig()</a>, <a class="el" href="setup_8php.html#aa3bbb111780da70ba35cc23a306f2c76">check_keys()</a>, <a class="el" href="setup_8php.html#a14d208682a88632290c895d20da6e7d6">check_php()</a>, <a class="el" href="setup_8php.html#afd8b0b3ade1507c45325caf377bf459d">check_smarty3()</a>, <a class="el" href="setup_8php.html#ab4b71369a25021d59247c917e98d8246">check_store()</a>, <a class="el" href="cloud_8php.html#ad2e96e917852f27dedfc263d37e13756">cloud_init()</a>, <a class="el" href="common_8php.html#ab63408f39abef7a6915186e8dabc5a96">common_content()</a>, <a class="el" href="contact__widgets_8php.html#a552f8544528cec0c995cea7287ea9d65">common_friends_visitor_widget()</a>, <a class="el" href="common_8php.html#aca62f113655809f41f49042ce9b123c2">common_init()</a>, <a class="el" href="connect_8php.html#a489f0a66c660de6ec4d6917b27674f07">connect_content()</a>, <a class="el" href="connect_8php.html#ad46a38f32fd7a3d324b1fa26373efa36">connect_init()</a>, <a class="el" href="connect_8php.html#a417ec27afe33f21a929667a665e32ee2">connect_post()</a>, <a class="el" href="connections_8php.html#aec2e457420fce3e3bf6a9f48e36df25c">connections_content()</a>, <a class="el" href="connections_8php.html#a1224058db8e3fb56463eb312f98e561d">connections_post()</a>, <a class="el" href="connedit_8php.html#a795acb3d9d841f55c255d7611681ab67">connedit_content()</a>, <a class="el" href="connedit_8php.html#a234c48426b652bf4d37053f2af329ac5">connedit_post()</a>, <a class="el" href="boot_8php.html#acc4e0c910af066148b810e5fde55fff1">construct_page()</a>, <a class="el" href="text_8php.html#ad6432621d0fafcbcf3d3b9b49bef7784">contact_block()</a>, <a class="el" href="contact__selectors_8php.html#a9839e8fdaac7ffb37bf1420493f5c28f">contact_poll_interval()</a>, <a class="el" href="conversation_8php.html#affea1afb3f32ca41e966c8ddb4204d81">conversation()</a>, <a class="el" href="account_8php.html#a141fe579c351c78209d425473f978eb5">create_account()</a>, <a class="el" href="identity_8php.html#a345f4c943d84de502ec6e72d2c813945">create_identity()</a>, <a class="el" href="text_8php.html#a63fb21c0bed2fc72eef2c1471ac42b63">day_translate()</a>, <a class="el" href="delegate_8php.html#a943eea8996ef348eb845c498f9f354dd">delegate_content()</a>, <a class="el" href="text_8php.html#a87a3cefc603302c78982f1d8e1245265">design_tools()</a>, <a class="el" href="diaspora_8php.html#a5d57518545baa31cf8a85a937a267681">diaspora_like()</a>, <a class="el" href="dir__fns_8php.html#acf621621e929d49441da30aad76a58cf">dir_safe_mode()</a>, <a class="el" href="dir__fns_8php.html#ae56881d69bb6f8e828c9e35454386774">dir_sort_links()</a>, <a class="el" href="taxonomy_8php.html#a599ee71dd3194c8127b00dabec77abc1">dir_tagblock()</a>, <a class="el" href="mod_2directory_8php.html#aac79396570d759da2efac24fcedf5b44">directory_content()</a>, <a class="el" href="dirsearch_8php.html#aa1fb04e1de4f25b63349ac78f94ceb4c">dirsearch_content()</a>, <a class="el" href="display_8php.html#a37137c98d47bf3306f4c2bb9f5b60de0">display_content()</a>, <a class="el" href="datetime_8php.html#a3f2897db32e745fe2f3e70a6b46578f8">dob()</a>, <a class="el" href="items_8php.html#a555762e1022a4b8e3c3abd32e7812408">drop_item()</a>, <a class="el" href="editblock_8php.html#abbe8f55de06967bc8d79d620509a49e6">editblock_content()</a>, <a class="el" href="editlayout_8php.html#aa877e4157a26b099de904164181dd386">editlayout_content()</a>, <a class="el" href="editpost_8php.html#a34011690864d122680c802e9e748ccfb">editpost_content()</a>, <a class="el" href="editwebpage_8php.html#a375e945255fad79a71036528f7480650">editwebpage_content()</a>, <a class="el" href="event_8php.html#a7378e839ac3de9d55579eb3ec48eaf92">event_store_item()</a>, <a class="el" href="events_8php.html#a1d293fb217ae6bc9e3858c4b32e363ec">events_content()</a>, <a class="el" href="events_8php.html#ab3e8a8f901175f8e40a8089eea45c075">events_post()</a>, <a class="el" href="fbrowser_8php.html#aee476addcf7a3e0fe9454f7dfd5a56c4">fbrowser_content()</a>, <a class="el" href="contact__widgets_8php.html#a1eda66319d170f60a8d07c7ece95533b">fileas_widget()</a>, <a class="el" href="filer_8php.html#a5fd5d7e61b2f9c43cb5f110c89dc4274">filer_content()</a>, <a class="el" href="filestorage_8php.html#a61bb1be78472555df4ce619f51014040">filestorage_content()</a>, <a class="el" href="filestorage_8php.html#ad3b64e3ece9831f9d3a9f00c0ae983cd">filestorage_post()</a>, <a class="el" href="contact__widgets_8php.html#a57e73ebcfd62bb5d8c7a7b9e663726d6">findpeople_widget()</a>, <a class="el" href="mod_2follow_8php.html#a171f5b19f50d7738adc3b2e96ec6018a">follow_init()</a>, <a class="el" href="dimport_8php.html#a581f040717941ce3e1868b0b5dceefd1">foofoo()</a>, <a class="el" href="text_8php.html#a3054189cff173977f4216c9a3dd29e1b">format_categories()</a>, <a class="el" href="bb2diaspora_8php.html#a29a2ad41f5826f3975fa9a49934ff863">format_event_diaspora()</a>, <a class="el" href="event_8php.html#a2ac9f1b08de03250ecd794f705781d17">format_event_html()</a>, <a class="el" href="text_8php.html#a4e4d42b0a805148d9f9a92bcac89bf91">format_filer()</a>, <a class="el" href="conversation_8php.html#a3d8e30cc94f9a175054c021305d3aca3">format_like()</a>, <a class="el" href="include_2notify_8php.html#a0e61728e487df50c72e6434f911a57d3">format_notification()</a>, <a class="el" href="fsuggest_8php.html#aa6c49ed4b50a387f1845f36844dd7998">fsuggest_content()</a>, <a class="el" href="fsuggest_8php.html#a61ecfe10ce937ed526614f8fd3de3c7d">fsuggest_post()</a>, <a class="el" href="profile__selectors_8php.html#ae2b2c087e6530c61c0b256fd26d52355">gender_selector()</a>, <a class="el" href="profile__selectors_8php.html#a8bfa1ca2d1598a3d65f1f9bb803ca816">gender_selector_min()</a>, <a class="el" href="classRedMatrix_1_1RedDAV_1_1RedBrowser.html#af764d5f14df751f9ec86c34fab300c09">RedMatrix\RedDAV\RedBrowser\generateDirectoryIndex()</a>, <a class="el" href="identity_8php.html#ad2c97627a313d53df1a1c7b4215ddb51">get_birthdays()</a>, <a class="el" href="classItem.html#a3ee7667c2ec6cd7657328e27848c0bdf">Item\get_comment_box()</a>, <a class="el" href="identity_8php.html#ae381db3d43f8e7c1da8b15d14ecf5312">get_events()</a>, <a class="el" href="features_8php.html#ae73c5b03b01c7284ed7e7e0e774e975c">get_features()</a>, <a class="el" href="text_8php.html#a736db13a966b8abaf8c9198faa35911a">get_mood_verbs()</a>, <a class="el" href="permissions_8php.html#a040fd3d3b8517658b1668ae0cd093972">get_perms()</a>, <a class="el" href="text_8php.html#aac0969ae09853205992ba06ab9f9f61a">get_plink()</a>, <a class="el" href="text_8php.html#aa46f941155c2ac1155f2f17ffb0adb66">get_poke_verbs()</a>, <a class="el" href="permissions_8php.html#a6b239a0d494b92a89ce7bf9c7e588991">get_roles()</a>, <a class="el" href="classItem.html#ad5dcbe0b94cb2d5719bc5b6bd8ad60c8">Item\get_template_data()</a>, <a class="el" href="datetime_8php.html#afbb34604d0f6e7d2103da4f42e2487b1">get_timezones()</a>, <a class="el" href="classRedMatrix_1_1RedDAV_1_1RedBrowser.html#a810af4506cb3247e0ea7b0c4accbbc7a">RedMatrix\RedDAV\RedBrowser\getIconFromType()</a>, <a class="el" href="include_2group_8php.html#a06ec565d2b64e79044e7c1bf91a2a4ce">group_add()</a>, <a class="el" href="mod_2group_8php.html#a07a64f6c65b0080d8190b3d9728a7a83">group_content()</a>, <a class="el" href="mod_2group_8php.html#aed1f009b1221348021bb34761160ef35">group_post()</a>, <a class="el" href="include_2group_8php.html#a6a69bd7be032fa8ce4e49c43a42cc6e9">group_side()</a>, <a class="el" href="hcard_8php.html#ac34f26b0e6a37eef44fa49bea135136d">hcard_init()</a>, <a class="el" href="help_8php.html#af055e15f600ffa6fbca9386fdf715224">help_content()</a>, <a class="el" href="home_8php.html#a6e3dbf78f4ed74ab2577de221190b33f">home_content()</a>, <a class="el" href="classRedMatrix_1_1RedDAV_1_1RedBrowser.html#a3bd98af2d1cdfd8f26deb914596176cf">RedMatrix\RedDAV\RedBrowser\htmlActionsPanel()</a>, <a class="el" href="identity_8php.html#ac9fcd5c4c371998790b5c55c3d0f4633">identity_check_service_class()</a>, <a class="el" href="impel_8php.html#ab7db6fca43b42ea4332cb3e841b3cf7b">impel_init()</a>, <a class="el" href="items_8php.html#a6bee35961f2e32905f20367a9309d627">import_author_rss()</a>, <a class="el" href="items_8php.html#a37f79991f36811cf847446ff60e8e11f">import_author_unknown()</a>, <a class="el" href="photo__driver_8php.html#a1d0bc7161dec0d177b7d3bbe4421af9a">import_channel_photo()</a>, <a class="el" href="import_8php.html#afdf25ed70096d5dbf4f6d0ca79fea184">import_content()</a>, <a class="el" href="import_8php.html#af17fef0410518f7eac205d0ea416eaa2">import_post()</a>, <a class="el" href="zot_8php.html#a528e97ca5d69c3b7f35c5d954afde315">import_xchan()</a>, <a class="el" href="classdba__driver.html#a4ccb27243e62a8ca30dd8e1b8cc67746">dba_driver\install()</a>, <a class="el" href="invite_8php.html#a244385b28cfd021d308715f01158bfd9">invite_content()</a>, <a class="el" href="invite_8php.html#aeb0881c0f93c8e8552e5ed756ce6e5a5">invite_post()</a>, <a class="el" href="item_8php.html#a5b1b36cb301a94b38150074f0d424e74">item_check_service_class()</a>, <a class="el" href="item_8php.html#a764bbb2e9a885a86fb23d0b5e4a09221">item_content()</a>, <a class="el" href="conversation_8php.html#aacbb12d372d5e9c3ab0735b4aea48fb3">item_photo_menu()</a>, <a class="el" href="item_8php.html#a693cd09805755ab85bbb5ecae69a48c3">item_post()</a>, <a class="el" href="text_8php.html#ac1dbf2e37e8069bea2c0f557fdbf203e">item_post_type()</a>, <a class="el" href="items_8php.html#a756738301f2ed96be50232500677d58a">items_fetch()</a>, <a class="el" href="text_8php.html#a71f6952243d3fe1c5a8154f78027e29c">lang_selector()</a>, <a class="el" href="text_8php.html#a3999a0b3e22e440f280ee791ce34d384">layout_select()</a>, <a class="el" href="layouts_8php.html#a6e0193759ad9eef76d3df2db24237b50">layouts_content()</a>, <a class="el" href="like_8php.html#a9d7dd268f21c21e9d29dd2aca2dd9538">like_content()</a>, <a class="el" href="conversation_8php.html#afe5b2f38d8b803edb0d7ec5fa2868db0">like_puller()</a>, <a class="el" href="setup_8php.html#ad2e0375a9ab87ebe6e78124ee125054a">load_database()</a>, <a class="el" href="conversation_8php.html#a9bd7f9fb6678736c581bcba3b17f471c">localize_item()</a>, <a class="el" href="lockview_8php.html#a851e26ab9a1008df5c5ebebea31e9b44">lockview_content()</a>, <a class="el" href="locs_8php.html#a6c900f53970c0d0e738d2fe06d27ca44">locs_content()</a>, <a class="el" href="locs_8php.html#a6b43654592919ac863d67a1f787a69b9">locs_post()</a>, <a class="el" href="boot_8php.html#aefecf8599036df7f1b95d6820e0e2fa4">login()</a>, <a class="el" href="lostpass_8php.html#a0314d94e48c789b1b3a201d740c9eab3">lostpass_content()</a>, <a class="el" href="lostpass_8php.html#a8ed35ba71a4404eaf4903da61d0321cc">lostpass_post()</a>, <a class="el" href="magic_8php.html#acea2cc792849ca2d71d4b689f66518bf">magic_init()</a>, <a class="el" href="mail_8php.html#a3c7c485fc69f92371e8b20936040eca1">mail_content()</a>, <a class="el" href="mail_8php.html#acfc2cc0bf4e0b178207758384977f25a">mail_post()</a>, <a class="el" href="manage_8php.html#a2bca247b5296827638959138367db4f5">manage_content()</a>, <a class="el" href="setup_8php.html#abe405d227ba7232971964a706d4f3bce">manual_config()</a>, <a class="el" href="profile__selectors_8php.html#a7473dd095987e1cdcc79d4f0bb5e6798">marital_selector()</a>, <a class="el" href="profile__selectors_8php.html#adc79715bd2e102b4583fb530749ec534">marital_selector_min()</a>, <a class="el" href="match_8php.html#a1dd853e959b9e70c1911bb2fb5f5130d">match_content()</a>, <a class="el" href="mod_2menu_8php.html#a6fed23af14d71a78a4153c8363a685cf">menu_content()</a>, <a class="el" href="mod_2menu_8php.html#aaa491ef173868fe002aece4632bcf393">menu_post()</a>, <a class="el" href="include_2menu_8php.html#a03a5deed3908543581c074ce333e9d6a">menu_render()</a>, <a class="el" href="mod_2message_8php.html#ac72dfed3ce08fcb331d66b37edc6e15f">message_content()</a>, <a class="el" href="text_8php.html#a1633412120f52bdce5f43e0a127d9293">mimetype_select()</a>, <a class="el" href="include_2group_8php.html#ab0e422a0f31c0c64fd9084ca03d85f32">mini_group_select()</a>, <a class="el" href="mitem_8php.html#a7a31b702ecad18eeb6a38b243ff0037e">mitem_content()</a>, <a class="el" href="mitem_8php.html#a9627cd857cafdf04e4fc0ae48c8e8518">mitem_init()</a>, <a class="el" href="mitem_8php.html#a6ee694cca4b551a20d7c7a94b5243ec1">mitem_post()</a>, <a class="el" href="mood_8php.html#a721b9b6703b3234a005641c92d409b8f">mood_content()</a>, <a class="el" href="mood_8php.html#a7ae136dd7476865b4828136175db5022">mood_init()</a>, <a class="el" href="nav_8php.html#a43be0df73b90647ea70947ce004e231e">nav()</a>, <a class="el" href="mod_2network_8php.html#a43f2f29b90c5e29072c561934bc8f8b4">network_content()</a>, <a class="el" href="mod_2network_8php.html#a180fce90ad11d7e0e45be094da7149ec">network_init()</a>, <a class="el" href="contact__selectors_8php.html#ad472e4716426dd1a9dd77b62962454be">network_to_name()</a>, <a class="el" href="new__channel_8php.html#ae585191610f79da129492482ce8e2fee">new_channel_content()</a>, <a class="el" href="new__channel_8php.html#a180b0646957db8290482f02454ad7f23">new_channel_post()</a>, <a class="el" href="include_2follow_8php.html#ae387d4ae097c23d69f3247e7f08140c7">new_contact()</a>, <a class="el" href="boot_8php.html#a9255af5ae9c887520091ea04763c1a88">notice()</a>, <a class="el" href="enotify_8php.html#a3e9a9355b243777c488d2a9883908dfc">notification()</a>, <a class="el" href="notifications_8php.html#aadd0b5525bd8c283a5d8a37982bbfe62">notifications_content()</a>, <a class="el" href="notifications_8php.html#a5baffec7b2e625c9f9cefbc097550d33">notifications_post()</a>, <a class="el" href="mod_2notify_8php.html#acdf3851688ebd6d6a575eb84ef9febe3">notify_content()</a>, <a class="el" href="taxonomy_8php.html#a03f55ee46c5f496e42f3d29db8d09cce">obj_verbs()</a>, <a class="el" href="include_2oembed_8php.html#aba89ae64b355efcb4f706553d3edb6a2">oembed_bbcode2html()</a>, <a class="el" href="include_2oembed_8php.html#a9e57f3e36a0a0a47e6db79544b701d9a">oembed_iframe()</a>, <a class="el" href="oexchange_8php.html#a2d8b785cd7d041a4e6274f5af370cf26">oexchange_content()</a>, <a class="el" href="openid_8php.html#a9a13827dbcf61ae4e45f0b6b33a88f43">openid_content()</a>, <a class="el" href="page_8php.html#a4d89800c0366a239191b1692c09635cf">page_init()</a>, <a class="el" href="page__widgets_8php.html#a39d547771c5f12a17c097436c82f0fa2">pagelist_widget()</a>, <a class="el" href="text_8php.html#afe9f178d264d44a94dc1292aaf0fd585">paginate()</a>, <a class="el" href="comanche_8php.html#af7150df735e5ff9d467994cd6f769c6e">pdl_selector()</a>, <a class="el" href="pdledit_8php.html#a59cb550f6b7a4e7d8196fbc9de601619">pdledit_content()</a>, <a class="el" href="pdledit_8php.html#a81da3c955d0e3db55d148a31483104c7">pdledit_post()</a>, <a class="el" href="include_2photos_8php.html#a6c40ef58aefef705a5adc84a40e97109">photo_upload()</a>, <a class="el" href="include_2photos_8php.html#af24c6aeed28ecc31ec39e7d9a1804979">photos_album_widget()</a>, <a class="el" href="mod_2photos_8php.html#aa87382611a66ec5effdb2d78f13f5812">photos_content()</a>, <a class="el" href="mod_2photos_8php.html#ab950295cd77626f5fe65331a87693014">photos_init()</a>, <a class="el" href="mod_2photos_8php.html#a062bed4d04d14fee8a53f4c9be673080">photos_post()</a>, <a class="el" href="ping_8php.html#a77217b1b190b4c5d8770867b45f0c0a1">ping_init()</a>, <a class="el" href="poke_8php.html#ac9190563a8da9c07a16f9dcd71cf6993">poke_content()</a>, <a class="el" href="poke_8php.html#a9725aab97b3983e6a98bd81c4efe7d3b">poke_init()</a>, <a class="el" href="poll_8php.html#a3314c26bd2ac0ed831cebf3315cd3263">poll_content()</a>, <a class="el" href="acl__selectors_8php.html#ad25bba63a51a2b0b5b463efae50df528">populate_acl()</a>, <a class="el" href="items_8php.html#a410f9c743877c125ca06312373346903">post_activity_item()</a>, <a class="el" href="post_8php.html#af4b48181ce773ef0cdfc972441445c34">post_init()</a>, <a class="el" href="mod_2probe_8php.html#a1f1db3fa6038e451e737964c94bf5e99">probe_content()</a>, <a class="el" href="activities_8php.html#a80134e807719b3c54aba971958d2e132">profile_activity()</a>, <a class="el" href="profile_8php.html#a3775cf6eef6587e5143133356a7b76c0">profile_content()</a>, <a class="el" href="profile_8php.html#ab5d0246be0552e2182a585c1206d22a5">profile_init()</a>, <a class="el" href="identity_8php.html#a4751b522ea913d0e7ed43e03d22e9e68">profile_load()</a>, <a class="el" href="profile__photo_8php.html#a4b80234074bd603221aa5364f330e479">profile_photo_post()</a>, <a class="el" href="identity_8php.html#a432259b2cf5b6f59be53e71db9f2c7dc">profile_sidebar()</a>, <a class="el" href="profiles_8php.html#a46975783b8b8d70402d51487eb1f0b00">profiles_content()</a>, <a class="el" href="profiles_8php.html#a36f71405ad536228f8bb84a551b23f7e">profiles_init()</a>, <a class="el" href="profiles_8php.html#ab0362c81b1d3b0b12a772b9fac446e04">profiles_post()</a>, <a class="el" href="profperm_8php.html#aef015787de2373d9fb3fe3f814fb5023">profperm_content()</a>, <a class="el" href="pubsites_8php.html#af614e279aab54065345bda6b03eafdf0">pubsites_content()</a>, <a class="el" href="rbmark_8php.html#a43fec4960b50926251574762cc491f76">rbmark_content()</a>, <a class="el" href="rbmark_8php.html#ac5a66aa8599fa5dc702bae396d8d1f8c">rbmark_post()</a>, <a class="el" href="view_2theme_2redbasic_2php_2config_8php.html#a8574a41fa9735ee391ba57ab24b93793">redbasic_form()</a>, <a class="el" href="register_8php.html#a0e91f57f111407ea8d3223a05022bb2a">register_content()</a>, <a class="el" href="register_8php.html#a51731dcc1917c58a790eb1c0f6132271">register_post()</a>, <a class="el" href="regmod_8php.html#a7953df4e32e63946565e90cdd5d50409">regmod_content()</a>, <a class="el" href="datetime_8php.html#a8ae8dc95ace7ac27fa5a1ecf42b78c82">relative_date()</a>, <a class="el" href="removeaccount_8php.html#a516e7380b9e5796054aa8245f3509695">removeaccount_content()</a>, <a class="el" href="removeaccount_8php.html#a26a3325292e932c59793430ab737126a">removeaccount_post()</a>, <a class="el" href="removeme_8php.html#a065a589caa2aa84c60f7073a28f0ad9c">removeme_content()</a>, <a class="el" href="removeme_8php.html#a7be08738beca44bb98a79e01cdb2ee88">removeme_post()</a>, <a class="el" href="rmagic_8php.html#a3e28db1e5cfa7e5c2617f90222c1caef">rmagic_content()</a>, <a class="el" href="rmagic_8php.html#a869de069d081b3c4e98b957d06bbf08f">rmagic_post()</a>, <a class="el" href="rpost_8php.html#a8190354d789000806d9879aea276728f">rpost_content()</a>, <a class="el" href="include_2network_8php.html#ae8d9c41a11000fb8667039fc71b4f73f">scale_external_images()</a>, <a class="el" href="text_8php.html#a876e94892867019935b348b573299352">search()</a>, <a class="el" href="search_8php.html#ab2568591359edde5b483a6cd9a24b2cc">search_content()</a>, <a class="el" href="text_8php.html#aae91e4d2a2c6f7a9daccd2c186ae3447">searchbox()</a>, <a class="el" href="include_2message_8php.html#a751ffd6635022b2190f56154ee745752">send_message()</a>, <a class="el" href="account_8php.html#a014de2d5d5c9785de5bf547a485822fa">send_reg_approval_email()</a>, <a class="el" href="account_8php.html#aa9c29c497c17d8f9344dce8631ad8761">send_verification_email()</a>, <a class="el" href="service__limits_8php.html#a653424aac63c5cd05ba70c3c77bf7f8a">service_limits_content()</a>, <a class="el" href="settings_8php.html#aa7ee94d88ac088edb04ccf3a26de3586">settings_post()</a>, <a class="el" href="setup_8php.html#a88247384a96e14516f474d7af6a465c1">setup_content()</a>, <a class="el" href="profile__selectors_8php.html#a3b50b3ea4ea4bdbebebfffc5d1b157c7">sexpref_selector()</a>, <a class="el" href="profile__selectors_8php.html#ab0eae5c0ceba77364469f0f580f0d074">sexpref_selector_min()</a>, <a class="el" href="siteinfo_8php.html#a70c09bfb6dd1c86a125a35f62ed53656">siteinfo_content()</a>, <a class="el" href="sources_8php.html#ac442ccef080ab95772d8929fcafcb4b7">sources_content()</a>, <a class="el" href="sources_8php.html#ac73298ff162ce7b2de8dcaf3d3305b1e">sources_post()</a>, <a class="el" href="subthread_8php.html#a50368f3d825b77996030528e7fbfa3d3">subthread_content()</a>, <a class="el" href="suggest_8php.html#a58748a8235d4523f8333847f3e42dd91">suggest_content()</a>, <a class="el" href="zot_8php.html#ab15c04e7e5f44edf45ec50dd7d183254">sync_locations()</a>, <a class="el" href="taxonomy_8php.html#ac21d1dff16d569e7d110167aea4e63c2">tagblock()</a>, <a class="el" href="tagger_8php.html#a0e4a3eb177d1684553c547503d67161c">tagger_content()</a>, <a class="el" href="tagrm_8php.html#adfd4ea5b4d7fc6d9c9e042af5cd7d49a">tagrm_content()</a>, <a class="el" href="tagrm_8php.html#a1702f40aa53a2fa93deade1f609abe78">tagrm_post()</a>, <a class="el" href="text_8php.html#af9c9ac3f74c82dc60acfa404d0e9dc53">theme_attachments()</a>, <a class="el" href="thing_8php.html#a24a35f1e64029a67fdbea94a776ae04b">thing_content()</a>, <a class="el" href="thing_8php.html#a8be23b1d475ec3d9291999221c674c80">thing_init()</a>, <a class="el" href="datetime_8php.html#aa51b5a7ea4f931b23acbdfcea46e9865">timezone_cmp()</a>, <a class="el" href="items_8php.html#aabfaa193b83154c2a81e91284e5d5e59">translate_scope()</a>, <a class="el" href="include_2apps_8php.html#a48289d5cc44b7638191738106ac5d030">translate_system_apps()</a>, <a class="el" href="uexport_8php.html#ae6f79d60916c01675c8cf663cb5fec84">uexport_content()</a>, <a class="el" href="datetime_8php.html#af1cd77c97c901d9239cb7a61f97f9826">update_birthdays()</a>, <a class="el" href="update__channel_8php.html#aca52a9da500f0db2f0a8666af5bc06ba">update_channel_content()</a>, <a class="el" href="update__display_8php.html#aa36ac524059e209d5d75a03c16206246">update_display_content()</a>, <a class="el" href="update__home_8php.html#a668340089acd150b830134476a647d05">update_home_content()</a>, <a class="el" href="update__network_8php.html#a8abf5b9f65af6a27ee2f9d7207ed1b41">update_network_content()</a>, <a class="el" href="update__search_8php.html#ace4c3a23fa7d6922399e27c297a6ba52">update_search_content()</a>, <a class="el" href="account_8php.html#a754d7f53b3abc557b753c057dc4e021d">upgrade_bool_message()</a>, <a class="el" href="account_8php.html#a4fc13e528367f510fcb6d8bbfc559040">upgrade_link()</a>, <a class="el" href="account_8php.html#a901657dd078e070516cf97285e0bada7">upgrade_message()</a>, <a class="el" href="account_8php.html#ac5c570a2d46446bad4dd2501e9c5a4b1">user_allow()</a>, <a class="el" href="account_8php.html#ad07be417ac7eda939768804106ddea3d">user_approve()</a>, <a class="el" href="account_8php.html#ac1653efba62493b9d87513e1b6c04c83">user_deny()</a>, <a class="el" href="identity_8php.html#af2802bc13a00a17b867bba7978ba8f58">validate_channelname()</a>, <a class="el" href="Contact_8php.html#a6348a532c9d26cd1c9afbc9aa6aa8960">vcard_from_xchan()</a>, <a class="el" href="account_8php.html#acd6b8d2124ba5ea4f4794d2c58ae8bf5">verify_email_address()</a>, <a class="el" href="viewconnections_8php.html#ab6c4d983e97b3a8a879567ff76507776">viewconnections_content()</a>, <a class="el" href="viewsrc_8php.html#a6eff3d0c1d7d14b335c4edb785cd60a4">viewsrc_content()</a>, <a class="el" href="vote_8php.html#a6aa67489bf458ca5e3206e46dac68596">vote_content()</a>, <a class="el" href="wall__upload_8php.html#a7cbe204244cf9e0380ee932263a74d8f">wall_upload_post()</a>, <a class="el" href="webpages_8php.html#af3b7397d4abc153e3d2147740ee1a41d">webpages_content()</a>, <a class="el" href="setup_8php.html#aea1ebdda58ec938f4e7b31aa5c5f6b58">what_next()</a>, <a class="el" href="widgets_8php.html#add9b24d3304e529a7975e96122315554">widget_affinity()</a>, <a class="el" href="widgets_8php.html#aced5cb177f630b30799c5eab873ee75c">widget_appselect()</a>, <a class="el" href="widgets_8php.html#a7b1e357b5a2027718470b77ec921fc65">widget_archive()</a>, <a class="el" href="widgets_8php.html#a0e2f5179ed1a73b282dfda7270fcabb3">widget_bookmarkedchats()</a>, <a class="el" href="widgets_8php.html#a47c72aac42058ea086c9ef8651c259da">widget_chatroom_list()</a>, <a class="el" href="widgets_8php.html#a5ab3b64496e02cab56429978ad55f1c0">widget_filer()</a>, <a class="el" href="widgets_8php.html#ad1bf7aa69e8d100d95faba17c7bc91cd">widget_follow()</a>, <a class="el" href="widgets_8php.html#afa2e55a78f95667a6da082efac7fec74">widget_mailmenu()</a>, <a class="el" href="widgets_8php.html#a45ea061dabe9a8372e4ca3b9e5714256">widget_notes()</a>, <a class="el" href="widgets_8php.html#a999ba893cac7600d3d3b4e7e14cf8c20">widget_photo()</a>, <a class="el" href="widgets_8php.html#af8eb466ef91d9e96e13335ead5eba380">widget_photo_rand()</a>, <a class="el" href="widgets_8php.html#a94203eb9bcd63cbdecbbcb15163598d8">widget_savedsearch()</a>, <a class="el" href="widgets_8php.html#aaa73bcf1702eaadd9dcd253502f55e01">widget_settings_menu()</a>, <a class="el" href="widgets_8php.html#a50b1410238100c8a94c06b0aa63ee3b8">widget_suggestedchats()</a>, <a class="el" href="widgets_8php.html#a0d404276fedc59f5038cf5c085028326">widget_suggestions()</a>, <a class="el" href="widgets_8php.html#a6dbc227aac750774284ee39c45f0a200">widget_tagcloud()</a>, <a class="el" href="page__widgets_8php.html#a1a1e729da27f252cab6678288a17958f">writepages_widget()</a>, <a class="el" href="taxonomy_8php.html#a83f0a60f9e0c07d8451dc5be95b17287">wtagblock()</a>, <a class="el" href="xchan_8php.html#a9853348bf1a35c644460221ba75edc2d">xchan_content()</a>, <a class="el" href="include_2attach_8php.html#aeb07968990e66a88c95483ca09a7f909">z_readdir()</a>, and <a class="el" href="zfinger_8php.html#a8139b83a22ef98869adc10aa224027a0">zfinger_init()</a>.</p>
</div>
</div>
diff --git a/doc/html/layouts_8php.html b/doc/html/layouts_8php.html
index 01db274f4..7287e9147 100644
--- a/doc/html/layouts_8php.html
+++ b/doc/html/layouts_8php.html
@@ -112,6 +112,8 @@ $(document).ready(function(){initNavTree('layouts_8php.html','');});
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="func-members"></a>
Functions</h2></td></tr>
+<tr class="memitem:a39c8e9f72641c684c8b689bd91a642fa"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="layouts_8php.html#a39c8e9f72641c684c8b689bd91a642fa">layouts_init</a> (&amp;$a)</td></tr>
+<tr class="separator:a39c8e9f72641c684c8b689bd91a642fa"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a6e0193759ad9eef76d3df2db24237b50"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="layouts_8php.html#a6e0193759ad9eef76d3df2db24237b50">layouts_content</a> (&amp;$a)</td></tr>
<tr class="separator:a6e0193759ad9eef76d3df2db24237b50"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
@@ -132,6 +134,22 @@ Functions</h2></td></tr>
</div>
</div>
+<a class="anchor" id="a39c8e9f72641c684c8b689bd91a642fa"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">layouts_init </td>
+ <td>(</td>
+ <td class="paramtype">&amp;&#160;</td>
+ <td class="paramname"><em>$a</em></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+</div>
+</div>
</div><!-- contents -->
</div><!-- doc-content -->
diff --git a/doc/html/layouts_8php.js b/doc/html/layouts_8php.js
index ee929d2fc..5c56bc6c3 100644
--- a/doc/html/layouts_8php.js
+++ b/doc/html/layouts_8php.js
@@ -1,4 +1,5 @@
var layouts_8php =
[
- [ "layouts_content", "layouts_8php.html#a6e0193759ad9eef76d3df2db24237b50", null ]
+ [ "layouts_content", "layouts_8php.html#a6e0193759ad9eef76d3df2db24237b50", null ],
+ [ "layouts_init", "layouts_8php.html#a39c8e9f72641c684c8b689bd91a642fa", null ]
]; \ No newline at end of file
diff --git a/doc/html/locs_8php.html b/doc/html/locs_8php.html
new file mode 100644
index 000000000..229d5978f
--- /dev/null
+++ b/doc/html/locs_8php.html
@@ -0,0 +1,155 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<meta name="generator" content="Doxygen 1.8.3.1"/>
+<title>The Red Matrix: mod/locs.php File Reference</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="navtree.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="resize.js"></script>
+<script type="text/javascript" src="navtree.js"></script>
+<script type="text/javascript">
+ $(document).ready(initResizable);
+ $(window).load(resizeHeight);
+</script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/search.js"></script>
+<script type="text/javascript">
+ $(document).ready(function() { searchBox.OnSelectItem(0); });
+</script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+ <td id="projectlogo"><img alt="Logo" src="rm-64.png"/></td>
+ <td style="padding-left: 0.5em;">
+ <div id="projectname">The Red Matrix
+ </div>
+ </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.8.3.1 -->
+<script type="text/javascript">
+var searchBox = new SearchBox("searchBox", "search",false,'Search');
+</script>
+ <div id="navrow1" class="tabs">
+ <ul class="tablist">
+ <li><a href="index.html"><span>Main&#160;Page</span></a></li>
+ <li><a href="pages.html"><span>Related&#160;Pages</span></a></li>
+ <li><a href="namespaces.html"><span>Namespaces</span></a></li>
+ <li><a href="annotated.html"><span>Classes</span></a></li>
+ <li class="current"><a href="files.html"><span>Files</span></a></li>
+ <li>
+ <div id="MSearchBox" class="MSearchBoxInactive">
+ <span class="left">
+ <img id="MSearchSelect" src="search/mag_sel.png"
+ onmouseover="return searchBox.OnSearchSelectShow()"
+ onmouseout="return searchBox.OnSearchSelectHide()"
+ alt=""/>
+ <input type="text" id="MSearchField" value="Search" accesskey="S"
+ onfocus="searchBox.OnSearchFieldFocus(true)"
+ onblur="searchBox.OnSearchFieldFocus(false)"
+ onkeyup="searchBox.OnSearchFieldChange(event)"/>
+ </span><span class="right">
+ <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
+ </span>
+ </div>
+ </li>
+ </ul>
+ </div>
+ <div id="navrow2" class="tabs2">
+ <ul class="tablist">
+ <li><a href="files.html"><span>File&#160;List</span></a></li>
+ <li><a href="globals.html"><span>File&#160;Members</span></a></li>
+ </ul>
+ </div>
+</div><!-- top -->
+<div id="side-nav" class="ui-resizable side-nav-resizable">
+ <div id="nav-tree">
+ <div id="nav-tree-contents">
+ <div id="nav-sync" class="sync"></div>
+ </div>
+ </div>
+ <div id="splitbar" style="-moz-user-select:none;"
+ class="ui-resizable-handle">
+ </div>
+</div>
+<script type="text/javascript">
+$(document).ready(function(){initNavTree('locs_8php.html','');});
+</script>
+<div id="doc-content">
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+ onmouseover="return searchBox.OnSearchSelectShow()"
+ onmouseout="return searchBox.OnSearchSelectHide()"
+ onkeydown="return searchBox.OnSearchSelectKey(event)">
+<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark">&#160;</span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark">&#160;</span>Classes</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark">&#160;</span>Namespaces</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark">&#160;</span>Files</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark">&#160;</span>Functions</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark">&#160;</span>Variables</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark">&#160;</span>Pages</a></div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<iframe src="javascript:void(0)" frameborder="0"
+ name="MSearchResults" id="MSearchResults">
+</iframe>
+</div>
+
+<div class="header">
+ <div class="summary">
+<a href="#func-members">Functions</a> </div>
+ <div class="headertitle">
+<div class="title">locs.php File Reference</div> </div>
+</div><!--header-->
+<div class="contents">
+<table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="func-members"></a>
+Functions</h2></td></tr>
+<tr class="memitem:a6b43654592919ac863d67a1f787a69b9"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="locs_8php.html#a6b43654592919ac863d67a1f787a69b9">locs_post</a> (&amp;$a)</td></tr>
+<tr class="separator:a6b43654592919ac863d67a1f787a69b9"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a6c900f53970c0d0e738d2fe06d27ca44"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="locs_8php.html#a6c900f53970c0d0e738d2fe06d27ca44">locs_content</a> (&amp;$a)</td></tr>
+<tr class="separator:a6c900f53970c0d0e738d2fe06d27ca44"><td class="memSeparator" colspan="2">&#160;</td></tr>
+</table>
+<h2 class="groupheader">Function Documentation</h2>
+<a class="anchor" id="a6c900f53970c0d0e738d2fe06d27ca44"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">locs_content </td>
+ <td>(</td>
+ <td class="paramtype">&amp;&#160;</td>
+ <td class="paramname"><em>$a</em></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+</div>
+</div>
+<a class="anchor" id="a6b43654592919ac863d67a1f787a69b9"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">locs_post </td>
+ <td>(</td>
+ <td class="paramtype">&amp;&#160;</td>
+ <td class="paramname"><em>$a</em></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+</div>
+</div>
+</div><!-- contents -->
+</div><!-- doc-content -->
+
diff --git a/doc/html/locs_8php.js b/doc/html/locs_8php.js
new file mode 100644
index 000000000..6444a590f
--- /dev/null
+++ b/doc/html/locs_8php.js
@@ -0,0 +1,5 @@
+var locs_8php =
+[
+ [ "locs_content", "locs_8php.html#a6c900f53970c0d0e738d2fe06d27ca44", null ],
+ [ "locs_post", "locs_8php.html#a6b43654592919ac863d67a1f787a69b9", null ]
+]; \ No newline at end of file
diff --git a/doc/html/mod_2network_8php.html b/doc/html/mod_2network_8php.html
index 16de4ad96..bfbd5bd2c 100644
--- a/doc/html/mod_2network_8php.html
+++ b/doc/html/mod_2network_8php.html
@@ -147,6 +147,7 @@ Functions</h2></td></tr>
</tr>
</table>
</div><div class="memdoc">
+<p>in "list mode", only mark the parent item and any like activities as "seen". We won't distinguish between comment likes and post likes. The important thing is that the number of unseen comments will be accurate. The SQL to separate the comment likes could also get somewhat hairy.</p>
<p>Referenced by <a class="el" href="update__network_8php.html#a8abf5b9f65af6a27ee2f9d7207ed1b41">update_network_content()</a>.</p>
diff --git a/doc/html/namespaceRedMatrix.html b/doc/html/namespaceRedMatrix.html
new file mode 100644
index 000000000..873af1168
--- /dev/null
+++ b/doc/html/namespaceRedMatrix.html
@@ -0,0 +1,127 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<meta name="generator" content="Doxygen 1.8.3.1"/>
+<title>The Red Matrix: RedMatrix Namespace Reference</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="navtree.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="resize.js"></script>
+<script type="text/javascript" src="navtree.js"></script>
+<script type="text/javascript">
+ $(document).ready(initResizable);
+ $(window).load(resizeHeight);
+</script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/search.js"></script>
+<script type="text/javascript">
+ $(document).ready(function() { searchBox.OnSelectItem(0); });
+</script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+ <td id="projectlogo"><img alt="Logo" src="rm-64.png"/></td>
+ <td style="padding-left: 0.5em;">
+ <div id="projectname">The Red Matrix
+ </div>
+ </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.8.3.1 -->
+<script type="text/javascript">
+var searchBox = new SearchBox("searchBox", "search",false,'Search');
+</script>
+ <div id="navrow1" class="tabs">
+ <ul class="tablist">
+ <li><a href="index.html"><span>Main&#160;Page</span></a></li>
+ <li><a href="pages.html"><span>Related&#160;Pages</span></a></li>
+ <li class="current"><a href="namespaces.html"><span>Namespaces</span></a></li>
+ <li><a href="annotated.html"><span>Classes</span></a></li>
+ <li><a href="files.html"><span>Files</span></a></li>
+ <li>
+ <div id="MSearchBox" class="MSearchBoxInactive">
+ <span class="left">
+ <img id="MSearchSelect" src="search/mag_sel.png"
+ onmouseover="return searchBox.OnSearchSelectShow()"
+ onmouseout="return searchBox.OnSearchSelectHide()"
+ alt=""/>
+ <input type="text" id="MSearchField" value="Search" accesskey="S"
+ onfocus="searchBox.OnSearchFieldFocus(true)"
+ onblur="searchBox.OnSearchFieldFocus(false)"
+ onkeyup="searchBox.OnSearchFieldChange(event)"/>
+ </span><span class="right">
+ <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
+ </span>
+ </div>
+ </li>
+ </ul>
+ </div>
+ <div id="navrow2" class="tabs2">
+ <ul class="tablist">
+ <li><a href="namespaces.html"><span>Namespace&#160;List</span></a></li>
+ <li><a href="namespacemembers.html"><span>Namespace&#160;Members</span></a></li>
+ </ul>
+ </div>
+</div><!-- top -->
+<div id="side-nav" class="ui-resizable side-nav-resizable">
+ <div id="nav-tree">
+ <div id="nav-tree-contents">
+ <div id="nav-sync" class="sync"></div>
+ </div>
+ </div>
+ <div id="splitbar" style="-moz-user-select:none;"
+ class="ui-resizable-handle">
+ </div>
+</div>
+<script type="text/javascript">
+$(document).ready(function(){initNavTree('namespaceRedMatrix.html','');});
+</script>
+<div id="doc-content">
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+ onmouseover="return searchBox.OnSearchSelectShow()"
+ onmouseout="return searchBox.OnSearchSelectHide()"
+ onkeydown="return searchBox.OnSearchSelectKey(event)">
+<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark">&#160;</span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark">&#160;</span>Classes</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark">&#160;</span>Namespaces</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark">&#160;</span>Files</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark">&#160;</span>Functions</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark">&#160;</span>Variables</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark">&#160;</span>Pages</a></div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<iframe src="javascript:void(0)" frameborder="0"
+ name="MSearchResults" id="MSearchResults">
+</iframe>
+</div>
+
+<div class="header">
+ <div class="summary">
+<a href="#namespaces">Namespaces</a> </div>
+ <div class="headertitle">
+<div class="title">RedMatrix Namespace Reference</div> </div>
+</div><!--header-->
+<div class="contents">
+
+<p>Class <a class="el" href="namespaceRedMatrix_1_1Import.html">Import</a>.
+<a href="#details">More...</a></p>
+<table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="namespaces"></a>
+Namespaces</h2></td></tr>
+<tr class="memitem:namespaceRedMatrix_1_1Import"><td class="memItemLeft" align="right" valign="top">namespace &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceRedMatrix_1_1Import.html">Import</a></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:namespaceRedMatrix_1_1RedDAV"><td class="memItemLeft" align="right" valign="top">namespace &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceRedMatrix_1_1RedDAV.html">RedDAV</a></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+</table>
+<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
+<div class="textblock"><p>Class <a class="el" href="namespaceRedMatrix_1_1Import.html">Import</a>. </p>
+</div></div><!-- contents -->
+</div><!-- doc-content -->
+
diff --git a/doc/html/namespaceRedMatrix.js b/doc/html/namespaceRedMatrix.js
new file mode 100644
index 000000000..f08741c6c
--- /dev/null
+++ b/doc/html/namespaceRedMatrix.js
@@ -0,0 +1,5 @@
+var namespaceRedMatrix =
+[
+ [ "Import", "namespaceRedMatrix_1_1Import.html", "namespaceRedMatrix_1_1Import" ],
+ [ "RedDAV", "namespaceRedMatrix_1_1RedDAV.html", "namespaceRedMatrix_1_1RedDAV" ]
+]; \ No newline at end of file
diff --git a/doc/html/namespaceRedMatrix_1_1Import.html b/doc/html/namespaceRedMatrix_1_1Import.html
new file mode 100644
index 000000000..a0ab85227
--- /dev/null
+++ b/doc/html/namespaceRedMatrix_1_1Import.html
@@ -0,0 +1,120 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<meta name="generator" content="Doxygen 1.8.3.1"/>
+<title>The Red Matrix: RedMatrix\Import Namespace Reference</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="navtree.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="resize.js"></script>
+<script type="text/javascript" src="navtree.js"></script>
+<script type="text/javascript">
+ $(document).ready(initResizable);
+ $(window).load(resizeHeight);
+</script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/search.js"></script>
+<script type="text/javascript">
+ $(document).ready(function() { searchBox.OnSelectItem(0); });
+</script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+ <td id="projectlogo"><img alt="Logo" src="rm-64.png"/></td>
+ <td style="padding-left: 0.5em;">
+ <div id="projectname">The Red Matrix
+ </div>
+ </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.8.3.1 -->
+<script type="text/javascript">
+var searchBox = new SearchBox("searchBox", "search",false,'Search');
+</script>
+ <div id="navrow1" class="tabs">
+ <ul class="tablist">
+ <li><a href="index.html"><span>Main&#160;Page</span></a></li>
+ <li><a href="pages.html"><span>Related&#160;Pages</span></a></li>
+ <li class="current"><a href="namespaces.html"><span>Namespaces</span></a></li>
+ <li><a href="annotated.html"><span>Classes</span></a></li>
+ <li><a href="files.html"><span>Files</span></a></li>
+ <li>
+ <div id="MSearchBox" class="MSearchBoxInactive">
+ <span class="left">
+ <img id="MSearchSelect" src="search/mag_sel.png"
+ onmouseover="return searchBox.OnSearchSelectShow()"
+ onmouseout="return searchBox.OnSearchSelectHide()"
+ alt=""/>
+ <input type="text" id="MSearchField" value="Search" accesskey="S"
+ onfocus="searchBox.OnSearchFieldFocus(true)"
+ onblur="searchBox.OnSearchFieldFocus(false)"
+ onkeyup="searchBox.OnSearchFieldChange(event)"/>
+ </span><span class="right">
+ <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
+ </span>
+ </div>
+ </li>
+ </ul>
+ </div>
+ <div id="navrow2" class="tabs2">
+ <ul class="tablist">
+ <li><a href="namespaces.html"><span>Namespace&#160;List</span></a></li>
+ <li><a href="namespacemembers.html"><span>Namespace&#160;Members</span></a></li>
+ </ul>
+ </div>
+</div><!-- top -->
+<div id="side-nav" class="ui-resizable side-nav-resizable">
+ <div id="nav-tree">
+ <div id="nav-tree-contents">
+ <div id="nav-sync" class="sync"></div>
+ </div>
+ </div>
+ <div id="splitbar" style="-moz-user-select:none;"
+ class="ui-resizable-handle">
+ </div>
+</div>
+<script type="text/javascript">
+$(document).ready(function(){initNavTree('namespaceRedMatrix_1_1Import.html','');});
+</script>
+<div id="doc-content">
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+ onmouseover="return searchBox.OnSearchSelectShow()"
+ onmouseout="return searchBox.OnSearchSelectHide()"
+ onkeydown="return searchBox.OnSearchSelectKey(event)">
+<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark">&#160;</span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark">&#160;</span>Classes</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark">&#160;</span>Namespaces</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark">&#160;</span>Files</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark">&#160;</span>Functions</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark">&#160;</span>Variables</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark">&#160;</span>Pages</a></div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<iframe src="javascript:void(0)" frameborder="0"
+ name="MSearchResults" id="MSearchResults">
+</iframe>
+</div>
+
+<div class="header">
+ <div class="summary">
+<a href="#nested-classes">Classes</a> </div>
+ <div class="headertitle">
+<div class="title">RedMatrix\Import Namespace Reference</div> </div>
+</div><!--header-->
+<div class="contents">
+<table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="nested-classes"></a>
+Classes</h2></td></tr>
+<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classRedMatrix_1_1Import_1_1Import.html">Import</a></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+</table>
+</div><!-- contents -->
+</div><!-- doc-content -->
+
diff --git a/doc/html/namespaceRedMatrix_1_1Import.js b/doc/html/namespaceRedMatrix_1_1Import.js
new file mode 100644
index 000000000..c26a05140
--- /dev/null
+++ b/doc/html/namespaceRedMatrix_1_1Import.js
@@ -0,0 +1,4 @@
+var namespaceRedMatrix_1_1Import =
+[
+ [ "Import", "classRedMatrix_1_1Import_1_1Import.html", "classRedMatrix_1_1Import_1_1Import" ]
+]; \ No newline at end of file
diff --git a/doc/html/namespaceRedMatrix_1_1RedDAV.html b/doc/html/namespaceRedMatrix_1_1RedDAV.html
new file mode 100644
index 000000000..f078431e9
--- /dev/null
+++ b/doc/html/namespaceRedMatrix_1_1RedDAV.html
@@ -0,0 +1,130 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<meta name="generator" content="Doxygen 1.8.3.1"/>
+<title>The Red Matrix: RedMatrix\RedDAV Namespace Reference</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="navtree.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="resize.js"></script>
+<script type="text/javascript" src="navtree.js"></script>
+<script type="text/javascript">
+ $(document).ready(initResizable);
+ $(window).load(resizeHeight);
+</script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/search.js"></script>
+<script type="text/javascript">
+ $(document).ready(function() { searchBox.OnSelectItem(0); });
+</script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+ <td id="projectlogo"><img alt="Logo" src="rm-64.png"/></td>
+ <td style="padding-left: 0.5em;">
+ <div id="projectname">The Red Matrix
+ </div>
+ </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.8.3.1 -->
+<script type="text/javascript">
+var searchBox = new SearchBox("searchBox", "search",false,'Search');
+</script>
+ <div id="navrow1" class="tabs">
+ <ul class="tablist">
+ <li><a href="index.html"><span>Main&#160;Page</span></a></li>
+ <li><a href="pages.html"><span>Related&#160;Pages</span></a></li>
+ <li class="current"><a href="namespaces.html"><span>Namespaces</span></a></li>
+ <li><a href="annotated.html"><span>Classes</span></a></li>
+ <li><a href="files.html"><span>Files</span></a></li>
+ <li>
+ <div id="MSearchBox" class="MSearchBoxInactive">
+ <span class="left">
+ <img id="MSearchSelect" src="search/mag_sel.png"
+ onmouseover="return searchBox.OnSearchSelectShow()"
+ onmouseout="return searchBox.OnSearchSelectHide()"
+ alt=""/>
+ <input type="text" id="MSearchField" value="Search" accesskey="S"
+ onfocus="searchBox.OnSearchFieldFocus(true)"
+ onblur="searchBox.OnSearchFieldFocus(false)"
+ onkeyup="searchBox.OnSearchFieldChange(event)"/>
+ </span><span class="right">
+ <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
+ </span>
+ </div>
+ </li>
+ </ul>
+ </div>
+ <div id="navrow2" class="tabs2">
+ <ul class="tablist">
+ <li><a href="namespaces.html"><span>Namespace&#160;List</span></a></li>
+ <li><a href="namespacemembers.html"><span>Namespace&#160;Members</span></a></li>
+ </ul>
+ </div>
+</div><!-- top -->
+<div id="side-nav" class="ui-resizable side-nav-resizable">
+ <div id="nav-tree">
+ <div id="nav-tree-contents">
+ <div id="nav-sync" class="sync"></div>
+ </div>
+ </div>
+ <div id="splitbar" style="-moz-user-select:none;"
+ class="ui-resizable-handle">
+ </div>
+</div>
+<script type="text/javascript">
+$(document).ready(function(){initNavTree('namespaceRedMatrix_1_1RedDAV.html','');});
+</script>
+<div id="doc-content">
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+ onmouseover="return searchBox.OnSearchSelectShow()"
+ onmouseout="return searchBox.OnSearchSelectHide()"
+ onkeydown="return searchBox.OnSearchSelectKey(event)">
+<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark">&#160;</span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark">&#160;</span>Classes</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark">&#160;</span>Namespaces</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark">&#160;</span>Files</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark">&#160;</span>Functions</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark">&#160;</span>Variables</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark">&#160;</span>Pages</a></div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<iframe src="javascript:void(0)" frameborder="0"
+ name="MSearchResults" id="MSearchResults">
+</iframe>
+</div>
+
+<div class="header">
+ <div class="summary">
+<a href="#nested-classes">Classes</a> </div>
+ <div class="headertitle">
+<div class="title">RedMatrix\RedDAV Namespace Reference</div> </div>
+</div><!--header-->
+<div class="contents">
+<table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="nested-classes"></a>
+Classes</h2></td></tr>
+<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classRedMatrix_1_1RedDAV_1_1RedBasicAuth.html">RedBasicAuth</a></td></tr>
+<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">Authentication backend class for <a class="el" href="namespaceRedMatrix_1_1RedDAV.html">RedDAV</a>. <a href="classRedMatrix_1_1RedDAV_1_1RedBasicAuth.html#details">More...</a><br/></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classRedMatrix_1_1RedDAV_1_1RedBrowser.html">RedBrowser</a></td></tr>
+<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">Provides a DAV frontend for the webbrowser. <a href="classRedMatrix_1_1RedDAV_1_1RedBrowser.html#details">More...</a><br/></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classRedMatrix_1_1RedDAV_1_1RedDirectory.html">RedDirectory</a></td></tr>
+<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight"><a class="el" href="classRedMatrix_1_1RedDAV_1_1RedDirectory.html" title="RedDirectory class.">RedDirectory</a> class. <a href="classRedMatrix_1_1RedDAV_1_1RedDirectory.html#details">More...</a><br/></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classRedMatrix_1_1RedDAV_1_1RedFile.html">RedFile</a></td></tr>
+<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">This class represents a file in DAV. <a href="classRedMatrix_1_1RedDAV_1_1RedFile.html#details">More...</a><br/></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+</table>
+</div><!-- contents -->
+</div><!-- doc-content -->
+
diff --git a/doc/html/namespaceRedMatrix_1_1RedDAV.js b/doc/html/namespaceRedMatrix_1_1RedDAV.js
new file mode 100644
index 000000000..b0d685e01
--- /dev/null
+++ b/doc/html/namespaceRedMatrix_1_1RedDAV.js
@@ -0,0 +1,7 @@
+var namespaceRedMatrix_1_1RedDAV =
+[
+ [ "RedBasicAuth", "classRedMatrix_1_1RedDAV_1_1RedBasicAuth.html", "classRedMatrix_1_1RedDAV_1_1RedBasicAuth" ],
+ [ "RedBrowser", "classRedMatrix_1_1RedDAV_1_1RedBrowser.html", "classRedMatrix_1_1RedDAV_1_1RedBrowser" ],
+ [ "RedDirectory", "classRedMatrix_1_1RedDAV_1_1RedDirectory.html", "classRedMatrix_1_1RedDAV_1_1RedDirectory" ],
+ [ "RedFile", "classRedMatrix_1_1RedDAV_1_1RedFile.html", "classRedMatrix_1_1RedDAV_1_1RedFile" ]
+]; \ No newline at end of file
diff --git a/doc/html/namespaceRedmatrix_1_1Import.html b/doc/html/namespaceRedmatrix_1_1Import.html
new file mode 100644
index 000000000..a0ab85227
--- /dev/null
+++ b/doc/html/namespaceRedmatrix_1_1Import.html
@@ -0,0 +1,120 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<meta name="generator" content="Doxygen 1.8.3.1"/>
+<title>The Red Matrix: RedMatrix\Import Namespace Reference</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="navtree.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="resize.js"></script>
+<script type="text/javascript" src="navtree.js"></script>
+<script type="text/javascript">
+ $(document).ready(initResizable);
+ $(window).load(resizeHeight);
+</script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/search.js"></script>
+<script type="text/javascript">
+ $(document).ready(function() { searchBox.OnSelectItem(0); });
+</script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+ <td id="projectlogo"><img alt="Logo" src="rm-64.png"/></td>
+ <td style="padding-left: 0.5em;">
+ <div id="projectname">The Red Matrix
+ </div>
+ </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.8.3.1 -->
+<script type="text/javascript">
+var searchBox = new SearchBox("searchBox", "search",false,'Search');
+</script>
+ <div id="navrow1" class="tabs">
+ <ul class="tablist">
+ <li><a href="index.html"><span>Main&#160;Page</span></a></li>
+ <li><a href="pages.html"><span>Related&#160;Pages</span></a></li>
+ <li class="current"><a href="namespaces.html"><span>Namespaces</span></a></li>
+ <li><a href="annotated.html"><span>Classes</span></a></li>
+ <li><a href="files.html"><span>Files</span></a></li>
+ <li>
+ <div id="MSearchBox" class="MSearchBoxInactive">
+ <span class="left">
+ <img id="MSearchSelect" src="search/mag_sel.png"
+ onmouseover="return searchBox.OnSearchSelectShow()"
+ onmouseout="return searchBox.OnSearchSelectHide()"
+ alt=""/>
+ <input type="text" id="MSearchField" value="Search" accesskey="S"
+ onfocus="searchBox.OnSearchFieldFocus(true)"
+ onblur="searchBox.OnSearchFieldFocus(false)"
+ onkeyup="searchBox.OnSearchFieldChange(event)"/>
+ </span><span class="right">
+ <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
+ </span>
+ </div>
+ </li>
+ </ul>
+ </div>
+ <div id="navrow2" class="tabs2">
+ <ul class="tablist">
+ <li><a href="namespaces.html"><span>Namespace&#160;List</span></a></li>
+ <li><a href="namespacemembers.html"><span>Namespace&#160;Members</span></a></li>
+ </ul>
+ </div>
+</div><!-- top -->
+<div id="side-nav" class="ui-resizable side-nav-resizable">
+ <div id="nav-tree">
+ <div id="nav-tree-contents">
+ <div id="nav-sync" class="sync"></div>
+ </div>
+ </div>
+ <div id="splitbar" style="-moz-user-select:none;"
+ class="ui-resizable-handle">
+ </div>
+</div>
+<script type="text/javascript">
+$(document).ready(function(){initNavTree('namespaceRedMatrix_1_1Import.html','');});
+</script>
+<div id="doc-content">
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+ onmouseover="return searchBox.OnSearchSelectShow()"
+ onmouseout="return searchBox.OnSearchSelectHide()"
+ onkeydown="return searchBox.OnSearchSelectKey(event)">
+<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark">&#160;</span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark">&#160;</span>Classes</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark">&#160;</span>Namespaces</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark">&#160;</span>Files</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark">&#160;</span>Functions</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark">&#160;</span>Variables</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark">&#160;</span>Pages</a></div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<iframe src="javascript:void(0)" frameborder="0"
+ name="MSearchResults" id="MSearchResults">
+</iframe>
+</div>
+
+<div class="header">
+ <div class="summary">
+<a href="#nested-classes">Classes</a> </div>
+ <div class="headertitle">
+<div class="title">RedMatrix\Import Namespace Reference</div> </div>
+</div><!--header-->
+<div class="contents">
+<table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="nested-classes"></a>
+Classes</h2></td></tr>
+<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classRedMatrix_1_1Import_1_1Import.html">Import</a></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+</table>
+</div><!-- contents -->
+</div><!-- doc-content -->
+
diff --git a/doc/html/namespaceRedmatrix_1_1Import.js b/doc/html/namespaceRedmatrix_1_1Import.js
new file mode 100644
index 000000000..c26a05140
--- /dev/null
+++ b/doc/html/namespaceRedmatrix_1_1Import.js
@@ -0,0 +1,4 @@
+var namespaceRedMatrix_1_1Import =
+[
+ [ "Import", "classRedMatrix_1_1Import_1_1Import.html", "classRedMatrix_1_1Import_1_1Import" ]
+]; \ No newline at end of file
diff --git a/doc/html/namespaces.html b/doc/html/namespaces.html
index 8ff7eddf2..dc5efaebd 100644
--- a/doc/html/namespaces.html
+++ b/doc/html/namespaces.html
@@ -108,12 +108,15 @@ $(document).ready(function(){initNavTree('namespaces.html','');});
</div><!--header-->
<div class="contents">
<div class="textblock">Here is a list of all namespaces with brief descriptions:</div><div class="directory">
-<table class="directory">
+<div class="levels">[detail level <span onclick="javascript:toggleLevel(1);">1</span><span onclick="javascript:toggleLevel(2);">2</span>]</div><table class="directory">
<tr id="row_0_" class="even"><td class="entry"><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2ns.png" alt="N" width="24" height="22" /><a class="el" href="namespaceacl__selectors.html" target="_self">acl_selectors</a></td><td class="desc"></td></tr>
<tr id="row_1_"><td class="entry"><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2ns.png" alt="N" width="24" height="22" /><a class="el" href="namespaceFriendica.html" target="_self">Friendica</a></td><td class="desc"></td></tr>
<tr id="row_2_" class="even"><td class="entry"><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2ns.png" alt="N" width="24" height="22" /><a class="el" href="namespacefriendica-to-smarty-tpl.html" target="_self">friendica-to-smarty-tpl</a></td><td class="desc"></td></tr>
-<tr id="row_3_"><td class="entry"><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2ns.png" alt="N" width="24" height="22" /><a class="el" href="namespaceupdatetpl.html" target="_self">updatetpl</a></td><td class="desc"></td></tr>
-<tr id="row_4_" class="even"><td class="entry"><img src="ftv2lastnode.png" alt="\" width="16" height="22" /><img src="ftv2ns.png" alt="N" width="24" height="22" /><a class="el" href="namespaceutil.html" target="_self">util</a></td><td class="desc"></td></tr>
+<tr id="row_3_"><td class="entry"><img id="arr_3_" src="ftv2mnode.png" alt="o" width="16" height="22" onclick="toggleFolder('3_')"/><img src="ftv2ns.png" alt="N" width="24" height="22" /><a class="el" href="namespaceRedMatrix.html" target="_self">RedMatrix</a></td><td class="desc">Class <a class="el" href="namespaceRedMatrix_1_1Import.html">Import</a></td></tr>
+<tr id="row_3_0_" class="even"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2ns.png" alt="N" width="24" height="22" /><a class="el" href="namespaceRedMatrix_1_1Import.html" target="_self">Import</a></td><td class="desc"></td></tr>
+<tr id="row_3_1_"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2lastnode.png" alt="\" width="16" height="22" /><img src="ftv2ns.png" alt="N" width="24" height="22" /><a class="el" href="namespaceRedMatrix_1_1RedDAV.html" target="_self">RedDAV</a></td><td class="desc"></td></tr>
+<tr id="row_4_" class="even"><td class="entry"><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2ns.png" alt="N" width="24" height="22" /><a class="el" href="namespaceupdatetpl.html" target="_self">updatetpl</a></td><td class="desc"></td></tr>
+<tr id="row_5_"><td class="entry"><img src="ftv2lastnode.png" alt="\" width="16" height="22" /><img src="ftv2ns.png" alt="N" width="24" height="22" /><a class="el" href="namespaceutil.html" target="_self">util</a></td><td class="desc"></td></tr>
</table>
</div><!-- directory -->
</div><!-- contents -->
diff --git a/doc/html/namespaces.js b/doc/html/namespaces.js
index 681592f37..451e130fb 100644
--- a/doc/html/namespaces.js
+++ b/doc/html/namespaces.js
@@ -3,6 +3,7 @@ var namespaces =
[ "acl_selectors", "namespaceacl__selectors.html", null ],
[ "Friendica", "namespaceFriendica.html", null ],
[ "friendica-to-smarty-tpl", "namespacefriendica-to-smarty-tpl.html", null ],
+ [ "RedMatrix", "namespaceRedMatrix.html", "namespaceRedMatrix" ],
[ "updatetpl", "namespaceupdatetpl.html", null ],
[ "util", "namespaceutil.html", null ]
]; \ No newline at end of file
diff --git a/doc/html/navtree.js b/doc/html/navtree.js
index b331c48c9..2e466d088 100644
--- a/doc/html/navtree.js
+++ b/doc/html/navtree.js
@@ -37,14 +37,15 @@ var NAVTREE =
var NAVTREEINDEX =
[
"BS-Default_8php.html",
-"boot_8php.html#a69aac276ed82e010dc382b16ab4d59e1",
-"classApp.html#a9bf62f8e39585c0aa48fcffc3bf3484d",
-"classphoto__driver.html#a2b2a99021fc63ed6465d703ddddcb832",
-"extract_8php.html",
-"include_2api_8php.html#a8b25a186bd0893f51aa72a62f655735e",
-"items_8php.html#af6237605c60d69abdd959ddbbee3420c",
-"post__to__red_8php.html",
-"text_8php.html#a8264348059abd1d4d5bb521323d3b19a"
+"boot_8php.html#a525ca93ff35d3535d1a2b8ba57876afa",
+"classApp.html#a33a8e90b60ec4438f6fbf299d0f6839c",
+"classTemplate.html#a285b5b2007dbbf733476273df3fed4ef",
+"datetime_8php.html#abc1652f96799cec6fce8797ba2ebc2df",
+"functions_vars.html",
+"include_2chat_8php.html#a2ba3af6884ecdce95de69262fe599639",
+"mitem_8php.html#a9627cd857cafdf04e4fc0ae48c8e8518",
+"redbasic_2php_2style_8php.html#ab3afb90d611eca90819f597a2c0bb459",
+"text_8php.html#aaed4413ed8918838b517e3b2fafaea0d"
];
var SYNCONMSG = 'click to disable panel synchronisation';
diff --git a/doc/html/navtreeindex0.js b/doc/html/navtreeindex0.js
index f15f5bede..271d739f4 100644
--- a/doc/html/navtreeindex0.js
+++ b/doc/html/navtreeindex0.js
@@ -1,75 +1,88 @@
var NAVTREEINDEX0 =
{
"BS-Default_8php.html":[6,0,3,1,3,1,1],
-"BaseObject_8php.html":[6,0,0,9],
-"Contact_8php.html":[6,0,0,20],
-"Contact_8php.html#a024919623a830e8703ac4f23496dd66c":[6,0,0,20,2],
-"Contact_8php.html#a08845ce8c5b997d5edac38ae7118b5c8":[6,0,0,20,9],
-"Contact_8php.html#a186162051a5127069cc851d78740f205":[6,0,0,20,4],
-"Contact_8php.html#a28e062c884331dbb5dfa713228c25ad6":[6,0,0,20,8],
-"Contact_8php.html#a2f4f495d53f2a334ab75292af79d3c91":[6,0,0,20,11],
-"Contact_8php.html#a2fc191067dd571a79603c66b04b1ca15":[6,0,0,20,14],
-"Contact_8php.html#a38daa1c210b78385307123450ca9a1fc":[6,0,0,20,13],
-"Contact_8php.html#a3a0844dac1e86d523de5d2f432cfeebc":[6,0,0,20,6],
-"Contact_8php.html#a483cda56f9e37c3a4a8773dcdfeb0258":[6,0,0,20,5],
-"Contact_8php.html#a6348a532c9d26cd1c9afbc9aa6aa8960":[6,0,0,20,15],
-"Contact_8php.html#a6e64de7db60b7243dce45fb6347636ff":[6,0,0,20,3],
-"Contact_8php.html#a852fa476f0c70bde10a4f2533aec5f71":[6,0,0,20,10],
-"Contact_8php.html#a87e699f74a1102b25e8aa0432d86a91e":[6,0,0,20,7],
-"Contact_8php.html#acc12cda999c88c4d6185cca967c15125":[6,0,0,20,12],
-"Contact_8php.html#ad5b02c2a962ee55b1b7ca6c159d6e4c5":[6,0,0,20,1],
-"Contact_8php.html#ae8803c330352cbf1e828eb7490edf47e":[6,0,0,20,0],
-"ConversationObject_8php.html":[6,0,0,24],
-"ITemplateEngine_8php.html":[6,0,0,45],
-"ItemObject_8php.html":[6,0,0,44],
-"ProtoDriver_8php.html":[6,0,0,65],
+"BaseObject_8php.html":[6,0,0,11],
+"Contact_8php.html":[6,0,0,21],
+"Contact_8php.html#a024919623a830e8703ac4f23496dd66c":[6,0,0,21,2],
+"Contact_8php.html#a08845ce8c5b997d5edac38ae7118b5c8":[6,0,0,21,9],
+"Contact_8php.html#a28e062c884331dbb5dfa713228c25ad6":[6,0,0,21,8],
+"Contact_8php.html#a2f4f495d53f2a334ab75292af79d3c91":[6,0,0,21,11],
+"Contact_8php.html#a2fc191067dd571a79603c66b04b1ca15":[6,0,0,21,14],
+"Contact_8php.html#a3a0844dac1e86d523de5d2f432cfeebc":[6,0,0,21,6],
+"Contact_8php.html#a483cda56f9e37c3a4a8773dcdfeb0258":[6,0,0,21,5],
+"Contact_8php.html#a4e8af0f0525161da74583c04b8b03097":[6,0,0,21,4],
+"Contact_8php.html#a5101d7eca5d6f387e5555f03fe249e33":[6,0,0,21,3],
+"Contact_8php.html#a6348a532c9d26cd1c9afbc9aa6aa8960":[6,0,0,21,15],
+"Contact_8php.html#a7e3f5bef8ea1d2bf8434c9be36a2b713":[6,0,0,21,10],
+"Contact_8php.html#a87e699f74a1102b25e8aa0432d86a91e":[6,0,0,21,7],
+"Contact_8php.html#ab5895b75a3b2abdddf1cb351a8c6b58b":[6,0,0,21,13],
+"Contact_8php.html#acc12cda999c88c4d6185cca967c15125":[6,0,0,21,12],
+"Contact_8php.html#ad5b02c2a962ee55b1b7ca6c159d6e4c5":[6,0,0,21,1],
+"Contact_8php.html#ae8803c330352cbf1e828eb7490edf47e":[6,0,0,21,0],
+"ConversationObject_8php.html":[6,0,0,25],
+"ITemplateEngine_8php.html":[6,0,0,48],
+"Importer_8php.html":[6,0,0,1,0],
+"ItemObject_8php.html":[6,0,0,47],
+"ProtoDriver_8php.html":[6,0,0,68],
+"RedBasicAuth_8php.html":[6,0,0,3,0],
+"RedBrowser_8php.html":[6,0,0,3,1],
+"RedDirectory_8php.html":[6,0,0,3,2],
+"RedFile_8php.html":[6,0,0,3,3],
"__well__known_8php.html":[6,0,1,0],
"__well__known_8php.html#a6ebfa937a2024f0b5dab53f0ac90fed0":[6,0,1,0,0],
-"account_8php.html":[6,0,0,2],
-"account_8php.html#a014de2d5d5c9785de5bf547a485822fa":[6,0,0,2,7],
-"account_8php.html#a0d183a3cb4c67a0f5e906811df7a1fc9":[6,0,0,2,6],
-"account_8php.html#a141fe579c351c78209d425473f978eb5":[6,0,0,2,5],
-"account_8php.html#a144b4891022567668375b58ea61cfff0":[6,0,0,2,4],
-"account_8php.html#a43e3042b2723d76915a030bac3c668b6":[6,0,0,2,0],
-"account_8php.html#a917d74aad0baf3e0c4b51cf1051e654f":[6,0,0,2,1],
-"account_8php.html#aa9c29c497c17d8f9344dce8631ad8761":[6,0,0,2,8],
-"account_8php.html#aaff7720423417a4333697894ffd9ddeb":[6,0,0,2,3],
-"account_8php.html#ac1653efba62493b9d87513e1b6c04c83":[6,0,0,2,11],
-"account_8php.html#ac5c570a2d46446bad4dd2501e9c5a4b1":[6,0,0,2,9],
-"account_8php.html#acd6b8d2124ba5ea4f4794d2c58ae8bf5":[6,0,0,2,12],
-"account_8php.html#ad07be417ac7eda939768804106ddea3d":[6,0,0,2,10],
-"account_8php.html#ae052bd5558847bd38e89c213561a9771":[6,0,0,2,2],
+"account_8php.html":[6,0,0,4],
+"account_8php.html#a014de2d5d5c9785de5bf547a485822fa":[6,0,0,4,8],
+"account_8php.html#a030cec6793b909c439c0336ba39b1571":[6,0,0,4,10],
+"account_8php.html#a0d183a3cb4c67a0f5e906811df7a1fc9":[6,0,0,4,7],
+"account_8php.html#a141fe579c351c78209d425473f978eb5":[6,0,0,4,6],
+"account_8php.html#a144b4891022567668375b58ea61cfff0":[6,0,0,4,5],
+"account_8php.html#a4328c40ee4b3d68630cf1ebb7b9d4d89":[6,0,0,4,0],
+"account_8php.html#a43e3042b2723d76915a030bac3c668b6":[6,0,0,4,1],
+"account_8php.html#a4fc13e528367f510fcb6d8bbfc559040":[6,0,0,4,13],
+"account_8php.html#a754d7f53b3abc557b753c057dc4e021d":[6,0,0,4,12],
+"account_8php.html#a901657dd078e070516cf97285e0bada7":[6,0,0,4,14],
+"account_8php.html#a905b54e10704b283ac64680a8abc0971":[6,0,0,4,11],
+"account_8php.html#a917d74aad0baf3e0c4b51cf1051e654f":[6,0,0,4,2],
+"account_8php.html#aa9c29c497c17d8f9344dce8631ad8761":[6,0,0,4,9],
+"account_8php.html#aaff7720423417a4333697894ffd9ddeb":[6,0,0,4,4],
+"account_8php.html#ac1653efba62493b9d87513e1b6c04c83":[6,0,0,4,17],
+"account_8php.html#ac5c570a2d46446bad4dd2501e9c5a4b1":[6,0,0,4,15],
+"account_8php.html#acd6b8d2124ba5ea4f4794d2c58ae8bf5":[6,0,0,4,18],
+"account_8php.html#ad07be417ac7eda939768804106ddea3d":[6,0,0,4,16],
+"account_8php.html#ae052bd5558847bd38e89c213561a9771":[6,0,0,4,3],
"achievements_8php.html":[6,0,1,1],
"achievements_8php.html#a35ae04ada0e227d19671f289a32fb30e":[6,0,1,1,0],
"acl_8php.html":[6,0,1,2],
"acl_8php.html#a57dceff370d4a0e7ae673d50fbfda61f":[6,0,1,2,1],
"acl_8php.html#ac6776dba871806ecdb5d1659bc2eb07a":[6,0,1,2,0],
-"acl__selectors_8php.html":[6,0,0,3],
-"acl__selectors_8php.html#a9476997d2968a5794f3723878ed89c91":[6,0,0,3,0],
-"acl__selectors_8php.html#aa1e3bc344ca2b29f97eb9860216d21a0":[6,0,0,3,2],
-"acl__selectors_8php.html#ad25bba63a51a2b0b5b463efae50df528":[6,0,0,3,3],
-"acl__selectors_8php.html#ad6664fb8330308e23f2645cd6624727e":[6,0,0,3,1],
-"activities_8php.html":[6,0,0,4],
-"activities_8php.html#a80134e807719b3c54aba971958d2e132":[6,0,0,4,0],
+"acl__selectors_8php.html":[6,0,0,5],
+"acl__selectors_8php.html#a9476997d2968a5794f3723878ed89c91":[6,0,0,5,0],
+"acl__selectors_8php.html#aa1e3bc344ca2b29f97eb9860216d21a0":[6,0,0,5,2],
+"acl__selectors_8php.html#ad25bba63a51a2b0b5b463efae50df528":[6,0,0,5,3],
+"acl__selectors_8php.html#ad6664fb8330308e23f2645cd6624727e":[6,0,0,5,1],
+"activities_8php.html":[6,0,0,6],
+"activities_8php.html#a80134e807719b3c54aba971958d2e132":[6,0,0,6,0],
"admin_8php.html":[6,0,1,3],
"admin_8php.html#a1d1362698af14d209aa3a0fb655551dd":[6,0,1,3,6],
"admin_8php.html#a233b7c8c31776b7020532003c6e44e1c":[6,0,1,3,7],
+"admin_8php.html#a278289bc6d45f6f2a272a7ab6a1d1057":[6,0,1,3,10],
+"admin_8php.html#a3deba594ca1e11694eac1de0b724ef0a":[6,0,1,3,9],
"admin_8php.html#a42e628f367c168add8013352ac74d33f":[6,0,1,3,2],
"admin_8php.html#a54128076986ba80c4a103de3fc3e19a8":[6,0,1,3,8],
-"admin_8php.html#a5a696706a3869800e65fb365214241b7":[6,0,1,3,14],
+"admin_8php.html#a5a696706a3869800e65fb365214241b7":[6,0,1,3,16],
"admin_8php.html#a60ba9783ad14545814919970bc3fb725":[6,0,1,3,5],
-"admin_8php.html#a62f10f90c47686c9c3c37c4c03a108d2":[6,0,1,3,13],
+"admin_8php.html#a62f10f90c47686c9c3c37c4c03a108d2":[6,0,1,3,15],
"admin_8php.html#a6943543f3138f6ee182cb701f415d1cc":[6,0,1,3,4],
"admin_8php.html#aaa6addf2dbc3f3fcf99244a56b41eade":[6,0,1,3,3],
-"admin_8php.html#ac0f3bd12431c056aad77bac9d09fa30e":[6,0,1,3,9],
-"admin_8php.html#ac6e95b920b5abd030cc522964987087a":[6,0,1,3,11],
-"admin_8php.html#acf51f5837a7427832144c2bf7308ada3":[6,0,1,3,15],
-"admin_8php.html#ad4f74f33944a98b56d2c8c7601f124a4":[6,0,1,3,17],
+"admin_8php.html#ac0f3bd12431c056aad77bac9d09fa30e":[6,0,1,3,11],
+"admin_8php.html#ac6e95b920b5abd030cc522964987087a":[6,0,1,3,13],
+"admin_8php.html#acf51f5837a7427832144c2bf7308ada3":[6,0,1,3,17],
+"admin_8php.html#ad4f74f33944a98b56d2c8c7601f124a4":[6,0,1,3,19],
"admin_8php.html#ad6f87a764fd35f522c7b4c351d7878ec":[6,0,1,3,1],
-"admin_8php.html#add865f4ae806ecbf716f423fc3e50e4f":[6,0,1,3,10],
-"admin_8php.html#ae46311a3fefc21abc838a26e91789de6":[6,0,1,3,16],
-"admin_8php.html#af124619fdc278fe2bf14c45ddaa260fb":[6,0,1,3,12],
-"admin_8php.html#af81f081851791cd15e49e8ff6722dc27":[6,0,1,3,18],
+"admin_8php.html#add865f4ae806ecbf716f423fc3e50e4f":[6,0,1,3,12],
+"admin_8php.html#ae46311a3fefc21abc838a26e91789de6":[6,0,1,3,18],
+"admin_8php.html#af124619fdc278fe2bf14c45ddaa260fb":[6,0,1,3,14],
+"admin_8php.html#af81f081851791cd15e49e8ff6722dc27":[6,0,1,3,20],
"admin_8php.html#afef415e4011607fbb665610441595015":[6,0,1,3,0],
"annotated.html":[5,0],
"appman_8php.html":[6,0,1,5],
@@ -89,165 +102,152 @@ var NAVTREEINDEX0 =
"apw_2php_2style_8php.html#af3a16c5f0dd7a74cf9acf6a49fff73a7":[6,0,3,1,0,1,2,9],
"apw_2php_2theme_8php.html":[6,0,3,1,0,1,3],
"apw_2php_2theme_8php.html#a42167c539043a39a6b83c252d05f1e89":[6,0,3,1,0,1,3,0],
-"auth_8php.html":[6,0,0,8],
-"auth_8php.html#a07bae0e623e2daa9ee2cd5a8aa294dee":[6,0,0,8,0],
-"auth_8php.html#a0950af7c2888ca1d4743fe5d0bff9ae5":[6,0,0,8,3],
-"auth_8php.html#a2add3a1129ffa4d5515442a9d52a9b1a":[6,0,0,8,2],
-"auth_8php.html#ab7be44ee051c0aa29847807cf2c5dd38":[6,0,0,8,1],
-"bb2diaspora_8php.html":[6,0,0,10],
-"bb2diaspora_8php.html#a180b0e3a7d702998be19e3c3b44b0e93":[6,0,0,10,7],
-"bb2diaspora_8php.html#a29a2ad41f5826f3975fa9a49934ff863":[6,0,0,10,5],
-"bb2diaspora_8php.html#a4c2f8f11b29a06809d9b07782215b1b2":[6,0,0,10,6],
-"bb2diaspora_8php.html#a4f10e0876b27373c762bc1abbe745f5c":[6,0,0,10,0],
-"bb2diaspora_8php.html#a599428bceb6f6d82a6a78cb66811f747":[6,0,0,10,8],
-"bb2diaspora_8php.html#a8b96bd45884fa1c40b942939354197d4":[6,0,0,10,3],
-"bb2diaspora_8php.html#ac9061ee10fcfcdac69566b649614e625":[6,0,0,10,2],
-"bb2diaspora_8php.html#ad0abe1a7ee50aa0736a233df0a422eba":[6,0,0,10,1],
-"bb2diaspora_8php.html#adc92ccda5f85ed27e64fcc17712c89cc":[6,0,0,10,4],
-"bbcode_8php.html":[6,0,0,11],
-"bbcode_8php.html#a009f61aaf78771737ed0765c8463911b":[6,0,0,11,9],
-"bbcode_8php.html#a064dcfd9767df6f53be1a0e11ceeb15d":[6,0,0,11,8],
-"bbcode_8php.html#a1c69e021d5e0aef97d6966bf3169c86a":[6,0,0,11,5],
-"bbcode_8php.html#a2be26414a367118143cc89e2d58e7377":[6,0,0,11,6],
-"bbcode_8php.html#a3435c82a6c7693557800cdeb6848d0bd":[6,0,0,11,0],
-"bbcode_8php.html#a39de4de32a9456d1ca914d0dc52bd322":[6,0,0,11,13],
-"bbcode_8php.html#a3a989cbf308a32468d171d83e9c51d1e":[6,0,0,11,4],
-"bbcode_8php.html#a5165a5221a52cf1bc1d7812ebd2069c7":[6,0,0,11,11],
-"bbcode_8php.html#a55b0cb6973f1ec731de0e726bcc0efa7":[6,0,0,11,12],
-"bbcode_8php.html#a7cc811ff1939a508cfb54f39c1d584d7":[6,0,0,11,10],
-"bbcode_8php.html#a851f5aafefe52474201b83f9fd65931f":[6,0,0,11,2],
-"bbcode_8php.html#a8911e027907820df3db03b4f76724b50":[6,0,0,11,7],
-"bbcode_8php.html#a98d0eecc620c19561639f06cfbe8e74c":[6,0,0,11,3],
-"bbcode_8php.html#aa92f119341f4c69dcef2768a013079b8":[6,0,0,11,14],
-"bbcode_8php.html#abb02f1044ff1c635d12af690d0f2cfa2":[6,0,0,11,1],
+"auth_8php.html":[6,0,0,10],
+"auth_8php.html#a07bae0e623e2daa9ee2cd5a8aa294dee":[6,0,0,10,0],
+"auth_8php.html#a2add3a1129ffa4d5515442a9d52a9b1a":[6,0,0,10,3],
+"auth_8php.html#a69fa663e6baf65f80d1b114ad72615f2":[6,0,0,10,2],
+"auth_8php.html#a6f60fb54f60cd36c2430d6615a7b4f3f":[6,0,0,10,4],
+"auth_8php.html#ae3ecb5f34f202c7f9a61c5d589f6c6e1":[6,0,0,10,1],
+"bb2diaspora_8php.html":[6,0,0,12],
+"bb2diaspora_8php.html#a180b0e3a7d702998be19e3c3b44b0e93":[6,0,0,12,13],
+"bb2diaspora_8php.html#a29a2ad41f5826f3975fa9a49934ff863":[6,0,0,12,9],
+"bb2diaspora_8php.html#a4a27604f0745f1efda672966aaca9a3b":[6,0,0,12,6],
+"bb2diaspora_8php.html#a4c2f8f11b29a06809d9b07782215b1b2":[6,0,0,12,10],
+"bb2diaspora_8php.html#a4f10e0876b27373c762bc1abbe745f5c":[6,0,0,12,0],
+"bb2diaspora_8php.html#a5258d2f1addeb0a2a6b54c4f9e7d0f34":[6,0,0,12,3],
+"bb2diaspora_8php.html#a599428bceb6f6d82a6a78cb66811f747":[6,0,0,12,14],
+"bb2diaspora_8php.html#a8b96bd45884fa1c40b942939354197d4":[6,0,0,12,7],
+"bb2diaspora_8php.html#aab32042f8bd63552d3fadeeae9eab083":[6,0,0,12,2],
+"bb2diaspora_8php.html#ab27761069ea1275f0fc4c543099c5519":[6,0,0,12,1],
+"bb2diaspora_8php.html#ab61b4f8c065e97b151411858bb2f209a":[6,0,0,12,12],
+"bb2diaspora_8php.html#ac9061ee10fcfcdac69566b649614e625":[6,0,0,12,5],
+"bb2diaspora_8php.html#ad033be99e87a2aaa05e569c68f30792d":[6,0,0,12,11],
+"bb2diaspora_8php.html#ad0abe1a7ee50aa0736a233df0a422eba":[6,0,0,12,4],
+"bb2diaspora_8php.html#adc92ccda5f85ed27e64fcc17712c89cc":[6,0,0,12,8],
+"bbcode_8php.html":[6,0,0,13],
+"bbcode_8php.html#a009f61aaf78771737ed0765c8463911b":[6,0,0,13,12],
+"bbcode_8php.html#a02d5f2434e7bb5cf683e52a9b4787f24":[6,0,0,13,1],
+"bbcode_8php.html#a064dcfd9767df6f53be1a0e11ceeb15d":[6,0,0,13,11],
+"bbcode_8php.html#a1c69e021d5e0aef97d6966bf3169c86a":[6,0,0,13,8],
+"bbcode_8php.html#a2be26414a367118143cc89e2d58e7377":[6,0,0,13,9],
+"bbcode_8php.html#a3435c82a6c7693557800cdeb6848d0bd":[6,0,0,13,0],
+"bbcode_8php.html#a39de4de32a9456d1ca914d0dc52bd322":[6,0,0,13,16],
+"bbcode_8php.html#a3a989cbf308a32468d171d83e9c51d1e":[6,0,0,13,7],
+"bbcode_8php.html#a5165a5221a52cf1bc1d7812ebd2069c7":[6,0,0,13,14],
+"bbcode_8php.html#a55b0cb6973f1ec731de0e726bcc0efa7":[6,0,0,13,15],
+"bbcode_8php.html#a7cb403fd1c36d7376c2f3932a1ceb54d":[6,0,0,13,2],
+"bbcode_8php.html#a7cc811ff1939a508cfb54f39c1d584d7":[6,0,0,13,13],
+"bbcode_8php.html#a851f5aafefe52474201b83f9fd65931f":[6,0,0,13,4],
+"bbcode_8php.html#a8911e027907820df3db03b4f76724b50":[6,0,0,13,10],
+"bbcode_8php.html#a98d0eecc620c19561639f06cfbe8e74c":[6,0,0,13,6],
+"bbcode_8php.html#aa73fb62e7be1fa5fce4ad5f3d4487fc9":[6,0,0,13,5],
+"bbcode_8php.html#aa92f119341f4c69dcef2768a013079b8":[6,0,0,13,17],
+"bbcode_8php.html#abb02f1044ff1c635d12af690d0f2cfa2":[6,0,0,13,3],
"block_8php.html":[6,0,1,8],
"block_8php.html#a8a82a470acdfbc7a8e749509caeeea45":[6,0,1,8,0],
"block_8php.html#a9b61c96044ed2a068f18c10370a78d5c":[6,0,1,8,1],
"blocks_8php.html":[6,0,1,9],
"blocks_8php.html#a2531a8fd51db3cecb2eb20c002c66e12":[6,0,1,9,0],
-"blogga_2php_2theme_8php.html":[6,0,3,1,1,0,2],
-"blogga_2php_2theme_8php.html#aa55c1cb1f05087b5002ecb633b550b1b":[6,0,3,1,1,0,2,0],
-"blogga_2view_2theme_2blog_2theme_8php.html":[6,0,3,1,1,1,0,0,2],
-"blogga_2view_2theme_2blog_2theme_8php.html#a028ae8e9f2824670dfa76a6651d817e5":[6,0,3,1,1,1,0,0,2,3],
-"blogga_2view_2theme_2blog_2theme_8php.html#a3e77dbe111f330c64a1ff6c741cd515c":[6,0,3,1,1,1,0,0,2,2],
-"blogga_2view_2theme_2blog_2theme_8php.html#aa55c1cb1f05087b5002ecb633b550b1b":[6,0,3,1,1,1,0,0,2,0],
-"blogga_2view_2theme_2blog_2theme_8php.html#aae58cc837fe56473d9f3370abfe533ae":[6,0,3,1,1,1,0,0,2,1],
-"blogga_2view_2theme_2blog_2theme_8php.html#af634a3f721c5e238530d0636d33230ec":[6,0,3,1,1,1,0,0,2,4],
+"blocks_8php.html#aebe88302181883d2b17d6e98a1aaebe9":[6,0,1,9,1],
"boot_8php.html":[6,0,4],
-"boot_8php.html#a009e6a0637cb65804ea8094ecc4450b0":[6,0,4,141],
-"boot_8php.html#a01353c9abebc3544ea080ac161729632":[6,0,4,36],
-"boot_8php.html#a022cea669f9f13ef7c6268b63884c57f":[6,0,4,155],
-"boot_8php.html#a02566ac9d891369a1d3ebb81a15722fc":[6,0,4,257],
-"boot_8php.html#a028380b2902a86ba32198f6d3b5d10bb":[6,0,4,134],
-"boot_8php.html#a032bbd6d0321e99e9117332c9ed2b1b8":[6,0,4,54],
-"boot_8php.html#a03d19251c245587de7ed959300b87bdf":[6,0,4,174],
-"boot_8php.html#a0450389f24c632906fbc24347700a543":[6,0,4,45],
-"boot_8php.html#a0603d6ece8c5d37b4b7db697db053a4b":[6,0,4,107],
+"boot_8php.html#a009e6a0637cb65804ea8094ecc4450b0":[6,0,4,151],
+"boot_8php.html#a0209e605028a5bb492683951ab30d49d":[6,0,4,313],
+"boot_8php.html#a022cea669f9f13ef7c6268b63884c57f":[6,0,4,165],
+"boot_8php.html#a02566ac9d891369a1d3ebb81a15722fc":[6,0,4,271],
+"boot_8php.html#a028380b2902a86ba32198f6d3b5d10bb":[6,0,4,143],
+"boot_8php.html#a032bbd6d0321e99e9117332c9ed2b1b8":[6,0,4,61],
+"boot_8php.html#a03d19251c245587de7ed959300b87bdf":[6,0,4,184],
+"boot_8php.html#a0450389f24c632906fbc24347700a543":[6,0,4,52],
+"boot_8php.html#a0603d6ece8c5d37b4b7db697db053a4b":[6,0,4,116],
"boot_8php.html#a081307d681d7d04f17b9ced2076e7c85":[6,0,4,1],
-"boot_8php.html#a09532c3f750ae8c4527e63b2b790cbf3":[6,0,4,214],
-"boot_8php.html#a0a98dd0110dc6c8e24cefc8ae74d5562":[6,0,4,69],
-"boot_8php.html#a0b73e2548d6f9beb9c93211f488e336a":[6,0,4,178],
-"boot_8php.html#a0c59dde058efebbc66520d136cbd1631":[6,0,4,277],
-"boot_8php.html#a0cc8dc76bd10ac0ec81bac08a46f82fe":[6,0,4,273],
-"boot_8php.html#a0d877df1e20bae765e1708be50f6b503":[6,0,4,276],
-"boot_8php.html#a0e4701c9742c3ef88f02ac450a042a84":[6,0,4,21],
-"boot_8php.html#a0e57f846e6d47a308feced0f7274f178":[6,0,4,61],
+"boot_8php.html#a09532c3f750ae8c4527e63b2b790cbf3":[6,0,4,226],
+"boot_8php.html#a0a98dd0110dc6c8e24cefc8ae74d5562":[6,0,4,76],
+"boot_8php.html#a0afeb43da443d6ff3526ede5ecdcc3b3":[6,0,4,304],
+"boot_8php.html#a0b73e2548d6f9beb9c93211f488e336a":[6,0,4,188],
+"boot_8php.html#a0c59dde058efebbc66520d136cbd1631":[6,0,4,291],
+"boot_8php.html#a0cc8dc76bd10ac0ec81bac08a46f82fe":[6,0,4,287],
+"boot_8php.html#a0d877df1e20bae765e1708be50f6b503":[6,0,4,290],
+"boot_8php.html#a0e4701c9742c3ef88f02ac450a042a84":[6,0,4,23],
+"boot_8php.html#a0e57f846e6d47a308feced0f7274f178":[6,0,4,68],
"boot_8php.html#a0e6db7e365f2b041a828b93786f694bc":[6,0,4,15],
-"boot_8php.html#a0fb63e51c2a9814941842ae8f2f4dff8":[6,0,4,79],
-"boot_8php.html#a107d53f96acf5319905a34b1870db09a":[6,0,4,39],
-"boot_8php.html#a115faf8797718c3165498abbd6895843":[6,0,4,262],
-"boot_8php.html#a11cfe7d99b4dac0454d0de8873989f81":[6,0,4,136],
-"boot_8php.html#a1200c1f968ff3d52ef878de5fc5c30c1":[6,0,4,261],
-"boot_8php.html#a12c781cefc20167231e2e3fd5866b1b5":[6,0,4,83],
-"boot_8php.html#a14ba8f9e162f2559831ee3bf98e0c3bd":[6,0,4,80],
-"boot_8php.html#a14d44d4a00223dc3db4ea962325db192":[6,0,4,204],
-"boot_8php.html#a176664e78dcb9132e16be69418223eb2":[6,0,4,64],
-"boot_8php.html#a17b4ea23d9ecf628d9c8f53b7abcb805":[6,0,4,154],
-"boot_8php.html#a17cf72338b040891781a4bcbdd9a8595":[6,0,4,150],
-"boot_8php.html#a181c111f4b6c14d091dfd3bf0d0a22cd":[6,0,4,177],
-"boot_8php.html#a18a400fa45e5632811b33041d8c048bf":[6,0,4,144],
-"boot_8php.html#a1af3ed96de14aa0d7891b39cc75b60f2":[6,0,4,285],
-"boot_8php.html#a1ba00027b718db732f30fc0e2c3e0abc":[6,0,4,251],
-"boot_8php.html#a1c923b99bf77e4203ae94e5684b6ad0f":[6,0,4,287],
-"boot_8php.html#a1d6e7f4c08bb68e4a424326a811bdd86":[6,0,4,181],
-"boot_8php.html#a1da180f961f49a11573cac4ff6c62c05":[6,0,4,78],
-"boot_8php.html#a1db4f0009c9cb4e107eab0f914a3c8dc":[6,0,4,230],
-"boot_8php.html#a1f5906598e90b5ea2b4245f682be4348":[6,0,4,109],
-"boot_8php.html#a1fbb93cf030f07391f22cc2948744869":[6,0,4,161],
-"boot_8php.html#a205d013103997adfa72953d2f20c01e1":[6,0,4,224],
-"boot_8php.html#a20f0eed431d25870b624b8937a07a59f":[6,0,4,197],
-"boot_8php.html#a21cc29e0025943e7c28ff58cb4856ac3":[6,0,4,253],
-"boot_8php.html#a222395aa223cfbff6166fab0b4e2e1d5":[6,0,4,40],
-"boot_8php.html#a24a7a70afedd5d85fe0eadc85afa9f77":[6,0,4,20],
-"boot_8php.html#a25476eec71fceda237f7dc1d78b0adb8":[6,0,4,102],
-"boot_8php.html#a27299ecfb9e9a99826f17a1c14c6995f":[6,0,4,94],
-"boot_8php.html#a2750985ec445617d7e82ae3098c91e3f":[6,0,4,265],
-"boot_8php.html#a285732e7889fa7f333cbe431111e1029":[6,0,4,200],
-"boot_8php.html#a29528a2544373cc19a378f350040c6a1":[6,0,4,85],
-"boot_8php.html#a2958a2bd5422b85329d7c36c06dbc221":[6,0,4,135],
-"boot_8php.html#a29e921c0c72412cc738e44cca6ca1f62":[6,0,4,228],
-"boot_8php.html#a2af173e4e9836ee7c90757b4793a2be3":[6,0,4,110],
-"boot_8php.html#a2b525996e4426bdddbcec277778bde08":[6,0,4,249],
-"boot_8php.html#a2c65e925994566a63e6c03c381f1b4a0":[6,0,4,196],
-"boot_8php.html#a2c8906f1af94a3559a5b4661067bb79d":[6,0,4,131],
-"boot_8php.html#a2e90096fede6acce16abf0da8cb2febe":[6,0,4,70],
-"boot_8php.html#a2f8f25b13480c37a5f22511f53da8bab":[6,0,4,75],
-"boot_8php.html#a32df13fec0e43281da5979e1f5579aa8":[6,0,4,235],
-"boot_8php.html#a3475ff6c2e575f946ea0ee377e944173":[6,0,4,148],
-"boot_8php.html#a34c756469ebed32e2fc987bcde62d382":[6,0,4,42],
-"boot_8php.html#a3515ea6bf77495de89b93e9ccd881c49":[6,0,4,124],
-"boot_8php.html#a35625dacd2158b9f1f1a8e77f9f081fd":[6,0,4,163],
-"boot_8php.html#a36003bebe4ce860c6652bcc3e09b2214":[6,0,4,211],
-"boot_8php.html#a36b31575f992a10b5927b76efba9362e":[6,0,4,291],
-"boot_8php.html#a38f6c7fe33b5434a24b4314567753dfa":[6,0,4,185],
-"boot_8php.html#a3ad9cc5d4354be741fa1de12b96e9955":[6,0,4,113],
-"boot_8php.html#a3b56bfc6a0dd159070e316ddac3b7456":[6,0,4,118],
-"boot_8php.html#a3cd42a70c6b3999590e4fd7a1a9096af":[6,0,4,290],
-"boot_8php.html#a3d6d4fc5fafcc9156811669158541caf":[6,0,4,226],
+"boot_8php.html#a0fb63e51c2a9814941842ae8f2f4dff8":[6,0,4,86],
+"boot_8php.html#a107d53f96acf5319905a34b1870db09a":[6,0,4,45],
+"boot_8php.html#a115faf8797718c3165498abbd6895843":[6,0,4,276],
+"boot_8php.html#a11cfe7d99b4dac0454d0de8873989f81":[6,0,4,145],
+"boot_8php.html#a1200c1f968ff3d52ef878de5fc5c30c1":[6,0,4,275],
+"boot_8php.html#a12c781cefc20167231e2e3fd5866b1b5":[6,0,4,90],
+"boot_8php.html#a14ba8f9e162f2559831ee3bf98e0c3bd":[6,0,4,87],
+"boot_8php.html#a14d44d4a00223dc3db4ea962325db192":[6,0,4,215],
+"boot_8php.html#a176664e78dcb9132e16be69418223eb2":[6,0,4,71],
+"boot_8php.html#a17b4ea23d9ecf628d9c8f53b7abcb805":[6,0,4,164],
+"boot_8php.html#a17cf72338b040891781a4bcbdd9a8595":[6,0,4,160],
+"boot_8php.html#a181c111f4b6c14d091dfd3bf0d0a22cd":[6,0,4,187],
+"boot_8php.html#a18a400fa45e5632811b33041d8c048bf":[6,0,4,154],
+"boot_8php.html#a1997c4b7d0253e036bc0fb6b20e4af71":[6,0,4,303],
+"boot_8php.html#a1af3ed96de14aa0d7891b39cc75b60f2":[6,0,4,310],
+"boot_8php.html#a1ba00027b718db732f30fc0e2c3e0abc":[6,0,4,265],
+"boot_8php.html#a1c923b99bf77e4203ae94e5684b6ad0f":[6,0,4,312],
+"boot_8php.html#a1d6e7f4c08bb68e4a424326a811bdd86":[6,0,4,191],
+"boot_8php.html#a1da180f961f49a11573cac4ff6c62c05":[6,0,4,85],
+"boot_8php.html#a1db4f0009c9cb4e107eab0f914a3c8dc":[6,0,4,241],
+"boot_8php.html#a1f5906598e90b5ea2b4245f682be4348":[6,0,4,118],
+"boot_8php.html#a1fbb93cf030f07391f22cc2948744869":[6,0,4,171],
+"boot_8php.html#a205d013103997adfa72953d2f20c01e1":[6,0,4,235],
+"boot_8php.html#a20f0eed431d25870b624b8937a07a59f":[6,0,4,208],
+"boot_8php.html#a21cc29e0025943e7c28ff58cb4856ac3":[6,0,4,267],
+"boot_8php.html#a222395aa223cfbff6166fab0b4e2e1d5":[6,0,4,46],
+"boot_8php.html#a24a7a70afedd5d85fe0eadc85afa9f77":[6,0,4,22],
+"boot_8php.html#a25476eec71fceda237f7dc1d78b0adb8":[6,0,4,111],
+"boot_8php.html#a27299ecfb9e9a99826f17a1c14c6995f":[6,0,4,101],
+"boot_8php.html#a2750985ec445617d7e82ae3098c91e3f":[6,0,4,279],
+"boot_8php.html#a285732e7889fa7f333cbe431111e1029":[6,0,4,211],
+"boot_8php.html#a29528a2544373cc19a378f350040c6a1":[6,0,4,92],
+"boot_8php.html#a2958a2bd5422b85329d7c36c06dbc221":[6,0,4,144],
+"boot_8php.html#a29e921c0c72412cc738e44cca6ca1f62":[6,0,4,239],
+"boot_8php.html#a2af173e4e9836ee7c90757b4793a2be3":[6,0,4,119],
+"boot_8php.html#a2b525996e4426bdddbcec277778bde08":[6,0,4,263],
+"boot_8php.html#a2c65e925994566a63e6c03c381f1b4a0":[6,0,4,207],
+"boot_8php.html#a2c8906f1af94a3559a5b4661067bb79d":[6,0,4,140],
+"boot_8php.html#a2e90096fede6acce16abf0da8cb2febe":[6,0,4,77],
+"boot_8php.html#a2f8f25b13480c37a5f22511f53da8bab":[6,0,4,82],
+"boot_8php.html#a329400dcb29897cdaae3020109272285":[6,0,4,17],
+"boot_8php.html#a32df13fec0e43281da5979e1f5579aa8":[6,0,4,246],
+"boot_8php.html#a3475ff6c2e575f946ea0ee377e944173":[6,0,4,158],
+"boot_8php.html#a34c756469ebed32e2fc987bcde62d382":[6,0,4,49],
+"boot_8php.html#a3515ea6bf77495de89b93e9ccd881c49":[6,0,4,133],
+"boot_8php.html#a35625dacd2158b9f1f1a8e77f9f081fd":[6,0,4,173],
+"boot_8php.html#a36003bebe4ce860c6652bcc3e09b2214":[6,0,4,222],
+"boot_8php.html#a36b31575f992a10b5927b76efba9362e":[6,0,4,317],
+"boot_8php.html#a37281c30bd92cecb499878d6778c570f":[6,0,4,302],
+"boot_8php.html#a37ddabc112db443b4c67fbc0f708817e":[6,0,4,105],
+"boot_8php.html#a38f6c7fe33b5434a24b4314567753dfa":[6,0,4,196],
+"boot_8php.html#a3ad9cc5d4354be741fa1de12b96e9955":[6,0,4,122],
+"boot_8php.html#a3b56bfc6a0dd159070e316ddac3b7456":[6,0,4,127],
+"boot_8php.html#a3cd42a70c6b3999590e4fd7a1a9096af":[6,0,4,316],
+"boot_8php.html#a3d48dffd9dc73a187263c3002cdf00c0":[6,0,4,193],
+"boot_8php.html#a3d6d4fc5fafcc9156811669158541caf":[6,0,4,237],
"boot_8php.html#a3e0930933fb2c0bf8211cc7ab4e1c3b4":[6,0,4,12],
-"boot_8php.html#a3e2ea123d29a72012db1241f96280b0e":[6,0,4,62],
-"boot_8php.html#a3f40aa5bafff8c4eebdc62e5121daf77":[6,0,4,92],
-"boot_8php.html#a400519fa181591cd6fdbb8f25fbcba0a":[6,0,4,52],
-"boot_8php.html#a40d885b2cfd736aab4234ae641ca4dfb":[6,0,4,137],
-"boot_8php.html#a423505ab8dbd8e39d04ae3fe1374102b":[6,0,4,219],
-"boot_8php.html#a43296b1b4398aacbf92a4b2d56bab91e":[6,0,4,195],
-"boot_8php.html#a43c6c7d84d880e9500bd4f8f8ecc5731":[6,0,4,91],
-"boot_8php.html#a444ce608ce34efb82ee11852f36e825f":[6,0,4,171],
-"boot_8php.html#a44ae1542a805ffd7f826fb511db07374":[6,0,4,158],
-"boot_8php.html#a44d069c8a1cfcc6d2007c506a17ff28f":[6,0,4,73],
-"boot_8php.html#a458e19af801bc4b0d1f1ce1a6d9e857e":[6,0,4,164],
-"boot_8php.html#a45b12aefab9675baffc7a07a09486db8":[6,0,4,274],
-"boot_8php.html#a49f2a70b3b43aa904223a8d19e986a47":[6,0,4,183],
-"boot_8php.html#a4a12ce5de39789b0361e308d89925a20":[6,0,4,108],
-"boot_8php.html#a4a49b29838ef2c45ab3556b52baec6a4":[6,0,4,243],
-"boot_8php.html#a4bfe22e163657690dfb6d5b1d04cb47e":[6,0,4,182],
+"boot_8php.html#a3e2ea123d29a72012db1241f96280b0e":[6,0,4,69],
+"boot_8php.html#a3f40aa5bafff8c4eebdc62e5121daf77":[6,0,4,99],
+"boot_8php.html#a400519fa181591cd6fdbb8f25fbcba0a":[6,0,4,59],
+"boot_8php.html#a40d885b2cfd736aab4234ae641ca4dfb":[6,0,4,147],
+"boot_8php.html#a423505ab8dbd8e39d04ae3fe1374102b":[6,0,4,230],
+"boot_8php.html#a43296b1b4398aacbf92a4b2d56bab91e":[6,0,4,206],
+"boot_8php.html#a43c6c7d84d880e9500bd4f8f8ecc5731":[6,0,4,98],
+"boot_8php.html#a444ce608ce34efb82ee11852f36e825f":[6,0,4,181],
+"boot_8php.html#a44ae1542a805ffd7f826fb511db07374":[6,0,4,168],
+"boot_8php.html#a44d069c8a1cfcc6d2007c506a17ff28f":[6,0,4,80],
+"boot_8php.html#a458e19af801bc4b0d1f1ce1a6d9e857e":[6,0,4,174],
+"boot_8php.html#a45b12aefab9675baffc7a07a09486db8":[6,0,4,288],
+"boot_8php.html#a476c499e15caf75972fed134a8f23b2e":[6,0,4,42],
+"boot_8php.html#a49f2a70b3b43aa904223a8d19e986a47":[6,0,4,194],
+"boot_8php.html#a4a12ce5de39789b0361e308d89925a20":[6,0,4,117],
+"boot_8php.html#a4a49b29838ef2c45ab3556b52baec6a4":[6,0,4,257],
+"boot_8php.html#a4bfe22e163657690dfb6d5b1d04cb47e":[6,0,4,192],
"boot_8php.html#a4c02d88e66852a01bd5a1feecb7c3ce3":[6,0,4,6],
-"boot_8php.html#a4edce16cb7f21cdafa1e85bf63d713e6":[6,0,4,216],
-"boot_8php.html#a4f507a5996dbb3da148add0339a40d5a":[6,0,4,58],
-"boot_8php.html#a4fefd7486d3b888a05cfd3dc9575f115":[6,0,4,239],
-"boot_8php.html#a505410c7edc5f5bb5fa227b98359793e":[6,0,4,207],
-"boot_8php.html#a525ca93ff35d3535d1a2b8ba57876afa":[6,0,4,162],
-"boot_8php.html#a52b599cd13e152ebc80d7e4413683195":[6,0,4,41],
-"boot_8php.html#a53e4bdb6f225da55115acb9277f75e53":[6,0,4,84],
-"boot_8php.html#a5542c5c2806ab8bca04bad53d47b5209":[6,0,4,33],
-"boot_8php.html#a56fd673eaa7014150297ce1162502db5":[6,0,4,199],
-"boot_8php.html#a57eee7352714c004d36c26dda74af73e":[6,0,4,238],
-"boot_8php.html#a5a681a672e007cdc22b43345d71f07c6":[6,0,4,288],
-"boot_8php.html#a5ab6181607a090bcdbaa13b15b85aba1":[6,0,4,19],
-"boot_8php.html#a5ae728ac966ea1d3525a19e7fec59434":[6,0,4,63],
-"boot_8php.html#a5b043b7fdcfd4e8c9c3747574afc6caa":[6,0,4,189],
-"boot_8php.html#a5b8484922918946d041e5e0515dbe718":[6,0,4,212],
-"boot_8php.html#a5c3747e0f505f0d5271dc4c54e3feaf4":[6,0,4,81],
-"boot_8php.html#a5df5359090d1f8e898c36d7cf8878ad2":[6,0,4,169],
-"boot_8php.html#a5e322a2a2d0f51924c0b2e874988e640":[6,0,4,213],
-"boot_8php.html#a623e49c79943f3e7bdb770d021683cf7":[6,0,4,18],
-"boot_8php.html#a6252d8eca67c689d9035ec6da544cf46":[6,0,4,24],
-"boot_8php.html#a62c832a95e38b1fa23e6cef39521b7d5":[6,0,4,77],
-"boot_8php.html#a639f079bf28f7bbb2769fee651d76dd8":[6,0,4,106],
-"boot_8php.html#a64617d4655804de2a3c86501ab4fdbfd":[6,0,4,270],
-"boot_8php.html#a6626f383c3d2d459f731ab8b4f237d16":[6,0,4,175],
-"boot_8php.html#a6788e99021ec8ffb0fa94d651f22a322":[6,0,4,146],
-"boot_8php.html#a68d1d5bc9c7ccb663dc671b48c66df11":[6,0,4,149],
-"boot_8php.html#a68eebe493e6f729ffd1aeda7a4b11155":[6,0,4,44],
-"boot_8php.html#a6969947145a139ec374ce098224d8e81":[6,0,4,152]
+"boot_8php.html#a4edce16cb7f21cdafa1e85bf63d713e6":[6,0,4,228],
+"boot_8php.html#a4f507a5996dbb3da148add0339a40d5a":[6,0,4,65],
+"boot_8php.html#a4fefd7486d3b888a05cfd3dc9575f115":[6,0,4,251],
+"boot_8php.html#a505410c7edc5f5bb5fa227b98359793e":[6,0,4,218],
+"boot_8php.html#a50a6707a28c7d05d3f49eaabc7994501":[6,0,4,31]
};
diff --git a/doc/html/navtreeindex1.js b/doc/html/navtreeindex1.js
index 0ad7cf4dc..710cca29d 100644
--- a/doc/html/navtreeindex1.js
+++ b/doc/html/navtreeindex1.js
@@ -1,253 +1,253 @@
var NAVTREEINDEX1 =
{
-"boot_8php.html#a69aac276ed82e010dc382b16ab4d59e1":[6,0,4,255],
-"boot_8php.html#a6b14a31a8aa9f3452a13383f413bffa2":[6,0,4,242],
-"boot_8php.html#a6b31dd451bc6c37fe7c9c766ff385aaf":[6,0,4,236],
-"boot_8php.html#a6b9909db6a7ec80ec6fdd40ba74014dd":[6,0,4,103],
-"boot_8php.html#a6c5e9e293c8242dcb9bc2c3ea2fee2c9":[6,0,4,95],
-"boot_8php.html#a6df1102664f64b274810db85197c2755":[6,0,4,223],
-"boot_8php.html#a6e57d913634d033b4d5ad72d99fd3e9d":[6,0,4,133],
-"boot_8php.html#a6ee7a72d558d1851bbb9e3cdde377932":[6,0,4,217],
-"boot_8php.html#a7037bcbca223395c06bc67f65024de7a":[6,0,4,104],
-"boot_8php.html#a7176c0f9f1c98421b97735d892cf6252":[6,0,4,254],
-"boot_8php.html#a718a801b0be6cbaef5e519516da12721":[6,0,4,168],
-"boot_8php.html#a719c7f3972d5f9268f37a41c76cd4ef6":[6,0,4,28],
-"boot_8php.html#a7236b2cdcf59f02a42302e893a99013b":[6,0,4,190],
-"boot_8php.html#a749144d8dd9c1366596a0213c277d050":[6,0,4,139],
-"boot_8php.html#a74bf27f7564c9a37975e7b37d973dcab":[6,0,4,74],
+"boot_8php.html#a525ca93ff35d3535d1a2b8ba57876afa":[6,0,4,172],
+"boot_8php.html#a52b599cd13e152ebc80d7e4413683195":[6,0,4,47],
+"boot_8php.html#a53e4bdb6f225da55115acb9277f75e53":[6,0,4,91],
+"boot_8php.html#a5542c5c2806ab8bca04bad53d47b5209":[6,0,4,37],
+"boot_8php.html#a56fd673eaa7014150297ce1162502db5":[6,0,4,210],
+"boot_8php.html#a57eee7352714c004d36c26dda74af73e":[6,0,4,250],
+"boot_8php.html#a59717d02602a4babf2a54da8b33d93a5":[6,0,4,41],
+"boot_8php.html#a5a681a672e007cdc22b43345d71f07c6":[6,0,4,314],
+"boot_8php.html#a5ab6181607a090bcdbaa13b15b85aba1":[6,0,4,21],
+"boot_8php.html#a5ae728ac966ea1d3525a19e7fec59434":[6,0,4,70],
+"boot_8php.html#a5b043b7fdcfd4e8c9c3747574afc6caa":[6,0,4,200],
+"boot_8php.html#a5b8484922918946d041e5e0515dbe718":[6,0,4,223],
+"boot_8php.html#a5c3747e0f505f0d5271dc4c54e3feaf4":[6,0,4,88],
+"boot_8php.html#a5df5359090d1f8e898c36d7cf8878ad2":[6,0,4,179],
+"boot_8php.html#a5e322a2a2d0f51924c0b2e874988e640":[6,0,4,224],
+"boot_8php.html#a5fbebdf7a1c0ea8f904dbd9d78c2c06c":[6,0,4,35],
+"boot_8php.html#a623e49c79943f3e7bdb770d021683cf7":[6,0,4,19],
+"boot_8php.html#a6252d8eca67c689d9035ec6da544cf46":[6,0,4,26],
+"boot_8php.html#a62c832a95e38b1fa23e6cef39521b7d5":[6,0,4,84],
+"boot_8php.html#a639f079bf28f7bbb2769fee651d76dd8":[6,0,4,115],
+"boot_8php.html#a64617d4655804de2a3c86501ab4fdbfd":[6,0,4,284],
+"boot_8php.html#a6626f383c3d2d459f731ab8b4f237d16":[6,0,4,185],
+"boot_8php.html#a6788e99021ec8ffb0fa94d651f22a322":[6,0,4,156],
+"boot_8php.html#a68d1d5bc9c7ccb663dc671b48c66df11":[6,0,4,159],
+"boot_8php.html#a68eebe493e6f729ffd1aeda7a4b11155":[6,0,4,51],
+"boot_8php.html#a6969947145a139ec374ce098224d8e81":[6,0,4,162],
+"boot_8php.html#a69aac276ed82e010dc382b16ab4d59e1":[6,0,4,269],
+"boot_8php.html#a6b14a31a8aa9f3452a13383f413bffa2":[6,0,4,254],
+"boot_8php.html#a6b31dd451bc6c37fe7c9c766ff385aaf":[6,0,4,248],
+"boot_8php.html#a6b9909db6a7ec80ec6fdd40ba74014dd":[6,0,4,112],
+"boot_8php.html#a6c5e9e293c8242dcb9bc2c3ea2fee2c9":[6,0,4,102],
+"boot_8php.html#a6df1102664f64b274810db85197c2755":[6,0,4,234],
+"boot_8php.html#a6e57d913634d033b4d5ad72d99fd3e9d":[6,0,4,142],
+"boot_8php.html#a6ee7a72d558d1851bbb9e3cdde377932":[6,0,4,229],
+"boot_8php.html#a7037bcbca223395c06bc67f65024de7a":[6,0,4,113],
+"boot_8php.html#a7176c0f9f1c98421b97735d892cf6252":[6,0,4,268],
+"boot_8php.html#a718a801b0be6cbaef5e519516da12721":[6,0,4,178],
+"boot_8php.html#a719c7f3972d5f9268f37a41c76cd4ef6":[6,0,4,30],
+"boot_8php.html#a7236b2cdcf59f02a42302e893a99013b":[6,0,4,201],
+"boot_8php.html#a749144d8dd9c1366596a0213c277d050":[6,0,4,149],
+"boot_8php.html#a74bf27f7564c9a37975e7b37d973dcab":[6,0,4,81],
"boot_8php.html#a75a90b0eadd0df510f7e63210733634d":[6,0,4,2],
-"boot_8php.html#a75fc600186b13c3b25e661afefb5eac8":[6,0,4,278],
+"boot_8php.html#a75fc600186b13c3b25e661afefb5eac8":[6,0,4,292],
+"boot_8php.html#a76480b213af379c0c6c7fa4e39019ca9":[6,0,4,301],
"boot_8php.html#a768f00b7d66be0daf7ef4eea2e862006":[6,0,4,4],
-"boot_8php.html#a774f0f792ebfec1e774c5a17bb9d5966":[6,0,4,76],
-"boot_8php.html#a781916f83fcc8ff1035649afa45f0292":[6,0,4,89],
-"boot_8php.html#a78849a1bf8ce8d9804b4cbb502e8f383":[6,0,4,245],
-"boot_8php.html#a7a8ba64d089cc0412c59a2eefc6d655c":[6,0,4,119],
-"boot_8php.html#a7aa57438db03834aaa0b468bdce773a6":[6,0,4,67],
-"boot_8php.html#a7af107fab8d62b9a73801713b774ed30":[6,0,4,138],
-"boot_8php.html#a7b8f8ad9dbe82711257d23891ef6b133":[6,0,4,170],
-"boot_8php.html#a7bff2278e68a71e524afd1c7c951e1e3":[6,0,4,71],
-"boot_8php.html#a7c286add8961fd2d79216314cd4aadd8":[6,0,4,111],
-"boot_8php.html#a7c2eb822d50e1554bf5c32861f36342b":[6,0,4,59],
-"boot_8php.html#a7ed4581ab66ebcde97f6b3730856b028":[6,0,4,172],
-"boot_8php.html#a7eeb83e15968f7a6cc5937d493815773":[6,0,4,46],
-"boot_8php.html#a7f3474fec541e261fc8dff47313c4017":[6,0,4,49],
-"boot_8php.html#a7f4264232dbb6c3b41f2617deecb1866":[6,0,4,86],
-"boot_8php.html#a7fc4b291a7cdaa48b38e27344ea183cf":[6,0,4,122],
-"boot_8php.html#a8231d115060d41a9c2a677f2c86f10ed":[6,0,4,209],
-"boot_8php.html#a84057c5bfa1bca5fba8497fe005ee4d8":[6,0,4,53],
-"boot_8php.html#a845891f82bf6edd7fa2d578b66703112":[6,0,4,116],
-"boot_8php.html#a84f48897059bbd4a8738d7ee4cec6688":[6,0,4,57],
-"boot_8php.html#a852d4036a3bed66af1534d014c4ecde2":[6,0,4,221],
-"boot_8php.html#a8663f32171568489dbb2a01dd00371f8":[6,0,4,129],
-"boot_8php.html#a87b0f279f8413c7e4d805c5d85f20d34":[6,0,4,121],
-"boot_8php.html#a882b666adfe21f035a0f8c02806066d6":[6,0,4,269],
-"boot_8php.html#a8892374789fd261eb32a7969d934a14a":[6,0,4,268],
-"boot_8php.html#a8905fde0a5b7882bdc083b20d9b34701":[6,0,4,188],
+"boot_8php.html#a774f0f792ebfec1e774c5a17bb9d5966":[6,0,4,83],
+"boot_8php.html#a781916f83fcc8ff1035649afa45f0292":[6,0,4,96],
+"boot_8php.html#a78849a1bf8ce8d9804b4cbb502e8f383":[6,0,4,259],
+"boot_8php.html#a7a8ba64d089cc0412c59a2eefc6d655c":[6,0,4,128],
+"boot_8php.html#a7aa57438db03834aaa0b468bdce773a6":[6,0,4,74],
+"boot_8php.html#a7af107fab8d62b9a73801713b774ed30":[6,0,4,148],
+"boot_8php.html#a7b511bd93202c43405adbe3b5bcebbfe":[6,0,4,299],
+"boot_8php.html#a7b8f8ad9dbe82711257d23891ef6b133":[6,0,4,180],
+"boot_8php.html#a7bff2278e68a71e524afd1c7c951e1e3":[6,0,4,78],
+"boot_8php.html#a7c286add8961fd2d79216314cd4aadd8":[6,0,4,120],
+"boot_8php.html#a7c2eb822d50e1554bf5c32861f36342b":[6,0,4,66],
+"boot_8php.html#a7e5627b5ca4b7464feb0f08663b19ea1":[6,0,4,307],
+"boot_8php.html#a7ed4581ab66ebcde97f6b3730856b028":[6,0,4,182],
+"boot_8php.html#a7eeb83e15968f7a6cc5937d493815773":[6,0,4,53],
+"boot_8php.html#a7f3474fec541e261fc8dff47313c4017":[6,0,4,56],
+"boot_8php.html#a7f4264232dbb6c3b41f2617deecb1866":[6,0,4,93],
+"boot_8php.html#a7fc4b291a7cdaa48b38e27344ea183cf":[6,0,4,131],
+"boot_8php.html#a8231d115060d41a9c2a677f2c86f10ed":[6,0,4,220],
+"boot_8php.html#a84057c5bfa1bca5fba8497fe005ee4d8":[6,0,4,60],
+"boot_8php.html#a845891f82bf6edd7fa2d578b66703112":[6,0,4,125],
+"boot_8php.html#a84f48897059bbd4a8738d7ee4cec6688":[6,0,4,64],
+"boot_8php.html#a852d4036a3bed66af1534d014c4ecde2":[6,0,4,232],
+"boot_8php.html#a8663f32171568489dbb2a01dd00371f8":[6,0,4,138],
+"boot_8php.html#a87b0f279f8413c7e4d805c5d85f20d34":[6,0,4,130],
+"boot_8php.html#a882b666adfe21f035a0f8c02806066d6":[6,0,4,283],
+"boot_8php.html#a8892374789fd261eb32a7969d934a14a":[6,0,4,282],
+"boot_8php.html#a8905fde0a5b7882bdc083b20d9b34701":[6,0,4,199],
"boot_8php.html#a899d24fd074594ceebbf72e1feff335f":[6,0,4,16],
-"boot_8php.html#a8a60cc38bb567765fd926fef70205f16":[6,0,4,100],
-"boot_8php.html#a8b2af16eaee9e7768a88d0e437877f3b":[6,0,4,218],
-"boot_8php.html#a8bb0395933b5e886f086f6a2fb0bfa55":[6,0,4,240],
-"boot_8php.html#a8c9dce0ef27b35397e29298eb966f7f7":[6,0,4,132],
-"boot_8php.html#a8da836617174eed9fc2ac8054125354b":[6,0,4,126],
-"boot_8php.html#a8df201788c9dd0ca91384e3a14c08bce":[6,0,4,247],
-"boot_8php.html#a8fdcc4ffb365a3267bd02ce8a8d466d6":[6,0,4,286],
-"boot_8php.html#a9255af5ae9c887520091ea04763c1a88":[6,0,4,31],
+"boot_8php.html#a8a60cc38bb567765fd926fef70205f16":[6,0,4,109],
+"boot_8php.html#a8bb0395933b5e886f086f6a2fb0bfa55":[6,0,4,252],
+"boot_8php.html#a8c9a11c47394244cbe18cd75b9726d5f":[6,0,4,104],
+"boot_8php.html#a8c9dce0ef27b35397e29298eb966f7f7":[6,0,4,141],
+"boot_8php.html#a8da836617174eed9fc2ac8054125354b":[6,0,4,135],
+"boot_8php.html#a8df201788c9dd0ca91384e3a14c08bce":[6,0,4,261],
+"boot_8php.html#a8fdcc4ffb365a3267bd02ce8a8d466d6":[6,0,4,311],
+"boot_8php.html#a921c55b9fa59a327a5f0e07fa1ccb2e0":[6,0,4,255],
+"boot_8php.html#a9255af5ae9c887520091ea04763c1a88":[6,0,4,34],
"boot_8php.html#a926cad0b3d8b9d9ee5da1898fc063ba3":[6,0,4,11],
-"boot_8php.html#a93823d15ae07548a4c49de88d325cd26":[6,0,4,153],
-"boot_8php.html#a939de9a99278f4fd7dcd0ee67f243f08":[6,0,4,130],
-"boot_8php.html#a949116d9a295b214293006c060ca4848":[6,0,4,128],
-"boot_8php.html#a9690d73434125ce594a1f5e7c2a4f7c0":[6,0,4,281],
-"boot_8php.html#a96ad56755a21e1361dbd7bf93c9e7ff4":[6,0,4,252],
-"boot_8php.html#a97769915c9f14adc4f8ab1ea2cecfd90":[6,0,4,17],
-"boot_8php.html#a981d46380f9f23c308bac1f9cb00dc5b":[6,0,4,202],
-"boot_8php.html#a99a4a17cb644e7e6826ea07ecaf09777":[6,0,4,241],
-"boot_8php.html#a9c80420e5a063a4a87ce4831f086134d":[6,0,4,48],
+"boot_8php.html#a93823d15ae07548a4c49de88d325cd26":[6,0,4,163],
+"boot_8php.html#a939de9a99278f4fd7dcd0ee67f243f08":[6,0,4,139],
+"boot_8php.html#a949116d9a295b214293006c060ca4848":[6,0,4,137],
+"boot_8php.html#a9690d73434125ce594a1f5e7c2a4f7c0":[6,0,4,295],
+"boot_8php.html#a96ad56755a21e1361dbd7bf93c9e7ff4":[6,0,4,266],
+"boot_8php.html#a97769915c9f14adc4f8ab1ea2cecfd90":[6,0,4,18],
+"boot_8php.html#a981d46380f9f23c308bac1f9cb00dc5b":[6,0,4,213],
+"boot_8php.html#a997614f25e58f8313641e1eb0109fd10":[6,0,4,305],
+"boot_8php.html#a99a4a17cb644e7e6826ea07ecaf09777":[6,0,4,253],
+"boot_8php.html#a9c80420e5a063a4a87ce4831f086134d":[6,0,4,55],
"boot_8php.html#a9cbab4ee728e9a8b4ce952bae643044e":[6,0,4,5],
-"boot_8php.html#a9cc986b4f9dd6558cbb2e25aadbfd964":[6,0,4,233],
-"boot_8php.html#a9d01ef178b72b145016cca1393415bc4":[6,0,4,203],
-"boot_8php.html#a9ea1290e00c6d40684892047f2c778a9":[6,0,4,284],
-"boot_8php.html#a9eeb8989272d5ff804a616898bb13659":[6,0,4,271],
-"boot_8php.html#a9ff652e5cb83cd11cbb0350844e7b28f":[6,0,4,232],
-"boot_8php.html#aa17a4f9c63f5cbc5c06f1066b6aebc42":[6,0,4,191],
-"boot_8php.html#aa1e828bbbcba170265eb2668d8daf42e":[6,0,4,25],
-"boot_8php.html#aa275653b9c87abc7391bb8040c1c2de9":[6,0,4,210],
-"boot_8php.html#aa3425e2de85b08f7041656d3a8502cb6":[6,0,4,43],
-"boot_8php.html#aa3679df31c8dad1b71816b0322d5baff":[6,0,4,160],
+"boot_8php.html#a9cc986b4f9dd6558cbb2e25aadbfd964":[6,0,4,244],
+"boot_8php.html#a9d01ef178b72b145016cca1393415bc4":[6,0,4,214],
+"boot_8php.html#a9ea1290e00c6d40684892047f2c778a9":[6,0,4,309],
+"boot_8php.html#a9eeb8989272d5ff804a616898bb13659":[6,0,4,285],
+"boot_8php.html#a9f8a2938ddd9ee2867e6f8ce77b61b2f":[6,0,4,297],
+"boot_8php.html#a9ff652e5cb83cd11cbb0350844e7b28f":[6,0,4,243],
+"boot_8php.html#aa17a4f9c63f5cbc5c06f1066b6aebc42":[6,0,4,202],
+"boot_8php.html#aa1e828bbbcba170265eb2668d8daf42e":[6,0,4,27],
+"boot_8php.html#aa275653b9c87abc7391bb8040c1c2de9":[6,0,4,221],
+"boot_8php.html#aa3425e2de85b08f7041656d3a8502cb6":[6,0,4,50],
+"boot_8php.html#aa3679df31c8dad1b71816b0322d5baff":[6,0,4,170],
"boot_8php.html#aa4221641e5c21db69fa52c426b9017f5":[6,0,4,9],
-"boot_8php.html#aa544a6c078130d0967a1f4ed8ce0a2d2":[6,0,4,157],
-"boot_8php.html#aa589421267f0c2f0d643f727792cce35":[6,0,4,115],
-"boot_8php.html#aa74438cf71e48e37bf7b440b94243985":[6,0,4,88],
-"boot_8php.html#aa8a2b61e70900139d1ca28e46f1da49d":[6,0,4,97],
-"boot_8php.html#aa9244fc9cc221980c07a20cc534111be":[6,0,4,237],
-"boot_8php.html#aad33b494084f729b6ee3b0bc457718a1":[6,0,4,143],
-"boot_8php.html#aae6c941bde5fd6fce07e51dba7326ead":[6,0,4,220],
-"boot_8php.html#aaf9b76832ee5f85e56466af162ba8a14":[6,0,4,68],
-"boot_8php.html#ab21fb0f3e6b962419955c6fc7f26734f":[6,0,4,194],
-"boot_8php.html#ab28dc518fa90b6f617dd8c564eb4f35f":[6,0,4,120],
-"boot_8php.html#ab2d0e8a9b81ee548ef2ce8e4560da2f6":[6,0,4,222],
-"boot_8php.html#ab346a2ece14993861f3e4206befa94f0":[6,0,4,32],
-"boot_8php.html#ab3920c2f3cd64802c0b7ff625c3b2ea8":[6,0,4,215],
-"boot_8php.html#ab4bc9c50ecc927b92d519e36562b0df0":[6,0,4,244],
-"boot_8php.html#ab4bddb41a0cf407178ec5278b950c393":[6,0,4,187],
-"boot_8php.html#ab51965fabe54dc031e9a0ce1142ee83e":[6,0,4,227],
-"boot_8php.html#ab54b24cc302e1a42a67a49d788b6b764":[6,0,4,114],
-"boot_8php.html#ab55b16ae7fc19fafe5afaedd49163bbf":[6,0,4,145],
-"boot_8php.html#ab5ddbe69d3d03acd06e1fb281488cb78":[6,0,4,55],
-"boot_8php.html#ab724491497ab2618b23a01d5da60aec0":[6,0,4,205],
+"boot_8php.html#aa544a6c078130d0967a1f4ed8ce0a2d2":[6,0,4,167],
+"boot_8php.html#aa561f801e962b67a5c4d0548ea95fd17":[6,0,4,20],
+"boot_8php.html#aa589421267f0c2f0d643f727792cce35":[6,0,4,124],
+"boot_8php.html#aa74438cf71e48e37bf7b440b94243985":[6,0,4,95],
+"boot_8php.html#aa8a2b61e70900139d1ca28e46f1da49d":[6,0,4,106],
+"boot_8php.html#aa9244fc9cc221980c07a20cc534111be":[6,0,4,249],
+"boot_8php.html#aad33b494084f729b6ee3b0bc457718a1":[6,0,4,153],
+"boot_8php.html#aae6c941bde5fd6fce07e51dba7326ead":[6,0,4,231],
+"boot_8php.html#aaf9b76832ee5f85e56466af162ba8a14":[6,0,4,75],
+"boot_8php.html#ab21fb0f3e6b962419955c6fc7f26734f":[6,0,4,205],
+"boot_8php.html#ab28dc518fa90b6f617dd8c564eb4f35f":[6,0,4,129],
+"boot_8php.html#ab2d0e8a9b81ee548ef2ce8e4560da2f6":[6,0,4,233],
+"boot_8php.html#ab346a2ece14993861f3e4206befa94f0":[6,0,4,36],
+"boot_8php.html#ab3920c2f3cd64802c0b7ff625c3b2ea8":[6,0,4,227],
+"boot_8php.html#ab49a5d43ce1150c5af8c750ccb14e15f":[6,0,4,256],
+"boot_8php.html#ab4bc9c50ecc927b92d519e36562b0df0":[6,0,4,258],
+"boot_8php.html#ab4bddb41a0cf407178ec5278b950c393":[6,0,4,198],
+"boot_8php.html#ab51965fabe54dc031e9a0ce1142ee83e":[6,0,4,238],
+"boot_8php.html#ab54b24cc302e1a42a67a49d788b6b764":[6,0,4,123],
+"boot_8php.html#ab55b16ae7fc19fafe5afaedd49163bbf":[6,0,4,155],
+"boot_8php.html#ab5ddbe69d3d03acd06e1fb281488cb78":[6,0,4,62],
+"boot_8php.html#ab724491497ab2618b23a01d5da60aec0":[6,0,4,216],
"boot_8php.html#ab79b8b4555cae20d03f8200666d89d63":[6,0,4,7],
-"boot_8php.html#ab7d65a7e7417825a4db62906bb600729":[6,0,4,99],
-"boot_8php.html#ab9dca53455cd157d3c6ba2bdecdbd22d":[6,0,4,280],
-"boot_8php.html#aba208673515cbb8a55e5fa4a1da99fda":[6,0,4,37],
-"boot_8php.html#abbf5ac24eb8aeedb862f618ee0d21e86":[6,0,4,248],
+"boot_8php.html#ab7d65a7e7417825a4db62906bb600729":[6,0,4,108],
+"boot_8php.html#ab9dca53455cd157d3c6ba2bdecdbd22d":[6,0,4,294],
+"boot_8php.html#aba208673515cbb8a55e5fa4a1da99fda":[6,0,4,43],
+"boot_8php.html#abbf5ac24eb8aeedb862f618ee0d21e86":[6,0,4,262],
"boot_8php.html#abc0a90a1a77f5b668aa7e4b57d1776a7":[6,0,4,3],
-"boot_8php.html#abd7bb40da9cc073297e49736b338ca07":[6,0,4,275],
-"boot_8php.html#abdcdfc873ace4e0902177bad934de0c0":[6,0,4,66],
-"boot_8php.html#abeb4d86e17cefa8584f1244e2183b0e1":[6,0,4,117],
-"boot_8php.html#abedd940e664017c61b48c6efa31d0cb8":[6,0,4,98],
-"boot_8php.html#ac01230c7655e0705b2e99c9bc03c4450":[6,0,4,127],
-"boot_8php.html#ac17fc8a416ea79e9d5cb4dc9a8ff8c5c":[6,0,4,23],
-"boot_8php.html#ac195fc9003298923ea81f144388e24b1":[6,0,4,173],
-"boot_8php.html#ac43182e0d8bae7576a30b603774974f8":[6,0,4,246],
-"boot_8php.html#ac59a18a4838710d6c2de37aed6b21f03":[6,0,4,96],
-"boot_8php.html#ac5e74f899f6e98d8e91b14ba1c08bc08":[6,0,4,26],
-"boot_8php.html#ac608a34f3bc180e7724192e0fd31f9b0":[6,0,4,35],
-"boot_8php.html#ac8400313df2c831653f9036f71ebd86d":[6,0,4,56],
-"boot_8php.html#ac86615ddc0763a00f5311c90e991730c":[6,0,4,282],
-"boot_8php.html#ac890557fedc5b5a3b1d996249b1e1a20":[6,0,4,123],
-"boot_8php.html#ac99fc4d040764eac1736bec6973556fe":[6,0,4,125],
-"boot_8php.html#aca08bc4f1554ba877500f6abcc99e1e8":[6,0,4,201],
-"boot_8php.html#aca47505b8732177f52bb2d647eb2741c":[6,0,4,34],
+"boot_8php.html#abd7bb40da9cc073297e49736b338ca07":[6,0,4,289],
+"boot_8php.html#abdcdfc873ace4e0902177bad934de0c0":[6,0,4,73],
+"boot_8php.html#abeb4d86e17cefa8584f1244e2183b0e1":[6,0,4,126],
+"boot_8php.html#abedd940e664017c61b48c6efa31d0cb8":[6,0,4,107],
+"boot_8php.html#ac01230c7655e0705b2e99c9bc03c4450":[6,0,4,136],
+"boot_8php.html#ac17fc8a416ea79e9d5cb4dc9a8ff8c5c":[6,0,4,25],
+"boot_8php.html#ac195fc9003298923ea81f144388e24b1":[6,0,4,183],
+"boot_8php.html#ac43182e0d8bae7576a30b603774974f8":[6,0,4,260],
+"boot_8php.html#ac4d1c93dabcace711ffb4931204c336b":[6,0,4,146],
+"boot_8php.html#ac59a18a4838710d6c2de37aed6b21f03":[6,0,4,103],
+"boot_8php.html#ac5e74f899f6e98d8e91b14ba1c08bc08":[6,0,4,28],
+"boot_8php.html#ac608a34f3bc180e7724192e0fd31f9b0":[6,0,4,39],
+"boot_8php.html#ac8400313df2c831653f9036f71ebd86d":[6,0,4,63],
+"boot_8php.html#ac86615ddc0763a00f5311c90e991730c":[6,0,4,296],
+"boot_8php.html#ac890557fedc5b5a3b1d996249b1e1a20":[6,0,4,132],
+"boot_8php.html#ac89396b9144391acd08d6d0f9b332220":[6,0,4,298],
+"boot_8php.html#ac99fc4d040764eac1736bec6973556fe":[6,0,4,134],
+"boot_8php.html#aca08bc4f1554ba877500f6abcc99e1e8":[6,0,4,212],
+"boot_8php.html#aca47505b8732177f52bb2d647eb2741c":[6,0,4,38],
"boot_8php.html#aca5e42678e178c6b9034610d66666fd7":[6,0,4,13],
"boot_8php.html#acc4e0c910af066148b810e5fde55fff1":[6,0,4,8],
-"boot_8php.html#acca19aae62e1a6951a856b945de20d67":[6,0,4,176],
-"boot_8php.html#accd6f36cc9f40225cbd720e4d12a7c6e":[6,0,4,283],
-"boot_8php.html#acd877c405b06b348b37b6f7e62a211e9":[6,0,4,234],
-"boot_8php.html#ace6d70ac290397ddd40e561fd0831858":[6,0,4,267],
-"boot_8php.html#ace83842dbeb84f7ed9ac59a9f57a7c32":[6,0,4,208],
-"boot_8php.html#aced60c7285192e80b7c4757e45a7f1e3":[6,0,4,65],
-"boot_8php.html#ad0876e837cf3fad8a26417e315f6e2c8":[6,0,4,156],
-"boot_8php.html#ad11f30a6590d3d77f0c5e1e3909af8f5":[6,0,4,166],
+"boot_8php.html#acca19aae62e1a6951a856b945de20d67":[6,0,4,186],
+"boot_8php.html#accd6f36cc9f40225cbd720e4d12a7c6e":[6,0,4,308],
+"boot_8php.html#acd877c405b06b348b37b6f7e62a211e9":[6,0,4,245],
+"boot_8php.html#ace6d70ac290397ddd40e561fd0831858":[6,0,4,281],
+"boot_8php.html#ace83842dbeb84f7ed9ac59a9f57a7c32":[6,0,4,219],
+"boot_8php.html#aced60c7285192e80b7c4757e45a7f1e3":[6,0,4,72],
+"boot_8php.html#ad0876e837cf3fad8a26417e315f6e2c8":[6,0,4,166],
+"boot_8php.html#ad11f30a6590d3d77f0c5e1e3909af8f5":[6,0,4,176],
"boot_8php.html#ad206598b909e8eb67eb0e0bb5ef69c13":[6,0,4,10],
-"boot_8php.html#ad302cb26b838898d475f57f61b0fcc9f":[6,0,4,72],
-"boot_8php.html#ad34c1547020a305915bcc39707744690":[6,0,4,87],
-"boot_8php.html#ad4c9dc2c8a82e8f52b7404c1655eab44":[6,0,4,29],
-"boot_8php.html#ad789aef3cb95fc1eb36be7c4283d0137":[6,0,4,229],
-"boot_8php.html#ad8887b49bbb02dd30b4eb9f6c7773c63":[6,0,4,256],
-"boot_8php.html#ad88a70ec62e08d590123d3697dfe64d5":[6,0,4,250],
-"boot_8php.html#ada72d88ae39a7e3b45baea201cb49a29":[6,0,4,93],
-"boot_8php.html#adaeb4f590c56326b2dca3b19f31b6272":[6,0,4,140],
-"boot_8php.html#adca48aee78465ae3064ca4432c0d87b5":[6,0,4,259],
-"boot_8php.html#add517a0958ac684792c62142a3877f81":[6,0,4,38],
-"boot_8php.html#adfb2fc7be5a4226c0a8e24131da9d498":[6,0,4,22],
-"boot_8php.html#ae0da3ca0f54d75d22c71e007331f8d06":[6,0,4,105],
-"boot_8php.html#ae37444eaa42705185080ccf3e670cbc2":[6,0,4,266],
-"boot_8php.html#ae3cef7b63e25e7bafea3fcf6b99fad0e":[6,0,4,184],
-"boot_8php.html#ae4861de36017fe399c1839f778bad9f5":[6,0,4,159],
-"boot_8php.html#ae94f7c7c0909629a75aed1c41f10bc95":[6,0,4,192],
-"boot_8php.html#aea392cb26ed617f3a8cde648385b5df0":[6,0,4,279],
-"boot_8php.html#aea7fc57a4d8e9dcb42f2601b0b9b761c":[6,0,4,27],
-"boot_8php.html#aead84fa27d7516b855220fe004964a45":[6,0,4,272],
-"boot_8php.html#aeb1039302affcbe7e8872c01c08c88f8":[6,0,4,50],
-"boot_8php.html#aec36f8fcd4cb14a52934590b3d6666b4":[6,0,4,231],
-"boot_8php.html#aecaa1b6945b317ba8f1daf4af2aed8e6":[6,0,4,260],
-"boot_8php.html#aed0dfb35f7dd00dc9e4f868ea7f7ff53":[6,0,4,167],
-"boot_8php.html#aedfb9501ed408278667995524e0d15cf":[6,0,4,101],
-"boot_8php.html#aee324eca9de4e0fedf01ab5f92e27c67":[6,0,4,179],
-"boot_8php.html#aef4b6c558c68c88c10f13c5a00c20e3d":[6,0,4,193],
-"boot_8php.html#aefba06f1c0842036329033e7567ecf6d":[6,0,4,142],
-"boot_8php.html#aefe573c3c7b0d37fbff264bbae79d673":[6,0,4,112],
-"boot_8php.html#aefecf8599036df7f1b95d6820e0e2fa4":[6,0,4,30],
-"boot_8php.html#af33d1b2e98a1e21af672005525d46dfe":[6,0,4,263],
-"boot_8php.html#af3905ea8f8568d0236db13fca40514e3":[6,0,4,186],
-"boot_8php.html#af3a4271630aabd8be592213f925d6a36":[6,0,4,60],
-"boot_8php.html#af3bdfc20979c16f15bb9c60446a480f9":[6,0,4,51],
-"boot_8php.html#af489d0c3166551b93e63a79ff2c9be35":[6,0,4,147],
-"boot_8php.html#af6937db5f581d006bf4a5c3d9c7e0461":[6,0,4,206],
-"boot_8php.html#af6b3de425e5849c73370a484c44607a3":[6,0,4,165],
-"boot_8php.html#af6f6f6f40139f12fc09ec47373b30919":[6,0,4,90],
-"boot_8php.html#af86c651547aa8f9e549ee40a09455549":[6,0,4,258],
-"boot_8php.html#af8c0cb0744c9a6b5d6d3baafb1f1e71d":[6,0,4,198],
-"boot_8php.html#afaf93b7026f784b113b4f8921745891e":[6,0,4,180],
-"boot_8php.html#afb97615e985a013799839b68b99018d7":[6,0,4,264],
-"boot_8php.html#afbb1fe1b2c8c730ec8e08da93b6512c4":[6,0,4,47],
-"boot_8php.html#afe084c30a1810c10442edb4fbcbc0086":[6,0,4,82],
-"boot_8php.html#afe63ae69ba55299f813766e54df06ede":[6,0,4,151],
+"boot_8php.html#ad302cb26b838898d475f57f61b0fcc9f":[6,0,4,79],
+"boot_8php.html#ad34c1547020a305915bcc39707744690":[6,0,4,94],
+"boot_8php.html#ad4c9dc2c8a82e8f52b7404c1655eab44":[6,0,4,32],
+"boot_8php.html#ad789aef3cb95fc1eb36be7c4283d0137":[6,0,4,240],
+"boot_8php.html#ad8887b49bbb02dd30b4eb9f6c7773c63":[6,0,4,270],
+"boot_8php.html#ad88a70ec62e08d590123d3697dfe64d5":[6,0,4,264],
+"boot_8php.html#ad94aca4c260b8a892397786201dc4664":[6,0,4,300],
+"boot_8php.html#ada72d88ae39a7e3b45baea201cb49a29":[6,0,4,100],
+"boot_8php.html#adaeb4f590c56326b2dca3b19f31b6272":[6,0,4,150],
+"boot_8php.html#adca48aee78465ae3064ca4432c0d87b5":[6,0,4,273],
+"boot_8php.html#add517a0958ac684792c62142a3877f81":[6,0,4,44],
+"boot_8php.html#adfb2fc7be5a4226c0a8e24131da9d498":[6,0,4,24],
+"boot_8php.html#ae09767b94688657978ff9366ec63684b":[6,0,4,306],
+"boot_8php.html#ae0d9527117cd87dcba11986047ae336e":[6,0,4,48],
+"boot_8php.html#ae0da3ca0f54d75d22c71e007331f8d06":[6,0,4,114],
+"boot_8php.html#ae37444eaa42705185080ccf3e670cbc2":[6,0,4,280],
+"boot_8php.html#ae3cef7b63e25e7bafea3fcf6b99fad0e":[6,0,4,195],
+"boot_8php.html#ae4861de36017fe399c1839f778bad9f5":[6,0,4,169],
+"boot_8php.html#ae94f7c7c0909629a75aed1c41f10bc95":[6,0,4,203],
+"boot_8php.html#ae97836b0547953be182a2334c9c91d3c":[6,0,4,40],
+"boot_8php.html#aea392cb26ed617f3a8cde648385b5df0":[6,0,4,293],
+"boot_8php.html#aea7fc57a4d8e9dcb42f2601b0b9b761c":[6,0,4,29],
+"boot_8php.html#aead84fa27d7516b855220fe004964a45":[6,0,4,286],
+"boot_8php.html#aeb1039302affcbe7e8872c01c08c88f8":[6,0,4,57],
+"boot_8php.html#aec36f8fcd4cb14a52934590b3d6666b4":[6,0,4,242],
+"boot_8php.html#aecaa1b6945b317ba8f1daf4af2aed8e6":[6,0,4,274],
+"boot_8php.html#aed0dfb35f7dd00dc9e4f868ea7f7ff53":[6,0,4,177],
+"boot_8php.html#aedfb9501ed408278667995524e0d15cf":[6,0,4,110],
+"boot_8php.html#aee324eca9de4e0fedf01ab5f92e27c67":[6,0,4,189],
+"boot_8php.html#aef4b6c558c68c88c10f13c5a00c20e3d":[6,0,4,204],
+"boot_8php.html#aefba06f1c0842036329033e7567ecf6d":[6,0,4,152],
+"boot_8php.html#aefe573c3c7b0d37fbff264bbae79d673":[6,0,4,121],
+"boot_8php.html#aefecf8599036df7f1b95d6820e0e2fa4":[6,0,4,33],
+"boot_8php.html#af33d1b2e98a1e21af672005525d46dfe":[6,0,4,277],
+"boot_8php.html#af3905ea8f8568d0236db13fca40514e3":[6,0,4,197],
+"boot_8php.html#af3a4271630aabd8be592213f925d6a36":[6,0,4,67],
+"boot_8php.html#af3bdfc20979c16f15bb9c60446a480f9":[6,0,4,58],
+"boot_8php.html#af3ff14985bffbd951a6ea356b7ec3007":[6,0,4,247],
+"boot_8php.html#af489d0c3166551b93e63a79ff2c9be35":[6,0,4,157],
+"boot_8php.html#af6937db5f581d006bf4a5c3d9c7e0461":[6,0,4,217],
+"boot_8php.html#af6b3de425e5849c73370a484c44607a3":[6,0,4,175],
+"boot_8php.html#af6f6f6f40139f12fc09ec47373b30919":[6,0,4,97],
+"boot_8php.html#af86c651547aa8f9e549ee40a09455549":[6,0,4,272],
+"boot_8php.html#af8c0cb0744c9a6b5d6d3baafb1f1e71d":[6,0,4,209],
+"boot_8php.html#afaf93b7026f784b113b4f8921745891e":[6,0,4,190],
+"boot_8php.html#afb97615e985a013799839b68b99018d7":[6,0,4,278],
+"boot_8php.html#afbb1fe1b2c8c730ec8e08da93b6512c4":[6,0,4,54],
+"boot_8php.html#afbb21ecccac9819aa65397e816868a5f":[6,0,4,225],
+"boot_8php.html#afe084c30a1810c10442edb4fbcbc0086":[6,0,4,89],
+"boot_8php.html#afe63ae69ba55299f813766e54df06ede":[6,0,4,161],
"boot_8php.html#afe88b920aa285982edb817a0dd44eb37":[6,0,4,14],
-"boot_8php.html#afef254290febac854c85fc698d9483a6":[6,0,4,289],
-"boot_8php.html#aff210e8403dd72368522b17fb6e5d4e7":[6,0,4,225],
+"boot_8php.html#afef254290febac854c85fc698d9483a6":[6,0,4,315],
+"boot_8php.html#aff210e8403dd72368522b17fb6e5d4e7":[6,0,4,236],
"boxy_8php.html":[6,0,3,1,3,1,0],
-"cache_8php.html":[6,0,0,13],
-"channel_8php.html":[6,0,1,12],
-"channel_8php.html#a9c6a6179e0e626398ebecc6151905ef1":[6,0,1,12,0],
-"channel_8php.html#ac7c8c7845741baadf87fae6bc279f3dc":[6,0,1,12,1],
-"chanview_8php.html":[6,0,1,13],
-"chanview_8php.html#a4192c6da888c8c1165851acf9ad4cb8b":[6,0,1,13,0],
-"chatsvc_8php.html":[6,0,1,15],
-"chatsvc_8php.html#a28d248b056fa47452e28ed01130e9116":[6,0,1,15,1],
-"chatsvc_8php.html#a7032784215e1f6747cf385a6598770f9":[6,0,1,15,0],
-"chatsvc_8php.html#a7c9a9b9c24a2b02eed8efd6b09632d03":[6,0,1,15,2],
+"cache_8php.html":[6,0,0,15],
+"channel_8php.html":[6,0,1,11],
+"channel_8php.html#a9c6a6179e0e626398ebecc6151905ef1":[6,0,1,11,0],
+"channel_8php.html#ac7c8c7845741baadf87fae6bc279f3dc":[6,0,1,11,1],
+"chanview_8php.html":[6,0,1,12],
+"chanview_8php.html#a4192c6da888c8c1165851acf9ad4cb8b":[6,0,1,12,0],
+"chatsvc_8php.html":[6,0,1,14],
+"chatsvc_8php.html#a28d248b056fa47452e28ed01130e9116":[6,0,1,14,1],
+"chatsvc_8php.html#a7032784215e1f6747cf385a6598770f9":[6,0,1,14,0],
+"chatsvc_8php.html#a7c9a9b9c24a2b02eed8efd6b09632d03":[6,0,1,14,2],
"choklet_8php.html":[6,0,3,0,0],
-"classApp.html":[5,0,5],
-"classApp.html#a037049cba88dfc6ff94f4b5b779e3fd3":[5,0,5,56],
-"classApp.html#a050b0696118da47e8b30859ad1a2c149":[5,0,5,40],
-"classApp.html#a084e03c77686d8c13390fef3f7428a2b":[5,0,5,5],
-"classApp.html#a08bc87aff64f39fbc084e9d6545cee4d":[5,0,5,2],
-"classApp.html#a08c24d6a6fc52fcc784b0f765f13b820":[5,0,5,75],
-"classApp.html#a08f0537964d98958d218066364cff785":[5,0,5,1],
-"classApp.html#a0ce85be198e46570366cb3344f3c55b8":[5,0,5,50],
-"classApp.html#a11e24b3ed9b33ffee7dd41d110b4366d":[5,0,5,60],
-"classApp.html#a123b903dfe5d3488cc68db3471d36fd2":[5,0,5,30],
-"classApp.html#a13710907ef62554a0b4dd8a5eaa2eb11":[5,0,5,79],
-"classApp.html#a14bd4b1c29f3aff371fe5d4cb11aeea3":[5,0,5,32],
-"classApp.html#a1936f2afce0dc0d1bbed15ae1f2ee81a":[5,0,5,73],
-"classApp.html#a1a297e70b3667b83f4460aa7ed9f5d6f":[5,0,5,61],
-"classApp.html#a1ad3bb1b68439b3b7cbe630918e618d2":[5,0,5,8],
-"classApp.html#a20d1890cc16b22ba79eeb0cbf2f719f7":[5,0,5,29],
-"classApp.html#a230e975296cf164da2fee35ef720964f":[5,0,5,33],
-"classApp.html#a244b2d53b21be269aad2269d23192f95":[5,0,5,77],
-"classApp.html#a256360c9184fed6d7556e0bc0a835d7f":[5,0,5,48],
-"classApp.html#a2e82da4aecfc2017a8d1d332ca501f9f":[5,0,5,76],
-"classApp.html#a2eb832a8577dee7d40b93abdf6d1d35a":[5,0,5,12],
-"classApp.html#a330410a288f3393d53772f5e98f857ea":[5,0,5,51],
-"classApp.html#a33a8e90b60ec4438f6fbf299d0f6839c":[5,0,5,66],
-"classApp.html#a344d2b7dc2f276648d521aee4da1731c":[5,0,5,23],
-"classApp.html#a3694aa1907aa103a2adbc71f926f0fa0":[5,0,5,55],
-"classApp.html#a3d84af5e42082098672531cd1a618853":[5,0,5,22],
-"classApp.html#a4659785d13e4bac0bed50dbb1b0d4299":[5,0,5,6],
-"classApp.html#a4776d9322edea17fae56afa5d01a323e":[5,0,5,24],
-"classApp.html#a4833bee2eae4ad1691a04fa19e11a766":[5,0,5,90],
-"classApp.html#a487332f8de40414ca1a54a4265570b70":[5,0,5,85],
-"classApp.html#a495ec082c2719314e536070ca1ce073d":[5,0,5,42],
-"classApp.html#a4b67935096f66d1f14b657399a8461ac":[5,0,5,68],
-"classApp.html#a4bdd7bfed62f50515fce652127bf481b":[5,0,5,25],
-"classApp.html#a4c7cfc62d39508086cf300dc2e39c4df":[5,0,5,59],
-"classApp.html#a4ffe529fb14389f7fedf5fdc5f722e7f":[5,0,5,67],
-"classApp.html#a5293a8543ba338dcf38cd4ff3bc5d4be":[5,0,5,9],
-"classApp.html#a557d7b779d8259027f4724ebf7b248dc":[5,0,5,28],
-"classApp.html#a560189f048d3db2f526841963cc43e97":[5,0,5,26],
-"classApp.html#a56b1a432c96aef8b1971f779c9d93c8c":[5,0,5,88],
-"classApp.html#a576ecb1c5b4a283221e6f2f0ec248251":[5,0,5,58],
-"classApp.html#a57d041fcc003d08c127dfa99a02bc192":[5,0,5,74],
-"classApp.html#a58ac598544892ff7c32890291b72635e":[5,0,5,62],
-"classApp.html#a59dd4b665c70e7dbd80682c014ff7145":[5,0,5,63],
-"classApp.html#a5c63eabdc7fdd8b6e3348980ec16a3ad":[5,0,5,3],
-"classApp.html#a5cfc098c061b7d765add58fd2ca97445":[5,0,5,39],
-"classApp.html#a5f64620473a9727a48ebe9cf6f335a98":[5,0,5,80],
-"classApp.html#a604d659d6977a99de42a160343e5289a":[5,0,5,4],
-"classApp.html#a61ca6e3af82071ea25ff2fd5dbcddae2":[5,0,5,45],
-"classApp.html#a622eace13f8fc9f4b5672a68e2bc4396":[5,0,5,7],
-"classApp.html#a6844aedad10e201b8c3d80cfc9e876d3":[5,0,5,81],
-"classApp.html#a6859a4848a5c0049b4134cc4b34228b6":[5,0,5,82],
-"classApp.html#a6bcb19cdc4907077da72864686d5a780":[5,0,5,69],
-"classApp.html#a6e4f0fbfa3cf6c11baebe22a03db6165":[5,0,5,65],
-"classApp.html#a6f55d087e1ff4710132c1b0863faa2ee":[5,0,5,47],
-"classApp.html#a764cc6cd7578132c21d2b4545de9301c":[5,0,5,83],
-"classApp.html#a78788f6e9d8b713b138f81e457c5cd08":[5,0,5,20],
-"classApp.html#a7954862f44f606b0ff83d4c74d15e792":[5,0,5,57],
-"classApp.html#a871898becd0697d778f36d9336253ae8":[5,0,5,14],
-"classApp.html#a8863703a0305eaa45eb970dbd2046291":[5,0,5,16],
-"classApp.html#a89e9feb2bfb5253883a9720beaffe876":[5,0,5,21],
-"classApp.html#a91fd3c8b89016113b05f3be24805ccff":[5,0,5,87],
-"classApp.html#a94a1ed2dc493c58612d17035b74ae736":[5,0,5,31],
-"classApp.html#a98ef4cfd36693a3457c879b76bc6d694":[5,0,5,44]
+"classApp.html":[5,0,6],
+"classApp.html#a037049cba88dfc6ff94f4b5b779e3fd3":[5,0,6,51],
+"classApp.html#a050b0696118da47e8b30859ad1a2c149":[5,0,6,38],
+"classApp.html#a084e03c77686d8c13390fef3f7428a2b":[5,0,6,5],
+"classApp.html#a08bc87aff64f39fbc084e9d6545cee4d":[5,0,6,2],
+"classApp.html#a08c24d6a6fc52fcc784b0f765f13b820":[5,0,6,71],
+"classApp.html#a08f0537964d98958d218066364cff785":[5,0,6,1],
+"classApp.html#a0ce85be198e46570366cb3344f3c55b8":[5,0,6,46],
+"classApp.html#a11e24b3ed9b33ffee7dd41d110b4366d":[5,0,6,56],
+"classApp.html#a123b903dfe5d3488cc68db3471d36fd2":[5,0,6,30],
+"classApp.html#a13710907ef62554a0b4dd8a5eaa2eb11":[5,0,6,75],
+"classApp.html#a14bd4b1c29f3aff371fe5d4cb11aeea3":[5,0,6,32],
+"classApp.html#a1936f2afce0dc0d1bbed15ae1f2ee81a":[5,0,6,69],
+"classApp.html#a1a297e70b3667b83f4460aa7ed9f5d6f":[5,0,6,57],
+"classApp.html#a1ad3bb1b68439b3b7cbe630918e618d2":[5,0,6,8],
+"classApp.html#a1f60d19d47021629faac7a0a6d917e94":[5,0,6,55],
+"classApp.html#a20d1890cc16b22ba79eeb0cbf2f719f7":[5,0,6,29],
+"classApp.html#a230e975296cf164da2fee35ef720964f":[5,0,6,33],
+"classApp.html#a244b2d53b21be269aad2269d23192f95":[5,0,6,73],
+"classApp.html#a2e82da4aecfc2017a8d1d332ca501f9f":[5,0,6,72],
+"classApp.html#a2eb832a8577dee7d40b93abdf6d1d35a":[5,0,6,12]
};
diff --git a/doc/html/navtreeindex2.js b/doc/html/navtreeindex2.js
index 7d6ee6ce6..8b10dff80 100644
--- a/doc/html/navtreeindex2.js
+++ b/doc/html/navtreeindex2.js
@@ -1,253 +1,253 @@
var NAVTREEINDEX2 =
{
-"classApp.html#a9bf62f8e39585c0aa48fcffc3bf3484d":[5,0,5,64],
-"classApp.html#aa5a87c46ab3fee21362c466bf78042ef":[5,0,5,91],
-"classApp.html#aab23c59172310fd30f2d60dc039d3eea":[5,0,5,13],
-"classApp.html#aab4a685d15a363bb1d7edbbc20bfb94e":[5,0,5,38],
-"classApp.html#ab35b01a366a2ea95725e97af278f87ab":[5,0,5,86],
-"classApp.html#ab3da757abe5cb45bf88f07cc51a73b58":[5,0,5,35],
-"classApp.html#ab47de68fa39806d1fb0976407e188b77":[5,0,5,71],
-"classApp.html#abe0e4fa91097f7a6588e1213a834121c":[5,0,5,37],
-"classApp.html#abea5a4f77dcd53c928dc4eed86616637":[5,0,5,19],
-"classApp.html#abf46a653d8499e7c253cc1be894a6d83":[5,0,5,17],
-"classApp.html#ac1a8b2cd40609b231a560201a08852ba":[5,0,5,52],
-"classApp.html#ac1d80a14492acc932715d54567d8a589":[5,0,5,46],
-"classApp.html#ac6e6b1c7d6df408580ff79977fcfa656":[5,0,5,54],
-"classApp.html#ac73dc90e4764497e2f1b7e6612c8fb88":[5,0,5,43],
-"classApp.html#acad5896b7a79ae31433ad8f89606c728":[5,0,5,70],
-"classApp.html#acb27e607fe4c82603444676e25c36b70":[5,0,5,11],
-"classApp.html#ad082d63acc078e5bf23825a03bdd6a76":[5,0,5,78],
-"classApp.html#ad1c8eb91a6fd470b94f34b7fdad3a2d0":[5,0,5,41],
-"classApp.html#ad5175536561021548ae8188e24c7b80c":[5,0,5,36],
-"classApp.html#adb060d5c7f35a521ec7ec0effbe08097":[5,0,5,27],
-"classApp.html#adb5a4bb657881e553978ff390babd01f":[5,0,5,10],
-"classApp.html#adf2aaf95b062736a6fd5fc70fadf80e8":[5,0,5,89],
-"classApp.html#ae3f47830543d0d902f66913def8db66b":[5,0,5,53],
-"classApp.html#ae9f96338f32187d308b67b980eea0008":[5,0,5,72],
-"classApp.html#aeb1fe1c8ad9aa639909bd183ce578536":[5,0,5,18],
-"classApp.html#aeca29fd4f7192ca07369b3c598c36e67":[5,0,5,84],
-"classApp.html#af17df107f2216ddf5ad2a7e0f2ba2166":[5,0,5,15],
-"classApp.html#af5007c42a693afd9c4899c243b2e1363":[5,0,5,49],
-"classApp.html#af58db526040829b1c8bd95561b329262":[5,0,5,34],
-"classApp.html#af6d39f63fb7116bbeb04e51696f99474":[5,0,5,0],
-"classBaseObject.html":[5,0,6],
-"classBaseObject.html#ac43f10e69ce80c78e4870636250fc8a2":[5,0,6,0],
-"classCache.html":[5,0,7],
-"classConversation.html":[5,0,8],
-"classConversation.html#a2a96b7a6573ae53db861624659e831cb":[5,0,8,6],
-"classConversation.html#a2f12724ef0244e9049fe1bb9641b516d":[5,0,8,19],
-"classConversation.html#a41f4a549e6a99f98935c4742addd22c8":[5,0,8,20],
-"classConversation.html#a4aab60bb39fa6761b6cacdc8d9da2901":[5,0,8,2],
-"classConversation.html#a4cff75d8c46b517e7133e4d0da6fc1c8":[5,0,8,7],
-"classConversation.html#a5879199008b96bee7550b576d614e1c1":[5,0,8,10],
-"classConversation.html#a5b6adbb2fe24f0f53d6c22660dff91b2":[5,0,8,17],
-"classConversation.html#a5effe8ad3007e01333df44b81432b813":[5,0,8,5],
-"classConversation.html#a66f121ca4026246f86a732e5faa0682c":[5,0,8,11],
-"classConversation.html#a8335cdd43f1836e3c255638e61a09e16":[5,0,8,1],
-"classConversation.html#a8748445aa26047ebed5141f3c3cbc244":[5,0,8,16],
-"classConversation.html#a87a0d704d5f2b1a008cc2e9ce06a1bcd":[5,0,8,3],
-"classConversation.html#a8898bddc1e8990e81dab9a13a532cc93":[5,0,8,12],
-"classConversation.html#a8b47c92b69459d461ea3cc9aae9597a3":[5,0,8,8],
-"classConversation.html#aa95c1a62af38bdfba7add9549bec083b":[5,0,8,13],
-"classConversation.html#adf25ce023b69a166c63c6e84e02c136a":[5,0,8,9],
-"classConversation.html#ae3d4190142e12b57051f11f2911f77a0":[5,0,8,4],
-"classConversation.html#ae81221251307e315f566a11f921ce0a9":[5,0,8,21],
-"classConversation.html#ae9937f9e0f3d927acc2bed46cc72e9ae":[5,0,8,18],
-"classConversation.html#af84ea6ccd72214c9bb4c504461cc8b09":[5,0,8,0],
-"classConversation.html#afb03d1648dbfafe62caa1e30f32f2b1a":[5,0,8,15],
-"classConversation.html#afd4965d22a6e4bfea2f35e931b3273c6":[5,0,8,14],
-"classFKOAuth1.html":[5,0,13],
-"classFKOAuth1.html#a2b1dac2ed31fc6ef84668afdda8b263f":[5,0,13,1],
-"classFKOAuth1.html#a2f1276872329a6f0b704ccda1a4b9fa6":[5,0,13,0],
-"classFKOAuthDataStore.html":[5,0,14],
-"classFKOAuthDataStore.html#a1148d47b546350bf440bdd92792c5df1":[5,0,14,1],
-"classFKOAuthDataStore.html#a431b44d70e3da6a8256ab38f710e3050":[5,0,14,5],
-"classFKOAuthDataStore.html#a434882f03e3cdb171ed89e09e337e934":[5,0,14,4],
-"classFKOAuthDataStore.html#a4edfe2e77ecd2e16ff6b5eb516ed3599":[5,0,14,2],
-"classFKOAuthDataStore.html#a96f76387c3a93b0abe27a98013804bab":[5,0,14,3],
-"classFKOAuthDataStore.html#aa1a268be88ad3979bb4cc35bbb4dc819":[5,0,14,0],
-"classFriendicaSmarty.html":[5,0,15],
-"classFriendicaSmarty.html#a33fabbd4d6eef869df496adf357ae690":[5,0,15,2],
-"classFriendicaSmarty.html#a6a4d4281d6fa9be1d37a97b188ffe8c9":[5,0,15,1],
-"classFriendicaSmarty.html#af12091b920b95eeef1218cbc48066ca6":[5,0,15,0],
-"classFriendicaSmartyEngine.html":[5,0,16],
-"classFriendicaSmartyEngine.html#a35ec0ee828c36640ea25296bcb84a118":[5,0,16,1],
-"classFriendicaSmartyEngine.html#aab5994077fc3a64222e41b28e2bd8d88":[5,0,16,2],
-"classFriendicaSmartyEngine.html#ab7c305bd8c386c2944e4dc9136cea5b6":[5,0,16,0],
-"classFriendicaSmartyEngine.html#ad62f1181d2f02b54b46731ad2bd46db2":[5,0,16,3],
-"classItem.html":[5,0,17],
-"classItem.html#a007424e3e3171dcfb4312a02161da6cd":[5,0,17,34],
-"classItem.html#a078f95b4134ce3a1df344cf8d386f986":[5,0,17,37],
-"classItem.html#a0c301aaed2b7d682728d18db3a22afa3":[5,0,17,8],
-"classItem.html#a1a1e42877e6ac7af50286142ceb483d2":[5,0,17,39],
-"classItem.html#a1cb6aa8abdf7ea7daca647e40c8ea3a2":[5,0,17,42],
-"classItem.html#a248f45871ecfe82a08d1d4c0769b2eb2":[5,0,17,0],
-"classItem.html#a2ce70ef63f9f4d86a09c351678806925":[5,0,17,24],
-"classItem.html#a3ee7667c2ec6cd7657328e27848c0bdf":[5,0,17,6],
-"classItem.html#a428f448f89a8629055ea3294eb942aea":[5,0,17,16],
-"classItem.html#a4a123ae98987c1e30ecb15c4edf5a3b8":[5,0,17,44],
-"classItem.html#a4b92e3a9d6212c553aa2661489bd95d8":[5,0,17,15],
-"classItem.html#a5b2fafdca55aefeaa08993a5a60529f0":[5,0,17,20],
-"classItem.html#a5b561415861f5b89b0733aacfe0428d1":[5,0,17,40],
-"classItem.html#a5cfa6cf964f433a917a81cab079ff9d8":[5,0,17,43],
-"classItem.html#a5d29ddecc073151a65a8e2ea2f6e4189":[5,0,17,45],
-"classItem.html#a632185dd25c5caf277067c76230a4320":[5,0,17,4],
-"classItem.html#a67892aa23d19f4431bb2e5f43c74000e":[5,0,17,12],
-"classItem.html#a7f7bc059de377319282cb4ef4a828480":[5,0,17,41],
-"classItem.html#a80dcd0fb7673776c0967839d429c2a0f":[5,0,17,31],
-"classItem.html#a80dcd9d0f548c3ad550abe7e6981fb51":[5,0,17,1],
-"classItem.html#a904421c7a427411bb2ab473bca872f63":[5,0,17,7],
-"classItem.html#a90743c8348b13213275c223bb9333aa0":[5,0,17,32],
-"classItem.html#a9594df6014b0b6f45364ea7a34510130":[5,0,17,36],
-"classItem.html#a97c7feeea7f26a73176cb19faa455e12":[5,0,17,22],
-"classItem.html#a9890ff72662d5bba301d1f2dd8aec9d7":[5,0,17,28],
-"classItem.html#a9f2d219da712390f59012fc32a342074":[5,0,17,14],
-"classItem.html#aa0ee775ec94abccec6c798428835d001":[5,0,17,5],
-"classItem.html#aa1bd19fc8b5577078530265a7bf64123":[5,0,17,26],
-"classItem.html#aa2c221231ad0fc3720ccc1f00f0c6304":[5,0,17,33],
-"classItem.html#aa452b5bcd8dea12119b09212c615cb41":[5,0,17,25],
-"classItem.html#aa49e40f961dff66da32c5ae110e32993":[5,0,17,21],
-"classItem.html#aa541bc4290e51bfd688d6921bebabc73":[5,0,17,13],
-"classItem.html#aa8b1bbc4236890694635295e46d7fd72":[5,0,17,27],
-"classItem.html#aabf87ded59c25b5fe2b2296678e70509":[5,0,17,23],
-"classItem.html#aba23a0a9d89e316d2b343cc46d695d91":[5,0,17,17],
-"classItem.html#abcdb0ea9bcd1576bc99bba9b8f700bb8":[5,0,17,2],
-"classItem.html#ac04525a8be24c12b0a2ae4ca1ba4b967":[5,0,17,19],
-"classItem.html#ac0f27e58532612f6e7a54c8a621b9b92":[5,0,17,11],
-"classItem.html#ac6f1c96cc82a0dfb7e881fc70309ea3c":[5,0,17,10],
-"classItem.html#aca1e66988ed00cd627b2a359b72cd0ae":[5,0,17,3],
-"classItem.html#acc32426c0f465391be8a99ad810c7b8e":[5,0,17,30],
-"classItem.html#ad3638f93065693c1f69eb349feb1b7aa":[5,0,17,9],
-"classItem.html#ad5dcbe0b94cb2d5719bc5b6bd8ad60c8":[5,0,17,18],
-"classItem.html#aec24e233f9098f902b1e57e60dcb2019":[5,0,17,35],
-"classItem.html#af1b73df9b7c4b927e26b7e243b491f42":[5,0,17,29],
-"classItem.html#afa54851df82962c7c42dea3cc9f5c92c":[5,0,17,38],
-"classProtoDriver.html":[5,0,22],
-"classProtoDriver.html#a1593f3abae050edbd9304f4f8bc4894a":[5,0,22,0],
-"classProtoDriver.html#a2ba1758f0f9e3564580b6ff85292804d":[5,0,22,2],
-"classProtoDriver.html#a34b97ca5ef2165f2e16eb2fe59ff6c67":[5,0,22,1],
-"classProtoDriver.html#a64a3868cffe27d601d55f69a2ecc4337":[5,0,22,6],
-"classProtoDriver.html#a85e9063f6d0c304410cd246f7900ea1b":[5,0,22,4],
-"classProtoDriver.html#ae5b44739f84c10d00a9b65adf3785181":[5,0,22,5],
-"classProtoDriver.html#af66171aa7dab9b62cee915cb4f1abe1b":[5,0,22,3],
-"classRedBasicAuth.html":[5,0,23],
-"classRedBasicAuth.html#a072e8244a9a7f191b32d3db5ac94f857":[5,0,23,2],
-"classRedBasicAuth.html#a09c1488a0b290f5a54dc15180c5690d7":[5,0,23,9],
-"classRedBasicAuth.html#a2cc8b1eac9c5a799bfb53ea7f287f3f0":[5,0,23,0],
-"classRedBasicAuth.html#a2d0246ed446fd5e55c17938b4ce6ac47":[5,0,23,11],
-"classRedBasicAuth.html#a2dab393650d1573e3515969a153e8354":[5,0,23,6],
-"classRedBasicAuth.html#a358ddad4abb5aa8c1382cf49a907adbc":[5,0,23,1],
-"classRedBasicAuth.html#a438ab125b6ef46581947e35d49cdebac":[5,0,23,7],
-"classRedBasicAuth.html#a8d09b8d784cc810a0b3be580d05106a7":[5,0,23,10],
-"classRedBasicAuth.html#a8dfd9a0953f8884723b421b7c1acf79b":[5,0,23,3],
-"classRedBasicAuth.html#aa75dc43b59adc98e38a98517d3fd35d1":[5,0,23,8],
-"classRedBasicAuth.html#ad5a3ea4dc4783b242d9dc6e76478b6ef":[5,0,23,5],
-"classRedBasicAuth.html#af14337f1baad407f8a85d48205c0f30e":[5,0,23,4],
-"classRedBrowser.html":[5,0,24],
-"classRedBrowser.html#a1f7daf50bb9bfcde7345b3b1908dbd7e":[5,0,24,3],
-"classRedBrowser.html#a20d81230645ddca08a88bfd9ea9f88f1":[5,0,24,2],
-"classRedBrowser.html#a40fdbb9d9fe6c1243bbf135dd5b0a06f":[5,0,24,6],
-"classRedBrowser.html#a4b76be9ccef0262cf78fffb4129eda93":[5,0,24,0],
-"classRedBrowser.html#a7f6bf0bda07833f4c647557bd172e349":[5,0,24,5],
-"classRedBrowser.html#a87529b4988a7777b49616f5c0a1c55d3":[5,0,24,4],
-"classRedBrowser.html#ab6d6d1e2a67e06b344a4cede1bd00b35":[5,0,24,8],
-"classRedBrowser.html#ad3418b8ccad42a1ef4ad0079e15b2e64":[5,0,24,7],
-"classRedBrowser.html#ae4edd4e10c709e2624c1aeb47b0440c5":[5,0,24,1],
-"classRedDirectory.html":[5,0,25],
-"classRedDirectory.html#a0f113244cd85c17848df991001d024f4":[5,0,25,13],
-"classRedDirectory.html#a11376aed1963b4471eb1592c13c63976":[5,0,25,10],
-"classRedDirectory.html#a1e35e3cd31d2a15250655e4cafdea180":[5,0,25,0],
-"classRedDirectory.html#a2d12d99d38a6a75fc9a830b2f7fc0bf0":[5,0,25,3],
-"classRedDirectory.html#a2f7a574f2115f099d6dd103d5b252375":[5,0,25,9],
-"classRedDirectory.html#a3c148c07ad909985125aa4926d8d0021":[5,0,25,15],
-"classRedDirectory.html#a5e3fc08b2bf9f61cea4d2ccae0495bec":[5,0,25,1],
-"classRedDirectory.html#a6c7e08199abc24e6eeb94a4037ef8bfc":[5,0,25,7],
-"classRedDirectory.html#a70173d4458572d95e586b2037d2fd2f4":[5,0,25,6],
-"classRedDirectory.html#a9616af16cd19a18a6afebebcc2881c44":[5,0,25,12],
-"classRedDirectory.html#a986936910f0216887a25e28916c166c7":[5,0,25,2],
-"classRedDirectory.html#aa10254abf177bb2a0e4a88495725e09b":[5,0,25,14],
-"classRedDirectory.html#aa42d3065f6f065b17db87146a7cb031a":[5,0,25,5],
-"classRedDirectory.html#aaa20f0f44da23781917af8170c0a2569":[5,0,25,4],
-"classRedDirectory.html#acb32b8df27538c57772824a745e751d7":[5,0,25,16],
-"classRedDirectory.html#ad87c514a307ec97ba0f1372e9bcfa6a4":[5,0,25,17],
-"classRedDirectory.html#adc48035679e52c55d9881f83de535553":[5,0,25,11],
-"classRedDirectory.html#af6e4475dbd5abcdede00d20b8d388583":[5,0,25,8],
-"classRedFile.html":[5,0,26],
-"classRedFile.html#a0c961c5f49544d2502420361fa526437":[5,0,26,6],
-"classRedFile.html#a26416827eb68554d033d1e2e5cc6dd3b":[5,0,26,3],
-"classRedFile.html#a2ff12032b45538353eded9809d3b7550":[5,0,26,11],
-"classRedFile.html#a38a82bfc1b30028ea6ac75923e90fa25":[5,0,26,9],
-"classRedFile.html#a41562a28007789bbe7fe06d6a20eef47":[5,0,26,5],
-"classRedFile.html#a41a49a583eb276b75626fcf97f4a699c":[5,0,26,8],
-"classRedFile.html#a4b5d0e33f919c6c175b30a55de6263f2":[5,0,26,10],
-"classRedFile.html#a7c868dfcef6c70cd0e24cf3caa2c3535":[5,0,26,2],
-"classRedFile.html#a9a67bdb34c9db6ce144b3f371148b183":[5,0,26,0],
-"classRedFile.html#acb1edbe1848fab05347746fa1ea09d8f":[5,0,26,7],
-"classRedFile.html#acc48c05cd5a70951cb3c615ad84f03ba":[5,0,26,12],
-"classRedFile.html#ae96d5caa2db7a461c57b24380fa87e28":[5,0,26,4],
-"classRedFile.html#aef71c9eaac7052be7dc8602eb12171e7":[5,0,26,1],
-"classTemplate.html":[5,0,27],
-"classTemplate.html#a07737733f6949bdedea1e3d301b2ab7b":[5,0,27,13],
-"classTemplate.html#a285b5b2007dbbf733476273df3fed4ef":[5,0,27,12],
-"classTemplate.html#a317d535946dc065c35dd5cd38380e6c6":[5,0,27,22],
-"classTemplate.html#a35d599c9b53a02e2fe2232e5b7ed5da7":[5,0,27,2],
-"classTemplate.html#a37c15f6d1ade500943629f27a62808b7":[5,0,27,3],
-"classTemplate.html#a4b933954086d9e01a1804b0b1c6ee93e":[5,0,27,6],
-"classTemplate.html#a4e86b566c3f728e95ce5db1b33665c10":[5,0,27,21],
-"classTemplate.html#a6f0efc256688c36110180b501067ff11":[5,0,27,23],
-"classTemplate.html#a8469ab2988b6be2681516dc4b4e07d38":[5,0,27,15],
-"classTemplate.html#a86e8fd27955ef10cadfd86f3fca70677":[5,0,27,9],
-"classTemplate.html#a8f4d17e49f42b876a97364c13fb572d1":[5,0,27,19],
-"classTemplate.html#aa6a087e0b7b887dd1c98c9e0ecbd3b29":[5,0,27,4],
-"classTemplate.html#aa6f9bd7a8f7512efcf90e8d376fe05ee":[5,0,27,10],
-"classTemplate.html#aac9a4638f11271e1b1dcc9f247242718":[5,0,27,20],
-"classTemplate.html#aae9c4d761ea1298e745e8052d7910194":[5,0,27,1],
-"classTemplate.html#abbc484016ddf5d818f55b823cae6feb0":[5,0,27,14],
-"classTemplate.html#abda4c8d049f70553338eae7c905e9d5c":[5,0,27,17],
-"classTemplate.html#abf71098c80fd1f218a59452b3408309e":[5,0,27,7],
-"classTemplate.html#ac41c96e1f407b1a910029e5f4b7de8e4":[5,0,27,0],
-"classTemplate.html#ace26b8a4252fbc1c385d2b5e1e93e5c8":[5,0,27,18],
-"classTemplate.html#ae0836e7d5bd5afceb04f50fd635f1228":[5,0,27,8],
-"classTemplate.html#ae791766c3d055f7f1ba5a5e60d647934":[5,0,27,5],
-"classTemplate.html#afc4afb6f89bebcd5480022312a56cb4a":[5,0,27,16],
-"classTemplate.html#afd97b4b1e7754a550e67c0ea79159059":[5,0,27,11],
-"classZotDriver.html":[5,0,28],
-"classZotDriver.html#a2e15ff09772f0608203dad1c98299394":[5,0,28,3],
-"classZotDriver.html#a3cfdf443da4e5326e205855d7c0054f2":[5,0,28,0],
-"classZotDriver.html#a40d328ff9f6b0a238afe286dddee1514":[5,0,28,6],
-"classZotDriver.html#a6776935156accb0f170e2e24577133db":[5,0,28,1],
-"classZotDriver.html#a876e3e0e4cad83c0b58c8696b344be6f":[5,0,28,4],
-"classZotDriver.html#af65febb26031eb7f39871b9e2a539797":[5,0,28,2],
-"classZotDriver.html#afaaf9941169fc966e43e25b25e6daea6":[5,0,28,5],
-"classdba__driver.html":[5,0,9],
-"classdba__driver.html#a1a8bc9dc839a6320a0e07d8047a6b721":[5,0,9,1],
-"classdba__driver.html#a205f6535e399700b6fca2492f96f2229":[5,0,9,8],
-"classdba__driver.html#a3033b5f1c2716b52202faeaae2592fe6":[5,0,9,9],
-"classdba__driver.html#a4ccb27243e62a8ca30dd8e1b8cc67746":[5,0,9,6],
-"classdba__driver.html#a558e738b88ae893cc5d79ffa3793d555":[5,0,9,7],
-"classdba__driver.html#a5afa54172f3c837df61643f8f5b2c975":[5,0,9,2],
-"classdba__driver.html#a84675d28c7bd9b7290dd37e66dbd216c":[5,0,9,11],
-"classdba__driver.html#adcc1f8955120fec0708bce39202d0422":[5,0,9,4],
-"classdba__driver.html#ae533e62a240a793f17aef5ab4ef10edc":[5,0,9,3],
-"classdba__driver.html#af3541d13ccb7a3eddfc03e253c746186":[5,0,9,0],
-"classdba__driver.html#af48e2afeded5285766bf92e22123ed03":[5,0,9,10],
-"classdba__driver.html#afc95ffa103a3290581b537670cde5311":[5,0,9,5],
-"classdba__mysql.html":[5,0,10],
-"classdba__mysql.html#a1887338627ce0e28786839363014bd0b":[5,0,10,1],
-"classdba__mysql.html#a850586714ef897bd25f643c89b4ef76e":[5,0,10,0],
-"classdba__mysql.html#a99a7691ea6cb1300031fb6549379066e":[5,0,10,2],
-"classdba__mysql.html#ac3fd60c278f400907322dac578754a99":[5,0,10,3],
-"classdba__mysqli.html":[5,0,11],
-"classdba__mysqli.html#a27d6a748af7f80028801306e7ea33f64":[5,0,11,2],
-"classdba__mysqli.html#a611c4de8d6d7512dffb83a38bb6701ec":[5,0,11,3],
-"classdba__mysqli.html#acb38f2c851187ad632ecfab30fdfab55":[5,0,11,0],
-"classdba__mysqli.html#add062bd93961e5f0194d94820e9a51b1":[5,0,11,1],
-"classenotify.html":[5,0,12],
-"classes.html":[5,1],
-"classphoto__driver.html":[5,0,19],
-"classphoto__driver.html#a00cb166c00b7502dbc456c94330e5b03":[5,0,19,27],
-"classphoto__driver.html#a01d28d43b404d6f6de219dc9c5069dc9":[5,0,19,28],
-"classphoto__driver.html#a19e1af2b6af4c63aa6230abe69f83712":[5,0,19,13],
-"classphoto__driver.html#a1a63c4ae17e892a115ab9cf6efb960ce":[5,0,19,20],
-"classphoto__driver.html#a22ecb8c696de65a5a10bd185be9d90c3":[5,0,19,17]
+"classApp.html#a33a8e90b60ec4438f6fbf299d0f6839c":[5,0,6,62],
+"classApp.html#a344d2b7dc2f276648d521aee4da1731c":[5,0,6,23],
+"classApp.html#a3694aa1907aa103a2adbc71f926f0fa0":[5,0,6,50],
+"classApp.html#a3d84af5e42082098672531cd1a618853":[5,0,6,22],
+"classApp.html#a4659785d13e4bac0bed50dbb1b0d4299":[5,0,6,6],
+"classApp.html#a4776d9322edea17fae56afa5d01a323e":[5,0,6,24],
+"classApp.html#a487332f8de40414ca1a54a4265570b70":[5,0,6,81],
+"classApp.html#a495ec082c2719314e536070ca1ce073d":[5,0,6,40],
+"classApp.html#a4b67935096f66d1f14b657399a8461ac":[5,0,6,64],
+"classApp.html#a4bdd7bfed62f50515fce652127bf481b":[5,0,6,25],
+"classApp.html#a4c7cfc62d39508086cf300dc2e39c4df":[5,0,6,54],
+"classApp.html#a4ffe529fb14389f7fedf5fdc5f722e7f":[5,0,6,63],
+"classApp.html#a5293a8543ba338dcf38cd4ff3bc5d4be":[5,0,6,9],
+"classApp.html#a557d7b779d8259027f4724ebf7b248dc":[5,0,6,28],
+"classApp.html#a560189f048d3db2f526841963cc43e97":[5,0,6,26],
+"classApp.html#a56b1a432c96aef8b1971f779c9d93c8c":[5,0,6,84],
+"classApp.html#a576ecb1c5b4a283221e6f2f0ec248251":[5,0,6,53],
+"classApp.html#a57d041fcc003d08c127dfa99a02bc192":[5,0,6,70],
+"classApp.html#a58ac598544892ff7c32890291b72635e":[5,0,6,58],
+"classApp.html#a59dd4b665c70e7dbd80682c014ff7145":[5,0,6,59],
+"classApp.html#a5c63eabdc7fdd8b6e3348980ec16a3ad":[5,0,6,3],
+"classApp.html#a5cfc098c061b7d765add58fd2ca97445":[5,0,6,37],
+"classApp.html#a5f64620473a9727a48ebe9cf6f335a98":[5,0,6,76],
+"classApp.html#a604d659d6977a99de42a160343e5289a":[5,0,6,4],
+"classApp.html#a61ca6e3af82071ea25ff2fd5dbcddae2":[5,0,6,43],
+"classApp.html#a622eace13f8fc9f4b5672a68e2bc4396":[5,0,6,7],
+"classApp.html#a6844aedad10e201b8c3d80cfc9e876d3":[5,0,6,77],
+"classApp.html#a6859a4848a5c0049b4134cc4b34228b6":[5,0,6,78],
+"classApp.html#a6bcb19cdc4907077da72864686d5a780":[5,0,6,65],
+"classApp.html#a6e4f0fbfa3cf6c11baebe22a03db6165":[5,0,6,61],
+"classApp.html#a6f55d087e1ff4710132c1b0863faa2ee":[5,0,6,45],
+"classApp.html#a764cc6cd7578132c21d2b4545de9301c":[5,0,6,79],
+"classApp.html#a78788f6e9d8b713b138f81e457c5cd08":[5,0,6,20],
+"classApp.html#a7954862f44f606b0ff83d4c74d15e792":[5,0,6,52],
+"classApp.html#a871898becd0697d778f36d9336253ae8":[5,0,6,14],
+"classApp.html#a8863703a0305eaa45eb970dbd2046291":[5,0,6,16],
+"classApp.html#a89e9feb2bfb5253883a9720beaffe876":[5,0,6,21],
+"classApp.html#a91fd3c8b89016113b05f3be24805ccff":[5,0,6,83],
+"classApp.html#a94a1ed2dc493c58612d17035b74ae736":[5,0,6,31],
+"classApp.html#a98ef4cfd36693a3457c879b76bc6d694":[5,0,6,42],
+"classApp.html#a9bf62f8e39585c0aa48fcffc3bf3484d":[5,0,6,60],
+"classApp.html#aa5a87c46ab3fee21362c466bf78042ef":[5,0,6,86],
+"classApp.html#aab23c59172310fd30f2d60dc039d3eea":[5,0,6,13],
+"classApp.html#ab35b01a366a2ea95725e97af278f87ab":[5,0,6,82],
+"classApp.html#ab3da757abe5cb45bf88f07cc51a73b58":[5,0,6,35],
+"classApp.html#ab47de68fa39806d1fb0976407e188b77":[5,0,6,67],
+"classApp.html#abea5a4f77dcd53c928dc4eed86616637":[5,0,6,19],
+"classApp.html#abf46a653d8499e7c253cc1be894a6d83":[5,0,6,17],
+"classApp.html#ac1a8b2cd40609b231a560201a08852ba":[5,0,6,47],
+"classApp.html#ac1d80a14492acc932715d54567d8a589":[5,0,6,44],
+"classApp.html#ac6e6b1c7d6df408580ff79977fcfa656":[5,0,6,49],
+"classApp.html#ac73dc90e4764497e2f1b7e6612c8fb88":[5,0,6,41],
+"classApp.html#acad5896b7a79ae31433ad8f89606c728":[5,0,6,66],
+"classApp.html#acb27e607fe4c82603444676e25c36b70":[5,0,6,11],
+"classApp.html#ad082d63acc078e5bf23825a03bdd6a76":[5,0,6,74],
+"classApp.html#ad1c8eb91a6fd470b94f34b7fdad3a2d0":[5,0,6,39],
+"classApp.html#ad5175536561021548ae8188e24c7b80c":[5,0,6,36],
+"classApp.html#adb060d5c7f35a521ec7ec0effbe08097":[5,0,6,27],
+"classApp.html#adb5a4bb657881e553978ff390babd01f":[5,0,6,10],
+"classApp.html#adf2aaf95b062736a6fd5fc70fadf80e8":[5,0,6,85],
+"classApp.html#ae3f47830543d0d902f66913def8db66b":[5,0,6,48],
+"classApp.html#ae9f96338f32187d308b67b980eea0008":[5,0,6,68],
+"classApp.html#aeb1fe1c8ad9aa639909bd183ce578536":[5,0,6,18],
+"classApp.html#aeca29fd4f7192ca07369b3c598c36e67":[5,0,6,80],
+"classApp.html#af17df107f2216ddf5ad2a7e0f2ba2166":[5,0,6,15],
+"classApp.html#af58db526040829b1c8bd95561b329262":[5,0,6,34],
+"classApp.html#af6d39f63fb7116bbeb04e51696f99474":[5,0,6,0],
+"classBaseObject.html":[5,0,7],
+"classBaseObject.html#ac43f10e69ce80c78e4870636250fc8a2":[5,0,7,0],
+"classCache.html":[5,0,8],
+"classConversation.html":[5,0,9],
+"classConversation.html#a2a96b7a6573ae53db861624659e831cb":[5,0,9,6],
+"classConversation.html#a2f12724ef0244e9049fe1bb9641b516d":[5,0,9,19],
+"classConversation.html#a41f4a549e6a99f98935c4742addd22c8":[5,0,9,20],
+"classConversation.html#a4aab60bb39fa6761b6cacdc8d9da2901":[5,0,9,2],
+"classConversation.html#a4cff75d8c46b517e7133e4d0da6fc1c8":[5,0,9,7],
+"classConversation.html#a5879199008b96bee7550b576d614e1c1":[5,0,9,10],
+"classConversation.html#a5b6adbb2fe24f0f53d6c22660dff91b2":[5,0,9,17],
+"classConversation.html#a5effe8ad3007e01333df44b81432b813":[5,0,9,5],
+"classConversation.html#a66f121ca4026246f86a732e5faa0682c":[5,0,9,11],
+"classConversation.html#a8335cdd43f1836e3c255638e61a09e16":[5,0,9,1],
+"classConversation.html#a8748445aa26047ebed5141f3c3cbc244":[5,0,9,16],
+"classConversation.html#a87a0d704d5f2b1a008cc2e9ce06a1bcd":[5,0,9,3],
+"classConversation.html#a8898bddc1e8990e81dab9a13a532cc93":[5,0,9,12],
+"classConversation.html#a8b47c92b69459d461ea3cc9aae9597a3":[5,0,9,8],
+"classConversation.html#aa95c1a62af38bdfba7add9549bec083b":[5,0,9,13],
+"classConversation.html#adf25ce023b69a166c63c6e84e02c136a":[5,0,9,9],
+"classConversation.html#ae3d4190142e12b57051f11f2911f77a0":[5,0,9,4],
+"classConversation.html#ae81221251307e315f566a11f921ce0a9":[5,0,9,21],
+"classConversation.html#ae9937f9e0f3d927acc2bed46cc72e9ae":[5,0,9,18],
+"classConversation.html#af84ea6ccd72214c9bb4c504461cc8b09":[5,0,9,0],
+"classConversation.html#afb03d1648dbfafe62caa1e30f32f2b1a":[5,0,9,15],
+"classConversation.html#afd4965d22a6e4bfea2f35e931b3273c6":[5,0,9,14],
+"classFKOAuth1.html":[5,0,15],
+"classFKOAuth1.html#a2b1dac2ed31fc6ef84668afdda8b263f":[5,0,15,1],
+"classFKOAuth1.html#a2f1276872329a6f0b704ccda1a4b9fa6":[5,0,15,0],
+"classFKOAuthDataStore.html":[5,0,16],
+"classFKOAuthDataStore.html#a1148d47b546350bf440bdd92792c5df1":[5,0,16,1],
+"classFKOAuthDataStore.html#a431b44d70e3da6a8256ab38f710e3050":[5,0,16,5],
+"classFKOAuthDataStore.html#a434882f03e3cdb171ed89e09e337e934":[5,0,16,4],
+"classFKOAuthDataStore.html#a4edfe2e77ecd2e16ff6b5eb516ed3599":[5,0,16,2],
+"classFKOAuthDataStore.html#a96f76387c3a93b0abe27a98013804bab":[5,0,16,3],
+"classFKOAuthDataStore.html#aa1a268be88ad3979bb4cc35bbb4dc819":[5,0,16,0],
+"classFriendicaSmarty.html":[5,0,17],
+"classFriendicaSmarty.html#a33fabbd4d6eef869df496adf357ae690":[5,0,17,2],
+"classFriendicaSmarty.html#a6a4d4281d6fa9be1d37a97b188ffe8c9":[5,0,17,1],
+"classFriendicaSmarty.html#af12091b920b95eeef1218cbc48066ca6":[5,0,17,0],
+"classFriendicaSmartyEngine.html":[5,0,18],
+"classFriendicaSmartyEngine.html#a35ec0ee828c36640ea25296bcb84a118":[5,0,18,1],
+"classFriendicaSmartyEngine.html#aab5994077fc3a64222e41b28e2bd8d88":[5,0,18,2],
+"classFriendicaSmartyEngine.html#ab7c305bd8c386c2944e4dc9136cea5b6":[5,0,18,0],
+"classFriendicaSmartyEngine.html#ad62f1181d2f02b54b46731ad2bd46db2":[5,0,18,3],
+"classItem.html":[5,0,19],
+"classItem.html#a007424e3e3171dcfb4312a02161da6cd":[5,0,19,37],
+"classItem.html#a078f95b4134ce3a1df344cf8d386f986":[5,0,19,41],
+"classItem.html#a0c301aaed2b7d682728d18db3a22afa3":[5,0,19,9],
+"classItem.html#a1a1e42877e6ac7af50286142ceb483d2":[5,0,19,43],
+"classItem.html#a1cb6aa8abdf7ea7daca647e40c8ea3a2":[5,0,19,46],
+"classItem.html#a23d4057883f8ed888c0c2ff12d8aa5d0":[5,0,19,12],
+"classItem.html#a248f45871ecfe82a08d1d4c0769b2eb2":[5,0,19,0],
+"classItem.html#a2ce70ef63f9f4d86a09c351678806925":[5,0,19,26],
+"classItem.html#a3ee7667c2ec6cd7657328e27848c0bdf":[5,0,19,7],
+"classItem.html#a428f448f89a8629055ea3294eb942aea":[5,0,19,18],
+"classItem.html#a4a123ae98987c1e30ecb15c4edf5a3b8":[5,0,19,48],
+"classItem.html#a4b92e3a9d6212c553aa2661489bd95d8":[5,0,19,17],
+"classItem.html#a5b2fafdca55aefeaa08993a5a60529f0":[5,0,19,22],
+"classItem.html#a5b561415861f5b89b0733aacfe0428d1":[5,0,19,44],
+"classItem.html#a5cfa6cf964f433a917a81cab079ff9d8":[5,0,19,47],
+"classItem.html#a5d29ddecc073151a65a8e2ea2f6e4189":[5,0,19,49],
+"classItem.html#a632185dd25c5caf277067c76230a4320":[5,0,19,5],
+"classItem.html#a67892aa23d19f4431bb2e5f43c74000e":[5,0,19,14],
+"classItem.html#a7f7bc059de377319282cb4ef4a828480":[5,0,19,45],
+"classItem.html#a80dcd0fb7673776c0967839d429c2a0f":[5,0,19,34],
+"classItem.html#a80dcd9d0f548c3ad550abe7e6981fb51":[5,0,19,1],
+"classItem.html#a88a99e2d1245925867f249f543358e72":[5,0,19,39],
+"classItem.html#a904421c7a427411bb2ab473bca872f63":[5,0,19,8],
+"classItem.html#a90743c8348b13213275c223bb9333aa0":[5,0,19,35],
+"classItem.html#a9594df6014b0b6f45364ea7a34510130":[5,0,19,40],
+"classItem.html#a97c7feeea7f26a73176cb19faa455e12":[5,0,19,24],
+"classItem.html#a9890ff72662d5bba301d1f2dd8aec9d7":[5,0,19,31],
+"classItem.html#a9f2d219da712390f59012fc32a342074":[5,0,19,16],
+"classItem.html#aa0ee775ec94abccec6c798428835d001":[5,0,19,6],
+"classItem.html#aa1bd19fc8b5577078530265a7bf64123":[5,0,19,28],
+"classItem.html#aa2c221231ad0fc3720ccc1f00f0c6304":[5,0,19,36],
+"classItem.html#aa452b5bcd8dea12119b09212c615cb41":[5,0,19,27],
+"classItem.html#aa49e40f961dff66da32c5ae110e32993":[5,0,19,23],
+"classItem.html#aa541bc4290e51bfd688d6921bebabc73":[5,0,19,15],
+"classItem.html#aa8b1bbc4236890694635295e46d7fd72":[5,0,19,29],
+"classItem.html#aabf87ded59c25b5fe2b2296678e70509":[5,0,19,25],
+"classItem.html#aba23a0a9d89e316d2b343cc46d695d91":[5,0,19,19],
+"classItem.html#abcdb0ea9bcd1576bc99bba9b8f700bb8":[5,0,19,2],
+"classItem.html#ac04525a8be24c12b0a2ae4ca1ba4b967":[5,0,19,21],
+"classItem.html#ac09a4728d37b7783714243f7f8167214":[5,0,19,30],
+"classItem.html#ac0f27e58532612f6e7a54c8a621b9b92":[5,0,19,13],
+"classItem.html#ac6f1c96cc82a0dfb7e881fc70309ea3c":[5,0,19,11],
+"classItem.html#aca1e66988ed00cd627b2a359b72cd0ae":[5,0,19,3],
+"classItem.html#acc32426c0f465391be8a99ad810c7b8e":[5,0,19,33],
+"classItem.html#ad3638f93065693c1f69eb349feb1b7aa":[5,0,19,10],
+"classItem.html#ad5dcbe0b94cb2d5719bc5b6bd8ad60c8":[5,0,19,20],
+"classItem.html#ae0c48b2fed5558642549cabd547fc4f3":[5,0,19,4],
+"classItem.html#aec24e233f9098f902b1e57e60dcb2019":[5,0,19,38],
+"classItem.html#af1b73df9b7c4b927e26b7e243b491f42":[5,0,19,32],
+"classItem.html#afa54851df82962c7c42dea3cc9f5c92c":[5,0,19,42],
+"classProtoDriver.html":[5,0,24],
+"classProtoDriver.html#a1593f3abae050edbd9304f4f8bc4894a":[5,0,24,0],
+"classProtoDriver.html#a2ba1758f0f9e3564580b6ff85292804d":[5,0,24,2],
+"classProtoDriver.html#a34b97ca5ef2165f2e16eb2fe59ff6c67":[5,0,24,1],
+"classProtoDriver.html#a64a3868cffe27d601d55f69a2ecc4337":[5,0,24,6],
+"classProtoDriver.html#a85e9063f6d0c304410cd246f7900ea1b":[5,0,24,4],
+"classProtoDriver.html#ae5b44739f84c10d00a9b65adf3785181":[5,0,24,5],
+"classProtoDriver.html#af66171aa7dab9b62cee915cb4f1abe1b":[5,0,24,3],
+"classRedMatrix_1_1Import_1_1Import.html":[5,0,3,0,0],
+"classRedMatrix_1_1Import_1_1Import.html#a0a05dac405ccc5b617b7b7b3c8ed783c":[5,0,3,0,0,13],
+"classRedMatrix_1_1Import_1_1Import.html#a107703a43a1b0ceb2af7ae470cb3f218":[5,0,3,0,0,1],
+"classRedMatrix_1_1Import_1_1Import.html#a24134929d9a8a682da2036a0bf326367":[5,0,3,0,0,4],
+"classRedMatrix_1_1Import_1_1Import.html#a27987a41cb703a796f1821baeb4774a2":[5,0,3,0,0,5],
+"classRedMatrix_1_1Import_1_1Import.html#a33ed595de044c0ec1cd84cca719e31dc":[5,0,3,0,0,10],
+"classRedMatrix_1_1Import_1_1Import.html#a5434325afb2c633c52540127d717800a":[5,0,3,0,0,0],
+"classRedMatrix_1_1Import_1_1Import.html#a57561904b0f127e0d9a3e2c33688daf8":[5,0,3,0,0,3],
+"classRedMatrix_1_1Import_1_1Import.html#a772c28edf36aaf8e66007a95004c4059":[5,0,3,0,0,6],
+"classRedMatrix_1_1Import_1_1Import.html#a855cd5a79b95d269ae8737fae774e3bc":[5,0,3,0,0,7],
+"classRedMatrix_1_1Import_1_1Import.html#a864aac9fadb4846f5d9f840e8e0f440f":[5,0,3,0,0,11],
+"classRedMatrix_1_1Import_1_1Import.html#a88c2eeba8d0cba3e7c12a2c45ba0fbc6":[5,0,3,0,0,14],
+"classRedMatrix_1_1Import_1_1Import.html#a8d138a9a7d4f79b81d3446ca216a602c":[5,0,3,0,0,9],
+"classRedMatrix_1_1Import_1_1Import.html#ad0d2bdc3b388220479063915b4f5c2fc":[5,0,3,0,0,12],
+"classRedMatrix_1_1Import_1_1Import.html#addf6e53dacd971eaab49be4b17a767d6":[5,0,3,0,0,2],
+"classRedMatrix_1_1Import_1_1Import.html#ae3c6472bea1a44025bc2e152604eb20c":[5,0,3,0,0,8],
+"classRedMatrix_1_1RedDAV_1_1RedBasicAuth.html":[5,0,3,1,0],
+"classRedMatrix_1_1RedDAV_1_1RedBasicAuth.html#a112ad78a863dc0e598b5f02c596798c0":[5,0,3,1,0,9],
+"classRedMatrix_1_1RedDAV_1_1RedBasicAuth.html#a167ae032bd2ad8e6caa2e1e1a6f1b5d3":[5,0,3,1,0,8],
+"classRedMatrix_1_1RedDAV_1_1RedBasicAuth.html#a1a23c349cc4699a8474505972684ea9c":[5,0,3,1,0,13],
+"classRedMatrix_1_1RedDAV_1_1RedBasicAuth.html#a2926fe923baade564f2663632fa8c633":[5,0,3,1,0,3],
+"classRedMatrix_1_1RedDAV_1_1RedBasicAuth.html#a605aa09565a097316b80f0d17d6b5823":[5,0,3,1,0,12],
+"classRedMatrix_1_1RedDAV_1_1RedBasicAuth.html#a6333c8ce58998bd11bf8102afe3b0748":[5,0,3,1,0,1],
+"classRedMatrix_1_1RedDAV_1_1RedBasicAuth.html#a6ece02655b780469e59e204c5979a624":[5,0,3,1,0,7],
+"classRedMatrix_1_1RedDAV_1_1RedBasicAuth.html#a76fdb7fd5dd7376155abb5a58cd6fd69":[5,0,3,1,0,11],
+"classRedMatrix_1_1RedDAV_1_1RedBasicAuth.html#a849c99cf0a7ad065d630c8a30106ad5e":[5,0,3,1,0,15],
+"classRedMatrix_1_1RedDAV_1_1RedBasicAuth.html#aa0b2a5fa9186d7dc0e637f1ecb379c42":[5,0,3,1,0,0],
+"classRedMatrix_1_1RedDAV_1_1RedBasicAuth.html#aad0ef0cc05c407de84dbfbf2050bbbbe":[5,0,3,1,0,14],
+"classRedMatrix_1_1RedDAV_1_1RedBasicAuth.html#aadce020fb595c7943829d7f995d3f998":[5,0,3,1,0,5],
+"classRedMatrix_1_1RedDAV_1_1RedBasicAuth.html#abe1defedb90ac8e3b6487e124e625521":[5,0,3,1,0,10],
+"classRedMatrix_1_1RedDAV_1_1RedBasicAuth.html#abf6fe89b0a8239ed93c3b07e1fbce75b":[5,0,3,1,0,2],
+"classRedMatrix_1_1RedDAV_1_1RedBasicAuth.html#adc72f36f0b2b17b20ea4df900afcd697":[5,0,3,1,0,4],
+"classRedMatrix_1_1RedDAV_1_1RedBasicAuth.html#af6d239fefed05859327ee8db626703f9":[5,0,3,1,0,6],
+"classRedMatrix_1_1RedDAV_1_1RedBrowser.html":[5,0,3,1,1],
+"classRedMatrix_1_1RedDAV_1_1RedBrowser.html#a0733e38e254474d9a456825e72f1ddfd":[5,0,3,1,1,2],
+"classRedMatrix_1_1RedDAV_1_1RedBrowser.html#a242ce69a2fe5a5fdf9c2b8d3954accfd":[5,0,3,1,1,8],
+"classRedMatrix_1_1RedDAV_1_1RedBrowser.html#a3bd98af2d1cdfd8f26deb914596176cf":[5,0,3,1,1,6],
+"classRedMatrix_1_1RedDAV_1_1RedBrowser.html#a810af4506cb3247e0ea7b0c4accbbc7a":[5,0,3,1,1,5],
+"classRedMatrix_1_1RedDAV_1_1RedBrowser.html#a8161f2a0be205412e263c947b5ec46c5":[5,0,3,1,1,0],
+"classRedMatrix_1_1RedDAV_1_1RedBrowser.html#aa1607857cb59738c4dce2fe8e73d8f19":[5,0,3,1,1,7],
+"classRedMatrix_1_1RedDAV_1_1RedBrowser.html#acaa792c08d24e9dc2919759e92ba037d":[5,0,3,1,1,4],
+"classRedMatrix_1_1RedDAV_1_1RedBrowser.html#ad19179bf4ac7f18fafa7e2e3df800142":[5,0,3,1,1,9],
+"classRedMatrix_1_1RedDAV_1_1RedBrowser.html#ad4bc0516533c62733f38043a37267d78":[5,0,3,1,1,1],
+"classRedMatrix_1_1RedDAV_1_1RedBrowser.html#af764d5f14df751f9ec86c34fab300c09":[5,0,3,1,1,3],
+"classRedMatrix_1_1RedDAV_1_1RedDirectory.html":[5,0,3,1,2],
+"classRedMatrix_1_1RedDAV_1_1RedDirectory.html#a14ac61d31a031d139956763db4e03956":[5,0,3,1,2,11],
+"classRedMatrix_1_1RedDAV_1_1RedDirectory.html#a17ea47e34cb76b6e79f36ebed790d76a":[5,0,3,1,2,15],
+"classRedMatrix_1_1RedDAV_1_1RedDirectory.html#a1a37850bdd1f188abd6160559698d5d7":[5,0,3,1,2,4],
+"classRedMatrix_1_1RedDAV_1_1RedDirectory.html#a2fc4e6b9be2108bbaa1ca1a03fd6d44e":[5,0,3,1,2,14],
+"classRedMatrix_1_1RedDAV_1_1RedDirectory.html#a438066fb1565fbcffa22c12d5ce23695":[5,0,3,1,2,17],
+"classRedMatrix_1_1RedDAV_1_1RedDirectory.html#a4bba2e56bc8ec3e05f05eae46f56f36d":[5,0,3,1,2,16],
+"classRedMatrix_1_1RedDAV_1_1RedDirectory.html#a55f7172814a0749b5342f152ab3fa0df":[5,0,3,1,2,8],
+"classRedMatrix_1_1RedDAV_1_1RedDirectory.html#a58e750256cdc2f0f79fbe8d5463ffefe":[5,0,3,1,2,3],
+"classRedMatrix_1_1RedDAV_1_1RedDirectory.html#a69db443ed3c84938b4352fe515bf8d68":[5,0,3,1,2,9],
+"classRedMatrix_1_1RedDAV_1_1RedDirectory.html#a69db5f641f8f5dc999e55cee1832ecd5":[5,0,3,1,2,7],
+"classRedMatrix_1_1RedDAV_1_1RedDirectory.html#a76b58fe5223e565c97f1b9af93031a99":[5,0,3,1,2,0],
+"classRedMatrix_1_1RedDAV_1_1RedDirectory.html#a825dc5f3e0f83f50736c16daa6a4809d":[5,0,3,1,2,6],
+"classRedMatrix_1_1RedDAV_1_1RedDirectory.html#a964b13fde1a5da6f76b51ca5519234dc":[5,0,3,1,2,1],
+"classRedMatrix_1_1RedDAV_1_1RedDirectory.html#a9b9a0b5bfa4de1f78e6cafaa534b6f6a":[5,0,3,1,2,5],
+"classRedMatrix_1_1RedDAV_1_1RedDirectory.html#aab6907e7fb7f9f7227f9cd42bdc84eb9":[5,0,3,1,2,12],
+"classRedMatrix_1_1RedDAV_1_1RedDirectory.html#aca0e8d574ea66a0e210f571700663c62":[5,0,3,1,2,2],
+"classRedMatrix_1_1RedDAV_1_1RedDirectory.html#adf8735b3118cdf2f42416edaf42b82e9":[5,0,3,1,2,13],
+"classRedMatrix_1_1RedDAV_1_1RedDirectory.html#af90a1a74cfd643a5c56b9a17ea250d59":[5,0,3,1,2,10],
+"classRedMatrix_1_1RedDAV_1_1RedFile.html":[5,0,3,1,3],
+"classRedMatrix_1_1RedDAV_1_1RedFile.html#a0350cb4e0327e1f9922869a48ee04f1d":[5,0,3,1,3,9],
+"classRedMatrix_1_1RedDAV_1_1RedFile.html#a05798eac84c578152ff21758261c6ac6":[5,0,3,1,3,0],
+"classRedMatrix_1_1RedDAV_1_1RedFile.html#a07e1b19e7aaf3dcce822e9be8823a87d":[5,0,3,1,3,7],
+"classRedMatrix_1_1RedDAV_1_1RedFile.html#a21b6e9d420c352f25610a33f57858215":[5,0,3,1,3,10],
+"classRedMatrix_1_1RedDAV_1_1RedFile.html#a235700e2dfbe21dc41613d36e30e8acc":[5,0,3,1,3,11],
+"classRedMatrix_1_1RedDAV_1_1RedFile.html#a709ec1288d21ddf1353524435ab916f0":[5,0,3,1,3,8],
+"classRedMatrix_1_1RedDAV_1_1RedFile.html#a7241beecd01f5bb4e74659863dd85bd8":[5,0,3,1,3,2],
+"classRedMatrix_1_1RedDAV_1_1RedFile.html#a9f14682acf3ccb70df5af5dd0687c689":[5,0,3,1,3,4],
+"classRedMatrix_1_1RedDAV_1_1RedFile.html#ab722dcb8c4598426c81fa2b2e4fad5f2":[5,0,3,1,3,12],
+"classRedMatrix_1_1RedDAV_1_1RedFile.html#ab7ab7ba81fab28eb02382cfdfd80ecfe":[5,0,3,1,3,1],
+"classRedMatrix_1_1RedDAV_1_1RedFile.html#ac47016aa0e3f6f1a1c4570bd6fd8cf25":[5,0,3,1,3,5],
+"classRedMatrix_1_1RedDAV_1_1RedFile.html#ac945aa782d6c035d339e59974266ec4d":[5,0,3,1,3,6],
+"classRedMatrix_1_1RedDAV_1_1RedFile.html#af5c88b75d0c1f590af03755534cb167e":[5,0,3,1,3,3],
+"classTemplate.html":[5,0,25],
+"classTemplate.html#a07737733f6949bdedea1e3d301b2ab7b":[5,0,25,13]
};
diff --git a/doc/html/navtreeindex3.js b/doc/html/navtreeindex3.js
index 76a10082b..85e702600 100644
--- a/doc/html/navtreeindex3.js
+++ b/doc/html/navtreeindex3.js
@@ -1,253 +1,253 @@
var NAVTREEINDEX3 =
{
-"classphoto__driver.html#a2b2a99021fc63ed6465d703ddddcb832":[5,0,19,5],
-"classphoto__driver.html#a2e6e61f1e356a90bc978f4404a77137e":[5,0,19,2],
-"classphoto__driver.html#a2f2b6337cf9aa0688d10b422123f0eec":[5,0,19,15],
-"classphoto__driver.html#a3e4215890f4a4894bf3799a7d2e0c0b1":[5,0,19,29],
-"classphoto__driver.html#a4920ed7cbb1ac735ac84153067537f03":[5,0,19,26],
-"classphoto__driver.html#a4de5bac8daea8f291a33c80788019d0d":[5,0,19,14],
-"classphoto__driver.html#a56634842b071b96502716e9843ea5361":[5,0,19,19],
-"classphoto__driver.html#a5864fae7d8389372955a8e78cec527ac":[5,0,19,16],
-"classphoto__driver.html#a642a8d0c4ad5f887c99c6af77cee287b":[5,0,19,22],
-"classphoto__driver.html#a6c6c16dbc4f517ce799f9143ed61f0e3":[5,0,19,9],
-"classphoto__driver.html#a6eee8e36eaf9339f4faf80ddd43162da":[5,0,19,23],
-"classphoto__driver.html#a7c78b5a01afe61ba3895ac07f4869b55":[5,0,19,25],
-"classphoto__driver.html#a97289aef3be43d9435ca3717ef10b8ab":[5,0,19,12],
-"classphoto__driver.html#aa2efb5b2a6af3fd67e3f1c2b9852a5ba":[5,0,19,6],
-"classphoto__driver.html#ab98da263bd7341fc132c4fb6fc76e8d5":[5,0,19,8],
-"classphoto__driver.html#abc9f73ad90923772d52b9fcc4eb117dd":[5,0,19,11],
-"classphoto__driver.html#ac6e85f8e507cab4e755ed7acdec401ae":[5,0,19,0],
-"classphoto__driver.html#acc30486acee9e89e32701f44a1738117":[5,0,19,10],
-"classphoto__driver.html#ae18716018afcf362c7c24586b53e9e2f":[5,0,19,4],
-"classphoto__driver.html#ae1a9edaf846983780dc65ea77d99e813":[5,0,19,3],
-"classphoto__driver.html#ae4501abdc9651359f81d036b63625686":[5,0,19,1],
-"classphoto__driver.html#ae663867d2c4eaa2fae50d60670920143":[5,0,19,21],
-"classphoto__driver.html#aea560be5dfba09117d36c12bacbf3b80":[5,0,19,24],
-"classphoto__driver.html#af0f7ec48a31ae9b557b6e3f8bd5b4af0":[5,0,19,18],
-"classphoto__driver.html#af769e9abb144e57002c59aa2aa8f3468":[5,0,19,7],
-"classphoto__gd.html":[5,0,20],
-"classphoto__gd.html#a0795fc029be382557ae3f6e285f40e00":[5,0,20,5],
-"classphoto__gd.html#a16f3dd7d3559f715aa2fe3f7880836dd":[5,0,20,9],
-"classphoto__gd.html#a1c75304bd15f3b9986f0b315fb59271e":[5,0,20,8],
-"classphoto__gd.html#a2f2e5900e6d8b1667892ac631b1d4754":[5,0,20,2],
-"classphoto__gd.html#a33092b889875b68bfb1c97ff123012d9":[5,0,20,6],
-"classphoto__gd.html#a44cedef376044018702d9355ddc813ce":[5,0,20,3],
-"classphoto__gd.html#a724703ecf71b1f1d04a80e86c76db6b1":[5,0,20,1],
-"classphoto__gd.html#a77f87730b11093b76980c541159df37d":[5,0,20,7],
-"classphoto__gd.html#a86757ba021fd80d1a5cf8c2f766a8484":[5,0,20,4],
-"classphoto__gd.html#ab2232d775c8bacf66773a03308105f0c":[5,0,20,0],
-"classphoto__imagick.html":[5,0,21],
-"classphoto__imagick.html#a27596faca6108d9d563674d1b654a0b7":[5,0,21,10],
-"classphoto__imagick.html#a2c9168f110ccd6c264095d766615dfa8":[5,0,21,7],
-"classphoto__imagick.html#a2f33a03a89497a2b2768e29736d4a8a4":[5,0,21,0],
-"classphoto__imagick.html#a3047c68bb4de7f66c2893fe451db2b66":[5,0,21,2],
-"classphoto__imagick.html#a70adbef31128c0ac8cbc5dcf34cdb019":[5,0,21,6],
-"classphoto__imagick.html#a9df5738a4a18e76dd304c440e96f045f":[5,0,21,8],
-"classphoto__imagick.html#ad07288e0eb3922cb08cc9d33a163decc":[5,0,21,5],
-"classphoto__imagick.html#aef020d929f66f4370e33fc158c8eebd4":[5,0,21,4],
-"classphoto__imagick.html#af92901d252c1e6ab5b54eebedbed23bb":[5,0,21,9],
-"classphoto__imagick.html#afd49d64751ee3a298eac0c0ce0ba0207":[5,0,21,1],
-"classphoto__imagick.html#aff6bcdbab18593a3fc5a480db8509393":[5,0,21,3],
-"cli__startup_8php.html":[6,0,0,16],
-"cli__startup_8php.html#adfdde63686e33ccd4851fa5edc4fc70b":[6,0,0,16,0],
-"cli__suggest_8php.html":[6,0,0,17],
-"cli__suggest_8php.html#a8f3a60fc96f4bec7d3837c4efc7725f2":[6,0,0,17,0],
-"cloud_8php.html":[6,0,1,16],
-"cloud_8php.html#a1b79a6fe0454bc76673ad9aef55bf02d":[6,0,1,16,0],
-"comanche_8php.html":[6,0,0,18],
-"comanche_8php.html#a028f004d5b8c23d6367816d899e17cfe":[6,0,0,18,5],
-"comanche_8php.html#a1a208fdb40dd83d6298caec4290ee922":[6,0,0,18,3],
-"comanche_8php.html#a3d11417d2d846dbe72638a556529ff8f":[6,0,0,18,9],
-"comanche_8php.html#a5718daeda40bf835345fe061e8808cdf":[6,0,0,18,4],
-"comanche_8php.html#a5a7ab801717d38e91ac910b933973887":[6,0,0,18,0],
-"comanche_8php.html#a6b0191c1a63db1696a2eb139d90d9e7f":[6,0,0,18,7],
-"comanche_8php.html#ad5a44e42231759aba1dda49e0490501e":[6,0,0,18,2],
-"comanche_8php.html#ae9fe1ce574db3dd0931eada80234f82a":[6,0,0,18,6],
-"comanche_8php.html#aed39ecad69234f3ddf61f0dedb49a58e":[6,0,0,18,1],
-"comanche_8php.html#af7150df735e5ff9d467994cd6f769c6e":[6,0,0,18,8],
-"common_8php.html":[6,0,1,17],
-"common_8php.html#ab63408f39abef7a6915186e8dabc5a96":[6,0,1,17,0],
-"common_8php.html#aca62f113655809f41f49042ce9b123c2":[6,0,1,17,1],
-"connect_8php.html":[6,0,1,18],
-"connect_8php.html#a417ec27afe33f21a929667a665e32ee2":[6,0,1,18,2],
-"connect_8php.html#a489f0a66c660de6ec4d6917b27674f07":[6,0,1,18,0],
-"connect_8php.html#ad46a38f32fd7a3d324b1fa26373efa36":[6,0,1,18,1],
-"connections_8php.html":[6,0,1,19],
-"connections_8php.html#a1224058db8e3fb56463eb312f98e561d":[6,0,1,19,3],
-"connections_8php.html#a15af118efee9c948b6f8294e54a73bb2":[6,0,1,19,0],
-"connections_8php.html#a1f23623f802af7bd35e95b0e94e5d558":[6,0,1,19,2],
-"connections_8php.html#aec2e457420fce3e3bf6a9f48e36df25c":[6,0,1,19,1],
-"connedit_8php.html":[6,0,1,20],
-"connedit_8php.html#a234c48426b652bf4d37053f2af329ac5":[6,0,1,20,3],
-"connedit_8php.html#a4da871e075597a09a8b374b9171dd92e":[6,0,1,20,2],
-"connedit_8php.html#a707ea7e63cf9674025b1d6b081ae74f5":[6,0,1,20,0],
-"connedit_8php.html#a795acb3d9d841f55c255d7611681ab67":[6,0,1,20,1],
-"contact__selectors_8php.html":[6,0,0,21],
-"contact__selectors_8php.html#a2c743d2eb526eb758d943a1490162d75":[6,0,0,21,1],
-"contact__selectors_8php.html#a9839e8fdaac7ffb37bf1420493f5c28f":[6,0,0,21,0],
-"contact__selectors_8php.html#ad472e4716426dd1a9dd77b62962454be":[6,0,0,21,3],
-"contact__selectors_8php.html#ae499960d6467bd30c78607b1018baf53":[6,0,0,21,2],
-"contact__widgets_8php.html":[6,0,0,22],
-"contact__widgets_8php.html#a165eb021e61c4dcab2a552f28628d353":[6,0,0,22,0],
-"contact__widgets_8php.html#a1eda66319d170f60a8d07c7ece95533b":[6,0,0,22,2],
-"contact__widgets_8php.html#a552f8544528cec0c995cea7287ea9d65":[6,0,0,22,1],
-"contact__widgets_8php.html#a57e73ebcfd62bb5d8c7a7b9e663726d6":[6,0,0,22,3],
-"contactgroup_8php.html":[6,0,1,21],
-"contactgroup_8php.html#a18c7391b1b25debaf98c9dba639caab3":[6,0,1,21,0],
-"conversation_8php.html":[6,0,0,23],
-"conversation_8php.html#a0891aaa4492cba2b51eda12fe01957f3":[6,0,0,23,7],
-"conversation_8php.html#a0ee05f15255fb1cc3d89f30bc378a654":[6,0,0,23,9],
-"conversation_8php.html#a1dfcb5146e9d1eca4528bc580ad5d273":[6,0,0,23,16],
-"conversation_8php.html#a2a7d541854bba755eb8ada59af7dcb1a":[6,0,0,23,22],
-"conversation_8php.html#a3d8e30cc94f9a175054c021305d3aca3":[6,0,0,23,6],
-"conversation_8php.html#a40b9b5e7825bc73932a32e667f05e6f2":[6,0,0,23,17],
-"conversation_8php.html#a4b0888b0f26e1c284a4341fe5fd04f0c":[6,0,0,23,15],
-"conversation_8php.html#a7eeaaf44506815576f3bd80053ef52c3":[6,0,0,23,23],
-"conversation_8php.html#a7f6ef0dfa554bacf620e84c18d386e67":[6,0,0,23,8],
-"conversation_8php.html#a96b34b9d64d13c543e8163e52f5ce8c4":[6,0,0,23,14],
-"conversation_8php.html#a9bd7f9fb6678736c581bcba3b17f471c":[6,0,0,23,13],
-"conversation_8php.html#a9cc2a679606da9e535a06433f9f553a0":[6,0,0,23,21],
-"conversation_8php.html#a9f909b8885259b79c6ac8da93afd8f11":[6,0,0,23,19],
-"conversation_8php.html#aacbb12d372d5e9c3ab0735b4aea48fb3":[6,0,0,23,10],
-"conversation_8php.html#ab2383dff4f823e580399ff469d90ab19":[6,0,0,23,4],
-"conversation_8php.html#abed85a41f1160598de880b84021c9cf7":[6,0,0,23,2],
-"conversation_8php.html#ac55e070f65f46fcc8e269f7896be4c7d":[6,0,0,23,20],
-"conversation_8php.html#ad3e1d4b15e7d6d026ee182edd58f692b":[6,0,0,23,0],
-"conversation_8php.html#ad470fc7766f0db66d138fa1916c7a8b7":[6,0,0,23,1],
-"conversation_8php.html#adda79b75bf1ccf6ce9503aa310953533":[6,0,0,23,11],
-"conversation_8php.html#ae59703b07ce2ddf627b4172ff26058b6":[6,0,0,23,5],
-"conversation_8php.html#ae996eb116d397a2c6396c312d7b98664":[6,0,0,23,18],
-"conversation_8php.html#afe5b2f38d8b803edb0d7ec5fa2868db0":[6,0,0,23,12],
-"conversation_8php.html#affea1afb3f32ca41e966c8ddb4204d81":[6,0,0,23,3],
-"cronhooks_8php.html":[6,0,0,25],
-"cronhooks_8php.html#a4c4c1bbec4ecc9a0efa00dd6afd2c0ca":[6,0,0,25,0],
-"crypto_8php.html":[6,0,0,26],
-"crypto_8php.html#a0781202b0a43b82426929cc87c2fa2b5":[6,0,0,26,5],
-"crypto_8php.html#a2148d7aac7b30c720f7ebda7e9790286":[6,0,0,26,2],
-"crypto_8php.html#a32fc08d57a5694f94d8543ecbb03323c":[6,0,0,26,4],
-"crypto_8php.html#a5c61821d205f95f127114159cbffa764":[6,0,0,26,1],
-"crypto_8php.html#a920e5f222d0020f47556033d8b2b6552":[6,0,0,26,9],
-"crypto_8php.html#aae0ab70d6a199b29555b1ac3cf250d6a":[6,0,0,26,6],
-"crypto_8php.html#ab4f21d8f6b8ece0915e7c8bb73379f96":[6,0,0,26,10],
-"crypto_8php.html#ac852ee41392d1358c3a54d54935e0bf9":[6,0,0,26,0],
-"crypto_8php.html#ac95ac3b1b23b65b04a86613d4206ae85":[6,0,0,26,8],
-"crypto_8php.html#aca7c3a574bfb6c6ef1f2403a56823914":[6,0,0,26,3],
-"crypto_8php.html#ad5e51fd44cff93cfaa07a37e24a5edec":[6,0,0,26,7],
+"classTemplate.html#a285b5b2007dbbf733476273df3fed4ef":[5,0,25,12],
+"classTemplate.html#a317d535946dc065c35dd5cd38380e6c6":[5,0,25,22],
+"classTemplate.html#a35d599c9b53a02e2fe2232e5b7ed5da7":[5,0,25,2],
+"classTemplate.html#a37c15f6d1ade500943629f27a62808b7":[5,0,25,3],
+"classTemplate.html#a4b933954086d9e01a1804b0b1c6ee93e":[5,0,25,6],
+"classTemplate.html#a4e86b566c3f728e95ce5db1b33665c10":[5,0,25,21],
+"classTemplate.html#a6f0efc256688c36110180b501067ff11":[5,0,25,23],
+"classTemplate.html#a8469ab2988b6be2681516dc4b4e07d38":[5,0,25,15],
+"classTemplate.html#a86e8fd27955ef10cadfd86f3fca70677":[5,0,25,9],
+"classTemplate.html#a8f4d17e49f42b876a97364c13fb572d1":[5,0,25,19],
+"classTemplate.html#aa6a087e0b7b887dd1c98c9e0ecbd3b29":[5,0,25,4],
+"classTemplate.html#aa6f9bd7a8f7512efcf90e8d376fe05ee":[5,0,25,10],
+"classTemplate.html#aac9a4638f11271e1b1dcc9f247242718":[5,0,25,20],
+"classTemplate.html#aae9c4d761ea1298e745e8052d7910194":[5,0,25,1],
+"classTemplate.html#abbc484016ddf5d818f55b823cae6feb0":[5,0,25,14],
+"classTemplate.html#abda4c8d049f70553338eae7c905e9d5c":[5,0,25,17],
+"classTemplate.html#abf71098c80fd1f218a59452b3408309e":[5,0,25,7],
+"classTemplate.html#ac41c96e1f407b1a910029e5f4b7de8e4":[5,0,25,0],
+"classTemplate.html#ace26b8a4252fbc1c385d2b5e1e93e5c8":[5,0,25,18],
+"classTemplate.html#ae0836e7d5bd5afceb04f50fd635f1228":[5,0,25,8],
+"classTemplate.html#ae791766c3d055f7f1ba5a5e60d647934":[5,0,25,5],
+"classTemplate.html#afc4afb6f89bebcd5480022312a56cb4a":[5,0,25,16],
+"classTemplate.html#afd97b4b1e7754a550e67c0ea79159059":[5,0,25,11],
+"classZotDriver.html":[5,0,26],
+"classZotDriver.html#a2e15ff09772f0608203dad1c98299394":[5,0,26,3],
+"classZotDriver.html#a3cfdf443da4e5326e205855d7c0054f2":[5,0,26,0],
+"classZotDriver.html#a40d328ff9f6b0a238afe286dddee1514":[5,0,26,6],
+"classZotDriver.html#a6776935156accb0f170e2e24577133db":[5,0,26,1],
+"classZotDriver.html#a876e3e0e4cad83c0b58c8696b344be6f":[5,0,26,4],
+"classZotDriver.html#af65febb26031eb7f39871b9e2a539797":[5,0,26,2],
+"classZotDriver.html#afaaf9941169fc966e43e25b25e6daea6":[5,0,26,5],
+"classdba__driver.html":[5,0,10],
+"classdba__driver.html#a02165fc4bee63d040ebd963a4fa82a14":[5,0,10,10],
+"classdba__driver.html#a1a8bc9dc839a6320a0e07d8047a6b721":[5,0,10,1],
+"classdba__driver.html#a205f6535e399700b6fca2492f96f2229":[5,0,10,17],
+"classdba__driver.html#a3033b5f1c2716b52202faeaae2592fe6":[5,0,10,18],
+"classdba__driver.html#a4ccb27243e62a8ca30dd8e1b8cc67746":[5,0,10,11],
+"classdba__driver.html#a558e738b88ae893cc5d79ffa3793d555":[5,0,10,13],
+"classdba__driver.html#a5afa54172f3c837df61643f8f5b2c975":[5,0,10,2],
+"classdba__driver.html#a65a5c7b355ab5529a43049e160006426":[5,0,10,9],
+"classdba__driver.html#a77e59dcbeab30ca6000131d2e9ad4092":[5,0,10,12],
+"classdba__driver.html#a7dbe8318587ff1694825042bf58f4fbd":[5,0,10,7],
+"classdba__driver.html#a84675d28c7bd9b7290dd37e66dbd216c":[5,0,10,20],
+"classdba__driver.html#a8d6a79d39d7eaee5aea4e952c4529d48":[5,0,10,8],
+"classdba__driver.html#a98d8523dcedda316085b4d4f856b6583":[5,0,10,21],
+"classdba__driver.html#aa3325d982d4ee5d1114fd7e02a4356e8":[5,0,10,23],
+"classdba__driver.html#ab43184239e1d6eb00a98319f4a3df155":[5,0,10,15],
+"classdba__driver.html#ab9982f38a02f008b127a0f3ccc1e99f4":[5,0,10,3],
+"classdba__driver.html#ac9127e9c55fcc93bcfbb323b9b99b9d9":[5,0,10,14],
+"classdba__driver.html#ad700712879719bee23752b8f424d97d0":[5,0,10,16],
+"classdba__driver.html#adcc1f8955120fec0708bce39202d0422":[5,0,10,5],
+"classdba__driver.html#ae533e62a240a793f17aef5ab4ef10edc":[5,0,10,4],
+"classdba__driver.html#af3541d13ccb7a3eddfc03e253c746186":[5,0,10,0],
+"classdba__driver.html#af48e2afeded5285766bf92e22123ed03":[5,0,10,19],
+"classdba__driver.html#afc95ffa103a3290581b537670cde5311":[5,0,10,6],
+"classdba__driver.html#afce39394c010ea589d99a21579b2c31e":[5,0,10,22],
+"classdba__mysql.html":[5,0,11],
+"classdba__mysql.html#a1887338627ce0e28786839363014bd0b":[5,0,11,1],
+"classdba__mysql.html#a31011edd67b6b394355bf04cedb498d0":[5,0,11,3],
+"classdba__mysql.html#a850586714ef897bd25f643c89b4ef76e":[5,0,11,0],
+"classdba__mysql.html#a99a7691ea6cb1300031fb6549379066e":[5,0,11,2],
+"classdba__mysql.html#ac3fd60c278f400907322dac578754a99":[5,0,11,4],
+"classdba__mysqli.html":[5,0,12],
+"classdba__mysqli.html#a27d6a748af7f80028801306e7ea33f64":[5,0,12,2],
+"classdba__mysqli.html#a611c4de8d6d7512dffb83a38bb6701ec":[5,0,12,4],
+"classdba__mysqli.html#a6eb6c578c6928908321e5e6da866e1db":[5,0,12,3],
+"classdba__mysqli.html#acb38f2c851187ad632ecfab30fdfab55":[5,0,12,0],
+"classdba__mysqli.html#add062bd93961e5f0194d94820e9a51b1":[5,0,12,1],
+"classdba__postgres.html":[5,0,13],
+"classdba__postgres.html#a3de1ac375e98886dfc38fd0066e88f90":[5,0,13,7],
+"classdba__postgres.html#a56f926f218155c88807e0e06f6817a72":[5,0,13,9],
+"classdba__postgres.html#a677f850211975c9ab89602c67e2dcad9":[5,0,13,10],
+"classdba__postgres.html#a70352880231fba0b859f82cd5b290a9a":[5,0,13,8],
+"classdba__postgres.html#a7108eaaae7cc2fb236212041afc9ac0f":[5,0,13,3],
+"classdba__postgres.html#a7267f91c3f87f600b30d7560de62dfd7":[5,0,13,11],
+"classdba__postgres.html#a731d8648b41b8a126f6b99bdd5414058":[5,0,13,0],
+"classdba__postgres.html#a7ea3f24ad260c1e21588f8b5af595caa":[5,0,13,1],
+"classdba__postgres.html#a8d2c6d8c92fe6f074452876483dd17fc":[5,0,13,5],
+"classdba__postgres.html#ab2e44e9f41d05e585afd873d18e8c127":[5,0,13,4],
+"classdba__postgres.html#ab36244320f5b71dba92d9318ccf3f34e":[5,0,13,2],
+"classdba__postgres.html#ace80a204e34b20b9907650399cce02a3":[5,0,13,13],
+"classdba__postgres.html#ae0f834413e57cf0735ae7b64b2f71e68":[5,0,13,6],
+"classdba__postgres.html#aeb404a85974d6c5df30c21650888000b":[5,0,13,12],
+"classenotify.html":[5,0,14],
+"classes.html":[5,1],
+"classphoto__driver.html":[5,0,21],
+"classphoto__driver.html#a00cb166c00b7502dbc456c94330e5b03":[5,0,21,27],
+"classphoto__driver.html#a01d28d43b404d6f6de219dc9c5069dc9":[5,0,21,28],
+"classphoto__driver.html#a19e1af2b6af4c63aa6230abe69f83712":[5,0,21,13],
+"classphoto__driver.html#a1a63c4ae17e892a115ab9cf6efb960ce":[5,0,21,20],
+"classphoto__driver.html#a22ecb8c696de65a5a10bd185be9d90c3":[5,0,21,17],
+"classphoto__driver.html#a2b2a99021fc63ed6465d703ddddcb832":[5,0,21,5],
+"classphoto__driver.html#a2e6e61f1e356a90bc978f4404a77137e":[5,0,21,2],
+"classphoto__driver.html#a2f2b6337cf9aa0688d10b422123f0eec":[5,0,21,15],
+"classphoto__driver.html#a3e4215890f4a4894bf3799a7d2e0c0b1":[5,0,21,29],
+"classphoto__driver.html#a4920ed7cbb1ac735ac84153067537f03":[5,0,21,26],
+"classphoto__driver.html#a4de5bac8daea8f291a33c80788019d0d":[5,0,21,14],
+"classphoto__driver.html#a56634842b071b96502716e9843ea5361":[5,0,21,19],
+"classphoto__driver.html#a5864fae7d8389372955a8e78cec527ac":[5,0,21,16],
+"classphoto__driver.html#a642a8d0c4ad5f887c99c6af77cee287b":[5,0,21,22],
+"classphoto__driver.html#a6c6c16dbc4f517ce799f9143ed61f0e3":[5,0,21,9],
+"classphoto__driver.html#a6eee8e36eaf9339f4faf80ddd43162da":[5,0,21,23],
+"classphoto__driver.html#a7c78b5a01afe61ba3895ac07f4869b55":[5,0,21,25],
+"classphoto__driver.html#a97289aef3be43d9435ca3717ef10b8ab":[5,0,21,12],
+"classphoto__driver.html#aa2efb5b2a6af3fd67e3f1c2b9852a5ba":[5,0,21,6],
+"classphoto__driver.html#ab98da263bd7341fc132c4fb6fc76e8d5":[5,0,21,8],
+"classphoto__driver.html#abc9f73ad90923772d52b9fcc4eb117dd":[5,0,21,11],
+"classphoto__driver.html#ac6e85f8e507cab4e755ed7acdec401ae":[5,0,21,0],
+"classphoto__driver.html#acc30486acee9e89e32701f44a1738117":[5,0,21,10],
+"classphoto__driver.html#ae18716018afcf362c7c24586b53e9e2f":[5,0,21,4],
+"classphoto__driver.html#ae1a9edaf846983780dc65ea77d99e813":[5,0,21,3],
+"classphoto__driver.html#ae4501abdc9651359f81d036b63625686":[5,0,21,1],
+"classphoto__driver.html#ae663867d2c4eaa2fae50d60670920143":[5,0,21,21],
+"classphoto__driver.html#aea560be5dfba09117d36c12bacbf3b80":[5,0,21,24],
+"classphoto__driver.html#af0f7ec48a31ae9b557b6e3f8bd5b4af0":[5,0,21,18],
+"classphoto__driver.html#af769e9abb144e57002c59aa2aa8f3468":[5,0,21,7],
+"classphoto__gd.html":[5,0,22],
+"classphoto__gd.html#a0795fc029be382557ae3f6e285f40e00":[5,0,22,5],
+"classphoto__gd.html#a16f3dd7d3559f715aa2fe3f7880836dd":[5,0,22,9],
+"classphoto__gd.html#a1c75304bd15f3b9986f0b315fb59271e":[5,0,22,8],
+"classphoto__gd.html#a2f2e5900e6d8b1667892ac631b1d4754":[5,0,22,2],
+"classphoto__gd.html#a33092b889875b68bfb1c97ff123012d9":[5,0,22,6],
+"classphoto__gd.html#a44cedef376044018702d9355ddc813ce":[5,0,22,3],
+"classphoto__gd.html#a724703ecf71b1f1d04a80e86c76db6b1":[5,0,22,1],
+"classphoto__gd.html#a77f87730b11093b76980c541159df37d":[5,0,22,7],
+"classphoto__gd.html#a86757ba021fd80d1a5cf8c2f766a8484":[5,0,22,4],
+"classphoto__gd.html#ab2232d775c8bacf66773a03308105f0c":[5,0,22,0],
+"classphoto__imagick.html":[5,0,23],
+"classphoto__imagick.html#a27596faca6108d9d563674d1b654a0b7":[5,0,23,10],
+"classphoto__imagick.html#a2c9168f110ccd6c264095d766615dfa8":[5,0,23,7],
+"classphoto__imagick.html#a2f33a03a89497a2b2768e29736d4a8a4":[5,0,23,0],
+"classphoto__imagick.html#a3047c68bb4de7f66c2893fe451db2b66":[5,0,23,2],
+"classphoto__imagick.html#a70adbef31128c0ac8cbc5dcf34cdb019":[5,0,23,6],
+"classphoto__imagick.html#a9df5738a4a18e76dd304c440e96f045f":[5,0,23,8],
+"classphoto__imagick.html#ad07288e0eb3922cb08cc9d33a163decc":[5,0,23,5],
+"classphoto__imagick.html#aef020d929f66f4370e33fc158c8eebd4":[5,0,23,4],
+"classphoto__imagick.html#af92901d252c1e6ab5b54eebedbed23bb":[5,0,23,9],
+"classphoto__imagick.html#afd49d64751ee3a298eac0c0ce0ba0207":[5,0,23,1],
+"classphoto__imagick.html#aff6bcdbab18593a3fc5a480db8509393":[5,0,23,3],
+"cli__startup_8php.html":[6,0,0,17],
+"cli__startup_8php.html#adfdde63686e33ccd4851fa5edc4fc70b":[6,0,0,17,0],
+"cli__suggest_8php.html":[6,0,0,18],
+"cli__suggest_8php.html#a8f3a60fc96f4bec7d3837c4efc7725f2":[6,0,0,18,0],
+"cloud_8php.html":[6,0,1,15],
+"cloud_8php.html#ad2e96e917852f27dedfc263d37e13756":[6,0,1,15,0],
+"comanche_8php.html":[6,0,0,19],
+"comanche_8php.html#a028f004d5b8c23d6367816d899e17cfe":[6,0,0,19,5],
+"comanche_8php.html#a1a208fdb40dd83d6298caec4290ee922":[6,0,0,19,3],
+"comanche_8php.html#a3d11417d2d846dbe72638a556529ff8f":[6,0,0,19,9],
+"comanche_8php.html#a5718daeda40bf835345fe061e8808cdf":[6,0,0,19,4],
+"comanche_8php.html#a5a7ab801717d38e91ac910b933973887":[6,0,0,19,0],
+"comanche_8php.html#a6b0191c1a63db1696a2eb139d90d9e7f":[6,0,0,19,7],
+"comanche_8php.html#ad5a44e42231759aba1dda49e0490501e":[6,0,0,19,2],
+"comanche_8php.html#ae9fe1ce574db3dd0931eada80234f82a":[6,0,0,19,6],
+"comanche_8php.html#aed39ecad69234f3ddf61f0dedb49a58e":[6,0,0,19,1],
+"comanche_8php.html#af7150df735e5ff9d467994cd6f769c6e":[6,0,0,19,8],
+"common_8php.html":[6,0,1,16],
+"common_8php.html#ab63408f39abef7a6915186e8dabc5a96":[6,0,1,16,0],
+"common_8php.html#aca62f113655809f41f49042ce9b123c2":[6,0,1,16,1],
+"connect_8php.html":[6,0,1,17],
+"connect_8php.html#a417ec27afe33f21a929667a665e32ee2":[6,0,1,17,2],
+"connect_8php.html#a489f0a66c660de6ec4d6917b27674f07":[6,0,1,17,0],
+"connect_8php.html#ad46a38f32fd7a3d324b1fa26373efa36":[6,0,1,17,1],
+"connections_8php.html":[6,0,1,18],
+"connections_8php.html#a1224058db8e3fb56463eb312f98e561d":[6,0,1,18,3],
+"connections_8php.html#a15af118efee9c948b6f8294e54a73bb2":[6,0,1,18,0],
+"connections_8php.html#a1f23623f802af7bd35e95b0e94e5d558":[6,0,1,18,2],
+"connections_8php.html#aec2e457420fce3e3bf6a9f48e36df25c":[6,0,1,18,1],
+"connedit_8php.html":[6,0,1,19],
+"connedit_8php.html#a234c48426b652bf4d37053f2af329ac5":[6,0,1,19,3],
+"connedit_8php.html#a4da871e075597a09a8b374b9171dd92e":[6,0,1,19,2],
+"connedit_8php.html#a707ea7e63cf9674025b1d6b081ae74f5":[6,0,1,19,0],
+"connedit_8php.html#a795acb3d9d841f55c255d7611681ab67":[6,0,1,19,1],
+"contact__selectors_8php.html":[6,0,0,22],
+"contact__selectors_8php.html#a2c743d2eb526eb758d943a1490162d75":[6,0,0,22,1],
+"contact__selectors_8php.html#a9839e8fdaac7ffb37bf1420493f5c28f":[6,0,0,22,0],
+"contact__selectors_8php.html#ad472e4716426dd1a9dd77b62962454be":[6,0,0,22,2],
+"contact__widgets_8php.html":[6,0,0,23],
+"contact__widgets_8php.html#a165eb021e61c4dcab2a552f28628d353":[6,0,0,23,0],
+"contact__widgets_8php.html#a1eda66319d170f60a8d07c7ece95533b":[6,0,0,23,2],
+"contact__widgets_8php.html#a552f8544528cec0c995cea7287ea9d65":[6,0,0,23,1],
+"contact__widgets_8php.html#a57e73ebcfd62bb5d8c7a7b9e663726d6":[6,0,0,23,3],
+"contactgroup_8php.html":[6,0,1,20],
+"contactgroup_8php.html#a18c7391b1b25debaf98c9dba639caab3":[6,0,1,20,0],
+"conversation_8php.html":[6,0,0,24],
+"conversation_8php.html#a0891aaa4492cba2b51eda12fe01957f3":[6,0,0,24,7],
+"conversation_8php.html#a0ee05f15255fb1cc3d89f30bc378a654":[6,0,0,24,9],
+"conversation_8php.html#a1dfcb5146e9d1eca4528bc580ad5d273":[6,0,0,24,16],
+"conversation_8php.html#a2a7d541854bba755eb8ada59af7dcb1a":[6,0,0,24,22],
+"conversation_8php.html#a3d8e30cc94f9a175054c021305d3aca3":[6,0,0,24,6],
+"conversation_8php.html#a40b9b5e7825bc73932a32e667f05e6f2":[6,0,0,24,17],
+"conversation_8php.html#a4b0888b0f26e1c284a4341fe5fd04f0c":[6,0,0,24,15],
+"conversation_8php.html#a7eeaaf44506815576f3bd80053ef52c3":[6,0,0,24,23],
+"conversation_8php.html#a7f6ef0dfa554bacf620e84c18d386e67":[6,0,0,24,8],
+"conversation_8php.html#a96b34b9d64d13c543e8163e52f5ce8c4":[6,0,0,24,14],
+"conversation_8php.html#a9bd7f9fb6678736c581bcba3b17f471c":[6,0,0,24,13],
+"conversation_8php.html#a9cc2a679606da9e535a06433f9f553a0":[6,0,0,24,21],
+"conversation_8php.html#a9f909b8885259b79c6ac8da93afd8f11":[6,0,0,24,19],
+"conversation_8php.html#aacbb12d372d5e9c3ab0735b4aea48fb3":[6,0,0,24,10],
+"conversation_8php.html#ab2383dff4f823e580399ff469d90ab19":[6,0,0,24,4],
+"conversation_8php.html#abed85a41f1160598de880b84021c9cf7":[6,0,0,24,2],
+"conversation_8php.html#ac55e070f65f46fcc8e269f7896be4c7d":[6,0,0,24,20],
+"conversation_8php.html#ad3e1d4b15e7d6d026ee182edd58f692b":[6,0,0,24,0],
+"conversation_8php.html#ad470fc7766f0db66d138fa1916c7a8b7":[6,0,0,24,1],
+"conversation_8php.html#adda79b75bf1ccf6ce9503aa310953533":[6,0,0,24,11],
+"conversation_8php.html#ae59703b07ce2ddf627b4172ff26058b6":[6,0,0,24,5],
+"conversation_8php.html#ae996eb116d397a2c6396c312d7b98664":[6,0,0,24,18],
+"conversation_8php.html#afe5b2f38d8b803edb0d7ec5fa2868db0":[6,0,0,24,12],
+"conversation_8php.html#affea1afb3f32ca41e966c8ddb4204d81":[6,0,0,24,3],
+"cronhooks_8php.html":[6,0,0,26],
+"cronhooks_8php.html#a4c4c1bbec4ecc9a0efa00dd6afd2c0ca":[6,0,0,26,0],
+"crypto_8php.html":[6,0,0,27],
+"crypto_8php.html#a0781202b0a43b82426929cc87c2fa2b5":[6,0,0,27,5],
+"crypto_8php.html#a0e941b6b18ff895d1a2448741abf2ef2":[6,0,0,27,17],
+"crypto_8php.html#a2148d7aac7b30c720f7ebda7e9790286":[6,0,0,27,2],
+"crypto_8php.html#a2a3fae7caca27f86d158eeaf69b6f287":[6,0,0,27,19],
+"crypto_8php.html#a32fc08d57a5694f94d8543ecbb03323c":[6,0,0,27,4],
+"crypto_8php.html#a35bc357c93f4ddc67ef377620b0349e8":[6,0,0,27,12],
+"crypto_8php.html#a4d15d19b446dbf47804675df7c85e2a9":[6,0,0,27,14],
+"crypto_8php.html#a573f02517abe4ac9241268263063b2a0":[6,0,0,27,9],
+"crypto_8php.html#a5c61821d205f95f127114159cbffa764":[6,0,0,27,1],
+"crypto_8php.html#a630e1574554f34e7c38511585d9e71a2":[6,0,0,27,6],
+"crypto_8php.html#a7427a18417341aa35e2207bfa205e432":[6,0,0,27,18],
+"crypto_8php.html#a798368843cdd9bb08386b48e53e29e8c":[6,0,0,27,11],
+"crypto_8php.html#a7f7e650aaeaa3832580a73eb00966b26":[6,0,0,27,22],
+"crypto_8php.html#a890b443f80f0968fb9eabd93fc99dbb5":[6,0,0,27,13],
+"crypto_8php.html#a9191447cc46f0b4eaba3273e313994d5":[6,0,0,27,23],
+"crypto_8php.html#a920e5f222d0020f47556033d8b2b6552":[6,0,0,27,20],
+"crypto_8php.html#aae0ab70d6a199b29555b1ac3cf250d6a":[6,0,0,27,10],
+"crypto_8php.html#ab4f21d8f6b8ece0915e7c8bb73379f96":[6,0,0,27,21],
+"crypto_8php.html#ac852ee41392d1358c3a54d54935e0bf9":[6,0,0,27,0],
+"crypto_8php.html#ac95ac3b1b23b65b04a86613d4206ae85":[6,0,0,27,16],
+"crypto_8php.html#aca7c3a574bfb6c6ef1f2403a56823914":[6,0,0,27,3],
+"crypto_8php.html#ad5e51fd44cff93cfaa07a37e24a5edec":[6,0,0,27,15],
+"crypto_8php.html#ae5af17db1cb5d7c91d486e1264079839":[6,0,0,27,7],
+"crypto_8php.html#af8bbdeaf4abed7b40365d301e6013c85":[6,0,0,27,8],
"dark_8php.html":[6,0,3,1,3,1,2],
"darkness_8php.html":[6,0,3,1,0,2,0],
"darknessleftaside_8php.html":[6,0,3,1,0,2,1],
"darknessrightaside_8php.html":[6,0,3,1,0,2,2],
-"datetime_8php.html":[6,0,0,27],
-"datetime_8php.html#a03900dcf0f9e3c58793a031673a70326":[6,0,0,27,6],
-"datetime_8php.html#a36d3d6dff8d76b5f295bb3d9c535a5b1":[6,0,0,27,11],
-"datetime_8php.html#a3f2897db32e745fe2f3e70a6b46578f8":[6,0,0,27,5],
-"datetime_8php.html#a5f29553799005b1fd4e9ce9d98ce05aa":[6,0,0,27,3],
-"datetime_8php.html#a633dadba426fa2f60b25fabdb19ebc1f":[6,0,0,27,10],
-"datetime_8php.html#a7df24d72ea05922d3127363e2295174c":[6,0,0,27,7],
-"datetime_8php.html#a8ae8dc95ace7ac27fa5a1ecf42b78c82":[6,0,0,27,9],
-"datetime_8php.html#aa51b5a7ea4f931b23acbdfcea46e9865":[6,0,0,27,12],
-"datetime_8php.html#ab55e545b72ec8c097e052ea7d373491f":[6,0,0,27,14],
-"datetime_8php.html#aba971b67f17fecf050813f1eba72367f":[6,0,0,27,8],
-"datetime_8php.html#abc1652f96799cec6fce8797ba2ebc2df":[6,0,0,27,0],
-"datetime_8php.html#ac265b86f384ee094ed5479aae02aa5c8":[6,0,0,27,2],
-"datetime_8php.html#ad6301e74b0f9267d52f8d432b5beb226":[6,0,0,27,4],
-"datetime_8php.html#aea356409ba69f9de412298c998595dd2":[6,0,0,27,1],
-"datetime_8php.html#af1cd77c97c901d9239cb7a61f97f9826":[6,0,0,27,13],
-"db__update_8php.html":[6,0,2,2],
-"dba__driver_8php.html":[6,0,0,0,0],
-"dba__driver_8php.html#a2c09a731d3b4fef41fed0e83db01be1f":[6,0,0,0,0,8],
-"dba__driver_8php.html#a55bf30d8176967e682656b5be4ad9249":[6,0,0,0,0,7],
-"dba__driver_8php.html#a65b83462bd26968106aebd43f16540e4":[6,0,0,0,0,3],
-"dba__driver_8php.html#aa377074e70981e8c4e82ca0accd068ee":[6,0,0,0,0,6],
-"dba__driver_8php.html#aa6607893d8f60ade9122bcfbd1a53ffb":[6,0,0,0,0,5],
-"dba__driver_8php.html#ab222aa1dbf9ea93b320f82028739127e":[6,0,0,0,0,2],
-"dba__driver_8php.html#ac10e60f6e5b95bcf67bd82cb88f37947":[6,0,0,0,0,1],
-"dba__driver_8php.html#af531546fac5f0836a8557a4f6dfee930":[6,0,0,0,0,4],
-"dba__mysql_8php.html":[6,0,0,0,1],
-"dba__mysqli_8php.html":[6,0,0,0,2],
-"delegate_8php.html":[6,0,1,22],
-"delegate_8php.html#a943eea8996ef348eb845c498f9f354dd":[6,0,1,22,0],
-"deliver_8php.html":[6,0,0,28],
-"deliver_8php.html#a397afcb9afecf0c1816b0951189dd346":[6,0,0,28,0],
-"dir_032dd9e2cfe278a2cfa5eb9547448eb9.html":[6,0,3,1,3,0],
-"dir_05f4fba29266e8fd7869afcd6cefb5cb.html":[6,0,3,1,0,2],
-"dir_0eaa4a0adae8ba4811e133c6e594aeee.html":[6,0,2,0],
-"dir_21bc5169ff11430004758be31dcfc6c4.html":[6,0,0,0],
-"dir_23ec12649285f9fabf3a6b7380226c28.html":[6,0,2],
-"dir_25f74a9991dbbca1b52a94e358ca73c1.html":[6,0,2,1,0],
-"dir_3d9c9d0c5e9556dd3eba1e072fa6eaeb.html":[6,0,3,1,3,1],
-"dir_55dbaf9b7b53c4fc605c9011743a7353.html":[6,0,3,1,3],
-"dir_6cee3bb9ace89cc4e2f065aa2ca7bc5b.html":[6,0,3,1,1,1,0],
-"dir_720432dea4a717197ae070dbc42b8f20.html":[6,0,2,1],
-"dir_817f6d302394b98e59575acdb59998bc.html":[6,0,3,0],
-"dir_8543001e5d25368a6edede3e63efb554.html":[6,0,3,1],
-"dir_887fdc94312ba7b057b6bfe7fdd27ea5.html":[6,0,3,1,2,0],
-"dir_8e58ba5e98ac07e59ee15ca7486c9950.html":[6,0,3,1,2],
-"dir_922c77e958c99a98db92d38a3a349bf2.html":[6,0,3,1,1],
-"dir_92d6b429199666aa3765c8a934db5e14.html":[6,0,3,1,1,1],
-"dir__fns_8php.html":[6,0,0,29],
-"dir__fns_8php.html#a44062d4b471d1e83f92f6c184585aa13":[6,0,0,29,5],
-"dir__fns_8php.html#a8c15aa69da12f2d3476b9e93b82b337d":[6,0,0,29,2],
-"dir__fns_8php.html#aa666e7df6ca8c332f4081c9b66b4bdf6":[6,0,0,29,4],
-"dir__fns_8php.html#acd37b17dce3bdec6d5a6344a20598c1e":[6,0,0,29,3],
-"dir__fns_8php.html#acf621621e929d49441da30aad76a58cf":[6,0,0,29,0],
-"dir__fns_8php.html#ae56881d69bb6f8e828c9e35454386774":[6,0,0,29,1],
-"dir_a8a0005c2b8590c535262d232c22afab.html":[6,0,3,1,1,1,0,0],
-"dir_aae29906d7bfc07d076125f669c8352e.html":[6,0,0,1],
-"dir_b2f003339c516cc00c8cadcafbe82f13.html":[6,0,3],
-"dir_c02447ad39a5307c81c64e880ec9e8d3.html":[6,0,3,1,1,0],
-"dir_cb8a8f75dcdd0b3fbfcc82e9eda410c5.html":[6,0,3,1,0,1],
-"dir_d41ce877eb409a4791b288730010abe2.html":[6,0,1],
-"dir_d44c64559bbebec7f509842c48db8b23.html":[6,0,0],
-"dir_d520c5cf583201d9437764f209363c22.html":[6,0,3,1,0],
-"dir_f19da925ee886ec38f19b0e8c19779bc.html":[6,0,3,1,0,0],
-"dirprofile_8php.html":[6,0,1,24],
-"dirprofile_8php.html#a3e1d30d3d93863ff5615f2df4ac7f052":[6,0,1,24,0],
-"dirsearch_8php.html":[6,0,1,25],
-"dirsearch_8php.html#a3e51964ae3f5ff147403407b65324752":[6,0,1,25,3],
-"dirsearch_8php.html#a52bcac49b0e35cc8c6b70066143c2ee2":[6,0,1,25,1],
-"dirsearch_8php.html#a7d4cd9890d5ed23c3efc58e2a778a305":[6,0,1,25,0],
-"dirsearch_8php.html#a985d410a170549429857af6ff2673149":[6,0,1,25,4],
-"dirsearch_8php.html#aa1fb04e1de4f25b63349ac78f94ceb4c":[6,0,1,25,2],
-"display_8php.html":[6,0,1,26],
-"display_8php.html#a37137c98d47bf3306f4c2bb9f5b60de0":[6,0,1,26,0],
-"docblox__errorchecker_8php.html":[6,0,2,3],
-"docblox__errorchecker_8php.html#a1659f0a629d408e0f849dbe4ee061e62":[6,0,2,3,3],
-"docblox__errorchecker_8php.html#a21b4bbe5aae2d85db33affc7126a67ec":[6,0,2,3,2],
-"docblox__errorchecker_8php.html#a2b767cfc461fdd5061fffc9e4a806d5b":[6,0,2,3,0],
-"docblox__errorchecker_8php.html#a49a8a4009b02e49717caa88b128affc5":[6,0,2,3,8],
-"docblox__errorchecker_8php.html#a648a570b0f9f6e0e51b7267647c4b09b":[6,0,2,3,5],
-"docblox__errorchecker_8php.html#a721c6ff80a6d3e4ad4ffa52a04c60085":[6,0,2,3,9],
-"docblox__errorchecker_8php.html#a83018d9153d17d91fbcf3bc10158d34f":[6,0,2,3,6],
-"docblox__errorchecker_8php.html#a852004caba0a34390297a079f4aaac73":[6,0,2,3,7],
-"docblox__errorchecker_8php.html#ab66bc0493d25f39bf8b4dcbb429f04e6":[6,0,2,3,4],
-"docblox__errorchecker_8php.html#ae9562cf60aa693114603d27b55d2185f":[6,0,2,3,1],
-"docblox__errorchecker_8php.html#af4ca738a05beffe9c8c23e1f7aea3c2d":[6,0,2,3,10],
-"editblock_8php.html":[6,0,1,27],
-"editblock_8php.html#abbe8f55de06967bc8d79d620509a49e6":[6,0,1,27,0],
-"editlayout_8php.html":[6,0,1,28],
-"editlayout_8php.html#aa877e4157a26b099de904164181dd386":[6,0,1,28,0],
-"editpost_8php.html":[6,0,1,29],
-"editpost_8php.html#a34011690864d122680c802e9e748ccfb":[6,0,1,29,0],
-"editwebpage_8php.html":[6,0,1,30],
-"editwebpage_8php.html#a375e945255fad79a71036528f7480650":[6,0,1,30,0],
-"enotify_8php.html":[6,0,0,31],
-"enotify_8php.html#a3e9a9355b243777c488d2a9883908dfc":[6,0,0,31,1],
-"event_8php.html":[6,0,0,32],
-"event_8php.html#a018ea4484910a873a7c1eaa126de9b1a":[6,0,0,32,8],
-"event_8php.html#a180cccd63c2a2f00ff432b03113531f3":[6,0,0,32,0],
-"event_8php.html#a184d6b9690e5b6dee35a0aa9edd47279":[6,0,0,32,1],
-"event_8php.html#a2ac9f1b08de03250ecd794f705781d17":[6,0,0,32,7],
-"event_8php.html#a32ba1b9ddf7a744a9a1512b052e5f850":[6,0,0,32,2],
-"event_8php.html#a7378e839ac3de9d55579eb3ec48eaf92":[6,0,0,32,5],
-"event_8php.html#abb74206cf42d694307c3d7abb7af9869":[6,0,0,32,6],
-"event_8php.html#ac9f206819186b65952ac1869f0da8c6e":[6,0,0,32,3],
-"event_8php.html#af5ac41e7ea3f7131088fe6333fd2846c":[6,0,0,32,4],
-"events_8php.html":[6,0,1,31],
-"events_8php.html#a1d293fb217ae6bc9e3858c4b32e363ec":[6,0,1,31,0],
-"events_8php.html#ab3e8a8f901175f8e40a8089eea45c075":[6,0,1,31,1],
-"expire_8php.html":[6,0,0,33],
-"expire_8php.html#a444e45c9b67727b27db4c779fd51a298":[6,0,0,33,0],
-"externals_8php.html":[6,0,0,34],
-"externals_8php.html#a4df44079e6f915286088b7a0d44db926":[6,0,0,34,0]
+"datetime_8php.html":[6,0,0,28],
+"datetime_8php.html#a3f239f94e23335d860b148958d87a093":[6,0,0,28,10],
+"datetime_8php.html#a3f2897db32e745fe2f3e70a6b46578f8":[6,0,0,28,5],
+"datetime_8php.html#a72218e5ee21876484934bacbb6bd9ba3":[6,0,0,28,4],
+"datetime_8php.html#a77bb385ae8a9e7ca663309c102c0d766":[6,0,0,28,2],
+"datetime_8php.html#a7df24d72ea05922d3127363e2295174c":[6,0,0,28,6],
+"datetime_8php.html#a8ae8dc95ace7ac27fa5a1ecf42b78c82":[6,0,0,28,9],
+"datetime_8php.html#aa51b5a7ea4f931b23acbdfcea46e9865":[6,0,0,28,11],
+"datetime_8php.html#ab55e545b72ec8c097e052ea7d373491f":[6,0,0,28,13],
+"datetime_8php.html#aba971b67f17fecf050813f1eba72367f":[6,0,0,28,7]
};
diff --git a/doc/html/navtreeindex4.js b/doc/html/navtreeindex4.js
index e26d0a016..81b6fd67c 100644
--- a/doc/html/navtreeindex4.js
+++ b/doc/html/navtreeindex4.js
@@ -1,48 +1,208 @@
var NAVTREEINDEX4 =
{
-"extract_8php.html":[6,0,2,4],
-"extract_8php.html#a0cbe524ffc9a496114fd7ba9f423ef44":[6,0,2,4,3],
-"extract_8php.html#a50b05cf2e02ef0b67fcad97106dd7634":[6,0,2,4,2],
-"extract_8php.html#a63bb4c41bc532baacf6a4976cfaa0feb":[6,0,2,4,0],
-"extract_8php.html#a9590b15215a21e9b42eb546aeef79704":[6,0,2,4,1],
-"fbrowser_8php.html":[6,0,1,32],
-"fbrowser_8php.html#aee476addcf7a3e0fe9454f7dfd5a56c4":[6,0,1,32,0],
-"features_8php.html":[6,0,0,35],
-"features_8php.html#a52b5bdfb61b256713efecf7a7b20b0c0":[6,0,0,35,0],
-"features_8php.html#ae73c5b03b01c7284ed7e7e0e774e975c":[6,0,0,35,1],
-"feed_8php.html":[6,0,1,33],
-"feed_8php.html#af86137700b56f33d1d5f25c8dec22c04":[6,0,1,33,0],
-"filer_8php.html":[6,0,1,34],
-"filer_8php.html#a5fd5d7e61b2f9c43cb5f110c89dc4274":[6,0,1,34,0],
-"filerm_8php.html":[6,0,1,35],
-"filerm_8php.html#ae2eb28d2054fa2c37e38689882172208":[6,0,1,35,0],
+"datetime_8php.html#abc1652f96799cec6fce8797ba2ebc2df":[6,0,0,28,0],
+"datetime_8php.html#ad6301e74b0f9267d52f8d432b5beb226":[6,0,0,28,3],
+"datetime_8php.html#aea356409ba69f9de412298c998595dd2":[6,0,0,28,1],
+"datetime_8php.html#af1cd77c97c901d9239cb7a61f97f9826":[6,0,0,28,12],
+"datetime_8php.html#afbb34604d0f6e7d2103da4f42e2487b1":[6,0,0,28,8],
+"db__update_8php.html":[6,0,2,1],
+"dba__driver_8php.html":[6,0,0,0,0],
+"dba__driver_8php.html#a2994daa03b1c23229a27e39bcab75e67":[6,0,0,0,0,2],
+"dba__driver_8php.html#a2a38996670c2936b5769270c49c57593":[6,0,0,0,0,11],
+"dba__driver_8php.html#a2c09a731d3b4fef41fed0e83db01be1f":[6,0,0,0,0,17],
+"dba__driver_8php.html#a2c8a72ec73f39b17a167c90737693f78":[6,0,0,0,0,12],
+"dba__driver_8php.html#a30e9a643be804e905f5614a3279d2645":[6,0,0,0,0,5],
+"dba__driver_8php.html#a55bf30d8176967e682656b5be4ad9249":[6,0,0,0,0,16],
+"dba__driver_8php.html#a5df8499634c47b30191f34069d7b98c0":[6,0,0,0,0,6],
+"dba__driver_8php.html#a65b83462bd26968106aebd43f16540e4":[6,0,0,0,0,8],
+"dba__driver_8php.html#a75098bf1d59ea57f7ebae657a369137e":[6,0,0,0,0,3],
+"dba__driver_8php.html#a7c1b98a710ead27382c958ad3216c4ee":[6,0,0,0,0,1],
+"dba__driver_8php.html#aa051799567690a124a3b865bf902f58a":[6,0,0,0,0,10],
+"dba__driver_8php.html#aa377074e70981e8c4e82ca0accd068ee":[6,0,0,0,0,14],
+"dba__driver_8php.html#aa6607893d8f60ade9122bcfbd1a53ffb":[6,0,0,0,0,13],
+"dba__driver_8php.html#ab222aa1dbf9ea93b320f82028739127e":[6,0,0,0,0,7],
+"dba__driver_8php.html#acec84a8fb75d78daf657cbe5df74e25a":[6,0,0,0,0,4],
+"dba__driver_8php.html#af531546fac5f0836a8557a4f6dfee930":[6,0,0,0,0,9],
+"dba__driver_8php.html#afaaa1a7eff9c1b65b3b8c464ae37640e":[6,0,0,0,0,15],
+"dba__mysql_8php.html":[6,0,0,0,1],
+"dba__mysqli_8php.html":[6,0,0,0,2],
+"dba__postgres_8php.html":[6,0,0,0,3],
+"delegate_8php.html":[6,0,1,21],
+"delegate_8php.html#a943eea8996ef348eb845c498f9f354dd":[6,0,1,21,0],
+"deliver_8php.html":[6,0,0,29],
+"deliver_8php.html#a397afcb9afecf0c1816b0951189dd346":[6,0,0,29,0],
+"diaspora_8php.html":[6,0,0,30],
+"diaspora_8php.html#a006731620a5242d410358b32678e48e3":[6,0,0,30,0],
+"diaspora_8php.html#a0b3628a5e53332c3d3196b689fe2b94d":[6,0,0,30,24],
+"diaspora_8php.html#a0fb2abe304aae19efc040a5e6b917829":[6,0,0,30,1],
+"diaspora_8php.html#a131abd521b218d6ae6f7d2917d8b2605":[6,0,0,30,15],
+"diaspora_8php.html#a1704748aa2384c73e43f10e71defd31a":[6,0,0,30,25],
+"diaspora_8php.html#a20b968d64ef26afe5cb0cc75a7570a31":[6,0,0,30,14],
+"diaspora_8php.html#a2bf43f6b5890897f425ef4325d34b007":[6,0,0,30,19],
+"diaspora_8php.html#a33ae0c4606a7df4d801c05507d87f668":[6,0,0,30,26],
+"diaspora_8php.html#a4901762cba5cd8dcdc57bdf285eefb1b":[6,0,0,30,12],
+"diaspora_8php.html#a586d5a3ba92d35cee14f879f290072aa":[6,0,0,30,17],
+"diaspora_8php.html#a5d57518545baa31cf8a85a937a267681":[6,0,0,30,10],
+"diaspora_8php.html#a5ed66b910d7b0284f9b3ee04e72306ff":[6,0,0,30,7],
+"diaspora_8php.html#a69f250b078a46e405647428ec3399a16":[6,0,0,30,27],
+"diaspora_8php.html#a6f0a67b6b17503c125af32763be931b7":[6,0,0,30,4],
+"diaspora_8php.html#a71fe9bb66626b4197ae018a230778bb2":[6,0,0,30,13],
+"diaspora_8php.html#a7cff2f8f11044c1b3a360f20e1bbee46":[6,0,0,30,11],
+"diaspora_8php.html#a849754ec369e1a60fadae5c14584ca36":[6,0,0,30,3],
+"diaspora_8php.html#a858f70153c384f8778082cf7843a19da":[6,0,0,30,8],
+"diaspora_8php.html#a900abf51398b2ef26cd2cd31c52f1b0f":[6,0,0,30,16],
+"diaspora_8php.html#a938c7ee808d38725c0988fa6006805b9":[6,0,0,30,20],
+"diaspora_8php.html#a9bf7ef4094e0e14f6e2b7fe76ab7ad2e":[6,0,0,30,32],
+"diaspora_8php.html#aa34d2748bb97e9e193cacd572f335055":[6,0,0,30,28],
+"diaspora_8php.html#aa704d6aa2ac77be345c0f501168e6e56":[6,0,0,30,29],
+"diaspora_8php.html#aa8e551a53fcce34be3942d0c3e20d1f4":[6,0,0,30,6],
+"diaspora_8php.html#aade0c165fcdded71352c7a67bf6ce37b":[6,0,0,30,31],
+"diaspora_8php.html#ab736d6f32b5de31c97cb579fc730e200":[6,0,0,30,30],
+"diaspora_8php.html#ab99505944728d46585b8312989de533d":[6,0,0,30,5],
+"diaspora_8php.html#ac1ab782a34552a7c6b4dc961754ed598":[6,0,0,30,18],
+"diaspora_8php.html#ac9e41e46626dc608204bf4b5e16e62d7":[6,0,0,30,33],
+"diaspora_8php.html#ad9985cc4214bdfc14878785c838c8690":[6,0,0,30,9],
+"diaspora_8php.html#adef30b6fac948baedcc7194d5d155b5f":[6,0,0,30,2],
+"diaspora_8php.html#ae6f52efd81fe515cd9912bc8293abf5b":[6,0,0,30,22],
+"diaspora_8php.html#aeb2bb78f620dbf51d9335e6eb7444f2c":[6,0,0,30,23],
+"diaspora_8php.html#af4698b165766f83d89ec1ea964bc92cc":[6,0,0,30,21],
+"dimport_8php.html":[6,0,0,31],
+"dimport_8php.html#a581f040717941ce3e1868b0b5dceefd1":[6,0,0,31,0],
+"dir_0262a6a8df56a167e3761b6e5a54bb1c.html":[6,0,3,1,5],
+"dir_032dd9e2cfe278a2cfa5eb9547448eb9.html":[6,0,3,1,3,0],
+"dir_05f4fba29266e8fd7869afcd6cefb5cb.html":[6,0,3,1,0,2],
+"dir_0eaa4a0adae8ba4811e133c6e594aeee.html":[6,0,2,0],
+"dir_21bc5169ff11430004758be31dcfc6c4.html":[6,0,0,0],
+"dir_23ec12649285f9fabf3a6b7380226c28.html":[6,0,2],
+"dir_3d9c9d0c5e9556dd3eba1e072fa6eaeb.html":[6,0,3,1,3,1],
+"dir_4acb285a1960a920438b718da0958cf4.html":[6,0,3,1,4],
+"dir_55dbaf9b7b53c4fc605c9011743a7353.html":[6,0,3,1,3],
+"dir_65522070e0a83623cefc01ebe26a83e3.html":[6,0,3,1,4,0],
+"dir_6e52a2a2cd27c08b7df5e5cdb216bd77.html":[6,0,3,1,1],
+"dir_7edbbd0f8c514efef79942dcdc21f738.html":[6,0,0,1],
+"dir_817f6d302394b98e59575acdb59998bc.html":[6,0,3,0],
+"dir_8543001e5d25368a6edede3e63efb554.html":[6,0,3,1],
+"dir_887fdc94312ba7b057b6bfe7fdd27ea5.html":[6,0,3,1,2,0],
+"dir_8e58ba5e98ac07e59ee15ca7486c9950.html":[6,0,3,1,2],
+"dir_9ef82eb3846cd201470898c3b6ef38cf.html":[6,0,3,1,1,0],
+"dir__fns_8php.html":[6,0,0,32],
+"dir__fns_8php.html#a2f7d74bb2aea8bcd2537aee5c6708a16":[6,0,0,32,0],
+"dir__fns_8php.html#a44062d4b471d1e83f92f6c184585aa13":[6,0,0,32,6],
+"dir__fns_8php.html#a8c15aa69da12f2d3476b9e93b82b337d":[6,0,0,32,3],
+"dir__fns_8php.html#aa666e7df6ca8c332f4081c9b66b4bdf6":[6,0,0,32,5],
+"dir__fns_8php.html#acd37b17dce3bdec6d5a6344a20598c1e":[6,0,0,32,4],
+"dir__fns_8php.html#acf621621e929d49441da30aad76a58cf":[6,0,0,32,1],
+"dir__fns_8php.html#ae56881d69bb6f8e828c9e35454386774":[6,0,0,32,2],
+"dir_aae29906d7bfc07d076125f669c8352e.html":[6,0,0,2],
+"dir_ac4f5165c8d71ebb1a1a0a168a48f3f7.html":[6,0,3,1,5,0],
+"dir_b2f003339c516cc00c8cadcafbe82f13.html":[6,0,3],
+"dir_cb8a8f75dcdd0b3fbfcc82e9eda410c5.html":[6,0,3,1,0,1],
+"dir_d41ce877eb409a4791b288730010abe2.html":[6,0,1],
+"dir_d44c64559bbebec7f509842c48db8b23.html":[6,0,0],
+"dir_d520c5cf583201d9437764f209363c22.html":[6,0,3,1,0],
+"dir_e7f045be8bb383d8447c6a6b84145083.html":[6,0,0,3],
+"dir_f19da925ee886ec38f19b0e8c19779bc.html":[6,0,3,1,0,0],
+"dirsearch_8php.html":[6,0,1,23],
+"dirsearch_8php.html#a3e51964ae3f5ff147403407b65324752":[6,0,1,23,4],
+"dirsearch_8php.html#a52bcac49b0e35cc8c6b70066143c2ee2":[6,0,1,23,2],
+"dirsearch_8php.html#a7d4cd9890d5ed23c3efc58e2a778a305":[6,0,1,23,1],
+"dirsearch_8php.html#a985d410a170549429857af6ff2673149":[6,0,1,23,5],
+"dirsearch_8php.html#aa1fb04e1de4f25b63349ac78f94ceb4c":[6,0,1,23,3],
+"dirsearch_8php.html#ab6d5fefa98da249a994b910434a669c2":[6,0,1,23,0],
+"display_8php.html":[6,0,1,24],
+"display_8php.html#a37137c98d47bf3306f4c2bb9f5b60de0":[6,0,1,24,0],
+"docblox__errorchecker_8php.html":[6,0,2,2],
+"docblox__errorchecker_8php.html#a1659f0a629d408e0f849dbe4ee061e62":[6,0,2,2,3],
+"docblox__errorchecker_8php.html#a21b4bbe5aae2d85db33affc7126a67ec":[6,0,2,2,2],
+"docblox__errorchecker_8php.html#a2b767cfc461fdd5061fffc9e4a806d5b":[6,0,2,2,0],
+"docblox__errorchecker_8php.html#a49a8a4009b02e49717caa88b128affc5":[6,0,2,2,8],
+"docblox__errorchecker_8php.html#a648a570b0f9f6e0e51b7267647c4b09b":[6,0,2,2,5],
+"docblox__errorchecker_8php.html#a721c6ff80a6d3e4ad4ffa52a04c60085":[6,0,2,2,9],
+"docblox__errorchecker_8php.html#a83018d9153d17d91fbcf3bc10158d34f":[6,0,2,2,6],
+"docblox__errorchecker_8php.html#a852004caba0a34390297a079f4aaac73":[6,0,2,2,7],
+"docblox__errorchecker_8php.html#ab66bc0493d25f39bf8b4dcbb429f04e6":[6,0,2,2,4],
+"docblox__errorchecker_8php.html#ae9562cf60aa693114603d27b55d2185f":[6,0,2,2,1],
+"docblox__errorchecker_8php.html#af4ca738a05beffe9c8c23e1f7aea3c2d":[6,0,2,2,10],
+"editblock_8php.html":[6,0,1,25],
+"editblock_8php.html#ab7806bb42ae5e93f0330d7bd179d4b3e":[6,0,1,25,1],
+"editblock_8php.html#abbe8f55de06967bc8d79d620509a49e6":[6,0,1,25,0],
+"editlayout_8php.html":[6,0,1,26],
+"editlayout_8php.html#a97c1e93d9e75ad8cd2c2f9a7f77341a7":[6,0,1,26,1],
+"editlayout_8php.html#aa877e4157a26b099de904164181dd386":[6,0,1,26,0],
+"editpost_8php.html":[6,0,1,27],
+"editpost_8php.html#a34011690864d122680c802e9e748ccfb":[6,0,1,27,0],
+"editwebpage_8php.html":[6,0,1,28],
+"editwebpage_8php.html#a375e945255fad79a71036528f7480650":[6,0,1,28,0],
+"editwebpage_8php.html#a94109f9c796fbe92508bf9574e35d19f":[6,0,1,28,1],
+"enotify_8php.html":[6,0,0,34],
+"enotify_8php.html#a3e9a9355b243777c488d2a9883908dfc":[6,0,0,34,1],
+"event_8php.html":[6,0,0,35],
+"event_8php.html#a018ea4484910a873a7c1eaa126de9b1a":[6,0,0,35,11],
+"event_8php.html#a05073cd4ab837bd4a0149e8ed23ce688":[6,0,0,35,9],
+"event_8php.html#a180cccd63c2a2f00ff432b03113531f3":[6,0,0,35,0],
+"event_8php.html#a184d6b9690e5b6dee35a0aa9edd47279":[6,0,0,35,1],
+"event_8php.html#a2ac9f1b08de03250ecd794f705781d17":[6,0,0,35,7],
+"event_8php.html#a32ba1b9ddf7a744a9a1512b052e5f850":[6,0,0,35,2],
+"event_8php.html#a3ff7f1824540a38f4a3991a59a9542d4":[6,0,0,35,8],
+"event_8php.html#a7378e839ac3de9d55579eb3ec48eaf92":[6,0,0,35,5],
+"event_8php.html#ab8cc2825013e724dc26229026711cf93":[6,0,0,35,10],
+"event_8php.html#abb74206cf42d694307c3d7abb7af9869":[6,0,0,35,6],
+"event_8php.html#ac9f206819186b65952ac1869f0da8c6e":[6,0,0,35,3],
+"event_8php.html#af5ac41e7ea3f7131088fe6333fd2846c":[6,0,0,35,4],
+"events_8php.html":[6,0,1,29],
+"events_8php.html#a1d293fb217ae6bc9e3858c4b32e363ec":[6,0,1,29,0],
+"events_8php.html#ab3e8a8f901175f8e40a8089eea45c075":[6,0,1,29,1],
+"expire_8php.html":[6,0,0,36],
+"expire_8php.html#a444e45c9b67727b27db4c779fd51a298":[6,0,0,36,0],
+"externals_8php.html":[6,0,0,37],
+"externals_8php.html#a4df44079e6f915286088b7a0d44db926":[6,0,0,37,0],
+"extract_8php.html":[6,0,2,3],
+"extract_8php.html#a0cbe524ffc9a496114fd7ba9f423ef44":[6,0,2,3,3],
+"extract_8php.html#a50b05cf2e02ef0b67fcad97106dd7634":[6,0,2,3,2],
+"extract_8php.html#a63bb4c41bc532baacf6a4976cfaa0feb":[6,0,2,3,0],
+"extract_8php.html#a9590b15215a21e9b42eb546aeef79704":[6,0,2,3,1],
+"fbrowser_8php.html":[6,0,1,30],
+"fbrowser_8php.html#aee476addcf7a3e0fe9454f7dfd5a56c4":[6,0,1,30,0],
+"features_8php.html":[6,0,0,38],
+"features_8php.html#a52b5bdfb61b256713efecf7a7b20b0c0":[6,0,0,38,0],
+"features_8php.html#ae73c5b03b01c7284ed7e7e0e774e975c":[6,0,0,38,1],
+"feed_8php.html":[6,0,1,31],
+"feed_8php.html#af86137700b56f33d1d5f25c8dec22c04":[6,0,1,31,0],
+"filer_8php.html":[6,0,1,32],
+"filer_8php.html#a5fd5d7e61b2f9c43cb5f110c89dc4274":[6,0,1,32,0],
+"filerm_8php.html":[6,0,1,33],
+"filerm_8php.html#ae2eb28d2054fa2c37e38689882172208":[6,0,1,33,0],
"files.html":[6,0],
-"filestorage_8php.html":[6,0,1,36],
-"filestorage_8php.html#a61bb1be78472555df4ce619f51014040":[6,0,1,36,0],
-"filestorage_8php.html#ad3b64e3ece9831f9d3a9f00c0ae983cd":[6,0,1,36,1],
+"filestorage_8php.html":[6,0,1,34],
+"filestorage_8php.html#a61bb1be78472555df4ce619f51014040":[6,0,1,34,0],
+"filestorage_8php.html#ad3b64e3ece9831f9d3a9f00c0ae983cd":[6,0,1,34,1],
+"fixd_8php.html":[6,0,0,39],
+"fixd_8php.html#a241b818f48030b628685b2e5119c5624":[6,0,0,39,2],
+"fixd_8php.html#a2da3681c9cce2efe7de29aa578ff4219":[6,0,0,39,1],
+"fixd_8php.html#a8abe176bc41afd728f32ba8c506cbd98":[6,0,0,39,0],
+"fixd_8php.html#a9d4f8a2ab4d92b3ccfd7cba0458098eb":[6,0,0,39,3],
"fpostit_8php.html":[6,0,2,0,0],
"fpostit_8php.html#a3f3ae3ae61578b5671673914fd894443":[6,0,2,0,0,0],
"fpostit_8php.html#a501b5ca82f287509fc691c88524064c1":[6,0,2,0,0,1],
-"friendica-to-smarty-tpl_8py.html":[6,0,2,5],
-"friendica-to-smarty-tpl_8py.html#a005c1b7a69cac31fad72a941974ba7bb":[6,0,2,5,11],
-"friendica-to-smarty-tpl_8py.html#a0b4cf73d1a8d201a28d269eeb62a5d5c":[6,0,2,5,8],
-"friendica-to-smarty-tpl_8py.html#a3719dd46e286a57d315e6adae1845854":[6,0,2,5,1],
-"friendica-to-smarty-tpl_8py.html#a38503e37fe68ac27c88cce91a9ac9efa":[6,0,2,5,0],
-"friendica-to-smarty-tpl_8py.html#a5dfc21ab8282dda8e3a7dff43cd0e283":[6,0,2,5,13],
-"friendica-to-smarty-tpl_8py.html#a5f9bf7a67d955c0d6be70a82097611c5":[6,0,2,5,6],
-"friendica-to-smarty-tpl_8py.html#a68d15934660cd1f4301ce251b1646f09":[6,0,2,5,12],
-"friendica-to-smarty-tpl_8py.html#a8540514fb7c4aa18ad2dffa2a975036b":[6,0,2,5,14],
-"friendica-to-smarty-tpl_8py.html#a87182a9bab47640428bd0b2b9946bef9":[6,0,2,5,10],
-"friendica-to-smarty-tpl_8py.html#a89388ea9b2826e8218ed480e917d8105":[6,0,2,5,2],
-"friendica-to-smarty-tpl_8py.html#a965e1d6d6293654a56e029a7e454dec7":[6,0,2,5,5],
-"friendica-to-smarty-tpl_8py.html#ad9ef87ccb2c9960501f5e02424a22d80":[6,0,2,5,9],
-"friendica-to-smarty-tpl_8py.html#ae74419b16516956c66f7db714a93a6ac":[6,0,2,5,7],
-"friendica-to-smarty-tpl_8py.html#aecf730e0884bb4ddc6c0deb1ef85f8eb":[6,0,2,5,4],
-"friendica-to-smarty-tpl_8py.html#af6b2c793958aae2aadc294577431f749":[6,0,2,5,3],
-"friendica__smarty_8php.html":[6,0,0,37],
-"fsuggest_8php.html":[6,0,1,38],
-"fsuggest_8php.html#a61ecfe10ce937ed526614f8fd3de3c7d":[6,0,1,38,1],
-"fsuggest_8php.html#aa6c49ed4b50a387f1845f36844dd7998":[6,0,1,38,0],
+"friendica-to-smarty-tpl_8py.html":[6,0,2,4],
+"friendica-to-smarty-tpl_8py.html#a005c1b7a69cac31fad72a941974ba7bb":[6,0,2,4,11],
+"friendica-to-smarty-tpl_8py.html#a0b4cf73d1a8d201a28d269eeb62a5d5c":[6,0,2,4,8],
+"friendica-to-smarty-tpl_8py.html#a3719dd46e286a57d315e6adae1845854":[6,0,2,4,1],
+"friendica-to-smarty-tpl_8py.html#a38503e37fe68ac27c88cce91a9ac9efa":[6,0,2,4,0],
+"friendica-to-smarty-tpl_8py.html#a5dfc21ab8282dda8e3a7dff43cd0e283":[6,0,2,4,13],
+"friendica-to-smarty-tpl_8py.html#a5f9bf7a67d955c0d6be70a82097611c5":[6,0,2,4,6],
+"friendica-to-smarty-tpl_8py.html#a68d15934660cd1f4301ce251b1646f09":[6,0,2,4,12],
+"friendica-to-smarty-tpl_8py.html#a8540514fb7c4aa18ad2dffa2a975036b":[6,0,2,4,14],
+"friendica-to-smarty-tpl_8py.html#a87182a9bab47640428bd0b2b9946bef9":[6,0,2,4,10],
+"friendica-to-smarty-tpl_8py.html#a89388ea9b2826e8218ed480e917d8105":[6,0,2,4,2],
+"friendica-to-smarty-tpl_8py.html#a965e1d6d6293654a56e029a7e454dec7":[6,0,2,4,5],
+"friendica-to-smarty-tpl_8py.html#ad9ef87ccb2c9960501f5e02424a22d80":[6,0,2,4,9],
+"friendica-to-smarty-tpl_8py.html#ae74419b16516956c66f7db714a93a6ac":[6,0,2,4,7],
+"friendica-to-smarty-tpl_8py.html#aecf730e0884bb4ddc6c0deb1ef85f8eb":[6,0,2,4,4],
+"friendica-to-smarty-tpl_8py.html#af6b2c793958aae2aadc294577431f749":[6,0,2,4,3],
+"fsuggest_8php.html":[6,0,1,36],
+"fsuggest_8php.html#a61ecfe10ce937ed526614f8fd3de3c7d":[6,0,1,36,1],
+"fsuggest_8php.html#aa6c49ed4b50a387f1845f36844dd7998":[6,0,1,36,0],
"full_8php.html":[6,0,3,0,2],
"full_8php.html#a3987f5547ceb7e36a210a66a06241a5a":[6,0,3,0,2,0],
"functions.html":[5,3,0],
@@ -69,8 +229,8 @@ var NAVTREEINDEX4 =
"functions_0x76.html":[5,3,0,20],
"functions_8php.html":[6,0,3,1,0,1,1],
"functions_8php.html#adefe514c95680928b3aae250cbc3c663":[6,0,3,1,0,1,1,0],
-"functions_func.html":[5,3,1],
"functions_func.html":[5,3,1,0],
+"functions_func.html":[5,3,1],
"functions_func_0x61.html":[5,3,1,1],
"functions_func_0x62.html":[5,3,1,2],
"functions_func_0x63.html":[5,3,1,3],
@@ -89,165 +249,5 @@ var NAVTREEINDEX4 =
"functions_func_0x73.html":[5,3,1,16],
"functions_func_0x74.html":[5,3,1,17],
"functions_func_0x75.html":[5,3,1,18],
-"functions_func_0x76.html":[5,3,1,19],
-"functions_vars.html":[5,3,2],
-"globals.html":[6,1,0,0],
-"globals.html":[6,1,0],
-"globals_0x5f.html":[6,1,0,1],
-"globals_0x61.html":[6,1,0,2],
-"globals_0x62.html":[6,1,0,3],
-"globals_0x63.html":[6,1,0,4],
-"globals_0x64.html":[6,1,0,5],
-"globals_0x65.html":[6,1,0,6],
-"globals_0x66.html":[6,1,0,7],
-"globals_0x67.html":[6,1,0,8],
-"globals_0x68.html":[6,1,0,9],
-"globals_0x69.html":[6,1,0,10],
-"globals_0x6a.html":[6,1,0,11],
-"globals_0x6b.html":[6,1,0,12],
-"globals_0x6c.html":[6,1,0,13],
-"globals_0x6d.html":[6,1,0,14],
-"globals_0x6e.html":[6,1,0,15],
-"globals_0x6f.html":[6,1,0,16],
-"globals_0x70.html":[6,1,0,17],
-"globals_0x71.html":[6,1,0,18],
-"globals_0x72.html":[6,1,0,19],
-"globals_0x73.html":[6,1,0,20],
-"globals_0x74.html":[6,1,0,21],
-"globals_0x75.html":[6,1,0,22],
-"globals_0x76.html":[6,1,0,23],
-"globals_0x77.html":[6,1,0,24],
-"globals_0x78.html":[6,1,0,25],
-"globals_0x7a.html":[6,1,0,26],
-"globals_func.html":[6,1,1],
-"globals_func.html":[6,1,1,0],
-"globals_func_0x61.html":[6,1,1,1],
-"globals_func_0x62.html":[6,1,1,2],
-"globals_func_0x63.html":[6,1,1,3],
-"globals_func_0x64.html":[6,1,1,4],
-"globals_func_0x65.html":[6,1,1,5],
-"globals_func_0x66.html":[6,1,1,6],
-"globals_func_0x67.html":[6,1,1,7],
-"globals_func_0x68.html":[6,1,1,8],
-"globals_func_0x69.html":[6,1,1,9],
-"globals_func_0x6a.html":[6,1,1,10],
-"globals_func_0x6b.html":[6,1,1,11],
-"globals_func_0x6c.html":[6,1,1,12],
-"globals_func_0x6d.html":[6,1,1,13],
-"globals_func_0x6e.html":[6,1,1,14],
-"globals_func_0x6f.html":[6,1,1,15],
-"globals_func_0x70.html":[6,1,1,16],
-"globals_func_0x71.html":[6,1,1,17],
-"globals_func_0x72.html":[6,1,1,18],
-"globals_func_0x73.html":[6,1,1,19],
-"globals_func_0x74.html":[6,1,1,20],
-"globals_func_0x75.html":[6,1,1,21],
-"globals_func_0x76.html":[6,1,1,22],
-"globals_func_0x77.html":[6,1,1,23],
-"globals_func_0x78.html":[6,1,1,24],
-"globals_func_0x7a.html":[6,1,1,25],
-"globals_vars.html":[6,1,2],
-"globals_vars.html":[6,1,2,0],
-"globals_vars_0x61.html":[6,1,2,1],
-"globals_vars_0x63.html":[6,1,2,2],
-"globals_vars_0x64.html":[6,1,2,3],
-"globals_vars_0x65.html":[6,1,2,4],
-"globals_vars_0x66.html":[6,1,2,5],
-"globals_vars_0x67.html":[6,1,2,6],
-"globals_vars_0x68.html":[6,1,2,7],
-"globals_vars_0x69.html":[6,1,2,8],
-"globals_vars_0x6a.html":[6,1,2,9],
-"globals_vars_0x6b.html":[6,1,2,10],
-"globals_vars_0x6c.html":[6,1,2,11],
-"globals_vars_0x6d.html":[6,1,2,12],
-"globals_vars_0x6e.html":[6,1,2,13],
-"globals_vars_0x70.html":[6,1,2,14],
-"globals_vars_0x72.html":[6,1,2,15],
-"globals_vars_0x73.html":[6,1,2,16],
-"globals_vars_0x74.html":[6,1,2,17],
-"globals_vars_0x75.html":[6,1,2,18],
-"globals_vars_0x77.html":[6,1,2,19],
-"globals_vars_0x78.html":[6,1,2,20],
-"globals_vars_0x7a.html":[6,1,2,21],
-"gprobe_8php.html":[6,0,0,38],
-"gprobe_8php.html#adf72cb0a70b5b9d99fdec1cc60e18ed1":[6,0,0,38,0],
-"greenthumbnails_8php.html":[6,0,3,1,0,2,3],
-"help_8php.html":[6,0,1,40],
-"help_8php.html#a06b2a51aaabed99e53a9b639047c4ce4":[6,0,1,40,1],
-"help_8php.html#af055e15f600ffa6fbca9386fdf715224":[6,0,1,40,0],
-"hierarchy.html":[5,2],
-"home_8php.html":[6,0,1,41],
-"home_8php.html#aa1cf697851a646755baf537f75334c46":[6,0,1,41,0],
-"home_8php.html#ac4642c38b6f23a8d065dd4a75c620bde":[6,0,1,41,1],
-"hostxrd_8php.html":[6,0,1,42],
-"hostxrd_8php.html#aa37ffc8e7900bc76c4828bd25916db92":[6,0,1,42,0],
-"html2bbcode_8php.html":[6,0,0,40],
-"html2bbcode_8php.html#a39c662b19d318990fee2ba795a55d7a7":[6,0,0,40,3],
-"html2bbcode_8php.html#a5ad726995ac4070213abdb3bd09f4837":[6,0,0,40,1],
-"html2bbcode_8php.html#a71a07f135d196ec5943b13f7b2e6a9b2":[6,0,0,40,0],
-"html2bbcode_8php.html#ad174afe0ccbd8c475e48f8a6ee2f27d8":[6,0,0,40,2],
-"html2plain_8php.html":[6,0,0,41],
-"html2plain_8php.html#a3214912e3d00cf0a948072daccf16740":[6,0,0,41,0],
-"html2plain_8php.html#a56d29b254333d29abb9d96a9a903a4b0":[6,0,0,41,3],
-"html2plain_8php.html#ab3e121fa9f3feb16f9f942e705bc6c04":[6,0,0,41,2],
-"html2plain_8php.html#ae1c203d0f089d5678d73a6c64a395201":[6,0,0,41,1],
-"hubloc_8php.html":[6,0,0,42],
-"hubloc_8php.html#ad3d0dcfcfcb347744f7617fe6f5de002":[6,0,0,42,0],
-"identity_8php.html":[6,0,0,43],
-"identity_8php.html#a1cf83ac2b645de12868edaa3a5718f05":[6,0,0,43,3],
-"identity_8php.html#a2ab5172eabd375869060c9ad68323f5c":[6,0,0,43,15],
-"identity_8php.html#a332df795f684788002f5a6424abacfd7":[6,0,0,43,10],
-"identity_8php.html#a345f4c943d84de502ec6e72d2c813945":[6,0,0,43,2],
-"identity_8php.html#a3570a4eb77332b292d394c4132cb8f03":[6,0,0,43,13],
-"identity_8php.html#a432259b2cf5b6f59be53e71db9f2c7dc":[6,0,0,43,22],
-"identity_8php.html#a4751b522ea913d0e7ed43e03d22e9e68":[6,0,0,43,21],
-"identity_8php.html#a47d6f53216f23a3484061793bef29854":[6,0,0,43,23],
-"identity_8php.html#a490972c02fdb638c52ec0e012a30bfd2":[6,0,0,43,8],
-"identity_8php.html#a4e996e44b50330098a04b467367a559f":[6,0,0,43,18],
-"identity_8php.html#a5b815330f3d177ab383af37a6c12e532":[6,0,0,43,26],
-"identity_8php.html#a680fbafc2db023c5b1309e0180e81315":[6,0,0,43,27],
-"identity_8php.html#a77d2237f1846964634b1c99089c27c7d":[6,0,0,43,1],
-"identity_8php.html#a78151baf4407a8482d2681a91a9c486b":[6,0,0,43,24],
-"identity_8php.html#a9637c557e13d9671f3eeb124ab98212a":[6,0,0,43,17],
-"identity_8php.html#aa46321e1cd6a3b8dfde8bf9510112fec":[6,0,0,43,9],
-"identity_8php.html#aa4bd4abfcba883f43919e89ec6419025":[6,0,0,43,19],
-"identity_8php.html#aa870d2c1f558cfd52bef05bc124e8fa4":[6,0,0,43,0],
-"identity_8php.html#aaeb666872995e3ab8da8f7bc5f3b2bd3":[6,0,0,43,12],
-"identity_8php.html#aaff86ee3b5984821e7a256c2da5f1a51":[6,0,0,43,11],
-"identity_8php.html#ab1485a26b032956e1496fc08c58b83ed":[6,0,0,43,6],
-"identity_8php.html#ac73b3e13778c564c877554517a7f51ba":[6,0,0,43,5],
-"identity_8php.html#ac9fcd5c4c371998790b5c55c3d0f4633":[6,0,0,43,14],
-"identity_8php.html#ad2c97627a313d53df1a1c7b4215ddb51":[6,0,0,43,4],
-"identity_8php.html#ad4a2c8caca8f6ae93633ebeca0ed6620":[6,0,0,43,20],
-"identity_8php.html#ae2b140df652a55ca11bb6a99005fce35":[6,0,0,43,16],
-"identity_8php.html#ae381db3d43f8e7c1da8b15d14ecf5312":[6,0,0,43,7],
-"identity_8php.html#af2802bc13a00a17b867bba7978ba8f58":[6,0,0,43,25],
-"import_8php.html":[6,0,1,43],
-"import_8php.html#af17fef0410518f7eac205d0ea416eaa2":[6,0,1,43,1],
-"import_8php.html#afdf25ed70096d5dbf4f6d0ca79fea184":[6,0,1,43,0],
-"importelm_8php.html":[6,0,1,44],
-"importelm_8php.html#a1a4f71e6d76ace6add5e9659845f5e5f":[6,0,1,44,0],
-"include_2api_8php.html":[6,0,0,5],
-"include_2api_8php.html#a0991f72554f821255397d615e76f3203":[6,0,0,5,12],
-"include_2api_8php.html#a176c448d79c211ad41c2bbe3124658f5":[6,0,0,5,5],
-"include_2api_8php.html#a18cab7c6391df5c421753463f5d2a879":[6,0,0,5,18],
-"include_2api_8php.html#a2c71b1226ef1283b5370bd1c200fee5f":[6,0,0,5,15],
-"include_2api_8php.html#a2e94eab9d6c164bfef7a1b2ab87b339b":[6,0,0,5,0],
-"include_2api_8php.html#a32f0dda848d0c11c727fe1c3e741c283":[6,0,0,5,44],
-"include_2api_8php.html#a36344c80b8e9755da2f2dd3a0e28cce8":[6,0,0,5,16],
-"include_2api_8php.html#a43c47de8565cc00c3369cb35c19cc75e":[6,0,0,5,50],
-"include_2api_8php.html#a450d8732b7b608f7ac929aee61572b95":[6,0,0,5,38],
-"include_2api_8php.html#a4c6fb9fb5203aa60f4b3afd4521db8ea":[6,0,0,5,19],
-"include_2api_8php.html#a528d8070ee74ea800102936ce73cf366":[6,0,0,5,37],
-"include_2api_8php.html#a53b0680b682ae6078f2e1ed18cfb3f74":[6,0,0,5,21],
-"include_2api_8php.html#a58cf4c02ef435996f5c3bc4283d3968d":[6,0,0,5,13],
-"include_2api_8php.html#a5990101034e7abf6404feba3cd273629":[6,0,0,5,4],
-"include_2api_8php.html#a623793229a7256dd31bcfd5ab90eef08":[6,0,0,5,45],
-"include_2api_8php.html#a645397787618b5c548a31e8686e8cca4":[6,0,0,5,32],
-"include_2api_8php.html#a6951c690d87775eb37e569c66011988e":[6,0,0,5,35],
-"include_2api_8php.html#a6a04b48168ba1d9dd2de3081a630611f":[6,0,0,5,31],
-"include_2api_8php.html#a72bfecac1970bc29b853073e816388ff":[6,0,0,5,6],
-"include_2api_8php.html#a7759ccddc8dff012ad168e511ffe5af5":[6,0,0,5,9],
-"include_2api_8php.html#a864191bb876a515ed71b17e260ef35ad":[6,0,0,5,2],
-"include_2api_8php.html#a8969e8d9c683f12ba17dcd4b059e020d":[6,0,0,5,46]
+"functions_func_0x76.html":[5,3,1,19]
};
diff --git a/doc/html/navtreeindex5.js b/doc/html/navtreeindex5.js
index 3a65102f6..e77a39247 100644
--- a/doc/html/navtreeindex5.js
+++ b/doc/html/navtreeindex5.js
@@ -1,253 +1,253 @@
var NAVTREEINDEX5 =
{
-"include_2api_8php.html#a8b25a186bd0893f51aa72a62f655735e":[6,0,0,5,39],
-"include_2api_8php.html#a9160288b7ac220635942d8dc209b78c3":[6,0,0,5,10],
-"include_2api_8php.html#a970b02c06dea8b229aa3d5fff9cf4705":[6,0,0,5,8],
-"include_2api_8php.html#aa0d6b29fff0344a8e67f3507a6d01410":[6,0,0,5,34],
-"include_2api_8php.html#aa1bddb580510e70cc1a7b7381667f1a3":[6,0,0,5,28],
-"include_2api_8php.html#aa40bae797bcd9ccacffdce5a3b5a1afa":[6,0,0,5,23],
-"include_2api_8php.html#aa49741342ad8ba285737eea1209a37e1":[6,0,0,5,25],
-"include_2api_8php.html#aa62b15a6bbb280e86b98132eb214013d":[6,0,0,5,52],
-"include_2api_8php.html#aa6fc3bc8c0fad1d081db0dcc456dd77f":[6,0,0,5,29],
-"include_2api_8php.html#aa9dc5350b26d6c7727d6c4b641ecba18":[6,0,0,5,3],
-"include_2api_8php.html#aafa82b65a9f879a1a1197cfe8aaf3898":[6,0,0,5,49],
-"include_2api_8php.html#ab1ecb58954f722444bfe03233345cb1b":[6,0,0,5,17],
-"include_2api_8php.html#abe8e929e93f7ab134b1cb1fb30f19a76":[6,0,0,5,48],
-"include_2api_8php.html#ac2c2b18c426d697d11a830bca146be8a":[6,0,0,5,30],
-"include_2api_8php.html#ac5a64cc81d70ff3cf866093ea9721d23":[6,0,0,5,24],
-"include_2api_8php.html#acafd2899309a005fcb725289173dc7fe":[6,0,0,5,22],
-"include_2api_8php.html#ad24ce1bf20867add4c9211a8eaf93f22":[6,0,0,5,40],
-"include_2api_8php.html#ad2b0192f3006918bea895de8074bf8d2":[6,0,0,5,11],
-"include_2api_8php.html#ad4c29f43418f6110f85a6b3998239ab4":[6,0,0,5,33],
-"include_2api_8php.html#ad4d1634df6b35126552324683caaffa2":[6,0,0,5,43],
-"include_2api_8php.html#ade742525b2e41c82b090799ef3c51d5e":[6,0,0,5,36],
-"include_2api_8php.html#adfc035ee6303c1d8ba5336a4ead2bd53":[6,0,0,5,14],
-"include_2api_8php.html#ae0fa388479cace9c5a7a45b571ab42f8":[6,0,0,5,41],
-"include_2api_8php.html#ae82608c317421f27446465aa6724733d":[6,0,0,5,20],
-"include_2api_8php.html#ae8f5863e18d69421005c71441c9d99a5":[6,0,0,5,1],
-"include_2api_8php.html#aea2dda92a155f2843a0ca188d8dfdf25":[6,0,0,5,7],
-"include_2api_8php.html#aeb2e7ad00ea666b4b6dfcf82008194f8":[6,0,0,5,51],
-"include_2api_8php.html#af6f1d89cdb0a0621025efbec1597bc63":[6,0,0,5,42],
-"include_2api_8php.html#afb99daa6b731bf497b81f2128084852c":[6,0,0,5,47],
-"include_2api_8php.html#afe534f826e4282b72d66e8cadca7bb73":[6,0,0,5,26],
-"include_2api_8php.html#aff322705cc6084b329003fc8eab0aad0":[6,0,0,5,27],
-"include_2apps_8php.html":[6,0,0,6],
-"include_2apps_8php.html#a01cabfb33b2d0d843cf3bf4e3d3f0ab0":[6,0,0,6,5],
-"include_2apps_8php.html#a15626f24069c18816f7cdaf4735f58f9":[6,0,0,6,8],
-"include_2apps_8php.html#a1adcd1aff4d36ad0277daca9f3d2bbe2":[6,0,0,6,4],
-"include_2apps_8php.html#a1b2e737f477a2e0d9d11ef14adc5aa66":[6,0,0,6,7],
-"include_2apps_8php.html#a1cb5c016510e39bcdc1d1c096d51c5c7":[6,0,0,6,2],
-"include_2apps_8php.html#a32fe4ed9666228fd4b67dc487cc57a83":[6,0,0,6,12],
-"include_2apps_8php.html#a48289d5cc44b7638191738106ac5d030":[6,0,0,6,13],
-"include_2apps_8php.html#a6b472df85ed875e7ae75642cece5206f":[6,0,0,6,1],
-"include_2apps_8php.html#a72756e1601489eb77971eeda011446d0":[6,0,0,6,3],
-"include_2apps_8php.html#ab93a3310b7de99ee90f673518eccb658":[6,0,0,6,6],
-"include_2apps_8php.html#ad5f6f1443725386cc7af5ed34a5fe185":[6,0,0,6,0],
-"include_2apps_8php.html#ad6ba3f254003f69f8f3f94ca5bda0680":[6,0,0,6,11],
-"include_2apps_8php.html#ae64f72eb4f126e03b4eb65ed1702a3ca":[6,0,0,6,10],
-"include_2apps_8php.html#aeab6a62d2f3dfaa86ed043a006305f46":[6,0,0,6,9],
-"include_2attach_8php.html":[6,0,0,7],
-"include_2attach_8php.html#a052f14487ff2ce72f62a09fac8d7e997":[6,0,0,7,9],
-"include_2attach_8php.html#a0d07c5b83d3d54e186f752e571847b36":[6,0,0,7,0],
-"include_2attach_8php.html#a1d72ef7cb940f6868e3e2a841cadfe8f":[6,0,0,7,11],
-"include_2attach_8php.html#a3634af95f11a023dd8e882c3c7a3600d":[6,0,0,7,5],
-"include_2attach_8php.html#a4dbfd7e1cef52aa9ef52f4b88929fa86":[6,0,0,7,8],
-"include_2attach_8php.html#a5c0875eafb8c0f8a0620ff7a875a2221":[6,0,0,7,2],
-"include_2attach_8php.html#a5d484de2d19a93071571d6499a50ae34":[6,0,0,7,12],
-"include_2attach_8php.html#a6aa00ea010ea030110faefb75eafc1ce":[6,0,0,7,10],
-"include_2attach_8php.html#a6fdd92775f31c07d2863e16e0026018a":[6,0,0,7,13],
-"include_2attach_8php.html#a70bd666e080c2af5a91f5d14c297b8cd":[6,0,0,7,4],
-"include_2attach_8php.html#a84a8a64c4805e1525b42d4add464833f":[6,0,0,7,7],
-"include_2attach_8php.html#a887d2d44a3ef18dcb6624e7fb58dc8e3":[6,0,0,7,3],
-"include_2attach_8php.html#ab6830b3ab74a5d284876141ac80f6cbc":[6,0,0,7,6],
-"include_2attach_8php.html#ad991208ce939387e2f93a3bce7d09932":[6,0,0,7,1],
-"include_2attach_8php.html#aeb07968990e66a88c95483ca09a7f909":[6,0,0,7,14],
-"include_2bookmarks_8php.html":[6,0,0,12],
-"include_2bookmarks_8php.html#a743763b0ce83af0bbc8a2f7ac16033aa":[6,0,0,12,1],
-"include_2bookmarks_8php.html#aef1cb2968c41c759f2d106e1088ca323":[6,0,0,12,0],
-"include_2chanman_8php.html":[6,0,0,14],
-"include_2chanman_8php.html#a21ba9a5c961e866ff27aee3ee67bf99b":[6,0,0,14,0],
-"include_2chat_8php.html":[6,0,0,15],
-"include_2chat_8php.html#a1ee1360f7d2549c7549ae07cb5190f0f":[6,0,0,15,4],
-"include_2chat_8php.html#a2ba3af6884ecdce95de69262fe599639":[6,0,0,15,2],
-"include_2chat_8php.html#a2c95b545e46bfee64faa05ecf0afea91":[6,0,0,15,3],
-"include_2chat_8php.html#acdc80dba4eb796c7472b21129b435422":[6,0,0,15,1],
-"include_2chat_8php.html#acea6b176eb7aff44d9ba3ae24ce511d3":[6,0,0,15,0],
-"include_2chat_8php.html#aedcb532a0627b8644001a2fadab4e87a":[6,0,0,15,5],
-"include_2config_8php.html":[6,0,0,19],
-"include_2config_8php.html#a27559f388c9b9af81c94e48d6889d1d1":[6,0,0,19,7],
-"include_2config_8php.html#a549910227348003efc3c05c9105c42da":[6,0,0,19,0],
-"include_2config_8php.html#a55bbed9a014c9109c767486834f3ca33":[6,0,0,19,9],
-"include_2config_8php.html#a61591371cb18764138655d67dc817ab2":[6,0,0,19,11],
-"include_2config_8php.html#a7ad2081c5f812ac4387fd76f3762d941":[6,0,0,19,1],
-"include_2config_8php.html#a9c171def547deee16738dc58fdeb4b72":[6,0,0,19,2],
-"include_2config_8php.html#aa3dc1d3de2d091ac702e675acd3a085e":[6,0,0,19,6],
-"include_2config_8php.html#ac543813a980b3841cc5a277fcd4a24a6":[6,0,0,19,8],
-"include_2config_8php.html#ad58a4913937179adb13201c2ee3261ad":[6,0,0,19,5],
-"include_2config_8php.html#ad6da879e4fb5b37d1e161d4e9be5c32a":[6,0,0,19,10],
-"include_2config_8php.html#af02c96e6b37335774b548914ede1d22e":[6,0,0,19,3],
-"include_2config_8php.html#af08b7adb63adfb2eda7c466fba0cce74":[6,0,0,19,4],
-"include_2config_8php.html#afe117b70f1bba2f6348d9300b601f86e":[6,0,0,19,12],
-"include_2directory_8php.html":[6,0,0,30],
-"include_2directory_8php.html#aa75d3b0697ca1456aaabdb37a74aa0f0":[6,0,0,30,0],
-"include_2follow_8php.html":[6,0,0,36],
-"include_2follow_8php.html#ae387d4ae097c23d69f3247e7f08140c7":[6,0,0,36,0],
-"include_2group_8php.html":[6,0,0,39],
-"include_2group_8php.html#a0122ef312df2c5546b1a46b3e6c7b31b":[6,0,0,39,2],
-"include_2group_8php.html#a048f6892bfd28852de1b76470df411de":[6,0,0,39,10],
-"include_2group_8php.html#a06ec565d2b64e79044e7c1bf91a2a4ce":[6,0,0,39,1],
-"include_2group_8php.html#a22a81875259c7d3d64d4848afea6b345":[6,0,0,39,0],
-"include_2group_8php.html#a4118f498bbd1530c1d0136d016d197a5":[6,0,0,39,6],
-"include_2group_8php.html#a540e3ef36f47d47532646be4241f6518":[6,0,0,39,7],
-"include_2group_8php.html#a5bd191d9692e6c34d48c0ede10810f09":[6,0,0,39,4],
-"include_2group_8php.html#a6a69bd7be032fa8ce4e49c43a42cc6e9":[6,0,0,39,8],
-"include_2group_8php.html#a90e157b3e1b99c981809cb5a2abd3245":[6,0,0,39,5],
-"include_2group_8php.html#ab0e422a0f31c0c64fd9084ca03d85f32":[6,0,0,39,11],
-"include_2group_8php.html#abd66a5ea34a07a3422dc2dde6c7b3ecb":[6,0,0,39,3],
-"include_2group_8php.html#afb802ae2ce73aae4bc36d157f7b6a92f":[6,0,0,39,9],
-"include_2menu_8php.html":[6,0,0,48],
-"include_2menu_8php.html#a03a5deed3908543581c074ce333e9d6a":[6,0,0,48,10],
-"include_2menu_8php.html#a08a800821721781a8dfffbe31481ff98":[6,0,0,48,1],
-"include_2menu_8php.html#a32701c4245e78ba9106eef52c08bf33d":[6,0,0,48,9],
-"include_2menu_8php.html#a3884bda4d85d84ec99447db9403a68d8":[6,0,0,48,3],
-"include_2menu_8php.html#a47447c01ba8ea04cd74af1d4c5b68fc7":[6,0,0,48,8],
-"include_2menu_8php.html#a68ebbf492470c930f652013656f9071d":[6,0,0,48,7],
-"include_2menu_8php.html#a6a33c6a3db2a7510b16cc656edaec571":[6,0,0,48,5],
-"include_2menu_8php.html#a9aa8e0052dd47c1a93f53a983bd4620a":[6,0,0,48,2],
-"include_2menu_8php.html#acb66f80ca895a6ccd562b3d9ae7b41aa":[6,0,0,48,6],
-"include_2menu_8php.html#ad87f51ce85172bcc3f931aa0cd96a804":[6,0,0,48,4],
-"include_2menu_8php.html#add35fae5e9695031b3d46e30ac409eb8":[6,0,0,48,0],
-"include_2message_8php.html":[6,0,0,49],
-"include_2message_8php.html#a254a756031e4d5e94f85e2939bdb5091":[6,0,0,49,2],
-"include_2message_8php.html#a5f8de9847e203329e317ac38dc646898":[6,0,0,49,1],
-"include_2message_8php.html#a652973ce47a262f2d238c2fd6233d97e":[6,0,0,49,3],
-"include_2message_8php.html#a751ffd6635022b2190f56154ee745752":[6,0,0,49,4],
-"include_2message_8php.html#aed272d77c06a309e2836ac79e75613f1":[6,0,0,49,0],
-"include_2network_8php.html":[6,0,0,51],
-"include_2network_8php.html#a1ff07d9fad93b713b93da0ab77aab7f0":[6,0,0,51,5],
-"include_2network_8php.html#a27a951b59d8d622c0b3e7b0673ba74c6":[6,0,0,51,10],
-"include_2network_8php.html#a469b9bd700269cd07d954f1a16c5899b":[6,0,0,51,4],
-"include_2network_8php.html#a4c5d50079e089168d9248427018fffd4":[6,0,0,51,9],
-"include_2network_8php.html#a4cfb2c05a1c295317283d762440ce0b2":[6,0,0,51,8],
-"include_2network_8php.html#a5caa264fab6d2b2344e6bd5b298b08f2":[6,0,0,51,13],
-"include_2network_8php.html#a78e89557b2fbd344ad790846d761b0c7":[6,0,0,51,7],
-"include_2network_8php.html#a8122356933bcd6b0a8567e8e15ae5cc5":[6,0,0,51,14],
-"include_2network_8php.html#a897e7112d86eb95526cbd0bff9375f02":[6,0,0,51,12],
-"include_2network_8php.html#a8d5a3afb51cc932032b5dcc159efaae0":[6,0,0,51,6],
-"include_2network_8php.html#a9129fd55e7fc175b4ea9a195cccc16bc":[6,0,0,51,19],
-"include_2network_8php.html#a99353baabbc3e0584b85eb79ee802cff":[6,0,0,51,16],
-"include_2network_8php.html#a9e9da2aafb806c98ecdc318604e60dc6":[6,0,0,51,17],
-"include_2network_8php.html#aafd06c0a75402aefb06cfb9f9740fa37":[6,0,0,51,18],
-"include_2network_8php.html#ab07ce9d75eae559865ed90aad2154bd7":[6,0,0,51,2],
-"include_2network_8php.html#aba38458a2ff2d92d3536488dbb119694":[6,0,0,51,0],
-"include_2network_8php.html#ad4056d3ce69988f5c1a997a79f503246":[6,0,0,51,3],
-"include_2network_8php.html#adf6008b38c555e98e7ed10da9ede2335":[6,0,0,51,15],
-"include_2network_8php.html#ae8d9c41a11000fb8667039fc71b4f73f":[6,0,0,51,11],
-"include_2network_8php.html#aee35d9ad6b3f872bfb39ba3598936aa7":[6,0,0,51,1],
-"include_2notify_8php.html":[6,0,0,53],
-"include_2notify_8php.html#a0e61728e487df50c72e6434f911a57d3":[6,0,0,53,0],
-"include_2oembed_8php.html":[6,0,0,55],
-"include_2oembed_8php.html#a000a62b97113cf95b0e9e00412168172":[6,0,0,55,5],
-"include_2oembed_8php.html#a00c4c80deffd9daf8dc97b58d4c64ed0":[6,0,0,55,7],
-"include_2oembed_8php.html#a03fa3b7832c98a3d0b4630afeb73d487":[6,0,0,55,1],
-"include_2oembed_8php.html#a26bb4c1e330d2f94ea7b6ce2fe970cf3":[6,0,0,55,4],
-"include_2oembed_8php.html#a98549b9af8140eda3eceaeedcaabc2c2":[6,0,0,55,3],
-"include_2oembed_8php.html#a9e57f3e36a0a0a47e6db79544b701d9a":[6,0,0,55,6],
-"include_2oembed_8php.html#ab953a6e7c11bc6498ce01ed73e2ba319":[6,0,0,55,0],
-"include_2oembed_8php.html#aba89ae64b355efcb4f706553d3edb6a2":[6,0,0,55,2],
-"include_2photos_8php.html":[6,0,0,60],
-"include_2photos_8php.html#a6c40ef58aefef705a5adc84a40e97109":[6,0,0,60,0],
-"include_2photos_8php.html#a7e7abc69872180697c5471dc69349afe":[6,0,0,60,2],
-"include_2photos_8php.html#a8e8b7be99e24c2497bc2cb3339280c35":[6,0,0,60,1],
-"include_2photos_8php.html#aa27b9e435dcc34e1009f56dc02c7ca51":[6,0,0,60,7],
-"include_2photos_8php.html#ab0365f25b22ccea5f085fe7c49e1f4ab":[6,0,0,60,3],
-"include_2photos_8php.html#ad648c0c5544fe9263409b6f6e57c6274":[6,0,0,60,6],
-"include_2photos_8php.html#aedccaf18282b26899d9549c29bd9d1b9":[6,0,0,60,5],
-"include_2photos_8php.html#af24c6aeed28ecc31ec39e7d9a1804979":[6,0,0,60,4],
-"include_2probe_8php.html":[6,0,0,63],
-"include_2probe_8php.html#a12ea7a0def2f0e07242b5c9ac684e01a":[6,0,0,63,3],
-"include_2probe_8php.html#a2b4ac769508f7cfc17fee130279b9cb7":[6,0,0,63,4],
-"include_2probe_8php.html#a2daa857942aceca01f956016dbbd139c":[6,0,0,63,1],
-"include_2probe_8php.html#a3c02c7a23e8335a79c3c0f5331d11a85":[6,0,0,63,8],
-"include_2probe_8php.html#a471851151d8cd7fbb79703e9522eeea8":[6,0,0,63,0],
-"include_2probe_8php.html#a950a200372393f706851103cd3fffcba":[6,0,0,63,6],
-"include_2probe_8php.html#a9b5eca1e01e52b3e65d64db0c92181e0":[6,0,0,63,2],
-"include_2probe_8php.html#aa748dc73a6686c13826b1ee9d16c800d":[6,0,0,63,7],
-"include_2probe_8php.html#ab19a52326b27607a0fb8191cc75ba481":[6,0,0,63,5],
-"index.html":[],
-"interfaceITemplateEngine.html":[5,0,18],
-"interfaceITemplateEngine.html#aaa7381c8becc3d1c1790b53988a0f243":[5,0,18,1],
-"interfaceITemplateEngine.html#aaf2698adbf46c073c24b162fe1b1c442":[5,0,18,0],
-"invite_8php.html":[6,0,1,45],
-"invite_8php.html#a244385b28cfd021d308715f01158bfd9":[6,0,1,45,0],
-"invite_8php.html#aeb0881c0f93c8e8552e5ed756ce6e5a5":[6,0,1,45,1],
-"item_8php.html":[6,0,1,46],
-"item_8php.html#a3daae7944f737bd30412a0d042207c0f":[6,0,1,46,0],
-"item_8php.html#a5b1b36cb301a94b38150074f0d424e74":[6,0,1,46,3],
-"item_8php.html#a693cd09805755ab85bbb5ecae69a48c3":[6,0,1,46,5],
-"item_8php.html#a764bbb2e9a885a86fb23d0b5e4a09221":[6,0,1,46,4],
-"item_8php.html#a7b63a9d0cd02096e17dcf11f4afa7c10":[6,0,1,46,1],
-"item_8php.html#aa22feef4de326e1d7078dedd892e615c":[6,0,1,46,2],
-"items_8php.html":[6,0,0,46],
-"items_8php.html#a004e89d86b0f29b2c4da20108ecc4091":[6,0,0,46,63],
-"items_8php.html#a016dd86c827d08db89061ea81d15c6cb":[6,0,0,46,3],
-"items_8php.html#a01e3cf44e082fa9bd06dcde5bf713d70":[6,0,0,46,7],
-"items_8php.html#a02ca33c31ed535d24894f8a9a91ce9df":[6,0,0,46,37],
-"items_8php.html#a04a35b610acfe54434df08adec39c0c7":[6,0,0,46,28],
-"items_8php.html#a0790a4550b829e85504af548623002ca":[6,0,0,46,8],
-"items_8php.html#a079e099e15d88d47aeb6ca6d60da7107":[6,0,0,46,33],
-"items_8php.html#a09d425596b9f8663472cf7474ad36d96":[6,0,0,46,39],
-"items_8php.html#a0cf98bb619f07dd18f602683a55a5f59":[6,0,0,46,25],
-"items_8php.html#a1e75047cf175aaee8dd16aa761913ff9":[6,0,0,46,5],
-"items_8php.html#a251343637ff40a50cca93452cd530c26":[6,0,0,46,32],
-"items_8php.html#a2541e6861a56d145c9281877cc501615":[6,0,0,46,42],
-"items_8php.html#a275108c050f7eb18bcbb5018e6b81cf6":[6,0,0,46,4],
-"items_8php.html#a2baa9e05f1e8aa3dd61c85803ae39bd6":[6,0,0,46,62],
-"items_8php.html#a2d840c74ed23d1b6c7daee05cf89dda7":[6,0,0,46,21],
-"items_8php.html#a36e656667193c83aa2cc03a024fc131b":[6,0,0,46,0],
-"items_8php.html#a410f9c743877c125ca06312373346903":[6,0,0,46,49],
-"items_8php.html#a49905ea75adfe8a2d110be344d18d6a6":[6,0,0,46,51],
-"items_8php.html#a4e6d7639431e0dd8e9f4dba8e1ac408b":[6,0,0,46,54],
-"items_8php.html#a536d0313b6ffe33b9d2490c4e25c5361":[6,0,0,46,30],
-"items_8php.html#a555762e1022a4b8e3c3abd32e7812408":[6,0,0,46,15],
-"items_8php.html#a566c601726697e044e75284af7fb6f17":[6,0,0,46,20],
-"items_8php.html#a56b2a4abcadfac71175cd50555528cc3":[6,0,0,46,13],
-"items_8php.html#a5ed782ff5b9cf050bec931e06de12c00":[6,0,0,46,41],
-"items_8php.html#a5f690fc2484abec07840b4f9dd525bd9":[6,0,0,46,18],
-"items_8php.html#a649dc3e53ed794d0ead4b5d037f8d8d7":[6,0,0,46,40],
-"items_8php.html#a668ece2c37f05cc3abe538eb0dabfe55":[6,0,0,46,16],
-"items_8php.html#a6bee35961f2e32905f20367a9309d627":[6,0,0,46,35],
-"items_8php.html#a6f7e1334af5d684a987fa6a3eb37f4cc":[6,0,0,46,38],
-"items_8php.html#a756738301f2ed96be50232500677d58a":[6,0,0,46,44],
-"items_8php.html#a77051724d1784074ff187e73a4db93fe":[6,0,0,46,34],
-"items_8php.html#a77da7ce9a117601d49ac4a67c71b514f":[6,0,0,46,47],
-"items_8php.html#a78a60e39f6991bd3324a24dcbf9dac5a":[6,0,0,46,55],
-"items_8php.html#a81565acf729e629e588d823308448e3c":[6,0,0,46,1],
-"items_8php.html#a82955cc578f0fa600acec84475026194":[6,0,0,46,17],
-"items_8php.html#a83a349062945d585edb4b3c5d763ab6e":[6,0,0,46,52],
-"items_8php.html#a8794863cdf8ce1333040933d3a3f66bd":[6,0,0,46,12],
-"items_8php.html#a87ac9e359591721a824ecd23bbb56296":[6,0,0,46,6],
-"items_8php.html#a88c6cf7649ac836fbbed82a7a0315110":[6,0,0,46,60],
-"items_8php.html#a896c1809d58f2d7a42cfe14577958ddf":[6,0,0,46,27],
-"items_8php.html#a8f3c85c584ccd2b98c3ca440e45b40f8":[6,0,0,46,11],
-"items_8php.html#a94ddb1d6c8fa21dd7433677e85168037":[6,0,0,46,31],
-"items_8php.html#aa2d3caa2f27720762b5c729e07df40fb":[6,0,0,46,46],
-"items_8php.html#aa371905f0a211b307cb3f7188c6cba04":[6,0,0,46,61],
-"items_8php.html#aa579bc4445d60098b1410961ca8e96b7":[6,0,0,46,10],
-"items_8php.html#aa723c0571e314a1853a24c5854b4f54f":[6,0,0,46,22],
-"items_8php.html#aa9e99613d38a97b39c8cf5449699c2ee":[6,0,0,46,9],
-"items_8php.html#aab9c6bae4c40799867596bdaae9829fd":[6,0,0,46,29],
-"items_8php.html#aab9e0c58247427126de0699c729c3b6c":[6,0,0,46,57],
-"items_8php.html#aac8c9eb4338e2a996c43914392c6cfdb":[6,0,0,46,14],
-"items_8php.html#ab1bce4261bcf75ad62753b498a144d17":[6,0,0,46,58],
-"items_8php.html#aba98fcbbcd7044a7e9ea34edabc14c87":[6,0,0,46,26],
-"items_8php.html#abf7a1b73eb352d79acd36309b0dababd":[6,0,0,46,2],
-"items_8php.html#ac1fcf621dce7370515b420a7753f4726":[6,0,0,46,48],
-"items_8php.html#ac6673627d289ee4f547de0fe3b7acd0a":[6,0,0,46,19],
-"items_8php.html#acf0bf7c9d21ac84f32effb754f7ad484":[6,0,0,46,43],
-"items_8php.html#ad2abb4644ff1f20fefbc80326fe01cf0":[6,0,0,46,50],
-"items_8php.html#ad34827ed330898456783fb14c7b46154":[6,0,0,46,59],
-"items_8php.html#ad4ee16e3ff1eaf60428c61f82ba25e6a":[6,0,0,46,53],
-"items_8php.html#adf980098b6de9c3993bc3ff26a8dd6f9":[6,0,0,46,24],
-"items_8php.html#ae73794179b62d39bb597ff670ab1c1e5":[6,0,0,46,36]
+"functions_vars.html":[5,3,2],
+"globals.html":[6,1,0],
+"globals.html":[6,1,0,0],
+"globals_0x5f.html":[6,1,0,1],
+"globals_0x61.html":[6,1,0,2],
+"globals_0x62.html":[6,1,0,3],
+"globals_0x63.html":[6,1,0,4],
+"globals_0x64.html":[6,1,0,5],
+"globals_0x65.html":[6,1,0,6],
+"globals_0x66.html":[6,1,0,7],
+"globals_0x67.html":[6,1,0,8],
+"globals_0x68.html":[6,1,0,9],
+"globals_0x69.html":[6,1,0,10],
+"globals_0x6a.html":[6,1,0,11],
+"globals_0x6b.html":[6,1,0,12],
+"globals_0x6c.html":[6,1,0,13],
+"globals_0x6d.html":[6,1,0,14],
+"globals_0x6e.html":[6,1,0,15],
+"globals_0x6f.html":[6,1,0,16],
+"globals_0x70.html":[6,1,0,17],
+"globals_0x71.html":[6,1,0,18],
+"globals_0x72.html":[6,1,0,19],
+"globals_0x73.html":[6,1,0,20],
+"globals_0x74.html":[6,1,0,21],
+"globals_0x75.html":[6,1,0,22],
+"globals_0x76.html":[6,1,0,23],
+"globals_0x77.html":[6,1,0,24],
+"globals_0x78.html":[6,1,0,25],
+"globals_0x7a.html":[6,1,0,26],
+"globals_func.html":[6,1,1],
+"globals_func.html":[6,1,1,0],
+"globals_func_0x61.html":[6,1,1,1],
+"globals_func_0x62.html":[6,1,1,2],
+"globals_func_0x63.html":[6,1,1,3],
+"globals_func_0x64.html":[6,1,1,4],
+"globals_func_0x65.html":[6,1,1,5],
+"globals_func_0x66.html":[6,1,1,6],
+"globals_func_0x67.html":[6,1,1,7],
+"globals_func_0x68.html":[6,1,1,8],
+"globals_func_0x69.html":[6,1,1,9],
+"globals_func_0x6a.html":[6,1,1,10],
+"globals_func_0x6b.html":[6,1,1,11],
+"globals_func_0x6c.html":[6,1,1,12],
+"globals_func_0x6d.html":[6,1,1,13],
+"globals_func_0x6e.html":[6,1,1,14],
+"globals_func_0x6f.html":[6,1,1,15],
+"globals_func_0x70.html":[6,1,1,16],
+"globals_func_0x71.html":[6,1,1,17],
+"globals_func_0x72.html":[6,1,1,18],
+"globals_func_0x73.html":[6,1,1,19],
+"globals_func_0x74.html":[6,1,1,20],
+"globals_func_0x75.html":[6,1,1,21],
+"globals_func_0x76.html":[6,1,1,22],
+"globals_func_0x77.html":[6,1,1,23],
+"globals_func_0x78.html":[6,1,1,24],
+"globals_func_0x7a.html":[6,1,1,25],
+"globals_vars.html":[6,1,2],
+"globals_vars.html":[6,1,2,0],
+"globals_vars_0x61.html":[6,1,2,1],
+"globals_vars_0x63.html":[6,1,2,2],
+"globals_vars_0x64.html":[6,1,2,3],
+"globals_vars_0x65.html":[6,1,2,4],
+"globals_vars_0x66.html":[6,1,2,5],
+"globals_vars_0x67.html":[6,1,2,6],
+"globals_vars_0x68.html":[6,1,2,7],
+"globals_vars_0x69.html":[6,1,2,8],
+"globals_vars_0x6a.html":[6,1,2,9],
+"globals_vars_0x6b.html":[6,1,2,10],
+"globals_vars_0x6c.html":[6,1,2,11],
+"globals_vars_0x6d.html":[6,1,2,12],
+"globals_vars_0x6e.html":[6,1,2,13],
+"globals_vars_0x70.html":[6,1,2,14],
+"globals_vars_0x72.html":[6,1,2,15],
+"globals_vars_0x73.html":[6,1,2,16],
+"globals_vars_0x74.html":[6,1,2,17],
+"globals_vars_0x75.html":[6,1,2,18],
+"globals_vars_0x76.html":[6,1,2,19],
+"globals_vars_0x77.html":[6,1,2,20],
+"globals_vars_0x78.html":[6,1,2,21],
+"globals_vars_0x7a.html":[6,1,2,22],
+"gprobe_8php.html":[6,0,0,41],
+"gprobe_8php.html#adf72cb0a70b5b9d99fdec1cc60e18ed1":[6,0,0,41,0],
+"greenthumbnails_8php.html":[6,0,3,1,0,2,3],
+"hcard_8php.html":[6,0,1,38],
+"hcard_8php.html#a3663012f1549849af88aba2bb87388e3":[6,0,1,38,0],
+"hcard_8php.html#ac34f26b0e6a37eef44fa49bea135136d":[6,0,1,38,1],
+"help_8php.html":[6,0,1,39],
+"help_8php.html#a06b2a51aaabed99e53a9b639047c4ce4":[6,0,1,39,1],
+"help_8php.html#af055e15f600ffa6fbca9386fdf715224":[6,0,1,39,0],
+"hierarchy.html":[5,2],
+"hivenet_2php_2style_8php.html":[6,0,3,1,1,0,0],
+"hivenet_2php_2theme_8php.html":[6,0,3,1,1,0,1],
+"hivenet_2php_2theme_8php.html#a3a8b539b112ae63936025236dbaf0a29":[6,0,3,1,1,0,1,0],
+"home_8php.html":[6,0,1,40],
+"home_8php.html#a6e3dbf78f4ed74ab2577de221190b33f":[6,0,1,40,0],
+"home_8php.html#ac4642c38b6f23a8d065dd4a75c620bde":[6,0,1,40,1],
+"hostxrd_8php.html":[6,0,1,41],
+"hostxrd_8php.html#aa37ffc8e7900bc76c4828bd25916db92":[6,0,1,41,0],
+"html2bbcode_8php.html":[6,0,0,43],
+"html2bbcode_8php.html#a39c662b19d318990fee2ba795a55d7a7":[6,0,0,43,3],
+"html2bbcode_8php.html#a5ad726995ac4070213abdb3bd09f4837":[6,0,0,43,1],
+"html2bbcode_8php.html#a71a07f135d196ec5943b13f7b2e6a9b2":[6,0,0,43,0],
+"html2bbcode_8php.html#ad174afe0ccbd8c475e48f8a6ee2f27d8":[6,0,0,43,2],
+"html2plain_8php.html":[6,0,0,44],
+"html2plain_8php.html#a3214912e3d00cf0a948072daccf16740":[6,0,0,44,0],
+"html2plain_8php.html#a56d29b254333d29abb9d96a9a903a4b0":[6,0,0,44,3],
+"html2plain_8php.html#ab3e121fa9f3feb16f9f942e705bc6c04":[6,0,0,44,2],
+"html2plain_8php.html#ae1c203d0f089d5678d73a6c64a395201":[6,0,0,44,1],
+"hubloc_8php.html":[6,0,0,45],
+"hubloc_8php.html#a84c79b7be352f62d12fe4fa2c80fc6ea":[6,0,0,45,3],
+"hubloc_8php.html#acb708dd197aae72a4858cf5ff4e3195b":[6,0,0,45,5],
+"hubloc_8php.html#ad3d0dcfcfcb347744f7617fe6f5de002":[6,0,0,45,2],
+"hubloc_8php.html#ad86214b3a74084bd7b54e8d6c919ce4d":[6,0,0,45,0],
+"hubloc_8php.html#aebd244b4616ded022cbbee5e82926951":[6,0,0,45,1],
+"hubloc_8php.html#af1b476c936f96a93282b1d058e3d05ea":[6,0,0,45,4],
+"identity_8php.html":[6,0,0,46],
+"identity_8php.html#a1cf83ac2b645de12868edaa3a5718f05":[6,0,0,46,3],
+"identity_8php.html#a224710dfb7465b706c91134247c20afa":[6,0,0,46,12],
+"identity_8php.html#a293f416ce9050220b183e08ff5890216":[6,0,0,46,6],
+"identity_8php.html#a2ab5172eabd375869060c9ad68323f5c":[6,0,0,46,18],
+"identity_8php.html#a2e6a1cc35887937823ec7fbb90472afe":[6,0,0,46,23],
+"identity_8php.html#a332df795f684788002f5a6424abacfd7":[6,0,0,46,11],
+"identity_8php.html#a345f4c943d84de502ec6e72d2c813945":[6,0,0,46,2],
+"identity_8php.html#a432259b2cf5b6f59be53e71db9f2c7dc":[6,0,0,46,27],
+"identity_8php.html#a4751b522ea913d0e7ed43e03d22e9e68":[6,0,0,46,26],
+"identity_8php.html#a47d6f53216f23a3484061793bef29854":[6,0,0,46,28],
+"identity_8php.html#a490972c02fdb638c52ec0e012a30bfd2":[6,0,0,46,9],
+"identity_8php.html#a4e996e44b50330098a04b467367a559f":[6,0,0,46,21],
+"identity_8php.html#a4ff59df0f0a668a06a8411f87496aa21":[6,0,0,46,13],
+"identity_8php.html#a5650319c799de09d1b6d1076b6f839a4":[6,0,0,46,24],
+"identity_8php.html#a5b815330f3d177ab383af37a6c12e532":[6,0,0,46,31],
+"identity_8php.html#a680fbafc2db023c5b1309e0180e81315":[6,0,0,46,32],
+"identity_8php.html#a77d2237f1846964634b1c99089c27c7d":[6,0,0,46,1],
+"identity_8php.html#a78151baf4407a8482d2681a91a9c486b":[6,0,0,46,29],
+"identity_8php.html#a9637c557e13d9671f3eeb124ab98212a":[6,0,0,46,20],
+"identity_8php.html#aa46321e1cd6a3b8dfde8bf9510112fec":[6,0,0,46,10],
+"identity_8php.html#aa4bd4abfcba883f43919e89ec6419025":[6,0,0,46,22],
+"identity_8php.html#aa870d2c1f558cfd52bef05bc124e8fa4":[6,0,0,46,0],
+"identity_8php.html#aaeb666872995e3ab8da8f7bc5f3b2bd3":[6,0,0,46,15],
+"identity_8php.html#aaff86ee3b5984821e7a256c2da5f1a51":[6,0,0,46,14],
+"identity_8php.html#ab1485a26b032956e1496fc08c58b83ed":[6,0,0,46,7],
+"identity_8php.html#ac73b3e13778c564c877554517a7f51ba":[6,0,0,46,5],
+"identity_8php.html#ac9fcd5c4c371998790b5c55c3d0f4633":[6,0,0,46,17],
+"identity_8php.html#ad2c97627a313d53df1a1c7b4215ddb51":[6,0,0,46,4],
+"identity_8php.html#ad4a2c8caca8f6ae93633ebeca0ed6620":[6,0,0,46,25],
+"identity_8php.html#ae2b140df652a55ca11bb6a99005fce35":[6,0,0,46,19],
+"identity_8php.html#ae381db3d43f8e7c1da8b15d14ecf5312":[6,0,0,46,8],
+"identity_8php.html#af2802bc13a00a17b867bba7978ba8f58":[6,0,0,46,30],
+"identity_8php.html#afaedbc8e2d2a70ec8b006162baac5249":[6,0,0,46,16],
+"impel_8php.html":[6,0,1,42],
+"impel_8php.html#ab7db6fca43b42ea4332cb3e841b3cf7b":[6,0,1,42,0],
+"import_8php.html":[6,0,1,43],
+"import_8php.html#af17fef0410518f7eac205d0ea416eaa2":[6,0,1,43,1],
+"import_8php.html#afdf25ed70096d5dbf4f6d0ca79fea184":[6,0,1,43,0],
+"importelm_8php.html":[6,0,1,44],
+"importelm_8php.html#a1a4f71e6d76ace6add5e9659845f5e5f":[6,0,1,44,0],
+"include_2api_8php.html":[6,0,0,7],
+"include_2api_8php.html#a0991f72554f821255397d615e76f3203":[6,0,0,7,12],
+"include_2api_8php.html#a176c448d79c211ad41c2bbe3124658f5":[6,0,0,7,5],
+"include_2api_8php.html#a18cab7c6391df5c421753463f5d2a879":[6,0,0,7,18],
+"include_2api_8php.html#a2c71b1226ef1283b5370bd1c200fee5f":[6,0,0,7,15],
+"include_2api_8php.html#a2e94eab9d6c164bfef7a1b2ab87b339b":[6,0,0,7,0],
+"include_2api_8php.html#a32f0dda848d0c11c727fe1c3e741c283":[6,0,0,7,47],
+"include_2api_8php.html#a36344c80b8e9755da2f2dd3a0e28cce8":[6,0,0,7,16],
+"include_2api_8php.html#a43c47de8565cc00c3369cb35c19cc75e":[6,0,0,7,53],
+"include_2api_8php.html#a450d8732b7b608f7ac929aee61572b95":[6,0,0,7,41],
+"include_2api_8php.html#a4c6fb9fb5203aa60f4b3afd4521db8ea":[6,0,0,7,19],
+"include_2api_8php.html#a4fe872332ff0bd8d5eae2f0c6819cb60":[6,0,0,7,32],
+"include_2api_8php.html#a528d8070ee74ea800102936ce73cf366":[6,0,0,7,40],
+"include_2api_8php.html#a53b0680b682ae6078f2e1ed18cfb3f74":[6,0,0,7,21],
+"include_2api_8php.html#a58cf4c02ef435996f5c3bc4283d3968d":[6,0,0,7,13],
+"include_2api_8php.html#a5990101034e7abf6404feba3cd273629":[6,0,0,7,4],
+"include_2api_8php.html#a623793229a7256dd31bcfd5ab90eef08":[6,0,0,7,48],
+"include_2api_8php.html#a645397787618b5c548a31e8686e8cca4":[6,0,0,7,35],
+"include_2api_8php.html#a6951c690d87775eb37e569c66011988e":[6,0,0,7,38],
+"include_2api_8php.html#a6a04b48168ba1d9dd2de3081a630611f":[6,0,0,7,34],
+"include_2api_8php.html#a72bfecac1970bc29b853073e816388ff":[6,0,0,7,6],
+"include_2api_8php.html#a7759ccddc8dff012ad168e511ffe5af5":[6,0,0,7,9],
+"include_2api_8php.html#a864191bb876a515ed71b17e260ef35ad":[6,0,0,7,2],
+"include_2api_8php.html#a8969e8d9c683f12ba17dcd4b059e020d":[6,0,0,7,49],
+"include_2api_8php.html#a8b25a186bd0893f51aa72a62f655735e":[6,0,0,7,42],
+"include_2api_8php.html#a9160288b7ac220635942d8dc209b78c3":[6,0,0,7,10],
+"include_2api_8php.html#a970b02c06dea8b229aa3d5fff9cf4705":[6,0,0,7,8],
+"include_2api_8php.html#aa0d6b29fff0344a8e67f3507a6d01410":[6,0,0,7,37],
+"include_2api_8php.html#aa1bddb580510e70cc1a7b7381667f1a3":[6,0,0,7,30],
+"include_2api_8php.html#aa40bae797bcd9ccacffdce5a3b5a1afa":[6,0,0,7,23],
+"include_2api_8php.html#aa49741342ad8ba285737eea1209a37e1":[6,0,0,7,27],
+"include_2api_8php.html#aa62b15a6bbb280e86b98132eb214013d":[6,0,0,7,55],
+"include_2api_8php.html#aa6fc3bc8c0fad1d081db0dcc456dd77f":[6,0,0,7,31],
+"include_2api_8php.html#aa9dc5350b26d6c7727d6c4b641ecba18":[6,0,0,7,3],
+"include_2api_8php.html#aafa82b65a9f879a1a1197cfe8aaf3898":[6,0,0,7,52],
+"include_2api_8php.html#ab1ecb58954f722444bfe03233345cb1b":[6,0,0,7,17],
+"include_2api_8php.html#abe8e929e93f7ab134b1cb1fb30f19a76":[6,0,0,7,51],
+"include_2api_8php.html#ac2c2b18c426d697d11a830bca146be8a":[6,0,0,7,33],
+"include_2api_8php.html#ac5a64cc81d70ff3cf866093ea9721d23":[6,0,0,7,26],
+"include_2api_8php.html#acafd2899309a005fcb725289173dc7fe":[6,0,0,7,22],
+"include_2api_8php.html#ad24ce1bf20867add4c9211a8eaf93f22":[6,0,0,7,43],
+"include_2api_8php.html#ad2b0192f3006918bea895de8074bf8d2":[6,0,0,7,11],
+"include_2api_8php.html#ad4c29f43418f6110f85a6b3998239ab4":[6,0,0,7,36],
+"include_2api_8php.html#ad4d1634df6b35126552324683caaffa2":[6,0,0,7,46],
+"include_2api_8php.html#ad5fe62d6c25c86999f627b2e6cfde536":[6,0,0,7,24],
+"include_2api_8php.html#ade742525b2e41c82b090799ef3c51d5e":[6,0,0,7,39],
+"include_2api_8php.html#adfc035ee6303c1d8ba5336a4ead2bd53":[6,0,0,7,14],
+"include_2api_8php.html#ae0fa388479cace9c5a7a45b571ab42f8":[6,0,0,7,44],
+"include_2api_8php.html#ae46f964e5a9c80b96dc78df61c09ed3a":[6,0,0,7,25],
+"include_2api_8php.html#ae82608c317421f27446465aa6724733d":[6,0,0,7,20],
+"include_2api_8php.html#ae8f5863e18d69421005c71441c9d99a5":[6,0,0,7,1],
+"include_2api_8php.html#aea2dda92a155f2843a0ca188d8dfdf25":[6,0,0,7,7],
+"include_2api_8php.html#aeb2e7ad00ea666b4b6dfcf82008194f8":[6,0,0,7,54],
+"include_2api_8php.html#af6f1d89cdb0a0621025efbec1597bc63":[6,0,0,7,45],
+"include_2api_8php.html#afb99daa6b731bf497b81f2128084852c":[6,0,0,7,50],
+"include_2api_8php.html#afe534f826e4282b72d66e8cadca7bb73":[6,0,0,7,28],
+"include_2api_8php.html#aff322705cc6084b329003fc8eab0aad0":[6,0,0,7,29],
+"include_2apps_8php.html":[6,0,0,8],
+"include_2apps_8php.html#a01cabfb33b2d0d843cf3bf4e3d3f0ab0":[6,0,0,8,5],
+"include_2apps_8php.html#a15626f24069c18816f7cdaf4735f58f9":[6,0,0,8,8],
+"include_2apps_8php.html#a1adcd1aff4d36ad0277daca9f3d2bbe2":[6,0,0,8,4],
+"include_2apps_8php.html#a1b2e737f477a2e0d9d11ef14adc5aa66":[6,0,0,8,7],
+"include_2apps_8php.html#a1cb5c016510e39bcdc1d1c096d51c5c7":[6,0,0,8,2],
+"include_2apps_8php.html#a32fe4ed9666228fd4b67dc487cc57a83":[6,0,0,8,12],
+"include_2apps_8php.html#a48289d5cc44b7638191738106ac5d030":[6,0,0,8,13],
+"include_2apps_8php.html#a6b472df85ed875e7ae75642cece5206f":[6,0,0,8,1],
+"include_2apps_8php.html#a72756e1601489eb77971eeda011446d0":[6,0,0,8,3],
+"include_2apps_8php.html#ab93a3310b7de99ee90f673518eccb658":[6,0,0,8,6],
+"include_2apps_8php.html#ad5f6f1443725386cc7af5ed34a5fe185":[6,0,0,8,0],
+"include_2apps_8php.html#ad6ba3f254003f69f8f3f94ca5bda0680":[6,0,0,8,11],
+"include_2apps_8php.html#ae64f72eb4f126e03b4eb65ed1702a3ca":[6,0,0,8,10],
+"include_2apps_8php.html#aeab6a62d2f3dfaa86ed043a006305f46":[6,0,0,8,9],
+"include_2attach_8php.html":[6,0,0,9],
+"include_2attach_8php.html#a052f14487ff2ce72f62a09fac8d7e997":[6,0,0,9,9],
+"include_2attach_8php.html#a0d07c5b83d3d54e186f752e571847b36":[6,0,0,9,0],
+"include_2attach_8php.html#a1d72ef7cb940f6868e3e2a841cadfe8f":[6,0,0,9,11],
+"include_2attach_8php.html#a3634af95f11a023dd8e882c3c7a3600d":[6,0,0,9,5],
+"include_2attach_8php.html#a4dbfd7e1cef52aa9ef52f4b88929fa86":[6,0,0,9,8],
+"include_2attach_8php.html#a5c0875eafb8c0f8a0620ff7a875a2221":[6,0,0,9,2],
+"include_2attach_8php.html#a5d484de2d19a93071571d6499a50ae34":[6,0,0,9,12],
+"include_2attach_8php.html#a6aa00ea010ea030110faefb75eafc1ce":[6,0,0,9,10],
+"include_2attach_8php.html#a6fdd92775f31c07d2863e16e0026018a":[6,0,0,9,13],
+"include_2attach_8php.html#a70bd666e080c2af5a91f5d14c297b8cd":[6,0,0,9,4],
+"include_2attach_8php.html#a84a8a64c4805e1525b42d4add464833f":[6,0,0,9,7],
+"include_2attach_8php.html#a887d2d44a3ef18dcb6624e7fb58dc8e3":[6,0,0,9,3],
+"include_2attach_8php.html#ab6830b3ab74a5d284876141ac80f6cbc":[6,0,0,9,6],
+"include_2attach_8php.html#ad991208ce939387e2f93a3bce7d09932":[6,0,0,9,1],
+"include_2attach_8php.html#aeb07968990e66a88c95483ca09a7f909":[6,0,0,9,14],
+"include_2bookmarks_8php.html":[6,0,0,14],
+"include_2bookmarks_8php.html#a743763b0ce83af0bbc8a2f7ac16033aa":[6,0,0,14,1],
+"include_2bookmarks_8php.html#aef1cb2968c41c759f2d106e1088ca323":[6,0,0,14,0],
+"include_2chat_8php.html":[6,0,0,16],
+"include_2chat_8php.html#a1ee1360f7d2549c7549ae07cb5190f0f":[6,0,0,16,4],
+"include_2chat_8php.html#a26abdccc2a278a59899896dbbfc6f049":[6,0,0,16,6]
};
diff --git a/doc/html/navtreeindex6.js b/doc/html/navtreeindex6.js
index 8293db2e3..7a3768ebd 100644
--- a/doc/html/navtreeindex6.js
+++ b/doc/html/navtreeindex6.js
@@ -1,41 +1,241 @@
var NAVTREEINDEX6 =
{
-"items_8php.html#af6237605c60d69abdd959ddbbee3420c":[6,0,0,46,56],
-"items_8php.html#af94c281016c6c912d06e064113336c5c":[6,0,0,46,45],
-"items_8php.html#afbcf26dfcf8a83fff952aa858c1b7b67":[6,0,0,46,23],
+"include_2chat_8php.html#a2ba3af6884ecdce95de69262fe599639":[6,0,0,16,2],
+"include_2chat_8php.html#a2c95b545e46bfee64faa05ecf0afea91":[6,0,0,16,3],
+"include_2chat_8php.html#acdc80dba4eb796c7472b21129b435422":[6,0,0,16,1],
+"include_2chat_8php.html#acea6b176eb7aff44d9ba3ae24ce511d3":[6,0,0,16,0],
+"include_2chat_8php.html#aedcb532a0627b8644001a2fadab4e87a":[6,0,0,16,5],
+"include_2config_8php.html":[6,0,0,20],
+"include_2config_8php.html#a27559f388c9b9af81c94e48d6889d1d1":[6,0,0,20,7],
+"include_2config_8php.html#a549910227348003efc3c05c9105c42da":[6,0,0,20,0],
+"include_2config_8php.html#a559791dda7fef8a4b2394c83e835787b":[6,0,0,20,8],
+"include_2config_8php.html#a61591371cb18764138655d67dc817ab2":[6,0,0,20,11],
+"include_2config_8php.html#a7ad2081c5f812ac4387fd76f3762d941":[6,0,0,20,1],
+"include_2config_8php.html#a9c171def547deee16738dc58fdeb4b72":[6,0,0,20,2],
+"include_2config_8php.html#aa3dc1d3de2d091ac702e675acd3a085e":[6,0,0,20,6],
+"include_2config_8php.html#ad58a4913937179adb13201c2ee3261ad":[6,0,0,20,5],
+"include_2config_8php.html#ad6da879e4fb5b37d1e161d4e9be5c32a":[6,0,0,20,10],
+"include_2config_8php.html#aee4b619839cf4b64220f34edf5c67b52":[6,0,0,20,9],
+"include_2config_8php.html#af02c96e6b37335774b548914ede1d22e":[6,0,0,20,3],
+"include_2config_8php.html#af08b7adb63adfb2eda7c466fba0cce74":[6,0,0,20,4],
+"include_2config_8php.html#afe117b70f1bba2f6348d9300b601f86e":[6,0,0,20,12],
+"include_2directory_8php.html":[6,0,0,33],
+"include_2directory_8php.html#aa75d3b0697ca1456aaabdb37a74aa0f0":[6,0,0,33,0],
+"include_2follow_8php.html":[6,0,0,40],
+"include_2follow_8php.html#ae387d4ae097c23d69f3247e7f08140c7":[6,0,0,40,0],
+"include_2group_8php.html":[6,0,0,42],
+"include_2group_8php.html#a0122ef312df2c5546b1a46b3e6c7b31b":[6,0,0,42,2],
+"include_2group_8php.html#a048f6892bfd28852de1b76470df411de":[6,0,0,42,10],
+"include_2group_8php.html#a06ec565d2b64e79044e7c1bf91a2a4ce":[6,0,0,42,1],
+"include_2group_8php.html#a22a81875259c7d3d64d4848afea6b345":[6,0,0,42,0],
+"include_2group_8php.html#a4118f498bbd1530c1d0136d016d197a5":[6,0,0,42,6],
+"include_2group_8php.html#a540e3ef36f47d47532646be4241f6518":[6,0,0,42,7],
+"include_2group_8php.html#a5bd191d9692e6c34d48c0ede10810f09":[6,0,0,42,4],
+"include_2group_8php.html#a6a69bd7be032fa8ce4e49c43a42cc6e9":[6,0,0,42,8],
+"include_2group_8php.html#a90e157b3e1b99c981809cb5a2abd3245":[6,0,0,42,5],
+"include_2group_8php.html#ab0e422a0f31c0c64fd9084ca03d85f32":[6,0,0,42,11],
+"include_2group_8php.html#abd66a5ea34a07a3422dc2dde6c7b3ecb":[6,0,0,42,3],
+"include_2group_8php.html#afb802ae2ce73aae4bc36d157f7b6a92f":[6,0,0,42,9],
+"include_2menu_8php.html":[6,0,0,51],
+"include_2menu_8php.html#a03a5deed3908543581c074ce333e9d6a":[6,0,0,51,11],
+"include_2menu_8php.html#a08a800821721781a8dfffbe31481ff98":[6,0,0,51,1],
+"include_2menu_8php.html#a251bf7e15d21627fd92614198e41c485":[6,0,0,51,10],
+"include_2menu_8php.html#a32701c4245e78ba9106eef52c08bf33d":[6,0,0,51,9],
+"include_2menu_8php.html#a3884bda4d85d84ec99447db9403a68d8":[6,0,0,51,3],
+"include_2menu_8php.html#a47447c01ba8ea04cd74af1d4c5b68fc7":[6,0,0,51,8],
+"include_2menu_8php.html#a68ebbf492470c930f652013656f9071d":[6,0,0,51,7],
+"include_2menu_8php.html#a6a33c6a3db2a7510b16cc656edaec571":[6,0,0,51,5],
+"include_2menu_8php.html#a9aa8e0052dd47c1a93f53a983bd4620a":[6,0,0,51,2],
+"include_2menu_8php.html#acb66f80ca895a6ccd562b3d9ae7b41aa":[6,0,0,51,6],
+"include_2menu_8php.html#ad87f51ce85172bcc3f931aa0cd96a804":[6,0,0,51,4],
+"include_2menu_8php.html#add35fae5e9695031b3d46e30ac409eb8":[6,0,0,51,0],
+"include_2message_8php.html":[6,0,0,52],
+"include_2message_8php.html#a254a756031e4d5e94f85e2939bdb5091":[6,0,0,52,2],
+"include_2message_8php.html#a5f8de9847e203329e317ac38dc646898":[6,0,0,52,1],
+"include_2message_8php.html#a652973ce47a262f2d238c2fd6233d97e":[6,0,0,52,3],
+"include_2message_8php.html#a751ffd6635022b2190f56154ee745752":[6,0,0,52,4],
+"include_2message_8php.html#aed272d77c06a309e2836ac79e75613f1":[6,0,0,52,0],
+"include_2network_8php.html":[6,0,0,54],
+"include_2network_8php.html#a1ff07d9fad93b713b93da0ab77aab7f0":[6,0,0,54,7],
+"include_2network_8php.html#a27a951b59d8d622c0b3e7b0673ba74c6":[6,0,0,54,14],
+"include_2network_8php.html#a316f318167a039c89719afbd129a8f3c":[6,0,0,54,16],
+"include_2network_8php.html#a3e6c751a51de33ad3563f0938296e78a":[6,0,0,54,20],
+"include_2network_8php.html#a469b9bd700269cd07d954f1a16c5899b":[6,0,0,54,6],
+"include_2network_8php.html#a4c5d50079e089168d9248427018fffd4":[6,0,0,54,12],
+"include_2network_8php.html#a4cfb2c05a1c295317283d762440ce0b2":[6,0,0,54,11],
+"include_2network_8php.html#a5176176ddc1906d91f186df6fbd87b48":[6,0,0,54,4],
+"include_2network_8php.html#a5caa264fab6d2b2344e6bd5b298b08f2":[6,0,0,54,19],
+"include_2network_8php.html#a63e62946e194928eb17c5a9f2bbef0fe":[6,0,0,54,5],
+"include_2network_8php.html#a78e89557b2fbd344ad790846d761b0c7":[6,0,0,54,10],
+"include_2network_8php.html#a850ed5307c6a18076f4b80addc99602d":[6,0,0,54,9],
+"include_2network_8php.html#a872bbe72d23826c64c9e0f822180a3ec":[6,0,0,54,13],
+"include_2network_8php.html#a897e7112d86eb95526cbd0bff9375f02":[6,0,0,54,18],
+"include_2network_8php.html#a8d5a3afb51cc932032b5dcc159efaae0":[6,0,0,54,8],
+"include_2network_8php.html#a9129fd55e7fc175b4ea9a195cccc16bc":[6,0,0,54,24],
+"include_2network_8php.html#a984708e60d531b31b2d1f88b5f408f7b":[6,0,0,54,25],
+"include_2network_8php.html#a99353baabbc3e0584b85eb79ee802cff":[6,0,0,54,21],
+"include_2network_8php.html#a9e9da2aafb806c98ecdc318604e60dc6":[6,0,0,54,22],
+"include_2network_8php.html#aafd06c0a75402aefb06cfb9f9740fa37":[6,0,0,54,23],
+"include_2network_8php.html#ab07ce9d75eae559865ed90aad2154bd7":[6,0,0,54,2],
+"include_2network_8php.html#aba38458a2ff2d92d3536488dbb119694":[6,0,0,54,0],
+"include_2network_8php.html#acb0bd7f5fe38ff1eaebeae3284525070":[6,0,0,54,17],
+"include_2network_8php.html#ad4056d3ce69988f5c1a997a79f503246":[6,0,0,54,3],
+"include_2network_8php.html#ae8d9c41a11000fb8667039fc71b4f73f":[6,0,0,54,15],
+"include_2network_8php.html#aee35d9ad6b3f872bfb39ba3598936aa7":[6,0,0,54,1],
+"include_2notify_8php.html":[6,0,0,56],
+"include_2notify_8php.html#a0e61728e487df50c72e6434f911a57d3":[6,0,0,56,0],
+"include_2oembed_8php.html":[6,0,0,58],
+"include_2oembed_8php.html#a000a62b97113cf95b0e9e00412168172":[6,0,0,58,5],
+"include_2oembed_8php.html#a00c4c80deffd9daf8dc97b58d4c64ed0":[6,0,0,58,7],
+"include_2oembed_8php.html#a03fa3b7832c98a3d0b4630afeb73d487":[6,0,0,58,1],
+"include_2oembed_8php.html#a26bb4c1e330d2f94ea7b6ce2fe970cf3":[6,0,0,58,4],
+"include_2oembed_8php.html#a98549b9af8140eda3eceaeedcaabc2c2":[6,0,0,58,3],
+"include_2oembed_8php.html#a9e57f3e36a0a0a47e6db79544b701d9a":[6,0,0,58,6],
+"include_2oembed_8php.html#ab953a6e7c11bc6498ce01ed73e2ba319":[6,0,0,58,0],
+"include_2oembed_8php.html#aba89ae64b355efcb4f706553d3edb6a2":[6,0,0,58,2],
+"include_2photos_8php.html":[6,0,0,63],
+"include_2photos_8php.html#a6c40ef58aefef705a5adc84a40e97109":[6,0,0,63,0],
+"include_2photos_8php.html#a7e7abc69872180697c5471dc69349afe":[6,0,0,63,2],
+"include_2photos_8php.html#a8e8b7be99e24c2497bc2cb3339280c35":[6,0,0,63,1],
+"include_2photos_8php.html#aa27b9e435dcc34e1009f56dc02c7ca51":[6,0,0,63,7],
+"include_2photos_8php.html#ab0365f25b22ccea5f085fe7c49e1f4ab":[6,0,0,63,3],
+"include_2photos_8php.html#ad648c0c5544fe9263409b6f6e57c6274":[6,0,0,63,6],
+"include_2photos_8php.html#aedccaf18282b26899d9549c29bd9d1b9":[6,0,0,63,5],
+"include_2photos_8php.html#af24c6aeed28ecc31ec39e7d9a1804979":[6,0,0,63,4],
+"include_2probe_8php.html":[6,0,0,66],
+"include_2probe_8php.html#a12ea7a0def2f0e07242b5c9ac684e01a":[6,0,0,66,3],
+"include_2probe_8php.html#a2b4ac769508f7cfc17fee130279b9cb7":[6,0,0,66,4],
+"include_2probe_8php.html#a2daa857942aceca01f956016dbbd139c":[6,0,0,66,1],
+"include_2probe_8php.html#a3c02c7a23e8335a79c3c0f5331d11a85":[6,0,0,66,8],
+"include_2probe_8php.html#a471851151d8cd7fbb79703e9522eeea8":[6,0,0,66,0],
+"include_2probe_8php.html#a950a200372393f706851103cd3fffcba":[6,0,0,66,6],
+"include_2probe_8php.html#a9b5eca1e01e52b3e65d64db0c92181e0":[6,0,0,66,2],
+"include_2probe_8php.html#aa748dc73a6686c13826b1ee9d16c800d":[6,0,0,66,7],
+"include_2probe_8php.html#ab19a52326b27607a0fb8191cc75ba481":[6,0,0,66,5],
+"index.html":[],
+"interfaceITemplateEngine.html":[5,0,20],
+"interfaceITemplateEngine.html#aaa7381c8becc3d1c1790b53988a0f243":[5,0,20,1],
+"interfaceITemplateEngine.html#aaf2698adbf46c073c24b162fe1b1c442":[5,0,20,0],
+"invite_8php.html":[6,0,1,45],
+"invite_8php.html#a244385b28cfd021d308715f01158bfd9":[6,0,1,45,0],
+"invite_8php.html#aeb0881c0f93c8e8552e5ed756ce6e5a5":[6,0,1,45,1],
+"item_8php.html":[6,0,1,46],
+"item_8php.html#a3daae7944f737bd30412a0d042207c0f":[6,0,1,46,0],
+"item_8php.html#a5b1b36cb301a94b38150074f0d424e74":[6,0,1,46,2],
+"item_8php.html#a693cd09805755ab85bbb5ecae69a48c3":[6,0,1,46,4],
+"item_8php.html#a764bbb2e9a885a86fb23d0b5e4a09221":[6,0,1,46,3],
+"item_8php.html#a7b63a9d0cd02096e17dcf11f4afa7c10":[6,0,1,46,1],
+"items_8php.html":[6,0,0,49],
+"items_8php.html#a016dd86c827d08db89061ea81d15c6cb":[6,0,0,49,3],
+"items_8php.html#a02ca33c31ed535d24894f8a9a91ce9df":[6,0,0,49,42],
+"items_8php.html#a04a35b610acfe54434df08adec39c0c7":[6,0,0,49,30],
+"items_8php.html#a0790a4550b829e85504af548623002ca":[6,0,0,49,9],
+"items_8php.html#a079e099e15d88d47aeb6ca6d60da7107":[6,0,0,49,35],
+"items_8php.html#a09d425596b9f8663472cf7474ad36d96":[6,0,0,49,44],
+"items_8php.html#a0cf98bb619f07dd18f602683a55a5f59":[6,0,0,49,27],
+"items_8php.html#a1cf89557f32d5dfbe8bd90448dc1aa92":[6,0,0,49,72],
+"items_8php.html#a1e75047cf175aaee8dd16aa761913ff9":[6,0,0,49,5],
+"items_8php.html#a251343637ff40a50cca93452cd530c26":[6,0,0,49,34],
+"items_8php.html#a25221826fa4621f523c68483e3b6af26":[6,0,0,49,64],
+"items_8php.html#a2541e6861a56d145c9281877cc501615":[6,0,0,49,47],
+"items_8php.html#a275108c050f7eb18bcbb5018e6b81cf6":[6,0,0,49,4],
+"items_8php.html#a2baa9e05f1e8aa3dd61c85803ae39bd6":[6,0,0,49,71],
+"items_8php.html#a2c3f97b2109c05df86d97449b3c78ebc":[6,0,0,49,38],
+"items_8php.html#a2d840c74ed23d1b6c7daee05cf89dda7":[6,0,0,49,22],
+"items_8php.html#a36e656667193c83aa2cc03a024fc131b":[6,0,0,49,0],
+"items_8php.html#a37f79991f36811cf847446ff60e8e11f":[6,0,0,49,40],
+"items_8php.html#a410f9c743877c125ca06312373346903":[6,0,0,49,54],
+"items_8php.html#a49905ea75adfe8a2d110be344d18d6a6":[6,0,0,49,56],
+"items_8php.html#a4e6d7639431e0dd8e9f4dba8e1ac408b":[6,0,0,49,59],
+"items_8php.html#a52c24114b73c0bdb605a03cd29712223":[6,0,0,49,36],
+"items_8php.html#a536d0313b6ffe33b9d2490c4e25c5361":[6,0,0,49,32],
+"items_8php.html#a555762e1022a4b8e3c3abd32e7812408":[6,0,0,49,16],
+"items_8php.html#a566c601726697e044e75284af7fb6f17":[6,0,0,49,21],
+"items_8php.html#a56b0f5d2cb36eb8f4bfca84813884f86":[6,0,0,49,18],
+"items_8php.html#a56b2a4abcadfac71175cd50555528cc3":[6,0,0,49,14],
+"items_8php.html#a5e5be7bf1f8257dec0b2647e60a3f3f1":[6,0,0,49,29],
+"items_8php.html#a5ed782ff5b9cf050bec931e06de12c00":[6,0,0,49,46],
+"items_8php.html#a5f690fc2484abec07840b4f9dd525bd9":[6,0,0,49,19],
+"items_8php.html#a649dc3e53ed794d0ead4b5d037f8d8d7":[6,0,0,49,45],
+"items_8php.html#a668ece2c37f05cc3abe538eb0dabfe55":[6,0,0,49,17],
+"items_8php.html#a6bee35961f2e32905f20367a9309d627":[6,0,0,49,39],
+"items_8php.html#a6f7e1334af5d684a987fa6a3eb37f4cc":[6,0,0,49,43],
+"items_8php.html#a756738301f2ed96be50232500677d58a":[6,0,0,49,49],
+"items_8php.html#a77051724d1784074ff187e73a4db93fe":[6,0,0,49,37],
+"items_8php.html#a772f0ae77ad77c8ab68ed918a3870946":[6,0,0,49,7],
+"items_8php.html#a77da7ce9a117601d49ac4a67c71b514f":[6,0,0,49,52],
+"items_8php.html#a78a60e39f6991bd3324a24dcbf9dac5a":[6,0,0,49,60],
+"items_8php.html#a81565acf729e629e588d823308448e3c":[6,0,0,49,1],
+"items_8php.html#a83a349062945d585edb4b3c5d763ab6e":[6,0,0,49,57],
+"items_8php.html#a8675e62674de6fb7c42e4a408c7116cc":[6,0,0,49,53],
+"items_8php.html#a87ac9e359591721a824ecd23bbb56296":[6,0,0,49,6],
+"items_8php.html#a88c6cf7649ac836fbbed82a7a0315110":[6,0,0,49,67],
+"items_8php.html#a8cda98925a4c5c2f6dade70d9586d79a":[6,0,0,49,26],
+"items_8php.html#a8f3c85c584ccd2b98c3ca440e45b40f8":[6,0,0,49,12],
+"items_8php.html#a94ddb1d6c8fa21dd7433677e85168037":[6,0,0,49,33],
+"items_8php.html#a9b449eeae50003414b8b30ca927af434":[6,0,0,49,70],
+"items_8php.html#aa371905f0a211b307cb3f7188c6cba04":[6,0,0,49,68],
+"items_8php.html#aa579bc4445d60098b1410961ca8e96b7":[6,0,0,49,11],
+"items_8php.html#aa723c0571e314a1853a24c5854b4f54f":[6,0,0,49,23],
+"items_8php.html#aa9e99613d38a97b39c8cf5449699c2ee":[6,0,0,49,10],
+"items_8php.html#aab9c6bae4c40799867596bdaae9829fd":[6,0,0,49,31],
+"items_8php.html#aab9e0c58247427126de0699c729c3b6c":[6,0,0,49,62],
+"items_8php.html#aabfaa193b83154c2a81e91284e5d5e59":[6,0,0,49,69],
+"items_8php.html#aac8c9eb4338e2a996c43914392c6cfdb":[6,0,0,49,15],
+"items_8php.html#ab1bce4261bcf75ad62753b498a144d17":[6,0,0,49,65],
+"items_8php.html#ab33fa9756aaa5f39a6104d57a62baf00":[6,0,0,49,51],
+"items_8php.html#aba98fcbbcd7044a7e9ea34edabc14c87":[6,0,0,49,28],
+"items_8php.html#abeb7886cde44d9a83dbaf2bc4ab18723":[6,0,0,49,8],
+"items_8php.html#abf7a1b73eb352d79acd36309b0dababd":[6,0,0,49,2],
+"items_8php.html#ac6673627d289ee4f547de0fe3b7acd0a":[6,0,0,49,20],
+"items_8php.html#acf0bf7c9d21ac84f32effb754f7ad484":[6,0,0,49,48],
+"items_8php.html#ad2abb4644ff1f20fefbc80326fe01cf0":[6,0,0,49,55],
+"items_8php.html#ad34827ed330898456783fb14c7b46154":[6,0,0,49,66],
+"items_8php.html#ad4ee16e3ff1eaf60428c61f82ba25e6a":[6,0,0,49,58],
+"items_8php.html#adc26e08aa61f5666da04ab5d2a9d68a6":[6,0,0,49,13],
+"items_8php.html#adf2b8137dc4ad9ec958de2842f16f3c2":[6,0,0,49,63],
+"items_8php.html#adf980098b6de9c3993bc3ff26a8dd6f9":[6,0,0,49,25],
+"items_8php.html#ae73794179b62d39bb597ff670ab1c1e5":[6,0,0,49,41],
+"items_8php.html#af6237605c60d69abdd959ddbbee3420c":[6,0,0,49,61],
+"items_8php.html#af94c281016c6c912d06e064113336c5c":[6,0,0,49,50],
+"items_8php.html#afbcf26dfcf8a83fff952aa858c1b7b67":[6,0,0,49,24],
"lang_8php.html":[6,0,1,47],
"lang_8php.html#a4c5c1140f51a638f224275cd618c2f37":[6,0,1,47,0],
-"language_8php.html":[6,0,0,47],
-"language_8php.html#a151e5b4689aef86a12642cbb7a00bfe0":[6,0,0,47,7],
-"language_8php.html#a43e6ddba9df019c9ac3ab4c94c444ae7":[6,0,0,47,3],
-"language_8php.html#a632da17c7ac0d2dc1a00a4706870194b":[6,0,0,47,0],
-"language_8php.html#a686bcafa6b0d5c86d37b38a1db5b6997":[6,0,0,47,9],
-"language_8php.html#a78bd204955ec4cc3a9ac651285a1689d":[6,0,0,47,5],
-"language_8php.html#a7e9904c730bb24ddcb0ff50fc96f6b05":[6,0,0,47,4],
-"language_8php.html#a980dee1d8715a98ab02e36b59facf8ed":[6,0,0,47,1],
-"language_8php.html#ac6ae482ee54fa2764d5c2e77305aeb96":[6,0,0,47,8],
-"language_8php.html#ac9142ef1d01a235c760deb0f16643f5a":[6,0,0,47,6],
-"language_8php.html#ace67d6cad57da08d030ad9dc9b8c836e":[6,0,0,47,2],
+"language_8php.html":[6,0,0,50],
+"language_8php.html#a151e5b4689aef86a12642cbb7a00bfe0":[6,0,0,50,7],
+"language_8php.html#a43e6ddba9df019c9ac3ab4c94c444ae7":[6,0,0,50,3],
+"language_8php.html#a632da17c7ac0d2dc1a00a4706870194b":[6,0,0,50,0],
+"language_8php.html#a686bcafa6b0d5c86d37b38a1db5b6997":[6,0,0,50,9],
+"language_8php.html#a78bd204955ec4cc3a9ac651285a1689d":[6,0,0,50,5],
+"language_8php.html#a7e9904c730bb24ddcb0ff50fc96f6b05":[6,0,0,50,4],
+"language_8php.html#a980dee1d8715a98ab02e36b59facf8ed":[6,0,0,50,1],
+"language_8php.html#ac6ae482ee54fa2764d5c2e77305aeb96":[6,0,0,50,8],
+"language_8php.html#ac9142ef1d01a235c760deb0f16643f5a":[6,0,0,50,6],
+"language_8php.html#ace67d6cad57da08d030ad9dc9b8c836e":[6,0,0,50,2],
"layouts_8php.html":[6,0,1,48],
+"layouts_8php.html#a39c8e9f72641c684c8b689bd91a642fa":[6,0,1,48,1],
"layouts_8php.html#a6e0193759ad9eef76d3df2db24237b50":[6,0,1,48,0],
"like_8php.html":[6,0,1,49],
"like_8php.html#a9d7dd268f21c21e9d29dd2aca2dd9538":[6,0,1,49,0],
"lockview_8php.html":[6,0,1,50],
"lockview_8php.html#a851e26ab9a1008df5c5ebebea31e9b44":[6,0,1,50,0],
-"login_8php.html":[6,0,1,51],
-"login_8php.html#a1d69ca88eb9005a7026e128b9a645904":[6,0,1,51,0],
-"lostpass_8php.html":[6,0,1,52],
-"lostpass_8php.html#a0314d94e48c789b1b3a201d740c9eab3":[6,0,1,52,0],
-"lostpass_8php.html#a8ed35ba71a4404eaf4903da61d0321cc":[6,0,1,52,1],
-"magic_8php.html":[6,0,1,53],
-"magic_8php.html#acea2cc792849ca2d71d4b689f66518bf":[6,0,1,53,0],
-"mail_8php.html":[6,0,1,54],
-"mail_8php.html#a3c7c485fc69f92371e8b20936040eca1":[6,0,1,54,0],
-"mail_8php.html#acfc2cc0bf4e0b178207758384977f25a":[6,0,1,54,1],
-"manage_8php.html":[6,0,1,55],
-"manage_8php.html#a2bca247b5296827638959138367db4f5":[6,0,1,55,0],
-"match_8php.html":[6,0,1,56],
-"match_8php.html#a1dd853e959b9e70c1911bb2fb5f5130d":[6,0,1,56,0],
+"locs_8php.html":[6,0,1,51],
+"locs_8php.html#a6b43654592919ac863d67a1f787a69b9":[6,0,1,51,1],
+"locs_8php.html#a6c900f53970c0d0e738d2fe06d27ca44":[6,0,1,51,0],
+"login_8php.html":[6,0,1,52],
+"login_8php.html#a1d69ca88eb9005a7026e128b9a645904":[6,0,1,52,0],
+"lostpass_8php.html":[6,0,1,53],
+"lostpass_8php.html#a0314d94e48c789b1b3a201d740c9eab3":[6,0,1,53,0],
+"lostpass_8php.html#a8ed35ba71a4404eaf4903da61d0321cc":[6,0,1,53,1],
+"magic_8php.html":[6,0,1,54],
+"magic_8php.html#acea2cc792849ca2d71d4b689f66518bf":[6,0,1,54,0],
+"mail_8php.html":[6,0,1,55],
+"mail_8php.html#a3c7c485fc69f92371e8b20936040eca1":[6,0,1,55,0],
+"mail_8php.html#acfc2cc0bf4e0b178207758384977f25a":[6,0,1,55,1],
+"manage_8php.html":[6,0,1,56],
+"manage_8php.html#a2bca247b5296827638959138367db4f5":[6,0,1,56,0],
+"match_8php.html":[6,0,1,57],
+"match_8php.html#a1dd853e959b9e70c1911bb2fb5f5130d":[6,0,1,57,0],
"md_README.html":[2],
"md_config.html":[0],
"md_fresh.html":[1],
@@ -47,207 +247,7 @@ var NAVTREEINDEX6 =
"minimalisticdarkness_8php.html#a6e5d97615c6faef5dbffe04b8024ceaf":[6,0,3,1,0,2,4,0],
"minimalisticdarkness_8php.html#a70bb13be8f23ec47839da81e0796f1cb":[6,0,3,1,0,2,4,2],
"minimalisticdarkness_8php.html#a7e6c3d4efde4e9a2de32308081372c6b":[6,0,3,1,0,2,4,1],
-"mitem_8php.html":[6,0,1,59],
-"mitem_8php.html#a6ee694cca4b551a20d7c7a94b5243ec1":[6,0,1,59,2],
-"mitem_8php.html#a7a31b702ecad18eeb6a38b243ff0037e":[6,0,1,59,0],
-"mitem_8php.html#a9627cd857cafdf04e4fc0ae48c8e8518":[6,0,1,59,1],
-"mod_2api_8php.html":[6,0,1,4],
-"mod_2api_8php.html#a02ae0f60e240dc806b860edb7d582117":[6,0,1,4,2],
-"mod_2api_8php.html#a33315b5bbf5418f6850b2038107b526d":[6,0,1,4,0],
-"mod_2api_8php.html#a6fe77f05c07cb51048df0d557b4b9bd2":[6,0,1,4,1],
-"mod_2apps_8php.html":[6,0,1,6],
-"mod_2apps_8php.html#a546016cb960d0b110ee8e489dfa6c27c":[6,0,1,6,0],
-"mod_2attach_8php.html":[6,0,1,7],
-"mod_2attach_8php.html#aa88eb5ad87aa1036a30e70339cc6c1b1":[6,0,1,7,0],
-"mod_2bookmarks_8php.html":[6,0,1,10],
-"mod_2bookmarks_8php.html#a6b7942f3d27e40f0f47c88704127b9b3":[6,0,1,10,1],
-"mod_2bookmarks_8php.html#a774364b1c8404529581083631703527a":[6,0,1,10,0],
-"mod_2chanman_8php.html":[6,0,1,11],
-"mod_2chat_8php.html":[6,0,1,14],
-"mod_2chat_8php.html#a8b0b8bee6fef6477e8c64c5e951b1b4f":[6,0,1,14,0],
-"mod_2chat_8php.html#a999d594745597c656c9760253ae297ad":[6,0,1,14,2],
-"mod_2chat_8php.html#aa9ae4782e9baef0b7314ab9527c2707e":[6,0,1,14,1],
-"mod_2directory_8php.html":[6,0,1,23],
-"mod_2directory_8php.html#a5ee59c213508b6b9787612a8219cb5bf":[6,0,1,23,1],
-"mod_2directory_8php.html#aac79396570d759da2efac24fcedf5b44":[6,0,1,23,0],
-"mod_2follow_8php.html":[6,0,1,37],
-"mod_2follow_8php.html#a171f5b19f50d7738adc3b2e96ec6018a":[6,0,1,37,1],
-"mod_2follow_8php.html#a4c540ea4e9f5c581c1a53516ac585592":[6,0,1,37,0],
-"mod_2group_8php.html":[6,0,1,39],
-"mod_2group_8php.html#a07a64f6c65b0080d8190b3d9728a7a83":[6,0,1,39,0],
-"mod_2group_8php.html#aed1f009b1221348021bb34761160ef35":[6,0,1,39,1],
-"mod_2menu_8php.html":[6,0,1,57],
-"mod_2menu_8php.html#a6fed23af14d71a78a4153c8363a685cf":[6,0,1,57,0],
-"mod_2menu_8php.html#aaa491ef173868fe002aece4632bcf393":[6,0,1,57,1],
-"mod_2message_8php.html":[6,0,1,58],
-"mod_2message_8php.html#ac72dfed3ce08fcb331d66b37edc6e15f":[6,0,1,58,0],
-"mod_2network_8php.html":[6,0,1,63],
-"mod_2network_8php.html#a180fce90ad11d7e0e45be094da7149ec":[6,0,1,63,1],
-"mod_2network_8php.html#a43f2f29b90c5e29072c561934bc8f8b4":[6,0,1,63,0],
-"mod_2notify_8php.html":[6,0,1,67],
-"mod_2notify_8php.html#a94f9a6a9d4b5fd704baafff0c34f41ae":[6,0,1,67,1],
-"mod_2notify_8php.html#acdf3851688ebd6d6a575eb84ef9febe3":[6,0,1,67,0],
-"mod_2oembed_8php.html":[6,0,1,68],
-"mod_2oembed_8php.html#a9145025aaf057fb5d3f9f7011e5e1014":[6,0,1,68,0],
-"mod_2photos_8php.html":[6,0,1,77],
-"mod_2photos_8php.html#a062bed4d04d14fee8a53f4c9be673080":[6,0,1,77,2],
-"mod_2photos_8php.html#aa87382611a66ec5effdb2d78f13f5812":[6,0,1,77,0],
-"mod_2photos_8php.html#ab950295cd77626f5fe65331a87693014":[6,0,1,77,1],
-"mod_2probe_8php.html":[6,0,1,84],
-"mod_2probe_8php.html#a1f1db3fa6038e451e737964c94bf5e99":[6,0,1,84,0],
-"mod__chanview_8php.html":[6,0,3,1,0,0,0],
-"mod__import_8php.html":[6,0,3,0,4],
-"mod__import_8php.html#a8db1899eeeb44dabd0904065b63627bb":[6,0,3,0,4,0],
-"mood_8php.html":[6,0,1,60],
-"mood_8php.html#a721b9b6703b3234a005641c92d409b8f":[6,0,1,60,0],
-"mood_8php.html#a7ae136dd7476865b4828136175db5022":[6,0,1,60,1],
-"msearch_8php.html":[6,0,1,61],
-"msearch_8php.html#ac80d2a6c0a92e79eec7efbbccd74d9a8":[6,0,1,61,0],
-"mytheme_2php_2style_8php.html":[6,0,3,1,2,0,1],
-"mytheme_2php_2theme_8php.html":[6,0,3,1,2,0,2],
-"mytheme_2php_2theme_8php.html#a6ce5df8ece6acc09c1fddaccbeb244e8":[6,0,3,1,2,0,2,0],
-"namespaceFriendica.html":[4,0,1],
-"namespaceFriendica.html":[5,0,1],
-"namespaceacl__selectors.html":[4,0,0],
-"namespaceacl__selectors.html":[5,0,0],
-"namespacefriendica-to-smarty-tpl.html":[5,0,2],
-"namespacefriendica-to-smarty-tpl.html":[4,0,2],
-"namespacemembers.html":[4,1,0],
-"namespacemembers_func.html":[4,1,1],
-"namespacemembers_vars.html":[4,1,2],
-"namespaces.html":[4,0],
-"namespaceupdatetpl.html":[5,0,3],
-"namespaceupdatetpl.html":[4,0,3],
-"namespaceutil.html":[5,0,4],
-"namespaceutil.html":[4,0,4],
-"nav_8php.html":[6,0,0,50],
-"nav_8php.html#a43be0df73b90647ea70947ce004e231e":[6,0,0,50,0],
-"nav_8php.html#ac3c920ce3ea5b0d9e0678ee37155f06a":[6,0,0,50,1],
-"netgrowth_8php.html":[6,0,1,62],
-"netgrowth_8php.html#a9b87bfc25a7cb11bc7f8e1fdd0310919":[6,0,1,62,0],
-"new__channel_8php.html":[6,0,1,64],
-"new__channel_8php.html#a180b0646957db8290482f02454ad7f23":[6,0,1,64,2],
-"new__channel_8php.html#a1ad7f99e4366a32942c6b954aba3a164":[6,0,1,64,1],
-"new__channel_8php.html#ae585191610f79da129492482ce8e2fee":[6,0,1,64,0],
-"none_8php.html":[6,0,3,0,5],
-"notes_8php.html":[6,0,1,65],
-"notes_8php.html#a4dbd7b1f906440746af48b484d66535a":[6,0,1,65,0],
-"notifications_8php.html":[6,0,1,66],
-"notifications_8php.html#a5baffec7b2e625c9f9cefbc097550d33":[6,0,1,66,1],
-"notifications_8php.html#aadd0b5525bd8c283a5d8a37982bbfe62":[6,0,1,66,0],
-"notifier_8php.html":[6,0,0,52],
-"notifier_8php.html#a568c502f626cff95e344c0748938b85d":[6,0,0,52,0],
-"notred_8php.html":[6,0,3,1,3,1,3],
-"oauth_8php.html":[6,0,0,54],
-"oauth_8php.html#a7a32a5990f113ac9465b03b29175cf16":[6,0,0,54,3],
-"oauth_8php.html#ad343cab37aa860d2d14dc86b7f5ca0c6":[6,0,0,54,2],
-"oexchange_8php.html":[6,0,1,69],
-"oexchange_8php.html#a2d8b785cd7d041a4e6274f5af370cf26":[6,0,1,69,0],
-"oexchange_8php.html#ac8e2e469ddc3db984b0c1b44558aca59":[6,0,1,69,1],
-"olddefault_8php.html":[6,0,3,1,0,2,5],
-"onedirsync_8php.html":[6,0,0,56],
-"onedirsync_8php.html#a411aedd47c57476099647961e6a86691":[6,0,0,56,0],
-"onepoll_8php.html":[6,0,0,57],
-"onepoll_8php.html#a72753b2fdec79b37c7f432035c91fb6d":[6,0,0,57,0],
-"online_8php.html":[6,0,1,70],
-"online_8php.html#a80e107c84eb722b0ca11d0413b96f9f7":[6,0,1,70,0],
-"openid_8php.html":[6,0,1,71],
-"openid_8php.html#a9a13827dbcf61ae4e45f0b6b33a88f43":[6,0,1,71,0],
-"opensearch_8php.html":[6,0,1,72],
-"opensearch_8php.html#ad13034877a496565ac7d99e9fc6f55e9":[6,0,1,72,0],
-"page_8php.html":[6,0,1,73],
-"page_8php.html#a4d89800c0366a239191b1692c09635cf":[6,0,1,73,1],
-"page_8php.html#a91a5f649f68406149108bded1dc90b22":[6,0,1,73,0],
-"page__widgets_8php.html":[6,0,0,58],
-"page__widgets_8php.html#a1a1e729da27f252cab6678288a17958f":[6,0,0,58,1],
-"page__widgets_8php.html#a39d547771c5f12a17c097436c82f0fa2":[6,0,0,58,0],
-"pages.html":[],
-"parse__url_8php.html":[6,0,1,74],
-"parse__url_8php.html#a05a9e8944380ba3cf6bbf5893dd4b74b":[6,0,1,74,2],
-"parse__url_8php.html#a25635549f2c22955d72465f4d2e58993":[6,0,1,74,3],
-"parse__url_8php.html#a496f4e3836154f6f32b8e805a7160d3a":[6,0,1,74,1],
-"parse__url_8php.html#aa7dd8f961bea042d62726ed909e4a868":[6,0,1,74,0],
-"passion_8php.html":[6,0,3,1,0,2,6],
-"passionwide_8php.html":[6,0,3,1,0,2,7],
-"pdledit_8php.html":[6,0,1,75],
-"pdledit_8php.html#a59cb550f6b7a4e7d8196fbc9de601619":[6,0,1,75,0],
-"pdledit_8php.html#a81da3c955d0e3db55d148a31483104c7":[6,0,1,75,1],
-"permissions_8php.html":[6,0,0,59],
-"permissions_8php.html#a040fd3d3b8517658b1668ae0cd093972":[6,0,0,59,2],
-"permissions_8php.html#a0f5bd9f7f4c8fb7ba4b2c1ed048b4dc7":[6,0,0,59,0],
-"permissions_8php.html#a67ada9ed51e77885b6b0f6a28cee1835":[6,0,0,59,3],
-"permissions_8php.html#aa8b7b102c653649d7a71b5a1c044d90d":[6,0,0,59,4],
-"permissions_8php.html#aeca9b280f3dc3358c89976d81d690008":[6,0,0,59,1],
-"photo_8php.html":[6,0,1,76],
-"photo_8php.html#a582779d24882b0d31ee909a91d70a448":[6,0,1,76,0],
-"photo__driver_8php.html":[6,0,0,1,0],
-"photo__driver_8php.html#a1d0bc7161dec0d177b7d3bbe4421af9a":[6,0,0,1,0,2],
-"photo__driver_8php.html#a243cee492ce443afb6a7d77d54b6c4aa":[6,0,0,1,0,1],
-"photo__driver_8php.html#a32e2817faa25d7f11f60a8abff565035":[6,0,0,1,0,4],
-"photo__driver_8php.html#a78f5a10c568d2a9bbbb129dc96548887":[6,0,0,1,0,3],
-"photo__gd_8php.html":[6,0,0,1,1],
-"photo__imagick_8php.html":[6,0,0,1,2],
-"php2po_8php.html":[6,0,2,6],
-"php2po_8php.html#a1594a11499d06cc8a789ee7ca0c7a12b":[6,0,2,6,7],
-"php2po_8php.html#a401d84ce156e49e8168bd0c4781e1be1":[6,0,2,6,5],
-"php2po_8php.html#a45b05625748f412ec97afcd61cf7980b":[6,0,2,6,6],
-"php2po_8php.html#a48cb304902320d173a4eaa41543327b9":[6,0,2,6,3],
-"php2po_8php.html#a61f8ddeb5557d46ebc546cc355bda214":[6,0,2,6,0],
-"php2po_8php.html#a6b0b8ebd9ce811d1325ef2c129443bc0":[6,0,2,6,1],
-"php2po_8php.html#abbb0e5fd8fbc1f13a9bf68f86eb3d2a4":[6,0,2,6,4],
-"php2po_8php.html#ad6726cfaa85d4b8299d2b0f034cbf178":[6,0,2,6,2],
-"php_2default_8php.html":[6,0,3,0,1],
-"php_2default_8php.html#a3987f5547ceb7e36a210a66a06241a5a":[6,0,3,0,1,0],
-"php_2theme__init_8php.html":[6,0,3,0,6],
-"php_2theme__init_8php.html#a54f32c086fe209c99769a4c4047dd864":[6,0,3,0,6,0],
-"php_8php.html":[6,0,1,78],
-"php_8php.html#adb7164dfed9a4ecbe2e168e1e78f12f6":[6,0,1,78,0],
-"pine_8php.html":[6,0,3,1,0,2,8],
-"ping_8php.html":[6,0,1,79],
-"ping_8php.html#a77217b1b190b4c5d8770867b45f0c0a1":[6,0,1,79,0],
-"plugin_8php.html":[6,0,0,61],
-"plugin_8php.html#a030cec6793b909c439c0336ba39b1571":[6,0,0,61,23],
-"plugin_8php.html#a093a9cb98f51e3643634bd8bc6ed6e76":[6,0,0,61,26],
-"plugin_8php.html#a0e8c2ea50bfdbc39e17ccccaea21ddc3":[6,0,0,61,22],
-"plugin_8php.html#a23c4fccf1eb5fcd63b24783ba1f05f7a":[6,0,0,61,8],
-"plugin_8php.html#a326365e48ef94f0b9a0a771b8d75e813":[6,0,0,61,17],
-"plugin_8php.html#a425472c5f3afc137268b2ad45652b209":[6,0,0,61,20],
-"plugin_8php.html#a48047edfbef770125a5508dcc2f9282f":[6,0,0,61,7],
-"plugin_8php.html#a482131013272a1d5d5c1b1469c6c55d5":[6,0,0,61,16],
-"plugin_8php.html#a4a0ae7b881e7c8af99a69e3b03f898b4":[6,0,0,61,14],
-"plugin_8php.html#a4fc13e528367f510fcb6d8bbfc559040":[6,0,0,61,30],
-"plugin_8php.html#a516591850f4fd49fd1425cfa54089db8":[6,0,0,61,9],
-"plugin_8php.html#a56f71fe5adf9586ce950523d8180443e":[6,0,0,61,28],
-"plugin_8php.html#a65ab52cb1a7030d5190e247211bef2a1":[6,0,0,61,11],
-"plugin_8php.html#a65fedcffbe03562ef844cabee37d34e2":[6,0,0,61,25],
-"plugin_8php.html#a67ca417634de2d0beffffc54aeb951ff":[6,0,0,61,12],
-"plugin_8php.html#a754d7f53b3abc557b753c057dc4e021d":[6,0,0,61,29],
-"plugin_8php.html#a75f7dfed291fd7add7fc85b5c022a1f4":[6,0,0,61,4],
-"plugin_8php.html#a7f05de16c0a32602853b09b99dd85e7c":[6,0,0,61,0],
-"plugin_8php.html#a855c4fdb38c0fc2714d537752a4347f9":[6,0,0,61,19],
-"plugin_8php.html#a901657dd078e070516cf97285e0bada7":[6,0,0,61,31],
-"plugin_8php.html#a9039e15aae27676af7777dcbee5a11d6":[6,0,0,61,1],
-"plugin_8php.html#a90538627db68605aeb6db17a8ead6523":[6,0,0,61,27],
-"plugin_8php.html#a905b54e10704b283ac64680a8abc0971":[6,0,0,61,24],
-"plugin_8php.html#a9ab6caae31935f6cf781ce7872db7cdf":[6,0,0,61,13],
-"plugin_8php.html#a9ca9632b7309a65b05c03a3e2f473a3d":[6,0,0,61,18],
-"plugin_8php.html#acb63c27d07f6d7dffe95f98a6cef1295":[6,0,0,61,3],
-"plugin_8php.html#ad48de9c0fb7f19413a2aa49250d00405":[6,0,0,61,6],
-"plugin_8php.html#ad9ff8ba554576383c5911a4bce068c1f":[6,0,0,61,2],
-"plugin_8php.html#aeaebe63dcf6fa2794f363ba2bc0b2c6b":[6,0,0,61,15],
-"plugin_8php.html#af92789f559b89a380e49d303218aeeca":[6,0,0,61,10],
-"plugin_8php.html#af9ac19004dca49adae1ac7a0d9f3b025":[6,0,0,61,21],
-"plugin_8php.html#aff0178bd8d0b34a94d5efddc883edd35":[6,0,0,61,5],
-"po2php_8php.html":[6,0,2,7],
-"po2php_8php.html#a3b75e36f913198299e99559b175cd8b4":[6,0,2,7,0],
-"poco_8php.html":[6,0,1,80],
-"poco_8php.html#a53def16f75e3d41f1d2bb7cfa4905498":[6,0,1,80,0],
-"poke_8php.html":[6,0,1,81],
-"poke_8php.html#a9725aab97b3983e6a98bd81c4efe7d3b":[6,0,1,81,1],
-"poke_8php.html#ac9190563a8da9c07a16f9dcd71cf6993":[6,0,1,81,0],
-"poller_8php.html":[6,0,0,62],
-"poller_8php.html#a5f12df3a4738124b6c039971e87e76da":[6,0,0,62,0],
-"post_8php.html":[6,0,1,82],
-"post_8php.html#af4b48181ce773ef0cdfc972441445c34":[6,0,1,82,0],
-"post_8php.html#af59e6a1dc22d19d9257b01cd7ccedb75":[6,0,1,82,1]
+"mitem_8php.html":[6,0,1,60],
+"mitem_8php.html#a6ee694cca4b551a20d7c7a94b5243ec1":[6,0,1,60,2],
+"mitem_8php.html#a7a31b702ecad18eeb6a38b243ff0037e":[6,0,1,60,0]
};
diff --git a/doc/html/navtreeindex7.js b/doc/html/navtreeindex7.js
index 6aaca3ffb..40bdd34ca 100644
--- a/doc/html/navtreeindex7.js
+++ b/doc/html/navtreeindex7.js
@@ -1,253 +1,253 @@
var NAVTREEINDEX7 =
{
-"post__to__red_8php.html":[6,0,2,1,0,0],
-"post__to__red_8php.html#a085c250d4ceff5e4f10052f3d2039823":[6,0,2,1,0,0,16],
-"post__to__red_8php.html#a0f139dea77a94c98f26007963eea639c":[6,0,2,1,0,0,12],
-"post__to__red_8php.html#a3a2af6ad845239f26e86fccabf8639e1":[6,0,2,1,0,0,17],
-"post__to__red_8php.html#a4674bb5ce2baa32c559607460c39a2c5":[6,0,2,1,0,0,3],
-"post__to__red_8php.html#a49fd35f7b1cdddfe6e26ddfcf8d3c4ec":[6,0,2,1,0,0,1],
-"post__to__red_8php.html#a4d90ac085c14f53ff4d8ab4c23477ea6":[6,0,2,1,0,0,9],
-"post__to__red_8php.html#a588cea66afe0b32f27f2713d44940119":[6,0,2,1,0,0,21],
-"post__to__red_8php.html#a5cc2a89a6d33cdb8e2ca557a69bef42d":[6,0,2,1,0,0,2],
-"post__to__red_8php.html#a6210f39392a5f0fa0255cc7d3760493a":[6,0,2,1,0,0,22],
-"post__to__red_8php.html#a75db5d87226a0287a0ac0fa315f2bcfd":[6,0,2,1,0,0,5],
-"post__to__red_8php.html#a7e68a8d9c83cb28d032aad3ea85ce0a6":[6,0,2,1,0,0,13],
-"post__to__red_8php.html#a8ec8f8809e3c5d1b2c9598c8185d63aa":[6,0,2,1,0,0,4],
-"post__to__red_8php.html#a906be8f72cf1aa2e199c0683ea6a4017":[6,0,2,1,0,0,15],
-"post__to__red_8php.html#a96d0ccecb96600ef1bfd50ab3f77315f":[6,0,2,1,0,0,10],
-"post__to__red_8php.html#a99811555b30bde504a863e44015f2f19":[6,0,2,1,0,0,20],
-"post__to__red_8php.html#aa97aeda12ef080665f16311a4e1eb901":[6,0,2,1,0,0,14],
-"post__to__red_8php.html#aacba7a0646fc00ae6ac4f5dc383fccab":[6,0,2,1,0,0,8],
-"post__to__red_8php.html#ada8a7130088351710bb02ed622d6bf65":[6,0,2,1,0,0,19],
-"post__to__red_8php.html#ae0b881461afbdba93d9329068ea52136":[6,0,2,1,0,0,7],
-"post__to__red_8php.html#ae6f3a2c0561cbeacda5be565b06de8a7":[6,0,2,1,0,0,6],
-"post__to__red_8php.html#aeec4125719184e7b097b3b9fba3101b5":[6,0,2,1,0,0,0],
-"post__to__red_8php.html#af2713018a2dc97e88f121fc6215beb66":[6,0,2,1,0,0,18],
-"post__to__red_8php.html#af3e7ebd361d4ed7cb6d43209970cd94a":[6,0,2,1,0,0,23],
-"post__to__red_8php.html#af5fd50e2c42ede85f8a9e8d9ee3cf540":[6,0,2,1,0,0,11],
-"pretheme_8php.html":[6,0,1,83],
-"pretheme_8php.html#af5660943ee99db5fd75182316522eafe":[6,0,1,83,0],
-"profile_8php.html":[6,0,1,85],
-"profile_8php.html#a3775cf6eef6587e5143133356a7b76c0":[6,0,1,85,0],
-"profile_8php.html#ab5d0246be0552e2182a585c1206d22a5":[6,0,1,85,1],
-"profile__photo_8php.html":[6,0,1,86],
-"profile__photo_8php.html#a140631c56438fbfacb61a1eb43067d02":[6,0,1,86,0],
-"profile__photo_8php.html#a4b80234074bd603221aa5364f330e479":[6,0,1,86,1],
-"profile__photo_8php.html#a561103564199da56e58061a4196eb102":[6,0,1,86,2],
-"profile__selectors_8php.html":[6,0,0,64],
-"profile__selectors_8php.html#a3b50b3ea4ea4bdbebebfffc5d1b157c7":[6,0,0,64,2],
-"profile__selectors_8php.html#a7473dd095987e1cdcc79d4f0bb5e6798":[6,0,0,64,1],
-"profile__selectors_8php.html#ae2b2c087e6530c61c0b256fd26d52355":[6,0,0,64,0],
-"profiles_8php.html":[6,0,1,87],
-"profiles_8php.html#a36f71405ad536228f8bb84a551b23f7e":[6,0,1,87,1],
-"profiles_8php.html#a46975783b8b8d70402d51487eb1f0b00":[6,0,1,87,0],
-"profiles_8php.html#ab0362c81b1d3b0b12a772b9fac446e04":[6,0,1,87,2],
-"profperm_8php.html":[6,0,1,88],
-"profperm_8php.html#a17fb64ec05edee1dc94d95438807d6c6":[6,0,1,88,1],
-"profperm_8php.html#aef015787de2373d9fb3fe3f814fb5023":[6,0,1,88,0],
-"pubsites_8php.html":[6,0,1,89],
-"pubsites_8php.html#af614e279aab54065345bda6b03eafdf0":[6,0,1,89,0],
-"queue_8php.html":[6,0,0,66],
-"queue_8php.html#af8c93de86d866c3200174c8450a0f341":[6,0,0,66,0],
-"queue__fn_8php.html":[6,0,0,67],
-"queue__fn_8php.html#a4c2876181f75a4a61e85b7f00dfdbba1":[6,0,0,67,1],
-"queue__fn_8php.html#a8fe71e981399bbf5d000a6ca42f57b24":[6,0,0,67,0],
-"randprof_8php.html":[6,0,1,90],
-"randprof_8php.html#abf5dba3c608b9304cbf68327cd31b090":[6,0,1,90,0],
-"rbmark_8php.html":[6,0,1,91],
-"rbmark_8php.html#a43fec4960b50926251574762cc491f76":[6,0,1,91,0],
-"rbmark_8php.html#ac5a66aa8599fa5dc702bae396d8d1f8c":[6,0,1,91,1],
+"mitem_8php.html#a9627cd857cafdf04e4fc0ae48c8e8518":[6,0,1,60,1],
+"mod_2api_8php.html":[6,0,1,4],
+"mod_2api_8php.html#a02ae0f60e240dc806b860edb7d582117":[6,0,1,4,2],
+"mod_2api_8php.html#a33315b5bbf5418f6850b2038107b526d":[6,0,1,4,0],
+"mod_2api_8php.html#a6fe77f05c07cb51048df0d557b4b9bd2":[6,0,1,4,1],
+"mod_2apps_8php.html":[6,0,1,6],
+"mod_2apps_8php.html#a546016cb960d0b110ee8e489dfa6c27c":[6,0,1,6,0],
+"mod_2attach_8php.html":[6,0,1,7],
+"mod_2attach_8php.html#aa88eb5ad87aa1036a30e70339cc6c1b1":[6,0,1,7,0],
+"mod_2bookmarks_8php.html":[6,0,1,10],
+"mod_2bookmarks_8php.html#a6b7942f3d27e40f0f47c88704127b9b3":[6,0,1,10,1],
+"mod_2bookmarks_8php.html#a774364b1c8404529581083631703527a":[6,0,1,10,0],
+"mod_2chat_8php.html":[6,0,1,13],
+"mod_2chat_8php.html#a8b0b8bee6fef6477e8c64c5e951b1b4f":[6,0,1,13,0],
+"mod_2chat_8php.html#a999d594745597c656c9760253ae297ad":[6,0,1,13,2],
+"mod_2chat_8php.html#aa9ae4782e9baef0b7314ab9527c2707e":[6,0,1,13,1],
+"mod_2directory_8php.html":[6,0,1,22],
+"mod_2directory_8php.html#a5ee59c213508b6b9787612a8219cb5bf":[6,0,1,22,1],
+"mod_2directory_8php.html#aac79396570d759da2efac24fcedf5b44":[6,0,1,22,0],
+"mod_2follow_8php.html":[6,0,1,35],
+"mod_2follow_8php.html#a171f5b19f50d7738adc3b2e96ec6018a":[6,0,1,35,1],
+"mod_2follow_8php.html#a4c540ea4e9f5c581c1a53516ac585592":[6,0,1,35,0],
+"mod_2group_8php.html":[6,0,1,37],
+"mod_2group_8php.html#a07a64f6c65b0080d8190b3d9728a7a83":[6,0,1,37,0],
+"mod_2group_8php.html#aed1f009b1221348021bb34761160ef35":[6,0,1,37,1],
+"mod_2menu_8php.html":[6,0,1,58],
+"mod_2menu_8php.html#a6fed23af14d71a78a4153c8363a685cf":[6,0,1,58,0],
+"mod_2menu_8php.html#aaa491ef173868fe002aece4632bcf393":[6,0,1,58,1],
+"mod_2message_8php.html":[6,0,1,59],
+"mod_2message_8php.html#ac72dfed3ce08fcb331d66b37edc6e15f":[6,0,1,59,0],
+"mod_2network_8php.html":[6,0,1,64],
+"mod_2network_8php.html#a180fce90ad11d7e0e45be094da7149ec":[6,0,1,64,1],
+"mod_2network_8php.html#a43f2f29b90c5e29072c561934bc8f8b4":[6,0,1,64,0],
+"mod_2notify_8php.html":[6,0,1,68],
+"mod_2notify_8php.html#a94f9a6a9d4b5fd704baafff0c34f41ae":[6,0,1,68,1],
+"mod_2notify_8php.html#acdf3851688ebd6d6a575eb84ef9febe3":[6,0,1,68,0],
+"mod_2oembed_8php.html":[6,0,1,69],
+"mod_2oembed_8php.html#a9145025aaf057fb5d3f9f7011e5e1014":[6,0,1,69,0],
+"mod_2photos_8php.html":[6,0,1,79],
+"mod_2photos_8php.html#a062bed4d04d14fee8a53f4c9be673080":[6,0,1,79,2],
+"mod_2photos_8php.html#aa87382611a66ec5effdb2d78f13f5812":[6,0,1,79,0],
+"mod_2photos_8php.html#ab950295cd77626f5fe65331a87693014":[6,0,1,79,1],
+"mod_2probe_8php.html":[6,0,1,87],
+"mod_2probe_8php.html#a1f1db3fa6038e451e737964c94bf5e99":[6,0,1,87,0],
+"mod__chanview_8php.html":[6,0,3,1,0,0,0],
+"mod__import_8php.html":[6,0,3,0,4],
+"mod__import_8php.html#a8db1899eeeb44dabd0904065b63627bb":[6,0,3,0,4,0],
+"mood_8php.html":[6,0,1,61],
+"mood_8php.html#a721b9b6703b3234a005641c92d409b8f":[6,0,1,61,0],
+"mood_8php.html#a7ae136dd7476865b4828136175db5022":[6,0,1,61,1],
+"msearch_8php.html":[6,0,1,62],
+"msearch_8php.html#ac80d2a6c0a92e79eec7efbbccd74d9a8":[6,0,1,62,0],
+"mytheme_2php_2style_8php.html":[6,0,3,1,2,0,1],
+"mytheme_2php_2theme_8php.html":[6,0,3,1,2,0,2],
+"mytheme_2php_2theme_8php.html#a6ce5df8ece6acc09c1fddaccbeb244e8":[6,0,3,1,2,0,2,0],
+"namespaceFriendica.html":[5,0,1],
+"namespaceFriendica.html":[4,0,1],
+"namespaceRedMatrix.html":[4,0,3],
+"namespaceRedMatrix.html":[5,0,3],
+"namespaceRedMatrix_1_1Import.html":[5,0,3,0],
+"namespaceRedMatrix_1_1Import.html":[4,0,3,0],
+"namespaceRedMatrix_1_1RedDAV.html":[5,0,3,1],
+"namespaceRedMatrix_1_1RedDAV.html":[4,0,3,1],
+"namespaceacl__selectors.html":[4,0,0],
+"namespaceacl__selectors.html":[5,0,0],
+"namespacefriendica-to-smarty-tpl.html":[4,0,2],
+"namespacefriendica-to-smarty-tpl.html":[5,0,2],
+"namespacemembers.html":[4,1,0],
+"namespacemembers_func.html":[4,1,1],
+"namespacemembers_vars.html":[4,1,2],
+"namespaces.html":[4,0],
+"namespaceupdatetpl.html":[5,0,4],
+"namespaceupdatetpl.html":[4,0,4],
+"namespaceutil.html":[5,0,5],
+"namespaceutil.html":[4,0,5],
+"nav_8php.html":[6,0,0,53],
+"nav_8php.html#a43be0df73b90647ea70947ce004e231e":[6,0,0,53,0],
+"nav_8php.html#ac3c920ce3ea5b0d9e0678ee37155f06a":[6,0,0,53,1],
+"netgrowth_8php.html":[6,0,1,63],
+"netgrowth_8php.html#a9b87bfc25a7cb11bc7f8e1fdd0310919":[6,0,1,63,0],
+"new__channel_8php.html":[6,0,1,65],
+"new__channel_8php.html#a180b0646957db8290482f02454ad7f23":[6,0,1,65,2],
+"new__channel_8php.html#a1ad7f99e4366a32942c6b954aba3a164":[6,0,1,65,1],
+"new__channel_8php.html#ae585191610f79da129492482ce8e2fee":[6,0,1,65,0],
+"none_8php.html":[6,0,3,0,5],
+"notes_8php.html":[6,0,1,66],
+"notes_8php.html#a4dbd7b1f906440746af48b484d66535a":[6,0,1,66,0],
+"notifications_8php.html":[6,0,1,67],
+"notifications_8php.html#a5baffec7b2e625c9f9cefbc097550d33":[6,0,1,67,1],
+"notifications_8php.html#aadd0b5525bd8c283a5d8a37982bbfe62":[6,0,1,67,0],
+"notifier_8php.html":[6,0,0,55],
+"notifier_8php.html#a568c502f626cff95e344c0748938b85d":[6,0,0,55,0],
+"notred_8php.html":[6,0,3,1,3,1,3],
+"oauth_8php.html":[6,0,0,57],
+"oauth_8php.html#a7a32a5990f113ac9465b03b29175cf16":[6,0,0,57,3],
+"oauth_8php.html#ad343cab37aa860d2d14dc86b7f5ca0c6":[6,0,0,57,2],
+"oexchange_8php.html":[6,0,1,70],
+"oexchange_8php.html#a2d8b785cd7d041a4e6274f5af370cf26":[6,0,1,70,0],
+"oexchange_8php.html#ac8e2e469ddc3db984b0c1b44558aca59":[6,0,1,70,1],
+"olddefault_8php.html":[6,0,3,1,0,2,5],
+"onedirsync_8php.html":[6,0,0,59],
+"onedirsync_8php.html#a411aedd47c57476099647961e6a86691":[6,0,0,59,0],
+"onepoll_8php.html":[6,0,0,60],
+"onepoll_8php.html#a72753b2fdec79b37c7f432035c91fb6d":[6,0,0,60,0],
+"online_8php.html":[6,0,1,71],
+"online_8php.html#a80e107c84eb722b0ca11d0413b96f9f7":[6,0,1,71,0],
+"openid_8php.html":[6,0,1,72],
+"openid_8php.html#a9a13827dbcf61ae4e45f0b6b33a88f43":[6,0,1,72,0],
+"opensearch_8php.html":[6,0,1,73],
+"opensearch_8php.html#ad13034877a496565ac7d99e9fc6f55e9":[6,0,1,73,0],
+"p_8php.html":[6,0,1,74],
+"p_8php.html#af9d5530ca0b3dc9409cf591c39e2480e":[6,0,1,74,0],
+"page_8php.html":[6,0,1,75],
+"page_8php.html#a4d89800c0366a239191b1692c09635cf":[6,0,1,75,1],
+"page_8php.html#a91a5f649f68406149108bded1dc90b22":[6,0,1,75,0],
+"page__widgets_8php.html":[6,0,0,61],
+"page__widgets_8php.html#a1a1e729da27f252cab6678288a17958f":[6,0,0,61,1],
+"page__widgets_8php.html#a39d547771c5f12a17c097436c82f0fa2":[6,0,0,61,0],
+"pages.html":[],
+"parse__url_8php.html":[6,0,1,76],
+"parse__url_8php.html#a05a9e8944380ba3cf6bbf5893dd4b74b":[6,0,1,76,2],
+"parse__url_8php.html#a25635549f2c22955d72465f4d2e58993":[6,0,1,76,3],
+"parse__url_8php.html#a496f4e3836154f6f32b8e805a7160d3a":[6,0,1,76,1],
+"parse__url_8php.html#aa7dd8f961bea042d62726ed909e4a868":[6,0,1,76,0],
+"passion_8php.html":[6,0,3,1,0,2,6],
+"passionwide_8php.html":[6,0,3,1,0,2,7],
+"pdledit_8php.html":[6,0,1,77],
+"pdledit_8php.html#a59cb550f6b7a4e7d8196fbc9de601619":[6,0,1,77,0],
+"pdledit_8php.html#a81da3c955d0e3db55d148a31483104c7":[6,0,1,77,1],
+"permissions_8php.html":[6,0,0,62],
+"permissions_8php.html#a040fd3d3b8517658b1668ae0cd093972":[6,0,0,62,2],
+"permissions_8php.html#a0f5bd9f7f4c8fb7ba4b2c1ed048b4dc7":[6,0,0,62,0],
+"permissions_8php.html#a67ada9ed51e77885b6b0f6a28cee1835":[6,0,0,62,5],
+"permissions_8php.html#a6b239a0d494b92a89ce7bf9c7e588991":[6,0,0,62,4],
+"permissions_8php.html#a9b5f5120566a3699a98efc5ccb0c59fe":[6,0,0,62,3],
+"permissions_8php.html#aa8b7b102c653649d7a71b5a1c044d90d":[6,0,0,62,6],
+"permissions_8php.html#aeca9b280f3dc3358c89976d81d690008":[6,0,0,62,1],
+"photo_8php.html":[6,0,1,78],
+"photo_8php.html#a582779d24882b0d31ee909a91d70a448":[6,0,1,78,0],
+"photo__driver_8php.html":[6,0,0,2,0],
+"photo__driver_8php.html#a1d0bc7161dec0d177b7d3bbe4421af9a":[6,0,0,2,0,2],
+"photo__driver_8php.html#a243cee492ce443afb6a7d77d54b6c4aa":[6,0,0,2,0,1],
+"photo__driver_8php.html#a32e2817faa25d7f11f60a8abff565035":[6,0,0,2,0,4],
+"photo__driver_8php.html#a78f5a10c568d2a9bbbb129dc96548887":[6,0,0,2,0,3],
+"photo__gd_8php.html":[6,0,0,2,1],
+"photo__imagick_8php.html":[6,0,0,2,2],
+"php2po_8php.html":[6,0,2,5],
+"php2po_8php.html#a1594a11499d06cc8a789ee7ca0c7a12b":[6,0,2,5,7],
+"php2po_8php.html#a401d84ce156e49e8168bd0c4781e1be1":[6,0,2,5,5],
+"php2po_8php.html#a45b05625748f412ec97afcd61cf7980b":[6,0,2,5,6],
+"php2po_8php.html#a48cb304902320d173a4eaa41543327b9":[6,0,2,5,3],
+"php2po_8php.html#a61f8ddeb5557d46ebc546cc355bda214":[6,0,2,5,0],
+"php2po_8php.html#a6b0b8ebd9ce811d1325ef2c129443bc0":[6,0,2,5,1],
+"php2po_8php.html#abbb0e5fd8fbc1f13a9bf68f86eb3d2a4":[6,0,2,5,4],
+"php2po_8php.html#ad6726cfaa85d4b8299d2b0f034cbf178":[6,0,2,5,2],
+"php_2default_8php.html":[6,0,3,0,1],
+"php_2default_8php.html#a3987f5547ceb7e36a210a66a06241a5a":[6,0,3,0,1,0],
+"php_2theme__init_8php.html":[6,0,3,0,7],
+"php_2theme__init_8php.html#a54f32c086fe209c99769a4c4047dd864":[6,0,3,0,7,0],
+"php_8php.html":[6,0,1,80],
+"php_8php.html#adb7164dfed9a4ecbe2e168e1e78f12f6":[6,0,1,80,0],
+"pine_8php.html":[6,0,3,1,0,2,8],
+"ping_8php.html":[6,0,1,81],
+"ping_8php.html#a77217b1b190b4c5d8770867b45f0c0a1":[6,0,1,81,0],
+"plugin_8php.html":[6,0,0,64],
+"plugin_8php.html#a093a9cb98f51e3643634bd8bc6ed6e76":[6,0,0,64,24],
+"plugin_8php.html#a0e8c2ea50bfdbc39e17ccccaea21ddc3":[6,0,0,64,22],
+"plugin_8php.html#a23c4fccf1eb5fcd63b24783ba1f05f7a":[6,0,0,64,8],
+"plugin_8php.html#a326365e48ef94f0b9a0a771b8d75e813":[6,0,0,64,17],
+"plugin_8php.html#a425472c5f3afc137268b2ad45652b209":[6,0,0,64,20],
+"plugin_8php.html#a48047edfbef770125a5508dcc2f9282f":[6,0,0,64,7],
+"plugin_8php.html#a482131013272a1d5d5c1b1469c6c55d5":[6,0,0,64,16],
+"plugin_8php.html#a4a0ae7b881e7c8af99a69e3b03f898b4":[6,0,0,64,14],
+"plugin_8php.html#a516591850f4fd49fd1425cfa54089db8":[6,0,0,64,9],
+"plugin_8php.html#a56f71fe5adf9586ce950523d8180443e":[6,0,0,64,26],
+"plugin_8php.html#a65ab52cb1a7030d5190e247211bef2a1":[6,0,0,64,11],
+"plugin_8php.html#a65fedcffbe03562ef844cabee37d34e2":[6,0,0,64,23],
+"plugin_8php.html#a67ca417634de2d0beffffc54aeb951ff":[6,0,0,64,12],
+"plugin_8php.html#a75f7dfed291fd7add7fc85b5c022a1f4":[6,0,0,64,4],
+"plugin_8php.html#a7f05de16c0a32602853b09b99dd85e7c":[6,0,0,64,0],
+"plugin_8php.html#a855c4fdb38c0fc2714d537752a4347f9":[6,0,0,64,19],
+"plugin_8php.html#a9039e15aae27676af7777dcbee5a11d6":[6,0,0,64,1],
+"plugin_8php.html#a90538627db68605aeb6db17a8ead6523":[6,0,0,64,25],
+"plugin_8php.html#a9ab6caae31935f6cf781ce7872db7cdf":[6,0,0,64,13],
+"plugin_8php.html#a9ca9632b7309a65b05c03a3e2f473a3d":[6,0,0,64,18],
+"plugin_8php.html#acb63c27d07f6d7dffe95f98a6cef1295":[6,0,0,64,3],
+"plugin_8php.html#ad48de9c0fb7f19413a2aa49250d00405":[6,0,0,64,6],
+"plugin_8php.html#ad9ff8ba554576383c5911a4bce068c1f":[6,0,0,64,2],
+"plugin_8php.html#aeaebe63dcf6fa2794f363ba2bc0b2c6b":[6,0,0,64,15],
+"plugin_8php.html#af92789f559b89a380e49d303218aeeca":[6,0,0,64,10],
+"plugin_8php.html#af9ac19004dca49adae1ac7a0d9f3b025":[6,0,0,64,21],
+"plugin_8php.html#aff0178bd8d0b34a94d5efddc883edd35":[6,0,0,64,5],
+"po2php_8php.html":[6,0,2,6],
+"po2php_8php.html#a3b75e36f913198299e99559b175cd8b4":[6,0,2,6,0],
+"po2php_8php.html#a4f3dc9b019d0cd1dc171c54c991ef334":[6,0,2,6,1],
+"poco_8php.html":[6,0,1,82],
+"poco_8php.html#a53def16f75e3d41f1d2bb7cfa4905498":[6,0,1,82,0],
+"poke_8php.html":[6,0,1,83],
+"poke_8php.html#a9725aab97b3983e6a98bd81c4efe7d3b":[6,0,1,83,1],
+"poke_8php.html#ac9190563a8da9c07a16f9dcd71cf6993":[6,0,1,83,0],
+"poll_8php.html":[6,0,1,84],
+"poll_8php.html#a26be9d4f230cb68f5be326198cfc6c77":[6,0,1,84,2],
+"poll_8php.html#a3314c26bd2ac0ed831cebf3315cd3263":[6,0,1,84,0],
+"poll_8php.html#ab9ecd5b71af090a5da9c93f34f7ec930":[6,0,1,84,1],
+"poller_8php.html":[6,0,0,65],
+"poller_8php.html#a5f12df3a4738124b6c039971e87e76da":[6,0,0,65,0],
+"post_8php.html":[6,0,1,85],
+"post_8php.html#af4b48181ce773ef0cdfc972441445c34":[6,0,1,85,0],
+"post_8php.html#af59e6a1dc22d19d9257b01cd7ccedb75":[6,0,1,85,1],
+"pretheme_8php.html":[6,0,1,86],
+"pretheme_8php.html#af5660943ee99db5fd75182316522eafe":[6,0,1,86,0],
+"profile_8php.html":[6,0,1,88],
+"profile_8php.html#a3775cf6eef6587e5143133356a7b76c0":[6,0,1,88,0],
+"profile_8php.html#ab5d0246be0552e2182a585c1206d22a5":[6,0,1,88,1],
+"profile__photo_8php.html":[6,0,1,89],
+"profile__photo_8php.html#a140631c56438fbfacb61a1eb43067d02":[6,0,1,89,0],
+"profile__photo_8php.html#a4b80234074bd603221aa5364f330e479":[6,0,1,89,1],
+"profile__photo_8php.html#a561103564199da56e58061a4196eb102":[6,0,1,89,2],
+"profile__selectors_8php.html":[6,0,0,67],
+"profile__selectors_8php.html#a3b50b3ea4ea4bdbebebfffc5d1b157c7":[6,0,0,67,4],
+"profile__selectors_8php.html#a7473dd095987e1cdcc79d4f0bb5e6798":[6,0,0,67,2],
+"profile__selectors_8php.html#a8bfa1ca2d1598a3d65f1f9bb803ca816":[6,0,0,67,1],
+"profile__selectors_8php.html#ab0eae5c0ceba77364469f0f580f0d074":[6,0,0,67,5],
+"profile__selectors_8php.html#adc79715bd2e102b4583fb530749ec534":[6,0,0,67,3],
+"profile__selectors_8php.html#ae2b2c087e6530c61c0b256fd26d52355":[6,0,0,67,0],
+"profiles_8php.html":[6,0,1,90],
+"profiles_8php.html#a36f71405ad536228f8bb84a551b23f7e":[6,0,1,90,1],
+"profiles_8php.html#a46975783b8b8d70402d51487eb1f0b00":[6,0,1,90,0],
+"profiles_8php.html#ab0362c81b1d3b0b12a772b9fac446e04":[6,0,1,90,2],
+"profperm_8php.html":[6,0,1,91],
+"profperm_8php.html#a17fb64ec05edee1dc94d95438807d6c6":[6,0,1,91,1],
+"profperm_8php.html#aef015787de2373d9fb3fe3f814fb5023":[6,0,1,91,0],
+"pubsites_8php.html":[6,0,1,92],
+"pubsites_8php.html#af614e279aab54065345bda6b03eafdf0":[6,0,1,92,0],
+"queue_8php.html":[6,0,0,69],
+"queue_8php.html#af8c93de86d866c3200174c8450a0f341":[6,0,0,69,0],
+"queue__fn_8php.html":[6,0,0,70],
+"queue__fn_8php.html#a4c2876181f75a4a61e85b7f00dfdbba1":[6,0,0,70,1],
+"queue__fn_8php.html#a8fe71e981399bbf5d000a6ca42f57b24":[6,0,0,70,0],
+"randprof_8php.html":[6,0,1,93],
+"randprof_8php.html#abf5dba3c608b9304cbf68327cd31b090":[6,0,1,93,0],
+"rbmark_8php.html":[6,0,1,94],
+"rbmark_8php.html#a43fec4960b50926251574762cc491f76":[6,0,1,94,0],
+"rbmark_8php.html#ac5a66aa8599fa5dc702bae396d8d1f8c":[6,0,1,94,1],
+"receive_8php.html":[6,0,1,95],
+"receive_8php.html#a03d8fa26e77844020ba5602deca7d494":[6,0,1,95,0],
+"redable_8php.html":[6,0,3,0,6],
+"redable_8php.html#a3987f5547ceb7e36a210a66a06241a5a":[6,0,3,0,6,0],
"redbasic_2php_2style_8php.html":[6,0,3,1,3,0,1],
-"redbasic_2php_2style_8php.html#a01c151bf47f7da2b979aaa4cb868da4c":[6,0,3,1,3,0,1,0],
-"redbasic_2php_2style_8php.html#ab3afb90d611eca90819f597a2c0bb459":[6,0,3,1,3,0,1,1],
-"redbasic_2php_2theme_8php.html":[6,0,3,1,3,0,2],
-"redbasic_2php_2theme_8php.html#af6eb813e9fc7e2d76ac1b82bc5c0ed9b":[6,0,3,1,3,0,2,0],
-"redbasic_8php.html":[6,0,3,1,0,2,9],
-"reddav_8php.html":[6,0,0,68],
-"reddav_8php.html#a5df0d09893f2e65dc5cf6bbab6cfb266":[6,0,0,68,5],
-"reddav_8php.html#a9f531641dfb4e43cd88ac1a9ae7e2088":[6,0,0,68,6],
-"reddav_8php.html#ae92ea0df1993f6a7bcd1b6efa6c1fb66":[6,0,0,68,4],
-"register_8php.html":[6,0,1,92],
-"register_8php.html#a0e91f57f111407ea8d3223a05022bb2a":[6,0,1,92,0],
-"register_8php.html#a51731dcc1917c58a790eb1c0f6132271":[6,0,1,92,2],
-"register_8php.html#ae20c0cd40f738d6295de58b9202c83d5":[6,0,1,92,1],
-"regmod_8php.html":[6,0,1,93],
-"regmod_8php.html#a7953df4e32e63946565e90cdd5d50409":[6,0,1,93,0],
-"regver_8php.html":[6,0,1,94],
-"regver_8php.html#ad2c5f644fd1b099abd7c715b7df6f50f":[6,0,1,94,0],
-"removeme_8php.html":[6,0,1,95],
-"removeme_8php.html#a065a589caa2aa84c60f7073a28f0ad9c":[6,0,1,95,0],
-"removeme_8php.html#a7be08738beca44bb98a79e01cdb2ee88":[6,0,1,95,1],
-"rmagic_8php.html":[6,0,1,96],
-"rmagic_8php.html#a3e28db1e5cfa7e5c2617f90222c1caef":[6,0,1,96,0],
-"rmagic_8php.html#a869de069d081b3c4e98b957d06bbf08f":[6,0,1,96,2],
-"rmagic_8php.html#a95455edd43f1bff39446a57388cdde16":[6,0,1,96,1],
-"rpost_8php.html":[6,0,1,97],
-"rpost_8php.html#a8190354d789000806d9879aea276728f":[6,0,1,97,0],
-"rsd__xml_8php.html":[6,0,1,98],
-"rsd__xml_8php.html#a740cd02fa15e5a53f8547fac73f0ab82":[6,0,1,98,0],
-"search_8php.html":[6,0,1,99],
-"search_8php.html#ab2568591359edde5b483a6cd9a24b2cc":[6,0,1,99,0],
-"search_8php.html#acf19fd30f07f495781ca0d7a0a08b435":[6,0,1,99,1],
-"search__ac_8php.html":[6,0,1,100],
-"search__ac_8php.html#a14f90c83a3f2be095e9e2992a8d66138":[6,0,1,100,0],
-"security_8php.html":[6,0,0,69],
-"security_8php.html#a20f8b9851f23ee8894b8925584ef6821":[6,0,0,69,2],
-"security_8php.html#a3ef2be6a7e4928e39d50059d6feb457c":[6,0,0,69,11],
-"security_8php.html#a444ac867dfa8c37cf0a7a226412bee28":[6,0,0,69,4],
-"security_8php.html#a6126c77a1267e046ac59cf864613f011":[6,0,0,69,10],
-"security_8php.html#a77ba0d1889a39cf32434c5ce96fe1433":[6,0,0,69,5],
-"security_8php.html#a8d23d2597aae380a3341872fe9513380":[6,0,0,69,1],
-"security_8php.html#a9355488460ab11d6058656ff919e5cf9":[6,0,0,69,7],
-"security_8php.html#a9c6180e82150a5a9af91a1255d096b5c":[6,0,0,69,3],
-"security_8php.html#ab3bdd30dc60d9ee72370b866aa4a2d01":[6,0,0,69,9],
-"security_8php.html#acd06ef411116115c2f0a92633700db8a":[6,0,0,69,6],
-"security_8php.html#adc7bf51e3b8d67bd80e9348f9ab03733":[6,0,0,69,0],
-"security_8php.html#afa683bc025a1d2fe9065e2f6cd71a22f":[6,0,0,69,8],
-"session_8php.html":[6,0,0,70],
-"session_8php.html#a26fa1042356d555023cbf15ddd4f8507":[6,0,0,70,4],
-"session_8php.html#a4c0ead624f95483e386bc80abf570a8f":[6,0,0,70,0],
-"session_8php.html#a5e1c616e02b863d5450317d101366bb7":[6,0,0,70,1],
-"session_8php.html#a62e4a6cb26b4bb1b8ddd8277b26090eb":[6,0,0,70,8],
-"session_8php.html#a7f0f50576360d9ba52d29364e0b83a8e":[6,0,0,70,5],
-"session_8php.html#a96b09cc763572f45280786a7b33feb7e":[6,0,0,70,7],
-"session_8php.html#ac4461c1984543d3553e73dba2771568f":[6,0,0,70,6],
-"session_8php.html#ac95373f4966862a028033dd2f94d4da1":[6,0,0,70,3],
-"session_8php.html#af0100a2642a5268594bbd5742a03d885":[6,0,0,70,9],
-"session_8php.html#af230b86bfff7db66c3bdd7e0bbc24052":[6,0,0,70,2],
-"settings_8php.html":[6,0,1,101],
-"settings_8php.html#a39abc76ff5459c57e3b957664f273f18":[6,0,1,101,0],
-"settings_8php.html#a3a4cde287482fced008583f54ba2a722":[6,0,1,101,1],
-"settings_8php.html#aa7ee94d88ac088edb04ccf3a26de3586":[6,0,1,101,2],
-"setup_8php.html":[6,0,1,102],
-"setup_8php.html#a0c3f3b671381f6dccd924b8ecdfc56c4":[6,0,1,102,2],
-"setup_8php.html#a13cf286774149a0a7bd8adb8179cec75":[6,0,1,102,14],
-"setup_8php.html#a14d208682a88632290c895d20da6e7d6":[6,0,1,102,5],
-"setup_8php.html#a267555abd17290e659b4bf44b885e4e0":[6,0,1,102,13],
-"setup_8php.html#a2b375ddc555140236fc500135de99371":[6,0,1,102,10],
-"setup_8php.html#a5ad92c0857d1dadd6b60a9a557159c9f":[6,0,1,102,3],
-"setup_8php.html#a69a450e06dd3771fb51d3e4b0266a35e":[6,0,1,102,1],
-"setup_8php.html#a8652788e8589778c5f81634a9d5b9429":[6,0,1,102,8],
-"setup_8php.html#a88247384a96e14516f474d7af6a465c1":[6,0,1,102,12],
-"setup_8php.html#aa3bbb111780da70ba35cc23a306f2c76":[6,0,1,102,4],
-"setup_8php.html#ab4b71369a25021d59247c917e98d8246":[6,0,1,102,7],
-"setup_8php.html#abe405d227ba7232971964a706d4f3bce":[6,0,1,102,11],
-"setup_8php.html#ad2e0375a9ab87ebe6e78124ee125054a":[6,0,1,102,9],
-"setup_8php.html#addb24714bc2542aa4f4215e98fe48432":[6,0,1,102,16],
-"setup_8php.html#ae8e4d9279a61de74d5f39962cb7b6ca1":[6,0,1,102,0],
-"setup_8php.html#aea1ebdda58ec938f4e7b31aa5c5f6b58":[6,0,1,102,15],
-"setup_8php.html#afd8b0b3ade1507c45325caf377bf459d":[6,0,1,102,6],
-"share_8php.html":[6,0,1,103],
-"share_8php.html#afeb26046bdd02567ecd29ab5f188b249":[6,0,1,103,0],
-"siteinfo_8php.html":[6,0,1,104],
-"siteinfo_8php.html#a3efbd0bd6564af19ec0a9ce0294e59d0":[6,0,1,104,1],
-"siteinfo_8php.html#a70c09bfb6dd1c86a125a35f62ed53656":[6,0,1,104,0],
-"sitelist_8php.html":[6,0,1,105],
-"sitelist_8php.html#a665a59bf60f780b40f32c909f4a473b1":[6,0,1,105,0],
-"smilies_8php.html":[6,0,1,106],
-"smilies_8php.html#ab43b1e9f33a700a830aff14c7b3a617f":[6,0,1,106,0],
-"socgraph_8php.html":[6,0,0,71],
-"socgraph_8php.html#a16ac51c505d72987ed8d6d6aed0e8586":[6,0,0,71,0],
-"socgraph_8php.html#a5ef8bef37161df53718a21e93d02fbd6":[6,0,0,71,6],
-"socgraph_8php.html#a76e6fca3d2bc842dcd9e710bb87c8329":[6,0,0,71,7],
-"socgraph_8php.html#a790690bb1a1d02483fe31632a160144d":[6,0,0,71,8],
-"socgraph_8php.html#a7d34cd58025bcd9e575282f44db75918":[6,0,0,71,1],
-"socgraph_8php.html#a887d576f21fd708132a06d0f72f90f84":[6,0,0,71,4],
-"socgraph_8php.html#ac343a846241d36cdf046b08f3396cfe9":[6,0,0,71,2],
-"socgraph_8php.html#af175807406d94407a5e11742a3287746":[6,0,0,71,5],
-"socgraph_8php.html#af29d056beec10b4e38e5209c92452894":[6,0,0,71,3],
-"sources_8php.html":[6,0,1,107],
-"sources_8php.html#ac442ccef080ab95772d8929fcafcb4b7":[6,0,1,107,0],
-"sources_8php.html#ac73298ff162ce7b2de8dcaf3d3305b1e":[6,0,1,107,1],
-"spam_8php.html":[6,0,0,72],
-"spam_8php.html#a05861201147b9a538d006f0269255cf9":[6,0,0,72,1],
-"spam_8php.html#ab8fd81a82c9622cbebb8ceab6b310ca6":[6,0,0,72,0],
-"sslify_8php.html":[6,0,1,108],
-"sslify_8php.html#a75b11e54a3d1fc83e7d4c0e8b4dab316":[6,0,1,108,0],
-"starred_8php.html":[6,0,1,109],
-"starred_8php.html#a63024fb418c678e49fd535e3752d349a":[6,0,1,109,0],
-"subthread_8php.html":[6,0,1,110],
-"subthread_8php.html#a50368f3d825b77996030528e7fbfa3d3":[6,0,1,110,0],
-"suggest_8php.html":[6,0,1,111],
-"suggest_8php.html#a58748a8235d4523f8333847f3e42dd91":[6,0,1,111,0],
-"suggest_8php.html#a696acf1dd8070e479adcc80c63c6718c":[6,0,1,111,1],
-"system__unavailable_8php.html":[6,0,0,73],
-"system__unavailable_8php.html#a73751a6bcc17ad3ca503496e2fb020fa":[6,0,0,73,0],
-"tagger_8php.html":[6,0,1,112],
-"tagger_8php.html#a0e4a3eb177d1684553c547503d67161c":[6,0,1,112,0],
-"tagrm_8php.html":[6,0,1,113],
-"tagrm_8php.html#a1702f40aa53a2fa93deade1f609abe78":[6,0,1,113,1],
-"tagrm_8php.html#adfd4ea5b4d7fc6d9c9e042af5cd7d49a":[6,0,1,113,0],
-"taxonomy_8php.html":[6,0,0,74],
-"taxonomy_8php.html#a03f55ee46c5f496e42f3d29db8d09cce":[6,0,0,74,9],
-"taxonomy_8php.html#a088371f4bc19155b2291508f5cd63332":[6,0,0,74,0],
-"taxonomy_8php.html#a08df5164926d2b31b8e9fcfe919de2b6":[6,0,0,74,2],
-"taxonomy_8php.html#a0fb8cf0ac7bcbc8b27d856fe9bf69cd1":[6,0,0,74,6],
-"taxonomy_8php.html#a163b5131f388080b0fc82398d3a32fe1":[6,0,0,74,4],
-"taxonomy_8php.html#a3299482ac20e9d79453048dd52881d37":[6,0,0,74,3],
-"taxonomy_8php.html#a4ba1339b2a7054971178ce194e4440fd":[6,0,0,74,10],
-"taxonomy_8php.html#a599ee71dd3194c8127b00dabec77abc1":[6,0,0,74,1],
-"taxonomy_8php.html#a7747fa859ac56fbffd4f9782d85505de":[6,0,0,74,7],
-"taxonomy_8php.html#a7a913d19c77610da689be48fbbf6734c":[6,0,0,74,14],
-"taxonomy_8php.html#aaeded36bcc983b35d9205fe5b6c18c43":[6,0,0,74,13],
-"taxonomy_8php.html#aaf90ba8b839d6459065f39a4f1109b8a":[6,0,0,74,11],
-"taxonomy_8php.html#ac21d1dff16d569e7d110167aea4e63c2":[6,0,0,74,12],
-"taxonomy_8php.html#adfead45e3b8a3dfb2b4a4b9281d0dbe1":[6,0,0,74,5],
-"taxonomy_8php.html#af387463d42ffdf7d2ab3d5b22e40a0c7":[6,0,0,74,8],
-"template__processor_8php.html":[6,0,0,75],
-"template__processor_8php.html#a797745996c7839a93b2ab1af456631ab":[6,0,0,75,3],
-"template__processor_8php.html#ab2bcd8738f20f293636a6ae8e1099db5":[6,0,0,75,1],
-"template__processor_8php.html#ac635bb19a5f6eadd6b0cddefdd537c1e":[6,0,0,75,2],
-"text_8php.html":[6,0,0,76],
-"text_8php.html#a0271381208acfa2d4cff36da281e3e23":[6,0,0,76,40],
-"text_8php.html#a030fa5ecc64168af0c4f44897a9bce63":[6,0,0,76,46],
-"text_8php.html#a070384ec000fd65043fce11d5392d241":[6,0,0,76,6],
-"text_8php.html#a0a1f7c0e97f9ecbebf3e5834582b014c":[6,0,0,76,16],
-"text_8php.html#a0c65597bb4aed3a039eb795ff540e5e3":[6,0,0,76,11],
-"text_8php.html#a10dde167249ed5abf190a7a0986878ea":[6,0,0,76,71],
-"text_8php.html#a11255c8c4e5245b6c24f97684826aa54":[6,0,0,76,45],
-"text_8php.html#a13286f8a95d2de6b102966ecc270c8d6":[6,0,0,76,5],
-"text_8php.html#a1360fed7f918d859daaca1c9f384f9af":[6,0,0,76,82],
-"text_8php.html#a138a3a611fa7f4f3630674145fc826bf":[6,0,0,76,33],
-"text_8php.html#a1557112a774ec00fa06ed6b6f6495506":[6,0,0,76,36],
-"text_8php.html#a1633412120f52bdce5f43e0a127d9293":[6,0,0,76,50],
-"text_8php.html#a1af49756c8c71902a66c7e329c462beb":[6,0,0,76,53],
-"text_8php.html#a1e510c53624933ce9b7d6715784894db":[6,0,0,76,47],
-"text_8php.html#a24d441d30df4b8e6bf6780bf62a5e2c6":[6,0,0,76,48],
-"text_8php.html#a2690ad67bb6fb97ef69de3e8d23f2728":[6,0,0,76,43],
-"text_8php.html#a273156a6f5cddc6652ad656821cd5805":[6,0,0,76,72],
-"text_8php.html#a27cd2c1b3bcb49a0cfb7249e851725ca":[6,0,0,76,4],
-"text_8php.html#a29988052f3944111def3b6aaf2c7a8f6":[6,0,0,76,90],
-"text_8php.html#a29d6b804e368d3ef359ee295e96ed4c7":[6,0,0,76,79],
-"text_8php.html#a2a902f5fdba8646333e997898ac45ea3":[6,0,0,76,49],
-"text_8php.html#a2e8d6c402603be3a1256a16605e09c2a":[6,0,0,76,10],
-"text_8php.html#a2f2585385530cb935a6325c809d84a4d":[6,0,0,76,76],
-"text_8php.html#a2ffd79c60cc87cec24ef76447b905187":[6,0,0,76,92],
-"text_8php.html#a3054189cff173977f4216c9a3dd29e1b":[6,0,0,76,23],
-"text_8php.html#a324c58f37f6acdf9cd1922aa76077d9f":[6,0,0,76,87],
-"text_8php.html#a33bdb5d4bfff2ede7caf61a98ac0a2e9":[6,0,0,76,74],
-"text_8php.html#a36a2e5d418ee81140f25c4233cfecd1f":[6,0,0,76,85],
-"text_8php.html#a3972701c5c83624ec4e2d06242f614e7":[6,0,0,76,31],
-"text_8php.html#a3999a0b3e22e440f280ee791ce34d384":[6,0,0,76,42],
-"text_8php.html#a3a0c432a484c17d7720b8ba2d6bfdd59":[6,0,0,76,25],
-"text_8php.html#a3d225b253bb9e0f2498c11647d927b0b":[6,0,0,76,73],
-"text_8php.html#a3d2793d66db3345fd290b71e2eadf98e":[6,0,0,76,7],
-"text_8php.html#a405afe814a23f3bd94d826101aa168ab":[6,0,0,76,88],
-"text_8php.html#a436a8de00c942364c2d0fcfc7e1f4b5a":[6,0,0,76,34],
-"text_8php.html#a4659fbc4e54ddc700c3aa66b9092c623":[6,0,0,76,32],
-"text_8php.html#a47c1e4a5f3f53027daacd8a9db24f285":[6,0,0,76,44],
-"text_8php.html#a4841df5beabdd1bdd1ed56781a915d61":[6,0,0,76,62],
-"text_8php.html#a4bbb7d00c05cd20b4e043424f322388f":[6,0,0,76,51],
-"text_8php.html#a4e4d42b0a805148d9f9a92bcac89bf91":[6,0,0,76,24],
-"text_8php.html#a4e7698aca48982512594b274543c3b9b":[6,0,0,76,61],
-"text_8php.html#a543447c5ed766535221e2d9636b379ee":[6,0,0,76,84],
-"text_8php.html#a55ab893be57feda59c2a7ba1e58ff2d0":[6,0,0,76,9],
-"text_8php.html#a63fb21c0bed2fc72eef2c1471ac42b63":[6,0,0,76,14],
-"text_8php.html#a6a3d80a6c6fb234fd0bac44203b828eb":[6,0,0,76,83],
-"text_8php.html#a71f6952243d3fe1c5a8154f78027e29c":[6,0,0,76,41],
-"text_8php.html#a736db13a966b8abaf8c9198faa35911a":[6,0,0,76,28],
-"text_8php.html#a740ad03e00459039a2c0992246c4e727":[6,0,0,76,80],
-"text_8php.html#a75c243e06341ec16bd5a44b9b1cacd85":[6,0,0,76,1],
-"text_8php.html#a75c326298519ed14ebe762194c8a3f2a":[6,0,0,76,35],
-"text_8php.html#a76d1b3435c067978d7b484c45f56472b":[6,0,0,76,27]
+"redbasic_2php_2style_8php.html#a01c151bf47f7da2b979aaa4cb868da4c":[6,0,3,1,3,0,1,0]
};
diff --git a/doc/html/navtreeindex8.js b/doc/html/navtreeindex8.js
index 9c2310701..9053dfa06 100644
--- a/doc/html/navtreeindex8.js
+++ b/doc/html/navtreeindex8.js
@@ -1,211 +1,253 @@
var NAVTREEINDEX8 =
{
-"text_8php.html#a8264348059abd1d4d5bb521323d3b19a":[6,0,0,76,81],
-"text_8php.html#a85e3a4851c16674834010d8419a5d7ca":[6,0,0,76,8],
-"text_8php.html#a876e94892867019935b348b573299352":[6,0,0,76,69],
-"text_8php.html#a8796f6a9ca592ecdce7b3afc3462aa13":[6,0,0,76,75],
-"text_8php.html#a87a3cefc603302c78982f1d8e1245265":[6,0,0,76,15],
-"text_8php.html#a89929fa6f70a8ba54d5273fcf622b665":[6,0,0,76,20],
-"text_8php.html#a8b0a799341b1fc4cba2c3ede3e3fc9b6":[6,0,0,76,60],
-"text_8php.html#a8d8c4a11e53461caca21181ebd72daca":[6,0,0,76,19],
-"text_8php.html#a95fd2f8f23a1948414a03ebc963bac57":[6,0,0,76,3],
-"text_8php.html#a98fd99dee3da8cf4c148dc04efe782ee":[6,0,0,76,55],
-"text_8php.html#a9c6ce4e12a4ac883c5e3f36fed6e1e09":[6,0,0,76,66],
-"text_8php.html#a9d6a5ee1290de7a8b483fe78585daade":[6,0,0,76,64],
-"text_8php.html#a9fbeae13c9abd6e27cb4d8d1817f969c":[6,0,0,76,68],
-"text_8php.html#aa46f941155c2ac1155f2f17ffb0adb66":[6,0,0,76,30],
-"text_8php.html#aa5148a0dfea2a1ca64c3d52f10aa2d64":[6,0,0,76,17],
-"text_8php.html#aa5528f41533927e1bd2da3618a74a6d7":[6,0,0,76,56],
-"text_8php.html#aa6b0aa8afbeab50d1a3058ad21acb74e":[6,0,0,76,37],
-"text_8php.html#aac0969ae09853205992ba06ab9f9f61a":[6,0,0,76,29],
-"text_8php.html#aad557c054cf2ed915633701018fc7e3f":[6,0,0,76,91],
-"text_8php.html#aae91e4d2a2c6f7a9daccd2c186ae3447":[6,0,0,76,70],
-"text_8php.html#aaed4413ed8918838b517e3b2fafaea0d":[6,0,0,76,86],
-"text_8php.html#ab4a4c3d4700bc219bb84f33b499314f4":[6,0,0,76,89],
-"text_8php.html#ac19d2b33a58372a357a43d51eed19162":[6,0,0,76,57],
-"text_8php.html#ac1dbf2e37e8069bea2c0f557fdbf203e":[6,0,0,76,38],
-"text_8php.html#ac2ff88e800f74b22e9cc091c10809c54":[6,0,0,76,77],
-"text_8php.html#ace3c98538c63e09b70a363210b414112":[6,0,0,76,21],
-"text_8php.html#acedb584f65114a33f389efb796172a91":[6,0,0,76,2],
-"text_8php.html#ad6432621d0fafcbcf3d3b9b49bef7784":[6,0,0,76,13],
-"text_8php.html#ad855a32bee22c3f3b9734e3a334b96f2":[6,0,0,76,65],
-"text_8php.html#ad8c6e13d6accf057136c5f30a23a5f08":[6,0,0,76,26],
-"text_8php.html#adba17ec946f4285285dc100f7860bf51":[6,0,0,76,52],
-"text_8php.html#ae17b39d5e321debd3ad16dcbbde842b8":[6,0,0,76,39],
-"text_8php.html#ae2126da85966da0e79c6bcbac63b0bda":[6,0,0,76,67],
-"text_8php.html#ae4282a39492caa23ccbc2ce98e54f110":[6,0,0,76,18],
-"text_8php.html#ae4df74296fbe55051ed3c035e55205e5":[6,0,0,76,58],
-"text_8php.html#af8a3e3a66a7b862d4510f145d2e13186":[6,0,0,76,0],
-"text_8php.html#af9c9ac3f74c82dc60acfa404d0e9dc53":[6,0,0,76,78],
-"text_8php.html#afc998d2796a6b2a08e96f7cc061e7221":[6,0,0,76,63],
-"text_8php.html#afdc69fe3f6c09e35e46304dcea63ae28":[6,0,0,76,22],
-"text_8php.html#afe18627c4983ee5f7c940a0992818cd5":[6,0,0,76,12],
-"text_8php.html#afe54312607d92f7ce9593f5760831f80":[6,0,0,76,59],
-"text_8php.html#afe9f178d264d44a94dc1292aaf0fd585":[6,0,0,76,54],
-"theme_2apw_2php_2theme__init_8php.html":[6,0,3,1,0,1,4],
-"theme_2apw_2php_2theme__init_8php.html#a54f32c086fe209c99769a4c4047dd864":[6,0,3,1,0,1,4,0],
-"theme_2blogga_2php_2default_8php.html":[6,0,3,1,1,0,1],
-"theme_2blogga_2php_2default_8php.html#a1230ab83d4ec9785d8f3a966f33dc5f3":[6,0,3,1,1,0,1,2],
-"theme_2blogga_2php_2default_8php.html#a720581ae288aa09511670563e4205a4a":[6,0,3,1,1,0,1,0],
-"theme_2blogga_2php_2default_8php.html#ac7062908d1eb80c0735270f7997c4527":[6,0,3,1,1,0,1,1],
-"theme_2blogga_2php_2theme__init_8php.html":[6,0,3,1,1,0,3],
-"theme_2blogga_2view_2theme_2blog_2default_8php.html":[6,0,3,1,1,1,0,0,1],
-"theme_2blogga_2view_2theme_2blog_2default_8php.html#a1230ab83d4ec9785d8f3a966f33dc5f3":[6,0,3,1,1,1,0,0,1,2],
-"theme_2blogga_2view_2theme_2blog_2default_8php.html#a52d9dd070ed541729088395c22502539":[6,0,3,1,1,1,0,0,1,1],
-"theme_2blogga_2view_2theme_2blog_2default_8php.html#a720581ae288aa09511670563e4205a4a":[6,0,3,1,1,1,0,0,1,0],
-"theme_2mytheme_2php_2default_8php.html":[6,0,3,1,2,0,0],
-"theme_2mytheme_2php_2default_8php.html#a3987f5547ceb7e36a210a66a06241a5a":[6,0,3,1,2,0,0,0],
-"theme_2redbasic_2php_2theme__init_8php.html":[6,0,3,1,3,0,3],
-"thing_8php.html":[6,0,1,114],
-"thing_8php.html#a24a35f1e64029a67fdbea94a776ae04b":[6,0,1,114,0],
-"thing_8php.html#a8be23b1d475ec3d9291999221c674c80":[6,0,1,114,1],
-"todo.html":[3],
-"toggle__mobile_8php.html":[6,0,1,115],
-"toggle__mobile_8php.html#aca53ade8971802b45c31e722b22c6254":[6,0,1,115,0],
-"toggle__safesearch_8php.html":[6,0,1,116],
-"toggle__safesearch_8php.html#a23d5cfb2727a266e44993ffbf5595a79":[6,0,1,116,0],
-"tpldebug_8php.html":[6,0,2,8],
-"tpldebug_8php.html#a44778457a6c02554812fbfad19d32ba3":[6,0,2,8,0],
-"tpldebug_8php.html#a5358407d65f2ca826f96356a6642d149":[6,0,2,8,1],
-"tpldebug_8php.html#afbc7aadb3f7ff1edf0aaaa326a42179c":[6,0,2,8,2],
-"typo_8php.html":[6,0,2,9],
-"typo_8php.html#a1b709c1d79631ebc8320b41bda028b54":[6,0,2,9,1],
-"typo_8php.html#a329c9c12217d2c8660c47bbc7c8df4c5":[6,0,2,9,4],
-"typo_8php.html#a3ecd17ac846be1b35f3662f5c12ab6bd":[6,0,2,9,3],
-"typo_8php.html#a9590b15215a21e9b42eb546aeef79704":[6,0,2,9,2],
-"typo_8php.html#acebf83966ef6d7e5645a6b62ba368f9f":[6,0,2,9,0],
-"typohelper_8php.html":[6,0,2,10],
-"typohelper_8php.html#a7542d95618011800c61773127fa625cf":[6,0,2,10,0],
-"typohelper_8php.html#ab6fd357fb5b2a3ba8aab9e8b98c6a805":[6,0,2,10,1],
-"uexport_8php.html":[6,0,1,117],
-"uexport_8php.html#a118920137dedebe0581623a2e57e7b0d":[6,0,1,117,0],
-"update__channel_8php.html":[6,0,1,118],
-"update__channel_8php.html#aca52a9da500f0db2f0a8666af5bc06ba":[6,0,1,118,0],
-"update__display_8php.html":[6,0,1,119],
-"update__display_8php.html#aa36ac524059e209d5d75a03c16206246":[6,0,1,119,0],
-"update__network_8php.html":[6,0,1,120],
-"update__network_8php.html#a8abf5b9f65af6a27ee2f9d7207ed1b41":[6,0,1,120,0],
-"update__search_8php.html":[6,0,1,121],
-"update__search_8php.html#ace4c3a23fa7d6922399e27c297a6ba52":[6,0,1,121,0],
-"updatetpl_8py.html":[6,0,2,11],
-"updatetpl_8py.html#a52a85ffa6b6d63d840b185a133478c12":[6,0,2,11,5],
-"updatetpl_8py.html#a79c20eb62d568c999b56eb08530355d3":[6,0,2,11,2],
-"updatetpl_8py.html#a988d937ed5d5c2b592b763036af5cf94":[6,0,2,11,1],
-"updatetpl_8py.html#ab42dd79af65ee82201fd6f04715f62f6":[6,0,2,11,3],
-"updatetpl_8py.html#ac9d11279fed403a329a719298feafc4f":[6,0,2,11,0],
-"updatetpl_8py.html#ae694f5e1f25f8a92a945eb90c432dfe6":[6,0,2,11,4],
-"view_2theme_2apw_2php_2config_8php.html":[6,0,3,1,0,1,0],
-"view_2theme_2apw_2php_2config_8php.html#aa7d5739b72efef9822535b2b32d5364d":[6,0,3,1,0,1,0,1],
-"view_2theme_2apw_2php_2config_8php.html#ad29461920cf03b9ce1428e21eb1f4ba6":[6,0,3,1,0,1,0,2],
-"view_2theme_2apw_2php_2config_8php.html#ad59fc09da66b66267f9753c8b2dd68d0":[6,0,3,1,0,1,0,0],
-"view_2theme_2blogga_2php_2config_8php.html":[6,0,3,1,1,0,0],
-"view_2theme_2blogga_2php_2config_8php.html#a09cd81013505f83aea0771243a1e4e53":[6,0,3,1,1,0,0,1],
-"view_2theme_2blogga_2php_2config_8php.html#a8a311a402d3e746ce53fadc38e4b2d27":[6,0,3,1,1,0,0,0],
-"view_2theme_2blogga_2php_2config_8php.html#aa7d5739b72efef9822535b2b32d5364d":[6,0,3,1,1,0,0,3],
-"view_2theme_2blogga_2php_2config_8php.html#ad29461920cf03b9ce1428e21eb1f4ba6":[6,0,3,1,1,0,0,4],
-"view_2theme_2blogga_2php_2config_8php.html#aef2da5582b7cb6b5f63e5ca5d69fd30b":[6,0,3,1,1,0,0,2],
-"view_2theme_2blogga_2view_2theme_2blog_2config_8php.html":[6,0,3,1,1,1,0,0,0],
-"view_2theme_2blogga_2view_2theme_2blog_2config_8php.html#a09cd81013505f83aea0771243a1e4e53":[6,0,3,1,1,1,0,0,0,1],
-"view_2theme_2blogga_2view_2theme_2blog_2config_8php.html#a8a311a402d3e746ce53fadc38e4b2d27":[6,0,3,1,1,1,0,0,0,0],
-"view_2theme_2blogga_2view_2theme_2blog_2config_8php.html#aa7d5739b72efef9822535b2b32d5364d":[6,0,3,1,1,1,0,0,0,3],
-"view_2theme_2blogga_2view_2theme_2blog_2config_8php.html#ad29461920cf03b9ce1428e21eb1f4ba6":[6,0,3,1,1,1,0,0,0,4],
-"view_2theme_2blogga_2view_2theme_2blog_2config_8php.html#aef2da5582b7cb6b5f63e5ca5d69fd30b":[6,0,3,1,1,1,0,0,0,2],
-"view_2theme_2redbasic_2php_2config_8php.html":[6,0,3,1,3,0,0],
-"view_2theme_2redbasic_2php_2config_8php.html#a8574a41fa9735ee391ba57ab24b93793":[6,0,3,1,3,0,0,0],
-"view_2theme_2redbasic_2php_2config_8php.html#aa7d5739b72efef9822535b2b32d5364d":[6,0,3,1,3,0,0,1],
-"view_2theme_2redbasic_2php_2config_8php.html#ad29461920cf03b9ce1428e21eb1f4ba6":[6,0,3,1,3,0,0,2],
-"view_8php.html":[6,0,1,122],
-"view_8php.html#ac168f6c61a91ba2063f13b441c0ae96e":[6,0,1,122,0],
-"viewconnections_8php.html":[6,0,1,123],
-"viewconnections_8php.html#a00163d50b17568f7b0e48b1ca9ab7330":[6,0,1,123,1],
-"viewconnections_8php.html#ab6c4d983e97b3a8a879567ff76507776":[6,0,1,123,0],
-"viewsrc_8php.html":[6,0,1,124],
-"viewsrc_8php.html#a6eff3d0c1d7d14b335c4edb785cd60a4":[6,0,1,124,0],
-"vote_8php.html":[6,0,1,125],
-"vote_8php.html#a57a9516ee1b923b224e66dcc47377fb2":[6,0,1,125,2],
-"vote_8php.html#a6aa67489bf458ca5e3206e46dac68596":[6,0,1,125,0],
-"vote_8php.html#ae0c6610f40afbbc1f4fe6494c51fbab2":[6,0,1,125,1],
-"wall__attach_8php.html":[6,0,1,126],
-"wall__attach_8php.html#a7385e970e93228d082f0fd7254f6e653":[6,0,1,126,0],
-"wall__upload_8php.html":[6,0,1,127],
-"wall__upload_8php.html#a7cbe204244cf9e0380ee932263a74d8f":[6,0,1,127,0],
-"webfinger_8php.html":[6,0,1,128],
-"webfinger_8php.html#a17dd28db6d390194bf9ecb809739d1d3":[6,0,1,128,0],
-"webpages_8php.html":[6,0,1,129],
-"webpages_8php.html#af3b7397d4abc153e3d2147740ee1a41d":[6,0,1,129,0],
-"wfinger_8php.html":[6,0,1,130],
-"wfinger_8php.html#ae21e50c8d0a5f3c9be9f43a4e519acd3":[6,0,1,130,0],
-"widedarkness_8php.html":[6,0,3,1,0,2,10],
-"widgets_8php.html":[6,0,0,77],
-"widgets_8php.html#a08035db02ff6a23260146b4c64153422":[6,0,0,77,11],
-"widgets_8php.html#a0d404276fedc59f5038cf5c085028326":[6,0,0,77,26],
-"widgets_8php.html#a0e2f5179ed1a73b282dfda7270fcabb3":[6,0,0,77,3],
-"widgets_8php.html#a145ff35319cfa47a9cc07f9425bd674b":[6,0,0,77,8],
-"widgets_8php.html#a268b01ce1ab8fe2cb346cb769b9d1091":[6,0,0,77,9],
-"widgets_8php.html#a313a8d10ab81c71357c12e67e4d7efd5":[6,0,0,77,16],
-"widgets_8php.html#a3bdfb81bf9a8ddf219924fa7eaf22013":[6,0,0,77,18],
-"widgets_8php.html#a45ea061dabe9a8372e4ca3b9e5714256":[6,0,0,77,19],
-"widgets_8php.html#a47c72aac42058ea086c9ef8651c259da":[6,0,0,77,5],
-"widgets_8php.html#a50b1410238100c8a94c06b0aa63ee3b8":[6,0,0,77,25],
-"widgets_8php.html#a5ab3b64496e02cab56429978ad55f1c0":[6,0,0,77,12],
-"widgets_8php.html#a6dbc227aac750774284ee39c45f0a200":[6,0,0,77,27],
-"widgets_8php.html#a702e2fc0adc9b615999eca18b7311b5e":[6,0,0,77,21],
-"widgets_8php.html#a70442dfa079312d9d5e5ee01be51a165":[6,0,0,77,15],
-"widgets_8php.html#a7b1e357b5a2027718470b77ec921fc65":[6,0,0,77,2],
-"widgets_8php.html#a94203eb9bcd63cbdecbbcb15163598d8":[6,0,0,77,23],
-"widgets_8php.html#a95c06bc9be133e89768746302d2ac395":[6,0,0,77,10],
-"widgets_8php.html#a999ba893cac7600d3d3b4e7e14cf8c20":[6,0,0,77,20],
-"widgets_8php.html#a9d60539db68042e63c0015abd69a6f7a":[6,0,0,77,6],
-"widgets_8php.html#aa189a07241246d97efbee29f1c6a6f7f":[6,0,0,77,7],
-"widgets_8php.html#aaa73bcf1702eaadd9dcd253502f55e01":[6,0,0,77,24],
-"widgets_8php.html#abd2e508a2a0b911c4a838e3cb7599923":[6,0,0,77,22],
-"widgets_8php.html#abe03366fd22fd27d683518fa0765da50":[6,0,0,77,29],
-"widgets_8php.html#aced5cb177f630b30799c5eab873ee75c":[6,0,0,77,1],
-"widgets_8php.html#ad1bf7aa69e8d100d95faba17c7bc91cd":[6,0,0,77,14],
-"widgets_8php.html#add9b24d3304e529a7975e96122315554":[6,0,0,77,0],
-"widgets_8php.html#ade630b19fb4c622b7b2f6f8ef89eefa2":[6,0,0,77,13],
-"widgets_8php.html#ae4ced69d83dbdd9e6b51660d9eba8653":[6,0,0,77,28],
-"widgets_8php.html#af37fdad3b2e861d860a4a8c4d8a76c0b":[6,0,0,77,4],
-"widgets_8php.html#afa2e55a78f95667a6da082efac7fec74":[6,0,0,77,17],
-"xchan_8php.html":[6,0,1,131],
-"xchan_8php.html#a9853348bf1a35c644460221ba75edc2d":[6,0,1,131,0],
-"xrd_8php.html":[6,0,1,132],
-"xrd_8php.html#aee3cf087968e4a0ff3a87de16eb23270":[6,0,1,132,0],
-"xref_8php.html":[6,0,1,133],
-"xref_8php.html#a9bee399213b8de8226b0d60834307473":[6,0,1,133,0],
-"zfinger_8php.html":[6,0,1,134],
-"zfinger_8php.html#a8139b83a22ef98869adc10aa224027a0":[6,0,1,134,0],
-"zot_8php.html":[6,0,0,78],
-"zot_8php.html#a083aec6c900d244e1bfc1406f9461465":[6,0,0,78,13],
-"zot_8php.html#a20750dd2c36961013fd382fb34e1366c":[6,0,0,78,6],
-"zot_8php.html#a2657e141d62d5f67ad3c87651b585299":[6,0,0,78,7],
-"zot_8php.html#a31aad56acf8ff8f2353e6ff8595544df":[6,0,0,78,15],
-"zot_8php.html#a3862b3161b2c8557dc1a95020179bd81":[6,0,0,78,17],
-"zot_8php.html#a3bf11286c2619b4ca28e49d5b5ab374a":[6,0,0,78,5],
-"zot_8php.html#a4d9e6ca295e443b740d9960c304b3474":[6,0,0,78,10],
-"zot_8php.html#a528e97ca5d69c3b7f35c5d954afde315":[6,0,0,78,8],
-"zot_8php.html#a55056e863a7860bc0cf922e78fcce073":[6,0,0,78,21],
-"zot_8php.html#a5bcdfef419b16075a0eca990956223dc":[6,0,0,78,26],
-"zot_8php.html#a61cdc1ec843663c423ed2d8160ae5aea":[6,0,0,78,18],
-"zot_8php.html#a703f528ade8382cf374e4119bd6f7859":[6,0,0,78,0],
-"zot_8php.html#a7ac30ff51274bf0b6d3eade37972145c":[6,0,0,78,25],
-"zot_8php.html#a8e22dbc6f884be3644a892a876cbd972":[6,0,0,78,3],
-"zot_8php.html#a928f5643ca66ae9635d85aeb2be62e03":[6,0,0,78,24],
-"zot_8php.html#a95528377d7303131958c9f0b7158fdce":[6,0,0,78,19],
-"zot_8php.html#a9a57b40669351c9791126b925cb7ef3b":[6,0,0,78,12],
-"zot_8php.html#aa6ae96db8cbbdbb10e6876d206bbf7cc":[6,0,0,78,11],
-"zot_8php.html#aad25a3fe0e1566121d6fb8222979bc10":[6,0,0,78,14],
-"zot_8php.html#ab22d67660702056bf3f4696dcebf5ce7":[6,0,0,78,23],
-"zot_8php.html#ab319d1d9fff9c7775d9daef42d1f33dd":[6,0,0,78,16],
-"zot_8php.html#ab3e9b99ddb11353f37f265a05bb42142":[6,0,0,78,27],
-"zot_8php.html#ac301c67864917c35922257950ae0f95c":[6,0,0,78,9],
-"zot_8php.html#ac34e479d27f32b82dd6b33542f81a6a7":[6,0,0,78,1],
-"zot_8php.html#ad149f1e98c0c5b88ff9147e6ee3f330d":[6,0,0,78,4],
-"zot_8php.html#adfeb9400ae6b726beec89f8f1e8fde72":[6,0,0,78,2],
-"zot_8php.html#ae7cec2b417b5858fd4a41070f843d1d7":[6,0,0,78,20],
-"zot_8php.html#aeea071f17e306fe3d0c488551906bfab":[6,0,0,78,22],
-"zotfeed_8php.html":[6,0,1,135],
-"zotfeed_8php.html#a24dfc23d366e7f840cf2847d0c1c8eac":[6,0,1,135,0],
-"zping_8php.html":[6,0,1,136],
-"zping_8php.html#a4d3a6b0b8b04ed6469015823e615ee75":[6,0,1,136,0]
+"redbasic_2php_2style_8php.html#ab3afb90d611eca90819f597a2c0bb459":[6,0,3,1,3,0,1,1],
+"redbasic_2php_2theme_8php.html":[6,0,3,1,3,0,2],
+"redbasic_2php_2theme_8php.html#af6eb813e9fc7e2d76ac1b82bc5c0ed9b":[6,0,3,1,3,0,2,0],
+"redbasic_8php.html":[6,0,3,1,0,2,9],
+"reddav_8php.html":[6,0,0,71],
+"reddav_8php.html#a5df0d09893f2e65dc5cf6bbab6cfb266":[6,0,0,71,1],
+"reddav_8php.html#a9f531641dfb4e43cd88ac1a9ae7e2088":[6,0,0,71,2],
+"reddav_8php.html#ae92ea0df1993f6a7bcd1b6efa6c1fb66":[6,0,0,71,0],
+"refimport_8php.html":[6,0,0,1,1],
+"refimport_8php.html#a01a29630fa5e1ce6cd5e1fd75280747c":[6,0,0,1,1,2],
+"refimport_8php.html#a53434bc19e6264db89e18d92ddc09860":[6,0,0,1,1,1],
+"refimport_8php.html#a54003135d7c8994a76e831fb6faa2fe6":[6,0,0,1,1,6],
+"refimport_8php.html#a684a44d2401abf75f441591bcb41d10d":[6,0,0,1,1,12],
+"refimport_8php.html#a6c3e0475fde9fe72ff2492a5e3e5259c":[6,0,0,1,1,4],
+"refimport_8php.html#a8459983ebf013ed5737f7ed317bfae1f":[6,0,0,1,1,8],
+"refimport_8php.html#a9c1f681f1f303400a9818696a9f96d6f":[6,0,0,1,1,10],
+"refimport_8php.html#aa98de7d112e3a5b4b6956f108d04a41d":[6,0,0,1,1,3],
+"refimport_8php.html#ac43699d8ae86175e049aa4e87853caac":[6,0,0,1,1,7],
+"refimport_8php.html#ad297afe0730c9119dd94d3cf0521b025":[6,0,0,1,1,9],
+"refimport_8php.html#ad97ebb5feda0230a4834e0b3637a0d29":[6,0,0,1,1,0],
+"refimport_8php.html#ae9c56f779d1e0ac7bcb2a460129e7ae5":[6,0,0,1,1,5],
+"refimport_8php.html#aeec793cefa260f788b7d005adcb35796":[6,0,0,1,1,11],
+"register_8php.html":[6,0,1,96],
+"register_8php.html#a0e91f57f111407ea8d3223a05022bb2a":[6,0,1,96,0],
+"register_8php.html#a51731dcc1917c58a790eb1c0f6132271":[6,0,1,96,2],
+"register_8php.html#ae20c0cd40f738d6295de58b9202c83d5":[6,0,1,96,1],
+"regmod_8php.html":[6,0,1,97],
+"regmod_8php.html#a7953df4e32e63946565e90cdd5d50409":[6,0,1,97,0],
+"regver_8php.html":[6,0,1,98],
+"regver_8php.html#ad2c5f644fd1b099abd7c715b7df6f50f":[6,0,1,98,0],
+"removeaccount_8php.html":[6,0,1,99],
+"removeaccount_8php.html#a26a3325292e932c59793430ab737126a":[6,0,1,99,1],
+"removeaccount_8php.html#a516e7380b9e5796054aa8245f3509695":[6,0,1,99,0],
+"removeme_8php.html":[6,0,1,100],
+"removeme_8php.html#a065a589caa2aa84c60f7073a28f0ad9c":[6,0,1,100,0],
+"removeme_8php.html#a7be08738beca44bb98a79e01cdb2ee88":[6,0,1,100,1],
+"rmagic_8php.html":[6,0,1,101],
+"rmagic_8php.html#a3e28db1e5cfa7e5c2617f90222c1caef":[6,0,1,101,0],
+"rmagic_8php.html#a869de069d081b3c4e98b957d06bbf08f":[6,0,1,101,2],
+"rmagic_8php.html#a95455edd43f1bff39446a57388cdde16":[6,0,1,101,1],
+"rpost_8php.html":[6,0,1,102],
+"rpost_8php.html#a8190354d789000806d9879aea276728f":[6,0,1,102,0],
+"rsd__xml_8php.html":[6,0,1,103],
+"rsd__xml_8php.html#a740cd02fa15e5a53f8547fac73f0ab82":[6,0,1,103,0],
+"search_8php.html":[6,0,1,104],
+"search_8php.html#ab2568591359edde5b483a6cd9a24b2cc":[6,0,1,104,0],
+"search_8php.html#acf19fd30f07f495781ca0d7a0a08b435":[6,0,1,104,1],
+"search__ac_8php.html":[6,0,1,105],
+"search__ac_8php.html#a14f90c83a3f2be095e9e2992a8d66138":[6,0,1,105,0],
+"security_8php.html":[6,0,0,72],
+"security_8php.html#a20f8b9851f23ee8894b8925584ef6821":[6,0,0,72,2],
+"security_8php.html#a3ef2be6a7e4928e39d50059d6feb457c":[6,0,0,72,11],
+"security_8php.html#a444ac867dfa8c37cf0a7a226412bee28":[6,0,0,72,4],
+"security_8php.html#a6126c77a1267e046ac59cf864613f011":[6,0,0,72,10],
+"security_8php.html#a77ba0d1889a39cf32434c5ce96fe1433":[6,0,0,72,5],
+"security_8php.html#a8d23d2597aae380a3341872fe9513380":[6,0,0,72,1],
+"security_8php.html#a9355488460ab11d6058656ff919e5cf9":[6,0,0,72,7],
+"security_8php.html#a9c6180e82150a5a9af91a1255d096b5c":[6,0,0,72,3],
+"security_8php.html#ab3bdd30dc60d9ee72370b866aa4a2d01":[6,0,0,72,9],
+"security_8php.html#acd06ef411116115c2f0a92633700db8a":[6,0,0,72,6],
+"security_8php.html#adc7bf51e3b8d67bd80e9348f9ab03733":[6,0,0,72,0],
+"security_8php.html#afa683bc025a1d2fe9065e2f6cd71a22f":[6,0,0,72,8],
+"service__limits_8php.html":[6,0,1,106],
+"service__limits_8php.html#a653424aac63c5cd05ba70c3c77bf7f8a":[6,0,1,106,0],
+"session_8php.html":[6,0,0,73],
+"session_8php.html#a26fa1042356d555023cbf15ddd4f8507":[6,0,0,73,4],
+"session_8php.html#a4c0ead624f95483e386bc80abf570a8f":[6,0,0,73,0],
+"session_8php.html#a5e1c616e02b863d5450317d101366bb7":[6,0,0,73,1],
+"session_8php.html#a62e4a6cb26b4bb1b8ddd8277b26090eb":[6,0,0,73,8],
+"session_8php.html#a7f0f50576360d9ba52d29364e0b83a8e":[6,0,0,73,5],
+"session_8php.html#a96b09cc763572f45280786a7b33feb7e":[6,0,0,73,7],
+"session_8php.html#ac4461c1984543d3553e73dba2771568f":[6,0,0,73,6],
+"session_8php.html#ac95373f4966862a028033dd2f94d4da1":[6,0,0,73,3],
+"session_8php.html#af0100a2642a5268594bbd5742a03d885":[6,0,0,73,9],
+"session_8php.html#af230b86bfff7db66c3bdd7e0bbc24052":[6,0,0,73,2],
+"settings_8php.html":[6,0,1,107],
+"settings_8php.html#a39abc76ff5459c57e3b957664f273f18":[6,0,1,107,0],
+"settings_8php.html#a3a4cde287482fced008583f54ba2a722":[6,0,1,107,1],
+"settings_8php.html#aa7ee94d88ac088edb04ccf3a26de3586":[6,0,1,107,2],
+"setup_8php.html":[6,0,1,108],
+"setup_8php.html#a0c3f3b671381f6dccd924b8ecdfc56c4":[6,0,1,108,2],
+"setup_8php.html#a13cf286774149a0a7bd8adb8179cec75":[6,0,1,108,14],
+"setup_8php.html#a14d208682a88632290c895d20da6e7d6":[6,0,1,108,5],
+"setup_8php.html#a267555abd17290e659b4bf44b885e4e0":[6,0,1,108,13],
+"setup_8php.html#a2b375ddc555140236fc500135de99371":[6,0,1,108,10],
+"setup_8php.html#a5ad92c0857d1dadd6b60a9a557159c9f":[6,0,1,108,3],
+"setup_8php.html#a69a450e06dd3771fb51d3e4b0266a35e":[6,0,1,108,1],
+"setup_8php.html#a8652788e8589778c5f81634a9d5b9429":[6,0,1,108,8],
+"setup_8php.html#a88247384a96e14516f474d7af6a465c1":[6,0,1,108,12],
+"setup_8php.html#aa3bbb111780da70ba35cc23a306f2c76":[6,0,1,108,4],
+"setup_8php.html#ab4b71369a25021d59247c917e98d8246":[6,0,1,108,7],
+"setup_8php.html#abe405d227ba7232971964a706d4f3bce":[6,0,1,108,11],
+"setup_8php.html#ad2e0375a9ab87ebe6e78124ee125054a":[6,0,1,108,9],
+"setup_8php.html#addb24714bc2542aa4f4215e98fe48432":[6,0,1,108,16],
+"setup_8php.html#ae8e4d9279a61de74d5f39962cb7b6ca1":[6,0,1,108,0],
+"setup_8php.html#aea1ebdda58ec938f4e7b31aa5c5f6b58":[6,0,1,108,15],
+"setup_8php.html#afd8b0b3ade1507c45325caf377bf459d":[6,0,1,108,6],
+"share_8php.html":[6,0,1,109],
+"share_8php.html#afeb26046bdd02567ecd29ab5f188b249":[6,0,1,109,0],
+"simple__black__on__white_8php.html":[6,0,3,1,3,1,4],
+"simple__green__on__black_8php.html":[6,0,3,1,3,1,5],
+"simple__white__on__black_8php.html":[6,0,3,1,3,1,6],
+"siteinfo_8php.html":[6,0,1,110],
+"siteinfo_8php.html#a3efbd0bd6564af19ec0a9ce0294e59d0":[6,0,1,110,1],
+"siteinfo_8php.html#a70c09bfb6dd1c86a125a35f62ed53656":[6,0,1,110,0],
+"sitelist_8php.html":[6,0,1,111],
+"sitelist_8php.html#a665a59bf60f780b40f32c909f4a473b1":[6,0,1,111,0],
+"smarty_8php.html":[6,0,0,74],
+"smilies_8php.html":[6,0,1,112],
+"smilies_8php.html#ab43b1e9f33a700a830aff14c7b3a617f":[6,0,1,112,0],
+"socgraph_8php.html":[6,0,0,75],
+"socgraph_8php.html#a16ac51c505d72987ed8d6d6aed0e8586":[6,0,0,75,0],
+"socgraph_8php.html#a5ef8bef37161df53718a21e93d02fbd6":[6,0,0,75,6],
+"socgraph_8php.html#a76e6fca3d2bc842dcd9e710bb87c8329":[6,0,0,75,7],
+"socgraph_8php.html#a790690bb1a1d02483fe31632a160144d":[6,0,0,75,8],
+"socgraph_8php.html#a7d34cd58025bcd9e575282f44db75918":[6,0,0,75,1],
+"socgraph_8php.html#a887d576f21fd708132a06d0f72f90f84":[6,0,0,75,4],
+"socgraph_8php.html#ac343a846241d36cdf046b08f3396cfe9":[6,0,0,75,2],
+"socgraph_8php.html#af175807406d94407a5e11742a3287746":[6,0,0,75,5],
+"socgraph_8php.html#af29d056beec10b4e38e5209c92452894":[6,0,0,75,3],
+"sources_8php.html":[6,0,1,113],
+"sources_8php.html#ac442ccef080ab95772d8929fcafcb4b7":[6,0,1,113,0],
+"sources_8php.html#ac73298ff162ce7b2de8dcaf3d3305b1e":[6,0,1,113,1],
+"spam_8php.html":[6,0,0,76],
+"spam_8php.html#a05861201147b9a538d006f0269255cf9":[6,0,0,76,1],
+"spam_8php.html#ab8fd81a82c9622cbebb8ceab6b310ca6":[6,0,0,76,0],
+"sslify_8php.html":[6,0,1,114],
+"sslify_8php.html#a75b11e54a3d1fc83e7d4c0e8b4dab316":[6,0,1,114,0],
+"starred_8php.html":[6,0,1,115],
+"starred_8php.html#a63024fb418c678e49fd535e3752d349a":[6,0,1,115,0],
+"statistics__fns_8php.html":[6,0,0,77],
+"statistics__fns_8php.html#a05858927cce81fd367aedf85a94ed90c":[6,0,0,77,2],
+"statistics__fns_8php.html#a82726229a961d3bd3d543005c61dd8e6":[6,0,0,77,0],
+"statistics__fns_8php.html#a9dd516dda693f17f5ce48a94876f7efa":[6,0,0,77,3],
+"statistics__fns_8php.html#ad2b7b595c039c4c2eb0d6cd57a393dfe":[6,0,0,77,1],
+"stumble_2php_2style_8php.html":[6,0,3,1,4,0,0],
+"stumble_2php_2theme_8php.html":[6,0,3,1,4,0,1],
+"stumble_2php_2theme_8php.html#a71db9eff6289e0ee47771c37c01d6753":[6,0,3,1,4,0,1,0],
+"subthread_8php.html":[6,0,1,116],
+"subthread_8php.html#a50368f3d825b77996030528e7fbfa3d3":[6,0,1,116,0],
+"suckerberg_2php_2style_8php.html":[6,0,3,1,5,0,0],
+"suckerberg_2php_2theme_8php.html":[6,0,3,1,5,0,1],
+"suckerberg_2php_2theme_8php.html#a4104fce7d5fb71d15ed811978b628fc8":[6,0,3,1,5,0,1,0],
+"suggest_8php.html":[6,0,1,117],
+"suggest_8php.html#a58748a8235d4523f8333847f3e42dd91":[6,0,1,117,0],
+"suggest_8php.html#a696acf1dd8070e479adcc80c63c6718c":[6,0,1,117,1],
+"system__unavailable_8php.html":[6,0,0,78],
+"system__unavailable_8php.html#a73751a6bcc17ad3ca503496e2fb020fa":[6,0,0,78,0],
+"tagger_8php.html":[6,0,1,118],
+"tagger_8php.html#a0e4a3eb177d1684553c547503d67161c":[6,0,1,118,0],
+"tagrm_8php.html":[6,0,1,119],
+"tagrm_8php.html#a1702f40aa53a2fa93deade1f609abe78":[6,0,1,119,1],
+"tagrm_8php.html#adfd4ea5b4d7fc6d9c9e042af5cd7d49a":[6,0,1,119,0],
+"taxonomy_8php.html":[6,0,0,79],
+"taxonomy_8php.html#a03f55ee46c5f496e42f3d29db8d09cce":[6,0,0,79,10],
+"taxonomy_8php.html#a088371f4bc19155b2291508f5cd63332":[6,0,0,79,1],
+"taxonomy_8php.html#a08df5164926d2b31b8e9fcfe919de2b6":[6,0,0,79,3],
+"taxonomy_8php.html#a0fb8cf0ac7bcbc8b27d856fe9bf69cd1":[6,0,0,79,7],
+"taxonomy_8php.html#a163b5131f388080b0fc82398d3a32fe1":[6,0,0,79,5],
+"taxonomy_8php.html#a3299482ac20e9d79453048dd52881d37":[6,0,0,79,4],
+"taxonomy_8php.html#a4ba1339b2a7054971178ce194e4440fd":[6,0,0,79,11],
+"taxonomy_8php.html#a599ee71dd3194c8127b00dabec77abc1":[6,0,0,79,2],
+"taxonomy_8php.html#a7747fa859ac56fbffd4f9782d85505de":[6,0,0,79,8],
+"taxonomy_8php.html#a7a913d19c77610da689be48fbbf6734c":[6,0,0,79,15],
+"taxonomy_8php.html#a83f0a60f9e0c07d8451dc5be95b17287":[6,0,0,79,16],
+"taxonomy_8php.html#aa8f8a1ff85daef046298e93c83e7a1b4":[6,0,0,79,0],
+"taxonomy_8php.html#aaeded36bcc983b35d9205fe5b6c18c43":[6,0,0,79,14],
+"taxonomy_8php.html#aaf90ba8b839d6459065f39a4f1109b8a":[6,0,0,79,12],
+"taxonomy_8php.html#ac21d1dff16d569e7d110167aea4e63c2":[6,0,0,79,13],
+"taxonomy_8php.html#adfead45e3b8a3dfb2b4a4b9281d0dbe1":[6,0,0,79,6],
+"taxonomy_8php.html#af387463d42ffdf7d2ab3d5b22e40a0c7":[6,0,0,79,9],
+"template__processor_8php.html":[6,0,0,80],
+"template__processor_8php.html#a797745996c7839a93b2ab1af456631ab":[6,0,0,80,3],
+"template__processor_8php.html#ab2bcd8738f20f293636a6ae8e1099db5":[6,0,0,80,1],
+"template__processor_8php.html#ac635bb19a5f6eadd6b0cddefdd537c1e":[6,0,0,80,2],
+"text_8php.html":[6,0,0,81],
+"text_8php.html#a0271381208acfa2d4cff36da281e3e23":[6,0,0,81,44],
+"text_8php.html#a030fa5ecc64168af0c4f44897a9bce63":[6,0,0,81,51],
+"text_8php.html#a070384ec000fd65043fce11d5392d241":[6,0,0,81,6],
+"text_8php.html#a0a1f7c0e97f9ecbebf3e5834582b014c":[6,0,0,81,16],
+"text_8php.html#a0c65597bb4aed3a039eb795ff540e5e3":[6,0,0,81,11],
+"text_8php.html#a10dde167249ed5abf190a7a0986878ea":[6,0,0,81,76],
+"text_8php.html#a11255c8c4e5245b6c24f97684826aa54":[6,0,0,81,49],
+"text_8php.html#a13286f8a95d2de6b102966ecc270c8d6":[6,0,0,81,5],
+"text_8php.html#a1360fed7f918d859daaca1c9f384f9af":[6,0,0,81,87],
+"text_8php.html#a138a3a611fa7f4f3630674145fc826bf":[6,0,0,81,37],
+"text_8php.html#a1557112a774ec00fa06ed6b6f6495506":[6,0,0,81,40],
+"text_8php.html#a1633412120f52bdce5f43e0a127d9293":[6,0,0,81,55],
+"text_8php.html#a1af49756c8c71902a66c7e329c462beb":[6,0,0,81,58],
+"text_8php.html#a1e510c53624933ce9b7d6715784894db":[6,0,0,81,52],
+"text_8php.html#a24d441d30df4b8e6bf6780bf62a5e2c6":[6,0,0,81,53],
+"text_8php.html#a2690ad67bb6fb97ef69de3e8d23f2728":[6,0,0,81,47],
+"text_8php.html#a273156a6f5cddc6652ad656821cd5805":[6,0,0,81,77],
+"text_8php.html#a27cd2c1b3bcb49a0cfb7249e851725ca":[6,0,0,81,4],
+"text_8php.html#a29988052f3944111def3b6aaf2c7a8f6":[6,0,0,81,95],
+"text_8php.html#a29d6b804e368d3ef359ee295e96ed4c7":[6,0,0,81,84],
+"text_8php.html#a2a902f5fdba8646333e997898ac45ea3":[6,0,0,81,54],
+"text_8php.html#a2e8d6c402603be3a1256a16605e09c2a":[6,0,0,81,10],
+"text_8php.html#a2f2585385530cb935a6325c809d84a4d":[6,0,0,81,81],
+"text_8php.html#a2ffd79c60cc87cec24ef76447b905187":[6,0,0,81,97],
+"text_8php.html#a3054189cff173977f4216c9a3dd29e1b":[6,0,0,81,24],
+"text_8php.html#a324c58f37f6acdf9cd1922aa76077d9f":[6,0,0,81,92],
+"text_8php.html#a33bdb5d4bfff2ede7caf61a98ac0a2e9":[6,0,0,81,79],
+"text_8php.html#a3972701c5c83624ec4e2d06242f614e7":[6,0,0,81,34],
+"text_8php.html#a3999a0b3e22e440f280ee791ce34d384":[6,0,0,81,46],
+"text_8php.html#a3a0c432a484c17d7720b8ba2d6bfdd59":[6,0,0,81,26],
+"text_8php.html#a3ba47b4dd1248e7e51095572e7b814dc":[6,0,0,81,19],
+"text_8php.html#a3d225b253bb9e0f2498c11647d927b0b":[6,0,0,81,78],
+"text_8php.html#a3d2793d66db3345fd290b71e2eadf98e":[6,0,0,81,7],
+"text_8php.html#a405afe814a23f3bd94d826101aa168ab":[6,0,0,81,93],
+"text_8php.html#a436a8de00c942364c2d0fcfc7e1f4b5a":[6,0,0,81,38],
+"text_8php.html#a4446c7f8996a280f7e08b7bfe6c6c8bc":[6,0,0,81,50],
+"text_8php.html#a4659fbc4e54ddc700c3aa66b9092c623":[6,0,0,81,35],
+"text_8php.html#a47c1e4a5f3f53027daacd8a9db24f285":[6,0,0,81,48],
+"text_8php.html#a4841df5beabdd1bdd1ed56781a915d61":[6,0,0,81,67],
+"text_8php.html#a4bbb7d00c05cd20b4e043424f322388f":[6,0,0,81,56],
+"text_8php.html#a4e4d42b0a805148d9f9a92bcac89bf91":[6,0,0,81,25],
+"text_8php.html#a4e7698aca48982512594b274543c3b9b":[6,0,0,81,66],
+"text_8php.html#a543447c5ed766535221e2d9636b379ee":[6,0,0,81,89],
+"text_8php.html#a55ab893be57feda59c2a7ba1e58ff2d0":[6,0,0,81,9],
+"text_8php.html#a63fb21c0bed2fc72eef2c1471ac42b63":[6,0,0,81,14],
+"text_8php.html#a6a3d80a6c6fb234fd0bac44203b828eb":[6,0,0,81,88],
+"text_8php.html#a71f6952243d3fe1c5a8154f78027e29c":[6,0,0,81,45],
+"text_8php.html#a736db13a966b8abaf8c9198faa35911a":[6,0,0,81,31],
+"text_8php.html#a740ad03e00459039a2c0992246c4e727":[6,0,0,81,85],
+"text_8php.html#a75c243e06341ec16bd5a44b9b1cacd85":[6,0,0,81,1],
+"text_8php.html#a75c326298519ed14ebe762194c8a3f2a":[6,0,0,81,39],
+"text_8php.html#a76d1b3435c067978d7b484c45f56472b":[6,0,0,81,30],
+"text_8php.html#a8264348059abd1d4d5bb521323d3b19a":[6,0,0,81,86],
+"text_8php.html#a85e3a4851c16674834010d8419a5d7ca":[6,0,0,81,8],
+"text_8php.html#a876e94892867019935b348b573299352":[6,0,0,81,74],
+"text_8php.html#a8796f6a9ca592ecdce7b3afc3462aa13":[6,0,0,81,80],
+"text_8php.html#a87a3cefc603302c78982f1d8e1245265":[6,0,0,81,15],
+"text_8php.html#a89929fa6f70a8ba54d5273fcf622b665":[6,0,0,81,21],
+"text_8php.html#a8b0a799341b1fc4cba2c3ede3e3fc9b6":[6,0,0,81,65],
+"text_8php.html#a8d8c4a11e53461caca21181ebd72daca":[6,0,0,81,20],
+"text_8php.html#a905c3895feb6f276df23f07f16f9bb52":[6,0,0,81,90],
+"text_8php.html#a95fd2f8f23a1948414a03ebc963bac57":[6,0,0,81,3],
+"text_8php.html#a98fd99dee3da8cf4c148dc04efe782ee":[6,0,0,81,60],
+"text_8php.html#a9c6ce4e12a4ac883c5e3f36fed6e1e09":[6,0,0,81,71],
+"text_8php.html#a9d6a5ee1290de7a8b483fe78585daade":[6,0,0,81,69],
+"text_8php.html#a9fbeae13c9abd6e27cb4d8d1817f969c":[6,0,0,81,73],
+"text_8php.html#aa22feef4de326e1d7078dedd892e615c":[6,0,0,81,36],
+"text_8php.html#aa46f941155c2ac1155f2f17ffb0adb66":[6,0,0,81,33],
+"text_8php.html#aa5148a0dfea2a1ca64c3d52f10aa2d64":[6,0,0,81,17],
+"text_8php.html#aa5528f41533927e1bd2da3618a74a6d7":[6,0,0,81,61],
+"text_8php.html#aa6b0aa8afbeab50d1a3058ad21acb74e":[6,0,0,81,41],
+"text_8php.html#aac0969ae09853205992ba06ab9f9f61a":[6,0,0,81,32],
+"text_8php.html#aad557c054cf2ed915633701018fc7e3f":[6,0,0,81,96],
+"text_8php.html#aae91e4d2a2c6f7a9daccd2c186ae3447":[6,0,0,81,75]
};
diff --git a/doc/html/navtreeindex9.js b/doc/html/navtreeindex9.js
new file mode 100644
index 000000000..3ab2b8996
--- /dev/null
+++ b/doc/html/navtreeindex9.js
@@ -0,0 +1,184 @@
+var NAVTREEINDEX9 =
+{
+"text_8php.html#aaed4413ed8918838b517e3b2fafaea0d":[6,0,0,81,91],
+"text_8php.html#ab4a4c3d4700bc219bb84f33b499314f4":[6,0,0,81,94],
+"text_8php.html#ac19d2b33a58372a357a43d51eed19162":[6,0,0,81,62],
+"text_8php.html#ac1dbf2e37e8069bea2c0f557fdbf203e":[6,0,0,81,42],
+"text_8php.html#ac2ff88e800f74b22e9cc091c10809c54":[6,0,0,81,82],
+"text_8php.html#ace3c98538c63e09b70a363210b414112":[6,0,0,81,22],
+"text_8php.html#acedb584f65114a33f389efb796172a91":[6,0,0,81,2],
+"text_8php.html#ad6432621d0fafcbcf3d3b9b49bef7784":[6,0,0,81,13],
+"text_8php.html#ad855a32bee22c3f3b9734e3a334b96f2":[6,0,0,81,70],
+"text_8php.html#ad8c6e13d6accf057136c5f30a23a5f08":[6,0,0,81,27],
+"text_8php.html#adba17ec946f4285285dc100f7860bf51":[6,0,0,81,57],
+"text_8php.html#ae0333c304ec5b4b72e66bb2933fa7357":[6,0,0,81,28],
+"text_8php.html#ae17b39d5e321debd3ad16dcbbde842b8":[6,0,0,81,43],
+"text_8php.html#ae2126da85966da0e79c6bcbac63b0bda":[6,0,0,81,72],
+"text_8php.html#ae4282a39492caa23ccbc2ce98e54f110":[6,0,0,81,18],
+"text_8php.html#ae4df74296fbe55051ed3c035e55205e5":[6,0,0,81,63],
+"text_8php.html#af5eb4a9c1599764f80c5bc71e0125d4b":[6,0,0,81,29],
+"text_8php.html#af8a3e3a66a7b862d4510f145d2e13186":[6,0,0,81,0],
+"text_8php.html#af9c9ac3f74c82dc60acfa404d0e9dc53":[6,0,0,81,83],
+"text_8php.html#afc998d2796a6b2a08e96f7cc061e7221":[6,0,0,81,68],
+"text_8php.html#afdc69fe3f6c09e35e46304dcea63ae28":[6,0,0,81,23],
+"text_8php.html#afe18627c4983ee5f7c940a0992818cd5":[6,0,0,81,12],
+"text_8php.html#afe54312607d92f7ce9593f5760831f80":[6,0,0,81,64],
+"text_8php.html#afe9f178d264d44a94dc1292aaf0fd585":[6,0,0,81,59],
+"theme_2apw_2php_2theme__init_8php.html":[6,0,3,1,0,1,4],
+"theme_2apw_2php_2theme__init_8php.html#a54f32c086fe209c99769a4c4047dd864":[6,0,3,1,0,1,4,0],
+"theme_2mytheme_2php_2default_8php.html":[6,0,3,1,2,0,0],
+"theme_2mytheme_2php_2default_8php.html#a3987f5547ceb7e36a210a66a06241a5a":[6,0,3,1,2,0,0,0],
+"theme_2redbasic_2php_2theme__init_8php.html":[6,0,3,1,3,0,3],
+"thing_8php.html":[6,0,1,120],
+"thing_8php.html#a24a35f1e64029a67fdbea94a776ae04b":[6,0,1,120,0],
+"thing_8php.html#a8be23b1d475ec3d9291999221c674c80":[6,0,1,120,1],
+"todo.html":[3],
+"toggle__mobile_8php.html":[6,0,1,121],
+"toggle__mobile_8php.html#aca53ade8971802b45c31e722b22c6254":[6,0,1,121,0],
+"toggle__safesearch_8php.html":[6,0,1,122],
+"toggle__safesearch_8php.html#a23d5cfb2727a266e44993ffbf5595a79":[6,0,1,122,0],
+"tpldebug_8php.html":[6,0,2,7],
+"tpldebug_8php.html#a44778457a6c02554812fbfad19d32ba3":[6,0,2,7,0],
+"tpldebug_8php.html#a5358407d65f2ca826f96356a6642d149":[6,0,2,7,1],
+"tpldebug_8php.html#afbc7aadb3f7ff1edf0aaaa326a42179c":[6,0,2,7,2],
+"typo_8php.html":[6,0,2,8],
+"typo_8php.html#a1b709c1d79631ebc8320b41bda028b54":[6,0,2,8,1],
+"typo_8php.html#a329c9c12217d2c8660c47bbc7c8df4c5":[6,0,2,8,4],
+"typo_8php.html#a3ecd17ac846be1b35f3662f5c12ab6bd":[6,0,2,8,3],
+"typo_8php.html#a9590b15215a21e9b42eb546aeef79704":[6,0,2,8,2],
+"typo_8php.html#acebf83966ef6d7e5645a6b62ba368f9f":[6,0,2,8,0],
+"typohelper_8php.html":[6,0,2,9],
+"typohelper_8php.html#a7542d95618011800c61773127fa625cf":[6,0,2,9,0],
+"typohelper_8php.html#ab6fd357fb5b2a3ba8aab9e8b98c6a805":[6,0,2,9,1],
+"uexport_8php.html":[6,0,1,123],
+"uexport_8php.html#a118920137dedebe0581623a2e57e7b0d":[6,0,1,123,1],
+"uexport_8php.html#ae6f79d60916c01675c8cf663cb5fec84":[6,0,1,123,0],
+"update__channel_8php.html":[6,0,1,124],
+"update__channel_8php.html#aca52a9da500f0db2f0a8666af5bc06ba":[6,0,1,124,0],
+"update__display_8php.html":[6,0,1,125],
+"update__display_8php.html#aa36ac524059e209d5d75a03c16206246":[6,0,1,125,0],
+"update__home_8php.html":[6,0,1,126],
+"update__home_8php.html#a668340089acd150b830134476a647d05":[6,0,1,126,0],
+"update__network_8php.html":[6,0,1,127],
+"update__network_8php.html#a8abf5b9f65af6a27ee2f9d7207ed1b41":[6,0,1,127,0],
+"update__search_8php.html":[6,0,1,128],
+"update__search_8php.html#ace4c3a23fa7d6922399e27c297a6ba52":[6,0,1,128,0],
+"updatetpl_8py.html":[6,0,2,10],
+"updatetpl_8py.html#a52a85ffa6b6d63d840b185a133478c12":[6,0,2,10,5],
+"updatetpl_8py.html#a79c20eb62d568c999b56eb08530355d3":[6,0,2,10,2],
+"updatetpl_8py.html#a988d937ed5d5c2b592b763036af5cf94":[6,0,2,10,1],
+"updatetpl_8py.html#ab42dd79af65ee82201fd6f04715f62f6":[6,0,2,10,3],
+"updatetpl_8py.html#ac9d11279fed403a329a719298feafc4f":[6,0,2,10,0],
+"updatetpl_8py.html#ae694f5e1f25f8a92a945eb90c432dfe6":[6,0,2,10,4],
+"view_2theme_2apw_2php_2config_8php.html":[6,0,3,1,0,1,0],
+"view_2theme_2apw_2php_2config_8php.html#aa7d5739b72efef9822535b2b32d5364d":[6,0,3,1,0,1,0,1],
+"view_2theme_2apw_2php_2config_8php.html#ad29461920cf03b9ce1428e21eb1f4ba6":[6,0,3,1,0,1,0,2],
+"view_2theme_2apw_2php_2config_8php.html#ad59fc09da66b66267f9753c8b2dd68d0":[6,0,3,1,0,1,0,0],
+"view_2theme_2redbasic_2php_2config_8php.html":[6,0,3,1,3,0,0],
+"view_2theme_2redbasic_2php_2config_8php.html#a8574a41fa9735ee391ba57ab24b93793":[6,0,3,1,3,0,0,0],
+"view_2theme_2redbasic_2php_2config_8php.html#aa7d5739b72efef9822535b2b32d5364d":[6,0,3,1,3,0,0,1],
+"view_2theme_2redbasic_2php_2config_8php.html#ad29461920cf03b9ce1428e21eb1f4ba6":[6,0,3,1,3,0,0,2],
+"view_8php.html":[6,0,1,129],
+"view_8php.html#ac168f6c61a91ba2063f13b441c0ae96e":[6,0,1,129,0],
+"viewconnections_8php.html":[6,0,1,130],
+"viewconnections_8php.html#a00163d50b17568f7b0e48b1ca9ab7330":[6,0,1,130,1],
+"viewconnections_8php.html#ab6c4d983e97b3a8a879567ff76507776":[6,0,1,130,0],
+"viewsrc_8php.html":[6,0,1,131],
+"viewsrc_8php.html#a6eff3d0c1d7d14b335c4edb785cd60a4":[6,0,1,131,0],
+"vote_8php.html":[6,0,1,132],
+"vote_8php.html#a57a9516ee1b923b224e66dcc47377fb2":[6,0,1,132,2],
+"vote_8php.html#a6aa67489bf458ca5e3206e46dac68596":[6,0,1,132,0],
+"vote_8php.html#ae0c6610f40afbbc1f4fe6494c51fbab2":[6,0,1,132,1],
+"wall__attach_8php.html":[6,0,1,133],
+"wall__attach_8php.html#a7385e970e93228d082f0fd7254f6e653":[6,0,1,133,0],
+"wall__upload_8php.html":[6,0,1,134],
+"wall__upload_8php.html#a7cbe204244cf9e0380ee932263a74d8f":[6,0,1,134,0],
+"webfinger_8php.html":[6,0,1,135],
+"webfinger_8php.html#a17dd28db6d390194bf9ecb809739d1d3":[6,0,1,135,0],
+"webpages_8php.html":[6,0,1,136],
+"webpages_8php.html#af3b7397d4abc153e3d2147740ee1a41d":[6,0,1,136,0],
+"webpages_8php.html#af9ad0b65eba79acead3fa32b43d888b7":[6,0,1,136,1],
+"wfinger_8php.html":[6,0,1,137],
+"wfinger_8php.html#ae21e50c8d0a5f3c9be9f43a4e519acd3":[6,0,1,137,0],
+"widedarkness_8php.html":[6,0,3,1,0,2,10],
+"widgets_8php.html":[6,0,0,82],
+"widgets_8php.html#a08035db02ff6a23260146b4c64153422":[6,0,0,82,12],
+"widgets_8php.html#a0d404276fedc59f5038cf5c085028326":[6,0,0,82,29],
+"widgets_8php.html#a0e2f5179ed1a73b282dfda7270fcabb3":[6,0,0,82,3],
+"widgets_8php.html#a145ff35319cfa47a9cc07f9425bd674b":[6,0,0,82,9],
+"widgets_8php.html#a268b01ce1ab8fe2cb346cb769b9d1091":[6,0,0,82,10],
+"widgets_8php.html#a313a8d10ab81c71357c12e67e4d7efd5":[6,0,0,82,17],
+"widgets_8php.html#a3bdfb81bf9a8ddf219924fa7eaf22013":[6,0,0,82,19],
+"widgets_8php.html#a45ea061dabe9a8372e4ca3b9e5714256":[6,0,0,82,20],
+"widgets_8php.html#a47c72aac42058ea086c9ef8651c259da":[6,0,0,82,6],
+"widgets_8php.html#a50b1410238100c8a94c06b0aa63ee3b8":[6,0,0,82,28],
+"widgets_8php.html#a5ab3b64496e02cab56429978ad55f1c0":[6,0,0,82,13],
+"widgets_8php.html#a6dbc227aac750774284ee39c45f0a200":[6,0,0,82,30],
+"widgets_8php.html#a702e2fc0adc9b615999eca18b7311b5e":[6,0,0,82,22],
+"widgets_8php.html#a70442dfa079312d9d5e5ee01be51a165":[6,0,0,82,16],
+"widgets_8php.html#a7b1e357b5a2027718470b77ec921fc65":[6,0,0,82,2],
+"widgets_8php.html#a829c5a5c7448129266fc1df3ae1a3c2e":[6,0,0,82,25],
+"widgets_8php.html#a94203eb9bcd63cbdecbbcb15163598d8":[6,0,0,82,26],
+"widgets_8php.html#a95c06bc9be133e89768746302d2ac395":[6,0,0,82,11],
+"widgets_8php.html#a999ba893cac7600d3d3b4e7e14cf8c20":[6,0,0,82,21],
+"widgets_8php.html#a9d60539db68042e63c0015abd69a6f7a":[6,0,0,82,7],
+"widgets_8php.html#aa189a07241246d97efbee29f1c6a6f7f":[6,0,0,82,8],
+"widgets_8php.html#aaa73bcf1702eaadd9dcd253502f55e01":[6,0,0,82,27],
+"widgets_8php.html#abd2e508a2a0b911c4a838e3cb7599923":[6,0,0,82,24],
+"widgets_8php.html#abe03366fd22fd27d683518fa0765da50":[6,0,0,82,32],
+"widgets_8php.html#aced5cb177f630b30799c5eab873ee75c":[6,0,0,82,1],
+"widgets_8php.html#ad1bf7aa69e8d100d95faba17c7bc91cd":[6,0,0,82,15],
+"widgets_8php.html#add9b24d3304e529a7975e96122315554":[6,0,0,82,0],
+"widgets_8php.html#ade630b19fb4c622b7b2f6f8ef89eefa2":[6,0,0,82,14],
+"widgets_8php.html#ae4ced69d83dbdd9e6b51660d9eba8653":[6,0,0,82,31],
+"widgets_8php.html#af37fdad3b2e861d860a4a8c4d8a76c0b":[6,0,0,82,5],
+"widgets_8php.html#af8eb466ef91d9e96e13335ead5eba380":[6,0,0,82,23],
+"widgets_8php.html#af919de8e7e2ba8192a65fadc72a2c8b5":[6,0,0,82,4],
+"widgets_8php.html#afa2e55a78f95667a6da082efac7fec74":[6,0,0,82,18],
+"xchan_8php.html":[6,0,1,138],
+"xchan_8php.html#a9853348bf1a35c644460221ba75edc2d":[6,0,1,138,0],
+"xrd_8php.html":[6,0,1,139],
+"xrd_8php.html#aee3cf087968e4a0ff3a87de16eb23270":[6,0,1,139,0],
+"xref_8php.html":[6,0,1,140],
+"xref_8php.html#a9bee399213b8de8226b0d60834307473":[6,0,1,140,0],
+"zfinger_8php.html":[6,0,1,141],
+"zfinger_8php.html#a8139b83a22ef98869adc10aa224027a0":[6,0,1,141,0],
+"zot_8php.html":[6,0,0,83],
+"zot_8php.html#a083aec6c900d244e1bfc1406f9461465":[6,0,0,83,15],
+"zot_8php.html#a084c581d534e7e3b759488b46602288f":[6,0,0,83,20],
+"zot_8php.html#a0e3006e7a456b2175a9badc96bc5176d":[6,0,0,83,11],
+"zot_8php.html#a0fc2211c5309d9f925ecc4115e3fdb75":[6,0,0,83,9],
+"zot_8php.html#a20750dd2c36961013fd382fb34e1366c":[6,0,0,83,6],
+"zot_8php.html#a2657e141d62d5f67ad3c87651b585299":[6,0,0,83,7],
+"zot_8php.html#a31aad56acf8ff8f2353e6ff8595544df":[6,0,0,83,18],
+"zot_8php.html#a3920afe14fc1d82020161b4b86bcd9ac":[6,0,0,83,28],
+"zot_8php.html#a3bf11286c2619b4ca28e49d5b5ab374a":[6,0,0,83,5],
+"zot_8php.html#a528e97ca5d69c3b7f35c5d954afde315":[6,0,0,83,8],
+"zot_8php.html#a55056e863a7860bc0cf922e78fcce073":[6,0,0,83,25],
+"zot_8php.html#a5bcdfef419b16075a0eca990956223dc":[6,0,0,83,31],
+"zot_8php.html#a61cdc1ec843663c423ed2d8160ae5aea":[6,0,0,83,22],
+"zot_8php.html#a703f528ade8382cf374e4119bd6f7859":[6,0,0,83,0],
+"zot_8php.html#a7ac30ff51274bf0b6d3eade37972145c":[6,0,0,83,30],
+"zot_8php.html#a8e22dbc6f884be3644a892a876cbd972":[6,0,0,83,3],
+"zot_8php.html#a8eeefdb0dad4c436bea9d1c06c0a7988":[6,0,0,83,12],
+"zot_8php.html#a928f5643ca66ae9635d85aeb2be62e03":[6,0,0,83,29],
+"zot_8php.html#a95528377d7303131958c9f0b7158fdce":[6,0,0,83,23],
+"zot_8php.html#a9a57b40669351c9791126b925cb7ef3b":[6,0,0,83,14],
+"zot_8php.html#aa6ae96db8cbbdbb10e6876d206bbf7cc":[6,0,0,83,13],
+"zot_8php.html#aa97b33b619dd7132a9274f852af6ceb5":[6,0,0,83,1],
+"zot_8php.html#aad25a3fe0e1566121d6fb8222979bc10":[6,0,0,83,16],
+"zot_8php.html#ab15c04e7e5f44edf45ec50dd7d183254":[6,0,0,83,17],
+"zot_8php.html#ab22d67660702056bf3f4696dcebf5ce7":[6,0,0,83,27],
+"zot_8php.html#ab319d1d9fff9c7775d9daef42d1f33dd":[6,0,0,83,19],
+"zot_8php.html#ab3e9b99ddb11353f37f265a05bb42142":[6,0,0,83,32],
+"zot_8php.html#ac301c67864917c35922257950ae0f95c":[6,0,0,83,10],
+"zot_8php.html#ad149f1e98c0c5b88ff9147e6ee3f330d":[6,0,0,83,4],
+"zot_8php.html#adfeb9400ae6b726beec89f8f1e8fde72":[6,0,0,83,2],
+"zot_8php.html#ae26ce9f1ad74139193fb6319beac5fca":[6,0,0,83,21],
+"zot_8php.html#ae7cec2b417b5858fd4a41070f843d1d7":[6,0,0,83,24],
+"zot_8php.html#aeea071f17e306fe3d0c488551906bfab":[6,0,0,83,26],
+"zotfeed_8php.html":[6,0,1,142],
+"zotfeed_8php.html#a24dfc23d366e7f840cf2847d0c1c8eac":[6,0,1,142,0],
+"zping_8php.html":[6,0,1,143],
+"zping_8php.html#a4d3a6b0b8b04ed6469015823e615ee75":[6,0,1,143,0]
+};
diff --git a/doc/html/notifier_8php.html b/doc/html/notifier_8php.html
index 9cccb089c..0dba5aef4 100644
--- a/doc/html/notifier_8php.html
+++ b/doc/html/notifier_8php.html
@@ -139,6 +139,7 @@ Functions</h2></td></tr>
</tr>
</table>
</div><div class="memdoc">
+<p>Reduce the hubs to those that are unique. For zot hubs, we need to verify uniqueness by the sitekey, since it may have been a re-install which has not yet been detected and pruned. For other networks which don't have or require sitekeys, we'll have to use the URL</p>
</div>
</div>
diff --git a/doc/html/p_8php.html b/doc/html/p_8php.html
new file mode 100644
index 000000000..2246ccadd
--- /dev/null
+++ b/doc/html/p_8php.html
@@ -0,0 +1,137 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<meta name="generator" content="Doxygen 1.8.3.1"/>
+<title>The Red Matrix: mod/p.php File Reference</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="navtree.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="resize.js"></script>
+<script type="text/javascript" src="navtree.js"></script>
+<script type="text/javascript">
+ $(document).ready(initResizable);
+ $(window).load(resizeHeight);
+</script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/search.js"></script>
+<script type="text/javascript">
+ $(document).ready(function() { searchBox.OnSelectItem(0); });
+</script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+ <td id="projectlogo"><img alt="Logo" src="rm-64.png"/></td>
+ <td style="padding-left: 0.5em;">
+ <div id="projectname">The Red Matrix
+ </div>
+ </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.8.3.1 -->
+<script type="text/javascript">
+var searchBox = new SearchBox("searchBox", "search",false,'Search');
+</script>
+ <div id="navrow1" class="tabs">
+ <ul class="tablist">
+ <li><a href="index.html"><span>Main&#160;Page</span></a></li>
+ <li><a href="pages.html"><span>Related&#160;Pages</span></a></li>
+ <li><a href="namespaces.html"><span>Namespaces</span></a></li>
+ <li><a href="annotated.html"><span>Classes</span></a></li>
+ <li class="current"><a href="files.html"><span>Files</span></a></li>
+ <li>
+ <div id="MSearchBox" class="MSearchBoxInactive">
+ <span class="left">
+ <img id="MSearchSelect" src="search/mag_sel.png"
+ onmouseover="return searchBox.OnSearchSelectShow()"
+ onmouseout="return searchBox.OnSearchSelectHide()"
+ alt=""/>
+ <input type="text" id="MSearchField" value="Search" accesskey="S"
+ onfocus="searchBox.OnSearchFieldFocus(true)"
+ onblur="searchBox.OnSearchFieldFocus(false)"
+ onkeyup="searchBox.OnSearchFieldChange(event)"/>
+ </span><span class="right">
+ <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
+ </span>
+ </div>
+ </li>
+ </ul>
+ </div>
+ <div id="navrow2" class="tabs2">
+ <ul class="tablist">
+ <li><a href="files.html"><span>File&#160;List</span></a></li>
+ <li><a href="globals.html"><span>File&#160;Members</span></a></li>
+ </ul>
+ </div>
+</div><!-- top -->
+<div id="side-nav" class="ui-resizable side-nav-resizable">
+ <div id="nav-tree">
+ <div id="nav-tree-contents">
+ <div id="nav-sync" class="sync"></div>
+ </div>
+ </div>
+ <div id="splitbar" style="-moz-user-select:none;"
+ class="ui-resizable-handle">
+ </div>
+</div>
+<script type="text/javascript">
+$(document).ready(function(){initNavTree('p_8php.html','');});
+</script>
+<div id="doc-content">
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+ onmouseover="return searchBox.OnSearchSelectShow()"
+ onmouseout="return searchBox.OnSearchSelectHide()"
+ onkeydown="return searchBox.OnSearchSelectKey(event)">
+<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark">&#160;</span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark">&#160;</span>Classes</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark">&#160;</span>Namespaces</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark">&#160;</span>Files</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark">&#160;</span>Functions</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark">&#160;</span>Variables</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark">&#160;</span>Pages</a></div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<iframe src="javascript:void(0)" frameborder="0"
+ name="MSearchResults" id="MSearchResults">
+</iframe>
+</div>
+
+<div class="header">
+ <div class="summary">
+<a href="#func-members">Functions</a> </div>
+ <div class="headertitle">
+<div class="title">p.php File Reference</div> </div>
+</div><!--header-->
+<div class="contents">
+<table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="func-members"></a>
+Functions</h2></td></tr>
+<tr class="memitem:af9d5530ca0b3dc9409cf591c39e2480e"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="p_8php.html#af9d5530ca0b3dc9409cf591c39e2480e">p_init</a> (&amp;$a)</td></tr>
+<tr class="separator:af9d5530ca0b3dc9409cf591c39e2480e"><td class="memSeparator" colspan="2">&#160;</td></tr>
+</table>
+<h2 class="groupheader">Function Documentation</h2>
+<a class="anchor" id="af9d5530ca0b3dc9409cf591c39e2480e"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">p_init </td>
+ <td>(</td>
+ <td class="paramtype">&amp;&#160;</td>
+ <td class="paramname"><em>$a</em></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+</div>
+</div>
+</div><!-- contents -->
+</div><!-- doc-content -->
+
diff --git a/doc/html/p_8php.js b/doc/html/p_8php.js
new file mode 100644
index 000000000..5f4d00b0c
--- /dev/null
+++ b/doc/html/p_8php.js
@@ -0,0 +1,4 @@
+var p_8php =
+[
+ [ "p_init", "p_8php.html#af9d5530ca0b3dc9409cf591c39e2480e", null ]
+]; \ No newline at end of file
diff --git a/doc/html/permissions_8php.html b/doc/html/permissions_8php.html
index 26202ada9..28a402c70 100644
--- a/doc/html/permissions_8php.html
+++ b/doc/html/permissions_8php.html
@@ -113,15 +113,23 @@ $(document).ready(function(){initNavTree('permissions_8php.html','');});
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="func-members"></a>
Functions</h2></td></tr>
<tr class="memitem:a040fd3d3b8517658b1668ae0cd093972"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="permissions_8php.html#a040fd3d3b8517658b1668ae0cd093972">get_perms</a> ()</td></tr>
+<tr class="memdesc:a040fd3d3b8517658b1668ae0cd093972"><td class="mdescLeft">&#160;</td><td class="mdescRight">Return an array with all available permissions. <a href="#a040fd3d3b8517658b1668ae0cd093972">More...</a><br/></td></tr>
<tr class="separator:a040fd3d3b8517658b1668ae0cd093972"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aeca9b280f3dc3358c89976d81d690008"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="permissions_8php.html#aeca9b280f3dc3358c89976d81d690008">get_all_perms</a> ($uid, $observer_xchan, $internal_use=true)</td></tr>
<tr class="separator:aeca9b280f3dc3358c89976d81d690008"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a67ada9ed51e77885b6b0f6a28cee1835"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="permissions_8php.html#a67ada9ed51e77885b6b0f6a28cee1835">perm_is_allowed</a> ($uid, $observer_xchan, $permission)</td></tr>
+<tr class="memdesc:a67ada9ed51e77885b6b0f6a28cee1835"><td class="mdescLeft">&#160;</td><td class="mdescRight">Checks if given permission is allowed for given observer on a channel. <a href="#a67ada9ed51e77885b6b0f6a28cee1835">More...</a><br/></td></tr>
<tr class="separator:a67ada9ed51e77885b6b0f6a28cee1835"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a0f5bd9f7f4c8fb7ba4b2c1ed048b4dc7"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="permissions_8php.html#a0f5bd9f7f4c8fb7ba4b2c1ed048b4dc7">check_list_permissions</a> ($uid, $arr, $perm)</td></tr>
<tr class="separator:a0f5bd9f7f4c8fb7ba4b2c1ed048b4dc7"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aa8b7b102c653649d7a71b5a1c044d90d"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="permissions_8php.html#aa8b7b102c653649d7a71b5a1c044d90d">site_default_perms</a> ()</td></tr>
+<tr class="memdesc:aa8b7b102c653649d7a71b5a1c044d90d"><td class="mdescLeft">&#160;</td><td class="mdescRight">Sets site wide default permissions. <a href="#aa8b7b102c653649d7a71b5a1c044d90d">More...</a><br/></td></tr>
<tr class="separator:aa8b7b102c653649d7a71b5a1c044d90d"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a9b5f5120566a3699a98efc5ccb0c59fe"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="permissions_8php.html#a9b5f5120566a3699a98efc5ccb0c59fe">get_role_perms</a> ($role)</td></tr>
+<tr class="separator:a9b5f5120566a3699a98efc5ccb0c59fe"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a6b239a0d494b92a89ce7bf9c7e588991"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="permissions_8php.html#a6b239a0d494b92a89ce7bf9c7e588991">get_roles</a> ()</td></tr>
+<tr class="memdesc:a6b239a0d494b92a89ce7bf9c7e588991"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns a list or roles, grouped by type. <a href="#a6b239a0d494b92a89ce7bf9c7e588991">More...</a><br/></td></tr>
+<tr class="separator:a6b239a0d494b92a89ce7bf9c7e588991"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<h2 class="groupheader">Function Documentation</h2>
<a class="anchor" id="a0f5bd9f7f4c8fb7ba4b2c1ed048b4dc7"></a>
@@ -154,7 +162,7 @@ Functions</h2></td></tr>
</table>
</div><div class="memdoc">
-<p>Referenced by <a class="el" href="items_8php.html#a01e3cf44e082fa9bd06dcde5bf713d70">collect_recipients()</a>.</p>
+<p>Referenced by <a class="el" href="items_8php.html#a772f0ae77ad77c8ab68ed918a3870946">collect_recipients()</a>.</p>
</div>
</div>
@@ -190,14 +198,15 @@ Functions</h2></td></tr>
<p>get_all_perms($uid,$observer_xchan)</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
- <tr><td class="paramname">$uid</td><td>: The channel_id associated with the resource owner </td></tr>
- <tr><td class="paramname">$observer_xchan,:</td><td>The xchan_hash representing the observer</td></tr>
+ <tr><td class="paramtype">int</td><td class="paramname">$uid</td><td>The channel_id associated with the resource owner </td></tr>
+ <tr><td class="paramtype">string</td><td class="paramname">$observer_xchan</td><td>The xchan_hash representing the observer </td></tr>
+ <tr><td class="paramtype">bool</td><td class="paramname">$internal_use</td><td>(default true)</td></tr>
</table>
</dd>
</dl>
-<dl class="section return"><dt>Returns</dt><dd>: array of all permissions, key is permission name, value is true or false </dd></dl>
+<dl class="section return"><dt>Returns</dt><dd>array of all permissions, key is permission name, value is true or false </dd></dl>
-<p>Referenced by <a class="el" href="achievements_8php.html#a35ae04ada0e227d19671f289a32fb30e">achievements_content()</a>, <a class="el" href="blocks_8php.html#a2531a8fd51db3cecb2eb20c002c66e12">blocks_content()</a>, <a class="el" href="security_8php.html#a8d23d2597aae380a3341872fe9513380">change_channel()</a>, <a class="el" href="channel_8php.html#a9c6a6179e0e626398ebecc6151905ef1">channel_content()</a>, <a class="el" href="connedit_8php.html#a795acb3d9d841f55c255d7611681ab67">connedit_content()</a>, <a class="el" href="editlayout_8php.html#aa877e4157a26b099de904164181dd386">editlayout_content()</a>, <a class="el" href="editwebpage_8php.html#a375e945255fad79a71036528f7480650">editwebpage_content()</a>, <a class="el" href="filestorage_8php.html#a61bb1be78472555df4ce619f51014040">filestorage_content()</a>, <a class="el" href="layouts_8php.html#a6e0193759ad9eef76d3df2db24237b50">layouts_content()</a>, <a class="el" href="like_8php.html#a9d7dd268f21c21e9d29dd2aca2dd9538">like_content()</a>, <a class="el" href="page_8php.html#a91a5f649f68406149108bded1dc90b22">page_content()</a>, <a class="el" href="webpages_8php.html#af3b7397d4abc153e3d2147740ee1a41d">webpages_content()</a>, <a class="el" href="zfinger_8php.html#a8139b83a22ef98869adc10aa224027a0">zfinger_init()</a>, and <a class="el" href="zot_8php.html#a7ac30ff51274bf0b6d3eade37972145c">zot_refresh()</a>.</p>
+<p>Referenced by <a class="el" href="achievements_8php.html#a35ae04ada0e227d19671f289a32fb30e">achievements_content()</a>, <a class="el" href="blocks_8php.html#a2531a8fd51db3cecb2eb20c002c66e12">blocks_content()</a>, <a class="el" href="security_8php.html#a8d23d2597aae380a3341872fe9513380">change_channel()</a>, <a class="el" href="channel_8php.html#a9c6a6179e0e626398ebecc6151905ef1">channel_content()</a>, <a class="el" href="connedit_8php.html#a795acb3d9d841f55c255d7611681ab67">connedit_content()</a>, <a class="el" href="editlayout_8php.html#aa877e4157a26b099de904164181dd386">editlayout_content()</a>, <a class="el" href="editwebpage_8php.html#a375e945255fad79a71036528f7480650">editwebpage_content()</a>, <a class="el" href="filestorage_8php.html#a61bb1be78472555df4ce619f51014040">filestorage_content()</a>, <a class="el" href="layouts_8php.html#a6e0193759ad9eef76d3df2db24237b50">layouts_content()</a>, <a class="el" href="like_8php.html#a9d7dd268f21c21e9d29dd2aca2dd9538">like_content()</a>, <a class="el" href="page_8php.html#a4d89800c0366a239191b1692c09635cf">page_init()</a>, <a class="el" href="webpages_8php.html#af3b7397d4abc153e3d2147740ee1a41d">webpages_content()</a>, <a class="el" href="zfinger_8php.html#a8139b83a22ef98869adc10aa224027a0">zfinger_init()</a>, and <a class="el" href="zot_8php.html#a7ac30ff51274bf0b6d3eade37972145c">zot_refresh()</a>.</p>
</div>
</div>
@@ -214,7 +223,62 @@ Functions</h2></td></tr>
</table>
</div><div class="memdoc">
-<p>Referenced by <a class="el" href="connedit_8php.html#a795acb3d9d841f55c255d7611681ab67">connedit_content()</a>, <a class="el" href="identity_8php.html#a345f4c943d84de502ec6e72d2c813945">create_identity()</a>, <a class="el" href="permissions_8php.html#aeca9b280f3dc3358c89976d81d690008">get_all_perms()</a>, <a class="el" href="mail_8php.html#acfc2cc0bf4e0b178207758384977f25a">mail_post()</a>, <a class="el" href="include_2follow_8php.html#ae387d4ae097c23d69f3247e7f08140c7">new_contact()</a>, <a class="el" href="permissions_8php.html#a67ada9ed51e77885b6b0f6a28cee1835">perm_is_allowed()</a>, <a class="el" href="permissions_8php.html#aa8b7b102c653649d7a71b5a1c044d90d">site_default_perms()</a>, and <a class="el" href="zot_8php.html#a7ac30ff51274bf0b6d3eade37972145c">zot_refresh()</a>.</p>
+<p>Return an array with all available permissions. </p>
+<p>These are channel specific permissions. The list of available permissions can get manipulated by the <em>hook</em> <b>global_permissions</b>.</p>
+<dl class="section return"><dt>Returns</dt><dd>array associative array containing all permissions </dd></dl>
+
+<p>Referenced by <a class="el" href="connedit_8php.html#a795acb3d9d841f55c255d7611681ab67">connedit_content()</a>, <a class="el" href="identity_8php.html#a345f4c943d84de502ec6e72d2c813945">create_identity()</a>, <a class="el" href="permissions_8php.html#aeca9b280f3dc3358c89976d81d690008">get_all_perms()</a>, <a class="el" href="mail_8php.html#acfc2cc0bf4e0b178207758384977f25a">mail_post()</a>, <a class="el" href="include_2follow_8php.html#ae387d4ae097c23d69f3247e7f08140c7">new_contact()</a>, <a class="el" href="permissions_8php.html#a67ada9ed51e77885b6b0f6a28cee1835">perm_is_allowed()</a>, <a class="el" href="settings_8php.html#aa7ee94d88ac088edb04ccf3a26de3586">settings_post()</a>, <a class="el" href="permissions_8php.html#aa8b7b102c653649d7a71b5a1c044d90d">site_default_perms()</a>, and <a class="el" href="zot_8php.html#a7ac30ff51274bf0b6d3eade37972145c">zot_refresh()</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a9b5f5120566a3699a98efc5ccb0c59fe"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">get_role_perms </td>
+ <td>(</td>
+ <td class="paramtype">&#160;</td>
+ <td class="paramname"><em>$role</em></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+<p>get_role_perms($role) </p>
+<dl class="params"><dt>Parameters</dt><dd>
+ <table class="params">
+ <tr><td class="paramtype">string</td><td class="paramname">$role</td><td>Given a string for the channel role ('social','forum', etc) return an array of all permission fields pre-filled for this role. This includes the channel permission scope indicators (anything beginning with 'channel_') as well as perms_auto: true or false to create auto-permissions for this channel perms_follow: The permissions to apply when initiating a connection request to another channel perms_accept: The permissions to apply when accepting a connection request from another channel (not automatic) default_collection: true or false to make the default ACL include the channel's default collection directory_publish: true or false to publish this channel in the directory Any attributes may be extended (new roles defined) and modified (specific permissions altered) by plugins </td></tr>
+ </table>
+ </dd>
+</dl>
+
+<p>Referenced by <a class="el" href="connedit_8php.html#a795acb3d9d841f55c255d7611681ab67">connedit_content()</a>, <a class="el" href="identity_8php.html#a345f4c943d84de502ec6e72d2c813945">create_identity()</a>, <a class="el" href="diaspora_8php.html#ac1ab782a34552a7c6b4dc961754ed598">diaspora_request()</a>, <a class="el" href="dimport_8php.html#a581f040717941ce3e1868b0b5dceefd1">foofoo()</a>, <a class="el" href="include_2follow_8php.html#ae387d4ae097c23d69f3247e7f08140c7">new_contact()</a>, <a class="el" href="settings_8php.html#aa7ee94d88ac088edb04ccf3a26de3586">settings_post()</a>, and <a class="el" href="zot_8php.html#a7ac30ff51274bf0b6d3eade37972145c">zot_refresh()</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a6b239a0d494b92a89ce7bf9c7e588991"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">get_roles </td>
+ <td>(</td>
+ <td class="paramname"></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p>Returns a list or roles, grouped by type. </p>
+<dl class="params"><dt>Parameters</dt><dd>
+ <table class="params">
+ <tr><td class="paramtype">string</td><td class="paramname">$current</td><td>The current role </td></tr>
+ </table>
+ </dd>
+</dl>
+<dl class="section return"><dt>Returns</dt><dd>string Returns an array of roles, grouped by type </dd></dl>
+
+<p>Referenced by <a class="el" href="new__channel_8php.html#ae585191610f79da129492482ce8e2fee">new_channel_content()</a>.</p>
</div>
</div>
@@ -248,7 +312,19 @@ Functions</h2></td></tr>
</table>
</div><div class="memdoc">
-<p>Referenced by <a class="el" href="classConversation.html#a8335cdd43f1836e3c255638e61a09e16">Conversation\add_thread()</a>, <a class="el" href="identity_8php.html#aa870d2c1f558cfd52bef05bc124e8fa4">advanced_profile()</a>, <a class="el" href="include_2api_8php.html#a528d8070ee74ea800102936ce73cf366">api_statuses_home_timeline()</a>, <a class="el" href="include_2api_8php.html#ae0fa388479cace9c5a7a45b571ab42f8">api_statuses_repeat()</a>, <a class="el" href="include_2attach_8php.html#a0d07c5b83d3d54e186f752e571847b36">attach_by_hash()</a>, <a class="el" href="include_2attach_8php.html#ad991208ce939387e2f93a3bce7d09932">attach_by_hash_nodata()</a>, <a class="el" href="include_2attach_8php.html#a887d2d44a3ef18dcb6624e7fb58dc8e3">attach_count_files()</a>, <a class="el" href="include_2attach_8php.html#a3634af95f11a023dd8e882c3c7a3600d">attach_list_files()</a>, <a class="el" href="include_2attach_8php.html#ab6830b3ab74a5d284876141ac80f6cbc">attach_mkdir()</a>, <a class="el" href="include_2attach_8php.html#a84a8a64c4805e1525b42d4add464833f">attach_store()</a>, <a class="el" href="block_8php.html#a8a82a470acdfbc7a8e749509caeeea45">block_content()</a>, <a class="el" href="mod_2chat_8php.html#a8b0b8bee6fef6477e8c64c5e951b1b4f">chat_content()</a>, <a class="el" href="chatsvc_8php.html#a28d248b056fa47452e28ed01130e9116">chatsvc_init()</a>, <a class="el" href="permissions_8php.html#a0f5bd9f7f4c8fb7ba4b2c1ed048b4dc7">check_list_permissions()</a>, <a class="el" href="common_8php.html#ab63408f39abef7a6915186e8dabc5a96">common_content()</a>, <a class="el" href="contact__widgets_8php.html#a552f8544528cec0c995cea7287ea9d65">common_friends_visitor_widget()</a>, <a class="el" href="text_8php.html#ad6432621d0fafcbcf3d3b9b49bef7784">contact_block()</a>, <a class="el" href="classRedDirectory.html#a986936910f0216887a25e28916c166c7">RedDirectory\createDirectory()</a>, <a class="el" href="classRedDirectory.html#a2d12d99d38a6a75fc9a830b2f7fc0bf0">RedDirectory\createFile()</a>, <a class="el" href="classRedFile.html#aef71c9eaac7052be7dc8602eb12171e7">RedFile\delete()</a>, <a class="el" href="editblock_8php.html#abbe8f55de06967bc8d79d620509a49e6">editblock_content()</a>, <a class="el" href="items_8php.html#a04a35b610acfe54434df08adec39c0c7">get_feed_for()</a>, <a class="el" href="classRedDirectory.html#aaa20f0f44da23781917af8170c0a2569">RedDirectory\getChild()</a>, <a class="el" href="classRedDirectory.html#aa42d3065f6f065b17db87146a7cb031a">RedDirectory\getChildren()</a>, <a class="el" href="item_8php.html#a693cd09805755ab85bbb5ecae69a48c3">item_post()</a>, <a class="el" href="like_8php.html#a9d7dd268f21c21e9d29dd2aca2dd9538">like_content()</a>, <a class="el" href="dir__fns_8php.html#acd37b17dce3bdec6d5a6344a20598c1e">local_dir_update()</a>, <a class="el" href="photo_8php.html#a582779d24882b0d31ee909a91d70a448">photo_init()</a>, <a class="el" href="include_2photos_8php.html#a6c40ef58aefef705a5adc84a40e97109">photo_upload()</a>, <a class="el" href="include_2photos_8php.html#af24c6aeed28ecc31ec39e7d9a1804979">photos_album_widget()</a>, <a class="el" href="include_2photos_8php.html#aedccaf18282b26899d9549c29bd9d1b9">photos_albums_list()</a>, <a class="el" href="mod_2photos_8php.html#aa87382611a66ec5effdb2d78f13f5812">photos_content()</a>, <a class="el" href="include_2photos_8php.html#aa27b9e435dcc34e1009f56dc02c7ca51">photos_list_photos()</a>, <a class="el" href="mod_2photos_8php.html#a062bed4d04d14fee8a53f4c9be673080">photos_post()</a>, <a class="el" href="poco_8php.html#a53def16f75e3d41f1d2bb7cfa4905498">poco_init()</a>, <a class="el" href="items_8php.html#a410f9c743877c125ca06312373346903">post_activity_item()</a>, <a class="el" href="post_8php.html#af59e6a1dc22d19d9257b01cd7ccedb75">post_post()</a>, <a class="el" href="zot_8php.html#a4d9e6ca295e443b740d9960c304b3474">process_delivery()</a>, <a class="el" href="zot_8php.html#aa6ae96db8cbbdbb10e6876d206bbf7cc">process_mail_delivery()</a>, <a class="el" href="profile_8php.html#a3775cf6eef6587e5143133356a7b76c0">profile_content()</a>, <a class="el" href="identity_8php.html#a4751b522ea913d0e7ed43e03d22e9e68">profile_load()</a>, <a class="el" href="identity_8php.html#a432259b2cf5b6f59be53e71db9f2c7dc">profile_sidebar()</a>, <a class="el" href="reddav_8php.html#ae92ea0df1993f6a7bcd1b6efa6c1fb66">RedChannelList()</a>, <a class="el" href="classConversation.html#a66f121ca4026246f86a732e5faa0682c">Conversation\set_mode()</a>, <a class="el" href="classRedBrowser.html#a40fdbb9d9fe6c1243bbf135dd5b0a06f">RedBrowser\set_writeable()</a>, <a class="el" href="classRedDirectory.html#adc48035679e52c55d9881f83de535553">RedDirectory\setName()</a>, <a class="el" href="classRedFile.html#a38a82bfc1b30028ea6ac75923e90fa25">RedFile\setName()</a>, <a class="el" href="subthread_8php.html#a50368f3d825b77996030528e7fbfa3d3">subthread_content()</a>, <a class="el" href="items_8php.html#ab1bce4261bcf75ad62753b498a144d17">tag_deliver()</a>, <a class="el" href="items_8php.html#a88c6cf7649ac836fbbed82a7a0315110">tgroup_check()</a>, <a class="el" href="datetime_8php.html#af1cd77c97c901d9239cb7a61f97f9826">update_birthdays()</a>, <a class="el" href="viewconnections_8php.html#ab6c4d983e97b3a8a879567ff76507776">viewconnections_content()</a>, <a class="el" href="widgets_8php.html#a7b1e357b5a2027718470b77ec921fc65">widget_archive()</a>, <a class="el" href="widgets_8php.html#af37fdad3b2e861d860a4a8c4d8a76c0b">widget_categories()</a>, <a class="el" href="widgets_8php.html#a313a8d10ab81c71357c12e67e4d7efd5">widget_item()</a>, <a class="el" href="widgets_8php.html#a702e2fc0adc9b615999eca18b7311b5e">widget_photo_albums()</a>, <a class="el" href="widgets_8php.html#ae4ced69d83dbdd9e6b51660d9eba8653">widget_tagcloud_wall()</a>, <a class="el" href="include_2attach_8php.html#aeb07968990e66a88c95483ca09a7f909">z_readdir()</a>, and <a class="el" href="items_8php.html#a004e89d86b0f29b2c4da20108ecc4091">zot_feed()</a>.</p>
+<p>Checks if given permission is allowed for given observer on a channel. </p>
+<p>Checks if the given observer with the hash $observer_xchan has permission $permission on channel_id $uid. $permission is one defined in <a class="el" href="permissions_8php.html#a040fd3d3b8517658b1668ae0cd093972" title="Return an array with all available permissions.">get_perms()</a>;</p>
+<dl class="params"><dt>Parameters</dt><dd>
+ <table class="params">
+ <tr><td class="paramtype">int</td><td class="paramname">$uid</td><td>The channel_id associated with the resource owner </td></tr>
+ <tr><td class="paramtype">string</td><td class="paramname">$observer_xchan</td><td>The xchan_hash representing the observer </td></tr>
+ <tr><td class="paramtype">string</td><td class="paramname">$permission</td><td></td></tr>
+ </table>
+ </dd>
+</dl>
+<dl class="section return"><dt>Returns</dt><dd>bool true if permission is allowed for observer on channel </dd></dl>
+
+<p>Referenced by <a class="el" href="classConversation.html#a8335cdd43f1836e3c255638e61a09e16">Conversation\add_thread()</a>, <a class="el" href="identity_8php.html#aa870d2c1f558cfd52bef05bc124e8fa4">advanced_profile()</a>, <a class="el" href="include_2api_8php.html#a528d8070ee74ea800102936ce73cf366">api_statuses_home_timeline()</a>, <a class="el" href="include_2api_8php.html#ae0fa388479cace9c5a7a45b571ab42f8">api_statuses_repeat()</a>, <a class="el" href="include_2attach_8php.html#a0d07c5b83d3d54e186f752e571847b36">attach_by_hash()</a>, <a class="el" href="include_2attach_8php.html#ad991208ce939387e2f93a3bce7d09932">attach_by_hash_nodata()</a>, <a class="el" href="include_2attach_8php.html#a887d2d44a3ef18dcb6624e7fb58dc8e3">attach_count_files()</a>, <a class="el" href="include_2attach_8php.html#a3634af95f11a023dd8e882c3c7a3600d">attach_list_files()</a>, <a class="el" href="include_2attach_8php.html#ab6830b3ab74a5d284876141ac80f6cbc">attach_mkdir()</a>, <a class="el" href="include_2attach_8php.html#a84a8a64c4805e1525b42d4add464833f">attach_store()</a>, <a class="el" href="block_8php.html#a8a82a470acdfbc7a8e749509caeeea45">block_content()</a>, <a class="el" href="mod_2chat_8php.html#a8b0b8bee6fef6477e8c64c5e951b1b4f">chat_content()</a>, <a class="el" href="chatsvc_8php.html#a28d248b056fa47452e28ed01130e9116">chatsvc_init()</a>, <a class="el" href="permissions_8php.html#a0f5bd9f7f4c8fb7ba4b2c1ed048b4dc7">check_list_permissions()</a>, <a class="el" href="common_8php.html#ab63408f39abef7a6915186e8dabc5a96">common_content()</a>, <a class="el" href="contact__widgets_8php.html#a552f8544528cec0c995cea7287ea9d65">common_friends_visitor_widget()</a>, <a class="el" href="text_8php.html#ad6432621d0fafcbcf3d3b9b49bef7784">contact_block()</a>, <a class="el" href="classRedMatrix_1_1RedDAV_1_1RedDirectory.html#aca0e8d574ea66a0e210f571700663c62">RedMatrix\RedDAV\RedDirectory\createDirectory()</a>, <a class="el" href="classRedMatrix_1_1RedDAV_1_1RedDirectory.html#a58e750256cdc2f0f79fbe8d5463ffefe">RedMatrix\RedDAV\RedDirectory\createFile()</a>, <a class="el" href="classRedMatrix_1_1RedDAV_1_1RedFile.html#ab7ab7ba81fab28eb02382cfdfd80ecfe">RedMatrix\RedDAV\RedFile\delete()</a>, <a class="el" href="diaspora_8php.html#a006731620a5242d410358b32678e48e3">diaspora_asphoto()</a>, <a class="el" href="diaspora_8php.html#a0fb2abe304aae19efc040a5e6b917829">diaspora_comment()</a>, <a class="el" href="diaspora_8php.html#adef30b6fac948baedcc7194d5d155b5f">diaspora_conversation()</a>, <a class="el" href="diaspora_8php.html#a5d57518545baa31cf8a85a937a267681">diaspora_like()</a>, <a class="el" href="diaspora_8php.html#a71fe9bb66626b4197ae018a230778bb2">diaspora_photo()</a>, <a class="el" href="diaspora_8php.html#a20b968d64ef26afe5cb0cc75a7570a31">diaspora_post()</a>, <a class="el" href="diaspora_8php.html#a2bf43f6b5890897f425ef4325d34b007">diaspora_reshare()</a>, <a class="el" href="display_8php.html#a37137c98d47bf3306f4c2bb9f5b60de0">display_content()</a>, <a class="el" href="editblock_8php.html#abbe8f55de06967bc8d79d620509a49e6">editblock_content()</a>, <a class="el" href="editlayout_8php.html#aa877e4157a26b099de904164181dd386">editlayout_content()</a>, <a class="el" href="editwebpage_8php.html#a375e945255fad79a71036528f7480650">editwebpage_content()</a>, <a class="el" href="items_8php.html#a04a35b610acfe54434df08adec39c0c7">get_feed_for()</a>, <a class="el" href="classRedMatrix_1_1RedDAV_1_1RedDirectory.html#a1a37850bdd1f188abd6160559698d5d7">RedMatrix\RedDAV\RedDirectory\getChild()</a>, <a class="el" href="classRedMatrix_1_1RedDAV_1_1RedDirectory.html#a9b9a0b5bfa4de1f78e6cafaa534b6f6a">RedMatrix\RedDAV\RedDirectory\getChildren()</a>, <a class="el" href="item_8php.html#a693cd09805755ab85bbb5ecae69a48c3">item_post()</a>, <a class="el" href="like_8php.html#a9d7dd268f21c21e9d29dd2aca2dd9538">like_content()</a>, <a class="el" href="dir__fns_8php.html#acd37b17dce3bdec6d5a6344a20598c1e">local_dir_update()</a>, <a class="el" href="p_8php.html#af9d5530ca0b3dc9409cf591c39e2480e">p_init()</a>, <a class="el" href="photo_8php.html#a582779d24882b0d31ee909a91d70a448">photo_init()</a>, <a class="el" href="include_2photos_8php.html#a6c40ef58aefef705a5adc84a40e97109">photo_upload()</a>, <a class="el" href="include_2photos_8php.html#af24c6aeed28ecc31ec39e7d9a1804979">photos_album_widget()</a>, <a class="el" href="include_2photos_8php.html#aedccaf18282b26899d9549c29bd9d1b9">photos_albums_list()</a>, <a class="el" href="mod_2photos_8php.html#aa87382611a66ec5effdb2d78f13f5812">photos_content()</a>, <a class="el" href="include_2photos_8php.html#aa27b9e435dcc34e1009f56dc02c7ca51">photos_list_photos()</a>, <a class="el" href="mod_2photos_8php.html#a062bed4d04d14fee8a53f4c9be673080">photos_post()</a>, <a class="el" href="poco_8php.html#a53def16f75e3d41f1d2bb7cfa4905498">poco_init()</a>, <a class="el" href="items_8php.html#a410f9c743877c125ca06312373346903">post_activity_item()</a>, <a class="el" href="post_8php.html#af59e6a1dc22d19d9257b01cd7ccedb75">post_post()</a>, <a class="el" href="zot_8php.html#a0e3006e7a456b2175a9badc96bc5176d">process_delivery()</a>, <a class="el" href="zot_8php.html#aa6ae96db8cbbdbb10e6876d206bbf7cc">process_mail_delivery()</a>, <a class="el" href="profile_8php.html#a3775cf6eef6587e5143133356a7b76c0">profile_content()</a>, <a class="el" href="identity_8php.html#a4751b522ea913d0e7ed43e03d22e9e68">profile_load()</a>, <a class="el" href="identity_8php.html#a432259b2cf5b6f59be53e71db9f2c7dc">profile_sidebar()</a>, <a class="el" href="reddav_8php.html#ae92ea0df1993f6a7bcd1b6efa6c1fb66">RedChannelList()</a>, <a class="el" href="search_8php.html#ab2568591359edde5b483a6cd9a24b2cc">search_content()</a>, <a class="el" href="classConversation.html#a66f121ca4026246f86a732e5faa0682c">Conversation\set_mode()</a>, <a class="el" href="classRedMatrix_1_1RedDAV_1_1RedBrowser.html#aa1607857cb59738c4dce2fe8e73d8f19">RedMatrix\RedDAV\RedBrowser\set_writeable()</a>, <a class="el" href="classRedMatrix_1_1RedDAV_1_1RedFile.html#a0350cb4e0327e1f9922869a48ee04f1d">RedMatrix\RedDAV\RedFile\setName()</a>, <a class="el" href="classRedMatrix_1_1RedDAV_1_1RedDirectory.html#a14ac61d31a031d139956763db4e03956">RedMatrix\RedDAV\RedDirectory\setName()</a>, <a class="el" href="subthread_8php.html#a50368f3d825b77996030528e7fbfa3d3">subthread_content()</a>, <a class="el" href="items_8php.html#ab1bce4261bcf75ad62753b498a144d17">tag_deliver()</a>, <a class="el" href="items_8php.html#a88c6cf7649ac836fbbed82a7a0315110">tgroup_check()</a>, <a class="el" href="datetime_8php.html#af1cd77c97c901d9239cb7a61f97f9826">update_birthdays()</a>, <a class="el" href="viewconnections_8php.html#ab6c4d983e97b3a8a879567ff76507776">viewconnections_content()</a>, <a class="el" href="widgets_8php.html#a7b1e357b5a2027718470b77ec921fc65">widget_archive()</a>, <a class="el" href="widgets_8php.html#af919de8e7e2ba8192a65fadc72a2c8b5">widget_catcloud_wall()</a>, <a class="el" href="widgets_8php.html#af37fdad3b2e861d860a4a8c4d8a76c0b">widget_categories()</a>, <a class="el" href="widgets_8php.html#a313a8d10ab81c71357c12e67e4d7efd5">widget_item()</a>, <a class="el" href="widgets_8php.html#a702e2fc0adc9b615999eca18b7311b5e">widget_photo_albums()</a>, <a class="el" href="widgets_8php.html#ae4ced69d83dbdd9e6b51660d9eba8653">widget_tagcloud_wall()</a>, <a class="el" href="include_2attach_8php.html#aeb07968990e66a88c95483ca09a7f909">z_readdir()</a>, and <a class="el" href="items_8php.html#a1cf89557f32d5dfbe8bd90448dc1aa92">zot_feed()</a>.</p>
</div>
</div>
@@ -265,6 +341,9 @@ Functions</h2></td></tr>
</table>
</div><div class="memdoc">
+<p>Sets site wide default permissions. </p>
+<dl class="section return"><dt>Returns</dt><dd>array </dd></dl>
+
<p>Referenced by <a class="el" href="identity_8php.html#a345f4c943d84de502ec6e72d2c813945">create_identity()</a>.</p>
</div>
diff --git a/doc/html/permissions_8php.js b/doc/html/permissions_8php.js
index 49747cfd8..824057ac6 100644
--- a/doc/html/permissions_8php.js
+++ b/doc/html/permissions_8php.js
@@ -3,6 +3,8 @@ var permissions_8php =
[ "check_list_permissions", "permissions_8php.html#a0f5bd9f7f4c8fb7ba4b2c1ed048b4dc7", null ],
[ "get_all_perms", "permissions_8php.html#aeca9b280f3dc3358c89976d81d690008", null ],
[ "get_perms", "permissions_8php.html#a040fd3d3b8517658b1668ae0cd093972", null ],
+ [ "get_role_perms", "permissions_8php.html#a9b5f5120566a3699a98efc5ccb0c59fe", null ],
+ [ "get_roles", "permissions_8php.html#a6b239a0d494b92a89ce7bf9c7e588991", null ],
[ "perm_is_allowed", "permissions_8php.html#a67ada9ed51e77885b6b0f6a28cee1835", null ],
[ "site_default_perms", "permissions_8php.html#aa8b7b102c653649d7a71b5a1c044d90d", null ]
]; \ No newline at end of file
diff --git a/doc/html/photo__driver_8php.html b/doc/html/photo__driver_8php.html
index a258f9796..204df52dd 100644
--- a/doc/html/photo__driver_8php.html
+++ b/doc/html/photo__driver_8php.html
@@ -154,11 +154,11 @@ Functions</h2></td></tr>
<p>Guess image mimetype from filename or from Content-Type header</p>
<ul>
<li>$filename string Image filename </li>
-<li>$fromcurl boolean Check Content-Type header from curl request </li>
+<li>$headers string Headers to check for Content-Type (from curl request) </li>
</ul>
<p>Well, this not much better, but at least it comes from the data inside the image, we won't be tricked by a manipulated extension</p>
-<p>Referenced by <a class="el" href="photo__driver_8php.html#a78f5a10c568d2a9bbbb129dc96548887">import_profile_photo()</a>, <a class="el" href="include_2photos_8php.html#a6c40ef58aefef705a5adc84a40e97109">photo_upload()</a>, <a class="el" href="profile__photo_8php.html#a4b80234074bd603221aa5364f330e479">profile_photo_post()</a>, and <a class="el" href="include_2network_8php.html#ae8d9c41a11000fb8667039fc71b4f73f">scale_external_images()</a>.</p>
+<p>Referenced by <a class="el" href="photo__driver_8php.html#a78f5a10c568d2a9bbbb129dc96548887">import_profile_photo()</a>, <a class="el" href="openid_8php.html#a9a13827dbcf61ae4e45f0b6b33a88f43">openid_content()</a>, <a class="el" href="include_2photos_8php.html#a6c40ef58aefef705a5adc84a40e97109">photo_upload()</a>, <a class="el" href="profile__photo_8php.html#a4b80234074bd603221aa5364f330e479">profile_photo_post()</a>, and <a class="el" href="include_2network_8php.html#ae8d9c41a11000fb8667039fc71b4f73f">scale_external_images()</a>.</p>
</div>
</div>
@@ -232,7 +232,7 @@ Functions</h2></td></tr>
</table>
</div><div class="memdoc">
-<p>Referenced by <a class="el" href="include_2apps_8php.html#a15626f24069c18816f7cdaf4735f58f9">app_store()</a>, <a class="el" href="include_2apps_8php.html#aeab6a62d2f3dfaa86ed043a006305f46">app_update()</a>, <a class="el" href="items_8php.html#a6bee35961f2e32905f20367a9309d627">import_author_rss()</a>, <a class="el" href="import_8php.html#af17fef0410518f7eac205d0ea416eaa2">import_post()</a>, <a class="el" href="zot_8php.html#a528e97ca5d69c3b7f35c5d954afde315">import_xchan()</a>, <a class="el" href="openid_8php.html#a9a13827dbcf61ae4e45f0b6b33a88f43">openid_content()</a>, <a class="el" href="poller_8php.html#a5f12df3a4738124b6c039971e87e76da">poller_run()</a>, and <a class="el" href="thing_8php.html#a8be23b1d475ec3d9291999221c674c80">thing_init()</a>.</p>
+<p>Referenced by <a class="el" href="include_2apps_8php.html#a15626f24069c18816f7cdaf4735f58f9">app_store()</a>, <a class="el" href="include_2apps_8php.html#aeab6a62d2f3dfaa86ed043a006305f46">app_update()</a>, <a class="el" href="diaspora_8php.html#a900abf51398b2ef26cd2cd31c52f1b0f">diaspora_profile()</a>, <a class="el" href="include_2network_8php.html#a5176176ddc1906d91f186df6fbd87b48">discover_by_url()</a>, <a class="el" href="include_2network_8php.html#a63e62946e194928eb17c5a9f2bbef0fe">discover_by_webbie()</a>, <a class="el" href="items_8php.html#a6bee35961f2e32905f20367a9309d627">import_author_rss()</a>, <a class="el" href="items_8php.html#a37f79991f36811cf847446ff60e8e11f">import_author_unknown()</a>, <a class="el" href="import_8php.html#af17fef0410518f7eac205d0ea416eaa2">import_post()</a>, <a class="el" href="zot_8php.html#a528e97ca5d69c3b7f35c5d954afde315">import_xchan()</a>, <a class="el" href="openid_8php.html#a9a13827dbcf61ae4e45f0b6b33a88f43">openid_content()</a>, <a class="el" href="poller_8php.html#a5f12df3a4738124b6c039971e87e76da">poller_run()</a>, <a class="el" href="thing_8php.html#a8be23b1d475ec3d9291999221c674c80">thing_init()</a>, and <a class="el" href="hubloc_8php.html#acb708dd197aae72a4858cf5ff4e3195b">xchan_store()</a>.</p>
</div>
</div>
diff --git a/doc/html/php2po_8php.html b/doc/html/php2po_8php.html
index a56c1c331..861554886 100644
--- a/doc/html/php2po_8php.html
+++ b/doc/html/php2po_8php.html
@@ -168,7 +168,7 @@ Variables</h2></td></tr>
</table>
</div><div class="memdoc">
-<p>Referenced by <a class="el" href="classApp.html#af6d39f63fb7116bbeb04e51696f99474">App\__construct()</a>, <a class="el" href="classTemplate.html#aae9c4d761ea1298e745e8052d7910194">Template\_get_var()</a>, <a class="el" href="classTemplate.html#abf71098c80fd1f218a59452b3408309e">Template\_replcb_for()</a>, <a class="el" href="items_8php.html#a36e656667193c83aa2cc03a024fc131b">activity_sanitise()</a>, <a class="el" href="crypto_8php.html#a2148d7aac7b30c720f7ebda7e9790286">aes_encapsulate()</a>, <a class="el" href="crypto_8php.html#aca7c3a574bfb6c6ef1f2403a56823914">aes_unencapsulate()</a>, <a class="el" href="include_2apps_8php.html#a1b2e737f477a2e0d9d11ef14adc5aa66">app_render()</a>, <a class="el" href="bbcode_8php.html#a3a989cbf308a32468d171d83e9c51d1e">bb_sanitize_style()</a>, <a class="el" href="zot_8php.html#ac34e479d27f32b82dd6b33542f81a6a7">build_sync_packet()</a>, <a class="el" href="connections_8php.html#a1224058db8e3fb56463eb312f98e561d">connections_post()</a>, <a class="el" href="connedit_8php.html#a795acb3d9d841f55c255d7611681ab67">connedit_content()</a>, <a class="el" href="connedit_8php.html#a234c48426b652bf4d37053f2af329ac5">connedit_post()</a>, <a class="el" href="boot_8php.html#acc4e0c910af066148b810e5fde55fff1">construct_page()</a>, <a class="el" href="contact__selectors_8php.html#a9839e8fdaac7ffb37bf1420493f5c28f">contact_poll_interval()</a>, <a class="el" href="contact__selectors_8php.html#ae499960d6467bd30c78607b1018baf53">contact_reputation()</a>, <a class="el" href="dirprofile_8php.html#a3e1d30d3d93863ff5615f2df4ac7f052">dirprofile_init()</a>, <a class="el" href="dirsearch_8php.html#aa1fb04e1de4f25b63349ac78f94ceb4c">dirsearch_content()</a>, <a class="el" href="classRedBrowser.html#a1f7daf50bb9bfcde7345b3b1908dbd7e">RedBrowser\generateDirectoryIndex()</a>, <a class="el" href="plugin_8php.html#aff0178bd8d0b34a94d5efddc883edd35">get_plugin_info()</a>, <a class="el" href="plugin_8php.html#ad48de9c0fb7f19413a2aa49250d00405">get_theme_info()</a>, <a class="el" href="taxonomy_8php.html#a7747fa859ac56fbffd4f9782d85505de">get_things()</a>, <a class="el" href="photo__driver_8php.html#a243cee492ce443afb6a7d77d54b6c4aa">guess_image_type()</a>, <a class="el" href="zot_8php.html#a20750dd2c36961013fd382fb34e1366c">import_directory_profile()</a>, <a class="el" href="conversation_8php.html#aacbb12d372d5e9c3ab0735b4aea48fb3">item_photo_menu()</a>, <a class="el" href="items_8php.html#acf0bf7c9d21ac84f32effb754f7ad484">item_store_update()</a>, <a class="el" href="include_2config_8php.html#a27559f388c9b9af81c94e48d6889d1d1">load_config()</a>, <a class="el" href="include_2config_8php.html#ac543813a980b3841cc5a277fcd4a24a6">load_pconfig()</a>, <a class="el" href="include_2config_8php.html#a55bbed9a014c9109c767486834f3ca33">load_xconfig()</a>, <a class="el" href="dir__fns_8php.html#acd37b17dce3bdec6d5a6344a20598c1e">local_dir_update()</a>, <a class="el" href="mail_8php.html#acfc2cc0bf4e0b178207758384977f25a">mail_post()</a>, <a class="el" href="mood_8php.html#a721b9b6703b3234a005641c92d409b8f">mood_content()</a>, <a class="el" href="netgrowth_8php.html#a9b87bfc25a7cb11bc7f8e1fdd0310919">netgrowth_content()</a>, <a class="el" href="include_2follow_8php.html#ae387d4ae097c23d69f3247e7f08140c7">new_contact()</a>, <a class="el" href="classFKOAuthDataStore.html#a431b44d70e3da6a8256ab38f710e3050">FKOAuthDataStore\new_request_token()</a>, <a class="el" href="taxonomy_8php.html#af387463d42ffdf7d2ab3d5b22e40a0c7">obj_verb_selector()</a>, <a class="el" href="openid_8php.html#a9a13827dbcf61ae4e45f0b6b33a88f43">openid_content()</a>, <a class="el" href="include_2apps_8php.html#a32fe4ed9666228fd4b67dc487cc57a83">parse_app_description()</a>, <a class="el" href="include_2photos_8php.html#aedccaf18282b26899d9549c29bd9d1b9">photos_albums_list()</a>, <a class="el" href="po2php_8php.html#a3b75e36f913198299e99559b175cd8b4">po2php_run()</a>, <a class="el" href="poco_8php.html#a53def16f75e3d41f1d2bb7cfa4905498">poco_init()</a>, <a class="el" href="poke_8php.html#ac9190563a8da9c07a16f9dcd71cf6993">poke_content()</a>, <a class="el" href="include_2message_8php.html#a5f8de9847e203329e317ac38dc646898">private_messages_fetch_conversation()</a>, <a class="el" href="include_2message_8php.html#a254a756031e4d5e94f85e2939bdb5091">private_messages_fetch_message()</a>, <a class="el" href="include_2message_8php.html#a652973ce47a262f2d238c2fd6233d97e">private_messages_list()</a>, <a class="el" href="zot_8php.html#ac301c67864917c35922257950ae0f95c">process_channel_sync_delivery()</a>, <a class="el" href="include_2api_8php.html#a43c47de8565cc00c3369cb35c19cc75e">requestdata()</a>, <a class="el" href="settings_8php.html#aa7ee94d88ac088edb04ccf3a26de3586">settings_post()</a>, <a class="el" href="sslify_8php.html#a75b11e54a3d1fc83e7d4c0e8b4dab316">sslify_init()</a>, <a class="el" href="boot_8php.html#aca47505b8732177f52bb2d647eb2741c">startup()</a>, <a class="el" href="language_8php.html#a686bcafa6b0d5c86d37b38a1db5b6997">tt()</a>, <a class="el" href="classRedBrowser.html#ad3418b8ccad42a1ef4ad0079e15b2e64">RedBrowser\userReadableSize()</a>, <a class="el" href="vote_8php.html#a57a9516ee1b923b224e66dcc47377fb2">vote_post()</a>, <a class="el" href="boot_8php.html#a01353c9abebc3544ea080ac161729632">x()</a>, <a class="el" href="zfinger_8php.html#a8139b83a22ef98869adc10aa224027a0">zfinger_init()</a>, and <a class="el" href="zot_8php.html#a7ac30ff51274bf0b6d3eade37972145c">zot_refresh()</a>.</p>
+<p>Referenced by <a class="el" href="classApp.html#af6d39f63fb7116bbeb04e51696f99474">App\__construct()</a>, <a class="el" href="classTemplate.html#aae9c4d761ea1298e745e8052d7910194">Template\_get_var()</a>, <a class="el" href="classTemplate.html#abf71098c80fd1f218a59452b3408309e">Template\_replcb_for()</a>, <a class="el" href="items_8php.html#a36e656667193c83aa2cc03a024fc131b">activity_sanitise()</a>, <a class="el" href="crypto_8php.html#a2148d7aac7b30c720f7ebda7e9790286">aes_encapsulate()</a>, <a class="el" href="crypto_8php.html#aca7c3a574bfb6c6ef1f2403a56823914">aes_unencapsulate()</a>, <a class="el" href="include_2apps_8php.html#a1b2e737f477a2e0d9d11ef14adc5aa66">app_render()</a>, <a class="el" href="bbcode_8php.html#a3a989cbf308a32468d171d83e9c51d1e">bb_sanitize_style()</a>, <a class="el" href="zot_8php.html#aa97b33b619dd7132a9274f852af6ceb5">build_sync_packet()</a>, <a class="el" href="connections_8php.html#a1224058db8e3fb56463eb312f98e561d">connections_post()</a>, <a class="el" href="connedit_8php.html#a795acb3d9d841f55c255d7611681ab67">connedit_content()</a>, <a class="el" href="connedit_8php.html#a234c48426b652bf4d37053f2af329ac5">connedit_post()</a>, <a class="el" href="boot_8php.html#acc4e0c910af066148b810e5fde55fff1">construct_page()</a>, <a class="el" href="contact__selectors_8php.html#a9839e8fdaac7ffb37bf1420493f5c28f">contact_poll_interval()</a>, <a class="el" href="mod_2directory_8php.html#aac79396570d759da2efac24fcedf5b44">directory_content()</a>, <a class="el" href="dirsearch_8php.html#aa1fb04e1de4f25b63349ac78f94ceb4c">dirsearch_content()</a>, <a class="el" href="text_8php.html#a3ba47b4dd1248e7e51095572e7b814dc">extra_query_args()</a>, <a class="el" href="dimport_8php.html#a581f040717941ce3e1868b0b5dceefd1">foofoo()</a>, <a class="el" href="classRedMatrix_1_1RedDAV_1_1RedBrowser.html#af764d5f14df751f9ec86c34fab300c09">RedMatrix\RedDAV\RedBrowser\generateDirectoryIndex()</a>, <a class="el" href="plugin_8php.html#aff0178bd8d0b34a94d5efddc883edd35">get_plugin_info()</a>, <a class="el" href="plugin_8php.html#ad48de9c0fb7f19413a2aa49250d00405">get_theme_info()</a>, <a class="el" href="taxonomy_8php.html#a7747fa859ac56fbffd4f9782d85505de">get_things()</a>, <a class="el" href="photo__driver_8php.html#a243cee492ce443afb6a7d77d54b6c4aa">guess_image_type()</a>, <a class="el" href="zot_8php.html#a20750dd2c36961013fd382fb34e1366c">import_directory_profile()</a>, <a class="el" href="conversation_8php.html#aacbb12d372d5e9c3ab0735b4aea48fb3">item_photo_menu()</a>, <a class="el" href="items_8php.html#acf0bf7c9d21ac84f32effb754f7ad484">item_store_update()</a>, <a class="el" href="include_2config_8php.html#a27559f388c9b9af81c94e48d6889d1d1">load_config()</a>, <a class="el" href="include_2config_8php.html#a559791dda7fef8a4b2394c83e835787b">load_pconfig()</a>, <a class="el" href="include_2config_8php.html#aee4b619839cf4b64220f34edf5c67b52">load_xconfig()</a>, <a class="el" href="dir__fns_8php.html#acd37b17dce3bdec6d5a6344a20598c1e">local_dir_update()</a>, <a class="el" href="mail_8php.html#acfc2cc0bf4e0b178207758384977f25a">mail_post()</a>, <a class="el" href="mood_8php.html#a721b9b6703b3234a005641c92d409b8f">mood_content()</a>, <a class="el" href="netgrowth_8php.html#a9b87bfc25a7cb11bc7f8e1fdd0310919">netgrowth_content()</a>, <a class="el" href="include_2follow_8php.html#ae387d4ae097c23d69f3247e7f08140c7">new_contact()</a>, <a class="el" href="classFKOAuthDataStore.html#a431b44d70e3da6a8256ab38f710e3050">FKOAuthDataStore\new_request_token()</a>, <a class="el" href="taxonomy_8php.html#af387463d42ffdf7d2ab3d5b22e40a0c7">obj_verb_selector()</a>, <a class="el" href="openid_8php.html#a9a13827dbcf61ae4e45f0b6b33a88f43">openid_content()</a>, <a class="el" href="include_2apps_8php.html#a32fe4ed9666228fd4b67dc487cc57a83">parse_app_description()</a>, <a class="el" href="include_2photos_8php.html#aedccaf18282b26899d9549c29bd9d1b9">photos_albums_list()</a>, <a class="el" href="po2php_8php.html#a3b75e36f913198299e99559b175cd8b4">po2php_run()</a>, <a class="el" href="poco_8php.html#a53def16f75e3d41f1d2bb7cfa4905498">poco_init()</a>, <a class="el" href="poke_8php.html#ac9190563a8da9c07a16f9dcd71cf6993">poke_content()</a>, <a class="el" href="include_2message_8php.html#a5f8de9847e203329e317ac38dc646898">private_messages_fetch_conversation()</a>, <a class="el" href="include_2message_8php.html#a254a756031e4d5e94f85e2939bdb5091">private_messages_fetch_message()</a>, <a class="el" href="include_2message_8php.html#a652973ce47a262f2d238c2fd6233d97e">private_messages_list()</a>, <a class="el" href="zot_8php.html#ac301c67864917c35922257950ae0f95c">process_channel_sync_delivery()</a>, <a class="el" href="identity_8php.html#a4751b522ea913d0e7ed43e03d22e9e68">profile_load()</a>, <a class="el" href="include_2api_8php.html#a43c47de8565cc00c3369cb35c19cc75e">requestdata()</a>, <a class="el" href="settings_8php.html#aa7ee94d88ac088edb04ccf3a26de3586">settings_post()</a>, <a class="el" href="sslify_8php.html#a75b11e54a3d1fc83e7d4c0e8b4dab316">sslify_init()</a>, <a class="el" href="boot_8php.html#aca47505b8732177f52bb2d647eb2741c">startup()</a>, <a class="el" href="language_8php.html#a686bcafa6b0d5c86d37b38a1db5b6997">tt()</a>, <a class="el" href="classRedMatrix_1_1RedDAV_1_1RedBrowser.html#a242ce69a2fe5a5fdf9c2b8d3954accfd">RedMatrix\RedDAV\RedBrowser\userReadableSize()</a>, <a class="el" href="vote_8php.html#a57a9516ee1b923b224e66dcc47377fb2">vote_post()</a>, <a class="el" href="boot_8php.html#ae97836b0547953be182a2334c9c91d3c">x()</a>, <a class="el" href="hubloc_8php.html#af1b476c936f96a93282b1d058e3d05ea">xchan_fetch()</a>, <a class="el" href="zfinger_8php.html#a8139b83a22ef98869adc10aa224027a0">zfinger_init()</a>, <a class="el" href="zot_8php.html#a084c581d534e7e3b759488b46602288f">zot_build_packet()</a>, and <a class="el" href="zot_8php.html#a7ac30ff51274bf0b6d3eade37972145c">zot_refresh()</a>.</p>
</div>
</div>
@@ -182,7 +182,7 @@ Variables</h2></td></tr>
</table>
</div><div class="memdoc">
-<p>Referenced by <a class="el" href="dirprofile_8php.html#a3e1d30d3d93863ff5615f2df4ac7f052">dirprofile_init()</a>, <a class="el" href="include_2attach_8php.html#a5d484de2d19a93071571d6499a50ae34">pipe_streams()</a>, and <a class="el" href="po2php_8php.html#a3b75e36f913198299e99559b175cd8b4">po2php_run()</a>.</p>
+<p>Referenced by <a class="el" href="mod_2directory_8php.html#aac79396570d759da2efac24fcedf5b44">directory_content()</a>, <a class="el" href="include_2attach_8php.html#a5d484de2d19a93071571d6499a50ae34">pipe_streams()</a>, and <a class="el" href="po2php_8php.html#a3b75e36f913198299e99559b175cd8b4">po2php_run()</a>.</p>
</div>
</div>
@@ -224,7 +224,7 @@ Variables</h2></td></tr>
<b>Initial value:</b><div class="fragment"><div class="line">{</div>
<div class="line"> <a class="code" href="fpostit_8php.html#a3f3ae3ae61578b5671673914fd894443">showForm</a>(null, $content)</div>
</div><!-- fragment -->
-<p>Referenced by <a class="el" href="include_2oembed_8php.html#a26bb4c1e330d2f94ea7b6ce2fe970cf3">oembed_format_object()</a>, and <a class="el" href="post__to__red_8php.html#a085c250d4ceff5e4f10052f3d2039823">red_comment()</a>.</p>
+<p>Referenced by <a class="el" href="include_2oembed_8php.html#a26bb4c1e330d2f94ea7b6ce2fe970cf3">oembed_format_object()</a>.</p>
</div>
</div>
diff --git a/doc/html/php_2default_8php.html b/doc/html/php_2default_8php.html
index 19e67f2d6..35a9b50f1 100644
--- a/doc/html/php_2default_8php.html
+++ b/doc/html/php_2default_8php.html
@@ -112,7 +112,7 @@ $(document).ready(function(){initNavTree('php_2default_8php.html','');});
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="var-members"></a>
Variables</h2></td></tr>
-<tr class="memitem:a3987f5547ceb7e36a210a66a06241a5a"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="php_2default_8php.html#a3987f5547ceb7e36a210a66a06241a5a">if</a> (<a class="el" href="boot_8php.html#a01353c9abebc3544ea080ac161729632">x</a>($<a class="el" href="mod__import_8php.html#a8db1899eeeb44dabd0904065b63627bb">page</a>,'htmlhead')) echo $<a class="el" href="mod__import_8php.html#a8db1899eeeb44dabd0904065b63627bb">page</a>['htmlhead']?&gt;&lt;/head &gt;&lt; body &gt;&lt; header &gt;&lt;?php if(<a class="el" href="boot_8php.html#a01353c9abebc3544ea080ac161729632">x</a>($<a class="el" href="mod__import_8php.html#a8db1899eeeb44dabd0904065b63627bb">page</a></td></tr>
+<tr class="memitem:a3987f5547ceb7e36a210a66a06241a5a"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="php_2default_8php.html#a3987f5547ceb7e36a210a66a06241a5a">if</a> (<a class="el" href="boot_8php.html#ae97836b0547953be182a2334c9c91d3c">x</a>($<a class="el" href="mod__import_8php.html#a8db1899eeeb44dabd0904065b63627bb">page</a>,'htmlhead')) echo $<a class="el" href="mod__import_8php.html#a8db1899eeeb44dabd0904065b63627bb">page</a>['htmlhead']?&gt;&lt;/head &gt;&lt; body &gt;&lt; header &gt;&lt;?php if(<a class="el" href="boot_8php.html#ae97836b0547953be182a2334c9c91d3c">x</a>($<a class="el" href="mod__import_8php.html#a8db1899eeeb44dabd0904065b63627bb">page</a></td></tr>
<tr class="separator:a3987f5547ceb7e36a210a66a06241a5a"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<h2 class="groupheader">Variable Documentation</h2>
@@ -121,7 +121,7 @@ Variables</h2></td></tr>
<div class="memproto">
<table class="memname">
<tr>
- <td class="memname">if(<a class="el" href="boot_8php.html#a01353c9abebc3544ea080ac161729632">x</a>($<a class="el" href="mod__import_8php.html#a8db1899eeeb44dabd0904065b63627bb">page</a>,'htmlhead')) echo $<a class="el" href="mod__import_8php.html#a8db1899eeeb44dabd0904065b63627bb">page</a>['htmlhead']?&gt;&lt;/head &gt;&lt; body &gt;&lt; header &gt;&lt;?php if(<a class="el" href="boot_8php.html#a01353c9abebc3544ea080ac161729632">x</a>($<a class="el" href="mod__import_8php.html#a8db1899eeeb44dabd0904065b63627bb">page</a></td>
+ <td class="memname">if(<a class="el" href="boot_8php.html#ae97836b0547953be182a2334c9c91d3c">x</a>($<a class="el" href="mod__import_8php.html#a8db1899eeeb44dabd0904065b63627bb">page</a>,'htmlhead')) echo $<a class="el" href="mod__import_8php.html#a8db1899eeeb44dabd0904065b63627bb">page</a>['htmlhead']?&gt;&lt;/head &gt;&lt; body &gt;&lt; header &gt;&lt;?php if(<a class="el" href="boot_8php.html#ae97836b0547953be182a2334c9c91d3c">x</a>($<a class="el" href="mod__import_8php.html#a8db1899eeeb44dabd0904065b63627bb">page</a></td>
</tr>
</table>
</div><div class="memdoc">
diff --git a/doc/html/php_2theme__init_8php.html b/doc/html/php_2theme__init_8php.html
index e2d9d03f2..f6be48d0a 100644
--- a/doc/html/php_2theme__init_8php.html
+++ b/doc/html/php_2theme__init_8php.html
@@ -127,7 +127,7 @@ Variables</h2></td></tr>
</div><div class="memdoc">
<p>Those who require this feature will know what to do with it. Those who don't, won't. Eventually this functionality needs to be provided by a module such that permissions can be enforced. At the moment it's more of a proof of concept; but sufficient for our immediate needs. </p>
-<p>Referenced by <a class="el" href="admin_8php.html#ad6f87a764fd35f522c7b4c351d7878ec">admin_page_channels()</a>, <a class="el" href="include_2api_8php.html#a176c448d79c211ad41c2bbe3124658f5">api_call()</a>, <a class="el" href="include_2api_8php.html#afb99daa6b731bf497b81f2128084852c">api_user()</a>, <a class="el" href="appman_8php.html#af48805ac2f6f123f2681a8ae1c6f123f">appman_content()</a>, <a class="el" href="include_2attach_8php.html#ab6830b3ab74a5d284876141ac80f6cbc">attach_mkdir()</a>, <a class="el" href="include_2attach_8php.html#a84a8a64c4805e1525b42d4add464833f">attach_store()</a>, <a class="el" href="bbcode_8php.html#a009f61aaf78771737ed0765c8463911b">bbcode()</a>, <a class="el" href="blocks_8php.html#a2531a8fd51db3cecb2eb20c002c66e12">blocks_content()</a>, <a class="el" href="include_2bookmarks_8php.html#aef1cb2968c41c759f2d106e1088ca323">bookmark_add()</a>, <a class="el" href="mod_2bookmarks_8php.html#a774364b1c8404529581083631703527a">bookmarks_content()</a>, <a class="el" href="zot_8php.html#ac34e479d27f32b82dd6b33542f81a6a7">build_sync_packet()</a>, <a class="el" href="channel_8php.html#a9c6a6179e0e626398ebecc6151905ef1">channel_content()</a>, <a class="el" href="channel_8php.html#ac7c8c7845741baadf87fae6bc279f3dc">channel_init()</a>, <a class="el" href="Contact_8php.html#a186162051a5127069cc851d78740f205">channel_remove()</a>, <a class="el" href="mod_2chat_8php.html#a8b0b8bee6fef6477e8c64c5e951b1b4f">chat_content()</a>, <a class="el" href="mod_2chat_8php.html#aa9ae4782e9baef0b7314ab9527c2707e">chat_init()</a>, <a class="el" href="mod_2chat_8php.html#a999d594745597c656c9760253ae297ad">chat_post()</a>, <a class="el" href="include_2chat_8php.html#acdc80dba4eb796c7472b21129b435422">chatroom_create()</a>, <a class="el" href="include_2chat_8php.html#a2ba3af6884ecdce95de69262fe599639">chatroom_destroy()</a>, <a class="el" href="cloud_8php.html#a1b79a6fe0454bc76673ad9aef55bf02d">cloud_init()</a>, <a class="el" href="connections_8php.html#a1f23623f802af7bd35e95b0e94e5d558">connections_init()</a>, <a class="el" href="connections_8php.html#a1224058db8e3fb56463eb312f98e561d">connections_post()</a>, <a class="el" href="connedit_8php.html#a795acb3d9d841f55c255d7611681ab67">connedit_content()</a>, <a class="el" href="connedit_8php.html#a4da871e075597a09a8b374b9171dd92e">connedit_init()</a>, <a class="el" href="connedit_8php.html#a234c48426b652bf4d37053f2af329ac5">connedit_post()</a>, <a class="el" href="conversation_8php.html#affea1afb3f32ca41e966c8ddb4204d81">conversation()</a>, <a class="el" href="text_8php.html#a87a3cefc603302c78982f1d8e1245265">design_tools()</a>, <a class="el" href="include_2directory_8php.html#aa75d3b0697ca1456aaabdb37a74aa0f0">directory_run()</a>, <a class="el" href="display_8php.html#a37137c98d47bf3306f4c2bb9f5b60de0">display_content()</a>, <a class="el" href="editblock_8php.html#abbe8f55de06967bc8d79d620509a49e6">editblock_content()</a>, <a class="el" href="editlayout_8php.html#aa877e4157a26b099de904164181dd386">editlayout_content()</a>, <a class="el" href="editpost_8php.html#a34011690864d122680c802e9e748ccfb">editpost_content()</a>, <a class="el" href="editwebpage_8php.html#a375e945255fad79a71036528f7480650">editwebpage_content()</a>, <a class="el" href="event_8php.html#ac9f206819186b65952ac1869f0da8c6e">event_addtocal()</a>, <a class="el" href="events_8php.html#a1d293fb217ae6bc9e3858c4b32e363ec">events_content()</a>, <a class="el" href="events_8php.html#ab3e8a8f901175f8e40a8089eea45c075">events_post()</a>, <a class="el" href="feed_8php.html#af86137700b56f33d1d5f25c8dec22c04">feed_init()</a>, <a class="el" href="filestorage_8php.html#a61bb1be78472555df4ce619f51014040">filestorage_content()</a>, <a class="el" href="filestorage_8php.html#ad3b64e3ece9831f9d3a9f00c0ae983cd">filestorage_post()</a>, <a class="el" href="item_8php.html#a3daae7944f737bd30412a0d042207c0f">fix_attached_file_permissions()</a>, <a class="el" href="boot_8php.html#aca5e42678e178c6b9034610d66666fd7">fix_system_urls()</a>, <a class="el" href="items_8php.html#a04a35b610acfe54434df08adec39c0c7">get_feed_for()</a>, <a class="el" href="items_8php.html#a079e099e15d88d47aeb6ca6d60da7107">get_public_feed()</a>, <a class="el" href="item_8php.html#aa22feef4de326e1d7078dedd892e615c">handle_tag()</a>, <a class="el" href="home_8php.html#ac4642c38b6f23a8d065dd4a75c620bde">home_init()</a>, <a class="el" href="import_8php.html#af17fef0410518f7eac205d0ea416eaa2">import_post()</a>, <a class="el" href="importelm_8php.html#a1a4f71e6d76ace6add5e9659845f5e5f">importelm_post()</a>, <a class="el" href="invite_8php.html#a244385b28cfd021d308715f01158bfd9">invite_content()</a>, <a class="el" href="identity_8php.html#a4e996e44b50330098a04b467367a559f">is_public_profile()</a>, <a class="el" href="conversation_8php.html#aacbb12d372d5e9c3ab0735b4aea48fb3">item_photo_menu()</a>, <a class="el" href="item_8php.html#a693cd09805755ab85bbb5ecae69a48c3">item_post()</a>, <a class="el" href="items_8php.html#a2541e6861a56d145c9281877cc501615">item_store()</a>, <a class="el" href="items_8php.html#acf0bf7c9d21ac84f32effb754f7ad484">item_store_update()</a>, <a class="el" href="items_8php.html#a756738301f2ed96be50232500677d58a">items_fetch()</a>, <a class="el" href="layouts_8php.html#a6e0193759ad9eef76d3df2db24237b50">layouts_content()</a>, <a class="el" href="magic_8php.html#acea2cc792849ca2d71d4b689f66518bf">magic_init()</a>, <a class="el" href="mail_8php.html#a3c7c485fc69f92371e8b20936040eca1">mail_content()</a>, <a class="el" href="mail_8php.html#acfc2cc0bf4e0b178207758384977f25a">mail_post()</a>, <a class="el" href="include_2menu_8php.html#add35fae5e9695031b3d46e30ac409eb8">menu_add_item()</a>, <a class="el" href="include_2menu_8php.html#acb66f80ca895a6ccd562b3d9ae7b41aa">menu_edit_item()</a>, <a class="el" href="mod_2message_8php.html#ac72dfed3ce08fcb331d66b37edc6e15f">message_content()</a>, <a class="el" href="mitem_8php.html#a7a31b702ecad18eeb6a38b243ff0037e">mitem_content()</a>, <a class="el" href="mitem_8php.html#a6ee694cca4b551a20d7c7a94b5243ec1">mitem_post()</a>, <a class="el" href="mood_8php.html#a7ae136dd7476865b4828136175db5022">mood_init()</a>, <a class="el" href="nav_8php.html#a43be0df73b90647ea70947ce004e231e">nav()</a>, <a class="el" href="mod_2network_8php.html#a43f2f29b90c5e29072c561934bc8f8b4">network_content()</a>, <a class="el" href="mod_2network_8php.html#a180fce90ad11d7e0e45be094da7149ec">network_init()</a>, <a class="el" href="include_2follow_8php.html#ae387d4ae097c23d69f3247e7f08140c7">new_contact()</a>, <a class="el" href="notifier_8php.html#a568c502f626cff95e344c0748938b85d">notifier_run()</a>, <a class="el" href="include_2apps_8php.html#a32fe4ed9666228fd4b67dc487cc57a83">parse_app_description()</a>, <a class="el" href="include_2photos_8php.html#a6c40ef58aefef705a5adc84a40e97109">photo_upload()</a>, <a class="el" href="include_2photos_8php.html#aedccaf18282b26899d9549c29bd9d1b9">photos_albums_list()</a>, <a class="el" href="mod_2photos_8php.html#aa87382611a66ec5effdb2d78f13f5812">photos_content()</a>, <a class="el" href="include_2photos_8php.html#ad648c0c5544fe9263409b6f6e57c6274">photos_create_item()</a>, <a class="el" href="include_2photos_8php.html#aa27b9e435dcc34e1009f56dc02c7ca51">photos_list_photos()</a>, <a class="el" href="ping_8php.html#a77217b1b190b4c5d8770867b45f0c0a1">ping_init()</a>, <a class="el" href="poke_8php.html#a9725aab97b3983e6a98bd81c4efe7d3b">poke_init()</a>, <a class="el" href="items_8php.html#a410f9c743877c125ca06312373346903">post_activity_item()</a>, <a class="el" href="post__to__red_8php.html#a5cc2a89a6d33cdb8e2ca557a69bef42d">post_to_red_delete_comment()</a>, <a class="el" href="post__to__red_8php.html#a4674bb5ce2baa32c559607460c39a2c5">post_to_red_delete_post()</a>, <a class="el" href="post__to__red_8php.html#a75db5d87226a0287a0ac0fa315f2bcfd">post_to_red_displayAdminContent()</a>, <a class="el" href="post__to__red_8php.html#af5fd50e2c42ede85f8a9e8d9ee3cf540">post_to_red_post()</a>, <a class="el" href="mod_2probe_8php.html#a1f1db3fa6038e451e737964c94bf5e99">probe_content()</a>, <a class="el" href="zot_8php.html#ac301c67864917c35922257950ae0f95c">process_channel_sync_delivery()</a>, <a class="el" href="zot_8php.html#a4d9e6ca295e443b740d9960c304b3474">process_delivery()</a>, <a class="el" href="zot_8php.html#aa6ae96db8cbbdbb10e6876d206bbf7cc">process_mail_delivery()</a>, <a class="el" href="profile_8php.html#ab5d0246be0552e2182a585c1206d22a5">profile_init()</a>, <a class="el" href="profile__photo_8php.html#a140631c56438fbfacb61a1eb43067d02">profile_photo_init()</a>, <a class="el" href="profile__photo_8php.html#a4b80234074bd603221aa5364f330e479">profile_photo_post()</a>, <a class="el" href="profiles_8php.html#ab0362c81b1d3b0b12a772b9fac446e04">profiles_post()</a>, <a class="el" href="profperm_8php.html#a17fb64ec05edee1dc94d95438807d6c6">profperm_init()</a>, <a class="el" href="rbmark_8php.html#a43fec4960b50926251574762cc491f76">rbmark_content()</a>, <a class="el" href="rbmark_8php.html#ac5a66aa8599fa5dc702bae396d8d1f8c">rbmark_post()</a>, <a class="el" href="rpost_8php.html#a8190354d789000806d9879aea276728f">rpost_content()</a>, <a class="el" href="include_2message_8php.html#a751ffd6635022b2190f56154ee745752">send_message()</a>, <a class="el" href="settings_8php.html#aa7ee94d88ac088edb04ccf3a26de3586">settings_post()</a>, <a class="el" href="sources_8php.html#ac73298ff162ce7b2de8dcaf3d3305b1e">sources_post()</a>, <a class="el" href="tagger_8php.html#a0e4a3eb177d1684553c547503d67161c">tagger_content()</a>, <a class="el" href="thing_8php.html#a24a35f1e64029a67fdbea94a776ae04b">thing_content()</a>, <a class="el" href="thing_8php.html#a8be23b1d475ec3d9291999221c674c80">thing_init()</a>, <a class="el" href="uexport_8php.html#a118920137dedebe0581623a2e57e7b0d">uexport_init()</a>, <a class="el" href="items_8php.html#a2baa9e05f1e8aa3dd61c85803ae39bd6">update_remote_id()</a>, <a class="el" href="wall__attach_8php.html#a7385e970e93228d082f0fd7254f6e653">wall_attach_post()</a>, <a class="el" href="wall__upload_8php.html#a7cbe204244cf9e0380ee932263a74d8f">wall_upload_post()</a>, <a class="el" href="webpages_8php.html#af3b7397d4abc153e3d2147740ee1a41d">webpages_content()</a>, <a class="el" href="wfinger_8php.html#ae21e50c8d0a5f3c9be9f43a4e519acd3">wfinger_init()</a>, <a class="el" href="widgets_8php.html#aaa73bcf1702eaadd9dcd253502f55e01">widget_settings_menu()</a>, <a class="el" href="zot_8php.html#a3862b3161b2c8557dc1a95020179bd81">zot_build_packet()</a>, <a class="el" href="zot_8php.html#a95528377d7303131958c9f0b7158fdce">zot_finger()</a>, and <a class="el" href="zot_8php.html#a7ac30ff51274bf0b6d3eade37972145c">zot_refresh()</a>.</p>
+<p>Referenced by <a class="el" href="admin_8php.html#ad6f87a764fd35f522c7b4c351d7878ec">admin_page_channels()</a>, <a class="el" href="include_2api_8php.html#a176c448d79c211ad41c2bbe3124658f5">api_call()</a>, <a class="el" href="include_2api_8php.html#a7759ccddc8dff012ad168e511ffe5af5">api_direct_messages_box()</a>, <a class="el" href="include_2api_8php.html#afb99daa6b731bf497b81f2128084852c">api_user()</a>, <a class="el" href="appman_8php.html#af48805ac2f6f123f2681a8ae1c6f123f">appman_content()</a>, <a class="el" href="include_2attach_8php.html#ab6830b3ab74a5d284876141ac80f6cbc">attach_mkdir()</a>, <a class="el" href="include_2attach_8php.html#a84a8a64c4805e1525b42d4add464833f">attach_store()</a>, <a class="el" href="bbcode_8php.html#a009f61aaf78771737ed0765c8463911b">bbcode()</a>, <a class="el" href="blocks_8php.html#a2531a8fd51db3cecb2eb20c002c66e12">blocks_content()</a>, <a class="el" href="include_2bookmarks_8php.html#aef1cb2968c41c759f2d106e1088ca323">bookmark_add()</a>, <a class="el" href="mod_2bookmarks_8php.html#a774364b1c8404529581083631703527a">bookmarks_content()</a>, <a class="el" href="zot_8php.html#aa97b33b619dd7132a9274f852af6ceb5">build_sync_packet()</a>, <a class="el" href="channel_8php.html#a9c6a6179e0e626398ebecc6151905ef1">channel_content()</a>, <a class="el" href="channel_8php.html#ac7c8c7845741baadf87fae6bc279f3dc">channel_init()</a>, <a class="el" href="Contact_8php.html#a4e8af0f0525161da74583c04b8b03097">channel_remove()</a>, <a class="el" href="mod_2chat_8php.html#a8b0b8bee6fef6477e8c64c5e951b1b4f">chat_content()</a>, <a class="el" href="mod_2chat_8php.html#aa9ae4782e9baef0b7314ab9527c2707e">chat_init()</a>, <a class="el" href="mod_2chat_8php.html#a999d594745597c656c9760253ae297ad">chat_post()</a>, <a class="el" href="include_2chat_8php.html#acdc80dba4eb796c7472b21129b435422">chatroom_create()</a>, <a class="el" href="include_2chat_8php.html#a2ba3af6884ecdce95de69262fe599639">chatroom_destroy()</a>, <a class="el" href="cloud_8php.html#ad2e96e917852f27dedfc263d37e13756">cloud_init()</a>, <a class="el" href="connections_8php.html#a1f23623f802af7bd35e95b0e94e5d558">connections_init()</a>, <a class="el" href="connections_8php.html#a1224058db8e3fb56463eb312f98e561d">connections_post()</a>, <a class="el" href="connedit_8php.html#a795acb3d9d841f55c255d7611681ab67">connedit_content()</a>, <a class="el" href="connedit_8php.html#a4da871e075597a09a8b374b9171dd92e">connedit_init()</a>, <a class="el" href="connedit_8php.html#a234c48426b652bf4d37053f2af329ac5">connedit_post()</a>, <a class="el" href="conversation_8php.html#affea1afb3f32ca41e966c8ddb4204d81">conversation()</a>, <a class="el" href="text_8php.html#a87a3cefc603302c78982f1d8e1245265">design_tools()</a>, <a class="el" href="diaspora_8php.html#a4901762cba5cd8dcdc57bdf285eefb1b">diaspora_msg_build()</a>, <a class="el" href="diaspora_8php.html#a586d5a3ba92d35cee14f879f290072aa">diaspora_pubmsg_build()</a>, <a class="el" href="diaspora_8php.html#ac1ab782a34552a7c6b4dc961754ed598">diaspora_request()</a>, <a class="el" href="include_2directory_8php.html#aa75d3b0697ca1456aaabdb37a74aa0f0">directory_run()</a>, <a class="el" href="display_8php.html#a37137c98d47bf3306f4c2bb9f5b60de0">display_content()</a>, <a class="el" href="editblock_8php.html#abbe8f55de06967bc8d79d620509a49e6">editblock_content()</a>, <a class="el" href="editlayout_8php.html#aa877e4157a26b099de904164181dd386">editlayout_content()</a>, <a class="el" href="editpost_8php.html#a34011690864d122680c802e9e748ccfb">editpost_content()</a>, <a class="el" href="editwebpage_8php.html#a375e945255fad79a71036528f7480650">editwebpage_content()</a>, <a class="el" href="event_8php.html#ac9f206819186b65952ac1869f0da8c6e">event_addtocal()</a>, <a class="el" href="events_8php.html#a1d293fb217ae6bc9e3858c4b32e363ec">events_content()</a>, <a class="el" href="events_8php.html#ab3e8a8f901175f8e40a8089eea45c075">events_post()</a>, <a class="el" href="feed_8php.html#af86137700b56f33d1d5f25c8dec22c04">feed_init()</a>, <a class="el" href="filestorage_8php.html#a61bb1be78472555df4ce619f51014040">filestorage_content()</a>, <a class="el" href="filestorage_8php.html#ad3b64e3ece9831f9d3a9f00c0ae983cd">filestorage_post()</a>, <a class="el" href="item_8php.html#a3daae7944f737bd30412a0d042207c0f">fix_attached_file_permissions()</a>, <a class="el" href="items_8php.html#a04a35b610acfe54434df08adec39c0c7">get_feed_for()</a>, <a class="el" href="items_8php.html#a079e099e15d88d47aeb6ca6d60da7107">get_public_feed()</a>, <a class="el" href="items_8php.html#a52c24114b73c0bdb605a03cd29712223">handle_feed()</a>, <a class="el" href="text_8php.html#aa22feef4de326e1d7078dedd892e615c">handle_tag()</a>, <a class="el" href="hcard_8php.html#ac34f26b0e6a37eef44fa49bea135136d">hcard_init()</a>, <a class="el" href="home_8php.html#ac4642c38b6f23a8d065dd4a75c620bde">home_init()</a>, <a class="el" href="impel_8php.html#ab7db6fca43b42ea4332cb3e841b3cf7b">impel_init()</a>, <a class="el" href="import_8php.html#af17fef0410518f7eac205d0ea416eaa2">import_post()</a>, <a class="el" href="importelm_8php.html#a1a4f71e6d76ace6add5e9659845f5e5f">importelm_post()</a>, <a class="el" href="invite_8php.html#a244385b28cfd021d308715f01158bfd9">invite_content()</a>, <a class="el" href="identity_8php.html#a4e996e44b50330098a04b467367a559f">is_public_profile()</a>, <a class="el" href="conversation_8php.html#aacbb12d372d5e9c3ab0735b4aea48fb3">item_photo_menu()</a>, <a class="el" href="item_8php.html#a693cd09805755ab85bbb5ecae69a48c3">item_post()</a>, <a class="el" href="items_8php.html#a2541e6861a56d145c9281877cc501615">item_store()</a>, <a class="el" href="items_8php.html#acf0bf7c9d21ac84f32effb754f7ad484">item_store_update()</a>, <a class="el" href="items_8php.html#a756738301f2ed96be50232500677d58a">items_fetch()</a>, <a class="el" href="layouts_8php.html#a6e0193759ad9eef76d3df2db24237b50">layouts_content()</a>, <a class="el" href="locs_8php.html#a6c900f53970c0d0e738d2fe06d27ca44">locs_content()</a>, <a class="el" href="locs_8php.html#a6b43654592919ac863d67a1f787a69b9">locs_post()</a>, <a class="el" href="magic_8php.html#acea2cc792849ca2d71d4b689f66518bf">magic_init()</a>, <a class="el" href="mail_8php.html#a3c7c485fc69f92371e8b20936040eca1">mail_content()</a>, <a class="el" href="mail_8php.html#acfc2cc0bf4e0b178207758384977f25a">mail_post()</a>, <a class="el" href="include_2menu_8php.html#add35fae5e9695031b3d46e30ac409eb8">menu_add_item()</a>, <a class="el" href="include_2menu_8php.html#acb66f80ca895a6ccd562b3d9ae7b41aa">menu_edit_item()</a>, <a class="el" href="mod_2message_8php.html#ac72dfed3ce08fcb331d66b37edc6e15f">message_content()</a>, <a class="el" href="mitem_8php.html#a7a31b702ecad18eeb6a38b243ff0037e">mitem_content()</a>, <a class="el" href="mitem_8php.html#a6ee694cca4b551a20d7c7a94b5243ec1">mitem_post()</a>, <a class="el" href="mood_8php.html#a7ae136dd7476865b4828136175db5022">mood_init()</a>, <a class="el" href="nav_8php.html#a43be0df73b90647ea70947ce004e231e">nav()</a>, <a class="el" href="mod_2network_8php.html#a43f2f29b90c5e29072c561934bc8f8b4">network_content()</a>, <a class="el" href="mod_2network_8php.html#a180fce90ad11d7e0e45be094da7149ec">network_init()</a>, <a class="el" href="include_2follow_8php.html#ae387d4ae097c23d69f3247e7f08140c7">new_contact()</a>, <a class="el" href="notifier_8php.html#a568c502f626cff95e344c0748938b85d">notifier_run()</a>, <a class="el" href="include_2apps_8php.html#a32fe4ed9666228fd4b67dc487cc57a83">parse_app_description()</a>, <a class="el" href="include_2photos_8php.html#a6c40ef58aefef705a5adc84a40e97109">photo_upload()</a>, <a class="el" href="include_2photos_8php.html#aedccaf18282b26899d9549c29bd9d1b9">photos_albums_list()</a>, <a class="el" href="mod_2photos_8php.html#aa87382611a66ec5effdb2d78f13f5812">photos_content()</a>, <a class="el" href="include_2photos_8php.html#ad648c0c5544fe9263409b6f6e57c6274">photos_create_item()</a>, <a class="el" href="include_2photos_8php.html#aa27b9e435dcc34e1009f56dc02c7ca51">photos_list_photos()</a>, <a class="el" href="ping_8php.html#a77217b1b190b4c5d8770867b45f0c0a1">ping_init()</a>, <a class="el" href="poke_8php.html#a9725aab97b3983e6a98bd81c4efe7d3b">poke_init()</a>, <a class="el" href="items_8php.html#a410f9c743877c125ca06312373346903">post_activity_item()</a>, <a class="el" href="mod_2probe_8php.html#a1f1db3fa6038e451e737964c94bf5e99">probe_content()</a>, <a class="el" href="zot_8php.html#ac301c67864917c35922257950ae0f95c">process_channel_sync_delivery()</a>, <a class="el" href="zot_8php.html#a0e3006e7a456b2175a9badc96bc5176d">process_delivery()</a>, <a class="el" href="zot_8php.html#aa6ae96db8cbbdbb10e6876d206bbf7cc">process_mail_delivery()</a>, <a class="el" href="profile_8php.html#ab5d0246be0552e2182a585c1206d22a5">profile_init()</a>, <a class="el" href="profile__photo_8php.html#a140631c56438fbfacb61a1eb43067d02">profile_photo_init()</a>, <a class="el" href="profile__photo_8php.html#a4b80234074bd603221aa5364f330e479">profile_photo_post()</a>, <a class="el" href="profiles_8php.html#a46975783b8b8d70402d51487eb1f0b00">profiles_content()</a>, <a class="el" href="profiles_8php.html#ab0362c81b1d3b0b12a772b9fac446e04">profiles_post()</a>, <a class="el" href="profperm_8php.html#a17fb64ec05edee1dc94d95438807d6c6">profperm_init()</a>, <a class="el" href="rbmark_8php.html#a43fec4960b50926251574762cc491f76">rbmark_content()</a>, <a class="el" href="rbmark_8php.html#ac5a66aa8599fa5dc702bae396d8d1f8c">rbmark_post()</a>, <a class="el" href="refimport_8php.html#ad97ebb5feda0230a4834e0b3637a0d29">refimport_content()</a>, <a class="el" href="refimport_8php.html#a01a29630fa5e1ce6cd5e1fd75280747c">reflect_comment_store()</a>, <a class="el" href="refimport_8php.html#ae9c56f779d1e0ac7bcb2a460129e7ae5">reflect_photo_callback()</a>, <a class="el" href="rpost_8php.html#a8190354d789000806d9879aea276728f">rpost_content()</a>, <a class="el" href="include_2message_8php.html#a751ffd6635022b2190f56154ee745752">send_message()</a>, <a class="el" href="settings_8php.html#aa7ee94d88ac088edb04ccf3a26de3586">settings_post()</a>, <a class="el" href="sources_8php.html#ac73298ff162ce7b2de8dcaf3d3305b1e">sources_post()</a>, <a class="el" href="items_8php.html#adf2b8137dc4ad9ec958de2842f16f3c2">start_delivery_chain()</a>, <a class="el" href="items_8php.html#a25221826fa4621f523c68483e3b6af26">store_diaspora_comment_sig()</a>, <a class="el" href="tagger_8php.html#a0e4a3eb177d1684553c547503d67161c">tagger_content()</a>, <a class="el" href="thing_8php.html#a24a35f1e64029a67fdbea94a776ae04b">thing_content()</a>, <a class="el" href="thing_8php.html#a8be23b1d475ec3d9291999221c674c80">thing_init()</a>, <a class="el" href="uexport_8php.html#a118920137dedebe0581623a2e57e7b0d">uexport_init()</a>, <a class="el" href="items_8php.html#a2baa9e05f1e8aa3dd61c85803ae39bd6">update_remote_id()</a>, <a class="el" href="wall__attach_8php.html#a7385e970e93228d082f0fd7254f6e653">wall_attach_post()</a>, <a class="el" href="wall__upload_8php.html#a7cbe204244cf9e0380ee932263a74d8f">wall_upload_post()</a>, <a class="el" href="webpages_8php.html#af3b7397d4abc153e3d2147740ee1a41d">webpages_content()</a>, <a class="el" href="wfinger_8php.html#ae21e50c8d0a5f3c9be9f43a4e519acd3">wfinger_init()</a>, <a class="el" href="widgets_8php.html#aaa73bcf1702eaadd9dcd253502f55e01">widget_settings_menu()</a>, <a class="el" href="zot_8php.html#a084c581d534e7e3b759488b46602288f">zot_build_packet()</a>, <a class="el" href="zot_8php.html#ae26ce9f1ad74139193fb6319beac5fca">zot_encode_locations()</a>, <a class="el" href="zot_8php.html#a95528377d7303131958c9f0b7158fdce">zot_finger()</a>, and <a class="el" href="zot_8php.html#a7ac30ff51274bf0b6d3eade37972145c">zot_refresh()</a>.</p>
</div>
</div>
diff --git a/doc/html/ping_8php.html b/doc/html/ping_8php.html
index eb295fb35..0fd7a5794 100644
--- a/doc/html/ping_8php.html
+++ b/doc/html/ping_8php.html
@@ -135,7 +135,7 @@ Functions</h2></td></tr>
<p>This function does several tasks. Whenever called it checks for new messages, introductions, notifications, etc. and returns a json with the results.</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
- <tr><td class="paramtype"><a class="el" href="classApp.html">App</a></td><td class="paramname">&amp;$a</td><td></td></tr>
+ <tr><td class="paramtype"><a class="el" href="classApp.html" title="Our main application structure for the life of this page.">App</a></td><td class="paramname">&amp;$a</td><td></td></tr>
</table>
</dd>
</dl>
diff --git a/doc/html/plugin_8php.html b/doc/html/plugin_8php.html
index 822d746ba..eb1dbb904 100644
--- a/doc/html/plugin_8php.html
+++ b/doc/html/plugin_8php.html
@@ -151,16 +151,6 @@ Functions</h2></td></tr>
<tr class="separator:ad48de9c0fb7f19413a2aa49250d00405"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a48047edfbef770125a5508dcc2f9282f"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="plugin_8php.html#a48047edfbef770125a5508dcc2f9282f">get_theme_screenshot</a> ($theme)</td></tr>
<tr class="separator:a48047edfbef770125a5508dcc2f9282f"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a030cec6793b909c439c0336ba39b1571"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="plugin_8php.html#a030cec6793b909c439c0336ba39b1571">service_class_allows</a> ($uid, $property, $usage=false)</td></tr>
-<tr class="separator:a030cec6793b909c439c0336ba39b1571"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a905b54e10704b283ac64680a8abc0971"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="plugin_8php.html#a905b54e10704b283ac64680a8abc0971">service_class_fetch</a> ($uid, $property)</td></tr>
-<tr class="separator:a905b54e10704b283ac64680a8abc0971"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a4fc13e528367f510fcb6d8bbfc559040"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="plugin_8php.html#a4fc13e528367f510fcb6d8bbfc559040">upgrade_link</a> ($<a class="el" href="bbcode_8php.html#a009f61aaf78771737ed0765c8463911b">bbcode</a>=false)</td></tr>
-<tr class="separator:a4fc13e528367f510fcb6d8bbfc559040"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a901657dd078e070516cf97285e0bada7"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="plugin_8php.html#a901657dd078e070516cf97285e0bada7">upgrade_message</a> ($<a class="el" href="bbcode_8php.html#a009f61aaf78771737ed0765c8463911b">bbcode</a>=false)</td></tr>
-<tr class="separator:a901657dd078e070516cf97285e0bada7"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a754d7f53b3abc557b753c057dc4e021d"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="plugin_8php.html#a754d7f53b3abc557b753c057dc4e021d">upgrade_bool_message</a> ($<a class="el" href="bbcode_8php.html#a009f61aaf78771737ed0765c8463911b">bbcode</a>=false)</td></tr>
-<tr class="separator:a754d7f53b3abc557b753c057dc4e021d"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a23c4fccf1eb5fcd63b24783ba1f05f7a"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="plugin_8php.html#a23c4fccf1eb5fcd63b24783ba1f05f7a">head_add_css</a> ($src, $media= 'screen')</td></tr>
<tr class="memdesc:a23c4fccf1eb5fcd63b24783ba1f05f7a"><td class="mdescLeft">&#160;</td><td class="mdescRight">add CSS to &lt;head&gt; <a href="#a23c4fccf1eb5fcd63b24783ba1f05f7a">More...</a><br/></td></tr>
<tr class="separator:a23c4fccf1eb5fcd63b24783ba1f05f7a"><td class="memSeparator" colspan="2">&#160;</td></tr>
@@ -216,7 +206,7 @@ Functions</h2></td></tr>
</table>
</div><div class="memdoc">
-<p>Referenced by <a class="el" href="__well__known_8php.html#a6ebfa937a2024f0b5dab53f0ac90fed0">_well_known_init()</a>, <a class="el" href="include_2api_8php.html#afe534f826e4282b72d66e8cadca7bb73">api_login()</a>, <a class="el" href="items_8php.html#a016dd86c827d08db89061ea81d15c6cb">atom_author()</a>, <a class="el" href="items_8php.html#a275108c050f7eb18bcbb5018e6b81cf6">atom_entry()</a>, <a class="el" href="security_8php.html#adc7bf51e3b8d67bd80e9348f9ab03733">authenticate_success()</a>, <a class="el" href="include_2network_8php.html#ab07ce9d75eae559865ed90aad2154bd7">avatar_img()</a>, <a class="el" href="bb2diaspora_8php.html#a4f10e0876b27373c762bc1abbe745f5c">bb2diaspora()</a>, <a class="el" href="bbcode_8php.html#a009f61aaf78771737ed0765c8463911b">bbcode()</a>, <a class="el" href="Contact_8php.html#a186162051a5127069cc851d78740f205">channel_remove()</a>, <a class="el" href="include_2chat_8php.html#acea6b176eb7aff44d9ba3ae24ce511d3">chat_message()</a>, <a class="el" href="chatsvc_8php.html#a7c9a9b9c24a2b02eed8efd6b09632d03">chatsvc_post()</a>, <a class="el" href="account_8php.html#ae052bd5558847bd38e89c213561a9771">check_account_email()</a>, <a class="el" href="account_8php.html#aaff7720423417a4333697894ffd9ddeb">check_account_invite()</a>, <a class="el" href="account_8php.html#a144b4891022567668375b58ea61cfff0">check_account_password()</a>, <a class="el" href="connect_8php.html#a489f0a66c660de6ec4d6917b27674f07">connect_content()</a>, <a class="el" href="connections_8php.html#a1224058db8e3fb56463eb312f98e561d">connections_post()</a>, <a class="el" href="connedit_8php.html#a795acb3d9d841f55c255d7611681ab67">connedit_content()</a>, <a class="el" href="connedit_8php.html#a234c48426b652bf4d37053f2af329ac5">connedit_post()</a>, <a class="el" href="boot_8php.html#acc4e0c910af066148b810e5fde55fff1">construct_page()</a>, <a class="el" href="text_8php.html#ad6432621d0fafcbcf3d3b9b49bef7784">contact_block()</a>, <a class="el" href="acl__selectors_8php.html#a9476997d2968a5794f3723878ed89c91">contact_select()</a>, <a class="el" href="conversation_8php.html#affea1afb3f32ca41e966c8ddb4204d81">conversation()</a>, <a class="el" href="identity_8php.html#a345f4c943d84de502ec6e72d2c813945">create_identity()</a>, <a class="el" href="cronhooks_8php.html#a4c4c1bbec4ecc9a0efa00dd6afd2c0ca">cronhooks_run()</a>, <a class="el" href="mod_2directory_8php.html#aac79396570d759da2efac24fcedf5b44">directory_content()</a>, <a class="el" href="account_8php.html#a0d183a3cb4c67a0f5e906811df7a1fc9">downgrade_accounts()</a>, <a class="el" href="items_8php.html#a555762e1022a4b8e3c3abd32e7812408">drop_item()</a>, <a class="el" href="editblock_8php.html#abbe8f55de06967bc8d79d620509a49e6">editblock_content()</a>, <a class="el" href="editlayout_8php.html#aa877e4157a26b099de904164181dd386">editlayout_content()</a>, <a class="el" href="editpost_8php.html#a34011690864d122680c802e9e748ccfb">editpost_content()</a>, <a class="el" href="editwebpage_8php.html#a375e945255fad79a71036528f7480650">editwebpage_content()</a>, <a class="el" href="event_8php.html#a7378e839ac3de9d55579eb3ec48eaf92">event_store_item()</a>, <a class="el" href="externals_8php.html#a4df44079e6f915286088b7a0d44db926">externals_run()</a>, <a class="el" href="features_8php.html#a52b5bdfb61b256713efecf7a7b20b0c0">feature_enabled()</a>, <a class="el" href="profile__selectors_8php.html#ae2b2c087e6530c61c0b256fd26d52355">gender_selector()</a>, <a class="el" href="permissions_8php.html#aeca9b280f3dc3358c89976d81d690008">get_all_perms()</a>, <a class="el" href="items_8php.html#a896c1809d58f2d7a42cfe14577958ddf">get_atom_elements()</a>, <a class="el" href="features_8php.html#ae73c5b03b01c7284ed7e7e0e774e975c">get_features()</a>, <a class="el" href="items_8php.html#a04a35b610acfe54434df08adec39c0c7">get_feed_for()</a>, <a class="el" href="text_8php.html#a736db13a966b8abaf8c9198faa35911a">get_mood_verbs()</a>, <a class="el" href="permissions_8php.html#a040fd3d3b8517658b1668ae0cd093972">get_perms()</a>, <a class="el" href="text_8php.html#aa46f941155c2ac1155f2f17ffb0adb66">get_poke_verbs()</a>, <a class="el" href="classItem.html#ad5dcbe0b94cb2d5719bc5b6bd8ad60c8">Item\get_template_data()</a>, <a class="el" href="classApp.html#a871898becd0697d778f36d9336253ae8">App\get_widgets()</a>, <a class="el" href="acl__selectors_8php.html#aa1e3bc344ca2b29f97eb9860216d21a0">group_select()</a>, <a class="el" href="home_8php.html#aa1cf697851a646755baf537f75334c46">home_content()</a>, <a class="el" href="home_8php.html#ac4642c38b6f23a8d065dd4a75c620bde">home_init()</a>, <a class="el" href="hostxrd_8php.html#aa37ffc8e7900bc76c4828bd25916db92">hostxrd_init()</a>, <a class="el" href="html2bbcode_8php.html#a5ad726995ac4070213abdb3bd09f4837">html2bbcode()</a>, <a class="el" href="items_8php.html#ae73794179b62d39bb597ff670ab1c1e5">import_author_xchan()</a>, <a class="el" href="zot_8php.html#a20750dd2c36961013fd382fb34e1366c">import_directory_profile()</a>, <a class="el" href="zot_8php.html#a528e97ca5d69c3b7f35c5d954afde315">import_xchan()</a>, <a class="el" href="conversation_8php.html#aacbb12d372d5e9c3ab0735b4aea48fb3">item_photo_menu()</a>, <a class="el" href="item_8php.html#a693cd09805755ab85bbb5ecae69a48c3">item_post()</a>, <a class="el" href="items_8php.html#a2541e6861a56d145c9281877cc501615">item_store()</a>, <a class="el" href="items_8php.html#acf0bf7c9d21ac84f32effb754f7ad484">item_store_update()</a>, <a class="el" href="like_8php.html#a9d7dd268f21c21e9d29dd2aca2dd9538">like_content()</a>, <a class="el" href="boot_8php.html#aefecf8599036df7f1b95d6820e0e2fa4">login()</a>, <a class="el" href="magic_8php.html#acea2cc792849ca2d71d4b689f66518bf">magic_init()</a>, <a class="el" href="items_8php.html#a77da7ce9a117601d49ac4a67c71b514f">mail_store()</a>, <a class="el" href="profile__selectors_8php.html#a7473dd095987e1cdcc79d4f0bb5e6798">marital_selector()</a>, <a class="el" href="mood_8php.html#a7ae136dd7476865b4828136175db5022">mood_init()</a>, <a class="el" href="nav_8php.html#a43be0df73b90647ea70947ce004e231e">nav()</a>, <a class="el" href="mod_2network_8php.html#a43f2f29b90c5e29072c561934bc8f8b4">network_content()</a>, <a class="el" href="contact__selectors_8php.html#ad472e4716426dd1a9dd77b62962454be">network_to_name()</a>, <a class="el" href="include_2follow_8php.html#ae387d4ae097c23d69f3247e7f08140c7">new_contact()</a>, <a class="el" href="enotify_8php.html#a3e9a9355b243777c488d2a9883908dfc">notification()</a>, <a class="el" href="notifier_8php.html#a568c502f626cff95e344c0748938b85d">notifier_run()</a>, <a class="el" href="taxonomy_8php.html#a03f55ee46c5f496e42f3d29db8d09cce">obj_verbs()</a>, <a class="el" href="include_2oembed_8php.html#a98549b9af8140eda3eceaeedcaabc2c2">oembed_fetch_url()</a>, <a class="el" href="openid_8php.html#a9a13827dbcf61ae4e45f0b6b33a88f43">openid_content()</a>, <a class="el" href="parse__url_8php.html#a05a9e8944380ba3cf6bbf5893dd4b74b">parse_url_content()</a>, <a class="el" href="comanche_8php.html#af7150df735e5ff9d467994cd6f769c6e">pdl_selector()</a>, <a class="el" href="permissions_8php.html#a67ada9ed51e77885b6b0f6a28cee1835">perm_is_allowed()</a>, <a class="el" href="include_2photos_8php.html#a6c40ef58aefef705a5adc84a40e97109">photo_upload()</a>, <a class="el" href="mod_2photos_8php.html#aa87382611a66ec5effdb2d78f13f5812">photos_content()</a>, <a class="el" href="ping_8php.html#a77217b1b190b4c5d8770867b45f0c0a1">ping_init()</a>, <a class="el" href="poller_8php.html#a5f12df3a4738124b6c039971e87e76da">poller_run()</a>, <a class="el" href="acl__selectors_8php.html#ad25bba63a51a2b0b5b463efae50df528">populate_acl()</a>, <a class="el" href="items_8php.html#a410f9c743877c125ca06312373346903">post_activity_item()</a>, <a class="el" href="post_8php.html#af4b48181ce773ef0cdfc972441445c34">post_init()</a>, <a class="el" href="text_8php.html#ae4df74296fbe55051ed3c035e55205e5">prepare_body()</a>, <a class="el" href="include_2probe_8php.html#aa748dc73a6686c13826b1ee9d16c800d">probe_well_known()</a>, <a class="el" href="boot_8php.html#ab346a2ece14993861f3e4206befa94f0">proc_run()</a>, <a class="el" href="zot_8php.html#a4d9e6ca295e443b740d9960c304b3474">process_delivery()</a>, <a class="el" href="profile_8php.html#a3775cf6eef6587e5143133356a7b76c0">profile_content()</a>, <a class="el" href="identity_8php.html#a432259b2cf5b6f59be53e71db9f2c7dc">profile_sidebar()</a>, <a class="el" href="profiles_8php.html#a46975783b8b8d70402d51487eb1f0b00">profiles_content()</a>, <a class="el" href="profiles_8php.html#ab0362c81b1d3b0b12a772b9fac446e04">profiles_post()</a>, <a class="el" href="text_8php.html#a9c6ce4e12a4ac883c5e3f36fed6e1e09">replace_macros()</a>, <a class="el" href="rmagic_8php.html#a869de069d081b3c4e98b957d06bbf08f">rmagic_post()</a>, <a class="el" href="settings_8php.html#aa7ee94d88ac088edb04ccf3a26de3586">settings_post()</a>, <a class="el" href="profile__selectors_8php.html#a3b50b3ea4ea4bdbebebfffc5d1b157c7">sexpref_selector()</a>, <a class="el" href="siteinfo_8php.html#a70c09bfb6dd1c86a125a35f62ed53656">siteinfo_content()</a>, <a class="el" href="text_8php.html#a3d225b253bb9e0f2498c11647d927b0b">smilies()</a>, <a class="el" href="subthread_8php.html#a50368f3d825b77996030528e7fbfa3d3">subthread_content()</a>, <a class="el" href="items_8php.html#ab1bce4261bcf75ad62753b498a144d17">tag_deliver()</a>, <a class="el" href="identity_8php.html#af2802bc13a00a17b867bba7978ba8f58">validate_channelname()</a>, <a class="el" href="wfinger_8php.html#ae21e50c8d0a5f3c9be9f43a4e519acd3">wfinger_init()</a>, <a class="el" href="widgets_8php.html#add9b24d3304e529a7975e96122315554">widget_affinity()</a>, <a class="el" href="xrd_8php.html#aee3cf087968e4a0ff3a87de16eb23270">xrd_init()</a>, <a class="el" href="zfinger_8php.html#a8139b83a22ef98869adc10aa224027a0">zfinger_init()</a>, <a class="el" href="identity_8php.html#a5b815330f3d177ab383af37a6c12e532">zid()</a>, and <a class="el" href="identity_8php.html#a680fbafc2db023c5b1309e0180e81315">zid_init()</a>.</p>
+<p>Referenced by <a class="el" href="__well__known_8php.html#a6ebfa937a2024f0b5dab53f0ac90fed0">_well_known_init()</a>, <a class="el" href="include_2api_8php.html#afe534f826e4282b72d66e8cadca7bb73">api_login()</a>, <a class="el" href="items_8php.html#a016dd86c827d08db89061ea81d15c6cb">atom_author()</a>, <a class="el" href="items_8php.html#a275108c050f7eb18bcbb5018e6b81cf6">atom_entry()</a>, <a class="el" href="security_8php.html#adc7bf51e3b8d67bd80e9348f9ab03733">authenticate_success()</a>, <a class="el" href="include_2network_8php.html#ab07ce9d75eae559865ed90aad2154bd7">avatar_img()</a>, <a class="el" href="bb2diaspora_8php.html#a4f10e0876b27373c762bc1abbe745f5c">bb2diaspora()</a>, <a class="el" href="bbcode_8php.html#a009f61aaf78771737ed0765c8463911b">bbcode()</a>, <a class="el" href="Contact_8php.html#a4e8af0f0525161da74583c04b8b03097">channel_remove()</a>, <a class="el" href="include_2chat_8php.html#acea6b176eb7aff44d9ba3ae24ce511d3">chat_message()</a>, <a class="el" href="chatsvc_8php.html#a7c9a9b9c24a2b02eed8efd6b09632d03">chatsvc_post()</a>, <a class="el" href="account_8php.html#ae052bd5558847bd38e89c213561a9771">check_account_email()</a>, <a class="el" href="account_8php.html#aaff7720423417a4333697894ffd9ddeb">check_account_invite()</a>, <a class="el" href="account_8php.html#a144b4891022567668375b58ea61cfff0">check_account_password()</a>, <a class="el" href="connect_8php.html#a489f0a66c660de6ec4d6917b27674f07">connect_content()</a>, <a class="el" href="connections_8php.html#a1224058db8e3fb56463eb312f98e561d">connections_post()</a>, <a class="el" href="connedit_8php.html#a795acb3d9d841f55c255d7611681ab67">connedit_content()</a>, <a class="el" href="connedit_8php.html#a234c48426b652bf4d37053f2af329ac5">connedit_post()</a>, <a class="el" href="boot_8php.html#acc4e0c910af066148b810e5fde55fff1">construct_page()</a>, <a class="el" href="text_8php.html#ad6432621d0fafcbcf3d3b9b49bef7784">contact_block()</a>, <a class="el" href="acl__selectors_8php.html#a9476997d2968a5794f3723878ed89c91">contact_select()</a>, <a class="el" href="conversation_8php.html#affea1afb3f32ca41e966c8ddb4204d81">conversation()</a>, <a class="el" href="identity_8php.html#a345f4c943d84de502ec6e72d2c813945">create_identity()</a>, <a class="el" href="cronhooks_8php.html#a4c4c1bbec4ecc9a0efa00dd6afd2c0ca">cronhooks_run()</a>, <a class="el" href="mod_2directory_8php.html#aac79396570d759da2efac24fcedf5b44">directory_content()</a>, <a class="el" href="account_8php.html#a0d183a3cb4c67a0f5e906811df7a1fc9">downgrade_accounts()</a>, <a class="el" href="items_8php.html#a555762e1022a4b8e3c3abd32e7812408">drop_item()</a>, <a class="el" href="editblock_8php.html#abbe8f55de06967bc8d79d620509a49e6">editblock_content()</a>, <a class="el" href="editlayout_8php.html#aa877e4157a26b099de904164181dd386">editlayout_content()</a>, <a class="el" href="editpost_8php.html#a34011690864d122680c802e9e748ccfb">editpost_content()</a>, <a class="el" href="editwebpage_8php.html#a375e945255fad79a71036528f7480650">editwebpage_content()</a>, <a class="el" href="event_8php.html#a7378e839ac3de9d55579eb3ec48eaf92">event_store_item()</a>, <a class="el" href="externals_8php.html#a4df44079e6f915286088b7a0d44db926">externals_run()</a>, <a class="el" href="features_8php.html#a52b5bdfb61b256713efecf7a7b20b0c0">feature_enabled()</a>, <a class="el" href="profile__selectors_8php.html#ae2b2c087e6530c61c0b256fd26d52355">gender_selector()</a>, <a class="el" href="profile__selectors_8php.html#a8bfa1ca2d1598a3d65f1f9bb803ca816">gender_selector_min()</a>, <a class="el" href="text_8php.html#ae0333c304ec5b4b72e66bb2933fa7357">generate_map()</a>, <a class="el" href="text_8php.html#af5eb4a9c1599764f80c5bc71e0125d4b">generate_named_map()</a>, <a class="el" href="permissions_8php.html#aeca9b280f3dc3358c89976d81d690008">get_all_perms()</a>, <a class="el" href="items_8php.html#a5e5be7bf1f8257dec0b2647e60a3f3f1">get_atom_elements()</a>, <a class="el" href="features_8php.html#ae73c5b03b01c7284ed7e7e0e774e975c">get_features()</a>, <a class="el" href="items_8php.html#a04a35b610acfe54434df08adec39c0c7">get_feed_for()</a>, <a class="el" href="text_8php.html#a736db13a966b8abaf8c9198faa35911a">get_mood_verbs()</a>, <a class="el" href="permissions_8php.html#a040fd3d3b8517658b1668ae0cd093972">get_perms()</a>, <a class="el" href="text_8php.html#aa46f941155c2ac1155f2f17ffb0adb66">get_poke_verbs()</a>, <a class="el" href="permissions_8php.html#a9b5f5120566a3699a98efc5ccb0c59fe">get_role_perms()</a>, <a class="el" href="classItem.html#ad5dcbe0b94cb2d5719bc5b6bd8ad60c8">Item\get_template_data()</a>, <a class="el" href="classApp.html#a871898becd0697d778f36d9336253ae8">App\get_widgets()</a>, <a class="el" href="acl__selectors_8php.html#aa1e3bc344ca2b29f97eb9860216d21a0">group_select()</a>, <a class="el" href="home_8php.html#a6e3dbf78f4ed74ab2577de221190b33f">home_content()</a>, <a class="el" href="home_8php.html#ac4642c38b6f23a8d065dd4a75c620bde">home_init()</a>, <a class="el" href="hostxrd_8php.html#aa37ffc8e7900bc76c4828bd25916db92">hostxrd_init()</a>, <a class="el" href="html2bbcode_8php.html#a5ad726995ac4070213abdb3bd09f4837">html2bbcode()</a>, <a class="el" href="items_8php.html#ae73794179b62d39bb597ff670ab1c1e5">import_author_xchan()</a>, <a class="el" href="zot_8php.html#a20750dd2c36961013fd382fb34e1366c">import_directory_profile()</a>, <a class="el" href="zot_8php.html#a528e97ca5d69c3b7f35c5d954afde315">import_xchan()</a>, <a class="el" href="conversation_8php.html#aacbb12d372d5e9c3ab0735b4aea48fb3">item_photo_menu()</a>, <a class="el" href="item_8php.html#a693cd09805755ab85bbb5ecae69a48c3">item_post()</a>, <a class="el" href="items_8php.html#a2541e6861a56d145c9281877cc501615">item_store()</a>, <a class="el" href="items_8php.html#acf0bf7c9d21ac84f32effb754f7ad484">item_store_update()</a>, <a class="el" href="like_8php.html#a9d7dd268f21c21e9d29dd2aca2dd9538">like_content()</a>, <a class="el" href="text_8php.html#a4446c7f8996a280f7e08b7bfe6c6c8bc">list_smilies()</a>, <a class="el" href="boot_8php.html#aefecf8599036df7f1b95d6820e0e2fa4">login()</a>, <a class="el" href="magic_8php.html#acea2cc792849ca2d71d4b689f66518bf">magic_init()</a>, <a class="el" href="items_8php.html#a77da7ce9a117601d49ac4a67c71b514f">mail_store()</a>, <a class="el" href="profile__selectors_8php.html#a7473dd095987e1cdcc79d4f0bb5e6798">marital_selector()</a>, <a class="el" href="profile__selectors_8php.html#adc79715bd2e102b4583fb530749ec534">marital_selector_min()</a>, <a class="el" href="mood_8php.html#a7ae136dd7476865b4828136175db5022">mood_init()</a>, <a class="el" href="nav_8php.html#a43be0df73b90647ea70947ce004e231e">nav()</a>, <a class="el" href="mod_2network_8php.html#a43f2f29b90c5e29072c561934bc8f8b4">network_content()</a>, <a class="el" href="contact__selectors_8php.html#ad472e4716426dd1a9dd77b62962454be">network_to_name()</a>, <a class="el" href="include_2follow_8php.html#ae387d4ae097c23d69f3247e7f08140c7">new_contact()</a>, <a class="el" href="enotify_8php.html#a3e9a9355b243777c488d2a9883908dfc">notification()</a>, <a class="el" href="notifier_8php.html#a568c502f626cff95e344c0748938b85d">notifier_run()</a>, <a class="el" href="taxonomy_8php.html#a03f55ee46c5f496e42f3d29db8d09cce">obj_verbs()</a>, <a class="el" href="include_2oembed_8php.html#a98549b9af8140eda3eceaeedcaabc2c2">oembed_fetch_url()</a>, <a class="el" href="openid_8php.html#a9a13827dbcf61ae4e45f0b6b33a88f43">openid_content()</a>, <a class="el" href="parse__url_8php.html#a05a9e8944380ba3cf6bbf5893dd4b74b">parse_url_content()</a>, <a class="el" href="comanche_8php.html#af7150df735e5ff9d467994cd6f769c6e">pdl_selector()</a>, <a class="el" href="permissions_8php.html#a67ada9ed51e77885b6b0f6a28cee1835">perm_is_allowed()</a>, <a class="el" href="include_2photos_8php.html#a6c40ef58aefef705a5adc84a40e97109">photo_upload()</a>, <a class="el" href="mod_2photos_8php.html#aa87382611a66ec5effdb2d78f13f5812">photos_content()</a>, <a class="el" href="ping_8php.html#a77217b1b190b4c5d8770867b45f0c0a1">ping_init()</a>, <a class="el" href="poller_8php.html#a5f12df3a4738124b6c039971e87e76da">poller_run()</a>, <a class="el" href="acl__selectors_8php.html#ad25bba63a51a2b0b5b463efae50df528">populate_acl()</a>, <a class="el" href="items_8php.html#a410f9c743877c125ca06312373346903">post_activity_item()</a>, <a class="el" href="post_8php.html#af4b48181ce773ef0cdfc972441445c34">post_init()</a>, <a class="el" href="text_8php.html#ae4df74296fbe55051ed3c035e55205e5">prepare_body()</a>, <a class="el" href="include_2probe_8php.html#aa748dc73a6686c13826b1ee9d16c800d">probe_well_known()</a>, <a class="el" href="boot_8php.html#ab346a2ece14993861f3e4206befa94f0">proc_run()</a>, <a class="el" href="zot_8php.html#a0e3006e7a456b2175a9badc96bc5176d">process_delivery()</a>, <a class="el" href="profile_8php.html#a3775cf6eef6587e5143133356a7b76c0">profile_content()</a>, <a class="el" href="identity_8php.html#a432259b2cf5b6f59be53e71db9f2c7dc">profile_sidebar()</a>, <a class="el" href="profiles_8php.html#a46975783b8b8d70402d51487eb1f0b00">profiles_content()</a>, <a class="el" href="profiles_8php.html#ab0362c81b1d3b0b12a772b9fac446e04">profiles_post()</a>, <a class="el" href="text_8php.html#a9c6ce4e12a4ac883c5e3f36fed6e1e09">replace_macros()</a>, <a class="el" href="rmagic_8php.html#a869de069d081b3c4e98b957d06bbf08f">rmagic_post()</a>, <a class="el" href="settings_8php.html#aa7ee94d88ac088edb04ccf3a26de3586">settings_post()</a>, <a class="el" href="profile__selectors_8php.html#a3b50b3ea4ea4bdbebebfffc5d1b157c7">sexpref_selector()</a>, <a class="el" href="profile__selectors_8php.html#ab0eae5c0ceba77364469f0f580f0d074">sexpref_selector_min()</a>, <a class="el" href="siteinfo_8php.html#a70c09bfb6dd1c86a125a35f62ed53656">siteinfo_content()</a>, <a class="el" href="subthread_8php.html#a50368f3d825b77996030528e7fbfa3d3">subthread_content()</a>, <a class="el" href="items_8php.html#ab1bce4261bcf75ad62753b498a144d17">tag_deliver()</a>, <a class="el" href="identity_8php.html#af2802bc13a00a17b867bba7978ba8f58">validate_channelname()</a>, <a class="el" href="wfinger_8php.html#ae21e50c8d0a5f3c9be9f43a4e519acd3">wfinger_init()</a>, <a class="el" href="widgets_8php.html#add9b24d3304e529a7975e96122315554">widget_affinity()</a>, <a class="el" href="xrd_8php.html#aee3cf087968e4a0ff3a87de16eb23270">xrd_init()</a>, <a class="el" href="zfinger_8php.html#a8139b83a22ef98869adc10aa224027a0">zfinger_init()</a>, <a class="el" href="identity_8php.html#a5b815330f3d177ab383af37a6c12e532">zid()</a>, and <a class="el" href="identity_8php.html#a680fbafc2db023c5b1309e0180e81315">zid_init()</a>.</p>
</div>
</div>
@@ -308,7 +298,7 @@ Functions</h2></td></tr>
</table>
</div><div class="memdoc">
-<p>Referenced by <a class="el" href="admin_8php.html#afef415e4011607fbb665610441595015">admin_content()</a>, <a class="el" href="admin_8php.html#ad6f87a764fd35f522c7b4c351d7878ec">admin_page_channels()</a>, <a class="el" href="admin_8php.html#aaa6addf2dbc3f3fcf99244a56b41eade">admin_page_dbsync()</a>, <a class="el" href="admin_8php.html#a6943543f3138f6ee182cb701f415d1cc">admin_page_hubloc()</a>, <a class="el" href="admin_8php.html#a1d1362698af14d209aa3a0fb655551dd">admin_page_logs()</a>, <a class="el" href="admin_8php.html#a54128076986ba80c4a103de3fc3e19a8">admin_page_plugins()</a>, <a class="el" href="admin_8php.html#ac0f3bd12431c056aad77bac9d09fa30e">admin_page_site()</a>, <a class="el" href="admin_8php.html#ac6e95b920b5abd030cc522964987087a">admin_page_summary()</a>, <a class="el" href="admin_8php.html#af124619fdc278fe2bf14c45ddaa260fb">admin_page_themes()</a>, <a class="el" href="admin_8php.html#a62f10f90c47686c9c3c37c4c03a108d2">admin_page_users()</a>, <a class="el" href="identity_8php.html#aa870d2c1f558cfd52bef05bc124e8fa4">advanced_profile()</a>, <a class="el" href="text_8php.html#a75c243e06341ec16bd5a44b9b1cacd85">alt_pager()</a>, <a class="el" href="include_2api_8php.html#a5990101034e7abf6404feba3cd273629">api_apply_template()</a>, <a class="el" href="mod_2api_8php.html#a33315b5bbf5418f6850b2038107b526d">api_content()</a>, <a class="el" href="include_2apps_8php.html#a1b2e737f477a2e0d9d11ef14adc5aa66">app_render()</a>, <a class="el" href="appman_8php.html#af48805ac2f6f123f2681a8ae1c6f123f">appman_content()</a>, <a class="el" href="mod_2apps_8php.html#a546016cb960d0b110ee8e489dfa6c27c">apps_content()</a>, <a class="el" href="view_2theme_2apw_2php_2config_8php.html#ad59fc09da66b66267f9753c8b2dd68d0">apw_form()</a>, <a class="el" href="blocks_8php.html#a2531a8fd51db3cecb2eb20c002c66e12">blocks_content()</a>, <a class="el" href="view_2theme_2blogga_2php_2config_8php.html#a8a311a402d3e746ce53fadc38e4b2d27">blogtheme_form()</a>, <a class="el" href="classApp.html#a08f0537964d98958d218066364cff785">App\build_pagehead()</a>, <a class="el" href="contact__widgets_8php.html#a165eb021e61c4dcab2a552f28628d353">categories_widget()</a>, <a class="el" href="channel_8php.html#a9c6a6179e0e626398ebecc6151905ef1">channel_content()</a>, <a class="el" href="mod_2chat_8php.html#a8b0b8bee6fef6477e8c64c5e951b1b4f">chat_content()</a>, <a class="el" href="setup_8php.html#a14d208682a88632290c895d20da6e7d6">check_php()</a>, <a class="el" href="common_8php.html#ab63408f39abef7a6915186e8dabc5a96">common_content()</a>, <a class="el" href="contact__widgets_8php.html#a552f8544528cec0c995cea7287ea9d65">common_friends_visitor_widget()</a>, <a class="el" href="connect_8php.html#a489f0a66c660de6ec4d6917b27674f07">connect_content()</a>, <a class="el" href="connections_8php.html#aec2e457420fce3e3bf6a9f48e36df25c">connections_content()</a>, <a class="el" href="connedit_8php.html#a795acb3d9d841f55c255d7611681ab67">connedit_content()</a>, <a class="el" href="boot_8php.html#acc4e0c910af066148b810e5fde55fff1">construct_page()</a>, <a class="el" href="text_8php.html#ad6432621d0fafcbcf3d3b9b49bef7784">contact_block()</a>, <a class="el" href="conversation_8php.html#affea1afb3f32ca41e966c8ddb4204d81">conversation()</a>, <a class="el" href="delegate_8php.html#a943eea8996ef348eb845c498f9f354dd">delegate_content()</a>, <a class="el" href="text_8php.html#a87a3cefc603302c78982f1d8e1245265">design_tools()</a>, <a class="el" href="dir__fns_8php.html#acf621621e929d49441da30aad76a58cf">dir_safe_mode()</a>, <a class="el" href="dir__fns_8php.html#ae56881d69bb6f8e828c9e35454386774">dir_sort_links()</a>, <a class="el" href="mod_2directory_8php.html#aac79396570d759da2efac24fcedf5b44">directory_content()</a>, <a class="el" href="dirprofile_8php.html#a3e1d30d3d93863ff5615f2df4ac7f052">dirprofile_init()</a>, <a class="el" href="display_8php.html#a37137c98d47bf3306f4c2bb9f5b60de0">display_content()</a>, <a class="el" href="editblock_8php.html#abbe8f55de06967bc8d79d620509a49e6">editblock_content()</a>, <a class="el" href="editlayout_8php.html#aa877e4157a26b099de904164181dd386">editlayout_content()</a>, <a class="el" href="editpost_8php.html#a34011690864d122680c802e9e748ccfb">editpost_content()</a>, <a class="el" href="editwebpage_8php.html#a375e945255fad79a71036528f7480650">editwebpage_content()</a>, <a class="el" href="events_8php.html#a1d293fb217ae6bc9e3858c4b32e363ec">events_content()</a>, <a class="el" href="fbrowser_8php.html#aee476addcf7a3e0fe9454f7dfd5a56c4">fbrowser_content()</a>, <a class="el" href="datetime_8php.html#a03900dcf0f9e3c58793a031673a70326">field_timezone()</a>, <a class="el" href="contact__widgets_8php.html#a1eda66319d170f60a8d07c7ece95533b">fileas_widget()</a>, <a class="el" href="filer_8php.html#a5fd5d7e61b2f9c43cb5f110c89dc4274">filer_content()</a>, <a class="el" href="filestorage_8php.html#a61bb1be78472555df4ce619f51014040">filestorage_content()</a>, <a class="el" href="contact__widgets_8php.html#a57e73ebcfd62bb5d8c7a7b9e663726d6">findpeople_widget()</a>, <a class="el" href="text_8php.html#a3054189cff173977f4216c9a3dd29e1b">format_categories()</a>, <a class="el" href="text_8php.html#a4e4d42b0a805148d9f9a92bcac89bf91">format_filer()</a>, <a class="el" href="classRedBrowser.html#a1f7daf50bb9bfcde7345b3b1908dbd7e">RedBrowser\generateDirectoryIndex()</a>, <a class="el" href="identity_8php.html#ad2c97627a313d53df1a1c7b4215ddb51">get_birthdays()</a>, <a class="el" href="classItem.html#a3ee7667c2ec6cd7657328e27848c0bdf">Item\get_comment_box()</a>, <a class="el" href="identity_8php.html#ae381db3d43f8e7c1da8b15d14ecf5312">get_events()</a>, <a class="el" href="items_8php.html#a04a35b610acfe54434df08adec39c0c7">get_feed_for()</a>, <a class="el" href="mod_2group_8php.html#a07a64f6c65b0080d8190b3d9728a7a83">group_content()</a>, <a class="el" href="include_2group_8php.html#a6a69bd7be032fa8ce4e49c43a42cc6e9">group_side()</a>, <a class="el" href="help_8php.html#af055e15f600ffa6fbca9386fdf715224">help_content()</a>, <a class="el" href="hostxrd_8php.html#aa37ffc8e7900bc76c4828bd25916db92">hostxrd_init()</a>, <a class="el" href="classRedBrowser.html#a7f6bf0bda07833f4c647557bd172e349">RedBrowser\htmlActionsPanel()</a>, <a class="el" href="identity_8php.html#a2ab5172eabd375869060c9ad68323f5c">identity_selector()</a>, <a class="el" href="import_8php.html#afdf25ed70096d5dbf4f6d0ca79fea184">import_content()</a>, <a class="el" href="invite_8php.html#a244385b28cfd021d308715f01158bfd9">invite_content()</a>, <a class="el" href="text_8php.html#a71f6952243d3fe1c5a8154f78027e29c">lang_selector()</a>, <a class="el" href="layouts_8php.html#a6e0193759ad9eef76d3df2db24237b50">layouts_content()</a>, <a class="el" href="boot_8php.html#aefecf8599036df7f1b95d6820e0e2fa4">login()</a>, <a class="el" href="lostpass_8php.html#a0314d94e48c789b1b3a201d740c9eab3">lostpass_content()</a>, <a class="el" href="mail_8php.html#a3c7c485fc69f92371e8b20936040eca1">mail_content()</a>, <a class="el" href="manage_8php.html#a2bca247b5296827638959138367db4f5">manage_content()</a>, <a class="el" href="match_8php.html#a1dd853e959b9e70c1911bb2fb5f5130d">match_content()</a>, <a class="el" href="mod_2menu_8php.html#a6fed23af14d71a78a4153c8363a685cf">menu_content()</a>, <a class="el" href="include_2menu_8php.html#a03a5deed3908543581c074ce333e9d6a">menu_render()</a>, <a class="el" href="mod_2message_8php.html#ac72dfed3ce08fcb331d66b37edc6e15f">message_content()</a>, <a class="el" href="text_8php.html#a2a902f5fdba8646333e997898ac45ea3">micropro()</a>, <a class="el" href="include_2group_8php.html#ab0e422a0f31c0c64fd9084ca03d85f32">mini_group_select()</a>, <a class="el" href="mitem_8php.html#a7a31b702ecad18eeb6a38b243ff0037e">mitem_content()</a>, <a class="el" href="mood_8php.html#a721b9b6703b3234a005641c92d409b8f">mood_content()</a>, <a class="el" href="nav_8php.html#a43be0df73b90647ea70947ce004e231e">nav()</a>, <a class="el" href="mod_2network_8php.html#a43f2f29b90c5e29072c561934bc8f8b4">network_content()</a>, <a class="el" href="new__channel_8php.html#ae585191610f79da129492482ce8e2fee">new_channel_content()</a>, <a class="el" href="enotify_8php.html#a3e9a9355b243777c488d2a9883908dfc">notification()</a>, <a class="el" href="notifications_8php.html#aadd0b5525bd8c283a5d8a37982bbfe62">notifications_content()</a>, <a class="el" href="mod_2notify_8php.html#acdf3851688ebd6d6a575eb84ef9febe3">notify_content()</a>, <a class="el" href="include_2oembed_8php.html#a26bb4c1e330d2f94ea7b6ce2fe970cf3">oembed_format_object()</a>, <a class="el" href="oexchange_8php.html#ac8e2e469ddc3db984b0c1b44558aca59">oexchange_init()</a>, <a class="el" href="opensearch_8php.html#ad13034877a496565ac7d99e9fc6f55e9">opensearch_init()</a>, <a class="el" href="page__widgets_8php.html#a39d547771c5f12a17c097436c82f0fa2">pagelist_widget()</a>, <a class="el" href="pdledit_8php.html#a59cb550f6b7a4e7d8196fbc9de601619">pdledit_content()</a>, <a class="el" href="include_2photos_8php.html#af24c6aeed28ecc31ec39e7d9a1804979">photos_album_widget()</a>, <a class="el" href="mod_2photos_8php.html#aa87382611a66ec5effdb2d78f13f5812">photos_content()</a>, <a class="el" href="poco_8php.html#a53def16f75e3d41f1d2bb7cfa4905498">poco_init()</a>, <a class="el" href="poke_8php.html#ac9190563a8da9c07a16f9dcd71cf6993">poke_content()</a>, <a class="el" href="acl__selectors_8php.html#ad25bba63a51a2b0b5b463efae50df528">populate_acl()</a>, <a class="el" href="identity_8php.html#a432259b2cf5b6f59be53e71db9f2c7dc">profile_sidebar()</a>, <a class="el" href="profiles_8php.html#a46975783b8b8d70402d51487eb1f0b00">profiles_content()</a>, <a class="el" href="rbmark_8php.html#a43fec4960b50926251574762cc491f76">rbmark_content()</a>, <a class="el" href="view_2theme_2redbasic_2php_2config_8php.html#a8574a41fa9735ee391ba57ab24b93793">redbasic_form()</a>, <a class="el" href="register_8php.html#a0e91f57f111407ea8d3223a05022bb2a">register_content()</a>, <a class="el" href="removeme_8php.html#a065a589caa2aa84c60f7073a28f0ad9c">removeme_content()</a>, <a class="el" href="rmagic_8php.html#a3e28db1e5cfa7e5c2617f90222c1caef">rmagic_content()</a>, <a class="el" href="rpost_8php.html#a8190354d789000806d9879aea276728f">rpost_content()</a>, <a class="el" href="search_8php.html#ab2568591359edde5b483a6cd9a24b2cc">search_content()</a>, <a class="el" href="setup_8php.html#a88247384a96e14516f474d7af6a465c1">setup_content()</a>, <a class="el" href="siteinfo_8php.html#a70c09bfb6dd1c86a125a35f62ed53656">siteinfo_content()</a>, <a class="el" href="sources_8php.html#ac442ccef080ab95772d8929fcafcb4b7">sources_content()</a>, <a class="el" href="suggest_8php.html#a58748a8235d4523f8333847f3e42dd91">suggest_content()</a>, <a class="el" href="text_8php.html#af9c9ac3f74c82dc60acfa404d0e9dc53">theme_attachments()</a>, <a class="el" href="thing_8php.html#a24a35f1e64029a67fdbea94a776ae04b">thing_content()</a>, <a class="el" href="Contact_8php.html#a6348a532c9d26cd1c9afbc9aa6aa8960">vcard_from_xchan()</a>, <a class="el" href="viewconnections_8php.html#ab6c4d983e97b3a8a879567ff76507776">viewconnections_content()</a>, <a class="el" href="vote_8php.html#a6aa67489bf458ca5e3206e46dac68596">vote_content()</a>, <a class="el" href="webpages_8php.html#af3b7397d4abc153e3d2147740ee1a41d">webpages_content()</a>, <a class="el" href="widgets_8php.html#add9b24d3304e529a7975e96122315554">widget_affinity()</a>, <a class="el" href="widgets_8php.html#aced5cb177f630b30799c5eab873ee75c">widget_appselect()</a>, <a class="el" href="widgets_8php.html#a7b1e357b5a2027718470b77ec921fc65">widget_archive()</a>, <a class="el" href="widgets_8php.html#a0e2f5179ed1a73b282dfda7270fcabb3">widget_bookmarkedchats()</a>, <a class="el" href="widgets_8php.html#a47c72aac42058ea086c9ef8651c259da">widget_chatroom_list()</a>, <a class="el" href="widgets_8php.html#a5ab3b64496e02cab56429978ad55f1c0">widget_filer()</a>, <a class="el" href="widgets_8php.html#ad1bf7aa69e8d100d95faba17c7bc91cd">widget_follow()</a>, <a class="el" href="widgets_8php.html#afa2e55a78f95667a6da082efac7fec74">widget_mailmenu()</a>, <a class="el" href="widgets_8php.html#a45ea061dabe9a8372e4ca3b9e5714256">widget_notes()</a>, <a class="el" href="widgets_8php.html#a94203eb9bcd63cbdecbbcb15163598d8">widget_savedsearch()</a>, <a class="el" href="widgets_8php.html#aaa73bcf1702eaadd9dcd253502f55e01">widget_settings_menu()</a>, <a class="el" href="widgets_8php.html#a50b1410238100c8a94c06b0aa63ee3b8">widget_suggestedchats()</a>, <a class="el" href="widgets_8php.html#a0d404276fedc59f5038cf5c085028326">widget_suggestions()</a>, <a class="el" href="page__widgets_8php.html#a1a1e729da27f252cab6678288a17958f">writepages_widget()</a>, and <a class="el" href="xrd_8php.html#aee3cf087968e4a0ff3a87de16eb23270">xrd_init()</a>.</p>
+<p>Referenced by <a class="el" href="achievements_8php.html#a35ae04ada0e227d19671f289a32fb30e">achievements_content()</a>, <a class="el" href="admin_8php.html#afef415e4011607fbb665610441595015">admin_content()</a>, <a class="el" href="admin_8php.html#ad6f87a764fd35f522c7b4c351d7878ec">admin_page_channels()</a>, <a class="el" href="admin_8php.html#aaa6addf2dbc3f3fcf99244a56b41eade">admin_page_dbsync()</a>, <a class="el" href="admin_8php.html#a6943543f3138f6ee182cb701f415d1cc">admin_page_hubloc()</a>, <a class="el" href="admin_8php.html#a1d1362698af14d209aa3a0fb655551dd">admin_page_logs()</a>, <a class="el" href="admin_8php.html#a54128076986ba80c4a103de3fc3e19a8">admin_page_plugins()</a>, <a class="el" href="admin_8php.html#a3deba594ca1e11694eac1de0b724ef0a">admin_page_profs()</a>, <a class="el" href="admin_8php.html#ac0f3bd12431c056aad77bac9d09fa30e">admin_page_site()</a>, <a class="el" href="admin_8php.html#ac6e95b920b5abd030cc522964987087a">admin_page_summary()</a>, <a class="el" href="admin_8php.html#af124619fdc278fe2bf14c45ddaa260fb">admin_page_themes()</a>, <a class="el" href="admin_8php.html#a62f10f90c47686c9c3c37c4c03a108d2">admin_page_users()</a>, <a class="el" href="identity_8php.html#aa870d2c1f558cfd52bef05bc124e8fa4">advanced_profile()</a>, <a class="el" href="text_8php.html#a75c243e06341ec16bd5a44b9b1cacd85">alt_pager()</a>, <a class="el" href="include_2api_8php.html#a5990101034e7abf6404feba3cd273629">api_apply_template()</a>, <a class="el" href="mod_2api_8php.html#a33315b5bbf5418f6850b2038107b526d">api_content()</a>, <a class="el" href="include_2apps_8php.html#a1b2e737f477a2e0d9d11ef14adc5aa66">app_render()</a>, <a class="el" href="appman_8php.html#af48805ac2f6f123f2681a8ae1c6f123f">appman_content()</a>, <a class="el" href="mod_2apps_8php.html#a546016cb960d0b110ee8e489dfa6c27c">apps_content()</a>, <a class="el" href="view_2theme_2apw_2php_2config_8php.html#ad59fc09da66b66267f9753c8b2dd68d0">apw_form()</a>, <a class="el" href="blocks_8php.html#a2531a8fd51db3cecb2eb20c002c66e12">blocks_content()</a>, <a class="el" href="classApp.html#a08f0537964d98958d218066364cff785">App\build_pagehead()</a>, <a class="el" href="contact__widgets_8php.html#a165eb021e61c4dcab2a552f28628d353">categories_widget()</a>, <a class="el" href="channel_8php.html#a9c6a6179e0e626398ebecc6151905ef1">channel_content()</a>, <a class="el" href="mod_2chat_8php.html#a8b0b8bee6fef6477e8c64c5e951b1b4f">chat_content()</a>, <a class="el" href="setup_8php.html#a14d208682a88632290c895d20da6e7d6">check_php()</a>, <a class="el" href="common_8php.html#ab63408f39abef7a6915186e8dabc5a96">common_content()</a>, <a class="el" href="contact__widgets_8php.html#a552f8544528cec0c995cea7287ea9d65">common_friends_visitor_widget()</a>, <a class="el" href="connect_8php.html#a489f0a66c660de6ec4d6917b27674f07">connect_content()</a>, <a class="el" href="connections_8php.html#aec2e457420fce3e3bf6a9f48e36df25c">connections_content()</a>, <a class="el" href="connedit_8php.html#a795acb3d9d841f55c255d7611681ab67">connedit_content()</a>, <a class="el" href="boot_8php.html#acc4e0c910af066148b810e5fde55fff1">construct_page()</a>, <a class="el" href="text_8php.html#ad6432621d0fafcbcf3d3b9b49bef7784">contact_block()</a>, <a class="el" href="conversation_8php.html#affea1afb3f32ca41e966c8ddb4204d81">conversation()</a>, <a class="el" href="delegate_8php.html#a943eea8996ef348eb845c498f9f354dd">delegate_content()</a>, <a class="el" href="text_8php.html#a87a3cefc603302c78982f1d8e1245265">design_tools()</a>, <a class="el" href="diaspora_8php.html#af4698b165766f83d89ec1ea964bc92cc">diaspora_send_followup()</a>, <a class="el" href="diaspora_8php.html#ae6f52efd81fe515cd9912bc8293abf5b">diaspora_send_images()</a>, <a class="el" href="diaspora_8php.html#aeb2bb78f620dbf51d9335e6eb7444f2c">diaspora_send_mail()</a>, <a class="el" href="diaspora_8php.html#a0b3628a5e53332c3d3196b689fe2b94d">diaspora_send_relay()</a>, <a class="el" href="diaspora_8php.html#a1704748aa2384c73e43f10e71defd31a">diaspora_send_retraction()</a>, <a class="el" href="diaspora_8php.html#a33ae0c4606a7df4d801c05507d87f668">diaspora_send_status()</a>, <a class="el" href="diaspora_8php.html#a69f250b078a46e405647428ec3399a16">diaspora_share()</a>, <a class="el" href="diaspora_8php.html#ab736d6f32b5de31c97cb579fc730e200">diaspora_unshare()</a>, <a class="el" href="dir__fns_8php.html#acf621621e929d49441da30aad76a58cf">dir_safe_mode()</a>, <a class="el" href="dir__fns_8php.html#ae56881d69bb6f8e828c9e35454386774">dir_sort_links()</a>, <a class="el" href="mod_2directory_8php.html#aac79396570d759da2efac24fcedf5b44">directory_content()</a>, <a class="el" href="display_8php.html#a37137c98d47bf3306f4c2bb9f5b60de0">display_content()</a>, <a class="el" href="editblock_8php.html#abbe8f55de06967bc8d79d620509a49e6">editblock_content()</a>, <a class="el" href="editlayout_8php.html#aa877e4157a26b099de904164181dd386">editlayout_content()</a>, <a class="el" href="editpost_8php.html#a34011690864d122680c802e9e748ccfb">editpost_content()</a>, <a class="el" href="editwebpage_8php.html#a375e945255fad79a71036528f7480650">editwebpage_content()</a>, <a class="el" href="events_8php.html#a1d293fb217ae6bc9e3858c4b32e363ec">events_content()</a>, <a class="el" href="fbrowser_8php.html#aee476addcf7a3e0fe9454f7dfd5a56c4">fbrowser_content()</a>, <a class="el" href="contact__widgets_8php.html#a1eda66319d170f60a8d07c7ece95533b">fileas_widget()</a>, <a class="el" href="filer_8php.html#a5fd5d7e61b2f9c43cb5f110c89dc4274">filer_content()</a>, <a class="el" href="filestorage_8php.html#a61bb1be78472555df4ce619f51014040">filestorage_content()</a>, <a class="el" href="contact__widgets_8php.html#a57e73ebcfd62bb5d8c7a7b9e663726d6">findpeople_widget()</a>, <a class="el" href="text_8php.html#a3054189cff173977f4216c9a3dd29e1b">format_categories()</a>, <a class="el" href="text_8php.html#a4e4d42b0a805148d9f9a92bcac89bf91">format_filer()</a>, <a class="el" href="classRedMatrix_1_1RedDAV_1_1RedBrowser.html#af764d5f14df751f9ec86c34fab300c09">RedMatrix\RedDAV\RedBrowser\generateDirectoryIndex()</a>, <a class="el" href="identity_8php.html#ad2c97627a313d53df1a1c7b4215ddb51">get_birthdays()</a>, <a class="el" href="classItem.html#a3ee7667c2ec6cd7657328e27848c0bdf">Item\get_comment_box()</a>, <a class="el" href="identity_8php.html#ae381db3d43f8e7c1da8b15d14ecf5312">get_events()</a>, <a class="el" href="items_8php.html#a04a35b610acfe54434df08adec39c0c7">get_feed_for()</a>, <a class="el" href="mod_2group_8php.html#a07a64f6c65b0080d8190b3d9728a7a83">group_content()</a>, <a class="el" href="include_2group_8php.html#a6a69bd7be032fa8ce4e49c43a42cc6e9">group_side()</a>, <a class="el" href="help_8php.html#af055e15f600ffa6fbca9386fdf715224">help_content()</a>, <a class="el" href="home_8php.html#a6e3dbf78f4ed74ab2577de221190b33f">home_content()</a>, <a class="el" href="hostxrd_8php.html#aa37ffc8e7900bc76c4828bd25916db92">hostxrd_init()</a>, <a class="el" href="classRedMatrix_1_1RedDAV_1_1RedBrowser.html#a3bd98af2d1cdfd8f26deb914596176cf">RedMatrix\RedDAV\RedBrowser\htmlActionsPanel()</a>, <a class="el" href="identity_8php.html#a2ab5172eabd375869060c9ad68323f5c">identity_selector()</a>, <a class="el" href="import_8php.html#afdf25ed70096d5dbf4f6d0ca79fea184">import_content()</a>, <a class="el" href="invite_8php.html#a244385b28cfd021d308715f01158bfd9">invite_content()</a>, <a class="el" href="text_8php.html#a71f6952243d3fe1c5a8154f78027e29c">lang_selector()</a>, <a class="el" href="layouts_8php.html#a6e0193759ad9eef76d3df2db24237b50">layouts_content()</a>, <a class="el" href="locs_8php.html#a6c900f53970c0d0e738d2fe06d27ca44">locs_content()</a>, <a class="el" href="boot_8php.html#aefecf8599036df7f1b95d6820e0e2fa4">login()</a>, <a class="el" href="lostpass_8php.html#a0314d94e48c789b1b3a201d740c9eab3">lostpass_content()</a>, <a class="el" href="mail_8php.html#a3c7c485fc69f92371e8b20936040eca1">mail_content()</a>, <a class="el" href="manage_8php.html#a2bca247b5296827638959138367db4f5">manage_content()</a>, <a class="el" href="match_8php.html#a1dd853e959b9e70c1911bb2fb5f5130d">match_content()</a>, <a class="el" href="mod_2menu_8php.html#a6fed23af14d71a78a4153c8363a685cf">menu_content()</a>, <a class="el" href="include_2menu_8php.html#a03a5deed3908543581c074ce333e9d6a">menu_render()</a>, <a class="el" href="mod_2message_8php.html#ac72dfed3ce08fcb331d66b37edc6e15f">message_content()</a>, <a class="el" href="text_8php.html#a2a902f5fdba8646333e997898ac45ea3">micropro()</a>, <a class="el" href="include_2group_8php.html#ab0e422a0f31c0c64fd9084ca03d85f32">mini_group_select()</a>, <a class="el" href="mitem_8php.html#a7a31b702ecad18eeb6a38b243ff0037e">mitem_content()</a>, <a class="el" href="mood_8php.html#a721b9b6703b3234a005641c92d409b8f">mood_content()</a>, <a class="el" href="nav_8php.html#a43be0df73b90647ea70947ce004e231e">nav()</a>, <a class="el" href="mod_2network_8php.html#a43f2f29b90c5e29072c561934bc8f8b4">network_content()</a>, <a class="el" href="new__channel_8php.html#ae585191610f79da129492482ce8e2fee">new_channel_content()</a>, <a class="el" href="enotify_8php.html#a3e9a9355b243777c488d2a9883908dfc">notification()</a>, <a class="el" href="notifications_8php.html#aadd0b5525bd8c283a5d8a37982bbfe62">notifications_content()</a>, <a class="el" href="mod_2notify_8php.html#acdf3851688ebd6d6a575eb84ef9febe3">notify_content()</a>, <a class="el" href="include_2oembed_8php.html#a26bb4c1e330d2f94ea7b6ce2fe970cf3">oembed_format_object()</a>, <a class="el" href="oexchange_8php.html#ac8e2e469ddc3db984b0c1b44558aca59">oexchange_init()</a>, <a class="el" href="opensearch_8php.html#ad13034877a496565ac7d99e9fc6f55e9">opensearch_init()</a>, <a class="el" href="p_8php.html#af9d5530ca0b3dc9409cf591c39e2480e">p_init()</a>, <a class="el" href="page__widgets_8php.html#a39d547771c5f12a17c097436c82f0fa2">pagelist_widget()</a>, <a class="el" href="pdledit_8php.html#a59cb550f6b7a4e7d8196fbc9de601619">pdledit_content()</a>, <a class="el" href="include_2photos_8php.html#af24c6aeed28ecc31ec39e7d9a1804979">photos_album_widget()</a>, <a class="el" href="mod_2photos_8php.html#aa87382611a66ec5effdb2d78f13f5812">photos_content()</a>, <a class="el" href="poco_8php.html#a53def16f75e3d41f1d2bb7cfa4905498">poco_init()</a>, <a class="el" href="poke_8php.html#ac9190563a8da9c07a16f9dcd71cf6993">poke_content()</a>, <a class="el" href="poll_8php.html#a3314c26bd2ac0ed831cebf3315cd3263">poll_content()</a>, <a class="el" href="acl__selectors_8php.html#ad25bba63a51a2b0b5b463efae50df528">populate_acl()</a>, <a class="el" href="identity_8php.html#a432259b2cf5b6f59be53e71db9f2c7dc">profile_sidebar()</a>, <a class="el" href="profiles_8php.html#a46975783b8b8d70402d51487eb1f0b00">profiles_content()</a>, <a class="el" href="rbmark_8php.html#a43fec4960b50926251574762cc491f76">rbmark_content()</a>, <a class="el" href="view_2theme_2redbasic_2php_2config_8php.html#a8574a41fa9735ee391ba57ab24b93793">redbasic_form()</a>, <a class="el" href="register_8php.html#a0e91f57f111407ea8d3223a05022bb2a">register_content()</a>, <a class="el" href="removeaccount_8php.html#a516e7380b9e5796054aa8245f3509695">removeaccount_content()</a>, <a class="el" href="removeme_8php.html#a065a589caa2aa84c60f7073a28f0ad9c">removeme_content()</a>, <a class="el" href="rmagic_8php.html#a3e28db1e5cfa7e5c2617f90222c1caef">rmagic_content()</a>, <a class="el" href="rpost_8php.html#a8190354d789000806d9879aea276728f">rpost_content()</a>, <a class="el" href="text_8php.html#a876e94892867019935b348b573299352">search()</a>, <a class="el" href="search_8php.html#ab2568591359edde5b483a6cd9a24b2cc">search_content()</a>, <a class="el" href="text_8php.html#aae91e4d2a2c6f7a9daccd2c186ae3447">searchbox()</a>, <a class="el" href="setup_8php.html#a88247384a96e14516f474d7af6a465c1">setup_content()</a>, <a class="el" href="siteinfo_8php.html#a70c09bfb6dd1c86a125a35f62ed53656">siteinfo_content()</a>, <a class="el" href="sources_8php.html#ac442ccef080ab95772d8929fcafcb4b7">sources_content()</a>, <a class="el" href="suggest_8php.html#a58748a8235d4523f8333847f3e42dd91">suggest_content()</a>, <a class="el" href="text_8php.html#af9c9ac3f74c82dc60acfa404d0e9dc53">theme_attachments()</a>, <a class="el" href="thing_8php.html#a24a35f1e64029a67fdbea94a776ae04b">thing_content()</a>, <a class="el" href="uexport_8php.html#ae6f79d60916c01675c8cf663cb5fec84">uexport_content()</a>, <a class="el" href="Contact_8php.html#a6348a532c9d26cd1c9afbc9aa6aa8960">vcard_from_xchan()</a>, <a class="el" href="viewconnections_8php.html#ab6c4d983e97b3a8a879567ff76507776">viewconnections_content()</a>, <a class="el" href="vote_8php.html#a6aa67489bf458ca5e3206e46dac68596">vote_content()</a>, <a class="el" href="webpages_8php.html#af3b7397d4abc153e3d2147740ee1a41d">webpages_content()</a>, <a class="el" href="widgets_8php.html#add9b24d3304e529a7975e96122315554">widget_affinity()</a>, <a class="el" href="widgets_8php.html#aced5cb177f630b30799c5eab873ee75c">widget_appselect()</a>, <a class="el" href="widgets_8php.html#a7b1e357b5a2027718470b77ec921fc65">widget_archive()</a>, <a class="el" href="widgets_8php.html#a0e2f5179ed1a73b282dfda7270fcabb3">widget_bookmarkedchats()</a>, <a class="el" href="widgets_8php.html#a47c72aac42058ea086c9ef8651c259da">widget_chatroom_list()</a>, <a class="el" href="widgets_8php.html#a5ab3b64496e02cab56429978ad55f1c0">widget_filer()</a>, <a class="el" href="widgets_8php.html#ad1bf7aa69e8d100d95faba17c7bc91cd">widget_follow()</a>, <a class="el" href="widgets_8php.html#afa2e55a78f95667a6da082efac7fec74">widget_mailmenu()</a>, <a class="el" href="widgets_8php.html#a45ea061dabe9a8372e4ca3b9e5714256">widget_notes()</a>, <a class="el" href="widgets_8php.html#a94203eb9bcd63cbdecbbcb15163598d8">widget_savedsearch()</a>, <a class="el" href="widgets_8php.html#aaa73bcf1702eaadd9dcd253502f55e01">widget_settings_menu()</a>, <a class="el" href="widgets_8php.html#a50b1410238100c8a94c06b0aa63ee3b8">widget_suggestedchats()</a>, <a class="el" href="widgets_8php.html#a0d404276fedc59f5038cf5c085028326">widget_suggestions()</a>, <a class="el" href="page__widgets_8php.html#a1a1e729da27f252cab6678288a17958f">writepages_widget()</a>, and <a class="el" href="xrd_8php.html#aee3cf087968e4a0ff3a87de16eb23270">xrd_init()</a>.</p>
</div>
</div>
@@ -726,8 +716,6 @@ Functions</h2></td></tr>
</dl>
<dl class="section return"><dt>Returns</dt><dd>mixed|bool </dd></dl>
-<p>Referenced by <a class="el" href="blogga_2view_2theme_2blog_2theme_8php.html#aae58cc837fe56473d9f3370abfe533ae">blog_install()</a>.</p>
-
</div>
</div>
<a class="anchor" id="af9ac19004dca49adae1ac7a0d9f3b025"></a>
@@ -764,68 +752,6 @@ Functions</h2></td></tr>
</div>
</div>
-<a class="anchor" id="a030cec6793b909c439c0336ba39b1571"></a>
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">service_class_allows </td>
- <td>(</td>
- <td class="paramtype">&#160;</td>
- <td class="paramname"><em>$uid</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">&#160;</td>
- <td class="paramname"><em>$property</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">&#160;</td>
- <td class="paramname"><em>$usage</em> = <code>false</code>&#160;</td>
- </tr>
- <tr>
- <td></td>
- <td>)</td>
- <td></td><td></td>
- </tr>
- </table>
-</div><div class="memdoc">
-
-<p>Referenced by <a class="el" href="identity_8php.html#ac9fcd5c4c371998790b5c55c3d0f4633">identity_check_service_class()</a>, <a class="el" href="item_8php.html#a5b1b36cb301a94b38150074f0d424e74">item_check_service_class()</a>, and <a class="el" href="include_2follow_8php.html#ae387d4ae097c23d69f3247e7f08140c7">new_contact()</a>.</p>
-
-</div>
-</div>
-<a class="anchor" id="a905b54e10704b283ac64680a8abc0971"></a>
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">service_class_fetch </td>
- <td>(</td>
- <td class="paramtype">&#160;</td>
- <td class="paramname"><em>$uid</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">&#160;</td>
- <td class="paramname"><em>$property</em>&#160;</td>
- </tr>
- <tr>
- <td></td>
- <td>)</td>
- <td></td><td></td>
- </tr>
- </table>
-</div><div class="memdoc">
-
-<p>Referenced by <a class="el" href="include_2attach_8php.html#a84a8a64c4805e1525b42d4add464833f">attach_store()</a>, <a class="el" href="include_2chat_8php.html#acdc80dba4eb796c7472b21129b435422">chatroom_create()</a>, <a class="el" href="include_2chat_8php.html#a2c95b545e46bfee64faa05ecf0afea91">chatroom_enter()</a>, <a class="el" href="classRedDirectory.html#a2d12d99d38a6a75fc9a830b2f7fc0bf0">RedDirectory\createFile()</a>, <a class="el" href="classRedBrowser.html#a1f7daf50bb9bfcde7345b3b1908dbd7e">RedBrowser\generateDirectoryIndex()</a>, <a class="el" href="classRedDirectory.html#a2f7a574f2115f099d6dd103d5b252375">RedDirectory\getQuotaInfo()</a>, <a class="el" href="manage_8php.html#a2bca247b5296827638959138367db4f5">manage_content()</a>, <a class="el" href="include_2photos_8php.html#a6c40ef58aefef705a5adc84a40e97109">photo_upload()</a>, <a class="el" href="mod_2photos_8php.html#aa87382611a66ec5effdb2d78f13f5812">photos_content()</a>, <a class="el" href="classRedFile.html#a41a49a583eb276b75626fcf97f4a699c">RedFile\put()</a>, and <a class="el" href="widgets_8php.html#ad1bf7aa69e8d100d95faba17c7bc91cd">widget_follow()</a>.</p>
-
-</div>
-</div>
<a class="anchor" id="a65fedcffbe03562ef844cabee37d34e2"></a>
<div class="memitem">
<div class="memproto">
@@ -850,7 +776,7 @@ Functions</h2></td></tr>
</table>
</div><div class="memdoc">
-<p>Referenced by <a class="el" href="boot_8php.html#acc4e0c910af066148b810e5fde55fff1">construct_page()</a>, <a class="el" href="plugin_8php.html#a9039e15aae27676af7777dcbee5a11d6">format_css_if_exists()</a>, <a class="el" href="plugin_8php.html#ad9ff8ba554576383c5911a4bce068c1f">format_js_if_exists()</a>, <a class="el" href="classFriendicaSmartyEngine.html#a35ec0ee828c36640ea25296bcb84a118">FriendicaSmartyEngine\get_intltext_template()</a>, <a class="el" href="classFriendicaSmartyEngine.html#aab5994077fc3a64222e41b28e2bd8d88">FriendicaSmartyEngine\get_markup_template()</a>, <a class="el" href="classTemplate.html#afd97b4b1e7754a550e67c0ea79159059">Template\get_markup_template()</a>, and <a class="el" href="pdledit_8php.html#a59cb550f6b7a4e7d8196fbc9de601619">pdledit_content()</a>.</p>
+<p>Referenced by <a class="el" href="boot_8php.html#acc4e0c910af066148b810e5fde55fff1">construct_page()</a>, <a class="el" href="plugin_8php.html#a9039e15aae27676af7777dcbee5a11d6">format_css_if_exists()</a>, <a class="el" href="plugin_8php.html#ad9ff8ba554576383c5911a4bce068c1f">format_js_if_exists()</a>, <a class="el" href="classFriendicaSmartyEngine.html#a35ec0ee828c36640ea25296bcb84a118">FriendicaSmartyEngine\get_intltext_template()</a>, <a class="el" href="classFriendicaSmartyEngine.html#aab5994077fc3a64222e41b28e2bd8d88">FriendicaSmartyEngine\get_markup_template()</a>, <a class="el" href="classTemplate.html#afd97b4b1e7754a550e67c0ea79159059">Template\get_markup_template()</a>, <a class="el" href="boot_8php.html#a50a6707a28c7d05d3f49eaabc7994501">load_pdl()</a>, and <a class="el" href="pdledit_8php.html#a59cb550f6b7a4e7d8196fbc9de601619">pdledit_content()</a>.</p>
</div>
</div>
@@ -949,60 +875,6 @@ Functions</h2></td></tr>
</dl>
<dl class="section return"><dt>Returns</dt><dd>mixed </dd></dl>
-<p>Referenced by <a class="el" href="blogga_2view_2theme_2blog_2theme_8php.html#a3e77dbe111f330c64a1ff6c741cd515c">blog_uninstall()</a>.</p>
-
-</div>
-</div>
-<a class="anchor" id="a754d7f53b3abc557b753c057dc4e021d"></a>
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">upgrade_bool_message </td>
- <td>(</td>
- <td class="paramtype">&#160;</td>
- <td class="paramname"><em>$bbcode</em> = <code>false</code></td><td>)</td>
- <td></td>
- </tr>
- </table>
-</div><div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="a4fc13e528367f510fcb6d8bbfc559040"></a>
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">upgrade_link </td>
- <td>(</td>
- <td class="paramtype">&#160;</td>
- <td class="paramname"><em>$bbcode</em> = <code>false</code></td><td>)</td>
- <td></td>
- </tr>
- </table>
-</div><div class="memdoc">
-
-<p>Referenced by <a class="el" href="plugin_8php.html#a754d7f53b3abc557b753c057dc4e021d">upgrade_bool_message()</a>, and <a class="el" href="plugin_8php.html#a901657dd078e070516cf97285e0bada7">upgrade_message()</a>.</p>
-
-</div>
-</div>
-<a class="anchor" id="a901657dd078e070516cf97285e0bada7"></a>
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">upgrade_message </td>
- <td>(</td>
- <td class="paramtype">&#160;</td>
- <td class="paramname"><em>$bbcode</em> = <code>false</code></td><td>)</td>
- <td></td>
- </tr>
- </table>
-</div><div class="memdoc">
-
-<p>Referenced by <a class="el" href="include_2attach_8php.html#a84a8a64c4805e1525b42d4add464833f">attach_store()</a>, <a class="el" href="include_2chat_8php.html#acdc80dba4eb796c7472b21129b435422">chatroom_create()</a>, <a class="el" href="identity_8php.html#ac9fcd5c4c371998790b5c55c3d0f4633">identity_check_service_class()</a>, <a class="el" href="item_8php.html#a5b1b36cb301a94b38150074f0d424e74">item_check_service_class()</a>, <a class="el" href="include_2follow_8php.html#ae387d4ae097c23d69f3247e7f08140c7">new_contact()</a>, and <a class="el" href="include_2photos_8php.html#a6c40ef58aefef705a5adc84a40e97109">photo_upload()</a>.</p>
-
</div>
</div>
</div><!-- contents -->
diff --git a/doc/html/plugin_8php.js b/doc/html/plugin_8php.js
index 366378e08..383143f66 100644
--- a/doc/html/plugin_8php.js
+++ b/doc/html/plugin_8php.js
@@ -23,13 +23,8 @@ var plugin_8php =
[ "register_hook", "plugin_8php.html#a425472c5f3afc137268b2ad45652b209", null ],
[ "reload_plugins", "plugin_8php.html#af9ac19004dca49adae1ac7a0d9f3b025", null ],
[ "script_path", "plugin_8php.html#a0e8c2ea50bfdbc39e17ccccaea21ddc3", null ],
- [ "service_class_allows", "plugin_8php.html#a030cec6793b909c439c0336ba39b1571", null ],
- [ "service_class_fetch", "plugin_8php.html#a905b54e10704b283ac64680a8abc0971", null ],
[ "theme_include", "plugin_8php.html#a65fedcffbe03562ef844cabee37d34e2", null ],
[ "uninstall_plugin", "plugin_8php.html#a093a9cb98f51e3643634bd8bc6ed6e76", null ],
[ "unload_plugin", "plugin_8php.html#a90538627db68605aeb6db17a8ead6523", null ],
- [ "unregister_hook", "plugin_8php.html#a56f71fe5adf9586ce950523d8180443e", null ],
- [ "upgrade_bool_message", "plugin_8php.html#a754d7f53b3abc557b753c057dc4e021d", null ],
- [ "upgrade_link", "plugin_8php.html#a4fc13e528367f510fcb6d8bbfc559040", null ],
- [ "upgrade_message", "plugin_8php.html#a901657dd078e070516cf97285e0bada7", null ]
+ [ "unregister_hook", "plugin_8php.html#a56f71fe5adf9586ce950523d8180443e", null ]
]; \ No newline at end of file
diff --git a/doc/html/po2php_8php.html b/doc/html/po2php_8php.html
index 439411fd6..a1b50a4a1 100644
--- a/doc/html/po2php_8php.html
+++ b/doc/html/po2php_8php.html
@@ -114,6 +114,8 @@ $(document).ready(function(){initNavTree('po2php_8php.html','');});
Functions</h2></td></tr>
<tr class="memitem:a3b75e36f913198299e99559b175cd8b4"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="po2php_8php.html#a3b75e36f913198299e99559b175cd8b4">po2php_run</a> ($<a class="el" href="boot_8php.html#a768f00b7d66be0daf7ef4eea2e862006">argv</a>, $<a class="el" href="boot_8php.html#abc0a90a1a77f5b668aa7e4b57d1776a7">argc</a>)</td></tr>
<tr class="separator:a3b75e36f913198299e99559b175cd8b4"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a4f3dc9b019d0cd1dc171c54c991ef334"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="po2php_8php.html#a4f3dc9b019d0cd1dc171c54c991ef334">trim_message</a> ($str)</td></tr>
+<tr class="separator:a4f3dc9b019d0cd1dc171c54c991ef334"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<h2 class="groupheader">Function Documentation</h2>
<a class="anchor" id="a3b75e36f913198299e99559b175cd8b4"></a>
@@ -142,6 +144,24 @@ Functions</h2></td></tr>
</div>
</div>
+<a class="anchor" id="a4f3dc9b019d0cd1dc171c54c991ef334"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">trim_message </td>
+ <td>(</td>
+ <td class="paramtype">&#160;</td>
+ <td class="paramname"><em>$str</em></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p>Referenced by <a class="el" href="po2php_8php.html#a3b75e36f913198299e99559b175cd8b4">po2php_run()</a>.</p>
+
+</div>
+</div>
</div><!-- contents -->
</div><!-- doc-content -->
diff --git a/doc/html/po2php_8php.js b/doc/html/po2php_8php.js
index e8f3c4f39..9536e15bf 100644
--- a/doc/html/po2php_8php.js
+++ b/doc/html/po2php_8php.js
@@ -1,4 +1,5 @@
var po2php_8php =
[
- [ "po2php_run", "po2php_8php.html#a3b75e36f913198299e99559b175cd8b4", null ]
+ [ "po2php_run", "po2php_8php.html#a3b75e36f913198299e99559b175cd8b4", null ],
+ [ "trim_message", "po2php_8php.html#a4f3dc9b019d0cd1dc171c54c991ef334", null ]
]; \ No newline at end of file
diff --git a/doc/html/poll_8php.html b/doc/html/poll_8php.html
new file mode 100644
index 000000000..c6d214a66
--- /dev/null
+++ b/doc/html/poll_8php.html
@@ -0,0 +1,173 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<meta name="generator" content="Doxygen 1.8.3.1"/>
+<title>The Red Matrix: mod/poll.php File Reference</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="navtree.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="resize.js"></script>
+<script type="text/javascript" src="navtree.js"></script>
+<script type="text/javascript">
+ $(document).ready(initResizable);
+ $(window).load(resizeHeight);
+</script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/search.js"></script>
+<script type="text/javascript">
+ $(document).ready(function() { searchBox.OnSelectItem(0); });
+</script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+ <td id="projectlogo"><img alt="Logo" src="rm-64.png"/></td>
+ <td style="padding-left: 0.5em;">
+ <div id="projectname">The Red Matrix
+ </div>
+ </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.8.3.1 -->
+<script type="text/javascript">
+var searchBox = new SearchBox("searchBox", "search",false,'Search');
+</script>
+ <div id="navrow1" class="tabs">
+ <ul class="tablist">
+ <li><a href="index.html"><span>Main&#160;Page</span></a></li>
+ <li><a href="pages.html"><span>Related&#160;Pages</span></a></li>
+ <li><a href="namespaces.html"><span>Namespaces</span></a></li>
+ <li><a href="annotated.html"><span>Classes</span></a></li>
+ <li class="current"><a href="files.html"><span>Files</span></a></li>
+ <li>
+ <div id="MSearchBox" class="MSearchBoxInactive">
+ <span class="left">
+ <img id="MSearchSelect" src="search/mag_sel.png"
+ onmouseover="return searchBox.OnSearchSelectShow()"
+ onmouseout="return searchBox.OnSearchSelectHide()"
+ alt=""/>
+ <input type="text" id="MSearchField" value="Search" accesskey="S"
+ onfocus="searchBox.OnSearchFieldFocus(true)"
+ onblur="searchBox.OnSearchFieldFocus(false)"
+ onkeyup="searchBox.OnSearchFieldChange(event)"/>
+ </span><span class="right">
+ <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
+ </span>
+ </div>
+ </li>
+ </ul>
+ </div>
+ <div id="navrow2" class="tabs2">
+ <ul class="tablist">
+ <li><a href="files.html"><span>File&#160;List</span></a></li>
+ <li><a href="globals.html"><span>File&#160;Members</span></a></li>
+ </ul>
+ </div>
+</div><!-- top -->
+<div id="side-nav" class="ui-resizable side-nav-resizable">
+ <div id="nav-tree">
+ <div id="nav-tree-contents">
+ <div id="nav-sync" class="sync"></div>
+ </div>
+ </div>
+ <div id="splitbar" style="-moz-user-select:none;"
+ class="ui-resizable-handle">
+ </div>
+</div>
+<script type="text/javascript">
+$(document).ready(function(){initNavTree('poll_8php.html','');});
+</script>
+<div id="doc-content">
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+ onmouseover="return searchBox.OnSearchSelectShow()"
+ onmouseout="return searchBox.OnSearchSelectHide()"
+ onkeydown="return searchBox.OnSearchSelectKey(event)">
+<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark">&#160;</span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark">&#160;</span>Classes</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark">&#160;</span>Namespaces</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark">&#160;</span>Files</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark">&#160;</span>Functions</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark">&#160;</span>Variables</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark">&#160;</span>Pages</a></div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<iframe src="javascript:void(0)" frameborder="0"
+ name="MSearchResults" id="MSearchResults">
+</iframe>
+</div>
+
+<div class="header">
+ <div class="summary">
+<a href="#func-members">Functions</a> </div>
+ <div class="headertitle">
+<div class="title">poll.php File Reference</div> </div>
+</div><!--header-->
+<div class="contents">
+<table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="func-members"></a>
+Functions</h2></td></tr>
+<tr class="memitem:ab9ecd5b71af090a5da9c93f34f7ec930"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="poll_8php.html#ab9ecd5b71af090a5da9c93f34f7ec930">poll_init</a> (&amp;$a)</td></tr>
+<tr class="separator:ab9ecd5b71af090a5da9c93f34f7ec930"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a26be9d4f230cb68f5be326198cfc6c77"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="poll_8php.html#a26be9d4f230cb68f5be326198cfc6c77">poll_post</a> (&amp;$a)</td></tr>
+<tr class="separator:a26be9d4f230cb68f5be326198cfc6c77"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a3314c26bd2ac0ed831cebf3315cd3263"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="poll_8php.html#a3314c26bd2ac0ed831cebf3315cd3263">poll_content</a> (&amp;$a)</td></tr>
+<tr class="separator:a3314c26bd2ac0ed831cebf3315cd3263"><td class="memSeparator" colspan="2">&#160;</td></tr>
+</table>
+<h2 class="groupheader">Function Documentation</h2>
+<a class="anchor" id="a3314c26bd2ac0ed831cebf3315cd3263"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">poll_content </td>
+ <td>(</td>
+ <td class="paramtype">&amp;&#160;</td>
+ <td class="paramname"><em>$a</em></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+</div>
+</div>
+<a class="anchor" id="ab9ecd5b71af090a5da9c93f34f7ec930"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">poll_init </td>
+ <td>(</td>
+ <td class="paramtype">&amp;&#160;</td>
+ <td class="paramname"><em>$a</em></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+</div>
+</div>
+<a class="anchor" id="a26be9d4f230cb68f5be326198cfc6c77"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">poll_post </td>
+ <td>(</td>
+ <td class="paramtype">&amp;&#160;</td>
+ <td class="paramname"><em>$a</em></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+</div>
+</div>
+</div><!-- contents -->
+</div><!-- doc-content -->
+
diff --git a/doc/html/poll_8php.js b/doc/html/poll_8php.js
new file mode 100644
index 000000000..48803281a
--- /dev/null
+++ b/doc/html/poll_8php.js
@@ -0,0 +1,6 @@
+var poll_8php =
+[
+ [ "poll_content", "poll_8php.html#a3314c26bd2ac0ed831cebf3315cd3263", null ],
+ [ "poll_init", "poll_8php.html#ab9ecd5b71af090a5da9c93f34f7ec930", null ],
+ [ "poll_post", "poll_8php.html#a26be9d4f230cb68f5be326198cfc6c77", null ]
+]; \ No newline at end of file
diff --git a/doc/html/poller_8php.html b/doc/html/poller_8php.html
index 8edd7b295..47675d6ad 100644
--- a/doc/html/poller_8php.html
+++ b/doc/html/poller_8php.html
@@ -143,6 +143,8 @@ Functions</h2></td></tr>
<p>Actions in the following block are executed once per day, not on every poller run</p>
<p>Cron Weekly</p>
<p>Actions in the following block are executed once per day only on Sunday (once per week).</p>
+<p>End Cron Weekly</p>
+<p>End Cron Daily</p>
</div>
</div>
diff --git a/doc/html/post_8php.html b/doc/html/post_8php.html
index 0c0745a3a..ece06c97c 100644
--- a/doc/html/post_8php.html
+++ b/doc/html/post_8php.html
@@ -172,7 +172,7 @@ Functions</h2></td></tr>
<p>If verification is successful, a json structure is returned containing a success indicator and an array of type 'pickup'. Each pickup element contains the original notify request and a message field whose contents are dependent on the message type</p>
<p>This JSON array is AES encapsulated using the site public key of the site that sent the initial zot pickup packet. Using the above example, this would be example.com.</p>
<p>{ "success":1, "pickup":{ "notify":{ "type":"notify", "sender":{ "guid":"kgVFf_...", "guid_sig":"PT9-TApz...", "url":"http:\/\/z.podunk.edu", "url_sig":"T8Bp7j5D..." }, "callback":"\/post", "version":1, "secret":"1eaa661..." }, "message":{ "type":"activity", "message_id":"10b049ce384cbb2da9467319bc98169ab36290b8bbb403aa0c0accd9cb072e76@podunk.edu", "message_top":"10b049ce384cbb2da9467319bc98169ab36290b8bbb403aa0c0accd9cb072e76@podunk.edu", "message_parent":"10b049ce384cbb2da9467319bc98169ab36290b8bbb403aa0c0accd9cb072e76@podunk.edu", "created":"2012-11-20 04:04:16", "edited":"2012-11-20 04:04:16", "title":"", "body":"Hi Nickordo", "app":"", "verb":"post", "object_type":"", "target_type":"", "permalink":"", "location":"", "longlat":"", "owner":{ "name":"Indigo", "address":"indigo@podunk.edu", "url":"http:\/\/podunk.edu", "photo":{ "mimetype":"image\/jpeg", "src":"http:\/\/podunk.edu\/photo\/profile\/m\/5" }, "guid":"kgVFf_...", "guid_sig":"PT9-TAp...", }, "author":{ "name":"Indigo", "address":"indigo@podunk.edu", "url":"http:\/\/podunk.edu", "photo":{ "mimetype":"image\/jpeg", "src":"http:\/\/podunk.edu\/photo\/profile\/m\/5" }, "guid":"kgVFf_...", "guid_sig":"PT9-TAp..." } } } }</p>
-<p>Currently defined message types are 'activity', 'mail', 'profile' and 'channel_sync', which each have different content schemas.</p>
+<p>Currently defined message types are 'activity', 'mail', 'profile', 'location' and 'channel_sync', which each have different content schemas.</p>
<p>Ping packet: A ping packet does not require any parameters except the type. It may or may not be encrypted.</p>
<p>{ "type": "ping" }</p>
<p>On receipt of a ping packet a ping response will be returned:</p>
diff --git a/doc/html/post__to__red_8php.html b/doc/html/post__to__red_8php.html
index 0bec890ac..8776a12c7 100644
--- a/doc/html/post__to__red_8php.html
+++ b/doc/html/post__to__red_8php.html
@@ -149,8 +149,6 @@ Functions</h2></td></tr>
<tr class="separator:a085c250d4ceff5e4f10052f3d2039823"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ae0b881461afbdba93d9329068ea52136"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="post__to__red_8php.html#ae0b881461afbdba93d9329068ea52136">post_to_red_get_avatar</a> ($avatar, $id_or_email, $size, $default, $alt)</td></tr>
<tr class="separator:ae0b881461afbdba93d9329068ea52136"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:af2713018a2dc97e88f121fc6215beb66"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="post__to__red_8php.html#af2713018a2dc97e88f121fc6215beb66">xpost_to_html2bbcode</a> ($text)</td></tr>
-<tr class="separator:af2713018a2dc97e88f121fc6215beb66"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="var-members"></a>
Variables</h2></td></tr>
@@ -483,24 +481,6 @@ Variables</h2></td></tr>
</div>
</div>
-<a class="anchor" id="af2713018a2dc97e88f121fc6215beb66"></a>
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">xpost_to_html2bbcode </td>
- <td>(</td>
- <td class="paramtype">&#160;</td>
- <td class="paramname"><em>$text</em></td><td>)</td>
- <td></td>
- </tr>
- </table>
-</div><div class="memdoc">
-
-<p>Referenced by <a class="el" href="post__to__red_8php.html#af5fd50e2c42ede85f8a9e8d9ee3cf540">post_to_red_post()</a>.</p>
-
-</div>
-</div>
<h2 class="groupheader">Variable Documentation</h2>
<a class="anchor" id="ada8a7130088351710bb02ed622d6bf65"></a>
<div class="memitem">
diff --git a/doc/html/post__to__red_8php.js b/doc/html/post__to__red_8php.js
index b2a2c31f5..9fa505b7e 100644
--- a/doc/html/post__to__red_8php.js
+++ b/doc/html/post__to__red_8php.js
@@ -18,7 +18,6 @@ var post__to__red_8php =
[ "post_to_red_settings_link", "post__to__red_8php.html#a906be8f72cf1aa2e199c0683ea6a4017", null ],
[ "red_comment", "post__to__red_8php.html#a085c250d4ceff5e4f10052f3d2039823", null ],
[ "red_xmlrpc_methods", "post__to__red_8php.html#a3a2af6ad845239f26e86fccabf8639e1", null ],
- [ "xpost_to_html2bbcode", "post__to__red_8php.html#af2713018a2dc97e88f121fc6215beb66", null ],
[ "$plugin", "post__to__red_8php.html#ada8a7130088351710bb02ed622d6bf65", null ],
[ "$plugin_dir", "post__to__red_8php.html#a99811555b30bde504a863e44015f2f19", null ],
[ "post_to_red_acct_name", "post__to__red_8php.html#a588cea66afe0b32f27f2713d44940119", null ],
diff --git a/doc/html/profile__selectors_8php.html b/doc/html/profile__selectors_8php.html
index b118aba11..d43ca6a93 100644
--- a/doc/html/profile__selectors_8php.html
+++ b/doc/html/profile__selectors_8php.html
@@ -114,10 +114,16 @@ $(document).ready(function(){initNavTree('profile__selectors_8php.html','');});
Functions</h2></td></tr>
<tr class="memitem:ae2b2c087e6530c61c0b256fd26d52355"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="profile__selectors_8php.html#ae2b2c087e6530c61c0b256fd26d52355">gender_selector</a> ($current=&quot;&quot;, $suffix=&quot;&quot;)</td></tr>
<tr class="separator:ae2b2c087e6530c61c0b256fd26d52355"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a8bfa1ca2d1598a3d65f1f9bb803ca816"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="profile__selectors_8php.html#a8bfa1ca2d1598a3d65f1f9bb803ca816">gender_selector_min</a> ($current=&quot;&quot;, $suffix=&quot;&quot;)</td></tr>
+<tr class="separator:a8bfa1ca2d1598a3d65f1f9bb803ca816"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a3b50b3ea4ea4bdbebebfffc5d1b157c7"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="profile__selectors_8php.html#a3b50b3ea4ea4bdbebebfffc5d1b157c7">sexpref_selector</a> ($current=&quot;&quot;, $suffix=&quot;&quot;)</td></tr>
<tr class="separator:a3b50b3ea4ea4bdbebebfffc5d1b157c7"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ab0eae5c0ceba77364469f0f580f0d074"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="profile__selectors_8php.html#ab0eae5c0ceba77364469f0f580f0d074">sexpref_selector_min</a> ($current=&quot;&quot;, $suffix=&quot;&quot;)</td></tr>
+<tr class="separator:ab0eae5c0ceba77364469f0f580f0d074"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a7473dd095987e1cdcc79d4f0bb5e6798"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="profile__selectors_8php.html#a7473dd095987e1cdcc79d4f0bb5e6798">marital_selector</a> ($current=&quot;&quot;, $suffix=&quot;&quot;)</td></tr>
<tr class="separator:a7473dd095987e1cdcc79d4f0bb5e6798"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:adc79715bd2e102b4583fb530749ec534"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="profile__selectors_8php.html#adc79715bd2e102b4583fb530749ec534">marital_selector_min</a> ($current=&quot;&quot;, $suffix=&quot;&quot;)</td></tr>
+<tr class="separator:adc79715bd2e102b4583fb530749ec534"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<h2 class="groupheader">Function Documentation</h2>
<a class="anchor" id="ae2b2c087e6530c61c0b256fd26d52355"></a>
@@ -148,6 +154,34 @@ Functions</h2></td></tr>
</div>
</div>
+<a class="anchor" id="a8bfa1ca2d1598a3d65f1f9bb803ca816"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">gender_selector_min </td>
+ <td>(</td>
+ <td class="paramtype">&#160;</td>
+ <td class="paramname"><em>$current</em> = <code>&quot;&quot;</code>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">&#160;</td>
+ <td class="paramname"><em>$suffix</em> = <code>&quot;&quot;</code>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p>Referenced by <a class="el" href="profiles_8php.html#a46975783b8b8d70402d51487eb1f0b00">profiles_content()</a>.</p>
+
+</div>
+</div>
<a class="anchor" id="a7473dd095987e1cdcc79d4f0bb5e6798"></a>
<div class="memitem">
<div class="memproto">
@@ -176,6 +210,34 @@ Functions</h2></td></tr>
</div>
</div>
+<a class="anchor" id="adc79715bd2e102b4583fb530749ec534"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">marital_selector_min </td>
+ <td>(</td>
+ <td class="paramtype">&#160;</td>
+ <td class="paramname"><em>$current</em> = <code>&quot;&quot;</code>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">&#160;</td>
+ <td class="paramname"><em>$suffix</em> = <code>&quot;&quot;</code>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p>Referenced by <a class="el" href="profiles_8php.html#a46975783b8b8d70402d51487eb1f0b00">profiles_content()</a>.</p>
+
+</div>
+</div>
<a class="anchor" id="a3b50b3ea4ea4bdbebebfffc5d1b157c7"></a>
<div class="memitem">
<div class="memproto">
@@ -204,6 +266,34 @@ Functions</h2></td></tr>
</div>
</div>
+<a class="anchor" id="ab0eae5c0ceba77364469f0f580f0d074"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">sexpref_selector_min </td>
+ <td>(</td>
+ <td class="paramtype">&#160;</td>
+ <td class="paramname"><em>$current</em> = <code>&quot;&quot;</code>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">&#160;</td>
+ <td class="paramname"><em>$suffix</em> = <code>&quot;&quot;</code>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p>Referenced by <a class="el" href="profiles_8php.html#a46975783b8b8d70402d51487eb1f0b00">profiles_content()</a>.</p>
+
+</div>
+</div>
</div><!-- contents -->
</div><!-- doc-content -->
diff --git a/doc/html/profile__selectors_8php.js b/doc/html/profile__selectors_8php.js
index 608e0e77e..7e59c8a9f 100644
--- a/doc/html/profile__selectors_8php.js
+++ b/doc/html/profile__selectors_8php.js
@@ -1,6 +1,9 @@
var profile__selectors_8php =
[
[ "gender_selector", "profile__selectors_8php.html#ae2b2c087e6530c61c0b256fd26d52355", null ],
+ [ "gender_selector_min", "profile__selectors_8php.html#a8bfa1ca2d1598a3d65f1f9bb803ca816", null ],
[ "marital_selector", "profile__selectors_8php.html#a7473dd095987e1cdcc79d4f0bb5e6798", null ],
- [ "sexpref_selector", "profile__selectors_8php.html#a3b50b3ea4ea4bdbebebfffc5d1b157c7", null ]
+ [ "marital_selector_min", "profile__selectors_8php.html#adc79715bd2e102b4583fb530749ec534", null ],
+ [ "sexpref_selector", "profile__selectors_8php.html#a3b50b3ea4ea4bdbebebfffc5d1b157c7", null ],
+ [ "sexpref_selector_min", "profile__selectors_8php.html#ab0eae5c0ceba77364469f0f580f0d074", null ]
]; \ No newline at end of file
diff --git a/doc/html/receive_8php.html b/doc/html/receive_8php.html
new file mode 100644
index 000000000..83d066c60
--- /dev/null
+++ b/doc/html/receive_8php.html
@@ -0,0 +1,138 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<meta name="generator" content="Doxygen 1.8.3.1"/>
+<title>The Red Matrix: mod/receive.php File Reference</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="navtree.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="resize.js"></script>
+<script type="text/javascript" src="navtree.js"></script>
+<script type="text/javascript">
+ $(document).ready(initResizable);
+ $(window).load(resizeHeight);
+</script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/search.js"></script>
+<script type="text/javascript">
+ $(document).ready(function() { searchBox.OnSelectItem(0); });
+</script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+ <td id="projectlogo"><img alt="Logo" src="rm-64.png"/></td>
+ <td style="padding-left: 0.5em;">
+ <div id="projectname">The Red Matrix
+ </div>
+ </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.8.3.1 -->
+<script type="text/javascript">
+var searchBox = new SearchBox("searchBox", "search",false,'Search');
+</script>
+ <div id="navrow1" class="tabs">
+ <ul class="tablist">
+ <li><a href="index.html"><span>Main&#160;Page</span></a></li>
+ <li><a href="pages.html"><span>Related&#160;Pages</span></a></li>
+ <li><a href="namespaces.html"><span>Namespaces</span></a></li>
+ <li><a href="annotated.html"><span>Classes</span></a></li>
+ <li class="current"><a href="files.html"><span>Files</span></a></li>
+ <li>
+ <div id="MSearchBox" class="MSearchBoxInactive">
+ <span class="left">
+ <img id="MSearchSelect" src="search/mag_sel.png"
+ onmouseover="return searchBox.OnSearchSelectShow()"
+ onmouseout="return searchBox.OnSearchSelectHide()"
+ alt=""/>
+ <input type="text" id="MSearchField" value="Search" accesskey="S"
+ onfocus="searchBox.OnSearchFieldFocus(true)"
+ onblur="searchBox.OnSearchFieldFocus(false)"
+ onkeyup="searchBox.OnSearchFieldChange(event)"/>
+ </span><span class="right">
+ <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
+ </span>
+ </div>
+ </li>
+ </ul>
+ </div>
+ <div id="navrow2" class="tabs2">
+ <ul class="tablist">
+ <li><a href="files.html"><span>File&#160;List</span></a></li>
+ <li><a href="globals.html"><span>File&#160;Members</span></a></li>
+ </ul>
+ </div>
+</div><!-- top -->
+<div id="side-nav" class="ui-resizable side-nav-resizable">
+ <div id="nav-tree">
+ <div id="nav-tree-contents">
+ <div id="nav-sync" class="sync"></div>
+ </div>
+ </div>
+ <div id="splitbar" style="-moz-user-select:none;"
+ class="ui-resizable-handle">
+ </div>
+</div>
+<script type="text/javascript">
+$(document).ready(function(){initNavTree('receive_8php.html','');});
+</script>
+<div id="doc-content">
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+ onmouseover="return searchBox.OnSearchSelectShow()"
+ onmouseout="return searchBox.OnSearchSelectHide()"
+ onkeydown="return searchBox.OnSearchSelectKey(event)">
+<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark">&#160;</span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark">&#160;</span>Classes</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark">&#160;</span>Namespaces</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark">&#160;</span>Files</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark">&#160;</span>Functions</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark">&#160;</span>Variables</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark">&#160;</span>Pages</a></div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<iframe src="javascript:void(0)" frameborder="0"
+ name="MSearchResults" id="MSearchResults">
+</iframe>
+</div>
+
+<div class="header">
+ <div class="summary">
+<a href="#func-members">Functions</a> </div>
+ <div class="headertitle">
+<div class="title">receive.php File Reference</div> </div>
+</div><!--header-->
+<div class="contents">
+<table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="func-members"></a>
+Functions</h2></td></tr>
+<tr class="memitem:a03d8fa26e77844020ba5602deca7d494"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="receive_8php.html#a03d8fa26e77844020ba5602deca7d494">receive_post</a> (&amp;$a)</td></tr>
+<tr class="separator:a03d8fa26e77844020ba5602deca7d494"><td class="memSeparator" colspan="2">&#160;</td></tr>
+</table>
+<h2 class="groupheader">Function Documentation</h2>
+<a class="anchor" id="a03d8fa26e77844020ba5602deca7d494"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">receive_post </td>
+ <td>(</td>
+ <td class="paramtype">&amp;&#160;</td>
+ <td class="paramname"><em>$a</em></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+<p>Diaspora endpoint </p>
+
+</div>
+</div>
+</div><!-- contents -->
+</div><!-- doc-content -->
+
diff --git a/doc/html/receive_8php.js b/doc/html/receive_8php.js
new file mode 100644
index 000000000..d57e5d234
--- /dev/null
+++ b/doc/html/receive_8php.js
@@ -0,0 +1,4 @@
+var receive_8php =
+[
+ [ "receive_post", "receive_8php.html#a03d8fa26e77844020ba5602deca7d494", null ]
+]; \ No newline at end of file
diff --git a/doc/html/redable_8php.html b/doc/html/redable_8php.html
new file mode 100644
index 000000000..549b7af78
--- /dev/null
+++ b/doc/html/redable_8php.html
@@ -0,0 +1,133 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<meta name="generator" content="Doxygen 1.8.3.1"/>
+<title>The Red Matrix: view/php/redable.php File Reference</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="navtree.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="resize.js"></script>
+<script type="text/javascript" src="navtree.js"></script>
+<script type="text/javascript">
+ $(document).ready(initResizable);
+ $(window).load(resizeHeight);
+</script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/search.js"></script>
+<script type="text/javascript">
+ $(document).ready(function() { searchBox.OnSelectItem(0); });
+</script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+ <td id="projectlogo"><img alt="Logo" src="rm-64.png"/></td>
+ <td style="padding-left: 0.5em;">
+ <div id="projectname">The Red Matrix
+ </div>
+ </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.8.3.1 -->
+<script type="text/javascript">
+var searchBox = new SearchBox("searchBox", "search",false,'Search');
+</script>
+ <div id="navrow1" class="tabs">
+ <ul class="tablist">
+ <li><a href="index.html"><span>Main&#160;Page</span></a></li>
+ <li><a href="pages.html"><span>Related&#160;Pages</span></a></li>
+ <li><a href="namespaces.html"><span>Namespaces</span></a></li>
+ <li><a href="annotated.html"><span>Classes</span></a></li>
+ <li class="current"><a href="files.html"><span>Files</span></a></li>
+ <li>
+ <div id="MSearchBox" class="MSearchBoxInactive">
+ <span class="left">
+ <img id="MSearchSelect" src="search/mag_sel.png"
+ onmouseover="return searchBox.OnSearchSelectShow()"
+ onmouseout="return searchBox.OnSearchSelectHide()"
+ alt=""/>
+ <input type="text" id="MSearchField" value="Search" accesskey="S"
+ onfocus="searchBox.OnSearchFieldFocus(true)"
+ onblur="searchBox.OnSearchFieldFocus(false)"
+ onkeyup="searchBox.OnSearchFieldChange(event)"/>
+ </span><span class="right">
+ <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
+ </span>
+ </div>
+ </li>
+ </ul>
+ </div>
+ <div id="navrow2" class="tabs2">
+ <ul class="tablist">
+ <li><a href="files.html"><span>File&#160;List</span></a></li>
+ <li><a href="globals.html"><span>File&#160;Members</span></a></li>
+ </ul>
+ </div>
+</div><!-- top -->
+<div id="side-nav" class="ui-resizable side-nav-resizable">
+ <div id="nav-tree">
+ <div id="nav-tree-contents">
+ <div id="nav-sync" class="sync"></div>
+ </div>
+ </div>
+ <div id="splitbar" style="-moz-user-select:none;"
+ class="ui-resizable-handle">
+ </div>
+</div>
+<script type="text/javascript">
+$(document).ready(function(){initNavTree('redable_8php.html','');});
+</script>
+<div id="doc-content">
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+ onmouseover="return searchBox.OnSearchSelectShow()"
+ onmouseout="return searchBox.OnSearchSelectHide()"
+ onkeydown="return searchBox.OnSearchSelectKey(event)">
+<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark">&#160;</span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark">&#160;</span>Classes</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark">&#160;</span>Namespaces</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark">&#160;</span>Files</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark">&#160;</span>Functions</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark">&#160;</span>Variables</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark">&#160;</span>Pages</a></div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<iframe src="javascript:void(0)" frameborder="0"
+ name="MSearchResults" id="MSearchResults">
+</iframe>
+</div>
+
+<div class="header">
+ <div class="summary">
+<a href="#var-members">Variables</a> </div>
+ <div class="headertitle">
+<div class="title">redable.php File Reference</div> </div>
+</div><!--header-->
+<div class="contents">
+<table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="var-members"></a>
+Variables</h2></td></tr>
+<tr class="memitem:a3987f5547ceb7e36a210a66a06241a5a"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="redable_8php.html#a3987f5547ceb7e36a210a66a06241a5a">if</a> (<a class="el" href="boot_8php.html#ae97836b0547953be182a2334c9c91d3c">x</a>($<a class="el" href="mod__import_8php.html#a8db1899eeeb44dabd0904065b63627bb">page</a>,'htmlhead')) echo $<a class="el" href="mod__import_8php.html#a8db1899eeeb44dabd0904065b63627bb">page</a>['htmlhead']?&gt;&lt;/head &gt;&lt; body &gt;&lt; header &gt;&lt;?php if(<a class="el" href="boot_8php.html#ae97836b0547953be182a2334c9c91d3c">x</a>($<a class="el" href="mod__import_8php.html#a8db1899eeeb44dabd0904065b63627bb">page</a></td></tr>
+<tr class="separator:a3987f5547ceb7e36a210a66a06241a5a"><td class="memSeparator" colspan="2">&#160;</td></tr>
+</table>
+<h2 class="groupheader">Variable Documentation</h2>
+<a class="anchor" id="a3987f5547ceb7e36a210a66a06241a5a"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">if(<a class="el" href="boot_8php.html#ae97836b0547953be182a2334c9c91d3c">x</a>($<a class="el" href="mod__import_8php.html#a8db1899eeeb44dabd0904065b63627bb">page</a>,'htmlhead')) echo $<a class="el" href="mod__import_8php.html#a8db1899eeeb44dabd0904065b63627bb">page</a>['htmlhead']?&gt;&lt;/head &gt;&lt; body &gt;&lt; header &gt;&lt;?php if(<a class="el" href="boot_8php.html#ae97836b0547953be182a2334c9c91d3c">x</a>($<a class="el" href="mod__import_8php.html#a8db1899eeeb44dabd0904065b63627bb">page</a></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+</div>
+</div>
+</div><!-- contents -->
+</div><!-- doc-content -->
+
diff --git a/doc/html/redable_8php.js b/doc/html/redable_8php.js
new file mode 100644
index 000000000..e74ff35fc
--- /dev/null
+++ b/doc/html/redable_8php.js
@@ -0,0 +1,4 @@
+var redable_8php =
+[
+ [ "if", "redable_8php.html#a3987f5547ceb7e36a210a66a06241a5a", null ]
+]; \ No newline at end of file
diff --git a/doc/html/redbasic_2php_2theme_8php.html b/doc/html/redbasic_2php_2theme_8php.html
index c71a95829..905d26738 100644
--- a/doc/html/redbasic_2php_2theme_8php.html
+++ b/doc/html/redbasic_2php_2theme_8php.html
@@ -131,7 +131,7 @@ Functions</h2></td></tr>
</div><div class="memdoc">
<ul>
<li>Name: Redbasic</li>
-<li>Description: RedMatrix standard theme</li>
+<li>Description: <a class="el" href="namespaceRedMatrix.html" title="Class Import.">RedMatrix</a> standard theme</li>
<li>Version: 1.0</li>
<li>Author: Fabrixxm</li>
<li>Maintainer: Mike Macgirvin</li>
diff --git a/doc/html/reddav_8php.html b/doc/html/reddav_8php.html
index e0cff75df..d27cb2190 100644
--- a/doc/html/reddav_8php.html
+++ b/doc/html/reddav_8php.html
@@ -104,28 +104,15 @@ $(document).ready(function(){initNavTree('reddav_8php.html','');});
<div class="header">
<div class="summary">
-<a href="#nested-classes">Classes</a> &#124;
<a href="#func-members">Functions</a> </div>
<div class="headertitle">
<div class="title">reddav.php File Reference</div> </div>
</div><!--header-->
<div class="contents">
-<p>DAV related classes from SabreDAV for Red Matrix.
+<p>some DAV related functions for <a class="el" href="namespaceRedMatrix.html" title="Class Import.">RedMatrix</a>.
<a href="#details">More...</a></p>
<table class="memberdecls">
-<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="nested-classes"></a>
-Classes</h2></td></tr>
-<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classRedDirectory.html">RedDirectory</a></td></tr>
-<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight"><a class="el" href="classRedDirectory.html" title="RedDirectory class.">RedDirectory</a> class. <a href="classRedDirectory.html#details">More...</a><br/></td></tr>
-<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classRedFile.html">RedFile</a></td></tr>
-<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classRedBasicAuth.html">RedBasicAuth</a></td></tr>
-<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classRedBrowser.html">RedBrowser</a></td></tr>
-<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
-</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="func-members"></a>
Functions</h2></td></tr>
<tr class="memitem:ae92ea0df1993f6a7bcd1b6efa6c1fb66"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="reddav_8php.html#ae92ea0df1993f6a7bcd1b6efa6c1fb66">RedChannelList</a> (&amp;$auth)</td></tr>
@@ -139,9 +126,11 @@ Functions</h2></td></tr>
<tr class="separator:a9f531641dfb4e43cd88ac1a9ae7e2088"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
-<div class="textblock"><p>DAV related classes from SabreDAV for Red Matrix. </p>
-<p>This file contains the classes from SabreDAV that got extended to adapt it for Red Matrix.</p>
-<p>You find the original SabreDAV classes under vendor/sabre/dav/. We need to use SabreDAV 1.8.x for PHP5.3 compatibility. SabreDAV &gt;= 2.0 requires PHP &gt;= 5.4. </p>
+<div class="textblock"><p>some DAV related functions for <a class="el" href="namespaceRedMatrix.html" title="Class Import.">RedMatrix</a>. </p>
+<p>This file contains some functions which did not fit into one of the RedDAV classes.</p>
+<p>The extended SabreDAV classes you will find in the RedDAV namespace under includes/RedDAV/. The original SabreDAV classes you can find under vendor/sabre/dav/. We need to use SabreDAV 1.8.x for PHP5.3 compatibility. SabreDAV &gt;= 2.0 requires PHP &gt;= 5.4.</p>
+<dl class="todo"><dt><b><a class="el" href="todo.html#_todo000008">Todo:</a></b></dt><dd>split up the classes into own files.</dd></dl>
+<p><a class="el" href=""><a href="http://opensource.org/licenses/mit-license.php">http://opensource.org/licenses/mit-license.php</a> The MIT License (MIT) </a></p>
</div><h2 class="groupheader">Function Documentation</h2>
<a class="anchor" id="ae92ea0df1993f6a7bcd1b6efa6c1fb66"></a>
<div class="memitem">
@@ -158,15 +147,15 @@ Functions</h2></td></tr>
</div><div class="memdoc">
<p>Returns an array with viewable channels. </p>
-<p>Get a list of <a class="el" href="classRedDirectory.html" title="RedDirectory class.">RedDirectory</a> objects with all the channels where the visitor has <b>view_storage</b> perms.</p>
-<dl class="todo"><dt><b><a class="el" href="todo.html#_todo000001">Todo:</a></b></dt><dd>Is there any reason why this is not inside <a class="el" href="classRedDirectory.html" title="RedDirectory class.">RedDirectory</a> class?</dd></dl>
+<p>Get a list of RedDirectory objects with all the channels where the visitor has <b>view_storage</b> perms.</p>
+<dl class="todo"><dt><b><a class="el" href="todo.html#_todo000009">Todo:</a></b></dt><dd>Is there any reason why this is not inside RedDirectory class? function name looks like a class name, should we rename it?</dd></dl>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
- <tr><td class="paramname">$auth</td><td></td></tr>
+ <tr><td class="paramtype">RedBasicAuth</td><td class="paramname">&amp;$auth</td><td></td></tr>
</table>
</dd>
</dl>
-<dl class="section return"><dt>Returns</dt><dd>array containing <a class="el" href="classRedDirectory.html" title="RedDirectory class.">RedDirectory</a> objects </dd></dl>
+<dl class="section return"><dt>Returns</dt><dd>array RedDirectory[] </dd></dl>
<p>Referenced by <a class="el" href="reddav_8php.html#a5df0d09893f2e65dc5cf6bbab6cfb266">RedCollectionData()</a>.</p>
@@ -197,18 +186,25 @@ Functions</h2></td></tr>
</div><div class="memdoc">
<p>TODO what exactly does this function? </p>
-<p>Array with all <a class="el" href="classRedDirectory.html" title="RedDirectory class.">RedDirectory</a> and <a class="el" href="classRedFile.html">RedFile</a> DAV items for the given path.</p>
-<dl class="todo"><dt><b><a class="el" href="todo.html#_todo000002">Todo:</a></b></dt><dd>Is there any reason why this is not inside <a class="el" href="classRedDirectory.html" title="RedDirectory class.">RedDirectory</a> class? Seems only to be used there and we could simplify it a bit there.</dd></dl>
+<p>Array with all RedDirectory and RedFile DAV items for the given path.</p>
+<dl class="todo"><dt><b><a class="el" href="todo.html#_todo000010">Todo:</a></b></dt><dd>Is there any reason why this is not inside RedDirectory class? Seems only to be used there and we could simplify it a bit there. function name looks like a class name, should we rename it?</dd></dl>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramtype">string</td><td class="paramname">$file</td><td>path to a directory </td></tr>
- <tr><td class="paramtype"></td><td class="paramname">&amp;$auth</td><td></td></tr>
+ <tr><td class="paramtype">RedBasicAuth</td><td class="paramname">&amp;$auth</td><td></td></tr>
+ </table>
+ </dd>
+</dl>
+<dl class="section return"><dt>Returns</dt><dd>null|array [] </dd></dl>
+<dl class="exception"><dt>Exceptions</dt><dd>
+ <table class="exception">
+ <tr><td class="paramname">\Sabre\DAV\Exception\Forbidden</td><td></td></tr>
+ <tr><td class="paramname">\Sabre\DAV\Exception\NotFound</td><td></td></tr>
</table>
</dd>
</dl>
-<dl class="section return"><dt>Returns</dt><dd>array DAV[] </dd></dl>
-<p>Referenced by <a class="el" href="classRedDirectory.html#aa42d3065f6f065b17db87146a7cb031a">RedDirectory\getChildren()</a>.</p>
+<p>Referenced by <a class="el" href="classRedMatrix_1_1RedDAV_1_1RedDirectory.html#a9b9a0b5bfa4de1f78e6cafaa534b6f6a">RedMatrix\RedDAV\RedDirectory\getChildren()</a>.</p>
</div>
</div>
@@ -243,16 +239,24 @@ Functions</h2></td></tr>
</div><div class="memdoc">
<p>TODO What exactly is this function for? </p>
+<p>function name looks like a class name, should we rename it?</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
- <tr><td class="paramtype">string</td><td class="paramname">$file</td><td></td></tr>
- <tr><td class="paramtype"></td><td class="paramname">&amp;$auth</td><td></td></tr>
+ <tr><td class="paramtype">string</td><td class="paramname">$file</td><td>path to file or directory </td></tr>
+ <tr><td class="paramtype">RedBasicAuth</td><td class="paramname">&amp;$auth</td><td></td></tr>
<tr><td class="paramtype">boolean</td><td class="paramname">$test</td><td>(optional) enable test mode </td></tr>
</table>
</dd>
</dl>
+<dl class="section return"><dt>Returns</dt><dd>RedFile|RedDirectory|boolean|null </dd></dl>
+<dl class="exception"><dt>Exceptions</dt><dd>
+ <table class="exception">
+ <tr><td class="paramname">\Sabre\DAV\Exception\Forbidden</td><td></td></tr>
+ </table>
+ </dd>
+</dl>
-<p>Referenced by <a class="el" href="classRedDirectory.html#a5e3fc08b2bf9f61cea4d2ccae0495bec">RedDirectory\childExists()</a>, <a class="el" href="cloud_8php.html#a1b79a6fe0454bc76673ad9aef55bf02d">cloud_init()</a>, and <a class="el" href="classRedDirectory.html#aaa20f0f44da23781917af8170c0a2569">RedDirectory\getChild()</a>.</p>
+<p>Referenced by <a class="el" href="classRedMatrix_1_1RedDAV_1_1RedDirectory.html#a964b13fde1a5da6f76b51ca5519234dc">RedMatrix\RedDAV\RedDirectory\childExists()</a>, <a class="el" href="cloud_8php.html#ad2e96e917852f27dedfc263d37e13756">cloud_init()</a>, and <a class="el" href="classRedMatrix_1_1RedDAV_1_1RedDirectory.html#a1a37850bdd1f188abd6160559698d5d7">RedMatrix\RedDAV\RedDirectory\getChild()</a>.</p>
</div>
</div>
diff --git a/doc/html/reddav_8php.js b/doc/html/reddav_8php.js
index 3e2dd2ffe..02eaf1811 100644
--- a/doc/html/reddav_8php.js
+++ b/doc/html/reddav_8php.js
@@ -1,9 +1,5 @@
var reddav_8php =
[
- [ "RedDirectory", "classRedDirectory.html", "classRedDirectory" ],
- [ "RedFile", "classRedFile.html", "classRedFile" ],
- [ "RedBasicAuth", "classRedBasicAuth.html", "classRedBasicAuth" ],
- [ "RedBrowser", "classRedBrowser.html", "classRedBrowser" ],
[ "RedChannelList", "reddav_8php.html#ae92ea0df1993f6a7bcd1b6efa6c1fb66", null ],
[ "RedCollectionData", "reddav_8php.html#a5df0d09893f2e65dc5cf6bbab6cfb266", null ],
[ "RedFileData", "reddav_8php.html#a9f531641dfb4e43cd88ac1a9ae7e2088", null ]
diff --git a/doc/html/refimport_8php.html b/doc/html/refimport_8php.html
new file mode 100644
index 000000000..26dc98a08
--- /dev/null
+++ b/doc/html/refimport_8php.html
@@ -0,0 +1,381 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<meta name="generator" content="Doxygen 1.8.3.1"/>
+<title>The Red Matrix: include/Import/refimport.php File Reference</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="navtree.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="resize.js"></script>
+<script type="text/javascript" src="navtree.js"></script>
+<script type="text/javascript">
+ $(document).ready(initResizable);
+ $(window).load(resizeHeight);
+</script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/search.js"></script>
+<script type="text/javascript">
+ $(document).ready(function() { searchBox.OnSelectItem(0); });
+</script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+ <td id="projectlogo"><img alt="Logo" src="rm-64.png"/></td>
+ <td style="padding-left: 0.5em;">
+ <div id="projectname">The Red Matrix
+ </div>
+ </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.8.3.1 -->
+<script type="text/javascript">
+var searchBox = new SearchBox("searchBox", "search",false,'Search');
+</script>
+ <div id="navrow1" class="tabs">
+ <ul class="tablist">
+ <li><a href="index.html"><span>Main&#160;Page</span></a></li>
+ <li><a href="pages.html"><span>Related&#160;Pages</span></a></li>
+ <li><a href="namespaces.html"><span>Namespaces</span></a></li>
+ <li><a href="annotated.html"><span>Classes</span></a></li>
+ <li class="current"><a href="files.html"><span>Files</span></a></li>
+ <li>
+ <div id="MSearchBox" class="MSearchBoxInactive">
+ <span class="left">
+ <img id="MSearchSelect" src="search/mag_sel.png"
+ onmouseover="return searchBox.OnSearchSelectShow()"
+ onmouseout="return searchBox.OnSearchSelectHide()"
+ alt=""/>
+ <input type="text" id="MSearchField" value="Search" accesskey="S"
+ onfocus="searchBox.OnSearchFieldFocus(true)"
+ onblur="searchBox.OnSearchFieldFocus(false)"
+ onkeyup="searchBox.OnSearchFieldChange(event)"/>
+ </span><span class="right">
+ <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
+ </span>
+ </div>
+ </li>
+ </ul>
+ </div>
+ <div id="navrow2" class="tabs2">
+ <ul class="tablist">
+ <li><a href="files.html"><span>File&#160;List</span></a></li>
+ <li><a href="globals.html"><span>File&#160;Members</span></a></li>
+ </ul>
+ </div>
+</div><!-- top -->
+<div id="side-nav" class="ui-resizable side-nav-resizable">
+ <div id="nav-tree">
+ <div id="nav-tree-contents">
+ <div id="nav-sync" class="sync"></div>
+ </div>
+ </div>
+ <div id="splitbar" style="-moz-user-select:none;"
+ class="ui-resizable-handle">
+ </div>
+</div>
+<script type="text/javascript">
+$(document).ready(function(){initNavTree('refimport_8php.html','');});
+</script>
+<div id="doc-content">
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+ onmouseover="return searchBox.OnSearchSelectShow()"
+ onmouseout="return searchBox.OnSearchSelectHide()"
+ onkeydown="return searchBox.OnSearchSelectKey(event)">
+<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark">&#160;</span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark">&#160;</span>Classes</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark">&#160;</span>Namespaces</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark">&#160;</span>Files</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark">&#160;</span>Functions</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark">&#160;</span>Variables</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark">&#160;</span>Pages</a></div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<iframe src="javascript:void(0)" frameborder="0"
+ name="MSearchResults" id="MSearchResults">
+</iframe>
+</div>
+
+<div class="header">
+ <div class="summary">
+<a href="#func-members">Functions</a> &#124;
+<a href="#var-members">Variables</a> </div>
+ <div class="headertitle">
+<div class="title">refimport.php File Reference</div> </div>
+</div><!--header-->
+<div class="contents">
+<table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="func-members"></a>
+Functions</h2></td></tr>
+<tr class="memitem:a6c3e0475fde9fe72ff2492a5e3e5259c"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="refimport_8php.html#a6c3e0475fde9fe72ff2492a5e3e5259c">reflect_get_channel</a> ()</td></tr>
+<tr class="separator:a6c3e0475fde9fe72ff2492a5e3e5259c"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ad97ebb5feda0230a4834e0b3637a0d29"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="refimport_8php.html#ad97ebb5feda0230a4834e0b3637a0d29">refimport_content</a> (&amp;$a)</td></tr>
+<tr class="separator:ad97ebb5feda0230a4834e0b3637a0d29"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a53434bc19e6264db89e18d92ddc09860"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="refimport_8php.html#a53434bc19e6264db89e18d92ddc09860">reflect_article_callback</a> ($matches)</td></tr>
+<tr class="separator:a53434bc19e6264db89e18d92ddc09860"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ae9c56f779d1e0ac7bcb2a460129e7ae5"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="refimport_8php.html#ae9c56f779d1e0ac7bcb2a460129e7ae5">reflect_photo_callback</a> ($matches)</td></tr>
+<tr class="separator:ae9c56f779d1e0ac7bcb2a460129e7ae5"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:aa98de7d112e3a5b4b6956f108d04a41d"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="refimport_8php.html#aa98de7d112e3a5b4b6956f108d04a41d">reflect_find_user</a> ($users, $name)</td></tr>
+<tr class="separator:aa98de7d112e3a5b4b6956f108d04a41d"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a01a29630fa5e1ce6cd5e1fd75280747c"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="refimport_8php.html#a01a29630fa5e1ce6cd5e1fd75280747c">reflect_comment_store</a> ($channel, $post, $comment, $user)</td></tr>
+<tr class="separator:a01a29630fa5e1ce6cd5e1fd75280747c"><td class="memSeparator" colspan="2">&#160;</td></tr>
+</table><table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="var-members"></a>
+Variables</h2></td></tr>
+<tr class="memitem:a54003135d7c8994a76e831fb6faa2fe6"><td class="memItemLeft" align="right" valign="top">const&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="refimport_8php.html#a54003135d7c8994a76e831fb6faa2fe6">REDMATRIX_IMPORTCHANNEL</a> 'mike'</td></tr>
+<tr class="separator:a54003135d7c8994a76e831fb6faa2fe6"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ad297afe0730c9119dd94d3cf0521b025"><td class="memItemLeft" align="right" valign="top">const&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="refimport_8php.html#ad297afe0730c9119dd94d3cf0521b025">REFLECT_EXPORTUSERNAME</a> 'mike'</td></tr>
+<tr class="separator:ad297afe0730c9119dd94d3cf0521b025"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a8459983ebf013ed5737f7ed317bfae1f"><td class="memItemLeft" align="right" valign="top">const&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="refimport_8php.html#a8459983ebf013ed5737f7ed317bfae1f">REFLECT_BLOGNAME</a> 'Diary and Other Rantings'</td></tr>
+<tr class="separator:a8459983ebf013ed5737f7ed317bfae1f"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ac43699d8ae86175e049aa4e87853caac"><td class="memItemLeft" align="right" valign="top">const&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="refimport_8php.html#ac43699d8ae86175e049aa4e87853caac">REFLECT_BASEURL</a> 'http://example.com/'</td></tr>
+<tr class="separator:ac43699d8ae86175e049aa4e87853caac"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a684a44d2401abf75f441591bcb41d10d"><td class="memItemLeft" align="right" valign="top">const&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="refimport_8php.html#a684a44d2401abf75f441591bcb41d10d">REFLECT_USERFILE</a> 'user.json'</td></tr>
+<tr class="separator:a684a44d2401abf75f441591bcb41d10d"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:aeec793cefa260f788b7d005adcb35796"><td class="memItemLeft" align="right" valign="top">const&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="refimport_8php.html#aeec793cefa260f788b7d005adcb35796">REFLECT_OVERWRITE</a> false</td></tr>
+<tr class="separator:aeec793cefa260f788b7d005adcb35796"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a9c1f681f1f303400a9818696a9f96d6f"><td class="memItemLeft" align="right" valign="top">const&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="refimport_8php.html#a9c1f681f1f303400a9818696a9f96d6f">REFLECT_MAXPERRUN</a> 30</td></tr>
+<tr class="separator:a9c1f681f1f303400a9818696a9f96d6f"><td class="memSeparator" colspan="2">&#160;</td></tr>
+</table>
+<h2 class="groupheader">Function Documentation</h2>
+<a class="anchor" id="ad97ebb5feda0230a4834e0b3637a0d29"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">refimport_content </td>
+ <td>(</td>
+ <td class="paramtype">&amp;&#160;</td>
+ <td class="paramname"><em>$a</em></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+</div>
+</div>
+<a class="anchor" id="a53434bc19e6264db89e18d92ddc09860"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">reflect_article_callback </td>
+ <td>(</td>
+ <td class="paramtype">&#160;</td>
+ <td class="paramname"><em>$matches</em></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+</div>
+</div>
+<a class="anchor" id="a01a29630fa5e1ce6cd5e1fd75280747c"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">reflect_comment_store </td>
+ <td>(</td>
+ <td class="paramtype">&#160;</td>
+ <td class="paramname"><em>$channel</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">&#160;</td>
+ <td class="paramname"><em>$post</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">&#160;</td>
+ <td class="paramname"><em>$comment</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">&#160;</td>
+ <td class="paramname"><em>$user</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p>Referenced by <a class="el" href="refimport_8php.html#ad97ebb5feda0230a4834e0b3637a0d29">refimport_content()</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="aa98de7d112e3a5b4b6956f108d04a41d"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">reflect_find_user </td>
+ <td>(</td>
+ <td class="paramtype">&#160;</td>
+ <td class="paramname"><em>$users</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">&#160;</td>
+ <td class="paramname"><em>$name</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p>Referenced by <a class="el" href="refimport_8php.html#ad97ebb5feda0230a4834e0b3637a0d29">refimport_content()</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a6c3e0475fde9fe72ff2492a5e3e5259c"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">reflect_get_channel </td>
+ <td>(</td>
+ <td class="paramname"></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p>Referenced by <a class="el" href="refimport_8php.html#ad97ebb5feda0230a4834e0b3637a0d29">refimport_content()</a>, and <a class="el" href="refimport_8php.html#ae9c56f779d1e0ac7bcb2a460129e7ae5">reflect_photo_callback()</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="ae9c56f779d1e0ac7bcb2a460129e7ae5"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">reflect_photo_callback </td>
+ <td>(</td>
+ <td class="paramtype">&#160;</td>
+ <td class="paramname"><em>$matches</em></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+</div>
+</div>
+<h2 class="groupheader">Variable Documentation</h2>
+<a class="anchor" id="a54003135d7c8994a76e831fb6faa2fe6"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">const REDMATRIX_IMPORTCHANNEL 'mike'</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p>Referenced by <a class="el" href="refimport_8php.html#a6c3e0475fde9fe72ff2492a5e3e5259c">reflect_get_channel()</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="ac43699d8ae86175e049aa4e87853caac"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">const REFLECT_BASEURL 'http://example.com/'</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p>Referenced by <a class="el" href="refimport_8php.html#a01a29630fa5e1ce6cd5e1fd75280747c">reflect_comment_store()</a>, and <a class="el" href="refimport_8php.html#ae9c56f779d1e0ac7bcb2a460129e7ae5">reflect_photo_callback()</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a8459983ebf013ed5737f7ed317bfae1f"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">const REFLECT_BLOGNAME 'Diary and Other Rantings'</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p>Referenced by <a class="el" href="refimport_8php.html#ad97ebb5feda0230a4834e0b3637a0d29">refimport_content()</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="ad297afe0730c9119dd94d3cf0521b025"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">const REFLECT_EXPORTUSERNAME 'mike'</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p>Referenced by <a class="el" href="refimport_8php.html#a01a29630fa5e1ce6cd5e1fd75280747c">reflect_comment_store()</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a9c1f681f1f303400a9818696a9f96d6f"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">const REFLECT_MAXPERRUN 30</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p>Referenced by <a class="el" href="refimport_8php.html#ad97ebb5feda0230a4834e0b3637a0d29">refimport_content()</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="aeec793cefa260f788b7d005adcb35796"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">const REFLECT_OVERWRITE false</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p>Referenced by <a class="el" href="refimport_8php.html#ad97ebb5feda0230a4834e0b3637a0d29">refimport_content()</a>, and <a class="el" href="refimport_8php.html#a01a29630fa5e1ce6cd5e1fd75280747c">reflect_comment_store()</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a684a44d2401abf75f441591bcb41d10d"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">const REFLECT_USERFILE 'user.json'</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p>Referenced by <a class="el" href="refimport_8php.html#ad97ebb5feda0230a4834e0b3637a0d29">refimport_content()</a>.</p>
+
+</div>
+</div>
+</div><!-- contents -->
+</div><!-- doc-content -->
+
diff --git a/doc/html/refimport_8php.js b/doc/html/refimport_8php.js
new file mode 100644
index 000000000..f0b97cbee
--- /dev/null
+++ b/doc/html/refimport_8php.js
@@ -0,0 +1,16 @@
+var refimport_8php =
+[
+ [ "refimport_content", "refimport_8php.html#ad97ebb5feda0230a4834e0b3637a0d29", null ],
+ [ "reflect_article_callback", "refimport_8php.html#a53434bc19e6264db89e18d92ddc09860", null ],
+ [ "reflect_comment_store", "refimport_8php.html#a01a29630fa5e1ce6cd5e1fd75280747c", null ],
+ [ "reflect_find_user", "refimport_8php.html#aa98de7d112e3a5b4b6956f108d04a41d", null ],
+ [ "reflect_get_channel", "refimport_8php.html#a6c3e0475fde9fe72ff2492a5e3e5259c", null ],
+ [ "reflect_photo_callback", "refimport_8php.html#ae9c56f779d1e0ac7bcb2a460129e7ae5", null ],
+ [ "REDMATRIX_IMPORTCHANNEL", "refimport_8php.html#a54003135d7c8994a76e831fb6faa2fe6", null ],
+ [ "REFLECT_BASEURL", "refimport_8php.html#ac43699d8ae86175e049aa4e87853caac", null ],
+ [ "REFLECT_BLOGNAME", "refimport_8php.html#a8459983ebf013ed5737f7ed317bfae1f", null ],
+ [ "REFLECT_EXPORTUSERNAME", "refimport_8php.html#ad297afe0730c9119dd94d3cf0521b025", null ],
+ [ "REFLECT_MAXPERRUN", "refimport_8php.html#a9c1f681f1f303400a9818696a9f96d6f", null ],
+ [ "REFLECT_OVERWRITE", "refimport_8php.html#aeec793cefa260f788b7d005adcb35796", null ],
+ [ "REFLECT_USERFILE", "refimport_8php.html#a684a44d2401abf75f441591bcb41d10d", null ]
+]; \ No newline at end of file
diff --git a/doc/html/removeaccount_8php.html b/doc/html/removeaccount_8php.html
new file mode 100644
index 000000000..ec4dcc756
--- /dev/null
+++ b/doc/html/removeaccount_8php.html
@@ -0,0 +1,155 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<meta name="generator" content="Doxygen 1.8.3.1"/>
+<title>The Red Matrix: mod/removeaccount.php File Reference</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="navtree.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="resize.js"></script>
+<script type="text/javascript" src="navtree.js"></script>
+<script type="text/javascript">
+ $(document).ready(initResizable);
+ $(window).load(resizeHeight);
+</script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/search.js"></script>
+<script type="text/javascript">
+ $(document).ready(function() { searchBox.OnSelectItem(0); });
+</script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+ <td id="projectlogo"><img alt="Logo" src="rm-64.png"/></td>
+ <td style="padding-left: 0.5em;">
+ <div id="projectname">The Red Matrix
+ </div>
+ </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.8.3.1 -->
+<script type="text/javascript">
+var searchBox = new SearchBox("searchBox", "search",false,'Search');
+</script>
+ <div id="navrow1" class="tabs">
+ <ul class="tablist">
+ <li><a href="index.html"><span>Main&#160;Page</span></a></li>
+ <li><a href="pages.html"><span>Related&#160;Pages</span></a></li>
+ <li><a href="namespaces.html"><span>Namespaces</span></a></li>
+ <li><a href="annotated.html"><span>Classes</span></a></li>
+ <li class="current"><a href="files.html"><span>Files</span></a></li>
+ <li>
+ <div id="MSearchBox" class="MSearchBoxInactive">
+ <span class="left">
+ <img id="MSearchSelect" src="search/mag_sel.png"
+ onmouseover="return searchBox.OnSearchSelectShow()"
+ onmouseout="return searchBox.OnSearchSelectHide()"
+ alt=""/>
+ <input type="text" id="MSearchField" value="Search" accesskey="S"
+ onfocus="searchBox.OnSearchFieldFocus(true)"
+ onblur="searchBox.OnSearchFieldFocus(false)"
+ onkeyup="searchBox.OnSearchFieldChange(event)"/>
+ </span><span class="right">
+ <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
+ </span>
+ </div>
+ </li>
+ </ul>
+ </div>
+ <div id="navrow2" class="tabs2">
+ <ul class="tablist">
+ <li><a href="files.html"><span>File&#160;List</span></a></li>
+ <li><a href="globals.html"><span>File&#160;Members</span></a></li>
+ </ul>
+ </div>
+</div><!-- top -->
+<div id="side-nav" class="ui-resizable side-nav-resizable">
+ <div id="nav-tree">
+ <div id="nav-tree-contents">
+ <div id="nav-sync" class="sync"></div>
+ </div>
+ </div>
+ <div id="splitbar" style="-moz-user-select:none;"
+ class="ui-resizable-handle">
+ </div>
+</div>
+<script type="text/javascript">
+$(document).ready(function(){initNavTree('removeaccount_8php.html','');});
+</script>
+<div id="doc-content">
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+ onmouseover="return searchBox.OnSearchSelectShow()"
+ onmouseout="return searchBox.OnSearchSelectHide()"
+ onkeydown="return searchBox.OnSearchSelectKey(event)">
+<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark">&#160;</span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark">&#160;</span>Classes</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark">&#160;</span>Namespaces</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark">&#160;</span>Files</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark">&#160;</span>Functions</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark">&#160;</span>Variables</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark">&#160;</span>Pages</a></div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<iframe src="javascript:void(0)" frameborder="0"
+ name="MSearchResults" id="MSearchResults">
+</iframe>
+</div>
+
+<div class="header">
+ <div class="summary">
+<a href="#func-members">Functions</a> </div>
+ <div class="headertitle">
+<div class="title">removeaccount.php File Reference</div> </div>
+</div><!--header-->
+<div class="contents">
+<table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="func-members"></a>
+Functions</h2></td></tr>
+<tr class="memitem:a26a3325292e932c59793430ab737126a"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="removeaccount_8php.html#a26a3325292e932c59793430ab737126a">removeaccount_post</a> (&amp;$a)</td></tr>
+<tr class="separator:a26a3325292e932c59793430ab737126a"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a516e7380b9e5796054aa8245f3509695"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="removeaccount_8php.html#a516e7380b9e5796054aa8245f3509695">removeaccount_content</a> (&amp;$a)</td></tr>
+<tr class="separator:a516e7380b9e5796054aa8245f3509695"><td class="memSeparator" colspan="2">&#160;</td></tr>
+</table>
+<h2 class="groupheader">Function Documentation</h2>
+<a class="anchor" id="a516e7380b9e5796054aa8245f3509695"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">removeaccount_content </td>
+ <td>(</td>
+ <td class="paramtype">&amp;&#160;</td>
+ <td class="paramname"><em>$a</em></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+</div>
+</div>
+<a class="anchor" id="a26a3325292e932c59793430ab737126a"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">removeaccount_post </td>
+ <td>(</td>
+ <td class="paramtype">&amp;&#160;</td>
+ <td class="paramname"><em>$a</em></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+</div>
+</div>
+</div><!-- contents -->
+</div><!-- doc-content -->
+
diff --git a/doc/html/removeaccount_8php.js b/doc/html/removeaccount_8php.js
new file mode 100644
index 000000000..40a35218c
--- /dev/null
+++ b/doc/html/removeaccount_8php.js
@@ -0,0 +1,5 @@
+var removeaccount_8php =
+[
+ [ "removeaccount_content", "removeaccount_8php.html#a516e7380b9e5796054aa8245f3509695", null ],
+ [ "removeaccount_post", "removeaccount_8php.html#a26a3325292e932c59793430ab737126a", null ]
+]; \ No newline at end of file
diff --git a/doc/html/search/all_24.js b/doc/html/search/all_24.js
index 503819b1e..9ad473a4f 100644
--- a/doc/html/search/all_24.js
+++ b/doc/html/search/all_24.js
@@ -9,18 +9,15 @@ var searchData=
['_24argv',['$argv',['../classApp.html#ab3da757abe5cb45bf88f07cc51a73b58',1,'App']]],
['_24arr',['$arr',['../extract_8php.html#a63bb4c41bc532baacf6a4976cfaa0feb',1,'extract.php']]],
['_24aside',['$aside',['../minimalisticdarkness_8php.html#a6e5d97615c6faef5dbffe04b8024ceaf',1,'minimalisticdarkness.php']]],
- ['_24auth',['$auth',['../classRedDirectory.html#a9616af16cd19a18a6afebebcc2881c44',1,'RedDirectory\$auth()'],['../classRedFile.html#a4b5d0e33f919c6c175b30a55de6263f2',1,'RedFile\$auth()'],['../classRedBrowser.html#ab6d6d1e2a67e06b344a4cede1bd00b35',1,'RedBrowser\$auth()']]],
+ ['_24auth',['$auth',['../classRedMatrix_1_1RedDAV_1_1RedBrowser.html#ad19179bf4ac7f18fafa7e2e3df800142',1,'RedMatrix\RedDAV\RedBrowser\$auth()'],['../classRedMatrix_1_1RedDAV_1_1RedDirectory.html#aab6907e7fb7f9f7227f9cd42bdc84eb9',1,'RedMatrix\RedDAV\RedDirectory\$auth()'],['../classRedMatrix_1_1RedDAV_1_1RedFile.html#a21b6e9d420c352f25610a33f57858215',1,'RedMatrix\RedDAV\RedFile\$auth()']]],
['_24baseurl',['$baseurl',['../classApp.html#ad5175536561021548ae8188e24c7b80c',1,'App']]],
- ['_24bodyclass',['$bodyclass',['../theme_2blogga_2php_2default_8php.html#a720581ae288aa09511670563e4205a4a',1,'$bodyclass():&#160;default.php'],['../theme_2blogga_2view_2theme_2blog_2default_8php.html#a720581ae288aa09511670563e4205a4a',1,'$bodyclass():&#160;default.php']]],
- ['_24browser',['$browser',['../classRedBasicAuth.html#af14337f1baad407f8a85d48205c0f30e',1,'RedBasicAuth']]],
- ['_24cached_5fprofile_5fimage',['$cached_profile_image',['../classApp.html#abe0e4fa91097f7a6588e1213a834121c',1,'App']]],
- ['_24cached_5fprofile_5fpicdate',['$cached_profile_picdate',['../classApp.html#aab4a685d15a363bb1d7edbbc20bfb94e',1,'App']]],
+ ['_24browser',['$browser',['../classRedMatrix_1_1RedDAV_1_1RedBasicAuth.html#a167ae032bd2ad8e6caa2e1e1a6f1b5d3',1,'RedMatrix::RedDAV::RedBasicAuth']]],
['_24called_5fapi',['$called_api',['../include_2api_8php.html#aa62b15a6bbb280e86b98132eb214013d',1,'api.php']]],
['_24category',['$category',['../classApp.html#a5cfc098c061b7d765add58fd2ca97445',1,'App']]],
['_24channel',['$channel',['../classApp.html#a050b0696118da47e8b30859ad1a2c149',1,'App\$channel()'],['../classItem.html#acc32426c0f465391be8a99ad810c7b8e',1,'Item\$channel()'],['../php_2theme__init_8php.html#a54f32c086fe209c99769a4c4047dd864',1,'$channel():&#160;theme_init.php'],['../theme_2apw_2php_2theme__init_8php.html#a54f32c086fe209c99769a4c4047dd864',1,'$channel():&#160;theme_init.php']]],
- ['_24channel_5fhash',['$channel_hash',['../classRedBasicAuth.html#ad5a3ea4dc4783b242d9dc6e76478b6ef',1,'RedBasicAuth']]],
- ['_24channel_5fid',['$channel_id',['../classRedBasicAuth.html#a2dab393650d1573e3515969a153e8354',1,'RedBasicAuth']]],
- ['_24channel_5fname',['$channel_name',['../classRedBasicAuth.html#a438ab125b6ef46581947e35d49cdebac',1,'RedBasicAuth']]],
+ ['_24channel_5fhash',['$channel_hash',['../classRedMatrix_1_1RedDAV_1_1RedBasicAuth.html#a112ad78a863dc0e598b5f02c596798c0',1,'RedMatrix::RedDAV::RedBasicAuth']]],
+ ['_24channel_5fid',['$channel_id',['../classRedMatrix_1_1RedDAV_1_1RedBasicAuth.html#abe1defedb90ac8e3b6487e124e625521',1,'RedMatrix::RedDAV::RedBasicAuth']]],
+ ['_24channel_5fname',['$channel_name',['../classRedMatrix_1_1RedDAV_1_1RedBasicAuth.html#a76fdb7fd5dd7376155abb5a58cd6fd69',1,'RedMatrix::RedDAV::RedBasicAuth']]],
['_24children',['$children',['../classItem.html#a80dcd0fb7673776c0967839d429c2a0f',1,'Item']]],
['_24cid',['$cid',['../classApp.html#ad1c8eb91a6fd470b94f34b7fdad3a2d0',1,'App']]],
['_24cipher',['$cipher',['../classConversation.html#aa95c1a62af38bdfba7add9549bec083b',1,'Conversation']]],
@@ -33,31 +30,29 @@ var searchData=
['_24contacts',['$contacts',['../classApp.html#a61ca6e3af82071ea25ff2fd5dbcddae2',1,'App']]],
['_24content',['$content',['../classApp.html#ac1d80a14492acc932715d54567d8a589',1,'App']]],
['_24conversation',['$conversation',['../classItem.html#a007424e3e3171dcfb4312a02161da6cd',1,'Item']]],
+ ['_24credentials',['$credentials',['../classRedMatrix_1_1Import_1_1Import.html#a864aac9fadb4846f5d9f840e8e0f440f',1,'RedMatrix::Import::Import']]],
['_24css_5fsources',['$css_sources',['../classApp.html#a6f55d087e1ff4710132c1b0863faa2ee',1,'App']]],
- ['_24curl_5fcode',['$curl_code',['../classApp.html#a256360c9184fed6d7556e0bc0a835d7f',1,'App']]],
- ['_24curl_5fheaders',['$curl_headers',['../classApp.html#af5007c42a693afd9c4899c243b2e1363',1,'App']]],
['_24d',['$d',['../classTemplate.html#a8469ab2988b6be2681516dc4b4e07d38',1,'Template']]],
- ['_24data',['$data',['../classApp.html#a0ce85be198e46570366cb3344f3c55b8',1,'App\$data()'],['../classItem.html#aec24e233f9098f902b1e57e60dcb2019',1,'Item\$data()'],['../classRedFile.html#a2ff12032b45538353eded9809d3b7550',1,'RedFile\$data()']]],
- ['_24db',['$db',['../classApp.html#a330410a288f3393d53772f5e98f857ea',1,'App\$db()'],['../classdba__driver.html#a3033b5f1c2716b52202faeaae2592fe6',1,'dba_driver\$db()']]],
+ ['_24data',['$data',['../classApp.html#a0ce85be198e46570366cb3344f3c55b8',1,'App\$data()'],['../classItem.html#aec24e233f9098f902b1e57e60dcb2019',1,'Item\$data()'],['../classRedMatrix_1_1RedDAV_1_1RedFile.html#a235700e2dfbe21dc41613d36e30e8acc',1,'RedMatrix\RedDAV\RedFile\$data()']]],
+ ['_24db',['$db',['../classdba__driver.html#a3033b5f1c2716b52202faeaae2592fe6',1,'dba_driver']]],
['_24debug',['$debug',['../classdba__driver.html#af48e2afeded5285766bf92e22123ed03',1,'dba_driver\$debug()'],['../classTemplate.html#afc4afb6f89bebcd5480022312a56cb4a',1,'Template\$debug()']]],
['_24dir',['$dir',['../docblox__errorchecker_8php.html#a1659f0a629d408e0f849dbe4ee061e62',1,'docblox_errorchecker.php']]],
['_24directory_5ffallback_5fservers',['$DIRECTORY_FALLBACK_SERVERS',['../boot_8php.html#a107d53f96acf5319905a34b1870db09a',1,'boot.php']]],
['_24dirs',['$dirs',['../typo_8php.html#a1b709c1d79631ebc8320b41bda028b54',1,'typo.php']]],
['_24dirstack',['$dirstack',['../docblox__errorchecker_8php.html#ab66bc0493d25f39bf8b4dcbb429f04e6',1,'docblox_errorchecker.php']]],
+ ['_24display_5fmode',['$display_mode',['../classItem.html#a88a99e2d1245925867f249f543358e72',1,'Item']]],
['_24done',['$done',['../classTemplate.html#abda4c8d049f70553338eae7c905e9d5c',1,'Template']]],
['_24error',['$error',['../classApp.html#ac1a8b2cd40609b231a560201a08852ba',1,'App\$error()'],['../classdba__driver.html#a84675d28c7bd9b7290dd37e66dbd216c',1,'dba_driver\$error()']]],
- ['_24ext_5fpath',['$ext_path',['../classRedDirectory.html#a0f113244cd85c17848df991001d024f4',1,'RedDirectory']]],
+ ['_24ext_5fpath',['$ext_path',['../classRedMatrix_1_1RedDAV_1_1RedDirectory.html#adf8735b3118cdf2f42416edaf42b82e9',1,'RedMatrix::RedDAV::RedDirectory']]],
['_24fext',['$fext',['../apw_2php_2style_8php.html#a404171b8f918c116e45a6421c92f0cc9',1,'style.php']]],
['_24filelist',['$filelist',['../docblox__errorchecker_8php.html#a648a570b0f9f6e0e51b7267647c4b09b',1,'docblox_errorchecker.php']]],
['_24filename',['$filename',['../classFriendicaSmarty.html#a33fabbd4d6eef869df496adf357ae690',1,'FriendicaSmarty']]],
['_24files',['$files',['../extract_8php.html#a9590b15215a21e9b42eb546aeef79704',1,'$files():&#160;extract.php'],['../tpldebug_8php.html#a5358407d65f2ca826f96356a6642d149',1,'$files():&#160;tpldebug.php'],['../typo_8php.html#a9590b15215a21e9b42eb546aeef79704',1,'$files():&#160;typo.php']]],
['_24fname',['$fname',['../apw_2php_2style_8php.html#ab9e0f70d44ab67f4334f9883631777fc',1,'style.php']]],
- ['_24folder_5fhash',['$folder_hash',['../classRedDirectory.html#aa10254abf177bb2a0e4a88495725e09b',1,'RedDirectory']]],
+ ['_24folder_5fhash',['$folder_hash',['../classRedMatrix_1_1RedDAV_1_1RedDirectory.html#a2fc4e6b9be2108bbaa1ca1a03fd6d44e',1,'RedMatrix::RedDAV::RedDirectory']]],
['_24force_5fmax_5fitems',['$force_max_items',['../classApp.html#ae3f47830543d0d902f66913def8db66b',1,'App']]],
['_24gc_5fprobability',['$gc_probability',['../session_8php.html#a96b09cc763572f45280786a7b33feb7e',1,'session.php']]],
['_24groups',['$groups',['../classApp.html#ac6e6b1c7d6df408580ff79977fcfa656',1,'App']]],
- ['_24headimg',['$headimg',['../theme_2blogga_2php_2default_8php.html#ac7062908d1eb80c0735270f7997c4527',1,'$headimg():&#160;default.php'],['../theme_2blogga_2view_2theme_2blog_2default_8php.html#a52d9dd070ed541729088395c22502539',1,'$headimg():&#160;default.php']]],
- ['_24headimghome',['$headimghome',['../theme_2blogga_2php_2default_8php.html#a1230ab83d4ec9785d8f3a966f33dc5f3',1,'$headimghome():&#160;default.php'],['../theme_2blogga_2view_2theme_2blog_2default_8php.html#a1230ab83d4ec9785d8f3a966f33dc5f3',1,'$headimghome():&#160;default.php']]],
['_24height',['$height',['../classphoto__driver.html#aea560be5dfba09117d36c12bacbf3b80',1,'photo_driver']]],
['_24hooks',['$hooks',['../classApp.html#a3694aa1907aa103a2adbc71f926f0fa0',1,'App']]],
['_24hostname',['$hostname',['../classApp.html#a037049cba88dfc6ff94f4b5b779e3fd3',1,'App']]],
@@ -70,7 +65,10 @@ var searchData=
['_24install',['$install',['../classApp.html#a576ecb1c5b4a283221e6f2f0ec248251',1,'App']]],
['_24install_5fwizard_5fpass',['$install_wizard_pass',['../setup_8php.html#addb24714bc2542aa4f4215e98fe48432',1,'setup.php']]],
['_24interactive',['$interactive',['../classApp.html#a4c7cfc62d39508086cf300dc2e39c4df',1,'App']]],
+ ['_24is_5fsys',['$is_sys',['../classApp.html#a1f60d19d47021629faac7a0a6d917e94',1,'App']]],
['_24itemfloat',['$itemfloat',['../minimalisticdarkness_8php.html#a7e6c3d4efde4e9a2de32308081372c6b',1,'minimalisticdarkness.php']]],
+ ['_24itemlist',['$itemlist',['../classRedMatrix_1_1Import_1_1Import.html#ad0d2bdc3b388220479063915b4f5c2fc',1,'RedMatrix::Import::Import']]],
+ ['_24items',['$items',['../classRedMatrix_1_1Import_1_1Import.html#a0a05dac405ccc5b617b7b7b3c8ed783c',1,'RedMatrix::Import::Import']]],
['_24js_5fsources',['$js_sources',['../classApp.html#a11e24b3ed9b33ffee7dd41d110b4366d',1,'App']]],
['_24k',['$k',['../php2po_8php.html#ad6726cfaa85d4b8299d2b0f034cbf178',1,'php2po.php']]],
['_24lang',['$lang',['../classTemplate.html#ace26b8a4252fbc1c385d2b5e1e93e5c8',1,'Template']]],
@@ -81,19 +79,19 @@ var searchData=
['_24mode',['$mode',['../classConversation.html#afb03d1648dbfafe62caa1e30f32f2b1a',1,'Conversation']]],
['_24module',['$module',['../classApp.html#a9bf62f8e39585c0aa48fcffc3bf3484d',1,'App']]],
['_24module_5floaded',['$module_loaded',['../classApp.html#a6e4f0fbfa3cf6c11baebe22a03db6165',1,'App']]],
- ['_24name',['$name',['../classFriendicaSmartyEngine.html#aaba6a42101bc9ae32e36b7fa2e243f02',1,'FriendicaSmartyEngine\$name()'],['../classRedFile.html#acc48c05cd5a70951cb3c615ad84f03ba',1,'RedFile\$name()'],['../classTemplate.html#a6eb301a51cc94d8b94f4548fbad85eae',1,'Template\$name()']]],
+ ['_24name',['$name',['../classRedMatrix_1_1RedDAV_1_1RedFile.html#ab722dcb8c4598426c81fa2b2e4fad5f2',1,'RedMatrix\RedDAV\RedFile\$name()'],['../classFriendicaSmartyEngine.html#aaba6a42101bc9ae32e36b7fa2e243f02',1,'FriendicaSmartyEngine\$name()'],['../classTemplate.html#a6eb301a51cc94d8b94f4548fbad85eae',1,'Template\$name()']]],
['_24nav_5fpercent_5fmin_5fopacity',['$nav_percent_min_opacity',['../redbasic_2php_2style_8php.html#a01c151bf47f7da2b979aaa4cb868da4c',1,'style.php']]],
['_24nav_5fsel',['$nav_sel',['../classApp.html#a33a8e90b60ec4438f6fbf299d0f6839c',1,'App']]],
['_24navheight',['$navheight',['../apw_2php_2style_8php.html#a1c8a7c0db8c174239f3909cb931cb872',1,'style.php']]],
['_24needed',['$needed',['../docblox__errorchecker_8php.html#a852004caba0a34390297a079f4aaac73',1,'docblox_errorchecker.php']]],
['_24nodes',['$nodes',['../classTemplate.html#a8f4d17e49f42b876a97364c13fb572d1',1,'Template']]],
['_24obliquemacro',['$obliquemacro',['../apw_2php_2style_8php.html#a2cad82a3ecadbe58dbc4197de1c63da0',1,'style.php']]],
- ['_24observer',['$observer',['../classApp.html#a4ffe529fb14389f7fedf5fdc5f722e7f',1,'App\$observer()'],['../classConversation.html#a8748445aa26047ebed5141f3c3cbc244',1,'Conversation\$observer()'],['../classRedBasicAuth.html#aa75dc43b59adc98e38a98517d3fd35d1',1,'RedBasicAuth\$observer()']]],
- ['_24os_5fpath',['$os_path',['../classRedDirectory.html#a3c148c07ad909985125aa4926d8d0021',1,'RedDirectory']]],
+ ['_24observer',['$observer',['../classApp.html#a4ffe529fb14389f7fedf5fdc5f722e7f',1,'App\$observer()'],['../classConversation.html#a8748445aa26047ebed5141f3c3cbc244',1,'Conversation\$observer()'],['../classRedMatrix_1_1RedDAV_1_1RedBasicAuth.html#a605aa09565a097316b80f0d17d6b5823',1,'RedMatrix\RedDAV\RedBasicAuth\$observer()']]],
+ ['_24os_5fpath',['$os_path',['../classRedMatrix_1_1RedDAV_1_1RedDirectory.html#a17ea47e34cb76b6e79f36ebed790d76a',1,'RedMatrix::RedDAV::RedDirectory']]],
['_24out',['$out',['../php2po_8php.html#a48cb304902320d173a4eaa41543327b9',1,'php2po.php']]],
- ['_24owner_5fid',['$owner_id',['../classRedBasicAuth.html#a09c1488a0b290f5a54dc15180c5690d7',1,'RedBasicAuth']]],
+ ['_24owner_5fid',['$owner_id',['../classRedMatrix_1_1RedDAV_1_1RedBasicAuth.html#a1a23c349cc4699a8474505972684ea9c',1,'RedMatrix::RedDAV::RedBasicAuth']]],
['_24owner_5fname',['$owner_name',['../classItem.html#a9594df6014b0b6f45364ea7a34510130',1,'Item']]],
- ['_24owner_5fnick',['$owner_nick',['../classRedBasicAuth.html#a8d09b8d784cc810a0b3be580d05106a7',1,'RedBasicAuth']]],
+ ['_24owner_5fnick',['$owner_nick',['../classRedMatrix_1_1RedDAV_1_1RedBasicAuth.html#aad0ef0cc05c407de84dbfbf2050bbbbe',1,'RedMatrix::RedDAV::RedBasicAuth']]],
['_24owner_5fphoto',['$owner_photo',['../classItem.html#a078f95b4134ce3a1df344cf8d386f986',1,'Item']]],
['_24owner_5furl',['$owner_url',['../classItem.html#afa54851df82962c7c42dea3cc9f5c92c',1,'Item']]],
['_24page',['$page',['../classApp.html#a4b67935096f66d1f14b657399a8461ac',1,'App']]],
@@ -103,8 +101,6 @@ var searchData=
['_24perms',['$perms',['../classApp.html#ab47de68fa39806d1fb0976407e188b77',1,'App']]],
['_24phpath',['$phpath',['../typo_8php.html#a3ecd17ac846be1b35f3662f5c12ab6bd',1,'typo.php']]],
['_24phpfile',['$phpfile',['../php2po_8php.html#abbb0e5fd8fbc1f13a9bf68f86eb3d2a4',1,'php2po.php']]],
- ['_24plugin',['$plugin',['../post__to__red_8php.html#ada8a7130088351710bb02ed622d6bf65',1,'post_to_red.php']]],
- ['_24plugin_5fdir',['$plugin_dir',['../post__to__red_8php.html#a99811555b30bde504a863e44015f2f19',1,'post_to_red.php']]],
['_24plugins',['$plugins',['../classApp.html#ae9f96338f32187d308b67b980eea0008',1,'App']]],
['_24pofile',['$pofile',['../php2po_8php.html#a401d84ce156e49e8168bd0c4781e1be1',1,'php2po.php']]],
['_24poi',['$poi',['../classApp.html#a1936f2afce0dc0d1bbed15ae1f2ee81a',1,'App']]],
@@ -114,13 +110,14 @@ var searchData=
['_24profile_5fowner',['$profile_owner',['../classConversation.html#a2f12724ef0244e9049fe1bb9641b516d',1,'Conversation']]],
['_24profile_5fuid',['$profile_uid',['../classApp.html#a08c24d6a6fc52fcc784b0f765f13b820',1,'App']]],
['_24query_5fstring',['$query_string',['../classApp.html#a2e82da4aecfc2017a8d1d332ca501f9f',1,'App']]],
- ['_24r',['$r',['../classTemplate.html#aac9a4638f11271e1b1dcc9f247242718',1,'Template']]],
+ ['_24r',['$r',['../classTemplate.html#aac9a4638f11271e1b1dcc9f247242718',1,'Template\$r()'],['../fixd_8php.html#a8abe176bc41afd728f32ba8c506cbd98',1,'$r():&#160;fixd.php']]],
+ ['_24rand',['$rand',['../fixd_8php.html#a2da3681c9cce2efe7de29aa578ff4219',1,'fixd.php']]],
['_24rdelim',['$rdelim',['../classApp.html#a244b2d53b21be269aad2269d23192f95',1,'App']]],
- ['_24red_5fpath',['$red_path',['../classRedDirectory.html#acb32b8df27538c57772824a745e751d7',1,'RedDirectory']]],
+ ['_24red_5fpath',['$red_path',['../classRedMatrix_1_1RedDAV_1_1RedDirectory.html#a4bba2e56bc8ec3e05f05eae46f56f36d',1,'RedMatrix::RedDAV::RedDirectory']]],
['_24redirect_5furl',['$redirect_url',['../classItem.html#a5b561415861f5b89b0733aacfe0428d1',1,'Item']]],
['_24replace',['$replace',['../classTemplate.html#a4e86b566c3f728e95ce5db1b33665c10',1,'Template']]],
['_24res',['$res',['../docblox__errorchecker_8php.html#a49a8a4009b02e49717caa88b128affc5',1,'docblox_errorchecker.php']]],
- ['_24root_5fdir',['$root_dir',['../classRedDirectory.html#ad87c514a307ec97ba0f1372e9bcfa6a4',1,'RedDirectory']]],
+ ['_24root_5fdir',['$root_dir',['../classRedMatrix_1_1RedDAV_1_1RedDirectory.html#a438066fb1565fbcffa22c12d5ce23695',1,'RedMatrix::RedDAV::RedDirectory']]],
['_24s',['$s',['../extract_8php.html#a50b05cf2e02ef0b67fcad97106dd7634',1,'extract.php']]],
['_24scheme',['$scheme',['../classApp.html#ad082d63acc078e5bf23825a03bdd6a76',1,'App']]],
['_24search',['$search',['../classTemplate.html#a317d535946dc065c35dd5cd38380e6c6',1,'Template']]],
@@ -131,6 +128,7 @@ var searchData=
['_24session_5fexpire',['$session_expire',['../session_8php.html#af0100a2642a5268594bbd5742a03d885',1,'session.php']]],
['_24showlock',['$showlock',['../apw_2php_2style_8php.html#ad401ea1d1ba236f86863b4574f01e425',1,'style.php']]],
['_24sourcename',['$sourcename',['../classApp.html#a13710907ef62554a0b4dd8a5eaa2eb11',1,'App']]],
+ ['_24src_5fitems',['$src_items',['../classRedMatrix_1_1Import_1_1Import.html#a88c2eeba8d0cba3e7c12a2c45ba0fbc6',1,'RedMatrix::Import::Import']]],
['_24stack',['$stack',['../classTemplate.html#a6f0efc256688c36110180b501067ff11',1,'Template']]],
['_24str',['$str',['../typohelper_8php.html#a7542d95618011800c61773127fa625cf',1,'typohelper.php']]],
['_24strings',['$strings',['../classApp.html#a5f64620473a9727a48ebe9cf6f335a98',1,'App']]],
@@ -143,8 +141,9 @@ var searchData=
['_24theme_5fthread_5fallow',['$theme_thread_allow',['../classApp.html#a487332f8de40414ca1a54a4265570b70',1,'App']]],
['_24threaded',['$threaded',['../classItem.html#a1cb6aa8abdf7ea7daca647e40c8ea3a2',1,'Item']]],
['_24threads',['$threads',['../classConversation.html#a41f4a549e6a99f98935c4742addd22c8',1,'Conversation']]],
- ['_24timezone',['$timezone',['../classApp.html#ab35b01a366a2ea95725e97af278f87ab',1,'App\$timezone()'],['../classRedBasicAuth.html#a2d0246ed446fd5e55c17938b4ce6ac47',1,'RedBasicAuth\$timezone()']]],
+ ['_24timezone',['$timezone',['../classApp.html#ab35b01a366a2ea95725e97af278f87ab',1,'App\$timezone()'],['../classRedMatrix_1_1RedDAV_1_1RedBasicAuth.html#a849c99cf0a7ad065d630c8a30106ad5e',1,'RedMatrix\RedDAV\RedBasicAuth\$timezone()']]],
['_24toplevel',['$toplevel',['../classItem.html#a5cfa6cf964f433a917a81cab079ff9d8',1,'Item']]],
+ ['_24total',['$total',['../fixd_8php.html#a241b818f48030b628685b2e5119c5624',1,'fixd.php']]],
['_24type',['$type',['../classphoto__driver.html#a4920ed7cbb1ac735ac84153067537f03',1,'photo_driver']]],
['_24types',['$types',['../classphoto__driver.html#a00cb166c00b7502dbc456c94330e5b03',1,'photo_driver']]],
['_24uid',['$uid',['../apw_2php_2style_8php.html#a109bbd7f4add27541707b191b73ef84a',1,'style.php']]],
@@ -154,7 +153,6 @@ var searchData=
['_24videowidth',['$videowidth',['../classApp.html#adf2aaf95b062736a6fd5fc70fadf80e8',1,'App']]],
['_24visiting',['$visiting',['../classItem.html#a4a123ae98987c1e30ecb15c4edf5a3b8',1,'Item']]],
['_24wall_5fto_5fwall',['$wall_to_wall',['../classItem.html#a5d29ddecc073151a65a8e2ea2f6e4189',1,'Item']]],
- ['_24widgetlist',['$widgetlist',['../classApp.html#a4833bee2eae4ad1691a04fa19e11a766',1,'App']]],
['_24widgets',['$widgets',['../classApp.html#aa5a87c46ab3fee21362c466bf78042ef',1,'App']]],
['_24width',['$width',['../classphoto__driver.html#a3e4215890f4a4894bf3799a7d2e0c0b1',1,'photo_driver\$width()'],['../minimalisticdarkness_8php.html#a5795120b4b324bc4ca83f1e6fdce7d57',1,'$width():&#160;minimalisticdarkness.php']]],
['_24writable',['$writable',['../classConversation.html#ae81221251307e315f566a11f921ce0a9',1,'Conversation']]],
diff --git a/doc/html/search/all_5f.js b/doc/html/search/all_5f.js
index eb4ffa3bc..419f16ab5 100644
--- a/doc/html/search/all_5f.js
+++ b/doc/html/search/all_5f.js
@@ -1,6 +1,6 @@
var searchData=
[
- ['_5f_5fconstruct',['__construct',['../classApp.html#af6d39f63fb7116bbeb04e51696f99474',1,'App\__construct()'],['../classConversation.html#af84ea6ccd72214c9bb4c504461cc8b09',1,'Conversation\__construct()'],['../classdba__driver.html#af3541d13ccb7a3eddfc03e253c746186',1,'dba_driver\__construct()'],['../classFriendicaSmarty.html#af12091b920b95eeef1218cbc48066ca6',1,'FriendicaSmarty\__construct()'],['../classFriendicaSmartyEngine.html#ab7c305bd8c386c2944e4dc9136cea5b6',1,'FriendicaSmartyEngine\__construct()'],['../classItem.html#a248f45871ecfe82a08d1d4c0769b2eb2',1,'Item\__construct()'],['../classFKOAuth1.html#a2f1276872329a6f0b704ccda1a4b9fa6',1,'FKOAuth1\__construct()'],['../classphoto__driver.html#ac6e85f8e507cab4e755ed7acdec401ae',1,'photo_driver\__construct()'],['../classRedDirectory.html#a1e35e3cd31d2a15250655e4cafdea180',1,'RedDirectory\__construct()'],['../classRedFile.html#a9a67bdb34c9db6ce144b3f371148b183',1,'RedFile\__construct()'],['../classRedBrowser.html#a4b76be9ccef0262cf78fffb4129eda93',1,'RedBrowser\__construct()']]],
+ ['_5f_5fconstruct',['__construct',['../classApp.html#af6d39f63fb7116bbeb04e51696f99474',1,'App\__construct()'],['../classConversation.html#af84ea6ccd72214c9bb4c504461cc8b09',1,'Conversation\__construct()'],['../classdba__driver.html#af3541d13ccb7a3eddfc03e253c746186',1,'dba_driver\__construct()'],['../classItem.html#a248f45871ecfe82a08d1d4c0769b2eb2',1,'Item\__construct()'],['../classFKOAuth1.html#a2f1276872329a6f0b704ccda1a4b9fa6',1,'FKOAuth1\__construct()'],['../classphoto__driver.html#ac6e85f8e507cab4e755ed7acdec401ae',1,'photo_driver\__construct()'],['../classRedMatrix_1_1RedDAV_1_1RedBrowser.html#a8161f2a0be205412e263c947b5ec46c5',1,'RedMatrix\RedDAV\RedBrowser\__construct()'],['../classRedMatrix_1_1RedDAV_1_1RedDirectory.html#a76b58fe5223e565c97f1b9af93031a99',1,'RedMatrix\RedDAV\RedDirectory\__construct()'],['../classRedMatrix_1_1RedDAV_1_1RedFile.html#a05798eac84c578152ff21758261c6ac6',1,'RedMatrix\RedDAV\RedFile\__construct()'],['../classFriendicaSmarty.html#af12091b920b95eeef1218cbc48066ca6',1,'FriendicaSmarty\__construct()'],['../classFriendicaSmartyEngine.html#ab7c305bd8c386c2944e4dc9136cea5b6',1,'FriendicaSmartyEngine\__construct()']]],
['_5f_5fdestruct',['__destruct',['../classdba__driver.html#a1a8bc9dc839a6320a0e07d8047a6b721',1,'dba_driver\__destruct()'],['../classphoto__driver.html#ae4501abdc9651359f81d036b63625686',1,'photo_driver\__destruct()']]],
['_5fbuild_5fnodes',['_build_nodes',['../classTemplate.html#ac41c96e1f407b1a910029e5f4b7de8e4',1,'Template']]],
['_5fget_5fvar',['_get_var',['../classTemplate.html#aae9c4d761ea1298e745e8052d7910194',1,'Template']]],
diff --git a/doc/html/search/all_61.js b/doc/html/search/all_61.js
index 9cfefb2d0..3ab5333ef 100644
--- a/doc/html/search/all_61.js
+++ b/doc/html/search/all_61.js
@@ -3,6 +3,7 @@ var searchData=
['abook_5fconnections',['abook_connections',['../Contact_8php.html#ae8803c330352cbf1e828eb7490edf47e',1,'Contact.php']]],
['abook_5fflag_5farchived',['ABOOK_FLAG_ARCHIVED',['../boot_8php.html#a222395aa223cfbff6166fab0b4e2e1d5',1,'boot.php']]],
['abook_5fflag_5fblocked',['ABOOK_FLAG_BLOCKED',['../boot_8php.html#a52b599cd13e152ebc80d7e4413683195',1,'boot.php']]],
+ ['abook_5fflag_5ffeed',['ABOOK_FLAG_FEED',['../boot_8php.html#ae0d9527117cd87dcba11986047ae336e',1,'boot.php']]],
['abook_5fflag_5fhidden',['ABOOK_FLAG_HIDDEN',['../boot_8php.html#a34c756469ebed32e2fc987bcde62d382',1,'boot.php']]],
['abook_5fflag_5fignored',['ABOOK_FLAG_IGNORED',['../boot_8php.html#aa3425e2de85b08f7041656d3a8502cb6',1,'boot.php']]],
['abook_5fflag_5fpending',['ABOOK_FLAG_PENDING',['../boot_8php.html#a68eebe493e6f729ffd1aeda7a4b11155',1,'boot.php']]],
@@ -21,12 +22,13 @@ var searchData=
['account_5fexpired',['ACCOUNT_EXPIRED',['../boot_8php.html#a400519fa181591cd6fdbb8f25fbcba0a',1,'boot.php']]],
['account_5fok',['ACCOUNT_OK',['../boot_8php.html#a84057c5bfa1bca5fba8497fe005ee4d8',1,'boot.php']]],
['account_5fpending',['ACCOUNT_PENDING',['../boot_8php.html#a032bbd6d0321e99e9117332c9ed2b1b8',1,'boot.php']]],
- ['account_5fremove',['account_remove',['../Contact_8php.html#a6e64de7db60b7243dce45fb6347636ff',1,'Contact.php']]],
+ ['account_5fremove',['account_remove',['../Contact_8php.html#a5101d7eca5d6f387e5555f03fe249e33',1,'Contact.php']]],
['account_5fremoved',['ACCOUNT_REMOVED',['../boot_8php.html#ab5ddbe69d3d03acd06e1fb281488cb78',1,'boot.php']]],
['account_5frole_5fadmin',['ACCOUNT_ROLE_ADMIN',['../boot_8php.html#ac8400313df2c831653f9036f71ebd86d',1,'boot.php']]],
['account_5frole_5fallowcode',['ACCOUNT_ROLE_ALLOWCODE',['../boot_8php.html#a84f48897059bbd4a8738d7ee4cec6688',1,'boot.php']]],
['account_5frole_5fdeveloper',['ACCOUNT_ROLE_DEVELOPER',['../boot_8php.html#a4f507a5996dbb3da148add0339a40d5a',1,'boot.php']]],
['account_5frole_5fsystem',['ACCOUNT_ROLE_SYSTEM',['../boot_8php.html#a7c2eb822d50e1554bf5c32861f36342b',1,'boot.php']]],
+ ['account_5fservice_5fclass_5ffetch',['account_service_class_fetch',['../account_8php.html#a4328c40ee4b3d68630cf1ebb7b9d4d89',1,'account.php']]],
['account_5ftotal',['account_total',['../account_8php.html#a43e3042b2723d76915a030bac3c668b6',1,'account.php']]],
['account_5funverified',['ACCOUNT_UNVERIFIED',['../boot_8php.html#af3a4271630aabd8be592213f925d6a36',1,'boot.php']]],
['account_5fverify_5fpassword',['account_verify_password',['../auth_8php.html#a07bae0e623e2daa9ee2cd5a8aa294dee',1,'auth.php']]],
@@ -80,6 +82,8 @@ var searchData=
['admin_5fpage_5flogs',['admin_page_logs',['../admin_8php.html#a1d1362698af14d209aa3a0fb655551dd',1,'admin.php']]],
['admin_5fpage_5flogs_5fpost',['admin_page_logs_post',['../admin_8php.html#a233b7c8c31776b7020532003c6e44e1c',1,'admin.php']]],
['admin_5fpage_5fplugins',['admin_page_plugins',['../admin_8php.html#a54128076986ba80c4a103de3fc3e19a8',1,'admin.php']]],
+ ['admin_5fpage_5fprofs',['admin_page_profs',['../admin_8php.html#a3deba594ca1e11694eac1de0b724ef0a',1,'admin.php']]],
+ ['admin_5fpage_5fprofs_5fpost',['admin_page_profs_post',['../admin_8php.html#a278289bc6d45f6f2a272a7ab6a1d1057',1,'admin.php']]],
['admin_5fpage_5fsite',['admin_page_site',['../admin_8php.html#ac0f3bd12431c056aad77bac9d09fa30e',1,'admin.php']]],
['admin_5fpage_5fsite_5fpost',['admin_page_site_post',['../admin_8php.html#add865f4ae806ecbf716f423fc3e50e4f',1,'admin.php']]],
['admin_5fpage_5fsummary',['admin_page_summary',['../admin_8php.html#ac6e95b920b5abd030cc522964987087a',1,'admin.php']]],
@@ -125,6 +129,8 @@ var searchData=
['api_5ffriendica_5fversion',['api_friendica_version',['../include_2api_8php.html#a53b0680b682ae6078f2e1ed18cfb3f74',1,'api.php']]],
['api_5ffriends_5fids',['api_friends_ids',['../include_2api_8php.html#acafd2899309a005fcb725289173dc7fe',1,'api.php']]],
['api_5fget_5fuser',['api_get_user',['../include_2api_8php.html#aa40bae797bcd9ccacffdce5a3b5a1afa',1,'api.php']]],
+ ['api_5fgroup',['api_group',['../include_2api_8php.html#ad5fe62d6c25c86999f627b2e6cfde536',1,'api.php']]],
+ ['api_5fgroup_5fmembers',['api_group_members',['../include_2api_8php.html#ae46f964e5a9c80b96dc78df61c09ed3a',1,'api.php']]],
['api_5fhelp_5ftest',['api_help_test',['../include_2api_8php.html#ac5a64cc81d70ff3cf866093ea9721d23',1,'api.php']]],
['api_5fitem_5fget_5fuser',['api_item_get_user',['../include_2api_8php.html#aa49741342ad8ba285737eea1209a37e1',1,'api.php']]],
['api_5flogin',['api_login',['../include_2api_8php.html#afe534f826e4282b72d66e8cadca7bb73',1,'api.php']]],
@@ -132,6 +138,7 @@ var searchData=
['api_5foauth_5frequest_5ftoken',['api_oauth_request_token',['../include_2api_8php.html#aa1bddb580510e70cc1a7b7381667f1a3',1,'api.php']]],
['api_5fphotos',['api_photos',['../include_2api_8php.html#aa6fc3bc8c0fad1d081db0dcc456dd77f',1,'api.php']]],
['api_5fpost',['api_post',['../mod_2api_8php.html#a6fe77f05c07cb51048df0d557b4b9bd2',1,'api.php']]],
+ ['api_5fred_5fxchan',['api_red_xchan',['../include_2api_8php.html#a4fe872332ff0bd8d5eae2f0c6819cb60',1,'api.php']]],
['api_5fregister_5ffunc',['api_register_func',['../include_2api_8php.html#ac2c2b18c426d697d11a830bca146be8a',1,'api.php']]],
['api_5frss_5fextra',['api_rss_extra',['../include_2api_8php.html#a6a04b48168ba1d9dd2de3081a630611f',1,'api.php']]],
['api_5fstatus_5fshow',['api_status_show',['../include_2api_8php.html#a645397787618b5c548a31e8686e8cca4',1,'api.php']]],
@@ -166,8 +173,8 @@ var searchData=
['appman_2ephp',['appman.php',['../appman_8php.html',1,'']]],
['appman_5fcontent',['appman_content',['../appman_8php.html#af48805ac2f6f123f2681a8ae1c6f123f',1,'appman.php']]],
['appman_5fpost',['appman_post',['../appman_8php.html#a2979acbe47ffaecfa19b9eabfbfbde39',1,'appman.php']]],
- ['apps_2ephp',['apps.php',['../include_2apps_8php.html',1,'']]],
['apps_2ephp',['apps.php',['../mod_2apps_8php.html',1,'']]],
+ ['apps_2ephp',['apps.php',['../include_2apps_8php.html',1,'']]],
['apps_5fcontent',['apps_content',['../mod_2apps_8php.html#a546016cb960d0b110ee8e489dfa6c27c',1,'apps.php']]],
['apw_5fform',['apw_form',['../view_2theme_2apw_2php_2config_8php.html#ad59fc09da66b66267f9753c8b2dd68d0',1,'config.php']]],
['apw_5finit',['apw_init',['../apw_2php_2theme_8php.html#a42167c539043a39a6b83c252d05f1e89',1,'theme.php']]],
diff --git a/doc/html/search/all_62.js b/doc/html/search/all_62.js
index 50e7ad7af..c4d2bcad1 100644
--- a/doc/html/search/all_62.js
+++ b/doc/html/search/all_62.js
@@ -6,9 +6,15 @@ var searchData=
['baseobject_2ephp',['BaseObject.php',['../BaseObject_8php.html',1,'']]],
['bb2diaspora',['bb2diaspora',['../bb2diaspora_8php.html#a4f10e0876b27373c762bc1abbe745f5c',1,'bb2diaspora.php']]],
['bb2diaspora_2ephp',['bb2diaspora.php',['../bb2diaspora_8php.html',1,'']]],
+ ['bb2diaspora_5fitembody',['bb2diaspora_itembody',['../bb2diaspora_8php.html#ab27761069ea1275f0fc4c543099c5519',1,'bb2diaspora.php']]],
+ ['bb2diaspora_5fitemwallwall',['bb2diaspora_itemwallwall',['../bb2diaspora_8php.html#aab32042f8bd63552d3fadeeae9eab083',1,'bb2diaspora.php']]],
+ ['bb2dmention_5fcallback',['bb2dmention_callback',['../bb2diaspora_8php.html#a5258d2f1addeb0a2a6b54c4f9e7d0f34',1,'bb2diaspora.php']]],
['bb_5flocation',['bb_location',['../bbcode_8php.html#a3435c82a6c7693557800cdeb6848d0bd',1,'bbcode.php']]],
+ ['bb_5fmap_5fcoords',['bb_map_coords',['../bbcode_8php.html#a02d5f2434e7bb5cf683e52a9b4787f24',1,'bbcode.php']]],
+ ['bb_5fmap_5flocation',['bb_map_location',['../bbcode_8php.html#a7cb403fd1c36d7376c2f3932a1ceb54d',1,'bbcode.php']]],
['bb_5fparse_5fapp',['bb_parse_app',['../bbcode_8php.html#abb02f1044ff1c635d12af690d0f2cfa2',1,'bbcode.php']]],
['bb_5fparse_5fcrypt',['bb_parse_crypt',['../bbcode_8php.html#a851f5aafefe52474201b83f9fd65931f',1,'bbcode.php']]],
+ ['bb_5fparse_5felement',['bb_parse_element',['../bbcode_8php.html#aa73fb62e7be1fa5fce4ad5f3d4487fc9',1,'bbcode.php']]],
['bb_5fqr',['bb_qr',['../bbcode_8php.html#a98d0eecc620c19561639f06cfbe8e74c',1,'bbcode.php']]],
['bb_5fsanitize_5fstyle',['bb_sanitize_style',['../bbcode_8php.html#a3a989cbf308a32468d171d83e9c51d1e',1,'bbcode.php']]],
['bb_5fshareattributes',['bb_ShareAttributes',['../bbcode_8php.html#a1c69e021d5e0aef97d6966bf3169c86a',1,'bbcode.php']]],
@@ -28,15 +34,10 @@ var searchData=
['block_5finit',['block_init',['../block_8php.html#a9b61c96044ed2a068f18c10370a78d5c',1,'block.php']]],
['blocks_2ephp',['blocks.php',['../blocks_8php.html',1,'']]],
['blocks_5fcontent',['blocks_content',['../blocks_8php.html#a2531a8fd51db3cecb2eb20c002c66e12',1,'blocks.php']]],
- ['blog_5finit',['blog_init',['../blogga_2php_2theme_8php.html#aa55c1cb1f05087b5002ecb633b550b1b',1,'blog_init(&amp;$a):&#160;theme.php'],['../blogga_2view_2theme_2blog_2theme_8php.html#aa55c1cb1f05087b5002ecb633b550b1b',1,'blog_init(&amp;$a):&#160;theme.php']]],
- ['blog_5finstall',['blog_install',['../blogga_2view_2theme_2blog_2theme_8php.html#aae58cc837fe56473d9f3370abfe533ae',1,'theme.php']]],
- ['blog_5funinstall',['blog_uninstall',['../blogga_2view_2theme_2blog_2theme_8php.html#a3e77dbe111f330c64a1ff6c741cd515c',1,'theme.php']]],
- ['blogtheme_5fdisplay_5fitem',['blogtheme_display_item',['../blogga_2view_2theme_2blog_2theme_8php.html#a028ae8e9f2824670dfa76a6651d817e5',1,'theme.php']]],
- ['blogtheme_5fform',['blogtheme_form',['../view_2theme_2blogga_2php_2config_8php.html#a8a311a402d3e746ce53fadc38e4b2d27',1,'blogtheme_form(&amp;$a, $headimg, $headimghome):&#160;config.php'],['../view_2theme_2blogga_2view_2theme_2blog_2config_8php.html#a8a311a402d3e746ce53fadc38e4b2d27',1,'blogtheme_form(&amp;$a, $headimg, $headimghome):&#160;config.php']]],
- ['blogtheme_5fimgurl',['blogtheme_imgurl',['../blogga_2view_2theme_2blog_2theme_8php.html#af634a3f721c5e238530d0636d33230ec',1,'theme.php']]],
+ ['blocks_5finit',['blocks_init',['../blocks_8php.html#aebe88302181883d2b17d6e98a1aaebe9',1,'blocks.php']]],
['bookmark_5fadd',['bookmark_add',['../include_2bookmarks_8php.html#aef1cb2968c41c759f2d106e1088ca323',1,'bookmarks.php']]],
- ['bookmarks_2ephp',['bookmarks.php',['../mod_2bookmarks_8php.html',1,'']]],
['bookmarks_2ephp',['bookmarks.php',['../include_2bookmarks_8php.html',1,'']]],
+ ['bookmarks_2ephp',['bookmarks.php',['../mod_2bookmarks_8php.html',1,'']]],
['bookmarks_5fcontent',['bookmarks_content',['../mod_2bookmarks_8php.html#a774364b1c8404529581083631703527a',1,'bookmarks.php']]],
['bookmarks_5finit',['bookmarks_init',['../mod_2bookmarks_8php.html#a6b7942f3d27e40f0f47c88704127b9b3',1,'bookmarks.php']]],
['boot_2ephp',['boot.php',['../boot_8php.html',1,'']]],
@@ -45,5 +46,5 @@ var searchData=
['bs_2ddefault_2ephp',['BS-Default.php',['../BS-Default_8php.html',1,'']]],
['build_5fpagehead',['build_pagehead',['../classApp.html#a08f0537964d98958d218066364cff785',1,'App']]],
['build_5fquerystring',['build_querystring',['../boot_8php.html#a9cbab4ee728e9a8b4ce952bae643044e',1,'boot.php']]],
- ['build_5fsync_5fpacket',['build_sync_packet',['../zot_8php.html#ac34e479d27f32b82dd6b33542f81a6a7',1,'zot.php']]]
+ ['build_5fsync_5fpacket',['build_sync_packet',['../zot_8php.html#aa97b33b619dd7132a9274f852af6ceb5',1,'zot.php']]]
];
diff --git a/doc/html/search/all_63.js b/doc/html/search/all_63.js
index a236eb8fb..02105a0a3 100644
--- a/doc/html/search/all_63.js
+++ b/doc/html/search/all_63.js
@@ -5,19 +5,17 @@ var searchData=
['cal',['cal',['../datetime_8php.html#aea356409ba69f9de412298c998595dd2',1,'datetime.php']]],
['call_5fhooks',['call_hooks',['../plugin_8php.html#a7f05de16c0a32602853b09b99dd85e7c',1,'plugin.php']]],
['can_5fcomment_5fon_5fpost',['can_comment_on_post',['../items_8php.html#a1e75047cf175aaee8dd16aa761913ff9',1,'items.php']]],
+ ['catblock',['catblock',['../taxonomy_8php.html#aa8f8a1ff85daef046298e93c83e7a1b4',1,'taxonomy.php']]],
['categories_5fwidget',['categories_widget',['../contact__widgets_8php.html#a165eb021e61c4dcab2a552f28628d353',1,'contact_widgets.php']]],
['change_5fchannel',['change_channel',['../security_8php.html#a8d23d2597aae380a3341872fe9513380',1,'security.php']]],
['change_5fpermissions',['change_permissions',['../classProtoDriver.html#a34b97ca5ef2165f2e16eb2fe59ff6c67',1,'ProtoDriver\change_permissions()'],['../classZotDriver.html#a6776935156accb0f170e2e24577133db',1,'ZotDriver\change_permissions()']]],
['chanlink_5fcid',['chanlink_cid',['../text_8php.html#a85e3a4851c16674834010d8419a5d7ca',1,'text.php']]],
['chanlink_5fhash',['chanlink_hash',['../text_8php.html#a55ab893be57feda59c2a7ba1e58ff2d0',1,'text.php']]],
['chanlink_5furl',['chanlink_url',['../text_8php.html#a2e8d6c402603be3a1256a16605e09c2a',1,'text.php']]],
- ['chanman_2ephp',['chanman.php',['../mod_2chanman_8php.html',1,'']]],
- ['chanman_2ephp',['chanman.php',['../include_2chanman_8php.html',1,'']]],
- ['chanman_5fremove_5feverything_5ffrom_5fnetwork',['chanman_remove_everything_from_network',['../include_2chanman_8php.html#a21ba9a5c961e866ff27aee3ee67bf99b',1,'chanman.php']]],
['channel_2ephp',['channel.php',['../channel_8php.html',1,'']]],
['channel_5fcontent',['channel_content',['../channel_8php.html#a9c6a6179e0e626398ebecc6151905ef1',1,'channel.php']]],
['channel_5finit',['channel_init',['../channel_8php.html#ac7c8c7845741baadf87fae6bc279f3dc',1,'channel.php']]],
- ['channel_5fremove',['channel_remove',['../Contact_8php.html#a186162051a5127069cc851d78740f205',1,'Contact.php']]],
+ ['channel_5fremove',['channel_remove',['../Contact_8php.html#a4e8af0f0525161da74583c04b8b03097',1,'Contact.php']]],
['channel_5ftotal',['channel_total',['../identity_8php.html#a77d2237f1846964634b1c99089c27c7d',1,'identity.php']]],
['channelx_5fby_5fhash',['channelx_by_hash',['../Contact_8php.html#a483cda56f9e37c3a4a8773dcdfeb0258',1,'Contact.php']]],
['channelx_5fby_5fn',['channelx_by_n',['../Contact_8php.html#a3a0844dac1e86d523de5d2f432cfeebc',1,'Contact.php']]],
@@ -35,6 +33,7 @@ var searchData=
['chatroom_5fenter',['chatroom_enter',['../include_2chat_8php.html#a2c95b545e46bfee64faa05ecf0afea91',1,'chat.php']]],
['chatroom_5fleave',['chatroom_leave',['../include_2chat_8php.html#a1ee1360f7d2549c7549ae07cb5190f0f',1,'chat.php']]],
['chatroom_5flist',['chatroom_list',['../include_2chat_8php.html#aedcb532a0627b8644001a2fadab4e87a',1,'chat.php']]],
+ ['chatroom_5flist_5fcount',['chatroom_list_count',['../include_2chat_8php.html#a26abdccc2a278a59899896dbbfc6f049',1,'chat.php']]],
['chatsvc_2ephp',['chatsvc.php',['../chatsvc_8php.html',1,'']]],
['chatsvc_5fcontent',['chatsvc_content',['../chatsvc_8php.html#a7032784215e1f6747cf385a6598770f9',1,'chatsvc.php']]],
['chatsvc_5finit',['chatsvc_init',['../chatsvc_8php.html#a28d248b056fa47452e28ed01130e9116',1,'chatsvc.php']]],
@@ -58,9 +57,10 @@ var searchData=
['check_5fphp',['check_php',['../setup_8php.html#a14d208682a88632290c895d20da6e7d6',1,'setup.php']]],
['check_5fsmarty3',['check_smarty3',['../setup_8php.html#afd8b0b3ade1507c45325caf377bf459d',1,'setup.php']]],
['check_5fstore',['check_store',['../setup_8php.html#ab4b71369a25021d59247c917e98d8246',1,'setup.php']]],
+ ['check_5fupstream_5fdirectory',['check_upstream_directory',['../dir__fns_8php.html#a2f7d74bb2aea8bcd2537aee5c6708a16',1,'dir_fns.php']]],
['check_5fwall_5fto_5fwall',['check_wall_to_wall',['../classItem.html#abcdb0ea9bcd1576bc99bba9b8f700bb8',1,'Item']]],
['check_5fwebbie',['check_webbie',['../text_8php.html#a0c65597bb4aed3a039eb795ff540e5e3',1,'text.php']]],
- ['childexists',['childExists',['../classRedDirectory.html#a5e3fc08b2bf9f61cea4d2ccae0495bec',1,'RedDirectory']]],
+ ['childexists',['childExists',['../classRedMatrix_1_1RedDAV_1_1RedDirectory.html#a964b13fde1a5da6f76b51ca5519234dc',1,'RedMatrix::RedDAV::RedDirectory']]],
['choklet_2ephp',['choklet.php',['../choklet_8php.html',1,'']]],
['clean_5furls',['clean_urls',['../boot_8php.html#ab79b8b4555cae20d03f8200666d89d63',1,'boot.php']]],
['clear',['clear',['../classCache.html#ab14d0f4bdf7116a94d545c574b38f568',1,'Cache']]],
@@ -72,12 +72,12 @@ var searchData=
['client_5fmode_5fload',['CLIENT_MODE_LOAD',['../boot_8php.html#af6f6f6f40139f12fc09ec47373b30919',1,'boot.php']]],
['client_5fmode_5fnormal',['CLIENT_MODE_NORMAL',['../boot_8php.html#a43c6c7d84d880e9500bd4f8f8ecc5731',1,'boot.php']]],
['client_5fmode_5fupdate',['CLIENT_MODE_UPDATE',['../boot_8php.html#a3f40aa5bafff8c4eebdc62e5121daf77',1,'boot.php']]],
- ['close',['close',['../classdba__driver.html#a5afa54172f3c837df61643f8f5b2c975',1,'dba_driver\close()'],['../classdba__mysql.html#a850586714ef897bd25f643c89b4ef76e',1,'dba_mysql\close()'],['../classdba__mysqli.html#acb38f2c851187ad632ecfab30fdfab55',1,'dba_mysqli\close()']]],
+ ['close',['close',['../classdba__driver.html#a5afa54172f3c837df61643f8f5b2c975',1,'dba_driver\close()'],['../classdba__mysql.html#a850586714ef897bd25f643c89b4ef76e',1,'dba_mysql\close()'],['../classdba__mysqli.html#acb38f2c851187ad632ecfab30fdfab55',1,'dba_mysqli\close()'],['../classdba__postgres.html#a731d8648b41b8a126f6b99bdd5414058',1,'dba_postgres\close()']]],
['cloud_2ephp',['cloud.php',['../cloud_8php.html',1,'']]],
- ['cloud_5finit',['cloud_init',['../cloud_8php.html#a1b79a6fe0454bc76673ad9aef55bf02d',1,'cloud.php']]],
+ ['cloud_5finit',['cloud_init',['../cloud_8php.html#ad2e96e917852f27dedfc263d37e13756',1,'cloud.php']]],
['collect',['collect',['../classProtoDriver.html#a2ba1758f0f9e3564580b6ff85292804d',1,'ProtoDriver\collect()'],['../classZotDriver.html#af65febb26031eb7f39871b9e2a539797',1,'ZotDriver\collect()']]],
['collect_5fprivate',['collect_private',['../classProtoDriver.html#af66171aa7dab9b62cee915cb4f1abe1b',1,'ProtoDriver\collect_private()'],['../classZotDriver.html#a2e15ff09772f0608203dad1c98299394',1,'ZotDriver\collect_private()']]],
- ['collect_5frecipients',['collect_recipients',['../items_8php.html#a01e3cf44e082fa9bd06dcde5bf713d70',1,'items.php']]],
+ ['collect_5frecipients',['collect_recipients',['../items_8php.html#a772f0ae77ad77c8ab68ed918a3870946',1,'items.php']]],
['collecturls',['collecturls',['../html2plain_8php.html#ae1c203d0f089d5678d73a6c64a395201',1,'html2plain.php']]],
['comanche_2ephp',['comanche.php',['../comanche_8php.html',1,'']]],
['comanche_5fblock',['comanche_block',['../comanche_8php.html#a5a7ab801717d38e91ac910b933973887',1,'comanche.php']]],
@@ -88,6 +88,7 @@ var searchData=
['comanche_5freplace_5fregion',['comanche_replace_region',['../comanche_8php.html#a028f004d5b8c23d6367816d899e17cfe',1,'comanche.php']]],
['comanche_5fwebpage',['comanche_webpage',['../comanche_8php.html#ae9fe1ce574db3dd0931eada80234f82a',1,'comanche.php']]],
['comanche_5fwidget',['comanche_widget',['../comanche_8php.html#a6b0191c1a63db1696a2eb139d90d9e7f',1,'comanche.php']]],
+ ['comments_5fare_5fnow_5fclosed',['comments_are_now_closed',['../items_8php.html#abeb7886cde44d9a83dbaf2bc4ab18723',1,'items.php']]],
['common_2ephp',['common.php',['../common_8php.html',1,'']]],
['common_5fcontent',['common_content',['../common_8php.html#ab63408f39abef7a6915186e8dabc5a96',1,'common.php']]],
['common_5ffriends',['common_friends',['../socgraph_8php.html#a7d34cd58025bcd9e575282f44db75918',1,'socgraph.php']]],
@@ -96,13 +97,12 @@ var searchData=
['common_5finit',['common_init',['../common_8php.html#aca62f113655809f41f49042ce9b123c2',1,'common.php']]],
['compare_5fpermissions',['compare_permissions',['../items_8php.html#a0790a4550b829e85504af548623002ca',1,'items.php']]],
['completeurl',['completeurl',['../parse__url_8php.html#a496f4e3836154f6f32b8e805a7160d3a',1,'parse_url.php']]],
+ ['concat',['concat',['../classdba__driver.html#ab9982f38a02f008b127a0f3ccc1e99f4',1,'dba_driver\concat()'],['../classdba__postgres.html#a7ea3f24ad260c1e21588f8b5af595caa',1,'dba_postgres\concat()']]],
['config_2emd',['config.md',['../config_8md.html',1,'']]],
['config_2ephp',['config.php',['../view_2theme_2apw_2php_2config_8php.html',1,'']]],
- ['config_2ephp',['config.php',['../view_2theme_2blogga_2php_2config_8php.html',1,'']]],
- ['config_2ephp',['config.php',['../view_2theme_2blogga_2view_2theme_2blog_2config_8php.html',1,'']]],
['config_2ephp',['config.php',['../view_2theme_2redbasic_2php_2config_8php.html',1,'']]],
['config_2ephp',['config.php',['../include_2config_8php.html',1,'']]],
- ['connect',['connect',['../classdba__driver.html#ae533e62a240a793f17aef5ab4ef10edc',1,'dba_driver\connect()'],['../classdba__mysql.html#a1887338627ce0e28786839363014bd0b',1,'dba_mysql\connect()'],['../classdba__mysqli.html#add062bd93961e5f0194d94820e9a51b1',1,'dba_mysqli\connect()']]],
+ ['connect',['connect',['../classdba__driver.html#ae533e62a240a793f17aef5ab4ef10edc',1,'dba_driver\connect()'],['../classdba__mysql.html#a1887338627ce0e28786839363014bd0b',1,'dba_mysql\connect()'],['../classdba__mysqli.html#add062bd93961e5f0194d94820e9a51b1',1,'dba_mysqli\connect()'],['../classdba__postgres.html#ab36244320f5b71dba92d9318ccf3f34e',1,'dba_postgres\connect()']]],
['connect_2ephp',['connect.php',['../connect_8php.html',1,'']]],
['connect_5fcontent',['connect_content',['../connect_8php.html#a489f0a66c660de6ec4d6917b27674f07',1,'connect.php']]],
['connect_5finit',['connect_init',['../connect_8php.html#ad46a38f32fd7a3d324b1fa26373efa36',1,'connect.php']]],
@@ -121,7 +121,7 @@ var searchData=
['construct_5factivity_5ftarget',['construct_activity_target',['../items_8php.html#aa579bc4445d60098b1410961ca8e96b7',1,'items.php']]],
['construct_5fpage',['construct_page',['../boot_8php.html#acc4e0c910af066148b810e5fde55fff1',1,'boot.php']]],
['construct_5fverb',['construct_verb',['../items_8php.html#a8f3c85c584ccd2b98c3ca440e45b40f8',1,'items.php']]],
- ['consume_5ffeed',['consume_feed',['../items_8php.html#a8794863cdf8ce1333040933d3a3f66bd',1,'items.php']]],
+ ['consume_5ffeed',['consume_feed',['../items_8php.html#adc26e08aa61f5666da04ab5d2a9d68a6',1,'items.php']]],
['contact_2ephp',['Contact.php',['../Contact_8php.html',1,'']]],
['contact_5fblock',['contact_block',['../text_8php.html#ad6432621d0fafcbcf3d3b9b49bef7784',1,'text.php']]],
['contact_5fis_5ffollower',['CONTACT_IS_FOLLOWER',['../boot_8php.html#ada72d88ae39a7e3b45baea201cb49a29',1,'boot.php']]],
@@ -130,7 +130,6 @@ var searchData=
['contact_5fpoll_5finterval',['contact_poll_interval',['../contact__selectors_8php.html#a9839e8fdaac7ffb37bf1420493f5c28f',1,'contact_selectors.php']]],
['contact_5fprofile_5fassign',['contact_profile_assign',['../contact__selectors_8php.html#a2c743d2eb526eb758d943a1490162d75',1,'contact_selectors.php']]],
['contact_5fremove',['contact_remove',['../Contact_8php.html#a28e062c884331dbb5dfa713228c25ad6',1,'Contact.php']]],
- ['contact_5freputation',['contact_reputation',['../contact__selectors_8php.html#ae499960d6467bd30c78607b1018baf53',1,'contact_selectors.php']]],
['contact_5fselect',['contact_select',['../acl__selectors_8php.html#a9476997d2968a5794f3723878ed89c91',1,'acl_selectors.php']]],
['contact_5fselectors_2ephp',['contact_selectors.php',['../contact__selectors_8php.html',1,'']]],
['contact_5fwidgets_2ephp',['contact_widgets.php',['../contact__widgets_8php.html',1,'']]],
@@ -141,16 +140,20 @@ var searchData=
['conversation_2ephp',['conversation.php',['../conversation_8php.html',1,'']]],
['conversationobject_2ephp',['ConversationObject.php',['../ConversationObject_8php.html',1,'']]],
['convert',['convert',['../namespacefriendica-to-smarty-tpl.html#a38503e37fe68ac27c88cce91a9ac9efa',1,'friendica-to-smarty-tpl']]],
+ ['convert_5fchild',['convert_child',['../classRedMatrix_1_1Import_1_1Import.html#a5434325afb2c633c52540127d717800a',1,'RedMatrix::Import::Import']]],
+ ['convert_5fitem',['convert_item',['../classRedMatrix_1_1Import_1_1Import.html#a107703a43a1b0ceb2af7ae470cb3f218',1,'RedMatrix::Import::Import']]],
+ ['convert_5ftaxonomy',['convert_taxonomy',['../classRedMatrix_1_1Import_1_1Import.html#addf6e53dacd971eaab49be4b17a767d6',1,'RedMatrix::Import::Import']]],
['convert_5fxml_5felement_5fto_5farray',['convert_xml_element_to_array',['../include_2network_8php.html#ad4056d3ce69988f5c1a997a79f503246',1,'network.php']]],
['count_5fall_5ffriends',['count_all_friends',['../socgraph_8php.html#af29d056beec10b4e38e5209c92452894',1,'socgraph.php']]],
['count_5fcommon_5ffriends',['count_common_friends',['../socgraph_8php.html#a887d576f21fd708132a06d0f72f90f84',1,'socgraph.php']]],
['count_5fcommon_5ffriends_5fzcid',['count_common_friends_zcid',['../socgraph_8php.html#af175807406d94407a5e11742a3287746',1,'socgraph.php']]],
['count_5fdescendants',['count_descendants',['../classItem.html#aca1e66988ed00cd627b2a359b72cd0ae',1,'Item\count_descendants()'],['../conversation_8php.html#ab2383dff4f823e580399ff469d90ab19',1,'count_descendants():&#160;conversation.php']]],
+ ['count_5funseen_5fdescendants',['count_unseen_descendants',['../classItem.html#ae0c48b2fed5558642549cabd547fc4f3',1,'Item']]],
['create_5faccount',['create_account',['../account_8php.html#a141fe579c351c78209d425473f978eb5',1,'account.php']]],
['create_5fidentity',['create_identity',['../identity_8php.html#a345f4c943d84de502ec6e72d2c813945',1,'identity.php']]],
['create_5fsys_5fchannel',['create_sys_channel',['../identity_8php.html#a1cf83ac2b645de12868edaa3a5718f05',1,'identity.php']]],
- ['createdirectory',['createDirectory',['../classRedDirectory.html#a986936910f0216887a25e28916c166c7',1,'RedDirectory']]],
- ['createfile',['createFile',['../classRedDirectory.html#a2d12d99d38a6a75fc9a830b2f7fc0bf0',1,'RedDirectory']]],
+ ['createdirectory',['createDirectory',['../classRedMatrix_1_1RedDAV_1_1RedDirectory.html#aca0e8d574ea66a0e210f571700663c62',1,'RedMatrix::RedDAV::RedDirectory']]],
+ ['createfile',['createFile',['../classRedMatrix_1_1RedDAV_1_1RedDirectory.html#a58e750256cdc2f0f79fbe8d5463ffefe',1,'RedMatrix::RedDAV::RedDirectory']]],
['cronhooks_2ephp',['cronhooks.php',['../cronhooks_8php.html',1,'']]],
['cronhooks_5frun',['cronhooks_run',['../cronhooks_8php.html#a4c4c1bbec4ecc9a0efa00dd6afd2c0ca',1,'cronhooks.php']]],
['cropimage',['cropImage',['../classphoto__driver.html#a2e6e61f1e356a90bc978f4404a77137e',1,'photo_driver\cropImage()'],['../classphoto__gd.html#ab2232d775c8bacf66773a03308105f0c',1,'photo_gd\cropImage()'],['../classphoto__imagick.html#a2f33a03a89497a2b2768e29736d4a8a4',1,'photo_imagick\cropImage()']]],
diff --git a/doc/html/search/all_64.js b/doc/html/search/all_64.js
index 7596f0720..b69aa1e2f 100644
--- a/doc/html/search/all_64.js
+++ b/doc/html/search/all_64.js
@@ -4,30 +4,41 @@ var searchData=
['darkness_2ephp',['darkness.php',['../darkness_8php.html',1,'']]],
['darknessleftaside_2ephp',['darknessleftaside.php',['../darknessleftaside_8php.html',1,'']]],
['darknessrightaside_2ephp',['darknessrightaside.php',['../darknessrightaside_8php.html',1,'']]],
- ['datesel',['datesel',['../datetime_8php.html#ac265b86f384ee094ed5479aae02aa5c8',1,'datetime.php']]],
- ['datesel_5fformat',['datesel_format',['../datetime_8php.html#a5f29553799005b1fd4e9ce9d98ce05aa',1,'datetime.php']]],
+ ['datesel',['datesel',['../datetime_8php.html#a77bb385ae8a9e7ca663309c102c0d766',1,'datetime.php']]],
['datetime_2ephp',['datetime.php',['../datetime_8php.html',1,'']]],
['datetime_5fconvert',['datetime_convert',['../datetime_8php.html#ad6301e74b0f9267d52f8d432b5beb226',1,'datetime.php']]],
+ ['datetimesel',['datetimesel',['../datetime_8php.html#a72218e5ee21876484934bacbb6bd9ba3',1,'datetime.php']]],
['day_5ftranslate',['day_translate',['../text_8php.html#a63fb21c0bed2fc72eef2c1471ac42b63',1,'text.php']]],
+ ['db_5fconcat',['db_concat',['../dba__driver_8php.html#a7c1b98a710ead27382c958ad3216c4ee',1,'dba_driver.php']]],
+ ['db_5fgetfunc',['db_getfunc',['../dba__driver_8php.html#a2994daa03b1c23229a27e39bcab75e67',1,'dba_driver.php']]],
+ ['db_5foptimizetable',['db_optimizetable',['../dba__driver_8php.html#a75098bf1d59ea57f7ebae657a369137e',1,'dba_driver.php']]],
+ ['db_5fquoteinterval',['db_quoteinterval',['../dba__driver_8php.html#acec84a8fb75d78daf657cbe5df74e25a',1,'dba_driver.php']]],
['db_5fupdate_2ephp',['db_update.php',['../db__update_8php.html',1,'']]],
['db_5fupdate_5fversion',['DB_UPDATE_VERSION',['../boot_8php.html#ac59a18a4838710d6c2de37aed6b21f03',1,'boot.php']]],
+ ['db_5futcnow',['db_utcnow',['../dba__driver_8php.html#a30e9a643be804e905f5614a3279d2645',1,'dba_driver.php']]],
['dba_5fdriver',['dba_driver',['../classdba__driver.html',1,'']]],
['dba_5fdriver_2ephp',['dba_driver.php',['../dba__driver_8php.html',1,'']]],
- ['dba_5ffactory',['dba_factory',['../dba__driver_8php.html#ac10e60f6e5b95bcf67bd82cb88f37947',1,'dba_driver.php']]],
+ ['dba_5ffactory',['dba_factory',['../dba__driver_8php.html#a5df8499634c47b30191f34069d7b98c0',1,'dba_driver.php']]],
['dba_5fmysql',['dba_mysql',['../classdba__mysql.html',1,'']]],
['dba_5fmysql_2ephp',['dba_mysql.php',['../dba__mysql_8php.html',1,'']]],
['dba_5fmysqli',['dba_mysqli',['../classdba__mysqli.html',1,'']]],
['dba_5fmysqli_2ephp',['dba_mysqli.php',['../dba__mysqli_8php.html',1,'']]],
+ ['dba_5fpostgres',['dba_postgres',['../classdba__postgres.html',1,'']]],
+ ['dba_5fpostgres_2ephp',['dba_postgres.php',['../dba__postgres_8php.html',1,'']]],
['dba_5ftimer',['dba_timer',['../boot_8php.html#a3e0930933fb2c0bf8211cc7ab4e1c3b4',1,'boot.php']]],
['dbesc',['dbesc',['../dba__driver_8php.html#ab222aa1dbf9ea93b320f82028739127e',1,'dba_driver.php']]],
['dbesc_5farray',['dbesc_array',['../dba__driver_8php.html#a65b83462bd26968106aebd43f16540e4',1,'dba_driver.php']]],
['dbesc_5farray_5fcb',['dbesc_array_cb',['../dba__driver_8php.html#af531546fac5f0836a8557a4f6dfee930',1,'dba_driver.php']]],
+ ['dbesc_5fidentifier',['dbesc_identifier',['../dba__driver_8php.html#aa051799567690a124a3b865bf902f58a',1,'dba_driver.php']]],
+ ['dbescbin',['dbescbin',['../dba__driver_8php.html#a2a38996670c2936b5769270c49c57593',1,'dba_driver.php']]],
+ ['dbescdate',['dbescdate',['../dba__driver_8php.html#a2c8a72ec73f39b17a167c90737693f78',1,'dba_driver.php']]],
['dbg',['dbg',['../classdba__driver.html#adcc1f8955120fec0708bce39202d0422',1,'dba_driver\dbg()'],['../dba__driver_8php.html#aa6607893d8f60ade9122bcfbd1a53ffb',1,'dbg():&#160;dba_driver.php']]],
['dbq',['dbq',['../dba__driver_8php.html#aa377074e70981e8c4e82ca0accd068ee',1,'dba_driver.php']]],
+ ['dbtype_5fmysql',['DBTYPE_MYSQL',['../boot_8php.html#a8c9a11c47394244cbe18cd75b9726d5f',1,'boot.php']]],
+ ['dbtype_5fpostgres',['DBTYPE_POSTGRES',['../boot_8php.html#a37ddabc112db443b4c67fbc0f708817e',1,'boot.php']]],
+ ['dbunescbin',['dbunescbin',['../dba__driver_8php.html#afaaa1a7eff9c1b65b3b8c464ae37640e',1,'dba_driver.php']]],
['decode_5ftags',['decode_tags',['../items_8php.html#a56b2a4abcadfac71175cd50555528cc3',1,'items.php']]],
['default_2ephp',['default.php',['../php_2default_8php.html',1,'']]],
- ['default_2ephp',['default.php',['../theme_2blogga_2php_2default_8php.html',1,'']]],
- ['default_2ephp',['default.php',['../theme_2blogga_2view_2theme_2blog_2default_8php.html',1,'']]],
['default_2ephp',['default.php',['../theme_2mytheme_2php_2default_8php.html',1,'']]],
['default_5fdb_5fengine',['DEFAULT_DB_ENGINE',['../boot_8php.html#aa8a2b61e70900139d1ca28e46f1da49d',1,'boot.php']]],
['del_5fconfig',['del_config',['../include_2config_8php.html#a549910227348003efc3c05c9105c42da',1,'config.php']]],
@@ -35,7 +46,7 @@ var searchData=
['del_5fxconfig',['del_xconfig',['../include_2config_8php.html#a9c171def547deee16738dc58fdeb4b72',1,'config.php']]],
['delegate_2ephp',['delegate.php',['../delegate_8php.html',1,'']]],
['delegate_5fcontent',['delegate_content',['../delegate_8php.html#a943eea8996ef348eb845c498f9f354dd',1,'delegate.php']]],
- ['delete',['delete',['../classRedFile.html#aef71c9eaac7052be7dc8602eb12171e7',1,'RedFile']]],
+ ['delete',['delete',['../classRedMatrix_1_1RedDAV_1_1RedFile.html#ab7ab7ba81fab28eb02382cfdfd80ecfe',1,'RedMatrix::RedDAV::RedFile']]],
['delete_5fimported_5fitem',['delete_imported_item',['../zot_8php.html#adfeb9400ae6b726beec89f8f1e8fde72',1,'zot.php']]],
['delete_5fitem_5flowlevel',['delete_item_lowlevel',['../items_8php.html#aac8c9eb4338e2a996c43914392c6cfdb',1,'items.php']]],
['deletenode',['deletenode',['../html2bbcode_8php.html#a71a07f135d196ec5943b13f7b2e6a9b2',1,'html2bbcode.php']]],
@@ -43,12 +54,49 @@ var searchData=
['deliver_2ephp',['deliver.php',['../deliver_8php.html',1,'']]],
['deliver_5fprivate',['deliver_private',['../classProtoDriver.html#ae5b44739f84c10d00a9b65adf3785181',1,'ProtoDriver\deliver_private()'],['../classZotDriver.html#afaaf9941169fc966e43e25b25e6daea6',1,'ZotDriver\deliver_private()']]],
['deliver_5frun',['deliver_run',['../deliver_8php.html#a397afcb9afecf0c1816b0951189dd346',1,'deliver.php']]],
+ ['dertopem',['DerToPem',['../crypto_8php.html#a630e1574554f34e7c38511585d9e71a2',1,'crypto.php']]],
+ ['dertorsa',['DerToRsa',['../crypto_8php.html#ae5af17db1cb5d7c91d486e1264079839',1,'crypto.php']]],
['design_5ftools',['design_tools',['../text_8php.html#a87a3cefc603302c78982f1d8e1245265',1,'text.php']]],
['destroy',['destroy',['../classphoto__driver.html#ae1a9edaf846983780dc65ea77d99e813',1,'photo_driver\destroy()'],['../classphoto__gd.html#a724703ecf71b1f1d04a80e86c76db6b1',1,'photo_gd\destroy()'],['../classphoto__imagick.html#afd49d64751ee3a298eac0c0ce0ba0207',1,'photo_imagick\destroy()']]],
['detect_5flanguage',['detect_language',['../language_8php.html#a632da17c7ac0d2dc1a00a4706870194b',1,'language.php']]],
+ ['diaspora_2ephp',['diaspora.php',['../diaspora_8php.html',1,'']]],
['diaspora2bb',['diaspora2bb',['../bb2diaspora_8php.html#ac9061ee10fcfcdac69566b649614e625',1,'bb2diaspora.php']]],
+ ['diaspora_5fasphoto',['diaspora_asphoto',['../diaspora_8php.html#a006731620a5242d410358b32678e48e3',1,'diaspora.php']]],
+ ['diaspora_5fcomment',['diaspora_comment',['../diaspora_8php.html#a0fb2abe304aae19efc040a5e6b917829',1,'diaspora.php']]],
+ ['diaspora_5fconversation',['diaspora_conversation',['../diaspora_8php.html#adef30b6fac948baedcc7194d5d155b5f',1,'diaspora.php']]],
+ ['diaspora_5fdecode',['diaspora_decode',['../diaspora_8php.html#a849754ec369e1a60fadae5c14584ca36',1,'diaspora.php']]],
+ ['diaspora_5fdispatch',['diaspora_dispatch',['../diaspora_8php.html#a6f0a67b6b17503c125af32763be931b7',1,'diaspora.php']]],
+ ['diaspora_5fdispatch_5fpublic',['diaspora_dispatch_public',['../diaspora_8php.html#ab99505944728d46585b8312989de533d',1,'diaspora.php']]],
+ ['diaspora_5fget_5fcontact_5fby_5fhandle',['diaspora_get_contact_by_handle',['../diaspora_8php.html#aa8e551a53fcce34be3942d0c3e20d1f4',1,'diaspora.php']]],
+ ['diaspora_5fhandle_5ffrom_5fcontact',['diaspora_handle_from_contact',['../diaspora_8php.html#a5ed66b910d7b0284f9b3ee04e72306ff',1,'diaspora.php']]],
+ ['diaspora_5fis_5fblacklisted',['diaspora_is_blacklisted',['../diaspora_8php.html#a858f70153c384f8778082cf7843a19da',1,'diaspora.php']]],
+ ['diaspora_5fis_5freshare',['diaspora_is_reshare',['../diaspora_8php.html#ad9985cc4214bdfc14878785c838c8690',1,'diaspora.php']]],
+ ['diaspora_5flike',['diaspora_like',['../diaspora_8php.html#a5d57518545baa31cf8a85a937a267681',1,'diaspora.php']]],
+ ['diaspora_5fmention_5fcallback',['diaspora_mention_callback',['../bb2diaspora_8php.html#a4a27604f0745f1efda672966aaca9a3b',1,'bb2diaspora.php']]],
+ ['diaspora_5fmessage',['diaspora_message',['../diaspora_8php.html#a7cff2f8f11044c1b3a360f20e1bbee46',1,'diaspora.php']]],
+ ['diaspora_5fmsg_5fbuild',['diaspora_msg_build',['../diaspora_8php.html#a4901762cba5cd8dcdc57bdf285eefb1b',1,'diaspora.php']]],
['diaspora_5fol',['diaspora_ol',['../bb2diaspora_8php.html#a8b96bd45884fa1c40b942939354197d4',1,'bb2diaspora.php']]],
+ ['diaspora_5fphoto',['diaspora_photo',['../diaspora_8php.html#a71fe9bb66626b4197ae018a230778bb2',1,'diaspora.php']]],
+ ['diaspora_5fpost',['diaspora_post',['../diaspora_8php.html#a20b968d64ef26afe5cb0cc75a7570a31',1,'diaspora.php']]],
+ ['diaspora_5fprocess_5foutbound',['diaspora_process_outbound',['../diaspora_8php.html#a131abd521b218d6ae6f7d2917d8b2605',1,'diaspora.php']]],
+ ['diaspora_5fprofile',['diaspora_profile',['../diaspora_8php.html#a900abf51398b2ef26cd2cd31c52f1b0f',1,'diaspora.php']]],
+ ['diaspora_5fpubmsg_5fbuild',['diaspora_pubmsg_build',['../diaspora_8php.html#a586d5a3ba92d35cee14f879f290072aa',1,'diaspora.php']]],
+ ['diaspora_5frequest',['diaspora_request',['../diaspora_8php.html#ac1ab782a34552a7c6b4dc961754ed598',1,'diaspora.php']]],
+ ['diaspora_5freshare',['diaspora_reshare',['../diaspora_8php.html#a2bf43f6b5890897f425ef4325d34b007',1,'diaspora.php']]],
+ ['diaspora_5fretraction',['diaspora_retraction',['../diaspora_8php.html#a938c7ee808d38725c0988fa6006805b9',1,'diaspora.php']]],
+ ['diaspora_5fsend_5ffollowup',['diaspora_send_followup',['../diaspora_8php.html#af4698b165766f83d89ec1ea964bc92cc',1,'diaspora.php']]],
+ ['diaspora_5fsend_5fimages',['diaspora_send_images',['../diaspora_8php.html#ae6f52efd81fe515cd9912bc8293abf5b',1,'diaspora.php']]],
+ ['diaspora_5fsend_5fmail',['diaspora_send_mail',['../diaspora_8php.html#aeb2bb78f620dbf51d9335e6eb7444f2c',1,'diaspora.php']]],
+ ['diaspora_5fsend_5frelay',['diaspora_send_relay',['../diaspora_8php.html#a0b3628a5e53332c3d3196b689fe2b94d',1,'diaspora.php']]],
+ ['diaspora_5fsend_5fretraction',['diaspora_send_retraction',['../diaspora_8php.html#a1704748aa2384c73e43f10e71defd31a',1,'diaspora.php']]],
+ ['diaspora_5fsend_5fstatus',['diaspora_send_status',['../diaspora_8php.html#a33ae0c4606a7df4d801c05507d87f668',1,'diaspora.php']]],
+ ['diaspora_5fshare',['diaspora_share',['../diaspora_8php.html#a69f250b078a46e405647428ec3399a16',1,'diaspora.php']]],
+ ['diaspora_5fsigned_5fretraction',['diaspora_signed_retraction',['../diaspora_8php.html#aa34d2748bb97e9e193cacd572f335055',1,'diaspora.php']]],
+ ['diaspora_5ftransmit',['diaspora_transmit',['../diaspora_8php.html#aa704d6aa2ac77be345c0f501168e6e56',1,'diaspora.php']]],
['diaspora_5ful',['diaspora_ul',['../bb2diaspora_8php.html#adc92ccda5f85ed27e64fcc17712c89cc',1,'bb2diaspora.php']]],
+ ['diaspora_5funshare',['diaspora_unshare',['../diaspora_8php.html#ab736d6f32b5de31c97cb579fc730e200',1,'diaspora.php']]],
+ ['dimport_2ephp',['dimport.php',['../dimport_8php.html',1,'']]],
+ ['dir_5fflag_5fbuild',['dir_flag_build',['../dirsearch_8php.html#ab6d5fefa98da249a994b910434a669c2',1,'dirsearch.php']]],
['dir_5ffns_2ephp',['dir_fns.php',['../dir__fns_8php.html',1,'']]],
['dir_5fparse_5fquery',['dir_parse_query',['../dirsearch_8php.html#a7d4cd9890d5ed23c3efc58e2a778a305',1,'dirsearch.php']]],
['dir_5fquery_5fbuild',['dir_query_build',['../dirsearch_8php.html#a52bcac49b0e35cc8c6b70066143c2ee2',1,'dirsearch.php']]],
@@ -56,8 +104,8 @@ var searchData=
['dir_5fsort_5flinks',['dir_sort_links',['../dir__fns_8php.html#ae56881d69bb6f8e828c9e35454386774',1,'dir_fns.php']]],
['dir_5ftagadelic',['dir_tagadelic',['../taxonomy_8php.html#a088371f4bc19155b2291508f5cd63332',1,'taxonomy.php']]],
['dir_5ftagblock',['dir_tagblock',['../taxonomy_8php.html#a599ee71dd3194c8127b00dabec77abc1',1,'taxonomy.php']]],
- ['directory_2ephp',['directory.php',['../mod_2directory_8php.html',1,'']]],
['directory_2ephp',['directory.php',['../include_2directory_8php.html',1,'']]],
+ ['directory_2ephp',['directory.php',['../mod_2directory_8php.html',1,'']]],
['directory_5fcontent',['directory_content',['../mod_2directory_8php.html#aac79396570d759da2efac24fcedf5b44',1,'directory.php']]],
['directory_5ffallback_5fmaster',['DIRECTORY_FALLBACK_MASTER',['../boot_8php.html#abedd940e664017c61b48c6efa31d0cb8',1,'boot.php']]],
['directory_5finit',['directory_init',['../mod_2directory_8php.html#a5ee59c213508b6b9787612a8219cb5bf',1,'directory.php']]],
@@ -67,12 +115,12 @@ var searchData=
['directory_5fmode_5fstandalone',['DIRECTORY_MODE_STANDALONE',['../boot_8php.html#a25476eec71fceda237f7dc1d78b0adb8',1,'boot.php']]],
['directory_5frealm',['DIRECTORY_REALM',['../boot_8php.html#a6b9909db6a7ec80ec6fdd40ba74014dd',1,'boot.php']]],
['directory_5frun',['directory_run',['../include_2directory_8php.html#aa75d3b0697ca1456aaabdb37a74aa0f0',1,'directory.php']]],
- ['dirprofile_2ephp',['dirprofile.php',['../dirprofile_8php.html',1,'']]],
- ['dirprofile_5finit',['dirprofile_init',['../dirprofile_8php.html#a3e1d30d3d93863ff5615f2df4ac7f052',1,'dirprofile.php']]],
['dirsearch_2ephp',['dirsearch.php',['../dirsearch_8php.html',1,'']]],
['dirsearch_5fcontent',['dirsearch_content',['../dirsearch_8php.html#aa1fb04e1de4f25b63349ac78f94ceb4c',1,'dirsearch.php']]],
['dirsearch_5finit',['dirsearch_init',['../dirsearch_8php.html#a3e51964ae3f5ff147403407b65324752',1,'dirsearch.php']]],
['discover',['discover',['../classProtoDriver.html#a64a3868cffe27d601d55f69a2ecc4337',1,'ProtoDriver\discover()'],['../classZotDriver.html#a40d328ff9f6b0a238afe286dddee1514',1,'ZotDriver\discover()']]],
+ ['discover_5fby_5furl',['discover_by_url',['../include_2network_8php.html#a5176176ddc1906d91f186df6fbd87b48',1,'network.php']]],
+ ['discover_5fby_5fwebbie',['discover_by_webbie',['../include_2network_8php.html#a63e62946e194928eb17c5a9f2bbef0fe',1,'network.php']]],
['display_2ephp',['display.php',['../display_8php.html',1,'']]],
['display_5fcontent',['display_content',['../display_8php.html#a37137c98d47bf3306f4c2bb9f5b60de0',1,'display.php']]],
['dlogger',['dlogger',['../text_8php.html#a0a1f7c0e97f9ecbebf3e5834582b014c',1,'text.php']]],
diff --git a/doc/html/search/all_65.js b/doc/html/search/all_65.js
index 10bddfec9..7efea7c31 100644
--- a/doc/html/search/all_65.js
+++ b/doc/html/search/all_65.js
@@ -2,16 +2,19 @@ var searchData=
[
['editblock_2ephp',['editblock.php',['../editblock_8php.html',1,'']]],
['editblock_5fcontent',['editblock_content',['../editblock_8php.html#abbe8f55de06967bc8d79d620509a49e6',1,'editblock.php']]],
+ ['editblock_5finit',['editblock_init',['../editblock_8php.html#ab7806bb42ae5e93f0330d7bd179d4b3e',1,'editblock.php']]],
['editlayout_2ephp',['editlayout.php',['../editlayout_8php.html',1,'']]],
['editlayout_5fcontent',['editlayout_content',['../editlayout_8php.html#aa877e4157a26b099de904164181dd386',1,'editlayout.php']]],
+ ['editlayout_5finit',['editlayout_init',['../editlayout_8php.html#a97c1e93d9e75ad8cd2c2f9a7f77341a7',1,'editlayout.php']]],
['editpost_2ephp',['editpost.php',['../editpost_8php.html',1,'']]],
['editpost_5fcontent',['editpost_content',['../editpost_8php.html#a34011690864d122680c802e9e748ccfb',1,'editpost.php']]],
['editwebpage_2ephp',['editwebpage.php',['../editwebpage_8php.html',1,'']]],
['editwebpage_5fcontent',['editwebpage_content',['../editwebpage_8php.html#a375e945255fad79a71036528f7480650',1,'editwebpage.php']]],
- ['else',['else',['../auth_8php.html#a0950af7c2888ca1d4743fe5d0bff9ae5',1,'else():&#160;auth.php'],['../fpostit_8php.html#a501b5ca82f287509fc691c88524064c1',1,'else():&#160;fpostit.php'],['../tpldebug_8php.html#afbc7aadb3f7ff1edf0aaaa326a42179c',1,'else():&#160;tpldebug.php'],['../redbasic_2php_2style_8php.html#ab3afb90d611eca90819f597a2c0bb459',1,'else():&#160;style.php']]],
+ ['editwebpage_5finit',['editwebpage_init',['../editwebpage_8php.html#a94109f9c796fbe92508bf9574e35d19f',1,'editwebpage.php']]],
+ ['else',['else',['../auth_8php.html#a6f60fb54f60cd36c2430d6615a7b4f3f',1,'else():&#160;auth.php'],['../fpostit_8php.html#a501b5ca82f287509fc691c88524064c1',1,'else():&#160;fpostit.php'],['../tpldebug_8php.html#afbc7aadb3f7ff1edf0aaaa326a42179c',1,'else():&#160;tpldebug.php'],['../redbasic_2php_2style_8php.html#ab3afb90d611eca90819f597a2c0bb459',1,'else():&#160;style.php']]],
['email_5fheader_5fencode',['email_header_encode',['../include_2network_8php.html#a469b9bd700269cd07d954f1a16c5899b',1,'network.php']]],
['email_5fsend',['email_send',['../include_2network_8php.html#a1ff07d9fad93b713b93da0ab77aab7f0',1,'network.php']]],
- ['encode_5fitem',['encode_item',['../items_8php.html#a82955cc578f0fa600acec84475026194',1,'items.php']]],
+ ['encode_5fitem',['encode_item',['../items_8php.html#a56b0f5d2cb36eb8f4bfca84813884f86',1,'items.php']]],
['encode_5fitem_5fflags',['encode_item_flags',['../items_8php.html#a5f690fc2484abec07840b4f9dd525bd9',1,'items.php']]],
['encode_5fitem_5fterms',['encode_item_terms',['../items_8php.html#ac6673627d289ee4f547de0fe3b7acd0a',1,'items.php']]],
['encode_5fitem_5fxchan',['encode_item_xchan',['../items_8php.html#a566c601726697e044e75284af7fb6f17',1,'items.php']]],
@@ -22,8 +25,10 @@ var searchData=
['enumerate_5fpermissions',['enumerate_permissions',['../items_8php.html#afbcf26dfcf8a83fff952aa858c1b7b67',1,'items.php']]],
['eol',['EOL',['../boot_8php.html#a0603d6ece8c5d37b4b7db697db053a4b',1,'boot.php']]],
['eot',['EOT',['../typohelper_8php.html#ab6fd357fb5b2a3ba8aab9e8b98c6a805',1,'typohelper.php']]],
- ['escape',['escape',['../classdba__driver.html#afc95ffa103a3290581b537670cde5311',1,'dba_driver\escape()'],['../classdba__mysql.html#a99a7691ea6cb1300031fb6549379066e',1,'dba_mysql\escape()'],['../classdba__mysqli.html#a27d6a748af7f80028801306e7ea33f64',1,'dba_mysqli\escape()']]],
+ ['escape',['escape',['../classdba__driver.html#afc95ffa103a3290581b537670cde5311',1,'dba_driver\escape()'],['../classdba__mysql.html#a99a7691ea6cb1300031fb6549379066e',1,'dba_mysql\escape()'],['../classdba__mysqli.html#a27d6a748af7f80028801306e7ea33f64',1,'dba_mysqli\escape()'],['../classdba__postgres.html#a7108eaaae7cc2fb236212041afc9ac0f',1,'dba_postgres\escape()']]],
+ ['escape_5fidentifier',['escape_identifier',['../classdba__postgres.html#ab2e44e9f41d05e585afd873d18e8c127',1,'dba_postgres']]],
['escape_5ftags',['escape_tags',['../text_8php.html#aa5148a0dfea2a1ca64c3d52f10aa2d64',1,'text.php']]],
+ ['escapebin',['escapebin',['../classdba__driver.html#a7dbe8318587ff1694825042bf58f4fbd',1,'dba_driver\escapebin()'],['../classdba__postgres.html#a8d2c6d8c92fe6f074452876483dd17fc',1,'dba_postgres\escapebin()']]],
['ev_5fcompare',['ev_compare',['../event_8php.html#a32ba1b9ddf7a744a9a1512b052e5f850',1,'event.php']]],
['event_2ephp',['event.php',['../event_8php.html',1,'']]],
['event_5faddtocal',['event_addtocal',['../event_8php.html#ac9f206819186b65952ac1869f0da8c6e',1,'event.php']]],
@@ -40,5 +45,6 @@ var searchData=
['ext',['ext',['../namespacefriendica-to-smarty-tpl.html#aecf730e0884bb4ddc6c0deb1ef85f8eb',1,'friendica-to-smarty-tpl']]],
['externals_2ephp',['externals.php',['../externals_8php.html',1,'']]],
['externals_5frun',['externals_run',['../externals_8php.html#a4df44079e6f915286088b7a0d44db926',1,'externals.php']]],
+ ['extra_5fquery_5fargs',['extra_query_args',['../text_8php.html#a3ba47b4dd1248e7e51095572e7b814dc',1,'text.php']]],
['extract_2ephp',['extract.php',['../extract_8php.html',1,'']]]
];
diff --git a/doc/html/search/all_66.js b/doc/html/search/all_66.js
index 6cfabe618..7e2378199 100644
--- a/doc/html/search/all_66.js
+++ b/doc/html/search/all_66.js
@@ -11,7 +11,7 @@ var searchData=
['feed_5fsalmonlinks',['feed_salmonlinks',['../text_8php.html#a89929fa6f70a8ba54d5273fcf622b665',1,'text.php']]],
['fetch_5flrdd_5ftemplate',['fetch_lrdd_template',['../include_2network_8php.html#a8d5a3afb51cc932032b5dcc159efaae0',1,'network.php']]],
['fetch_5fpost_5ftags',['fetch_post_tags',['../items_8php.html#adf980098b6de9c3993bc3ff26a8dd6f9',1,'items.php']]],
- ['field_5ftimezone',['field_timezone',['../datetime_8php.html#a03900dcf0f9e3c58793a031673a70326',1,'datetime.php']]],
+ ['fetch_5fxrd_5flinks',['fetch_xrd_links',['../include_2network_8php.html#a850ed5307c6a18076f4b80addc99602d',1,'network.php']]],
['file_5ftag_5fdecode',['file_tag_decode',['../taxonomy_8php.html#a08df5164926d2b31b8e9fcfe919de2b6',1,'taxonomy.php']]],
['file_5ftag_5fencode',['file_tag_encode',['../taxonomy_8php.html#a3299482ac20e9d79453048dd52881d37',1,'taxonomy.php']]],
['file_5ftag_5ffile_5fquery',['file_tag_file_query',['../taxonomy_8php.html#a163b5131f388080b0fc82398d3a32fe1',1,'taxonomy.php']]],
@@ -25,13 +25,15 @@ var searchData=
['filestorage_2ephp',['filestorage.php',['../filestorage_8php.html',1,'']]],
['filestorage_5fcontent',['filestorage_content',['../filestorage_8php.html#a61bb1be78472555df4ce619f51014040',1,'filestorage.php']]],
['filestorage_5fpost',['filestorage_post',['../filestorage_8php.html#ad3b64e3ece9831f9d3a9f00c0ae983cd',1,'filestorage.php']]],
+ ['filter_5finsecure',['filter_insecure',['../items_8php.html#a8cda98925a4c5c2f6dade70d9586d79a',1,'items.php']]],
+ ['find_5fdiaspora_5fperson_5fby_5fhandle',['find_diaspora_person_by_handle',['../diaspora_8php.html#aade0c165fcdded71352c7a67bf6ce37b',1,'diaspora.php']]],
['find_5ffilename_5fby_5fhash',['find_filename_by_hash',['../include_2attach_8php.html#a4dbfd7e1cef52aa9ef52f4b88929fa86',1,'attach.php']]],
['find_5ffolder_5fhash_5fby_5fattach_5fhash',['find_folder_hash_by_attach_hash',['../include_2attach_8php.html#a052f14487ff2ce72f62a09fac8d7e997',1,'attach.php']]],
['find_5fthread_5fparent_5findex',['find_thread_parent_index',['../conversation_8php.html#ae59703b07ce2ddf627b4172ff26058b6',1,'conversation.php']]],
['find_5fupstream_5fdirectory',['find_upstream_directory',['../dir__fns_8php.html#a8c15aa69da12f2d3476b9e93b82b337d',1,'dir_fns.php']]],
['find_5fxchan_5fin_5farray',['find_xchan_in_array',['../text_8php.html#ace3c98538c63e09b70a363210b414112',1,'text.php']]],
- ['findattachhash',['findAttachHash',['../classRedBrowser.html#ae4edd4e10c709e2624c1aeb47b0440c5',1,'RedBrowser']]],
- ['findattachidbyhash',['findAttachIdByHash',['../classRedBrowser.html#a20d81230645ddca08a88bfd9ea9f88f1',1,'RedBrowser']]],
+ ['findattachhash',['findAttachHash',['../classRedMatrix_1_1RedDAV_1_1RedBrowser.html#ad4bc0516533c62733f38043a37267d78',1,'RedMatrix::RedDAV::RedBrowser']]],
+ ['findattachidbyhash',['findAttachIdByHash',['../classRedMatrix_1_1RedDAV_1_1RedBrowser.html#a0733e38e254474d9a456825e72f1ddfd',1,'RedMatrix::RedDAV::RedBrowser']]],
['findpeople_5fwidget',['findpeople_widget',['../contact__widgets_8php.html#a57e73ebcfd62bb5d8c7a7b9e663726d6',1,'contact_widgets.php']]],
['first_5fpost_5fdate',['first_post_date',['../items_8php.html#a0cf98bb619f07dd18f602683a55a5f59',1,'items.php']]],
['fix_5fattached_5ffile_5fpermissions',['fix_attached_file_permissions',['../item_8php.html#a3daae7944f737bd30412a0d042207c0f',1,'item.php']]],
@@ -41,6 +43,7 @@ var searchData=
['fix_5fprivate_5fphotos',['fix_private_photos',['../items_8php.html#aba98fcbbcd7044a7e9ea34edabc14c87',1,'items.php']]],
['fix_5fsystem_5furls',['fix_system_urls',['../boot_8php.html#aca5e42678e178c6b9034610d66666fd7',1,'boot.php']]],
['fixacl',['fixacl',['../acl__selectors_8php.html#ad6664fb8330308e23f2645cd6624727e',1,'acl_selectors.php']]],
+ ['fixd_2ephp',['fixd.php',['../fixd_8php.html',1,'']]],
['fkoauth1',['FKOAuth1',['../classFKOAuth1.html',1,'']]],
['fkoauthdatastore',['FKOAuthDataStore',['../classFKOAuthDataStore.html',1,'']]],
['flip',['flip',['../classphoto__driver.html#a2b2a99021fc63ed6465d703ddddcb832',1,'photo_driver\flip()'],['../classphoto__gd.html#a44cedef376044018702d9355ddc813ce',1,'photo_gd\flip()'],['../classphoto__imagick.html#aff6bcdbab18593a3fc5a480db8509393',1,'photo_imagick\flip()']]],
@@ -49,14 +52,17 @@ var searchData=
['follow_2ephp',['follow.php',['../include_2follow_8php.html',1,'']]],
['follow_5fcontent',['follow_content',['../mod_2follow_8php.html#a4c540ea4e9f5c581c1a53516ac585592',1,'follow.php']]],
['follow_5finit',['follow_init',['../mod_2follow_8php.html#a171f5b19f50d7738adc3b2e96ec6018a',1,'follow.php']]],
+ ['foofoo',['foofoo',['../dimport_8php.html#a581f040717941ce3e1868b0b5dceefd1',1,'dimport.php']]],
['foreach',['foreach',['../typo_8php.html#a329c9c12217d2c8660c47bbc7c8df4c5',1,'typo.php']]],
['format_5fcategories',['format_categories',['../text_8php.html#a3054189cff173977f4216c9a3dd29e1b',1,'text.php']]],
['format_5fcss_5fif_5fexists',['format_css_if_exists',['../plugin_8php.html#a9039e15aae27676af7777dcbee5a11d6',1,'plugin.php']]],
['format_5fevent_5fbbcode',['format_event_bbcode',['../event_8php.html#abb74206cf42d694307c3d7abb7af9869',1,'event.php']]],
['format_5fevent_5fdiaspora',['format_event_diaspora',['../bb2diaspora_8php.html#a29a2ad41f5826f3975fa9a49934ff863',1,'bb2diaspora.php']]],
['format_5fevent_5fhtml',['format_event_html',['../event_8php.html#a2ac9f1b08de03250ecd794f705781d17',1,'event.php']]],
+ ['format_5fevent_5fical',['format_event_ical',['../event_8php.html#a3ff7f1824540a38f4a3991a59a9542d4',1,'event.php']]],
['format_5ffiler',['format_filer',['../text_8php.html#a4e4d42b0a805148d9f9a92bcac89bf91',1,'text.php']]],
['format_5fhashtags',['format_hashtags',['../text_8php.html#a3a0c432a484c17d7720b8ba2d6bfdd59',1,'text.php']]],
+ ['format_5fical_5ftext',['format_ical_text',['../event_8php.html#a05073cd4ab837bd4a0149e8ed23ce688',1,'event.php']]],
['format_5fjs_5fif_5fexists',['format_js_if_exists',['../plugin_8php.html#ad9ff8ba554576383c5911a4bce068c1f',1,'plugin.php']]],
['format_5flike',['format_like',['../conversation_8php.html#a3d8e30cc94f9a175054c021305d3aca3',1,'conversation.php']]],
['format_5flocation',['format_location',['../conversation_8php.html#a0891aaa4492cba2b51eda12fe01957f3',1,'conversation.php']]],
@@ -68,7 +74,6 @@ var searchData=
['friendica',['Friendica',['../namespaceFriendica.html',1,'']]],
['friendica_2dto_2dsmarty_2dtpl',['friendica-to-smarty-tpl',['../namespacefriendica-to-smarty-tpl.html',1,'']]],
['friendica_2dto_2dsmarty_2dtpl_2epy',['friendica-to-smarty-tpl.py',['../friendica-to-smarty-tpl_8py.html',1,'']]],
- ['friendica_5fsmarty_2ephp',['friendica_smarty.php',['../friendica__smarty_8php.html',1,'']]],
['friendicasmarty',['FriendicaSmarty',['../classFriendicaSmarty.html',1,'']]],
['friendicasmartyengine',['FriendicaSmartyEngine',['../classFriendicaSmartyEngine.html',1,'']]],
['fsuggest_2ephp',['fsuggest.php',['../fsuggest_8php.html',1,'']]],
diff --git a/doc/html/search/all_67.js b/doc/html/search/all_67.js
index c45a3b887..0cae305da 100644
--- a/doc/html/search/all_67.js
+++ b/doc/html/search/all_67.js
@@ -2,14 +2,17 @@ var searchData=
[
['gen_5ftoken',['gen_token',['../classFKOAuthDataStore.html#aa1a268be88ad3979bb4cc35bbb4dc819',1,'FKOAuthDataStore']]],
['gender_5fselector',['gender_selector',['../profile__selectors_8php.html#ae2b2c087e6530c61c0b256fd26d52355',1,'profile_selectors.php']]],
- ['generatedirectoryindex',['generateDirectoryIndex',['../classRedBrowser.html#a1f7daf50bb9bfcde7345b3b1908dbd7e',1,'RedBrowser']]],
- ['get',['get',['../classCache.html#a70392b109331897bf9fdd7f1960e21de',1,'Cache\get()'],['../classRedFile.html#a7c868dfcef6c70cd0e24cf3caa2c3535',1,'RedFile\get()']]],
+ ['gender_5fselector_5fmin',['gender_selector_min',['../profile__selectors_8php.html#a8bfa1ca2d1598a3d65f1f9bb803ca816',1,'profile_selectors.php']]],
+ ['generate_5fmap',['generate_map',['../text_8php.html#ae0333c304ec5b4b72e66bb2933fa7357',1,'text.php']]],
+ ['generate_5fnamed_5fmap',['generate_named_map',['../text_8php.html#af5eb4a9c1599764f80c5bc71e0125d4b',1,'text.php']]],
+ ['generatedirectoryindex',['generateDirectoryIndex',['../classRedMatrix_1_1RedDAV_1_1RedBrowser.html#af764d5f14df751f9ec86c34fab300c09',1,'RedMatrix::RedDAV::RedBrowser']]],
+ ['get',['get',['../classCache.html#a70392b109331897bf9fdd7f1960e21de',1,'Cache\get()'],['../classRedMatrix_1_1RedDAV_1_1RedFile.html#a7241beecd01f5bb4e74659863dd85bd8',1,'RedMatrix\RedDAV\RedFile\get()']]],
['get_5faccount',['get_account',['../classApp.html#a08bc87aff64f39fbc084e9d6545cee4d',1,'App']]],
['get_5faccount_5fid',['get_account_id',['../boot_8php.html#afe88b920aa285982edb817a0dd44eb37',1,'boot.php']]],
['get_5fall_5fperms',['get_all_perms',['../permissions_8php.html#aeca9b280f3dc3358c89976d81d690008',1,'permissions.php']]],
['get_5fapp',['get_app',['../classBaseObject.html#ac43f10e69ce80c78e4870636250fc8a2',1,'BaseObject\get_app()'],['../boot_8php.html#a0e6db7e365f2b041a828b93786f694bc',1,'get_app():&#160;boot.php']]],
['get_5fapps',['get_apps',['../classApp.html#a5c63eabdc7fdd8b6e3348980ec16a3ad',1,'App']]],
- ['get_5fatom_5felements',['get_atom_elements',['../items_8php.html#a896c1809d58f2d7a42cfe14577958ddf',1,'items.php']]],
+ ['get_5fatom_5felements',['get_atom_elements',['../items_8php.html#a5e5be7bf1f8257dec0b2647e60a3f3f1',1,'items.php']]],
['get_5fbaseurl',['get_baseurl',['../classApp.html#a604d659d6977a99de42a160343e5289a',1,'App']]],
['get_5fbb_5ftag_5fpos',['get_bb_tag_pos',['../bb2diaspora_8php.html#a4c2f8f11b29a06809d9b07782215b1b2',1,'bb2diaspora.php']]],
['get_5fbest_5flanguage',['get_best_language',['../language_8php.html#a980dee1d8715a98ab02e36b59facf8ed',1,'language.php']]],
@@ -19,8 +22,9 @@ var searchData=
['get_5fcapath',['get_capath',['../include_2network_8php.html#a78e89557b2fbd344ad790846d761b0c7',1,'network.php']]],
['get_5fchannel',['get_channel',['../classApp.html#a084e03c77686d8c13390fef3f7428a2b',1,'App']]],
['get_5fchannel_5fby_5fnick',['get_channel_by_nick',['../identity_8php.html#ac73b3e13778c564c877554517a7f51ba',1,'identity.php']]],
+ ['get_5fchannel_5fdefault_5fperms',['get_channel_default_perms',['../identity_8php.html#a293f416ce9050220b183e08ff5890216',1,'identity.php']]],
['get_5fchild',['get_child',['../classItem.html#a632185dd25c5caf277067c76230a4320',1,'Item']]],
- ['get_5fchildren',['get_children',['../classItem.html#aa0ee775ec94abccec6c798428835d001',1,'Item']]],
+ ['get_5fchildren',['get_children',['../classRedMatrix_1_1Import_1_1Import.html#a57561904b0f127e0d9a3e2c33688daf8',1,'RedMatrix\Import\Import\get_children()'],['../classItem.html#aa0ee775ec94abccec6c798428835d001',1,'Item\get_children()']]],
['get_5fcipher',['get_cipher',['../classConversation.html#a4aab60bb39fa6761b6cacdc8d9da2901',1,'Conversation']]],
['get_5fcloudpath',['get_cloudpath',['../include_2attach_8php.html#a6aa00ea010ea030110faefb75eafc1ce',1,'attach.php']]],
['get_5fcomment_5fbox',['get_comment_box',['../classItem.html#a3ee7667c2ec6cd7657328e27848c0bdf',1,'Item']]],
@@ -28,12 +32,17 @@ var searchData=
['get_5fconfig',['get_config',['../include_2config_8php.html#af02c96e6b37335774b548914ede1d22e',1,'config.php']]],
['get_5fconfig_5ffrom_5fstorage',['get_config_from_storage',['../include_2config_8php.html#af08b7adb63adfb2eda7c466fba0cce74',1,'config.php']]],
['get_5fconversation',['get_conversation',['../classItem.html#a0c301aaed2b7d682728d18db3a22afa3',1,'Item']]],
+ ['get_5fcredentials',['get_credentials',['../classRedMatrix_1_1Import_1_1Import.html#a24134929d9a8a682da2036a0bf326367',1,'RedMatrix::Import::Import']]],
['get_5fcustom_5fnav',['get_custom_nav',['../boot_8php.html#a899d24fd074594ceebbf72e1feff335f',1,'boot.php']]],
['get_5fdata',['get_data',['../classItem.html#ad3638f93065693c1f69eb349feb1b7aa',1,'Item']]],
['get_5fdata_5fvalue',['get_data_value',['../classItem.html#ac6f1c96cc82a0dfb7e881fc70309ea3c',1,'Item']]],
['get_5fdb_5ferrno',['get_db_errno',['../setup_8php.html#a8652788e8589778c5f81634a9d5b9429',1,'setup.php']]],
['get_5fdefault_5fprofile_5fphoto',['get_default_profile_photo',['../identity_8php.html#ab1485a26b032956e1496fc08c58b83ed',1,'identity.php']]],
+ ['get_5fdiaspora_5fkey',['get_diaspora_key',['../diaspora_8php.html#a9bf7ef4094e0e14f6e2b7fe76ab7ad2e',1,'diaspora.php']]],
+ ['get_5fdiaspora_5freshare_5fxml',['get_diaspora_reshare_xml',['../diaspora_8php.html#ac9e41e46626dc608204bf4b5e16e62d7',1,'diaspora.php']]],
['get_5fdim',['get_dim',['../datetime_8php.html#a7df24d72ea05922d3127363e2295174c',1,'datetime.php']]],
+ ['get_5fdirectory_5frealm',['get_directory_realm',['../boot_8php.html#a329400dcb29897cdaae3020109272285',1,'boot.php']]],
+ ['get_5fdisplay_5fmode',['get_display_mode',['../classItem.html#a23d4057883f8ed888c0c2ff12d8aa5d0',1,'Item']]],
['get_5fevents',['get_events',['../identity_8php.html#ae381db3d43f8e7c1da8b15d14ecf5312',1,'identity.php']]],
['get_5ffeatures',['get_features',['../features_8php.html#ae73c5b03b01c7284ed7e7e0e774e975c',1,'features.php']]],
['get_5ffeed_5ffor',['get_feed_for',['../items_8php.html#a04a35b610acfe54434df08adec39c0c7',1,'items.php']]],
@@ -43,19 +52,24 @@ var searchData=
['get_5fgroups',['get_groups',['../classApp.html#a4659785d13e4bac0bed50dbb1b0d4299',1,'App']]],
['get_5fhostname',['get_hostname',['../classApp.html#a622eace13f8fc9f4b5672a68e2bc4396',1,'App']]],
['get_5fid',['get_id',['../classItem.html#ac0f27e58532612f6e7a54c8a621b9b92',1,'Item']]],
+ ['get_5finstall_5fscript',['get_install_script',['../classdba__driver.html#a8d6a79d39d7eaee5aea4e952c4529d48',1,'dba_driver']]],
['get_5fintltext_5ftemplate',['get_intltext_template',['../classFriendicaSmartyEngine.html#a35ec0ee828c36640ea25296bcb84a118',1,'FriendicaSmartyEngine\get_intltext_template()'],['../plugin_8php.html#acb63c27d07f6d7dffe95f98a6cef1295',1,'get_intltext_template():&#160;plugin.php']]],
+ ['get_5fitem',['get_item',['../classRedMatrix_1_1Import_1_1Import.html#a27987a41cb703a796f1821baeb4774a2',1,'RedMatrix::Import::Import']]],
['get_5fitem_5fchildren',['get_item_children',['../conversation_8php.html#a7f6ef0dfa554bacf620e84c18d386e67',1,'conversation.php']]],
['get_5fitem_5fcontact',['get_item_contact',['../items_8php.html#aab9c6bae4c40799867596bdaae9829fd',1,'items.php']]],
['get_5fitem_5felements',['get_item_elements',['../items_8php.html#a536d0313b6ffe33b9d2490c4e25c5361',1,'items.php']]],
+ ['get_5fitem_5fident',['get_item_ident',['../classRedMatrix_1_1Import_1_1Import.html#a772c28edf36aaf8e66007a95004c4059',1,'RedMatrix::Import::Import']]],
+ ['get_5fitemlist',['get_itemlist',['../classRedMatrix_1_1Import_1_1Import.html#a855cd5a79b95d269ae8737fae774e3bc',1,'RedMatrix::Import::Import']]],
['get_5flanguage_5fname',['get_language_name',['../language_8php.html#a43e6ddba9df019c9ac3ab4c94c444ae7',1,'language.php']]],
['get_5fmail_5felements',['get_mail_elements',['../items_8php.html#a94ddb1d6c8fa21dd7433677e85168037',1,'items.php']]],
- ['get_5fmarkup_5ftemplate',['get_markup_template',['../classFriendicaSmartyEngine.html#aab5994077fc3a64222e41b28e2bd8d88',1,'FriendicaSmartyEngine\get_markup_template()'],['../interfaceITemplateEngine.html#aaf2698adbf46c073c24b162fe1b1c442',1,'ITemplateEngine\get_markup_template()'],['../classTemplate.html#afd97b4b1e7754a550e67c0ea79159059',1,'Template\get_markup_template()'],['../plugin_8php.html#a75f7dfed291fd7add7fc85b5c022a1f4',1,'get_markup_template():&#160;plugin.php']]],
+ ['get_5fmarkup_5ftemplate',['get_markup_template',['../interfaceITemplateEngine.html#aaf2698adbf46c073c24b162fe1b1c442',1,'ITemplateEngine\get_markup_template()'],['../classFriendicaSmartyEngine.html#aab5994077fc3a64222e41b28e2bd8d88',1,'FriendicaSmartyEngine\get_markup_template()'],['../classTemplate.html#afd97b4b1e7754a550e67c0ea79159059',1,'Template\get_markup_template()'],['../plugin_8php.html#a75f7dfed291fd7add7fc85b5c022a1f4',1,'get_markup_template():&#160;plugin.php']]],
['get_5fmax_5fimport_5fsize',['get_max_import_size',['../boot_8php.html#a97769915c9f14adc4f8ab1ea2cecfd90',1,'boot.php']]],
['get_5fmentions',['get_mentions',['../text_8php.html#a76d1b3435c067978d7b484c45f56472b',1,'text.php']]],
['get_5fmode',['get_mode',['../classConversation.html#a87a0d704d5f2b1a008cc2e9ce06a1bcd',1,'Conversation']]],
['get_5fmood_5fverbs',['get_mood_verbs',['../text_8php.html#a736db13a966b8abaf8c9198faa35911a',1,'text.php']]],
['get_5fmy_5faddress',['get_my_address',['../identity_8php.html#a490972c02fdb638c52ec0e012a30bfd2',1,'identity.php']]],
['get_5fmy_5furl',['get_my_url',['../identity_8php.html#aa46321e1cd6a3b8dfde8bf9510112fec',1,'identity.php']]],
+ ['get_5fnull_5fdate',['get_null_date',['../classdba__driver.html#a65a5c7b355ab5529a43049e160006426',1,'dba_driver']]],
['get_5fobserver',['get_observer',['../classApp.html#a1ad3bb1b68439b3b7cbe630918e618d2',1,'App\get_observer()'],['../classConversation.html#ae3d4190142e12b57051f11f2911f77a0',1,'Conversation\get_observer()']]],
['get_5fobserver_5fhash',['get_observer_hash',['../boot_8php.html#a623e49c79943f3e7bdb770d021683cf7',1,'boot.php']]],
['get_5fonline_5fstatus',['get_online_status',['../identity_8php.html#a332df795f684788002f5a6424abacfd7',1,'identity.php']]],
@@ -70,15 +84,21 @@ var searchData=
['get_5fplink',['get_plink',['../text_8php.html#aac0969ae09853205992ba06ab9f9f61a',1,'text.php']]],
['get_5fplugin_5finfo',['get_plugin_info',['../plugin_8php.html#aff0178bd8d0b34a94d5efddc883edd35',1,'plugin.php']]],
['get_5fpoke_5fverbs',['get_poke_verbs',['../text_8php.html#aa46f941155c2ac1155f2f17ffb0adb66',1,'text.php']]],
+ ['get_5fpoller_5fruntime',['get_poller_runtime',['../boot_8php.html#aa561f801e962b67a5c4d0548ea95fd17',1,'boot.php']]],
['get_5fprofile_5felements',['get_profile_elements',['../items_8php.html#a251343637ff40a50cca93452cd530c26',1,'items.php']]],
+ ['get_5fprofile_5ffields_5fadvanced',['get_profile_fields_advanced',['../identity_8php.html#a224710dfb7465b706c91134247c20afa',1,'identity.php']]],
+ ['get_5fprofile_5ffields_5fbasic',['get_profile_fields_basic',['../identity_8php.html#a4ff59df0f0a668a06a8411f87496aa21',1,'identity.php']]],
['get_5fprofile_5fowner',['get_profile_owner',['../classConversation.html#a5effe8ad3007e01333df44b81432b813',1,'Conversation']]],
['get_5fpublic_5ffeed',['get_public_feed',['../items_8php.html#a079e099e15d88d47aeb6ca6d60da7107',1,'items.php']]],
['get_5fredirect_5furl',['get_redirect_url',['../classItem.html#a428f448f89a8629055ea3294eb942aea',1,'Item']]],
['get_5frel_5flink',['get_rel_link',['../text_8php.html#a3972701c5c83624ec4e2d06242f614e7',1,'text.php']]],
+ ['get_5frole_5fperms',['get_role_perms',['../permissions_8php.html#a9b5f5120566a3699a98efc5ccb0c59fe',1,'permissions.php']]],
+ ['get_5froles',['get_roles',['../permissions_8php.html#a6b239a0d494b92a89ce7bf9c7e588991',1,'permissions.php']]],
['get_5frpost_5fpath',['get_rpost_path',['../zot_8php.html#a8e22dbc6f884be3644a892a876cbd972',1,'zot.php']]],
['get_5fsys_5fchannel',['get_sys_channel',['../identity_8php.html#aaff86ee3b5984821e7a256c2da5f1a51',1,'identity.php']]],
['get_5fsystem_5fapps',['get_system_apps',['../include_2apps_8php.html#ae64f72eb4f126e03b4eb65ed1702a3ca',1,'apps.php']]],
['get_5ftags',['get_tags',['../text_8php.html#a4659fbc4e54ddc700c3aa66b9092c623',1,'text.php']]],
+ ['get_5ftaxonomy',['get_taxonomy',['../classRedMatrix_1_1Import_1_1Import.html#ae3c6472bea1a44025bc2e152604eb20c',1,'RedMatrix::Import::Import']]],
['get_5ftemplate',['get_template',['../classItem.html#aba23a0a9d89e316d2b343cc46d695d91',1,'Item']]],
['get_5ftemplate_5fdata',['get_template_data',['../classConversation.html#a2a96b7a6573ae53db861624659e831cb',1,'Conversation\get_template_data()'],['../classItem.html#ad5dcbe0b94cb2d5719bc5b6bd8ad60c8',1,'Item\get_template_data()']]],
['get_5ftemplate_5fengine',['get_template_engine',['../classApp.html#acb27e607fe4c82603444676e25c36b70',1,'App']]],
@@ -91,22 +111,27 @@ var searchData=
['get_5ftheme_5fuid',['get_theme_uid',['../identity_8php.html#aaeb666872995e3ab8da8f7bc5f3b2bd3',1,'identity.php']]],
['get_5fthings',['get_things',['../taxonomy_8php.html#a7747fa859ac56fbffd4f9782d85505de',1,'taxonomy.php']]],
['get_5fthread',['get_thread',['../classConversation.html#a4cff75d8c46b517e7133e4d0da6fc1c8',1,'Conversation']]],
+ ['get_5ftimezones',['get_timezones',['../datetime_8php.html#afbb34604d0f6e7d2103da4f42e2487b1',1,'datetime.php']]],
['get_5fwidgets',['get_widgets',['../classApp.html#a871898becd0697d778f36d9336253ae8',1,'App']]],
['get_5fwords',['get_words',['../spam_8php.html#ab8fd81a82c9622cbebb8ceab6b310ca6',1,'spam.php']]],
['get_5fxconfig',['get_xconfig',['../include_2config_8php.html#aa3dc1d3de2d091ac702e675acd3a085e',1,'config.php']]],
- ['getasseturl',['getAssetUrl',['../classRedBrowser.html#a87529b4988a7777b49616f5c0a1c55d3',1,'RedBrowser']]],
- ['getchild',['getChild',['../classRedDirectory.html#aaa20f0f44da23781917af8170c0a2569',1,'RedDirectory']]],
- ['getchildren',['getChildren',['../classRedDirectory.html#aa42d3065f6f065b17db87146a7cb031a',1,'RedDirectory']]],
- ['getcontenttype',['getContentType',['../classRedFile.html#a26416827eb68554d033d1e2e5cc6dd3b',1,'RedFile']]],
- ['getdir',['getDir',['../classRedDirectory.html#a70173d4458572d95e586b2037d2fd2f4',1,'RedDirectory']]],
- ['getetag',['getETag',['../classRedFile.html#ae96d5caa2db7a461c57b24380fa87e28',1,'RedFile']]],
+ ['getasseturl',['getAssetUrl',['../classRedMatrix_1_1RedDAV_1_1RedBrowser.html#acaa792c08d24e9dc2919759e92ba037d',1,'RedMatrix::RedDAV::RedBrowser']]],
+ ['getchild',['getChild',['../classRedMatrix_1_1RedDAV_1_1RedDirectory.html#a1a37850bdd1f188abd6160559698d5d7',1,'RedMatrix::RedDAV::RedDirectory']]],
+ ['getchildren',['getChildren',['../classRedMatrix_1_1RedDAV_1_1RedDirectory.html#a9b9a0b5bfa4de1f78e6cafaa534b6f6a',1,'RedMatrix::RedDAV::RedDirectory']]],
+ ['getcontenttype',['getContentType',['../classRedMatrix_1_1RedDAV_1_1RedFile.html#af5c88b75d0c1f590af03755534cb167e',1,'RedMatrix::RedDAV::RedFile']]],
+ ['getcurrentuser',['getCurrentUser',['../classRedMatrix_1_1RedDAV_1_1RedBasicAuth.html#aa0b2a5fa9186d7dc0e637f1ecb379c42',1,'RedMatrix::RedDAV::RedBasicAuth']]],
+ ['getdir',['getDir',['../classRedMatrix_1_1RedDAV_1_1RedDirectory.html#a825dc5f3e0f83f50736c16daa6a4809d',1,'RedMatrix::RedDAV::RedDirectory']]],
+ ['getdriver',['getdriver',['../classdba__driver.html#a02165fc4bee63d040ebd963a4fa82a14',1,'dba_driver\getdriver()'],['../classdba__mysql.html#a31011edd67b6b394355bf04cedb498d0',1,'dba_mysql\getdriver()'],['../classdba__mysqli.html#a6eb6c578c6928908321e5e6da866e1db',1,'dba_mysqli\getdriver()'],['../classdba__postgres.html#ae0f834413e57cf0735ae7b64b2f71e68',1,'dba_postgres\getdriver()']]],
+ ['getetag',['getETag',['../classRedMatrix_1_1RedDAV_1_1RedFile.html#a9f14682acf3ccb70df5af5dd0687c689',1,'RedMatrix::RedDAV::RedFile']]],
['getext',['getExt',['../classphoto__driver.html#aa2efb5b2a6af3fd67e3f1c2b9852a5ba',1,'photo_driver']]],
['getheight',['getHeight',['../classphoto__driver.html#af769e9abb144e57002c59aa2aa8f3468',1,'photo_driver']]],
+ ['geticonfromtype',['getIconFromType',['../classRedMatrix_1_1RedDAV_1_1RedBrowser.html#a810af4506cb3247e0ea7b0c4accbbc7a',1,'RedMatrix::RedDAV::RedBrowser']]],
['getimage',['getImage',['../classphoto__driver.html#ab98da263bd7341fc132c4fb6fc76e8d5',1,'photo_driver\getImage()'],['../classphoto__gd.html#a86757ba021fd80d1a5cf8c2f766a8484',1,'photo_gd\getImage()'],['../classphoto__imagick.html#ad07288e0eb3922cb08cc9d33a163decc',1,'photo_imagick\getImage()']]],
- ['getlastmodified',['getLastModified',['../classRedDirectory.html#a6c7e08199abc24e6eeb94a4037ef8bfc',1,'RedDirectory\getLastModified()'],['../classRedFile.html#a41562a28007789bbe7fe06d6a20eef47',1,'RedFile\getLastModified()']]],
- ['getname',['getName',['../classRedDirectory.html#af6e4475dbd5abcdede00d20b8d388583',1,'RedDirectory\getName()'],['../classRedFile.html#a0c961c5f49544d2502420361fa526437',1,'RedFile\getName()']]],
- ['getquotainfo',['getQuotaInfo',['../classRedDirectory.html#a2f7a574f2115f099d6dd103d5b252375',1,'RedDirectory']]],
- ['getsize',['getSize',['../classRedFile.html#acb1edbe1848fab05347746fa1ea09d8f',1,'RedFile']]],
+ ['getlastmodified',['getLastModified',['../classRedMatrix_1_1RedDAV_1_1RedDirectory.html#a69db5f641f8f5dc999e55cee1832ecd5',1,'RedMatrix\RedDAV\RedDirectory\getLastModified()'],['../classRedMatrix_1_1RedDAV_1_1RedFile.html#ac47016aa0e3f6f1a1c4570bd6fd8cf25',1,'RedMatrix\RedDAV\RedFile\getLastModified()']]],
+ ['getname',['getName',['../classRedMatrix_1_1RedDAV_1_1RedDirectory.html#a55f7172814a0749b5342f152ab3fa0df',1,'RedMatrix\RedDAV\RedDirectory\getName()'],['../classRedMatrix_1_1RedDAV_1_1RedFile.html#ac945aa782d6c035d339e59974266ec4d',1,'RedMatrix\RedDAV\RedFile\getName()']]],
+ ['getquotainfo',['getQuotaInfo',['../classRedMatrix_1_1RedDAV_1_1RedDirectory.html#a69db443ed3c84938b4352fe515bf8d68',1,'RedMatrix::RedDAV::RedDirectory']]],
+ ['getsize',['getSize',['../classRedMatrix_1_1RedDAV_1_1RedFile.html#a07e1b19e7aaf3dcce822e9be8823a87d',1,'RedMatrix::RedDAV::RedFile']]],
+ ['gettimezone',['getTimezone',['../classRedMatrix_1_1RedDAV_1_1RedBasicAuth.html#a6333c8ce58998bd11bf8102afe3b0748',1,'RedMatrix::RedDAV::RedBasicAuth']]],
['gettype',['getType',['../classphoto__driver.html#a6c6c16dbc4f517ce799f9143ed61f0e3',1,'photo_driver']]],
['getwidth',['getWidth',['../classphoto__driver.html#acc30486acee9e89e32701f44a1738117',1,'photo_driver']]],
['goaway',['goaway',['../boot_8php.html#a5ab6181607a090bcdbaa13b15b85aba1',1,'boot.php']]],
@@ -116,8 +141,8 @@ var searchData=
['gravity_5flike',['GRAVITY_LIKE',['../boot_8php.html#a1f5906598e90b5ea2b4245f682be4348',1,'boot.php']]],
['gravity_5fparent',['GRAVITY_PARENT',['../boot_8php.html#a2af173e4e9836ee7c90757b4793a2be3',1,'boot.php']]],
['greenthumbnails_2ephp',['greenthumbnails.php',['../greenthumbnails_8php.html',1,'']]],
- ['group_2ephp',['group.php',['../include_2group_8php.html',1,'']]],
['group_2ephp',['group.php',['../mod_2group_8php.html',1,'']]],
+ ['group_2ephp',['group.php',['../include_2group_8php.html',1,'']]],
['group_5fadd',['group_add',['../include_2group_8php.html#a06ec565d2b64e79044e7c1bf91a2a4ce',1,'group.php']]],
['group_5fadd_5fmember',['group_add_member',['../include_2group_8php.html#a0122ef312df2c5546b1a46b3e6c7b31b',1,'group.php']]],
['group_5fbyname',['group_byname',['../include_2group_8php.html#abd66a5ea34a07a3422dc2dde6c7b3ecb',1,'group.php']]],
diff --git a/doc/html/search/all_68.js b/doc/html/search/all_68.js
index 333929bea..184f04666 100644
--- a/doc/html/search/all_68.js
+++ b/doc/html/search/all_68.js
@@ -1,7 +1,11 @@
var searchData=
[
- ['handle_5ftag',['handle_tag',['../item_8php.html#aa22feef4de326e1d7078dedd892e615c',1,'item.php']]],
+ ['handle_5ffeed',['handle_feed',['../items_8php.html#a52c24114b73c0bdb605a03cd29712223',1,'items.php']]],
+ ['handle_5ftag',['handle_tag',['../text_8php.html#aa22feef4de326e1d7078dedd892e615c',1,'text.php']]],
['has_5fpermissions',['has_permissions',['../items_8php.html#a77051724d1784074ff187e73a4db93fe',1,'items.php']]],
+ ['hcard_2ephp',['hcard.php',['../hcard_8php.html',1,'']]],
+ ['hcard_5fcontent',['hcard_content',['../hcard_8php.html#a3663012f1549849af88aba2bb87388e3',1,'hcard.php']]],
+ ['hcard_5finit',['hcard_init',['../hcard_8php.html#ac34f26b0e6a37eef44fa49bea135136d',1,'hcard.php']]],
['head_5fadd_5fcss',['head_add_css',['../plugin_8php.html#a23c4fccf1eb5fcd63b24783ba1f05f7a',1,'plugin.php']]],
['head_5fadd_5fjs',['head_add_js',['../plugin_8php.html#a516591850f4fd49fd1425cfa54089db8',1,'plugin.php']]],
['head_5fget_5fcss',['head_get_css',['../plugin_8php.html#af92789f559b89a380e49d303218aeeca',1,'plugin.php']]],
@@ -14,8 +18,9 @@ var searchData=
['help',['help',['../namespacefriendica-to-smarty-tpl.html#af6b2c793958aae2aadc294577431f749',1,'friendica-to-smarty-tpl.help()'],['../namespaceupdatetpl.html#ac9d11279fed403a329a719298feafc4f',1,'updatetpl.help()']]],
['help_2ephp',['help.php',['../help_8php.html',1,'']]],
['help_5fcontent',['help_content',['../help_8php.html#af055e15f600ffa6fbca9386fdf715224',1,'help.php']]],
+ ['hivenet_5finit',['hivenet_init',['../hivenet_2php_2theme_8php.html#a3a8b539b112ae63936025236dbaf0a29',1,'theme.php']]],
['home_2ephp',['home.php',['../home_8php.html',1,'']]],
- ['home_5fcontent',['home_content',['../home_8php.html#aa1cf697851a646755baf537f75334c46',1,'home.php']]],
+ ['home_5fcontent',['home_content',['../home_8php.html#a6e3dbf78f4ed74ab2577de221190b33f',1,'home.php']]],
['home_5finit',['home_init',['../home_8php.html#ac4642c38b6f23a8d065dd4a75c620bde',1,'home.php']]],
['hostxrd_2ephp',['hostxrd.php',['../hostxrd_8php.html',1,'']]],
['hostxrd_5finit',['hostxrd_init',['../hostxrd_8php.html#aa37ffc8e7900bc76c4828bd25916db92',1,'hostxrd.php']]],
@@ -24,9 +29,10 @@ var searchData=
['html2bbcode_2ephp',['html2bbcode.php',['../html2bbcode_8php.html',1,'']]],
['html2plain',['html2plain',['../html2plain_8php.html#ab3e121fa9f3feb16f9f942e705bc6c04',1,'html2plain.php']]],
['html2plain_2ephp',['html2plain.php',['../html2plain_8php.html',1,'']]],
- ['htmlactionspanel',['htmlActionsPanel',['../classRedBrowser.html#a7f6bf0bda07833f4c647557bd172e349',1,'RedBrowser']]],
+ ['htmlactionspanel',['htmlActionsPanel',['../classRedMatrix_1_1RedDAV_1_1RedBrowser.html#a3bd98af2d1cdfd8f26deb914596176cf',1,'RedMatrix::RedDAV::RedBrowser']]],
['http_5fstatus_5fexit',['http_status_exit',['../include_2network_8php.html#a4cfb2c05a1c295317283d762440ce0b2',1,'network.php']]],
['hubloc_2ephp',['hubloc.php',['../hubloc_8php.html',1,'']]],
+ ['hubloc_5fchange_5fprimary',['hubloc_change_primary',['../hubloc_8php.html#ad86214b3a74084bd7b54e8d6c919ce4d',1,'hubloc.php']]],
['hubloc_5fflags_5fdeleted',['HUBLOC_FLAGS_DELETED',['../boot_8php.html#a7c286add8961fd2d79216314cd4aadd8',1,'boot.php']]],
['hubloc_5fflags_5forphancheck',['HUBLOC_FLAGS_ORPHANCHECK',['../boot_8php.html#aefe573c3c7b0d37fbff264bbae79d673',1,'boot.php']]],
['hubloc_5fflags_5fprimary',['HUBLOC_FLAGS_PRIMARY',['../boot_8php.html#a3ad9cc5d4354be741fa1de12b96e9955',1,'boot.php']]],
diff --git a/doc/html/search/all_69.js b/doc/html/search/all_69.js
index f42c3107f..887925d63 100644
--- a/doc/html/search/all_69.js
+++ b/doc/html/search/all_69.js
@@ -1,14 +1,20 @@
var searchData=
[
+ ['ical_5fwrapper',['ical_wrapper',['../event_8php.html#ab8cc2825013e724dc26229026711cf93',1,'event.php']]],
['identity_2ephp',['identity.php',['../identity_8php.html',1,'']]],
- ['identity_5fbasic_5fexport',['identity_basic_export',['../identity_8php.html#a3570a4eb77332b292d394c4132cb8f03',1,'identity.php']]],
+ ['identity_5fbasic_5fexport',['identity_basic_export',['../identity_8php.html#afaedbc8e2d2a70ec8b006162baac5249',1,'identity.php']]],
['identity_5fcheck_5fservice_5fclass',['identity_check_service_class',['../identity_8php.html#ac9fcd5c4c371998790b5c55c3d0f4633',1,'identity.php']]],
['identity_5fselector',['identity_selector',['../identity_8php.html#a2ab5172eabd375869060c9ad68323f5c',1,'identity.php']]],
['ids_5fto_5fquerystr',['ids_to_querystr',['../text_8php.html#a436a8de00c942364c2d0fcfc7e1f4b5a',1,'text.php']]],
- ['if',['if',['../php2po_8php.html#a45b05625748f412ec97afcd61cf7980b',1,'if():&#160;php2po.php'],['../php_2default_8php.html#a3987f5547ceb7e36a210a66a06241a5a',1,'if():&#160;default.php'],['../full_8php.html#a3987f5547ceb7e36a210a66a06241a5a',1,'if():&#160;full.php'],['../apw_2php_2style_8php.html#a2f71e817b8fac88ce7f0ec5c0fb88b8d',1,'if():&#160;style.php'],['../theme_2mytheme_2php_2default_8php.html#a3987f5547ceb7e36a210a66a06241a5a',1,'if():&#160;default.php']]],
+ ['if',['if',['../php2po_8php.html#a45b05625748f412ec97afcd61cf7980b',1,'if():&#160;php2po.php'],['../php_2default_8php.html#a3987f5547ceb7e36a210a66a06241a5a',1,'if():&#160;default.php'],['../full_8php.html#a3987f5547ceb7e36a210a66a06241a5a',1,'if():&#160;full.php'],['../redable_8php.html#a3987f5547ceb7e36a210a66a06241a5a',1,'if():&#160;redable.php'],['../apw_2php_2style_8php.html#a2f71e817b8fac88ce7f0ec5c0fb88b8d',1,'if():&#160;style.php'],['../theme_2mytheme_2php_2default_8php.html#a3987f5547ceb7e36a210a66a06241a5a',1,'if():&#160;default.php']]],
['imagestring',['imageString',['../classphoto__driver.html#abc9f73ad90923772d52b9fcc4eb117dd',1,'photo_driver\imageString()'],['../classphoto__gd.html#a0795fc029be382557ae3f6e285f40e00',1,'photo_gd\imageString()'],['../classphoto__imagick.html#a70adbef31128c0ac8cbc5dcf34cdb019',1,'photo_imagick\imageString()']]],
+ ['impel_2ephp',['impel.php',['../impel_8php.html',1,'']]],
+ ['impel_5finit',['impel_init',['../impel_8php.html#ab7db6fca43b42ea4332cb3e841b3cf7b',1,'impel.php']]],
+ ['import',['Import',['../classRedMatrix_1_1Import_1_1Import.html',1,'RedMatrix::Import']]],
['import_2ephp',['import.php',['../import_8php.html',1,'']]],
+ ['import_5fauthor_5fdiaspora',['import_author_diaspora',['../items_8php.html#a2c3f97b2109c05df86d97449b3c78ebc',1,'items.php']]],
['import_5fauthor_5frss',['import_author_rss',['../items_8php.html#a6bee35961f2e32905f20367a9309d627',1,'items.php']]],
+ ['import_5fauthor_5funknown',['import_author_unknown',['../items_8php.html#a37f79991f36811cf847446ff60e8e11f',1,'items.php']]],
['import_5fauthor_5fxchan',['import_author_xchan',['../items_8php.html#ae73794179b62d39bb597ff670ab1c1e5',1,'items.php']]],
['import_5fauthor_5fzot',['import_author_zot',['../zot_8php.html#ad149f1e98c0c5b88ff9147e6ee3f330d',1,'zot.php']]],
['import_5fchannel_5fphoto',['import_channel_photo',['../photo__driver_8php.html#a1d0bc7161dec0d177b7d3bbe4421af9a',1,'photo_driver.php']]],
@@ -21,11 +27,13 @@ var searchData=
['import_5fxchan',['import_xchan',['../zot_8php.html#a528e97ca5d69c3b7f35c5d954afde315',1,'zot.php']]],
['importelm_2ephp',['importelm.php',['../importelm_8php.html',1,'']]],
['importelm_5fpost',['importelm_post',['../importelm_8php.html#a1a4f71e6d76ace6add5e9659845f5e5f',1,'importelm.php']]],
+ ['importer_2ephp',['Importer.php',['../Importer_8php.html',1,'']]],
['in_5farrayi',['in_arrayi',['../text_8php.html#a75c326298519ed14ebe762194c8a3f2a',1,'text.php']]],
['info',['info',['../boot_8php.html#adfb2fc7be5a4226c0a8e24131da9d498',1,'boot.php']]],
['insert_5fhook',['insert_hook',['../plugin_8php.html#aeaebe63dcf6fa2794f363ba2bc0b2c6b',1,'plugin.php']]],
['install',['install',['../classdba__driver.html#a4ccb27243e62a8ca30dd8e1b8cc67746',1,'dba_driver']]],
['install_5fplugin',['install_plugin',['../plugin_8php.html#a482131013272a1d5d5c1b1469c6c55d5',1,'plugin.php']]],
+ ['install_5fscript',['INSTALL_SCRIPT',['../classdba__driver.html#a98d8523dcedda316085b4d4f856b6583',1,'dba_driver\INSTALL_SCRIPT()'],['../classdba__postgres.html#a7267f91c3f87f600b30d7560de62dfd7',1,'dba_postgres\INSTALL_SCRIPT()']]],
['invite_2ephp',['invite.php',['../invite_8php.html',1,'']]],
['invite_5fcontent',['invite_content',['../invite_8php.html#a244385b28cfd021d308715f01158bfd9',1,'invite.php']]],
['invite_5fpost',['invite_post',['../invite_8php.html#aeb0881c0f93c8e8552e5ed756ce6e5a5',1,'invite.php']]],
@@ -34,6 +42,7 @@ var searchData=
['is_5fcommentable',['is_commentable',['../classConversation.html#a8b47c92b69459d461ea3cc9aae9597a3',1,'Conversation\is_commentable()'],['../classItem.html#ac04525a8be24c12b0a2ae4ca1ba4b967',1,'Item\is_commentable()']]],
['is_5fdeveloper',['is_developer',['../boot_8php.html#a6252d8eca67c689d9035ec6da544cf46',1,'boot.php']]],
['is_5fforeigner',['is_foreigner',['../identity_8php.html#ae2b140df652a55ca11bb6a99005fce35',1,'identity.php']]],
+ ['is_5fmatrix_5furl',['is_matrix_url',['../hubloc_8php.html#aebd244b4616ded022cbbee5e82926951',1,'hubloc.php']]],
['is_5fmember',['is_member',['../identity_8php.html#a9637c557e13d9671f3eeb124ab98212a',1,'identity.php']]],
['is_5fpreview',['is_preview',['../classConversation.html#adf25ce023b69a166c63c6e84e02c136a',1,'Conversation']]],
['is_5fpublic_5fprofile',['is_public_profile',['../identity_8php.html#a4e996e44b50330098a04b467367a559f',1,'identity.php']]],
@@ -79,6 +88,7 @@ var searchData=
['item_5frelay',['ITEM_RELAY',['../boot_8php.html#a2958a2bd5422b85329d7c36c06dbc221',1,'boot.php']]],
['item_5fremove_5fcid',['item_remove_cid',['../items_8php.html#a5ed782ff5b9cf050bec931e06de12c00',1,'items.php']]],
['item_5fretained',['ITEM_RETAINED',['../boot_8php.html#a11cfe7d99b4dac0454d0de8873989f81',1,'boot.php']]],
+ ['item_5frss',['ITEM_RSS',['../boot_8php.html#ac4d1c93dabcace711ffb4931204c336b',1,'boot.php']]],
['item_5fspam',['ITEM_SPAM',['../boot_8php.html#a40d885b2cfd736aab4234ae641ca4dfb',1,'boot.php']]],
['item_5fstarred',['ITEM_STARRED',['../boot_8php.html#a7af107fab8d62b9a73801713b774ed30',1,'boot.php']]],
['item_5fstore',['item_store',['../items_8php.html#a2541e6861a56d145c9281877cc501615',1,'items.php']]],
diff --git a/doc/html/search/all_6c.js b/doc/html/search/all_6c.js
index 8299c4b92..2f79bf4e6 100644
--- a/doc/html/search/all_6c.js
+++ b/doc/html/search/all_6c.js
@@ -9,6 +9,7 @@ var searchData=
['layout_5fselect',['layout_select',['../text_8php.html#a3999a0b3e22e440f280ee791ce34d384',1,'text.php']]],
['layouts_2ephp',['layouts.php',['../layouts_8php.html',1,'']]],
['layouts_5fcontent',['layouts_content',['../layouts_8php.html#a6e0193759ad9eef76d3df2db24237b50',1,'layouts.php']]],
+ ['layouts_5finit',['layouts_init',['../layouts_8php.html#a39c8e9f72641c684c8b689bd91a642fa',1,'layouts.php']]],
['ldelim',['ldelim',['../namespacefriendica-to-smarty-tpl.html#a0b4cf73d1a8d201a28d269eeb62a5d5c',1,'friendica-to-smarty-tpl']]],
['legal_5fwebbie',['legal_webbie',['../text_8php.html#a2690ad67bb6fb97ef69de3e8d23f2728',1,'text.php']]],
['like_2ephp',['like.php',['../like_8php.html',1,'']]],
@@ -17,24 +18,30 @@ var searchData=
['limit_5fbody_5fsize',['limit_body_size',['../items_8php.html#af94c281016c6c912d06e064113336c5c',1,'items.php']]],
['link_5fcompare',['link_compare',['../text_8php.html#a47c1e4a5f3f53027daacd8a9db24f285',1,'text.php']]],
['linkify',['linkify',['../text_8php.html#a11255c8c4e5245b6c24f97684826aa54',1,'text.php']]],
- ['list_5fpost_5fdates',['list_post_dates',['../items_8php.html#aa2d3caa2f27720762b5c729e07df40fb',1,'items.php']]],
+ ['list_5fpost_5fdates',['list_post_dates',['../items_8php.html#ab33fa9756aaa5f39a6104d57a62baf00',1,'items.php']]],
['list_5fpublic_5fsites',['list_public_sites',['../dirsearch_8php.html#a985d410a170549429857af6ff2673149',1,'dirsearch.php']]],
+ ['list_5fsmilies',['list_smilies',['../text_8php.html#a4446c7f8996a280f7e08b7bfe6c6c8bc',1,'text.php']]],
['load',['load',['../classphoto__driver.html#a19e1af2b6af4c63aa6230abe69f83712',1,'photo_driver\load()'],['../classphoto__gd.html#a33092b889875b68bfb1c97ff123012d9',1,'photo_gd\load()'],['../classphoto__imagick.html#a2c9168f110ccd6c264095d766615dfa8',1,'photo_imagick\load()']]],
['load_5fconfig',['load_config',['../include_2config_8php.html#a27559f388c9b9af81c94e48d6889d1d1',1,'config.php']]],
['load_5fcontact_5flinks',['load_contact_links',['../boot_8php.html#a719c7f3972d5f9268f37a41c76cd4ef6',1,'boot.php']]],
['load_5fdatabase',['load_database',['../setup_8php.html#ad2e0375a9ab87ebe6e78124ee125054a',1,'setup.php']]],
['load_5fdatabase_5frem',['load_database_rem',['../setup_8php.html#a2b375ddc555140236fc500135de99371',1,'setup.php']]],
['load_5fhooks',['load_hooks',['../plugin_8php.html#a326365e48ef94f0b9a0a771b8d75e813',1,'plugin.php']]],
- ['load_5fpconfig',['load_pconfig',['../include_2config_8php.html#ac543813a980b3841cc5a277fcd4a24a6',1,'config.php']]],
+ ['load_5fpconfig',['load_pconfig',['../include_2config_8php.html#a559791dda7fef8a4b2394c83e835787b',1,'config.php']]],
+ ['load_5fpdl',['load_pdl',['../boot_8php.html#a50a6707a28c7d05d3f49eaabc7994501',1,'boot.php']]],
['load_5fplugin',['load_plugin',['../plugin_8php.html#a9ca9632b7309a65b05c03a3e2f473a3d',1,'plugin.php']]],
['load_5ftranslation_5ftable',['load_translation_table',['../language_8php.html#a7e9904c730bb24ddcb0ff50fc96f6b05',1,'language.php']]],
- ['load_5fxconfig',['load_xconfig',['../include_2config_8php.html#a55bbed9a014c9109c767486834f3ca33',1,'config.php']]],
+ ['load_5fxconfig',['load_xconfig',['../include_2config_8php.html#aee4b619839cf4b64220f34edf5c67b52',1,'config.php']]],
['local_5fdir_5fupdate',['local_dir_update',['../dir__fns_8php.html#acd37b17dce3bdec6d5a6344a20598c1e',1,'dir_fns.php']]],
['local_5fuser',['local_user',['../boot_8php.html#ad4c9dc2c8a82e8f52b7404c1655eab44',1,'boot.php']]],
['localize_5fitem',['localize_item',['../conversation_8php.html#a9bd7f9fb6678736c581bcba3b17f471c',1,'conversation.php']]],
['lockview_2ephp',['lockview.php',['../lockview_8php.html',1,'']]],
['lockview_5fcontent',['lockview_content',['../lockview_8php.html#a851e26ab9a1008df5c5ebebea31e9b44',1,'lockview.php']]],
- ['log',['log',['../classRedDirectory.html#a11376aed1963b4471eb1592c13c63976',1,'RedDirectory\log()'],['../classRedBasicAuth.html#a2cc8b1eac9c5a799bfb53ea7f287f3f0',1,'RedBasicAuth\log()']]],
+ ['locs_2ephp',['locs.php',['../locs_8php.html',1,'']]],
+ ['locs_5fcontent',['locs_content',['../locs_8php.html#a6c900f53970c0d0e738d2fe06d27ca44',1,'locs.php']]],
+ ['locs_5fpost',['locs_post',['../locs_8php.html#a6b43654592919ac863d67a1f787a69b9',1,'locs.php']]],
+ ['log',['log',['../classRedMatrix_1_1RedDAV_1_1RedBasicAuth.html#abf6fe89b0a8239ed93c3b07e1fbce75b',1,'RedMatrix\RedDAV\RedBasicAuth\log()'],['../classRedMatrix_1_1RedDAV_1_1RedDirectory.html#af90a1a74cfd643a5c56b9a17ea250d59',1,'RedMatrix\RedDAV\RedDirectory\log()']]],
+ ['log_5ffailed_5flogin',['log_failed_login',['../auth_8php.html#ae3ecb5f34f202c7f9a61c5d589f6c6e1',1,'auth.php']]],
['logger',['logger',['../text_8php.html#a030fa5ecc64168af0c4f44897a9bce63',1,'text.php']]],
['logger_5fall',['LOGGER_ALL',['../boot_8php.html#afe63ae69ba55299f813766e54df06ede',1,'boot.php']]],
['logger_5fdata',['LOGGER_DATA',['../boot_8php.html#a6969947145a139ec374ce098224d8e81',1,'boot.php']]],
diff --git a/doc/html/search/all_6d.js b/doc/html/search/all_6d.js
index 38c3e7a51..879ff1473 100644
--- a/doc/html/search/all_6d.js
+++ b/doc/html/search/all_6d.js
@@ -14,15 +14,17 @@ var searchData=
['mail_5freplied',['MAIL_REPLIED',['../boot_8php.html#aa3679df31c8dad1b71816b0322d5baff',1,'boot.php']]],
['mail_5fseen',['MAIL_SEEN',['../boot_8php.html#a1fbb93cf030f07391f22cc2948744869',1,'boot.php']]],
['mail_5fstore',['mail_store',['../items_8php.html#a77da7ce9a117601d49ac4a67c71b514f',1,'items.php']]],
+ ['make_5fxchan_5fhash',['make_xchan_hash',['../zot_8php.html#a0fc2211c5309d9f925ecc4115e3fdb75',1,'zot.php']]],
['manage_2ephp',['manage.php',['../manage_8php.html',1,'']]],
['manage_5fcontent',['manage_content',['../manage_8php.html#a2bca247b5296827638959138367db4f5',1,'manage.php']]],
['manual_5fconfig',['manual_config',['../setup_8php.html#abe405d227ba7232971964a706d4f3bce',1,'setup.php']]],
- ['map_5fscope',['map_scope',['../items_8php.html#ac1fcf621dce7370515b420a7753f4726',1,'items.php']]],
+ ['map_5fscope',['map_scope',['../items_8php.html#a8675e62674de6fb7c42e4a408c7116cc',1,'items.php']]],
['marital_5fselector',['marital_selector',['../profile__selectors_8php.html#a7473dd095987e1cdcc79d4f0bb5e6798',1,'profile_selectors.php']]],
+ ['marital_5fselector_5fmin',['marital_selector_min',['../profile__selectors_8php.html#adc79715bd2e102b4583fb530749ec534',1,'profile_selectors.php']]],
['mark_5forphan_5fhubsxchans',['mark_orphan_hubsxchans',['../Contact_8php.html#a08845ce8c5b997d5edac38ae7118b5c8',1,'Contact.php']]],
['match_2ephp',['match.php',['../match_8php.html',1,'']]],
['match_5fcontent',['match_content',['../match_8php.html#a1dd853e959b9e70c1911bb2fb5f5130d',1,'match.php']]],
- ['match_5fopenid',['match_openid',['../auth_8php.html#ab7be44ee051c0aa29847807cf2c5dd38',1,'auth.php']]],
+ ['match_5fopenid',['match_openid',['../auth_8php.html#a69fa663e6baf65f80d1b114ad72615f2',1,'auth.php']]],
['max_5fimage_5flength',['MAX_IMAGE_LENGTH',['../boot_8php.html#a525ca93ff35d3535d1a2b8ba57876afa',1,'boot.php']]],
['max_5flikers',['MAX_LIKERS',['../boot_8php.html#a35625dacd2158b9f1f1a8e77f9f081fd',1,'boot.php']]],
['member_5fof',['member_of',['../include_2group_8php.html#a048f6892bfd28852de1b76470df411de',1,'group.php']]],
@@ -43,12 +45,15 @@ var searchData=
['menu_5fitem_5fnewwin',['MENU_ITEM_NEWWIN',['../boot_8php.html#ad11f30a6590d3d77f0c5e1e3909af8f5',1,'boot.php']]],
['menu_5fitem_5fzid',['MENU_ITEM_ZID',['../boot_8php.html#aed0dfb35f7dd00dc9e4f868ea7f7ff53',1,'boot.php']]],
['menu_5flist',['menu_list',['../include_2menu_8php.html#a32701c4245e78ba9106eef52c08bf33d',1,'menu.php']]],
+ ['menu_5flist_5fcount',['menu_list_count',['../include_2menu_8php.html#a251bf7e15d21627fd92614198e41c485',1,'menu.php']]],
['menu_5fpost',['menu_post',['../mod_2menu_8php.html#aaa491ef173868fe002aece4632bcf393',1,'menu.php']]],
['menu_5frender',['menu_render',['../include_2menu_8php.html#a03a5deed3908543581c074ce333e9d6a',1,'menu.php']]],
['menu_5fsystem',['MENU_SYSTEM',['../boot_8php.html#a718a801b0be6cbaef5e519516da12721',1,'boot.php']]],
['message_2ephp',['message.php',['../include_2message_8php.html',1,'']]],
['message_2ephp',['message.php',['../mod_2message_8php.html',1,'']]],
['message_5fcontent',['message_content',['../mod_2message_8php.html#ac72dfed3ce08fcb331d66b37edc6e15f',1,'message.php']]],
+ ['metopem',['metopem',['../crypto_8php.html#af8bbdeaf4abed7b40365d301e6013c85',1,'crypto.php']]],
+ ['metorsa',['metorsa',['../crypto_8php.html#a573f02517abe4ac9241268263063b2a0',1,'crypto.php']]],
['micropro',['micropro',['../text_8php.html#a2a902f5fdba8646333e997898ac45ea3',1,'text.php']]],
['mimetype_5fselect',['mimetype_select',['../text_8php.html#a1633412120f52bdce5f43e0a127d9293',1,'text.php']]],
['mini_5fgroup_5fselect',['mini_group_select',['../include_2group_8php.html#ab0e422a0f31c0c64fd9084ca03d85f32',1,'group.php']]],
diff --git a/doc/html/search/all_6e.js b/doc/html/search/all_6e.js
index a776758e5..033269fb9 100644
--- a/doc/html/search/all_6e.js
+++ b/doc/html/search/all_6e.js
@@ -1,6 +1,6 @@
var searchData=
[
- ['n',['n',['../php2po_8php.html#a1594a11499d06cc8a789ee7ca0c7a12b',1,'php2po.php']]],
+ ['n',['n',['../fixd_8php.html#a9d4f8a2ab4d92b3ccfd7cba0458098eb',1,'n():&#160;fixd.php'],['../php2po_8php.html#a1594a11499d06cc8a789ee7ca0c7a12b',1,'n():&#160;php2po.php']]],
['names',['names',['../namespaceupdatetpl.html#ab42dd79af65ee82201fd6f04715f62f6',1,'updatetpl']]],
['nameslist',['namesList',['../docblox__errorchecker_8php.html#a2b767cfc461fdd5061fffc9e4a806d5b',1,'docblox_errorchecker.php']]],
['namespace_5factivity',['NAMESPACE_ACTIVITY',['../boot_8php.html#a5df5359090d1f8e898c36d7cf8878ad2',1,'boot.php']]],
@@ -17,6 +17,7 @@ var searchData=
['namespace_5fstatusnet',['NAMESPACE_STATUSNET',['../boot_8php.html#afaf93b7026f784b113b4f8921745891e',1,'boot.php']]],
['namespace_5fthread',['NAMESPACE_THREAD',['../boot_8php.html#a1d6e7f4c08bb68e4a424326a811bdd86',1,'boot.php']]],
['namespace_5ftomb',['NAMESPACE_TOMB',['../boot_8php.html#a4bfe22e163657690dfb6d5b1d04cb47e',1,'boot.php']]],
+ ['namespace_5fymedia',['NAMESPACE_YMEDIA',['../boot_8php.html#a3d48dffd9dc73a187263c3002cdf00c0',1,'boot.php']]],
['namespace_5fzot',['NAMESPACE_ZOT',['../boot_8php.html#a49f2a70b3b43aa904223a8d19e986a47',1,'boot.php']]],
['nav',['nav',['../nav_8php.html#a43be0df73b90647ea70947ce004e231e',1,'nav.php']]],
['nav_2ephp',['nav.php',['../nav_8php.html',1,'']]],
@@ -66,11 +67,13 @@ var searchData=
['notification',['notification',['../enotify_8php.html#a3e9a9355b243777c488d2a9883908dfc',1,'enotify.php']]],
['notifications_2ephp',['notifications.php',['../notifications_8php.html',1,'']]],
['notifications_5fcontent',['notifications_content',['../notifications_8php.html#aadd0b5525bd8c283a5d8a37982bbfe62',1,'notifications.php']]],
+ ['notifications_5foff',['notifications_off',['../identity_8php.html#a2e6a1cc35887937823ec7fbb90472afe',1,'identity.php']]],
+ ['notifications_5fon',['notifications_on',['../identity_8php.html#a5650319c799de09d1b6d1076b6f839a4',1,'identity.php']]],
['notifications_5fpost',['notifications_post',['../notifications_8php.html#a5baffec7b2e625c9f9cefbc097550d33',1,'notifications.php']]],
['notifier_2ephp',['notifier.php',['../notifier_8php.html',1,'']]],
['notifier_5frun',['notifier_run',['../notifier_8php.html#a568c502f626cff95e344c0748938b85d',1,'notifier.php']]],
- ['notify_2ephp',['notify.php',['../include_2notify_8php.html',1,'']]],
['notify_2ephp',['notify.php',['../mod_2notify_8php.html',1,'']]],
+ ['notify_2ephp',['notify.php',['../include_2notify_8php.html',1,'']]],
['notify_5fcomment',['NOTIFY_COMMENT',['../boot_8php.html#a20f0eed431d25870b624b8937a07a59f',1,'boot.php']]],
['notify_5fconfirm',['NOTIFY_CONFIRM',['../boot_8php.html#af8c0cb0744c9a6b5d6d3baafb1f1e71d',1,'boot.php']]],
['notify_5fcontent',['notify_content',['../mod_2notify_8php.html#acdf3851688ebd6d6a575eb84ef9febe3',1,'notify.php']]],
@@ -85,5 +88,6 @@ var searchData=
['notify_5ftagshare',['NOTIFY_TAGSHARE',['../boot_8php.html#af6937db5f581d006bf4a5c3d9c7e0461',1,'boot.php']]],
['notify_5fwall',['NOTIFY_WALL',['../boot_8php.html#a505410c7edc5f5bb5fa227b98359793e',1,'boot.php']]],
['notred_2ephp',['notred.php',['../notred_8php.html',1,'']]],
- ['nuke_5fsession',['nuke_session',['../auth_8php.html#a2add3a1129ffa4d5515442a9d52a9b1a',1,'auth.php']]]
+ ['nuke_5fsession',['nuke_session',['../auth_8php.html#a2add3a1129ffa4d5515442a9d52a9b1a',1,'auth.php']]],
+ ['null_5fdate',['NULL_DATE',['../classdba__driver.html#afce39394c010ea589d99a21579b2c31e',1,'dba_driver\NULL_DATE()'],['../classdba__postgres.html#aeb404a85974d6c5df30c21650888000b',1,'dba_postgres\NULL_DATE()']]]
];
diff --git a/doc/html/search/all_6f.js b/doc/html/search/all_6f.js
index b67ac1b5f..dfad733d0 100644
--- a/doc/html/search/all_6f.js
+++ b/doc/html/search/all_6f.js
@@ -18,6 +18,7 @@ var searchData=
['oexchange_2ephp',['oexchange.php',['../oexchange_8php.html',1,'']]],
['oexchange_5fcontent',['oexchange_content',['../oexchange_8php.html#a2d8b785cd7d041a4e6274f5af370cf26',1,'oexchange.php']]],
['oexchange_5finit',['oexchange_init',['../oexchange_8php.html#ac8e2e469ddc3db984b0c1b44558aca59',1,'oexchange.php']]],
+ ['old_5fwebfinger',['old_webfinger',['../include_2network_8php.html#a872bbe72d23826c64c9e0f822180a3ec',1,'network.php']]],
['olddefault_2ephp',['olddefault.php',['../olddefault_8php.html',1,'']]],
['onedirsync_2ephp',['onedirsync.php',['../onedirsync_8php.html',1,'']]],
['onedirsync_5frun',['onedirsync_run',['../onedirsync_8php.html#a411aedd47c57476099647961e6a86691',1,'onedirsync.php']]],
@@ -29,7 +30,9 @@ var searchData=
['openid_5fcontent',['openid_content',['../openid_8php.html#a9a13827dbcf61ae4e45f0b6b33a88f43',1,'openid.php']]],
['opensearch_2ephp',['opensearch.php',['../opensearch_8php.html',1,'']]],
['opensearch_5finit',['opensearch_init',['../opensearch_8php.html#ad13034877a496565ac7d99e9fc6f55e9',1,'opensearch.php']]],
+ ['optimize_5ftable',['optimize_table',['../classdba__driver.html#a77e59dcbeab30ca6000131d2e9ad4092',1,'dba_driver\optimize_table()'],['../classdba__postgres.html#a3de1ac375e98886dfc38fd0066e88f90',1,'dba_postgres\optimize_table()']]],
['orient',['orient',['../classphoto__driver.html#a4de5bac8daea8f291a33c80788019d0d',1,'photo_driver']]],
+ ['os_5fmkdir',['os_mkdir',['../boot_8php.html#a5fbebdf7a1c0ea8f904dbd9d78c2c06c',1,'boot.php']]],
['outf',['outf',['../namespacefriendica-to-smarty-tpl.html#a87182a9bab47640428bd0b2b9946bef9',1,'friendica-to-smarty-tpl']]],
['outpath',['outpath',['../namespacefriendica-to-smarty-tpl.html#a005c1b7a69cac31fad72a941974ba7bb',1,'friendica-to-smarty-tpl']]]
];
diff --git a/doc/html/search/all_70.js b/doc/html/search/all_70.js
index 173febd6e..931668885 100644
--- a/doc/html/search/all_70.js
+++ b/doc/html/search/all_70.js
@@ -1,5 +1,7 @@
var searchData=
[
+ ['p_2ephp',['p.php',['../p_8php.html',1,'']]],
+ ['p_5finit',['p_init',['../p_8php.html#af9d5530ca0b3dc9409cf591c39e2480e',1,'p.php']]],
['page',['page',['../mod__import_8php.html#a8db1899eeeb44dabd0904065b63627bb',1,'mod_import.php']]],
['page_2ephp',['page.php',['../page_8php.html',1,'']]],
['page_5fadult',['PAGE_ADULT',['../boot_8php.html#ace83842dbeb84f7ed9ac59a9f57a7c32',1,'boot.php']]],
@@ -9,6 +11,7 @@ var searchData=
['page_5fcontent',['page_content',['../page_8php.html#a91a5f649f68406149108bded1dc90b22',1,'page.php']]],
['page_5fdirectory_5fchannel',['PAGE_DIRECTORY_CHANNEL',['../boot_8php.html#a5b8484922918946d041e5e0515dbe718',1,'boot.php']]],
['page_5fhidden',['PAGE_HIDDEN',['../boot_8php.html#a5e322a2a2d0f51924c0b2e874988e640',1,'boot.php']]],
+ ['page_5fhubadmin',['PAGE_HUBADMIN',['../boot_8php.html#afbb21ecccac9819aa65397e816868a5f',1,'boot.php']]],
['page_5finit',['page_init',['../page_8php.html#a4d89800c0366a239191b1692c09635cf',1,'page.php']]],
['page_5fnormal',['PAGE_NORMAL',['../boot_8php.html#a09532c3f750ae8c4527e63b2b790cbf3',1,'boot.php']]],
['page_5fpremium',['PAGE_PREMIUM',['../boot_8php.html#ab3920c2f3cd64802c0b7ff625c3b2ea8',1,'boot.php']]],
@@ -31,11 +34,12 @@ var searchData=
['pdledit_2ephp',['pdledit.php',['../pdledit_8php.html',1,'']]],
['pdledit_5fcontent',['pdledit_content',['../pdledit_8php.html#a59cb550f6b7a4e7d8196fbc9de601619',1,'pdledit.php']]],
['pdledit_5fpost',['pdledit_post',['../pdledit_8php.html#a81da3c955d0e3db55d148a31483104c7',1,'pdledit.php']]],
+ ['pemtome',['pemtome',['../crypto_8php.html#a798368843cdd9bb08386b48e53e29e8c',1,'crypto.php']]],
+ ['pemtorsa',['pemtorsa',['../crypto_8php.html#a35bc357c93f4ddc67ef377620b0349e8',1,'crypto.php']]],
['perm_5fis_5fallowed',['perm_is_allowed',['../permissions_8php.html#a67ada9ed51e77885b6b0f6a28cee1835',1,'permissions.php']]],
['permissions_2ephp',['permissions.php',['../permissions_8php.html',1,'']]],
['permissions_5fsql',['permissions_sql',['../security_8php.html#afa683bc025a1d2fe9065e2f6cd71a22f',1,'security.php']]],
['perms2str',['perms2str',['../text_8php.html#a98fd99dee3da8cf4c148dc04efe782ee',1,'text.php']]],
- ['perms_5fa_5fbookmark',['PERMS_A_BOOKMARK',['../boot_8php.html#a8b2af16eaee9e7768a88d0e437877f3b',1,'boot.php']]],
['perms_5fa_5fdelegate',['PERMS_A_DELEGATE',['../boot_8php.html#a423505ab8dbd8e39d04ae3fe1374102b',1,'boot.php']]],
['perms_5fa_5frepublish',['PERMS_A_REPUBLISH',['../boot_8php.html#aae6c941bde5fd6fce07e51dba7326ead',1,'boot.php']]],
['perms_5fauthed',['PERMS_AUTHED',['../boot_8php.html#a852d4036a3bed66af1534d014c4ecde2',1,'boot.php']]],
@@ -53,6 +57,7 @@ var searchData=
['perms_5fspecific',['PERMS_SPECIFIC',['../boot_8php.html#a9cc986b4f9dd6558cbb2e25aadbfd964',1,'boot.php']]],
['perms_5fw_5fchat',['PERMS_W_CHAT',['../boot_8php.html#acd877c405b06b348b37b6f7e62a211e9',1,'boot.php']]],
['perms_5fw_5fcomment',['PERMS_W_COMMENT',['../boot_8php.html#a32df13fec0e43281da5979e1f5579aa8',1,'boot.php']]],
+ ['perms_5fw_5flike',['PERMS_W_LIKE',['../boot_8php.html#af3ff14985bffbd951a6ea356b7ec3007',1,'boot.php']]],
['perms_5fw_5fmail',['PERMS_W_MAIL',['../boot_8php.html#a6b31dd451bc6c37fe7c9c766ff385aaf',1,'boot.php']]],
['perms_5fw_5fpages',['PERMS_W_PAGES',['../boot_8php.html#aa9244fc9cc221980c07a20cc534111be',1,'boot.php']]],
['perms_5fw_5fphotos',['PERMS_W_PHOTOS',['../boot_8php.html#a57eee7352714c004d36c26dda74af73e',1,'boot.php']]],
@@ -61,9 +66,11 @@ var searchData=
['perms_5fw_5ftagwall',['PERMS_W_TAGWALL',['../boot_8php.html#a99a4a17cb644e7e6826ea07ecaf09777',1,'boot.php']]],
['perms_5fw_5fwall',['PERMS_W_WALL',['../boot_8php.html#a6b14a31a8aa9f3452a13383f413bffa2',1,'boot.php']]],
['photo_2ephp',['photo.php',['../photo_8php.html',1,'']]],
+ ['photo_5fadult',['PHOTO_ADULT',['../boot_8php.html#a921c55b9fa59a327a5f0e07fa1ccb2e0',1,'boot.php']]],
['photo_5fdriver',['photo_driver',['../classphoto__driver.html',1,'']]],
['photo_5fdriver_2ephp',['photo_driver.php',['../photo__driver_8php.html',1,'']]],
['photo_5ffactory',['photo_factory',['../photo__driver_8php.html#a32e2817faa25d7f11f60a8abff565035',1,'photo_driver.php']]],
+ ['photo_5fflag_5fos',['PHOTO_FLAG_OS',['../boot_8php.html#ab49a5d43ce1150c5af8c750ccb14e15f',1,'boot.php']]],
['photo_5fgd',['photo_gd',['../classphoto__gd.html',1,'']]],
['photo_5fgd_2ephp',['photo_gd.php',['../photo__gd_8php.html',1,'']]],
['photo_5fimagick',['photo_imagick',['../classphoto__imagick.html',1,'']]],
@@ -95,8 +102,12 @@ var searchData=
['ping_2ephp',['ping.php',['../ping_8php.html',1,'']]],
['ping_5finit',['ping_init',['../ping_8php.html#a77217b1b190b4c5d8770867b45f0c0a1',1,'ping.php']]],
['pipe_5fstreams',['pipe_streams',['../include_2attach_8php.html#a5d484de2d19a93071571d6499a50ae34',1,'attach.php']]],
+ ['pkcs1_5fencode',['pkcs1_encode',['../crypto_8php.html#a890b443f80f0968fb9eabd93fc99dbb5',1,'crypto.php']]],
+ ['pkcs1to8',['pkcs1to8',['../crypto_8php.html#a4d15d19b446dbf47804675df7c85e2a9',1,'crypto.php']]],
['pkcs5_5fpad',['pkcs5_pad',['../crypto_8php.html#ad5e51fd44cff93cfaa07a37e24a5edec',1,'crypto.php']]],
['pkcs5_5funpad',['pkcs5_unpad',['../crypto_8php.html#ac95ac3b1b23b65b04a86613d4206ae85',1,'crypto.php']]],
+ ['pkcs8_5fencode',['pkcs8_encode',['../crypto_8php.html#a0e941b6b18ff895d1a2448741abf2ef2',1,'crypto.php']]],
+ ['pkcs8to1',['pkcs8to1',['../crypto_8php.html#a7427a18417341aa35e2207bfa205e432',1,'crypto.php']]],
['plugin_2ephp',['plugin.php',['../plugin_8php.html',1,'']]],
['plugin_5fis_5finstalled',['plugin_is_installed',['../plugin_8php.html#a855c4fdb38c0fc2714d537752a4347f9',1,'plugin.php']]],
['png_5fquality',['PNG_QUALITY',['../boot_8php.html#a8df201788c9dd0ca91384e3a14c08bce',1,'boot.php']]],
@@ -108,8 +119,12 @@ var searchData=
['poke_2ephp',['poke.php',['../poke_8php.html',1,'']]],
['poke_5fcontent',['poke_content',['../poke_8php.html#ac9190563a8da9c07a16f9dcd71cf6993',1,'poke.php']]],
['poke_5finit',['poke_init',['../poke_8php.html#a9725aab97b3983e6a98bd81c4efe7d3b',1,'poke.php']]],
+ ['poll_2ephp',['poll.php',['../poll_8php.html',1,'']]],
+ ['poll_5fcontent',['poll_content',['../poll_8php.html#a3314c26bd2ac0ed831cebf3315cd3263',1,'poll.php']]],
+ ['poll_5finit',['poll_init',['../poll_8php.html#ab9ecd5b71af090a5da9c93f34f7ec930',1,'poll.php']]],
['poll_5fmultiple_5fchoice',['POLL_MULTIPLE_CHOICE',['../boot_8php.html#abbf5ac24eb8aeedb862f618ee0d21e86',1,'boot.php']]],
['poll_5foverwrite',['POLL_OVERWRITE',['../boot_8php.html#a2b525996e4426bdddbcec277778bde08',1,'boot.php']]],
+ ['poll_5fpost',['poll_post',['../poll_8php.html#a26be9d4f230cb68f5be326198cfc6c77',1,'poll.php']]],
['poll_5fsimple_5frating',['POLL_SIMPLE_RATING',['../boot_8php.html#ad88a70ec62e08d590123d3697dfe64d5',1,'boot.php']]],
['poll_5ftenscale',['POLL_TENSCALE',['../boot_8php.html#a1ba00027b718db732f30fc0e2c3e0abc',1,'boot.php']]],
['poller_2ephp',['poller.php',['../poller_8php.html',1,'']]],
@@ -120,26 +135,6 @@ var searchData=
['post_5factivity_5fitem',['post_activity_item',['../items_8php.html#a410f9c743877c125ca06312373346903',1,'items.php']]],
['post_5finit',['post_init',['../post_8php.html#af4b48181ce773ef0cdfc972441445c34',1,'post.php']]],
['post_5fpost',['post_post',['../post_8php.html#af59e6a1dc22d19d9257b01cd7ccedb75',1,'post.php']]],
- ['post_5fto_5fred_2ephp',['post_to_red.php',['../post__to__red_8php.html',1,'']]],
- ['post_5fto_5fred_5facct_5fname',['post_to_red_acct_name',['../post__to__red_8php.html#a588cea66afe0b32f27f2713d44940119',1,'post_to_red.php']]],
- ['post_5fto_5fred_5fadmin',['post_to_red_admin',['../post__to__red_8php.html#aeec4125719184e7b097b3b9fba3101b5',1,'post_to_red.php']]],
- ['post_5fto_5fred_5fdeactivate',['post_to_red_deactivate',['../post__to__red_8php.html#a49fd35f7b1cdddfe6e26ddfcf8d3c4ec',1,'post_to_red.php']]],
- ['post_5fto_5fred_5fdelete_5fcomment',['post_to_red_delete_comment',['../post__to__red_8php.html#a5cc2a89a6d33cdb8e2ca557a69bef42d',1,'post_to_red.php']]],
- ['post_5fto_5fred_5fdelete_5fpost',['post_to_red_delete_post',['../post__to__red_8php.html#a4674bb5ce2baa32c559607460c39a2c5',1,'post_to_red.php']]],
- ['post_5fto_5fred_5fdisplay_5fadmin_5fpage',['post_to_red_display_admin_page',['../post__to__red_8php.html#a8ec8f8809e3c5d1b2c9598c8185d63aa',1,'post_to_red.php']]],
- ['post_5fto_5fred_5fdisplayadmincontent',['post_to_red_displayAdminContent',['../post__to__red_8php.html#a75db5d87226a0287a0ac0fa315f2bcfd',1,'post_to_red.php']]],
- ['post_5fto_5fred_5fget_5facct_5fname',['post_to_red_get_acct_name',['../post__to__red_8php.html#ae6f3a2c0561cbeacda5be565b06de8a7',1,'post_to_red.php']]],
- ['post_5fto_5fred_5fget_5favatar',['post_to_red_get_avatar',['../post__to__red_8php.html#ae0b881461afbdba93d9329068ea52136',1,'post_to_red.php']]],
- ['post_5fto_5fred_5fget_5fchannel_5fname',['post_to_red_get_channel_name',['../post__to__red_8php.html#aacba7a0646fc00ae6ac4f5dc383fccab',1,'post_to_red.php']]],
- ['post_5fto_5fred_5fget_5fpassword',['post_to_red_get_password',['../post__to__red_8php.html#a4d90ac085c14f53ff4d8ab4c23477ea6',1,'post_to_red.php']]],
- ['post_5fto_5fred_5fget_5fseed_5flocation',['post_to_red_get_seed_location',['../post__to__red_8php.html#a96d0ccecb96600ef1bfd50ab3f77315f',1,'post_to_red.php']]],
- ['post_5fto_5fred_5fpath',['post_to_red_path',['../post__to__red_8php.html#a6210f39392a5f0fa0255cc7d3760493a',1,'post_to_red.php']]],
- ['post_5fto_5fred_5fpost',['post_to_red_post',['../post__to__red_8php.html#af5fd50e2c42ede85f8a9e8d9ee3cf540',1,'post_to_red.php']]],
- ['post_5fto_5fred_5fpost_5fcheckbox',['post_to_red_post_checkbox',['../post__to__red_8php.html#a0f139dea77a94c98f26007963eea639c',1,'post_to_red.php']]],
- ['post_5fto_5fred_5fpost_5ffield_5fdata',['post_to_red_post_field_data',['../post__to__red_8php.html#a7e68a8d9c83cb28d032aad3ea85ce0a6',1,'post_to_red.php']]],
- ['post_5fto_5fred_5fpost_5fmeta_5fcontent',['post_to_red_post_meta_content',['../post__to__red_8php.html#aa97aeda12ef080665f16311a4e1eb901',1,'post_to_red.php']]],
- ['post_5fto_5fred_5fsettings_5flink',['post_to_red_settings_link',['../post__to__red_8php.html#a906be8f72cf1aa2e199c0683ea6a4017',1,'post_to_red.php']]],
- ['post_5fto_5fred_5fversion',['post_to_red_version',['../post__to__red_8php.html#af3e7ebd361d4ed7cb6d43209970cd94a',1,'post_to_red.php']]],
['posted_5fdates',['posted_dates',['../items_8php.html#ad2abb4644ff1f20fefbc80326fe01cf0',1,'items.php']]],
['preg_5fcallback_5fhelp_5finclude',['preg_callback_help_include',['../help_8php.html#a06b2a51aaabed99e53a9b639047c4ce4',1,'help.php']]],
['preg_5fheart',['preg_heart',['../text_8php.html#ac19d2b33a58372a357a43d51eed19162',1,'text.php']]],
@@ -154,8 +149,8 @@ var searchData=
['private_5fmessages_5ffetch_5fconversation',['private_messages_fetch_conversation',['../include_2message_8php.html#a5f8de9847e203329e317ac38dc646898',1,'message.php']]],
['private_5fmessages_5ffetch_5fmessage',['private_messages_fetch_message',['../include_2message_8php.html#a254a756031e4d5e94f85e2939bdb5091',1,'message.php']]],
['private_5fmessages_5flist',['private_messages_list',['../include_2message_8php.html#a652973ce47a262f2d238c2fd6233d97e',1,'message.php']]],
- ['probe_2ephp',['probe.php',['../mod_2probe_8php.html',1,'']]],
['probe_2ephp',['probe.php',['../include_2probe_8php.html',1,'']]],
+ ['probe_2ephp',['probe.php',['../mod_2probe_8php.html',1,'']]],
['probe_5factivity_5fstream',['probe_activity_stream',['../include_2probe_8php.html#a2daa857942aceca01f956016dbbd139c',1,'probe.php']]],
['probe_5fcontent',['probe_content',['../mod_2probe_8php.html#a1f1db3fa6038e451e737964c94bf5e99',1,'probe.php']]],
['probe_5fdfrn',['probe_dfrn',['../include_2probe_8php.html#a9b5eca1e01e52b3e65d64db0c92181e0',1,'probe.php']]],
@@ -167,7 +162,8 @@ var searchData=
['probe_5fzot',['probe_zot',['../include_2probe_8php.html#a3c02c7a23e8335a79c3c0f5331d11a85',1,'probe.php']]],
['proc_5frun',['proc_run',['../boot_8php.html#ab346a2ece14993861f3e4206befa94f0',1,'boot.php']]],
['process_5fchannel_5fsync_5fdelivery',['process_channel_sync_delivery',['../zot_8php.html#ac301c67864917c35922257950ae0f95c',1,'zot.php']]],
- ['process_5fdelivery',['process_delivery',['../zot_8php.html#a4d9e6ca295e443b740d9960c304b3474',1,'zot.php']]],
+ ['process_5fdelivery',['process_delivery',['../zot_8php.html#a0e3006e7a456b2175a9badc96bc5176d',1,'zot.php']]],
+ ['process_5flocation_5fdelivery',['process_location_delivery',['../zot_8php.html#a8eeefdb0dad4c436bea9d1c06c0a7988',1,'zot.php']]],
['process_5fmail_5fdelivery',['process_mail_delivery',['../zot_8php.html#aa6ae96db8cbbdbb10e6876d206bbf7cc',1,'zot.php']]],
['process_5fprofile_5fdelivery',['process_profile_delivery',['../zot_8php.html#a9a57b40669351c9791126b925cb7ef3b',1,'zot.php']]],
['profile_2ephp',['profile.php',['../profile_8php.html',1,'']]],
@@ -197,9 +193,10 @@ var searchData=
['prune_5fhub_5freinstalls',['prune_hub_reinstalls',['../hubloc_8php.html#ad3d0dcfcfcb347744f7617fe6f5de002',1,'hubloc.php']]],
['public_5fpermissions_5fsql',['public_permissions_sql',['../security_8php.html#ab3bdd30dc60d9ee72370b866aa4a2d01',1,'security.php']]],
['public_5frecips',['public_recips',['../zot_8php.html#a083aec6c900d244e1bfc1406f9461465',1,'zot.php']]],
+ ['pubrsatome',['pubrsatome',['../crypto_8php.html#a2a3fae7caca27f86d158eeaf69b6f287',1,'crypto.php']]],
['pubsites_2ephp',['pubsites.php',['../pubsites_8php.html',1,'']]],
['pubsites_5fcontent',['pubsites_content',['../pubsites_8php.html#af614e279aab54065345bda6b03eafdf0',1,'pubsites.php']]],
['purify_5fhtml',['purify_html',['../text_8php.html#a4841df5beabdd1bdd1ed56781a915d61',1,'text.php']]],
['push_5flang',['push_lang',['../language_8php.html#ac9142ef1d01a235c760deb0f16643f5a',1,'language.php']]],
- ['put',['put',['../classRedFile.html#a41a49a583eb276b75626fcf97f4a699c',1,'RedFile']]]
+ ['put',['put',['../classRedMatrix_1_1RedDAV_1_1RedFile.html#a709ec1288d21ddf1353524435ab916f0',1,'RedMatrix::RedDAV::RedFile']]]
];
diff --git a/doc/html/search/all_71.js b/doc/html/search/all_71.js
index c1c1f6ba7..be0700f6d 100644
--- a/doc/html/search/all_71.js
+++ b/doc/html/search/all_71.js
@@ -1,9 +1,10 @@
var searchData=
[
- ['q',['q',['../classdba__driver.html#a558e738b88ae893cc5d79ffa3793d555',1,'dba_driver\q()'],['../classdba__mysql.html#ac3fd60c278f400907322dac578754a99',1,'dba_mysql\q()'],['../classdba__mysqli.html#a611c4de8d6d7512dffb83a38bb6701ec',1,'dba_mysqli\q()'],['../dba__driver_8php.html#a2c09a731d3b4fef41fed0e83db01be1f',1,'q():&#160;dba_driver.php']]],
+ ['q',['q',['../classdba__driver.html#a558e738b88ae893cc5d79ffa3793d555',1,'dba_driver\q()'],['../classdba__mysql.html#ac3fd60c278f400907322dac578754a99',1,'dba_mysql\q()'],['../classdba__mysqli.html#a611c4de8d6d7512dffb83a38bb6701ec',1,'dba_mysqli\q()'],['../classdba__postgres.html#a70352880231fba0b859f82cd5b290a9a',1,'dba_postgres\q()'],['../dba__driver_8php.html#a2c09a731d3b4fef41fed0e83db01be1f',1,'q():&#160;dba_driver.php']]],
['qp',['qp',['../text_8php.html#afc998d2796a6b2a08e96f7cc061e7221',1,'text.php']]],
['queue_2ephp',['queue.php',['../queue_8php.html',1,'']]],
['queue_5ffn_2ephp',['queue_fn.php',['../queue__fn_8php.html',1,'']]],
['queue_5frun',['queue_run',['../queue_8php.html#af8c93de86d866c3200174c8450a0f341',1,'queue.php']]],
+ ['quote_5finterval',['quote_interval',['../classdba__driver.html#ac9127e9c55fcc93bcfbb323b9b99b9d9',1,'dba_driver\quote_interval()'],['../classdba__postgres.html#a56f926f218155c88807e0e06f6817a72',1,'dba_postgres\quote_interval()']]],
['quotelevel',['quotelevel',['../html2plain_8php.html#a56d29b254333d29abb9d96a9a903a4b0',1,'html2plain.php']]]
];
diff --git a/doc/html/search/all_72.js b/doc/html/search/all_72.js
index 9ecfb9d7d..04e2802f8 100644
--- a/doc/html/search/all_72.js
+++ b/doc/html/search/all_72.js
@@ -1,6 +1,7 @@
var searchData=
[
- ['random_5fprofile',['random_profile',['../Contact_8php.html#a852fa476f0c70bde10a4f2533aec5f71',1,'Contact.php']]],
+ ['import',['Import',['../namespaceRedMatrix_1_1Import.html',1,'RedMatrix']]],
+ ['random_5fprofile',['random_profile',['../Contact_8php.html#a7e3f5bef8ea1d2bf8434c9be36a2b713',1,'Contact.php']]],
['random_5fstring',['random_string',['../text_8php.html#a9d6a5ee1290de7a8b483fe78585daade',1,'text.php']]],
['random_5fstring_5fhex',['RANDOM_STRING_HEX',['../text_8php.html#aad557c054cf2ed915633701018fc7e3f',1,'text.php']]],
['random_5fstring_5ftext',['RANDOM_STRING_TEXT',['../text_8php.html#a2ffd79c60cc87cec24ef76447b905187',1,'text.php']]],
@@ -11,30 +12,37 @@ var searchData=
['rbmark_5fpost',['rbmark_post',['../rbmark_8php.html#ac5a66aa8599fa5dc702bae396d8d1f8c',1,'rbmark.php']]],
['rconnect_5furl',['rconnect_url',['../Contact_8php.html#a2f4f495d53f2a334ab75292af79d3c91',1,'Contact.php']]],
['rdelim',['rdelim',['../namespacefriendica-to-smarty-tpl.html#a8540514fb7c4aa18ad2dffa2a975036b',1,'friendica-to-smarty-tpl']]],
- ['readme_2emd',['README.md',['../blogga_2php_2README_8md.html',1,'']]],
- ['readme_2emd',['README.md',['../apw_2README_8md.html',1,'']]],
+ ['readme_2emd',['README.md',['../README_8md.html',1,'']]],
['rebuild_5ftheme_5ftable',['rebuild_theme_table',['../admin_8php.html#ae46311a3fefc21abc838a26e91789de6',1,'admin.php']]],
- ['red_5fcomment',['red_comment',['../post__to__red_8php.html#a085c250d4ceff5e4f10052f3d2039823',1,'post_to_red.php']]],
+ ['receive_2ephp',['receive.php',['../receive_8php.html',1,'']]],
+ ['receive_5fpost',['receive_post',['../receive_8php.html#a03d8fa26e77844020ba5602deca7d494',1,'receive.php']]],
['red_5fescape_5fcodeblock',['red_escape_codeblock',['../items_8php.html#a49905ea75adfe8a2d110be344d18d6a6',1,'items.php']]],
['red_5fescape_5fzrl_5fcallback',['red_escape_zrl_callback',['../items_8php.html#a83a349062945d585edb4b3c5d763ab6e',1,'items.php']]],
['red_5fitem_5fnew',['red_item_new',['../include_2api_8php.html#aafa82b65a9f879a1a1197cfe8aaf3898',1,'api.php']]],
['red_5fplatform',['RED_PLATFORM',['../boot_8php.html#a96ad56755a21e1361dbd7bf93c9e7ff4',1,'boot.php']]],
['red_5funescape_5fcodeblock',['red_unescape_codeblock',['../items_8php.html#ad4ee16e3ff1eaf60428c61f82ba25e6a',1,'items.php']]],
['red_5fversion',['RED_VERSION',['../boot_8php.html#a21cc29e0025943e7c28ff58cb4856ac3',1,'boot.php']]],
- ['red_5fxmlrpc_5fmethods',['red_xmlrpc_methods',['../post__to__red_8php.html#a3a2af6ad845239f26e86fccabf8639e1',1,'post_to_red.php']]],
['red_5fzrl_5fcallback',['red_zrl_callback',['../items_8php.html#a4e6d7639431e0dd8e9f4dba8e1ac408b',1,'items.php']]],
['red_5fzrlify_5fimg_5fcallback',['red_zrlify_img_callback',['../items_8php.html#a78a60e39f6991bd3324a24dcbf9dac5a',1,'items.php']]],
+ ['redable_2ephp',['redable.php',['../redable_8php.html',1,'']]],
['redbasic_2ephp',['redbasic.php',['../redbasic_8php.html',1,'']]],
['redbasic_5fform',['redbasic_form',['../view_2theme_2redbasic_2php_2config_8php.html#a8574a41fa9735ee391ba57ab24b93793',1,'config.php']]],
['redbasic_5finit',['redbasic_init',['../redbasic_2php_2theme_8php.html#af6eb813e9fc7e2d76ac1b82bc5c0ed9b',1,'theme.php']]],
- ['redbasicauth',['RedBasicAuth',['../classRedBasicAuth.html',1,'']]],
- ['redbrowser',['RedBrowser',['../classRedBrowser.html',1,'']]],
+ ['redbasicauth',['RedBasicAuth',['../classRedMatrix_1_1RedDAV_1_1RedBasicAuth.html',1,'RedMatrix::RedDAV']]],
+ ['redbasicauth_2ephp',['RedBasicAuth.php',['../RedBasicAuth_8php.html',1,'']]],
+ ['redbrowser',['RedBrowser',['../classRedMatrix_1_1RedDAV_1_1RedBrowser.html',1,'RedMatrix::RedDAV']]],
+ ['redbrowser_2ephp',['RedBrowser.php',['../RedBrowser_8php.html',1,'']]],
['redchannellist',['RedChannelList',['../reddav_8php.html#ae92ea0df1993f6a7bcd1b6efa6c1fb66',1,'reddav.php']]],
['redcollectiondata',['RedCollectionData',['../reddav_8php.html#a5df0d09893f2e65dc5cf6bbab6cfb266',1,'reddav.php']]],
+ ['reddav',['RedDAV',['../namespaceRedMatrix_1_1RedDAV.html',1,'RedMatrix']]],
['reddav_2ephp',['reddav.php',['../reddav_8php.html',1,'']]],
- ['reddirectory',['RedDirectory',['../classRedDirectory.html',1,'']]],
- ['redfile',['RedFile',['../classRedFile.html',1,'']]],
+ ['reddirectory',['RedDirectory',['../classRedMatrix_1_1RedDAV_1_1RedDirectory.html',1,'RedMatrix::RedDAV']]],
+ ['reddirectory_2ephp',['RedDirectory.php',['../RedDirectory_8php.html',1,'']]],
+ ['redfile',['RedFile',['../classRedMatrix_1_1RedDAV_1_1RedFile.html',1,'RedMatrix::RedDAV']]],
+ ['redfile_2ephp',['RedFile.php',['../RedFile_8php.html',1,'']]],
['redfiledata',['RedFileData',['../reddav_8php.html#a9f531641dfb4e43cd88ac1a9ae7e2088',1,'reddav.php']]],
+ ['redmatrix',['RedMatrix',['../namespaceRedMatrix.html',1,'']]],
+ ['redmatrix_5fimportchannel',['REDMATRIX_IMPORTCHANNEL',['../refimport_8php.html#a54003135d7c8994a76e831fb6faa2fe6',1,'refimport.php']]],
['reduce',['reduce',['../docblox__errorchecker_8php.html#ae9562cf60aa693114603d27b55d2185f',1,'docblox_errorchecker.php']]],
['ref_5fsession_5fclose',['ref_session_close',['../session_8php.html#a5e1c616e02b863d5450317d101366bb7',1,'session.php']]],
['ref_5fsession_5fdestroy',['ref_session_destroy',['../session_8php.html#af230b86bfff7db66c3bdd7e0bbc24052',1,'session.php']]],
@@ -42,6 +50,19 @@ var searchData=
['ref_5fsession_5fopen',['ref_session_open',['../session_8php.html#a26fa1042356d555023cbf15ddd4f8507',1,'session.php']]],
['ref_5fsession_5fread',['ref_session_read',['../session_8php.html#a7f0f50576360d9ba52d29364e0b83a8e',1,'session.php']]],
['ref_5fsession_5fwrite',['ref_session_write',['../session_8php.html#ac4461c1984543d3553e73dba2771568f',1,'session.php']]],
+ ['refimport_2ephp',['refimport.php',['../refimport_8php.html',1,'']]],
+ ['refimport_5fcontent',['refimport_content',['../refimport_8php.html#ad97ebb5feda0230a4834e0b3637a0d29',1,'refimport.php']]],
+ ['reflect_5farticle_5fcallback',['reflect_article_callback',['../refimport_8php.html#a53434bc19e6264db89e18d92ddc09860',1,'refimport.php']]],
+ ['reflect_5fbaseurl',['REFLECT_BASEURL',['../refimport_8php.html#ac43699d8ae86175e049aa4e87853caac',1,'refimport.php']]],
+ ['reflect_5fblogname',['REFLECT_BLOGNAME',['../refimport_8php.html#a8459983ebf013ed5737f7ed317bfae1f',1,'refimport.php']]],
+ ['reflect_5fcomment_5fstore',['reflect_comment_store',['../refimport_8php.html#a01a29630fa5e1ce6cd5e1fd75280747c',1,'refimport.php']]],
+ ['reflect_5fexportusername',['REFLECT_EXPORTUSERNAME',['../refimport_8php.html#ad297afe0730c9119dd94d3cf0521b025',1,'refimport.php']]],
+ ['reflect_5ffind_5fuser',['reflect_find_user',['../refimport_8php.html#aa98de7d112e3a5b4b6956f108d04a41d',1,'refimport.php']]],
+ ['reflect_5fget_5fchannel',['reflect_get_channel',['../refimport_8php.html#a6c3e0475fde9fe72ff2492a5e3e5259c',1,'refimport.php']]],
+ ['reflect_5fmaxperrun',['REFLECT_MAXPERRUN',['../refimport_8php.html#a9c1f681f1f303400a9818696a9f96d6f',1,'refimport.php']]],
+ ['reflect_5foverwrite',['REFLECT_OVERWRITE',['../refimport_8php.html#aeec793cefa260f788b7d005adcb35796',1,'refimport.php']]],
+ ['reflect_5fphoto_5fcallback',['reflect_photo_callback',['../refimport_8php.html#ae9c56f779d1e0ac7bcb2a460129e7ae5',1,'refimport.php']]],
+ ['reflect_5fuserfile',['REFLECT_USERFILE',['../refimport_8php.html#a684a44d2401abf75f441591bcb41d10d',1,'refimport.php']]],
['register_2ephp',['register.php',['../register_8php.html',1,'']]],
['register_5fapprove',['REGISTER_APPROVE',['../boot_8php.html#a7176c0f9f1c98421b97735d892cf6252',1,'boot.php']]],
['register_5fclosed',['REGISTER_CLOSED',['../boot_8php.html#a69aac276ed82e010dc382b16ab4d59e1',1,'boot.php']]],
@@ -64,14 +85,18 @@ var searchData=
['remove_5fall_5fxchan_5fresources',['remove_all_xchan_resources',['../Contact_8php.html#acc12cda999c88c4d6185cca967c15125',1,'Contact.php']]],
['remove_5fchild',['remove_child',['../classItem.html#a2ce70ef63f9f4d86a09c351678806925',1,'Item']]],
['remove_5fcommunity_5ftag',['remove_community_tag',['../zot_8php.html#aad25a3fe0e1566121d6fb8222979bc10',1,'zot.php']]],
+ ['remove_5fobsolete_5fhublocs',['remove_obsolete_hublocs',['../hubloc_8php.html#a84c79b7be352f62d12fe4fa2c80fc6ea',1,'hubloc.php']]],
['remove_5fparent',['remove_parent',['../classItem.html#aa452b5bcd8dea12119b09212c615cb41',1,'Item']]],
['remove_5fqueue_5fitem',['remove_queue_item',['../queue__fn_8php.html#a8fe71e981399bbf5d000a6ca42f57b24',1,'queue_fn.php']]],
+ ['removeaccount_2ephp',['removeaccount.php',['../removeaccount_8php.html',1,'']]],
+ ['removeaccount_5fcontent',['removeaccount_content',['../removeaccount_8php.html#a516e7380b9e5796054aa8245f3509695',1,'removeaccount.php']]],
+ ['removeaccount_5fpost',['removeaccount_post',['../removeaccount_8php.html#a26a3325292e932c59793430ab737126a',1,'removeaccount.php']]],
['removeme_2ephp',['removeme.php',['../removeme_8php.html',1,'']]],
['removeme_5fcontent',['removeme_content',['../removeme_8php.html#a065a589caa2aa84c60f7073a28f0ad9c',1,'removeme.php']]],
['removeme_5fpost',['removeme_post',['../removeme_8php.html#a7be08738beca44bb98a79e01cdb2ee88',1,'removeme.php']]],
['render_5flocation_5fdefault',['render_location_default',['../conversation_8php.html#a40b9b5e7825bc73932a32e667f05e6f2',1,'conversation.php']]],
['replace',['replace',['../classTemplate.html#a285b5b2007dbbf733476273df3fed4ef',1,'Template']]],
- ['replace_5fmacros',['replace_macros',['../classFriendicaSmartyEngine.html#ad62f1181d2f02b54b46731ad2bd46db2',1,'FriendicaSmartyEngine\replace_macros()'],['../interfaceITemplateEngine.html#aaa7381c8becc3d1c1790b53988a0f243',1,'ITemplateEngine\replace_macros()'],['../classTemplate.html#a07737733f6949bdedea1e3d301b2ab7b',1,'Template\replace_macros()'],['../text_8php.html#a9c6ce4e12a4ac883c5e3f36fed6e1e09',1,'replace_macros():&#160;text.php']]],
+ ['replace_5fmacros',['replace_macros',['../interfaceITemplateEngine.html#aaa7381c8becc3d1c1790b53988a0f243',1,'ITemplateEngine\replace_macros()'],['../classFriendicaSmartyEngine.html#ad62f1181d2f02b54b46731ad2bd46db2',1,'FriendicaSmartyEngine\replace_macros()'],['../classTemplate.html#a07737733f6949bdedea1e3d301b2ab7b',1,'Template\replace_macros()'],['../text_8php.html#a9c6ce4e12a4ac883c5e3f36fed6e1e09',1,'replace_macros():&#160;text.php']]],
['request_5ftoken_5fduration',['REQUEST_TOKEN_DURATION',['../oauth_8php.html#a7a32a5990f113ac9465b03b29175cf16',1,'oauth.php']]],
['requestdata',['requestdata',['../include_2api_8php.html#a43c47de8565cc00c3369cb35c19cc75e',1,'api.php']]],
['retain_5fitem',['retain_item',['../items_8php.html#af6237605c60d69abdd959ddbbee3420c',1,'items.php']]],
@@ -84,9 +109,12 @@ var searchData=
['rpost_2ephp',['rpost.php',['../rpost_8php.html',1,'']]],
['rpost_5fcallback',['rpost_callback',['../bbcode_8php.html#a5165a5221a52cf1bc1d7812ebd2069c7',1,'bbcode.php']]],
['rpost_5fcontent',['rpost_content',['../rpost_8php.html#a8190354d789000806d9879aea276728f',1,'rpost.php']]],
+ ['rrmdir',['rrmdir',['../Contact_8php.html#ab5895b75a3b2abdddf1cb351a8c6b58b',1,'Contact.php']]],
['rsa_5fsign',['rsa_sign',['../crypto_8php.html#a920e5f222d0020f47556033d8b2b6552',1,'crypto.php']]],
['rsa_5fverify',['rsa_verify',['../crypto_8php.html#ab4f21d8f6b8ece0915e7c8bb73379f96',1,'crypto.php']]],
+ ['rsatopem',['rsatopem',['../crypto_8php.html#a7f7e650aaeaa3832580a73eb00966b26',1,'crypto.php']]],
['rsd_5fxml_2ephp',['rsd_xml.php',['../rsd__xml_8php.html',1,'']]],
['rsd_5fxml_5fcontent',['rsd_xml_content',['../rsd__xml_8php.html#a740cd02fa15e5a53f8547fac73f0ab82',1,'rsd_xml.php']]],
+ ['run',['run',['../classRedMatrix_1_1Import_1_1Import.html#a8d138a9a7d4f79b81d3446ca216a602c',1,'RedMatrix::Import::Import']]],
['runs',['runs',['../docblox__errorchecker_8php.html#a21b4bbe5aae2d85db33affc7126a67ec',1,'docblox_errorchecker.php']]]
];
diff --git a/doc/html/search/all_73.js b/doc/html/search/all_73.js
index 1e5b421eb..1cfc3bc23 100644
--- a/doc/html/search/all_73.js
+++ b/doc/html/search/all_73.js
@@ -1,5 +1,6 @@
var searchData=
[
+ ['salmon_5fkey',['salmon_key',['../crypto_8php.html#a9191447cc46f0b4eaba3273e313994d5',1,'crypto.php']]],
['sanitise_5facl',['sanitise_acl',['../text_8php.html#a9fbeae13c9abd6e27cb4d8d1817f969c',1,'text.php']]],
['save',['save',['../classphoto__driver.html#a5864fae7d8389372955a8e78cec527ac',1,'photo_driver']]],
['saveimage',['saveImage',['../classphoto__driver.html#a22ecb8c696de65a5a10bd185be9d90c3',1,'photo_driver']]],
@@ -7,6 +8,8 @@ var searchData=
['scaleimage',['scaleImage',['../classphoto__driver.html#af0f7ec48a31ae9b557b6e3f8bd5b4af0',1,'photo_driver']]],
['scaleimagesquare',['scaleImageSquare',['../classphoto__driver.html#a56634842b071b96502716e9843ea5361',1,'photo_driver']]],
['scaleimageup',['scaleImageUp',['../classphoto__driver.html#a1a63c4ae17e892a115ab9cf6efb960ce',1,'photo_driver']]],
+ ['scrape_5ffeed',['scrape_feed',['../include_2network_8php.html#a316f318167a039c89719afbd129a8f3c',1,'network.php']]],
+ ['scrape_5fvcard',['scrape_vcard',['../include_2network_8php.html#acb0bd7f5fe38ff1eaebeae3284525070',1,'network.php']]],
['script_5fpath',['script_path',['../plugin_8php.html#a0e8c2ea50bfdbc39e17ccccaea21ddc3',1,'plugin.php']]],
['search',['search',['../text_8php.html#a876e94892867019935b348b573299352',1,'text.php']]],
['search_2ephp',['search.php',['../search_8php.html',1,'']]],
@@ -16,14 +19,15 @@ var searchData=
['search_5finit',['search_init',['../search_8php.html#acf19fd30f07f495781ca0d7a0a08b435',1,'search.php']]],
['searchbox',['searchbox',['../text_8php.html#aae91e4d2a2c6f7a9daccd2c186ae3447',1,'text.php']]],
['security_2ephp',['security.php',['../security_8php.html',1,'']]],
- ['select_5ftimezone',['select_timezone',['../datetime_8php.html#a633dadba426fa2f60b25fabdb19ebc1f',1,'datetime.php']]],
['send',['send',['../classenotify.html#afbc088860f534c6c05788b48cfc262c6',1,'enotify']]],
['send_5fmessage',['send_message',['../include_2message_8php.html#a751ffd6635022b2190f56154ee745752',1,'message.php']]],
['send_5freg_5fapproval_5femail',['send_reg_approval_email',['../account_8php.html#a014de2d5d5c9785de5bf547a485822fa',1,'account.php']]],
['send_5fstatus_5fnotifications',['send_status_notifications',['../items_8php.html#aab9e0c58247427126de0699c729c3b6c',1,'items.php']]],
['send_5fverification_5femail',['send_verification_email',['../account_8php.html#aa9c29c497c17d8f9344dce8631ad8761',1,'account.php']]],
- ['service_5fclass_5fallows',['service_class_allows',['../plugin_8php.html#a030cec6793b909c439c0336ba39b1571',1,'plugin.php']]],
- ['service_5fclass_5ffetch',['service_class_fetch',['../plugin_8php.html#a905b54e10704b283ac64680a8abc0971',1,'plugin.php']]],
+ ['service_5fclass_5fallows',['service_class_allows',['../account_8php.html#a030cec6793b909c439c0336ba39b1571',1,'account.php']]],
+ ['service_5fclass_5ffetch',['service_class_fetch',['../account_8php.html#a905b54e10704b283ac64680a8abc0971',1,'account.php']]],
+ ['service_5flimits_2ephp',['service_limits.php',['../service__limits_8php.html',1,'']]],
+ ['service_5flimits_5fcontent',['service_limits_content',['../service__limits_8php.html#a653424aac63c5cd05ba70c3c77bf7f8a',1,'service_limits.php']]],
['session_2ephp',['session.php',['../session_8php.html',1,'']]],
['set',['set',['../classCache.html#ae622b82adc1c2fb1f3e2cc4fd9688fce',1,'Cache']]],
['set_5faccount',['set_account',['../classApp.html#aeb1fe1c8ad9aa639909bd183ce578536',1,'App']]],
@@ -35,6 +39,7 @@ var searchData=
['set_5fconfig',['set_config',['../include_2config_8php.html#ad6da879e4fb5b37d1e161d4e9be5c32a',1,'config.php']]],
['set_5fconversation',['set_conversation',['../classItem.html#aa8b1bbc4236890694635295e46d7fd72',1,'Item']]],
['set_5fdefault_5flogin_5fidentity',['set_default_login_identity',['../identity_8php.html#a78151baf4407a8482d2681a91a9c486b',1,'identity.php']]],
+ ['set_5fdisplay_5fmode',['set_display_mode',['../classItem.html#ac09a4728d37b7783714243f7f8167214',1,'Item']]],
['set_5fgroups',['set_groups',['../classApp.html#a3d84af5e42082098672531cd1a618853',1,'App']]],
['set_5fhostname',['set_hostname',['../classApp.html#a344d2b7dc2f276648d521aee4da1731c',1,'App']]],
['set_5fmode',['set_mode',['../classConversation.html#a66f121ca4026246f86a732e5faa0682c',1,'Conversation']]],
@@ -49,12 +54,14 @@ var searchData=
['set_5ftemplate',['set_template',['../classItem.html#af1b73df9b7c4b927e26b7e243b491f42',1,'Item']]],
['set_5ftemplate_5fengine',['set_template_engine',['../classApp.html#a20d1890cc16b22ba79eeb0cbf2f719f7',1,'App']]],
['set_5fwidget',['set_widget',['../classApp.html#a123b903dfe5d3488cc68db3471d36fd2',1,'App']]],
- ['set_5fwriteable',['set_writeable',['../classRedBrowser.html#a40fdbb9d9fe6c1243bbf135dd5b0a06f',1,'RedBrowser']]],
+ ['set_5fwriteable',['set_writeable',['../classRedMatrix_1_1RedDAV_1_1RedBrowser.html#aa1607857cb59738c4dce2fe8e73d8f19',1,'RedMatrix::RedDAV::RedBrowser']]],
['set_5fxconfig',['set_xconfig',['../include_2config_8php.html#afe117b70f1bba2f6348d9300b601f86e',1,'config.php']]],
- ['setbrowserplugin',['setBrowserPlugin',['../classRedBasicAuth.html#a358ddad4abb5aa8c1382cf49a907adbc',1,'RedBasicAuth']]],
- ['setcurrentuser',['setCurrentUser',['../classRedBasicAuth.html#a072e8244a9a7f191b32d3db5ac94f857',1,'RedBasicAuth']]],
+ ['setauthenticated',['setAuthenticated',['../classRedMatrix_1_1RedDAV_1_1RedBasicAuth.html#a2926fe923baade564f2663632fa8c633',1,'RedMatrix::RedDAV::RedBasicAuth']]],
+ ['setbrowserplugin',['setBrowserPlugin',['../classRedMatrix_1_1RedDAV_1_1RedBasicAuth.html#adc72f36f0b2b17b20ea4df900afcd697',1,'RedMatrix::RedDAV::RedBasicAuth']]],
+ ['setcurrentuser',['setCurrentUser',['../classRedMatrix_1_1RedDAV_1_1RedBasicAuth.html#aadce020fb595c7943829d7f995d3f998',1,'RedMatrix::RedDAV::RedBasicAuth']]],
['setdimensions',['setDimensions',['../classphoto__driver.html#ae663867d2c4eaa2fae50d60670920143',1,'photo_driver\setDimensions()'],['../classphoto__gd.html#a1c75304bd15f3b9986f0b315fb59271e',1,'photo_gd\setDimensions()'],['../classphoto__imagick.html#af92901d252c1e6ab5b54eebedbed23bb',1,'photo_imagick\setDimensions()']]],
- ['setname',['setName',['../classRedDirectory.html#adc48035679e52c55d9881f83de535553',1,'RedDirectory\setName()'],['../classRedFile.html#a38a82bfc1b30028ea6ac75923e90fa25',1,'RedFile\setName()']]],
+ ['setname',['setName',['../classRedMatrix_1_1RedDAV_1_1RedDirectory.html#a14ac61d31a031d139956763db4e03956',1,'RedMatrix\RedDAV\RedDirectory\setName()'],['../classRedMatrix_1_1RedDAV_1_1RedFile.html#a0350cb4e0327e1f9922869a48ee04f1d',1,'RedMatrix\RedDAV\RedFile\setName()']]],
+ ['settimezone',['setTimezone',['../classRedMatrix_1_1RedDAV_1_1RedBasicAuth.html#af6d239fefed05859327ee8db626703f9',1,'RedMatrix::RedDAV::RedBasicAuth']]],
['settings_2ephp',['settings.php',['../settings_8php.html',1,'']]],
['settings_5finit',['settings_init',['../settings_8php.html#a3a4cde287482fced008583f54ba2a722',1,'settings.php']]],
['settings_5fpost',['settings_post',['../settings_8php.html#aa7ee94d88ac088edb04ccf3a26de3586',1,'settings.php']]],
@@ -63,15 +70,22 @@ var searchData=
['setup_5finit',['setup_init',['../setup_8php.html#a267555abd17290e659b4bf44b885e4e0',1,'setup.php']]],
['setup_5fpost',['setup_post',['../setup_8php.html#a13cf286774149a0a7bd8adb8179cec75',1,'setup.php']]],
['sexpref_5fselector',['sexpref_selector',['../profile__selectors_8php.html#a3b50b3ea4ea4bdbebebfffc5d1b157c7',1,'profile_selectors.php']]],
+ ['sexpref_5fselector_5fmin',['sexpref_selector_min',['../profile__selectors_8php.html#ab0eae5c0ceba77364469f0f580f0d074',1,'profile_selectors.php']]],
['share_2ephp',['share.php',['../share_8php.html',1,'']]],
['share_5finit',['share_init',['../share_8php.html#afeb26046bdd02567ecd29ab5f188b249',1,'share.php']]],
+ ['share_5fshield',['share_shield',['../bb2diaspora_8php.html#ad033be99e87a2aaa05e569c68f30792d',1,'bb2diaspora.php']]],
+ ['share_5funshield',['share_unshield',['../bb2diaspora_8php.html#ab61b4f8c065e97b151411858bb2f209a',1,'bb2diaspora.php']]],
['showform',['showForm',['../fpostit_8php.html#a3f3ae3ae61578b5671673914fd894443',1,'fpostit.php']]],
+ ['simple_5fblack_5fon_5fwhite_2ephp',['simple_black_on_white.php',['../simple__black__on__white_8php.html',1,'']]],
+ ['simple_5fgreen_5fon_5fblack_2ephp',['simple_green_on_black.php',['../simple__green__on__black_8php.html',1,'']]],
+ ['simple_5fwhite_5fon_5fblack_2ephp',['simple_white_on_black.php',['../simple__white__on__black_8php.html',1,'']]],
['site_5fdefault_5fperms',['site_default_perms',['../permissions_8php.html#aa8b7b102c653649d7a71b5a1c044d90d',1,'permissions.php']]],
['siteinfo_2ephp',['siteinfo.php',['../siteinfo_8php.html',1,'']]],
['siteinfo_5fcontent',['siteinfo_content',['../siteinfo_8php.html#a70c09bfb6dd1c86a125a35f62ed53656',1,'siteinfo.php']]],
['siteinfo_5finit',['siteinfo_init',['../siteinfo_8php.html#a3efbd0bd6564af19ec0a9ce0294e59d0',1,'siteinfo.php']]],
['sitelist_2ephp',['sitelist.php',['../sitelist_8php.html',1,'']]],
['sitelist_5finit',['sitelist_init',['../sitelist_8php.html#a665a59bf60f780b40f32c909f4a473b1',1,'sitelist.php']]],
+ ['smarty_2ephp',['smarty.php',['../smarty_8php.html',1,'']]],
['smile_5fshield',['smile_shield',['../text_8php.html#a10dde167249ed5abf190a7a0986878ea',1,'text.php']]],
['smile_5funshield',['smile_unshield',['../text_8php.html#a273156a6f5cddc6652ad656821cd5805',1,'text.php']]],
['smilies',['smilies',['../text_8php.html#a3d225b253bb9e0f2498c11647d927b0b',1,'text.php']]],
@@ -96,10 +110,13 @@ var searchData=
['sslify_5finit',['sslify_init',['../sslify_8php.html#a75b11e54a3d1fc83e7d4c0e8b4dab316',1,'sslify.php']]],
['starred_2ephp',['starred.php',['../starred_8php.html',1,'']]],
['starred_5finit',['starred_init',['../starred_8php.html#a63024fb418c678e49fd535e3752d349a',1,'starred.php']]],
+ ['start_5fdelivery_5fchain',['start_delivery_chain',['../items_8php.html#adf2b8137dc4ad9ec958de2842f16f3c2',1,'items.php']]],
['startup',['startup',['../boot_8php.html#aca47505b8732177f52bb2d647eb2741c',1,'boot.php']]],
+ ['statistics_5ffns_2ephp',['statistics_fns.php',['../statistics__fns_8php.html',1,'']]],
['status_5feditor',['status_editor',['../conversation_8php.html#a2a7d541854bba755eb8ada59af7dcb1a',1,'conversation.php']]],
['storage_5fdefault_5fpermissions',['STORAGE_DEFAULT_PERMISSIONS',['../boot_8php.html#aecaa1b6945b317ba8f1daf4af2aed8e6',1,'boot.php']]],
- ['store',['store',['../classphoto__driver.html#a642a8d0c4ad5f887c99c6af77cee287b',1,'photo_driver']]],
+ ['store',['store',['../classRedMatrix_1_1Import_1_1Import.html#a33ed595de044c0ec1cd84cca719e31dc',1,'RedMatrix\Import\Import\store()'],['../classphoto__driver.html#a642a8d0c4ad5f887c99c6af77cee287b',1,'photo_driver\store()']]],
+ ['store_5fdiaspora_5fcomment_5fsig',['store_diaspora_comment_sig',['../items_8php.html#a25221826fa4621f523c68483e3b6af26',1,'items.php']]],
['store_5fitem_5ftag',['store_item_tag',['../taxonomy_8php.html#a4ba1339b2a7054971178ce194e4440fd',1,'taxonomy.php']]],
['stream_5fperms_5fapi_5fuids',['stream_perms_api_uids',['../security_8php.html#a6126c77a1267e046ac59cf864613f011',1,'security.php']]],
['stream_5fperms_5fxchans',['stream_perms_xchans',['../security_8php.html#a3ef2be6a7e4928e39d50059d6feb457c',1,'security.php']]],
@@ -108,17 +125,23 @@ var searchData=
['stringify_5farray_5felms',['stringify_array_elms',['../text_8php.html#a8796f6a9ca592ecdce7b3afc3462aa13',1,'text.php']]],
['strip_5fzids',['strip_zids',['../text_8php.html#a2f2585385530cb935a6325c809d84a4d',1,'text.php']]],
['stripdcode_5fbr_5fcb',['stripdcode_br_cb',['../bb2diaspora_8php.html#a180b0e3a7d702998be19e3c3b44b0e93',1,'bb2diaspora.php']]],
- ['style_2ephp',['style.php',['../redbasic_2php_2style_8php.html',1,'']]],
- ['style_2ephp',['style.php',['../apw_2php_2style_8php.html',1,'']]],
+ ['stumble_5finit',['stumble_init',['../stumble_2php_2theme_8php.html#a71db9eff6289e0ee47771c37c01d6753',1,'theme.php']]],
['style_2ephp',['style.php',['../mytheme_2php_2style_8php.html',1,'']]],
+ ['style_2ephp',['style.php',['../stumble_2php_2style_8php.html',1,'']]],
+ ['style_2ephp',['style.php',['../apw_2php_2style_8php.html',1,'']]],
+ ['style_2ephp',['style.php',['../hivenet_2php_2style_8php.html',1,'']]],
+ ['style_2ephp',['style.php',['../redbasic_2php_2style_8php.html',1,'']]],
+ ['style_2ephp',['style.php',['../suckerberg_2php_2style_8php.html',1,'']]],
['subthread_2ephp',['subthread.php',['../subthread_8php.html',1,'']]],
['subthread_5fcontent',['subthread_content',['../subthread_8php.html#a50368f3d825b77996030528e7fbfa3d3',1,'subthread.php']]],
+ ['suckerberg_5finit',['suckerberg_init',['../suckerberg_2php_2theme_8php.html#a4104fce7d5fb71d15ed811978b628fc8',1,'theme.php']]],
['suggest_2ephp',['suggest.php',['../suggest_8php.html',1,'']]],
['suggest_5fcontent',['suggest_content',['../suggest_8php.html#a58748a8235d4523f8333847f3e42dd91',1,'suggest.php']]],
['suggest_5finit',['suggest_init',['../suggest_8php.html#a696acf1dd8070e479adcc80c63c6718c',1,'suggest.php']]],
['suggestion_5fquery',['suggestion_query',['../socgraph_8php.html#a76e6fca3d2bc842dcd9e710bb87c8329',1,'socgraph.php']]],
['supportedtypes',['supportedTypes',['../classphoto__driver.html#a6eee8e36eaf9339f4faf80ddd43162da',1,'photo_driver\supportedTypes()'],['../classphoto__gd.html#a16f3dd7d3559f715aa2fe3f7880836dd',1,'photo_gd\supportedTypes()'],['../classphoto__imagick.html#a27596faca6108d9d563674d1b654a0b7',1,'photo_imagick\supportedTypes()']]],
['sync_5fdirectories',['sync_directories',['../dir__fns_8php.html#aa666e7df6ca8c332f4081c9b66b4bdf6',1,'dir_fns.php']]],
+ ['sync_5flocations',['sync_locations',['../zot_8php.html#ab15c04e7e5f44edf45ec50dd7d183254',1,'zot.php']]],
['system_5fdown',['system_down',['../system__unavailable_8php.html#a73751a6bcc17ad3ca503496e2fb020fa',1,'system_unavailable.php']]],
['system_5funavailable',['system_unavailable',['../boot_8php.html#ac608a34f3bc180e7724192e0fd31f9b0',1,'boot.php']]],
['system_5funavailable_2ephp',['system_unavailable.php',['../system__unavailable_8php.html',1,'']]]
diff --git a/doc/html/search/all_74.js b/doc/html/search/all_74.js
index 76a2b5e1a..fb3605bce 100644
--- a/doc/html/search/all_74.js
+++ b/doc/html/search/all_74.js
@@ -35,30 +35,27 @@ var searchData=
['term_5fsavedsearch',['TERM_SAVEDSEARCH',['../boot_8php.html#abd7bb40da9cc073297e49736b338ca07',1,'boot.php']]],
['term_5fthing',['TERM_THING',['../boot_8php.html#a0d877df1e20bae765e1708be50f6b503',1,'boot.php']]],
['term_5funknown',['TERM_UNKNOWN',['../boot_8php.html#a0c59dde058efebbc66520d136cbd1631',1,'boot.php']]],
- ['terminate_5ffriendship',['terminate_friendship',['../Contact_8php.html#a38daa1c210b78385307123450ca9a1fc',1,'Contact.php']]],
['termtype',['termtype',['../items_8php.html#ad34827ed330898456783fb14c7b46154',1,'items.php']]],
['text_2ephp',['text.php',['../text_8php.html',1,'']]],
['tgroup_5fcheck',['tgroup_check',['../items_8php.html#a88c6cf7649ac836fbbed82a7a0315110',1,'items.php']]],
['theme_2ephp',['theme.php',['../apw_2php_2theme_8php.html',1,'']]],
- ['theme_2ephp',['theme.php',['../blogga_2php_2theme_8php.html',1,'']]],
- ['theme_2ephp',['theme.php',['../blogga_2view_2theme_2blog_2theme_8php.html',1,'']]],
+ ['theme_2ephp',['theme.php',['../hivenet_2php_2theme_8php.html',1,'']]],
['theme_2ephp',['theme.php',['../mytheme_2php_2theme_8php.html',1,'']]],
['theme_2ephp',['theme.php',['../redbasic_2php_2theme_8php.html',1,'']]],
- ['theme_5fadmin',['theme_admin',['../view_2theme_2blogga_2php_2config_8php.html#a09cd81013505f83aea0771243a1e4e53',1,'theme_admin(&amp;$a):&#160;config.php'],['../view_2theme_2blogga_2view_2theme_2blog_2config_8php.html#a09cd81013505f83aea0771243a1e4e53',1,'theme_admin(&amp;$a):&#160;config.php']]],
- ['theme_5fadmin_5fpost',['theme_admin_post',['../view_2theme_2blogga_2php_2config_8php.html#aef2da5582b7cb6b5f63e5ca5d69fd30b',1,'theme_admin_post(&amp;$a):&#160;config.php'],['../view_2theme_2blogga_2view_2theme_2blog_2config_8php.html#aef2da5582b7cb6b5f63e5ca5d69fd30b',1,'theme_admin_post(&amp;$a):&#160;config.php']]],
+ ['theme_2ephp',['theme.php',['../stumble_2php_2theme_8php.html',1,'']]],
+ ['theme_2ephp',['theme.php',['../suckerberg_2php_2theme_8php.html',1,'']]],
['theme_5fattachments',['theme_attachments',['../text_8php.html#af9c9ac3f74c82dc60acfa404d0e9dc53',1,'text.php']]],
- ['theme_5fcontent',['theme_content',['../view_2theme_2apw_2php_2config_8php.html#aa7d5739b72efef9822535b2b32d5364d',1,'theme_content(&amp;$a):&#160;config.php'],['../view_2theme_2blogga_2php_2config_8php.html#aa7d5739b72efef9822535b2b32d5364d',1,'theme_content(&amp;$a):&#160;config.php'],['../view_2theme_2blogga_2view_2theme_2blog_2config_8php.html#aa7d5739b72efef9822535b2b32d5364d',1,'theme_content(&amp;$a):&#160;config.php'],['../view_2theme_2redbasic_2php_2config_8php.html#aa7d5739b72efef9822535b2b32d5364d',1,'theme_content(&amp;$a):&#160;config.php']]],
+ ['theme_5fcontent',['theme_content',['../view_2theme_2apw_2php_2config_8php.html#aa7d5739b72efef9822535b2b32d5364d',1,'theme_content(&amp;$a):&#160;config.php'],['../view_2theme_2redbasic_2php_2config_8php.html#aa7d5739b72efef9822535b2b32d5364d',1,'theme_content(&amp;$a):&#160;config.php']]],
['theme_5finclude',['theme_include',['../plugin_8php.html#a65fedcffbe03562ef844cabee37d34e2',1,'plugin.php']]],
- ['theme_5finit_2ephp',['theme_init.php',['../theme_2redbasic_2php_2theme__init_8php.html',1,'']]],
- ['theme_5finit_2ephp',['theme_init.php',['../theme_2apw_2php_2theme__init_8php.html',1,'']]],
['theme_5finit_2ephp',['theme_init.php',['../php_2theme__init_8php.html',1,'']]],
- ['theme_5finit_2ephp',['theme_init.php',['../theme_2blogga_2php_2theme__init_8php.html',1,'']]],
- ['theme_5fpost',['theme_post',['../view_2theme_2apw_2php_2config_8php.html#ad29461920cf03b9ce1428e21eb1f4ba6',1,'theme_post(&amp;$a):&#160;config.php'],['../view_2theme_2blogga_2php_2config_8php.html#ad29461920cf03b9ce1428e21eb1f4ba6',1,'theme_post(&amp;$a):&#160;config.php'],['../view_2theme_2blogga_2view_2theme_2blog_2config_8php.html#ad29461920cf03b9ce1428e21eb1f4ba6',1,'theme_post(&amp;$a):&#160;config.php'],['../view_2theme_2redbasic_2php_2config_8php.html#ad29461920cf03b9ce1428e21eb1f4ba6',1,'theme_post(&amp;$a):&#160;config.php']]],
+ ['theme_5finit_2ephp',['theme_init.php',['../theme_2apw_2php_2theme__init_8php.html',1,'']]],
+ ['theme_5finit_2ephp',['theme_init.php',['../theme_2redbasic_2php_2theme__init_8php.html',1,'']]],
+ ['theme_5fpost',['theme_post',['../view_2theme_2apw_2php_2config_8php.html#ad29461920cf03b9ce1428e21eb1f4ba6',1,'theme_post(&amp;$a):&#160;config.php'],['../view_2theme_2redbasic_2php_2config_8php.html#ad29461920cf03b9ce1428e21eb1f4ba6',1,'theme_post(&amp;$a):&#160;config.php']]],
['theme_5fstatus',['theme_status',['../admin_8php.html#ad4f74f33944a98b56d2c8c7601f124a4',1,'admin.php']]],
['thing_2ephp',['thing.php',['../thing_8php.html',1,'']]],
['thing_5fcontent',['thing_content',['../thing_8php.html#a24a35f1e64029a67fdbea94a776ae04b',1,'thing.php']]],
['thing_5finit',['thing_init',['../thing_8php.html#a8be23b1d475ec3d9291999221c674c80',1,'thing.php']]],
- ['timesel',['timesel',['../datetime_8php.html#a36d3d6dff8d76b5f295bb3d9c535a5b1',1,'datetime.php']]],
+ ['timesel',['timesel',['../datetime_8php.html#a3f239f94e23335d860b148958d87a093',1,'datetime.php']]],
['timezone_5fcmp',['timezone_cmp',['../datetime_8php.html#aa51b5a7ea4f931b23acbdfcea46e9865',1,'datetime.php']]],
['title_5fis_5fbody',['title_is_body',['../items_8php.html#aa371905f0a211b307cb3f7188c6cba04',1,'items.php']]],
['todo_20list',['Todo List',['../todo.html',1,'']]],
@@ -69,7 +66,9 @@ var searchData=
['toggle_5ftheme',['toggle_theme',['../admin_8php.html#af81f081851791cd15e49e8ff6722dc27',1,'admin.php']]],
['tpldebug_2ephp',['tpldebug.php',['../tpldebug_8php.html',1,'']]],
['tplpaths',['tplpaths',['../namespaceupdatetpl.html#a52a85ffa6b6d63d840b185a133478c12',1,'updatetpl']]],
+ ['translate_5fscope',['translate_scope',['../items_8php.html#aabfaa193b83154c2a81e91284e5d5e59',1,'items.php']]],
['translate_5fsystem_5fapps',['translate_system_apps',['../include_2apps_8php.html#a48289d5cc44b7638191738106ac5d030',1,'apps.php']]],
+ ['trim_5fmessage',['trim_message',['../po2php_8php.html#a4f3dc9b019d0cd1dc171c54c991ef334',1,'po2php.php']]],
['tryoembed',['tryoembed',['../bbcode_8php.html#a55b0cb6973f1ec731de0e726bcc0efa7',1,'bbcode.php']]],
['tryzrlaudio',['tryzrlaudio',['../bbcode_8php.html#a39de4de32a9456d1ca914d0dc52bd322',1,'bbcode.php']]],
['tryzrlvideo',['tryzrlvideo',['../bbcode_8php.html#aa92f119341f4c69dcef2768a013079b8',1,'bbcode.php']]],
diff --git a/doc/html/search/all_75.js b/doc/html/search/all_75.js
index 2da5eff92..3162bb574 100644
--- a/doc/html/search/all_75.js
+++ b/doc/html/search/all_75.js
@@ -1,10 +1,12 @@
var searchData=
[
['uexport_2ephp',['uexport.php',['../uexport_8php.html',1,'']]],
+ ['uexport_5fcontent',['uexport_content',['../uexport_8php.html#ae6f79d60916c01675c8cf663cb5fec84',1,'uexport.php']]],
['uexport_5finit',['uexport_init',['../uexport_8php.html#a118920137dedebe0581623a2e57e7b0d',1,'uexport.php']]],
['unamp',['unamp',['../text_8php.html#a29d6b804e368d3ef359ee295e96ed4c7',1,'text.php']]],
['undo_5fpost_5ftagging',['undo_post_tagging',['../text_8php.html#a740ad03e00459039a2c0992246c4e727',1,'text.php']]],
['unescape_5funderscores_5fin_5flinks',['unescape_underscores_in_links',['../bb2diaspora_8php.html#a599428bceb6f6d82a6a78cb66811f747',1,'bb2diaspora.php']]],
+ ['unescapebin',['unescapebin',['../classdba__driver.html#ab43184239e1d6eb00a98319f4a3df155',1,'dba_driver\unescapebin()'],['../classdba__postgres.html#a677f850211975c9ab89602c67e2dcad9',1,'dba_postgres\unescapebin()']]],
['uninstall_5fplugin',['uninstall_plugin',['../plugin_8php.html#a093a9cb98f51e3643634bd8bc6ed6e76',1,'plugin.php']]],
['unload_5fplugin',['unload_plugin',['../plugin_8php.html#a90538627db68605aeb6db17a8ead6523',1,'plugin.php']]],
['unobscure',['unobscure',['../text_8php.html#a8264348059abd1d4d5bb521323d3b19a',1,'text.php']]],
@@ -13,14 +15,21 @@ var searchData=
['update_5fbirthdays',['update_birthdays',['../datetime_8php.html#af1cd77c97c901d9239cb7a61f97f9826',1,'datetime.php']]],
['update_5fchannel_2ephp',['update_channel.php',['../update__channel_8php.html',1,'']]],
['update_5fchannel_5fcontent',['update_channel_content',['../update__channel_8php.html#aca52a9da500f0db2f0a8666af5bc06ba',1,'update_channel.php']]],
+ ['update_5fchannels_5factive_5fhalfyear_5fstat',['update_channels_active_halfyear_stat',['../statistics__fns_8php.html#a82726229a961d3bd3d543005c61dd8e6',1,'statistics_fns.php']]],
+ ['update_5fchannels_5factive_5fmonthly_5fstat',['update_channels_active_monthly_stat',['../statistics__fns_8php.html#ad2b7b595c039c4c2eb0d6cd57a393dfe',1,'statistics_fns.php']]],
+ ['update_5fchannels_5ftotal_5fstat',['update_channels_total_stat',['../statistics__fns_8php.html#a05858927cce81fd367aedf85a94ed90c',1,'statistics_fns.php']]],
['update_5fdirectory_5fentry',['update_directory_entry',['../dir__fns_8php.html#a44062d4b471d1e83f92f6c184585aa13',1,'dir_fns.php']]],
['update_5fdisplay_2ephp',['update_display.php',['../update__display_8php.html',1,'']]],
['update_5fdisplay_5fcontent',['update_display_content',['../update__display_8php.html#aa36ac524059e209d5d75a03c16206246',1,'update_display.php']]],
['update_5ffailed',['UPDATE_FAILED',['../boot_8php.html#a75fc600186b13c3b25e661afefb5eac8',1,'boot.php']]],
+ ['update_5ffeed_5fitem',['update_feed_item',['../items_8php.html#a9b449eeae50003414b8b30ca927af434',1,'items.php']]],
['update_5fflags_5fdeleted',['UPDATE_FLAGS_DELETED',['../boot_8php.html#aea392cb26ed617f3a8cde648385b5df0',1,'boot.php']]],
['update_5fflags_5fforced',['UPDATE_FLAGS_FORCED',['../boot_8php.html#ab9dca53455cd157d3c6ba2bdecdbd22d',1,'boot.php']]],
['update_5fflags_5fupdated',['UPDATE_FLAGS_UPDATED',['../boot_8php.html#a9690d73434125ce594a1f5e7c2a4f7c0',1,'boot.php']]],
+ ['update_5fhome_2ephp',['update_home.php',['../update__home_8php.html',1,'']]],
+ ['update_5fhome_5fcontent',['update_home_content',['../update__home_8php.html#a668340089acd150b830134476a647d05',1,'update_home.php']]],
['update_5fimported_5fitem',['update_imported_item',['../zot_8php.html#a31aad56acf8ff8f2353e6ff8595544df',1,'zot.php']]],
+ ['update_5flocal_5fposts_5fstat',['update_local_posts_stat',['../statistics__fns_8php.html#a9dd516dda693f17f5ce48a94876f7efa',1,'statistics_fns.php']]],
['update_5fmodtime',['update_modtime',['../zot_8php.html#ab319d1d9fff9c7775d9daef42d1f33dd',1,'zot.php']]],
['update_5fnetwork_2ephp',['update_network.php',['../update__network_8php.html',1,'']]],
['update_5fnetwork_5fcontent',['update_network_content',['../update__network_8php.html#a8abf5b9f65af6a27ee2f9d7207ed1b41',1,'update_network.php']]],
@@ -32,13 +41,15 @@ var searchData=
['update_5fsuggestions',['update_suggestions',['../socgraph_8php.html#a790690bb1a1d02483fe31632a160144d',1,'socgraph.php']]],
['updatetpl',['updatetpl',['../namespaceupdatetpl.html',1,'']]],
['updatetpl_2epy',['updatetpl.py',['../updatetpl_8py.html',1,'']]],
- ['upgrade_5fbool_5fmessage',['upgrade_bool_message',['../plugin_8php.html#a754d7f53b3abc557b753c057dc4e021d',1,'plugin.php']]],
- ['upgrade_5flink',['upgrade_link',['../plugin_8php.html#a4fc13e528367f510fcb6d8bbfc559040',1,'plugin.php']]],
- ['upgrade_5fmessage',['upgrade_message',['../plugin_8php.html#a901657dd078e070516cf97285e0bada7',1,'plugin.php']]],
+ ['upgrade_5fbool_5fmessage',['upgrade_bool_message',['../account_8php.html#a754d7f53b3abc557b753c057dc4e021d',1,'account.php']]],
+ ['upgrade_5flink',['upgrade_link',['../account_8php.html#a4fc13e528367f510fcb6d8bbfc559040',1,'account.php']]],
+ ['upgrade_5fmessage',['upgrade_message',['../account_8php.html#a901657dd078e070516cf97285e0bada7',1,'account.php']]],
['user_5fallow',['user_allow',['../account_8php.html#ac5c570a2d46446bad4dd2501e9c5a4b1',1,'account.php']]],
['user_5fapprove',['user_approve',['../account_8php.html#ad07be417ac7eda939768804106ddea3d',1,'account.php']]],
['user_5fdeny',['user_deny',['../account_8php.html#ac1653efba62493b9d87513e1b6c04c83',1,'account.php']]],
['user_5fremove',['user_remove',['../Contact_8php.html#a2fc191067dd571a79603c66b04b1ca15',1,'Contact.php']]],
- ['userreadablesize',['userReadableSize',['../classRedBrowser.html#ad3418b8ccad42a1ef4ad0079e15b2e64',1,'RedBrowser']]],
+ ['userreadablesize',['userReadableSize',['../classRedMatrix_1_1RedDAV_1_1RedBrowser.html#a242ce69a2fe5a5fdf9c2b8d3954accfd',1,'RedMatrix::RedDAV::RedBrowser']]],
+ ['utc_5fnow',['UTC_NOW',['../classdba__driver.html#aa3325d982d4ee5d1114fd7e02a4356e8',1,'dba_driver\UTC_NOW()'],['../classdba__postgres.html#ace80a204e34b20b9907650399cce02a3',1,'dba_postgres\UTC_NOW()']]],
+ ['utcnow',['utcnow',['../classdba__driver.html#ad700712879719bee23752b8f424d97d0',1,'dba_driver']]],
['util',['util',['../namespaceutil.html',1,'']]]
];
diff --git a/doc/html/search/all_76.js b/doc/html/search/all_76.js
index 823caf7e5..ec35b57e4 100644
--- a/doc/html/search/all_76.js
+++ b/doc/html/search/all_76.js
@@ -4,7 +4,7 @@ var searchData=
['validate_5fchannelname',['validate_channelname',['../identity_8php.html#af2802bc13a00a17b867bba7978ba8f58',1,'identity.php']]],
['validate_5femail',['validate_email',['../include_2network_8php.html#a897e7112d86eb95526cbd0bff9375f02',1,'network.php']]],
['validate_5furl',['validate_url',['../include_2network_8php.html#a5caa264fab6d2b2344e6bd5b298b08f2',1,'network.php']]],
- ['validateuserpass',['validateUserPass',['../classRedBasicAuth.html#a8dfd9a0953f8884723b421b7c1acf79b',1,'RedBasicAuth']]],
+ ['validateuserpass',['validateUserPass',['../classRedMatrix_1_1RedDAV_1_1RedBasicAuth.html#a6ece02655b780469e59e204c5979a624',1,'RedMatrix::RedDAV::RedBasicAuth']]],
['var_5freplace',['var_replace',['../classTemplate.html#abbc484016ddf5d818f55b823cae6feb0',1,'Template']]],
['vcard_5ffrom_5fxchan',['vcard_from_xchan',['../Contact_8php.html#a6348a532c9d26cd1c9afbc9aa6aa8960',1,'Contact.php']]],
['verify_5femail_5faddress',['verify_email_address',['../account_8php.html#acd6b8d2124ba5ea4f4794d2c58ae8bf5',1,'account.php']]],
@@ -16,6 +16,17 @@ var searchData=
['viewsrc_2ephp',['viewsrc.php',['../viewsrc_8php.html',1,'']]],
['viewsrc_5fcontent',['viewsrc_content',['../viewsrc_8php.html#a6eff3d0c1d7d14b335c4edb785cd60a4',1,'viewsrc.php']]],
['visible_5factivity',['visible_activity',['../conversation_8php.html#a7eeaaf44506815576f3bd80053ef52c3',1,'conversation.php']]],
+ ['vnotify_5falert',['VNOTIFY_ALERT',['../boot_8php.html#a9f8a2938ddd9ee2867e6f8ce77b61b2f',1,'boot.php']]],
+ ['vnotify_5fbirthday',['VNOTIFY_BIRTHDAY',['../boot_8php.html#ac89396b9144391acd08d6d0f9b332220',1,'boot.php']]],
+ ['vnotify_5fchannel',['VNOTIFY_CHANNEL',['../boot_8php.html#a7b511bd93202c43405adbe3b5bcebbfe',1,'boot.php']]],
+ ['vnotify_5fevent',['VNOTIFY_EVENT',['../boot_8php.html#ad94aca4c260b8a892397786201dc4664',1,'boot.php']]],
+ ['vnotify_5feventtoday',['VNOTIFY_EVENTTODAY',['../boot_8php.html#a76480b213af379c0c6c7fa4e39019ca9',1,'boot.php']]],
+ ['vnotify_5finfo',['VNOTIFY_INFO',['../boot_8php.html#a37281c30bd92cecb499878d6778c570f',1,'boot.php']]],
+ ['vnotify_5fintro',['VNOTIFY_INTRO',['../boot_8php.html#a1997c4b7d0253e036bc0fb6b20e4af71',1,'boot.php']]],
+ ['vnotify_5fmail',['VNOTIFY_MAIL',['../boot_8php.html#a0afeb43da443d6ff3526ede5ecdcc3b3',1,'boot.php']]],
+ ['vnotify_5fnetwork',['VNOTIFY_NETWORK',['../boot_8php.html#a997614f25e58f8313641e1eb0109fd10',1,'boot.php']]],
+ ['vnotify_5fregister',['VNOTIFY_REGISTER',['../boot_8php.html#ae09767b94688657978ff9366ec63684b',1,'boot.php']]],
+ ['vnotify_5fsystem',['VNOTIFY_SYSTEM',['../boot_8php.html#a7e5627b5ca4b7464feb0f08663b19ea1',1,'boot.php']]],
['vote_2ephp',['vote.php',['../vote_8php.html',1,'']]],
['vote_5fcontent',['vote_content',['../vote_8php.html#a6aa67489bf458ca5e3206e46dac68596',1,'vote.php']]],
['vote_5finit',['vote_init',['../vote_8php.html#ae0c6610f40afbbc1f4fe6494c51fbab2',1,'vote.php']]],
diff --git a/doc/html/search/all_77.js b/doc/html/search/all_77.js
index 21956898a..6ecd9d302 100644
--- a/doc/html/search/all_77.js
+++ b/doc/html/search/all_77.js
@@ -4,12 +4,12 @@ var searchData=
['wall_5fattach_5fpost',['wall_attach_post',['../wall__attach_8php.html#a7385e970e93228d082f0fd7254f6e653',1,'wall_attach.php']]],
['wall_5fupload_2ephp',['wall_upload.php',['../wall__upload_8php.html',1,'']]],
['wall_5fupload_5fpost',['wall_upload_post',['../wall__upload_8php.html#a7cbe204244cf9e0380ee932263a74d8f',1,'wall_upload.php']]],
- ['webfinger',['webfinger',['../include_2network_8php.html#a8122356933bcd6b0a8567e8e15ae5cc5',1,'network.php']]],
['webfinger_2ephp',['webfinger.php',['../webfinger_8php.html',1,'']]],
['webfinger_5fcontent',['webfinger_content',['../webfinger_8php.html#a17dd28db6d390194bf9ecb809739d1d3',1,'webfinger.php']]],
- ['webfinger_5fdfrn',['webfinger_dfrn',['../include_2network_8php.html#adf6008b38c555e98e7ed10da9ede2335',1,'network.php']]],
+ ['webfinger_5frfc7033',['webfinger_rfc7033',['../include_2network_8php.html#a3e6c751a51de33ad3563f0938296e78a',1,'network.php']]],
['webpages_2ephp',['webpages.php',['../webpages_8php.html',1,'']]],
['webpages_5fcontent',['webpages_content',['../webpages_8php.html#af3b7397d4abc153e3d2147740ee1a41d',1,'webpages.php']]],
+ ['webpages_5finit',['webpages_init',['../webpages_8php.html#af9ad0b65eba79acead3fa32b43d888b7',1,'webpages.php']]],
['wfinger_2ephp',['wfinger.php',['../wfinger_8php.html',1,'']]],
['wfinger_5finit',['wfinger_init',['../wfinger_8php.html#ae21e50c8d0a5f3c9be9f43a4e519acd3',1,'wfinger.php']]],
['what_5fnext',['what_next',['../setup_8php.html#aea1ebdda58ec938f4e7b31aa5c5f6b58',1,'setup.php']]],
@@ -19,6 +19,7 @@ var searchData=
['widget_5fappselect',['widget_appselect',['../widgets_8php.html#aced5cb177f630b30799c5eab873ee75c',1,'widgets.php']]],
['widget_5farchive',['widget_archive',['../widgets_8php.html#a7b1e357b5a2027718470b77ec921fc65',1,'widgets.php']]],
['widget_5fbookmarkedchats',['widget_bookmarkedchats',['../widgets_8php.html#a0e2f5179ed1a73b282dfda7270fcabb3',1,'widgets.php']]],
+ ['widget_5fcatcloud_5fwall',['widget_catcloud_wall',['../widgets_8php.html#af919de8e7e2ba8192a65fadc72a2c8b5',1,'widgets.php']]],
['widget_5fcategories',['widget_categories',['../widgets_8php.html#af37fdad3b2e861d860a4a8c4d8a76c0b',1,'widgets.php']]],
['widget_5fchatroom_5flist',['widget_chatroom_list',['../widgets_8php.html#a47c72aac42058ea086c9ef8651c259da',1,'widgets.php']]],
['widget_5fclock',['widget_clock',['../widgets_8php.html#a9d60539db68042e63c0015abd69a6f7a',1,'widgets.php']]],
@@ -37,7 +38,9 @@ var searchData=
['widget_5fnotes',['widget_notes',['../widgets_8php.html#a45ea061dabe9a8372e4ca3b9e5714256',1,'widgets.php']]],
['widget_5fphoto',['widget_photo',['../widgets_8php.html#a999ba893cac7600d3d3b4e7e14cf8c20',1,'widgets.php']]],
['widget_5fphoto_5falbums',['widget_photo_albums',['../widgets_8php.html#a702e2fc0adc9b615999eca18b7311b5e',1,'widgets.php']]],
+ ['widget_5fphoto_5frand',['widget_photo_rand',['../widgets_8php.html#af8eb466ef91d9e96e13335ead5eba380',1,'widgets.php']]],
['widget_5fprofile',['widget_profile',['../widgets_8php.html#abd2e508a2a0b911c4a838e3cb7599923',1,'widgets.php']]],
+ ['widget_5frandom_5fblock',['widget_random_block',['../widgets_8php.html#a829c5a5c7448129266fc1df3ae1a3c2e',1,'widgets.php']]],
['widget_5fsavedsearch',['widget_savedsearch',['../widgets_8php.html#a94203eb9bcd63cbdecbbcb15163598d8',1,'widgets.php']]],
['widget_5fsettings_5fmenu',['widget_settings_menu',['../widgets_8php.html#aaa73bcf1702eaadd9dcd253502f55e01',1,'widgets.php']]],
['widget_5fsuggestedchats',['widget_suggestedchats',['../widgets_8php.html#a50b1410238100c8a94c06b0aa63ee3b8',1,'widgets.php']]],
@@ -46,5 +49,6 @@ var searchData=
['widget_5ftagcloud_5fwall',['widget_tagcloud_wall',['../widgets_8php.html#ae4ced69d83dbdd9e6b51660d9eba8653',1,'widgets.php']]],
['widget_5fvcard',['widget_vcard',['../widgets_8php.html#abe03366fd22fd27d683518fa0765da50',1,'widgets.php']]],
['widgets_2ephp',['widgets.php',['../widgets_8php.html',1,'']]],
- ['writepages_5fwidget',['writepages_widget',['../page__widgets_8php.html#a1a1e729da27f252cab6678288a17958f',1,'page_widgets.php']]]
+ ['writepages_5fwidget',['writepages_widget',['../page__widgets_8php.html#a1a1e729da27f252cab6678288a17958f',1,'page_widgets.php']]],
+ ['wtagblock',['wtagblock',['../taxonomy_8php.html#a83f0a60f9e0c07d8451dc5be95b17287',1,'taxonomy.php']]]
];
diff --git a/doc/html/search/all_78.js b/doc/html/search/all_78.js
index c3fc54170..11483478c 100644
--- a/doc/html/search/all_78.js
+++ b/doc/html/search/all_78.js
@@ -1,21 +1,23 @@
var searchData=
[
- ['x',['x',['../boot_8php.html#a01353c9abebc3544ea080ac161729632',1,'boot.php']]],
+ ['x',['x',['../boot_8php.html#ae97836b0547953be182a2334c9c91d3c',1,'boot.php']]],
['xchan_2ephp',['xchan.php',['../xchan_8php.html',1,'']]],
['xchan_5fcontent',['xchan_content',['../xchan_8php.html#a9853348bf1a35c644460221ba75edc2d',1,'xchan.php']]],
+ ['xchan_5ffetch',['xchan_fetch',['../hubloc_8php.html#af1b476c936f96a93282b1d058e3d05ea',1,'hubloc.php']]],
['xchan_5fflags_5fcensored',['XCHAN_FLAGS_CENSORED',['../boot_8php.html#accd6f36cc9f40225cbd720e4d12a7c6e',1,'boot.php']]],
['xchan_5fflags_5fdeleted',['XCHAN_FLAGS_DELETED',['../boot_8php.html#a9ea1290e00c6d40684892047f2c778a9',1,'boot.php']]],
['xchan_5fflags_5fhidden',['XCHAN_FLAGS_HIDDEN',['../boot_8php.html#a1af3ed96de14aa0d7891b39cc75b60f2',1,'boot.php']]],
['xchan_5fflags_5fnormal',['XCHAN_FLAGS_NORMAL',['../boot_8php.html#a8fdcc4ffb365a3267bd02ce8a8d466d6',1,'boot.php']]],
['xchan_5fflags_5forphan',['XCHAN_FLAGS_ORPHAN',['../boot_8php.html#a1c923b99bf77e4203ae94e5684b6ad0f',1,'boot.php']]],
+ ['xchan_5fflags_5fpubforum',['XCHAN_FLAGS_PUBFORUM',['../boot_8php.html#a0209e605028a5bb492683951ab30d49d',1,'boot.php']]],
['xchan_5fflags_5fselfcensored',['XCHAN_FLAGS_SELFCENSORED',['../boot_8php.html#a5a681a672e007cdc22b43345d71f07c6',1,'boot.php']]],
['xchan_5fflags_5fsystem',['XCHAN_FLAGS_SYSTEM',['../boot_8php.html#afef254290febac854c85fc698d9483a6',1,'boot.php']]],
['xchan_5fmail_5fquery',['xchan_mail_query',['../text_8php.html#a543447c5ed766535221e2d9636b379ee',1,'text.php']]],
- ['xchan_5fquery',['xchan_query',['../text_8php.html#a36a2e5d418ee81140f25c4233cfecd1f',1,'text.php']]],
+ ['xchan_5fquery',['xchan_query',['../text_8php.html#a905c3895feb6f276df23f07f16f9bb52',1,'text.php']]],
+ ['xchan_5fstore',['xchan_store',['../hubloc_8php.html#acb708dd197aae72a4858cf5ff4e3195b',1,'hubloc.php']]],
['xml2array',['xml2array',['../include_2network_8php.html#a99353baabbc3e0584b85eb79ee802cff',1,'network.php']]],
['xml_5fstatus',['xml_status',['../include_2network_8php.html#a9e9da2aafb806c98ecdc318604e60dc6',1,'network.php']]],
['xmlify',['xmlify',['../text_8php.html#aaed4413ed8918838b517e3b2fafaea0d',1,'text.php']]],
- ['xpost_5fto_5fhtml2bbcode',['xpost_to_html2bbcode',['../post__to__red_8php.html#af2713018a2dc97e88f121fc6215beb66',1,'post_to_red.php']]],
['xrd_2ephp',['xrd.php',['../xrd_8php.html',1,'']]],
['xrd_5finit',['xrd_init',['../xrd_8php.html#aee3cf087968e4a0ff3a87de16eb23270',1,'xrd.php']]],
['xref_2ephp',['xref.php',['../xref_8php.html',1,'']]],
diff --git a/doc/html/search/all_7a.js b/doc/html/search/all_7a.js
index b003d4edf..abbf3009d 100644
--- a/doc/html/search/all_7a.js
+++ b/doc/html/search/all_7a.js
@@ -2,10 +2,13 @@ var searchData=
[
['z_5fbirthday',['z_birthday',['../datetime_8php.html#ab55e545b72ec8c097e052ea7d373491f',1,'datetime.php']]],
['z_5ffetch_5furl',['z_fetch_url',['../include_2network_8php.html#aafd06c0a75402aefb06cfb9f9740fa37',1,'network.php']]],
+ ['z_5fget_5ftemp_5fdir',['z_get_temp_dir',['../boot_8php.html#a59717d02602a4babf2a54da8b33d93a5',1,'boot.php']]],
+ ['z_5fget_5fupload_5fdir',['z_get_upload_dir',['../boot_8php.html#a476c499e15caf75972fed134a8f23b2e',1,'boot.php']]],
['z_5finput_5ffilter',['z_input_filter',['../text_8php.html#a324c58f37f6acdf9cd1922aa76077d9f',1,'text.php']]],
['z_5fmime_5fcontent_5ftype',['z_mime_content_type',['../include_2attach_8php.html#a6fdd92775f31c07d2863e16e0026018a',1,'attach.php']]],
['z_5fpath',['z_path',['../boot_8php.html#aba208673515cbb8a55e5fa4a1da99fda',1,'boot.php']]],
['z_5fpost_5furl',['z_post_url',['../include_2network_8php.html#a9129fd55e7fc175b4ea9a195cccc16bc',1,'network.php']]],
+ ['z_5fpost_5furl_5fjson',['z_post_url_json',['../include_2network_8php.html#a984708e60d531b31b2d1f88b5f408f7b',1,'network.php']]],
['z_5freaddir',['z_readdir',['../include_2attach_8php.html#aeb07968990e66a88c95483ca09a7f909',1,'attach.php']]],
['z_5froot',['z_root',['../boot_8php.html#add517a0958ac684792c62142a3877f81',1,'boot.php']]],
['zcurl_5ftimeout',['ZCURL_TIMEOUT',['../boot_8php.html#a3cd42a70c6b3999590e4fd7a1a9096af',1,'boot.php']]],
@@ -17,14 +20,16 @@ var searchData=
['zidify_5fimg_5fcallback',['zidify_img_callback',['../text_8php.html#ab4a4c3d4700bc219bb84f33b499314f4',1,'text.php']]],
['zidify_5flinks',['zidify_links',['../text_8php.html#a29988052f3944111def3b6aaf2c7a8f6',1,'text.php']]],
['zot_2ephp',['zot.php',['../zot_8php.html',1,'']]],
- ['zot_5fbuild_5fpacket',['zot_build_packet',['../zot_8php.html#a3862b3161b2c8557dc1a95020179bd81',1,'zot.php']]],
- ['zot_5ffeed',['zot_feed',['../items_8php.html#a004e89d86b0f29b2c4da20108ecc4091',1,'items.php']]],
+ ['zot_5fbuild_5fpacket',['zot_build_packet',['../zot_8php.html#a084c581d534e7e3b759488b46602288f',1,'zot.php']]],
+ ['zot_5fencode_5flocations',['zot_encode_locations',['../zot_8php.html#ae26ce9f1ad74139193fb6319beac5fca',1,'zot.php']]],
+ ['zot_5ffeed',['zot_feed',['../items_8php.html#a1cf89557f32d5dfbe8bd90448dc1aa92',1,'items.php']]],
['zot_5ffetch',['zot_fetch',['../zot_8php.html#a61cdc1ec843663c423ed2d8160ae5aea',1,'zot.php']]],
['zot_5ffinger',['zot_finger',['../zot_8php.html#a95528377d7303131958c9f0b7158fdce',1,'zot.php']]],
['zot_5fget_5fhublocs',['zot_get_hublocs',['../zot_8php.html#ae7cec2b417b5858fd4a41070f843d1d7',1,'zot.php']]],
['zot_5fgethub',['zot_gethub',['../zot_8php.html#a55056e863a7860bc0cf922e78fcce073',1,'zot.php']]],
['zot_5fimport',['zot_import',['../zot_8php.html#aeea071f17e306fe3d0c488551906bfab',1,'zot.php']]],
['zot_5fnew_5fuid',['zot_new_uid',['../zot_8php.html#ab22d67660702056bf3f4696dcebf5ce7',1,'zot.php']]],
+ ['zot_5fprocess_5fmessage_5frequest',['zot_process_message_request',['../zot_8php.html#a3920afe14fc1d82020161b4b86bcd9ac',1,'zot.php']]],
['zot_5fprocess_5fresponse',['zot_process_response',['../zot_8php.html#a928f5643ca66ae9635d85aeb2be62e03',1,'zot.php']]],
['zot_5frefresh',['zot_refresh',['../zot_8php.html#a7ac30ff51274bf0b6d3eade37972145c',1,'zot.php']]],
['zot_5fregister_5fhub',['zot_register_hub',['../zot_8php.html#a5bcdfef419b16075a0eca990956223dc',1,'zot.php']]],
diff --git a/doc/html/search/classes_64.js b/doc/html/search/classes_64.js
index c52174855..439607209 100644
--- a/doc/html/search/classes_64.js
+++ b/doc/html/search/classes_64.js
@@ -2,5 +2,6 @@ var searchData=
[
['dba_5fdriver',['dba_driver',['../classdba__driver.html',1,'']]],
['dba_5fmysql',['dba_mysql',['../classdba__mysql.html',1,'']]],
- ['dba_5fmysqli',['dba_mysqli',['../classdba__mysqli.html',1,'']]]
+ ['dba_5fmysqli',['dba_mysqli',['../classdba__mysqli.html',1,'']]],
+ ['dba_5fpostgres',['dba_postgres',['../classdba__postgres.html',1,'']]]
];
diff --git a/doc/html/search/classes_69.js b/doc/html/search/classes_69.js
index b0394186f..a9767d06a 100644
--- a/doc/html/search/classes_69.js
+++ b/doc/html/search/classes_69.js
@@ -1,5 +1,6 @@
var searchData=
[
+ ['import',['Import',['../classRedMatrix_1_1Import_1_1Import.html',1,'RedMatrix::Import']]],
['item',['Item',['../classItem.html',1,'']]],
['itemplateengine',['ITemplateEngine',['../interfaceITemplateEngine.html',1,'']]]
];
diff --git a/doc/html/search/classes_72.js b/doc/html/search/classes_72.js
index 7196e9f30..e437f3cef 100644
--- a/doc/html/search/classes_72.js
+++ b/doc/html/search/classes_72.js
@@ -1,7 +1,7 @@
var searchData=
[
- ['redbasicauth',['RedBasicAuth',['../classRedBasicAuth.html',1,'']]],
- ['redbrowser',['RedBrowser',['../classRedBrowser.html',1,'']]],
- ['reddirectory',['RedDirectory',['../classRedDirectory.html',1,'']]],
- ['redfile',['RedFile',['../classRedFile.html',1,'']]]
+ ['redbasicauth',['RedBasicAuth',['../classRedMatrix_1_1RedDAV_1_1RedBasicAuth.html',1,'RedMatrix::RedDAV']]],
+ ['redbrowser',['RedBrowser',['../classRedMatrix_1_1RedDAV_1_1RedBrowser.html',1,'RedMatrix::RedDAV']]],
+ ['reddirectory',['RedDirectory',['../classRedMatrix_1_1RedDAV_1_1RedDirectory.html',1,'RedMatrix::RedDAV']]],
+ ['redfile',['RedFile',['../classRedMatrix_1_1RedDAV_1_1RedFile.html',1,'RedMatrix::RedDAV']]]
];
diff --git a/doc/html/search/files_63.js b/doc/html/search/files_63.js
index 69fb8fee5..f15bd328a 100644
--- a/doc/html/search/files_63.js
+++ b/doc/html/search/files_63.js
@@ -1,8 +1,6 @@
var searchData=
[
['cache_2ephp',['cache.php',['../cache_8php.html',1,'']]],
- ['chanman_2ephp',['chanman.php',['../mod_2chanman_8php.html',1,'']]],
- ['chanman_2ephp',['chanman.php',['../include_2chanman_8php.html',1,'']]],
['channel_2ephp',['channel.php',['../channel_8php.html',1,'']]],
['chanview_2ephp',['chanview.php',['../chanview_8php.html',1,'']]],
['chat_2ephp',['chat.php',['../mod_2chat_8php.html',1,'']]],
@@ -15,11 +13,9 @@ var searchData=
['comanche_2ephp',['comanche.php',['../comanche_8php.html',1,'']]],
['common_2ephp',['common.php',['../common_8php.html',1,'']]],
['config_2emd',['config.md',['../config_8md.html',1,'']]],
+ ['config_2ephp',['config.php',['../include_2config_8php.html',1,'']]],
['config_2ephp',['config.php',['../view_2theme_2apw_2php_2config_8php.html',1,'']]],
- ['config_2ephp',['config.php',['../view_2theme_2blogga_2view_2theme_2blog_2config_8php.html',1,'']]],
['config_2ephp',['config.php',['../view_2theme_2redbasic_2php_2config_8php.html',1,'']]],
- ['config_2ephp',['config.php',['../include_2config_8php.html',1,'']]],
- ['config_2ephp',['config.php',['../view_2theme_2blogga_2php_2config_8php.html',1,'']]],
['connect_2ephp',['connect.php',['../connect_8php.html',1,'']]],
['connections_2ephp',['connections.php',['../connections_8php.html',1,'']]],
['connedit_2ephp',['connedit.php',['../connedit_8php.html',1,'']]],
diff --git a/doc/html/search/files_64.js b/doc/html/search/files_64.js
index c1881fd1c..7655469bc 100644
--- a/doc/html/search/files_64.js
+++ b/doc/html/search/files_64.js
@@ -9,16 +9,16 @@ var searchData=
['dba_5fdriver_2ephp',['dba_driver.php',['../dba__driver_8php.html',1,'']]],
['dba_5fmysql_2ephp',['dba_mysql.php',['../dba__mysql_8php.html',1,'']]],
['dba_5fmysqli_2ephp',['dba_mysqli.php',['../dba__mysqli_8php.html',1,'']]],
- ['default_2ephp',['default.php',['../theme_2blogga_2view_2theme_2blog_2default_8php.html',1,'']]],
- ['default_2ephp',['default.php',['../theme_2blogga_2php_2default_8php.html',1,'']]],
- ['default_2ephp',['default.php',['../theme_2mytheme_2php_2default_8php.html',1,'']]],
+ ['dba_5fpostgres_2ephp',['dba_postgres.php',['../dba__postgres_8php.html',1,'']]],
['default_2ephp',['default.php',['../php_2default_8php.html',1,'']]],
+ ['default_2ephp',['default.php',['../theme_2mytheme_2php_2default_8php.html',1,'']]],
['delegate_2ephp',['delegate.php',['../delegate_8php.html',1,'']]],
['deliver_2ephp',['deliver.php',['../deliver_8php.html',1,'']]],
+ ['diaspora_2ephp',['diaspora.php',['../diaspora_8php.html',1,'']]],
+ ['dimport_2ephp',['dimport.php',['../dimport_8php.html',1,'']]],
['dir_5ffns_2ephp',['dir_fns.php',['../dir__fns_8php.html',1,'']]],
- ['directory_2ephp',['directory.php',['../include_2directory_8php.html',1,'']]],
['directory_2ephp',['directory.php',['../mod_2directory_8php.html',1,'']]],
- ['dirprofile_2ephp',['dirprofile.php',['../dirprofile_8php.html',1,'']]],
+ ['directory_2ephp',['directory.php',['../include_2directory_8php.html',1,'']]],
['dirsearch_2ephp',['dirsearch.php',['../dirsearch_8php.html',1,'']]],
['display_2ephp',['display.php',['../display_8php.html',1,'']]],
['docblox_5ferrorchecker_2ephp',['docblox_errorchecker.php',['../docblox__errorchecker_8php.html',1,'']]]
diff --git a/doc/html/search/files_66.js b/doc/html/search/files_66.js
index 6def5fb77..6d83aa37c 100644
--- a/doc/html/search/files_66.js
+++ b/doc/html/search/files_66.js
@@ -6,12 +6,12 @@ var searchData=
['filer_2ephp',['filer.php',['../filer_8php.html',1,'']]],
['filerm_2ephp',['filerm.php',['../filerm_8php.html',1,'']]],
['filestorage_2ephp',['filestorage.php',['../filestorage_8php.html',1,'']]],
+ ['fixd_2ephp',['fixd.php',['../fixd_8php.html',1,'']]],
['follow_2ephp',['follow.php',['../mod_2follow_8php.html',1,'']]],
['follow_2ephp',['follow.php',['../include_2follow_8php.html',1,'']]],
['fpostit_2ephp',['fpostit.php',['../fpostit_8php.html',1,'']]],
['fresh_2emd',['fresh.md',['../fresh_8md.html',1,'']]],
['friendica_2dto_2dsmarty_2dtpl_2epy',['friendica-to-smarty-tpl.py',['../friendica-to-smarty-tpl_8py.html',1,'']]],
- ['friendica_5fsmarty_2ephp',['friendica_smarty.php',['../friendica__smarty_8php.html',1,'']]],
['fsuggest_2ephp',['fsuggest.php',['../fsuggest_8php.html',1,'']]],
['full_2ephp',['full.php',['../full_8php.html',1,'']]],
['functions_2ephp',['functions.php',['../functions_8php.html',1,'']]]
diff --git a/doc/html/search/files_68.js b/doc/html/search/files_68.js
index 02e6b707b..faa72e163 100644
--- a/doc/html/search/files_68.js
+++ b/doc/html/search/files_68.js
@@ -1,5 +1,6 @@
var searchData=
[
+ ['hcard_2ephp',['hcard.php',['../hcard_8php.html',1,'']]],
['help_2ephp',['help.php',['../help_8php.html',1,'']]],
['home_2ephp',['home.php',['../home_8php.html',1,'']]],
['hostxrd_2ephp',['hostxrd.php',['../hostxrd_8php.html',1,'']]],
diff --git a/doc/html/search/files_69.js b/doc/html/search/files_69.js
index f7506b140..8345e5929 100644
--- a/doc/html/search/files_69.js
+++ b/doc/html/search/files_69.js
@@ -1,8 +1,10 @@
var searchData=
[
['identity_2ephp',['identity.php',['../identity_8php.html',1,'']]],
+ ['impel_2ephp',['impel.php',['../impel_8php.html',1,'']]],
['import_2ephp',['import.php',['../import_8php.html',1,'']]],
['importelm_2ephp',['importelm.php',['../importelm_8php.html',1,'']]],
+ ['importer_2ephp',['Importer.php',['../Importer_8php.html',1,'']]],
['invite_2ephp',['invite.php',['../invite_8php.html',1,'']]],
['item_2ephp',['item.php',['../item_8php.html',1,'']]],
['itemobject_2ephp',['ItemObject.php',['../ItemObject_8php.html',1,'']]],
diff --git a/doc/html/search/files_6c.js b/doc/html/search/files_6c.js
index b695ca079..272421a4f 100644
--- a/doc/html/search/files_6c.js
+++ b/doc/html/search/files_6c.js
@@ -5,6 +5,7 @@ var searchData=
['layouts_2ephp',['layouts.php',['../layouts_8php.html',1,'']]],
['like_2ephp',['like.php',['../like_8php.html',1,'']]],
['lockview_2ephp',['lockview.php',['../lockview_8php.html',1,'']]],
+ ['locs_2ephp',['locs.php',['../locs_8php.html',1,'']]],
['login_2ephp',['login.php',['../login_8php.html',1,'']]],
['lostpass_2ephp',['lostpass.php',['../lostpass_8php.html',1,'']]]
];
diff --git a/doc/html/search/files_70.js b/doc/html/search/files_70.js
index 7e0223120..9892d5e4d 100644
--- a/doc/html/search/files_70.js
+++ b/doc/html/search/files_70.js
@@ -1,5 +1,6 @@
var searchData=
[
+ ['p_2ephp',['p.php',['../p_8php.html',1,'']]],
['page_2ephp',['page.php',['../page_8php.html',1,'']]],
['page_5fwidgets_2ephp',['page_widgets.php',['../page__widgets_8php.html',1,'']]],
['parse_5furl_2ephp',['parse_url.php',['../parse__url_8php.html',1,'']]],
@@ -11,8 +12,8 @@ var searchData=
['photo_5fdriver_2ephp',['photo_driver.php',['../photo__driver_8php.html',1,'']]],
['photo_5fgd_2ephp',['photo_gd.php',['../photo__gd_8php.html',1,'']]],
['photo_5fimagick_2ephp',['photo_imagick.php',['../photo__imagick_8php.html',1,'']]],
- ['photos_2ephp',['photos.php',['../mod_2photos_8php.html',1,'']]],
['photos_2ephp',['photos.php',['../include_2photos_8php.html',1,'']]],
+ ['photos_2ephp',['photos.php',['../mod_2photos_8php.html',1,'']]],
['php_2ephp',['php.php',['../php_8php.html',1,'']]],
['php2po_2ephp',['php2po.php',['../php2po_8php.html',1,'']]],
['pine_2ephp',['pine.php',['../pine_8php.html',1,'']]],
@@ -21,12 +22,12 @@ var searchData=
['po2php_2ephp',['po2php.php',['../po2php_8php.html',1,'']]],
['poco_2ephp',['poco.php',['../poco_8php.html',1,'']]],
['poke_2ephp',['poke.php',['../poke_8php.html',1,'']]],
+ ['poll_2ephp',['poll.php',['../poll_8php.html',1,'']]],
['poller_2ephp',['poller.php',['../poller_8php.html',1,'']]],
['post_2ephp',['post.php',['../post_8php.html',1,'']]],
- ['post_5fto_5fred_2ephp',['post_to_red.php',['../post__to__red_8php.html',1,'']]],
['pretheme_2ephp',['pretheme.php',['../pretheme_8php.html',1,'']]],
- ['probe_2ephp',['probe.php',['../mod_2probe_8php.html',1,'']]],
['probe_2ephp',['probe.php',['../include_2probe_8php.html',1,'']]],
+ ['probe_2ephp',['probe.php',['../mod_2probe_8php.html',1,'']]],
['profile_2ephp',['profile.php',['../profile_8php.html',1,'']]],
['profile_5fphoto_2ephp',['profile_photo.php',['../profile__photo_8php.html',1,'']]],
['profile_5fselectors_2ephp',['profile_selectors.php',['../profile__selectors_8php.html',1,'']]],
diff --git a/doc/html/search/files_72.js b/doc/html/search/files_72.js
index 73d8c8957..c61471237 100644
--- a/doc/html/search/files_72.js
+++ b/doc/html/search/files_72.js
@@ -2,13 +2,20 @@ var searchData=
[
['randprof_2ephp',['randprof.php',['../randprof_8php.html',1,'']]],
['rbmark_2ephp',['rbmark.php',['../rbmark_8php.html',1,'']]],
- ['readme_2emd',['README.md',['../apw_2README_8md.html',1,'']]],
- ['readme_2emd',['README.md',['../blogga_2php_2README_8md.html',1,'']]],
+ ['readme_2emd',['README.md',['../README_8md.html',1,'']]],
+ ['receive_2ephp',['receive.php',['../receive_8php.html',1,'']]],
+ ['redable_2ephp',['redable.php',['../redable_8php.html',1,'']]],
['redbasic_2ephp',['redbasic.php',['../redbasic_8php.html',1,'']]],
+ ['redbasicauth_2ephp',['RedBasicAuth.php',['../RedBasicAuth_8php.html',1,'']]],
+ ['redbrowser_2ephp',['RedBrowser.php',['../RedBrowser_8php.html',1,'']]],
['reddav_2ephp',['reddav.php',['../reddav_8php.html',1,'']]],
+ ['reddirectory_2ephp',['RedDirectory.php',['../RedDirectory_8php.html',1,'']]],
+ ['redfile_2ephp',['RedFile.php',['../RedFile_8php.html',1,'']]],
+ ['refimport_2ephp',['refimport.php',['../refimport_8php.html',1,'']]],
['register_2ephp',['register.php',['../register_8php.html',1,'']]],
['regmod_2ephp',['regmod.php',['../regmod_8php.html',1,'']]],
['regver_2ephp',['regver.php',['../regver_8php.html',1,'']]],
+ ['removeaccount_2ephp',['removeaccount.php',['../removeaccount_8php.html',1,'']]],
['removeme_2ephp',['removeme.php',['../removeme_8php.html',1,'']]],
['rmagic_2ephp',['rmagic.php',['../rmagic_8php.html',1,'']]],
['rpost_2ephp',['rpost.php',['../rpost_8php.html',1,'']]],
diff --git a/doc/html/search/files_73.js b/doc/html/search/files_73.js
index d51113c79..f4c9ba8ba 100644
--- a/doc/html/search/files_73.js
+++ b/doc/html/search/files_73.js
@@ -3,21 +3,30 @@ var searchData=
['search_2ephp',['search.php',['../search_8php.html',1,'']]],
['search_5fac_2ephp',['search_ac.php',['../search__ac_8php.html',1,'']]],
['security_2ephp',['security.php',['../security_8php.html',1,'']]],
+ ['service_5flimits_2ephp',['service_limits.php',['../service__limits_8php.html',1,'']]],
['session_2ephp',['session.php',['../session_8php.html',1,'']]],
['settings_2ephp',['settings.php',['../settings_8php.html',1,'']]],
['setup_2ephp',['setup.php',['../setup_8php.html',1,'']]],
['share_2ephp',['share.php',['../share_8php.html',1,'']]],
+ ['simple_5fblack_5fon_5fwhite_2ephp',['simple_black_on_white.php',['../simple__black__on__white_8php.html',1,'']]],
+ ['simple_5fgreen_5fon_5fblack_2ephp',['simple_green_on_black.php',['../simple__green__on__black_8php.html',1,'']]],
+ ['simple_5fwhite_5fon_5fblack_2ephp',['simple_white_on_black.php',['../simple__white__on__black_8php.html',1,'']]],
['siteinfo_2ephp',['siteinfo.php',['../siteinfo_8php.html',1,'']]],
['sitelist_2ephp',['sitelist.php',['../sitelist_8php.html',1,'']]],
+ ['smarty_2ephp',['smarty.php',['../smarty_8php.html',1,'']]],
['smilies_2ephp',['smilies.php',['../smilies_8php.html',1,'']]],
['socgraph_2ephp',['socgraph.php',['../socgraph_8php.html',1,'']]],
['sources_2ephp',['sources.php',['../sources_8php.html',1,'']]],
['spam_2ephp',['spam.php',['../spam_8php.html',1,'']]],
['sslify_2ephp',['sslify.php',['../sslify_8php.html',1,'']]],
['starred_2ephp',['starred.php',['../starred_8php.html',1,'']]],
- ['style_2ephp',['style.php',['../apw_2php_2style_8php.html',1,'']]],
+ ['statistics_5ffns_2ephp',['statistics_fns.php',['../statistics__fns_8php.html',1,'']]],
+ ['style_2ephp',['style.php',['../stumble_2php_2style_8php.html',1,'']]],
['style_2ephp',['style.php',['../mytheme_2php_2style_8php.html',1,'']]],
+ ['style_2ephp',['style.php',['../hivenet_2php_2style_8php.html',1,'']]],
+ ['style_2ephp',['style.php',['../apw_2php_2style_8php.html',1,'']]],
['style_2ephp',['style.php',['../redbasic_2php_2style_8php.html',1,'']]],
+ ['style_2ephp',['style.php',['../suckerberg_2php_2style_8php.html',1,'']]],
['subthread_2ephp',['subthread.php',['../subthread_8php.html',1,'']]],
['suggest_2ephp',['suggest.php',['../suggest_8php.html',1,'']]],
['system_5funavailable_2ephp',['system_unavailable.php',['../system__unavailable_8php.html',1,'']]]
diff --git a/doc/html/search/files_74.js b/doc/html/search/files_74.js
index 8a5b0ea9f..12f380367 100644
--- a/doc/html/search/files_74.js
+++ b/doc/html/search/files_74.js
@@ -5,15 +5,15 @@ var searchData=
['taxonomy_2ephp',['taxonomy.php',['../taxonomy_8php.html',1,'']]],
['template_5fprocessor_2ephp',['template_processor.php',['../template__processor_8php.html',1,'']]],
['text_2ephp',['text.php',['../text_8php.html',1,'']]],
+ ['theme_2ephp',['theme.php',['../stumble_2php_2theme_8php.html',1,'']]],
+ ['theme_2ephp',['theme.php',['../hivenet_2php_2theme_8php.html',1,'']]],
['theme_2ephp',['theme.php',['../mytheme_2php_2theme_8php.html',1,'']]],
- ['theme_2ephp',['theme.php',['../apw_2php_2theme_8php.html',1,'']]],
- ['theme_2ephp',['theme.php',['../blogga_2php_2theme_8php.html',1,'']]],
- ['theme_2ephp',['theme.php',['../blogga_2view_2theme_2blog_2theme_8php.html',1,'']]],
['theme_2ephp',['theme.php',['../redbasic_2php_2theme_8php.html',1,'']]],
- ['theme_5finit_2ephp',['theme_init.php',['../theme_2redbasic_2php_2theme__init_8php.html',1,'']]],
- ['theme_5finit_2ephp',['theme_init.php',['../php_2theme__init_8php.html',1,'']]],
+ ['theme_2ephp',['theme.php',['../suckerberg_2php_2theme_8php.html',1,'']]],
+ ['theme_2ephp',['theme.php',['../apw_2php_2theme_8php.html',1,'']]],
['theme_5finit_2ephp',['theme_init.php',['../theme_2apw_2php_2theme__init_8php.html',1,'']]],
- ['theme_5finit_2ephp',['theme_init.php',['../theme_2blogga_2php_2theme__init_8php.html',1,'']]],
+ ['theme_5finit_2ephp',['theme_init.php',['../php_2theme__init_8php.html',1,'']]],
+ ['theme_5finit_2ephp',['theme_init.php',['../theme_2redbasic_2php_2theme__init_8php.html',1,'']]],
['thing_2ephp',['thing.php',['../thing_8php.html',1,'']]],
['toggle_5fmobile_2ephp',['toggle_mobile.php',['../toggle__mobile_8php.html',1,'']]],
['toggle_5fsafesearch_2ephp',['toggle_safesearch.php',['../toggle__safesearch_8php.html',1,'']]],
diff --git a/doc/html/search/files_75.js b/doc/html/search/files_75.js
index 33a82596e..440a0e7f0 100644
--- a/doc/html/search/files_75.js
+++ b/doc/html/search/files_75.js
@@ -3,6 +3,7 @@ var searchData=
['uexport_2ephp',['uexport.php',['../uexport_8php.html',1,'']]],
['update_5fchannel_2ephp',['update_channel.php',['../update__channel_8php.html',1,'']]],
['update_5fdisplay_2ephp',['update_display.php',['../update__display_8php.html',1,'']]],
+ ['update_5fhome_2ephp',['update_home.php',['../update__home_8php.html',1,'']]],
['update_5fnetwork_2ephp',['update_network.php',['../update__network_8php.html',1,'']]],
['update_5fsearch_2ephp',['update_search.php',['../update__search_8php.html',1,'']]],
['updatetpl_2epy',['updatetpl.py',['../updatetpl_8py.html',1,'']]]
diff --git a/doc/html/search/functions_5f.js b/doc/html/search/functions_5f.js
index 8921ecf12..a25babe06 100644
--- a/doc/html/search/functions_5f.js
+++ b/doc/html/search/functions_5f.js
@@ -1,6 +1,6 @@
var searchData=
[
- ['_5f_5fconstruct',['__construct',['../classApp.html#af6d39f63fb7116bbeb04e51696f99474',1,'App\__construct()'],['../classConversation.html#af84ea6ccd72214c9bb4c504461cc8b09',1,'Conversation\__construct()'],['../classdba__driver.html#af3541d13ccb7a3eddfc03e253c746186',1,'dba_driver\__construct()'],['../classFriendicaSmarty.html#af12091b920b95eeef1218cbc48066ca6',1,'FriendicaSmarty\__construct()'],['../classFriendicaSmartyEngine.html#ab7c305bd8c386c2944e4dc9136cea5b6',1,'FriendicaSmartyEngine\__construct()'],['../classItem.html#a248f45871ecfe82a08d1d4c0769b2eb2',1,'Item\__construct()'],['../classFKOAuth1.html#a2f1276872329a6f0b704ccda1a4b9fa6',1,'FKOAuth1\__construct()'],['../classphoto__driver.html#ac6e85f8e507cab4e755ed7acdec401ae',1,'photo_driver\__construct()'],['../classRedDirectory.html#a1e35e3cd31d2a15250655e4cafdea180',1,'RedDirectory\__construct()'],['../classRedFile.html#a9a67bdb34c9db6ce144b3f371148b183',1,'RedFile\__construct()'],['../classRedBrowser.html#a4b76be9ccef0262cf78fffb4129eda93',1,'RedBrowser\__construct()']]],
+ ['_5f_5fconstruct',['__construct',['../classApp.html#af6d39f63fb7116bbeb04e51696f99474',1,'App\__construct()'],['../classConversation.html#af84ea6ccd72214c9bb4c504461cc8b09',1,'Conversation\__construct()'],['../classdba__driver.html#af3541d13ccb7a3eddfc03e253c746186',1,'dba_driver\__construct()'],['../classItem.html#a248f45871ecfe82a08d1d4c0769b2eb2',1,'Item\__construct()'],['../classFKOAuth1.html#a2f1276872329a6f0b704ccda1a4b9fa6',1,'FKOAuth1\__construct()'],['../classphoto__driver.html#ac6e85f8e507cab4e755ed7acdec401ae',1,'photo_driver\__construct()'],['../classRedMatrix_1_1RedDAV_1_1RedBrowser.html#a8161f2a0be205412e263c947b5ec46c5',1,'RedMatrix\RedDAV\RedBrowser\__construct()'],['../classRedMatrix_1_1RedDAV_1_1RedDirectory.html#a76b58fe5223e565c97f1b9af93031a99',1,'RedMatrix\RedDAV\RedDirectory\__construct()'],['../classRedMatrix_1_1RedDAV_1_1RedFile.html#a05798eac84c578152ff21758261c6ac6',1,'RedMatrix\RedDAV\RedFile\__construct()'],['../classFriendicaSmarty.html#af12091b920b95eeef1218cbc48066ca6',1,'FriendicaSmarty\__construct()'],['../classFriendicaSmartyEngine.html#ab7c305bd8c386c2944e4dc9136cea5b6',1,'FriendicaSmartyEngine\__construct()']]],
['_5f_5fdestruct',['__destruct',['../classdba__driver.html#a1a8bc9dc839a6320a0e07d8047a6b721',1,'dba_driver\__destruct()'],['../classphoto__driver.html#ae4501abdc9651359f81d036b63625686',1,'photo_driver\__destruct()']]],
['_5fbuild_5fnodes',['_build_nodes',['../classTemplate.html#ac41c96e1f407b1a910029e5f4b7de8e4',1,'Template']]],
['_5fget_5fvar',['_get_var',['../classTemplate.html#aae9c4d761ea1298e745e8052d7910194',1,'Template']]],
diff --git a/doc/html/search/functions_61.js b/doc/html/search/functions_61.js
index 0eed6df8a..4c85f29be 100644
--- a/doc/html/search/functions_61.js
+++ b/doc/html/search/functions_61.js
@@ -4,7 +4,8 @@ var searchData=
['abook_5fself',['abook_self',['../Contact_8php.html#ad5b02c2a962ee55b1b7ca6c159d6e4c5',1,'Contact.php']]],
['abook_5ftoggle_5fflag',['abook_toggle_flag',['../Contact_8php.html#a024919623a830e8703ac4f23496dd66c',1,'Contact.php']]],
['absurl',['absurl',['../boot_8php.html#a081307d681d7d04f17b9ced2076e7c85',1,'boot.php']]],
- ['account_5fremove',['account_remove',['../Contact_8php.html#a6e64de7db60b7243dce45fb6347636ff',1,'Contact.php']]],
+ ['account_5fremove',['account_remove',['../Contact_8php.html#a5101d7eca5d6f387e5555f03fe249e33',1,'Contact.php']]],
+ ['account_5fservice_5fclass_5ffetch',['account_service_class_fetch',['../account_8php.html#a4328c40ee4b3d68630cf1ebb7b9d4d89',1,'account.php']]],
['account_5ftotal',['account_total',['../account_8php.html#a43e3042b2723d76915a030bac3c668b6',1,'account.php']]],
['account_5fverify_5fpassword',['account_verify_password',['../auth_8php.html#a07bae0e623e2daa9ee2cd5a8aa294dee',1,'auth.php']]],
['achievements_5fcontent',['achievements_content',['../achievements_8php.html#a35ae04ada0e227d19671f289a32fb30e',1,'achievements.php']]],
@@ -25,6 +26,8 @@ var searchData=
['admin_5fpage_5flogs',['admin_page_logs',['../admin_8php.html#a1d1362698af14d209aa3a0fb655551dd',1,'admin.php']]],
['admin_5fpage_5flogs_5fpost',['admin_page_logs_post',['../admin_8php.html#a233b7c8c31776b7020532003c6e44e1c',1,'admin.php']]],
['admin_5fpage_5fplugins',['admin_page_plugins',['../admin_8php.html#a54128076986ba80c4a103de3fc3e19a8',1,'admin.php']]],
+ ['admin_5fpage_5fprofs',['admin_page_profs',['../admin_8php.html#a3deba594ca1e11694eac1de0b724ef0a',1,'admin.php']]],
+ ['admin_5fpage_5fprofs_5fpost',['admin_page_profs_post',['../admin_8php.html#a278289bc6d45f6f2a272a7ab6a1d1057',1,'admin.php']]],
['admin_5fpage_5fsite',['admin_page_site',['../admin_8php.html#ac0f3bd12431c056aad77bac9d09fa30e',1,'admin.php']]],
['admin_5fpage_5fsite_5fpost',['admin_page_site_post',['../admin_8php.html#add865f4ae806ecbf716f423fc3e50e4f',1,'admin.php']]],
['admin_5fpage_5fsummary',['admin_page_summary',['../admin_8php.html#ac6e95b920b5abd030cc522964987087a',1,'admin.php']]],
@@ -68,6 +71,8 @@ var searchData=
['api_5ffriendica_5fversion',['api_friendica_version',['../include_2api_8php.html#a53b0680b682ae6078f2e1ed18cfb3f74',1,'api.php']]],
['api_5ffriends_5fids',['api_friends_ids',['../include_2api_8php.html#acafd2899309a005fcb725289173dc7fe',1,'api.php']]],
['api_5fget_5fuser',['api_get_user',['../include_2api_8php.html#aa40bae797bcd9ccacffdce5a3b5a1afa',1,'api.php']]],
+ ['api_5fgroup',['api_group',['../include_2api_8php.html#ad5fe62d6c25c86999f627b2e6cfde536',1,'api.php']]],
+ ['api_5fgroup_5fmembers',['api_group_members',['../include_2api_8php.html#ae46f964e5a9c80b96dc78df61c09ed3a',1,'api.php']]],
['api_5fhelp_5ftest',['api_help_test',['../include_2api_8php.html#ac5a64cc81d70ff3cf866093ea9721d23',1,'api.php']]],
['api_5fitem_5fget_5fuser',['api_item_get_user',['../include_2api_8php.html#aa49741342ad8ba285737eea1209a37e1',1,'api.php']]],
['api_5flogin',['api_login',['../include_2api_8php.html#afe534f826e4282b72d66e8cadca7bb73',1,'api.php']]],
@@ -75,6 +80,7 @@ var searchData=
['api_5foauth_5frequest_5ftoken',['api_oauth_request_token',['../include_2api_8php.html#aa1bddb580510e70cc1a7b7381667f1a3',1,'api.php']]],
['api_5fphotos',['api_photos',['../include_2api_8php.html#aa6fc3bc8c0fad1d081db0dcc456dd77f',1,'api.php']]],
['api_5fpost',['api_post',['../mod_2api_8php.html#a6fe77f05c07cb51048df0d557b4b9bd2',1,'api.php']]],
+ ['api_5fred_5fxchan',['api_red_xchan',['../include_2api_8php.html#a4fe872332ff0bd8d5eae2f0c6819cb60',1,'api.php']]],
['api_5fregister_5ffunc',['api_register_func',['../include_2api_8php.html#ac2c2b18c426d697d11a830bca146be8a',1,'api.php']]],
['api_5frss_5fextra',['api_rss_extra',['../include_2api_8php.html#a6a04b48168ba1d9dd2de3081a630611f',1,'api.php']]],
['api_5fstatus_5fshow',['api_status_show',['../include_2api_8php.html#a645397787618b5c548a31e8686e8cca4',1,'api.php']]],
diff --git a/doc/html/search/functions_62.js b/doc/html/search/functions_62.js
index 89de2a05c..47ba65793 100644
--- a/doc/html/search/functions_62.js
+++ b/doc/html/search/functions_62.js
@@ -3,9 +3,15 @@ var searchData=
['base64url_5fdecode',['base64url_decode',['../text_8php.html#a13286f8a95d2de6b102966ecc270c8d6',1,'text.php']]],
['base64url_5fencode',['base64url_encode',['../text_8php.html#a070384ec000fd65043fce11d5392d241',1,'text.php']]],
['bb2diaspora',['bb2diaspora',['../bb2diaspora_8php.html#a4f10e0876b27373c762bc1abbe745f5c',1,'bb2diaspora.php']]],
+ ['bb2diaspora_5fitembody',['bb2diaspora_itembody',['../bb2diaspora_8php.html#ab27761069ea1275f0fc4c543099c5519',1,'bb2diaspora.php']]],
+ ['bb2diaspora_5fitemwallwall',['bb2diaspora_itemwallwall',['../bb2diaspora_8php.html#aab32042f8bd63552d3fadeeae9eab083',1,'bb2diaspora.php']]],
+ ['bb2dmention_5fcallback',['bb2dmention_callback',['../bb2diaspora_8php.html#a5258d2f1addeb0a2a6b54c4f9e7d0f34',1,'bb2diaspora.php']]],
['bb_5flocation',['bb_location',['../bbcode_8php.html#a3435c82a6c7693557800cdeb6848d0bd',1,'bbcode.php']]],
+ ['bb_5fmap_5fcoords',['bb_map_coords',['../bbcode_8php.html#a02d5f2434e7bb5cf683e52a9b4787f24',1,'bbcode.php']]],
+ ['bb_5fmap_5flocation',['bb_map_location',['../bbcode_8php.html#a7cb403fd1c36d7376c2f3932a1ceb54d',1,'bbcode.php']]],
['bb_5fparse_5fapp',['bb_parse_app',['../bbcode_8php.html#abb02f1044ff1c635d12af690d0f2cfa2',1,'bbcode.php']]],
['bb_5fparse_5fcrypt',['bb_parse_crypt',['../bbcode_8php.html#a851f5aafefe52474201b83f9fd65931f',1,'bbcode.php']]],
+ ['bb_5fparse_5felement',['bb_parse_element',['../bbcode_8php.html#aa73fb62e7be1fa5fce4ad5f3d4487fc9',1,'bbcode.php']]],
['bb_5fqr',['bb_qr',['../bbcode_8php.html#a98d0eecc620c19561639f06cfbe8e74c',1,'bbcode.php']]],
['bb_5fsanitize_5fstyle',['bb_sanitize_style',['../bbcode_8php.html#a3a989cbf308a32468d171d83e9c51d1e',1,'bbcode.php']]],
['bb_5fshareattributes',['bb_ShareAttributes',['../bbcode_8php.html#a1c69e021d5e0aef97d6966bf3169c86a',1,'bbcode.php']]],
@@ -22,17 +28,12 @@ var searchData=
['block_5fcontent',['block_content',['../block_8php.html#a8a82a470acdfbc7a8e749509caeeea45',1,'block.php']]],
['block_5finit',['block_init',['../block_8php.html#a9b61c96044ed2a068f18c10370a78d5c',1,'block.php']]],
['blocks_5fcontent',['blocks_content',['../blocks_8php.html#a2531a8fd51db3cecb2eb20c002c66e12',1,'blocks.php']]],
- ['blog_5finit',['blog_init',['../blogga_2php_2theme_8php.html#aa55c1cb1f05087b5002ecb633b550b1b',1,'blog_init(&amp;$a):&#160;theme.php'],['../blogga_2view_2theme_2blog_2theme_8php.html#aa55c1cb1f05087b5002ecb633b550b1b',1,'blog_init(&amp;$a):&#160;theme.php']]],
- ['blog_5finstall',['blog_install',['../blogga_2view_2theme_2blog_2theme_8php.html#aae58cc837fe56473d9f3370abfe533ae',1,'theme.php']]],
- ['blog_5funinstall',['blog_uninstall',['../blogga_2view_2theme_2blog_2theme_8php.html#a3e77dbe111f330c64a1ff6c741cd515c',1,'theme.php']]],
- ['blogtheme_5fdisplay_5fitem',['blogtheme_display_item',['../blogga_2view_2theme_2blog_2theme_8php.html#a028ae8e9f2824670dfa76a6651d817e5',1,'theme.php']]],
- ['blogtheme_5fform',['blogtheme_form',['../view_2theme_2blogga_2php_2config_8php.html#a8a311a402d3e746ce53fadc38e4b2d27',1,'blogtheme_form(&amp;$a, $headimg, $headimghome):&#160;config.php'],['../view_2theme_2blogga_2view_2theme_2blog_2config_8php.html#a8a311a402d3e746ce53fadc38e4b2d27',1,'blogtheme_form(&amp;$a, $headimg, $headimghome):&#160;config.php']]],
- ['blogtheme_5fimgurl',['blogtheme_imgurl',['../blogga_2view_2theme_2blog_2theme_8php.html#af634a3f721c5e238530d0636d33230ec',1,'theme.php']]],
+ ['blocks_5finit',['blocks_init',['../blocks_8php.html#aebe88302181883d2b17d6e98a1aaebe9',1,'blocks.php']]],
['bookmark_5fadd',['bookmark_add',['../include_2bookmarks_8php.html#aef1cb2968c41c759f2d106e1088ca323',1,'bookmarks.php']]],
['bookmarks_5fcontent',['bookmarks_content',['../mod_2bookmarks_8php.html#a774364b1c8404529581083631703527a',1,'bookmarks.php']]],
['bookmarks_5finit',['bookmarks_init',['../mod_2bookmarks_8php.html#a6b7942f3d27e40f0f47c88704127b9b3',1,'bookmarks.php']]],
['breaklines',['breaklines',['../html2plain_8php.html#a3214912e3d00cf0a948072daccf16740',1,'html2plain.php']]],
['build_5fpagehead',['build_pagehead',['../classApp.html#a08f0537964d98958d218066364cff785',1,'App']]],
['build_5fquerystring',['build_querystring',['../boot_8php.html#a9cbab4ee728e9a8b4ce952bae643044e',1,'boot.php']]],
- ['build_5fsync_5fpacket',['build_sync_packet',['../zot_8php.html#ac34e479d27f32b82dd6b33542f81a6a7',1,'zot.php']]]
+ ['build_5fsync_5fpacket',['build_sync_packet',['../zot_8php.html#aa97b33b619dd7132a9274f852af6ceb5',1,'zot.php']]]
];
diff --git a/doc/html/search/functions_63.js b/doc/html/search/functions_63.js
index b4146ce82..45e867c89 100644
--- a/doc/html/search/functions_63.js
+++ b/doc/html/search/functions_63.js
@@ -3,16 +3,16 @@ var searchData=
['cal',['cal',['../datetime_8php.html#aea356409ba69f9de412298c998595dd2',1,'datetime.php']]],
['call_5fhooks',['call_hooks',['../plugin_8php.html#a7f05de16c0a32602853b09b99dd85e7c',1,'plugin.php']]],
['can_5fcomment_5fon_5fpost',['can_comment_on_post',['../items_8php.html#a1e75047cf175aaee8dd16aa761913ff9',1,'items.php']]],
+ ['catblock',['catblock',['../taxonomy_8php.html#aa8f8a1ff85daef046298e93c83e7a1b4',1,'taxonomy.php']]],
['categories_5fwidget',['categories_widget',['../contact__widgets_8php.html#a165eb021e61c4dcab2a552f28628d353',1,'contact_widgets.php']]],
['change_5fchannel',['change_channel',['../security_8php.html#a8d23d2597aae380a3341872fe9513380',1,'security.php']]],
['change_5fpermissions',['change_permissions',['../classProtoDriver.html#a34b97ca5ef2165f2e16eb2fe59ff6c67',1,'ProtoDriver\change_permissions()'],['../classZotDriver.html#a6776935156accb0f170e2e24577133db',1,'ZotDriver\change_permissions()']]],
['chanlink_5fcid',['chanlink_cid',['../text_8php.html#a85e3a4851c16674834010d8419a5d7ca',1,'text.php']]],
['chanlink_5fhash',['chanlink_hash',['../text_8php.html#a55ab893be57feda59c2a7ba1e58ff2d0',1,'text.php']]],
['chanlink_5furl',['chanlink_url',['../text_8php.html#a2e8d6c402603be3a1256a16605e09c2a',1,'text.php']]],
- ['chanman_5fremove_5feverything_5ffrom_5fnetwork',['chanman_remove_everything_from_network',['../include_2chanman_8php.html#a21ba9a5c961e866ff27aee3ee67bf99b',1,'chanman.php']]],
['channel_5fcontent',['channel_content',['../channel_8php.html#a9c6a6179e0e626398ebecc6151905ef1',1,'channel.php']]],
['channel_5finit',['channel_init',['../channel_8php.html#ac7c8c7845741baadf87fae6bc279f3dc',1,'channel.php']]],
- ['channel_5fremove',['channel_remove',['../Contact_8php.html#a186162051a5127069cc851d78740f205',1,'Contact.php']]],
+ ['channel_5fremove',['channel_remove',['../Contact_8php.html#a4e8af0f0525161da74583c04b8b03097',1,'Contact.php']]],
['channel_5ftotal',['channel_total',['../identity_8php.html#a77d2237f1846964634b1c99089c27c7d',1,'identity.php']]],
['channelx_5fby_5fhash',['channelx_by_hash',['../Contact_8php.html#a483cda56f9e37c3a4a8773dcdfeb0258',1,'Contact.php']]],
['channelx_5fby_5fn',['channelx_by_n',['../Contact_8php.html#a3a0844dac1e86d523de5d2f432cfeebc',1,'Contact.php']]],
@@ -27,6 +27,7 @@ var searchData=
['chatroom_5fenter',['chatroom_enter',['../include_2chat_8php.html#a2c95b545e46bfee64faa05ecf0afea91',1,'chat.php']]],
['chatroom_5fleave',['chatroom_leave',['../include_2chat_8php.html#a1ee1360f7d2549c7549ae07cb5190f0f',1,'chat.php']]],
['chatroom_5flist',['chatroom_list',['../include_2chat_8php.html#aedcb532a0627b8644001a2fadab4e87a',1,'chat.php']]],
+ ['chatroom_5flist_5fcount',['chatroom_list_count',['../include_2chat_8php.html#a26abdccc2a278a59899896dbbfc6f049',1,'chat.php']]],
['chatsvc_5fcontent',['chatsvc_content',['../chatsvc_8php.html#a7032784215e1f6747cf385a6598770f9',1,'chatsvc.php']]],
['chatsvc_5finit',['chatsvc_init',['../chatsvc_8php.html#a28d248b056fa47452e28ed01130e9116',1,'chatsvc.php']]],
['chatsvc_5fpost',['chatsvc_post',['../chatsvc_8php.html#a7c9a9b9c24a2b02eed8efd6b09632d03',1,'chatsvc.php']]],
@@ -49,19 +50,20 @@ var searchData=
['check_5fphp',['check_php',['../setup_8php.html#a14d208682a88632290c895d20da6e7d6',1,'setup.php']]],
['check_5fsmarty3',['check_smarty3',['../setup_8php.html#afd8b0b3ade1507c45325caf377bf459d',1,'setup.php']]],
['check_5fstore',['check_store',['../setup_8php.html#ab4b71369a25021d59247c917e98d8246',1,'setup.php']]],
+ ['check_5fupstream_5fdirectory',['check_upstream_directory',['../dir__fns_8php.html#a2f7d74bb2aea8bcd2537aee5c6708a16',1,'dir_fns.php']]],
['check_5fwall_5fto_5fwall',['check_wall_to_wall',['../classItem.html#abcdb0ea9bcd1576bc99bba9b8f700bb8',1,'Item']]],
['check_5fwebbie',['check_webbie',['../text_8php.html#a0c65597bb4aed3a039eb795ff540e5e3',1,'text.php']]],
- ['childexists',['childExists',['../classRedDirectory.html#a5e3fc08b2bf9f61cea4d2ccae0495bec',1,'RedDirectory']]],
+ ['childexists',['childExists',['../classRedMatrix_1_1RedDAV_1_1RedDirectory.html#a964b13fde1a5da6f76b51ca5519234dc',1,'RedMatrix::RedDAV::RedDirectory']]],
['clean_5furls',['clean_urls',['../boot_8php.html#ab79b8b4555cae20d03f8200666d89d63',1,'boot.php']]],
['clear',['clear',['../classCache.html#ab14d0f4bdf7116a94d545c574b38f568',1,'Cache']]],
['cleardiv',['cleardiv',['../text_8php.html#afe18627c4983ee5f7c940a0992818cd5',1,'text.php']]],
['cli_5fstartup',['cli_startup',['../cli__startup_8php.html#adfdde63686e33ccd4851fa5edc4fc70b',1,'cli_startup.php']]],
['cli_5fsuggest_5frun',['cli_suggest_run',['../cli__suggest_8php.html#a8f3a60fc96f4bec7d3837c4efc7725f2',1,'cli_suggest.php']]],
- ['close',['close',['../classdba__driver.html#a5afa54172f3c837df61643f8f5b2c975',1,'dba_driver\close()'],['../classdba__mysql.html#a850586714ef897bd25f643c89b4ef76e',1,'dba_mysql\close()'],['../classdba__mysqli.html#acb38f2c851187ad632ecfab30fdfab55',1,'dba_mysqli\close()']]],
- ['cloud_5finit',['cloud_init',['../cloud_8php.html#a1b79a6fe0454bc76673ad9aef55bf02d',1,'cloud.php']]],
+ ['close',['close',['../classdba__driver.html#a5afa54172f3c837df61643f8f5b2c975',1,'dba_driver\close()'],['../classdba__mysql.html#a850586714ef897bd25f643c89b4ef76e',1,'dba_mysql\close()'],['../classdba__mysqli.html#acb38f2c851187ad632ecfab30fdfab55',1,'dba_mysqli\close()'],['../classdba__postgres.html#a731d8648b41b8a126f6b99bdd5414058',1,'dba_postgres\close()']]],
+ ['cloud_5finit',['cloud_init',['../cloud_8php.html#ad2e96e917852f27dedfc263d37e13756',1,'cloud.php']]],
['collect',['collect',['../classProtoDriver.html#a2ba1758f0f9e3564580b6ff85292804d',1,'ProtoDriver\collect()'],['../classZotDriver.html#af65febb26031eb7f39871b9e2a539797',1,'ZotDriver\collect()']]],
['collect_5fprivate',['collect_private',['../classProtoDriver.html#af66171aa7dab9b62cee915cb4f1abe1b',1,'ProtoDriver\collect_private()'],['../classZotDriver.html#a2e15ff09772f0608203dad1c98299394',1,'ZotDriver\collect_private()']]],
- ['collect_5frecipients',['collect_recipients',['../items_8php.html#a01e3cf44e082fa9bd06dcde5bf713d70',1,'items.php']]],
+ ['collect_5frecipients',['collect_recipients',['../items_8php.html#a772f0ae77ad77c8ab68ed918a3870946',1,'items.php']]],
['collecturls',['collecturls',['../html2plain_8php.html#ae1c203d0f089d5678d73a6c64a395201',1,'html2plain.php']]],
['comanche_5fblock',['comanche_block',['../comanche_8php.html#a5a7ab801717d38e91ac910b933973887',1,'comanche.php']]],
['comanche_5fget_5fchannel_5fid',['comanche_get_channel_id',['../comanche_8php.html#aed39ecad69234f3ddf61f0dedb49a58e',1,'comanche.php']]],
@@ -71,6 +73,7 @@ var searchData=
['comanche_5freplace_5fregion',['comanche_replace_region',['../comanche_8php.html#a028f004d5b8c23d6367816d899e17cfe',1,'comanche.php']]],
['comanche_5fwebpage',['comanche_webpage',['../comanche_8php.html#ae9fe1ce574db3dd0931eada80234f82a',1,'comanche.php']]],
['comanche_5fwidget',['comanche_widget',['../comanche_8php.html#a6b0191c1a63db1696a2eb139d90d9e7f',1,'comanche.php']]],
+ ['comments_5fare_5fnow_5fclosed',['comments_are_now_closed',['../items_8php.html#abeb7886cde44d9a83dbaf2bc4ab18723',1,'items.php']]],
['common_5fcontent',['common_content',['../common_8php.html#ab63408f39abef7a6915186e8dabc5a96',1,'common.php']]],
['common_5ffriends',['common_friends',['../socgraph_8php.html#a7d34cd58025bcd9e575282f44db75918',1,'socgraph.php']]],
['common_5ffriends_5fvisitor_5fwidget',['common_friends_visitor_widget',['../contact__widgets_8php.html#a552f8544528cec0c995cea7287ea9d65',1,'contact_widgets.php']]],
@@ -78,7 +81,8 @@ var searchData=
['common_5finit',['common_init',['../common_8php.html#aca62f113655809f41f49042ce9b123c2',1,'common.php']]],
['compare_5fpermissions',['compare_permissions',['../items_8php.html#a0790a4550b829e85504af548623002ca',1,'items.php']]],
['completeurl',['completeurl',['../parse__url_8php.html#a496f4e3836154f6f32b8e805a7160d3a',1,'parse_url.php']]],
- ['connect',['connect',['../classdba__driver.html#ae533e62a240a793f17aef5ab4ef10edc',1,'dba_driver\connect()'],['../classdba__mysql.html#a1887338627ce0e28786839363014bd0b',1,'dba_mysql\connect()'],['../classdba__mysqli.html#add062bd93961e5f0194d94820e9a51b1',1,'dba_mysqli\connect()']]],
+ ['concat',['concat',['../classdba__driver.html#ab9982f38a02f008b127a0f3ccc1e99f4',1,'dba_driver\concat()'],['../classdba__postgres.html#a7ea3f24ad260c1e21588f8b5af595caa',1,'dba_postgres\concat()']]],
+ ['connect',['connect',['../classdba__driver.html#ae533e62a240a793f17aef5ab4ef10edc',1,'dba_driver\connect()'],['../classdba__mysql.html#a1887338627ce0e28786839363014bd0b',1,'dba_mysql\connect()'],['../classdba__mysqli.html#add062bd93961e5f0194d94820e9a51b1',1,'dba_mysqli\connect()'],['../classdba__postgres.html#ab36244320f5b71dba92d9318ccf3f34e',1,'dba_postgres\connect()']]],
['connect_5fcontent',['connect_content',['../connect_8php.html#a489f0a66c660de6ec4d6917b27674f07',1,'connect.php']]],
['connect_5finit',['connect_init',['../connect_8php.html#ad46a38f32fd7a3d324b1fa26373efa36',1,'connect.php']]],
['connect_5fpost',['connect_post',['../connect_8php.html#a417ec27afe33f21a929667a665e32ee2',1,'connect.php']]],
@@ -94,27 +98,30 @@ var searchData=
['construct_5factivity_5ftarget',['construct_activity_target',['../items_8php.html#aa579bc4445d60098b1410961ca8e96b7',1,'items.php']]],
['construct_5fpage',['construct_page',['../boot_8php.html#acc4e0c910af066148b810e5fde55fff1',1,'boot.php']]],
['construct_5fverb',['construct_verb',['../items_8php.html#a8f3c85c584ccd2b98c3ca440e45b40f8',1,'items.php']]],
- ['consume_5ffeed',['consume_feed',['../items_8php.html#a8794863cdf8ce1333040933d3a3f66bd',1,'items.php']]],
+ ['consume_5ffeed',['consume_feed',['../items_8php.html#adc26e08aa61f5666da04ab5d2a9d68a6',1,'items.php']]],
['contact_5fblock',['contact_block',['../text_8php.html#ad6432621d0fafcbcf3d3b9b49bef7784',1,'text.php']]],
['contact_5fpoll_5finterval',['contact_poll_interval',['../contact__selectors_8php.html#a9839e8fdaac7ffb37bf1420493f5c28f',1,'contact_selectors.php']]],
['contact_5fprofile_5fassign',['contact_profile_assign',['../contact__selectors_8php.html#a2c743d2eb526eb758d943a1490162d75',1,'contact_selectors.php']]],
['contact_5fremove',['contact_remove',['../Contact_8php.html#a28e062c884331dbb5dfa713228c25ad6',1,'Contact.php']]],
- ['contact_5freputation',['contact_reputation',['../contact__selectors_8php.html#ae499960d6467bd30c78607b1018baf53',1,'contact_selectors.php']]],
['contact_5fselect',['contact_select',['../acl__selectors_8php.html#a9476997d2968a5794f3723878ed89c91',1,'acl_selectors.php']]],
['contactgroup_5fcontent',['contactgroup_content',['../contactgroup_8php.html#a18c7391b1b25debaf98c9dba639caab3',1,'contactgroup.php']]],
['conv_5fsort',['conv_sort',['../conversation_8php.html#abed85a41f1160598de880b84021c9cf7',1,'conversation.php']]],
['conversation',['conversation',['../conversation_8php.html#affea1afb3f32ca41e966c8ddb4204d81',1,'conversation.php']]],
['convert',['convert',['../namespacefriendica-to-smarty-tpl.html#a38503e37fe68ac27c88cce91a9ac9efa',1,'friendica-to-smarty-tpl']]],
+ ['convert_5fchild',['convert_child',['../classRedMatrix_1_1Import_1_1Import.html#a5434325afb2c633c52540127d717800a',1,'RedMatrix::Import::Import']]],
+ ['convert_5fitem',['convert_item',['../classRedMatrix_1_1Import_1_1Import.html#a107703a43a1b0ceb2af7ae470cb3f218',1,'RedMatrix::Import::Import']]],
+ ['convert_5ftaxonomy',['convert_taxonomy',['../classRedMatrix_1_1Import_1_1Import.html#addf6e53dacd971eaab49be4b17a767d6',1,'RedMatrix::Import::Import']]],
['convert_5fxml_5felement_5fto_5farray',['convert_xml_element_to_array',['../include_2network_8php.html#ad4056d3ce69988f5c1a997a79f503246',1,'network.php']]],
['count_5fall_5ffriends',['count_all_friends',['../socgraph_8php.html#af29d056beec10b4e38e5209c92452894',1,'socgraph.php']]],
['count_5fcommon_5ffriends',['count_common_friends',['../socgraph_8php.html#a887d576f21fd708132a06d0f72f90f84',1,'socgraph.php']]],
['count_5fcommon_5ffriends_5fzcid',['count_common_friends_zcid',['../socgraph_8php.html#af175807406d94407a5e11742a3287746',1,'socgraph.php']]],
['count_5fdescendants',['count_descendants',['../classItem.html#aca1e66988ed00cd627b2a359b72cd0ae',1,'Item\count_descendants()'],['../conversation_8php.html#ab2383dff4f823e580399ff469d90ab19',1,'count_descendants():&#160;conversation.php']]],
+ ['count_5funseen_5fdescendants',['count_unseen_descendants',['../classItem.html#ae0c48b2fed5558642549cabd547fc4f3',1,'Item']]],
['create_5faccount',['create_account',['../account_8php.html#a141fe579c351c78209d425473f978eb5',1,'account.php']]],
['create_5fidentity',['create_identity',['../identity_8php.html#a345f4c943d84de502ec6e72d2c813945',1,'identity.php']]],
['create_5fsys_5fchannel',['create_sys_channel',['../identity_8php.html#a1cf83ac2b645de12868edaa3a5718f05',1,'identity.php']]],
- ['createdirectory',['createDirectory',['../classRedDirectory.html#a986936910f0216887a25e28916c166c7',1,'RedDirectory']]],
- ['createfile',['createFile',['../classRedDirectory.html#a2d12d99d38a6a75fc9a830b2f7fc0bf0',1,'RedDirectory']]],
+ ['createdirectory',['createDirectory',['../classRedMatrix_1_1RedDAV_1_1RedDirectory.html#aca0e8d574ea66a0e210f571700663c62',1,'RedMatrix::RedDAV::RedDirectory']]],
+ ['createfile',['createFile',['../classRedMatrix_1_1RedDAV_1_1RedDirectory.html#a58e750256cdc2f0f79fbe8d5463ffefe',1,'RedMatrix::RedDAV::RedDirectory']]],
['cronhooks_5frun',['cronhooks_run',['../cronhooks_8php.html#a4c4c1bbec4ecc9a0efa00dd6afd2c0ca',1,'cronhooks.php']]],
['cropimage',['cropImage',['../classphoto__driver.html#a2e6e61f1e356a90bc978f4404a77137e',1,'photo_driver\cropImage()'],['../classphoto__gd.html#ab2232d775c8bacf66773a03308105f0c',1,'photo_gd\cropImage()'],['../classphoto__imagick.html#a2f33a03a89497a2b2768e29736d4a8a4',1,'photo_imagick\cropImage()']]],
['crypto_5fencapsulate',['crypto_encapsulate',['../crypto_8php.html#a32fc08d57a5694f94d8543ecbb03323c',1,'crypto.php']]],
diff --git a/doc/html/search/functions_64.js b/doc/html/search/functions_64.js
index 5bd3d7e2b..ba2666498 100644
--- a/doc/html/search/functions_64.js
+++ b/doc/html/search/functions_64.js
@@ -1,34 +1,78 @@
var searchData=
[
- ['datesel',['datesel',['../datetime_8php.html#ac265b86f384ee094ed5479aae02aa5c8',1,'datetime.php']]],
- ['datesel_5fformat',['datesel_format',['../datetime_8php.html#a5f29553799005b1fd4e9ce9d98ce05aa',1,'datetime.php']]],
+ ['datesel',['datesel',['../datetime_8php.html#a77bb385ae8a9e7ca663309c102c0d766',1,'datetime.php']]],
['datetime_5fconvert',['datetime_convert',['../datetime_8php.html#ad6301e74b0f9267d52f8d432b5beb226',1,'datetime.php']]],
+ ['datetimesel',['datetimesel',['../datetime_8php.html#a72218e5ee21876484934bacbb6bd9ba3',1,'datetime.php']]],
['day_5ftranslate',['day_translate',['../text_8php.html#a63fb21c0bed2fc72eef2c1471ac42b63',1,'text.php']]],
- ['dba_5ffactory',['dba_factory',['../dba__driver_8php.html#ac10e60f6e5b95bcf67bd82cb88f37947',1,'dba_driver.php']]],
+ ['db_5fconcat',['db_concat',['../dba__driver_8php.html#a7c1b98a710ead27382c958ad3216c4ee',1,'dba_driver.php']]],
+ ['db_5fgetfunc',['db_getfunc',['../dba__driver_8php.html#a2994daa03b1c23229a27e39bcab75e67',1,'dba_driver.php']]],
+ ['db_5foptimizetable',['db_optimizetable',['../dba__driver_8php.html#a75098bf1d59ea57f7ebae657a369137e',1,'dba_driver.php']]],
+ ['db_5fquoteinterval',['db_quoteinterval',['../dba__driver_8php.html#acec84a8fb75d78daf657cbe5df74e25a',1,'dba_driver.php']]],
+ ['db_5futcnow',['db_utcnow',['../dba__driver_8php.html#a30e9a643be804e905f5614a3279d2645',1,'dba_driver.php']]],
+ ['dba_5ffactory',['dba_factory',['../dba__driver_8php.html#a5df8499634c47b30191f34069d7b98c0',1,'dba_driver.php']]],
['dba_5ftimer',['dba_timer',['../boot_8php.html#a3e0930933fb2c0bf8211cc7ab4e1c3b4',1,'boot.php']]],
['dbesc',['dbesc',['../dba__driver_8php.html#ab222aa1dbf9ea93b320f82028739127e',1,'dba_driver.php']]],
['dbesc_5farray',['dbesc_array',['../dba__driver_8php.html#a65b83462bd26968106aebd43f16540e4',1,'dba_driver.php']]],
['dbesc_5farray_5fcb',['dbesc_array_cb',['../dba__driver_8php.html#af531546fac5f0836a8557a4f6dfee930',1,'dba_driver.php']]],
+ ['dbesc_5fidentifier',['dbesc_identifier',['../dba__driver_8php.html#aa051799567690a124a3b865bf902f58a',1,'dba_driver.php']]],
+ ['dbescbin',['dbescbin',['../dba__driver_8php.html#a2a38996670c2936b5769270c49c57593',1,'dba_driver.php']]],
+ ['dbescdate',['dbescdate',['../dba__driver_8php.html#a2c8a72ec73f39b17a167c90737693f78',1,'dba_driver.php']]],
['dbg',['dbg',['../classdba__driver.html#adcc1f8955120fec0708bce39202d0422',1,'dba_driver\dbg()'],['../dba__driver_8php.html#aa6607893d8f60ade9122bcfbd1a53ffb',1,'dbg():&#160;dba_driver.php']]],
['dbq',['dbq',['../dba__driver_8php.html#aa377074e70981e8c4e82ca0accd068ee',1,'dba_driver.php']]],
+ ['dbunescbin',['dbunescbin',['../dba__driver_8php.html#afaaa1a7eff9c1b65b3b8c464ae37640e',1,'dba_driver.php']]],
['decode_5ftags',['decode_tags',['../items_8php.html#a56b2a4abcadfac71175cd50555528cc3',1,'items.php']]],
['del_5fconfig',['del_config',['../include_2config_8php.html#a549910227348003efc3c05c9105c42da',1,'config.php']]],
['del_5fpconfig',['del_pconfig',['../include_2config_8php.html#a7ad2081c5f812ac4387fd76f3762d941',1,'config.php']]],
['del_5fxconfig',['del_xconfig',['../include_2config_8php.html#a9c171def547deee16738dc58fdeb4b72',1,'config.php']]],
['delegate_5fcontent',['delegate_content',['../delegate_8php.html#a943eea8996ef348eb845c498f9f354dd',1,'delegate.php']]],
- ['delete',['delete',['../classRedFile.html#aef71c9eaac7052be7dc8602eb12171e7',1,'RedFile']]],
+ ['delete',['delete',['../classRedMatrix_1_1RedDAV_1_1RedFile.html#ab7ab7ba81fab28eb02382cfdfd80ecfe',1,'RedMatrix::RedDAV::RedFile']]],
['delete_5fimported_5fitem',['delete_imported_item',['../zot_8php.html#adfeb9400ae6b726beec89f8f1e8fde72',1,'zot.php']]],
['delete_5fitem_5flowlevel',['delete_item_lowlevel',['../items_8php.html#aac8c9eb4338e2a996c43914392c6cfdb',1,'items.php']]],
['deletenode',['deletenode',['../html2bbcode_8php.html#a71a07f135d196ec5943b13f7b2e6a9b2',1,'html2bbcode.php']]],
['deliver',['deliver',['../classProtoDriver.html#a85e9063f6d0c304410cd246f7900ea1b',1,'ProtoDriver\deliver()'],['../classZotDriver.html#a876e3e0e4cad83c0b58c8696b344be6f',1,'ZotDriver\deliver()']]],
['deliver_5fprivate',['deliver_private',['../classProtoDriver.html#ae5b44739f84c10d00a9b65adf3785181',1,'ProtoDriver\deliver_private()'],['../classZotDriver.html#afaaf9941169fc966e43e25b25e6daea6',1,'ZotDriver\deliver_private()']]],
['deliver_5frun',['deliver_run',['../deliver_8php.html#a397afcb9afecf0c1816b0951189dd346',1,'deliver.php']]],
+ ['dertopem',['DerToPem',['../crypto_8php.html#a630e1574554f34e7c38511585d9e71a2',1,'crypto.php']]],
+ ['dertorsa',['DerToRsa',['../crypto_8php.html#ae5af17db1cb5d7c91d486e1264079839',1,'crypto.php']]],
['design_5ftools',['design_tools',['../text_8php.html#a87a3cefc603302c78982f1d8e1245265',1,'text.php']]],
['destroy',['destroy',['../classphoto__driver.html#ae1a9edaf846983780dc65ea77d99e813',1,'photo_driver\destroy()'],['../classphoto__gd.html#a724703ecf71b1f1d04a80e86c76db6b1',1,'photo_gd\destroy()'],['../classphoto__imagick.html#afd49d64751ee3a298eac0c0ce0ba0207',1,'photo_imagick\destroy()']]],
['detect_5flanguage',['detect_language',['../language_8php.html#a632da17c7ac0d2dc1a00a4706870194b',1,'language.php']]],
['diaspora2bb',['diaspora2bb',['../bb2diaspora_8php.html#ac9061ee10fcfcdac69566b649614e625',1,'bb2diaspora.php']]],
+ ['diaspora_5fasphoto',['diaspora_asphoto',['../diaspora_8php.html#a006731620a5242d410358b32678e48e3',1,'diaspora.php']]],
+ ['diaspora_5fcomment',['diaspora_comment',['../diaspora_8php.html#a0fb2abe304aae19efc040a5e6b917829',1,'diaspora.php']]],
+ ['diaspora_5fconversation',['diaspora_conversation',['../diaspora_8php.html#adef30b6fac948baedcc7194d5d155b5f',1,'diaspora.php']]],
+ ['diaspora_5fdecode',['diaspora_decode',['../diaspora_8php.html#a849754ec369e1a60fadae5c14584ca36',1,'diaspora.php']]],
+ ['diaspora_5fdispatch',['diaspora_dispatch',['../diaspora_8php.html#a6f0a67b6b17503c125af32763be931b7',1,'diaspora.php']]],
+ ['diaspora_5fdispatch_5fpublic',['diaspora_dispatch_public',['../diaspora_8php.html#ab99505944728d46585b8312989de533d',1,'diaspora.php']]],
+ ['diaspora_5fget_5fcontact_5fby_5fhandle',['diaspora_get_contact_by_handle',['../diaspora_8php.html#aa8e551a53fcce34be3942d0c3e20d1f4',1,'diaspora.php']]],
+ ['diaspora_5fhandle_5ffrom_5fcontact',['diaspora_handle_from_contact',['../diaspora_8php.html#a5ed66b910d7b0284f9b3ee04e72306ff',1,'diaspora.php']]],
+ ['diaspora_5fis_5fblacklisted',['diaspora_is_blacklisted',['../diaspora_8php.html#a858f70153c384f8778082cf7843a19da',1,'diaspora.php']]],
+ ['diaspora_5fis_5freshare',['diaspora_is_reshare',['../diaspora_8php.html#ad9985cc4214bdfc14878785c838c8690',1,'diaspora.php']]],
+ ['diaspora_5flike',['diaspora_like',['../diaspora_8php.html#a5d57518545baa31cf8a85a937a267681',1,'diaspora.php']]],
+ ['diaspora_5fmention_5fcallback',['diaspora_mention_callback',['../bb2diaspora_8php.html#a4a27604f0745f1efda672966aaca9a3b',1,'bb2diaspora.php']]],
+ ['diaspora_5fmessage',['diaspora_message',['../diaspora_8php.html#a7cff2f8f11044c1b3a360f20e1bbee46',1,'diaspora.php']]],
+ ['diaspora_5fmsg_5fbuild',['diaspora_msg_build',['../diaspora_8php.html#a4901762cba5cd8dcdc57bdf285eefb1b',1,'diaspora.php']]],
['diaspora_5fol',['diaspora_ol',['../bb2diaspora_8php.html#a8b96bd45884fa1c40b942939354197d4',1,'bb2diaspora.php']]],
+ ['diaspora_5fphoto',['diaspora_photo',['../diaspora_8php.html#a71fe9bb66626b4197ae018a230778bb2',1,'diaspora.php']]],
+ ['diaspora_5fpost',['diaspora_post',['../diaspora_8php.html#a20b968d64ef26afe5cb0cc75a7570a31',1,'diaspora.php']]],
+ ['diaspora_5fprocess_5foutbound',['diaspora_process_outbound',['../diaspora_8php.html#a131abd521b218d6ae6f7d2917d8b2605',1,'diaspora.php']]],
+ ['diaspora_5fprofile',['diaspora_profile',['../diaspora_8php.html#a900abf51398b2ef26cd2cd31c52f1b0f',1,'diaspora.php']]],
+ ['diaspora_5fpubmsg_5fbuild',['diaspora_pubmsg_build',['../diaspora_8php.html#a586d5a3ba92d35cee14f879f290072aa',1,'diaspora.php']]],
+ ['diaspora_5frequest',['diaspora_request',['../diaspora_8php.html#ac1ab782a34552a7c6b4dc961754ed598',1,'diaspora.php']]],
+ ['diaspora_5freshare',['diaspora_reshare',['../diaspora_8php.html#a2bf43f6b5890897f425ef4325d34b007',1,'diaspora.php']]],
+ ['diaspora_5fretraction',['diaspora_retraction',['../diaspora_8php.html#a938c7ee808d38725c0988fa6006805b9',1,'diaspora.php']]],
+ ['diaspora_5fsend_5ffollowup',['diaspora_send_followup',['../diaspora_8php.html#af4698b165766f83d89ec1ea964bc92cc',1,'diaspora.php']]],
+ ['diaspora_5fsend_5fimages',['diaspora_send_images',['../diaspora_8php.html#ae6f52efd81fe515cd9912bc8293abf5b',1,'diaspora.php']]],
+ ['diaspora_5fsend_5fmail',['diaspora_send_mail',['../diaspora_8php.html#aeb2bb78f620dbf51d9335e6eb7444f2c',1,'diaspora.php']]],
+ ['diaspora_5fsend_5frelay',['diaspora_send_relay',['../diaspora_8php.html#a0b3628a5e53332c3d3196b689fe2b94d',1,'diaspora.php']]],
+ ['diaspora_5fsend_5fretraction',['diaspora_send_retraction',['../diaspora_8php.html#a1704748aa2384c73e43f10e71defd31a',1,'diaspora.php']]],
+ ['diaspora_5fsend_5fstatus',['diaspora_send_status',['../diaspora_8php.html#a33ae0c4606a7df4d801c05507d87f668',1,'diaspora.php']]],
+ ['diaspora_5fshare',['diaspora_share',['../diaspora_8php.html#a69f250b078a46e405647428ec3399a16',1,'diaspora.php']]],
+ ['diaspora_5fsigned_5fretraction',['diaspora_signed_retraction',['../diaspora_8php.html#aa34d2748bb97e9e193cacd572f335055',1,'diaspora.php']]],
+ ['diaspora_5ftransmit',['diaspora_transmit',['../diaspora_8php.html#aa704d6aa2ac77be345c0f501168e6e56',1,'diaspora.php']]],
['diaspora_5ful',['diaspora_ul',['../bb2diaspora_8php.html#adc92ccda5f85ed27e64fcc17712c89cc',1,'bb2diaspora.php']]],
+ ['diaspora_5funshare',['diaspora_unshare',['../diaspora_8php.html#ab736d6f32b5de31c97cb579fc730e200',1,'diaspora.php']]],
+ ['dir_5fflag_5fbuild',['dir_flag_build',['../dirsearch_8php.html#ab6d5fefa98da249a994b910434a669c2',1,'dirsearch.php']]],
['dir_5fparse_5fquery',['dir_parse_query',['../dirsearch_8php.html#a7d4cd9890d5ed23c3efc58e2a778a305',1,'dirsearch.php']]],
['dir_5fquery_5fbuild',['dir_query_build',['../dirsearch_8php.html#a52bcac49b0e35cc8c6b70066143c2ee2',1,'dirsearch.php']]],
['dir_5fsafe_5fmode',['dir_safe_mode',['../dir__fns_8php.html#acf621621e929d49441da30aad76a58cf',1,'dir_fns.php']]],
@@ -38,10 +82,11 @@ var searchData=
['directory_5fcontent',['directory_content',['../mod_2directory_8php.html#aac79396570d759da2efac24fcedf5b44',1,'directory.php']]],
['directory_5finit',['directory_init',['../mod_2directory_8php.html#a5ee59c213508b6b9787612a8219cb5bf',1,'directory.php']]],
['directory_5frun',['directory_run',['../include_2directory_8php.html#aa75d3b0697ca1456aaabdb37a74aa0f0',1,'directory.php']]],
- ['dirprofile_5finit',['dirprofile_init',['../dirprofile_8php.html#a3e1d30d3d93863ff5615f2df4ac7f052',1,'dirprofile.php']]],
['dirsearch_5fcontent',['dirsearch_content',['../dirsearch_8php.html#aa1fb04e1de4f25b63349ac78f94ceb4c',1,'dirsearch.php']]],
['dirsearch_5finit',['dirsearch_init',['../dirsearch_8php.html#a3e51964ae3f5ff147403407b65324752',1,'dirsearch.php']]],
['discover',['discover',['../classProtoDriver.html#a64a3868cffe27d601d55f69a2ecc4337',1,'ProtoDriver\discover()'],['../classZotDriver.html#a40d328ff9f6b0a238afe286dddee1514',1,'ZotDriver\discover()']]],
+ ['discover_5fby_5furl',['discover_by_url',['../include_2network_8php.html#a5176176ddc1906d91f186df6fbd87b48',1,'network.php']]],
+ ['discover_5fby_5fwebbie',['discover_by_webbie',['../include_2network_8php.html#a63e62946e194928eb17c5a9f2bbef0fe',1,'network.php']]],
['display_5fcontent',['display_content',['../display_8php.html#a37137c98d47bf3306f4c2bb9f5b60de0',1,'display.php']]],
['dlogger',['dlogger',['../text_8php.html#a0a1f7c0e97f9ecbebf3e5834582b014c',1,'text.php']]],
['dob',['dob',['../datetime_8php.html#a3f2897db32e745fe2f3e70a6b46578f8',1,'datetime.php']]],
diff --git a/doc/html/search/functions_65.js b/doc/html/search/functions_65.js
index 8424dbba4..e912fd337 100644
--- a/doc/html/search/functions_65.js
+++ b/doc/html/search/functions_65.js
@@ -1,20 +1,25 @@
var searchData=
[
['editblock_5fcontent',['editblock_content',['../editblock_8php.html#abbe8f55de06967bc8d79d620509a49e6',1,'editblock.php']]],
+ ['editblock_5finit',['editblock_init',['../editblock_8php.html#ab7806bb42ae5e93f0330d7bd179d4b3e',1,'editblock.php']]],
['editlayout_5fcontent',['editlayout_content',['../editlayout_8php.html#aa877e4157a26b099de904164181dd386',1,'editlayout.php']]],
+ ['editlayout_5finit',['editlayout_init',['../editlayout_8php.html#a97c1e93d9e75ad8cd2c2f9a7f77341a7',1,'editlayout.php']]],
['editpost_5fcontent',['editpost_content',['../editpost_8php.html#a34011690864d122680c802e9e748ccfb',1,'editpost.php']]],
['editwebpage_5fcontent',['editwebpage_content',['../editwebpage_8php.html#a375e945255fad79a71036528f7480650',1,'editwebpage.php']]],
+ ['editwebpage_5finit',['editwebpage_init',['../editwebpage_8php.html#a94109f9c796fbe92508bf9574e35d19f',1,'editwebpage.php']]],
['email_5fheader_5fencode',['email_header_encode',['../include_2network_8php.html#a469b9bd700269cd07d954f1a16c5899b',1,'network.php']]],
['email_5fsend',['email_send',['../include_2network_8php.html#a1ff07d9fad93b713b93da0ab77aab7f0',1,'network.php']]],
- ['encode_5fitem',['encode_item',['../items_8php.html#a82955cc578f0fa600acec84475026194',1,'items.php']]],
+ ['encode_5fitem',['encode_item',['../items_8php.html#a56b0f5d2cb36eb8f4bfca84813884f86',1,'items.php']]],
['encode_5fitem_5fflags',['encode_item_flags',['../items_8php.html#a5f690fc2484abec07840b4f9dd525bd9',1,'items.php']]],
['encode_5fitem_5fterms',['encode_item_terms',['../items_8php.html#ac6673627d289ee4f547de0fe3b7acd0a',1,'items.php']]],
['encode_5fitem_5fxchan',['encode_item_xchan',['../items_8php.html#a566c601726697e044e75284af7fb6f17',1,'items.php']]],
['encode_5fmail',['encode_mail',['../items_8php.html#a2d840c74ed23d1b6c7daee05cf89dda7',1,'items.php']]],
['encode_5frel_5flinks',['encode_rel_links',['../items_8php.html#aa723c0571e314a1853a24c5854b4f54f',1,'items.php']]],
['enumerate_5fpermissions',['enumerate_permissions',['../items_8php.html#afbcf26dfcf8a83fff952aa858c1b7b67',1,'items.php']]],
- ['escape',['escape',['../classdba__driver.html#afc95ffa103a3290581b537670cde5311',1,'dba_driver\escape()'],['../classdba__mysql.html#a99a7691ea6cb1300031fb6549379066e',1,'dba_mysql\escape()'],['../classdba__mysqli.html#a27d6a748af7f80028801306e7ea33f64',1,'dba_mysqli\escape()']]],
+ ['escape',['escape',['../classdba__driver.html#afc95ffa103a3290581b537670cde5311',1,'dba_driver\escape()'],['../classdba__mysql.html#a99a7691ea6cb1300031fb6549379066e',1,'dba_mysql\escape()'],['../classdba__mysqli.html#a27d6a748af7f80028801306e7ea33f64',1,'dba_mysqli\escape()'],['../classdba__postgres.html#a7108eaaae7cc2fb236212041afc9ac0f',1,'dba_postgres\escape()']]],
+ ['escape_5fidentifier',['escape_identifier',['../classdba__postgres.html#ab2e44e9f41d05e585afd873d18e8c127',1,'dba_postgres']]],
['escape_5ftags',['escape_tags',['../text_8php.html#aa5148a0dfea2a1ca64c3d52f10aa2d64',1,'text.php']]],
+ ['escapebin',['escapebin',['../classdba__driver.html#a7dbe8318587ff1694825042bf58f4fbd',1,'dba_driver\escapebin()'],['../classdba__postgres.html#a8d2c6d8c92fe6f074452876483dd17fc',1,'dba_postgres\escapebin()']]],
['ev_5fcompare',['ev_compare',['../event_8php.html#a32ba1b9ddf7a744a9a1512b052e5f850',1,'event.php']]],
['event_5faddtocal',['event_addtocal',['../event_8php.html#ac9f206819186b65952ac1869f0da8c6e',1,'event.php']]],
['event_5fstore_5fevent',['event_store_event',['../event_8php.html#af5ac41e7ea3f7131088fe6333fd2846c',1,'event.php']]],
@@ -24,5 +29,6 @@ var searchData=
['expand_5facl',['expand_acl',['../text_8php.html#ae4282a39492caa23ccbc2ce98e54f110',1,'text.php']]],
['expand_5fgroups',['expand_groups',['../include_2group_8php.html#a22a81875259c7d3d64d4848afea6b345',1,'group.php']]],
['expire_5frun',['expire_run',['../expire_8php.html#a444e45c9b67727b27db4c779fd51a298',1,'expire.php']]],
- ['externals_5frun',['externals_run',['../externals_8php.html#a4df44079e6f915286088b7a0d44db926',1,'externals.php']]]
+ ['externals_5frun',['externals_run',['../externals_8php.html#a4df44079e6f915286088b7a0d44db926',1,'externals.php']]],
+ ['extra_5fquery_5fargs',['extra_query_args',['../text_8php.html#a3ba47b4dd1248e7e51095572e7b814dc',1,'text.php']]]
];
diff --git a/doc/html/search/functions_66.js b/doc/html/search/functions_66.js
index 9bdc952d0..7f97017bd 100644
--- a/doc/html/search/functions_66.js
+++ b/doc/html/search/functions_66.js
@@ -7,7 +7,7 @@ var searchData=
['feed_5fsalmonlinks',['feed_salmonlinks',['../text_8php.html#a89929fa6f70a8ba54d5273fcf622b665',1,'text.php']]],
['fetch_5flrdd_5ftemplate',['fetch_lrdd_template',['../include_2network_8php.html#a8d5a3afb51cc932032b5dcc159efaae0',1,'network.php']]],
['fetch_5fpost_5ftags',['fetch_post_tags',['../items_8php.html#adf980098b6de9c3993bc3ff26a8dd6f9',1,'items.php']]],
- ['field_5ftimezone',['field_timezone',['../datetime_8php.html#a03900dcf0f9e3c58793a031673a70326',1,'datetime.php']]],
+ ['fetch_5fxrd_5flinks',['fetch_xrd_links',['../include_2network_8php.html#a850ed5307c6a18076f4b80addc99602d',1,'network.php']]],
['file_5ftag_5fdecode',['file_tag_decode',['../taxonomy_8php.html#a08df5164926d2b31b8e9fcfe919de2b6',1,'taxonomy.php']]],
['file_5ftag_5fencode',['file_tag_encode',['../taxonomy_8php.html#a3299482ac20e9d79453048dd52881d37',1,'taxonomy.php']]],
['file_5ftag_5ffile_5fquery',['file_tag_file_query',['../taxonomy_8php.html#a163b5131f388080b0fc82398d3a32fe1',1,'taxonomy.php']]],
@@ -16,13 +16,15 @@ var searchData=
['filerm_5fcontent',['filerm_content',['../filerm_8php.html#ae2eb28d2054fa2c37e38689882172208',1,'filerm.php']]],
['filestorage_5fcontent',['filestorage_content',['../filestorage_8php.html#a61bb1be78472555df4ce619f51014040',1,'filestorage.php']]],
['filestorage_5fpost',['filestorage_post',['../filestorage_8php.html#ad3b64e3ece9831f9d3a9f00c0ae983cd',1,'filestorage.php']]],
+ ['filter_5finsecure',['filter_insecure',['../items_8php.html#a8cda98925a4c5c2f6dade70d9586d79a',1,'items.php']]],
+ ['find_5fdiaspora_5fperson_5fby_5fhandle',['find_diaspora_person_by_handle',['../diaspora_8php.html#aade0c165fcdded71352c7a67bf6ce37b',1,'diaspora.php']]],
['find_5ffilename_5fby_5fhash',['find_filename_by_hash',['../include_2attach_8php.html#a4dbfd7e1cef52aa9ef52f4b88929fa86',1,'attach.php']]],
['find_5ffolder_5fhash_5fby_5fattach_5fhash',['find_folder_hash_by_attach_hash',['../include_2attach_8php.html#a052f14487ff2ce72f62a09fac8d7e997',1,'attach.php']]],
['find_5fthread_5fparent_5findex',['find_thread_parent_index',['../conversation_8php.html#ae59703b07ce2ddf627b4172ff26058b6',1,'conversation.php']]],
['find_5fupstream_5fdirectory',['find_upstream_directory',['../dir__fns_8php.html#a8c15aa69da12f2d3476b9e93b82b337d',1,'dir_fns.php']]],
['find_5fxchan_5fin_5farray',['find_xchan_in_array',['../text_8php.html#ace3c98538c63e09b70a363210b414112',1,'text.php']]],
- ['findattachhash',['findAttachHash',['../classRedBrowser.html#ae4edd4e10c709e2624c1aeb47b0440c5',1,'RedBrowser']]],
- ['findattachidbyhash',['findAttachIdByHash',['../classRedBrowser.html#a20d81230645ddca08a88bfd9ea9f88f1',1,'RedBrowser']]],
+ ['findattachhash',['findAttachHash',['../classRedMatrix_1_1RedDAV_1_1RedBrowser.html#ad4bc0516533c62733f38043a37267d78',1,'RedMatrix::RedDAV::RedBrowser']]],
+ ['findattachidbyhash',['findAttachIdByHash',['../classRedMatrix_1_1RedDAV_1_1RedBrowser.html#a0733e38e254474d9a456825e72f1ddfd',1,'RedMatrix::RedDAV::RedBrowser']]],
['findpeople_5fwidget',['findpeople_widget',['../contact__widgets_8php.html#a57e73ebcfd62bb5d8c7a7b9e663726d6',1,'contact_widgets.php']]],
['first_5fpost_5fdate',['first_post_date',['../items_8php.html#a0cf98bb619f07dd18f602683a55a5f59',1,'items.php']]],
['fix_5fattached_5ffile_5fpermissions',['fix_attached_file_permissions',['../item_8php.html#a3daae7944f737bd30412a0d042207c0f',1,'item.php']]],
@@ -35,13 +37,16 @@ var searchData=
['flip',['flip',['../classphoto__driver.html#a2b2a99021fc63ed6465d703ddddcb832',1,'photo_driver\flip()'],['../classphoto__gd.html#a44cedef376044018702d9355ddc813ce',1,'photo_gd\flip()'],['../classphoto__imagick.html#aff6bcdbab18593a3fc5a480db8509393',1,'photo_imagick\flip()']]],
['follow_5fcontent',['follow_content',['../mod_2follow_8php.html#a4c540ea4e9f5c581c1a53516ac585592',1,'follow.php']]],
['follow_5finit',['follow_init',['../mod_2follow_8php.html#a171f5b19f50d7738adc3b2e96ec6018a',1,'follow.php']]],
+ ['foofoo',['foofoo',['../dimport_8php.html#a581f040717941ce3e1868b0b5dceefd1',1,'dimport.php']]],
['format_5fcategories',['format_categories',['../text_8php.html#a3054189cff173977f4216c9a3dd29e1b',1,'text.php']]],
['format_5fcss_5fif_5fexists',['format_css_if_exists',['../plugin_8php.html#a9039e15aae27676af7777dcbee5a11d6',1,'plugin.php']]],
['format_5fevent_5fbbcode',['format_event_bbcode',['../event_8php.html#abb74206cf42d694307c3d7abb7af9869',1,'event.php']]],
['format_5fevent_5fdiaspora',['format_event_diaspora',['../bb2diaspora_8php.html#a29a2ad41f5826f3975fa9a49934ff863',1,'bb2diaspora.php']]],
['format_5fevent_5fhtml',['format_event_html',['../event_8php.html#a2ac9f1b08de03250ecd794f705781d17',1,'event.php']]],
+ ['format_5fevent_5fical',['format_event_ical',['../event_8php.html#a3ff7f1824540a38f4a3991a59a9542d4',1,'event.php']]],
['format_5ffiler',['format_filer',['../text_8php.html#a4e4d42b0a805148d9f9a92bcac89bf91',1,'text.php']]],
['format_5fhashtags',['format_hashtags',['../text_8php.html#a3a0c432a484c17d7720b8ba2d6bfdd59',1,'text.php']]],
+ ['format_5fical_5ftext',['format_ical_text',['../event_8php.html#a05073cd4ab837bd4a0149e8ed23ce688',1,'event.php']]],
['format_5fjs_5fif_5fexists',['format_js_if_exists',['../plugin_8php.html#ad9ff8ba554576383c5911a4bce068c1f',1,'plugin.php']]],
['format_5flike',['format_like',['../conversation_8php.html#a3d8e30cc94f9a175054c021305d3aca3',1,'conversation.php']]],
['format_5flocation',['format_location',['../conversation_8php.html#a0891aaa4492cba2b51eda12fe01957f3',1,'conversation.php']]],
diff --git a/doc/html/search/functions_67.js b/doc/html/search/functions_67.js
index d0a08af1b..1f2afb3f3 100644
--- a/doc/html/search/functions_67.js
+++ b/doc/html/search/functions_67.js
@@ -2,14 +2,17 @@ var searchData=
[
['gen_5ftoken',['gen_token',['../classFKOAuthDataStore.html#aa1a268be88ad3979bb4cc35bbb4dc819',1,'FKOAuthDataStore']]],
['gender_5fselector',['gender_selector',['../profile__selectors_8php.html#ae2b2c087e6530c61c0b256fd26d52355',1,'profile_selectors.php']]],
- ['generatedirectoryindex',['generateDirectoryIndex',['../classRedBrowser.html#a1f7daf50bb9bfcde7345b3b1908dbd7e',1,'RedBrowser']]],
- ['get',['get',['../classCache.html#a70392b109331897bf9fdd7f1960e21de',1,'Cache\get()'],['../classRedFile.html#a7c868dfcef6c70cd0e24cf3caa2c3535',1,'RedFile\get()']]],
+ ['gender_5fselector_5fmin',['gender_selector_min',['../profile__selectors_8php.html#a8bfa1ca2d1598a3d65f1f9bb803ca816',1,'profile_selectors.php']]],
+ ['generate_5fmap',['generate_map',['../text_8php.html#ae0333c304ec5b4b72e66bb2933fa7357',1,'text.php']]],
+ ['generate_5fnamed_5fmap',['generate_named_map',['../text_8php.html#af5eb4a9c1599764f80c5bc71e0125d4b',1,'text.php']]],
+ ['generatedirectoryindex',['generateDirectoryIndex',['../classRedMatrix_1_1RedDAV_1_1RedBrowser.html#af764d5f14df751f9ec86c34fab300c09',1,'RedMatrix::RedDAV::RedBrowser']]],
+ ['get',['get',['../classCache.html#a70392b109331897bf9fdd7f1960e21de',1,'Cache\get()'],['../classRedMatrix_1_1RedDAV_1_1RedFile.html#a7241beecd01f5bb4e74659863dd85bd8',1,'RedMatrix\RedDAV\RedFile\get()']]],
['get_5faccount',['get_account',['../classApp.html#a08bc87aff64f39fbc084e9d6545cee4d',1,'App']]],
['get_5faccount_5fid',['get_account_id',['../boot_8php.html#afe88b920aa285982edb817a0dd44eb37',1,'boot.php']]],
['get_5fall_5fperms',['get_all_perms',['../permissions_8php.html#aeca9b280f3dc3358c89976d81d690008',1,'permissions.php']]],
['get_5fapp',['get_app',['../classBaseObject.html#ac43f10e69ce80c78e4870636250fc8a2',1,'BaseObject\get_app()'],['../boot_8php.html#a0e6db7e365f2b041a828b93786f694bc',1,'get_app():&#160;boot.php']]],
['get_5fapps',['get_apps',['../classApp.html#a5c63eabdc7fdd8b6e3348980ec16a3ad',1,'App']]],
- ['get_5fatom_5felements',['get_atom_elements',['../items_8php.html#a896c1809d58f2d7a42cfe14577958ddf',1,'items.php']]],
+ ['get_5fatom_5felements',['get_atom_elements',['../items_8php.html#a5e5be7bf1f8257dec0b2647e60a3f3f1',1,'items.php']]],
['get_5fbaseurl',['get_baseurl',['../classApp.html#a604d659d6977a99de42a160343e5289a',1,'App']]],
['get_5fbb_5ftag_5fpos',['get_bb_tag_pos',['../bb2diaspora_8php.html#a4c2f8f11b29a06809d9b07782215b1b2',1,'bb2diaspora.php']]],
['get_5fbest_5flanguage',['get_best_language',['../language_8php.html#a980dee1d8715a98ab02e36b59facf8ed',1,'language.php']]],
@@ -19,8 +22,9 @@ var searchData=
['get_5fcapath',['get_capath',['../include_2network_8php.html#a78e89557b2fbd344ad790846d761b0c7',1,'network.php']]],
['get_5fchannel',['get_channel',['../classApp.html#a084e03c77686d8c13390fef3f7428a2b',1,'App']]],
['get_5fchannel_5fby_5fnick',['get_channel_by_nick',['../identity_8php.html#ac73b3e13778c564c877554517a7f51ba',1,'identity.php']]],
+ ['get_5fchannel_5fdefault_5fperms',['get_channel_default_perms',['../identity_8php.html#a293f416ce9050220b183e08ff5890216',1,'identity.php']]],
['get_5fchild',['get_child',['../classItem.html#a632185dd25c5caf277067c76230a4320',1,'Item']]],
- ['get_5fchildren',['get_children',['../classItem.html#aa0ee775ec94abccec6c798428835d001',1,'Item']]],
+ ['get_5fchildren',['get_children',['../classRedMatrix_1_1Import_1_1Import.html#a57561904b0f127e0d9a3e2c33688daf8',1,'RedMatrix\Import\Import\get_children()'],['../classItem.html#aa0ee775ec94abccec6c798428835d001',1,'Item\get_children()']]],
['get_5fcipher',['get_cipher',['../classConversation.html#a4aab60bb39fa6761b6cacdc8d9da2901',1,'Conversation']]],
['get_5fcloudpath',['get_cloudpath',['../include_2attach_8php.html#a6aa00ea010ea030110faefb75eafc1ce',1,'attach.php']]],
['get_5fcomment_5fbox',['get_comment_box',['../classItem.html#a3ee7667c2ec6cd7657328e27848c0bdf',1,'Item']]],
@@ -28,12 +32,17 @@ var searchData=
['get_5fconfig',['get_config',['../include_2config_8php.html#af02c96e6b37335774b548914ede1d22e',1,'config.php']]],
['get_5fconfig_5ffrom_5fstorage',['get_config_from_storage',['../include_2config_8php.html#af08b7adb63adfb2eda7c466fba0cce74',1,'config.php']]],
['get_5fconversation',['get_conversation',['../classItem.html#a0c301aaed2b7d682728d18db3a22afa3',1,'Item']]],
+ ['get_5fcredentials',['get_credentials',['../classRedMatrix_1_1Import_1_1Import.html#a24134929d9a8a682da2036a0bf326367',1,'RedMatrix::Import::Import']]],
['get_5fcustom_5fnav',['get_custom_nav',['../boot_8php.html#a899d24fd074594ceebbf72e1feff335f',1,'boot.php']]],
['get_5fdata',['get_data',['../classItem.html#ad3638f93065693c1f69eb349feb1b7aa',1,'Item']]],
['get_5fdata_5fvalue',['get_data_value',['../classItem.html#ac6f1c96cc82a0dfb7e881fc70309ea3c',1,'Item']]],
['get_5fdb_5ferrno',['get_db_errno',['../setup_8php.html#a8652788e8589778c5f81634a9d5b9429',1,'setup.php']]],
['get_5fdefault_5fprofile_5fphoto',['get_default_profile_photo',['../identity_8php.html#ab1485a26b032956e1496fc08c58b83ed',1,'identity.php']]],
+ ['get_5fdiaspora_5fkey',['get_diaspora_key',['../diaspora_8php.html#a9bf7ef4094e0e14f6e2b7fe76ab7ad2e',1,'diaspora.php']]],
+ ['get_5fdiaspora_5freshare_5fxml',['get_diaspora_reshare_xml',['../diaspora_8php.html#ac9e41e46626dc608204bf4b5e16e62d7',1,'diaspora.php']]],
['get_5fdim',['get_dim',['../datetime_8php.html#a7df24d72ea05922d3127363e2295174c',1,'datetime.php']]],
+ ['get_5fdirectory_5frealm',['get_directory_realm',['../boot_8php.html#a329400dcb29897cdaae3020109272285',1,'boot.php']]],
+ ['get_5fdisplay_5fmode',['get_display_mode',['../classItem.html#a23d4057883f8ed888c0c2ff12d8aa5d0',1,'Item']]],
['get_5fevents',['get_events',['../identity_8php.html#ae381db3d43f8e7c1da8b15d14ecf5312',1,'identity.php']]],
['get_5ffeatures',['get_features',['../features_8php.html#ae73c5b03b01c7284ed7e7e0e774e975c',1,'features.php']]],
['get_5ffeed_5ffor',['get_feed_for',['../items_8php.html#a04a35b610acfe54434df08adec39c0c7',1,'items.php']]],
@@ -43,19 +52,24 @@ var searchData=
['get_5fgroups',['get_groups',['../classApp.html#a4659785d13e4bac0bed50dbb1b0d4299',1,'App']]],
['get_5fhostname',['get_hostname',['../classApp.html#a622eace13f8fc9f4b5672a68e2bc4396',1,'App']]],
['get_5fid',['get_id',['../classItem.html#ac0f27e58532612f6e7a54c8a621b9b92',1,'Item']]],
+ ['get_5finstall_5fscript',['get_install_script',['../classdba__driver.html#a8d6a79d39d7eaee5aea4e952c4529d48',1,'dba_driver']]],
['get_5fintltext_5ftemplate',['get_intltext_template',['../classFriendicaSmartyEngine.html#a35ec0ee828c36640ea25296bcb84a118',1,'FriendicaSmartyEngine\get_intltext_template()'],['../plugin_8php.html#acb63c27d07f6d7dffe95f98a6cef1295',1,'get_intltext_template():&#160;plugin.php']]],
+ ['get_5fitem',['get_item',['../classRedMatrix_1_1Import_1_1Import.html#a27987a41cb703a796f1821baeb4774a2',1,'RedMatrix::Import::Import']]],
['get_5fitem_5fchildren',['get_item_children',['../conversation_8php.html#a7f6ef0dfa554bacf620e84c18d386e67',1,'conversation.php']]],
['get_5fitem_5fcontact',['get_item_contact',['../items_8php.html#aab9c6bae4c40799867596bdaae9829fd',1,'items.php']]],
['get_5fitem_5felements',['get_item_elements',['../items_8php.html#a536d0313b6ffe33b9d2490c4e25c5361',1,'items.php']]],
+ ['get_5fitem_5fident',['get_item_ident',['../classRedMatrix_1_1Import_1_1Import.html#a772c28edf36aaf8e66007a95004c4059',1,'RedMatrix::Import::Import']]],
+ ['get_5fitemlist',['get_itemlist',['../classRedMatrix_1_1Import_1_1Import.html#a855cd5a79b95d269ae8737fae774e3bc',1,'RedMatrix::Import::Import']]],
['get_5flanguage_5fname',['get_language_name',['../language_8php.html#a43e6ddba9df019c9ac3ab4c94c444ae7',1,'language.php']]],
['get_5fmail_5felements',['get_mail_elements',['../items_8php.html#a94ddb1d6c8fa21dd7433677e85168037',1,'items.php']]],
- ['get_5fmarkup_5ftemplate',['get_markup_template',['../classFriendicaSmartyEngine.html#aab5994077fc3a64222e41b28e2bd8d88',1,'FriendicaSmartyEngine\get_markup_template()'],['../interfaceITemplateEngine.html#aaf2698adbf46c073c24b162fe1b1c442',1,'ITemplateEngine\get_markup_template()'],['../classTemplate.html#afd97b4b1e7754a550e67c0ea79159059',1,'Template\get_markup_template()'],['../plugin_8php.html#a75f7dfed291fd7add7fc85b5c022a1f4',1,'get_markup_template():&#160;plugin.php']]],
+ ['get_5fmarkup_5ftemplate',['get_markup_template',['../interfaceITemplateEngine.html#aaf2698adbf46c073c24b162fe1b1c442',1,'ITemplateEngine\get_markup_template()'],['../classFriendicaSmartyEngine.html#aab5994077fc3a64222e41b28e2bd8d88',1,'FriendicaSmartyEngine\get_markup_template()'],['../classTemplate.html#afd97b4b1e7754a550e67c0ea79159059',1,'Template\get_markup_template()'],['../plugin_8php.html#a75f7dfed291fd7add7fc85b5c022a1f4',1,'get_markup_template():&#160;plugin.php']]],
['get_5fmax_5fimport_5fsize',['get_max_import_size',['../boot_8php.html#a97769915c9f14adc4f8ab1ea2cecfd90',1,'boot.php']]],
['get_5fmentions',['get_mentions',['../text_8php.html#a76d1b3435c067978d7b484c45f56472b',1,'text.php']]],
['get_5fmode',['get_mode',['../classConversation.html#a87a0d704d5f2b1a008cc2e9ce06a1bcd',1,'Conversation']]],
['get_5fmood_5fverbs',['get_mood_verbs',['../text_8php.html#a736db13a966b8abaf8c9198faa35911a',1,'text.php']]],
['get_5fmy_5faddress',['get_my_address',['../identity_8php.html#a490972c02fdb638c52ec0e012a30bfd2',1,'identity.php']]],
['get_5fmy_5furl',['get_my_url',['../identity_8php.html#aa46321e1cd6a3b8dfde8bf9510112fec',1,'identity.php']]],
+ ['get_5fnull_5fdate',['get_null_date',['../classdba__driver.html#a65a5c7b355ab5529a43049e160006426',1,'dba_driver']]],
['get_5fobserver',['get_observer',['../classApp.html#a1ad3bb1b68439b3b7cbe630918e618d2',1,'App\get_observer()'],['../classConversation.html#ae3d4190142e12b57051f11f2911f77a0',1,'Conversation\get_observer()']]],
['get_5fobserver_5fhash',['get_observer_hash',['../boot_8php.html#a623e49c79943f3e7bdb770d021683cf7',1,'boot.php']]],
['get_5fonline_5fstatus',['get_online_status',['../identity_8php.html#a332df795f684788002f5a6424abacfd7',1,'identity.php']]],
@@ -70,15 +84,21 @@ var searchData=
['get_5fplink',['get_plink',['../text_8php.html#aac0969ae09853205992ba06ab9f9f61a',1,'text.php']]],
['get_5fplugin_5finfo',['get_plugin_info',['../plugin_8php.html#aff0178bd8d0b34a94d5efddc883edd35',1,'plugin.php']]],
['get_5fpoke_5fverbs',['get_poke_verbs',['../text_8php.html#aa46f941155c2ac1155f2f17ffb0adb66',1,'text.php']]],
+ ['get_5fpoller_5fruntime',['get_poller_runtime',['../boot_8php.html#aa561f801e962b67a5c4d0548ea95fd17',1,'boot.php']]],
['get_5fprofile_5felements',['get_profile_elements',['../items_8php.html#a251343637ff40a50cca93452cd530c26',1,'items.php']]],
+ ['get_5fprofile_5ffields_5fadvanced',['get_profile_fields_advanced',['../identity_8php.html#a224710dfb7465b706c91134247c20afa',1,'identity.php']]],
+ ['get_5fprofile_5ffields_5fbasic',['get_profile_fields_basic',['../identity_8php.html#a4ff59df0f0a668a06a8411f87496aa21',1,'identity.php']]],
['get_5fprofile_5fowner',['get_profile_owner',['../classConversation.html#a5effe8ad3007e01333df44b81432b813',1,'Conversation']]],
['get_5fpublic_5ffeed',['get_public_feed',['../items_8php.html#a079e099e15d88d47aeb6ca6d60da7107',1,'items.php']]],
['get_5fredirect_5furl',['get_redirect_url',['../classItem.html#a428f448f89a8629055ea3294eb942aea',1,'Item']]],
['get_5frel_5flink',['get_rel_link',['../text_8php.html#a3972701c5c83624ec4e2d06242f614e7',1,'text.php']]],
+ ['get_5frole_5fperms',['get_role_perms',['../permissions_8php.html#a9b5f5120566a3699a98efc5ccb0c59fe',1,'permissions.php']]],
+ ['get_5froles',['get_roles',['../permissions_8php.html#a6b239a0d494b92a89ce7bf9c7e588991',1,'permissions.php']]],
['get_5frpost_5fpath',['get_rpost_path',['../zot_8php.html#a8e22dbc6f884be3644a892a876cbd972',1,'zot.php']]],
['get_5fsys_5fchannel',['get_sys_channel',['../identity_8php.html#aaff86ee3b5984821e7a256c2da5f1a51',1,'identity.php']]],
['get_5fsystem_5fapps',['get_system_apps',['../include_2apps_8php.html#ae64f72eb4f126e03b4eb65ed1702a3ca',1,'apps.php']]],
['get_5ftags',['get_tags',['../text_8php.html#a4659fbc4e54ddc700c3aa66b9092c623',1,'text.php']]],
+ ['get_5ftaxonomy',['get_taxonomy',['../classRedMatrix_1_1Import_1_1Import.html#ae3c6472bea1a44025bc2e152604eb20c',1,'RedMatrix::Import::Import']]],
['get_5ftemplate',['get_template',['../classItem.html#aba23a0a9d89e316d2b343cc46d695d91',1,'Item']]],
['get_5ftemplate_5fdata',['get_template_data',['../classConversation.html#a2a96b7a6573ae53db861624659e831cb',1,'Conversation\get_template_data()'],['../classItem.html#ad5dcbe0b94cb2d5719bc5b6bd8ad60c8',1,'Item\get_template_data()']]],
['get_5ftemplate_5fengine',['get_template_engine',['../classApp.html#acb27e607fe4c82603444676e25c36b70',1,'App']]],
@@ -91,22 +111,27 @@ var searchData=
['get_5ftheme_5fuid',['get_theme_uid',['../identity_8php.html#aaeb666872995e3ab8da8f7bc5f3b2bd3',1,'identity.php']]],
['get_5fthings',['get_things',['../taxonomy_8php.html#a7747fa859ac56fbffd4f9782d85505de',1,'taxonomy.php']]],
['get_5fthread',['get_thread',['../classConversation.html#a4cff75d8c46b517e7133e4d0da6fc1c8',1,'Conversation']]],
+ ['get_5ftimezones',['get_timezones',['../datetime_8php.html#afbb34604d0f6e7d2103da4f42e2487b1',1,'datetime.php']]],
['get_5fwidgets',['get_widgets',['../classApp.html#a871898becd0697d778f36d9336253ae8',1,'App']]],
['get_5fwords',['get_words',['../spam_8php.html#ab8fd81a82c9622cbebb8ceab6b310ca6',1,'spam.php']]],
['get_5fxconfig',['get_xconfig',['../include_2config_8php.html#aa3dc1d3de2d091ac702e675acd3a085e',1,'config.php']]],
- ['getasseturl',['getAssetUrl',['../classRedBrowser.html#a87529b4988a7777b49616f5c0a1c55d3',1,'RedBrowser']]],
- ['getchild',['getChild',['../classRedDirectory.html#aaa20f0f44da23781917af8170c0a2569',1,'RedDirectory']]],
- ['getchildren',['getChildren',['../classRedDirectory.html#aa42d3065f6f065b17db87146a7cb031a',1,'RedDirectory']]],
- ['getcontenttype',['getContentType',['../classRedFile.html#a26416827eb68554d033d1e2e5cc6dd3b',1,'RedFile']]],
- ['getdir',['getDir',['../classRedDirectory.html#a70173d4458572d95e586b2037d2fd2f4',1,'RedDirectory']]],
- ['getetag',['getETag',['../classRedFile.html#ae96d5caa2db7a461c57b24380fa87e28',1,'RedFile']]],
+ ['getasseturl',['getAssetUrl',['../classRedMatrix_1_1RedDAV_1_1RedBrowser.html#acaa792c08d24e9dc2919759e92ba037d',1,'RedMatrix::RedDAV::RedBrowser']]],
+ ['getchild',['getChild',['../classRedMatrix_1_1RedDAV_1_1RedDirectory.html#a1a37850bdd1f188abd6160559698d5d7',1,'RedMatrix::RedDAV::RedDirectory']]],
+ ['getchildren',['getChildren',['../classRedMatrix_1_1RedDAV_1_1RedDirectory.html#a9b9a0b5bfa4de1f78e6cafaa534b6f6a',1,'RedMatrix::RedDAV::RedDirectory']]],
+ ['getcontenttype',['getContentType',['../classRedMatrix_1_1RedDAV_1_1RedFile.html#af5c88b75d0c1f590af03755534cb167e',1,'RedMatrix::RedDAV::RedFile']]],
+ ['getcurrentuser',['getCurrentUser',['../classRedMatrix_1_1RedDAV_1_1RedBasicAuth.html#aa0b2a5fa9186d7dc0e637f1ecb379c42',1,'RedMatrix::RedDAV::RedBasicAuth']]],
+ ['getdir',['getDir',['../classRedMatrix_1_1RedDAV_1_1RedDirectory.html#a825dc5f3e0f83f50736c16daa6a4809d',1,'RedMatrix::RedDAV::RedDirectory']]],
+ ['getdriver',['getdriver',['../classdba__driver.html#a02165fc4bee63d040ebd963a4fa82a14',1,'dba_driver\getdriver()'],['../classdba__mysql.html#a31011edd67b6b394355bf04cedb498d0',1,'dba_mysql\getdriver()'],['../classdba__mysqli.html#a6eb6c578c6928908321e5e6da866e1db',1,'dba_mysqli\getdriver()'],['../classdba__postgres.html#ae0f834413e57cf0735ae7b64b2f71e68',1,'dba_postgres\getdriver()']]],
+ ['getetag',['getETag',['../classRedMatrix_1_1RedDAV_1_1RedFile.html#a9f14682acf3ccb70df5af5dd0687c689',1,'RedMatrix::RedDAV::RedFile']]],
['getext',['getExt',['../classphoto__driver.html#aa2efb5b2a6af3fd67e3f1c2b9852a5ba',1,'photo_driver']]],
['getheight',['getHeight',['../classphoto__driver.html#af769e9abb144e57002c59aa2aa8f3468',1,'photo_driver']]],
+ ['geticonfromtype',['getIconFromType',['../classRedMatrix_1_1RedDAV_1_1RedBrowser.html#a810af4506cb3247e0ea7b0c4accbbc7a',1,'RedMatrix::RedDAV::RedBrowser']]],
['getimage',['getImage',['../classphoto__driver.html#ab98da263bd7341fc132c4fb6fc76e8d5',1,'photo_driver\getImage()'],['../classphoto__gd.html#a86757ba021fd80d1a5cf8c2f766a8484',1,'photo_gd\getImage()'],['../classphoto__imagick.html#ad07288e0eb3922cb08cc9d33a163decc',1,'photo_imagick\getImage()']]],
- ['getlastmodified',['getLastModified',['../classRedDirectory.html#a6c7e08199abc24e6eeb94a4037ef8bfc',1,'RedDirectory\getLastModified()'],['../classRedFile.html#a41562a28007789bbe7fe06d6a20eef47',1,'RedFile\getLastModified()']]],
- ['getname',['getName',['../classRedDirectory.html#af6e4475dbd5abcdede00d20b8d388583',1,'RedDirectory\getName()'],['../classRedFile.html#a0c961c5f49544d2502420361fa526437',1,'RedFile\getName()']]],
- ['getquotainfo',['getQuotaInfo',['../classRedDirectory.html#a2f7a574f2115f099d6dd103d5b252375',1,'RedDirectory']]],
- ['getsize',['getSize',['../classRedFile.html#acb1edbe1848fab05347746fa1ea09d8f',1,'RedFile']]],
+ ['getlastmodified',['getLastModified',['../classRedMatrix_1_1RedDAV_1_1RedDirectory.html#a69db5f641f8f5dc999e55cee1832ecd5',1,'RedMatrix\RedDAV\RedDirectory\getLastModified()'],['../classRedMatrix_1_1RedDAV_1_1RedFile.html#ac47016aa0e3f6f1a1c4570bd6fd8cf25',1,'RedMatrix\RedDAV\RedFile\getLastModified()']]],
+ ['getname',['getName',['../classRedMatrix_1_1RedDAV_1_1RedDirectory.html#a55f7172814a0749b5342f152ab3fa0df',1,'RedMatrix\RedDAV\RedDirectory\getName()'],['../classRedMatrix_1_1RedDAV_1_1RedFile.html#ac945aa782d6c035d339e59974266ec4d',1,'RedMatrix\RedDAV\RedFile\getName()']]],
+ ['getquotainfo',['getQuotaInfo',['../classRedMatrix_1_1RedDAV_1_1RedDirectory.html#a69db443ed3c84938b4352fe515bf8d68',1,'RedMatrix::RedDAV::RedDirectory']]],
+ ['getsize',['getSize',['../classRedMatrix_1_1RedDAV_1_1RedFile.html#a07e1b19e7aaf3dcce822e9be8823a87d',1,'RedMatrix::RedDAV::RedFile']]],
+ ['gettimezone',['getTimezone',['../classRedMatrix_1_1RedDAV_1_1RedBasicAuth.html#a6333c8ce58998bd11bf8102afe3b0748',1,'RedMatrix::RedDAV::RedBasicAuth']]],
['gettype',['getType',['../classphoto__driver.html#a6c6c16dbc4f517ce799f9143ed61f0e3',1,'photo_driver']]],
['getwidth',['getWidth',['../classphoto__driver.html#acc30486acee9e89e32701f44a1738117',1,'photo_driver']]],
['goaway',['goaway',['../boot_8php.html#a5ab6181607a090bcdbaa13b15b85aba1',1,'boot.php']]],
diff --git a/doc/html/search/functions_68.js b/doc/html/search/functions_68.js
index dc4668af5..4d5d89d71 100644
--- a/doc/html/search/functions_68.js
+++ b/doc/html/search/functions_68.js
@@ -1,7 +1,10 @@
var searchData=
[
- ['handle_5ftag',['handle_tag',['../item_8php.html#aa22feef4de326e1d7078dedd892e615c',1,'item.php']]],
+ ['handle_5ffeed',['handle_feed',['../items_8php.html#a52c24114b73c0bdb605a03cd29712223',1,'items.php']]],
+ ['handle_5ftag',['handle_tag',['../text_8php.html#aa22feef4de326e1d7078dedd892e615c',1,'text.php']]],
['has_5fpermissions',['has_permissions',['../items_8php.html#a77051724d1784074ff187e73a4db93fe',1,'items.php']]],
+ ['hcard_5fcontent',['hcard_content',['../hcard_8php.html#a3663012f1549849af88aba2bb87388e3',1,'hcard.php']]],
+ ['hcard_5finit',['hcard_init',['../hcard_8php.html#ac34f26b0e6a37eef44fa49bea135136d',1,'hcard.php']]],
['head_5fadd_5fcss',['head_add_css',['../plugin_8php.html#a23c4fccf1eb5fcd63b24783ba1f05f7a',1,'plugin.php']]],
['head_5fadd_5fjs',['head_add_js',['../plugin_8php.html#a516591850f4fd49fd1425cfa54089db8',1,'plugin.php']]],
['head_5fget_5fcss',['head_get_css',['../plugin_8php.html#af92789f559b89a380e49d303218aeeca',1,'plugin.php']]],
@@ -13,12 +16,14 @@ var searchData=
['head_5fset_5ficon',['head_set_icon',['../classApp.html#a8863703a0305eaa45eb970dbd2046291',1,'App\head_set_icon()'],['../boot_8php.html#a0e4701c9742c3ef88f02ac450a042a84',1,'head_set_icon():&#160;boot.php']]],
['help',['help',['../namespacefriendica-to-smarty-tpl.html#af6b2c793958aae2aadc294577431f749',1,'friendica-to-smarty-tpl.help()'],['../namespaceupdatetpl.html#ac9d11279fed403a329a719298feafc4f',1,'updatetpl.help()']]],
['help_5fcontent',['help_content',['../help_8php.html#af055e15f600ffa6fbca9386fdf715224',1,'help.php']]],
- ['home_5fcontent',['home_content',['../home_8php.html#aa1cf697851a646755baf537f75334c46',1,'home.php']]],
+ ['hivenet_5finit',['hivenet_init',['../hivenet_2php_2theme_8php.html#a3a8b539b112ae63936025236dbaf0a29',1,'theme.php']]],
+ ['home_5fcontent',['home_content',['../home_8php.html#a6e3dbf78f4ed74ab2577de221190b33f',1,'home.php']]],
['home_5finit',['home_init',['../home_8php.html#ac4642c38b6f23a8d065dd4a75c620bde',1,'home.php']]],
['hostxrd_5finit',['hostxrd_init',['../hostxrd_8php.html#aa37ffc8e7900bc76c4828bd25916db92',1,'hostxrd.php']]],
['html2bb_5fvideo',['html2bb_video',['../text_8php.html#a138a3a611fa7f4f3630674145fc826bf',1,'text.php']]],
['html2bbcode',['html2bbcode',['../html2bbcode_8php.html#a5ad726995ac4070213abdb3bd09f4837',1,'html2bbcode.php']]],
['html2plain',['html2plain',['../html2plain_8php.html#ab3e121fa9f3feb16f9f942e705bc6c04',1,'html2plain.php']]],
- ['htmlactionspanel',['htmlActionsPanel',['../classRedBrowser.html#a7f6bf0bda07833f4c647557bd172e349',1,'RedBrowser']]],
- ['http_5fstatus_5fexit',['http_status_exit',['../include_2network_8php.html#a4cfb2c05a1c295317283d762440ce0b2',1,'network.php']]]
+ ['htmlactionspanel',['htmlActionsPanel',['../classRedMatrix_1_1RedDAV_1_1RedBrowser.html#a3bd98af2d1cdfd8f26deb914596176cf',1,'RedMatrix::RedDAV::RedBrowser']]],
+ ['http_5fstatus_5fexit',['http_status_exit',['../include_2network_8php.html#a4cfb2c05a1c295317283d762440ce0b2',1,'network.php']]],
+ ['hubloc_5fchange_5fprimary',['hubloc_change_primary',['../hubloc_8php.html#ad86214b3a74084bd7b54e8d6c919ce4d',1,'hubloc.php']]]
];
diff --git a/doc/html/search/functions_69.js b/doc/html/search/functions_69.js
index 7f52f18f7..b7d49b52c 100644
--- a/doc/html/search/functions_69.js
+++ b/doc/html/search/functions_69.js
@@ -1,11 +1,15 @@
var searchData=
[
- ['identity_5fbasic_5fexport',['identity_basic_export',['../identity_8php.html#a3570a4eb77332b292d394c4132cb8f03',1,'identity.php']]],
+ ['ical_5fwrapper',['ical_wrapper',['../event_8php.html#ab8cc2825013e724dc26229026711cf93',1,'event.php']]],
+ ['identity_5fbasic_5fexport',['identity_basic_export',['../identity_8php.html#afaedbc8e2d2a70ec8b006162baac5249',1,'identity.php']]],
['identity_5fcheck_5fservice_5fclass',['identity_check_service_class',['../identity_8php.html#ac9fcd5c4c371998790b5c55c3d0f4633',1,'identity.php']]],
['identity_5fselector',['identity_selector',['../identity_8php.html#a2ab5172eabd375869060c9ad68323f5c',1,'identity.php']]],
['ids_5fto_5fquerystr',['ids_to_querystr',['../text_8php.html#a436a8de00c942364c2d0fcfc7e1f4b5a',1,'text.php']]],
['imagestring',['imageString',['../classphoto__driver.html#abc9f73ad90923772d52b9fcc4eb117dd',1,'photo_driver\imageString()'],['../classphoto__gd.html#a0795fc029be382557ae3f6e285f40e00',1,'photo_gd\imageString()'],['../classphoto__imagick.html#a70adbef31128c0ac8cbc5dcf34cdb019',1,'photo_imagick\imageString()']]],
+ ['impel_5finit',['impel_init',['../impel_8php.html#ab7db6fca43b42ea4332cb3e841b3cf7b',1,'impel.php']]],
+ ['import_5fauthor_5fdiaspora',['import_author_diaspora',['../items_8php.html#a2c3f97b2109c05df86d97449b3c78ebc',1,'items.php']]],
['import_5fauthor_5frss',['import_author_rss',['../items_8php.html#a6bee35961f2e32905f20367a9309d627',1,'items.php']]],
+ ['import_5fauthor_5funknown',['import_author_unknown',['../items_8php.html#a37f79991f36811cf847446ff60e8e11f',1,'items.php']]],
['import_5fauthor_5fxchan',['import_author_xchan',['../items_8php.html#ae73794179b62d39bb597ff670ab1c1e5',1,'items.php']]],
['import_5fauthor_5fzot',['import_author_zot',['../zot_8php.html#ad149f1e98c0c5b88ff9147e6ee3f330d',1,'zot.php']]],
['import_5fchannel_5fphoto',['import_channel_photo',['../photo__driver_8php.html#a1d0bc7161dec0d177b7d3bbe4421af9a',1,'photo_driver.php']]],
@@ -29,6 +33,7 @@ var searchData=
['is_5fcommentable',['is_commentable',['../classConversation.html#a8b47c92b69459d461ea3cc9aae9597a3',1,'Conversation\is_commentable()'],['../classItem.html#ac04525a8be24c12b0a2ae4ca1ba4b967',1,'Item\is_commentable()']]],
['is_5fdeveloper',['is_developer',['../boot_8php.html#a6252d8eca67c689d9035ec6da544cf46',1,'boot.php']]],
['is_5fforeigner',['is_foreigner',['../identity_8php.html#ae2b140df652a55ca11bb6a99005fce35',1,'identity.php']]],
+ ['is_5fmatrix_5furl',['is_matrix_url',['../hubloc_8php.html#aebd244b4616ded022cbbee5e82926951',1,'hubloc.php']]],
['is_5fmember',['is_member',['../identity_8php.html#a9637c557e13d9671f3eeb124ab98212a',1,'identity.php']]],
['is_5fpreview',['is_preview',['../classConversation.html#adf25ce023b69a166c63c6e84e02c136a',1,'Conversation']]],
['is_5fpublic_5fprofile',['is_public_profile',['../identity_8php.html#a4e996e44b50330098a04b467367a559f',1,'identity.php']]],
diff --git a/doc/html/search/functions_6c.js b/doc/html/search/functions_6c.js
index a1915c9e8..80f4a7843 100644
--- a/doc/html/search/functions_6c.js
+++ b/doc/html/search/functions_6c.js
@@ -4,29 +4,35 @@ var searchData=
['lang_5fselector',['lang_selector',['../text_8php.html#a71f6952243d3fe1c5a8154f78027e29c',1,'text.php']]],
['layout_5fselect',['layout_select',['../text_8php.html#a3999a0b3e22e440f280ee791ce34d384',1,'text.php']]],
['layouts_5fcontent',['layouts_content',['../layouts_8php.html#a6e0193759ad9eef76d3df2db24237b50',1,'layouts.php']]],
+ ['layouts_5finit',['layouts_init',['../layouts_8php.html#a39c8e9f72641c684c8b689bd91a642fa',1,'layouts.php']]],
['legal_5fwebbie',['legal_webbie',['../text_8php.html#a2690ad67bb6fb97ef69de3e8d23f2728',1,'text.php']]],
['like_5fcontent',['like_content',['../like_8php.html#a9d7dd268f21c21e9d29dd2aca2dd9538',1,'like.php']]],
['like_5fpuller',['like_puller',['../conversation_8php.html#afe5b2f38d8b803edb0d7ec5fa2868db0',1,'conversation.php']]],
['limit_5fbody_5fsize',['limit_body_size',['../items_8php.html#af94c281016c6c912d06e064113336c5c',1,'items.php']]],
['link_5fcompare',['link_compare',['../text_8php.html#a47c1e4a5f3f53027daacd8a9db24f285',1,'text.php']]],
['linkify',['linkify',['../text_8php.html#a11255c8c4e5245b6c24f97684826aa54',1,'text.php']]],
- ['list_5fpost_5fdates',['list_post_dates',['../items_8php.html#aa2d3caa2f27720762b5c729e07df40fb',1,'items.php']]],
+ ['list_5fpost_5fdates',['list_post_dates',['../items_8php.html#ab33fa9756aaa5f39a6104d57a62baf00',1,'items.php']]],
['list_5fpublic_5fsites',['list_public_sites',['../dirsearch_8php.html#a985d410a170549429857af6ff2673149',1,'dirsearch.php']]],
+ ['list_5fsmilies',['list_smilies',['../text_8php.html#a4446c7f8996a280f7e08b7bfe6c6c8bc',1,'text.php']]],
['load',['load',['../classphoto__driver.html#a19e1af2b6af4c63aa6230abe69f83712',1,'photo_driver\load()'],['../classphoto__gd.html#a33092b889875b68bfb1c97ff123012d9',1,'photo_gd\load()'],['../classphoto__imagick.html#a2c9168f110ccd6c264095d766615dfa8',1,'photo_imagick\load()']]],
['load_5fconfig',['load_config',['../include_2config_8php.html#a27559f388c9b9af81c94e48d6889d1d1',1,'config.php']]],
['load_5fcontact_5flinks',['load_contact_links',['../boot_8php.html#a719c7f3972d5f9268f37a41c76cd4ef6',1,'boot.php']]],
['load_5fdatabase',['load_database',['../setup_8php.html#ad2e0375a9ab87ebe6e78124ee125054a',1,'setup.php']]],
['load_5fdatabase_5frem',['load_database_rem',['../setup_8php.html#a2b375ddc555140236fc500135de99371',1,'setup.php']]],
['load_5fhooks',['load_hooks',['../plugin_8php.html#a326365e48ef94f0b9a0a771b8d75e813',1,'plugin.php']]],
- ['load_5fpconfig',['load_pconfig',['../include_2config_8php.html#ac543813a980b3841cc5a277fcd4a24a6',1,'config.php']]],
+ ['load_5fpconfig',['load_pconfig',['../include_2config_8php.html#a559791dda7fef8a4b2394c83e835787b',1,'config.php']]],
+ ['load_5fpdl',['load_pdl',['../boot_8php.html#a50a6707a28c7d05d3f49eaabc7994501',1,'boot.php']]],
['load_5fplugin',['load_plugin',['../plugin_8php.html#a9ca9632b7309a65b05c03a3e2f473a3d',1,'plugin.php']]],
['load_5ftranslation_5ftable',['load_translation_table',['../language_8php.html#a7e9904c730bb24ddcb0ff50fc96f6b05',1,'language.php']]],
- ['load_5fxconfig',['load_xconfig',['../include_2config_8php.html#a55bbed9a014c9109c767486834f3ca33',1,'config.php']]],
+ ['load_5fxconfig',['load_xconfig',['../include_2config_8php.html#aee4b619839cf4b64220f34edf5c67b52',1,'config.php']]],
['local_5fdir_5fupdate',['local_dir_update',['../dir__fns_8php.html#acd37b17dce3bdec6d5a6344a20598c1e',1,'dir_fns.php']]],
['local_5fuser',['local_user',['../boot_8php.html#ad4c9dc2c8a82e8f52b7404c1655eab44',1,'boot.php']]],
['localize_5fitem',['localize_item',['../conversation_8php.html#a9bd7f9fb6678736c581bcba3b17f471c',1,'conversation.php']]],
['lockview_5fcontent',['lockview_content',['../lockview_8php.html#a851e26ab9a1008df5c5ebebea31e9b44',1,'lockview.php']]],
- ['log',['log',['../classRedDirectory.html#a11376aed1963b4471eb1592c13c63976',1,'RedDirectory\log()'],['../classRedBasicAuth.html#a2cc8b1eac9c5a799bfb53ea7f287f3f0',1,'RedBasicAuth\log()']]],
+ ['locs_5fcontent',['locs_content',['../locs_8php.html#a6c900f53970c0d0e738d2fe06d27ca44',1,'locs.php']]],
+ ['locs_5fpost',['locs_post',['../locs_8php.html#a6b43654592919ac863d67a1f787a69b9',1,'locs.php']]],
+ ['log',['log',['../classRedMatrix_1_1RedDAV_1_1RedBasicAuth.html#abf6fe89b0a8239ed93c3b07e1fbce75b',1,'RedMatrix\RedDAV\RedBasicAuth\log()'],['../classRedMatrix_1_1RedDAV_1_1RedDirectory.html#af90a1a74cfd643a5c56b9a17ea250d59',1,'RedMatrix\RedDAV\RedDirectory\log()']]],
+ ['log_5ffailed_5flogin',['log_failed_login',['../auth_8php.html#ae3ecb5f34f202c7f9a61c5d589f6c6e1',1,'auth.php']]],
['logger',['logger',['../text_8php.html#a030fa5ecc64168af0c4f44897a9bce63',1,'text.php']]],
['login',['login',['../boot_8php.html#aefecf8599036df7f1b95d6820e0e2fa4',1,'boot.php']]],
['login_5fcontent',['login_content',['../login_8php.html#a1d69ca88eb9005a7026e128b9a645904',1,'login.php']]],
diff --git a/doc/html/search/functions_6d.js b/doc/html/search/functions_6d.js
index c0f3a4b2c..8ace240f9 100644
--- a/doc/html/search/functions_6d.js
+++ b/doc/html/search/functions_6d.js
@@ -6,13 +6,15 @@ var searchData=
['mail_5fcontent',['mail_content',['../mail_8php.html#a3c7c485fc69f92371e8b20936040eca1',1,'mail.php']]],
['mail_5fpost',['mail_post',['../mail_8php.html#acfc2cc0bf4e0b178207758384977f25a',1,'mail.php']]],
['mail_5fstore',['mail_store',['../items_8php.html#a77da7ce9a117601d49ac4a67c71b514f',1,'items.php']]],
+ ['make_5fxchan_5fhash',['make_xchan_hash',['../zot_8php.html#a0fc2211c5309d9f925ecc4115e3fdb75',1,'zot.php']]],
['manage_5fcontent',['manage_content',['../manage_8php.html#a2bca247b5296827638959138367db4f5',1,'manage.php']]],
['manual_5fconfig',['manual_config',['../setup_8php.html#abe405d227ba7232971964a706d4f3bce',1,'setup.php']]],
- ['map_5fscope',['map_scope',['../items_8php.html#ac1fcf621dce7370515b420a7753f4726',1,'items.php']]],
+ ['map_5fscope',['map_scope',['../items_8php.html#a8675e62674de6fb7c42e4a408c7116cc',1,'items.php']]],
['marital_5fselector',['marital_selector',['../profile__selectors_8php.html#a7473dd095987e1cdcc79d4f0bb5e6798',1,'profile_selectors.php']]],
+ ['marital_5fselector_5fmin',['marital_selector_min',['../profile__selectors_8php.html#adc79715bd2e102b4583fb530749ec534',1,'profile_selectors.php']]],
['mark_5forphan_5fhubsxchans',['mark_orphan_hubsxchans',['../Contact_8php.html#a08845ce8c5b997d5edac38ae7118b5c8',1,'Contact.php']]],
['match_5fcontent',['match_content',['../match_8php.html#a1dd853e959b9e70c1911bb2fb5f5130d',1,'match.php']]],
- ['match_5fopenid',['match_openid',['../auth_8php.html#ab7be44ee051c0aa29847807cf2c5dd38',1,'auth.php']]],
+ ['match_5fopenid',['match_openid',['../auth_8php.html#a69fa663e6baf65f80d1b114ad72615f2',1,'auth.php']]],
['member_5fof',['member_of',['../include_2group_8php.html#a048f6892bfd28852de1b76470df411de',1,'group.php']]],
['menu_5fadd_5fitem',['menu_add_item',['../include_2menu_8php.html#add35fae5e9695031b3d46e30ac409eb8',1,'menu.php']]],
['menu_5fcontent',['menu_content',['../mod_2menu_8php.html#a6fed23af14d71a78a4153c8363a685cf',1,'menu.php']]],
@@ -25,9 +27,12 @@ var searchData=
['menu_5ffetch',['menu_fetch',['../include_2menu_8php.html#a68ebbf492470c930f652013656f9071d',1,'menu.php']]],
['menu_5ffetch_5fid',['menu_fetch_id',['../include_2menu_8php.html#a47447c01ba8ea04cd74af1d4c5b68fc7',1,'menu.php']]],
['menu_5flist',['menu_list',['../include_2menu_8php.html#a32701c4245e78ba9106eef52c08bf33d',1,'menu.php']]],
+ ['menu_5flist_5fcount',['menu_list_count',['../include_2menu_8php.html#a251bf7e15d21627fd92614198e41c485',1,'menu.php']]],
['menu_5fpost',['menu_post',['../mod_2menu_8php.html#aaa491ef173868fe002aece4632bcf393',1,'menu.php']]],
['menu_5frender',['menu_render',['../include_2menu_8php.html#a03a5deed3908543581c074ce333e9d6a',1,'menu.php']]],
['message_5fcontent',['message_content',['../mod_2message_8php.html#ac72dfed3ce08fcb331d66b37edc6e15f',1,'message.php']]],
+ ['metopem',['metopem',['../crypto_8php.html#af8bbdeaf4abed7b40365d301e6013c85',1,'crypto.php']]],
+ ['metorsa',['metorsa',['../crypto_8php.html#a573f02517abe4ac9241268263063b2a0',1,'crypto.php']]],
['micropro',['micropro',['../text_8php.html#a2a902f5fdba8646333e997898ac45ea3',1,'text.php']]],
['mimetype_5fselect',['mimetype_select',['../text_8php.html#a1633412120f52bdce5f43e0a127d9293',1,'text.php']]],
['mini_5fgroup_5fselect',['mini_group_select',['../include_2group_8php.html#ab0e422a0f31c0c64fd9084ca03d85f32',1,'group.php']]],
diff --git a/doc/html/search/functions_6e.js b/doc/html/search/functions_6e.js
index 7949a4dca..e9981a764 100644
--- a/doc/html/search/functions_6e.js
+++ b/doc/html/search/functions_6e.js
@@ -27,6 +27,8 @@ var searchData=
['notice',['notice',['../boot_8php.html#a9255af5ae9c887520091ea04763c1a88',1,'boot.php']]],
['notification',['notification',['../enotify_8php.html#a3e9a9355b243777c488d2a9883908dfc',1,'enotify.php']]],
['notifications_5fcontent',['notifications_content',['../notifications_8php.html#aadd0b5525bd8c283a5d8a37982bbfe62',1,'notifications.php']]],
+ ['notifications_5foff',['notifications_off',['../identity_8php.html#a2e6a1cc35887937823ec7fbb90472afe',1,'identity.php']]],
+ ['notifications_5fon',['notifications_on',['../identity_8php.html#a5650319c799de09d1b6d1076b6f839a4',1,'identity.php']]],
['notifications_5fpost',['notifications_post',['../notifications_8php.html#a5baffec7b2e625c9f9cefbc097550d33',1,'notifications.php']]],
['notifier_5frun',['notifier_run',['../notifier_8php.html#a568c502f626cff95e344c0748938b85d',1,'notifier.php']]],
['notify_5fcontent',['notify_content',['../mod_2notify_8php.html#acdf3851688ebd6d6a575eb84ef9febe3',1,'notify.php']]],
diff --git a/doc/html/search/functions_6f.js b/doc/html/search/functions_6f.js
index 8497d0358..6e1766c1d 100644
--- a/doc/html/search/functions_6f.js
+++ b/doc/html/search/functions_6f.js
@@ -14,10 +14,13 @@ var searchData=
['oembed_5freplacecb',['oembed_replacecb',['../include_2oembed_8php.html#a00c4c80deffd9daf8dc97b58d4c64ed0',1,'oembed.php']]],
['oexchange_5fcontent',['oexchange_content',['../oexchange_8php.html#a2d8b785cd7d041a4e6274f5af370cf26',1,'oexchange.php']]],
['oexchange_5finit',['oexchange_init',['../oexchange_8php.html#ac8e2e469ddc3db984b0c1b44558aca59',1,'oexchange.php']]],
+ ['old_5fwebfinger',['old_webfinger',['../include_2network_8php.html#a872bbe72d23826c64c9e0f822180a3ec',1,'network.php']]],
['onedirsync_5frun',['onedirsync_run',['../onedirsync_8php.html#a411aedd47c57476099647961e6a86691',1,'onedirsync.php']]],
['onepoll_5frun',['onepoll_run',['../onepoll_8php.html#a72753b2fdec79b37c7f432035c91fb6d',1,'onepoll.php']]],
['online_5finit',['online_init',['../online_8php.html#a80e107c84eb722b0ca11d0413b96f9f7',1,'online.php']]],
['openid_5fcontent',['openid_content',['../openid_8php.html#a9a13827dbcf61ae4e45f0b6b33a88f43',1,'openid.php']]],
['opensearch_5finit',['opensearch_init',['../opensearch_8php.html#ad13034877a496565ac7d99e9fc6f55e9',1,'opensearch.php']]],
- ['orient',['orient',['../classphoto__driver.html#a4de5bac8daea8f291a33c80788019d0d',1,'photo_driver']]]
+ ['optimize_5ftable',['optimize_table',['../classdba__driver.html#a77e59dcbeab30ca6000131d2e9ad4092',1,'dba_driver\optimize_table()'],['../classdba__postgres.html#a3de1ac375e98886dfc38fd0066e88f90',1,'dba_postgres\optimize_table()']]],
+ ['orient',['orient',['../classphoto__driver.html#a4de5bac8daea8f291a33c80788019d0d',1,'photo_driver']]],
+ ['os_5fmkdir',['os_mkdir',['../boot_8php.html#a5fbebdf7a1c0ea8f904dbd9d78c2c06c',1,'boot.php']]]
];
diff --git a/doc/html/search/functions_70.js b/doc/html/search/functions_70.js
index 2035c83a5..dc785aa57 100644
--- a/doc/html/search/functions_70.js
+++ b/doc/html/search/functions_70.js
@@ -1,5 +1,6 @@
var searchData=
[
+ ['p_5finit',['p_init',['../p_8php.html#af9d5530ca0b3dc9409cf591c39e2480e',1,'p.php']]],
['page_5fcontent',['page_content',['../page_8php.html#a91a5f649f68406149108bded1dc90b22',1,'page.php']]],
['page_5finit',['page_init',['../page_8php.html#a4d89800c0366a239191b1692c09635cf',1,'page.php']]],
['pagelist_5fwidget',['pagelist_widget',['../page__widgets_8php.html#a39d547771c5f12a17c097436c82f0fa2',1,'page_widgets.php']]],
@@ -13,6 +14,8 @@ var searchData=
['pdl_5fselector',['pdl_selector',['../comanche_8php.html#af7150df735e5ff9d467994cd6f769c6e',1,'comanche.php']]],
['pdledit_5fcontent',['pdledit_content',['../pdledit_8php.html#a59cb550f6b7a4e7d8196fbc9de601619',1,'pdledit.php']]],
['pdledit_5fpost',['pdledit_post',['../pdledit_8php.html#a81da3c955d0e3db55d148a31483104c7',1,'pdledit.php']]],
+ ['pemtome',['pemtome',['../crypto_8php.html#a798368843cdd9bb08386b48e53e29e8c',1,'crypto.php']]],
+ ['pemtorsa',['pemtorsa',['../crypto_8php.html#a35bc357c93f4ddc67ef377620b0349e8',1,'crypto.php']]],
['perm_5fis_5fallowed',['perm_is_allowed',['../permissions_8php.html#a67ada9ed51e77885b6b0f6a28cee1835',1,'permissions.php']]],
['permissions_5fsql',['permissions_sql',['../security_8php.html#afa683bc025a1d2fe9065e2f6cd71a22f',1,'security.php']]],
['perms2str',['perms2str',['../text_8php.html#a98fd99dee3da8cf4c148dc04efe782ee',1,'text.php']]],
@@ -33,36 +36,27 @@ var searchData=
['php_5finit',['php_init',['../php_8php.html#adb7164dfed9a4ecbe2e168e1e78f12f6',1,'php.php']]],
['ping_5finit',['ping_init',['../ping_8php.html#a77217b1b190b4c5d8770867b45f0c0a1',1,'ping.php']]],
['pipe_5fstreams',['pipe_streams',['../include_2attach_8php.html#a5d484de2d19a93071571d6499a50ae34',1,'attach.php']]],
+ ['pkcs1_5fencode',['pkcs1_encode',['../crypto_8php.html#a890b443f80f0968fb9eabd93fc99dbb5',1,'crypto.php']]],
+ ['pkcs1to8',['pkcs1to8',['../crypto_8php.html#a4d15d19b446dbf47804675df7c85e2a9',1,'crypto.php']]],
['pkcs5_5fpad',['pkcs5_pad',['../crypto_8php.html#ad5e51fd44cff93cfaa07a37e24a5edec',1,'crypto.php']]],
['pkcs5_5funpad',['pkcs5_unpad',['../crypto_8php.html#ac95ac3b1b23b65b04a86613d4206ae85',1,'crypto.php']]],
+ ['pkcs8_5fencode',['pkcs8_encode',['../crypto_8php.html#a0e941b6b18ff895d1a2448741abf2ef2',1,'crypto.php']]],
+ ['pkcs8to1',['pkcs8to1',['../crypto_8php.html#a7427a18417341aa35e2207bfa205e432',1,'crypto.php']]],
['plugin_5fis_5finstalled',['plugin_is_installed',['../plugin_8php.html#a855c4fdb38c0fc2714d537752a4347f9',1,'plugin.php']]],
['po2php_5frun',['po2php_run',['../po2php_8php.html#a3b75e36f913198299e99559b175cd8b4',1,'po2php.php']]],
['poco_5finit',['poco_init',['../poco_8php.html#a53def16f75e3d41f1d2bb7cfa4905498',1,'poco.php']]],
['poco_5fload',['poco_load',['../socgraph_8php.html#a5ef8bef37161df53718a21e93d02fbd6',1,'socgraph.php']]],
['poke_5fcontent',['poke_content',['../poke_8php.html#ac9190563a8da9c07a16f9dcd71cf6993',1,'poke.php']]],
['poke_5finit',['poke_init',['../poke_8php.html#a9725aab97b3983e6a98bd81c4efe7d3b',1,'poke.php']]],
+ ['poll_5fcontent',['poll_content',['../poll_8php.html#a3314c26bd2ac0ed831cebf3315cd3263',1,'poll.php']]],
+ ['poll_5finit',['poll_init',['../poll_8php.html#ab9ecd5b71af090a5da9c93f34f7ec930',1,'poll.php']]],
+ ['poll_5fpost',['poll_post',['../poll_8php.html#a26be9d4f230cb68f5be326198cfc6c77',1,'poll.php']]],
['poller_5frun',['poller_run',['../poller_8php.html#a5f12df3a4738124b6c039971e87e76da',1,'poller.php']]],
['pop_5flang',['pop_lang',['../language_8php.html#a78bd204955ec4cc3a9ac651285a1689d',1,'language.php']]],
['populate_5facl',['populate_acl',['../acl__selectors_8php.html#ad25bba63a51a2b0b5b463efae50df528',1,'acl_selectors.php']]],
['post_5factivity_5fitem',['post_activity_item',['../items_8php.html#a410f9c743877c125ca06312373346903',1,'items.php']]],
['post_5finit',['post_init',['../post_8php.html#af4b48181ce773ef0cdfc972441445c34',1,'post.php']]],
['post_5fpost',['post_post',['../post_8php.html#af59e6a1dc22d19d9257b01cd7ccedb75',1,'post.php']]],
- ['post_5fto_5fred_5fadmin',['post_to_red_admin',['../post__to__red_8php.html#aeec4125719184e7b097b3b9fba3101b5',1,'post_to_red.php']]],
- ['post_5fto_5fred_5fdeactivate',['post_to_red_deactivate',['../post__to__red_8php.html#a49fd35f7b1cdddfe6e26ddfcf8d3c4ec',1,'post_to_red.php']]],
- ['post_5fto_5fred_5fdelete_5fcomment',['post_to_red_delete_comment',['../post__to__red_8php.html#a5cc2a89a6d33cdb8e2ca557a69bef42d',1,'post_to_red.php']]],
- ['post_5fto_5fred_5fdelete_5fpost',['post_to_red_delete_post',['../post__to__red_8php.html#a4674bb5ce2baa32c559607460c39a2c5',1,'post_to_red.php']]],
- ['post_5fto_5fred_5fdisplay_5fadmin_5fpage',['post_to_red_display_admin_page',['../post__to__red_8php.html#a8ec8f8809e3c5d1b2c9598c8185d63aa',1,'post_to_red.php']]],
- ['post_5fto_5fred_5fdisplayadmincontent',['post_to_red_displayAdminContent',['../post__to__red_8php.html#a75db5d87226a0287a0ac0fa315f2bcfd',1,'post_to_red.php']]],
- ['post_5fto_5fred_5fget_5facct_5fname',['post_to_red_get_acct_name',['../post__to__red_8php.html#ae6f3a2c0561cbeacda5be565b06de8a7',1,'post_to_red.php']]],
- ['post_5fto_5fred_5fget_5favatar',['post_to_red_get_avatar',['../post__to__red_8php.html#ae0b881461afbdba93d9329068ea52136',1,'post_to_red.php']]],
- ['post_5fto_5fred_5fget_5fchannel_5fname',['post_to_red_get_channel_name',['../post__to__red_8php.html#aacba7a0646fc00ae6ac4f5dc383fccab',1,'post_to_red.php']]],
- ['post_5fto_5fred_5fget_5fpassword',['post_to_red_get_password',['../post__to__red_8php.html#a4d90ac085c14f53ff4d8ab4c23477ea6',1,'post_to_red.php']]],
- ['post_5fto_5fred_5fget_5fseed_5flocation',['post_to_red_get_seed_location',['../post__to__red_8php.html#a96d0ccecb96600ef1bfd50ab3f77315f',1,'post_to_red.php']]],
- ['post_5fto_5fred_5fpost',['post_to_red_post',['../post__to__red_8php.html#af5fd50e2c42ede85f8a9e8d9ee3cf540',1,'post_to_red.php']]],
- ['post_5fto_5fred_5fpost_5fcheckbox',['post_to_red_post_checkbox',['../post__to__red_8php.html#a0f139dea77a94c98f26007963eea639c',1,'post_to_red.php']]],
- ['post_5fto_5fred_5fpost_5ffield_5fdata',['post_to_red_post_field_data',['../post__to__red_8php.html#a7e68a8d9c83cb28d032aad3ea85ce0a6',1,'post_to_red.php']]],
- ['post_5fto_5fred_5fpost_5fmeta_5fcontent',['post_to_red_post_meta_content',['../post__to__red_8php.html#aa97aeda12ef080665f16311a4e1eb901',1,'post_to_red.php']]],
- ['post_5fto_5fred_5fsettings_5flink',['post_to_red_settings_link',['../post__to__red_8php.html#a906be8f72cf1aa2e199c0683ea6a4017',1,'post_to_red.php']]],
['posted_5fdates',['posted_dates',['../items_8php.html#ad2abb4644ff1f20fefbc80326fe01cf0',1,'items.php']]],
['preg_5fcallback_5fhelp_5finclude',['preg_callback_help_include',['../help_8php.html#a06b2a51aaabed99e53a9b639047c4ce4',1,'help.php']]],
['preg_5fheart',['preg_heart',['../text_8php.html#ac19d2b33a58372a357a43d51eed19162',1,'text.php']]],
@@ -87,7 +81,8 @@ var searchData=
['probe_5fzot',['probe_zot',['../include_2probe_8php.html#a3c02c7a23e8335a79c3c0f5331d11a85',1,'probe.php']]],
['proc_5frun',['proc_run',['../boot_8php.html#ab346a2ece14993861f3e4206befa94f0',1,'boot.php']]],
['process_5fchannel_5fsync_5fdelivery',['process_channel_sync_delivery',['../zot_8php.html#ac301c67864917c35922257950ae0f95c',1,'zot.php']]],
- ['process_5fdelivery',['process_delivery',['../zot_8php.html#a4d9e6ca295e443b740d9960c304b3474',1,'zot.php']]],
+ ['process_5fdelivery',['process_delivery',['../zot_8php.html#a0e3006e7a456b2175a9badc96bc5176d',1,'zot.php']]],
+ ['process_5flocation_5fdelivery',['process_location_delivery',['../zot_8php.html#a8eeefdb0dad4c436bea9d1c06c0a7988',1,'zot.php']]],
['process_5fmail_5fdelivery',['process_mail_delivery',['../zot_8php.html#aa6ae96db8cbbdbb10e6876d206bbf7cc',1,'zot.php']]],
['process_5fprofile_5fdelivery',['process_profile_delivery',['../zot_8php.html#a9a57b40669351c9791126b925cb7ef3b',1,'zot.php']]],
['profile_5factivity',['profile_activity',['../activities_8php.html#a80134e807719b3c54aba971958d2e132',1,'activities.php']]],
@@ -110,8 +105,9 @@ var searchData=
['prune_5fhub_5freinstalls',['prune_hub_reinstalls',['../hubloc_8php.html#ad3d0dcfcfcb347744f7617fe6f5de002',1,'hubloc.php']]],
['public_5fpermissions_5fsql',['public_permissions_sql',['../security_8php.html#ab3bdd30dc60d9ee72370b866aa4a2d01',1,'security.php']]],
['public_5frecips',['public_recips',['../zot_8php.html#a083aec6c900d244e1bfc1406f9461465',1,'zot.php']]],
+ ['pubrsatome',['pubrsatome',['../crypto_8php.html#a2a3fae7caca27f86d158eeaf69b6f287',1,'crypto.php']]],
['pubsites_5fcontent',['pubsites_content',['../pubsites_8php.html#af614e279aab54065345bda6b03eafdf0',1,'pubsites.php']]],
['purify_5fhtml',['purify_html',['../text_8php.html#a4841df5beabdd1bdd1ed56781a915d61',1,'text.php']]],
['push_5flang',['push_lang',['../language_8php.html#ac9142ef1d01a235c760deb0f16643f5a',1,'language.php']]],
- ['put',['put',['../classRedFile.html#a41a49a583eb276b75626fcf97f4a699c',1,'RedFile']]]
+ ['put',['put',['../classRedMatrix_1_1RedDAV_1_1RedFile.html#a709ec1288d21ddf1353524435ab916f0',1,'RedMatrix::RedDAV::RedFile']]]
];
diff --git a/doc/html/search/functions_71.js b/doc/html/search/functions_71.js
index 11b357b31..ce23278cf 100644
--- a/doc/html/search/functions_71.js
+++ b/doc/html/search/functions_71.js
@@ -1,7 +1,8 @@
var searchData=
[
- ['q',['q',['../classdba__driver.html#a558e738b88ae893cc5d79ffa3793d555',1,'dba_driver\q()'],['../classdba__mysql.html#ac3fd60c278f400907322dac578754a99',1,'dba_mysql\q()'],['../classdba__mysqli.html#a611c4de8d6d7512dffb83a38bb6701ec',1,'dba_mysqli\q()'],['../dba__driver_8php.html#a2c09a731d3b4fef41fed0e83db01be1f',1,'q():&#160;dba_driver.php']]],
+ ['q',['q',['../classdba__driver.html#a558e738b88ae893cc5d79ffa3793d555',1,'dba_driver\q()'],['../classdba__mysql.html#ac3fd60c278f400907322dac578754a99',1,'dba_mysql\q()'],['../classdba__mysqli.html#a611c4de8d6d7512dffb83a38bb6701ec',1,'dba_mysqli\q()'],['../classdba__postgres.html#a70352880231fba0b859f82cd5b290a9a',1,'dba_postgres\q()'],['../dba__driver_8php.html#a2c09a731d3b4fef41fed0e83db01be1f',1,'q():&#160;dba_driver.php']]],
['qp',['qp',['../text_8php.html#afc998d2796a6b2a08e96f7cc061e7221',1,'text.php']]],
['queue_5frun',['queue_run',['../queue_8php.html#af8c93de86d866c3200174c8450a0f341',1,'queue.php']]],
+ ['quote_5finterval',['quote_interval',['../classdba__driver.html#ac9127e9c55fcc93bcfbb323b9b99b9d9',1,'dba_driver\quote_interval()'],['../classdba__postgres.html#a56f926f218155c88807e0e06f6817a72',1,'dba_postgres\quote_interval()']]],
['quotelevel',['quotelevel',['../html2plain_8php.html#a56d29b254333d29abb9d96a9a903a4b0',1,'html2plain.php']]]
];
diff --git a/doc/html/search/functions_72.js b/doc/html/search/functions_72.js
index 43df032e3..41d4f1f93 100644
--- a/doc/html/search/functions_72.js
+++ b/doc/html/search/functions_72.js
@@ -1,18 +1,17 @@
var searchData=
[
- ['random_5fprofile',['random_profile',['../Contact_8php.html#a852fa476f0c70bde10a4f2533aec5f71',1,'Contact.php']]],
+ ['random_5fprofile',['random_profile',['../Contact_8php.html#a7e3f5bef8ea1d2bf8434c9be36a2b713',1,'Contact.php']]],
['random_5fstring',['random_string',['../text_8php.html#a9d6a5ee1290de7a8b483fe78585daade',1,'text.php']]],
['randprof_5finit',['randprof_init',['../randprof_8php.html#abf5dba3c608b9304cbf68327cd31b090',1,'randprof.php']]],
['rbmark_5fcontent',['rbmark_content',['../rbmark_8php.html#a43fec4960b50926251574762cc491f76',1,'rbmark.php']]],
['rbmark_5fpost',['rbmark_post',['../rbmark_8php.html#ac5a66aa8599fa5dc702bae396d8d1f8c',1,'rbmark.php']]],
['rconnect_5furl',['rconnect_url',['../Contact_8php.html#a2f4f495d53f2a334ab75292af79d3c91',1,'Contact.php']]],
['rebuild_5ftheme_5ftable',['rebuild_theme_table',['../admin_8php.html#ae46311a3fefc21abc838a26e91789de6',1,'admin.php']]],
- ['red_5fcomment',['red_comment',['../post__to__red_8php.html#a085c250d4ceff5e4f10052f3d2039823',1,'post_to_red.php']]],
+ ['receive_5fpost',['receive_post',['../receive_8php.html#a03d8fa26e77844020ba5602deca7d494',1,'receive.php']]],
['red_5fescape_5fcodeblock',['red_escape_codeblock',['../items_8php.html#a49905ea75adfe8a2d110be344d18d6a6',1,'items.php']]],
['red_5fescape_5fzrl_5fcallback',['red_escape_zrl_callback',['../items_8php.html#a83a349062945d585edb4b3c5d763ab6e',1,'items.php']]],
['red_5fitem_5fnew',['red_item_new',['../include_2api_8php.html#aafa82b65a9f879a1a1197cfe8aaf3898',1,'api.php']]],
['red_5funescape_5fcodeblock',['red_unescape_codeblock',['../items_8php.html#ad4ee16e3ff1eaf60428c61f82ba25e6a',1,'items.php']]],
- ['red_5fxmlrpc_5fmethods',['red_xmlrpc_methods',['../post__to__red_8php.html#a3a2af6ad845239f26e86fccabf8639e1',1,'post_to_red.php']]],
['red_5fzrl_5fcallback',['red_zrl_callback',['../items_8php.html#a4e6d7639431e0dd8e9f4dba8e1ac408b',1,'items.php']]],
['red_5fzrlify_5fimg_5fcallback',['red_zrlify_img_callback',['../items_8php.html#a78a60e39f6991bd3324a24dcbf9dac5a',1,'items.php']]],
['redbasic_5fform',['redbasic_form',['../view_2theme_2redbasic_2php_2config_8php.html#a8574a41fa9735ee391ba57ab24b93793',1,'config.php']]],
@@ -27,6 +26,12 @@ var searchData=
['ref_5fsession_5fopen',['ref_session_open',['../session_8php.html#a26fa1042356d555023cbf15ddd4f8507',1,'session.php']]],
['ref_5fsession_5fread',['ref_session_read',['../session_8php.html#a7f0f50576360d9ba52d29364e0b83a8e',1,'session.php']]],
['ref_5fsession_5fwrite',['ref_session_write',['../session_8php.html#ac4461c1984543d3553e73dba2771568f',1,'session.php']]],
+ ['refimport_5fcontent',['refimport_content',['../refimport_8php.html#ad97ebb5feda0230a4834e0b3637a0d29',1,'refimport.php']]],
+ ['reflect_5farticle_5fcallback',['reflect_article_callback',['../refimport_8php.html#a53434bc19e6264db89e18d92ddc09860',1,'refimport.php']]],
+ ['reflect_5fcomment_5fstore',['reflect_comment_store',['../refimport_8php.html#a01a29630fa5e1ce6cd5e1fd75280747c',1,'refimport.php']]],
+ ['reflect_5ffind_5fuser',['reflect_find_user',['../refimport_8php.html#aa98de7d112e3a5b4b6956f108d04a41d',1,'refimport.php']]],
+ ['reflect_5fget_5fchannel',['reflect_get_channel',['../refimport_8php.html#a6c3e0475fde9fe72ff2492a5e3e5259c',1,'refimport.php']]],
+ ['reflect_5fphoto_5fcallback',['reflect_photo_callback',['../refimport_8php.html#ae9c56f779d1e0ac7bcb2a460129e7ae5',1,'refimport.php']]],
['register_5fcontent',['register_content',['../register_8php.html#a0e91f57f111407ea8d3223a05022bb2a',1,'register.php']]],
['register_5fhook',['register_hook',['../plugin_8php.html#a425472c5f3afc137268b2ad45652b209',1,'plugin.php']]],
['register_5finit',['register_init',['../register_8php.html#ae20c0cd40f738d6295de58b9202c83d5',1,'register.php']]],
@@ -43,13 +48,16 @@ var searchData=
['remove_5fall_5fxchan_5fresources',['remove_all_xchan_resources',['../Contact_8php.html#acc12cda999c88c4d6185cca967c15125',1,'Contact.php']]],
['remove_5fchild',['remove_child',['../classItem.html#a2ce70ef63f9f4d86a09c351678806925',1,'Item']]],
['remove_5fcommunity_5ftag',['remove_community_tag',['../zot_8php.html#aad25a3fe0e1566121d6fb8222979bc10',1,'zot.php']]],
+ ['remove_5fobsolete_5fhublocs',['remove_obsolete_hublocs',['../hubloc_8php.html#a84c79b7be352f62d12fe4fa2c80fc6ea',1,'hubloc.php']]],
['remove_5fparent',['remove_parent',['../classItem.html#aa452b5bcd8dea12119b09212c615cb41',1,'Item']]],
['remove_5fqueue_5fitem',['remove_queue_item',['../queue__fn_8php.html#a8fe71e981399bbf5d000a6ca42f57b24',1,'queue_fn.php']]],
+ ['removeaccount_5fcontent',['removeaccount_content',['../removeaccount_8php.html#a516e7380b9e5796054aa8245f3509695',1,'removeaccount.php']]],
+ ['removeaccount_5fpost',['removeaccount_post',['../removeaccount_8php.html#a26a3325292e932c59793430ab737126a',1,'removeaccount.php']]],
['removeme_5fcontent',['removeme_content',['../removeme_8php.html#a065a589caa2aa84c60f7073a28f0ad9c',1,'removeme.php']]],
['removeme_5fpost',['removeme_post',['../removeme_8php.html#a7be08738beca44bb98a79e01cdb2ee88',1,'removeme.php']]],
['render_5flocation_5fdefault',['render_location_default',['../conversation_8php.html#a40b9b5e7825bc73932a32e667f05e6f2',1,'conversation.php']]],
['replace',['replace',['../classTemplate.html#a285b5b2007dbbf733476273df3fed4ef',1,'Template']]],
- ['replace_5fmacros',['replace_macros',['../classFriendicaSmartyEngine.html#ad62f1181d2f02b54b46731ad2bd46db2',1,'FriendicaSmartyEngine\replace_macros()'],['../interfaceITemplateEngine.html#aaa7381c8becc3d1c1790b53988a0f243',1,'ITemplateEngine\replace_macros()'],['../classTemplate.html#a07737733f6949bdedea1e3d301b2ab7b',1,'Template\replace_macros()'],['../text_8php.html#a9c6ce4e12a4ac883c5e3f36fed6e1e09',1,'replace_macros():&#160;text.php']]],
+ ['replace_5fmacros',['replace_macros',['../interfaceITemplateEngine.html#aaa7381c8becc3d1c1790b53988a0f243',1,'ITemplateEngine\replace_macros()'],['../classFriendicaSmartyEngine.html#ad62f1181d2f02b54b46731ad2bd46db2',1,'FriendicaSmartyEngine\replace_macros()'],['../classTemplate.html#a07737733f6949bdedea1e3d301b2ab7b',1,'Template\replace_macros()'],['../text_8php.html#a9c6ce4e12a4ac883c5e3f36fed6e1e09',1,'replace_macros():&#160;text.php']]],
['requestdata',['requestdata',['../include_2api_8php.html#a43c47de8565cc00c3369cb35c19cc75e',1,'api.php']]],
['retain_5fitem',['retain_item',['../items_8php.html#af6237605c60d69abdd959ddbbee3420c',1,'items.php']]],
['return_5fbytes',['return_bytes',['../text_8php.html#ae2126da85966da0e79c6bcbac63b0bda',1,'text.php']]],
@@ -59,8 +67,11 @@ var searchData=
['rotate',['rotate',['../classphoto__driver.html#a2f2b6337cf9aa0688d10b422123f0eec',1,'photo_driver\rotate()'],['../classphoto__gd.html#a77f87730b11093b76980c541159df37d',1,'photo_gd\rotate()'],['../classphoto__imagick.html#a9df5738a4a18e76dd304c440e96f045f',1,'photo_imagick\rotate()']]],
['rpost_5fcallback',['rpost_callback',['../bbcode_8php.html#a5165a5221a52cf1bc1d7812ebd2069c7',1,'bbcode.php']]],
['rpost_5fcontent',['rpost_content',['../rpost_8php.html#a8190354d789000806d9879aea276728f',1,'rpost.php']]],
+ ['rrmdir',['rrmdir',['../Contact_8php.html#ab5895b75a3b2abdddf1cb351a8c6b58b',1,'Contact.php']]],
['rsa_5fsign',['rsa_sign',['../crypto_8php.html#a920e5f222d0020f47556033d8b2b6552',1,'crypto.php']]],
['rsa_5fverify',['rsa_verify',['../crypto_8php.html#ab4f21d8f6b8ece0915e7c8bb73379f96',1,'crypto.php']]],
+ ['rsatopem',['rsatopem',['../crypto_8php.html#a7f7e650aaeaa3832580a73eb00966b26',1,'crypto.php']]],
['rsd_5fxml_5fcontent',['rsd_xml_content',['../rsd__xml_8php.html#a740cd02fa15e5a53f8547fac73f0ab82',1,'rsd_xml.php']]],
+ ['run',['run',['../classRedMatrix_1_1Import_1_1Import.html#a8d138a9a7d4f79b81d3446ca216a602c',1,'RedMatrix::Import::Import']]],
['runs',['runs',['../docblox__errorchecker_8php.html#a21b4bbe5aae2d85db33affc7126a67ec',1,'docblox_errorchecker.php']]]
];
diff --git a/doc/html/search/functions_73.js b/doc/html/search/functions_73.js
index 13a99f2ac..fca2627b7 100644
--- a/doc/html/search/functions_73.js
+++ b/doc/html/search/functions_73.js
@@ -1,5 +1,6 @@
var searchData=
[
+ ['salmon_5fkey',['salmon_key',['../crypto_8php.html#a9191447cc46f0b4eaba3273e313994d5',1,'crypto.php']]],
['sanitise_5facl',['sanitise_acl',['../text_8php.html#a9fbeae13c9abd6e27cb4d8d1817f969c',1,'text.php']]],
['save',['save',['../classphoto__driver.html#a5864fae7d8389372955a8e78cec527ac',1,'photo_driver']]],
['saveimage',['saveImage',['../classphoto__driver.html#a22ecb8c696de65a5a10bd185be9d90c3',1,'photo_driver']]],
@@ -7,20 +8,22 @@ var searchData=
['scaleimage',['scaleImage',['../classphoto__driver.html#af0f7ec48a31ae9b557b6e3f8bd5b4af0',1,'photo_driver']]],
['scaleimagesquare',['scaleImageSquare',['../classphoto__driver.html#a56634842b071b96502716e9843ea5361',1,'photo_driver']]],
['scaleimageup',['scaleImageUp',['../classphoto__driver.html#a1a63c4ae17e892a115ab9cf6efb960ce',1,'photo_driver']]],
+ ['scrape_5ffeed',['scrape_feed',['../include_2network_8php.html#a316f318167a039c89719afbd129a8f3c',1,'network.php']]],
+ ['scrape_5fvcard',['scrape_vcard',['../include_2network_8php.html#acb0bd7f5fe38ff1eaebeae3284525070',1,'network.php']]],
['script_5fpath',['script_path',['../plugin_8php.html#a0e8c2ea50bfdbc39e17ccccaea21ddc3',1,'plugin.php']]],
['search',['search',['../text_8php.html#a876e94892867019935b348b573299352',1,'text.php']]],
['search_5fac_5finit',['search_ac_init',['../search__ac_8php.html#a14f90c83a3f2be095e9e2992a8d66138',1,'search_ac.php']]],
['search_5fcontent',['search_content',['../search_8php.html#ab2568591359edde5b483a6cd9a24b2cc',1,'search.php']]],
['search_5finit',['search_init',['../search_8php.html#acf19fd30f07f495781ca0d7a0a08b435',1,'search.php']]],
['searchbox',['searchbox',['../text_8php.html#aae91e4d2a2c6f7a9daccd2c186ae3447',1,'text.php']]],
- ['select_5ftimezone',['select_timezone',['../datetime_8php.html#a633dadba426fa2f60b25fabdb19ebc1f',1,'datetime.php']]],
['send',['send',['../classenotify.html#afbc088860f534c6c05788b48cfc262c6',1,'enotify']]],
['send_5fmessage',['send_message',['../include_2message_8php.html#a751ffd6635022b2190f56154ee745752',1,'message.php']]],
['send_5freg_5fapproval_5femail',['send_reg_approval_email',['../account_8php.html#a014de2d5d5c9785de5bf547a485822fa',1,'account.php']]],
['send_5fstatus_5fnotifications',['send_status_notifications',['../items_8php.html#aab9e0c58247427126de0699c729c3b6c',1,'items.php']]],
['send_5fverification_5femail',['send_verification_email',['../account_8php.html#aa9c29c497c17d8f9344dce8631ad8761',1,'account.php']]],
- ['service_5fclass_5fallows',['service_class_allows',['../plugin_8php.html#a030cec6793b909c439c0336ba39b1571',1,'plugin.php']]],
- ['service_5fclass_5ffetch',['service_class_fetch',['../plugin_8php.html#a905b54e10704b283ac64680a8abc0971',1,'plugin.php']]],
+ ['service_5fclass_5fallows',['service_class_allows',['../account_8php.html#a030cec6793b909c439c0336ba39b1571',1,'account.php']]],
+ ['service_5fclass_5ffetch',['service_class_fetch',['../account_8php.html#a905b54e10704b283ac64680a8abc0971',1,'account.php']]],
+ ['service_5flimits_5fcontent',['service_limits_content',['../service__limits_8php.html#a653424aac63c5cd05ba70c3c77bf7f8a',1,'service_limits.php']]],
['set',['set',['../classCache.html#ae622b82adc1c2fb1f3e2cc4fd9688fce',1,'Cache']]],
['set_5faccount',['set_account',['../classApp.html#aeb1fe1c8ad9aa639909bd183ce578536',1,'App']]],
['set_5fapp',['set_app',['../classBaseObject.html#a0a9acda12d751692834cf6999f889223',1,'BaseObject']]],
@@ -31,6 +34,7 @@ var searchData=
['set_5fconfig',['set_config',['../include_2config_8php.html#ad6da879e4fb5b37d1e161d4e9be5c32a',1,'config.php']]],
['set_5fconversation',['set_conversation',['../classItem.html#aa8b1bbc4236890694635295e46d7fd72',1,'Item']]],
['set_5fdefault_5flogin_5fidentity',['set_default_login_identity',['../identity_8php.html#a78151baf4407a8482d2681a91a9c486b',1,'identity.php']]],
+ ['set_5fdisplay_5fmode',['set_display_mode',['../classItem.html#ac09a4728d37b7783714243f7f8167214',1,'Item']]],
['set_5fgroups',['set_groups',['../classApp.html#a3d84af5e42082098672531cd1a618853',1,'App']]],
['set_5fhostname',['set_hostname',['../classApp.html#a344d2b7dc2f276648d521aee4da1731c',1,'App']]],
['set_5fmode',['set_mode',['../classConversation.html#a66f121ca4026246f86a732e5faa0682c',1,'Conversation']]],
@@ -45,19 +49,24 @@ var searchData=
['set_5ftemplate',['set_template',['../classItem.html#af1b73df9b7c4b927e26b7e243b491f42',1,'Item']]],
['set_5ftemplate_5fengine',['set_template_engine',['../classApp.html#a20d1890cc16b22ba79eeb0cbf2f719f7',1,'App']]],
['set_5fwidget',['set_widget',['../classApp.html#a123b903dfe5d3488cc68db3471d36fd2',1,'App']]],
- ['set_5fwriteable',['set_writeable',['../classRedBrowser.html#a40fdbb9d9fe6c1243bbf135dd5b0a06f',1,'RedBrowser']]],
+ ['set_5fwriteable',['set_writeable',['../classRedMatrix_1_1RedDAV_1_1RedBrowser.html#aa1607857cb59738c4dce2fe8e73d8f19',1,'RedMatrix::RedDAV::RedBrowser']]],
['set_5fxconfig',['set_xconfig',['../include_2config_8php.html#afe117b70f1bba2f6348d9300b601f86e',1,'config.php']]],
- ['setbrowserplugin',['setBrowserPlugin',['../classRedBasicAuth.html#a358ddad4abb5aa8c1382cf49a907adbc',1,'RedBasicAuth']]],
- ['setcurrentuser',['setCurrentUser',['../classRedBasicAuth.html#a072e8244a9a7f191b32d3db5ac94f857',1,'RedBasicAuth']]],
+ ['setauthenticated',['setAuthenticated',['../classRedMatrix_1_1RedDAV_1_1RedBasicAuth.html#a2926fe923baade564f2663632fa8c633',1,'RedMatrix::RedDAV::RedBasicAuth']]],
+ ['setbrowserplugin',['setBrowserPlugin',['../classRedMatrix_1_1RedDAV_1_1RedBasicAuth.html#adc72f36f0b2b17b20ea4df900afcd697',1,'RedMatrix::RedDAV::RedBasicAuth']]],
+ ['setcurrentuser',['setCurrentUser',['../classRedMatrix_1_1RedDAV_1_1RedBasicAuth.html#aadce020fb595c7943829d7f995d3f998',1,'RedMatrix::RedDAV::RedBasicAuth']]],
['setdimensions',['setDimensions',['../classphoto__driver.html#ae663867d2c4eaa2fae50d60670920143',1,'photo_driver\setDimensions()'],['../classphoto__gd.html#a1c75304bd15f3b9986f0b315fb59271e',1,'photo_gd\setDimensions()'],['../classphoto__imagick.html#af92901d252c1e6ab5b54eebedbed23bb',1,'photo_imagick\setDimensions()']]],
- ['setname',['setName',['../classRedDirectory.html#adc48035679e52c55d9881f83de535553',1,'RedDirectory\setName()'],['../classRedFile.html#a38a82bfc1b30028ea6ac75923e90fa25',1,'RedFile\setName()']]],
+ ['setname',['setName',['../classRedMatrix_1_1RedDAV_1_1RedDirectory.html#a14ac61d31a031d139956763db4e03956',1,'RedMatrix\RedDAV\RedDirectory\setName()'],['../classRedMatrix_1_1RedDAV_1_1RedFile.html#a0350cb4e0327e1f9922869a48ee04f1d',1,'RedMatrix\RedDAV\RedFile\setName()']]],
+ ['settimezone',['setTimezone',['../classRedMatrix_1_1RedDAV_1_1RedBasicAuth.html#af6d239fefed05859327ee8db626703f9',1,'RedMatrix::RedDAV::RedBasicAuth']]],
['settings_5finit',['settings_init',['../settings_8php.html#a3a4cde287482fced008583f54ba2a722',1,'settings.php']]],
['settings_5fpost',['settings_post',['../settings_8php.html#aa7ee94d88ac088edb04ccf3a26de3586',1,'settings.php']]],
['setup_5fcontent',['setup_content',['../setup_8php.html#a88247384a96e14516f474d7af6a465c1',1,'setup.php']]],
['setup_5finit',['setup_init',['../setup_8php.html#a267555abd17290e659b4bf44b885e4e0',1,'setup.php']]],
['setup_5fpost',['setup_post',['../setup_8php.html#a13cf286774149a0a7bd8adb8179cec75',1,'setup.php']]],
['sexpref_5fselector',['sexpref_selector',['../profile__selectors_8php.html#a3b50b3ea4ea4bdbebebfffc5d1b157c7',1,'profile_selectors.php']]],
+ ['sexpref_5fselector_5fmin',['sexpref_selector_min',['../profile__selectors_8php.html#ab0eae5c0ceba77364469f0f580f0d074',1,'profile_selectors.php']]],
['share_5finit',['share_init',['../share_8php.html#afeb26046bdd02567ecd29ab5f188b249',1,'share.php']]],
+ ['share_5fshield',['share_shield',['../bb2diaspora_8php.html#ad033be99e87a2aaa05e569c68f30792d',1,'bb2diaspora.php']]],
+ ['share_5funshield',['share_unshield',['../bb2diaspora_8php.html#ab61b4f8c065e97b151411858bb2f209a',1,'bb2diaspora.php']]],
['showform',['showForm',['../fpostit_8php.html#a3f3ae3ae61578b5671673914fd894443',1,'fpostit.php']]],
['site_5fdefault_5fperms',['site_default_perms',['../permissions_8php.html#aa8b7b102c653649d7a71b5a1c044d90d',1,'permissions.php']]],
['siteinfo_5fcontent',['siteinfo_content',['../siteinfo_8php.html#a70c09bfb6dd1c86a125a35f62ed53656',1,'siteinfo.php']]],
@@ -78,9 +87,11 @@ var searchData=
['sslify',['sslify',['../text_8php.html#a33bdb5d4bfff2ede7caf61a98ac0a2e9',1,'text.php']]],
['sslify_5finit',['sslify_init',['../sslify_8php.html#a75b11e54a3d1fc83e7d4c0e8b4dab316',1,'sslify.php']]],
['starred_5finit',['starred_init',['../starred_8php.html#a63024fb418c678e49fd535e3752d349a',1,'starred.php']]],
+ ['start_5fdelivery_5fchain',['start_delivery_chain',['../items_8php.html#adf2b8137dc4ad9ec958de2842f16f3c2',1,'items.php']]],
['startup',['startup',['../boot_8php.html#aca47505b8732177f52bb2d647eb2741c',1,'boot.php']]],
['status_5feditor',['status_editor',['../conversation_8php.html#a2a7d541854bba755eb8ada59af7dcb1a',1,'conversation.php']]],
- ['store',['store',['../classphoto__driver.html#a642a8d0c4ad5f887c99c6af77cee287b',1,'photo_driver']]],
+ ['store',['store',['../classRedMatrix_1_1Import_1_1Import.html#a33ed595de044c0ec1cd84cca719e31dc',1,'RedMatrix\Import\Import\store()'],['../classphoto__driver.html#a642a8d0c4ad5f887c99c6af77cee287b',1,'photo_driver\store()']]],
+ ['store_5fdiaspora_5fcomment_5fsig',['store_diaspora_comment_sig',['../items_8php.html#a25221826fa4621f523c68483e3b6af26',1,'items.php']]],
['store_5fitem_5ftag',['store_item_tag',['../taxonomy_8php.html#a4ba1339b2a7054971178ce194e4440fd',1,'taxonomy.php']]],
['stream_5fperms_5fapi_5fuids',['stream_perms_api_uids',['../security_8php.html#a6126c77a1267e046ac59cf864613f011',1,'security.php']]],
['stream_5fperms_5fxchans',['stream_perms_xchans',['../security_8php.html#a3ef2be6a7e4928e39d50059d6feb457c',1,'security.php']]],
@@ -89,12 +100,15 @@ var searchData=
['stringify_5farray_5felms',['stringify_array_elms',['../text_8php.html#a8796f6a9ca592ecdce7b3afc3462aa13',1,'text.php']]],
['strip_5fzids',['strip_zids',['../text_8php.html#a2f2585385530cb935a6325c809d84a4d',1,'text.php']]],
['stripdcode_5fbr_5fcb',['stripdcode_br_cb',['../bb2diaspora_8php.html#a180b0e3a7d702998be19e3c3b44b0e93',1,'bb2diaspora.php']]],
+ ['stumble_5finit',['stumble_init',['../stumble_2php_2theme_8php.html#a71db9eff6289e0ee47771c37c01d6753',1,'theme.php']]],
['subthread_5fcontent',['subthread_content',['../subthread_8php.html#a50368f3d825b77996030528e7fbfa3d3',1,'subthread.php']]],
+ ['suckerberg_5finit',['suckerberg_init',['../suckerberg_2php_2theme_8php.html#a4104fce7d5fb71d15ed811978b628fc8',1,'theme.php']]],
['suggest_5fcontent',['suggest_content',['../suggest_8php.html#a58748a8235d4523f8333847f3e42dd91',1,'suggest.php']]],
['suggest_5finit',['suggest_init',['../suggest_8php.html#a696acf1dd8070e479adcc80c63c6718c',1,'suggest.php']]],
['suggestion_5fquery',['suggestion_query',['../socgraph_8php.html#a76e6fca3d2bc842dcd9e710bb87c8329',1,'socgraph.php']]],
['supportedtypes',['supportedTypes',['../classphoto__driver.html#a6eee8e36eaf9339f4faf80ddd43162da',1,'photo_driver\supportedTypes()'],['../classphoto__gd.html#a16f3dd7d3559f715aa2fe3f7880836dd',1,'photo_gd\supportedTypes()'],['../classphoto__imagick.html#a27596faca6108d9d563674d1b654a0b7',1,'photo_imagick\supportedTypes()']]],
['sync_5fdirectories',['sync_directories',['../dir__fns_8php.html#aa666e7df6ca8c332f4081c9b66b4bdf6',1,'dir_fns.php']]],
+ ['sync_5flocations',['sync_locations',['../zot_8php.html#ab15c04e7e5f44edf45ec50dd7d183254',1,'zot.php']]],
['system_5fdown',['system_down',['../system__unavailable_8php.html#a73751a6bcc17ad3ca503496e2fb020fa',1,'system_unavailable.php']]],
['system_5funavailable',['system_unavailable',['../boot_8php.html#ac608a34f3bc180e7724192e0fd31f9b0',1,'boot.php']]]
];
diff --git a/doc/html/search/functions_74.js b/doc/html/search/functions_74.js
index e2cbe51a5..d20c9760d 100644
--- a/doc/html/search/functions_74.js
+++ b/doc/html/search/functions_74.js
@@ -13,25 +13,24 @@ var searchData=
['template_5fescape',['template_escape',['../template__processor_8php.html#ab2bcd8738f20f293636a6ae8e1099db5',1,'template_processor.php']]],
['template_5funescape',['template_unescape',['../template__processor_8php.html#ac635bb19a5f6eadd6b0cddefdd537c1e',1,'template_processor.php']]],
['term_5fquery',['term_query',['../taxonomy_8php.html#a7a913d19c77610da689be48fbbf6734c',1,'taxonomy.php']]],
- ['terminate_5ffriendship',['terminate_friendship',['../Contact_8php.html#a38daa1c210b78385307123450ca9a1fc',1,'Contact.php']]],
['termtype',['termtype',['../items_8php.html#ad34827ed330898456783fb14c7b46154',1,'items.php']]],
['tgroup_5fcheck',['tgroup_check',['../items_8php.html#a88c6cf7649ac836fbbed82a7a0315110',1,'items.php']]],
- ['theme_5fadmin',['theme_admin',['../view_2theme_2blogga_2php_2config_8php.html#a09cd81013505f83aea0771243a1e4e53',1,'theme_admin(&amp;$a):&#160;config.php'],['../view_2theme_2blogga_2view_2theme_2blog_2config_8php.html#a09cd81013505f83aea0771243a1e4e53',1,'theme_admin(&amp;$a):&#160;config.php']]],
- ['theme_5fadmin_5fpost',['theme_admin_post',['../view_2theme_2blogga_2php_2config_8php.html#aef2da5582b7cb6b5f63e5ca5d69fd30b',1,'theme_admin_post(&amp;$a):&#160;config.php'],['../view_2theme_2blogga_2view_2theme_2blog_2config_8php.html#aef2da5582b7cb6b5f63e5ca5d69fd30b',1,'theme_admin_post(&amp;$a):&#160;config.php']]],
['theme_5fattachments',['theme_attachments',['../text_8php.html#af9c9ac3f74c82dc60acfa404d0e9dc53',1,'text.php']]],
- ['theme_5fcontent',['theme_content',['../view_2theme_2apw_2php_2config_8php.html#aa7d5739b72efef9822535b2b32d5364d',1,'theme_content(&amp;$a):&#160;config.php'],['../view_2theme_2blogga_2php_2config_8php.html#aa7d5739b72efef9822535b2b32d5364d',1,'theme_content(&amp;$a):&#160;config.php'],['../view_2theme_2blogga_2view_2theme_2blog_2config_8php.html#aa7d5739b72efef9822535b2b32d5364d',1,'theme_content(&amp;$a):&#160;config.php'],['../view_2theme_2redbasic_2php_2config_8php.html#aa7d5739b72efef9822535b2b32d5364d',1,'theme_content(&amp;$a):&#160;config.php']]],
+ ['theme_5fcontent',['theme_content',['../view_2theme_2apw_2php_2config_8php.html#aa7d5739b72efef9822535b2b32d5364d',1,'theme_content(&amp;$a):&#160;config.php'],['../view_2theme_2redbasic_2php_2config_8php.html#aa7d5739b72efef9822535b2b32d5364d',1,'theme_content(&amp;$a):&#160;config.php']]],
['theme_5finclude',['theme_include',['../plugin_8php.html#a65fedcffbe03562ef844cabee37d34e2',1,'plugin.php']]],
- ['theme_5fpost',['theme_post',['../view_2theme_2apw_2php_2config_8php.html#ad29461920cf03b9ce1428e21eb1f4ba6',1,'theme_post(&amp;$a):&#160;config.php'],['../view_2theme_2blogga_2php_2config_8php.html#ad29461920cf03b9ce1428e21eb1f4ba6',1,'theme_post(&amp;$a):&#160;config.php'],['../view_2theme_2blogga_2view_2theme_2blog_2config_8php.html#ad29461920cf03b9ce1428e21eb1f4ba6',1,'theme_post(&amp;$a):&#160;config.php'],['../view_2theme_2redbasic_2php_2config_8php.html#ad29461920cf03b9ce1428e21eb1f4ba6',1,'theme_post(&amp;$a):&#160;config.php']]],
+ ['theme_5fpost',['theme_post',['../view_2theme_2apw_2php_2config_8php.html#ad29461920cf03b9ce1428e21eb1f4ba6',1,'theme_post(&amp;$a):&#160;config.php'],['../view_2theme_2redbasic_2php_2config_8php.html#ad29461920cf03b9ce1428e21eb1f4ba6',1,'theme_post(&amp;$a):&#160;config.php']]],
['theme_5fstatus',['theme_status',['../admin_8php.html#ad4f74f33944a98b56d2c8c7601f124a4',1,'admin.php']]],
['thing_5fcontent',['thing_content',['../thing_8php.html#a24a35f1e64029a67fdbea94a776ae04b',1,'thing.php']]],
['thing_5finit',['thing_init',['../thing_8php.html#a8be23b1d475ec3d9291999221c674c80',1,'thing.php']]],
- ['timesel',['timesel',['../datetime_8php.html#a36d3d6dff8d76b5f295bb3d9c535a5b1',1,'datetime.php']]],
+ ['timesel',['timesel',['../datetime_8php.html#a3f239f94e23335d860b148958d87a093',1,'datetime.php']]],
['timezone_5fcmp',['timezone_cmp',['../datetime_8php.html#aa51b5a7ea4f931b23acbdfcea46e9865',1,'datetime.php']]],
['title_5fis_5fbody',['title_is_body',['../items_8php.html#aa371905f0a211b307cb3f7188c6cba04',1,'items.php']]],
['toggle_5fmobile_5finit',['toggle_mobile_init',['../toggle__mobile_8php.html#aca53ade8971802b45c31e722b22c6254',1,'toggle_mobile.php']]],
['toggle_5fsafesearch_5finit',['toggle_safesearch_init',['../toggle__safesearch_8php.html#a23d5cfb2727a266e44993ffbf5595a79',1,'toggle_safesearch.php']]],
['toggle_5ftheme',['toggle_theme',['../admin_8php.html#af81f081851791cd15e49e8ff6722dc27',1,'admin.php']]],
+ ['translate_5fscope',['translate_scope',['../items_8php.html#aabfaa193b83154c2a81e91284e5d5e59',1,'items.php']]],
['translate_5fsystem_5fapps',['translate_system_apps',['../include_2apps_8php.html#a48289d5cc44b7638191738106ac5d030',1,'apps.php']]],
+ ['trim_5fmessage',['trim_message',['../po2php_8php.html#a4f3dc9b019d0cd1dc171c54c991ef334',1,'po2php.php']]],
['tryoembed',['tryoembed',['../bbcode_8php.html#a55b0cb6973f1ec731de0e726bcc0efa7',1,'bbcode.php']]],
['tryzrlaudio',['tryzrlaudio',['../bbcode_8php.html#a39de4de32a9456d1ca914d0dc52bd322',1,'bbcode.php']]],
['tryzrlvideo',['tryzrlvideo',['../bbcode_8php.html#aa92f119341f4c69dcef2768a013079b8',1,'bbcode.php']]],
diff --git a/doc/html/search/functions_75.js b/doc/html/search/functions_75.js
index deaadc8ab..e05062fb2 100644
--- a/doc/html/search/functions_75.js
+++ b/doc/html/search/functions_75.js
@@ -1,9 +1,11 @@
var searchData=
[
+ ['uexport_5fcontent',['uexport_content',['../uexport_8php.html#ae6f79d60916c01675c8cf663cb5fec84',1,'uexport.php']]],
['uexport_5finit',['uexport_init',['../uexport_8php.html#a118920137dedebe0581623a2e57e7b0d',1,'uexport.php']]],
['unamp',['unamp',['../text_8php.html#a29d6b804e368d3ef359ee295e96ed4c7',1,'text.php']]],
['undo_5fpost_5ftagging',['undo_post_tagging',['../text_8php.html#a740ad03e00459039a2c0992246c4e727',1,'text.php']]],
['unescape_5funderscores_5fin_5flinks',['unescape_underscores_in_links',['../bb2diaspora_8php.html#a599428bceb6f6d82a6a78cb66811f747',1,'bb2diaspora.php']]],
+ ['unescapebin',['unescapebin',['../classdba__driver.html#ab43184239e1d6eb00a98319f4a3df155',1,'dba_driver\unescapebin()'],['../classdba__postgres.html#a677f850211975c9ab89602c67e2dcad9',1,'dba_postgres\unescapebin()']]],
['uninstall_5fplugin',['uninstall_plugin',['../plugin_8php.html#a093a9cb98f51e3643634bd8bc6ed6e76',1,'plugin.php']]],
['unload_5fplugin',['unload_plugin',['../plugin_8php.html#a90538627db68605aeb6db17a8ead6523',1,'plugin.php']]],
['unobscure',['unobscure',['../text_8php.html#a8264348059abd1d4d5bb521323d3b19a',1,'text.php']]],
@@ -11,21 +13,28 @@ var searchData=
['unxmlify',['unxmlify',['../text_8php.html#a1360fed7f918d859daaca1c9f384f9af',1,'text.php']]],
['update_5fbirthdays',['update_birthdays',['../datetime_8php.html#af1cd77c97c901d9239cb7a61f97f9826',1,'datetime.php']]],
['update_5fchannel_5fcontent',['update_channel_content',['../update__channel_8php.html#aca52a9da500f0db2f0a8666af5bc06ba',1,'update_channel.php']]],
+ ['update_5fchannels_5factive_5fhalfyear_5fstat',['update_channels_active_halfyear_stat',['../statistics__fns_8php.html#a82726229a961d3bd3d543005c61dd8e6',1,'statistics_fns.php']]],
+ ['update_5fchannels_5factive_5fmonthly_5fstat',['update_channels_active_monthly_stat',['../statistics__fns_8php.html#ad2b7b595c039c4c2eb0d6cd57a393dfe',1,'statistics_fns.php']]],
+ ['update_5fchannels_5ftotal_5fstat',['update_channels_total_stat',['../statistics__fns_8php.html#a05858927cce81fd367aedf85a94ed90c',1,'statistics_fns.php']]],
['update_5fdirectory_5fentry',['update_directory_entry',['../dir__fns_8php.html#a44062d4b471d1e83f92f6c184585aa13',1,'dir_fns.php']]],
['update_5fdisplay_5fcontent',['update_display_content',['../update__display_8php.html#aa36ac524059e209d5d75a03c16206246',1,'update_display.php']]],
+ ['update_5ffeed_5fitem',['update_feed_item',['../items_8php.html#a9b449eeae50003414b8b30ca927af434',1,'items.php']]],
+ ['update_5fhome_5fcontent',['update_home_content',['../update__home_8php.html#a668340089acd150b830134476a647d05',1,'update_home.php']]],
['update_5fimported_5fitem',['update_imported_item',['../zot_8php.html#a31aad56acf8ff8f2353e6ff8595544df',1,'zot.php']]],
+ ['update_5flocal_5fposts_5fstat',['update_local_posts_stat',['../statistics__fns_8php.html#a9dd516dda693f17f5ce48a94876f7efa',1,'statistics_fns.php']]],
['update_5fmodtime',['update_modtime',['../zot_8php.html#ab319d1d9fff9c7775d9daef42d1f33dd',1,'zot.php']]],
['update_5fnetwork_5fcontent',['update_network_content',['../update__network_8php.html#a8abf5b9f65af6a27ee2f9d7207ed1b41',1,'update_network.php']]],
['update_5fqueue_5ftime',['update_queue_time',['../queue__fn_8php.html#a4c2876181f75a4a61e85b7f00dfdbba1',1,'queue_fn.php']]],
['update_5fremote_5fid',['update_remote_id',['../items_8php.html#a2baa9e05f1e8aa3dd61c85803ae39bd6',1,'items.php']]],
['update_5fsearch_5fcontent',['update_search_content',['../update__search_8php.html#ace4c3a23fa7d6922399e27c297a6ba52',1,'update_search.php']]],
['update_5fsuggestions',['update_suggestions',['../socgraph_8php.html#a790690bb1a1d02483fe31632a160144d',1,'socgraph.php']]],
- ['upgrade_5fbool_5fmessage',['upgrade_bool_message',['../plugin_8php.html#a754d7f53b3abc557b753c057dc4e021d',1,'plugin.php']]],
- ['upgrade_5flink',['upgrade_link',['../plugin_8php.html#a4fc13e528367f510fcb6d8bbfc559040',1,'plugin.php']]],
- ['upgrade_5fmessage',['upgrade_message',['../plugin_8php.html#a901657dd078e070516cf97285e0bada7',1,'plugin.php']]],
+ ['upgrade_5fbool_5fmessage',['upgrade_bool_message',['../account_8php.html#a754d7f53b3abc557b753c057dc4e021d',1,'account.php']]],
+ ['upgrade_5flink',['upgrade_link',['../account_8php.html#a4fc13e528367f510fcb6d8bbfc559040',1,'account.php']]],
+ ['upgrade_5fmessage',['upgrade_message',['../account_8php.html#a901657dd078e070516cf97285e0bada7',1,'account.php']]],
['user_5fallow',['user_allow',['../account_8php.html#ac5c570a2d46446bad4dd2501e9c5a4b1',1,'account.php']]],
['user_5fapprove',['user_approve',['../account_8php.html#ad07be417ac7eda939768804106ddea3d',1,'account.php']]],
['user_5fdeny',['user_deny',['../account_8php.html#ac1653efba62493b9d87513e1b6c04c83',1,'account.php']]],
['user_5fremove',['user_remove',['../Contact_8php.html#a2fc191067dd571a79603c66b04b1ca15',1,'Contact.php']]],
- ['userreadablesize',['userReadableSize',['../classRedBrowser.html#ad3418b8ccad42a1ef4ad0079e15b2e64',1,'RedBrowser']]]
+ ['userreadablesize',['userReadableSize',['../classRedMatrix_1_1RedDAV_1_1RedBrowser.html#a242ce69a2fe5a5fdf9c2b8d3954accfd',1,'RedMatrix::RedDAV::RedBrowser']]],
+ ['utcnow',['utcnow',['../classdba__driver.html#ad700712879719bee23752b8f424d97d0',1,'dba_driver']]]
];
diff --git a/doc/html/search/functions_76.js b/doc/html/search/functions_76.js
index c0f0bd296..7a4c524e4 100644
--- a/doc/html/search/functions_76.js
+++ b/doc/html/search/functions_76.js
@@ -4,7 +4,7 @@ var searchData=
['validate_5fchannelname',['validate_channelname',['../identity_8php.html#af2802bc13a00a17b867bba7978ba8f58',1,'identity.php']]],
['validate_5femail',['validate_email',['../include_2network_8php.html#a897e7112d86eb95526cbd0bff9375f02',1,'network.php']]],
['validate_5furl',['validate_url',['../include_2network_8php.html#a5caa264fab6d2b2344e6bd5b298b08f2',1,'network.php']]],
- ['validateuserpass',['validateUserPass',['../classRedBasicAuth.html#a8dfd9a0953f8884723b421b7c1acf79b',1,'RedBasicAuth']]],
+ ['validateuserpass',['validateUserPass',['../classRedMatrix_1_1RedDAV_1_1RedBasicAuth.html#a6ece02655b780469e59e204c5979a624',1,'RedMatrix::RedDAV::RedBasicAuth']]],
['var_5freplace',['var_replace',['../classTemplate.html#abbc484016ddf5d818f55b823cae6feb0',1,'Template']]],
['vcard_5ffrom_5fxchan',['vcard_from_xchan',['../Contact_8php.html#a6348a532c9d26cd1c9afbc9aa6aa8960',1,'Contact.php']]],
['verify_5femail_5faddress',['verify_email_address',['../account_8php.html#acd6b8d2124ba5ea4f4794d2c58ae8bf5',1,'account.php']]],
diff --git a/doc/html/search/functions_77.js b/doc/html/search/functions_77.js
index c8b0145e5..ff626b35a 100644
--- a/doc/html/search/functions_77.js
+++ b/doc/html/search/functions_77.js
@@ -2,16 +2,17 @@ var searchData=
[
['wall_5fattach_5fpost',['wall_attach_post',['../wall__attach_8php.html#a7385e970e93228d082f0fd7254f6e653',1,'wall_attach.php']]],
['wall_5fupload_5fpost',['wall_upload_post',['../wall__upload_8php.html#a7cbe204244cf9e0380ee932263a74d8f',1,'wall_upload.php']]],
- ['webfinger',['webfinger',['../include_2network_8php.html#a8122356933bcd6b0a8567e8e15ae5cc5',1,'network.php']]],
['webfinger_5fcontent',['webfinger_content',['../webfinger_8php.html#a17dd28db6d390194bf9ecb809739d1d3',1,'webfinger.php']]],
- ['webfinger_5fdfrn',['webfinger_dfrn',['../include_2network_8php.html#adf6008b38c555e98e7ed10da9ede2335',1,'network.php']]],
+ ['webfinger_5frfc7033',['webfinger_rfc7033',['../include_2network_8php.html#a3e6c751a51de33ad3563f0938296e78a',1,'network.php']]],
['webpages_5fcontent',['webpages_content',['../webpages_8php.html#af3b7397d4abc153e3d2147740ee1a41d',1,'webpages.php']]],
+ ['webpages_5finit',['webpages_init',['../webpages_8php.html#af9ad0b65eba79acead3fa32b43d888b7',1,'webpages.php']]],
['wfinger_5finit',['wfinger_init',['../wfinger_8php.html#ae21e50c8d0a5f3c9be9f43a4e519acd3',1,'wfinger.php']]],
['what_5fnext',['what_next',['../setup_8php.html#aea1ebdda58ec938f4e7b31aa5c5f6b58',1,'setup.php']]],
['widget_5faffinity',['widget_affinity',['../widgets_8php.html#add9b24d3304e529a7975e96122315554',1,'widgets.php']]],
['widget_5fappselect',['widget_appselect',['../widgets_8php.html#aced5cb177f630b30799c5eab873ee75c',1,'widgets.php']]],
['widget_5farchive',['widget_archive',['../widgets_8php.html#a7b1e357b5a2027718470b77ec921fc65',1,'widgets.php']]],
['widget_5fbookmarkedchats',['widget_bookmarkedchats',['../widgets_8php.html#a0e2f5179ed1a73b282dfda7270fcabb3',1,'widgets.php']]],
+ ['widget_5fcatcloud_5fwall',['widget_catcloud_wall',['../widgets_8php.html#af919de8e7e2ba8192a65fadc72a2c8b5',1,'widgets.php']]],
['widget_5fcategories',['widget_categories',['../widgets_8php.html#af37fdad3b2e861d860a4a8c4d8a76c0b',1,'widgets.php']]],
['widget_5fchatroom_5flist',['widget_chatroom_list',['../widgets_8php.html#a47c72aac42058ea086c9ef8651c259da',1,'widgets.php']]],
['widget_5fclock',['widget_clock',['../widgets_8php.html#a9d60539db68042e63c0015abd69a6f7a',1,'widgets.php']]],
@@ -30,7 +31,9 @@ var searchData=
['widget_5fnotes',['widget_notes',['../widgets_8php.html#a45ea061dabe9a8372e4ca3b9e5714256',1,'widgets.php']]],
['widget_5fphoto',['widget_photo',['../widgets_8php.html#a999ba893cac7600d3d3b4e7e14cf8c20',1,'widgets.php']]],
['widget_5fphoto_5falbums',['widget_photo_albums',['../widgets_8php.html#a702e2fc0adc9b615999eca18b7311b5e',1,'widgets.php']]],
+ ['widget_5fphoto_5frand',['widget_photo_rand',['../widgets_8php.html#af8eb466ef91d9e96e13335ead5eba380',1,'widgets.php']]],
['widget_5fprofile',['widget_profile',['../widgets_8php.html#abd2e508a2a0b911c4a838e3cb7599923',1,'widgets.php']]],
+ ['widget_5frandom_5fblock',['widget_random_block',['../widgets_8php.html#a829c5a5c7448129266fc1df3ae1a3c2e',1,'widgets.php']]],
['widget_5fsavedsearch',['widget_savedsearch',['../widgets_8php.html#a94203eb9bcd63cbdecbbcb15163598d8',1,'widgets.php']]],
['widget_5fsettings_5fmenu',['widget_settings_menu',['../widgets_8php.html#aaa73bcf1702eaadd9dcd253502f55e01',1,'widgets.php']]],
['widget_5fsuggestedchats',['widget_suggestedchats',['../widgets_8php.html#a50b1410238100c8a94c06b0aa63ee3b8',1,'widgets.php']]],
@@ -38,5 +41,6 @@ var searchData=
['widget_5ftagcloud',['widget_tagcloud',['../widgets_8php.html#a6dbc227aac750774284ee39c45f0a200',1,'widgets.php']]],
['widget_5ftagcloud_5fwall',['widget_tagcloud_wall',['../widgets_8php.html#ae4ced69d83dbdd9e6b51660d9eba8653',1,'widgets.php']]],
['widget_5fvcard',['widget_vcard',['../widgets_8php.html#abe03366fd22fd27d683518fa0765da50',1,'widgets.php']]],
- ['writepages_5fwidget',['writepages_widget',['../page__widgets_8php.html#a1a1e729da27f252cab6678288a17958f',1,'page_widgets.php']]]
+ ['writepages_5fwidget',['writepages_widget',['../page__widgets_8php.html#a1a1e729da27f252cab6678288a17958f',1,'page_widgets.php']]],
+ ['wtagblock',['wtagblock',['../taxonomy_8php.html#a83f0a60f9e0c07d8451dc5be95b17287',1,'taxonomy.php']]]
];
diff --git a/doc/html/search/functions_78.js b/doc/html/search/functions_78.js
index 97e977ea8..80f9b5f99 100644
--- a/doc/html/search/functions_78.js
+++ b/doc/html/search/functions_78.js
@@ -1,13 +1,14 @@
var searchData=
[
- ['x',['x',['../boot_8php.html#a01353c9abebc3544ea080ac161729632',1,'boot.php']]],
+ ['x',['x',['../boot_8php.html#ae97836b0547953be182a2334c9c91d3c',1,'boot.php']]],
['xchan_5fcontent',['xchan_content',['../xchan_8php.html#a9853348bf1a35c644460221ba75edc2d',1,'xchan.php']]],
+ ['xchan_5ffetch',['xchan_fetch',['../hubloc_8php.html#af1b476c936f96a93282b1d058e3d05ea',1,'hubloc.php']]],
['xchan_5fmail_5fquery',['xchan_mail_query',['../text_8php.html#a543447c5ed766535221e2d9636b379ee',1,'text.php']]],
- ['xchan_5fquery',['xchan_query',['../text_8php.html#a36a2e5d418ee81140f25c4233cfecd1f',1,'text.php']]],
+ ['xchan_5fquery',['xchan_query',['../text_8php.html#a905c3895feb6f276df23f07f16f9bb52',1,'text.php']]],
+ ['xchan_5fstore',['xchan_store',['../hubloc_8php.html#acb708dd197aae72a4858cf5ff4e3195b',1,'hubloc.php']]],
['xml2array',['xml2array',['../include_2network_8php.html#a99353baabbc3e0584b85eb79ee802cff',1,'network.php']]],
['xml_5fstatus',['xml_status',['../include_2network_8php.html#a9e9da2aafb806c98ecdc318604e60dc6',1,'network.php']]],
['xmlify',['xmlify',['../text_8php.html#aaed4413ed8918838b517e3b2fafaea0d',1,'text.php']]],
- ['xpost_5fto_5fhtml2bbcode',['xpost_to_html2bbcode',['../post__to__red_8php.html#af2713018a2dc97e88f121fc6215beb66',1,'post_to_red.php']]],
['xrd_5finit',['xrd_init',['../xrd_8php.html#aee3cf087968e4a0ff3a87de16eb23270',1,'xrd.php']]],
['xref_5finit',['xref_init',['../xref_8php.html#a9bee399213b8de8226b0d60834307473',1,'xref.php']]]
];
diff --git a/doc/html/search/functions_7a.js b/doc/html/search/functions_7a.js
index 13a4cefe7..9ea50e71d 100644
--- a/doc/html/search/functions_7a.js
+++ b/doc/html/search/functions_7a.js
@@ -2,10 +2,13 @@ var searchData=
[
['z_5fbirthday',['z_birthday',['../datetime_8php.html#ab55e545b72ec8c097e052ea7d373491f',1,'datetime.php']]],
['z_5ffetch_5furl',['z_fetch_url',['../include_2network_8php.html#aafd06c0a75402aefb06cfb9f9740fa37',1,'network.php']]],
+ ['z_5fget_5ftemp_5fdir',['z_get_temp_dir',['../boot_8php.html#a59717d02602a4babf2a54da8b33d93a5',1,'boot.php']]],
+ ['z_5fget_5fupload_5fdir',['z_get_upload_dir',['../boot_8php.html#a476c499e15caf75972fed134a8f23b2e',1,'boot.php']]],
['z_5finput_5ffilter',['z_input_filter',['../text_8php.html#a324c58f37f6acdf9cd1922aa76077d9f',1,'text.php']]],
['z_5fmime_5fcontent_5ftype',['z_mime_content_type',['../include_2attach_8php.html#a6fdd92775f31c07d2863e16e0026018a',1,'attach.php']]],
['z_5fpath',['z_path',['../boot_8php.html#aba208673515cbb8a55e5fa4a1da99fda',1,'boot.php']]],
['z_5fpost_5furl',['z_post_url',['../include_2network_8php.html#a9129fd55e7fc175b4ea9a195cccc16bc',1,'network.php']]],
+ ['z_5fpost_5furl_5fjson',['z_post_url_json',['../include_2network_8php.html#a984708e60d531b31b2d1f88b5f408f7b',1,'network.php']]],
['z_5freaddir',['z_readdir',['../include_2attach_8php.html#aeb07968990e66a88c95483ca09a7f909',1,'attach.php']]],
['z_5froot',['z_root',['../boot_8php.html#add517a0958ac684792c62142a3877f81',1,'boot.php']]],
['zfinger_5finit',['zfinger_init',['../zfinger_8php.html#a8139b83a22ef98869adc10aa224027a0',1,'zfinger.php']]],
@@ -14,14 +17,16 @@ var searchData=
['zidify_5fcallback',['zidify_callback',['../text_8php.html#a405afe814a23f3bd94d826101aa168ab',1,'text.php']]],
['zidify_5fimg_5fcallback',['zidify_img_callback',['../text_8php.html#ab4a4c3d4700bc219bb84f33b499314f4',1,'text.php']]],
['zidify_5flinks',['zidify_links',['../text_8php.html#a29988052f3944111def3b6aaf2c7a8f6',1,'text.php']]],
- ['zot_5fbuild_5fpacket',['zot_build_packet',['../zot_8php.html#a3862b3161b2c8557dc1a95020179bd81',1,'zot.php']]],
- ['zot_5ffeed',['zot_feed',['../items_8php.html#a004e89d86b0f29b2c4da20108ecc4091',1,'items.php']]],
+ ['zot_5fbuild_5fpacket',['zot_build_packet',['../zot_8php.html#a084c581d534e7e3b759488b46602288f',1,'zot.php']]],
+ ['zot_5fencode_5flocations',['zot_encode_locations',['../zot_8php.html#ae26ce9f1ad74139193fb6319beac5fca',1,'zot.php']]],
+ ['zot_5ffeed',['zot_feed',['../items_8php.html#a1cf89557f32d5dfbe8bd90448dc1aa92',1,'items.php']]],
['zot_5ffetch',['zot_fetch',['../zot_8php.html#a61cdc1ec843663c423ed2d8160ae5aea',1,'zot.php']]],
['zot_5ffinger',['zot_finger',['../zot_8php.html#a95528377d7303131958c9f0b7158fdce',1,'zot.php']]],
['zot_5fget_5fhublocs',['zot_get_hublocs',['../zot_8php.html#ae7cec2b417b5858fd4a41070f843d1d7',1,'zot.php']]],
['zot_5fgethub',['zot_gethub',['../zot_8php.html#a55056e863a7860bc0cf922e78fcce073',1,'zot.php']]],
['zot_5fimport',['zot_import',['../zot_8php.html#aeea071f17e306fe3d0c488551906bfab',1,'zot.php']]],
['zot_5fnew_5fuid',['zot_new_uid',['../zot_8php.html#ab22d67660702056bf3f4696dcebf5ce7',1,'zot.php']]],
+ ['zot_5fprocess_5fmessage_5frequest',['zot_process_message_request',['../zot_8php.html#a3920afe14fc1d82020161b4b86bcd9ac',1,'zot.php']]],
['zot_5fprocess_5fresponse',['zot_process_response',['../zot_8php.html#a928f5643ca66ae9635d85aeb2be62e03',1,'zot.php']]],
['zot_5frefresh',['zot_refresh',['../zot_8php.html#a7ac30ff51274bf0b6d3eade37972145c',1,'zot.php']]],
['zot_5fregister_5fhub',['zot_register_hub',['../zot_8php.html#a5bcdfef419b16075a0eca990956223dc',1,'zot.php']]],
diff --git a/doc/html/search/namespaces_72.html b/doc/html/search/namespaces_72.html
new file mode 100644
index 000000000..ae42baffb
--- /dev/null
+++ b/doc/html/search/namespaces_72.html
@@ -0,0 +1,26 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html><head><title></title>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta name="generator" content="Doxygen 1.8.3.1">
+<link rel="stylesheet" type="text/css" href="search.css"/>
+<script type="text/javascript" src="namespaces_72.js"></script>
+<script type="text/javascript" src="search.js"></script>
+</head>
+<body class="SRPage">
+<div id="SRIndex">
+<div class="SRStatus" id="Loading">Loading...</div>
+<div id="SRResults"></div>
+<script type="text/javascript"><!--
+createResults();
+--></script>
+<div class="SRStatus" id="Searching">Searching...</div>
+<div class="SRStatus" id="NoMatches">No Matches</div>
+<script type="text/javascript"><!--
+document.getElementById("Loading").style.display="none";
+document.getElementById("NoMatches").style.display="none";
+var searchResults = new SearchResults("searchResults");
+searchResults.Search();
+--></script>
+</div>
+</body>
+</html>
diff --git a/doc/html/search/namespaces_72.js b/doc/html/search/namespaces_72.js
new file mode 100644
index 000000000..56f831e1c
--- /dev/null
+++ b/doc/html/search/namespaces_72.js
@@ -0,0 +1,6 @@
+var searchData=
+[
+ ['import',['Import',['../namespaceRedMatrix_1_1Import.html',1,'RedMatrix']]],
+ ['reddav',['RedDAV',['../namespaceRedMatrix_1_1RedDAV.html',1,'RedMatrix']]],
+ ['redmatrix',['RedMatrix',['../namespaceRedMatrix.html',1,'']]]
+];
diff --git a/doc/html/search/search.js b/doc/html/search/search.js
index 9b5c322ac..4477a1d6c 100644
--- a/doc/html/search/search.js
+++ b/doc/html/search/search.js
@@ -9,10 +9,10 @@ var indexSectionsWithContent =
{
0: "0000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000010111111111111111111111111010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000",
1: "0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000111111001000000101010000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000",
- 2: "0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100001000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000",
+ 2: "0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100001000000000001001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000",
3: "0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010111111111001111111111111010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000",
4: "0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010111111111111111111111111010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000",
- 5: "0000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000101111111111111101111011010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000",
+ 5: "0000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000101111111111111101111111010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000",
6: "0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000101001000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"
};
diff --git a/doc/html/search/variables_24.js b/doc/html/search/variables_24.js
index 503819b1e..9ad473a4f 100644
--- a/doc/html/search/variables_24.js
+++ b/doc/html/search/variables_24.js
@@ -9,18 +9,15 @@ var searchData=
['_24argv',['$argv',['../classApp.html#ab3da757abe5cb45bf88f07cc51a73b58',1,'App']]],
['_24arr',['$arr',['../extract_8php.html#a63bb4c41bc532baacf6a4976cfaa0feb',1,'extract.php']]],
['_24aside',['$aside',['../minimalisticdarkness_8php.html#a6e5d97615c6faef5dbffe04b8024ceaf',1,'minimalisticdarkness.php']]],
- ['_24auth',['$auth',['../classRedDirectory.html#a9616af16cd19a18a6afebebcc2881c44',1,'RedDirectory\$auth()'],['../classRedFile.html#a4b5d0e33f919c6c175b30a55de6263f2',1,'RedFile\$auth()'],['../classRedBrowser.html#ab6d6d1e2a67e06b344a4cede1bd00b35',1,'RedBrowser\$auth()']]],
+ ['_24auth',['$auth',['../classRedMatrix_1_1RedDAV_1_1RedBrowser.html#ad19179bf4ac7f18fafa7e2e3df800142',1,'RedMatrix\RedDAV\RedBrowser\$auth()'],['../classRedMatrix_1_1RedDAV_1_1RedDirectory.html#aab6907e7fb7f9f7227f9cd42bdc84eb9',1,'RedMatrix\RedDAV\RedDirectory\$auth()'],['../classRedMatrix_1_1RedDAV_1_1RedFile.html#a21b6e9d420c352f25610a33f57858215',1,'RedMatrix\RedDAV\RedFile\$auth()']]],
['_24baseurl',['$baseurl',['../classApp.html#ad5175536561021548ae8188e24c7b80c',1,'App']]],
- ['_24bodyclass',['$bodyclass',['../theme_2blogga_2php_2default_8php.html#a720581ae288aa09511670563e4205a4a',1,'$bodyclass():&#160;default.php'],['../theme_2blogga_2view_2theme_2blog_2default_8php.html#a720581ae288aa09511670563e4205a4a',1,'$bodyclass():&#160;default.php']]],
- ['_24browser',['$browser',['../classRedBasicAuth.html#af14337f1baad407f8a85d48205c0f30e',1,'RedBasicAuth']]],
- ['_24cached_5fprofile_5fimage',['$cached_profile_image',['../classApp.html#abe0e4fa91097f7a6588e1213a834121c',1,'App']]],
- ['_24cached_5fprofile_5fpicdate',['$cached_profile_picdate',['../classApp.html#aab4a685d15a363bb1d7edbbc20bfb94e',1,'App']]],
+ ['_24browser',['$browser',['../classRedMatrix_1_1RedDAV_1_1RedBasicAuth.html#a167ae032bd2ad8e6caa2e1e1a6f1b5d3',1,'RedMatrix::RedDAV::RedBasicAuth']]],
['_24called_5fapi',['$called_api',['../include_2api_8php.html#aa62b15a6bbb280e86b98132eb214013d',1,'api.php']]],
['_24category',['$category',['../classApp.html#a5cfc098c061b7d765add58fd2ca97445',1,'App']]],
['_24channel',['$channel',['../classApp.html#a050b0696118da47e8b30859ad1a2c149',1,'App\$channel()'],['../classItem.html#acc32426c0f465391be8a99ad810c7b8e',1,'Item\$channel()'],['../php_2theme__init_8php.html#a54f32c086fe209c99769a4c4047dd864',1,'$channel():&#160;theme_init.php'],['../theme_2apw_2php_2theme__init_8php.html#a54f32c086fe209c99769a4c4047dd864',1,'$channel():&#160;theme_init.php']]],
- ['_24channel_5fhash',['$channel_hash',['../classRedBasicAuth.html#ad5a3ea4dc4783b242d9dc6e76478b6ef',1,'RedBasicAuth']]],
- ['_24channel_5fid',['$channel_id',['../classRedBasicAuth.html#a2dab393650d1573e3515969a153e8354',1,'RedBasicAuth']]],
- ['_24channel_5fname',['$channel_name',['../classRedBasicAuth.html#a438ab125b6ef46581947e35d49cdebac',1,'RedBasicAuth']]],
+ ['_24channel_5fhash',['$channel_hash',['../classRedMatrix_1_1RedDAV_1_1RedBasicAuth.html#a112ad78a863dc0e598b5f02c596798c0',1,'RedMatrix::RedDAV::RedBasicAuth']]],
+ ['_24channel_5fid',['$channel_id',['../classRedMatrix_1_1RedDAV_1_1RedBasicAuth.html#abe1defedb90ac8e3b6487e124e625521',1,'RedMatrix::RedDAV::RedBasicAuth']]],
+ ['_24channel_5fname',['$channel_name',['../classRedMatrix_1_1RedDAV_1_1RedBasicAuth.html#a76fdb7fd5dd7376155abb5a58cd6fd69',1,'RedMatrix::RedDAV::RedBasicAuth']]],
['_24children',['$children',['../classItem.html#a80dcd0fb7673776c0967839d429c2a0f',1,'Item']]],
['_24cid',['$cid',['../classApp.html#ad1c8eb91a6fd470b94f34b7fdad3a2d0',1,'App']]],
['_24cipher',['$cipher',['../classConversation.html#aa95c1a62af38bdfba7add9549bec083b',1,'Conversation']]],
@@ -33,31 +30,29 @@ var searchData=
['_24contacts',['$contacts',['../classApp.html#a61ca6e3af82071ea25ff2fd5dbcddae2',1,'App']]],
['_24content',['$content',['../classApp.html#ac1d80a14492acc932715d54567d8a589',1,'App']]],
['_24conversation',['$conversation',['../classItem.html#a007424e3e3171dcfb4312a02161da6cd',1,'Item']]],
+ ['_24credentials',['$credentials',['../classRedMatrix_1_1Import_1_1Import.html#a864aac9fadb4846f5d9f840e8e0f440f',1,'RedMatrix::Import::Import']]],
['_24css_5fsources',['$css_sources',['../classApp.html#a6f55d087e1ff4710132c1b0863faa2ee',1,'App']]],
- ['_24curl_5fcode',['$curl_code',['../classApp.html#a256360c9184fed6d7556e0bc0a835d7f',1,'App']]],
- ['_24curl_5fheaders',['$curl_headers',['../classApp.html#af5007c42a693afd9c4899c243b2e1363',1,'App']]],
['_24d',['$d',['../classTemplate.html#a8469ab2988b6be2681516dc4b4e07d38',1,'Template']]],
- ['_24data',['$data',['../classApp.html#a0ce85be198e46570366cb3344f3c55b8',1,'App\$data()'],['../classItem.html#aec24e233f9098f902b1e57e60dcb2019',1,'Item\$data()'],['../classRedFile.html#a2ff12032b45538353eded9809d3b7550',1,'RedFile\$data()']]],
- ['_24db',['$db',['../classApp.html#a330410a288f3393d53772f5e98f857ea',1,'App\$db()'],['../classdba__driver.html#a3033b5f1c2716b52202faeaae2592fe6',1,'dba_driver\$db()']]],
+ ['_24data',['$data',['../classApp.html#a0ce85be198e46570366cb3344f3c55b8',1,'App\$data()'],['../classItem.html#aec24e233f9098f902b1e57e60dcb2019',1,'Item\$data()'],['../classRedMatrix_1_1RedDAV_1_1RedFile.html#a235700e2dfbe21dc41613d36e30e8acc',1,'RedMatrix\RedDAV\RedFile\$data()']]],
+ ['_24db',['$db',['../classdba__driver.html#a3033b5f1c2716b52202faeaae2592fe6',1,'dba_driver']]],
['_24debug',['$debug',['../classdba__driver.html#af48e2afeded5285766bf92e22123ed03',1,'dba_driver\$debug()'],['../classTemplate.html#afc4afb6f89bebcd5480022312a56cb4a',1,'Template\$debug()']]],
['_24dir',['$dir',['../docblox__errorchecker_8php.html#a1659f0a629d408e0f849dbe4ee061e62',1,'docblox_errorchecker.php']]],
['_24directory_5ffallback_5fservers',['$DIRECTORY_FALLBACK_SERVERS',['../boot_8php.html#a107d53f96acf5319905a34b1870db09a',1,'boot.php']]],
['_24dirs',['$dirs',['../typo_8php.html#a1b709c1d79631ebc8320b41bda028b54',1,'typo.php']]],
['_24dirstack',['$dirstack',['../docblox__errorchecker_8php.html#ab66bc0493d25f39bf8b4dcbb429f04e6',1,'docblox_errorchecker.php']]],
+ ['_24display_5fmode',['$display_mode',['../classItem.html#a88a99e2d1245925867f249f543358e72',1,'Item']]],
['_24done',['$done',['../classTemplate.html#abda4c8d049f70553338eae7c905e9d5c',1,'Template']]],
['_24error',['$error',['../classApp.html#ac1a8b2cd40609b231a560201a08852ba',1,'App\$error()'],['../classdba__driver.html#a84675d28c7bd9b7290dd37e66dbd216c',1,'dba_driver\$error()']]],
- ['_24ext_5fpath',['$ext_path',['../classRedDirectory.html#a0f113244cd85c17848df991001d024f4',1,'RedDirectory']]],
+ ['_24ext_5fpath',['$ext_path',['../classRedMatrix_1_1RedDAV_1_1RedDirectory.html#adf8735b3118cdf2f42416edaf42b82e9',1,'RedMatrix::RedDAV::RedDirectory']]],
['_24fext',['$fext',['../apw_2php_2style_8php.html#a404171b8f918c116e45a6421c92f0cc9',1,'style.php']]],
['_24filelist',['$filelist',['../docblox__errorchecker_8php.html#a648a570b0f9f6e0e51b7267647c4b09b',1,'docblox_errorchecker.php']]],
['_24filename',['$filename',['../classFriendicaSmarty.html#a33fabbd4d6eef869df496adf357ae690',1,'FriendicaSmarty']]],
['_24files',['$files',['../extract_8php.html#a9590b15215a21e9b42eb546aeef79704',1,'$files():&#160;extract.php'],['../tpldebug_8php.html#a5358407d65f2ca826f96356a6642d149',1,'$files():&#160;tpldebug.php'],['../typo_8php.html#a9590b15215a21e9b42eb546aeef79704',1,'$files():&#160;typo.php']]],
['_24fname',['$fname',['../apw_2php_2style_8php.html#ab9e0f70d44ab67f4334f9883631777fc',1,'style.php']]],
- ['_24folder_5fhash',['$folder_hash',['../classRedDirectory.html#aa10254abf177bb2a0e4a88495725e09b',1,'RedDirectory']]],
+ ['_24folder_5fhash',['$folder_hash',['../classRedMatrix_1_1RedDAV_1_1RedDirectory.html#a2fc4e6b9be2108bbaa1ca1a03fd6d44e',1,'RedMatrix::RedDAV::RedDirectory']]],
['_24force_5fmax_5fitems',['$force_max_items',['../classApp.html#ae3f47830543d0d902f66913def8db66b',1,'App']]],
['_24gc_5fprobability',['$gc_probability',['../session_8php.html#a96b09cc763572f45280786a7b33feb7e',1,'session.php']]],
['_24groups',['$groups',['../classApp.html#ac6e6b1c7d6df408580ff79977fcfa656',1,'App']]],
- ['_24headimg',['$headimg',['../theme_2blogga_2php_2default_8php.html#ac7062908d1eb80c0735270f7997c4527',1,'$headimg():&#160;default.php'],['../theme_2blogga_2view_2theme_2blog_2default_8php.html#a52d9dd070ed541729088395c22502539',1,'$headimg():&#160;default.php']]],
- ['_24headimghome',['$headimghome',['../theme_2blogga_2php_2default_8php.html#a1230ab83d4ec9785d8f3a966f33dc5f3',1,'$headimghome():&#160;default.php'],['../theme_2blogga_2view_2theme_2blog_2default_8php.html#a1230ab83d4ec9785d8f3a966f33dc5f3',1,'$headimghome():&#160;default.php']]],
['_24height',['$height',['../classphoto__driver.html#aea560be5dfba09117d36c12bacbf3b80',1,'photo_driver']]],
['_24hooks',['$hooks',['../classApp.html#a3694aa1907aa103a2adbc71f926f0fa0',1,'App']]],
['_24hostname',['$hostname',['../classApp.html#a037049cba88dfc6ff94f4b5b779e3fd3',1,'App']]],
@@ -70,7 +65,10 @@ var searchData=
['_24install',['$install',['../classApp.html#a576ecb1c5b4a283221e6f2f0ec248251',1,'App']]],
['_24install_5fwizard_5fpass',['$install_wizard_pass',['../setup_8php.html#addb24714bc2542aa4f4215e98fe48432',1,'setup.php']]],
['_24interactive',['$interactive',['../classApp.html#a4c7cfc62d39508086cf300dc2e39c4df',1,'App']]],
+ ['_24is_5fsys',['$is_sys',['../classApp.html#a1f60d19d47021629faac7a0a6d917e94',1,'App']]],
['_24itemfloat',['$itemfloat',['../minimalisticdarkness_8php.html#a7e6c3d4efde4e9a2de32308081372c6b',1,'minimalisticdarkness.php']]],
+ ['_24itemlist',['$itemlist',['../classRedMatrix_1_1Import_1_1Import.html#ad0d2bdc3b388220479063915b4f5c2fc',1,'RedMatrix::Import::Import']]],
+ ['_24items',['$items',['../classRedMatrix_1_1Import_1_1Import.html#a0a05dac405ccc5b617b7b7b3c8ed783c',1,'RedMatrix::Import::Import']]],
['_24js_5fsources',['$js_sources',['../classApp.html#a11e24b3ed9b33ffee7dd41d110b4366d',1,'App']]],
['_24k',['$k',['../php2po_8php.html#ad6726cfaa85d4b8299d2b0f034cbf178',1,'php2po.php']]],
['_24lang',['$lang',['../classTemplate.html#ace26b8a4252fbc1c385d2b5e1e93e5c8',1,'Template']]],
@@ -81,19 +79,19 @@ var searchData=
['_24mode',['$mode',['../classConversation.html#afb03d1648dbfafe62caa1e30f32f2b1a',1,'Conversation']]],
['_24module',['$module',['../classApp.html#a9bf62f8e39585c0aa48fcffc3bf3484d',1,'App']]],
['_24module_5floaded',['$module_loaded',['../classApp.html#a6e4f0fbfa3cf6c11baebe22a03db6165',1,'App']]],
- ['_24name',['$name',['../classFriendicaSmartyEngine.html#aaba6a42101bc9ae32e36b7fa2e243f02',1,'FriendicaSmartyEngine\$name()'],['../classRedFile.html#acc48c05cd5a70951cb3c615ad84f03ba',1,'RedFile\$name()'],['../classTemplate.html#a6eb301a51cc94d8b94f4548fbad85eae',1,'Template\$name()']]],
+ ['_24name',['$name',['../classRedMatrix_1_1RedDAV_1_1RedFile.html#ab722dcb8c4598426c81fa2b2e4fad5f2',1,'RedMatrix\RedDAV\RedFile\$name()'],['../classFriendicaSmartyEngine.html#aaba6a42101bc9ae32e36b7fa2e243f02',1,'FriendicaSmartyEngine\$name()'],['../classTemplate.html#a6eb301a51cc94d8b94f4548fbad85eae',1,'Template\$name()']]],
['_24nav_5fpercent_5fmin_5fopacity',['$nav_percent_min_opacity',['../redbasic_2php_2style_8php.html#a01c151bf47f7da2b979aaa4cb868da4c',1,'style.php']]],
['_24nav_5fsel',['$nav_sel',['../classApp.html#a33a8e90b60ec4438f6fbf299d0f6839c',1,'App']]],
['_24navheight',['$navheight',['../apw_2php_2style_8php.html#a1c8a7c0db8c174239f3909cb931cb872',1,'style.php']]],
['_24needed',['$needed',['../docblox__errorchecker_8php.html#a852004caba0a34390297a079f4aaac73',1,'docblox_errorchecker.php']]],
['_24nodes',['$nodes',['../classTemplate.html#a8f4d17e49f42b876a97364c13fb572d1',1,'Template']]],
['_24obliquemacro',['$obliquemacro',['../apw_2php_2style_8php.html#a2cad82a3ecadbe58dbc4197de1c63da0',1,'style.php']]],
- ['_24observer',['$observer',['../classApp.html#a4ffe529fb14389f7fedf5fdc5f722e7f',1,'App\$observer()'],['../classConversation.html#a8748445aa26047ebed5141f3c3cbc244',1,'Conversation\$observer()'],['../classRedBasicAuth.html#aa75dc43b59adc98e38a98517d3fd35d1',1,'RedBasicAuth\$observer()']]],
- ['_24os_5fpath',['$os_path',['../classRedDirectory.html#a3c148c07ad909985125aa4926d8d0021',1,'RedDirectory']]],
+ ['_24observer',['$observer',['../classApp.html#a4ffe529fb14389f7fedf5fdc5f722e7f',1,'App\$observer()'],['../classConversation.html#a8748445aa26047ebed5141f3c3cbc244',1,'Conversation\$observer()'],['../classRedMatrix_1_1RedDAV_1_1RedBasicAuth.html#a605aa09565a097316b80f0d17d6b5823',1,'RedMatrix\RedDAV\RedBasicAuth\$observer()']]],
+ ['_24os_5fpath',['$os_path',['../classRedMatrix_1_1RedDAV_1_1RedDirectory.html#a17ea47e34cb76b6e79f36ebed790d76a',1,'RedMatrix::RedDAV::RedDirectory']]],
['_24out',['$out',['../php2po_8php.html#a48cb304902320d173a4eaa41543327b9',1,'php2po.php']]],
- ['_24owner_5fid',['$owner_id',['../classRedBasicAuth.html#a09c1488a0b290f5a54dc15180c5690d7',1,'RedBasicAuth']]],
+ ['_24owner_5fid',['$owner_id',['../classRedMatrix_1_1RedDAV_1_1RedBasicAuth.html#a1a23c349cc4699a8474505972684ea9c',1,'RedMatrix::RedDAV::RedBasicAuth']]],
['_24owner_5fname',['$owner_name',['../classItem.html#a9594df6014b0b6f45364ea7a34510130',1,'Item']]],
- ['_24owner_5fnick',['$owner_nick',['../classRedBasicAuth.html#a8d09b8d784cc810a0b3be580d05106a7',1,'RedBasicAuth']]],
+ ['_24owner_5fnick',['$owner_nick',['../classRedMatrix_1_1RedDAV_1_1RedBasicAuth.html#aad0ef0cc05c407de84dbfbf2050bbbbe',1,'RedMatrix::RedDAV::RedBasicAuth']]],
['_24owner_5fphoto',['$owner_photo',['../classItem.html#a078f95b4134ce3a1df344cf8d386f986',1,'Item']]],
['_24owner_5furl',['$owner_url',['../classItem.html#afa54851df82962c7c42dea3cc9f5c92c',1,'Item']]],
['_24page',['$page',['../classApp.html#a4b67935096f66d1f14b657399a8461ac',1,'App']]],
@@ -103,8 +101,6 @@ var searchData=
['_24perms',['$perms',['../classApp.html#ab47de68fa39806d1fb0976407e188b77',1,'App']]],
['_24phpath',['$phpath',['../typo_8php.html#a3ecd17ac846be1b35f3662f5c12ab6bd',1,'typo.php']]],
['_24phpfile',['$phpfile',['../php2po_8php.html#abbb0e5fd8fbc1f13a9bf68f86eb3d2a4',1,'php2po.php']]],
- ['_24plugin',['$plugin',['../post__to__red_8php.html#ada8a7130088351710bb02ed622d6bf65',1,'post_to_red.php']]],
- ['_24plugin_5fdir',['$plugin_dir',['../post__to__red_8php.html#a99811555b30bde504a863e44015f2f19',1,'post_to_red.php']]],
['_24plugins',['$plugins',['../classApp.html#ae9f96338f32187d308b67b980eea0008',1,'App']]],
['_24pofile',['$pofile',['../php2po_8php.html#a401d84ce156e49e8168bd0c4781e1be1',1,'php2po.php']]],
['_24poi',['$poi',['../classApp.html#a1936f2afce0dc0d1bbed15ae1f2ee81a',1,'App']]],
@@ -114,13 +110,14 @@ var searchData=
['_24profile_5fowner',['$profile_owner',['../classConversation.html#a2f12724ef0244e9049fe1bb9641b516d',1,'Conversation']]],
['_24profile_5fuid',['$profile_uid',['../classApp.html#a08c24d6a6fc52fcc784b0f765f13b820',1,'App']]],
['_24query_5fstring',['$query_string',['../classApp.html#a2e82da4aecfc2017a8d1d332ca501f9f',1,'App']]],
- ['_24r',['$r',['../classTemplate.html#aac9a4638f11271e1b1dcc9f247242718',1,'Template']]],
+ ['_24r',['$r',['../classTemplate.html#aac9a4638f11271e1b1dcc9f247242718',1,'Template\$r()'],['../fixd_8php.html#a8abe176bc41afd728f32ba8c506cbd98',1,'$r():&#160;fixd.php']]],
+ ['_24rand',['$rand',['../fixd_8php.html#a2da3681c9cce2efe7de29aa578ff4219',1,'fixd.php']]],
['_24rdelim',['$rdelim',['../classApp.html#a244b2d53b21be269aad2269d23192f95',1,'App']]],
- ['_24red_5fpath',['$red_path',['../classRedDirectory.html#acb32b8df27538c57772824a745e751d7',1,'RedDirectory']]],
+ ['_24red_5fpath',['$red_path',['../classRedMatrix_1_1RedDAV_1_1RedDirectory.html#a4bba2e56bc8ec3e05f05eae46f56f36d',1,'RedMatrix::RedDAV::RedDirectory']]],
['_24redirect_5furl',['$redirect_url',['../classItem.html#a5b561415861f5b89b0733aacfe0428d1',1,'Item']]],
['_24replace',['$replace',['../classTemplate.html#a4e86b566c3f728e95ce5db1b33665c10',1,'Template']]],
['_24res',['$res',['../docblox__errorchecker_8php.html#a49a8a4009b02e49717caa88b128affc5',1,'docblox_errorchecker.php']]],
- ['_24root_5fdir',['$root_dir',['../classRedDirectory.html#ad87c514a307ec97ba0f1372e9bcfa6a4',1,'RedDirectory']]],
+ ['_24root_5fdir',['$root_dir',['../classRedMatrix_1_1RedDAV_1_1RedDirectory.html#a438066fb1565fbcffa22c12d5ce23695',1,'RedMatrix::RedDAV::RedDirectory']]],
['_24s',['$s',['../extract_8php.html#a50b05cf2e02ef0b67fcad97106dd7634',1,'extract.php']]],
['_24scheme',['$scheme',['../classApp.html#ad082d63acc078e5bf23825a03bdd6a76',1,'App']]],
['_24search',['$search',['../classTemplate.html#a317d535946dc065c35dd5cd38380e6c6',1,'Template']]],
@@ -131,6 +128,7 @@ var searchData=
['_24session_5fexpire',['$session_expire',['../session_8php.html#af0100a2642a5268594bbd5742a03d885',1,'session.php']]],
['_24showlock',['$showlock',['../apw_2php_2style_8php.html#ad401ea1d1ba236f86863b4574f01e425',1,'style.php']]],
['_24sourcename',['$sourcename',['../classApp.html#a13710907ef62554a0b4dd8a5eaa2eb11',1,'App']]],
+ ['_24src_5fitems',['$src_items',['../classRedMatrix_1_1Import_1_1Import.html#a88c2eeba8d0cba3e7c12a2c45ba0fbc6',1,'RedMatrix::Import::Import']]],
['_24stack',['$stack',['../classTemplate.html#a6f0efc256688c36110180b501067ff11',1,'Template']]],
['_24str',['$str',['../typohelper_8php.html#a7542d95618011800c61773127fa625cf',1,'typohelper.php']]],
['_24strings',['$strings',['../classApp.html#a5f64620473a9727a48ebe9cf6f335a98',1,'App']]],
@@ -143,8 +141,9 @@ var searchData=
['_24theme_5fthread_5fallow',['$theme_thread_allow',['../classApp.html#a487332f8de40414ca1a54a4265570b70',1,'App']]],
['_24threaded',['$threaded',['../classItem.html#a1cb6aa8abdf7ea7daca647e40c8ea3a2',1,'Item']]],
['_24threads',['$threads',['../classConversation.html#a41f4a549e6a99f98935c4742addd22c8',1,'Conversation']]],
- ['_24timezone',['$timezone',['../classApp.html#ab35b01a366a2ea95725e97af278f87ab',1,'App\$timezone()'],['../classRedBasicAuth.html#a2d0246ed446fd5e55c17938b4ce6ac47',1,'RedBasicAuth\$timezone()']]],
+ ['_24timezone',['$timezone',['../classApp.html#ab35b01a366a2ea95725e97af278f87ab',1,'App\$timezone()'],['../classRedMatrix_1_1RedDAV_1_1RedBasicAuth.html#a849c99cf0a7ad065d630c8a30106ad5e',1,'RedMatrix\RedDAV\RedBasicAuth\$timezone()']]],
['_24toplevel',['$toplevel',['../classItem.html#a5cfa6cf964f433a917a81cab079ff9d8',1,'Item']]],
+ ['_24total',['$total',['../fixd_8php.html#a241b818f48030b628685b2e5119c5624',1,'fixd.php']]],
['_24type',['$type',['../classphoto__driver.html#a4920ed7cbb1ac735ac84153067537f03',1,'photo_driver']]],
['_24types',['$types',['../classphoto__driver.html#a00cb166c00b7502dbc456c94330e5b03',1,'photo_driver']]],
['_24uid',['$uid',['../apw_2php_2style_8php.html#a109bbd7f4add27541707b191b73ef84a',1,'style.php']]],
@@ -154,7 +153,6 @@ var searchData=
['_24videowidth',['$videowidth',['../classApp.html#adf2aaf95b062736a6fd5fc70fadf80e8',1,'App']]],
['_24visiting',['$visiting',['../classItem.html#a4a123ae98987c1e30ecb15c4edf5a3b8',1,'Item']]],
['_24wall_5fto_5fwall',['$wall_to_wall',['../classItem.html#a5d29ddecc073151a65a8e2ea2f6e4189',1,'Item']]],
- ['_24widgetlist',['$widgetlist',['../classApp.html#a4833bee2eae4ad1691a04fa19e11a766',1,'App']]],
['_24widgets',['$widgets',['../classApp.html#aa5a87c46ab3fee21362c466bf78042ef',1,'App']]],
['_24width',['$width',['../classphoto__driver.html#a3e4215890f4a4894bf3799a7d2e0c0b1',1,'photo_driver\$width()'],['../minimalisticdarkness_8php.html#a5795120b4b324bc4ca83f1e6fdce7d57',1,'$width():&#160;minimalisticdarkness.php']]],
['_24writable',['$writable',['../classConversation.html#ae81221251307e315f566a11f921ce0a9',1,'Conversation']]],
diff --git a/doc/html/search/variables_61.js b/doc/html/search/variables_61.js
index 7a5098d4c..5dd81d424 100644
--- a/doc/html/search/variables_61.js
+++ b/doc/html/search/variables_61.js
@@ -2,6 +2,7 @@ var searchData=
[
['abook_5fflag_5farchived',['ABOOK_FLAG_ARCHIVED',['../boot_8php.html#a222395aa223cfbff6166fab0b4e2e1d5',1,'boot.php']]],
['abook_5fflag_5fblocked',['ABOOK_FLAG_BLOCKED',['../boot_8php.html#a52b599cd13e152ebc80d7e4413683195',1,'boot.php']]],
+ ['abook_5fflag_5ffeed',['ABOOK_FLAG_FEED',['../boot_8php.html#ae0d9527117cd87dcba11986047ae336e',1,'boot.php']]],
['abook_5fflag_5fhidden',['ABOOK_FLAG_HIDDEN',['../boot_8php.html#a34c756469ebed32e2fc987bcde62d382',1,'boot.php']]],
['abook_5fflag_5fignored',['ABOOK_FLAG_IGNORED',['../boot_8php.html#aa3425e2de85b08f7041656d3a8502cb6',1,'boot.php']]],
['abook_5fflag_5fpending',['ABOOK_FLAG_PENDING',['../boot_8php.html#a68eebe493e6f729ffd1aeda7a4b11155',1,'boot.php']]],
diff --git a/doc/html/search/variables_64.js b/doc/html/search/variables_64.js
index ea1a85e2a..172029abf 100644
--- a/doc/html/search/variables_64.js
+++ b/doc/html/search/variables_64.js
@@ -1,6 +1,8 @@
var searchData=
[
['db_5fupdate_5fversion',['DB_UPDATE_VERSION',['../boot_8php.html#ac59a18a4838710d6c2de37aed6b21f03',1,'boot.php']]],
+ ['dbtype_5fmysql',['DBTYPE_MYSQL',['../boot_8php.html#a8c9a11c47394244cbe18cd75b9726d5f',1,'boot.php']]],
+ ['dbtype_5fpostgres',['DBTYPE_POSTGRES',['../boot_8php.html#a37ddabc112db443b4c67fbc0f708817e',1,'boot.php']]],
['default_5fdb_5fengine',['DEFAULT_DB_ENGINE',['../boot_8php.html#aa8a2b61e70900139d1ca28e46f1da49d',1,'boot.php']]],
['directory_5ffallback_5fmaster',['DIRECTORY_FALLBACK_MASTER',['../boot_8php.html#abedd940e664017c61b48c6efa31d0cb8',1,'boot.php']]],
['directory_5fmode_5fnormal',['DIRECTORY_MODE_NORMAL',['../boot_8php.html#ab7d65a7e7417825a4db62906bb600729',1,'boot.php']]],
diff --git a/doc/html/search/variables_65.js b/doc/html/search/variables_65.js
index 78718ea57..cb68909a7 100644
--- a/doc/html/search/variables_65.js
+++ b/doc/html/search/variables_65.js
@@ -1,6 +1,6 @@
var searchData=
[
- ['else',['else',['../auth_8php.html#a0950af7c2888ca1d4743fe5d0bff9ae5',1,'else():&#160;auth.php'],['../fpostit_8php.html#a501b5ca82f287509fc691c88524064c1',1,'else():&#160;fpostit.php'],['../tpldebug_8php.html#afbc7aadb3f7ff1edf0aaaa326a42179c',1,'else():&#160;tpldebug.php'],['../redbasic_2php_2style_8php.html#ab3afb90d611eca90819f597a2c0bb459',1,'else():&#160;style.php']]],
+ ['else',['else',['../auth_8php.html#a6f60fb54f60cd36c2430d6615a7b4f3f',1,'else():&#160;auth.php'],['../fpostit_8php.html#a501b5ca82f287509fc691c88524064c1',1,'else():&#160;fpostit.php'],['../tpldebug_8php.html#afbc7aadb3f7ff1edf0aaaa326a42179c',1,'else():&#160;tpldebug.php'],['../redbasic_2php_2style_8php.html#ab3afb90d611eca90819f597a2c0bb459',1,'else():&#160;style.php']]],
['eol',['EOL',['../boot_8php.html#a0603d6ece8c5d37b4b7db697db053a4b',1,'boot.php']]],
['eot',['EOT',['../typohelper_8php.html#ab6fd357fb5b2a3ba8aab9e8b98c6a805',1,'typohelper.php']]],
['excludepaths',['excludepaths',['../namespaceupdatetpl.html#a988d937ed5d5c2b592b763036af5cf94',1,'updatetpl']]],
diff --git a/doc/html/search/variables_69.js b/doc/html/search/variables_69.js
index ca274537e..fb77c49eb 100644
--- a/doc/html/search/variables_69.js
+++ b/doc/html/search/variables_69.js
@@ -1,6 +1,7 @@
var searchData=
[
- ['if',['if',['../php2po_8php.html#a45b05625748f412ec97afcd61cf7980b',1,'if():&#160;php2po.php'],['../php_2default_8php.html#a3987f5547ceb7e36a210a66a06241a5a',1,'if():&#160;default.php'],['../full_8php.html#a3987f5547ceb7e36a210a66a06241a5a',1,'if():&#160;full.php'],['../apw_2php_2style_8php.html#a2f71e817b8fac88ce7f0ec5c0fb88b8d',1,'if():&#160;style.php'],['../theme_2mytheme_2php_2default_8php.html#a3987f5547ceb7e36a210a66a06241a5a',1,'if():&#160;default.php']]],
+ ['if',['if',['../php2po_8php.html#a45b05625748f412ec97afcd61cf7980b',1,'if():&#160;php2po.php'],['../php_2default_8php.html#a3987f5547ceb7e36a210a66a06241a5a',1,'if():&#160;default.php'],['../full_8php.html#a3987f5547ceb7e36a210a66a06241a5a',1,'if():&#160;full.php'],['../redable_8php.html#a3987f5547ceb7e36a210a66a06241a5a',1,'if():&#160;redable.php'],['../apw_2php_2style_8php.html#a2f71e817b8fac88ce7f0ec5c0fb88b8d',1,'if():&#160;style.php'],['../theme_2mytheme_2php_2default_8php.html#a3987f5547ceb7e36a210a66a06241a5a',1,'if():&#160;default.php']]],
+ ['install_5fscript',['INSTALL_SCRIPT',['../classdba__driver.html#a98d8523dcedda316085b4d4f856b6583',1,'dba_driver\INSTALL_SCRIPT()'],['../classdba__postgres.html#a7267f91c3f87f600b30d7560de62dfd7',1,'dba_postgres\INSTALL_SCRIPT()']]],
['item_5fblocked',['ITEM_BLOCKED',['../boot_8php.html#ab28dc518fa90b6f617dd8c564eb4f35f',1,'boot.php']]],
['item_5fbug',['ITEM_BUG',['../boot_8php.html#a87b0f279f8413c7e4d805c5d85f20d34',1,'boot.php']]],
['item_5fbuildblock',['ITEM_BUILDBLOCK',['../boot_8php.html#a7fc4b291a7cdaa48b38e27344ea183cf',1,'boot.php']]],
@@ -18,6 +19,7 @@ var searchData=
['item_5fpending_5fremove',['ITEM_PENDING_REMOVE',['../boot_8php.html#a028380b2902a86ba32198f6d3b5d10bb',1,'boot.php']]],
['item_5frelay',['ITEM_RELAY',['../boot_8php.html#a2958a2bd5422b85329d7c36c06dbc221',1,'boot.php']]],
['item_5fretained',['ITEM_RETAINED',['../boot_8php.html#a11cfe7d99b4dac0454d0de8873989f81',1,'boot.php']]],
+ ['item_5frss',['ITEM_RSS',['../boot_8php.html#ac4d1c93dabcace711ffb4931204c336b',1,'boot.php']]],
['item_5fspam',['ITEM_SPAM',['../boot_8php.html#a40d885b2cfd736aab4234ae641ca4dfb',1,'boot.php']]],
['item_5fstarred',['ITEM_STARRED',['../boot_8php.html#a7af107fab8d62b9a73801713b774ed30',1,'boot.php']]],
['item_5fthread_5ftop',['ITEM_THREAD_TOP',['../boot_8php.html#a749144d8dd9c1366596a0213c277d050',1,'boot.php']]],
diff --git a/doc/html/search/variables_6e.js b/doc/html/search/variables_6e.js
index cf8c2728f..55b3c17f6 100644
--- a/doc/html/search/variables_6e.js
+++ b/doc/html/search/variables_6e.js
@@ -1,6 +1,6 @@
var searchData=
[
- ['n',['n',['../php2po_8php.html#a1594a11499d06cc8a789ee7ca0c7a12b',1,'php2po.php']]],
+ ['n',['n',['../fixd_8php.html#a9d4f8a2ab4d92b3ccfd7cba0458098eb',1,'n():&#160;fixd.php'],['../php2po_8php.html#a1594a11499d06cc8a789ee7ca0c7a12b',1,'n():&#160;php2po.php']]],
['names',['names',['../namespaceupdatetpl.html#ab42dd79af65ee82201fd6f04715f62f6',1,'updatetpl']]],
['namespace_5factivity',['NAMESPACE_ACTIVITY',['../boot_8php.html#a5df5359090d1f8e898c36d7cf8878ad2',1,'boot.php']]],
['namespace_5factivity_5fschema',['NAMESPACE_ACTIVITY_SCHEMA',['../boot_8php.html#a7b8f8ad9dbe82711257d23891ef6b133',1,'boot.php']]],
@@ -16,6 +16,7 @@ var searchData=
['namespace_5fstatusnet',['NAMESPACE_STATUSNET',['../boot_8php.html#afaf93b7026f784b113b4f8921745891e',1,'boot.php']]],
['namespace_5fthread',['NAMESPACE_THREAD',['../boot_8php.html#a1d6e7f4c08bb68e4a424326a811bdd86',1,'boot.php']]],
['namespace_5ftomb',['NAMESPACE_TOMB',['../boot_8php.html#a4bfe22e163657690dfb6d5b1d04cb47e',1,'boot.php']]],
+ ['namespace_5fymedia',['NAMESPACE_YMEDIA',['../boot_8php.html#a3d48dffd9dc73a187263c3002cdf00c0',1,'boot.php']]],
['namespace_5fzot',['NAMESPACE_ZOT',['../boot_8php.html#a49f2a70b3b43aa904223a8d19e986a47',1,'boot.php']]],
['network_5fdfrn',['NETWORK_DFRN',['../boot_8php.html#ae3cef7b63e25e7bafea3fcf6b99fad0e',1,'boot.php']]],
['network_5fdiaspora',['NETWORK_DIASPORA',['../boot_8php.html#a38f6c7fe33b5434a24b4314567753dfa',1,'boot.php']]],
@@ -41,5 +42,6 @@ var searchData=
['notify_5fsystem',['NOTIFY_SYSTEM',['../boot_8php.html#a14d44d4a00223dc3db4ea962325db192',1,'boot.php']]],
['notify_5ftagself',['NOTIFY_TAGSELF',['../boot_8php.html#ab724491497ab2618b23a01d5da60aec0',1,'boot.php']]],
['notify_5ftagshare',['NOTIFY_TAGSHARE',['../boot_8php.html#af6937db5f581d006bf4a5c3d9c7e0461',1,'boot.php']]],
- ['notify_5fwall',['NOTIFY_WALL',['../boot_8php.html#a505410c7edc5f5bb5fa227b98359793e',1,'boot.php']]]
+ ['notify_5fwall',['NOTIFY_WALL',['../boot_8php.html#a505410c7edc5f5bb5fa227b98359793e',1,'boot.php']]],
+ ['null_5fdate',['NULL_DATE',['../classdba__driver.html#afce39394c010ea589d99a21579b2c31e',1,'dba_driver\NULL_DATE()'],['../classdba__postgres.html#aeb404a85974d6c5df30c21650888000b',1,'dba_postgres\NULL_DATE()']]]
];
diff --git a/doc/html/search/variables_70.js b/doc/html/search/variables_70.js
index 4d6e580e7..976a2c161 100644
--- a/doc/html/search/variables_70.js
+++ b/doc/html/search/variables_70.js
@@ -7,12 +7,12 @@ var searchData=
['page_5fcensored',['PAGE_CENSORED',['../boot_8php.html#a36003bebe4ce860c6652bcc3e09b2214',1,'boot.php']]],
['page_5fdirectory_5fchannel',['PAGE_DIRECTORY_CHANNEL',['../boot_8php.html#a5b8484922918946d041e5e0515dbe718',1,'boot.php']]],
['page_5fhidden',['PAGE_HIDDEN',['../boot_8php.html#a5e322a2a2d0f51924c0b2e874988e640',1,'boot.php']]],
+ ['page_5fhubadmin',['PAGE_HUBADMIN',['../boot_8php.html#afbb21ecccac9819aa65397e816868a5f',1,'boot.php']]],
['page_5fnormal',['PAGE_NORMAL',['../boot_8php.html#a09532c3f750ae8c4527e63b2b790cbf3',1,'boot.php']]],
['page_5fpremium',['PAGE_PREMIUM',['../boot_8php.html#ab3920c2f3cd64802c0b7ff625c3b2ea8',1,'boot.php']]],
['page_5fremoved',['PAGE_REMOVED',['../boot_8php.html#a4edce16cb7f21cdafa1e85bf63d713e6',1,'boot.php']]],
['page_5fsystem',['PAGE_SYSTEM',['../boot_8php.html#a6ee7a72d558d1851bbb9e3cdde377932',1,'boot.php']]],
['path',['path',['../namespacefriendica-to-smarty-tpl.html#a68d15934660cd1f4301ce251b1646f09',1,'friendica-to-smarty-tpl.path()'],['../namespaceupdatetpl.html#ae694f5e1f25f8a92a945eb90c432dfe6',1,'updatetpl.path()']]],
- ['perms_5fa_5fbookmark',['PERMS_A_BOOKMARK',['../boot_8php.html#a8b2af16eaee9e7768a88d0e437877f3b',1,'boot.php']]],
['perms_5fa_5fdelegate',['PERMS_A_DELEGATE',['../boot_8php.html#a423505ab8dbd8e39d04ae3fe1374102b',1,'boot.php']]],
['perms_5fa_5frepublish',['PERMS_A_REPUBLISH',['../boot_8php.html#aae6c941bde5fd6fce07e51dba7326ead',1,'boot.php']]],
['perms_5fauthed',['PERMS_AUTHED',['../boot_8php.html#a852d4036a3bed66af1534d014c4ecde2',1,'boot.php']]],
@@ -30,6 +30,7 @@ var searchData=
['perms_5fspecific',['PERMS_SPECIFIC',['../boot_8php.html#a9cc986b4f9dd6558cbb2e25aadbfd964',1,'boot.php']]],
['perms_5fw_5fchat',['PERMS_W_CHAT',['../boot_8php.html#acd877c405b06b348b37b6f7e62a211e9',1,'boot.php']]],
['perms_5fw_5fcomment',['PERMS_W_COMMENT',['../boot_8php.html#a32df13fec0e43281da5979e1f5579aa8',1,'boot.php']]],
+ ['perms_5fw_5flike',['PERMS_W_LIKE',['../boot_8php.html#af3ff14985bffbd951a6ea356b7ec3007',1,'boot.php']]],
['perms_5fw_5fmail',['PERMS_W_MAIL',['../boot_8php.html#a6b31dd451bc6c37fe7c9c766ff385aaf',1,'boot.php']]],
['perms_5fw_5fpages',['PERMS_W_PAGES',['../boot_8php.html#aa9244fc9cc221980c07a20cc534111be',1,'boot.php']]],
['perms_5fw_5fphotos',['PERMS_W_PHOTOS',['../boot_8php.html#a57eee7352714c004d36c26dda74af73e',1,'boot.php']]],
@@ -37,6 +38,8 @@ var searchData=
['perms_5fw_5fstream',['PERMS_W_STREAM',['../boot_8php.html#a8bb0395933b5e886f086f6a2fb0bfa55',1,'boot.php']]],
['perms_5fw_5ftagwall',['PERMS_W_TAGWALL',['../boot_8php.html#a99a4a17cb644e7e6826ea07ecaf09777',1,'boot.php']]],
['perms_5fw_5fwall',['PERMS_W_WALL',['../boot_8php.html#a6b14a31a8aa9f3452a13383f413bffa2',1,'boot.php']]],
+ ['photo_5fadult',['PHOTO_ADULT',['../boot_8php.html#a921c55b9fa59a327a5f0e07fa1ccb2e0',1,'boot.php']]],
+ ['photo_5fflag_5fos',['PHOTO_FLAG_OS',['../boot_8php.html#ab49a5d43ce1150c5af8c750ccb14e15f',1,'boot.php']]],
['photo_5fnormal',['PHOTO_NORMAL',['../boot_8php.html#a4a49b29838ef2c45ab3556b52baec6a4',1,'boot.php']]],
['photo_5fprofile',['PHOTO_PROFILE',['../boot_8php.html#ab4bc9c50ecc927b92d519e36562b0df0',1,'boot.php']]],
['photo_5fthing',['PHOTO_THING',['../boot_8php.html#a78849a1bf8ce8d9804b4cbb502e8f383',1,'boot.php']]],
@@ -46,8 +49,5 @@ var searchData=
['poll_5fmultiple_5fchoice',['POLL_MULTIPLE_CHOICE',['../boot_8php.html#abbf5ac24eb8aeedb862f618ee0d21e86',1,'boot.php']]],
['poll_5foverwrite',['POLL_OVERWRITE',['../boot_8php.html#a2b525996e4426bdddbcec277778bde08',1,'boot.php']]],
['poll_5fsimple_5frating',['POLL_SIMPLE_RATING',['../boot_8php.html#ad88a70ec62e08d590123d3697dfe64d5',1,'boot.php']]],
- ['poll_5ftenscale',['POLL_TENSCALE',['../boot_8php.html#a1ba00027b718db732f30fc0e2c3e0abc',1,'boot.php']]],
- ['post_5fto_5fred_5facct_5fname',['post_to_red_acct_name',['../post__to__red_8php.html#a588cea66afe0b32f27f2713d44940119',1,'post_to_red.php']]],
- ['post_5fto_5fred_5fpath',['post_to_red_path',['../post__to__red_8php.html#a6210f39392a5f0fa0255cc7d3760493a',1,'post_to_red.php']]],
- ['post_5fto_5fred_5fversion',['post_to_red_version',['../post__to__red_8php.html#af3e7ebd361d4ed7cb6d43209970cd94a',1,'post_to_red.php']]]
+ ['poll_5ftenscale',['POLL_TENSCALE',['../boot_8php.html#a1ba00027b718db732f30fc0e2c3e0abc',1,'boot.php']]]
];
diff --git a/doc/html/search/variables_72.js b/doc/html/search/variables_72.js
index be2927ed5..885c50398 100644
--- a/doc/html/search/variables_72.js
+++ b/doc/html/search/variables_72.js
@@ -5,6 +5,13 @@ var searchData=
['rdelim',['rdelim',['../namespacefriendica-to-smarty-tpl.html#a8540514fb7c4aa18ad2dffa2a975036b',1,'friendica-to-smarty-tpl']]],
['red_5fplatform',['RED_PLATFORM',['../boot_8php.html#a96ad56755a21e1361dbd7bf93c9e7ff4',1,'boot.php']]],
['red_5fversion',['RED_VERSION',['../boot_8php.html#a21cc29e0025943e7c28ff58cb4856ac3',1,'boot.php']]],
+ ['redmatrix_5fimportchannel',['REDMATRIX_IMPORTCHANNEL',['../refimport_8php.html#a54003135d7c8994a76e831fb6faa2fe6',1,'refimport.php']]],
+ ['reflect_5fbaseurl',['REFLECT_BASEURL',['../refimport_8php.html#ac43699d8ae86175e049aa4e87853caac',1,'refimport.php']]],
+ ['reflect_5fblogname',['REFLECT_BLOGNAME',['../refimport_8php.html#a8459983ebf013ed5737f7ed317bfae1f',1,'refimport.php']]],
+ ['reflect_5fexportusername',['REFLECT_EXPORTUSERNAME',['../refimport_8php.html#ad297afe0730c9119dd94d3cf0521b025',1,'refimport.php']]],
+ ['reflect_5fmaxperrun',['REFLECT_MAXPERRUN',['../refimport_8php.html#a9c1f681f1f303400a9818696a9f96d6f',1,'refimport.php']]],
+ ['reflect_5foverwrite',['REFLECT_OVERWRITE',['../refimport_8php.html#aeec793cefa260f788b7d005adcb35796',1,'refimport.php']]],
+ ['reflect_5fuserfile',['REFLECT_USERFILE',['../refimport_8php.html#a684a44d2401abf75f441591bcb41d10d',1,'refimport.php']]],
['register_5fapprove',['REGISTER_APPROVE',['../boot_8php.html#a7176c0f9f1c98421b97735d892cf6252',1,'boot.php']]],
['register_5fclosed',['REGISTER_CLOSED',['../boot_8php.html#a69aac276ed82e010dc382b16ab4d59e1',1,'boot.php']]],
['register_5fopen',['REGISTER_OPEN',['../boot_8php.html#ad8887b49bbb02dd30b4eb9f6c7773c63',1,'boot.php']]],
diff --git a/doc/html/search/variables_75.js b/doc/html/search/variables_75.js
index 3ba76224d..0cf257ad6 100644
--- a/doc/html/search/variables_75.js
+++ b/doc/html/search/variables_75.js
@@ -4,5 +4,6 @@ var searchData=
['update_5fflags_5fdeleted',['UPDATE_FLAGS_DELETED',['../boot_8php.html#aea392cb26ed617f3a8cde648385b5df0',1,'boot.php']]],
['update_5fflags_5fforced',['UPDATE_FLAGS_FORCED',['../boot_8php.html#ab9dca53455cd157d3c6ba2bdecdbd22d',1,'boot.php']]],
['update_5fflags_5fupdated',['UPDATE_FLAGS_UPDATED',['../boot_8php.html#a9690d73434125ce594a1f5e7c2a4f7c0',1,'boot.php']]],
- ['update_5fsuccess',['UPDATE_SUCCESS',['../boot_8php.html#ac86615ddc0763a00f5311c90e991730c',1,'boot.php']]]
+ ['update_5fsuccess',['UPDATE_SUCCESS',['../boot_8php.html#ac86615ddc0763a00f5311c90e991730c',1,'boot.php']]],
+ ['utc_5fnow',['UTC_NOW',['../classdba__driver.html#aa3325d982d4ee5d1114fd7e02a4356e8',1,'dba_driver\UTC_NOW()'],['../classdba__postgres.html#ace80a204e34b20b9907650399cce02a3',1,'dba_postgres\UTC_NOW()']]]
];
diff --git a/doc/html/search/variables_76.html b/doc/html/search/variables_76.html
new file mode 100644
index 000000000..8af237461
--- /dev/null
+++ b/doc/html/search/variables_76.html
@@ -0,0 +1,26 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html><head><title></title>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta name="generator" content="Doxygen 1.8.3.1">
+<link rel="stylesheet" type="text/css" href="search.css"/>
+<script type="text/javascript" src="variables_76.js"></script>
+<script type="text/javascript" src="search.js"></script>
+</head>
+<body class="SRPage">
+<div id="SRIndex">
+<div class="SRStatus" id="Loading">Loading...</div>
+<div id="SRResults"></div>
+<script type="text/javascript"><!--
+createResults();
+--></script>
+<div class="SRStatus" id="Searching">Searching...</div>
+<div class="SRStatus" id="NoMatches">No Matches</div>
+<script type="text/javascript"><!--
+document.getElementById("Loading").style.display="none";
+document.getElementById("NoMatches").style.display="none";
+var searchResults = new SearchResults("searchResults");
+searchResults.Search();
+--></script>
+</div>
+</body>
+</html>
diff --git a/doc/html/search/variables_76.js b/doc/html/search/variables_76.js
new file mode 100644
index 000000000..f046273ce
--- /dev/null
+++ b/doc/html/search/variables_76.js
@@ -0,0 +1,14 @@
+var searchData=
+[
+ ['vnotify_5falert',['VNOTIFY_ALERT',['../boot_8php.html#a9f8a2938ddd9ee2867e6f8ce77b61b2f',1,'boot.php']]],
+ ['vnotify_5fbirthday',['VNOTIFY_BIRTHDAY',['../boot_8php.html#ac89396b9144391acd08d6d0f9b332220',1,'boot.php']]],
+ ['vnotify_5fchannel',['VNOTIFY_CHANNEL',['../boot_8php.html#a7b511bd93202c43405adbe3b5bcebbfe',1,'boot.php']]],
+ ['vnotify_5fevent',['VNOTIFY_EVENT',['../boot_8php.html#ad94aca4c260b8a892397786201dc4664',1,'boot.php']]],
+ ['vnotify_5feventtoday',['VNOTIFY_EVENTTODAY',['../boot_8php.html#a76480b213af379c0c6c7fa4e39019ca9',1,'boot.php']]],
+ ['vnotify_5finfo',['VNOTIFY_INFO',['../boot_8php.html#a37281c30bd92cecb499878d6778c570f',1,'boot.php']]],
+ ['vnotify_5fintro',['VNOTIFY_INTRO',['../boot_8php.html#a1997c4b7d0253e036bc0fb6b20e4af71',1,'boot.php']]],
+ ['vnotify_5fmail',['VNOTIFY_MAIL',['../boot_8php.html#a0afeb43da443d6ff3526ede5ecdcc3b3',1,'boot.php']]],
+ ['vnotify_5fnetwork',['VNOTIFY_NETWORK',['../boot_8php.html#a997614f25e58f8313641e1eb0109fd10',1,'boot.php']]],
+ ['vnotify_5fregister',['VNOTIFY_REGISTER',['../boot_8php.html#ae09767b94688657978ff9366ec63684b',1,'boot.php']]],
+ ['vnotify_5fsystem',['VNOTIFY_SYSTEM',['../boot_8php.html#a7e5627b5ca4b7464feb0f08663b19ea1',1,'boot.php']]]
+];
diff --git a/doc/html/search/variables_78.js b/doc/html/search/variables_78.js
index 75be51da5..312bf2391 100644
--- a/doc/html/search/variables_78.js
+++ b/doc/html/search/variables_78.js
@@ -5,6 +5,7 @@ var searchData=
['xchan_5fflags_5fhidden',['XCHAN_FLAGS_HIDDEN',['../boot_8php.html#a1af3ed96de14aa0d7891b39cc75b60f2',1,'boot.php']]],
['xchan_5fflags_5fnormal',['XCHAN_FLAGS_NORMAL',['../boot_8php.html#a8fdcc4ffb365a3267bd02ce8a8d466d6',1,'boot.php']]],
['xchan_5fflags_5forphan',['XCHAN_FLAGS_ORPHAN',['../boot_8php.html#a1c923b99bf77e4203ae94e5684b6ad0f',1,'boot.php']]],
+ ['xchan_5fflags_5fpubforum',['XCHAN_FLAGS_PUBFORUM',['../boot_8php.html#a0209e605028a5bb492683951ab30d49d',1,'boot.php']]],
['xchan_5fflags_5fselfcensored',['XCHAN_FLAGS_SELFCENSORED',['../boot_8php.html#a5a681a672e007cdc22b43345d71f07c6',1,'boot.php']]],
['xchan_5fflags_5fsystem',['XCHAN_FLAGS_SYSTEM',['../boot_8php.html#afef254290febac854c85fc698d9483a6',1,'boot.php']]]
];
diff --git a/doc/html/security_8php.html b/doc/html/security_8php.html
index 6edd01940..a8efeb979 100644
--- a/doc/html/security_8php.html
+++ b/doc/html/security_8php.html
@@ -115,10 +115,13 @@ Functions</h2></td></tr>
<tr class="memitem:adc7bf51e3b8d67bd80e9348f9ab03733"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="security_8php.html#adc7bf51e3b8d67bd80e9348f9ab03733">authenticate_success</a> ($user_record, $login_initial=false, $interactive=false, $return=false, $update_lastlog=false)</td></tr>
<tr class="separator:adc7bf51e3b8d67bd80e9348f9ab03733"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a8d23d2597aae380a3341872fe9513380"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="security_8php.html#a8d23d2597aae380a3341872fe9513380">change_channel</a> ($change_channel)</td></tr>
+<tr class="memdesc:a8d23d2597aae380a3341872fe9513380"><td class="mdescLeft">&#160;</td><td class="mdescRight">Change to another channel with current logged-in account. <a href="#a8d23d2597aae380a3341872fe9513380">More...</a><br/></td></tr>
<tr class="separator:a8d23d2597aae380a3341872fe9513380"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:afa683bc025a1d2fe9065e2f6cd71a22f"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="security_8php.html#afa683bc025a1d2fe9065e2f6cd71a22f">permissions_sql</a> ($owner_id, $remote_verified=false, $groups=null)</td></tr>
+<tr class="memdesc:afa683bc025a1d2fe9065e2f6cd71a22f"><td class="mdescLeft">&#160;</td><td class="mdescRight">Creates an addiontal SQL where statement to check permissions. <a href="#afa683bc025a1d2fe9065e2f6cd71a22f">More...</a><br/></td></tr>
<tr class="separator:afa683bc025a1d2fe9065e2f6cd71a22f"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a9355488460ab11d6058656ff919e5cf9"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="security_8php.html#a9355488460ab11d6058656ff919e5cf9">item_permissions_sql</a> ($owner_id, $remote_verified=false, $groups=null)</td></tr>
+<tr class="memdesc:a9355488460ab11d6058656ff919e5cf9"><td class="mdescLeft">&#160;</td><td class="mdescRight">Creates an addiontal SQL where statement to check permissions for an item. <a href="#a9355488460ab11d6058656ff919e5cf9">More...</a><br/></td></tr>
<tr class="separator:a9355488460ab11d6058656ff919e5cf9"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ab3bdd30dc60d9ee72370b866aa4a2d01"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="security_8php.html#ab3bdd30dc60d9ee72370b866aa4a2d01">public_permissions_sql</a> ($observer_hash)</td></tr>
<tr class="separator:ab3bdd30dc60d9ee72370b866aa4a2d01"><td class="memSeparator" colspan="2">&#160;</td></tr>
@@ -137,7 +140,9 @@ Functions</h2></td></tr>
<tr class="memitem:a3ef2be6a7e4928e39d50059d6feb457c"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="security_8php.html#a3ef2be6a7e4928e39d50059d6feb457c">stream_perms_xchans</a> ($perms=NULL)</td></tr>
<tr class="separator:a3ef2be6a7e4928e39d50059d6feb457c"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
-<h2 class="groupheader">Function Documentation</h2>
+<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
+<div class="textblock"><p>Some security related functions. </p>
+</div><h2 class="groupheader">Function Documentation</h2>
<a class="anchor" id="adc7bf51e3b8d67bd80e9348f9ab03733"></a>
<div class="memitem">
<div class="memproto">
@@ -179,6 +184,16 @@ Functions</h2></td></tr>
</tr>
</table>
</div><div class="memdoc">
+<dl class="params"><dt>Parameters</dt><dd>
+ <table class="params">
+ <tr><td class="paramtype">int</td><td class="paramname">$user_record</td><td>The account_id </td></tr>
+ <tr><td class="paramtype">bool</td><td class="paramname">$login_initial</td><td>default false </td></tr>
+ <tr><td class="paramtype">bool</td><td class="paramname">$interactive</td><td>default false </td></tr>
+ <tr><td class="paramtype">bool</td><td class="paramname">$return</td><td></td></tr>
+ <tr><td class="paramtype">bool</td><td class="paramname">$update_lastlog</td><td></td></tr>
+ </table>
+ </dd>
+</dl>
<p>Referenced by <a class="el" href="include_2api_8php.html#afe534f826e4282b72d66e8cadca7bb73">api_login()</a>, <a class="el" href="openid_8php.html#a9a13827dbcf61ae4e45f0b6b33a88f43">openid_content()</a>, and <a class="el" href="register_8php.html#a51731dcc1917c58a790eb1c0f6132271">register_post()</a>.</p>
@@ -198,7 +213,16 @@ Functions</h2></td></tr>
</table>
</div><div class="memdoc">
-<p>Referenced by <a class="el" href="include_2api_8php.html#afb99daa6b731bf497b81f2128084852c">api_user()</a>, <a class="el" href="security_8php.html#adc7bf51e3b8d67bd80e9348f9ab03733">authenticate_success()</a>, <a class="el" href="import_8php.html#af17fef0410518f7eac205d0ea416eaa2">import_post()</a>, <a class="el" href="classFKOAuth1.html#a2b1dac2ed31fc6ef84668afdda8b263f">FKOAuth1\loginUser()</a>, <a class="el" href="manage_8php.html#a2bca247b5296827638959138367db4f5">manage_content()</a>, <a class="el" href="new__channel_8php.html#a180b0646957db8290482f02454ad7f23">new_channel_post()</a>, and <a class="el" href="rpost_8php.html#a8190354d789000806d9879aea276728f">rpost_content()</a>.</p>
+<p>Change to another channel with current logged-in account. </p>
+<dl class="params"><dt>Parameters</dt><dd>
+ <table class="params">
+ <tr><td class="paramtype">int</td><td class="paramname">$change_channel</td><td>The channel_id of the channel you want to change to</td></tr>
+ </table>
+ </dd>
+</dl>
+<dl class="section return"><dt>Returns</dt><dd>bool|array false or channel record of the new channel </dd></dl>
+
+<p>Referenced by <a class="el" href="include_2api_8php.html#afe534f826e4282b72d66e8cadca7bb73">api_login()</a>, <a class="el" href="include_2api_8php.html#afb99daa6b731bf497b81f2128084852c">api_user()</a>, <a class="el" href="security_8php.html#adc7bf51e3b8d67bd80e9348f9ab03733">authenticate_success()</a>, <a class="el" href="import_8php.html#af17fef0410518f7eac205d0ea416eaa2">import_post()</a>, <a class="el" href="classFKOAuth1.html#a2b1dac2ed31fc6ef84668afdda8b263f">FKOAuth1\loginUser()</a>, <a class="el" href="manage_8php.html#a2bca247b5296827638959138367db4f5">manage_content()</a>, <a class="el" href="new__channel_8php.html#a180b0646957db8290482f02454ad7f23">new_channel_post()</a>, and <a class="el" href="rpost_8php.html#a8190354d789000806d9879aea276728f">rpost_content()</a>.</p>
</div>
</div>
@@ -356,12 +380,23 @@ Functions</h2></td></tr>
</tr>
</table>
</div><div class="memdoc">
+
+<p>Creates an addiontal SQL where statement to check permissions for an item. </p>
+<dl class="params"><dt>Parameters</dt><dd>
+ <table class="params">
+ <tr><td class="paramtype">int</td><td class="paramname">$owner_id</td><td></td></tr>
+ <tr><td class="paramtype">bool</td><td class="paramname">$remote_verified</td><td>default false, not used at all </td></tr>
+ <tr><td class="paramtype">string</td><td class="paramname">$groups</td><td>this param is not used at all</td></tr>
+ </table>
+ </dd>
+</dl>
+<dl class="section return"><dt>Returns</dt><dd>string additional SQL where statement </dd></dl>
<p>Construct permissions</p>
<p>default permissions - anonymous user</p>
<p>Profile owner - everything is visible</p>
<p>Authenticated visitor. Unless pre-verified, check that the contact belongs to this $owner_id and load the groups the visitor belongs to. If pre-verified, the caller is expected to have already done this and passed the groups into this function.</p>
-<p>Referenced by <a class="el" href="block_8php.html#a8a82a470acdfbc7a8e749509caeeea45">block_content()</a>, <a class="el" href="channel_8php.html#a9c6a6179e0e626398ebecc6151905ef1">channel_content()</a>, <a class="el" href="items_8php.html#a756738301f2ed96be50232500677d58a">items_fetch()</a>, <a class="el" href="page_8php.html#a91a5f649f68406149108bded1dc90b22">page_content()</a>, <a class="el" href="comanche_8php.html#af7150df735e5ff9d467994cd6f769c6e">pdl_selector()</a>, <a class="el" href="share_8php.html#afeb26046bdd02567ecd29ab5f188b249">share_init()</a>, <a class="el" href="widgets_8php.html#a313a8d10ab81c71357c12e67e4d7efd5">widget_item()</a>, and <a class="el" href="items_8php.html#a004e89d86b0f29b2c4da20108ecc4091">zot_feed()</a>.</p>
+<p>Referenced by <a class="el" href="block_8php.html#a8a82a470acdfbc7a8e749509caeeea45">block_content()</a>, <a class="el" href="channel_8php.html#a9c6a6179e0e626398ebecc6151905ef1">channel_content()</a>, <a class="el" href="items_8php.html#a756738301f2ed96be50232500677d58a">items_fetch()</a>, <a class="el" href="page_8php.html#a4d89800c0366a239191b1692c09635cf">page_init()</a>, <a class="el" href="comanche_8php.html#af7150df735e5ff9d467994cd6f769c6e">pdl_selector()</a>, <a class="el" href="share_8php.html#afeb26046bdd02567ecd29ab5f188b249">share_init()</a>, <a class="el" href="widgets_8php.html#a313a8d10ab81c71357c12e67e4d7efd5">widget_item()</a>, <a class="el" href="widgets_8php.html#a829c5a5c7448129266fc1df3ae1a3c2e">widget_random_block()</a>, and <a class="el" href="items_8php.html#a1cf89557f32d5dfbe8bd90448dc1aa92">zot_feed()</a>.</p>
</div>
</div>
@@ -394,12 +429,23 @@ Functions</h2></td></tr>
</tr>
</table>
</div><div class="memdoc">
+
+<p>Creates an addiontal SQL where statement to check permissions. </p>
+<dl class="params"><dt>Parameters</dt><dd>
+ <table class="params">
+ <tr><td class="paramtype">int</td><td class="paramname">$owner_id</td><td></td></tr>
+ <tr><td class="paramtype">bool</td><td class="paramname">$remote_verified</td><td>default false, not used at all </td></tr>
+ <tr><td class="paramtype">string</td><td class="paramname">$groups</td><td>this param is not used at all</td></tr>
+ </table>
+ </dd>
+</dl>
+<dl class="section return"><dt>Returns</dt><dd>string additional SQL where statement </dd></dl>
<p>Construct permissions</p>
<p>default permissions - anonymous user</p>
<p>Profile owner - everything is visible</p>
<p>Authenticated visitor. Unless pre-verified, check that the contact belongs to this $owner_id and load the groups the visitor belongs to. If pre-verified, the caller is expected to have already done this and passed the groups into this function.</p>
-<p>Referenced by <a class="el" href="include_2attach_8php.html#a0d07c5b83d3d54e186f752e571847b36">attach_by_hash()</a>, <a class="el" href="include_2attach_8php.html#ad991208ce939387e2f93a3bce7d09932">attach_by_hash_nodata()</a>, <a class="el" href="include_2attach_8php.html#a887d2d44a3ef18dcb6624e7fb58dc8e3">attach_count_files()</a>, <a class="el" href="include_2attach_8php.html#a3634af95f11a023dd8e882c3c7a3600d">attach_list_files()</a>, <a class="el" href="include_2attach_8php.html#ab6830b3ab74a5d284876141ac80f6cbc">attach_mkdir()</a>, <a class="el" href="mod_2chat_8php.html#a8b0b8bee6fef6477e8c64c5e951b1b4f">chat_content()</a>, <a class="el" href="include_2chat_8php.html#acea6b176eb7aff44d9ba3ae24ce511d3">chat_message()</a>, <a class="el" href="include_2chat_8php.html#a2c95b545e46bfee64faa05ecf0afea91">chatroom_enter()</a>, <a class="el" href="include_2chat_8php.html#aedcb532a0627b8644001a2fadab4e87a">chatroom_list()</a>, <a class="el" href="chatsvc_8php.html#a7032784215e1f6747cf385a6598770f9">chatsvc_content()</a>, <a class="el" href="chatsvc_8php.html#a7c9a9b9c24a2b02eed8efd6b09632d03">chatsvc_post()</a>, <a class="el" href="include_2menu_8php.html#a68ebbf492470c930f652013656f9071d">menu_fetch()</a>, <a class="el" href="photo_8php.html#a582779d24882b0d31ee909a91d70a448">photo_init()</a>, <a class="el" href="include_2photos_8php.html#aedccaf18282b26899d9549c29bd9d1b9">photos_albums_list()</a>, <a class="el" href="mod_2photos_8php.html#aa87382611a66ec5effdb2d78f13f5812">photos_content()</a>, <a class="el" href="include_2photos_8php.html#aa27b9e435dcc34e1009f56dc02c7ca51">photos_list_photos()</a>, <a class="el" href="reddav_8php.html#a5df0d09893f2e65dc5cf6bbab6cfb266">RedCollectionData()</a>, <a class="el" href="reddav_8php.html#a9f531641dfb4e43cd88ac1a9ae7e2088">RedFileData()</a>, and <a class="el" href="include_2attach_8php.html#aeb07968990e66a88c95483ca09a7f909">z_readdir()</a>.</p>
+<p>Referenced by <a class="el" href="include_2attach_8php.html#a0d07c5b83d3d54e186f752e571847b36">attach_by_hash()</a>, <a class="el" href="include_2attach_8php.html#ad991208ce939387e2f93a3bce7d09932">attach_by_hash_nodata()</a>, <a class="el" href="include_2attach_8php.html#a887d2d44a3ef18dcb6624e7fb58dc8e3">attach_count_files()</a>, <a class="el" href="include_2attach_8php.html#a3634af95f11a023dd8e882c3c7a3600d">attach_list_files()</a>, <a class="el" href="include_2attach_8php.html#ab6830b3ab74a5d284876141ac80f6cbc">attach_mkdir()</a>, <a class="el" href="mod_2chat_8php.html#a8b0b8bee6fef6477e8c64c5e951b1b4f">chat_content()</a>, <a class="el" href="include_2chat_8php.html#acea6b176eb7aff44d9ba3ae24ce511d3">chat_message()</a>, <a class="el" href="include_2chat_8php.html#a2c95b545e46bfee64faa05ecf0afea91">chatroom_enter()</a>, <a class="el" href="include_2chat_8php.html#aedcb532a0627b8644001a2fadab4e87a">chatroom_list()</a>, <a class="el" href="include_2chat_8php.html#a26abdccc2a278a59899896dbbfc6f049">chatroom_list_count()</a>, <a class="el" href="chatsvc_8php.html#a7032784215e1f6747cf385a6598770f9">chatsvc_content()</a>, <a class="el" href="chatsvc_8php.html#a7c9a9b9c24a2b02eed8efd6b09632d03">chatsvc_post()</a>, <a class="el" href="include_2menu_8php.html#a68ebbf492470c930f652013656f9071d">menu_fetch()</a>, <a class="el" href="photo_8php.html#a582779d24882b0d31ee909a91d70a448">photo_init()</a>, <a class="el" href="include_2photos_8php.html#aedccaf18282b26899d9549c29bd9d1b9">photos_albums_list()</a>, <a class="el" href="mod_2photos_8php.html#aa87382611a66ec5effdb2d78f13f5812">photos_content()</a>, <a class="el" href="include_2photos_8php.html#aa27b9e435dcc34e1009f56dc02c7ca51">photos_list_photos()</a>, <a class="el" href="reddav_8php.html#a5df0d09893f2e65dc5cf6bbab6cfb266">RedCollectionData()</a>, <a class="el" href="reddav_8php.html#a9f531641dfb4e43cd88ac1a9ae7e2088">RedFileData()</a>, and <a class="el" href="include_2attach_8php.html#aeb07968990e66a88c95483ca09a7f909">z_readdir()</a>.</p>
</div>
</div>
@@ -416,6 +462,13 @@ Functions</h2></td></tr>
</tr>
</table>
</div><div class="memdoc">
+<dl class="params"><dt>Parameters</dt><dd>
+ <table class="params">
+ <tr><td class="paramtype">string</td><td class="paramname">$observer_hash</td><td></td></tr>
+ </table>
+ </dd>
+</dl>
+<dl class="section return"><dt>Returns</dt><dd>string additional SQL where statement </dd></dl>
<p>Referenced by <a class="el" href="display_8php.html#a37137c98d47bf3306f4c2bb9f5b60de0">display_content()</a>, and <a class="el" href="search_8php.html#ab2568591359edde5b483a6cd9a24b2cc">search_content()</a>.</p>
@@ -435,7 +488,7 @@ Functions</h2></td></tr>
</table>
</div><div class="memdoc">
-<p>Referenced by <a class="el" href="include_2api_8php.html#a645397787618b5c548a31e8686e8cca4">api_status_show()</a>, <a class="el" href="include_2api_8php.html#ad24ce1bf20867add4c9211a8eaf93f22">api_statuses_public_timeline()</a>, <a class="el" href="include_2api_8php.html#abe8e929e93f7ab134b1cb1fb30f19a76">api_users_show()</a>, and <a class="el" href="items_8php.html#a004e89d86b0f29b2c4da20108ecc4091">zot_feed()</a>.</p>
+<p>Referenced by <a class="el" href="include_2api_8php.html#a645397787618b5c548a31e8686e8cca4">api_status_show()</a>, <a class="el" href="include_2api_8php.html#ad24ce1bf20867add4c9211a8eaf93f22">api_statuses_public_timeline()</a>, <a class="el" href="include_2api_8php.html#abe8e929e93f7ab134b1cb1fb30f19a76">api_users_show()</a>, and <a class="el" href="items_8php.html#a1cf89557f32d5dfbe8bd90448dc1aa92">zot_feed()</a>.</p>
</div>
</div>
diff --git a/doc/html/service__limits_8php.html b/doc/html/service__limits_8php.html
new file mode 100644
index 000000000..808e3ca9a
--- /dev/null
+++ b/doc/html/service__limits_8php.html
@@ -0,0 +1,137 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<meta name="generator" content="Doxygen 1.8.3.1"/>
+<title>The Red Matrix: mod/service_limits.php File Reference</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="navtree.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="resize.js"></script>
+<script type="text/javascript" src="navtree.js"></script>
+<script type="text/javascript">
+ $(document).ready(initResizable);
+ $(window).load(resizeHeight);
+</script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/search.js"></script>
+<script type="text/javascript">
+ $(document).ready(function() { searchBox.OnSelectItem(0); });
+</script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+ <td id="projectlogo"><img alt="Logo" src="rm-64.png"/></td>
+ <td style="padding-left: 0.5em;">
+ <div id="projectname">The Red Matrix
+ </div>
+ </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.8.3.1 -->
+<script type="text/javascript">
+var searchBox = new SearchBox("searchBox", "search",false,'Search');
+</script>
+ <div id="navrow1" class="tabs">
+ <ul class="tablist">
+ <li><a href="index.html"><span>Main&#160;Page</span></a></li>
+ <li><a href="pages.html"><span>Related&#160;Pages</span></a></li>
+ <li><a href="namespaces.html"><span>Namespaces</span></a></li>
+ <li><a href="annotated.html"><span>Classes</span></a></li>
+ <li class="current"><a href="files.html"><span>Files</span></a></li>
+ <li>
+ <div id="MSearchBox" class="MSearchBoxInactive">
+ <span class="left">
+ <img id="MSearchSelect" src="search/mag_sel.png"
+ onmouseover="return searchBox.OnSearchSelectShow()"
+ onmouseout="return searchBox.OnSearchSelectHide()"
+ alt=""/>
+ <input type="text" id="MSearchField" value="Search" accesskey="S"
+ onfocus="searchBox.OnSearchFieldFocus(true)"
+ onblur="searchBox.OnSearchFieldFocus(false)"
+ onkeyup="searchBox.OnSearchFieldChange(event)"/>
+ </span><span class="right">
+ <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
+ </span>
+ </div>
+ </li>
+ </ul>
+ </div>
+ <div id="navrow2" class="tabs2">
+ <ul class="tablist">
+ <li><a href="files.html"><span>File&#160;List</span></a></li>
+ <li><a href="globals.html"><span>File&#160;Members</span></a></li>
+ </ul>
+ </div>
+</div><!-- top -->
+<div id="side-nav" class="ui-resizable side-nav-resizable">
+ <div id="nav-tree">
+ <div id="nav-tree-contents">
+ <div id="nav-sync" class="sync"></div>
+ </div>
+ </div>
+ <div id="splitbar" style="-moz-user-select:none;"
+ class="ui-resizable-handle">
+ </div>
+</div>
+<script type="text/javascript">
+$(document).ready(function(){initNavTree('service__limits_8php.html','');});
+</script>
+<div id="doc-content">
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+ onmouseover="return searchBox.OnSearchSelectShow()"
+ onmouseout="return searchBox.OnSearchSelectHide()"
+ onkeydown="return searchBox.OnSearchSelectKey(event)">
+<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark">&#160;</span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark">&#160;</span>Classes</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark">&#160;</span>Namespaces</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark">&#160;</span>Files</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark">&#160;</span>Functions</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark">&#160;</span>Variables</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark">&#160;</span>Pages</a></div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<iframe src="javascript:void(0)" frameborder="0"
+ name="MSearchResults" id="MSearchResults">
+</iframe>
+</div>
+
+<div class="header">
+ <div class="summary">
+<a href="#func-members">Functions</a> </div>
+ <div class="headertitle">
+<div class="title">service_limits.php File Reference</div> </div>
+</div><!--header-->
+<div class="contents">
+<table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="func-members"></a>
+Functions</h2></td></tr>
+<tr class="memitem:a653424aac63c5cd05ba70c3c77bf7f8a"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="service__limits_8php.html#a653424aac63c5cd05ba70c3c77bf7f8a">service_limits_content</a> (&amp;$a)</td></tr>
+<tr class="separator:a653424aac63c5cd05ba70c3c77bf7f8a"><td class="memSeparator" colspan="2">&#160;</td></tr>
+</table>
+<h2 class="groupheader">Function Documentation</h2>
+<a class="anchor" id="a653424aac63c5cd05ba70c3c77bf7f8a"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">service_limits_content </td>
+ <td>(</td>
+ <td class="paramtype">&amp;&#160;</td>
+ <td class="paramname"><em>$a</em></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+</div>
+</div>
+</div><!-- contents -->
+</div><!-- doc-content -->
+
diff --git a/doc/html/service__limits_8php.js b/doc/html/service__limits_8php.js
new file mode 100644
index 000000000..4ab8d3a33
--- /dev/null
+++ b/doc/html/service__limits_8php.js
@@ -0,0 +1,4 @@
+var service__limits_8php =
+[
+ [ "service_limits_content", "service__limits_8php.html#a653424aac63c5cd05ba70c3c77bf7f8a", null ]
+]; \ No newline at end of file
diff --git a/doc/html/setup_8php.html b/doc/html/setup_8php.html
index 3537830f1..8c57c8058 100644
--- a/doc/html/setup_8php.html
+++ b/doc/html/setup_8php.html
@@ -348,8 +348,6 @@ Variables</h2></td></tr>
</table>
</div><div class="memdoc">
-<p>Referenced by <a class="el" href="setup_8php.html#a13cf286774149a0a7bd8adb8179cec75">setup_post()</a>.</p>
-
</div>
</div>
<a class="anchor" id="ad2e0375a9ab87ebe6e78124ee125054a"></a>
diff --git a/doc/html/simple__black__on__white_8php.html b/doc/html/simple__black__on__white_8php.html
new file mode 100644
index 000000000..24c0fcde5
--- /dev/null
+++ b/doc/html/simple__black__on__white_8php.html
@@ -0,0 +1,112 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<meta name="generator" content="Doxygen 1.8.3.1"/>
+<title>The Red Matrix: view/theme/redbasic/schema/simple_black_on_white.php File Reference</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="navtree.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="resize.js"></script>
+<script type="text/javascript" src="navtree.js"></script>
+<script type="text/javascript">
+ $(document).ready(initResizable);
+ $(window).load(resizeHeight);
+</script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/search.js"></script>
+<script type="text/javascript">
+ $(document).ready(function() { searchBox.OnSelectItem(0); });
+</script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+ <td id="projectlogo"><img alt="Logo" src="rm-64.png"/></td>
+ <td style="padding-left: 0.5em;">
+ <div id="projectname">The Red Matrix
+ </div>
+ </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.8.3.1 -->
+<script type="text/javascript">
+var searchBox = new SearchBox("searchBox", "search",false,'Search');
+</script>
+ <div id="navrow1" class="tabs">
+ <ul class="tablist">
+ <li><a href="index.html"><span>Main&#160;Page</span></a></li>
+ <li><a href="pages.html"><span>Related&#160;Pages</span></a></li>
+ <li><a href="namespaces.html"><span>Namespaces</span></a></li>
+ <li><a href="annotated.html"><span>Classes</span></a></li>
+ <li class="current"><a href="files.html"><span>Files</span></a></li>
+ <li>
+ <div id="MSearchBox" class="MSearchBoxInactive">
+ <span class="left">
+ <img id="MSearchSelect" src="search/mag_sel.png"
+ onmouseover="return searchBox.OnSearchSelectShow()"
+ onmouseout="return searchBox.OnSearchSelectHide()"
+ alt=""/>
+ <input type="text" id="MSearchField" value="Search" accesskey="S"
+ onfocus="searchBox.OnSearchFieldFocus(true)"
+ onblur="searchBox.OnSearchFieldFocus(false)"
+ onkeyup="searchBox.OnSearchFieldChange(event)"/>
+ </span><span class="right">
+ <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
+ </span>
+ </div>
+ </li>
+ </ul>
+ </div>
+ <div id="navrow2" class="tabs2">
+ <ul class="tablist">
+ <li><a href="files.html"><span>File&#160;List</span></a></li>
+ <li><a href="globals.html"><span>File&#160;Members</span></a></li>
+ </ul>
+ </div>
+</div><!-- top -->
+<div id="side-nav" class="ui-resizable side-nav-resizable">
+ <div id="nav-tree">
+ <div id="nav-tree-contents">
+ <div id="nav-sync" class="sync"></div>
+ </div>
+ </div>
+ <div id="splitbar" style="-moz-user-select:none;"
+ class="ui-resizable-handle">
+ </div>
+</div>
+<script type="text/javascript">
+$(document).ready(function(){initNavTree('simple__black__on__white_8php.html','');});
+</script>
+<div id="doc-content">
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+ onmouseover="return searchBox.OnSearchSelectShow()"
+ onmouseout="return searchBox.OnSearchSelectHide()"
+ onkeydown="return searchBox.OnSearchSelectKey(event)">
+<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark">&#160;</span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark">&#160;</span>Classes</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark">&#160;</span>Namespaces</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark">&#160;</span>Files</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark">&#160;</span>Functions</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark">&#160;</span>Variables</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark">&#160;</span>Pages</a></div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<iframe src="javascript:void(0)" frameborder="0"
+ name="MSearchResults" id="MSearchResults">
+</iframe>
+</div>
+
+<div class="header">
+ <div class="headertitle">
+<div class="title">simple_black_on_white.php File Reference</div> </div>
+</div><!--header-->
+<div class="contents">
+</div><!-- contents -->
+</div><!-- doc-content -->
+
diff --git a/doc/html/simple__green__on__black_8php.html b/doc/html/simple__green__on__black_8php.html
new file mode 100644
index 000000000..58eb19f83
--- /dev/null
+++ b/doc/html/simple__green__on__black_8php.html
@@ -0,0 +1,112 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<meta name="generator" content="Doxygen 1.8.3.1"/>
+<title>The Red Matrix: view/theme/redbasic/schema/simple_green_on_black.php File Reference</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="navtree.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="resize.js"></script>
+<script type="text/javascript" src="navtree.js"></script>
+<script type="text/javascript">
+ $(document).ready(initResizable);
+ $(window).load(resizeHeight);
+</script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/search.js"></script>
+<script type="text/javascript">
+ $(document).ready(function() { searchBox.OnSelectItem(0); });
+</script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+ <td id="projectlogo"><img alt="Logo" src="rm-64.png"/></td>
+ <td style="padding-left: 0.5em;">
+ <div id="projectname">The Red Matrix
+ </div>
+ </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.8.3.1 -->
+<script type="text/javascript">
+var searchBox = new SearchBox("searchBox", "search",false,'Search');
+</script>
+ <div id="navrow1" class="tabs">
+ <ul class="tablist">
+ <li><a href="index.html"><span>Main&#160;Page</span></a></li>
+ <li><a href="pages.html"><span>Related&#160;Pages</span></a></li>
+ <li><a href="namespaces.html"><span>Namespaces</span></a></li>
+ <li><a href="annotated.html"><span>Classes</span></a></li>
+ <li class="current"><a href="files.html"><span>Files</span></a></li>
+ <li>
+ <div id="MSearchBox" class="MSearchBoxInactive">
+ <span class="left">
+ <img id="MSearchSelect" src="search/mag_sel.png"
+ onmouseover="return searchBox.OnSearchSelectShow()"
+ onmouseout="return searchBox.OnSearchSelectHide()"
+ alt=""/>
+ <input type="text" id="MSearchField" value="Search" accesskey="S"
+ onfocus="searchBox.OnSearchFieldFocus(true)"
+ onblur="searchBox.OnSearchFieldFocus(false)"
+ onkeyup="searchBox.OnSearchFieldChange(event)"/>
+ </span><span class="right">
+ <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
+ </span>
+ </div>
+ </li>
+ </ul>
+ </div>
+ <div id="navrow2" class="tabs2">
+ <ul class="tablist">
+ <li><a href="files.html"><span>File&#160;List</span></a></li>
+ <li><a href="globals.html"><span>File&#160;Members</span></a></li>
+ </ul>
+ </div>
+</div><!-- top -->
+<div id="side-nav" class="ui-resizable side-nav-resizable">
+ <div id="nav-tree">
+ <div id="nav-tree-contents">
+ <div id="nav-sync" class="sync"></div>
+ </div>
+ </div>
+ <div id="splitbar" style="-moz-user-select:none;"
+ class="ui-resizable-handle">
+ </div>
+</div>
+<script type="text/javascript">
+$(document).ready(function(){initNavTree('simple__green__on__black_8php.html','');});
+</script>
+<div id="doc-content">
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+ onmouseover="return searchBox.OnSearchSelectShow()"
+ onmouseout="return searchBox.OnSearchSelectHide()"
+ onkeydown="return searchBox.OnSearchSelectKey(event)">
+<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark">&#160;</span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark">&#160;</span>Classes</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark">&#160;</span>Namespaces</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark">&#160;</span>Files</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark">&#160;</span>Functions</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark">&#160;</span>Variables</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark">&#160;</span>Pages</a></div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<iframe src="javascript:void(0)" frameborder="0"
+ name="MSearchResults" id="MSearchResults">
+</iframe>
+</div>
+
+<div class="header">
+ <div class="headertitle">
+<div class="title">simple_green_on_black.php File Reference</div> </div>
+</div><!--header-->
+<div class="contents">
+</div><!-- contents -->
+</div><!-- doc-content -->
+
diff --git a/doc/html/simple__white__on__black_8php.html b/doc/html/simple__white__on__black_8php.html
new file mode 100644
index 000000000..932361b92
--- /dev/null
+++ b/doc/html/simple__white__on__black_8php.html
@@ -0,0 +1,112 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<meta name="generator" content="Doxygen 1.8.3.1"/>
+<title>The Red Matrix: view/theme/redbasic/schema/simple_white_on_black.php File Reference</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="navtree.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="resize.js"></script>
+<script type="text/javascript" src="navtree.js"></script>
+<script type="text/javascript">
+ $(document).ready(initResizable);
+ $(window).load(resizeHeight);
+</script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/search.js"></script>
+<script type="text/javascript">
+ $(document).ready(function() { searchBox.OnSelectItem(0); });
+</script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+ <td id="projectlogo"><img alt="Logo" src="rm-64.png"/></td>
+ <td style="padding-left: 0.5em;">
+ <div id="projectname">The Red Matrix
+ </div>
+ </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.8.3.1 -->
+<script type="text/javascript">
+var searchBox = new SearchBox("searchBox", "search",false,'Search');
+</script>
+ <div id="navrow1" class="tabs">
+ <ul class="tablist">
+ <li><a href="index.html"><span>Main&#160;Page</span></a></li>
+ <li><a href="pages.html"><span>Related&#160;Pages</span></a></li>
+ <li><a href="namespaces.html"><span>Namespaces</span></a></li>
+ <li><a href="annotated.html"><span>Classes</span></a></li>
+ <li class="current"><a href="files.html"><span>Files</span></a></li>
+ <li>
+ <div id="MSearchBox" class="MSearchBoxInactive">
+ <span class="left">
+ <img id="MSearchSelect" src="search/mag_sel.png"
+ onmouseover="return searchBox.OnSearchSelectShow()"
+ onmouseout="return searchBox.OnSearchSelectHide()"
+ alt=""/>
+ <input type="text" id="MSearchField" value="Search" accesskey="S"
+ onfocus="searchBox.OnSearchFieldFocus(true)"
+ onblur="searchBox.OnSearchFieldFocus(false)"
+ onkeyup="searchBox.OnSearchFieldChange(event)"/>
+ </span><span class="right">
+ <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
+ </span>
+ </div>
+ </li>
+ </ul>
+ </div>
+ <div id="navrow2" class="tabs2">
+ <ul class="tablist">
+ <li><a href="files.html"><span>File&#160;List</span></a></li>
+ <li><a href="globals.html"><span>File&#160;Members</span></a></li>
+ </ul>
+ </div>
+</div><!-- top -->
+<div id="side-nav" class="ui-resizable side-nav-resizable">
+ <div id="nav-tree">
+ <div id="nav-tree-contents">
+ <div id="nav-sync" class="sync"></div>
+ </div>
+ </div>
+ <div id="splitbar" style="-moz-user-select:none;"
+ class="ui-resizable-handle">
+ </div>
+</div>
+<script type="text/javascript">
+$(document).ready(function(){initNavTree('simple__white__on__black_8php.html','');});
+</script>
+<div id="doc-content">
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+ onmouseover="return searchBox.OnSearchSelectShow()"
+ onmouseout="return searchBox.OnSearchSelectHide()"
+ onkeydown="return searchBox.OnSearchSelectKey(event)">
+<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark">&#160;</span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark">&#160;</span>Classes</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark">&#160;</span>Namespaces</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark">&#160;</span>Files</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark">&#160;</span>Functions</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark">&#160;</span>Variables</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark">&#160;</span>Pages</a></div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<iframe src="javascript:void(0)" frameborder="0"
+ name="MSearchResults" id="MSearchResults">
+</iframe>
+</div>
+
+<div class="header">
+ <div class="headertitle">
+<div class="title">simple_white_on_black.php File Reference</div> </div>
+</div><!--header-->
+<div class="contents">
+</div><!-- contents -->
+</div><!-- doc-content -->
+
diff --git a/doc/html/smarty_8php.html b/doc/html/smarty_8php.html
new file mode 100644
index 000000000..8828f6757
--- /dev/null
+++ b/doc/html/smarty_8php.html
@@ -0,0 +1,122 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<meta name="generator" content="Doxygen 1.8.3.1"/>
+<title>The Red Matrix: include/smarty.php File Reference</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="navtree.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="resize.js"></script>
+<script type="text/javascript" src="navtree.js"></script>
+<script type="text/javascript">
+ $(document).ready(initResizable);
+ $(window).load(resizeHeight);
+</script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/search.js"></script>
+<script type="text/javascript">
+ $(document).ready(function() { searchBox.OnSelectItem(0); });
+</script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+ <td id="projectlogo"><img alt="Logo" src="rm-64.png"/></td>
+ <td style="padding-left: 0.5em;">
+ <div id="projectname">The Red Matrix
+ </div>
+ </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.8.3.1 -->
+<script type="text/javascript">
+var searchBox = new SearchBox("searchBox", "search",false,'Search');
+</script>
+ <div id="navrow1" class="tabs">
+ <ul class="tablist">
+ <li><a href="index.html"><span>Main&#160;Page</span></a></li>
+ <li><a href="pages.html"><span>Related&#160;Pages</span></a></li>
+ <li><a href="namespaces.html"><span>Namespaces</span></a></li>
+ <li><a href="annotated.html"><span>Classes</span></a></li>
+ <li class="current"><a href="files.html"><span>Files</span></a></li>
+ <li>
+ <div id="MSearchBox" class="MSearchBoxInactive">
+ <span class="left">
+ <img id="MSearchSelect" src="search/mag_sel.png"
+ onmouseover="return searchBox.OnSearchSelectShow()"
+ onmouseout="return searchBox.OnSearchSelectHide()"
+ alt=""/>
+ <input type="text" id="MSearchField" value="Search" accesskey="S"
+ onfocus="searchBox.OnSearchFieldFocus(true)"
+ onblur="searchBox.OnSearchFieldFocus(false)"
+ onkeyup="searchBox.OnSearchFieldChange(event)"/>
+ </span><span class="right">
+ <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
+ </span>
+ </div>
+ </li>
+ </ul>
+ </div>
+ <div id="navrow2" class="tabs2">
+ <ul class="tablist">
+ <li><a href="files.html"><span>File&#160;List</span></a></li>
+ <li><a href="globals.html"><span>File&#160;Members</span></a></li>
+ </ul>
+ </div>
+</div><!-- top -->
+<div id="side-nav" class="ui-resizable side-nav-resizable">
+ <div id="nav-tree">
+ <div id="nav-tree-contents">
+ <div id="nav-sync" class="sync"></div>
+ </div>
+ </div>
+ <div id="splitbar" style="-moz-user-select:none;"
+ class="ui-resizable-handle">
+ </div>
+</div>
+<script type="text/javascript">
+$(document).ready(function(){initNavTree('smarty_8php.html','');});
+</script>
+<div id="doc-content">
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+ onmouseover="return searchBox.OnSearchSelectShow()"
+ onmouseout="return searchBox.OnSearchSelectHide()"
+ onkeydown="return searchBox.OnSearchSelectKey(event)">
+<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark">&#160;</span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark">&#160;</span>Classes</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark">&#160;</span>Namespaces</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark">&#160;</span>Files</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark">&#160;</span>Functions</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark">&#160;</span>Variables</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark">&#160;</span>Pages</a></div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<iframe src="javascript:void(0)" frameborder="0"
+ name="MSearchResults" id="MSearchResults">
+</iframe>
+</div>
+
+<div class="header">
+ <div class="summary">
+<a href="#nested-classes">Classes</a> </div>
+ <div class="headertitle">
+<div class="title">smarty.php File Reference</div> </div>
+</div><!--header-->
+<div class="contents">
+<table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="nested-classes"></a>
+Classes</h2></td></tr>
+<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classFriendicaSmarty.html">FriendicaSmarty</a></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classFriendicaSmartyEngine.html">FriendicaSmartyEngine</a></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+</table>
+</div><!-- contents -->
+</div><!-- doc-content -->
+
diff --git a/doc/html/socgraph_8php.html b/doc/html/socgraph_8php.html
index 47a2222ca..2a9aa7209 100644
--- a/doc/html/socgraph_8php.html
+++ b/doc/html/socgraph_8php.html
@@ -404,7 +404,7 @@ Functions</h2></td></tr>
</table>
</div><div class="memdoc">
-<p>Referenced by <a class="el" href="suggest_8php.html#a58748a8235d4523f8333847f3e42dd91">suggest_content()</a>, and <a class="el" href="widgets_8php.html#a0d404276fedc59f5038cf5c085028326">widget_suggestions()</a>.</p>
+<p>Referenced by <a class="el" href="mod_2directory_8php.html#aac79396570d759da2efac24fcedf5b44">directory_content()</a>, <a class="el" href="suggest_8php.html#a58748a8235d4523f8333847f3e42dd91">suggest_content()</a>, and <a class="el" href="widgets_8php.html#a0d404276fedc59f5038cf5c085028326">widget_suggestions()</a>.</p>
</div>
</div>
diff --git a/doc/html/statistics__fns_8php.html b/doc/html/statistics__fns_8php.html
new file mode 100644
index 000000000..541842b29
--- /dev/null
+++ b/doc/html/statistics__fns_8php.html
@@ -0,0 +1,195 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<meta name="generator" content="Doxygen 1.8.3.1"/>
+<title>The Red Matrix: include/statistics_fns.php File Reference</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="navtree.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="resize.js"></script>
+<script type="text/javascript" src="navtree.js"></script>
+<script type="text/javascript">
+ $(document).ready(initResizable);
+ $(window).load(resizeHeight);
+</script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/search.js"></script>
+<script type="text/javascript">
+ $(document).ready(function() { searchBox.OnSelectItem(0); });
+</script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+ <td id="projectlogo"><img alt="Logo" src="rm-64.png"/></td>
+ <td style="padding-left: 0.5em;">
+ <div id="projectname">The Red Matrix
+ </div>
+ </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.8.3.1 -->
+<script type="text/javascript">
+var searchBox = new SearchBox("searchBox", "search",false,'Search');
+</script>
+ <div id="navrow1" class="tabs">
+ <ul class="tablist">
+ <li><a href="index.html"><span>Main&#160;Page</span></a></li>
+ <li><a href="pages.html"><span>Related&#160;Pages</span></a></li>
+ <li><a href="namespaces.html"><span>Namespaces</span></a></li>
+ <li><a href="annotated.html"><span>Classes</span></a></li>
+ <li class="current"><a href="files.html"><span>Files</span></a></li>
+ <li>
+ <div id="MSearchBox" class="MSearchBoxInactive">
+ <span class="left">
+ <img id="MSearchSelect" src="search/mag_sel.png"
+ onmouseover="return searchBox.OnSearchSelectShow()"
+ onmouseout="return searchBox.OnSearchSelectHide()"
+ alt=""/>
+ <input type="text" id="MSearchField" value="Search" accesskey="S"
+ onfocus="searchBox.OnSearchFieldFocus(true)"
+ onblur="searchBox.OnSearchFieldFocus(false)"
+ onkeyup="searchBox.OnSearchFieldChange(event)"/>
+ </span><span class="right">
+ <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
+ </span>
+ </div>
+ </li>
+ </ul>
+ </div>
+ <div id="navrow2" class="tabs2">
+ <ul class="tablist">
+ <li><a href="files.html"><span>File&#160;List</span></a></li>
+ <li><a href="globals.html"><span>File&#160;Members</span></a></li>
+ </ul>
+ </div>
+</div><!-- top -->
+<div id="side-nav" class="ui-resizable side-nav-resizable">
+ <div id="nav-tree">
+ <div id="nav-tree-contents">
+ <div id="nav-sync" class="sync"></div>
+ </div>
+ </div>
+ <div id="splitbar" style="-moz-user-select:none;"
+ class="ui-resizable-handle">
+ </div>
+</div>
+<script type="text/javascript">
+$(document).ready(function(){initNavTree('statistics__fns_8php.html','');});
+</script>
+<div id="doc-content">
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+ onmouseover="return searchBox.OnSearchSelectShow()"
+ onmouseout="return searchBox.OnSearchSelectHide()"
+ onkeydown="return searchBox.OnSearchSelectKey(event)">
+<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark">&#160;</span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark">&#160;</span>Classes</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark">&#160;</span>Namespaces</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark">&#160;</span>Files</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark">&#160;</span>Functions</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark">&#160;</span>Variables</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark">&#160;</span>Pages</a></div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<iframe src="javascript:void(0)" frameborder="0"
+ name="MSearchResults" id="MSearchResults">
+</iframe>
+</div>
+
+<div class="header">
+ <div class="summary">
+<a href="#func-members">Functions</a> </div>
+ <div class="headertitle">
+<div class="title">statistics_fns.php File Reference</div> </div>
+</div><!--header-->
+<div class="contents">
+<table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="func-members"></a>
+Functions</h2></td></tr>
+<tr class="memitem:a05858927cce81fd367aedf85a94ed90c"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="statistics__fns_8php.html#a05858927cce81fd367aedf85a94ed90c">update_channels_total_stat</a> ()</td></tr>
+<tr class="separator:a05858927cce81fd367aedf85a94ed90c"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a82726229a961d3bd3d543005c61dd8e6"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="statistics__fns_8php.html#a82726229a961d3bd3d543005c61dd8e6">update_channels_active_halfyear_stat</a> ()</td></tr>
+<tr class="separator:a82726229a961d3bd3d543005c61dd8e6"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ad2b7b595c039c4c2eb0d6cd57a393dfe"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="statistics__fns_8php.html#ad2b7b595c039c4c2eb0d6cd57a393dfe">update_channels_active_monthly_stat</a> ()</td></tr>
+<tr class="separator:ad2b7b595c039c4c2eb0d6cd57a393dfe"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a9dd516dda693f17f5ce48a94876f7efa"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="statistics__fns_8php.html#a9dd516dda693f17f5ce48a94876f7efa">update_local_posts_stat</a> ()</td></tr>
+<tr class="separator:a9dd516dda693f17f5ce48a94876f7efa"><td class="memSeparator" colspan="2">&#160;</td></tr>
+</table>
+<h2 class="groupheader">Function Documentation</h2>
+<a class="anchor" id="a82726229a961d3bd3d543005c61dd8e6"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">update_channels_active_halfyear_stat </td>
+ <td>(</td>
+ <td class="paramname"></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p>Referenced by <a class="el" href="poller_8php.html#a5f12df3a4738124b6c039971e87e76da">poller_run()</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="ad2b7b595c039c4c2eb0d6cd57a393dfe"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">update_channels_active_monthly_stat </td>
+ <td>(</td>
+ <td class="paramname"></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p>Referenced by <a class="el" href="poller_8php.html#a5f12df3a4738124b6c039971e87e76da">poller_run()</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a05858927cce81fd367aedf85a94ed90c"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">update_channels_total_stat </td>
+ <td>(</td>
+ <td class="paramname"></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p>Referenced by <a class="el" href="poller_8php.html#a5f12df3a4738124b6c039971e87e76da">poller_run()</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a9dd516dda693f17f5ce48a94876f7efa"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">update_local_posts_stat </td>
+ <td>(</td>
+ <td class="paramname"></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p>Referenced by <a class="el" href="poller_8php.html#a5f12df3a4738124b6c039971e87e76da">poller_run()</a>.</p>
+
+</div>
+</div>
+</div><!-- contents -->
+</div><!-- doc-content -->
+
diff --git a/doc/html/statistics__fns_8php.js b/doc/html/statistics__fns_8php.js
new file mode 100644
index 000000000..6ef78ffae
--- /dev/null
+++ b/doc/html/statistics__fns_8php.js
@@ -0,0 +1,7 @@
+var statistics__fns_8php =
+[
+ [ "update_channels_active_halfyear_stat", "statistics__fns_8php.html#a82726229a961d3bd3d543005c61dd8e6", null ],
+ [ "update_channels_active_monthly_stat", "statistics__fns_8php.html#ad2b7b595c039c4c2eb0d6cd57a393dfe", null ],
+ [ "update_channels_total_stat", "statistics__fns_8php.html#a05858927cce81fd367aedf85a94ed90c", null ],
+ [ "update_local_posts_stat", "statistics__fns_8php.html#a9dd516dda693f17f5ce48a94876f7efa", null ]
+]; \ No newline at end of file
diff --git a/doc/html/stumble_2php_2style_8php.html b/doc/html/stumble_2php_2style_8php.html
new file mode 100644
index 000000000..57672ce6a
--- /dev/null
+++ b/doc/html/stumble_2php_2style_8php.html
@@ -0,0 +1,112 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<meta name="generator" content="Doxygen 1.8.3.1"/>
+<title>The Red Matrix: view/theme/stumble/php/style.php File Reference</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="navtree.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="resize.js"></script>
+<script type="text/javascript" src="navtree.js"></script>
+<script type="text/javascript">
+ $(document).ready(initResizable);
+ $(window).load(resizeHeight);
+</script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/search.js"></script>
+<script type="text/javascript">
+ $(document).ready(function() { searchBox.OnSelectItem(0); });
+</script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+ <td id="projectlogo"><img alt="Logo" src="rm-64.png"/></td>
+ <td style="padding-left: 0.5em;">
+ <div id="projectname">The Red Matrix
+ </div>
+ </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.8.3.1 -->
+<script type="text/javascript">
+var searchBox = new SearchBox("searchBox", "search",false,'Search');
+</script>
+ <div id="navrow1" class="tabs">
+ <ul class="tablist">
+ <li><a href="index.html"><span>Main&#160;Page</span></a></li>
+ <li><a href="pages.html"><span>Related&#160;Pages</span></a></li>
+ <li><a href="namespaces.html"><span>Namespaces</span></a></li>
+ <li><a href="annotated.html"><span>Classes</span></a></li>
+ <li class="current"><a href="files.html"><span>Files</span></a></li>
+ <li>
+ <div id="MSearchBox" class="MSearchBoxInactive">
+ <span class="left">
+ <img id="MSearchSelect" src="search/mag_sel.png"
+ onmouseover="return searchBox.OnSearchSelectShow()"
+ onmouseout="return searchBox.OnSearchSelectHide()"
+ alt=""/>
+ <input type="text" id="MSearchField" value="Search" accesskey="S"
+ onfocus="searchBox.OnSearchFieldFocus(true)"
+ onblur="searchBox.OnSearchFieldFocus(false)"
+ onkeyup="searchBox.OnSearchFieldChange(event)"/>
+ </span><span class="right">
+ <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
+ </span>
+ </div>
+ </li>
+ </ul>
+ </div>
+ <div id="navrow2" class="tabs2">
+ <ul class="tablist">
+ <li><a href="files.html"><span>File&#160;List</span></a></li>
+ <li><a href="globals.html"><span>File&#160;Members</span></a></li>
+ </ul>
+ </div>
+</div><!-- top -->
+<div id="side-nav" class="ui-resizable side-nav-resizable">
+ <div id="nav-tree">
+ <div id="nav-tree-contents">
+ <div id="nav-sync" class="sync"></div>
+ </div>
+ </div>
+ <div id="splitbar" style="-moz-user-select:none;"
+ class="ui-resizable-handle">
+ </div>
+</div>
+<script type="text/javascript">
+$(document).ready(function(){initNavTree('stumble_2php_2style_8php.html','');});
+</script>
+<div id="doc-content">
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+ onmouseover="return searchBox.OnSearchSelectShow()"
+ onmouseout="return searchBox.OnSearchSelectHide()"
+ onkeydown="return searchBox.OnSearchSelectKey(event)">
+<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark">&#160;</span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark">&#160;</span>Classes</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark">&#160;</span>Namespaces</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark">&#160;</span>Files</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark">&#160;</span>Functions</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark">&#160;</span>Variables</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark">&#160;</span>Pages</a></div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<iframe src="javascript:void(0)" frameborder="0"
+ name="MSearchResults" id="MSearchResults">
+</iframe>
+</div>
+
+<div class="header">
+ <div class="headertitle">
+<div class="title">style.php File Reference</div> </div>
+</div><!--header-->
+<div class="contents">
+</div><!-- contents -->
+</div><!-- doc-content -->
+
diff --git a/doc/html/stumble_2php_2theme_8php.html b/doc/html/stumble_2php_2theme_8php.html
new file mode 100644
index 000000000..1d04d981d
--- /dev/null
+++ b/doc/html/stumble_2php_2theme_8php.html
@@ -0,0 +1,144 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<meta name="generator" content="Doxygen 1.8.3.1"/>
+<title>The Red Matrix: view/theme/stumble/php/theme.php File Reference</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="navtree.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="resize.js"></script>
+<script type="text/javascript" src="navtree.js"></script>
+<script type="text/javascript">
+ $(document).ready(initResizable);
+ $(window).load(resizeHeight);
+</script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/search.js"></script>
+<script type="text/javascript">
+ $(document).ready(function() { searchBox.OnSelectItem(0); });
+</script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+ <td id="projectlogo"><img alt="Logo" src="rm-64.png"/></td>
+ <td style="padding-left: 0.5em;">
+ <div id="projectname">The Red Matrix
+ </div>
+ </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.8.3.1 -->
+<script type="text/javascript">
+var searchBox = new SearchBox("searchBox", "search",false,'Search');
+</script>
+ <div id="navrow1" class="tabs">
+ <ul class="tablist">
+ <li><a href="index.html"><span>Main&#160;Page</span></a></li>
+ <li><a href="pages.html"><span>Related&#160;Pages</span></a></li>
+ <li><a href="namespaces.html"><span>Namespaces</span></a></li>
+ <li><a href="annotated.html"><span>Classes</span></a></li>
+ <li class="current"><a href="files.html"><span>Files</span></a></li>
+ <li>
+ <div id="MSearchBox" class="MSearchBoxInactive">
+ <span class="left">
+ <img id="MSearchSelect" src="search/mag_sel.png"
+ onmouseover="return searchBox.OnSearchSelectShow()"
+ onmouseout="return searchBox.OnSearchSelectHide()"
+ alt=""/>
+ <input type="text" id="MSearchField" value="Search" accesskey="S"
+ onfocus="searchBox.OnSearchFieldFocus(true)"
+ onblur="searchBox.OnSearchFieldFocus(false)"
+ onkeyup="searchBox.OnSearchFieldChange(event)"/>
+ </span><span class="right">
+ <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
+ </span>
+ </div>
+ </li>
+ </ul>
+ </div>
+ <div id="navrow2" class="tabs2">
+ <ul class="tablist">
+ <li><a href="files.html"><span>File&#160;List</span></a></li>
+ <li><a href="globals.html"><span>File&#160;Members</span></a></li>
+ </ul>
+ </div>
+</div><!-- top -->
+<div id="side-nav" class="ui-resizable side-nav-resizable">
+ <div id="nav-tree">
+ <div id="nav-tree-contents">
+ <div id="nav-sync" class="sync"></div>
+ </div>
+ </div>
+ <div id="splitbar" style="-moz-user-select:none;"
+ class="ui-resizable-handle">
+ </div>
+</div>
+<script type="text/javascript">
+$(document).ready(function(){initNavTree('stumble_2php_2theme_8php.html','');});
+</script>
+<div id="doc-content">
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+ onmouseover="return searchBox.OnSearchSelectShow()"
+ onmouseout="return searchBox.OnSearchSelectHide()"
+ onkeydown="return searchBox.OnSearchSelectKey(event)">
+<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark">&#160;</span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark">&#160;</span>Classes</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark">&#160;</span>Namespaces</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark">&#160;</span>Files</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark">&#160;</span>Functions</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark">&#160;</span>Variables</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark">&#160;</span>Pages</a></div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<iframe src="javascript:void(0)" frameborder="0"
+ name="MSearchResults" id="MSearchResults">
+</iframe>
+</div>
+
+<div class="header">
+ <div class="summary">
+<a href="#func-members">Functions</a> </div>
+ <div class="headertitle">
+<div class="title">theme.php File Reference</div> </div>
+</div><!--header-->
+<div class="contents">
+<table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="func-members"></a>
+Functions</h2></td></tr>
+<tr class="memitem:a71db9eff6289e0ee47771c37c01d6753"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="stumble_2php_2theme_8php.html#a71db9eff6289e0ee47771c37c01d6753">stumble_init</a> (&amp;$a)</td></tr>
+<tr class="separator:a71db9eff6289e0ee47771c37c01d6753"><td class="memSeparator" colspan="2">&#160;</td></tr>
+</table>
+<h2 class="groupheader">Function Documentation</h2>
+<a class="anchor" id="a71db9eff6289e0ee47771c37c01d6753"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">stumble_init </td>
+ <td>(</td>
+ <td class="paramtype">&amp;&#160;</td>
+ <td class="paramname"><em>$a</em></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+<ul>
+<li>Name: Stumble</li>
+<li>Description: A Tumblr-like theme based on redbasic</li>
+<li>Version: 1.0</li>
+<li>Author: Sean Tilley</li>
+<li>Compat: Red [*] </li>
+</ul>
+
+</div>
+</div>
+</div><!-- contents -->
+</div><!-- doc-content -->
+
diff --git a/doc/html/stumble_2php_2theme_8php.js b/doc/html/stumble_2php_2theme_8php.js
new file mode 100644
index 000000000..88ddab748
--- /dev/null
+++ b/doc/html/stumble_2php_2theme_8php.js
@@ -0,0 +1,4 @@
+var stumble_2php_2theme_8php =
+[
+ [ "stumble_init", "stumble_2php_2theme_8php.html#a71db9eff6289e0ee47771c37c01d6753", null ]
+]; \ No newline at end of file
diff --git a/doc/html/suckerberg_2php_2style_8php.html b/doc/html/suckerberg_2php_2style_8php.html
new file mode 100644
index 000000000..97bb9bdec
--- /dev/null
+++ b/doc/html/suckerberg_2php_2style_8php.html
@@ -0,0 +1,112 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<meta name="generator" content="Doxygen 1.8.3.1"/>
+<title>The Red Matrix: view/theme/suckerberg/php/style.php File Reference</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="navtree.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="resize.js"></script>
+<script type="text/javascript" src="navtree.js"></script>
+<script type="text/javascript">
+ $(document).ready(initResizable);
+ $(window).load(resizeHeight);
+</script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/search.js"></script>
+<script type="text/javascript">
+ $(document).ready(function() { searchBox.OnSelectItem(0); });
+</script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+ <td id="projectlogo"><img alt="Logo" src="rm-64.png"/></td>
+ <td style="padding-left: 0.5em;">
+ <div id="projectname">The Red Matrix
+ </div>
+ </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.8.3.1 -->
+<script type="text/javascript">
+var searchBox = new SearchBox("searchBox", "search",false,'Search');
+</script>
+ <div id="navrow1" class="tabs">
+ <ul class="tablist">
+ <li><a href="index.html"><span>Main&#160;Page</span></a></li>
+ <li><a href="pages.html"><span>Related&#160;Pages</span></a></li>
+ <li><a href="namespaces.html"><span>Namespaces</span></a></li>
+ <li><a href="annotated.html"><span>Classes</span></a></li>
+ <li class="current"><a href="files.html"><span>Files</span></a></li>
+ <li>
+ <div id="MSearchBox" class="MSearchBoxInactive">
+ <span class="left">
+ <img id="MSearchSelect" src="search/mag_sel.png"
+ onmouseover="return searchBox.OnSearchSelectShow()"
+ onmouseout="return searchBox.OnSearchSelectHide()"
+ alt=""/>
+ <input type="text" id="MSearchField" value="Search" accesskey="S"
+ onfocus="searchBox.OnSearchFieldFocus(true)"
+ onblur="searchBox.OnSearchFieldFocus(false)"
+ onkeyup="searchBox.OnSearchFieldChange(event)"/>
+ </span><span class="right">
+ <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
+ </span>
+ </div>
+ </li>
+ </ul>
+ </div>
+ <div id="navrow2" class="tabs2">
+ <ul class="tablist">
+ <li><a href="files.html"><span>File&#160;List</span></a></li>
+ <li><a href="globals.html"><span>File&#160;Members</span></a></li>
+ </ul>
+ </div>
+</div><!-- top -->
+<div id="side-nav" class="ui-resizable side-nav-resizable">
+ <div id="nav-tree">
+ <div id="nav-tree-contents">
+ <div id="nav-sync" class="sync"></div>
+ </div>
+ </div>
+ <div id="splitbar" style="-moz-user-select:none;"
+ class="ui-resizable-handle">
+ </div>
+</div>
+<script type="text/javascript">
+$(document).ready(function(){initNavTree('suckerberg_2php_2style_8php.html','');});
+</script>
+<div id="doc-content">
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+ onmouseover="return searchBox.OnSearchSelectShow()"
+ onmouseout="return searchBox.OnSearchSelectHide()"
+ onkeydown="return searchBox.OnSearchSelectKey(event)">
+<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark">&#160;</span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark">&#160;</span>Classes</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark">&#160;</span>Namespaces</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark">&#160;</span>Files</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark">&#160;</span>Functions</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark">&#160;</span>Variables</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark">&#160;</span>Pages</a></div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<iframe src="javascript:void(0)" frameborder="0"
+ name="MSearchResults" id="MSearchResults">
+</iframe>
+</div>
+
+<div class="header">
+ <div class="headertitle">
+<div class="title">style.php File Reference</div> </div>
+</div><!--header-->
+<div class="contents">
+</div><!-- contents -->
+</div><!-- doc-content -->
+
diff --git a/doc/html/suckerberg_2php_2theme_8php.html b/doc/html/suckerberg_2php_2theme_8php.html
new file mode 100644
index 000000000..bca524b6e
--- /dev/null
+++ b/doc/html/suckerberg_2php_2theme_8php.html
@@ -0,0 +1,144 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<meta name="generator" content="Doxygen 1.8.3.1"/>
+<title>The Red Matrix: view/theme/suckerberg/php/theme.php File Reference</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="navtree.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="resize.js"></script>
+<script type="text/javascript" src="navtree.js"></script>
+<script type="text/javascript">
+ $(document).ready(initResizable);
+ $(window).load(resizeHeight);
+</script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/search.js"></script>
+<script type="text/javascript">
+ $(document).ready(function() { searchBox.OnSelectItem(0); });
+</script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+ <td id="projectlogo"><img alt="Logo" src="rm-64.png"/></td>
+ <td style="padding-left: 0.5em;">
+ <div id="projectname">The Red Matrix
+ </div>
+ </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.8.3.1 -->
+<script type="text/javascript">
+var searchBox = new SearchBox("searchBox", "search",false,'Search');
+</script>
+ <div id="navrow1" class="tabs">
+ <ul class="tablist">
+ <li><a href="index.html"><span>Main&#160;Page</span></a></li>
+ <li><a href="pages.html"><span>Related&#160;Pages</span></a></li>
+ <li><a href="namespaces.html"><span>Namespaces</span></a></li>
+ <li><a href="annotated.html"><span>Classes</span></a></li>
+ <li class="current"><a href="files.html"><span>Files</span></a></li>
+ <li>
+ <div id="MSearchBox" class="MSearchBoxInactive">
+ <span class="left">
+ <img id="MSearchSelect" src="search/mag_sel.png"
+ onmouseover="return searchBox.OnSearchSelectShow()"
+ onmouseout="return searchBox.OnSearchSelectHide()"
+ alt=""/>
+ <input type="text" id="MSearchField" value="Search" accesskey="S"
+ onfocus="searchBox.OnSearchFieldFocus(true)"
+ onblur="searchBox.OnSearchFieldFocus(false)"
+ onkeyup="searchBox.OnSearchFieldChange(event)"/>
+ </span><span class="right">
+ <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
+ </span>
+ </div>
+ </li>
+ </ul>
+ </div>
+ <div id="navrow2" class="tabs2">
+ <ul class="tablist">
+ <li><a href="files.html"><span>File&#160;List</span></a></li>
+ <li><a href="globals.html"><span>File&#160;Members</span></a></li>
+ </ul>
+ </div>
+</div><!-- top -->
+<div id="side-nav" class="ui-resizable side-nav-resizable">
+ <div id="nav-tree">
+ <div id="nav-tree-contents">
+ <div id="nav-sync" class="sync"></div>
+ </div>
+ </div>
+ <div id="splitbar" style="-moz-user-select:none;"
+ class="ui-resizable-handle">
+ </div>
+</div>
+<script type="text/javascript">
+$(document).ready(function(){initNavTree('suckerberg_2php_2theme_8php.html','');});
+</script>
+<div id="doc-content">
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+ onmouseover="return searchBox.OnSearchSelectShow()"
+ onmouseout="return searchBox.OnSearchSelectHide()"
+ onkeydown="return searchBox.OnSearchSelectKey(event)">
+<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark">&#160;</span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark">&#160;</span>Classes</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark">&#160;</span>Namespaces</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark">&#160;</span>Files</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark">&#160;</span>Functions</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark">&#160;</span>Variables</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark">&#160;</span>Pages</a></div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<iframe src="javascript:void(0)" frameborder="0"
+ name="MSearchResults" id="MSearchResults">
+</iframe>
+</div>
+
+<div class="header">
+ <div class="summary">
+<a href="#func-members">Functions</a> </div>
+ <div class="headertitle">
+<div class="title">theme.php File Reference</div> </div>
+</div><!--header-->
+<div class="contents">
+<table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="func-members"></a>
+Functions</h2></td></tr>
+<tr class="memitem:a4104fce7d5fb71d15ed811978b628fc8"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="suckerberg_2php_2theme_8php.html#a4104fce7d5fb71d15ed811978b628fc8">suckerberg_init</a> (&amp;$a)</td></tr>
+<tr class="separator:a4104fce7d5fb71d15ed811978b628fc8"><td class="memSeparator" colspan="2">&#160;</td></tr>
+</table>
+<h2 class="groupheader">Function Documentation</h2>
+<a class="anchor" id="a4104fce7d5fb71d15ed811978b628fc8"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">suckerberg_init </td>
+ <td>(</td>
+ <td class="paramtype">&amp;&#160;</td>
+ <td class="paramname"><em>$a</em></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+<ul>
+<li>Name: Suckerberg</li>
+<li>Description: A Facebook-like theme based on redbasic</li>
+<li>Version: 1.0</li>
+<li>Author: Sean Tilley</li>
+<li>Compat: Red [*] </li>
+</ul>
+
+</div>
+</div>
+</div><!-- contents -->
+</div><!-- doc-content -->
+
diff --git a/doc/html/suckerberg_2php_2theme_8php.js b/doc/html/suckerberg_2php_2theme_8php.js
new file mode 100644
index 000000000..3ab17833a
--- /dev/null
+++ b/doc/html/suckerberg_2php_2theme_8php.js
@@ -0,0 +1,4 @@
+var suckerberg_2php_2theme_8php =
+[
+ [ "suckerberg_init", "suckerberg_2php_2theme_8php.html#a4104fce7d5fb71d15ed811978b628fc8", null ]
+]; \ No newline at end of file
diff --git a/doc/html/taxonomy_8php.html b/doc/html/taxonomy_8php.html
index dc9c3d02c..2336f9d83 100644
--- a/doc/html/taxonomy_8php.html
+++ b/doc/html/taxonomy_8php.html
@@ -134,6 +134,10 @@ Functions</h2></td></tr>
<tr class="separator:a088371f4bc19155b2291508f5cd63332"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ac21d1dff16d569e7d110167aea4e63c2"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="taxonomy_8php.html#ac21d1dff16d569e7d110167aea4e63c2">tagblock</a> ($link, $uid, $count=0, $authors= '', $flags=0, $restrict=0, $type=<a class="el" href="boot_8php.html#a2750985ec445617d7e82ae3098c91e3f">TERM_HASHTAG</a>)</td></tr>
<tr class="separator:ac21d1dff16d569e7d110167aea4e63c2"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a83f0a60f9e0c07d8451dc5be95b17287"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="taxonomy_8php.html#a83f0a60f9e0c07d8451dc5be95b17287">wtagblock</a> ($uid, $count=0, $authors= '', $flags=0, $restrict=0, $type=<a class="el" href="boot_8php.html#a2750985ec445617d7e82ae3098c91e3f">TERM_HASHTAG</a>)</td></tr>
+<tr class="separator:a83f0a60f9e0c07d8451dc5be95b17287"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:aa8f8a1ff85daef046298e93c83e7a1b4"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="taxonomy_8php.html#aa8f8a1ff85daef046298e93c83e7a1b4">catblock</a> ($uid, $count=0, $authors= '', $flags=0, $restrict=0, $type=<a class="el" href="boot_8php.html#af33d1b2e98a1e21af672005525d46dfe">TERM_CATEGORY</a>)</td></tr>
+<tr class="separator:aa8f8a1ff85daef046298e93c83e7a1b4"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a599ee71dd3194c8127b00dabec77abc1"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="taxonomy_8php.html#a599ee71dd3194c8127b00dabec77abc1">dir_tagblock</a> ($link, $r)</td></tr>
<tr class="separator:a599ee71dd3194c8127b00dabec77abc1"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a03f55ee46c5f496e42f3d29db8d09cce"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="taxonomy_8php.html#a03f55ee46c5f496e42f3d29db8d09cce">obj_verbs</a> ()</td></tr>
@@ -144,6 +148,58 @@ Functions</h2></td></tr>
<tr class="separator:a7747fa859ac56fbffd4f9782d85505de"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<h2 class="groupheader">Function Documentation</h2>
+<a class="anchor" id="aa8f8a1ff85daef046298e93c83e7a1b4"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">catblock </td>
+ <td>(</td>
+ <td class="paramtype">&#160;</td>
+ <td class="paramname"><em>$uid</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">&#160;</td>
+ <td class="paramname"><em>$count</em> = <code>0</code>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">&#160;</td>
+ <td class="paramname"><em>$authors</em> = <code>''</code>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">&#160;</td>
+ <td class="paramname"><em>$flags</em> = <code>0</code>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">&#160;</td>
+ <td class="paramname"><em>$restrict</em> = <code>0</code>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">&#160;</td>
+ <td class="paramname"><em>$type</em> = <code><a class="el" href="boot_8php.html#af33d1b2e98a1e21af672005525d46dfe">TERM_CATEGORY</a></code>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p>Referenced by <a class="el" href="widgets_8php.html#af919de8e7e2ba8192a65fadc72a2c8b5">widget_catcloud_wall()</a>.</p>
+
+</div>
+</div>
<a class="anchor" id="a088371f4bc19155b2291508f5cd63332"></a>
<div class="memitem">
<div class="memproto">
@@ -296,7 +352,7 @@ Functions</h2></td></tr>
</table>
</div><div class="memdoc">
-<p>Referenced by <a class="el" href="mod_2bookmarks_8php.html#a6b7942f3d27e40f0f47c88704127b9b3">bookmarks_init()</a>, <a class="el" href="conversation_8php.html#affea1afb3f32ca41e966c8ddb4204d81">conversation()</a>, <a class="el" href="editpost_8php.html#a34011690864d122680c802e9e748ccfb">editpost_content()</a>, <a class="el" href="text_8php.html#a3054189cff173977f4216c9a3dd29e1b">format_categories()</a>, <a class="el" href="text_8php.html#a4e4d42b0a805148d9f9a92bcac89bf91">format_filer()</a>, <a class="el" href="text_8php.html#a3a0c432a484c17d7720b8ba2d6bfdd59">format_hashtags()</a>, <a class="el" href="text_8php.html#ad8c6e13d6accf057136c5f30a23a5f08">format_mentions()</a>, <a class="el" href="items_8php.html#a6f7e1334af5d684a987fa6a3eb37f4cc">item_expire()</a>, <a class="el" href="items_8php.html#a649dc3e53ed794d0ead4b5d037f8d8d7">item_getfeedtags()</a>, <a class="el" href="items_8php.html#ab1bce4261bcf75ad62753b498a144d17">tag_deliver()</a>, and <a class="el" href="items_8php.html#a88c6cf7649ac836fbbed82a7a0315110">tgroup_check()</a>.</p>
+<p>Referenced by <a class="el" href="mod_2bookmarks_8php.html#a6b7942f3d27e40f0f47c88704127b9b3">bookmarks_init()</a>, <a class="el" href="conversation_8php.html#affea1afb3f32ca41e966c8ddb4204d81">conversation()</a>, <a class="el" href="editpost_8php.html#a34011690864d122680c802e9e748ccfb">editpost_content()</a>, <a class="el" href="events_8php.html#a1d293fb217ae6bc9e3858c4b32e363ec">events_content()</a>, <a class="el" href="text_8php.html#a3054189cff173977f4216c9a3dd29e1b">format_categories()</a>, <a class="el" href="text_8php.html#a4e4d42b0a805148d9f9a92bcac89bf91">format_filer()</a>, <a class="el" href="text_8php.html#a3a0c432a484c17d7720b8ba2d6bfdd59">format_hashtags()</a>, <a class="el" href="text_8php.html#ad8c6e13d6accf057136c5f30a23a5f08">format_mentions()</a>, <a class="el" href="items_8php.html#a6f7e1334af5d684a987fa6a3eb37f4cc">item_expire()</a>, <a class="el" href="items_8php.html#a649dc3e53ed794d0ead4b5d037f8d8d7">item_getfeedtags()</a>, <a class="el" href="items_8php.html#ab1bce4261bcf75ad62753b498a144d17">tag_deliver()</a>, and <a class="el" href="items_8php.html#a88c6cf7649ac836fbbed82a7a0315110">tgroup_check()</a>.</p>
</div>
</div>
@@ -464,7 +520,7 @@ Functions</h2></td></tr>
</table>
</div><div class="memdoc">
-<p>Referenced by <a class="el" href="taxonomy_8php.html#ac21d1dff16d569e7d110167aea4e63c2">tagblock()</a>, and <a class="el" href="widgets_8php.html#a6dbc227aac750774284ee39c45f0a200">widget_tagcloud()</a>.</p>
+<p>Referenced by <a class="el" href="taxonomy_8php.html#aa8f8a1ff85daef046298e93c83e7a1b4">catblock()</a>, <a class="el" href="taxonomy_8php.html#ac21d1dff16d569e7d110167aea4e63c2">tagblock()</a>, <a class="el" href="widgets_8php.html#a6dbc227aac750774284ee39c45f0a200">widget_tagcloud()</a>, and <a class="el" href="taxonomy_8php.html#a83f0a60f9e0c07d8451dc5be95b17287">wtagblock()</a>.</p>
</div>
</div>
@@ -522,8 +578,6 @@ Functions</h2></td></tr>
</table>
</div><div class="memdoc">
-<p>Referenced by <a class="el" href="widgets_8php.html#ae4ced69d83dbdd9e6b51660d9eba8653">widget_tagcloud_wall()</a>.</p>
-
</div>
</div>
<a class="anchor" id="aaeded36bcc983b35d9205fe5b6c18c43"></a>
@@ -586,6 +640,58 @@ Functions</h2></td></tr>
</div>
</div>
+<a class="anchor" id="a83f0a60f9e0c07d8451dc5be95b17287"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">wtagblock </td>
+ <td>(</td>
+ <td class="paramtype">&#160;</td>
+ <td class="paramname"><em>$uid</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">&#160;</td>
+ <td class="paramname"><em>$count</em> = <code>0</code>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">&#160;</td>
+ <td class="paramname"><em>$authors</em> = <code>''</code>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">&#160;</td>
+ <td class="paramname"><em>$flags</em> = <code>0</code>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">&#160;</td>
+ <td class="paramname"><em>$restrict</em> = <code>0</code>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">&#160;</td>
+ <td class="paramname"><em>$type</em> = <code><a class="el" href="boot_8php.html#a2750985ec445617d7e82ae3098c91e3f">TERM_HASHTAG</a></code>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p>Referenced by <a class="el" href="widgets_8php.html#ae4ced69d83dbdd9e6b51660d9eba8653">widget_tagcloud_wall()</a>.</p>
+
+</div>
+</div>
</div><!-- contents -->
</div><!-- doc-content -->
diff --git a/doc/html/taxonomy_8php.js b/doc/html/taxonomy_8php.js
index 24b5fb426..bb390422e 100644
--- a/doc/html/taxonomy_8php.js
+++ b/doc/html/taxonomy_8php.js
@@ -1,5 +1,6 @@
var taxonomy_8php =
[
+ [ "catblock", "taxonomy_8php.html#aa8f8a1ff85daef046298e93c83e7a1b4", null ],
[ "dir_tagadelic", "taxonomy_8php.html#a088371f4bc19155b2291508f5cd63332", null ],
[ "dir_tagblock", "taxonomy_8php.html#a599ee71dd3194c8127b00dabec77abc1", null ],
[ "file_tag_decode", "taxonomy_8php.html#a08df5164926d2b31b8e9fcfe919de2b6", null ],
@@ -14,5 +15,6 @@ var taxonomy_8php =
[ "tagadelic", "taxonomy_8php.html#aaf90ba8b839d6459065f39a4f1109b8a", null ],
[ "tagblock", "taxonomy_8php.html#ac21d1dff16d569e7d110167aea4e63c2", null ],
[ "tags_sort", "taxonomy_8php.html#aaeded36bcc983b35d9205fe5b6c18c43", null ],
- [ "term_query", "taxonomy_8php.html#a7a913d19c77610da689be48fbbf6734c", null ]
+ [ "term_query", "taxonomy_8php.html#a7a913d19c77610da689be48fbbf6734c", null ],
+ [ "wtagblock", "taxonomy_8php.html#a83f0a60f9e0c07d8451dc5be95b17287", null ]
]; \ No newline at end of file
diff --git a/doc/html/text_8php.html b/doc/html/text_8php.html
index 15142d475..993f2201e 100644
--- a/doc/html/text_8php.html
+++ b/doc/html/text_8php.html
@@ -142,14 +142,18 @@ Functions</h2></td></tr>
<tr class="memitem:a98fd99dee3da8cf4c148dc04efe782ee"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="text_8php.html#a98fd99dee3da8cf4c148dc04efe782ee">perms2str</a> ($p)</td></tr>
<tr class="separator:a98fd99dee3da8cf4c148dc04efe782ee"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aa6b0aa8afbeab50d1a3058ad21acb74e"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="text_8php.html#aa6b0aa8afbeab50d1a3058ad21acb74e">item_message_id</a> ()</td></tr>
+<tr class="memdesc:aa6b0aa8afbeab50d1a3058ad21acb74e"><td class="mdescLeft">&#160;</td><td class="mdescRight">Generate a guaranteed unique (for this domain) item ID for ATOM. <a href="#aa6b0aa8afbeab50d1a3058ad21acb74e">More...</a><br/></td></tr>
<tr class="separator:aa6b0aa8afbeab50d1a3058ad21acb74e"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aa5528f41533927e1bd2da3618a74a6d7"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="text_8php.html#aa5528f41533927e1bd2da3618a74a6d7">photo_new_resource</a> ()</td></tr>
+<tr class="memdesc:aa5528f41533927e1bd2da3618a74a6d7"><td class="mdescLeft">&#160;</td><td class="mdescRight">Generate a guaranteed unique photo ID. <a href="#aa5528f41533927e1bd2da3618a74a6d7">More...</a><br/></td></tr>
<tr class="separator:aa5528f41533927e1bd2da3618a74a6d7"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a95fd2f8f23a1948414a03ebc963bac57"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="text_8php.html#a95fd2f8f23a1948414a03ebc963bac57">attribute_contains</a> ($attr, $s)</td></tr>
<tr class="separator:a95fd2f8f23a1948414a03ebc963bac57"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a030fa5ecc64168af0c4f44897a9bce63"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="text_8php.html#a030fa5ecc64168af0c4f44897a9bce63">logger</a> ($msg, $level=0)</td></tr>
+<tr class="memdesc:a030fa5ecc64168af0c4f44897a9bce63"><td class="mdescLeft">&#160;</td><td class="mdescRight">Logging function for <a class="el" href="namespaceRedMatrix.html" title="Class Import.">RedMatrix</a>. <a href="#a030fa5ecc64168af0c4f44897a9bce63">More...</a><br/></td></tr>
<tr class="separator:a030fa5ecc64168af0c4f44897a9bce63"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a0a1f7c0e97f9ecbebf3e5834582b014c"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="text_8php.html#a0a1f7c0e97f9ecbebf3e5834582b014c">dlogger</a> ($msg, $level=0)</td></tr>
+<tr class="memdesc:a0a1f7c0e97f9ecbebf3e5834582b014c"><td class="mdescLeft">&#160;</td><td class="mdescRight">This is a special logging facility for developers. <a href="#a0a1f7c0e97f9ecbebf3e5834582b014c">More...</a><br/></td></tr>
<tr class="separator:a0a1f7c0e97f9ecbebf3e5834582b014c"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a8b0a799341b1fc4cba2c3ede3e3fc9b6"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="text_8php.html#a8b0a799341b1fc4cba2c3ede3e3fc9b6">profiler</a> ($t1, $t2, $label)</td></tr>
<tr class="separator:a8b0a799341b1fc4cba2c3ede3e3fc9b6"><td class="memSeparator" colspan="2">&#160;</td></tr>
@@ -181,7 +185,7 @@ Functions</h2></td></tr>
<tr class="separator:a876e94892867019935b348b573299352"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aae91e4d2a2c6f7a9daccd2c186ae3447"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="text_8php.html#aae91e4d2a2c6f7a9daccd2c186ae3447">searchbox</a> ($s, $id='<a class="el" href="text_8php.html#a876e94892867019935b348b573299352">search</a>-box', $url='/<a class="el" href="text_8php.html#a876e94892867019935b348b573299352">search</a>', $save=false)</td></tr>
<tr class="separator:aae91e4d2a2c6f7a9daccd2c186ae3447"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a6a3d80a6c6fb234fd0bac44203b828eb"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="text_8php.html#a6a3d80a6c6fb234fd0bac44203b828eb">valid_email</a> ($<a class="el" href="boot_8php.html#a01353c9abebc3544ea080ac161729632">x</a>)</td></tr>
+<tr class="memitem:a6a3d80a6c6fb234fd0bac44203b828eb"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="text_8php.html#a6a3d80a6c6fb234fd0bac44203b828eb">valid_email</a> ($<a class="el" href="boot_8php.html#ae97836b0547953be182a2334c9c91d3c">x</a>)</td></tr>
<tr class="separator:a6a3d80a6c6fb234fd0bac44203b828eb"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a11255c8c4e5245b6c24f97684826aa54"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="text_8php.html#a11255c8c4e5245b6c24f97684826aa54">linkify</a> ($s)</td></tr>
<tr class="separator:a11255c8c4e5245b6c24f97684826aa54"><td class="memSeparator" colspan="2">&#160;</td></tr>
@@ -191,13 +195,15 @@ Functions</h2></td></tr>
<tr class="separator:aa46f941155c2ac1155f2f17ffb0adb66"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a736db13a966b8abaf8c9198faa35911a"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="text_8php.html#a736db13a966b8abaf8c9198faa35911a">get_mood_verbs</a> ()</td></tr>
<tr class="separator:a736db13a966b8abaf8c9198faa35911a"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a4446c7f8996a280f7e08b7bfe6c6c8bc"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="text_8php.html#a4446c7f8996a280f7e08b7bfe6c6c8bc">list_smilies</a> ()</td></tr>
+<tr class="separator:a4446c7f8996a280f7e08b7bfe6c6c8bc"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a3d225b253bb9e0f2498c11647d927b0b"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="text_8php.html#a3d225b253bb9e0f2498c11647d927b0b">smilies</a> ($s, $sample=false)</td></tr>
<tr class="separator:a3d225b253bb9e0f2498c11647d927b0b"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a10dde167249ed5abf190a7a0986878ea"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="text_8php.html#a10dde167249ed5abf190a7a0986878ea">smile_shield</a> ($m)</td></tr>
<tr class="separator:a10dde167249ed5abf190a7a0986878ea"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a273156a6f5cddc6652ad656821cd5805"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="text_8php.html#a273156a6f5cddc6652ad656821cd5805">smile_unshield</a> ($m)</td></tr>
<tr class="separator:a273156a6f5cddc6652ad656821cd5805"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:ac19d2b33a58372a357a43d51eed19162"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="text_8php.html#ac19d2b33a58372a357a43d51eed19162">preg_heart</a> ($<a class="el" href="boot_8php.html#a01353c9abebc3544ea080ac161729632">x</a>)</td></tr>
+<tr class="memitem:ac19d2b33a58372a357a43d51eed19162"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="text_8php.html#ac19d2b33a58372a357a43d51eed19162">preg_heart</a> ($<a class="el" href="boot_8php.html#ae97836b0547953be182a2334c9c91d3c">x</a>)</td></tr>
<tr class="separator:ac19d2b33a58372a357a43d51eed19162"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a63fb21c0bed2fc72eef2c1471ac42b63"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="text_8php.html#a63fb21c0bed2fc72eef2c1471ac42b63">day_translate</a> ($s)</td></tr>
<tr class="separator:a63fb21c0bed2fc72eef2c1471ac42b63"><td class="memSeparator" colspan="2">&#160;</td></tr>
@@ -217,6 +223,10 @@ Functions</h2></td></tr>
<tr class="separator:ad8c6e13d6accf057136c5f30a23a5f08"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a4e4d42b0a805148d9f9a92bcac89bf91"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="text_8php.html#a4e4d42b0a805148d9f9a92bcac89bf91">format_filer</a> (&amp;$item)</td></tr>
<tr class="separator:a4e4d42b0a805148d9f9a92bcac89bf91"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ae0333c304ec5b4b72e66bb2933fa7357"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="text_8php.html#ae0333c304ec5b4b72e66bb2933fa7357">generate_map</a> ($coord)</td></tr>
+<tr class="separator:ae0333c304ec5b4b72e66bb2933fa7357"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:af5eb4a9c1599764f80c5bc71e0125d4b"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="text_8php.html#af5eb4a9c1599764f80c5bc71e0125d4b">generate_named_map</a> ($location)</td></tr>
+<tr class="separator:af5eb4a9c1599764f80c5bc71e0125d4b"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ae4df74296fbe55051ed3c035e55205e5"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="text_8php.html#ae4df74296fbe55051ed3c035e55205e5">prepare_body</a> (&amp;$item, $attach=false)</td></tr>
<tr class="separator:ae4df74296fbe55051ed3c035e55205e5"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:afe54312607d92f7ce9593f5760831f80"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="text_8php.html#afe54312607d92f7ce9593f5760831f80">prepare_text</a> ($text, $content_type= 'text/<a class="el" href="bbcode_8php.html#a009f61aaf78771737ed0765c8463911b">bbcode</a>')</td></tr>
@@ -273,8 +283,8 @@ Functions</h2></td></tr>
<tr class="separator:a0c65597bb4aed3a039eb795ff540e5e3"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a436a8de00c942364c2d0fcfc7e1f4b5a"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="text_8php.html#a436a8de00c942364c2d0fcfc7e1f4b5a">ids_to_querystr</a> ($arr, $idx= 'id')</td></tr>
<tr class="separator:a436a8de00c942364c2d0fcfc7e1f4b5a"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a36a2e5d418ee81140f25c4233cfecd1f"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="text_8php.html#a36a2e5d418ee81140f25c4233cfecd1f">xchan_query</a> (&amp;$items, $abook=true)</td></tr>
-<tr class="separator:a36a2e5d418ee81140f25c4233cfecd1f"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a905c3895feb6f276df23f07f16f9bb52"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="text_8php.html#a905c3895feb6f276df23f07f16f9bb52">xchan_query</a> (&amp;$items, $abook=true, $effective_uid=0)</td></tr>
+<tr class="separator:a905c3895feb6f276df23f07f16f9bb52"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a543447c5ed766535221e2d9636b379ee"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="text_8php.html#a543447c5ed766535221e2d9636b379ee">xchan_mail_query</a> (&amp;$item)</td></tr>
<tr class="separator:a543447c5ed766535221e2d9636b379ee"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ace3c98538c63e09b70a363210b414112"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="text_8php.html#ace3c98538c63e09b70a363210b414112">find_xchan_in_array</a> ($xchan, $arr)</td></tr>
@@ -295,6 +305,10 @@ Functions</h2></td></tr>
<tr class="separator:a75c326298519ed14ebe762194c8a3f2a"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:adba17ec946f4285285dc100f7860bf51"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="text_8php.html#adba17ec946f4285285dc100f7860bf51">normalise_openid</a> ($s)</td></tr>
<tr class="separator:adba17ec946f4285285dc100f7860bf51"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a3ba47b4dd1248e7e51095572e7b814dc"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="text_8php.html#a3ba47b4dd1248e7e51095572e7b814dc">extra_query_args</a> ()</td></tr>
+<tr class="separator:a3ba47b4dd1248e7e51095572e7b814dc"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:aa22feef4de326e1d7078dedd892e615c"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="text_8php.html#aa22feef4de326e1d7078dedd892e615c">handle_tag</a> ($a, &amp;$body, &amp;$access_tag, &amp;$str_tags, $profile_uid, $tag)</td></tr>
+<tr class="separator:aa22feef4de326e1d7078dedd892e615c"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="var-members"></a>
Variables</h2></td></tr>
@@ -328,7 +342,7 @@ Variables</h2></td></tr>
</table>
</div><div class="memdoc">
-<p>Referenced by <a class="el" href="classItem.html#a80dcd9d0f548c3ad550abe7e6981fb51">Item\add_child()</a>, <a class="el" href="classConversation.html#a8335cdd43f1836e3c255638e61a09e16">Conversation\add_thread()</a>, <a class="el" href="items_8php.html#a8794863cdf8ce1333040933d3a3f66bd">consume_feed()</a>, <a class="el" href="conversation_8php.html#affea1afb3f32ca41e966c8ddb4204d81">conversation()</a>, <a class="el" href="items_8php.html#a896c1809d58f2d7a42cfe14577958ddf">get_atom_elements()</a>, <a class="el" href="text_8php.html#ac1dbf2e37e8069bea2c0f557fdbf203e">item_post_type()</a>, <a class="el" href="conversation_8php.html#afe5b2f38d8b803edb0d7ec5fa2868db0">like_puller()</a>, <a class="el" href="conversation_8php.html#a9bd7f9fb6678736c581bcba3b17f471c">localize_item()</a>, <a class="el" href="zot_8php.html#aad25a3fe0e1566121d6fb8222979bc10">remove_community_tag()</a>, and <a class="el" href="conversation_8php.html#a7eeaaf44506815576f3bd80053ef52c3">visible_activity()</a>.</p>
+<p>Referenced by <a class="el" href="classItem.html#a80dcd9d0f548c3ad550abe7e6981fb51">Item\add_child()</a>, <a class="el" href="classConversation.html#a8335cdd43f1836e3c255638e61a09e16">Conversation\add_thread()</a>, <a class="el" href="conversation_8php.html#affea1afb3f32ca41e966c8ddb4204d81">conversation()</a>, <a class="el" href="items_8php.html#a5e5be7bf1f8257dec0b2647e60a3f3f1">get_atom_elements()</a>, <a class="el" href="text_8php.html#ac1dbf2e37e8069bea2c0f557fdbf203e">item_post_type()</a>, <a class="el" href="conversation_8php.html#afe5b2f38d8b803edb0d7ec5fa2868db0">like_puller()</a>, <a class="el" href="conversation_8php.html#a9bd7f9fb6678736c581bcba3b17f471c">localize_item()</a>, <a class="el" href="zot_8php.html#aad25a3fe0e1566121d6fb8222979bc10">remove_community_tag()</a>, and <a class="el" href="conversation_8php.html#a7eeaaf44506815576f3bd80053ef52c3">visible_activity()</a>.</p>
</div>
</div>
@@ -368,7 +382,7 @@ Variables</h2></td></tr>
</table>
</div><div class="memdoc">
-<p>Referenced by <a class="el" href="channel_8php.html#a9c6a6179e0e626398ebecc6151905ef1">channel_content()</a>, <a class="el" href="mod_2directory_8php.html#aac79396570d759da2efac24fcedf5b44">directory_content()</a>, <a class="el" href="mod_2message_8php.html#ac72dfed3ce08fcb331d66b37edc6e15f">message_content()</a>, and <a class="el" href="mod_2network_8php.html#a43f2f29b90c5e29072c561934bc8f8b4">network_content()</a>.</p>
+<p>Referenced by <a class="el" href="channel_8php.html#a9c6a6179e0e626398ebecc6151905ef1">channel_content()</a>, <a class="el" href="mod_2directory_8php.html#aac79396570d759da2efac24fcedf5b44">directory_content()</a>, <a class="el" href="home_8php.html#a6e3dbf78f4ed74ab2577de221190b33f">home_content()</a>, <a class="el" href="mod_2message_8php.html#ac72dfed3ce08fcb331d66b37edc6e15f">message_content()</a>, and <a class="el" href="mod_2network_8php.html#a43f2f29b90c5e29072c561934bc8f8b4">network_content()</a>.</p>
</div>
</div>
@@ -415,6 +429,8 @@ Variables</h2></td></tr>
</table>
</div><div class="memdoc">
+<p>Referenced by <a class="el" href="include_2network_8php.html#acb0bd7f5fe38ff1eaebeae3284525070">scrape_vcard()</a>.</p>
+
</div>
</div>
<a class="anchor" id="a27cd2c1b3bcb49a0cfb7249e851725ca"></a>
@@ -457,7 +473,7 @@ Variables</h2></td></tr>
</table>
</div><div class="memdoc">
-<p>Referenced by <a class="el" href="crypto_8php.html#aca7c3a574bfb6c6ef1f2403a56823914">aes_unencapsulate()</a>, <a class="el" href="items_8php.html#a896c1809d58f2d7a42cfe14577958ddf">get_atom_elements()</a>, <a class="el" href="items_8php.html#a536d0313b6ffe33b9d2490c4e25c5361">get_item_elements()</a>, <a class="el" href="import_8php.html#af17fef0410518f7eac205d0ea416eaa2">import_post()</a>, <a class="el" href="zot_8php.html#a2657e141d62d5f67ad3c87651b585299">import_site()</a>, <a class="el" href="zot_8php.html#a528e97ca5d69c3b7f35c5d954afde315">import_xchan()</a>, <a class="el" href="mod_2oembed_8php.html#a9145025aaf057fb5d3f9f7011e5e1014">oembed_init()</a>, <a class="el" href="post_8php.html#af4b48181ce773ef0cdfc972441445c34">post_init()</a>, <a class="el" href="post_8php.html#af59e6a1dc22d19d9257b01cd7ccedb75">post_post()</a>, <a class="el" href="text_8php.html#a273156a6f5cddc6652ad656821cd5805">smile_unshield()</a>, <a class="el" href="zfinger_8php.html#a8139b83a22ef98869adc10aa224027a0">zfinger_init()</a>, and <a class="el" href="zot_8php.html#a5bcdfef419b16075a0eca990956223dc">zot_register_hub()</a>.</p>
+<p>Referenced by <a class="el" href="crypto_8php.html#aca7c3a574bfb6c6ef1f2403a56823914">aes_unencapsulate()</a>, <a class="el" href="items_8php.html#adc26e08aa61f5666da04ab5d2a9d68a6">consume_feed()</a>, <a class="el" href="contactgroup_8php.html#a18c7391b1b25debaf98c9dba639caab3">contactgroup_content()</a>, <a class="el" href="diaspora_8php.html#a849754ec369e1a60fadae5c14584ca36">diaspora_decode()</a>, <a class="el" href="items_8php.html#a5e5be7bf1f8257dec0b2647e60a3f3f1">get_atom_elements()</a>, <a class="el" href="items_8php.html#a536d0313b6ffe33b9d2490c4e25c5361">get_item_elements()</a>, <a class="el" href="mod_2group_8php.html#a07a64f6c65b0080d8190b3d9728a7a83">group_content()</a>, <a class="el" href="impel_8php.html#ab7db6fca43b42ea4332cb3e841b3cf7b">impel_init()</a>, <a class="el" href="import_8php.html#af17fef0410518f7eac205d0ea416eaa2">import_post()</a>, <a class="el" href="zot_8php.html#a2657e141d62d5f67ad3c87651b585299">import_site()</a>, <a class="el" href="zot_8php.html#a528e97ca5d69c3b7f35c5d954afde315">import_xchan()</a>, <a class="el" href="mod_2oembed_8php.html#a9145025aaf057fb5d3f9f7011e5e1014">oembed_init()</a>, <a class="el" href="crypto_8php.html#a798368843cdd9bb08386b48e53e29e8c">pemtome()</a>, <a class="el" href="post_8php.html#af4b48181ce773ef0cdfc972441445c34">post_init()</a>, <a class="el" href="post_8php.html#af59e6a1dc22d19d9257b01cd7ccedb75">post_post()</a>, <a class="el" href="crypto_8php.html#a2a3fae7caca27f86d158eeaf69b6f287">pubrsatome()</a>, <a class="el" href="bb2diaspora_8php.html#ab61b4f8c065e97b151411858bb2f209a">share_unshield()</a>, <a class="el" href="text_8php.html#a273156a6f5cddc6652ad656821cd5805">smile_unshield()</a>, <a class="el" href="zot_8php.html#ab15c04e7e5f44edf45ec50dd7d183254">sync_locations()</a>, <a class="el" href="zfinger_8php.html#a8139b83a22ef98869adc10aa224027a0">zfinger_init()</a>, and <a class="el" href="zot_8php.html#a5bcdfef419b16075a0eca990956223dc">zot_register_hub()</a>.</p>
</div>
</div>
@@ -485,7 +501,7 @@ Variables</h2></td></tr>
</table>
</div><div class="memdoc">
-<p>Referenced by <a class="el" href="crypto_8php.html#a2148d7aac7b30c720f7ebda7e9790286">aes_encapsulate()</a>, <a class="el" href="zot_8php.html#a703f528ade8382cf374e4119bd6f7859">allowed_public_recips()</a>, <a class="el" href="identity_8php.html#a345f4c943d84de502ec6e72d2c813945">create_identity()</a>, <a class="el" href="boot_8php.html#aca5e42678e178c6b9034610d66666fd7">fix_system_urls()</a>, <a class="el" href="items_8php.html#a536d0313b6ffe33b9d2490c4e25c5361">get_item_elements()</a>, <a class="el" href="identity_8php.html#a3570a4eb77332b292d394c4132cb8f03">identity_basic_export()</a>, <a class="el" href="zot_8php.html#ad149f1e98c0c5b88ff9147e6ee3f330d">import_author_zot()</a>, <a class="el" href="import_8php.html#af17fef0410518f7eac205d0ea416eaa2">import_post()</a>, <a class="el" href="zot_8php.html#a528e97ca5d69c3b7f35c5d954afde315">import_xchan()</a>, <a class="el" href="item_8php.html#a693cd09805755ab85bbb5ecae69a48c3">item_post()</a>, <a class="el" href="items_8php.html#a2541e6861a56d145c9281877cc501615">item_store()</a>, <a class="el" href="items_8php.html#acf0bf7c9d21ac84f32effb754f7ad484">item_store_update()</a>, <a class="el" href="magic_8php.html#acea2cc792849ca2d71d4b689f66518bf">magic_init()</a>, <a class="el" href="include_2oembed_8php.html#a9e57f3e36a0a0a47e6db79544b701d9a">oembed_iframe()</a>, <a class="el" href="items_8php.html#a410f9c743877c125ca06312373346903">post_activity_item()</a>, <a class="el" href="post_8php.html#af59e6a1dc22d19d9257b01cd7ccedb75">post_post()</a>, <a class="el" href="text_8php.html#a9d6a5ee1290de7a8b483fe78585daade">random_string()</a>, <a class="el" href="text_8php.html#a10dde167249ed5abf190a7a0986878ea">smile_shield()</a>, <a class="el" href="zfinger_8php.html#a8139b83a22ef98869adc10aa224027a0">zfinger_init()</a>, <a class="el" href="zot_8php.html#a3862b3161b2c8557dc1a95020179bd81">zot_build_packet()</a>, <a class="el" href="zot_8php.html#a61cdc1ec843663c423ed2d8160ae5aea">zot_fetch()</a>, <a class="el" href="zot_8php.html#aeea071f17e306fe3d0c488551906bfab">zot_import()</a>, <a class="el" href="zot_8php.html#ab22d67660702056bf3f4696dcebf5ce7">zot_new_uid()</a>, and <a class="el" href="zot_8php.html#a5bcdfef419b16075a0eca990956223dc">zot_register_hub()</a>.</p>
+<p>Referenced by <a class="el" href="crypto_8php.html#a2148d7aac7b30c720f7ebda7e9790286">aes_encapsulate()</a>, <a class="el" href="items_8php.html#adc26e08aa61f5666da04ab5d2a9d68a6">consume_feed()</a>, <a class="el" href="identity_8php.html#a345f4c943d84de502ec6e72d2c813945">create_identity()</a>, <a class="el" href="diaspora_8php.html#a849754ec369e1a60fadae5c14584ca36">diaspora_decode()</a>, <a class="el" href="diaspora_8php.html#a4901762cba5cd8dcdc57bdf285eefb1b">diaspora_msg_build()</a>, <a class="el" href="diaspora_8php.html#a586d5a3ba92d35cee14f879f290072aa">diaspora_pubmsg_build()</a>, <a class="el" href="editblock_8php.html#abbe8f55de06967bc8d79d620509a49e6">editblock_content()</a>, <a class="el" href="editlayout_8php.html#aa877e4157a26b099de904164181dd386">editlayout_content()</a>, <a class="el" href="editwebpage_8php.html#a375e945255fad79a71036528f7480650">editwebpage_content()</a>, <a class="el" href="boot_8php.html#aca5e42678e178c6b9034610d66666fd7">fix_system_urls()</a>, <a class="el" href="items_8php.html#a5e5be7bf1f8257dec0b2647e60a3f3f1">get_atom_elements()</a>, <a class="el" href="mod_2group_8php.html#a07a64f6c65b0080d8190b3d9728a7a83">group_content()</a>, <a class="el" href="include_2group_8php.html#a6a69bd7be032fa8ce4e49c43a42cc6e9">group_side()</a>, <a class="el" href="identity_8php.html#afaedbc8e2d2a70ec8b006162baac5249">identity_basic_export()</a>, <a class="el" href="import_8php.html#af17fef0410518f7eac205d0ea416eaa2">import_post()</a>, <a class="el" href="item_8php.html#a693cd09805755ab85bbb5ecae69a48c3">item_post()</a>, <a class="el" href="items_8php.html#a2541e6861a56d145c9281877cc501615">item_store()</a>, <a class="el" href="items_8php.html#acf0bf7c9d21ac84f32effb754f7ad484">item_store_update()</a>, <a class="el" href="magic_8php.html#acea2cc792849ca2d71d4b689f66518bf">magic_init()</a>, <a class="el" href="zot_8php.html#a0fc2211c5309d9f925ecc4115e3fdb75">make_xchan_hash()</a>, <a class="el" href="include_2oembed_8php.html#a9e57f3e36a0a0a47e6db79544b701d9a">oembed_iframe()</a>, <a class="el" href="items_8php.html#a410f9c743877c125ca06312373346903">post_activity_item()</a>, <a class="el" href="post_8php.html#af59e6a1dc22d19d9257b01cd7ccedb75">post_post()</a>, <a class="el" href="text_8php.html#a9d6a5ee1290de7a8b483fe78585daade">random_string()</a>, <a class="el" href="crypto_8php.html#a9191447cc46f0b4eaba3273e313994d5">salmon_key()</a>, <a class="el" href="bb2diaspora_8php.html#ad033be99e87a2aaa05e569c68f30792d">share_shield()</a>, <a class="el" href="text_8php.html#a10dde167249ed5abf190a7a0986878ea">smile_shield()</a>, <a class="el" href="zfinger_8php.html#a8139b83a22ef98869adc10aa224027a0">zfinger_init()</a>, <a class="el" href="zot_8php.html#a084c581d534e7e3b759488b46602288f">zot_build_packet()</a>, <a class="el" href="zot_8php.html#a61cdc1ec843663c423ed2d8160ae5aea">zot_fetch()</a>, and <a class="el" href="zot_8php.html#ab22d67660702056bf3f4696dcebf5ce7">zot_new_uid()</a>.</p>
</div>
</div>
@@ -557,7 +573,7 @@ Variables</h2></td></tr>
</table>
</div><div class="memdoc">
-<p>Referenced by <a class="el" href="classItem.html#abcdb0ea9bcd1576bc99bba9b8f700bb8">Item\check_wall_to_wall()</a>, <a class="el" href="connections_8php.html#aec2e457420fce3e3bf6a9f48e36df25c">connections_content()</a>, <a class="el" href="mod_2directory_8php.html#aac79396570d759da2efac24fcedf5b44">directory_content()</a>, <a class="el" href="dirprofile_8php.html#a3e1d30d3d93863ff5615f2df4ac7f052">dirprofile_init()</a>, <a class="el" href="items_8php.html#adf980098b6de9c3993bc3ff26a8dd6f9">fetch_post_tags()</a>, <a class="el" href="classItem.html#ad5dcbe0b94cb2d5719bc5b6bd8ad60c8">Item\get_template_data()</a>, <a class="el" href="conversation_8php.html#afe5b2f38d8b803edb0d7ec5fa2868db0">like_puller()</a>, <a class="el" href="conversation_8php.html#a9bd7f9fb6678736c581bcba3b17f471c">localize_item()</a>, <a class="el" href="randprof_8php.html#abf5dba3c608b9304cbf68327cd31b090">randprof_init()</a>, <a class="el" href="suggest_8php.html#a58748a8235d4523f8333847f3e42dd91">suggest_content()</a>, <a class="el" href="viewconnections_8php.html#ab6c4d983e97b3a8a879567ff76507776">viewconnections_content()</a>, and <a class="el" href="widgets_8php.html#a0d404276fedc59f5038cf5c085028326">widget_suggestions()</a>.</p>
+<p>Referenced by <a class="el" href="classItem.html#abcdb0ea9bcd1576bc99bba9b8f700bb8">Item\check_wall_to_wall()</a>, <a class="el" href="connections_8php.html#aec2e457420fce3e3bf6a9f48e36df25c">connections_content()</a>, <a class="el" href="mod_2directory_8php.html#aac79396570d759da2efac24fcedf5b44">directory_content()</a>, <a class="el" href="items_8php.html#adf980098b6de9c3993bc3ff26a8dd6f9">fetch_post_tags()</a>, <a class="el" href="classItem.html#ad5dcbe0b94cb2d5719bc5b6bd8ad60c8">Item\get_template_data()</a>, <a class="el" href="conversation_8php.html#afe5b2f38d8b803edb0d7ec5fa2868db0">like_puller()</a>, <a class="el" href="conversation_8php.html#a9bd7f9fb6678736c581bcba3b17f471c">localize_item()</a>, <a class="el" href="randprof_8php.html#abf5dba3c608b9304cbf68327cd31b090">randprof_init()</a>, <a class="el" href="suggest_8php.html#a58748a8235d4523f8333847f3e42dd91">suggest_content()</a>, <a class="el" href="viewconnections_8php.html#ab6c4d983e97b3a8a879567ff76507776">viewconnections_content()</a>, and <a class="el" href="widgets_8php.html#a0d404276fedc59f5038cf5c085028326">widget_suggestions()</a>.</p>
</div>
</div>
@@ -575,7 +591,7 @@ Variables</h2></td></tr>
</table>
</div><div class="memdoc">
-<p>Referenced by <a class="el" href="identity_8php.html#a345f4c943d84de502ec6e72d2c813945">create_identity()</a>, and <a class="el" href="new__channel_8php.html#a1ad7f99e4366a32942c6b954aba3a164">new_channel_init()</a>.</p>
+<p>Referenced by <a class="el" href="identity_8php.html#a345f4c943d84de502ec6e72d2c813945">create_identity()</a>, <a class="el" href="dimport_8php.html#a581f040717941ce3e1868b0b5dceefd1">foofoo()</a>, and <a class="el" href="new__channel_8php.html#a1ad7f99e4366a32942c6b954aba3a164">new_channel_init()</a>.</p>
</div>
</div>
@@ -591,6 +607,8 @@ Variables</h2></td></tr>
</tr>
</table>
</div><div class="memdoc">
+<p>@ Return a div to clear floats.</p>
+<dl class="section return"><dt>Returns</dt><dd>string </dd></dl>
<p>Referenced by <a class="el" href="common_8php.html#ab63408f39abef7a6915186e8dabc5a96">common_content()</a>, and <a class="el" href="match_8php.html#a1dd853e959b9e70c1911bb2fb5f5130d">match_content()</a>.</p>
@@ -627,7 +645,7 @@ Variables</h2></td></tr>
</table>
</div><div class="memdoc">
-<p>Referenced by <a class="el" href="identity_8php.html#aa870d2c1f558cfd52bef05bc124e8fa4">advanced_profile()</a>, <a class="el" href="datetime_8php.html#aea356409ba69f9de412298c998595dd2">cal()</a>, <a class="el" href="events_8php.html#a1d293fb217ae6bc9e3858c4b32e363ec">events_content()</a>, <a class="el" href="bb2diaspora_8php.html#a29a2ad41f5826f3975fa9a49934ff863">format_event_diaspora()</a>, <a class="el" href="event_8php.html#a2ac9f1b08de03250ecd794f705781d17">format_event_html()</a>, <a class="el" href="identity_8php.html#ad2c97627a313d53df1a1c7b4215ddb51">get_birthdays()</a>, <a class="el" href="identity_8php.html#ae381db3d43f8e7c1da8b15d14ecf5312">get_events()</a>, <a class="el" href="items_8php.html#aa2d3caa2f27720762b5c729e07df40fb">list_post_dates()</a>, <a class="el" href="ping_8php.html#a77217b1b190b4c5d8770867b45f0c0a1">ping_init()</a>, and <a class="el" href="items_8php.html#ad2abb4644ff1f20fefbc80326fe01cf0">posted_dates()</a>.</p>
+<p>Referenced by <a class="el" href="identity_8php.html#aa870d2c1f558cfd52bef05bc124e8fa4">advanced_profile()</a>, <a class="el" href="datetime_8php.html#aea356409ba69f9de412298c998595dd2">cal()</a>, <a class="el" href="events_8php.html#a1d293fb217ae6bc9e3858c4b32e363ec">events_content()</a>, <a class="el" href="bb2diaspora_8php.html#a29a2ad41f5826f3975fa9a49934ff863">format_event_diaspora()</a>, <a class="el" href="event_8php.html#a2ac9f1b08de03250ecd794f705781d17">format_event_html()</a>, <a class="el" href="identity_8php.html#ad2c97627a313d53df1a1c7b4215ddb51">get_birthdays()</a>, <a class="el" href="identity_8php.html#ae381db3d43f8e7c1da8b15d14ecf5312">get_events()</a>, <a class="el" href="items_8php.html#ab33fa9756aaa5f39a6104d57a62baf00">list_post_dates()</a>, <a class="el" href="ping_8php.html#a77217b1b190b4c5d8770867b45f0c0a1">ping_init()</a>, and <a class="el" href="items_8php.html#ad2abb4644ff1f20fefbc80326fe01cf0">posted_dates()</a>.</p>
</div>
</div>
@@ -672,6 +690,17 @@ Variables</h2></td></tr>
</table>
</div><div class="memdoc">
+<p>This is a special logging facility for developers. </p>
+<p>It allows one to target specific things to trace/debug and is identical to <a class="el" href="text_8php.html#a030fa5ecc64168af0c4f44897a9bce63" title="Logging function for RedMatrix.">logger()</a> with the exception of the log filename. This allows one to isolate specific calls while allowing <a class="el" href="text_8php.html#a030fa5ecc64168af0c4f44897a9bce63" title="Logging function for RedMatrix.">logger()</a> to paint a bigger picture of overall activity and capture more detail.</p>
+<p>If you find <a class="el" href="text_8php.html#a0a1f7c0e97f9ecbebf3e5834582b014c" title="This is a special logging facility for developers.">dlogger()</a> calls in checked in code, you are free to remove them - so as to provide a noise-free development environment which responds to events you are targetting personally.</p>
+<dl class="params"><dt>Parameters</dt><dd>
+ <table class="params">
+ <tr><td class="paramtype">string</td><td class="paramname">$msg</td><td>Message to log </td></tr>
+ <tr><td class="paramtype">int</td><td class="paramname">$level</td><td>A log level. </td></tr>
+ </table>
+ </dd>
+</dl>
+
</div>
</div>
<a class="anchor" id="aa5148a0dfea2a1ca64c3d52f10aa2d64"></a>
@@ -696,7 +725,7 @@ Variables</h2></td></tr>
</dl>
<dl class="section return"><dt>Returns</dt><dd>string </dd></dl>
-<p>Referenced by <a class="el" href="admin_8php.html#a1d1362698af14d209aa3a0fb655551dd">admin_page_logs()</a>, <a class="el" href="include_2apps_8php.html#a15626f24069c18816f7cdaf4735f58f9">app_store()</a>, <a class="el" href="include_2apps_8php.html#aeab6a62d2f3dfaa86ed043a006305f46">app_update()</a>, <a class="el" href="appman_8php.html#a2979acbe47ffaecfa19b9eabfbfbde39">appman_post()</a>, <a class="el" href="include_2bookmarks_8php.html#aef1cb2968c41c759f2d106e1088ca323">bookmark_add()</a>, <a class="el" href="chatsvc_8php.html#a7c9a9b9c24a2b02eed8efd6b09632d03">chatsvc_post()</a>, <a class="el" href="connect_8php.html#a417ec27afe33f21a929667a665e32ee2">connect_post()</a>, <a class="el" href="identity_8php.html#a345f4c943d84de502ec6e72d2c813945">create_identity()</a>, <a class="el" href="events_8php.html#ab3e8a8f901175f8e40a8089eea45c075">events_post()</a>, <a class="el" href="fsuggest_8php.html#a61ecfe10ce937ed526614f8fd3de3c7d">fsuggest_post()</a>, <a class="el" href="items_8php.html#a896c1809d58f2d7a42cfe14577958ddf">get_atom_elements()</a>, <a class="el" href="item_8php.html#a693cd09805755ab85bbb5ecae69a48c3">item_post()</a>, <a class="el" href="mail_8php.html#acfc2cc0bf4e0b178207758384977f25a">mail_post()</a>, <a class="el" href="items_8php.html#a77da7ce9a117601d49ac4a67c71b514f">mail_store()</a>, <a class="el" href="include_2menu_8php.html#add35fae5e9695031b3d46e30ac409eb8">menu_add_item()</a>, <a class="el" href="include_2menu_8php.html#a08a800821721781a8dfffbe31481ff98">menu_create()</a>, <a class="el" href="include_2menu_8php.html#a6a33c6a3db2a7510b16cc656edaec571">menu_edit()</a>, <a class="el" href="include_2menu_8php.html#acb66f80ca895a6ccd562b3d9ae7b41aa">menu_edit_item()</a>, <a class="el" href="mod_2network_8php.html#a43f2f29b90c5e29072c561934bc8f8b4">network_content()</a>, <a class="el" href="notes_8php.html#a4dbd7b1f906440746af48b484d66535a">notes_init()</a>, <a class="el" href="pdledit_8php.html#a81da3c955d0e3db55d148a31483104c7">pdledit_post()</a>, <a class="el" href="socgraph_8php.html#a5ef8bef37161df53718a21e93d02fbd6">poco_load()</a>, <a class="el" href="dba__driver_8php.html#a55bf30d8176967e682656b5be4ad9249">printable()</a>, <a class="el" href="profiles_8php.html#ab0362c81b1d3b0b12a772b9fac446e04">profiles_post()</a>, <a class="el" href="rbmark_8php.html#a43fec4960b50926251574762cc491f76">rbmark_content()</a>, <a class="el" href="rbmark_8php.html#ac5a66aa8599fa5dc702bae396d8d1f8c">rbmark_post()</a>, <a class="el" href="thing_8php.html#a8be23b1d475ec3d9291999221c674c80">thing_init()</a>, and <a class="el" href="text_8php.html#a324c58f37f6acdf9cd1922aa76077d9f">z_input_filter()</a>.</p>
+<p>Referenced by <a class="el" href="admin_8php.html#a1d1362698af14d209aa3a0fb655551dd">admin_page_logs()</a>, <a class="el" href="include_2apps_8php.html#a15626f24069c18816f7cdaf4735f58f9">app_store()</a>, <a class="el" href="include_2apps_8php.html#aeab6a62d2f3dfaa86ed043a006305f46">app_update()</a>, <a class="el" href="appman_8php.html#a2979acbe47ffaecfa19b9eabfbfbde39">appman_post()</a>, <a class="el" href="include_2bookmarks_8php.html#aef1cb2968c41c759f2d106e1088ca323">bookmark_add()</a>, <a class="el" href="chatsvc_8php.html#a7c9a9b9c24a2b02eed8efd6b09632d03">chatsvc_post()</a>, <a class="el" href="connect_8php.html#a417ec27afe33f21a929667a665e32ee2">connect_post()</a>, <a class="el" href="identity_8php.html#a345f4c943d84de502ec6e72d2c813945">create_identity()</a>, <a class="el" href="events_8php.html#ab3e8a8f901175f8e40a8089eea45c075">events_post()</a>, <a class="el" href="fsuggest_8php.html#a61ecfe10ce937ed526614f8fd3de3c7d">fsuggest_post()</a>, <a class="el" href="items_8php.html#a5e5be7bf1f8257dec0b2647e60a3f3f1">get_atom_elements()</a>, <a class="el" href="item_8php.html#a693cd09805755ab85bbb5ecae69a48c3">item_post()</a>, <a class="el" href="mail_8php.html#acfc2cc0bf4e0b178207758384977f25a">mail_post()</a>, <a class="el" href="items_8php.html#a77da7ce9a117601d49ac4a67c71b514f">mail_store()</a>, <a class="el" href="include_2menu_8php.html#add35fae5e9695031b3d46e30ac409eb8">menu_add_item()</a>, <a class="el" href="include_2menu_8php.html#a08a800821721781a8dfffbe31481ff98">menu_create()</a>, <a class="el" href="include_2menu_8php.html#a6a33c6a3db2a7510b16cc656edaec571">menu_edit()</a>, <a class="el" href="include_2menu_8php.html#acb66f80ca895a6ccd562b3d9ae7b41aa">menu_edit_item()</a>, <a class="el" href="mod_2network_8php.html#a43f2f29b90c5e29072c561934bc8f8b4">network_content()</a>, <a class="el" href="notes_8php.html#a4dbd7b1f906440746af48b484d66535a">notes_init()</a>, <a class="el" href="pdledit_8php.html#a81da3c955d0e3db55d148a31483104c7">pdledit_post()</a>, <a class="el" href="socgraph_8php.html#a5ef8bef37161df53718a21e93d02fbd6">poco_load()</a>, <a class="el" href="items_8php.html#a410f9c743877c125ca06312373346903">post_activity_item()</a>, <a class="el" href="profiles_8php.html#ab0362c81b1d3b0b12a772b9fac446e04">profiles_post()</a>, <a class="el" href="rbmark_8php.html#a43fec4960b50926251574762cc491f76">rbmark_content()</a>, <a class="el" href="rbmark_8php.html#ac5a66aa8599fa5dc702bae396d8d1f8c">rbmark_post()</a>, <a class="el" href="thing_8php.html#a8be23b1d475ec3d9291999221c674c80">thing_init()</a>, and <a class="el" href="text_8php.html#a324c58f37f6acdf9cd1922aa76077d9f">z_input_filter()</a>.</p>
</div>
</div>
@@ -714,7 +743,24 @@ Variables</h2></td></tr>
</table>
</div><div class="memdoc">
-<p>Referenced by <a class="el" href="items_8php.html#a01e3cf44e082fa9bd06dcde5bf713d70">collect_recipients()</a>, <a class="el" href="items_8php.html#afbcf26dfcf8a83fff952aa858c1b7b67">enumerate_permissions()</a>, and <a class="el" href="lockview_8php.html#a851e26ab9a1008df5c5ebebea31e9b44">lockview_content()</a>.</p>
+<p>Referenced by <a class="el" href="items_8php.html#a772f0ae77ad77c8ab68ed918a3870946">collect_recipients()</a>, <a class="el" href="items_8php.html#afbcf26dfcf8a83fff952aa858c1b7b67">enumerate_permissions()</a>, and <a class="el" href="lockview_8php.html#a851e26ab9a1008df5c5ebebea31e9b44">lockview_content()</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a3ba47b4dd1248e7e51095572e7b814dc"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">extra_query_args </td>
+ <td>(</td>
+ <td class="paramname"></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p>Referenced by <a class="el" href="connections_8php.html#aec2e457420fce3e3bf6a9f48e36df25c">connections_content()</a>, <a class="el" href="mod_2directory_8php.html#aac79396570d759da2efac24fcedf5b44">directory_content()</a>, and <a class="el" href="mod_2photos_8php.html#aa87382611a66ec5effdb2d78f13f5812">photos_content()</a>.</p>
</div>
</div>
@@ -774,7 +820,7 @@ Variables</h2></td></tr>
</table>
</div><div class="memdoc">
-<p>Referenced by <a class="el" href="include_2message_8php.html#a5f8de9847e203329e317ac38dc646898">private_messages_fetch_conversation()</a>, <a class="el" href="include_2message_8php.html#a254a756031e4d5e94f85e2939bdb5091">private_messages_fetch_message()</a>, <a class="el" href="include_2message_8php.html#a652973ce47a262f2d238c2fd6233d97e">private_messages_list()</a>, <a class="el" href="text_8php.html#a543447c5ed766535221e2d9636b379ee">xchan_mail_query()</a>, and <a class="el" href="text_8php.html#a36a2e5d418ee81140f25c4233cfecd1f">xchan_query()</a>.</p>
+<p>Referenced by <a class="el" href="include_2message_8php.html#a5f8de9847e203329e317ac38dc646898">private_messages_fetch_conversation()</a>, <a class="el" href="include_2message_8php.html#a254a756031e4d5e94f85e2939bdb5091">private_messages_fetch_message()</a>, <a class="el" href="include_2message_8php.html#a652973ce47a262f2d238c2fd6233d97e">private_messages_list()</a>, <a class="el" href="text_8php.html#a543447c5ed766535221e2d9636b379ee">xchan_mail_query()</a>, and <a class="el" href="text_8php.html#a905c3895feb6f276df23f07f16f9bb52">xchan_query()</a>.</p>
</div>
</div>
@@ -878,6 +924,42 @@ Variables</h2></td></tr>
</div>
</div>
+<a class="anchor" id="ae0333c304ec5b4b72e66bb2933fa7357"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">generate_map </td>
+ <td>(</td>
+ <td class="paramtype">&#160;</td>
+ <td class="paramname"><em>$coord</em></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p>Referenced by <a class="el" href="bbcode_8php.html#a02d5f2434e7bb5cf683e52a9b4787f24">bb_map_coords()</a>, and <a class="el" href="text_8php.html#ae4df74296fbe55051ed3c035e55205e5">prepare_body()</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="af5eb4a9c1599764f80c5bc71e0125d4b"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">generate_named_map </td>
+ <td>(</td>
+ <td class="paramtype">&#160;</td>
+ <td class="paramname"><em>$location</em></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p>Referenced by <a class="el" href="bbcode_8php.html#a7cb403fd1c36d7376c2f3932a1ceb54d">bb_map_location()</a>.</p>
+
+</div>
+</div>
<a class="anchor" id="a76d1b3435c067978d7b484c45f56472b"></a>
<div class="memitem">
<div class="memproto">
@@ -1008,7 +1090,71 @@ Variables</h2></td></tr>
</table>
</div><div class="memdoc">
-<p>Referenced by <a class="el" href="item_8php.html#a693cd09805755ab85bbb5ecae69a48c3">item_post()</a>, and <a class="el" href="mod_2photos_8php.html#a062bed4d04d14fee8a53f4c9be673080">photos_post()</a>.</p>
+<p>Referenced by <a class="el" href="identity_8php.html#aa870d2c1f558cfd52bef05bc124e8fa4">advanced_profile()</a>, <a class="el" href="diaspora_8php.html#a0fb2abe304aae19efc040a5e6b917829">diaspora_comment()</a>, <a class="el" href="diaspora_8php.html#a20b968d64ef26afe5cb0cc75a7570a31">diaspora_post()</a>, <a class="el" href="diaspora_8php.html#a2bf43f6b5890897f425ef4325d34b007">diaspora_reshare()</a>, <a class="el" href="item_8php.html#a693cd09805755ab85bbb5ecae69a48c3">item_post()</a>, and <a class="el" href="mod_2photos_8php.html#a062bed4d04d14fee8a53f4c9be673080">photos_post()</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="aa22feef4de326e1d7078dedd892e615c"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">handle_tag </td>
+ <td>(</td>
+ <td class="paramtype">&#160;</td>
+ <td class="paramname"><em>$a</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">&amp;&#160;</td>
+ <td class="paramname"><em>$body</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">&amp;&#160;</td>
+ <td class="paramname"><em>$access_tag</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">&amp;&#160;</td>
+ <td class="paramname"><em>$str_tags</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">&#160;</td>
+ <td class="paramname"><em>$profile_uid</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">&#160;</td>
+ <td class="paramname"><em>$tag</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+<p>This function removes the tag $tag from the text $body and replaces it with the appropiate link.</p>
+<dl class="params"><dt>Parameters</dt><dd>
+ <table class="params">
+ <tr><td class="paramtype">unknown_type</td><td class="paramname">$body</td><td>the text to replace the tag in </td></tr>
+ <tr><td class="paramtype">unknown_type</td><td class="paramname">$access_tag</td><td>- used to return tag ACL exclusions e.g. @!foo </td></tr>
+ <tr><td class="paramtype">unknown_type</td><td class="paramname">$str_tags</td><td>string to add the tag to </td></tr>
+ <tr><td class="paramtype">unknown_type</td><td class="paramname">$profile_uid</td><td></td></tr>
+ <tr><td class="paramtype">unknown_type</td><td class="paramname">$tag</td><td>the tag to replace</td></tr>
+ </table>
+ </dd>
+</dl>
+<dl class="section return"><dt>Returns</dt><dd>boolean true if replaced, false if not replaced </dd></dl>
+
+<p>Referenced by <a class="el" href="identity_8php.html#aa870d2c1f558cfd52bef05bc124e8fa4">advanced_profile()</a>, <a class="el" href="item_8php.html#a693cd09805755ab85bbb5ecae69a48c3">item_post()</a>, and <a class="el" href="mod_2photos_8php.html#a062bed4d04d14fee8a53f4c9be673080">photos_post()</a>.</p>
</div>
</div>
@@ -1026,7 +1172,7 @@ Variables</h2></td></tr>
</table>
</div><div class="memdoc">
-<p>Referenced by <a class="el" href="include_2api_8php.html#a450d8732b7b608f7ac929aee61572b95">api_statuses_mediap()</a>, <a class="el" href="include_2api_8php.html#ad4d1634df6b35126552324683caaffa2">api_statuses_update()</a>, and <a class="el" href="items_8php.html#a896c1809d58f2d7a42cfe14577958ddf">get_atom_elements()</a>.</p>
+<p>Referenced by <a class="el" href="include_2api_8php.html#a450d8732b7b608f7ac929aee61572b95">api_statuses_mediap()</a>, <a class="el" href="include_2api_8php.html#ad4d1634df6b35126552324683caaffa2">api_statuses_update()</a>, and <a class="el" href="items_8php.html#a5e5be7bf1f8257dec0b2647e60a3f3f1">get_atom_elements()</a>.</p>
</div>
</div>
@@ -1054,7 +1200,7 @@ Variables</h2></td></tr>
</table>
</div><div class="memdoc">
-<p>Referenced by <a class="el" href="channel_8php.html#a9c6a6179e0e626398ebecc6151905ef1">channel_content()</a>, <a class="el" href="display_8php.html#a37137c98d47bf3306f4c2bb9f5b60de0">display_content()</a>, <a class="el" href="items_8php.html#a756738301f2ed96be50232500677d58a">items_fetch()</a>, <a class="el" href="mod_2network_8php.html#a43f2f29b90c5e29072c561934bc8f8b4">network_content()</a>, and <a class="el" href="items_8php.html#a004e89d86b0f29b2c4da20108ecc4091">zot_feed()</a>.</p>
+<p>Referenced by <a class="el" href="channel_8php.html#a9c6a6179e0e626398ebecc6151905ef1">channel_content()</a>, <a class="el" href="display_8php.html#a37137c98d47bf3306f4c2bb9f5b60de0">display_content()</a>, <a class="el" href="home_8php.html#a6e3dbf78f4ed74ab2577de221190b33f">home_content()</a>, <a class="el" href="items_8php.html#a756738301f2ed96be50232500677d58a">items_fetch()</a>, <a class="el" href="mod_2network_8php.html#a43f2f29b90c5e29072c561934bc8f8b4">network_content()</a>, and <a class="el" href="items_8php.html#a1cf89557f32d5dfbe8bd90448dc1aa92">zot_feed()</a>.</p>
</div>
</div>
@@ -1082,7 +1228,7 @@ Variables</h2></td></tr>
</table>
</div><div class="memdoc">
-<p>Referenced by <a class="el" href="dirprofile_8php.html#a3e1d30d3d93863ff5615f2df4ac7f052">dirprofile_init()</a>, and <a class="el" href="zot_8php.html#a20750dd2c36961013fd382fb34e1366c">import_directory_profile()</a>.</p>
+<p>Referenced by <a class="el" href="mod_2directory_8php.html#aac79396570d759da2efac24fcedf5b44">directory_content()</a>, and <a class="el" href="zot_8php.html#a20750dd2c36961013fd382fb34e1366c">import_directory_profile()</a>.</p>
</div>
</div>
@@ -1117,7 +1263,11 @@ Variables</h2></td></tr>
</table>
</div><div class="memdoc">
-<p>Referenced by <a class="el" href="event_8php.html#a7378e839ac3de9d55579eb3ec48eaf92">event_store_item()</a>, <a class="el" href="item_8php.html#a693cd09805755ab85bbb5ecae69a48c3">item_post()</a>, <a class="el" href="like_8php.html#a9d7dd268f21c21e9d29dd2aca2dd9538">like_content()</a>, <a class="el" href="mood_8php.html#a7ae136dd7476865b4828136175db5022">mood_init()</a>, <a class="el" href="include_2photos_8php.html#a6c40ef58aefef705a5adc84a40e97109">photo_upload()</a>, <a class="el" href="include_2photos_8php.html#ad648c0c5544fe9263409b6f6e57c6274">photos_create_item()</a>, <a class="el" href="items_8php.html#a410f9c743877c125ca06312373346903">post_activity_item()</a>, <a class="el" href="activities_8php.html#a80134e807719b3c54aba971958d2e132">profile_activity()</a>, and <a class="el" href="subthread_8php.html#a50368f3d825b77996030528e7fbfa3d3">subthread_content()</a>.</p>
+<p>Generate a guaranteed unique (for this domain) item ID for ATOM. </p>
+<p>Safe from birthday paradox.</p>
+<dl class="section return"><dt>Returns</dt><dd>string a unique id </dd></dl>
+
+<p>Referenced by <a class="el" href="event_8php.html#a7378e839ac3de9d55579eb3ec48eaf92">event_store_item()</a>, <a class="el" href="impel_8php.html#ab7db6fca43b42ea4332cb3e841b3cf7b">impel_init()</a>, <a class="el" href="item_8php.html#a693cd09805755ab85bbb5ecae69a48c3">item_post()</a>, <a class="el" href="like_8php.html#a9d7dd268f21c21e9d29dd2aca2dd9538">like_content()</a>, <a class="el" href="mood_8php.html#a7ae136dd7476865b4828136175db5022">mood_init()</a>, <a class="el" href="include_2photos_8php.html#a6c40ef58aefef705a5adc84a40e97109">photo_upload()</a>, <a class="el" href="include_2photos_8php.html#ad648c0c5544fe9263409b6f6e57c6274">photos_create_item()</a>, <a class="el" href="items_8php.html#a410f9c743877c125ca06312373346903">post_activity_item()</a>, <a class="el" href="activities_8php.html#a80134e807719b3c54aba971958d2e132">profile_activity()</a>, and <a class="el" href="subthread_8php.html#a50368f3d825b77996030528e7fbfa3d3">subthread_content()</a>.</p>
</div>
</div>
@@ -1177,7 +1327,7 @@ Variables</h2></td></tr>
</table>
</div><div class="memdoc">
-<p>Referenced by <a class="el" href="editpost_8php.html#a34011690864d122680c802e9e748ccfb">editpost_content()</a>, <a class="el" href="editwebpage_8php.html#a375e945255fad79a71036528f7480650">editwebpage_content()</a>, <a class="el" href="items_8php.html#a82955cc578f0fa600acec84475026194">encode_item()</a>, <a class="el" href="items_8php.html#a2d840c74ed23d1b6c7daee05cf89dda7">encode_mail()</a>, <a class="el" href="conversation_8php.html#a9bd7f9fb6678736c581bcba3b17f471c">localize_item()</a>, <a class="el" href="include_2message_8php.html#a5f8de9847e203329e317ac38dc646898">private_messages_fetch_conversation()</a>, <a class="el" href="include_2message_8php.html#a254a756031e4d5e94f85e2939bdb5091">private_messages_fetch_message()</a>, <a class="el" href="include_2message_8php.html#a652973ce47a262f2d238c2fd6233d97e">private_messages_list()</a>, <a class="el" href="zot_8php.html#aad25a3fe0e1566121d6fb8222979bc10">remove_community_tag()</a>, <a class="el" href="items_8php.html#ab1bce4261bcf75ad62753b498a144d17">tag_deliver()</a>, <a class="el" href="text_8php.html#af9c9ac3f74c82dc60acfa404d0e9dc53">theme_attachments()</a>, and <a class="el" href="text_8php.html#a8264348059abd1d4d5bb521323d3b19a">unobscure()</a>.</p>
+<p>Referenced by <a class="el" href="diaspora_8php.html#aeb2bb78f620dbf51d9335e6eb7444f2c">diaspora_send_mail()</a>, <a class="el" href="editpost_8php.html#a34011690864d122680c802e9e748ccfb">editpost_content()</a>, <a class="el" href="editwebpage_8php.html#a375e945255fad79a71036528f7480650">editwebpage_content()</a>, <a class="el" href="items_8php.html#a56b0f5d2cb36eb8f4bfca84813884f86">encode_item()</a>, <a class="el" href="items_8php.html#a2d840c74ed23d1b6c7daee05cf89dda7">encode_mail()</a>, <a class="el" href="conversation_8php.html#a9bd7f9fb6678736c581bcba3b17f471c">localize_item()</a>, <a class="el" href="include_2message_8php.html#a5f8de9847e203329e317ac38dc646898">private_messages_fetch_conversation()</a>, <a class="el" href="include_2message_8php.html#a254a756031e4d5e94f85e2939bdb5091">private_messages_fetch_message()</a>, <a class="el" href="include_2message_8php.html#a652973ce47a262f2d238c2fd6233d97e">private_messages_list()</a>, <a class="el" href="zot_8php.html#aad25a3fe0e1566121d6fb8222979bc10">remove_community_tag()</a>, <a class="el" href="items_8php.html#ab1bce4261bcf75ad62753b498a144d17">tag_deliver()</a>, <a class="el" href="text_8php.html#af9c9ac3f74c82dc60acfa404d0e9dc53">theme_attachments()</a>, and <a class="el" href="text_8php.html#a8264348059abd1d4d5bb521323d3b19a">unobscure()</a>.</p>
</div>
</div>
@@ -1270,7 +1420,7 @@ Variables</h2></td></tr>
<p>Compare two URLs to see if they are the same, but ignore slight but hopefully insignificant differences such as if one is https and the other isn't, or if one is www.something and the other isn't - and also ignore case differences.</p>
<p>Return true if the URLs match, otherwise false. </p>
-<p>Referenced by <a class="el" href="items_8php.html#a8794863cdf8ce1333040933d3a3f66bd">consume_feed()</a>, <a class="el" href="items_8php.html#ab1bce4261bcf75ad62753b498a144d17">tag_deliver()</a>, <a class="el" href="items_8php.html#a88c6cf7649ac836fbbed82a7a0315110">tgroup_check()</a>, and <a class="el" href="identity_8php.html#a5b815330f3d177ab383af37a6c12e532">zid()</a>.</p>
+<p>Referenced by <a class="el" href="items_8php.html#adc26e08aa61f5666da04ab5d2a9d68a6">consume_feed()</a>, <a class="el" href="diaspora_8php.html#a938c7ee808d38725c0988fa6006805b9">diaspora_retraction()</a>, <a class="el" href="items_8php.html#ab1bce4261bcf75ad62753b498a144d17">tag_deliver()</a>, <a class="el" href="items_8php.html#a88c6cf7649ac836fbbed82a7a0315110">tgroup_check()</a>, and <a class="el" href="identity_8php.html#a5b815330f3d177ab383af37a6c12e532">zid()</a>.</p>
</div>
</div>
@@ -1290,7 +1440,24 @@ Variables</h2></td></tr>
<p>Function: linkify</p>
<p>Replace naked text hyperlink with HTML formatted hyperlink </p>
-<p>Referenced by <a class="el" href="identity_8php.html#aa870d2c1f558cfd52bef05bc124e8fa4">advanced_profile()</a>, <a class="el" href="dirprofile_8php.html#a3e1d30d3d93863ff5615f2df4ac7f052">dirprofile_init()</a>, and <a class="el" href="activities_8php.html#a80134e807719b3c54aba971958d2e132">profile_activity()</a>.</p>
+<p>Referenced by <a class="el" href="identity_8php.html#aa870d2c1f558cfd52bef05bc124e8fa4">advanced_profile()</a>, <a class="el" href="mod_2directory_8php.html#aac79396570d759da2efac24fcedf5b44">directory_content()</a>, and <a class="el" href="identity_8php.html#a432259b2cf5b6f59be53e71db9f2c7dc">profile_sidebar()</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a4446c7f8996a280f7e08b7bfe6c6c8bc"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">list_smilies </td>
+ <td>(</td>
+ <td class="paramname"></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p>Referenced by <a class="el" href="text_8php.html#a3d225b253bb9e0f2498c11647d927b0b">smilies()</a>, and <a class="el" href="smilies_8php.html#ab43b1e9f33a700a830aff14c7b3a617f">smilies_content()</a>.</p>
</div>
</div>
@@ -1318,7 +1485,19 @@ Variables</h2></td></tr>
</table>
</div><div class="memdoc">
-<p>Referenced by <a class="el" href="classRedDirectory.html#a1e35e3cd31d2a15250655e4cafdea180">RedDirectory\__construct()</a>, <a class="el" href="classRedFile.html#a9a67bdb34c9db6ce144b3f371148b183">RedFile\__construct()</a>, <a class="el" href="Contact_8php.html#a6e64de7db60b7243dce45fb6347636ff">account_remove()</a>, <a class="el" href="auth_8php.html#a07bae0e623e2daa9ee2cd5a8aa294dee">account_verify_password()</a>, <a class="el" href="classItem.html#a80dcd9d0f548c3ad550abe7e6981fb51">Item\add_child()</a>, <a class="el" href="classConversation.html#a8335cdd43f1836e3c255638e61a09e16">Conversation\add_thread()</a>, <a class="el" href="admin_8php.html#afef415e4011607fbb665610441595015">admin_content()</a>, <a class="el" href="admin_8php.html#a60ba9783ad14545814919970bc3fb725">admin_page_hubloc_post()</a>, <a class="el" href="admin_8php.html#acf51f5837a7427832144c2bf7308ada3">admin_post()</a>, <a class="el" href="crypto_8php.html#a2148d7aac7b30c720f7ebda7e9790286">aes_encapsulate()</a>, <a class="el" href="zot_8php.html#a703f528ade8382cf374e4119bd6f7859">allowed_public_recips()</a>, <a class="el" href="include_2api_8php.html#a176c448d79c211ad41c2bbe3124658f5">api_call()</a>, <a class="el" href="include_2api_8php.html#a72bfecac1970bc29b853073e816388ff">api_channel_stream()</a>, <a class="el" href="include_2api_8php.html#adfc035ee6303c1d8ba5336a4ead2bd53">api_export_basic()</a>, <a class="el" href="include_2api_8php.html#a2c71b1226ef1283b5370bd1c200fee5f">api_favorites()</a>, <a class="el" href="include_2api_8php.html#aa40bae797bcd9ccacffdce5a3b5a1afa">api_get_user()</a>, <a class="el" href="include_2api_8php.html#afe534f826e4282b72d66e8cadca7bb73">api_login()</a>, <a class="el" href="include_2api_8php.html#aa1bddb580510e70cc1a7b7381667f1a3">api_oauth_request_token()</a>, <a class="el" href="include_2api_8php.html#ad4c29f43418f6110f85a6b3998239ab4">api_statuses_destroy()</a>, <a class="el" href="include_2api_8php.html#a450d8732b7b608f7ac929aee61572b95">api_statuses_mediap()</a>, <a class="el" href="include_2api_8php.html#ae0fa388479cace9c5a7a45b571ab42f8">api_statuses_repeat()</a>, <a class="el" href="include_2api_8php.html#af6f1d89cdb0a0621025efbec1597bc63">api_statuses_show()</a>, <a class="el" href="include_2api_8php.html#ad4d1634df6b35126552324683caaffa2">api_statuses_update()</a>, <a class="el" href="include_2api_8php.html#a32f0dda848d0c11c727fe1c3e741c283">api_statuses_user_timeline()</a>, <a class="el" href="include_2attach_8php.html#ab6830b3ab74a5d284876141ac80f6cbc">attach_mkdir()</a>, <a class="el" href="include_2network_8php.html#ab07ce9d75eae559865ed90aad2154bd7">avatar_img()</a>, <a class="el" href="text_8php.html#a13286f8a95d2de6b102966ecc270c8d6">base64url_decode()</a>, <a class="el" href="blogga_2view_2theme_2blog_2theme_8php.html#aae58cc837fe56473d9f3370abfe533ae">blog_install()</a>, <a class="el" href="blogga_2view_2theme_2blog_2theme_8php.html#a3e77dbe111f330c64a1ff6c741cd515c">blog_uninstall()</a>, <a class="el" href="include_2bookmarks_8php.html#aef1cb2968c41c759f2d106e1088ca323">bookmark_add()</a>, <a class="el" href="mod_2bookmarks_8php.html#a6b7942f3d27e40f0f47c88704127b9b3">bookmarks_init()</a>, <a class="el" href="zot_8php.html#ac34e479d27f32b82dd6b33542f81a6a7">build_sync_packet()</a>, <a class="el" href="include_2chanman_8php.html#a21ba9a5c961e866ff27aee3ee67bf99b">chanman_remove_everything_from_network()</a>, <a class="el" href="Contact_8php.html#a186162051a5127069cc851d78740f205">channel_remove()</a>, <a class="el" href="chanview_8php.html#a4192c6da888c8c1165851acf9ad4cb8b">chanview_content()</a>, <a class="el" href="mod_2chat_8php.html#a999d594745597c656c9760253ae297ad">chat_post()</a>, <a class="el" href="boot_8php.html#a4c02d88e66852a01bd5a1feecb7c3ce3">check_config()</a>, <a class="el" href="security_8php.html#a444ac867dfa8c37cf0a7a226412bee28">check_form_security_token_ForbiddenOnErr()</a>, <a class="el" href="security_8php.html#a77ba0d1889a39cf32434c5ce96fe1433">check_form_security_token_redirectOnErr()</a>, <a class="el" href="classRedDirectory.html#a5e3fc08b2bf9f61cea4d2ccae0495bec">RedDirectory\childExists()</a>, <a class="el" href="cloud_8php.html#a1b79a6fe0454bc76673ad9aef55bf02d">cloud_init()</a>, <a class="el" href="connedit_8php.html#a234c48426b652bf4d37053f2af329ac5">connedit_post()</a>, <a class="el" href="items_8php.html#a8794863cdf8ce1333040933d3a3f66bd">consume_feed()</a>, <a class="el" href="conversation_8php.html#affea1afb3f32ca41e966c8ddb4204d81">conversation()</a>, <a class="el" href="account_8php.html#a141fe579c351c78209d425473f978eb5">create_account()</a>, <a class="el" href="identity_8php.html#a345f4c943d84de502ec6e72d2c813945">create_identity()</a>, <a class="el" href="classRedDirectory.html#a986936910f0216887a25e28916c166c7">RedDirectory\createDirectory()</a>, <a class="el" href="classRedDirectory.html#a2d12d99d38a6a75fc9a830b2f7fc0bf0">RedDirectory\createFile()</a>, <a class="el" href="cronhooks_8php.html#a4c4c1bbec4ecc9a0efa00dd6afd2c0ca">cronhooks_run()</a>, <a class="el" href="datetime_8php.html#ad6301e74b0f9267d52f8d432b5beb226">datetime_convert()</a>, <a class="el" href="classRedFile.html#aef71c9eaac7052be7dc8602eb12171e7">RedFile\delete()</a>, <a class="el" href="zot_8php.html#adfeb9400ae6b726beec89f8f1e8fde72">delete_imported_item()</a>, <a class="el" href="deliver_8php.html#a397afcb9afecf0c1816b0951189dd346">deliver_run()</a>, <a class="el" href="language_8php.html#a632da17c7ac0d2dc1a00a4706870194b">detect_language()</a>, <a class="el" href="dirsearch_8php.html#a7d4cd9890d5ed23c3efc58e2a778a305">dir_parse_query()</a>, <a class="el" href="mod_2directory_8php.html#aac79396570d759da2efac24fcedf5b44">directory_content()</a>, <a class="el" href="include_2directory_8php.html#aa75d3b0697ca1456aaabdb37a74aa0f0">directory_run()</a>, <a class="el" href="dirprofile_8php.html#a3e1d30d3d93863ff5615f2df4ac7f052">dirprofile_init()</a>, <a class="el" href="account_8php.html#a0d183a3cb4c67a0f5e906811df7a1fc9">downgrade_accounts()</a>, <a class="el" href="include_2network_8php.html#a1ff07d9fad93b713b93da0ab77aab7f0">email_send()</a>, <a class="el" href="items_8php.html#a82955cc578f0fa600acec84475026194">encode_item()</a>, <a class="el" href="expire_8php.html#a444e45c9b67727b27db4c779fd51a298">expire_run()</a>, <a class="el" href="externals_8php.html#a4df44079e6f915286088b7a0d44db926">externals_run()</a>, <a class="el" href="feed_8php.html#af86137700b56f33d1d5f25c8dec22c04">feed_init()</a>, <a class="el" href="include_2network_8php.html#a8d5a3afb51cc932032b5dcc159efaae0">fetch_lrdd_template()</a>, <a class="el" href="filer_8php.html#a5fd5d7e61b2f9c43cb5f110c89dc4274">filer_content()</a>, <a class="el" href="filerm_8php.html#ae2eb28d2054fa2c37e38689882172208">filerm_content()</a>, <a class="el" href="items_8php.html#aba98fcbbcd7044a7e9ea34edabc14c87">fix_private_photos()</a>, <a class="el" href="boot_8php.html#aca5e42678e178c6b9034610d66666fd7">fix_system_urls()</a>, <a class="el" href="classRedFile.html#a7c868dfcef6c70cd0e24cf3caa2c3535">RedFile\get()</a>, <a class="el" href="items_8php.html#a896c1809d58f2d7a42cfe14577958ddf">get_atom_elements()</a>, <a class="el" href="items_8php.html#a536d0313b6ffe33b9d2490c4e25c5361">get_item_elements()</a>, <a class="el" href="language_8php.html#a43e6ddba9df019c9ac3ab4c94c444ae7">get_language_name()</a>, <a class="el" href="classConversation.html#a2a96b7a6573ae53db861624659e831cb">Conversation\get_template_data()</a>, <a class="el" href="classRedDirectory.html#aaa20f0f44da23781917af8170c0a2569">RedDirectory\getChild()</a>, <a class="el" href="classRedDirectory.html#aa42d3065f6f065b17db87146a7cb031a">RedDirectory\getChildren()</a>, <a class="el" href="classRedDirectory.html#a70173d4458572d95e586b2037d2fd2f4">RedDirectory\getDir()</a>, <a class="el" href="classRedDirectory.html#af6e4475dbd5abcdede00d20b8d388583">RedDirectory\getName()</a>, <a class="el" href="classRedFile.html#a0c961c5f49544d2502420361fa526437">RedFile\getName()</a>, <a class="el" href="mod_2group_8php.html#a07a64f6c65b0080d8190b3d9728a7a83">group_content()</a>, <a class="el" href="photo__driver_8php.html#a243cee492ce443afb6a7d77d54b6c4aa">guess_image_type()</a>, <a class="el" href="include_2network_8php.html#a4cfb2c05a1c295317283d762440ce0b2">http_status_exit()</a>, <a class="el" href="items_8php.html#a6bee35961f2e32905f20367a9309d627">import_author_rss()</a>, <a class="el" href="zot_8php.html#ad149f1e98c0c5b88ff9147e6ee3f330d">import_author_zot()</a>, <a class="el" href="photo__driver_8php.html#a1d0bc7161dec0d177b7d3bbe4421af9a">import_channel_photo()</a>, <a class="el" href="zot_8php.html#a20750dd2c36961013fd382fb34e1366c">import_directory_profile()</a>, <a class="el" href="import_8php.html#af17fef0410518f7eac205d0ea416eaa2">import_post()</a>, <a class="el" href="photo__driver_8php.html#a78f5a10c568d2a9bbbb129dc96548887">import_profile_photo()</a>, <a class="el" href="zot_8php.html#a2657e141d62d5f67ad3c87651b585299">import_site()</a>, <a class="el" href="zot_8php.html#a528e97ca5d69c3b7f35c5d954afde315">import_xchan()</a>, <a class="el" href="plugin_8php.html#a482131013272a1d5d5c1b1469c6c55d5">install_plugin()</a>, <a class="el" href="item_8php.html#a693cd09805755ab85bbb5ecae69a48c3">item_post()</a>, <a class="el" href="items_8php.html#a2541e6861a56d145c9281877cc501615">item_store()</a>, <a class="el" href="items_8php.html#acf0bf7c9d21ac84f32effb754f7ad484">item_store_update()</a>, <a class="el" href="like_8php.html#a9d7dd268f21c21e9d29dd2aca2dd9538">like_content()</a>, <a class="el" href="items_8php.html#af94c281016c6c912d06e064113336c5c">limit_body_size()</a>, <a class="el" href="plugin_8php.html#a9ca9632b7309a65b05c03a3e2f473a3d">load_plugin()</a>, <a class="el" href="dir__fns_8php.html#acd37b17dce3bdec6d5a6344a20598c1e">local_dir_update()</a>, <a class="el" href="conversation_8php.html#a9bd7f9fb6678736c581bcba3b17f471c">localize_item()</a>, <a class="el" href="classRedDirectory.html#a11376aed1963b4471eb1592c13c63976">RedDirectory\log()</a>, <a class="el" href="classRedBasicAuth.html#a2cc8b1eac9c5a799bfb53ea7f287f3f0">RedBasicAuth\log()</a>, <a class="el" href="classFKOAuth1.html#a2b1dac2ed31fc6ef84668afdda8b263f">FKOAuth1\loginUser()</a>, <a class="el" href="classFKOAuthDataStore.html#a1148d47b546350bf440bdd92792c5df1">FKOAuthDataStore\lookup_consumer()</a>, <a class="el" href="classFKOAuthDataStore.html#a96f76387c3a93b0abe27a98013804bab">FKOAuthDataStore\lookup_token()</a>, <a class="el" href="magic_8php.html#acea2cc792849ca2d71d4b689f66518bf">magic_init()</a>, <a class="el" href="mail_8php.html#acfc2cc0bf4e0b178207758384977f25a">mail_post()</a>, <a class="el" href="items_8php.html#a77da7ce9a117601d49ac4a67c71b514f">mail_store()</a>, <a class="el" href="include_2menu_8php.html#a6a33c6a3db2a7510b16cc656edaec571">menu_edit()</a>, <a class="el" href="include_2group_8php.html#ab0e422a0f31c0c64fd9084ca03d85f32">mini_group_select()</a>, <a class="el" href="mood_8php.html#a7ae136dd7476865b4828136175db5022">mood_init()</a>, <a class="el" href="classFKOAuthDataStore.html#a434882f03e3cdb171ed89e09e337e934">FKOAuthDataStore\new_access_token()</a>, <a class="el" href="include_2follow_8php.html#ae387d4ae097c23d69f3247e7f08140c7">new_contact()</a>, <a class="el" href="crypto_8php.html#aae0ab70d6a199b29555b1ac3cf250d6a">new_keypair()</a>, <a class="el" href="classFKOAuthDataStore.html#a431b44d70e3da6a8256ab38f710e3050">FKOAuthDataStore\new_request_token()</a>, <a class="el" href="notes_8php.html#a4dbd7b1f906440746af48b484d66535a">notes_init()</a>, <a class="el" href="enotify_8php.html#a3e9a9355b243777c488d2a9883908dfc">notification()</a>, <a class="el" href="notifier_8php.html#a568c502f626cff95e344c0748938b85d">notifier_run()</a>, <a class="el" href="onedirsync_8php.html#a411aedd47c57476099647961e6a86691">onedirsync_run()</a>, <a class="el" href="onepoll_8php.html#a72753b2fdec79b37c7f432035c91fb6d">onepoll_run()</a>, <a class="el" href="openid_8php.html#a9a13827dbcf61ae4e45f0b6b33a88f43">openid_content()</a>, <a class="el" href="parse__url_8php.html#a05a9e8944380ba3cf6bbf5893dd4b74b">parse_url_content()</a>, <a class="el" href="include_2network_8php.html#a27a951b59d8d622c0b3e7b0673ba74c6">parse_xml_string()</a>, <a class="el" href="photo_8php.html#a582779d24882b0d31ee909a91d70a448">photo_init()</a>, <a class="el" href="include_2photos_8php.html#a6c40ef58aefef705a5adc84a40e97109">photo_upload()</a>, <a class="el" href="mod_2photos_8php.html#a062bed4d04d14fee8a53f4c9be673080">photos_post()</a>, <a class="el" href="ping_8php.html#a77217b1b190b4c5d8770867b45f0c0a1">ping_init()</a>, <a class="el" href="poco_8php.html#a53def16f75e3d41f1d2bb7cfa4905498">poco_init()</a>, <a class="el" href="socgraph_8php.html#a5ef8bef37161df53718a21e93d02fbd6">poco_load()</a>, <a class="el" href="poke_8php.html#a9725aab97b3983e6a98bd81c4efe7d3b">poke_init()</a>, <a class="el" href="poller_8php.html#a5f12df3a4738124b6c039971e87e76da">poller_run()</a>, <a class="el" href="items_8php.html#a410f9c743877c125ca06312373346903">post_activity_item()</a>, <a class="el" href="post_8php.html#af4b48181ce773ef0cdfc972441445c34">post_init()</a>, <a class="el" href="post_8php.html#af59e6a1dc22d19d9257b01cd7ccedb75">post_post()</a>, <a class="el" href="include_2message_8php.html#a652973ce47a262f2d238c2fd6233d97e">private_messages_list()</a>, <a class="el" href="zot_8php.html#ac301c67864917c35922257950ae0f95c">process_channel_sync_delivery()</a>, <a class="el" href="zot_8php.html#a4d9e6ca295e443b740d9960c304b3474">process_delivery()</a>, <a class="el" href="zot_8php.html#aa6ae96db8cbbdbb10e6876d206bbf7cc">process_mail_delivery()</a>, <a class="el" href="zot_8php.html#a9a57b40669351c9791126b925cb7ef3b">process_profile_delivery()</a>, <a class="el" href="identity_8php.html#a4751b522ea913d0e7ed43e03d22e9e68">profile_load()</a>, <a class="el" href="profile__photo_8php.html#a561103564199da56e58061a4196eb102">profile_photo_set_profile_perms()</a>, <a class="el" href="identity_8php.html#a432259b2cf5b6f59be53e71db9f2c7dc">profile_sidebar()</a>, <a class="el" href="hubloc_8php.html#ad3d0dcfcfcb347744f7617fe6f5de002">prune_hub_reinstalls()</a>, <a class="el" href="zot_8php.html#a083aec6c900d244e1bfc1406f9461465">public_recips()</a>, <a class="el" href="classRedFile.html#a41a49a583eb276b75626fcf97f4a699c">RedFile\put()</a>, <a class="el" href="classdba__mysql.html#ac3fd60c278f400907322dac578754a99">dba_mysql\q()</a>, <a class="el" href="classdba__mysqli.html#a611c4de8d6d7512dffb83a38bb6701ec">dba_mysqli\q()</a>, <a class="el" href="dba__driver_8php.html#a2c09a731d3b4fef41fed0e83db01be1f">q()</a>, <a class="el" href="queue_8php.html#af8c93de86d866c3200174c8450a0f341">queue_run()</a>, <a class="el" href="rbmark_8php.html#ac5a66aa8599fa5dc702bae396d8d1f8c">rbmark_post()</a>, <a class="el" href="include_2api_8php.html#aafa82b65a9f879a1a1197cfe8aaf3898">red_item_new()</a>, <a class="el" href="reddav_8php.html#ae92ea0df1993f6a7bcd1b6efa6c1fb66">RedChannelList()</a>, <a class="el" href="reddav_8php.html#a5df0d09893f2e65dc5cf6bbab6cfb266">RedCollectionData()</a>, <a class="el" href="reddav_8php.html#a9f531641dfb4e43cd88ac1a9ae7e2088">RedFileData()</a>, <a class="el" href="register_8php.html#a0e91f57f111407ea8d3223a05022bb2a">register_content()</a>, <a class="el" href="plugin_8php.html#af9ac19004dca49adae1ac7a0d9f3b025">reload_plugins()</a>, <a class="el" href="classItem.html#a2ce70ef63f9f4d86a09c351678806925">Item\remove_child()</a>, <a class="el" href="zot_8php.html#aad25a3fe0e1566121d6fb8222979bc10">remove_community_tag()</a>, <a class="el" href="queue__fn_8php.html#a8fe71e981399bbf5d000a6ca42f57b24">remove_queue_item()</a>, <a class="el" href="include_2network_8php.html#ae8d9c41a11000fb8667039fc71b4f73f">scale_external_images()</a>, <a class="el" href="search__ac_8php.html#a14f90c83a3f2be095e9e2992a8d66138">search_ac_init()</a>, <a class="el" href="classenotify.html#afbc088860f534c6c05788b48cfc262c6">enotify\send()</a>, <a class="el" href="account_8php.html#a014de2d5d5c9785de5bf547a485822fa">send_reg_approval_email()</a>, <a class="el" href="classConversation.html#a66f121ca4026246f86a732e5faa0682c">Conversation\set_mode()</a>, <a class="el" href="classRedDirectory.html#adc48035679e52c55d9881f83de535553">RedDirectory\setName()</a>, <a class="el" href="classRedFile.html#a38a82bfc1b30028ea6ac75923e90fa25">RedFile\setName()</a>, <a class="el" href="security_8php.html#a6126c77a1267e046ac59cf864613f011">stream_perms_api_uids()</a>, <a class="el" href="security_8php.html#a3ef2be6a7e4928e39d50059d6feb457c">stream_perms_xchans()</a>, <a class="el" href="subthread_8php.html#a50368f3d825b77996030528e7fbfa3d3">subthread_content()</a>, <a class="el" href="dir__fns_8php.html#aa666e7df6ca8c332f4081c9b66b4bdf6">sync_directories()</a>, <a class="el" href="items_8php.html#ab1bce4261bcf75ad62753b498a144d17">tag_deliver()</a>, <a class="el" href="tagger_8php.html#a0e4a3eb177d1684553c547503d67161c">tagger_content()</a>, <a class="el" href="items_8php.html#a88c6cf7649ac836fbbed82a7a0315110">tgroup_check()</a>, <a class="el" href="plugin_8php.html#a093a9cb98f51e3643634bd8bc6ed6e76">uninstall_plugin()</a>, <a class="el" href="plugin_8php.html#a90538627db68605aeb6db17a8ead6523">unload_plugin()</a>, <a class="el" href="dir__fns_8php.html#a44062d4b471d1e83f92f6c184585aa13">update_directory_entry()</a>, <a class="el" href="zot_8php.html#a31aad56acf8ff8f2353e6ff8595544df">update_imported_item()</a>, <a class="el" href="queue__fn_8php.html#a4c2876181f75a4a61e85b7f00dfdbba1">update_queue_time()</a>, <a class="el" href="classRedBasicAuth.html#a8dfd9a0953f8884723b421b7c1acf79b">RedBasicAuth\validateUserPass()</a>, <a class="el" href="account_8php.html#acd6b8d2124ba5ea4f4794d2c58ae8bf5">verify_email_address()</a>, <a class="el" href="include_2network_8php.html#a8122356933bcd6b0a8567e8e15ae5cc5">webfinger()</a>, <a class="el" href="include_2network_8php.html#adf6008b38c555e98e7ed10da9ede2335">webfinger_dfrn()</a>, <a class="el" href="include_2network_8php.html#a99353baabbc3e0584b85eb79ee802cff">xml2array()</a>, <a class="el" href="include_2network_8php.html#a9e9da2aafb806c98ecdc318604e60dc6">xml_status()</a>, <a class="el" href="include_2network_8php.html#aafd06c0a75402aefb06cfb9f9740fa37">z_fetch_url()</a>, <a class="el" href="include_2network_8php.html#a9129fd55e7fc175b4ea9a195cccc16bc">z_post_url()</a>, <a class="el" href="zfinger_8php.html#a8139b83a22ef98869adc10aa224027a0">zfinger_init()</a>, <a class="el" href="identity_8php.html#a680fbafc2db023c5b1309e0180e81315">zid_init()</a>, <a class="el" href="zot_8php.html#a3862b3161b2c8557dc1a95020179bd81">zot_build_packet()</a>, <a class="el" href="items_8php.html#a004e89d86b0f29b2c4da20108ecc4091">zot_feed()</a>, <a class="el" href="zot_8php.html#a61cdc1ec843663c423ed2d8160ae5aea">zot_fetch()</a>, <a class="el" href="zot_8php.html#a95528377d7303131958c9f0b7158fdce">zot_finger()</a>, <a class="el" href="zot_8php.html#a55056e863a7860bc0cf922e78fcce073">zot_gethub()</a>, <a class="el" href="zot_8php.html#aeea071f17e306fe3d0c488551906bfab">zot_import()</a>, <a class="el" href="zot_8php.html#a928f5643ca66ae9635d85aeb2be62e03">zot_process_response()</a>, <a class="el" href="zot_8php.html#a7ac30ff51274bf0b6d3eade37972145c">zot_refresh()</a>, <a class="el" href="zot_8php.html#a5bcdfef419b16075a0eca990956223dc">zot_register_hub()</a>, and <a class="el" href="zotfeed_8php.html#a24dfc23d366e7f840cf2847d0c1c8eac">zotfeed_init()</a>.</p>
+<p>Logging function for <a class="el" href="namespaceRedMatrix.html" title="Class Import.">RedMatrix</a>. </p>
+<p>Logging output is configured through <a class="el" href="namespaceRedMatrix.html" title="Class Import.">RedMatrix</a>'s system config. The log file is set in system logfile, log level in system loglevel and to enable logging set system debugging.</p>
+<p>Available constants for log level are LOGGER_NORMAL, LOGGER_TRACE, LOGGER_DEBUG, LOGGER_DATA and LOGGER_ALL.</p>
+<p>Since PHP5.4 we get the file, function and line automatically where the logger was caleld, so no need to add it to the message anymore.</p>
+<dl class="params"><dt>Parameters</dt><dd>
+ <table class="params">
+ <tr><td class="paramtype">string</td><td class="paramname">$msg</td><td>Message to log </td></tr>
+ <tr><td class="paramtype">int</td><td class="paramname">$level</td><td>A log level. </td></tr>
+ </table>
+ </dd>
+</dl>
+
+<p>Referenced by <a class="el" href="Contact_8php.html#a5101d7eca5d6f387e5555f03fe249e33">account_remove()</a>, <a class="el" href="auth_8php.html#a07bae0e623e2daa9ee2cd5a8aa294dee">account_verify_password()</a>, <a class="el" href="classItem.html#a80dcd9d0f548c3ad550abe7e6981fb51">Item\add_child()</a>, <a class="el" href="classConversation.html#a8335cdd43f1836e3c255638e61a09e16">Conversation\add_thread()</a>, <a class="el" href="admin_8php.html#afef415e4011607fbb665610441595015">admin_content()</a>, <a class="el" href="admin_8php.html#a60ba9783ad14545814919970bc3fb725">admin_page_hubloc_post()</a>, <a class="el" href="admin_8php.html#acf51f5837a7427832144c2bf7308ada3">admin_post()</a>, <a class="el" href="crypto_8php.html#a2148d7aac7b30c720f7ebda7e9790286">aes_encapsulate()</a>, <a class="el" href="zot_8php.html#a703f528ade8382cf374e4119bd6f7859">allowed_public_recips()</a>, <a class="el" href="include_2api_8php.html#a176c448d79c211ad41c2bbe3124658f5">api_call()</a>, <a class="el" href="include_2api_8php.html#a72bfecac1970bc29b853073e816388ff">api_channel_stream()</a>, <a class="el" href="include_2api_8php.html#adfc035ee6303c1d8ba5336a4ead2bd53">api_export_basic()</a>, <a class="el" href="include_2api_8php.html#a2c71b1226ef1283b5370bd1c200fee5f">api_favorites()</a>, <a class="el" href="include_2api_8php.html#aa40bae797bcd9ccacffdce5a3b5a1afa">api_get_user()</a>, <a class="el" href="include_2api_8php.html#afe534f826e4282b72d66e8cadca7bb73">api_login()</a>, <a class="el" href="include_2api_8php.html#aa1bddb580510e70cc1a7b7381667f1a3">api_oauth_request_token()</a>, <a class="el" href="include_2api_8php.html#ad4c29f43418f6110f85a6b3998239ab4">api_statuses_destroy()</a>, <a class="el" href="include_2api_8php.html#a450d8732b7b608f7ac929aee61572b95">api_statuses_mediap()</a>, <a class="el" href="include_2api_8php.html#ae0fa388479cace9c5a7a45b571ab42f8">api_statuses_repeat()</a>, <a class="el" href="include_2api_8php.html#af6f1d89cdb0a0621025efbec1597bc63">api_statuses_show()</a>, <a class="el" href="include_2api_8php.html#ad4d1634df6b35126552324683caaffa2">api_statuses_update()</a>, <a class="el" href="include_2api_8php.html#a32f0dda848d0c11c727fe1c3e741c283">api_statuses_user_timeline()</a>, <a class="el" href="include_2attach_8php.html#ab6830b3ab74a5d284876141ac80f6cbc">attach_mkdir()</a>, <a class="el" href="include_2network_8php.html#ab07ce9d75eae559865ed90aad2154bd7">avatar_img()</a>, <a class="el" href="text_8php.html#a13286f8a95d2de6b102966ecc270c8d6">base64url_decode()</a>, <a class="el" href="bb2diaspora_8php.html#ab27761069ea1275f0fc4c543099c5519">bb2diaspora_itembody()</a>, <a class="el" href="bb2diaspora_8php.html#aab32042f8bd63552d3fadeeae9eab083">bb2diaspora_itemwallwall()</a>, <a class="el" href="include_2bookmarks_8php.html#aef1cb2968c41c759f2d106e1088ca323">bookmark_add()</a>, <a class="el" href="mod_2bookmarks_8php.html#a6b7942f3d27e40f0f47c88704127b9b3">bookmarks_init()</a>, <a class="el" href="zot_8php.html#aa97b33b619dd7132a9274f852af6ceb5">build_sync_packet()</a>, <a class="el" href="Contact_8php.html#a4e8af0f0525161da74583c04b8b03097">channel_remove()</a>, <a class="el" href="chanview_8php.html#a4192c6da888c8c1165851acf9ad4cb8b">chanview_content()</a>, <a class="el" href="mod_2chat_8php.html#a999d594745597c656c9760253ae297ad">chat_post()</a>, <a class="el" href="boot_8php.html#a4c02d88e66852a01bd5a1feecb7c3ce3">check_config()</a>, <a class="el" href="security_8php.html#a444ac867dfa8c37cf0a7a226412bee28">check_form_security_token_ForbiddenOnErr()</a>, <a class="el" href="security_8php.html#a77ba0d1889a39cf32434c5ce96fe1433">check_form_security_token_redirectOnErr()</a>, <a class="el" href="cloud_8php.html#ad2e96e917852f27dedfc263d37e13756">cloud_init()</a>, <a class="el" href="connedit_8php.html#a234c48426b652bf4d37053f2af329ac5">connedit_post()</a>, <a class="el" href="items_8php.html#adc26e08aa61f5666da04ab5d2a9d68a6">consume_feed()</a>, <a class="el" href="conversation_8php.html#affea1afb3f32ca41e966c8ddb4204d81">conversation()</a>, <a class="el" href="account_8php.html#a141fe579c351c78209d425473f978eb5">create_account()</a>, <a class="el" href="identity_8php.html#a345f4c943d84de502ec6e72d2c813945">create_identity()</a>, <a class="el" href="classRedMatrix_1_1RedDAV_1_1RedDirectory.html#aca0e8d574ea66a0e210f571700663c62">RedMatrix\RedDAV\RedDirectory\createDirectory()</a>, <a class="el" href="classRedMatrix_1_1RedDAV_1_1RedDirectory.html#a58e750256cdc2f0f79fbe8d5463ffefe">RedMatrix\RedDAV\RedDirectory\createFile()</a>, <a class="el" href="cronhooks_8php.html#a4c4c1bbec4ecc9a0efa00dd6afd2c0ca">cronhooks_run()</a>, <a class="el" href="datetime_8php.html#ad6301e74b0f9267d52f8d432b5beb226">datetime_convert()</a>, <a class="el" href="classRedMatrix_1_1RedDAV_1_1RedFile.html#ab7ab7ba81fab28eb02382cfdfd80ecfe">RedMatrix\RedDAV\RedFile\delete()</a>, <a class="el" href="zot_8php.html#adfeb9400ae6b726beec89f8f1e8fde72">delete_imported_item()</a>, <a class="el" href="deliver_8php.html#a397afcb9afecf0c1816b0951189dd346">deliver_run()</a>, <a class="el" href="language_8php.html#a632da17c7ac0d2dc1a00a4706870194b">detect_language()</a>, <a class="el" href="diaspora_8php.html#a006731620a5242d410358b32678e48e3">diaspora_asphoto()</a>, <a class="el" href="diaspora_8php.html#a0fb2abe304aae19efc040a5e6b917829">diaspora_comment()</a>, <a class="el" href="diaspora_8php.html#adef30b6fac948baedcc7194d5d155b5f">diaspora_conversation()</a>, <a class="el" href="diaspora_8php.html#a849754ec369e1a60fadae5c14584ca36">diaspora_decode()</a>, <a class="el" href="diaspora_8php.html#a6f0a67b6b17503c125af32763be931b7">diaspora_dispatch()</a>, <a class="el" href="diaspora_8php.html#ab99505944728d46585b8312989de533d">diaspora_dispatch_public()</a>, <a class="el" href="diaspora_8php.html#a5ed66b910d7b0284f9b3ee04e72306ff">diaspora_handle_from_contact()</a>, <a class="el" href="diaspora_8php.html#a858f70153c384f8778082cf7843a19da">diaspora_is_blacklisted()</a>, <a class="el" href="diaspora_8php.html#a5d57518545baa31cf8a85a937a267681">diaspora_like()</a>, <a class="el" href="diaspora_8php.html#a7cff2f8f11044c1b3a360f20e1bbee46">diaspora_message()</a>, <a class="el" href="diaspora_8php.html#a4901762cba5cd8dcdc57bdf285eefb1b">diaspora_msg_build()</a>, <a class="el" href="diaspora_8php.html#a71fe9bb66626b4197ae018a230778bb2">diaspora_photo()</a>, <a class="el" href="diaspora_8php.html#a20b968d64ef26afe5cb0cc75a7570a31">diaspora_post()</a>, <a class="el" href="diaspora_8php.html#a131abd521b218d6ae6f7d2917d8b2605">diaspora_process_outbound()</a>, <a class="el" href="diaspora_8php.html#a900abf51398b2ef26cd2cd31c52f1b0f">diaspora_profile()</a>, <a class="el" href="diaspora_8php.html#a586d5a3ba92d35cee14f879f290072aa">diaspora_pubmsg_build()</a>, <a class="el" href="diaspora_8php.html#ac1ab782a34552a7c6b4dc961754ed598">diaspora_request()</a>, <a class="el" href="diaspora_8php.html#a2bf43f6b5890897f425ef4325d34b007">diaspora_reshare()</a>, <a class="el" href="diaspora_8php.html#af4698b165766f83d89ec1ea964bc92cc">diaspora_send_followup()</a>, <a class="el" href="diaspora_8php.html#ae6f52efd81fe515cd9912bc8293abf5b">diaspora_send_images()</a>, <a class="el" href="diaspora_8php.html#aeb2bb78f620dbf51d9335e6eb7444f2c">diaspora_send_mail()</a>, <a class="el" href="diaspora_8php.html#a0b3628a5e53332c3d3196b689fe2b94d">diaspora_send_relay()</a>, <a class="el" href="diaspora_8php.html#a33ae0c4606a7df4d801c05507d87f668">diaspora_send_status()</a>, <a class="el" href="diaspora_8php.html#a69f250b078a46e405647428ec3399a16">diaspora_share()</a>, <a class="el" href="diaspora_8php.html#aa34d2748bb97e9e193cacd572f335055">diaspora_signed_retraction()</a>, <a class="el" href="diaspora_8php.html#aa704d6aa2ac77be345c0f501168e6e56">diaspora_transmit()</a>, <a class="el" href="dirsearch_8php.html#a7d4cd9890d5ed23c3efc58e2a778a305">dir_parse_query()</a>, <a class="el" href="mod_2directory_8php.html#aac79396570d759da2efac24fcedf5b44">directory_content()</a>, <a class="el" href="include_2directory_8php.html#aa75d3b0697ca1456aaabdb37a74aa0f0">directory_run()</a>, <a class="el" href="include_2network_8php.html#a5176176ddc1906d91f186df6fbd87b48">discover_by_url()</a>, <a class="el" href="include_2network_8php.html#a63e62946e194928eb17c5a9f2bbef0fe">discover_by_webbie()</a>, <a class="el" href="account_8php.html#a0d183a3cb4c67a0f5e906811df7a1fc9">downgrade_accounts()</a>, <a class="el" href="include_2network_8php.html#a1ff07d9fad93b713b93da0ab77aab7f0">email_send()</a>, <a class="el" href="items_8php.html#a56b0f5d2cb36eb8f4bfca84813884f86">encode_item()</a>, <a class="el" href="expire_8php.html#a444e45c9b67727b27db4c779fd51a298">expire_run()</a>, <a class="el" href="externals_8php.html#a4df44079e6f915286088b7a0d44db926">externals_run()</a>, <a class="el" href="feed_8php.html#af86137700b56f33d1d5f25c8dec22c04">feed_init()</a>, <a class="el" href="include_2network_8php.html#a8d5a3afb51cc932032b5dcc159efaae0">fetch_lrdd_template()</a>, <a class="el" href="include_2network_8php.html#a850ed5307c6a18076f4b80addc99602d">fetch_xrd_links()</a>, <a class="el" href="filer_8php.html#a5fd5d7e61b2f9c43cb5f110c89dc4274">filer_content()</a>, <a class="el" href="filerm_8php.html#ae2eb28d2054fa2c37e38689882172208">filerm_content()</a>, <a class="el" href="diaspora_8php.html#aade0c165fcdded71352c7a67bf6ce37b">find_diaspora_person_by_handle()</a>, <a class="el" href="items_8php.html#aba98fcbbcd7044a7e9ea34edabc14c87">fix_private_photos()</a>, <a class="el" href="boot_8php.html#aca5e42678e178c6b9034610d66666fd7">fix_system_urls()</a>, <a class="el" href="classRedMatrix_1_1RedDAV_1_1RedFile.html#a7241beecd01f5bb4e74659863dd85bd8">RedMatrix\RedDAV\RedFile\get()</a>, <a class="el" href="items_8php.html#a5e5be7bf1f8257dec0b2647e60a3f3f1">get_atom_elements()</a>, <a class="el" href="diaspora_8php.html#a9bf7ef4094e0e14f6e2b7fe76ab7ad2e">get_diaspora_key()</a>, <a class="el" href="diaspora_8php.html#ac9e41e46626dc608204bf4b5e16e62d7">get_diaspora_reshare_xml()</a>, <a class="el" href="items_8php.html#a536d0313b6ffe33b9d2490c4e25c5361">get_item_elements()</a>, <a class="el" href="classConversation.html#a2a96b7a6573ae53db861624659e831cb">Conversation\get_template_data()</a>, <a class="el" href="classRedMatrix_1_1RedDAV_1_1RedDirectory.html#a1a37850bdd1f188abd6160559698d5d7">RedMatrix\RedDAV\RedDirectory\getChild()</a>, <a class="el" href="classRedMatrix_1_1RedDAV_1_1RedDirectory.html#a825dc5f3e0f83f50736c16daa6a4809d">RedMatrix\RedDAV\RedDirectory\getDir()</a>, <a class="el" href="mod_2group_8php.html#a07a64f6c65b0080d8190b3d9728a7a83">group_content()</a>, <a class="el" href="photo__driver_8php.html#a243cee492ce443afb6a7d77d54b6c4aa">guess_image_type()</a>, <a class="el" href="include_2network_8php.html#a4cfb2c05a1c295317283d762440ce0b2">http_status_exit()</a>, <a class="el" href="hubloc_8php.html#ad86214b3a74084bd7b54e8d6c919ce4d">hubloc_change_primary()</a>, <a class="el" href="impel_8php.html#ab7db6fca43b42ea4332cb3e841b3cf7b">impel_init()</a>, <a class="el" href="items_8php.html#a6bee35961f2e32905f20367a9309d627">import_author_rss()</a>, <a class="el" href="items_8php.html#a37f79991f36811cf847446ff60e8e11f">import_author_unknown()</a>, <a class="el" href="zot_8php.html#ad149f1e98c0c5b88ff9147e6ee3f330d">import_author_zot()</a>, <a class="el" href="photo__driver_8php.html#a1d0bc7161dec0d177b7d3bbe4421af9a">import_channel_photo()</a>, <a class="el" href="zot_8php.html#a20750dd2c36961013fd382fb34e1366c">import_directory_profile()</a>, <a class="el" href="import_8php.html#af17fef0410518f7eac205d0ea416eaa2">import_post()</a>, <a class="el" href="photo__driver_8php.html#a78f5a10c568d2a9bbbb129dc96548887">import_profile_photo()</a>, <a class="el" href="zot_8php.html#a2657e141d62d5f67ad3c87651b585299">import_site()</a>, <a class="el" href="zot_8php.html#a528e97ca5d69c3b7f35c5d954afde315">import_xchan()</a>, <a class="el" href="plugin_8php.html#a482131013272a1d5d5c1b1469c6c55d5">install_plugin()</a>, <a class="el" href="item_8php.html#a693cd09805755ab85bbb5ecae69a48c3">item_post()</a>, <a class="el" href="items_8php.html#a2541e6861a56d145c9281877cc501615">item_store()</a>, <a class="el" href="items_8php.html#acf0bf7c9d21ac84f32effb754f7ad484">item_store_update()</a>, <a class="el" href="like_8php.html#a9d7dd268f21c21e9d29dd2aca2dd9538">like_content()</a>, <a class="el" href="items_8php.html#af94c281016c6c912d06e064113336c5c">limit_body_size()</a>, <a class="el" href="plugin_8php.html#a9ca9632b7309a65b05c03a3e2f473a3d">load_plugin()</a>, <a class="el" href="dir__fns_8php.html#acd37b17dce3bdec6d5a6344a20598c1e">local_dir_update()</a>, <a class="el" href="conversation_8php.html#a9bd7f9fb6678736c581bcba3b17f471c">localize_item()</a>, <a class="el" href="classRedMatrix_1_1RedDAV_1_1RedDirectory.html#af90a1a74cfd643a5c56b9a17ea250d59">RedMatrix\RedDAV\RedDirectory\log()</a>, <a class="el" href="classRedMatrix_1_1RedDAV_1_1RedBasicAuth.html#abf6fe89b0a8239ed93c3b07e1fbce75b">RedMatrix\RedDAV\RedBasicAuth\log()</a>, <a class="el" href="classFKOAuth1.html#a2b1dac2ed31fc6ef84668afdda8b263f">FKOAuth1\loginUser()</a>, <a class="el" href="classFKOAuthDataStore.html#a1148d47b546350bf440bdd92792c5df1">FKOAuthDataStore\lookup_consumer()</a>, <a class="el" href="classFKOAuthDataStore.html#a96f76387c3a93b0abe27a98013804bab">FKOAuthDataStore\lookup_token()</a>, <a class="el" href="magic_8php.html#acea2cc792849ca2d71d4b689f66518bf">magic_init()</a>, <a class="el" href="mail_8php.html#acfc2cc0bf4e0b178207758384977f25a">mail_post()</a>, <a class="el" href="items_8php.html#a77da7ce9a117601d49ac4a67c71b514f">mail_store()</a>, <a class="el" href="include_2menu_8php.html#a6a33c6a3db2a7510b16cc656edaec571">menu_edit()</a>, <a class="el" href="include_2group_8php.html#ab0e422a0f31c0c64fd9084ca03d85f32">mini_group_select()</a>, <a class="el" href="mood_8php.html#a7ae136dd7476865b4828136175db5022">mood_init()</a>, <a class="el" href="classFKOAuthDataStore.html#a434882f03e3cdb171ed89e09e337e934">FKOAuthDataStore\new_access_token()</a>, <a class="el" href="include_2follow_8php.html#ae387d4ae097c23d69f3247e7f08140c7">new_contact()</a>, <a class="el" href="crypto_8php.html#aae0ab70d6a199b29555b1ac3cf250d6a">new_keypair()</a>, <a class="el" href="classFKOAuthDataStore.html#a431b44d70e3da6a8256ab38f710e3050">FKOAuthDataStore\new_request_token()</a>, <a class="el" href="notes_8php.html#a4dbd7b1f906440746af48b484d66535a">notes_init()</a>, <a class="el" href="enotify_8php.html#a3e9a9355b243777c488d2a9883908dfc">notification()</a>, <a class="el" href="notifier_8php.html#a568c502f626cff95e344c0748938b85d">notifier_run()</a>, <a class="el" href="include_2network_8php.html#a872bbe72d23826c64c9e0f822180a3ec">old_webfinger()</a>, <a class="el" href="onedirsync_8php.html#a411aedd47c57476099647961e6a86691">onedirsync_run()</a>, <a class="el" href="onepoll_8php.html#a72753b2fdec79b37c7f432035c91fb6d">onepoll_run()</a>, <a class="el" href="openid_8php.html#a9a13827dbcf61ae4e45f0b6b33a88f43">openid_content()</a>, <a class="el" href="parse__url_8php.html#a05a9e8944380ba3cf6bbf5893dd4b74b">parse_url_content()</a>, <a class="el" href="include_2network_8php.html#a27a951b59d8d622c0b3e7b0673ba74c6">parse_xml_string()</a>, <a class="el" href="photo_8php.html#a582779d24882b0d31ee909a91d70a448">photo_init()</a>, <a class="el" href="include_2photos_8php.html#a6c40ef58aefef705a5adc84a40e97109">photo_upload()</a>, <a class="el" href="mod_2photos_8php.html#aa87382611a66ec5effdb2d78f13f5812">photos_content()</a>, <a class="el" href="mod_2photos_8php.html#a062bed4d04d14fee8a53f4c9be673080">photos_post()</a>, <a class="el" href="ping_8php.html#a77217b1b190b4c5d8770867b45f0c0a1">ping_init()</a>, <a class="el" href="poco_8php.html#a53def16f75e3d41f1d2bb7cfa4905498">poco_init()</a>, <a class="el" href="socgraph_8php.html#a5ef8bef37161df53718a21e93d02fbd6">poco_load()</a>, <a class="el" href="poke_8php.html#a9725aab97b3983e6a98bd81c4efe7d3b">poke_init()</a>, <a class="el" href="poller_8php.html#a5f12df3a4738124b6c039971e87e76da">poller_run()</a>, <a class="el" href="items_8php.html#a410f9c743877c125ca06312373346903">post_activity_item()</a>, <a class="el" href="post_8php.html#af4b48181ce773ef0cdfc972441445c34">post_init()</a>, <a class="el" href="post_8php.html#af59e6a1dc22d19d9257b01cd7ccedb75">post_post()</a>, <a class="el" href="zot_8php.html#ac301c67864917c35922257950ae0f95c">process_channel_sync_delivery()</a>, <a class="el" href="zot_8php.html#a0e3006e7a456b2175a9badc96bc5176d">process_delivery()</a>, <a class="el" href="zot_8php.html#a8eeefdb0dad4c436bea9d1c06c0a7988">process_location_delivery()</a>, <a class="el" href="zot_8php.html#aa6ae96db8cbbdbb10e6876d206bbf7cc">process_mail_delivery()</a>, <a class="el" href="zot_8php.html#a9a57b40669351c9791126b925cb7ef3b">process_profile_delivery()</a>, <a class="el" href="identity_8php.html#a4751b522ea913d0e7ed43e03d22e9e68">profile_load()</a>, <a class="el" href="profile__photo_8php.html#a561103564199da56e58061a4196eb102">profile_photo_set_profile_perms()</a>, <a class="el" href="identity_8php.html#a432259b2cf5b6f59be53e71db9f2c7dc">profile_sidebar()</a>, <a class="el" href="hubloc_8php.html#ad3d0dcfcfcb347744f7617fe6f5de002">prune_hub_reinstalls()</a>, <a class="el" href="zot_8php.html#a083aec6c900d244e1bfc1406f9461465">public_recips()</a>, <a class="el" href="classRedMatrix_1_1RedDAV_1_1RedFile.html#a709ec1288d21ddf1353524435ab916f0">RedMatrix\RedDAV\RedFile\put()</a>, <a class="el" href="classdba__mysql.html#ac3fd60c278f400907322dac578754a99">dba_mysql\q()</a>, <a class="el" href="classdba__mysqli.html#a611c4de8d6d7512dffb83a38bb6701ec">dba_mysqli\q()</a>, <a class="el" href="classdba__postgres.html#a70352880231fba0b859f82cd5b290a9a">dba_postgres\q()</a>, <a class="el" href="queue_8php.html#af8c93de86d866c3200174c8450a0f341">queue_run()</a>, <a class="el" href="Contact_8php.html#a7e3f5bef8ea1d2bf8434c9be36a2b713">random_profile()</a>, <a class="el" href="rbmark_8php.html#ac5a66aa8599fa5dc702bae396d8d1f8c">rbmark_post()</a>, <a class="el" href="receive_8php.html#a03d8fa26e77844020ba5602deca7d494">receive_post()</a>, <a class="el" href="include_2api_8php.html#aafa82b65a9f879a1a1197cfe8aaf3898">red_item_new()</a>, <a class="el" href="reddav_8php.html#ae92ea0df1993f6a7bcd1b6efa6c1fb66">RedChannelList()</a>, <a class="el" href="reddav_8php.html#a5df0d09893f2e65dc5cf6bbab6cfb266">RedCollectionData()</a>, <a class="el" href="reddav_8php.html#a9f531641dfb4e43cd88ac1a9ae7e2088">RedFileData()</a>, <a class="el" href="register_8php.html#a0e91f57f111407ea8d3223a05022bb2a">register_content()</a>, <a class="el" href="plugin_8php.html#af9ac19004dca49adae1ac7a0d9f3b025">reload_plugins()</a>, <a class="el" href="classItem.html#a2ce70ef63f9f4d86a09c351678806925">Item\remove_child()</a>, <a class="el" href="zot_8php.html#aad25a3fe0e1566121d6fb8222979bc10">remove_community_tag()</a>, <a class="el" href="hubloc_8php.html#a84c79b7be352f62d12fe4fa2c80fc6ea">remove_obsolete_hublocs()</a>, <a class="el" href="queue__fn_8php.html#a8fe71e981399bbf5d000a6ca42f57b24">remove_queue_item()</a>, <a class="el" href="include_2network_8php.html#ae8d9c41a11000fb8667039fc71b4f73f">scale_external_images()</a>, <a class="el" href="include_2network_8php.html#a316f318167a039c89719afbd129a8f3c">scrape_feed()</a>, <a class="el" href="include_2network_8php.html#acb0bd7f5fe38ff1eaebeae3284525070">scrape_vcard()</a>, <a class="el" href="search__ac_8php.html#a14f90c83a3f2be095e9e2992a8d66138">search_ac_init()</a>, <a class="el" href="classenotify.html#afbc088860f534c6c05788b48cfc262c6">enotify\send()</a>, <a class="el" href="account_8php.html#a014de2d5d5c9785de5bf547a485822fa">send_reg_approval_email()</a>, <a class="el" href="classConversation.html#a66f121ca4026246f86a732e5faa0682c">Conversation\set_mode()</a>, <a class="el" href="classRedMatrix_1_1RedDAV_1_1RedFile.html#a0350cb4e0327e1f9922869a48ee04f1d">RedMatrix\RedDAV\RedFile\setName()</a>, <a class="el" href="classRedMatrix_1_1RedDAV_1_1RedDirectory.html#a14ac61d31a031d139956763db4e03956">RedMatrix\RedDAV\RedDirectory\setName()</a>, <a class="el" href="settings_8php.html#aa7ee94d88ac088edb04ccf3a26de3586">settings_post()</a>, <a class="el" href="items_8php.html#adf2b8137dc4ad9ec958de2842f16f3c2">start_delivery_chain()</a>, <a class="el" href="items_8php.html#a25221826fa4621f523c68483e3b6af26">store_diaspora_comment_sig()</a>, <a class="el" href="security_8php.html#a6126c77a1267e046ac59cf864613f011">stream_perms_api_uids()</a>, <a class="el" href="security_8php.html#a3ef2be6a7e4928e39d50059d6feb457c">stream_perms_xchans()</a>, <a class="el" href="subthread_8php.html#a50368f3d825b77996030528e7fbfa3d3">subthread_content()</a>, <a class="el" href="dir__fns_8php.html#aa666e7df6ca8c332f4081c9b66b4bdf6">sync_directories()</a>, <a class="el" href="zot_8php.html#ab15c04e7e5f44edf45ec50dd7d183254">sync_locations()</a>, <a class="el" href="items_8php.html#ab1bce4261bcf75ad62753b498a144d17">tag_deliver()</a>, <a class="el" href="tagger_8php.html#a0e4a3eb177d1684553c547503d67161c">tagger_content()</a>, <a class="el" href="items_8php.html#a88c6cf7649ac836fbbed82a7a0315110">tgroup_check()</a>, <a class="el" href="plugin_8php.html#a093a9cb98f51e3643634bd8bc6ed6e76">uninstall_plugin()</a>, <a class="el" href="plugin_8php.html#a90538627db68605aeb6db17a8ead6523">unload_plugin()</a>, <a class="el" href="dir__fns_8php.html#a44062d4b471d1e83f92f6c184585aa13">update_directory_entry()</a>, <a class="el" href="items_8php.html#a9b449eeae50003414b8b30ca927af434">update_feed_item()</a>, <a class="el" href="zot_8php.html#a31aad56acf8ff8f2353e6ff8595544df">update_imported_item()</a>, <a class="el" href="queue__fn_8php.html#a4c2876181f75a4a61e85b7f00dfdbba1">update_queue_time()</a>, <a class="el" href="classRedMatrix_1_1RedDAV_1_1RedBasicAuth.html#a6ece02655b780469e59e204c5979a624">RedMatrix\RedDAV\RedBasicAuth\validateUserPass()</a>, <a class="el" href="account_8php.html#acd6b8d2124ba5ea4f4794d2c58ae8bf5">verify_email_address()</a>, <a class="el" href="include_2network_8php.html#a99353baabbc3e0584b85eb79ee802cff">xml2array()</a>, <a class="el" href="include_2network_8php.html#a9e9da2aafb806c98ecdc318604e60dc6">xml_status()</a>, <a class="el" href="include_2network_8php.html#aafd06c0a75402aefb06cfb9f9740fa37">z_fetch_url()</a>, <a class="el" href="include_2network_8php.html#a9129fd55e7fc175b4ea9a195cccc16bc">z_post_url()</a>, <a class="el" href="zfinger_8php.html#a8139b83a22ef98869adc10aa224027a0">zfinger_init()</a>, <a class="el" href="identity_8php.html#a680fbafc2db023c5b1309e0180e81315">zid_init()</a>, <a class="el" href="zot_8php.html#a084c581d534e7e3b759488b46602288f">zot_build_packet()</a>, <a class="el" href="items_8php.html#a1cf89557f32d5dfbe8bd90448dc1aa92">zot_feed()</a>, <a class="el" href="zot_8php.html#a61cdc1ec843663c423ed2d8160ae5aea">zot_fetch()</a>, <a class="el" href="zot_8php.html#a95528377d7303131958c9f0b7158fdce">zot_finger()</a>, <a class="el" href="zot_8php.html#a55056e863a7860bc0cf922e78fcce073">zot_gethub()</a>, <a class="el" href="zot_8php.html#aeea071f17e306fe3d0c488551906bfab">zot_import()</a>, <a class="el" href="zot_8php.html#a3920afe14fc1d82020161b4b86bcd9ac">zot_process_message_request()</a>, <a class="el" href="zot_8php.html#a928f5643ca66ae9635d85aeb2be62e03">zot_process_response()</a>, <a class="el" href="zot_8php.html#a7ac30ff51274bf0b6d3eade37972145c">zot_refresh()</a>, <a class="el" href="zot_8php.html#a5bcdfef419b16075a0eca990956223dc">zot_register_hub()</a>, and <a class="el" href="zotfeed_8php.html#a24dfc23d366e7f840cf2847d0c1c8eac">zotfeed_init()</a>.</p>
</div>
</div>
@@ -1501,7 +1680,7 @@ Variables</h2></td></tr>
</dl>
<dl class="section return"><dt>Returns</dt><dd>string Filtered string </dd></dl>
-<p>Referenced by <a class="el" href="admin_8php.html#a233b7c8c31776b7020532003c6e44e1c">admin_page_logs_post()</a>, <a class="el" href="admin_8php.html#add865f4ae806ecbf716f423fc3e50e4f">admin_page_site_post()</a>, <a class="el" href="channel_8php.html#a9c6a6179e0e626398ebecc6151905ef1">channel_content()</a>, <a class="el" href="connections_8php.html#aec2e457420fce3e3bf6a9f48e36df25c">connections_content()</a>, <a class="el" href="conversation_8php.html#affea1afb3f32ca41e966c8ddb4204d81">conversation()</a>, <a class="el" href="account_8php.html#a141fe579c351c78209d425473f978eb5">create_account()</a>, <a class="el" href="mod_2directory_8php.html#aac79396570d759da2efac24fcedf5b44">directory_content()</a>, <a class="el" href="filestorage_8php.html#ad3b64e3ece9831f9d3a9f00c0ae983cd">filestorage_post()</a>, <a class="el" href="mod_2follow_8php.html#a171f5b19f50d7738adc3b2e96ec6018a">follow_init()</a>, <a class="el" href="items_8php.html#a896c1809d58f2d7a42cfe14577958ddf">get_atom_elements()</a>, <a class="el" href="mod_2group_8php.html#aed1f009b1221348021bb34761160ef35">group_post()</a>, <a class="el" href="help_8php.html#af055e15f600ffa6fbca9386fdf715224">help_content()</a>, <a class="el" href="invite_8php.html#aeb0881c0f93c8e8552e5ed756ce6e5a5">invite_post()</a>, <a class="el" href="item_8php.html#a693cd09805755ab85bbb5ecae69a48c3">item_post()</a>, <a class="el" href="items_8php.html#a2541e6861a56d145c9281877cc501615">item_store()</a>, <a class="el" href="items_8php.html#acf0bf7c9d21ac84f32effb754f7ad484">item_store_update()</a>, <a class="el" href="like_8php.html#a9d7dd268f21c21e9d29dd2aca2dd9538">like_content()</a>, <a class="el" href="lostpass_8php.html#a8ed35ba71a4404eaf4903da61d0321cc">lostpass_post()</a>, <a class="el" href="mail_8php.html#acfc2cc0bf4e0b178207758384977f25a">mail_post()</a>, <a class="el" href="items_8php.html#a77da7ce9a117601d49ac4a67c71b514f">mail_store()</a>, <a class="el" href="mood_8php.html#a7ae136dd7476865b4828136175db5022">mood_init()</a>, <a class="el" href="mod_2network_8php.html#a43f2f29b90c5e29072c561934bc8f8b4">network_content()</a>, <a class="el" href="oexchange_8php.html#a2d8b785cd7d041a4e6274f5af370cf26">oexchange_content()</a>, <a class="el" href="openid_8php.html#a9a13827dbcf61ae4e45f0b6b33a88f43">openid_content()</a>, <a class="el" href="mod_2photos_8php.html#a062bed4d04d14fee8a53f4c9be673080">photos_post()</a>, <a class="el" href="poco_8php.html#a53def16f75e3d41f1d2bb7cfa4905498">poco_init()</a>, <a class="el" href="poke_8php.html#a9725aab97b3983e6a98bd81c4efe7d3b">poke_init()</a>, <a class="el" href="profiles_8php.html#ab0362c81b1d3b0b12a772b9fac446e04">profiles_post()</a>, <a class="el" href="register_8php.html#a51731dcc1917c58a790eb1c0f6132271">register_post()</a>, <a class="el" href="text_8php.html#a9fbeae13c9abd6e27cb4d8d1817f969c">sanitise_acl()</a>, <a class="el" href="settings_8php.html#aa7ee94d88ac088edb04ccf3a26de3586">settings_post()</a>, <a class="el" href="setup_8php.html#a88247384a96e14516f474d7af6a465c1">setup_content()</a>, <a class="el" href="setup_8php.html#a13cf286774149a0a7bd8adb8179cec75">setup_post()</a>, <a class="el" href="subthread_8php.html#a50368f3d825b77996030528e7fbfa3d3">subthread_content()</a>, <a class="el" href="tagger_8php.html#a0e4a3eb177d1684553c547503d67161c">tagger_content()</a>, and <a class="el" href="xrd_8php.html#aee3cf087968e4a0ff3a87de16eb23270">xrd_init()</a>.</p>
+<p>Referenced by <a class="el" href="admin_8php.html#a233b7c8c31776b7020532003c6e44e1c">admin_page_logs_post()</a>, <a class="el" href="admin_8php.html#add865f4ae806ecbf716f423fc3e50e4f">admin_page_site_post()</a>, <a class="el" href="channel_8php.html#a9c6a6179e0e626398ebecc6151905ef1">channel_content()</a>, <a class="el" href="connections_8php.html#aec2e457420fce3e3bf6a9f48e36df25c">connections_content()</a>, <a class="el" href="conversation_8php.html#affea1afb3f32ca41e966c8ddb4204d81">conversation()</a>, <a class="el" href="account_8php.html#a141fe579c351c78209d425473f978eb5">create_account()</a>, <a class="el" href="diaspora_8php.html#a006731620a5242d410358b32678e48e3">diaspora_asphoto()</a>, <a class="el" href="diaspora_8php.html#a0fb2abe304aae19efc040a5e6b917829">diaspora_comment()</a>, <a class="el" href="diaspora_8php.html#adef30b6fac948baedcc7194d5d155b5f">diaspora_conversation()</a>, <a class="el" href="diaspora_8php.html#a5d57518545baa31cf8a85a937a267681">diaspora_like()</a>, <a class="el" href="diaspora_8php.html#a7cff2f8f11044c1b3a360f20e1bbee46">diaspora_message()</a>, <a class="el" href="diaspora_8php.html#a71fe9bb66626b4197ae018a230778bb2">diaspora_photo()</a>, <a class="el" href="diaspora_8php.html#a20b968d64ef26afe5cb0cc75a7570a31">diaspora_post()</a>, <a class="el" href="diaspora_8php.html#a900abf51398b2ef26cd2cd31c52f1b0f">diaspora_profile()</a>, <a class="el" href="diaspora_8php.html#a2bf43f6b5890897f425ef4325d34b007">diaspora_reshare()</a>, <a class="el" href="diaspora_8php.html#a938c7ee808d38725c0988fa6006805b9">diaspora_retraction()</a>, <a class="el" href="diaspora_8php.html#aa34d2748bb97e9e193cacd572f335055">diaspora_signed_retraction()</a>, <a class="el" href="mod_2directory_8php.html#aac79396570d759da2efac24fcedf5b44">directory_content()</a>, <a class="el" href="include_2network_8php.html#a5176176ddc1906d91f186df6fbd87b48">discover_by_url()</a>, <a class="el" href="filestorage_8php.html#ad3b64e3ece9831f9d3a9f00c0ae983cd">filestorage_post()</a>, <a class="el" href="mod_2follow_8php.html#a171f5b19f50d7738adc3b2e96ec6018a">follow_init()</a>, <a class="el" href="items_8php.html#a5e5be7bf1f8257dec0b2647e60a3f3f1">get_atom_elements()</a>, <a class="el" href="diaspora_8php.html#ac9e41e46626dc608204bf4b5e16e62d7">get_diaspora_reshare_xml()</a>, <a class="el" href="mod_2group_8php.html#aed1f009b1221348021bb34761160ef35">group_post()</a>, <a class="el" href="help_8php.html#af055e15f600ffa6fbca9386fdf715224">help_content()</a>, <a class="el" href="invite_8php.html#aeb0881c0f93c8e8552e5ed756ce6e5a5">invite_post()</a>, <a class="el" href="item_8php.html#a693cd09805755ab85bbb5ecae69a48c3">item_post()</a>, <a class="el" href="items_8php.html#a2541e6861a56d145c9281877cc501615">item_store()</a>, <a class="el" href="items_8php.html#acf0bf7c9d21ac84f32effb754f7ad484">item_store_update()</a>, <a class="el" href="like_8php.html#a9d7dd268f21c21e9d29dd2aca2dd9538">like_content()</a>, <a class="el" href="lostpass_8php.html#a8ed35ba71a4404eaf4903da61d0321cc">lostpass_post()</a>, <a class="el" href="mail_8php.html#acfc2cc0bf4e0b178207758384977f25a">mail_post()</a>, <a class="el" href="items_8php.html#a77da7ce9a117601d49ac4a67c71b514f">mail_store()</a>, <a class="el" href="mood_8php.html#a7ae136dd7476865b4828136175db5022">mood_init()</a>, <a class="el" href="mod_2network_8php.html#a43f2f29b90c5e29072c561934bc8f8b4">network_content()</a>, <a class="el" href="oexchange_8php.html#a2d8b785cd7d041a4e6274f5af370cf26">oexchange_content()</a>, <a class="el" href="openid_8php.html#a9a13827dbcf61ae4e45f0b6b33a88f43">openid_content()</a>, <a class="el" href="mod_2photos_8php.html#a062bed4d04d14fee8a53f4c9be673080">photos_post()</a>, <a class="el" href="poco_8php.html#a53def16f75e3d41f1d2bb7cfa4905498">poco_init()</a>, <a class="el" href="poke_8php.html#a9725aab97b3983e6a98bd81c4efe7d3b">poke_init()</a>, <a class="el" href="profiles_8php.html#ab0362c81b1d3b0b12a772b9fac446e04">profiles_post()</a>, <a class="el" href="register_8php.html#a51731dcc1917c58a790eb1c0f6132271">register_post()</a>, <a class="el" href="text_8php.html#a9fbeae13c9abd6e27cb4d8d1817f969c">sanitise_acl()</a>, <a class="el" href="settings_8php.html#aa7ee94d88ac088edb04ccf3a26de3586">settings_post()</a>, <a class="el" href="setup_8php.html#a88247384a96e14516f474d7af6a465c1">setup_content()</a>, <a class="el" href="setup_8php.html#a13cf286774149a0a7bd8adb8179cec75">setup_post()</a>, <a class="el" href="subthread_8php.html#a50368f3d825b77996030528e7fbfa3d3">subthread_content()</a>, <a class="el" href="tagger_8php.html#a0e4a3eb177d1684553c547503d67161c">tagger_content()</a>, and <a class="el" href="xrd_8php.html#aee3cf087968e4a0ff3a87de16eb23270">xrd_init()</a>.</p>
</div>
</div>
@@ -1519,7 +1698,7 @@ Variables</h2></td></tr>
</table>
</div><div class="memdoc">
-<p>Referenced by <a class="el" href="admin_8php.html#ad6f87a764fd35f522c7b4c351d7878ec">admin_page_channels()</a>, <a class="el" href="admin_8php.html#a62f10f90c47686c9c3c37c4c03a108d2">admin_page_users()</a>, <a class="el" href="connections_8php.html#aec2e457420fce3e3bf6a9f48e36df25c">connections_content()</a>, <a class="el" href="match_8php.html#a1dd853e959b9e70c1911bb2fb5f5130d">match_content()</a>, <a class="el" href="mod_2photos_8php.html#aa87382611a66ec5effdb2d78f13f5812">photos_content()</a>, and <a class="el" href="viewconnections_8php.html#ab6c4d983e97b3a8a879567ff76507776">viewconnections_content()</a>.</p>
+<p>Referenced by <a class="el" href="admin_8php.html#ad6f87a764fd35f522c7b4c351d7878ec">admin_page_channels()</a>, <a class="el" href="admin_8php.html#a62f10f90c47686c9c3c37c4c03a108d2">admin_page_users()</a>, <a class="el" href="connections_8php.html#aec2e457420fce3e3bf6a9f48e36df25c">connections_content()</a>, <a class="el" href="match_8php.html#a1dd853e959b9e70c1911bb2fb5f5130d">match_content()</a>, and <a class="el" href="viewconnections_8php.html#ab6c4d983e97b3a8a879567ff76507776">viewconnections_content()</a>.</p>
</div>
</div>
@@ -1554,6 +1733,10 @@ Variables</h2></td></tr>
</table>
</div><div class="memdoc">
+<p>Generate a guaranteed unique photo ID. </p>
+<p>Safe from birthday paradox.</p>
+<dl class="section return"><dt>Returns</dt><dd>string a uniqe hash </dd></dl>
+
<p>Referenced by <a class="el" href="photo__driver_8php.html#a1d0bc7161dec0d177b7d3bbe4421af9a">import_channel_photo()</a>, <a class="el" href="photo__driver_8php.html#a78f5a10c568d2a9bbbb129dc96548887">import_profile_photo()</a>, and <a class="el" href="include_2photos_8php.html#a6c40ef58aefef705a5adc84a40e97109">photo_upload()</a>.</p>
</div>
@@ -1626,7 +1809,7 @@ Variables</h2></td></tr>
</table>
</div><div class="memdoc">
-<p>Referenced by <a class="el" href="identity_8php.html#aa870d2c1f558cfd52bef05bc124e8fa4">advanced_profile()</a>, <a class="el" href="include_2api_8php.html#a4c6fb9fb5203aa60f4b3afd4521db8ea">api_format_items()</a>, <a class="el" href="include_2api_8php.html#ae82608c317421f27446465aa6724733d">api_format_messages()</a>, <a class="el" href="include_2api_8php.html#a645397787618b5c548a31e8686e8cca4">api_status_show()</a>, <a class="el" href="include_2api_8php.html#abe8e929e93f7ab134b1cb1fb30f19a76">api_users_show()</a>, <a class="el" href="items_8php.html#a275108c050f7eb18bcbb5018e6b81cf6">atom_entry()</a>, <a class="el" href="items_8php.html#a87ac9e359591721a824ecd23bbb56296">check_item_source()</a>, <a class="el" href="comanche_8php.html#a5a7ab801717d38e91ac910b933973887">comanche_block()</a>, <a class="el" href="connect_8php.html#a489f0a66c660de6ec4d6917b27674f07">connect_content()</a>, and <a class="el" href="text_8php.html#ae4df74296fbe55051ed3c035e55205e5">prepare_body()</a>.</p>
+<p>Referenced by <a class="el" href="identity_8php.html#aa870d2c1f558cfd52bef05bc124e8fa4">advanced_profile()</a>, <a class="el" href="include_2api_8php.html#a4c6fb9fb5203aa60f4b3afd4521db8ea">api_format_items()</a>, <a class="el" href="include_2api_8php.html#ae82608c317421f27446465aa6724733d">api_format_messages()</a>, <a class="el" href="include_2api_8php.html#a645397787618b5c548a31e8686e8cca4">api_status_show()</a>, <a class="el" href="include_2api_8php.html#abe8e929e93f7ab134b1cb1fb30f19a76">api_users_show()</a>, <a class="el" href="items_8php.html#a275108c050f7eb18bcbb5018e6b81cf6">atom_entry()</a>, <a class="el" href="items_8php.html#a87ac9e359591721a824ecd23bbb56296">check_item_source()</a>, <a class="el" href="comanche_8php.html#a5a7ab801717d38e91ac910b933973887">comanche_block()</a>, <a class="el" href="connect_8php.html#a489f0a66c660de6ec4d6917b27674f07">connect_content()</a>, <a class="el" href="text_8php.html#ae4df74296fbe55051ed3c035e55205e5">prepare_body()</a>, and <a class="el" href="widgets_8php.html#a829c5a5c7448129266fc1df3ae1a3c2e">widget_random_block()</a>.</p>
</div>
</div>
@@ -1660,8 +1843,6 @@ Variables</h2></td></tr>
</table>
</div><div class="memdoc">
-<p>Referenced by <a class="el" href="conversation_8php.html#affea1afb3f32ca41e966c8ddb4204d81">conversation()</a>.</p>
-
</div>
</div>
<a class="anchor" id="a4e7698aca48982512594b274543c3b9b"></a>
@@ -1678,7 +1859,7 @@ Variables</h2></td></tr>
</table>
</div><div class="memdoc">
-<p>Referenced by <a class="el" href="acl_8php.html#ac6776dba871806ecdb5d1659bc2eb07a">acl_init()</a>, <a class="el" href="include_2api_8php.html#a8b25a186bd0893f51aa72a62f655735e">api_statuses_mentions()</a>, <a class="el" href="include_2attach_8php.html#a887d2d44a3ef18dcb6624e7fb58dc8e3">attach_count_files()</a>, <a class="el" href="include_2attach_8php.html#a3634af95f11a023dd8e882c3c7a3600d">attach_list_files()</a>, <a class="el" href="channel_8php.html#a9c6a6179e0e626398ebecc6151905ef1">channel_content()</a>, <a class="el" href="include_2chat_8php.html#a2ba3af6884ecdce95de69262fe599639">chatroom_destroy()</a>, <a class="el" href="connections_8php.html#aec2e457420fce3e3bf6a9f48e36df25c">connections_content()</a>, <a class="el" href="dirsearch_8php.html#a52bcac49b0e35cc8c6b70066143c2ee2">dir_query_build()</a>, <a class="el" href="dirsearch_8php.html#aa1fb04e1de4f25b63349ac78f94ceb4c">dirsearch_content()</a>, <a class="el" href="taxonomy_8php.html#a163b5131f388080b0fc82398d3a32fe1">file_tag_file_query()</a>, <a class="el" href="security_8php.html#a9355488460ab11d6058656ff919e5cf9">item_permissions_sql()</a>, <a class="el" href="items_8php.html#a756738301f2ed96be50232500677d58a">items_fetch()</a>, <a class="el" href="include_2menu_8php.html#a32701c4245e78ba9106eef52c08bf33d">menu_list()</a>, <a class="el" href="mod_2network_8php.html#a43f2f29b90c5e29072c561934bc8f8b4">network_content()</a>, <a class="el" href="security_8php.html#afa683bc025a1d2fe9065e2f6cd71a22f">permissions_sql()</a>, <a class="el" href="include_2photos_8php.html#aa27b9e435dcc34e1009f56dc02c7ca51">photos_list_photos()</a>, <a class="el" href="security_8php.html#ab3bdd30dc60d9ee72370b866aa4a2d01">public_permissions_sql()</a>, <a class="el" href="search__ac_8php.html#a14f90c83a3f2be095e9e2992a8d66138">search_ac_init()</a>, <a class="el" href="search_8php.html#ab2568591359edde5b483a6cd9a24b2cc">search_content()</a>, and <a class="el" href="taxonomy_8php.html#a7a913d19c77610da689be48fbbf6734c">term_query()</a>.</p>
+<p>Referenced by <a class="el" href="acl_8php.html#ac6776dba871806ecdb5d1659bc2eb07a">acl_init()</a>, <a class="el" href="include_2api_8php.html#a8b25a186bd0893f51aa72a62f655735e">api_statuses_mentions()</a>, <a class="el" href="include_2attach_8php.html#a887d2d44a3ef18dcb6624e7fb58dc8e3">attach_count_files()</a>, <a class="el" href="include_2attach_8php.html#a3634af95f11a023dd8e882c3c7a3600d">attach_list_files()</a>, <a class="el" href="channel_8php.html#a9c6a6179e0e626398ebecc6151905ef1">channel_content()</a>, <a class="el" href="include_2chat_8php.html#a2ba3af6884ecdce95de69262fe599639">chatroom_destroy()</a>, <a class="el" href="connections_8php.html#aec2e457420fce3e3bf6a9f48e36df25c">connections_content()</a>, <a class="el" href="dirsearch_8php.html#a52bcac49b0e35cc8c6b70066143c2ee2">dir_query_build()</a>, <a class="el" href="dirsearch_8php.html#aa1fb04e1de4f25b63349ac78f94ceb4c">dirsearch_content()</a>, <a class="el" href="taxonomy_8php.html#a163b5131f388080b0fc82398d3a32fe1">file_tag_file_query()</a>, <a class="el" href="security_8php.html#a9355488460ab11d6058656ff919e5cf9">item_permissions_sql()</a>, <a class="el" href="items_8php.html#a756738301f2ed96be50232500677d58a">items_fetch()</a>, <a class="el" href="include_2menu_8php.html#a32701c4245e78ba9106eef52c08bf33d">menu_list()</a>, <a class="el" href="include_2menu_8php.html#a251bf7e15d21627fd92614198e41c485">menu_list_count()</a>, <a class="el" href="mod_2network_8php.html#a43f2f29b90c5e29072c561934bc8f8b4">network_content()</a>, <a class="el" href="security_8php.html#afa683bc025a1d2fe9065e2f6cd71a22f">permissions_sql()</a>, <a class="el" href="include_2photos_8php.html#aa27b9e435dcc34e1009f56dc02c7ca51">photos_list_photos()</a>, <a class="el" href="security_8php.html#ab3bdd30dc60d9ee72370b866aa4a2d01">public_permissions_sql()</a>, <a class="el" href="search__ac_8php.html#a14f90c83a3f2be095e9e2992a8d66138">search_ac_init()</a>, <a class="el" href="search_8php.html#ab2568591359edde5b483a6cd9a24b2cc">search_content()</a>, <a class="el" href="dir__fns_8php.html#aa666e7df6ca8c332f4081c9b66b4bdf6">sync_directories()</a>, and <a class="el" href="taxonomy_8php.html#a7a913d19c77610da689be48fbbf6734c">term_query()</a>.</p>
</div>
</div>
@@ -1696,7 +1877,7 @@ Variables</h2></td></tr>
</table>
</div><div class="memdoc">
-<p>Referenced by <a class="el" href="items_8php.html#a896c1809d58f2d7a42cfe14577958ddf">get_atom_elements()</a>, and <a class="el" href="text_8php.html#a324c58f37f6acdf9cd1922aa76077d9f">z_input_filter()</a>.</p>
+<p>Referenced by <a class="el" href="items_8php.html#a5e5be7bf1f8257dec0b2647e60a3f3f1">get_atom_elements()</a>, and <a class="el" href="text_8php.html#a324c58f37f6acdf9cd1922aa76077d9f">z_input_filter()</a>.</p>
</div>
</div>
@@ -1740,7 +1921,7 @@ Variables</h2></td></tr>
</table>
</div><div class="memdoc">
-<p>Referenced by <a class="el" href="crypto_8php.html#a2148d7aac7b30c720f7ebda7e9790286">aes_encapsulate()</a>, <a class="el" href="include_2apps_8php.html#a15626f24069c18816f7cdaf4735f58f9">app_store()</a>, <a class="el" href="include_2attach_8php.html#ab6830b3ab74a5d284876141ac80f6cbc">attach_mkdir()</a>, <a class="el" href="include_2attach_8php.html#a84a8a64c4805e1525b42d4add464833f">attach_store()</a>, <a class="el" href="bbcode_8php.html#a851f5aafefe52474201b83f9fd65931f">bb_parse_crypt()</a>, <a class="el" href="bbcode_8php.html#a009f61aaf78771737ed0765c8463911b">bbcode()</a>, <a class="el" href="zot_8php.html#ac34e479d27f32b82dd6b33542f81a6a7">build_sync_packet()</a>, <a class="el" href="account_8php.html#a141fe579c351c78209d425473f978eb5">create_account()</a>, <a class="el" href="identity_8php.html#a345f4c943d84de502ec6e72d2c813945">create_identity()</a>, <a class="el" href="classRedDirectory.html#a2d12d99d38a6a75fc9a830b2f7fc0bf0">RedDirectory\createFile()</a>, <a class="el" href="include_2directory_8php.html#aa75d3b0697ca1456aaabdb37a74aa0f0">directory_run()</a>, <a class="el" href="event_8php.html#af5ac41e7ea3f7131088fe6333fd2846c">event_store_event()</a>, <a class="el" href="fsuggest_8php.html#a61ecfe10ce937ed526614f8fd3de3c7d">fsuggest_post()</a>, <a class="el" href="include_2group_8php.html#a06ec565d2b64e79044e7c1bf91a2a4ce">group_add()</a>, <a class="el" href="zot_8php.html#a20750dd2c36961013fd382fb34e1366c">import_directory_profile()</a>, <a class="el" href="zot_8php.html#a528e97ca5d69c3b7f35c5d954afde315">import_xchan()</a>, <a class="el" href="text_8php.html#aa6b0aa8afbeab50d1a3058ad21acb74e">item_message_id()</a>, <a class="el" href="items_8php.html#a2541e6861a56d145c9281877cc501615">item_store()</a>, <a class="el" href="dir__fns_8php.html#acd37b17dce3bdec6d5a6344a20598c1e">local_dir_update()</a>, <a class="el" href="lostpass_8php.html#a0314d94e48c789b1b3a201d740c9eab3">lostpass_content()</a>, <a class="el" href="lostpass_8php.html#a8ed35ba71a4404eaf4903da61d0321cc">lostpass_post()</a>, <a class="el" href="magic_8php.html#acea2cc792849ca2d71d4b689f66518bf">magic_init()</a>, <a class="el" href="items_8php.html#a77da7ce9a117601d49ac4a67c71b514f">mail_store()</a>, <a class="el" href="enotify_8php.html#a3e9a9355b243777c488d2a9883908dfc">notification()</a>, <a class="el" href="notifier_8php.html#a568c502f626cff95e344c0748938b85d">notifier_run()</a>, <a class="el" href="text_8php.html#ae4df74296fbe55051ed3c035e55205e5">prepare_body()</a>, <a class="el" href="profiles_8php.html#a36f71405ad536228f8bb84a551b23f7e">profiles_init()</a>, <a class="el" href="removeme_8php.html#a065a589caa2aa84c60f7073a28f0ad9c">removeme_content()</a>, <a class="el" href="include_2message_8php.html#a751ffd6635022b2190f56154ee745752">send_message()</a>, <a class="el" href="account_8php.html#a014de2d5d5c9785de5bf547a485822fa">send_reg_approval_email()</a>, <a class="el" href="settings_8php.html#aa7ee94d88ac088edb04ccf3a26de3586">settings_post()</a>, <a class="el" href="setup_8php.html#a13cf286774149a0a7bd8adb8179cec75">setup_post()</a>, <a class="el" href="thing_8php.html#a8be23b1d475ec3d9291999221c674c80">thing_init()</a>, and <a class="el" href="account_8php.html#acd6b8d2124ba5ea4f4794d2c58ae8bf5">verify_email_address()</a>.</p>
+<p>Referenced by <a class="el" href="crypto_8php.html#a2148d7aac7b30c720f7ebda7e9790286">aes_encapsulate()</a>, <a class="el" href="include_2apps_8php.html#a15626f24069c18816f7cdaf4735f58f9">app_store()</a>, <a class="el" href="include_2attach_8php.html#ab6830b3ab74a5d284876141ac80f6cbc">attach_mkdir()</a>, <a class="el" href="include_2attach_8php.html#a84a8a64c4805e1525b42d4add464833f">attach_store()</a>, <a class="el" href="bbcode_8php.html#a851f5aafefe52474201b83f9fd65931f">bb_parse_crypt()</a>, <a class="el" href="bbcode_8php.html#a009f61aaf78771737ed0765c8463911b">bbcode()</a>, <a class="el" href="zot_8php.html#aa97b33b619dd7132a9274f852af6ceb5">build_sync_packet()</a>, <a class="el" href="account_8php.html#a141fe579c351c78209d425473f978eb5">create_account()</a>, <a class="el" href="identity_8php.html#a345f4c943d84de502ec6e72d2c813945">create_identity()</a>, <a class="el" href="classRedMatrix_1_1RedDAV_1_1RedDirectory.html#a58e750256cdc2f0f79fbe8d5463ffefe">RedMatrix\RedDAV\RedDirectory\createFile()</a>, <a class="el" href="diaspora_8php.html#a4901762cba5cd8dcdc57bdf285eefb1b">diaspora_msg_build()</a>, <a class="el" href="diaspora_8php.html#aa704d6aa2ac77be345c0f501168e6e56">diaspora_transmit()</a>, <a class="el" href="include_2directory_8php.html#aa75d3b0697ca1456aaabdb37a74aa0f0">directory_run()</a>, <a class="el" href="event_8php.html#af5ac41e7ea3f7131088fe6333fd2846c">event_store_event()</a>, <a class="el" href="fsuggest_8php.html#a61ecfe10ce937ed526614f8fd3de3c7d">fsuggest_post()</a>, <a class="el" href="include_2group_8php.html#a06ec565d2b64e79044e7c1bf91a2a4ce">group_add()</a>, <a class="el" href="zot_8php.html#a20750dd2c36961013fd382fb34e1366c">import_directory_profile()</a>, <a class="el" href="zot_8php.html#a528e97ca5d69c3b7f35c5d954afde315">import_xchan()</a>, <a class="el" href="text_8php.html#aa6b0aa8afbeab50d1a3058ad21acb74e">item_message_id()</a>, <a class="el" href="items_8php.html#a2541e6861a56d145c9281877cc501615">item_store()</a>, <a class="el" href="dir__fns_8php.html#acd37b17dce3bdec6d5a6344a20598c1e">local_dir_update()</a>, <a class="el" href="lostpass_8php.html#a0314d94e48c789b1b3a201d740c9eab3">lostpass_content()</a>, <a class="el" href="lostpass_8php.html#a8ed35ba71a4404eaf4903da61d0321cc">lostpass_post()</a>, <a class="el" href="magic_8php.html#acea2cc792849ca2d71d4b689f66518bf">magic_init()</a>, <a class="el" href="items_8php.html#a77da7ce9a117601d49ac4a67c71b514f">mail_store()</a>, <a class="el" href="enotify_8php.html#a3e9a9355b243777c488d2a9883908dfc">notification()</a>, <a class="el" href="notifier_8php.html#a568c502f626cff95e344c0748938b85d">notifier_run()</a>, <a class="el" href="text_8php.html#ae4df74296fbe55051ed3c035e55205e5">prepare_body()</a>, <a class="el" href="zot_8php.html#a8eeefdb0dad4c436bea9d1c06c0a7988">process_location_delivery()</a>, <a class="el" href="profiles_8php.html#a36f71405ad536228f8bb84a551b23f7e">profiles_init()</a>, <a class="el" href="refimport_8php.html#a01a29630fa5e1ce6cd5e1fd75280747c">reflect_comment_store()</a>, <a class="el" href="removeaccount_8php.html#a516e7380b9e5796054aa8245f3509695">removeaccount_content()</a>, <a class="el" href="removeme_8php.html#a065a589caa2aa84c60f7073a28f0ad9c">removeme_content()</a>, <a class="el" href="include_2message_8php.html#a751ffd6635022b2190f56154ee745752">send_message()</a>, <a class="el" href="account_8php.html#a014de2d5d5c9785de5bf547a485822fa">send_reg_approval_email()</a>, <a class="el" href="settings_8php.html#aa7ee94d88ac088edb04ccf3a26de3586">settings_post()</a>, <a class="el" href="setup_8php.html#a13cf286774149a0a7bd8adb8179cec75">setup_post()</a>, <a class="el" href="thing_8php.html#a8be23b1d475ec3d9291999221c674c80">thing_init()</a>, <a class="el" href="account_8php.html#acd6b8d2124ba5ea4f4794d2c58ae8bf5">verify_email_address()</a>, and <a class="el" href="zot_8php.html#a3920afe14fc1d82020161b4b86bcd9ac">zot_process_message_request()</a>.</p>
</div>
</div>
@@ -1768,7 +1949,7 @@ Variables</h2></td></tr>
</table>
</div><div class="memdoc">
-<p>Referenced by <a class="el" href="items_8php.html#a896c1809d58f2d7a42cfe14577958ddf">get_atom_elements()</a>.</p>
+<p>Referenced by <a class="el" href="items_8php.html#a5e5be7bf1f8257dec0b2647e60a3f3f1">get_atom_elements()</a>.</p>
</div>
</div>
@@ -1805,7 +1986,7 @@ Variables</h2></td></tr>
</dl>
<dl class="section return"><dt>Returns</dt><dd>string substituted string </dd></dl>
-<p>Referenced by <a class="el" href="admin_8php.html#afef415e4011607fbb665610441595015">admin_content()</a>, <a class="el" href="admin_8php.html#ad6f87a764fd35f522c7b4c351d7878ec">admin_page_channels()</a>, <a class="el" href="admin_8php.html#aaa6addf2dbc3f3fcf99244a56b41eade">admin_page_dbsync()</a>, <a class="el" href="admin_8php.html#a6943543f3138f6ee182cb701f415d1cc">admin_page_hubloc()</a>, <a class="el" href="admin_8php.html#a1d1362698af14d209aa3a0fb655551dd">admin_page_logs()</a>, <a class="el" href="admin_8php.html#a54128076986ba80c4a103de3fc3e19a8">admin_page_plugins()</a>, <a class="el" href="admin_8php.html#ac0f3bd12431c056aad77bac9d09fa30e">admin_page_site()</a>, <a class="el" href="admin_8php.html#ac6e95b920b5abd030cc522964987087a">admin_page_summary()</a>, <a class="el" href="admin_8php.html#af124619fdc278fe2bf14c45ddaa260fb">admin_page_themes()</a>, <a class="el" href="admin_8php.html#a62f10f90c47686c9c3c37c4c03a108d2">admin_page_users()</a>, <a class="el" href="identity_8php.html#aa870d2c1f558cfd52bef05bc124e8fa4">advanced_profile()</a>, <a class="el" href="text_8php.html#a75c243e06341ec16bd5a44b9b1cacd85">alt_pager()</a>, <a class="el" href="include_2api_8php.html#a5990101034e7abf6404feba3cd273629">api_apply_template()</a>, <a class="el" href="mod_2api_8php.html#a33315b5bbf5418f6850b2038107b526d">api_content()</a>, <a class="el" href="include_2apps_8php.html#a1b2e737f477a2e0d9d11ef14adc5aa66">app_render()</a>, <a class="el" href="appman_8php.html#af48805ac2f6f123f2681a8ae1c6f123f">appman_content()</a>, <a class="el" href="mod_2apps_8php.html#a546016cb960d0b110ee8e489dfa6c27c">apps_content()</a>, <a class="el" href="view_2theme_2apw_2php_2config_8php.html#ad59fc09da66b66267f9753c8b2dd68d0">apw_form()</a>, <a class="el" href="blocks_8php.html#a2531a8fd51db3cecb2eb20c002c66e12">blocks_content()</a>, <a class="el" href="view_2theme_2blogga_2php_2config_8php.html#a8a311a402d3e746ce53fadc38e4b2d27">blogtheme_form()</a>, <a class="el" href="classApp.html#a08f0537964d98958d218066364cff785">App\build_pagehead()</a>, <a class="el" href="contact__widgets_8php.html#a165eb021e61c4dcab2a552f28628d353">categories_widget()</a>, <a class="el" href="channel_8php.html#a9c6a6179e0e626398ebecc6151905ef1">channel_content()</a>, <a class="el" href="mod_2chat_8php.html#a8b0b8bee6fef6477e8c64c5e951b1b4f">chat_content()</a>, <a class="el" href="boot_8php.html#a4c02d88e66852a01bd5a1feecb7c3ce3">check_config()</a>, <a class="el" href="setup_8php.html#a14d208682a88632290c895d20da6e7d6">check_php()</a>, <a class="el" href="common_8php.html#ab63408f39abef7a6915186e8dabc5a96">common_content()</a>, <a class="el" href="contact__widgets_8php.html#a552f8544528cec0c995cea7287ea9d65">common_friends_visitor_widget()</a>, <a class="el" href="connect_8php.html#a489f0a66c660de6ec4d6917b27674f07">connect_content()</a>, <a class="el" href="connections_8php.html#aec2e457420fce3e3bf6a9f48e36df25c">connections_content()</a>, <a class="el" href="connedit_8php.html#a795acb3d9d841f55c255d7611681ab67">connedit_content()</a>, <a class="el" href="boot_8php.html#acc4e0c910af066148b810e5fde55fff1">construct_page()</a>, <a class="el" href="text_8php.html#ad6432621d0fafcbcf3d3b9b49bef7784">contact_block()</a>, <a class="el" href="conversation_8php.html#affea1afb3f32ca41e966c8ddb4204d81">conversation()</a>, <a class="el" href="delegate_8php.html#a943eea8996ef348eb845c498f9f354dd">delegate_content()</a>, <a class="el" href="text_8php.html#a87a3cefc603302c78982f1d8e1245265">design_tools()</a>, <a class="el" href="dir__fns_8php.html#acf621621e929d49441da30aad76a58cf">dir_safe_mode()</a>, <a class="el" href="dir__fns_8php.html#ae56881d69bb6f8e828c9e35454386774">dir_sort_links()</a>, <a class="el" href="mod_2directory_8php.html#aac79396570d759da2efac24fcedf5b44">directory_content()</a>, <a class="el" href="dirprofile_8php.html#a3e1d30d3d93863ff5615f2df4ac7f052">dirprofile_init()</a>, <a class="el" href="display_8php.html#a37137c98d47bf3306f4c2bb9f5b60de0">display_content()</a>, <a class="el" href="editblock_8php.html#abbe8f55de06967bc8d79d620509a49e6">editblock_content()</a>, <a class="el" href="editlayout_8php.html#aa877e4157a26b099de904164181dd386">editlayout_content()</a>, <a class="el" href="editpost_8php.html#a34011690864d122680c802e9e748ccfb">editpost_content()</a>, <a class="el" href="editwebpage_8php.html#a375e945255fad79a71036528f7480650">editwebpage_content()</a>, <a class="el" href="events_8php.html#a1d293fb217ae6bc9e3858c4b32e363ec">events_content()</a>, <a class="el" href="fbrowser_8php.html#aee476addcf7a3e0fe9454f7dfd5a56c4">fbrowser_content()</a>, <a class="el" href="datetime_8php.html#a03900dcf0f9e3c58793a031673a70326">field_timezone()</a>, <a class="el" href="contact__widgets_8php.html#a1eda66319d170f60a8d07c7ece95533b">fileas_widget()</a>, <a class="el" href="filer_8php.html#a5fd5d7e61b2f9c43cb5f110c89dc4274">filer_content()</a>, <a class="el" href="filestorage_8php.html#a61bb1be78472555df4ce619f51014040">filestorage_content()</a>, <a class="el" href="contact__widgets_8php.html#a57e73ebcfd62bb5d8c7a7b9e663726d6">findpeople_widget()</a>, <a class="el" href="text_8php.html#a3054189cff173977f4216c9a3dd29e1b">format_categories()</a>, <a class="el" href="text_8php.html#a4e4d42b0a805148d9f9a92bcac89bf91">format_filer()</a>, <a class="el" href="classRedBrowser.html#a1f7daf50bb9bfcde7345b3b1908dbd7e">RedBrowser\generateDirectoryIndex()</a>, <a class="el" href="identity_8php.html#ad2c97627a313d53df1a1c7b4215ddb51">get_birthdays()</a>, <a class="el" href="classItem.html#a3ee7667c2ec6cd7657328e27848c0bdf">Item\get_comment_box()</a>, <a class="el" href="identity_8php.html#ae381db3d43f8e7c1da8b15d14ecf5312">get_events()</a>, <a class="el" href="items_8php.html#a04a35b610acfe54434df08adec39c0c7">get_feed_for()</a>, <a class="el" href="mod_2group_8php.html#a07a64f6c65b0080d8190b3d9728a7a83">group_content()</a>, <a class="el" href="include_2group_8php.html#a6a69bd7be032fa8ce4e49c43a42cc6e9">group_side()</a>, <a class="el" href="help_8php.html#af055e15f600ffa6fbca9386fdf715224">help_content()</a>, <a class="el" href="hostxrd_8php.html#aa37ffc8e7900bc76c4828bd25916db92">hostxrd_init()</a>, <a class="el" href="classRedBrowser.html#a7f6bf0bda07833f4c647557bd172e349">RedBrowser\htmlActionsPanel()</a>, <a class="el" href="identity_8php.html#a2ab5172eabd375869060c9ad68323f5c">identity_selector()</a>, <a class="el" href="import_8php.html#afdf25ed70096d5dbf4f6d0ca79fea184">import_content()</a>, <a class="el" href="invite_8php.html#a244385b28cfd021d308715f01158bfd9">invite_content()</a>, <a class="el" href="text_8php.html#a71f6952243d3fe1c5a8154f78027e29c">lang_selector()</a>, <a class="el" href="layouts_8php.html#a6e0193759ad9eef76d3df2db24237b50">layouts_content()</a>, <a class="el" href="boot_8php.html#aefecf8599036df7f1b95d6820e0e2fa4">login()</a>, <a class="el" href="lostpass_8php.html#a0314d94e48c789b1b3a201d740c9eab3">lostpass_content()</a>, <a class="el" href="lostpass_8php.html#a8ed35ba71a4404eaf4903da61d0321cc">lostpass_post()</a>, <a class="el" href="mail_8php.html#a3c7c485fc69f92371e8b20936040eca1">mail_content()</a>, <a class="el" href="manage_8php.html#a2bca247b5296827638959138367db4f5">manage_content()</a>, <a class="el" href="match_8php.html#a1dd853e959b9e70c1911bb2fb5f5130d">match_content()</a>, <a class="el" href="mod_2menu_8php.html#a6fed23af14d71a78a4153c8363a685cf">menu_content()</a>, <a class="el" href="include_2menu_8php.html#a03a5deed3908543581c074ce333e9d6a">menu_render()</a>, <a class="el" href="mod_2message_8php.html#ac72dfed3ce08fcb331d66b37edc6e15f">message_content()</a>, <a class="el" href="text_8php.html#a2a902f5fdba8646333e997898ac45ea3">micropro()</a>, <a class="el" href="include_2group_8php.html#ab0e422a0f31c0c64fd9084ca03d85f32">mini_group_select()</a>, <a class="el" href="mitem_8php.html#a7a31b702ecad18eeb6a38b243ff0037e">mitem_content()</a>, <a class="el" href="mood_8php.html#a721b9b6703b3234a005641c92d409b8f">mood_content()</a>, <a class="el" href="nav_8php.html#a43be0df73b90647ea70947ce004e231e">nav()</a>, <a class="el" href="mod_2network_8php.html#a43f2f29b90c5e29072c561934bc8f8b4">network_content()</a>, <a class="el" href="new__channel_8php.html#ae585191610f79da129492482ce8e2fee">new_channel_content()</a>, <a class="el" href="enotify_8php.html#a3e9a9355b243777c488d2a9883908dfc">notification()</a>, <a class="el" href="notifications_8php.html#aadd0b5525bd8c283a5d8a37982bbfe62">notifications_content()</a>, <a class="el" href="mod_2notify_8php.html#acdf3851688ebd6d6a575eb84ef9febe3">notify_content()</a>, <a class="el" href="include_2oembed_8php.html#a26bb4c1e330d2f94ea7b6ce2fe970cf3">oembed_format_object()</a>, <a class="el" href="oexchange_8php.html#ac8e2e469ddc3db984b0c1b44558aca59">oexchange_init()</a>, <a class="el" href="opensearch_8php.html#ad13034877a496565ac7d99e9fc6f55e9">opensearch_init()</a>, <a class="el" href="page__widgets_8php.html#a39d547771c5f12a17c097436c82f0fa2">pagelist_widget()</a>, <a class="el" href="pdledit_8php.html#a59cb550f6b7a4e7d8196fbc9de601619">pdledit_content()</a>, <a class="el" href="include_2photos_8php.html#af24c6aeed28ecc31ec39e7d9a1804979">photos_album_widget()</a>, <a class="el" href="mod_2photos_8php.html#aa87382611a66ec5effdb2d78f13f5812">photos_content()</a>, <a class="el" href="poco_8php.html#a53def16f75e3d41f1d2bb7cfa4905498">poco_init()</a>, <a class="el" href="poke_8php.html#ac9190563a8da9c07a16f9dcd71cf6993">poke_content()</a>, <a class="el" href="acl__selectors_8php.html#ad25bba63a51a2b0b5b463efae50df528">populate_acl()</a>, <a class="el" href="identity_8php.html#a432259b2cf5b6f59be53e71db9f2c7dc">profile_sidebar()</a>, <a class="el" href="profiles_8php.html#a46975783b8b8d70402d51487eb1f0b00">profiles_content()</a>, <a class="el" href="rbmark_8php.html#a43fec4960b50926251574762cc491f76">rbmark_content()</a>, <a class="el" href="view_2theme_2redbasic_2php_2config_8php.html#a8574a41fa9735ee391ba57ab24b93793">redbasic_form()</a>, <a class="el" href="register_8php.html#a0e91f57f111407ea8d3223a05022bb2a">register_content()</a>, <a class="el" href="removeme_8php.html#a065a589caa2aa84c60f7073a28f0ad9c">removeme_content()</a>, <a class="el" href="rmagic_8php.html#a3e28db1e5cfa7e5c2617f90222c1caef">rmagic_content()</a>, <a class="el" href="rpost_8php.html#a8190354d789000806d9879aea276728f">rpost_content()</a>, <a class="el" href="search_8php.html#ab2568591359edde5b483a6cd9a24b2cc">search_content()</a>, <a class="el" href="account_8php.html#a014de2d5d5c9785de5bf547a485822fa">send_reg_approval_email()</a>, <a class="el" href="account_8php.html#aa9c29c497c17d8f9344dce8631ad8761">send_verification_email()</a>, <a class="el" href="setup_8php.html#a88247384a96e14516f474d7af6a465c1">setup_content()</a>, <a class="el" href="setup_8php.html#a13cf286774149a0a7bd8adb8179cec75">setup_post()</a>, <a class="el" href="siteinfo_8php.html#a70c09bfb6dd1c86a125a35f62ed53656">siteinfo_content()</a>, <a class="el" href="sources_8php.html#ac442ccef080ab95772d8929fcafcb4b7">sources_content()</a>, <a class="el" href="suggest_8php.html#a58748a8235d4523f8333847f3e42dd91">suggest_content()</a>, <a class="el" href="text_8php.html#af9c9ac3f74c82dc60acfa404d0e9dc53">theme_attachments()</a>, <a class="el" href="thing_8php.html#a24a35f1e64029a67fdbea94a776ae04b">thing_content()</a>, <a class="el" href="account_8php.html#ac5c570a2d46446bad4dd2501e9c5a4b1">user_allow()</a>, <a class="el" href="Contact_8php.html#a6348a532c9d26cd1c9afbc9aa6aa8960">vcard_from_xchan()</a>, <a class="el" href="account_8php.html#acd6b8d2124ba5ea4f4794d2c58ae8bf5">verify_email_address()</a>, <a class="el" href="viewconnections_8php.html#ab6c4d983e97b3a8a879567ff76507776">viewconnections_content()</a>, <a class="el" href="vote_8php.html#a6aa67489bf458ca5e3206e46dac68596">vote_content()</a>, <a class="el" href="webpages_8php.html#af3b7397d4abc153e3d2147740ee1a41d">webpages_content()</a>, <a class="el" href="widgets_8php.html#add9b24d3304e529a7975e96122315554">widget_affinity()</a>, <a class="el" href="widgets_8php.html#aced5cb177f630b30799c5eab873ee75c">widget_appselect()</a>, <a class="el" href="widgets_8php.html#a7b1e357b5a2027718470b77ec921fc65">widget_archive()</a>, <a class="el" href="widgets_8php.html#a0e2f5179ed1a73b282dfda7270fcabb3">widget_bookmarkedchats()</a>, <a class="el" href="widgets_8php.html#a47c72aac42058ea086c9ef8651c259da">widget_chatroom_list()</a>, <a class="el" href="widgets_8php.html#a5ab3b64496e02cab56429978ad55f1c0">widget_filer()</a>, <a class="el" href="widgets_8php.html#ad1bf7aa69e8d100d95faba17c7bc91cd">widget_follow()</a>, <a class="el" href="widgets_8php.html#afa2e55a78f95667a6da082efac7fec74">widget_mailmenu()</a>, <a class="el" href="widgets_8php.html#a45ea061dabe9a8372e4ca3b9e5714256">widget_notes()</a>, <a class="el" href="widgets_8php.html#a94203eb9bcd63cbdecbbcb15163598d8">widget_savedsearch()</a>, <a class="el" href="widgets_8php.html#aaa73bcf1702eaadd9dcd253502f55e01">widget_settings_menu()</a>, <a class="el" href="widgets_8php.html#a50b1410238100c8a94c06b0aa63ee3b8">widget_suggestedchats()</a>, <a class="el" href="widgets_8php.html#a0d404276fedc59f5038cf5c085028326">widget_suggestions()</a>, <a class="el" href="page__widgets_8php.html#a1a1e729da27f252cab6678288a17958f">writepages_widget()</a>, and <a class="el" href="xrd_8php.html#aee3cf087968e4a0ff3a87de16eb23270">xrd_init()</a>.</p>
+<p>Referenced by <a class="el" href="achievements_8php.html#a35ae04ada0e227d19671f289a32fb30e">achievements_content()</a>, <a class="el" href="admin_8php.html#afef415e4011607fbb665610441595015">admin_content()</a>, <a class="el" href="admin_8php.html#ad6f87a764fd35f522c7b4c351d7878ec">admin_page_channels()</a>, <a class="el" href="admin_8php.html#aaa6addf2dbc3f3fcf99244a56b41eade">admin_page_dbsync()</a>, <a class="el" href="admin_8php.html#a6943543f3138f6ee182cb701f415d1cc">admin_page_hubloc()</a>, <a class="el" href="admin_8php.html#a1d1362698af14d209aa3a0fb655551dd">admin_page_logs()</a>, <a class="el" href="admin_8php.html#a54128076986ba80c4a103de3fc3e19a8">admin_page_plugins()</a>, <a class="el" href="admin_8php.html#a3deba594ca1e11694eac1de0b724ef0a">admin_page_profs()</a>, <a class="el" href="admin_8php.html#ac0f3bd12431c056aad77bac9d09fa30e">admin_page_site()</a>, <a class="el" href="admin_8php.html#ac6e95b920b5abd030cc522964987087a">admin_page_summary()</a>, <a class="el" href="admin_8php.html#af124619fdc278fe2bf14c45ddaa260fb">admin_page_themes()</a>, <a class="el" href="admin_8php.html#a62f10f90c47686c9c3c37c4c03a108d2">admin_page_users()</a>, <a class="el" href="identity_8php.html#aa870d2c1f558cfd52bef05bc124e8fa4">advanced_profile()</a>, <a class="el" href="text_8php.html#a75c243e06341ec16bd5a44b9b1cacd85">alt_pager()</a>, <a class="el" href="include_2api_8php.html#a5990101034e7abf6404feba3cd273629">api_apply_template()</a>, <a class="el" href="mod_2api_8php.html#a33315b5bbf5418f6850b2038107b526d">api_content()</a>, <a class="el" href="include_2apps_8php.html#a1b2e737f477a2e0d9d11ef14adc5aa66">app_render()</a>, <a class="el" href="appman_8php.html#af48805ac2f6f123f2681a8ae1c6f123f">appman_content()</a>, <a class="el" href="mod_2apps_8php.html#a546016cb960d0b110ee8e489dfa6c27c">apps_content()</a>, <a class="el" href="view_2theme_2apw_2php_2config_8php.html#ad59fc09da66b66267f9753c8b2dd68d0">apw_form()</a>, <a class="el" href="blocks_8php.html#a2531a8fd51db3cecb2eb20c002c66e12">blocks_content()</a>, <a class="el" href="classApp.html#a08f0537964d98958d218066364cff785">App\build_pagehead()</a>, <a class="el" href="contact__widgets_8php.html#a165eb021e61c4dcab2a552f28628d353">categories_widget()</a>, <a class="el" href="channel_8php.html#a9c6a6179e0e626398ebecc6151905ef1">channel_content()</a>, <a class="el" href="mod_2chat_8php.html#a8b0b8bee6fef6477e8c64c5e951b1b4f">chat_content()</a>, <a class="el" href="boot_8php.html#a4c02d88e66852a01bd5a1feecb7c3ce3">check_config()</a>, <a class="el" href="setup_8php.html#a14d208682a88632290c895d20da6e7d6">check_php()</a>, <a class="el" href="common_8php.html#ab63408f39abef7a6915186e8dabc5a96">common_content()</a>, <a class="el" href="contact__widgets_8php.html#a552f8544528cec0c995cea7287ea9d65">common_friends_visitor_widget()</a>, <a class="el" href="connect_8php.html#a489f0a66c660de6ec4d6917b27674f07">connect_content()</a>, <a class="el" href="connections_8php.html#aec2e457420fce3e3bf6a9f48e36df25c">connections_content()</a>, <a class="el" href="connedit_8php.html#a795acb3d9d841f55c255d7611681ab67">connedit_content()</a>, <a class="el" href="boot_8php.html#acc4e0c910af066148b810e5fde55fff1">construct_page()</a>, <a class="el" href="text_8php.html#ad6432621d0fafcbcf3d3b9b49bef7784">contact_block()</a>, <a class="el" href="conversation_8php.html#affea1afb3f32ca41e966c8ddb4204d81">conversation()</a>, <a class="el" href="delegate_8php.html#a943eea8996ef348eb845c498f9f354dd">delegate_content()</a>, <a class="el" href="text_8php.html#a87a3cefc603302c78982f1d8e1245265">design_tools()</a>, <a class="el" href="diaspora_8php.html#af4698b165766f83d89ec1ea964bc92cc">diaspora_send_followup()</a>, <a class="el" href="diaspora_8php.html#ae6f52efd81fe515cd9912bc8293abf5b">diaspora_send_images()</a>, <a class="el" href="diaspora_8php.html#aeb2bb78f620dbf51d9335e6eb7444f2c">diaspora_send_mail()</a>, <a class="el" href="diaspora_8php.html#a0b3628a5e53332c3d3196b689fe2b94d">diaspora_send_relay()</a>, <a class="el" href="diaspora_8php.html#a1704748aa2384c73e43f10e71defd31a">diaspora_send_retraction()</a>, <a class="el" href="diaspora_8php.html#a33ae0c4606a7df4d801c05507d87f668">diaspora_send_status()</a>, <a class="el" href="diaspora_8php.html#a69f250b078a46e405647428ec3399a16">diaspora_share()</a>, <a class="el" href="diaspora_8php.html#ab736d6f32b5de31c97cb579fc730e200">diaspora_unshare()</a>, <a class="el" href="dir__fns_8php.html#acf621621e929d49441da30aad76a58cf">dir_safe_mode()</a>, <a class="el" href="dir__fns_8php.html#ae56881d69bb6f8e828c9e35454386774">dir_sort_links()</a>, <a class="el" href="mod_2directory_8php.html#aac79396570d759da2efac24fcedf5b44">directory_content()</a>, <a class="el" href="display_8php.html#a37137c98d47bf3306f4c2bb9f5b60de0">display_content()</a>, <a class="el" href="editblock_8php.html#abbe8f55de06967bc8d79d620509a49e6">editblock_content()</a>, <a class="el" href="editlayout_8php.html#aa877e4157a26b099de904164181dd386">editlayout_content()</a>, <a class="el" href="editpost_8php.html#a34011690864d122680c802e9e748ccfb">editpost_content()</a>, <a class="el" href="editwebpage_8php.html#a375e945255fad79a71036528f7480650">editwebpage_content()</a>, <a class="el" href="events_8php.html#a1d293fb217ae6bc9e3858c4b32e363ec">events_content()</a>, <a class="el" href="fbrowser_8php.html#aee476addcf7a3e0fe9454f7dfd5a56c4">fbrowser_content()</a>, <a class="el" href="contact__widgets_8php.html#a1eda66319d170f60a8d07c7ece95533b">fileas_widget()</a>, <a class="el" href="filer_8php.html#a5fd5d7e61b2f9c43cb5f110c89dc4274">filer_content()</a>, <a class="el" href="filestorage_8php.html#a61bb1be78472555df4ce619f51014040">filestorage_content()</a>, <a class="el" href="contact__widgets_8php.html#a57e73ebcfd62bb5d8c7a7b9e663726d6">findpeople_widget()</a>, <a class="el" href="text_8php.html#a3054189cff173977f4216c9a3dd29e1b">format_categories()</a>, <a class="el" href="text_8php.html#a4e4d42b0a805148d9f9a92bcac89bf91">format_filer()</a>, <a class="el" href="classRedMatrix_1_1RedDAV_1_1RedBrowser.html#af764d5f14df751f9ec86c34fab300c09">RedMatrix\RedDAV\RedBrowser\generateDirectoryIndex()</a>, <a class="el" href="identity_8php.html#ad2c97627a313d53df1a1c7b4215ddb51">get_birthdays()</a>, <a class="el" href="classItem.html#a3ee7667c2ec6cd7657328e27848c0bdf">Item\get_comment_box()</a>, <a class="el" href="identity_8php.html#ae381db3d43f8e7c1da8b15d14ecf5312">get_events()</a>, <a class="el" href="items_8php.html#a04a35b610acfe54434df08adec39c0c7">get_feed_for()</a>, <a class="el" href="mod_2group_8php.html#a07a64f6c65b0080d8190b3d9728a7a83">group_content()</a>, <a class="el" href="include_2group_8php.html#a6a69bd7be032fa8ce4e49c43a42cc6e9">group_side()</a>, <a class="el" href="help_8php.html#af055e15f600ffa6fbca9386fdf715224">help_content()</a>, <a class="el" href="home_8php.html#a6e3dbf78f4ed74ab2577de221190b33f">home_content()</a>, <a class="el" href="hostxrd_8php.html#aa37ffc8e7900bc76c4828bd25916db92">hostxrd_init()</a>, <a class="el" href="classRedMatrix_1_1RedDAV_1_1RedBrowser.html#a3bd98af2d1cdfd8f26deb914596176cf">RedMatrix\RedDAV\RedBrowser\htmlActionsPanel()</a>, <a class="el" href="identity_8php.html#a2ab5172eabd375869060c9ad68323f5c">identity_selector()</a>, <a class="el" href="import_8php.html#afdf25ed70096d5dbf4f6d0ca79fea184">import_content()</a>, <a class="el" href="invite_8php.html#a244385b28cfd021d308715f01158bfd9">invite_content()</a>, <a class="el" href="text_8php.html#a71f6952243d3fe1c5a8154f78027e29c">lang_selector()</a>, <a class="el" href="layouts_8php.html#a6e0193759ad9eef76d3df2db24237b50">layouts_content()</a>, <a class="el" href="locs_8php.html#a6c900f53970c0d0e738d2fe06d27ca44">locs_content()</a>, <a class="el" href="boot_8php.html#aefecf8599036df7f1b95d6820e0e2fa4">login()</a>, <a class="el" href="lostpass_8php.html#a0314d94e48c789b1b3a201d740c9eab3">lostpass_content()</a>, <a class="el" href="lostpass_8php.html#a8ed35ba71a4404eaf4903da61d0321cc">lostpass_post()</a>, <a class="el" href="mail_8php.html#a3c7c485fc69f92371e8b20936040eca1">mail_content()</a>, <a class="el" href="manage_8php.html#a2bca247b5296827638959138367db4f5">manage_content()</a>, <a class="el" href="match_8php.html#a1dd853e959b9e70c1911bb2fb5f5130d">match_content()</a>, <a class="el" href="mod_2menu_8php.html#a6fed23af14d71a78a4153c8363a685cf">menu_content()</a>, <a class="el" href="include_2menu_8php.html#a03a5deed3908543581c074ce333e9d6a">menu_render()</a>, <a class="el" href="mod_2message_8php.html#ac72dfed3ce08fcb331d66b37edc6e15f">message_content()</a>, <a class="el" href="text_8php.html#a2a902f5fdba8646333e997898ac45ea3">micropro()</a>, <a class="el" href="include_2group_8php.html#ab0e422a0f31c0c64fd9084ca03d85f32">mini_group_select()</a>, <a class="el" href="mitem_8php.html#a7a31b702ecad18eeb6a38b243ff0037e">mitem_content()</a>, <a class="el" href="mood_8php.html#a721b9b6703b3234a005641c92d409b8f">mood_content()</a>, <a class="el" href="nav_8php.html#a43be0df73b90647ea70947ce004e231e">nav()</a>, <a class="el" href="mod_2network_8php.html#a43f2f29b90c5e29072c561934bc8f8b4">network_content()</a>, <a class="el" href="new__channel_8php.html#ae585191610f79da129492482ce8e2fee">new_channel_content()</a>, <a class="el" href="enotify_8php.html#a3e9a9355b243777c488d2a9883908dfc">notification()</a>, <a class="el" href="notifications_8php.html#aadd0b5525bd8c283a5d8a37982bbfe62">notifications_content()</a>, <a class="el" href="mod_2notify_8php.html#acdf3851688ebd6d6a575eb84ef9febe3">notify_content()</a>, <a class="el" href="include_2oembed_8php.html#a26bb4c1e330d2f94ea7b6ce2fe970cf3">oembed_format_object()</a>, <a class="el" href="oexchange_8php.html#ac8e2e469ddc3db984b0c1b44558aca59">oexchange_init()</a>, <a class="el" href="opensearch_8php.html#ad13034877a496565ac7d99e9fc6f55e9">opensearch_init()</a>, <a class="el" href="p_8php.html#af9d5530ca0b3dc9409cf591c39e2480e">p_init()</a>, <a class="el" href="page__widgets_8php.html#a39d547771c5f12a17c097436c82f0fa2">pagelist_widget()</a>, <a class="el" href="pdledit_8php.html#a59cb550f6b7a4e7d8196fbc9de601619">pdledit_content()</a>, <a class="el" href="include_2photos_8php.html#af24c6aeed28ecc31ec39e7d9a1804979">photos_album_widget()</a>, <a class="el" href="mod_2photos_8php.html#aa87382611a66ec5effdb2d78f13f5812">photos_content()</a>, <a class="el" href="poco_8php.html#a53def16f75e3d41f1d2bb7cfa4905498">poco_init()</a>, <a class="el" href="poke_8php.html#ac9190563a8da9c07a16f9dcd71cf6993">poke_content()</a>, <a class="el" href="poll_8php.html#a3314c26bd2ac0ed831cebf3315cd3263">poll_content()</a>, <a class="el" href="acl__selectors_8php.html#ad25bba63a51a2b0b5b463efae50df528">populate_acl()</a>, <a class="el" href="identity_8php.html#a432259b2cf5b6f59be53e71db9f2c7dc">profile_sidebar()</a>, <a class="el" href="profiles_8php.html#a46975783b8b8d70402d51487eb1f0b00">profiles_content()</a>, <a class="el" href="rbmark_8php.html#a43fec4960b50926251574762cc491f76">rbmark_content()</a>, <a class="el" href="view_2theme_2redbasic_2php_2config_8php.html#a8574a41fa9735ee391ba57ab24b93793">redbasic_form()</a>, <a class="el" href="register_8php.html#a0e91f57f111407ea8d3223a05022bb2a">register_content()</a>, <a class="el" href="removeaccount_8php.html#a516e7380b9e5796054aa8245f3509695">removeaccount_content()</a>, <a class="el" href="removeme_8php.html#a065a589caa2aa84c60f7073a28f0ad9c">removeme_content()</a>, <a class="el" href="rmagic_8php.html#a3e28db1e5cfa7e5c2617f90222c1caef">rmagic_content()</a>, <a class="el" href="rpost_8php.html#a8190354d789000806d9879aea276728f">rpost_content()</a>, <a class="el" href="text_8php.html#a876e94892867019935b348b573299352">search()</a>, <a class="el" href="search_8php.html#ab2568591359edde5b483a6cd9a24b2cc">search_content()</a>, <a class="el" href="text_8php.html#aae91e4d2a2c6f7a9daccd2c186ae3447">searchbox()</a>, <a class="el" href="account_8php.html#a014de2d5d5c9785de5bf547a485822fa">send_reg_approval_email()</a>, <a class="el" href="account_8php.html#aa9c29c497c17d8f9344dce8631ad8761">send_verification_email()</a>, <a class="el" href="setup_8php.html#a88247384a96e14516f474d7af6a465c1">setup_content()</a>, <a class="el" href="setup_8php.html#a13cf286774149a0a7bd8adb8179cec75">setup_post()</a>, <a class="el" href="siteinfo_8php.html#a70c09bfb6dd1c86a125a35f62ed53656">siteinfo_content()</a>, <a class="el" href="sources_8php.html#ac442ccef080ab95772d8929fcafcb4b7">sources_content()</a>, <a class="el" href="suggest_8php.html#a58748a8235d4523f8333847f3e42dd91">suggest_content()</a>, <a class="el" href="text_8php.html#af9c9ac3f74c82dc60acfa404d0e9dc53">theme_attachments()</a>, <a class="el" href="thing_8php.html#a24a35f1e64029a67fdbea94a776ae04b">thing_content()</a>, <a class="el" href="uexport_8php.html#ae6f79d60916c01675c8cf663cb5fec84">uexport_content()</a>, <a class="el" href="account_8php.html#ac5c570a2d46446bad4dd2501e9c5a4b1">user_allow()</a>, <a class="el" href="Contact_8php.html#a6348a532c9d26cd1c9afbc9aa6aa8960">vcard_from_xchan()</a>, <a class="el" href="account_8php.html#acd6b8d2124ba5ea4f4794d2c58ae8bf5">verify_email_address()</a>, <a class="el" href="viewconnections_8php.html#ab6c4d983e97b3a8a879567ff76507776">viewconnections_content()</a>, <a class="el" href="vote_8php.html#a6aa67489bf458ca5e3206e46dac68596">vote_content()</a>, <a class="el" href="webpages_8php.html#af3b7397d4abc153e3d2147740ee1a41d">webpages_content()</a>, <a class="el" href="widgets_8php.html#add9b24d3304e529a7975e96122315554">widget_affinity()</a>, <a class="el" href="widgets_8php.html#aced5cb177f630b30799c5eab873ee75c">widget_appselect()</a>, <a class="el" href="widgets_8php.html#a7b1e357b5a2027718470b77ec921fc65">widget_archive()</a>, <a class="el" href="widgets_8php.html#a0e2f5179ed1a73b282dfda7270fcabb3">widget_bookmarkedchats()</a>, <a class="el" href="widgets_8php.html#a47c72aac42058ea086c9ef8651c259da">widget_chatroom_list()</a>, <a class="el" href="widgets_8php.html#a5ab3b64496e02cab56429978ad55f1c0">widget_filer()</a>, <a class="el" href="widgets_8php.html#ad1bf7aa69e8d100d95faba17c7bc91cd">widget_follow()</a>, <a class="el" href="widgets_8php.html#afa2e55a78f95667a6da082efac7fec74">widget_mailmenu()</a>, <a class="el" href="widgets_8php.html#a45ea061dabe9a8372e4ca3b9e5714256">widget_notes()</a>, <a class="el" href="widgets_8php.html#a94203eb9bcd63cbdecbbcb15163598d8">widget_savedsearch()</a>, <a class="el" href="widgets_8php.html#aaa73bcf1702eaadd9dcd253502f55e01">widget_settings_menu()</a>, <a class="el" href="widgets_8php.html#a50b1410238100c8a94c06b0aa63ee3b8">widget_suggestedchats()</a>, <a class="el" href="widgets_8php.html#a0d404276fedc59f5038cf5c085028326">widget_suggestions()</a>, <a class="el" href="page__widgets_8php.html#a1a1e729da27f252cab6678288a17958f">writepages_widget()</a>, and <a class="el" href="xrd_8php.html#aee3cf087968e4a0ff3a87de16eb23270">xrd_init()</a>.</p>
</div>
</div>
@@ -2037,7 +2218,7 @@ Variables</h2></td></tr>
</table>
</div><div class="memdoc">
-<p>Referenced by <a class="el" href="include_2group_8php.html#a22a81875259c7d3d64d4848afea6b345">expand_groups()</a>, <a class="el" href="taxonomy_8php.html#a7747fa859ac56fbffd4f9782d85505de">get_things()</a>, <a class="el" href="identity_8php.html#a3570a4eb77332b292d394c4132cb8f03">identity_basic_export()</a>, <a class="el" href="lockview_8php.html#a851e26ab9a1008df5c5ebebea31e9b44">lockview_content()</a>, <a class="el" href="notifier_8php.html#a568c502f626cff95e344c0748938b85d">notifier_run()</a>, <a class="el" href="taxonomy_8php.html#aaf90ba8b839d6459065f39a4f1109b8a">tagadelic()</a>, and <a class="el" href="zot_8php.html#aeea071f17e306fe3d0c488551906bfab">zot_import()</a>.</p>
+<p>Referenced by <a class="el" href="include_2group_8php.html#a22a81875259c7d3d64d4848afea6b345">expand_groups()</a>, <a class="el" href="taxonomy_8php.html#a7747fa859ac56fbffd4f9782d85505de">get_things()</a>, <a class="el" href="identity_8php.html#afaedbc8e2d2a70ec8b006162baac5249">identity_basic_export()</a>, <a class="el" href="lockview_8php.html#a851e26ab9a1008df5c5ebebea31e9b44">lockview_content()</a>, <a class="el" href="notifier_8php.html#a568c502f626cff95e344c0748938b85d">notifier_run()</a>, <a class="el" href="taxonomy_8php.html#aaf90ba8b839d6459065f39a4f1109b8a">tagadelic()</a>, and <a class="el" href="zot_8php.html#aeea071f17e306fe3d0c488551906bfab">zot_import()</a>.</p>
</div>
</div>
@@ -2055,7 +2236,7 @@ Variables</h2></td></tr>
</table>
</div><div class="memdoc">
-<p>Referenced by <a class="el" href="cloud_8php.html#a1b79a6fe0454bc76673ad9aef55bf02d">cloud_init()</a>, <a class="el" href="items_8php.html#a4e6d7639431e0dd8e9f4dba8e1ac408b">red_zrl_callback()</a>, and <a class="el" href="items_8php.html#a78a60e39f6991bd3324a24dcbf9dac5a">red_zrlify_img_callback()</a>.</p>
+<p>Referenced by <a class="el" href="cloud_8php.html#ad2e96e917852f27dedfc263d37e13756">cloud_init()</a>, <a class="el" href="items_8php.html#a4e6d7639431e0dd8e9f4dba8e1ac408b">red_zrl_callback()</a>, and <a class="el" href="items_8php.html#a78a60e39f6991bd3324a24dcbf9dac5a">red_zrlify_img_callback()</a>.</p>
</div>
</div>
@@ -2117,6 +2298,8 @@ Variables</h2></td></tr>
</table>
</div><div class="memdoc">
+<p>Referenced by <a class="el" href="include_2network_8php.html#a63e62946e194928eb17c5a9f2bbef0fe">discover_by_webbie()</a>.</p>
+
</div>
</div>
<a class="anchor" id="a740ad03e00459039a2c0992246c4e727"></a>
@@ -2169,7 +2352,7 @@ Variables</h2></td></tr>
</table>
</div><div class="memdoc">
-<p>Referenced by <a class="el" href="filer_8php.html#a5fd5d7e61b2f9c43cb5f110c89dc4274">filer_content()</a>, and <a class="el" href="items_8php.html#a896c1809d58f2d7a42cfe14577958ddf">get_atom_elements()</a>.</p>
+<p>Referenced by <a class="el" href="diaspora_8php.html#a006731620a5242d410358b32678e48e3">diaspora_asphoto()</a>, <a class="el" href="diaspora_8php.html#a0fb2abe304aae19efc040a5e6b917829">diaspora_comment()</a>, <a class="el" href="diaspora_8php.html#adef30b6fac948baedcc7194d5d155b5f">diaspora_conversation()</a>, <a class="el" href="diaspora_8php.html#a5d57518545baa31cf8a85a937a267681">diaspora_like()</a>, <a class="el" href="diaspora_8php.html#a7cff2f8f11044c1b3a360f20e1bbee46">diaspora_message()</a>, <a class="el" href="diaspora_8php.html#a71fe9bb66626b4197ae018a230778bb2">diaspora_photo()</a>, <a class="el" href="diaspora_8php.html#a20b968d64ef26afe5cb0cc75a7570a31">diaspora_post()</a>, <a class="el" href="diaspora_8php.html#a900abf51398b2ef26cd2cd31c52f1b0f">diaspora_profile()</a>, <a class="el" href="diaspora_8php.html#ac1ab782a34552a7c6b4dc961754ed598">diaspora_request()</a>, <a class="el" href="diaspora_8php.html#a2bf43f6b5890897f425ef4325d34b007">diaspora_reshare()</a>, <a class="el" href="diaspora_8php.html#a938c7ee808d38725c0988fa6006805b9">diaspora_retraction()</a>, <a class="el" href="diaspora_8php.html#aa34d2748bb97e9e193cacd572f335055">diaspora_signed_retraction()</a>, <a class="el" href="include_2network_8php.html#a5176176ddc1906d91f186df6fbd87b48">discover_by_url()</a>, <a class="el" href="filer_8php.html#a5fd5d7e61b2f9c43cb5f110c89dc4274">filer_content()</a>, <a class="el" href="items_8php.html#a5e5be7bf1f8257dec0b2647e60a3f3f1">get_atom_elements()</a>, and <a class="el" href="diaspora_8php.html#ac9e41e46626dc608204bf4b5e16e62d7">get_diaspora_reshare_xml()</a>.</p>
</div>
</div>
@@ -2209,7 +2392,7 @@ Variables</h2></td></tr>
</div>
</div>
-<a class="anchor" id="a36a2e5d418ee81140f25c4233cfecd1f"></a>
+<a class="anchor" id="a905c3895feb6f276df23f07f16f9bb52"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
@@ -2223,7 +2406,13 @@ Variables</h2></td></tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">&#160;</td>
- <td class="paramname"><em>$abook</em> = <code>true</code>&#160;</td>
+ <td class="paramname"><em>$abook</em> = <code>true</code>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">&#160;</td>
+ <td class="paramname"><em>$effective_uid</em> = <code>0</code>&#160;</td>
</tr>
<tr>
<td></td>
@@ -2233,7 +2422,7 @@ Variables</h2></td></tr>
</table>
</div><div class="memdoc">
-<p>Referenced by <a class="el" href="include_2api_8php.html#a4c6fb9fb5203aa60f4b3afd4521db8ea">api_format_items()</a>, <a class="el" href="include_2api_8php.html#a528d8070ee74ea800102936ce73cf366">api_statuses_home_timeline()</a>, <a class="el" href="include_2api_8php.html#ad24ce1bf20867add4c9211a8eaf93f22">api_statuses_public_timeline()</a>, <a class="el" href="include_2api_8php.html#af6f1d89cdb0a0621025efbec1597bc63">api_statuses_show()</a>, <a class="el" href="block_8php.html#a8a82a470acdfbc7a8e749509caeeea45">block_content()</a>, <a class="el" href="channel_8php.html#a9c6a6179e0e626398ebecc6151905ef1">channel_content()</a>, <a class="el" href="display_8php.html#a37137c98d47bf3306f4c2bb9f5b60de0">display_content()</a>, <a class="el" href="event_8php.html#a7378e839ac3de9d55579eb3ec48eaf92">event_store_item()</a>, <a class="el" href="events_8php.html#a1d293fb217ae6bc9e3858c4b32e363ec">events_content()</a>, <a class="el" href="home_8php.html#aa1cf697851a646755baf537f75334c46">home_content()</a>, <a class="el" href="item_8php.html#a693cd09805755ab85bbb5ecae69a48c3">item_post()</a>, <a class="el" href="items_8php.html#a756738301f2ed96be50232500677d58a">items_fetch()</a>, <a class="el" href="mod_2network_8php.html#a43f2f29b90c5e29072c561934bc8f8b4">network_content()</a>, <a class="el" href="enotify_8php.html#a3e9a9355b243777c488d2a9883908dfc">notification()</a>, <a class="el" href="notifier_8php.html#a568c502f626cff95e344c0748938b85d">notifier_run()</a>, <a class="el" href="page_8php.html#a91a5f649f68406149108bded1dc90b22">page_content()</a>, <a class="el" href="ping_8php.html#a77217b1b190b4c5d8770867b45f0c0a1">ping_init()</a>, <a class="el" href="search_8php.html#ab2568591359edde5b483a6cd9a24b2cc">search_content()</a>, <a class="el" href="share_8php.html#afeb26046bdd02567ecd29ab5f188b249">share_init()</a>, <a class="el" href="widgets_8php.html#a313a8d10ab81c71357c12e67e4d7efd5">widget_item()</a>, and <a class="el" href="items_8php.html#a004e89d86b0f29b2c4da20108ecc4091">zot_feed()</a>.</p>
+<p>Referenced by <a class="el" href="include_2api_8php.html#a4c6fb9fb5203aa60f4b3afd4521db8ea">api_format_items()</a>, <a class="el" href="include_2api_8php.html#a528d8070ee74ea800102936ce73cf366">api_statuses_home_timeline()</a>, <a class="el" href="include_2api_8php.html#ad24ce1bf20867add4c9211a8eaf93f22">api_statuses_public_timeline()</a>, <a class="el" href="include_2api_8php.html#af6f1d89cdb0a0621025efbec1597bc63">api_statuses_show()</a>, <a class="el" href="block_8php.html#a8a82a470acdfbc7a8e749509caeeea45">block_content()</a>, <a class="el" href="channel_8php.html#a9c6a6179e0e626398ebecc6151905ef1">channel_content()</a>, <a class="el" href="display_8php.html#a37137c98d47bf3306f4c2bb9f5b60de0">display_content()</a>, <a class="el" href="event_8php.html#a7378e839ac3de9d55579eb3ec48eaf92">event_store_item()</a>, <a class="el" href="events_8php.html#a1d293fb217ae6bc9e3858c4b32e363ec">events_content()</a>, <a class="el" href="home_8php.html#a6e3dbf78f4ed74ab2577de221190b33f">home_content()</a>, <a class="el" href="identity_8php.html#afaedbc8e2d2a70ec8b006162baac5249">identity_basic_export()</a>, <a class="el" href="item_8php.html#a693cd09805755ab85bbb5ecae69a48c3">item_post()</a>, <a class="el" href="items_8php.html#a756738301f2ed96be50232500677d58a">items_fetch()</a>, <a class="el" href="mod_2network_8php.html#a43f2f29b90c5e29072c561934bc8f8b4">network_content()</a>, <a class="el" href="enotify_8php.html#a3e9a9355b243777c488d2a9883908dfc">notification()</a>, <a class="el" href="notifier_8php.html#a568c502f626cff95e344c0748938b85d">notifier_run()</a>, <a class="el" href="page_8php.html#a91a5f649f68406149108bded1dc90b22">page_content()</a>, <a class="el" href="ping_8php.html#a77217b1b190b4c5d8770867b45f0c0a1">ping_init()</a>, <a class="el" href="search_8php.html#ab2568591359edde5b483a6cd9a24b2cc">search_content()</a>, <a class="el" href="share_8php.html#afeb26046bdd02567ecd29ab5f188b249">share_init()</a>, <a class="el" href="widgets_8php.html#a313a8d10ab81c71357c12e67e4d7efd5">widget_item()</a>, and <a class="el" href="items_8php.html#a1cf89557f32d5dfbe8bd90448dc1aa92">zot_feed()</a>.</p>
</div>
</div>
@@ -2259,7 +2448,7 @@ Variables</h2></td></tr>
</dl>
<dl class="section return"><dt>Returns</dt><dd>string Escaped text. </dd></dl>
-<p>Referenced by <a class="el" href="text_8php.html#acedb584f65114a33f389efb796172a91">array_xmlify()</a>, <a class="el" href="items_8php.html#a016dd86c827d08db89061ea81d15c6cb">atom_author()</a>, <a class="el" href="items_8php.html#a275108c050f7eb18bcbb5018e6b81cf6">atom_entry()</a>, <a class="el" href="items_8php.html#aa9e99613d38a97b39c8cf5449699c2ee">construct_activity_object()</a>, <a class="el" href="items_8php.html#aa579bc4445d60098b1410961ca8e96b7">construct_activity_target()</a>, <a class="el" href="items_8php.html#aa723c0571e314a1853a24c5854b4f54f">encode_rel_links()</a>, <a class="el" href="items_8php.html#a896c1809d58f2d7a42cfe14577958ddf">get_atom_elements()</a>, <a class="el" href="items_8php.html#a04a35b610acfe54434df08adec39c0c7">get_feed_for()</a>, <a class="el" href="items_8php.html#a09d425596b9f8663472cf7474ad36d96">item_getfeedattach()</a>, <a class="el" href="subthread_8php.html#a50368f3d825b77996030528e7fbfa3d3">subthread_content()</a>, <a class="el" href="tagger_8php.html#a0e4a3eb177d1684553c547503d67161c">tagger_content()</a>, and <a class="el" href="include_2network_8php.html#a9e9da2aafb806c98ecdc318604e60dc6">xml_status()</a>.</p>
+<p>Referenced by <a class="el" href="text_8php.html#acedb584f65114a33f389efb796172a91">array_xmlify()</a>, <a class="el" href="items_8php.html#a016dd86c827d08db89061ea81d15c6cb">atom_author()</a>, <a class="el" href="items_8php.html#a275108c050f7eb18bcbb5018e6b81cf6">atom_entry()</a>, <a class="el" href="items_8php.html#aa9e99613d38a97b39c8cf5449699c2ee">construct_activity_object()</a>, <a class="el" href="items_8php.html#aa579bc4445d60098b1410961ca8e96b7">construct_activity_target()</a>, <a class="el" href="diaspora_8php.html#a20b968d64ef26afe5cb0cc75a7570a31">diaspora_post()</a>, <a class="el" href="diaspora_8php.html#af4698b165766f83d89ec1ea964bc92cc">diaspora_send_followup()</a>, <a class="el" href="diaspora_8php.html#ae6f52efd81fe515cd9912bc8293abf5b">diaspora_send_images()</a>, <a class="el" href="diaspora_8php.html#aeb2bb78f620dbf51d9335e6eb7444f2c">diaspora_send_mail()</a>, <a class="el" href="diaspora_8php.html#a0b3628a5e53332c3d3196b689fe2b94d">diaspora_send_relay()</a>, <a class="el" href="diaspora_8php.html#a1704748aa2384c73e43f10e71defd31a">diaspora_send_retraction()</a>, <a class="el" href="diaspora_8php.html#a33ae0c4606a7df4d801c05507d87f668">diaspora_send_status()</a>, <a class="el" href="items_8php.html#aa723c0571e314a1853a24c5854b4f54f">encode_rel_links()</a>, <a class="el" href="items_8php.html#a5e5be7bf1f8257dec0b2647e60a3f3f1">get_atom_elements()</a>, <a class="el" href="items_8php.html#a04a35b610acfe54434df08adec39c0c7">get_feed_for()</a>, <a class="el" href="items_8php.html#a09d425596b9f8663472cf7474ad36d96">item_getfeedattach()</a>, <a class="el" href="p_8php.html#af9d5530ca0b3dc9409cf591c39e2480e">p_init()</a>, <a class="el" href="subthread_8php.html#a50368f3d825b77996030528e7fbfa3d3">subthread_content()</a>, <a class="el" href="tagger_8php.html#a0e4a3eb177d1684553c547503d67161c">tagger_content()</a>, and <a class="el" href="include_2network_8php.html#a9e9da2aafb806c98ecdc318604e60dc6">xml_status()</a>.</p>
</div>
</div>
diff --git a/doc/html/text_8php.js b/doc/html/text_8php.js
index 961e2f581..e6fccb430 100644
--- a/doc/html/text_8php.js
+++ b/doc/html/text_8php.js
@@ -19,6 +19,7 @@ var text_8php =
[ "dlogger", "text_8php.html#a0a1f7c0e97f9ecbebf3e5834582b014c", null ],
[ "escape_tags", "text_8php.html#aa5148a0dfea2a1ca64c3d52f10aa2d64", null ],
[ "expand_acl", "text_8php.html#ae4282a39492caa23ccbc2ce98e54f110", null ],
+ [ "extra_query_args", "text_8php.html#a3ba47b4dd1248e7e51095572e7b814dc", null ],
[ "feed_hublinks", "text_8php.html#a8d8c4a11e53461caca21181ebd72daca", null ],
[ "feed_salmonlinks", "text_8php.html#a89929fa6f70a8ba54d5273fcf622b665", null ],
[ "find_xchan_in_array", "text_8php.html#ace3c98538c63e09b70a363210b414112", null ],
@@ -27,12 +28,15 @@ var text_8php =
[ "format_filer", "text_8php.html#a4e4d42b0a805148d9f9a92bcac89bf91", null ],
[ "format_hashtags", "text_8php.html#a3a0c432a484c17d7720b8ba2d6bfdd59", null ],
[ "format_mentions", "text_8php.html#ad8c6e13d6accf057136c5f30a23a5f08", null ],
+ [ "generate_map", "text_8php.html#ae0333c304ec5b4b72e66bb2933fa7357", null ],
+ [ "generate_named_map", "text_8php.html#af5eb4a9c1599764f80c5bc71e0125d4b", null ],
[ "get_mentions", "text_8php.html#a76d1b3435c067978d7b484c45f56472b", null ],
[ "get_mood_verbs", "text_8php.html#a736db13a966b8abaf8c9198faa35911a", null ],
[ "get_plink", "text_8php.html#aac0969ae09853205992ba06ab9f9f61a", null ],
[ "get_poke_verbs", "text_8php.html#aa46f941155c2ac1155f2f17ffb0adb66", null ],
[ "get_rel_link", "text_8php.html#a3972701c5c83624ec4e2d06242f614e7", null ],
[ "get_tags", "text_8php.html#a4659fbc4e54ddc700c3aa66b9092c623", null ],
+ [ "handle_tag", "text_8php.html#aa22feef4de326e1d7078dedd892e615c", null ],
[ "html2bb_video", "text_8php.html#a138a3a611fa7f4f3630674145fc826bf", null ],
[ "ids_to_querystr", "text_8php.html#a436a8de00c942364c2d0fcfc7e1f4b5a", null ],
[ "in_arrayi", "text_8php.html#a75c326298519ed14ebe762194c8a3f2a", null ],
@@ -46,6 +50,7 @@ var text_8php =
[ "legal_webbie", "text_8php.html#a2690ad67bb6fb97ef69de3e8d23f2728", null ],
[ "link_compare", "text_8php.html#a47c1e4a5f3f53027daacd8a9db24f285", null ],
[ "linkify", "text_8php.html#a11255c8c4e5245b6c24f97684826aa54", null ],
+ [ "list_smilies", "text_8php.html#a4446c7f8996a280f7e08b7bfe6c6c8bc", null ],
[ "logger", "text_8php.html#a030fa5ecc64168af0c4f44897a9bce63", null ],
[ "magic_link", "text_8php.html#a1e510c53624933ce9b7d6715784894db", null ],
[ "magiclink_url", "text_8php.html#a24d441d30df4b8e6bf6780bf62a5e2c6", null ],
@@ -85,7 +90,7 @@ var text_8php =
[ "unxmlify", "text_8php.html#a1360fed7f918d859daaca1c9f384f9af", null ],
[ "valid_email", "text_8php.html#a6a3d80a6c6fb234fd0bac44203b828eb", null ],
[ "xchan_mail_query", "text_8php.html#a543447c5ed766535221e2d9636b379ee", null ],
- [ "xchan_query", "text_8php.html#a36a2e5d418ee81140f25c4233cfecd1f", null ],
+ [ "xchan_query", "text_8php.html#a905c3895feb6f276df23f07f16f9bb52", null ],
[ "xmlify", "text_8php.html#aaed4413ed8918838b517e3b2fafaea0d", null ],
[ "z_input_filter", "text_8php.html#a324c58f37f6acdf9cd1922aa76077d9f", null ],
[ "zidify_callback", "text_8php.html#a405afe814a23f3bd94d826101aa168ab", null ],
diff --git a/doc/html/theme_2mytheme_2php_2default_8php.html b/doc/html/theme_2mytheme_2php_2default_8php.html
index e3ebc868e..ea01d8615 100644
--- a/doc/html/theme_2mytheme_2php_2default_8php.html
+++ b/doc/html/theme_2mytheme_2php_2default_8php.html
@@ -112,7 +112,7 @@ $(document).ready(function(){initNavTree('theme_2mytheme_2php_2default_8php.html
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="var-members"></a>
Variables</h2></td></tr>
-<tr class="memitem:a3987f5547ceb7e36a210a66a06241a5a"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="theme_2mytheme_2php_2default_8php.html#a3987f5547ceb7e36a210a66a06241a5a">if</a> (<a class="el" href="boot_8php.html#a01353c9abebc3544ea080ac161729632">x</a>($<a class="el" href="mod__import_8php.html#a8db1899eeeb44dabd0904065b63627bb">page</a>,'htmlhead')) echo $<a class="el" href="mod__import_8php.html#a8db1899eeeb44dabd0904065b63627bb">page</a>['htmlhead']?&gt;&lt;/head &gt;&lt; body &gt;&lt; header &gt;&lt;?php if(<a class="el" href="boot_8php.html#a01353c9abebc3544ea080ac161729632">x</a>($<a class="el" href="mod__import_8php.html#a8db1899eeeb44dabd0904065b63627bb">page</a></td></tr>
+<tr class="memitem:a3987f5547ceb7e36a210a66a06241a5a"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="theme_2mytheme_2php_2default_8php.html#a3987f5547ceb7e36a210a66a06241a5a">if</a> (<a class="el" href="boot_8php.html#ae97836b0547953be182a2334c9c91d3c">x</a>($<a class="el" href="mod__import_8php.html#a8db1899eeeb44dabd0904065b63627bb">page</a>,'htmlhead')) echo $<a class="el" href="mod__import_8php.html#a8db1899eeeb44dabd0904065b63627bb">page</a>['htmlhead']?&gt;&lt;/head &gt;&lt; body &gt;&lt; header &gt;&lt;?php if(<a class="el" href="boot_8php.html#ae97836b0547953be182a2334c9c91d3c">x</a>($<a class="el" href="mod__import_8php.html#a8db1899eeeb44dabd0904065b63627bb">page</a></td></tr>
<tr class="separator:a3987f5547ceb7e36a210a66a06241a5a"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<h2 class="groupheader">Variable Documentation</h2>
@@ -121,7 +121,7 @@ Variables</h2></td></tr>
<div class="memproto">
<table class="memname">
<tr>
- <td class="memname">if(<a class="el" href="boot_8php.html#a01353c9abebc3544ea080ac161729632">x</a>($<a class="el" href="mod__import_8php.html#a8db1899eeeb44dabd0904065b63627bb">page</a>,'htmlhead')) echo $<a class="el" href="mod__import_8php.html#a8db1899eeeb44dabd0904065b63627bb">page</a>['htmlhead']?&gt;&lt;/head &gt;&lt; body &gt;&lt; header &gt;&lt;?php if(<a class="el" href="boot_8php.html#a01353c9abebc3544ea080ac161729632">x</a>($<a class="el" href="mod__import_8php.html#a8db1899eeeb44dabd0904065b63627bb">page</a></td>
+ <td class="memname">if(<a class="el" href="boot_8php.html#ae97836b0547953be182a2334c9c91d3c">x</a>($<a class="el" href="mod__import_8php.html#a8db1899eeeb44dabd0904065b63627bb">page</a>,'htmlhead')) echo $<a class="el" href="mod__import_8php.html#a8db1899eeeb44dabd0904065b63627bb">page</a>['htmlhead']?&gt;&lt;/head &gt;&lt; body &gt;&lt; header &gt;&lt;?php if(<a class="el" href="boot_8php.html#ae97836b0547953be182a2334c9c91d3c">x</a>($<a class="el" href="mod__import_8php.html#a8db1899eeeb44dabd0904065b63627bb">page</a></td>
</tr>
</table>
</div><div class="memdoc">
diff --git a/doc/html/todo.html b/doc/html/todo.html
index 7ae19e7d0..f09357862 100644
--- a/doc/html/todo.html
+++ b/doc/html/todo.html
@@ -102,15 +102,23 @@ $(document).ready(function(){initNavTree('todo.html','');});
</div><!--header-->
<div class="contents">
<div class="textblock"><dl class="reflist">
-<dt><a class="anchor" id="_todo000001"></a>Member <a class="el" href="reddav_8php.html#ae92ea0df1993f6a7bcd1b6efa6c1fb66">RedChannelList</a> (&amp;$auth)</dt>
-<dd>Is there any reason why this is not inside <a class="el" href="classRedDirectory.html" title="RedDirectory class.">RedDirectory</a> class? </dd>
-<dt><a class="anchor" id="_todo000002"></a>Member <a class="el" href="reddav_8php.html#a5df0d09893f2e65dc5cf6bbab6cfb266">RedCollectionData</a> ($file, &amp;$auth)</dt>
-<dd>Is there any reason why this is not inside <a class="el" href="classRedDirectory.html" title="RedDirectory class.">RedDirectory</a> class? Seems only to be used there and we could simplify it a bit there. </dd>
-<dt><a class="anchor" id="_todo000003"></a>Member <a class="el" href="classRedDirectory.html#a0f113244cd85c17848df991001d024f4">RedDirectory::$ext_path</a> </dt>
-<dd>I think this is not used anywhere, we always strip '/cloud' and only use it in debug </dd>
-<dt><a class="anchor" id="_todo000005"></a>Member <a class="el" href="classRedDirectory.html#a70173d4458572d95e586b2037d2fd2f4">RedDirectory::getDir</a> ()</dt>
+<dt><a class="anchor" id="_todo000002"></a>File <a class="el" href="include_2config_8php.html">config.php</a> </dt>
+<dd>There are a few places in the code (such as the admin panel) where boolean configurations need to be fixed as of 10/08/2011. </dd>
+<dt><a class="anchor" id="_todo000001"></a>Member <a class="el" href="boot_8php.html#a899d24fd074594ceebbf72e1feff335f">get_custom_nav</a> (&amp;$a, $navname)</dt>
+<dd>not fully implemented yet </dd>
+<dt><a class="anchor" id="_todo000009"></a>Member <a class="el" href="reddav_8php.html#ae92ea0df1993f6a7bcd1b6efa6c1fb66">RedChannelList</a> (&amp;$auth)</dt>
+<dd>Is there any reason why this is not inside RedDirectory class? function name looks like a class name, should we rename it? </dd>
+<dt><a class="anchor" id="_todo000010"></a>Member <a class="el" href="reddav_8php.html#a5df0d09893f2e65dc5cf6bbab6cfb266">RedCollectionData</a> ($file, &amp;$auth)</dt>
+<dd>Is there any reason why this is not inside RedDirectory class? Seems only to be used there and we could simplify it a bit there. function name looks like a class name, should we rename it? </dd>
+<dt><a class="anchor" id="_todo000008"></a>File <a class="el" href="reddav_8php.html">reddav.php</a> </dt>
+<dd>split up the classes into own files. </dd>
+<dt><a class="anchor" id="_todo000003"></a>Member <a class="el" href="classRedMatrix_1_1RedDAV_1_1RedBrowser.html#a8161f2a0be205412e263c947b5ec46c5">RedMatrix::__construct</a> (&amp;$auth)</dt>
+<dd>disable enablePost by default and only activate if permissions grant edit rights. </dd>
+<dt><a class="anchor" id="_todo000004"></a>Member <a class="el" href="classRedMatrix_1_1RedDAV_1_1RedBrowser.html#aa1607857cb59738c4dce2fe8e73d8f19">RedMatrix::set_writeable</a> ()</dt>
+<dd>Maybe this whole way of doing this can be solved with some $server-&gt;subscribeEvent(). </dd>
+<dt><a class="anchor" id="_todo000007"></a>Member <a class="el" href="classRedMatrix_1_1RedDAV_1_1RedDirectory.html#a825dc5f3e0f83f50736c16daa6a4809d">RedMatrix::getDir</a> ()</dt>
<dd>add description of what this function does. </dd>
-<dt><a class="anchor" id="_todo000004"></a>Member <a class="el" href="classRedDirectory.html#adc48035679e52c55d9881f83de535553">RedDirectory::setName</a> ($name)</dt>
+<dt><a class="anchor" id="_todo000006"></a>Member <a class="el" href="classRedMatrix_1_1RedDAV_1_1RedDirectory.html#a14ac61d31a031d139956763db4e03956">RedMatrix::setName</a> ($name)</dt>
<dd>handle duplicate directory name</dd>
</dl>
</div></div><!-- contents -->
diff --git a/doc/html/typo_8php.html b/doc/html/typo_8php.html
index 1467ba382..fd5fe7b0b 100644
--- a/doc/html/typo_8php.html
+++ b/doc/html/typo_8php.html
@@ -134,7 +134,7 @@ Variables</h2></td></tr>
</table>
</div><div class="memdoc">
-<p>Referenced by <a class="el" href="classFriendicaSmarty.html#af12091b920b95eeef1218cbc48066ca6">FriendicaSmarty\__construct()</a>, <a class="el" href="classItem.html#a248f45871ecfe82a08d1d4c0769b2eb2">Item\__construct()</a>, <a class="el" href="classFriendicaSmartyEngine.html#ab7c305bd8c386c2944e4dc9136cea5b6">FriendicaSmartyEngine\__construct()</a>, <a class="el" href="classTemplate.html#ae0836e7d5bd5afceb04f50fd635f1228">Template\_replcb_if()</a>, <a class="el" href="classTemplate.html#a86e8fd27955ef10cadfd86f3fca70677">Template\_replcb_inc()</a>, <a class="el" href="__well__known_8php.html#a6ebfa937a2024f0b5dab53f0ac90fed0">_well_known_init()</a>, <a class="el" href="Contact_8php.html#a024919623a830e8703ac4f23496dd66c">abook_toggle_flag()</a>, <a class="el" href="achievements_8php.html#a35ae04ada0e227d19671f289a32fb30e">achievements_content()</a>, <a class="el" href="acl_8php.html#ac6776dba871806ecdb5d1659bc2eb07a">acl_init()</a>, <a class="el" href="admin_8php.html#afef415e4011607fbb665610441595015">admin_content()</a>, <a class="el" href="admin_8php.html#ad6f87a764fd35f522c7b4c351d7878ec">admin_page_channels()</a>, <a class="el" href="admin_8php.html#a42e628f367c168add8013352ac74d33f">admin_page_channels_post()</a>, <a class="el" href="admin_8php.html#aaa6addf2dbc3f3fcf99244a56b41eade">admin_page_dbsync()</a>, <a class="el" href="admin_8php.html#a6943543f3138f6ee182cb701f415d1cc">admin_page_hubloc()</a>, <a class="el" href="admin_8php.html#a60ba9783ad14545814919970bc3fb725">admin_page_hubloc_post()</a>, <a class="el" href="admin_8php.html#a1d1362698af14d209aa3a0fb655551dd">admin_page_logs()</a>, <a class="el" href="admin_8php.html#a233b7c8c31776b7020532003c6e44e1c">admin_page_logs_post()</a>, <a class="el" href="admin_8php.html#a54128076986ba80c4a103de3fc3e19a8">admin_page_plugins()</a>, <a class="el" href="admin_8php.html#ac0f3bd12431c056aad77bac9d09fa30e">admin_page_site()</a>, <a class="el" href="admin_8php.html#add865f4ae806ecbf716f423fc3e50e4f">admin_page_site_post()</a>, <a class="el" href="admin_8php.html#ac6e95b920b5abd030cc522964987087a">admin_page_summary()</a>, <a class="el" href="admin_8php.html#af124619fdc278fe2bf14c45ddaa260fb">admin_page_themes()</a>, <a class="el" href="admin_8php.html#a62f10f90c47686c9c3c37c4c03a108d2">admin_page_users()</a>, <a class="el" href="admin_8php.html#a5a696706a3869800e65fb365214241b7">admin_page_users_post()</a>, <a class="el" href="admin_8php.html#acf51f5837a7427832144c2bf7308ada3">admin_post()</a>, <a class="el" href="identity_8php.html#aa870d2c1f558cfd52bef05bc124e8fa4">advanced_profile()</a>, <a class="el" href="include_2network_8php.html#aba38458a2ff2d92d3536488dbb119694">allowed_email()</a>, <a class="el" href="include_2network_8php.html#aee35d9ad6b3f872bfb39ba3598936aa7">allowed_url()</a>, <a class="el" href="text_8php.html#a75c243e06341ec16bd5a44b9b1cacd85">alt_pager()</a>, <a class="el" href="include_2api_8php.html#a864191bb876a515ed71b17e260ef35ad">api_account_verify_credentials()</a>, <a class="el" href="include_2api_8php.html#aa9dc5350b26d6c7727d6c4b641ecba18">api_albums()</a>, <a class="el" href="include_2api_8php.html#a5990101034e7abf6404feba3cd273629">api_apply_template()</a>, <a class="el" href="include_2api_8php.html#a176c448d79c211ad41c2bbe3124658f5">api_call()</a>, <a class="el" href="mod_2api_8php.html#a33315b5bbf5418f6850b2038107b526d">api_content()</a>, <a class="el" href="include_2api_8php.html#a970b02c06dea8b229aa3d5fff9cf4705">api_direct_messages_all()</a>, <a class="el" href="include_2api_8php.html#a7759ccddc8dff012ad168e511ffe5af5">api_direct_messages_box()</a>, <a class="el" href="include_2api_8php.html#a9160288b7ac220635942d8dc209b78c3">api_direct_messages_conversation()</a>, <a class="el" href="include_2api_8php.html#ad2b0192f3006918bea895de8074bf8d2">api_direct_messages_inbox()</a>, <a class="el" href="include_2api_8php.html#a0991f72554f821255397d615e76f3203">api_direct_messages_new()</a>, <a class="el" href="include_2api_8php.html#a58cf4c02ef435996f5c3bc4283d3968d">api_direct_messages_sentbox()</a>, <a class="el" href="include_2api_8php.html#a2c71b1226ef1283b5370bd1c200fee5f">api_favorites()</a>, <a class="el" href="include_2api_8php.html#ab1ecb58954f722444bfe03233345cb1b">api_followers_ids()</a>, <a class="el" href="include_2api_8php.html#a18cab7c6391df5c421753463f5d2a879">api_format_as()</a>, <a class="el" href="include_2api_8php.html#a4c6fb9fb5203aa60f4b3afd4521db8ea">api_format_items()</a>, <a class="el" href="include_2api_8php.html#acafd2899309a005fcb725289173dc7fe">api_friends_ids()</a>, <a class="el" href="include_2api_8php.html#aa40bae797bcd9ccacffdce5a3b5a1afa">api_get_user()</a>, <a class="el" href="include_2api_8php.html#aa49741342ad8ba285737eea1209a37e1">api_item_get_user()</a>, <a class="el" href="include_2api_8php.html#afe534f826e4282b72d66e8cadca7bb73">api_login()</a>, <a class="el" href="include_2api_8php.html#aa6fc3bc8c0fad1d081db0dcc456dd77f">api_photos()</a>, <a class="el" href="mod_2api_8php.html#a6fe77f05c07cb51048df0d557b4b9bd2">api_post()</a>, <a class="el" href="include_2api_8php.html#a6a04b48168ba1d9dd2de3081a630611f">api_rss_extra()</a>, <a class="el" href="include_2api_8php.html#a645397787618b5c548a31e8686e8cca4">api_status_show()</a>, <a class="el" href="include_2api_8php.html#ad4c29f43418f6110f85a6b3998239ab4">api_statuses_destroy()</a>, <a class="el" href="include_2api_8php.html#aa0d6b29fff0344a8e67f3507a6d01410">api_statuses_f()</a>, <a class="el" href="include_2api_8php.html#a6951c690d87775eb37e569c66011988e">api_statuses_followers()</a>, <a class="el" href="include_2api_8php.html#ade742525b2e41c82b090799ef3c51d5e">api_statuses_friends()</a>, <a class="el" href="include_2api_8php.html#a528d8070ee74ea800102936ce73cf366">api_statuses_home_timeline()</a>, <a class="el" href="include_2api_8php.html#a450d8732b7b608f7ac929aee61572b95">api_statuses_mediap()</a>, <a class="el" href="include_2api_8php.html#a8b25a186bd0893f51aa72a62f655735e">api_statuses_mentions()</a>, <a class="el" href="include_2api_8php.html#ad24ce1bf20867add4c9211a8eaf93f22">api_statuses_public_timeline()</a>, <a class="el" href="include_2api_8php.html#ae0fa388479cace9c5a7a45b571ab42f8">api_statuses_repeat()</a>, <a class="el" href="include_2api_8php.html#af6f1d89cdb0a0621025efbec1597bc63">api_statuses_show()</a>, <a class="el" href="include_2api_8php.html#ad4d1634df6b35126552324683caaffa2">api_statuses_update()</a>, <a class="el" href="include_2api_8php.html#a32f0dda848d0c11c727fe1c3e741c283">api_statuses_user_timeline()</a>, <a class="el" href="include_2api_8php.html#a623793229a7256dd31bcfd5ab90eef08">api_statusnet_config()</a>, <a class="el" href="include_2api_8php.html#abe8e929e93f7ab134b1cb1fb30f19a76">api_users_show()</a>, <a class="el" href="include_2apps_8php.html#ab93a3310b7de99ee90f673518eccb658">app_name_compare()</a>, <a class="el" href="appman_8php.html#af48805ac2f6f123f2681a8ae1c6f123f">appman_content()</a>, <a class="el" href="view_2theme_2apw_2php_2config_8php.html#ad59fc09da66b66267f9753c8b2dd68d0">apw_form()</a>, <a class="el" href="items_8php.html#a275108c050f7eb18bcbb5018e6b81cf6">atom_entry()</a>, <a class="el" href="text_8php.html#a95fd2f8f23a1948414a03ebc963bac57">attribute_contains()</a>, <a class="el" href="security_8php.html#adc7bf51e3b8d67bd80e9348f9ab03733">authenticate_success()</a>, <a class="el" href="include_2network_8php.html#ab07ce9d75eae559865ed90aad2154bd7">avatar_img()</a>, <a class="el" href="bbcode_8php.html#a3a989cbf308a32468d171d83e9c51d1e">bb_sanitize_style()</a>, <a class="el" href="bbcode_8php.html#a009f61aaf78771737ed0765c8463911b">bbcode()</a>, <a class="el" href="conversation_8php.html#ad470fc7766f0db66d138fa1916c7a8b7">best_link_url()</a>, <a class="el" href="block_8php.html#a8a82a470acdfbc7a8e749509caeeea45">block_content()</a>, <a class="el" href="block_8php.html#a9b61c96044ed2a068f18c10370a78d5c">block_init()</a>, <a class="el" href="blocks_8php.html#a2531a8fd51db3cecb2eb20c002c66e12">blocks_content()</a>, <a class="el" href="blogga_2php_2theme_8php.html#aa55c1cb1f05087b5002ecb633b550b1b">blog_init()</a>, <a class="el" href="blogga_2view_2theme_2blog_2theme_8php.html#a028ae8e9f2824670dfa76a6651d817e5">blogtheme_display_item()</a>, <a class="el" href="view_2theme_2blogga_2php_2config_8php.html#a8a311a402d3e746ce53fadc38e4b2d27">blogtheme_form()</a>, <a class="el" href="blogga_2view_2theme_2blog_2theme_8php.html#af634a3f721c5e238530d0636d33230ec">blogtheme_imgurl()</a>, <a class="el" href="mod_2bookmarks_8php.html#a774364b1c8404529581083631703527a">bookmarks_content()</a>, <a class="el" href="mod_2bookmarks_8php.html#a6b7942f3d27e40f0f47c88704127b9b3">bookmarks_init()</a>, <a class="el" href="zot_8php.html#ac34e479d27f32b82dd6b33542f81a6a7">build_sync_packet()</a>, <a class="el" href="datetime_8php.html#aea356409ba69f9de412298c998595dd2">cal()</a>, <a class="el" href="plugin_8php.html#a7f05de16c0a32602853b09b99dd85e7c">call_hooks()</a>, <a class="el" href="contact__widgets_8php.html#a165eb021e61c4dcab2a552f28628d353">categories_widget()</a>, <a class="el" href="channel_8php.html#a9c6a6179e0e626398ebecc6151905ef1">channel_content()</a>, <a class="el" href="channel_8php.html#ac7c8c7845741baadf87fae6bc279f3dc">channel_init()</a>, <a class="el" href="Contact_8php.html#a186162051a5127069cc851d78740f205">channel_remove()</a>, <a class="el" href="chanview_8php.html#a4192c6da888c8c1165851acf9ad4cb8b">chanview_content()</a>, <a class="el" href="mod_2chat_8php.html#a8b0b8bee6fef6477e8c64c5e951b1b4f">chat_content()</a>, <a class="el" href="mod_2chat_8php.html#aa9ae4782e9baef0b7314ab9527c2707e">chat_init()</a>, <a class="el" href="mod_2chat_8php.html#a999d594745597c656c9760253ae297ad">chat_post()</a>, <a class="el" href="chatsvc_8php.html#a7032784215e1f6747cf385a6598770f9">chatsvc_content()</a>, <a class="el" href="chatsvc_8php.html#a28d248b056fa47452e28ed01130e9116">chatsvc_init()</a>, <a class="el" href="chatsvc_8php.html#a7c9a9b9c24a2b02eed8efd6b09632d03">chatsvc_post()</a>, <a class="el" href="boot_8php.html#a4c02d88e66852a01bd5a1feecb7c3ce3">check_config()</a>, <a class="el" href="security_8php.html#a9c6180e82150a5a9af91a1255d096b5c">check_form_security_token()</a>, <a class="el" href="security_8php.html#a444ac867dfa8c37cf0a7a226412bee28">check_form_security_token_ForbiddenOnErr()</a>, <a class="el" href="security_8php.html#a77ba0d1889a39cf32434c5ce96fe1433">check_form_security_token_redirectOnErr()</a>, <a class="el" href="setup_8php.html#a0c3f3b671381f6dccd924b8ecdfc56c4">check_htaccess()</a>, <a class="el" href="boot_8php.html#ab79b8b4555cae20d03f8200666d89d63">clean_urls()</a>, <a class="el" href="cli__startup_8php.html#adfdde63686e33ccd4851fa5edc4fc70b">cli_startup()</a>, <a class="el" href="cli__suggest_8php.html#a8f3a60fc96f4bec7d3837c4efc7725f2">cli_suggest_run()</a>, <a class="el" href="cloud_8php.html#a1b79a6fe0454bc76673ad9aef55bf02d">cloud_init()</a>, <a class="el" href="comanche_8php.html#a1a208fdb40dd83d6298caec4290ee922">comanche_parser()</a>, <a class="el" href="comanche_8php.html#a028f004d5b8c23d6367816d899e17cfe">comanche_replace_region()</a>, <a class="el" href="comanche_8php.html#a6b0191c1a63db1696a2eb139d90d9e7f">comanche_widget()</a>, <a class="el" href="common_8php.html#ab63408f39abef7a6915186e8dabc5a96">common_content()</a>, <a class="el" href="contact__widgets_8php.html#a552f8544528cec0c995cea7287ea9d65">common_friends_visitor_widget()</a>, <a class="el" href="common_8php.html#aca62f113655809f41f49042ce9b123c2">common_init()</a>, <a class="el" href="connect_8php.html#a489f0a66c660de6ec4d6917b27674f07">connect_content()</a>, <a class="el" href="connect_8php.html#ad46a38f32fd7a3d324b1fa26373efa36">connect_init()</a>, <a class="el" href="connect_8php.html#a417ec27afe33f21a929667a665e32ee2">connect_post()</a>, <a class="el" href="connections_8php.html#a15af118efee9c948b6f8294e54a73bb2">connections_clone()</a>, <a class="el" href="connections_8php.html#aec2e457420fce3e3bf6a9f48e36df25c">connections_content()</a>, <a class="el" href="connections_8php.html#a1f23623f802af7bd35e95b0e94e5d558">connections_init()</a>, <a class="el" href="connections_8php.html#a1224058db8e3fb56463eb312f98e561d">connections_post()</a>, <a class="el" href="connedit_8php.html#a707ea7e63cf9674025b1d6b081ae74f5">connedit_clone()</a>, <a class="el" href="connedit_8php.html#a795acb3d9d841f55c255d7611681ab67">connedit_content()</a>, <a class="el" href="connedit_8php.html#a4da871e075597a09a8b374b9171dd92e">connedit_init()</a>, <a class="el" href="connedit_8php.html#a234c48426b652bf4d37053f2af329ac5">connedit_post()</a>, <a class="el" href="boot_8php.html#acc4e0c910af066148b810e5fde55fff1">construct_page()</a>, <a class="el" href="text_8php.html#ad6432621d0fafcbcf3d3b9b49bef7784">contact_block()</a>, <a class="el" href="acl__selectors_8php.html#a9476997d2968a5794f3723878ed89c91">contact_select()</a>, <a class="el" href="conversation_8php.html#affea1afb3f32ca41e966c8ddb4204d81">conversation()</a>, <a class="el" href="identity_8php.html#a345f4c943d84de502ec6e72d2c813945">create_identity()</a>, <a class="el" href="boot_8php.html#ad206598b909e8eb67eb0e0bb5ef69c13">current_theme()</a>, <a class="el" href="boot_8php.html#a926cad0b3d8b9d9ee5da1898fc063ba3">current_theme_url()</a>, <a class="el" href="include_2config_8php.html#a549910227348003efc3c05c9105c42da">del_config()</a>, <a class="el" href="include_2config_8php.html#a7ad2081c5f812ac4387fd76f3762d941">del_pconfig()</a>, <a class="el" href="include_2config_8php.html#a9c171def547deee16738dc58fdeb4b72">del_xconfig()</a>, <a class="el" href="delegate_8php.html#a943eea8996ef348eb845c498f9f354dd">delegate_content()</a>, <a class="el" href="deliver_8php.html#a397afcb9afecf0c1816b0951189dd346">deliver_run()</a>, <a class="el" href="mod_2directory_8php.html#aac79396570d759da2efac24fcedf5b44">directory_content()</a>, <a class="el" href="mod_2directory_8php.html#a5ee59c213508b6b9787612a8219cb5bf">directory_init()</a>, <a class="el" href="dirsearch_8php.html#a3e51964ae3f5ff147403407b65324752">dirsearch_init()</a>, <a class="el" href="display_8php.html#a37137c98d47bf3306f4c2bb9f5b60de0">display_content()</a>, <a class="el" href="text_8php.html#a0a1f7c0e97f9ecbebf3e5834582b014c">dlogger()</a>, <a class="el" href="items_8php.html#a555762e1022a4b8e3c3abd32e7812408">drop_item()</a>, <a class="el" href="editblock_8php.html#abbe8f55de06967bc8d79d620509a49e6">editblock_content()</a>, <a class="el" href="editlayout_8php.html#aa877e4157a26b099de904164181dd386">editlayout_content()</a>, <a class="el" href="editpost_8php.html#a34011690864d122680c802e9e748ccfb">editpost_content()</a>, <a class="el" href="editwebpage_8php.html#a375e945255fad79a71036528f7480650">editwebpage_content()</a>, <a class="el" href="event_8php.html#a32ba1b9ddf7a744a9a1512b052e5f850">ev_compare()</a>, <a class="el" href="event_8php.html#a7378e839ac3de9d55579eb3ec48eaf92">event_store_item()</a>, <a class="el" href="events_8php.html#a1d293fb217ae6bc9e3858c4b32e363ec">events_content()</a>, <a class="el" href="events_8php.html#ab3e8a8f901175f8e40a8089eea45c075">events_post()</a>, <a class="el" href="text_8php.html#ae4282a39492caa23ccbc2ce98e54f110">expand_acl()</a>, <a class="el" href="include_2group_8php.html#a22a81875259c7d3d64d4848afea6b345">expand_groups()</a>, <a class="el" href="externals_8php.html#a4df44079e6f915286088b7a0d44db926">externals_run()</a>, <a class="el" href="fbrowser_8php.html#aee476addcf7a3e0fe9454f7dfd5a56c4">fbrowser_content()</a>, <a class="el" href="contact__widgets_8php.html#a1eda66319d170f60a8d07c7ece95533b">fileas_widget()</a>, <a class="el" href="filer_8php.html#a5fd5d7e61b2f9c43cb5f110c89dc4274">filer_content()</a>, <a class="el" href="filerm_8php.html#ae2eb28d2054fa2c37e38689882172208">filerm_content()</a>, <a class="el" href="filestorage_8php.html#a61bb1be78472555df4ce619f51014040">filestorage_content()</a>, <a class="el" href="filestorage_8php.html#ad3b64e3ece9831f9d3a9f00c0ae983cd">filestorage_post()</a>, <a class="el" href="contact__widgets_8php.html#a57e73ebcfd62bb5d8c7a7b9e663726d6">findpeople_widget()</a>, <a class="el" href="items_8php.html#aba98fcbbcd7044a7e9ea34edabc14c87">fix_private_photos()</a>, <a class="el" href="mod_2follow_8php.html#a171f5b19f50d7738adc3b2e96ec6018a">follow_init()</a>, <a class="el" href="bb2diaspora_8php.html#a29a2ad41f5826f3975fa9a49934ff863">format_event_diaspora()</a>, <a class="el" href="fsuggest_8php.html#aa6c49ed4b50a387f1845f36844dd7998">fsuggest_content()</a>, <a class="el" href="fsuggest_8php.html#a61ecfe10ce937ed526614f8fd3de3c7d">fsuggest_post()</a>, <a class="el" href="classBaseObject.html#ac43f10e69ce80c78e4870636250fc8a2">BaseObject\get_app()</a>, <a class="el" href="boot_8php.html#a0e6db7e365f2b041a828b93786f694bc">get_app()</a>, <a class="el" href="language_8php.html#a980dee1d8715a98ab02e36b59facf8ed">get_best_language()</a>, <a class="el" href="identity_8php.html#ad2c97627a313d53df1a1c7b4215ddb51">get_birthdays()</a>, <a class="el" href="classItem.html#a3ee7667c2ec6cd7657328e27848c0bdf">Item\get_comment_box()</a>, <a class="el" href="include_2config_8php.html#af02c96e6b37335774b548914ede1d22e">get_config()</a>, <a class="el" href="boot_8php.html#a899d24fd074594ceebbf72e1feff335f">get_custom_nav()</a>, <a class="el" href="identity_8php.html#ae381db3d43f8e7c1da8b15d14ecf5312">get_events()</a>, <a class="el" href="security_8php.html#acd06ef411116115c2f0a92633700db8a">get_form_security_token()</a>, <a class="el" href="classFriendicaSmartyEngine.html#a35ec0ee828c36640ea25296bcb84a118">FriendicaSmartyEngine\get_intltext_template()</a>, <a class="el" href="plugin_8php.html#acb63c27d07f6d7dffe95f98a6cef1295">get_intltext_template()</a>, <a class="el" href="plugin_8php.html#a75f7dfed291fd7add7fc85b5c022a1f4">get_markup_template()</a>, <a class="el" href="include_2config_8php.html#ad58a4913937179adb13201c2ee3261ad">get_pconfig()</a>, <a class="el" href="text_8php.html#aac0969ae09853205992ba06ab9f9f61a">get_plink()</a>, <a class="el" href="classItem.html#ad5dcbe0b94cb2d5719bc5b6bd8ad60c8">Item\get_template_data()</a>, <a class="el" href="plugin_8php.html#a48047edfbef770125a5508dcc2f9282f">get_theme_screenshot()</a>, <a class="el" href="include_2config_8php.html#aa3dc1d3de2d091ac702e675acd3a085e">get_xconfig()</a>, <a class="el" href="gprobe_8php.html#adf72cb0a70b5b9d99fdec1cc60e18ed1">gprobe_run()</a>, <a class="el" href="mod_2group_8php.html#a07a64f6c65b0080d8190b3d9728a7a83">group_content()</a>, <a class="el" href="mod_2group_8php.html#aed1f009b1221348021bb34761160ef35">group_post()</a>, <a class="el" href="acl__selectors_8php.html#aa1e3bc344ca2b29f97eb9860216d21a0">group_select()</a>, <a class="el" href="photo__driver_8php.html#a243cee492ce443afb6a7d77d54b6c4aa">guess_image_type()</a>, <a class="el" href="item_8php.html#aa22feef4de326e1d7078dedd892e615c">handle_tag()</a>, <a class="el" href="boot_8php.html#a24a7a70afedd5d85fe0eadc85afa9f77">head_get_icon()</a>, <a class="el" href="plugin_8php.html#a9ab6caae31935f6cf781ce7872db7cdf">head_remove_css()</a>, <a class="el" href="plugin_8php.html#a4a0ae7b881e7c8af99a69e3b03f898b4">head_remove_js()</a>, <a class="el" href="boot_8php.html#a0e4701c9742c3ef88f02ac450a042a84">head_set_icon()</a>, <a class="el" href="help_8php.html#af055e15f600ffa6fbca9386fdf715224">help_content()</a>, <a class="el" href="home_8php.html#aa1cf697851a646755baf537f75334c46">home_content()</a>, <a class="el" href="home_8php.html#ac4642c38b6f23a8d065dd4a75c620bde">home_init()</a>, <a class="el" href="hostxrd_8php.html#aa37ffc8e7900bc76c4828bd25916db92">hostxrd_init()</a>, <a class="el" href="photo__driver_8php.html#a1d0bc7161dec0d177b7d3bbe4421af9a">import_channel_photo()</a>, <a class="el" href="import_8php.html#af17fef0410518f7eac205d0ea416eaa2">import_post()</a>, <a class="el" href="photo__driver_8php.html#a78f5a10c568d2a9bbbb129dc96548887">import_profile_photo()</a>, <a class="el" href="boot_8php.html#adfb2fc7be5a4226c0a8e24131da9d498">info()</a>, <a class="el" href="plugin_8php.html#aeaebe63dcf6fa2794f363ba2bc0b2c6b">insert_hook()</a>, <a class="el" href="invite_8php.html#a244385b28cfd021d308715f01158bfd9">invite_content()</a>, <a class="el" href="invite_8php.html#aeb0881c0f93c8e8552e5ed756ce6e5a5">invite_post()</a>, <a class="el" href="boot_8php.html#a6252d8eca67c689d9035ec6da544cf46">is_developer()</a>, <a class="el" href="boot_8php.html#aa1e828bbbcba170265eb2668d8daf42e">is_site_admin()</a>, <a class="el" href="conversation_8php.html#aacbb12d372d5e9c3ab0735b4aea48fb3">item_photo_menu()</a>, <a class="el" href="item_8php.html#a693cd09805755ab85bbb5ecae69a48c3">item_post()</a>, <a class="el" href="items_8php.html#a756738301f2ed96be50232500677d58a">items_fetch()</a>, <a class="el" href="text_8php.html#a71f6952243d3fe1c5a8154f78027e29c">lang_selector()</a>, <a class="el" href="layouts_8php.html#a6e0193759ad9eef76d3df2db24237b50">layouts_content()</a>, <a class="el" href="like_8php.html#a9d7dd268f21c21e9d29dd2aca2dd9538">like_content()</a>, <a class="el" href="text_8php.html#a47c1e4a5f3f53027daacd8a9db24f285">link_compare()</a>, <a class="el" href="include_2config_8php.html#a27559f388c9b9af81c94e48d6889d1d1">load_config()</a>, <a class="el" href="boot_8php.html#a719c7f3972d5f9268f37a41c76cd4ef6">load_contact_links()</a>, <a class="el" href="setup_8php.html#ad2e0375a9ab87ebe6e78124ee125054a">load_database()</a>, <a class="el" href="plugin_8php.html#a326365e48ef94f0b9a0a771b8d75e813">load_hooks()</a>, <a class="el" href="include_2config_8php.html#ac543813a980b3841cc5a277fcd4a24a6">load_pconfig()</a>, <a class="el" href="language_8php.html#a7e9904c730bb24ddcb0ff50fc96f6b05">load_translation_table()</a>, <a class="el" href="include_2config_8php.html#a55bbed9a014c9109c767486834f3ca33">load_xconfig()</a>, <a class="el" href="text_8php.html#a030fa5ecc64168af0c4f44897a9bce63">logger()</a>, <a class="el" href="boot_8php.html#aefecf8599036df7f1b95d6820e0e2fa4">login()</a>, <a class="el" href="login_8php.html#a1d69ca88eb9005a7026e128b9a645904">login_content()</a>, <a class="el" href="classFKOAuth1.html#a2b1dac2ed31fc6ef84668afdda8b263f">FKOAuth1\loginUser()</a>, <a class="el" href="lostpass_8php.html#a0314d94e48c789b1b3a201d740c9eab3">lostpass_content()</a>, <a class="el" href="lostpass_8php.html#a8ed35ba71a4404eaf4903da61d0321cc">lostpass_post()</a>, <a class="el" href="magic_8php.html#acea2cc792849ca2d71d4b689f66518bf">magic_init()</a>, <a class="el" href="mail_8php.html#a3c7c485fc69f92371e8b20936040eca1">mail_content()</a>, <a class="el" href="mail_8php.html#acfc2cc0bf4e0b178207758384977f25a">mail_post()</a>, <a class="el" href="setup_8php.html#abe405d227ba7232971964a706d4f3bce">manual_config()</a>, <a class="el" href="match_8php.html#a1dd853e959b9e70c1911bb2fb5f5130d">match_content()</a>, <a class="el" href="mod_2message_8php.html#ac72dfed3ce08fcb331d66b37edc6e15f">message_content()</a>, <a class="el" href="mitem_8php.html#a7a31b702ecad18eeb6a38b243ff0037e">mitem_content()</a>, <a class="el" href="mitem_8php.html#a9627cd857cafdf04e4fc0ae48c8e8518">mitem_init()</a>, <a class="el" href="mitem_8php.html#a6ee694cca4b551a20d7c7a94b5243ec1">mitem_post()</a>, <a class="el" href="mood_8php.html#a7ae136dd7476865b4828136175db5022">mood_init()</a>, <a class="el" href="msearch_8php.html#ac80d2a6c0a92e79eec7efbbccd74d9a8">msearch_post()</a>, <a class="el" href="mytheme_2php_2theme_8php.html#a6ce5df8ece6acc09c1fddaccbeb244e8">mytheme_init()</a>, <a class="el" href="nav_8php.html#a43be0df73b90647ea70947ce004e231e">nav()</a>, <a class="el" href="nav_8php.html#ac3c920ce3ea5b0d9e0678ee37155f06a">nav_set_selected()</a>, <a class="el" href="mod_2network_8php.html#a43f2f29b90c5e29072c561934bc8f8b4">network_content()</a>, <a class="el" href="mod_2network_8php.html#a180fce90ad11d7e0e45be094da7149ec">network_init()</a>, <a class="el" href="include_2follow_8php.html#ae387d4ae097c23d69f3247e7f08140c7">new_contact()</a>, <a class="el" href="boot_8php.html#a9255af5ae9c887520091ea04763c1a88">notice()</a>, <a class="el" href="enotify_8php.html#a3e9a9355b243777c488d2a9883908dfc">notification()</a>, <a class="el" href="notifications_8php.html#aadd0b5525bd8c283a5d8a37982bbfe62">notifications_content()</a>, <a class="el" href="notifications_8php.html#a5baffec7b2e625c9f9cefbc097550d33">notifications_post()</a>, <a class="el" href="notifier_8php.html#a568c502f626cff95e344c0748938b85d">notifier_run()</a>, <a class="el" href="mod_2notify_8php.html#acdf3851688ebd6d6a575eb84ef9febe3">notify_content()</a>, <a class="el" href="mod_2notify_8php.html#a94f9a6a9d4b5fd704baafff0c34f41ae">notify_init()</a>, <a class="el" href="include_2oembed_8php.html#a98549b9af8140eda3eceaeedcaabc2c2">oembed_fetch_url()</a>, <a class="el" href="include_2oembed_8php.html#a26bb4c1e330d2f94ea7b6ce2fe970cf3">oembed_format_object()</a>, <a class="el" href="include_2oembed_8php.html#a9e57f3e36a0a0a47e6db79544b701d9a">oembed_iframe()</a>, <a class="el" href="oexchange_8php.html#a2d8b785cd7d041a4e6274f5af370cf26">oexchange_content()</a>, <a class="el" href="oexchange_8php.html#ac8e2e469ddc3db984b0c1b44558aca59">oexchange_init()</a>, <a class="el" href="onedirsync_8php.html#a411aedd47c57476099647961e6a86691">onedirsync_run()</a>, <a class="el" href="onepoll_8php.html#a72753b2fdec79b37c7f432035c91fb6d">onepoll_run()</a>, <a class="el" href="openid_8php.html#a9a13827dbcf61ae4e45f0b6b33a88f43">openid_content()</a>, <a class="el" href="opensearch_8php.html#ad13034877a496565ac7d99e9fc6f55e9">opensearch_init()</a>, <a class="el" href="page_8php.html#a91a5f649f68406149108bded1dc90b22">page_content()</a>, <a class="el" href="page_8php.html#a4d89800c0366a239191b1692c09635cf">page_init()</a>, <a class="el" href="text_8php.html#afe9f178d264d44a94dc1292aaf0fd585">paginate()</a>, <a class="el" href="photo_8php.html#a582779d24882b0d31ee909a91d70a448">photo_init()</a>, <a class="el" href="mod_2photos_8php.html#aa87382611a66ec5effdb2d78f13f5812">photos_content()</a>, <a class="el" href="mod_2photos_8php.html#ab950295cd77626f5fe65331a87693014">photos_init()</a>, <a class="el" href="mod_2photos_8php.html#a062bed4d04d14fee8a53f4c9be673080">photos_post()</a>, <a class="el" href="ping_8php.html#a77217b1b190b4c5d8770867b45f0c0a1">ping_init()</a>, <a class="el" href="poco_8php.html#a53def16f75e3d41f1d2bb7cfa4905498">poco_init()</a>, <a class="el" href="socgraph_8php.html#a5ef8bef37161df53718a21e93d02fbd6">poco_load()</a>, <a class="el" href="poke_8php.html#a9725aab97b3983e6a98bd81c4efe7d3b">poke_init()</a>, <a class="el" href="poller_8php.html#a5f12df3a4738124b6c039971e87e76da">poller_run()</a>, <a class="el" href="language_8php.html#a78bd204955ec4cc3a9ac651285a1689d">pop_lang()</a>, <a class="el" href="post_8php.html#af4b48181ce773ef0cdfc972441445c34">post_init()</a>, <a class="el" href="text_8php.html#ac19d2b33a58372a357a43d51eed19162">preg_heart()</a>, <a class="el" href="text_8php.html#ae4df74296fbe55051ed3c035e55205e5">prepare_body()</a>, <a class="el" href="mod_2probe_8php.html#a1f1db3fa6038e451e737964c94bf5e99">probe_content()</a>, <a class="el" href="boot_8php.html#ab346a2ece14993861f3e4206befa94f0">proc_run()</a>, <a class="el" href="activities_8php.html#a80134e807719b3c54aba971958d2e132">profile_activity()</a>, <a class="el" href="profile_8php.html#a3775cf6eef6587e5143133356a7b76c0">profile_content()</a>, <a class="el" href="identity_8php.html#ad4a2c8caca8f6ae93633ebeca0ed6620">profile_create_sidebar()</a>, <a class="el" href="profile_8php.html#ab5d0246be0552e2182a585c1206d22a5">profile_init()</a>, <a class="el" href="identity_8php.html#a4751b522ea913d0e7ed43e03d22e9e68">profile_load()</a>, <a class="el" href="profile__photo_8php.html#a140631c56438fbfacb61a1eb43067d02">profile_photo_init()</a>, <a class="el" href="profile__photo_8php.html#a4b80234074bd603221aa5364f330e479">profile_photo_post()</a>, <a class="el" href="identity_8php.html#a432259b2cf5b6f59be53e71db9f2c7dc">profile_sidebar()</a>, <a class="el" href="profiles_8php.html#a46975783b8b8d70402d51487eb1f0b00">profiles_content()</a>, <a class="el" href="profiles_8php.html#a36f71405ad536228f8bb84a551b23f7e">profiles_init()</a>, <a class="el" href="profiles_8php.html#ab0362c81b1d3b0b12a772b9fac446e04">profiles_post()</a>, <a class="el" href="profperm_8php.html#a17fb64ec05edee1dc94d95438807d6c6">profperm_init()</a>, <a class="el" href="language_8php.html#ac9142ef1d01a235c760deb0f16643f5a">push_lang()</a>, <a class="el" href="queue_8php.html#af8c93de86d866c3200174c8450a0f341">queue_run()</a>, <a class="el" href="randprof_8php.html#abf5dba3c608b9304cbf68327cd31b090">randprof_init()</a>, <a class="el" href="rbmark_8php.html#a43fec4960b50926251574762cc491f76">rbmark_content()</a>, <a class="el" href="rbmark_8php.html#ac5a66aa8599fa5dc702bae396d8d1f8c">rbmark_post()</a>, <a class="el" href="include_2api_8php.html#aafa82b65a9f879a1a1197cfe8aaf3898">red_item_new()</a>, <a class="el" href="view_2theme_2redbasic_2php_2config_8php.html#a8574a41fa9735ee391ba57ab24b93793">redbasic_form()</a>, <a class="el" href="register_8php.html#a0e91f57f111407ea8d3223a05022bb2a">register_content()</a>, <a class="el" href="regmod_8php.html#a7953df4e32e63946565e90cdd5d50409">regmod_content()</a>, <a class="el" href="regver_8php.html#ad2c5f644fd1b099abd7c715b7df6f50f">regver_content()</a>, <a class="el" href="datetime_8php.html#a8ae8dc95ace7ac27fa5a1ecf42b78c82">relative_date()</a>, <a class="el" href="removeme_8php.html#a065a589caa2aa84c60f7073a28f0ad9c">removeme_content()</a>, <a class="el" href="removeme_8php.html#a7be08738beca44bb98a79e01cdb2ee88">removeme_post()</a>, <a class="el" href="text_8php.html#a9c6ce4e12a4ac883c5e3f36fed6e1e09">replace_macros()</a>, <a class="el" href="rmagic_8php.html#a869de069d081b3c4e98b957d06bbf08f">rmagic_post()</a>, <a class="el" href="rpost_8php.html#a8190354d789000806d9879aea276728f">rpost_content()</a>, <a class="el" href="include_2network_8php.html#ae8d9c41a11000fb8667039fc71b4f73f">scale_external_images()</a>, <a class="el" href="text_8php.html#a876e94892867019935b348b573299352">search()</a>, <a class="el" href="search__ac_8php.html#a14f90c83a3f2be095e9e2992a8d66138">search_ac_init()</a>, <a class="el" href="search_8php.html#ab2568591359edde5b483a6cd9a24b2cc">search_content()</a>, <a class="el" href="search_8php.html#acf19fd30f07f495781ca0d7a0a08b435">search_init()</a>, <a class="el" href="text_8php.html#aae91e4d2a2c6f7a9daccd2c186ae3447">searchbox()</a>, <a class="el" href="include_2message_8php.html#a751ffd6635022b2190f56154ee745752">send_message()</a>, <a class="el" href="plugin_8php.html#a030cec6793b909c439c0336ba39b1571">service_class_allows()</a>, <a class="el" href="plugin_8php.html#a905b54e10704b283ac64680a8abc0971">service_class_fetch()</a>, <a class="el" href="include_2config_8php.html#ad6da879e4fb5b37d1e161d4e9be5c32a">set_config()</a>, <a class="el" href="classConversation.html#a66f121ca4026246f86a732e5faa0682c">Conversation\set_mode()</a>, <a class="el" href="include_2config_8php.html#a61591371cb18764138655d67dc817ab2">set_pconfig()</a>, <a class="el" href="include_2config_8php.html#afe117b70f1bba2f6348d9300b601f86e">set_xconfig()</a>, <a class="el" href="settings_8php.html#a3a4cde287482fced008583f54ba2a722">settings_init()</a>, <a class="el" href="settings_8php.html#aa7ee94d88ac088edb04ccf3a26de3586">settings_post()</a>, <a class="el" href="setup_8php.html#a88247384a96e14516f474d7af6a465c1">setup_content()</a>, <a class="el" href="setup_8php.html#a13cf286774149a0a7bd8adb8179cec75">setup_post()</a>, <a class="el" href="share_8php.html#afeb26046bdd02567ecd29ab5f188b249">share_init()</a>, <a class="el" href="siteinfo_8php.html#a70c09bfb6dd1c86a125a35f62ed53656">siteinfo_content()</a>, <a class="el" href="siteinfo_8php.html#a3efbd0bd6564af19ec0a9ce0294e59d0">siteinfo_init()</a>, <a class="el" href="text_8php.html#a3d225b253bb9e0f2498c11647d927b0b">smilies()</a>, <a class="el" href="sources_8php.html#ac73298ff162ce7b2de8dcaf3d3305b1e">sources_post()</a>, <a class="el" href="subthread_8php.html#a50368f3d825b77996030528e7fbfa3d3">subthread_content()</a>, <a class="el" href="suggest_8php.html#a58748a8235d4523f8333847f3e42dd91">suggest_content()</a>, <a class="el" href="language_8php.html#ac6ae482ee54fa2764d5c2e77305aeb96">t()</a>, <a class="el" href="items_8php.html#ab1bce4261bcf75ad62753b498a144d17">tag_deliver()</a>, <a class="el" href="text_8php.html#ac2ff88e800f74b22e9cc091c10809c54">tag_sort_length()</a>, <a class="el" href="tagger_8php.html#a0e4a3eb177d1684553c547503d67161c">tagger_content()</a>, <a class="el" href="tagrm_8php.html#adfd4ea5b4d7fc6d9c9e042af5cd7d49a">tagrm_content()</a>, <a class="el" href="tagrm_8php.html#a1702f40aa53a2fa93deade1f609abe78">tagrm_post()</a>, <a class="el" href="taxonomy_8php.html#aaeded36bcc983b35d9205fe5b6c18c43">tags_sort()</a>, <a class="el" href="Contact_8php.html#a38daa1c210b78385307123450ca9a1fc">terminate_friendship()</a>, <a class="el" href="items_8php.html#a88c6cf7649ac836fbbed82a7a0315110">tgroup_check()</a>, <a class="el" href="view_2theme_2blogga_2php_2config_8php.html#a09cd81013505f83aea0771243a1e4e53">theme_admin()</a>, <a class="el" href="view_2theme_2apw_2php_2config_8php.html#aa7d5739b72efef9822535b2b32d5364d">theme_content()</a>, <a class="el" href="plugin_8php.html#a65fedcffbe03562ef844cabee37d34e2">theme_include()</a>, <a class="el" href="thing_8php.html#a24a35f1e64029a67fdbea94a776ae04b">thing_content()</a>, <a class="el" href="thing_8php.html#a8be23b1d475ec3d9291999221c674c80">thing_init()</a>, <a class="el" href="datetime_8php.html#aa51b5a7ea4f931b23acbdfcea46e9865">timezone_cmp()</a>, <a class="el" href="toggle__mobile_8php.html#aca53ade8971802b45c31e722b22c6254">toggle_mobile_init()</a>, <a class="el" href="language_8php.html#a686bcafa6b0d5c86d37b38a1db5b6997">tt()</a>, <a class="el" href="uexport_8php.html#a118920137dedebe0581623a2e57e7b0d">uexport_init()</a>, <a class="el" href="update__channel_8php.html#aca52a9da500f0db2f0a8666af5bc06ba">update_channel_content()</a>, <a class="el" href="update__display_8php.html#aa36ac524059e209d5d75a03c16206246">update_display_content()</a>, <a class="el" href="update__network_8php.html#a8abf5b9f65af6a27ee2f9d7207ed1b41">update_network_content()</a>, <a class="el" href="update__search_8php.html#ace4c3a23fa7d6922399e27c297a6ba52">update_search_content()</a>, <a class="el" href="socgraph_8php.html#a790690bb1a1d02483fe31632a160144d">update_suggestions()</a>, <a class="el" href="account_8php.html#ac5c570a2d46446bad4dd2501e9c5a4b1">user_allow()</a>, <a class="el" href="account_8php.html#ad07be417ac7eda939768804106ddea3d">user_approve()</a>, <a class="el" href="Contact_8php.html#a6348a532c9d26cd1c9afbc9aa6aa8960">vcard_from_xchan()</a>, <a class="el" href="viewconnections_8php.html#ab6c4d983e97b3a8a879567ff76507776">viewconnections_content()</a>, <a class="el" href="viewconnections_8php.html#a00163d50b17568f7b0e48b1ca9ab7330">viewconnections_init()</a>, <a class="el" href="viewsrc_8php.html#a6eff3d0c1d7d14b335c4edb785cd60a4">viewsrc_content()</a>, <a class="el" href="vote_8php.html#a6aa67489bf458ca5e3206e46dac68596">vote_content()</a>, <a class="el" href="vote_8php.html#ae0c6610f40afbbc1f4fe6494c51fbab2">vote_init()</a>, <a class="el" href="vote_8php.html#a57a9516ee1b923b224e66dcc47377fb2">vote_post()</a>, <a class="el" href="wall__upload_8php.html#a7cbe204244cf9e0380ee932263a74d8f">wall_upload_post()</a>, <a class="el" href="webpages_8php.html#af3b7397d4abc153e3d2147740ee1a41d">webpages_content()</a>, <a class="el" href="wfinger_8php.html#ae21e50c8d0a5f3c9be9f43a4e519acd3">wfinger_init()</a>, <a class="el" href="setup_8php.html#aea1ebdda58ec938f4e7b31aa5c5f6b58">what_next()</a>, <a class="el" href="widgets_8php.html#a7b1e357b5a2027718470b77ec921fc65">widget_archive()</a>, <a class="el" href="widgets_8php.html#af37fdad3b2e861d860a4a8c4d8a76c0b">widget_categories()</a>, <a class="el" href="widgets_8php.html#a47c72aac42058ea086c9ef8651c259da">widget_chatroom_list()</a>, <a class="el" href="widgets_8php.html#a145ff35319cfa47a9cc07f9425bd674b">widget_design_tools()</a>, <a class="el" href="widgets_8php.html#a5ab3b64496e02cab56429978ad55f1c0">widget_filer()</a>, <a class="el" href="widgets_8php.html#ad1bf7aa69e8d100d95faba17c7bc91cd">widget_follow()</a>, <a class="el" href="widgets_8php.html#a70442dfa079312d9d5e5ee01be51a165">widget_fullprofile()</a>, <a class="el" href="widgets_8php.html#a313a8d10ab81c71357c12e67e4d7efd5">widget_item()</a>, <a class="el" href="widgets_8php.html#afa2e55a78f95667a6da082efac7fec74">widget_mailmenu()</a>, <a class="el" href="widgets_8php.html#a702e2fc0adc9b615999eca18b7311b5e">widget_photo_albums()</a>, <a class="el" href="widgets_8php.html#abd2e508a2a0b911c4a838e3cb7599923">widget_profile()</a>, <a class="el" href="widgets_8php.html#a94203eb9bcd63cbdecbbcb15163598d8">widget_savedsearch()</a>, <a class="el" href="widgets_8php.html#aaa73bcf1702eaadd9dcd253502f55e01">widget_settings_menu()</a>, <a class="el" href="widgets_8php.html#a6dbc227aac750774284ee39c45f0a200">widget_tagcloud()</a>, <a class="el" href="widgets_8php.html#ae4ced69d83dbdd9e6b51660d9eba8653">widget_tagcloud_wall()</a>, <a class="el" href="xrd_8php.html#aee3cf087968e4a0ff3a87de16eb23270">xrd_init()</a>, <a class="el" href="include_2network_8php.html#aafd06c0a75402aefb06cfb9f9740fa37">z_fetch_url()</a>, <a class="el" href="boot_8php.html#aba208673515cbb8a55e5fa4a1da99fda">z_path()</a>, <a class="el" href="boot_8php.html#add517a0958ac684792c62142a3877f81">z_root()</a>, <a class="el" href="zfinger_8php.html#a8139b83a22ef98869adc10aa224027a0">zfinger_init()</a>, <a class="el" href="identity_8php.html#a680fbafc2db023c5b1309e0180e81315">zid_init()</a>, <a class="el" href="zotfeed_8php.html#a24dfc23d366e7f840cf2847d0c1c8eac">zotfeed_init()</a>, and <a class="el" href="zping_8php.html#a4d3a6b0b8b04ed6469015823e615ee75">zping_content()</a>.</p>
+<p>Referenced by <a class="el" href="classFriendicaSmarty.html#af12091b920b95eeef1218cbc48066ca6">FriendicaSmarty\__construct()</a>, <a class="el" href="classItem.html#a248f45871ecfe82a08d1d4c0769b2eb2">Item\__construct()</a>, <a class="el" href="classFriendicaSmartyEngine.html#ab7c305bd8c386c2944e4dc9136cea5b6">FriendicaSmartyEngine\__construct()</a>, <a class="el" href="classTemplate.html#ae0836e7d5bd5afceb04f50fd635f1228">Template\_replcb_if()</a>, <a class="el" href="classTemplate.html#a86e8fd27955ef10cadfd86f3fca70677">Template\_replcb_inc()</a>, <a class="el" href="__well__known_8php.html#a6ebfa937a2024f0b5dab53f0ac90fed0">_well_known_init()</a>, <a class="el" href="Contact_8php.html#a024919623a830e8703ac4f23496dd66c">abook_toggle_flag()</a>, <a class="el" href="achievements_8php.html#a35ae04ada0e227d19671f289a32fb30e">achievements_content()</a>, <a class="el" href="acl_8php.html#ac6776dba871806ecdb5d1659bc2eb07a">acl_init()</a>, <a class="el" href="admin_8php.html#afef415e4011607fbb665610441595015">admin_content()</a>, <a class="el" href="admin_8php.html#ad6f87a764fd35f522c7b4c351d7878ec">admin_page_channels()</a>, <a class="el" href="admin_8php.html#a42e628f367c168add8013352ac74d33f">admin_page_channels_post()</a>, <a class="el" href="admin_8php.html#aaa6addf2dbc3f3fcf99244a56b41eade">admin_page_dbsync()</a>, <a class="el" href="admin_8php.html#a6943543f3138f6ee182cb701f415d1cc">admin_page_hubloc()</a>, <a class="el" href="admin_8php.html#a60ba9783ad14545814919970bc3fb725">admin_page_hubloc_post()</a>, <a class="el" href="admin_8php.html#a1d1362698af14d209aa3a0fb655551dd">admin_page_logs()</a>, <a class="el" href="admin_8php.html#a233b7c8c31776b7020532003c6e44e1c">admin_page_logs_post()</a>, <a class="el" href="admin_8php.html#a54128076986ba80c4a103de3fc3e19a8">admin_page_plugins()</a>, <a class="el" href="admin_8php.html#ac0f3bd12431c056aad77bac9d09fa30e">admin_page_site()</a>, <a class="el" href="admin_8php.html#add865f4ae806ecbf716f423fc3e50e4f">admin_page_site_post()</a>, <a class="el" href="admin_8php.html#ac6e95b920b5abd030cc522964987087a">admin_page_summary()</a>, <a class="el" href="admin_8php.html#af124619fdc278fe2bf14c45ddaa260fb">admin_page_themes()</a>, <a class="el" href="admin_8php.html#a62f10f90c47686c9c3c37c4c03a108d2">admin_page_users()</a>, <a class="el" href="admin_8php.html#a5a696706a3869800e65fb365214241b7">admin_page_users_post()</a>, <a class="el" href="admin_8php.html#acf51f5837a7427832144c2bf7308ada3">admin_post()</a>, <a class="el" href="identity_8php.html#aa870d2c1f558cfd52bef05bc124e8fa4">advanced_profile()</a>, <a class="el" href="include_2network_8php.html#aba38458a2ff2d92d3536488dbb119694">allowed_email()</a>, <a class="el" href="include_2network_8php.html#aee35d9ad6b3f872bfb39ba3598936aa7">allowed_url()</a>, <a class="el" href="text_8php.html#a75c243e06341ec16bd5a44b9b1cacd85">alt_pager()</a>, <a class="el" href="include_2api_8php.html#a864191bb876a515ed71b17e260ef35ad">api_account_verify_credentials()</a>, <a class="el" href="include_2api_8php.html#aa9dc5350b26d6c7727d6c4b641ecba18">api_albums()</a>, <a class="el" href="include_2api_8php.html#a5990101034e7abf6404feba3cd273629">api_apply_template()</a>, <a class="el" href="include_2api_8php.html#a176c448d79c211ad41c2bbe3124658f5">api_call()</a>, <a class="el" href="mod_2api_8php.html#a33315b5bbf5418f6850b2038107b526d">api_content()</a>, <a class="el" href="include_2api_8php.html#a970b02c06dea8b229aa3d5fff9cf4705">api_direct_messages_all()</a>, <a class="el" href="include_2api_8php.html#a7759ccddc8dff012ad168e511ffe5af5">api_direct_messages_box()</a>, <a class="el" href="include_2api_8php.html#a9160288b7ac220635942d8dc209b78c3">api_direct_messages_conversation()</a>, <a class="el" href="include_2api_8php.html#ad2b0192f3006918bea895de8074bf8d2">api_direct_messages_inbox()</a>, <a class="el" href="include_2api_8php.html#a0991f72554f821255397d615e76f3203">api_direct_messages_new()</a>, <a class="el" href="include_2api_8php.html#a58cf4c02ef435996f5c3bc4283d3968d">api_direct_messages_sentbox()</a>, <a class="el" href="include_2api_8php.html#a2c71b1226ef1283b5370bd1c200fee5f">api_favorites()</a>, <a class="el" href="include_2api_8php.html#ab1ecb58954f722444bfe03233345cb1b">api_followers_ids()</a>, <a class="el" href="include_2api_8php.html#a18cab7c6391df5c421753463f5d2a879">api_format_as()</a>, <a class="el" href="include_2api_8php.html#a4c6fb9fb5203aa60f4b3afd4521db8ea">api_format_items()</a>, <a class="el" href="include_2api_8php.html#acafd2899309a005fcb725289173dc7fe">api_friends_ids()</a>, <a class="el" href="include_2api_8php.html#aa40bae797bcd9ccacffdce5a3b5a1afa">api_get_user()</a>, <a class="el" href="include_2api_8php.html#aa49741342ad8ba285737eea1209a37e1">api_item_get_user()</a>, <a class="el" href="include_2api_8php.html#afe534f826e4282b72d66e8cadca7bb73">api_login()</a>, <a class="el" href="include_2api_8php.html#aa6fc3bc8c0fad1d081db0dcc456dd77f">api_photos()</a>, <a class="el" href="mod_2api_8php.html#a6fe77f05c07cb51048df0d557b4b9bd2">api_post()</a>, <a class="el" href="include_2api_8php.html#a6a04b48168ba1d9dd2de3081a630611f">api_rss_extra()</a>, <a class="el" href="include_2api_8php.html#a645397787618b5c548a31e8686e8cca4">api_status_show()</a>, <a class="el" href="include_2api_8php.html#ad4c29f43418f6110f85a6b3998239ab4">api_statuses_destroy()</a>, <a class="el" href="include_2api_8php.html#aa0d6b29fff0344a8e67f3507a6d01410">api_statuses_f()</a>, <a class="el" href="include_2api_8php.html#a6951c690d87775eb37e569c66011988e">api_statuses_followers()</a>, <a class="el" href="include_2api_8php.html#ade742525b2e41c82b090799ef3c51d5e">api_statuses_friends()</a>, <a class="el" href="include_2api_8php.html#a528d8070ee74ea800102936ce73cf366">api_statuses_home_timeline()</a>, <a class="el" href="include_2api_8php.html#a450d8732b7b608f7ac929aee61572b95">api_statuses_mediap()</a>, <a class="el" href="include_2api_8php.html#a8b25a186bd0893f51aa72a62f655735e">api_statuses_mentions()</a>, <a class="el" href="include_2api_8php.html#ad24ce1bf20867add4c9211a8eaf93f22">api_statuses_public_timeline()</a>, <a class="el" href="include_2api_8php.html#ae0fa388479cace9c5a7a45b571ab42f8">api_statuses_repeat()</a>, <a class="el" href="include_2api_8php.html#af6f1d89cdb0a0621025efbec1597bc63">api_statuses_show()</a>, <a class="el" href="include_2api_8php.html#ad4d1634df6b35126552324683caaffa2">api_statuses_update()</a>, <a class="el" href="include_2api_8php.html#a32f0dda848d0c11c727fe1c3e741c283">api_statuses_user_timeline()</a>, <a class="el" href="include_2api_8php.html#a623793229a7256dd31bcfd5ab90eef08">api_statusnet_config()</a>, <a class="el" href="include_2api_8php.html#abe8e929e93f7ab134b1cb1fb30f19a76">api_users_show()</a>, <a class="el" href="include_2apps_8php.html#ab93a3310b7de99ee90f673518eccb658">app_name_compare()</a>, <a class="el" href="appman_8php.html#af48805ac2f6f123f2681a8ae1c6f123f">appman_content()</a>, <a class="el" href="view_2theme_2apw_2php_2config_8php.html#ad59fc09da66b66267f9753c8b2dd68d0">apw_form()</a>, <a class="el" href="items_8php.html#a275108c050f7eb18bcbb5018e6b81cf6">atom_entry()</a>, <a class="el" href="text_8php.html#a95fd2f8f23a1948414a03ebc963bac57">attribute_contains()</a>, <a class="el" href="security_8php.html#adc7bf51e3b8d67bd80e9348f9ab03733">authenticate_success()</a>, <a class="el" href="include_2network_8php.html#ab07ce9d75eae559865ed90aad2154bd7">avatar_img()</a>, <a class="el" href="bbcode_8php.html#a3a989cbf308a32468d171d83e9c51d1e">bb_sanitize_style()</a>, <a class="el" href="bbcode_8php.html#a009f61aaf78771737ed0765c8463911b">bbcode()</a>, <a class="el" href="conversation_8php.html#ad470fc7766f0db66d138fa1916c7a8b7">best_link_url()</a>, <a class="el" href="block_8php.html#a8a82a470acdfbc7a8e749509caeeea45">block_content()</a>, <a class="el" href="block_8php.html#a9b61c96044ed2a068f18c10370a78d5c">block_init()</a>, <a class="el" href="blocks_8php.html#a2531a8fd51db3cecb2eb20c002c66e12">blocks_content()</a>, <a class="el" href="blocks_8php.html#aebe88302181883d2b17d6e98a1aaebe9">blocks_init()</a>, <a class="el" href="mod_2bookmarks_8php.html#a774364b1c8404529581083631703527a">bookmarks_content()</a>, <a class="el" href="mod_2bookmarks_8php.html#a6b7942f3d27e40f0f47c88704127b9b3">bookmarks_init()</a>, <a class="el" href="zot_8php.html#aa97b33b619dd7132a9274f852af6ceb5">build_sync_packet()</a>, <a class="el" href="datetime_8php.html#aea356409ba69f9de412298c998595dd2">cal()</a>, <a class="el" href="plugin_8php.html#a7f05de16c0a32602853b09b99dd85e7c">call_hooks()</a>, <a class="el" href="contact__widgets_8php.html#a165eb021e61c4dcab2a552f28628d353">categories_widget()</a>, <a class="el" href="channel_8php.html#a9c6a6179e0e626398ebecc6151905ef1">channel_content()</a>, <a class="el" href="channel_8php.html#ac7c8c7845741baadf87fae6bc279f3dc">channel_init()</a>, <a class="el" href="Contact_8php.html#a4e8af0f0525161da74583c04b8b03097">channel_remove()</a>, <a class="el" href="chanview_8php.html#a4192c6da888c8c1165851acf9ad4cb8b">chanview_content()</a>, <a class="el" href="mod_2chat_8php.html#a8b0b8bee6fef6477e8c64c5e951b1b4f">chat_content()</a>, <a class="el" href="mod_2chat_8php.html#aa9ae4782e9baef0b7314ab9527c2707e">chat_init()</a>, <a class="el" href="mod_2chat_8php.html#a999d594745597c656c9760253ae297ad">chat_post()</a>, <a class="el" href="chatsvc_8php.html#a7032784215e1f6747cf385a6598770f9">chatsvc_content()</a>, <a class="el" href="chatsvc_8php.html#a28d248b056fa47452e28ed01130e9116">chatsvc_init()</a>, <a class="el" href="chatsvc_8php.html#a7c9a9b9c24a2b02eed8efd6b09632d03">chatsvc_post()</a>, <a class="el" href="boot_8php.html#a4c02d88e66852a01bd5a1feecb7c3ce3">check_config()</a>, <a class="el" href="security_8php.html#a9c6180e82150a5a9af91a1255d096b5c">check_form_security_token()</a>, <a class="el" href="security_8php.html#a444ac867dfa8c37cf0a7a226412bee28">check_form_security_token_ForbiddenOnErr()</a>, <a class="el" href="security_8php.html#a77ba0d1889a39cf32434c5ce96fe1433">check_form_security_token_redirectOnErr()</a>, <a class="el" href="setup_8php.html#a0c3f3b671381f6dccd924b8ecdfc56c4">check_htaccess()</a>, <a class="el" href="boot_8php.html#ab79b8b4555cae20d03f8200666d89d63">clean_urls()</a>, <a class="el" href="cli__startup_8php.html#adfdde63686e33ccd4851fa5edc4fc70b">cli_startup()</a>, <a class="el" href="cli__suggest_8php.html#a8f3a60fc96f4bec7d3837c4efc7725f2">cli_suggest_run()</a>, <a class="el" href="cloud_8php.html#ad2e96e917852f27dedfc263d37e13756">cloud_init()</a>, <a class="el" href="comanche_8php.html#a1a208fdb40dd83d6298caec4290ee922">comanche_parser()</a>, <a class="el" href="comanche_8php.html#a028f004d5b8c23d6367816d899e17cfe">comanche_replace_region()</a>, <a class="el" href="comanche_8php.html#a6b0191c1a63db1696a2eb139d90d9e7f">comanche_widget()</a>, <a class="el" href="common_8php.html#ab63408f39abef7a6915186e8dabc5a96">common_content()</a>, <a class="el" href="contact__widgets_8php.html#a552f8544528cec0c995cea7287ea9d65">common_friends_visitor_widget()</a>, <a class="el" href="common_8php.html#aca62f113655809f41f49042ce9b123c2">common_init()</a>, <a class="el" href="connect_8php.html#a489f0a66c660de6ec4d6917b27674f07">connect_content()</a>, <a class="el" href="connect_8php.html#ad46a38f32fd7a3d324b1fa26373efa36">connect_init()</a>, <a class="el" href="connect_8php.html#a417ec27afe33f21a929667a665e32ee2">connect_post()</a>, <a class="el" href="connections_8php.html#a15af118efee9c948b6f8294e54a73bb2">connections_clone()</a>, <a class="el" href="connections_8php.html#aec2e457420fce3e3bf6a9f48e36df25c">connections_content()</a>, <a class="el" href="connections_8php.html#a1f23623f802af7bd35e95b0e94e5d558">connections_init()</a>, <a class="el" href="connections_8php.html#a1224058db8e3fb56463eb312f98e561d">connections_post()</a>, <a class="el" href="connedit_8php.html#a707ea7e63cf9674025b1d6b081ae74f5">connedit_clone()</a>, <a class="el" href="connedit_8php.html#a795acb3d9d841f55c255d7611681ab67">connedit_content()</a>, <a class="el" href="connedit_8php.html#a4da871e075597a09a8b374b9171dd92e">connedit_init()</a>, <a class="el" href="connedit_8php.html#a234c48426b652bf4d37053f2af329ac5">connedit_post()</a>, <a class="el" href="boot_8php.html#acc4e0c910af066148b810e5fde55fff1">construct_page()</a>, <a class="el" href="text_8php.html#ad6432621d0fafcbcf3d3b9b49bef7784">contact_block()</a>, <a class="el" href="acl__selectors_8php.html#a9476997d2968a5794f3723878ed89c91">contact_select()</a>, <a class="el" href="conversation_8php.html#affea1afb3f32ca41e966c8ddb4204d81">conversation()</a>, <a class="el" href="identity_8php.html#a345f4c943d84de502ec6e72d2c813945">create_identity()</a>, <a class="el" href="boot_8php.html#ad206598b909e8eb67eb0e0bb5ef69c13">current_theme()</a>, <a class="el" href="boot_8php.html#a926cad0b3d8b9d9ee5da1898fc063ba3">current_theme_url()</a>, <a class="el" href="include_2config_8php.html#a549910227348003efc3c05c9105c42da">del_config()</a>, <a class="el" href="include_2config_8php.html#a7ad2081c5f812ac4387fd76f3762d941">del_pconfig()</a>, <a class="el" href="include_2config_8php.html#a9c171def547deee16738dc58fdeb4b72">del_xconfig()</a>, <a class="el" href="delegate_8php.html#a943eea8996ef348eb845c498f9f354dd">delegate_content()</a>, <a class="el" href="deliver_8php.html#a397afcb9afecf0c1816b0951189dd346">deliver_run()</a>, <a class="el" href="diaspora_8php.html#a006731620a5242d410358b32678e48e3">diaspora_asphoto()</a>, <a class="el" href="diaspora_8php.html#a0fb2abe304aae19efc040a5e6b917829">diaspora_comment()</a>, <a class="el" href="diaspora_8php.html#adef30b6fac948baedcc7194d5d155b5f">diaspora_conversation()</a>, <a class="el" href="diaspora_8php.html#a5d57518545baa31cf8a85a937a267681">diaspora_like()</a>, <a class="el" href="diaspora_8php.html#a7cff2f8f11044c1b3a360f20e1bbee46">diaspora_message()</a>, <a class="el" href="diaspora_8php.html#a4901762cba5cd8dcdc57bdf285eefb1b">diaspora_msg_build()</a>, <a class="el" href="diaspora_8php.html#a71fe9bb66626b4197ae018a230778bb2">diaspora_photo()</a>, <a class="el" href="diaspora_8php.html#a20b968d64ef26afe5cb0cc75a7570a31">diaspora_post()</a>, <a class="el" href="diaspora_8php.html#a900abf51398b2ef26cd2cd31c52f1b0f">diaspora_profile()</a>, <a class="el" href="diaspora_8php.html#a586d5a3ba92d35cee14f879f290072aa">diaspora_pubmsg_build()</a>, <a class="el" href="diaspora_8php.html#ac1ab782a34552a7c6b4dc961754ed598">diaspora_request()</a>, <a class="el" href="diaspora_8php.html#a2bf43f6b5890897f425ef4325d34b007">diaspora_reshare()</a>, <a class="el" href="diaspora_8php.html#af4698b165766f83d89ec1ea964bc92cc">diaspora_send_followup()</a>, <a class="el" href="diaspora_8php.html#ae6f52efd81fe515cd9912bc8293abf5b">diaspora_send_images()</a>, <a class="el" href="diaspora_8php.html#aeb2bb78f620dbf51d9335e6eb7444f2c">diaspora_send_mail()</a>, <a class="el" href="diaspora_8php.html#a0b3628a5e53332c3d3196b689fe2b94d">diaspora_send_relay()</a>, <a class="el" href="diaspora_8php.html#a1704748aa2384c73e43f10e71defd31a">diaspora_send_retraction()</a>, <a class="el" href="diaspora_8php.html#a33ae0c4606a7df4d801c05507d87f668">diaspora_send_status()</a>, <a class="el" href="diaspora_8php.html#a69f250b078a46e405647428ec3399a16">diaspora_share()</a>, <a class="el" href="diaspora_8php.html#aa704d6aa2ac77be345c0f501168e6e56">diaspora_transmit()</a>, <a class="el" href="diaspora_8php.html#ab736d6f32b5de31c97cb579fc730e200">diaspora_unshare()</a>, <a class="el" href="mod_2directory_8php.html#aac79396570d759da2efac24fcedf5b44">directory_content()</a>, <a class="el" href="mod_2directory_8php.html#a5ee59c213508b6b9787612a8219cb5bf">directory_init()</a>, <a class="el" href="dirsearch_8php.html#a3e51964ae3f5ff147403407b65324752">dirsearch_init()</a>, <a class="el" href="display_8php.html#a37137c98d47bf3306f4c2bb9f5b60de0">display_content()</a>, <a class="el" href="text_8php.html#a0a1f7c0e97f9ecbebf3e5834582b014c">dlogger()</a>, <a class="el" href="items_8php.html#a555762e1022a4b8e3c3abd32e7812408">drop_item()</a>, <a class="el" href="editblock_8php.html#abbe8f55de06967bc8d79d620509a49e6">editblock_content()</a>, <a class="el" href="editblock_8php.html#ab7806bb42ae5e93f0330d7bd179d4b3e">editblock_init()</a>, <a class="el" href="editlayout_8php.html#aa877e4157a26b099de904164181dd386">editlayout_content()</a>, <a class="el" href="editlayout_8php.html#a97c1e93d9e75ad8cd2c2f9a7f77341a7">editlayout_init()</a>, <a class="el" href="editpost_8php.html#a34011690864d122680c802e9e748ccfb">editpost_content()</a>, <a class="el" href="editwebpage_8php.html#a375e945255fad79a71036528f7480650">editwebpage_content()</a>, <a class="el" href="editwebpage_8php.html#a94109f9c796fbe92508bf9574e35d19f">editwebpage_init()</a>, <a class="el" href="event_8php.html#a32ba1b9ddf7a744a9a1512b052e5f850">ev_compare()</a>, <a class="el" href="event_8php.html#a7378e839ac3de9d55579eb3ec48eaf92">event_store_item()</a>, <a class="el" href="events_8php.html#a1d293fb217ae6bc9e3858c4b32e363ec">events_content()</a>, <a class="el" href="events_8php.html#ab3e8a8f901175f8e40a8089eea45c075">events_post()</a>, <a class="el" href="text_8php.html#ae4282a39492caa23ccbc2ce98e54f110">expand_acl()</a>, <a class="el" href="include_2group_8php.html#a22a81875259c7d3d64d4848afea6b345">expand_groups()</a>, <a class="el" href="externals_8php.html#a4df44079e6f915286088b7a0d44db926">externals_run()</a>, <a class="el" href="fbrowser_8php.html#aee476addcf7a3e0fe9454f7dfd5a56c4">fbrowser_content()</a>, <a class="el" href="contact__widgets_8php.html#a1eda66319d170f60a8d07c7ece95533b">fileas_widget()</a>, <a class="el" href="filer_8php.html#a5fd5d7e61b2f9c43cb5f110c89dc4274">filer_content()</a>, <a class="el" href="filerm_8php.html#ae2eb28d2054fa2c37e38689882172208">filerm_content()</a>, <a class="el" href="filestorage_8php.html#a61bb1be78472555df4ce619f51014040">filestorage_content()</a>, <a class="el" href="filestorage_8php.html#ad3b64e3ece9831f9d3a9f00c0ae983cd">filestorage_post()</a>, <a class="el" href="contact__widgets_8php.html#a57e73ebcfd62bb5d8c7a7b9e663726d6">findpeople_widget()</a>, <a class="el" href="items_8php.html#aba98fcbbcd7044a7e9ea34edabc14c87">fix_private_photos()</a>, <a class="el" href="mod_2follow_8php.html#a171f5b19f50d7738adc3b2e96ec6018a">follow_init()</a>, <a class="el" href="bb2diaspora_8php.html#a29a2ad41f5826f3975fa9a49934ff863">format_event_diaspora()</a>, <a class="el" href="fsuggest_8php.html#aa6c49ed4b50a387f1845f36844dd7998">fsuggest_content()</a>, <a class="el" href="fsuggest_8php.html#a61ecfe10ce937ed526614f8fd3de3c7d">fsuggest_post()</a>, <a class="el" href="classBaseObject.html#ac43f10e69ce80c78e4870636250fc8a2">BaseObject\get_app()</a>, <a class="el" href="boot_8php.html#a0e6db7e365f2b041a828b93786f694bc">get_app()</a>, <a class="el" href="language_8php.html#a980dee1d8715a98ab02e36b59facf8ed">get_best_language()</a>, <a class="el" href="identity_8php.html#ad2c97627a313d53df1a1c7b4215ddb51">get_birthdays()</a>, <a class="el" href="classItem.html#a3ee7667c2ec6cd7657328e27848c0bdf">Item\get_comment_box()</a>, <a class="el" href="include_2config_8php.html#af02c96e6b37335774b548914ede1d22e">get_config()</a>, <a class="el" href="boot_8php.html#a899d24fd074594ceebbf72e1feff335f">get_custom_nav()</a>, <a class="el" href="identity_8php.html#ae381db3d43f8e7c1da8b15d14ecf5312">get_events()</a>, <a class="el" href="security_8php.html#acd06ef411116115c2f0a92633700db8a">get_form_security_token()</a>, <a class="el" href="classFriendicaSmartyEngine.html#a35ec0ee828c36640ea25296bcb84a118">FriendicaSmartyEngine\get_intltext_template()</a>, <a class="el" href="plugin_8php.html#acb63c27d07f6d7dffe95f98a6cef1295">get_intltext_template()</a>, <a class="el" href="plugin_8php.html#a75f7dfed291fd7add7fc85b5c022a1f4">get_markup_template()</a>, <a class="el" href="include_2config_8php.html#ad58a4913937179adb13201c2ee3261ad">get_pconfig()</a>, <a class="el" href="classItem.html#ad5dcbe0b94cb2d5719bc5b6bd8ad60c8">Item\get_template_data()</a>, <a class="el" href="plugin_8php.html#a48047edfbef770125a5508dcc2f9282f">get_theme_screenshot()</a>, <a class="el" href="include_2config_8php.html#aa3dc1d3de2d091ac702e675acd3a085e">get_xconfig()</a>, <a class="el" href="gprobe_8php.html#adf72cb0a70b5b9d99fdec1cc60e18ed1">gprobe_run()</a>, <a class="el" href="mod_2group_8php.html#a07a64f6c65b0080d8190b3d9728a7a83">group_content()</a>, <a class="el" href="mod_2group_8php.html#aed1f009b1221348021bb34761160ef35">group_post()</a>, <a class="el" href="acl__selectors_8php.html#aa1e3bc344ca2b29f97eb9860216d21a0">group_select()</a>, <a class="el" href="photo__driver_8php.html#a243cee492ce443afb6a7d77d54b6c4aa">guess_image_type()</a>, <a class="el" href="text_8php.html#aa22feef4de326e1d7078dedd892e615c">handle_tag()</a>, <a class="el" href="hcard_8php.html#ac34f26b0e6a37eef44fa49bea135136d">hcard_init()</a>, <a class="el" href="boot_8php.html#a24a7a70afedd5d85fe0eadc85afa9f77">head_get_icon()</a>, <a class="el" href="plugin_8php.html#a9ab6caae31935f6cf781ce7872db7cdf">head_remove_css()</a>, <a class="el" href="plugin_8php.html#a4a0ae7b881e7c8af99a69e3b03f898b4">head_remove_js()</a>, <a class="el" href="boot_8php.html#a0e4701c9742c3ef88f02ac450a042a84">head_set_icon()</a>, <a class="el" href="help_8php.html#af055e15f600ffa6fbca9386fdf715224">help_content()</a>, <a class="el" href="hivenet_2php_2theme_8php.html#a3a8b539b112ae63936025236dbaf0a29">hivenet_init()</a>, <a class="el" href="home_8php.html#a6e3dbf78f4ed74ab2577de221190b33f">home_content()</a>, <a class="el" href="home_8php.html#ac4642c38b6f23a8d065dd4a75c620bde">home_init()</a>, <a class="el" href="hostxrd_8php.html#aa37ffc8e7900bc76c4828bd25916db92">hostxrd_init()</a>, <a class="el" href="impel_8php.html#ab7db6fca43b42ea4332cb3e841b3cf7b">impel_init()</a>, <a class="el" href="photo__driver_8php.html#a1d0bc7161dec0d177b7d3bbe4421af9a">import_channel_photo()</a>, <a class="el" href="import_8php.html#af17fef0410518f7eac205d0ea416eaa2">import_post()</a>, <a class="el" href="photo__driver_8php.html#a78f5a10c568d2a9bbbb129dc96548887">import_profile_photo()</a>, <a class="el" href="boot_8php.html#adfb2fc7be5a4226c0a8e24131da9d498">info()</a>, <a class="el" href="plugin_8php.html#aeaebe63dcf6fa2794f363ba2bc0b2c6b">insert_hook()</a>, <a class="el" href="invite_8php.html#a244385b28cfd021d308715f01158bfd9">invite_content()</a>, <a class="el" href="invite_8php.html#aeb0881c0f93c8e8552e5ed756ce6e5a5">invite_post()</a>, <a class="el" href="boot_8php.html#a6252d8eca67c689d9035ec6da544cf46">is_developer()</a>, <a class="el" href="boot_8php.html#aa1e828bbbcba170265eb2668d8daf42e">is_site_admin()</a>, <a class="el" href="conversation_8php.html#aacbb12d372d5e9c3ab0735b4aea48fb3">item_photo_menu()</a>, <a class="el" href="item_8php.html#a693cd09805755ab85bbb5ecae69a48c3">item_post()</a>, <a class="el" href="items_8php.html#a756738301f2ed96be50232500677d58a">items_fetch()</a>, <a class="el" href="text_8php.html#a71f6952243d3fe1c5a8154f78027e29c">lang_selector()</a>, <a class="el" href="layouts_8php.html#a6e0193759ad9eef76d3df2db24237b50">layouts_content()</a>, <a class="el" href="layouts_8php.html#a39c8e9f72641c684c8b689bd91a642fa">layouts_init()</a>, <a class="el" href="like_8php.html#a9d7dd268f21c21e9d29dd2aca2dd9538">like_content()</a>, <a class="el" href="text_8php.html#a47c1e4a5f3f53027daacd8a9db24f285">link_compare()</a>, <a class="el" href="text_8php.html#a4446c7f8996a280f7e08b7bfe6c6c8bc">list_smilies()</a>, <a class="el" href="include_2config_8php.html#a27559f388c9b9af81c94e48d6889d1d1">load_config()</a>, <a class="el" href="boot_8php.html#a719c7f3972d5f9268f37a41c76cd4ef6">load_contact_links()</a>, <a class="el" href="setup_8php.html#ad2e0375a9ab87ebe6e78124ee125054a">load_database()</a>, <a class="el" href="plugin_8php.html#a326365e48ef94f0b9a0a771b8d75e813">load_hooks()</a>, <a class="el" href="include_2config_8php.html#a559791dda7fef8a4b2394c83e835787b">load_pconfig()</a>, <a class="el" href="boot_8php.html#a50a6707a28c7d05d3f49eaabc7994501">load_pdl()</a>, <a class="el" href="language_8php.html#a7e9904c730bb24ddcb0ff50fc96f6b05">load_translation_table()</a>, <a class="el" href="include_2config_8php.html#aee4b619839cf4b64220f34edf5c67b52">load_xconfig()</a>, <a class="el" href="locs_8php.html#a6c900f53970c0d0e738d2fe06d27ca44">locs_content()</a>, <a class="el" href="locs_8php.html#a6b43654592919ac863d67a1f787a69b9">locs_post()</a>, <a class="el" href="text_8php.html#a030fa5ecc64168af0c4f44897a9bce63">logger()</a>, <a class="el" href="boot_8php.html#aefecf8599036df7f1b95d6820e0e2fa4">login()</a>, <a class="el" href="login_8php.html#a1d69ca88eb9005a7026e128b9a645904">login_content()</a>, <a class="el" href="classFKOAuth1.html#a2b1dac2ed31fc6ef84668afdda8b263f">FKOAuth1\loginUser()</a>, <a class="el" href="lostpass_8php.html#a0314d94e48c789b1b3a201d740c9eab3">lostpass_content()</a>, <a class="el" href="lostpass_8php.html#a8ed35ba71a4404eaf4903da61d0321cc">lostpass_post()</a>, <a class="el" href="magic_8php.html#acea2cc792849ca2d71d4b689f66518bf">magic_init()</a>, <a class="el" href="mail_8php.html#a3c7c485fc69f92371e8b20936040eca1">mail_content()</a>, <a class="el" href="mail_8php.html#acfc2cc0bf4e0b178207758384977f25a">mail_post()</a>, <a class="el" href="manage_8php.html#a2bca247b5296827638959138367db4f5">manage_content()</a>, <a class="el" href="setup_8php.html#abe405d227ba7232971964a706d4f3bce">manual_config()</a>, <a class="el" href="match_8php.html#a1dd853e959b9e70c1911bb2fb5f5130d">match_content()</a>, <a class="el" href="mod_2menu_8php.html#a6fed23af14d71a78a4153c8363a685cf">menu_content()</a>, <a class="el" href="mod_2menu_8php.html#aaa491ef173868fe002aece4632bcf393">menu_post()</a>, <a class="el" href="mod_2message_8php.html#ac72dfed3ce08fcb331d66b37edc6e15f">message_content()</a>, <a class="el" href="mitem_8php.html#a7a31b702ecad18eeb6a38b243ff0037e">mitem_content()</a>, <a class="el" href="mitem_8php.html#a9627cd857cafdf04e4fc0ae48c8e8518">mitem_init()</a>, <a class="el" href="mitem_8php.html#a6ee694cca4b551a20d7c7a94b5243ec1">mitem_post()</a>, <a class="el" href="mood_8php.html#a7ae136dd7476865b4828136175db5022">mood_init()</a>, <a class="el" href="msearch_8php.html#ac80d2a6c0a92e79eec7efbbccd74d9a8">msearch_post()</a>, <a class="el" href="mytheme_2php_2theme_8php.html#a6ce5df8ece6acc09c1fddaccbeb244e8">mytheme_init()</a>, <a class="el" href="nav_8php.html#a43be0df73b90647ea70947ce004e231e">nav()</a>, <a class="el" href="nav_8php.html#ac3c920ce3ea5b0d9e0678ee37155f06a">nav_set_selected()</a>, <a class="el" href="mod_2network_8php.html#a43f2f29b90c5e29072c561934bc8f8b4">network_content()</a>, <a class="el" href="mod_2network_8php.html#a180fce90ad11d7e0e45be094da7149ec">network_init()</a>, <a class="el" href="include_2follow_8php.html#ae387d4ae097c23d69f3247e7f08140c7">new_contact()</a>, <a class="el" href="boot_8php.html#a9255af5ae9c887520091ea04763c1a88">notice()</a>, <a class="el" href="enotify_8php.html#a3e9a9355b243777c488d2a9883908dfc">notification()</a>, <a class="el" href="notifications_8php.html#aadd0b5525bd8c283a5d8a37982bbfe62">notifications_content()</a>, <a class="el" href="notifications_8php.html#a5baffec7b2e625c9f9cefbc097550d33">notifications_post()</a>, <a class="el" href="notifier_8php.html#a568c502f626cff95e344c0748938b85d">notifier_run()</a>, <a class="el" href="mod_2notify_8php.html#acdf3851688ebd6d6a575eb84ef9febe3">notify_content()</a>, <a class="el" href="mod_2notify_8php.html#a94f9a6a9d4b5fd704baafff0c34f41ae">notify_init()</a>, <a class="el" href="include_2oembed_8php.html#a98549b9af8140eda3eceaeedcaabc2c2">oembed_fetch_url()</a>, <a class="el" href="include_2oembed_8php.html#a26bb4c1e330d2f94ea7b6ce2fe970cf3">oembed_format_object()</a>, <a class="el" href="oexchange_8php.html#a2d8b785cd7d041a4e6274f5af370cf26">oexchange_content()</a>, <a class="el" href="oexchange_8php.html#ac8e2e469ddc3db984b0c1b44558aca59">oexchange_init()</a>, <a class="el" href="onedirsync_8php.html#a411aedd47c57476099647961e6a86691">onedirsync_run()</a>, <a class="el" href="onepoll_8php.html#a72753b2fdec79b37c7f432035c91fb6d">onepoll_run()</a>, <a class="el" href="openid_8php.html#a9a13827dbcf61ae4e45f0b6b33a88f43">openid_content()</a>, <a class="el" href="opensearch_8php.html#ad13034877a496565ac7d99e9fc6f55e9">opensearch_init()</a>, <a class="el" href="p_8php.html#af9d5530ca0b3dc9409cf591c39e2480e">p_init()</a>, <a class="el" href="page_8php.html#a91a5f649f68406149108bded1dc90b22">page_content()</a>, <a class="el" href="page_8php.html#a4d89800c0366a239191b1692c09635cf">page_init()</a>, <a class="el" href="text_8php.html#afe9f178d264d44a94dc1292aaf0fd585">paginate()</a>, <a class="el" href="photo_8php.html#a582779d24882b0d31ee909a91d70a448">photo_init()</a>, <a class="el" href="mod_2photos_8php.html#aa87382611a66ec5effdb2d78f13f5812">photos_content()</a>, <a class="el" href="mod_2photos_8php.html#ab950295cd77626f5fe65331a87693014">photos_init()</a>, <a class="el" href="mod_2photos_8php.html#a062bed4d04d14fee8a53f4c9be673080">photos_post()</a>, <a class="el" href="ping_8php.html#a77217b1b190b4c5d8770867b45f0c0a1">ping_init()</a>, <a class="el" href="poco_8php.html#a53def16f75e3d41f1d2bb7cfa4905498">poco_init()</a>, <a class="el" href="socgraph_8php.html#a5ef8bef37161df53718a21e93d02fbd6">poco_load()</a>, <a class="el" href="poke_8php.html#a9725aab97b3983e6a98bd81c4efe7d3b">poke_init()</a>, <a class="el" href="poller_8php.html#a5f12df3a4738124b6c039971e87e76da">poller_run()</a>, <a class="el" href="language_8php.html#a78bd204955ec4cc3a9ac651285a1689d">pop_lang()</a>, <a class="el" href="post_8php.html#af4b48181ce773ef0cdfc972441445c34">post_init()</a>, <a class="el" href="text_8php.html#ac19d2b33a58372a357a43d51eed19162">preg_heart()</a>, <a class="el" href="mod_2probe_8php.html#a1f1db3fa6038e451e737964c94bf5e99">probe_content()</a>, <a class="el" href="boot_8php.html#ab346a2ece14993861f3e4206befa94f0">proc_run()</a>, <a class="el" href="activities_8php.html#a80134e807719b3c54aba971958d2e132">profile_activity()</a>, <a class="el" href="profile_8php.html#a3775cf6eef6587e5143133356a7b76c0">profile_content()</a>, <a class="el" href="identity_8php.html#ad4a2c8caca8f6ae93633ebeca0ed6620">profile_create_sidebar()</a>, <a class="el" href="profile_8php.html#ab5d0246be0552e2182a585c1206d22a5">profile_init()</a>, <a class="el" href="identity_8php.html#a4751b522ea913d0e7ed43e03d22e9e68">profile_load()</a>, <a class="el" href="profile__photo_8php.html#a140631c56438fbfacb61a1eb43067d02">profile_photo_init()</a>, <a class="el" href="profile__photo_8php.html#a4b80234074bd603221aa5364f330e479">profile_photo_post()</a>, <a class="el" href="identity_8php.html#a432259b2cf5b6f59be53e71db9f2c7dc">profile_sidebar()</a>, <a class="el" href="profiles_8php.html#a46975783b8b8d70402d51487eb1f0b00">profiles_content()</a>, <a class="el" href="profiles_8php.html#a36f71405ad536228f8bb84a551b23f7e">profiles_init()</a>, <a class="el" href="profiles_8php.html#ab0362c81b1d3b0b12a772b9fac446e04">profiles_post()</a>, <a class="el" href="profperm_8php.html#a17fb64ec05edee1dc94d95438807d6c6">profperm_init()</a>, <a class="el" href="language_8php.html#ac9142ef1d01a235c760deb0f16643f5a">push_lang()</a>, <a class="el" href="queue_8php.html#af8c93de86d866c3200174c8450a0f341">queue_run()</a>, <a class="el" href="randprof_8php.html#abf5dba3c608b9304cbf68327cd31b090">randprof_init()</a>, <a class="el" href="rbmark_8php.html#a43fec4960b50926251574762cc491f76">rbmark_content()</a>, <a class="el" href="rbmark_8php.html#ac5a66aa8599fa5dc702bae396d8d1f8c">rbmark_post()</a>, <a class="el" href="include_2api_8php.html#aafa82b65a9f879a1a1197cfe8aaf3898">red_item_new()</a>, <a class="el" href="view_2theme_2redbasic_2php_2config_8php.html#a8574a41fa9735ee391ba57ab24b93793">redbasic_form()</a>, <a class="el" href="register_8php.html#a0e91f57f111407ea8d3223a05022bb2a">register_content()</a>, <a class="el" href="regmod_8php.html#a7953df4e32e63946565e90cdd5d50409">regmod_content()</a>, <a class="el" href="regver_8php.html#ad2c5f644fd1b099abd7c715b7df6f50f">regver_content()</a>, <a class="el" href="datetime_8php.html#a8ae8dc95ace7ac27fa5a1ecf42b78c82">relative_date()</a>, <a class="el" href="removeaccount_8php.html#a516e7380b9e5796054aa8245f3509695">removeaccount_content()</a>, <a class="el" href="removeaccount_8php.html#a26a3325292e932c59793430ab737126a">removeaccount_post()</a>, <a class="el" href="removeme_8php.html#a065a589caa2aa84c60f7073a28f0ad9c">removeme_content()</a>, <a class="el" href="removeme_8php.html#a7be08738beca44bb98a79e01cdb2ee88">removeme_post()</a>, <a class="el" href="text_8php.html#a9c6ce4e12a4ac883c5e3f36fed6e1e09">replace_macros()</a>, <a class="el" href="rmagic_8php.html#a869de069d081b3c4e98b957d06bbf08f">rmagic_post()</a>, <a class="el" href="rpost_8php.html#a8190354d789000806d9879aea276728f">rpost_content()</a>, <a class="el" href="include_2network_8php.html#ae8d9c41a11000fb8667039fc71b4f73f">scale_external_images()</a>, <a class="el" href="include_2network_8php.html#a316f318167a039c89719afbd129a8f3c">scrape_feed()</a>, <a class="el" href="include_2network_8php.html#acb0bd7f5fe38ff1eaebeae3284525070">scrape_vcard()</a>, <a class="el" href="text_8php.html#a876e94892867019935b348b573299352">search()</a>, <a class="el" href="search__ac_8php.html#a14f90c83a3f2be095e9e2992a8d66138">search_ac_init()</a>, <a class="el" href="search_8php.html#ab2568591359edde5b483a6cd9a24b2cc">search_content()</a>, <a class="el" href="search_8php.html#acf19fd30f07f495781ca0d7a0a08b435">search_init()</a>, <a class="el" href="include_2message_8php.html#a751ffd6635022b2190f56154ee745752">send_message()</a>, <a class="el" href="account_8php.html#a030cec6793b909c439c0336ba39b1571">service_class_allows()</a>, <a class="el" href="account_8php.html#a905b54e10704b283ac64680a8abc0971">service_class_fetch()</a>, <a class="el" href="service__limits_8php.html#a653424aac63c5cd05ba70c3c77bf7f8a">service_limits_content()</a>, <a class="el" href="include_2config_8php.html#ad6da879e4fb5b37d1e161d4e9be5c32a">set_config()</a>, <a class="el" href="classConversation.html#a66f121ca4026246f86a732e5faa0682c">Conversation\set_mode()</a>, <a class="el" href="include_2config_8php.html#a61591371cb18764138655d67dc817ab2">set_pconfig()</a>, <a class="el" href="include_2config_8php.html#afe117b70f1bba2f6348d9300b601f86e">set_xconfig()</a>, <a class="el" href="settings_8php.html#a3a4cde287482fced008583f54ba2a722">settings_init()</a>, <a class="el" href="settings_8php.html#aa7ee94d88ac088edb04ccf3a26de3586">settings_post()</a>, <a class="el" href="setup_8php.html#a88247384a96e14516f474d7af6a465c1">setup_content()</a>, <a class="el" href="setup_8php.html#a13cf286774149a0a7bd8adb8179cec75">setup_post()</a>, <a class="el" href="share_8php.html#afeb26046bdd02567ecd29ab5f188b249">share_init()</a>, <a class="el" href="siteinfo_8php.html#a70c09bfb6dd1c86a125a35f62ed53656">siteinfo_content()</a>, <a class="el" href="siteinfo_8php.html#a3efbd0bd6564af19ec0a9ce0294e59d0">siteinfo_init()</a>, <a class="el" href="text_8php.html#a3d225b253bb9e0f2498c11647d927b0b">smilies()</a>, <a class="el" href="smilies_8php.html#ab43b1e9f33a700a830aff14c7b3a617f">smilies_content()</a>, <a class="el" href="sources_8php.html#ac73298ff162ce7b2de8dcaf3d3305b1e">sources_post()</a>, <a class="el" href="stumble_2php_2theme_8php.html#a71db9eff6289e0ee47771c37c01d6753">stumble_init()</a>, <a class="el" href="subthread_8php.html#a50368f3d825b77996030528e7fbfa3d3">subthread_content()</a>, <a class="el" href="suckerberg_2php_2theme_8php.html#a4104fce7d5fb71d15ed811978b628fc8">suckerberg_init()</a>, <a class="el" href="suggest_8php.html#a58748a8235d4523f8333847f3e42dd91">suggest_content()</a>, <a class="el" href="language_8php.html#ac6ae482ee54fa2764d5c2e77305aeb96">t()</a>, <a class="el" href="items_8php.html#ab1bce4261bcf75ad62753b498a144d17">tag_deliver()</a>, <a class="el" href="text_8php.html#ac2ff88e800f74b22e9cc091c10809c54">tag_sort_length()</a>, <a class="el" href="tagger_8php.html#a0e4a3eb177d1684553c547503d67161c">tagger_content()</a>, <a class="el" href="tagrm_8php.html#adfd4ea5b4d7fc6d9c9e042af5cd7d49a">tagrm_content()</a>, <a class="el" href="tagrm_8php.html#a1702f40aa53a2fa93deade1f609abe78">tagrm_post()</a>, <a class="el" href="taxonomy_8php.html#aaeded36bcc983b35d9205fe5b6c18c43">tags_sort()</a>, <a class="el" href="items_8php.html#a88c6cf7649ac836fbbed82a7a0315110">tgroup_check()</a>, <a class="el" href="view_2theme_2apw_2php_2config_8php.html#aa7d5739b72efef9822535b2b32d5364d">theme_content()</a>, <a class="el" href="plugin_8php.html#a65fedcffbe03562ef844cabee37d34e2">theme_include()</a>, <a class="el" href="thing_8php.html#a24a35f1e64029a67fdbea94a776ae04b">thing_content()</a>, <a class="el" href="thing_8php.html#a8be23b1d475ec3d9291999221c674c80">thing_init()</a>, <a class="el" href="datetime_8php.html#aa51b5a7ea4f931b23acbdfcea46e9865">timezone_cmp()</a>, <a class="el" href="toggle__mobile_8php.html#aca53ade8971802b45c31e722b22c6254">toggle_mobile_init()</a>, <a class="el" href="language_8php.html#a686bcafa6b0d5c86d37b38a1db5b6997">tt()</a>, <a class="el" href="uexport_8php.html#a118920137dedebe0581623a2e57e7b0d">uexport_init()</a>, <a class="el" href="update__channel_8php.html#aca52a9da500f0db2f0a8666af5bc06ba">update_channel_content()</a>, <a class="el" href="update__display_8php.html#aa36ac524059e209d5d75a03c16206246">update_display_content()</a>, <a class="el" href="update__home_8php.html#a668340089acd150b830134476a647d05">update_home_content()</a>, <a class="el" href="update__network_8php.html#a8abf5b9f65af6a27ee2f9d7207ed1b41">update_network_content()</a>, <a class="el" href="update__search_8php.html#ace4c3a23fa7d6922399e27c297a6ba52">update_search_content()</a>, <a class="el" href="socgraph_8php.html#a790690bb1a1d02483fe31632a160144d">update_suggestions()</a>, <a class="el" href="account_8php.html#ac5c570a2d46446bad4dd2501e9c5a4b1">user_allow()</a>, <a class="el" href="account_8php.html#ad07be417ac7eda939768804106ddea3d">user_approve()</a>, <a class="el" href="Contact_8php.html#a6348a532c9d26cd1c9afbc9aa6aa8960">vcard_from_xchan()</a>, <a class="el" href="viewconnections_8php.html#ab6c4d983e97b3a8a879567ff76507776">viewconnections_content()</a>, <a class="el" href="viewconnections_8php.html#a00163d50b17568f7b0e48b1ca9ab7330">viewconnections_init()</a>, <a class="el" href="viewsrc_8php.html#a6eff3d0c1d7d14b335c4edb785cd60a4">viewsrc_content()</a>, <a class="el" href="vote_8php.html#a6aa67489bf458ca5e3206e46dac68596">vote_content()</a>, <a class="el" href="vote_8php.html#ae0c6610f40afbbc1f4fe6494c51fbab2">vote_init()</a>, <a class="el" href="vote_8php.html#a57a9516ee1b923b224e66dcc47377fb2">vote_post()</a>, <a class="el" href="wall__upload_8php.html#a7cbe204244cf9e0380ee932263a74d8f">wall_upload_post()</a>, <a class="el" href="webpages_8php.html#af3b7397d4abc153e3d2147740ee1a41d">webpages_content()</a>, <a class="el" href="webpages_8php.html#af9ad0b65eba79acead3fa32b43d888b7">webpages_init()</a>, <a class="el" href="wfinger_8php.html#ae21e50c8d0a5f3c9be9f43a4e519acd3">wfinger_init()</a>, <a class="el" href="setup_8php.html#aea1ebdda58ec938f4e7b31aa5c5f6b58">what_next()</a>, <a class="el" href="widgets_8php.html#a7b1e357b5a2027718470b77ec921fc65">widget_archive()</a>, <a class="el" href="widgets_8php.html#af919de8e7e2ba8192a65fadc72a2c8b5">widget_catcloud_wall()</a>, <a class="el" href="widgets_8php.html#af37fdad3b2e861d860a4a8c4d8a76c0b">widget_categories()</a>, <a class="el" href="widgets_8php.html#a47c72aac42058ea086c9ef8651c259da">widget_chatroom_list()</a>, <a class="el" href="widgets_8php.html#a145ff35319cfa47a9cc07f9425bd674b">widget_design_tools()</a>, <a class="el" href="widgets_8php.html#a5ab3b64496e02cab56429978ad55f1c0">widget_filer()</a>, <a class="el" href="widgets_8php.html#ad1bf7aa69e8d100d95faba17c7bc91cd">widget_follow()</a>, <a class="el" href="widgets_8php.html#a70442dfa079312d9d5e5ee01be51a165">widget_fullprofile()</a>, <a class="el" href="widgets_8php.html#a313a8d10ab81c71357c12e67e4d7efd5">widget_item()</a>, <a class="el" href="widgets_8php.html#afa2e55a78f95667a6da082efac7fec74">widget_mailmenu()</a>, <a class="el" href="widgets_8php.html#a702e2fc0adc9b615999eca18b7311b5e">widget_photo_albums()</a>, <a class="el" href="widgets_8php.html#abd2e508a2a0b911c4a838e3cb7599923">widget_profile()</a>, <a class="el" href="widgets_8php.html#a94203eb9bcd63cbdecbbcb15163598d8">widget_savedsearch()</a>, <a class="el" href="widgets_8php.html#aaa73bcf1702eaadd9dcd253502f55e01">widget_settings_menu()</a>, <a class="el" href="widgets_8php.html#a6dbc227aac750774284ee39c45f0a200">widget_tagcloud()</a>, <a class="el" href="widgets_8php.html#ae4ced69d83dbdd9e6b51660d9eba8653">widget_tagcloud_wall()</a>, <a class="el" href="xrd_8php.html#aee3cf087968e4a0ff3a87de16eb23270">xrd_init()</a>, <a class="el" href="include_2network_8php.html#aafd06c0a75402aefb06cfb9f9740fa37">z_fetch_url()</a>, <a class="el" href="boot_8php.html#aba208673515cbb8a55e5fa4a1da99fda">z_path()</a>, <a class="el" href="boot_8php.html#add517a0958ac684792c62142a3877f81">z_root()</a>, <a class="el" href="zfinger_8php.html#a8139b83a22ef98869adc10aa224027a0">zfinger_init()</a>, <a class="el" href="identity_8php.html#a680fbafc2db023c5b1309e0180e81315">zid_init()</a>, <a class="el" href="zotfeed_8php.html#a24dfc23d366e7f840cf2847d0c1c8eac">zotfeed_init()</a>, and <a class="el" href="zping_8php.html#a4d3a6b0b8b04ed6469015823e615ee75">zping_content()</a>.</p>
</div>
</div>
diff --git a/doc/html/typohelper_8php.html b/doc/html/typohelper_8php.html
index 4e342cde5..c1cf8bdc9 100644
--- a/doc/html/typohelper_8php.html
+++ b/doc/html/typohelper_8php.html
@@ -130,7 +130,7 @@ Variables</h2></td></tr>
<b>Initial value:</b><div class="fragment"><div class="line">= &lt;&lt;&lt; <a class="code" href="typohelper_8php.html#ab6fd357fb5b2a3ba8aab9e8b98c6a805">EOT</a></div>
<div class="line"> error_reporting(E_ERROR | E_WARNING | E_PARSE )</div>
</div><!-- fragment -->
-<p>Referenced by <a class="el" href="include_2api_8php.html#aea2dda92a155f2843a0ca188d8dfdf25">api_date()</a>, <a class="el" href="setup_8php.html#a14d208682a88632290c895d20da6e7d6">check_php()</a>, <a class="el" href="text_8php.html#a0c65597bb4aed3a039eb795ff540e5e3">check_webbie()</a>, <a class="el" href="dba__driver_8php.html#ab222aa1dbf9ea93b320f82028739127e">dbesc()</a>, <a class="el" href="classdba__mysql.html#a99a7691ea6cb1300031fb6549379066e">dba_mysql\escape()</a>, <a class="el" href="classdba__mysqli.html#a27d6a748af7f80028801306e7ea33f64">dba_mysqli\escape()</a>, <a class="el" href="plugin_8php.html#af92789f559b89a380e49d303218aeeca">head_get_css()</a>, <a class="el" href="plugin_8php.html#a65ab52cb1a7030d5190e247211bef2a1">head_get_js()</a>, <a class="el" href="plugin_8php.html#a67ca417634de2d0beffffc54aeb951ff">head_get_main_js()</a>, <a class="el" href="items_8php.html#acf0bf7c9d21ac84f32effb754f7ad484">item_store_update()</a>, <a class="el" href="items_8php.html#aa2d3caa2f27720762b5c729e07df40fb">list_post_dates()</a>, <a class="el" href="setup_8php.html#ad2e0375a9ab87ebe6e78124ee125054a">load_database()</a>, <a class="el" href="include_2photos_8php.html#a7e7abc69872180697c5471dc69349afe">photos_album_get_db_idstr()</a>, <a class="el" href="mod_2photos_8php.html#a062bed4d04d14fee8a53f4c9be673080">photos_post()</a>, <a class="el" href="items_8php.html#ad2abb4644ff1f20fefbc80326fe01cf0">posted_dates()</a>, <a class="el" href="datetime_8php.html#a8ae8dc95ace7ac27fa5a1ecf42b78c82">relative_date()</a>, <a class="el" href="security_8php.html#a6126c77a1267e046ac59cf864613f011">stream_perms_api_uids()</a>, <a class="el" href="security_8php.html#a3ef2be6a7e4928e39d50059d6feb457c">stream_perms_xchans()</a>, <a class="el" href="thing_8php.html#a8be23b1d475ec3d9291999221c674c80">thing_init()</a>, and <a class="el" href="text_8php.html#aaed4413ed8918838b517e3b2fafaea0d">xmlify()</a>.</p>
+<p>Referenced by <a class="el" href="include_2api_8php.html#aea2dda92a155f2843a0ca188d8dfdf25">api_date()</a>, <a class="el" href="setup_8php.html#a14d208682a88632290c895d20da6e7d6">check_php()</a>, <a class="el" href="text_8php.html#a0c65597bb4aed3a039eb795ff540e5e3">check_webbie()</a>, <a class="el" href="classdba__mysql.html#a99a7691ea6cb1300031fb6549379066e">dba_mysql\escape()</a>, <a class="el" href="classdba__mysqli.html#a27d6a748af7f80028801306e7ea33f64">dba_mysqli\escape()</a>, <a class="el" href="classdba__postgres.html#a7108eaaae7cc2fb236212041afc9ac0f">dba_postgres\escape()</a>, <a class="el" href="classdba__postgres.html#ab2e44e9f41d05e585afd873d18e8c127">dba_postgres\escape_identifier()</a>, <a class="el" href="classdba__postgres.html#a8d2c6d8c92fe6f074452876483dd17fc">dba_postgres\escapebin()</a>, <a class="el" href="items_8php.html#a8cda98925a4c5c2f6dade70d9586d79a">filter_insecure()</a>, <a class="el" href="plugin_8php.html#af92789f559b89a380e49d303218aeeca">head_get_css()</a>, <a class="el" href="plugin_8php.html#a65ab52cb1a7030d5190e247211bef2a1">head_get_js()</a>, <a class="el" href="plugin_8php.html#a67ca417634de2d0beffffc54aeb951ff">head_get_main_js()</a>, <a class="el" href="items_8php.html#acf0bf7c9d21ac84f32effb754f7ad484">item_store_update()</a>, <a class="el" href="items_8php.html#ab33fa9756aaa5f39a6104d57a62baf00">list_post_dates()</a>, <a class="el" href="setup_8php.html#ad2e0375a9ab87ebe6e78124ee125054a">load_database()</a>, <a class="el" href="include_2photos_8php.html#a7e7abc69872180697c5471dc69349afe">photos_album_get_db_idstr()</a>, <a class="el" href="mod_2photos_8php.html#a062bed4d04d14fee8a53f4c9be673080">photos_post()</a>, <a class="el" href="items_8php.html#ad2abb4644ff1f20fefbc80326fe01cf0">posted_dates()</a>, <a class="el" href="datetime_8php.html#a8ae8dc95ace7ac27fa5a1ecf42b78c82">relative_date()</a>, <a class="el" href="security_8php.html#a6126c77a1267e046ac59cf864613f011">stream_perms_api_uids()</a>, <a class="el" href="security_8php.html#a3ef2be6a7e4928e39d50059d6feb457c">stream_perms_xchans()</a>, <a class="el" href="thing_8php.html#a8be23b1d475ec3d9291999221c674c80">thing_init()</a>, <a class="el" href="po2php_8php.html#a4f3dc9b019d0cd1dc171c54c991ef334">trim_message()</a>, <a class="el" href="classdba__postgres.html#a677f850211975c9ab89602c67e2dcad9">dba_postgres\unescapebin()</a>, and <a class="el" href="text_8php.html#aaed4413ed8918838b517e3b2fafaea0d">xmlify()</a>.</p>
</div>
</div>
@@ -144,7 +144,7 @@ Variables</h2></td></tr>
</table>
</div><div class="memdoc">
-<p>Referenced by <a class="el" href="nav_8php.html#a43be0df73b90647ea70947ce004e231e">nav()</a>, <a class="el" href="subthread_8php.html#a50368f3d825b77996030528e7fbfa3d3">subthread_content()</a>, <a class="el" href="system__unavailable_8php.html#a73751a6bcc17ad3ca503496e2fb020fa">system_down()</a>, and <a class="el" href="widgets_8php.html#a9d60539db68042e63c0015abd69a6f7a">widget_clock()</a>.</p>
+<p>Referenced by <a class="el" href="diaspora_8php.html#a4901762cba5cd8dcdc57bdf285eefb1b">diaspora_msg_build()</a>, <a class="el" href="diaspora_8php.html#a586d5a3ba92d35cee14f879f290072aa">diaspora_pubmsg_build()</a>, <a class="el" href="nav_8php.html#a43be0df73b90647ea70947ce004e231e">nav()</a>, <a class="el" href="subthread_8php.html#a50368f3d825b77996030528e7fbfa3d3">subthread_content()</a>, <a class="el" href="system__unavailable_8php.html#a73751a6bcc17ad3ca503496e2fb020fa">system_down()</a>, and <a class="el" href="widgets_8php.html#a9d60539db68042e63c0015abd69a6f7a">widget_clock()</a>.</p>
</div>
</div>
diff --git a/doc/html/uexport_8php.html b/doc/html/uexport_8php.html
index ac904249a..dc0265b2e 100644
--- a/doc/html/uexport_8php.html
+++ b/doc/html/uexport_8php.html
@@ -114,8 +114,26 @@ $(document).ready(function(){initNavTree('uexport_8php.html','');});
Functions</h2></td></tr>
<tr class="memitem:a118920137dedebe0581623a2e57e7b0d"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="uexport_8php.html#a118920137dedebe0581623a2e57e7b0d">uexport_init</a> (&amp;$a)</td></tr>
<tr class="separator:a118920137dedebe0581623a2e57e7b0d"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ae6f79d60916c01675c8cf663cb5fec84"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="uexport_8php.html#ae6f79d60916c01675c8cf663cb5fec84">uexport_content</a> (&amp;$a)</td></tr>
+<tr class="separator:ae6f79d60916c01675c8cf663cb5fec84"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<h2 class="groupheader">Function Documentation</h2>
+<a class="anchor" id="ae6f79d60916c01675c8cf663cb5fec84"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">uexport_content </td>
+ <td>(</td>
+ <td class="paramtype">&amp;&#160;</td>
+ <td class="paramname"><em>$a</em></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+</div>
+</div>
<a class="anchor" id="a118920137dedebe0581623a2e57e7b0d"></a>
<div class="memitem">
<div class="memproto">
diff --git a/doc/html/uexport_8php.js b/doc/html/uexport_8php.js
index 05a236df8..ec8404f5c 100644
--- a/doc/html/uexport_8php.js
+++ b/doc/html/uexport_8php.js
@@ -1,4 +1,5 @@
var uexport_8php =
[
+ [ "uexport_content", "uexport_8php.html#ae6f79d60916c01675c8cf663cb5fec84", null ],
[ "uexport_init", "uexport_8php.html#a118920137dedebe0581623a2e57e7b0d", null ]
]; \ No newline at end of file
diff --git a/doc/html/update__home_8php.html b/doc/html/update__home_8php.html
new file mode 100644
index 000000000..ce5a5581e
--- /dev/null
+++ b/doc/html/update__home_8php.html
@@ -0,0 +1,137 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<meta name="generator" content="Doxygen 1.8.3.1"/>
+<title>The Red Matrix: mod/update_home.php File Reference</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="navtree.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="resize.js"></script>
+<script type="text/javascript" src="navtree.js"></script>
+<script type="text/javascript">
+ $(document).ready(initResizable);
+ $(window).load(resizeHeight);
+</script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/search.js"></script>
+<script type="text/javascript">
+ $(document).ready(function() { searchBox.OnSelectItem(0); });
+</script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+ <td id="projectlogo"><img alt="Logo" src="rm-64.png"/></td>
+ <td style="padding-left: 0.5em;">
+ <div id="projectname">The Red Matrix
+ </div>
+ </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.8.3.1 -->
+<script type="text/javascript">
+var searchBox = new SearchBox("searchBox", "search",false,'Search');
+</script>
+ <div id="navrow1" class="tabs">
+ <ul class="tablist">
+ <li><a href="index.html"><span>Main&#160;Page</span></a></li>
+ <li><a href="pages.html"><span>Related&#160;Pages</span></a></li>
+ <li><a href="namespaces.html"><span>Namespaces</span></a></li>
+ <li><a href="annotated.html"><span>Classes</span></a></li>
+ <li class="current"><a href="files.html"><span>Files</span></a></li>
+ <li>
+ <div id="MSearchBox" class="MSearchBoxInactive">
+ <span class="left">
+ <img id="MSearchSelect" src="search/mag_sel.png"
+ onmouseover="return searchBox.OnSearchSelectShow()"
+ onmouseout="return searchBox.OnSearchSelectHide()"
+ alt=""/>
+ <input type="text" id="MSearchField" value="Search" accesskey="S"
+ onfocus="searchBox.OnSearchFieldFocus(true)"
+ onblur="searchBox.OnSearchFieldFocus(false)"
+ onkeyup="searchBox.OnSearchFieldChange(event)"/>
+ </span><span class="right">
+ <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
+ </span>
+ </div>
+ </li>
+ </ul>
+ </div>
+ <div id="navrow2" class="tabs2">
+ <ul class="tablist">
+ <li><a href="files.html"><span>File&#160;List</span></a></li>
+ <li><a href="globals.html"><span>File&#160;Members</span></a></li>
+ </ul>
+ </div>
+</div><!-- top -->
+<div id="side-nav" class="ui-resizable side-nav-resizable">
+ <div id="nav-tree">
+ <div id="nav-tree-contents">
+ <div id="nav-sync" class="sync"></div>
+ </div>
+ </div>
+ <div id="splitbar" style="-moz-user-select:none;"
+ class="ui-resizable-handle">
+ </div>
+</div>
+<script type="text/javascript">
+$(document).ready(function(){initNavTree('update__home_8php.html','');});
+</script>
+<div id="doc-content">
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+ onmouseover="return searchBox.OnSearchSelectShow()"
+ onmouseout="return searchBox.OnSearchSelectHide()"
+ onkeydown="return searchBox.OnSearchSelectKey(event)">
+<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark">&#160;</span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark">&#160;</span>Classes</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark">&#160;</span>Namespaces</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark">&#160;</span>Files</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark">&#160;</span>Functions</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark">&#160;</span>Variables</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark">&#160;</span>Pages</a></div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<iframe src="javascript:void(0)" frameborder="0"
+ name="MSearchResults" id="MSearchResults">
+</iframe>
+</div>
+
+<div class="header">
+ <div class="summary">
+<a href="#func-members">Functions</a> </div>
+ <div class="headertitle">
+<div class="title">update_home.php File Reference</div> </div>
+</div><!--header-->
+<div class="contents">
+<table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="func-members"></a>
+Functions</h2></td></tr>
+<tr class="memitem:a668340089acd150b830134476a647d05"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="update__home_8php.html#a668340089acd150b830134476a647d05">update_home_content</a> (&amp;$a)</td></tr>
+<tr class="separator:a668340089acd150b830134476a647d05"><td class="memSeparator" colspan="2">&#160;</td></tr>
+</table>
+<h2 class="groupheader">Function Documentation</h2>
+<a class="anchor" id="a668340089acd150b830134476a647d05"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">update_home_content </td>
+ <td>(</td>
+ <td class="paramtype">&amp;&#160;</td>
+ <td class="paramname"><em>$a</em></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+</div>
+</div>
+</div><!-- contents -->
+</div><!-- doc-content -->
+
diff --git a/doc/html/update__home_8php.js b/doc/html/update__home_8php.js
new file mode 100644
index 000000000..eda951a37
--- /dev/null
+++ b/doc/html/update__home_8php.js
@@ -0,0 +1,4 @@
+var update__home_8php =
+[
+ [ "update_home_content", "update__home_8php.html#a668340089acd150b830134476a647d05", null ]
+]; \ No newline at end of file
diff --git a/doc/html/webpages_8php.html b/doc/html/webpages_8php.html
index 303ce4718..f82e10ed4 100644
--- a/doc/html/webpages_8php.html
+++ b/doc/html/webpages_8php.html
@@ -112,6 +112,8 @@ $(document).ready(function(){initNavTree('webpages_8php.html','');});
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="func-members"></a>
Functions</h2></td></tr>
+<tr class="memitem:af9ad0b65eba79acead3fa32b43d888b7"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="webpages_8php.html#af9ad0b65eba79acead3fa32b43d888b7">webpages_init</a> (&amp;$a)</td></tr>
+<tr class="separator:af9ad0b65eba79acead3fa32b43d888b7"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:af3b7397d4abc153e3d2147740ee1a41d"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="webpages_8php.html#af3b7397d4abc153e3d2147740ee1a41d">webpages_content</a> (&amp;$a)</td></tr>
<tr class="separator:af3b7397d4abc153e3d2147740ee1a41d"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
@@ -132,6 +134,22 @@ Functions</h2></td></tr>
</div>
</div>
+<a class="anchor" id="af9ad0b65eba79acead3fa32b43d888b7"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">webpages_init </td>
+ <td>(</td>
+ <td class="paramtype">&amp;&#160;</td>
+ <td class="paramname"><em>$a</em></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+</div>
+</div>
</div><!-- contents -->
</div><!-- doc-content -->
diff --git a/doc/html/webpages_8php.js b/doc/html/webpages_8php.js
index 8e145305c..961f9a5e8 100644
--- a/doc/html/webpages_8php.js
+++ b/doc/html/webpages_8php.js
@@ -1,4 +1,5 @@
var webpages_8php =
[
- [ "webpages_content", "webpages_8php.html#af3b7397d4abc153e3d2147740ee1a41d", null ]
+ [ "webpages_content", "webpages_8php.html#af3b7397d4abc153e3d2147740ee1a41d", null ],
+ [ "webpages_init", "webpages_8php.html#af9ad0b65eba79acead3fa32b43d888b7", null ]
]; \ No newline at end of file
diff --git a/doc/html/widgets_8php.html b/doc/html/widgets_8php.html
index 871283917..03fd52903 100644
--- a/doc/html/widgets_8php.html
+++ b/doc/html/widgets_8php.html
@@ -109,6 +109,9 @@ $(document).ready(function(){initNavTree('widgets_8php.html','');});
<div class="title">widgets.php File Reference</div> </div>
</div><!--header-->
<div class="contents">
+
+<p>This file contains the widgets.
+<a href="#details">More...</a></p>
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="func-members"></a>
Functions</h2></td></tr>
@@ -138,6 +141,8 @@ Functions</h2></td></tr>
<tr class="separator:af37fdad3b2e861d860a4a8c4d8a76c0b"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ae4ced69d83dbdd9e6b51660d9eba8653"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="widgets_8php.html#ae4ced69d83dbdd9e6b51660d9eba8653">widget_tagcloud_wall</a> ($arr)</td></tr>
<tr class="separator:ae4ced69d83dbdd9e6b51660d9eba8653"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:af919de8e7e2ba8192a65fadc72a2c8b5"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="widgets_8php.html#af919de8e7e2ba8192a65fadc72a2c8b5">widget_catcloud_wall</a> ($arr)</td></tr>
+<tr class="separator:af919de8e7e2ba8192a65fadc72a2c8b5"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:add9b24d3304e529a7975e96122315554"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="widgets_8php.html#add9b24d3304e529a7975e96122315554">widget_affinity</a> ($arr)</td></tr>
<tr class="separator:add9b24d3304e529a7975e96122315554"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aaa73bcf1702eaadd9dcd253502f55e01"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="widgets_8php.html#aaa73bcf1702eaadd9dcd253502f55e01">widget_settings_menu</a> ($arr)</td></tr>
@@ -172,8 +177,14 @@ Functions</h2></td></tr>
<tr class="separator:a9d60539db68042e63c0015abd69a6f7a"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a999ba893cac7600d3d3b4e7e14cf8c20"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="widgets_8php.html#a999ba893cac7600d3d3b4e7e14cf8c20">widget_photo</a> ($arr)</td></tr>
<tr class="separator:a999ba893cac7600d3d3b4e7e14cf8c20"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:af8eb466ef91d9e96e13335ead5eba380"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="widgets_8php.html#af8eb466ef91d9e96e13335ead5eba380">widget_photo_rand</a> ($arr)</td></tr>
+<tr class="separator:af8eb466ef91d9e96e13335ead5eba380"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a829c5a5c7448129266fc1df3ae1a3c2e"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="widgets_8php.html#a829c5a5c7448129266fc1df3ae1a3c2e">widget_random_block</a> ($arr)</td></tr>
+<tr class="separator:a829c5a5c7448129266fc1df3ae1a3c2e"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
-<h2 class="groupheader">Function Documentation</h2>
+<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
+<div class="textblock"><p>This file contains the widgets. </p>
+</div><h2 class="groupheader">Function Documentation</h2>
<a class="anchor" id="add9b24d3304e529a7975e96122315554"></a>
<div class="memitem">
<div class="memproto">
@@ -238,6 +249,22 @@ Functions</h2></td></tr>
</div>
</div>
+<a class="anchor" id="af919de8e7e2ba8192a65fadc72a2c8b5"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">widget_catcloud_wall </td>
+ <td>(</td>
+ <td class="paramtype">&#160;</td>
+ <td class="paramname"><em>$arr</em></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+</div>
+</div>
<a class="anchor" id="af37fdad3b2e861d860a4a8c4d8a76c0b"></a>
<div class="memitem">
<div class="memproto">
@@ -333,7 +360,6 @@ Functions</h2></td></tr>
</tr>
</table>
</div><div class="memdoc">
-<p>The following directory widgets are only useful on the directory page </p>
</div>
</div>
@@ -536,6 +562,22 @@ Functions</h2></td></tr>
</div>
</div>
+<a class="anchor" id="af8eb466ef91d9e96e13335ead5eba380"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">widget_photo_rand </td>
+ <td>(</td>
+ <td class="paramtype">&#160;</td>
+ <td class="paramname"><em>$arr</em></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+</div>
+</div>
<a class="anchor" id="abd2e508a2a0b911c4a838e3cb7599923"></a>
<div class="memitem">
<div class="memproto">
@@ -550,6 +592,24 @@ Functions</h2></td></tr>
</table>
</div><div class="memdoc">
+<p>Referenced by <a class="el" href="hcard_8php.html#a3663012f1549849af88aba2bb87388e3">hcard_content()</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a829c5a5c7448129266fc1df3ae1a3c2e"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">widget_random_block </td>
+ <td>(</td>
+ <td class="paramtype">&#160;</td>
+ <td class="paramname"><em>$arr</em></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
</div>
</div>
<a class="anchor" id="a94203eb9bcd63cbdecbbcb15163598d8"></a>
diff --git a/doc/html/widgets_8php.js b/doc/html/widgets_8php.js
index 69c9d267d..f78b49912 100644
--- a/doc/html/widgets_8php.js
+++ b/doc/html/widgets_8php.js
@@ -4,6 +4,7 @@ var widgets_8php =
[ "widget_appselect", "widgets_8php.html#aced5cb177f630b30799c5eab873ee75c", null ],
[ "widget_archive", "widgets_8php.html#a7b1e357b5a2027718470b77ec921fc65", null ],
[ "widget_bookmarkedchats", "widgets_8php.html#a0e2f5179ed1a73b282dfda7270fcabb3", null ],
+ [ "widget_catcloud_wall", "widgets_8php.html#af919de8e7e2ba8192a65fadc72a2c8b5", null ],
[ "widget_categories", "widgets_8php.html#af37fdad3b2e861d860a4a8c4d8a76c0b", null ],
[ "widget_chatroom_list", "widgets_8php.html#a47c72aac42058ea086c9ef8651c259da", null ],
[ "widget_clock", "widgets_8php.html#a9d60539db68042e63c0015abd69a6f7a", null ],
@@ -22,7 +23,9 @@ var widgets_8php =
[ "widget_notes", "widgets_8php.html#a45ea061dabe9a8372e4ca3b9e5714256", null ],
[ "widget_photo", "widgets_8php.html#a999ba893cac7600d3d3b4e7e14cf8c20", null ],
[ "widget_photo_albums", "widgets_8php.html#a702e2fc0adc9b615999eca18b7311b5e", null ],
+ [ "widget_photo_rand", "widgets_8php.html#af8eb466ef91d9e96e13335ead5eba380", null ],
[ "widget_profile", "widgets_8php.html#abd2e508a2a0b911c4a838e3cb7599923", null ],
+ [ "widget_random_block", "widgets_8php.html#a829c5a5c7448129266fc1df3ae1a3c2e", null ],
[ "widget_savedsearch", "widgets_8php.html#a94203eb9bcd63cbdecbbcb15163598d8", null ],
[ "widget_settings_menu", "widgets_8php.html#aaa73bcf1702eaadd9dcd253502f55e01", null ],
[ "widget_suggestedchats", "widgets_8php.html#a50b1410238100c8a94c06b0aa63ee3b8", null ],
diff --git a/doc/html/zot_8php.html b/doc/html/zot_8php.html
index 2dac11ac3..9d79e4f17 100644
--- a/doc/html/zot_8php.html
+++ b/doc/html/zot_8php.html
@@ -114,10 +114,12 @@ $(document).ready(function(){initNavTree('zot_8php.html','');});
Functions</h2></td></tr>
<tr class="memitem:ab22d67660702056bf3f4696dcebf5ce7"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="zot_8php.html#ab22d67660702056bf3f4696dcebf5ce7">zot_new_uid</a> ($channel_nick)</td></tr>
<tr class="separator:ab22d67660702056bf3f4696dcebf5ce7"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a0fc2211c5309d9f925ecc4115e3fdb75"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="zot_8php.html#a0fc2211c5309d9f925ecc4115e3fdb75">make_xchan_hash</a> ($guid, $guid_sig)</td></tr>
+<tr class="separator:a0fc2211c5309d9f925ecc4115e3fdb75"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ae7cec2b417b5858fd4a41070f843d1d7"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="zot_8php.html#ae7cec2b417b5858fd4a41070f843d1d7">zot_get_hublocs</a> ($hash)</td></tr>
<tr class="separator:ae7cec2b417b5858fd4a41070f843d1d7"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a3862b3161b2c8557dc1a95020179bd81"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="zot_8php.html#a3862b3161b2c8557dc1a95020179bd81">zot_build_packet</a> ($channel, $type= 'notify', $recipients=null, $remote_key=null, $secret=null)</td></tr>
-<tr class="separator:a3862b3161b2c8557dc1a95020179bd81"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a084c581d534e7e3b759488b46602288f"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="zot_8php.html#a084c581d534e7e3b759488b46602288f">zot_build_packet</a> ($channel, $type= 'notify', $recipients=null, $remote_key=null, $secret=null, $extra=null)</td></tr>
+<tr class="separator:a084c581d534e7e3b759488b46602288f"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ab3e9b99ddb11353f37f265a05bb42142"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="zot_8php.html#ab3e9b99ddb11353f37f265a05bb42142">zot_zot</a> ($url, $data)</td></tr>
<tr class="separator:ab3e9b99ddb11353f37f265a05bb42142"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a95528377d7303131958c9f0b7158fdce"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="zot_8php.html#a95528377d7303131958c9f0b7158fdce">zot_finger</a> ($webbie, $channel, $autofallback=true)</td></tr>
@@ -140,8 +142,8 @@ Functions</h2></td></tr>
<tr class="separator:a083aec6c900d244e1bfc1406f9461465"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a703f528ade8382cf374e4119bd6f7859"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="zot_8php.html#a703f528ade8382cf374e4119bd6f7859">allowed_public_recips</a> ($msg)</td></tr>
<tr class="separator:a703f528ade8382cf374e4119bd6f7859"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a4d9e6ca295e443b740d9960c304b3474"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="zot_8php.html#a4d9e6ca295e443b740d9960c304b3474">process_delivery</a> ($sender, $arr, $deliveries, $relay, $public=false)</td></tr>
-<tr class="separator:a4d9e6ca295e443b740d9960c304b3474"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a0e3006e7a456b2175a9badc96bc5176d"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="zot_8php.html#a0e3006e7a456b2175a9badc96bc5176d">process_delivery</a> ($sender, $arr, $deliveries, $relay, $public=false, $request=false)</td></tr>
+<tr class="separator:a0e3006e7a456b2175a9badc96bc5176d"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aad25a3fe0e1566121d6fb8222979bc10"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="zot_8php.html#aad25a3fe0e1566121d6fb8222979bc10">remove_community_tag</a> ($sender, $arr, $uid)</td></tr>
<tr class="separator:aad25a3fe0e1566121d6fb8222979bc10"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a31aad56acf8ff8f2353e6ff8595544df"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="zot_8php.html#a31aad56acf8ff8f2353e6ff8595544df">update_imported_item</a> ($sender, $item, $uid)</td></tr>
@@ -152,6 +154,12 @@ Functions</h2></td></tr>
<tr class="separator:aa6ae96db8cbbdbb10e6876d206bbf7cc"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a9a57b40669351c9791126b925cb7ef3b"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="zot_8php.html#a9a57b40669351c9791126b925cb7ef3b">process_profile_delivery</a> ($sender, $arr, $deliveries)</td></tr>
<tr class="separator:a9a57b40669351c9791126b925cb7ef3b"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a8eeefdb0dad4c436bea9d1c06c0a7988"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="zot_8php.html#a8eeefdb0dad4c436bea9d1c06c0a7988">process_location_delivery</a> ($sender, $arr, $deliveries)</td></tr>
+<tr class="separator:a8eeefdb0dad4c436bea9d1c06c0a7988"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ab15c04e7e5f44edf45ec50dd7d183254"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="zot_8php.html#ab15c04e7e5f44edf45ec50dd7d183254">sync_locations</a> ($sender, $arr, $absolute=false)</td></tr>
+<tr class="separator:ab15c04e7e5f44edf45ec50dd7d183254"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ae26ce9f1ad74139193fb6319beac5fca"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="zot_8php.html#ae26ce9f1ad74139193fb6319beac5fca">zot_encode_locations</a> ($channel)</td></tr>
+<tr class="separator:ae26ce9f1ad74139193fb6319beac5fca"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a20750dd2c36961013fd382fb34e1366c"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="zot_8php.html#a20750dd2c36961013fd382fb34e1366c">import_directory_profile</a> ($hash, $profile, $addr, $ud_flags=<a class="el" href="boot_8php.html#a9690d73434125ce594a1f5e7c2a4f7c0">UPDATE_FLAGS_UPDATED</a>, $suppress_update=0)</td></tr>
<tr class="separator:a20750dd2c36961013fd382fb34e1366c"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a3bf11286c2619b4ca28e49d5b5ab374a"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="zot_8php.html#a3bf11286c2619b4ca28e49d5b5ab374a">import_directory_keywords</a> ($hash, $keywords)</td></tr>
@@ -160,14 +168,16 @@ Functions</h2></td></tr>
<tr class="separator:ab319d1d9fff9c7775d9daef42d1f33dd"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a2657e141d62d5f67ad3c87651b585299"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="zot_8php.html#a2657e141d62d5f67ad3c87651b585299">import_site</a> ($arr, $pubkey)</td></tr>
<tr class="separator:a2657e141d62d5f67ad3c87651b585299"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:ac34e479d27f32b82dd6b33542f81a6a7"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="zot_8php.html#ac34e479d27f32b82dd6b33542f81a6a7">build_sync_packet</a> ($uid=0, $packet=null)</td></tr>
-<tr class="separator:ac34e479d27f32b82dd6b33542f81a6a7"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:aa97b33b619dd7132a9274f852af6ceb5"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="zot_8php.html#aa97b33b619dd7132a9274f852af6ceb5">build_sync_packet</a> ($uid=0, $packet=null, $groups_changed=false)</td></tr>
+<tr class="separator:aa97b33b619dd7132a9274f852af6ceb5"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ac301c67864917c35922257950ae0f95c"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="zot_8php.html#ac301c67864917c35922257950ae0f95c">process_channel_sync_delivery</a> ($sender, $arr, $deliveries)</td></tr>
<tr class="separator:ac301c67864917c35922257950ae0f95c"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a8e22dbc6f884be3644a892a876cbd972"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="zot_8php.html#a8e22dbc6f884be3644a892a876cbd972">get_rpost_path</a> ($observer)</td></tr>
<tr class="separator:a8e22dbc6f884be3644a892a876cbd972"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:ad149f1e98c0c5b88ff9147e6ee3f330d"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="zot_8php.html#ad149f1e98c0c5b88ff9147e6ee3f330d">import_author_zot</a> ($<a class="el" href="boot_8php.html#a01353c9abebc3544ea080ac161729632">x</a>)</td></tr>
+<tr class="memitem:ad149f1e98c0c5b88ff9147e6ee3f330d"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="zot_8php.html#ad149f1e98c0c5b88ff9147e6ee3f330d">import_author_zot</a> ($<a class="el" href="boot_8php.html#ae97836b0547953be182a2334c9c91d3c">x</a>)</td></tr>
<tr class="separator:ad149f1e98c0c5b88ff9147e6ee3f330d"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a3920afe14fc1d82020161b4b86bcd9ac"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="zot_8php.html#a3920afe14fc1d82020161b4b86bcd9ac">zot_process_message_request</a> ($data)</td></tr>
+<tr class="separator:a3920afe14fc1d82020161b4b86bcd9ac"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<h2 class="groupheader">Function Documentation</h2>
<a class="anchor" id="a703f528ade8382cf374e4119bd6f7859"></a>
@@ -188,7 +198,7 @@ Functions</h2></td></tr>
</div>
</div>
-<a class="anchor" id="ac34e479d27f32b82dd6b33542f81a6a7"></a>
+<a class="anchor" id="aa97b33b619dd7132a9274f852af6ceb5"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
@@ -202,7 +212,13 @@ Functions</h2></td></tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">&#160;</td>
- <td class="paramname"><em>$packet</em> = <code>null</code>&#160;</td>
+ <td class="paramname"><em>$packet</em> = <code>null</code>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">&#160;</td>
+ <td class="paramname"><em>$groups_changed</em> = <code>false</code>&#160;</td>
</tr>
<tr>
<td></td>
@@ -213,7 +229,7 @@ Functions</h2></td></tr>
</div><div class="memdoc">
<p>Send a zot packet to all hubs where this channel is duplicated, refreshing such things as personal settings, channel permissions, address book updates, etc. </p>
-<p>Referenced by <a class="el" href="connections_8php.html#a15af118efee9c948b6f8294e54a73bb2">connections_clone()</a>, <a class="el" href="connedit_8php.html#a707ea7e63cf9674025b1d6b081ae74f5">connedit_clone()</a>, <a class="el" href="notes_8php.html#a4dbd7b1f906440746af48b484d66535a">notes_init()</a>, <a class="el" href="profiles_8php.html#ab0362c81b1d3b0b12a772b9fac446e04">profiles_post()</a>, and <a class="el" href="settings_8php.html#aa7ee94d88ac088edb04ccf3a26de3586">settings_post()</a>.</p>
+<p>Referenced by <a class="el" href="connections_8php.html#a15af118efee9c948b6f8294e54a73bb2">connections_clone()</a>, <a class="el" href="connedit_8php.html#a707ea7e63cf9674025b1d6b081ae74f5">connedit_clone()</a>, <a class="el" href="connedit_8php.html#a795acb3d9d841f55c255d7611681ab67">connedit_content()</a>, <a class="el" href="include_2group_8php.html#a06ec565d2b64e79044e7c1bf91a2a4ce">group_add()</a>, <a class="el" href="include_2group_8php.html#a0122ef312df2c5546b1a46b3e6c7b31b">group_add_member()</a>, <a class="el" href="include_2group_8php.html#a4118f498bbd1530c1d0136d016d197a5">group_rmv()</a>, <a class="el" href="include_2group_8php.html#a540e3ef36f47d47532646be4241f6518">group_rmv_member()</a>, <a class="el" href="notes_8php.html#a4dbd7b1f906440746af48b484d66535a">notes_init()</a>, <a class="el" href="profiles_8php.html#ab0362c81b1d3b0b12a772b9fac446e04">profiles_post()</a>, and <a class="el" href="settings_8php.html#aa7ee94d88ac088edb04ccf3a26de3586">settings_post()</a>.</p>
</div>
</div>
@@ -247,7 +263,7 @@ Functions</h2></td></tr>
</table>
</div><div class="memdoc">
-<p>Referenced by <a class="el" href="zot_8php.html#a4d9e6ca295e443b740d9960c304b3474">process_delivery()</a>.</p>
+<p>Referenced by <a class="el" href="zot_8php.html#a0e3006e7a456b2175a9badc96bc5176d">process_delivery()</a>.</p>
</div>
</div>
@@ -429,7 +445,37 @@ Functions</h2></td></tr>
</dl>
<dl class="section return"><dt>Returns</dt><dd>array =&gt; 'success' (boolean true or false) 'message' (optional error string only if success is false) </dd></dl>
-<p>Referenced by <a class="el" href="chanview_8php.html#a4192c6da888c8c1165851acf9ad4cb8b">chanview_content()</a>, <a class="el" href="gprobe_8php.html#adf72cb0a70b5b9d99fdec1cc60e18ed1">gprobe_run()</a>, <a class="el" href="magic_8php.html#acea2cc792849ca2d71d4b689f66518bf">magic_init()</a>, <a class="el" href="mail_8php.html#acfc2cc0bf4e0b178207758384977f25a">mail_post()</a>, <a class="el" href="include_2follow_8php.html#ae387d4ae097c23d69f3247e7f08140c7">new_contact()</a>, <a class="el" href="socgraph_8php.html#a5ef8bef37161df53718a21e93d02fbd6">poco_load()</a>, <a class="el" href="post_8php.html#af4b48181ce773ef0cdfc972441445c34">post_init()</a>, <a class="el" href="zot_8php.html#ac301c67864917c35922257950ae0f95c">process_channel_sync_delivery()</a>, <a class="el" href="dir__fns_8php.html#a44062d4b471d1e83f92f6c184585aa13">update_directory_entry()</a>, <a class="el" href="zot_8php.html#a7ac30ff51274bf0b6d3eade37972145c">zot_refresh()</a>, and <a class="el" href="zot_8php.html#a5bcdfef419b16075a0eca990956223dc">zot_register_hub()</a>.</p>
+<p>Referenced by <a class="el" href="chanview_8php.html#a4192c6da888c8c1165851acf9ad4cb8b">chanview_content()</a>, <a class="el" href="include_2network_8php.html#a63e62946e194928eb17c5a9f2bbef0fe">discover_by_webbie()</a>, <a class="el" href="gprobe_8php.html#adf72cb0a70b5b9d99fdec1cc60e18ed1">gprobe_run()</a>, <a class="el" href="magic_8php.html#acea2cc792849ca2d71d4b689f66518bf">magic_init()</a>, <a class="el" href="mail_8php.html#acfc2cc0bf4e0b178207758384977f25a">mail_post()</a>, <a class="el" href="include_2follow_8php.html#ae387d4ae097c23d69f3247e7f08140c7">new_contact()</a>, <a class="el" href="socgraph_8php.html#a5ef8bef37161df53718a21e93d02fbd6">poco_load()</a>, <a class="el" href="post_8php.html#af4b48181ce773ef0cdfc972441445c34">post_init()</a>, <a class="el" href="zot_8php.html#ac301c67864917c35922257950ae0f95c">process_channel_sync_delivery()</a>, <a class="el" href="dir__fns_8php.html#a44062d4b471d1e83f92f6c184585aa13">update_directory_entry()</a>, <a class="el" href="zot_8php.html#a7ac30ff51274bf0b6d3eade37972145c">zot_refresh()</a>, and <a class="el" href="zot_8php.html#a5bcdfef419b16075a0eca990956223dc">zot_register_hub()</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a0fc2211c5309d9f925ecc4115e3fdb75"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">make_xchan_hash </td>
+ <td>(</td>
+ <td class="paramtype">&#160;</td>
+ <td class="paramname"><em>$guid</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">&#160;</td>
+ <td class="paramname"><em>$guid_sig</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+<p>function make_xchan_hash($guid,$guid_sig)</p>
+<p>Generates a portable hash identifier for the channel identified by $guid and signed with $guid_sig This ID is portable across the network but MUST be calculated locally by verifying the signature and can not be trusted as an identity. </p>
+
+<p>Referenced by <a class="el" href="zot_8php.html#a703f528ade8382cf374e4119bd6f7859">allowed_public_recips()</a>, <a class="el" href="identity_8php.html#a345f4c943d84de502ec6e72d2c813945">create_identity()</a>, <a class="el" href="items_8php.html#a536d0313b6ffe33b9d2490c4e25c5361">get_item_elements()</a>, <a class="el" href="zot_8php.html#ad149f1e98c0c5b88ff9147e6ee3f330d">import_author_zot()</a>, <a class="el" href="zot_8php.html#a528e97ca5d69c3b7f35c5d954afde315">import_xchan()</a>, <a class="el" href="post_8php.html#af59e6a1dc22d19d9257b01cd7ccedb75">post_post()</a>, <a class="el" href="zfinger_8php.html#a8139b83a22ef98869adc10aa224027a0">zfinger_init()</a>, <a class="el" href="zot_8php.html#aeea071f17e306fe3d0c488551906bfab">zot_import()</a>, <a class="el" href="zot_8php.html#a3920afe14fc1d82020161b4b86bcd9ac">zot_process_message_request()</a>, and <a class="el" href="zot_8php.html#a5bcdfef419b16075a0eca990956223dc">zot_register_hub()</a>.</p>
</div>
</div>
@@ -467,7 +513,7 @@ Functions</h2></td></tr>
</div>
</div>
-<a class="anchor" id="a4d9e6ca295e443b740d9960c304b3474"></a>
+<a class="anchor" id="a0e3006e7a456b2175a9badc96bc5176d"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
@@ -499,7 +545,13 @@ Functions</h2></td></tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">&#160;</td>
- <td class="paramname"><em>$public</em> = <code>false</code>&#160;</td>
+ <td class="paramname"><em>$public</em> = <code>false</code>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">&#160;</td>
+ <td class="paramname"><em>$request</em> = <code>false</code>&#160;</td>
</tr>
<tr>
<td></td>
@@ -513,6 +565,40 @@ Functions</h2></td></tr>
</div>
</div>
+<a class="anchor" id="a8eeefdb0dad4c436bea9d1c06c0a7988"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">process_location_delivery </td>
+ <td>(</td>
+ <td class="paramtype">&#160;</td>
+ <td class="paramname"><em>$sender</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">&#160;</td>
+ <td class="paramname"><em>$arr</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">&#160;</td>
+ <td class="paramname"><em>$deliveries</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p>Referenced by <a class="el" href="zot_8php.html#aeea071f17e306fe3d0c488551906bfab">zot_import()</a>.</p>
+
+</div>
+</div>
<a class="anchor" id="aa6ae96db8cbbdbb10e6876d206bbf7cc"></a>
<div class="memitem">
<div class="memproto">
@@ -629,7 +715,41 @@ Functions</h2></td></tr>
</table>
</div><div class="memdoc">
-<p>Referenced by <a class="el" href="zot_8php.html#a4d9e6ca295e443b740d9960c304b3474">process_delivery()</a>.</p>
+<p>Referenced by <a class="el" href="zot_8php.html#a0e3006e7a456b2175a9badc96bc5176d">process_delivery()</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="ab15c04e7e5f44edf45ec50dd7d183254"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">sync_locations </td>
+ <td>(</td>
+ <td class="paramtype">&#160;</td>
+ <td class="paramname"><em>$sender</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">&#160;</td>
+ <td class="paramname"><em>$arr</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">&#160;</td>
+ <td class="paramname"><em>$absolute</em> = <code>false</code>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p>Referenced by <a class="el" href="zot_8php.html#a528e97ca5d69c3b7f35c5d954afde315">import_xchan()</a>, and <a class="el" href="zot_8php.html#a8eeefdb0dad4c436bea9d1c06c0a7988">process_location_delivery()</a>.</p>
</div>
</div>
@@ -663,7 +783,7 @@ Functions</h2></td></tr>
</table>
</div><div class="memdoc">
-<p>Referenced by <a class="el" href="zot_8php.html#a4d9e6ca295e443b740d9960c304b3474">process_delivery()</a>.</p>
+<p>Referenced by <a class="el" href="zot_8php.html#a0e3006e7a456b2175a9badc96bc5176d">process_delivery()</a>.</p>
</div>
</div>
@@ -703,11 +823,11 @@ Functions</h2></td></tr>
</table>
</div><div class="memdoc">
-<p>Referenced by <a class="el" href="zot_8php.html#a20750dd2c36961013fd382fb34e1366c">import_directory_profile()</a>, <a class="el" href="zot_8php.html#a528e97ca5d69c3b7f35c5d954afde315">import_xchan()</a>, and <a class="el" href="dir__fns_8php.html#acd37b17dce3bdec6d5a6344a20598c1e">local_dir_update()</a>.</p>
+<p>Referenced by <a class="el" href="zot_8php.html#a20750dd2c36961013fd382fb34e1366c">import_directory_profile()</a>, <a class="el" href="zot_8php.html#a528e97ca5d69c3b7f35c5d954afde315">import_xchan()</a>, <a class="el" href="dir__fns_8php.html#acd37b17dce3bdec6d5a6344a20598c1e">local_dir_update()</a>, and <a class="el" href="zot_8php.html#a8eeefdb0dad4c436bea9d1c06c0a7988">process_location_delivery()</a>.</p>
</div>
</div>
-<a class="anchor" id="a3862b3161b2c8557dc1a95020179bd81"></a>
+<a class="anchor" id="a084c581d534e7e3b759488b46602288f"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
@@ -739,7 +859,13 @@ Functions</h2></td></tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">&#160;</td>
- <td class="paramname"><em>$secret</em> = <code>null</code>&#160;</td>
+ <td class="paramname"><em>$secret</em> = <code>null</code>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">&#160;</td>
+ <td class="paramname"><em>$extra</em> = <code>null</code>&#160;</td>
</tr>
<tr>
<td></td>
@@ -761,7 +887,25 @@ Functions</h2></td></tr>
</dl>
<dl class="section return"><dt>Returns</dt><dd>string json encoded zot packet </dd></dl>
-<p>Referenced by <a class="el" href="admin_8php.html#a60ba9783ad14545814919970bc3fb725">admin_page_hubloc_post()</a>, <a class="el" href="zot_8php.html#ac34e479d27f32b82dd6b33542f81a6a7">build_sync_packet()</a>, <a class="el" href="include_2directory_8php.html#aa75d3b0697ca1456aaabdb37a74aa0f0">directory_run()</a>, <a class="el" href="notifier_8php.html#a568c502f626cff95e344c0748938b85d">notifier_run()</a>, <a class="el" href="post_8php.html#af4b48181ce773ef0cdfc972441445c34">post_init()</a>, and <a class="el" href="zping_8php.html#a4d3a6b0b8b04ed6469015823e615ee75">zping_content()</a>.</p>
+<p>Referenced by <a class="el" href="admin_8php.html#a60ba9783ad14545814919970bc3fb725">admin_page_hubloc_post()</a>, <a class="el" href="zot_8php.html#aa97b33b619dd7132a9274f852af6ceb5">build_sync_packet()</a>, <a class="el" href="include_2directory_8php.html#aa75d3b0697ca1456aaabdb37a74aa0f0">directory_run()</a>, <a class="el" href="notifier_8php.html#a568c502f626cff95e344c0748938b85d">notifier_run()</a>, <a class="el" href="post_8php.html#af4b48181ce773ef0cdfc972441445c34">post_init()</a>, <a class="el" href="zot_8php.html#a3920afe14fc1d82020161b4b86bcd9ac">zot_process_message_request()</a>, and <a class="el" href="zping_8php.html#a4d3a6b0b8b04ed6469015823e615ee75">zping_content()</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="ae26ce9f1ad74139193fb6319beac5fca"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">zot_encode_locations </td>
+ <td>(</td>
+ <td class="paramtype">&#160;</td>
+ <td class="paramname"><em>$channel</em></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p>Referenced by <a class="el" href="notifier_8php.html#a568c502f626cff95e344c0748938b85d">notifier_run()</a>, and <a class="el" href="zfinger_8php.html#a8139b83a22ef98869adc10aa224027a0">zfinger_init()</a>.</p>
</div>
</div>
@@ -862,7 +1006,7 @@ which will be processed and delivered before this function ultimately returns.
</dl>
<p>Only search for active hublocs - e.g. those that haven't been marked deleted </p>
-<p>Referenced by <a class="el" href="zot_8php.html#ac301c67864917c35922257950ae0f95c">process_channel_sync_delivery()</a>, and <a class="el" href="zfinger_8php.html#a8139b83a22ef98869adc10aa224027a0">zfinger_init()</a>.</p>
+<p>Referenced by <a class="el" href="zot_8php.html#ac301c67864917c35922257950ae0f95c">process_channel_sync_delivery()</a>, and <a class="el" href="zot_8php.html#ae26ce9f1ad74139193fb6319beac5fca">zot_encode_locations()</a>.</p>
</div>
</div>
@@ -925,7 +1069,7 @@ which will be processed and delivered before this function ultimately returns.
</table>
</dd>
</dl>
-<p>The message types handled here are 'activity' (e.g. posts), 'mail' , 'profile', and 'channel_sync'</p>
+<p>The message types handled here are 'activity' (e.g. posts), 'mail' , 'profile', 'location', and 'channel_sync'</p>
<dl class="section return"><dt>Returns</dt><dd>array =&gt; array ( [0] =&gt; string $channel_hash, [1] =&gt; string $delivery_status, [2] =&gt; string $address ) suitable for logging remotely, enumerating the processing results of each message/recipient combination. </dd></dl>
<p>Referenced by <a class="el" href="deliver_8php.html#a397afcb9afecf0c1816b0951189dd346">deliver_run()</a>, and <a class="el" href="zot_8php.html#a61cdc1ec843663c423ed2d8160ae5aea">zot_fetch()</a>.</p>
@@ -957,7 +1101,28 @@ which will be processed and delivered before this function ultimately returns.
</dl>
<dl class="section return"><dt>Returns</dt><dd>string </dd></dl>
-<p>Referenced by <a class="el" href="identity_8php.html#a345f4c943d84de502ec6e72d2c813945">create_identity()</a>.</p>
+<p>Referenced by <a class="el" href="identity_8php.html#a345f4c943d84de502ec6e72d2c813945">create_identity()</a>, and <a class="el" href="dimport_8php.html#a581f040717941ce3e1868b0b5dceefd1">foofoo()</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a3920afe14fc1d82020161b4b86bcd9ac"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">zot_process_message_request </td>
+ <td>(</td>
+ <td class="paramtype">&#160;</td>
+ <td class="paramname"><em>$data</em></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+<p>zot_process_message_request($data) If a site receives a comment to a post but finds they have no parent to attach it with, they may send a 'request' packet containing the message_id of the missing parent. This is the handler for that packet. We will create a message_list array of the entire conversation starting with the missing parent and invoke delivery to the sender of the packet.</p>
+<p><a class="el" href="deliver_8php.html">include/deliver.php</a> (for local delivery) and <a class="el" href="post_8php.html">mod/post.php</a> (for web delivery) detect the existence of this 'message_list' at the destination and split it into individual messages which are processed/delivered in order.</p>
+<p>Called from <a class="el" href="post_8php.html">mod/post.php</a> </p>
+
+<p>Referenced by <a class="el" href="post_8php.html#af59e6a1dc22d19d9257b01cd7ccedb75">post_post()</a>.</p>
</div>
</div>
diff --git a/doc/html/zot_8php.js b/doc/html/zot_8php.js
index 35c3c30f1..521de64be 100644
--- a/doc/html/zot_8php.js
+++ b/doc/html/zot_8php.js
@@ -1,7 +1,7 @@
var zot_8php =
[
[ "allowed_public_recips", "zot_8php.html#a703f528ade8382cf374e4119bd6f7859", null ],
- [ "build_sync_packet", "zot_8php.html#ac34e479d27f32b82dd6b33542f81a6a7", null ],
+ [ "build_sync_packet", "zot_8php.html#aa97b33b619dd7132a9274f852af6ceb5", null ],
[ "delete_imported_item", "zot_8php.html#adfeb9400ae6b726beec89f8f1e8fde72", null ],
[ "get_rpost_path", "zot_8php.html#a8e22dbc6f884be3644a892a876cbd972", null ],
[ "import_author_zot", "zot_8php.html#ad149f1e98c0c5b88ff9147e6ee3f330d", null ],
@@ -9,21 +9,26 @@ var zot_8php =
[ "import_directory_profile", "zot_8php.html#a20750dd2c36961013fd382fb34e1366c", null ],
[ "import_site", "zot_8php.html#a2657e141d62d5f67ad3c87651b585299", null ],
[ "import_xchan", "zot_8php.html#a528e97ca5d69c3b7f35c5d954afde315", null ],
+ [ "make_xchan_hash", "zot_8php.html#a0fc2211c5309d9f925ecc4115e3fdb75", null ],
[ "process_channel_sync_delivery", "zot_8php.html#ac301c67864917c35922257950ae0f95c", null ],
- [ "process_delivery", "zot_8php.html#a4d9e6ca295e443b740d9960c304b3474", null ],
+ [ "process_delivery", "zot_8php.html#a0e3006e7a456b2175a9badc96bc5176d", null ],
+ [ "process_location_delivery", "zot_8php.html#a8eeefdb0dad4c436bea9d1c06c0a7988", null ],
[ "process_mail_delivery", "zot_8php.html#aa6ae96db8cbbdbb10e6876d206bbf7cc", null ],
[ "process_profile_delivery", "zot_8php.html#a9a57b40669351c9791126b925cb7ef3b", null ],
[ "public_recips", "zot_8php.html#a083aec6c900d244e1bfc1406f9461465", null ],
[ "remove_community_tag", "zot_8php.html#aad25a3fe0e1566121d6fb8222979bc10", null ],
+ [ "sync_locations", "zot_8php.html#ab15c04e7e5f44edf45ec50dd7d183254", null ],
[ "update_imported_item", "zot_8php.html#a31aad56acf8ff8f2353e6ff8595544df", null ],
[ "update_modtime", "zot_8php.html#ab319d1d9fff9c7775d9daef42d1f33dd", null ],
- [ "zot_build_packet", "zot_8php.html#a3862b3161b2c8557dc1a95020179bd81", null ],
+ [ "zot_build_packet", "zot_8php.html#a084c581d534e7e3b759488b46602288f", null ],
+ [ "zot_encode_locations", "zot_8php.html#ae26ce9f1ad74139193fb6319beac5fca", null ],
[ "zot_fetch", "zot_8php.html#a61cdc1ec843663c423ed2d8160ae5aea", null ],
[ "zot_finger", "zot_8php.html#a95528377d7303131958c9f0b7158fdce", null ],
[ "zot_get_hublocs", "zot_8php.html#ae7cec2b417b5858fd4a41070f843d1d7", null ],
[ "zot_gethub", "zot_8php.html#a55056e863a7860bc0cf922e78fcce073", null ],
[ "zot_import", "zot_8php.html#aeea071f17e306fe3d0c488551906bfab", null ],
[ "zot_new_uid", "zot_8php.html#ab22d67660702056bf3f4696dcebf5ce7", null ],
+ [ "zot_process_message_request", "zot_8php.html#a3920afe14fc1d82020161b4b86bcd9ac", null ],
[ "zot_process_response", "zot_8php.html#a928f5643ca66ae9635d85aeb2be62e03", null ],
[ "zot_refresh", "zot_8php.html#a7ac30ff51274bf0b6d3eade37972145c", null ],
[ "zot_register_hub", "zot_8php.html#a5bcdfef419b16075a0eca990956223dc", null ],
diff --git a/doc/install.bb b/doc/install.bb
index bf6578e59..e68b4a230 100644
--- a/doc/install.bb
+++ b/doc/install.bb
@@ -1,105 +1,4 @@
-[b]Red Installation[/b]
+#include install/INSTALL.txt;
-Red should run on commodity hosting platforms - such as those used to host Wordpress blogs and Drupal websites. But be aware that Red is more than a simple web application. The kind of functionality offered by Red requires a bit more of the host system than the typical blog. Not every PHP/MySQL hosting provider will be able to support Red. Many will. But **please** review the requirements and confirm these with your hosting provider prior to installation.
+#include doc/macros/main_footer.bb;
-Also if you encounter installation issues, please let us know via the Github issue tracker (#^[url=https://github.com/friendica/red/issues]https://github.com/friendica/red/issues[/url]). Please be as clear as you can about your operating environment and provide as much detail as possible about any error messages you may see, so that we can prevent it from happening in the future. Due to the large variety of operating systems and PHP platforms in existence we may have only limited ability to debug your PHP installation or acquire any missing modules - but we will do our best to solve any general code issues.
-
-Before you begin: Choose a domain name or subdomain name for your server.
-
-1. Requirements
- - Apache with mod-rewrite enabled and &quot;AllowOverride All&quot; so you can use a
-local .htaccess file
-
- - PHP 5.3 or later
- - PHP *command line* access with register_argc_argv set to true in the
-php.ini file
- - curl, gd, mysql, and openssl extensions
- - some form of email server or email gateway such that PHP mail() works
- - mcrypt (optional; used for server-to-server message encryption)
-
- - Mysql 5.x
-
- - ability to schedule jobs with cron (Linux/Mac) or Scheduled Tasks
-(Windows) [Note: other options are presented in Section 7 of this document]
-
- - Installation into a top-level domain or sub-domain (without a
-directory/path component in the URL) is preferred. Directory paths will
-not be as convenient to use and have not been thoroughly tested.
-
-
- [Dreamhost.com offers all of the necessary hosting features at a
-reasonable price. If your hosting provider doesn't allow Unix shell access,
-you might have trouble getting everything to work.]
-
-2. Unpack the Red files into the root of your web server document area.
-
- - If you are able to do so, we recommend using git to clone the source repository rather than to use a packaged tar or zip file. This makes the software much easier to update. The Linux command to clone the repository into a directory &quot;mywebsite&quot; would be
-
- `git clone #^[url=https://github.com/friendica/red.git]https://github.com/friendica/red.git[/url] mywebsite`
-
- - and then you can pick up the latest changes at any time with
-
- `git pull`
-
- - make sure folder *store/[data]/smarty3* exists and is writable by webserver
-
- `mkdir -p "store/\[data\]/smarty3"`
-
- `chmod 777 "store/\[data\]/smarty3"`
-
- - For installing addons
-
- - First you should be **on** your website folder
-
- `cd mywebsite`
-
- - Then you should clone the addon repository (separtely)
-
- `git clone #^[url=https://github.com/friendica/red-addons.git]https://github.com/friendica/red-addons.git[/url] addon`
-
- - For keeping the addon tree updated, you should be on you addon tree and issue a git pull
-
- `cd mywebsite/addon`
-
- `git pull`
-
- - If you copy the directory tree to your webserver, make sure
- that you also copy .htaccess - as &quot;dot&quot; files are often hidden
- and aren't normally copied.
-
-
-3. Create an empty database and note the access details (hostname, username, password, database name).
-
-4. Visit your website with a web browser and follow the instructions. Please note any error messages and correct these before continuing.
-
-5. *If* the automated installation fails for any reason, check the following:
-
- - &quot;.htconfig.php&quot; exists ... If not, edit htconfig.php and change system settings. Rename
-to .htconfig.php
- - Database is populated. ... If not, import the contents of &quot;database.sql&quot; with phpmyadmin
-or mysql command line
-
-6. At this point visit your website again, and register your personal account.
-Registration errors should all be recoverable automatically.
-If you get any *critical* failure at this point, it generally indicates the
-database was not installed correctly. You might wish to move/rename
-.htconfig.php to another name and empty (called 'dropping') the database
-tables, so that you can start fresh.
-
-7. Set up a cron job or scheduled task to run the poller once every 15
-minutes in order to perform background processing. Example:
-
- `cd /base/directory; /path/to/php include/poller.php`
-
-Change &quot;/base/directory&quot;, and &quot;/path/to/php&quot; as appropriate for your situation.
-
-If you are using a Linux server, run &quot;crontab -e&quot; and add a line like the
-one shown, substituting for your unique paths and settings:
-
-`*/15 * * * * cd /home/myname/mywebsite; /usr/bin/php include/poller.php`
-
-You can generally find the location of PHP by executing &quot;which php&quot;. If you
-have troubles with this section please contact your hosting provider for
-assistance. Red will not work correctly if you cannot perform this step.
-
-Return to the [url=[baseurl]/help/main]Main documentation page[/url]
diff --git a/doc/install/sample-lighttpd.conf b/doc/install/sample-lighttpd.conf
index 721fa25ea..db26c3b64 100644
--- a/doc/install/sample-lighttpd.conf
+++ b/doc/install/sample-lighttpd.conf
@@ -67,6 +67,11 @@ $SERVER["socket"] == ":443" {
ssl.engine = "enable"
ssl.ca-file = "/etc/lighttpd/certs/ca-certs.crt" #adjust to your needs
ssl.pemfile = "/etc/lighttpd/certs/red-ssl.crt" #adjust to your needs
+
+ ssl.use-compression = "disable"
+ ssl.use-sslv2 = "disable"
+ ssl.use-sslv3 = "disable"
+ ssl.cipher-list = "ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-DSS-AES128-GCM-SHA256:kEDH+AESGCM:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA:ECDHE-ECDSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-DSS-AES128-SHA256:DHE-RSA-AES256-SHA256:DHE-DSS-AES256-SHA:DHE-RSA-AES256-SHA:AES128-GCM-SHA256:AES256-GCM-SHA384:AES128-SHA:AES256-SHA:AES:CAMELLIA:DES-CBC3-SHA:!aNULL:!eNULL:!EXPORT:!DES:!RC4:!MD5:!PSK:!aECDH:!EDH-DSS-DES-CBC3-SHA:!EDH-RSA-DES-CBC3-SHA:!KRB5-DES-CBC3-SHA"
}
### RISTRICT ACCESS TO DIRECTORYS AND FILES
diff --git a/doc/install/sample-nginx.conf b/doc/install/sample-nginx.conf
index ade323a4f..f533d8ee0 100644
--- a/doc/install/sample-nginx.conf
+++ b/doc/install/sample-nginx.conf
@@ -55,8 +55,8 @@ server {
ssl_certificate /etc/nginx/ssl/red.example.net.chain.pem;
ssl_certificate_key /etc/nginx/ssl/example.net.key;
ssl_session_timeout 5m;
- ssl_protocols SSLv3 TLSv1;
- ssl_ciphers ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv3:+EXP;
+ ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
+ ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-DSS-AES128-GCM-SHA256:kEDH+AESGCM:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA:ECDHE-ECDSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-DSS-AES128-SHA256:DHE-RSA-AES256-SHA256:DHE-DSS-AES256-SHA:DHE-RSA-AES256-SHA:AES128-GCM-SHA256:AES256-GCM-SHA384:AES128-SHA:AES256-SHA:AES:CAMELLIA:DES-CBC3-SHA:!aNULL:!eNULL:!EXPORT:!DES:!RC4:!MD5:!PSK:!aECDH:!EDH-DSS-DES-CBC3-SHA:!EDH-RSA-DES-CBC3-SHA:!KRB5-DES-CBC3-SHA;
ssl_prefer_server_ciphers on;
fastcgi_param HTTPS on;
@@ -65,7 +65,9 @@ server {
charset utf-8;
root /var/www/red;
access_log /var/log/nginx/red.log;
- #Uncomment the following line to include a standard configuration file
+ #Uncomment the following line to include a standard configuration file
+ #Note that the most specific rule wins and your standard configuration
+ #will therefore *add* to this file, but not override it.
#include standard.conf
# allow uploads up to 20MB in size
client_max_body_size 20m;
diff --git a/doc/intro_for_developers.bb b/doc/intro_for_developers.bb
index 086d3c681..b8a4e4eb5 100644
--- a/doc/intro_for_developers.bb
+++ b/doc/intro_for_developers.bb
@@ -16,13 +16,11 @@
[install] Installation and upgrade files and DB schema
-[js] core required javascript
-
[library] Third party modules (must be license compatible)
[mod] Controller modules based on URL pathname (e.g. #^[url=http://sitename/foo]http://sitename/foo[/url] loads mod/foo.php)
-[spec] protocol specifications
+[mod/site/] site-specific mod overrides, excluded from git
[util] translation tools, main English string database and other miscellaneous utilities
@@ -41,46 +39,61 @@
[li]abook - contact table, replaces Friendica 'contact'[/li]
[li]account - service provider account[/li]
[li]addon - registered plugins[/li]
+ [li]app - peronal app data[/li]
[li]attach - file attachments[/li]
[li]auth_codes - OAuth usage[/li]
- [li]cache - TBD[/li]
- [li]challenge - old DFRN structure, may re-use or may deprecate[/li]
+ [li]cache - OEmbed cache[/li]
[li]channel - replaces Friendica 'user'[/li]
+ [li]chat - chat room content[/li]
+ [li]chatpresence - channel presence information for chat[/li]
+ [li]chatroom - data for the actual chat room[/li]
[li]clients - OAuth usage[/li]
[li]config - main configuration storage[/li]
+ [li]conv - Diaspora private messages[/li]
[li]event - Events[/li]
[li]fcontact - friend suggestion stuff[/li]
[li]ffinder - friend suggestion stuff[/li]
[li]fserver - obsolete[/li]
[li]fsuggest - friend suggestion stuff[/li]
- [li]gcign - ignored friend suggestions[/li]
- [li]gcontact - social graph storage, obsolete[/li]
- [li]glink - social graph storage - obsolete[/li]
- [li]group - privacy groups[/li]
+ [li]groups - privacy groups[/li]
[li]group_member - privacy groups[/li]
[li]hook - plugin hook registry[/li]
[li]hubloc - Red location storage, ties a location to an xchan[/li]
- [li]intro - DFRN introductions, may be obsolete[/li]
[li]item - posts[/li]
[li]item_id - other identifiers on other services for posts[/li]
+ [li]likes - likes of 'things'[/li]
[li]mail - private messages[/li]
[li]manage - may be unused in Red, table of accounts that can &quot;su&quot; each other[/li]
+ [li]menu - channel menu data[/li]
+ [li]menu_item - items uses by channel menus[/li]
[li]notify - notifications[/li]
[li]notify-threads - need to factor this out and use item thread info on notifications[/li]
+ [li]obj - object data for things (x has y)[/li]
[li]outq - Red output queue[/li]
[li]pconfig - personal (per channel) configuration storage[/li]
[li]photo - photo storage[/li]
+ [li]poll - data for polls[/li]
+ [li]poll_elm - data for poll elements[/li]
+ [li]profdef - custom profile field definitions[/li]
+ [li]profext - custom profile field data[/li]
[li]profile - channel profiles[/li]
[li]profile_check - DFRN remote auth use, may be obsolete[/li]
- [li]queue - old Friendica queue, obsolete[/li]
[li]register - registrations requiring admin approval[/li]
[li]session - web session storage[/li]
+ [li]shares - shared item information[/li]
+ [li[sign - Diaspora signatures. To be phased out.[/li]
[li]site - site table to find directory peers[/li]
+ [li]source - channel sources data[/li]
[li]spam - unfinished[/li]
+ [li]sys_perms - extensible permissions for the sys channel[/li]
[li]term - item taxonomy (categories, tags, etc.) table[/li]
[li]tokens - OAuth usage[/li]
+ [li]updates - directory sync updates[/li]
[li]verify - general purpose verification structure[/li]
+ [li]vote - vote data for polls[/li]
[li]xchan - replaces 'gcontact', list of known channels in the universe[/li]
+ [li]xchat - bookmarked chat rooms[/li]
+ [li]xconfig - as pconfig but for channels with no local account[/li]
[li]xlink - &quot;friends of friends&quot; linkages derived from poco[/li]
[li]xprof - if this hub is a directory server, contains basic public profile info of everybody in the network[/li]
[li]xtag - if this hub is a directory server, contains tags or interests of everybody in the network[/li]
@@ -98,4 +111,4 @@ At that point, if you need to add javascript or css files, add them to /js or /c
Now you'll probably want to alter a template. These can be found in in /view/tpl OR view//tpl. All you should have to do is copy whatever you want to tweak from the first place to your theme's own tpl directory.
-Return to the [url=[baseurl]/help/main]Main documentation page[/url]
+#include doc/macros/main_footer.bb;
diff --git a/doc/macros/addons_footer.bb b/doc/macros/addons_footer.bb
new file mode 100644
index 000000000..32814c59b
--- /dev/null
+++ b/doc/macros/addons_footer.bb
@@ -0,0 +1,2 @@
+Return to the [zrl=[baseurl]/help/addons]Addons documentation[/zrl]
+Return to the [zrl=[baseurl]/help/main]Main documentation[/zrl]
diff --git a/doc/macros/cloud_footer.bb b/doc/macros/cloud_footer.bb
new file mode 100644
index 000000000..798cc9ea6
--- /dev/null
+++ b/doc/macros/cloud_footer.bb
@@ -0,0 +1,2 @@
+Return to the [zrl=[baseurl]/help/cloud]Cloud documentation[/zrl]
+Return to the [zrl=[baseurl]/help/main]Main documentation page[/zrl]
diff --git a/doc/macros/de/addons_footer.bb b/doc/macros/de/addons_footer.bb
new file mode 100644
index 000000000..068bb7ec7
--- /dev/null
+++ b/doc/macros/de/addons_footer.bb
@@ -0,0 +1,2 @@
+Zurück zur [zrl=[baseurl]/help/addons]Addons-Hilfe[/zrl]
+Zurück zur [zrl=[baseurl]/help/main]Hilfe-Startseite[/zrl]
diff --git a/doc/macros/de/cloud_footer.bb b/doc/macros/de/cloud_footer.bb
new file mode 100644
index 000000000..921448a3c
--- /dev/null
+++ b/doc/macros/de/cloud_footer.bb
@@ -0,0 +1,2 @@
+Zurück zur [zrl=[baseurl]/help/cloud]Cloud-Hilfe[/zrl]
+Zurück zur [zrl=[baseurl]/help/main]Hilfe-Startseite[/zrl]
diff --git a/doc/macros/de/main_footer.bb b/doc/macros/de/main_footer.bb
new file mode 100644
index 000000000..e71603626
--- /dev/null
+++ b/doc/macros/de/main_footer.bb
@@ -0,0 +1 @@
+Zurück zur [zrl=[baseurl]/help/main]Hilfe-Startseite[/zrl]
diff --git a/doc/macros/de/troubleshooting_footer.bb b/doc/macros/de/troubleshooting_footer.bb
new file mode 100644
index 000000000..be8c13a28
--- /dev/null
+++ b/doc/macros/de/troubleshooting_footer.bb
@@ -0,0 +1,2 @@
+Zurück zur [zrl=[baseurl]/help/troubleshooting]Troubleshooting-Startseite[/zrl]
+Zurück zur [zrl=[baseurl]/help/troubleshooting]Hilfe-Startseite[/zrl]
diff --git a/doc/macros/main_footer.bb b/doc/macros/main_footer.bb
new file mode 100644
index 000000000..08f671ded
--- /dev/null
+++ b/doc/macros/main_footer.bb
@@ -0,0 +1 @@
+Return to the [zrl=[baseurl]/help/main]Main documentation page[/zrl]
diff --git a/doc/macros/troubleshooting_footer.bb b/doc/macros/troubleshooting_footer.bb
new file mode 100644
index 000000000..c7603a62b
--- /dev/null
+++ b/doc/macros/troubleshooting_footer.bb
@@ -0,0 +1,2 @@
+[zrl=[baseurl]/help/troubleshooting]Troubleshooting documentation[/zrl]
+[zrl=[baseurl]/help/troubleshooting]Documentation Main Page[/zrl]
diff --git a/doc/main.bb b/doc/main.bb
index 99d5918be..4f1852642 100644
--- a/doc/main.bb
+++ b/doc/main.bb
@@ -1,30 +1,31 @@
[img][baseurl]/assets/hashlogo.png[/img]
-[size=large][b]Red Matrix Documentation[/b][/size]
+[size=large][b]RedMatrix Documentation[/b][/size]
-[zrl=[baseurl]/help/about][b]What is the Red Matrix?[/b][/zrl]
-Red Matrix is a decentralized communication and publishing platform that enables you to keep in control of your communication needs by automatic encryption and finely grained access control. It's you, and only you who decides who is allowed to see your stuff.
+[zrl=[baseurl]/help/about][b]What is the RedMatrix?[/b][/zrl]
+RedMatrix is a decentralized communication and publishing platform that enables you to keep in control of your communication needs by automatic encryption and finely grained access control. It's you, and only you who decides who is allowed to see your stuff.
-[zrl=[baseurl]/help/features][b]Red Matrix Features[/b][/zrl]
-The Red Matrix is already running as a global distributed network and proves its versatility and scalability from standalone to huge sites on a daily basis.
-Think of standalone family communication platforms, distributed online communities, support forums, blogs and homepages. Or professional content providers with commercial premium channels and targeted content acces. Whatever you want, the Red Matrix is there to cater to your creativity.
+[zrl=[baseurl]/help/features][b]RedMatrix Features[/b][/zrl]
+The RedMatrix is already running as a global distributed network and proves its versatility and scalability from standalone to huge sites on a daily basis.
+Think of standalone family communication platforms, distributed online communities, support forums, blogs and homepages. Or professional content providers with commercial premium channels and targeted content acces. Whatever you want, the RedMatrix is there to cater to your creativity.
[zrl=[baseurl]/help/what_is_zot][b]Got Zot? Well, you should.[/b][/zrl]
-Zot is the great new communicaton protocol invented especially for the Red Matrix. As a member you are no longer bound to a single hoster thanks to "Nomadic Identities". Migrate easily to another server and keep your contacts intact, or clone it and run the same channel on several servers. Just in case one of them might shut down, you don't lose out. Plus once you are inside the Red Matrix there is no need for you to authenticate twice, even when accessing another Red Matrix site. Zot is what sets the Red Matrix apart.
+Zot is the great new communicaton protocol invented especially for the RedMatrix. As a member you are no longer bound to a single site or hub thanks to "Nomadic Identities". Migrate easily to another server and keep your contacts intact, or clone it and run the same channel on several servers. Just in case one of them might shut down, you don't lose out. Plus once you are inside the RedMatrix there is no need for you to authenticate twice, even when accessing another RedMatrix site. Zot is what sets the RedMatrix apart.
[size=large][b]Getting Started[/b][/size]
+[zrl=[baseurl]/help/Privacy]Privacy Policy[/zrl]
[zrl=[baseurl]/help/registration]Account Registration[/zrl]
-[zrl=[baseurl]/help/accounts_profiles_channels_basics]You at the Red Matrix: accounts, profiles and channels in short[/zrl]
+[zrl=[baseurl]/help/accounts_profiles_channels_basics]You at the RedMatrix: accounts, profiles and channels in short[/zrl]
[zrl=[baseurl]/help/profiles]Profiles[/zrl]
[zrl=[baseurl]/help/channels]Channels[/zrl]
+[zrl=[baseurl]/help/roles]Permission roles and Channel types[/zrl]
[zrl=[baseurl]/help/first-post]Your first posting[/zrl]
[zrl=[baseurl]/help/connecting_to_channels]Connecting To Other Channels[/zrl]
-[zrl=[baseurl]/help/privacy]Privacy[/zrl]
[zrl=[baseurl]/help/permissions]Permissions And Encryption: You Are In Control[/zrl]
[zrl=[baseurl]/help/cloud]Cloud Storage[/zrl]
-[zrl=[baseurl]/help/remove_account]Remove Account[/zrl]
+[zrl=[baseurl]/help/remove_account]Remove Channel or Account[/zrl]
-[size=large][b]Using the Red Matrix[/b][/size]
+[size=large][b]Members Help[/b][/size]
[zrl=[baseurl]/help/tags_and_mentions]Tags and Mentions[/zrl]
[zrl=[baseurl]/help/webpages]Web Pages[/zrl]
[zrl=[baseurl]/help/bbcode]BBcode reference for posts and comments[/zrl]
@@ -32,39 +33,41 @@ Zot is the great new communicaton protocol invented especially for the Red Matri
[zrl=[baseurl]/help/cloud_desktop_clients]Cloud Desktop Clients[/zrl]
[zrl=[baseurl]/help/AdvancedSearch]Advanced Directory Search[/zrl]
[zrl=[baseurl]/help/addons]Help With Addons[/zrl]
-[zrl=[baseurl]/help/nomadic-identity]Got Zot? Nomadic Identity, Channel Cloning And More[/zrl]
+[zrl=[baseurl]/help/diaspora_compat]Diaspora Communications Compatibility (Diaspora and Friendica)[/zrl]
+[zrl=[baseurl]/help/faq_members]FAQ For Members[/zrl]
-[size=large][b]Frequently Asked Questions For Users[/b][/size]
-[zrl=[baseurl]/help/faq_users]FAQ For Users[/zrl]
-
-[size=large][b]For Hub Administrators[/b][/size]
+[size=large][b]Administrators Help[/b][/size]
[zrl=[baseurl]/help/install]Install[/zrl]
[zrl=[baseurl]/help/debian_install]Easy Install on Debian via script[/zrl]
[zrl=[baseurl]/help/red2pi]Installing Red on the Raspberry Pi[/zrl]
-[zrl=[baseurl]/help/problems-following-an-update]Problems Following A Software Update[/zrl]
[zrl=[baseurl]/help/troubleshooting]Troubleshooting Tips[/zrl]
-
-[size=large][b]Frequently Asked Questions For Hub Admins[/b][/size]
+[zrl=[baseurl]/help/hidden_configs]Tweaking RedMatrix's Hidden Configurations[/zrl]
[zrl=[baseurl]/help/faq_admins]FAQ For Admins[/zrl]
[size=large][b]Technical Documentation[/b][/size]
+[zrl=[baseurl]/help/history]RedMatrix history[/zrl]
+[zrl=[baseurl]/help/Zot---A-High-Level-Overview]A high level overview of Zot[/zrl]
+[zrl=[baseurl]/help/zot]An introduction to Zot[/zrl]
+[zrl=[baseurl]/help/zot_structures]Zot Stuctures[/zrl]
[zrl=[baseurl]/help/comanche]Comanche Page Descriptions[/zrl]
[zrl=[baseurl]/help/Creating-Templates]Creating Comanche Templates[/zrl]
[zrl=[baseurl]/help/Widgets]Core Widgets[/zrl]
[zrl=[baseurl]/help/plugins]Plugins[/zrl]
+[zrl=[baseurl]/help/doco]Contributing Documentation[/zrl]
[zrl=[baseurl]/help/DerivedTheme1]Creating Derivative Themes[/zrl]
[zrl=[baseurl]/help/schema_development]Schemas[/zrl]
[zrl=[baseurl]/help/Translations]Translations[/zrl]
[zrl=[baseurl]/help/developers]Developers[/zrl]
[zrl=[baseurl]/help/intro_for_developers]Intro for Developers[/zrl]
[zrl=[baseurl]/help/api_functions]API functions[/zrl]
+[zrl=[baseurl]/help/api_posting]Posting to the red# using the API[/zrl]
[zrl=[baseurl]/help/developer_function_primer]Red Functions 101[/zrl]
[zrl=[baseurl]/doc/html/]Code Reference (doxygen generated - sets cookies)[/zrl]
[zrl=[baseurl]/help/to_do_doco]To-Do list for the Red Documentation Project[/zrl]
[zrl=[baseurl]/help/to_do_code]To-Do list for Developers[/zrl]
+[zrl=[baseurl]/help/roadmap]Version 3 roadmap[/zrl]
[zrl=[baseurl]/help/git_for_non_developers]Git for Non-Developers[/zrl]
-
[size=large][b]Frequently Asked Questions For Developers[/b][/size]
[zrl=[baseurl]/help/faq_developers]FAQ For Developers[/zrl]
@@ -74,5 +77,8 @@ Zot is the great new communicaton protocol invented especially for the Red Matri
[url=https://github.com/friendica/red-addons]Addon Website[/url]
[url=https://zothub.com/channel/one]Development Channel[/url]
-[size=large][b]About This Red Matrix Site[/b][/size]
-[zrl=[baseurl]/siteinfo] [baseurl]/siteinfo[/zrl]
+[url=[baseurl]/help/credits]RedMatrix Credits[/url]
+
+[size=large][b]About This RedMatrix Hub[/b][/size]
+[zrl=[baseurl]/help/TermsOfService]Terms of Service For This Hub[/zrl]
+[zrl=[baseurl]/siteinfo]Hub Information (/siteinfo)[/zrl]
diff --git a/doc/permissions.bb b/doc/permissions.bb
index 8a071a3f5..232ea9e96 100644
--- a/doc/permissions.bb
+++ b/doc/permissions.bb
@@ -66,7 +66,7 @@ This permission determines who can write to your wall when clicking through to y
[i]Can comment on my posts.[/i]
-This permission determines who can comment on posts you create. Normally, you would want this to match your &quot;can view my public pages&quot; permission
+This permission determines who can comment on posts you create. Normally, you would want this to match your &quot;can view my public stream and posts&quot; permission
[i]Can send me private mail messages.[/i]
@@ -107,4 +107,4 @@ The connection edit screen offers a slider to select a degree of friendship with
The slider on the matrix page has both a minimum and maximum value. Posts will only be shown from people who fall between this range. Affinity has no relation to permissions, and is only useful in conjunction with the affinity tool feature.
-Return to the [url=[baseurl]/help/main]Main documentation page[/url]
+#include doc/macros/main_footer.bb;
diff --git a/doc/plugins.bb b/doc/plugins.bb
index 099f9fdf4..06801eb20 100644
--- a/doc/plugins.bb
+++ b/doc/plugins.bb
@@ -240,6 +240,11 @@ we will create an argc/argv list for use by your module functions
3 whatever
[/code]
+If you want to keep your plugin hidden from the siteinfo page, simply create a file called '.hidden' in your addon directory
+[code]
+ touch addon/<addon name>/.hidden
+[/code]
+
***Porting Friendica Plugins***
The Red Matrix uses a similar plugin architecture to the Friendica project. The authentication, identity, and permissions systems are completely different. Many Friendica can be ported reasonably easily by renaming a few functions - and then ensuring that the permissions model is adhered to. The functions which need to be renamed are:
@@ -256,4 +261,4 @@ The Red Matrix has _install and _uninstall functions but these are used differen
Changing these will often allow your plugin to function, but please double check all your permission and identity code because the concepts behind it are completely different in the Red Matrix. Many structured data names (especially DB schema columns) are also quite different.
-Return to the [url=[baseurl]/help/main]Main documentation page[/url]
+#include doc/macros/main_footer.bb;
diff --git a/doc/privacy.bb b/doc/privacy.bb
deleted file mode 100644
index 11a2b6e98..000000000
--- a/doc/privacy.bb
+++ /dev/null
@@ -1,18 +0,0 @@
-[b]Privacy[/b]
-
-Online privacy has many aspects. The Red Matrix let you control all these aspects. You can fine-tune the privacy of your posts, pages and other items in many ways; from making your content as public as possible to only sharing stuff with yourself. Permissions can be set for messages, web pages, events, photos, every item you can think of. If you make something private in the Red Matrix, it will be really private. [zrl=[baseurl]/help/permissions]See the permissions documentation[/zrl] for comprehensive help with permissions
-
-But privacy goes further than setting permissions for your items. Privacy for your identity is another aspect. Because you have a decentralized identity in the Red Matrix, your privacy extends beyond your home hub.
-
-If you want to have complete control of your privacy and security you should run your own hub on a dedicated server. For many people, this is complicated and may stretch their technical abilities. So let's list a few precautions you can make to assure your privacy as much as possible.
-
-A decentralized identity has a lot of advantages and gives you al lot of interesting features, but you should be aware of the fact that your identity is known by other hubs in the Red Matrix network. One of those advantages is that other channels can serve you customized content and allow you to see private things (such as private photos which others wish to share with you). Because of this those channels need to know who you are. But we understand that sometimes those other channels know more from you than you might desire. For instance the plug-in Visage that can tell a channel owner the last time you visit their profile. You can easily opt-out of this low level and we think, harmless tracking.
-
-[ul]
-[li]You can enable [url=http://donottrack.us/]Do Not Track (DNT)[/url] in your web browser. We respect this new privacy policy proposal. All modern browsers support this. You will find it in the privacy settings of your browsers or else you can consult the web browser's manual. This will not affect the functionality of the Red Matrix. This setting is probably enough for most people.[/li]
-[li]You can [zrl=[baseurl]/settings]disable publication[/zrl] of your channel in our channel directory. If you want people to find your channel, you should give your channel address directly to them. We think this is a good indication that you prefer extra privacy and automatically enable "Do Not Track" if this is the case.[/li]
-[li]You can have a blocked hub. That means that all channels and content on that hub is not public, and not visible to the outside world. This is something only your hub administrator can do. We also respect this and automatically enable "Do Not Track" if it is set.[/li]
-[/ul]
-
-
-One more thing about hub administrators. Although the Red Matrix software can do everything to respect your privacy, your hub administrator is the one who has the final responsibility. If this admin has bad intentions, he/she can violate your privacy to a certain degree (something that counts for every internet service). So choose wisely, make sure you trust your hub admin or make all your messages encrypted. And again: you can always run your own hub.
diff --git a/doc/problems-following-an-update.bb b/doc/problems-following-an-update.bb
index 0b2c2e11a..a8a764cf1 100644
--- a/doc/problems-following-an-update.bb
+++ b/doc/problems-following-an-update.bb
@@ -34,4 +34,5 @@ Redbasic uses a few javascript libraries that are done differently, or entirely
Should you report an issue with the theme developers then? No. Theme developers use their themes. Chances are, they know. Give them two or three days to catch up and [i]then[/i] report the issue if it's still not fixed. There are two workarounds for this situation. Firstly, you can temporarily use Redbasic. Secondly, most themes are open source too - open a pull request and make yourself a friend.
-Return to the [url=[baseurl]/help/troubleshooting]Troubleshooting documentation page[/url] \ No newline at end of file
+#include doc/macros/troubleshooting_footer.bb;
+
diff --git a/doc/profiles.bb b/doc/profiles.bb
index 63b161962..5fcf5245a 100644
--- a/doc/profiles.bb
+++ b/doc/profiles.bb
@@ -32,4 +32,4 @@ On the directory page, you may search for people with published profiles. Curren
On your Connnections page and in the directory there is a link to &quot;Suggestions&quot; or &quot;Channel Suggestions&quot;, respectively. This will find channels who have matching and/or similar keywords. The more keywords you provide, the more relevant the search results that are returned. These are sorted by relevance.
-Return to the [url=[baseurl]/help/main]Main documentation page[/url]
+#include doc/macros/main_footer.bb;
diff --git a/doc/red2pi.bb b/doc/red2pi.bb
index 4ca58a382..48b7f6d38 100644
--- a/doc/red2pi.bb
+++ b/doc/red2pi.bb
@@ -1,9 +1,5 @@
[b]How to install the Red Matrix on a Raspberry Pi[/b]
-[zrl=[baseurl]/help/main] Back to the main page[/zrl]
-Last update 2014-02-22
-[hr]
-
You just bought a Raspberry Pi and want to run the RED Matrix with your own domain name?
Then this page is for you! You will:
@@ -342,4 +338,4 @@ Save and exit.
Follow the instructions here:
[url=https://github.com/friendica/friendica/wiki/Running-Friendica-with-SSL]https://github.com/friendica/friendica/wiki/Running-Friendica-with-SSL[/url]
-Return to the [zrl=[baseurl]/help/main]Main documentation page[/zrl]
+#include doc/macros/main_footer.bb;
diff --git a/doc/registration.bb b/doc/registration.bb
index 1649db62e..072e82bf2 100644
--- a/doc/registration.bb
+++ b/doc/registration.bb
@@ -4,7 +4,7 @@ Not all Red Matrix sites allow open registration. If registration is allowed, yo
[b]Your Email Address[/b]
-Please provide a valid email address. Your email address is never published. This address will be used to activate your account, to (optionally) send email notifications for incoming messages or items, [/i]and to recover lost passwords[/i].
+Please provide a valid email address. Your email address is never published. This address will be used to activate your account, to (optionally) send email notifications for incoming messages or items, [i]and to recover lost passwords[/i].
[b]Password[/b]
@@ -12,7 +12,7 @@ Enter a password of your choice, and repeat it in the second box to ensure it wa
[b]Terms Of Service[/b]
-Click the link to read the site's terms of service. Once you've read them, tick the box in the register form to confirm.
+Click the link to read the site's [zrl=[baseurl]/help/TermsOfService]Terms of Service[/zrl]. Once you've read them, tick the box in the register form to confirm.
[b]Register[/b]
@@ -31,4 +31,5 @@ See Also
[zrl=[baseurl]/help/permissions]Permissions[/zrl]
[zrl=[baseurl]/help/remove_account]Remove Account[/zrl]
-Return to the [url=[baseurl]/help/main]Main documentation page[/url]
+#include doc/macros/main_footer.bb;
+
diff --git a/doc/remove_account.bb b/doc/remove_account.bb
index 8b17816ac..feb3f249a 100644
--- a/doc/remove_account.bb
+++ b/doc/remove_account.bb
@@ -1,12 +1,8 @@
-[b]Remove Account[/b]
-
-[b]Remove Account[/b]
-
-It is presently not possible to remove an account without asking your site administrator for assistance.
+[b]Remove Channel or Account[/b]
[b]Remove Channel[/b]
-Visit the URL
+Go to the bottom of your channel settings page or visit the URL:
[baseurl]/removeme
@@ -14,6 +10,18 @@ You will need to confirm your password and the channel you are currently logged
This is irreversible.
-If you have identity clones on other sites this only removes the channel instance which exists on this site.
+If you have identity clones on other sites this only removes by default the channel instance which exists on this site.
+
+[b]Remove Account[/b]
+
+Go to the bottom of your account settings page or visit the URL:
+
+ [baseurl]/removeaccount
+
+You will need to confirm your password and the account you are currently logged into will be removed.
+
+This is irreversible.
+
+All your channels will be deleted. If you have identity clones on other sites this only removes by default the channels instances which exists on this site.
-Return to the [url=[baseurl]/help/main]Main documentation page[/url]
+#include doc/macros/main_footer.bb;
diff --git a/doc/roadmap.bb b/doc/roadmap.bb
new file mode 100644
index 000000000..9ac51adf2
--- /dev/null
+++ b/doc/roadmap.bb
@@ -0,0 +1,49 @@
+
+
+Roadmap for Redmatrix V3
+
+
+Subscriptions and business models
+ Build enough into core(/addons) to generate income (or at least try and cover costs) out of the box
+
+Merge all uploads into common DAV interface
+ Separate photo albums from photos and turn them into file directories.
+ Upload everything direct to /store
+ If photo, generate thumbnails and image resources
+ Provide default upload folders with %y (and other?) macros for both photos and other file resources
+ Allow "media" (anything that we can generate a thumbnail for) in the Photos section (and show thumbnails in the Files section where possible)
+ Resolve the "every photo has an item" confusion, perhaps every file should also - but only if we can explain it and separate them conceptually.
+
+Migration tools
+ Friendica importer
+ Diaspora importer
+
+Poco reputation
+ Make it happen
+
+Webpage design UI improvements
+ If practical, separate "conversation" sub-themes from overall themes so one can choose different conversation and content layouts within a base theme.
+ Make webpage building easy, with point-n-click selectors to build PDLs
+ bring back WYSIWYG, which ideally requires a JS abstraction layer so we can use any editor and change it based on mimetype
+
+Social Networking Federation
+ Friendica native mode?
+ Pump.io?
+ Others?
+
+Lists
+ Create a list object to contain arbitrary things for system use
+ Create a list object to contain arbitrary things for personal use
+
+Events
+ Recurring events and participation (RSVP)
+
+Zot
+ Provide a way to sync web resources. This could be built on DAV except for preserving resource naming (guids) instead of filenames.
+
+API extensions
+ More, more, more.
+
+DNS abstraction for V3
+ Allow a channel to live in an arbitrary "DNS" namespace, for instance "mike@core.redmatrix". Use our directories and zot to find the actual DNS location via redirection. This could potentially allow hubs to be hidden behind tor or alt-roots and accessible only via the matrix.
+ \ No newline at end of file
diff --git a/doc/roles.md b/doc/roles.md
new file mode 100644
index 000000000..5d8d07113
--- /dev/null
+++ b/doc/roles.md
@@ -0,0 +1,66 @@
+Account Permission Roles
+========================
+
+
+##Social
+
+**Mostly Public**
+
+The channel is a typical social networking profile. By default posts and published items are public, but one can over-ride this when creating the item and restrict it. You are listed in the directory. Your online presence and connections are visible to others.
+
+
+**Restricted**
+
+By default all posts and published items are sent to your 'Friends' collection and not made public. New friends are added to this collection. You can over-ride this and create a public post or published item if you desire. You are listed in the directory. Your online presence (for chat) and your connections (friends) are visible to your profile viewers.
+
+**Private**
+
+By default all posts and published items are sent to your 'Friends' collection. New friends are added to this collection. You can over-ride this and create a public post or public item if you desire. You are NOT listed in the directory. Only your connections can see your other connections. Your online presence is hidden.
+
+
+##Forum
+
+**Mostly Public**
+
+The channel is a typical forum. By default posts and published items are public. Members may post by @mention+ or wall-to-wall post. Posting photos and other published items is blocked. The channel is visible in the directory. Members are added automatically.
+
+
+**Restricted**
+
+By default all posts and published items are sent to the channel's 'Friends' collection. New friends are added to this collection. Members may post by @mention+ or wall-to-wall post, but posts and replies may also be seen by other receipients of the top-level post who are not members. The channel is visible in the directory. Members must be manually added by the forum owner.
+
+**Private**
+
+By default all posts and published items are sent to your 'Friends' collection. New friends are added to this collection. The owner can over-ride this and create a public post or public item if desired. Members cannot. You are NOT listed in the directory. Only your connections can see your other connections. Your online presence is hidden. Members must be manually added by the forum owner. Posting by @mention+ is disabled. Posts can only be made via wall-to-wall posts, and sent to members of the 'Friends' collection. They are not publicly visible.
+
+
+##Feed
+
+
+**Public**
+
+Similiar to Social - Mostly Public, but tailored for RSS feed sources. Items may be freely republished and sourced. Online presence is meaningless, therefore hidden. New connections are automatically approved.
+
+
+**Restricted**
+
+Not listed in directory. Online presence is meaningless, therefore hidden. Feed is published only to members of the 'Friends' collection. New connections are automatically added to this collections. Members must be manually approved by the channel owner.
+
+
+##Special
+
+**Celebrity/Soapbox**
+
+Listed in directory. Communications are by default public. Online presence is hidden. No commenting or feedback of any form is allowed, though connections have the ability to "like" your profile.
+
+
+**Group Repository**
+
+A public forum which allows members to post files/photos/webpages.
+
+
+##Custom/Expert Mode
+
+Set all the privacy and permissions manually to suit your specific needs.
+
+#include doc/macros/main_footer.bb;
diff --git a/doc/schema_development.bb b/doc/schema_development.bb
index 2890d5454..c92536d7a 100644
--- a/doc/schema_development.bb
+++ b/doc/schema_development.bb
@@ -73,4 +73,4 @@ theme are as follows:
[li] sloppy_photos
Determins whether photos are &quot;sloppy&quot; or aligned. Set or unset (1 or '')[/li]
-Return to the [url=[baseurl]/help/main]Main documentation page[/url]
+#include doc/macros/main_footer.bb;
diff --git a/doc/sql_conventions.bb b/doc/sql_conventions.bb
new file mode 100644
index 000000000..88539ae19
--- /dev/null
+++ b/doc/sql_conventions.bb
@@ -0,0 +1,87 @@
+[h1]SQL Conventions[/h1]
+[b]Intro[/b]
+The following common SQL conventions appear throughout the code in many places. We use a simple DBA (DataBase Abstraction layer) to handle differences between databases. Please be sure to use only standards-compliant SQL.
+
+[b]Rule One[/b]
+Worth Repeating: Don't use non-standard SQL. This goes for addons as well. If you do use non-standard SQL, and the dba funcs are insufficient, do a if()/switch() or similar for all currently supported databases. Currently nothing red# does requires non-standard SQL.
+
+[b]Using a format string[/b]
+[li]Uses sprintf()
+To be written
+[code]// Example
+$r = q("SELECT * FROM profile WHERE uid = %d",
+ local_user()
+);
+[/code][/li]
+
+[b]Checking bit flags in a where clause[/b]
+[li]You must explicitly convert integers to booleans. The easiest way to do this is to compare to 0.
+[code]// Example
+$r = q("SELECT abook_id, abook_flags, abook_my_perms, abook_their_perms, xchan_hash, xchan_photo_m, xchan_name, xchan_url from abook left join xchan on abook_xchan = xchan_hash where abook_channel = %d and not (abook_flags & %d)>0 ",
+ intval($uid),
+ intval(ABOOK_FLAG_SELF)
+);
+[/code]
+[/li]
+[li]Turning off a flag
+[code]$y = q("update xchan set xchan_flags = (xchan_flags & ~%d) where (xchan_flags & %d)>0 and xchan_hash = '%s'",
+ intval(XCHAN_FLAGS_ORPHAN),
+ intval(XCHAN_FLAGS_ORPHAN),
+ dbesc($rr['hubloc_hash'])
+);[/code]
+[/li]
+[li]Turning on a flag
+[code]$y = q("update xchan set xchan_flags = (xchan_flags | %d) where xchan_hash = '%s'",
+ intval(XCHAN_FLAGS_ORPHAN),
+ dbesc($rr['hubloc_hash'])
+);[/code]
+[/li]
+
+[b]Using relative times (INTERVALs)[/b]
+[li]Sometimes you want to compare something, like less than x days old.
+[code]// Example
+$r = q("SELECT * FROM abook left join xchan on abook_xchan = xchan_hash
+ WHERE abook_dob > %s + interval %s and abook_dob < %s + interval %s",
+ db_utcnow(), db_quoteinterval('7 day'),
+ db_utcnow(), db_quoteinterval('14 day')
+);[/code]
+[/li]
+[b]Paged results[/b]
+[li]To be written
+[code]// Example
+$r = q("SELECT * FROM mail WHERE uid=%d AND $sql_extra ORDER BY created DESC LIMIT %d OFFSET %d",
+ intval(api_user()),
+ intval($count), intval($start)
+);[/code][/li]
+
+[b]NULL dates[/b]
+[li]To be written
+[code]Example[/code][/li]
+
+[b]Storing binary data[/b]
+[li]To be written
+[code]// Example
+$x = q("update photo set data = '%s', height = %d, width = %d where resource_id = '%s' and uid = %d and scale = 0",
+ dbescbin($ph->imageString()),
+ intval($height),
+ intval($width),
+ dbesc($resource_id),
+ intval($page_owner_uid)
+);[/code][/li]
+
+[b]Current timestamp[/b]
+[li][code]// Example
+$randfunc = db_getfunc('rand');
+$r = q("select xchan_url from xchan left join hubloc on hubloc_hash = xchan_hash where hubloc_connected > %s - interval %s order by $randfunc limit 1",
+ db_utcnow(), db_quoteinterval('30 day')
+);[/code][/li]
+
+[b]SQL Function and Operator Abstraction[/b]
+[li]Sometimes the same function or operator has a different name/symbol in each database. You use db_getfunc('funcname') to look them up. The string is [i]not[/i] case-sensitive; do [i]not[/i] include parens.
+[code]// Example
+$randfunc = db_getfunc('rand');
+$r = q("select xchan_url from xchan left join hubloc on hubloc_hash = xchan_hash where hubloc_connected > %s - interval %s order by $randfunc limit 1",
+ db_utcnow(), db_quoteinterval('30 day')
+);[/code][/li]
+
+#include doc/macros/main_footer.bb; \ No newline at end of file
diff --git a/doc/tags_and_mentions.bb b/doc/tags_and_mentions.bb
index 477fbe291..d638492bb 100644
--- a/doc/tags_and_mentions.bb
+++ b/doc/tags_and_mentions.bb
@@ -66,5 +66,4 @@ will tag Robert Johnson, but we can only match one space. If the name was "Blind
[/code]
are both equivalent.
-
-Return to the [url=[baseurl]/help/main]Main documentation page[/url]
+#include doc/macros/main_footer.bb;
diff --git a/doc/to_do_code.bb b/doc/to_do_code.bb
index efe79f761..0dd0b8e24 100644
--- a/doc/to_do_code.bb
+++ b/doc/to_do_code.bb
@@ -3,57 +3,42 @@
We need much more than this, but here are areas where developers can help. Please edit this page when items are finished. Another place for developers to start is with the issues list.
[li]Documentation - see Red Documentation Project To-Do List[/li]
-
-[li]Infinite scroll to the directory pages[/li]
-
+[li]Include TOS link in registration/verification email[/li]
+[li]Create bug tracker module[/li]
[li]Finish the anti-spam bayesian engine[/li]
-
+[li]implement an email permission denied bounce message from the sys channel[/li]
+[li]finish Wordpress connector - import wordpress comments back to redmatrix[/li]
+[li]provide a way for xchans with a certain network type to upgrade (unknown to rss, rss to statusnet, friendica-over-diaspora to friendica, for instance) based on new knowledge and/or redmatrix ability[/li]
[li]If DAV folders exist, add an option to the Settings page to set a default folder for attachment uploads.[/li]
-
[li]Integrate the &quot;open site&quot; list with the register page[/li]
-
[li]implement oembed provider interface[/li]
-
+[li]refactor the oembed client interface so that we can safely sandbox remote content[/li]
[li]implement openid server interface[/li]
-
[li]Write more webpage layouts[/li]
-
[li]Write more webpage widgets[/li]
-
[li](Advanced) create a UI for building Comanche pages[/li]
-
-[li]templatise and translate the Web interface to webDAV[/li]
-
[li]Extend WebDAV to provide desktop access to photo albums[/li]
-
[li]External post connectors - create standard interface[/li]
-
[li]External post connectors, add popular services[/li]
-
[li]service classes - provide a pluggable subscription payment gateway for premium accounts[/li]
-
[li]service classes - account overview page showing resources consumed by channel. With special consideration this page can also be accessed at a meta level by the site admin to drill down on problematic accounts/channels.[/li]
-
[li]Events module - fix permissions on events, and provide JS translation support for the calendar overview; integrate with calDAV[/li]
-
[li]Events module - event followups and RSVP[/li]
-
[li]Uploads - integrate #^[url=https://github.com/blueimp/jQuery-File-Upload]https://github.com/blueimp/jQuery-File-Upload[/url][/li]
-
+[li]Import/export - include events, things, etc.[/li]
+[li]Import channel from Diaspora/Friendica[/li]
+[li]MediaGoblin photo "crosspost" connector[/li]
+[li]Create management page/UI for extensible profile fields[/li]
+[li]Create interface to include/exclude and re-order standard profile fields[/li]
+[li]Provide a mechanism to share page design elements in posts (just like apps)[/li]
[li]App taxonomy[/li]
-
+[li]Customisable App collection pages[/li]
[li]replace the tinymce visual editor and/or make the visual editor pluggable and responsive to different output formats. We probably want library/bbedit for bbcode. This needs a fair bit of work to catch up with our &quot;enhanced bbcode&quot;, but start with images, links, bold and highlight and work from there.[/li]
-
[li]Photos module - turn photos into normal conversations and fix tagging[/li]
-
[li]Provide RSS feed support which look like channels (in matrix only - copyright issues)[/li]
-
[li]Create mobile clients for the top platforms - which involves extending the API so that we can do stuff far beyond the current crop of Twitter/Statusnet clients. Ditto for mobile themes. We can probably use something like the Friendica Android app as a base to start from.[/li]
-
[li]Implement owned and exchangeable &quot;things&quot;.[/li]
-
[li]Family Account creation - using service classes (an account holder can create a certain number of sub-accounts which are all tied to their subscription - if the subscription lapses they all go away).[/li]
-
[li]Put mod_admin under Comanche[/li]
In many cases some of the work has already been started and code exists so that you needn't start from scratch. Please contact one of the developer channels like Channel One (one@zothub.com) before embarking and we can tell you what we already have and provide some insights on how we envision these features fitting together.
diff --git a/doc/to_do_doco.md b/doc/to_do_doco.md
index 6e4f17724..018b9efa2 100644
--- a/doc/to_do_doco.md
+++ b/doc/to_do_doco.md
@@ -27,3 +27,5 @@ For translating documentation, create a directory in */doc* named by the languag
* Administration Guide (post-install)
* Administration Guide (pre-install)
+
+#include doc/macros/main_footer.bb;
diff --git a/doc/troubleshooting.bb b/doc/troubleshooting.bb
index f5572c6ed..d5e1a29dc 100644
--- a/doc/troubleshooting.bb
+++ b/doc/troubleshooting.bb
@@ -3,4 +3,6 @@
[li][zrl=[baseurl]/help/technical_faq]Technical FAQ[/zrl][/li]
[li][zrl=[baseurl]/help/problems-following-an-update]Problems following an update[/zrl][/li]
-Return to the [url=[baseurl]/help/main]Main documentation page[/url]
+#include doc/macros/troubleshooting_footer.bb;
+#include doc/macros/main_footer.bb;
+
diff --git a/doc/webpages.bb b/doc/webpages.bb
index 2bf7af762..780bde45c 100644
--- a/doc/webpages.bb
+++ b/doc/webpages.bb
@@ -10,6 +10,5 @@ The &quot;page link title&quot; box allows a user to specify the &quot;pagelinkt
Beneath the page creation box, a list of existing pages will appear with an &quot;edit&quot; link. Clicking this will take you to an editor, similar to that of the post editor, where you can make changes to your webpages.
-If you are the admin of a site, you can specify a channel whose webpages we will use at key points around the site. Presently, the only place this is implemented is the home page. If you specify the channel &quot;admin&quot; and then the channel called &quot;admin&quot; creates a webpage called &quot;home&quot;, we will display it's content on your websites home page. We expect this functionality to be extended to other areas in future.
+#include doc/macros/main_footer.bb;
-Return to the [url=[baseurl]/help/main]Main documentation page[/url]
diff --git a/doc/what_is_zot.bb b/doc/what_is_zot.bb
index 0e59d2d4c..67c0159e3 100644
--- a/doc/what_is_zot.bb
+++ b/doc/what_is_zot.bb
@@ -58,4 +58,4 @@ For more detailed, technical information about Zot, check out the following link
- [url=https://github.com/friendica/red/blob/master/include/zot.php]Zot reference implementation in PHP[/url]
-Return to the [url=[baseurl]/help/main]Main documentation page[/url] \ No newline at end of file
+#include doc/macros/main_footer.bb;
diff --git a/doc/zot.md b/doc/zot.md
index f514fb3f8..54af44161 100644
--- a/doc/zot.md
+++ b/doc/zot.md
@@ -397,4 +397,4 @@ auth_check messages MUST be encrypted with AES256CBC. This message is sent to th
'confirm' in this case is the base64url encoded RSA signature of the concatenation of 'secret' with the base64url encoded whirlpool hash of the source guid and guid_sig; signed with the source channel private key. This prevents a man-in-the-middle from inserting a rogue success packet. Upon receipt and successful verification of this packet, the destination site will redirect to the original destination URL and indicate a successful remote login.
-Return to the [url=[baseurl]/help/main]Main documentation page[/url]
+#include doc/macros/main_footer.bb;
diff --git a/doc/zot_structures.md b/doc/zot_structures.md
index 44fc63c41..e8a65ff1f 100644
--- a/doc/zot_structures.md
+++ b/doc/zot_structures.md
@@ -59,5 +59,4 @@ secret is a 64-char string which is randomly generated by the sending site.
secret_sig is the RSA signature of the secret, signed with the sender's private key.
-
-
+#include doc/macros/main_footer.bb;
diff --git a/images/default_profile_photos/alpha/175.png b/images/default_profile_photos/alpha/175.png
new file mode 100644
index 000000000..17211ee27
--- /dev/null
+++ b/images/default_profile_photos/alpha/175.png
Binary files differ
diff --git a/images/default_profile_photos/alpha/48.png b/images/default_profile_photos/alpha/48.png
new file mode 100644
index 000000000..b8212131c
--- /dev/null
+++ b/images/default_profile_photos/alpha/48.png
Binary files differ
diff --git a/images/default_profile_photos/alpha/80.png b/images/default_profile_photos/alpha/80.png
new file mode 100644
index 000000000..19da3ffc1
--- /dev/null
+++ b/images/default_profile_photos/alpha/80.png
Binary files differ
diff --git a/images/default_profile_photos/black_avatar_1/175.png b/images/default_profile_photos/black_avatar_1/175.png
new file mode 100644
index 000000000..bc5b19793
--- /dev/null
+++ b/images/default_profile_photos/black_avatar_1/175.png
Binary files differ
diff --git a/images/default_profile_photos/black_avatar_1/48.png b/images/default_profile_photos/black_avatar_1/48.png
new file mode 100644
index 000000000..7c7ed4504
--- /dev/null
+++ b/images/default_profile_photos/black_avatar_1/48.png
Binary files differ
diff --git a/images/default_profile_photos/black_avatar_1/80.png b/images/default_profile_photos/black_avatar_1/80.png
new file mode 100644
index 000000000..21108b008
--- /dev/null
+++ b/images/default_profile_photos/black_avatar_1/80.png
Binary files differ
diff --git a/images/default_profile_photos/black_avatar_2/175.png b/images/default_profile_photos/black_avatar_2/175.png
new file mode 100644
index 000000000..8ff3cbd4c
--- /dev/null
+++ b/images/default_profile_photos/black_avatar_2/175.png
Binary files differ
diff --git a/images/default_profile_photos/black_avatar_2/48.png b/images/default_profile_photos/black_avatar_2/48.png
new file mode 100644
index 000000000..e7c37b741
--- /dev/null
+++ b/images/default_profile_photos/black_avatar_2/48.png
Binary files differ
diff --git a/images/default_profile_photos/black_avatar_2/80.png b/images/default_profile_photos/black_avatar_2/80.png
new file mode 100644
index 000000000..9a4843562
--- /dev/null
+++ b/images/default_profile_photos/black_avatar_2/80.png
Binary files differ
diff --git a/images/default_profile_photos/blank/175.png b/images/default_profile_photos/blank/175.png
new file mode 100644
index 000000000..1edb25b76
--- /dev/null
+++ b/images/default_profile_photos/blank/175.png
Binary files differ
diff --git a/images/default_profile_photos/blank/48.png b/images/default_profile_photos/blank/48.png
new file mode 100644
index 000000000..cbff2264d
--- /dev/null
+++ b/images/default_profile_photos/blank/48.png
Binary files differ
diff --git a/images/default_profile_photos/blank/80.png b/images/default_profile_photos/blank/80.png
new file mode 100644
index 000000000..e7eb91fd3
--- /dev/null
+++ b/images/default_profile_photos/blank/80.png
Binary files differ
diff --git a/images/default_profile_photos/rainbow_man/175.png b/images/default_profile_photos/rainbow_man/175.png
new file mode 100644
index 000000000..30a7e0ffb
--- /dev/null
+++ b/images/default_profile_photos/rainbow_man/175.png
Binary files differ
diff --git a/images/default_profile_photos/rainbow_man/48.png b/images/default_profile_photos/rainbow_man/48.png
new file mode 100644
index 000000000..8bd2695e6
--- /dev/null
+++ b/images/default_profile_photos/rainbow_man/48.png
Binary files differ
diff --git a/images/default_profile_photos/rainbow_man/80.png b/images/default_profile_photos/rainbow_man/80.png
new file mode 100644
index 000000000..970f10a1e
--- /dev/null
+++ b/images/default_profile_photos/rainbow_man/80.png
Binary files differ
diff --git a/images/default_profile_photos/rainbow_man_trans/175.png b/images/default_profile_photos/rainbow_man_trans/175.png
new file mode 100644
index 000000000..a0a236841
--- /dev/null
+++ b/images/default_profile_photos/rainbow_man_trans/175.png
Binary files differ
diff --git a/images/default_profile_photos/rainbow_man_trans/48.png b/images/default_profile_photos/rainbow_man_trans/48.png
new file mode 100644
index 000000000..9e3399598
--- /dev/null
+++ b/images/default_profile_photos/rainbow_man_trans/48.png
Binary files differ
diff --git a/images/default_profile_photos/rainbow_man_trans/80.png b/images/default_profile_photos/rainbow_man_trans/80.png
new file mode 100644
index 000000000..b0b1ca784
--- /dev/null
+++ b/images/default_profile_photos/rainbow_man_trans/80.png
Binary files differ
diff --git a/images/default_profile_photos/red_avatar/175.png b/images/default_profile_photos/red_avatar/175.png
new file mode 100644
index 000000000..31d39a41a
--- /dev/null
+++ b/images/default_profile_photos/red_avatar/175.png
Binary files differ
diff --git a/images/default_profile_photos/red_avatar/48.png b/images/default_profile_photos/red_avatar/48.png
new file mode 100644
index 000000000..cf42b51fa
--- /dev/null
+++ b/images/default_profile_photos/red_avatar/48.png
Binary files differ
diff --git a/images/default_profile_photos/red_avatar/80.png b/images/default_profile_photos/red_avatar/80.png
new file mode 100644
index 000000000..850c59938
--- /dev/null
+++ b/images/default_profile_photos/red_avatar/80.png
Binary files differ
diff --git a/images/default_profile_photos/red_koala/175.png b/images/default_profile_photos/red_koala/175.png
new file mode 100644
index 000000000..ee4a701d9
--- /dev/null
+++ b/images/default_profile_photos/red_koala/175.png
Binary files differ
diff --git a/images/default_profile_photos/red_koala/48.png b/images/default_profile_photos/red_koala/48.png
new file mode 100644
index 000000000..bc5e61e7b
--- /dev/null
+++ b/images/default_profile_photos/red_koala/48.png
Binary files differ
diff --git a/images/default_profile_photos/red_koala/80.png b/images/default_profile_photos/red_koala/80.png
new file mode 100644
index 000000000..be5b70269
--- /dev/null
+++ b/images/default_profile_photos/red_koala/80.png
Binary files differ
diff --git a/images/default_profile_photos/red_koala_trans/175.png b/images/default_profile_photos/red_koala_trans/175.png
new file mode 100644
index 000000000..4e51c80e2
--- /dev/null
+++ b/images/default_profile_photos/red_koala_trans/175.png
Binary files differ
diff --git a/images/default_profile_photos/red_koala_trans/48.png b/images/default_profile_photos/red_koala_trans/48.png
new file mode 100644
index 000000000..69ecfebd9
--- /dev/null
+++ b/images/default_profile_photos/red_koala_trans/48.png
Binary files differ
diff --git a/images/default_profile_photos/red_koala_trans/80.png b/images/default_profile_photos/red_koala_trans/80.png
new file mode 100644
index 000000000..48c161fc7
--- /dev/null
+++ b/images/default_profile_photos/red_koala_trans/80.png
Binary files differ
diff --git a/images/default_profile_photos/redmatrix_logo_smiley/175.png b/images/default_profile_photos/redmatrix_logo_smiley/175.png
new file mode 100644
index 000000000..7299c4494
--- /dev/null
+++ b/images/default_profile_photos/redmatrix_logo_smiley/175.png
Binary files differ
diff --git a/images/default_profile_photos/redmatrix_logo_smiley/48.png b/images/default_profile_photos/redmatrix_logo_smiley/48.png
new file mode 100644
index 000000000..0b0ebad12
--- /dev/null
+++ b/images/default_profile_photos/redmatrix_logo_smiley/48.png
Binary files differ
diff --git a/images/default_profile_photos/redmatrix_logo_smiley/80.png b/images/default_profile_photos/redmatrix_logo_smiley/80.png
new file mode 100644
index 000000000..4d8b18a13
--- /dev/null
+++ b/images/default_profile_photos/redmatrix_logo_smiley/80.png
Binary files differ
diff --git a/images/nosign.png b/images/nosign.png
index e532371d8..773c9514d 100644
--- a/images/nosign.png
+++ b/images/nosign.png
Binary files differ
diff --git a/images/redmatrix_logo.svg b/images/redmatrix_logo.svg
new file mode 100644
index 000000000..cb98a7fb5
--- /dev/null
+++ b/images/redmatrix_logo.svg
@@ -0,0 +1,85 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+ xmlns:dc="http://purl.org/dc/elements/1.1/"
+ xmlns:cc="http://creativecommons.org/ns#"
+ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+ xmlns:svg="http://www.w3.org/2000/svg"
+ xmlns="http://www.w3.org/2000/svg"
+ xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+ xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+ width="200"
+ height="200"
+ id="svg3053"
+ version="1.1"
+ inkscape:version="0.48.4 r9939"
+ sodipodi:docname="redmatrix.svg">
+ <defs
+ id="defs3055" />
+ <sodipodi:namedview
+ id="base"
+ pagecolor="#ffffff"
+ bordercolor="#666666"
+ borderopacity="1.0"
+ inkscape:pageopacity="0.0"
+ inkscape:pageshadow="2"
+ inkscape:zoom="1.979899"
+ inkscape:cx="35.049163"
+ inkscape:cy="27.799654"
+ inkscape:document-units="px"
+ inkscape:current-layer="layer1"
+ showgrid="false"
+ fit-margin-top="0"
+ fit-margin-left="0"
+ fit-margin-right="0"
+ fit-margin-bottom="0"
+ inkscape:window-width="1871"
+ inkscape:window-height="1056"
+ inkscape:window-x="49"
+ inkscape:window-y="24"
+ inkscape:window-maximized="1" />
+ <metadata
+ id="metadata3058">
+ <rdf:RDF>
+ <cc:Work
+ rdf:about="">
+ <dc:format>image/svg+xml</dc:format>
+ <dc:type
+ rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+ <dc:title />
+ </cc:Work>
+ </rdf:RDF>
+ </metadata>
+ <g
+ inkscape:label="Laag 1"
+ inkscape:groupmode="layer"
+ id="layer1"
+ transform="translate(-315.00002,-392.36223)"
+ style="display:inline">
+ <g
+ id="g2985"
+ transform="matrix(4.7619048,0,0,4.7619048,-1370.7143,-2042.6958)">
+ <path
+ style="fill:#c60032;fill-opacity:1"
+ d="m 218.0851,397.84091 c 0,12.77893 -10.00215,23.1383 -22.34043,23.1383 -12.33827,0 -22.34042,-10.35937 -22.34042,-23.1383 0,-12.77893 10.00215,-23.1383 22.34042,-23.1383 12.33828,0 22.34043,10.35937 22.34043,23.1383 z"
+ sodipodi:ry="23.138298"
+ sodipodi:rx="22.340425"
+ sodipodi:cy="397.84091"
+ sodipodi:cx="195.74467"
+ id="path3028-4-5-3"
+ sodipodi:type="arc"
+ transform="matrix(0.94,0,0,0.9075862,191.00001,171.28726)" />
+ <g
+ id="text3003-0-4-0"
+ style="font-size:46px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#ffffff;fill-opacity:1;stroke:none;font-family:Sans"
+ transform="translate(52.138256,-208.57143)">
+ <path
+ inkscape:connector-curvature="0"
+ id="path3008"
+ style="font-size:45.09999847px;font-variant:normal;font-weight:bold;font-stretch:normal;fill:#ffffff;font-family:generic;-inkscape-font-specification:generic Bold"
+ d="m 322.85053,756.03406 4.7355,0 1.3079,-7.9827 4.8708,0 0,-4.4649 -4.1492,0 1.0373,-6.4944 4.9159,0 0,-4.4649 -4.1492,0 1.1275,-7.0356 -4.7355,0 -1.1275,7.0356 -5.1865,0 1.1275,-7.0356 -4.7355,0 -1.1275,7.0356 -5.0963,0 0,4.4649 4.3296,0 -1.0373,6.4944 -5.0963,0 0,4.4649 4.3747,0 -1.3079,7.9827 4.7355,0 1.3079,-7.9827 5.1865,0 -1.3079,7.9827 m 2.0295,-12.4476 -5.1865,0 1.0373,-6.4944 5.1865,0 -1.0373,6.4944" />
+ </g>
+ </g>
+ </g>
+</svg>
diff --git a/images/rss_icon.png b/images/rss_icon.png
new file mode 100644
index 000000000..9ad743d48
--- /dev/null
+++ b/images/rss_icon.png
Binary files differ
diff --git a/include/Contact.php b/include/Contact.php
index 787612c83..233798181 100644
--- a/include/Contact.php
+++ b/include/Contact.php
@@ -22,7 +22,7 @@ function rconnect_url($channel_id,$xchan) {
if(($r) && ($r[0]['xchan_follow']))
return $r[0]['xchan_follow'];
- $r = q("select hubloc_url from hubloc where hubloc_hash = '%s' and ( hubloc_flags & %d ) limit 1",
+ $r = q("select hubloc_url from hubloc where hubloc_hash = '%s' and ( hubloc_flags & %d )>0 limit 1",
dbesc($xchan),
intval(HUBLOC_FLAGS_PRIMARY)
);
@@ -35,7 +35,7 @@ function rconnect_url($channel_id,$xchan) {
function abook_connections($channel_id, $sql_conditions = '') {
$r = q("select * from abook left join xchan on abook_xchan = xchan_hash where abook_channel = %d
- and not ( abook_flags & %d ) $sql_conditions",
+ and not ( abook_flags & %d )>0 $sql_conditions",
intval($channel_id),
intval(ABOOK_FLAG_SELF)
);
@@ -44,7 +44,7 @@ function abook_connections($channel_id, $sql_conditions = '') {
function abook_self($channel_id) {
$r = q("select * from abook left join xchan on abook_xchan = xchan_hash where abook_channel = %d
- and ( abook_flags & %d ) limit 1",
+ and ( abook_flags & %d )>0 limit 1",
intval($channel_id),
intval(ABOOK_FLAG_SELF)
);
@@ -52,7 +52,7 @@ function abook_self($channel_id) {
}
function channelx_by_nick($nick) {
- $r = q("SELECT * FROM channel left join xchan on channel_hash = xchan_hash WHERE channel_address = '%s' and not ( channel_pageflags & %d ) LIMIT 1",
+ $r = q("SELECT * FROM channel left join xchan on channel_hash = xchan_hash WHERE channel_address = '%s' and not ( channel_pageflags & %d )>0 LIMIT 1",
dbesc($nick),
intval(PAGE_REMOVED)
);
@@ -60,7 +60,7 @@ function channelx_by_nick($nick) {
}
function channelx_by_hash($hash) {
- $r = q("SELECT * FROM channel left join xchan on channel_hash = xchan_hash WHERE channel_hash = '%s' and not ( channel_pageflags & %d ) LIMIT 1",
+ $r = q("SELECT * FROM channel left join xchan on channel_hash = xchan_hash WHERE channel_hash = '%s' and not ( channel_pageflags & %d )>0 LIMIT 1",
dbesc($hash),
intval(PAGE_REMOVED)
);
@@ -68,7 +68,7 @@ function channelx_by_hash($hash) {
}
function channelx_by_n($id) {
- $r = q("SELECT * FROM channel left join xchan on channel_hash = xchan_hash WHERE channel_id = %d and not ( channel_pageflags & %d ) LIMIT 1",
+ $r = q("SELECT * FROM channel left join xchan on channel_hash = xchan_hash WHERE channel_id = %d and not ( channel_pageflags & %d )>0 LIMIT 1",
dbesc($id),
intval(PAGE_REMOVED)
);
@@ -128,17 +128,19 @@ function vcard_from_xchan($xchan, $observer = null, $mode = '') {
function abook_toggle_flag($abook,$flag) {
- $r = q("UPDATE abook set abook_flags = (abook_flags ^ %d) where abook_id = %d and abook_channel = %d limit 1",
- intval($flag),
- intval($abook['abook_id']),
- intval($abook['abook_channel'])
+ $r = q("UPDATE abook set abook_flags = (abook_flags %s %d) where abook_id = %d and abook_channel = %d",
+ db_getfunc('^'),
+ intval($flag),
+ intval($abook['abook_id']),
+ intval($abook['abook_channel'])
);
+
// if unsetting the archive bit, update the timestamps so we'll try to connect for an additional 30 days.
if(($flag === ABOOK_FLAG_ARCHIVED) && ($abook['abook_flags'] & ABOOK_FLAG_ARCHIVED)) {
$r = q("update abook set abook_connected = '%s', abook_updated = '%s'
- where abook_id = %d and abook_channel = %d limit 1",
+ where abook_id = %d and abook_channel = %d",
dbesc(datetime_convert()),
dbesc(datetime_convert()),
intval($abook['abook_id']),
@@ -162,7 +164,7 @@ function user_remove($uid) {
}
-function account_remove($account_id,$local = true) {
+function account_remove($account_id,$local = true,$unset_session=true) {
logger('account_remove: ' . $account_id);
@@ -173,7 +175,7 @@ function account_remove($account_id,$local = true) {
// Don't let anybody nuke the only admin account.
- $r = q("select account_id from account where (account_roles & %d)",
+ $r = q("select account_id from account where (account_roles & %d)>0",
intval(ACCOUNT_ROLE_ADMIN)
);
@@ -185,6 +187,7 @@ function account_remove($account_id,$local = true) {
$r = q("select * from account where account_id = %d limit 1",
intval($account_id)
);
+ $account_email=$r[0]['account_email'];
if(! $r) {
logger('account_remove: No account with id: ' . $account_id);
@@ -196,19 +199,48 @@ function account_remove($account_id,$local = true) {
);
if($x) {
foreach($x as $xx) {
- channel_remove($xx['channel_id'],$local);
+ channel_remove($xx['channel_id'],$local,false);
}
}
- $r = q("delete from account where account_id = %d limit 1",
+ $r = q("delete from account where account_id = %d",
intval($account_id)
);
+
+ if ($unset_session) {
+ unset($_SESSION['authenticated']);
+ unset($_SESSION['uid']);
+ notice( sprintf(t("User '%s' deleted"),$account_email) . EOL);
+ goaway(get_app()->get_baseurl());
+ }
return $r;
}
+// recursively delete a directory
+function rrmdir($path)
+{
+ if (is_dir($path) === true)
+ {
+ $files = array_diff(scandir($path), array('.', '..'));
+
+ foreach ($files as $file)
+ {
+ rrmdir(realpath($path) . '/' . $file);
+ }
+
+ return rmdir($path);
+ }
+
+ else if (is_file($path) === true)
+ {
+ return unlink($path);
+ }
+
+ return false;
+}
-function channel_remove($channel_id, $local = true) {
+function channel_remove($channel_id, $local = true, $unset_session=true) {
if(! $channel_id)
return;
@@ -232,25 +264,26 @@ function channel_remove($channel_id, $local = true) {
channel_r_photos = 0, channel_r_abook = 0, channel_w_stream = 0, channel_w_wall = 0, channel_w_tagwall = 0,
channel_w_comment = 0, channel_w_mail = 0, channel_w_photos = 0, channel_w_chat = 0, channel_a_delegate = 0,
channel_r_storage = 0, channel_w_storage = 0, channel_r_pages = 0, channel_w_pages = 0, channel_a_republish = 0
- where channel_id = %d limit 1",
+ where channel_id = %d",
dbesc(datetime_convert()),
intval(PAGE_REMOVED),
intval($channel_id)
);
- $r = q("update hubloc set hubloc_flags = hubloc_flags | %d where hubloc_hash = '%s'",
+
+ $r = q("update hubloc set hubloc_flags = (hubloc_flags | %d) where hubloc_hash = '%s'",
intval(HUBLOC_FLAGS_DELETED),
dbesc($channel['channel_hash'])
);
- $r = q("update xchan set xchan_flags = xchan_flags | %d where xchan_hash = '%s'",
+
+ $r = q("update xchan set xchan_flags = (xchan_flags | %d) where xchan_hash = '%s'",
intval(XCHAN_FLAGS_DELETED),
dbesc($channel['channel_hash'])
);
proc_run('php','include/notifier.php','purge_all',$channel_id);
-
}
q("DELETE FROM `groups` WHERE `uid` = %d", intval($channel_id));
@@ -267,32 +300,57 @@ function channel_remove($channel_id, $local = true) {
q("DELETE FROM `spam` WHERE `uid` = %d", intval($channel_id));
- q("delete from abook where abook_xchan = '%s' and abook_flags & %d limit 1",
+ q("delete from abook where abook_xchan = '%s' and (abook_flags & %d)>0",
dbesc($channel['channel_hash']),
dbesc(ABOOK_FLAG_SELF)
);
- $r = q("update channel set channel_deleted = '%s', channel_pageflags = (channel_pageflags | %d) where channel_id = %d limit 1",
+ $r = q("update channel set channel_deleted = '%s', channel_pageflags = (channel_pageflags | %d) where channel_id = %d",
dbesc(datetime_convert()),
intval(PAGE_REMOVED),
intval($channel_id)
);
- $r = q("update hubloc set hubloc_flags = hubloc_flags | %d where hubloc_hash = '%s' and hubloc_url = '%s' ",
+ $r = q("update hubloc set hubloc_flags = (hubloc_flags | %d) where hubloc_hash = '%s' and hubloc_url = '%s' ",
intval(HUBLOC_FLAGS_DELETED),
dbesc($channel['channel_hash']),
dbesc(z_root())
);
- $r = q("update xchan set xchan_flags = xchan_flags | %d where xchan_hash = '%s' ",
- intval(XCHAN_FLAGS_DELETED),
- dbesc($channel['channel_hash'])
+ // Do we have any valid hublocs remaining?
+
+ $hublocs = 0;
+
+ $r = q("select hubloc_id from hubloc where hubloc_hash = '%s' and not (hubloc_flags & %d)>0",
+ dbesc($channel['channel_hash']),
+ intval(HUBLOC_FLAGS_DELETED)
);
+ if($r)
+ $hublocs = count($r);
+ if(! $hublocs) {
+ $r = q("update xchan set xchan_flags = (xchan_flags | %d) where xchan_hash = '%s' ",
+ intval(XCHAN_FLAGS_DELETED),
+ dbesc($channel['channel_hash'])
+ );
+ }
+
+ //remove from file system
+ $r = q("select channel_address from channel where channel_id = %d limit 1",
+ intval($channel_id)
+ );
+ if($r)
+ $channel_address = $r[0]['channel_address'] ;
+ if ($channel_address !== '') {
+ $f = 'store/' . $channel_address.'/';
+ logger ('delete '. $f);
+ if(is_dir($f))
+ @rrmdir($f);
+ }
proc_run('php','include/directory.php',$channel_id);
- if($channel_id == local_user()) {
+ if($channel_id == local_user() && $unset_session) {
unset($_SESSION['authenticated']);
unset($_SESSION['uid']);
goaway($a->get_baseurl());
@@ -315,13 +373,27 @@ function mark_orphan_hubsxchans() {
if($dirmode == DIRECTORY_MODE_NORMAL)
return;
- $r = q("update hubloc set hubloc_status = (hubloc_status | %d) where not (hubloc_status & %d)
- and hubloc_connected < utc_timestamp() - interval 36 day",
+ $r = q("update hubloc set hubloc_status = (hubloc_status | %d) where not (hubloc_status & %d)>0
+ and hubloc_network = 'zot' and hubloc_connected < %s - interval %s",
+ intval(HUBLOC_OFFLINE),
intval(HUBLOC_OFFLINE),
- intval(HUBLOC_OFFLINE)
+ db_utcnow(), db_quoteinterval('36 day')
);
- $r = q("select hubloc_id, hubloc_hash from hubloc where (hubloc_status & %d) and not (hubloc_flags & %d)",
+// $realm = get_directory_realm();
+// if($realm == DIRECTORY_REALM) {
+// $r = q("select * from site where site_access != 0 and site_register !=0 and ( site_realm = '%s' or site_realm = '') order by rand()",
+// dbesc($realm)
+// );
+// }
+// else {
+// $r = q("select * from site where site_access != 0 and site_register !=0 and site_realm = '%s' order by rand()",
+// dbesc($realm)
+// );
+// }
+
+
+ $r = q("select hubloc_id, hubloc_hash from hubloc where (hubloc_status & %d)>0 and not (hubloc_flags & %d)>0",
intval(HUBLOC_OFFLINE),
intval(HUBLOC_FLAGS_ORPHANCHECK)
);
@@ -331,7 +403,7 @@ function mark_orphan_hubsxchans() {
// see if any other hublocs are still alive for this channel
- $x = q("select * from hubloc where hubloc_hash = '%s' and not (hubloc_status & %d)",
+ $x = q("select * from hubloc where hubloc_hash = '%s' and not (hubloc_status & %d)>0",
dbesc($rr['hubloc_hash']),
intval(HUBLOC_OFFLINE)
);
@@ -339,7 +411,7 @@ function mark_orphan_hubsxchans() {
// yes - if the xchan was marked as an orphan, undo it
- $y = q("update xchan set xchan_flags = (xchan_flags ^ %d) where (xchan_flags & %d) and xchan_hash = '%s' limit 1",
+ $y = q("update xchan set xchan_flags = (xchan_flags & ~%d) where (xchan_flags & %d)>0 and xchan_hash = '%s'",
intval(XCHAN_FLAGS_ORPHAN),
intval(XCHAN_FLAGS_ORPHAN),
dbesc($rr['hubloc_hash'])
@@ -350,7 +422,7 @@ function mark_orphan_hubsxchans() {
// nope - mark the xchan as an orphan
- $y = q("update xchan set xchan_flags = (xchan_flags | %d) where xchan_hash = '%s' limit 1",
+ $y = q("update xchan set xchan_flags = (xchan_flags | %d) where xchan_hash = '%s'",
intval(XCHAN_FLAGS_ORPHAN),
dbesc($rr['hubloc_hash'])
);
@@ -358,7 +430,7 @@ function mark_orphan_hubsxchans() {
// mark that we've checked this entry so we don't need to do it again
- $y = q("update hubloc set hubloc_flags = (hubloc_flags | %d) where hubloc_id = %d limit 1",
+ $y = q("update hubloc set hubloc_flags = (hubloc_flags | %d) where hubloc_id = %d",
intval(HUBLOC_FLAGS_ORPHANCHECK),
dbesc($rr['hubloc_id'])
);
@@ -416,7 +488,7 @@ function remove_all_xchan_resources($xchan, $channel_id = 0) {
if($dirmode === false || $dirmode == DIRECTORY_MODE_NORMAL) {
- $r = q("delete from xchan where xchan_hash = '%s' limit 1",
+ $r = q("delete from xchan where xchan_hash = '%s'",
dbesc($xchan)
);
$r = q("delete from hubloc where hubloc_hash = '%s'",
@@ -428,12 +500,12 @@ function remove_all_xchan_resources($xchan, $channel_id = 0) {
// directory servers need to keep the record around for sync purposes - mark it deleted
- $r = q("update hubloc set hubloc_flags = hubloc_flags | %d where hubloc_hash = '%s'",
+ $r = q("update hubloc set hubloc_flags = (hubloc_flags | %d) where hubloc_hash = '%s'",
intval(HUBLOC_FLAGS_DELETED),
dbesc($xchan)
);
- $r = q("update xchan set xchan_flags = xchan_flags | %d where xchan_hash = '%s'",
+ $r = q("update xchan set xchan_flags = (xchan_flags | %d) where xchan_hash = '%s'",
intval(XCHAN_FLAGS_DELETED),
dbesc($xchan)
);
@@ -449,7 +521,7 @@ function contact_remove($channel_id, $abook_id) {
$archive = get_pconfig($channel_id, 'system','archive_removed_contacts');
if($archive) {
- q("update abook set abook_flags = ( abook_flags | %d ) where abook_id = %d and abook_channel = %d limit 1",
+ q("update abook set abook_flags = ( abook_flags | %d ) where abook_id = %d and abook_channel = %d",
intval(ABOOK_FLAG_ARCHIVED),
intval($abook_id),
intval($channel_id)
@@ -477,11 +549,11 @@ function contact_remove($channel_id, $abook_id) {
);
if($r) {
foreach($r as $rr) {
- drop_item($rr,false);
+ drop_item($rr['id'],false);
}
}
- q("delete from abook where abook_id = %d and abook_channel = %d limit 1",
+ q("delete from abook where abook_id = %d and abook_channel = %d",
intval($abook['abook_id']),
intval($channel_id)
);
@@ -506,79 +578,33 @@ function contact_remove($channel_id, $abook_id) {
}
-// sends an unfriend message. Does not remove the contact
-function terminate_friendship($user,$self,$contact) {
-
-
- $a = get_app();
-
- require_once('include/datetime.php');
-
- if($contact['network'] === NETWORK_DFRN) {
- require_once('include/items.php');
- dfrn_deliver($user,$contact,'placeholder', 1);
- }
-
-}
-
-
-// Contact has refused to recognise us as a friend. We will start a countdown.
-// If they still don't recognise us in 32 days, the relationship is over,
-// and we won't waste any more time trying to communicate with them.
-// This provides for the possibility that their database is temporarily messed
-// up or some other transient event and that there's a possibility we could recover from it.
-
-if(! function_exists('mark_for_death')) {
-function mark_for_death($contact) {
-
- if($contact['archive'])
- return;
+function random_profile() {
+ $randfunc = db_getfunc('rand');
+
+ $checkrandom = get_config('randprofile','check'); // False by default
+ $retryrandom = intval(get_config('randprofile','retry'));
+ if($retryrandom === false) $retryrandom = 5;
- if($contact['term_date'] == '0000-00-00 00:00:00') {
- q("UPDATE `contact` SET `term_date` = '%s' WHERE `id` = %d LIMIT 1",
- dbesc(datetime_convert()),
- intval($contact['id'])
+ for($i = 0; $i < $retryrandom; $i++) {
+ $r = q("select xchan_url from xchan left join hubloc on hubloc_hash = xchan_hash where hubloc_connected > %s - interval %s order by $randfunc limit 1",
+ db_utcnow(), db_quoteinterval('30 day')
);
- }
- else {
-
- // TODO: We really should send a notification to the owner after 2-3 weeks
- // so they won't be surprised when the contact vanishes and can take
- // remedial action if this was a serious mistake or glitch
- $expiry = $contact['term_date'] . ' + 32 days ';
- if(datetime_convert() > datetime_convert('UTC','UTC',$expiry)) {
-
- // relationship is really truly dead.
- // archive them rather than delete
- // though if the owner tries to unarchive them we'll start the whole process over again
-
- q("update contact set `archive` = 1 where id = %d limit 1",
- intval($contact['id'])
- );
-
- //contact_remove($contact['id']);
+ if(!$r) return ''; // Couldn't get a random channel
+ if($checkrandom) {
+ $x = z_fetch_url($r[0]['xchan_url']);
+ if($x['success'])
+ return $r[0]['xchan_url'];
+ else
+ logger('Random channel turned out to be bad.');
+ }
+ else {
+ return $r[0]['xchan_url'];
}
- }
-
-}}
-
-if(! function_exists('unmark_for_death')) {
-function unmark_for_death($contact) {
- // It's a miracle. Our dead contact has inexplicably come back to life.
- q("UPDATE `contact` SET `term_date` = '%s' WHERE `id` = %d LIMIT 1",
- dbesc('0000-00-00 00:00:00'),
- intval($contact['id'])
- );
-}}
-function random_profile() {
- $r = q("select xchan_url from xchan left join hubloc on hubloc_hash = xchan_hash where hubloc_connected > UTC_TIMESTAMP() - interval 30 day order by rand() limit 1");
- if($r)
- return $r[0]['xchan_url'];
+ }
return '';
}
-
diff --git a/include/ConversationObject.php b/include/ConversationObject.php
index 9bf410358..a02ba102f 100644
--- a/include/ConversationObject.php
+++ b/include/ConversationObject.php
@@ -52,14 +52,14 @@ class Conversation extends BaseObject {
switch($mode) {
case 'network':
- if(array_key_exists('firehose',$a->data) && intval($a->data['firehose'])) {
- $this->profile_owner = intval($a->data['firehose']);
- $this->writable = false;
- }
- else {
+// if(array_key_exists('firehose',$a->data) && intval($a->data['firehose'])) {
+// $this->profile_owner = intval($a->data['firehose']);
+// $this->writable = false;
+// }
+// else {
$this->profile_owner = local_user();
$this->writable = true;
- }
+// }
break;
case 'channel':
$this->profile_owner = $a->profile['profile_uid'];
@@ -159,34 +159,29 @@ class Conversation extends BaseObject {
return false;
}
-// if(local_user() && $item->get_data_value('uid') == local_user())
-// $this->commentable = true;
-
-// if($this->writable)
-// $this->commentable = true;
-
$item->set_commentable(false);
$ob_hash = (($this->observer) ? $this->observer['xchan_hash'] : '');
- if(($item->get_data_value('author_xchan') === $ob_hash) || ($item->get_data_value('owner_xchan') === $ob_hash))
- $item->set_commentable(true);
+ if(! comments_are_now_closed($item->get_data())) {
+ if(($item->get_data_value('author_xchan') === $ob_hash) || ($item->get_data_value('owner_xchan') === $ob_hash))
+ $item->set_commentable(true);
- if($item->get_data_value('item_flags') & ITEM_NOCOMMENT) {
- $item->set_commentable(false);
- }
- elseif(($this->observer) && (! $item->is_commentable())) {
- if((array_key_exists('owner',$item->data)) && ($item->data['owner']['abook_flags'] & ABOOK_FLAG_SELF))
- $item->set_commentable(perm_is_allowed($this->profile_owner,$this->observer['xchan_hash'],'post_comments'));
- else
- $item->set_commentable(can_comment_on_post($this->observer['xchan_hash'],$item->data));
+ if($item->get_data_value('item_flags') & ITEM_NOCOMMENT) {
+ $item->set_commentable(false);
+ }
+ elseif(($this->observer) && (! $item->is_commentable())) {
+ if((array_key_exists('owner',$item->data)) && ($item->data['owner']['abook_flags'] & ABOOK_FLAG_SELF))
+ $item->set_commentable(perm_is_allowed($this->profile_owner,$this->observer['xchan_hash'],'post_comments'));
+ else
+ $item->set_commentable(can_comment_on_post($this->observer['xchan_hash'],$item->data));
+ }
}
-
require_once('include/identity.php');
- $sys = get_sys_channel();
+// $sys = get_sys_channel();
- if($sys && $item->get_data_value('uid') == $sys['channel_id']) {
- $item->set_commentable(false);
- }
+// if($sys && $item->get_data_value('uid') == $sys['channel_id']) {
+// $item->set_commentable(false);
+// }
$item->set_conversation($this);
$this->threads[] = $item;
diff --git a/include/Import/Importer.php b/include/Import/Importer.php
new file mode 100644
index 000000000..5e684cd8e
--- /dev/null
+++ b/include/Import/Importer.php
@@ -0,0 +1,82 @@
+<?php /** @file */
+
+namespace RedMatrix\Import;
+
+/**
+ * @brief Class Import
+ *
+ * @package RedMatrix\Import
+ */
+class Import {
+
+ private $credentials = null;
+
+ protected $itemlist = null;
+ protected $src_items = null;
+ protected $items = null;
+
+ function get_credentials() {
+ return $this->credentials;
+ }
+
+ function get_itemlist() {
+ return $this->itemlist;
+ }
+
+ function get_item_ident($item) {
+
+ }
+
+ function get_item($item_ident) {
+
+ }
+
+ function get_taxonomy($item_ident) {
+
+ }
+
+ function get_children($item_ident) {
+
+ }
+
+ function convert_item($item_ident) {
+
+ }
+
+ function convert_taxonomy($item_ident) {
+
+ }
+
+ function convert_child($child) {
+
+ }
+
+ function store($item, $update = false) {
+
+ }
+
+ function run() {
+ $this->credentials = $this->get_credentials();
+ $this->itemlist = $this->get_itemlist();
+ if($this->itemlist) {
+ $this->src_items = array();
+ $this->items = array();
+ $cnt = 0;
+ foreach($this->itemlist as $item) {
+ $ident = $item->get_item_ident($item);
+ $this->src_items[$ident]['item'] = $this->get_item($ident);
+ $this->src_items[$ident]['taxonomy'] = $this->get_taxonomy($ident);
+ $this->src_items[$ident]['children'] = $this->get_children($ident);
+ $this->items[$cnt]['item'] = $this->convert_item($ident);
+ $this->items[$cnt]['item']['term'] = $this->convert_taxonomy($ident);
+ if($this->src_items[$ident]['children']) {
+ $this->items[$cnt]['children'] = array();
+ foreach($this->src_items[$ident]['children'] as $child) {
+ $this[$cnt]['children'][] = $this->convert_child($child);
+ }
+ }
+ $cnt ++;
+ }
+ }
+ }
+} \ No newline at end of file
diff --git a/include/Import/refimport.php b/include/Import/refimport.php
new file mode 100644
index 000000000..181b2b398
--- /dev/null
+++ b/include/Import/refimport.php
@@ -0,0 +1,280 @@
+<?php
+
+require_once('include/html2bbcode.php');
+require_once('include/hubloc.php');
+
+// Sample module for importing conversation data from Reflection CMS. Some preparation was used to
+// dump relevant posts, categories and comments into individual JSON files, and also JSON dump of
+// the user table to search for avatars. Importation was also batched in sets of 20 posts per page
+// visit so as to survive shared hosting process limits. This provides some clues as how to handle
+// WordPress imports, which use a somewhat similar DB structure. The batching and individual files
+// might not be needed in VPS environments. As such this could be considered an extreme test case, but
+// the importation was successful in all regards using this code. The module URL was visited repeatedly
+// with a browser until all the posts had been imported.
+
+
+define('REDMATRIX_IMPORTCHANNEL','mike');
+define('REFLECT_EXPORTUSERNAME','mike');
+define('REFLECT_BLOGNAME','Diary and Other Rantings');
+define('REFLECT_BASEURL','http://example.com/');
+define('REFLECT_USERFILE','user.json');
+
+// set to true if you need to process everything again
+define('REFLECT_OVERWRITE',false);
+
+// we'll only process a small number of posts at a time on a shared host.
+
+define('REFLECT_MAXPERRUN',30);
+
+function reflect_get_channel() {
+
+ // this will be the channel_address or nickname of the red channel
+
+ $c = q("select * from channel left join xchan on channel_hash = xchan_hash
+ where channel_address = '%s' limit 1",
+ dbesc(REDMATRIX_IMPORTCHANNEL)
+ );
+ return $c[0];
+}
+
+
+function refimport_content(&$a) {
+
+ $channel = reflect_get_channel();
+
+ // load the user file. We need that to find the commenter's avatars
+
+ $u = file_get_contents(REFLECT_USERFILE);
+ if($u) {
+ $users = json_decode($u,true);
+ }
+
+ $ignored = 0;
+ $processed = 0;
+
+ $files = glob('article/*');
+ if(! $files)
+ return;
+
+ foreach($files as $f) {
+ $s = file_get_contents($f);
+ $j = json_decode($s,true);
+
+ if(! $j)
+ continue;
+
+ $arr = array();
+
+ // see if this article was already processed
+ $r = q("select * from item where mid = '%s' and uid = %d limit 1",
+ dbesc($j['guid']),
+ intval($channel['channel_id'])
+ );
+ if($r) {
+ if(REFLECT_OVERWRITE)
+ $arr['id'] = $r[0]['id'];
+ else {
+ $ignored ++;
+ rename($f,str_replace('article','done',$f));
+ continue;
+ }
+ }
+
+ $arr['uid'] = $channel['channel_account_id'];
+ $arr['aid'] = $channel['channel_id'];
+ $arr['mid'] = $arr['parent_mid'] = $j['guid'];
+ $arr['created'] = $j['created'];
+ $arr['edited'] = $j['edited'];
+ $arr['author_xchan'] = $channel['channel_hash'];
+ $arr['owner_xchan'] = $channel['channel_hash'];
+ $arr['app'] = REFLECT_BLOGNAME;
+ $arr['item_flags'] = ITEM_ORIGIN|ITEM_WALL|ITEM_THREAD_TOP;
+ $arr['verb'] = ACTIVITY_POST;
+
+ // this is an assumption
+ $arr['comment_policy'] = 'contacts';
+
+
+ // import content. In this case the content is XHTML.
+
+ $arr['title'] = html2bbcode($j['title']);
+ $arr['title'] = htmlspecialchars($arr['title'],ENT_COMPAT,'UTF-8',false);
+
+
+ $arr['body'] = html2bbcode($j['body']);
+ $arr['body'] = htmlspecialchars($arr['body'],ENT_COMPAT,'UTF-8',false);
+
+
+ // convert relative urls to other posts on that service to absolute url on our service.
+ $arr['body'] = preg_replace_callback("/\[url\=\/+article\/(.*?)\](.*?)\[url\]/",'reflect_article_callback',$arr['body']);
+
+ // also import any photos
+ $arr['body'] = preg_replace_callback("/\[img(.*?)\](.*?)\[\/img\]/",'reflect_photo_callback',$arr['body']);
+
+
+ // add categories
+
+ if($j['taxonomy'] && is_array($j['taxonomy']) && count($j['taxonomy'])) {
+ $arr['term'] = array();
+ foreach($j['taxonomy'] as $tax) {
+ $arr['term'][] = array(
+ 'uid' => $channel['channel_id'],
+ 'type' => TERM_CATEGORY,
+ 'otype' => TERM_OBJ_POST,
+ 'term' => trim($tax['name']),
+ 'url' => $channel['xchan_url'] . '?f=&cat=' . urlencode(trim($tax['name']))
+ );
+ }
+ }
+
+ // store the item
+
+ if($arr['id'])
+ item_store_update($arr);
+ else
+ item_store($arr);
+
+ // if there are any comments, process them
+ // $comment['registered'] is somebody with an account on the system. Others are mostly anonymous
+
+ if($j['comments']) {
+ foreach($j['comments'] as $comment) {
+ $user = (($comment['registered']) ? reflect_find_user($users,$comment['author']) : null);
+ reflect_comment_store($channel,$arr,$comment,$user);
+ }
+ }
+ $processed ++;
+
+ if(REFLECT_MAXPERRUN && $processed > REFLECT_MAXPERRUN)
+ break;
+ }
+ return 'processed: ' . $processed . EOL . 'completed: ' . $ignored . EOL;
+
+}
+
+function reflect_article_callback($matches) {
+ return '[zrl=' . z_root() . '/display/'. $matches[1] . ']' . $matches[2] . '[/zrl]';
+}
+
+function reflect_photo_callback($matches) {
+
+ if(strpos($matches[2],'http') !== false)
+ return $matches[0];
+
+ $prefix = REFLECT_BASEURL;
+ $x = z_fetch_url($prefix.$matches[2],true);
+
+ $hash = basename($matches[2]);
+
+ if($x['success']) {
+ $channel = reflect_get_channel();
+ require_once('include/photos.php');
+ $p = photo_upload($channel,$channel,
+ array('data' => $x['body'],
+ 'resource_id' => str_replace('-','',$hash),
+ 'filename' => $hash . '.jpg',
+ 'type' => 'image/jpeg',
+ 'not_visible' => true
+ )
+ );
+
+ if($p['success'])
+ $newlink = $p['resource_id'] . '-0.jpg';
+
+
+ // import photo and locate the link for it.
+ return '[zmg]' . z_root() . '/photo/' . $newlink . '[/zmg]';
+
+ }
+ // no replacement. Leave it alone.
+ return $matches[0];
+}
+
+function reflect_find_user($users,$name) {
+ if($users) {
+ foreach($users as $x) {
+ if($x['name'] === $name) {
+ return $x;
+ }
+ }
+ }
+
+ return false;
+
+}
+
+function reflect_comment_store($channel,$post,$comment,$user) {
+
+ // if the commenter was the channel owner, use their redmatrix xchan
+
+ if($comment['author'] === REFLECT_EXPORTUSERNAME && $comment['registered'])
+ $hash = $channel['xchan_hash'];
+ else {
+ // we need a unique hash for the commenter. We don't know how many may have supplied
+ // http://yahoo.com as their URL, so we'll use their avatar guid if they have one.
+ // anonymous folks may get more than one xchan_hash if they commented more than once.
+
+ $hash = (($comment['registered'] && $user) ? $user['avatar'] : '');
+ if(! $hash)
+ $hash = random_string() . '.unknown';
+
+ // create an xchan for them which will also import their profile photo
+ // they will have a network type 'unknown'.
+
+ $x = array(
+ 'hash' => $hash,
+ 'guid' => $hash,
+ 'url' => (($comment['url']) ? $comment['url'] : z_root()),
+ 'photo' => (($user) ? REFLECT_BASEURL . $user['avatar'] : z_root() . '/' . get_default_profile_photo()),
+ 'name' => $comment['author']
+ );
+ xchan_store($x);
+
+ }
+
+ $arr = array();
+
+ $r = q("select * from item where mid = '%s' and uid = %d limit 1",
+ dbesc($comment['guid']),
+ intval($channel['channel_id'])
+ );
+ if($r) {
+ if(REFLECT_OVERWRITE)
+ $arr['id'] = $r[0]['id'];
+ else
+ return;
+ }
+
+ // this is a lot like storing the post except for subtle differences, like parent_mid, flags, author_xchan,
+ // and we don't have a comment edited field so use creation date
+
+ $arr['uid'] = $channel['channel_account_id'];
+ $arr['aid'] = $channel['channel_id'];
+ $arr['mid'] = $comment['guid'];
+ $arr['parent_mid'] = $post['mid'];
+ $arr['created'] = $comment['created'];
+ $arr['edited'] = $comment['created'];
+ $arr['author_xchan'] = $hash;
+ $arr['owner_xchan'] = $channel['channel_hash'];
+ $arr['item_flags'] = ITEM_ORIGIN|ITEM_WALL;
+ $arr['verb'] = ACTIVITY_POST;
+ $arr['comment_policy'] = 'contacts';
+
+
+ $arr['title'] = html2bbcode($comment['title']);
+ $arr['title'] = htmlspecialchars($arr['title'],ENT_COMPAT,'UTF-8',false);
+
+
+ $arr['body'] = html2bbcode($comment['body']);
+ $arr['body'] = htmlspecialchars($arr['body'],ENT_COMPAT,'UTF-8',false);
+ $arr['body'] = preg_replace_callback("/\[url\=\/+article\/(.*?)\](.*?)\[url\]/",'reflect_article_callback',$arr['body']);
+ $arr['body'] = preg_replace_callback("/\[img(.*?)\](.*?)\[\/img\]/",'reflect_photo_callback',$arr['body']);
+
+ // logger('comment: ' . print_r($arr,true));
+
+ if($arr['id'])
+ item_store_update($arr);
+ else
+ item_store($arr);
+
+}
diff --git a/include/ItemObject.php b/include/ItemObject.php
index a5870ef91..ec8116297 100644
--- a/include/ItemObject.php
+++ b/include/ItemObject.php
@@ -28,6 +28,7 @@ class Item extends BaseObject {
private $threaded = false;
private $visiting = false;
private $channel = null;
+ private $display_mode = 'normal';
public function __construct($data) {
@@ -64,8 +65,6 @@ class Item extends BaseObject {
public function get_template_data($alike, $dlike, $thread_level=1) {
- $t1 = dba_timer();
-
$result = array();
$a = $this->get_app();
@@ -80,6 +79,7 @@ class Item extends BaseObject {
$indent = '';
$osparkle = '';
$total_children = $this->count_descendants();
+ $unseen_comments = (($item['real_uid']) ? 0 : $this->count_unseen_descendants());
$conv = $this->get_conversation();
$observer = $conv->get_observer();
@@ -88,7 +88,11 @@ class Item extends BaseObject {
|| strlen($item['deny_cid']) || strlen($item['deny_gid']))))
? t('Private Message')
: false);
- $shareable = ((($conv->get_profile_owner() == local_user()) && ($item['item_private'] != 1)) ? true : false);
+ $shareable = ((($conv->get_profile_owner() == local_user() && local_user()) && ($item['item_private'] != 1)) ? true : false);
+
+ // allow an exemption for sharing stuff from your private feeds
+ if($item['author']['xchan_network'] === 'rss')
+ $shareable = true;
$mode = $conv->get_mode();
@@ -97,11 +101,19 @@ class Item extends BaseObject {
else
$edpost = false;
+
if($observer['xchan_hash'] == $this->get_data_value('author_xchan')
|| $observer['xchan_hash'] == $this->get_data_value('owner_xchan')
|| $this->get_data_value('uid') == local_user())
$dropping = true;
+
+ if(array_key_exists('real_uid',$item)) {
+ $edpost = false;
+ $dropping = false;
+ }
+
+
if($dropping) {
$drop = array(
'dropping' => $dropping,
@@ -115,7 +127,7 @@ class Item extends BaseObject {
);
}
- $filer = (($conv->get_profile_owner() == local_user()) ? t("Save to Folder") : false);
+ $filer = ((($conv->get_profile_owner() == local_user()) && (! array_key_exists('real_uid',$item))) ? t("Save to Folder") : false);
$profile_avatar = $item['author']['xchan_photo_m'];
$profile_link = chanlink_url($item['author']['xchan_url']);
@@ -159,7 +171,7 @@ class Item extends BaseObject {
if($this->is_toplevel()) {
// FIXME check this permission
- if($conv->get_profile_owner() == local_user()) {
+ if(($conv->get_profile_owner() == local_user()) && (! array_key_exists('real_uid',$item))) {
// FIXME we don't need all this stuff, some can be done in the template
@@ -179,7 +191,8 @@ class Item extends BaseObject {
}
- $verified = (($item['item_flags'] & ITEM_VERIFIED) ? t('Message is verified') : '');
+ $verified = (($item['item_flags'] & ITEM_VERIFIED) ? t('Message signature validated') : '');
+ $forged = ((($item['sig']) && (! ($item['item_flags'] & ITEM_VERIFIED))) ? t('Message signature incorrect') : '');
$unverified = '' ; // (($this->is_wall_to_wall() && (! ($item['item_flags'] & ITEM_VERIFIED))) ? t('Message cannot be verified') : '');
@@ -207,22 +220,30 @@ class Item extends BaseObject {
if($this->is_commentable()) {
$like = array( t("I like this \x28toggle\x29"), t("like"));
$dislike = array( t("I don't like this \x28toggle\x29"), t("dislike"));
- if ($shareable)
- $share = array( t('Share This'), t('share'));
}
+ if ($shareable)
+ $share = array( t('Share This'), t('share'));
+
if(strcmp(datetime_convert('UTC','UTC',$item['created']),datetime_convert('UTC','UTC','now - 12 hours')) > 0)
$indent .= ' shiny';
- $t2 = dba_timer();
localize_item($item);
-
- $t3 = dba_timer();
-
$body = prepare_body($item,true);
- $t4 = dba_timer();
+ // $viewthread (below) is only valid in list mode. If this is a channel page, build the thread viewing link
+ // since we can't depend on llink or plink pointing to the right local location.
+
+ $owner_address = substr($item['owner']['xchan_addr'],0,strpos($item['owner']['xchan_addr'],'@'));
+ $viewthread = $item['llink'];
+ if($conv->get_mode() === 'channel')
+ $viewthread = z_root() . '/channel/' . $owner_address . '?f=&mid=' . $item['mid'];
+
+ $comment_count_txt = sprintf( tt('%d comment','%d comments',$total_children),$total_children );
+ $list_unseen_txt = (($unseen_comments) ? sprintf('%d unseen',$unseen_comments) : '');
+
+ $children = $this->get_children();
$tmp_item = array(
'template' => $this->get_template(),
@@ -234,6 +255,8 @@ class Item extends BaseObject {
'id' => $this->get_id(),
'linktitle' => sprintf( t('View %s\'s profile - %s'), $profile_name, $item['author']['xchan_addr']),
'olinktitle' => sprintf( t('View %s\'s profile - %s'), $this->get_owner_name(), $item['owner']['xchan_addr']),
+ 'llink' => $item['llink'],
+ 'viewthread' => $viewthread,
'to' => t('to'),
'via' => t('via'),
'wall' => t('Wall-to-Wall'),
@@ -245,16 +268,18 @@ class Item extends BaseObject {
'osparkle' => $osparkle,
'sparkle' => $sparkle,
'title' => $item['title'],
+ 'title_tosource' => get_pconfig($conv->get_profile_owner(),'system','title_tosource'),
'ago' => relative_date($item['created']),
'app' => $item['app'],
'str_app' => sprintf( t(' from %s'), $item['app']),
'isotime' => datetime_convert('UTC', date_default_timezone_get(), $item['created'], 'c'),
'localtime' => datetime_convert('UTC', date_default_timezone_get(), $item['created'], 'r'),
'editedtime' => (($item['edited'] != $item['created']) ? sprintf( t('last edited: %s'), datetime_convert('UTC', date_default_timezone_get(), $item['edited'], 'r')) : ''),
- 'expiretime' => (($item['expires'] !== '0000-00-00 00:00:00') ? sprintf( t('Expires: %s'), datetime_convert('UTC', date_default_timezone_get(), $item['expires'], 'r')):''),
+ 'expiretime' => (($item['expires'] !== NULL_DATE) ? sprintf( t('Expires: %s'), datetime_convert('UTC', date_default_timezone_get(), $item['expires'], 'r')):''),
'lock' => $lock,
'verified' => $verified,
'unverified' => $unverified,
+ 'forged' => $forged,
'location' => $location,
'indent' => $indent,
'owner_url' => $this->get_owner_url(),
@@ -267,15 +292,21 @@ class Item extends BaseObject {
'share' => $share,
'rawmid' => $item['mid'],
'plink' => get_plink($item),
- 'edpost' => ((feature_enabled($conv->get_profile_owner(),'edit_posts')) ? $edpost : ''),
+ 'edpost' => $edpost, // ((feature_enabled($conv->get_profile_owner(),'edit_posts')) ? $edpost : ''),
'star' => ((feature_enabled($conv->get_profile_owner(),'star_posts')) ? $star : ''),
'tagger' => ((feature_enabled($conv->get_profile_owner(),'commtag')) ? $tagger : ''),
'filer' => ((feature_enabled($conv->get_profile_owner(),'filing')) ? $filer : ''),
- 'bookmark' => (($conv->get_profile_owner() == local_user() && $has_bookmarks) ? t('Save Bookmarks') : ''),
+ 'bookmark' => (($conv->get_profile_owner() == local_user() && local_user() && $has_bookmarks) ? t('Save Bookmarks') : ''),
'addtocal' => (($has_event) ? t('Add to Calendar') : ''),
'drop' => $drop,
'multidrop' => ((feature_enabled($conv->get_profile_owner(),'multi_delete')) ? $multidrop : ''),
// end toolbar buttons
+
+ 'unseen_comments' => $unseen_comments,
+ 'comment_count' => $total_children,
+ 'comment_count_txt' => $comment_count_txt,
+ 'list_unseen_txt' => $list_unseen_txt,
+ 'markseen' => t('Mark all seen'),
'like_count' => $like_count,
'like_list' => $like_list,
'like_list_part' => $like_list_part,
@@ -295,24 +326,22 @@ class Item extends BaseObject {
'thread_level' => $thread_level
);
- $t5 = dba_timer();
-
$arr = array('item' => $item, 'output' => $tmp_item);
call_hooks('display_item', $arr);
$result = $arr['output'];
$result['children'] = array();
- $children = $this->get_children();
$nb_children = count($children);
- if($nb_children > 0) {
+
+ if(($this->get_display_mode() === 'normal') && ($nb_children > 0)) {
foreach($children as $child) {
$result['children'][] = $child->get_template_data($alike, $dlike, $thread_level + 1);
}
// Collapse
if(($nb_children > 2) || ($thread_level > 1)) {
$result['children'][0]['comment_firstcollapsed'] = true;
- $result['children'][0]['num_comments'] = sprintf( tt('%d comment','%d comments',$total_children),$total_children );
+ $result['children'][0]['num_comments'] = $comment_count_txt;
$result['children'][0]['hide_text'] = t('[+] show all');
if($thread_level > 1) {
$result['children'][$nb_children - 1]['comment_lastcollapsed'] = true;
@@ -334,14 +363,6 @@ class Item extends BaseObject {
$result['flatten'] = true;
$result['threaded'] = false;
}
- $t6 = dba_timer();
-
-// profiler($t1,$t2,'t2');
-// profiler($t2,$t3,'t3');
-// profiler($t3,$t4,'t4');
-// profiler($t4,$t5,'t5');
-// profiler($t5,$t6,'t6');
-// profiler($t1,$t6,'item total');
return $result;
}
@@ -350,6 +371,14 @@ class Item extends BaseObject {
return $this->get_data_value('id');
}
+ public function get_display_mode() {
+ return $this->display_mode;
+ }
+
+ public function set_display_mode($mode) {
+ $this->display_mode = $mode;
+ }
+
public function is_threaded() {
return $this->threaded;
}
@@ -501,12 +530,12 @@ class Item extends BaseObject {
/**
* Get template
*/
- private function get_template() {
+ public function get_template() {
return $this->template;
}
- private function set_template($t) {
+ public function set_template($t) {
$this->template = $t;
}
@@ -531,6 +560,23 @@ class Item extends BaseObject {
return $total;
}
+ private function count_unseen_descendants() {
+ $children = $this->get_children();
+ $total = count($children);
+ if($total > 0) {
+ $total = 0;
+ foreach($children as $child) {
+ if((! visible_activity($child->data)) || array_key_exists('author_blocked',$child->data)) {
+ continue;
+ }
+ if($child->data['item_flags'] & ITEM_UNSEEN)
+ $total ++;
+ }
+ }
+ return $total;
+ }
+
+
/**
* Get the template for the comment box
*/
@@ -589,7 +635,7 @@ class Item extends BaseObject {
'$edimg' => t('Image'),
'$edurl' => t('Link'),
'$edvideo' => t('Video'),
- '$preview' => ((feature_enabled($conv->get_profile_owner(),'preview')) ? t('Preview') : ''),
+ '$preview' => t('Preview'), // ((feature_enabled($conv->get_profile_owner(),'preview')) ? t('Preview') : ''),
'$indent' => $indent,
'$feature_encrypt' => ((feature_enabled($conv->get_profile_owner(),'content_encrypt')) ? true : false),
'$encrypt' => t('Encrypt text'),
diff --git a/include/RedDAV/RedBasicAuth.php b/include/RedDAV/RedBasicAuth.php
new file mode 100644
index 000000000..19dd9a5f0
--- /dev/null
+++ b/include/RedDAV/RedBasicAuth.php
@@ -0,0 +1,212 @@
+<?php
+
+namespace RedMatrix\RedDAV;
+
+use Sabre\DAV;
+
+/**
+ * @brief Authentication backend class for RedDAV.
+ *
+ * This class also contains some data which is not necessary for authentication
+ * like timezone settings.
+ *
+ * @extends Sabre\DAV\Auth\Backend\AbstractBasic
+ *
+ * @link http://github.com/friendica/red
+ * @license http://opensource.org/licenses/mit-license.php The MIT License (MIT)
+ */
+class RedBasicAuth extends DAV\Auth\Backend\AbstractBasic {
+
+ /**
+ * @brief This variable holds the currently logged-in channel_address.
+ *
+ * It is used for building path in filestorage/.
+ *
+ * @var string|null
+ */
+ protected $channel_name = null;
+ /**
+ * channel_id of the current channel of the logged-in account.
+ *
+ * @var int
+ */
+ public $channel_id = 0;
+ /**
+ * channel_hash of the current channel of the logged-in account.
+ *
+ * @var string
+ */
+ public $channel_hash = '';
+ /**
+ * Set in mod/cloud.php to observer_hash.
+ *
+ * @var string
+ */
+ public $observer = '';
+ /**
+ *
+ * @see RedBrowser::set_writeable()
+ * @var \Sabre\DAV\Browser\Plugin
+ */
+ public $browser;
+ /**
+ * channel_id of the current visited path. Set in RedDirectory::getDir().
+ *
+ * @var int
+ */
+ public $owner_id = 0;
+ /**
+ * channel_name of the current visited path. Set in RedDirectory::getDir().
+ *
+ * Used for creating the path in cloud/
+ *
+ * @var string
+ */
+ public $owner_nick = '';
+ /**
+ * Timezone from the visiting channel's channel_timezone.
+ *
+ * Used in @ref RedBrowser
+ *
+ * @var string
+ */
+ protected $timezone = '';
+
+
+ /**
+ * @brief Validates a username and password.
+ *
+ * Guest access is granted with the password "+++".
+ *
+ * @see \Sabre\DAV\Auth\Backend\AbstractBasic::validateUserPass
+ * @param string $username
+ * @param string $password
+ * @return bool
+ */
+ protected function validateUserPass($username, $password) {
+ if (trim($password) === '+++') {
+ logger('guest: ' . $username);
+ return true;
+ }
+
+ require_once('include/auth.php');
+ $record = account_verify_password($username, $password);
+ if ($record && $record['account_default_channel']) {
+ $r = q("SELECT * FROM channel WHERE channel_account_id = %d AND channel_id = %d LIMIT 1",
+ intval($record['account_id']),
+ intval($record['account_default_channel'])
+ );
+ if ($r) {
+ return $this->setAuthenticated($r[0]);
+ }
+ }
+ $r = q("SELECT * FROM channel WHERE channel_address = '%s' LIMIT 1",
+ dbesc($username)
+ );
+ if ($r) {
+ $x = q("SELECT account_flags, account_salt, account_password FROM account WHERE account_id = %d LIMIT 1",
+ intval($r[0]['channel_account_id'])
+ );
+ if ($x) {
+ // @fixme this foreach should not be needed?
+ foreach ($x as $record) {
+ if (($record['account_flags'] == ACCOUNT_OK) || ($record['account_flags'] == ACCOUNT_UNVERIFIED)
+ && (hash('whirlpool', $record['account_salt'] . $password) === $record['account_password'])) {
+ logger('password verified for ' . $username);
+ return $this->setAuthenticated($r[0]);
+ }
+ }
+ }
+ }
+
+ $error = 'password failed for ' . $username;
+ logger($error);
+ log_failed_login($error);
+
+ return false;
+ }
+
+ /**
+ * @brief Sets variables and session parameters after successfull authentication.
+ *
+ * @param array $r
+ * Array with the values for the authenticated channel.
+ * @return bool
+ */
+ protected function setAuthenticated($r) {
+ $this->channel_name = $r['channel_address'];
+ $this->channel_id = $r['channel_id'];
+ $this->channel_hash = $this->observer = $r['channel_hash'];
+ $_SESSION['uid'] = $r['channel_id'];
+ $_SESSION['account_id'] = $r['channel_account_id'];
+ $_SESSION['authenticated'] = true;
+ return true;
+ }
+
+ /**
+ * Sets the channel_name from the currently logged-in channel.
+ *
+ * @param string $name
+ * The channel's name
+ */
+ public function setCurrentUser($name) {
+ $this->channel_name = $name;
+ }
+ /**
+ * Returns information about the currently logged-in channel.
+ *
+ * If nobody is currently logged in, this method should return null.
+ *
+ * @see \Sabre\DAV\Auth\Backend\AbstractBasic::getCurrentUser
+ * @return string|null
+ */
+ public function getCurrentUser() {
+ return $this->channel_name;
+ }
+
+ /**
+ * @brief Sets the timezone from the channel in RedBasicAuth.
+ *
+ * Set in mod/cloud.php if the channel has a timezone set.
+ *
+ * @param string $timezone
+ * The channel's timezone.
+ * @return void
+ */
+ public function setTimezone($timezone) {
+ $this->timezone = $timezone;
+ }
+ /**
+ * @brief Returns the timezone.
+ *
+ * @return string
+ * Return the channel's timezone.
+ */
+ public function getTimezone() {
+ return $this->timezone;
+ }
+
+ /**
+ * @brief Set browser plugin for SabreDAV.
+ *
+ * @see RedBrowser::set_writeable()
+ * @param \Sabre\DAV\Browser\Plugin $browser
+ */
+ public function setBrowserPlugin($browser) {
+ $this->browser = $browser;
+ }
+
+ /**
+ * @brief Prints out all RedBasicAuth variables to logger().
+ *
+ * @return void
+ */
+ public function log() {
+ logger('channel_name ' . $this->channel_name, LOGGER_DATA);
+ logger('channel_id ' . $this->channel_id, LOGGER_DATA);
+ logger('channel_hash ' . $this->channel_hash, LOGGER_DATA);
+ logger('observer ' . $this->observer, LOGGER_DATA);
+ logger('owner_id ' . $this->owner_id, LOGGER_DATA);
+ logger('owner_nick ' . $this->owner_nick, LOGGER_DATA);
+ }
+} \ No newline at end of file
diff --git a/include/RedDAV/RedBrowser.php b/include/RedDAV/RedBrowser.php
new file mode 100644
index 000000000..709f6339b
--- /dev/null
+++ b/include/RedDAV/RedBrowser.php
@@ -0,0 +1,436 @@
+<?php
+
+namespace RedMatrix\RedDAV;
+
+use Sabre\DAV;
+
+/**
+ * @brief Provides a DAV frontend for the webbrowser.
+ *
+ * RedBrowser is a SabreDAV server-plugin to provide a view to the DAV storage
+ * for the webbrowser.
+ *
+ * @extends \Sabre\DAV\Browser\Plugin
+ *
+ * @link http://github.com/friendica/red
+ * @license http://opensource.org/licenses/mit-license.php The MIT License (MIT)
+ */
+class RedBrowser extends DAV\Browser\Plugin {
+
+ /**
+ * @see set_writeable()
+ * @see \Sabre\DAV\Auth\Backend\BackendInterface
+ * @var RedBasicAuth
+ */
+ private $auth;
+
+ /**
+ * @brief Constructor for RedBrowser class.
+ *
+ * $enablePost will be activated through set_writeable() in a later stage.
+ * At the moment the write_storage permission is only valid for the whole
+ * folder. No file specific permissions yet.
+ * @todo disable enablePost by default and only activate if permissions
+ * grant edit rights.
+ *
+ * Disable assets with $enableAssets = false. Should get some thumbnail views
+ * anyway.
+ *
+ * @param RedBasicAuth &$auth
+ */
+ public function __construct(&$auth) {
+ $this->auth = $auth;
+ parent::__construct(true, false);
+ }
+
+ /**
+ * The DAV browser is instantiated after the auth module and directory classes
+ * but before we know the current directory and who the owner and observer
+ * are. So we add a pointer to the browser into the auth module and vice versa.
+ * Then when we've figured out what directory is actually being accessed, we
+ * call the following function to decide whether or not to show web elements
+ * which include writeable objects.
+ *
+ * @fixme It only disable/enable the visible parts. Not the POST handler
+ * which handels the actual requests when uploading files or creating folders.
+ *
+ * @todo Maybe this whole way of doing this can be solved with some
+ * $server->subscribeEvent().
+ */
+ public function set_writeable() {
+ if (! $this->auth->owner_id) {
+ $this->enablePost = false;
+ }
+
+ if (! perm_is_allowed($this->auth->owner_id, get_observer_hash(), 'write_storage')) {
+ $this->enablePost = false;
+ } else {
+ $this->enablePost = true;
+ }
+ }
+
+ /**
+ * @brief Creates the directory listing for the given path.
+ *
+ * @param string $path which should be displayed
+ */
+ public function generateDirectoryIndex($path) {
+ // (owner_id = channel_id) is visitor owner of this directory?
+ $is_owner = ((local_user() && $this->auth->owner_id == local_user()) ? true : false);
+
+ if ($this->auth->getTimezone())
+ date_default_timezone_set($this->auth->getTimezone());
+
+ require_once('include/conversation.php');
+
+ if ($this->auth->owner_nick) {
+ $html = profile_tabs(get_app(), (($is_owner) ? true : false), $this->auth->owner_nick);
+ }
+
+ $files = $this->server->getPropertiesForPath($path, array(
+ '{DAV:}displayname',
+ '{DAV:}resourcetype',
+ '{DAV:}getcontenttype',
+ '{DAV:}getcontentlength',
+ '{DAV:}getlastmodified',
+ ), 1);
+
+ $parent = $this->server->tree->getNodeForPath($path);
+
+ $parentpath = array();
+ // only show parent if not leaving /cloud/; TODO how to improve this?
+ if ($path && $path != "cloud") {
+ list($parentUri) = DAV\URLUtil::splitPath($path);
+ $fullPath = DAV\URLUtil::encodePath($this->server->getBaseUri() . $parentUri);
+
+ $parentpath['icon'] = $this->enableAssets ? '<a href="' . $fullPath . '"><img src="' . $this->getAssetUrl('icons/parent' . $this->iconExtension) . '" width="24" alt="' . t('parent') . '"></a>' : '';
+ $parentpath['path'] = $fullPath;
+ }
+
+ $f = array();
+ foreach ($files as $file) {
+ $ft = array();
+ $type = null;
+
+ // This is the current directory, we can skip it
+ if (rtrim($file['href'],'/') == $path) continue;
+
+ list(, $name) = DAV\URLUtil::splitPath($file['href']);
+
+ if (isset($file[200]['{DAV:}resourcetype'])) {
+ $type = $file[200]['{DAV:}resourcetype']->getValue();
+
+ // resourcetype can have multiple values
+ if (!is_array($type)) $type = array($type);
+
+ foreach ($type as $k=>$v) {
+ // Some name mapping is preferred
+ switch ($v) {
+ case '{DAV:}collection' :
+ $type[$k] = t('Collection');
+ break;
+ case '{DAV:}principal' :
+ $type[$k] = t('Principal');
+ break;
+ case '{urn:ietf:params:xml:ns:carddav}addressbook' :
+ $type[$k] = t('Addressbook');
+ break;
+ case '{urn:ietf:params:xml:ns:caldav}calendar' :
+ $type[$k] = t('Calendar');
+ break;
+ case '{urn:ietf:params:xml:ns:caldav}schedule-inbox' :
+ $type[$k] = t('Schedule Inbox');
+ break;
+ case '{urn:ietf:params:xml:ns:caldav}schedule-outbox' :
+ $type[$k] = t('Schedule Outbox');
+ break;
+ case '{http://calendarserver.org/ns/}calendar-proxy-read' :
+ $type[$k] = 'Proxy-Read';
+ break;
+ case '{http://calendarserver.org/ns/}calendar-proxy-write' :
+ $type[$k] = 'Proxy-Write';
+ break;
+ }
+ }
+ $type = implode(', ', $type);
+ }
+
+ // If no resourcetype was found, we attempt to use
+ // the contenttype property
+ if (!$type && isset($file[200]['{DAV:}getcontenttype'])) {
+ $type = $file[200]['{DAV:}getcontenttype'];
+ }
+ if (!$type) $type = t('Unknown');
+
+ $size = isset($file[200]['{DAV:}getcontentlength']) ? (int)$file[200]['{DAV:}getcontentlength'] : '';
+ $lastmodified = ((isset($file[200]['{DAV:}getlastmodified'])) ? $file[200]['{DAV:}getlastmodified']->getTime()->format('Y-m-d H:i:s') : '');
+
+ $fullPath = DAV\URLUtil::encodePath('/' . trim($this->server->getBaseUri() . ($path ? $path . '/' : '') . $name, '/'));
+
+ $displayName = isset($file[200]['{DAV:}displayname']) ? $file[200]['{DAV:}displayname'] : $name;
+
+ $displayName = $this->escapeHTML($displayName);
+ $type = $this->escapeHTML($type);
+
+ $icon = '';
+
+ if ($this->enableAssets) {
+ $node = $this->server->tree->getNodeForPath(($path ? $path . '/' : '') . $name);
+ foreach (array_reverse($this->iconMap) as $class=>$iconName) {
+ if ($node instanceof $class) {
+ $icon = '<a href="' . $fullPath . '"><img src="' . $this->getAssetUrl($iconName . $this->iconExtension) . '" alt="" width="24"></a>';
+ break;
+ }
+ }
+ }
+
+ $parentHash = '';
+ $owner = $this->auth->owner_id;
+ $splitPath = split('/', $fullPath);
+ if (count($splitPath) > 3) {
+ for ($i = 3; $i < count($splitPath); $i++) {
+ $attachName = urldecode($splitPath[$i]);
+ $attachHash = $this->findAttachHash($owner, $parentHash, $attachName);
+ $parentHash = $attachHash;
+ }
+ }
+
+ $attachIcon = ""; // "<a href=\"attach/".$attachHash."\" title=\"".$displayName."\"><i class=\"icon-download\"></i></a>";
+
+ // put the array for this file together
+ $ft['attachId'] = $this->findAttachIdByHash($attachHash);
+ $ft['fileStorageUrl'] = substr($fullPath, 0, strpos($fullPath, "cloud/")) . "filestorage/" . $this->auth->getCurrentUser();
+ $ft['icon'] = $icon;
+ $ft['attachIcon'] = (($size) ? $attachIcon : '');
+ // @todo Should this be an item value, not a global one?
+ $ft['is_owner'] = $is_owner;
+ $ft['fullPath'] = $fullPath;
+ $ft['displayName'] = $displayName;
+ $ft['type'] = $type;
+ $ft['size'] = $size;
+ $ft['sizeFormatted'] = $this->userReadableSize($size);
+ $ft['lastmodified'] = (($lastmodified) ? datetime_convert('UTC', date_default_timezone_get(), $lastmodified) : '');
+ $ft['iconFromType'] = $this->getIconFromType($type);
+
+ $f[] = $ft;
+ }
+
+ // Storage and quota for the account (all channels of the owner of this directory)!
+ $limit = service_class_fetch($owner, 'attach_upload_limit');
+ $r = q("SELECT SUM(filesize) AS total FROM attach WHERE aid = %d",
+ intval($this->auth->channel_account_id)
+ );
+ $used = $r[0]['total'];
+ if ($used) {
+ $quotaDesc = t('%1$s used');
+ $quotaDesc = sprintf($quotaDesc,
+ $this->userReadableSize($used));
+ }
+ if ($limit && $used) {
+ $quotaDesc = t('%1$s used of %2$s (%3$s&#37;)');
+ $quotaDesc = sprintf($quotaDesc,
+ $this->userReadableSize($used),
+ $this->userReadableSize($limit),
+ round($used / $limit, 1));
+ }
+
+ // prepare quota for template
+ $quota = array();
+ $quota['used'] = $used;
+ $quota['limit'] = $limit;
+ $quota['desc'] = $quotaDesc;
+
+ $output = '';
+ if ($this->enablePost) {
+ $this->server->broadcastEvent('onHTMLActionsPanel', array($parent, &$output));
+ }
+
+ $html .= replace_macros(get_markup_template('cloud_header.tpl'), array(
+ '$header' => t('Files') . ": " . $this->escapeHTML($path) . "/",
+ '$quota' => $quota,
+ '$total' => t('Total'),
+ '$actionspanel' => $output
+ ));
+
+ $html .= replace_macros(get_markup_template('cloud_directory.tpl'), array(
+ '$parentpath' => $parentpath,
+ '$entries' => $f,
+ '$name' => t('Name'),
+ '$type' => t('Type'),
+ '$size' => t('Size'),
+ '$lastmod' => t('Last Modified'),
+ '$parent' => t('parent'),
+ '$edit' => t('Edit'),
+ '$delete' => t('Delete'),
+ '$nick' => $this->auth->getCurrentUser()
+ ));
+
+ get_app()->page['content'] = $html;
+ load_pdl(get_app());
+ construct_page(get_app());
+ }
+
+ /**
+ * @brief Returns a human readable formatted string for filesizes.
+ *
+ * Don't we need such a functionality in other places, too?
+ *
+ * @param int $size filesize in bytes
+ * @return string
+ */
+ function userReadableSize($size) {
+ $ret = "";
+ if (is_numeric($size)) {
+ $incr = 0;
+ $k = 1024;
+ $unit = array('bytes', 'KB', 'MB', 'GB', 'TB', 'PB');
+ while (($size / $k) >= 1){
+ $incr++;
+ $size = round($size / $k, 2);
+ }
+ $ret = $size . " " . $unit[$incr];
+ }
+ return $ret;
+ }
+
+ /**
+ * @brief Creates a form to add new folders and upload files.
+ *
+ * @param \Sabre\DAV\INode $node
+ * @param string &$output
+ */
+ public function htmlActionsPanel(DAV\INode $node, &$output) {
+ if (! $node instanceof DAV\ICollection)
+ return;
+
+ // We also know fairly certain that if an object is a non-extended
+ // SimpleCollection, we won't need to show the panel either.
+ if (get_class($node) === 'Sabre\\DAV\\SimpleCollection')
+ return;
+
+ $output .= replace_macros(get_markup_template('cloud_actionspanel.tpl'), array(
+ '$folder_header' => t('Create new folder'),
+ '$folder_submit' => t('Create'),
+ '$upload_header' => t('Upload file'),
+ '$upload_submit' => t('Upload')
+ ));
+ }
+
+ /**
+ * This method takes a path/name of an asset and turns it into url
+ * suiteable for http access.
+ *
+ * @param string $assetName
+ * @return string
+ */
+ protected function getAssetUrl($assetName) {
+ return z_root() . '/cloud/?sabreAction=asset&assetName=' . urlencode($assetName);
+ }
+
+ /**
+ * @brief returns icon name for use with e.g. font-awesome based on mime-type
+ *
+ * @param string $type
+ * @return string
+ */
+ protected function getIconFromType($type) {
+ $iconMap = array(
+ //Folder
+ t('Collection') => 'icon-folder-close',
+
+ //Common file
+ 'application/octet-stream' => 'icon-file-alt',
+
+ //Text
+ 'text/plain' => 'icon-file-text-alt',
+ 'application/msword' => 'icon-file-text-alt',
+ 'application/pdf' => 'icon-file-text-alt',
+ 'application/vnd.oasis.opendocument.text' => 'icon-file-text-alt',
+ 'application/epub+zip' => 'icon-book',
+
+ //Spreadsheet
+ 'application/vnd.oasis.opendocument.spreadsheet' => 'icon-table',
+ 'application/vnd.ms-excel' => 'icon-table',
+
+ //Image
+ 'image/jpeg' => 'icon-picture',
+ 'image/png' => 'icon-picture',
+ 'image/gif' => 'icon-picture',
+ 'image/svg+xml' => 'icon-picture',
+
+ //Archive
+ 'application/zip' => 'icon-archive',
+ 'application/x-rar-compressed' => 'icon-archive',
+
+ //Audio
+ 'audio/mpeg' => 'icon-music',
+ 'audio/wav' => 'icon-music',
+ 'application/ogg' => 'icon-music',
+
+ //Video
+ 'video/quicktime' => 'icon-film',
+
+
+ );
+
+ $iconFromType = 'icon-file-alt';
+
+ if (array_key_exists($type, $iconMap))
+ {
+ $iconFromType = $iconMap[$type];
+ }
+
+ return $iconFromType;
+ }
+
+ /**
+ * @brief Return the hash of an attachment.
+ *
+ * Given the owner, the parent folder and and attach name get the attachment
+ * hash.
+ *
+ * @param int $owner
+ * The owner_id
+ * @param string $hash
+ * The parent's folder hash
+ * @param string $attachName
+ * The name of the attachment
+ * @return string
+ */
+ protected function findAttachHash($owner, $parentHash, $attachName) {
+ $r = q("SELECT hash FROM attach WHERE uid = %d AND folder = '%s' AND filename = '%s' ORDER BY edited DESC LIMIT 1",
+ intval($owner),
+ dbesc($parentHash),
+ dbesc($attachName)
+ );
+ $hash = "";
+ if ($r) {
+ foreach ($r as $rr) {
+ $hash = $rr['hash'];
+ }
+ }
+ return $hash;
+ }
+
+ /**
+ * @brief Returns an attachment's id for a given hash.
+ *
+ * This id is used to access the attachment in filestorage/
+ *
+ * @param string $attachHash
+ * The hash of an attachment
+ * @return string
+ */
+ protected function findAttachIdByHash($attachHash) {
+ $r = q("SELECT id FROM attach WHERE hash = '%s' ORDER BY edited DESC LIMIT 1",
+ dbesc($attachHash)
+ );
+ $id = "";
+ if ($r) {
+ foreach ($r as $rr) {
+ $id = $rr['id'];
+ }
+ }
+ return $id;
+ }
+}
diff --git a/include/RedDAV/RedDirectory.php b/include/RedDAV/RedDirectory.php
new file mode 100644
index 000000000..85af0d57f
--- /dev/null
+++ b/include/RedDAV/RedDirectory.php
@@ -0,0 +1,462 @@
+<?php
+
+namespace RedMatrix\RedDAV;
+
+use Sabre\DAV;
+
+/**
+ * @brief RedDirectory class.
+ *
+ * A class that represents a directory.
+ *
+ * @extends \Sabre\DAV\Node
+ * @implements \Sabre\DAV\ICollection
+ * @implements \Sabre\DAV\IQuota
+ *
+ * @link http://github.com/friendica/red
+ * @license http://opensource.org/licenses/mit-license.php The MIT License (MIT)
+ */
+class RedDirectory extends DAV\Node implements DAV\ICollection, DAV\IQuota {
+
+ /**
+ * @brief The path inside /cloud
+ *
+ * @var string
+ */
+ private $red_path;
+ private $folder_hash;
+ /**
+ * @brief The full path as seen in the browser.
+ * /cloud + $red_path
+ * @todo I think this is not used anywhere, we always strip '/cloud' and only use it in debug
+ * @var string
+ */
+ private $ext_path;
+ private $root_dir = '';
+ private $auth;
+ /**
+ * @brief The real path on the filesystem.
+ * The actual path in store/ with the hashed names.
+ *
+ * @var string
+ */
+ private $os_path = '';
+
+ /**
+ * @brief Sets up the directory node, expects a full path.
+ *
+ * @param string $ext_path a full path
+ * @param RedBasicAuth &$auth_plugin
+ */
+ public function __construct($ext_path, &$auth_plugin) {
+ //logger('directory ' . $ext_path, LOGGER_DATA);
+ $this->ext_path = $ext_path;
+ // remove "/cloud" from the beginning of the path
+ $this->red_path = ((strpos($ext_path, '/cloud') === 0) ? substr($ext_path, 6) : $ext_path);
+ if (! $this->red_path) {
+ $this->red_path = '/';
+ }
+ $this->auth = $auth_plugin;
+ $this->folder_hash = '';
+ $this->getDir();
+
+ if ($this->auth->browser) {
+ $this->auth->browser->set_writeable();
+ }
+ }
+
+ private function log() {
+ logger('ext_path ' . $this->ext_path, LOGGER_DATA);
+ logger('os_path ' . $this->os_path, LOGGER_DATA);
+ logger('red_path ' . $this->red_path, LOGGER_DATA);
+ }
+
+ /**
+ * @brief Returns an array with all the child nodes.
+ *
+ * @throw \Sabre\DAV\Exception\Forbidden
+ * @return array \Sabre\DAV\INode[]
+ */
+ public function getChildren() {
+ //logger('children for ' . $this->ext_path, LOGGER_DATA);
+ $this->log();
+
+ if (get_config('system', 'block_public') && (! $this->auth->channel_id) && (! $this->auth->observer)) {
+ throw new DAV\Exception\Forbidden('Permission denied.');
+ }
+
+ if (($this->auth->owner_id) && (! perm_is_allowed($this->auth->owner_id, $this->auth->observer, 'view_storage'))) {
+ throw new DAV\Exception\Forbidden('Permission denied.');
+ }
+
+ $contents = RedCollectionData($this->red_path, $this->auth);
+ return $contents;
+ }
+
+ /**
+ * @brief Returns a child by name.
+ *
+ *
+ * @throw \Sabre\DAV\Exception\Forbidden
+ * @throw \Sabre\DAV\Exception\NotFound
+ * @param string $name
+ */
+ public function getChild($name) {
+ logger($name, LOGGER_DATA);
+
+ if (get_config('system', 'block_public') && (! $this->auth->channel_id) && (! $this->auth->observer)) {
+ throw new DAV\Exception\Forbidden('Permission denied.');
+ }
+
+ if (($this->auth->owner_id) && (! perm_is_allowed($this->auth->owner_id, $this->auth->observer, 'view_storage'))) {
+ throw new DAV\Exception\Forbidden('Permission denied.');
+ }
+
+ if ($this->red_path === '/' && $name === 'cloud') {
+ return new RedDirectory('/cloud', $this->auth);
+ }
+
+ $x = RedFileData($this->ext_path . '/' . $name, $this->auth);
+ if ($x) {
+ return $x;
+ }
+
+ throw new DAV\Exception\NotFound('The file with name: ' . $name . ' could not be found.');
+ }
+
+ /**
+ * @brief Returns the name of the directory.
+ *
+ * @return string
+ */
+ public function getName() {
+ //logger(basename($this->red_path), LOGGER_DATA);
+ return (basename($this->red_path));
+ }
+
+ /**
+ * @brief Renames the directory.
+ *
+ * @todo handle duplicate directory name
+ *
+ * @throw \Sabre\DAV\Exception\Forbidden
+ * @param string $name The new name of the directory.
+ * @return void
+ */
+ public function setName($name) {
+ logger('old name ' . basename($this->red_path) . ' -> ' . $name, LOGGER_DATA);
+
+ if ((! $name) || (! $this->auth->owner_id)) {
+ logger('permission denied ' . $name);
+ throw new DAV\Exception\Forbidden('Permission denied.');
+ }
+
+ if (! perm_is_allowed($this->auth->owner_id, $this->auth->observer, 'write_storage')) {
+ logger('permission denied '. $name);
+ throw new DAV\Exception\Forbidden('Permission denied.');
+ }
+
+ list($parent_path, ) = DAV\URLUtil::splitPath($this->red_path);
+ $new_path = $parent_path . '/' . $name;
+
+ $r = q("UPDATE attach SET filename = '%s' WHERE hash = '%s' AND uid = %d",
+ dbesc($name),
+ dbesc($this->folder_hash),
+ intval($this->auth->owner_id)
+ );
+
+ $this->red_path = $new_path;
+ }
+
+ /**
+ * @brief Creates a new file in the directory.
+ *
+ * Data will either be supplied as a stream resource, or in certain cases
+ * as a string. Keep in mind that you may have to support either.
+ *
+ * After successful creation of the file, you may choose to return the ETag
+ * of the new file here.
+ *
+ * @throw \Sabre\DAV\Exception\Forbidden
+ * @param string $name Name of the file
+ * @param resource|string $data Initial payload
+ * @return null|string ETag
+ */
+ public function createFile($name, $data = null) {
+ logger($name, LOGGER_DEBUG);
+
+ if (! $this->auth->owner_id) {
+ logger('permission denied ' . $name);
+ throw new DAV\Exception\Forbidden('Permission denied.');
+ }
+
+ if (! perm_is_allowed($this->auth->owner_id, $this->auth->observer, 'write_storage')) {
+ logger('permission denied ' . $name);
+ throw new DAV\Exception\Forbidden('Permission denied.');
+ }
+
+ $mimetype = z_mime_content_type($name);
+
+ $c = q("SELECT * FROM channel WHERE channel_id = %d AND NOT (channel_pageflags & %d)>0 LIMIT 1",
+ intval($this->auth->owner_id),
+ intval(PAGE_REMOVED)
+ );
+
+ if (! $c) {
+ logger('no channel');
+ throw new DAV\Exception\Forbidden('Permission denied.');
+ }
+
+ $filesize = 0;
+ $hash = random_string();
+
+ $r = q("INSERT INTO attach ( aid, uid, hash, creator, filename, folder, flags, filetype, filesize, revision, data, created, edited, allow_cid, allow_gid, deny_cid, deny_gid )
+ VALUES ( %d, %d, '%s', '%s', '%s', '%s', '%s', '%s', %d, %d, '%s', '%s', '%s', '%s', '%s', '%s', '%s' ) ",
+ intval($c[0]['channel_account_id']),
+ intval($c[0]['channel_id']),
+ dbesc($hash),
+ dbesc($this->auth->observer),
+ dbesc($name),
+ dbesc($this->folder_hash),
+ dbesc(ATTACH_FLAG_OS),
+ dbesc($mimetype),
+ intval($filesize),
+ intval(0),
+ dbesc($this->os_path . '/' . $hash),
+ dbesc(datetime_convert()),
+ dbesc(datetime_convert()),
+ dbesc($c[0]['channel_allow_cid']),
+ dbesc($c[0]['channel_allow_gid']),
+ dbesc($c[0]['channel_deny_cid']),
+ dbesc($c[0]['channel_deny_gid'])
+ );
+
+ $f = 'store/' . $this->auth->owner_nick . '/' . (($this->os_path) ? $this->os_path . '/' : '') . $hash;
+
+ // returns the number of bytes that were written to the file, or FALSE on failure
+ $size = file_put_contents($f, $data);
+ // delete attach entry if file_put_contents() failed
+ if ($size === false) {
+ logger('file_put_contents() failed to ' . $f);
+ attach_delete($c[0]['channel_id'], $hash);
+ return;
+ }
+
+ // returns now
+ $edited = datetime_convert();
+
+ // updates entry with filesize and timestamp
+ $d = q("UPDATE attach SET filesize = '%s', edited = '%s' WHERE hash = '%s' AND uid = %d",
+ dbesc($size),
+ dbesc($edited),
+ dbesc($hash),
+ intval($c[0]['channel_id'])
+ );
+
+ // update the folder's lastmodified timestamp
+ $e = q("UPDATE attach SET edited = '%s' WHERE hash = '%s' AND uid = %d",
+ dbesc($edited),
+ dbesc($this->folder_hash),
+ intval($c[0]['channel_id'])
+ );
+
+ $maxfilesize = get_config('system', 'maxfilesize');
+ if (($maxfilesize) && ($size > $maxfilesize)) {
+ attach_delete($c[0]['channel_id'], $hash);
+ return;
+ }
+
+ // check against service class quota
+ $limit = service_class_fetch($c[0]['channel_id'], 'attach_upload_limit');
+ if ($limit !== false) {
+ $x = q("SELECT SUM(filesize) AS total FROM attach WHERE aid = %d ",
+ intval($c[0]['channel_account_id'])
+ );
+ if (($x) && ($x[0]['total'] + $size > $limit)) {
+ logger('service class limit exceeded for ' . $c[0]['channel_name'] . ' total usage is ' . $x[0]['total'] . ' limit is ' . $limit);
+ attach_delete($c[0]['channel_id'], $hash);
+ return;
+ }
+ }
+ }
+
+ /**
+ * @brief Creates a new subdirectory.
+ *
+ * @param string $name the directory to create
+ * @return void
+ */
+ public function createDirectory($name) {
+ logger($name, LOGGER_DEBUG);
+
+ if ((! $this->auth->owner_id) || (! perm_is_allowed($this->auth->owner_id, $this->auth->observer, 'write_storage'))) {
+ throw new DAV\Exception\Forbidden('Permission denied.');
+ }
+
+ $r = q("SELECT * FROM channel WHERE channel_id = %d AND NOT (channel_pageflags & %d)>0 LIMIT 1",
+ intval($this->auth->owner_id),
+ intval(PAGE_REMOVED)
+ );
+
+ if ($r) {
+ $result = attach_mkdir($r[0], $this->auth->observer, array('filename' => $name, 'folder' => $this->folder_hash));
+ if (! $result['success']) {
+ logger('error ' . print_r($result, true), LOGGER_DEBUG);
+ }
+ }
+ }
+
+ /**
+ * @brief Checks if a child exists.
+ *
+ * @param string $name
+ * The name to check if it exists.
+ * @return boolean
+ */
+ public function childExists($name) {
+ // On /cloud we show a list of available channels.
+ // @todo what happens if no channels are available?
+ if ($this->red_path === '/' && $name === 'cloud') {
+ //logger('We are at /cloud show a channel list', LOGGER_DEBUG);
+ return true;
+ }
+
+ $x = RedFileData($this->ext_path . '/' . $name, $this->auth, true);
+ //logger('RedFileData returns: ' . print_r($x, true), LOGGER_DATA);
+ if ($x)
+ return true;
+
+ return false;
+ }
+
+ /**
+ * @todo add description of what this function does.
+ *
+ * @throw \Sabre\DAV\Exception\NotFound
+ * @return void
+ */
+ function getDir() {
+ //logger($this->ext_path, LOGGER_DEBUG);
+ $this->auth->log();
+
+ $file = $this->ext_path;
+
+ $x = strpos($file, '/cloud');
+ if ($x === false)
+ return;
+ if ($x === 0) {
+ $file = substr($file, 6);
+ }
+
+ if ((! $file) || ($file === '/')) {
+ return;
+ }
+
+ $file = trim($file, '/');
+ $path_arr = explode('/', $file);
+
+ if (! $path_arr)
+ return;
+
+ logger('paths: ' . print_r($path_arr, true), LOGGER_DATA);
+
+ $channel_name = $path_arr[0];
+
+ $r = q("SELECT channel_id FROM channel WHERE channel_address = '%s' AND NOT ( channel_pageflags & %d )>0 LIMIT 1",
+ dbesc($channel_name),
+ intval(PAGE_REMOVED)
+ );
+
+ if (! $r) {
+ throw new DAV\Exception\NotFound('The file with name: ' . $channel_name . ' could not be found.');
+ }
+
+ $channel_id = $r[0]['channel_id'];
+ $this->auth->owner_id = $channel_id;
+ $this->auth->owner_nick = $channel_name;
+
+ $path = '/' . $channel_name;
+ $folder = '';
+ $os_path = '';
+
+ for ($x = 1; $x < count($path_arr); $x++) {
+ $r = q("select id, hash, filename, flags from attach where folder = '%s' and filename = '%s' and uid = %d and (flags & %d)>0",
+ dbesc($folder),
+ dbesc($path_arr[$x]),
+ intval($channel_id),
+ intval(ATTACH_FLAG_DIR)
+ );
+
+ if ($r && ( $r[0]['flags'] & ATTACH_FLAG_DIR)) {
+ $folder = $r[0]['hash'];
+ if (strlen($os_path))
+ $os_path .= '/';
+ $os_path .= $folder;
+
+ $path = $path . '/' . $r[0]['filename'];
+ }
+ }
+ $this->folder_hash = $folder;
+ $this->os_path = $os_path;
+ }
+
+ /**
+ * @brief Returns the last modification time for the directory, as a UNIX
+ * timestamp.
+ *
+ * It looks for the last edited file in the folder. If it is an empty folder
+ * it returns the lastmodified time of the folder itself, to prevent zero
+ * timestamps.
+ *
+ * @return int last modification time in UNIX timestamp
+ */
+ public function getLastModified() {
+ $r = q("SELECT edited FROM attach WHERE folder = '%s' AND uid = %d ORDER BY edited DESC LIMIT 1",
+ dbesc($this->folder_hash),
+ intval($this->auth->owner_id)
+ );
+ if (! $r) {
+ $r = q("SELECT edited FROM attach WHERE hash = '%s' AND uid = %d LIMIT 1",
+ dbesc($this->folder_hash),
+ intval($this->auth->owner_id)
+ );
+ if (! $r)
+ return '';
+ }
+ return datetime_convert('UTC', 'UTC', $r[0]['edited'], 'U');
+ }
+
+ /**
+ * @brief Return quota usage.
+ *
+ * @fixme Should guests relly see the used/free values from filesystem of the
+ * complete store directory?
+ *
+ * @return array with used and free values in bytes.
+ */
+ public function getQuotaInfo() {
+ // values from the filesystem of the complete <i>store/</i> directory
+ $limit = disk_total_space('store');
+ $free = disk_free_space('store');
+
+ if ($this->auth->owner_id) {
+ $c = q("select * from channel where channel_id = %d and not (channel_pageflags & %d)>0 limit 1",
+ intval($this->auth->owner_id),
+ intval(PAGE_REMOVED)
+ );
+
+ $ulimit = service_class_fetch($c[0]['channel_id'], 'attach_upload_limit');
+ $limit = (($ulimit) ? $ulimit : $limit);
+
+ $x = q("select sum(filesize) as total from attach where aid = %d",
+ intval($c[0]['channel_account_id'])
+ );
+ $free = (($x) ? $limit - $x[0]['total'] : 0);
+ }
+
+ return array(
+ $limit - $free,
+ $free
+ );
+ }
+} \ No newline at end of file
diff --git a/include/RedDAV/RedFile.php b/include/RedDAV/RedFile.php
new file mode 100644
index 000000000..3a5230dc1
--- /dev/null
+++ b/include/RedDAV/RedFile.php
@@ -0,0 +1,279 @@
+<?php
+
+namespace RedMatrix\RedDAV;
+
+use Sabre\DAV;
+
+/**
+ * @brief This class represents a file in DAV.
+ *
+ * It provides all functions to work with files in Red's cloud through DAV protocol.
+ *
+ * @extends \Sabre\DAV\Node
+ * @implements \Sabre\DAV\IFile
+ *
+ * @link http://github.com/friendica/red
+ * @license http://opensource.org/licenses/mit-license.php The MIT License (MIT)
+ */
+class RedFile extends DAV\Node implements DAV\IFile {
+
+ /**
+ * The file from attach table.
+ *
+ * @var array
+ * data
+ * flags
+ * filename (string)
+ * filetype (string)
+ */
+ private $data;
+ /**
+ * @see \Sabre\DAV\Auth\Backend\BackendInterface
+ * @var \RedMatrix\RedDAV\RedBasicAuth
+ */
+ private $auth;
+ /**
+ * @var string
+ */
+ private $name;
+
+ /**
+ * Sets up the node, expects a full path name.
+ *
+ * @param string $name
+ * @param array $data from attach table
+ * @param &$auth
+ */
+ public function __construct($name, $data, &$auth) {
+ $this->name = $name;
+ $this->data = $data;
+ $this->auth = $auth;
+
+ //logger(print_r($this->data, true), LOGGER_DATA);
+ }
+
+ /**
+ * @brief Returns the name of the file.
+ *
+ * @return string
+ */
+ public function getName() {
+ //logger(basename($this->name), LOGGER_DATA);
+ return basename($this->name);
+ }
+
+ /**
+ * @brief Renames the file.
+ *
+ * @throw Sabre\DAV\Exception\Forbidden
+ * @param string $name The new name of the file.
+ * @return void
+ */
+ public function setName($newName) {
+ logger('old name ' . basename($this->name) . ' -> ' . $newName, LOGGER_DATA);
+
+ if ((! $newName) || (! $this->auth->owner_id) || (! perm_is_allowed($this->auth->owner_id, $this->auth->observer, 'write_storage'))) {
+ logger('permission denied '. $newName);
+ throw new DAV\Exception\Forbidden('Permission denied.');
+ }
+
+ $newName = str_replace('/', '%2F', $newName);
+
+ $r = q("UPDATE attach SET filename = '%s' WHERE hash = '%s' AND id = %d",
+ dbesc($this->data['filename']),
+ intval($this->data['id'])
+ );
+ }
+
+ /**
+ * @brief Updates the data of the file.
+ *
+ * @param resource $data
+ * @return void
+ */
+ public function put($data) {
+ logger('put file: ' . basename($this->name), LOGGER_DEBUG);
+ $size = 0;
+
+ // @todo only 3 values are needed
+ $c = q("SELECT * FROM channel WHERE channel_id = %d AND NOT (channel_pageflags & %d)>0 LIMIT 1",
+ intval($this->auth->owner_id),
+ intval(PAGE_REMOVED)
+ );
+
+ $r = q("SELECT flags, folder, data FROM attach WHERE hash = '%s' AND uid = %d LIMIT 1",
+ dbesc($this->data['hash']),
+ intval($c[0]['channel_id'])
+ );
+ if ($r) {
+ if ($r[0]['flags'] & ATTACH_FLAG_OS) {
+ $f = 'store/' . $this->auth->owner_nick . '/' . (($r[0]['data']) ? $r[0]['data'] : '');
+ // @todo check return value and set $size directly
+ @file_put_contents($f, $data);
+ $size = @filesize($f);
+ logger('filename: ' . $f . ' size: ' . $size, LOGGER_DEBUG);
+ } else {
+ $r = q("UPDATE attach SET data = '%s' WHERE hash = '%s' AND uid = %d",
+ dbesc(stream_get_contents($data)),
+ dbesc($this->data['hash']),
+ intval($this->data['uid'])
+ );
+ $r = q("SELECT length(data) AS fsize FROM attach WHERE hash = '%s' AND uid = %d LIMIT 1",
+ dbesc($this->data['hash']),
+ intval($this->data['uid'])
+ );
+ if ($r) {
+ $size = $r[0]['fsize'];
+ }
+ }
+ }
+
+ // returns now()
+ $edited = datetime_convert();
+
+ $d = q("UPDATE attach SET filesize = '%s', edited = '%s' WHERE hash = '%s' AND uid = %d",
+ dbesc($size),
+ dbesc($edited),
+ dbesc($this->data['hash']),
+ intval($c[0]['channel_id'])
+ );
+
+ // update the folder's lastmodified timestamp
+ $e = q("UPDATE attach SET edited = '%s' WHERE hash = '%s' AND uid = %d",
+ dbesc($edited),
+ dbesc($r[0]['folder']),
+ intval($c[0]['channel_id'])
+ );
+
+ // @todo do we really want to remove the whole file if an update fails
+ // because of maxfilesize or quota?
+ // There is an Exception "InsufficientStorage" or "PaymentRequired" for
+ // our service class from SabreDAV we could use.
+
+ $maxfilesize = get_config('system', 'maxfilesize');
+ if (($maxfilesize) && ($size > $maxfilesize)) {
+ attach_delete($c[0]['channel_id'], $this->data['hash']);
+ return;
+ }
+
+ $limit = service_class_fetch($c[0]['channel_id'], 'attach_upload_limit');
+ if ($limit !== false) {
+ $x = q("select sum(filesize) as total from attach where aid = %d ",
+ intval($c[0]['channel_account_id'])
+ );
+ if (($x) && ($x[0]['total'] + $size > $limit)) {
+ logger('service class limit exceeded for ' . $c[0]['channel_name'] . ' total usage is ' . $x[0]['total'] . ' limit is ' . $limit);
+ attach_delete($c[0]['channel_id'], $this->data['hash']);
+ return;
+ }
+ }
+ }
+
+ /**
+ * @brief Returns the raw data.
+ *
+ * @return string
+ */
+ public function get() {
+ logger('get file ' . basename($this->name), LOGGER_DEBUG);
+
+ $r = q("SELECT data, flags, filename, filetype FROM attach WHERE hash = '%s' AND uid = %d LIMIT 1",
+ dbesc($this->data['hash']),
+ intval($this->data['uid'])
+ );
+ if ($r) {
+ // @todo this should be a global definition
+ $unsafe_types = array('text/html', 'text/css', 'application/javascript');
+
+ if (in_array($r[0]['filetype'], $unsafe_types)) {
+ header('Content-disposition: attachment; filename="' . $r[0]['filename'] . '"');
+ header('Content-type: text/plain');
+ }
+
+ if ($r[0]['flags'] & ATTACH_FLAG_OS ) {
+ $f = 'store/' . $this->auth->owner_nick . '/' . (($this->os_path) ? $this->os_path . '/' : '') . $r[0]['data'];
+ return fopen($f, 'rb');
+ }
+ return $r[0]['data'];
+ }
+ }
+
+ /**
+ * @brief Returns the ETag for a file.
+ *
+ * An ETag is a unique identifier representing the current version of the file.
+ * If the file changes, the ETag MUST change.
+ * The ETag is an arbitrary string, but MUST be surrounded by double-quotes.
+ *
+ * Return null if the ETag can not effectively be determined.
+ *
+ * @return null|string
+ */
+ public function getETag() {
+ $ret = null;
+ if ($this->data['hash']) {
+ $ret = '"' . $this->data['hash'] . '"';
+ }
+ return $ret;
+ }
+
+ /**
+ * @brief Returns the mime-type for a file.
+ *
+ * If null is returned, we'll assume application/octet-stream
+ *
+ * @return mixed
+ */
+ public function getContentType() {
+ // @todo this should be a global definition.
+ $unsafe_types = array('text/html', 'text/css', 'application/javascript');
+ if (in_array($this->data['filetype'], $unsafe_types)) {
+ return 'text/plain';
+ }
+ return $this->data['filetype'];
+ }
+
+ /**
+ * @brief Returns the size of the node, in bytes.
+ *
+ * @return int
+ * filesize in bytes
+ */
+ public function getSize() {
+ return $this->data['filesize'];
+ }
+
+ /**
+ * @brief Returns the last modification time for the file, as a unix
+ * timestamp.
+ *
+ * @return int last modification time in UNIX timestamp
+ */
+ public function getLastModified() {
+ return datetime_convert('UTC', 'UTC', $this->data['edited'], 'U');
+ }
+
+ /**
+ * @brief Delete the file.
+ *
+ * This method checks the permissions and then calls attach_delete() function
+ * to actually remove the file.
+ *
+ * @throw \Sabre\DAV\Exception\Forbidden
+ */
+ public function delete() {
+ logger('delete file ' . basename($this->name), LOGGER_DEBUG);
+
+ if ((! $this->auth->owner_id) || (! perm_is_allowed($this->auth->owner_id, $this->auth->observer, 'write_storage'))) {
+ throw new DAV\Exception\Forbidden('Permission denied.');
+ }
+
+ if ($this->auth->owner_id !== $this->auth->channel_id) {
+ if (($this->auth->observer !== $this->data['creator']) || ($this->data['flags'] & ATTACH_FLAG_DIR)) {
+ throw new DAV\Exception\Forbidden('Permission denied.');
+ }
+ }
+
+ attach_delete($this->auth->owner_id, $this->data['hash']);
+ }
+} \ No newline at end of file
diff --git a/include/account.php b/include/account.php
index 138db3290..8df44acba 100644
--- a/include/account.php
+++ b/include/account.php
@@ -108,7 +108,7 @@ function create_account($arr) {
$parent = ((x($arr,'parent')) ? intval($arr['parent']) : 0 );
$flags = ((x($arr,'account_flags')) ? intval($arr['account_flags']) : ACCOUNT_OK);
$roles = ((x($arr,'account_roles')) ? intval($arr['account_roles']) : 0 );
- $expires = ((x($arr,'expires')) ? intval($arr['expires']) : '0000-00-00 00:00:00');
+ $expires = ((x($arr,'expires')) ? intval($arr['expires']) : NULL_DATE);
$default_service_class = get_config('system','default_service_class');
@@ -202,7 +202,7 @@ function create_account($arr) {
// Set the parent record to the current record_id if no parent was provided
if(! $parent) {
- $r = q("update account set account_parent = %d where account_id = %d limit 1",
+ $r = q("update account set account_parent = %d where account_id = %d",
intval($result['account']['account_id']),
intval($result['account']['account_id'])
);
@@ -367,16 +367,16 @@ function user_allow($hash) {
if(! $account)
return $ret;
- $r = q("DELETE FROM register WHERE hash = '%s' LIMIT 1",
+ $r = q("DELETE FROM register WHERE hash = '%s'",
dbesc($register[0]['hash'])
);
- $r = q("update account set account_flags = (account_flags ^ %d) where (account_flags & %d) and account_id = %d limit 1",
+ $r = q("update account set account_flags = (account_flags & ~%d) where (account_flags & %d)>0 and account_id = %d",
intval(ACCOUNT_BLOCKED),
intval(ACCOUNT_BLOCKED),
intval($register[0]['uid'])
);
- $r = q("update account set account_flags = (account_flags ^ %d) where (account_flags & %d) and account_id = %d limit 1",
+ $r = q("update account set account_flags = (account_flags & ~%d) where (account_flags & %d)>0 and account_id = %d",
intval(ACCOUNT_PENDING),
intval(ACCOUNT_PENDING),
intval($register[0]['uid'])
@@ -423,18 +423,18 @@ function user_deny($hash) {
if(! count($register))
return false;
- $account = q("SELECT account_id FROM account WHERE account_id = %d LIMIT 1",
+ $account = q("SELECT account_id, account_email FROM account WHERE account_id = %d LIMIT 1",
intval($register[0]['uid'])
);
if(! $account)
return false;
- $r = q("DELETE FROM account WHERE account_id = %d LIMIT 1",
+ $r = q("DELETE FROM account WHERE account_id = %d",
intval($register[0]['uid'])
);
- $r = q("DELETE FROM `register` WHERE id = %d LIMIT 1",
+ $r = q("DELETE FROM `register` WHERE id = %d",
dbesc($register[0]['id'])
);
notice( sprintf(t('Registration revoked for %s'), $account[0]['account_email']) . EOL);
@@ -463,21 +463,21 @@ function user_approve($hash) {
if(! $account)
return $ret;
- $r = q("DELETE FROM register WHERE hash = '%s' and password = 'verify' LIMIT 1",
+ $r = q("DELETE FROM register WHERE hash = '%s' and password = 'verify'",
dbesc($register[0]['hash'])
);
- $r = q("update account set account_flags = (account_flags ^ %d) where (account_flags & %d) and account_id = %d limit 1",
+ $r = q("update account set account_flags = (account_flags & ~%d) where (account_flags & %d)>0 and account_id = %d",
intval(ACCOUNT_BLOCKED),
intval(ACCOUNT_BLOCKED),
intval($register[0]['uid'])
);
- $r = q("update account set account_flags = (account_flags ^ %d) where (account_flags & %d) and account_id = %d limit 1",
+ $r = q("update account set account_flags = (account_flags & ~%d) where (account_flags & %d)>0 and account_id = %d",
intval(ACCOUNT_PENDING),
intval(ACCOUNT_PENDING),
intval($register[0]['uid'])
);
- $r = q("update account set account_flags = (account_flags ^ %d) where (account_flags & %d) and account_id = %d limit 1",
+ $r = q("update account set account_flags = (account_flags & ~%d) where (account_flags & %d)>0 and account_id = %d",
intval(ACCOUNT_UNVERIFIED),
intval(ACCOUNT_UNVERIFIED),
intval($register[0]['uid'])
@@ -510,10 +510,12 @@ function user_approve($hash) {
function downgrade_accounts() {
- $r = q("select * from account where not ( account_flags & %d )
- and account_expires != '0000-00-00 00:00:00'
- and account_expires < UTC_TIMESTAMP() ",
- intval(ACCOUNT_EXPIRED)
+ $r = q("select * from account where not ( account_flags & %d )>0
+ and account_expires != '%s'
+ and account_expires < %s ",
+ intval(ACCOUNT_EXPIRED),
+ dbesc(NULL_DATE),
+ db_getfunc('UTC_TIMESTAMP')
);
if(! $r)
@@ -526,9 +528,9 @@ function downgrade_accounts() {
if(($basic) && ($rr['account_service_class']) && ($rr['account_service_class'] != $basic)) {
$x = q("UPDATE account set account_service_class = '%s', account_expires = '%s'
- where account_id = %d limit 1",
+ where account_id = %d",
dbesc($basic),
- dbesc('0000-00-00 00:00:00'),
+ dbesc(NULL_DATE),
intval($rr['account_id'])
);
$ret = array('account' => $rr);
@@ -536,7 +538,7 @@ function downgrade_accounts() {
logger('downgrade_accounts: Account id ' . $rr['account_id'] . ' downgraded.');
}
else {
- $x = q("UPDATE account SET account_flags = (account_flags | %d) where account_id = %d limit 1",
+ $x = q("UPDATE account SET account_flags = (account_flags | %d) where account_id = %d",
intval(ACCOUNT_EXPIRED),
intval($rr['account_id'])
);
@@ -547,3 +549,114 @@ function downgrade_accounts() {
}
}
+
+
+// check service_class restrictions. If there are no service_classes defined, everything is allowed.
+// if $usage is supplied, we check against a maximum count and return true if the current usage is
+// less than the subscriber plan allows. Otherwise we return boolean true or false if the property
+// is allowed (or not) in this subscriber plan. An unset property for this service plan means
+// the property is allowed, so it is only necessary to provide negative properties for each plan,
+// or what the subscriber is not allowed to do.
+
+
+function service_class_allows($uid,$property,$usage = false) {
+ $a = get_app();
+ if($uid == local_user()) {
+ $service_class = $a->account['account_service_class'];
+ }
+ else {
+ $r = q("select account_service_class as service_class
+ from channel c, account a
+ where c.channel_account_id=a.account_id and c.channel_id= %d limit 1",
+ intval($uid)
+ );
+ if($r !== false and count($r)) {
+ $service_class = $r[0]['service_class'];
+ }
+ }
+ if(! x($service_class))
+ return true; // everything is allowed
+
+ $arr = get_config('service_class',$service_class);
+ if(! is_array($arr) || (! count($arr)))
+ return true;
+
+ if($usage === false)
+ return ((x($arr[$property])) ? (bool) $arr[$property] : true);
+ else {
+ if(! array_key_exists($property,$arr))
+ return true;
+ return (((intval($usage)) < intval($arr[$property])) ? true : false);
+ }
+}
+
+
+function service_class_fetch($uid,$property) {
+ $a = get_app();
+ if($uid == local_user()) {
+ $service_class = $a->account['account_service_class'];
+ }
+ else {
+ $r = q("select account_service_class as service_class
+ from channel c, account a
+ where c.channel_account_id=a.account_id and c.channel_id= %d limit 1",
+ intval($uid)
+ );
+ if($r !== false and count($r)) {
+ $service_class = $r[0]['service_class'];
+ }
+ }
+ if(! x($service_class))
+ return false; // everything is allowed
+
+ $arr = get_config('service_class',$service_class);
+
+ if(! is_array($arr) || (! count($arr)))
+ return false;
+
+ return((array_key_exists($property,$arr)) ? $arr[$property] : false);
+}
+
+// like service_class_fetch but queries by account rather than channel
+
+function account_service_class_fetch($aid,$property) {
+
+ $r = q("select account_service_class as service_class from account where account_id = %d limit 1",
+ intval($aid)
+ );
+ if($r !== false && count($r)) {
+ $service_class = $r[0]['service_class'];
+ }
+
+ if(! x($service_class))
+ return false; // everything is allowed
+
+ $arr = get_config('service_class',$service_class);
+
+ if(! is_array($arr) || (! count($arr)))
+ return false;
+
+ return((array_key_exists($property,$arr)) ? $arr[$property] : false);
+}
+
+
+function upgrade_link($bbcode = false) {
+ $l = get_config('service_class','upgrade_link');
+ if(! $l)
+ return '';
+ if($bbcode)
+ $t = sprintf('[zrl=%s]' . t('Click here to upgrade.') . '[/zrl]', $l);
+ else
+ $t = sprintf('<a href="%s">' . t('Click here to upgrade.') . '</div>', $l);
+ return $t;
+}
+
+function upgrade_message($bbcode = false) {
+ $x = upgrade_link($bbcode);
+ return t('This action exceeds the limits set by your subscription plan.') . (($x) ? ' ' . $x : '') ;
+}
+
+function upgrade_bool_message($bbcode = false) {
+ $x = upgrade_link($bbcode);
+ return t('This action is not available under your subscription plan.') . (($x) ? ' ' . $x : '') ;
+}
diff --git a/include/acl_selectors.php b/include/acl_selectors.php
index 8d94264e4..243e7a549 100644
--- a/include/acl_selectors.php
+++ b/include/acl_selectors.php
@@ -171,7 +171,7 @@ function contact_select($selname, $selclass, $preselected = false, $size = 4, $p
$o .= "<select name=\"{$selname}[]\" id=\"$selclass\" class=\"$selclass\" multiple=\"multiple\" size=\"$size\" $tabindex >\r\n";
$r = q("SELECT abook_id, xchan_name, xchan_url, xchan_photo_s from abook left join xchan on abook_xchan = xchan_hash
- where abook_flags = 0 or not ( abook_flags & %d ) and abook_channel = %d
+ where abook_flags = 0 or not ( abook_flags & %d )>0 and abook_channel = %d
$sql_extra
ORDER BY xchan_name ASC ",
intval(ABOOK_FLAG_SELF),
@@ -237,7 +237,7 @@ function populate_acl($defaults = null,$show_jotnets = true) {
$tpl = get_markup_template("acl_selector.tpl");
$o = replace_macros($tpl, array(
- '$showall'=> t("Visible to everybody"),
+ '$showall'=> t("Visible to your default audience"),
'$show' => t("Show"),
'$hide' => t("Don't show"),
'$allowcid' => json_encode($allow_cid),
@@ -248,8 +248,7 @@ function populate_acl($defaults = null,$show_jotnets = true) {
'$aclModalTitle' => t('Permissions'),
'$aclModalDismiss' => t('Close')
));
-
-
+
return $o;
}
diff --git a/include/activities.php b/include/activities.php
index 4502b758e..d770ccb23 100644
--- a/include/activities.php
+++ b/include/activities.php
@@ -25,7 +25,7 @@ function profile_activity($changed, $value) {
$arr['verb'] = ACTIVITY_UPDATE;
$arr['obj_type'] = ACTIVITY_OBJ_PROFILE;
- $arr['$plink'] = z_root() . '/channel/' . $self['channel_address'] . '/?f=&mid=' . $arr['mid'];
+ $arr['plink'] = z_root() . '/channel/' . $self['channel_address'] . '/?f=&mid=' . $arr['mid'];
$A = '[url=' . z_root() . '/channel/' . $self['channel_address'] . ']' . $self['channel_name'] . '[/url]';
@@ -48,7 +48,11 @@ function profile_activity($changed, $value) {
if($t == 1 && strlen($value)) {
// if it's a url, the HTML quotes will mess it up, so link it and don't try and zidify it because we don't know what it points to.
- $value = linkify($value);
+ $value = preg_replace_callback("/([^\]\='".'"'."]|^|\#\^)(https?\:\/\/[a-zA-Z0-9\:\/\-\?\&\;\.\=\@\_\~\#\%\$\!\+\,]+)/ism", 'red_zrl_callback', $value);
+ // take out the bookmark indicator
+ if(substr($value,0,2) === '#^')
+ $value = str_replace('#^','',$value);
+
$message = sprintf( t('%1$s changed %2$s to &ldquo;%3$s&rdquo;'), $A, $changes, $value);
$message .= "\n\n" . sprintf( t('Visit %1$s\'s %2$s'), $A, $prof);
}
diff --git a/include/api.php b/include/api.php
index 57551a3b0..51de412cf 100644
--- a/include/api.php
+++ b/include/api.php
@@ -119,16 +119,36 @@ require_once('include/items.php');
// process normal login request
require_once('include/auth.php');
+ $channel_login = 0;
$record = account_verify_password($_SERVER['PHP_AUTH_USER'],$_SERVER['PHP_AUTH_PW']);
if(! $record) {
- logger('API_login failure: ' . print_r($_SERVER,true), LOGGER_DEBUG);
- header('WWW-Authenticate: Basic realm="Red"');
- header('HTTP/1.0 401 Unauthorized');
- die('This api requires login');
+ $r = q("select * from channel where channel_address = '%s' limit 1",
+ dbesc($_SERVER['PHP_AUTH_USER'])
+ );
+ if ($r) {
+ $x = q("select * from account where account_id = %d limit 1",
+ intval($r[0]['channel_account_id'])
+ );
+ if ($x) {
+ $record = account_verify_password($x[0]['account_email'],$_SERVER['PHP_AUTH_PW']);
+ if($record)
+ $channel_login = $r[0]['channel_id'];
+ }
+ }
+ if(! $record) {
+ logger('API_login failure: ' . print_r($_SERVER,true), LOGGER_DEBUG);
+ header('WWW-Authenticate: Basic realm="Red"');
+ header('HTTP/1.0 401 Unauthorized');
+ die('This api requires login');
+ }
}
require_once('include/security.php');
authenticate_success($record);
+
+ if($channel_login)
+ change_channel($channel_login);
+
$_SESSION['allow_api'] = true;
}
@@ -177,7 +197,10 @@ require_once('include/items.php');
case "json":
header ("Content-Type: application/json");
foreach($r as $rr)
- return json_encode($rr);
+ $json = json_encode($rr);
+ if ($_GET['callback'])
+ $json = $_GET['callback']."(".$json.")";
+ return $json;
break;
case "rss":
header ("Content-Type: application/rss+xml");
@@ -286,7 +309,7 @@ require_once('include/items.php');
return False;
} else {
$user = local_user();
- $extra_query = " AND abook_channel = %d AND (abook_flags & " . ABOOK_FLAG_SELF . " ) ";
+ $extra_query = " AND abook_channel = %d AND (abook_flags & " . ABOOK_FLAG_SELF . " )>0 ";
}
}
@@ -313,7 +336,7 @@ require_once('include/items.php');
// count public wall messages
$r = q("SELECT COUNT(`id`) as `count` FROM `item`
WHERE `uid` = %d
- AND ( item_flags & %d ) and item_restrict = 0
+ AND ( item_flags & %d )>0 and item_restrict = 0
AND `allow_cid`='' AND `allow_gid`='' AND `deny_cid`='' AND `deny_gid`=''",
intval($usr[0]['channel_id']),
intval(ITEM_WALL)
@@ -340,7 +363,7 @@ require_once('include/items.php');
$countfollowers = $r[0]['count'];
}
- $r = q("SELECT count(`id`) as `count` FROM item where ( item_flags & %d ) and uid = %d and item_restrict = 0",
+ $r = q("SELECT count(`id`) as `count` FROM item where ( item_flags & %d )>0 and uid = %d and item_restrict = 0",
intval($uinfo[0]['channel_id']),
intval(ITEM_STARRED)
);
@@ -526,8 +549,8 @@ require_once('include/items.php');
}
require_once('include/identity.php');
-
- json_return_and_die(identity_basic_export(api_user()));
+
+ json_return_and_die(identity_basic_export(api_user(),(($_REQUEST['posts']) ? intval($_REQUEST['posts']) : 0 )));
}
api_register_func('api/export/basic','api_export_basic', true);
api_register_func('api/red/channel/export/basic','api_export_basic', true);
@@ -562,10 +585,55 @@ require_once('include/items.php');
api_register_func('api/red/photos','api_photos', true);
+ function api_group_members(&$a,$type) {
+ if(api_user() === false)
+ return false;
+
+ if($_REQUEST['group_id']) {
+ $r = q("select * from groups where uid = %d and id = %d limit 1",
+ intval(api_user()),
+ intval($_REQUEST['group_id'])
+ );
+ if($r) {
+ $x = q("select * from group_member left join xchan on group_member.xchan = xchan.xchan_hash
+ left join abook on abook_xchan = xchan_hash where gid = %d",
+ intval($_REQUEST['group_id'])
+ );
+ json_return_and_die($x);
+ }
+ }
+ }
+
+ api_register_func('api/red/group_members','api_group_members', true);
+ function api_group(&$a,$type) {
+ if(api_user() === false)
+ return false;
+
+ $r = q("select * from groups where uid = %d",
+ intval(api_user())
+ );
+ json_return_and_die($r);
+ }
+ api_register_func('api/red/group','api_group', true);
+
+
+ function api_red_xchan(&$a,$type) {
+ if(api_user() === false)
+ return false;
+ require_once('include/hubloc.php');
+ if($_SERVER['request_method'] === 'POST') {
+ $r = xchan_store($_REQUEST);
+ }
+ $r = xchan_fetch($_REQUEST);
+ json_return_and_die($r);
+ };
+
+ api_register_func('api/red/xchan','api_red_xchan',true);
+
function api_statuses_mediap(&$a, $type) {
if (api_user() === false) {
@@ -936,8 +1004,8 @@ require_once('include/items.php');
// at the network timeline just mark everything seen.
if (api_user() == $user_info['uid']) {
- $r = q("UPDATE `item` SET item_flags = ( item_flags ^ %d )
- WHERE item_flags & %d and uid = %d",
+ $r = q("UPDATE `item` SET item_flags = ( item_flags & ~%d )
+ WHERE (item_flags & %d)>0 and uid = %d",
intval(ITEM_UNSEEN),
intval(ITEM_UNSEEN),
intval($user_info['uid'])
@@ -994,10 +1062,10 @@ require_once('include/items.php');
and uid in ( " . stream_perms_api_uids() . " )
$sql_extra
AND id > %d group by mid
- order by received desc LIMIT %d, %d ",
+ order by received desc LIMIT %d OFFSET %d ",
intval($since_id),
- intval($start),
- intval($count)
+ intval($count),
+ intval($start)
);
xchan_query($r,true);
@@ -1498,6 +1566,9 @@ require_once('include/items.php');
$a = get_app();
$ret = array();
+ if(! $r)
+ return $ret;
+
foreach($r as $item) {
localize_item($item);
@@ -1635,9 +1706,9 @@ require_once('include/items.php');
// For Red, the closest thing we can do to figure out if you're friends is if both of you are sending each other your streams.
// This won't work if either of you send your stream to everybody on the network
if($qtype == 'friends')
- $sql_extra = sprintf(" AND ( abook_their_perms & %d ) and ( abook_my_perms & %d ) ", intval(PERMS_W_STREAM), intval(PERMS_W_STREAM));
+ $sql_extra = sprintf(" AND ( abook_their_perms & %d )>0 and ( abook_my_perms & %d )>0 ", intval(PERMS_W_STREAM), intval(PERMS_W_STREAM));
if($qtype == 'followers')
- $sql_extra = sprintf(" AND ( abook_my_perms & %d ) and not ( abook_their_perms & %d ) ", intval(PERMS_W_STREAM), intval(PERMS_W_STREAM));
+ $sql_extra = sprintf(" AND ( abook_my_perms & %d )>0 and not ( abook_their_perms & %d )>0 ", intval(PERMS_W_STREAM), intval(PERMS_W_STREAM));
$r = q("SELECT abook_id FROM abook where abook_flags = 0 and abook_channel = %d $sql_extra",
intval(api_user())
@@ -1751,9 +1822,9 @@ require_once('include/items.php');
// This won't work if either of you send your stream to everybody on the network
if($qtype == 'friends')
- $sql_extra = sprintf(" AND ( abook_their_perms & %d ) and ( abook_my_perms & %d ) ", intval(PERMS_W_STREAM), intval(PERMS_W_STREAM));
+ $sql_extra = sprintf(" AND ( abook_their_perms & %d )>0 and ( abook_my_perms & %d )>0 ", intval(PERMS_W_STREAM), intval(PERMS_W_STREAM));
if($qtype == 'followers')
- $sql_extra = sprintf(" AND ( abook_my_perms & %d ) and not ( abook_their_perms & %d ) ", intval(PERMS_W_STREAM), intval(PERMS_W_STREAM));
+ $sql_extra = sprintf(" AND ( abook_my_perms & %d )>0 and not ( abook_their_perms & %d )>0 ", intval(PERMS_W_STREAM), intval(PERMS_W_STREAM));
$r = q("SELECT abook_id FROM abook where abook_flags = 0 and abook_channel = %d $sql_extra",
intval(api_user())
@@ -1797,11 +1868,14 @@ require_once('include/items.php');
require_once("include/message.php");
- $r = q("SELECT `id` FROM `contact` WHERE `uid`=%d AND `nick`='%s'",
+ // in a decentralised world the screen name is ambiguous
+
+ $r = q("SELECT `abook_id` FROM `abook` left join xchan on abook_xchan = xchan_hash WHERE `abook_channel`=%d and xchan_addr like '%s'",
intval(api_user()),
- dbesc($_POST['screen_name']));
+ dbesc($_POST['screen_name'] . '@%')
+ );
- $recipient = api_get_user($a, $r[0]['id']);
+ $recipient = api_get_user($a, $r[0]['abook_id']);
$replyto = '';
$sub = '';
if (x($_REQUEST,'replyto')) {
@@ -1854,10 +1928,11 @@ require_once('include/items.php');
if ($page<0) $page=0;
$start = $page*$count;
-
- $profile_url = $a->get_baseurl() . '/channel/' . $a->user['nickname'];
+ $channel = $a->get_channel();
+
+ $profile_url = $a->get_baseurl() . '/channel/' . $channel['channel_address'];
if ($box=="sentbox") {
- $sql_extra = "`from-url`='".dbesc( $profile_url )."'";
+ $sql_extra = "`from_xchan`='".dbesc( $channel['channel_hash'] )."'";
}
elseif ($box=="conversation") {
$sql_extra = "`parent_mid`='".dbesc( $_GET["uri"] ) ."'";
@@ -1866,26 +1941,30 @@ require_once('include/items.php');
$sql_extra = "true";
}
elseif ($box=="inbox") {
- $sql_extra = "`from-url`!='".dbesc( $profile_url )."'";
+ $sql_extra = "`from_xchan`!='".dbesc( $channel['channel_hash'] )."'";
}
- $r = q("SELECT * FROM `mail` WHERE uid=%d AND $sql_extra ORDER BY created DESC LIMIT %d,%d",
+ $r = q("SELECT * FROM `mail` WHERE channel_id = %d AND $sql_extra ORDER BY created DESC LIMIT %d OFFSET %d",
intval(api_user()),
- intval($start), intval($count)
+ intval($count), intval($start)
);
$ret = Array();
- foreach($r as $item) {
- if ($box == "inbox" || $item['from-url'] != $profile_url){
- $recipient = $user_info;
- $sender = api_get_user($a,$item['contact-id']);
- }
- elseif ($box == "sentbox" || $item['from-url'] != $profile_url){
- $recipient = api_get_user($a,$item['contact-id']);
- $sender = $user_info;
+ if($r) {
+ foreach($r as $item) {
+ if ($box == "inbox" || $item['from-url'] != $profile_url){
+ $recipient = $user_info;
+ // fixme to lookup recipient
+ $sender = api_get_user($a);
+ }
+ elseif ($box == "sentbox" || $item['from-url'] != $profile_url){
+ // fixme to lookup recipient
+ $recipient = api_get_user($a);
+ $sender = $user_info;
+ }
+
+ $ret[]=api_format_messages($item, $recipient, $sender);
}
-
- $ret[]=api_format_messages($item, $recipient, $sender);
}
diff --git a/include/apps.php b/include/apps.php
index 135eaa99a..e08e6a6f5 100644
--- a/include/apps.php
+++ b/include/apps.php
@@ -11,7 +11,10 @@ require_once('include/identity.php');
function get_system_apps() {
$ret = array();
- $files = glob('app/*.apd');
+ if(is_dir('apps'))
+ $files = glob('apps/*.apd');
+ else
+ $files = glob('app/*.apd');
if($files) {
foreach($files as $f) {
$x = parse_app_description($f);
@@ -80,35 +83,37 @@ function parse_app_description($f) {
$ret['target'] = str_replace(array('\'','"'),array('&#39;','&dquot;'),$ret['target']);
if(array_key_exists('requires',$ret)) {
- $require = trim(strtolower($ret['requires']));
- switch($require) {
- case 'nologin':
- if(local_user())
- unset($ret);
- break;
- case 'admin':
- if(! is_site_admin())
- unset($ret);
- break;
- case 'local_user':
- if(! local_user())
- unset($ret);
- break;
- case 'public_profile':
- if(! is_public_profile())
- unset($ret);
- break;
- case 'observer':
- if(! $observer)
- unset($ret);
- break;
- default:
- if(! local_user() && feature_enabled(local_user(),$require))
- unset($ret);
- break;
+ $requires = explode(',',$ret['requires']);
+ foreach($requires as $require) {
+ $require = trim(strtolower($require));
+ switch($require) {
+ case 'nologin':
+ if(local_user())
+ unset($ret);
+ break;
+ case 'admin':
+ if(! is_site_admin())
+ unset($ret);
+ break;
+ case 'local_user':
+ if(! local_user())
+ unset($ret);
+ break;
+ case 'public_profile':
+ if(! is_public_profile())
+ unset($ret);
+ break;
+ case 'observer':
+ if(! $observer)
+ unset($ret);
+ break;
+ default:
+ if(! (local_user() && feature_enabled(local_user(),$require)))
+ unset($ret);
+ break;
+ }
}
-// logger('require: ' . print_r($ret,true));
}
if($ret) {
translate_system_apps($ret);
@@ -124,7 +129,7 @@ function translate_system_apps(&$arr) {
'Bookmarks' => t('Bookmarks'),
'Address Book' => t('Address Book'),
'Login' => t('Login'),
- 'Channel Select' => t('Channel Select'),
+ 'Channel Manager' => t('Channel Manager'),
'Matrix' => t('Matrix'),
'Settings' => t('Settings'),
'Files' => t('Files'),
@@ -141,7 +146,13 @@ function translate_system_apps(&$arr) {
'Chat' => t('Chat'),
'Search' => t('Search'),
'Probe' => t('Probe'),
- 'Suggest' => t('Suggest')
+ 'Suggest' => t('Suggest'),
+ 'Random Channel' => t('Random Channel'),
+ 'Invite' => t('Invite'),
+ 'Features' => t('Features'),
+ 'Language' => t('Language'),
+ 'Post' => t('Post'),
+ 'Profile Photo' => t('Profile Photo')
);
if(array_key_exists($arr['name'],$apps))
@@ -180,34 +191,37 @@ function app_render($papp,$mode = 'view') {
$papp['desc'] = str_replace(array('\'','"'),array('&#39;','&dquot;'),$papp['desc']);
if($k === 'requires') {
- $require = trim(strtolower($v));
- switch($require) {
- case 'nologin':
- if(local_user())
- return '';
- break;
- case 'admin':
- if(! is_site_admin())
- return '';
- break;
- case 'local_user':
- if(! local_user())
- return '';
- break;
- case 'public_profile':
- if(! is_public_profile())
- return '';
- break;
- case 'observer':
- $observer = get_app()->get_observer();
- if(! $observer)
- return '';
- break;
- default:
- if(! local_user() && feature_enabled(local_user(),$require))
- return '';
- break;
+ $requires = explode(',',$v);
+ foreach($requires as $require) {
+ $require = trim(strtolower($require));
+ switch($require) {
+ case 'nologin':
+ if(local_user())
+ return '';
+ break;
+ case 'admin':
+ if(! is_site_admin())
+ return '';
+ break;
+ case 'local_user':
+ if(! local_user())
+ return '';
+ break;
+ case 'public_profile':
+ if(! is_public_profile())
+ return '';
+ break;
+ case 'observer':
+ $observer = get_app()->get_observer();
+ if(! $observer)
+ return '';
+ break;
+ default:
+ if(! (local_user() && feature_enabled(local_user(),$require)))
+ return '';
+ break;
+ }
}
}
@@ -258,7 +272,7 @@ function app_install($uid,$app) {
function app_destroy($uid,$app) {
if($uid && $app['guid']) {
- $r = q("delete from app where app_id = '%s' and app_channel = %d limit 1",
+ $r = q("delete from app where app_id = '%s' and app_channel = %d",
dbesc($app['guid']),
intval($uid)
);
@@ -379,7 +393,7 @@ function app_update($arr) {
$darray['app_page'] = ((x($arr,'page')) ? escape_tags($arr['page']) : '');
$darray['app_requires'] = ((x($arr,'requires')) ? escape_tags($arr['requires']) : '');
- $r = q("update app set app_sig = '%s', app_author = '%s', app_name = '%s', app_desc = '%s', app_url = '%s', app_photo = '%s', app_version = '%s', app_addr = '%s', app_price = '%s', app_page = '%s', app_requires = '%s' where app_id = '%s' and app_channel = %d limit 1",
+ $r = q("update app set app_sig = '%s', app_author = '%s', app_name = '%s', app_desc = '%s', app_url = '%s', app_photo = '%s', app_version = '%s', app_addr = '%s', app_price = '%s', app_page = '%s', app_requires = '%s' where app_id = '%s' and app_channel = %d",
dbesc($darray['app_sig']),
dbesc($darray['app_author']),
dbesc($darray['app_name']),
@@ -461,4 +475,6 @@ function app_encode($app,$embed = false) {
function papp_encode($papp) {
return chunk_split(base64_encode(json_encode($papp)),72,"\n");
-} \ No newline at end of file
+}
+
+
diff --git a/include/attach.php b/include/attach.php
index 0df2e82a5..a76dd4b28 100644
--- a/include/attach.php
+++ b/include/attach.php
@@ -26,77 +26,74 @@ function z_mime_content_type($filename) {
$mime_types = array(
- 'txt' => 'text/plain',
- 'htm' => 'text/html',
- 'html' => 'text/html',
- 'php' => 'text/html',
- 'css' => 'text/css',
- 'js' => 'application/javascript',
- 'json' => 'application/json',
- 'xml' => 'application/xml',
- 'swf' => 'application/x-shockwave-flash',
- 'flv' => 'video/x-flv',
- 'epub' => 'application/epub+zip',
-
- // images
- 'png' => 'image/png',
- 'jpe' => 'image/jpeg',
- 'jpeg' => 'image/jpeg',
- 'jpg' => 'image/jpeg',
- 'gif' => 'image/gif',
- 'bmp' => 'image/bmp',
- 'ico' => 'image/vnd.microsoft.icon',
- 'tiff' => 'image/tiff',
- 'tif' => 'image/tiff',
- 'svg' => 'image/svg+xml',
- 'svgz' => 'image/svg+xml',
-
- // archives
- 'zip' => 'application/zip',
- 'rar' => 'application/x-rar-compressed',
- 'exe' => 'application/x-msdownload',
- 'msi' => 'application/x-msdownload',
- 'cab' => 'application/vnd.ms-cab-compressed',
-
- // audio/video
- 'mp3' => 'audio/mpeg',
- 'wav' => 'audio/wav',
- 'qt' => 'video/quicktime',
- 'mov' => 'video/quicktime',
- 'ogg' => 'application/ogg',
-
- // adobe
- 'pdf' => 'application/pdf',
- 'psd' => 'image/vnd.adobe.photoshop',
- 'ai' => 'application/postscript',
- 'eps' => 'application/postscript',
- 'ps' => 'application/postscript',
-
- // ms office
- 'doc' => 'application/msword',
- 'rtf' => 'application/rtf',
- 'xls' => 'application/vnd.ms-excel',
- 'ppt' => 'application/vnd.ms-powerpoint',
-
-
- // open office
- 'odt' => 'application/vnd.oasis.opendocument.text',
- 'ods' => 'application/vnd.oasis.opendocument.spreadsheet',
+ 'txt' => 'text/plain',
+ 'htm' => 'text/html',
+ 'html' => 'text/html',
+ 'php' => 'text/html',
+ 'css' => 'text/css',
+ 'js' => 'application/javascript',
+ 'json' => 'application/json',
+ 'xml' => 'application/xml',
+ 'swf' => 'application/x-shockwave-flash',
+ 'flv' => 'video/x-flv',
+ 'epub' => 'application/epub+zip',
+
+ // images
+ 'png' => 'image/png',
+ 'jpe' => 'image/jpeg',
+ 'jpeg' => 'image/jpeg',
+ 'jpg' => 'image/jpeg',
+ 'gif' => 'image/gif',
+ 'bmp' => 'image/bmp',
+ 'ico' => 'image/vnd.microsoft.icon',
+ 'tiff' => 'image/tiff',
+ 'tif' => 'image/tiff',
+ 'svg' => 'image/svg+xml',
+ 'svgz' => 'image/svg+xml',
+
+ // archives
+ 'zip' => 'application/zip',
+ 'rar' => 'application/x-rar-compressed',
+ 'exe' => 'application/x-msdownload',
+ 'msi' => 'application/x-msdownload',
+ 'cab' => 'application/vnd.ms-cab-compressed',
+
+ // audio/video
+ 'mp3' => 'audio/mpeg',
+ 'wav' => 'audio/wav',
+ 'qt' => 'video/quicktime',
+ 'mov' => 'video/quicktime',
+ 'ogg' => 'application/ogg',
+
+ // adobe
+ 'pdf' => 'application/pdf',
+ 'psd' => 'image/vnd.adobe.photoshop',
+ 'ai' => 'application/postscript',
+ 'eps' => 'application/postscript',
+ 'ps' => 'application/postscript',
+
+ // ms office
+ 'doc' => 'application/msword',
+ 'rtf' => 'application/rtf',
+ 'xls' => 'application/vnd.ms-excel',
+ 'ppt' => 'application/vnd.ms-powerpoint',
+
+ // open office
+ 'odt' => 'application/vnd.oasis.opendocument.text',
+ 'ods' => 'application/vnd.oasis.opendocument.spreadsheet',
);
- $dot = strpos($filename,'.');
- if($dot !== false) {
- $ext = strtolower(substr($filename,$dot+1));
+ $dot = strpos($filename, '.');
+ if ($dot !== false) {
+ $ext = strtolower(substr($filename, $dot + 1));
if (array_key_exists($ext, $mime_types)) {
return $mime_types[$ext];
}
}
return 'application/octet-stream';
-
}
-
/**
* @brief Count files/attachments.
*
@@ -138,8 +135,8 @@ function attach_count_files($channel_id, $observer, $hash = '', $filename = '',
$ret['success'] = ((is_array($r)) ? true : false);
$ret['results'] = ((is_array($r)) ? count($r) : false);
- return $ret;
+ return $ret;
}
/**
@@ -190,8 +187,8 @@ function attach_list_files($channel_id, $observer, $hash = '', $filename = '', $
$ret['success'] = ((is_array($r)) ? true : false);
$ret['results'] = ((is_array($r)) ? $r : false);
- return $ret;
+ return $ret;
}
/**
@@ -246,8 +243,8 @@ function attach_by_hash($hash, $rev = 0) {
$ret['success'] = true;
$ret['data'] = $r[0];
- return $ret;
+ return $ret;
}
/**
@@ -301,7 +298,6 @@ function attach_by_hash_nodata($hash, $rev = 0) {
$ret['success'] = true;
$ret['data'] = $r[0];
return $ret;
-
}
/**
@@ -400,14 +396,15 @@ function attach_store($channel, $observer_hash, $options = '', $arr = null) {
if(! isset($hash))
$hash = random_string();
+
$created = datetime_convert();
if($options === 'replace') {
- $r = q("update attach set filename = '%s', filetype = '%s', filesize = %d, data = '%s', edited = '%s' where id = %d and uid = %d limit 1",
+ $r = q("update attach set filename = '%s', filetype = '%s', filesize = %d, data = '%s', edited = '%s' where id = %d and uid = %d",
dbesc($filename),
dbesc($mimetype),
intval($filesize),
- dbesc(@file_get_contents($src)),
+ dbescbin(@file_get_contents($src)),
dbesc($created),
intval($existing_id),
intval($channel_id)
@@ -424,7 +421,7 @@ function attach_store($channel, $observer_hash, $options = '', $arr = null) {
dbesc($mimetype),
intval($filesize),
intval($x[0]['revision'] + 1),
- dbesc(@file_get_contents($src)),
+ dbescbin(@file_get_contents($src)),
dbesc($created),
dbesc($created),
dbesc($x[0]['allow_cid']),
@@ -432,10 +429,10 @@ function attach_store($channel, $observer_hash, $options = '', $arr = null) {
dbesc($x[0]['deny_cid']),
dbesc($x[0]['deny_gid'])
);
- }
+ }
elseif($options === 'update') {
$r = q("update attach set filename = '%s', filetype = '%s', edited = '%s',
- allow_cid = '%s', allow_gid = '%s', deny_cid = '%s', deny_gid = '%s' where id = %d and uid = %d limit 1",
+ allow_cid = '%s', allow_gid = '%s', deny_cid = '%s', deny_gid = '%s' where id = %d and uid = %d",
dbesc((array_key_exists('filename',$arr)) ? $arr['filename'] : $x[0]['filename']),
dbesc((array_key_exists('filetype',$arr)) ? $arr['filetype'] : $x[0]['filetype']),
dbesc($created),
@@ -446,7 +443,7 @@ function attach_store($channel, $observer_hash, $options = '', $arr = null) {
intval($x[0]['id']),
intval($x[0]['uid'])
);
- }
+ }
else {
$r = q("INSERT INTO attach ( aid, uid, hash, creator, filename, filetype, filesize, revision, data, created, edited, allow_cid, allow_gid,deny_cid, deny_gid )
VALUES ( %d, %d, '%s', '%s', '%s', '%s', %d, %d, '%s', '%s', '%s', '%s', '%s', '%s', '%s' ) ",
@@ -458,7 +455,7 @@ function attach_store($channel, $observer_hash, $options = '', $arr = null) {
dbesc($mimetype),
intval($filesize),
intval(0),
- dbesc(@file_get_contents($src)),
+ dbescbin(@file_get_contents($src)),
dbesc($created),
dbesc($created),
dbesc(($arr && array_key_exists('allow_cid',$arr)) ? $arr['allow_cid'] : '<' . $channel['channel_hash'] . '>'),
@@ -466,7 +463,7 @@ function attach_store($channel, $observer_hash, $options = '', $arr = null) {
dbesc(($arr && array_key_exists('deny_cid',$arr)) ? $arr['deny_cid'] : ''),
dbesc(($arr && array_key_exists('deny_gid',$arr)) ? $arr['deny_gid'] : '')
);
- }
+ }
if($options !== 'update')
@unlink($src);
@@ -490,6 +487,7 @@ function attach_store($channel, $observer_hash, $options = '', $arr = null) {
$ret['success'] = true;
$ret['data'] = $r[0];
+
return $ret;
}
@@ -507,8 +505,8 @@ function attach_store($channel, $observer_hash, $options = '', $arr = null) {
* $ret['data'] = array of attach DB entries without data component
*/
function z_readdir($channel_id, $observer_hash, $pathname, $parent_hash = '') {
-
$ret = array('success' => false);
+
if(! perm_is_allowed($r[0]['uid'], get_observer_hash(), 'view_storage')) {
$ret['message'] = t('Permission denied.');
return $ret;
@@ -519,7 +517,7 @@ function z_readdir($channel_id, $observer_hash, $pathname, $parent_hash = '') {
if(count($paths) > 1) {
$curpath = array_shift($paths);
- $r = q("select hash, id from attach where uid = %d and filename = '%s' and (flags & %d ) " . permissions_sql($channel_id) . " limit 1",
+ $r = q("select hash, id from attach where uid = %d and filename = '%s' and (flags & %d )>0 " . permissions_sql($channel_id) . " limit 1",
intval($channel_id),
dbesc($curpath),
intval(ATTACH_FLAG_DIR)
@@ -535,7 +533,7 @@ function z_readdir($channel_id, $observer_hash, $pathname, $parent_hash = '') {
else
$paths = array($pathname);
- $r = q("select id, aid, uid, hash, creator, filename, filetype, filesize, revision, folder, flags, created, edited, allow_cid, allow_gid, deny_cid, deny_gid from attach where id = %d and folder = '%s' and filename = '%s' and (flags & %d ) " . permissions_sql($channel_id),
+ $r = q("select id, aid, uid, hash, creator, filename, filetype, filesize, revision, folder, flags, created, edited, allow_cid, allow_gid, deny_cid, deny_gid from attach where id = %d and folder = '%s' and filename = '%s' and (flags & %d )>0 " . permissions_sql($channel_id),
intval($channel_id),
dbesc($parent_hash),
dbesc($paths[0]),
@@ -547,6 +545,7 @@ function z_readdir($channel_id, $observer_hash, $pathname, $parent_hash = '') {
}
$ret['success'] = true;
$ret['data'] = $r;
+
return $ret;
}
@@ -568,6 +567,7 @@ function z_readdir($channel_id, $observer_hash, $pathname, $parent_hash = '') {
* $arr['deny_cid']
* $arr['deny_gid']
*/
+
function attach_mkdir($channel, $observer_hash, $arr = null) {
$ret = array('success' => false);
@@ -618,7 +618,7 @@ function attach_mkdir($channel, $observer_hash, $arr = null) {
$sql_options = permissions_sql($channel['channel_id']);
do {
- $r = q("select filename, hash, flags, folder from attach where uid = %d and hash = '%s' and ( flags & %d )
+ $r = q("select filename, hash, flags, folder from attach where uid = %d and hash = '%s' and ( flags & %d )>0
$sql_options limit 1",
intval($channel['channel_id']),
dbesc($lfile),
@@ -670,7 +670,7 @@ function attach_mkdir($channel, $observer_hash, $arr = null) {
$ret['data'] = $arr;
// update the parent folder's lastmodified timestamp
- $e = q("UPDATE attach SET edited = '%s' WHERE hash = '%s' AND uid = %d LIMIT 1",
+ $e = q("UPDATE attach SET edited = '%s' WHERE hash = '%s' AND uid = %d",
dbesc($created),
dbesc($arr['folder']),
intval($channel_id)
@@ -686,7 +686,6 @@ function attach_mkdir($channel, $observer_hash, $arr = null) {
}
return $ret;
-
}
/**
@@ -718,13 +717,13 @@ function attach_change_permissions($channel_id, $resource, $allow_cid, $allow_gi
);
if($r) {
foreach($r as $rr) {
- attach_change_permissions($channel_id, $resource, $allow_cid, $allow_gid, $deny_cid, $deny_gid, $recurse);
+ attach_change_permissions($channel_id, $rr['hash'], $allow_cid, $allow_gid, $deny_cid, $deny_gid, $recurse);
}
}
}
}
- $x = q("update attach set allow_cid = '%s', allow_gid = '%s', deny_cid = '%s', deny_gid = '%s' where hash = '%s' and uid = %d limit 1",
+ $x = q("update attach set allow_cid = '%s', allow_gid = '%s', deny_cid = '%s', deny_gid = '%s' where hash = '%s' and uid = %d",
dbesc($allow_cid),
dbesc($allow_gid),
dbesc($deny_cid),
@@ -732,15 +731,19 @@ function attach_change_permissions($channel_id, $resource, $allow_cid, $allow_gi
dbesc($resource),
intval($channel_id)
);
-
- return;
}
/**
- * @brief Delete a file/directory.
- *
+ * @brief Delete a file/directory from a channel.
+ *
+ * If the provided resource hash is from a directory it will delete everything
+ * recursively under this directory.
+ *
* @param int $channel_id
- * @param string $resource a hash to delete
+ * The id of the channel
+ * @param string $resource
+ * The hash to delete
+ * @return void
*/
function attach_delete($channel_id, $resource) {
@@ -760,7 +763,7 @@ function attach_delete($channel_id, $resource) {
// If resource is a directory delete everything in the directory recursive
if($r[0]['flags'] & ATTACH_FLAG_DIR) {
- $x = q("select hash, flags from attach where folder = '%s' and uid = %d",
+ $x = q("SELECT hash, flags FROM attach WHERE folder = '%s' AND uid = %d",
dbesc($resource),
intval($channel_id)
);
@@ -788,30 +791,32 @@ function attach_delete($channel_id, $resource) {
}
// delete from database
- $z = q("DELETE FROM attach WHERE hash = '%s' AND uid = %d LIMIT 1",
+ $z = q("DELETE FROM attach WHERE hash = '%s' AND uid = %d",
dbesc($resource),
intval($channel_id)
);
// update the parent folder's lastmodified timestamp
- $e = q("UPDATE attach SET edited = '%s' WHERE hash = '%s' AND uid = %d LIMIT 1",
+ $e = q("UPDATE attach SET edited = '%s' WHERE hash = '%s' AND uid = %d",
dbesc(datetime_convert()),
dbesc($r[0]['folder']),
intval($channel_id)
);
-
- return;
}
/**
* @brief Returns path to file in cloud/.
*
- * @param $arr
- * @return string with the path the file to cloud/
+ * @param array
+ * $arr[uid] int the channels uid
+ * $arr[folder] string
+ * $arr[filename]] string
+ * @return string
+ * path to the file in cloud/
*/
function get_cloudpath($arr) {
-
$basepath = 'cloud/';
+
if($arr['uid']) {
$r = q("select channel_address from channel where channel_id = %d limit 1",
intval($arr['uid'])
@@ -823,12 +828,11 @@ function get_cloudpath($arr) {
$path = $basepath;
if($arr['folder']) {
-
$lpath = '';
$lfile = $arr['folder'];
do {
- $r = q("select filename, hash, flags, folder from attach where uid = %d and hash = '%s' and ( flags & %d )
+ $r = q("select filename, hash, flags, folder from attach where uid = %d and hash = '%s' and ( flags & %d )>0
limit 1",
intval($arr['uid']),
dbesc($lfile),
@@ -842,60 +846,83 @@ function get_cloudpath($arr) {
$lpath = $r[0]['filename'] . '/' . $lpath;
$lfile = $r[0]['folder'];
- } while ( ($r[0]['folder']) && ($r[0]['flags'] & ATTACH_FLAG_DIR)) ;
+ } while ( ($r[0]['folder']) && ($r[0]['flags'] & ATTACH_FLAG_DIR));
- $path .= $lpath;
+ $path .= $lpath;
}
-
$path .= $arr['filename'];
+
return $path;
}
/**
* @brief Returns path to parent folder in cloud/.
- *
- * @param $arr
- * @return string with the folder path
+ *
+ * @param int $channel_id
+ * The id of the channel
+ * @param string $channel_name
+ * The name of the channel
+ * @param string $attachHash
+ * @return string with the full folder path
*/
function get_parent_cloudpath($channel_id, $channel_name, $attachHash) {
- //Build directory tree and redirect
+ // build directory tree
$parentHash = $attachHash;
do {
$parentHash = find_folder_hash_by_attach_hash($channel_id, $parentHash);
if ($parentHash) {
$parentName = find_filename_by_hash($channel_id, $parentHash);
- $parentFullPath = $parentName."/".$parentFullPath;
+ $parentFullPath = $parentName . '/' . $parentFullPath;
}
} while ($parentHash);
- $parentFullPath = z_root() . "/cloud/" . $channel_name . "/" . $parentFullPath;
+ $parentFullPath = z_root() . '/cloud/' . $channel_name . '/' . $parentFullPath;
+
return $parentFullPath;
}
+
+/**
+ * @brief Return the hash of an attachment's folder.
+ *
+ * @param int $channel_id
+ * The id of the channel
+ * @param string $attachHash
+ * The hash of the attachment
+ * @return string
+ */
function find_folder_hash_by_attach_hash($channel_id, $attachHash) {
- $r = q("select * from attach where uid = %d and hash = '%s' limit 1",
- intval($channel_id), dbesc($attachHash)
+ $r = q("SELECT folder FROM attach WHERE uid = %d AND hash = '%s' LIMIT 1",
+ intval($channel_id),
+ dbesc($attachHash)
);
- $hash = "";
- if($r) {
- foreach($r as $rr) {
- $hash = $rr['folder'];
- }
+ $hash = '';
+ if ($r) {
+ $hash = $r[0]['folder'];
}
- return $hash;
+ return $hash;
}
+
+/**
+ * @brief Returns the filename of an attachment in a given channel.
+ *
+ * @param mixed $channel_id
+ * The id of the channel
+ * @param mixed $attachHash
+ * The hash of the attachment
+ * @return string
+ * The filename of the attachment
+ */
function find_filename_by_hash($channel_id, $attachHash) {
- $r = q("select * from attach where uid = %d and hash = '%s' limit 1",
- intval($channel_id), dbesc($attachHash)
+ $r = q("SELECT filename FROM attach WHERE uid = %d AND hash = '%s' LIMIT 1",
+ intval($channel_id),
+ dbesc($attachHash)
);
- $filename = "";
- if($r) {
- foreach($r as $rr) {
- $filename = $rr['filename'];
- }
+ $filename = '';
+ if ($r) {
+ $filename = $r[0]['filename'];
}
- return $filename;
+ return $filename;
}
-
/**
*
* @param $in
@@ -904,6 +931,6 @@ function find_filename_by_hash($channel_id, $attachHash) {
function pipe_streams($in, $out) {
$size = 0;
while (!feof($in))
- $size += fwrite($out, fread($in,8192));
+ $size += fwrite($out, fread($in, 8192));
return $size;
}
diff --git a/include/auth.php b/include/auth.php
index 8e02b7b4f..c4bbaf546 100644
--- a/include/auth.php
+++ b/include/auth.php
@@ -1,11 +1,23 @@
-<?php /** @file */
-
+<?php
+/**
+ * @file include/auth.php
+ * @brief Functions and inline functionality for authentication.
+ *
+ * This file provides some functions for authentication handling and inline
+ * functionality. Look for auth parameters or re-validate an existing session
+ * also handles logout.
+ * Also provides a function for OpenID identiy matching.
+ */
require_once('include/security.php');
+/**
+ * @brief Resets the current session.
+ *
+ * @return void
+ */
function nuke_session() {
-
- new_cookie(0);
+ new_cookie(0); // 0 means delete on browser exit
unset($_SESSION['authenticated']);
unset($_SESSION['account_id']);
@@ -27,21 +39,27 @@ function nuke_session() {
}
/**
- * Verify login credentials
+ * @brief Verify login credentials.
*
- * Returns account record on success, null on failure
+ * If system <i>authlog</i> is set a log entry will be added for failed login
+ * attempts.
*
+ * @param string $email
+ * The email address to verify.
+ * @param string $pass
+ * The provided password to verify.
+ * @return array|null
+ * Returns account record on success, null on failure.
*/
+function account_verify_password($email, $pass) {
-function account_verify_password($email,$pass) {
-
- $email_verify = get_config('system','verify_email');
- $register_policy = get_config('system','register_policy');
+ $email_verify = get_config('system', 'verify_email');
+ $register_policy = get_config('system', 'register_policy');
// Currently we only verify email address if there is an open registration policy.
// This isn't because of any policy - it's because the workflow gets too complicated if
// you have to verify the email and then go through the account approval workflow before
- // letting them login.
+ // letting them login.
if(($email_verify) && ($register_policy == REGISTER_OPEN) && ($record['account_flags'] & ACCOUNT_UNVERIFIED))
return null;
@@ -51,23 +69,47 @@ function account_verify_password($email,$pass) {
);
if(! ($r && count($r)))
return null;
+
foreach($r as $record) {
if(($record['account_flags'] == ACCOUNT_OK)
- && (hash('whirlpool',$record['account_salt'] . $pass) === $record['account_password'])) {
+ && (hash('whirlpool', $record['account_salt'] . $pass) === $record['account_password'])) {
logger('password verified for ' . $email);
return $record;
}
}
$error = 'password failed for ' . $email;
logger($error);
- // Also log failed logins to a separate auth log to reduce overhead for server side intrusion prevention
- $authlog = get_config('system', 'authlog');
- if ($authlog)
- @file_put_contents($authlog, datetime_convert() . ':' . session_id() . ' ' . $error . "\n", FILE_APPEND);
+
+ if($record['account_flags'] & ACCOUNT_UNVERIFIED)
+ logger('Account is unverified. account_flags = ' . $record['account_flags']);
+ if($record['account_flags'] & ACCOUNT_BLOCKED)
+ logger('Account is blocked. account_flags = ' . $record['account_flags']);
+ if($record['account_flags'] & ACCOUNT_EXPIRED)
+ logger('Account is expired. account_flags = ' . $record['account_flags']);
+ if($record['account_flags'] & ACCOUNT_REMOVED)
+ logger('Account is removed. account_flags = ' . $record['account_flags']);
+ if($record['account_flags'] & ACCOUNT_PENDING)
+ logger('Account is pending. account_flags = ' . $record['account_flags']);
+
+ log_failed_login($error);
return null;
}
+/**
+ * @brief Log failed logins to a separate auth log.
+ *
+ * Can be used to reduce overhead for server side intrusion prevention, like
+ * parse the authlog file with something like fail2ban, OSSEC, etc.
+ *
+ * @param string $errormsg
+ * Error message to display for failed login.
+ */
+function log_failed_login($errormsg) {
+ $authlog = get_config('system', 'authlog');
+ if ($authlog)
+ @file_put_contents($authlog, datetime_convert() . ':' . session_id() . ' ' . $errormsg . PHP_EOL, FILE_APPEND);
+}
/**
* Inline - not a function
@@ -75,14 +117,12 @@ function account_verify_password($email,$pass) {
* also handles logout
*/
-
-if((isset($_SESSION)) && (x($_SESSION,'authenticated')) && ((! (x($_POST,'auth-params'))) || ($_POST['auth-params'] !== 'login'))) {
-
+if((isset($_SESSION)) && (x($_SESSION, 'authenticated')) &&
+ ((! (x($_POST, 'auth-params'))) || ($_POST['auth-params'] !== 'login'))) {
// process a logout request
- if(((x($_POST,'auth-params')) && ($_POST['auth-params'] === 'logout')) || ($a->module === 'logout')) {
-
+ if(((x($_POST, 'auth-params')) && ($_POST['auth-params'] === 'logout')) || ($a->module === 'logout')) {
// process logout request
$args = array('channel_id' => local_user());
call_hooks('logging_out', $args);
@@ -93,16 +133,16 @@ if((isset($_SESSION)) && (x($_SESSION,'authenticated')) && ((! (x($_POST,'auth-p
// re-validate a visitor, optionally invoke "su" if permitted to do so
- if(x($_SESSION,'visitor_id') && (! x($_SESSION,'uid'))) {
+ if(x($_SESSION, 'visitor_id') && (! x($_SESSION, 'uid'))) {
// if our authenticated guest is allowed to take control of the admin channel, make it so.
- $admins = get_config('system','remote_admin');
- if($admins && is_array($admins) && in_array($_SESSION['visitor_id'],$admins)) {
- $x = q("select * from account where account_email = '%s' and account_email != '' and ( account_flags & %d ) limit 1",
- dbesc(get_config('system','admin_email')),
+ $admins = get_config('system', 'remote_admin');
+ if($admins && is_array($admins) && in_array($_SESSION['visitor_id'], $admins)) {
+ $x = q("select * from account where account_email = '%s' and account_email != '' and ( account_flags & %d )>0 limit 1",
+ dbesc(get_config('system', 'admin_email')),
intval(ACCOUNT_ROLE_ADMIN)
);
if($x) {
- new_cookie(60*60*24); // one day
+ new_cookie(60 * 60 * 24); // one day
$_SESSION['last_login_date'] = datetime_convert();
unset($_SESSION['visitor_id']); // no longer a visitor
authenticate_success($x[0], true, true);
@@ -124,17 +164,42 @@ if((isset($_SESSION)) && (x($_SESSION,'authenticated')) && ((! (x($_POST,'auth-p
// already logged in user returning
- if(x($_SESSION,'uid') || x($_SESSION,'account_id')) {
+ if(x($_SESSION, 'uid') || x($_SESSION, 'account_id')) {
// first check if we're enforcing that sessions can't change IP address
-
- if($_SESSION['addr'] != $_SERVER['REMOTE_ADDR']) {
+ // @todo what to do with IPv6 addresses
+ if($_SESSION['addr'] && $_SESSION['addr'] != $_SERVER['REMOTE_ADDR']) {
logger('SECURITY: Session IP address changed: ' . $_SESSION['addr'] . ' != ' . $_SERVER['REMOTE_ADDR']);
- if(get_config('system','paranoia')) {
- logger('Session address changed. Paranoid setting in effect, blocking session. '
+
+ $partial1 = substr($_SESSION['addr'], 0, strrpos($_SESSION['addr'], '.'));
+ $partial2 = substr($_SERVER['REMOTE_ADDR'], 0, strrpos($_SERVER['REMOTE_ADDR'], '.'));
+
+ $paranoia = intval(get_pconfig($_SESSION['uid'], 'system', 'paranoia'));
+ if(! $paranoia)
+ $paranoia = intval(get_config('system', 'paranoia'));
+
+ switch($paranoia) {
+ case 0:
+ // no IP checking
+ break;
+ case 2:
+ // check 2 octets
+ $partial1 = substr($partial1, 0, strrpos($partial1, '.'));
+ $partial2 = substr($partial2, 0, strrpos($partial2, '.'));
+ if($partial1 == $partial2)
+ break;
+ case 1:
+ // check 3 octets
+ if($partial1 == $partial2)
+ break;
+ case 3:
+ default:
+ // check any difference at all
+ logger('Session address changed. Paranoid setting in effect, blocking session. '
. $_SESSION['addr'] . ' != ' . $_SERVER['REMOTE_ADDR']);
- nuke_session();
- goaway(z_root());
+ nuke_session();
+ goaway(z_root());
+ break;
}
}
@@ -151,17 +216,15 @@ if((isset($_SESSION)) && (x($_SESSION,'authenticated')) && ((! (x($_POST,'auth-p
if(strcmp(datetime_convert('UTC','UTC','now - 12 hours'), $_SESSION['last_login_date']) > 0 ) {
$_SESSION['last_login_date'] = datetime_convert();
$login_refresh = true;
- }
- authenticate_success($r[0], false, false, false, $login_refresh);
+ }
+ authenticate_success($r[0], false, false, false, $login_refresh);
}
else {
$_SESSION['account_id'] = 0;
nuke_session();
goaway(z_root());
}
-
- }
-
+ } // end logged in user returning
}
else {
@@ -171,10 +234,10 @@ else {
// handle a fresh login request
- if((x($_POST,'password')) && strlen($_POST['password']))
- $encrypted = hash('whirlpool',trim($_POST['password']));
+ if((x($_POST, 'password')) && strlen($_POST['password']))
+ $encrypted = hash('whirlpool', trim($_POST['password']));
- if((x($_POST,'auth-params')) && $_POST['auth-params'] === 'login') {
+ if((x($_POST, 'auth-params')) && $_POST['auth-params'] === 'login') {
$record = null;
@@ -199,8 +262,7 @@ else {
$record = $addon_auth['user_record'];
}
else {
-
- $record = get_app()->account = account_verify_password($_POST['username'],$_POST['password']);
+ $record = get_app()->account = account_verify_password($_POST['username'], $_POST['password']);
if(get_app()->account) {
$_SESSION['account_id'] = get_app()->account['account_id'];
@@ -209,21 +271,20 @@ else {
notice( t('Failed authentication') . EOL);
}
- logger('authenticate: ' . print_r(get_app()->account,true), LOGGER_DEBUG);
-
+ logger('authenticate: ' . print_r(get_app()->account, true), LOGGER_DEBUG);
}
if((! $record) || (! count($record))) {
$error = 'authenticate: failed login attempt: ' . notags(trim($_POST['username'])) . ' from IP ' . $_SERVER['REMOTE_ADDR'];
logger($error);
// Also log failed logins to a separate auth log to reduce overhead for server side intrusion prevention
- $authlog = get_config('system', 'authlog');
- if ($authlog)
- @file_put_contents($authlog, datetime_convert() . ':' . session_id() . ' ' . $error . "\n", FILE_APPEND);
+ $authlog = get_config('system', 'authlog');
+ if ($authlog)
+ @file_put_contents($authlog, datetime_convert() . ':' . session_id() . ' ' . $error . "\n", FILE_APPEND);
notice( t('Login failed.') . EOL );
- goaway(z_root());
- }
+ goaway(z_root() . '/login');
+ }
// If the user specified to remember the authentication, then change the cookie
// to expire after one year (the default is when the browser is closed).
@@ -253,11 +314,25 @@ else {
}
+/**
+ * @brief Returns the channel_id for a given openid_identity.
+ *
+ * Queries the values from pconfig configuration for the given openid_identity
+ * and returns the corresponding channel_id.
+ *
+ * @fixme How do we prevent that an OpenID identity is used more than once?
+ *
+ * @param string $authid
+ * The given openid_identity
+ * @return int|bool
+ * Return channel_id from pconfig or false.
+ */
function match_openid($authid) {
- $r = q("select * from pconfig where cat = 'system' and k = 'openid' and v = '%s' limit 1",
+ // Query the uid/channel_id from pconfig for a given value.
+ $r = q("SELECT uid FROM pconfig WHERE cat = 'system' AND k = 'openid' AND v = '%s' LIMIT 1",
dbesc($authid)
);
if($r)
return $r[0]['uid'];
return false;
-}
+}
diff --git a/include/bb2diaspora.php b/include/bb2diaspora.php
index f15a34e99..5c93ac3aa 100644
--- a/include/bb2diaspora.php
+++ b/include/bb2diaspora.php
@@ -77,6 +77,36 @@ function share_unshield($m) {
}
+function diaspora_mention_callback($matches) {
+
+ $webbie = $matches[2] . '@' . $matches[3];
+ $link = '';
+ if($webbie) {
+ $r = q("select * from hubloc left join xchan on hubloc_hash = xchan_hash where hubloc_addr = '%s' limit 1",
+ dbesc($webbie)
+ );
+ if(! $r) {
+ $x = discover_by_webbie($webbie);
+ if($x) {
+ $r = q("select * from hubloc left join xchan on hubloc_hash = xchan_hash where hubloc_addr = '%s' limit 1",
+ dbesc($webbie)
+ );
+ }
+ }
+ if($r)
+ $link = $r[0]['xchan_url'];
+ }
+ if(! $link)
+ $link = 'https://' . $matches[3] . '/u/' . $matches[2];
+
+ if($r && $r[0]['hubloc_network'] === 'zot')
+ return '@[zrl=' . $link . ']' . trim($matches[1]) . ((substr($matches[0],-1,1) === '+') ? '+' : '') . '[/zrl]' ;
+ else
+ return '@[url=' . $link . ']' . trim($matches[1]) . ((substr($matches[0],-1,1) === '+') ? '+' : '') . '[/url]' ;
+
+}
+
+
// we don't want to support a bbcode specific markdown interpreter
// and the markdown library we have is pretty good, but provides HTML output.
@@ -86,34 +116,29 @@ function share_unshield($m) {
function diaspora2bb($s,$use_zrl = false) {
+ $s = str_replace("&#xD;","\r",$s);
+ $s = str_replace("&#xD;\n&gt;","",$s);
+
$s = html_entity_decode($s,ENT_COMPAT,'UTF-8');
- // Too many new lines. So deactivated the following line
- // $s = str_replace("\r","\n",$s);
- // Simply remove cr.
- $s = str_replace("\r","",$s);
+ // first try plustags
- // <br/> is invalid. Replace it with the valid expression
- $s = str_replace("<br/>","<br />",$s);
- $s = str_replace("\n","<br />",$s);
+ $s = preg_replace_callback('/\@\{(.+?)\; (.+?)\@(.+?)\}\+/','diaspora_mention_callback',$s);
- $s = preg_replace('/\@\{(.+?)\; (.+?)\@(.+?)\}/','@[url=https://$3/u/$2]$1[/url]',$s);
+ $s = preg_replace_callback('/\@\{(.+?)\; (.+?)\@(.+?)\}/','diaspora_mention_callback',$s);
// Escaping the hash tags - doesn't always seem to work
// $s = preg_replace('/\#([^\s\#])/','\\#$1',$s);
// This seems to work
$s = preg_replace('/\#([^\s\#])/','&#35;$1',$s);
- $s = preg_replace_callback('/\[share(.*?)\]/ism','share_shield',$s);
-
$s = Markdown($s);
+ $s = str_replace("\r","",$s);
+
$s = str_replace('&#35;','#',$s);
-// we seem to have double linebreaks
-// $s = str_replace("\n",'<br />',$s);
$s = html2bbcode($s);
-// $s = str_replace('&#42;','*',$s);
// protect the recycle symbol from turning into a tag, but without unescaping angles and naked ampersands
$s = str_replace('&#x2672;',html_entity_decode('&#x2672;',ENT_QUOTES,'UTF-8'),$s);
@@ -136,10 +161,6 @@ function diaspora2bb($s,$use_zrl = false) {
// remove duplicate adjacent code tags
$s = preg_replace("/(\[code\])+(.*?)(\[\/code\])+/ism","[code]$2[/code]", $s);
-
- $s = preg_replace_callback('/\[share(.*?)\]/ism','share_unshield',$s);
-
-
// Don't show link to full picture (until it is fixed)
$s = scale_external_images($s, false);
@@ -211,236 +232,197 @@ function diaspora_ol($s) {
return preg_replace("/\[\\\\\*\]( *)/", "1. ", $s[1]);
}
+function bb2dmention_callback($match) {
-function bb2diaspora($Text,$preserve_nl = false, $fordiaspora = true) {
-
- // Re-enabling the converter again.
- // The bbcode parser now handles youtube-links (and the other stuff) correctly.
- // Additionally the html code is now fixed so that lists are now working.
-
- /**
- * Transform #tags, strip off the [url] and replace spaces with underscore
- */
- $Text = preg_replace_callback('/#\[url\=(\w+.*?)\](\w+.*?)\[\/url\]/i', create_function('$match',
- 'return \'#\'. str_replace(\' \', \'_\', $match[2]);'
- ), $Text);
-
-
- // Converting images with size parameters to simple images. Markdown doesn't know it.
- $Text = preg_replace("/\[img\=([0-9]*)x([0-9]*)\](.*?)\[\/img\]/ism", '[img]$3[/img]', $Text);
-
- // the following was added on 10-January-2012 due to an inability of Diaspora's
- // new javascript markdown processor to handle links with images as the link "text"
- // It is not optimal and may be removed if this ability is restored in the future
- //if ($fordiaspora)
- // $Text = preg_replace("/\[url\=([^\[\]]*)\]\s*\[img\](.*?)\[\/img\]\s*\[\/url\]/ism",
- // "[url]$1[/url]\n[img]$2[/img]", $Text);
-
- // Convert it to HTML - don't try oembed
- $Text = bbcode($Text, $preserve_nl, false);
-
- // Now convert HTML to Markdown
- $md = new Markdownify(false, false, false);
- $Text = $md->parseString($Text);
-
- // If the text going into bbcode() has a plain URL in it, i.e.
- // with no [url] tags around it, it will come out of parseString()
- // looking like: <http://url.com>, which gets removed by strip_tags().
- // So take off the angle brackets of any such URL
- $Text = preg_replace("/<http(.*?)>/is", "http$1", $Text);
-
- // Remove all unconverted tags
- $Text = strip_tags($Text);
-
-
-/* Old routine
-
- $ev = bbtoevent($Text);
-
- // Replace any html brackets with HTML Entities to prevent executing HTML or script
- // Don't use strip_tags here because it breaks [url] search by replacing & with amp
-
- $Text = str_replace("<", "&lt;", $Text);
- $Text = str_replace(">", "&gt;", $Text);
-
- // If we find any event code, turn it into an event.
- // After we're finished processing the bbcode we'll
- // replace all of the event code with a reformatted version.
-
- if($preserve_nl)
- $Text = str_replace(array("\n","\r"), array('',''),$Text);
- else
- // Remove the "return" character, as Diaspora uses only the "newline"
- // character, so having the "return" character can cause signature
- // failures
- $Text = str_replace("\r", "", $Text);
-
+ $r = q("select xchan_addr from xchan where xchan_url = '%s'",
+ dbesc($match[2])
+ );
- // Set up the parameters for a URL search string
- $URLSearchString = "^\[\]";
- // Set up the parameters for a MAIL search string
- $MAILSearchString = $URLSearchString;
+ if($r)
+ return '@{' . $match[3] . ' ; ' . $r[0]['xchan_addr'] . '}';
+ return '@' . $match[3];
- // Perform URL Search
-
- // [img]pathtoimage[/img]
-
- // the following was added on 10-January-2012 due to an inability of Diaspora's
- // new javascript markdown processor to handle links with images as the link "text"
- // It is not optimal and may be removed if this ability is restored in the future
-
- $Text = preg_replace("/\[url\=([$URLSearchString]*)\]\[img\](.*?)\[\/img\]\[\/url\]/ism",
- '![' . t('image/photo') . '](' . '$2' . ')' . "\n" . '[' . t('link') . '](' . '$1' . ')', $Text);
-
- $Text = preg_replace("/\[bookmark\]([$URLSearchString]*)\[\/bookmark\]/ism", '[$1]($1)', $Text);
- $Text = preg_replace("/\[bookmark\=([$URLSearchString]*)\](.*?)\[\/bookmark\]/ism", '[$2]($1)', $Text);
-
- $Text = preg_replace("/\[url\]([$URLSearchString]*)\[\/url\]/ism", '[$1]($1)', $Text);
- $Text = preg_replace("/\#\[url\=([$URLSearchString]*)\](.*?)\[\/url\]/ism", '[#$2]($1)', $Text);
- $Text = preg_replace("/\[url\=([$URLSearchString]*)\](.*?)\[\/url\]/ism", '[$2]($1)', $Text);
-
-
- $Text = preg_replace("/\[img\](.*?)\[\/img\]/", '![' . t('image/photo') . '](' . '$1' . ')', $Text);
- $Text = preg_replace("/\[img\=(.*?)\](.*?)\[\/img\]/", '![' . t('image/photo') . '](' . '$2' . ')', $Text);
-
- $Text = preg_replace("/\[zrl\]([$URLSearchString]*)\[\/zrl\]/ism", '[$1]($1)', $Text);
- $Text = preg_replace("/\#\[zrl\=([$URLSearchString]*)\](.*?)\[\/zrl\]/ism", '[#$2]($1)', $Text);
- $Text = preg_replace("/\[zrl\=([$URLSearchString]*)\](.*?)\[\/zrl\]/ism", '[$2]($1)', $Text);
-
-
- $Text = preg_replace("/\[zmg\](.*?)\[\/zmg\]/", '![' . t('image/photo') . '](' . '$1' . ')', $Text);
- $Text = preg_replace("/\[zmg\=(.*?)\](.*?)\[\/zmg\]/", '![' . t('image/photo') . '](' . '$2' . ')', $Text);
-
- // Perform MAIL Search
- $Text = preg_replace("(\[mail\]([$MAILSearchString]*)\[/mail\])", '[$1](mailto:$1)', $Text);
- $Text = preg_replace("/\[mail\=([$MAILSearchString]*)\](.*?)\[\/mail\]/", '[$2](mailto:$1)', $Text);
-
- $Text = str_replace('*', '\\*', $Text);
- $Text = str_replace('_', '\\_', $Text);
-
- $Text = str_replace('`','\\`', $Text);
-
- // Check for bold text
- $Text = preg_replace("(\[b\](.*?)\[\/b\])is",'**$1**',$Text);
-
- // Check for italics text
- $Text = preg_replace("(\[i\](.*?)\[\/i\])is",'_$1_',$Text);
-
- // Check for underline text
- // Replace with italics since Diaspora doesn't have underline
- $Text = preg_replace("(\[u\](.*?)\[\/u\])is",'_$1_',$Text);
-
- // Check for strike-through text
- $Text = preg_replace("(\[s\](.*?)\[\/s\])is",'**[strike]**$1**[/strike]**',$Text);
+}
- // Check for over-line text
-// $Text = preg_replace("(\[o\](.*?)\[\/o\])is",'<span class="overline">$1</span>',$Text);
- // Check for colored text
- // Remove color since Diaspora doesn't support it
- $Text = preg_replace("(\[color=(.*?)\](.*?)\[\/color\])is","$2",$Text);
+function bb2diaspora_itemwallwall(&$item) {
- // Check for sized text
- // Remove it since Diaspora doesn't support sizes very well
- $Text = preg_replace("(\[size=(.*?)\](.*?)\[\/size\])is","$2",$Text);
+ $author_exists = true;
+ if(! array_key_exists('author',$item)) {
+ $author_exists = false;
+ logger('bb2diaspora_itemwallwall: no author');
+ $r = q("select * from xchan where xchan_hash = '%s' limit 1",
+ dbesc($item['author_xchan'])
+ );
+ if($r)
+ $item['author'] = $r[0];
+ }
- // Check for list text
- $endlessloop = 0;
- while ((((strpos($Text, "[/list]") !== false) && (strpos($Text, "[list") !== false)) ||
- ((strpos($Text, "[/ol]") !== false) && (strpos($Text, "[ol]") !== false)) ||
- ((strpos($Text, "[/ul]") !== false) && (strpos($Text, "[ul]") !== false)) ||
- ((strpos($Text, "[/li]") !== false) && (strpos($Text, "[li]") !== false))) && (++$endlessloop < 20)) {
- $Text = preg_replace_callback("/\[list\](.*?)\[\/list\]/is", 'diaspora_ul', $Text);
- $Text = preg_replace_callback("/\[list=1\](.*?)\[\/list\]/is", 'diaspora_ol', $Text);
- $Text = preg_replace_callback("/\[list=i\](.*?)\[\/list\]/s",'diaspora_ol', $Text);
- $Text = preg_replace_callback("/\[list=I\](.*?)\[\/list\]/s", 'diaspora_ol', $Text);
- $Text = preg_replace_callback("/\[list=a\](.*?)\[\/list\]/s", 'diaspora_ol', $Text);
- $Text = preg_replace_callback("/\[list=A\](.*?)\[\/list\]/s", 'diaspora_ol', $Text);
- $Text = preg_replace_callback("/\[ul\](.*?)\[\/ul\]/is", 'diaspora_ul', $Text);
- $Text = preg_replace_callback("/\[ol\](.*?)\[\/ol\]/is", 'diaspora_ol', $Text);
- $Text = preg_replace("/\[li\]( *)(.*?)\[\/li\]/s", '* $2' ,$Text);
+ if(($item['mid'] == $item['parent_mid']) && ($item['author_xchan'] != $item['owner_xchan']) && (is_array($item['author']))) {
+ logger('bb2diaspora_itemwallwall: author: ' . print_r($item['author'],true), LOGGER_DATA);
}
- // Just get rid of table tags since Diaspora doesn't support tables
- $Text = preg_replace("/\[th\](.*?)\[\/th\]/s", '$1' ,$Text);
- $Text = preg_replace("/\[td\](.*?)\[\/td\]/s", '$1' ,$Text);
- $Text = preg_replace("/\[tr\](.*?)\[\/tr\]/s", '$1' ,$Text);
- $Text = preg_replace("/\[table\](.*?)\[\/table\]/s", '$1' ,$Text);
+ if(($item['mid'] == $item['parent_mid']) && ($item['author_xchan'] != $item['owner_xchan']) && (is_array($item['author'])) && $item['author']['xchan_url'] && $item['author']['xchan_name'] && $item['author']['xchan_photo_m']) {
+ logger('bb2diaspora_itemwallwall: wall to wall post',LOGGER_DEBUG);
+ // post will come across with the owner's identity. Throw a preamble onto the post to indicate the true author.
+ $item['body'] = "\n\n"
+ . '[img]' . $item['author']['xchan_photo_m'] . '[/img]'
+ . '[url=' . $item['author']['xchan_url'] . ']' . $item['author']['xchan_name'] . '[/url]' . "\n\n"
+ . $item['body'];
+ }
- $Text = preg_replace("/\[table border=(.*?)\](.*?)\[\/table\]/s", '$2' ,$Text);
-// $Text = preg_replace("/\[table border=0\](.*?)\[\/table\]/s", '<table border="0" >$1</table>' ,$Text);
+ // We have to do something similar for wall-to-wall comments. ITEM_WALL|ITEM_ORIGIN indicates that it was posted on this site.
+ // Regular matrix comments may have one of these bits set, but not both.
+ // Update: this is getting triggered way too often and unnecessarily. Commenting out until we find a better solution.
+ // It's not an easy problem. For now we'll live with the mis-attributions, as wall to wall comments are much less frequent
+ // than wall-to-wall posts.
-// $Text = str_replace("[*]", "<li>", $Text);
+// if(($item['mid'] != $item['parent_mid']) && ($item['author_xchan'] != $item['owner_xchan']) && (($item['item_flags'] & (ITEM_WALL|ITEM_ORIGIN)) == (ITEM_WALL|ITEM_ORIGIN)) && (is_array($item['author'])) && $item['author']['xchan_url'] && $item['author']['xchan_name'] && $item['author']['xchan_photo_m']) {
+// logger('bb2diaspora_itemwallwall: wall to wall comment',LOGGER_DEBUG);
+ // post will come across with the owner's identity. Throw a preamble onto the post to indicate the true author.
+// $item['body'] = "\n\n"
+// . '[img]' . $item['author']['xchan_photo_m'] . '[/img]'
+// . '[url=' . $item['author']['xchan_url'] . ']' . $item['author']['xchan_name'] . '[/url]' . "\n\n"
+// . $item['body'];
+// }
- // Check for font change text
-// $Text = preg_replace("(\[font=(.*?)\](.*?)\[\/font\])","<span style=\"font-family: $1;\">$2</span>",$Text);
+ // $item['author'] might cause a surprise further down the line if it wasn't expected to be here.
+
+ if(! $author_exists)
+ $unset($item['author']);
+}
- $Text = preg_replace_callback("/\[code\](.*?)\[\/code\]/is",'stripdcode_br_cb',$Text);
- // Check for [code] text
- $Text = preg_replace("/(\[code\])+(.*?)(\[\/code\])+/is","\t$2\n", $Text);
+function bb2diaspora_itembody($item,$force_update = false) {
+
+ if(($item['diaspora_meta']) && (! $force_update)) {
+ $diaspora_meta = json_decode($item['diaspora_meta'],true);
+ if($diaspora_meta) {
+ if(array_key_exists('iv',$diaspora_meta)) {
+ $key = get_config('system','prvkey');
+ $meta = json_decode(crypto_unencapsulate($diaspora_meta,$key),true);
+ }
+ else {
+ $meta = $diaspora_meta;
+ }
+ if($meta) {
+ logger('bb2diaspora_itembody: cached ');
+ $newitem = $item;
+ $newitem['body'] = $meta['body'];
+// this won't work - the post is now in markdown
+// bb2diaspora_itemwallwall($newitem);
+ return $newitem['body'];
+ }
+ }
+ }
+ $newitem = $item;
+
+ if(array_key_exists('item_flags',$item) && ($item['item_flags'] & ITEM_OBSCURED)) {
+ $key = get_config('system','prvkey');
+ $b = json_decode($item['body'],true);
+ // if called from diaspora_process_outbound, this decoding has already been done.
+ // Everything else that calls us will not yet be decoded.
+ if($b && is_array($b) && array_key_exists('iv',$b)) {
+ $newitem['title'] = (($item['title']) ? crypto_unencapsulate(json_decode($item['title'],true),$key) : '');
+ $newitem['body'] = (($item['body']) ? crypto_unencapsulate(json_decode($item['body'],true),$key) : '');
+ }
+ }
+ bb2diaspora_itemwallwall($newitem);
+ $body = preg_replace('/\#\^http/i', 'http', $newitem['body']);
- // Declare the format for [quote] layout
- // $QuoteLayout = '<blockquote>$1</blockquote>';
- // Check for [quote] text
- $Text = preg_replace("/\[quote\](.*?)\[\/quote\]/is",">$1\n\n", $Text);
- $Text = preg_replace("/\[quote=(.*?)\](.*?)\[\/quote\]/is",">$2\n\n", $Text);
+ // protect tags and mentions from hijacking
- // Images
+ if(intval(get_pconfig($item['uid'],'system','prevent_tag_hijacking'))) {
+ $new_tag = html_entity_decode('&#x22d5;',ENT_COMPAT,'UTF-8');
+ $new_mention = html_entity_decode('&#xff20;',ENT_COMPAT,'UTF-8');
- // html5 video and audio
+ // #-tags
+ $body = preg_replace('/\#\[url/i', $new_tag . '[url', $body);
+ $body = preg_replace('/\#\[zrl/i', $new_tag . '[zrl', $body);
+ // @-mentions
+ $body = preg_replace('/\@\!?\[url/i', $new_mention . '[url', $body);
+ $body = preg_replace('/\@\!?\[zrl/i', $new_mention . '[zrl', $body);
+ }
- $Text = preg_replace("/\[video\](.*?)\[\/video\]/", '$1', $Text);
+ // remove multiple newlines
+ do {
+ $oldbody = $body;
+ $body = str_replace("\n\n\n", "\n\n", $body);
+ } while ($oldbody != $body);
+
+ $body = bb2diaspora($body);
+
+ if(strlen($title))
+ $body = "## " . $title . "\n\n" . $body;
+
+ if($item['attach']) {
+ $cnt = preg_match_all('/href=\"(.*?)\"(.*?)title=\"(.*?)\"/ism',$item['attach'],$matches,PREG_SET_ORDER);
+ if(cnt) {
+ $body .= "\n" . t('Attachments:') . "\n";
+ foreach($matches as $mtch) {
+ $body .= '[' . $mtch[3] . '](' . $mtch[1] . ')' . "\n";
+ }
+ }
+ }
- $Text = preg_replace("/\[audio\](.*?)\[\/audio\]/", '$1', $Text);
+// logger('bb2diaspora_itembody : ' . $body, LOGGER_DATA);
-// $Text = preg_replace("/\[iframe\](.*?)\[\/iframe\]/", '<iframe src="$1" width="425" height="350"><a href="$1">$1</a></iframe>', $Text);
+ return html_entity_decode($body);
- // [img=widthxheight]image source[/img]
-// $Text = preg_replace("/\[img\=([0-9]*)x([0-9]*)\](.*?)\[\/img\]/", '<img src="$3" style="height:{$2}px; width:{$1}px;" >', $Text);
+}
- $Text = preg_replace("/\[youtube\]https?:\/\/www.youtube.com\/watch\?v\=(.*?)\[\/youtube\]/ism",'http://www.youtube.com/watch?v=$1',$Text);
- $Text = preg_replace("/\[youtube\]https?:\/\/www.youtube.com\/embed\/(.*?)\[\/youtube\]/ism",'http://www.youtube.com/watch?v=$1',$Text);
- $Text = preg_replace("/\[youtube\]https?:\/\/youtu.be\/(.*?)\[\/youtube\]/ism",'http://www.youtube.com/watch?v=$1',$Text);
- $Text = preg_replace("/\[youtube\]([A-Za-z0-9\-_=]+)(.*?)\[\/youtube\]/ism", 'http://www.youtube.com/watch?v=$1', $Text);
+function bb2diaspora($Text,$preserve_nl = false, $fordiaspora = true) {
- $Text = preg_replace("/\[vimeo\]https?:\/\/player.vimeo.com\/video\/([0-9]+)(.*?)\[\/vimeo\]/ism",'http://vimeo.com/$1',$Text);
- $Text = preg_replace("/\[vimeo\]https?:\/\/vimeo.com\/([0-9]+)(.*?)\[\/vimeo\]/ism",'http://vimeo.com/$1',$Text);
- $Text = preg_replace("/\[vimeo\]([0-9]+)(.*?)\[\/vimeo\]/ism", 'http://vimeo.com/$1',$Text);
+ // Re-enabling the converter again.
+ // The bbcode parser now handles youtube-links (and the other stuff) correctly.
+ // Additionally the html code is now fixed so that lists are now working.
+ /**
+ * Transform #tags, strip off the [url] and replace spaces with underscore
+ */
+ $Text = preg_replace_callback('/#\[([zu])rl\=(\w+.*?)\](\w+.*?)\[\/[(zu)]rl\]/i', create_function('$match',
+ 'return \'#\'. str_replace(\' \', \'_\', $match[3]);'
+ ), $Text);
- $Text = str_replace('[nosmile]','',$Text);
+ $Text = preg_replace('/#\^\[([zu])rl\=(\w+.*?)\](\w+.*?)\[\/([zu])rl\]/i', '[$1rl=$2]$3[/$4rl]', $Text);
- // oembed tag
- // $Text = oembed_bbcode2html($Text);
+ $Text = preg_replace_callback('/\@\!?\[([zu])rl\=(\w+.*?)\](\w+.*?)\[\/([zu])rl\]/i', 'bb2dmention_callback', $Text);
- // If we found an event earlier, strip out all the event code and replace with a reformatted version.
- if(x($ev,'start')) {
+ // Converting images with size parameters to simple images. Markdown doesn't know it.
+ $Text = preg_replace("/\[img\=([0-9]*)x([0-9]*)\](.*?)\[\/img\]/ism", '[img]$3[/img]', $Text);
- $sub = format_event_diaspora($ev);
+ // the following was added on 10-January-2012 due to an inability of Diaspora's
+ // new javascript markdown processor to handle links with images as the link "text"
+ // It is not optimal and may be removed if this ability is restored in the future
+ //if ($fordiaspora)
+ // $Text = preg_replace("/\[url\=([^\[\]]*)\]\s*\[img\](.*?)\[\/img\]\s*\[\/url\]/ism",
+ // "[url]$1[/url]\n[img]$2[/img]", $Text);
- $Text = preg_replace("/\[event\-summary\](.*?)\[\/event\-summary\]/is",'',$Text);
- $Text = preg_replace("/\[event\-description\](.*?)\[\/event\-description\]/is",'',$Text);
- $Text = preg_replace("/\[event\-start\](.*?)\[\/event\-start\]/is",$sub,$Text);
- $Text = preg_replace("/\[event\-finish\](.*?)\[\/event\-finish\]/is",'',$Text);
- $Text = preg_replace("/\[event\-location\](.*?)\[\/event\-location\]/is",'',$Text);
- $Text = preg_replace("/\[event\-adjust\](.*?)\[\/event\-adjust\]/is",'',$Text);
- }
+ // Convert it to HTML - don't try oembed
+ $Text = bbcode($Text, $preserve_nl, false);
- $Text = preg_replace("/\<(.*?)(src|href)=(.*?)\&amp\;(.*?)\>/ism",'<$1$2=$3&$4>',$Text);
+ // Now convert HTML to Markdown
+ $md = new Markdownify(false, false, false);
+ $Text = $md->parseString($Text);
- $Text = preg_replace_callback('/\[(.*?)\]\((.*?)\)/ism','unescape_underscores_in_links',$Text);
+ // If the text going into bbcode() has a plain URL in it, i.e.
+ // with no [url] tags around it, it will come out of parseString()
+ // looking like: <http://url.com>, which gets removed by strip_tags().
+ // So take off the angle brackets of any such URL
+ $Text = preg_replace("/<http(.*?)>/is", "http$1", $Text);
-*/
+ // Remove all unconverted tags
+ $Text = strip_tags($Text);
// Remove any leading or trailing whitespace, as this will mess up
// the Diaspora signature verification and cause the item to disappear
+
$Text = trim($Text);
call_hooks('bb2diaspora',$Text);
@@ -462,7 +444,7 @@ function format_event_diaspora($ev) {
$bd_format = t('l F d, Y \@ g:i A') ; // Friday January 18, 2011 @ 8 AM
- $o = 'Friendica event notification:' . "\n";
+ $o = t('Redmatrix event notification:') . "\n";
$o .= '**' . (($ev['summary']) ? bb2diaspora($ev['summary']) : bb2diaspora($ev['desc'])) . '**' . "\n";
diff --git a/include/bbcode.php b/include/bbcode.php
index 45126c0eb..ab56bda61 100644
--- a/include/bbcode.php
+++ b/include/bbcode.php
@@ -22,7 +22,7 @@ function tryzrlaudio($match) {
$zrl = is_matrix_url($link);
if($zrl)
$link = zid($link);
- return '<audio src="' . $link . '" controls="controls" ><a href="' . $link . '">' . $link . '</a></audio>';
+ return '<audio src="' . str_replace(' ','%20',$link) . '" controls="controls" ><a href="' . str_replace(' ','%20',$link) . '">' . $link . '</a></audio>';
}
function tryzrlvideo($match) {
@@ -30,7 +30,7 @@ function tryzrlvideo($match) {
$zrl = is_matrix_url($link);
if($zrl)
$link = zid($link);
- return '<video controls="controls" src="' . $link . '" style="width:100%; max-width:' . get_app()->videowidth . 'px"><a href="' . $link . '">' . $link . '</a></video>';
+ return '<video controls="controls" src="' . str_replace(' ','%20',$link) . '" style="width:100%; max-width:' . get_app()->videowidth . 'px"><a href="' . str_replace(' ','%20',$link) . '">' . $link . '</a></video>';
}
@@ -159,6 +159,14 @@ function bb_parse_app($match) {
}
+function bb_parse_element($match) {
+ $j = json_decode(base64url_decode($match[1]),true);
+ if($j) {
+ $o = EOL . '<a href="#" onclick="importElement(\'' . $match[1] . '\'); return false;" >' . t('Install design element: ') . $j['pagetitle'] . '</a>' . EOL;
+ }
+ return $o;
+}
+
function bb_qr($match) {
return '<img class="zrl" src="' . z_root() . '/photo/qr?f=&qr=' . urlencode($match[1]) . '" alt="' . t('QR code') . '" title="' . htmlspecialchars($match[1],ENT_QUOTES,'UTF-8') . '" />';
}
@@ -270,6 +278,17 @@ function rpost_callback($match) {
}
}
+function bb_map_coords($match) {
+ // the extra space in the following line is intentional
+ return str_replace($match[0],'<div class="map" >' . generate_map(str_replace('/',' ',$match[1])) . '</div>', $match[0]);
+}
+
+function bb_map_location($match) {
+ // the extra space in the following line is intentional
+ return str_replace($match[0],'<div class="map" >' . generate_named_map($match[1]) . '</div>', $match[0]);
+}
+
+
function bb_sanitize_style($input) {
//whitelist property limits (0 = no limitation)
$w = array( // color properties
@@ -349,11 +368,6 @@ function bbcode($Text,$preserve_nl = false, $tryoembed = true) {
$Text = preg_replace_callback("/\[pre\](.*?)\[\/pre\]/ism", 'bb_spacefy',$Text);
}
-// Not yet implemented - thinking this should display a map or perhaps be a map directive
-// if (strpos($Text,'[location]') !== false) {
-// $Text = preg_replace_callback("/\[location\](.*?)\[\/location\]/ism", 'bb_location',$Text);
-// }
-
// If we find any event code, turn it into an event.
@@ -423,14 +437,16 @@ function bbcode($Text,$preserve_nl = false, $tryoembed = true) {
// replace [observer.baseurl]
if ($observer) {
+ $s1 = '<span class="bb_observer">';
+ $s2 = '</span>';
$obsBaseURL = $observer['xchan_connurl'];
$obsBaseURL = preg_replace("/\/poco\/.*$/", '', $obsBaseURL);
$Text = str_replace('[observer.baseurl]', $obsBaseURL, $Text);
$Text = str_replace('[observer.url]',$observer['xchan_url'], $Text);
- $Text = str_replace('[observer.name]',$observer['xchan_name'], $Text);
- $Text = str_replace('[observer.address]',$observer['xchan_addr'], $Text);
- $Text = str_replace('[observer.webname]',substr($observer['xchan_addr'],0,strpos($observer['xchan_addr'],'@')), $Text);
- $Text = str_replace('[observer.photo]','[zmg]'.$observer['xchan_photo_l'].'[/zmg]', $Text);
+ $Text = str_replace('[observer.name]',$s1 . $observer['xchan_name'] . $s2, $Text);
+ $Text = str_replace('[observer.address]',$s1 . $observer['xchan_addr'] . $s2, $Text);
+ $Text = str_replace('[observer.webname]',$s1 . substr($observer['xchan_addr'],0,strpos($observer['xchan_addr'],'@')) . $s2, $Text);
+ $Text = str_replace('[observer.photo]',$s1 . '[zmg]'.$observer['xchan_photo_l'].'[/zmg]' . $s2, $Text);
} else {
$Text = str_replace('[observer.baseurl]', '', $Text);
$Text = str_replace('[observer.url]','', $Text);
@@ -482,6 +498,22 @@ function bbcode($Text,$preserve_nl = false, $tryoembed = true) {
$Text = preg_replace("/\[mail\]([$MAILSearchString]*)\[\/mail\]/", '<a href="mailto:$1">$1</a>', $Text);
$Text = preg_replace("/\[mail\=([$MAILSearchString]*)\](.*?)\[\/mail\]/", '<a href="mailto:$1">$2</a>', $Text);
}
+
+ // leave open the posibility of [map=something]
+ // this is replaced in prepare_body() which has knowledge of the item location
+
+ if (strpos($Text,'[/map]') !== false) {
+ $Text = preg_replace_callback("/\[map\](.*?)\[\/map\]/ism",'bb_map_location',$Text);
+ }
+
+ if (strpos($Text,'[map=') !== false) {
+ $Text = preg_replace_callback("/\[map=(.*?)\]/ism",'bb_map_coords',$Text);
+ }
+
+ if (strpos($Text,'[map]') !== false) {
+ $Text = preg_replace("/\[map\]/", '<div class="map"></div>', $Text);
+ }
+
// Check for bold text
if (strpos($Text,'[b]') !== false) {
$Text = preg_replace("(\[b\](.*?)\[\/b\])ism",'<strong>$1</strong>',$Text);
@@ -502,6 +534,13 @@ function bbcode($Text,$preserve_nl = false, $tryoembed = true) {
if (strpos($Text,'[o]') !== false) {
$Text = preg_replace("(\[o\](.*?)\[\/o\])ism",'<span class="overline">$1</span>',$Text);
}
+ if (strpos($Text,'[sup]') !== false) {
+ $Text = preg_replace("(\[sup\](.*?)\[\/sup\])ism",'<sup>$1</sup>',$Text);
+ }
+ if (strpos($Text,'[sub]') !== false) {
+ $Text = preg_replace("(\[sub\](.*?)\[\/sub\])ism",'<sub>$1</sub>',$Text);
+ }
+
// Check for colored text
if (strpos($Text,'[/color]') !== false) {
$Text = preg_replace("(\[color=(.*?)\](.*?)\[\/color\])ism","<span style=\"color: $1;\">$2</span>",$Text);
@@ -603,7 +642,7 @@ function bbcode($Text,$preserve_nl = false, $tryoembed = true) {
// Check for [spoiler=Author] text
- $t_wrote = t('$1 wrote:');
+ $t_wrote = t('$1 spoiler');
// handle nested quotes
$endlessloop = 0;
@@ -657,24 +696,24 @@ function bbcode($Text,$preserve_nl = false, $tryoembed = true) {
// [img=widthxheight]pathtoimage[/img]
if (strpos($Text,'[/img]') !== false) {
- $Text = preg_replace("/\[img\=([0-9]*)x([0-9]*)\](.*?)\[\/img\]/ism", '<img src="$3" style="width: 100%; max-width: $1px;" alt="' . t('Image/photo') . '" >', $Text);
+ $Text = preg_replace("/\[img\=([0-9]*)x([0-9]*)\](.*?)\[\/img\]/ism", '<img src="$3" style="width: 100%; max-width: $1px;" alt="' . t('Image/photo') . '" />', $Text);
}
if (strpos($Text,'[/zmg]') !== false) {
- $Text = preg_replace("/\[zmg\=([0-9]*)x([0-9]*)\](.*?)\[\/zmg\]/ism", '<img class="zrl" src="$3" style="width: 100%; max-width: $1px;" alt="' . t('Image/photo') . '" >', $Text);
+ $Text = preg_replace("/\[zmg\=([0-9]*)x([0-9]*)\](.*?)\[\/zmg\]/ism", '<img class="zrl" src="$3" style="width: 100%; max-width: $1px;" alt="' . t('Image/photo') . '" />', $Text);
}
// [img=widthxheight float={left, right}]pathtoimage[/img]
if (strpos($Text,'[/img]') !== false) {
- $Text = preg_replace("/\[img\=([0-9]*)x([0-9]*) float=left\](.*?)\[\/img\]/ism", '<img src="$3" style="width: 100%; max-width: $1px; float: left;" alt="' . t('Image/photo') . '" >', $Text);
+ $Text = preg_replace("/\[img\=([0-9]*)x([0-9]*) float=left\](.*?)\[\/img\]/ism", '<img src="$3" style="width: 100%; max-width: $1px; float: left;" alt="' . t('Image/photo') . '" />', $Text);
}
if (strpos($Text,'[/img]') !== false) {
- $Text = preg_replace("/\[img\=([0-9]*)x([0-9]*) float=right\](.*?)\[\/img\]/ism", '<img src="$3" style="width: 100%; max-width: $1px; float: right;" alt="' . t('Image/photo') . '" >', $Text);
+ $Text = preg_replace("/\[img\=([0-9]*)x([0-9]*) float=right\](.*?)\[\/img\]/ism", '<img src="$3" style="width: 100%; max-width: $1px; float: right;" alt="' . t('Image/photo') . '" />', $Text);
}
if (strpos($Text,'[/zmg]') !== false) {
- $Text = preg_replace("/\[zmg\=([0-9]*)x([0-9]*) float=left\](.*?)\[\/zmg\]/ism", '<img class="zrl" src="$3" style="width: 100%; max-width: $1px; float: left;" alt="' . t('Image/photo') . '" >', $Text);
+ $Text = preg_replace("/\[zmg\=([0-9]*)x([0-9]*) float=left\](.*?)\[\/zmg\]/ism", '<img class="zrl" src="$3" style="width: 100%; max-width: $1px; float: left;" alt="' . t('Image/photo') . '" />', $Text);
}
if (strpos($Text,'[/zmg]') !== false) {
- $Text = preg_replace("/\[zmg\=([0-9]*)x([0-9]*) float=right\](.*?)\[\/zmg\]/ism", '<img class="zrl" src="$3" style="width: 100%; max-width: $1px; float: right;" alt="' . t('Image/photo') . '" >', $Text);
+ $Text = preg_replace("/\[zmg\=([0-9]*)x([0-9]*) float=right\](.*?)\[\/zmg\]/ism", '<img class="zrl" src="$3" style="width: 100%; max-width: $1px; float: right;" alt="' . t('Image/photo') . '" />', $Text);
}
// style (sanitized)
@@ -693,6 +732,10 @@ function bbcode($Text,$preserve_nl = false, $tryoembed = true) {
$Text = preg_replace_callback("/\[app\](.*?)\[\/app\]/ism",'bb_parse_app', $Text);
}
+ if(strpos($Text,'[/element]') !== false) {
+ $Text = preg_replace_callback("/\[element\](.*?)\[\/element\]/ism",'bb_parse_element', $Text);
+ }
+
// html5 video and audio
if (strpos($Text,'[/video]') !== false) {
@@ -804,7 +847,7 @@ function bbcode($Text,$preserve_nl = false, $tryoembed = true) {
// fix any escaped ampersands that may have been converted into links
$Text = preg_replace("/\<(.*?)(src|href)=(.*?)\&amp\;(.*?)\>/ism",'<$1$2=$3&$4>',$Text);
- $Text = preg_replace("/\<(.*?)(src|href)=\"[^hfm](.*?)\>/ism",'<$1$2="">',$Text);
+ $Text = preg_replace("/\<(.*?)(src|href)=\"[^hfm#](.*?)\>/ism",'<$1$2="">',$Text);
call_hooks('bbcode',$Text);
diff --git a/include/cache.php b/include/cache.php
index a70650b5e..4a3f453e1 100644
--- a/include/cache.php
+++ b/include/cache.php
@@ -21,7 +21,7 @@
dbesc($key)
);
if($r) {
- q("UPDATE cache SET v = '%s', updated = '%s' WHERE k = '%s' limit 1",
+ q("UPDATE cache SET v = '%s', updated = '%s' WHERE k = '%s'",
dbesc($value),
dbesc(datetime_convert()),
dbesc($key));
diff --git a/include/chat.php b/include/chat.php
index 4c79319ee..533c03dde 100644
--- a/include/chat.php
+++ b/include/chat.php
@@ -77,7 +77,7 @@ function chatroom_destroy($channel,$arr) {
return $ret;
}
- q("delete from chatroom where cr_id = %d limit 1",
+ q("delete from chatroom where cr_id = %d",
intval($r[0]['cr_id'])
);
if($r[0]['cr_id']) {
@@ -119,24 +119,29 @@ function chatroom_enter($observer_xchan,$room_id,$status,$client) {
$limit = service_class_fetch($r[0]['cr_uid'],'chatters_inroom');
if($limit !== false) {
- $x = q("select count(*) as total from chatpresence where cp_room = %d",
+ $y = q("select count(*) as total from chatpresence where cp_room = %d",
intval($room_id)
);
- if($x && $x[0]['total'] > $limit) {
+ if($y && $y[0]['total'] > $limit) {
notice( t('Room is full') . EOL);
return false;
}
}
- if(intval($x[0]['cr_expire']))
- $r = q("delete from chat where created < UTC_TIMESTAMP() - INTERVAL " . intval($x[0]['cr_expire']) . " MINUTE and chat_room = " . intval($x[0]['cr_id']));
+ if(intval($x[0]['cr_expire'])) {
+ $r = q("delete from chat where created < %s - INTERVAL %s and chat_room = %d",
+ db_utcnow(),
+ db_quoteinterval( intval($x[0]['cr_expire']) . ' MINUTE' ),
+ intval($x[0]['cr_id'])
+ );
+ }
$r = q("select * from chatpresence where cp_xchan = '%s' and cp_room = %d limit 1",
dbesc($observer_xchan),
intval($room_id)
);
if($r) {
- q("update chatpresence set cp_last = '%s' where cp_id = %d and cp_client = '%s' limit 1",
+ q("update chatpresence set cp_last = '%s' where cp_id = %d and cp_client = '%s'",
dbesc(datetime_convert()),
intval($r[0]['cp_id']),
dbesc($client)
@@ -152,6 +157,7 @@ function chatroom_enter($observer_xchan,$room_id,$status,$client) {
dbesc($status),
dbesc($client)
);
+
return $r;
}
@@ -166,7 +172,7 @@ function chatroom_leave($observer_xchan,$room_id,$client) {
dbesc($client)
);
if($r) {
- q("delete from chatpresence where cp_id = %d limit 1",
+ q("delete from chatpresence where cp_id = %d",
intval($r[0]['cp_id'])
);
}
@@ -186,6 +192,17 @@ function chatroom_list($uid) {
return $r;
}
+function chatroom_list_count($uid) {
+ require_once('include/security.php');
+ $sql_extra = permissions_sql($uid);
+
+ $r = q("select count(*) as total from chatroom where cr_uid = %d $sql_extra",
+ intval($uid)
+ );
+
+ return $r[0]['total'];
+}
+
/**
* create a chat message via API.
* It is the caller's responsibility to enter the room.
diff --git a/include/cli_startup.php b/include/cli_startup.php
index 6bd4e7520..027d62953 100644
--- a/include/cli_startup.php
+++ b/include/cli_startup.php
@@ -6,7 +6,7 @@ require_once('boot.php');
function cli_startup() {
- global $a, $db;
+ global $a, $db, $default_timezone;
if(is_null($a)) {
$a = new App;
@@ -14,9 +14,13 @@ function cli_startup() {
if(is_null($db)) {
@include(".htconfig.php");
+
+ $a->timezone = ((x($default_timezone)) ? $default_timezone : 'UTC');
+ date_default_timezone_set($a->timezone);
+
require_once('include/dba/dba_driver.php');
- $db = dba_factory($db_host, $db_port, $db_user, $db_pass, $db_data);
- unset($db_host, $db_port, $db_user, $db_pass, $db_data);
+ $db = dba_factory($db_host, $db_port, $db_user, $db_pass, $db_data, $db_type);
+ unset($db_host, $db_port, $db_user, $db_pass, $db_data, $db_type);
};
require_once('include/session.php');
diff --git a/include/config.php b/include/config.php
index add7b5f71..87b91e51a 100644
--- a/include/config.php
+++ b/include/config.php
@@ -1,30 +1,56 @@
-<?php /** @file */
-
+<?php
/**
+ * @file include/config.php
+ * @brief Arbitrary configuration storage.
*
- * Arbitrary configuration storage
* Note:
* Please do not store booleans - convert to 0/1 integer values
* The get_?config() functions return boolean false for keys that are unset,
* and this could lead to subtle bugs.
*
- * There are a few places in the code (such as the admin panel) where boolean
- * configurations need to be fixed as of 10/08/2011.
+ * Arrays get stored as serialize strings.
+ *
+ * @todo There are a few places in the code (such as the admin panel) where
+ * boolean configurations need to be fixed as of 10/08/2011.
+ *
+ * - <b>config</b> is used for hub specific configurations. It overrides the
+ * configurations from .htconfig file. The storage is of size TEXT.
+ * - <b>pconfig</b> is used for channel specific configurations and takes a
+ * <i>channel_id</i> as identifier. It stores for example which features are
+ * enabled per channel. The storage is of size MEDIUMTEXT.
+ * @code $var = get_pconfig(local_user(), 'category', 'key');@endcode
+ * - <b>xconfig</b> is the same as pconfig, except that it uses <i>xchan</i> as
+ * an identifier. This is for example for people who do not have a local account.
+ * The storage is of size MEDIUMTEXT.
+ * @code $observer = $a->get_observer_hash();
+ * if ($observer) {
+ * $var = get_xconfig($observer, 'category', 'key');
+ * }@endcode
+ *
+ * - get_config() and set_config() can also be done through the command line tool
+ * @ref util/config
+ * - get_pconfig() and set_pconfig() can also be done through the command line tool
+ * @ref util/pconfig and takes a channel_id as first argument.
+ *
*/
-
-// retrieve a "family" of config variables from database to cached storage
-
+/**
+ * @brief Loads the hub's configuration from database to a cached storage.
+ *
+ * Retrieve a category ($family) of config variables from database to a cached
+ * storage in the global $a->config[$family].
+ *
+ * @param string $family
+ * The category of the configuration value
+ */
function load_config($family) {
global $a;
- if(! array_key_exists($family,$a->config))
+ if(! array_key_exists($family, $a->config))
$a->config[$family] = array();
- if(! array_key_exists('config_loaded',$a->config[$family])) {
-
+ if(! array_key_exists('config_loaded', $a->config[$family])) {
$r = q("SELECT * FROM config WHERE cat = '%s'", dbesc($family));
-
if($r !== false) {
if($r) {
foreach($r as $rr) {
@@ -37,24 +63,31 @@ function load_config($family) {
}
}
-// get a particular config variable given the family name
-// and key. Returns false if not set.
-// $instore is only used by the set_config function
-// to determine if the key already exists in the DB
-// If a key is found in the DB but doesn't exist in
-// local config cache, pull it into the cache so we don't have
-// to hit the DB again for this item.
-
-
+/**
+ * @brief Get a particular config variable given the category name ($family)
+ * and a key.
+ *
+ * Get a particular config variable from the given category ($family) and the
+ * $key from a cached storage in $a->config[$family]. If a key is found in the
+ * DB but does not exist in local config cache, pull it into the cache so we
+ * do not have to hit the DB again for this item.
+ *
+ * Returns false if not set.
+ *
+ * @param string $family
+ * The category of the configuration value
+ * @param string $key
+ * The configuration key to query
+ * @return mixed Return value or false on error or if not set
+ */
function get_config($family, $key) {
-
global $a;
- if((! array_key_exists($family,$a->config)) || (! array_key_exists('config_loaded',$a->config[$family])))
+ if((! array_key_exists($family, $a->config)) || (! array_key_exists('config_loaded', $a->config[$family])))
load_config($family);
- if(array_key_exists('config_loaded',$a->config[$family])) {
- if(! array_key_exists($key,$a->config[$family])) {
+ if(array_key_exists('config_loaded', $a->config[$family])) {
+ if(! array_key_exists($key, $a->config[$family])) {
return false;
}
return ((! is_array($a->config[$family][$key])) && (preg_match('|^a:[0-9]+:{.*}$|s', $a->config[$family][$key]))
@@ -65,57 +98,94 @@ function get_config($family, $key) {
return false;
}
-function get_config_from_storage($family,$key) {
- $ret = q("select * from config where cat = '%s' and k = '%s' limit 1",
+/**
+ * @brief Returns a value directly from the database configuration storage.
+ *
+ * This function queries directly the database and bypasses the chached storage
+ * from get_config($family, $key).
+ *
+ * @param string $family
+ * The category of the configuration value
+ * @param string $key
+ * The configuration key to query
+ * @return mixed
+ */
+function get_config_from_storage($family, $key) {
+ $ret = q("SELECT * FROM config WHERE cat = '%s' AND k = '%s' LIMIT 1",
dbesc($family),
dbesc($key)
);
return $ret;
}
-
-
-// Store a config value ($value) in the category ($family)
-// under the key ($key)
-// Return the value, or false if the database update failed
-
-function set_config($family,$key,$value) {
+/**
+ * @brief Sets a configuration value for the hub.
+ *
+ * Stores a config value ($value) in the category ($family) under the key ($key).
+ *
+ * Please do not store booleans - convert to 0/1 integer values!
+ *
+ * @param string $family
+ * The category of the configuration value
+ * @param string $key
+ * The configuration key to set
+ * @param mixed $value
+ * The value to store in the configuration
+ * @return mixed
+ * Return the set value, or false if the database update failed
+ */
+function set_config($family, $key, $value) {
global $a;
+
// manage array value
$dbvalue = ((is_array($value)) ? serialize($value) : $value);
$dbvalue = ((is_bool($dbvalue)) ? intval($dbvalue) : $dbvalue);
- if(get_config($family,$key) === false || (! get_config_from_storage($family,$key))) {
- $a->config[$family][$key] = $value;
-
+ if(get_config($family, $key) === false || (! get_config_from_storage($family, $key))) {
$ret = q("INSERT INTO config ( cat, k, v ) VALUES ( '%s', '%s', '%s' ) ",
dbesc($family),
dbesc($key),
dbesc($dbvalue)
);
- if($ret)
- return $value;
+ if($ret) {
+ $a->config[$family][$key] = $value;
+ $ret = $value;
+ }
return $ret;
}
- $ret = q("UPDATE config SET v = '%s' WHERE cat = '%s' AND k = '%s' LIMIT 1",
+ $ret = q("UPDATE config SET v = '%s' WHERE cat = '%s' AND k = '%s'",
dbesc($dbvalue),
dbesc($family),
dbesc($key)
);
- $a->config[$family][$key] = $value;
-
- if($ret)
- return $value;
+ if($ret) {
+ $a->config[$family][$key] = $value;
+ $ret = $value;
+ }
return $ret;
}
-function del_config($family,$key) {
+/**
+ * @brief Deletes the given key from the hub's configuration database.
+ *
+ * Removes the configured value from the stored cache in $a->config[$family]
+ * and removes it from the database.
+ *
+ * @param string $family
+ * The category of the configuration value
+ * @param string $key
+ * The configuration key to delete
+ * @return mixed
+ */
+function del_config($family, $key) {
global $a;
- if(array_key_exists($family,$a->config) && array_key_exists($key,$a->config[$family]))
+ $ret = false;
+
+ if(array_key_exists($family, $a->config) && array_key_exists($key, $a->config[$family]))
unset($a->config[$family][$key]);
- $ret = q("DELETE FROM config WHERE cat = '%s' AND k = '%s' LIMIT 1",
+ $ret = q("DELETE FROM config WHERE cat = '%s' AND k = '%s'",
dbesc($family),
dbesc($key)
);
@@ -123,18 +193,26 @@ function del_config($family,$key) {
}
-function load_pconfig($uid,$family = '') {
+/**
+ * @brief Loads all configuration values of a channel into a cached storage.
+ *
+ * All configuration values of the given channel are stored in global cache
+ * which is available under the global variable $a->config[$uid].
+ *
+ * @param string $uid
+ * The channel_id
+ * @return void|false Nothing or false if $uid is false
+ */
+function load_pconfig($uid) {
global $a;
if($uid === false)
return false;
- if(! array_key_exists($uid,$a->config))
+ if(! array_key_exists($uid, $a->config))
$a->config[$uid] = array();
- // family is no longer used - load entire user config
-
- $r = q("SELECT * FROM `pconfig` WHERE `uid` = %d",
+ $r = q("SELECT * FROM pconfig WHERE uid = %d",
intval($uid)
);
@@ -142,59 +220,88 @@ function load_pconfig($uid,$family = '') {
foreach($r as $rr) {
$k = $rr['k'];
$c = $rr['cat'];
- if(! array_key_exists($c,$a->config[$uid])) {
+ if(! array_key_exists($c, $a->config[$uid])) {
$a->config[$uid][$c] = array();
$a->config[$uid][$c]['config_loaded'] = true;
}
$a->config[$uid][$c][$k] = $rr['v'];
}
- }
+ }
}
-
-
-
-function get_pconfig($uid,$family, $key, $instore = false) {
-
+/**
+ * @brief Get a particular channel's config variable given the category name
+ * ($family) and a key.
+ *
+ * Get a particular channel's config value from the given category ($family)
+ * and the $key from a cached storage in $a->config[$uid].
+ *
+ * Returns false if not set.
+ *
+ * @param string $uid
+ * The channel_id
+ * @param string $family
+ * The category of the configuration value
+ * @param string $key
+ * The configuration key to query
+ * @param boolean $instore (deprecated, without function)
+ * @return mixed Stored value or false if it does not exist
+ */
+function get_pconfig($uid, $family, $key, $instore = false) {
+// logger('include/config.php: get_pconfig() deprecated instore param used', LOGGER_DEBUG);
global $a;
if($uid === false)
return false;
- if(! array_key_exists($uid,$a->config))
+ if(! array_key_exists($uid, $a->config))
load_pconfig($uid);
- if((! array_key_exists($family,$a->config[$uid])) || (! array_key_exists($key,$a->config[$uid][$family])))
+ if((! array_key_exists($family, $a->config[$uid])) || (! array_key_exists($key, $a->config[$uid][$family])))
return false;
-
+
return ((! is_array($a->config[$uid][$family][$key])) && (preg_match('|^a:[0-9]+:{.*}$|s', $a->config[$uid][$family][$key]))
? unserialize($a->config[$uid][$family][$key])
: $a->config[$uid][$family][$key]
);
}
-function set_pconfig($uid,$family,$key,$value) {
-
+/**
+ * @brief Sets a configuration value for a channel.
+ *
+ * Stores a config value ($value) in the category ($family) under the key ($key)
+ * for the channel_id $uid.
+ *
+ * Please do not store booleans - convert to 0/1 integer values!
+ *
+ * @param string $uid
+ * The channel_id
+ * @param string $family
+ * The category of the configuration value
+ * @param string $key
+ * The configuration key to query
+ * @return mixed Stored $value or false
+ */
+function set_pconfig($uid, $family, $key, $value) {
global $a;
-
// manage array value
$dbvalue = ((is_array($value)) ? serialize($value) : $value);
$dbvalue = ((is_bool($dbvalue)) ? intval($dbvalue) : $dbvalue);
- if(get_pconfig($uid,$family,$key) === false) {
- if(! array_key_exists($uid,$a->config))
+ if(get_pconfig($uid, $family, $key) === false) {
+ if(! array_key_exists($uid, $a->config))
$a->config[$uid] = array();
- if(! array_key_exists($family,$a->config[$uid]))
+ if(! array_key_exists($family, $a->config[$uid]))
$a->config[$uid][$family] = array();
// keep a separate copy for all variables which were
// set in the life of this page. We need this to
// synchronise channel clones.
- if(! array_key_exists('transient',$a->config[$uid]))
+ if(! array_key_exists('transient', $a->config[$uid]))
$a->config[$uid]['transient'] = array();
- if(! array_key_exists($family,$a->config[$uid]['transient']))
+ if(! array_key_exists($family, $a->config[$uid]['transient']))
$a->config[$uid]['transient'][$family] = array();
$a->config[$uid][$family][$key] = $value;
@@ -211,7 +318,7 @@ function set_pconfig($uid,$family,$key,$value) {
return $ret;
}
- $ret = q("UPDATE pconfig SET v = '%s' WHERE uid = %d and cat = '%s' AND k = '%s' LIMIT 1",
+ $ret = q("UPDATE pconfig SET v = '%s' WHERE uid = %d and cat = '%s' AND k = '%s'",
dbesc($dbvalue),
intval($uid),
dbesc($family),
@@ -222,9 +329,9 @@ function set_pconfig($uid,$family,$key,$value) {
// set in the life of this page. We need this to
// synchronise channel clones.
- if(! array_key_exists('transient',$a->config[$uid]))
+ if(! array_key_exists('transient', $a->config[$uid]))
$a->config[$uid]['transient'] = array();
- if(! array_key_exists($family,$a->config[$uid]['transient']))
+ if(! array_key_exists($family, $a->config[$uid]['transient']))
$a->config[$uid]['transient'][$family] = array();
$a->config[$uid][$family][$key] = $value;
@@ -235,13 +342,27 @@ function set_pconfig($uid,$family,$key,$value) {
return $ret;
}
-
-function del_pconfig($uid,$family,$key) {
-
+/**
+ * @brief Deletes the given key from the channel's configuration.
+ *
+ * Removes the configured value from the stored cache in $a->config[$uid]
+ * and removes it from the database.
+ *
+ * @param string $uid
+ * The channel_id
+ * @param string $family
+ * The category of the configuration value
+ * @param string $key
+ * The configuration key to delete
+ * @return mixed
+ */
+function del_pconfig($uid, $family, $key) {
global $a;
- if(x($a->config[$uid][$family],$key))
+ $ret = false;
+
+ if(x($a->config[$uid][$family], $key))
unset($a->config[$uid][$family][$key]);
- $ret = q("DELETE FROM pconfig WHERE uid = %d AND cat = '%s' AND k = '%s' LIMIT 1",
+ $ret = q("DELETE FROM pconfig WHERE uid = %d AND cat = '%s' AND k = '%s'",
intval($uid),
dbesc($family),
dbesc($key)
@@ -250,19 +371,26 @@ function del_pconfig($uid,$family,$key) {
}
-
-function load_xconfig($xchan,$family = '') {
+/**
+ * @brief Loads a full xchan's configuration into a cached storage.
+ *
+ * All configuration values of the given observer hash are stored in global
+ * cache which is available under the global variable $a->config[$xchan].
+ *
+ * @param string $xchan
+ * The observer's hash
+ * @return void|false Returns false if xchan is not set
+ */
+function load_xconfig($xchan) {
global $a;
if(! $xchan)
return false;
- if(! array_key_exists($xchan,$a->config))
+ if(! array_key_exists($xchan, $a->config))
$a->config[$xchan] = array();
- // family is no longer used. Entire config is loaded
-
- $r = q("SELECT * FROM `xconfig` WHERE `xchan` = '%s'",
+ $r = q("SELECT * FROM xconfig WHERE xchan = '%s'",
dbesc($xchan)
);
@@ -270,51 +398,77 @@ function load_xconfig($xchan,$family = '') {
foreach($r as $rr) {
$k = $rr['k'];
$c = $rr['cat'];
- if(! array_key_exists($c,$a->config[$xchan])) {
+ if(! array_key_exists($c, $a->config[$xchan])) {
$a->config[$xchan][$c] = array();
$a->config[$xchan][$c]['config_loaded'] = true;
}
$a->config[$xchan][$c][$k] = $rr['v'];
}
- }
+ }
}
-
-
-
-function get_xconfig($xchan,$family, $key) {
-
+/**
+ * @brief Get a particular observer's config variable given the category
+ * name ($family) and a key.
+ *
+ * Get a particular observer's config value from the given category ($family)
+ * and the $key from a cached storage in $a->config[$xchan].
+ *
+ * Returns false if not set.
+ *
+ * @param string $xchan
+ * The observer's hash
+ * @param string $family
+ * The category of the configuration value
+ * @param string $key
+ * The configuration key to query
+ * @return mixed Stored $value or false if it does not exist
+ */
+function get_xconfig($xchan, $family, $key) {
global $a;
if(! $xchan)
return false;
- if(! array_key_exists($xchan,$a->config))
+ if(! array_key_exists($xchan, $a->config))
load_xconfig($xchan);
- if((! array_key_exists($family,$a->config[$xchan])) || (! array_key_exists($key,$a->config[$xchan][$family])))
+ if((! array_key_exists($family, $a->config[$xchan])) || (! array_key_exists($key, $a->config[$xchan][$family])))
return false;
return ((! is_array($a->config[$xchan][$family][$key])) && (preg_match('|^a:[0-9]+:{.*}$|s', $a->config[$xchan][$family][$key]))
? unserialize($a->config[$xchan][$family][$key])
: $a->config[$xchan][$family][$key]
);
-
}
-
-function set_xconfig($xchan,$family,$key,$value) {
-
+/**
+ * @brief Sets a configuration value for an observer.
+ *
+ * Stores a config value ($value) in the category ($family) under the key ($key)
+ * for the observer's $xchan hash.
+ *
+ * Please do not store booleans - convert to 0/1 integer values!
+ *
+ * @param string $xchan
+ * The observer's hash
+ * @param string $family
+ * The category of the configuration value
+ * @param string $key
+ * The configuration key to set
+ * @return mixed Stored $value or false
+ */
+function set_xconfig($xchan, $family, $key, $value) {
global $a;
// manage array value
$dbvalue = ((is_array($value)) ? serialize($value) : $value);
$dbvalue = ((is_bool($dbvalue)) ? intval($dbvalue) : $dbvalue);
- if(get_xconfig($xchan,$family,$key) === false) {
- if(! array_key_exists($xchan,$a->config))
+ if(get_xconfig($xchan, $family, $key) === false) {
+ if(! array_key_exists($xchan, $a->config))
$a->config[$xchan] = array();
- if(! array_key_exists($family,$a->config[$xchan]))
+ if(! array_key_exists($family, $a->config[$xchan]))
$a->config[$xchan][$family] = array();
$a->config[$xchan][$family][$key] = $value;
@@ -329,7 +483,7 @@ function set_xconfig($xchan,$family,$key,$value) {
return $ret;
}
- $ret = q("UPDATE xconfig SET v = '%s' WHERE xchan = '%s' and cat = '%s' AND k = '%s' LIMIT 1",
+ $ret = q("UPDATE xconfig SET v = '%s' WHERE xchan = '%s' and cat = '%s' AND k = '%s'",
dbesc($dbvalue),
dbesc($xchan),
dbesc($family),
@@ -341,22 +495,32 @@ function set_xconfig($xchan,$family,$key,$value) {
if($ret)
return $value;
return $ret;
-
}
-
-function del_xconfig($xchan,$family,$key) {
-
+/**
+ * @brief Deletes the given key from the observer's config.
+ *
+ * Removes the configured value from the stored cache in $a->config[$xchan]
+ * and removes it from the database.
+ *
+ * @param string $xchan
+ * The observer's hash
+ * @param string $family
+ * The category of the configuration value
+ * @param string $key
+ * The configuration key to delete
+ * @return mixed
+ */
+function del_xconfig($xchan, $family, $key) {
global $a;
- if(x($a->config[$xchan][$family],$key))
+ $ret = false;
+
+ if(x($a->config[$xchan][$family], $key))
unset($a->config[$xchan][$family][$key]);
- $ret = q("DELETE FROM `xconfig` WHERE `xchan` = '%s' AND `cat` = '%s' AND `k` = '%s' LIMIT 1",
+ $ret = q("DELETE FROM xconfig WHERE xchan = '%s' AND cat = '%s' AND k = '%s'",
dbesc($xchan),
dbesc($family),
dbesc($key)
);
return $ret;
}
-
-
-
diff --git a/include/contact_selectors.php b/include/contact_selectors.php
index a3cfd2489..726efce9d 100644
--- a/include/contact_selectors.php
+++ b/include/contact_selectors.php
@@ -20,6 +20,7 @@ function contact_profile_assign($current) {
return $o;
}
+/* unused currently
function contact_reputation($current) {
@@ -27,7 +28,7 @@ function contact_reputation($current) {
$o .= "<select id=\"contact-reputation-selector\" name=\"reputation\" />\r\n";
$rep = array(
- 0 => t('Unknown | Not categorised'),
+ 0 => t('Unknown | Not categorized'),
1 => t('Block immediately'),
2 => t('Shady, spammer, self-marketer'),
3 => t('Known to me, but no opinion'),
@@ -43,6 +44,7 @@ function contact_reputation($current) {
return $o;
}
+*/
function contact_poll_interval($current, $disabled = false) {
diff --git a/include/contact_widgets.php b/include/contact_widgets.php
index 758b7291b..ee9394e95 100644
--- a/include/contact_widgets.php
+++ b/include/contact_widgets.php
@@ -29,8 +29,7 @@ function findpeople_widget() {
'$random' => t('Random Profile'),
'$inv' => t('Invite Friends'),
'$advanced_search' => $advanced_search,
- '$advanced_hint' => t('Exammple: name=fred and country=iceland'),
- '$find_advanced' => t('Advanced Find'),
+ '$advanced_hint' => "\r\n" . t('Advanced example: name=fred and country=iceland'),
'$loggedin' => local_user()
));
@@ -79,6 +78,7 @@ function categories_widget($baseurl,$selected = '') {
and term.uid = item.uid
and term.type = %d
and item.author_xchan = '%s'
+ and item.item_restrict = 0
order by term.term asc",
intval($a->profile['profile_uid']),
intval(TERM_CATEGORY),
diff --git a/include/conversation.php b/include/conversation.php
index 5481037e7..a2fb3d162 100644
--- a/include/conversation.php
+++ b/include/conversation.php
@@ -179,8 +179,8 @@ function localize_item(&$item){
if (activity_match($item['verb'],ACTIVITY_FRIEND)) {
-
-// if ($item['obj_type']=="" || $item['obj_type']!== ACTIVITY_OBJ_PERSON) return;
+ if ($item['obj_type'] == "" || $item['obj_type'] !== ACTIVITY_OBJ_PERSON)
+ return;
$Aname = $item['author']['xchan_name'];
$Alink = $item['author']['xchan_url'];
@@ -262,6 +262,8 @@ function localize_item(&$item){
$item['body'] = sprintf($txt, $A, t($verb));
}
+
+
/*
// FIXME store parent item as object or target
// (and update to json storage)
@@ -363,6 +365,17 @@ function localize_item(&$item){
// if($sparkle)
// $item['plink'] = $y . '?f=&url=' . $item['plink'];
// }
+
+ // if item body was obscured and we changed it, re-obscure it
+ // FIXME - we need a better filter than just the string 'data'; try and
+ // match the fact that it's json encoded
+
+ if(($item['item_flags'] & ITEM_OBSCURED)
+ && strlen($item['body']) && (! strpos($item['body'],'data'))) {
+ $item['body'] = json_encode(crypto_encapsulate($item['body'],get_config('system','pubkey')));
+ }
+
+
}
/**
@@ -406,8 +419,6 @@ function visible_activity($item) {
function conversation(&$a, $items, $mode, $update, $page_mode = 'traditional', $prepared_item = '') {
- $tstart = dba_timer();
- $t0 = $t1 = $t2 = $t3 = $t4 = $t5 = $t6 = null;
$content_html = '';
$o = '';
@@ -420,14 +431,18 @@ function conversation(&$a, $items, $mode, $update, $page_mode = 'traditional', $
$arr_blocked = null;
- if(local_user()) {
+ if(local_user())
$str_blocked = get_pconfig(local_user(),'system','blocked');
- if($str_blocked) {
+ if(! local_user() && ($mode == 'network')) {
+ $sys = get_sys_channel();
+ $id = $sys['channel_id'];
+ $str_blocked = get_pconfig($id,'system','blocked');
+ }
+
+ if($str_blocked) {
$arr_blocked = explode(',',$str_blocked);
for($x = 0; $x < count($arr_blocked); $x ++)
- $arr_blocked[$x] = trim($arr_blocked[$x]);
- }
-
+ $arr_blocked[$x] = trim($arr_blocked[$x]);
}
@@ -440,64 +455,56 @@ function conversation(&$a, $items, $mode, $update, $page_mode = 'traditional', $
if($mode === 'network') {
- $t1 = dba_timer();
-
$profile_owner = local_user();
$page_writeable = true;
- if(!$update) {
- // The special div is needed for liveUpdate to kick in for this page.
- // We only launch liveUpdate if you aren't filtering in some incompatible
- // way and also you aren't writing a comment (discovered in javascript).
-
- $live_update_div = '<div id="live-network"></div>' . "\r\n"
- . "<script> var profile_uid = " . $_SESSION['uid']
- . "; var netargs = '" . substr($a->cmd,8)
- . '?f='
- . ((x($_GET,'cid')) ? '&cid=' . $_GET['cid'] : '')
- . ((x($_GET,'search')) ? '&search=' . $_GET['search'] : '')
- . ((x($_GET,'star')) ? '&star=' . $_GET['star'] : '')
- . ((x($_GET,'order')) ? '&order=' . $_GET['order'] : '')
- . ((x($_GET,'bmark')) ? '&bmark=' . $_GET['bmark'] : '')
- . ((x($_GET,'liked')) ? '&liked=' . $_GET['liked'] : '')
- . ((x($_GET,'conv')) ? '&conv=' . $_GET['conv'] : '')
- . ((x($_GET,'spam')) ? '&spam=' . $_GET['spam'] : '')
- . ((x($_GET,'nets')) ? '&nets=' . $_GET['nets'] : '')
- . ((x($_GET,'cmin')) ? '&cmin=' . $_GET['cmin'] : '')
- . ((x($_GET,'cmax')) ? '&cmax=' . $_GET['cmax'] : '')
- . ((x($_GET,'file')) ? '&file=' . $_GET['file'] : '')
- . ((x($_GET,'uri')) ? '&uri=' . $_GET['uri'] : '')
-
- . "'; var profile_page = " . $a->pager['page'] . "; </script>\r\n";
- }
-
-
+ if(!$update) {
+ // The special div is needed for liveUpdate to kick in for this page.
+ // We only launch liveUpdate if you aren't filtering in some incompatible
+ // way and also you aren't writing a comment (discovered in javascript).
+
+ $live_update_div = '<div id="live-network"></div>' . "\r\n"
+ . "<script> var profile_uid = " . $_SESSION['uid']
+ . "; var netargs = '" . substr($a->cmd,8)
+ . '?f='
+ . ((x($_GET,'cid')) ? '&cid=' . $_GET['cid'] : '')
+ . ((x($_GET,'search')) ? '&search=' . $_GET['search'] : '')
+ . ((x($_GET,'star')) ? '&star=' . $_GET['star'] : '')
+ . ((x($_GET,'order')) ? '&order=' . $_GET['order'] : '')
+ . ((x($_GET,'bmark')) ? '&bmark=' . $_GET['bmark'] : '')
+ . ((x($_GET,'liked')) ? '&liked=' . $_GET['liked'] : '')
+ . ((x($_GET,'conv')) ? '&conv=' . $_GET['conv'] : '')
+ . ((x($_GET,'spam')) ? '&spam=' . $_GET['spam'] : '')
+ . ((x($_GET,'nets')) ? '&nets=' . $_GET['nets'] : '')
+ . ((x($_GET,'cmin')) ? '&cmin=' . $_GET['cmin'] : '')
+ . ((x($_GET,'cmax')) ? '&cmax=' . $_GET['cmax'] : '')
+ . ((x($_GET,'file')) ? '&file=' . $_GET['file'] : '')
+ . ((x($_GET,'uri')) ? '&uri=' . $_GET['uri'] : '')
+ . "'; var profile_page = " . $a->pager['page'] . "; </script>\r\n";
+ }
}
elseif($mode === 'channel') {
$profile_owner = $a->profile['profile_uid'];
$page_writeable = ($profile_owner == local_user());
- if(!$update) {
- $tab = notags(trim($_GET['tab']));
- if($tab === 'posts') {
- // This is ugly, but we can't pass the profile_uid through the session to the ajax updater,
- // because browser prefetching might change it on us. We have to deliver it with the page.
-
- $live_update_div = '<div id="live-channel"></div>' . "\r\n"
- . "<script> var profile_uid = " . $a->profile['profile_uid']
- . "; var netargs = '?f='; var profile_page = " . $a->pager['page'] . "; </script>\r\n";
- }
- }
+ if(!$update) {
+ $tab = notags(trim($_GET['tab']));
+ if($tab === 'posts') {
+ // This is ugly, but we can't pass the profile_uid through the session to the ajax updater,
+ // because browser prefetching might change it on us. We have to deliver it with the page.
+ $live_update_div = '<div id="live-channel"></div>' . "\r\n"
+ . "<script> var profile_uid = " . $a->profile['profile_uid']
+ . "; var netargs = '?f='; var profile_page = " . $a->pager['page'] . "; </script>\r\n";
+ }
+ }
}
elseif($mode === 'display') {
$profile_owner = local_user();
$page_writeable = false;
-
- $live_update_div = '<div id="live-display"></div>' . "\r\n";
-
+ $live_update_div = '<div id="live-display"></div>' . "\r\n";
}
elseif($mode === 'page') {
@@ -506,10 +513,10 @@ function conversation(&$a, $items, $mode, $update, $page_mode = 'traditional', $
$live_update_div = '<div id="live-page"></div>' . "\r\n";
}
+ elseif($mode === 'search') {
+ $live_update_div = '<div id="live-search"></div>' . "\r\n";
+ }
- elseif($mode === 'search') {
- $live_update_div = '<div id="live-search"></div>' . "\r\n";
- }
elseif($mode === 'photos') {
$profile_onwer = $a->profile['profile_uid'];
$page_writeable = ($profile_owner == local_user());
@@ -542,7 +549,6 @@ function conversation(&$a, $items, $mode, $update, $page_mode = 'traditional', $
$alike = array();
$dlike = array();
-
// array with html for each thread (parent+comments)
$threads = array();
$threadsid = -1;
@@ -590,12 +596,11 @@ function conversation(&$a, $items, $mode, $update, $page_mode = 'traditional', $
}
else
$nickname = $a->user['nickname'];
-
+
$profile_name = ((strlen($item['author-name'])) ? $item['author-name'] : $item['name']);
if($item['author-link'] && (! $item['author-name']))
$profile_name = $item['author-link'];
-
$tags=array();
$hashtags = array();
@@ -618,7 +623,6 @@ function conversation(&$a, $items, $mode, $update, $page_mode = 'traditional', $
$profile_link = $item['author']['xchan_url'];
$profile_avatar = $item['author']['xchan_photo_m'];
-
$location = format_location($item);
localize_item($item);
@@ -646,10 +650,12 @@ function conversation(&$a, $items, $mode, $update, $page_mode = 'traditional', $
$likebuttons = false;
$shareable = false;
- $verified = (($item['item_flags'] & ITEM_VERIFIED) ? t('Message is verified') : '');
- $unverified = '';
+ $verified = (($item['item_flags'] & ITEM_VERIFIED) ? t('Message signature validated') : '');
+ $forged = ((($item['sig']) && (! ($item['item_flags'] & ITEM_VERIFIED))) ? t('Message signature incorrect') : '');
+ $unverified = '';
+
$tags=array();
$terms = get_terms_oftype($item['term'],array(TERM_HASHTAG,TERM_MENTION,TERM_UNKNOWN));
@@ -660,7 +666,6 @@ function conversation(&$a, $items, $mode, $update, $page_mode = 'traditional', $
$body = prepare_body($item,true);
- //$tmp_item = replace_macros($tpl,array(
$tmp_item = array(
'template' => $tpl,
'toplevel' => 'toplevel_item',
@@ -680,13 +685,13 @@ function conversation(&$a, $items, $mode, $update, $page_mode = 'traditional', $
'mentions' => $mentions,
'verified' => $verified,
'unverified' => $unverified,
+ 'forged' => $forged,
'txt_cats' => t('Categories:'),
- 'txt_folders' => t('Filed under:'),
- 'has_cats' => ((count($categories)) ? 'true' : ''),
- 'has_folders' => ((count($folders)) ? 'true' : ''),
- 'categories' => $categories,
- 'folders' => $folders,
-
+ 'txt_folders' => t('Filed under:'),
+ 'has_cats' => ((count($categories)) ? 'true' : ''),
+ 'has_folders' => ((count($folders)) ? 'true' : ''),
+ 'categories' => $categories,
+ 'folders' => $folders,
'text' => strip_tags($body),
'ago' => relative_date($item['created']),
'app' => $item['app'],
@@ -694,7 +699,7 @@ function conversation(&$a, $items, $mode, $update, $page_mode = 'traditional', $
'isotime' => datetime_convert('UTC', date_default_timezone_get(), $item['created'], 'c'),
'localtime' => datetime_convert('UTC', date_default_timezone_get(), $item['created'], 'r'),
'editedtime' => (($item['edited'] != $item['created']) ? sprintf( t('last edited: %s'), datetime_convert('UTC', date_default_timezone_get(), $item['edited'], 'r')) : ''),
- 'expiretime' => (($item['expires'] !== '0000-00-00 00:00:00') ? sprintf( t('Expires: %s'), datetime_convert('UTC', date_default_timezone_get(), $item['expires'], 'r')):''),
+ 'expiretime' => (($item['expires'] !== NULL_DATE) ? sprintf( t('Expires: %s'), datetime_convert('UTC', date_default_timezone_get(), $item['expires'], 'r')):''),
'location' => $location,
'indent' => '',
'owner_name' => $owner_name,
@@ -730,10 +735,10 @@ function conversation(&$a, $items, $mode, $update, $page_mode = 'traditional', $
// Normal View
// logger('conv: items: ' . print_r($items,true));
- require_once('include/ConversationObject.php');
- require_once('include/ItemObject.php');
+ require_once('include/ConversationObject.php');
+ require_once('include/ItemObject.php');
- $conv = new Conversation($mode, $preview, $prepared_item);
+ $conv = new Conversation($mode, $preview, $prepared_item);
// In the display mode we don't have a profile owner.
@@ -741,12 +746,12 @@ function conversation(&$a, $items, $mode, $update, $page_mode = 'traditional', $
$conv->set_profile_owner($items[0]['uid']);
- // get all the topmost parents
- // this shouldn't be needed, as we should have only them in our array
- // But for now, this array respects the old style, just in case
+ // get all the topmost parents
+ // this shouldn't be needed, as we should have only them in our array
+ // But for now, this array respects the old style, just in case
- $threads = array();
- foreach($items as $item) {
+ $threads = array();
+ foreach($items as $item) {
// Check for any blocked authors
@@ -761,7 +766,7 @@ function conversation(&$a, $items, $mode, $update, $page_mode = 'traditional', $
if($blocked)
continue;
}
-
+
// Check all the kids too
if($arr_blocked && $item['children']) {
@@ -773,46 +778,35 @@ function conversation(&$a, $items, $mode, $update, $page_mode = 'traditional', $
}
}
+ like_puller($a, $item, $alike, 'like');
+ if(feature_enabled($profile_owner, 'dislike'))
+ like_puller($a, $item, $dlike, 'dislike');
- like_puller($a,$item,$alike,'like');
-
- if(feature_enabled($profile_owner,'dislike'))
- like_puller($a,$item,$dlike,'dislike');
+ if(! visible_activity($item)) {
+ continue;
+ }
- if(! visible_activity($item)) {
- continue;
- }
+ $item['pagedrop'] = $page_dropping;
- $item['pagedrop'] = $page_dropping;
+ if($item['id'] == $item['parent']) {
- if($item['id'] == $item['parent']) {
-// $tx1 = dba_timer();
- $item_object = new Item($item);
- $conv->add_thread($item_object);
- if($page_mode === 'list')
+ $item_object = new Item($item);
+ $conv->add_thread($item_object);
+ if($page_mode === 'list') {
$item_object->set_template('conv_list.tpl');
-
-// $tx2 = dba_timer();
-// if($mode === 'network')
-// profiler($tx1,$tx2,'add thread ' . $item['id']);
- }
- }
- $t2 = dba_timer();
- $threads = $conv->get_template_data($alike, $dlike);
- if(!$threads) {
- logger('[ERROR] conversation : Failed to get template data.', LOGGER_DEBUG);
- $threads = array();
- }
- $t3 = dba_timer();
- if($mode === 'network') {
- profiler($t1,$t2,'Conversation prepare');
- profiler($t2,$t3,'Conversation get_template');
+ $item_object->set_display_mode('list');
+ }
+ }
}
-
- }
- }
+ $threads = $conv->get_template_data($alike, $dlike);
+ if(!$threads) {
+ logger('[ERROR] conversation : Failed to get template data.', LOGGER_DEBUG);
+ $threads = array();
+ }
+ }
+ }
if($page_mode === 'traditional' || $page_mode === 'preview') {
$page_template = get_markup_template("threaded_conversation.tpl");
@@ -825,8 +819,8 @@ function conversation(&$a, $items, $mode, $update, $page_mode = 'traditional', $
$threads = null;
}
- if($page_mode === 'preview')
- logger('preview: ' . print_r($threads,true));
+// if($page_mode === 'preview')
+// logger('preview: ' . print_r($threads,true));
// Do not un-comment if smarty3 is in use
// logger('page_template: ' . $page_template);
@@ -846,16 +840,7 @@ function conversation(&$a, $items, $mode, $update, $page_mode = 'traditional', $
'$dropping' => ($page_dropping?t('Delete Selected Items'):False),
));
- if($mode === 'network') {
- $t4 = dba_timer();
- profiler($t3,$t4,'conversation template');
- }
-
- if($page_mode === 'preview')
- logger('preview: ' . $o);
-
- return $o;
-
+ return $o;
}
@@ -902,16 +887,20 @@ function item_photo_menu($item){
$contact_url="";
$pm_url="";
$vsrc_link = "";
+ $follow_url = "";
+
- if(local_user()) {
+ $local_user = local_user();
+
+ if($local_user) {
$ssl_state = true;
if(! count($a->contacts))
- load_contact_links(local_user());
+ load_contact_links($local_user);
$channel = $a->get_channel();
$channel_hash = (($channel) ? $channel['channel_hash'] : '');
}
- if((local_user()) && local_user() == $item['uid']) {
+ if(($local_user) && $local_user == $item['uid']) {
$vsrc_link = 'javascript:viewsrc(' . $item['id'] . '); return false;';
if($item['parent'] == $item['id'] && $channel && ($channel_hash != $item['author_xchan'])) {
$sub_link = 'javascript:dosubthread(' . $item['id'] . '); return false;';
@@ -919,14 +908,19 @@ function item_photo_menu($item){
}
$profile_link = chanlink_hash($item['author_xchan']);
- $pm_url = $a->get_baseurl($ssl_state) . '/mail/new/?f=&hash=' . $item['author_xchan'];
+ if($item['uid'] > 0)
+ $pm_url = $a->get_baseurl($ssl_state) . '/mail/new/?f=&hash=' . $item['author_xchan'];
if($a->contacts && array_key_exists($item['author_xchan'],$a->contacts))
$contact = $a->contacts[$item['author_xchan']];
+ else
+ if($local_user && $item['author']['xchan_addr'])
+ $follow_url = z_root() . '/follow/?f=&url=' . $item['author']['xchan_addr'];
if($contact) {
$poke_link = $a->get_baseurl($ssl_state) . '/poke/?f=&c=' . $contact['abook_id'];
- $contact_url = $a->get_baseurl($ssl_state) . '/connedit/' . $contact['abook_id'];
+ if (!($contact['abook_flags'] & ABOOK_FLAG_SELF))
+ $contact_url = $a->get_baseurl($ssl_state) . '/connedit/' . $contact['abook_id'];
$posts_link = $a->get_baseurl($ssl_state) . '/network/?cid=' . $contact['abook_id'];
$clean_url = normalise_link($item['author-link']);
@@ -940,6 +934,7 @@ function item_photo_menu($item){
t("View Profile") => $profile_link,
t("View Photos") => $photos_link,
t("Matrix Activity") => $posts_link,
+ t("Connect") => $follow_url,
t("Edit Contact") => $contact_url,
t("Send PM") => $pm_url,
t("Poke") => $poke_link
@@ -963,26 +958,43 @@ function item_photo_menu($item){
return $o;
}
-
-function like_puller($a,$item,&$arr,$mode) {
+/**
+ * @brief Returns a like/dislike entry.
+ * It gives back a HTML link to the channel that liked/disliked.
+ *
+ * @param array $a (not used)
+ * @param array $item
+ * @param array &$arr
+ * @param string $mode like/dislike
+ * @return void
+ */
+function like_puller($a, $item, &$arr, $mode) {
$url = '';
- $sparkle = '';
$verb = (($mode === 'like') ? ACTIVITY_LIKE : ACTIVITY_DISLIKE);
- if((activity_match($item['verb'],$verb)) && ($item['id'] != $item['parent'])) {
- $url = chanlink_url($item['author']['xchan_url']);
+ if((activity_match($item['verb'], $verb)) && ($item['id'] != $item['parent'])) {
+
+ if($item['author']['xchan_url'])
+ $url = chanlink_url($item['author']['xchan_url']);
if(! $item['thr_parent'])
$item['thr_parent'] = $item['parent_mid'];
if(! ((isset($arr[$item['thr_parent'] . '-l'])) && (is_array($arr[$item['thr_parent'] . '-l']))))
$arr[$item['thr_parent'] . '-l'] = array();
+
if(! isset($arr[$item['thr_parent']]))
$arr[$item['thr_parent']] = 1;
else
$arr[$item['thr_parent']] ++;
- $arr[$item['thr_parent'] . '-l'][] = '<a href="'. $url . '">' . $item['author']['xchan_name'] . '</a>';
+
+ $name = (($item['author']['xchan_name']) ? $item['author']['xchan_name'] : t('Unknown'));
+
+ if($url)
+ $arr[$item['thr_parent'] . '-l'][] = '<a href="'. $url . '">' . $name . '</a>';
+ else
+ $arr[$item['thr_parent'] . '-l'][] = '<a href="#" class="disabled">' . $name . '</a>';
}
return;
}
@@ -1087,8 +1099,8 @@ function status_editor($a,$x,$popup=false) {
$jotplugins = '';
$jotnets = '';
-
- $preview = ((feature_enabled($x['profile_uid'],'preview')) ? t('Preview') : '');
+ $preview = t('Preview');
+// $preview = ((feature_enabled($x['profile_uid'],'preview')) ? t('Preview') : '');
if(x($x,'nopreview'))
$preview = '';
@@ -1120,13 +1132,13 @@ function status_editor($a,$x,$popup=false) {
'$shortaudio' => t('audio link'),
'$setloc' => t('Set your location'),
'$shortsetloc' => t('set location'),
- '$noloc' => t('Clear browser location'),
+ '$noloc' => ((get_pconfig($x['profile_uid'],'system','use_browser_location')) ? t('Clear browser location') : ''),
'$shortnoloc' => t('clear location'),
'$title' => ((x($x,'title')) ? htmlspecialchars($x['title'], ENT_COMPAT,'UTF-8') : ''),
- '$placeholdertitle' => t('Set title'),
+ '$placeholdertitle' => t('Title (optional)'),
'$catsenabled' => ((feature_enabled($x['profile_uid'],'categories') && (! $webpage)) ? 'categories' : ''),
'$category' => "",
- '$placeholdercategory' => t('Categories (comma-separated list)'),
+ '$placeholdercategory' => t('Categories (optional, comma-separated list)'),
'$wait' => t('Please wait'),
'$permset' => t('Permission settings'),
'$shortpermset' => t('permissions'),
@@ -1322,8 +1334,10 @@ function prepare_page($item) {
// the template will get passed an unobscured title.
$body = prepare_body($item,true);
-
- return replace_macros(get_markup_template('page_display.tpl'),array(
+ $tpl = get_pconfig($item['uid'],'system','pagetemplate');
+ if (! $tpl)
+ $tpl = 'page_display.tpl';
+ return replace_macros(get_markup_template($tpl),array(
'$author' => (($naked) ? '' : $item['author']['xchan_name']),
'$auth_url' => (($naked) ? '' : zid($item['author']['xchan_url'])),
'$date' => (($naked) ? '' : datetime_convert('UTC',date_default_timezone_get(),$item['created'],'Y-m-d H:i')),
@@ -1399,7 +1413,7 @@ function network_tabs() {
if(! get_config('system','disable_discover_tab')) {
$tabs[] = array(
'label' => t('Discover'),
- 'url'=>$a->get_baseurl(true) . '/' . $cmd . '?f=&fh=1' . ((x($_GET,'cid')) ? '&cid=' . $_GET['cid'] : '') . ((x($_GET,'gid')) ? '&gid=' . $_GET['gid'] : ''),
+ 'url'=>z_root() . '/' . $cmd . '?f=&fh=1' ,
'sel'=> $public_active,
'title'=> t('Imported public streams'),
);
@@ -1407,14 +1421,14 @@ function network_tabs() {
$tabs[] = array(
'label' => t('Commented Order'),
- 'url'=>$a->get_baseurl(true) . '/' . $cmd . '?f=&order=comment' . ((x($_GET,'cid')) ? '&cid=' . $_GET['cid'] : '') . ((x($_GET,'gid')) ? '&gid=' . $_GET['gid'] : ''),
+ 'url'=>z_root() . '/' . $cmd . '?f=&order=comment' . ((x($_GET,'cid')) ? '&cid=' . $_GET['cid'] : '') . ((x($_GET,'gid')) ? '&gid=' . $_GET['gid'] : ''),
'sel'=>$all_active,
'title'=> t('Sort by Comment Date'),
);
$tabs[] = array(
'label' => t('Posted Order'),
- 'url'=>$a->get_baseurl(true) . '/' . $cmd . '?f=&order=post' . ((x($_GET,'cid')) ? '&cid=' . $_GET['cid'] : '') . ((x($_GET,'gid')) ? '&gid=' . $_GET['gid'] : ''),
+ 'url'=>z_root() . '/' . $cmd . '?f=&order=post' . ((x($_GET,'cid')) ? '&cid=' . $_GET['cid'] : '') . ((x($_GET,'gid')) ? '&gid=' . $_GET['gid'] : ''),
'sel'=>$postord_active,
'title' => t('Sort by Post Date'),
);
@@ -1422,7 +1436,7 @@ function network_tabs() {
if(feature_enabled(local_user(),'personal_tab')) {
$tabs[] = array(
'label' => t('Personal'),
- 'url' => $a->get_baseurl(true) . '/' . $cmd . '?f=' . ((x($_GET,'cid')) ? '&cid=' . $_GET['cid'] : '') . '&conv=1',
+ 'url' => z_root() . '/' . $cmd . '?f=' . ((x($_GET,'cid')) ? '&cid=' . $_GET['cid'] : '') . '&conv=1',
'sel' => $conv_active,
'title' => t('Posts that mention or involve you'),
);
@@ -1431,7 +1445,7 @@ function network_tabs() {
if(feature_enabled(local_user(),'new_tab')) {
$tabs[] = array(
'label' => t('New'),
- 'url' => $a->get_baseurl(true) . '/' . $cmd . '?f=' . ((x($_GET,'cid')) ? '&cid=' . $_GET['cid'] : '') . '&new=1' . ((x($_GET,'gid')) ? '&gid=' . $_GET['gid'] : ''),
+ 'url' => z_root() . '/' . $cmd . '?f=' . ((x($_GET,'cid')) ? '&cid=' . $_GET['cid'] : '') . '&new=1' . ((x($_GET,'gid')) ? '&gid=' . $_GET['gid'] : ''),
'sel' => $new_active,
'title' => t('Activity Stream - by date'),
);
@@ -1440,7 +1454,7 @@ function network_tabs() {
if(feature_enabled(local_user(),'star_posts')) {
$tabs[] = array(
'label' => t('Starred'),
- 'url'=>$a->get_baseurl(true) . '/' . $cmd . ((x($_GET,'cid')) ? '/?f=&cid=' . $_GET['cid'] : '') . '&star=1',
+ 'url'=>z_root() . '/' . $cmd . ((x($_GET,'cid')) ? '/?f=&cid=' . $_GET['cid'] : '') . '&star=1',
'sel'=>$starred_active,
'title' => t('Favourite Posts'),
);
@@ -1450,7 +1464,7 @@ function network_tabs() {
if(feature_enabled(local_user(),'spam_filter')) {
$tabs[] = array(
'label' => t('Spam'),
- 'url'=>$a->get_baseurl(true) . '/network?f=&spam=1',
+ 'url'=> z_root() . '/network?f=&spam=1',
'sel'=> $spam_active,
'title' => t('Posts flagged as SPAM'),
);
@@ -1468,8 +1482,12 @@ function network_tabs() {
function profile_tabs($a, $is_owner=False, $nickname=Null){
- //echo "<pre>"; var_dump($a->user); killme();
-
+
+ // Don't provide any profile tabs if we're running as the sys channel
+
+ if($a->is_sys)
+ return;
+
$channel = $a->get_channel();
if (is_null($nickname))
@@ -1526,19 +1544,23 @@ function profile_tabs($a, $is_owner=False, $nickname=Null){
);
}
- require_once('include/chat.php');
- $chats = chatroom_list($uid);
- if (count($chats)) {
- $tabs[] = array(
- 'label' => t('Chatrooms'),
- 'url' => $a->get_baseurl() . '/chat/' . $nickname,
- 'sel' => ((argv(0) == 'chat') ? 'active' : '' ),
- 'title' => t('Chatrooms'),
- 'id' => 'chat-tab',
- );
+ if($p['chat']) {
+ require_once('include/chat.php');
+ $has_chats = chatroom_list_count($uid);
+ if ($has_chats) {
+ $tabs[] = array(
+ 'label' => t('Chatrooms'),
+ 'url' => $a->get_baseurl() . '/chat/' . $nickname,
+ 'sel' => ((argv(0) == 'chat') ? 'active' : '' ),
+ 'title' => t('Chatrooms'),
+ 'id' => 'chat-tab',
+ );
+ }
}
- if($is_owner) {
+ require_once('include/menu.php');
+ $has_bookmarks = menu_list_count(local_user(),'',MENU_BOOKMARK) + menu_list_count(local_user(),'',MENU_SYSTEM|MENU_BOOKMARK);
+ if($is_owner && $has_bookmarks) {
$tabs[] = array(
'label' => t('Bookmarks'),
'url' => $a->get_baseurl() . '/bookmarks',
diff --git a/include/crypto.php b/include/crypto.php
index 33cdc10c0..07655e24f 100644
--- a/include/crypto.php
+++ b/include/crypto.php
@@ -1,5 +1,8 @@
<?php /** @file */
+require_once('library/ASNValue.class.php');
+require_once('library/asn1.php');
+
function rsa_sign($data,$key,$alg = 'sha256') {
if(! $key)
return 'no key';
@@ -127,3 +130,193 @@ function new_keypair($bits) {
}
+function pkcs1to8($oldkey,$len) {
+
+ if($len == 4096)
+ $c = 'g';
+ if($len == 2048)
+ $c = 'Q';
+
+ if(strstr($oldkey,'BEGIN PUBLIC'))
+ return $oldkey;
+
+ $oldkey = str_replace('-----BEGIN RSA PUBLIC KEY-----', '', $oldkey);
+ $oldkey = trim(str_replace('-----END RSA PUBLIC KEY-----', '', $oldkey));
+ $key = 'MIICIjANBgkqhkiG9w0BAQEFAAOCA' . $c . '8A' . str_replace("\n", '', $oldkey);
+ $key = "-----BEGIN PUBLIC KEY-----\n" . wordwrap($key, 64, "\n", true) . "\n-----END PUBLIC KEY-----";
+ return $key;
+}
+
+function pkcs8to1($oldkey,$len) {
+
+ if(strstr($oldkey,'BEGIN RSA'))
+ return $oldkey;
+
+ $oldkey = str_replace('-----BEGIN PUBLIC KEY-----', '', $oldkey);
+ $oldkey = trim(str_replace('-----END PUBLIC KEY-----', '', $oldkey));
+ $key = str_replace("\n",'',$oldkey);
+ $key = substr($key,32);
+ $key = "-----BEGIN RSA PUBLIC KEY-----\n" . wordwrap($key, 64, "\n", true) . "\n-----END RSA PUBLIC KEY-----";
+ return $key;
+}
+
+
+function DerToPem($Der, $Private=false)
+{
+ //Encode:
+ $Der = base64_encode($Der);
+ //Split lines:
+ $lines = str_split($Der, 65);
+ $body = implode("\n", $lines);
+ //Get title:
+ $title = $Private? 'RSA PRIVATE KEY' : 'PUBLIC KEY';
+ //Add wrapping:
+ $result = "-----BEGIN {$title}-----\n";
+ $result .= $body . "\n";
+ $result .= "-----END {$title}-----\n";
+
+ return $result;
+}
+
+function DerToRsa($Der)
+{
+ //Encode:
+ $Der = base64_encode($Der);
+ //Split lines:
+ $lines = str_split($Der, 64);
+ $body = implode("\n", $lines);
+ //Get title:
+ $title = 'RSA PUBLIC KEY';
+ //Add wrapping:
+ $result = "-----BEGIN {$title}-----\n";
+ $result .= $body . "\n";
+ $result .= "-----END {$title}-----\n";
+
+ return $result;
+}
+
+
+function pkcs8_encode($Modulus,$PublicExponent) {
+ //Encode key sequence
+ $modulus = new ASNValue(ASNValue::TAG_INTEGER);
+ $modulus->SetIntBuffer($Modulus);
+ $publicExponent = new ASNValue(ASNValue::TAG_INTEGER);
+ $publicExponent->SetIntBuffer($PublicExponent);
+ $keySequenceItems = array($modulus, $publicExponent);
+ $keySequence = new ASNValue(ASNValue::TAG_SEQUENCE);
+ $keySequence->SetSequence($keySequenceItems);
+ //Encode bit string
+ $bitStringValue = $keySequence->Encode();
+ $bitStringValue = chr(0x00) . $bitStringValue; //Add unused bits byte
+ $bitString = new ASNValue(ASNValue::TAG_BITSTRING);
+ $bitString->Value = $bitStringValue;
+ //Encode body
+ $bodyValue = "\x30\x0d\x06\x09\x2a\x86\x48\x86\xf7\x0d\x01\x01\x01\x05\x00" . $bitString->Encode();
+ $body = new ASNValue(ASNValue::TAG_SEQUENCE);
+ $body->Value = $bodyValue;
+ //Get DER encoded public key:
+ $PublicDER = $body->Encode();
+ return $PublicDER;
+}
+
+
+function pkcs1_encode($Modulus,$PublicExponent) {
+ //Encode key sequence
+ $modulus = new ASNValue(ASNValue::TAG_INTEGER);
+ $modulus->SetIntBuffer($Modulus);
+ $publicExponent = new ASNValue(ASNValue::TAG_INTEGER);
+ $publicExponent->SetIntBuffer($PublicExponent);
+ $keySequenceItems = array($modulus, $publicExponent);
+ $keySequence = new ASNValue(ASNValue::TAG_SEQUENCE);
+ $keySequence->SetSequence($keySequenceItems);
+ //Encode bit string
+ $bitStringValue = $keySequence->Encode();
+ return $bitStringValue;
+}
+
+
+function metopem($m,$e) {
+ $der = pkcs8_encode($m,$e);
+ $key = DerToPem($der,false);
+ return $key;
+}
+
+
+function pubrsatome($key,&$m,&$e) {
+ require_once('library/asn1.php');
+
+ $lines = explode("\n",$key);
+ unset($lines[0]);
+ unset($lines[count($lines)]);
+ $x = base64_decode(implode('',$lines));
+
+ $r = ASN_BASE::parseASNString($x);
+
+ $m = base64url_decode($r[0]->asnData[0]->asnData);
+ $e = base64url_decode($r[0]->asnData[1]->asnData);
+}
+
+
+function rsatopem($key) {
+ pubrsatome($key,$m,$e);
+ return(metopem($m,$e));
+}
+
+function pemtorsa($key) {
+ pemtome($key,$m,$e);
+ return(metorsa($m,$e));
+}
+
+function pemtome($key,&$m,&$e) {
+ $lines = explode("\n",$key);
+ unset($lines[0]);
+ unset($lines[count($lines)]);
+ $x = base64_decode(implode('',$lines));
+
+ $r = ASN_BASE::parseASNString($x);
+
+ $m = base64url_decode($r[0]->asnData[1]->asnData[0]->asnData[0]->asnData);
+ $e = base64url_decode($r[0]->asnData[1]->asnData[0]->asnData[1]->asnData);
+}
+
+function metorsa($m,$e) {
+ $der = pkcs1_encode($m,$e);
+ $key = DerToRsa($der);
+ return $key;
+}
+
+function salmon_key($pubkey) {
+ pemtome($pubkey,$m,$e);
+ return 'RSA' . '.' . base64url_encode($m,true) . '.' . base64url_encode($e,true) ;
+}
+
+// old function for providing mysql compatible encryption and is also
+// used in Friendica 'RINO'. This function is messy and should be retired.
+
+
+if(! function_exists('aes_decrypt')) {
+function aes_decrypt($val,$ky)
+{
+ $key="\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0";
+ for($a=0;$a<strlen($ky);$a++)
+ $key[$a%16]=chr(ord($key[$a%16]) ^ ord($ky[$a]));
+ $mode = MCRYPT_MODE_ECB;
+ $enc = MCRYPT_RIJNDAEL_128;
+ $dec = @mcrypt_decrypt($enc, $key, $val, $mode, @mcrypt_create_iv( @mcrypt_get_iv_size($enc, $mode), MCRYPT_DEV_URANDOM ) );
+ return rtrim($dec,(( ord(substr($dec,strlen($dec)-1,1))>=0 and ord(substr($dec, strlen($dec)-1,1))<=16)? chr(ord( substr($dec,strlen($dec)-1,1))):null));
+}}
+
+
+if(! function_exists('aes_encrypt')) {
+function aes_encrypt($val,$ky)
+{
+ $key="\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0";
+ for($a=0;$a<strlen($ky);$a++)
+ $key[$a%16]=chr(ord($key[$a%16]) ^ ord($ky[$a]));
+ $mode=MCRYPT_MODE_ECB;
+ $enc=MCRYPT_RIJNDAEL_128;
+ $val=str_pad($val, (16*(floor(strlen($val) / 16)+(strlen($val) % 16==0?2:1))), chr(16-(strlen($val) % 16)));
+ return mcrypt_encrypt($enc, $key, $val, $mode, mcrypt_create_iv( mcrypt_get_iv_size($enc, $mode), MCRYPT_DEV_URANDOM));
+}}
+
+
diff --git a/include/datetime.php b/include/datetime.php
index 0214b9e4c..346d03bd4 100644
--- a/include/datetime.php
+++ b/include/datetime.php
@@ -14,25 +14,17 @@ function timezone_cmp($a, $b) {
return ( t($a) < t($b)) ? -1 : 1;
}
-// emit a timezone selector grouped (primarily) by continent
-
-function select_timezone($current = 'America/Los_Angeles') {
-
+// Return timezones grouped (primarily) by continent
+function get_timezones( ){
$timezone_identifiers = DateTimeZone::listIdentifiers();
-
- $o ='<select id="timezone_select" name="timezone">';
usort($timezone_identifiers, 'timezone_cmp');
$continent = '';
+ $continents = array();
foreach($timezone_identifiers as $value) {
$ex = explode("/", $value);
if(count($ex) > 1) {
- if($ex[0] != $continent) {
- if($continent != '')
- $o .= '</optgroup>';
- $continent = $ex[0];
- $o .= '<optgroup label="' . t($continent) . '">';
- }
+ $continent = t($ex[0]);
if(count($ex) > 2)
$city = substr($value,strpos($value,'/')+1);
else
@@ -40,35 +32,14 @@ function select_timezone($current = 'America/Los_Angeles') {
}
else {
$city = $ex[0];
- if($continent != t('Miscellaneous')) {
- $o .= '</optgroup>';
- $continent = t('Miscellaneous');
- $o .= '<optgroup label="' . t($continent) . '">';
- }
+ $continent = t('Miscellaneous');
}
$city = str_replace('_', ' ', t($city));
- $selected = (($value == $current) ? " selected=\"selected\" " : "");
- $o .= "<option value=\"$value\" $selected >$city</option>";
- }
- $o .= '</optgroup></select>';
- return $o;
-}
-// return a select using 'field_select_raw' template, with timezones
-// groupped (primarily) by continent
-// arguments follow convetion as other field_* template array:
-// 'name', 'label', $value, 'help'
-
-function field_timezone($name='timezone', $label='', $current = 'America/Los_Angeles', $help){
- $options = select_timezone($current);
- $options = str_replace('<select id="timezone_select" name="timezone">','', $options);
- $options = str_replace('</select>','', $options);
-
- $tpl = get_markup_template('field_select_raw.tpl');
- return replace_macros($tpl, array(
- '$field' => array($name, $label, $current, $help, $options),
- ));
-
+ if(!x($continents,$ex[0])) $continents[$ex[0]] = array();
+ $continents[$continent][$value] = $city;
+ }
+ return $continents;
}
// General purpose date parse/convert function.
@@ -130,135 +101,119 @@ function datetime_convert($from = 'UTC', $to = 'UTC', $s = 'now', $fmt = "Y-m-d
function dob($dob) {
list($year,$month,$day) = sscanf($dob,'%4d-%2d-%2d');
- $y = datetime_convert('UTC',date_default_timezone_get(),'now','Y');
$f = get_config('system','birthday_input_format');
if(! $f)
$f = 'ymd';
- $o = datesel($f,'',1920,$y,true,$year,$month,$day);
- return $o;
-}
+ if($dob === '0000-00-00')
+ $value = '';
+ else
+ $value = (($year) ? datetime_convert('UTC','UTC',$dob,'Y-m-d') : datetime_convert('UTC','UTC',$dob,'m-d'));
-function datesel_format($f) {
+ $o = '<input type="text" name="dob" value="' . $value . '" placeholder="' . t('YYYY-MM-DD or MM-DD') . '" />';
- $o = '';
+// if ($dob && $dob != '0000-00-00')
+// $o = datesel($f,mktime(0,0,0,0,0,1900),mktime(),mktime(0,0,0,$month,$day,$year),'dob');
+// else
+// $o = datesel($f,mktime(0,0,0,0,0,1900),mktime(),false,'dob');
- if(strlen($f)) {
- for($x = 0; $x < strlen($f); $x ++) {
- switch($f[$x]) {
- case 'y':
- if(strlen($o))
- $o .= '-';
- $o .= t('year');
- break;
- case 'm':
- if(strlen($o))
- $o .= '-';
- $o .= t('month');
- break;
- case 'd':
- if(strlen($o))
- $o .= '-';
- $o .= t('day');
- break;
- default:
- break;
- }
- }
- }
return $o;
}
-// returns a date selector.
-// $f = format string, e.g. 'ymd' or 'mdy'
-// $pre = prefix (if needed) for HTML name and class fields
-// $ymin = first year shown in selector dropdown
-// $ymax = last year shown in selector dropdown
-// $allow_blank = allow an empty response on any field
-// $y = already selected year
-// $m = already selected month
-// $d = already selected day
-
-
-function datesel($f,$pre,$ymin,$ymax,$allow_blank,$y,$m,$d) {
-
- $o = '';
-
- if(strlen($f)) {
- for($z = 0; $z < strlen($f); $z ++) {
- if($f[$z] === 'y') {
-
- $o .= "<select name=\"{$pre}year\" class=\"{$pre}year\" size=\"1\">";
- if($allow_blank) {
- $sel = (($y == '0000') ? " selected=\"selected\" " : "");
- $o .= "<option value=\"0000\" $sel ></option>";
- }
-
- if($ymax > $ymin) {
- for($x = $ymax; $x >= $ymin; $x --) {
- $sel = (($x == $y) ? " selected=\"selected\" " : "");
- $o .= "<option value=\"$x\" $sel>$x</option>";
- }
- }
- else {
- for($x = $ymax; $x <= $ymin; $x ++) {
- $sel = (($x == $y) ? " selected=\"selected\" " : "");
- $o .= "<option value=\"$x\" $sel>$x</option>";
- }
- }
- }
- elseif($f[$z] == 'm') {
-
- $o .= "</select> <select name=\"{$pre}month\" class=\"{$pre}month\" size=\"1\">";
- for($x = (($allow_blank) ? 0 : 1); $x <= 12; $x ++) {
- $sel = (($x == $m) ? " selected=\"selected\" " : "");
- $y = (($x) ? $x : '');
- $o .= "<option value=\"$x\" $sel>$y</option>";
- }
- }
- elseif($f[$z] == 'd') {
-
- $o .= "</select> <select name=\"{$pre}day\" class=\"{$pre}day\" size=\"1\">";
- for($x = (($allow_blank) ? 0 : 1); $x <= 31; $x ++) {
- $sel = (($x == $d) ? " selected=\"selected\" " : "");
- $y = (($x) ? $x : '');
- $o .= "<option value=\"$x\" $sel>$y</option>";
- }
- }
- }
- }
+/**
+ * returns a date selector
+ * @param $format
+ * format string, e.g. 'ymd' or 'mdy'. Not currently supported
+ * @param $min
+ * unix timestamp of minimum date
+ * @param $max
+ * unix timestap of maximum date
+ * @param $default
+ * unix timestamp of default date
+ * @param $id
+ * id and name of datetimepicker (defaults to "datetimepicker")
+ */
+function datesel($format, $min, $max, $default, $id = 'datepicker') {
+ return datetimesel($format,$min,$max,$default,$id,true,false, '','');
+}
- $o .= "</select>";
- return $o;
+/**
+ * returns a time selector
+ * @param $format
+ * format string, e.g. 'ymd' or 'mdy'. Not currently supported
+ * @param $h
+ * already selected hour
+ * @param $m
+ * already selected minute
+ * @param $id
+ * id and name of datetimepicker (defaults to "timepicker")
+ */
+function timesel($format, $h, $m, $id='timepicker') {
+ return datetimesel($format,new DateTime(),new DateTime(),new DateTime("$h:$m"),$id,false,true);
}
+/**
+ * returns a datetime selector
+ * @param $format
+ * format string, e.g. 'ymd' or 'mdy'. Not currently supported
+ * @param $min
+ * unix timestamp of minimum date
+ * @param $max
+ * unix timestap of maximum date
+ * @param $default
+ * unix timestamp of default date
+ * @param $id
+ * id and name of datetimepicker (defaults to "datetimepicker")
+ * @param $pickdate
+ * true to show date picker (default)
+ * @param $picktime
+ * true to show time picker (default)
+ * @param $minfrom
+ * set minimum date from picker with id $minfrom (none by default)
+ * @param $maxfrom
+ * set maximum date from picker with id $maxfrom (none by default)
+ */
+function datetimesel($format, $min, $max, $default, $id = 'datetimepicker', $pickdate = true, $picktime = true, $minfrom = '', $maxfrom = '') {
+ // Once browser support is better this could probably be replaced with native HTML5 date picker
+ $o = '';
-function timesel($pre,$h,$m) {
+ $dateformat = '';
- $o = '';
- $o .= "<select name=\"{$pre}hour\" class=\"{$pre}hour\" size=\"1\">";
- for($x = 0; $x < 24; $x ++) {
- $sel = (($x == $h) ? " selected=\"selected\" " : "");
- $o .= "<option value=\"$x\" $sel>$x</option>";
- }
- $o .= "</select> : <select name=\"{$pre}minute\" class=\"{$pre}minute\" size=\"1\">";
- for($x = 0; $x < 60; $x ++) {
- $sel = (($x == $m) ? " selected=\"selected\" " : "");
- $o .= "<option value=\"$x\" $sel>$x</option>";
- }
+ if($pickdate) $dateformat .= 'Y-m-d';
+ if($pickdate && $picktime) $dateformat .= ' ';
+ if($picktime) $dateformat .= 'H:i';
- $o .= "</select>";
+ $minjs = $min ? ",minDate: new Date({$min->getTimestamp()}*1000), yearStart: " . $min->format('Y') : '';
+ $maxjs = $max ? ",maxDate: new Date({$max->getTimestamp()}*1000), yearEnd: " . $max->format('Y') : '';
+
+ $input_text = $default ? 'value="' . date($dateformat, $default->getTimestamp()) . '"' : '';
+ $defaultdatejs = $default ? ",defaultDate: new Date({$default->getTimestamp()}*1000)" : '';
+
+ $pickers = '';
+ if(!$pickdate) $pickers .= ',datepicker: false';
+ if(!$picktime) $pickers .= ',timepicker: false';
+
+ $extra_js = '';
+ if($minfrom != '')
+ $extra_js .= "\$('#$minfrom').data('xdsoft_datetimepicker').setOptions({onChangeDateTime: function (currentDateTime) { \$('#$id').data('xdsoft_datetimepicker').setOptions({minDate: currentDateTime})}})";
+
+ if($maxfrom != '')
+ $extra_js .= "\$('#$maxfrom').data('xdsoft_datetimepicker').setOptions({onChangeDateTime: function (currentDateTime) { \$('#$id').data('xdsoft_datetimepicker').setOptions({maxDate: currentDateTime})}})";
+
+ $readable_format = $dateformat;
+ $readable_format = str_replace('Y','yyyy',$readable_format);
+ $readable_format = str_replace('m','mm',$readable_format);
+ $readable_format = str_replace('d','dd',$readable_format);
+ $readable_format = str_replace('H','HH',$readable_format);
+ $readable_format = str_replace('i','MM',$readable_format);
+
+ $o .= "<div class='date'><input type='text' placeholder='$readable_format' name='$id' id='$id' $input_text />";
+ $o .= '</div>';
+ $o .= "<script type='text/javascript'>\$(function () {var picker = \$('#$id').datetimepicker({step:5,format:'$dateformat' $minjs $maxjs $pickers $defaultdatejs}); $extra_js})</script>";
return $o;
}
-
-
-
-
-
-
-
// implements "3 seconds ago" etc.
// based on $posted_date, (UTC).
// Results relative to current timezone
@@ -271,7 +226,7 @@ function relative_date($posted_date,$format = null) {
$abs = strtotime($localtime);
- if (is_null($posted_date) || $posted_date === '0000-00-00 00:00:00' || $abs === False) {
+ if (is_null($posted_date) || $posted_date === NULL_DATE || $abs === False) {
return t('never');
}
@@ -487,7 +442,10 @@ function update_birthdays() {
require_once('include/permissions.php');
$r = q("SELECT * FROM abook left join xchan on abook_xchan = xchan_hash
- WHERE abook_dob > utc_timestamp() + interval 7 day and abook_dob < utc_timestamp() + interval 14 day");
+ WHERE abook_dob > %s + interval %s and abook_dob < %s + interval %s",
+ db_utcnow(), db_quoteinterval('7 day'),
+ db_utcnow(), db_quoteinterval('14 day')
+ );
if($r) {
foreach($r as $rr) {
@@ -509,11 +467,11 @@ function update_birthdays() {
$z = event_store_event($ev);
if($z) {
$item_id = event_store_item($ev,$z);
- q("update abook set abook_dob = '%s' where abook_id = %d limit 1",
+ q("update abook set abook_dob = '%s' where abook_id = %d",
dbesc(intval($rr['abook_dob']) + 1 . substr($rr['abook_dob'],4)),
intval($rr['abook_id'])
);
}
}
}
-} \ No newline at end of file
+}
diff --git a/include/dba/dba_driver.php b/include/dba/dba_driver.php
index c829c3714..4a0f5e37b 100755
--- a/include/dba/dba_driver.php
+++ b/include/dba/dba_driver.php
@@ -1,42 +1,134 @@
-<?php /** @file */
+<?php
+/**
+ * @file dba_driver.php
+ * @brief some database related functions and abstract driver class.
+ *
+ * This file contains the abstract database driver class dba_driver and some
+ * functions for working with databases.
+ */
-function dba_factory($server, $port,$user,$pass,$db,$install = false) {
+/**
+ * @brief Returns the database driver object.
+ *
+ * If available it will use PHP's mysqli otherwise mysql driver.
+ *
+ * @param string $server DB server name
+ * @param string $port DB port
+ * @param string $user DB username
+ * @param string $pass DB password
+ * @param string $db database name
+ * @param string $dbtype 0 for mysql, 1 for postgres
+ * @param bool $install Defaults to false
+ * @return null|dba_driver A database driver object (dba_mysql|dba_mysqli) or null if no driver found.
+ */
+function dba_factory($server, $port,$user,$pass,$db,$dbtype,$install = false) {
$dba = null;
- if(class_exists('mysqli')) {
- if (is_null($port)) $port = ini_get("mysqli.default_port");
- require_once('include/dba/dba_mysqli.php');
- $dba = new dba_mysqli($server, $port,$user,$pass,$db,$install);
- }
- else {
- if (is_null($port)) $port = "3306";
- require_once('include/dba/dba_mysql.php');
- $dba = new dba_mysql($server, $port,$user,$pass,$db,$install);
+
+ $dbtype = intval($dbtype);
+
+ if($dbtype == DBTYPE_POSTGRES) {
+ require_once('include/dba/dba_postgres.php');
+ if(is_null($port)) $port = 5432;
+ $dba = new dba_postgres($server, $port, $user, $pass, $db, $install);
+ } else {
+ if(class_exists('mysqli')) {
+ if (is_null($port)) $port = ini_get("mysqli.default_port");
+ require_once('include/dba/dba_mysqli.php');
+ $dba = new dba_mysqli($server, $port,$user,$pass,$db,$install);
+ } else {
+ if (is_null($port)) $port = "3306";
+ require_once('include/dba/dba_mysql.php');
+ $dba = new dba_mysql($server, $port,$user,$pass,$db,$install);
+ }
}
+ define('NULL_DATE', $dba->get_null_date());
+ define('ACTIVE_DBTYPE', $dbtype);
return $dba;
}
-
+/**
+ * @brief abstract database driver class.
+ *
+ * This class gets extended by the real database driver classes, e.g. dba_mysql,
+ * dba_mysqli.
+ */
abstract class dba_driver {
-
+ // legacy behavior
+ const INSTALL_SCRIPT='install/schema_mysql.sql';
+ const NULL_DATE = '0000-00-00 00:00:00';
+ const UTC_NOW = 'UTC_TIMESTAMP()';
+
protected $debug = 0;
protected $db;
public $connected = false;
public $error = false;
- abstract function connect($server, $port, $user,$pass,$db);
+ /**
+ * @brief Connect to the database.
+ *
+ * This abstract function needs to be implemented in the real driver.
+ *
+ * @param string $server DB server name
+ * @param string $port DB port
+ * @param string $user DB username
+ * @param string $pass DB password
+ * @param string $db database name
+ * @return bool
+ */
+ abstract function connect($server, $port, $user, $pass, $db);
+
+ /**
+ * @brief Perform a DB query with the SQL statement $sql.
+ *
+ * This abstract function needs to be implemented in the real driver.
+ *
+ * @param string $sql The SQL query to execute
+ */
abstract function q($sql);
+
+ /**
+ * @brief Escape a string before being passed to a DB query.
+ *
+ * This abstract function needs to be implemented in the real driver.
+ *
+ * @param string $str The string to escape.
+ */
abstract function escape($str);
+
+ /**
+ * @brief Close the database connection.
+ *
+ * This abstract function needs to be implemented in the real driver.
+ */
abstract function close();
+ /**
+ * @brief Return text name for db driver
+ *
+ * This abstract function needs to be implemented in the real driver.
+ */
+ abstract function getdriver();
+
function __construct($server, $port, $user,$pass,$db,$install = false) {
- if(($install) && (! $this->install($server, $port, $user,$pass,$db))) {
+ if(($install) && (! $this->install($server, $port, $user, $pass, $db))) {
return;
}
- $this->connect($server, $port, $user,$pass,$db);
+ $this->connect($server, $port, $user, $pass, $db);
}
+ function get_null_date() {
+ return static::NULL_DATE;
+ }
+
+ function get_install_script() {
+ return static::INSTALL_SCRIPT;
+ }
+
+ function utcnow() {
+ return static::UTC_NOW;
+ }
function install($server,$user,$pass,$db) {
if (!(strlen($server) && strlen($user))){
@@ -56,7 +148,11 @@ abstract class dba_driver {
return true;
}
-
+ /**
+ * @brief Sets the database driver's debugging state.
+ *
+ * @param int $dbg 0 to disable debugging
+ */
function dbg($dbg) {
$this->debug = $dbg;
}
@@ -67,9 +163,30 @@ abstract class dba_driver {
}
}
-}
+ function quote_interval($txt) {
+ return $txt;
+ }
+
+ function optimize_table($table) {
+ q('OPTIMIZE TABLE '.$table);
+ }
+
+ function concat($fld, $sep) {
+ return 'GROUP_CONCAT(DISTINCT '.$fld.' SEPARATOR \''.$sep.'\')';
+ }
+
+ function escapebin($str) {
+ return $this->escape($str);
+ }
+
+ function unescapebin($str) {
+ return $str;
+ }
+} // end abstract dba_driver class
+
+// Procedural functions
function printable($s) {
$s = preg_replace("~([\x01-\x08\x0E-\x0F\x10-\x1F\x7F-\xFF])~",".", $s);
@@ -79,24 +196,79 @@ function printable($s) {
return $s;
}
-// Procedural functions
-
+/**
+ * @brief set database driver debugging state.
+ *
+ * @param int $state 0 to disable debugging
+ */
function dbg($state) {
global $db;
+
if($db)
- $db->dbg($state);
+ $db->dbg($state);
}
-
+/**
+ * @brief Escape strings being passed to DB queries.
+ *
+ * Always escape strings being used in DB queries. This function returns the
+ * escaped string. Integer DB parameters should all be proven integers by
+ * wrapping with intval().
+ *
+ * @param string $str A string to pass to a DB query
+ * @return Return an escaped string of the value to pass to a DB query.
+ */
function dbesc($str) {
global $db;
+
if($db && $db->connected)
return($db->escape($str));
else
- return(str_replace("'","\\'",$str));
+ return(str_replace("'", "\\'", $str));
+}
+function dbescbin($str) {
+ global $db;
+ return $db->escapebin($str);
+}
+
+function dbunescbin($str) {
+ global $db;
+ return $db->unescapebin($str);
}
+function dbescdate($date) {
+ if(ACTIVE_DBTYPE == DBTYPE_POSTGRES && $date == '0000-00-00 00:00:00') {
+ $date = NULL_DATE;
+ } else if(ACTIVE_DBTYPE != DBTYPE_POSTGRES && $date == '0001-01-01 00:00:00') {
+ $date = NULL_DATE;
+ }
+ return $date;
+}
+
+function db_quoteinterval($txt) {
+ global $db;
+ return $db->quote_interval($txt);
+}
+
+function dbesc_identifier($str) {
+ global $db;
+ return $db->escape_identifier($txt);
+}
+
+function db_utcnow() {
+ global $db;
+ return $db->utcnow();
+}
+
+function db_optimizetable($table) {
+ global $db;
+ $db->optimize_table($table);
+}
+function db_concat($fld, $sep) {
+ global $db;
+ return $db->concat($fld, $sep);
+}
// Function: q($sql,$args);
// Description: execute SQL query with printf style args.
@@ -104,64 +276,114 @@ function dbesc($str) {
// 'user', 1);
+/**
+ * @brief Execute a SQL query with printf style args.
+ *
+ * printf style arguments %s and %d are replaced with variable arguments, which
+ * should each be appropriately dbesc() or intval().
+ * SELECT queries return an array of results or false if SQL or DB error. Other
+ * queries return true if the command was successful or false if it wasn't.
+ *
+ * Example:
+ * $r = q("SELECT * FROM `%s` WHERE `uid` = %d",
+ * 'user', 1);
+ *
+ * @param string $sql The SQL query to execute
+ * @return bool|array
+ */
function q($sql) {
-
global $db;
+
$args = func_get_args();
unset($args[0]);
if($db && $db->connected) {
- $stmt = vsprintf($sql,$args);
- if($stmt === false)
- logger('dba: vsprintf error: ' . print_r(debug_backtrace(),true));
+ $stmt = vsprintf($sql, $args);
+ if($stmt === false) {
+ if(version_compare(PHP_VERSION, '5.4.0') >= 0)
+ logger('dba: vsprintf error: ' .
+ print_r(debug_backtrace(DEBUG_BACKTRACE_PROVIDE_OBJECT, 1), true));
+ else
+ logger('dba: vsprintf error: ' . print_r(debug_backtrace(), true));
+ }
return $db->q($stmt);
}
- /**
- *
+ /*
* This will happen occasionally trying to store the
* session data after abnormal program termination
- *
*/
logger('dba: no database: ' . print_r($args,true));
- return false;
+ return false;
}
/**
+ * @brief Raw DB query, no arguments.
*
- * Raw db query, no arguments
+ * This function executes a raw DB query without any arguments.
*
+ * @param string $sql The SQL query to execute
*/
-
-
function dbq($sql) {
-
global $db;
+
if($db && $db->connected)
$ret = $db->q($sql);
else
$ret = false;
+
return $ret;
}
-// Caller is responsible for ensuring that any integer arguments to
+
+// Caller is responsible for ensuring that any integer arguments to
// dbesc_array are actually integers and not malformed strings containing
// SQL injection vectors. All integer array elements should be specifically
// cast to int to avoid trouble.
-
-
function dbesc_array_cb(&$item, $key) {
- if(is_string($item))
+ if(is_string($item)) {
+ if($item == '0000-00-00 00:00:00' && ACTIVE_DBTYPE == DBTYPE_POSTGRES)
+ $item = '0001-01-01 00:00:00';
+ else if($item == '0001-01-01 00:00:00' && ACTIVE_DBTYPE == DBTYPE_MYSQL)
+ $item = '0000-00-00 00:00:00';
$item = dbesc($item);
+ }
}
-
function dbesc_array(&$arr) {
if(is_array($arr) && count($arr)) {
array_walk($arr,'dbesc_array_cb');
}
}
+
+function db_getfunc($f) {
+ $lookup = array(
+ 'rand'=>array(
+ DBTYPE_MYSQL=>'RAND()',
+ DBTYPE_POSTGRES=>'RANDOM()'
+ ),
+ 'utc_timestamp'=>array(
+ DBTYPE_MYSQL=>'UTC_TIMESTAMP()',
+ DBTYPE_POSTGRES=>"now() at time zone 'UTC'"
+ ),
+ 'regexp'=>array(
+ DBTYPE_MYSQL=>'REGEXP',
+ DBTYPE_POSTGRES=>'~'
+ ),
+ '^'=>array(
+ DBTYPE_MYSQL=>'^',
+ DBTYPE_POSTGRES=>'#'
+ )
+ );
+ $f = strtolower($f);
+ if(isset($lookup[$f]) && isset($lookup[$f][ACTIVE_DBTYPE]))
+ return $lookup[$f][ACTIVE_DBTYPE];
+
+ logger('Unable to abstract DB function "'. $f . '" for dbtype ' . ACTIVE_DBTYPE, LOGGER_DEBUG);
+ return $f;
+}
+
diff --git a/include/dba/dba_mysql.php b/include/dba/dba_mysql.php
index f5a2a47ba..3cadad6dc 100755
--- a/include/dba/dba_mysql.php
+++ b/include/dba/dba_mysql.php
@@ -59,5 +59,9 @@ class dba_mysql extends dba_driver {
mysql_close($this->db);
$this->connected = false;
}
+
+ function getdriver() {
+ return 'mysql';
+ }
}
diff --git a/include/dba/dba_mysqli.php b/include/dba/dba_mysqli.php
index 19907705b..74a999974 100755
--- a/include/dba/dba_mysqli.php
+++ b/include/dba/dba_mysqli.php
@@ -40,7 +40,7 @@ class dba_mysqli extends dba_driver {
if(($result === true) || ($result === false)) {
if($this->debug) {
- logger('dba_mysqli: DEBUG: returns ' . (($result) ? 'true' : 'false'));
+ logger('dba_mysqli: DEBUG: ' . printable($sql) . ' returns ' . (($result) ? 'true' : 'false'));
}
return $result;
}
@@ -72,5 +72,9 @@ class dba_mysqli extends dba_driver {
$this->db->close();
$this->connected = false;
}
+
+ function getdriver() {
+ return 'mysqli';
+ }
} \ No newline at end of file
diff --git a/include/dba/dba_postgres.php b/include/dba/dba_postgres.php
new file mode 100644
index 000000000..ba4366d13
--- /dev/null
+++ b/include/dba/dba_postgres.php
@@ -0,0 +1,116 @@
+<?php
+
+require_once('include/dba/dba_driver.php');
+
+
+class dba_postgres extends dba_driver {
+ const INSTALL_SCRIPT='install/schema_postgres.sql';
+ const NULL_DATE = '0001-01-01 00:00:00';
+ const UTC_NOW = "now() at time zone 'UTC'";
+
+ function connect($server,$port,$user,$pass,$db) {
+ if(!$port) $port = 5432;
+ $connstr = 'host=' . $server . ' port='.$port . ' user=' . $user . ' password=' . $pass . ' dbname='. $db;
+ $this->db = pg_connect($connstr);
+ if($this->db !== false) {
+ $this->connected = true;
+ } else {
+ $this->connected = false;
+ }
+ $this->q("SET standard_conforming_strings = 'off'; SET backslash_quote = 'on';"); // emulate mysql string escaping to prevent massive code-clobber
+ return $this->connected;
+ }
+
+ function q($sql) {
+ if((! $this->db) || (! $this->connected))
+ return false;
+
+ if(!strpos($sql, ';'))
+ $sql .= ';';
+
+ if(strpos($sql, '`')) // this is a hack. quoted identifiers should be replaced everywhere in the code with dbesc_identifier(), remove this once it is
+ $sql = str_replace('`', '"', $sql);
+
+ $this->error = '';
+ $result = @pg_query($this->db, $sql);
+ if(file_exists('db-allqueries.out')) {
+ $bt = debug_backtrace();
+ $trace = array();
+ foreach($bt as $frame) {
+ if(!empty($frame['file']) && @strstr($frame['file'], $_SERVER['DOCUMENT_ROOT']))
+ $frame['file'] = substr($frame['file'], strlen($_SERVER['DOCUMENT_ROOT'])+1);
+
+ $trace[] = $frame['file'] . ':' . $frame['function'] . '():' . $frame['line'] ;
+ }
+ $compact = join(', ', $trace);
+ file_put_contents('db-allqueries.out', datetime_convert() . ": " . $sql . ' is_resource: '.var_export(is_resource($result), true).', backtrace: '.$compact."\n\n", FILE_APPEND);
+ }
+
+ if($result === false)
+ $this->error = pg_last_error($this->db);
+
+ if($result === false || $this->error) {
+ //logger('dba_postgres: ' . printable($sql) . ' returned false.' . "\n" . $this->error);
+ if(file_exists('dbfail.out'))
+ file_put_contents('dbfail.out', datetime_convert() . "\n" . printable($sql) . ' returned false' . "\n" . $this->error . "\n", FILE_APPEND);
+ }
+
+ if(($result === true) || ($result === false))
+ return $result;
+
+ if(pg_result_status($result) == PGSQL_COMMAND_OK)
+ return true;
+
+ $r = array();
+ if(pg_num_rows($result)) {
+ while($x = pg_fetch_array($result, null, PGSQL_ASSOC))
+ $r[] = $x;
+ pg_free_result($result);
+ if($this->debug)
+ logger('dba_postgres: ' . printable(print_r($r,true)));
+ }
+ return $r;
+ }
+
+ function escape($str) {
+ if($this->db && $this->connected) {
+ $x = @pg_escape_string($this->db, $str);
+ return $x;
+ }
+ }
+
+ function escapebin($str) {
+ return pg_escape_bytea($str);
+ }
+
+ function unescapebin($str) {
+ return pg_unescape_bytea($str);
+ }
+
+ function close() {
+ if($this->db)
+ pg_close($this->db);
+ $this->connected = false;
+ }
+
+ function quote_interval($txt) {
+ return "'$txt'";
+ }
+
+ function escape_identifier($str) {
+ return pg_escape_identifier($this->db, $str);
+ }
+
+ function optimize_table($table) {
+ // perhaps do some equivalent thing here, vacuum, etc? I think this is the DBA's domain anyway. Applications should not need to muss with this.
+ // for now do nothing without a compelling reason. function overrides default legacy mysql.
+ }
+
+ function concat($fld, $sep) {
+ return 'string_agg(' . $fld . ',\'' . $sep . '\')';
+ }
+
+ function getdriver() {
+ return 'pgsql';
+ }
+} \ No newline at end of file
diff --git a/include/deliver.php b/include/deliver.php
index 0ad008c23..47d8562df 100644
--- a/include/deliver.php
+++ b/include/deliver.php
@@ -20,16 +20,52 @@ function deliver_run($argv, $argc) {
dbesc($argv[$x])
);
if($r) {
- if($r[0]['outq_posturl'] === z_root() . '/post') {
+ if($r[0]['outq_driver'] === 'post') {
+ $result = z_post_url($r[0]['outq_posturl'],$r[0]['outq_msg']);
+ if($result['success'] && $result['return_code'] < 300) {
+ logger('deliver: queue post success to ' . $r[0]['outq_posturl'], LOGGER_DEBUG);
+ $y = q("delete from outq where outq_hash = '%s'",
+ dbesc($argv[$x])
+ );
+ }
+ else {
+ logger('deliver: queue post returned ' . $result['return_code'] . ' from ' . $r[0]['outq_posturl'],LOGGER_DEBUG);
+ $y = q("update outq set outq_updated = '%s' where outq_hash = '%s'",
+ dbesc(datetime_convert()),
+ dbesc($argv[$x])
+ );
+ }
+ continue;
+ }
+
+ $notify = json_decode($r[0]['outq_notify'],true);
+
+ // Check if this is a conversation request packet. It won't have outq_msg
+ // but will be an encrypted packet - so will need to be handed off to
+ // web delivery rather than processed inline.
+
+ $sendtoweb = false;
+ if(array_key_exists('iv',$notify) && (! $r[0]['outq_msg']))
+ $sendtoweb = true;
+
+ if(($r[0]['outq_posturl'] === z_root() . '/post') && (! $sendtoweb)) {
logger('deliver: local delivery', LOGGER_DEBUG);
// local delivery
// we should probably batch these and save a few delivery processes
- // If there is no outq_msg, this is a refresh_all message which does not require local handling
- if($r[0]['outq_msg']) {
- $msg = array('body' => json_encode(array('pickup' => array(array('notify' => json_decode($r[0]['outq_notify'],true),'message' => json_decode($r[0]['outq_msg'],true))))));
- zot_import($msg,z_root());
- $r = q("delete from outq where outq_hash = '%s' limit 1",
+ if($r[0]['outq_msg']) {
+ $m = json_decode($r[0]['outq_msg'],true);
+ if(array_key_exists('message_list',$m)) {
+ foreach($m['message_list'] as $mm) {
+ $msg = array('body' => json_encode(array('pickup' => array(array('notify' => $notify,'message' => $mm)))));
+ zot_import($msg,z_root());
+ }
+ }
+ else {
+ $msg = array('body' => json_encode(array('pickup' => array(array('notify' => $notify,'message' => $m)))));
+ zot_import($msg,z_root());
+ }
+ $r = q("delete from outq where outq_hash = '%s'",
dbesc($argv[$x])
);
}
@@ -41,7 +77,7 @@ function deliver_run($argv, $argc) {
zot_process_response($r[0]['outq_posturl'],$result, $r[0]);
}
else {
- $y = q("update outq set outq_updated = '%s' where outq_hash = '%s' limit 1",
+ $y = q("update outq set outq_updated = '%s' where outq_hash = '%s'",
dbesc(datetime_convert()),
dbesc($argv[$x])
);
diff --git a/include/diaspora.php b/include/diaspora.php
new file mode 100755
index 000000000..e494aac0f
--- /dev/null
+++ b/include/diaspora.php
@@ -0,0 +1,2811 @@
+<?php
+
+require_once('include/crypto.php');
+require_once('include/items.php');
+require_once('include/bb2diaspora.php');
+require_once('include/contact_selectors.php');
+//require_once('include/queue_fn.php');
+//require_once('include/lock.php');
+
+function diaspora_dispatch_public($msg) {
+
+ $enabled = intval(get_config('system','diaspora_enabled'));
+ if(! $enabled) {
+ logger('mod-diaspora: disabled');
+ return;
+ }
+
+ // find everybody following or allowing this author
+
+
+ $r = q("SELECT * from channel where channel_id in ( SELECT abook_channel from abook left join xchan on abook_xchan = xchan_hash WHERE xchan_network like '%%diaspora%%' and xchan_addr = '%s' )",
+ dbesc($msg['author'])
+ );
+
+ // also need to look for those following public streams
+
+ if($r) {
+ foreach($r as $rr) {
+ logger('diaspora_public: delivering to: ' . $rr['channel_name'] . ' (' . $rr['channel_address'] . ') ');
+ diaspora_dispatch($rr,$msg);
+ }
+ }
+ else
+ logger('diaspora_public: no subscribers');
+}
+
+
+
+function diaspora_dispatch($importer,$msg,$attempt=1) {
+
+ $ret = 0;
+
+ $enabled = intval(get_config('system','diaspora_enabled'));
+ if(! $enabled) {
+ logger('mod-diaspora: disabled');
+ return;
+ }
+
+ // php doesn't like dashes in variable names
+
+ $msg['message'] = str_replace(
+ array('<activity_streams-photo>','</activity_streams-photo>'),
+ array('<asphoto>','</asphoto>'),
+ $msg['message']);
+
+
+ $parsed_xml = parse_xml_string($msg['message'],false);
+
+ $xmlbase = $parsed_xml->post;
+
+// logger('diaspora_dispatch: ' . print_r($xmlbase,true), LOGGER_DATA);
+
+
+ if($xmlbase->request) {
+ $ret = diaspora_request($importer,$xmlbase->request);
+ }
+ elseif($xmlbase->status_message) {
+ $ret = diaspora_post($importer,$xmlbase->status_message,$msg);
+ }
+ elseif($xmlbase->profile) {
+ $ret = diaspora_profile($importer,$xmlbase->profile,$msg);
+ }
+ elseif($xmlbase->comment) {
+ $ret = diaspora_comment($importer,$xmlbase->comment,$msg);
+ }
+ elseif($xmlbase->like) {
+ $ret = diaspora_like($importer,$xmlbase->like,$msg);
+ }
+ elseif($xmlbase->asphoto) {
+ $ret = diaspora_asphoto($importer,$xmlbase->asphoto,$msg);
+ }
+ elseif($xmlbase->reshare) {
+ $ret = diaspora_reshare($importer,$xmlbase->reshare,$msg);
+ }
+ elseif($xmlbase->retraction) {
+ $ret = diaspora_retraction($importer,$xmlbase->retraction,$msg);
+ }
+ elseif($xmlbase->signed_retraction) {
+ $ret = diaspora_signed_retraction($importer,$xmlbase->signed_retraction,$msg);
+ }
+ elseif($xmlbase->relayable_retraction) {
+ $ret = diaspora_signed_retraction($importer,$xmlbase->relayable_retraction,$msg);
+ }
+ elseif($xmlbase->photo) {
+ $ret = diaspora_photo($importer,$xmlbase->photo,$msg,$attempt);
+ }
+ elseif($xmlbase->conversation) {
+ $ret = diaspora_conversation($importer,$xmlbase->conversation,$msg);
+ }
+ elseif($xmlbase->message) {
+ $ret = diaspora_message($importer,$xmlbase->message,$msg);
+ }
+ else {
+ logger('diaspora_dispatch: unknown message type: ' . print_r($xmlbase,true));
+ }
+ return $ret;
+}
+
+
+function diaspora_is_blacklisted($s) {
+
+ $bl1 = get_config('system','blacklisted_sites');
+ if(is_array($bl1) && $bl1) {
+ foreach($bl1 as $bl) {
+ if($bl && strpos($s,$bl) !== false) {
+ logger('diaspora_is_blacklisted: blacklisted ' . $s);
+ return true;
+ }
+ }
+ }
+ return false;
+}
+
+function diaspora_process_outbound($arr) {
+
+/*
+
+ We are passed the following array from the notifier, providing everything we need to make delivery decisions.
+
+ diaspora_process_outbound(array(
+ 'channel' => $channel,
+ 'env_recips' => $env_recips,
+ 'recipients' => $recipients,
+ 'item' => $item,
+ 'target_item' => $target_item,
+ 'hub' => $hub,
+ 'top_level_post' => $top_level_post,
+ 'private' => $private,
+ 'followup' => $followup,
+ 'relay_to_owner' => $relay_to_owner,
+ 'uplink' => $uplink,
+ 'cmd' => $cmd,
+ 'expire' => $expire,
+ 'mail' => $mail,
+ 'location' => $location,
+ 'fsuggest' => $fsuggest,
+ 'normal_mode' => $normal_mode,
+ 'packet_type' => $packet_type,
+ 'walltowall' => $walltowall,
+ ));
+*/
+
+
+ if($arr['location'])
+ return;
+
+
+ $target_item = $arr['target_item'];
+
+ if($target_item && array_key_exists('item_flags',$target_item) && ($target_item['item_flags'] & ITEM_OBSCURED)) {
+ $key = get_config('system','prvkey');
+ if($target_item['title'])
+ $target_item['title'] = crypto_unencapsulate(json_decode($target_item['title'],true),$key);
+ if($target_item['body'])
+ $target_item['body'] = crypto_unencapsulate(json_decode($target_item['body'],true),$key);
+ }
+
+
+
+ if($arr['env_recips']) {
+ $hashes = array();
+
+ // re-explode the recipients, but only for this hub/pod
+
+ foreach($arr['env_recips'] as $recip)
+ $hashes[] = "'" . $recip['hash'] . "'";
+
+ $r = q("select * from xchan left join hubloc on xchan_hash = hubloc_hash where hubloc_url = '%s'
+ and xchan_hash in (" . implode(',', $hashes) . ") and xchan_network in ('diaspora', 'friendica-over-diaspora') ",
+ dbesc($arr['hub']['hubloc_url'])
+ );
+
+ if(! $r) {
+ logger('diaspora_process_outbound: no recipients');
+ return;
+ }
+
+ foreach($r as $contact) {
+
+ if($arr['mail']) {
+ diaspora_send_mail($arr['item'],$arr['channel'],$contact);
+ continue;
+ }
+
+ if(! $arr['normal_mode'])
+ continue;
+
+ // special handling for followup to public post
+ // all other public posts processed as public batches further below
+
+ if((! $arr['private']) && ($arr['followup'])) {
+ diaspora_send_followup($target_item,$arr['channel'],$contact, true);
+ continue;
+ }
+
+ if(! $contact['xchan_pubkey'])
+ continue;
+
+ if(($target_item['item_restrict'] & ITEM_DELETED)
+ && (($target_item['mid'] === $target_item['parent_mid']) || $arr['followup'])) {
+ // send both top-level retractions and relayable retractions for owner to relay
+ diaspora_send_retraction($target_item,$arr['channel'],$contact);
+ continue;
+ }
+ elseif($arr['followup']) {
+ // send comments and likes to owner to relay
+ diaspora_send_followup($target_item,$arr['channel'],$contact);
+ continue;
+ }
+
+ elseif($target_item['mid'] !== $target_item['parent_mid']) {
+ // we are the relay - send comments, likes and relayable_retractions
+ // (of comments and likes) to our conversants
+ diaspora_send_relay($target_item,$arr['channel'],$contact);
+ continue;
+ }
+ elseif($arr['top_level_post']) {
+ diaspora_send_status($target_item,$arr['channel'],$contact);
+ continue;
+ }
+ }
+ }
+ else {
+ // public message
+
+ $contact = $arr['hub'];
+
+ if(($target_item['deleted'])
+ && ($target_item['mid'] === $target_item['parent_mod'])) {
+ // top-level retraction
+ logger('delivery: diaspora retract: ' . $loc);
+ diaspora_send_retraction($target_item,$arr['channel'],$contact,true);
+ return;
+ }
+ elseif($target_item['mid'] !== $target_item['parent_mid']) {
+ // we are the relay - send comments, likes and relayable_retractions to our conversants
+ logger('delivery: diaspora relay: ' . $loc);
+ diaspora_send_relay($target_item,$arr['channel'],$contact,true);
+ return;
+ }
+ elseif($arr['top_level_post']) {
+ logger('delivery: diaspora status: ' . $loc);
+ diaspora_send_status($target_item,$arr['channel'],$contact,true);
+ return;
+ }
+
+ }
+
+}
+
+
+
+
+function diaspora_handle_from_contact($contact_hash) {
+
+ logger("diaspora_handle_from_contact: contact id is " . $contact_hash, LOGGER_DEBUG);
+
+ $r = q("SELECT xchan_addr from xchan where xchan_hash = '%s' limit 1",
+ dbesc($contact_hash)
+ );
+ if($r) {
+ return $r[0]['xchan_addr'];
+ }
+ return false;
+}
+
+function diaspora_get_contact_by_handle($uid,$handle) {
+
+ if(diaspora_is_blacklisted($handle))
+ return false;
+
+ $r = q("SELECT * FROM abook left join xchan on xchan_hash = abook_xchan where xchan_addr = '%s' and abook_channel = %d limit 1",
+ dbesc($handle),
+ intval($uid)
+ );
+ return (($r) ? $r[0] : false);
+}
+
+function find_diaspora_person_by_handle($handle) {
+
+ $person = false;
+
+ if(diaspora_is_blacklisted($handle))
+ return false;
+
+ $r = q("select * from xchan where xchan_addr = '%s' limit 1",
+ dbesc($handle)
+ );
+ if($r) {
+ $person = $r[0];
+ logger('find_diaspora_person_by handle: in cache ' . print_r($r,true), LOGGER_DATA);
+ }
+
+ if(! $person) {
+
+ // try webfinger. Make sure to distinguish between diaspora,
+ // redmatrix w/diaspora protocol and friendica w/diaspora protocol.
+
+ $result = discover_by_webbie($handle);
+ if($result) {
+ $r = q("select * from xchan where xchan_addr = '%s' limit 1",
+ dbesc($handle)
+ );
+ if($r) {
+ $person = $r[0];
+ logger('find_diaspora_person_by handle: discovered ' . print_r($r,true), LOGGER_DATA);
+ }
+ }
+ }
+
+ return $person;
+}
+
+
+function get_diaspora_key($handle) {
+ logger('Fetching diaspora key for: ' . $handle, LOGGER_DEBUG);
+ $r = find_diaspora_person_by_handle($handle);
+ return(($r) ? $r['xchan_pubkey'] : '');
+}
+
+
+function diaspora_pubmsg_build($msg,$channel,$contact,$prvkey,$pubkey) {
+
+ $a = get_app();
+
+ logger('diaspora_pubmsg_build: ' . $msg, LOGGER_DATA);
+
+ $handle = $channel['channel_address'] . '@' . get_app()->get_hostname();
+
+
+ $b64url_data = base64url_encode($msg,false);
+
+ $data = str_replace(array("\n","\r"," ","\t"),array('','','',''),$b64url_data);
+
+ $type = 'application/xml';
+ $encoding = 'base64url';
+ $alg = 'RSA-SHA256';
+
+ $signable_data = $data . '.' . base64url_encode($type,false) . '.'
+ . base64url_encode($encoding,false) . '.' . base64url_encode($alg,false) ;
+
+ $signature = rsa_sign($signable_data,$prvkey);
+ $sig = base64url_encode($signature,false);
+
+$magic_env = <<< EOT
+<?xml version='1.0' encoding='UTF-8'?>
+<diaspora xmlns="https://joindiaspora.com/protocol" xmlns:me="http://salmon-protocol.org/ns/magic-env" >
+ <header>
+ <author_id>$handle</author_id>
+ </header>
+ <me:env>
+ <me:encoding>base64url</me:encoding>
+ <me:alg>RSA-SHA256</me:alg>
+ <me:data type="application/xml">$data</me:data>
+ <me:sig>$sig</me:sig>
+ </me:env>
+</diaspora>
+EOT;
+
+ logger('diaspora_pubmsg_build: magic_env: ' . $magic_env, LOGGER_DATA);
+ return $magic_env;
+
+}
+
+
+
+
+function diaspora_msg_build($msg,$channel,$contact,$prvkey,$pubkey,$public = false) {
+ $a = get_app();
+
+ if($public)
+ return diaspora_pubmsg_build($msg,$channel,$contact,$prvkey,$pubkey);
+
+ logger('diaspora_msg_build: ' . $msg, LOGGER_DATA);
+
+ // without a public key nothing will work
+
+ if(! $pubkey) {
+ logger('diaspora_msg_build: pubkey missing: contact id: ' . $contact['abook_id']);
+ return '';
+ }
+
+ $inner_aes_key = random_string(32);
+ $b_inner_aes_key = base64_encode($inner_aes_key);
+ $inner_iv = random_string(16);
+ $b_inner_iv = base64_encode($inner_iv);
+
+ $outer_aes_key = random_string(32);
+ $b_outer_aes_key = base64_encode($outer_aes_key);
+ $outer_iv = random_string(16);
+ $b_outer_iv = base64_encode($outer_iv);
+
+ $handle = $channel['channel_address'] . '@' . get_app()->get_hostname();
+
+ $padded_data = pkcs5_pad($msg,16);
+ $inner_encrypted = mcrypt_encrypt(MCRYPT_RIJNDAEL_128, $inner_aes_key, $padded_data, MCRYPT_MODE_CBC, $inner_iv);
+
+ $b64_data = base64_encode($inner_encrypted);
+
+
+ $b64url_data = base64url_encode($b64_data,false);
+ $data = str_replace(array("\n","\r"," ","\t"),array('','','',''),$b64url_data);
+
+ $type = 'application/xml';
+ $encoding = 'base64url';
+ $alg = 'RSA-SHA256';
+
+ $signable_data = $data . '.' . base64url_encode($type,false) . '.'
+ . base64url_encode($encoding,false) . '.' . base64url_encode($alg,false) ;
+
+ logger('diaspora_msg_build: signable_data: ' . $signable_data, LOGGER_DATA);
+
+ $signature = rsa_sign($signable_data,$prvkey);
+ $sig = base64url_encode($signature,false);
+
+$decrypted_header = <<< EOT
+<decrypted_header>
+ <iv>$b_inner_iv</iv>
+ <aes_key>$b_inner_aes_key</aes_key>
+ <author_id>$handle</author_id>
+</decrypted_header>
+EOT;
+
+ $decrypted_header = pkcs5_pad($decrypted_header,16);
+
+ $ciphertext = mcrypt_encrypt(MCRYPT_RIJNDAEL_128, $outer_aes_key, $decrypted_header, MCRYPT_MODE_CBC, $outer_iv);
+
+ $outer_json = json_encode(array('iv' => $b_outer_iv,'key' => $b_outer_aes_key));
+
+ $encrypted_outer_key_bundle = '';
+ openssl_public_encrypt($outer_json,$encrypted_outer_key_bundle,$pubkey);
+
+ $b64_encrypted_outer_key_bundle = base64_encode($encrypted_outer_key_bundle);
+
+ logger('outer_bundle: ' . $b64_encrypted_outer_key_bundle . ' key: ' . $pubkey, LOGGER_DATA);
+
+ $encrypted_header_json_object = json_encode(array('aes_key' => base64_encode($encrypted_outer_key_bundle),
+ 'ciphertext' => base64_encode($ciphertext)));
+ $cipher_json = base64_encode($encrypted_header_json_object);
+
+ $encrypted_header = '<encrypted_header>' . $cipher_json . '</encrypted_header>';
+
+$magic_env = <<< EOT
+<?xml version='1.0' encoding='UTF-8'?>
+<diaspora xmlns="https://joindiaspora.com/protocol" xmlns:me="http://salmon-protocol.org/ns/magic-env" >
+ $encrypted_header
+ <me:env>
+ <me:encoding>base64url</me:encoding>
+ <me:alg>RSA-SHA256</me:alg>
+ <me:data type="application/xml">$data</me:data>
+ <me:sig>$sig</me:sig>
+ </me:env>
+</diaspora>
+EOT;
+
+ logger('diaspora_msg_build: magic_env: ' . $magic_env, LOGGER_DATA);
+ return $magic_env;
+
+}
+
+/**
+ *
+ * diaspora_decode($importer,$xml)
+ * array $importer -> from user table
+ * string $xml -> urldecoded Diaspora salmon
+ *
+ * Returns array
+ * 'message' -> decoded Diaspora XML message
+ * 'author' -> author diaspora handle
+ * 'key' -> author public key (converted to pkcs#8)
+ *
+ * Author and key are used elsewhere to save a lookup for verifying replies and likes
+ */
+
+
+function diaspora_decode($importer,$xml) {
+
+ $public = false;
+ $basedom = parse_xml_string($xml);
+
+ $children = $basedom->children('https://joindiaspora.com/protocol');
+
+ if($children->header) {
+ $public = true;
+ $author_link = str_replace('acct:','',$children->header->author_id);
+ }
+ else {
+
+ $encrypted_header = json_decode(base64_decode($children->encrypted_header));
+
+ $encrypted_aes_key_bundle = base64_decode($encrypted_header->aes_key);
+ $ciphertext = base64_decode($encrypted_header->ciphertext);
+
+ $outer_key_bundle = '';
+ openssl_private_decrypt($encrypted_aes_key_bundle,$outer_key_bundle,$importer['channel_prvkey']);
+
+ $j_outer_key_bundle = json_decode($outer_key_bundle);
+
+ $outer_iv = base64_decode($j_outer_key_bundle->iv);
+ $outer_key = base64_decode($j_outer_key_bundle->key);
+
+ $decrypted = mcrypt_decrypt(MCRYPT_RIJNDAEL_128, $outer_key, $ciphertext, MCRYPT_MODE_CBC, $outer_iv);
+
+
+ $decrypted = pkcs5_unpad($decrypted);
+
+ /**
+ * $decrypted now contains something like
+ *
+ * <decrypted_header>
+ * <iv>8e+G2+ET8l5BPuW0sVTnQw==</iv>
+ * <aes_key>UvSMb4puPeB14STkcDWq+4QE302Edu15oaprAQSkLKU=</aes_key>
+
+***** OBSOLETE
+
+ * <author>
+ * <name>Ryan Hughes</name>
+ * <uri>acct:galaxor@diaspora.pirateship.org</uri>
+ * </author>
+
+***** CURRENT
+
+ * <author_id>galaxor@diaspora.priateship.org</author_id>
+
+***** END DIFFS
+
+ * </decrypted_header>
+ */
+
+ logger('decrypted: ' . $decrypted, LOGGER_DATA);
+ $idom = parse_xml_string($decrypted,false);
+
+ $inner_iv = base64_decode($idom->iv);
+ $inner_aes_key = base64_decode($idom->aes_key);
+
+ $author_link = str_replace('acct:','',$idom->author_id);
+
+ }
+
+ $dom = $basedom->children(NAMESPACE_SALMON_ME);
+
+ // figure out where in the DOM tree our data is hiding
+
+ if($dom->provenance->data)
+ $base = $dom->provenance;
+ elseif($dom->env->data)
+ $base = $dom->env;
+ elseif($dom->data)
+ $base = $dom;
+
+ if(! $base) {
+ logger('mod-diaspora: unable to locate salmon data in xml ');
+ http_status_exit(400);
+ }
+
+
+ // Stash the signature away for now. We have to find their key or it won't be good for anything.
+ $signature = base64url_decode($base->sig);
+
+ // unpack the data
+
+ // strip whitespace so our data element will return to one big base64 blob
+ $data = str_replace(array(" ","\t","\r","\n"),array("","","",""),$base->data);
+
+
+ // stash away some other stuff for later
+
+ $type = $base->data[0]->attributes()->type[0];
+ $keyhash = $base->sig[0]->attributes()->keyhash[0];
+ $encoding = $base->encoding;
+ $alg = $base->alg;
+
+ $signed_data = $data . '.' . base64url_encode($type,false) . '.' . base64url_encode($encoding,false) . '.' . base64url_encode($alg,false);
+
+
+ // decode the data
+ $data = base64url_decode($data);
+
+
+ if($public) {
+ $inner_decrypted = $data;
+ }
+ else {
+
+ // Decode the encrypted blob
+
+ $inner_encrypted = base64_decode($data);
+ $inner_decrypted = mcrypt_decrypt(MCRYPT_RIJNDAEL_128, $inner_aes_key, $inner_encrypted, MCRYPT_MODE_CBC, $inner_iv);
+ $inner_decrypted = pkcs5_unpad($inner_decrypted);
+ }
+
+ if(! $author_link) {
+ logger('mod-diaspora: Could not retrieve author URI.');
+ http_status_exit(400);
+ }
+
+ // Once we have the author URI, go to the web and try to find their public key
+ // (first this will look it up locally if it is in the fcontact cache)
+ // This will also convert diaspora public key from pkcs#1 to pkcs#8
+
+ logger('mod-diaspora: Fetching key for ' . $author_link );
+ $key = get_diaspora_key($author_link);
+
+ if(! $key) {
+ logger('mod-diaspora: Could not retrieve author key.');
+ http_status_exit(400);
+ }
+
+ $verify = rsa_verify($signed_data,$signature,$key);
+
+ if(! $verify) {
+ logger('mod-diaspora: Message did not verify. Discarding.');
+ http_status_exit(400);
+ }
+
+ logger('mod-diaspora: Message verified.');
+
+ return array('message' => $inner_decrypted, 'author' => $author_link, 'key' => $key);
+
+}
+
+
+/* sender is now sharing with recipient */
+
+function diaspora_request($importer,$xml) {
+
+ $a = get_app();
+
+ $sender_handle = unxmlify($xml->sender_handle);
+ $recipient_handle = unxmlify($xml->recipient_handle);
+
+ if(! $sender_handle || ! $recipient_handle)
+ return;
+
+
+ // Do we already have an abook record?
+
+ $contact = diaspora_get_contact_by_handle($importer['channel_id'],$sender_handle);
+
+ if($contact && $contact['abook_id']) {
+
+ // perhaps we were already sharing with this person. Now they're sharing with us.
+ // That makes us friends. Maybe.
+
+ // Please note some of these permissions such as PERMS_R_PAGES are impossible for Disapora.
+ // They cannot authenticate to our system.
+
+ $newperms = PERMS_R_STREAM|PERMS_R_PROFILE|PERMS_R_PHOTOS|PERMS_R_ABOOK|PERMS_W_STREAM|PERMS_W_COMMENT|PERMS_W_MAIL|PERMS_W_CHAT|PERMS_R_STORAGE|PERMS_R_PAGES;
+
+ $r = q("update abook set abook_their_perms = %d where abook_id = %d and abook_channel = %d",
+ intval($newperms),
+ intval($contact['abook_id']),
+ intval($importer['channel_id'])
+ );
+
+ return;
+ }
+
+ $ret = find_diaspora_person_by_handle($sender_handle);
+
+ if((! $ret) || (! strstr($ret['xchan_network'],'diaspora'))) {
+ logger('diaspora_request: Cannot resolve diaspora handle ' . $sender_handle . ' for ' . $recipient_handle);
+ return;
+ }
+
+ $role = get_pconfig($channel['channel_id'],'system','permissions_role');
+ if($role) {
+ $x = get_role_perms($role);
+ if($x['perms_auto'])
+ $default_perms = $x['perms_accept'];
+ }
+ if(! $default_perms)
+ $default_perms = intval(get_pconfig($channel['channel_id'],'system','autoperms'));
+
+ $their_perms = PERMS_R_STREAM|PERMS_R_PROFILE|PERMS_R_PHOTOS|PERMS_R_ABOOK|PERMS_W_STREAM|PERMS_W_COMMENT|PERMS_W_MAIL|PERMS_W_CHAT|PERMS_R_STORAGE|PERMS_R_PAGES;
+
+ $r = q("insert into abook ( abook_account, abook_channel, abook_xchan, abook_my_perms, abook_their_perms, abook_closeness, abook_rating, abook_created, abook_updated, abook_connected, abook_dob, abook_flags) values ( %d, %d, '%s', %d, %d, %d, %d, '%s', '%s', '%s', '%s', %d )",
+ intval($importer['channel_account_id']),
+ intval($importer['channel_id']),
+ dbesc($ret['xchan_hash']),
+ intval($default_perms),
+ intval($their_perms),
+ intval(99),
+ intval(0),
+ dbesc(datetime_convert()),
+ dbesc(datetime_convert()),
+ dbesc(datetime_convert()),
+ dbesc(NULL_DATE),
+ intval(($default_perms) ? 0 : ABOOK_FLAG_PENDING)
+ );
+
+
+ if($r) {
+ logger("New Diaspora introduction received for {$importer['channel_name']}");
+
+ $new_connection = q("select * from abook left join xchan on abook_xchan = xchan_hash left join hubloc on hubloc_hash = xchan_hash where abook_channel = %d and abook_xchan = '%s' order by abook_created desc limit 1",
+ intval($importer['channel_id']),
+ dbesc($ret['xchan_hash'])
+ );
+ if($new_connection) {
+ require_once('include/enotify.php');
+ notification(array(
+ 'type' => NOTIFY_INTRO,
+ 'from_xchan' => $ret['xchan_hash'],
+ 'to_xchan' => $importer['channel_hash'],
+ 'link' => z_root() . '/connedit/' . $new_connection[0]['abook_id'],
+ ));
+
+ if($default_perms) {
+ // Send back a sharing notification to them
+ diaspora_share($importer,$new_connection[0]);
+
+ }
+ }
+ }
+
+ // find the abook record we just created
+
+ $contact_record = diaspora_get_contact_by_handle($importer['channel_id'],$sender_handle);
+
+ if(! $contact_record) {
+ logger('diaspora_request: unable to locate newly created contact record.');
+ return;
+ }
+
+ /** If there is a default group for this channel, add this member to it */
+
+ if($importer['channel_default_group']) {
+ require_once('include/group.php');
+ $g = group_rec_byhash($importer['channel_id'],$importer['channel_default_group']);
+ if($g)
+ group_add_member($importer['channel_id'],'',$contact_record['xchan_hash'],$g['id']);
+ }
+
+ return;
+}
+
+
+
+
+function diaspora_post($importer,$xml,$msg) {
+
+ $a = get_app();
+ $guid = notags(unxmlify($xml->guid));
+ $diaspora_handle = notags(unxmlify($xml->diaspora_handle));
+ $app = notags(xmlify($xml->provider_display_name));
+
+
+ if($diaspora_handle != $msg['author']) {
+ logger('diaspora_post: Potential forgery. Message handle is not the same as envelope sender.');
+ return 202;
+ }
+
+ $contact = diaspora_get_contact_by_handle($importer['channel_id'],$diaspora_handle);
+ if(! $contact)
+ return;
+
+
+
+ if(! $app) {
+ if(strstr($contact['xchan_network'],'friendica'))
+ $app = 'Friendica';
+ else
+ $app = 'Diaspora';
+ }
+
+
+ if(! perm_is_allowed($importer['channel_id'],$contact['xchan_hash'],'send_stream')) {
+ logger('diaspora_post: Ignoring this author.');
+ return 202;
+ }
+
+ $search_guid = ((strlen($guid) == 64) ? $guid . '%' : $guid);
+
+ $r = q("SELECT id FROM item WHERE uid = %d AND mid like '%s' LIMIT 1",
+ intval($importer['channel_id']),
+ dbesc($search_guid)
+ );
+
+ if($r) {
+ // check dates if post editing is implemented
+ logger('diaspora_post: message exists: ' . $guid);
+ return;
+ }
+
+ $created = unxmlify($xml->created_at);
+ $private = ((unxmlify($xml->public) == 'false') ? 1 : 0);
+
+ $body = diaspora2bb($xml->raw_message);
+
+ if($xml->photo) {
+ $body = '[img]' . $xml->photo->remote_photo_path . $xml->photo->remote_photo_name . '[/img]' . "\n\n" . $body;
+ $body = scale_external_images($body);
+ }
+
+
+//WTF? FIXME
+ // Add OEmbed and other information to the body
+// $body = add_page_info_to_body($body, false, true);
+
+ $datarray = array();
+
+
+ $tags = get_tags($body);
+
+
+ if(count($tags)) {
+
+ $datarray['term'] = array();
+
+ foreach($tags as $tag) {
+ if(strpos($tag,'#') === 0) {
+ if((strpos($tag,'[url=')) || (strpos($tag,'[zrl')))
+ continue;
+
+ // don't link tags that are already embedded in links
+
+ if(preg_match('/\[(.*?)' . preg_quote($tag,'/') . '(.*?)\]/',$body))
+ continue;
+ if(preg_match('/\[(.*?)\]\((.*?)' . preg_quote($tag,'/') . '(.*?)\)/',$body))
+ continue;
+
+ $basetag = str_replace('_',' ',substr($tag,1));
+ $body = str_replace($tag,'#[url=' . $a->get_baseurl() . '/search?tag=' . rawurlencode($basetag) . ']' . $basetag . '[/url]',$body);
+
+ $datarray['term'][] = array(
+ 'uid' => $importer['channel_id'],
+ 'type' => TERM_HASHTAG,
+ 'otype' => TERM_OBJ_POST,
+ 'term' => $basetag,
+ 'url' => z_root() . '/search?tag=' . rawurlencode($basetag)
+ );
+ }
+ }
+ }
+
+ $cnt = preg_match_all('/@\[url=(.*?)\](.*?)\[\/url\]/ism',$body,$matches,PREG_SET_ORDER);
+ if($cnt) {
+ foreach($matches as $mtch) {
+ $datarray['term'][] = array(
+ 'uid' => $importer['channel_id'],
+ 'type' => TERM_MENTION,
+ 'otype' => TERM_OBJ_POST,
+ 'term' => $mtch[2],
+ 'url' => $mtch[1]
+ );
+ }
+ }
+
+ $cnt = preg_match_all('/@\[zrl=(.*?)\](.*?)\[\/zrl\]/ism',$body,$matches,PREG_SET_ORDER);
+ if($cnt) {
+ foreach($matches as $mtch) {
+ // don't include plustags in the term
+ $term = ((substr($mtch[2],-1,1) === '+') ? substr($mtch[2],0,-1) : $mtch[2]);
+ $datarray['term'][] = array(
+ 'uid' => $importer['channel_id'],
+ 'type' => TERM_MENTION,
+ 'otype' => TERM_OBJ_POST,
+ 'term' => $term,
+ 'url' => $mtch[1]
+ );
+ }
+ }
+
+
+ // this won't work for Friendica or Redmatrix but it's probably the best we can do.
+ $plink = 'https://'.substr($diaspora_handle,strpos($diaspora_handle,'@')+1).'/posts/'.$guid;
+
+ $datarray['uid'] = $importer['channel_id'];
+
+ $datarray['verb'] = ACTIVITY_POST;
+ $datarray['mid'] = $datarray['parent_mid'] = $guid;
+
+ $datarray['changed'] = $datarray['created'] = $datarray['edited'] = datetime_convert('UTC','UTC',$created);
+ $datarray['item_private'] = $private;
+
+ $datarray['plink'] = $plink;
+
+ $datarray['author_xchan'] = $contact['xchan_hash'];
+ $datarray['owner_xchan'] = $contact['xchan_hash'];
+
+ $datarray['body'] = $body;
+
+ $datarray['app'] = $app;
+
+ $datarray['item_flags'] = ITEM_UNSEEN|ITEM_THREAD_TOP;
+
+
+ $result = item_store($datarray);
+ return;
+
+}
+
+
+function get_diaspora_reshare_xml($url,$recurse = 0) {
+
+ $x = z_fetch_url($url);
+ if(! $x['success'])
+ $x = z_fetch_url(str_replace('https://','http://',$url));
+ if(! $x['success']) {
+ logger('get_diaspora_reshare_xml: unable to fetch source url ' . $url);
+ return;
+ }
+ logger('get_diaspora_reshare_xml: source: ' . $x['body'], LOGGER_DEBUG);
+
+ $source_xml = parse_xml_string($x['body'],false);
+
+ if(! $source_xml) {
+ logger('get_diaspora_reshare_xml: unparseable result from ' . $url);
+ return '';
+ }
+
+ if($source_xml->post->status_message) {
+ return $source_xml;
+ }
+
+ // see if it's a reshare of a reshare
+
+ if($source_xml->post->reshare)
+ $xml = $source_xml->post->reshare;
+ else
+ return false;
+
+ if($xml->root_diaspora_id && $xml->root_guid && $recurse < 15) {
+ $orig_author = notags(unxmlify($xml->root_diaspora_id));
+ $orig_guid = notags(unxmlify($xml->root_guid));
+ $source_url = 'https://' . substr($orig_author,strpos($orig_author,'@')+1) . '/p/' . $orig_guid . '.xml';
+ $y = get_diaspora_reshare_xml($source_url,$recurse+1);
+ if($y)
+ return $y;
+ }
+ return false;
+}
+
+
+
+function diaspora_reshare($importer,$xml,$msg) {
+
+ logger('diaspora_reshare: init: ' . print_r($xml,true), LOGGER_DATA);
+
+ $a = get_app();
+ $guid = notags(unxmlify($xml->guid));
+ $diaspora_handle = notags(unxmlify($xml->diaspora_handle));
+
+
+ if($diaspora_handle != $msg['author']) {
+ logger('diaspora_post: Potential forgery. Message handle is not the same as envelope sender.');
+ return 202;
+ }
+
+ $contact = diaspora_get_contact_by_handle($importer['channel_id'],$diaspora_handle);
+ if(! $contact)
+ return;
+
+ if(! perm_is_allowed($importer['channel_id'],$contact['xchan_hash'],'send_stream')) {
+ logger('diaspora_reshare: Ignoring this author: ' . $diaspora_handle . ' ' . print_r($xml,true));
+ return 202;
+ }
+
+ $search_guid = ((strlen($guid) == 64) ? $guid . '%' : $guid);
+ $r = q("SELECT id FROM item WHERE uid = %d AND mid like '%s' LIMIT 1",
+ intval($importer['channel_id']),
+ dbesc($search_guid)
+ );
+ if($r) {
+ logger('diaspora_reshare: message exists: ' . $guid);
+ return;
+ }
+
+ $orig_author = notags(unxmlify($xml->root_diaspora_id));
+ $orig_guid = notags(unxmlify($xml->root_guid));
+
+ $source_url = 'https://' . substr($orig_author,strpos($orig_author,'@')+1) . '/p/' . $orig_guid . '.xml';
+ $orig_url = 'https://'.substr($orig_author,strpos($orig_author,'@')+1).'/posts/'.$orig_guid;
+
+ $source_xml = get_diaspora_reshare_xml($source_url);
+
+ if($source_xml->post->status_message) {
+ $body = diaspora2bb($source_xml->post->status_message->raw_message);
+
+ $orig_author = notags(unxmlify($source_xml->post->status_message->diaspora_handle));
+ $orig_guid = notags(unxmlify($source_xml->post->status_message->guid));
+
+
+ // Checking for embedded pictures
+ if($source_xml->post->status_message->photo->remote_photo_path &&
+ $source_xml->post->status_message->photo->remote_photo_name) {
+
+ $remote_photo_path = notags(unxmlify($source_xml->post->status_message->photo->remote_photo_path));
+ $remote_photo_name = notags(unxmlify($source_xml->post->status_message->photo->remote_photo_name));
+
+ $body = '[img]'.$remote_photo_path.$remote_photo_name.'[/img]'."\n".$body;
+
+ logger('diaspora_reshare: embedded picture link found: '.$body, LOGGER_DEBUG);
+ }
+
+ $body = scale_external_images($body);
+
+ // Add OEmbed and other information to the body
+// $body = add_page_info_to_body($body, false, true);
+ }
+ else {
+ // Maybe it is a reshare of a photo that will be delivered at a later time (testing)
+ logger('diaspora_reshare: no reshare content found: ' . print_r($source_xml,true));
+ $body = "";
+ //return;
+ }
+
+ //if(! $body) {
+ // logger('diaspora_reshare: empty body: source= ' . $x);
+ // return;
+ //}
+
+ $person = find_diaspora_person_by_handle($orig_author);
+
+ if($person) {
+ $orig_author_name = $person['xchan_name'];
+ $orig_author_link = $person['xchan_url'];
+ $orig_author_photo = $person['xchan_photo_m'];
+ }
+
+ $newbody = "[share author='" . urlencode($orig_author_name)
+ . "' profile='" . $orig_author_link
+ . "' avatar='" . $orig_author_photo
+ . "' link='" . $orig_url
+ . "' posted='" . datetime_convert('UTC','UTC',unxmlify($source_xml->post->status_message->created_at))
+ . "' message_id='" . unxmlify($source_xml->post->status_message->guid)
+ . "']" . $body . "[/share]";
+
+
+ $created = unxmlify($xml->created_at);
+ $private = ((unxmlify($xml->public) == 'false') ? 1 : 0);
+
+ $datarray = array();
+
+ $str_tags = '';
+
+ $tags = get_tags($newbody);
+
+
+ if(count($tags)) {
+
+ $datarray['term'] = array();
+
+ foreach($tags as $tag) {
+ if(strpos($tag,'#') === 0) {
+ if((strpos($tag,'[url=')) || (strpos($tag,'[zrl')))
+ continue;
+
+ // don't link tags that are already embedded in links
+
+ if(preg_match('/\[(.*?)' . preg_quote($tag,'/') . '(.*?)\]/',$newbody))
+ continue;
+ if(preg_match('/\[(.*?)\]\((.*?)' . preg_quote($tag,'/') . '(.*?)\)/',$newbody))
+ continue;
+
+ $basetag = str_replace('_',' ',substr($tag,1));
+ $newbody = str_replace($tag,'#[url=' . $a->get_baseurl() . '/search?tag=' . rawurlencode($basetag) . ']' . $basetag . '[/url]',$newbody);
+
+ $datarray['term'][] = array(
+ 'uid' => $importer['channel_id'],
+ 'type' => TERM_HASHTAG,
+ 'otype' => TERM_OBJ_POST,
+ 'term' => $basetag,
+ 'url' => z_root() . '/search?tag=' . rawurlencode($basetag)
+ );
+ }
+ }
+ }
+
+ $cnt = preg_match_all('/@\[url=(.*?)\](.*?)\[\/url\]/ism',$newbody,$matches,PREG_SET_ORDER);
+ if($cnt) {
+ foreach($matches as $mtch) {
+ $datarray['term'][] = array(
+ 'uid' => $importer['channel_id'],
+ 'type' => TERM_MENTION,
+ 'otype' => TERM_OBJ_POST,
+ 'term' => $mtch[2],
+ 'url' => $mtch[1]
+ );
+ }
+ }
+
+ // This won't work on redmatrix
+ $plink = 'https://'.substr($diaspora_handle,strpos($diaspora_handle,'@')+1).'/posts/'.$guid;
+
+ $datarray['uid'] = $importer['channel_id'];
+ $datarray['mid'] = $datarray['parent_mid'] = $guid;
+ $datarray['changed'] = $datarray['created'] = $datarray['edited'] = datetime_convert('UTC','UTC',$created);
+ $datarray['item_private'] = $private;
+ $datarray['plink'] = $plink;
+ $datarray['owner_xchan'] = $contact['xchan_hash'];
+ $datarray['author_xchan'] = $contact['xchan_hash'];
+
+ $datarray['body'] = $newbody;
+ $datarray['app'] = 'Diaspora';
+
+
+ $result = item_store($datarray);
+
+ return;
+
+}
+
+
+function diaspora_asphoto($importer,$xml,$msg) {
+ logger('diaspora_asphoto called');
+
+ $a = get_app();
+ $guid = notags(unxmlify($xml->guid));
+ $diaspora_handle = notags(unxmlify($xml->diaspora_handle));
+
+ if($diaspora_handle != $msg['author']) {
+ logger('diaspora_post: Potential forgery. Message handle is not the same as envelope sender.');
+ return 202;
+ }
+
+ $contact = diaspora_get_contact_by_handle($importer['channel_id'],$diaspora_handle);
+ if(! $contact)
+ return;
+
+ if(! perm_is_allowed($importer['channel_id'],$contact['xchan_hash'],'send_stream')) {
+ logger('diaspora_asphoto: Ignoring this author.');
+ return 202;
+ }
+
+ $message_id = $diaspora_handle . ':' . $guid;
+ $r = q("SELECT `id` FROM `item` WHERE `uid` = %d AND `uri` = '%s' AND `guid` = '%s' LIMIT 1",
+ intval($importer['channel_id']),
+ dbesc($message_id),
+ dbesc($guid)
+ );
+ if(count($r)) {
+ logger('diaspora_asphoto: message exists: ' . $guid);
+ return;
+ }
+
+ // allocate a guid on our system - we aren't fixing any collisions.
+ // we're ignoring them
+
+ $g = q("select * from guid where guid = '%s' limit 1",
+ dbesc($guid)
+ );
+ if(! count($g)) {
+ q("insert into guid ( guid ) values ( '%s' )",
+ dbesc($guid)
+ );
+ }
+
+ $created = unxmlify($xml->created_at);
+ $private = ((unxmlify($xml->public) == 'false') ? 1 : 0);
+
+ if(strlen($xml->objectId) && ($xml->objectId != 0) && ($xml->image_url)) {
+ $body = '[url=' . notags(unxmlify($xml->image_url)) . '][img]' . notags(unxmlify($xml->objectId)) . '[/img][/url]' . "\n";
+ $body = scale_external_images($body,false);
+ }
+ elseif($xml->image_url) {
+ $body = '[img]' . notags(unxmlify($xml->image_url)) . '[/img]' . "\n";
+ $body = scale_external_images($body);
+ }
+ else {
+ logger('diaspora_asphoto: no photo url found.');
+ return;
+ }
+
+ $plink = 'https://'.substr($diaspora_handle,strpos($diaspora_handle,'@')+1).'/posts/'.$guid;
+
+ $datarray = array();
+
+ $datarray['uid'] = $importer['channel_id'];
+ $datarray['contact-id'] = $contact['id'];
+ $datarray['wall'] = 0;
+ $datarray['network'] = NETWORK_DIASPORA;
+ $datarray['guid'] = $guid;
+ $datarray['uri'] = $datarray['parent-uri'] = $message_id;
+ $datarray['changed'] = $datarray['created'] = $datarray['edited'] = datetime_convert('UTC','UTC',$created);
+ $datarray['private'] = $private;
+ $datarray['parent'] = 0;
+ $datarray['plink'] = $plink;
+ $datarray['owner-name'] = $contact['name'];
+ $datarray['owner-link'] = $contact['url'];
+ //$datarray['owner-avatar'] = $contact['thumb'];
+ $datarray['owner-avatar'] = ((x($contact,'thumb')) ? $contact['thumb'] : $contact['photo']);
+ $datarray['author-name'] = $contact['name'];
+ $datarray['author-link'] = $contact['url'];
+ $datarray['author-avatar'] = $contact['thumb'];
+ $datarray['body'] = $body;
+
+ $datarray['app'] = 'Diaspora/Cubbi.es';
+
+ $message_id = item_store($datarray);
+
+ //if($message_id) {
+ // q("update item set plink = '%s' where id = %d",
+ // dbesc($a->get_baseurl() . '/display/' . $importer['nickname'] . '/' . $message_id),
+ // intval($message_id)
+ // );
+ //}
+
+ return;
+
+}
+
+
+
+
+
+
+function diaspora_comment($importer,$xml,$msg) {
+
+ $a = get_app();
+ $guid = notags(unxmlify($xml->guid));
+ $parent_guid = notags(unxmlify($xml->parent_guid));
+ $diaspora_handle = notags(unxmlify($xml->diaspora_handle));
+ $target_type = notags(unxmlify($xml->target_type));
+ $text = unxmlify($xml->text);
+ $author_signature = notags(unxmlify($xml->author_signature));
+
+ $parent_author_signature = (($xml->parent_author_signature) ? notags(unxmlify($xml->parent_author_signature)) : '');
+
+ $contact = diaspora_get_contact_by_handle($importer['channel_id'],$msg['author']);
+ if(! $contact) {
+ logger('diaspora_comment: cannot find contact: ' . $msg['author']);
+ return;
+ }
+
+ if(! perm_is_allowed($importer['channel_id'],$contact['xchan_hash'],'post_comments')) {
+ logger('diaspora_comment: Ignoring this author.');
+ return 202;
+ }
+
+ // Friendica is currently truncating guids at 64 chars
+
+ $search_guid = $guid;
+ if(strlen($guid) == 64)
+ $search_guid = $guid . '%';
+
+ $r = q("SELECT * FROM item WHERE uid = %d AND mid like '%s' LIMIT 1",
+ intval($importer['channel_id']),
+ dbesc($search_guid)
+ );
+ if($r) {
+ logger('diaspora_comment: our comment just got relayed back to us (or there was a guid collision) : ' . $guid);
+ return;
+ }
+
+ $search_guid = $parent_guid;
+ if(strlen($parent_guid) == 64)
+ $search_guid = $parent_guid . '%';
+
+
+ $r = q("SELECT * FROM item WHERE uid = %d AND mid LIKE '%s' LIMIT 1",
+ intval($importer['channel_id']),
+ dbesc($search_guid)
+ );
+ if(! $r) {
+ logger('diaspora_comment: parent item not found: parent: ' . $parent_guid . ' item: ' . $guid);
+ return;
+ }
+ $parent_item = $r[0];
+
+
+ /* How Diaspora performs comment signature checking:
+
+ - If an item has been sent by the comment author to the top-level post owner to relay on
+ to the rest of the contacts on the top-level post, the top-level post owner should check
+ the author_signature, then create a parent_author_signature before relaying the comment on
+ - If an item has been relayed on by the top-level post owner, the contacts who receive it
+ check only the parent_author_signature. Basically, they trust that the top-level post
+ owner has already verified the authenticity of anything he/she sends out
+ - In either case, the signature that get checked is the signature created by the person
+ who sent the psuedo-salmon
+ */
+
+ $signed_data = $guid . ';' . $parent_guid . ';' . $text . ';' . $diaspora_handle;
+ $key = $msg['key'];
+
+ if($parent_author_signature) {
+ // If a parent_author_signature exists, then we've received the comment
+ // relayed from the top-level post owner. There's no need to check the
+ // author_signature if the parent_author_signature is valid
+
+ $parent_author_signature = base64_decode($parent_author_signature);
+
+ if(! rsa_verify($signed_data,$parent_author_signature,$key,'sha256')) {
+ logger('diaspora_comment: top-level owner verification failed.');
+ return;
+ }
+ }
+ else {
+ // If there's no parent_author_signature, then we've received the comment
+ // from the comment creator. In that case, the person is commenting on
+ // our post, so he/she must be a contact of ours and his/her public key
+ // should be in $msg['key']
+
+ $author_signature = base64_decode($author_signature);
+
+ if(! rsa_verify($signed_data,$author_signature,$key,'sha256')) {
+ logger('diaspora_comment: comment author verification failed.');
+ return;
+ }
+ }
+
+ // Phew! Everything checks out. Now create an item.
+
+ // Find the original comment author information.
+ // We need this to make sure we display the comment author
+ // information (name and avatar) correctly.
+
+ if(strcasecmp($diaspora_handle,$msg['author']) == 0)
+ $person = $contact;
+ else {
+ $person = find_diaspora_person_by_handle($diaspora_handle);
+
+ if(! is_array($person)) {
+ logger('diaspora_comment: unable to find author details');
+ return;
+ }
+ }
+
+
+ $body = diaspora2bb($text);
+
+ $datarray = array();
+
+ $tags = get_tags($body);
+
+ if(count($tags)) {
+
+ $datarray['term'] = array();
+
+ foreach($tags as $tag) {
+ if(strpos($tag,'#') === 0) {
+ if((strpos($tag,'[url=')) || (strpos($tag,'[zrl')))
+ continue;
+
+ // don't link tags that are already embedded in links
+
+ if(preg_match('/\[(.*?)' . preg_quote($tag,'/') . '(.*?)\]/',$body))
+ continue;
+ if(preg_match('/\[(.*?)\]\((.*?)' . preg_quote($tag,'/') . '(.*?)\)/',$body))
+ continue;
+
+ $basetag = str_replace('_',' ',substr($tag,1));
+ $body = str_replace($tag,'#[url=' . $a->get_baseurl() . '/search?tag=' . rawurlencode($basetag) . ']' . $basetag . '[/url]',$body);
+
+ $datarray['term'][] = array(
+ 'uid' => $importer['channel_id'],
+ 'type' => TERM_HASHTAG,
+ 'otype' => TERM_OBJ_POST,
+ 'term' => $basetag,
+ 'url' => z_root() . '/search?tag=' . rawurlencode($basetag)
+ );
+ }
+ }
+ }
+
+ $cnt = preg_match_all('/@\[url=(.*?)\](.*?)\[\/url\]/ism',$body,$matches,PREG_SET_ORDER);
+ if($cnt) {
+ foreach($matches as $mtch) {
+ $datarray['term'][] = array(
+ 'uid' => $importer['channel_id'],
+ 'type' => TERM_MENTION,
+ 'otype' => TERM_OBJ_POST,
+ 'term' => $mtch[2],
+ 'url' => $mtch[1]
+ );
+ }
+ }
+
+ $datarray['uid'] = $importer['channel_id'];
+ $datarray['verb'] = ACTIVITY_POST;
+ $datarray['mid'] = $guid;
+ $datarray['parent_mid'] = $parent_item['mid'];
+
+ // set the route to that of the parent so downstream hubs won't reject it.
+ $datarray['route'] = $parent_item['route'];
+
+ // No timestamps for comments? OK, we'll the use current time.
+ $datarray['changed'] = $datarray['created'] = $datarray['edited'] = datetime_convert();
+ $datarray['item_private'] = $parent_item['item_private'];
+
+ $datarray['owner_xchan'] = $parent_item['owner_xchan'];
+ $datarray['author_xchan'] = $person['xchan_hash'];
+
+ $datarray['body'] = $body;
+
+ if(strstr($person['xchan_network'],'friendica'))
+ $app = 'Friendica';
+ else
+ $app = 'Diaspora';
+
+ $datarray['app'] = $app;
+
+ if(! $parent_author_signature) {
+ $key = get_config('system','pubkey');
+ $x = array('signer' => $diaspora_handle, 'body' => $text,
+ 'signed_text' => $signed_data, 'signature' => base64_encode($author_signature));
+ $datarray['diaspora_meta'] = json_encode(crypto_encapsulate(json_encode($x),$key));
+ }
+
+ $result = item_store($datarray);
+
+ if($result && $result['success'])
+ $message_id = $result['item_id'];
+
+ if(($parent_item['item_flags'] & ITEM_ORIGIN) && (! $parent_author_signature)) {
+ // if the message isn't already being relayed, notify others
+ // the existence of parent_author_signature means the parent_author or owner
+ // is already relaying.
+
+ proc_run('php','include/notifier.php','comment-import',$message_id);
+ }
+
+ if($result['item_id']) {
+ $r = q("select * from item where id = %d limit 1",
+ intval($result['item_id'])
+ );
+ if($r)
+ send_status_notifications($result['item_id'],$r[0]);
+ }
+
+ return;
+}
+
+
+
+
+function diaspora_conversation($importer,$xml,$msg) {
+
+ $a = get_app();
+
+ $guid = notags(unxmlify($xml->guid));
+ $subject = notags(unxmlify($xml->subject));
+ $diaspora_handle = notags(unxmlify($xml->diaspora_handle));
+ $participant_handles = notags(unxmlify($xml->participant_handles));
+ $created_at = datetime_convert('UTC','UTC',notags(unxmlify($xml->created_at)));
+
+ $parent_uri = $diaspora_handle . ':' . $guid;
+
+ $messages = $xml->message;
+
+ if(! count($messages)) {
+ logger('diaspora_conversation: empty conversation');
+ return;
+ }
+
+ $contact = diaspora_get_contact_by_handle($importer['channel_id'],$msg['author']);
+ if(! $contact) {
+ logger('diaspora_conversation: cannot find contact: ' . $msg['author']);
+ return;
+ }
+
+
+ if(! perm_is_allowed($importer['channel_id'],$contact['xchan_hash'],'post_mail')) {
+ logger('diaspora_conversation: Ignoring this author.');
+ return 202;
+ }
+
+ $conversation = null;
+
+ $c = q("select * from conv where uid = %d and guid = '%s' limit 1",
+ intval($importer['channel_id']),
+ dbesc($guid)
+ );
+ if(count($c))
+ $conversation = $c[0];
+ else {
+ $r = q("insert into conv (uid,guid,creator,created,updated,subject,recips) values(%d, '%s', '%s', '%s', '%s', '%s', '%s') ",
+ intval($importer['channel_id']),
+ dbesc($guid),
+ dbesc($diaspora_handle),
+ dbesc(datetime_convert('UTC','UTC',$created_at)),
+ dbesc(datetime_convert()),
+ dbesc($subject),
+ dbesc($participant_handles)
+ );
+ if($r)
+ $c = q("select * from conv where uid = %d and guid = '%s' limit 1",
+ intval($importer['channel_id']),
+ dbesc($guid)
+ );
+ if(count($c))
+ $conversation = $c[0];
+ }
+ if(! $conversation) {
+ logger('diaspora_conversation: unable to create conversation.');
+ return;
+ }
+
+ foreach($messages as $mesg) {
+
+ $reply = 0;
+
+ $msg_guid = notags(unxmlify($mesg->guid));
+ $msg_parent_guid = notags(unxmlify($mesg->parent_guid));
+ $msg_parent_author_signature = notags(unxmlify($mesg->parent_author_signature));
+ $msg_author_signature = notags(unxmlify($mesg->author_signature));
+ $msg_text = unxmlify($mesg->text);
+ $msg_created_at = datetime_convert('UTC','UTC',notags(unxmlify($mesg->created_at)));
+ $msg_diaspora_handle = notags(unxmlify($mesg->diaspora_handle));
+ $msg_conversation_guid = notags(unxmlify($mesg->conversation_guid));
+ if($msg_conversation_guid != $guid) {
+ logger('diaspora_conversation: message conversation guid does not belong to the current conversation. ' . $xml);
+ continue;
+ }
+
+ $body = diaspora2bb($msg_text);
+
+ $author_signed_data = $msg_guid . ';' . $msg_parent_guid . ';' . $msg_text . ';' . unxmlify($mesg->created_at) . ';' . $msg_diaspora_handle . ';' . $msg_conversation_guid;
+
+ $author_signature = base64_decode($msg_author_signature);
+
+ if(strcasecmp($msg_diaspora_handle,$msg['author']) == 0) {
+ $person = $contact;
+ $key = $msg['key'];
+ }
+ else {
+ $person = find_diaspora_person_by_handle($msg_diaspora_handle);
+
+ if(is_array($person) && x($person,'xchan_pubkey'))
+ $key = $person['xchan_pubkey'];
+ else {
+ logger('diaspora_conversation: unable to find author details');
+ continue;
+ }
+ }
+
+ if(! rsa_verify($author_signed_data,$author_signature,$key,'sha256')) {
+ logger('diaspora_conversation: verification failed.');
+ continue;
+ }
+
+ if($msg_parent_author_signature) {
+ $owner_signed_data = $msg_guid . ';' . $msg_parent_guid . ';' . $msg_text . ';' . unxmlify($mesg->created_at) . ';' . $msg_diaspora_handle . ';' . $msg_conversation_guid;
+
+ $parent_author_signature = base64_decode($msg_parent_author_signature);
+
+ $key = $msg['key'];
+
+ if(! rsa_verify($owner_signed_data,$parent_author_signature,$key,'sha256')) {
+ logger('diaspora_conversation: owner verification failed.');
+ continue;
+ }
+ }
+
+ $r = q("select id from mail where mid = '%s' limit 1",
+ dbesc($message_id)
+ );
+ if(count($r)) {
+ logger('diaspora_conversation: duplicate message already delivered.', LOGGER_DEBUG);
+ continue;
+ }
+
+ $key = get_config('system','pubkey');
+ if($subject)
+ $subject = json_encode(crypto_encapsulate($subject,$key));
+ if($body)
+ $body = json_encode(crypto_encapsulate($body,$key));
+
+ q("insert into mail ( `channel_id`, `convid`, `from_xchan`,`to_xchan`,`title`,`body`,`mail_flags`,`mid`,`parent_mid`,`created`) values ( %d, %d, '%s', '%s', '%s', '%s', %d, '%s', '%s', '%s')",
+ intval($importer['channel_id']),
+ intval($conversation['id']),
+ dbesc($person['xchan_hash']),
+ dbesc($importer['channel_hash']),
+ dbesc($subject),
+ dbesc($body),
+ intval(MAIL_OBSCURED),
+ dbesc($msg_guid),
+ dbesc($parent_uri),
+ dbesc($msg_created_at)
+ );
+
+ q("update conv set updated = '%s' where id = %d",
+ dbesc(datetime_convert()),
+ intval($conversation['id'])
+ );
+
+ require_once('include/enotify.php');
+/******
+//FIXME
+
+ notification(array(
+ 'type' => NOTIFY_MAIL,
+ 'notify_flags' => $importer['notify-flags'],
+ 'language' => $importer['language'],
+ 'to_name' => $importer['username'],
+ 'to_email' => $importer['email'],
+ 'uid' =>$importer['importer_uid'],
+ 'item' => array('subject' => $subject, 'body' => $body),
+ 'source_name' => $person['name'],
+ 'source_link' => $person['url'],
+ 'source_photo' => $person['thumb'],
+ 'verb' => ACTIVITY_POST,
+ 'otype' => 'mail'
+ ));
+*******/
+
+ }
+
+ return;
+}
+
+function diaspora_message($importer,$xml,$msg) {
+
+ $a = get_app();
+
+ $msg_guid = notags(unxmlify($xml->guid));
+ $msg_parent_guid = notags(unxmlify($xml->parent_guid));
+ $msg_parent_author_signature = notags(unxmlify($xml->parent_author_signature));
+ $msg_author_signature = notags(unxmlify($xml->author_signature));
+ $msg_text = unxmlify($xml->text);
+ $msg_created_at = datetime_convert('UTC','UTC',notags(unxmlify($xml->created_at)));
+ $msg_diaspora_handle = notags(unxmlify($xml->diaspora_handle));
+ $msg_conversation_guid = notags(unxmlify($xml->conversation_guid));
+
+ $parent_uri = $msg_parent_guid;
+
+ $contact = diaspora_get_contact_by_handle($importer['channel_id'],$msg_diaspora_handle);
+ if(! $contact) {
+ logger('diaspora_message: cannot find contact: ' . $msg_diaspora_handle);
+ return;
+ }
+
+ if(($contact['rel'] == CONTACT_IS_FOLLOWER) || ($contact['blocked']) || ($contact['readonly'])) {
+ logger('diaspora_message: Ignoring this author.');
+ return 202;
+ }
+
+ $conversation = null;
+
+ $c = q("select * from conv where uid = %d and guid = '%s' limit 1",
+ intval($importer['channel_id']),
+ dbesc($msg_conversation_guid)
+ );
+ if($c)
+ $conversation = $c[0];
+ else {
+ logger('diaspora_message: conversation not available.');
+ return;
+ }
+
+ $reply = 0;
+
+ $subject = $conversation['subject'];
+ $body = diaspora2bb($msg_text);
+ $message_id = $msg_diaspora_handle . ':' . $msg_guid;
+
+ $author_signed_data = $msg_guid . ';' . $msg_parent_guid . ';' . $msg_text . ';' . unxmlify($xml->created_at) . ';' . $msg_diaspora_handle . ';' . $msg_conversation_guid;
+
+
+ $author_signature = base64_decode($msg_author_signature);
+
+ $person = find_diaspora_person_by_handle($msg_diaspora_handle);
+ if(is_array($person) && x($person,'xchan_pubkey'))
+ $key = $person['xchan_pubkey'];
+ else {
+ logger('diaspora_message: unable to find author details');
+ return;
+ }
+
+ if(! rsa_verify($author_signed_data,$author_signature,$key,'sha256')) {
+ logger('diaspora_message: verification failed.');
+ return;
+ }
+
+ $r = q("select id from mail where mid = '%s' and channel_id = %d limit 1",
+ dbesc($message_id),
+ intval($importer['channel_id'])
+ );
+ if($r) {
+ logger('diaspora_message: duplicate message already delivered.', LOGGER_DEBUG);
+ return;
+ }
+
+ $key = get_config('system','pubkey');
+ if($subject)
+ $subject = json_encode(crypto_encapsulate($subject,$key));
+ if($body)
+ $body = json_encode(crypto_encapsulate($body,$key));
+
+ q("insert into mail ( `channel_id`, `convid`, `from_xchan`,`to_xchan`,`title`,`body`,`mail_flags`,`mid`,`parent_mid`,`created`) values ( %d, %d, '%s', '%s', '%s', '%s', '%d','%s','%s','%s')",
+ intval($importer['channel_id']),
+ intval($conversation['id']),
+ dbesc($person['xchan_hash']),
+ dbesc($importer['xchan_hash']),
+ dbesc($subject),
+ dbesc($body),
+ intval(MAIL_OBSCURED),
+ dbesc($msg_guid),
+ dbesc($parent_uri),
+ dbesc($msg_created_at)
+ );
+
+ q("update conv set updated = '%s' where id = %d",
+ dbesc(datetime_convert()),
+ intval($conversation['id'])
+ );
+
+ return;
+}
+
+
+function diaspora_photo($importer,$xml,$msg,$attempt=1) {
+
+ $a = get_app();
+
+ logger('diaspora_photo: init',LOGGER_DEBUG);
+
+ $remote_photo_path = notags(unxmlify($xml->remote_photo_path));
+
+ $remote_photo_name = notags(unxmlify($xml->remote_photo_name));
+
+ $status_message_guid = notags(unxmlify($xml->status_message_guid));
+
+ $guid = notags(unxmlify($xml->guid));
+
+ $diaspora_handle = notags(unxmlify($xml->diaspora_handle));
+
+ $public = notags(unxmlify($xml->public));
+
+ $created_at = notags(unxmlify($xml_created_at));
+
+ logger('diaspora_photo: status_message_guid: ' . $status_message_guid, LOGGER_DEBUG);
+
+ $contact = diaspora_get_contact_by_handle($importer['channel_id'],$msg['author']);
+ if(! $contact) {
+ logger('diaspora_photo: contact record not found: ' . $msg['author'] . ' handle: ' . $diaspora_handle);
+ return;
+ }
+
+ if(! perm_is_allowed($importer['channel_id'],$contact['xchan_hash'],'send_stream')) {
+ logger('diaspora_photo: Ignoring this author.');
+ return 202;
+ }
+
+ $r = q("SELECT * FROM `item` WHERE `uid` = %d AND `mid` = '%s' LIMIT 1",
+ intval($importer['channel_id']),
+ dbesc($status_message_guid)
+ );
+ if(! $r) {
+ logger('diaspora_photo: attempt = ' . $attempt . '; status message not found: ' . $status_message_guid . ' for photo: ' . $guid);
+ return;
+ }
+
+// $parent_item = $r[0];
+
+// $link_text = '[img]' . $remote_photo_path . $remote_photo_name . '[/img]' . "\n";
+
+// $link_text = scale_external_images($link_text, true,
+// array($remote_photo_name, 'scaled_full_' . $remote_photo_name));
+
+// if(strpos($parent_item['body'],$link_text) === false) {
+// $r = q("update item set `body` = '%s', `visible` = 1 where `id` = %d and `uid` = %d",
+// dbesc($link_text . $parent_item['body']),
+// intval($parent_item['id']),
+// intval($parent_item['uid'])
+// );
+// }
+
+ return;
+}
+
+
+
+
+function diaspora_like($importer,$xml,$msg) {
+
+ $a = get_app();
+ $guid = notags(unxmlify($xml->guid));
+ $parent_guid = notags(unxmlify($xml->parent_guid));
+ $diaspora_handle = notags(unxmlify($xml->diaspora_handle));
+ $target_type = notags(unxmlify($xml->target_type));
+ $positive = notags(unxmlify($xml->positive));
+ $author_signature = notags(unxmlify($xml->author_signature));
+
+ $parent_author_signature = (($xml->parent_author_signature) ? notags(unxmlify($xml->parent_author_signature)) : '');
+
+ // likes on comments not supported here and likes on photos not supported by Diaspora
+
+// if($target_type !== 'Post')
+// return;
+
+ $contact = diaspora_get_contact_by_handle($importer['channel_id'],$msg['author']);
+ if(! $contact) {
+ logger('diaspora_like: cannot find contact: ' . $msg['author'] . ' for channel ' . $importer['channel_name']);
+ return;
+ }
+
+
+ if(! perm_is_allowed($importer['channel_id'],$contact['xchan_hash'],'post_comments')) {
+ logger('diaspora_like: Ignoring this author.');
+ return 202;
+ }
+
+ $r = q("SELECT * FROM `item` WHERE `uid` = %d AND `mid` = '%s' LIMIT 1",
+ intval($importer['channel_id']),
+ dbesc($parent_guid)
+ );
+ if(! count($r)) {
+ logger('diaspora_like: parent item not found: ' . $guid);
+ return;
+ }
+
+ $parent_item = $r[0];
+
+ $r = q("SELECT * FROM `item` WHERE `uid` = %d AND `mid` = '%s' LIMIT 1",
+ intval($importer['channel_id']),
+ dbesc($guid)
+ );
+ if(count($r)) {
+ if($positive === 'true') {
+ logger('diaspora_like: duplicate like: ' . $guid);
+ return;
+ }
+ // Note: I don't think "Like" objects with positive = "false" are ever actually used
+ // It looks like "RelayableRetractions" are used for "unlike" instead
+ if($positive === 'false') {
+ logger('diaspora_like: received a like with positive set to "false"...ignoring');
+ // perhaps call drop_item()
+ // FIXME--actually don't unless it turns out that Diaspora does indeed send out "false" likes
+ // send notification via proc_run()
+ return;
+ }
+ }
+
+ $i = q("select * from xchan where xchan_hash = '%s' limit 1",
+ dbesc($parent_item['author_xchan'])
+ );
+ if($i)
+ $item_author = $i[0];
+
+ // Note: I don't think "Like" objects with positive = "false" are ever actually used
+ // It looks like "RelayableRetractions" are used for "unlike" instead
+ if($positive === 'false') {
+ logger('diaspora_like: received a like with positive set to "false"');
+ logger('diaspora_like: unlike received with no corresponding like...ignoring');
+ return;
+ }
+
+
+ /* How Diaspora performs "like" signature checking:
+
+ - If an item has been sent by the like author to the top-level post owner to relay on
+ to the rest of the contacts on the top-level post, the top-level post owner should check
+ the author_signature, then create a parent_author_signature before relaying the like on
+ - If an item has been relayed on by the top-level post owner, the contacts who receive it
+ check only the parent_author_signature. Basically, they trust that the top-level post
+ owner has already verified the authenticity of anything he/she sends out
+ - In either case, the signature that get checked is the signature created by the person
+ who sent the salmon
+ */
+
+ // 2014-09-10 let's try this: signatures are failing. I'll try and make a signable string from
+ // the parameters in the order they were presented in the post. This is how D* creates the signable string.
+
+
+ $signed_data = $positive . ';' . $guid . ';' . $target_type . ';' . $parent_guid . ';' . $diaspora_handle;
+
+ $key = $msg['key'];
+
+ if($parent_author_signature) {
+ // If a parent_author_signature exists, then we've received the like
+ // relayed from the top-level post owner. There's no need to check the
+ // author_signature if the parent_author_signature is valid
+
+ $parent_author_signature = base64_decode($parent_author_signature);
+
+ if(! rsa_verify($signed_data,$parent_author_signature,$key,'sha256')) {
+ if (intval(get_config('system','ignore_diaspora_like_signature')))
+ logger('diaspora_like: top-level owner verification failed. Proceeding anyway.');
+ else {
+ logger('diaspora_like: top-level owner verification failed.');
+ return;
+ }
+ }
+ }
+ else {
+ // If there's no parent_author_signature, then we've received the like
+ // from the like creator. In that case, the person is "like"ing
+ // our post, so he/she must be a contact of ours and his/her public key
+ // should be in $msg['key']
+
+ $author_signature = base64_decode($author_signature);
+
+ if(! rsa_verify($signed_data,$author_signature,$key,'sha256')) {
+ if (intval(get_config('system','ignore_diaspora_like_signature')))
+ logger('diaspora_like: like creator verification failed. Proceeding anyway');
+ else {
+ logger('diaspora_like: like creator verification failed.');
+ return;
+ }
+ }
+ }
+
+ logger('diaspora_like: signature check complete.',LOGGER_DEBUG);
+
+ // Phew! Everything checks out. Now create an item.
+
+ // Find the original comment author information.
+ // We need this to make sure we display the comment author
+ // information (name and avatar) correctly.
+ if(strcasecmp($diaspora_handle,$msg['author']) == 0)
+ $person = $contact;
+ else {
+ $person = find_diaspora_person_by_handle($diaspora_handle);
+
+ if(! is_array($person)) {
+ logger('diaspora_like: unable to find author details');
+ return;
+ }
+ }
+
+ $uri = $diaspora_handle . ':' . $guid;
+
+ $activity = ACTIVITY_LIKE;
+
+ $post_type = (($parent_item['resource_type'] === 'photo') ? t('photo') : t('status'));
+
+ $links = array(array('rel' => 'alternate','type' => 'text/html', 'href' => $parent_item['plink']));
+ $objtype = (($parent_item['resource_type'] === 'photo') ? ACTIVITY_OBJ_PHOTO : ACTIVITY_OBJ_NOTE );
+
+ $body = $parent_item['body'];
+
+
+ $object = json_encode(array(
+ 'type' => $post_type,
+ 'id' => $parent_item['mid'],
+ 'parent' => (($parent_item['thr_parent']) ? $parent_item['thr_parent'] : $parent_item['parent_mid']),
+ 'link' => $links,
+ 'title' => $parent_item['title'],
+ 'content' => $parent_item['body'],
+ 'created' => $parent_item['created'],
+ 'edited' => $parent_item['edited'],
+ 'author' => array(
+ 'name' => $item_author['xchan_name'],
+ 'address' => $item_author['xchan_addr'],
+ 'guid' => $item_author['xchan_guid'],
+ 'guid_sig' => $item_author['xchan_guid_sig'],
+ 'link' => array(
+ array('rel' => 'alternate', 'type' => 'text/html', 'href' => $item_author['xchan_url']),
+ array('rel' => 'photo', 'type' => $item_author['xchan_photo_mimetype'], 'href' => $item_author['xchan_photo_m'])),
+ ),
+ ));
+
+
+ $bodyverb = t('%1$s likes %2$s\'s %3$s');
+
+ $arr = array();
+
+ $arr['uid'] = $importer['channel_id'];
+ $arr['aid'] = $importer['channel_account_id'];
+ $arr['mid'] = $guid;
+ $arr['parent_mid'] = $parent_item['mid'];
+ $arr['owner_xchan'] = $parent_item['owner_xchan'];
+ $arr['author_xchan'] = $person['xchan_hash'];
+
+ $ulink = '[url=' . $contact['url'] . ']' . $contact['name'] . '[/url]';
+ $alink = '[url=' . $parent_item['author-link'] . ']' . $parent_item['author-name'] . '[/url]';
+ $plink = '[url='. z_root() .'/display/'.$guid.']'.$post_type.'[/url]';
+ $arr['body'] = sprintf( $bodyverb, $ulink, $alink, $plink );
+
+ $arr['app'] = 'Diaspora';
+
+ // set the route to that of the parent so downstream hubs won't reject it.
+ $arr['route'] = $parent_item['route'];
+
+ $arr['item_private'] = $parent_item['item_private'];
+ $arr['verb'] = $activity;
+ $arr['obj_type'] = $objtype;
+ $arr['object'] = $object;
+
+ if(! $parent_author_signature) {
+ $key = get_config('system','pubkey');
+ $x = array('signer' => $diaspora_handle, 'body' => $text,
+ 'signed_text' => $signed_data, 'signature' => base64_encode($author_signature));
+ $arr['diaspora_meta'] = json_encode(crypto_encapsulate(json_encode($x),$key));
+ }
+
+ $x = item_store($arr);
+
+ if($x)
+ $message_id = $x['item_id'];
+
+ // if the message isn't already being relayed, notify others
+ // the existence of parent_author_signature means the parent_author or owner
+ // is already relaying. The parent_item['origin'] indicates the message was created on our system
+
+ if(($parent_item['item_flags'] & ITEM_ORIGIN) && (! $parent_author_signature))
+ proc_run('php','include/notifier.php','comment-import',$message_id);
+
+ return;
+}
+
+function diaspora_retraction($importer,$xml) {
+
+
+ $guid = notags(unxmlify($xml->guid));
+ $diaspora_handle = notags(unxmlify($xml->diaspora_handle));
+ $type = notags(unxmlify($xml->type));
+
+ $contact = diaspora_get_contact_by_handle($importer['channel_id'],$diaspora_handle);
+ if(! $contact)
+ return;
+
+ if($type === 'Person') {
+ require_once('include/Contact.php');
+ contact_remove($importer['channel_id'],$contact['abook_id']);
+ }
+ elseif($type === 'Post') {
+ $r = q("select * from item where mid = '%s' and uid = %d limit 1",
+ dbesc('guid'),
+ intval($importer['channel_id'])
+ );
+ if(count($r)) {
+ if(link_compare($r[0]['author_xchan'],$contact['xchan_hash'])) {
+ drop_item($r[0]['id'],false);
+ }
+ }
+ }
+
+ return 202;
+ // NOTREACHED
+}
+
+function diaspora_signed_retraction($importer,$xml,$msg) {
+
+
+ $guid = notags(unxmlify($xml->target_guid));
+ $diaspora_handle = notags(unxmlify($xml->sender_handle));
+ $type = notags(unxmlify($xml->target_type));
+ $sig = notags(unxmlify($xml->target_author_signature));
+
+ $parent_author_signature = (($xml->parent_author_signature) ? notags(unxmlify($xml->parent_author_signature)) : '');
+
+ $contact = diaspora_get_contact_by_handle($importer['channel_id'],$diaspora_handle);
+ if(! $contact) {
+ logger('diaspora_signed_retraction: no contact ' . $diaspora_handle . ' for ' . $importer['channel_id']);
+ return;
+ }
+
+
+ $signed_data = $guid . ';' . $type ;
+ $key = $msg['key'];
+
+ /* How Diaspora performs relayable_retraction signature checking:
+
+ - If an item has been sent by the item author to the top-level post owner to relay on
+ to the rest of the contacts on the top-level post, the top-level post owner checks
+ the author_signature, then creates a parent_author_signature before relaying the item on
+ - If an item has been relayed on by the top-level post owner, the contacts who receive it
+ check only the parent_author_signature. Basically, they trust that the top-level post
+ owner has already verified the authenticity of anything he/she sends out
+ - In either case, the signature that get checked is the signature created by the person
+ who sent the salmon
+ */
+
+ if($parent_author_signature) {
+
+ $parent_author_signature = base64_decode($parent_author_signature);
+
+ if(! rsa_verify($signed_data,$parent_author_signature,$key,'sha256')) {
+ logger('diaspora_signed_retraction: top-level post owner verification failed');
+ return;
+ }
+
+ }
+ else {
+
+ $sig_decode = base64_decode($sig);
+
+ if(! rsa_verify($signed_data,$sig_decode,$key,'sha256')) {
+ logger('diaspora_signed_retraction: retraction owner verification failed.' . print_r($msg,true));
+ return;
+ }
+ }
+
+ if($type === 'StatusMessage' || $type === 'Comment' || $type === 'Like') {
+ $r = q("select * from item where mid = '%s' and uid = %d limit 1",
+ dbesc($guid),
+ intval($importer['channel_id'])
+ );
+ if($r) {
+ if($r[0]['author_xchan'] == $contact['xchan_hash']) {
+
+ drop_item($r[0]['id'],false, DROPITEM_PHASE1);
+
+ // Now check if the retraction needs to be relayed by us
+ //
+ // The first item in the `item` table with the parent id is the parent. However, MySQL doesn't always
+ // return the items ordered by `item`.`id`, in which case the wrong item is chosen as the parent.
+ // The only item with `parent` and `id` as the parent id is the parent item.
+ $p = q("select item_flags from item where parent = %d and id = %d limit 1",
+ $r[0]['parent'],
+ $r[0]['parent']
+ );
+ if($p) {
+ if(($p[0]['item_flags'] & ITEM_ORIGIN) && (! $parent_author_signature)) {
+// FIXME so we can relay this
+// q("insert into sign (`retract_iid`,`signed_text`,`signature`,`signer`) values (%d,'%s','%s','%s') ",
+// $r[0]['id'],
+// dbesc($signed_data),
+// dbesc($sig),
+// dbesc($diaspora_handle)
+// );
+
+ // the existence of parent_author_signature would have meant the parent_author or owner
+ // is already relaying.
+ logger('diaspora_signed_retraction: relaying relayable_retraction');
+
+ proc_run('php','include/notifier.php','drop',$r[0]['id']);
+ }
+ }
+ }
+ }
+ }
+ else
+ logger('diaspora_signed_retraction: unknown type: ' . $type);
+
+ return 202;
+ // NOTREACHED
+}
+
+function diaspora_profile($importer,$xml,$msg) {
+
+ $a = get_app();
+ $diaspora_handle = notags(unxmlify($xml->diaspora_handle));
+
+
+ if($diaspora_handle != $msg['author']) {
+ logger('diaspora_post: Potential forgery. Message handle is not the same as envelope sender.');
+ return 202;
+ }
+
+ $contact = diaspora_get_contact_by_handle($importer['channel_id'],$diaspora_handle);
+ if(! $contact)
+ return;
+
+ if($contact['blocked']) {
+ logger('diaspora_post: Ignoring this author.');
+ return 202;
+ }
+
+ $name = unxmlify($xml->first_name) . ((strlen($xml->last_name)) ? ' ' . unxmlify($xml->last_name) : '');
+ $image_url = unxmlify($xml->image_url);
+ $birthday = unxmlify($xml->birthday);
+
+
+ $handle_parts = explode("@", $diaspora_handle);
+ if($name === '') {
+ $name = $handle_parts[0];
+ }
+
+
+ if( preg_match("|^https?://|", $image_url) === 0) {
+ $image_url = "http://" . $handle_parts[1] . $image_url;
+ }
+
+ require_once('include/photo/photo_driver.php');
+
+ $images = import_profile_photo($image_url,$contact['xchan_hash']);
+
+ // Generic birthday. We don't know the timezone. The year is irrelevant.
+
+ $birthday = str_replace('1000','1901',$birthday);
+
+ $birthday = datetime_convert('UTC','UTC',$birthday,'Y-m-d');
+
+ // this is to prevent multiple birthday notifications in a single year
+ // if we already have a stored birthday and the 'm-d' part hasn't changed, preserve the entry, which will preserve the notify year
+
+ if(substr($birthday,5) === substr($contact['bd'],5))
+ $birthday = $contact['bd'];
+
+ // TODO: update name on item['author-name'] if the name changed. See consume_feed()
+ // Not doing this currently because D* protocol is scheduled for revision soon.
+
+/* $r = q("UPDATE `contact` SET `name` = '%s', `name-date` = '%s', `photo` = '%s', `thumb` = '%s', `micro` = '%s', `avatar-date` = '%s' , `bd` = '%s' WHERE `id` = %d AND `uid` = %d",
+ dbesc($name),
+ dbesc(datetime_convert()),
+ dbesc($images[0]),
+ dbesc($images[1]),
+ dbesc($images[2]),
+ dbesc(datetime_convert()),
+ dbesc($birthday),
+ intval($contact['id']),
+ intval($importer['channel_id'])
+ );
+*/
+/* if($r) {
+ if($oldphotos) {
+ foreach($oldphotos as $ph) {
+ q("DELETE FROM `photo` WHERE `uid` = %d AND `contact-id` = %d AND `album` = 'Contact Photos' AND `resource-id` = '%s' ",
+ intval($importer['channel_id']),
+ intval($contact['id']),
+ dbesc($ph['resource-id'])
+ );
+ }
+ }
+ } */
+
+ return;
+
+}
+
+function diaspora_share($owner,$contact) {
+ $a = get_app();
+ $myaddr = $owner['channel_address'] . '@' . substr($a->get_baseurl(), strpos($a->get_baseurl(),'://') + 3);
+
+ if(! array_key_exists('xchan_hash',$contact)) {
+ $c = q("select * from xchan left join hubloc on xchan_hash = hubloc_hash where xchan_hash = '%s' limit 1",
+ dbesc($contact['hubloc_hash'])
+ );
+ if(! $c) {
+ logger('diaspora_share: ' . $contact['hubloc_hash'] . ' not found.');
+ return;
+ }
+ $contact = $c[0];
+ }
+
+ $theiraddr = $contact['xchan_addr'];
+
+ $tpl = get_markup_template('diaspora_share.tpl');
+ $msg = replace_macros($tpl, array(
+ '$sender' => $myaddr,
+ '$recipient' => $theiraddr
+ ));
+
+ $slap = 'xml=' . urlencode(urlencode(diaspora_msg_build($msg,$owner,$contact,$owner['channel_prvkey'],$contact['xchan_pubkey'])));
+ return(diaspora_transmit($owner,$contact,$slap, false));
+}
+
+function diaspora_unshare($owner,$contact) {
+
+ $a = get_app();
+ $myaddr = $owner['channel_address'] . '@' . substr($a->get_baseurl(), strpos($a->get_baseurl(),'://') + 3);
+
+ $tpl = get_markup_template('diaspora_retract.tpl');
+ $msg = replace_macros($tpl, array(
+ '$guid' => $owner['channel_guid'],
+ '$type' => 'Person',
+ '$handle' => $myaddr
+ ));
+
+ $slap = 'xml=' . urlencode(urlencode(diaspora_msg_build($msg,$owner,$contact,$owner['channel_prvkey'],$contact['xchan_pubkey'])));
+
+ return(diaspora_transmit($owner,$contact,$slap, false));
+}
+
+
+function diaspora_send_status($item,$owner,$contact,$public_batch = false) {
+
+ $a = get_app();
+ $myaddr = $owner['channel_address'] . '@' . substr($a->get_baseurl(), strpos($a->get_baseurl(),'://') + 3);
+
+ $images = array();
+
+ $title = $item['title'];
+ $body = bb2diaspora_itembody($item,true);
+
+/*
+ // We're trying to match Diaspora's split message/photo protocol but
+ // all the photos are displayed on D* as links and not img's - even
+ // though we're sending pretty much precisely what they send us when
+ // doing the same operation.
+ // Commented out for now, we'll use bb2diaspora to convert photos to markdown
+ // which seems to get through intact.
+
+ $cnt = preg_match_all('|\[img\](.*?)\[\/img\]|',$body,$matches,PREG_SET_ORDER);
+ if($cnt) {
+ foreach($matches as $mtch) {
+ $detail = array();
+ $detail['str'] = $mtch[0];
+ $detail['path'] = dirname($mtch[1]) . '/';
+ $detail['file'] = basename($mtch[1]);
+ $detail['guid'] = $item['guid'];
+ $detail['handle'] = $myaddr;
+ $images[] = $detail;
+ $body = str_replace($detail['str'],$mtch[1],$body);
+ }
+ }
+*/
+
+
+ $public = (($item['item_private']) ? 'false' : 'true');
+
+ require_once('include/datetime.php');
+ $created = datetime_convert('UTC','UTC',$item['created'],'Y-m-d H:i:s \U\T\C');
+
+ // Detect a share element and do a reshare
+ // see: https://github.com/Raven24/diaspora-federation/blob/master/lib/diaspora-federation/entities/reshare.rb
+ if (!$item['item_private'] AND ($ret = diaspora_is_reshare($item["body"]))) {
+ $tpl = get_markup_template('diaspora_reshare.tpl');
+ $msg = replace_macros($tpl, array(
+ '$root_handle' => xmlify($ret['root_handle']),
+ '$root_guid' => $ret['root_guid'],
+ '$guid' => $item['mid'],
+ '$handle' => xmlify($myaddr),
+ '$public' => $public,
+ '$created' => $created,
+ '$provider' => (($item['app']) ? $item['app'] : 'redmatrix')
+ ));
+ } else {
+ $tpl = get_markup_template('diaspora_post.tpl');
+ $msg = replace_macros($tpl, array(
+ '$body' => xmlify($body),
+ '$guid' => $item['mid'],
+ '$handle' => xmlify($myaddr),
+ '$public' => $public,
+ '$created' => $created,
+ '$provider' => (($item['app']) ? $item['app'] : 'redmatrix')
+ ));
+ }
+
+ logger('diaspora_send_status: '.$owner['channel_name'].' -> '.$contact['xchan_name'].' base message: ' . $msg, LOGGER_DATA);
+
+ $slap = 'xml=' . urlencode(urlencode(diaspora_msg_build($msg,$owner,$contact,$owner['channel_prvkey'],$contact['xchan_pubkey'],$public_batch)));
+
+ $return_code = diaspora_transmit($owner,$contact,$slap,$public_batch);
+
+// logger('diaspora_send_status: guid: '.$item['mid'].' result '.$return_code, LOGGER_DEBUG);
+
+ if(count($images)) {
+ diaspora_send_images($item,$owner,$contact,$images,$public_batch);
+ }
+
+ return $return_code;
+}
+
+function diaspora_is_reshare($body) {
+
+ $body = trim($body);
+
+ // Skip if it isn't a pure repeated messages
+ // Does it start with a share?
+ if(strpos($body, "[share") > 0)
+ return(false);
+
+ // Does it end with a share?
+ if(strlen($body) > (strrpos($body, "[/share]") + 8))
+ return(false);
+
+ $attributes = preg_replace("/\[share(.*?)\]\s?(.*?)\s?\[\/share\]\s?/ism","$1",$body);
+ // Skip if there is no shared message in there
+ if ($body == $attributes)
+ return(false);
+
+ $profile = "";
+ preg_match("/profile='(.*?)'/ism", $attributes, $matches);
+ if ($matches[1] != "")
+ $profile = $matches[1];
+
+ preg_match('/profile="(.*?)"/ism', $attributes, $matches);
+ if ($matches[1] != "")
+ $profile = $matches[1];
+
+ $ret= array();
+
+ $ret["root_handle"] = preg_replace("=https?://(.*)/u/(.*)=ism", "$2@$1", $profile);
+ if (($ret["root_handle"] == $profile) OR ($ret["root_handle"] == ""))
+ return(false);
+
+ $link = "";
+ preg_match("/link='(.*?)'/ism", $attributes, $matches);
+ if ($matches[1] != "")
+ $link = $matches[1];
+
+ preg_match('/link="(.*?)"/ism', $attributes, $matches);
+ if ($matches[1] != "")
+ $link = $matches[1];
+
+ $ret["root_guid"] = preg_replace("=https?://(.*)/posts/(.*)=ism", "$2", $link);
+ if (($ret["root_guid"] == $link) OR ($ret["root_guid"] == ""))
+ return(false);
+
+ return($ret);
+}
+
+function diaspora_send_images($item,$owner,$contact,$images,$public_batch = false) {
+ $a = get_app();
+ if(! count($images))
+ return;
+ $mysite = substr($a->get_baseurl(),strpos($a->get_baseurl(),'://') + 3) . '/photo';
+
+ $tpl = get_markup_template('diaspora_photo.tpl');
+ foreach($images as $image) {
+ if(! stristr($image['path'],$mysite))
+ continue;
+ $resource = str_replace('.jpg','',$image['file']);
+ $resource = substr($resource,0,strpos($resource,'-'));
+
+ $r = q("select * from photo where `resource_id` = '%s' and `uid` = %d limit 1",
+ dbesc($resource),
+ intval($owner['uid'])
+ );
+ if(! $r)
+ continue;
+ $public = (($r[0]['allow_cid'] || $r[0]['allow_gid'] || $r[0]['deny_cid'] || $r[0]['deny_gid']) ? 'false' : 'true' );
+ $msg = replace_macros($tpl,array(
+ '$path' => xmlify($image['path']),
+ '$filename' => xmlify($image['file']),
+ '$msg_guid' => xmlify($image['guid']),
+ '$guid' => xmlify($r[0]['resource_id']),
+ '$handle' => xmlify($image['handle']),
+ '$public' => xmlify($public),
+ '$created_at' => xmlify(datetime_convert('UTC','UTC',$r[0]['created'],'Y-m-d H:i:s \U\T\C'))
+ ));
+
+
+ logger('diaspora_send_photo: base message: ' . $msg, LOGGER_DATA);
+ $slap = 'xml=' . urlencode(urlencode(diaspora_msg_build($msg,$owner,$contact,$owner['channel_prvkey'],$contact['xchan_pubkey'],$public_batch)));
+
+ diaspora_transmit($owner,$contact,$slap,$public_batch);
+ }
+
+}
+
+function diaspora_send_followup($item,$owner,$contact,$public_batch = false) {
+
+ $a = get_app();
+ $myaddr = $owner['channel_address'] . '@' . get_app()->get_hostname();
+ $theiraddr = $contact['xchan_addr'];
+
+ // Diaspora doesn't support threaded comments, but some
+ // versions of Diaspora (i.e. Diaspora-pistos) support
+ // likes on comments
+ if(($item['verb'] === ACTIVITY_LIKE || $item['verb'] === ACTIVITY_DISLIKE) && $item['thr_parent']) {
+ $p = q("select mid, parent_mid from item where mid = '%s' limit 1",
+ dbesc($item['thr_parent'])
+ );
+ }
+ else {
+ // The first item in the `item` table with the parent id is the parent. However, MySQL doesn't always
+ // return the items ordered by `item`.`id`, in which case the wrong item is chosen as the parent.
+ // The only item with `parent` and `id` as the parent id is the parent item.
+ $p = q("select * from item where parent = %d and id = %d limit 1",
+ intval($item['parent']),
+ intval($item['parent'])
+ );
+ }
+ if($p)
+ $parent = $p[0];
+ else
+ return;
+
+
+ if(($item['verb'] === ACTIVITY_LIKE) && ($parent['mid'] === $parent['parent_mid'])) {
+ $tpl = get_markup_template('diaspora_like.tpl');
+ $like = true;
+ $target_type = 'Post';
+ $positive = 'true';
+
+ if(($item_['item_restrict'] & ITEM_DELETED))
+ logger('diaspora_send_followup: received deleted "like". Those should go to diaspora_send_retraction');
+ }
+ else {
+ $tpl = get_markup_template('diaspora_comment.tpl');
+ $like = false;
+ }
+
+ if($item['diaspora_meta'] && ! $like) {
+ $diaspora_meta = json_decode($item['diaspora_meta'],true);
+ if($diaspora_meta) {
+ if(array_key_exists('iv',$diaspora_meta)) {
+ $key = get_config('system','prvkey');
+ $meta = json_decode(crypto_unencapsulate($diaspora_meta,$key),true);
+ }
+ else
+ $meta = $diaspora_meta;
+ }
+ $signed_text = $meta['signed_text'];
+ $authorsig = $meta['signature'];
+ $signer = $meta['signer'];
+ $text = $meta['body'];
+ }
+ else {
+ $text = bb2diaspora_itembody($item);
+
+ // sign it
+
+ if($like)
+ $signed_text = $item['mid'] . ';' . $target_type . ';' . $parent['mid'] . ';' . $positive . ';' . $myaddr;
+ else
+ $signed_text = $item['mid'] . ';' . $parent['mid'] . ';' . $text . ';' . $myaddr;
+
+ $authorsig = base64_encode(rsa_sign($signed_text,$owner['channel_prvkey'],'sha256'));
+
+ }
+
+ $msg = replace_macros($tpl,array(
+ '$guid' => xmlify($item['mid']),
+ '$parent_guid' => xmlify($parent['mid']),
+ '$target_type' =>xmlify($target_type),
+ '$authorsig' => xmlify($authorsig),
+ '$body' => xmlify($text),
+ '$positive' => xmlify($positive),
+ '$handle' => xmlify($myaddr)
+ ));
+
+ logger('diaspora_followup: base message: ' . $msg, LOGGER_DATA);
+
+ $slap = 'xml=' . urlencode(urlencode(diaspora_msg_build($msg,$owner,$contact,$owner['channel_prvkey'],$contact['xchan_pubkey'],$public_batch)));
+
+
+ return(diaspora_transmit($owner,$contact,$slap,$public_batch));
+}
+
+
+function diaspora_send_relay($item,$owner,$contact,$public_batch = false) {
+
+
+ $a = get_app();
+ $myaddr = $owner['channel_address'] . '@' . get_app()->get_hostname();
+
+ $text = bb2diaspora_itembody($item);
+
+ $body = $text;
+
+ // Diaspora doesn't support threaded comments, but some
+ // versions of Diaspora (i.e. Diaspora-pistos) support
+ // likes on comments
+
+ if($item['verb'] === ACTIVITY_LIKE && $item['thr_parent']) {
+ $p = q("select * from item where mid = '%s' limit 1",
+ dbesc($item['thr_parent'])
+ );
+ }
+ else {
+ // The first item in the `item` table with the parent id is the parent. However, MySQL doesn't always
+ // return the items ordered by `item`.`id`, in which case the wrong item is chosen as the parent.
+ // The only item with `parent` and `id` as the parent id is the parent item.
+ $p = q("select * from item where parent = %d and id = %d limit 1",
+ intval($item['parent']),
+ intval($item['parent'])
+ );
+ }
+
+ if($p)
+ $parent = $p[0];
+ else {
+ logger('diaspora_send_relay: no parent');
+ return;
+ }
+
+ $like = false;
+ $relay_retract = false;
+ $sql_sign_id = 'iid';
+
+ if( $item['item_restrict'] & ITEM_DELETED) {
+ $relay_retract = true;
+
+ $target_type = ( ($item['verb'] === ACTIVITY_LIKE) ? 'Like' : 'Comment');
+
+ $sql_sign_id = 'retract_iid';
+ $tpl = get_markup_template('diaspora_relayable_retraction.tpl');
+ }
+ elseif($item['verb'] === ACTIVITY_LIKE) {
+ $like = true;
+
+ $target_type = ( $parent['mid'] === $parent['parent_mid'] ? 'Post' : 'Comment');
+// $positive = (($item['item_restrict'] & ITEM_DELETED) ? 'false' : 'true');
+ $positive = 'true';
+
+ $tpl = get_markup_template('diaspora_like_relay.tpl');
+ }
+ else { // item is a comment
+ $tpl = get_markup_template('diaspora_comment_relay.tpl');
+ }
+
+ $diaspora_meta = (($item['diaspora_meta']) ? json_decode($item['diaspora_meta'],true) : '');
+ if($diaspora_meta) {
+ if(array_key_exists('iv',$diaspora_meta)) {
+ $key = get_config('system','prvkey');
+ $meta = json_decode(crypto_unencapsulate($diaspora_meta,$key),true);
+ }
+ else
+ $meta = $diaspora_meta;
+ $sender_signed_text = $meta['signed_text'];
+ $authorsig = $meta['signature'];
+ $handle = $meta['signer'];
+ $text = $meta['body'];
+ }
+ else
+ logger('diaspora_send_relay: original author signature not found');
+
+ /* Since the author signature is only checked by the parent, not by the relay recipients,
+ * I think it may not be necessary for us to do so much work to preserve all the original
+ * signatures. The important thing that Diaspora DOES need is the original creator's handle.
+ * Let's just generate that and forget about all the original author signature stuff.
+ *
+ * Note: this might be more of an problem if we want to support likes on comments for older
+ * versions of Diaspora (diaspora-pistos), but since there are a number of problems with
+ * doing that, let's ignore it for now.
+ *
+ *
+ */
+// bug - nomadic identity may/will affect diaspora_handle_from_contact
+ if(! $handle) {
+ if($item['author_xchan'] === $owner['channel_hash'])
+ $handle = $owner['channel_address'] . '@' . substr($a->get_baseurl(), strpos($a->get_baseurl(),'://') + 3);
+ else
+ $handle = diaspora_handle_from_contact($item['author_xchan']);
+ }
+ if(! $handle) {
+ logger('diaspora_send_relay: no handle');
+ return;
+ }
+
+ if(! $sender_signed_text) {
+ if($relay_retract)
+ $sender_signed_text = $item['mid'] . ';' . $target_type;
+ elseif($like)
+ $sender_signed_text = $positive . ';' . $item['mid'] . ';' . $target_type . ';' . $parent['mid'] . ';' . $handle;
+ else
+ $sender_signed_text = $item['mid'] . ';' . $parent['mid'] . ';' . $text . ';' . $handle;
+ }
+
+ // Sign the relayable with the top-level owner's signature
+ //
+ // We'll use the $sender_signed_text that we just created, instead of the $signed_text
+ // stored in the database, because that provides the best chance that Diaspora will
+ // be able to reconstruct the signed text the same way we did. This is particularly a
+ // concern for the comment, whose signed text includes the text of the comment. The
+ // smallest change in the text of the comment, including removing whitespace, will
+ // make the signature verification fail. Since we translate from BB code to Diaspora's
+ // markup at the top of this function, which is AFTER we placed the original $signed_text
+ // in the database, it's hazardous to trust the original $signed_text.
+
+ $parentauthorsig = base64_encode(rsa_sign($sender_signed_text,$owner['channel_prvkey'],'sha256'));
+
+ if(! $text)
+ logger('diaspora_send_relay: no text');
+
+ $msg = replace_macros($tpl,array(
+ '$guid' => xmlify($item['mid']),
+ '$parent_guid' => xmlify($parent['mid']),
+ '$target_type' =>xmlify($target_type),
+ '$authorsig' => xmlify($authorsig),
+ '$parentsig' => xmlify($parentauthorsig),
+ '$body' => xmlify($text),
+ '$positive' => xmlify($positive),
+ '$handle' => xmlify($handle)
+ ));
+
+ logger('diaspora_send_relay: base message: ' . $msg, LOGGER_DATA);
+
+ $slap = 'xml=' . urlencode(urlencode(diaspora_msg_build($msg,$owner,$contact,$owner['channel_prvkey'],$contact['xchan_pubkey'],$public_batch)));
+
+ return(diaspora_transmit($owner,$contact,$slap,$public_batch));
+
+}
+
+
+
+function diaspora_send_retraction($item,$owner,$contact,$public_batch = false) {
+
+ $a = get_app();
+ $myaddr = $owner['channel_address'] . '@' . get_app()->get_hostname();
+
+ // Check whether the retraction is for a top-level post or whether it's a relayable
+ if( $item['mid'] !== $item['parent_mid'] ) {
+
+ $tpl = get_markup_template('diaspora_relay_retraction.tpl');
+ $target_type = (($item['verb'] === ACTIVITY_LIKE) ? 'Like' : 'Comment');
+ }
+ else {
+
+ $tpl = get_markup_template('diaspora_signed_retract.tpl');
+ $target_type = 'StatusMessage';
+ }
+
+ $signed_text = $item['mid'] . ';' . $target_type;
+
+ $msg = replace_macros($tpl, array(
+ '$guid' => xmlify($item['mid']),
+ '$type' => xmlify($target_type),
+ '$handle' => xmlify($myaddr),
+ '$signature' => xmlify(base64_encode(rsa_sign($signed_text,$owner['channel_prvkey'],'sha256')))
+ ));
+
+ $slap = 'xml=' . urlencode(urlencode(diaspora_msg_build($msg,$owner,$contact,$owner['channel_prvkey'],$contact['xchan_pubkey'],$public_batch)));
+
+ return(diaspora_transmit($owner,$contact,$slap,$public_batch));
+}
+
+function diaspora_send_mail($item,$owner,$contact) {
+
+ $a = get_app();
+ $myaddr = $owner['channel_address'] . '@' . get_app()->get_hostname();
+
+ $r = q("select * from conv where id = %d and uid = %d limit 1",
+ intval($item['convid']),
+ intval($item['channel_id'])
+ );
+
+ if(! count($r)) {
+ logger('diaspora_send_mail: conversation not found.');
+ return;
+ }
+ $cnv = $r[0];
+
+ $conv = array(
+ 'guid' => xmlify($cnv['guid']),
+ 'subject' => xmlify($cnv['subject']),
+ 'created_at' => xmlify(datetime_convert('UTC','UTC',$cnv['created'],'Y-m-d H:i:s \U\T\C')),
+ 'diaspora_handle' => xmlify($cnv['creator']),
+ 'participant_handles' => xmlify($cnv['recips'])
+ );
+
+ if(array_key_exists('mail_flags',$item) && ($item['mail_flags'] & MAIL_OBSCURED)) {
+ $key = get_config('system','prvkey');
+// if($item['title'])
+// $item['title'] = crypto_unencapsulate(json_decode_plus($item['title']),$key);
+ if($item['body'])
+ $item['body'] = crypto_unencapsulate(json_decode_plus($item['body']),$key);
+ }
+
+
+ $body = bb2diaspora($item['body']);
+ $created = datetime_convert('UTC','UTC',$item['created'],'Y-m-d H:i:s \U\T\C');
+
+ $signed_text = $item['mid'] . ';' . $cnv['guid'] . ';' . $body . ';'
+ . $created . ';' . $myaddr . ';' . $cnv['guid'];
+
+ $sig = base64_encode(rsa_sign($signed_text,$owner['channel_prvkey'],'sha256'));
+
+ $msg = array(
+ 'guid' => xmlify($item['mid']),
+ 'parent_guid' => xmlify($cnv['guid']),
+ 'parent_author_signature' => (($item['reply']) ? null : xmlify($sig)),
+ 'author_signature' => xmlify($sig),
+ 'text' => xmlify($body),
+ 'created_at' => xmlify($created),
+ 'diaspora_handle' => xmlify($myaddr),
+ 'conversation_guid' => xmlify($cnv['guid'])
+ );
+
+ if($item['reply']) {
+ $tpl = get_markup_template('diaspora_message.tpl');
+ $xmsg = replace_macros($tpl, array('$msg' => $msg));
+ }
+ else {
+ $conv['messages'] = array($msg);
+ $tpl = get_markup_template('diaspora_conversation.tpl');
+ $xmsg = replace_macros($tpl, array('$conv' => $conv));
+ }
+
+ logger('diaspora_conversation: ' . print_r($xmsg,true), LOGGER_DATA);
+
+ $slap = 'xml=' . urlencode(urlencode(diaspora_msg_build($xmsg,$owner,$contact,$owner['channel_prvkey'],$contact['xchan_pubkey'],false)));
+
+ return(diaspora_transmit($owner,$contact,$slap,false));
+
+
+}
+
+function diaspora_transmit($owner,$contact,$slap,$public_batch,$queue_run=false) {
+
+ $enabled = intval(get_config('system','diaspora_enabled'));
+ if(! $enabled) {
+ return 200;
+ }
+
+ if($public_batch)
+ $dest_url = $contact['hubloc_callback'] . '/public';
+ else
+ $dest_url = $contact['hubloc_callback'] . '/users/' . $contact['hubloc_guid'];
+
+ logger('diaspora_transmit: URL: ' . $dest_url, LOGGER_DEBUG);
+
+ if(intval(get_config('system','diaspora_test')))
+ return 200;
+
+ $a = get_app();
+ $logid = random_string(4);
+
+ logger('diaspora_transmit: ' . $logid . ' ' . $dest_url, LOGGER_DEBUG);
+
+ $hash = random_string();
+
+ $interval = ((get_config('system','delivery_interval') !== false)
+ ? intval(get_config('system','delivery_interval')) : 2 );
+
+ q("insert into outq ( outq_hash, outq_account, outq_channel, outq_driver, outq_posturl, outq_async, outq_created, outq_updated, outq_notify, outq_msg ) values ( '%s', %d, %d, '%s', '%s', %d, '%s', '%s', '%s', '%s' )",
+ dbesc($hash),
+ intval($owner['account_id']),
+ intval($owner['channel_id']),
+ dbesc('post'),
+ dbesc($dest_url),
+ intval(1),
+ dbesc(datetime_convert()),
+ dbesc(datetime_convert()),
+ dbesc(''),
+ dbesc($slap)
+ );
+
+ proc_run('php','include/deliver.php',$hash);
+ if($interval)
+ @time_sleep_until(microtime(true) + (float) $interval);
+
+}
diff --git a/include/dir_fns.php b/include/dir_fns.php
index 1bc97cfec..af6f78c01 100644
--- a/include/dir_fns.php
+++ b/include/dir_fns.php
@@ -30,13 +30,53 @@ function find_upstream_directory($dirmode) {
return array('url' => $preferred);
}
+function check_upstream_directory() {
+ /**
+ * Directories may come and go over time. We will need to check that our
+ * directory server is still valid occasionally, and reset to something that
+ * is if our directory has gone offline for any reason
+ */
+ $directory = get_config('system','directory_server');
+ if ($directory) {
+ $r = q("select * from site where site_url = '%s' and (site_flags & %d) > 0 ",
+ dbesc($directory),
+ intval(DIRECTORY_MODE_PRIMARY|DIRECTORY_MODE_SECONDARY|DIRECTORY_MODE_STANDALONE)
+ );
+ }
+ // If we've got something, it's still a directory. If we haven't, we need to reset and let find_upstream_directory() fix it
+ if (! $r) {
+ set_config('system','directory_server','');
+ }
+ return;
+}
+
function dir_sort_links() {
+ // Build urls without order and pubforums so it's easy to tack on the changed value
+ // Probably there's an easier way to do this
+
+ $current_order = (($_REQUEST['order']) ? $_REQUEST['order'] : 'normal');
+ $url = 'directory?';
+ $tmp = $_REQUEST;
+ unset($tmp['order']);
+ $sorturl = $url . http_build_query($tmp);
+ $tmp = $_REQUEST;
+
+ unset($tmp['pubforums']);
+ $forumsurl = $url . http_build_query($tmp);
$o = replace_macros(get_markup_template('dir_sort_links.tpl'), array(
- '$header' => t('Sort Options'),
+ '$header' => t('Directory Options'),
'$normal' => t('Alphabetic'),
'$reverse' => t('Reverse Alphabetic'),
- '$date' => t('Newest to Oldest')
+ '$date' => t('Newest to Oldest'),
+ '$reversedate' => t('Oldest to Newest'),
+ '$pubforums' => t('Public Forums Only'),
+ '$pubforumsonly' => x($_REQUEST,'pubforums') ? $_REQUEST['pubforums'] : '',
+ '$sort' => t('Sort'),
+ '$selected_sort' => $current_order,
+ '$sorturl' => $sorturl,
+ '$forumsurl' => $forumsurl,
+
));
return $o;
}
@@ -64,29 +104,43 @@ function sync_directories($dirmode) {
if($dirmode == DIRECTORY_MODE_STANDALONE || $dirmode == DIRECTORY_MODE_NORMAL)
return;
- $r = q("select * from site where (site_flags & %d) and site_url != '%s'",
- intval(DIRECTORY_MODE_PRIMARY|DIRECTORY_MODE_SECONDARY),
- dbesc(z_root())
- );
+ $realm = get_directory_realm();
+ if($realm == DIRECTORY_REALM) {
+ $r = q("select * from site where (site_flags & %d) > 0 and site_url != '%s' and ( site_realm = '%s' or site_realm = '') ",
+ intval(DIRECTORY_MODE_PRIMARY|DIRECTORY_MODE_SECONDARY),
+ dbesc(z_root()),
+ dbesc($realm)
+ );
+ }
+ else {
+ $r = q("select * from site where (site_flags & %d) > 0 and site_url != '%s' and site_realm like '%s' ",
+ intval(DIRECTORY_MODE_PRIMARY|DIRECTORY_MODE_SECONDARY),
+ dbesc(z_root()),
+ dbesc(protect_sprintf('%' . $realm . '%'))
+ );
+ }
// If there are no directory servers, setup the fallback master
+ // FIXME - what to do if we're in a different realm?
if((! $r) && (z_root() != DIRECTORY_FALLBACK_MASTER)) {
$r = array(
'site_url' => DIRECTORY_FALLBACK_MASTER,
'site_flags' => DIRECTORY_MODE_PRIMARY,
- 'site_update' => '0000-00-00 00:00:00',
- 'site_directory' => DIRECTORY_FALLBACK_MASTER . '/dirsearch'
+ 'site_update' => NULL_DATE,
+ 'site_directory' => DIRECTORY_FALLBACK_MASTER . '/dirsearch',
+ 'site_realm' => DIRECTORY_REALM
);
- $x = q("insert into site ( site_url, site_flags, site_update, site_directory )
- values ( '%s', %d', '%s', '%s' ) ",
+ $x = q("insert into site ( site_url, site_flags, site_update, site_directory, site_realm )
+ values ( '%s', %d', '%s', '%s', '%s' ) ",
dbesc($r[0]['site_url']),
intval($r[0]['site_flags']),
dbesc($r[0]['site_update']),
- dbesc($r[0]['site_directory'])
+ dbesc($r[0]['site_directory']),
+ dbesc($r[0]['site_realm'])
);
- $r = q("select * from site where (site_flags & %d) and site_url != '%s'",
+ $r = q("select * from site where (site_flags & %d) > 0 and site_url != '%s'",
intval(DIRECTORY_MODE_PRIMARY|DIRECTORY_MODE_SECONDARY),
dbesc(z_root())
);
@@ -103,7 +157,7 @@ function sync_directories($dirmode) {
// for brand new directory servers, only load the last couple of days. Everything before that will be repeats.
- $syncdate = (($rr['site_sync'] === '0000-00-00 00:00:00') ? datetime_convert('UTC','UTC','now - 2 days') : $rr['site_sync']);
+ $syncdate = (($rr['site_sync'] === NULL_DATE) ? datetime_convert('UTC','UTC','now - 2 days') : $rr['site_sync']);
$x = z_fetch_url($rr['site_directory'] . '?f=&sync=' . urlencode($syncdate));
if(! $x['success'])
@@ -112,7 +166,7 @@ function sync_directories($dirmode) {
if((! $j['transactions']) || (! is_array($j['transactions'])))
continue;
- q("update site set site_sync = '%s' where site_url = '%s' limit 1",
+ q("update site set site_sync = '%s' where site_url = '%s'",
dbesc(datetime_convert()),
dbesc($rr['site_url'])
);
@@ -178,13 +232,14 @@ function update_directory_entry($ud) {
function local_dir_update($uid,$force) {
- logger('local_dir_update', LOGGER_DEBUG);
+ logger('local_dir_update: uid: ' . $uid, LOGGER_DEBUG);
$p = q("select channel.channel_hash, channel_address, channel_timezone, profile.* from profile left join channel on channel_id = uid where uid = %d and is_default = 1",
intval($uid)
);
$profile = array();
+ $profile['encoding'] = 'zot';
if($p) {
$hash = $p[0]['channel_hash'];
@@ -232,7 +287,7 @@ function local_dir_update($uid,$force) {
if($new_flags != $r[0]['xchan_flags']) {
- $r = q("update xchan set xchan_flags = %d where xchan_hash = '%s' limit 1",
+ $r = q("update xchan set xchan_flags = %d where xchan_hash = '%s'",
intval($new_flags),
dbesc($p[0]['channel_hash'])
);
@@ -246,10 +301,10 @@ function local_dir_update($uid,$force) {
}
else {
// they may have made it private
- $r = q("delete from xprof where xprof_hash = '%s' limit 1",
+ $r = q("delete from xprof where xprof_hash = '%s'",
dbesc($hash)
);
- $r = q("delete from xtag where xtag_hash = '%s' limit 1",
+ $r = q("delete from xtag where xtag_hash = '%s'",
dbesc($hash)
);
}
diff --git a/include/directory.php b/include/directory.php
index 60070f7ec..a7324a99a 100644
--- a/include/directory.php
+++ b/include/directory.php
@@ -42,7 +42,7 @@ function directory_run($argv, $argc){
local_dir_update($argv[1],$force);
- q("update channel set channel_dirdate = '%s' where channel_id = %d limit 1",
+ q("update channel set channel_dirdate = '%s' where channel_id = %d",
dbesc(datetime_convert()),
intval($channel['channel_id'])
);
@@ -85,7 +85,7 @@ function directory_run($argv, $argc){
);
}
else {
- q("update channel set channel_dirdate = '%s' where channel_id = %d limit 1",
+ q("update channel set channel_dirdate = '%s' where channel_id = %d",
dbesc(datetime_convert()),
intval($channel['channel_id'])
);
diff --git a/include/enotify.php b/include/enotify.php
index 8baf5c09f..3fef3ba0a 100644
--- a/include/enotify.php
+++ b/include/enotify.php
@@ -18,7 +18,7 @@ function notification($params) {
}
if($params['to_xchan']) {
$y = q("select channel.*, account.* from channel left join account on channel_account_id = account_id
- where channel_hash = '%s' and not (channel_pageflags & %d) limit 1",
+ where channel_hash = '%s' and not (channel_pageflags & %d)>0 limit 1",
dbesc($params['to_xchan']),
intval(PAGE_REMOVED)
);
@@ -65,7 +65,7 @@ function notification($params) {
localize_item($i);
$title = $i['title'];
$body = $i['body'];
- $private = $i['item_private'];
+ $private = (($i['item_private']) || ($i['item_flags'] & ITEM_OBSCURED));
}
else {
$title = $params['item']['title'];
@@ -135,7 +135,7 @@ function notification($params) {
$item_post_type = item_post_type($p[0]);
- $private = $p[0]['item_private'];
+// $private = $p[0]['item_private'];
$parent_id = $p[0]['id'];
//$possess_desc = str_replace('<!item_type!>',$possess_desc);
@@ -357,9 +357,21 @@ function notification($params) {
// create notification entry in DB
+ $seen = 0;
+
+ // Mark some notifications as seen right away
+ // Note! The notification have to be created, because they are used to send emails
+ // So easiest solution to hide them from Notices is to mark them as seen right away.
+ // Another option would be to not add them to the DB, and change how emails are handled (probably would be better that way)
+ $always_show_in_notices = get_pconfig($recip['channel_id'],'system','always_show_in_notices');
+ if(!$always_show_in_notices) {
+ if(($params['type'] == NOTIFY_WALL) || ($params['type'] == NOTIFY_MAIL) || ($params['type'] == NOTIFY_INTRO)) {
+ $seen = 1;
+ }
+ }
- $r = q("insert into notify (hash,name,url,photo,date,aid,uid,link,parent,type,verb,otype)
- values('%s','%s','%s','%s','%s',%d,%d,'%s','%s',%d,'%s','%s')",
+ $r = q("insert into notify (hash,name,url,photo,date,aid,uid,link,parent,seen,type,verb,otype)
+ values('%s','%s','%s','%s','%s',%d,%d,'%s','%s',%d,%d,'%s','%s')",
dbesc($datarray['hash']),
dbesc($datarray['name']),
dbesc($datarray['url']),
@@ -369,6 +381,7 @@ function notification($params) {
intval($datarray['uid']),
dbesc($datarray['link']),
dbesc($datarray['parent']),
+ intval($seen),
intval($datarray['type']),
dbesc($datarray['verb']),
dbesc($datarray['otype'])
@@ -394,7 +407,7 @@ function notification($params) {
if(($a->language === 'en' || (! $a->language)) && strpos($msg,', '))
$msg = substr($msg,strpos($msg,', ')+1);
- $r = q("update notify set msg = '%s' where id = %d and uid = %d limit 1",
+ $r = q("update notify set msg = '%s' where id = %d and uid = %d",
dbesc($msg),
intval($notify_id),
intval($datarray['uid'])
@@ -411,7 +424,7 @@ function notification($params) {
$textversion = strip_tags(html_entity_decode(bbcode(stripslashes(str_replace(array("\\r", "\\n"), array( "", "\n"), $body))),ENT_QUOTES,'UTF-8'));
- $htmlversion = html_entity_decode(bbcode(stripslashes(str_replace(array("\\r","\\n"), array("","<br />\n"),$body))), ENT_QUOTES,'UTF-8');
+ $htmlversion = bbcode(stripslashes(str_replace(array("\\r","\\n"), array("","<br />\n"),$body)));
// use $_SESSION['zid_override'] to force zid() to use
@@ -461,6 +474,8 @@ function notification($params) {
// Might be interesting to use GPG,PGP,S/MIME encryption instead
// but we'll save that for a clever plugin developer to implement
+ $private_activity = false;
+
if(! $datarray['email_secure']) {
switch($params['type']) {
case NOTIFY_WALL:
@@ -469,14 +484,22 @@ function notification($params) {
case NOTIFY_COMMENT:
if(! $private)
break;
+ $private_activity = true;
case NOTIFY_MAIL:
$datarray['textversion'] = $datarray['htmlversion'] = $datarray['title'] = '';
+ $datarray['subject'] = preg_replace('/' . preg_quote(t('[Red:Notify]')) . '/','$0*',$datarray['subject']);
break;
default:
break;
}
}
+ if($private_activity
+ && intval(get_pconfig($datarray['uid'],'system','ignore_private_notifications'))) {
+ pop_lang();
+ return;
+ }
+
// load the template for private message notifications
$tpl = get_markup_template('email_notify_html.tpl');
$email_html_body = replace_macros($tpl,array(
diff --git a/include/event.php b/include/event.php
index 0c29d26f6..1ed541d99 100644
--- a/include/event.php
+++ b/include/event.php
@@ -45,6 +45,56 @@ function format_event_html($ev) {
return $o;
}
+
+
+function ical_wrapper($ev) {
+
+ if(! ((is_array($ev)) && count($ev)))
+ return '';
+
+ $o .= "BEGIN:VCALENDAR";
+ $o .= "\nVERSION:2.0";
+ $o .= "\nMETHOD:PUBLISH";
+ $o .= "\nPRODID:-//" . get_config('system','sitename') . "//" . RED_PLATFORM . "//" . strtoupper(get_app()->language). "\n";
+ if(array_key_exists('start',$ev))
+ $o .= format_event_ical($ev);
+ else {
+ foreach($ev as $e) {
+ $o .= format_event_ical($e);
+ }
+ }
+ $o .= "\nEND:VCALENDAR\n";
+
+ return $o;
+}
+
+function format_event_ical($ev) {
+
+ $o = '';
+
+ $o .= "\nBEGIN:VEVENT";
+ if($ev['start'])
+ $o .= "\nDTSTART:" . datetime_convert('UTC','UTC', $ev['start'],'Ymd\\THis' . (($ev['adjust']) ? '\\Z' : ''));
+ if($ev['finish'] && ! $ev['nofinish'])
+ $o .= "\nDTEND:" . datetime_convert('UTC','UTC', $ev['finish'],'Ymd\\THis' . (($ev['adjust']) ? '\\Z' : ''));
+ if($ev['summary'])
+ $o .= "\nSUMMARY:" . format_ical_text($ev['summary']);
+ if($ev['location'])
+ $o .= "\nLOCATION:" . format_ical_text($ev['location']);
+ if($ev['description'])
+ $o .= "\nDESCRIPTION:" . format_ical_text($ev['description']);
+ $o .= "\nEND:VEVENT\n";
+ return $o;
+}
+
+function format_ical_text($s) {
+
+ require_once('include/bbcode.php');
+ require_once('include/html2plain.php');
+ return(wordwrap(html2plain(bbcode($s)),72,"\n ",true));
+}
+
+
function format_event_bbcode($ev) {
$o = '';
@@ -183,7 +233,7 @@ function event_store_event($arr) {
`allow_gid` = '%s',
`deny_cid` = '%s',
`deny_gid` = '%s'
- WHERE `id` = %d AND `uid` = %d LIMIT 1",
+ WHERE `id` = %d AND `uid` = %d",
dbesc($arr['edited']),
dbesc($arr['start']),
@@ -284,7 +334,7 @@ function event_addtocal($item_id, $uid) {
$event = event_store_event($ev);
if($event) {
- $r = q("update item set resource_id = '%s', resource_type = 'event' where id = %d and uid = %d limit 1",
+ $r = q("update item set resource_id = '%s', resource_type = 'event' where id = %d and uid = %d",
dbesc($event['event_hash']),
intval($item['id']),
intval($channel['channel_id'])
@@ -359,7 +409,7 @@ function event_store_item($arr,$event) {
$private = (($arr['allow_cid'] || $arr['allow_gid'] || $arr['deny_cid'] || $arr['deny_gid']) ? 1 : 0);
- q("UPDATE item SET title = '%s', body = '%s', object = '%s', allow_cid = '%s', allow_gid = '%s', deny_cid = '%s', deny_gid = '%s', edited = '%s', item_flags = %d, item_private = %d WHERE id = %d AND uid = %d LIMIT 1",
+ q("UPDATE item SET title = '%s', body = '%s', object = '%s', allow_cid = '%s', allow_gid = '%s', deny_cid = '%s', deny_gid = '%s', edited = '%s', item_flags = %d, item_private = %d WHERE id = %d AND uid = %d",
dbesc($arr['summary']),
dbesc($prefix . format_event_bbcode($arr)),
dbesc($object),
@@ -374,14 +424,33 @@ function event_store_item($arr,$event) {
intval($arr['uid'])
);
+
+ $s = q("delete from term where oid = %d and otype = %d",
+ intval($r[0]['id']),
+ intval(TERM_OBJ_POST)
+ );
+
+ if(($arr['term']) && (is_array($arr['term']))) {
+ foreach($arr['term'] as $t) {
+ q("insert into term (uid,oid,otype,type,term,url)
+ values(%d,%d,%d,%d,'%s','%s') ",
+ intval($arr['uid']),
+ intval($r[0]['id']),
+ intval(TERM_OBJ_POST),
+ intval($t['type']),
+ dbesc($t['term']),
+ dbesc($t['url'])
+ );
+ }
+ }
+
$item_id = $r[0]['id'];
call_hooks('event_updated', $event['id']);
return $item_id;
}
else {
- $z = q("select * from channel where channel_hash = '%s' and channel_id = %d limit 1",
- dbesc($event['event_xchan']),
+ $z = q("select * from channel where channel_id = %d limit 1",
intval($arr['uid'])
);
@@ -393,7 +462,7 @@ function event_store_item($arr,$event) {
$item_arr['id'] = $item['id'];
}
else {
- $wall = (($z) ? true : false);
+ $wall = (($z[0]['channel_hash'] == $event['event_xchan']) ? true : false);
$item_flags = ITEM_THREAD_TOP;
if($wall) {
@@ -424,6 +493,10 @@ function event_store_item($arr,$event) {
$item_arr['item_private'] = $private;
$item_arr['verb'] = ACTIVITY_POST;
+
+ if(array_key_exists('term',$arr))
+ $item_arr['term'] = $arr['term'];
+
$item_arr['resource_type'] = 'event';
$item_arr['resource_id'] = $event['event_hash'];
@@ -431,7 +504,14 @@ function event_store_item($arr,$event) {
$item_arr['body'] = $prefix . format_event_bbcode($arr);
- $item_arr['plink'] = z_root() . '/channel/' . $z[0]['channel_address'] . '/?f=&mid=' . $item_arr['mid'];
+ // if it's local send the permalink to the channel page.
+ // otherwise we'll fallback to /display/$message_id
+
+ if($wall)
+ $item_arr['plink'] = z_root() . '/channel/' . $z[0]['channel_address'] . '/?f=&mid=' . $item_arr['mid'];
+ else
+ $item_arr['plink'] = z_root() . '/display/' . $item_arr['mid'];
+
$x = q("select * from xchan where xchan_hash = '%s' limit 1",
dbesc($arr['event_xchan'])
diff --git a/include/expire.php b/include/expire.php
index 442914a39..a229bd4ac 100644
--- a/include/expire.php
+++ b/include/expire.php
@@ -7,9 +7,10 @@ function expire_run($argv, $argc){
cli_startup();
- $r = q("select id from item where (item_restrict & %d) and not (item_restrict & %d) and changed < UTC_TIMESTAMP() - INTERVAL 10 DAY",
+ $r = q("select id from item where (item_restrict & %d)>0 and not (item_restrict & %d)>0 and changed < %s - INTERVAL %s",
intval(ITEM_DELETED),
- intval(ITEM_PENDING_REMOVE)
+ intval(ITEM_PENDING_REMOVE),
+ db_utcnow(), db_quoteinterval('10 DAY')
);
if($r) {
foreach($r as $rr) {
@@ -19,8 +20,9 @@ function expire_run($argv, $argc){
// physically remove anything that has been deleted for more than two months
- $r = q("delete from item where ( item_restrict & %d ) and changed < UTC_TIMESTAMP() - INTERVAL 36 DAY",
- intval(ITEM_PENDING_REMOVE)
+ $r = q("delete from item where ( item_restrict & %d )>0 and changed < %s - INTERVAL %s",
+ intval(ITEM_PENDING_REMOVE),
+ db_utcnow(), db_quoteinterval('36 DAY')
);
// make this optional as it could have a performance impact on large sites
diff --git a/include/externals.php b/include/externals.php
index 1d9fd2902..b0f853dc6 100644
--- a/include/externals.php
+++ b/include/externals.php
@@ -14,6 +14,8 @@ function externals_run($argv, $argc){
$total = 0;
$attempts = 0;
+ logger('externals: startup', LOGGER_DEBUG);
+
// pull in some public posts
@@ -25,7 +27,8 @@ function externals_run($argv, $argc){
$url = $arr['url'];
}
else {
- $r = q("select site_url, site_pull from site where site_url != '%s' and site_flags != %d order by rand() limit 1",
+ $randfunc = db_getfunc('RAND');
+ $r = q("select site_url, site_pull from site where site_url != '%s' and site_flags != %d order by $randfunc limit 1",
dbesc(z_root()),
intval(DIRECTORY_MODE_STANDALONE)
);
@@ -33,11 +36,35 @@ function externals_run($argv, $argc){
$url = $r[0]['site_url'];
}
+ // Note: blacklisted sites must be stored in the config as an array.
+ // No simple way to turn this into a personal config because we have no identity here.
+ // For that we probably need a variant of superblock.
+
+ $blacklisted = false;
+ $bl1 = get_config('system','blacklisted_sites');
+ if(is_array($bl1) && $bl1) {
+ foreach($bl1 as $bl) {
+ if($bl && strpos($url,$bl) !== false) {
+ $blacklisted = true;
+ break;
+ }
+ }
+ }
+
$attempts ++;
+ // make sure we can eventually break out if somebody blacklists all known sites
+
+ if($blacklisted) {
+ if($attempts > 20)
+ break;
+ $attempts --;
+ continue;
+ }
+
if($url) {
- if($r[0]['site_pull'] !== '0000-00-00 00:00:00')
- $mindate = urlencode($r[0]['site_pull']);
+ if($r[0]['site_pull'] !== NULL_DATE)
+ $mindate = urlencode(datetime_convert('','',$r[0]['site_pull'] . ' - 1 day'));
else {
$days = get_config('externals','since_days');
if($days === false)
@@ -52,7 +79,7 @@ function externals_run($argv, $argc){
$x = z_fetch_url($feedurl);
if(($x) && ($x['success'])) {
- q("update site set site_pull = '%s' where site_url = '%s' limit 1",
+ q("update site set site_pull = '%s' where site_url = '%s'",
dbesc(datetime_convert()),
dbesc($url)
);
@@ -61,6 +88,8 @@ function externals_run($argv, $argc){
if($j['success'] && $j['messages']) {
$sys = get_sys_channel();
foreach($j['messages'] as $message) {
+ // on these posts, clear any route info.
+ $message['route'] = '';
$results = process_delivery(array('hash' => 'undefined'), get_item_elements($message),
array(array('hash' => $sys['xchan_hash'])), false, true);
$total ++;
@@ -73,12 +102,12 @@ $z = null;
$flag_bits = ITEM_WALL|ITEM_ORIGIN|ITEM_UPLINK;
// preserve the source
- $r = q("update item set source_xchan = owner_xchan where id = %d limit 1",
+ $r = q("update item set source_xchan = owner_xchan where id = %d",
intval($z[0]['id'])
);
$r = q("update item set item_flags = ( item_flags | %d ), owner_xchan = '%s'
- where id = %d limit 1",
+ where id = %d",
intval($flag_bits),
dbesc($sys['xchan_hash']),
intval($z[0]['id'])
diff --git a/include/features.php b/include/features.php
index a2698cc72..7009b1d6b 100644
--- a/include/features.php
+++ b/include/features.php
@@ -24,11 +24,16 @@ function get_features() {
// This is per post, and different from fixed expiration 'expire' which isn't working yet
array('content_expire', t('Content Expiration'), t('Remove posts/comments and/or private messages at a future time')),
array('multi_profiles', t('Multiple Profiles'), t('Ability to create multiple profiles')),
+ array('advanced_profiles', t('Advanced Profiles'), t('Additional profile sections and selections')),
+ array('profile_export', t('Profile Import/Export'), t('Save and load profile details across sites/channels')),
array('webpages', t('Web Pages'), t('Provide managed web pages on your channel')),
array('private_notes', t('Private Notes'), t('Enables a tool to store notes and reminders')),
// prettyphoto has licensing issues and will no longer be provided in core -
// in any event this setting should probably be a theme option or plugin
// array('prettyphoto', t('Enhanced Photo Albums'), t('Enable photo album with enhanced features')),
+ array('nav_channel_select', t('Navigation Channel Select'), t('Change channels directly from within the navigation dropdown menu')),
+
+
//FIXME - needs a description, but how the hell do we explain this to normals?
array('sendzid', t('Extended Identity Sharing'), t('Share your identity with all websites on the internet. When disabled, identity is only shared with sites in the matrix.')),
array('expert', t('Expert Mode'), t('Enable Expert Mode to provide advanced configuration options')),
@@ -40,9 +45,10 @@ function get_features() {
t('Post Composition Features'),
// array('richtext', t('Richtext Editor'), t('Enable richtext editor')),
array('markdown', t('Use Markdown'), t('Allow use of "Markdown" to format posts')),
- array('preview', t('Post Preview'), t('Allow previewing posts and comments before publishing them')),
+// array('preview', t('Post Preview'), t('Allow previewing posts and comments before publishing them')),
array('channel_sources', t('Channel Sources'), t('Automatically import channel content from other channels or feeds')),
array('content_encrypt', t('Even More Encryption'), t('Allow optional encryption of content end-to-end with a shared secret key')),
+ array('adult_photo_flagging', t('Flag Adult Photos'), t('Provide photo edit option to hide adult photos from default album view')),
),
// Network Tools
@@ -61,7 +67,7 @@ function get_features() {
'tools' => array(
t('Post/Comment Tools'),
// array('multi_delete', t('Multiple Deletion'), t('Select and delete multiple posts/comments at once')),
- array('edit_posts', t('Edit Sent Posts'), t('Edit and correct posts and comments after sending')),
+// array('edit_posts', t('Edit Sent Posts'), t('Edit and correct posts and comments after sending')),
array('commtag', t('Tagging'), t('Ability to tag existing posts')),
array('categories', t('Post Categories'), t('Add categories to your posts')),
array('filing', t('Saved Folders'), t('Ability to file posts under folders')),
diff --git a/include/fixd.php b/include/fixd.php
new file mode 100644
index 000000000..bce5eb348
--- /dev/null
+++ b/include/fixd.php
@@ -0,0 +1,33 @@
+<?php
+
+ require_once('include/cli_startup.php');
+
+ cli_startup();
+
+ $rand = db_getfunc('RAND');
+ $r = q("select xchan_addr, hubloc_url from xchan left join hubloc on hubloc_hash = xchan_hash where xchan_network like '%%diaspora%%' order by $rand");
+
+ if(! $r)
+ killme();
+
+ require_once('include/network.php');
+ $total = 0;
+ foreach ($r as $rr) {
+ if($rr['hubloc_url']) {
+ continue;
+ }
+ $total ++;
+ }
+
+ print $total . "\n";
+
+ foreach ($r as $rr) {
+ if($rr['hubloc_url']) {
+ continue;
+ }
+
+ $webbie = $rr['xchan_addr'];
+ print $webbie . ' ';
+
+ discover_by_webbie($webbie);
+ }
diff --git a/include/follow.php b/include/follow.php
index d98a58198..1abd0e3b9 100644
--- a/include/follow.php
+++ b/include/follow.php
@@ -13,11 +13,16 @@ require_once('include/zot.php');
function new_contact($uid,$url,$channel,$interactive = false, $confirm = false) {
+
+
$result = array('success' => false,'message' => '');
$a = get_app();
$is_red = false;
+ $is_http = ((strpos($url,'://') !== false) ? true : false);
+ if($is_http && substr($url,-1,1) === '/')
+ $url = substr($url,0,-1);
if(! allowed_url($url)) {
$result['message'] = t('Channel is blocked on this site.');
@@ -29,23 +34,46 @@ function new_contact($uid,$url,$channel,$interactive = false, $confirm = false)
return $result;
}
+
+ // check service class limits
+
+ $r = q("select count(*) as total from abook where abook_channel = %d and not (abook_flags & %d)>0 ",
+ intval($uid),
+ intval(ABOOK_FLAG_SELF)
+ );
+ if($r)
+ $total_channels = $r[0]['total'];
+
+ if(! service_class_allows($uid,'total_channels',$total_channels)) {
+ $result['message'] = upgrade_message();
+ return $result;
+ }
+
+
$arr = array('url' => $url, 'channel' => array());
call_hooks('follow', $arr);
if($arr['channel']['success'])
$ret = $arr['channel'];
- else
+ elseif(! $is_http)
$ret = zot_finger($url,$channel);
- if($ret['success']) {
+ if($ret && $ret['success']) {
$is_red = true;
$j = json_decode($ret['body'],true);
}
+ $my_perms = get_channel_default_perms($uid);
+
if($is_red && $j) {
- $my_perms = PERMS_W_STREAM|PERMS_W_MAIL;
+ $role = get_pconfig($uid,'system','permissions_role');
+ if($role) {
+ $x = get_role_perms($role);
+ if($x['perms_follow'])
+ $my_perms = $x['perms_follow'];
+ }
logger('follow: ' . $url . ' ' . print_r($j,true), LOGGER_DEBUG);
@@ -58,23 +86,9 @@ function new_contact($uid,$url,$channel,$interactive = false, $confirm = false)
// Premium channel, set confirm before callback to avoid recursion
- if(array_key_exists('connect_url',$j) && (! $confirm))
+ if(array_key_exists('connect_url',$j) && ($interactive) && (! $confirm))
goaway(zid($j['connect_url']));
- // check service class limits
-
- $r = q("select count(*) as total from abook where abook_channel = %d and not (abook_flags & %d) ",
- intval($uid),
- intval(ABOOK_FLAG_SELF)
- );
- if($r)
- $total_channels = $r[0]['total'];
-
- if(! service_class_allows($uid,'total_channels',$total_channels)) {
- $result['message'] = upgrade_message();
- return $result;
- }
-
// do we have an xchan and hubloc?
// If not, create them.
@@ -116,16 +130,46 @@ function new_contact($uid,$url,$channel,$interactive = false, $confirm = false)
}
}
else {
+ if(! ($is_http)) {
+ if(! intval(get_config('system','diaspora_enabled'))) {
+ $result['message'] = t('Protocol disabled.');
+ return $result;
+ }
+ }
- // attempt network auto-discovery
-
- $my_perms = 0;
$their_perms = 0;
$xchan_hash = '';
-
-
+ $r = q("select * from xchan where xchan_hash = '%s' or xchan_url = '%s' limit 1",
+ dbesc($url),
+ dbesc($url)
+ );
+ if(! $r) {
+ // attempt network auto-discovery
+ if(strpos($url,'@') && (! $is_http)) {
+ $r = discover_by_webbie($url);
+ }
+ elseif($is_http) {
+ $r = discover_by_url($url);
+ }
+ if($r) {
+ $r = q("select * from xchan where xchan_hash = '%s' or xchan_url = '%s' limit 1",
+ dbesc($url),
+ dbesc($url)
+ );
+ }
+ }
+ if($r) {
+ $xchan_hash = $r[0]['xchan_hash'];
+ $their_perms = 0;
+ $role = get_pconfig($uid,'system','permissions_role');
+ if($role) {
+ $x = get_role_perms($role);
+ if($x['perms_follow'])
+ $my_perms = $x['perms_follow'];
+ }
+ }
}
if(! $xchan_hash) {
@@ -139,7 +183,6 @@ function new_contact($uid,$url,$channel,$interactive = false, $confirm = false)
$hash = get_observer_hash();
$ch = $a->get_channel();
$default_group = $ch['channel_default_group'];
-
}
else {
$r = q("select * from channel where channel_id = %d limit 1",
@@ -153,7 +196,26 @@ function new_contact($uid,$url,$channel,$interactive = false, $confirm = false)
$hash = $r[0]['channel_hash'];
$default_group = $r[0]['channel_default_group'];
}
-
+
+ if($is_http) {
+ if(! intval(get_config('system','feed_contacts'))) {
+ $result['message'] = t('Protocol disabled.');
+ return $result;
+ }
+
+ $r = q("select count(*) as total from abook where abook_account = %d and ( abook_flags & %d )>0",
+ intval($aid),
+ intval(ABOOK_FLAG_FEED)
+ );
+ if($r)
+ $total_feeds = $r[0]['total'];
+
+ if(! service_class_allows($uid,'total_feeds',$total_feeds)) {
+ $result['message'] = upgrade_message();
+ return $result;
+ }
+ }
+
if($hash == $xchan_hash) {
$result['message'] = t('Cannot connect to yourself.');
return $result;
@@ -164,18 +226,19 @@ function new_contact($uid,$url,$channel,$interactive = false, $confirm = false)
intval($uid)
);
if($r) {
- $x = q("update abook set abook_their_perms = %d where abook_id = %d limit 1",
+ $x = q("update abook set abook_their_perms = %d where abook_id = %d",
intval($their_perms),
intval($r[0]['abook_id'])
);
}
else {
- $r = q("insert into abook ( abook_account, abook_channel, abook_xchan, abook_their_perms, abook_my_perms, abook_created, abook_updated )
- values( %d, %d, '%s', %d, %d, '%s', '%s' ) ",
+ $r = q("insert into abook ( abook_account, abook_channel, abook_xchan, abook_flags, abook_their_perms, abook_my_perms, abook_created, abook_updated )
+ values( %d, %d, '%s', %d, %d, %d, '%s', '%s' ) ",
intval($aid),
intval($uid),
dbesc($xchan_hash),
- intval($their_perms),
+ intval(($is_http) ? ABOOK_FLAG_FEED : 0),
+ intval(($is_http) ? $their_perms|PERMS_R_STREAM|PERMS_A_REPUBLISH : $their_perms),
intval($my_perms),
dbesc(datetime_convert()),
dbesc(datetime_convert())
diff --git a/include/group.php b/include/group.php
index acb65df28..28cf5d80d 100644
--- a/include/group.php
+++ b/include/group.php
@@ -18,10 +18,11 @@ function group_add($uid,$name,$public = 0) {
intval($r)
);
if(count($z) && $z[0]['deleted']) {
- $r = q("UPDATE `groups` SET `deleted` = 0 WHERE `uid` = %d AND `name` = '%s' LIMIT 1",
+ /*$r = q("UPDATE `groups` SET `deleted` = 0 WHERE `uid` = %d AND `name` = '%s' LIMIT 1",
intval($uid),
dbesc($name)
- );
+ );*/
+ q('UPDATE groups SET deleted = 0 WHERE id = %d', intval($z[0]['id']));
notice( t('A deleted group with this name was revived. Existing item permissions <strong>may</strong> apply to this group and any future members. If this is not what you intended, please create another group with a different name.') . EOL);
}
return true;
@@ -107,7 +108,7 @@ function group_rmv($uid,$name) {
);
// remove group
- $r = q("UPDATE `groups` SET `deleted` = 1 WHERE `uid` = %d AND `name` = '%s' LIMIT 1",
+ $r = q("UPDATE `groups` SET `deleted` = 1 WHERE `uid` = %d AND `name` = '%s'",
intval($uid),
dbesc($name)
);
@@ -152,7 +153,7 @@ function group_rmv_member($uid,$name,$member) {
return false;
if(! ( $uid && $gid && $member))
return false;
- $r = q("DELETE FROM `group_member` WHERE `uid` = %d AND `gid` = %d AND xchan = '%s' LIMIT 1 ",
+ $r = q("DELETE FROM `group_member` WHERE `uid` = %d AND `gid` = %d AND xchan = '%s' ",
intval($uid),
intval($gid),
dbesc($member)
@@ -199,7 +200,7 @@ function group_get_members($gid) {
if(intval($gid)) {
$r = q("SELECT * FROM `group_member`
LEFT JOIN abook ON abook_xchan = `group_member`.`xchan` left join xchan on xchan_hash = abook_xchan
- WHERE `gid` = %d AND abook_channel = %d and `group_member`.`uid` = %d and not ( xchan_flags & %d ) and not ( abook_flags & %d ) and not ( abook_flags & %d ) ORDER BY xchan_name ASC ",
+ WHERE `gid` = %d AND abook_channel = %d and `group_member`.`uid` = %d and not ( xchan_flags & %d )>0 and not ( abook_flags & %d )>0 and not ( abook_flags & %d )>0 ORDER BY xchan_name ASC ",
intval($gid),
intval(local_user()),
intval(local_user()),
@@ -280,6 +281,7 @@ function group_side($every="connections",$each="group",$edit = false, $group_id
$groups[] = array(
'id' => $rr['id'],
+ 'enc_cid' => base64url_encode($cid),
'cid' => $cid,
'text' => $rr['name'],
'selected' => $selected,
diff --git a/include/html2bbcode.php b/include/html2bbcode.php
index df430e6c7..9ffc85a82 100644
--- a/include/html2bbcode.php
+++ b/include/html2bbcode.php
@@ -16,7 +16,7 @@ function node2bbcode(&$doc, $oldnode, $attributes, $startbb, $endbb)
function node2bbcodesub(&$doc, $oldnode, $attributes, $startbb, $endbb)
{
- $savestart = str_replace('$', '%', $startbb);
+ $savestart = str_replace('$', '\x01', $startbb);
$replace = false;
$xpath = new DomXPath($doc);
@@ -37,7 +37,7 @@ function node2bbcodesub(&$doc, $oldnode, $attributes, $startbb, $endbb)
foreach ($attributes as $attribute => $value) {
- $startbb = str_replace('%'.++$i, '$1', $startbb);
+ $startbb = str_replace('\x01'.++$i, '$1', $startbb);
if (strpos('*'.$startbb, '$1') > 0) {
@@ -283,8 +283,9 @@ function html2bbcode($message)
array('[b]', '[/b]', '[i]', '[/i]'), $message);
// Handling Yahoo style of mails
- $message = str_replace('[hr][b]From:[/b]', '[quote][b]From:[/b]', $message);
+ // $message = str_replace('[hr][b]From:[/b]', '[quote][b]From:[/b]', $message);
+ $message = htmlspecialchars($message,ENT_COMPAT,'UTF-8',false);
return(trim($message));
}
diff --git a/include/hubloc.php b/include/hubloc.php
index 566875ce9..b5a3d47c5 100644
--- a/include/hubloc.php
+++ b/include/hubloc.php
@@ -33,7 +33,7 @@ function prune_hub_reinstalls() {
// allow some slop period, say 3 days - just in case this is a glitch or transient occurrence
// Then remove any hublocs pointing to the oldest entry.
- if($d1 < $d2) {
+ if(($d1 < $d2) && ($x[0]['hubloc_sitekey'])) {
logger('prune_hub_reinstalls: removing dead hublocs at ' . $rr['site_url']);
$y = q("delete from hubloc where hubloc_sitekey = '%s'",
dbesc($x[0]['hubloc_sitekey'])
@@ -42,4 +42,220 @@ function prune_hub_reinstalls() {
}
}
}
+}
+
+function remove_obsolete_hublocs() {
+
+ logger('remove_obsolete_hublocs',LOGGER_DEBUG);
+
+ // Get rid of any hublocs which are ours but aren't valid anymore -
+ // e.g. they point to a different and perhaps transient URL that we aren't using.
+
+ // I need to stress that this shouldn't happen. fix_system_urls() fixes hublocs
+ // when it discovers the URL has changed. So it's unclear how we could end up
+ // with URLs pointing to the old site name. But it happens. This may be an artifact
+ // of an old bug or maybe a regression in some newer code. In any event, they
+ // mess up communications and we have to take action if we find any.
+
+ // First make sure we have any hublocs (at all) with this URL and sitekey.
+ // We don't want to perform this operation while somebody is in the process
+ // of renaming their hub or installing certs.
+
+ $r = q("select hubloc_id from hubloc where hubloc_url = '%s' and hubloc_sitekey = '%s'",
+ dbesc(z_root()),
+ dbesc(get_config('system','pubkey'))
+ );
+ if((! $r) || (! count($r)))
+ return;
+
+ $channels = array();
+
+ // Good. We have at least one *valid* hubloc.
+
+ // Do we have any invalid ones?
+
+ $r = q("select hubloc_id from hubloc where hubloc_sitekey = '%s' and hubloc_url != '%s'",
+ dbesc(get_config('system','pubkey')),
+ dbesc(z_root())
+ );
+ $p = q("select hubloc_id from hubloc where hubloc_sitekey != '%s' and hubloc_url = '%s'",
+ dbesc(get_config('system','pubkey')),
+ dbesc(z_root())
+ );
+ if(is_array($r) && is_array($p))
+ $r = array_merge($r,$p);
+
+ if(! $r)
+ return;
+
+ // We've got invalid hublocs. Get rid of them.
+
+ logger('remove_obsolete_hublocs: removing ' . count($r) . ' hublocs.');
+
+ $interval = ((get_config('system','delivery_interval') !== false)
+ ? intval(get_config('system','delivery_interval')) : 2 );
+
+ foreach($r as $rr) {
+ q("update hubloc set hubloc_flags = (hubloc_flags | %d) where hubloc_id = %d",
+ intval(HUBLOC_FLAGS_DELETED),
+ intval($rr['hubloc_id'])
+ );
+
+ $x = q("select channel_id from channel where channel_hash = '%s' limit 1",
+ dbesc($rr['hubloc_hash'])
+ );
+ if($x) {
+ proc_run('php','include/notifier.php','location',$x[0]['channel_id']);
+ if($interval)
+ @time_sleep_until(microtime(true) + (float) $interval);
+ }
+ }
+}
+
+
+// This actually changes other structures to match the given (presumably current) hubloc primary selection
+
+function hubloc_change_primary($hubloc) {
+
+ if(! is_array($hubloc)) {
+ logger('no hubloc');
+ return false;
+ }
+ if(! ($hubloc['hubloc_flags'] & HUBLOC_FLAGS_PRIMARY)) {
+ logger('not primary: ' . $hubloc['hubloc_url']);
+ return false;
+ }
+
+ logger('setting primary: ' . $hubloc['hubloc_url']);
+
+ // See if there's a local channel
+
+ $r = q("select channel_id, channel_primary from channel where channel_hash = '%s' limit 1",
+ dbesc($hubloc['hubloc_hash'])
+ );
+ if(($r) && (! $r[0]['channel_primary'])) {
+ q("update channel set channel_primary = 1 where channel_id = %d",
+ intval($r[0]['channel_id'])
+ );
+ }
+
+ // do we even have an xchan for this hubloc and if so is it already set as primary?
+
+ $r = q("select * from xchan where xchan_hash = '%s' limit 1",
+ dbesc($hubloc['hubloc_hash'])
+ );
+ if(! $r) {
+ logger('xchan not found');
+ return false;
+ }
+ if($r[0]['xchan_addr'] === $hubloc['hubloc_addr']) {
+ logger('xchan already changed');
+ return false;
+ }
+
+ $url = $hubloc['hubloc_url'];
+ $lwebbie = substr($hubloc['hubloc_addr'],0,strpos($hubloc['hubloc_addr'],'@'));
+
+ $r = q("update xchan set xchan_addr = '%s', xchan_url = '%s', xchan_follow = '%s', xchan_connurl = '%s' where xchan_hash = '%s'",
+ dbesc($hubloc['hubloc_addr']),
+ dbesc($url . '/channel/' . $lwebbie),
+ dbesc($url . '/follow?f=&url=%s'),
+ dbesc($url . '/poco/' . $lwebbie),
+ dbesc($hubloc['hubloc_hash'])
+ );
+ if(! $r)
+ logger('xchan_update failed.');
+
+ logger('primary hubloc changed.' . print_r($hubloc,true),LOGGER_DEBUG);
+ return true;
+
+}
+
+
+function xchan_store($arr) {
+
+ if(! $arr['hash'])
+ $arr['hash'] = $arr['guid'];
+ if(! $arr['hash'])
+ return false;
+
+ $r = q("select * from xchan where xchan_hash = '%s' limit 1",
+ dbesc($arr['hash'])
+ );
+ if($r)
+ return true;
+
+ if(! $arr['network'])
+ $arr['network'] = 'unknown';
+ if(! $arr['name'])
+ $arr['name'] = 'unknown';
+ if(! $arr['url'])
+ $arr['url'] = z_root();
+ if(! $arr['photo'])
+ $arr['photo'] = get_default_profile_photo();
+
+ $r = q("insert into xchan ( xchan_hash, xchan_guid, xchan_guid_sig, xchan_pubkey, xchan_addr, xchan_url, xchan_connurl, xchan_follow, xchan_connpage, xchan_name, xchan_network, xchan_instance_url, xchan_flags, xchan_name_date ) values ('%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s','%s','%s','%s',%d,'%s') ",
+ dbesc($arr['hash']),
+ dbesc($arr['guid']),
+ dbesc($arr['guid_sig']),
+ dbesc($arr['pubkey']),
+ dbesc($arr['address']),
+ dbesc($arr['url']),
+ dbesc($arr['connurl']),
+ dbesc($arr['follow']),
+ dbesc($arr['connpage']),
+ dbesc($arr['name']),
+ dbesc($arr['network']),
+ dbesc($arr['instance_url']),
+ intval($arr['flags']),
+ dbesc(datetime_convert())
+ );
+ if(! $r)
+ return $r;
+
+ $photos = import_profile_photo($arr['photo'],$arr['hash']);
+ $r = q("update xchan set xchan_photo_date = '%s', xchan_photo_l = '%s', xchan_photo_m = '%s', xchan_photo_s = '%s', xchan_photo_mimetype = '%s' where xchan_hash = '%s'",
+ dbesc(datetime_convert()),
+ dbesc($photos[0]),
+ dbesc($photos[1]),
+ dbesc($photos[2]),
+ dbesc($photos[3]),
+ dbesc($arr['hash'])
+ );
+ return $r;
+
+}
+
+
+function xchan_fetch($arr) {
+
+ $key = '';
+ if($arr['hash']) {
+ $key = 'xchan_hash';
+ $v = $arr['hash'];
+ }
+ elseif($arr['guid']) {
+ $key = 'xchan_guid';
+ $v = $arr['guid'];
+ }
+ elseif($arr['address']) {
+ $key = 'xchan_addr';
+ $v = $arr['address'];
+ }
+
+ if(! $key)
+ return false;
+
+ $r = q("select * from xchan where $key = '$v'");
+ if(! $r)
+ return false;
+
+ $ret = array();
+ foreach($r as $k => $v) {
+ if($k === 'xchan_addr')
+ $ret['address'] = $v;
+ else
+ $ret[str_replace('xchan_','',$k)] = $v;
+ }
+ return $ret;
} \ No newline at end of file
diff --git a/include/identity.php b/include/identity.php
index e210b37ab..17238ea99 100644
--- a/include/identity.php
+++ b/include/identity.php
@@ -22,15 +22,18 @@ require_once('include/crypto.php');
function identity_check_service_class($account_id) {
$ret = array('success' => false, $message => '');
- $r = q("select count(channel_id) as total from channel where channel_account_id = %d and not ( channel_pageflags & %d ) ",
+ $r = q("select count(channel_id) as total from channel where channel_account_id = %d and not ( channel_pageflags & %d )>0 ",
intval($account_id),
intval(PAGE_REMOVED)
);
if(! ($r && count($r))) {
+ $ret['total_identities'] = 0;
$ret['message'] = t('Unable to obtain identity information from database');
return $ret;
}
+ $ret['total_identities'] = intval($r[0]['total']);
+
if(! service_class_allows($account_id,'total_identities',$r[0]['total'])) {
$result['message'] .= upgrade_message();
return $result;
@@ -101,7 +104,7 @@ function create_sys_channel() {
}
function get_sys_channel() {
- $r = q("select * from channel left join xchan on channel_hash = xchan_hash where (channel_pageflags & %d) limit 1",
+ $r = q("select * from channel left join xchan on channel_hash = xchan_hash where (channel_pageflags & %d)>0 limit 1",
intval(PAGE_SYSTEM)
);
if($r)
@@ -129,7 +132,7 @@ function is_sys_channel($channel_id) {
*/
function channel_total() {
- $r = q("select channel_id from channel where not ( channel_pageflags & %d )",
+ $r = q("select channel_id from channel where not ( channel_pageflags & %d )>0",
intval(PAGE_REMOVED)
);
@@ -166,10 +169,13 @@ function create_identity($arr) {
$ret['message'] = t('No account identifier');
return $ret;
}
- $ret=identity_check_service_class($arr['account_id']);
+ $ret = identity_check_service_class($arr['account_id']);
if (!$ret['success']) {
return $ret;
}
+ // save this for auto_friending
+ $total_identities = $ret['total_identities'];
+
$nick = mb_strtolower(trim($arr['nickname']));
if(! $nick) {
@@ -215,22 +221,42 @@ function create_identity($arr) {
if(array_key_exists('primary', $arr))
$primary = intval($arr['primary']);
+
$perms_sql = '';
- $defperms = site_default_perms();
+ $role_permissions = null;
$global_perms = get_perms();
- foreach($defperms as $p => $v) {
- $perms_keys .= ', ' . $global_perms[$p][0];
- $perms_vals .= ', ' . intval($v);
+
+ if(array_key_exists('permissions_role',$arr) && $arr['permissions_role']) {
+ $role_permissions = get_role_perms($arr['permissions_role']);
+
+ if($role_permissions) {
+ foreach($role_permissions as $p => $v) {
+ if(strpos($p,'channel_') !== false) {
+ $perms_keys .= ', ' . $p;
+ $perms_vals .= ', ' . intval($v);
+ }
+ if($p === 'directory_publish')
+ $publish = intval($v);
+ }
+ }
+ }
+ else {
+ $defperms = site_default_perms();
+ foreach($defperms as $p => $v) {
+ $perms_keys .= ', ' . $global_perms[$p][0];
+ $perms_vals .= ', ' . intval($v);
+ }
}
+
$expire = get_config('system', 'default_expire_days');
$expire = (($expire===false)? '0': $expire);
-
+
$r = q("insert into channel ( channel_account_id, channel_primary,
channel_name, channel_address, channel_guid, channel_guid_sig,
- channel_hash, channel_prvkey, channel_pubkey, channel_pageflags, channel_expire_days $perms_keys )
- values ( %d, %d, '%s', '%s', '%s', '%s', '%s', '%s', '%s', %d, %d $perms_vals ) ",
+ channel_hash, channel_prvkey, channel_pubkey, channel_pageflags, channel_expire_days, channel_timezone $perms_keys )
+ values ( %d, %d, '%s', '%s', '%s', '%s', '%s', '%s', '%s', %d, %d, '%s' $perms_vals ) ",
intval($arr['account_id']),
intval($primary),
@@ -242,12 +268,11 @@ function create_identity($arr) {
dbesc($key['prvkey']),
dbesc($key['pubkey']),
intval($pageflags),
- intval($expire)
+ intval($expire),
+ dbesc($a->timezone)
);
-
-
$r = q("select * from channel where channel_account_id = %d
and channel_guid = '%s' limit 1",
intval($arr['account_id']),
@@ -267,8 +292,8 @@ function create_identity($arr) {
// Create a verified hub location pointing to this site.
$r = q("insert into hubloc ( hubloc_guid, hubloc_guid_sig, hubloc_hash, hubloc_addr, hubloc_flags,
- hubloc_url, hubloc_url_sig, hubloc_host, hubloc_callback, hubloc_sitekey )
- values ( '%s', '%s', '%s', '%s', %d, '%s', '%s', '%s', '%s', '%s' )",
+ hubloc_url, hubloc_url_sig, hubloc_host, hubloc_callback, hubloc_sitekey, hubloc_network )
+ values ( '%s', '%s', '%s', '%s', %d, '%s', '%s', '%s', '%s', '%s', '%s' )",
dbesc($guid),
dbesc($sig),
dbesc($hash),
@@ -278,7 +303,8 @@ function create_identity($arr) {
dbesc(base64url_encode(rsa_sign(z_root(),$ret['channel']['channel_prvkey']))),
dbesc(get_app()->get_hostname()),
dbesc(z_root() . '/post'),
- dbesc(get_config('system','pubkey'))
+ dbesc(get_config('system','pubkey')),
+ dbesc('zot')
);
if(! $r)
logger('create_identity: Unable to store hub location');
@@ -322,24 +348,76 @@ function create_identity($arr) {
dbesc($a->get_baseurl() . "/photo/profile/m/{$newuid}")
);
- $r = q("insert into abook ( abook_account, abook_channel, abook_xchan, abook_closeness, abook_created, abook_updated, abook_flags )
- values ( %d, %d, '%s', %d, '%s', '%s', %d ) ",
+ if($role_permissions) {
+ $myperms = ((array_key_exists('perms_auto',$role_permissions) && $role_permissions['perms_auto']) ? intval($role_permissions['perms_accept']) : 0);
+ }
+ else
+ $myperms = PERMS_R_STREAM|PERMS_R_PROFILE|PERMS_R_PHOTOS|PERMS_R_ABOOK
+ |PERMS_W_STREAM|PERMS_W_WALL|PERMS_W_COMMENT|PERMS_W_MAIL|PERMS_W_CHAT
+ |PERMS_R_STORAGE|PERMS_R_PAGES|PERMS_W_LIKE;
+
+ $r = q("insert into abook ( abook_account, abook_channel, abook_xchan, abook_closeness, abook_created, abook_updated, abook_flags, abook_my_perms )
+ values ( %d, %d, '%s', %d, '%s', '%s', %d, %d ) ",
intval($ret['channel']['channel_account_id']),
intval($newuid),
dbesc($hash),
intval(0),
dbesc(datetime_convert()),
dbesc(datetime_convert()),
- intval(ABOOK_FLAG_SELF)
+ intval(ABOOK_FLAG_SELF),
+ intval($myperms)
);
if(intval($ret['channel']['channel_account_id'])) {
- // Create a group with no members. This allows somebody to use it
+ // Save our permissions role so we can perhaps call it up and modify it later.
+
+ if($role_permissions) {
+ set_pconfig($newuid,'system','permissions_role',$arr['permissions_role']);
+ if(array_key_exists('online',$role_permissions))
+ set_pconfig($newuid,'system','hide_presence',1-intval($role_permissions['online']));
+ if(array_key_exists('perms_auto',$role_permissions))
+ set_pconfig($newuid,'system','autoperms',(($role_permissions['perms_auto']) ? $role_permissions['perms_accept'] : 0));
+ }
+
+ // Create a group with yourself as a member. This allows somebody to use it
// right away as a default group for new contacts.
require_once('include/group.php');
group_add($newuid, t('Friends'));
+ group_add_member($newuid,t('Friends'),$ret['channel']['channel_hash']);
+
+ // if our role_permissions indicate that we're using a default collection ACL, add it.
+
+ if(is_array($role_permissions) && $role_permissions['default_collection']) {
+ $r = q("select hash from groups where uid = %d and name = '%s' limit 1",
+ intval($newuid),
+ dbesc( t('Friends') )
+ );
+ if($r) {
+ q("update channel set channel_default_group = '%s', channel_allow_gid = '%s' where channel_id = %d",
+ dbesc($r[0]['hash']),
+ dbesc('<' . $r[0]['hash'] . '>'),
+ intval($newuid)
+ );
+ }
+ }
+
+ // auto-follow any of the hub's pre-configured channel choices.
+ // Only do this if it's the first channel for this account;
+ // otherwise it could get annoying. Don't make this list too big
+ // or it will impact registration time.
+
+ $accts = get_config('system','auto_follow');
+ if(($accts) && (! $total_identities)) {
+ require_once('include/follow.php');
+ if(! is_array($accts))
+ $accts = array($accts);
+ foreach($accts as $acct) {
+ if(trim($acct))
+ new_contact($newuid,trim($acct),$ret['channel'],false);
+ }
+ }
call_hooks('register_account', $newuid);
@@ -373,7 +451,7 @@ function set_default_login_identity($account_id,$channel_id,$force = true) {
);
if($r) {
if((intval($r[0]['account_default_channel']) == 0) || ($force)) {
- $r = q("update account set account_default_channel = %d where account_id = %d limit 1",
+ $r = q("update account set account_default_channel = %d where account_id = %d",
intval($channel_id),
intval($account_id)
);
@@ -382,21 +460,22 @@ function set_default_login_identity($account_id,$channel_id,$force = true) {
}
/**
- * @function identity_basic_export($channel_id)
+ * @function identity_basic_export($channel_id,$items = false)
* Create an array representing the important channel information
* which would be necessary to create a nomadic identity clone. This includes
* most channel resources and connection information with the exception of content.
*
* @param int $channel_id
* Channel_id to export
- *
+ * @param boolean $items
+ * Include channel posts (wall items), default false
*
* @returns array
* See function for details
*
*/
-function identity_basic_export($channel_id) {
+function identity_basic_export($channel_id, $items = false) {
/*
* Red basic channel export
@@ -469,7 +548,62 @@ function identity_basic_export($channel_id) {
}
+ // All other term types will be included in items, if requested.
+
+ $r = q("select * from term where type in (%d,%d) and uid = %d",
+ intval(TERM_SAVEDSEARCH),
+ intval(TERM_THING),
+ intval($channel_id)
+ );
+ if($r)
+ $ret['term'] = $r;
+
+ $r = q("select * from obj where obj_channel = %d",
+ intval($channel_id)
+ );
+
+ if($r)
+ $ret['obj'] = $r;
+
+
+ if(! $items)
+ return $ret;
+
+
+ $r = q("select likes.*, item.mid from likes left join item on likes.iid = item.id where likes.channel_id = %d",
+ intval($channel_id)
+ );
+
+ if($r)
+ $ret['likes'] = $r;
+
+
+ $r = q("select item_id.*, item.mid from item_id left join item on item_id.iid = item.id where item_id.uid = %d",
+ intval($channel_id)
+ );
+
+ if($r)
+ $ret['item_id'] = $r;
+
+ $key = get_config('system','prvkey');
+
+ // warning: this may run into memory limits on smaller systems
+
+ $r = q("select * from item where (item_flags & %d)>0 and not (item_restrict & %d)>0 and uid = %d",
+ intval(ITEM_WALL),
+ intval(ITEM_DELETED),
+ intval($channel_id)
+ );
+ if($r) {
+ $ret['item'] = array();
+ xchan_query($r);
+ $r = fetch_post_tags($r,true);
+ foreach($r as $rr)
+ $ret['item'][] = encode_item($rr,true);
+
+ }
return $ret;
+
}
@@ -544,7 +678,7 @@ function profile_load(&$a, $nickname, $profile = '') {
if(! $p) {
$p = q("SELECT profile.uid AS profile_uid, profile.*, channel.* FROM profile
LEFT JOIN channel ON profile.uid = channel.channel_id
- WHERE channel.channel_address = '%s' and not ( channel_pageflags & %d )
+ WHERE channel.channel_address = '%s' and not ( channel_pageflags & %d )>0
AND profile.is_default = 1 LIMIT 1",
dbesc($nickname),
intval(PAGE_REMOVED)
@@ -559,6 +693,37 @@ function profile_load(&$a, $nickname, $profile = '') {
return;
}
+ $q = q("select * from profext where hash = '%s' and channel_id = %d",
+ dbesc($p[0]['profile_guid']),
+ intval($p[0]['profile_uid'])
+ );
+ if($q) {
+
+ $extra_fields = array();
+
+ require_once('include/identity.php');
+ $profile_fields_basic = get_profile_fields_basic();
+ $profile_fields_advanced = get_profile_fields_advanced();
+
+ $advanced = ((feature_enabled(local_user(),'advanced_profiles')) ? true : false);
+ if($advanced)
+ $fields = $profile_fields_advanced;
+ else
+ $fields = $profile_fields_basic;
+
+ foreach($q as $qq) {
+ foreach($fields as $k => $f) {
+ if($k == $qq['k']) {
+ $p[0][$k] = $qq['v'];
+ $extra_fields[] = $k;
+ break;
+ }
+ }
+ }
+ }
+
+ $p[0]['extra_fields'] = $extra_fields;
+
$z = q("select xchan_photo_date from xchan where xchan_hash = '%s' limit 1",
dbesc($p[0]['channel_hash'])
);
@@ -691,7 +856,8 @@ function profile_sidebar($profile, $block = 0, $show_connect = true) {
);
- if(feature_enabled(local_user(),'multi_profiles')) {
+ $multi_profiles = feature_enabled(local_user(), 'multi_profiles');
+ if($multi_profiles) {
$profile['edit'] = array($a->get_baseurl(). '/profiles', t('Profiles'),"", t('Manage/edit profiles'));
$profile['menu']['cr_new'] = t('Create New Profile');
}
@@ -704,6 +870,8 @@ function profile_sidebar($profile, $block = 0, $show_connect = true) {
if($r) {
foreach($r as $rr) {
+ if(!($multi_profiles || $rr['is_default']))
+ continue;
$profile['menu']['entries'][] = array(
'photo' => $rr['thumb'],
'id' => $rr['id'],
@@ -725,6 +893,8 @@ function profile_sidebar($profile, $block = 0, $show_connect = true) {
|| (x($profile,'country_name') == 1))
$location = t('Location:');
+ $profile['homepage'] = linkify($profile['homepage']);
+
$gender = ((x($profile,'gender') == 1) ? t('Gender:') : False);
$marital = ((x($profile,'marital') == 1) ? t('Status:') : False);
$homepage = ((x($profile,'homepage') == 1) ? t('Homepage:') : False);
@@ -739,9 +909,21 @@ logger('online: ' . $profile['online']);
$location = $pdesc = $gender = $marital = $homepage = $online = False;
}
- $firstname = ((strpos($profile['name'],' '))
- ? trim(substr($profile['name'],0,strpos($profile['name'],' '))) : $profile['name']);
- $lastname = (($firstname === $profile['name']) ? '' : trim(substr($profile['name'],strlen($firstname))));
+ $firstname = ((strpos($profile['channel_name'],' '))
+ ? trim(substr($profile['channel_name'],0,strpos($profile['channel_name'],' '))) : $profile['channel_name']);
+ $lastname = (($firstname === $profile['channel_name']) ? '' : trim(substr($profile['channel_name'],strlen($firstname))));
+
+ $diaspora = array(
+ 'podloc' => z_root(),
+ 'searchable' => (($block) ? 'false' : 'true'),
+ 'nickname' => $profile['channel_address'],
+ 'fullname' => $profile['channel_name'],
+ 'firstname' => $firstname,
+ 'lastname' => $lastname,
+ 'photo300' => z_root() . '/photo/profile/300/' . $profile['uid'] . '.jpg',
+ 'photo100' => z_root() . '/photo/profile/100/' . $profile['uid'] . '.jpg',
+ 'photo50' => z_root() . '/photo/profile/50/' . $profile['uid'] . '.jpg',
+ );
$contact_block = contact_block();
@@ -771,6 +953,7 @@ logger('online: ' . $profile['online']);
'$marital' => $marital,
'$homepage' => $homepage,
'$chanmenu' => $channel_menu,
+ '$diaspora' => $diaspora,
'$contact_block' => $contact_block,
));
@@ -933,7 +1116,7 @@ logger('online: ' . $profile['online']);
function advanced_profile(&$a) {
-
+ require_once('include/text.php');
if(! perm_is_allowed($a->profile['profile_uid'],get_observer_hash(),'view_profile'))
return '';
@@ -952,7 +1135,7 @@ function advanced_profile(&$a) {
if($a->profile['gender']) $profile['gender'] = array( t('Gender:'), $a->profile['gender'] );
$ob_hash = get_observer_hash();
- if($ob_hash && perm_is_allowed($a->profile['profile_uid'],$ob_hash,'post_wall')) {
+ if($ob_hash && perm_is_allowed($a->profile['profile_uid'],$ob_hash,'post_like')) {
$profile['canlike'] = true;
$profile['likethis'] = t('Like this channel');
$profile['profile_guid'] = $a->profile['profile_guid'];
@@ -998,7 +1181,7 @@ function advanced_profile(&$a) {
if($a->profile['with']) $profile['marital']['with'] = bbcode($a->profile['with']);
- if(strlen($a->profile['howlong']) && $a->profile['howlong'] !== '0000-00-00 00:00:00') {
+ if(strlen($a->profile['howlong']) && $a->profile['howlong'] !== NULL_DATE) {
$profile['howlong'] = relative_date($a->profile['howlong'], t('for %1$d %2$s'));
}
@@ -1025,7 +1208,18 @@ function advanced_profile(&$a) {
if($txt = prepare_text($a->profile['contact'])) $profile['contact'] = array( t('Contact information and Social Networks:'), $txt);
- if($txt = prepare_text($a->profile['channels'])) $profile['channels'] = array( t('My other channels:'), $txt);
+ // Support tags in the other channels field (probably want to restrict it to channels only?)
+ $txt = $a->profile['channels'];
+ $matches = get_tags($txt);
+ $access_tag = '';
+ $str_tags = '';
+ foreach($matches as $m) {
+ $success = handle_tag($a, $txt, $access_tag, $str_tags, $a->profile_uid, $m); // Use uid of the profile maker
+ }
+
+ if($txt = prepare_text($txt)) {
+ $profile['channels'] = array( t('My other channels:'), $txt);
+ }
if($txt = prepare_text($a->profile['music'])) $profile['music'] = array( t('Musical interests:'), $txt);
@@ -1041,6 +1235,16 @@ function advanced_profile(&$a) {
if($txt = prepare_text($a->profile['education'])) $profile['education'] = array( t('School/education:'), $txt );
+ if($a->profile['extra_fields']) {
+ foreach($a->profile['extra_fields'] as $f) {
+ $x = q("select * from profdef where field_name = '%s' limit 1",
+ dbesc($f)
+ );
+ if($x && $txt = prepare_text($a->profile[$f]))
+ $profile[$f] = array( $x[0]['field_desc'] . ':',$txt);
+ }
+ $profile['extra_fields'] = $a->profile['extra_fields'];
+ }
$things = get_things($a->profile['profile_guid'],$a->profile['profile_uid']);
@@ -1190,7 +1394,7 @@ function get_default_profile_photo($size = 175) {
$scheme = get_config('system','default_profile_photo');
if(! $scheme)
$scheme = 'rainbow_man';
- return 'images/default_profile_photos/' . $scheme . '/' . $size . '.jpg';
+ return 'images/default_profile_photos/' . $scheme . '/' . $size . '.png';
}
@@ -1283,7 +1487,7 @@ function get_channel_by_nick($nick) {
function identity_selector() {
if(local_user()) {
- $r = q("select channel.*, xchan.* from channel left join xchan on channel.channel_hash = xchan.xchan_hash where channel.channel_account_id = %d and not ( channel_pageflags & %d ) order by channel_name ",
+ $r = q("select channel.*, xchan.* from channel left join xchan on channel.channel_hash = xchan.xchan_hash where channel.channel_account_id = %d and (channel_pageflags & %d) = 0 order by channel_name ",
intval(get_account_id()),
intval(PAGE_REMOVED)
);
@@ -1312,3 +1516,82 @@ function is_public_profile() {
return true;
return false;
}
+
+function get_profile_fields_basic($filter = 0) {
+
+ $profile_fields_basic = (($filter == 0) ? get_config('system','profile_fields_basic') : null);
+ if(! $profile_fields_basic)
+ $profile_fields_basic = array('name','pdesc','chandesc','gender','dob','dob_tz','address','locality','region','postal_code','country_name','marital','sexual','homepage','hometown','keywords','about','contact');
+
+ $x = array();
+ if($profile_fields_basic)
+ foreach($profile_fields_basic as $f)
+ $x[$f] = 1;
+
+ return $x;
+
+}
+
+
+function get_profile_fields_advanced($filter = 0) {
+ $basic = get_profile_fields_basic($filter);
+ $profile_fields_advanced = (($filter == 0) ? get_config('system','profile_fields_advanced') : null);
+ if(! $profile_fields_advanced)
+ $profile_fields_advanced = array('with','howlong','politic','religion','likes','dislikes','interest','channels','music','book','film','tv','romance','work','education');
+
+ $x = array();
+ if($basic)
+ foreach($basic as $f => $v)
+ $x[$f] = $v;
+ if($profile_fields_advanced)
+ foreach($profile_fields_advanced as $f)
+ $x[$f] = 1;
+
+ return $x;
+}
+
+/**
+ * @function notifications_off($channel_id)
+ * Clear notifyflags for a channel - most likely during bulk import of content or other activity that is likely
+ * to generate huge amounts of undesired notifications.
+ * @param int $channel_id
+ * The channel to disable notifications for
+ * @returns int
+ * Current notification flag value. Send this to notifications_on() to restore the channel settings when finished
+ * with the activity requiring notifications_off();
+ */
+
+
+
+function notifications_off($channel_id) {
+ $r = q("select channel_notifyflags from channel where channel_id = %d limit 1",
+ intval($channel_id)
+ );
+ $x = q("update channel set channel_notifyflags = 0 where channel_id = %d",
+ intval($channel_id)
+ );
+
+ return intval($r[0]['channel_notifyflags']);
+
+}
+
+
+function notifications_on($channel_id,$value) {
+ $x = q("update channel set channel_notifyflags = %d where channel_id = %d",
+ intval($value),
+ intval($channel_id)
+ );
+ return $x;
+}
+
+
+function get_channel_default_perms($uid) {
+
+ $r = q("select abook_my_perms from abook where abook_channel = %d and (abook_flags & %d) > 0 limit 1",
+ intval($uid),
+ intval(ABOOK_FLAG_SELF)
+ );
+ if($r)
+ return $r[0]['abook_my_perms'];
+ return 0;
+}
diff --git a/include/items.php b/include/items.php
index 10daa85f2..c488e1953 100755
--- a/include/items.php
+++ b/include/items.php
@@ -7,23 +7,21 @@ require_once('include/photo/photo_driver.php');
require_once('include/permissions.php');
-function collect_recipients($item,&$private) {
+function collect_recipients($item,&$private_envelope) {
require_once('include/group.php');
- $private = ((intval($item['item_private'])) ? true : false);
+ $private_envelope = ((intval($item['item_private'])) ? true : false);
$recipients = array();
- // if the post is marked private but there are no recipients, only add the author and owner
- // as recipients. The ACL for the post may live on the hub of a different clone. We need to
- // get the post to that hub.
-
if($item['allow_cid'] || $item['allow_gid'] || $item['deny_cid'] || $item['deny_gid']) {
// it is private
$allow_people = expand_acl($item['allow_cid']);
+
$allow_groups = expand_groups(expand_acl($item['allow_gid']));
+ $allow_groups = filter_insecure($item['uid'],$allow_groups);
$recipients = array_unique(array_merge($allow_people,$allow_groups));
@@ -32,7 +30,7 @@ function collect_recipients($item,&$private) {
// as that would allow the denied person to see the post by logging out.
if((! $item['allow_cid']) && (! $item['allow_gid'])) {
- $r = q("select * from abook where abook_channel = %d and not (abook_flags & %d) ",
+ $r = q("select * from abook where abook_channel = %d and not (abook_flags & %d)>0 ",
intval($item['uid']),
intval(ABOOK_FLAG_SELF|ABOOK_FLAG_PENDING|ABOOK_FLAG_ARCHIVED)
);
@@ -48,23 +46,64 @@ function collect_recipients($item,&$private) {
$deny_groups = expand_groups(expand_acl($item['deny_gid']));
$deny = array_unique(array_merge($deny_people,$deny_groups));
- $recipients = array_diff($recipients,$deny);
- $private = true;
+
+ // Don't deny anybody if nobody was allowed (e.g. they were all filtered out)
+ // That would lead to array_diff doing the wrong thing.
+ // This will result in a private post that won't be delivered to anybody.
+
+ if($recipients && $deny)
+ $recipients = array_diff($recipients,$deny);
+ $private_envelope = true;
}
else {
- if(! $private) {
- $r = q("select abook_xchan from abook where abook_channel = %d and not (abook_flags & %d) ",
+
+ // if the post is marked private but there are no recipients and public_policy/scope = self,
+ // only add the author and owner as recipients. The ACL for the post may live on the hub of
+ // a different clone. We need to get the post to that hub.
+
+ // The post may be private by virtue of not being visible to anybody on the internet,
+ // but there are no envelope recipients, so set this to false. Delivery is controlled
+ // by the directives in $item['public_policy'].
+
+ $private_envelope = false;
+ require_once('include/identity.php');
+ $sys = get_sys_channel();
+
+ if(array_key_exists('public_policy',$item) && $item['public_policy'] !== 'self') {
+ $r = q("select abook_xchan, xchan_network from abook left join xchan on abook_xchan = xchan_hash where abook_channel = %d and not (abook_flags & %d)>0 ",
intval($item['uid']),
intval(ABOOK_FLAG_SELF|ABOOK_FLAG_PENDING|ABOOK_FLAG_ARCHIVED)
);
if($r) {
+
+ // filter out restrictive public_policy settings from remote networks
+ // which don't have this concept and will treat them as public.
+
+ $policy = substr($item['public_policy'],0,3);
foreach($r as $rr) {
- $recipients[] = $rr['abook_xchan'];
+ switch($policy) {
+ case 'net':
+ case 'aut':
+ case 'sit':
+ case 'any':
+ case 'con':
+ if($rr['xchan_network'] != 'zot')
+ break;
+ case 'pub':
+ case '':
+ default:
+ $recipients[] = $rr['abook_xchan'];
+ break;
+ }
}
}
+// we probably want to check that discovery channel delivery is allowed before uncommenting this.
+// if($policy === 'pub')
+// $recipients[] = $sys['xchan_hash'];
}
}
+
// This is a somewhat expensive operation but important.
// Don't send this item to anybody who isn't allowed to see it
@@ -88,11 +127,57 @@ function collect_recipients($item,&$private) {
$recipients[] = $item['author_xchan'];
if($item['owner_xchan'] != $item['author_xchan'])
$recipients[] = $item['owner_xchan'];
+
return $recipients;
}
/**
+ * If channel is configured to filter insecure members of privacy groups
+ * (those whose networks leak privacy via email notifications or other criteria)
+ * remove them from any privacy groups (collections) that were included in a post.
+ * They can still be addressed individually.
+ * Networks may need to be added or removed from this list as circumstances change.
+ *
+ * Update: this may need to be the default, which will force people to opt-in to sending stuff
+ * privately to insecure platforms.
+ */
+
+function filter_insecure($channel_id,$arr) {
+ $insecure_nets = " and not xchan_network in ('diaspora', 'friendica-over-diaspora') ";
+
+ $ret = array();
+
+ if((! intval(get_config($channel_id,'system','filter_insecure_collections'))) || (! $arr))
+ return $arr;
+
+ $str = '';
+ foreach($arr as $rr) {
+ if(strlen($str))
+ $str .= ',';
+ $str .= "'" . dbesc($rr) . "'";
+ }
+ $r = q("select xchan_hash from xchan where xchan_hash in ($str) $insecure_nets ");
+ if($r) {
+ foreach($r as $rr) {
+ $ret[] = $rr['xchan_hash'];
+ }
+ }
+ return $ret;
+}
+
+
+function comments_are_now_closed($item) {
+ if($item['comments_closed'] !== NULL_DATE) {
+ $d = datetime_convert();
+ if($d > $item['comments_closed'])
+ return true;
+ }
+ return false;
+}
+
+
+/**
* @function can_comment_on_post($observer_xchan,$item);
*
* This function examines the comment_policy attached to an item and decides if the current observer has
@@ -101,6 +186,7 @@ function collect_recipients($item,&$private) {
* Generally we should look at the item - in particular the author['book_flags'] and see if ABOOK_FLAG_SELF is set.
* If it is, you should be able to use perm_is_allowed( ... 'post_comments'), and if it isn't you need to call
* can_comment_on_post()
+ * We also check the comments_closed date/time on the item if this is set.
*/
function can_comment_on_post($observer_xchan,$item) {
@@ -109,8 +195,14 @@ function can_comment_on_post($observer_xchan,$item) {
if(! $observer_xchan)
return false;
+
+
if($item['comment_policy'] === 'none')
return false;
+
+ if(comments_are_now_closed($item))
+ return false;
+
if($observer_xchan === $item['author_xchan'] || $observer_xchan === $item['owner_xchan'])
return true;
switch($item['comment_policy']) {
@@ -125,7 +217,9 @@ function can_comment_on_post($observer_xchan,$item) {
// false.
return false;
break;
+ case 'any connections':
case 'contacts':
+ case 'authenticated':
case '':
if(array_key_exists('owner',$item)) {
if(($item['owner']['abook_xchan']) && ($item['owner']['abook_their_perms'] & PERMS_W_COMMENT))
@@ -169,7 +263,7 @@ function add_source_route($iid,$hash) {
);
if($r) {
$new_route = (($r[0]['route']) ? $r[0]['route'] . ',' : '') . $hash;
- q("update item set route = '%s' where id = %d limit 1",
+ q("update item set route = '%s' where id = %d",
(dbesc($new_route)),
intval($iid)
);
@@ -289,6 +383,9 @@ function post_activity_item($arr) {
return $ret;
}
+ $arr['public_policy'] = ((x($_REQUEST,'public_policy')) ? escape_tags($_REQUEST['public_policy']) : map_scope($channel['channel_r_stream'],true));
+ if($arr['public_policy'])
+ $arr['item_private'] = 1;
if(! array_key_exists('mimetype',$arr))
$arr['mimetype'] = 'text/bbcode';
@@ -308,9 +405,9 @@ function post_activity_item($arr) {
$key = get_config('system','pubkey');
$arr['item_flags'] = $arr['item_flags'] | ITEM_OBSCURED;
if($arr['title'])
- $arr['title'] = json_encode(aes_encapsulate($arr['title'],$key));
+ $arr['title'] = json_encode(crypto_encapsulate($arr['title'],$key));
if($arr['body'])
- $arr['body'] = json_encode(aes_encapsulate($arr['body'],$key));
+ $arr['body'] = json_encode(crypto_encapsulate($arr['body'],$key));
}
$arr['mid'] = ((x($arr,'mid')) ? $arr['mid'] : item_message_id());
@@ -376,7 +473,7 @@ function post_activity_item($arr) {
function get_public_feed($channel,$params) {
$type = 'xml';
- $begin = '0000-00-00 00:00:00';
+ $begin = NULL_DATE;
$end = '';
$start = 0;
$records = 40;
@@ -387,12 +484,13 @@ function get_public_feed($channel,$params) {
$params = array();
$params['type'] = ((x($params,'type')) ? $params['type'] : 'xml');
- $params['begin'] = ((x($params,'begin')) ? $params['begin'] : '0000-00-00 00:00:00');
+ $params['begin'] = ((x($params,'begin')) ? $params['begin'] : NULL_DATE);
$params['end'] = ((x($params,'end')) ? $params['end'] : datetime_convert('UTC','UTC','now'));
$params['start'] = ((x($params,'start')) ? $params['start'] : 0);
$params['records'] = ((x($params,'records')) ? $params['records'] : 40);
$params['direction'] = ((x($params,'direction')) ? $params['direction'] : 'desc');
$params['pages'] = ((x($params,'pages')) ? intval($params['pages']) : 0);
+ $params['top'] = ((x($params,'top')) ? intval($params['top']) : 0);
switch($params['type']) {
case 'json':
@@ -433,7 +531,8 @@ function get_feed_for($channel, $observer_hash, $params) {
'records' => $params['records'], // FIXME
'direction' => $params['direction'], // FIXME
'pages' => $params['pages'],
- 'order' => 'post'
+ 'order' => 'post',
+ 'top' => $params['top']
), $channel, $observer_hash, CLIENT_MODE_NORMAL, get_app()->module);
@@ -444,13 +543,13 @@ function get_feed_for($channel, $observer_hash, $params) {
$atom .= replace_macros($feed_template, array(
'$version' => xmlify(RED_VERSION),
'$red' => xmlify(RED_PLATFORM),
- '$feed_id' => xmlify($channel['channel_url']),
+ '$feed_id' => xmlify($channel['xchan_url']),
'$feed_title' => xmlify($channel['channel_name']),
'$feed_updated' => xmlify(datetime_convert('UTC', 'UTC', 'now' , ATOM_TIME)) ,
'$hub' => '', // feed_hublinks(),
'$salmon' => '', // feed_salmonlinks($channel['channel_address']),
'$name' => xmlify($channel['channel_name']),
- '$profile_page' => xmlify($channel['channel_url']),
+ '$profile_page' => xmlify($channel['xchan_url']),
'$mimephoto' => xmlify($channel['xchan_photo_mimetype']),
'$photo' => xmlify($channel['xchan_photo_l']),
'$thumb' => xmlify($channel['xchan_photo_m']),
@@ -664,10 +763,18 @@ function title_is_body($title, $body) {
function get_item_elements($x) {
-
$arr = array();
$arr['body'] = (($x['body']) ? htmlspecialchars($x['body'],ENT_COMPAT,'UTF-8',false) : '');
+ $key = get_config('system','pubkey');
+
+ $maxlen = get_max_import_size();
+
+ if($maxlen && mb_strlen($arr['body']) > $maxlen) {
+ $arr['body'] = mb_substr($arr['body'],0,$maxlen,'UTF-8');
+ logger('get_item_elements: message length exceeds max_import_size: truncated');
+ }
+
$arr['created'] = datetime_convert('UTC','UTC',$x['created']);
$arr['edited'] = datetime_convert('UTC','UTC',$x['edited']);
@@ -678,11 +785,14 @@ function get_item_elements($x) {
$arr['expires'] = ((x($x,'expires') && $x['expires'])
? datetime_convert('UTC','UTC',$x['expires'])
- : '0000-00-00 00:00:00');
+ : NULL_DATE);
$arr['commented'] = ((x($x,'commented') && $x['commented'])
? datetime_convert('UTC','UTC',$x['commented'])
: $arr['created']);
+ $arr['comments_closed'] = ((x($x,'comments_closed') && $x['comments_closed'])
+ ? datetime_convert('UTC','UTC',$x['comments_closed'])
+ : NULL_DATE);
$arr['title'] = (($x['title']) ? htmlspecialchars($x['title'], ENT_COMPAT,'UTF-8',false) : '');
@@ -703,11 +813,16 @@ function get_item_elements($x) {
$arr['mimetype'] = (($x['mimetype']) ? htmlspecialchars($x['mimetype'], ENT_COMPAT,'UTF-8',false) : '');
$arr['obj_type'] = (($x['object_type']) ? htmlspecialchars($x['object_type'], ENT_COMPAT,'UTF-8',false) : '');
$arr['tgt_type'] = (($x['target_type']) ? htmlspecialchars($x['target_type'], ENT_COMPAT,'UTF-8',false) : '');
+
+ $arr['public_policy'] = (($x['public_scope']) ? htmlspecialchars($x['public_scope'], ENT_COMPAT,'UTF-8',false) : '');
+ if($arr['public_policy'] === 'public')
+ $arr['public_policy'] = '';
+
$arr['comment_policy'] = (($x['comment_scope']) ? htmlspecialchars($x['comment_scope'], ENT_COMPAT,'UTF-8',false) : 'contacts');
$arr['sig'] = (($x['signature']) ? htmlspecialchars($x['signature'], ENT_COMPAT,'UTF-8',false) : '');
-
+ $arr['diaspora_meta'] = (($x['diaspora_signature']) ? json_encode(crypto_encapsulate($x['diaspora_signature'],$key)) : '');
$arr['object'] = activity_sanitise($x['object']);
$arr['target'] = activity_sanitise($x['target']);
@@ -759,15 +874,35 @@ function get_item_elements($x) {
// We have to do that here because we need to cleanse the input and prevent bad stuff from getting in,
// and we need plaintext to do that.
+
+
if(intval($arr['item_private'])) {
$arr['item_flags'] = $arr['item_flags'] | ITEM_OBSCURED;
- $key = get_config('system','pubkey');
if($arr['title'])
$arr['title'] = json_encode(crypto_encapsulate($arr['title'],$key));
if($arr['body'])
$arr['body'] = json_encode(crypto_encapsulate($arr['body'],$key));
}
+
+ if(array_key_exists('revision',$x)) {
+ // extended export encoding
+
+ $arr['revision'] = $x['revision'];
+ $arr['allow_cid'] = $x['allow_cid'];
+ $arr['allow_gid'] = $x['allow_gid'];
+ $arr['deny_cid'] = $x['deny_cid'];
+ $arr['deny_gid'] = $x['deny_gid'];
+ $arr['layout_mid'] = $x['layout_mid'];
+ $arr['postopts'] = $x['postopts'];
+ $arr['resource_id'] = $x['resource_id'];
+ $arr['resource_type'] = $x['resource_type'];
+ $arr['item_restrict'] = $x['item_restrict'];
+ $arr['item_flags'] = $x['item_flags'];
+ $arr['attach'] = $x['attach'];
+
+ }
+
return $arr;
}
@@ -783,14 +918,35 @@ function import_author_xchan($x) {
if((! array_key_exists('network', $x)) || ($x['network'] === 'zot')) {
$y = import_author_zot($x);
}
+ if(! $y)
+ $y = import_author_diaspora($x);
if($x['network'] === 'rss') {
$y = import_author_rss($x);
}
+ if($x['network'] === 'unknown') {
+ $y = import_author_unknown($x);
+ }
+
return(($y) ? $y : false);
}
+
+function import_author_diaspora($x) {
+ if(! $x['address'])
+ return false;
+ if(discover_by_webbie($x['address'])) {
+ $r = q("select xchan_hash from xchan where xchan_addr = '%s' limit 1",
+ dbesc($x['address'])
+ );
+ if($r)
+ return $r[0]['xchan_hash'];
+ }
+ return false;
+}
+
+
function import_author_rss($x) {
if(! $x['url'])
@@ -805,19 +961,20 @@ function import_author_rss($x) {
}
$name = trim($x['name']);
- $r = q("insert into xchan ( xchan_hash, xchan_url, xchan_name, xchan_network )
- values ( '%s', '%s', '%s', '%s' )",
- dbesc($x['url']),
+ $r = q("insert into xchan ( xchan_hash, xchan_guid, xchan_url, xchan_name, xchan_network )
+ values ( '%s', '%s', '%s', '%s', '%s' )",
+ dbesc($x['guid']),
+ dbesc($x['guid']),
dbesc($x['url']),
dbesc(($name) ? $name : t('(Unknown)')),
dbesc('rss')
);
- if($r) {
+ if($r && $x['photo']) {
- $photos = import_profile_photo($x['photo'],$x['url']);
+ $photos = import_profile_photo($x['photo']['src'],$x['url']);
if($photos) {
- $r = q("update xchan set xchan_photo_date = '%s', xchan_photo_l = '%s', xchan_photo_m = '%s', xchan_photo_s = '%s', xchan_photo_mimetype = '%s' where xchan_url = '%s' and xchan_network = 'rss' limit 1",
+ $r = q("update xchan set xchan_photo_date = '%s', xchan_photo_l = '%s', xchan_photo_m = '%s', xchan_photo_s = '%s', xchan_photo_mimetype = '%s' where xchan_url = '%s' and xchan_network = 'rss'",
dbesc(datetime_convert('UTC','UTC',$arr['photo_updated'])),
dbesc($photos[0]),
dbesc($photos[1]),
@@ -834,10 +991,55 @@ function import_author_rss($x) {
}
+function import_author_unknown($x) {
+
+ if(! $x['url'])
+ return false;
+
+ $r = q("select xchan_hash from xchan where xchan_network = 'unknown' and xchan_url = '%s' limit 1",
+ dbesc($x['url'])
+ );
+ if($r) {
+ logger('import_author_unknown: in cache' , LOGGER_DEBUG);
+ return $r[0]['xchan_hash'];
+ }
+
+ $name = trim($x['name']);
+
+ $r = q("insert into xchan ( xchan_hash, xchan_guid, xchan_url, xchan_name, xchan_network )
+ values ( '%s', '%s', '%s', '%s', '%s' )",
+ dbesc($x['url']),
+ dbesc($x['url']),
+ dbesc($x['url']),
+ dbesc(($name) ? $name : t('(Unknown)')),
+ dbesc('unknown')
+ );
+ if($r && $x['photo']) {
+
+ $photos = import_profile_photo($x['photo']['src'],$x['url']);
-function encode_item($item) {
+ if($photos) {
+ $r = q("update xchan set xchan_photo_date = '%s', xchan_photo_l = '%s', xchan_photo_m = '%s', xchan_photo_s = '%s', xchan_photo_mimetype = '%s' where xchan_url = '%s' and xchan_network = 'unknown'",
+ dbesc(datetime_convert('UTC','UTC',$arr['photo_updated'])),
+ dbesc($photos[0]),
+ dbesc($photos[1]),
+ dbesc($photos[2]),
+ dbesc($photos[3]),
+ dbesc($x['url'])
+ );
+ if($r)
+ return $x['url'];
+ }
+ }
+
+ return false;
+
+}
+
+function encode_item($item,$mirror = false) {
$x = array();
$x['type'] = 'activity';
+ $x['encoding'] = 'zot';
// logger('encode_item: ' . print_r($item,true));
@@ -845,60 +1047,84 @@ function encode_item($item) {
intval($item['uid'])
);
- if($r) {
- $public_scope = $r[0]['channel_r_stream'];
+ if($r)
$comment_scope = $r[0]['channel_w_comment'];
- }
- else {
- $public_scope = 0;
+ else
$comment_scope = 0;
- }
- $scope = map_scope($public_scope);
+ $scope = $item['public_policy'];
+ if(! $scope)
+ $scope = 'public';
+
$c_scope = map_scope($comment_scope);
+ $key = get_config('system','prvkey');
+
if(array_key_exists('item_flags',$item) && ($item['item_flags'] & ITEM_OBSCURED)) {
- $key = get_config('system','prvkey');
if($item['title'])
$item['title'] = crypto_unencapsulate(json_decode_plus($item['title']),$key);
if($item['body'])
$item['body'] = crypto_unencapsulate(json_decode_plus($item['body']),$key);
}
-
- $x['message_id'] = $item['mid'];
- $x['message_top'] = $item['parent_mid'];
- $x['message_parent'] = $item['thr_parent'];
- $x['created'] = $item['created'];
- $x['edited'] = $item['edited'];
- $x['expires'] = $item['expires'];
- $x['commented'] = $item['commented'];
- $x['mimetype'] = $item['mimetype'];
- $x['title'] = $item['title'];
- $x['body'] = $item['body'];
- $x['app'] = $item['app'];
- $x['verb'] = $item['verb'];
- $x['object_type'] = $item['obj_type'];
- $x['target_type'] = $item['tgt_type'];
- $x['permalink'] = $item['plink'];
- $x['location'] = $item['location'];
- $x['longlat'] = $item['coord'];
- $x['signature'] = $item['sig'];
- $x['route'] = $item['route'];
-
- $x['owner'] = encode_item_xchan($item['owner']);
- $x['author'] = encode_item_xchan($item['author']);
+ // If we're trying to backup an item so that it's recoverable or for export/imprt,
+ // add all the attributes we need to recover it
+
+ if($mirror) {
+ $x['id'] = $item['id'];
+ $x['parent'] = $item['parent'];
+ $x['uid'] = $item['uid'];
+ $x['allow_cid'] = $item['allow_cid'];
+ $x['allow_gid'] = $item['allow_gid'];
+ $x['deny_cid'] = $item['deny_cid'];
+ $x['deny_gid'] = $item['deny_gid'];
+ $x['revision'] = $item['revision'];
+ $x['layout_mid'] = $item['layout_mid'];
+ $x['postopts'] = $item['postopts'];
+ $x['resource_id'] = $item['resource_id'];
+ $x['resource_type'] = $item['resource_type'];
+ $x['item_restrict'] = $item['item_restrict'];
+ $x['item_flags'] = $item['item_flags'];
+ $x['attach'] = $item['attach'];
+ }
+
+
+ $x['message_id'] = $item['mid'];
+ $x['message_top'] = $item['parent_mid'];
+ $x['message_parent'] = $item['thr_parent'];
+ $x['created'] = $item['created'];
+ $x['edited'] = $item['edited'];
+ // always send 0's over the wire
+ $x['expires'] = (($item['expires'] == '0001-01-01 00:00:00') ? '0000-00-00 00:00:00' : $item['expires']);
+ $x['commented'] = $item['commented'];
+ $x['mimetype'] = $item['mimetype'];
+ $x['title'] = $item['title'];
+ $x['body'] = $item['body'];
+ $x['app'] = $item['app'];
+ $x['verb'] = $item['verb'];
+ $x['object_type'] = $item['obj_type'];
+ $x['target_type'] = $item['tgt_type'];
+ $x['permalink'] = $item['plink'];
+ $x['location'] = $item['location'];
+ $x['longlat'] = $item['coord'];
+ $x['signature'] = $item['sig'];
+ $x['route'] = $item['route'];
+
+ $x['owner'] = encode_item_xchan($item['owner']);
+ $x['author'] = encode_item_xchan($item['author']);
if($item['object'])
- $x['object'] = json_decode_plus($item['object']);
+ $x['object'] = json_decode_plus($item['object']);
if($item['target'])
- $x['target'] = json_decode_plus($item['target']);
+ $x['target'] = json_decode_plus($item['target']);
if($item['attach'])
- $x['attach'] = json_decode_plus($item['attach']);
+ $x['attach'] = json_decode_plus($item['attach']);
if($y = encode_item_flags($item))
- $x['flags'] = $y;
+ $x['flags'] = $y;
- if(! in_array('private',$y))
- $x['public_scope'] = $scope;
+ if($item['comments_closed'] !== NULL_DATE)
+ $x['comments_closed'] = $item['comments_closed'];
+
+ $x['public_scope'] = $scope;
if($item['item_flags'] & ITEM_NOCOMMENT)
$x['comment_scope'] = 'none';
@@ -906,7 +1132,10 @@ function encode_item($item) {
$x['comment_scope'] = $c_scope;
if($item['term'])
- $x['tags'] = encode_item_terms($item['term']);
+ $x['tags'] = encode_item_terms($item['term']);
+
+ if($item['diaspora_meta'])
+ $x['diaspora_signature'] = crypto_unencapsulate(json_decode($item['diaspora_meta'],true),$key);
logger('encode_item: ' . print_r($x,true), LOGGER_DATA);
@@ -915,14 +1144,18 @@ function encode_item($item) {
}
-function map_scope($scope) {
+function map_scope($scope,$strip = false) {
switch($scope) {
case 0:
return 'self';
case PERMS_PUBLIC:
+ if($strip)
+ return '';
return 'public';
case PERMS_NETWORK:
return 'network: red';
+ case PERMS_AUTHED:
+ return 'authenticated';
case PERMS_SITE:
return 'site: ' . get_app()->get_hostname();
case PERMS_PENDING:
@@ -933,14 +1166,31 @@ function map_scope($scope) {
}
}
-
+function translate_scope($scope) {
+ if(! $scope || $scope === 'public')
+ return t('Visible to anybody on the internet.');
+ if(strpos($scope,'self') === 0)
+ return t('Visible to you only.');
+ if(strpos($scope,'network:') === 0)
+ return t('Visible to anybody in this network.');
+ if(strpos($scope,'authenticated') === 0)
+ return t('Visible to anybody authenticated.');
+ if(strpos($scope,'site:') === 0)
+ return sprintf( t('Visible to anybody on %s.'), strip_tags(substr($scope,6)));
+ if(strpos($scope,'any connections') === 0)
+ return t('Visible to all connections.');
+ if(strpos($scope,'contacts') === 0)
+ return t('Visible to approved connections.');
+ if(strpos($scope,'specific') === 0)
+ return t('Visible to specific connections.');
+}
function encode_item_xchan($xchan) {
$ret = array();
$ret['name'] = $xchan['xchan_name'];
$ret['address'] = $xchan['xchan_addr'];
- $ret['url'] = $xchan['hubloc_url'];
+ $ret['url'] = (($xchan['hubloc_url']) ? $xchan['hubloc_url'] : $xchan['xchan_url']);
$ret['network'] = $xchan['xchan_network'];
$ret['photo'] = array('mimetype' => $xchan['xchan_photo_mimetype'], 'src' => $xchan['xchan_photo_m']);
$ret['guid'] = $xchan['xchan_guid'];
@@ -1069,6 +1319,7 @@ function encode_item_flags($item) {
function encode_mail($item) {
$x = array();
$x['type'] = 'mail';
+ $x['encoding'] = 'zot';
if(array_key_exists('mail_flags',$item) && ($item['mail_flags'] & MAIL_OBSCURED)) {
$key = get_config('system','prvkey');
@@ -1082,6 +1333,7 @@ function encode_mail($item) {
$x['message_parent'] = $item['parent_mid'];
$x['created'] = $item['created'];
$x['expires'] = $item['expires'];
+ $x['diaspora_meta'] = $item['diaspora_meta'];
$x['title'] = $item['title'];
$x['body'] = $item['body'];
$x['from'] = encode_item_xchan($item['from']);
@@ -1111,8 +1363,8 @@ function get_mail_elements($x) {
$arr['title'] = (($x['title'])? htmlspecialchars($x['title'],ENT_COMPAT,'UTF-8',false) : '');
$arr['created'] = datetime_convert('UTC','UTC',$x['created']);
- if((! array_key_exists('expires',$x)) || ($x['expires'] === '0000-00-00 00:00:00'))
- $arr['expires'] = '0000-00-00 00:00:00';
+ if((! array_key_exists('expires',$x)) || ($x['expires'] === NULL_DATE))
+ $arr['expires'] = NULL_DATE;
else
$arr['expires'] = datetime_convert('UTC','UTC',$x['expires']);
@@ -1187,26 +1439,34 @@ function get_profile_elements($x) {
-function get_atom_elements($feed,$item) {
+function get_atom_elements($feed,$item,&$author) {
$best_photo = array();
$res = array();
- $author = $item->get_author();
- if($author) {
- $res['author-name'] = unxmlify($author->get_name());
- $res['author-link'] = unxmlify($author->get_link());
+ $found_author = $item->get_author();
+ if($found_author) {
+ $author['author_name'] = unxmlify($found_author->get_name());
+ $author['author_link'] = unxmlify($found_author->get_link());
+ $author['author_is_feed'] = false;
}
else {
- $res['author-name'] = unxmlify($feed->get_title());
- $res['author-link'] = unxmlify($feed->get_permalink());
+ $author['author_name'] = unxmlify($feed->get_title());
+ $author['author_link'] = unxmlify($feed->get_permalink());
+ $author['author_is_feed'] = true;
}
- $res['mid'] = unxmlify($item->get_id());
+
+ if(substr($author['author_link'],-1,1) == '/')
+ $author['author_link'] = substr($author['author_link'],0,-1);
+
+ $res['mid'] = base64url_encode(unxmlify($item->get_id()));
$res['title'] = unxmlify($item->get_title());
$res['body'] = unxmlify($item->get_content());
$res['plink'] = unxmlify($item->get_link(0));
+ $res['item_flags'] = ITEM_RSS;
+
// removing the content of the title if its identically to the body
// This helps with auto generated titles e.g. from tumblr
@@ -1227,9 +1487,9 @@ function get_atom_elements($feed,$item) {
if($rawauthor && $rawauthor[0]['child'][SIMPLEPIE_NAMESPACE_ATOM_10]['link']) {
$base = $rawauthor[0]['child'][SIMPLEPIE_NAMESPACE_ATOM_10]['link'];
foreach($base as $link) {
- if(!x($res, 'author-avatar') || !$res['author-avatar']) {
+ if(!x($author, 'author_photo') || ! $author['author_photo']) {
if($link['attribs']['']['rel'] === 'photo' || $link['attribs']['']['rel'] === 'avatar')
- $res['author-avatar'] = unxmlify($link['attribs']['']['href']);
+ $author['author_photo'] = unxmlify($link['attribs']['']['href']);
}
}
}
@@ -1240,28 +1500,40 @@ function get_atom_elements($feed,$item) {
$base = $rawactor[0]['child'][SIMPLEPIE_NAMESPACE_ATOM_10]['link'];
if($base && count($base)) {
foreach($base as $link) {
- if($link['attribs']['']['rel'] === 'alternate' && (! $res['author-link']))
- $res['author-link'] = unxmlify($link['attribs']['']['href']);
- if(!x($res, 'author-avatar') || !$res['author-avatar']) {
+ if($link['attribs']['']['rel'] === 'alternate' && (! $res['author_link']))
+ $author['author_link'] = unxmlify($link['attribs']['']['href']);
+ if(!x($author, 'author_photo') || ! $author['author_photo']) {
if($link['attribs']['']['rel'] === 'avatar' || $link['attribs']['']['rel'] === 'photo')
- $res['author-avatar'] = unxmlify($link['attribs']['']['href']);
+ $author['author_photo'] = unxmlify($link['attribs']['']['href']);
}
}
}
}
+ // check for a yahoo media element (github etc.)
+
+ if(! $author['author_photo']) {
+ $rawmedia = $item->get_item_tags(NAMESPACE_YMEDIA,'thumbnail');
+ if($rawmedia && $rawmedia[0]['attribs']['']['url']) {
+ $author['author_photo'] = strip_tags(unxmlify($rawmedia[0]['attribs']['']['url']));
+ }
+ }
+
+
// No photo/profile-link on the item - look at the feed level
- if((! (x($res,'author-link'))) || (! (x($res,'author-avatar')))) {
+ if((! (x($author,'author_link'))) || (! (x($author,'author_photo')))) {
$rawauthor = $feed->get_feed_tags(SIMPLEPIE_NAMESPACE_ATOM_10,'author');
if($rawauthor && $rawauthor[0]['child'][SIMPLEPIE_NAMESPACE_ATOM_10]['link']) {
$base = $rawauthor[0]['child'][SIMPLEPIE_NAMESPACE_ATOM_10]['link'];
foreach($base as $link) {
- if($link['attribs']['']['rel'] === 'alternate' && (! $res['author-link']))
- $res['author-link'] = unxmlify($link['attribs']['']['href']);
- if(! $res['author-avatar']) {
+ if($link['attribs']['']['rel'] === 'alternate' && (! $author['author_link'])) {
+ $author['author_link'] = unxmlify($link['attribs']['']['href']);
+ $author['author_is_feed'] = true;
+ }
+ if(! $author['author_photo']) {
if($link['attribs']['']['rel'] === 'photo' || $link['attribs']['']['rel'] === 'avatar')
- $res['author-avatar'] = unxmlify($link['attribs']['']['href']);
+ $author['author_photo'] = unxmlify($link['attribs']['']['href']);
}
}
}
@@ -1273,11 +1545,11 @@ function get_atom_elements($feed,$item) {
if($base && count($base)) {
foreach($base as $link) {
- if($link['attribs']['']['rel'] === 'alternate' && (! $res['author-link']))
- $res['author-link'] = unxmlify($link['attribs']['']['href']);
- if(! (x($res,'author-avatar'))) {
+ if($link['attribs']['']['rel'] === 'alternate' && (! $res['author_link']))
+ $author['author_link'] = unxmlify($link['attribs']['']['href']);
+ if(! (x($author,'author_photo'))) {
if($link['attribs']['']['rel'] === 'avatar' || $link['attribs']['']['rel'] === 'photo')
- $res['author-avatar'] = unxmlify($link['attribs']['']['href']);
+ $author['author_photo'] = unxmlify($link['attribs']['']['href']);
}
}
}
@@ -1302,6 +1574,12 @@ function get_atom_elements($feed,$item) {
$res['body'] = str_replace(array(' ',"\t","\r","\n"), array('','','',''),$res['body']);
// make sure nobody is trying to sneak some html tags by us
$res['body'] = notags(base64url_decode($res['body']));
+
+ // We could probably turn these old Friendica bbcode bookmarks into bookmark tags but we'd have to
+ // create a term table item for them. For now just make sure they stay as links.
+
+ $res['body'] = preg_replace('/\[bookmark(.*?)\](.*?)\[\/bookmark\]/','[url$1]$2[/url]',$res['body']);
+
}
@@ -1339,11 +1617,33 @@ function get_atom_elements($feed,$item) {
$res['body'] = escape_tags($res['body']);
}
+ if($res['plink'] && $res['title']) {
+ $res['body'] = '#^[url=' . $res['plink'] . ']' . $res['title'] . '[/url]' . "\n\n" . $res['body'];
+ $terms = array();
+ $terms[] = array(
+ 'otype' => TERM_OBJ_POST,
+ 'type' => TERM_BOOKMARK,
+ 'url' => $res['plink'],
+ 'term' => $res['title'],
+ );
+ }
+ elseif($res['plink']) {
+ $res['body'] = '#^[url]' . $res['plink'] . '[/url]' . "\n\n" . $res['body'];
+ $terms = array();
+ $terms[] = array(
+ 'otype' => TERM_OBJ_POST,
+ 'type' => TERM_BOOKMARK,
+ 'url' => $res['plink'],
+ 'term' => $res['plink'],
+ );
+ }
+
+
$private = $item->get_item_tags(NAMESPACE_DFRN,'private');
if($private && intval($private[0]['data']) > 0)
- $res['private'] = intval($private[0]['data']);
+ $res['item_private'] = ((intval($private[0]['data'])) ? 1 : 0);
else
- $res['private'] = 0;
+ $res['item_private'] = 0;
$rawlocation = $item->get_item_tags(NAMESPACE_DFRN, 'location');
if($rawlocation)
@@ -1380,23 +1680,29 @@ function get_atom_elements($feed,$item) {
if($d2 > $d3)
$res['edited'] = datetime_convert();
+ $res['created'] = datetime_convert('UTC','UTC',$res['created']);
+ $res['edited'] = datetime_convert('UTC','UTC',$res['edited']);
+
$rawowner = $item->get_item_tags(NAMESPACE_DFRN, 'owner');
+ if(! $rawowner)
+ $rawowner = $item->get_item_tags(NAMESPACE_ZOT,'owner');
+
if($rawowner[0]['child'][SIMPLEPIE_NAMESPACE_ATOM_10]['name'][0]['data'])
- $res['owner-name'] = unxmlify($rawowner[0]['child'][SIMPLEPIE_NAMESPACE_ATOM_10]['name'][0]['data']);
+ $author['owner_name'] = unxmlify($rawowner[0]['child'][SIMPLEPIE_NAMESPACE_ATOM_10]['name'][0]['data']);
elseif($rawowner[0]['child'][NAMESPACE_DFRN]['name'][0]['data'])
- $res['owner-name'] = unxmlify($rawowner[0]['child'][NAMESPACE_DFRN]['name'][0]['data']);
+ $author['owner_name'] = unxmlify($rawowner[0]['child'][NAMESPACE_DFRN]['name'][0]['data']);
if($rawowner[0]['child'][SIMPLEPIE_NAMESPACE_ATOM_10]['uri'][0]['data'])
- $res['owner-link'] = unxmlify($rawowner[0]['child'][SIMPLEPIE_NAMESPACE_ATOM_10]['uri'][0]['data']);
+ $author['owner_link'] = unxmlify($rawowner[0]['child'][SIMPLEPIE_NAMESPACE_ATOM_10]['uri'][0]['data']);
elseif($rawowner[0]['child'][NAMESPACE_DFRN]['uri'][0]['data'])
- $res['owner-link'] = unxmlify($rawowner[0]['child'][NAMESPACE_DFRN]['uri'][0]['data']);
+ $author['owner_link'] = unxmlify($rawowner[0]['child'][NAMESPACE_DFRN]['uri'][0]['data']);
if($rawowner[0]['child'][SIMPLEPIE_NAMESPACE_ATOM_10]['link']) {
$base = $rawowner[0]['child'][SIMPLEPIE_NAMESPACE_ATOM_10]['link'];
foreach($base as $link) {
- if(!x($res, 'owner-avatar') || !$res['owner-avatar']) {
+ if(!x($author, 'owner_photo') || ! $author['owner_photo']) {
if($link['attribs']['']['rel'] === 'photo' || $link['attribs']['']['rel'] === 'avatar')
- $res['owner-avatar'] = unxmlify($link['attribs']['']['href']);
+ $author['owner_photo'] = unxmlify($link['attribs']['']['href']);
}
}
}
@@ -1421,7 +1727,8 @@ function get_atom_elements($feed,$item) {
$cats = $item->get_categories();
if($cats) {
- $terms = array();
+ if(is_null($terms))
+ $terms = array();
foreach($cats as $cat) {
$term = $cat->get_term();
if(! $term)
@@ -1433,12 +1740,12 @@ function get_atom_elements($feed,$item) {
$termurl = unxmlify(substr($scheme,9));
}
else {
- $termtype = TERM_UNKNOWN;
+ $termtype = TERM_CATEGORY;
}
$termterm = notags(trim(unxmlify($term)));
if($termterm) {
- $terms = array(
+ $terms[] = array(
'otype' => TERM_OBJ_POST,
'type' => $termtype,
'url' => $termurl,
@@ -1446,11 +1753,14 @@ function get_atom_elements($feed,$item) {
);
}
}
- $res['term'] = implode(',', $tag_arr);
}
+ if(! is_null($terms))
+ $res['term'] = $terms;
+
$attach = $item->get_enclosures();
if($attach) {
+ $res['attach'] = array();
$att_arr = array();
foreach($attach as $att) {
$len = intval($att->get_length());
@@ -1466,33 +1776,32 @@ function get_atom_elements($feed,$item) {
$title = ' ';
if(! $type)
$type = 'application/octet-stream';
-
- $att_arr[] = '[attach]href="' . $link . '" length="' . $len . '" type="' . $type . '" title="' . $title . '"[/attach]';
+ $res['attach'][] = array('href' => $link, 'length' => $len, 'type' => $type, 'title' => $title );
}
- $res['attach'] = implode(',', $att_arr);
}
$rawobj = $item->get_item_tags(NAMESPACE_ACTIVITY, 'object');
if($rawobj) {
- $res['object'] = '<object>' . "\n";
+ $obj = array();
+
$child = $rawobj[0]['child'];
if($child[NAMESPACE_ACTIVITY]['obj_type'][0]['data']) {
$res['obj_type'] = $child[NAMESPACE_ACTIVITY]['obj_type'][0]['data'];
- $res['object'] .= '<type>' . $child[NAMESPACE_ACTIVITY]['obj_type'][0]['data'] . '</type>' . "\n";
+ $obj['type'] = $child[NAMESPACE_ACTIVITY]['obj_type'][0]['data'];
}
if(x($child[SIMPLEPIE_NAMESPACE_ATOM_10], 'id') && $child[SIMPLEPIE_NAMESPACE_ATOM_10]['id'][0]['data'])
- $res['object'] .= '<id>' . $child[SIMPLEPIE_NAMESPACE_ATOM_10]['id'][0]['data'] . '</id>' . "\n";
+ $obj['id'] = $child[SIMPLEPIE_NAMESPACE_ATOM_10]['id'][0]['data'];
if(x($child[SIMPLEPIE_NAMESPACE_ATOM_10], 'link') && $child[SIMPLEPIE_NAMESPACE_ATOM_10]['link'])
- $res['object'] .= '<link>' . encode_rel_links($child[SIMPLEPIE_NAMESPACE_ATOM_10]['link']) . '</link>' . "\n";
+ $obj['link'] = encode_rel_links($child[SIMPLEPIE_NAMESPACE_ATOM_10]['link']);
if(x($child[SIMPLEPIE_NAMESPACE_ATOM_10], 'title') && $child[SIMPLEPIE_NAMESPACE_ATOM_10]['title'][0]['data'])
- $res['object'] .= '<title>' . $child[SIMPLEPIE_NAMESPACE_ATOM_10]['title'][0]['data'] . '</title>' . "\n";
+ $obj['title'] = $child[SIMPLEPIE_NAMESPACE_ATOM_10]['title'][0]['data'];
if(x($child[SIMPLEPIE_NAMESPACE_ATOM_10], 'content') && $child[SIMPLEPIE_NAMESPACE_ATOM_10]['content'][0]['data']) {
$body = $child[SIMPLEPIE_NAMESPACE_ATOM_10]['content'][0]['data'];
if(! $body)
$body = $child[SIMPLEPIE_NAMESPACE_ATOM_10]['summary'][0]['data'];
// preserve a copy of the original body content in case we later need to parse out any microformat information, e.g. events
- $res['object'] .= '<orig>' . xmlify($body) . '</orig>' . "\n";
+ $obj['orig'] = xmlify($body);
if((strpos($body,'<') !== false) || (strpos($body,'>') !== false)) {
$body = purify_html($body);
@@ -1500,74 +1809,56 @@ function get_atom_elements($feed,$item) {
}
- $res['object'] .= '<content>' . $body . '</content>' . "\n";
+ $obj['content'] = $body;
}
- $res['object'] .= '</object>' . "\n";
+ $res['object'] = $obj;
}
$rawobj = $item->get_item_tags(NAMESPACE_ACTIVITY, 'target');
if($rawobj) {
- $res['target'] = '<target>' . "\n";
+ $obj = array();
+
$child = $rawobj[0]['child'];
if($child[NAMESPACE_ACTIVITY]['obj_type'][0]['data']) {
- $res['target'] .= '<type>' . $child[NAMESPACE_ACTIVITY]['obj_type'][0]['data'] . '</type>' . "\n";
+ $res['tgt_type'] = $child[NAMESPACE_ACTIVITY]['obj_type'][0]['data'];
+ $obj['type'] = $child[NAMESPACE_ACTIVITY]['obj_type'][0]['data'];
}
if(x($child[SIMPLEPIE_NAMESPACE_ATOM_10], 'id') && $child[SIMPLEPIE_NAMESPACE_ATOM_10]['id'][0]['data'])
- $res['target'] .= '<id>' . $child[SIMPLEPIE_NAMESPACE_ATOM_10]['id'][0]['data'] . '</id>' . "\n";
+ $obj['id'] = $child[SIMPLEPIE_NAMESPACE_ATOM_10]['id'][0]['data'];
if(x($child[SIMPLEPIE_NAMESPACE_ATOM_10], 'link') && $child[SIMPLEPIE_NAMESPACE_ATOM_10]['link'])
- $res['target'] .= '<link>' . encode_rel_links($child[SIMPLEPIE_NAMESPACE_ATOM_10]['link']) . '</link>' . "\n";
- if(x($child[SIMPLEPIE_NAMESPACE_ATOM_10], 'data') && $child[SIMPLEPIE_NAMESPACE_ATOM_10]['title'][0]['data'])
- $res['target'] .= '<title>' . $child[SIMPLEPIE_NAMESPACE_ATOM_10]['title'][0]['data'] . '</title>' . "\n";
- if(x($child[SIMPLEPIE_NAMESPACE_ATOM_10], 'data') && $child[SIMPLEPIE_NAMESPACE_ATOM_10]['content'][0]['data']) {
+ $obj['link'] = encode_rel_links($child[SIMPLEPIE_NAMESPACE_ATOM_10]['link']);
+ if(x($child[SIMPLEPIE_NAMESPACE_ATOM_10], 'title') && $child[SIMPLEPIE_NAMESPACE_ATOM_10]['title'][0]['data'])
+ $obj['title'] = $child[SIMPLEPIE_NAMESPACE_ATOM_10]['title'][0]['data'];
+ if(x($child[SIMPLEPIE_NAMESPACE_ATOM_10], 'content') && $child[SIMPLEPIE_NAMESPACE_ATOM_10]['content'][0]['data']) {
$body = $child[SIMPLEPIE_NAMESPACE_ATOM_10]['content'][0]['data'];
if(! $body)
$body = $child[SIMPLEPIE_NAMESPACE_ATOM_10]['summary'][0]['data'];
// preserve a copy of the original body content in case we later need to parse out any microformat information, e.g. events
- $res['target'] .= '<orig>' . xmlify($body) . '</orig>' . "\n";
+ $obj['orig'] = xmlify($body);
if((strpos($body,'<') !== false) || (strpos($body,'>') !== false)) {
$body = purify_html($body);
$body = html2bbcode($body);
+
}
- $res['target'] .= '<content>' . $body . '</content>' . "\n";
+ $obj['content'] = $body;
}
- $res['target'] .= '</target>' . "\n";
+ $res['target'] = $obj;
}
- // This is some experimental stuff. By now retweets are shown with "RT:"
- // But: There is data so that the message could be shown similar to native retweets
- // There is some better way to parse this array - but it didn't worked for me.
-
- $child = $item->feed->data["child"][SIMPLEPIE_NAMESPACE_ATOM_10]["feed"][0]["child"][SIMPLEPIE_NAMESPACE_ATOM_10]["entry"][0]["child"]["http://activitystrea.ms/spec/1.0/"][object][0]["child"];
- if (is_array($child)) {
- $message = $child["http://activitystrea.ms/spec/1.0/"]["object"][0]["child"][SIMPLEPIE_NAMESPACE_ATOM_10]["content"][0]["data"];
- $author = $child[SIMPLEPIE_NAMESPACE_ATOM_10]["author"][0]["child"][SIMPLEPIE_NAMESPACE_ATOM_10];
- $uri = $author["uri"][0]["data"];
- $name = $author["name"][0]["data"];
- $avatar = @array_shift($author["link"][2]["attribs"]);
- $avatar = $avatar["href"];
-
- if (($name != "") and ($uri != "") and ($avatar != "") and ($message != "")) {
- $res["owner-name"] = $res["author-name"];
- $res["owner-link"] = $res["author-link"];
- $res["owner-avatar"] = $res["author-avatar"];
-
- $res["author-name"] = $name;
- $res["author-link"] = $uri;
- $res["author-avatar"] = $avatar;
-
- $res["body"] = html2bbcode($message);
- }
- }
+ $res['public_policy'] = 'specific';
+ $res['comment_policy'] = 'none';
$arr = array('feed' => $feed, 'item' => $item, 'result' => $res);
call_hooks('parse_atom', $arr);
- logger('get_atom_elements: ' . print_r($res,true));
+ logger('get_atom_elements: author: ' . print_r($author,true),LOGGER_DATA);
+
+ logger('get_atom_elements: ' . print_r($res,true),LOGGER_DATA);
return $res;
}
@@ -1576,6 +1867,7 @@ function encode_rel_links($links) {
$o = '';
if(! ((is_array($links)) && (count($links))))
return $o;
+
foreach($links as $link) {
$o .= '<link ';
if($link['attribs']['']['rel'])
@@ -1606,7 +1898,7 @@ function item_store($arr,$allow_exec = false) {
if(! $arr['uid']) {
logger('item_store: no uid');
$ret['message'] = 'No uid.';
- return ret;
+ return $ret;
}
$uplinked_comment = false;
@@ -1638,9 +1930,10 @@ function item_store($arr,$allow_exec = false) {
}
- $arr['title'] = ((x($arr,'title')) ? trim($arr['title']) : '');
- $arr['body'] = ((x($arr,'body')) ? trim($arr['body']) : '');
+ $arr['title'] = ((array_key_exists('title',$arr) && strlen($arr['title'])) ? trim($arr['title']) : '');
+ $arr['body'] = ((array_key_exists('body',$arr) && strlen($arr['body'])) ? trim($arr['body']) : '');
+ $arr['diaspora_meta'] = ((x($arr,'diaspora_meta')) ? $arr['diaspora_meta'] : '');
$arr['allow_cid'] = ((x($arr,'allow_cid')) ? trim($arr['allow_cid']) : '');
$arr['allow_gid'] = ((x($arr,'allow_gid')) ? trim($arr['allow_gid']) : '');
$arr['deny_cid'] = ((x($arr,'deny_cid')) ? trim($arr['deny_cid']) : '');
@@ -1712,8 +2005,10 @@ function item_store($arr,$allow_exec = false) {
$arr['owner_xchan'] = ((x($arr,'owner_xchan')) ? notags(trim($arr['owner_xchan'])) : '');
$arr['created'] = ((x($arr,'created') !== false) ? datetime_convert('UTC','UTC',$arr['created']) : datetime_convert());
$arr['edited'] = ((x($arr,'edited') !== false) ? datetime_convert('UTC','UTC',$arr['edited']) : datetime_convert());
- $arr['expires'] = ((x($arr,'expires') !== false) ? datetime_convert('UTC','UTC',$arr['expires']) : '0000-00-00 00:00:00');
+ $arr['expires'] = ((x($arr,'expires') !== false) ? datetime_convert('UTC','UTC',$arr['expires']) : NULL_DATE);
$arr['commented'] = ((x($arr,'commented') !== false) ? datetime_convert('UTC','UTC',$arr['commented']) : datetime_convert());
+ $arr['comments_closed'] = ((x($arr,'comments_closed') !== false) ? datetime_convert('UTC','UTC',$arr['comments_closed']) : NULL_DATE);
+
$arr['received'] = datetime_convert();
$arr['changed'] = datetime_convert();
$arr['location'] = ((x($arr,'location')) ? notags(trim($arr['location'])) : '');
@@ -1730,8 +2025,9 @@ function item_store($arr,$allow_exec = false) {
$arr['app'] = ((x($arr,'app')) ? notags(trim($arr['app'])) : '');
$arr['item_restrict'] = ((x($arr,'item_restrict')) ? intval($arr['item_restrict']) : 0 );
- $arr['comment_policy'] = ((x($arr,'comment_policy')) ? notags(trim($arr['comment_policy'])) : 'contacts' );
+ $arr['public_policy'] = ((x($arr,'public_policy')) ? notags(trim($arr['public_policy'])) : '' );
+ $arr['comment_policy'] = ((x($arr,'comment_policy')) ? notags(trim($arr['comment_policy'])) : 'contacts' );
$arr['item_flags'] = $arr['item_flags'] | ITEM_UNSEEN;
@@ -1762,6 +2058,8 @@ function item_store($arr,$allow_exec = false) {
$allow_gid = $arr['allow_gid'];
$deny_cid = $arr['deny_cid'];
$deny_gid = $arr['deny_gid'];
+ $public_policy = $arr['public_policy'];
+ $comments_closed = $arr['comments_closed'];
$arr['item_flags'] = $arr['item_flags'] | ITEM_THREAD_TOP;
}
else {
@@ -1776,6 +2074,13 @@ function item_store($arr,$allow_exec = false) {
if($r) {
+ if(comments_are_now_closed($r[0])) {
+ logger('item_store: comments closed');
+ $ret['message'] = 'Comments closed.';
+ return $ret;
+ }
+
+
// is the new message multi-level threaded?
// even though we don't support it now, preserve the info
// and re-attach to the conversation parent.
@@ -1792,12 +2097,14 @@ function item_store($arr,$allow_exec = false) {
$r = $z;
}
- $parent_id = $r[0]['id'];
- $parent_deleted = $r[0]['item_restrict'] & ITEM_DELETED;
- $allow_cid = $r[0]['allow_cid'];
- $allow_gid = $r[0]['allow_gid'];
- $deny_cid = $r[0]['deny_cid'];
- $deny_gid = $r[0]['deny_gid'];
+ $parent_id = $r[0]['id'];
+ $parent_deleted = $r[0]['item_restrict'] & ITEM_DELETED;
+ $allow_cid = $r[0]['allow_cid'];
+ $allow_gid = $r[0]['allow_gid'];
+ $deny_cid = $r[0]['deny_cid'];
+ $deny_gid = $r[0]['deny_gid'];
+ $public_policy = $r[0]['public_policy'];
+ $comments_closed = $r[0]['comments_closed'];
if($r[0]['item_flags'] & ITEM_WALL)
$arr['item_flags'] = $arr['item_flags'] | ITEM_WALL;
@@ -1811,10 +2118,7 @@ function item_store($arr,$allow_exec = false) {
$uplinked_comment = true;
}
-
// if the parent is private, force privacy for the entire conversation
- // This differs from the above settings as it subtly allows comments from
- // email correspondents to be private even if the overall thread is not.
if($r[0]['item_private'])
$arr['item_private'] = $r[0]['item_private'];
@@ -1906,7 +2210,7 @@ function item_store($arr,$allow_exec = false) {
if((! $parent_id) || ($arr['parent_mid'] === $arr['mid']))
$parent_id = $current_post;
- if(strlen($allow_cid) || strlen($allow_gid) || strlen($deny_cid) || strlen($deny_gid))
+ if(strlen($allow_cid) || strlen($allow_gid) || strlen($deny_cid) || strlen($deny_gid) || strlen($public_policy))
$private = 1;
else
$private = $arr['item_private'];
@@ -1914,13 +2218,16 @@ function item_store($arr,$allow_exec = false) {
// Set parent id - and also make sure to inherit the parent's ACL's.
$r = q("UPDATE item SET parent = %d, allow_cid = '%s', allow_gid = '%s',
- deny_cid = '%s', deny_gid = '%s', item_private = %d WHERE id = %d LIMIT 1",
+ deny_cid = '%s', deny_gid = '%s', public_policy = '%s', item_private = %d, comments_closed = '%s'
+ WHERE id = %d",
intval($parent_id),
dbesc($allow_cid),
dbesc($allow_gid),
dbesc($deny_cid),
dbesc($deny_gid),
+ dbesc($public_policy),
intval($private),
+ dbesc($comments_closed),
intval($current_post)
);
@@ -1931,8 +2238,10 @@ function item_store($arr,$allow_exec = false) {
$arr['allow_gid'] = $allow_gid;
$arr['deny_cid'] = $deny_cid;
$arr['deny_gid'] = $deny_gid;
+ $arr['public_policy'] = $public_policy;
$arr['item_private'] = $private;
-
+ $arr['comments_closed'] = $comments_closed;
+
// Store taxonomy
if(($terms) && (is_array($terms))) {
@@ -1955,12 +2264,13 @@ function item_store($arr,$allow_exec = false) {
// update the commented timestamp on the parent
- $z = q("select max(created) as commented from item where parent_mid = '%s' and uid = %d ",
+ $z = q("select max(created) as commented from item where parent_mid = '%s' and uid = %d and not ( item_restrict & %d )>0 ",
dbesc($arr['parent_mid']),
- intval($arr['uid'])
+ intval($arr['uid']),
+ intval(ITEM_DELAYED_PUBLISH)
);
- q("UPDATE item set commented = '%s', changed = '%s' WHERE id = %d LIMIT 1",
+ q("UPDATE item set commented = '%s', changed = '%s' WHERE id = %d",
dbesc(($z) ? $z[0]['commented'] : (datetime_convert())),
dbesc(datetime_convert()),
intval($parent_id)
@@ -2104,10 +2414,17 @@ function item_store_update($arr,$allow_exec = false) {
$arr['edited'] = ((x($arr,'edited') !== false) ? datetime_convert('UTC','UTC',$arr['edited']) : datetime_convert());
$arr['expires'] = ((x($arr,'expires') !== false) ? datetime_convert('UTC','UTC',$arr['expires']) : $orig[0]['expires']);
+
+ if(array_key_exists('comments_closed',$arr) && $arr['comments_closed'] != NULL_DATE)
+ $arr['comments_closed'] = datetime_convert('UTC','UTC',$arr['comments_closed']);
+ else
+ $arr['comments_closed'] = $orig[0]['comments_closed'];
+
$arr['commented'] = $orig[0]['commented'];
$arr['received'] = datetime_convert();
$arr['changed'] = datetime_convert();
- $arr['title'] = ((x($arr,'title')) ? notags(trim($arr['title'])) : '');
+ $arr['route'] = ((array_key_exists('route',$arr)) ? trim($arr['route']) : $orig[0]['route']);
+ $arr['diaspora_meta'] = ((x($arr,'diaspora_meta')) ? $arr['diaspora_meta'] : $orig[0]['diaspora_meta']);
$arr['location'] = ((x($arr,'location')) ? notags(trim($arr['location'])) : $orig[0]['location']);
$arr['coord'] = ((x($arr,'coord')) ? notags(trim($arr['coord'])) : $orig[0]['coord']);
$arr['verb'] = ((x($arr,'verb')) ? notags(trim($arr['verb'])) : $orig[0]['verb']);
@@ -2123,7 +2440,8 @@ function item_store_update($arr,$allow_exec = false) {
$arr['deny_gid'] = ((array_key_exists('deny_gid',$arr)) ? trim($arr['deny_gid']) : $orig[0]['deny_gid']);
$arr['item_private'] = ((array_key_exists('item_private',$arr)) ? intval($arr['item_private']) : $orig[0]['item_private']);
- $arr['body'] = ((x($arr,'body')) ? trim($arr['body']) : '');
+ $arr['title'] = ((array_key_exists('title',$arr) && strlen($arr['title'])) ? trim($arr['title']) : '');
+ $arr['body'] = ((array_key_exists('body',$arr) && strlen($arr['body'])) ? trim($arr['body']) : '');
$arr['attach'] = ((x($arr,'attach')) ? notags(trim($arr['attach'])) : $orig[0]['attach']);
$arr['app'] = ((x($arr,'app')) ? notags(trim($arr['app'])) : $orig[0]['app']);
// $arr['item_restrict'] = ((x($arr,'item_restrict')) ? intval($arr['item_restrict']) : $orig[0]['item_restrict'] );
@@ -2132,6 +2450,11 @@ function item_store_update($arr,$allow_exec = false) {
$arr['sig'] = ((x($arr,'sig')) ? $arr['sig'] : '');
$arr['layout_mid'] = ((array_key_exists('layout_mid',$arr)) ? dbesc($arr['layout_mid']) : $orig[0]['layout_mid'] );
+ $arr['public_policy'] = ((x($arr,'public_policy')) ? notags(trim($arr['public_policy'])) : $orig[0]['public_policy'] );
+ $arr['comment_policy'] = ((x($arr,'comment_policy')) ? notags(trim($arr['comment_policy'])) : $orig[0]['comment_policy'] );
+
+
+
call_hooks('post_remote_update',$arr);
if(x($arr,'cancel')) {
@@ -2159,7 +2482,7 @@ function item_store_update($arr,$allow_exec = false) {
$str .= " `" . $k . "` = '" . $v . "' ";
}
- $r = dbq("update `item` set " . $str . " where id = " . $orig_post_id . " limit 1");
+ $r = dbq("update `item` set " . $str . " where id = " . $orig_post_id );
if($r)
logger('item_store_update: updated item ' . $orig_post_id, LOGGER_DEBUG);
@@ -2201,6 +2524,51 @@ function item_store_update($arr,$allow_exec = false) {
return $ret;
}
+function store_diaspora_comment_sig($datarray, $channel, $parent_item, $post_id, $walltowall = false) {
+
+ // We won't be able to sign Diaspora comments for authenticated visitors
+ // - we don't have their private key
+
+ // since Diaspora doesn't handle edits we can only do this for the original text and not update it.
+
+ require_once('include/bb2diaspora.php');
+ $signed_body = bb2diaspora_itembody($datarray,$walltowall);
+
+ if($walltowall) {
+ logger('wall to wall comment',LOGGER_DEBUG);
+ // post will come across with the owner's identity. Throw a preamble onto the post to indicate the true author.
+ $signed_body = "\n\n"
+ . '![' . $datarray['author']['xchan_name'] . '](' . $datarray['author']['xchan_photo_m'] . ')'
+ . '[' . $datarray['author']['xchan_name'] . '](' . $datarray['author']['xchan_url'] . ')' . "\n\n"
+ . $signed_body;
+ }
+
+ logger('storing diaspora comment signature',LOGGER_DEBUG);
+
+ $diaspora_handle = $channel['channel_address'] . '@' . get_app()->get_hostname();
+
+ $signed_text = $datarray['mid'] . ';' . $parent_item['mid'] . ';' . $signed_body . ';' . $diaspora_handle;
+
+ if( $uprvkey !== false )
+ $authorsig = base64_encode(rsa_sign($signed_text,$channel['channel_prvkey'],'sha256'));
+ else
+ $authorsig = '';
+
+ $x = array('signer' => $diaspora_handle, 'body' => $signed_body, 'signed_text' => $signed_text, 'signature' => base64_encode($authorsig));
+
+ $key = get_config('system','pubkey');
+ $y = crypto_encapsulate(json_encode($x),$key);
+
+ $r = q("update item set diaspora_meta = '%s' where id = %d",
+ dbesc(json_encode($y)),
+ intval($post_id)
+ );
+
+ if(! $r)
+ logger('store_diaspora_comment_sig: DB write failed');
+
+ return;
+}
@@ -2297,6 +2665,10 @@ function tag_deliver($uid,$item_id) {
$mention = false;
+ /**
+ * Fetch stuff we need - a channel and an item
+ */
+
$u = q("select * from channel where channel_id = %d limit 1",
intval($uid)
);
@@ -2314,14 +2686,19 @@ function tag_deliver($uid,$item_id) {
$item = $i[0];
- if(($item['source_xchan']) && ($item['item_flags'] & ITEM_UPLINK) && ($item['item_flags'] & ITEM_THREAD_TOP) && ($item['edited'] != $item['created'])) {
- // this is an update to a post which was already processed by us and has a second delivery chain
+ if(($item['source_xchan']) && ($item['item_flags'] & ITEM_UPLINK)
+ && ($item['item_flags'] & ITEM_THREAD_TOP) && ($item['edited'] != $item['created'])) {
+ // this is an update (edit) to a post which was already processed by us and has a second delivery chain
// Just start the second delivery chain to deliver the updated post
proc_run('php','include/notifier.php','tgroup',$item['id']);
return;
}
+ /**
+ * Seems like a good place to plug in a poke notification.
+ */
+
if (stristr($item['verb'],ACTIVITY_POKE)) {
$poke_notify = true;
@@ -2350,6 +2727,10 @@ function tag_deliver($uid,$item_id) {
}
}
+ /**
+ * Do community tagging
+ */
+
if($item['obj_type'] === ACTIVITY_OBJ_TAGTERM) {
// We received a community tag activity for a post.
@@ -2374,7 +2755,7 @@ function tag_deliver($uid,$item_id) {
$taglink = get_rel_link($j_obj['link'],'alternate');
store_item_tag($u[0]['channel_id'],$p[0]['id'],TERM_OBJ_POST,TERM_HASHTAG,$j_obj['title'],$j_obj['id']);
- $x = q("update item set edited = '%s', received = '%s', changed = '%s' where mid = '%s' and uid = %d limit 1",
+ $x = q("update item set edited = '%s', received = '%s', changed = '%s' where mid = '%s' and uid = %d",
dbesc(datetime_convert()),
dbesc(datetime_convert()),
dbesc(datetime_convert()),
@@ -2390,6 +2771,11 @@ function tag_deliver($uid,$item_id) {
logger('tag_deliver: tag permission denied for ' . $u[0]['channel_address']);
}
+ /**
+ * A "union" is a message which our channel has sourced from another channel.
+ * This sets up a second delivery chain just like forum tags do.
+ * Find out if this is a source-able post.
+ */
$union = check_item_source($uid,$item);
if($union)
@@ -2399,51 +2785,22 @@ function tag_deliver($uid,$item_id) {
// This might be a followup (e.g. comment) by the original post author to a tagged forum
// If so setup a second delivery chain
- $r = null;
-
if( ! ($item['item_flags'] & ITEM_THREAD_TOP)) {
$x = q("select * from item where id = parent and parent = %d and uid = %d limit 1",
intval($item['parent']),
intval($uid)
);
-
if(($x) && ($x[0]['item_flags'] & ITEM_UPLINK)) {
+ start_delivery_chain($u[0],$item,$item_id,$x[0]);
+ }
+ }
- logger('tag_deliver: creating second delivery chain for comment to tagged post.');
-
- // now change this copy of the post to a forum head message and deliver to all the tgroup members
- // also reset all the privacy bits to the forum default permissions
-
- $private = (($u[0]['channel_allow_cid'] || $u[0]['channel_allow_gid'] || $u[0]['channel_deny_cid'] || $u[0]['channel_deny_gid']) ? 1 : 0);
-
- $flag_bits = ITEM_WALL|ITEM_ORIGIN;
-
- // maintain the original source, which will be the original item owner and was stored in source_xchan
- // when we created the delivery fork
- $r = q("update item set source_xchan = '%s' where id = %d limit 1",
- dbesc($x[0]['source_xchan']),
- intval($item_id)
- );
+ /**
+ * Now we've got those out of the way. Let's see if this is a post that's tagged for re-delivery
+ */
- $r = q("update item set item_flags = ( item_flags | %d ), owner_xchan = '%s', allow_cid = '%s', allow_gid = '%s',
- deny_cid = '%s', deny_gid = '%s', item_private = %d where id = %d limit 1",
- intval($flag_bits),
- dbesc($u[0]['channel_hash']),
- dbesc($u[0]['channel_allow_cid']),
- dbesc($u[0]['channel_allow_gid']),
- dbesc($u[0]['channel_deny_cid']),
- dbesc($u[0]['channel_deny_gid']),
- intval($private),
- intval($item_id)
- );
- if($r)
- proc_run('php','include/notifier.php','tgroup',$item_id);
- else
- logger('tag_deliver: failed to update item');
- }
- }
$terms = get_terms_oftype($item['term'],TERM_MENTION);
@@ -2464,13 +2821,11 @@ function tag_deliver($uid,$item_id) {
if($mention) {
logger('tag_deliver: mention found for ' . $u[0]['channel_name']);
- $r = q("update item set item_flags = ( item_flags | %d ) where id = %d limit 1",
+ $r = q("update item set item_flags = ( item_flags | %d ) where id = %d",
intval(ITEM_MENTIONSME),
intval($item_id)
);
-
-
// At this point we've determined that the person receiving this post was mentioned in it or it is a union.
// Now let's check if this mention was inside a reshare so we don't spam a forum
// If it's private we may have to unobscure it momentarily so that we can parse it.
@@ -2506,7 +2861,9 @@ function tag_deliver($uid,$item_id) {
$arr = array('channel_id' => $uid, 'item' => $item, 'body' => $body);
call_hooks('tagged',$arr);
- // Valid tag. Send a notification
+ /**
+ * Kill two birds with one stone. As long as we're here, send a mention notification.
+ */
require_once('include/enotify.php');
notification(array(
@@ -2540,49 +2897,33 @@ function tag_deliver($uid,$item_id) {
return;
}
-
// tgroup delivery - setup a second delivery chain
// prevent delivery looping - only proceed
// if the message originated elsewhere and is a top-level post
- if(($item['item_flags'] & ITEM_WALL) || ($item['item_flags'] & ITEM_ORIGIN) || (!($item['item_flags'] & ITEM_THREAD_TOP)) || ($item['id'] != $item['parent'])) {
+ if(($item['item_flags'] & ITEM_WALL)
+ || ($item['item_flags'] & ITEM_ORIGIN)
+ || (!($item['item_flags'] & ITEM_THREAD_TOP))
+ || ($item['id'] != $item['parent'])) {
logger('tag_deliver: item was local or a comment. rejected.');
return;
}
logger('tag_deliver: creating second delivery chain.');
-
- // now change this copy of the post to a forum head message and deliver to all the tgroup members
- // also reset all the privacy bits to the forum default permissions
-
- $private = (($u[0]['channel_allow_cid'] || $u[0]['channel_allow_gid'] || $u[0]['channel_deny_cid'] || $u[0]['channel_deny_gid']) ? 1 : 0);
-
- $flag_bits = ITEM_WALL|ITEM_ORIGIN|ITEM_UPLINK;
-
- // preserve the source
-
- $r = q("update item set source_xchan = owner_xchan where id = %d limit 1",
- intval($item_id)
- );
-
- $r = q("update item set item_flags = ( item_flags | %d ), owner_xchan = '%s', allow_cid = '%s', allow_gid = '%s',
- deny_cid = '%s', deny_gid = '%s', item_private = %d where id = %d limit 1",
- intval($flag_bits),
- dbesc($u[0]['channel_hash']),
- dbesc($u[0]['channel_allow_cid']),
- dbesc($u[0]['channel_allow_gid']),
- dbesc($u[0]['channel_deny_cid']),
- dbesc($u[0]['channel_deny_gid']),
- intval($private),
- intval($item_id)
- );
- if($r)
- proc_run('php','include/notifier.php','tgroup',$item_id);
- else
- logger('tag_deliver: failed to update item');
+ start_delivery_chain($u[0],$item,$item_id,null);
}
+/**
+ * @function tgroup_check($uid,$item)
+ *
+ * This function is called pre-deliver to see if a post matches the criteria to be tag delivered.
+ * We don't actually do anything except check that it matches the criteria.
+ * This is so that the channel with tag_delivery enabled can receive the post even if they turn off
+ * permissions for the sender to send their stream. tag_deliver() can't be called until the post is actually stored.
+ * By then it would be too late to reject it.
+ */
+
function tgroup_check($uid,$item) {
@@ -2595,7 +2936,7 @@ function tgroup_check($uid,$item) {
// or is a followup and we have already accepted the top level post as an uplink
if($item['mid'] != $item['parent_mid']) {
- $r = q("select id from item where mid = '%s' and uid = %d and ( item_flags & %d ) limit 1",
+ $r = q("select id from item where mid = '%s' and uid = %d and ( item_flags & %d )>0 limit 1",
dbesc($item['parent_mid']),
intval($uid),
intval(ITEM_UPLINK)
@@ -2639,7 +2980,15 @@ function tgroup_check($uid,$item) {
// At this point we've determined that the person receiving this post was mentioned in it.
// Now let's check if this mention was inside a reshare so we don't spam a forum
- $body = preg_replace('/\[share(.*?)\[\/share\]/','',$item['body']);
+
+ $body = $item['body'];
+
+ if(array_key_exists('item_flags',$item) && ($item['item_flags'] & ITEM_OBSCURED) && $body) {
+ $key = get_config('system','prvkey');
+ $body = crypto_unencapsulate(json_decode($body,true),$key);
+ }
+
+ $body = preg_replace('/\[share(.*?)\[\/share\]/','',$body);
$pattern = '/@\!?\[zrl\=' . preg_quote($term['url'],'/') . '\]' . preg_quote($term['term'] . '+','/') . '\[\/zrl\]/';
@@ -2653,6 +3002,99 @@ function tgroup_check($uid,$item) {
}
+/**
+ * Sourced and tag-delivered posts are re-targetted for delivery to the connections of the channel
+ * receiving the post. This starts the second delivery chain, by resetting permissions and ensuring
+ * that ITEM_UPLINK is set on the parent post, and storing the current owner_xchan as the source_xchan.
+ * We'll become the new owner. If called without $parent, this *is* the parent post.
+ */
+
+function start_delivery_chain($channel,$item,$item_id,$parent) {
+
+
+ // Change this copy of the post to a forum head message and deliver to all the tgroup members
+ // also reset all the privacy bits to the forum default permissions
+
+ $private = (($channel['channel_allow_cid'] || $channel['channel_allow_gid']
+ || $channel['channel_deny_cid'] || $channel['channel_deny_gid']) ? 1 : 0);
+
+ $new_public_policy = map_scope($channel['channel_r_stream'],true);
+
+ if((! $private) && $new_public_policy)
+ $private = 1;
+
+ $flag_bits = $item['item_flags'] | ITEM_WALL|ITEM_ORIGIN;
+
+ // unset the nocomment bit if it's there.
+
+ if($flag_bits & ITEM_NOCOMMENT)
+ $flag_bits = $flag_bits ^ ITEM_NOCOMMENT;
+
+ // maintain the original source, which will be the original item owner and was stored in source_xchan
+ // when we created the delivery fork
+
+ if($parent) {
+ $r = q("update item set source_xchan = '%s' where id = %d",
+ dbesc($parent['source_xchan']),
+ intval($item_id)
+ );
+ }
+ else {
+ $flag_bits = $flag_bits | ITEM_UPLINK;
+ $r = q("update item set source_xchan = owner_xchan where id = %d",
+ intval($item_id)
+ );
+ }
+
+ $title = $item['title'];
+ $body = $item['body'];
+
+ if($private) {
+ if(!($flag_bits & ITEM_OBSCURED)) {
+ $key = get_config('system','pubkey');
+ $flag_bits = $flag_bits|ITEM_OBSCURED;
+ if($title)
+ $title = json_encode(crypto_encapsulate($title,$key));
+ if($body)
+ $body = json_encode(crypto_encapsulate($body,$key));
+ }
+ }
+ else {
+ if($flag_bits & ITEM_OBSCURED) {
+ $key = get_config('system','prvkey');
+ $flag_bits = $flag_bits ^ ITEM_OBSCURED;
+ if($title)
+ $title = crypto_unencapsulate(json_decode($title,true),$key);
+ if($body)
+ $body = crypto_unencapsulate(json_decode($body,true),$key);
+ }
+ }
+
+ $r = q("update item set item_flags = %d, owner_xchan = '%s', allow_cid = '%s', allow_gid = '%s',
+ deny_cid = '%s', deny_gid = '%s', item_private = %d, public_policy = '%s', comment_policy = '%s', title = '%s', body = '%s' where id = %d",
+ intval($flag_bits),
+ dbesc($channel['channel_hash']),
+ dbesc($channel['channel_allow_cid']),
+ dbesc($channel['channel_allow_gid']),
+ dbesc($channel['channel_deny_cid']),
+ dbesc($channel['channel_deny_gid']),
+ intval($private),
+ dbesc($new_public_policy),
+ dbesc(map_scope($channel['channel_w_comment'])),
+ dbesc($title),
+ dbesc($body),
+ intval($item_id)
+ );
+
+ if($r)
+ proc_run('php','include/notifier.php','tgroup',$item_id);
+ else
+ logger('start_delivery_chain: failed to update item');
+
+ return;
+}
+
+
/**
* @function check_item_source($uid,$item)
@@ -2668,29 +3110,33 @@ function tgroup_check($uid,$item) {
function check_item_source($uid,$item) {
- if($item['item_private'])
- return false;
-
- $r = q("select * from source where src_channel_id = %d and ( src_xchan = '%s' || src_xchan = '*' ) limit 1",
+ $r = q("select * from source where src_channel_id = %d and ( src_xchan = '%s' or src_xchan = '*' ) limit 1",
intval($uid),
dbesc(($item['source_xchan']) ? $item['source_xchan'] : $item['owner_xchan'])
);
+
if(! $r)
return false;
- $x = q("select abook_their_perms from abook where abook_channel = %d and abook_xchan = '%s' limit 1",
+ $x = q("select abook_their_perms, abook_flags from abook where abook_channel = %d and abook_xchan = '%s' limit 1",
intval($uid),
dbesc($item['owner_xchan'])
);
+
if(! $x)
return false;
+
if(! ($x[0]['abook_their_perms'] & PERMS_A_REPUBLISH))
return false;
+ if($item['item_private'] && (! ($x[0]['abook_flags'] & ABOOK_FLAG_FEED)))
+ return false;
+
+
if($r[0]['src_channel_xchan'] === $item['owner_xchan'])
return false;
@@ -2739,7 +3185,7 @@ function mail_store($arr) {
$arr['from_xchan'] = ((x($arr,'from_xchan')) ? notags(trim($arr['from_xchan'])) : '');
$arr['to_xchan'] = ((x($arr,'to_xchan')) ? notags(trim($arr['to_xchan'])) : '');
$arr['created'] = ((x($arr,'created') !== false) ? datetime_convert('UTC','UTC',$arr['created']) : datetime_convert());
- $arr['expires'] = ((x($arr,'expires') !== false) ? datetime_convert('UTC','UTC',$arr['expires']) : '0000-00-00 00:00:00');
+ $arr['expires'] = ((x($arr,'expires') !== false) ? datetime_convert('UTC','UTC',$arr['expires']) : NULL_DATE);
$arr['title'] = ((x($arr,'title')) ? notags(trim($arr['title'])) : '');
$arr['parent_mid'] = ((x($arr,'parent_mid')) ? notags(trim($arr['parent_mid'])) : '');
$arr['body'] = ((x($arr,'body')) ? trim($arr['body']) : '');
@@ -2822,7 +3268,6 @@ function mail_store($arr) {
}
-
/**
*
* consume_feed - process atom feed and update anything/everything we might need to update
@@ -2850,7 +3295,7 @@ function mail_store($arr) {
* recursion.
*/
-function consume_feed($xml,$importer,&$contact, &$hub, $datedir = 0, $pass = 0) {
+function consume_feed($xml,$importer,&$contact,$pass = 0) {
require_once('library/simplepie/simplepie.inc');
@@ -2859,15 +3304,8 @@ function consume_feed($xml,$importer,&$contact, &$hub, $datedir = 0, $pass = 0)
return;
}
- // Want to see this work as a content source for the matrix?
- // Read this: https://github.com/friendica/red/wiki/Service_Federation
-
$feed = new SimplePie();
$feed->set_raw_data($xml);
- if($datedir)
- $feed->enable_order_by_date(true);
- else
- $feed->enable_order_by_date(false);
$feed->init();
if($feed->error())
@@ -2877,7 +3315,6 @@ function consume_feed($xml,$importer,&$contact, &$hub, $datedir = 0, $pass = 0)
// Check at the feed level for updated contact name and/or photo
-
// process any deleted entries
$del_entries = $feed->get_feed_tags(NAMESPACE_TOMB, 'deleted-entry');
@@ -2894,41 +3331,21 @@ function consume_feed($xml,$importer,&$contact, &$hub, $datedir = 0, $pass = 0)
else
$when = datetime_convert('UTC','UTC','now','Y-m-d H:i:s');
}
+
+
if($deleted && is_array($contact)) {
-/* $r = q("SELECT `item`.*, `contact`.`self` FROM `item` left join `contact` on `item`.`contact-id` = `contact`.`id`
- WHERE `mid` = '%s' AND `item`.`uid` = %d AND `contact-id` = %d AND NOT `item`.`file` LIKE '%%[%%' LIMIT 1",
- dbesc($mid),
- intval($importer['channel_id']),
- intval($contact['id'])
+ $r = q("SELECT * from item where mid = '%s' and author_xchan = '%s' and uid = %d limit 1",
+ dbesc(base64url_encode($mid)),
+ dbesc($contact['xchan_hash']),
+ intval($importer['channel_id'])
);
-*/
- if(count($r)) {
- $item = $r[0];
- if(! $item['deleted'])
- logger('consume_feed: deleting item ' . $item['id'] . ' mid=' . $item['mid'], LOGGER_DEBUG);
+ if($r) {
+ $item = $r[0];
- if($item['mid'] == $item['parent_mid']) {
- $r = q("UPDATE `item` SET item_restrict = (item_restrict | %d), `edited` = '%s', `changed` = '%s',
- `body` = '', `title` = ''
- WHERE `parent_mid` = '%s' AND `uid` = %d",
- intval(ITEM_DELETED),
- dbesc($when),
- dbesc(datetime_convert()),
- dbesc($item['mid']),
- intval($importer['channel_id'])
- );
- }
- else {
- $r = q("UPDATE `item` SET item_restrict = ( item_restrict | %d ), `edited` = '%s', `changed` = '%s',
- `body` = '', `title` = ''
- WHERE `mid` = '%s' AND `uid` = %d LIMIT 1",
- intval(ITEM_DELETED),
- dbesc($when),
- dbesc(datetime_convert()),
- dbesc($mid),
- intval($importer['channel_id'])
- );
+ if(! ($item['item_restrict'] & ITEM_DELETED)) {
+ logger('consume_feed: deleting item ' . $item['id'] . ' mid=' . base64url_decode($item['mid']), LOGGER_DEBUG);
+ drop_item($item['id'],false);
}
}
}
@@ -2939,26 +3356,21 @@ function consume_feed($xml,$importer,&$contact, &$hub, $datedir = 0, $pass = 0)
if($feed->get_item_quantity()) {
- logger('consume_feed: feed item count = ' . $feed->get_item_quantity());
-
- // in inverse date order
- if ($datedir)
- $items = array_reverse($feed->get_items());
- else
- $items = $feed->get_items();
+ logger('consume_feed: feed item count = ' . $feed->get_item_quantity(), LOGGER_DEBUG);
+ $items = $feed->get_items();
foreach($items as $item) {
$is_reply = false;
- $item_id = $item->get_id();
+ $item_id = base64url_encode($item->get_id());
-logger('consume_feed: processing ' . $item_id);
+ logger('consume_feed: processing ' . $item_id, LOGGER_DEBUG);
$rawthread = $item->get_item_tags( NAMESPACE_THREAD,'in-reply-to');
if(isset($rawthread[0]['attribs']['']['ref'])) {
$is_reply = true;
- $parent_mid = $rawthread[0]['attribs']['']['ref'];
+ $parent_mid = base64url_encode($rawthread[0]['attribs']['']['ref']);
}
if($is_reply) {
@@ -2969,23 +3381,33 @@ logger('consume_feed: processing ' . $item_id);
// Have we seen it? If not, import it.
- $item_id = $item->get_id();
- $datarray = get_atom_elements($feed,$item);
+ $item_id = base64url_encode($item->get_id());
+ $author = array();
+ $datarray = get_atom_elements($feed,$item,$author);
- if((! x($datarray,'author-name')) && ($contact['network'] != NETWORK_DFRN))
- $datarray['author-name'] = $contact['name'];
- if((! x($datarray,'author-link')) && ($contact['network'] != NETWORK_DFRN))
- $datarray['author-link'] = $contact['url'];
- if((! x($datarray,'author-avatar')) && ($contact['network'] != NETWORK_DFRN))
- $datarray['author-avatar'] = $contact['thumb'];
+ if((! x($author,'author_name')) || ($author['author_is_feed']))
+ $author['author_name'] = $contact['xchan_name'];
+ if((! x($author,'author_link')) || ($author['author_is_feed']))
+ $author['author_link'] = $contact['xchan_url'];
+ if((! x($author,'author_photo'))|| ($author['author_is_feed']))
+ $author['author_photo'] = $contact['xchan_photo_m'];
- if((! x($datarray,'author-name')) || (! x($datarray,'author-link'))) {
- logger('consume_feed: no author information! ' . print_r($datarray,true));
- continue;
+ $datarray['author_xchan'] = '';
+
+ if($author['author_link'] != $contact['xchan_url']) {
+ $x = import_author_unknown(array('name' => $author['author_name'],'url' => $author['author_link'],'photo' => array('src' => $author['author_photo'])));
+ if($x)
+ $datarray['author_xchan'] = $x;
+
}
+ if(! $datarray['author_xchan'])
+ $datarray['author_xchan'] = $contact['xchan_hash'];
+
+
+ $datarray['owner_xchan'] = $contact['xchan_hash'];
- $r = q("SELECT `uid`, `edited`, `body` FROM `item` WHERE `mid` = '%s' AND `uid` = %d LIMIT 1",
+ $r = q("SELECT edited FROM item WHERE mid = '%s' AND uid = %d LIMIT 1",
dbesc($item_id),
intval($importer['channel_id'])
);
@@ -2993,71 +3415,26 @@ logger('consume_feed: processing ' . $item_id);
// Update content if 'updated' changes
if($r) {
- if((x($datarray,'edited') !== false) && (datetime_convert('UTC','UTC',$datarray['edited']) !== $r[0]['edited'])) {
+ if((x($datarray,'edited') !== false)
+ && (datetime_convert('UTC','UTC',$datarray['edited']) !== $r[0]['edited'])) {
// do not accept (ignore) an earlier edit than one we currently have.
if(datetime_convert('UTC','UTC',$datarray['edited']) < $r[0]['edited'])
continue;
- $r = q("UPDATE `item` SET `title` = '%s', `body` = '%s', `edited` = '%s' WHERE `mid` = '%s' AND `uid` = %d LIMIT 1",
- dbesc($datarray['title']),
- dbesc($datarray['body']),
- dbesc(datetime_convert('UTC','UTC',$datarray['edited'])),
- dbesc($item_id),
- intval($importer['channel_id'])
- );
+ update_feed_item($importer['channel_id'],$datarray);
}
-
continue;
}
-
$datarray['parent_mid'] = $parent_mid;
$datarray['uid'] = $importer['channel_id'];
- $datarray['contact-id'] = $contact['id'];
- if((activity_match($datarray['verb'],ACTIVITY_LIKE)) || (activity_match($datarray['verb'],ACTIVITY_DISLIKE))) {
- $datarray['type'] = 'activity';
- $datarray['gravity'] = GRAVITY_LIKE;
- // only one like or dislike per person
- $r = q("select id from item where uid = %d and `contact-id` = %d and verb ='%s' and deleted = 0 and (`parent_mid` = '%s' OR `thr_parent` = '%s') limit 1",
- intval($datarray['uid']),
- intval($datarray['contact-id']),
- dbesc($datarray['verb']),
- dbesc($parent_mid),
- dbesc($parent_mid)
- );
- if($r && count($r))
- continue;
- }
- if(($datarray['verb'] === ACTIVITY_TAG) && ($datarray['obj_type'] === ACTIVITY_OBJ_TAGTERM)) {
- $xo = parse_xml_string($datarray['object'],false);
- $xt = parse_xml_string($datarray['target'],false);
- if($xt->type == ACTIVITY_OBJ_NOTE) {
- $r = q("select * from item where `mid` = '%s' AND `uid` = %d limit 1",
- dbesc($xt->id),
- intval($importer['channel_id'])
- );
- if(! count($r))
- continue;
- // extract tag, if not duplicate, add to parent item
- if($xo->id && $xo->content) {
- $newtag = '#[zrl=' . $xo->id . ']'. $xo->content . '[/zrl]';
- if(! (stristr($r[0]['tag'],$newtag))) {
- q("UPDATE item SET tag = '%s' WHERE id = %d LIMIT 1",
- dbesc($r[0]['tag'] . (strlen($r[0]['tag']) ? ',' : '') . $newtag),
- intval($r[0]['id'])
- );
- }
- }
- }
- }
-
-logger('consume_feed: ' . print_r($datarray,true));
+ logger('consume_feed: ' . print_r($datarray,true),LOGGER_DATA);
-// $xx = item_store($datarray);
+ $xx = item_store($datarray);
$r = $xx['item_id'];
continue;
}
@@ -3066,48 +3443,40 @@ logger('consume_feed: ' . print_r($datarray,true));
// Head post of a conversation. Have we seen it? If not, import it.
- $item_id = $item->get_id();
-
- $datarray = get_atom_elements($feed,$item);
+ $item_id = base64url_encode($item->get_id());
+ $author = array();
+ $datarray = get_atom_elements($feed,$item,$author);
if(is_array($contact)) {
- if((! x($datarray,'author-name')) && ($contact['network'] != NETWORK_DFRN))
- $datarray['author-name'] = $contact['name'];
- if((! x($datarray,'author-link')) && ($contact['network'] != NETWORK_DFRN))
- $datarray['author-link'] = $contact['url'];
- if((! x($datarray,'author-avatar')) && ($contact['network'] != NETWORK_DFRN))
- $datarray['author-avatar'] = $contact['thumb'];
+ if((! x($author,'author_name')) || ($author['author_is_feed']))
+ $author['author_name'] = $contact['xchan_name'];
+ if((! x($author,'author_link')) || ($author['author_is_feed']))
+ $author['author_link'] = $contact['xchan_url'];
+ if((! x($author,'author_photo'))|| ($author['author_is_feed']))
+ $author['author_photo'] = $contact['xchan_photo_m'];
}
- if((! x($datarray,'author-name')) || (! x($datarray,'author-link'))) {
- logger('consume_feed: no author information! ' . print_r($datarray,true));
+ if((! x($author,'author_name')) || (! x($author,'author_link'))) {
+ logger('consume_feed: no author information! ' . print_r($author,true));
continue;
}
- // special handling for events
-
- if((x($datarray,'obj_type')) && ($datarray['obj_type'] === ACTIVITY_OBJ_EVENT)) {
- $ev = bbtoevent($datarray['body']);
- if(x($ev,'desc') && x($ev,'start')) {
- $ev['uid'] = $importer['channel_id'];
- $ev['mid'] = $item_id;
- $ev['edited'] = $datarray['edited'];
- $ev['private'] = $datarray['private'];
-
- if(is_array($contact))
- $ev['cid'] = $contact['id'];
- $r = q("SELECT * FROM `event` WHERE `mid` = '%s' AND `uid` = %d LIMIT 1",
- dbesc($item_id),
- intval($importer['channel_id'])
- );
- if(count($r))
- $ev['id'] = $r[0]['id'];
-// $xyz = event_store($ev);
- continue;
- }
+ $datarray['author_xchan'] = '';
+
+ if($author['author_link'] != $contact['xchan_url']) {
+ $x = import_author_unknown(array('name' => $author['author_name'],'url' => $author['author_link'],'photo' => array('src' => $author['author_photo'])));
+ if($x)
+ $datarray['author_xchan'] = $x;
+
}
+ if(! $datarray['author_xchan'])
+ $datarray['author_xchan'] = $contact['xchan_hash'];
- $r = q("SELECT `uid`, `edited`, `body` FROM `item` WHERE `mid` = '%s' AND `uid` = %d LIMIT 1",
+
+ $datarray['owner_xchan'] = $contact['xchan_hash'];
+
+
+ $r = q("SELECT edited FROM item WHERE mid = '%s' AND uid = %d LIMIT 1",
dbesc($item_id),
intval($importer['channel_id'])
);
@@ -3115,81 +3484,36 @@ logger('consume_feed: ' . print_r($datarray,true));
// Update content if 'updated' changes
if($r) {
- if((x($datarray,'edited') !== false) && (datetime_convert('UTC','UTC',$datarray['edited']) !== $r[0]['edited'])) {
+ if((x($datarray,'edited') !== false)
+ && (datetime_convert('UTC','UTC',$datarray['edited']) !== $r[0]['edited'])) {
// do not accept (ignore) an earlier edit than one we currently have.
if(datetime_convert('UTC','UTC',$datarray['edited']) < $r[0]['edited'])
continue;
- $r = q("UPDATE `item` SET `title` = '%s', `body` = '%s', `edited` = '%s' WHERE `mid` = '%s' AND `uid` = %d LIMIT 1",
- dbesc($datarray['title']),
- dbesc($datarray['body']),
- dbesc(datetime_convert('UTC','UTC',$datarray['edited'])),
- dbesc($item_id),
- intval($importer['channel_id'])
- );
+ update_feed_item($importer['channel_id'],$datarray);
}
continue;
}
- if(activity_match($datarray['verb'],ACTIVITY_FOLLOW)) {
- logger('consume-feed: New follower');
- new_follower($importer,$contact,$datarray,$item);
- return;
- }
- if(activity_match($datarray['verb'],ACTIVITY_UNFOLLOW)) {
- lose_follower($importer,$contact,$datarray,$item);
- return;
- }
-
- if(activity_match($datarray['verb'],ACTIVITY_REQ_FRIEND)) {
- logger('consume-feed: New friend request');
- new_follower($importer,$contact,$datarray,$item,true);
- return;
- }
- if(activity_match($datarray['verb'],ACTIVITY_UNFRIEND)) {
- lose_sharer($importer,$contact,$datarray,$item);
- return;
- }
-
-
-// if(! is_array($contact))
-// return;
-
-
- // This is my contact on another system, but it's really me.
- // Turn this into a wall post.
-
- if($contact['remote_self']) {
- $datarray['wall'] = 1;
- }
$datarray['parent_mid'] = $item_id;
$datarray['uid'] = $importer['channel_id'];
- $datarray['contact-id'] = $contact['id'];
- if(! link_compare($datarray['owner-link'],$contact['url'])) {
- // The item owner info is not our contact. It's OK and is to be expected if this is a tgroup delivery,
- // but otherwise there's a possible data mixup on the sender's system.
- // the tgroup delivery code called from item_store will correct it if it's a forum,
- // but we're going to unconditionally correct it here so that the post will always be owned by our contact.
+ if(! link_compare($author['owner_link'],$contact['xchan_url'])) {
logger('consume_feed: Correcting item owner.', LOGGER_DEBUG);
- $datarray['owner-name'] = $contact['name'];
- $datarray['owner-link'] = $contact['url'];
- $datarray['owner-avatar'] = $contact['thumb'];
+ $author['owner_name'] = $contact['name'];
+ $author['owner_link'] = $contact['url'];
+ $author['owner_avatar'] = $contact['thumb'];
}
- // We've allowed "followers" to reach this point so we can decide if they are
- // posting an @-tag delivery, which followers are allowed to do for certain
- // page types. Now that we've parsed the post, let's check if it is legit. Otherwise ignore it.
+ logger('consume_feed: author ' . print_r($author,true),LOGGER_DEBUG);
- if(($contact['rel'] == CONTACT_IS_FOLLOWER) && (! tgroup_check($importer['channel_id'],$datarray)))
- continue;
-logger('consume_feed: ' . print_r($datarray,true));
+ logger('consume_feed: ' . print_r($datarray,true),LOGGER_DATA);
-// $xx = item_store($datarray);
+ $xx = item_store($datarray);
$r = $xx['item_id'];
continue;
@@ -3200,6 +3524,34 @@ logger('consume_feed: ' . print_r($datarray,true));
}
+function update_feed_item($uid,$datarray) {
+
+ logger('update_feed_item: not implemented! ' . $uid . ' ' . print_r($datarray,true), LOGGER_DATA);
+
+}
+
+
+function handle_feed($uid,$abook_id,$url) {
+
+ require_once('include/Contact.php');
+ $channel = channelx_by_n($uid);
+ if(! $channel)
+ return;
+ $x = q("select * from abook left join xchan on abook_xchan = xchan_hash where abook_id = %d and abook_channel = %d limit 1",
+ dbesc($abook_id),
+ intval($uid)
+ );
+
+ $recurse = 0;
+ $z = z_fetch_url($url,false,$recurse,array('novalidate' => true));
+
+//logger('handle_feed:' . print_r($z,true));
+
+ if($z['success']) {
+ consume_feed($z['body'],$channel,$x[0],0);
+ consume_feed($z['body'],$channel,$x[0],1);
+ }
+}
function atom_author($tag,$name,$uri,$h,$w,$type,$photo) {
@@ -3499,17 +3851,17 @@ function item_expire($uid,$days) {
$expire_network_only = 1;
- $sql_extra = ((intval($expire_network_only)) ? " AND not (item_flags & " . intval(ITEM_WALL) . ") " : "");
+ $sql_extra = ((intval($expire_network_only)) ? " AND not (item_flags & " . intval(ITEM_WALL) . ")>0 " : "");
$r = q("SELECT * FROM `item`
WHERE `uid` = %d
- AND `created` < UTC_TIMESTAMP() - INTERVAL %d DAY
+ AND `created` < %s - INTERVAL %s
AND `id` = `parent`
$sql_extra
- AND NOT ( item_flags & %d )
+ AND NOT ( item_flags & %d )>0
AND (item_restrict = 0 ) ",
intval($uid),
- intval($days),
+ db_utcnow(), db_quoteinterval(intval($days).' DAY'),
intval(ITEM_RETAINED)
);
@@ -3547,7 +3899,7 @@ function item_expire($uid,$days) {
}
function retain_item($id) {
- $r = q("update item set item_flags = (item_flags | %d ) where id = %d limit 1",
+ $r = q("update item set item_flags = (item_flags | %d ) where id = %d",
intval(ITEM_RETAINED),
intval($id)
);
@@ -3623,7 +3975,7 @@ function drop_item($id,$interactive = true,$stage = DROPITEM_NORMAL) {
// set the deleted flag immediately on this item just in case the
// hook calls a remote process which loops. We'll delete it properly in a second.
- $r = q("UPDATE item SET item_restrict = ( item_restrict | %d ) WHERE id = %d LIMIT 1",
+ $r = q("UPDATE item SET item_restrict = ( item_restrict | %d ) WHERE id = %d",
intval(ITEM_DELETED),
intval($item['id'])
);
@@ -3650,7 +4002,12 @@ function drop_item($id,$interactive = true,$stage = DROPITEM_NORMAL) {
// send the notification upstream/downstream as the case may be
// only send notifications to others if this is the owner's wall item.
- if(($item['item_flags'] & ITEM_WALL) && ($stage != DROPITEM_PHASE2))
+ // This isn't optimal. We somehow need to pass to this function whether or not
+ // to call the notifier, or we need to call the notifier from the calling function.
+ // We'll rely on the undocumented behaviour that DROPITEM_PHASE1 is (hopefully) only
+ // set if we know we're going to send delete notifications out to others.
+
+ if((($item['item_flags'] & ITEM_WALL) && ($stage != DROPITEM_PHASE2)) || ($stage == DROPITEM_PHASE1))
proc_run('php','include/notifier.php','drop',$notify_id);
goaway($a->get_baseurl() . '/' . $_SESSION['return_url']);
@@ -3675,7 +4032,7 @@ function delete_item_lowlevel($item,$stage = DROPITEM_NORMAL) {
switch($stage) {
case DROPITEM_PHASE2:
$r = q("UPDATE item SET item_restrict = ( item_restrict | %d ), body = '', title = '',
- changed = '%s', edited = '%s' WHERE id = %d LIMIT 1",
+ changed = '%s', edited = '%s' WHERE id = %d",
intval(ITEM_PENDING_REMOVE),
dbesc(datetime_convert()),
dbesc(datetime_convert()),
@@ -3685,7 +4042,7 @@ function delete_item_lowlevel($item,$stage = DROPITEM_NORMAL) {
case DROPITEM_PHASE1:
$r = q("UPDATE item SET item_restrict = ( item_restrict | %d ),
- changed = '%s', edited = '%s' WHERE id = %d LIMIT 1",
+ changed = '%s', edited = '%s' WHERE id = %d",
intval(ITEM_DELETED),
dbesc(datetime_convert()),
dbesc(datetime_convert()),
@@ -3696,7 +4053,7 @@ function delete_item_lowlevel($item,$stage = DROPITEM_NORMAL) {
case DROPITEM_NORMAL:
default:
$r = q("UPDATE item SET item_restrict = ( item_restrict | %d ), body = '', title = '',
- changed = '%s', edited = '%s' WHERE id = %d LIMIT 1",
+ changed = '%s', edited = '%s' WHERE id = %d",
intval(ITEM_DELETED),
dbesc(datetime_convert()),
dbesc(datetime_convert()),
@@ -3708,7 +4065,7 @@ function delete_item_lowlevel($item,$stage = DROPITEM_NORMAL) {
// immediately remove any undesired profile likes.
- q("delete from likes where iid = %d and channel_id = %d limit 1",
+ q("delete from likes where iid = %d and channel_id = %d",
intval($item['id']),
intval($item['uid'])
);
@@ -3719,7 +4076,7 @@ function delete_item_lowlevel($item,$stage = DROPITEM_NORMAL) {
if(strlen($item['resource_id'])) {
if($item['resource_type'] === 'event') {
- q("delete from event where event_hash = '%s' and uid = %d limit 1",
+ q("delete from event where event_hash = '%s' and uid = %d",
dbesc($item['resource_id']),
intval($item['uid'])
);
@@ -3739,12 +4096,12 @@ function delete_item_lowlevel($item,$stage = DROPITEM_NORMAL) {
if($stage == DROPITEM_PHASE1)
return true;
- $r = q("delete from term where otype = %d and oid = %d limit 1",
+ $r = q("delete from term where otype = %d and oid = %d",
intval(TERM_OBJ_POST),
intval($item['id'])
);
- q("delete from item_id where iid = %d and uid = %d limit 1",
+ q("delete from item_id where iid = %d and uid = %d",
intval($item['id']),
intval($item['uid'])
);
@@ -3763,7 +4120,7 @@ function delete_item_lowlevel($item,$stage = DROPITEM_NORMAL) {
function first_post_date($uid,$wall = false) {
- $wall_sql = (($wall) ? sprintf(" and item_flags & %d ", ITEM_WALL) : "" );
+ $wall_sql = (($wall) ? sprintf(" and (item_flags & %d)>0 ", ITEM_WALL) : "" );
$r = q("select id, created from item
where item_restrict = %d and uid = %d and id = parent $wall_sql
@@ -3785,10 +4142,13 @@ function first_post_date($uid,$wall = false) {
* current flat list of all representative dates.
*/
-function list_post_dates($uid,$wall) {
+function list_post_dates($uid,$wall,$mindate) {
$dnow = datetime_convert('',date_default_timezone_get(),'now','Y-m-d');
- $dthen = first_post_date($uid,$wall);
+ if($mindate)
+ $dthen = datetime_convert('',date_default_timezone_get(),$mindate);
+ else
+ $dthen = first_post_date($uid,$wall);
if(! $dthen)
return array();
@@ -3798,7 +4158,7 @@ function list_post_dates($uid,$wall) {
if(intval(substr($dnow,8)) > 28)
$dnow = substr($dnow,0,8) . '28';
if(intval(substr($dthen,8)) > 28)
- $dnow = substr($dthen,0,8) . '28';
+ $dthen = substr($dthen,0,8) . '28';
$ret = array();
// Starting with the current month, get the first and last days of every
@@ -3832,7 +4192,7 @@ function posted_dates($uid,$wall) {
if(intval(substr($dnow,8)) > 28)
$dnow = substr($dnow,0,8) . '28';
if(intval(substr($dthen,8)) > 28)
- $dnow = substr($dthen,0,8) . '28';
+ $dthen = substr($dthen,0,8) . '28';
$ret = array();
// Starting with the current month, get the first and last days of every
@@ -3906,17 +4266,29 @@ function fetch_post_tags($items,$link = false) {
-function zot_feed($uid,$observer_xchan,$mindate) {
+function zot_feed($uid,$observer_xchan,$arr) {
$result = array();
- $mindate = datetime_convert('UTC','UTC',$mindate);
- if(! $mindate)
- $mindate = '0000-00-00 00:00:00';
+ $mindate = null;
+ $message_id = null;
+
+ if(array_key_exists('mindate',$arr)) {
+ $mindate = datetime_convert('UTC','UTC',$arr['mindate']);
+ }
+
+ if(array_key_exists('message_id',$arr)) {
+ $message_id = $arr['message_id'];
+ }
+
+ if(! $mindate)
+ $mindate = NULL_DATE;
$mindate = dbesc($mindate);
- logger('zot_feed: ' . $uid);
+ logger('zot_feed: requested for uid ' . $uid . ' from observer ' . $observer_xchan, LOGGER_DEBUG);
+ if($message_id)
+ logger('message_id: ' . $message_id,LOGGER_DEBUG);
if(! perm_is_allowed($uid,$observer_xchan,'view_stream')) {
logger('zot_feed: permission denied.');
@@ -3928,30 +4300,35 @@ function zot_feed($uid,$observer_xchan,$mindate) {
$sql_extra = item_permissions_sql($uid);
}
- if($mindate != '0000-00-00 00:00:00') {
- $sql_extra .= " and created > '$mindate' ";
+ if($mindate != NULL_DATE) {
+ $sql_extra .= " and ( created > '$mindate' or edited > '$mindate' ) ";
$limit = "";
}
else
$limit = " limit 0, 50 ";
+ if($message_id) {
+ $sql_extra .= " and mid = '" . dbesc($message_id) . "' ";
+ $limit = '';
+ }
+
$items = array();
if(is_sys_channel($uid)) {
require_once('include/security.php');
- $r = q("SELECT distinct parent from item
+ $r = q("SELECT distinct parent, created from item
WHERE uid != %d
and uid in (" . stream_perms_api_uids(PERMS_PUBLIC) . ") AND item_restrict = 0
- AND (item_flags & %d)
+ AND (item_flags & %d)>0
and item_private = 0 $sql_extra ORDER BY created ASC $limit",
intval($uid),
intval(ITEM_WALL)
);
}
else {
- $r = q("SELECT distinct parent from item
+ $r = q("SELECT distinct parent, created from item
WHERE uid = %d AND item_restrict = 0
- AND (item_flags & %d)
+ AND (item_flags & %d)>0
$sql_extra ORDER BY created ASC $limit",
intval($uid),
intval(ITEM_WALL)
@@ -4014,12 +4391,12 @@ function items_fetch($arr,$channel = null,$observer_hash = null,$client_mode = C
}
if($arr['star'])
- $sql_options .= " and (item_flags & " . intval(ITEM_STARRED) . ") ";
+ $sql_options .= " and (item_flags & " . intval(ITEM_STARRED) . ")>0 ";
if($arr['wall'])
- $sql_options .= " and (item_flags & " . intval(ITEM_WALL) . ") ";
+ $sql_options .= " and (item_flags & " . intval(ITEM_WALL) . ")>0 ";
- $sql_extra = " AND item.parent IN ( SELECT parent FROM item WHERE (item_flags & " . intval(ITEM_THREAD_TOP) . ") $sql_options ) ";
+ $sql_extra = " AND item.parent IN ( SELECT parent FROM item WHERE (item_flags & " . intval(ITEM_THREAD_TOP) . ")>0 $sql_options ) ";
if($arr['since_id'])
$sql_extra .= " and item.id > " . $since_id . " ";
@@ -4057,7 +4434,7 @@ function items_fetch($arr,$channel = null,$observer_hash = null,$client_mode = C
}
elseif($arr['cid'] && $uid) {
- $r = q("SELECT abook.*, xchan.* from abook left join xchan on abook_xchan = xchan_hash where abook_id = %d and abook_channel = %d and not ( abook_flags & " . intval(ABOOK_FLAG_BLOCKED) . ") limit 1",
+ $r = q("SELECT abook.*, xchan.* from abook left join xchan on abook_xchan = xchan_hash where abook_id = %d and abook_channel = %d and not ( abook_flags & " . intval(ABOOK_FLAG_BLOCKED) . ")>0 limit 1",
intval($arr['cid']),
intval(local_user())
);
@@ -4097,7 +4474,7 @@ function items_fetch($arr,$channel = null,$observer_hash = null,$client_mode = C
}
if($arr['conv'] && $channel) {
- $sql_extra .= sprintf(" AND parent IN (SELECT distinct parent from item where ( author_xchan like '%s' or ( item_flags & %d ))) ",
+ $sql_extra .= sprintf(" AND parent IN (SELECT distinct parent from item where ( author_xchan like '%s' or ( item_flags & %d )>0)) ",
dbesc(protect_sprintf($uidhash)),
intval(ITEM_MENTIONSME)
);
@@ -4113,11 +4490,11 @@ function items_fetch($arr,$channel = null,$observer_hash = null,$client_mode = C
else {
$itemspage = (($channel) ? get_pconfig($uid,'system','itemspage') : 20);
$a->set_pager_itemspage(((intval($itemspage)) ? $itemspage : 20));
- $pager_sql = sprintf(" LIMIT %d, %d ",intval(get_app()->pager['start']), intval(get_app()->pager['itemspage']));
+ $pager_sql = sprintf(" LIMIT %d OFFSET %d ", intval(get_app()->pager['itemspage']), intval(get_app()->pager['start']));
}
if(isset($arr['start']) && isset($arr['records']))
- $pager_sql = sprintf(" LIMIT %d, %d ",intval($arr['start']), intval($arr['records']));
+ $pager_sql = sprintf(" LIMIT %d OFFSET %d ", intval($arr['records']), intval($arr['start']));
if(array_key_exists('cmin',$arr) || array_key_exists('cmax',$arr)) {
if(($arr['cmin'] != 0) || ($arr['cmax'] != 99)) {
@@ -4139,7 +4516,7 @@ function items_fetch($arr,$channel = null,$observer_hash = null,$client_mode = C
}
}
- $simple_update = (($client_mode & CLIENT_MODE_UPDATE) ? " and ( item.item_flags & " . intval(ITEM_UNSEEN) . " ) " : '');
+ $simple_update = (($client_mode & CLIENT_MODE_UPDATE) ? " and ( item.item_flags & " . intval(ITEM_UNSEEN) . " )>0 " : '');
if($client_mode & CLIENT_MODE_LOAD)
$simple_update = '';
@@ -4183,7 +4560,7 @@ function items_fetch($arr,$channel = null,$observer_hash = null,$client_mode = C
// Fetch a page full of parent items for this page
- $r = q("SELECT distinct item.id AS item_id FROM item
+ $r = q("SELECT distinct item.id AS item_id, item.$ordering FROM item
left join abook on item.author_xchan = abook.abook_xchan
WHERE $item_uids $item_restrict
AND item.parent = item.id
@@ -4213,6 +4590,9 @@ function items_fetch($arr,$channel = null,$observer_hash = null,$client_mode = C
$parents_str = ids_to_querystr($r,'item_id');
+ if($arr['top'])
+ $sql_extra = ' and id = parent ' . $sql_extra;
+
$items = q("SELECT item.*, item.id AS item_id FROM item
WHERE $item_uids $item_restrict
AND item.parent IN ( %s )
@@ -4278,7 +4658,7 @@ function update_remote_id($channel,$post_id,$webpage,$pagetitle,$namespace,$remo
dbesc($page_type)
);
if($r) {
- q("update item_id set sid = '%s' where id = %d limit 1",
+ q("update item_id set sid = '%s' where id = %d",
dbesc(($pagetitle) ? $pagetitle : substr($mid,0,16)),
intval($r[0]['id'])
);
@@ -4309,7 +4689,7 @@ function item_add_cid($xchan_hash,$mid,$uid) {
dbesc('<' . $xchan_hash . '>')
);
if(! $r) {
- $r = q("update item set allow_cid = concat(allow_cid,'%s') where mid = '%s' and uid = %d limit 1",
+ $r = q("update item set allow_cid = concat(allow_cid,'%s') where mid = '%s' and uid = %d",
dbesc('<' . $xchan_hash . '>'),
dbesc($mid),
intval($uid)
@@ -4324,7 +4704,7 @@ function item_remove_cid($xchan_hash,$mid,$uid) {
dbesc('<' . $xchan_hash . '>')
);
if($r) {
- $x = q("update item set allow_cid = '%s' where mid = '%s' and uid = %d limit 1",
+ $x = q("update item set allow_cid = '%s' where mid = '%s' and uid = %d",
dbesc(str_replace('<' . $xchan_hash . '>','',$r[0]['allow_cid'])),
dbesc($mid),
intval($uid)
diff --git a/include/js_strings.php b/include/js_strings.php
index cda66a09c..f4c0a631d 100644
--- a/include/js_strings.php
+++ b/include/js_strings.php
@@ -15,6 +15,7 @@ function js_strings() {
'$passhint' => t('Passphrase hint'),
'$permschange' => t('Notice: Permissions have changed but have not yet been submitted.'),
'$closeAll' => t('close all'),
+ '$nothingnew' => t('Nothing new here'),
'$t01' => ((t('timeago.prefixAgo') != 'timeago.prefixAgo') ? t('timeago.prefixAgo') : ''),
'$t02' => ((t('timeago.prefixFromNow') != 'timeago.prefixFromNow') ? t('timeago.prefixFromNow') : ''),
diff --git a/include/language.php b/include/language.php
index 855d94505..f5ee3471e 100644
--- a/include/language.php
+++ b/include/language.php
@@ -146,7 +146,7 @@ function load_translation_table($lang, $install = false) {
*
* @param $s string that should get translated
* @param $ctx optional context to appear in po file
- * @return translated string if exsists, otherwise s
+ * @return translated string if exists, otherwise return $s
*
*/
function t($s,$ctx = '') {
@@ -250,8 +250,7 @@ function detect_language($s) {
* By default we use the localized language name. You can switch the result
* to any language with the optional 2nd parameter $l.
*
- * $s and $l can be in any format that PHP's Locale understands. We will mostly
- * use the 2-letter ISO 639-1 (en, de, fr) format.
+ * $s and $l should be in 2-letter ISO 639-1 format
*
* If nothing could be looked up it returns $s.
*
@@ -259,11 +258,30 @@ function detect_language($s) {
* @param $l (optional) In which language to return the name
* @return string with the language name, or $s if unrecognized
*/
+require_once(__DIR__ . '/../library/intl/vendor/autoload.php');
+use CommerceGuys\Intl\Language\LanguageRepository;
function get_language_name($s, $l = null) {
- if($l === null)
- $l = $s;
+ // get() expects the second part to be in upper case
+ if(strpos($s,'-') !== false) $s = substr($s,0,2) . strtoupper(substr($s,2));
+ if($l !== null && strpos($l,'-') !== false) $l = substr($l,0,2) . strtoupper(substr($l,2));
- logger('get_language_name: for ' . $s . ' in ' . $l . ' returns: ' . Locale::getDisplayLanguage($s, $l), LOGGER_DEBUG);
- return Locale::getDisplayLanguage($s, $l);
+ $languageRepository = new LanguageRepository;
+
+ // Sometimes intl doesn't like the second part at all ...
+ try {
+ $language = $languageRepository->get($s, $l);
+ }
+ catch(CommerceGuys\Intl\Exception\UnknownLanguageException $e) {
+ $s = substr($s,0,2);
+ if($l !== null) $l = substr($s,0,2);
+ try {
+ $language = $languageRepository->get($s, $l);
+ }
+ catch(CommerceGuys\Intl\Exception\UnknownLanguageException $e) {
+ return $s; // Give up
+ }
+ }
+
+ return $language->getName();
}
diff --git a/include/menu.php b/include/menu.php
index 4b0a11f10..9dc236605 100644
--- a/include/menu.php
+++ b/include/menu.php
@@ -124,7 +124,17 @@ function menu_list($channel_id, $name = '', $flags = 0) {
return $r;
}
+function menu_list_count($channel_id, $name = '', $flags = 0) {
+ $sel_options = '';
+ $sel_options .= (($name) ? " and menu_name = '" . protect_sprintf(dbesc($name)) . "' " : '');
+ $sel_options .= (($flags) ? " and menu_flags = " . intval($flags) . " " : '');
+
+ $r = q("select count(*) as total from menu where menu_channel_id = %d $sel_options",
+ intval($channel_id)
+ );
+ return $r[0]['total'];
+}
function menu_edit($arr) {
@@ -166,7 +176,7 @@ function menu_edit($arr) {
}
return q("update menu set menu_name = '%s', menu_desc = '%s', menu_flags = %d
- where menu_id = %d and menu_channel_id = %d limit 1",
+ where menu_id = %d and menu_channel_id = %d",
dbesc($menu_name),
dbesc($menu_desc),
intval($menu_flags),
@@ -293,7 +303,7 @@ function menu_edit_item($menu_id, $uid, $arr) {
}
- $r = q("update menu_item set mitem_link = '%s', mitem_desc = '%s', mitem_flags = %d, allow_cid = '%s', allow_gid = '%s', deny_cid = '%s', deny_gid = '%s', mitem_order = %d where mitem_channel_id = %d and mitem_menu_id = %d and mitem_id = %d limit 1",
+ $r = q("update menu_item set mitem_link = '%s', mitem_desc = '%s', mitem_flags = %d, allow_cid = '%s', allow_gid = '%s', deny_cid = '%s', deny_gid = '%s', mitem_order = %d where mitem_channel_id = %d and mitem_menu_id = %d and mitem_id = %d",
dbesc($mitem_link),
dbesc($mitem_desc),
intval($mitem_flags),
@@ -313,7 +323,7 @@ function menu_edit_item($menu_id, $uid, $arr) {
function menu_del_item($menu_id,$uid,$item_id) {
- $r = q("delete from menu_item where mitem_menu_id = %d and mitem_channel_id = %d and mitem_id = %d limit 1",
+ $r = q("delete from menu_item where mitem_menu_id = %d and mitem_channel_id = %d and mitem_id = %d",
intval($menu_id),
intval($uid),
intval($item_id)
diff --git a/include/message.php b/include/message.php
index 607166ec9..49278f273 100644
--- a/include/message.php
+++ b/include/message.php
@@ -23,10 +23,13 @@ function send_message($uid = 0, $recipient='', $body='', $subject='', $replyto='
$subject = t('[no subject]');
// if(! $expires)
-// $expires = '0000-00-00 00:00:00';
+// $expires = NULL_DATE;
// else
// $expires = datetime_convert(date_default_timezone_get(),'UTC',$expires);
+
+
+
if($uid) {
$r = q("select * from channel where channel_id = %d limit 1",
intval($uid)
@@ -43,6 +46,59 @@ function send_message($uid = 0, $recipient='', $body='', $subject='', $replyto='
return $ret;
}
+
+ // look for any existing conversation structure
+
+ if(strlen($replyto)) {
+ $r = q("select convid from mail where channel_id = %d and ( mid = '%s' or parent_mid = '%s' ) limit 1",
+ intval(local_user()),
+ dbesc($replyto),
+ dbesc($replyto)
+ );
+ if($r)
+ $convid = $r[0]['convid'];
+ }
+
+ if(! $convid) {
+
+ // create a new conversation
+
+ $conv_guid = random_string();
+
+ $recip = q("select * from xchan where xchan_hash = '%s' limit 1",
+ dbesc($recipient)
+ );
+ if($recip)
+ $recip_handle = $recip[0]['xchan_addr'];
+
+ $sender_handle = $channel['channel_address'] . '@' . get_app()->get_hostname();
+
+ $handles = $recip_handle . ';' . $sender_handle;
+
+ $r = q("insert into conv (uid,guid,creator,created,updated,subject,recips) values(%d, '%s', '%s', '%s', '%s', '%s', '%s') ",
+ intval(local_user()),
+ dbesc($conv_guid),
+ dbesc($sender_handle),
+ dbesc(datetime_convert()),
+ dbesc(datetime_convert()),
+ dbesc($subject),
+ dbesc($handles)
+ );
+
+ $r = q("select * from conv where guid = '%s' and uid = %d limit 1",
+ dbesc($conv_guid),
+ intval(local_user())
+ );
+ if($r)
+ $convid = $r[0]['id'];
+ }
+
+ if(! $convid) {
+ $ret['message'] = 'conversation not found';
+ return $ret;
+ }
+
+
// generate a unique message_id
do {
@@ -115,9 +171,10 @@ function send_message($uid = 0, $recipient='', $body='', $subject='', $replyto='
- $r = q("INSERT INTO mail ( account_id, mail_flags, channel_id, from_xchan, to_xchan, title, body, attach, mid, parent_mid, created, expires )
- VALUES ( %d, %d, %d, '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s' )",
+ $r = q("INSERT INTO mail ( account_id, convid, mail_flags, channel_id, from_xchan, to_xchan, title, body, attach, mid, parent_mid, created, expires )
+ VALUES ( %d, %d, %d, %d, '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s' )",
intval($channel['channel_account_id']),
+ intval($convid),
intval(MAIL_OBSCURED),
intval($channel['channel_id']),
dbesc($channel['channel_hash']),
@@ -186,7 +243,7 @@ function private_messages_list($uid, $mailbox = '', $start = 0, $numitems = 0) {
$limit = '';
if($numitems)
- $limit = " LIMIT " . intval($start) . ", " . intval($numitems);
+ $limit = " LIMIT " . intval($numitems) . " OFFSET " . intval($start);
if($mailbox !== '') {
$x = q("select channel_hash from channel where channel_id = %d limit 1",
@@ -227,9 +284,7 @@ function private_messages_list($uid, $mailbox = '', $start = 0, $numitems = 0) {
$r[$k]['to'] = find_xchan_in_array($rr['to_xchan'],$c);
$r[$k]['seen'] = (($rr['mail_flags'] & MAIL_SEEN) ? 1 : 0);
if($r[$k]['mail_flags'] & MAIL_OBSCURED) {
- logger('unencrypting');
$key = get_config('system','prvkey');
-
if($r[$k]['title'])
$r[$k]['title'] = crypto_unencapsulate(json_decode_plus($r[$k]['title']),$key);
if($r[$k]['body'])
@@ -277,7 +332,7 @@ function private_messages_fetch_message($channel_id, $messageitem_id, $updatesee
}
if($updateseen) {
- $r = q("UPDATE `mail` SET mail_flags = (mail_flags ^ %d) where not (mail_flags & %d) and id = %d AND channel_id = %d",
+ $r = q("UPDATE `mail` SET mail_flags = (mail_flags | %d) where not (mail_flags & %d)>0 and id = %d AND channel_id = %d",
intval(MAIL_SEEN),
intval(MAIL_SEEN),
dbesc($messageitem_id),
@@ -308,7 +363,7 @@ function private_messages_drop($channel_id, $messageitem_id, $drop_conversation
}
}
else {
- $r = q("DELETE FROM mail WHERE id = %d AND channel_id = %d LIMIT 1",
+ $r = q("DELETE FROM mail WHERE id = %d AND channel_id = %d",
intval($messageitem_id),
intval($channel_id)
);
@@ -366,7 +421,7 @@ function private_messages_fetch_conversation($channel_id, $messageitem_id, $upda
if($updateseen) {
- $r = q("UPDATE `mail` SET mail_flags = (mail_flags ^ %d) where not (mail_flags & %d) and parent_mid = '%s' AND channel_id = %d",
+ $r = q("UPDATE `mail` SET mail_flags = (mail_flags | %d) where not (mail_flags & %d)>0 and parent_mid = '%s' AND channel_id = %d",
intval(MAIL_SEEN),
intval(MAIL_SEEN),
dbesc($r[0]['parent_mid']),
diff --git a/include/nav.php b/include/nav.php
index 80e4955e5..a9bff4b29 100644
--- a/include/nav.php
+++ b/include/nav.php
@@ -34,6 +34,18 @@ EOT;
if(local_user()) {
$channel = $a->get_channel();
$observer = $a->get_observer();
+ $prof = q("select id from profile where uid = %d and is_default = 1",
+ intval($channel['channel_id'])
+ );
+
+ $chans = q("select channel_name, channel_id from channel where channel_account_id = %d and not ( channel_pageflags & %d )>0 order by channel_name ",
+ intval(get_account_id()),
+ intval(PAGE_REMOVED)
+ );
+
+
+
+
}
elseif(remote_user())
$observer = $a->get_observer();
@@ -72,53 +84,65 @@ EOT;
$nav['usermenu']=array();
$userinfo = null;
+ $nav['loginmenu']=array();
if(local_user()) {
- $nav['logout'] = Array('logout',t('Logout'), "", t('End this session'));
+
+
+ if($chans && count($chans) > 1 && feature_enabled(local_user(),'nav_channel_select'))
+ $nav['channels'] = $chans;
+
+ $nav['logout'] = Array('logout',t('Logout'), "", t('End this session'),'logout_nav_btn');
// user menu
- $nav['usermenu'][] = Array('channel/' . $channel['channel_address'], t('Home'), "", t('Your posts and conversations'));
- $nav['usermenu'][] = Array('profile/' . $channel['channel_address'], t('View Profile'), "", t('Your profile page'));
+ $nav['usermenu'][] = Array('channel/' . $channel['channel_address'], t('Home'), "", t('Your posts and conversations'),'channel_nav_btn');
+ $nav['usermenu'][] = Array('profile/' . $channel['channel_address'], t('View Profile'), "", t('Your profile page'),'profile_nav_btn');
if(feature_enabled(local_user(),'multi_profiles'))
- $nav['usermenu'][] = Array('profiles', t('Edit Profiles'),"", t('Manage/Edit profiles'));
- $nav['usermenu'][] = Array('photos/' . $channel['channel_address'], t('Photos'), "", t('Your photos'));
- $nav['usermenu'][] = Array('cloud/' . $channel['channel_address'],t('Files'),"",t('Your files'));
+ $nav['usermenu'][] = Array('profiles', t('Edit Profiles'),"", t('Manage/Edit profiles'),'profiles_nav_btn');
+ else
+ $nav['usermenu'][] = Array('profiles/' . $prof[0]['id'], t('Edit Profile'),"", t('Edit your profile'),'profiles_nav_btn');
+
+ $nav['usermenu'][] = Array('photos/' . $channel['channel_address'], t('Photos'), "", t('Your photos'),'photos_nav_btn');
+ $nav['usermenu'][] = Array('cloud/' . $channel['channel_address'],t('Files'),"",t('Your files'),'cloud_nav_btn');
require_once('include/chat.php');
- $chats = chatroom_list(local_user());
- if (count($chats)) {
- $nav['usermenu'][] = Array('chat/' . $channel['channel_address'],t('Chat'),"",t('Your chatrooms'));
+ $has_chats = chatroom_list_count(local_user());
+ if($has_chats) {
+ $nav['usermenu'][] = Array('chat/' . $channel['channel_address'],t('Chat'),"",t('Your chatrooms'),'chat_nav_btn');
+ }
+
+ require_once('include/menu.php');
+ $has_bookmarks = menu_list_count(local_user(),'',MENU_BOOKMARK) + menu_list_count(local_user(),'',MENU_SYSTEM|MENU_BOOKMARK);
+ if($has_bookmarks) {
+ $nav['usermenu'][] = Array('bookmarks', t('Bookmarks'), "", t('Your bookmarks'),'bookmarks_nav_btn');
}
- $nav['usermenu'][] = Array('bookmarks', t('Bookmarks'), "", t('Your bookmarks'));
if(feature_enabled($channel['channel_id'],'webpages'))
- $nav['usermenu'][] = Array('webpages/' . $channel['channel_address'],t('Webpages'),"",t('Your webpages'));
+ $nav['usermenu'][] = Array('webpages/' . $channel['channel_address'],t('Webpages'),"",t('Your webpages'),'webpages_nav_btn');
}
else {
- if(! get_account_id())
- $nav['login'] = Array('login',t('Login'), ($a->module == 'login'?'selected':''), t('Sign in'));
+ if(! get_account_id()) {
+ $nav['loginmenu'][] = Array('login',t('Login'),'',t('Sign in'),'login_nav_btn');
+ }
else
- $nav['alogout'] = Array('logout',t('Logout'), "", t('End this session'));
+ $nav['alogout'] = Array('logout',t('Logout'), "", t('End this session'),'logout_nav_btn');
}
if($observer) {
$userinfo = array(
- 'icon' => $observer['xchan_photo_m'],
+ 'icon' => $observer['xchan_photo_s'],
'name' => $observer['xchan_addr'],
);
}
if($observer) {
- $nav['locked'] = true;
$nav['lock'] = array('logout','','lock',
sprintf( t('%s - click to logout'), $observer['xchan_addr']));
}
else {
- $nav['locked'] = false;
- $nav['lock'] = array('rmagic','','unlock',
- t('Click to authenticate to your home hub'));
+ $nav['loginmenu'][] = Array('rmagic',t('Remote authentication'),'',t('Click to authenticate to your home hub'),'rmagic_nav_btn');
}
/**
@@ -132,24 +156,24 @@ EOT;
}
if(($a->module != 'home') && (! (local_user())))
- $nav['home'] = array($homelink, t('Home'), "", t('Home Page'));
+ $nav['home'] = array($homelink, t('Home'), "", t('Home Page'),'home_nav_btn');
if(($a->config['system']['register_policy'] == REGISTER_OPEN) && (! local_user()) && (! remote_user()))
- $nav['register'] = array('register',t('Register'), "", t('Create an account'));
+ $nav['register'] = array('register',t('Register'), "", t('Create an account'),'register_nav_btn');
$help_url = z_root() . '/help?f=&cmd=' . $a->cmd;
if(! get_config('system','hide_help'))
- $nav['help'] = array($help_url, t('Help'), "", t('Help and documentation'));
+ $nav['help'] = array($help_url, t('Help'), "", t('Help and documentation'),'help_nav_btn');
- $nav['apps'] = array('apps', t('Apps'), "", t('Applications, utilities, links, games'));
+ $nav['apps'] = array('apps', t('Apps'), "", t('Applications, utilities, links, games'),'apps_nav_btn');
$nav['search'] = array('search', t('Search'), "", t('Search site content'));
- $nav['directory'] = array('directory', t('Directory'), "", t('Channel Locator'));
+ $nav['directory'] = array('directory', t('Directory'), "", t('Channel Directory'),'directory_nav_btn');
/**
@@ -160,21 +184,24 @@ EOT;
if(local_user()) {
- $nav['network'] = array('network', t('Matrix'), "", t('Your matrix'));
+ $network_options = get_pconfig(local_user(),'system','network_page_default');
+
+ $nav['network'] = array('network' . (($network_options) ? '?f=&' . $network_options : ''),
+ t('Matrix'), "", t('Your matrix'),'network_nav_btn');
$nav['network']['mark'] = array('', t('Mark all matrix notifications seen'), '','');
- $nav['home'] = array('channel/' . $channel['channel_address'], t('Channel Home'), "", t('Channel home'));
+ $nav['home'] = array('channel/' . $channel['channel_address'], t('Channel Home'), "", t('Channel home'),'home_nav_btn');
$nav['home']['mark'] = array('', t('Mark all channel notifications seen'), '','');
- $nav['intros'] = array('connections/ifpending', t('Connections'), "", t('Connections'));
+ $nav['intros'] = array('connections/ifpending', t('Connections'), "", t('Connections'),'connections_nav_btn');
- $nav['notifications'] = array('notifications/system', t('Notices'), "", t('Notifications'));
+ $nav['notifications'] = array('notifications/system', t('Notices'), "", t('Notifications'),'notifications_nav_btn');
$nav['notifications']['all']=array('notifications/system', t('See all notifications'), "", "");
$nav['notifications']['mark'] = array('', t('Mark all system notifications seen'), '','');
- $nav['messages'] = array('message', t('Mail'), "", t('Private mail'));
+ $nav['messages'] = array('message', t('Mail'), "", t('Private mail'),'mail_nav_btn');
$nav['messages']['all']=array('message', t('See all private messages'), "", "");
$nav['messages']['mark'] = array('', t('Mark all private messages seen'), '','');
$nav['messages']['inbox'] = array('message', t('Inbox'), "", t('Inbox'));
@@ -182,13 +209,13 @@ EOT;
$nav['messages']['new'] = array('mail/new', t('New Message'), "", t('New Message'));
- $nav['all_events'] = array('events', t('Events'), "", t('Event Calendar'));
+ $nav['all_events'] = array('events', t('Events'), "", t('Event Calendar'),'events_nav_btn');
$nav['all_events']['all']=array('events', t('See all events'), "", "");
$nav['all_events']['mark'] = array('', t('Mark all events seen'), '','');
- $nav['manage'] = array('manage', t('Channel Select'), "", t('Manage Your Channels'));
+ $nav['manage'] = array('manage', t('Channel Manager'), "", t('Manage Your Channels'),'manage_nav_btn');
- $nav['settings'] = array('settings', t('Settings'),"", t('Account/Channel Settings'));
+ $nav['settings'] = array('settings', t('Settings'),"", t('Account/Channel Settings'),'settings_nav_btn');
}
@@ -196,7 +223,7 @@ EOT;
* Admin page
*/
if (is_site_admin()){
- $nav['admin'] = array('admin/', t('Admin'), "", t('Site Setup and Configuration'));
+ $nav['admin'] = array('admin/', t('Admin'), "", t('Site Setup and Configuration'),'admin_nav_btn');
}
@@ -214,6 +241,12 @@ EOT;
$x = array('nav' => $nav, 'usermenu' => $userinfo );
call_hooks('nav', $x);
+// Not sure the best place to put this on the page. So I'm implementing it but leaving it
+// turned off until somebody discovers this and figures out a good location for it.
+$powered_by = '';
+
+// $powered_by = '<strong>red<img class="smiley" src="' . $a->get_baseurl() . '/images/rm-16.png" alt="r#" />matrix</strong>';
+
$tpl = get_markup_template('nav.tpl');
$a->page['nav'] .= replace_macros($tpl, array(
@@ -221,10 +254,12 @@ EOT;
'$sitelocation' => $sitelocation,
'$nav' => $x['nav'],
'$banner' => $banner,
- '$emptynotifications' => t('Nothing new here'),
+ '$emptynotifications' => t('Loading...'),
'$userinfo' => $x['usermenu'],
'$localuser' => local_user(),
'$sel' => $a->nav_sel,
+ '$powered_by' => $powered_by,
+ '$help' => t('@name, #tag, content'),
'$pleasewait' => t('Please wait...')
));
diff --git a/include/network.php b/include/network.php
index 66bba5b38..98c411cd8 100644
--- a/include/network.php
+++ b/include/network.php
@@ -38,6 +38,7 @@ function z_fetch_url($url, $binary = false, $redirects = 0, $opts = array()) {
return false;
@curl_setopt($ch, CURLOPT_HEADER, true);
+ @curl_setopt($ch, CURLINFO_HEADER_OUT, true);
@curl_setopt($ch, CURLOPT_CAINFO, get_capath());
@curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, true);
@curl_setopt($ch, CURLOPT_RETURNTRANSFER,true);
@@ -47,11 +48,8 @@ function z_fetch_url($url, $binary = false, $redirects = 0, $opts = array()) {
if($ciphers)
@curl_setopt($ch, CURLOPT_SSL_CIPHER_LIST, $ciphers);
- if (x($opts,'accept_content')){
- @curl_setopt($ch,CURLOPT_HTTPHEADER, array (
- "Accept: " . $opts['accept_content']
- ));
- }
+ if(x($opts,'headers'))
+ @curl_setopt($ch, CURLOPT_HTTPHEADER, $opts['headers']);
if(x($opts,'timeout') && intval($opts['timeout'])) {
@curl_setopt($ch, CURLOPT_TIMEOUT, $opts['timeout']);
@@ -126,12 +124,39 @@ function z_fetch_url($url, $binary = false, $redirects = 0, $opts = array()) {
}
$ret['body'] = substr($s,strlen($header));
$ret['header'] = $header;
+
+ if(x($opts,'debug')) {
+ $ret['debug'] = $curl_info;
+ }
@curl_close($ch);
return($ret);
}
+/**
+ * @function z_post_url
+ * @param string $url
+ * URL to post
+ * @param mixed $params
+ * The full data to post in a HTTP "POST" operation. This parameter can
+ * either be passed as a urlencoded string like 'para1=val1&para2=val2&...'
+ * or as an array with the field name as key and field data as value. If value
+ * is an array, the Content-Type header will be set to multipart/form-data.
+ * @param int $redirects = 0
+ * internal use, recursion counter
+ * @param array $opts (optional parameters)
+ * 'accept_content' => supply Accept: header with 'accept_content' as the value
+ * 'timeout' => int seconds, default system config value or 60 seconds
+ * 'http_auth' => username:password
+ * 'novalidate' => do not validate SSL certs, default is to validate using our CA list
+ *
+ * @returns array
+ * 'return_code' => HTTP return code or 0 if timeout or failure
+ * 'success' => boolean true (if HTTP 2xx result) or false
+ * 'header' => HTTP headers
+ * 'body' => fetched content
+ */
function z_post_url($url,$params, $redirects = 0, $opts = array()) {
@@ -143,6 +168,7 @@ function z_post_url($url,$params, $redirects = 0, $opts = array()) {
return ret;
@curl_setopt($ch, CURLOPT_HEADER, true);
+ @curl_setopt($ch, CURLINFO_HEADER_OUT, true);
@curl_setopt($ch, CURLOPT_CAINFO, get_capath());
@curl_setopt($ch, CURLOPT_RETURNTRANSFER,true);
@curl_setopt($ch, CURLOPT_POST,1);
@@ -153,12 +179,6 @@ function z_post_url($url,$params, $redirects = 0, $opts = array()) {
if($ciphers)
@curl_setopt($ch, CURLOPT_SSL_CIPHER_LIST, $ciphers);
-
- if (x($opts,'accept_content')){
- @curl_setopt($ch,CURLOPT_HTTPHEADER, array (
- "Accept: " . $opts['accept_content']
- ));
- }
if(x($opts,'headers'))
@curl_setopt($ch, CURLOPT_HTTPHEADER, $opts['headers']);
@@ -235,11 +255,24 @@ function z_post_url($url,$params, $redirects = 0, $opts = array()) {
$ret['body'] = substr($s,strlen($header));
$ret['header'] = $header;
+
+ if(x($opts,'debug')) {
+ $ret['debug'] = $curl_info;
+ }
+
+
curl_close($ch);
return($ret);
}
+function z_post_url_json($url,$params,$redirects = 0, $opts = array()) {
+
+ $opts = array_merge($opts,array('headers' => array('Content-Type: application/json')));
+ return z_post_url($url,json_encode($params),$redirects,$opts);
+
+}
+
function json_return_and_die($x) {
header("content-type: application/json");
@@ -280,7 +313,7 @@ function xml_status($st, $message = '') {
function http_status_exit($val,$msg = '') {
- $err = '';
+ $err = '';
if($val >= 400)
$msg = (($msg) ? $msg : 'Error');
if($val >= 200 && $val < 300)
@@ -298,138 +331,43 @@ function http_status_exit($val,$msg = '') {
function convert_xml_element_to_array($xml_element, &$recursion_depth=0) {
- // If we're getting too deep, bail out
- if ($recursion_depth > 512) {
- return(null);
- }
-
- if (!is_string($xml_element) &&
- !is_array($xml_element) &&
- (get_class($xml_element) == 'SimpleXMLElement')) {
- $xml_element_copy = $xml_element;
- $xml_element = get_object_vars($xml_element);
- }
-
- if (is_array($xml_element)) {
- $result_array = array();
- if (count($xml_element) <= 0) {
- return (trim(strval($xml_element_copy)));
- }
-
- foreach($xml_element as $key=>$value) {
-
- $recursion_depth++;
- $result_array[strtolower($key)] =
- convert_xml_element_to_array($value, $recursion_depth);
- $recursion_depth--;
- }
- if ($recursion_depth == 0) {
- $temp_array = $result_array;
- $result_array = array(
- strtolower($xml_element_copy->getName()) => $temp_array,
- );
- }
-
- return ($result_array);
-
- } else {
- return (trim(strval($xml_element)));
- }
-}
-
-// Given an email style address, perform webfinger lookup and
-// return the resulting DFRN profile URL, or if no DFRN profile URL
-// is located, returns an OStatus subscription template (prefixed
-// with the string 'stat:' to identify it as on OStatus template).
-// If this isn't an email style address just return $s.
-// Return an empty string if email-style addresses but webfinger fails,
-// or if the resultant personal XRD doesn't contain a supported
-// subscription/friend-request attribute.
-
-// amended 7/9/2011 to return an hcard which could save potentially loading
-// a lengthy content page to scrape dfrn attributes
-
-
-function webfinger_dfrn($s,&$hcard) {
- if(! strstr($s,'@')) {
- return $s;
- }
- $profile_link = '';
-
- $links = webfinger($s);
- logger('webfinger_dfrn: ' . $s . ':' . print_r($links,true), LOGGER_DATA);
- if(count($links)) {
- foreach($links as $link) {
- if($link['@attributes']['rel'] === NAMESPACE_DFRN)
- $profile_link = $link['@attributes']['href'];
- if($link['@attributes']['rel'] === NAMESPACE_OSTATUSSUB)
- $profile_link = 'stat:' . $link['@attributes']['template'];
- if($link['@attributes']['rel'] === 'http://microformats.org/profile/hcard')
- $hcard = $link['@attributes']['href'];
+ // If we're getting too deep, bail out
+ if ($recursion_depth > 512) {
+ return(null);
}
- }
- return $profile_link;
-}
-
-// Given an email style address, perform webfinger lookup and
-// return the array of link attributes from the personal XRD file.
-// On error/failure return an empty array.
-
-
-function webfinger($s, $debug = false) {
- $host = '';
- if(strstr($s,'@')) {
- $host = substr($s,strpos($s,'@') + 1);
- }
- if(strlen($host)) {
- $tpl = fetch_lrdd_template($host);
- logger('webfinger: lrdd template: ' . $tpl);
- if(strlen($tpl)) {
- $pxrd = str_replace('{uri}', urlencode('acct:' . $s), $tpl);
- logger('webfinger: pxrd: ' . $pxrd);
- $links = fetch_xrd_links($pxrd);
- if(! count($links)) {
- // try with double slashes
- $pxrd = str_replace('{uri}', urlencode('acct://' . $s), $tpl);
- logger('webfinger: pxrd: ' . $pxrd);
- $links = fetch_xrd_links($pxrd);
- }
- return $links;
+ if (!is_string($xml_element) &&
+ !is_array($xml_element) &&
+ (get_class($xml_element) == 'SimpleXMLElement')) {
+ $xml_element_copy = $xml_element;
+ $xml_element = get_object_vars($xml_element);
}
- }
- return array();
-}
-
-
+ if (is_array($xml_element)) {
+ $result_array = array();
+ if (count($xml_element) <= 0) {
+ return (trim(strval($xml_element_copy)));
+ }
-// Given a host name, locate the LRDD template from that
-// host. Returns the LRDD template or an empty string on
-// error/failure.
+ foreach($xml_element as $key=>$value) {
+ $recursion_depth++;
+ $result_array[strtolower($key)] =
+ convert_xml_element_to_array($value, $recursion_depth);
+ $recursion_depth--;
+ }
+ if ($recursion_depth == 0) {
+ $temp_array = $result_array;
+ $result_array = array(
+ strtolower($xml_element_copy->getName()) => $temp_array,
+ );
+ }
-function fetch_lrdd_template($host) {
- $tpl = '';
+ return ($result_array);
- $url1 = 'https://' . $host . '/.well-known/host-meta' ;
- $url2 = 'http://' . $host . '/.well-known/host-meta' ;
- $links = fetch_xrd_links($url1);
- logger('fetch_lrdd_template from: ' . $url1);
- logger('template (https): ' . print_r($links,true));
- if(! count($links)) {
- logger('fetch_lrdd_template from: ' . $url2);
- $links = fetch_xrd_links($url2);
- logger('template (http): ' . print_r($links,true));
- }
- if(count($links)) {
- foreach($links as $link)
- if($link['@attributes']['rel'] && $link['@attributes']['rel'] === 'lrdd')
- $tpl = $link['@attributes']['template'];
- }
- if(! strpos($tpl,'{uri}'))
- $tpl = '';
- return $tpl;
+ } else {
+ return (trim(strval($xml_element)));
+ }
}
// Take a URL from the wild, prepend http:// if necessary
@@ -464,7 +402,7 @@ function validate_email($addr) {
return false;
$h = substr($addr,strpos($addr,'@') + 1);
- if(($h) && (dns_get_record($h, DNS_A + DNS_CNAME + DNS_PTR + DNS_MX) || filter_var($h['host'], FILTER_VALIDATE_IP) )) {
+ if(($h) && (dns_get_record($h, DNS_A + DNS_CNAME + DNS_PTR + DNS_MX) || filter_var($h, FILTER_VALIDATE_IP) )) {
return true;
}
return false;
@@ -679,35 +617,35 @@ function scale_external_images($s, $include_link = true, $scale_replace = false)
*/
function xml2array($contents, $namespaces = true, $get_attributes=1, $priority = 'attribute') {
- if(!$contents) return array();
+ if(!$contents) return array();
- if(!function_exists('xml_parser_create')) {
- logger('xml2array: parser function missing');
- return array();
- }
+ if(!function_exists('xml_parser_create')) {
+ logger('xml2array: parser function missing');
+ return array();
+ }
libxml_use_internal_errors(true);
libxml_clear_errors();
if($namespaces)
- $parser = @xml_parser_create_ns("UTF-8",':');
+ $parser = @xml_parser_create_ns("UTF-8",':');
else
- $parser = @xml_parser_create();
+ $parser = @xml_parser_create();
if(! $parser) {
logger('xml2array: xml_parser_create: no resource');
return array();
}
- xml_parser_set_option($parser, XML_OPTION_TARGET_ENCODING, "UTF-8");
+ xml_parser_set_option($parser, XML_OPTION_TARGET_ENCODING, "UTF-8");
// http://minutillo.com/steve/weblog/2004/6/17/php-xml-and-character-encodings-a-tale-of-sadness-rage-and-data-loss
- xml_parser_set_option($parser, XML_OPTION_CASE_FOLDING, 0);
- xml_parser_set_option($parser, XML_OPTION_SKIP_WHITE, 1);
- @xml_parse_into_struct($parser, trim($contents), $xml_values);
- @xml_parser_free($parser);
+ xml_parser_set_option($parser, XML_OPTION_CASE_FOLDING, 0);
+ xml_parser_set_option($parser, XML_OPTION_SKIP_WHITE, 1);
+ @xml_parse_into_struct($parser, trim($contents), $xml_values);
+ @xml_parser_free($parser);
- if(! $xml_values) {
+ if(! $xml_values) {
logger('xml2array: libxml: parse error: ' . $contents, LOGGER_DATA);
foreach(libxml_get_errors() as $err)
logger('libxml: parse: ' . $err->code . " at " . $err->line . ":" . $err->column . " : " . $err->message, LOGGER_DATA);
@@ -715,40 +653,40 @@ function xml2array($contents, $namespaces = true, $get_attributes=1, $priority =
return;
}
- //Initializations
- $xml_array = array();
- $parents = array();
- $opened_tags = array();
- $arr = array();
-
- $current = &$xml_array; // Reference
-
- // Go through the tags.
- $repeated_tag_index = array(); // Multiple tags with same name will be turned into an array
- foreach($xml_values as $data) {
- unset($attributes,$value); // Remove existing values, or there will be trouble
-
- // This command will extract these variables into the foreach scope
- // tag(string), type(string), level(int), attributes(array).
- extract($data); // We could use the array by itself, but this cooler.
-
- $result = array();
- $attributes_data = array();
-
- if(isset($value)) {
- if($priority == 'tag') $result = $value;
- else $result['value'] = $value; // Put the value in a assoc array if we are in the 'Attribute' mode
- }
-
- //Set the attributes too.
- if(isset($attributes) and $get_attributes) {
- foreach($attributes as $attr => $val) {
- if($priority == 'tag') $attributes_data[$attr] = $val;
- else $result['@attributes'][$attr] = $val; // Set all the attributes in a array called 'attr'
- }
- }
-
- // See tag status and do the needed.
+ //Initializations
+ $xml_array = array();
+ $parents = array();
+ $opened_tags = array();
+ $arr = array();
+
+ $current = &$xml_array; // Reference
+
+ // Go through the tags.
+ $repeated_tag_index = array(); // Multiple tags with same name will be turned into an array
+ foreach($xml_values as $data) {
+ unset($attributes,$value); // Remove existing values, or there will be trouble
+
+ // This command will extract these variables into the foreach scope
+ // tag(string), type(string), level(int), attributes(array).
+ extract($data); // We could use the array by itself, but this cooler.
+
+ $result = array();
+ $attributes_data = array();
+
+ if(isset($value)) {
+ if($priority == 'tag') $result = $value;
+ else $result['value'] = $value; // Put the value in a assoc array if we are in the 'Attribute' mode
+ }
+
+ //Set the attributes too.
+ if(isset($attributes) and $get_attributes) {
+ foreach($attributes as $attr => $val) {
+ if($priority == 'tag') $attributes_data[$attr] = $val;
+ else $result['@attributes'][$attr] = $val; // Set all the attributes in a array called 'attr'
+ }
+ }
+
+ // See tag status and do the needed.
if($namespaces && strpos($tag,':')) {
$namespc = substr($tag,0,strrpos($tag,':'));
$tag = strtolower(substr($tag,strlen($namespc)+1));
@@ -757,80 +695,80 @@ function xml2array($contents, $namespaces = true, $get_attributes=1, $priority =
$tag = strtolower($tag);
if($type == "open") { // The starting of the tag '<tag>'
- $parent[$level-1] = &$current;
- if(!is_array($current) or (!in_array($tag, array_keys($current)))) { // Insert New tag
- $current[$tag] = $result;
- if($attributes_data) $current[$tag. '_attr'] = $attributes_data;
- $repeated_tag_index[$tag.'_'.$level] = 1;
-
- $current = &$current[$tag];
-
- } else { // There was another element with the same tag name
-
- if(isset($current[$tag][0])) { // If there is a 0th element it is already an array
- $current[$tag][$repeated_tag_index[$tag.'_'.$level]] = $result;
- $repeated_tag_index[$tag.'_'.$level]++;
- } else { // This section will make the value an array if multiple tags with the same name appear together
- $current[$tag] = array($current[$tag],$result); // This will combine the existing item and the new item together to make an array
- $repeated_tag_index[$tag.'_'.$level] = 2;
-
- if(isset($current[$tag.'_attr'])) { // The attribute of the last(0th) tag must be moved as well
- $current[$tag]['0_attr'] = $current[$tag.'_attr'];
- unset($current[$tag.'_attr']);
- }
-
- }
- $last_item_index = $repeated_tag_index[$tag.'_'.$level]-1;
- $current = &$current[$tag][$last_item_index];
- }
-
- } elseif($type == "complete") { // Tags that ends in 1 line '<tag />'
- //See if the key is already taken.
- if(!isset($current[$tag])) { //New Key
- $current[$tag] = $result;
- $repeated_tag_index[$tag.'_'.$level] = 1;
- if($priority == 'tag' and $attributes_data) $current[$tag. '_attr'] = $attributes_data;
-
- } else { // If taken, put all things inside a list(array)
- if(isset($current[$tag][0]) and is_array($current[$tag])) { // If it is already an array...
-
- // ...push the new element into that array.
- $current[$tag][$repeated_tag_index[$tag.'_'.$level]] = $result;
-
- if($priority == 'tag' and $get_attributes and $attributes_data) {
- $current[$tag][$repeated_tag_index[$tag.'_'.$level] . '_attr'] = $attributes_data;
- }
- $repeated_tag_index[$tag.'_'.$level]++;
-
- } else { // If it is not an array...
- $current[$tag] = array($current[$tag],$result); //...Make it an array using using the existing value and the new value
- $repeated_tag_index[$tag.'_'.$level] = 1;
- if($priority == 'tag' and $get_attributes) {
- if(isset($current[$tag.'_attr'])) { // The attribute of the last(0th) tag must be moved as well
-
- $current[$tag]['0_attr'] = $current[$tag.'_attr'];
- unset($current[$tag.'_attr']);
- }
-
- if($attributes_data) {
- $current[$tag][$repeated_tag_index[$tag.'_'.$level] . '_attr'] = $attributes_data;
- }
- }
- $repeated_tag_index[$tag.'_'.$level]++; // 0 and 1 indexes are already taken
- }
- }
-
- } elseif($type == 'close') { // End of tag '</tag>'
- $current = &$parent[$level-1];
- }
- }
-
- return($xml_array);
+ $parent[$level-1] = &$current;
+ if(!is_array($current) or (!in_array($tag, array_keys($current)))) { // Insert New tag
+ $current[$tag] = $result;
+ if($attributes_data) $current[$tag. '_attr'] = $attributes_data;
+ $repeated_tag_index[$tag.'_'.$level] = 1;
+
+ $current = &$current[$tag];
+
+ } else { // There was another element with the same tag name
+
+ if(isset($current[$tag][0])) { // If there is a 0th element it is already an array
+ $current[$tag][$repeated_tag_index[$tag.'_'.$level]] = $result;
+ $repeated_tag_index[$tag.'_'.$level]++;
+ } else { // This section will make the value an array if multiple tags with the same name appear together
+ $current[$tag] = array($current[$tag],$result); // This will combine the existing item and the new item together to make an array
+ $repeated_tag_index[$tag.'_'.$level] = 2;
+
+ if(isset($current[$tag.'_attr'])) { // The attribute of the last(0th) tag must be moved as well
+ $current[$tag]['0_attr'] = $current[$tag.'_attr'];
+ unset($current[$tag.'_attr']);
+ }
+
+ }
+ $last_item_index = $repeated_tag_index[$tag.'_'.$level]-1;
+ $current = &$current[$tag][$last_item_index];
+ }
+
+ } elseif($type == "complete") { // Tags that ends in 1 line '<tag />'
+ //See if the key is already taken.
+ if(!isset($current[$tag])) { //New Key
+ $current[$tag] = $result;
+ $repeated_tag_index[$tag.'_'.$level] = 1;
+ if($priority == 'tag' and $attributes_data) $current[$tag. '_attr'] = $attributes_data;
+
+ } else { // If taken, put all things inside a list(array)
+ if(isset($current[$tag][0]) and is_array($current[$tag])) { // If it is already an array...
+
+ // ...push the new element into that array.
+ $current[$tag][$repeated_tag_index[$tag.'_'.$level]] = $result;
+
+ if($priority == 'tag' and $get_attributes and $attributes_data) {
+ $current[$tag][$repeated_tag_index[$tag.'_'.$level] . '_attr'] = $attributes_data;
+ }
+ $repeated_tag_index[$tag.'_'.$level]++;
+
+ } else { // If it is not an array...
+ $current[$tag] = array($current[$tag],$result); //...Make it an array using using the existing value and the new value
+ $repeated_tag_index[$tag.'_'.$level] = 1;
+ if($priority == 'tag' and $get_attributes) {
+ if(isset($current[$tag.'_attr'])) { // The attribute of the last(0th) tag must be moved as well
+
+ $current[$tag]['0_attr'] = $current[$tag.'_attr'];
+ unset($current[$tag.'_attr']);
+ }
+
+ if($attributes_data) {
+ $current[$tag][$repeated_tag_index[$tag.'_'.$level] . '_attr'] = $attributes_data;
+ }
+ }
+ $repeated_tag_index[$tag.'_'.$level]++; // 0 and 1 indexes are already taken
+ }
+ }
+
+ } elseif($type == 'close') { // End of tag '</tag>'
+ $current = &$parent[$level-1];
+ }
+ }
+
+ return($xml_array);
}
function email_header_encode($in_str, $charset = 'UTF-8') {
- $out_str = $in_str;
+ $out_str = $in_str;
$need_to_convert = false;
for($x = 0; $x < strlen($in_str); $x ++) {
@@ -842,42 +780,42 @@ function email_header_encode($in_str, $charset = 'UTF-8') {
if(! $need_to_convert)
return $in_str;
- if ($out_str && $charset) {
-
- // define start delimimter, end delimiter and spacer
- $end = "?=";
- $start = "=?" . $charset . "?B?";
- $spacer = $end . "\r\n " . $start;
-
- // determine length of encoded text within chunks
- // and ensure length is even
- $length = 75 - strlen($start) - strlen($end);
-
- /*
- [EDIT BY danbrown AT php DOT net: The following
- is a bugfix provided by (gardan AT gmx DOT de)
- on 31-MAR-2005 with the following note:
- "This means: $length should not be even,
- but divisible by 4. The reason is that in
- base64-encoding 3 8-bit-chars are represented
- by 4 6-bit-chars. These 4 chars must not be
- split between two encoded words, according
- to RFC-2047.
- */
- $length = $length - ($length % 4);
-
- // encode the string and split it into chunks
- // with spacers after each chunk
- $out_str = base64_encode($out_str);
- $out_str = chunk_split($out_str, $length, $spacer);
-
- // remove trailing spacer and
- // add start and end delimiters
- $spacer = preg_quote($spacer,'/');
- $out_str = preg_replace("/" . $spacer . "$/", "", $out_str);
- $out_str = $start . $out_str . $end;
- }
- return $out_str;
+ if ($out_str && $charset) {
+
+ // define start delimimter, end delimiter and spacer
+ $end = "?=";
+ $start = "=?" . $charset . "?B?";
+ $spacer = $end . "\r\n " . $start;
+
+ // determine length of encoded text within chunks
+ // and ensure length is even
+ $length = 75 - strlen($start) - strlen($end);
+
+ /*
+ [EDIT BY danbrown AT php DOT net: The following
+ is a bugfix provided by (gardan AT gmx DOT de)
+ on 31-MAR-2005 with the following note:
+ "This means: $length should not be even,
+ but divisible by 4. The reason is that in
+ base64-encoding 3 8-bit-chars are represented
+ by 4 6-bit-chars. These 4 chars must not be
+ split between two encoded words, according
+ to RFC-2047.
+ */
+ $length = $length - ($length % 4);
+
+ // encode the string and split it into chunks
+ // with spacers after each chunk
+ $out_str = base64_encode($out_str);
+ $out_str = chunk_split($out_str, $length, $spacer);
+
+ // remove trailing spacer and
+ // add start and end delimiters
+ $spacer = preg_quote($spacer,'/');
+ $out_str = preg_replace("/" . $spacer . "$/", "", $out_str);
+ $out_str = $start . $out_str . $end;
+ }
+ return $out_str;
}
function email_send($addr, $subject, $headers, $item) {
@@ -888,7 +826,7 @@ function email_send($addr, $subject, $headers, $item) {
$part = uniqid("", true);
- $html = prepare_body($item);
+ $html = prepare_body($item);
$headers .= "Mime-Version: 1.0\n";
$headers .= 'Content-Type: multipart/alternative; boundary="=_'.$part.'"'."\n\n";
@@ -912,3 +850,653 @@ function email_send($addr, $subject, $headers, $item) {
logger('notifier: email delivery to ' . $addr);
mail($addr, $subject, $body, $headers);
}
+
+
+
+function discover_by_url($url,$arr = null) {
+ require_once('library/HTML5/Parser.php');
+
+ $x = scrape_feed($url);
+ if(! $x) {
+ if(! $arr)
+ return false;
+ $network = (($arr['network']) ? $arr['network'] : 'unknown');
+ $name = (($arr['name']) ? $arr['name'] : 'unknown');
+ $photo = (($arr['photo']) ? $arr['photo'] : '');
+ $addr = (($arr['addr']) ? $arr['addr'] : '');
+ $guid = $url;
+ }
+
+ $profile = $url;
+
+ logger('scrape_feed results: ' . print_r($x,true));
+
+ if($x['feed_atom'])
+ $guid = $x['feed_atom'];
+ if($x['feed_rss'])
+ $guid = $x['feed_rss'];
+
+ if(! $guid)
+ return false;
+
+
+ // try and discover stuff from the feeed
+
+ require_once('library/simplepie/simplepie.inc');
+ $feed = new SimplePie();
+ $level = 0;
+ $x = z_fetch_url($guid,false,$level,array('novalidate' => true));
+ if(! $x['success']) {
+ logger('probe_url: feed fetch failed for ' . $poll);
+ return false;
+ }
+ $xml = $x['body'];
+ logger('probe_url: fetch feed: ' . $guid . ' returns: ' . $xml, LOGGER_DATA);
+ logger('probe_url: scrape_feed: headers: ' . $x['header'], LOGGER_DATA);
+
+ // Don't try and parse an empty string
+ $feed->set_raw_data(($xml) ? $xml : '<?xml version="1.0" encoding="utf-8" ?><xml></xml>');
+
+ $feed->init();
+ if($feed->error())
+ logger('probe_url: scrape_feed: Error parsing XML: ' . $feed->error());
+
+ $name = unxmlify(trim($feed->get_title()));
+ $photo = $feed->get_image_url();
+ $author = $feed->get_author();
+
+ if($author) {
+ if(! $name)
+ $name = unxmlify(trim($author->get_name()));
+ if(! $name) {
+ $name = trim(unxmlify($author->get_email()));
+ if(strpos($name,'@') !== false)
+ $name = substr($name,0,strpos($name,'@'));
+ }
+ if(! $profile && $author->get_link())
+ $profile = trim(unxmlify($author->get_link()));
+ if(! $photo) {
+ $rawtags = $feed->get_feed_tags( SIMPLEPIE_NAMESPACE_ATOM_10, 'author');
+ if($rawtags) {
+ $elems = $rawtags[0]['child'][SIMPLEPIE_NAMESPACE_ATOM_10];
+ if((x($elems,'link')) && ($elems['link'][0]['attribs']['']['rel'] === 'photo'))
+ $photo = $elems['link'][0]['attribs']['']['href'];
+ }
+ }
+ }
+ else {
+ $item = $feed->get_item(0);
+ if($item) {
+ $author = $item->get_author();
+ if($author) {
+ if(! $name) {
+ $name = trim(unxmlify($author->get_name()));
+ if(! $name)
+ $name = trim(unxmlify($author->get_email()));
+ if(strpos($name,'@') !== false)
+ $name = substr($name,0,strpos($name,'@'));
+ }
+ if(! $profile && $author->get_link())
+ $profile = trim(unxmlify($author->get_link()));
+ }
+ if(! $photo) {
+ $rawmedia = $item->get_item_tags('http://search.yahoo.com/mrss/','thumbnail');
+ if($rawmedia && $rawmedia[0]['attribs']['']['url'])
+ $photo = unxmlify($rawmedia[0]['attribs']['']['url']);
+ }
+ if(! $photo) {
+ $rawtags = $item->get_item_tags( SIMPLEPIE_NAMESPACE_ATOM_10, 'author');
+ if($rawtags) {
+ $elems = $rawtags[0]['child'][SIMPLEPIE_NAMESPACE_ATOM_10];
+ if((x($elems,'link')) && ($elems['link'][0]['attribs']['']['rel'] === 'photo'))
+ $photo = $elems['link'][0]['attribs']['']['href'];
+ }
+ }
+ }
+ }
+ if($poll === $profile)
+ $lnk = $feed->get_permalink();
+ if(isset($lnk) && strlen($lnk))
+ $profile = $lnk;
+
+ if(! $network) {
+ $network = 'rss';
+ }
+
+ if(! $name)
+ $name = notags($feed->get_description());
+
+ if(! $guid)
+ return false;
+
+ $r = q("select * from xchan where xchan_hash = '%s' limit 1",
+ dbesc($guid)
+ );
+ if($r)
+ return true;
+
+ if(! $photo)
+ $photo = z_root() . '/images/rss_icon.png';
+
+ $r = q("insert into xchan ( xchan_hash, xchan_guid, xchan_pubkey, xchan_addr, xchan_url, xchan_name, xchan_network, xchan_instance_url, xchan_name_date ) values ('%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s') ",
+ dbesc($guid),
+ dbesc($guid),
+ dbesc($pubkey),
+ dbesc($addr),
+ dbesc($profile),
+ dbesc($name),
+ dbesc($network),
+ dbesc(z_root()),
+ dbesc(datetime_convert())
+ );
+
+ $photos = import_profile_photo($photo,$guid);
+ $r = q("update xchan set xchan_photo_date = '%s', xchan_photo_l = '%s', xchan_photo_m = '%s', xchan_photo_s = '%s', xchan_photo_mimetype = '%s' where xchan_hash = '%s'",
+ dbesc(datetime_convert()),
+ dbesc($photos[0]),
+ dbesc($photos[1]),
+ dbesc($photos[2]),
+ dbesc($photos[3]),
+ dbesc($guid)
+ );
+ return true;
+
+}
+
+function discover_by_webbie($webbie) {
+ require_once('library/HTML5/Parser.php');
+
+ $webbie = strtolower($webbie);
+
+ $x = webfinger_rfc7033($webbie);
+ if($x && array_key_exists('links',$x) && $x['links']) {
+ foreach($x['links'] as $link) {
+ if(array_key_exists('rel',$link) && $link['rel'] == 'http://purl.org/zot/protocol') {
+ logger('discover_by_webbie: zot found for ' . $webbie, LOGGER_DEBUG);
+ $z = z_fetch_url($link['href']);
+ if($z['success']) {
+ $j = json_decode($z['body'],true);
+ $i = import_xchan($j);
+ return true;
+ }
+ }
+ }
+ }
+
+ $result = array();
+ $network = null;
+ $diaspora = false;
+
+ $diaspora_base = '';
+ $diaspora_guid = '';
+ $diaspora_key = '';
+ $dfrn = false;
+
+ $x = old_webfinger($webbie);
+ if($x) {
+ logger('old_webfinger: ' . print_r($x,true));
+ foreach($x as $link) {
+ if($link['@attributes']['rel'] === NAMESPACE_DFRN)
+ $dfrn = unamp($link['@attributes']['href']);
+ if($link['@attributes']['rel'] === 'salmon')
+ $notify = unamp($link['@attributes']['href']);
+ if($link['@attributes']['rel'] === NAMESPACE_FEED)
+ $poll = unamp($link['@attributes']['href']);
+ if($link['@attributes']['rel'] === 'http://microformats.org/profile/hcard')
+ $hcard = unamp($link['@attributes']['href']);
+ if($link['@attributes']['rel'] === 'http://webfinger.net/rel/profile-page')
+ $profile = unamp($link['@attributes']['href']);
+ if($link['@attributes']['rel'] === 'http://portablecontacts.net/spec/1.0')
+ $poco = unamp($link['@attributes']['href']);
+ if($link['@attributes']['rel'] === 'http://joindiaspora.com/seed_location') {
+ $diaspora_base = unamp($link['@attributes']['href']);
+ $diaspora = true;
+ }
+ if($link['@attributes']['rel'] === 'http://joindiaspora.com/guid') {
+ $diaspora_guid = unamp($link['@attributes']['href']);
+ $diaspora = true;
+ }
+ if($link['@attributes']['rel'] === 'diaspora-public-key') {
+ $diaspora_key = base64_decode(unamp($link['@attributes']['href']));
+ if(strstr($diaspora_key,'RSA '))
+ $pubkey = rsatopem($diaspora_key);
+ else
+ $pubkey = $diaspora_key;
+ $diaspora = true;
+ }
+ }
+
+ if($diaspora && $diaspora_base && $diaspora_guid) {
+ $guid = $diaspora_guid;
+ $diaspora_base = trim($diaspora_base,'/');
+
+ $notify = $diaspora_base . '/receive';
+
+ if(strpos($webbie,'@')) {
+ $addr = str_replace('acct:', '', $webbie);
+ $hostname = substr($webbie,strpos($webbie,'@')+1);
+ }
+ $network = 'diaspora';
+ // until we get a dfrn layer, we'll use diaspora protocols for Friendica,
+ // but give it a different network so we can go back and fix these when we get proper support.
+ // It really should be just 'friendica' but we also want to distinguish
+ // between Friendica sites that we can use D* protocols with and those we can't.
+ // Some Friendica sites will have Diaspora disabled.
+ if($dfrn)
+ $network = 'friendica-over-diaspora';
+ if($hcard) {
+ $vcard = scrape_vcard($hcard);
+ $vcard['nick'] = substr($webbie,0,strpos($webbie,'@'));
+ }
+
+ $r = q("select * from xchan where xchan_hash = '%s' limit 1",
+ dbesc($webbie)
+ );
+ if(! $r) {
+
+ $r = q("insert into xchan ( xchan_hash, xchan_guid, xchan_pubkey, xchan_addr, xchan_url, xchan_name, xchan_network, xchan_instance_url, xchan_name_date ) values ('%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s') ",
+ dbesc($addr),
+ dbesc($guid),
+ dbesc($pubkey),
+ dbesc($addr),
+ dbesc($profile),
+ dbesc($vcard['fn']),
+ dbesc($network),
+ dbesc(z_root()),
+ dbescdate(datetime_convert())
+ );
+ }
+
+ $r = q("select * from hubloc where hubloc_hash = '%s' limit 1",
+ dbesc($webbie)
+ );
+
+ if(! $r) {
+
+ $r = q("insert into hubloc ( hubloc_guid, hubloc_hash, hubloc_addr, hubloc_network, hubloc_url, hubloc_host, hubloc_callback, hubloc_updated, hubloc_flags ) values ('%s','%s','%s','%s','%s','%s','%s','%s', %d)",
+ dbesc($guid),
+ dbesc($addr),
+ dbesc($addr),
+ dbesc($network),
+ dbesc(trim($diaspora_base,'/')),
+ dbesc($hostname),
+ dbesc($notify),
+ dbescdate(datetime_convert()),
+ intval(HUBLOC_FLAGS_PRIMARY)
+ );
+ }
+ $photos = import_profile_photo($vcard['photo'],$addr);
+ $r = q("update xchan set xchan_photo_date = '%s', xchan_photo_l = '%s', xchan_photo_m = '%s', xchan_photo_s = '%s', xchan_photo_mimetype = '%s' where xchan_hash = '%s'",
+ dbescdate(datetime_convert('UTC','UTC',$arr['photo_updated'])),
+ dbesc($photos[0]),
+ dbesc($photos[1]),
+ dbesc($photos[2]),
+ dbesc($photos[3]),
+ dbesc($addr)
+ );
+ return true;
+
+ }
+
+ return false;
+
+/*
+ $vcard['fn'] = notags($vcard['fn']);
+ $vcard['nick'] = str_replace(' ','',notags($vcard['nick']));
+
+ $result['name'] = $vcard['fn'];
+ $result['nick'] = $vcard['nick'];
+ $result['guid'] = $guid;
+ $result['url'] = $profile;
+ $result['hostname'] = $hostname;
+ $result['addr'] = $addr;
+ $result['batch'] = $batch;
+ $result['notify'] = $notify;
+ $result['poll'] = $poll;
+ $result['request'] = $request;
+ $result['confirm'] = $confirm;
+ $result['poco'] = $poco;
+ $result['photo'] = $vcard['photo'];
+ $result['priority'] = $priority;
+ $result['network'] = $network;
+ $result['alias'] = $alias;
+ $result['pubkey'] = $pubkey;
+
+ logger('probe_url: ' . print_r($result,true), LOGGER_DEBUG);
+
+ return $result;
+
+*/
+
+/* Sample Diaspora result.
+
+Array
+(
+ [name] => Mike Macgirvin
+ [nick] => macgirvin
+ [guid] => a9174a618f8d269a
+ [url] => https://joindiaspora.com/u/macgirvin
+ [hostname] => joindiaspora.com
+ [addr] => macgirvin@joindiaspora.com
+ [batch] =>
+ [notify] => https://joindiaspora.com/receive
+ [poll] => https://joindiaspora.com/public/macgirvin.atom
+ [request] =>
+ [confirm] =>
+ [poco] =>
+ [photo] => https://joindiaspora.s3.amazonaws.com/uploads/images/thumb_large_fec4e6eef13ae5e56207.jpg
+ [priority] =>
+ [network] => diaspora
+ [alias] =>
+ [pubkey] => -----BEGIN PUBLIC KEY-----
+MIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAtihtyIuRDWkDpCA+I1UaQ
+jI4S7k625+A7EEJm+pL2ZVSJxeCKiFeEgHBQENjLMNNm8l8F6blxgQqE6ZJ9Spa7f
+tlaXYTRCrfxKzh02L3hR7sNA+JS/nXJaUAIo+IwpIEspmcIRbD9GB7Wv/rr+M28uH
+31EeYyDz8QL6InU/bJmnCdFvmEMBQxJOw1ih9tQp7UNJAbUMCje0WYFzBz7sfcaHL
+OyYcCOqOCBLdGucUoJzTQ9iDBVzB8j1r1JkIHoEb2moUoKUp+tkCylNfd/3IVELF9
+7w1Qjmit3m50OrJk2DQOXvCW9KQxaQNdpRPSwhvemIt98zXSeyZ1q/YjjOwG0DWDq
+AF8aLj3/oQaZndTPy/6tMiZogKaijoxj8xFLuPYDTw5VpKquriVC0z8oxyRbv4t9v
+8JZZ9BXqzmayvY3xZGGp8NulrfjW+me2bKh0/df1aHaBwpZdDTXQ6kqAiS2FfsuPN
+vg57fhfHbL1yJ4oDbNNNeI0kJTGchXqerr8C20khU/cQ2Xt31VyEZtnTB665Ceugv
+kp3t2qd8UpAVKl430S5Quqx2ymfUIdxdW08CEjnoRNEL3aOWOXfbf4gSVaXmPCR4i
+LSIeXnd14lQYK/uxW/8cTFjcmddsKxeXysoQxbSa9VdDK+KkpZdgYXYrTTofXs6v+
+4afAEhRaaY+MCAwEAAQ==
+-----END PUBLIC KEY-----
+
+)
+*/
+
+
+
+
+ }
+}
+
+
+function webfinger_rfc7033($webbie) {
+
+
+ if(! strpos($webbie,'@'))
+ return false;
+ $lhs = substr($webbie,0,strpos($webbie,'@'));
+ $rhs = substr($webbie,strpos($webbie,'@')+1);
+
+ $resource = 'acct:' . $webbie;
+
+ $s = z_fetch_url('https://' . $rhs . '/.well-known/webfinger?resource=' . $resource);
+
+ if($s['success'])
+ $j = json_decode($s['body'],true);
+ else
+ return false;
+ return($j);
+}
+
+
+function old_webfinger($webbie) {
+
+ $host = '';
+ if(strstr($webbie,'@'))
+ $host = substr($webbie,strpos($webbie,'@') + 1);
+
+ if(strlen($host)) {
+ $tpl = fetch_lrdd_template($host);
+ logger('old_webfinger: lrdd template: ' . $tpl,LOGGER_DATA);
+ if(strlen($tpl)) {
+ $pxrd = str_replace('{uri}', urlencode('acct:' . $webbie), $tpl);
+ logger('old_webfinger: pxrd: ' . $pxrd,LOGGER_DATA);
+ $links = fetch_xrd_links($pxrd);
+ if(! count($links)) {
+ // try with double slashes
+ $pxrd = str_replace('{uri}', urlencode('acct://' . $webbie), $tpl);
+ logger('old_webfinger: pxrd: ' . $pxrd,LOGGER_DATA);
+ $links = fetch_xrd_links($pxrd);
+ }
+ return $links;
+ }
+ }
+ return array();
+}
+
+
+function fetch_lrdd_template($host) {
+ $tpl = '';
+
+ $url1 = 'https://' . $host . '/.well-known/host-meta' ;
+ $url2 = 'http://' . $host . '/.well-known/host-meta' ;
+ $links = fetch_xrd_links($url1);
+ logger('fetch_lrdd_template from: ' . $url1, LOGGER_DEBUG);
+ logger('template (https): ' . print_r($links,true),LOGGER_DEBUG);
+ if(! count($links)) {
+ logger('fetch_lrdd_template from: ' . $url2);
+ $links = fetch_xrd_links($url2);
+ logger('template (http): ' . print_r($links,true),LOGGER_DEBUG);
+ }
+ if(count($links)) {
+ foreach($links as $link)
+ if($link['@attributes']['rel'] && $link['@attributes']['rel'] === 'lrdd' && (!$link['@attributes']['type'] || $link['@attributes']['type'] === 'application/xrd+xml'))
+ $tpl = $link['@attributes']['template'];
+ }
+ if(! strpos($tpl,'{uri}'))
+ $tpl = '';
+ return $tpl;
+
+}
+
+
+function fetch_xrd_links($url) {
+
+logger('fetch_xrd_links: ' . $url);
+
+ $redirects = 0;
+ $x = z_fetch_url($url,false,$redirects,array('timeout' => 20));
+
+ if(! $x['success'])
+ return array();
+
+ $xml = $x['body'];
+ logger('fetch_xrd_links: ' . $xml, LOGGER_DATA);
+
+ if ((! $xml) || (! stristr($xml,'<xrd')))
+ return array();
+
+ // fix diaspora's bad xml
+ $xml = str_replace(array('href=&quot;','&quot;/>'),array('href="','"/>'),$xml);
+
+ $h = parse_xml_string($xml);
+ if(! $h)
+ return array();
+
+ $arr = convert_xml_element_to_array($h);
+
+ $links = array();
+
+ if(isset($arr['xrd']['link'])) {
+ $link = $arr['xrd']['link'];
+
+ if(! isset($link[0]))
+ $links = array($link);
+ else
+ $links = $link;
+ }
+ if(isset($arr['xrd']['alias'])) {
+ $alias = $arr['xrd']['alias'];
+ if(! isset($alias[0]))
+ $aliases = array($alias);
+ else
+ $aliases = $alias;
+ if(is_array($aliases) && count($aliases)) {
+ foreach($aliases as $alias) {
+ $links[]['@attributes'] = array('rel' => 'alias' , 'href' => $alias);
+ }
+ }
+ }
+
+ logger('fetch_xrd_links: ' . print_r($links,true), LOGGER_DATA);
+
+ return $links;
+}
+
+
+function scrape_vcard($url) {
+
+ $a = get_app();
+
+ $ret = array();
+
+ logger('scrape_vcard: url=' . $url);
+
+ $x = z_fetch_url($url);
+ if(! $x['success'])
+ return $ret;
+
+ $s = $x['body'];
+
+ if(! $s)
+ return $ret;
+
+ $headers = $x['header'];
+ $lines = explode("\n",$headers);
+ if(count($lines)) {
+ foreach($lines as $line) {
+ // don't try and run feeds through the html5 parser
+ if(stristr($line,'content-type:') && ((stristr($line,'application/atom+xml')) || (stristr($line,'application/rss+xml'))))
+ return ret;
+ }
+ }
+
+ try {
+ $dom = HTML5_Parser::parse($s);
+ } catch (DOMException $e) {
+ logger('scrape_vcard: parse error: ' . $e);
+ }
+
+ if(! $dom)
+ return $ret;
+
+ // Pull out hCard profile elements
+
+ $largest_photo = 0;
+
+ $items = $dom->getElementsByTagName('*');
+ foreach($items as $item) {
+ if(attribute_contains($item->getAttribute('class'), 'vcard')) {
+ $level2 = $item->getElementsByTagName('*');
+ foreach($level2 as $x) {
+ if(attribute_contains($x->getAttribute('class'),'fn'))
+ $ret['fn'] = $x->textContent;
+ if((attribute_contains($x->getAttribute('class'),'photo'))
+ || (attribute_contains($x->getAttribute('class'),'avatar'))) {
+ $size = intval($x->getAttribute('width'));
+ if(($size > $largest_photo) || (! $largest_photo)) {
+ $ret['photo'] = $x->getAttribute('src');
+ $largest_photo = $size;
+ }
+ }
+ if((attribute_contains($x->getAttribute('class'),'nickname'))
+ || (attribute_contains($x->getAttribute('class'),'uid'))) {
+ $ret['nick'] = $x->textContent;
+ }
+ }
+ }
+ }
+
+ return $ret;
+}
+
+
+
+function scrape_feed($url) {
+
+ $a = get_app();
+
+ $ret = array();
+ $level = 0;
+ $x = z_fetch_url($url,false,$level,array('novalidate' => true));
+
+ if(! $x['success'])
+ return $ret;
+
+ $headers = $x['header'];
+ $code = $x['return_code'];
+ $s = $x['body'];
+
+ logger('scrape_feed: returns: ' . $code . ' headers=' . $headers, LOGGER_DEBUG);
+
+ if(! $s) {
+ logger('scrape_feed: no data returned for ' . $url);
+ return $ret;
+ }
+
+
+ $lines = explode("\n",$headers);
+ if(count($lines)) {
+ foreach($lines as $line) {
+ if(stristr($line,'content-type:')) {
+ if(stristr($line,'application/atom+xml') || stristr($s,'<feed')) {
+ $ret['feed_atom'] = $url;
+ return $ret;
+ }
+ if(stristr($line,'application/rss+xml') || stristr($s,'<rss')) {
+ $ret['feed_rss'] = $url;
+ return $ret;
+ }
+ }
+ }
+ // perhaps an RSS version 1 feed with a generic or incorrect content-type?
+ if(stristr($s,'</item>')) {
+ $ret['feed_rss'] = $url;
+ return $ret;
+ }
+ }
+
+ try {
+ $dom = HTML5_Parser::parse($s);
+ } catch (DOMException $e) {
+ logger('scrape_feed: parse error: ' . $e);
+ }
+
+ if(! $dom) {
+ logger('scrape_feed: failed to parse.');
+ return $ret;
+ }
+
+
+ $head = $dom->getElementsByTagName('base');
+ if($head) {
+ foreach($head as $head0) {
+ $basename = $head0->getAttribute('href');
+ break;
+ }
+ }
+ if(! $basename)
+ $basename = implode('/', array_slice(explode('/',$url),0,3)) . '/';
+
+ $items = $dom->getElementsByTagName('link');
+
+ // get Atom/RSS link elements, take the first one of either.
+
+ if($items) {
+ foreach($items as $item) {
+ $x = $item->getAttribute('rel');
+ if(($x === 'alternate') && ($item->getAttribute('type') === 'application/atom+xml')) {
+ if(! x($ret,'feed_atom'))
+ $ret['feed_atom'] = $item->getAttribute('href');
+ }
+ if(($x === 'alternate') && ($item->getAttribute('type') === 'application/rss+xml')) {
+ if(! x($ret,'feed_rss'))
+ $ret['feed_rss'] = $item->getAttribute('href');
+ }
+ }
+ }
+
+ // Drupal and perhaps others only provide relative URL's. Turn them into absolute.
+
+ if(x($ret,'feed_atom') && (! strstr($ret['feed_atom'],'://')))
+ $ret['feed_atom'] = $basename . $ret['feed_atom'];
+ if(x($ret,'feed_rss') && (! strstr($ret['feed_rss'],'://')))
+ $ret['feed_rss'] = $basename . $ret['feed_rss'];
+
+ return $ret;
+}
+
diff --git a/include/notifier.php b/include/notifier.php
index 9d5c7cb8e..e1eb0c554 100644
--- a/include/notifier.php
+++ b/include/notifier.php
@@ -57,6 +57,8 @@ require_once('include/html2plain.php');
* purge_all channel_id
* expire channel_id
* relay item_id (item was relayed to owner, we will deliver it as owner)
+ * location channel_id
+ * request channel_id xchan_hash message_id
*
*/
@@ -97,34 +99,39 @@ function notifier_run($argv, $argc){
// Get the recipient
$r = q("select abook.*, hubloc.* from abook
left join hubloc on hubloc_hash = abook_xchan
- where abook_id = %d and not ( abook_flags & %d ) limit 1",
+ where abook_id = %d and not ( abook_flags & %d )>0 limit 1",
intval($item_id),
intval(ABOOK_FLAG_SELF)
);
if($r) {
// Get the sender
- $s = q("select * from channel where channel_id = %d limit 1",
+ $s = q("select * from channel left join xchan on channel_hash = xchan_hash where channel_id = %d limit 1",
intval($r[0]['abook_channel'])
);
if($s) {
-
- // send a refresh message to each hub they have registered here
- $h = q("select * from hubloc where hubloc_hash = '%s'",
- dbesc($r[0]['hubloc_hash'])
- );
- if($h) {
- foreach($h as $hh) {
- $data = zot_build_packet($s[0],'refresh',array(array(
- 'guid' => $hh['hubloc_guid'],
- 'guid_sig' => $hh['hubloc_guid_sig'],
- 'url' => $hh['hubloc_url'])
- ));
- if($data) {
- $result = zot_zot($hh['hubloc_callback'],$data);
+ if($r[0]['hubloc_network'] === 'diaspora' || $r[0]['hubloc_network'] === 'friendica-over-diaspora') {
+ require_once('include/diaspora.php');
+ diaspora_share($s[0],$r[0]);
+ }
+ else {
+ // send a refresh message to each hub they have registered here
+ $h = q("select * from hubloc where hubloc_hash = '%s'",
+ dbesc($r[0]['hubloc_hash'])
+ );
+ if($h) {
+ foreach($h as $hh) {
+ $data = zot_build_packet($s[0],'refresh',array(array(
+ 'guid' => $hh['hubloc_guid'],
+ 'guid_sig' => $hh['hubloc_guid_sig'],
+ 'url' => $hh['hubloc_url'])
+ ));
+ if($data) {
+ $result = zot_zot($hh['hubloc_callback'],$data);
// zot_queue_item is not yet written
// if(! $result['success'])
// zot_queue_item();
+ }
}
}
}
@@ -136,9 +143,11 @@ function notifier_run($argv, $argc){
$expire = false;
+ $request = false;
$mail = false;
$fsuggest = false;
$top_level = false;
+ $location = false;
$recipients = array();
$url_recipients = array();
$normal_mode = true;
@@ -151,7 +160,7 @@ function notifier_run($argv, $argc){
$message = q("SELECT * FROM `mail` WHERE `id` = %d LIMIT 1",
intval($item_id)
);
- if(! count($message)){
+ if(! $message) {
return;
}
xchan_mail_query($message[0]);
@@ -168,6 +177,22 @@ function notifier_run($argv, $argc){
$channel = $s[0];
}
+ elseif($cmd === 'request') {
+ $channel_id = $item_id;
+ $xchan = $argv[3];
+ $request_message_id = $argv[4];
+
+ $s = q("select * from channel where channel_id = %d limit 1",
+ intval($channel_id)
+ );
+ if($s)
+ $channel = $s[0];
+
+ $private = true;
+ $recipients[] = $xchan;
+ $packet_type = 'request';
+ $normal_mode = false;
+ }
elseif($cmd === 'expire') {
// FIXME
@@ -180,11 +205,12 @@ function notifier_run($argv, $argc){
$normal_mode = false;
$expire = true;
- $items = q("SELECT * FROM item WHERE uid = %d AND ( item_flags & %d )
- AND ( item_restrict & %d ) AND `changed` > UTC_TIMESTAMP() - INTERVAL 10 MINUTE",
+ $items = q("SELECT * FROM item WHERE uid = %d AND ( item_flags & %d )>0
+ AND ( item_restrict & %d )>0 AND `changed` > %s - INTERVAL %s",
intval($item_id),
intval(ITEM_WALL),
- intval(ITEM_DELETED)
+ intval(ITEM_DELETED),
+ db_utcnow(), db_quoteinterval('10 MINUTE')
);
$uid = $item_id;
$item_id = 0;
@@ -225,6 +251,30 @@ function notifier_run($argv, $argc){
$private = false;
$packet_type = 'refresh';
}
+ elseif($cmd === 'location') {
+ logger('notifier: location: ' . $item_id);
+ $s = q("select * from channel where channel_id = %d limit 1",
+ intval($item_id)
+ );
+ if($s)
+ $channel = $s[0];
+ $uid = $item_id;
+ $recipients = array();
+ $r = q("select abook_xchan from abook where abook_channel = %d",
+ intval($item_id)
+ );
+ if($r) {
+ foreach($r as $rr) {
+ $recipients[] = $rr['abook_xchan'];
+ }
+ }
+
+ $encoded_item = array('locations' => zot_encode_locations($channel),'type' => 'location', 'encoding' => 'zot');
+ $target_item = array('aid' => $channel['channel_account_id'],'uid' => $channel['channel_id']);
+ $private = false;
+ $packet_type = 'location';
+ $location = true;
+ }
elseif($cmd === 'purge_all') {
logger('notifier: purge_all: ' . $item_id);
$s = q("select * from channel where channel_id = %d limit 1",
@@ -366,6 +416,8 @@ function notifier_run($argv, $argc){
}
+ $walltowall = (($top_level_post && $channel['xchan_hash'] === $target_item['author_xchan']) ? true : false);
+
// Generic delivery section, we have an encoded item and recipients
// Now start the delivery process
@@ -382,7 +434,7 @@ function notifier_run($argv, $argc){
$env_recips = (($private) ? array() : null);
- $details = q("select xchan_hash, xchan_instance_url, xchan_addr, xchan_guid, xchan_guid_sig from xchan where xchan_hash in (" . implode(',',$recipients) . ")");
+ $details = q("select xchan_hash, xchan_instance_url, xchan_network, xchan_addr, xchan_guid, xchan_guid_sig from xchan where xchan_hash in (" . implode(',',$recipients) . ")");
$recip_list = array();
@@ -405,7 +457,7 @@ function notifier_run($argv, $argc){
$recip_list[] = $d['xchan_addr'] . ' (' . $d['xchan_hash'] . ')';
if($private)
- $env_recips[] = array('guid' => $d['xchan_guid'],'guid_sig' => $d['xchan_guid_sig']);
+ $env_recips[] = array('guid' => $d['xchan_guid'],'guid_sig' => $d['xchan_guid_sig'],'hash' => $d['xchan_hash']);
}
}
@@ -422,8 +474,10 @@ function notifier_run($argv, $argc){
// for public posts always include our own hub
+// this shouldn't be needed any more. collect_recipients should take care of it.
+// $sql_extra = (($private) ? "" : " or hubloc_url = '" . dbesc(z_root()) . "' ");
- $sql_extra = (($private) ? "" : " or hubloc_url = '" . dbesc(z_root()) . "' ");
+ logger('notifier: hub choice: ' . intval($relay_to_owner) . ' ' . intval($private) . ' ' . $cmd, LOGGER_DEBUG);
if($relay_to_owner && (! $private) && ($cmd !== 'relay')) {
@@ -438,29 +492,52 @@ function notifier_run($argv, $argc){
// aren't the owner or author.
- $r = q("select hubloc_sitekey, hubloc_flags, hubloc_callback, hubloc_host from hubloc
- where hubloc_hash in (" . implode(',',$recipients) . ") group by hubloc_sitekey order by hubloc_connected desc limit 1");
+ $r = q("select hubloc_guid, hubloc_url, hubloc_sitekey, hubloc_network, hubloc_flags, hubloc_callback, hubloc_host from hubloc
+ where hubloc_hash in (" . implode(',',$recipients) . ") order by hubloc_connected desc limit 1");
}
else {
- $r = q("select hubloc_sitekey, hubloc_flags, hubloc_callback, hubloc_host from hubloc
- where hubloc_hash in (" . implode(',',$recipients) . ") $sql_extra group by hubloc_sitekey");
- }
+ $r = q("select hubloc_guid, hubloc_url, hubloc_sitekey, hubloc_network, hubloc_flags, hubloc_callback, hubloc_host from hubloc
+ where hubloc_hash in (" . implode(',',$recipients) . ") and not (hubloc_flags & %d) > 0 and not (hubloc_status & %d) > 0",
+ intval(HUBLOC_FLAGS_DELETED),
+ intval(HUBLOC_OFFLINE)
+ );
+ }
if(! $r) {
logger('notifier: no hubs');
return;
}
+
$hubs = $r;
- $hublist = array();
- $keys = array();
+
+ /**
+ * Reduce the hubs to those that are unique. For zot hubs, we need to verify uniqueness by the sitekey, since it may have been
+ * a re-install which has not yet been detected and pruned.
+ * For other networks which don't have or require sitekeys, we'll have to use the URL
+ */
+
+
+ $hublist = array(); // this provides an easily printable list for the logs
+ $dhubs = array(); // delivery hubs where we store our resulting unique array
+ $keys = array(); // array of keys to check uniquness for zot hubs
+ $urls = array(); // array of urls to check uniqueness of hubs from other networks
+
foreach($hubs as $hub) {
- // don't try to deliver to deleted hublocs - and inexplicably SQL "distinct" and "group by"
- // both return records with duplicate keys in rare circumstances
- if((! ($hub['hubloc_flags'] & HUBLOC_FLAGS_DELETED)) && (! in_array($hub['hubloc_sitekey'],$keys))) {
- $hublist[] = $hub['hubloc_host'];
- $keys[] = $hub['hubloc_sitekey'];
+ if($hub['hubloc_network'] == 'zot') {
+ if(! in_array($hub['hubloc_sitekey'],$keys)) {
+ $hublist[] = $hub['hubloc_host'];
+ $dhubs[] = $hub;
+ $keys[] = $hub['hubloc_sitekey'];
+ }
+ }
+ else {
+ if(! in_array($hub['hubloc_url'],$urls)) {
+ $hublist[] = $hub['hubloc_host'];
+ $dhubs[] = $hub;
+ $urls[] = $hub['hubloc_url'];
+ }
}
}
@@ -476,7 +553,7 @@ function notifier_run($argv, $argc){
$deliver = array();
- foreach($hubs as $hub) {
+ foreach($dhubs as $hub) {
if(defined('DIASPORA_RELIABILITY_EMULATION')) {
$cointoss = mt_rand(0,2);
@@ -485,6 +562,44 @@ function notifier_run($argv, $argc){
}
}
+
+ if($hub['hubloc_network'] === 'diaspora' || $hub['hubloc_network'] === 'friendica-over-diaspora') {
+ if(! get_config('system','diaspora_enabled'))
+ continue;
+
+ require_once('include/diaspora.php');
+
+ diaspora_process_outbound(array(
+ 'channel' => $channel,
+ 'env_recips' => $env_recips,
+ 'recipients' => $recipients,
+ 'item' => $item,
+ 'target_item' => $target_item,
+ 'hub' => $hub,
+ 'top_level_post' => $top_level_post,
+ 'private' => $private,
+ 'followup' => $followup,
+ 'relay_to_owner' => $relay_to_owner,
+ 'uplink' => $uplink,
+ 'cmd' => $cmd,
+ 'expire' => $expire,
+ 'mail' => $mail,
+ 'location' => $location,
+ 'fsuggest' => $fsuggest,
+ 'request' => $request,
+ 'normal_mode' => $normal_mode,
+ 'packet_type' => $packet_type,
+ 'walltowall' => $walltowall
+ ));
+
+ continue;
+
+ }
+
+
+ // default: zot protocol
+
+
$hash = random_string();
if($packet_type === 'refresh' || $packet_type === 'purge') {
$n = zot_build_packet($channel,$packet_type);
@@ -501,6 +616,21 @@ function notifier_run($argv, $argc){
dbesc('')
);
}
+ elseif($packet_type === 'request') {
+ $n = zot_build_packet($channel,'request',$env_recips,$hub['hubloc_sitekey'],$hash,array('message_id' => $request_message_id));
+ q("insert into outq ( outq_hash, outq_account, outq_channel, outq_driver, outq_posturl, outq_async, outq_created, outq_updated, outq_notify, outq_msg ) values ( '%s', %d, %d, '%s', '%s', %d, '%s', '%s', '%s', '%s' )",
+ dbesc($hash),
+ intval($channel['channel_account_id']),
+ intval($channel['channel_id']),
+ dbesc('zot'),
+ dbesc($hub['hubloc_callback']),
+ intval(1),
+ dbesc(datetime_convert()),
+ dbesc(datetime_convert()),
+ dbesc($n),
+ dbesc('')
+ );
+ }
else {
$n = zot_build_packet($channel,'notify',$env_recips,(($private) ? $hub['hubloc_sitekey'] : null),$hash);
q("insert into outq ( outq_hash, outq_account, outq_channel, outq_driver, outq_posturl, outq_async, outq_created, outq_updated, outq_notify, outq_msg ) values ( '%s', %d, %d, '%s', '%s', %d, '%s', '%s', '%s', '%s' )",
diff --git a/include/oembed.php b/include/oembed.php
index de3a6edc8..e08b287d1 100755
--- a/include/oembed.php
+++ b/include/oembed.php
@@ -56,6 +56,15 @@ function oembed_fetch_url($embedurl){
$txt = $x['body'];
break;
}
+ // soundcloud is now using text/json+oembed instead of application/json+oembed,
+ // others may be also
+ $entries = $xpath->query("//link[@type='text/json+oembed']");
+ foreach($entries as $e){
+ $href = $e->getAttributeNode("href")->nodeValue;
+ $x = z_fetch_url($href . '&maxwidth=' . $a->videowidth);
+ $txt = $x['body'];
+ break;
+ }
}
}
}
@@ -83,7 +92,8 @@ function oembed_fetch_url($embedurl){
function oembed_format_object($j){
$a = get_app();
$embedurl = $j->embedurl;
- $jhtml = oembed_iframe($j->embedurl,(isset($j->width) ? $j->width : null), (isset($j->height) ? $j->height : null) );
+
+ $jhtml = oembed_iframe($j->embedurl,(isset($j->width) ? $j->width : null), (isset($j->height) ? $j->height : null));
$ret="<span class='oembed ".$j->type."'>";
switch ($j->type) {
@@ -118,7 +128,6 @@ function oembed_format_object($j){
}; break;
case "photo": {
$ret.= "<img width='".$j->width."' src='".$j->url."'>";
- //$ret.= "<img width='".$j->width."' height='".$j->height."' src='".$j->url."'>";
$ret.="<br>";
}; break;
case "link": {
@@ -154,13 +163,12 @@ function oembed_iframe($src,$width,$height) {
$height = intval($height) + 80;
$width = intval($width) + 40;
- $a = get_app();
-
- $sandbox = ((strpos($src,get_app()->get_hostname())) ? ' sandbox="allow-scripts" ' : '');
+ $s = z_root() . '/oembed/' . base64url_encode($src);
- $s = $a->get_baseurl()."/oembed/".base64url_encode($src);
+ // Make sure any children are sandboxed within their own iframe.
- return '<iframe ' . $sandbox . ' height="' . $height . '" width="' . $width . '" src="' . $s . '" frameborder="no" >' . t('Embedded content') . '</iframe>';
+ return '<iframe height="' . $height . '" width="' . $width . '" src="' . $s . '" frameborder="no" >'
+ . t('Embedded content') . '</iframe>';
}
diff --git a/include/onedirsync.php b/include/onedirsync.php
index 8ae1df5e5..a1450e183 100644
--- a/include/onedirsync.php
+++ b/include/onedirsync.php
@@ -35,13 +35,13 @@ function onedirsync_run($argv, $argc){
// (where we received this update from) ?
// If we have, we don't need to do anything except mark any older entries updated
- $x = q("select * from updates where ud_addr = '%s' and ud_date > '%s' and ( ud_flags & %d ) order by ud_date desc limit 1",
+ $x = q("select * from updates where ud_addr = '%s' and ud_date > '%s' and ( ud_flags & %d )>0 order by ud_date desc limit 1",
dbesc($r[0]['ud_addr']),
dbesc($r[0]['ud_date']),
intval(UPDATE_FLAGS_UPDATED)
);
if($x) {
- $y = q("update updates set ud_flags = ( ud_flags | %d ) where ud_addr = '%s' and not ( ud_flags & %d ) and ud_date < '%s' ",
+ $y = q("update updates set ud_flags = ( ud_flags | %d ) where ud_addr = '%s' and ( ud_flags & %d ) = 0 and ud_date < '%s' ",
intval(UPDATE_FLAGS_UPDATED),
dbesc($r[0]['ud_addr']),
intval(UPDATE_FLAGS_UPDATED),
@@ -50,6 +50,28 @@ function onedirsync_run($argv, $argc){
return;
}
+ // ignore doing an update if this ud_addr refers to a known dead hubloc
+
+ $h = q("select * from hubloc where hubloc_addr = '%s' limit 1",
+ dbesc($r[0]['ud_addr'])
+ );
+ if(($h) && ($h[0]['hubloc_status'] & HUBLOC_OFFLINE)) {
+ $y = q("update updates set ud_flags = ( ud_flags | %d ) where ud_addr = '%s' and ( ud_flags & %d ) = 0 and ud_date < '%s' ",
+ intval(UPDATE_FLAGS_UPDATED),
+ dbesc($r[0]['ud_addr']),
+ intval(UPDATE_FLAGS_UPDATED),
+ dbesc($x[0]['ud_date'])
+ );
+
+ return;
+ }
+
+ // we might have to pull this out some day, but for now update_directory_entry()
+ // runs zot_finger() and is kind of zot specific
+
+ if($h && $h[0]['hubloc_network'] !== 'zot')
+ return;
+
update_directory_entry($r[0]);
return;
diff --git a/include/onepoll.php b/include/onepoll.php
index e81d8bcf7..095edd095 100644
--- a/include/onepoll.php
+++ b/include/onepoll.php
@@ -15,12 +15,6 @@ function onepoll_run($argv, $argc){
logger('onepoll: start');
- $manual_id = 0;
- $generation = 0;
-
- $force = false;
- $restart = false;
-
if(($argc > 1) && (intval($argv[1])))
$contact_id = intval($argv[1]);
@@ -28,17 +22,19 @@ function onepoll_run($argv, $argc){
logger('onepoll: no contact');
return;
}
-
+
$d = datetime_convert();
$contacts = q("SELECT abook.*, xchan.*, account.*
FROM abook LEFT JOIN account on abook_account = account_id left join xchan on xchan_hash = abook_xchan
where abook_id = %d
- AND (( abook_flags & %d ) OR ( abook_flags = %d ))
+ AND (( abook_flags & %d )>0 OR ( abook_flags = %d ))
+ AND NOT ( abook_flags & %d )>0
AND (( account_flags = %d ) OR ( account_flags = %d )) limit 1",
intval($contact_id),
- intval(ABOOK_FLAG_HIDDEN|ABOOK_FLAG_PENDING|ABOOK_FLAG_UNCONNECTED),
+ intval(ABOOK_FLAG_HIDDEN|ABOOK_FLAG_PENDING|ABOOK_FLAG_UNCONNECTED|ABOOK_FLAG_FEED),
intval(0),
+ intval(ABOOK_FLAG_ARCHIVED|ABOOK_FLAG_BLOCKED|ABOOK_FLAG_IGNORED),
intval(ACCOUNT_OK),
intval(ACCOUNT_UNVERIFIED)
);
@@ -65,28 +61,42 @@ function onepoll_run($argv, $argc){
logger("onepoll: poll: ({$contact['id']}) IMPORTER: {$importer['xchan_name']}, CONTACT: {$contact['xchan_name']}");
- $last_update = ((($contact['abook_updated'] === $contact['abook_created']) || ($contact['abook_updated'] === '0000-00-00 00:00:00'))
+ $last_update = ((($contact['abook_updated'] === $contact['abook_created']) || ($contact['abook_updated'] === NULL_DATE))
? datetime_convert('UTC','UTC','now - 7 days')
: datetime_convert('UTC','UTC',$contact['abook_updated'] . ' - 2 days')
);
+ if($contact['xchan_network'] === 'rss') {
+ logger('onepoll: processing feed ' . $contact['xchan_name'], LOGGER_DEBUG);
+ handle_feed($importer['channel_id'],$contact_id,$contact['xchan_hash']);
+ q("update abook set abook_connected = '%s' where abook_id = %d",
+ dbesc(datetime_convert()),
+ intval($contact['abook_id'])
+ );
+ return;
+ }
+
+ if($contact['xchan_network'] !== 'zot')
+ return;
+
// update permissions
$x = zot_refresh($contact,$importer);
$responded = false;
- $updated = datetime_convert();
+ $updated = datetime_convert();
+ $connected = datetime_convert();
if(! $x) {
// mark for death by not updating abook_connected, this is caught in include/poller.php
- q("update abook set abook_updated = '%s' where abook_id = %d limit 1",
+ q("update abook set abook_updated = '%s' where abook_id = %d",
dbesc($updated),
intval($contact['abook_id'])
);
}
else {
- q("update abook set abook_updated = '%s', abook_connected = '%s' where abook_id = %d limit 1",
- dbesc($updated),
+ q("update abook set abook_updated = '%s', abook_connected = '%s' where abook_id = %d",
dbesc($updated),
+ dbesc($connected),
intval($contact['abook_id'])
);
$responded = true;
@@ -105,7 +115,9 @@ function onepoll_run($argv, $argc){
if($fetch_feed) {
$feedurl = str_replace('/poco/','/zotfeed/',$contact['xchan_connurl']);
- $x = z_fetch_url($feedurl . '?f=&mindate=' . urlencode($last_update));
+ $feedurl .= '?f=&mindate=' . urlencode($last_update);
+
+ $x = z_fetch_url($feedurl);
logger('feed_update: ' . print_r($x,true), LOGGER_DATA);
@@ -120,7 +132,7 @@ function onepoll_run($argv, $argc){
foreach($j['messages'] as $message) {
$results = process_delivery(array('hash' => $contact['xchan_hash']), get_item_elements($message),
array(array('hash' => $importer['xchan_hash'])), false);
- logger('onepoll: feed_update: process_delivery: ' . print_r($results,true));
+ logger('onepoll: feed_update: process_delivery: ' . print_r($results,true), LOGGER_DATA);
$total ++;
}
logger("onepoll: $total messages processed");
@@ -129,14 +141,13 @@ function onepoll_run($argv, $argc){
}
- // fetch some items
- // set last updated timestamp
-
+ // update the poco details for this connection
if($contact['xchan_connurl']) {
$r = q("SELECT xlink_id from xlink
- where xlink_xchan = '%s' and xlink_updated > UTC_TIMESTAMP() - INTERVAL 1 DAY limit 1",
- intval($contact['xchan_hash'])
+ where xlink_xchan = '%s' and xlink_updated > %s - INTERVAL %s limit 1",
+ intval($contact['xchan_hash']),
+ db_utcnow(), db_quoteinterval('1 DAY')
);
if(! $r) {
poco_load($contact['xchan_hash'],$contact['xchan_connurl']);
diff --git a/include/permissions.php b/include/permissions.php
index facba037f..ccbde1a7c 100644
--- a/include/permissions.php
+++ b/include/permissions.php
@@ -1,6 +1,19 @@
-<?php /** @file */
-
+<?php
+/**
+ * @file incldue/permissions.php
+ *
+ * This file conntains functions to check and work with permissions.
+ */
+/**
+ * @brief Return an array with all available permissions.
+ *
+ * These are channel specific permissions.
+ * The list of available permissions can get manipulated by the <i>hook</i>
+ * <b>global_permissions</b>.
+ *
+ * @return array associative array containing all permissions
+ */
function get_perms() {
// thinking about making element[2] a bitmask instead of boolean so that we can provide a list of applicable selections
@@ -10,12 +23,12 @@ function get_perms() {
$global_perms = array(
// Read only permissions
- 'view_stream' => array('channel_r_stream', intval(PERMS_R_STREAM), true, t('Can view my "public" stream and posts'), ''),
- 'view_profile' => array('channel_r_profile', intval(PERMS_R_PROFILE), true, t('Can view my "public" channel profile'), ''),
- 'view_photos' => array('channel_r_photos', intval(PERMS_R_PHOTOS), true, t('Can view my "public" photo albums'), ''),
- 'view_contacts' => array('channel_r_abook', intval(PERMS_R_ABOOK), true, t('Can view my "public" address book'), ''),
- 'view_storage' => array('channel_r_storage', intval(PERMS_R_STORAGE), true, t('Can view my "public" file storage'), ''),
- 'view_pages' => array('channel_r_pages', intval(PERMS_R_PAGES), true, t('Can view my "public" pages'), ''),
+ 'view_stream' => array('channel_r_stream', intval(PERMS_R_STREAM), true, t('Can view my normal stream and posts'), ''),
+ 'view_profile' => array('channel_r_profile', intval(PERMS_R_PROFILE), true, t('Can view my default channel profile'), ''),
+ 'view_photos' => array('channel_r_photos', intval(PERMS_R_PHOTOS), true, t('Can view my photo albums'), ''),
+ 'view_contacts' => array('channel_r_abook', intval(PERMS_R_ABOOK), true, t('Can view my connections'), ''),
+ 'view_storage' => array('channel_r_storage', intval(PERMS_R_STORAGE), true, t('Can view my file storage'), ''),
+ 'view_pages' => array('channel_r_pages', intval(PERMS_R_PAGES), true, t('Can view my webpages'), ''),
// Write permissions
'send_stream' => array('channel_w_stream', intval(PERMS_W_STREAM), false, t('Can send me their channel stream and posts'), ''),
@@ -23,19 +36,20 @@ function get_perms() {
'post_comments' => array('channel_w_comment', intval(PERMS_W_COMMENT), false, t('Can comment on or like my posts'), ''),
'post_mail' => array('channel_w_mail', intval(PERMS_W_MAIL), false, t('Can send me private mail messages'), ''),
'post_photos' => array('channel_w_photos', intval(PERMS_W_PHOTOS), false, t('Can post photos to my photo albums'), ''),
- 'post_like' => array('channel_w_like', intval(PERMS_W_LIKE), false, t('Can like/dislike stuff'), 'Profiles and things other than posts/comments'),
+ 'post_like' => array('channel_w_like', intval(PERMS_W_LIKE), false, t('Can like/dislike stuff'), t('Profiles and things other than posts/comments')),
'tag_deliver' => array('channel_w_tagwall', intval(PERMS_W_TAGWALL), false, t('Can forward to all my channel contacts via post @mentions'), t('Advanced - useful for creating group forum channels')),
'chat' => array('channel_w_chat', intval(PERMS_W_CHAT), false, t('Can chat with me (when available)'), t('')),
- 'write_storage' => array('channel_w_storage', intval(PERMS_W_STORAGE), false, t('Can write to my "public" file storage'), ''),
- 'write_pages' => array('channel_w_pages', intval(PERMS_W_PAGES), false, t('Can edit my "public" pages'), ''),
+ 'write_storage' => array('channel_w_storage', intval(PERMS_W_STORAGE), false, t('Can write to my file storage'), ''),
+ 'write_pages' => array('channel_w_pages', intval(PERMS_W_PAGES), false, t('Can edit my webpages'), ''),
- 'republish' => array('channel_a_republish', intval(PERMS_A_REPUBLISH), false, t('Can source my "public" posts in derived channels'), t('Somewhat advanced - very useful in open communities')),
+ 'republish' => array('channel_a_republish', intval(PERMS_A_REPUBLISH), false, t('Can source my public posts in derived channels'), t('Somewhat advanced - very useful in open communities')),
- 'delegate' => array('channel_a_delegate', intval(PERMS_A_DELEGATE), false, t('Can administer my channel resources'), t('Extremely advanced. Leave this alone unless you know what you are doing')),
+ 'delegate' => array('channel_a_delegate', intval(PERMS_A_DELEGATE), false, t('Can administer my channel resources'), t('Extremely advanced. Leave this alone unless you know what you are doing')),
);
$ret = array('global_permissions' => $global_perms);
- call_hooks('global_permissions',$ret);
+ call_hooks('global_permissions', $ret);
+
return $ret['global_permissions'];
}
@@ -43,13 +57,13 @@ function get_perms() {
/**
* get_all_perms($uid,$observer_xchan)
*
- * @param $uid : The channel_id associated with the resource owner
- * @param $observer_xchan: The xchan_hash representing the observer
+ * @param int $uid The channel_id associated with the resource owner
+ * @param string $observer_xchan The xchan_hash representing the observer
+ * @param bool $internal_use (default true)
*
- * @returns: array of all permissions, key is permission name, value is true or false
+ * @returns array of all permissions, key is permission name, value is true or false
*/
-
-function get_all_perms($uid,$observer_xchan,$internal_use = true) {
+function get_all_perms($uid, $observer_xchan, $internal_use = true) {
$global_perms = get_perms();
@@ -85,7 +99,6 @@ function get_all_perms($uid,$observer_xchan,$internal_use = true) {
continue;
}
-
// Next we're going to check for blocked or ignored contacts.
// These take priority over all other settings.
@@ -94,10 +107,10 @@ function get_all_perms($uid,$observer_xchan,$internal_use = true) {
$ret[$perm_name] = true;
continue;
}
-
+
if(! $abook_checked) {
$x = q("select abook_my_perms, abook_flags, xchan_network from abook left join xchan on abook_xchan = xchan_hash
- where abook_channel = %d and abook_xchan = '%s' and not ( abook_flags & %d ) limit 1",
+ where abook_channel = %d and abook_xchan = '%s' and not ( abook_flags & %d )>0 limit 1",
intval($uid),
dbesc($observer_xchan),
intval(ABOOK_FLAG_SELF)
@@ -105,7 +118,7 @@ function get_all_perms($uid,$observer_xchan,$internal_use = true) {
if(! $x) {
// not in address book, see if they've got an xchan
$y = q("select xchan_network from xchan where xchan_hash = '%s' limit 1",
- dbesc($observer_xchan)
+ dbesc($observer_xchan)
);
}
@@ -113,7 +126,7 @@ function get_all_perms($uid,$observer_xchan,$internal_use = true) {
}
// If they're blocked - they can't read or write
-
+
if(($x) && ($x[0]['abook_flags'] & ABOOK_FLAG_BLOCKED)) {
$ret[$perm_name] = false;
continue;
@@ -130,7 +143,7 @@ function get_all_perms($uid,$observer_xchan,$internal_use = true) {
// system is blocked to anybody who is not authenticated
- if((! $observer_xchan) && intval(get_config('system','block_public'))) {
+ if((! $observer_xchan) && intval(get_config('system', 'block_public'))) {
$ret[$perm_name] = false;
continue;
}
@@ -177,14 +190,14 @@ function get_all_perms($uid,$observer_xchan,$internal_use = true) {
$onsite_checked = true;
}
-
+
if($c)
$ret[$perm_name] = true;
else
$ret[$perm_name] = false;
continue;
- }
+ }
// From here on we require that the observer be a connection and
// handle whether we're allowing any, approved or specific ones
@@ -226,7 +239,6 @@ function get_all_perms($uid,$observer_xchan,$internal_use = true) {
$ret[$perm_name] = false;
continue;
-
}
$arr = array(
@@ -235,11 +247,23 @@ function get_all_perms($uid,$observer_xchan,$internal_use = true) {
'permissions' => $ret);
call_hooks('get_all_perms',$arr);
+
return $arr['permissions'];
}
-
-function perm_is_allowed($uid,$observer_xchan,$permission) {
+/**
+ * @brief Checks if given permission is allowed for given observer on a channel.
+ *
+ * Checks if the given observer with the hash $observer_xchan has permission
+ * $permission on channel_id $uid.
+ * $permission is one defined in get_perms();
+ *
+ * @param int $uid The channel_id associated with the resource owner
+ * @param string $observer_xchan The xchan_hash representing the observer
+ * @param string $permission
+ * @return bool true if permission is allowed for observer on channel
+ */
+function perm_is_allowed($uid, $observer_xchan, $permission) {
$arr = array(
'channel_id' => $uid,
@@ -247,7 +271,7 @@ function perm_is_allowed($uid,$observer_xchan,$permission) {
'permission' => $permission,
'result' => false);
- call_hooks('perm_is_allowed',$arr);
+ call_hooks('perm_is_allowed', $arr);
if($arr['result'])
return true;
@@ -257,7 +281,7 @@ function perm_is_allowed($uid,$observer_xchan,$permission) {
$channel_perm = $global_perms[$permission][0];
- $r = q("select %s, channel_hash from channel where channel_id = %d limit 1",
+ $r = q("select %s, channel_pageflags, channel_hash from channel where channel_id = %d limit 1",
dbesc($channel_perm),
intval($uid)
);
@@ -269,7 +293,7 @@ function perm_is_allowed($uid,$observer_xchan,$permission) {
return true;
$x = q("select abook_my_perms, abook_flags, xchan_network from abook left join xchan on abook_xchan = xchan_hash
- where abook_channel = %d and abook_xchan = '%s' and not ( abook_flags & %d ) limit 1",
+ where abook_channel = %d and abook_xchan = '%s' and not ( abook_flags & %d )>0 limit 1",
intval($uid),
dbesc($observer_xchan),
intval(ABOOK_FLAG_SELF)
@@ -279,21 +303,21 @@ function perm_is_allowed($uid,$observer_xchan,$permission) {
if(($x) && ($x[0]['abook_flags'] & ABOOK_FLAG_BLOCKED))
return false;
-
+
if(($x) && (! $global_perms[$permission][2]) && ($x[0]['abook_flags'] & ABOOK_FLAG_IGNORED))
return false;
if(! $x) {
// not in address book, see if they've got an xchan
$y = q("select xchan_network from xchan where xchan_hash = '%s' limit 1",
- dbesc($observer_xchan)
+ dbesc($observer_xchan)
);
}
}
// system is blocked to anybody who is not authenticated
- if((! $observer_xchan) && intval(get_config('system','block_public')))
+ if((! $observer_xchan) && intval(get_config('system', 'block_public')))
return false;
// Check if this $uid is actually the $observer_xchan
@@ -301,7 +325,6 @@ function perm_is_allowed($uid,$observer_xchan,$permission) {
if($r[0]['channel_hash'] === $observer_xchan)
return true;
-
if($r[0][$channel_perm] & PERMS_PUBLIC)
return true;
@@ -326,6 +349,7 @@ function perm_is_allowed($uid,$observer_xchan,$permission) {
);
if($c)
return true;
+
return false;
}
@@ -361,25 +385,32 @@ function perm_is_allowed($uid,$observer_xchan,$permission) {
// No permissions allowed.
- return false;
+ return false;
}
// Check a simple array of observers against a permissions
// return a simple array of those with permission
-function check_list_permissions($uid,$arr,$perm) {
+function check_list_permissions($uid, $arr, $perm) {
$result = array();
if($arr)
foreach($arr as $x)
- if(perm_is_allowed($uid,$x,$perm))
+ if(perm_is_allowed($uid, $x, $perm))
$result[] = $x;
+
return($result);
}
-
+/**
+ * @brief Sets site wide default permissions.
+ *
+ * @return array
+ */
function site_default_perms() {
+ $ret = array();
+
$typical = array(
'view_stream' => PERMS_PUBLIC,
'view_profile' => PERMS_PUBLIC,
@@ -401,13 +432,386 @@ function site_default_perms() {
);
$global_perms = get_perms();
- $ret = array();
foreach($global_perms as $perm => $v) {
- $x = get_config('default_perms',$perm);
+ $x = get_config('default_perms', $perm);
if($x === false)
$x = $typical[$perm];
$ret[$perm] = $x;
}
+
return $ret;
}
+
+
+/**
+ * @function get_role_perms($role)
+ * @param string $role
+ *
+ * Given a string for the channel role ('social','forum', etc)
+ * return an array of all permission fields pre-filled for this role.
+ * This includes the channel permission scope indicators (anything beginning with 'channel_') as well as
+ * perms_auto: true or false to create auto-permissions for this channel
+ * perms_follow: The permissions to apply when initiating a connection request to another channel
+ * perms_accept: The permissions to apply when accepting a connection request from another channel (not automatic)
+ * default_collection: true or false to make the default ACL include the channel's default collection
+ * directory_publish: true or false to publish this channel in the directory
+ * Any attributes may be extended (new roles defined) and modified (specific permissions altered) by plugins
+ *
+ */
+
+function get_role_perms($role) {
+
+ $ret = array();
+
+ $ret['role'] = $role;
+
+ switch($role) {
+ case 'social':
+ $ret['perms_auto'] = false;
+ $ret['default_collection'] = false;
+ $ret['directory_publish'] = true;
+ $ret['online'] = true;
+ $ret['perms_follow'] = PERMS_R_STREAM|PERMS_R_PROFILE|PERMS_R_PHOTOS|PERMS_R_ABOOK
+ |PERMS_W_STREAM|PERMS_W_WALL|PERMS_W_COMMENT|PERMS_W_MAIL|PERMS_W_CHAT
+ |PERMS_R_STORAGE|PERMS_R_PAGES|PERMS_A_REPUBLISH|PERMS_W_LIKE;
+ $ret['perms_accept'] = PERMS_R_STREAM|PERMS_R_PROFILE|PERMS_R_PHOTOS|PERMS_R_ABOOK
+ |PERMS_W_STREAM|PERMS_W_WALL|PERMS_W_COMMENT|PERMS_W_MAIL|PERMS_W_CHAT
+ |PERMS_R_STORAGE|PERMS_R_PAGES|PERMS_A_REPUBLISH|PERMS_W_LIKE;
+ $ret['channel_r_stream'] = PERMS_PUBLIC;
+ $ret['channel_r_profile'] = PERMS_PUBLIC;
+ $ret['channel_r_photos'] = PERMS_PUBLIC;
+ $ret['channel_r_abook'] = PERMS_PUBLIC;
+ $ret['channel_w_stream'] = PERMS_SPECIFIC;
+ $ret['channel_w_wall'] = PERMS_SPECIFIC;
+ $ret['channel_w_tagwall'] = PERMS_SPECIFIC;
+ $ret['channel_w_comment'] = PERMS_SPECIFIC;
+ $ret['channel_w_mail'] = PERMS_SPECIFIC;
+ $ret['channel_w_photos'] = 0;
+ $ret['channel_w_chat'] = PERMS_SPECIFIC;
+ $ret['channel_a_delegate'] = 0;
+ $ret['channel_r_storage'] = PERMS_PUBLIC;
+ $ret['channel_w_storage'] = 0;
+ $ret['channel_r_pages'] = PERMS_PUBLIC;
+ $ret['channel_w_pages'] = 0;
+ $ret['channel_a_republish'] = PERMS_SPECIFIC;
+ $ret['channel_w_like'] = PERMS_NETWORK;
+
+ break;
+
+ case 'social_restricted':
+ $ret['perms_auto'] = false;
+ $ret['default_collection'] = true;
+ $ret['directory_publish'] = true;
+ $ret['online'] = true;
+ $ret['perms_follow'] = PERMS_R_STREAM|PERMS_R_PROFILE|PERMS_R_PHOTOS|PERMS_R_ABOOK
+ |PERMS_W_STREAM|PERMS_W_WALL|PERMS_W_COMMENT|PERMS_W_MAIL|PERMS_W_CHAT
+ |PERMS_R_STORAGE|PERMS_R_PAGES|PERMS_W_LIKE;
+ $ret['perms_accept'] = PERMS_R_STREAM|PERMS_R_PROFILE|PERMS_R_PHOTOS|PERMS_R_ABOOK
+ |PERMS_W_STREAM|PERMS_W_WALL|PERMS_W_COMMENT|PERMS_W_MAIL|PERMS_W_CHAT
+ |PERMS_R_STORAGE|PERMS_R_PAGES|PERMS_W_LIKE;
+ $ret['channel_r_stream'] = PERMS_PUBLIC;
+ $ret['channel_r_profile'] = PERMS_PUBLIC;
+ $ret['channel_r_photos'] = PERMS_PUBLIC;
+ $ret['channel_r_abook'] = PERMS_PUBLIC;
+ $ret['channel_w_stream'] = PERMS_SPECIFIC;
+ $ret['channel_w_wall'] = PERMS_SPECIFIC;
+ $ret['channel_w_tagwall'] = PERMS_SPECIFIC;
+ $ret['channel_w_comment'] = PERMS_SPECIFIC;
+ $ret['channel_w_mail'] = PERMS_SPECIFIC;
+ $ret['channel_w_photos'] = 0;
+ $ret['channel_w_chat'] = PERMS_SPECIFIC;
+ $ret['channel_a_delegate'] = 0;
+ $ret['channel_r_storage'] = PERMS_PUBLIC;
+ $ret['channel_w_storage'] = 0;
+ $ret['channel_r_pages'] = PERMS_PUBLIC;
+ $ret['channel_w_pages'] = 0;
+ $ret['channel_a_republish'] = PERMS_SPECIFIC;
+ $ret['channel_w_like'] = PERMS_SPECIFIC;
+
+ break;
+
+ case 'social_private':
+ $ret['perms_auto'] = false;
+ $ret['default_collection'] = true;
+ $ret['directory_publish'] = false;
+ $ret['online'] = false;
+ $ret['perms_follow'] = PERMS_R_STREAM|PERMS_R_PROFILE|PERMS_R_PHOTOS|PERMS_R_ABOOK
+ |PERMS_W_STREAM|PERMS_W_WALL|PERMS_W_COMMENT|PERMS_W_MAIL|PERMS_W_CHAT
+ |PERMS_R_STORAGE|PERMS_R_PAGES|PERMS_W_LIKE;
+ $ret['perms_accept'] = PERMS_R_STREAM|PERMS_R_PROFILE|PERMS_R_PHOTOS|PERMS_R_ABOOK
+ |PERMS_W_STREAM|PERMS_W_WALL|PERMS_W_COMMENT|PERMS_W_MAIL|PERMS_W_CHAT
+ |PERMS_R_STORAGE|PERMS_R_PAGES|PERMS_W_LIKE;
+ $ret['channel_r_stream'] = PERMS_PUBLIC;
+ $ret['channel_r_profile'] = PERMS_PUBLIC;
+ $ret['channel_r_photos'] = PERMS_PUBLIC;
+ $ret['channel_r_abook'] = PERMS_SPECIFIC;
+ $ret['channel_w_stream'] = PERMS_SPECIFIC;
+ $ret['channel_w_wall'] = PERMS_SPECIFIC;
+ $ret['channel_w_tagwall'] = PERMS_SPECIFIC;
+ $ret['channel_w_comment'] = PERMS_SPECIFIC;
+ $ret['channel_w_mail'] = PERMS_SPECIFIC;
+ $ret['channel_w_photos'] = 0;
+ $ret['channel_w_chat'] = PERMS_SPECIFIC;
+ $ret['channel_a_delegate'] = 0;
+ $ret['channel_r_storage'] = PERMS_PUBLIC;
+ $ret['channel_w_storage'] = 0;
+ $ret['channel_r_pages'] = PERMS_PUBLIC;
+ $ret['channel_w_pages'] = 0;
+ $ret['channel_a_republish'] = PERMS_SPECIFIC;
+ $ret['channel_w_like'] = PERMS_SPECIFIC;
+
+ break;
+
+ case 'forum':
+ $ret['perms_auto'] = true;
+ $ret['default_collection'] = false;
+ $ret['directory_publish'] = true;
+ $ret['online'] = false;
+ $ret['perms_follow'] = PERMS_R_STREAM|PERMS_R_PROFILE|PERMS_R_PHOTOS|PERMS_R_ABOOK
+ |PERMS_W_STREAM|PERMS_W_WALL|PERMS_W_COMMENT|PERMS_W_MAIL|PERMS_W_CHAT
+ |PERMS_R_STORAGE|PERMS_R_PAGES|PERMS_A_REPUBLISH|PERMS_W_LIKE|PERMS_W_TAGWALL;
+ $ret['perms_accept'] = PERMS_R_STREAM|PERMS_R_PROFILE|PERMS_R_PHOTOS|PERMS_R_ABOOK
+ |PERMS_W_STREAM|PERMS_W_WALL|PERMS_W_COMMENT|PERMS_W_MAIL|PERMS_W_CHAT
+ |PERMS_R_STORAGE|PERMS_R_PAGES|PERMS_A_REPUBLISH|PERMS_W_LIKE|PERMS_W_TAGWALL;
+ $ret['channel_r_stream'] = PERMS_PUBLIC;
+ $ret['channel_r_profile'] = PERMS_PUBLIC;
+ $ret['channel_r_photos'] = PERMS_PUBLIC;
+ $ret['channel_r_abook'] = PERMS_PUBLIC;
+ $ret['channel_w_stream'] = 0;
+ $ret['channel_w_wall'] = PERMS_SPECIFIC;
+ $ret['channel_w_tagwall'] = PERMS_SPECIFIC;
+ $ret['channel_w_comment'] = PERMS_SPECIFIC;
+ $ret['channel_w_mail'] = PERMS_SPECIFIC;
+ $ret['channel_w_photos'] = 0;
+ $ret['channel_w_chat'] = PERMS_SPECIFIC;
+ $ret['channel_a_delegate'] = 0;
+ $ret['channel_r_storage'] = PERMS_PUBLIC;
+ $ret['channel_w_storage'] = 0;
+ $ret['channel_r_pages'] = PERMS_PUBLIC;
+ $ret['channel_w_pages'] = 0;
+ $ret['channel_a_republish'] = PERMS_SPECIFIC;
+ $ret['channel_w_like'] = PERMS_NETWORK;
+
+ break;
+
+ case 'forum_restricted':
+ $ret['perms_auto'] = false;
+ $ret['default_collection'] = true;
+ $ret['directory_publish'] = true;
+ $ret['online'] = false;
+ $ret['perms_follow'] = PERMS_R_STREAM|PERMS_R_PROFILE|PERMS_R_PHOTOS|PERMS_R_ABOOK
+ |PERMS_W_STREAM|PERMS_W_WALL|PERMS_W_COMMENT|PERMS_W_MAIL|PERMS_W_CHAT
+ |PERMS_R_STORAGE|PERMS_R_PAGES|PERMS_W_LIKE|PERMS_W_TAGWALL;
+ $ret['perms_accept'] = PERMS_R_STREAM|PERMS_R_PROFILE|PERMS_R_PHOTOS|PERMS_R_ABOOK
+ |PERMS_W_STREAM|PERMS_W_WALL|PERMS_W_COMMENT|PERMS_W_MAIL|PERMS_W_CHAT
+ |PERMS_R_STORAGE|PERMS_R_PAGES|PERMS_W_LIKE|PERMS_W_TAGWALL;
+ $ret['channel_r_stream'] = PERMS_PUBLIC;
+ $ret['channel_r_profile'] = PERMS_PUBLIC;
+ $ret['channel_r_photos'] = PERMS_PUBLIC;
+ $ret['channel_r_abook'] = PERMS_PUBLIC;
+ $ret['channel_w_stream'] = 0;
+ $ret['channel_w_wall'] = PERMS_SPECIFIC;
+ $ret['channel_w_tagwall'] = PERMS_SPECIFIC;
+ $ret['channel_w_comment'] = PERMS_SPECIFIC;
+ $ret['channel_w_mail'] = PERMS_SPECIFIC;
+ $ret['channel_w_photos'] = 0;
+ $ret['channel_w_chat'] = PERMS_SPECIFIC;
+ $ret['channel_a_delegate'] = 0;
+ $ret['channel_r_storage'] = PERMS_PUBLIC;
+ $ret['channel_w_storage'] = 0;
+ $ret['channel_r_pages'] = PERMS_PUBLIC;
+ $ret['channel_w_pages'] = 0;
+ $ret['channel_a_republish'] = PERMS_SPECIFIC;
+ $ret['channel_w_like'] = PERMS_SPECIFIC;
+
+ break;
+
+ case 'forum_private':
+ $ret['perms_auto'] = false;
+ $ret['default_collection'] = true;
+ $ret['directory_publish'] = false;
+ $ret['online'] = false;
+ $ret['perms_follow'] = PERMS_R_STREAM|PERMS_R_PROFILE|PERMS_R_PHOTOS|PERMS_R_ABOOK
+ |PERMS_W_STREAM|PERMS_W_WALL|PERMS_W_COMMENT|PERMS_W_MAIL|PERMS_W_CHAT
+ |PERMS_R_STORAGE|PERMS_R_PAGES|PERMS_W_LIKE;
+ $ret['perms_accept'] = PERMS_R_STREAM|PERMS_R_PROFILE|PERMS_R_PHOTOS|PERMS_R_ABOOK
+ |PERMS_W_STREAM|PERMS_W_WALL|PERMS_W_COMMENT|PERMS_W_MAIL|PERMS_W_CHAT
+ |PERMS_R_STORAGE|PERMS_R_PAGES|PERMS_W_LIKE;
+ $ret['channel_r_stream'] = PERMS_PUBLIC;
+ $ret['channel_r_profile'] = PERMS_SPECIFIC;
+ $ret['channel_r_photos'] = PERMS_SPECIFIC;
+ $ret['channel_r_abook'] = PERMS_SPECIFIC;
+ $ret['channel_w_stream'] = 0;
+ $ret['channel_w_wall'] = PERMS_SPECIFIC;
+ $ret['channel_w_tagwall'] = 0;
+ $ret['channel_w_comment'] = PERMS_SPECIFIC;
+ $ret['channel_w_mail'] = PERMS_SPECIFIC;
+ $ret['channel_w_photos'] = 0;
+ $ret['channel_w_chat'] = PERMS_SPECIFIC;
+ $ret['channel_a_delegate'] = 0;
+ $ret['channel_r_storage'] = PERMS_SPECIFIC;
+ $ret['channel_w_storage'] = 0;
+ $ret['channel_r_pages'] = PERMS_SPECIFIC;
+ $ret['channel_w_pages'] = 0;
+ $ret['channel_a_republish'] = PERMS_SPECIFIC;
+ $ret['channel_w_like'] = PERMS_SPECIFIC;
+
+ break;
+
+ case 'feed':
+ $ret['perms_auto'] = true;
+ $ret['default_collection'] = false;
+ $ret['directory_publish'] = true;
+ $ret['online'] = false;
+ $ret['perms_follow'] = PERMS_R_STREAM|PERMS_R_PROFILE|PERMS_R_PHOTOS|PERMS_R_ABOOK
+ |PERMS_W_STREAM|PERMS_W_WALL|PERMS_W_COMMENT|PERMS_W_MAIL
+ |PERMS_R_STORAGE|PERMS_R_PAGES|PERMS_A_REPUBLISH|PERMS_W_LIKE;
+ $ret['perms_accept'] = PERMS_R_STREAM|PERMS_R_PROFILE|PERMS_R_PHOTOS|PERMS_R_ABOOK
+ |PERMS_W_STREAM|PERMS_W_WALL|PERMS_W_COMMENT|PERMS_W_MAIL
+ |PERMS_R_STORAGE|PERMS_R_PAGES|PERMS_A_REPUBLISH|PERMS_W_LIKE;
+ $ret['channel_r_stream'] = PERMS_PUBLIC;
+ $ret['channel_r_profile'] = PERMS_PUBLIC;
+ $ret['channel_r_photos'] = PERMS_PUBLIC;
+ $ret['channel_r_abook'] = PERMS_PUBLIC;
+ $ret['channel_w_stream'] = PERMS_SPECIFIC;
+ $ret['channel_w_wall'] = PERMS_SPECIFIC;
+ $ret['channel_w_tagwall'] = PERMS_SPECIFIC;
+ $ret['channel_w_comment'] = PERMS_SPECIFIC;
+ $ret['channel_w_mail'] = PERMS_SPECIFIC;
+ $ret['channel_w_photos'] = 0;
+ $ret['channel_w_chat'] = PERMS_SPECIFIC;
+ $ret['channel_a_delegate'] = 0;
+ $ret['channel_r_storage'] = PERMS_PUBLIC;
+ $ret['channel_w_storage'] = 0;
+ $ret['channel_r_pages'] = PERMS_PUBLIC;
+ $ret['channel_w_pages'] = 0;
+ $ret['channel_a_republish'] = PERMS_NETWORK;
+ $ret['channel_w_like'] = PERMS_NETWORK;
+
+ break;
+
+ case 'feed_restricted':
+ $ret['perms_auto'] = false;
+ $ret['default_collection'] = true;
+ $ret['directory_publish'] = false;
+ $ret['online'] = false;
+ $ret['perms_follow'] = PERMS_R_STREAM|PERMS_R_PROFILE|PERMS_R_PHOTOS|PERMS_R_ABOOK
+ |PERMS_W_STREAM|PERMS_W_WALL|PERMS_W_COMMENT|PERMS_W_MAIL
+ |PERMS_R_STORAGE|PERMS_R_PAGES|PERMS_W_LIKE;
+ $ret['perms_accept'] = PERMS_R_STREAM|PERMS_R_PROFILE|PERMS_R_PHOTOS|PERMS_R_ABOOK
+ |PERMS_W_STREAM|PERMS_W_WALL|PERMS_W_COMMENT|PERMS_W_MAIL
+ |PERMS_R_STORAGE|PERMS_R_PAGES|PERMS_W_LIKE;
+ $ret['channel_r_stream'] = PERMS_PUBLIC;
+ $ret['channel_r_profile'] = PERMS_PUBLIC;
+ $ret['channel_r_photos'] = PERMS_PUBLIC;
+ $ret['channel_r_abook'] = PERMS_PUBLIC;
+ $ret['channel_w_stream'] = PERMS_SPECIFIC;
+ $ret['channel_w_wall'] = PERMS_SPECIFIC;
+ $ret['channel_w_tagwall'] = PERMS_SPECIFIC;
+ $ret['channel_w_comment'] = PERMS_SPECIFIC;
+ $ret['channel_w_mail'] = PERMS_SPECIFIC;
+ $ret['channel_w_photos'] = 0;
+ $ret['channel_w_chat'] = PERMS_SPECIFIC;
+ $ret['channel_a_delegate'] = 0;
+ $ret['channel_r_storage'] = PERMS_PUBLIC;
+ $ret['channel_w_storage'] = 0;
+ $ret['channel_r_pages'] = PERMS_PUBLIC;
+ $ret['channel_w_pages'] = 0;
+ $ret['channel_a_republish'] = PERMS_SPECIFIC;
+ $ret['channel_w_like'] = PERMS_NETWORK;
+
+ break;
+
+ case 'soapbox':
+ $ret['perms_auto'] = true;
+ $ret['default_collection'] = false;
+ $ret['directory_publish'] = true;
+ $ret['online'] = false;
+ $ret['perms_follow'] = PERMS_R_STREAM|PERMS_R_PROFILE|PERMS_R_PHOTOS|PERMS_R_ABOOK
+ |PERMS_R_STORAGE|PERMS_R_PAGES|PERMS_A_REPUBLISH|PERMS_W_LIKE;
+ $ret['perms_accept'] = PERMS_R_STREAM|PERMS_R_PROFILE|PERMS_R_PHOTOS|PERMS_R_ABOOK
+ |PERMS_R_STORAGE|PERMS_R_PAGES|PERMS_A_REPUBLISH|PERMS_W_LIKE;
+ $ret['channel_r_stream'] = PERMS_PUBLIC;
+ $ret['channel_r_profile'] = PERMS_PUBLIC;
+ $ret['channel_r_photos'] = PERMS_PUBLIC;
+ $ret['channel_r_abook'] = PERMS_PUBLIC;
+ $ret['channel_w_stream'] = 0;
+ $ret['channel_w_wall'] = 0;
+ $ret['channel_w_tagwall'] = 0;
+ $ret['channel_w_comment'] = 0;
+ $ret['channel_w_mail'] = 0;
+ $ret['channel_w_photos'] = 0;
+ $ret['channel_w_chat'] = 0;
+ $ret['channel_a_delegate'] = 0;
+ $ret['channel_r_storage'] = PERMS_PUBLIC;
+ $ret['channel_w_storage'] = 0;
+ $ret['channel_r_pages'] = PERMS_PUBLIC;
+ $ret['channel_w_pages'] = 0;
+ $ret['channel_a_republish'] = PERMS_SPECIFIC;
+ $ret['channel_w_like'] = PERMS_NETWORK;
+
+ break;
+
+ case 'repository':
+ $ret['perms_auto'] = true;
+ $ret['default_collection'] = false;
+ $ret['directory_publish'] = true;
+ $ret['online'] = false;
+ $ret['perms_follow'] = PERMS_R_STREAM|PERMS_R_PROFILE|PERMS_R_PHOTOS|PERMS_R_ABOOK
+ |PERMS_W_STREAM|PERMS_W_WALL|PERMS_W_COMMENT|PERMS_W_MAIL|PERMS_W_CHAT
+ |PERMS_R_STORAGE|PERMS_W_STORAGE|PERMS_R_PAGES|PERMS_A_REPUBLISH|PERMS_W_LIKE|PERMS_W_TAGWALL;
+ $ret['perms_accept'] = PERMS_R_STREAM|PERMS_R_PROFILE|PERMS_R_PHOTOS|PERMS_R_ABOOK
+ |PERMS_W_STREAM|PERMS_W_WALL|PERMS_W_COMMENT|PERMS_W_MAIL|PERMS_W_CHAT
+ |PERMS_R_STORAGE|PERMS_W_STORAGE|PERMS_R_PAGES|PERMS_A_REPUBLISH|PERMS_W_LIKE|PERMS_W_TAGWALL;
+ $ret['channel_r_stream'] = PERMS_PUBLIC;
+ $ret['channel_r_profile'] = PERMS_PUBLIC;
+ $ret['channel_r_photos'] = PERMS_PUBLIC;
+ $ret['channel_r_abook'] = PERMS_PUBLIC;
+ $ret['channel_w_stream'] = PERMS_SPECIFIC;
+ $ret['channel_w_wall'] = PERMS_SPECIFIC;
+ $ret['channel_w_tagwall'] = PERMS_SPECIFIC;
+ $ret['channel_w_comment'] = PERMS_SPECIFIC;
+ $ret['channel_w_mail'] = PERMS_SPECIFIC;
+ $ret['channel_w_photos'] = PERMS_SPECIFIC;
+ $ret['channel_w_chat'] = PERMS_SPECIFIC;
+ $ret['channel_a_delegate'] = 0;
+ $ret['channel_r_storage'] = PERMS_PUBLIC;
+ $ret['channel_w_storage'] = PERMS_SPECIFIC;
+ $ret['channel_r_pages'] = PERMS_PUBLIC;
+ $ret['channel_w_pages'] = PERMS_SPECIFIC;
+ $ret['channel_a_republish'] = PERMS_SPECIFIC;
+ $ret['channel_w_like'] = PERMS_NETWORK;
+
+ break;
+
+ default:
+ break;
+ }
+
+ $x = get_config('system','role_perms');
+ // let system settings over-ride any or all
+ if($x && is_array($x) && array_key_exists($role,$x))
+ $ret = array_merge($ret,$x[$role]);
+
+ call_hooks('get_role_perms',$ret);
+
+ return $ret;
+}
+
+/**
+ * @brief Returns a list or roles, grouped by type
+ *
+ * @param string $current The current role
+ * @return string Returns an array of roles, grouped by type
+ */
+function get_roles() {
+ $roles = array(
+ t('Social Networking') => array('social' => t('Mostly Public'), 'social_restricted' => t('Restricted'), 'social_private' => t('Private')),
+ t('Community Forum') => array('forum' => t('Mostly Public'), 'forum_restricted' => t('Restricted'), 'forum_private' => t('Private')),
+ t('Feed Republish') => array('feed' => t('Mostly Public'), 'feed_restricted' => t('Restricted')),
+ t('Special Purpose') => array('soapbox' => t('Celebrity/Soapbox'), 'repository' => t('Group Repository')),
+ t('Other') => array('custom' => t('Custom/Expert Mode')));
+
+ return $roles;
+}
diff --git a/include/photo/photo_driver.php b/include/photo/photo_driver.php
index f5e915402..e63125671 100644
--- a/include/photo/photo_driver.php
+++ b/include/photo/photo_driver.php
@@ -3,11 +3,24 @@
function photo_factory($data, $type = null) {
$ph = null;
- if(class_exists('Imagick')) {
- require_once('include/photo/photo_imagick.php');
- $ph = new photo_imagick($data,$type);
+ $ignore_imagick = get_config('system', 'ignore_imagick');
+
+ if(class_exists('Imagick') && !$ignore_imagick) {
+ $v = Imagick::getVersion();
+ preg_match('/ImageMagick ([0-9]+\.[0-9]+\.[0-9]+)/', $v['versionString'], $m);
+ if(version_compare($m[1],'6.6.7') >= 0) {
+ require_once('include/photo/photo_imagick.php');
+ $ph = new photo_imagick($data,$type);
+ }
+ else {
+ // earlier imagick versions have issues with scaling png's
+ // don't log this because it will just fill the logfile.
+ // leave this note here so those who are looking for why
+ // we aren't using imagick can find it
+ }
}
- else {
+
+ if(! $ph) {
require_once('include/photo/photo_gd.php');
$ph = new photo_gd($data,$type);
}
@@ -287,6 +300,10 @@ abstract class photo_driver {
$p['allow_gid'] = (($arr['allow_gid']) ? $arr['allow_gid'] : '');
$p['deny_cid'] = (($arr['deny_cid']) ? $arr['deny_cid'] : '');
$p['deny_gid'] = (($arr['deny_gid']) ? $arr['deny_gid'] : '');
+ $p['created'] = (($arr['created']) ? $arr['created'] : datetime_convert());
+ $p['edited'] = (($arr['edited']) ? $arr['edited'] : $p['created']);
+ $p['title'] = (($arr['title']) ? $arr['title'] : '');
+ $p['description'] = (($arr['description']) ? $arr['description'] : '');
// temporary until we get rid of photo['profile'] and just use photo['photo_flags']
// but this will require updating all existing photos in the DB.
@@ -318,28 +335,32 @@ abstract class photo_driver {
`scale` = %d,
`profile` = %d,
`photo_flags` = %d,
+ `title` = '%s',
+ `description` = '%s',
`allow_cid` = '%s',
`allow_gid` = '%s',
`deny_cid` = '%s',
`deny_gid` = '%s'
- where id = %d limit 1",
+ where id = %d",
intval($p['aid']),
intval($p['uid']),
dbesc($p['xchan']),
dbesc($p['resource_id']),
- dbesc(datetime_convert()),
- dbesc(datetime_convert()),
+ dbesc($p['created']),
+ dbesc($p['edited']),
dbesc(basename($p['filename'])),
dbesc($this->getType()),
dbesc($p['album']),
intval($this->getHeight()),
intval($this->getWidth()),
- dbesc($this->imageString()),
+ dbescbin($this->imageString()),
intval(strlen($this->imageString())),
intval($p['scale']),
intval($p['profile']),
intval($p['photo_flags']),
+ dbesc($p['title']),
+ dbesc($p['description']),
dbesc($p['allow_cid']),
dbesc($p['allow_gid']),
dbesc($p['deny_cid']),
@@ -349,24 +370,26 @@ abstract class photo_driver {
}
else {
$r = q("INSERT INTO `photo`
- ( `aid`, `uid`, `xchan`, `resource_id`, `created`, `edited`, `filename`, type, `album`, `height`, `width`, `data`, `size`, `scale`, `profile`, `photo_flags`, `allow_cid`, `allow_gid`, `deny_cid`, `deny_gid` )
- VALUES ( %d, %d, '%s', '%s', '%s', '%s', '%s', '%s', '%s', %d, %d, '%s', %d, %d, %d, %d, '%s', '%s', '%s', '%s' )",
+ ( `aid`, `uid`, `xchan`, `resource_id`, `created`, `edited`, `filename`, type, `album`, `height`, `width`, `data`, `size`, `scale`, `profile`, `photo_flags`, `title`, `description`, `allow_cid`, `allow_gid`, `deny_cid`, `deny_gid` )
+ VALUES ( %d, %d, '%s', '%s', '%s', '%s', '%s', '%s', '%s', %d, %d, '%s', %d, %d, %d, %d, '%s', '%s', '%s', '%s', '%s', '%s' )",
intval($p['aid']),
intval($p['uid']),
dbesc($p['xchan']),
dbesc($p['resource_id']),
- dbesc(datetime_convert()),
- dbesc(datetime_convert()),
+ dbesc($p['created']),
+ dbesc($p['edited']),
dbesc(basename($p['filename'])),
dbesc($this->getType()),
dbesc($p['album']),
intval($this->getHeight()),
intval($this->getWidth()),
- dbesc($this->imageString()),
+ dbescbin($this->imageString()),
intval(strlen($this->imageString())),
intval($p['scale']),
intval($p['profile']),
intval($p['photo_flags']),
+ dbesc($p['title']),
+ dbesc($p['description']),
dbesc($p['allow_cid']),
dbesc($p['allow_gid']),
dbesc($p['deny_cid']),
@@ -405,7 +428,7 @@ abstract class photo_driver {
`allow_gid` = '%s',
`deny_cid` = '%s',
`deny_gid` = '%s'
- where id = %d limit 1",
+ where id = %d",
intval($aid),
intval($uid),
@@ -418,7 +441,7 @@ abstract class photo_driver {
dbesc($album),
intval($this->getHeight()),
intval($this->getWidth()),
- dbesc($this->imageString()),
+ dbescbin($this->imageString()),
intval(strlen($this->imageString())),
intval($scale),
intval($profile),
@@ -444,7 +467,7 @@ abstract class photo_driver {
dbesc($album),
intval($this->getHeight()),
intval($this->getWidth()),
- dbesc($this->imageString()),
+ dbescbin($this->imageString()),
intval(strlen($this->imageString())),
intval($scale),
intval($profile),
@@ -470,11 +493,11 @@ abstract class photo_driver {
* Guess image mimetype from filename or from Content-Type header
*
* @arg $filename string Image filename
- * @arg $fromcurl boolean Check Content-Type header from curl request
+ * @arg $headers string Headers to check for Content-Type (from curl request)
*/
function guess_image_type($filename, $headers = '') {
- logger('Photo: guess_image_type: '.$filename . ($fromcurl?' from curl headers':''), LOGGER_DEBUG);
+ logger('Photo: guess_image_type: '.$filename . ($headers?' from curl headers':''), LOGGER_DEBUG);
$type = null;
if ($headers) {
$a = get_app();
@@ -484,21 +507,35 @@ function guess_image_type($filename, $headers = '') {
list($k,$v) = array_map("trim", explode(":", trim($l), 2));
$hdrs[$k] = $v;
}
+ logger('Curl headers: '.var_export($hdrs, true), LOGGER_DEBUG);
if (array_key_exists('Content-Type', $hdrs))
$type = $hdrs['Content-Type'];
}
if (is_null($type)){
-// FIXME!!!!
+
+ $ignore_imagick = get_config('system', 'ignore_imagick');
// Guessing from extension? Isn't that... dangerous?
- if(class_exists('Imagick') && file_exists($filename) && is_readable($filename)) {
- /**
- * Well, this not much better,
- * but at least it comes from the data inside the image,
- * we won't be tricked by a manipulated extension
- */
- $image = new Imagick($filename);
- $type = $image->getImageMimeType();
- } else {
+ if(class_exists('Imagick') && file_exists($filename) && is_readable($filename) && !$ignore_imagick) {
+ $v = Imagick::getVersion();
+ preg_match('/ImageMagick ([0-9]+\.[0-9]+\.[0-9]+)/', $v['versionString'], $m);
+ if(version_compare($m[1],'6.6.7') >= 0) {
+ /**
+ * Well, this not much better,
+ * but at least it comes from the data inside the image,
+ * we won't be tricked by a manipulated extension
+ */
+ $image = new Imagick($filename);
+ $type = $image->getImageMimeType();
+ }
+ else {
+ // earlier imagick versions have issues with scaling png's
+ // don't log this because it will just fill the logfile.
+ // leave this note here so those who are looking for why
+ // we aren't using imagick can find it
+ }
+ }
+
+ if(is_null($type)) {
$ext = pathinfo($filename, PATHINFO_EXTENSION);
$ph = photo_factory('');
$types = $ph->supportedTypes();
@@ -525,7 +562,7 @@ function import_profile_photo($photo,$xchan,$thing = false) {
if($thing)
$hash = photo_new_resource();
else {
- $r = q("select resource_id from photo where xchan = '%s' and (photo_flags & %d ) and scale = 4 limit 1",
+ $r = q("select resource_id from photo where xchan = '%s' and (photo_flags & %d )>0 and scale = 4 limit 1",
dbesc($xchan),
intval(PHOTO_XCHAN)
);
@@ -542,7 +579,7 @@ function import_profile_photo($photo,$xchan,$thing = false) {
if($photo) {
$filename = basename($photo);
- $type = guess_image_type($photo,true);
+ $type = guess_image_type($photo);
if(! $type)
$type = 'image/jpeg';
@@ -613,7 +650,7 @@ function import_profile_photo($photo,$xchan,$thing = false) {
$photo = $a->get_baseurl() . '/' . get_default_profile_photo();
$thumb = $a->get_baseurl() . '/' . get_default_profile_photo(80);
$micro = $a->get_baseurl() . '/' . get_default_profile_photo(48);
- $type = 'image/jpeg';
+ $type = 'image/png';
}
return(array($photo,$thumb,$micro,$type,$photo_failure));
diff --git a/include/photo/photo_gd.php b/include/photo/photo_gd.php
index 466f8c23a..fa1f700e9 100644
--- a/include/photo/photo_gd.php
+++ b/include/photo/photo_gd.php
@@ -10,7 +10,7 @@ class photo_gd extends photo_driver {
$t = array();
$t['image/jpeg'] ='jpg';
if (imagetypes() & IMG_PNG) $t['image/png'] = 'png';
-
+ if (imagetypes() & IMG_GIF) $t['image/gif'] = 'gif';
return $t;
}
diff --git a/include/photos.php b/include/photos.php
index 9819c7ef2..2393153c6 100644
--- a/include/photos.php
+++ b/include/photos.php
@@ -44,9 +44,10 @@ function photo_upload($channel, $observer, $args) {
*
*/
- $r = q("SELECT * FROM photo WHERE album = '%s' AND uid = %d AND created > UTC_TIMESTAMP() - INTERVAL 3 HOUR ",
+ $r = q("SELECT * FROM photo WHERE album = '%s' AND uid = %d AND created > %s - INTERVAL %s ",
dbesc($album),
- intval($channel_id)
+ intval($channel_id),
+ db_utcnow(), db_quoteinterval('3 HOUR')
);
if((! $r) || ($album == t('Profile Photos')))
$visible = 1;
@@ -61,47 +62,64 @@ function photo_upload($channel, $observer, $args) {
$str_group_deny = perms2str(((is_array($args['group_deny'])) ? $args['group_deny'] : explode(',',$args['group_deny'])));
$str_contact_deny = perms2str(((is_array($args['contact_deny'])) ? $args['contact_deny'] : explode(',',$args['contact_deny'])));
- $f = array('src' => '', 'filename' => '', 'filesize' => 0, 'type' => '');
- call_hooks('photo_upload_file',$f);
+ if($args['data']) {
+
+ // allow an import from a binary string representing the image.
+ // This bypasses the upload step and max size limit checking
- if(x($f,'src') && x($f,'filesize')) {
- $src = $f['src'];
- $filename = $f['filename'];
- $filesize = $f['filesize'];
- $type = $f['type'];
+ $imagedata = $args['data'];
+ $filename = $args['filename'];
+ $filesize = strlen($imagedata);
+ // this is going to be deleted if it exists
+ $src = '/tmp/deletemenow';
+ $type = $args['type'];
}
else {
- $src = $_FILES['userfile']['tmp_name'];
- $filename = basename($_FILES['userfile']['name']);
- $filesize = intval($_FILES['userfile']['size']);
- $type = $_FILES['userfile']['type'];
- }
+ $f = array('src' => '', 'filename' => '', 'filesize' => 0, 'type' => '');
- if (! $type)
- $type=guess_image_type($filename);
+ call_hooks('photo_upload_file',$f);
- logger('photo_upload: received file: ' . $filename . ' as ' . $src . ' ('. $type . ') ' . $filesize . ' bytes', LOGGER_DEBUG);
+ if(x($f,'src') && x($f,'filesize')) {
+ $src = $f['src'];
+ $filename = $f['filename'];
+ $filesize = $f['filesize'];
+ $type = $f['type'];
+ }
+ else {
+ $src = $_FILES['userfile']['tmp_name'];
+ $filename = basename($_FILES['userfile']['name']);
+ $filesize = intval($_FILES['userfile']['size']);
+ $type = $_FILES['userfile']['type'];
+ }
- $maximagesize = get_config('system','maximagesize');
+ if (! $type)
+ $type=guess_image_type($filename);
- if(($maximagesize) && ($filesize > $maximagesize)) {
- $ret['message'] = sprintf ( t('Image exceeds website size limit of %lu bytes'), $maximagesize);
- @unlink($src);
- call_hooks('photo_upload_end',$ret);
- return $ret;
- }
+ logger('photo_upload: received file: ' . $filename . ' as ' . $src . ' ('. $type . ') ' . $filesize . ' bytes', LOGGER_DEBUG);
- if(! $filesize) {
- $ret['message'] = t('Image file is empty.');
- @unlink($src);
- call_hooks('photo_post_end',$ret);
- return $ret;
- }
+
+ $maximagesize = get_config('system','maximagesize');
- logger('photo_upload: loading the contents of ' . $src , LOGGER_DEBUG);
+ if(($maximagesize) && ($filesize > $maximagesize)) {
+ $ret['message'] = sprintf ( t('Image exceeds website size limit of %lu bytes'), $maximagesize);
+ @unlink($src);
+ call_hooks('photo_upload_end',$ret);
+ return $ret;
+ }
+
+ if(! $filesize) {
+ $ret['message'] = t('Image file is empty.');
+ @unlink($src);
+ call_hooks('photo_post_end',$ret);
+ return $ret;
+ }
+
+ logger('photo_upload: loading the contents of ' . $src , LOGGER_DEBUG);
+
+ $imagedata = @file_get_contents($src);
+ }
- $imagedata = @file_get_contents($src);
$r = q("select sum(size) as total from photo where aid = %d and scale = 0 ",
intval($account_id)
@@ -141,7 +159,7 @@ function photo_upload($channel, $observer, $args) {
$smallest = 0;
- $photo_hash = photo_new_resource();
+ $photo_hash = (($args['resource_id']) ? $args['resource_id'] : photo_new_resource());
$visitor = '';
if($channel['channel_hash'] !== $observer['xchan_hash'])
@@ -154,6 +172,15 @@ function photo_upload($channel, $observer, $args) {
'allow_cid' => $str_contact_allow, 'allow_gid' => $str_group_allow,
'deny_cid' => $str_contact_deny, 'deny_gid' => $str_group_deny
);
+ if($args['created'])
+ $p['created'] = $args['created'];
+ if($args['edited'])
+ $p['edited'] = $args['edited'];
+ if($args['title'])
+ $p['title'] = $args['title'];
+ if($args['description'])
+ $p['description'] = $args['description'];
+
$r1 = $ph->save($p);
if(! $r1)
@@ -240,6 +267,7 @@ function photo_upload($channel, $observer, $args) {
proc_run('php', "include/notifier.php", 'wall-new', $item_id);
$ret['success'] = true;
+ $ret['item'] = $arr;
$ret['body'] = $arr['body'];
$ret['resource_id'] = $photo_hash;
$ret['photoitem_id'] = $item_id;
@@ -264,7 +292,7 @@ function photos_albums_list($channel,$observer) {
$sql_extra = permissions_sql($channel_id);
- $albums = q("SELECT count( distinct resource_id ) as total, album from photo where uid = %d and ( photo_flags = %d or photo_flags = %d ) $sql_extra group by album order by created desc",
+ $albums = q("SELECT count( distinct resource_id ) as total, album from photo where uid = %d and ( photo_flags = %d or photo_flags = %d ) $sql_extra group by album order by max(created) desc",
intval($channel_id),
intval(PHOTO_NORMAL),
intval(PHOTO_PROFILE)
@@ -404,7 +432,7 @@ function photos_create_item($channel, $creator_hash, $photo, $visible = false) {
// Create item container
$item_flags = ITEM_WALL|ITEM_ORIGIN|ITEM_THREAD_TOP;
- $item_restrict = (($visible) ? ITEM_HIDDEN : ITEM_VISIBLE);
+ $item_restrict = (($visible) ? ITEM_VISIBLE : ITEM_HIDDEN);
$title = '';
$mid = item_message_id();
diff --git a/include/plugin.php b/include/plugin.php
index c5f57829d..08decc8e3 100755
--- a/include/plugin.php
+++ b/include/plugin.php
@@ -102,7 +102,7 @@ function load_plugin($plugin) {
// This way the system won't fall over dead during the update.
if(file_exists('addon/' . $plugin . '/.hidden')) {
- q("update addon set hidden = 1 where name = '%s' limit 1",
+ q("update addon set hidden = 1 where name = '%s'",
dbesc($plugin)
);
}
@@ -158,7 +158,7 @@ function reload_plugins() {
$func = $pl . '_load';
$func();
}
- q("UPDATE `addon` SET `timestamp` = %d WHERE `id` = %d LIMIT 1",
+ q("UPDATE `addon` SET `timestamp` = %d WHERE `id` = %d",
intval($t),
intval($i['id'])
);
@@ -208,7 +208,7 @@ function register_hook($hook, $file, $function, $priority = 0) {
* @return mixed
*/
function unregister_hook($hook, $file, $function) {
- $r = q("DELETE FROM hook WHERE hook = '%s' AND `file` = '%s' AND `function` = '%s' LIMIT 1",
+ $r = q("DELETE FROM hook WHERE hook = '%s' AND `file` = '%s' AND `function` = '%s'",
dbesc($hook),
dbesc($file),
dbesc($function)
@@ -430,93 +430,6 @@ function get_theme_screenshot($theme) {
}
-// check service_class restrictions. If there are no service_classes defined, everything is allowed.
-// if $usage is supplied, we check against a maximum count and return true if the current usage is
-// less than the subscriber plan allows. Otherwise we return boolean true or false if the property
-// is allowed (or not) in this subscriber plan. An unset property for this service plan means
-// the property is allowed, so it is only necessary to provide negative properties for each plan,
-// or what the subscriber is not allowed to do.
-
-
-function service_class_allows($uid,$property,$usage = false) {
- $a = get_app();
- if($uid == local_user()) {
- $service_class = $a->account['account_service_class'];
- }
- else {
- $r = q("select account_service_class as service_class
- from channel c, account a
- where c.channel_account_id=a.account_id and c.channel_id= %d limit 1",
- intval($uid)
- );
- if($r !== false and count($r)) {
- $service_class = $r[0]['service_class'];
- }
- }
- if(! x($service_class))
- return true; // everything is allowed
-
- $arr = get_config('service_class',$service_class);
- if(! is_array($arr) || (! count($arr)))
- return true;
-
- if($usage === false)
- return ((x($arr[$property])) ? (bool) $arr['property'] : true);
- else {
- if(! array_key_exists($property,$arr))
- return true;
- return (((intval($usage)) < intval($arr[$property])) ? true : false);
- }
-}
-
-
-function service_class_fetch($uid,$property) {
- $a = get_app();
- if($uid == local_user()) {
- $service_class = $a->account['account_service_class'];
- }
- else {
- $r = q("select account_service_class as service_class
- from channel c, account a
- where c.channel_account_id=a.account_id and c.channel_id= %d limit 1",
- intval($uid)
- );
- if($r !== false and count($r)) {
- $service_class = $r[0]['service_class'];
- }
- }
- if(! x($service_class))
- return false; // everything is allowed
-
- $arr = get_config('service_class',$service_class);
-
- if(! is_array($arr) || (! count($arr)))
- return false;
-
- return((array_key_exists($property,$arr)) ? $arr[$property] : false);
-}
-
-function upgrade_link($bbcode = false) {
- $l = get_config('service_class','upgrade_link');
- if(! $l)
- return '';
- if($bbcode)
- $t = sprintf('[zrl=%s]' . t('Click here to upgrade.') . '[/zrl]', $l);
- else
- $t = sprintf('<a href="%s">' . t('Click here to upgrade.') . '</div>', $l);
- return $t;
-}
-
-function upgrade_message($bbcode = false) {
- $x = upgrade_link($bbcode);
- return t('This action exceeds the limits set by your subscription plan.') . (($x) ? ' ' . $x : '') ;
-}
-
-function upgrade_bool_message($bbcode = false) {
- $x = upgrade_link($bbcode);
- return t('This action is not available under your subscription plan.') . (($x) ? ' ' . $x : '') ;
-}
-
/**
* @brief add CSS to <head>
*
@@ -559,6 +472,8 @@ function script_path() {
$scheme = 'https';
elseif(x($_SERVER,'SERVER_PORT') && (intval($_SERVER['SERVER_PORT']) == 443))
$scheme = 'https';
+ elseif (!empty($_SERVER['HTTP_X_FORWARDED_PROTO']) && $_SERVER['HTTP_X_FORWARDED_PROTO'] == 'https' || !empty($_SERVER['HTTP_X_FORWARDED_SSL']) && $_SERVER['HTTP_X_FORWARDED_SSL'] == 'on')
+ $scheme = 'https';
else
$scheme = 'http';
@@ -639,6 +554,7 @@ function theme_include($file, $root = '') {
$paths = array(
"{$root}view/theme/$theme/$ext/$file",
"{$root}view/theme/$parent/$ext/$file",
+ "{$root}view/site/$ext/$file",
"{$root}view/$ext/$file",
);
diff --git a/include/poller.php b/include/poller.php
index 546a2d6d1..bd3f81a2e 100644
--- a/include/poller.php
+++ b/include/poller.php
@@ -25,6 +25,16 @@ function poller_run($argv, $argc){
if(! $interval)
$interval = ((get_config('system','delivery_interval') === false) ? 3 : intval(get_config('system','delivery_interval')));
+ // Check for a lockfile. If it exists, but is over an hour old, it's stale. Ignore it.
+ $lockfile = 'store/[data]/poller';
+ if((file_exists($lockfile)) && (filemtime($lockfile) > (time() - 3600))
+ && (! get_config('system','override_poll_lockfile'))) {
+ logger("poller: Already running");
+ return;
+ }
+
+ // Create a lockfile. Needs two vars, but $x doesn't need to contain anything.
+ file_put_contents($lockfile, $x);
logger('poller: start');
@@ -35,12 +45,17 @@ function poller_run($argv, $argc){
// expire any expired mail
- q("delete from mail where expires != '0000-00-00 00:00:00' and expires < UTC_TIMESTAMP() ");
+ q("delete from mail where expires != '%s' and expires < %s ",
+ dbesc(NULL_DATE),
+ db_utcnow()
+ );
// expire any expired items
- $r = q("select id from item where expires != '0000-00-00 00:00:00' and expires < UTC_TIMESTAMP()
- and not ( item_restrict & %d ) ",
+ $r = q("select id from item where expires != '%s' and expires < %s
+ and ( item_restrict & %d ) = 0 ",
+ dbesc(NULL_DATE),
+ db_utcnow(),
intval(ITEM_DELETED)
);
if($r) {
@@ -54,7 +69,10 @@ function poller_run($argv, $argc){
// channels and sites that quietly vanished and prevent the directory from accumulating stale
// or dead entries.
- $r = q("select channel_id from channel where channel_dirdate < UTC_TIMESTAMP() - INTERVAL 30 DAY");
+ $r = q("select channel_id from channel where channel_dirdate < %s - INTERVAL %s",
+ db_utcnow(),
+ db_quoteinterval('30 DAY')
+ );
if($r) {
foreach($r as $rr) {
proc_run('php','include/directory.php',$rr['channel_id'],'force');
@@ -66,12 +84,13 @@ function poller_run($argv, $argc){
// publish any applicable items that were set to be published in the future
// (time travel posts)
- $r = q("select id from item where ( item_restrict & %d ) and created <= UTC_TIMESTAMP() ",
- intval(ITEM_DELAYED_PUBLISH)
+ $r = q("select id from item where ( item_restrict & %d ) > 0 and created <= %s ",
+ intval(ITEM_DELAYED_PUBLISH),
+ db_utcnow()
);
if($r) {
foreach($r as $rr) {
- $x = q("update item set item_restrict = ( item_restrict ^ %d ) where id = %d limit 1",
+ $x = q("update item set item_restrict = ( item_restrict & ~%d ) where id = %d",
intval(ITEM_DELAYED_PUBLISH),
intval($rr['id'])
);
@@ -111,6 +130,9 @@ function poller_run($argv, $argc){
if(($d2 != $d1) && ($h1 == $h2)) {
+ require_once('include/dir_fns.php');
+ check_upstream_directory();
+
call_hooks('cron_daily',datetime_convert());
@@ -143,12 +165,20 @@ function poller_run($argv, $argc){
update_birthdays();
+ //update statistics in config
+ require_once('include/statistics_fns.php');
+ update_channels_total_stat();
+ update_channels_active_halfyear_stat();
+ update_channels_active_monthly_stat();
+ update_local_posts_stat();
+
// expire any read notifications over a month old
- q("delete from notify where seen = 1 and date < UTC_TIMESTAMP() - INTERVAL 30 DAY");
+ q("delete from notify where seen = 1 and date < %s - INTERVAL %s",
+ db_utcnow(), db_quoteinterval('30 DAY')
+ );
// expire any expired accounts
- require_once('include/account.php');
downgrade_accounts();
// If this is a directory server, request a sync with an upstream
@@ -166,6 +196,9 @@ function poller_run($argv, $argc){
proc_run('php','include/expire.php');
proc_run('php','include/cli_suggest.php');
+ require_once('include/hubloc.php');
+ remove_obsolete_hublocs();
+
/**
* End Cron Daily
*/
@@ -175,13 +208,16 @@ function poller_run($argv, $argc){
// This should be rare
$r = q("select xchan_photo_l, xchan_hash from xchan where xchan_photo_l != '' and xchan_photo_m = ''
- and xchan_photo_date < UTC_TIMESTAMP() - INTERVAL 1 DAY");
+ and xchan_photo_date < %s - INTERVAL %s",
+ db_utcnow(),
+ db_quoteinterval('1 DAY')
+ );
if($r) {
require_once('include/photo/photo_driver.php');
foreach($r as $rr) {
$photos = import_profile_photo($rr['xchan_photo_l'],$rr['xchan_hash']);
$x = q("update xchan set xchan_photo_l = '%s', xchan_photo_m = '%s', xchan_photo_s = '%s', xchan_photo_mimetype = '%s'
- where xchan_hash = '%s' limit 1",
+ where xchan_hash = '%s'",
dbesc($photos[0]),
dbesc($photos[1]),
dbesc($photos[2]),
@@ -220,13 +256,13 @@ function poller_run($argv, $argc){
}
- $sql_extra = (($manual_id) ? " AND abook_id = $manual_id " : "");
+ $sql_extra = (($manual_id) ? " AND abook_id = " . intval($manual_id) . " " : "");
reload_plugins();
$d = datetime_convert();
- //TODO check to see if there are any cronhooks before wasting a process
+ // TODO check to see if there are any cronhooks before wasting a process
if(! $restart)
proc_run('php','include/cronhooks.php');
@@ -234,17 +270,18 @@ function poller_run($argv, $argc){
// Only poll from those with suitable relationships
$abandon_sql = (($abandon_days)
- ? sprintf(" AND account_lastlog > UTC_TIMESTAMP() - INTERVAL %d DAY ", intval($abandon_days))
+ ? sprintf(" AND account_lastlog > %s - INTERVAL %s ", db_utcnow(), db_quoteinterval(intval($abandon_days).' DAY'))
: ''
);
-
- $contacts = q("SELECT abook_id, abook_flags, abook_updated, abook_connected, abook_closeness, abook_channel
- FROM abook LEFT JOIN account on abook_account = account_id where 1
+ $randfunc = db_getfunc('RAND');
+
+ $contacts = q("SELECT abook_id, abook_flags, abook_updated, abook_connected, abook_closeness, abook_xchan, abook_channel, xchan_network
+ FROM abook LEFT JOIN xchan on abook_xchan = xchan_hash LEFT JOIN account on abook_account = account_id
$sql_extra
- AND (( abook_flags & %d ) OR ( abook_flags = %d ))
- AND (( account_flags = %d ) OR ( account_flags = %d )) $abandon_sql ORDER BY RAND()",
- intval(ABOOK_FLAG_HIDDEN|ABOOK_FLAG_PENDING|ABOOK_FLAG_UNCONNECTED),
+ AND (( abook_flags & %d ) > 0 OR ( abook_flags = %d ))
+ AND (( account_flags = %d ) OR ( account_flags = %d )) $abandon_sql ORDER BY $randfunc",
+ intval(ABOOK_FLAG_HIDDEN|ABOOK_FLAG_PENDING|ABOOK_FLAG_UNCONNECTED|ABOOK_FLAG_FEED),
intval(0),
intval(ACCOUNT_OK),
intval(ACCOUNT_UNVERIFIED) // FIXME
@@ -255,21 +292,43 @@ function poller_run($argv, $argc){
foreach($contacts as $contact) {
+ if($contact['abook_flags'] & ABOOK_FLAG_SELF)
+ continue;
+
$update = false;
$t = $contact['abook_updated'];
$c = $contact['abook_connected'];
+ if($contact['abook_flags'] & ABOOK_FLAG_FEED) {
+ $min = service_class_fetch($contact['abook_channel'],'minimum_feedcheck_minutes');
+ if(! $min)
+ $min = intval(get_config('system','minimum_feedcheck_minutes'));
+ if(! $min)
+ $min = 60;
+ $x = datetime_convert('UTC','UTC',"now - $min minutes");
+ if($c < $x) {
+ proc_run('php','include/onepoll.php',$contact['abook_id']);
+ if($interval)
+ @time_sleep_until(microtime(true) + (float) $interval);
+ }
+ continue;
+ }
+
+
+ if($contact['xchan_network'] !== 'zot')
+ continue;
if($c == $t) {
if(datetime_convert('UTC','UTC', 'now') > datetime_convert('UTC','UTC', $t . " + 1 day"))
$update = true;
}
else {
+
// if we've never connected with them, start the mark for death countdown from now
- if($c == '0000-00-00 00:00:00') {
- $r = q("update abook set abook_connected = '%s' where abook_id = %d limit 1",
+ if($c == NULL_DATE) {
+ $r = q("update abook set abook_connected = '%s' where abook_id = %d",
dbesc(datetime_convert()),
intval($contact['abook_id'])
);
@@ -280,7 +339,7 @@ function poller_run($argv, $argc){
// He's dead, Jim
if(strcmp(datetime_convert('UTC','UTC', 'now'),datetime_convert('UTC','UTC', $c . " + 30 day")) > 0) {
- $r = q("update abook set abook_flags = (abook_flags | %d) where abook_id = %d limit 1",
+ $r = q("update abook set abook_flags = (abook_flags | %d) where abook_id = %d",
intval(ABOOK_FLAG_ARCHIVED),
intval($contact['abook_id'])
);
@@ -307,9 +366,11 @@ function poller_run($argv, $argc){
$update = true;
}
-
}
+ if($contact['abook_flags'] & (ABOOK_FLAG_PENDING|ABOOK_FLAG_ARCHIVED|ABOOK_FLAG_IGNORED))
+ continue;
+
if((! $update) && (! $force))
continue;
@@ -321,8 +382,10 @@ function poller_run($argv, $argc){
}
if($dirmode == DIRECTORY_MODE_SECONDARY || $dirmode == DIRECTORY_MODE_PRIMARY) {
- $r = q("select distinct ud_addr, updates.* from updates where not ( ud_flags & %d ) and ud_addr != '' and ( ud_last = '0000-00-00 00:00:00' OR ud_last > UTC_TIMESTAMP() - INTERVAL 7 DAY ) group by ud_addr ",
- intval(UPDATE_FLAGS_UPDATED)
+ $r = q("select distinct ud_addr, updates.* from updates where ( ud_flags & %d ) = 0 and ud_addr != '' and ( ud_last = '%s' OR ud_last > %s - INTERVAL %s ) group by ud_addr ",
+ intval(UPDATE_FLAGS_UPDATED),
+ dbesc(NULL_DATE),
+ db_utcnow(), db_quoteinterval('7 DAY')
);
if($r) {
foreach($r as $rr) {
@@ -330,7 +393,7 @@ function poller_run($argv, $argc){
// If they didn't respond when we attempted before, back off to once a day
// After 7 days we won't bother anymore
- if($rr['ud_last'] != '0000-00-00 00:00:00')
+ if($rr['ud_last'] != NULL_DATE)
if($rr['ud_last'] > datetime_convert('UTC','UTC', 'now - 1 day'))
continue;
proc_run('php','include/onedirsync.php',$rr['ud_id']);
@@ -339,7 +402,12 @@ function poller_run($argv, $argc){
}
}
}
-
+
+ set_config('system','lastpoll',datetime_convert());
+
+ //All done - clear the lockfile
+ @unlink($lockfile);
+
return;
}
diff --git a/include/profile_selectors.php b/include/profile_selectors.php
index 1ffcd49be..a80677cb3 100644
--- a/include/profile_selectors.php
+++ b/include/profile_selectors.php
@@ -18,6 +18,25 @@ function gender_selector($current="",$suffix="") {
return $o;
}
+function gender_selector_min($current="",$suffix="") {
+ $o = '';
+ $select = array('', t('Male'), t('Female'), t('Other'));
+
+ call_hooks('gender_selector_min', $select);
+
+ $o .= "<select name=\"gender$suffix\" id=\"gender-select$suffix\" size=\"1\" >";
+ foreach($select as $selection) {
+ if($selection !== 'NOTRANSLATION') {
+ $selected = (($selection == $current) ? ' selected="selected" ' : '');
+ $o .= "<option value=\"$selection\" $selected >$selection</option>";
+ }
+ }
+ $o .= '</select>';
+ return $o;
+}
+
+
+
function sexpref_selector($current="",$suffix="") {
$o = '';
$select = array('', t('Males'), t('Females'), t('Gay'), t('Lesbian'), t('No Preference'), t('Bisexual'), t('Autosexual'), t('Abstinent'), t('Virgin'), t('Deviant'), t('Fetish'), t('Oodles'), t('Nonsexual'));
@@ -37,6 +56,25 @@ function sexpref_selector($current="",$suffix="") {
}
+function sexpref_selector_min($current="",$suffix="") {
+ $o = '';
+ $select = array('', t('Males'), t('Females'), t('Other'));
+
+ call_hooks('sexpref_selector_min', $select);
+
+ $o .= "<select name=\"sexual$suffix\" id=\"sexual-select$suffix\" size=\"1\" >";
+ foreach($select as $selection) {
+ if($selection !== 'NOTRANSLATION') {
+ $selected = (($selection == $current) ? ' selected="selected" ' : '');
+ $o .= "<option value=\"$selection\" $selected >$selection</option>";
+ }
+ }
+ $o .= '</select>';
+ return $o;
+}
+
+
+
function marital_selector($current="",$suffix="") {
$o = '';
$select = array('', t('Single'), t('Lonely'), t('Available'), t('Unavailable'), t('Has crush'), t('Infatuated'), t('Dating'), t('Unfaithful'), t('Sex Addict'), t('Friends'), t('Friends/Benefits'), t('Casual'), t('Engaged'), t('Married'), t('Imaginarily married'), t('Partners'), t('Cohabiting'), t('Common law'), t('Happy'), t('Not looking'), t('Swinger'), t('Betrayed'), t('Separated'), t('Unstable'), t('Divorced'), t('Imaginarily divorced'), t('Widowed'), t('Uncertain'), t('It\'s complicated'), t('Don\'t care'), t('Ask me') );
@@ -53,3 +91,20 @@ function marital_selector($current="",$suffix="") {
$o .= '</select>';
return $o;
}
+
+function marital_selector_min($current="",$suffix="") {
+ $o = '';
+ $select = array('', t('Single'), t('Dating'), t('Cohabiting'), t('Married'), t('Separated'), t('Divorced'), t('Widowed'), t('It\'s complicated'), t('Other'));
+
+ call_hooks('marital_selector_min', $select);
+
+ $o .= "<select name=\"marital\" id=\"marital-select\" size=\"1\" >";
+ foreach($select as $selection) {
+ if($selection !== 'NOTRANSLATION') {
+ $selected = (($selection == $current) ? ' selected="selected" ' : '');
+ $o .= "<option value=\"$selection\" $selected >$selection</option>";
+ }
+ }
+ $o .= '</select>';
+ return $o;
+}
diff --git a/include/queue.php b/include/queue.php
index 239d61fc0..b6a540ef9 100644
--- a/include/queue.php
+++ b/include/queue.php
@@ -22,7 +22,9 @@ function queue_run($argv, $argc){
logger('queue: start');
- $r = q("DELETE FROM outq WHERE outq_created < UTC_TIMESTAMP() - INTERVAL 3 DAY");
+ $r = q("DELETE FROM outq WHERE outq_created < %s - INTERVAL %s",
+ db_utcnow(), db_quoteinterval('3 DAY')
+ );
if($queue_id) {
$r = q("SELECT * FROM outq WHERE outq_hash = '%s' LIMIT 1",
@@ -37,8 +39,18 @@ function queue_run($argv, $argc){
// so that we don't start off a thousand deliveries for a couple of dead hubs.
// The zot driver will deliver everything destined for a single hub once contact is made (*if* contact is made).
// Other drivers will have to do something different here and may need their own query.
-
- $r = q("SELECT * FROM outq WHERE outq_delivered = 0 and (( outq_created > UTC_TIMESTAMP() - INTERVAL 12 HOUR and outq_updated < UTC_TIMESTAMP() - INTERVAL 15 MINUTE ) OR ( outq_updated < UTC_TIMESTAMP() - INTERVAL 1 HOUR )) and outq_driver in ('','zot') group by outq_posturl");
+ if(ACTIVE_DBTYPE == DBTYPE_POSTGRES) {
+ $prefix = 'DISTINCT ON (outq_posturl)';
+ $suffix = 'ORDER BY outq_posturl';
+ } else {
+ $prefix = '';
+ $suffix = 'GROUP BY outq_posturl';
+ }
+ $r = q("SELECT $prefix * FROM outq WHERE outq_delivered = 0 and (( outq_created > %s - INTERVAL %s and outq_updated < %s - INTERVAL %s ) OR ( outq_updated < %s - INTERVAL %s )) $suffix",
+ db_utcnow(), db_quoteinterval('12 HOUR'),
+ db_utcnow(), db_quoteinterval('15 MINUTE'),
+ db_utcnow(), db_quoteinterval('1 HOUR')
+ );
}
if(! $r)
return;
@@ -46,13 +58,31 @@ function queue_run($argv, $argc){
foreach($r as $rr) {
if(in_array($rr['outq_posturl'],$deadguys))
continue;
+
+ if($rr['outq_driver'] === 'post') {
+ $result = z_post_url($rr['outq_posturl'],$rr['outq_msg']);
+ if($result['success'] && $result['return_code'] < 300) {
+ logger('queue: queue post success to ' . $rr['outq_posturl'], LOGGER_DEBUG);
+ $y = q("delete from outq where outq_hash = '%s'",
+ dbesc($rr['ouq_hash'])
+ );
+ }
+ else {
+ logger('queue: queue post returned ' . $result['return_code'] . ' from ' . $rr['outq_posturl'],LOGGER_DEBUG);
+ $y = q("update outq set outq_updated = '%s' where outq_hash = '%s'",
+ dbesc(datetime_convert()),
+ dbesc($rr['outq_hash'])
+ );
+ }
+ continue;
+ }
$result = zot_zot($rr['outq_posturl'],$rr['outq_notify']);
if($result['success']) {
zot_process_response($rr['outq_posturl'],$result, $rr);
}
else {
$deadguys[] = $rr['outq_posturl'];
- $y = q("update outq set outq_updated = '%s' where outq_hash = '%s' limit 1",
+ $y = q("update outq set outq_updated = '%s' where outq_hash = '%s'",
dbesc(datetime_convert()),
dbesc($rr['outq_hash'])
);
diff --git a/include/queue_fn.php b/include/queue_fn.php
index 512edb531..22580bc48 100644
--- a/include/queue_fn.php
+++ b/include/queue_fn.php
@@ -2,7 +2,7 @@
function update_queue_time($id) {
logger('queue: requeue item ' . $id);
- q("UPDATE outq SET outq_updated = '%s' WHERE outq_hash = '%s' LIMIT 1",
+ q("UPDATE outq SET outq_updated = '%s' WHERE outq_hash = '%s'",
dbesc(datetime_convert()),
dbesc($id)
);
@@ -10,7 +10,7 @@ function update_queue_time($id) {
function remove_queue_item($id) {
logger('queue: remove queue item ' . $id);
- q("DELETE FROM outq WHERE hash = '%s' LIMIT 1",
+ q("DELETE FROM outq WHERE hash = '%s'",
dbesc($id)
);
}
diff --git a/include/reddav.php b/include/reddav.php
index c4ef5bd08..750ca1b24 100644
--- a/include/reddav.php
+++ b/include/reddav.php
@@ -1,713 +1,31 @@
<?php
/**
* @file include/reddav.php
- * @brief DAV related classes from SabreDAV for Red Matrix.
+ * @brief some DAV related functions for RedMatrix.
*
- * This file contains the classes from SabreDAV that got extended to adapt it
- * for Red Matrix.
+ * This file contains some functions which did not fit into one of the RedDAV
+ * classes.
*
- * You find the original SabreDAV classes under @ref vendor/sabre/dav/.
+ * The extended SabreDAV classes you will find in the RedDAV namespace under
+ * @ref includes/RedDAV/.
+ * The original SabreDAV classes you can find under @ref vendor/sabre/dav/.
* We need to use SabreDAV 1.8.x for PHP5.3 compatibility. SabreDAV >= 2.0
* requires PHP >= 5.4.
- */
-
-use Sabre\DAV;
-require_once('vendor/autoload.php');
-require_once('include/attach.php');
-
-
-/**
- * @brief RedDirectory class.
*
- * A class that represents a directory.
- */
-class RedDirectory extends DAV\Node implements DAV\ICollection, DAV\IQuota {
-
- /**
- * @brief The path inside /cloud
- */
- private $red_path;
- private $folder_hash;
- /**
- * @brief The full path as seen in the browser.
- * /cloud + $red_path
- * @todo I think this is not used anywhere, we always strip '/cloud' and only use it in debug
- */
- private $ext_path;
- private $root_dir = '';
- private $auth;
- /**
- * @brief The real path on the filesystem.
- * The actual path in store/ with the hashed names.
- */
- private $os_path = '';
-
- /**
- * @brief Sets up the directory node, expects a full path.
- *
- * @param string $ext_path a full path
- * @param RedBasicAuth &$auth_plugin
- */
- public function __construct($ext_path, &$auth_plugin) {
- logger('RedDirectory::__construct() ' . $ext_path, LOGGER_DATA);
- $this->ext_path = $ext_path;
- // remove "/cloud" from the beginning of the path
- $this->red_path = ((strpos($ext_path, '/cloud') === 0) ? substr($ext_path, 6) : $ext_path);
- if (! $this->red_path) {
- $this->red_path = '/';
- }
- $this->auth = $auth_plugin;
- $this->folder_hash = '';
- $this->getDir();
-
- if ($this->auth->browser) {
- $this->auth->browser->set_writeable();
- }
- }
-
- private function log() {
- logger('RedDirectory::log() ext_path ' . $this->ext_path, LOGGER_DATA);
- logger('RedDirectory::log() os_path ' . $this->os_path, LOGGER_DATA);
- logger('RedDirectory::log() red_path ' . $this->red_path, LOGGER_DATA);
- }
-
- /**
- * @brief Returns an array with all the child nodes.
- *
- * @throws DAV\Exception\Forbidden
- * @return array DAV\INode[]
- */
- public function getChildren() {
- logger('RedDirectory::getChildren() called for ' . $this->ext_path, LOGGER_DATA);
- $this->log();
-
- if (get_config('system', 'block_public') && (! $this->auth->channel_id) && (! $this->auth->observer)) {
- throw new DAV\Exception\Forbidden('Permission denied.');
- }
-
- if (($this->auth->owner_id) && (! perm_is_allowed($this->auth->owner_id, $this->auth->observer, 'view_storage'))) {
- throw new DAV\Exception\Forbidden('Permission denied.');
- }
-
- $contents = RedCollectionData($this->red_path, $this->auth);
- return $contents;
- }
-
- /**
- * @brief Returns a child by name.
- *
- *
- * @throw DAV\Exception\Forbidden
- * @throw DAV\Exception\NotFound
- * @param string $name
- */
- public function getChild($name) {
- logger('RedDirectory::getChild(): ' . $name, LOGGER_DATA);
-
- if (get_config('system', 'block_public') && (! $this->auth->channel_id) && (! $this->auth->observer)) {
- throw new DAV\Exception\Forbidden('Permission denied.');
- }
-
- if (($this->auth->owner_id) && (! perm_is_allowed($this->auth->owner_id, $this->auth->observer, 'view_storage'))) {
- throw new DAV\Exception\Forbidden('Permission denied.');
- }
-
- if ($this->red_path === '/' && $name === 'cloud') {
- return new RedDirectory('/cloud', $this->auth);
- }
-
- $x = RedFileData($this->ext_path . '/' . $name, $this->auth);
- if ($x) {
- return $x;
- }
-
- throw new DAV\Exception\NotFound('The file with name: ' . $name . ' could not be found.');
- }
-
- /**
- * @brief Returns the name of the directory.
- *
- * @return string
- */
- public function getName() {
- logger('RedDirectory::getName() returns: ' . basename($this->red_path), LOGGER_DATA);
- return (basename($this->red_path));
- }
-
- /**
- * @brief Renames the directory.
- *
- * @todo handle duplicate directory name
- *
- * @throw DAV\Exception\Forbidden
- * @param string $name The new name of the directory.
- * @return void
- */
- public function setName($name) {
- logger('RedDirectory::setName(): ' . basename($this->red_path) . ' -> ' . $name, LOGGER_DATA);
-
- if ((! $name) || (! $this->auth->owner_id)) {
- logger('RedDirectory::setName(): permission denied');
- throw new DAV\Exception\Forbidden('Permission denied.');
- }
-
- if (! perm_is_allowed($this->auth->owner_id, $this->auth->observer, 'write_storage')) {
- logger('RedDirectory::setName(): permission denied');
- throw new DAV\Exception\Forbidden('Permission denied.');
- }
-
- list($parent_path, ) = DAV\URLUtil::splitPath($this->red_path);
- $new_path = $parent_path . '/' . $name;
-
- $r = q("UPDATE attach SET filename = '%s' WHERE hash = '%s' AND uid = %d LIMIT 1",
- dbesc($name),
- dbesc($this->folder_hash),
- intval($this->auth->owner_id)
- );
-
- $this->red_path = $new_path;
- }
-
- /**
- * @brief Creates a new file in the directory.
- *
- * Data will either be supplied as a stream resource, or in certain cases
- * as a string. Keep in mind that you may have to support either.
- *
- * After successful creation of the file, you may choose to return the ETag
- * of the new file here.
- *
- * @throws DAV\Exception\Forbidden
- * @param string $name Name of the file
- * @param resource|string $data Initial payload
- * @return null|string ETag
- */
- public function createFile($name, $data = null) {
- logger('RedDirectory::createFile(): ' . $name, LOGGER_DATA);
-
- if (! $this->auth->owner_id) {
- logger('RedDirectory::createFile(): permission denied');
- throw new DAV\Exception\Forbidden('Permission denied.');
- }
-
- if (! perm_is_allowed($this->auth->owner_id, $this->auth->observer, 'write_storage')) {
- logger('RedDirectory::createFile(): permission denied');
- throw new DAV\Exception\Forbidden('Permission denied.');
- }
-
- $mimetype = z_mime_content_type($name);
-
- $c = q("SELECT * FROM channel WHERE channel_id = %d AND NOT (channel_pageflags & %d) LIMIT 1",
- intval($this->auth->owner_id),
- intval(PAGE_REMOVED)
- );
-
- if (! $c) {
- logger('RedDirectory::createFile(): no channel');
- throw new DAV\Exception\Forbidden('Permission denied.');
- }
-
- $filesize = 0;
- $hash = random_string();
-
- $r = q("INSERT INTO attach ( aid, uid, hash, creator, filename, folder, flags, filetype, filesize, revision, data, created, edited, allow_cid, allow_gid, deny_cid, deny_gid )
- VALUES ( %d, %d, '%s', '%s', '%s', '%s', '%s', '%s', %d, %d, '%s', '%s', '%s', '%s', '%s', '%s', '%s' ) ",
- intval($c[0]['channel_account_id']),
- intval($c[0]['channel_id']),
- dbesc($hash),
- dbesc($this->auth->observer),
- dbesc($name),
- dbesc($this->folder_hash),
- dbesc(ATTACH_FLAG_OS),
- dbesc($mimetype),
- intval($filesize),
- intval(0),
- dbesc($this->os_path . '/' . $hash),
- dbesc(datetime_convert()),
- dbesc(datetime_convert()),
- dbesc($c[0]['channel_allow_cid']),
- dbesc($c[0]['channel_allow_gid']),
- dbesc($c[0]['channel_deny_cid']),
- dbesc($c[0]['channel_deny_gid'])
- );
-
- $f = 'store/' . $this->auth->owner_nick . '/' . (($this->os_path) ? $this->os_path . '/' : '') . $hash;
-
- // returns the number of bytes that were written to the file, or FALSE on failure
- $size = file_put_contents($f, $data);
- // delete attach entry if file_put_contents() failed
- if ($size === false) {
- logger('RedDirectory::createFile(): file_put_contents() failed for ' . $name, LOGGER_DEBUG);
- attach_delete($c[0]['channel_id'], $hash);
- return;
- }
-
- // returns now
- $edited = datetime_convert();
-
- // updates entry with filesize and timestamp
- $d = q("UPDATE attach SET filesize = '%s', edited = '%s' WHERE hash = '%s' AND uid = %d LIMIT 1",
- dbesc($size),
- dbesc($edited),
- dbesc($hash),
- intval($c[0]['channel_id'])
- );
-
- // update the folder's lastmodified timestamp
- $e = q("UPDATE attach SET edited = '%s' WHERE hash = '%s' AND uid = %d LIMIT 1",
- dbesc($edited),
- dbesc($this->folder_hash),
- intval($c[0]['channel_id'])
- );
-
- $maxfilesize = get_config('system', 'maxfilesize');
- if (($maxfilesize) && ($size > $maxfilesize)) {
- attach_delete($c[0]['channel_id'], $hash);
- return;
- }
-
- // check against service class quota
- $limit = service_class_fetch($c[0]['channel_id'], 'attach_upload_limit');
- if ($limit !== false) {
- $x = q("SELECT SUM(filesize) AS total FROM attach WHERE aid = %d ",
- intval($c[0]['channel_account_id'])
- );
- if (($x) && ($x[0]['total'] + $size > $limit)) {
- logger('reddav: service class limit exceeded for ' . $c[0]['channel_name'] . ' total usage is ' . $x[0]['total'] . ' limit is ' . $limit);
- attach_delete($c[0]['channel_id'], $hash);
- return;
- }
- }
- }
-
- /**
- * @brief Creates a new subdirectory.
- *
- * @param string $name the directory to create
- * @return void
- */
- public function createDirectory($name) {
- logger('RedDirectory::createDirectory(): ' . $name, LOGGER_DEBUG);
-
- if ((! $this->auth->owner_id) || (! perm_is_allowed($this->auth->owner_id, $this->auth->observer, 'write_storage'))) {
- throw new DAV\Exception\Forbidden('Permission denied.');
- }
-
- $r = q("SELECT * FROM channel WHERE channel_id = %d AND NOT (channel_pageflags & %d) LIMIT 1",
- intval($this->auth->owner_id),
- intval(PAGE_REMOVED)
- );
-
- if ($r) {
- $result = attach_mkdir($r[0], $this->auth->observer, array('filename' => $name, 'folder' => $this->folder_hash));
- if (! $result['success']) {
- logger('RedDirectory::createDirectory(): ' . print_r($result, true), LOGGER_DEBUG);
- }
- }
- }
-
- /**
- * @brief Checks if a child exists.
- *
- * @param string $name
- * @return boolean
- */
- public function childExists($name) {
- // On /cloud we show a list of available channels.
- // @todo what happens if no channels are available?
- if ($this->red_path === '/' && $name === 'cloud') {
- logger('RedDirectory::childExists() /cloud: true', LOGGER_DATA);
- return true;
- }
-
- $x = RedFileData($this->ext_path . '/' . $name, $this->auth, true);
- logger('RedFileData returns: ' . print_r($x, true), LOGGER_DATA);
- if ($x)
- return true;
- return false;
- }
-
- /**
- * @todo add description of what this function does.
- *
- * @throw DAV\Exception\NotFound
- * @return void
- */
- function getDir() {
- logger('RedDirectory::getDir(): ' . $this->ext_path, LOGGER_DEBUG);
- $this->auth->log();
-
- $file = $this->ext_path;
-
- $x = strpos($file, '/cloud');
- if ($x === false)
- return;
- if ($x === 0) {
- $file = substr($file, 6);
- }
-
- if ((! $file) || ($file === '/')) {
- return;
- }
-
- $file = trim($file, '/');
- $path_arr = explode('/', $file);
-
- if (! $path_arr)
- return;
-
- logger('RedDirectory::getDir(): path: ' . print_r($path_arr, true), LOGGER_DATA);
-
- $channel_name = $path_arr[0];
-
- $r = q("SELECT channel_id FROM channel WHERE channel_address = '%s' AND NOT ( channel_pageflags & %d ) LIMIT 1",
- dbesc($channel_name),
- intval(PAGE_REMOVED)
- );
-
- if (! $r) {
- throw new DAV\Exception\NotFound('The file with name: ' . $channel_name . ' could not be found.');
- return;
- }
-
- $channel_id = $r[0]['channel_id'];
- $this->auth->owner_id = $channel_id;
- $this->auth->owner_nick = $channel_name;
-
- $path = '/' . $channel_name;
- $folder = '';
- $os_path = '';
-
- for ($x = 1; $x < count($path_arr); $x++) {
- $r = q("select id, hash, filename, flags from attach where folder = '%s' and filename = '%s' and uid = %d and (flags & %d)",
- dbesc($folder),
- dbesc($path_arr[$x]),
- intval($channel_id),
- intval(ATTACH_FLAG_DIR)
- );
-
- if ($r && ( $r[0]['flags'] & ATTACH_FLAG_DIR)) {
- $folder = $r[0]['hash'];
- if (strlen($os_path))
- $os_path .= '/';
- $os_path .= $folder;
-
- $path = $path . '/' . $r[0]['filename'];
- }
- }
- $this->folder_hash = $folder;
- $this->os_path = $os_path;
- return;
- }
-
- /**
- * @brief Returns the last modification time for the directory, as a UNIX
- * timestamp.
- *
- * It looks for the last edited file in the folder. If it is an empty folder
- * it returns the lastmodified time of the folder itself, to prevent zero
- * timestamps.
- *
- * @return int last modification time in UNIX timestamp
- */
- public function getLastModified() {
- $r = q("SELECT edited FROM attach WHERE folder = '%s' AND uid = %d ORDER BY edited DESC LIMIT 1",
- dbesc($this->folder_hash),
- intval($this->auth->owner_id)
- );
- if (! $r) {
- $r = q("SELECT edited FROM attach WHERE hash = '%s' AND uid = %d LIMIT 1",
- dbesc($this->folder_hash),
- intval($this->auth->owner_id)
- );
- if (! $r)
- return '';
- }
- return datetime_convert('UTC', 'UTC', $r[0]['edited'], 'U');
- }
-
- /**
- * @brief Return quota usage.
- *
- * Do guests relly see the used/free values from filesystem of the complete store directory?
- *
- * @return array with used and free values in bytes.
- */
- public function getQuotaInfo() {
- // values from the filesystem of the complete <i>store/</i> directory
- $limit = disk_total_space('store');
- $free = disk_free_space('store');
-
- if ($this->auth->owner_id) {
- $c = q("select * from channel where channel_id = %d and not (channel_pageflags & %d) limit 1",
- intval($this->auth->owner_id),
- intval(PAGE_REMOVED)
- );
-
- $ulimit = service_class_fetch($c[0]['channel_id'], 'attach_upload_limit');
- $limit = (($ulimit) ? $ulimit : $limit);
-
- $x = q("select sum(filesize) as total from attach where aid = %d",
- intval($c[0]['channel_account_id'])
- );
- $free = (($x) ? $limit - $x[0]['total'] : 0);
- }
-
- return array(
- $limit - $free,
- $free
- );
- }
-} // class RedDirectory
-
-
-
-/**
- * RedFile class.
+ * @todo split up the classes into own files.
*
+ * @link http://github.com/friendica/red
+ * @license http://opensource.org/licenses/mit-license.php The MIT License (MIT)
*/
-class RedFile extends DAV\Node implements DAV\IFile {
-
- private $data;
- private $auth;
- private $name;
-
- /**
- * Sets up the node, expects a full path name.
- *
- * @param string $name
- * @param array $data from attach table
- * @param &$auth
- */
- public function __construct($name, $data, &$auth) {
- $this->name = $name;
- $this->data = $data;
- $this->auth = $auth;
-
- logger('RedFile::__construct(): ' . print_r($this->data, true), LOGGER_DATA);
- }
-
- /**
- * @brief Returns the name of the file.
- *
- * @return string
- */
- public function getName() {
- logger('RedFile::getName(): ' . basename($this->name), LOGGER_DEBUG);
- return basename($this->name);
- }
- /**
- * @brief Renames the file.
- *
- * @throw DAV\Exception\Forbidden
- * @param string $name The new name of the file.
- * @return void
- */
- public function setName($newName) {
- logger('RedFile::setName(): ' . basename($this->name) . ' -> ' . $newName, LOGGER_DEBUG);
-
- if ((! $newName) || (! $this->auth->owner_id) || (! perm_is_allowed($this->auth->owner_id, $this->auth->observer, 'write_storage'))) {
- throw new DAV\Exception\Forbidden('Permission denied.');
- }
-
- $newName = str_replace('/', '%2F', $newName);
-
- $r = q("UPDATE attach SET filename = '%s' WHERE hash = '%s' AND id = %d LIMIT 1",
- dbesc($this->data['filename']),
- intval($this->data['id'])
- );
- }
-
- /**
- * @brief Updates the data of the file.
- *
- * @param resource $data
- * @return void
- */
- public function put($data) {
- logger('RedFile::put(): ' . basename($this->name), LOGGER_DEBUG);
- $size = 0;
-
- // @todo only 3 values are needed
- $c = q("SELECT * FROM channel WHERE channel_id = %d AND NOT (channel_pageflags & %d) LIMIT 1",
- intval($this->auth->owner_id),
- intval(PAGE_REMOVED)
- );
-
- $r = q("SELECT flags, folder, data FROM attach WHERE hash = '%s' AND uid = %d LIMIT 1",
- dbesc($this->data['hash']),
- intval($c[0]['channel_id'])
- );
- if ($r) {
- if ($r[0]['flags'] & ATTACH_FLAG_OS) {
- $f = 'store/' . $this->auth->owner_nick . '/' . (($r[0]['data']) ? $r[0]['data'] : '');
- // @todo check return value and set $size directly
- @file_put_contents($f, $data);
- $size = @filesize($f);
- logger('RedFile::put(): filename: ' . $f . ' size: ' . $size, LOGGER_DEBUG);
- } else {
- $r = q("UPDATE attach SET data = '%s' WHERE hash = '%s' AND uid = %d LIMIT 1",
- dbesc(stream_get_contents($data)),
- dbesc($this->data['hash']),
- intval($this->data['uid'])
- );
- $r = q("SELECT length(data) AS fsize FROM attach WHERE hash = '%s' AND uid = %d LIMIT 1",
- dbesc($this->data['hash']),
- intval($this->data['uid'])
- );
- if ($r) {
- $size = $r[0]['fsize'];
- }
- }
- }
-
- // returns now()
- $edited = datetime_convert();
-
- $d = q("UPDATE attach SET filesize = '%s', edited = '%s' WHERE hash = '%s' AND uid = %d LIMIT 1",
- dbesc($size),
- dbesc($edited),
- dbesc($this->data['hash']),
- intval($c[0]['channel_id'])
- );
-
- // update the folder's lastmodified timestamp
- $e = q("UPDATE attach SET edited = '%s' WHERE hash = '%s' AND uid = %d LIMIT 1",
- dbesc($edited),
- dbesc($r[0]['folder']),
- intval($c[0]['channel_id'])
- );
-
- // @todo do we really want to remove the whole file if an update fails
- // because of maxfilesize or quota?
- // There is an Exception "InsufficientStorage" or "PaymentRequired" for
- // our service class from SabreDAV we could use.
-
- $maxfilesize = get_config('system', 'maxfilesize');
- if (($maxfilesize) && ($size > $maxfilesize)) {
- attach_delete($c[0]['channel_id'], $this->data['hash']);
- return;
- }
-
- $limit = service_class_fetch($c[0]['channel_id'], 'attach_upload_limit');
- if ($limit !== false) {
- $x = q("select sum(filesize) as total from attach where aid = %d ",
- intval($c[0]['channel_account_id'])
- );
- if (($x) && ($x[0]['total'] + $size > $limit)) {
- logger('RedFile::put(): service class limit exceeded for ' . $c[0]['channel_name'] . ' total usage is ' . $x[0]['total'] . ' limit is ' . $limit);
- attach_delete($c[0]['channel_id'], $this->data['hash']);
- return;
- }
- }
- }
-
- /**
- * @brief Returns the raw data.
- *
- * @return string
- */
- public function get() {
- logger('RedFile::get(): ' . basename($this->name), LOGGER_DEBUG);
-
- $r = q("select data, flags, filename, filetype from attach where hash = '%s' and uid = %d limit 1",
- dbesc($this->data['hash']),
- intval($this->data['uid'])
- );
- if ($r) {
- // @todo this should be a global definition
- $unsafe_types = array('text/html', 'text/css', 'application/javascript');
-
- if (in_array($r[0]['filetype'], $unsafe_types)) {
- header('Content-disposition: attachment; filename="' . $r[0]['filename'] . '"');
- header('Content-type: text/plain');
- }
-
- if ($r[0]['flags'] & ATTACH_FLAG_OS ) {
- $f = 'store/' . $this->auth->owner_nick . '/' . (($this->os_path) ? $this->os_path . '/' : '') . $r[0]['data'];
- return fopen($f, 'rb');
- }
- return $r[0]['data'];
- }
- }
-
- /**
- * @brief Returns the ETag for a file.
- *
- * An ETag is a unique identifier representing the current version of the file. If the file changes, the ETag MUST change.
- * The ETag is an arbitrary string, but MUST be surrounded by double-quotes.
- *
- * Return null if the ETag can not effectively be determined.
- *
- * @return mixed
- */
- public function getETag() {
- $ret = null;
- if ($this->data['hash']) {
- $ret = '"' . $this->data['hash'] . '"';
- }
- return $ret;
- }
-
- /**
- * @brief Returns the mime-type for a file.
- *
- * If null is returned, we'll assume application/octet-stream
- *
- * @return mixed
- */
- public function getContentType() {
- // @todo this should be a global definition.
- $unsafe_types = array('text/html', 'text/css', 'application/javascript');
- if (in_array($this->data['filetype'], $unsafe_types)) {
- return 'text/plain';
- }
- return $this->data['filetype'];
- }
-
- /**
- * @brief Returns the size of the node, in bytes.
- *
- * @return int
- */
- public function getSize() {
- return $this->data['filesize'];
- }
-
- /**
- * @brief Returns the last modification time for the file, as a unix
- * timestamp.
- *
- * @return int last modification time in UNIX timestamp
- */
- public function getLastModified() {
- return datetime_convert('UTC', 'UTC', $this->data['edited'], 'U');
- }
-
- /**
- * @brief Delete the file.
- *
- * @throw DAV\Exception\Forbidden
- * @return void
- */
- public function delete() {
- logger('RedFile::delete(): ' . basename($this->name), LOGGER_DEBUG);
-
- if ((! $this->auth->owner_id) || (! perm_is_allowed($this->auth->owner_id, $this->auth->observer, 'write_storage'))) {
- throw new DAV\Exception\Forbidden('Permission denied.');
- }
-
- if ($this->auth->owner_id !== $this->auth->channel_id) {
- if (($this->auth->observer !== $this->data['creator']) || ($this->data['flags'] & ATTACH_FLAG_DIR)) {
- throw new DAV\Exception\Forbidden('Permission denied.');
- }
- }
-
- attach_delete($this->auth->owner_id, $this->data['hash']);
- }
-} // class RedFile
+use Sabre\DAV;
+use RedMatrix\RedDAV;
+require_once('vendor/autoload.php');
+require_once('include/attach.php');
+require_once('include/RedDAV/RedFile.php');
+require_once('include/RedDAV/RedDirectory.php');
+require_once('include/RedDAV/RedBasicAuth.php');
/**
* @brief Returns an array with viewable channels.
@@ -716,14 +34,15 @@ class RedFile extends DAV\Node implements DAV\IFile {
* has <b>view_storage</b> perms.
*
* @todo Is there any reason why this is not inside RedDirectory class?
+ * @fixme function name looks like a class name, should we rename it?
*
- * @param $auth
- * @return array containing RedDirectory objects
+ * @param RedBasicAuth &$auth
+ * @return array RedDirectory[]
*/
function RedChannelList(&$auth) {
$ret = array();
- $r = q("SELECT channel_id, channel_address FROM channel WHERE NOT (channel_pageflags & %d) AND NOT (channel_pageflags & %d)",
+ $r = q("SELECT channel_id, channel_address FROM channel WHERE NOT (channel_pageflags & %d)>0 AND NOT (channel_pageflags & %d)>0",
intval(PAGE_REMOVED),
intval(PAGE_HIDDEN)
);
@@ -731,9 +50,9 @@ function RedChannelList(&$auth) {
if ($r) {
foreach ($r as $rr) {
if (perm_is_allowed($rr['channel_id'], $auth->observer, 'view_storage')) {
- logger('RedChannelList: ' . '/cloud/' . $rr['channel_address'], LOGGER_DATA);
+ logger('found channel: /cloud/' . $rr['channel_address'], LOGGER_DATA);
// @todo can't we drop '/cloud'? It gets stripped off anyway in RedDirectory
- $ret[] = new RedDirectory('/cloud/' . $rr['channel_address'], $auth);
+ $ret[] = new RedDAV\RedDirectory('/cloud/' . $rr['channel_address'], $auth);
}
}
}
@@ -746,11 +65,15 @@ function RedChannelList(&$auth) {
*
* Array with all RedDirectory and RedFile DAV\Node items for the given path.
*
- * @todo Is there any reason why this is not inside RedDirectory class? Seems only to be used there and we could simplify it a bit there.
+ * @todo Is there any reason why this is not inside RedDirectory class? Seems
+ * only to be used there and we could simplify it a bit there.
+ * @fixme function name looks like a class name, should we rename it?
*
* @param string $file path to a directory
- * @param &$auth
- * @returns array DAV\INode[]
+ * @param RedBasicAuth &$auth
+ * @returns null|array \Sabre\DAV\INode[]
+ * @throw \Sabre\DAV\Exception\Forbidden
+ * @throw \Sabre\DAV\Exception\NotFound
*/
function RedCollectionData($file, &$auth) {
$ret = array();
@@ -767,7 +90,7 @@ function RedCollectionData($file, &$auth) {
$file = trim($file, '/');
$path_arr = explode('/', $file);
-
+
if (! $path_arr)
return null;
@@ -792,7 +115,7 @@ function RedCollectionData($file, &$auth) {
$permission_error = false;
for ($x = 1; $x < count($path_arr); $x++) {
- $r = q("SELECT id, hash, filename, flags FROM attach WHERE folder = '%s' AND filename = '%s' AND uid = %d AND (flags & %d) $perms LIMIT 1",
+ $r = q("SELECT id, hash, filename, flags FROM attach WHERE folder = '%s' AND filename = '%s' AND uid = %d AND (flags & %d)>0 $perms LIMIT 1",
dbesc($folder),
dbesc($path_arr[$x]),
intval($channel_id),
@@ -801,7 +124,7 @@ function RedCollectionData($file, &$auth) {
if (! $r) {
// path wasn't found. Try without permissions to see if it was the result of permissions.
$errors = true;
- $r = q("select id, hash, filename, flags from attach where folder = '%s' and filename = '%s' and uid = %d and (flags & %d) limit 1",
+ $r = q("select id, hash, filename, flags from attach where folder = '%s' and filename = '%s' and uid = %d and (flags & %d)>0 limit 1",
dbesc($folder),
basename($path_arr[$x]),
intval($channel_id),
@@ -829,23 +152,28 @@ function RedCollectionData($file, &$auth) {
// This should no longer be needed since we just returned errors for paths not found
if ($path !== '/' . $file) {
- logger("RedCollectionData: Path mismatch: $path !== /$file");
+ logger("Path mismatch: $path !== /$file");
return NULL;
}
-
- $r = q("select id, uid, hash, filename, filetype, filesize, revision, folder, flags, created, edited from attach where folder = '%s' and uid = %d $perms group by filename",
+ if(ACTIVE_DBTYPE == DBTYPE_POSTGRES) {
+ $prefix = 'DISTINCT ON (filename)';
+ $suffix = 'ORDER BY filename';
+ } else {
+ $prefix = '';
+ $suffix = 'GROUP BY filename';
+ }
+ $r = q("select $prefix id, uid, hash, filename, filetype, filesize, revision, folder, flags, created, edited from attach where folder = '%s' and uid = %d $perms $suffix",
dbesc($folder),
intval($channel_id)
);
foreach ($r as $rr) {
- logger('RedCollectionData: filename: ' . $rr['filename'], LOGGER_DATA);
-
+ //logger('filename: ' . $rr['filename'], LOGGER_DEBUG);
if ($rr['flags'] & ATTACH_FLAG_DIR) {
// @todo can't we drop '/cloud'? it gets stripped off anyway in RedDirectory
- $ret[] = new RedDirectory('/cloud' . $path . '/' . $rr['filename'], $auth);
+ $ret[] = new RedDAV\RedDirectory('/cloud' . $path . '/' . $rr['filename'], $auth);
} else {
- $ret[] = new RedFile('/cloud' . $path . '/' . $rr['filename'], $rr, $auth);
+ $ret[] = new RedDAV\RedFile('/cloud' . $path . '/' . $rr['filename'], $rr, $auth);
}
}
@@ -856,12 +184,17 @@ function RedCollectionData($file, &$auth) {
/**
* @brief TODO What exactly is this function for?
*
+ * @fixme function name looks like a class name, should we rename it?
+ *
* @param string $file
- * @param &$auth
+ * path to file or directory
+ * @param RedBasicAuth &$auth
* @param boolean $test (optional) enable test mode
+ * @return RedFile|RedDirectory|boolean|null
+ * @throw \Sabre\DAV\Exception\Forbidden
*/
function RedFileData($file, &$auth, $test = false) {
- logger('RedFileData:' . $file . (($test) ? ' (test mode) ' : ''), LOGGER_DEBUG);
+ logger($file . (($test) ? ' (test mode) ' : ''), LOGGER_DATA);
$x = strpos($file, '/cloud');
if ($x === 0) {
@@ -869,13 +202,13 @@ function RedFileData($file, &$auth, $test = false) {
}
if ((! $file) || ($file === '/')) {
- return new RedDirectory('/', $auth);
+ return new RedDAV\RedDirectory('/', $auth);
}
$file = trim($file, '/');
$path_arr = explode('/', $file);
-
+
if (! $path_arr)
return null;
@@ -904,7 +237,7 @@ function RedFileData($file, &$auth, $test = false) {
$errors = false;
for ($x = 1; $x < count($path_arr); $x++) {
- $r = q("select id, hash, filename, flags from attach where folder = '%s' and filename = '%s' and uid = %d and (flags & %d) $perms",
+ $r = q("select id, hash, filename, flags from attach where folder = '%s' and filename = '%s' and uid = %d and (flags & %d)>0 $perms",
dbesc($folder),
dbesc($path_arr[$x]),
intval($channel_id),
@@ -914,10 +247,10 @@ function RedFileData($file, &$auth, $test = false) {
if ($r && ( $r[0]['flags'] & ATTACH_FLAG_DIR)) {
$folder = $r[0]['hash'];
$path = $path . '/' . $r[0]['filename'];
- }
+ }
if (! $r) {
$r = q("select id, uid, hash, filename, filetype, filesize, revision, folder, flags, created, edited from attach
- where folder = '%s' and filename = '%s' and uid = %d $perms group by filename limit 1",
+ where folder = '%s' and filename = '%s' and uid = %d $perms order by filename limit 1",
dbesc($folder),
dbesc(basename($file)),
intval($channel_id)
@@ -926,7 +259,7 @@ function RedFileData($file, &$auth, $test = false) {
if (! $r) {
$errors = true;
$r = q("select id, uid, hash, filename, filetype, filesize, revision, folder, flags, created, edited from attach
- where folder = '%s' and filename = '%s' and uid = %d group by filename limit 1",
+ where folder = '%s' and filename = '%s' and uid = %d order by filename limit 1",
dbesc($folder),
dbesc(basename($file)),
intval($channel_id)
@@ -940,15 +273,15 @@ function RedFileData($file, &$auth, $test = false) {
if ($test)
return true;
// final component was a directory.
- return new RedDirectory('/cloud/' . $file, $auth);
+ return new RedDAV\RedDirectory('/cloud/' . $file, $auth);
}
if ($errors) {
- logger('RedFileData: not found');
+ logger('not found ' . $file);
if ($test)
return false;
if ($permission_error) {
- logger('RedFileData: permission error');
+ logger('permission error ' . $file);
throw new DAV\Exception\Forbidden('Permission denied.');
}
return;
@@ -960,431 +293,10 @@ function RedFileData($file, &$auth, $test = false) {
if ($r[0]['flags'] & ATTACH_FLAG_DIR) {
// @todo can't we drop '/cloud'? it gets stripped off anyway in RedDirectory
- return new RedDirectory('/cloud' . $path . '/' . $r[0]['filename'], $auth);
+ return new RedDAV\RedDirectory('/cloud' . $path . '/' . $r[0]['filename'], $auth);
} else {
- return new RedFile('/cloud' . $path . '/' . $r[0]['filename'], $r[0], $auth);
+ return new RedDAV\RedFile('/cloud' . $path . '/' . $r[0]['filename'], $r[0], $auth);
}
}
return false;
-}
-
-
-
-/**
- * RedBasicAuth class.
- *
- */
-class RedBasicAuth extends DAV\Auth\Backend\AbstractBasic {
-
- // @fixme mod/cloud.php:61
- public $channel_name = '';
- // @fixme mod/cloud.php:62
- public $channel_id = 0;
- // @fixme mod/cloud.php:63
- public $channel_hash = '';
- // @fixme mod/cloud.php:68
- public $observer = '';
- // @fixme include/reddav.php:51
- public $browser;
- // @fixme include/reddav.php:92
- public $owner_id;
- // @fixme include/reddav.php:283
- public $owner_nick = '';
- // @fixme mod/cloud.php:66
- public $timezone;
-
- /**
- *
- * @param string $username
- * @param string $password
- */
- protected function validateUserPass($username, $password) {
-
- if (trim($password) === '+++') {
- logger('reddav: validateUserPass: guest ' . $username);
- return true;
- }
-
- require_once('include/auth.php');
- $record = account_verify_password($username, $password);
- if ($record && $record['account_default_channel']) {
- $r = q("select * from channel where channel_account_id = %d and channel_id = %d limit 1",
- intval($record['account_id']),
- intval($record['account_default_channel'])
- );
- if ($r) {
- $this->currentUser = $r[0]['channel_address'];
- $this->channel_name = $r[0]['channel_address'];
- $this->channel_id = $r[0]['channel_id'];
- $this->channel_hash = $this->observer = $r[0]['channel_hash'];
- $_SESSION['uid'] = $r[0]['channel_id'];
- $_SESSION['account_id'] = $r[0]['channel_account_id'];
- $_SESSION['authenticated'] = true;
- return true;
- }
- }
- $r = q("select * from channel where channel_address = '%s' limit 1",
- dbesc($username)
- );
- if ($r) {
- $x = q("select * from account where account_id = %d limit 1",
- intval($r[0]['channel_account_id'])
- );
- if ($x) {
- foreach ($x as $record) {
- if (($record['account_flags'] == ACCOUNT_OK) || ($record['account_flags'] == ACCOUNT_UNVERIFIED)
- && (hash('whirlpool', $record['account_salt'] . $password) === $record['account_password'])) {
- logger('(DAV) RedBasicAuth: password verified for ' . $username);
- $this->currentUser = $r[0]['channel_address'];
- $this->channel_name = $r[0]['channel_address'];
- $this->channel_id = $r[0]['channel_id'];
- $this->channel_hash = $this->observer = $r[0]['channel_hash'];
- $_SESSION['uid'] = $r[0]['channel_id'];
- $_SESSION['account_id'] = $r[0]['channel_account_id'];
- $_SESSION['authenticated'] = true;
- return true;
- }
- }
- }
- }
- logger('(DAV) RedBasicAuth: password failed for ' . $username);
- return false;
- }
-
- public function setCurrentUser($name) {
- $this->currentUser = $name;
- }
-
- /**
- * @brief Set browser plugin.
- *
- * @see RedBrowser::set_writeable()
- * @param DAV\Browser\Plugin $browser
- */
- public function setBrowserPlugin($browser) {
- $this->browser = $browser;
- }
-
- // internal? logging function
- function log() {
- logger('dav: auth: channel_name ' . $this->channel_name, LOGGER_DATA);
- logger('dav: auth: channel_id ' . $this->channel_id, LOGGER_DATA);
- logger('dav: auth: channel_hash ' . $this->channel_hash, LOGGER_DATA);
- logger('dav: auth: observer ' . $this->observer, LOGGER_DATA);
- logger('dav: auth: owner_id ' . $this->owner_id, LOGGER_DATA);
- logger('dav: auth: owner_nick ' . $this->owner_nick, LOGGER_DATA);
- }
-
-} // class RedBasicAuth
-
-
-
-/**
- * RedBrowser class.
- *
- */
-class RedBrowser extends DAV\Browser\Plugin {
-
- private $auth;
-
- function __construct(&$auth) {
- $this->auth = $auth;
- $this->enableAssets = false;
- }
-
- // The DAV browser is instantiated after the auth module and directory classes but before we know the current
- // directory and who the owner and observer are. So we add a pointer to the browser into the auth module and vice
- // versa. Then when we've figured out what directory is actually being accessed, we call the following function
- // to decide whether or not to show web elements which include writeable objects.
- function set_writeable() {
- if (! $this->auth->owner_id) {
- $this->enablePost = false;
- }
-
- if (! perm_is_allowed($this->auth->owner_id, get_observer_hash(), 'write_storage')) {
- $this->enablePost = false;
- } else {
- $this->enablePost = true;
- }
- }
-
- /**
- * @brief Creates the directory listing for the given path.
- *
- * @param string $path which should be displayed
- */
- public function generateDirectoryIndex($path) {
- // (owner_id = channel_id) is visitor owner of this directory?
- $is_owner = ((local_user() && $this->auth->owner_id == local_user()) ? true : false);
-
- if ($this->auth->timezone)
- date_default_timezone_set($this->auth->timezone);
-
- require_once('include/conversation.php');
-
- if ($this->auth->owner_nick) {
- $html = profile_tabs(get_app(), (($is_owner) ? true : false), $this->auth->owner_nick);
- }
-
- $files = $this->server->getPropertiesForPath($path, array(
- '{DAV:}displayname',
- '{DAV:}resourcetype',
- '{DAV:}getcontenttype',
- '{DAV:}getcontentlength',
- '{DAV:}getlastmodified',
- ), 1);
-
- $parent = $this->server->tree->getNodeForPath($path);
-
- $parentpath = array();
- // only show parent if not leaving /cloud/; TODO how to improve this?
- if ($path && $path != "cloud") {
- list($parentUri) = DAV\URLUtil::splitPath($path);
- $fullPath = DAV\URLUtil::encodePath($this->server->getBaseUri() . $parentUri);
-
- $parentpath['icon'] = $this->enableAssets ? '<a href="' . $fullPath . '"><img src="' . $this->getAssetUrl('icons/parent' . $this->iconExtension) . '" width="24" alt="' . t('parent') . '"></a>' : '';
- $parentpath['path'] = $fullPath;
- }
-
- $f = array();
- foreach ($files as $file) {
- $ft = array();
- $type = null;
-
- // This is the current directory, we can skip it
- if (rtrim($file['href'],'/')==$path) continue;
-
- list(, $name) = DAV\URLUtil::splitPath($file['href']);
-
- if (isset($file[200]['{DAV:}resourcetype'])) {
- $type = $file[200]['{DAV:}resourcetype']->getValue();
-
- // resourcetype can have multiple values
- if (!is_array($type)) $type = array($type);
-
- foreach ($type as $k=>$v) {
- // Some name mapping is preferred
- switch ($v) {
- case '{DAV:}collection' :
- $type[$k] = t('Collection');
- break;
- case '{DAV:}principal' :
- $type[$k] = t('Principal');
- break;
- case '{urn:ietf:params:xml:ns:carddav}addressbook' :
- $type[$k] = t('Addressbook');
- break;
- case '{urn:ietf:params:xml:ns:caldav}calendar' :
- $type[$k] = t('Calendar');
- break;
- case '{urn:ietf:params:xml:ns:caldav}schedule-inbox' :
- $type[$k] = t('Schedule Inbox');
- break;
- case '{urn:ietf:params:xml:ns:caldav}schedule-outbox' :
- $type[$k] = t('Schedule Outbox');
- break;
- case '{http://calendarserver.org/ns/}calendar-proxy-read' :
- $type[$k] = 'Proxy-Read';
- break;
- case '{http://calendarserver.org/ns/}calendar-proxy-write' :
- $type[$k] = 'Proxy-Write';
- break;
- }
- }
- $type = implode(', ', $type);
- }
-
- // If no resourcetype was found, we attempt to use
- // the contenttype property
- if (!$type && isset($file[200]['{DAV:}getcontenttype'])) {
- $type = $file[200]['{DAV:}getcontenttype'];
- }
- if (!$type) $type = t('Unknown');
-
- $size = isset($file[200]['{DAV:}getcontentlength']) ? (int)$file[200]['{DAV:}getcontentlength'] : '';
- $lastmodified = ((isset($file[200]['{DAV:}getlastmodified'])) ? $file[200]['{DAV:}getlastmodified']->getTime()->format('Y-m-d H:i:s') : '');
-
- $fullPath = DAV\URLUtil::encodePath('/' . trim($this->server->getBaseUri() . ($path ? $path . '/' : '') . $name, '/'));
-
- $displayName = isset($file[200]['{DAV:}displayname']) ? $file[200]['{DAV:}displayname'] : $name;
-
- $displayName = $this->escapeHTML($displayName);
- $type = $this->escapeHTML($type);
-
- $icon = '';
- if ($this->enableAssets) {
- $node = $this->server->tree->getNodeForPath(($path ? $path . '/' : '') . $name);
- foreach (array_reverse($this->iconMap) as $class=>$iconName) {
- if ($node instanceof $class) {
- $icon = '<a href="' . $fullPath . '"><img src="' . $this->getAssetUrl($iconName . $this->iconExtension) . '" alt="" width="24"></a>';
- break;
- }
- }
- }
-
- $parentHash = "";
- $owner = $this->auth->owner_id;
- $splitPath = split("/", $fullPath);
- if (count($splitPath) > 3) {
- for ($i = 3; $i < count($splitPath); $i++) {
- $attachName = urldecode($splitPath[$i]);
- $attachHash = $this->findAttachHash($owner, $parentHash, $attachName);
- $parentHash = $attachHash;
- }
- }
-
- $attachIcon = ""; // "<a href=\"attach/".$attachHash."\" title=\"".$displayName."\"><i class=\"icon-download\"></i></a>";
-
- // put the array for this file together
- $ft['attachId'] = $this->findAttachIdByHash($attachHash);
- $ft['fileStorageUrl'] = substr($fullPath, 0, strpos($fullPath, "cloud/")) . "filestorage/" . $this->auth->channel_name;
- $ft['icon'] = $icon;
- $ft['attachIcon'] = (($size) ? $attachIcon : '');
- // @todo Should this be an item value, not a global one?
- $ft['is_owner'] = $is_owner;
- $ft['fullPath'] = $fullPath;
- $ft['displayName'] = $displayName;
- $ft['type'] = $type;
- $ft['size'] = $size;
- $ft['sizeFormatted'] = $this->userReadableSize($size);
- $ft['lastmodified'] = (($lastmodified) ? datetime_convert('UTC', date_default_timezone_get(), $lastmodified) : '');
-
- $f[] = $ft;
- }
-
- // Storage and quota for the account (all channels of the owner of this directory)!
- $limit = service_class_fetch($owner, 'attach_upload_limit');
- $r = q("SELECT SUM(filesize) AS total FROM attach WHERE aid = %d",
- intval($this->auth->channel_account_id)
- );
- $used = $r[0]['total'];
- if ($used) {
- $quotaDesc = t('%1$s used');
- $quotaDesc = sprintf($quotaDesc,
- $this->userReadableSize($used));
- }
- if ($limit && $used) {
- $quotaDesc = t('%1$s used of %2$s (%3$s&#37;)');
- $quotaDesc = sprintf($quotaDesc,
- $this->userReadableSize($used),
- $this->userReadableSize($limit),
- round($used / $limit, 1));
- }
-
- // prepare quota for template
- $quota['used'] = $used;
- $quota['limit'] = $limit;
- $quota['desc'] = $quotaDesc;
-
- $html .= replace_macros(get_markup_template('cloud_directory.tpl'), array(
- '$header' => t('Files') . ": " . $this->escapeHTML($path) . "/",
- '$parentpath' => $parentpath,
- '$entries' => $f,
- '$quota' => $quota,
- '$name' => t('Name'),
- '$type' => t('Type'),
- '$size' => t('Size'),
- '$lastmod' => t('Last Modified'),
- '$parent' => t('parent'),
- '$edit' => t('Edit'),
- '$delete' => t('Delete'),
- '$total' => t('Total')
- ));
-
- $output = '';
- if ($this->enablePost) {
- $this->server->broadcastEvent('onHTMLActionsPanel', array($parent, &$output));
- }
- $html .= $output;
-
- get_app()->page['content'] = $html;
- construct_page(get_app());
- }
-
- function userReadableSize($size) {
- $ret = "";
- if (is_numeric($size)) {
- $incr = 0;
- $k = 1024;
- $unit = array('bytes', 'KB', 'MB', 'GB', 'TB', 'PB');
- while (($size / $k) >= 1){
- $incr++;
- $size = round($size / $k, 2);
- }
- $ret = $size . " " . $unit[$incr];
- }
- return $ret;
- }
-
- /**
- * Creates a form to add new folders and upload files.
- *
- * @param DAV\INode $node
- * @param string &$output
- */
- public function htmlActionsPanel(DAV\INode $node, &$output) {
-
- //Removed link to filestorage page
- //if($this->auth->owner_id && $this->auth->owner_id == $this->auth->channel_id) {
- // $channel = get_app()->get_channel();
- // if($channel) {
- // $output .= '<tr><td colspan="2"><a href="filestorage/' . $channel['channel_address'] . '" >' . t('Edit File properties') . '</a></td></tr><tr><td>&nbsp;</td></tr>';
- // }
- //}
-
- if (! $node instanceof DAV\ICollection)
- return;
-
- // We also know fairly certain that if an object is a non-extended
- // SimpleCollection, we won't need to show the panel either.
- if (get_class($node) === 'Sabre\\DAV\\SimpleCollection')
- return;
-
- $output .= replace_macros(get_markup_template('cloud_actionspanel.tpl'), array(
- '$folder_header' => t('Create new folder'),
- '$folder_submit' => t('Create'),
- '$upload_header' => t('Upload file'),
- '$upload_submit' => t('Upload')
- ));
- }
-
- /**
- * This method takes a path/name of an asset and turns it into url
- * suiteable for http access.
- *
- * @param string $assetName
- * @return string
- */
- protected function getAssetUrl($assetName) {
- return z_root() . '/cloud/?sabreAction=asset&assetName=' . urlencode($assetName);
- }
-
- protected function findAttachHash($owner, $parentHash, $attachName) {
- $r = q("SELECT * FROM attach WHERE uid = %d AND folder = '%s' AND filename = '%s' ORDER BY edited desc LIMIT 1",
- intval($owner),
- dbesc($parentHash),
- dbesc($attachName)
- );
- $hash = "";
- if ($r) {
- foreach ($r as $rr) {
- $hash = $rr['hash'];
- }
- }
- return $hash;
- }
-
- protected function findAttachIdByHash($attachHash) {
- $r = q("SELECT * FROM attach WHERE hash = '%s' ORDER BY edited DESC LIMIT 1",
- dbesc($attachHash)
- );
- $id = "";
- if ($r) {
- foreach ($r as $rr) {
- $id = $rr['id'];
- }
- }
- return $id;
- }
-
-} // class RedBrowser
+} \ No newline at end of file
diff --git a/include/security.php b/include/security.php
index 2ccfc6973..07b6a96aa 100644
--- a/include/security.php
+++ b/include/security.php
@@ -1,18 +1,30 @@
-<?php /** @file */
-
-function authenticate_success($user_record, $login_initial = false, $interactive = false,$return = false,$update_lastlog = false) {
+<?php
+/**
+ * @file include/security.php
+ *
+ * Some security related functions.
+ */
+
+/**
+ * @param int $user_record The account_id
+ * @param bool $login_initial default false
+ * @param bool $interactive default false
+ * @param bool $return
+ * @param bool $update_lastlog
+ */
+function authenticate_success($user_record, $login_initial = false, $interactive = false, $return = false, $update_lastlog = false) {
$a = get_app();
$_SESSION['addr'] = $_SERVER['REMOTE_ADDR'];
- if(x($user_record,'account_id')) {
+ if(x($user_record, 'account_id')) {
$a->account = $user_record;
$_SESSION['account_id'] = $user_record['account_id'];
$_SESSION['authenticated'] = 1;
if($login_initial || $update_lastlog) {
- q("update account set account_lastlog = '%s' where account_id = %d limit 1",
+ q("update account set account_lastlog = '%s' where account_id = %d",
dbesc(datetime_convert()),
intval($_SESSION['account_id'])
);
@@ -39,13 +51,19 @@ function authenticate_success($user_record, $login_initial = false, $interactive
// might want to log success here
}
- if($return || x($_SESSION,'workflow')) {
+ if($return || x($_SESSION, 'workflow')) {
unset($_SESSION['workflow']);
return;
}
if(($a->module !== 'home') && x($_SESSION,'login_return_url') && strlen($_SESSION['login_return_url'])) {
$return_url = $_SESSION['login_return_url'];
+
+ // don't let members get redirected to a raw ajax page update - this can happen
+ // if DHCP changes the IP address at an unfortunate time and paranoia is turned on
+ if(strstr($return_url,'update_'))
+ $return_url = '';
+
unset($_SESSION['login_return_url']);
goaway($a->get_baseurl() . '/' . $return_url);
}
@@ -53,7 +71,7 @@ function authenticate_success($user_record, $login_initial = false, $interactive
/* This account has never created a channel. Send them to new_channel by default */
if($a->module === 'login') {
- $r = q("select count(channel_id) as total from channel where channel_account_id = %d and not ( channel_pageflags & %d)",
+ $r = q("select count(channel_id) as total from channel where channel_account_id = %d and not ( channel_pageflags & %d)>0",
intval($a->account['account_id']),
intval(PAGE_REMOVED)
);
@@ -64,18 +82,37 @@ function authenticate_success($user_record, $login_initial = false, $interactive
/* else just return */
}
-
+/**
+ * @brief Change to another channel with current logged-in account.
+ *
+ * @param int $change_channel The channel_id of the channel you want to change to
+ *
+ * @return bool|array false or channel record of the new channel
+ */
function change_channel($change_channel) {
$ret = false;
if($change_channel) {
- $r = q("select channel.*, xchan.* from channel left join xchan on channel.channel_hash = xchan.xchan_hash where channel_id = %d and channel_account_id = %d and not ( channel_pageflags & %d) limit 1",
+ $r = q("select channel.*, xchan.* from channel left join xchan on channel.channel_hash = xchan.xchan_hash where channel_id = %d and channel_account_id = %d and not ( channel_pageflags & %d)>0 limit 1",
intval($change_channel),
intval(get_account_id()),
intval(PAGE_REMOVED)
);
+ // It's not there. Is this an administrator, and is this the sys channel?
+ if (is_developer()) {
+ if (! $r) {
+ if (is_site_admin()) {
+ $r = q("select channel.*, xchan.* from channel left join xchan on channel.channel_hash = xchan.xchan_hash where channel_id = %d and ( channel_pageflags & %d) and not (channel_pageflags & %d )>0 limit 1",
+ intval($change_channel),
+ intval(PAGE_SYSTEM),
+ intval(PAGE_REMOVED)
+ );
+ }
+ }
+ }
+
if($r) {
$hash = $r[0]['channel_hash'];
$_SESSION['uid'] = intval($r[0]['channel_id']);
@@ -90,23 +127,28 @@ function change_channel($change_channel) {
);
if($x) {
$_SESSION['my_url'] = $x[0]['xchan_url'];
- $_SESSION['my_address'] = $r[0]['channel_address'] . '@' . substr(get_app()->get_baseurl(),strpos(get_app()->get_baseurl(),'://')+3);
+ $_SESSION['my_address'] = $r[0]['channel_address'] . '@' . substr(get_app()->get_baseurl(), strpos(get_app()->get_baseurl(), '://') + 3);
get_app()->set_observer($x[0]);
- get_app()->set_perms(get_all_perms(local_user(),$hash));
+ get_app()->set_perms(get_all_perms(local_user(), $hash));
}
if(! is_dir('store/' . $r[0]['channel_address']))
@os_mkdir('store/' . $r[0]['channel_address'], STORAGE_DEFAULT_PERMISSIONS,true);
-
}
return $ret;
-
}
-
-
-function permissions_sql($owner_id,$remote_verified = false,$groups = null) {
+/**
+ * @brief Creates an addiontal SQL where statement to check permissions.
+ *
+ * @param int $owner_id
+ * @param bool $remote_verified default false, not used at all
+ * @param string $groups this param is not used at all
+ *
+ * @return string additional SQL where statement
+ */
+function permissions_sql($owner_id, $remote_verified = false, $groups = null) {
if(defined('STATUSNET_PRIVACY_COMPATIBILITY'))
return '';
@@ -123,8 +165,7 @@ function permissions_sql($owner_id,$remote_verified = false,$groups = null) {
$sql = " AND allow_cid = ''
AND allow_gid = ''
AND deny_cid = ''
- AND deny_gid = ''
-
+ AND deny_gid = ''
";
/**
@@ -143,7 +184,6 @@ function permissions_sql($owner_id,$remote_verified = false,$groups = null) {
* done this and passed the groups into this function.
*/
-
else {
$observer = get_observer_hash();
if($observer) {
@@ -155,9 +195,10 @@ function permissions_sql($owner_id,$remote_verified = false,$groups = null) {
foreach($groups as $g)
$gs .= '|<' . $g . '>';
}
+ $regexop = db_getfunc('REGEXP');
$sql = sprintf(
- " AND ( NOT (deny_cid like '%s' OR deny_gid REGEXP '%s')
- AND ( allow_cid like '%s' OR allow_gid REGEXP '%s' OR ( allow_cid = '' AND allow_gid = '') )
+ " AND ( NOT (deny_cid like '%s' OR deny_gid $regexop '%s')
+ AND ( allow_cid like '%s' OR allow_gid $regexop '%s' OR ( allow_cid = '' AND allow_gid = '') )
)
",
dbesc(protect_sprintf( '%<' . $observer . '>%')),
@@ -171,7 +212,16 @@ function permissions_sql($owner_id,$remote_verified = false,$groups = null) {
return $sql;
}
-function item_permissions_sql($owner_id,$remote_verified = false,$groups = null) {
+/**
+ * @brief Creates an addiontal SQL where statement to check permissions for an item.
+ *
+ * @param int $owner_id
+ * @param bool $remote_verified default false, not used at all
+ * @param string $groups this param is not used at all
+ *
+ * @return string additional SQL where statement
+ */
+function item_permissions_sql($owner_id, $remote_verified = false, $groups = null) {
if(defined('STATUSNET_PRIVACY_COMPATIBILITY'))
return '';
@@ -185,8 +235,7 @@ function item_permissions_sql($owner_id,$remote_verified = false,$groups = null)
* default permissions - anonymous user
*/
- $sql = " AND not item_private ";
-
+ $sql = " AND item_private=0 ";
/**
* Profile owner - everything is visible
@@ -204,7 +253,6 @@ function item_permissions_sql($owner_id,$remote_verified = false,$groups = null)
* done this and passed the groups into this function.
*/
-
else {
$observer = get_observer_hash();
@@ -216,10 +264,11 @@ function item_permissions_sql($owner_id,$remote_verified = false,$groups = null)
if(is_array($groups) && count($groups)) {
foreach($groups as $g)
$gs .= '|<' . $g . '>';
- }
+ }
+ $regexop = db_getfunc('REGEXP');
$sql = sprintf(
- " AND ( NOT (deny_cid like '%s' OR deny_gid REGEXP '%s')
- AND ( allow_cid like '%s' OR allow_gid REGEXP '%s' OR ( allow_cid = '' AND allow_gid = '') )
+ " AND ( NOT (deny_cid like '%s' OR deny_gid $regexop '%s')
+ AND ( allow_cid like '%s' OR allow_gid $regexop '%s' OR ( allow_cid = '' AND allow_gid = '') )
)
",
dbesc(protect_sprintf( '%<' . $observer . '>%')),
@@ -229,12 +278,18 @@ function item_permissions_sql($owner_id,$remote_verified = false,$groups = null)
);
}
}
+
return $sql;
}
+/**
+ * @param string $observer_hash
+ *
+ * @return string additional SQL where statement
+ */
function public_permissions_sql($observer_hash) {
- $observer = get_app()->get_observer();
+ //$observer = get_app()->get_observer();
$groups = init_groups_visitor($observer_hash);
$gs = '<<>>'; // should be impossible to match
@@ -242,12 +297,13 @@ function public_permissions_sql($observer_hash) {
if(is_array($groups) && count($groups)) {
foreach($groups as $g)
$gs .= '|<' . $g . '>';
- }
+ }
$sql = '';
if($observer_hash) {
+ $regexop = db_getfunc('REGEXP');
$sql = sprintf(
- " OR (( NOT (deny_cid like '%s' OR deny_gid REGEXP '%s')
- AND ( allow_cid like '%s' OR allow_gid REGEXP '%s' OR ( allow_cid = '' AND allow_gid = '') )
+ " OR (( NOT (deny_cid like '%s' OR deny_gid $regexop '%s')
+ AND ( allow_cid like '%s' OR allow_gid $regexop '%s' OR ( allow_cid = '' AND allow_gid = '') )
))
",
dbesc(protect_sprintf( '%<' . $observer_hash . '>%')),
@@ -319,11 +375,11 @@ function check_form_security_token_ForbiddenOnErr($typename = '', $formname = 'f
}
}
+
// Returns an array of group id's this contact is a member of.
// This array will only contain group id's related to the uid of this
// DFRN contact. They are *not* neccessarily unique across the entire site.
-
if(! function_exists('init_groups_visitor')) {
function init_groups_visitor($contact_id) {
$groups = array();
@@ -339,8 +395,6 @@ function init_groups_visitor($contact_id) {
-
-
// This is used to determine which uid have posts which are visible to the logged in user (from the API) for the
// public_timeline, and we can use this in a community page by making
// $perms = (PERMS_NETWORK|PERMS_PUBLIC) unless logged in.
@@ -356,23 +410,26 @@ function stream_perms_api_uids($perms = NULL ) {
$ret = array();
if(local_user())
$ret[] = local_user();
- $r = q("select channel_id from channel where channel_r_stream > 0 and (channel_r_stream & %d) and not (channel_pageflags & %d)",
+ $r = q("select channel_id from channel where channel_r_stream > 0 and (channel_r_stream & %d)>0 and not (channel_pageflags & %d)>0",
intval($perms),
- intval(PAGE_CENSORED|PAGE_SYSTEM|PAGE_REMOVED)
+ intval(PAGE_ADULT|PAGE_CENSORED|PAGE_SYSTEM|PAGE_REMOVED)
);
- if($r)
+ if($r) {
foreach($r as $rr)
- if(! in_array($rr['channel_id'],$ret))
+ if(! in_array($rr['channel_id'], $ret))
$ret[] = $rr['channel_id'];
+ }
$str = '';
- if($ret)
+ if($ret) {
foreach($ret as $rr) {
if($str)
$str .= ',';
$str .= intval($rr);
}
+ }
logger('stream_perms_api_uids: ' . $str, LOGGER_DEBUG);
+
return $str;
}
@@ -383,23 +440,25 @@ function stream_perms_xchans($perms = NULL ) {
if(local_user())
$ret[] = get_observer_hash();
- $r = q("select channel_hash from channel where channel_r_stream > 0 and (channel_r_stream & %d) and not (channel_pageflags & %d)",
+ $r = q("select channel_hash from channel where channel_r_stream > 0 and (channel_r_stream & %d)>0 and not (channel_pageflags & %d)>0",
intval($perms),
- intval(PAGE_CENSORED|PAGE_SYETEM|PAGE_REMOVED)
+ intval(PAGE_ADULT|PAGE_CENSORED|PAGE_SYSTEM|PAGE_REMOVED)
);
- if($r)
+ if($r) {
foreach($r as $rr)
- if(! in_array($rr['channel_hash'],$ret))
+ if(! in_array($rr['channel_hash'], $ret))
$ret[] = $rr['channel_hash'];
+ }
$str = '';
- if($ret)
+ if($ret) {
foreach($ret as $rr) {
if($str)
$str .= ',';
$str .= "'" . dbesc($rr) . "'";
}
+ }
logger('stream_perms_xchans: ' . $str, LOGGER_DEBUG);
+
return $str;
}
-
diff --git a/include/session.php b/include/session.php
index b531688e2..ed4dfdd16 100644
--- a/include/session.php
+++ b/include/session.php
@@ -60,11 +60,11 @@ function ref_session_write ($id,$data) {
if($session_exists)
$r = q("UPDATE `session`
SET `data` = '%s', `expire` = '%s'
- WHERE `sid` = '%s' LIMIT 1",
+ WHERE `sid` = '%s'",
dbesc($data), dbesc($expire), dbesc($id));
else
- $r = q("INSERT INTO `session`
- SET `sid` = '%s', `expire` = '%s', `data` = '%s'",
+ $r = q("INSERT INTO `session` (sid, expire, data) values ('%s', '%s', '%s')",
+ //SET `sid` = '%s', `expire` = '%s', `data` = '%s'",
dbesc($id), dbesc($default_expire), dbesc($data));
return true;
@@ -84,8 +84,9 @@ function ref_session_destroy ($id) {
function ref_session_gc($expire) {
q("DELETE FROM session WHERE expire < %d", dbesc(time()));
- q("OPTIMIZE TABLE session");
- return true;
+ if (! get_config('system','innodb'))
+ db_optimizetable('session');
+ return true;
}
$gc_probability = 50;
diff --git a/include/socgraph.php b/include/socgraph.php
index e12da5862..740886b1c 100644
--- a/include/socgraph.php
+++ b/include/socgraph.php
@@ -77,7 +77,7 @@ function poco_load($xchan = '',$url = null) {
dbesc($xchan)
);
if($r) {
- q("update xchat set xchat_edited = '%s' where xchat_id = %d limit 1",
+ q("update xchat set xchat_edited = '%s' where xchat_id = %d",
dbesc(datetime_convert()),
intval($r[0]['xchat_id'])
);
@@ -93,7 +93,8 @@ function poco_load($xchan = '',$url = null) {
}
}
}
- q("delete from xchat where xchat_edited < UTC_TIMESTAMP() - INTERVAL 7 DAY and xchat_xchan = '%s' ",
+ q("delete from xchat where xchat_edited < %s - INTERVAL %s and xchat_xchan = '%s' ",
+ db_utcnow(), db_quoteinterval('7 DAY'),
dbesc($xchan)
);
}
@@ -123,7 +124,8 @@ function poco_load($xchan = '',$url = null) {
$profile_url = $url['value'];
continue;
}
- if($url['type'] == 'zot') {
+ if($url['type'] == 'zot' || $url['type'] == 'diaspora' || $url['type'] == 'friendica') {
+ $network = $url['type'];
$address = str_replace('acct:' , '', $url['value']);
continue;
}
@@ -151,17 +153,25 @@ function poco_load($xchan = '',$url = null) {
if(($x !== false) && (! count($x))) {
if($address) {
- $z = zot_finger($address,null);
- if($z['success']) {
- $j = json_decode($z['body'],true);
- if($j)
- import_xchan($j);
+ if($network === 'zot') {
+ $z = zot_finger($address,null);
+ if($z['success']) {
+ $j = json_decode($z['body'],true);
+ if($j)
+ import_xchan($j);
+ }
+ $x = q("select xchan_hash from xchan where xchan_hash = '%s' limit 1",
+ dbesc($hash)
+ );
+ if(! $x) {
+ continue;
+ }
}
- $x = q("select xchan_hash from xchan where xchan_hash = '%s' limit 1",
- dbesc($hash)
- );
- if(! $x) {
- continue;
+ else {
+ $x = import_author_diaspora(array('address' => $address));
+ if(! $x) {
+ continue;
+ }
}
}
else {
@@ -186,7 +196,7 @@ function poco_load($xchan = '',$url = null) {
);
}
else {
- q("update xlink set xlink_updated = '%s', xlink_rating = %d where xlink_id = %d limit 1",
+ q("update xlink set xlink_updated = '%s', xlink_rating = %d where xlink_id = %d",
dbesc(datetime_convert()),
intval($rating),
intval($r[0]['xlink_id'])
@@ -195,8 +205,9 @@ function poco_load($xchan = '',$url = null) {
}
logger("poco_load: loaded $total entries",LOGGER_DEBUG);
- q("delete from xlink where xlink_xchan = '%s' and xlink_updated < UTC_TIMESTAMP() - INTERVAL 2 DAY",
- dbesc($xchan)
+ q("delete from xlink where xlink_xchan = '%s' and xlink_updated < %s - INTERVAL %s",
+ dbesc($xchan),
+ db_utcnow(), db_quoteinterval('2 DAY')
);
}
@@ -218,18 +229,19 @@ function count_common_friends($uid,$xchan) {
function common_friends($uid,$xchan,$start = 0,$limit=100000000,$shuffle = false) {
+ $rand = db_getfunc('rand');
if($shuffle)
- $sql_extra = " order by rand() ";
+ $sql_extra = " order by $rand ";
else
$sql_extra = " order by xchan_name asc ";
$r = q("SELECT * from xchan left join xlink on xlink_link = xchan_hash where xlink_xchan = '%s' and xlink_link in
- (select abook_xchan from abook where abook_xchan != '%s' and abook_channel = %d and abook_flags = 0 ) $sql_extra limit %d, %d",
+ (select abook_xchan from abook where abook_xchan != '%s' and abook_channel = %d and abook_flags = 0 ) $sql_extra limit %d offset %d",
dbesc($xchan),
dbesc($xchan),
intval($uid),
- intval($start),
- intval($limit)
+ intval($limit),
+ intval($start)
);
return $r;
@@ -264,11 +276,11 @@ function common_friends_zcid($uid,$zcid,$start = 0, $limit = 9999,$shuffle = fal
FROM `glink` left join `gcontact` on `glink`.`gcid` = `gcontact`.`id`
where `glink`.`zcid` = %d
and `gcontact`.`nurl` in (select nurl from contact where uid = %d and self = 0 and blocked = 0 and hidden = 0 )
- $sql_extra limit %d, %d",
+ $sql_extra limit %d offset %d",
intval($zcid),
intval($uid),
- intval($start),
- intval($limit)
+ intval($limit),
+ intval($start)
);
return $r;
@@ -297,11 +309,11 @@ function all_friends($uid,$cid,$start = 0, $limit = 80) {
$r = q("SELECT `gcontact`.*
FROM `glink` left join `gcontact` on `glink`.`gcid` = `gcontact`.`id`
where `glink`.`cid` = %d and `glink`.`uid` = %d
- order by `gcontact`.`name` asc LIMIT %d, %d ",
+ order by `gcontact`.`name` asc LIMIT %d OFFSET %d ",
intval($cid),
intval($uid),
- intval($start),
- intval($limit)
+ intval($limit),
+ intval($start)
);
return $r;
@@ -320,16 +332,16 @@ function suggestion_query($uid, $myxchan, $start = 0, $limit = 80) {
and not xlink_link in ( select abook_xchan from abook where abook_channel = %d )
and not xlink_link in ( select xchan from xign where uid = %d )
and xlink_xchan != ''
- and not ( xchan_flags & %d )
- and not ( xchan_flags & %d )
- group by xchan_hash order by total desc limit %d, %d ",
+ and not ( xchan_flags & %d )>0
+ and not ( xchan_flags & %d )>0
+ group by xchan_hash order by total desc limit %d offset %d ",
intval($uid),
intval($uid),
intval($uid),
intval(XCHAN_FLAGS_HIDDEN),
intval(XCHAN_FLAGS_DELETED),
- intval($start),
- intval($limit)
+ intval($limit),
+ intval($start)
);
if($r && count($r) >= ($limit -1))
@@ -340,15 +352,15 @@ function suggestion_query($uid, $myxchan, $start = 0, $limit = 80) {
where xlink_xchan = ''
and not xlink_link in ( select abook_xchan from abook where abook_channel = %d )
and not xlink_link in ( select xchan from xign where uid = %d )
- and not ( xchan_flags & %d )
- and not ( xchan_flags & %d )
- group by xchan_hash order by total desc limit %d, %d ",
+ and not ( xchan_flags & %d )>0
+ and not ( xchan_flags & %d )>0
+ group by xchan_hash order by total desc limit %d offset %d ",
intval($uid),
intval($uid),
intval(XCHAN_FLAGS_HIDDEN),
intval(XCHAN_FLAGS_DELETED),
- intval($start),
- intval($limit)
+ intval($limit),
+ intval($start)
);
if(is_array($r) && is_array($r2))
@@ -385,7 +397,9 @@ function update_suggestions() {
// the targets may have changed their preferences and don't want to be suggested - and they
// may have simply gone away.
- $r = q("delete from xlink where xlink_xchan = '' and xlink_updated < UTC_TIMESTAMP() - INTERVAL 7 DAY");
+ $r = q("delete from xlink where xlink_xchan = '' and xlink_updated < %s - INTERVAL %s",
+ db_utcnow(), db_quoteinterval('7 DAY')
+ );
$j = json_decode($ret['body'],true);
diff --git a/include/statistics_fns.php b/include/statistics_fns.php
new file mode 100644
index 000000000..288925a2c
--- /dev/null
+++ b/include/statistics_fns.php
@@ -0,0 +1,79 @@
+<?php /** @file */
+
+function update_channels_total_stat() {
+ $r = q("select count(channel_id) as channels_total from channel left join account on account_id = channel_account_id
+ where account_flags = 0 ");
+ if($r) {
+ $channels_total_stat = intval($r[0]['channels_total']);
+ set_config('system','channels_total_stat',$channels_total_stat);
+ } else {
+ set_config('system','channels_total_stat',null);
+ }
+}
+
+function update_channels_active_halfyear_stat() {
+ $r = q("select channel_id from channel left join account on account_id = channel_account_id
+ where account_flags = 0 and account_lastlog > %s - INTERVAL %s",
+ db_utcnow(), db_quoteinterval('6 MONTH')
+ );
+ if($r) {
+ $s = '';
+ foreach($r as $rr) {
+ if($s)
+ $s .= ',';
+ $s .= intval($rr['channel_id']);
+ }
+ $x = q("select uid from item where uid in ( $s ) and (item_flags & %d)>0 and created > %s - INTERVAL %s group by uid",
+ intval(ITEM_WALL),
+ db_utcnow(), db_quoteinterval('6 MONTH')
+ );
+ if($x) {
+ $channels_active_halfyear_stat = count($x);
+ set_config('system','channels_active_halfyear_stat',$channels_active_halfyear_stat);
+ } else {
+ set_config('system','channels_active_halfyear_stat',null);
+ }
+ } else {
+ set_config('system','channels_active_halfyear_stat',null);
+ }
+}
+
+function update_channels_active_monthly_stat() {
+ $r = q("select channel_id from channel left join account on account_id = channel_account_id
+ where account_flags = 0 and account_lastlog > %s - INTERVAL %s",
+ db_utcnow(), db_quoteinterval('1 MONTH')
+ );
+ if($r) {
+ $s = '';
+ foreach($r as $rr) {
+ if($s)
+ $s .= ',';
+ $s .= intval($rr['channel_id']);
+ }
+ $x = q("select uid from item where uid in ( $s ) and ( item_flags & %d )>0 and created > %s - INTERVAL %s group by uid",
+ intval(ITEM_WALL),
+ db_utcnow(), db_quoteinterval('1 MONTH')
+ );
+ if($x) {
+ $channels_active_monthly_stat = count($x);
+ set_config('system','channels_active_monthly_stat',$channels_active_monthly_stat);
+ } else {
+ set_config('system','channels_active_monthly_stat',null);
+ }
+ } else {
+ set_config('system','channels_active_monthly_stat',null);
+ }
+}
+
+function update_local_posts_stat() {
+ $posts = q("SELECT COUNT(*) AS local_posts FROM `item` WHERE (item_flags & %d)>0 ",
+ intval(ITEM_WALL) );
+ if (is_array($posts)) {
+ $local_posts_stat = intval($posts[0]["local_posts"]);
+ set_config('system','local_posts_stat',$local_posts_stat);
+ } else {
+ set_config('system','local_posts_stat',null);
+ }
+}
+
+
diff --git a/include/taxonomy.php b/include/taxonomy.php
index 92003328f..be80008df 100644
--- a/include/taxonomy.php
+++ b/include/taxonomy.php
@@ -154,7 +154,7 @@ function tagadelic($uid, $count = 0, $authors = '', $flags = 0, $restrict = 0, $
}
function tags_sort($a,$b) {
- if($a[0] == $b[0])
+ if(strtolower($a[0]) == strtolower($b[0]))
return 0;
return((strtolower($a[0]) < strtolower($b[0])) ? -1 : 1);
}
@@ -209,13 +209,55 @@ function tagblock($link,$uid,$count = 0,$authors = '',$flags = 0,$restrict = 0,$
if($r) {
$o = '<div class="tagblock widget"><h3>' . t('Tags') . '</h3><div class="tags" align="center">';
foreach($r as $rr) {
- $o .= '<a href="'.$link .'/' . '?f=&tag=' . urlencode($rr[0]).'" class="tag'.$rr[2].'">'.$rr[0].'</a> ' . "\r\n";
+ $o .= '<span class="tag'.$rr[2].'">#</span><a href="'.$link .'/' . '?f=&tag=' . urlencode($rr[0]).'" class="tag'.$rr[2].'">'.$rr[0].'</a> ' . "\r\n";
}
$o .= '</div></div>';
}
return $o;
}
+function wtagblock($uid,$count = 0,$authors = '',$flags = 0,$restrict = 0,$type = TERM_HASHTAG) {
+ $o = '';
+ $tab = 0;
+ $r = tagadelic($uid,$count,$authors,$flags,$restrict,$type);
+
+ if($r) {
+ $c = q("select channel_address from channel where channel_id = %d limit 1",
+ intval($uid)
+ );
+
+ $o = '<div class="tagblock widget"><h3>' . t('Tags') . '</h3><div class="tags" align="center">';
+ foreach($r as $rr) {
+ $o .= '<span class="tag' . $rr[2] . '">#</span><a href="channel/' . $c[0]['channel_address'] . '?f=&tag=' . urlencode($rr[0]).'" class="tag'.$rr[2].'">'.$rr[0].'</a> ' . "\r\n";
+ }
+ $o .= '</div></div>';
+ }
+ return $o;
+}
+
+
+function catblock($uid,$count = 0,$authors = '',$flags = 0,$restrict = 0,$type = TERM_CATEGORY) {
+ $o = '';
+ $tab = 0;
+
+ $r = tagadelic($uid,$count,$authors,$flags,$restrict,$type);
+
+ if($r) {
+ $c = q("select channel_address from channel where channel_id = %d limit 1",
+ intval($uid)
+ );
+
+ $o = '<div class="tagblock widget"><h3>' . t('Categories') . '</h3><div class="tags" align="center">';
+ foreach($r as $rr) {
+ $o .= '<a href="channel/' . $c[0]['channel_address']. '?f=&cat=' . urlencode($rr[0]).'" class="tag'.$rr[2].'">'.$rr[0].'</a> ' . "\r\n";
+ }
+ $o .= '</div></div>';
+ }
+ return $o;
+}
+
+
+
function dir_tagblock($link,$r) {
$o = '';
$tab = 0;
diff --git a/include/text.php b/include/text.php
index 1c5a78d4e..ca9c51bc3 100755..100644
--- a/include/text.php
+++ b/include/text.php
@@ -181,34 +181,34 @@ function autoname($len) {
'kh', 'kl','kr','mn','pl','pr','rh','tr','qu','wh');
$start = mt_rand(0,2);
- if($start == 0)
- $table = $vowels;
- else
- $table = $cons;
+ if($start == 0)
+ $table = $vowels;
+ else
+ $table = $cons;
$word = '';
for ($x = 0; $x < $len; $x ++) {
- $r = mt_rand(0,count($table) - 1);
- $word .= $table[$r];
-
- if($table == $vowels)
- $table = array_merge($cons,$midcons);
- else
- $table = $vowels;
+ $r = mt_rand(0,count($table) - 1);
+ $word .= $table[$r];
+
+ if($table == $vowels)
+ $table = array_merge($cons,$midcons);
+ else
+ $table = $vowels;
}
$word = substr($word,0,$len);
foreach($noend as $noe) {
- if((strlen($word) > 2) && (substr($word,-2) == $noe)) {
- $word = substr($word,0,-1);
- break;
- }
+ if((strlen($word) > 2) && (substr($word,-2) == $noe)) {
+ $word = substr($word,0,-1);
+ break;
+ }
}
if(substr($word,-1) == 'q')
- $word = substr($word,0,-1);
+ $word = substr($word,0,-1);
return $word;
}
@@ -224,11 +224,11 @@ function autoname($len) {
*/
function xmlify($str) {
$buffer = '';
-
+
$len = mb_strlen($str);
for($x = 0; $x < $len; $x ++) {
$char = mb_substr($str,$x,1);
-
+
switch( $char ) {
case "\r" :
@@ -267,7 +267,7 @@ function xmlify($str) {
function unxmlify($s) {
$ret = str_replace('&amp;','&', $s);
$ret = str_replace(array('&lt;','&gt;','&quot;','&apos;'),array('<','>','"',"'"),$ret);
- return $ret;
+ return $ret;
}
// convenience wrapper, reverse the operation "bin2hex"
@@ -314,8 +314,7 @@ function paginate(&$a) {
$pagenum = $a->pager['page'];
$url = $a->get_baseurl() . '/' . $stripped;
-
- if($a->pager['total'] > $a->pager['itemspage']) {
+ if($a->pager['total'] > $a->pager['itemspage']) {
$o .= '<div class="pager">';
if($a->pager['page'] != 1)
$o .= '<span class="pager_prev">'."<a href=\"$url".'&page='.($a->pager['page'] - 1).'">' . t('prev') . '</a></span> ';
@@ -331,7 +330,7 @@ function paginate(&$a) {
$numstart = (($pagenum > 7) ? ($pagenum - 7) : 1);
$numstop = (($pagenum > ($numpages - 7)) ? $numpages : ($numstart + 14));
}
-
+
for($i = $numstart; $i <= $numstop; $i++){
if($i == $a->pager['page'])
$o .= '<span class="pager_current">'.(($i < 10) ? '&nbsp;'.$i : $i);
@@ -405,7 +404,7 @@ function expand_acl($s) {
}
}
return $ret;
-}
+}
// Used to wrap ACL elements in angle brackets for storage
@@ -420,7 +419,6 @@ function sanitise_acl(&$item) {
// Convert an ACL array to a storable string
-
function perms2str($p) {
$ret = '';
@@ -436,16 +434,17 @@ function perms2str($p) {
return $ret;
}
-// generate a guaranteed unique (for this domain) item ID for ATOM
-// safe from birthday paradox
-
-
+/**
+ * @brief Generate a guaranteed unique (for this domain) item ID for ATOM.
+ *
+ * Safe from birthday paradox.
+ *
+ * @return string a unique id
+ */
function item_message_id() {
-
do {
$dups = false;
$hash = random_string();
-
$mid = $hash . '@' . get_app()->get_hostname();
$r = q("SELECT id FROM item WHERE mid = '%s' LIMIT 1",
@@ -453,31 +452,33 @@ function item_message_id() {
if(count($r))
$dups = true;
} while($dups == true);
+
return $mid;
}
-// Generate a guaranteed unique photo ID.
-// safe from birthday paradox
-
-
+/**
+ * @brief Generate a guaranteed unique photo ID.
+ *
+ * Safe from birthday paradox.
+ *
+ * @return string a uniqe hash
+ */
function photo_new_resource() {
-
do {
$found = false;
- $resource = hash('md5',uniqid(mt_rand(),true));
+ $resource = hash('md5', uniqid(mt_rand(), true));
+
$r = q("SELECT id FROM photo WHERE resource_id = '%s' LIMIT 1",
- dbesc($resource)
- );
+ dbesc($resource));
if(count($r))
$found = true;
- } while($found == true);
+ } while($found === true);
+
return $resource;
}
-
-
// for html,xml parsing - let's say you've got
// an attribute foobar="class1 class2 class3"
// and you want to find out if it contains 'class3'.
@@ -487,46 +488,76 @@ function photo_new_resource() {
// pass the attribute string as $attr and the attribute you
// are looking for as $s - returns true if found, otherwise false
-function attribute_contains($attr,$s) {
+function attribute_contains($attr, $s) {
$a = explode(' ', $attr);
- if(count($a) && in_array($s,$a))
+ if(count($a) && in_array($s, $a))
return true;
+
return false;
}
-
-function logger($msg,$level = 0) {
+/**
+ * @brief Logging function for RedMatrix.
+ *
+ * Logging output is configured through RedMatrix's system config. The log file
+ * is set in system logfile, log level in system loglevel and to enable logging
+ * set system debugging.
+ *
+ * Available constants for log level are LOGGER_NORMAL, LOGGER_TRACE, LOGGER_DEBUG,
+ * LOGGER_DATA and LOGGER_ALL.
+ *
+ * Since PHP5.4 we get the file, function and line automatically where the logger
+ * was caleld, so no need to add it to the message anymore.
+ *
+ * @param string $msg Message to log
+ * @param int $level A log level.
+ */
+function logger($msg, $level = 0) {
// turn off logger in install mode
global $a;
global $db;
- if(($a->module == 'install') || (! ($db && $db->connected))) return;
+ if(($a->module == 'install') || (! ($db && $db->connected)))
+ return;
- $debugging = get_config('system','debugging');
- $loglevel = intval(get_config('system','loglevel'));
- $logfile = get_config('system','logfile');
+ $debugging = get_config('system', 'debugging');
+ $loglevel = intval(get_config('system', 'loglevel'));
+ $logfile = get_config('system', 'logfile');
if((! $debugging) || (! $logfile) || ($level > $loglevel))
return;
-
- @file_put_contents($logfile, datetime_convert() . ':' . session_id() . ' ' . $msg . "\n", FILE_APPEND);
- return;
-}
-
-// This is a special logging facility for developers. It allows one to target specific things to trace/debug
-// and is identical to logger() with the exception of the log filename. This allows one to isolate specific
-// calls while allowing logger() to paint a bigger picture of overall activity and capture more detail.
-// If you find dlogger() calls in checked in code, you are free to remove them - so as to provide a noise-free
-// development environment which responds to events you are targetting personally.
+ $where = '';
+ if(version_compare(PHP_VERSION, '5.4.0') >= 0) {
+ $stack = debug_backtrace(DEBUG_BACKTRACE_IGNORE_ARGS, 2);
+ $where = basename($stack[0]['file']) . ':' . $stack[0]['line'] . ':' . $stack[1]['function'] . ': ';
+ }
+ @file_put_contents($logfile, datetime_convert() . ':' . session_id() . ' ' . $where . $msg . PHP_EOL, FILE_APPEND);
+}
-function dlogger($msg,$level = 0) {
+/**
+ * @brief This is a special logging facility for developers.
+ *
+ * It allows one to target specific things to trace/debug and is identical to
+ * logger() with the exception of the log filename. This allows one to isolate
+ * specific calls while allowing logger() to paint a bigger picture of overall
+ * activity and capture more detail.
+ *
+ * If you find dlogger() calls in checked in code, you are free to remove them -
+ * so as to provide a noise-free development environment which responds to events
+ * you are targetting personally.
+ *
+ * @param string $msg Message to log
+ * @param int $level A log level.
+ */
+function dlogger($msg, $level = 0) {
// turn off logger in install mode
global $a;
global $db;
- if(($a->module == 'install') || (! ($db && $db->connected))) return;
+ if(($a->module == 'install') || (! ($db && $db->connected)))
+ return;
$debugging = get_config('system','debugging');
$loglevel = intval(get_config('system','loglevel'));
@@ -534,19 +565,23 @@ function dlogger($msg,$level = 0) {
if((! $debugging) || (! $logfile) || ($level > $loglevel))
return;
-
- @file_put_contents($logfile, datetime_convert() . ':' . session_id() . ' ' . $msg . "\n", FILE_APPEND);
- return;
+
+ $where = '';
+ if(version_compare(PHP_VERSION, '5.4.0') >= 0) {
+ $stack = debug_backtrace(DEBUG_BACKTRACE_IGNORE_ARGS, 2);
+ $where = basename($stack[0]['file']) . ':' . $stack[0]['line'] . ':' . $stack[1]['function'] . ': ';
+ }
+
+ @file_put_contents($logfile, datetime_convert() . ':' . session_id() . ' ' . $where . $msg . PHP_EOL, FILE_APPEND);
}
function profiler($t1,$t2,$label) {
if(file_exists('profiler.out') && $t1 && t2)
- @file_put_contents('profiler.out', sprintf('%01.4f %s',$t2 - $t1,$label) . "\n", FILE_APPEND);
+ @file_put_contents('profiler.out', sprintf('%01.4f %s',$t2 - $t1,$label) . PHP_EOL, FILE_APPEND);
}
-
function activity_match($haystack,$needle) {
if(($haystack === $needle) || ((basename($needle) === $haystack) && strstr($needle,NAMESPACE_ACTIVITY_SCHEMA)))
return true;
@@ -563,7 +598,6 @@ function activity_match($haystack,$needle) {
// Returns array of tags found, or empty array.
-
function get_tags($s) {
$ret = array();
@@ -586,9 +620,6 @@ function get_tags($s) {
// Match full names against @tags including the space between first and last
// We will look these up afterward to see if they are full names or not recognisable.
-
-
-
if(preg_match_all('/(@[^ \x0D\x0A,:?]+ [^ \x0D\x0A@,:?]+)([ \x0D\x0A@,:?]|$)/',$s,$match)) {
foreach($match[1] as $mtch) {
if(strstr($mtch,"]")) {
@@ -613,8 +644,8 @@ function get_tags($s) {
}
if(substr($mtch,-1,1) === '.')
$mtch = substr($mtch,0,-1);
- // ignore strictly numeric tags like #1
- if((strpos($mtch,'#') === 0) && ( ctype_digit(substr($mtch,1)) || substr($mtch,1,1) === '^'))
+ // ignore strictly numeric tags like #1 or #^ bookmarks or ## double hash
+ if((strpos($mtch,'#') === 0) && ( ctype_digit(substr($mtch,1)) || substr($mtch,1,1) === '^') || substr($mtch,1,1) === '#')
continue;
// try not to catch url fragments
if(strpos($s,$mtch) && preg_match('/[a-zA-z0-9\/]/',substr($s,strpos($s,$mtch)-1,1)))
@@ -642,7 +673,6 @@ function get_tags($s) {
usort($ret,'tag_sort_length');
-
// logger('get_tags: ' . print_r($ret,true));
return $ret;
@@ -651,13 +681,12 @@ function get_tags($s) {
function tag_sort_length($a,$b) {
if(mb_strlen($a) == mb_strlen($b))
return 0;
+
return((mb_strlen($b) < mb_strlen($a)) ? (-1) : 1);
}
-
-
function strip_zids($s) {
return preg_replace('/[\?&]zid=(.*?)(&|$)/ism','$2',$s);
}
@@ -667,12 +696,10 @@ function strip_zids($s) {
function qp($s) {
-return str_replace ("%","=",rawurlencode($s));
+ return str_replace ("%","=",rawurlencode($s));
}
-
-
function get_mentions($item,$tags) {
$o = '';
@@ -706,7 +733,6 @@ function contact_block() {
if($shown == 0)
return;
-
$is_owner = ((local_user() && local_user() == $a->profile['uid']) ? true : false);
$abook_flags = ABOOK_FLAG_PENDING|ABOOK_FLAG_SELF;
@@ -718,7 +744,7 @@ function contact_block() {
if((! is_array($a->profile)) || ($a->profile['hide_friends']))
return $o;
- $r = q("SELECT COUNT(abook_id) AS total FROM abook left join xchan on abook_xchan = xchan_hash WHERE abook_channel = %d and not ( abook_flags & %d ) and not (xchan_flags & %d)",
+ $r = q("SELECT COUNT(abook_id) AS total FROM abook left join xchan on abook_xchan = xchan_hash WHERE abook_channel = %d and not ( abook_flags & %d )>0 and not (xchan_flags & %d)>0",
intval($a->profile['uid']),
intval($abook_flags),
intval($xchan_flags)
@@ -728,11 +754,14 @@ function contact_block() {
}
if(! $total) {
$contacts = t('No connections');
- $micropro = Null;
-
+ $micropro = null;
} else {
-
- $r = q("SELECT abook.*, xchan.* FROM abook left join xchan on abook.abook_xchan = xchan.xchan_hash WHERE abook_channel = %d AND not ( abook_flags & %d) and not (xchan_flags & %d ) ORDER BY RAND() LIMIT %d",
+ if(ACTIVE_DBTYPE == DBTYPE_POSTGRES) {
+ $randfunc = 'RANDOM()';
+ } else {
+ $randfunc = 'RAND()';
+ }
+ $r = q("SELECT abook.*, xchan.* FROM abook left join xchan on abook.abook_xchan = xchan.xchan_hash WHERE abook_channel = %d AND not ( abook_flags & %d)>0 and not (xchan_flags & %d )>0 ORDER BY $randfunc LIMIT %d",
intval($a->profile['uid']),
intval($abook_flags|ABOOK_FLAG_ARCHIVED),
intval($xchan_flags),
@@ -748,7 +777,7 @@ function contact_block() {
}
}
}
-
+
$tpl = get_markup_template('contact_block.tpl');
$o = replace_macros($tpl, array(
'$contacts' => $contacts,
@@ -761,7 +790,6 @@ function contact_block() {
call_hooks('contact_block_end', $arr);
return $o;
-
}
@@ -805,42 +833,38 @@ function micropro($contact, $redirect = false, $class = '', $textmode = false) {
}
-
-
function search($s,$id='search-box',$url='/search',$save = false) {
$a = get_app();
- $o = '<div id="' . $id . '">';
- $o .= '<form action="' . $a->get_baseurl((stristr($url,'network')) ? true : false) . $url . '" method="get" >';
- $o .= '<input type="text" class="icon-search" name="search" id="search-text" placeholder="&#xf002;" value="' . $s .'" onclick="this.submit();" />';
- $o .= '<input class="search-submit btn btn-default" type="submit" name="submit" id="search-submit" value="' . t('Search') . '" />';
- if(feature_enabled(local_user(),'savedsearch'))
- $o .= '<input class="search-save btn btn-default" type="submit" name="save" id="search-save" value="' . t('Save') . '" />';
- $o .= '</form></div>';
- return $o;
+ return replace_macros(get_markup_template('searchbox.tpl'),array(
+ '$s' => $s,
+ '$id' => $id,
+ '$action_url' => $a->get_baseurl((stristr($url,'network')) ? true : false) . $url,
+ '$search_label' => t('Search'),
+ '$save_label' => t('Save'),
+ '$savedsearch' => feature_enabled(local_user(),'savedsearch')
+ ));
}
function searchbox($s,$id='search-box',$url='/search',$save = false) {
- $a = get_app();
- $o = '<div id="' . $id . '">';
- $o .= '<form action="' . z_root() . '/' . $url . '" method="get" >';
- $o .= '<input type="hidden" name="f" value="" />';
- $o .= '<input type="text" class="icon-search" name="search" id="search-text" placeholder="&#xf002;" value="' . $s .'" onclick="this.submit();" />';
- $o .= '<input type="submit" name="submit" class="btn btn-default" id="search-submit" value="' . t('Search') . '" />';
- if(feature_enabled(local_user(),'savedsearch'))
- $o .= '<input type="submit" name="searchsave" class="btn btn-default" id="search-save" value="' . t('Save') . '" />';
- $o .= '</form></div>';
- return $o;
+ return replace_macros(get_markup_template('searchbox.tpl'),array(
+ '$s' => $s,
+ '$id' => $id,
+ '$action_url' => z_root() . '/' . $url,
+ '$search_label' => t('Search'),
+ '$save_label' => t('Save'),
+ '$savedsearch' => feature_enabled(local_user(),'savedsearch')
+ ));
}
function valid_email($x){
-
if(get_config('system','disable_email_validation'))
return true;
if(preg_match('/^[_a-zA-Z0-9\-\+]+(\.[_a-zA-Z0-9\-\+]+)*@[a-zA-Z0-9-]+(\.[a-zA-Z0-9-]+)+$/',$x))
return true;
+
return false;
}
@@ -860,6 +884,7 @@ function linkify($s) {
return($s);
}
+
/**
* @function sslify($s)
* Replace media element using http url with https to a local redirector if using https locally
@@ -871,11 +896,10 @@ function linkify($s) {
*
* @returns string
*/
-
-
function sslify($s) {
if(strpos(z_root(),'https:') === false)
return $s;
+
$matches = null;
$cnt = preg_match_all("/\<(.*?)src=\"(http\:.*?)\"(.*?)\>/",$s,$matches,PREG_SET_ORDER);
if($cnt) {
@@ -889,7 +913,6 @@ function sslify($s) {
function get_poke_verbs() {
-
// index is present tense verb
// value is array containing past tense verb, translation of present, translation of past
@@ -901,12 +924,13 @@ function get_poke_verbs() {
'finger' => array( 'fingered', t('finger'), t('fingered')),
'rebuff' => array( 'rebuffed', t('rebuff'), t('rebuffed')),
);
+
call_hooks('poke_verbs', $arr);
return $arr;
}
function get_mood_verbs() {
-
+
$arr = array(
'happy' => t('happy'),
'sad' => t('sad'),
@@ -935,40 +959,10 @@ function get_mood_verbs() {
return $arr;
}
-
-/**
- *
- * Function: smilies
- *
- * Description:
- * Replaces text emoticons with graphical images
- *
- * @Parameter: string $s
- *
- * Returns string
- *
- * It is expected that this function will be called using HTML text.
- * We will escape text between HTML pre and code blocks, and HTML attributes
- * (such as urls) from being processed.
- *
- * At a higher level, the bbcode [nosmile] tag can be used to prevent this
- * function from being executed by the prepare_text() routine when preparing
- * bbcode source for HTML display
- *
- */
-
-
-function smilies($s, $sample = false) {
-
+// Function to list all smilies, both internal and from addons
+// Returns array with keys 'texts' and 'icons'
+function list_smilies() {
$a = get_app();
-
- if(intval(get_config('system','no_smilies'))
- || (local_user() && intval(get_pconfig(local_user(),'system','no_smilies'))))
- return $s;
-
- $s = preg_replace_callback('{<(pre|code)>.*?</\1>}ism','smile_shield',$s);
- $s = preg_replace_callback('/<[a-z]+ .*?>/ism','smile_shield',$s);
-
$texts = array(
'&lt;3',
'&lt;/3',
@@ -1002,6 +996,7 @@ function smilies($s, $sample = false) {
':facepalm',
':like',
':dislike',
+ 'red#matrix',
'red#',
'r#'
);
@@ -1039,13 +1034,48 @@ function smilies($s, $sample = false) {
'<img class="smiley" src="' . $a->get_baseurl() . '/images/smiley-facepalm.gif" alt=":facepalm" />',
'<img class="smiley" src="' . $a->get_baseurl() . '/images/like.gif" alt=":like" />',
'<img class="smiley" src="' . $a->get_baseurl() . '/images/dislike.gif" alt=":dislike" />',
- '<a href="http://getzot.com"><strong>red<img class="smiley" src="' . $a->get_baseurl() . '/images/rm-16.png" alt="red#" />matrix</strong></a>',
+ '<a href="http://getzot.com"><strong>red<img class="smiley" src="' . $a->get_baseurl() . '/images/rm-16.png" alt="' . urlencode('red#matrix') . '" />matrix</strong></a>',
+ '<a href="http://getzot.com"><strong>red<img class="smiley" src="' . $a->get_baseurl() . '/images/rm-16.png" alt="' . urlencode('red#') . '" />matrix</strong></a>',
'<a href="http://getzot.com"><strong>red<img class="smiley" src="' . $a->get_baseurl() . '/images/rm-16.png" alt="r#" />matrix</strong></a>'
);
- $params = array('texts' => $texts, 'icons' => $icons, 'string' => $s);
+ $params = array('texts' => $texts, 'icons' => $icons);
call_hooks('smilie', $params);
+ return $params;
+}
+/**
+ *
+ * Function: smilies
+ *
+ * Description:
+ * Replaces text emoticons with graphical images
+ *
+ * @Parameter: string $s
+ *
+ * Returns string
+ *
+ * It is expected that this function will be called using HTML text.
+ * We will escape text between HTML pre and code blocks, and HTML attributes
+ * (such as urls) from being processed.
+ *
+ * At a higher level, the bbcode [nosmile] tag can be used to prevent this
+ * function from being executed by the prepare_text() routine when preparing
+ * bbcode source for HTML display
+ *
+ */
+function smilies($s, $sample = false) {
+ $a = get_app();
+
+ if(intval(get_config('system','no_smilies'))
+ || (local_user() && intval(get_pconfig(local_user(),'system','no_smilies'))))
+ return $s;
+
+ $s = preg_replace_callback('{<(pre|code)>.*?</\1>}ism','smile_shield',$s);
+ $s = preg_replace_callback('/<[a-z]+ .*?>/ism','smile_shield',$s);
+
+ $params = list_smilies();
+ $params['string'] = $s;
if($sample) {
$s = '<div class="smiley-sample">';
@@ -1061,7 +1091,6 @@ function smilies($s, $sample = false) {
$s = preg_replace_callback('/<!--base64:(.*?)-->/ism', 'smile_unshield', $s);
return $s;
-
}
function smile_shield($m) {
@@ -1121,6 +1150,7 @@ function normalise_link($url) {
function link_compare($a,$b) {
if(strcasecmp(normalise_link($a),normalise_link($b)) === 0)
return true;
+
return false;
}
@@ -1136,7 +1166,6 @@ function unobscure(&$item) {
if($item['body'])
$item['body'] = crypto_unencapsulate(json_decode_plus($item['body']),$key);
}
-
}
function theme_attachments(&$item) {
@@ -1174,13 +1203,15 @@ function theme_attachments(&$item) {
$title = t('unknown.???');
$title .= ' ' . $r['length'] . ' ' . t('bytes');
- $url = z_root() . '/magic?f=&hash=' . $item['author_xchan'] . '&dest=' . $r['href'] . '/' . $r['revision'];
+ require_once('include/identity.php');
+ if(is_foreigner($item['author_xchan']))
+ $url = $r['href'];
+ else
+ $url = z_root() . '/magic?f=&hash=' . $item['author_xchan'] . '&dest=' . $r['href'] . '/' . $r['revision'];
+
$s .= '<a href="' . $url . '" title="' . $title . '" class="attachlink" >' . $icon . '</a>';
$attaches[] = array('title' => $title, 'url' => $url, 'icon' => $icon );
-
}
-
-
}
$s = replace_macros(get_markup_template('item_attach.tpl'), array(
@@ -1188,13 +1219,12 @@ function theme_attachments(&$item) {
));
return $s;
-
}
function format_categories(&$item,$writeable) {
-
$s = '';
+
$terms = get_terms_oftype($item['term'],TERM_CATEGORY);
if($terms) {
$categories = array();
@@ -1210,6 +1240,7 @@ function format_categories(&$item,$writeable) {
'$remove' => t('remove category'),
'$categories' => $categories
));
+
return $s;
}
@@ -1220,7 +1251,6 @@ function format_hashtags(&$item) {
$s = '';
$terms = get_terms_oftype($item['term'],TERM_HASHTAG);
if($terms) {
- $categories = array();
foreach($terms as $t) {
$term = htmlspecialchars($t['term'],ENT_COMPAT,'UTF-8',false) ;
if(! trim($term))
@@ -1240,11 +1270,10 @@ function format_hashtags(&$item) {
function format_mentions(&$item) {
-
$s = '';
+
$terms = get_terms_oftype($item['term'],TERM_MENTION);
if($terms) {
- $categories = array();
foreach($terms as $t) {
$term = htmlspecialchars($t['term'],ENT_COMPAT,'UTF-8',false) ;
if(! trim($term))
@@ -1263,8 +1292,8 @@ function format_mentions(&$item) {
function format_filer(&$item) {
-
$s = '';
+
$terms = get_terms_oftype($item['term'],TERM_FILE);
if($terms) {
$categories = array();
@@ -1280,18 +1309,28 @@ function format_filer(&$item) {
'$remove' => t('remove from file'),
'$categories' => $categories
));
+
return $s;
}
+function generate_map($coord) {
+ $coord = trim($coord);
+ $coord = str_replace(array(',','/',' '),array(' ',' ',' '),$coord);
+ $arr = array('lat' => trim(substr($coord,0,strpos($coord,' '))), 'lon' => trim(substr($coord,strpos($coord,' ')+1)), 'html' => '');
+ call_hooks('generate_map',$arr);
+ return $arr['html'];
+}
+function generate_named_map($location) {
+ $arr = array('location' => $location, 'html' => '');
+ call_hooks('generate_named_map',$arr);
+ return $arr['html'];
+}
-function prepare_body(&$item,$attach = false) {
-
- $a = get_app();
-
+function prepare_body(&$item,$attach = false) {
call_hooks('prepare_body_init', $item);
@@ -1307,28 +1346,29 @@ function prepare_body(&$item,$attach = false) {
return $s;
}
+ if(strpos($s,'<div class="map">') !== false && $item['coord']) {
+ $x = generate_map(trim($item['coord']));
+ if($x) {
+ $s = preg_replace('/\<div class\=\"map\"\>/','$0' . $x,$s);
+ }
+ }
$s .= theme_attachments($item);
-
- $writeable = ((get_observer_hash() == $item['owner_xchan']) ? true : false);
-
+ $writeable = ((get_observer_hash() == $item['owner_xchan']) ? true : false);
$s .= format_hashtags($item);
if($item['resource_type'])
$s .= format_mentions($item);
-
$s .= format_categories($item,$writeable);
if(local_user() == $item['uid'])
$s .= format_filer($item);
-
$s = sslify($s);
-
// Look for spoiler
$spoilersearch = '<blockquote class="spoiler">';
@@ -1343,7 +1383,7 @@ function prepare_body(&$item,$attach = false) {
$pos = strpos($s, $spoilersearch);
$rnd = random_string(8);
$spoilerreplace = '<br /> <span id="spoiler-wrap-'.$rnd.'" style="white-space:nowrap;" class="fakelink" onclick="openClose(\'spoiler-'.$rnd.'\');">'.sprintf(t('Click to open/close')).'</span>'.
- '<blockquote class="spoiler" id="spoiler-'.$rnd.'" style="display: none;">';
+ '<blockquote class="spoiler" id="spoiler-'.$rnd.'" style="display: none;">';
$s = substr($s, 0, $pos).$spoilerreplace.substr($s, $pos+strlen($spoilersearch));
}
@@ -1351,11 +1391,10 @@ function prepare_body(&$item,$attach = false) {
$authorsearch = '<blockquote class="author">';
while ((strpos($s, $authorsearch) !== false)) {
-
$pos = strpos($s, $authorsearch);
$rnd = random_string(8);
$authorreplace = '<br /> <span id="author-wrap-'.$rnd.'" style="white-space:nowrap;" class="fakelink" onclick="openClose(\'author-'.$rnd.'\');">'.sprintf(t('Click to open/close')).'</span>'.
- '<blockquote class="author" id="author-'.$rnd.'" style="display: block;">';
+ '<blockquote class="author" id="author-'.$rnd.'" style="display: block;">';
$s = substr($s, 0, $pos).$authorreplace.substr($s, $pos+strlen($authorsearch));
}
@@ -1371,10 +1410,7 @@ function prepare_body(&$item,$attach = false) {
function prepare_text($text,$content_type = 'text/bbcode') {
-
-
switch($content_type) {
-
case 'text/plain':
$s = escape_tags($text);
break;
@@ -1444,7 +1480,7 @@ function zidify_callback($match) {
function zidify_img_callback($match) {
$is_zid = ((feature_enabled(local_user(),'sendzid')) || (strpos($match[1],'zrl')) ? true : false);
$replace = '<img' . $match[1] . ' src="' . (($is_zid) ? zid($match[2]) : $match[2]) . '"';
-
+
$x = str_replace($match[0],$replace,$match[0]);
return $x;
}
@@ -1457,14 +1493,11 @@ function zidify_links($s) {
}
-
/**
* return atom link elements for all of our hubs
*/
-
function feed_hublinks() {
-
$hub = get_config('system','huburl');
$hubxml = '';
@@ -1479,14 +1512,13 @@ function feed_hublinks() {
}
}
}
+
return $hubxml;
}
/* return atom link elements for salmon endpoints */
-
function feed_salmonlinks($nick) {
-
$a = get_app();
$salmon = '<link rel="salmon" href="' . xmlify($a->get_baseurl() . '/salmon/' . $nick) . '" />' . "\n" ;
@@ -1495,23 +1527,23 @@ function feed_salmonlinks($nick) {
$salmon .= ' <link rel="http://salmon-protocol.org/ns/salmon-replies" href="' . xmlify($a->get_baseurl() . '/salmon/' . $nick) . '" />' . "\n" ;
$salmon .= ' <link rel="http://salmon-protocol.org/ns/salmon-mention" href="' . xmlify($a->get_baseurl() . '/salmon/' . $nick) . '" />' . "\n" ;
+
return $salmon;
}
function get_plink($item,$conversation_mode = true) {
- $a = get_app();
if($conversation_mode)
$key = 'plink';
else
$key = 'llink';
-
+
if(x($item,$key)) {
return array(
'href' => zid($item[$key]),
'title' => t('Link to Source'),
);
- }
+ }
else {
return false;
}
@@ -1523,7 +1555,7 @@ function unamp($s) {
}
function layout_select($channel_id, $current = '') {
- $r = q("select mid,sid from item left join item_id on iid = item.id where service = 'PDL' and item.uid = item_id.uid and item_id.uid = %d and (item_restrict & %d)",
+ $r = q("select mid,sid from item left join item_id on iid = item.id where service = 'PDL' and item.uid = item_id.uid and item_id.uid = %d and (item_restrict & %d)>0",
intval($channel_id),
intval(ITEM_PDL)
);
@@ -1543,9 +1575,6 @@ function layout_select($channel_id, $current = '') {
}
-
-
-
function mimetype_select($channel_id, $current = 'text/bbcode') {
$x = array(
@@ -1576,19 +1605,17 @@ function mimetype_select($channel_id, $current = 'text/bbcode') {
$o .= '</select>';
return $o;
-
}
-
function lang_selector() {
global $a;
-
+
$langs = glob('view/*/strings.php');
-
+
$lang_options = array();
$selected = "";
-
+
if(is_array($langs) && count($langs)) {
$langs[] = '';
if(! in_array('view/en/strings.php',$langs))
@@ -1602,29 +1629,28 @@ function lang_selector() {
$ll = substr($l,5);
$ll = substr($ll,0,strrpos($ll,'/'));
$selected = (($ll === $a->language && (x($_SESSION, 'language'))) ? $ll : $selected);
- $lang_options[$ll]=$ll;
+ $lang_options[$ll] = get_language_name($ll, $ll) . " ($ll)";
}
}
- $tpl = get_markup_template("lang_selector.tpl");
+ $tpl = get_markup_template("lang_selector.tpl");
$o = replace_macros($tpl, array(
'$title' => t('Select an alternate language'),
'$langs' => array($lang_options, $selected),
));
+
return $o;
}
-
function return_bytes ($size_str) {
- switch (substr ($size_str, -1))
- {
- case 'M': case 'm': return (int)$size_str * 1048576;
- case 'K': case 'k': return (int)$size_str * 1024;
- case 'G': case 'g': return (int)$size_str * 1073741824;
- default: return $size_str;
- }
+ switch (substr ($size_str, -1)) {
+ case 'M': case 'm': return (int)$size_str * 1048576;
+ case 'K': case 'k': return (int)$size_str * 1024;
+ case 'G': case 'g': return (int)$size_str * 1073741824;
+ default: return $size_str;
+ }
}
@@ -1639,7 +1665,6 @@ function base64url_encode($s, $strip_padding = true) {
}
function base64url_decode($s) {
-
if(is_array($s)) {
logger('base64url_decode: illegal input: ' . print_r(debug_backtrace(), true));
return $s;
@@ -1647,7 +1672,11 @@ function base64url_decode($s) {
return base64_decode(strtr($s,'-_','+/'));
}
-
+/**
+ * @ Return a div to clear floats.
+ *
+ * @return string
+ */
function cleardiv() {
return '<div class="clear"></div>';
}
@@ -1665,7 +1694,7 @@ function bb_translate_video($s) {
$s = str_replace($mtch[0],'[vimeo]' . $mtch[1] . '[/vimeo]',$s);
}
}
- return $s;
+ return $s;
}
function html2bb_video($s) {
@@ -1685,61 +1714,57 @@ function html2bb_video($s) {
/**
* apply xmlify() to all values of array $val, recursively
*/
-function array_xmlify($val){
+function array_xmlify($val) {
if (is_bool($val)) return $val?"true":"false";
if (is_array($val)) return array_map('array_xmlify', $val);
return xmlify((string) $val);
}
-function reltoabs($text, $base)
-{
- if (empty($base))
- return $text;
+function reltoabs($text, $base) {
+ if (empty($base))
+ return $text;
- $base = rtrim($base,'/');
+ $base = rtrim($base,'/');
- $base2 = $base . "/";
-
- // Replace links
- $pattern = "/<a([^>]*) href=\"(?!http|https|\/)([^\"]*)\"/";
- $replace = "<a\${1} href=\"" . $base2 . "\${2}\"";
- $text = preg_replace($pattern, $replace, $text);
+ $base2 = $base . "/";
- $pattern = "/<a([^>]*) href=\"(?!http|https)([^\"]*)\"/";
- $replace = "<a\${1} href=\"" . $base . "\${2}\"";
- $text = preg_replace($pattern, $replace, $text);
+ // Replace links
+ $pattern = "/<a([^>]*) href=\"(?!http|https|\/)([^\"]*)\"/";
+ $replace = "<a\${1} href=\"" . $base2 . "\${2}\"";
+ $text = preg_replace($pattern, $replace, $text);
- // Replace images
- $pattern = "/<img([^>]*) src=\"(?!http|https|\/)([^\"]*)\"/";
- $replace = "<img\${1} src=\"" . $base2 . "\${2}\"";
- $text = preg_replace($pattern, $replace, $text);
+ $pattern = "/<a([^>]*) href=\"(?!http|https)([^\"]*)\"/";
+ $replace = "<a\${1} href=\"" . $base . "\${2}\"";
+ $text = preg_replace($pattern, $replace, $text);
- $pattern = "/<img([^>]*) src=\"(?!http|https)([^\"]*)\"/";
- $replace = "<img\${1} src=\"" . $base . "\${2}\"";
- $text = preg_replace($pattern, $replace, $text);
+ // Replace images
+ $pattern = "/<img([^>]*) src=\"(?!http|https|\/)([^\"]*)\"/";
+ $replace = "<img\${1} src=\"" . $base2 . "\${2}\"";
+ $text = preg_replace($pattern, $replace, $text);
+ $pattern = "/<img([^>]*) src=\"(?!http|https)([^\"]*)\"/";
+ $replace = "<img\${1} src=\"" . $base . "\${2}\"";
+ $text = preg_replace($pattern, $replace, $text);
- // Done
- return $text;
+ // Done
+ return $text;
}
function item_post_type($item) {
-
-
- switch($item['resource_type']) {
- case 'photo':
- $post_type = t('photo');
- break;
- case 'event':
- $post_type = t('event');
- break;
- default:
- $post_type = t('status');
- if($item['mid'] != $item['parent_mid'])
- $post_type = t('comment');
- break;
- }
+ switch($item['resource_type']) {
+ case 'photo':
+ $post_type = t('photo');
+ break;
+ case 'event':
+ $post_type = t('event');
+ break;
+ default:
+ $post_type = t('status');
+ if($item['mid'] != $item['parent_mid'])
+ $post_type = t('comment');
+ break;
+ }
if(strlen($item['verb']) && (! activity_match($item['verb'],ACTIVITY_POST)))
$post_type = t('activity');
@@ -1781,6 +1806,7 @@ function is_a_date_arg($s) {
return true;
}
}
+
return false;
}
@@ -1800,8 +1826,13 @@ function legal_webbie($s) {
function check_webbie($arr) {
+ $reservechan = get_config('system','reserved_channels');
+ if(strlen($reservechan))
+ $taken = explode(',', $reservechan);
+ else
+ $taken = array();
+
$str = '';
- $taken = array();
if(count($arr)) {
foreach($arr as $x) {
$y = legal_webbie($x);
@@ -1827,14 +1858,16 @@ function check_webbie($arr) {
}
}
}
+
return '';
}
-
+
function ids_to_querystr($arr,$idx = 'id') {
$t = array();
foreach($arr as $x)
$t[] = $x[$idx];
+
return(implode(',', $t));
}
@@ -1842,9 +1875,17 @@ function ids_to_querystr($arr,$idx = 'id') {
// author_xchan and owner_xchan. If $abook is true also include the abook info.
// This is needed in the API to save extra per item lookups there.
-function xchan_query(&$items,$abook = true) {
+function xchan_query(&$items,$abook = true,$effective_uid = 0) {
$arr = array();
if($items && count($items)) {
+
+ if($effective_uid) {
+ for($x = 0; $x < count($items); $x ++) {
+ $items[$x]['real_uid'] = $items[$x]['uid'];
+ $items[$x]['uid'] = $effective_uid;
+ }
+ }
+
foreach($items as $item) {
if($item['owner_xchan'] && (! in_array($item['owner_xchan'],$arr)))
$arr[] = "'" . dbesc($item['owner_xchan']) . "'";
@@ -1855,14 +1896,19 @@ function xchan_query(&$items,$abook = true) {
if(count($arr)) {
if($abook) {
$chans = q("select * from xchan left join hubloc on hubloc_hash = xchan_hash left join abook on abook_xchan = xchan_hash and abook_channel = %d
- where xchan_hash in (" . implode(',', $arr) . ") and ( hubloc_flags & " . intval(HUBLOC_FLAGS_PRIMARY) . " )",
+ where xchan_hash in (" . implode(',', $arr) . ") and ( hubloc_flags & " . intval(HUBLOC_FLAGS_PRIMARY) . " )>0",
intval($item['uid'])
);
}
else {
$chans = q("select xchan.*,hubloc.* from xchan left join hubloc on hubloc_hash = xchan_hash
- where xchan_hash in (" . implode(',', $arr) . ") and ( hubloc_flags & " . intval(HUBLOC_FLAGS_PRIMARY) . " )");
+ where xchan_hash in (" . implode(',', $arr) . ") and ( hubloc_flags & " . intval(HUBLOC_FLAGS_PRIMARY) . " )>0");
}
+ $xchans = q("select * from xchan where xchan_hash in (" . implode(',',$arr) . ") and xchan_network in ('rss','unknown')");
+ if(! $chans)
+ $chans = $xchans;
+ else
+ $chans = array_merge($xchans,$chans);
}
if($items && count($items) && $chans && count($chans)) {
for($x = 0; $x < count($items); $x ++) {
@@ -1870,7 +1916,6 @@ function xchan_query(&$items,$abook = true) {
$items[$x]['author'] = find_xchan_in_array($items[$x]['author_xchan'],$chans);
}
}
-
}
function xchan_mail_query(&$item) {
@@ -1885,7 +1930,7 @@ function xchan_mail_query(&$item) {
if(count($arr)) {
$chans = q("select xchan.*,hubloc.* from xchan left join hubloc on hubloc_hash = xchan_hash
- where xchan_hash in (" . implode(',', $arr) . ") and ( hubloc_flags & " . intval(HUBLOC_FLAGS_PRIMARY) . " )");
+ where xchan_hash in (" . implode(',', $arr) . ") and ( hubloc_flags & " . intval(HUBLOC_FLAGS_PRIMARY) . " )>0");
}
if($chans) {
$item['from'] = find_xchan_in_array($item['from_xchan'],$chans);
@@ -1910,6 +1955,7 @@ function get_rel_link($j,$rel) {
foreach($j as $l)
if($l['rel'] === $rel)
return $l['href'];
+
return '';
}
@@ -1919,7 +1965,7 @@ function get_rel_link($j,$rel) {
function magic_link($s) {
return $s;
}
-
+
// if $escape is true, dbesc() each element before adding quotes
function stringify_array_elms(&$arr,$escape = false) {
@@ -1936,23 +1982,22 @@ function stringify_array_elms(&$arr,$escape = false) {
*/
function jindent($json) {
- $result = '';
- $pos = 0;
- $strLen = strlen($json);
- $indentStr = ' ';
- $newLine = "\n";
- $prevChar = '';
+ $result = '';
+ $pos = 0;
+ $strLen = strlen($json);
+ $indentStr = ' ';
+ $newLine = "\n";
+ $prevChar = '';
$outOfQuotes = true;
for ($i=0; $i<=$strLen; $i++) {
-
// Grab the next character in the string.
$char = substr($json, $i, 1);
// Are we inside a quoted string?
if ($char == '"' && $prevChar != '\\') {
$outOfQuotes = !$outOfQuotes;
-
+
// If this character is the end of an element,
// output a new line and indent the next line.
} else if(($char == '}' || $char == ']') && $outOfQuotes) {
@@ -1962,7 +2007,7 @@ function jindent($json) {
$result .= $indentStr;
}
}
-
+
// Add the character to the result string.
$result .= $char;
@@ -1973,7 +2018,7 @@ function jindent($json) {
if ($char == '{' || $char == '[') {
$pos ++;
}
-
+
for ($j = 0; $j < $pos; $j++) {
$result .= $indentStr;
}
@@ -1987,22 +2032,31 @@ function jindent($json) {
function json_decode_plus($s) {
-
$x = json_decode($s,true);
if(! $x)
$x = json_decode(str_replace(array('\\"','\\\\'),array('"','\\'),$s),true);
- return $x;
+ return $x;
}
function design_tools() {
+
$channel = get_app()->get_channel();
+ $sys = false;
+
+ if(get_app()->is_sys && is_site_admin()) {
+ require_once('include/identity.php');
+ $channel = get_sys_channel();
+ $sys = true;
+ }
+
$who = $channel['channel_address'];
return replace_macros(get_markup_template('design_tools.tpl'), array(
'$title' => t('Design'),
'$who' => $who,
+ '$sys' => $sys,
'$blocks' => t('Blocks'),
'$menus' => t('Menus'),
'$layout' => t('Layouts'),
@@ -2020,3 +2074,279 @@ function normalise_openid($s) {
return trim(str_replace(array('http://','https://'),array('',''),$s),'/');
}
+// used in ajax endless scroll request to find out all the args that the master page was viewing.
+// This was using $_REQUEST, but $_REQUEST also contains all your cookies. So we're restricting it
+// to $_GET and $_POST.
+
+function extra_query_args() {
+ $s = '';
+ if(count($_GET)) {
+ foreach($_GET as $k => $v) {
+ // these are request vars we don't want to duplicate
+ if(! in_array($k, array('q','f','zid','page','PHPSESSID'))) {
+ $s .= '&' . $k . '=' . urlencode($v);
+ }
+ }
+ }
+ if(count($_POST)) {
+ foreach($_POST as $k => $v) {
+ // these are request vars we don't want to duplicate
+ if(! in_array($k, array('q','f','zid','page','PHPSESSID'))) {
+ $s .= '&' . $k . '=' . urlencode($v);
+ }
+ }
+ }
+ return $s;
+}
+
+/**
+ * This function removes the tag $tag from the text $body and replaces it with
+ * the appropiate link.
+ *
+ * @param unknown_type $body the text to replace the tag in
+ * @param unknown_type $access_tag - used to return tag ACL exclusions e.g. @!foo
+ * @param unknown_type $str_tags string to add the tag to
+ * @param unknown_type $profile_uid
+ * @param unknown_type $tag the tag to replace
+ *
+ * @return boolean true if replaced, false if not replaced
+ */
+function handle_tag($a, &$body, &$access_tag, &$str_tags, $profile_uid, $tag) {
+
+ $replaced = false;
+ $r = null;
+
+ $termtype = ((strpos($tag,'#') === 0) ? TERM_HASHTAG : TERM_UNKNOWN);
+ $termtype = ((strpos($tag,'@') === 0) ? TERM_MENTION : $termtype);
+ $termtype = ((strpos($tag,'#^[') === 0) ? TERM_BOOKMARK : $termtype);
+
+ //is it a hash tag?
+ if(strpos($tag,'#') === 0) {
+ if(strpos($tag,'#^[') === 0) {
+ if(preg_match('/#\^\[(url|zrl)(.*?)\](.*?)\[\/(url|zrl)\]/',$tag,$match)) {
+ $basetag = $match[3];
+ $url = ((substr($match[2],0,1) === '=') ? substr($match[2],1) : $match[3]);
+ $replaced = true;
+ }
+ }
+ // if the tag is already replaced...
+ elseif((strpos($tag,'[zrl=')) || (strpos($tag,'[url='))) {
+ //...do nothing
+ return $replaced;
+ }
+ if($tag == '#getzot') {
+ $basetag = 'getzot';
+ $url = 'https://redmatrix.me';
+ $newtag = '#[zrl=' . $url . ']' . $basetag . '[/zrl]';
+ $body = str_replace($tag,$newtag,$body);
+ $replaced = true;
+ }
+ if(! $replaced) {
+
+ //base tag has the tags name only
+
+ if((substr($tag,0,7) === '#&quot;') && (substr($tag,-6,6) === '&quot;')) {
+ $basetag = substr($tag,7);
+ $basetag = substr($basetag,0,-6);
+ }
+ else
+ $basetag = str_replace('_',' ',substr($tag,1));
+
+ //create text for link
+ $url = $a->get_baseurl() . '/search?tag=' . rawurlencode($basetag);
+ $newtag = '#[zrl=' . $a->get_baseurl() . '/search?tag=' . rawurlencode($basetag) . ']' . $basetag . '[/zrl]';
+ //replace tag by the link
+ $body = str_replace($tag, $newtag, $body);
+ $replaced = true;
+ }
+ //is the link already in str_tags?
+ if(! stristr($str_tags,$newtag)) {
+ //append or set str_tags
+ if(strlen($str_tags))
+ $str_tags .= ',';
+
+ $str_tags .= $newtag;
+ }
+ return array('replaced' => $replaced, 'termtype' => $termtype, 'term' => $basetag, 'url' => $url, 'contact' => $r[0]);
+ }
+
+ //is it a person tag?
+
+ if(strpos($tag,'@') === 0) {
+
+ // The @! tag will alter permissions
+ $exclusive = ((strpos($tag,'!') === 1) ? true : false);
+
+ //is it already replaced?
+ if(strpos($tag,'[zrl='))
+ return $replaced;
+
+ //get the person's name
+
+ $name = substr($tag,(($exclusive) ? 2 : 1)); // The name or name fragment we are going to replace
+ $newname = $name; // a copy that we can mess with
+ $tagcid = 0;
+
+ $r = null;
+
+ // is it some generated name?
+
+ $forum = false;
+ $trailing_plus_name = false;
+
+ // @channel+ is a forum or network delivery tag
+
+ if(substr($newname,-1,1) === '+') {
+ $forum = true;
+ $newname = substr($newname,0,-1);
+ }
+
+ // Here we're looking for an address book entry as provided by the auto-completer
+ // of the form something+nnn where nnn is an abook_id or the first chars of xchan_hash
+
+ if(strrpos($newname,'+')) {
+ //get the id
+
+ if(strrpos($tagcid,' '))
+ $tagcid = substr($tagcid,0,strrpos($tagcid,' '));
+
+ $tagcid = substr($newname,strrpos($newname,'+') + 1);
+
+ if(strlen($tagcid) < 16)
+ $abook_id = intval($tagcid);
+ //remove the next word from tag's name
+ if(strpos($name,' ')) {
+ $name = substr($name,0,strpos($name,' '));
+ }
+
+ if($abook_id) { // if there was an id
+ // select channel with that id from the logged in user's address book
+ $r = q("SELECT * FROM abook left join xchan on abook_xchan = xchan_hash
+ WHERE abook_id = %d AND abook_channel = %d LIMIT 1",
+ intval($abook_id),
+ intval($profile_uid)
+ );
+ }
+ else {
+ $r = q("SELECT * FROM xchan
+ WHERE xchan_hash like '%s%%' LIMIT 1",
+ dbesc($tagcid)
+ );
+ }
+ }
+
+ if(! $r) {
+
+ // look for matching names in the address book
+
+ // Two ways to deal with spaces - double quote the name or use underscores
+ // we see this after input filtering so quotes have been html entity encoded
+
+ if((substr($name,0,6) === '&quot;') && (substr($name,-6,6) === '&quot;')) {
+ $newname = substr($name,6);
+ $newname = substr($newname,0,-6);
+ }
+ else
+ $newname = str_replace('_',' ',$name);
+
+ // do this bit over since we started over with $name
+
+ if(substr($newname,-1,1) === '+') {
+ $forum = true;
+ $newname = substr($newname,0,-1);
+ }
+
+ //select someone from this user's contacts by name
+ $r = q("SELECT * FROM abook left join xchan on abook_xchan = xchan_hash
+ WHERE xchan_name = '%s' AND abook_channel = %d LIMIT 1",
+ dbesc($newname),
+ intval($profile_uid)
+ );
+
+ if(! $r) {
+ //select someone by attag or nick and the name passed in
+ $r = q("SELECT * FROM abook left join xchan on abook_xchan = xchan_hash
+ WHERE xchan_addr like ('%s') AND abook_channel = %d LIMIT 1",
+ dbesc(((strpos($newname,'@')) ? $newname : $newname . '@%')),
+ intval($profile_uid)
+ );
+ }
+
+ if(! $r) {
+ // it's possible somebody has a name ending with '+', which we stripped off as a forum indicator
+ // This is very rare but we want to get it right.
+
+ $r = q("SELECT * FROM abook left join xchan on abook_xchan = xchan_hash
+ WHERE xchan_name = '%s' AND abook_channel = %d LIMIT 1",
+ dbesc($newname . '+'),
+ intval($profile_uid)
+ );
+ if($r)
+ $trailing_plus_name = true;
+ }
+ }
+
+ // $r is set if we found something
+
+ $channel = get_app()->get_channel();
+
+ if($r) {
+ $profile = $r[0]['xchan_url'];
+ $newname = $r[0]['xchan_name'];
+ // add the channel's xchan_hash to $access_tag if exclusive
+ if($exclusive) {
+ $access_tag .= 'cid:' . $r[0]['xchan_hash'];
+ }
+ }
+ else {
+ // check for a group/collection exclusion tag
+
+ // note that we aren't setting $replaced even though we're replacing text.
+ // This tag isn't going to get a term attached to it. It's only used for
+ // access control. The link points to out own channel just so it doesn't look
+ // weird - as all the other tags are linked to something.
+
+ if(local_user() && local_user() == $profile_uid) {
+ require_once('include/group.php');
+ $grp = group_byname($profile_uid,$name);
+
+ if($grp) {
+ $g = q("select hash from groups where id = %d and visible = 1 limit 1",
+ intval($grp)
+ );
+ if($g && $exclusive) {
+ $access_tag .= 'gid:' . $g[0]['hash'];
+ }
+ $channel = get_app()->get_channel();
+ if($channel) {
+ $newtag = '@' . (($exclusive) ? '!' : '') . '[zrl=' . z_root() . '/channel/' . $channel['channel_address'] . ']' . $newname . '[/zrl]';
+ $body = str_replace('@' . (($exclusive) ? '!' : '') . $name, $newtag, $body);
+ }
+ }
+ }
+ }
+
+ if(($exclusive) && (! $access_tag)) {
+ $access_tag .= 'cid:' . $channel['channel_hash'];
+ }
+
+ // if there is an url for this channel
+
+ if(isset($profile)) {
+ $replaced = true;
+ //create profile link
+ $profile = str_replace(',','%2c',$profile);
+ $url = $profile;
+ $newtag = '@' . (($exclusive) ? '!' : '') . '[zrl=' . $profile . ']' . $newname . (($forum && ! $trailing_plus_name) ? '+' : '') . '[/zrl]';
+ $body = str_replace('@' . (($exclusive) ? '!' : '') . $name, $newtag, $body);
+ //append tag to str_tags
+ if(! stristr($str_tags,$newtag)) {
+ if(strlen($str_tags))
+ $str_tags .= ',';
+ $str_tags .= $newtag;
+ }
+ }
+ }
+
+ return array('replaced' => $replaced, 'termtype' => $termtype, 'term' => $newname, 'url' => $url, 'contact' => $r[0]);
+}
diff --git a/include/widgets.php b/include/widgets.php
index 96bced87f..18778ed36 100644
--- a/include/widgets.php
+++ b/include/widgets.php
@@ -1,4 +1,9 @@
-<?php /** @file */
+<?php
+/**
+ * @file include/widgets.php
+ *
+ * @brief This file contains the widgets.
+ */
require_once('include/dir_fns.php');
require_once('include/contact_widgets.php');
@@ -6,7 +11,7 @@ require_once('include/contact_widgets.php');
function widget_profile($args) {
$a = get_app();
- $block = (((get_config('system','block_public')) && (! local_user()) && (! remote_user())) ? true : false);
+ $block = (((get_config('system', 'block_public')) && (! local_user()) && (! remote_user())) ? true : false);
return profile_sidebar($a->profile, $block, true);
}
@@ -16,14 +21,15 @@ function widget_profile($args) {
function widget_tagcloud($args) {
$o = '';
- $tab = 0;
+ //$tab = 0;
$a = get_app();
$uid = $a->profile_uid;
$count = ((x($args,'count')) ? intval($args['count']) : 24);
$flags = 0;
$type = TERM_CATEGORY;
- $r = tagadelic($uid,$count,$authors,$flags,ITEM_WEBPAGE,$type);
+ // FIXME there exists no $authors variable
+ $r = tagadelic($uid, $count, $authors, $flags, ITEM_WEBPAGE, $type);
if($r) {
$o = '<div class="tagblock widget"><h3>' . t('Categories') . '</h3><div class="tags" align="center">';
@@ -48,6 +54,13 @@ function widget_collections($args) {
$abook_id = 0;
$wmode = 0;
break;
+ case 'connections':
+ $every = 'connections';
+ $each = 'group';
+ $edit = true;
+ $current = $_REQUEST['gid'];
+ $abook_id = 0;
+ $wmode = 0;
case 'groups':
$every = 'connections';
$each = argv(0);
@@ -68,9 +81,8 @@ function widget_collections($args) {
return '';
break;
}
-
- return group_side($every, $each, $edit, $current, $abook_id, $wmode);
+ return group_side($every, $each, $edit, $current, $abook_id, $wmode);
}
@@ -86,7 +98,6 @@ function widget_appselect($arr) {
}
-
function widget_suggestions($arr) {
if((! local_user()) || (! feature_enabled(local_user(),'suggest')))
@@ -107,16 +118,13 @@ function widget_suggestions($arr) {
// This will throw some entropy intot he situation so you won't
// be looking at the same two mug shots every time the widget runs
-
$index = ((count($r) > 2) ? mt_rand(0,count($r) - 2) : 0);
-
for($x = $index; $x <= ($index+1); $x ++) {
-
$rr = $r[$x];
if(! $rr['xchan_url'])
break;
-
+
$connlnk = z_root() . '/follow/?url=' . $rr['xchan_addr'];
$arr[] = array(
@@ -131,7 +139,6 @@ function widget_suggestions($arr) {
);
}
-
$o = replace_macros(get_markup_template('suggest_widget.tpl'),array(
'$title' => t('Suggestions'),
'$more' => t('See more...'),
@@ -139,16 +146,16 @@ function widget_suggestions($arr) {
));
return $o;
-
}
function widget_follow($args) {
if(! local_user())
return '';
+
$a = get_app();
$uid =$a->channel['channel_id'];
- $r = q("select count(*) as total from abook where abook_channel = %d and not (abook_flags & %d) ",
+ $r = q("select count(*) as total from abook where abook_channel = %d and not (abook_flags & %d)>0 ",
intval($uid),
intval(ABOOK_FLAG_SELF)
);
@@ -156,10 +163,10 @@ function widget_follow($args) {
$total_channels = $r[0]['total'];
$limit = service_class_fetch($uid,'total_channels');
if($limit !== false) {
- $abook_usage_message = sprintf( t("You have %1$.0f of %2$.0f allowed connections."), $total_channels, $limit);
+ $abook_usage_message = sprintf( t("You have %1$.0f of %2$.0f allowed connections."), $total_channels, $limit);
}
else {
- $abook_usage_message = '';
+ $abook_usage_message = '';
}
return replace_macros(get_markup_template('follow.tpl'),array(
'$connect' => t('Add New Connection'),
@@ -168,7 +175,6 @@ function widget_follow($args) {
'$follow' => t('Connect'),
'$abook_usage_message' => $abook_usage_message
));
-
}
@@ -185,6 +191,7 @@ function widget_notes($arr) {
'$text' => $text,
'$save' => t('Save'),
));
+
return $o;
}
@@ -213,7 +220,7 @@ function widget_savedsearch($arr) {
}
if(x($_GET,'searchremove') && $search) {
- q("delete from `term` where `uid` = %d and `type` = %d and `term` = '%s' limit 1",
+ q("delete from `term` where `uid` = %d and `type` = %d and `term` = '%s'",
intval(local_user()),
intval(TERM_SAVEDSEARCH),
dbesc($search)
@@ -221,8 +228,6 @@ function widget_savedsearch($arr) {
$search = '';
}
-
-
$srchurl = $a->query_string;
$srchurl = rtrim(preg_replace('/searchsave\=[^\&].*?(\&|$)/is','',$srchurl),'&');
@@ -231,9 +236,13 @@ function widget_savedsearch($arr) {
$hasq = ((strpos($srchurl,'?') !== false) ? true : false);
$srchurl = rtrim(preg_replace('/search\=[^\&].*?(\&|$)/is','',$srchurl),'&');
+ $srchurl = rtrim(preg_replace('/submit\=[^\&].*?(\&|$)/is','',$srchurl),'&');
$srchurl = str_replace(array('?f=','&f='),array('',''),$srchurl);
+
+
$hasq = ((strpos($srchurl,'?') !== false) ? true : false);
-
+
+
$o = '';
$r = q("select `tid`,`term` from `term` WHERE `uid` = %d and `type` = %d ",
@@ -245,31 +254,28 @@ function widget_savedsearch($arr) {
if(count($r)) {
foreach($r as $rr) {
-
$saved[] = array(
'id' => $rr['tid'],
- 'term' => $rr['term'],
+ 'term' => $rr['term'],
'dellink' => z_root() . '/' . $srchurl . (($hasq) ? '' : '?f=') . '&amp;searchremove=1&amp;search=' . urlencode($rr['term']),
'srchlink' => z_root() . '/' . $srchurl . (($hasq) ? '' : '?f=') . '&amp;search=' . urlencode($rr['term']),
'displayterm' => htmlspecialchars($rr['term'], ENT_COMPAT,'UTF-8'),
- 'encodedterm' => urlencode($rr['term']),
- 'delete' => t('Remove term'),
- 'selected' => ($search==$rr['term']),
+ 'encodedterm' => urlencode($rr['term']),
+ 'delete' => t('Remove term'),
+ 'selected' => ($search==$rr['term']),
);
}
- }
+ }
-
$tpl = get_markup_template("saved_searches.tpl");
$o = replace_macros($tpl, array(
'$title' => t('Saved Searches'),
'$add' => t('add'),
- '$searchbox' => searchbox($search,'netsearch-box',$srchurl . (($hasq) ? '' : '?f='),true),
+ '$searchbox' => searchbox($search, 'netsearch-box', $srchurl . (($hasq) ? '' : '?f='), true),
'$saved' => $saved,
));
return $o;
-
}
@@ -299,7 +305,6 @@ function widget_filer($arr) {
'$all' => t('Everything'),
'$terms' => $terms,
'$base' => z_root() . '/' . $a->cmd
-
));
}
@@ -320,22 +325,32 @@ function widget_archive($arr) {
if(! perm_is_allowed($uid,get_observer_hash(),'view_stream'))
return '';
-
$wall = ((array_key_exists('wall', $arr)) ? intval($arr['wall']) : 0);
$style = ((array_key_exists('style', $arr)) ? $arr['style'] : 'select');
- $url = z_root() . '/' . $a->cmd;
+ $showend = ((get_pconfig($uid,'system','archive_show_end_date')) ? true : false);
+ $mindate = get_pconfig($uid,'system','archive_mindate');
+ $visible_years = get_pconfig($uid,'system','archive_visible_years');
+ if(! $visible_years)
+ $visible_years = 5;
+ $url = z_root() . '/' . $a->cmd;
- $ret = list_post_dates($uid,$wall);
+ $ret = list_post_dates($uid,$wall,$mindate);
if(! count($ret))
return '';
+ $cutoff_year = intval(datetime_convert('',date_default_timezone_get(),'now','Y')) - $visible_years;
+ $cutoff = ((array_key_exists($cutoff_year,$ret))? true : false);
+
$o = replace_macros(get_markup_template('posted_date_widget.tpl'),array(
'$title' => t('Archives'),
- '$size' => ((count($ret) > 6) ? 6 : count($ret)),
+ '$size' => $visible_years,
+ '$cutoff_year' => $cutoff_year,
+ '$cutoff' => $cutoff,
'$url' => $url,
'$style' => $style,
+ '$showend' => $showend,
'$dates' => $ret
));
return $o;
@@ -347,7 +362,7 @@ function widget_fullprofile($arr) {
if(! $a->profile['profile_uid'])
return;
- $block = (((get_config('system','block_public')) && (! local_user()) && (! remote_user())) ? true : false);
+ $block = (((get_config('system', 'block_public')) && (! local_user()) && (! remote_user())) ? true : false);
return profile_sidebar($a->profile, $block);
}
@@ -355,32 +370,45 @@ function widget_fullprofile($arr) {
function widget_categories($arr) {
$a = get_app();
-
if($a->profile['profile_uid'] && (! perm_is_allowed($a->profile['profile_uid'],get_observer_hash(),'view_stream')))
return '';
-
$cat = ((x($_REQUEST,'cat')) ? htmlspecialchars($_REQUEST['cat'],ENT_COMPAT,'UTF-8') : '');
$srchurl = $a->query_string;
$srchurl = rtrim(preg_replace('/cat\=[^\&].*?(\&|$)/is','',$srchurl),'&');
$srchurl = str_replace(array('?f=','&f='),array('',''),$srchurl);
- return categories_widget($srchurl,$cat);
+ return categories_widget($srchurl, $cat);
}
function widget_tagcloud_wall($arr) {
$a = get_app();
+
if((! $a->profile['profile_uid']) || (! $a->profile['channel_hash']))
return '';
- if(! perm_is_allowed($a->profile['profile_uid'],get_observer_hash(),'view_stream'))
+ if(! perm_is_allowed($a->profile['profile_uid'], get_observer_hash(), 'view_stream'))
return '';
- $limit = ((array_key_exists('limit',$arr)) ? intval($arr['limit']) : 50);
- if(feature_enabled($a->profile['profile_uid'],'tagadelic'))
- return tagblock('search',$a->profile['profile_uid'],$limit,$a->profile['channel_hash'],ITEM_WALL);
+ $limit = ((array_key_exists('limit', $arr)) ? intval($arr['limit']) : 50);
+ if(feature_enabled($a->profile['profile_uid'], 'tagadelic'))
+ return wtagblock($a->profile['profile_uid'], $limit, $a->profile['channel_hash'], ITEM_WALL);
+
return '';
}
+function widget_catcloud_wall($arr) {
+ $a = get_app();
+
+ if((! $a->profile['profile_uid']) || (! $a->profile['channel_hash']))
+ return '';
+ if(! perm_is_allowed($a->profile['profile_uid'], get_observer_hash(), 'view_stream'))
+ return '';
+
+ $limit = ((array_key_exists('limit',$arr)) ? intval($arr['limit']) : 50);
+
+ return catblock($a->profile['profile_uid'], $limit, $a->profile['channel_hash'], ITEM_WALL);
+}
+
function widget_affinity($arr) {
@@ -393,7 +421,7 @@ function widget_affinity($arr) {
if(feature_enabled(local_user(),'affinity')) {
$tpl = get_markup_template('main_slider.tpl');
$x = replace_macros($tpl,array(
- '$val' => $cmin . ';' . $cmax,
+ '$val' => $cmin . ',' . $cmax,
'$refresh' => t('Refresh'),
'$me' => t('Me'),
'$intimate' => t('Best Friends'),
@@ -407,6 +435,7 @@ function widget_affinity($arr) {
call_hooks('main_slider',$arr);
return $arr['html'];
}
+
return '';
}
@@ -423,27 +452,28 @@ function widget_settings_menu($arr) {
// Retrieve the 'self' address book entry for use in the auto-permissions link
- $abk = q("select abook_id from abook where abook_channel = %d and ( abook_flags & %d ) limit 1",
+ $role = get_pconfig(local_user(),'system','permissions_role');
+
+ $abk = q("select abook_id from abook where abook_channel = %d and ( abook_flags & %d )>0 limit 1",
intval(local_user()),
intval(ABOOK_FLAG_SELF)
);
if($abk)
$abook_self_id = $abk[0]['abook_id'];
-
$tabs = array(
array(
'label' => t('Account settings'),
'url' => $a->get_baseurl(true).'/settings/account',
'selected' => ((argv(1) === 'account') ? 'active' : ''),
),
-
+
array(
'label' => t('Channel settings'),
'url' => $a->get_baseurl(true).'/settings/channel',
'selected' => ((argv(1) === 'channel') ? 'active' : ''),
),
-
+
array(
'label' => t('Additional features'),
'url' => $a->get_baseurl(true).'/settings/features',
@@ -461,7 +491,7 @@ function widget_settings_menu($arr) {
'url' => $a->get_baseurl(true).'/settings/display',
'selected' => ((argv(1) === 'display') ? 'active' : ''),
),
-
+
array(
'label' => t('Connected apps'),
'url' => $a->get_baseurl(true) . '/settings/oauth',
@@ -470,24 +500,19 @@ function widget_settings_menu($arr) {
array(
'label' => t('Export channel'),
- 'url' => $a->get_baseurl(true) . '/uexport/basic',
+ 'url' => $a->get_baseurl(true) . '/uexport',
'selected' => ''
),
-// array(
-// 'label' => t('Export account'),
-// 'url' => $a->get_baseurl(true) . '/uexport/complete',
-// 'selected' => ''
-// ),
+ );
- array(
- 'label' => t('Automatic Permissions (Advanced)'),
+ if($role === false || $role === 'custom') {
+ $tabs[] = array(
+ 'label' => t('Connection Default Permissions'),
'url' => $a->get_baseurl(true) . '/connedit/' . $abook_self_id,
'selected' => ''
- ),
-
-
- );
+ );
+ }
if(feature_enabled(local_user(),'premium_channel')) {
$tabs[] = array(
@@ -495,7 +520,6 @@ function widget_settings_menu($arr) {
'url' => $a->get_baseurl(true) . '/connect/' . $channel['channel_address'],
'selected' => ''
);
-
}
if(feature_enabled(local_user(),'channel_sources')) {
@@ -504,18 +528,14 @@ function widget_settings_menu($arr) {
'url' => $a->get_baseurl(true) . '/sources',
'selected' => ''
);
-
}
-
-
$tabtpl = get_markup_template("generic_links_widget.tpl");
return replace_macros($tabtpl, array(
'$title' => t('Settings'),
'$class' => 'settings-widget',
'$items' => $tabs,
));
-
}
@@ -525,8 +545,8 @@ function widget_mailmenu($arr) {
$a = get_app();
return replace_macros(get_markup_template('message_side.tpl'), array(
+ '$title' => t('Messages'),
'$tabs'=> array(),
-
'$check'=>array(
'label' => t('Check Mail'),
'url' => $a->get_baseurl(true) . '/message',
@@ -537,9 +557,7 @@ function widget_mailmenu($arr) {
'url' => $a->get_baseurl(true) . '/mail/new',
'sel'=> (argv(1) == 'new'),
)
-
));
-
}
function widget_design_tools($arr) {
@@ -549,8 +567,8 @@ function widget_design_tools($arr) {
// otherwise local_user() is sufficient for permissions.
if($a->profile['profile_uid'])
- if($a->profile['profile_uid'] != local_user())
- return '';
+ if(($a->profile['profile_uid'] != local_user()) && (! $a->is_sys))
+ return '';
if(! local_user())
return '';
@@ -565,23 +583,25 @@ function widget_findpeople($arr) {
function widget_photo_albums($arr) {
$a = get_app();
+
if(! $a->profile['profile_uid'])
return '';
$channelx = channelx_by_n($a->profile['profile_uid']);
- if((! $channelx) || (! perm_is_allowed($a->profile['profile_uid'],get_observer_hash(),'view_photos')))
+ if((! $channelx) || (! perm_is_allowed($a->profile['profile_uid'], get_observer_hash(), 'view_photos')))
return '';
- return photos_album_widget($channelx,$a->get_observer());
+ require_once('include/photos.php');
+ return photos_album_widget($channelx, $a->get_observer());
}
function widget_vcard($arr) {
require_once ('include/Contact.php');
- return vcard_from_xchan('',get_app()->get_observer());
+ return vcard_from_xchan('', get_app()->get_observer());
}
-/**
+/*
* The following directory widgets are only useful on the directory page
*/
@@ -594,21 +614,23 @@ function widget_dirsort($arr) {
}
function widget_dirtags($arr) {
- return dir_tagblock(z_root() . '/directory',null);
+ return dir_tagblock(z_root() . '/directory', null);
}
function widget_menu_preview($arr) {
if(! get_app()->data['menu_item'])
return;
require_once('include/menu.php');
+
return menu_render(get_app()->data['menu_item']);
}
function widget_chatroom_list($arr) {
$a = get_app();
+
require_once("include/chat.php");
$r = chatroom_list($a->profile['profile_uid']);
- return replace_macros(get_markup_template('chatroomlist.tpl'),array(
+ return replace_macros(get_markup_template('chatroomlist.tpl'), array(
'$header' => t('Chat Rooms'),
'$baseurl' => z_root(),
'$nickname' => $a->profile['channel_address'],
@@ -621,11 +643,13 @@ function widget_bookmarkedchats($arr) {
if(! $h)
return;
$r = q("select * from xchat where xchat_xchan = '%s' group by xchat_url order by xchat_desc",
- dbesc($h)
+ dbesc($h)
);
-
- for($x = 0; $x < count($r); $x ++)
- $r[$x]['xchat_url'] = zid($r[$x]['xchat_url']);
+ if($r) {
+ for($x = 0; $x < count($r); $x ++) {
+ $r[$x]['xchat_url'] = zid($r[$x]['xchat_url']);
+ }
+ }
return replace_macros(get_markup_template('bookmarkedchats.tpl'),array(
'$header' => t('Bookmarked Chatrooms'),
'$rooms' => $r
@@ -641,9 +665,11 @@ function widget_suggestedchats($arr) {
if(! $h)
return;
$r = q("select *, count(xchat_url) as total from xchat group by xchat_url order by total desc, xchat_desc limit 24");
-
- for($x = 0; $x < count($r); $x ++)
- $r[$x]['xchat_url'] = zid($r[$x]['xchat_url']);
+ if($r) {
+ for($x = 0; $x < count($r); $x ++) {
+ $r[$x]['xchat_url'] = zid($r[$x]['xchat_url']);
+ }
+ }
return replace_macros(get_markup_template('bookmarkedchats.tpl'),array(
'$header' => t('Suggested Chatrooms'),
'$rooms' => $r
@@ -651,17 +677,17 @@ function widget_suggestedchats($arr) {
}
function widget_item($arr) {
+ // FIXME there is no $a here
$uid = $a->profile['profile_uid'];
if((! $uid) || (! $arr['mid']))
return '';
- if(! perm_is_allowed($uid,get_observer_hash(),'view_pages'))
+ if(! perm_is_allowed($uid, get_observer_hash(), 'view_pages'))
return '';
require_once('include/security.php');
$sql_extra = item_permissions_sql($uid);
-
$r = q("select * from item where mid = '%s' and uid = %d and item_restrict = " . intval(ITEM_WEBPAGE) . " $sql_extra limit 1",
dbesc($arr['mid']),
intval($uid)
@@ -671,11 +697,10 @@ function widget_item($arr) {
return '';
xchan_query($r);
- $r = fetch_post_tags($r,true);
+ $r = fetch_post_tags($r, true);
- $o .= prepare_page($r[0]);
+ $o = prepare_page($r[0]);
return $o;
-
}
function widget_clock($arr) {
@@ -745,18 +770,17 @@ return $o;
* URL must be an http or https URL
*/
-
function widget_photo($arr) {
$style = $zrl = false;
- $params = '';
- if(array_key_exists('src',$arr) && isset($arr['src']))
+
+ if(array_key_exists('src', $arr) && isset($arr['src']))
$url = $arr['src'];
if(strpos($url,'http') !== 0)
return '';
- if(array_key_exists('style',$arr) && isset($arr['style']))
+ if(array_key_exists('style', $arr) && isset($arr['style']))
$style = $arr['style'];
// ensure they can't sneak in an eval(js) function
@@ -764,7 +788,7 @@ function widget_photo($arr) {
if(strpos($style,'(') !== false)
return '';
- if(array_key_exists('zrl',$arr) && isset($arr['zrl']))
+ if(array_key_exists('zrl', $arr) && isset($arr['zrl']))
$zrl = (($arr['zrl']) ? true : false);
if($zrl)
@@ -774,9 +798,108 @@ function widget_photo($arr) {
$o .= '<img ' . (($zrl) ? ' class="zrl" ' : '')
. (($style) ? ' style="' . $style . '"' : '')
- . ' src="' . $url . '" />';
+ . ' src="' . $url . '" alt="' . t('photo/image') . '">';
+
+ $o .= '</div>';
+
+ return $o;
+}
+
+
+function widget_photo_rand($arr) {
+
+ require_once('include/photos.php');
+ $style = false;
+
+ if(array_key_exists('album', $arr) && isset($arr['album']))
+ $album = $arr['album'];
+ else
+ $album = '';
+
+ $channel_id = 0;
+ if(array_key_exists('channel_id', $arr) && intval($arr['channel_id']))
+ $channel_id = intval($arr['channel_id']);
+ if(! $channel_id)
+ $channel_id = get_app()->profile_uid;
+ if(! $channel_id)
+ return '';
+
+ $scale = ((array_key_exists('scale',$arr)) ? intval($arr['scale']) : 0);
+
+ $ret = photos_list_photos(array('channel_id' => $channel_id),get_app()->get_observer(),$album);
+
+ $filtered = array();
+ if($ret['success'] && $ret['photos'])
+ foreach($ret['photos'] as $p)
+ if($p['scale'] == $scale)
+ $filtered[] = $p['src'];
+
+ if($filtered) {
+ $e = mt_rand(0, count($filtered) - 1);
+ $url = $filtered[$e];
+ }
+
+ if(strpos($url, 'http') !== 0)
+ return '';
+
+ if(array_key_exists('style', $arr) && isset($arr['style']))
+ $style = $arr['style'];
+
+ // ensure they can't sneak in an eval(js) function
+
+ if(strpos($style,'(') !== false)
+ return '';
+
+ $url = zid($url);
+
+ $o = '<div class="widget">';
+
+ $o .= '<img class="zrl" '
+ . (($style) ? ' style="' . $style . '"' : '')
+ . ' src="' . $url . '" alt="' . t('photo/image') . '">';
$o .= '</div>';
return $o;
}
+
+
+function widget_random_block($arr) {
+
+ $channel_id = 0;
+ if(array_key_exists('channel_id',$arr) && intval($arr['channel_id']))
+ $channel_id = intval($arr['channel_id']);
+ if(! $channel_id)
+ $channel_id = get_app()->profile_uid;
+ if(! $channel_id)
+ return '';
+
+ if(array_key_exists('contains',$arr))
+ $contains = $arr['contains'];
+
+ $o = '';
+
+ require_once('include/security.php');
+ $sql_options = item_permissions_sql($channel_id);
+
+ $randfunc = db_getfunc('RAND');
+
+ $r = q("select item.* from item left join item_id on item.id = item_id.iid
+ where item.uid = %d and sid like '%s' and service = 'BUILDBLOCK' and
+ item_restrict = %d $sql_options order by $randfunc limit 1",
+ intval($channel_id),
+ dbesc('%' . $contains . '%'),
+ intval(ITEM_BUILDBLOCK)
+ );
+
+ if($r) {
+ $o = '<div class="widget bblock">';
+ if($r[0]['title'])
+ $o .= '<h3>' . $r[0]['title'] . '</h3>';
+
+ $o .= prepare_text($r[0]['body'],$r[0]['mimetype']);
+ $o .= '</div>';
+ }
+
+ return $o;
+}
diff --git a/include/zot.php b/include/zot.php
index 0fbeed519..c88b2a369 100644
--- a/include/zot.php
+++ b/include/zot.php
@@ -2,9 +2,10 @@
require_once('include/crypto.php');
require_once('include/items.php');
+require_once('include/hubloc.php');
/**
- * Red implementation of zot protocol.
+ * Red implementation of zot protocol.
*
* https://github.com/friendica/red/wiki/zot
* https://github.com/friendica/red/wiki/Zot---A-High-Level-Overview
@@ -19,8 +20,8 @@ require_once('include/items.php');
* Generates a unique string for use as a zot guid using our DNS-based url, the channel nickname and some entropy.
* The entropy ensures uniqueness against re-installs where the same URL and nickname are chosen.
* NOTE: zot doesn't require this to be unique. Internally we use a whirlpool hash of this guid and the signature
- * of this guid signed with the channel private key. This can be verified and should make the probability of
- * collision of the verified result negligible within the constraints of our immediate universe.
+ * of this guid signed with the channel private key. This can be verified and should make the probability of
+ * collision of the verified result negligible within the constraints of our immediate universe.
*
* @param string channel_nickname = unique nickname of controlling entity
*
@@ -50,7 +51,7 @@ function make_xchan_hash($guid,$guid_sig) {
/**
* @function zot_get_hublocs($hash)
- * Given a zot hash, return all distinct hubs.
+ * Given a zot hash, return all distinct hubs.
* This function is used in building the zot discovery packet
* and therefore should only be used by channels which are defined
* on this hub
@@ -70,7 +71,7 @@ function make_xchan_hash($guid,$guid_sig) {
* hubloc_connect char(255)
* hubloc_sitekey text
* hubloc_updated datetime
- * hubloc_connected datetime
+ * hubloc_connected datetime
*
*/
@@ -78,32 +79,32 @@ function zot_get_hublocs($hash) {
/** Only search for active hublocs - e.g. those that haven't been marked deleted */
- $ret = q("select * from hubloc where hubloc_hash = '%s' and not ( hubloc_flags & %d ) group by hubloc_url ",
+ $ret = q("select * from hubloc where hubloc_hash = '%s' and not ( hubloc_flags & %d )>0 order by hubloc_url ",
dbesc($hash),
intval(HUBLOC_FLAGS_DELETED)
);
return $ret;
}
-
+
/**
*
* @function zot_build_packet($channel,$type = 'notify',$recipients = null, $remote_key = null, $secret = null)
* builds a zot notification packet that you can either
- * store in the queue with a message array or call zot_zot to immediately
+ * store in the queue with a message array or call zot_zot to immediately
* zot it to the other side
*
* @param array $channel => sender channel structure
* @param string $type => packet type: one of 'ping', 'pickup', 'purge', 'refresh', 'force_refresh', 'notify', 'auth_check'
* @param array $recipients => envelope information, array ( 'guid' => string, 'guid_sig' => string ); empty for public posts
* @param string $remote_key => optional public site key of target hub used to encrypt entire packet
- * NOTE: remote_key and encrypted packets are required for 'auth_check' packets, optional for all others
+ * NOTE: remote_key and encrypted packets are required for 'auth_check' packets, optional for all others
* @param string $secret => random string, required for packets which require verification/callback
- * e.g. 'pickup', 'purge', 'notify', 'auth_check'. Packet types 'ping', 'force_refresh', and 'refresh' do not require verification
+ * e.g. 'pickup', 'purge', 'notify', 'auth_check'. Packet types 'ping', 'force_refresh', and 'refresh' do not require verification
*
* @returns string json encoded zot packet
*/
-function zot_build_packet($channel,$type = 'notify',$recipients = null, $remote_key = null, $secret = null) {
+function zot_build_packet($channel,$type = 'notify',$recipients = null, $remote_key = null, $secret = null, $extra = null) {
$data = array(
'type' => $type,
@@ -117,14 +118,23 @@ function zot_build_packet($channel,$type = 'notify',$recipients = null, $remote_
'version' => ZOT_REVISION
);
- if($recipients)
+ if($recipients) {
+ for($x = 0; $x < count($recipients); $x ++)
+ unset($recipients[$x]['hash']);
$data['recipients'] = $recipients;
+ }
if($secret) {
$data['secret'] = $secret;
$data['secret_sig'] = base64url_encode(rsa_sign($secret,$channel['channel_prvkey']));
}
+ if($extra) {
+ foreach($extra as $k => $v)
+ $data[$k] = $v;
+ }
+
+
logger('zot_build_packet: ' . print_r($data,true), LOGGER_DATA);
// Hush-hush ultra top-secret mode
@@ -184,25 +194,33 @@ function zot_finger($webbie,$channel,$autofallback = true) {
logger('zot_finger: no address :' . $webbie);
return array('success' => false);
}
-
+ logger('using xchan_addr: ' . $xchan_addr, LOGGER_DATA);
+
// potential issue here; the xchan_addr points to the primary hub.
// The webbie we were called with may not, so it might not be found
// unless we query for hubloc_addr instead of xchan_addr
$r = q("select xchan.*, hubloc.* from xchan
left join hubloc on xchan_hash = hubloc_hash
- where xchan_addr = '%s' and (hubloc_flags & %d) limit 1",
+ where xchan_addr = '%s' and (hubloc_flags & %d) > 0 limit 1",
dbesc($xchan_addr),
intval(HUBLOC_FLAGS_PRIMARY)
);
if($r) {
$url = $r[0]['hubloc_url'];
+
+ if($r[0]['hubloc_network'] && $r[0]['hubloc_network'] !== 'zot') {
+ logger('zot_finger: alternate network: ' . $webbie);
+ logger('url: '.$url.', net: '.var_export($r[0]['hubloc_network'],true), LOGGER_DATA);
+ return array('success' => false);
+ }
}
else {
$url = 'https://' . $host;
}
-
+
+
$rhs = '/.well-known/zot-info';
$https = ((strpos($url,'https://') === 0) ? true : false);
@@ -271,6 +289,11 @@ function zot_finger($webbie,$channel,$autofallback = true) {
function zot_refresh($them,$channel = null, $force = false) {
+ if(array_key_exists('xchan_network',$them) && ($them['xchan_network'] !== 'zot')) {
+ logger('zot_refresh: not got zot. ' . $them['xchan_name']);
+ return true;
+ }
+
logger('zot_refresh: them: ' . print_r($them,true), LOGGER_DATA);
if($channel)
logger('zot_refresh: channel: ' . print_r($channel,true), LOGGER_DATA);
@@ -278,7 +301,7 @@ function zot_refresh($them,$channel = null, $force = false) {
if($them['hubloc_url'])
$url = $them['hubloc_url'];
else {
- $r = q("select hubloc_url from hubloc where hubloc_hash = '%s' and ( hubloc_flags & %d ) limit 1",
+ $r = q("select hubloc_url from hubloc where hubloc_hash = '%s' and ( hubloc_flags & %d ) > 0 limit 1",
dbesc($them['xchan_hash']),
intval(HUBLOC_FLAGS_PRIMARY)
);
@@ -360,7 +383,7 @@ function zot_refresh($them,$channel = null, $force = false) {
}
}
- $r = q("select * from abook where abook_xchan = '%s' and abook_channel = %d and not (abook_flags & %d) limit 1",
+ $r = q("select * from abook where abook_xchan = '%s' and abook_channel = %d and not (abook_flags & %d) > 0 limit 1",
dbesc($x['hash']),
intval($channel['channel_id']),
intval(ABOOK_FLAG_SELF)
@@ -370,7 +393,7 @@ function zot_refresh($them,$channel = null, $force = false) {
$next_birthday = datetime_convert('UTC','UTC',$j['profile']['next_birthday']);
}
else {
- $next_birthday = '0000-00-00 00:00:00';
+ $next_birthday = NULL_DATE;
}
if($r) {
@@ -386,7 +409,7 @@ function zot_refresh($them,$channel = null, $force = false) {
$y = q("update abook set abook_their_perms = %d, abook_dob = '%s'
where abook_xchan = '%s' and abook_channel = %d
- and not (abook_flags & %d) limit 1",
+ and not (abook_flags & %d) > 0 ",
intval($their_perms),
dbesc($next_birthday),
dbesc($x['hash']),
@@ -398,7 +421,8 @@ function zot_refresh($them,$channel = null, $force = false) {
// if they are in your address book but you aren't in theirs, and/or this does not
// match your current connected state setting, toggle it.
-
+ // FIXME: uncoverted to postgres
+ // FIXME: when this was enabled, all contacts became unconnected. Currently disabled intentionally
// $y1 = q("update abook set abook_flags = (abook_flags ^ %d)
// where abook_xchan = '%s' and abook_channel = %d
// and not (abook_flags & %d) limit 1",
@@ -418,15 +442,15 @@ function zot_refresh($them,$channel = null, $force = false) {
}
}
else {
- $default_perms = 0;
- // look for default permissions to apply in return - e.g. auto-friend
- $z = q("select * from abook where abook_channel = %d and (abook_flags & %d) limit 1",
- intval($channel['channel_id']),
- intval(ABOOK_FLAG_SELF)
- );
-
- if($z)
- $default_perms = intval($z[0]['abook_my_perms']);
+ $role = get_pconfig($channel['channel_id'],'system','permissions_role');
+ if($role) {
+ $xx = get_role_perms($role);
+ if($xx['perms_auto'])
+ $default_perms = $xx['perms_accept'];
+ }
+ if(! $default_perms)
+ $default_perms = intval(get_pconfig($channel['channel_id'],'system','autoperms'));
+
// Keep original perms to check if we need to notify them
$previous_perms = get_all_perms($channel['channel_id'],$x['hash']);
@@ -448,7 +472,7 @@ function zot_refresh($them,$channel = null, $force = false) {
$new_perms = get_all_perms($channel['channel_id'],$x['hash']);
if($new_perms != $previous_perms) {
// Send back a permissions update if permissions have changed
- $z = q("select * from abook where abook_xchan = '%s' and abook_channel = %d and not (abook_flags & %d) limit 1",
+ $z = q("select * from abook where abook_xchan = '%s' and abook_channel = %d and not (abook_flags & %d) > 0 limit 1",
dbesc($x['hash']),
intval($channel['channel_id']),
intval(ABOOK_FLAG_SELF)
@@ -507,6 +531,22 @@ function zot_refresh($them,$channel = null, $force = false) {
function zot_gethub($arr) {
if($arr['guid'] && $arr['guid_sig'] && $arr['url'] && $arr['url_sig']) {
+
+ $blacklisted = false;
+ $bl1 = get_config('system','blacklisted_sites');
+ if(is_array($bl1) && $bl1) {
+ foreach($bl1 as $bl) {
+ if($bl && strpos($arr['url'],$bl) !== false) {
+ $blacklisted = true;
+ break;
+ }
+ }
+ }
+ if($blacklisted) {
+ logger('zot_gethub: blacklisted site: ' . $arr['url']);
+ return null;
+ }
+
$r = q("select * from hubloc
where hubloc_guid = '%s' and hubloc_guid_sig = '%s'
and hubloc_url = '%s' and hubloc_url_sig = '%s'
@@ -625,8 +665,14 @@ function import_xchan($arr,$ud_flags = UPDATE_FLAGS_UPDATED, $ud_arr = null) {
return $ret;
}
+ if(! ($arr['guid'] && $arr['guid_sig'])) {
+ logger('import_xchan: no identity information provided. ' . print_r($arr,true));
+ return $ret;
+ }
$xchan_hash = make_xchan_hash($arr['guid'],$arr['guid_sig']);
+ $arr['hash'] = $xchan_hash;
+
$import_photos = false;
if(! rsa_verify($arr['guid'],base64url_decode($arr['guid_sig']),$arr['key'])) {
@@ -656,10 +702,10 @@ function import_xchan($arr,$ud_flags = UPDATE_FLAGS_UPDATED, $ud_arr = null) {
$dirmode = get_config('system','directory_mode');
- if((($arr['site']['directory_mode'] === 'standalone') || ($dirmode & DIRECTORY_MODE_STANDALONE))
-&& ($arr['site']['url'] != z_root()))
+ if((($arr['site']['directory_mode'] === 'standalone') || ($dirmode & DIRECTORY_MODE_STANDALONE)) && ($arr['site']['url'] != z_root()))
$arr['searchable'] = false;
+
$hidden = (1 - intval($arr['searchable']));
// Be careful - XCHAN_FLAGS_HIDDEN should evaluate to 1
@@ -678,6 +724,11 @@ function import_xchan($arr,$ud_flags = UPDATE_FLAGS_UPDATED, $ud_arr = null) {
if($deleted_changed)
$new_flags = $new_flags ^ XCHAN_FLAGS_DELETED;
+ $public_forum = (($r[0]['xchan_flags'] & XCHAN_FLAGS_PUBFORUM) ? true : false);
+ $pubforum_changed = ((intval($public_forum) != intval($arr['public_forum'])) ? true : false);
+ if($pubforum_changed)
+ $new_flags = $r[0]['xchan_flags'] ^ XCHAN_FLAGS_PUBFORUM;
+
if(($r[0]['xchan_name_date'] != $arr['name_updated'])
|| ($r[0]['xchan_connurl'] != $arr['connections_url'])
|| ($r[0]['xchan_flags'] != $new_flags)
@@ -687,8 +738,8 @@ function import_xchan($arr,$ud_flags = UPDATE_FLAGS_UPDATED, $ud_arr = null) {
|| ($r[0]['xchan_url'] != $arr['url'])) {
$r = q("update xchan set xchan_name = '%s', xchan_name_date = '%s', xchan_connurl = '%s', xchan_follow = '%s',
xchan_connpage = '%s', xchan_flags = %d,
- xchan_addr = '%s', xchan_url = '%s' where xchan_hash = '%s' limit 1",
- dbesc($arr['name']),
+ xchan_addr = '%s', xchan_url = '%s' where xchan_hash = '%s'",
+ dbesc(($arr['name']) ? $arr['name'] : '-'),
dbesc($arr['name_updated']),
dbesc($arr['connections_url']),
dbesc($arr['follow_url']),
@@ -738,10 +789,10 @@ function import_xchan($arr,$ud_flags = UPDATE_FLAGS_UPDATED, $ud_arr = null) {
dbesc($arr['connections_url']),
dbesc($arr['follow_url']),
dbesc($arr['connect_url']),
- dbesc($arr['name']),
+ dbesc(($arr['name']) ? $arr['name'] : '-'),
dbesc('zot'),
- dbesc($arr['photo_updated']),
- dbesc($arr['name_updated']),
+ dbescdate($arr['photo_updated']),
+ dbescdate($arr['name_updated']),
intval($new_flags)
);
@@ -782,7 +833,7 @@ function import_xchan($arr,$ud_flags = UPDATE_FLAGS_UPDATED, $ud_arr = null) {
// importing the photo failed somehow. Leave the photo_date alone so we can try again at a later date.
// This often happens when somebody joins the matrix with a bad cert.
$r = q("update xchan set xchan_photo_l = '%s', xchan_photo_m = '%s', xchan_photo_s = '%s', xchan_photo_mimetype = '%s'
- where xchan_hash = '%s' limit 1",
+ where xchan_hash = '%s'",
dbesc($photos[0]),
dbesc($photos[1]),
dbesc($photos[2]),
@@ -792,8 +843,8 @@ function import_xchan($arr,$ud_flags = UPDATE_FLAGS_UPDATED, $ud_arr = null) {
}
else {
$r = q("update xchan set xchan_photo_date = '%s', xchan_photo_l = '%s', xchan_photo_m = '%s', xchan_photo_s = '%s', xchan_photo_mimetype = '%s'
- where xchan_hash = '%s' limit 1",
- dbesc(datetime_convert('UTC','UTC',$arr['photo_updated'])),
+ where xchan_hash = '%s'",
+ dbescdate(datetime_convert('UTC','UTC',$arr['photo_updated'])),
dbesc($photos[0]),
dbesc($photos[1]),
dbesc($photos[2]),
@@ -809,173 +860,16 @@ function import_xchan($arr,$ud_flags = UPDATE_FLAGS_UPDATED, $ud_arr = null) {
// what we are missing for true hub independence is for any changes in the primary hub to
// get reflected not only in the hublocs, but also to update the URLs and addr in the appropriate xchan
- if($arr['locations']) {
-
- $xisting = q("select hubloc_id, hubloc_url, hubloc_sitekey from hubloc where hubloc_hash = '%s'",
- dbesc($xchan_hash)
- );
-
- // See if a primary is specified
-
- $has_primary = false;
- foreach($arr['locations'] as $location) {
- if($location['primary']) {
- $has_primary = true;
- break;
- }
- }
-
- foreach($arr['locations'] as $location) {
- if(! rsa_verify($location['url'],base64url_decode($location['url_sig']),$arr['key'])) {
- logger('import_xchan: Unable to verify site signature for ' . $location['url']);
- $ret['message'] .= sprintf( t('Unable to verify site signature for %s'), $location['url']) . EOL;
- continue;
- }
-
- // Ensure that they have one primary hub
-
- if(! $has_primary)
- $location['primary'] = true;
-
-
- for($x = 0; $x < count($xisting); $x ++) {
- if(($xisting[$x]['hubloc_url'] === $location['url']) && ($xisting[$x]['hubloc_sitekey'] === $location['sitekey'])) {
- $xisting[$x]['updated'] = true;
- }
- }
-
- if(! $location['sitekey']) {
- logger('import_xchan: empty hubloc sitekey. ' . print_r($location,true));
- continue;
- }
-
- // Catch some malformed entries from the past which still exist
-
- if(strpos($location['address'],'/') !== false)
- $location['address'] = substr($location['address'],0,strpos($location['address'],'/'));
-
- // match as many fields as possible in case anything at all changed.
-
- $r = q("select * from hubloc where hubloc_hash = '%s' and hubloc_guid = '%s' and hubloc_guid_sig = '%s' and hubloc_url = '%s' and hubloc_url_sig = '%s' and hubloc_host = '%s' and hubloc_addr = '%s' and hubloc_callback = '%s' and hubloc_sitekey = '%s' ",
- dbesc($xchan_hash),
- dbesc($arr['guid']),
- dbesc($arr['guid_sig']),
- dbesc($location['url']),
- dbesc($location['url_sig']),
- dbesc($location['host']),
- dbesc($location['address']),
- dbesc($location['callback']),
- dbesc($location['sitekey'])
- );
- if($r) {
- logger('import_xchan: hub exists: ' . $location['url']);
- // update connection timestamp if this is the site we're talking to
- if($location['url'] == $arr['site']['url']) {
- q("update hubloc set hubloc_connected = '%s', hubloc_updated = '%s' where hubloc_id = %d limit 1",
- dbesc(datetime_convert()),
- dbesc(datetime_convert()),
- intval($r[0]['hubloc_id'])
- );
- }
- if($r[0]['hubloc_status'] & HUBLOC_OFFLINE) {
- q("update hubloc set hubloc_status = (hubloc_status ^ %d) where hubloc_id = %d limit 1",
- intval(HUBLOC_OFFLINE),
- intval($r[0]['hubloc_id'])
- );
- if($r[0]['hubloc_flags'] & HUBLOC_FLAGS_ORPHANCHECK) {
- q("update hubloc set hubloc_flags = (hubloc_flags ^ %d) where hubloc_id = %d limit 1",
- intval(HUBLOC_FLAGS_ORPHANCHECK),
- intval($r[0]['hubloc_id'])
- );
- }
- q("update xchan set xchan_flags = (xchan_flags ^ %d) where (xchan_flags & %d) and xchan_hash = '%s' limit 1",
- intval(XCHAN_FLAGS_ORPHAN),
- intval(XCHAN_FLAGS_ORPHAN),
- dbesc($xchan_hash)
- );
-
- }
-
- // Remove pure duplicates
- if(count($r) > 1) {
- for($h = 1; $h < count($r); $h ++) {
- q("delete from hubloc where hubloc_id = %d limit 1",
- intval($r[$h]['hubloc_id'])
- );
- }
- }
-
- if((($r[0]['hubloc_flags'] & HUBLOC_FLAGS_PRIMARY) && (! $location['primary']))
- || ((! ($r[0]['hubloc_flags'] & HUBLOC_FLAGS_PRIMARY)) && ($location['primary']))) {
- $r = q("update hubloc set hubloc_flags = (hubloc_flags ^ %d), hubloc_updated = '%s' where hubloc_id = %d limit 1",
- intval(HUBLOC_FLAGS_PRIMARY),
- dbesc(datetime_convert()),
- intval($r[0]['hubloc_id'])
- );
- $what = 'primary_hub ';
- $changed = true;
- }
- if((($r[0]['hubloc_flags'] & HUBLOC_FLAGS_DELETED) && (! $location['deleted']))
- || ((! ($r[0]['hubloc_flags'] & HUBLOC_FLAGS_DELETED)) && ($location['deleted']))) {
- $r = q("update hubloc set hubloc_flags = (hubloc_flags ^ %d), hubloc_updated = '%s' where hubloc_id = %d limit 1",
- intval(HUBLOC_FLAGS_DELETED),
- dbesc(datetime_convert()),
- intval($r[0]['hubloc_id'])
- );
- $what = 'delete_hub ';
- $changed = true;
- }
- continue;
- }
-
- // new hub claiming to be primary. Make it so.
-
- if(intval($location['primary'])) {
- $r = q("update hubloc set hubloc_flags = (hubloc_flags ^ %d), hubloc_updated = '%s' where hubloc_hash = '%s' and (hubloc_flags & %d )",
- intval(HUBLOC_FLAGS_PRIMARY),
- dbesc(datetime_convert()),
- dbesc($xchan_hash),
- intval(HUBLOC_FLAGS_PRIMARY)
- );
- }
- logger('import_xchan: new hub: ' . $location['url']);
- $r = q("insert into hubloc ( hubloc_guid, hubloc_guid_sig, hubloc_hash, hubloc_addr, hubloc_flags, hubloc_url, hubloc_url_sig, hubloc_host, hubloc_callback, hubloc_sitekey, hubloc_updated, hubloc_connected)
- values ( '%s','%s','%s','%s', %d ,'%s','%s','%s','%s','%s','%s','%s')",
- dbesc($arr['guid']),
- dbesc($arr['guid_sig']),
- dbesc($xchan_hash),
- dbesc($location['address']),
- intval((intval($location['primary'])) ? HUBLOC_FLAGS_PRIMARY : 0),
- dbesc($location['url']),
- dbesc($location['url_sig']),
- dbesc($location['host']),
- dbesc($location['callback']),
- dbesc($location['sitekey']),
- dbesc(datetime_convert()),
- dbesc(datetime_convert())
- );
- $what .= 'newhub ';
- $changed = true;
-
- }
- // get rid of any hubs we have for this channel which weren't reported.
- // This was needed at one time to resolve complicated cross-site inconsistencies, but can cause sync conflict.
- // currently disabled.
-
-// if($xisting) {
-// foreach($xisting as $x) {
-// if(! array_key_exists('updated',$x)) {
-// logger('import_xchan: removing unreferenced hub location ' . $x['hubloc_url']);
-// $r = q("delete from hubloc where hubloc_id = %d limit 1",
-// intval($x['hubloc_id'])
-// );
-// $what .= 'removed_hub';
-// $changed = true;
-// }
-// }
-// }
+ $s = sync_locations($arr,$arr);
+ if($s) {
+ if($s['change_message'])
+ $what .= $s['change_message'];
+ if($s['changed'])
+ $changed = $s['changed'];
+ if($s['message'])
+ $ret['message'] .= $s['message'];
}
// Which entries in the update table are we interested in updating?
@@ -985,8 +879,22 @@ function import_xchan($arr,$ud_flags = UPDATE_FLAGS_UPDATED, $ud_arr = null) {
// Are we a directory server of some kind?
+ $other_realm = false;
+ $realm = get_directory_realm();
+ if(array_key_exists('site',$arr)
+ && array_key_exists('realm',$arr['site'])
+ && (strpos($arr['site']['realm'],$realm) === false))
+ $other_realm = true;
+
if($dirmode != DIRECTORY_MODE_NORMAL) {
- if(array_key_exists('profile',$arr) && is_array($arr['profile'])) {
+
+ // We're some kind of directory server. However we can only add directory information
+ // if the entry is in the same realm (or is a sub-realm). Sub-realms are denoted by
+ // including the parent realm in the name. e.g. 'RED_GLOBAL:foo' would allow an entry to
+ // be in directories for the local realm (foo) and also the RED_GLOBAL realm.
+
+
+ if(array_key_exists('profile',$arr) && is_array($arr['profile']) && (! $other_realm)) {
$profile_changed = import_directory_profile($xchan_hash,$arr['profile'],$address,$ud_flags, 1);
if($profile_changed) {
$what .= 'profile ';
@@ -996,10 +904,10 @@ function import_xchan($arr,$ud_flags = UPDATE_FLAGS_UPDATED, $ud_arr = null) {
else {
logger('import_xchan: profile not available - hiding');
// they may have made it private
- $r = q("delete from xprof where xprof_hash = '%s' limit 1",
+ $r = q("delete from xprof where xprof_hash = '%s'",
dbesc($xchan_hash)
);
- $r = q("delete from xtag where xtag_hash = '%s' limit 1",
+ $r = q("delete from xtag where xtag_hash = '%s'",
dbesc($xchan_hash)
);
}
@@ -1021,7 +929,7 @@ function import_xchan($arr,$ud_flags = UPDATE_FLAGS_UPDATED, $ud_arr = null) {
}
elseif(! $ud_flags) {
// nothing changed but we still need to update the updates record
- q("update updates set ud_flags = ( ud_flags | %d ) where ud_addr = '%s' and not (ud_flags & %d) ",
+ q("update updates set ud_flags = ( ud_flags | %d ) where ud_addr = '%s' and not (ud_flags & %d)>0 ",
intval(UPDATE_FLAGS_UPDATED),
dbesc($address),
intval(UPDATE_FLAGS_UPDATED)
@@ -1071,14 +979,14 @@ function zot_process_response($hub,$arr,$outq) {
// async messages remain in the queue until processed.
if(intval($outq['outq_async'])) {
- $r = q("update outq set outq_delivered = 1, outq_updated = '%s' where outq_hash = '%s' and outq_channel = %d limit 1",
+ $r = q("update outq set outq_delivered = 1, outq_updated = '%s' where outq_hash = '%s' and outq_channel = %d",
dbesc(datetime_convert()),
dbesc($outq['outq_hash']),
intval($outq['outq_channel'])
);
}
else {
- $r = q("delete from outq where outq_hash = '%s' and outq_channel = %d limit 1",
+ $r = q("delete from outq where outq_hash = '%s' and outq_channel = %d",
dbesc($outq['outq_hash']),
intval($outq['outq_channel'])
);
@@ -1140,7 +1048,8 @@ function zot_fetch($arr) {
* we will verify the sender and url in each returned message structure and also verify
* that all the messages returned match the site url that we are currently processing.
*
- * The message types handled here are 'activity' (e.g. posts), 'mail' , 'profile', and 'channel_sync'
+ * The message types handled here are 'activity' (e.g. posts), 'mail' , 'profile', 'location',
+ * and 'channel_sync'
*
* @returns array => array ( [0] => string $channel_hash, [1] => string $delivery_status, [2] => string $address )
* suitable for logging remotely, enumerating the processing results of each message/recipient combination.
@@ -1170,7 +1079,7 @@ function zot_import($arr, $sender_url) {
if(array_key_exists('iv',$i['notify'])) {
$i['notify'] = json_decode(crypto_unencapsulate($i['notify'],get_config('system','prvkey')),true);
- }
+ }
logger('zot_import: notify: ' . print_r($i['notify'],true), LOGGER_DATA);
@@ -1180,6 +1089,9 @@ function zot_import($arr, $sender_url) {
continue;
}
+ $message_request = ((array_key_exists('message_id',$i['notify'])) ? true : false);
+ if($message_request)
+ logger('processing message request');
$i['notify']['sender']['hash'] = make_xchan_hash($i['notify']['sender']['guid'],$i['notify']['sender']['guid_sig']);
$deliveries = null;
@@ -1192,7 +1104,7 @@ function zot_import($arr, $sender_url) {
}
stringify_array_elms($recip_arr);
$recips = implode(',',$recip_arr);
- $r = q("select channel_hash as hash from channel where channel_hash in ( " . $recips . " ) and not ( channel_pageflags & %d ) ",
+ $r = q("select channel_hash as hash from channel where channel_hash in ( " . $recips . " ) and not ( channel_pageflags & %d )>0 ",
intval(PAGE_REMOVED)
);
if(! $r) {
@@ -1200,6 +1112,12 @@ function zot_import($arr, $sender_url) {
continue;
}
+ // It's a specifically targetted post. If we were sent a public_scope hint (likely),
+ // get rid of it so that it doesn't get stored and cause trouble.
+
+ if(($i) && is_array($i) && array_key_exists('message',$i) && is_array($i['message']) && array_key_exists('public_scope',$i['message']))
+ unset($i['message']['public_scope']);
+
$deliveries = $r;
// We found somebody on this site that's in the recipient list.
@@ -1207,18 +1125,37 @@ function zot_import($arr, $sender_url) {
}
else {
if(($i['message']) && (array_key_exists('flags',$i['message'])) && (in_array('private',$i['message']['flags']))) {
- // This should not happen but until we can stop it...
- logger('private message was delivered with no recipients.');
- continue;
+ if(array_key_exists('public_scope',$i['message']) && $i['message']['public_scope'] === 'public') {
+ // This should not happen but until we can stop it...
+ logger('private message was delivered with no recipients.');
+ continue;
+ }
}
- logger('public post');
+ logger('public post');
// Public post. look for any site members who are or may be accepting posts from this sender
// and who are allowed to see them based on the sender's permissions
$deliveries = allowed_public_recips($i);
+ if($i['message'] && array_key_exists('type',$i['message']) && $i['message']['type'] === 'location') {
+ $sys = get_sys_channel();
+ $deliveries = array(array('hash' => $sys['xchan_hash']));
+ }
+
+ // if the scope is anything but 'public' we're going to store it as private regardless
+ // of the private flag on the post.
+
+ if($i['message'] && array_key_exists('public_scope',$i['message'])
+ && $i['message']['public_scope'] !== 'public') {
+
+ if(! array_key_exists('flags',$i['message']))
+ $i['message']['flags'] = array();
+ if(! in_array('private',$i['message']['flags']))
+ $i['message']['flags'][] = 'private';
+
+ }
}
// Go through the hash array and remove duplicates. array_unique() won't do this because the array is more than one level.
@@ -1256,7 +1193,7 @@ function zot_import($arr, $sender_url) {
logger('Activity recipients: ' . print_r($deliveries,true), LOGGER_DATA);
$relay = ((array_key_exists('flags',$i['message']) && in_array('relay',$i['message']['flags'])) ? true : false);
- $result = process_delivery($i['notify']['sender'],$arr,$deliveries,$relay);
+ $result = process_delivery($i['notify']['sender'],$arr,$deliveries,$relay,false,$message_request);
}
elseif($i['message']['type'] === 'mail') {
@@ -1279,7 +1216,7 @@ function zot_import($arr, $sender_url) {
}
elseif($i['message']['type'] === 'channel_sync') {
-// $arr = get_channelsync_elements($i['message']);
+ // $arr = get_channelsync_elements($i['message']);
$arr = $i['message'];
@@ -1288,6 +1225,15 @@ function zot_import($arr, $sender_url) {
$result = process_channel_sync_delivery($i['notify']['sender'],$arr,$deliveries);
}
+ elseif($i['message']['type'] === 'location') {
+ $arr = $i['message'];
+
+ logger('Location message received: ' . print_r($arr,true), LOGGER_DATA);
+ logger('Location message recipients: ' . print_r($deliveries,true), LOGGER_DATA);
+
+ $result = process_location_delivery($i['notify']['sender'],$arr,$deliveries);
+ }
+
}
if($result){
$return = array_merge($return,$result);
@@ -1310,8 +1256,14 @@ function zot_import($arr, $sender_url) {
function public_recips($msg) {
+
+ require_once('include/identity.php');
+
$check_mentions = false;
+ $include_sys = false;
+
if($msg['message']['type'] === 'activity') {
+ $include_sys = true;
$col = 'channel_w_stream';
$field = PERMS_W_STREAM;
if(array_key_exists('flags',$msg['message']) && in_array('thread_parent', $msg['message']['flags'])) {
@@ -1340,9 +1292,9 @@ function public_recips($msg) {
if($msg['notify']['sender']['url'] === z_root())
- $sql = " where (( " . $col . " & " . PERMS_NETWORK . " ) or ( " . $col . " & " . PERMS_SITE . " ) or ( " . $col . " & " . PERMS_PUBLIC . ")) ";
+ $sql = " where (( " . $col . " & " . PERMS_NETWORK . " )>0 or ( " . $col . " & " . PERMS_SITE . " )>0 or ( " . $col . " & " . PERMS_PUBLIC . ")>0) ";
else
- $sql = " where (( " . $col . " & " . PERMS_NETWORK . " ) or ( " . $col . " & " . PERMS_PUBLIC . ")) ";
+ $sql = " where (( " . $col . " & " . PERMS_NETWORK . " )>0 or ( " . $col . " & " . PERMS_PUBLIC . ")>0) ";
$r = q("select channel_hash as hash from channel $sql or channel_hash = '%s' ",
@@ -1352,7 +1304,7 @@ function public_recips($msg) {
if(! $r)
$r = array();
- $x = q("select channel_hash as hash from channel left join abook on abook_channel = channel_id where abook_xchan = '%s' and not ( channel_pageflags & " . PAGE_REMOVED . " ) and (( " . $col . " & " . PERMS_SPECIFIC . " ) and ( abook_my_perms & " . $field . " )) OR ( " . $col . " & " . PERMS_PENDING . " ) OR (( " . $col . " & " . PERMS_CONTACTS . " ) and not ( abook_flags & " . ABOOK_FLAG_PENDING . " )) ",
+ $x = q("select channel_hash as hash from channel left join abook on abook_channel = channel_id where abook_xchan = '%s' and not ( channel_pageflags & " . PAGE_REMOVED . " )>0 and (( " . $col . " & " . PERMS_SPECIFIC . " )>0 and ( abook_my_perms & " . $field . " )>0) OR ( " . $col . " & " . PERMS_PENDING . " )>0 OR (( " . $col . " & " . PERMS_CONTACTS . " )>0 and not ( abook_flags & " . ABOOK_FLAG_PENDING . " )>0) ",
dbesc($msg['notify']['sender']['hash'])
);
@@ -1361,6 +1313,14 @@ function public_recips($msg) {
$r = array_merge($r,$x);
+ //logger('message: ' . print_r($msg['message'],true));
+
+ if($include_sys && array_key_exists('public_scope',$msg['message']) && $msg['message']['public_scope'] === 'public') {
+ $sys = get_sys_channel();
+ if($sys)
+ $r[] = array('hash' => $sys['channel_hash']);
+ }
+
// look for any public mentions on this site
// They will get filtered by tgroup_check() so we don't need to check permissions now
@@ -1391,7 +1351,7 @@ function public_recips($msg) {
function allowed_public_recips($msg) {
- logger('allowed_public_recips: ' . print_r($msg,true));
+ logger('allowed_public_recips: ' . print_r($msg,true),LOGGER_DATA);
$recips = public_recips($msg);
@@ -1406,7 +1366,7 @@ function allowed_public_recips($msg) {
$hash = make_xchan_hash($msg['notify']['sender']['guid'],$msg['notify']['sender']['guid_sig']);
- if($scope === 'public' || $scope === 'network: red')
+ if($scope === 'public' || $scope === 'network: red' || $scope === 'authenticated')
return $recips;
if(strpos($scope,'site:') === 0) {
@@ -1428,7 +1388,7 @@ function allowed_public_recips($msg) {
$condensed_recips[] = $rr['hash'];
$results = array();
- $r = q("select channel_hash as hash from channel left join abook on abook_channel = channel_id where abook_xchan = '%s' and not ( channel_pageflags & %d ) ",
+ $r = q("select channel_hash as hash from channel left join abook on abook_channel = channel_id where abook_xchan = '%s' and not ( channel_pageflags & %d )>0 ",
dbesc($hash),
intval(PAGE_REMOVED)
);
@@ -1444,7 +1404,7 @@ function allowed_public_recips($msg) {
}
-function process_delivery($sender,$arr,$deliveries,$relay,$public = false) {
+function process_delivery($sender,$arr,$deliveries,$relay,$public = false,$request = false) {
$result = array();
@@ -1457,8 +1417,9 @@ function process_delivery($sender,$arr,$deliveries,$relay,$public = false) {
return;
}
}
-
+
foreach($deliveries as $d) {
+ $local_public = $public;
$r = q("select * from channel where channel_hash = '%s' limit 1",
dbesc($d['hash'])
);
@@ -1468,12 +1429,28 @@ function process_delivery($sender,$arr,$deliveries,$relay,$public = false) {
continue;
}
+
$channel = $r[0];
+ // allow public postings to the sys channel regardless of permissions
+ if(($channel['channel_pageflags'] & PAGE_SYSTEM) && (! $arr['item_private'])) {
+ $local_public = true;
+
+ $r = q("select xchan_flags from xchan where xchan_hash = '%s' limit 1",
+ dbesc($sender['hash'])
+ );
+ // don't import sys channel posts from selfcensored authors
+ if($r && ($r[0]['xchan_flags'] & XCHAN_FLAGS_SELFCENSORED)) {
+ $local_public = false;
+ continue;
+ }
+ }
+
$tag_delivery = tgroup_check($channel['channel_id'],$arr);
$perm = (($arr['mid'] == $arr['parent_mid']) ? 'send_stream' : 'post_comments');
+
// This is our own post, possibly coming from a channel clone
if($arr['owner_xchan'] == $d['hash']) {
@@ -1486,12 +1463,68 @@ function process_delivery($sender,$arr,$deliveries,$relay,$public = false) {
}
}
- if((! perm_is_allowed($channel['channel_id'],$sender['hash'],$perm)) && (! $tag_delivery) && (! $public)) {
+ if((! perm_is_allowed($channel['channel_id'],$sender['hash'],$perm)) && (! $tag_delivery) && (! $local_public)) {
logger("permission denied for delivery to channel {$channel['channel_id']} {$channel['channel_address']}");
$result[] = array($d['hash'],'permission denied',$channel['channel_name'] . ' <' . $channel['channel_address'] . '@' . get_app()->get_hostname() . '>',$arr['mid']);
continue;
}
-
+
+ if($arr['mid'] != $arr['parent_mid']) {
+
+ // check source route.
+ // We are only going to accept comments from this sender if the comment has the same route as the top-level-post,
+ // this is so that permissions mismatches between senders apply to the entire conversation
+ // As a side effect we will also do a preliminary check that we have the top-level-post, otherwise
+ // processing it is pointless.
+
+ $r = q("select route from item where mid = '%s' and uid = %d limit 1",
+ dbesc($arr['parent_mid']),
+ intval($channel['channel_id'])
+ );
+ if(! $r) {
+ $result[] = array($d['hash'],'comment parent not found',$channel['channel_name'] . ' <' . $channel['channel_address'] . '@' . get_app()->get_hostname() . '>',$arr['mid']);
+
+ // We don't seem to have a copy of this conversation or at least the parent
+ // - so request a copy of the entire conversation to date.
+ // Don't do this if it's a relay post as we're the ones who are supposed to
+ // have the copy and we don't want the request to loop.
+ // Also don't do this if this comment came from a conversation request packet.
+ // It's possible that comments are allowed but posting isn't and that could
+ // cause a conversation fetch loop. We can detect these packets since they are
+ // delivered via a 'notify' packet type that has a message_id element in the
+ // initial zot packet (just like the corresponding 'request' packet type which
+ // makes the request).
+ // We'll also check the send_stream permission - because if it isn't allowed,
+ // the top level post is unlikely to be imported and
+ // this is just an exercise in futility.
+
+ if((! $relay) && (! $request) && (! $local_public)
+ && perm_is_allowed($channel['channel_id'],$sender['hash'],'send_stream')) {
+ proc_run('php', 'include/notifier.php', 'request', $channel['channel_id'], $sender['hash'], $arr['parent_mid']);
+ }
+ continue;
+ }
+ if($relay) {
+ // reset the route in case it travelled a great distance upstream
+ // use our parent's route so when we go back downstream we'll match
+ // with whatever route our parent has.
+ $arr['route'] = $r[0]['route'];
+ }
+ else {
+
+ // going downstream check that we have the same upstream provider that
+ // sent it to us originally. Ignore it if it came from another source
+ // (with potentially different permissions)
+
+ $current_route = (($arr['route']) ? $arr['route'] . ',' : '') . $sender['hash'];
+
+ if($r[0]['route'] != $current_route) {
+ $result[] = array($d['hash'],'comment route mismatch',$channel['channel_name'] . ' <' . $channel['channel_address'] . '@' . get_app()->get_hostname() . '>',$arr['mid']);
+ continue;
+ }
+ }
+ }
+
if($arr['item_restrict'] & ITEM_DELETED) {
// remove_community_tag is a no-op if this isn't a community tag activity
@@ -1509,29 +1542,43 @@ function process_delivery($sender,$arr,$deliveries,$relay,$public = false) {
continue;
}
- $r = q("select id, edited from item where mid = '%s' and uid = %d limit 1",
+ $r = q("select id, edited, item_flags, mid, parent_mid from item where mid = '%s' and uid = %d limit 1",
dbesc($arr['mid']),
intval($channel['channel_id'])
);
if($r) {
+ // We already have this post.
+ // Maybe it has been edited?
+ $item_id = $r[0]['id'];
if($arr['edited'] > $r[0]['edited']) {
$arr['id'] = $r[0]['id'];
$arr['uid'] = $channel['channel_id'];
update_imported_item($sender,$arr,$channel['channel_id']);
- }
- $result[] = array($d['hash'],'updated',$channel['channel_name'] . ' <' . $channel['channel_address'] . '@' . get_app()->get_hostname() . '>',$arr['mid']);
- $item_id = $r[0]['id'];
+ $result[] = array($d['hash'],'updated',$channel['channel_name'] . ' <' . $channel['channel_address'] . '@' . get_app()->get_hostname() . '>',$arr['mid']);
+ if(! $relay)
+ add_source_route($item_id,$sender['hash']);
+ }
+ else {
+ $result[] = array($d['hash'],'update ignored',$channel['channel_name'] . ' <' . $channel['channel_address'] . '@' . get_app()->get_hostname() . '>',$arr['mid']);
+ // We need this line to ensure wall-to-wall comments are relayed (by falling through to the relay bit),
+ // and at the same time not relay any other relayable posts more than once, because to do so is very wasteful.
+ if(! ($r[0]['item_flags'] & ITEM_ORIGIN))
+ continue;
+ }
}
else {
$arr['aid'] = $channel['channel_account_id'];
$arr['uid'] = $channel['channel_id'];
$item_result = item_store($arr);
- $item_id = $item_result['item_id'];
- $parr = array('item_id' => $item_id,'item' => $arr,'sender' => $sender,'channel' => $channel);
- call_hooks('activity_received',$parr);
-
- add_source_route($item_id,$sender['hash']);
-
+ $item_id = 0;
+ if($item_result['success']) {
+ $item_id = $item_result['item_id'];
+ $parr = array('item_id' => $item_id,'item' => $arr,'sender' => $sender,'channel' => $channel);
+ call_hooks('activity_received',$parr);
+ // don't add a source route if it's a relay or later recipients will get a route mismatch
+ if(! $relay)
+ add_source_route($item_id,$sender['hash']);
+ }
$result[] = array($d['hash'],(($item_id) ? 'posted' : 'storage failed:' . $item_result['message']),$channel['channel_name'] . ' <' . $channel['channel_address'] . '@' . get_app()->get_hostname() . '>',$arr['mid']);
}
@@ -1601,7 +1648,7 @@ function remove_community_tag($sender,$arr,$uid) {
return;
}
- $x = q("delete from term where uid = %d and oid = %d and otype = %d and type = %d and term = '%s' and url = '%s' limit 1",
+ $x = q("delete from term where uid = %d and oid = %d and otype = %d and type = %d and term = '%s' and url = '%s'",
intval($uid),
intval($r[0]['id']),
intval(TERM_OBJ_POST),
@@ -1648,11 +1695,6 @@ function delete_imported_item($sender,$item,$uid) {
require_once('include/items.php');
- // FIXME issue #230 is related
- // Chicken/egg problem because we have to drop_item, but this removes information that tag_deliver may need to do its stuff.
- // We can't reverse the order because drop_item refuses to run if the item already has the deleted flag set and we need to
- // set that flag prior to calling tag_deliver.
-
// Use phased deletion to set the deleted flag, call both tag_deliver and the notifier to notify downstream channels
// and then clean up after ourselves with a cron job after several days to do the delete_item_lowlevel() (DROPITEM_PHASE2).
@@ -1700,7 +1742,7 @@ function process_mail_delivery($sender,$arr,$deliveries) {
);
if($r) {
if($arr['mail_flags'] & MAIL_RECALLED) {
- $x = q("delete from mail where id = %d and channel_id = %d limit 1",
+ $x = q("delete from mail where id = %d and channel_id = %d",
intval($r[0]['id']),
intval($channel['channel_id'])
);
@@ -1726,8 +1768,6 @@ function process_mail_delivery($sender,$arr,$deliveries) {
function process_profile_delivery($sender,$arr,$deliveries) {
- // deliveries is irrelevant, what to do about birthday notification....?
-
logger('process_profile_delivery', LOGGER_DEBUG);
$r = q("select xchan_addr from xchan where xchan_hash = '%s' limit 1",
@@ -1737,6 +1777,264 @@ function process_profile_delivery($sender,$arr,$deliveries) {
import_directory_profile($sender['hash'],$arr,$r[0]['xchan_addr'], UPDATE_FLAGS_UPDATED, 0);
}
+function process_location_delivery($sender,$arr,$deliveries) {
+
+ // deliveries is irrelevant
+ logger('process_location_delivery', LOGGER_DEBUG);
+
+ $r = q("select xchan_pubkey from xchan where xchan_hash = '%s' limit 1",
+ dbesc($sender['hash'])
+ );
+ if($r)
+ $sender['key'] = $r[0]['xchan_pubkey'];
+ if(array_key_exists('locations',$arr) && $arr['locations']) {
+ $x = sync_locations($sender,$arr,true);
+ logger('process_location_delivery: results: ' . print_r($x,true), LOGGER_DEBUG);
+ if($x['changed']) {
+ $guid = random_string() . '@' . get_app()->get_hostname();
+ update_modtime($sender['hash'],$sender['guid'],$arr['locations'][0]['address'],UPDATE_FLAGS_UPDATED);
+ }
+ }
+}
+
+
+function sync_locations($sender,$arr,$absolute = false) {
+
+ $ret = array();
+
+ if($arr['locations']) {
+
+ $xisting = q("select hubloc_id, hubloc_url, hubloc_sitekey from hubloc where hubloc_hash = '%s'",
+ dbesc($sender['hash'])
+ );
+
+ // See if a primary is specified
+
+ $has_primary = false;
+ foreach($arr['locations'] as $location) {
+ if($location['primary']) {
+ $has_primary = true;
+ break;
+ }
+ }
+
+ // Ensure that they have one primary hub
+
+ if(! $has_primary)
+ $arr['locations'][0]['primary'] = true;
+
+ foreach($arr['locations'] as $location) {
+ if(! rsa_verify($location['url'],base64url_decode($location['url_sig']),$sender['key'])) {
+ logger('sync_locations: Unable to verify site signature for ' . $location['url']);
+ $ret['message'] .= sprintf( t('Unable to verify site signature for %s'), $location['url']) . EOL;
+ continue;
+ }
+
+
+ for($x = 0; $x < count($xisting); $x ++) {
+ if(($xisting[$x]['hubloc_url'] === $location['url'])
+ && ($xisting[$x]['hubloc_sitekey'] === $location['sitekey'])) {
+ $xisting[$x]['updated'] = true;
+ }
+ }
+
+ if(! $location['sitekey']) {
+ logger('sync_locations: empty hubloc sitekey. ' . print_r($location,true));
+ continue;
+ }
+
+ // Catch some malformed entries from the past which still exist
+
+ if(strpos($location['address'],'/') !== false)
+ $location['address'] = substr($location['address'],0,strpos($location['address'],'/'));
+
+ // match as many fields as possible in case anything at all changed.
+
+ $r = q("select * from hubloc where hubloc_hash = '%s' and hubloc_guid = '%s' and hubloc_guid_sig = '%s' and hubloc_url = '%s' and hubloc_url_sig = '%s' and hubloc_host = '%s' and hubloc_addr = '%s' and hubloc_callback = '%s' and hubloc_sitekey = '%s' ",
+ dbesc($sender['hash']),
+ dbesc($sender['guid']),
+ dbesc($sender['guid_sig']),
+ dbesc($location['url']),
+ dbesc($location['url_sig']),
+ dbesc($location['host']),
+ dbesc($location['address']),
+ dbesc($location['callback']),
+ dbesc($location['sitekey'])
+ );
+ if($r) {
+ logger('sync_locations: hub exists: ' . $location['url'], LOGGER_DEBUG);
+
+ // update connection timestamp if this is the site we're talking to
+ // This only happens when called from import_xchan
+
+ if(array_key_exists('site',$arr) && $location['url'] == $arr['site']['url']) {
+ q("update hubloc set hubloc_connected = '%s', hubloc_updated = '%s' where hubloc_id = %d",
+ dbesc(datetime_convert()),
+ dbesc(datetime_convert()),
+ intval($r[0]['hubloc_id'])
+ );
+ }
+
+ // if it's marked offline/dead, bring it back
+ // Should we do this? It's basically saying that the channel knows better than
+ // the directory server if the site is alive.
+
+ if($r[0]['hubloc_status'] & HUBLOC_OFFLINE) {
+ q("update hubloc set hubloc_status = (hubloc_status & ~%d) where hubloc_id = %d",
+ intval(HUBLOC_OFFLINE),
+ intval($r[0]['hubloc_id'])
+ );
+ if($r[0]['hubloc_flags'] & HUBLOC_FLAGS_ORPHANCHECK) {
+ q("update hubloc set hubloc_flags = (hubloc_flags & ~%d) where hubloc_id = %d",
+ intval(HUBLOC_FLAGS_ORPHANCHECK),
+ intval($r[0]['hubloc_id'])
+ );
+ }
+ q("update xchan set xchan_flags = (xchan_flags & ~%d) where (xchan_flags & %d)>0 and xchan_hash = '%s'",
+ intval(XCHAN_FLAGS_ORPHAN),
+ intval(XCHAN_FLAGS_ORPHAN),
+ dbesc($sender['hash'])
+ );
+ }
+
+ // Remove pure duplicates
+ if(count($r) > 1) {
+ for($h = 1; $h < count($r); $h ++) {
+ q("delete from hubloc where hubloc_id = %d",
+ intval($r[$h]['hubloc_id'])
+ );
+ $what .= 'duplicate_hubloc_removed ';
+ $changed = true;
+ }
+ }
+
+ if((($r[0]['hubloc_flags'] & HUBLOC_FLAGS_PRIMARY) && (! $location['primary']))
+ || ((! ($r[0]['hubloc_flags'] & HUBLOC_FLAGS_PRIMARY)) && ($location['primary']))) {
+ $m = q("update hubloc set hubloc_flags = (hubloc_flags & ~%d), hubloc_updated = '%s' where hubloc_id = %d",
+ intval(HUBLOC_FLAGS_PRIMARY),
+ dbesc(datetime_convert()),
+ intval($r[0]['hubloc_id'])
+ );
+ // make sure hubloc_change_primary() has current data
+ $r[0]['hubloc_flags'] = $r[0]['hubloc_flags'] ^ HUBLOC_FLAGS_PRIMARY;
+ hubloc_change_primary($r[0]);
+ $what .= 'primary_hub ';
+ $changed = true;
+ }
+ elseif($absolute) {
+ // Absolute sync - make sure the current primary is correctly reflected in the xchan
+ $pr = hubloc_change_primary($r[0]);
+ if($pr) {
+ $what .= 'xchan_primary';
+ $changed = true;
+ }
+ }
+ if((($r[0]['hubloc_flags'] & HUBLOC_FLAGS_DELETED) && (! $location['deleted']))
+ || ((! ($r[0]['hubloc_flags'] & HUBLOC_FLAGS_DELETED)) && ($location['deleted']))) {
+ $n = q("update hubloc set hubloc_flags = (hubloc_flags & ~%d), hubloc_updated = '%s' where hubloc_id = %d",
+ intval(HUBLOC_FLAGS_DELETED),
+ dbesc(datetime_convert()),
+ intval($r[0]['hubloc_id'])
+ );
+ $what .= 'delete_hub ';
+ $changed = true;
+ }
+ continue;
+ }
+
+ // Existing hubs are dealt with. Now let's process any new ones.
+ // New hub claiming to be primary. Make it so by removing any existing primaries.
+
+ if(intval($location['primary'])) {
+ $r = q("update hubloc set hubloc_flags = (hubloc_flags & ~%d), hubloc_updated = '%s' where hubloc_hash = '%s' and (hubloc_flags & %d )>0",
+ intval(HUBLOC_FLAGS_PRIMARY),
+ dbesc(datetime_convert()),
+ dbesc($sender['hash']),
+ intval(HUBLOC_FLAGS_PRIMARY)
+ );
+ }
+ logger('sync_locations: new hub: ' . $location['url']);
+ $r = q("insert into hubloc ( hubloc_guid, hubloc_guid_sig, hubloc_hash, hubloc_addr, hubloc_network, hubloc_flags, hubloc_url, hubloc_url_sig, hubloc_host, hubloc_callback, hubloc_sitekey, hubloc_updated, hubloc_connected)
+ values ( '%s','%s','%s','%s', '%s', %d ,'%s','%s','%s','%s','%s','%s','%s')",
+ dbesc($sender['guid']),
+ dbesc($sender['guid_sig']),
+ dbesc($sender['hash']),
+ dbesc($location['address']),
+ dbesc('zot'),
+ intval((intval($location['primary'])) ? HUBLOC_FLAGS_PRIMARY : 0),
+ dbesc($location['url']),
+ dbesc($location['url_sig']),
+ dbesc($location['host']),
+ dbesc($location['callback']),
+ dbesc($location['sitekey']),
+ dbesc(datetime_convert()),
+ dbesc(datetime_convert())
+ );
+ $what .= 'newhub ';
+ $changed = true;
+
+ if($location['primary']) {
+ $r = q("select * from hubloc where hubloc_addr = '%s' and hubloc_sitekey = '%s' limit 1",
+ dbesc($location['address']),
+ dbesc($location['sitekey'])
+ );
+ if($r)
+ hubloc_change_primary($r[0]);
+ }
+ }
+
+ // get rid of any hubs we have for this channel which weren't reported.
+
+ if($absolute && $xisting) {
+ foreach($xisting as $x) {
+ if(! array_key_exists('updated',$x)) {
+ logger('sync_locations: deleting unreferenced hub location ' . $x['hubloc_url']);
+ $r = q("update hubloc set hubloc_flags = (hubloc_flags & ~%d), hubloc_updated = '%s' where hubloc_id = %d",
+ intval(HUBLOC_FLAGS_DELETED),
+ dbesc(datetime_convert()),
+ intval($x['hubloc_id'])
+ );
+ $what .= 'removed_hub ';
+ $changed = true;
+ }
+ }
+ }
+ }
+
+ $ret['change_message'] = $what;
+ $ret['changed'] = $changed;
+
+ return $ret;
+
+}
+
+
+function zot_encode_locations($channel) {
+ $ret = array();
+
+ $x = zot_get_hublocs($channel['channel_hash']);
+ if($x && count($x)) {
+ foreach($x as $hub) {
+ if(! ($hub['hubloc_flags'] & HUBLOC_FLAGS_UNVERIFIED)) {
+ $ret[] = array(
+ 'host' => $hub['hubloc_host'],
+ 'address' => $hub['hubloc_addr'],
+ 'primary' => (($hub['hubloc_flags'] & HUBLOC_FLAGS_PRIMARY) ? true : false),
+ 'url' => $hub['hubloc_url'],
+ 'url_sig' => $hub['hubloc_url_sig'],
+ 'callback' => $hub['hubloc_callback'],
+ 'sitekey' => $hub['hubloc_sitekey'],
+ 'deleted' => (($hub['hubloc_flags'] & HUBLOC_FLAGS_DELETED) ? true : false)
+ );
+ }
+ }
+ }
+ return $ret;
+}
+
+
+
+
/*
* @function import_directory_profile
@@ -1785,7 +2083,7 @@ function import_directory_profile($hash,$profile,$addr,$ud_flags = UPDATE_FLAGS_
if(in_arrayi('nsfw',$clean) || in_arrayi('adult',$clean)) {
- q("update xchan set xchan_flags = (xchan_flags | %d) where xchan_hash = '%s' limit 1",
+ q("update xchan set xchan_flags = (xchan_flags | %d) where xchan_hash = '%s'",
intval(XCHAN_FLAGS_SELFCENSORED),
dbesc($hash)
);
@@ -1799,7 +2097,7 @@ function import_directory_profile($hash,$profile,$addr,$ud_flags = UPDATE_FLAGS_
$update = false;
foreach($r[0] as $k => $v) {
if((array_key_exists($k,$arr)) && ($arr[$k] != $v)) {
- logger('import_directory_profile: update' . $k . ' => ' . $arr[$k]);
+ logger('import_directory_profile: update ' . $k . ' => ' . $arr[$k]);
$update = true;
break;
}
@@ -1820,7 +2118,7 @@ function import_directory_profile($hash,$profile,$addr,$ud_flags = UPDATE_FLAGS_
xprof_homepage = '%s',
xprof_hometown = '%s',
xprof_keywords = '%s'
- where xprof_hash = '%s' limit 1",
+ where xprof_hash = '%s'",
dbesc($arr['xprof_desc']),
dbesc($arr['xprof_dob']),
intval($arr['xprof_age']),
@@ -1841,7 +2139,7 @@ function import_directory_profile($hash,$profile,$addr,$ud_flags = UPDATE_FLAGS_
}
else {
$update = true;
- logger('import_directory_profile: new profile');
+ logger('import_directory_profile: new profile ');
$x = q("insert into xprof (xprof_hash, xprof_desc, xprof_dob, xprof_age, xprof_gender, xprof_marital, xprof_sexual, xprof_locale, xprof_region, xprof_postcode, xprof_country, xprof_about, xprof_homepage, xprof_hometown, xprof_keywords) values ('%s', '%s', '%s', %d, '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s') ",
dbesc($arr['xprof_hash']),
dbesc($arr['xprof_desc']),
@@ -1890,7 +2188,7 @@ function import_directory_keywords($hash,$keywords) {
foreach($existing as $x) {
if(! in_array($x,$clean))
- $r = q("delete from xtag where xtag_hash = '%s' and xtag_term = '%s' limit 1",
+ $r = q("delete from xtag where xtag_hash = '%s' and xtag_term = '%s'",
dbesc($hash),
dbesc($x)
);
@@ -1922,7 +2220,7 @@ function update_modtime($hash,$guid,$addr,$flags = 0) {
);
}
else {
- q("update updates set ud_flags = ( ud_flags | %d ) where ud_addr = '%s' and not (ud_flags & %d) ",
+ q("update updates set ud_flags = ( ud_flags | %d ) where ud_addr = '%s' and not (ud_flags & %d)>0 ",
intval(UPDATE_FLAGS_UPDATED),
dbesc($addr),
intval(UPDATE_FLAGS_UPDATED)
@@ -1997,6 +2295,7 @@ function import_site($arr,$pubkey) {
$url = htmlspecialchars($arr['url'],ENT_COMPAT,'UTF-8',false);
$sellpage = htmlspecialchars($arr['sellpage'],ENT_COMPAT,'UTF-8',false);
$site_location = htmlspecialchars($arr['location'],ENT_COMPAT,'UTF-8',false);
+ $site_realm = htmlspecialchars($arr['realm'],ENT_COMPAT,'UTF-8',false);
if($exists) {
if(($siterecord['site_flags'] != $site_directory)
@@ -2004,14 +2303,15 @@ function import_site($arr,$pubkey) {
|| ($siterecord['site_directory'] != $directory_url)
|| ($siterecord['site_sellpage'] != $sellpage)
|| ($siterecord['site_location'] != $site_location)
- || ($siterecord['site_register'] != $register_policy)) {
+ || ($siterecord['site_register'] != $register_policy)
+ || ($siterecord['site_realm'] != $site_realm)) {
$update = true;
// logger('import_site: input: ' . print_r($arr,true));
// logger('import_site: stored: ' . print_r($siterecord,true));
- $r = q("update site set site_location = '%s', site_flags = %d, site_access = %d, site_directory = '%s', site_register = %d, site_update = '%s', site_sellpage = '%s'
- where site_url = '%s' limit 1",
+ $r = q("update site set site_location = '%s', site_flags = %d, site_access = %d, site_directory = '%s', site_register = %d, site_update = '%s', site_sellpage = '%s', site_realm = '%s'
+ where site_url = '%s'",
dbesc($site_location),
intval($site_directory),
intval($access_policy),
@@ -2019,6 +2319,7 @@ function import_site($arr,$pubkey) {
intval($register_policy),
dbesc(datetime_convert()),
dbesc($sellpage),
+ dbesc($site_realm),
dbesc($url)
);
if(! $r) {
@@ -2028,8 +2329,8 @@ function import_site($arr,$pubkey) {
}
else {
$update = true;
- $r = q("insert into site ( site_location, site_url, site_access, site_flags, site_update, site_directory, site_register, site_sellpage )
- values ( '%s', '%s', %d, %d, '%s', '%s', %d, '%s' )",
+ $r = q("insert into site ( site_location, site_url, site_access, site_flags, site_update, site_directory, site_register, site_sellpage, site_realm )
+ values ( '%s', '%s', %d, %d, '%s', '%s', %d, '%s', '%s' )",
dbesc($site_location),
dbesc($url),
intval($access_policy),
@@ -2037,7 +2338,8 @@ function import_site($arr,$pubkey) {
dbesc(datetime_convert()),
dbesc($directory_url),
intval($register_policy),
- dbesc($sellpage)
+ dbesc($sellpage),
+ dbesc($site_realm)
);
if(! $r) {
logger('import_site: record create failed. ' . print_r($arr,true));
@@ -2104,6 +2406,7 @@ function build_sync_packet($uid = 0, $packet = null, $groups_changed = false) {
$info = (($packet) ? $packet : array());
$info['type'] = 'channel_sync';
+ $info['encoding'] = 'red'; // note: not zot, this packet is very red specific
if(array_key_exists($uid,$a->config) && array_key_exists('transient',$a->config[$uid])) {
$settings = $a->config[$uid]['transient'];
@@ -2179,7 +2482,7 @@ function build_sync_packet($uid = 0, $packet = null, $groups_changed = false) {
function process_channel_sync_delivery($sender,$arr,$deliveries) {
// FIXME - this will sync red structures (channel, pconfig and abook). Eventually we need to make this application agnostic.
-// TODO: missing group membership changes
+
$result = array();
@@ -2195,6 +2498,10 @@ function process_channel_sync_delivery($sender,$arr,$deliveries) {
$channel = $r[0];
+ $max_friends = service_class_fetch($channel['channel_id'],'total_channels');
+ $max_feeds = account_service_class_fetch($channel['channel_account_id'],'total_feeds');
+
+
if($channel['channel_hash'] != $sender['hash']) {
logger('process_channel_sync_delivery: possible forgery. Sender ' . $sender['hash'] . ' is not ' . $channel['channel_hash']);
$result[] = array($d['hash'],'channel mismatch',$channel['channel_name'],'');
@@ -2220,7 +2527,7 @@ function process_channel_sync_delivery($sender,$arr,$deliveries) {
if(count($clean)) {
foreach($clean as $k => $v) {
$r = dbq("UPDATE channel set " . dbesc($k) . " = '" . dbesc($v)
- . "' where channel_id = " . intval($channel['channel_id']) . " limit 1");
+ . "' where channel_id = " . intval($channel['channel_id']) );
}
}
}
@@ -2228,12 +2535,44 @@ function process_channel_sync_delivery($sender,$arr,$deliveries) {
if(array_key_exists('abook',$arr) && is_array($arr['abook']) && count($arr['abook'])) {
+ $total_friends = 0;
+ $total_feeds = 0;
+
+ $r = q("select abook_id, abook_flags from abook where abook_channel = %d",
+ intval($channel['channel_id'])
+ );
+ if($r) {
+ // don't count yourself
+ $total_friends = ((count($r) > 0) ? count($r) - 1 : 0);
+ foreach($r as $rr)
+ if($rr['abook_flags'] & ABOOK_FLAG_FEED)
+ $total_feeds ++;
+ }
$disallowed = array('abook_id','abook_account','abook_channel');
- $clean = array();
foreach($arr['abook'] as $abook) {
+ $clean = array();
+ if($abook['abook_xchan'] && $abook['entry_deleted']) {
+ logger('process_channel_sync_delivery: removing abook entry for ' . $abook['abook_xchan']);
+ require_once('include/Contact.php');
+
+ $r = q("select abook_id, abook_flags from abook where abook_xchan = '%s' and abook_channel = %d and not ( abook_flags & %d )>0 limit 1",
+ dbesc($abook['abook_xchan']),
+ intval($channel['channel_id']),
+ intval(ABOOK_FLAG_SELF)
+ );
+ if($r) {
+ contact_remove($channel['channel_id'],$r[0]['abook_id']);
+ if($total_friends)
+ $total_friends --;
+ if($r[0]['abook_flags'] & ABOOK_FLAG_FEED)
+ $total_feeds --;
+ }
+ continue;
+ }
+
// Perform discovery if the referenced xchan hasn't ever been seen on this hub.
// This relies on the undocumented behaviour that red sites send xchan info with the abook
@@ -2246,7 +2585,7 @@ function process_channel_sync_delivery($sender,$arr,$deliveries) {
continue;
}
$j = json_decode($f['body'],true);
- if(! ($j['success'] && $j['guid'])) {
+ if(! ($j['success'] && $j['guid'])) {
logger('process_channel_sync_delivery: probe failed.');
continue;
}
@@ -2277,17 +2616,27 @@ function process_channel_sync_delivery($sender,$arr,$deliveries) {
// make sure we have an abook entry for this xchan on this system
if(! $r) {
+ if($max_friends !== false && $total_friends > $max_friends) {
+ logger('process_channel_sync_delivery: total_channels service class limit exceeded');
+ continue;
+ }
+ if($max_feeds !== false && ($clean['abook_flags'] & ABOOK_FLAG_FEED) && $total_feeds > $max_feeds) {
+ logger('process_channel_sync_delivery: total_feeds service class limit exceeded');
+ continue;
+ }
q("insert into abook ( abook_xchan, abook_channel ) values ('%s', %d ) ",
dbesc($clean['abook_xchan']),
intval($channel['channel_id'])
);
+ $total_friends ++;
+ if($clean['abook_flags'] & ABOOK_FLAG_FEED)
+ $total_feeds ++;
}
if(count($clean)) {
foreach($clean as $k => $v) {
$r = dbq("UPDATE abook set " . dbesc($k) . " = '" . dbesc($v)
- . "' where abook_xchan = '" . dbesc($clean['abook_xchan']) . "' and abook_channel = " . intval($channel['channel_id'])
- . " limit 1");
+ . "' where abook_xchan = '" . dbesc($clean['abook_xchan']) . "' and abook_channel = " . intval($channel['channel_id']));
}
}
}
@@ -2312,7 +2661,7 @@ function process_channel_sync_delivery($sender,$arr,$deliveries) {
if(($y['name'] != $cl['name'])
|| ($y['visible'] != $cl['visible'])
|| ($y['deleted'] != $cl['deleted'])) {
- q("update groups set name = '%s', visible = %d, deleted = %d where hash = '%s' and uid = %d limit 1",
+ q("update groups set name = '%s', visible = %d, deleted = %d where hash = '%s' and uid = %d",
dbesc($cl['name']),
intval($cl['visible']),
intval($cl['deleted']),
@@ -2334,8 +2683,8 @@ function process_channel_sync_delivery($sender,$arr,$deliveries) {
intval($channel['channel_id']),
intval($cl['visible']),
intval($cl['deleted']),
- dbesc($cl['name'])
- );
+ dbesc($cl['name'])
+ );
}
// now look for any collections locally which weren't in the list we just received.
@@ -2355,7 +2704,7 @@ function process_channel_sync_delivery($sender,$arr,$deliveries) {
q("delete from group_member where gid = %d",
intval($y['id'])
);
- q("update groups set deleted = 1 where id = %d and uid = %d limit 1",
+ q("update groups set deleted = 1 where id = %d and uid = %d",
intval($y['id']),
intval($channel['channel_id'])
);
@@ -2418,7 +2767,7 @@ function process_channel_sync_delivery($sender,$arr,$deliveries) {
foreach($m as $mm) {
// if the local existing member isn't in the list we just received - remove them
if(! in_array($mm['xchan'],$members[$y['hash']])) {
- q("delete from group_member where xchan = '%s' and gid = %d and uid = %d limit 1",
+ q("delete from group_member where xchan = '%s' and gid = %d and uid = %d",
dbesc($mm['xchan']),
intval($y['id']),
intval($channel['channel_id'])
@@ -2464,8 +2813,7 @@ function process_channel_sync_delivery($sender,$arr,$deliveries) {
if(count($clean)) {
foreach($clean as $k => $v) {
$r = dbq("UPDATE profile set " . dbesc($k) . " = '" . dbesc($v)
- . "' where profile_guid = '" . dbesc($profile['profile_guid']) . "' and uid = " . intval($channel['channel_id'])
- . " limit 1");
+ . "' where profile_guid = '" . dbesc($profile['profile_guid']) . "' and uid = " . intval($channel['channel_id']));
}
}
}
@@ -2490,7 +2838,7 @@ function get_rpost_path($observer) {
function import_author_zot($x) {
$hash = make_xchan_hash($x['guid'],$x['guid_sig']);
- $r = q("select hubloc_url from hubloc where hubloc_guid = '%s' and hubloc_guid_sig = '%s' and (hubloc_flags & %d) limit 1",
+ $r = q("select hubloc_url from hubloc where hubloc_guid = '%s' and hubloc_guid_sig = '%s' and (hubloc_flags & %d)>0 limit 1",
dbesc($x['guid']),
dbesc($x['guid_sig']),
intval(HUBLOC_FLAGS_PRIMARY)
@@ -2509,3 +2857,110 @@ function import_author_zot($x) {
return false;
}
+
+/**
+ * @function zot_process_message_request($data)
+ * If a site receives a comment to a post but finds they have no parent to attach it with, they
+ * may send a 'request' packet containing the message_id of the missing parent. This is the handler
+ * for that packet. We will create a message_list array of the entire conversation starting with
+ * the missing parent and invoke delivery to the sender of the packet.
+ *
+ * include/deliver.php (for local delivery) and mod/post.php (for web delivery) detect the existence of
+ * this 'message_list' at the destination and split it into individual messages which are
+ * processed/delivered in order.
+ *
+ * Called from mod/post.php
+ */
+
+
+function zot_process_message_request($data) {
+ $ret = array('success' => false);
+
+ if(! $data['message_id']) {
+ $ret['message'] = 'no message_id';
+ logger('no message_id');
+ return $ret;
+ }
+
+ $sender = $data['sender'];
+ $sender_hash = make_xchan_hash($sender['guid'],$sender['guid_sig']);
+
+ /*
+ * Find the local channel in charge of this post (the first and only recipient of the request packet)
+ */
+
+ $arr = $data['recipients'][0];
+ $recip_hash = make_xchan_hash($arr['guid'],$arr['guid_sig']);
+ $c = q("select * from channel left join xchan on channel_hash = xchan_hash where channel_hash = '%s' limit 1",
+ dbesc($recip_hash)
+ );
+ if(! $c) {
+ logger('recipient channel not found.');
+ $ret['message'] .= 'recipient not found.' . EOL;
+ return $ret;
+ }
+
+ /*
+ * fetch the requested conversation
+ */
+
+ $messages = zot_feed($c[0]['channel_id'],$sender_hash,array('message_id' => $data['message_id']));
+
+ if($messages) {
+ $env_recips = null;
+
+ $r = q("select hubloc_guid, hubloc_url, hubloc_sitekey, hubloc_network, hubloc_flags, hubloc_callback, hubloc_host
+ from hubloc where hubloc_hash = '%s' and not (hubloc_flags & %d)>0
+ and not (hubloc_status & %d)>0 group by hubloc_sitekey",
+ dbesc($sender_hash),
+ intval(HUBLOC_FLAGS_DELETED),
+ intval(HUBLOC_OFFLINE)
+ );
+ if(! $r) {
+ logger('no hubs');
+ return $ret;
+ }
+ $hubs = $r;
+ $hublist = array();
+ $keys = array();
+
+ $private = ((array_key_exists('flags',$messages[0]) && in_array('private',$messages[0]['flags'])) ? true : false);
+ if($private)
+ $env_recips = array('guid' => $sender['guid'],'guid_sig' => $sender['guid_sig'],'hash' => $sender_hash);
+
+ $data_packet = json_encode(array('message_list' => $messages));
+
+ foreach($hubs as $hub) {
+ $hash = random_string();
+
+ /*
+ * create a notify packet and drop the actual message packet in the queue for pickup
+ */
+
+ $n = zot_build_packet($c[0],'notify',$env_recips,(($private) ? $hub['hubloc_sitekey'] : null),$hash,array('message_id' => $data['message_id']));
+ q("insert into outq ( outq_hash, outq_account, outq_channel, outq_driver, outq_posturl, outq_async,
+ outq_created, outq_updated, outq_notify, outq_msg )
+ values ( '%s', %d, %d, '%s', '%s', %d, '%s', '%s', '%s', '%s' )",
+ dbesc($hash),
+ intval($c[0]['channel_account_id']),
+ intval($c[0]['channel_id']),
+ dbesc('zot'),
+ dbesc($hub['hubloc_callback']),
+ intval(1),
+ dbesc(datetime_convert()),
+ dbesc(datetime_convert()),
+ dbesc($n),
+ dbesc($data_packet)
+ );
+
+ /*
+ * invoke delivery to send out the notify packet
+ */
+
+ proc_run('php','include/deliver.php',$hash);
+ }
+
+ }
+ $ret['success'] = true;
+ return $ret;
+}
diff --git a/index.php b/index.php
index 5a9ec1026..a13d22d8c 100755
--- a/index.php
+++ b/index.php
@@ -27,6 +27,10 @@ $a->install = ((file_exists('.htconfig.php') && filesize('.htconfig.php')) ? fal
@include(".htconfig.php");
+$a->timezone = ((x($default_timezone)) ? $default_timezone : 'UTC');
+date_default_timezone_set($a->timezone);
+
+
/**
*
* Try to open the database;
@@ -36,8 +40,8 @@ $a->install = ((file_exists('.htconfig.php') && filesize('.htconfig.php')) ? fal
require_once("include/dba/dba_driver.php");
if(! $a->install) {
- $db = dba_factory($db_host, $db_port, $db_user, $db_pass, $db_data, $a->install);
- unset($db_host, $db_port, $db_user, $db_pass, $db_data);
+ $db = dba_factory($db_host, $db_port, $db_user, $db_pass, $db_data, $db_type, $a->install);
+ unset($db_host, $db_port, $db_user, $db_pass, $db_data, $db_type);
/**
* Load configs from db. Overwrite configs from .htconfig.php
@@ -193,8 +197,9 @@ if(strlen($a->module)) {
*/
if(! $a->module_loaded) {
- if(file_exists("custom/{$a->module}.php")) {
- include_once("custom/{$a->module}.php");
+
+ if(file_exists("mod/site/{$a->module}.php")) {
+ include_once("mod/site/{$a->module}.php");
$a->module_loaded = true;
}
elseif(file_exists("mod/{$a->module}.php")) {
@@ -238,14 +243,6 @@ if(strlen($a->module)) {
}
}
-/**
- * load current theme info
- */
-$theme_info_file = "view/theme/".current_theme()."/php/theme.php";
-if (file_exists($theme_info_file)){
- require_once($theme_info_file);
-}
-
/* initialise content region */
@@ -277,12 +274,44 @@ if($a->module_loaded) {
$a->page['page_title'] = $a->module;
$placeholder = '';
+ /**
+ * No theme has been specified when calling the module_init functions
+ * For this reason, please restrict the use of templates to those which
+ * do not provide any presentation details - as themes will not be able
+ * to over-ride them.
+ */
+
if(function_exists($a->module . '_init')) {
call_hooks($a->module . '_mod_init', $placeholder);
$func = $a->module . '_init';
$func($a);
}
+ /**
+ * Do all theme initialiasion here before calling any additional module functions.
+ * The module_init function may have changed the theme.
+ * Additionally any page with a Comanche template may alter the theme.
+ * So we'll check for those now.
+ */
+
+
+ /**
+ * In case a page has overloaded a module, see if we already have a layout defined
+ * otherwise, if a PDL file exists for this module, use it
+ * The member may have also created a customised PDL that's stored in the config
+ */
+
+ load_pdl($a);
+
+ /**
+ * load current theme info
+ */
+
+ $theme_info_file = "view/theme/".current_theme()."/php/theme.php";
+ if (file_exists($theme_info_file)){
+ require_once($theme_info_file);
+ }
+
if(function_exists(str_replace('-','_',current_theme()) . '_init')) {
$func = str_replace('-','_',current_theme()) . '_init';
$func($a);
diff --git a/install/INSTALL.txt b/install/INSTALL.txt
index 946e83ca3..f5edf009f 100644
--- a/install/INSTALL.txt
+++ b/install/INSTALL.txt
@@ -1,4 +1,3 @@
-
Red Matrix Installation
We've tried very hard to ensure that the Red Matrix will run on commodity
@@ -46,47 +45,48 @@ allow you to use a non browser-valid certificate.
This restriction is incorporated because public posts from you may for example
contain references to images on your own hub. If your certificate is not known
by the internet browser of users they get a warning message complaining about
-some security issues. Although these complains are not the real truth - there
-are no security issues with your encryption! - the users may be confused,
-nerved or even worse may become scared about Red Matrix having security issues.
+the invalid certificate.
+
Free "browser-valid" certificates are available from providers such as StartSSL.
-
+
If you do NOT use SSL, there may be a delay of up to a minute for the initial
install script - while we check the SSL port to see if anything responds there.
When communicating with new sites, Red Matrix always attempts connection on the
-SSL port first, before falling back to a less secure connection.
+SSL port first, before falling back to a less secure connection. If you do not
+use SSL, your webserver must not listen on port 443 at all.
1. Requirements
- - Apache with mod-rewrite enabled and "AllowOverride All" so you can use a
-local .htaccess file
+ - Apache with mod-rewrite enabled and "AllowOverride All" so you can use a
+ local .htaccess file
- - PHP 5.3+. The later the better.
+ - PHP 5.3+. The later the better.
- - PHP *command line* access with register_argc_argv set to true in the
-php.ini file - and with no hosting provider restrictions on the use of exec()
-and proc_open().
+ - PHP *command line* access with register_argc_argv set to true in the
+ php.ini file - and with no hosting provider restrictions on the use of
+ exec() and proc_open().
- - curl, gd (with at least jpeg support), mysqli, mbstring, mcrypt, and openssl extensions. The imagick extension is not required but desirable.
+ - curl, gd (with at least jpeg and png support), mysqli, mbstring, mcrypt,
+ and openssl extensions. The imagick extension is not required but desirable.
- - some form of email server or email gateway such that PHP mail() works
+ - some form of email server or email gateway such that PHP mail() works
- - Mysql 5.x or MariaDB
+ - Mysql 5.x or MariaDB
+
+ - ability to schedule jobs with cron.
- - ability to schedule jobs with cron.
+ - Installation into a top-level domain or sub-domain (without a
+ directory/path component in the URL) is REQUIRED.
- - Installation into a top-level domain or sub-domain (without a
-directory/path component in the URL) is REQUIRED.
+2. Unpack the RedMatrix files into the root of your web server document area.
+
+ If you copy the directory tree to your webserver, make sure that you
+ also copy .htaccess - as "dot" files are often hidden and aren't normally
+ copied.
-2. Unpack the Red Matrix files into the root of your web server document area.
-
- - If you copy the directory tree to your webserver, make sure
- that you also copy .htaccess - as "dot" files are often hidden
- and aren't normally copied.
-
- - If you are able to do so, we recommend using git to clone the
- source repository rather than to use a packaged tar or zip file.
- This makes the software much easier to update. The Linux command
- to clone the repository into a directory "mywebsite" would be
+ - If you are able to do so, we recommend using git to clone the source
+ repository rather than to use a packaged tar or zip file. This makes the
+ software much easier to update. The Linux command to clone the repository
+ into a directory "mywebsite" would be
git clone https://github.com/friendica/red.git mywebsite
@@ -94,18 +94,20 @@ directory/path component in the URL) is REQUIRED.
git pull
- - make sure folders *store/[data]/smarty3* and *store* exist and are writable by webserver
+ - make sure folders *store/[data]/smarty3* and *store* exist and are
+ writable by the webserver
- mkdir -p "store/\[data\]/smarty3"
+ mkdir -p "store/[data]/smarty3"
chmod -R 777 store
- [This permission (777) is very dangerous and if you have sufficient
- privilege and knowledge you should make this directory writeable only
- by the webserver. In many shared hosting environments this may be
- difficult without opening a trouble ticket with your provider. The
- above permissions will allow the software to work, but are not
- optimal.]
+ [This permission (777) is very dangerous and if you have sufficient
+ privilege and knowledge you should make these directories writeable
+ only by the webserver and, if different, the user that will run the
+ cron job (see below). In many shared hosting environments this may be
+ difficult without opening a trouble ticket with your provider. The
+ above permissions will allow the software to work, but are not
+ optimal.]
- For installing addons
@@ -113,21 +115,20 @@ directory/path component in the URL) is REQUIRED.
cd mywebsite
- - Then you should clone the addon repository (separately)
+ - Then you should clone the addon repository (separately)
- git clone https://github.com/friendica/red-addons.git addon
+ git clone https://github.com/friendica/red-addons.git addon
- - For keeping the addon tree updated, you should be on you addon tree and issue a git pull
+ - For keeping the addon tree updated, you should be on you addon tree and
+ issue a git pull
cd mywebsite/addon
-
- git pull
+ git pull
3. Create an empty database and note the access details (hostname, username,
password, database name).
-
4. If you know in advance that it will be impossible for the web server to
write or create files in your web directory, create an empty file called
.htconfig.php and make it writable by the web server.
@@ -139,12 +140,12 @@ website.
6. *If* the automated installation fails for any reason, check the following:
- - ".htconfig.php" exists
- If not, edit htconfig.php and change system settings. Rename
-to .htconfig.php
+ - ".htconfig.php" exists
+ If not, edit htconfig.php and change system settings. Rename
+ to .htconfig.php
- Database is populated.
- If not, import the contents of "database.sql" with phpmyadmin
-or mysql command line
+ If not, import the contents of "database.sql" with phpmyadmin
+ or mysql command line
7. At this point visit your website again, and register your personal account.
Registration errors should all be recoverable automatically.
@@ -173,10 +174,10 @@ one shown, substituting for your unique paths and settings:
You can generally find the location of PHP by executing "which php". If you
have troubles with this section please contact your hosting provider for
-assistance. Friendica will not work correctly if you cannot perform this step.
+assistance. RedMatrix will not work correctly if you cannot perform this step.
-You should also be sure that $a->config['system']['php_path'] is set correctly, it should
-look like (changing it to the correct PHP location)
+You should also be sure that $a->config['system']['php_path'] is set correctly,
+it should look like (changing it to the correct PHP location)
$a->config['system']['php_path'] = '/usr/local/php53/bin/php';
@@ -193,20 +194,20 @@ $a->config['system']['php_path'] = '/usr/local/php53/bin/php';
"System is currently unavailable. Please try again later"
#####################################################################
- Check your database settings. It usually means your database could not
-be opened or accessed. If the database resides on the same machine, check that
+Check your database settings. It usually means your database could not be
+opened or accessed. If the database resides on the same machine, check that
the database server name is the word "localhost".
#####################################################################
- 500 Internal Error
#####################################################################
- This could be the result of one of our Apache directives not being
+This could be the result of one of our Apache directives not being
supported by your version of Apache. Examine your apache server logs.
Also check your file permissions. Your website and all contents must generally
be world-readable.
- It is likely that your web server reported the source of the problem in
+It is likely that your web server reported the source of the problem in
its error log files. Please review these system error logs to determine what
caused the problem. Often this will need to be resolved with your hosting
provider or (if self-hosted) your web server configuration.
@@ -215,23 +216,23 @@ provider or (if self-hosted) your web server configuration.
- 400 and 4xx "File not found" errors
#####################################################################
- First check your file permissions. Your website and all contents must
+First check your file permissions. Your website and all contents must
generally be world-readable.
- Ensure that mod-rewite is installed and working, and that your
+Ensure that mod-rewite is installed and working, and that your
.htaccess file is being used. To verify the latter, create a file test.out
-containing the word "test" in the top directory of Friendica, make it world
+containing the word "test" in the top directory of the RedMatrix, make it world
readable and point your web browser to
http://yoursitenamehere.com/test.out
- This file should be blocked. You should get a permission denied message.
+This file should be blocked. You should get a permission denied message.
- If you see the word "test" your Apache configuration is not allowing
-your .htaccess file to be used (there are rules in this file to block access
+If you see the word "test" your Apache configuration is not allowing your
+.htaccess file to be used (there are rules in this file to block access
to any file with .out at the end, as these are typically used for system logs).
- Make certain the .htaccess file exists and is readable by everybody, then
+Make certain the .htaccess file exists and is readable by everybody, then
look for the existence of "AllowOverride None" in the Apache server
configuration for your site. This will need to be changed to
"AllowOverride All".
@@ -244,7 +245,7 @@ likely that mod-rewrite is not installed in your web server or is not working.
% a2enmod rewrite
% /etc/init.d/apache2 restart
- Consult your hosting provider, experts on your particular Linux
+Consult your hosting provider, experts on your particular Linux
distribution or (if Windows) the provider of your Apache server software if
you need to change either of these and can not figure out how. There is
a lot of help available on the web. Google "mod-rewrite" along with the
@@ -256,7 +257,7 @@ name of your operating system distribution or Apache package.
due to permissions issues:
#####################################################################
- create an empty file with that name and give it world-write permission.
+create an empty file with that name and give it world-write permission.
For Linux:
% touch .htconfig.php
diff --git a/install/database-w-defaults-v1131.diff b/install/database-w-defaults-v1131.diff
new file mode 100644
index 000000000..c8870f9c4
--- /dev/null
+++ b/install/database-w-defaults-v1131.diff
@@ -0,0 +1,1914 @@
+*** database.sql Mon Sep 8 20:28:00 2014
+--- database-w-defaults.sql Sun Nov 9 19:20:32 2014
+***************
+*** 1,15 ****
+! SET SQL_MODE="NO_AUTO_VALUE_ON_ZERO";
+!
+! /*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
+! /*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
+! /*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
+! /*!40101 SET NAMES utf8 */;
+
+
+ CREATE TABLE IF NOT EXISTS `abook` (
+ `abook_id` int(10) unsigned NOT NULL AUTO_INCREMENT,
+! `abook_account` int(10) unsigned NOT NULL,
+! `abook_channel` int(10) unsigned NOT NULL,
+ `abook_xchan` char(255) NOT NULL DEFAULT '',
+ `abook_my_perms` int(11) NOT NULL DEFAULT '0',
+ `abook_their_perms` int(11) NOT NULL DEFAULT '0',
+--- 1,13 ----
+! -- --------------------------------------------------------
+
++ --
++ -- Table structure for table `abook`
++ --
+
+ CREATE TABLE IF NOT EXISTS `abook` (
+ `abook_id` int(10) unsigned NOT NULL AUTO_INCREMENT,
+! `abook_account` int(10) unsigned NOT NULL DEFAULT '0',
+! `abook_channel` int(10) unsigned NOT NULL DEFAULT '0',
+ `abook_xchan` char(255) NOT NULL DEFAULT '',
+ `abook_my_perms` int(11) NOT NULL DEFAULT '0',
+ `abook_their_perms` int(11) NOT NULL DEFAULT '0',
+***************
+*** 37,42 ****
+--- 35,46 ----
+ KEY `abook_rating` (`abook_rating`)
+ ) ENGINE=MyISAM DEFAULT CHARSET=utf8;
+
++ -- --------------------------------------------------------
++
++ --
++ -- Table structure for table `account`
++ --
++
+ CREATE TABLE IF NOT EXISTS `account` (
+ `account_id` int(10) unsigned NOT NULL AUTO_INCREMENT,
+ `account_parent` int(10) unsigned NOT NULL DEFAULT '0',
+***************
+*** 70,79 ****
+ KEY `account_password_changed` (`account_password_changed`)
+ ) ENGINE=MyISAM DEFAULT CHARSET=utf8;
+
+ CREATE TABLE IF NOT EXISTS `addon` (
+ `id` int(11) NOT NULL AUTO_INCREMENT,
+! `name` char(255) NOT NULL,
+! `version` char(255) NOT NULL,
+ `installed` tinyint(1) NOT NULL DEFAULT '0',
+ `hidden` tinyint(1) NOT NULL DEFAULT '0',
+ `timestamp` bigint(20) NOT NULL DEFAULT '0',
+--- 74,89 ----
+ KEY `account_password_changed` (`account_password_changed`)
+ ) ENGINE=MyISAM DEFAULT CHARSET=utf8;
+
++ -- --------------------------------------------------------
++
++ --
++ -- Table structure for table `addon`
++ --
++
+ CREATE TABLE IF NOT EXISTS `addon` (
+ `id` int(11) NOT NULL AUTO_INCREMENT,
+! `name` char(255) NOT NULL DEFAULT '',
+! `version` char(255) NOT NULL DEFAULT '',
+ `installed` tinyint(1) NOT NULL DEFAULT '0',
+ `hidden` tinyint(1) NOT NULL DEFAULT '0',
+ `timestamp` bigint(20) NOT NULL DEFAULT '0',
+***************
+*** 84,89 ****
+--- 94,104 ----
+ KEY `installed` (`installed`)
+ ) ENGINE=MyISAM DEFAULT CHARSET=utf8;
+
++ -- --------------------------------------------------------
++
++ --
++ -- Table structure for table `app`
++ --
+
+ CREATE TABLE IF NOT EXISTS `app` (
+ `id` int(11) NOT NULL AUTO_INCREMENT,
+***************
+*** 108,115 ****
+ KEY `app_version` (`app_version`),
+ KEY `app_channel` (`app_channel`),
+ KEY `app_price` (`app_price`)
+! ) ENGINE=MyISAM DEFAULT CHARSET=utf8;
+
+
+ CREATE TABLE IF NOT EXISTS `attach` (
+ `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
+--- 123,135 ----
+ KEY `app_version` (`app_version`),
+ KEY `app_channel` (`app_channel`),
+ KEY `app_price` (`app_price`)
+! ) ENGINE=MyISAM DEFAULT CHARSET=utf8;
+!
+! -- --------------------------------------------------------
+
++ --
++ -- Table structure for table `attach`
++ --
+
+ CREATE TABLE IF NOT EXISTS `attach` (
+ `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
+***************
+*** 145,166 ****
+ KEY `creator` (`creator`)
+ ) ENGINE=MyISAM DEFAULT CHARSET=utf8;
+
+ CREATE TABLE IF NOT EXISTS `auth_codes` (
+! `id` varchar(40) NOT NULL,
+! `client_id` varchar(20) NOT NULL,
+! `redirect_uri` varchar(200) NOT NULL,
+! `expires` int(11) NOT NULL,
+! `scope` varchar(250) NOT NULL,
+ PRIMARY KEY (`id`)
+ ) ENGINE=MyISAM DEFAULT CHARSET=utf8;
+
+ CREATE TABLE IF NOT EXISTS `cache` (
+! `k` char(255) NOT NULL,
+ `v` text NOT NULL,
+! `updated` datetime NOT NULL,
+ PRIMARY KEY (`k`)
+ ) ENGINE=MyISAM DEFAULT CHARSET=utf8;
+
+ CREATE TABLE IF NOT EXISTS `channel` (
+ `channel_id` int(10) unsigned NOT NULL AUTO_INCREMENT,
+ `channel_account_id` int(10) unsigned NOT NULL DEFAULT '0',
+--- 165,204 ----
+ KEY `creator` (`creator`)
+ ) ENGINE=MyISAM DEFAULT CHARSET=utf8;
+
++ -- --------------------------------------------------------
++
++ --
++ -- Table structure for table `auth_codes`
++ --
++
+ CREATE TABLE IF NOT EXISTS `auth_codes` (
+! `id` varchar(40) NOT NULL DEFAULT '',
+! `client_id` varchar(20) NOT NULL DEFAULT '',
+! `redirect_uri` varchar(200) NOT NULL DEFAULT '',
+! `expires` int(11) NOT NULL DEFAULT '0',
+! `scope` varchar(250) NOT NULL DEFAULT '',
+ PRIMARY KEY (`id`)
+ ) ENGINE=MyISAM DEFAULT CHARSET=utf8;
+
++ -- --------------------------------------------------------
++
++ --
++ -- Table structure for table `cache`
++ --
++
+ CREATE TABLE IF NOT EXISTS `cache` (
+! `k` char(255) NOT NULL DEFAULT '',
+ `v` text NOT NULL,
+! `updated` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
+ PRIMARY KEY (`k`)
+ ) ENGINE=MyISAM DEFAULT CHARSET=utf8;
+
++ -- --------------------------------------------------------
++
++ --
++ -- Table structure for table `channel`
++ --
++
+ CREATE TABLE IF NOT EXISTS `channel` (
+ `channel_id` int(10) unsigned NOT NULL AUTO_INCREMENT,
+ `channel_account_id` int(10) unsigned NOT NULL DEFAULT '0',
+***************
+*** 189,212 ****
+ `channel_allow_gid` mediumtext NOT NULL,
+ `channel_deny_cid` mediumtext NOT NULL,
+ `channel_deny_gid` mediumtext NOT NULL,
+! `channel_r_stream` int(10) unsigned NOT NULL DEFAULT '128',
+! `channel_r_profile` int(10) unsigned NOT NULL DEFAULT '128',
+! `channel_r_photos` int(10) unsigned NOT NULL DEFAULT '128',
+! `channel_r_abook` int(10) unsigned NOT NULL DEFAULT '128',
+! `channel_w_stream` int(10) unsigned NOT NULL DEFAULT '128',
+! `channel_w_wall` int(10) unsigned NOT NULL DEFAULT '128',
+! `channel_w_tagwall` int(10) unsigned NOT NULL DEFAULT '128',
+! `channel_w_comment` int(10) unsigned NOT NULL DEFAULT '128',
+! `channel_w_mail` int(10) unsigned NOT NULL DEFAULT '128',
+! `channel_w_photos` int(10) unsigned NOT NULL DEFAULT '128',
+! `channel_w_chat` int(10) unsigned NOT NULL DEFAULT '128',
+ `channel_a_delegate` int(10) unsigned NOT NULL DEFAULT '0',
+! `channel_r_storage` int(10) unsigned NOT NULL DEFAULT '128',
+! `channel_w_storage` int(10) unsigned NOT NULL DEFAULT '128',
+! `channel_r_pages` int(10) unsigned NOT NULL DEFAULT '128',
+! `channel_w_pages` int(10) unsigned NOT NULL DEFAULT '128',
+! `channel_a_republish` int(10) unsigned NOT NULL DEFAULT '128',
+! `channel_w_like` int(10) unsigned NOT NULL DEFAULT '128',
+ PRIMARY KEY (`channel_id`),
+ UNIQUE KEY `channel_address_unique` (`channel_address`),
+ KEY `channel_account_id` (`channel_account_id`),
+--- 227,250 ----
+ `channel_allow_gid` mediumtext NOT NULL,
+ `channel_deny_cid` mediumtext NOT NULL,
+ `channel_deny_gid` mediumtext NOT NULL,
+! `channel_r_stream` int(10) unsigned NOT NULL DEFAULT '0',
+! `channel_r_profile` int(10) unsigned NOT NULL DEFAULT '0',
+! `channel_r_photos` int(10) unsigned NOT NULL DEFAULT '0',
+! `channel_r_abook` int(10) unsigned NOT NULL DEFAULT '0',
+! `channel_w_stream` int(10) unsigned NOT NULL DEFAULT '0',
+! `channel_w_wall` int(10) unsigned NOT NULL DEFAULT '0',
+! `channel_w_tagwall` int(10) unsigned NOT NULL DEFAULT '0',
+! `channel_w_comment` int(10) unsigned NOT NULL DEFAULT '0',
+! `channel_w_mail` int(10) unsigned NOT NULL DEFAULT '0',
+! `channel_w_photos` int(10) unsigned NOT NULL DEFAULT '0',
+! `channel_w_chat` int(10) unsigned NOT NULL DEFAULT '0',
+ `channel_a_delegate` int(10) unsigned NOT NULL DEFAULT '0',
+! `channel_r_storage` int(10) unsigned NOT NULL DEFAULT '0',
+! `channel_w_storage` int(10) unsigned NOT NULL DEFAULT '0',
+! `channel_r_pages` int(10) unsigned NOT NULL DEFAULT '0',
+! `channel_w_pages` int(10) unsigned NOT NULL DEFAULT '0',
+! `channel_a_republish` int(10) unsigned NOT NULL DEFAULT '0',
+! `channel_w_like` int(10) unsigned NOT NULL DEFAULT '0',
+ PRIMARY KEY (`channel_id`),
+ UNIQUE KEY `channel_address_unique` (`channel_address`),
+ KEY `channel_account_id` (`channel_account_id`),
+***************
+*** 241,250 ****
+ KEY `channel_w_pages` (`channel_w_pages`),
+ KEY `channel_deleted` (`channel_deleted`),
+ KEY `channel_a_republish` (`channel_a_republish`),
+! KEY `channel_w_like` (`channel_w_like`),
+! KEY `channel_dirdate` (`channel_dirdate`)
+ ) ENGINE=MyISAM DEFAULT CHARSET=utf8;
+
+ CREATE TABLE IF NOT EXISTS `chat` (
+ `chat_id` int(10) unsigned NOT NULL AUTO_INCREMENT,
+ `chat_room` int(10) unsigned NOT NULL DEFAULT '0',
+--- 279,294 ----
+ KEY `channel_w_pages` (`channel_w_pages`),
+ KEY `channel_deleted` (`channel_deleted`),
+ KEY `channel_a_republish` (`channel_a_republish`),
+! KEY `channel_dirdate` (`channel_dirdate`),
+! KEY `channel_w_like` (`channel_w_like`)
+ ) ENGINE=MyISAM DEFAULT CHARSET=utf8;
+
++ -- --------------------------------------------------------
++
++ --
++ -- Table structure for table `chat`
++ --
++
+ CREATE TABLE IF NOT EXISTS `chat` (
+ `chat_id` int(10) unsigned NOT NULL AUTO_INCREMENT,
+ `chat_room` int(10) unsigned NOT NULL DEFAULT '0',
+***************
+*** 255,275 ****
+ KEY `chat_room` (`chat_room`),
+ KEY `chat_xchan` (`chat_xchan`),
+ KEY `created` (`created`)
+! ) ENGINE=MyISAM DEFAULT CHARSET=utf8;
+
+ CREATE TABLE IF NOT EXISTS `chatpresence` (
+ `cp_id` int(10) unsigned NOT NULL AUTO_INCREMENT,
+ `cp_room` int(10) unsigned NOT NULL DEFAULT '0',
+ `cp_xchan` char(255) NOT NULL DEFAULT '',
+ `cp_last` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
+! `cp_status` char(255) NOT NULL,
+ `cp_client` char(128) NOT NULL DEFAULT '',
+ PRIMARY KEY (`cp_id`),
+ KEY `cp_room` (`cp_room`),
+ KEY `cp_xchan` (`cp_xchan`),
+ KEY `cp_last` (`cp_last`),
+ KEY `cp_status` (`cp_status`)
+! ) ENGINE=MyISAM DEFAULT CHARSET=utf8;
+
+ CREATE TABLE IF NOT EXISTS `chatroom` (
+ `cr_id` int(10) unsigned NOT NULL AUTO_INCREMENT,
+--- 299,331 ----
+ KEY `chat_room` (`chat_room`),
+ KEY `chat_xchan` (`chat_xchan`),
+ KEY `created` (`created`)
+! ) ENGINE=MyISAM DEFAULT CHARSET=utf8;
+!
+! -- --------------------------------------------------------
+!
+! --
+! -- Table structure for table `chatpresence`
+! --
+
+ CREATE TABLE IF NOT EXISTS `chatpresence` (
+ `cp_id` int(10) unsigned NOT NULL AUTO_INCREMENT,
+ `cp_room` int(10) unsigned NOT NULL DEFAULT '0',
+ `cp_xchan` char(255) NOT NULL DEFAULT '',
+ `cp_last` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
+! `cp_status` char(255) NOT NULL DEFAULT '',
+ `cp_client` char(128) NOT NULL DEFAULT '',
+ PRIMARY KEY (`cp_id`),
+ KEY `cp_room` (`cp_room`),
+ KEY `cp_xchan` (`cp_xchan`),
+ KEY `cp_last` (`cp_last`),
+ KEY `cp_status` (`cp_status`)
+! ) ENGINE=MyISAM DEFAULT CHARSET=utf8;
+!
+! -- --------------------------------------------------------
+!
+! --
+! -- Table structure for table `chatroom`
+! --
+
+ CREATE TABLE IF NOT EXISTS `chatroom` (
+ `cr_id` int(10) unsigned NOT NULL AUTO_INCREMENT,
+***************
+*** 290,322 ****
+ KEY `cr_created` (`cr_created`),
+ KEY `cr_edited` (`cr_edited`),
+ KEY `cr_expire` (`cr_expire`)
+! ) ENGINE=MyISAM DEFAULT CHARSET=utf8;
+
+ CREATE TABLE IF NOT EXISTS `clients` (
+! `client_id` varchar(20) NOT NULL,
+! `pw` varchar(20) NOT NULL,
+! `redirect_uri` varchar(200) NOT NULL,
+ `name` text,
+ `icon` text,
+ `uid` int(11) NOT NULL DEFAULT '0',
+ PRIMARY KEY (`client_id`)
+ ) ENGINE=MyISAM DEFAULT CHARSET=utf8;
+
+ CREATE TABLE IF NOT EXISTS `config` (
+ `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
+! `cat` char(255) CHARACTER SET ascii NOT NULL,
+! `k` char(255) CHARACTER SET ascii NOT NULL,
+ `v` text NOT NULL,
+ PRIMARY KEY (`id`),
+ UNIQUE KEY `access` (`cat`,`k`)
+ ) ENGINE=MyISAM DEFAULT CHARSET=utf8;
+
+ CREATE TABLE IF NOT EXISTS `conv` (
+ `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
+! `guid` char(255) NOT NULL,
+ `recips` mediumtext NOT NULL,
+! `uid` int(11) NOT NULL,
+! `creator` char(255) NOT NULL,
+ `created` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
+ `updated` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
+ `subject` mediumtext NOT NULL,
+--- 346,396 ----
+ KEY `cr_created` (`cr_created`),
+ KEY `cr_edited` (`cr_edited`),
+ KEY `cr_expire` (`cr_expire`)
+! ) ENGINE=MyISAM DEFAULT CHARSET=utf8;
+!
+! -- --------------------------------------------------------
+!
+! --
+! -- Table structure for table `clients`
+! --
+
+ CREATE TABLE IF NOT EXISTS `clients` (
+! `client_id` varchar(20) NOT NULL DEFAULT '',
+! `pw` varchar(20) NOT NULL DEFAULT '',
+! `redirect_uri` varchar(200) NOT NULL DEFAULT '',
+ `name` text,
+ `icon` text,
+ `uid` int(11) NOT NULL DEFAULT '0',
+ PRIMARY KEY (`client_id`)
+ ) ENGINE=MyISAM DEFAULT CHARSET=utf8;
+
++ -- --------------------------------------------------------
++
++ --
++ -- Table structure for table `config`
++ --
++
+ CREATE TABLE IF NOT EXISTS `config` (
+ `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
+! `cat` char(255) CHARACTER SET ascii NOT NULL DEFAULT '',
+! `k` char(255) CHARACTER SET ascii NOT NULL DEFAULT '',
+ `v` text NOT NULL,
+ PRIMARY KEY (`id`),
+ UNIQUE KEY `access` (`cat`,`k`)
+ ) ENGINE=MyISAM DEFAULT CHARSET=utf8;
+
++ -- --------------------------------------------------------
++
++ --
++ -- Table structure for table `conv`
++ --
++
+ CREATE TABLE IF NOT EXISTS `conv` (
+ `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
+! `guid` char(255) NOT NULL DEFAULT '',
+ `recips` mediumtext NOT NULL,
+! `uid` int(11) NOT NULL DEFAULT '0',
+! `creator` char(255) NOT NULL DEFAULT '',
+ `created` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
+ `updated` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
+ `subject` mediumtext NOT NULL,
+***************
+*** 325,344 ****
+ KEY `updated` (`updated`)
+ ) ENGINE=MyISAM DEFAULT CHARSET=utf8;
+
+ CREATE TABLE IF NOT EXISTS `event` (
+ `id` int(11) NOT NULL AUTO_INCREMENT,
+ `aid` int(10) unsigned NOT NULL DEFAULT '0',
+! `uid` int(11) NOT NULL,
+ `event_xchan` char(255) NOT NULL DEFAULT '',
+ `event_hash` char(255) NOT NULL DEFAULT '',
+! `created` datetime NOT NULL,
+! `edited` datetime NOT NULL,
+! `start` datetime NOT NULL,
+! `finish` datetime NOT NULL,
+ `summary` text NOT NULL,
+ `description` text NOT NULL,
+ `location` text NOT NULL,
+! `type` char(255) NOT NULL,
+ `nofinish` tinyint(1) NOT NULL DEFAULT '0',
+ `adjust` tinyint(1) NOT NULL DEFAULT '1',
+ `ignore` tinyint(1) NOT NULL DEFAULT '0',
+--- 399,424 ----
+ KEY `updated` (`updated`)
+ ) ENGINE=MyISAM DEFAULT CHARSET=utf8;
+
++ -- --------------------------------------------------------
++
++ --
++ -- Table structure for table `event`
++ --
++
+ CREATE TABLE IF NOT EXISTS `event` (
+ `id` int(11) NOT NULL AUTO_INCREMENT,
+ `aid` int(10) unsigned NOT NULL DEFAULT '0',
+! `uid` int(11) NOT NULL DEFAULT '0',
+ `event_xchan` char(255) NOT NULL DEFAULT '',
+ `event_hash` char(255) NOT NULL DEFAULT '',
+! `created` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
+! `edited` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
+! `start` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
+! `finish` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
+ `summary` text NOT NULL,
+ `description` text NOT NULL,
+ `location` text NOT NULL,
+! `type` char(255) NOT NULL DEFAULT '',
+ `nofinish` tinyint(1) NOT NULL DEFAULT '0',
+ `adjust` tinyint(1) NOT NULL DEFAULT '1',
+ `ignore` tinyint(1) NOT NULL DEFAULT '0',
+***************
+*** 357,363 ****
+ KEY `aid` (`aid`),
+ KEY `event_hash` (`event_hash`),
+ KEY `event_xchan` (`event_xchan`)
+! ) ENGINE=MyISAM DEFAULT CHARSET=utf8;
+
+ CREATE TABLE IF NOT EXISTS `fcontact` (
+ `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
+--- 437,449 ----
+ KEY `aid` (`aid`),
+ KEY `event_hash` (`event_hash`),
+ KEY `event_xchan` (`event_xchan`)
+! ) ENGINE=MyISAM DEFAULT CHARSET=utf8;
+!
+! -- --------------------------------------------------------
+!
+! --
+! -- Table structure for table `fcontact`
+! --
+
+ CREATE TABLE IF NOT EXISTS `fcontact` (
+ `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
+***************
+*** 381,386 ****
+--- 467,478 ----
+ KEY `network` (`network`)
+ ) ENGINE=MyISAM DEFAULT CHARSET=utf8;
+
++ -- --------------------------------------------------------
++
++ --
++ -- Table structure for table `ffinder`
++ --
++
+ CREATE TABLE IF NOT EXISTS `ffinder` (
+ `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
+ `uid` int(10) unsigned NOT NULL,
+***************
+*** 392,427 ****
+ KEY `fid` (`fid`)
+ ) ENGINE=MyISAM DEFAULT CHARSET=utf8;
+
+ CREATE TABLE IF NOT EXISTS `fserver` (
+ `id` int(11) NOT NULL AUTO_INCREMENT,
+! `server` char(255) NOT NULL,
+! `posturl` char(255) NOT NULL,
+ `key` text NOT NULL,
+ PRIMARY KEY (`id`),
+ KEY `server` (`server`),
+ KEY `posturl` (`posturl`)
+ ) ENGINE=MyISAM DEFAULT CHARSET=utf8;
+
+ CREATE TABLE IF NOT EXISTS `fsuggest` (
+ `id` int(11) NOT NULL AUTO_INCREMENT,
+! `uid` int(11) NOT NULL,
+! `cid` int(11) NOT NULL,
+! `name` char(255) NOT NULL,
+! `url` char(255) NOT NULL,
+! `request` char(255) NOT NULL,
+! `photo` char(255) NOT NULL,
+ `note` text NOT NULL,
+! `created` datetime NOT NULL,
+ PRIMARY KEY (`id`)
+ ) ENGINE=MyISAM DEFAULT CHARSET=utf8;
+
+ CREATE TABLE IF NOT EXISTS `groups` (
+ `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
+ `hash` char(255) NOT NULL DEFAULT '',
+! `uid` int(10) unsigned NOT NULL,
+ `visible` tinyint(1) NOT NULL DEFAULT '0',
+ `deleted` tinyint(1) NOT NULL DEFAULT '0',
+! `name` char(255) NOT NULL,
+ PRIMARY KEY (`id`),
+ KEY `uid` (`uid`),
+ KEY `visible` (`visible`),
+--- 484,537 ----
+ KEY `fid` (`fid`)
+ ) ENGINE=MyISAM DEFAULT CHARSET=utf8;
+
++ -- --------------------------------------------------------
++
++ --
++ -- Table structure for table `fserver`
++ --
++
+ CREATE TABLE IF NOT EXISTS `fserver` (
+ `id` int(11) NOT NULL AUTO_INCREMENT,
+! `server` char(255) NOT NULL DEFAULT '',
+! `posturl` char(255) NOT NULL DEFAULT '',
+ `key` text NOT NULL,
+ PRIMARY KEY (`id`),
+ KEY `server` (`server`),
+ KEY `posturl` (`posturl`)
+ ) ENGINE=MyISAM DEFAULT CHARSET=utf8;
+
++ -- --------------------------------------------------------
++
++ --
++ -- Table structure for table `fsuggest`
++ --
++
+ CREATE TABLE IF NOT EXISTS `fsuggest` (
+ `id` int(11) NOT NULL AUTO_INCREMENT,
+! `uid` int(11) NOT NULL DEFAULT '0',
+! `cid` int(11) NOT NULL DEFAULT '0',
+! `name` char(255) NOT NULL DEFAULT '',
+! `url` char(255) NOT NULL DEFAULT '',
+! `request` char(255) NOT NULL DEFAULT '',
+! `photo` char(255) NOT NULL DEFAULT '',
+ `note` text NOT NULL,
+! `created` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
+ PRIMARY KEY (`id`)
+ ) ENGINE=MyISAM DEFAULT CHARSET=utf8;
+
++ -- --------------------------------------------------------
++
++ --
++ -- Table structure for table `groups`
++ --
++
+ CREATE TABLE IF NOT EXISTS `groups` (
+ `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
+ `hash` char(255) NOT NULL DEFAULT '',
+! `uid` int(10) unsigned NOT NULL DEFAULT '0',
+ `visible` tinyint(1) NOT NULL DEFAULT '0',
+ `deleted` tinyint(1) NOT NULL DEFAULT '0',
+! `name` char(255) NOT NULL DEFAULT '',
+ PRIMARY KEY (`id`),
+ KEY `uid` (`uid`),
+ KEY `visible` (`visible`),
+***************
+*** 429,438 ****
+ KEY `hash` (`hash`)
+ ) ENGINE=MyISAM DEFAULT CHARSET=utf8;
+
+ CREATE TABLE IF NOT EXISTS `group_member` (
+ `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
+! `uid` int(10) unsigned NOT NULL,
+! `gid` int(10) unsigned NOT NULL,
+ `xchan` char(255) NOT NULL DEFAULT '',
+ PRIMARY KEY (`id`),
+ KEY `uid` (`uid`),
+--- 539,554 ----
+ KEY `hash` (`hash`)
+ ) ENGINE=MyISAM DEFAULT CHARSET=utf8;
+
++ -- --------------------------------------------------------
++
++ --
++ -- Table structure for table `group_member`
++ --
++
+ CREATE TABLE IF NOT EXISTS `group_member` (
+ `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
+! `uid` int(10) unsigned NOT NULL DEFAULT '0',
+! `gid` int(10) unsigned NOT NULL DEFAULT '0',
+ `xchan` char(255) NOT NULL DEFAULT '',
+ PRIMARY KEY (`id`),
+ KEY `uid` (`uid`),
+***************
+*** 440,460 ****
+ KEY `xchan` (`xchan`)
+ ) ENGINE=MyISAM DEFAULT CHARSET=utf8;
+
+ CREATE TABLE IF NOT EXISTS `hook` (
+ `id` int(11) NOT NULL AUTO_INCREMENT,
+! `hook` char(255) NOT NULL,
+! `file` char(255) NOT NULL,
+! `function` char(255) NOT NULL,
+ `priority` int(11) unsigned NOT NULL DEFAULT '0',
+ PRIMARY KEY (`id`),
+ KEY `hook` (`hook`)
+ ) ENGINE=MyISAM DEFAULT CHARSET=utf8;
+
+ CREATE TABLE IF NOT EXISTS `hubloc` (
+ `hubloc_id` int(10) unsigned NOT NULL AUTO_INCREMENT,
+ `hubloc_guid` char(255) NOT NULL DEFAULT '',
+ `hubloc_guid_sig` text NOT NULL,
+! `hubloc_hash` char(255) NOT NULL,
+ `hubloc_addr` char(255) NOT NULL DEFAULT '',
+ `hubloc_network` char(32) NOT NULL DEFAULT '',
+ `hubloc_flags` int(10) unsigned NOT NULL DEFAULT '0',
+--- 556,588 ----
+ KEY `xchan` (`xchan`)
+ ) ENGINE=MyISAM DEFAULT CHARSET=utf8;
+
++ -- --------------------------------------------------------
++
++ --
++ -- Table structure for table `hook`
++ --
++
+ CREATE TABLE IF NOT EXISTS `hook` (
+ `id` int(11) NOT NULL AUTO_INCREMENT,
+! `hook` char(255) NOT NULL DEFAULT '',
+! `file` char(255) NOT NULL DEFAULT '',
+! `function` char(255) NOT NULL DEFAULT '',
+ `priority` int(11) unsigned NOT NULL DEFAULT '0',
+ PRIMARY KEY (`id`),
+ KEY `hook` (`hook`)
+ ) ENGINE=MyISAM DEFAULT CHARSET=utf8;
+
++ -- --------------------------------------------------------
++
++ --
++ -- Table structure for table `hubloc`
++ --
++
+ CREATE TABLE IF NOT EXISTS `hubloc` (
+ `hubloc_id` int(10) unsigned NOT NULL AUTO_INCREMENT,
+ `hubloc_guid` char(255) NOT NULL DEFAULT '',
+ `hubloc_guid_sig` text NOT NULL,
+! `hubloc_hash` char(255) NOT NULL DEFAULT '',
+ `hubloc_addr` char(255) NOT NULL DEFAULT '',
+ `hubloc_network` char(32) NOT NULL DEFAULT '',
+ `hubloc_flags` int(10) unsigned NOT NULL DEFAULT '0',
+***************
+*** 474,493 ****
+ KEY `hubloc_connect` (`hubloc_connect`),
+ KEY `hubloc_host` (`hubloc_host`),
+ KEY `hubloc_addr` (`hubloc_addr`),
+- KEY `hubloc_network` (`hubloc_network`),
+ KEY `hubloc_updated` (`hubloc_updated`),
+ KEY `hubloc_connected` (`hubloc_connected`),
+! KEY `hubloc_status` (`hubloc_status`)
+ ) ENGINE=MyISAM DEFAULT CHARSET=utf8;
+
+ CREATE TABLE IF NOT EXISTS `issue` (
+ `issue_id` int(10) unsigned NOT NULL AUTO_INCREMENT,
+ `issue_created` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
+ `issue_updated` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
+! `issue_assigned` char(255) NOT NULL,
+! `issue_priority` int(11) NOT NULL,
+! `issue_status` int(11) NOT NULL,
+! `issue_component` char(255) NOT NULL,
+ PRIMARY KEY (`issue_id`),
+ KEY `issue_created` (`issue_created`),
+ KEY `issue_updated` (`issue_updated`),
+--- 602,627 ----
+ KEY `hubloc_connect` (`hubloc_connect`),
+ KEY `hubloc_host` (`hubloc_host`),
+ KEY `hubloc_addr` (`hubloc_addr`),
+ KEY `hubloc_updated` (`hubloc_updated`),
+ KEY `hubloc_connected` (`hubloc_connected`),
+! KEY `hubloc_status` (`hubloc_status`),
+! KEY `hubloc_network` (`hubloc_network`)
+ ) ENGINE=MyISAM DEFAULT CHARSET=utf8;
+
++ -- --------------------------------------------------------
++
++ --
++ -- Table structure for table `issue`
++ --
++
+ CREATE TABLE IF NOT EXISTS `issue` (
+ `issue_id` int(10) unsigned NOT NULL AUTO_INCREMENT,
+ `issue_created` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
+ `issue_updated` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
+! `issue_assigned` char(255) NOT NULL DEFAULT '',
+! `issue_priority` int(11) NOT NULL DEFAULT '0',
+! `issue_status` int(11) NOT NULL DEFAULT '0',
+! `issue_component` char(255) NOT NULL DEFAULT '',
+ PRIMARY KEY (`issue_id`),
+ KEY `issue_created` (`issue_created`),
+ KEY `issue_updated` (`issue_updated`),
+***************
+*** 497,502 ****
+--- 631,642 ----
+ KEY `issue_component` (`issue_component`)
+ ) ENGINE=MyISAM DEFAULT CHARSET=utf8;
+
++ -- --------------------------------------------------------
++
++ --
++ -- Table structure for table `item`
++ --
++
+ CREATE TABLE IF NOT EXISTS `item` (
+ `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
+ `mid` char(255) CHARACTER SET ascii NOT NULL DEFAULT '',
+***************
+*** 516,549 ****
+ `author_xchan` char(255) NOT NULL DEFAULT '',
+ `source_xchan` char(255) NOT NULL DEFAULT '',
+ `mimetype` char(255) NOT NULL DEFAULT '',
+! `title` text NOT NULL DEFAULT '',
+! `body` mediumtext NOT NULL DEFAULT '',
+ `app` char(255) NOT NULL DEFAULT '',
+ `lang` char(64) NOT NULL DEFAULT '',
+ `revision` int(10) unsigned NOT NULL DEFAULT '0',
+ `verb` char(255) NOT NULL DEFAULT '',
+ `obj_type` char(255) NOT NULL DEFAULT '',
+! `object` text NOT NULL DEFAULT '',
+ `tgt_type` char(255) NOT NULL DEFAULT '',
+! `target` text NOT NULL DEFAULT '',
+ `layout_mid` char(255) NOT NULL DEFAULT '',
+! `postopts` text NOT NULL DEFAULT '',
+! `route` text NOT NULL DEFAULT '',
+ `llink` char(255) NOT NULL DEFAULT '',
+ `plink` char(255) NOT NULL DEFAULT '',
+ `resource_id` char(255) NOT NULL DEFAULT '',
+ `resource_type` char(16) NOT NULL DEFAULT '',
+! `attach` mediumtext NOT NULL DEFAULT '',
+! `sig` text NOT NULL DEFAULT '',
+! `diaspora_meta` mediumtext NOT NULL DEFAULT '',
+ `location` char(255) NOT NULL DEFAULT '',
+ `coord` char(255) NOT NULL DEFAULT '',
+ `public_policy` char(255) NOT NULL DEFAULT '',
+ `comment_policy` char(255) NOT NULL DEFAULT '',
+! `allow_cid` mediumtext NOT NULL DEFAULT '',
+! `allow_gid` mediumtext NOT NULL DEFAULT '',
+! `deny_cid` mediumtext NOT NULL DEFAULT '',
+! `deny_gid` mediumtext NOT NULL DEFAULT '',
+ `item_restrict` int(11) NOT NULL DEFAULT '0',
+ `item_flags` int(11) NOT NULL DEFAULT '0',
+ `item_private` tinyint(4) NOT NULL DEFAULT '0',
+--- 656,689 ----
+ `author_xchan` char(255) NOT NULL DEFAULT '',
+ `source_xchan` char(255) NOT NULL DEFAULT '',
+ `mimetype` char(255) NOT NULL DEFAULT '',
+! `title` text NOT NULL,
+! `body` mediumtext NOT NULL,
+ `app` char(255) NOT NULL DEFAULT '',
+ `lang` char(64) NOT NULL DEFAULT '',
+ `revision` int(10) unsigned NOT NULL DEFAULT '0',
+ `verb` char(255) NOT NULL DEFAULT '',
+ `obj_type` char(255) NOT NULL DEFAULT '',
+! `object` text NOT NULL,
+ `tgt_type` char(255) NOT NULL DEFAULT '',
+! `target` text NOT NULL,
+ `layout_mid` char(255) NOT NULL DEFAULT '',
+! `postopts` text NOT NULL,
+! `route` text NOT NULL,
+ `llink` char(255) NOT NULL DEFAULT '',
+ `plink` char(255) NOT NULL DEFAULT '',
+ `resource_id` char(255) NOT NULL DEFAULT '',
+ `resource_type` char(16) NOT NULL DEFAULT '',
+! `attach` mediumtext NOT NULL,
+! `sig` text NOT NULL,
+! `diaspora_meta` mediumtext NOT NULL,
+ `location` char(255) NOT NULL DEFAULT '',
+ `coord` char(255) NOT NULL DEFAULT '',
+ `public_policy` char(255) NOT NULL DEFAULT '',
+ `comment_policy` char(255) NOT NULL DEFAULT '',
+! `allow_cid` mediumtext NOT NULL,
+! `allow_gid` mediumtext NOT NULL,
+! `deny_cid` mediumtext NOT NULL,
+! `deny_gid` mediumtext NOT NULL,
+ `item_restrict` int(11) NOT NULL DEFAULT '0',
+ `item_flags` int(11) NOT NULL DEFAULT '0',
+ `item_private` tinyint(4) NOT NULL DEFAULT '0',
+***************
+*** 555,562 ****
+ KEY `received` (`received`),
+ KEY `uid_commented` (`uid`,`commented`),
+ KEY `uid_created` (`uid`,`created`),
+- KEY `changed` (`changed`),
+- KEY `comments_closed` (`comments_closed`),
+ KEY `aid` (`aid`),
+ KEY `owner_xchan` (`owner_xchan`),
+ KEY `author_xchan` (`author_xchan`),
+--- 695,700 ----
+***************
+*** 573,581 ****
+ KEY `mid` (`mid`),
+ KEY `parent_mid` (`parent_mid`),
+ KEY `uid_mid` (`mid`,`uid`),
+- KEY `public_policy` (`public_policy`),
+ KEY `comment_policy` (`comment_policy`),
+ KEY `layout_mid` (`layout_mid`),
+ FULLTEXT KEY `title` (`title`),
+ FULLTEXT KEY `body` (`body`),
+ FULLTEXT KEY `allow_cid` (`allow_cid`),
+--- 711,721 ----
+ KEY `mid` (`mid`),
+ KEY `parent_mid` (`parent_mid`),
+ KEY `uid_mid` (`mid`,`uid`),
+ KEY `comment_policy` (`comment_policy`),
+ KEY `layout_mid` (`layout_mid`),
++ KEY `public_policy` (`public_policy`),
++ KEY `comments_closed` (`comments_closed`),
++ KEY `changed` (`changed`),
+ FULLTEXT KEY `title` (`title`),
+ FULLTEXT KEY `body` (`body`),
+ FULLTEXT KEY `allow_cid` (`allow_cid`),
+***************
+*** 584,595 ****
+ FULLTEXT KEY `deny_gid` (`deny_gid`)
+ ) ENGINE=MyISAM DEFAULT CHARSET=utf8;
+
+ CREATE TABLE IF NOT EXISTS `item_id` (
+ `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
+! `iid` int(11) NOT NULL,
+! `uid` int(11) NOT NULL,
+! `sid` char(255) NOT NULL,
+! `service` char(255) NOT NULL,
+ PRIMARY KEY (`id`),
+ KEY `uid` (`uid`),
+ KEY `sid` (`sid`),
+--- 724,741 ----
+ FULLTEXT KEY `deny_gid` (`deny_gid`)
+ ) ENGINE=MyISAM DEFAULT CHARSET=utf8;
+
++ -- --------------------------------------------------------
++
++ --
++ -- Table structure for table `item_id`
++ --
++
+ CREATE TABLE IF NOT EXISTS `item_id` (
+ `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
+! `iid` int(11) NOT NULL DEFAULT '0',
+! `uid` int(11) NOT NULL DEFAULT '0',
+! `sid` char(255) NOT NULL DEFAULT '',
+! `service` char(255) NOT NULL DEFAULT '',
+ PRIMARY KEY (`id`),
+ KEY `uid` (`uid`),
+ KEY `sid` (`sid`),
+***************
+*** 597,621 ****
+ KEY `iid` (`iid`)
+ ) ENGINE=MyISAM DEFAULT CHARSET=utf8;
+
+ CREATE TABLE IF NOT EXISTS `likes` (
+ `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
+! `channel_id` int(11) unsigned NOT NULL DEFAULT '0',
+ `liker` char(128) NOT NULL DEFAULT '',
+ `likee` char(128) NOT NULL DEFAULT '',
+! `iid` int(10) unsigned NOT NULL DEFAULT '0',
+ `verb` char(255) NOT NULL DEFAULT '',
+ `target_type` char(255) NOT NULL DEFAULT '',
+ `target_id` char(128) NOT NULL DEFAULT '',
+ `target` mediumtext NOT NULL,
+ PRIMARY KEY (`id`),
+- KEY `channel_id` (`channel_id`),
+ KEY `liker` (`liker`),
+ KEY `likee` (`likee`),
+ KEY `iid` (`iid`),
+ KEY `verb` (`verb`),
+ KEY `target_type` (`target_type`),
+ KEY `target_id` (`target_id`)
+! ) ENGINE=MyISAM DEFAULT CHARSET=utf8;
+
+ CREATE TABLE IF NOT EXISTS `mail` (
+ `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
+--- 743,779 ----
+ KEY `iid` (`iid`)
+ ) ENGINE=MyISAM DEFAULT CHARSET=utf8;
+
++ -- --------------------------------------------------------
++
++ --
++ -- Table structure for table `likes`
++ --
++
+ CREATE TABLE IF NOT EXISTS `likes` (
+ `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
+! `channel_id` int(10) unsigned NOT NULL DEFAULT '0',
+ `liker` char(128) NOT NULL DEFAULT '',
+ `likee` char(128) NOT NULL DEFAULT '',
+! `iid` int(11) unsigned NOT NULL DEFAULT '0',
+ `verb` char(255) NOT NULL DEFAULT '',
+ `target_type` char(255) NOT NULL DEFAULT '',
+ `target_id` char(128) NOT NULL DEFAULT '',
+ `target` mediumtext NOT NULL,
+ PRIMARY KEY (`id`),
+ KEY `liker` (`liker`),
+ KEY `likee` (`likee`),
+ KEY `iid` (`iid`),
+ KEY `verb` (`verb`),
+ KEY `target_type` (`target_type`),
++ KEY `channel_id` (`channel_id`),
+ KEY `target_id` (`target_id`)
+! ) ENGINE=MyISAM DEFAULT CHARSET=utf8;
+!
+! -- --------------------------------------------------------
+!
+! --
+! -- Table structure for table `mail`
+! --
+
+ CREATE TABLE IF NOT EXISTS `mail` (
+ `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
+***************
+*** 624,639 ****
+ `from_xchan` char(255) NOT NULL DEFAULT '',
+ `to_xchan` char(255) NOT NULL DEFAULT '',
+ `account_id` int(10) unsigned NOT NULL DEFAULT '0',
+! `channel_id` int(10) unsigned NOT NULL,
+ `title` text NOT NULL,
+ `body` mediumtext NOT NULL,
+ `attach` mediumtext NOT NULL,
+! `mid` char(255) NOT NULL,
+! `parent_mid` char(255) NOT NULL,
+ `created` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
+ `expires` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
+ PRIMARY KEY (`id`),
+- KEY `convid` (`convid`),
+ KEY `created` (`created`),
+ KEY `mail_flags` (`mail_flags`),
+ KEY `account_id` (`account_id`),
+--- 782,796 ----
+ `from_xchan` char(255) NOT NULL DEFAULT '',
+ `to_xchan` char(255) NOT NULL DEFAULT '',
+ `account_id` int(10) unsigned NOT NULL DEFAULT '0',
+! `channel_id` int(10) unsigned NOT NULL DEFAULT '0',
+ `title` text NOT NULL,
+ `body` mediumtext NOT NULL,
+ `attach` mediumtext NOT NULL,
+! `mid` char(255) NOT NULL DEFAULT '',
+! `parent_mid` char(255) NOT NULL DEFAULT '',
+ `created` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
+ `expires` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
+ PRIMARY KEY (`id`),
+ KEY `created` (`created`),
+ KEY `mail_flags` (`mail_flags`),
+ KEY `account_id` (`account_id`),
+***************
+*** 642,659 ****
+ KEY `to_xchan` (`to_xchan`),
+ KEY `mid` (`mid`),
+ KEY `parent_mid` (`parent_mid`),
+! KEY `expires` (`expires`)
+ ) ENGINE=MyISAM DEFAULT CHARSET=utf8;
+
+ CREATE TABLE IF NOT EXISTS `manage` (
+ `id` int(11) NOT NULL AUTO_INCREMENT,
+! `uid` int(11) NOT NULL,
+ `xchan` char(255) NOT NULL DEFAULT '',
+ PRIMARY KEY (`id`),
+ KEY `uid` (`uid`),
+ KEY `xchan` (`xchan`)
+ ) ENGINE=MyISAM DEFAULT CHARSET=utf8;
+
+ CREATE TABLE IF NOT EXISTS `menu` (
+ `menu_id` int(10) unsigned NOT NULL AUTO_INCREMENT,
+ `menu_channel_id` int(10) unsigned NOT NULL DEFAULT '0',
+--- 799,829 ----
+ KEY `to_xchan` (`to_xchan`),
+ KEY `mid` (`mid`),
+ KEY `parent_mid` (`parent_mid`),
+! KEY `expires` (`expires`),
+! KEY `convid` (`convid`)
+ ) ENGINE=MyISAM DEFAULT CHARSET=utf8;
+
++ -- --------------------------------------------------------
++
++ --
++ -- Table structure for table `manage`
++ --
++
+ CREATE TABLE IF NOT EXISTS `manage` (
+ `id` int(11) NOT NULL AUTO_INCREMENT,
+! `uid` int(11) NOT NULL DEFAULT '0',
+ `xchan` char(255) NOT NULL DEFAULT '',
+ PRIMARY KEY (`id`),
+ KEY `uid` (`uid`),
+ KEY `xchan` (`xchan`)
+ ) ENGINE=MyISAM DEFAULT CHARSET=utf8;
+
++ -- --------------------------------------------------------
++
++ --
++ -- Table structure for table `menu`
++ --
++
+ CREATE TABLE IF NOT EXISTS `menu` (
+ `menu_id` int(10) unsigned NOT NULL AUTO_INCREMENT,
+ `menu_channel_id` int(10) unsigned NOT NULL DEFAULT '0',
+***************
+*** 666,671 ****
+--- 836,847 ----
+ KEY `menu_flags` (`menu_flags`)
+ ) ENGINE=MyISAM DEFAULT CHARSET=utf8;
+
++ -- --------------------------------------------------------
++
++ --
++ -- Table structure for table `menu_item`
++ --
++
+ CREATE TABLE IF NOT EXISTS `menu_item` (
+ `mitem_id` int(10) unsigned NOT NULL AUTO_INCREMENT,
+ `mitem_link` char(255) NOT NULL DEFAULT '',
+***************
+*** 675,681 ****
+ `allow_gid` mediumtext NOT NULL,
+ `deny_cid` mediumtext NOT NULL,
+ `deny_gid` mediumtext NOT NULL,
+! `mitem_channel_id` int(10) unsigned NOT NULL,
+ `mitem_menu_id` int(10) unsigned NOT NULL DEFAULT '0',
+ `mitem_order` int(11) NOT NULL DEFAULT '0',
+ PRIMARY KEY (`mitem_id`),
+--- 851,857 ----
+ `allow_gid` mediumtext NOT NULL,
+ `deny_cid` mediumtext NOT NULL,
+ `deny_gid` mediumtext NOT NULL,
+! `mitem_channel_id` int(10) unsigned NOT NULL DEFAULT '0',
+ `mitem_menu_id` int(10) unsigned NOT NULL DEFAULT '0',
+ `mitem_order` int(11) NOT NULL DEFAULT '0',
+ PRIMARY KEY (`mitem_id`),
+***************
+*** 684,705 ****
+ KEY `mitem_flags` (`mitem_flags`)
+ ) ENGINE=MyISAM DEFAULT CHARSET=utf8;
+
+ CREATE TABLE IF NOT EXISTS `notify` (
+ `id` int(11) NOT NULL AUTO_INCREMENT,
+! `hash` char(64) NOT NULL,
+! `name` char(255) NOT NULL,
+! `url` char(255) NOT NULL,
+! `photo` char(255) NOT NULL,
+! `date` datetime NOT NULL,
+ `msg` mediumtext NOT NULL,
+! `aid` int(11) NOT NULL,
+! `uid` int(11) NOT NULL,
+! `link` char(255) NOT NULL,
+ `parent` char(255) NOT NULL DEFAULT '',
+ `seen` tinyint(1) NOT NULL DEFAULT '0',
+! `type` int(11) NOT NULL,
+! `verb` char(255) NOT NULL,
+! `otype` char(16) NOT NULL,
+ PRIMARY KEY (`id`),
+ KEY `type` (`type`),
+ KEY `seen` (`seen`),
+--- 860,887 ----
+ KEY `mitem_flags` (`mitem_flags`)
+ ) ENGINE=MyISAM DEFAULT CHARSET=utf8;
+
++ -- --------------------------------------------------------
++
++ --
++ -- Table structure for table `notify`
++ --
++
+ CREATE TABLE IF NOT EXISTS `notify` (
+ `id` int(11) NOT NULL AUTO_INCREMENT,
+! `hash` char(64) NOT NULL DEFAULT '',
+! `name` char(255) NOT NULL DEFAULT '',
+! `url` char(255) NOT NULL DEFAULT '',
+! `photo` char(255) NOT NULL DEFAULT '',
+! `date` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
+ `msg` mediumtext NOT NULL,
+! `aid` int(11) NOT NULL DEFAULT '0',
+! `uid` int(11) NOT NULL DEFAULT '0',
+! `link` char(255) NOT NULL DEFAULT '',
+ `parent` char(255) NOT NULL DEFAULT '',
+ `seen` tinyint(1) NOT NULL DEFAULT '0',
+! `type` int(11) NOT NULL DEFAULT '0',
+! `verb` char(255) NOT NULL DEFAULT '',
+! `otype` char(16) NOT NULL DEFAULT '',
+ PRIMARY KEY (`id`),
+ KEY `type` (`type`),
+ KEY `seen` (`seen`),
+***************
+*** 712,717 ****
+--- 894,905 ----
+ KEY `aid` (`aid`)
+ ) ENGINE=MyISAM DEFAULT CHARSET=utf8;
+
++ -- --------------------------------------------------------
++
++ --
++ -- Table structure for table `obj`
++ --
++
+ CREATE TABLE IF NOT EXISTS `obj` (
+ `obj_id` int(10) unsigned NOT NULL AUTO_INCREMENT,
+ `obj_page` char(64) NOT NULL DEFAULT '',
+***************
+*** 731,736 ****
+--- 919,930 ----
+ KEY `obj_obj` (`obj_obj`)
+ ) ENGINE=MyISAM DEFAULT CHARSET=utf8;
+
++ -- --------------------------------------------------------
++
++ --
++ -- Table structure for table `outq`
++ --
++
+ CREATE TABLE IF NOT EXISTS `outq` (
+ `outq_hash` char(255) NOT NULL,
+ `outq_account` int(10) unsigned NOT NULL DEFAULT '0',
+***************
+*** 753,786 ****
+ KEY `outq_delivered` (`outq_delivered`)
+ ) ENGINE=MyISAM DEFAULT CHARSET=utf8;
+
+ CREATE TABLE IF NOT EXISTS `pconfig` (
+ `id` int(11) NOT NULL AUTO_INCREMENT,
+ `uid` int(11) NOT NULL DEFAULT '0',
+! `cat` char(255) CHARACTER SET ascii NOT NULL,
+! `k` char(255) CHARACTER SET ascii NOT NULL,
+ `v` mediumtext NOT NULL,
+ PRIMARY KEY (`id`),
+ UNIQUE KEY `access` (`uid`,`cat`,`k`)
+ ) ENGINE=MyISAM DEFAULT CHARSET=utf8;
+
+ CREATE TABLE IF NOT EXISTS `photo` (
+ `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
+ `aid` int(10) unsigned NOT NULL DEFAULT '0',
+! `uid` int(10) unsigned NOT NULL,
+ `xchan` char(255) NOT NULL DEFAULT '',
+! `resource_id` char(255) NOT NULL,
+! `created` datetime NOT NULL,
+! `edited` datetime NOT NULL,
+! `title` char(255) NOT NULL,
+ `description` text NOT NULL,
+! `album` char(255) NOT NULL,
+! `filename` char(255) NOT NULL,
+ `type` char(128) NOT NULL DEFAULT 'image/jpeg',
+! `height` smallint(6) NOT NULL,
+! `width` smallint(6) NOT NULL,
+ `size` int(10) unsigned NOT NULL DEFAULT '0',
+ `data` mediumblob NOT NULL,
+! `scale` tinyint(3) NOT NULL,
+ `profile` tinyint(1) NOT NULL DEFAULT '0',
+ `photo_flags` int(10) unsigned NOT NULL DEFAULT '0',
+ `allow_cid` mediumtext NOT NULL,
+--- 947,992 ----
+ KEY `outq_delivered` (`outq_delivered`)
+ ) ENGINE=MyISAM DEFAULT CHARSET=utf8;
+
++ -- --------------------------------------------------------
++
++ --
++ -- Table structure for table `pconfig`
++ --
++
+ CREATE TABLE IF NOT EXISTS `pconfig` (
+ `id` int(11) NOT NULL AUTO_INCREMENT,
+ `uid` int(11) NOT NULL DEFAULT '0',
+! `cat` char(255) CHARACTER SET ascii NOT NULL DEFAULT '',
+! `k` char(255) CHARACTER SET ascii NOT NULL DEFAULT '',
+ `v` mediumtext NOT NULL,
+ PRIMARY KEY (`id`),
+ UNIQUE KEY `access` (`uid`,`cat`,`k`)
+ ) ENGINE=MyISAM DEFAULT CHARSET=utf8;
+
++ -- --------------------------------------------------------
++
++ --
++ -- Table structure for table `photo`
++ --
++
+ CREATE TABLE IF NOT EXISTS `photo` (
+ `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
+ `aid` int(10) unsigned NOT NULL DEFAULT '0',
+! `uid` int(10) unsigned NOT NULL DEFAULT '0',
+ `xchan` char(255) NOT NULL DEFAULT '',
+! `resource_id` char(255) NOT NULL DEFAULT '',
+! `created` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
+! `edited` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
+! `title` char(255) NOT NULL DEFAULT '',
+ `description` text NOT NULL,
+! `album` char(255) NOT NULL DEFAULT '',
+! `filename` char(255) NOT NULL DEFAULT '',
+ `type` char(128) NOT NULL DEFAULT 'image/jpeg',
+! `height` smallint(6) NOT NULL DEFAULT '0',
+! `width` smallint(6) NOT NULL DEFAULT '0',
+ `size` int(10) unsigned NOT NULL DEFAULT '0',
+ `data` mediumblob NOT NULL,
+! `scale` tinyint(3) NOT NULL DEFAULT '0',
+ `profile` tinyint(1) NOT NULL DEFAULT '0',
+ `photo_flags` int(10) unsigned NOT NULL DEFAULT '0',
+ `allow_cid` mediumtext NOT NULL,
+***************
+*** 800,805 ****
+--- 1006,1017 ----
+ KEY `resource_id` (`resource_id`)
+ ) ENGINE=MyISAM DEFAULT CHARSET=utf8;
+
++ -- --------------------------------------------------------
++
++ --
++ -- Table structure for table `poll`
++ --
++
+ CREATE TABLE IF NOT EXISTS `poll` (
+ `poll_id` int(10) unsigned NOT NULL AUTO_INCREMENT,
+ `poll_channel` int(10) unsigned NOT NULL DEFAULT '0',
+***************
+*** 812,817 ****
+--- 1024,1035 ----
+ KEY `poll_votes` (`poll_votes`)
+ ) ENGINE=MyISAM DEFAULT CHARSET=utf8;
+
++ -- --------------------------------------------------------
++
++ --
++ -- Table structure for table `poll_elm`
++ --
++
+ CREATE TABLE IF NOT EXISTS `poll_elm` (
+ `pelm_id` int(10) unsigned NOT NULL AUTO_INCREMENT,
+ `pelm_poll` int(10) unsigned NOT NULL DEFAULT '0',
+***************
+*** 823,838 ****
+ KEY `pelm_result` (`pelm_result`)
+ ) ENGINE=MyISAM DEFAULT CHARSET=utf8;
+
+ CREATE TABLE IF NOT EXISTS `profdef` (
+ `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
+ `field_name` char(255) NOT NULL DEFAULT '',
+ `field_type` char(16) NOT NULL DEFAULT '',
+ `field_desc` char(255) NOT NULL DEFAULT '',
+ `field_help` char(255) NOT NULL DEFAULT '',
+! `field_inputs` mediumtext NOT NULL DEFAULT '',
+ PRIMARY KEY (`id`),
+ KEY `field_name` (`field_name`)
+! ) ENGINE=MyISAM DEFAULT CHARSET=utf8;
+
+ CREATE TABLE IF NOT EXISTS `profext` (
+ `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
+--- 1041,1068 ----
+ KEY `pelm_result` (`pelm_result`)
+ ) ENGINE=MyISAM DEFAULT CHARSET=utf8;
+
++ -- --------------------------------------------------------
++
++ --
++ -- Table structure for table `profdef`
++ --
++
+ CREATE TABLE IF NOT EXISTS `profdef` (
+ `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
+ `field_name` char(255) NOT NULL DEFAULT '',
+ `field_type` char(16) NOT NULL DEFAULT '',
+ `field_desc` char(255) NOT NULL DEFAULT '',
+ `field_help` char(255) NOT NULL DEFAULT '',
+! `field_inputs` mediumtext NOT NULL,
+ PRIMARY KEY (`id`),
+ KEY `field_name` (`field_name`)
+! ) ENGINE=MyISAM DEFAULT CHARSET=utf8;
+!
+! -- --------------------------------------------------------
+!
+! --
+! -- Table structure for table `profext`
+! --
+
+ CREATE TABLE IF NOT EXISTS `profext` (
+ `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
+***************
+*** 844,882 ****
+ KEY `channel_id` (`channel_id`),
+ KEY `hash` (`hash`),
+ KEY `k` (`k`)
+! ) ENGINE=MyISAM DEFAULT CHARSET=utf8;
+
+ CREATE TABLE IF NOT EXISTS `profile` (
+ `id` int(11) NOT NULL AUTO_INCREMENT,
+ `profile_guid` char(64) NOT NULL DEFAULT '',
+ `aid` int(10) unsigned NOT NULL DEFAULT '0',
+! `uid` int(11) NOT NULL,
+! `profile_name` char(255) NOT NULL,
+ `is_default` tinyint(1) NOT NULL DEFAULT '0',
+ `hide_friends` tinyint(1) NOT NULL DEFAULT '0',
+! `name` char(255) NOT NULL,
+! `pdesc` char(255) NOT NULL,
+ `chandesc` text NOT NULL,
+ `dob` char(32) NOT NULL DEFAULT '0000-00-00',
+ `dob_tz` char(255) NOT NULL DEFAULT 'UTC',
+! `address` char(255) NOT NULL,
+! `locality` char(255) NOT NULL,
+! `region` char(255) NOT NULL,
+! `postal_code` char(32) NOT NULL,
+! `country_name` char(255) NOT NULL,
+! `hometown` char(255) NOT NULL,
+! `gender` char(32) NOT NULL,
+! `marital` char(255) NOT NULL,
+ `with` text NOT NULL,
+ `howlong` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
+! `sexual` char(255) NOT NULL,
+! `politic` char(255) NOT NULL,
+! `religion` char(255) NOT NULL,
+ `keywords` text NOT NULL,
+ `likes` text NOT NULL,
+ `dislikes` text NOT NULL,
+ `about` text NOT NULL,
+! `summary` char(255) NOT NULL,
+ `music` text NOT NULL,
+ `book` text NOT NULL,
+ `tv` text NOT NULL,
+--- 1074,1118 ----
+ KEY `channel_id` (`channel_id`),
+ KEY `hash` (`hash`),
+ KEY `k` (`k`)
+! ) ENGINE=MyISAM DEFAULT CHARSET=utf8;
+!
+! -- --------------------------------------------------------
+!
+! --
+! -- Table structure for table `profile`
+! --
+
+ CREATE TABLE IF NOT EXISTS `profile` (
+ `id` int(11) NOT NULL AUTO_INCREMENT,
+ `profile_guid` char(64) NOT NULL DEFAULT '',
+ `aid` int(10) unsigned NOT NULL DEFAULT '0',
+! `uid` int(11) NOT NULL DEFAULT '0',
+! `profile_name` char(255) NOT NULL DEFAULT '',
+ `is_default` tinyint(1) NOT NULL DEFAULT '0',
+ `hide_friends` tinyint(1) NOT NULL DEFAULT '0',
+! `name` char(255) NOT NULL DEFAULT '',
+! `pdesc` char(255) NOT NULL DEFAULT '',
+ `chandesc` text NOT NULL,
+ `dob` char(32) NOT NULL DEFAULT '0000-00-00',
+ `dob_tz` char(255) NOT NULL DEFAULT 'UTC',
+! `address` char(255) NOT NULL DEFAULT '',
+! `locality` char(255) NOT NULL DEFAULT '',
+! `region` char(255) NOT NULL DEFAULT '',
+! `postal_code` char(32) NOT NULL DEFAULT '',
+! `country_name` char(255) NOT NULL DEFAULT '',
+! `hometown` char(255) NOT NULL DEFAULT '',
+! `gender` char(32) NOT NULL DEFAULT '',
+! `marital` char(255) NOT NULL DEFAULT '',
+ `with` text NOT NULL,
+ `howlong` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
+! `sexual` char(255) NOT NULL DEFAULT '',
+! `politic` char(255) NOT NULL DEFAULT '',
+! `religion` char(255) NOT NULL DEFAULT '',
+ `keywords` text NOT NULL,
+ `likes` text NOT NULL,
+ `dislikes` text NOT NULL,
+ `about` text NOT NULL,
+! `summary` char(255) NOT NULL DEFAULT '',
+ `music` text NOT NULL,
+ `book` text NOT NULL,
+ `tv` text NOT NULL,
+***************
+*** 887,895 ****
+ `education` text NOT NULL,
+ `contact` text NOT NULL,
+ `channels` text NOT NULL,
+! `homepage` char(255) NOT NULL,
+! `photo` char(255) NOT NULL,
+! `thumb` char(255) NOT NULL,
+ `publish` tinyint(1) NOT NULL DEFAULT '0',
+ PRIMARY KEY (`id`),
+ UNIQUE KEY `guid` (`profile_guid`,`uid`),
+--- 1123,1131 ----
+ `education` text NOT NULL,
+ `contact` text NOT NULL,
+ `channels` text NOT NULL,
+! `homepage` char(255) NOT NULL DEFAULT '',
+! `photo` char(255) NOT NULL DEFAULT '',
+! `thumb` char(255) NOT NULL DEFAULT '',
+ `publish` tinyint(1) NOT NULL DEFAULT '0',
+ PRIMARY KEY (`id`),
+ UNIQUE KEY `guid` (`profile_guid`,`uid`),
+***************
+*** 908,920 ****
+ KEY `profile_guid` (`profile_guid`)
+ ) ENGINE=MyISAM DEFAULT CHARSET=utf8;
+
+ CREATE TABLE IF NOT EXISTS `profile_check` (
+ `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
+! `uid` int(10) unsigned NOT NULL,
+ `cid` int(10) unsigned NOT NULL DEFAULT '0',
+! `dfrn_id` char(255) NOT NULL,
+! `sec` char(255) NOT NULL,
+! `expire` int(11) NOT NULL,
+ PRIMARY KEY (`id`),
+ KEY `uid` (`uid`),
+ KEY `cid` (`cid`),
+--- 1144,1162 ----
+ KEY `profile_guid` (`profile_guid`)
+ ) ENGINE=MyISAM DEFAULT CHARSET=utf8;
+
++ -- --------------------------------------------------------
++
++ --
++ -- Table structure for table `profile_check`
++ --
++
+ CREATE TABLE IF NOT EXISTS `profile_check` (
+ `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
+! `uid` int(10) unsigned NOT NULL DEFAULT '0',
+ `cid` int(10) unsigned NOT NULL DEFAULT '0',
+! `dfrn_id` char(255) NOT NULL DEFAULT '',
+! `sec` char(255) NOT NULL DEFAULT '',
+! `expire` int(11) NOT NULL DEFAULT '0',
+ PRIMARY KEY (`id`),
+ KEY `uid` (`uid`),
+ KEY `cid` (`cid`),
+***************
+*** 923,951 ****
+ KEY `expire` (`expire`)
+ ) ENGINE=MyISAM DEFAULT CHARSET=utf8;
+
+ CREATE TABLE IF NOT EXISTS `register` (
+ `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
+! `hash` char(255) NOT NULL,
+! `created` datetime NOT NULL,
+! `uid` int(10) unsigned NOT NULL,
+! `password` char(255) NOT NULL,
+! `language` char(16) NOT NULL,
+ PRIMARY KEY (`id`),
+ KEY `hash` (`hash`),
+ KEY `created` (`created`),
+ KEY `uid` (`uid`)
+! ) ENGINE=MyISAM DEFAULT CHARSET=utf8;
+
+ CREATE TABLE IF NOT EXISTS `session` (
+ `id` bigint(20) unsigned NOT NULL AUTO_INCREMENT,
+! `sid` char(255) NOT NULL,
+ `data` text NOT NULL,
+! `expire` bigint(20) unsigned NOT NULL,
+ PRIMARY KEY (`id`),
+ KEY `sid` (`sid`),
+ KEY `expire` (`expire`)
+ ) ENGINE=MyISAM DEFAULT CHARSET=utf8;
+
+ CREATE TABLE IF NOT EXISTS `shares` (
+ `share_id` int(10) unsigned NOT NULL AUTO_INCREMENT,
+ `share_type` int(11) NOT NULL DEFAULT '0',
+--- 1165,1211 ----
+ KEY `expire` (`expire`)
+ ) ENGINE=MyISAM DEFAULT CHARSET=utf8;
+
++ -- --------------------------------------------------------
++
++ --
++ -- Table structure for table `register`
++ --
++
+ CREATE TABLE IF NOT EXISTS `register` (
+ `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
+! `hash` char(255) NOT NULL DEFAULT '',
+! `created` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
+! `uid` int(10) unsigned NOT NULL DEFAULT '0',
+! `password` char(255) NOT NULL DEFAULT '',
+! `language` char(16) NOT NULL DEFAULT '',
+ PRIMARY KEY (`id`),
+ KEY `hash` (`hash`),
+ KEY `created` (`created`),
+ KEY `uid` (`uid`)
+! ) ENGINE=MyISAM DEFAULT CHARSET=utf8;
+!
+! -- --------------------------------------------------------
+!
+! --
+! -- Table structure for table `session`
+! --
+
+ CREATE TABLE IF NOT EXISTS `session` (
+ `id` bigint(20) unsigned NOT NULL AUTO_INCREMENT,
+! `sid` char(255) NOT NULL DEFAULT '',
+ `data` text NOT NULL,
+! `expire` bigint(20) unsigned NOT NULL DEFAULT '0',
+ PRIMARY KEY (`id`),
+ KEY `sid` (`sid`),
+ KEY `expire` (`expire`)
+ ) ENGINE=MyISAM DEFAULT CHARSET=utf8;
+
++ -- --------------------------------------------------------
++
++ --
++ -- Table structure for table `shares`
++ --
++
+ CREATE TABLE IF NOT EXISTS `shares` (
+ `share_id` int(10) unsigned NOT NULL AUTO_INCREMENT,
+ `share_type` int(11) NOT NULL DEFAULT '0',
+***************
+*** 957,974 ****
+ KEY `share_xchan` (`share_xchan`)
+ ) ENGINE=MyISAM DEFAULT CHARSET=utf8;
+
+ CREATE TABLE IF NOT EXISTS `sign` (
+ `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
+ `iid` int(10) unsigned NOT NULL DEFAULT '0',
+ `retract_iid` int(10) unsigned NOT NULL DEFAULT '0',
+ `signed_text` mediumtext NOT NULL,
+ `signature` text NOT NULL,
+! `signer` char(255) NOT NULL,
+ PRIMARY KEY (`id`),
+ KEY `iid` (`iid`),
+ KEY `retract_iid` (`retract_iid`)
+ ) ENGINE=MyISAM DEFAULT CHARSET=utf8;
+
+ CREATE TABLE IF NOT EXISTS `site` (
+ `site_url` char(255) NOT NULL,
+ `site_access` int(11) NOT NULL DEFAULT '0',
+--- 1217,1246 ----
+ KEY `share_xchan` (`share_xchan`)
+ ) ENGINE=MyISAM DEFAULT CHARSET=utf8;
+
++ -- --------------------------------------------------------
++
++ --
++ -- Table structure for table `sign`
++ --
++
+ CREATE TABLE IF NOT EXISTS `sign` (
+ `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
+ `iid` int(10) unsigned NOT NULL DEFAULT '0',
+ `retract_iid` int(10) unsigned NOT NULL DEFAULT '0',
+ `signed_text` mediumtext NOT NULL,
+ `signature` text NOT NULL,
+! `signer` char(255) NOT NULL DEFAULT '',
+ PRIMARY KEY (`id`),
+ KEY `iid` (`iid`),
+ KEY `retract_iid` (`retract_iid`)
+ ) ENGINE=MyISAM DEFAULT CHARSET=utf8;
+
++ -- --------------------------------------------------------
++
++ --
++ -- Table structure for table `site`
++ --
++
+ CREATE TABLE IF NOT EXISTS `site` (
+ `site_url` char(255) NOT NULL,
+ `site_access` int(11) NOT NULL DEFAULT '0',
+***************
+*** 988,996 ****
+--- 1260,1275 ----
+ KEY `site_register` (`site_register`),
+ KEY `site_access` (`site_access`),
+ KEY `site_sellpage` (`site_sellpage`),
++ KEY `site_pull` (`site_pull`),
+ KEY `site_realm` (`site_realm`)
+ ) ENGINE=MyISAM DEFAULT CHARSET=utf8;
+
++ -- --------------------------------------------------------
++
++ --
++ -- Table structure for table `source`
++ --
++
+ CREATE TABLE IF NOT EXISTS `source` (
+ `src_id` int(10) unsigned NOT NULL AUTO_INCREMENT,
+ `src_channel_id` int(10) unsigned NOT NULL DEFAULT '0',
+***************
+*** 1003,1014 ****
+ KEY `src_xchan` (`src_xchan`)
+ ) ENGINE=MyISAM DEFAULT CHARSET=utf8;
+
+ CREATE TABLE IF NOT EXISTS `spam` (
+ `id` int(11) NOT NULL AUTO_INCREMENT,
+! `uid` int(11) NOT NULL,
+ `spam` int(11) NOT NULL DEFAULT '0',
+ `ham` int(11) NOT NULL DEFAULT '0',
+! `term` char(255) NOT NULL,
+ `date` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
+ PRIMARY KEY (`id`),
+ KEY `uid` (`uid`),
+--- 1282,1299 ----
+ KEY `src_xchan` (`src_xchan`)
+ ) ENGINE=MyISAM DEFAULT CHARSET=utf8;
+
++ -- --------------------------------------------------------
++
++ --
++ -- Table structure for table `spam`
++ --
++
+ CREATE TABLE IF NOT EXISTS `spam` (
+ `id` int(11) NOT NULL AUTO_INCREMENT,
+! `uid` int(11) NOT NULL DEFAULT '0',
+ `spam` int(11) NOT NULL DEFAULT '0',
+ `ham` int(11) NOT NULL DEFAULT '0',
+! `term` char(255) NOT NULL DEFAULT '',
+ `date` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
+ PRIMARY KEY (`id`),
+ KEY `uid` (`uid`),
+***************
+*** 1017,1041 ****
+ KEY `term` (`term`)
+ ) ENGINE=MyISAM DEFAULT CHARSET=utf8;
+
+ CREATE TABLE IF NOT EXISTS `sys_perms` (
+ `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
+! `cat` char(255) NOT NULL,
+! `k` char(255) NOT NULL,
+ `v` mediumtext NOT NULL,
+! `public_perm` tinyint(1) unsigned NOT NULL,
+ PRIMARY KEY (`id`)
+ ) ENGINE=MyISAM DEFAULT CHARSET=utf8;
+
+ CREATE TABLE IF NOT EXISTS `term` (
+ `tid` int(10) unsigned NOT NULL AUTO_INCREMENT,
+ `aid` int(10) unsigned NOT NULL DEFAULT '0',
+ `uid` int(10) unsigned NOT NULL DEFAULT '0',
+! `oid` int(10) unsigned NOT NULL,
+! `otype` tinyint(3) unsigned NOT NULL,
+! `type` tinyint(3) unsigned NOT NULL,
+! `term` char(255) NOT NULL,
+! `url` char(255) NOT NULL,
+! `imgurl` char(255) NOT NULL,
+ `term_hash` char(255) NOT NULL DEFAULT '',
+ `parent_hash` char(255) NOT NULL DEFAULT '',
+ PRIMARY KEY (`tid`),
+--- 1302,1338 ----
+ KEY `term` (`term`)
+ ) ENGINE=MyISAM DEFAULT CHARSET=utf8;
+
++ -- --------------------------------------------------------
++
++ --
++ -- Table structure for table `sys_perms`
++ --
++
+ CREATE TABLE IF NOT EXISTS `sys_perms` (
+ `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
+! `cat` char(255) NOT NULL DEFAULT '',
+! `k` char(255) NOT NULL DEFAULT '',
+ `v` mediumtext NOT NULL,
+! `public_perm` tinyint(1) unsigned NOT NULL DEFAULT '0',
+ PRIMARY KEY (`id`)
+ ) ENGINE=MyISAM DEFAULT CHARSET=utf8;
+
++ -- --------------------------------------------------------
++
++ --
++ -- Table structure for table `term`
++ --
++
+ CREATE TABLE IF NOT EXISTS `term` (
+ `tid` int(10) unsigned NOT NULL AUTO_INCREMENT,
+ `aid` int(10) unsigned NOT NULL DEFAULT '0',
+ `uid` int(10) unsigned NOT NULL DEFAULT '0',
+! `oid` int(10) unsigned NOT NULL DEFAULT '0',
+! `otype` tinyint(3) unsigned NOT NULL DEFAULT '0',
+! `type` tinyint(3) unsigned NOT NULL DEFAULT '0',
+! `term` char(255) NOT NULL DEFAULT '',
+! `url` char(255) NOT NULL DEFAULT '',
+! `imgurl` char(255) NOT NULL DEFAULT '',
+ `term_hash` char(255) NOT NULL DEFAULT '',
+ `parent_hash` char(255) NOT NULL DEFAULT '',
+ PRIMARY KEY (`tid`),
+***************
+*** 1050,1071 ****
+ KEY `parent_hash` (`parent_hash`)
+ ) ENGINE=MyISAM DEFAULT CHARSET=utf8;
+
+ CREATE TABLE IF NOT EXISTS `tokens` (
+! `id` varchar(40) NOT NULL,
+ `secret` text NOT NULL,
+! `client_id` varchar(20) NOT NULL,
+! `expires` bigint(20) unsigned NOT NULL,
+! `scope` varchar(200) NOT NULL,
+! `uid` int(11) NOT NULL,
+ PRIMARY KEY (`id`),
+ KEY `client_id` (`client_id`),
+ KEY `expires` (`expires`),
+ KEY `uid` (`uid`)
+ ) ENGINE=MyISAM DEFAULT CHARSET=utf8;
+
+ CREATE TABLE IF NOT EXISTS `updates` (
+ `ud_id` int(10) unsigned NOT NULL AUTO_INCREMENT,
+! `ud_hash` char(128) NOT NULL,
+ `ud_guid` char(255) NOT NULL DEFAULT '',
+ `ud_date` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
+ `ud_last` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
+--- 1347,1380 ----
+ KEY `parent_hash` (`parent_hash`)
+ ) ENGINE=MyISAM DEFAULT CHARSET=utf8;
+
++ -- --------------------------------------------------------
++
++ --
++ -- Table structure for table `tokens`
++ --
++
+ CREATE TABLE IF NOT EXISTS `tokens` (
+! `id` varchar(40) NOT NULL DEFAULT '',
+ `secret` text NOT NULL,
+! `client_id` varchar(20) NOT NULL DEFAULT '',
+! `expires` bigint(20) unsigned NOT NULL DEFAULT '0',
+! `scope` varchar(200) NOT NULL DEFAULT '',
+! `uid` int(11) NOT NULL DEFAULT '0',
+ PRIMARY KEY (`id`),
+ KEY `client_id` (`client_id`),
+ KEY `expires` (`expires`),
+ KEY `uid` (`uid`)
+ ) ENGINE=MyISAM DEFAULT CHARSET=utf8;
+
++ -- --------------------------------------------------------
++
++ --
++ -- Table structure for table `updates`
++ --
++
+ CREATE TABLE IF NOT EXISTS `updates` (
+ `ud_id` int(10) unsigned NOT NULL AUTO_INCREMENT,
+! `ud_hash` char(128) NOT NULL DEFAULT '',
+ `ud_guid` char(255) NOT NULL DEFAULT '',
+ `ud_date` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
+ `ud_last` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
+***************
+*** 1080,1085 ****
+--- 1389,1400 ----
+ KEY `ud_last` (`ud_last`)
+ ) ENGINE=MyISAM DEFAULT CHARSET=utf8;
+
++ -- --------------------------------------------------------
++
++ --
++ -- Table structure for table `verify`
++ --
++
+ CREATE TABLE IF NOT EXISTS `verify` (
+ `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
+ `channel` int(10) unsigned NOT NULL DEFAULT '0',
+***************
+*** 1095,1100 ****
+--- 1410,1421 ----
+ KEY `created` (`created`)
+ ) ENGINE=MyISAM DEFAULT CHARSET=utf8;
+
++ -- --------------------------------------------------------
++
++ --
++ -- Table structure for table `vote`
++ --
++
+ CREATE TABLE IF NOT EXISTS `vote` (
+ `vote_id` int(10) unsigned NOT NULL AUTO_INCREMENT,
+ `vote_poll` int(11) NOT NULL DEFAULT '0',
+***************
+*** 1107,1112 ****
+--- 1428,1439 ----
+ KEY `vote_element` (`vote_element`)
+ ) ENGINE=MyISAM DEFAULT CHARSET=utf8;
+
++ -- --------------------------------------------------------
++
++ --
++ -- Table structure for table `xchan`
++ --
++
+ CREATE TABLE IF NOT EXISTS `xchan` (
+ `xchan_hash` char(255) NOT NULL,
+ `xchan_guid` char(255) NOT NULL DEFAULT '',
+***************
+*** 1139,1144 ****
+--- 1466,1477 ----
+ KEY `xchan_follow` (`xchan_follow`)
+ ) ENGINE=MyISAM DEFAULT CHARSET=utf8;
+
++ -- --------------------------------------------------------
++
++ --
++ -- Table structure for table `xchat`
++ --
++
+ CREATE TABLE IF NOT EXISTS `xchat` (
+ `xchat_id` int(10) unsigned NOT NULL AUTO_INCREMENT,
+ `xchat_url` char(255) NOT NULL DEFAULT '',
+***************
+*** 1150,1162 ****
+ KEY `xchat_desc` (`xchat_desc`),
+ KEY `xchat_xchan` (`xchat_xchan`),
+ KEY `xchat_edited` (`xchat_edited`)
+! ) ENGINE=MyISAM DEFAULT CHARSET=utf8;
+
+ CREATE TABLE IF NOT EXISTS `xconfig` (
+ `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
+! `xchan` char(255) NOT NULL,
+! `cat` char(255) NOT NULL,
+! `k` char(255) NOT NULL,
+ `v` mediumtext NOT NULL,
+ PRIMARY KEY (`id`),
+ KEY `xchan` (`xchan`),
+--- 1483,1501 ----
+ KEY `xchat_desc` (`xchat_desc`),
+ KEY `xchat_xchan` (`xchat_xchan`),
+ KEY `xchat_edited` (`xchat_edited`)
+! ) ENGINE=MyISAM DEFAULT CHARSET=utf8;
+!
+! -- --------------------------------------------------------
+!
+! --
+! -- Table structure for table `xconfig`
+! --
+
+ CREATE TABLE IF NOT EXISTS `xconfig` (
+ `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
+! `xchan` char(255) NOT NULL DEFAULT '',
+! `cat` char(255) NOT NULL DEFAULT '',
+! `k` char(255) NOT NULL DEFAULT '',
+ `v` mediumtext NOT NULL,
+ PRIMARY KEY (`id`),
+ KEY `xchan` (`xchan`),
+***************
+*** 1164,1169 ****
+--- 1503,1514 ----
+ KEY `k` (`k`)
+ ) ENGINE=MyISAM DEFAULT CHARSET=utf8;
+
++ -- --------------------------------------------------------
++
++ --
++ -- Table structure for table `xign`
++ --
++
+ CREATE TABLE IF NOT EXISTS `xign` (
+ `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
+ `uid` int(11) NOT NULL DEFAULT '0',
+***************
+*** 1173,1178 ****
+--- 1518,1529 ----
+ KEY `xchan` (`xchan`)
+ ) ENGINE=MyISAM DEFAULT CHARSET=utf8;
+
++ -- --------------------------------------------------------
++
++ --
++ -- Table structure for table `xlink`
++ --
++
+ CREATE TABLE IF NOT EXISTS `xlink` (
+ `xlink_id` int(10) unsigned NOT NULL AUTO_INCREMENT,
+ `xlink_xchan` char(255) NOT NULL DEFAULT '',
+***************
+*** 1186,1191 ****
+--- 1537,1548 ----
+ KEY `xlink_rating` (`xlink_rating`)
+ ) ENGINE=MyISAM DEFAULT CHARSET=utf8;
+
++ -- --------------------------------------------------------
++
++ --
++ -- Table structure for table `xprof`
++ --
++
+ CREATE TABLE IF NOT EXISTS `xprof` (
+ `xprof_hash` char(255) NOT NULL,
+ `xprof_age` tinyint(3) unsigned NOT NULL DEFAULT '0',
+***************
+*** 1216,1224 ****
+ KEY `xprof_hometown` (`xprof_hometown`)
+ ) ENGINE=MyISAM DEFAULT CHARSET=utf8;
+
+ CREATE TABLE IF NOT EXISTS `xtag` (
+ `xtag_id` int(10) unsigned NOT NULL AUTO_INCREMENT,
+! `xtag_hash` char(255) NOT NULL,
+ `xtag_term` char(255) NOT NULL DEFAULT '',
+ `xtag_flags` int(11) NOT NULL DEFAULT '0',
+ PRIMARY KEY (`xtag_id`),
+--- 1573,1587 ----
+ KEY `xprof_hometown` (`xprof_hometown`)
+ ) ENGINE=MyISAM DEFAULT CHARSET=utf8;
+
++ -- --------------------------------------------------------
++
++ --
++ -- Table structure for table `xtag`
++ --
++
+ CREATE TABLE IF NOT EXISTS `xtag` (
+ `xtag_id` int(10) unsigned NOT NULL AUTO_INCREMENT,
+! `xtag_hash` char(255) NOT NULL DEFAULT '',
+ `xtag_term` char(255) NOT NULL DEFAULT '',
+ `xtag_flags` int(11) NOT NULL DEFAULT '0',
+ PRIMARY KEY (`xtag_id`),
diff --git a/install/database.sql b/install/database.sql
deleted file mode 100644
index c0440c035..000000000
--- a/install/database.sql
+++ /dev/null
@@ -1,1165 +0,0 @@
-SET SQL_MODE="NO_AUTO_VALUE_ON_ZERO";
-
-/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
-/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
-/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
-/*!40101 SET NAMES utf8 */;
-
-
-CREATE TABLE IF NOT EXISTS `abook` (
- `abook_id` int(10) unsigned NOT NULL AUTO_INCREMENT,
- `abook_account` int(10) unsigned NOT NULL,
- `abook_channel` int(10) unsigned NOT NULL,
- `abook_xchan` char(255) NOT NULL DEFAULT '',
- `abook_my_perms` int(11) NOT NULL DEFAULT '0',
- `abook_their_perms` int(11) NOT NULL DEFAULT '0',
- `abook_closeness` tinyint(3) unsigned NOT NULL DEFAULT '99',
- `abook_rating` int(11) NOT NULL DEFAULT '0',
- `abook_created` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
- `abook_updated` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
- `abook_connected` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
- `abook_dob` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
- `abook_flags` int(11) NOT NULL DEFAULT '0',
- `abook_profile` char(64) NOT NULL DEFAULT '',
- PRIMARY KEY (`abook_id`),
- KEY `abook_account` (`abook_account`),
- KEY `abook_channel` (`abook_channel`),
- KEY `abook_xchan` (`abook_xchan`),
- KEY `abook_my_perms` (`abook_my_perms`),
- KEY `abook_their_perms` (`abook_their_perms`),
- KEY `abook_closeness` (`abook_closeness`),
- KEY `abook_created` (`abook_created`),
- KEY `abook_updated` (`abook_updated`),
- KEY `abook_flags` (`abook_flags`),
- KEY `abook_profile` (`abook_profile`),
- KEY `abook_dob` (`abook_dob`),
- KEY `abook_connected` (`abook_connected`),
- KEY `abook_rating` (`abook_rating`)
-) ENGINE=MyISAM DEFAULT CHARSET=utf8;
-
-CREATE TABLE IF NOT EXISTS `account` (
- `account_id` int(10) unsigned NOT NULL AUTO_INCREMENT,
- `account_parent` int(10) unsigned NOT NULL DEFAULT '0',
- `account_default_channel` int(10) unsigned NOT NULL DEFAULT '0',
- `account_salt` char(32) NOT NULL DEFAULT '',
- `account_password` char(255) NOT NULL DEFAULT '',
- `account_email` char(255) NOT NULL DEFAULT '',
- `account_external` char(255) NOT NULL DEFAULT '',
- `account_language` char(16) NOT NULL DEFAULT 'en',
- `account_created` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
- `account_lastlog` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
- `account_flags` int(10) unsigned NOT NULL DEFAULT '0',
- `account_roles` int(10) unsigned NOT NULL DEFAULT '0',
- `account_reset` char(255) NOT NULL DEFAULT '',
- `account_expires` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
- `account_expire_notified` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
- `account_service_class` char(32) NOT NULL DEFAULT '',
- `account_level` int(10) unsigned NOT NULL DEFAULT '0',
- PRIMARY KEY (`account_id`),
- KEY `account_email` (`account_email`),
- KEY `account_service_class` (`account_service_class`),
- KEY `account_parent` (`account_parent`),
- KEY `account_flags` (`account_flags`),
- KEY `account_roles` (`account_roles`),
- KEY `account_lastlog` (`account_lastlog`),
- KEY `account_expires` (`account_expires`),
- KEY `account_default_channel` (`account_default_channel`),
- KEY `account_external` (`account_external`),
- KEY `account_level` (`account_level`)
-) ENGINE=MyISAM DEFAULT CHARSET=utf8;
-
-CREATE TABLE IF NOT EXISTS `addon` (
- `id` int(11) NOT NULL AUTO_INCREMENT,
- `name` char(255) NOT NULL,
- `version` char(255) NOT NULL,
- `installed` tinyint(1) NOT NULL DEFAULT '0',
- `hidden` tinyint(1) NOT NULL DEFAULT '0',
- `timestamp` bigint(20) NOT NULL DEFAULT '0',
- `plugin_admin` tinyint(1) NOT NULL DEFAULT '0',
- PRIMARY KEY (`id`),
- KEY `hidden` (`hidden`),
- KEY `name` (`name`),
- KEY `installed` (`installed`)
-) ENGINE=MyISAM DEFAULT CHARSET=utf8;
-
-
-CREATE TABLE IF NOT EXISTS `app` (
- `id` int(11) NOT NULL AUTO_INCREMENT,
- `app_id` char(255) NOT NULL DEFAULT '',
- `app_sig` char(255) NOT NULL DEFAULT '',
- `app_author` char(255) NOT NULL DEFAULT '',
- `app_name` char(255) NOT NULL DEFAULT '',
- `app_desc` text NOT NULL,
- `app_url` char(255) NOT NULL DEFAULT '',
- `app_photo` char(255) NOT NULL DEFAULT '',
- `app_version` char(255) NOT NULL DEFAULT '',
- `app_channel` int(11) NOT NULL DEFAULT '0',
- `app_addr` char(255) NOT NULL DEFAULT '',
- `app_price` char(255) NOT NULL DEFAULT '',
- `app_page` char(255) NOT NULL DEFAULT '',
- `app_requires` char(255) NOT NULL DEFAULT '',
- PRIMARY KEY (`id`),
- KEY `app_id` (`app_id`),
- KEY `app_name` (`app_name`),
- KEY `app_url` (`app_url`),
- KEY `app_photo` (`app_photo`),
- KEY `app_version` (`app_version`),
- KEY `app_channel` (`app_channel`),
- KEY `app_price` (`app_price`)
-) ENGINE=MyISAM DEFAULT CHARSET=utf8;
-
-
-CREATE TABLE IF NOT EXISTS `attach` (
- `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
- `aid` int(10) unsigned NOT NULL DEFAULT '0',
- `uid` int(10) unsigned NOT NULL DEFAULT '0',
- `hash` char(64) NOT NULL DEFAULT '',
- `creator` char(128) NOT NULL DEFAULT '',
- `filename` char(255) NOT NULL DEFAULT '',
- `filetype` char(64) NOT NULL DEFAULT '',
- `filesize` int(10) unsigned NOT NULL DEFAULT '0',
- `revision` int(10) unsigned NOT NULL DEFAULT '0',
- `folder` char(64) NOT NULL DEFAULT '',
- `flags` int(10) unsigned NOT NULL DEFAULT '0',
- `data` longblob NOT NULL,
- `created` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
- `edited` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
- `allow_cid` mediumtext NOT NULL,
- `allow_gid` mediumtext NOT NULL,
- `deny_cid` mediumtext NOT NULL,
- `deny_gid` mediumtext NOT NULL,
- PRIMARY KEY (`id`),
- KEY `aid` (`aid`),
- KEY `uid` (`uid`),
- KEY `hash` (`hash`),
- KEY `filename` (`filename`),
- KEY `filetype` (`filetype`),
- KEY `filesize` (`filesize`),
- KEY `created` (`created`),
- KEY `edited` (`edited`),
- KEY `revision` (`revision`),
- KEY `folder` (`folder`),
- KEY `flags` (`flags`),
- KEY `creator` (`creator`)
-) ENGINE=MyISAM DEFAULT CHARSET=utf8;
-
-CREATE TABLE IF NOT EXISTS `auth_codes` (
- `id` varchar(40) NOT NULL,
- `client_id` varchar(20) NOT NULL,
- `redirect_uri` varchar(200) NOT NULL,
- `expires` int(11) NOT NULL,
- `scope` varchar(250) NOT NULL,
- PRIMARY KEY (`id`)
-) ENGINE=MyISAM DEFAULT CHARSET=utf8;
-
-CREATE TABLE IF NOT EXISTS `cache` (
- `k` char(255) NOT NULL,
- `v` text NOT NULL,
- `updated` datetime NOT NULL,
- PRIMARY KEY (`k`)
-) ENGINE=MyISAM DEFAULT CHARSET=utf8;
-
-CREATE TABLE IF NOT EXISTS `channel` (
- `channel_id` int(10) unsigned NOT NULL AUTO_INCREMENT,
- `channel_account_id` int(10) unsigned NOT NULL DEFAULT '0',
- `channel_primary` tinyint(1) unsigned NOT NULL DEFAULT '0',
- `channel_name` char(255) NOT NULL DEFAULT '',
- `channel_address` char(255) NOT NULL DEFAULT '',
- `channel_guid` char(255) NOT NULL DEFAULT '',
- `channel_guid_sig` text NOT NULL,
- `channel_hash` char(255) NOT NULL DEFAULT '',
- `channel_timezone` char(128) NOT NULL DEFAULT 'UTC',
- `channel_location` char(255) NOT NULL DEFAULT '',
- `channel_theme` char(255) NOT NULL DEFAULT '',
- `channel_startpage` char(255) NOT NULL DEFAULT '',
- `channel_pubkey` text NOT NULL,
- `channel_prvkey` text NOT NULL,
- `channel_notifyflags` int(10) unsigned NOT NULL DEFAULT '65535',
- `channel_pageflags` int(10) unsigned NOT NULL DEFAULT '0',
- `channel_dirdate` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
- `channel_deleted` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
- `channel_max_anon_mail` int(10) unsigned NOT NULL DEFAULT '10',
- `channel_max_friend_req` int(10) unsigned NOT NULL DEFAULT '10',
- `channel_expire_days` int(11) NOT NULL DEFAULT '0',
- `channel_passwd_reset` char(255) NOT NULL DEFAULT '',
- `channel_default_group` char(255) NOT NULL DEFAULT '',
- `channel_allow_cid` mediumtext NOT NULL,
- `channel_allow_gid` mediumtext NOT NULL,
- `channel_deny_cid` mediumtext NOT NULL,
- `channel_deny_gid` mediumtext NOT NULL,
- `channel_r_stream` int(10) unsigned NOT NULL DEFAULT '128',
- `channel_r_profile` int(10) unsigned NOT NULL DEFAULT '128',
- `channel_r_photos` int(10) unsigned NOT NULL DEFAULT '128',
- `channel_r_abook` int(10) unsigned NOT NULL DEFAULT '128',
- `channel_w_stream` int(10) unsigned NOT NULL DEFAULT '128',
- `channel_w_wall` int(10) unsigned NOT NULL DEFAULT '128',
- `channel_w_tagwall` int(10) unsigned NOT NULL DEFAULT '128',
- `channel_w_comment` int(10) unsigned NOT NULL DEFAULT '128',
- `channel_w_mail` int(10) unsigned NOT NULL DEFAULT '128',
- `channel_w_photos` int(10) unsigned NOT NULL DEFAULT '128',
- `channel_w_chat` int(10) unsigned NOT NULL DEFAULT '128',
- `channel_a_delegate` int(10) unsigned NOT NULL DEFAULT '0',
- `channel_r_storage` int(10) unsigned NOT NULL DEFAULT '128',
- `channel_w_storage` int(10) unsigned NOT NULL DEFAULT '128',
- `channel_r_pages` int(10) unsigned NOT NULL DEFAULT '128',
- `channel_w_pages` int(10) unsigned NOT NULL DEFAULT '128',
- `channel_a_republish` int(10) unsigned NOT NULL DEFAULT '128',
- `channel_w_like` int(10) unsigned NOT NULL DEFAULT '128',
- PRIMARY KEY (`channel_id`),
- UNIQUE KEY `channel_address_unique` (`channel_address`),
- KEY `channel_account_id` (`channel_account_id`),
- KEY `channel_primary` (`channel_primary`),
- KEY `channel_name` (`channel_name`),
- KEY `channel_timezone` (`channel_timezone`),
- KEY `channel_location` (`channel_location`),
- KEY `channel_theme` (`channel_theme`),
- KEY `channel_notifyflags` (`channel_notifyflags`),
- KEY `channel_pageflags` (`channel_pageflags`),
- KEY `channel_max_anon_mail` (`channel_max_anon_mail`),
- KEY `channel_max_friend_req` (`channel_max_friend_req`),
- KEY `channel_default_gid` (`channel_default_group`),
- KEY `channel_r_stream` (`channel_r_stream`),
- KEY `channel_r_profile` (`channel_r_profile`),
- KEY `channel_r_photos` (`channel_r_photos`),
- KEY `channel_r_abook` (`channel_r_abook`),
- KEY `channel_w_stream` (`channel_w_stream`),
- KEY `channel_w_wall` (`channel_w_wall`),
- KEY `channel_w_tagwall` (`channel_w_tagwall`),
- KEY `channel_w_comment` (`channel_w_comment`),
- KEY `channel_w_mail` (`channel_w_mail`),
- KEY `channel_w_photos` (`channel_w_photos`),
- KEY `channel_w_chat` (`channel_w_chat`),
- KEY `channel_guid` (`channel_guid`),
- KEY `channel_hash` (`channel_hash`),
- KEY `channel_expire_days` (`channel_expire_days`),
- KEY `channel_a_delegate` (`channel_a_delegate`),
- KEY `channel_r_storage` (`channel_r_storage`),
- KEY `channel_w_storage` (`channel_w_storage`),
- KEY `channel_r_pages` (`channel_r_pages`),
- KEY `channel_w_pages` (`channel_w_pages`),
- KEY `channel_deleted` (`channel_deleted`),
- KEY `channel_a_republish` (`channel_a_republish`),
- KEY `channel_w_like` (`channel_w_like`),
- KEY `channel_dirdate` (`channel_dirdate`)
-) ENGINE=MyISAM DEFAULT CHARSET=utf8;
-
-CREATE TABLE IF NOT EXISTS `chat` (
- `chat_id` int(10) unsigned NOT NULL AUTO_INCREMENT,
- `chat_room` int(10) unsigned NOT NULL DEFAULT '0',
- `chat_xchan` char(255) NOT NULL DEFAULT '',
- `chat_text` mediumtext NOT NULL,
- `created` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
- PRIMARY KEY (`chat_id`),
- KEY `chat_room` (`chat_room`),
- KEY `chat_xchan` (`chat_xchan`),
- KEY `created` (`created`)
-) ENGINE=MyISAM DEFAULT CHARSET=utf8;
-
-CREATE TABLE IF NOT EXISTS `chatpresence` (
- `cp_id` int(10) unsigned NOT NULL AUTO_INCREMENT,
- `cp_room` int(10) unsigned NOT NULL DEFAULT '0',
- `cp_xchan` char(255) NOT NULL DEFAULT '',
- `cp_last` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
- `cp_status` char(255) NOT NULL,
- `cp_client` char(128) NOT NULL DEFAULT '',
- PRIMARY KEY (`cp_id`),
- KEY `cp_room` (`cp_room`),
- KEY `cp_xchan` (`cp_xchan`),
- KEY `cp_last` (`cp_last`),
- KEY `cp_status` (`cp_status`)
-) ENGINE=MyISAM DEFAULT CHARSET=utf8;
-
-CREATE TABLE IF NOT EXISTS `chatroom` (
- `cr_id` int(10) unsigned NOT NULL AUTO_INCREMENT,
- `cr_aid` int(10) unsigned NOT NULL DEFAULT '0',
- `cr_uid` int(10) unsigned NOT NULL DEFAULT '0',
- `cr_name` char(255) NOT NULL DEFAULT '',
- `cr_created` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
- `cr_edited` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
- `cr_expire` int(10) unsigned NOT NULL DEFAULT '0',
- `allow_cid` mediumtext NOT NULL,
- `allow_gid` mediumtext NOT NULL,
- `deny_cid` mediumtext NOT NULL,
- `deny_gid` mediumtext NOT NULL,
- PRIMARY KEY (`cr_id`),
- KEY `cr_aid` (`cr_aid`),
- KEY `cr_uid` (`cr_uid`),
- KEY `cr_name` (`cr_name`),
- KEY `cr_created` (`cr_created`),
- KEY `cr_edited` (`cr_edited`),
- KEY `cr_expire` (`cr_expire`)
-) ENGINE=MyISAM DEFAULT CHARSET=utf8;
-
-CREATE TABLE IF NOT EXISTS `clients` (
- `client_id` varchar(20) NOT NULL,
- `pw` varchar(20) NOT NULL,
- `redirect_uri` varchar(200) NOT NULL,
- `name` text,
- `icon` text,
- `uid` int(11) NOT NULL DEFAULT '0',
- PRIMARY KEY (`client_id`)
-) ENGINE=MyISAM DEFAULT CHARSET=utf8;
-
-CREATE TABLE IF NOT EXISTS `config` (
- `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
- `cat` char(255) CHARACTER SET ascii NOT NULL,
- `k` char(255) CHARACTER SET ascii NOT NULL,
- `v` text NOT NULL,
- PRIMARY KEY (`id`),
- UNIQUE KEY `access` (`cat`,`k`)
-) ENGINE=MyISAM DEFAULT CHARSET=utf8;
-
-CREATE TABLE IF NOT EXISTS `event` (
- `id` int(11) NOT NULL AUTO_INCREMENT,
- `aid` int(10) unsigned NOT NULL DEFAULT '0',
- `uid` int(11) NOT NULL,
- `event_xchan` char(255) NOT NULL DEFAULT '',
- `event_hash` char(255) NOT NULL DEFAULT '',
- `created` datetime NOT NULL,
- `edited` datetime NOT NULL,
- `start` datetime NOT NULL,
- `finish` datetime NOT NULL,
- `summary` text NOT NULL,
- `description` text NOT NULL,
- `location` text NOT NULL,
- `type` char(255) NOT NULL,
- `nofinish` tinyint(1) NOT NULL DEFAULT '0',
- `adjust` tinyint(1) NOT NULL DEFAULT '1',
- `ignore` tinyint(1) NOT NULL DEFAULT '0',
- `allow_cid` mediumtext NOT NULL,
- `allow_gid` mediumtext NOT NULL,
- `deny_cid` mediumtext NOT NULL,
- `deny_gid` mediumtext NOT NULL,
- PRIMARY KEY (`id`),
- KEY `uid` (`uid`),
- KEY `type` (`type`),
- KEY `start` (`start`),
- KEY `finish` (`finish`),
- KEY `adjust` (`adjust`),
- KEY `nofinish` (`nofinish`),
- KEY `ignore` (`ignore`),
- KEY `aid` (`aid`),
- KEY `event_hash` (`event_hash`),
- KEY `event_xchan` (`event_xchan`)
-) ENGINE=MyISAM DEFAULT CHARSET=utf8;
-
-CREATE TABLE IF NOT EXISTS `fcontact` (
- `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
- `url` char(255) NOT NULL,
- `name` char(255) NOT NULL,
- `photo` char(255) NOT NULL,
- `request` char(255) NOT NULL,
- `nick` char(255) NOT NULL,
- `addr` char(255) NOT NULL,
- `batch` char(255) NOT NULL,
- `notify` char(255) NOT NULL,
- `poll` char(255) NOT NULL,
- `confirm` char(255) NOT NULL,
- `priority` tinyint(1) NOT NULL,
- `network` char(32) NOT NULL,
- `alias` char(255) NOT NULL,
- `pubkey` text NOT NULL,
- `updated` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
- PRIMARY KEY (`id`),
- KEY `addr` (`addr`),
- KEY `network` (`network`)
-) ENGINE=MyISAM DEFAULT CHARSET=utf8;
-
-CREATE TABLE IF NOT EXISTS `ffinder` (
- `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
- `uid` int(10) unsigned NOT NULL,
- `cid` int(10) unsigned NOT NULL,
- `fid` int(10) unsigned NOT NULL,
- PRIMARY KEY (`id`),
- KEY `uid` (`uid`),
- KEY `cid` (`cid`),
- KEY `fid` (`fid`)
-) ENGINE=MyISAM DEFAULT CHARSET=utf8;
-
-CREATE TABLE IF NOT EXISTS `fserver` (
- `id` int(11) NOT NULL AUTO_INCREMENT,
- `server` char(255) NOT NULL,
- `posturl` char(255) NOT NULL,
- `key` text NOT NULL,
- PRIMARY KEY (`id`),
- KEY `server` (`server`),
- KEY `posturl` (`posturl`)
-) ENGINE=MyISAM DEFAULT CHARSET=utf8;
-
-CREATE TABLE IF NOT EXISTS `fsuggest` (
- `id` int(11) NOT NULL AUTO_INCREMENT,
- `uid` int(11) NOT NULL,
- `cid` int(11) NOT NULL,
- `name` char(255) NOT NULL,
- `url` char(255) NOT NULL,
- `request` char(255) NOT NULL,
- `photo` char(255) NOT NULL,
- `note` text NOT NULL,
- `created` datetime NOT NULL,
- PRIMARY KEY (`id`)
-) ENGINE=MyISAM DEFAULT CHARSET=utf8;
-
-CREATE TABLE IF NOT EXISTS `groups` (
- `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
- `hash` char(255) NOT NULL DEFAULT '',
- `uid` int(10) unsigned NOT NULL,
- `visible` tinyint(1) NOT NULL DEFAULT '0',
- `deleted` tinyint(1) NOT NULL DEFAULT '0',
- `name` char(255) NOT NULL,
- PRIMARY KEY (`id`),
- KEY `uid` (`uid`),
- KEY `visible` (`visible`),
- KEY `deleted` (`deleted`),
- KEY `hash` (`hash`)
-) ENGINE=MyISAM DEFAULT CHARSET=utf8;
-
-CREATE TABLE IF NOT EXISTS `group_member` (
- `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
- `uid` int(10) unsigned NOT NULL,
- `gid` int(10) unsigned NOT NULL,
- `xchan` char(255) NOT NULL DEFAULT '',
- PRIMARY KEY (`id`),
- KEY `uid` (`uid`),
- KEY `gid` (`gid`),
- KEY `xchan` (`xchan`)
-) ENGINE=MyISAM DEFAULT CHARSET=utf8;
-
-CREATE TABLE IF NOT EXISTS `hook` (
- `id` int(11) NOT NULL AUTO_INCREMENT,
- `hook` char(255) NOT NULL,
- `file` char(255) NOT NULL,
- `function` char(255) NOT NULL,
- `priority` int(11) unsigned NOT NULL DEFAULT '0',
- PRIMARY KEY (`id`),
- KEY `hook` (`hook`)
-) ENGINE=MyISAM DEFAULT CHARSET=utf8;
-
-CREATE TABLE IF NOT EXISTS `hubloc` (
- `hubloc_id` int(10) unsigned NOT NULL AUTO_INCREMENT,
- `hubloc_guid` char(255) NOT NULL DEFAULT '',
- `hubloc_guid_sig` text NOT NULL,
- `hubloc_hash` char(255) NOT NULL,
- `hubloc_addr` char(255) NOT NULL DEFAULT '',
- `hubloc_flags` int(10) unsigned NOT NULL DEFAULT '0',
- `hubloc_status` int(10) unsigned NOT NULL DEFAULT '0',
- `hubloc_url` char(255) NOT NULL DEFAULT '',
- `hubloc_url_sig` text NOT NULL,
- `hubloc_host` char(255) NOT NULL DEFAULT '',
- `hubloc_callback` char(255) NOT NULL DEFAULT '',
- `hubloc_connect` char(255) NOT NULL DEFAULT '',
- `hubloc_sitekey` text NOT NULL,
- `hubloc_updated` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
- `hubloc_connected` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
- PRIMARY KEY (`hubloc_id`),
- KEY `hubloc_url` (`hubloc_url`),
- KEY `hubloc_guid` (`hubloc_guid`),
- KEY `hubloc_flags` (`hubloc_flags`),
- KEY `hubloc_connect` (`hubloc_connect`),
- KEY `hubloc_host` (`hubloc_host`),
- KEY `hubloc_addr` (`hubloc_addr`),
- KEY `hubloc_updated` (`hubloc_updated`),
- KEY `hubloc_connected` (`hubloc_connected`),
- KEY `hubloc_status` (`hubloc_status`)
-) ENGINE=MyISAM DEFAULT CHARSET=utf8;
-
-CREATE TABLE IF NOT EXISTS `issue` (
- `issue_id` int(10) unsigned NOT NULL AUTO_INCREMENT,
- `issue_created` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
- `issue_updated` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
- `issue_assigned` char(255) NOT NULL,
- `issue_priority` int(11) NOT NULL,
- `issue_status` int(11) NOT NULL,
- `issue_component` char(255) NOT NULL,
- PRIMARY KEY (`issue_id`),
- KEY `issue_created` (`issue_created`),
- KEY `issue_updated` (`issue_updated`),
- KEY `issue_assigned` (`issue_assigned`),
- KEY `issue_priority` (`issue_priority`),
- KEY `issue_status` (`issue_status`),
- KEY `issue_component` (`issue_component`)
-) ENGINE=MyISAM DEFAULT CHARSET=utf8;
-
-CREATE TABLE IF NOT EXISTS `item` (
- `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
- `mid` char(255) CHARACTER SET ascii NOT NULL DEFAULT '',
- `aid` int(10) unsigned NOT NULL DEFAULT '0',
- `uid` int(10) unsigned NOT NULL DEFAULT '0',
- `parent` int(10) unsigned NOT NULL DEFAULT '0',
- `parent_mid` char(255) CHARACTER SET ascii NOT NULL DEFAULT '',
- `thr_parent` char(255) NOT NULL DEFAULT '',
- `created` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
- `edited` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
- `expires` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
- `commented` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
- `received` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
- `changed` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
- `owner_xchan` char(255) NOT NULL DEFAULT '',
- `author_xchan` char(255) NOT NULL DEFAULT '',
- `source_xchan` char(255) NOT NULL DEFAULT '',
- `mimetype` char(255) NOT NULL DEFAULT '',
- `title` text NOT NULL DEFAULT '',
- `body` mediumtext NOT NULL DEFAULT '',
- `app` char(255) NOT NULL DEFAULT '',
- `lang` char(64) NOT NULL DEFAULT '',
- `revision` int(10) unsigned NOT NULL DEFAULT '0',
- `verb` char(255) NOT NULL DEFAULT '',
- `obj_type` char(255) NOT NULL DEFAULT '',
- `object` text NOT NULL DEFAULT '',
- `tgt_type` char(255) NOT NULL DEFAULT '',
- `target` text NOT NULL DEFAULT '',
- `layout_mid` char(255) NOT NULL DEFAULT '',
- `postopts` text NOT NULL DEFAULT '',
- `route` text NOT NULL DEFAULT '',
- `llink` char(255) NOT NULL DEFAULT '',
- `plink` char(255) NOT NULL DEFAULT '',
- `resource_id` char(255) NOT NULL DEFAULT '',
- `resource_type` char(16) NOT NULL DEFAULT '',
- `attach` mediumtext NOT NULL DEFAULT '',
- `sig` text NOT NULL DEFAULT '',
- `location` char(255) NOT NULL DEFAULT '',
- `coord` char(255) NOT NULL DEFAULT '',
- `comment_policy` char(255) NOT NULL DEFAULT '',
- `allow_cid` mediumtext NOT NULL DEFAULT '',
- `allow_gid` mediumtext NOT NULL DEFAULT '',
- `deny_cid` mediumtext NOT NULL DEFAULT '',
- `deny_gid` mediumtext NOT NULL DEFAULT '',
- `item_restrict` int(11) NOT NULL DEFAULT '0',
- `item_flags` int(11) NOT NULL DEFAULT '0',
- `item_private` tinyint(4) NOT NULL DEFAULT '0',
- PRIMARY KEY (`id`),
- KEY `uid` (`uid`),
- KEY `parent` (`parent`),
- KEY `created` (`created`),
- KEY `edited` (`edited`),
- KEY `received` (`received`),
- KEY `uid_commented` (`uid`,`commented`),
- KEY `uid_created` (`uid`,`created`),
- KEY `aid` (`aid`),
- KEY `owner_xchan` (`owner_xchan`),
- KEY `author_xchan` (`author_xchan`),
- KEY `resource_type` (`resource_type`),
- KEY `item_restrict` (`item_restrict`),
- KEY `item_flags` (`item_flags`),
- KEY `commented` (`commented`),
- KEY `verb` (`verb`),
- KEY `item_private` (`item_private`),
- KEY `llink` (`llink`),
- KEY `expires` (`expires`),
- KEY `revision` (`revision`),
- KEY `mimetype` (`mimetype`),
- KEY `mid` (`mid`),
- KEY `parent_mid` (`parent_mid`),
- KEY `uid_mid` (`mid`,`uid`),
- KEY `comment_policy` (`comment_policy`),
- KEY `layout_mid` (`layout_mid`),
- FULLTEXT KEY `title` (`title`),
- FULLTEXT KEY `body` (`body`),
- FULLTEXT KEY `allow_cid` (`allow_cid`),
- FULLTEXT KEY `allow_gid` (`allow_gid`),
- FULLTEXT KEY `deny_cid` (`deny_cid`),
- FULLTEXT KEY `deny_gid` (`deny_gid`)
-) ENGINE=MyISAM DEFAULT CHARSET=utf8;
-
-CREATE TABLE IF NOT EXISTS `item_id` (
- `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
- `iid` int(11) NOT NULL,
- `uid` int(11) NOT NULL,
- `sid` char(255) NOT NULL,
- `service` char(255) NOT NULL,
- PRIMARY KEY (`id`),
- KEY `uid` (`uid`),
- KEY `sid` (`sid`),
- KEY `service` (`service`),
- KEY `iid` (`iid`)
-) ENGINE=MyISAM DEFAULT CHARSET=utf8;
-
-CREATE TABLE IF NOT EXISTS `likes` (
- `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
- `channel_id` int(11) unsigned NOT NULL DEFAULT '0',
- `liker` char(128) NOT NULL DEFAULT '',
- `likee` char(128) NOT NULL DEFAULT '',
- `iid` int(10) unsigned NOT NULL DEFAULT '0',
- `verb` char(255) NOT NULL DEFAULT '',
- `target_type` char(255) NOT NULL DEFAULT '',
- `target_id` char(128) NOT NULL DEFAULT '',
- `target` mediumtext NOT NULL,
- PRIMARY KEY (`id`),
- KEY `channel_id` (`channel_id`),
- KEY `liker` (`liker`),
- KEY `likee` (`likee`),
- KEY `iid` (`iid`),
- KEY `verb` (`verb`),
- KEY `target_type` (`target_type`),
- KEY `target_id` (`target_id`)
-) ENGINE=MyISAM DEFAULT CHARSET=utf8;
-
-CREATE TABLE IF NOT EXISTS `mail` (
- `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
- `mail_flags` int(10) unsigned NOT NULL DEFAULT '0',
- `from_xchan` char(255) NOT NULL DEFAULT '',
- `to_xchan` char(255) NOT NULL DEFAULT '',
- `account_id` int(10) unsigned NOT NULL DEFAULT '0',
- `channel_id` int(10) unsigned NOT NULL,
- `title` text NOT NULL,
- `body` mediumtext NOT NULL,
- `attach` mediumtext NOT NULL,
- `mid` char(255) NOT NULL,
- `parent_mid` char(255) NOT NULL,
- `created` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
- `expires` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
- PRIMARY KEY (`id`),
- KEY `created` (`created`),
- KEY `mail_flags` (`mail_flags`),
- KEY `account_id` (`account_id`),
- KEY `channel_id` (`channel_id`),
- KEY `from_xchan` (`from_xchan`),
- KEY `to_xchan` (`to_xchan`),
- KEY `mid` (`mid`),
- KEY `parent_mid` (`parent_mid`),
- KEY `expires` (`expires`)
-) ENGINE=MyISAM DEFAULT CHARSET=utf8;
-
-CREATE TABLE IF NOT EXISTS `manage` (
- `id` int(11) NOT NULL AUTO_INCREMENT,
- `uid` int(11) NOT NULL,
- `xchan` char(255) NOT NULL DEFAULT '',
- PRIMARY KEY (`id`),
- KEY `uid` (`uid`),
- KEY `xchan` (`xchan`)
-) ENGINE=MyISAM DEFAULT CHARSET=utf8;
-
-CREATE TABLE IF NOT EXISTS `menu` (
- `menu_id` int(10) unsigned NOT NULL AUTO_INCREMENT,
- `menu_channel_id` int(10) unsigned NOT NULL DEFAULT '0',
- `menu_name` char(255) NOT NULL DEFAULT '',
- `menu_desc` char(255) NOT NULL DEFAULT '',
- `menu_flags` int(11) NOT NULL DEFAULT '0',
- PRIMARY KEY (`menu_id`),
- KEY `menu_channel_id` (`menu_channel_id`),
- KEY `menu_name` (`menu_name`),
- KEY `menu_flags` (`menu_flags`)
-) ENGINE=MyISAM DEFAULT CHARSET=utf8;
-
-CREATE TABLE IF NOT EXISTS `menu_item` (
- `mitem_id` int(10) unsigned NOT NULL AUTO_INCREMENT,
- `mitem_link` char(255) NOT NULL DEFAULT '',
- `mitem_desc` char(255) NOT NULL DEFAULT '',
- `mitem_flags` int(11) NOT NULL DEFAULT '0',
- `allow_cid` mediumtext NOT NULL,
- `allow_gid` mediumtext NOT NULL,
- `deny_cid` mediumtext NOT NULL,
- `deny_gid` mediumtext NOT NULL,
- `mitem_channel_id` int(10) unsigned NOT NULL,
- `mitem_menu_id` int(10) unsigned NOT NULL DEFAULT '0',
- `mitem_order` int(11) NOT NULL DEFAULT '0',
- PRIMARY KEY (`mitem_id`),
- KEY `mitem_channel_id` (`mitem_channel_id`),
- KEY `mitem_menu_id` (`mitem_menu_id`),
- KEY `mitem_flags` (`mitem_flags`)
-) ENGINE=MyISAM DEFAULT CHARSET=utf8;
-
-CREATE TABLE IF NOT EXISTS `notify` (
- `id` int(11) NOT NULL AUTO_INCREMENT,
- `hash` char(64) NOT NULL,
- `name` char(255) NOT NULL,
- `url` char(255) NOT NULL,
- `photo` char(255) NOT NULL,
- `date` datetime NOT NULL,
- `msg` mediumtext NOT NULL,
- `aid` int(11) NOT NULL,
- `uid` int(11) NOT NULL,
- `link` char(255) NOT NULL,
- `parent` char(255) NOT NULL DEFAULT '',
- `seen` tinyint(1) NOT NULL DEFAULT '0',
- `type` int(11) NOT NULL,
- `verb` char(255) NOT NULL,
- `otype` char(16) NOT NULL,
- PRIMARY KEY (`id`),
- KEY `type` (`type`),
- KEY `seen` (`seen`),
- KEY `uid` (`uid`),
- KEY `date` (`date`),
- KEY `hash` (`hash`),
- KEY `parent` (`parent`),
- KEY `link` (`link`),
- KEY `otype` (`otype`),
- KEY `aid` (`aid`)
-) ENGINE=MyISAM DEFAULT CHARSET=utf8;
-
-CREATE TABLE IF NOT EXISTS `obj` (
- `obj_id` int(10) unsigned NOT NULL AUTO_INCREMENT,
- `obj_page` char(64) NOT NULL DEFAULT '',
- `obj_verb` char(255) NOT NULL DEFAULT '',
- `obj_type` int(10) unsigned NOT NULL DEFAULT '0',
- `obj_obj` char(255) NOT NULL DEFAULT '',
- `obj_channel` int(10) unsigned NOT NULL DEFAULT '0',
- `allow_cid` mediumtext NOT NULL,
- `allow_gid` mediumtext NOT NULL,
- `deny_cid` mediumtext NOT NULL,
- `deny_gid` mediumtext NOT NULL,
- PRIMARY KEY (`obj_id`),
- KEY `obj_verb` (`obj_verb`),
- KEY `obj_page` (`obj_page`),
- KEY `obj_type` (`obj_type`),
- KEY `obj_channel` (`obj_channel`),
- KEY `obj_obj` (`obj_obj`)
-) ENGINE=MyISAM DEFAULT CHARSET=utf8;
-
-CREATE TABLE IF NOT EXISTS `outq` (
- `outq_hash` char(255) NOT NULL,
- `outq_account` int(10) unsigned NOT NULL DEFAULT '0',
- `outq_channel` int(10) unsigned NOT NULL DEFAULT '0',
- `outq_driver` char(32) NOT NULL DEFAULT '',
- `outq_posturl` char(255) NOT NULL DEFAULT '',
- `outq_async` tinyint(1) NOT NULL DEFAULT '0',
- `outq_delivered` tinyint(1) NOT NULL DEFAULT '0',
- `outq_created` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
- `outq_updated` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
- `outq_notify` mediumtext NOT NULL,
- `outq_msg` mediumtext NOT NULL,
- PRIMARY KEY (`outq_hash`),
- KEY `outq_account` (`outq_account`),
- KEY `outq_channel` (`outq_channel`),
- KEY `outq_hub` (`outq_posturl`),
- KEY `outq_created` (`outq_created`),
- KEY `outq_updated` (`outq_updated`),
- KEY `outq_async` (`outq_async`),
- KEY `outq_delivered` (`outq_delivered`)
-) ENGINE=MyISAM DEFAULT CHARSET=utf8;
-
-CREATE TABLE IF NOT EXISTS `pconfig` (
- `id` int(11) NOT NULL AUTO_INCREMENT,
- `uid` int(11) NOT NULL DEFAULT '0',
- `cat` char(255) CHARACTER SET ascii NOT NULL,
- `k` char(255) CHARACTER SET ascii NOT NULL,
- `v` mediumtext NOT NULL,
- PRIMARY KEY (`id`),
- UNIQUE KEY `access` (`uid`,`cat`,`k`)
-) ENGINE=MyISAM DEFAULT CHARSET=utf8;
-
-CREATE TABLE IF NOT EXISTS `photo` (
- `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
- `aid` int(10) unsigned NOT NULL DEFAULT '0',
- `uid` int(10) unsigned NOT NULL,
- `xchan` char(255) NOT NULL DEFAULT '',
- `resource_id` char(255) NOT NULL,
- `created` datetime NOT NULL,
- `edited` datetime NOT NULL,
- `title` char(255) NOT NULL,
- `description` text NOT NULL,
- `album` char(255) NOT NULL,
- `filename` char(255) NOT NULL,
- `type` char(128) NOT NULL DEFAULT 'image/jpeg',
- `height` smallint(6) NOT NULL,
- `width` smallint(6) NOT NULL,
- `size` int(10) unsigned NOT NULL DEFAULT '0',
- `data` mediumblob NOT NULL,
- `scale` tinyint(3) NOT NULL,
- `profile` tinyint(1) NOT NULL DEFAULT '0',
- `photo_flags` int(10) unsigned NOT NULL DEFAULT '0',
- `allow_cid` mediumtext NOT NULL,
- `allow_gid` mediumtext NOT NULL,
- `deny_cid` mediumtext NOT NULL,
- `deny_gid` mediumtext NOT NULL,
- PRIMARY KEY (`id`),
- KEY `uid` (`uid`),
- KEY `album` (`album`),
- KEY `scale` (`scale`),
- KEY `profile` (`profile`),
- KEY `photo_flags` (`photo_flags`),
- KEY `type` (`type`),
- KEY `aid` (`aid`),
- KEY `xchan` (`xchan`),
- KEY `size` (`size`),
- KEY `resource_id` (`resource_id`)
-) ENGINE=MyISAM DEFAULT CHARSET=utf8;
-
-CREATE TABLE IF NOT EXISTS `poll` (
- `poll_id` int(10) unsigned NOT NULL AUTO_INCREMENT,
- `poll_channel` int(10) unsigned NOT NULL DEFAULT '0',
- `poll_desc` text NOT NULL,
- `poll_flags` int(11) NOT NULL DEFAULT '0',
- `poll_votes` int(11) NOT NULL DEFAULT '0',
- PRIMARY KEY (`poll_id`),
- KEY `poll_channel` (`poll_channel`),
- KEY `poll_flags` (`poll_flags`),
- KEY `poll_votes` (`poll_votes`)
-) ENGINE=MyISAM DEFAULT CHARSET=utf8;
-
-CREATE TABLE IF NOT EXISTS `poll_elm` (
- `pelm_id` int(10) unsigned NOT NULL AUTO_INCREMENT,
- `pelm_poll` int(10) unsigned NOT NULL DEFAULT '0',
- `pelm_desc` text NOT NULL,
- `pelm_flags` int(11) NOT NULL DEFAULT '0',
- `pelm_result` float NOT NULL DEFAULT '0',
- PRIMARY KEY (`pelm_id`),
- KEY `pelm_poll` (`pelm_poll`),
- KEY `pelm_result` (`pelm_result`)
-) ENGINE=MyISAM DEFAULT CHARSET=utf8;
-
-CREATE TABLE IF NOT EXISTS `profile` (
- `id` int(11) NOT NULL AUTO_INCREMENT,
- `profile_guid` char(64) NOT NULL DEFAULT '',
- `aid` int(10) unsigned NOT NULL DEFAULT '0',
- `uid` int(11) NOT NULL,
- `profile_name` char(255) NOT NULL,
- `is_default` tinyint(1) NOT NULL DEFAULT '0',
- `hide_friends` tinyint(1) NOT NULL DEFAULT '0',
- `name` char(255) NOT NULL,
- `pdesc` char(255) NOT NULL,
- `chandesc` text NOT NULL,
- `dob` char(32) NOT NULL DEFAULT '0000-00-00',
- `dob_tz` char(255) NOT NULL DEFAULT 'UTC',
- `address` char(255) NOT NULL,
- `locality` char(255) NOT NULL,
- `region` char(255) NOT NULL,
- `postal_code` char(32) NOT NULL,
- `country_name` char(255) NOT NULL,
- `hometown` char(255) NOT NULL,
- `gender` char(32) NOT NULL,
- `marital` char(255) NOT NULL,
- `with` text NOT NULL,
- `howlong` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
- `sexual` char(255) NOT NULL,
- `politic` char(255) NOT NULL,
- `religion` char(255) NOT NULL,
- `keywords` text NOT NULL,
- `likes` text NOT NULL,
- `dislikes` text NOT NULL,
- `about` text NOT NULL,
- `summary` char(255) NOT NULL,
- `music` text NOT NULL,
- `book` text NOT NULL,
- `tv` text NOT NULL,
- `film` text NOT NULL,
- `interest` text NOT NULL,
- `romance` text NOT NULL,
- `work` text NOT NULL,
- `education` text NOT NULL,
- `contact` text NOT NULL,
- `channels` text NOT NULL,
- `homepage` char(255) NOT NULL,
- `photo` char(255) NOT NULL,
- `thumb` char(255) NOT NULL,
- `publish` tinyint(1) NOT NULL DEFAULT '0',
- PRIMARY KEY (`id`),
- UNIQUE KEY `guid` (`profile_guid`,`uid`),
- KEY `uid` (`uid`),
- KEY `locality` (`locality`),
- KEY `hometown` (`hometown`),
- KEY `gender` (`gender`),
- KEY `marital` (`marital`),
- KEY `sexual` (`sexual`),
- KEY `publish` (`publish`),
- KEY `aid` (`aid`),
- KEY `is_default` (`is_default`),
- KEY `hide_friends` (`hide_friends`),
- KEY `postal_code` (`postal_code`),
- KEY `country_name` (`country_name`),
- KEY `profile_guid` (`profile_guid`)
-) ENGINE=MyISAM DEFAULT CHARSET=utf8;
-
-CREATE TABLE IF NOT EXISTS `profile_check` (
- `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
- `uid` int(10) unsigned NOT NULL,
- `cid` int(10) unsigned NOT NULL DEFAULT '0',
- `dfrn_id` char(255) NOT NULL,
- `sec` char(255) NOT NULL,
- `expire` int(11) NOT NULL,
- PRIMARY KEY (`id`),
- KEY `uid` (`uid`),
- KEY `cid` (`cid`),
- KEY `dfrn_id` (`dfrn_id`),
- KEY `sec` (`sec`),
- KEY `expire` (`expire`)
-) ENGINE=MyISAM DEFAULT CHARSET=utf8;
-
-CREATE TABLE IF NOT EXISTS `register` (
- `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
- `hash` char(255) NOT NULL,
- `created` datetime NOT NULL,
- `uid` int(10) unsigned NOT NULL,
- `password` char(255) NOT NULL,
- `language` char(16) NOT NULL,
- PRIMARY KEY (`id`),
- KEY `hash` (`hash`),
- KEY `created` (`created`),
- KEY `uid` (`uid`)
-) ENGINE=MyISAM DEFAULT CHARSET=utf8;
-
-CREATE TABLE IF NOT EXISTS `session` (
- `id` bigint(20) unsigned NOT NULL AUTO_INCREMENT,
- `sid` char(255) NOT NULL,
- `data` text NOT NULL,
- `expire` bigint(20) unsigned NOT NULL,
- PRIMARY KEY (`id`),
- KEY `sid` (`sid`),
- KEY `expire` (`expire`)
-) ENGINE=MyISAM DEFAULT CHARSET=utf8;
-
-CREATE TABLE IF NOT EXISTS `shares` (
- `share_id` int(10) unsigned NOT NULL AUTO_INCREMENT,
- `share_type` int(11) NOT NULL DEFAULT '0',
- `share_target` int(10) unsigned NOT NULL DEFAULT '0',
- `share_xchan` char(255) NOT NULL DEFAULT '',
- PRIMARY KEY (`share_id`),
- KEY `share_type` (`share_type`),
- KEY `share_target` (`share_target`),
- KEY `share_xchan` (`share_xchan`)
-) ENGINE=MyISAM DEFAULT CHARSET=utf8;
-
-CREATE TABLE IF NOT EXISTS `site` (
- `site_url` char(255) NOT NULL,
- `site_access` int(11) NOT NULL DEFAULT '0',
- `site_flags` int(11) NOT NULL DEFAULT '0',
- `site_update` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
- `site_pull` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
- `site_sync` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
- `site_directory` char(255) NOT NULL DEFAULT '',
- `site_register` int(11) NOT NULL DEFAULT '0',
- `site_sellpage` char(255) NOT NULL DEFAULT '',
- `site_location` char(255) NOT NULL DEFAULT '',
- PRIMARY KEY (`site_url`),
- KEY `site_flags` (`site_flags`),
- KEY `site_update` (`site_update`),
- KEY `site_directory` (`site_directory`),
- KEY `site_register` (`site_register`),
- KEY `site_access` (`site_access`),
- KEY `site_sellpage` (`site_sellpage`)
-) ENGINE=MyISAM DEFAULT CHARSET=utf8;
-
-CREATE TABLE IF NOT EXISTS `source` (
- `src_id` int(10) unsigned NOT NULL AUTO_INCREMENT,
- `src_channel_id` int(10) unsigned NOT NULL DEFAULT '0',
- `src_channel_xchan` char(255) NOT NULL DEFAULT '',
- `src_xchan` char(255) NOT NULL DEFAULT '',
- `src_patt` mediumtext NOT NULL,
- PRIMARY KEY (`src_id`),
- KEY `src_channel_id` (`src_channel_id`),
- KEY `src_channel_xchan` (`src_channel_xchan`),
- KEY `src_xchan` (`src_xchan`)
-) ENGINE=MyISAM DEFAULT CHARSET=utf8;
-
-CREATE TABLE IF NOT EXISTS `spam` (
- `id` int(11) NOT NULL AUTO_INCREMENT,
- `uid` int(11) NOT NULL,
- `spam` int(11) NOT NULL DEFAULT '0',
- `ham` int(11) NOT NULL DEFAULT '0',
- `term` char(255) NOT NULL,
- `date` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
- PRIMARY KEY (`id`),
- KEY `uid` (`uid`),
- KEY `spam` (`spam`),
- KEY `ham` (`ham`),
- KEY `term` (`term`)
-) ENGINE=MyISAM DEFAULT CHARSET=utf8;
-
-CREATE TABLE IF NOT EXISTS `sys_perms` (
- `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
- `cat` char(255) NOT NULL,
- `k` char(255) NOT NULL,
- `v` mediumtext NOT NULL,
- `public_perm` tinyint(1) unsigned NOT NULL,
- PRIMARY KEY (`id`)
-) ENGINE=MyISAM DEFAULT CHARSET=utf8;
-
-CREATE TABLE IF NOT EXISTS `term` (
- `tid` int(10) unsigned NOT NULL AUTO_INCREMENT,
- `aid` int(10) unsigned NOT NULL DEFAULT '0',
- `uid` int(10) unsigned NOT NULL DEFAULT '0',
- `oid` int(10) unsigned NOT NULL,
- `otype` tinyint(3) unsigned NOT NULL,
- `type` tinyint(3) unsigned NOT NULL,
- `term` char(255) NOT NULL,
- `url` char(255) NOT NULL,
- `imgurl` char(255) NOT NULL,
- `term_hash` char(255) NOT NULL DEFAULT '',
- `parent_hash` char(255) NOT NULL DEFAULT '',
- PRIMARY KEY (`tid`),
- KEY `oid` (`oid`),
- KEY `otype` (`otype`),
- KEY `type` (`type`),
- KEY `term` (`term`),
- KEY `uid` (`uid`),
- KEY `aid` (`aid`),
- KEY `imgurl` (`imgurl`),
- KEY `term_hash` (`term_hash`),
- KEY `parent_hash` (`parent_hash`)
-) ENGINE=MyISAM DEFAULT CHARSET=utf8;
-
-CREATE TABLE IF NOT EXISTS `tokens` (
- `id` varchar(40) NOT NULL,
- `secret` text NOT NULL,
- `client_id` varchar(20) NOT NULL,
- `expires` bigint(20) unsigned NOT NULL,
- `scope` varchar(200) NOT NULL,
- `uid` int(11) NOT NULL,
- PRIMARY KEY (`id`),
- KEY `client_id` (`client_id`),
- KEY `expires` (`expires`),
- KEY `uid` (`uid`)
-) ENGINE=MyISAM DEFAULT CHARSET=utf8;
-
-CREATE TABLE IF NOT EXISTS `updates` (
- `ud_id` int(10) unsigned NOT NULL AUTO_INCREMENT,
- `ud_hash` char(128) NOT NULL,
- `ud_guid` char(255) NOT NULL DEFAULT '',
- `ud_date` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
- `ud_last` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
- `ud_flags` int(11) NOT NULL DEFAULT '0',
- `ud_addr` char(255) NOT NULL DEFAULT '',
- PRIMARY KEY (`ud_id`),
- KEY `ud_date` (`ud_date`),
- KEY `ud_guid` (`ud_guid`),
- KEY `ud_hash` (`ud_hash`),
- KEY `ud_flags` (`ud_flags`),
- KEY `ud_addr` (`ud_addr`),
- KEY `ud_last` (`ud_last`)
-) ENGINE=MyISAM DEFAULT CHARSET=utf8;
-
-CREATE TABLE IF NOT EXISTS `verify` (
- `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
- `channel` int(10) unsigned NOT NULL DEFAULT '0',
- `type` char(32) NOT NULL DEFAULT '',
- `token` char(255) NOT NULL DEFAULT '',
- `meta` char(255) NOT NULL DEFAULT '',
- `created` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
- PRIMARY KEY (`id`),
- KEY `channel` (`channel`),
- KEY `type` (`type`),
- KEY `token` (`token`),
- KEY `meta` (`meta`),
- KEY `created` (`created`)
-) ENGINE=MyISAM DEFAULT CHARSET=utf8;
-
-CREATE TABLE IF NOT EXISTS `vote` (
- `vote_id` int(10) unsigned NOT NULL AUTO_INCREMENT,
- `vote_poll` int(11) NOT NULL DEFAULT '0',
- `vote_element` int(11) NOT NULL DEFAULT '0',
- `vote_result` text NOT NULL,
- `vote_xchan` char(255) NOT NULL DEFAULT '',
- PRIMARY KEY (`vote_id`),
- UNIQUE KEY `vote_vote` (`vote_poll`,`vote_element`,`vote_xchan`),
- KEY `vote_poll` (`vote_poll`),
- KEY `vote_element` (`vote_element`)
-) ENGINE=MyISAM DEFAULT CHARSET=utf8;
-
-CREATE TABLE IF NOT EXISTS `xchan` (
- `xchan_hash` char(255) NOT NULL,
- `xchan_guid` char(255) NOT NULL DEFAULT '',
- `xchan_guid_sig` text NOT NULL,
- `xchan_pubkey` text NOT NULL,
- `xchan_photo_mimetype` char(32) NOT NULL DEFAULT 'image/jpeg',
- `xchan_photo_l` char(255) NOT NULL DEFAULT '',
- `xchan_photo_m` char(255) NOT NULL DEFAULT '',
- `xchan_photo_s` char(255) NOT NULL DEFAULT '',
- `xchan_addr` char(255) NOT NULL DEFAULT '',
- `xchan_url` char(255) NOT NULL DEFAULT '',
- `xchan_connurl` char(255) NOT NULL DEFAULT '',
- `xchan_follow` char(255) NOT NULL DEFAULT '',
- `xchan_connpage` char(255) NOT NULL DEFAULT '',
- `xchan_name` char(255) NOT NULL DEFAULT '',
- `xchan_network` char(255) NOT NULL DEFAULT '',
- `xchan_instance_url` char(255) NOT NULL DEFAULT '',
- `xchan_flags` int(10) unsigned NOT NULL DEFAULT '0',
- `xchan_photo_date` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
- `xchan_name_date` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
- PRIMARY KEY (`xchan_hash`),
- KEY `xchan_guid` (`xchan_guid`),
- KEY `xchan_addr` (`xchan_addr`),
- KEY `xchan_name` (`xchan_name`),
- KEY `xchan_network` (`xchan_network`),
- KEY `xchan_url` (`xchan_url`),
- KEY `xchan_flags` (`xchan_flags`),
- KEY `xchan_connurl` (`xchan_connurl`),
- KEY `xchan_instance_url` (`xchan_instance_url`),
- KEY `xchan_follow` (`xchan_follow`)
-) ENGINE=MyISAM DEFAULT CHARSET=utf8;
-
-CREATE TABLE IF NOT EXISTS `xchat` (
- `xchat_id` int(10) unsigned NOT NULL AUTO_INCREMENT,
- `xchat_url` char(255) NOT NULL DEFAULT '',
- `xchat_desc` char(255) NOT NULL DEFAULT '',
- `xchat_xchan` char(255) NOT NULL DEFAULT '',
- `xchat_edited` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
- PRIMARY KEY (`xchat_id`),
- KEY `xchat_url` (`xchat_url`),
- KEY `xchat_desc` (`xchat_desc`),
- KEY `xchat_xchan` (`xchat_xchan`),
- KEY `xchat_edited` (`xchat_edited`)
-) ENGINE=MyISAM DEFAULT CHARSET=utf8;
-
-CREATE TABLE IF NOT EXISTS `xconfig` (
- `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
- `xchan` char(255) NOT NULL,
- `cat` char(255) NOT NULL,
- `k` char(255) NOT NULL,
- `v` mediumtext NOT NULL,
- PRIMARY KEY (`id`),
- KEY `xchan` (`xchan`),
- KEY `cat` (`cat`),
- KEY `k` (`k`)
-) ENGINE=MyISAM DEFAULT CHARSET=utf8;
-
-CREATE TABLE IF NOT EXISTS `xign` (
- `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
- `uid` int(11) NOT NULL DEFAULT '0',
- `xchan` char(255) NOT NULL DEFAULT '',
- PRIMARY KEY (`id`),
- KEY `uid` (`uid`),
- KEY `xchan` (`xchan`)
-) ENGINE=MyISAM DEFAULT CHARSET=utf8;
-
-CREATE TABLE IF NOT EXISTS `xlink` (
- `xlink_id` int(10) unsigned NOT NULL AUTO_INCREMENT,
- `xlink_xchan` char(255) NOT NULL DEFAULT '',
- `xlink_link` char(255) NOT NULL DEFAULT '',
- `xlink_rating` int(11) NOT NULL DEFAULT '0',
- `xlink_updated` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
- PRIMARY KEY (`xlink_id`),
- KEY `xlink_xchan` (`xlink_xchan`),
- KEY `xlink_link` (`xlink_link`),
- KEY `xlink_updated` (`xlink_updated`),
- KEY `xlink_rating` (`xlink_rating`)
-) ENGINE=MyISAM DEFAULT CHARSET=utf8;
-
-CREATE TABLE IF NOT EXISTS `xprof` (
- `xprof_hash` char(255) NOT NULL,
- `xprof_age` tinyint(3) unsigned NOT NULL DEFAULT '0',
- `xprof_desc` char(255) NOT NULL DEFAULT '',
- `xprof_dob` char(12) NOT NULL DEFAULT '',
- `xprof_gender` char(255) NOT NULL DEFAULT '',
- `xprof_marital` char(255) NOT NULL DEFAULT '',
- `xprof_sexual` char(255) NOT NULL DEFAULT '',
- `xprof_locale` char(255) NOT NULL DEFAULT '',
- `xprof_region` char(255) NOT NULL DEFAULT '',
- `xprof_postcode` char(32) NOT NULL DEFAULT '',
- `xprof_country` char(255) NOT NULL DEFAULT '',
- `xprof_keywords` text NOT NULL,
- `xprof_about` text NOT NULL,
- `xprof_homepage` char(255) NOT NULL DEFAULT '',
- `xprof_hometown` char(255) NOT NULL DEFAULT '',
- PRIMARY KEY (`xprof_hash`),
- KEY `xprof_desc` (`xprof_desc`),
- KEY `xprof_dob` (`xprof_dob`),
- KEY `xprof_gender` (`xprof_gender`),
- KEY `xprof_marital` (`xprof_marital`),
- KEY `xprof_sexual` (`xprof_sexual`),
- KEY `xprof_locale` (`xprof_locale`),
- KEY `xprof_region` (`xprof_region`),
- KEY `xprof_postcode` (`xprof_postcode`),
- KEY `xprof_country` (`xprof_country`),
- KEY `xprof_age` (`xprof_age`),
- KEY `xprof_hometown` (`xprof_hometown`)
-) ENGINE=MyISAM DEFAULT CHARSET=utf8;
-
-CREATE TABLE IF NOT EXISTS `xtag` (
- `xtag_id` int(10) unsigned NOT NULL AUTO_INCREMENT,
- `xtag_hash` char(255) NOT NULL,
- `xtag_term` char(255) NOT NULL DEFAULT '',
- `xtag_flags` int(11) NOT NULL DEFAULT '0',
- PRIMARY KEY (`xtag_id`),
- KEY `xtag_term` (`xtag_term`),
- KEY `xtag_hash` (`xtag_hash`),
- KEY `xtag_flags` (`xtag_flags`)
-) ENGINE=MyISAM DEFAULT CHARSET=utf8;
diff --git a/install/migrate-mypg.php b/install/migrate-mypg.php
new file mode 100644
index 000000000..10bf1e387
--- /dev/null
+++ b/install/migrate-mypg.php
@@ -0,0 +1,357 @@
+<?php
+function ask_question($menu, $options, $default) {
+ $r=null;
+ while(!$r) {
+ echo $menu;
+ $str = substr(strtolower(fgets(STDIN)),0,-1);
+ if($str == '')
+ $r = $default;
+ else if(in_array($str, $options))
+ $r = $str;
+ }
+ return $r;
+}
+
+function get_data($prompt, $regex) {
+ do {
+ echo $prompt;
+ $r = substr(fgets(STDIN), 0, -1);
+ if(!preg_match($regex, $prompt))
+ $r = '';
+ } while($r === '');
+ return $r;
+}
+
+function parse_htconfig($file) {
+ if(!file_exists($file))
+ return array();
+ $conf = file_get_contents($file);
+ preg_match_all('/\$db\_(host|port|user|pass|data|type)\s*=\s*\'([[:print:]]+)\'/', $conf, $matches);
+ return array_combine($matches[1], $matches[2]);
+}
+
+function get_configtype(array $data) {
+ if(!isset($data['host'], $data['user'], $data['pass'], $data['data']))
+ return 'none';
+ if($data['type'] == 1)
+ return 'pgsql';
+ return 'mysql';
+}
+
+function phpquote($str) {
+ for($r = '', $x=0, $l=strlen($str); $x < $l; $x++)
+ if($str{$x} == '\'' || $str{$x} == '\\')
+ $r .= '\\' . $str{$x};
+ else
+ $r .= $str{$x};
+ return $r;
+}
+
+function run_sql($file, $db, &$err, &$n) {
+ $sql = file_get_contents($file);
+ $sql = explode(';', $sql);
+ $err = 0; $n = 0;
+ $c = count($sql);
+ if(!$c) {
+ echo "Unknown error.\n";
+ exit();
+ }
+ foreach($sql as $stmt) {
+ if($stmt == '' || $stmt == "\n" || $stmt == "\n\n") {
+ $c--;
+ continue;
+ }
+ $r = $db->exec($stmt);
+ if($r===false) {
+ echo "\nError executing $stmt: ".var_export($db->errorInfo(), true)."\n";
+ $err++;
+ } else {
+ $n++;
+ }
+ if($n % 5 == 0)
+ echo "\033[255DExecuting: $file, $n/$c\033[K";
+ }
+ echo "\n";
+}
+
+$drivers=true;
+if(!class_exists('PDO'))
+ $drivers=false;
+if($drivers) {
+ $drivers = PDO::getAvailableDrivers();
+ if(!in_array('pgsql', $drivers) || !in_array('mysql', $drivers))
+ $drivers = false;
+}
+if(!$drivers) {
+ echo "Sorry. This migration tool requires both mysql and pgsql PDO drivers.\n";
+ $r = ask_question("If you are on dreamhost you can enable them. This might work on other shared hosts too. Type 'n' to do it yourself.\nWould you like to try (Y/n)? ", array('y', 'n'), 'y');
+ if($r=='y') {
+ $path = $_SERVER['HOME'] . '/.php/5.4';
+ if(!file_exists($path))
+ mkdir($path, 0770, true);
+
+ $rcfile = $path . '/phprc';
+
+ $str = '';
+ $mods = get_loaded_extensions();
+ foreach(array('pdo_mysql','pdo_pgsql','pgsql') as $ext)
+ if(!in_array($ext, $mods))
+ $str .= 'extension=' . $ext . ".so\n";
+
+ file_put_contents($rcfile, $str, FILE_APPEND );
+ echo "drivers enabled.\nNow type: \033[1m/usr/local/bin/php-5.4 install/".basename($argv[0])."\033[0m\n";
+ }
+ exit();
+}
+
+foreach(array('install','include','mod','view') as $dir) {
+ if(!file_exists($dir)) {
+ echo "You must execute from inside the webroot like the cron\n";
+ exit();
+ }
+}
+
+$cfgfile = '.htconfig.php';
+if($argv[1] == '--resume') {
+ if($argc < 4) {
+ echo "Resume usage {$argv[0]} --resume <table> <row>\n";
+ exit();
+ }
+ $starttable = $argv[2];
+ $startrow = $argv[3];
+ $cfgfile = '.htconfig.php-mysql';
+}
+
+$cfg = parse_htconfig($cfgfile);
+$type = get_configtype($cfg);
+if($type != 'mysql') {
+ echo "Error. Must start with standard mysql installation in .htconfig.php.\n";
+ exit();
+}
+
+if(!$cfg['port'])
+ $cfg['port'] = 3306;
+try {
+ $mydb = new PDO("mysql:host={$cfg['host']};dbname={$cfg['data']};port={$cfg['port']}", $cfg['user'], $cfg['pass']);
+} catch (PDOException $e) {
+ echo "Error connecting to mysql DB: " . $e->getMessage() . "\n";
+ exit();
+}
+
+// mysql insists on buffering even when you use fetch() instead of fetchAll() for some stupid reason
+// http://stackoverflow.com/questions/6895098/pdo-mysql-memory-consumption-with-large-result-set
+$mydb->setAttribute(PDO::MYSQL_ATTR_USE_BUFFERED_QUERY, false);
+
+if(!file_exists('.htconfig.php-pgsql')) {
+ echo "Enter postgres server info:\n";
+ $p['host'] = get_data("Hostname: ", '/[\w.]+/');
+ $p['port'] = get_data("Enter port (0 for default): ", '/\d+/');
+ $p['user'] = get_data("Username: ", '/\w+/');
+ $p['pass'] = get_data("Password: ", '/[[:print:]]+/');
+ $p['data'] = get_data("Database name: ", '/\w+/');
+ $old = file_get_contents('.htconfig.php');
+ $new = preg_replace(
+ array(
+ '/^(\$db_host\s*=\s*\')([\w.]+)(\';)$/m',
+ '/^(\$db_port\s*=\s*\')(\d+)(\';)$/m',
+ '/^(\$db_user\s*=\s*\')(\w+)(\';)$/m',
+ '/^(\$db_pass\s*=\s*\')([[:print:]]+)(\';)/m',
+ '/^(\$db_data\s*=\s*\')(\w+)(\';)$/m',
+ '/^(\$db_type\s*=\s*\')(\d)(\';)$/m' // in case they already have it
+ ), array(
+ "$1{$p['host']}$3",
+ "\${1}{$p['port']}$3",
+ "$1{$p['user']}$3",
+ "$1{$p['pass']}$3",
+ "$1{$p['data']}$3\n\$db_type = '1';\n", // they probably don't
+ "\${1}1$3"
+ ),
+ $old,
+ 1,
+ $repl
+ );
+ if($new === false || $repl < 5) {
+ echo "Failed. Please make a postgres config file named .htconfig.php-pgsql - Be sure to add \"\$db_type = '1';\" to your config.\n";
+ exit();
+ }
+ file_put_contents('.htconfig.php-pgsql', $new);
+}
+
+$pcfg = parse_htconfig('.htconfig.php-pgsql');
+$ptype = get_configtype($pcfg);
+if($ptype != 'pgsql') {
+ echo "Error. Must have a valid pgsql config named .htconfig.php-pgsql. Be sure to add \"\$db_type = '1';\" to your config.\n";
+ exit();
+}
+
+if(!$pcfg['port'])
+ $pcfg['port'] = 5432;
+try {
+ $pgdb = new PDO("pgsql:host={$pcfg['host']};dbname={$pcfg['data']};port={$pcfg['port']}", $pcfg['user'], $pcfg['pass']);
+} catch (PDOException $e) {
+ echo "Error connecting to pgsql DB: " . $e->getMessage() . "\n";
+ echo "cfg string: " . "pgsql:host={$pcfg['host']};dbname={$pcfg['data']};port={$pcfg['port']}\n";
+ exit();
+}
+$B = "\033[0;34m";
+$H = "\033[0;35m";
+$W = "\033[1;37m";
+$M = "\033[1;31m";
+$N = "\033[0m";
+
+if(isset($starttable)) {
+ $r = ask_question("Ready to migrate {$W}Red{$M}(#){$W}Matrix$N from mysql db @$B{$cfg['host']}$N/$B{$cfg['data']}$N to postgres db @$B{$pcfg['host']}$N/$B{$pcfg['data']}$N.
+
+Resuming failed migration ({$M}experimental$N) starting at table '$starttable' row $startrow.
+Are you ready to begin (N/y)? ",
+ array('y', 'n'),
+ 'n'
+ );
+ if($r == 'n')
+ exit();
+} else {
+ $r = ask_question("Ready to migrate {$W}Red{$M}(#){$W}Matrix$N from mysql db @$B{$cfg['host']}$N/$B{$cfg['data']}$N to postgres db @$B{$pcfg['host']}$N/$B{$pcfg['data']}$N.
+The site will be disabled during the migration by moving the $H.htconfig.php$N file to $H.htconfig.php-mysql$N.
+If for any reason the migration fails, you will need to move the config file back into place manually before trying again.
+
+Are you ready to begin (N/y)? ", array('y','n'), 'n'
+ );
+
+ if($r == 'n')
+ exit();
+
+ rename('.htconfig.php', '.htconfig.php-mysql');
+
+ run_sql('install/schema_postgres.sql', $pgdb, $err, $n);
+ if($err) {
+ echo "There were $err errors creating the pgsql schema. Unable to continue.\n";
+ exit();
+ }
+
+ echo "pgsql schema created. $n queries executed successfully.\n";
+}
+
+$res = $pgdb->query("select relname, attname, pg_type.typname from ((pg_attribute inner join pg_class on attrelid=pg_class.oid) inner join pg_type on atttypid=pg_type.oid) inner join pg_namespace on relnamespace=pg_namespace.oid where nspname='public' and atttypid not in (26,27,28,29) and relkind='r' and attname <> 'item_search_vector';");
+if($res === false) {
+ echo "Error reading back schema. Unable to continue.\n";
+ var_export($pgdb->errorInfo());
+ exit();
+}
+$schema = array();
+while(($row = $res->fetch()) !== false)
+ $schema[$row[0]][$row[1]] = $row[2];
+
+$res = $pgdb->query("select relname, attname from pg_attribute inner join pg_class on attrelid=pg_class.oid inner join pg_constraint on conrelid=pg_class.oid and pg_attribute.attnum = any (conkey) where contype='p';");
+if($res === false) {
+ echo "Error reading back primary keys. Unable to continue.\n";
+ var_export($pgdb->errorInfo());
+ exit();
+}
+$pkeys = array();
+while(($row = $res->fetch()) !== false)
+ $pkeys[$row[0]] = $row[1];
+
+$err = 0; $n = 0;
+$reserved = array('ignore','key','with');
+foreach($schema as $table=>$fields) {
+ if(isset($starttable) && !$n && $table != $starttable) {
+ echo "Skipping table $table\n";
+ continue;
+ }
+ $fnames = array_keys($fields);
+ $pfnames = array_keys($fields);
+
+ foreach($fnames as &$fname)
+ if(in_array($fname, $reserved))
+ $fname = '`' . $fname . '`';
+ $fstr = implode(',', $fnames);
+
+ foreach($pfnames as &$pfname)
+ if(in_array($pfname, $reserved))
+ $pfname = '"' . $pfname . '"';
+ $pfstr = implode(',', $pfnames);
+
+ $cres = $mydb->query("SELECT count(*) FROM $table;");
+ if($cres === false) {
+ echo "Fatal error counting table $table: ".var_export($mydb->errorInfo(), true)."\n";
+ exit();
+ }
+ $nrows = $cres->fetchColumn(0);
+ $cres->closeCursor();
+
+ if(!$nrows) {
+ echo "TABLE $table has 0 rows in mysql db.\n";
+ continue;
+ }
+
+ $pstr = '';
+ for($x=0, $c=count($fields); $x < $c; $x++)
+ $pstr .= ($x ? ',?' : '?');
+
+ if(isset($starttable) && $table == $starttable) {
+ $selectsql = "SELECT $fstr FROM $table ORDER BY {$pkeys[$table]} LIMIT $nrows OFFSET $startrow;";
+ $crow = $startrow;
+ } else {
+ $selectsql = "SELECT $fstr FROM $table ORDER BY {$pkeys[$table]};";
+ $crow = 0;
+ }
+
+ echo "\033[255DTABLE: $table [$c fields] $crow/$nrows (".number_format(($crow/$nrows)*100,2)."%)\033[K";
+
+ $res = $mydb->query($selectsql);
+ if($res === false) {
+ echo "Fatal Error importing table $table: ".var_export($mydb->errorInfo(), true)."\n";
+ exit();
+ }
+
+ $istmt = $pgdb->prepare("INSERT INTO $table ($pfstr) VALUES ($pstr);");
+ if($istmt === false) {
+ echo "Fatal error preparing query. Aborting.\n";
+ var_export($pgdb->errorInfo());
+ exit();
+ }
+
+ while(($row = $res->fetch(PDO::FETCH_NUM)) !== false) {
+ foreach($row as $idx => &$val)
+ if(array_slice(array_values($fields),$idx,1)[0] == 'timestamp' && $val == '0000-00-00 00:00:00')
+ $istmt->bindParam($idx+1, ($nulldate='0001-01-01 00:00:00'));
+ else if(array_slice(array_values($fields),$idx,1)[0] == 'bytea')
+ $istmt->bindParam($idx+1, $val, PDO::PARAM_LOB);
+ else
+ $istmt->bindParam($idx+1, $val);
+ $r = $istmt->execute();
+ if($r === false) {
+ $err++;
+ echo "Insert error: ".var_export(array($pgdb->errorInfo(), $table, $fields, $row), true)."\nResume with {$argv[0]} --resume $table $crow\n";
+ exit();
+ } else
+ $n++;
+ $crow++;
+ if(($crow % 10) == 0 || $crow == $nrows)
+ echo "\033[255DTABLE: $table [$c fields] $crow/$nrows (".number_format(($crow/$nrows)*100,2)."%)\033[K";
+ }
+ $res->closeCursor();
+ echo "\n";
+}
+
+echo "Done with $err errors and $n inserts.\n";
+if($err) {
+ echo "Migration had errors. Aborting.\n";
+ exit();
+}
+
+run_sql('install/migrate_mypg_fixseq.sql', $pgdb, $err, $n);
+echo "Sequences updated with $err errors and $n inserts.\n";
+if($err)
+ exit();
+
+$r = ask_question("Everything successful. Once you connect up the pg database there is no going back. Do you want to make it live (N,y)?", array('y', 'n'), 'n');
+if($r == 'n') {
+ echo "You can make active by renaming .htconfig.php-pgsql to .htconfig.php, or start over by renaming .htconfig.php-mysql to .htconfig.php\n";
+ exit();
+}
+
+rename('.htconfig.php-pgsql', '.htconfig.php');
+echo "Done. {$W}Red{$M}(#){$W}Matrix$N now running on postgres.\n";
+
+
diff --git a/install/migrate_mypg_fixseq.sql b/install/migrate_mypg_fixseq.sql
new file mode 100644
index 000000000..806c5cf31
--- /dev/null
+++ b/install/migrate_mypg_fixseq.sql
@@ -0,0 +1,55 @@
+ SELECT SETVAL('public.abook_abook_id_seq', COALESCE(MAX(abook_id), 1) ) FROM public.abook;
+ SELECT SETVAL('public.account_account_id_seq', COALESCE(MAX(account_id), 1) ) FROM public.account;
+ SELECT SETVAL('public.addon_id_seq', COALESCE(MAX(id), 1) ) FROM public.addon;
+ SELECT SETVAL('public.app_id_seq', COALESCE(MAX(id), 1) ) FROM public.app;
+ SELECT SETVAL('public.attach_id_seq', COALESCE(MAX(id), 1) ) FROM public.attach;
+ SELECT SETVAL('public.channel_channel_id_seq', COALESCE(MAX(channel_id), 1) ) FROM public.channel;
+ SELECT SETVAL('public.chat_chat_id_seq', COALESCE(MAX(chat_id), 1) ) FROM public.chat;
+ SELECT SETVAL('public.chatpresence_cp_id_seq', COALESCE(MAX(cp_id), 1) ) FROM public.chatpresence;
+ SELECT SETVAL('public.chatroom_cr_id_seq', COALESCE(MAX(cr_id), 1) ) FROM public.chatroom;
+ SELECT SETVAL('public.config_id_seq', COALESCE(MAX(id), 1) ) FROM public.config;
+ SELECT SETVAL('public.conv_id_seq', COALESCE(MAX(id), 1) ) FROM public.conv;
+ SELECT SETVAL('public.event_id_seq', COALESCE(MAX(id), 1) ) FROM public.event;
+ SELECT SETVAL('public.fcontact_id_seq', COALESCE(MAX(id), 1) ) FROM public.fcontact;
+ SELECT SETVAL('public.ffinder_id_seq', COALESCE(MAX(id), 1) ) FROM public.ffinder;
+ SELECT SETVAL('public.fserver_id_seq', COALESCE(MAX(id), 1) ) FROM public.fserver;
+ SELECT SETVAL('public.fsuggest_id_seq', COALESCE(MAX(id), 1) ) FROM public.fsuggest;
+ SELECT SETVAL('public.group_member_id_seq', COALESCE(MAX(id), 1) ) FROM public.group_member;
+ SELECT SETVAL('public.groups_id_seq', COALESCE(MAX(id), 1) ) FROM public.groups;
+ SELECT SETVAL('public.hook_id_seq', COALESCE(MAX(id), 1) ) FROM public.hook;
+ SELECT SETVAL('public.hubloc_hubloc_id_seq', COALESCE(MAX(hubloc_id), 1) ) FROM public.hubloc;
+ SELECT SETVAL('public.issue_issue_id_seq', COALESCE(MAX(issue_id), 1) ) FROM public.issue;
+ SELECT SETVAL('public.item_id_id_seq', COALESCE(MAX(id), 1) ) FROM public.item_id;
+ SELECT SETVAL('public.item_id_seq', COALESCE(MAX(id), 1) ) FROM public.item;
+ SELECT SETVAL('public.likes_id_seq', COALESCE(MAX(id), 1) ) FROM public.likes;
+ SELECT SETVAL('public.mail_id_seq', COALESCE(MAX(id), 1) ) FROM public.mail;
+ SELECT SETVAL('public.manage_id_seq', COALESCE(MAX(id), 1) ) FROM public.manage;
+ SELECT SETVAL('public.menu_item_mitem_id_seq', COALESCE(MAX(mitem_id), 1) ) FROM public.menu_item;
+ SELECT SETVAL('public.menu_menu_id_seq', COALESCE(MAX(menu_id), 1) ) FROM public.menu;
+ SELECT SETVAL('public.notify_id_seq', COALESCE(MAX(id), 1) ) FROM public.notify;
+ SELECT SETVAL('public.obj_obj_id_seq', COALESCE(MAX(obj_id), 1) ) FROM public.obj;
+ SELECT SETVAL('public.pconfig_id_seq', COALESCE(MAX(id), 1) ) FROM public.pconfig;
+ SELECT SETVAL('public.photo_id_seq', COALESCE(MAX(id), 1) ) FROM public.photo;
+ SELECT SETVAL('public.poll_elm_pelm_id_seq', COALESCE(MAX(pelm_id), 1) ) FROM public.poll_elm;
+ SELECT SETVAL('public.poll_poll_id_seq', COALESCE(MAX(poll_id), 1) ) FROM public.poll;
+ SELECT SETVAL('public.profdef_id_seq', COALESCE(MAX(id), 1) ) FROM public.profdef;
+ SELECT SETVAL('public.profext_id_seq', COALESCE(MAX(id), 1) ) FROM public.profext;
+ SELECT SETVAL('public.profile_check_id_seq', COALESCE(MAX(id), 1) ) FROM public.profile_check;
+ SELECT SETVAL('public.profile_id_seq', COALESCE(MAX(id), 1) ) FROM public.profile;
+ SELECT SETVAL('public.register_id_seq', COALESCE(MAX(id), 1) ) FROM public.register;
+ SELECT SETVAL('public.session_id_seq', COALESCE(MAX(id), 1) ) FROM public.session;
+ SELECT SETVAL('public.shares_share_id_seq', COALESCE(MAX(share_id), 1) ) FROM public.shares;
+ SELECT SETVAL('public.sign_id_seq', COALESCE(MAX(id), 1) ) FROM public.sign;
+ SELECT SETVAL('public.source_src_id_seq', COALESCE(MAX(src_id), 1) ) FROM public.source;
+ SELECT SETVAL('public.spam_id_seq', COALESCE(MAX(id), 1) ) FROM public.spam;
+ SELECT SETVAL('public.sys_perms_id_seq', COALESCE(MAX(id), 1) ) FROM public.sys_perms;
+ SELECT SETVAL('public.term_tid_seq', COALESCE(MAX(tid), 1) ) FROM public.term;
+ SELECT SETVAL('public.updates_ud_id_seq', COALESCE(MAX(ud_id), 1) ) FROM public.updates;
+ SELECT SETVAL('public.verify_id_seq', COALESCE(MAX(id), 1) ) FROM public.verify;
+ SELECT SETVAL('public.vote_vote_id_seq', COALESCE(MAX(vote_id), 1) ) FROM public.vote;
+ SELECT SETVAL('public.xchat_xchat_id_seq', COALESCE(MAX(xchat_id), 1) ) FROM public.xchat;
+ SELECT SETVAL('public.xconfig_id_seq', COALESCE(MAX(id), 1) ) FROM public.xconfig;
+ SELECT SETVAL('public.xign_id_seq', COALESCE(MAX(id), 1) ) FROM public.xign;
+ SELECT SETVAL('public.xlink_xlink_id_seq', COALESCE(MAX(xlink_id), 1) ) FROM public.xlink;
+ SELECT SETVAL('public.xtag_xtag_id_seq', COALESCE(MAX(xtag_id), 1) ) FROM public.xtag;
+
diff --git a/install/schema_mysql.sql b/install/schema_mysql.sql
new file mode 100644
index 000000000..ce3f07a89
--- /dev/null
+++ b/install/schema_mysql.sql
@@ -0,0 +1,1591 @@
+-- --------------------------------------------------------
+
+--
+-- Table structure for table `abook`
+--
+
+CREATE TABLE IF NOT EXISTS `abook` (
+ `abook_id` int(10) unsigned NOT NULL AUTO_INCREMENT,
+ `abook_account` int(10) unsigned NOT NULL DEFAULT '0',
+ `abook_channel` int(10) unsigned NOT NULL DEFAULT '0',
+ `abook_xchan` char(255) NOT NULL DEFAULT '',
+ `abook_my_perms` int(11) NOT NULL DEFAULT '0',
+ `abook_their_perms` int(11) NOT NULL DEFAULT '0',
+ `abook_closeness` tinyint(3) unsigned NOT NULL DEFAULT '99',
+ `abook_rating` int(11) NOT NULL DEFAULT '0',
+ `abook_created` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
+ `abook_updated` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
+ `abook_connected` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
+ `abook_dob` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
+ `abook_flags` int(11) NOT NULL DEFAULT '0',
+ `abook_profile` char(64) NOT NULL DEFAULT '',
+ PRIMARY KEY (`abook_id`),
+ KEY `abook_account` (`abook_account`),
+ KEY `abook_channel` (`abook_channel`),
+ KEY `abook_xchan` (`abook_xchan`),
+ KEY `abook_my_perms` (`abook_my_perms`),
+ KEY `abook_their_perms` (`abook_their_perms`),
+ KEY `abook_closeness` (`abook_closeness`),
+ KEY `abook_created` (`abook_created`),
+ KEY `abook_updated` (`abook_updated`),
+ KEY `abook_flags` (`abook_flags`),
+ KEY `abook_profile` (`abook_profile`),
+ KEY `abook_dob` (`abook_dob`),
+ KEY `abook_connected` (`abook_connected`),
+ KEY `abook_rating` (`abook_rating`)
+) ENGINE=MyISAM DEFAULT CHARSET=utf8;
+
+-- --------------------------------------------------------
+
+--
+-- Table structure for table `account`
+--
+
+CREATE TABLE IF NOT EXISTS `account` (
+ `account_id` int(10) unsigned NOT NULL AUTO_INCREMENT,
+ `account_parent` int(10) unsigned NOT NULL DEFAULT '0',
+ `account_default_channel` int(10) unsigned NOT NULL DEFAULT '0',
+ `account_salt` char(32) NOT NULL DEFAULT '',
+ `account_password` char(255) NOT NULL DEFAULT '',
+ `account_email` char(255) NOT NULL DEFAULT '',
+ `account_external` char(255) NOT NULL DEFAULT '',
+ `account_language` char(16) NOT NULL DEFAULT 'en',
+ `account_created` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
+ `account_lastlog` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
+ `account_flags` int(10) unsigned NOT NULL DEFAULT '0',
+ `account_roles` int(10) unsigned NOT NULL DEFAULT '0',
+ `account_reset` char(255) NOT NULL DEFAULT '',
+ `account_expires` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
+ `account_expire_notified` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
+ `account_service_class` char(32) NOT NULL DEFAULT '',
+ `account_level` int(10) unsigned NOT NULL DEFAULT '0',
+ `account_password_changed` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
+ PRIMARY KEY (`account_id`),
+ KEY `account_email` (`account_email`),
+ KEY `account_service_class` (`account_service_class`),
+ KEY `account_parent` (`account_parent`),
+ KEY `account_flags` (`account_flags`),
+ KEY `account_roles` (`account_roles`),
+ KEY `account_lastlog` (`account_lastlog`),
+ KEY `account_expires` (`account_expires`),
+ KEY `account_default_channel` (`account_default_channel`),
+ KEY `account_external` (`account_external`),
+ KEY `account_level` (`account_level`),
+ KEY `account_password_changed` (`account_password_changed`)
+) ENGINE=MyISAM DEFAULT CHARSET=utf8;
+
+-- --------------------------------------------------------
+
+--
+-- Table structure for table `addon`
+--
+
+CREATE TABLE IF NOT EXISTS `addon` (
+ `id` int(11) NOT NULL AUTO_INCREMENT,
+ `name` char(255) NOT NULL DEFAULT '',
+ `version` char(255) NOT NULL DEFAULT '',
+ `installed` tinyint(1) NOT NULL DEFAULT '0',
+ `hidden` tinyint(1) NOT NULL DEFAULT '0',
+ `timestamp` bigint(20) NOT NULL DEFAULT '0',
+ `plugin_admin` tinyint(1) NOT NULL DEFAULT '0',
+ PRIMARY KEY (`id`),
+ KEY `hidden` (`hidden`),
+ KEY `name` (`name`),
+ KEY `installed` (`installed`)
+) ENGINE=MyISAM DEFAULT CHARSET=utf8;
+
+-- --------------------------------------------------------
+
+--
+-- Table structure for table `app`
+--
+
+CREATE TABLE IF NOT EXISTS `app` (
+ `id` int(11) NOT NULL AUTO_INCREMENT,
+ `app_id` char(255) NOT NULL DEFAULT '',
+ `app_sig` char(255) NOT NULL DEFAULT '',
+ `app_author` char(255) NOT NULL DEFAULT '',
+ `app_name` char(255) NOT NULL DEFAULT '',
+ `app_desc` text NOT NULL,
+ `app_url` char(255) NOT NULL DEFAULT '',
+ `app_photo` char(255) NOT NULL DEFAULT '',
+ `app_version` char(255) NOT NULL DEFAULT '',
+ `app_channel` int(11) NOT NULL DEFAULT '0',
+ `app_addr` char(255) NOT NULL DEFAULT '',
+ `app_price` char(255) NOT NULL DEFAULT '',
+ `app_page` char(255) NOT NULL DEFAULT '',
+ `app_requires` char(255) NOT NULL DEFAULT '',
+ PRIMARY KEY (`id`),
+ KEY `app_id` (`app_id`),
+ KEY `app_name` (`app_name`),
+ KEY `app_url` (`app_url`),
+ KEY `app_photo` (`app_photo`),
+ KEY `app_version` (`app_version`),
+ KEY `app_channel` (`app_channel`),
+ KEY `app_price` (`app_price`)
+) ENGINE=MyISAM DEFAULT CHARSET=utf8;
+
+-- --------------------------------------------------------
+
+--
+-- Table structure for table `attach`
+--
+
+CREATE TABLE IF NOT EXISTS `attach` (
+ `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
+ `aid` int(10) unsigned NOT NULL DEFAULT '0',
+ `uid` int(10) unsigned NOT NULL DEFAULT '0',
+ `hash` char(64) NOT NULL DEFAULT '',
+ `creator` char(128) NOT NULL DEFAULT '',
+ `filename` char(255) NOT NULL DEFAULT '',
+ `filetype` char(64) NOT NULL DEFAULT '',
+ `filesize` int(10) unsigned NOT NULL DEFAULT '0',
+ `revision` int(10) unsigned NOT NULL DEFAULT '0',
+ `folder` char(64) NOT NULL DEFAULT '',
+ `flags` int(10) unsigned NOT NULL DEFAULT '0',
+ `data` longblob NOT NULL,
+ `created` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
+ `edited` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
+ `allow_cid` mediumtext NOT NULL,
+ `allow_gid` mediumtext NOT NULL,
+ `deny_cid` mediumtext NOT NULL,
+ `deny_gid` mediumtext NOT NULL,
+ PRIMARY KEY (`id`),
+ KEY `aid` (`aid`),
+ KEY `uid` (`uid`),
+ KEY `hash` (`hash`),
+ KEY `filename` (`filename`),
+ KEY `filetype` (`filetype`),
+ KEY `filesize` (`filesize`),
+ KEY `created` (`created`),
+ KEY `edited` (`edited`),
+ KEY `revision` (`revision`),
+ KEY `folder` (`folder`),
+ KEY `flags` (`flags`),
+ KEY `creator` (`creator`)
+) ENGINE=MyISAM DEFAULT CHARSET=utf8;
+
+-- --------------------------------------------------------
+
+--
+-- Table structure for table `auth_codes`
+--
+
+CREATE TABLE IF NOT EXISTS `auth_codes` (
+ `id` varchar(40) NOT NULL DEFAULT '',
+ `client_id` varchar(20) NOT NULL DEFAULT '',
+ `redirect_uri` varchar(200) NOT NULL DEFAULT '',
+ `expires` int(11) NOT NULL DEFAULT '0',
+ `scope` varchar(250) NOT NULL DEFAULT '',
+ PRIMARY KEY (`id`)
+) ENGINE=MyISAM DEFAULT CHARSET=utf8;
+
+-- --------------------------------------------------------
+
+--
+-- Table structure for table `cache`
+--
+
+CREATE TABLE IF NOT EXISTS `cache` (
+ `k` char(255) NOT NULL DEFAULT '',
+ `v` text NOT NULL,
+ `updated` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
+ PRIMARY KEY (`k`)
+) ENGINE=MyISAM DEFAULT CHARSET=utf8;
+
+-- --------------------------------------------------------
+
+--
+-- Table structure for table `channel`
+--
+
+CREATE TABLE IF NOT EXISTS `channel` (
+ `channel_id` int(10) unsigned NOT NULL AUTO_INCREMENT,
+ `channel_account_id` int(10) unsigned NOT NULL DEFAULT '0',
+ `channel_primary` tinyint(1) unsigned NOT NULL DEFAULT '0',
+ `channel_name` char(255) NOT NULL DEFAULT '',
+ `channel_address` char(255) NOT NULL DEFAULT '',
+ `channel_guid` char(255) NOT NULL DEFAULT '',
+ `channel_guid_sig` text NOT NULL,
+ `channel_hash` char(255) NOT NULL DEFAULT '',
+ `channel_timezone` char(128) NOT NULL DEFAULT 'UTC',
+ `channel_location` char(255) NOT NULL DEFAULT '',
+ `channel_theme` char(255) NOT NULL DEFAULT '',
+ `channel_startpage` char(255) NOT NULL DEFAULT '',
+ `channel_pubkey` text NOT NULL,
+ `channel_prvkey` text NOT NULL,
+ `channel_notifyflags` int(10) unsigned NOT NULL DEFAULT '65535',
+ `channel_pageflags` int(10) unsigned NOT NULL DEFAULT '0',
+ `channel_dirdate` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
+ `channel_deleted` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
+ `channel_max_anon_mail` int(10) unsigned NOT NULL DEFAULT '10',
+ `channel_max_friend_req` int(10) unsigned NOT NULL DEFAULT '10',
+ `channel_expire_days` int(11) NOT NULL DEFAULT '0',
+ `channel_passwd_reset` char(255) NOT NULL DEFAULT '',
+ `channel_default_group` char(255) NOT NULL DEFAULT '',
+ `channel_allow_cid` mediumtext NOT NULL,
+ `channel_allow_gid` mediumtext NOT NULL,
+ `channel_deny_cid` mediumtext NOT NULL,
+ `channel_deny_gid` mediumtext NOT NULL,
+ `channel_r_stream` int(10) unsigned NOT NULL DEFAULT '0',
+ `channel_r_profile` int(10) unsigned NOT NULL DEFAULT '0',
+ `channel_r_photos` int(10) unsigned NOT NULL DEFAULT '0',
+ `channel_r_abook` int(10) unsigned NOT NULL DEFAULT '0',
+ `channel_w_stream` int(10) unsigned NOT NULL DEFAULT '0',
+ `channel_w_wall` int(10) unsigned NOT NULL DEFAULT '0',
+ `channel_w_tagwall` int(10) unsigned NOT NULL DEFAULT '0',
+ `channel_w_comment` int(10) unsigned NOT NULL DEFAULT '0',
+ `channel_w_mail` int(10) unsigned NOT NULL DEFAULT '0',
+ `channel_w_photos` int(10) unsigned NOT NULL DEFAULT '0',
+ `channel_w_chat` int(10) unsigned NOT NULL DEFAULT '0',
+ `channel_a_delegate` int(10) unsigned NOT NULL DEFAULT '0',
+ `channel_r_storage` int(10) unsigned NOT NULL DEFAULT '0',
+ `channel_w_storage` int(10) unsigned NOT NULL DEFAULT '0',
+ `channel_r_pages` int(10) unsigned NOT NULL DEFAULT '0',
+ `channel_w_pages` int(10) unsigned NOT NULL DEFAULT '0',
+ `channel_a_republish` int(10) unsigned NOT NULL DEFAULT '0',
+ `channel_w_like` int(10) unsigned NOT NULL DEFAULT '0',
+ PRIMARY KEY (`channel_id`),
+ UNIQUE KEY `channel_address_unique` (`channel_address`),
+ KEY `channel_account_id` (`channel_account_id`),
+ KEY `channel_primary` (`channel_primary`),
+ KEY `channel_name` (`channel_name`),
+ KEY `channel_timezone` (`channel_timezone`),
+ KEY `channel_location` (`channel_location`),
+ KEY `channel_theme` (`channel_theme`),
+ KEY `channel_notifyflags` (`channel_notifyflags`),
+ KEY `channel_pageflags` (`channel_pageflags`),
+ KEY `channel_max_anon_mail` (`channel_max_anon_mail`),
+ KEY `channel_max_friend_req` (`channel_max_friend_req`),
+ KEY `channel_default_gid` (`channel_default_group`),
+ KEY `channel_r_stream` (`channel_r_stream`),
+ KEY `channel_r_profile` (`channel_r_profile`),
+ KEY `channel_r_photos` (`channel_r_photos`),
+ KEY `channel_r_abook` (`channel_r_abook`),
+ KEY `channel_w_stream` (`channel_w_stream`),
+ KEY `channel_w_wall` (`channel_w_wall`),
+ KEY `channel_w_tagwall` (`channel_w_tagwall`),
+ KEY `channel_w_comment` (`channel_w_comment`),
+ KEY `channel_w_mail` (`channel_w_mail`),
+ KEY `channel_w_photos` (`channel_w_photos`),
+ KEY `channel_w_chat` (`channel_w_chat`),
+ KEY `channel_guid` (`channel_guid`),
+ KEY `channel_hash` (`channel_hash`),
+ KEY `channel_expire_days` (`channel_expire_days`),
+ KEY `channel_a_delegate` (`channel_a_delegate`),
+ KEY `channel_r_storage` (`channel_r_storage`),
+ KEY `channel_w_storage` (`channel_w_storage`),
+ KEY `channel_r_pages` (`channel_r_pages`),
+ KEY `channel_w_pages` (`channel_w_pages`),
+ KEY `channel_deleted` (`channel_deleted`),
+ KEY `channel_a_republish` (`channel_a_republish`),
+ KEY `channel_dirdate` (`channel_dirdate`),
+ KEY `channel_w_like` (`channel_w_like`)
+) ENGINE=MyISAM DEFAULT CHARSET=utf8;
+
+-- --------------------------------------------------------
+
+--
+-- Table structure for table `chat`
+--
+
+CREATE TABLE IF NOT EXISTS `chat` (
+ `chat_id` int(10) unsigned NOT NULL AUTO_INCREMENT,
+ `chat_room` int(10) unsigned NOT NULL DEFAULT '0',
+ `chat_xchan` char(255) NOT NULL DEFAULT '',
+ `chat_text` mediumtext NOT NULL,
+ `created` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
+ PRIMARY KEY (`chat_id`),
+ KEY `chat_room` (`chat_room`),
+ KEY `chat_xchan` (`chat_xchan`),
+ KEY `created` (`created`)
+) ENGINE=MyISAM DEFAULT CHARSET=utf8;
+
+-- --------------------------------------------------------
+
+--
+-- Table structure for table `chatpresence`
+--
+
+CREATE TABLE IF NOT EXISTS `chatpresence` (
+ `cp_id` int(10) unsigned NOT NULL AUTO_INCREMENT,
+ `cp_room` int(10) unsigned NOT NULL DEFAULT '0',
+ `cp_xchan` char(255) NOT NULL DEFAULT '',
+ `cp_last` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
+ `cp_status` char(255) NOT NULL DEFAULT '',
+ `cp_client` char(128) NOT NULL DEFAULT '',
+ PRIMARY KEY (`cp_id`),
+ KEY `cp_room` (`cp_room`),
+ KEY `cp_xchan` (`cp_xchan`),
+ KEY `cp_last` (`cp_last`),
+ KEY `cp_status` (`cp_status`)
+) ENGINE=MyISAM DEFAULT CHARSET=utf8;
+
+-- --------------------------------------------------------
+
+--
+-- Table structure for table `chatroom`
+--
+
+CREATE TABLE IF NOT EXISTS `chatroom` (
+ `cr_id` int(10) unsigned NOT NULL AUTO_INCREMENT,
+ `cr_aid` int(10) unsigned NOT NULL DEFAULT '0',
+ `cr_uid` int(10) unsigned NOT NULL DEFAULT '0',
+ `cr_name` char(255) NOT NULL DEFAULT '',
+ `cr_created` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
+ `cr_edited` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
+ `cr_expire` int(10) unsigned NOT NULL DEFAULT '0',
+ `allow_cid` mediumtext NOT NULL,
+ `allow_gid` mediumtext NOT NULL,
+ `deny_cid` mediumtext NOT NULL,
+ `deny_gid` mediumtext NOT NULL,
+ PRIMARY KEY (`cr_id`),
+ KEY `cr_aid` (`cr_aid`),
+ KEY `cr_uid` (`cr_uid`),
+ KEY `cr_name` (`cr_name`),
+ KEY `cr_created` (`cr_created`),
+ KEY `cr_edited` (`cr_edited`),
+ KEY `cr_expire` (`cr_expire`)
+) ENGINE=MyISAM DEFAULT CHARSET=utf8;
+
+-- --------------------------------------------------------
+
+--
+-- Table structure for table `clients`
+--
+
+CREATE TABLE IF NOT EXISTS `clients` (
+ `client_id` varchar(20) NOT NULL DEFAULT '',
+ `pw` varchar(20) NOT NULL DEFAULT '',
+ `redirect_uri` varchar(200) NOT NULL DEFAULT '',
+ `name` text,
+ `icon` text,
+ `uid` int(11) NOT NULL DEFAULT '0',
+ PRIMARY KEY (`client_id`)
+) ENGINE=MyISAM DEFAULT CHARSET=utf8;
+
+-- --------------------------------------------------------
+
+--
+-- Table structure for table `config`
+--
+
+CREATE TABLE IF NOT EXISTS `config` (
+ `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
+ `cat` char(255) CHARACTER SET ascii NOT NULL DEFAULT '',
+ `k` char(255) CHARACTER SET ascii NOT NULL DEFAULT '',
+ `v` text NOT NULL,
+ PRIMARY KEY (`id`),
+ UNIQUE KEY `access` (`cat`,`k`)
+) ENGINE=MyISAM DEFAULT CHARSET=utf8;
+
+-- --------------------------------------------------------
+
+--
+-- Table structure for table `conv`
+--
+
+CREATE TABLE IF NOT EXISTS `conv` (
+ `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
+ `guid` char(255) NOT NULL DEFAULT '',
+ `recips` mediumtext NOT NULL,
+ `uid` int(11) NOT NULL DEFAULT '0',
+ `creator` char(255) NOT NULL DEFAULT '',
+ `created` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
+ `updated` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
+ `subject` mediumtext NOT NULL,
+ PRIMARY KEY (`id`),
+ KEY `created` (`created`),
+ KEY `updated` (`updated`)
+) ENGINE=MyISAM DEFAULT CHARSET=utf8;
+
+-- --------------------------------------------------------
+
+--
+-- Table structure for table `event`
+--
+
+CREATE TABLE IF NOT EXISTS `event` (
+ `id` int(11) NOT NULL AUTO_INCREMENT,
+ `aid` int(10) unsigned NOT NULL DEFAULT '0',
+ `uid` int(11) NOT NULL DEFAULT '0',
+ `event_xchan` char(255) NOT NULL DEFAULT '',
+ `event_hash` char(255) NOT NULL DEFAULT '',
+ `created` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
+ `edited` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
+ `start` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
+ `finish` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
+ `summary` text NOT NULL,
+ `description` text NOT NULL,
+ `location` text NOT NULL,
+ `type` char(255) NOT NULL DEFAULT '',
+ `nofinish` tinyint(1) NOT NULL DEFAULT '0',
+ `adjust` tinyint(1) NOT NULL DEFAULT '1',
+ `ignore` tinyint(1) NOT NULL DEFAULT '0',
+ `allow_cid` mediumtext NOT NULL,
+ `allow_gid` mediumtext NOT NULL,
+ `deny_cid` mediumtext NOT NULL,
+ `deny_gid` mediumtext NOT NULL,
+ PRIMARY KEY (`id`),
+ KEY `uid` (`uid`),
+ KEY `type` (`type`),
+ KEY `start` (`start`),
+ KEY `finish` (`finish`),
+ KEY `adjust` (`adjust`),
+ KEY `nofinish` (`nofinish`),
+ KEY `ignore` (`ignore`),
+ KEY `aid` (`aid`),
+ KEY `event_hash` (`event_hash`),
+ KEY `event_xchan` (`event_xchan`)
+) ENGINE=MyISAM DEFAULT CHARSET=utf8;
+
+-- --------------------------------------------------------
+
+--
+-- Table structure for table `fcontact`
+--
+
+CREATE TABLE IF NOT EXISTS `fcontact` (
+ `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
+ `url` char(255) NOT NULL,
+ `name` char(255) NOT NULL,
+ `photo` char(255) NOT NULL,
+ `request` char(255) NOT NULL,
+ `nick` char(255) NOT NULL,
+ `addr` char(255) NOT NULL,
+ `batch` char(255) NOT NULL,
+ `notify` char(255) NOT NULL,
+ `poll` char(255) NOT NULL,
+ `confirm` char(255) NOT NULL,
+ `priority` tinyint(1) NOT NULL,
+ `network` char(32) NOT NULL,
+ `alias` char(255) NOT NULL,
+ `pubkey` text NOT NULL,
+ `updated` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
+ PRIMARY KEY (`id`),
+ KEY `addr` (`addr`),
+ KEY `network` (`network`)
+) ENGINE=MyISAM DEFAULT CHARSET=utf8;
+
+-- --------------------------------------------------------
+
+--
+-- Table structure for table `ffinder`
+--
+
+CREATE TABLE IF NOT EXISTS `ffinder` (
+ `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
+ `uid` int(10) unsigned NOT NULL,
+ `cid` int(10) unsigned NOT NULL,
+ `fid` int(10) unsigned NOT NULL,
+ PRIMARY KEY (`id`),
+ KEY `uid` (`uid`),
+ KEY `cid` (`cid`),
+ KEY `fid` (`fid`)
+) ENGINE=MyISAM DEFAULT CHARSET=utf8;
+
+-- --------------------------------------------------------
+
+--
+-- Table structure for table `fserver`
+--
+
+CREATE TABLE IF NOT EXISTS `fserver` (
+ `id` int(11) NOT NULL AUTO_INCREMENT,
+ `server` char(255) NOT NULL DEFAULT '',
+ `posturl` char(255) NOT NULL DEFAULT '',
+ `key` text NOT NULL,
+ PRIMARY KEY (`id`),
+ KEY `server` (`server`),
+ KEY `posturl` (`posturl`)
+) ENGINE=MyISAM DEFAULT CHARSET=utf8;
+
+-- --------------------------------------------------------
+
+--
+-- Table structure for table `fsuggest`
+--
+
+CREATE TABLE IF NOT EXISTS `fsuggest` (
+ `id` int(11) NOT NULL AUTO_INCREMENT,
+ `uid` int(11) NOT NULL DEFAULT '0',
+ `cid` int(11) NOT NULL DEFAULT '0',
+ `name` char(255) NOT NULL DEFAULT '',
+ `url` char(255) NOT NULL DEFAULT '',
+ `request` char(255) NOT NULL DEFAULT '',
+ `photo` char(255) NOT NULL DEFAULT '',
+ `note` text NOT NULL,
+ `created` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
+ PRIMARY KEY (`id`)
+) ENGINE=MyISAM DEFAULT CHARSET=utf8;
+
+-- --------------------------------------------------------
+
+--
+-- Table structure for table `groups`
+--
+
+CREATE TABLE IF NOT EXISTS `groups` (
+ `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
+ `hash` char(255) NOT NULL DEFAULT '',
+ `uid` int(10) unsigned NOT NULL DEFAULT '0',
+ `visible` tinyint(1) NOT NULL DEFAULT '0',
+ `deleted` tinyint(1) NOT NULL DEFAULT '0',
+ `name` char(255) NOT NULL DEFAULT '',
+ PRIMARY KEY (`id`),
+ KEY `uid` (`uid`),
+ KEY `visible` (`visible`),
+ KEY `deleted` (`deleted`),
+ KEY `hash` (`hash`)
+) ENGINE=MyISAM DEFAULT CHARSET=utf8;
+
+-- --------------------------------------------------------
+
+--
+-- Table structure for table `group_member`
+--
+
+CREATE TABLE IF NOT EXISTS `group_member` (
+ `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
+ `uid` int(10) unsigned NOT NULL DEFAULT '0',
+ `gid` int(10) unsigned NOT NULL DEFAULT '0',
+ `xchan` char(255) NOT NULL DEFAULT '',
+ PRIMARY KEY (`id`),
+ KEY `uid` (`uid`),
+ KEY `gid` (`gid`),
+ KEY `xchan` (`xchan`)
+) ENGINE=MyISAM DEFAULT CHARSET=utf8;
+
+-- --------------------------------------------------------
+
+--
+-- Table structure for table `hook`
+--
+
+CREATE TABLE IF NOT EXISTS `hook` (
+ `id` int(11) NOT NULL AUTO_INCREMENT,
+ `hook` char(255) NOT NULL DEFAULT '',
+ `file` char(255) NOT NULL DEFAULT '',
+ `function` char(255) NOT NULL DEFAULT '',
+ `priority` int(11) unsigned NOT NULL DEFAULT '0',
+ PRIMARY KEY (`id`),
+ KEY `hook` (`hook`)
+) ENGINE=MyISAM DEFAULT CHARSET=utf8;
+
+-- --------------------------------------------------------
+
+--
+-- Table structure for table `hubloc`
+--
+
+CREATE TABLE IF NOT EXISTS `hubloc` (
+ `hubloc_id` int(10) unsigned NOT NULL AUTO_INCREMENT,
+ `hubloc_guid` char(255) NOT NULL DEFAULT '',
+ `hubloc_guid_sig` text NOT NULL,
+ `hubloc_hash` char(255) NOT NULL DEFAULT '',
+ `hubloc_addr` char(255) NOT NULL DEFAULT '',
+ `hubloc_network` char(32) NOT NULL DEFAULT '',
+ `hubloc_flags` int(10) unsigned NOT NULL DEFAULT '0',
+ `hubloc_status` int(10) unsigned NOT NULL DEFAULT '0',
+ `hubloc_url` char(255) NOT NULL DEFAULT '',
+ `hubloc_url_sig` text NOT NULL,
+ `hubloc_host` char(255) NOT NULL DEFAULT '',
+ `hubloc_callback` char(255) NOT NULL DEFAULT '',
+ `hubloc_connect` char(255) NOT NULL DEFAULT '',
+ `hubloc_sitekey` text NOT NULL,
+ `hubloc_updated` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
+ `hubloc_connected` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
+ PRIMARY KEY (`hubloc_id`),
+ KEY `hubloc_url` (`hubloc_url`),
+ KEY `hubloc_guid` (`hubloc_guid`),
+ KEY `hubloc_flags` (`hubloc_flags`),
+ KEY `hubloc_connect` (`hubloc_connect`),
+ KEY `hubloc_host` (`hubloc_host`),
+ KEY `hubloc_addr` (`hubloc_addr`),
+ KEY `hubloc_updated` (`hubloc_updated`),
+ KEY `hubloc_connected` (`hubloc_connected`),
+ KEY `hubloc_status` (`hubloc_status`),
+ KEY `hubloc_network` (`hubloc_network`)
+) ENGINE=MyISAM DEFAULT CHARSET=utf8;
+
+-- --------------------------------------------------------
+
+--
+-- Table structure for table `issue`
+--
+
+CREATE TABLE IF NOT EXISTS `issue` (
+ `issue_id` int(10) unsigned NOT NULL AUTO_INCREMENT,
+ `issue_created` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
+ `issue_updated` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
+ `issue_assigned` char(255) NOT NULL DEFAULT '',
+ `issue_priority` int(11) NOT NULL DEFAULT '0',
+ `issue_status` int(11) NOT NULL DEFAULT '0',
+ `issue_component` char(255) NOT NULL DEFAULT '',
+ PRIMARY KEY (`issue_id`),
+ KEY `issue_created` (`issue_created`),
+ KEY `issue_updated` (`issue_updated`),
+ KEY `issue_assigned` (`issue_assigned`),
+ KEY `issue_priority` (`issue_priority`),
+ KEY `issue_status` (`issue_status`),
+ KEY `issue_component` (`issue_component`)
+) ENGINE=MyISAM DEFAULT CHARSET=utf8;
+
+-- --------------------------------------------------------
+
+--
+-- Table structure for table `item`
+--
+
+CREATE TABLE IF NOT EXISTS `item` (
+ `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
+ `mid` char(255) CHARACTER SET ascii NOT NULL DEFAULT '',
+ `aid` int(10) unsigned NOT NULL DEFAULT '0',
+ `uid` int(10) unsigned NOT NULL DEFAULT '0',
+ `parent` int(10) unsigned NOT NULL DEFAULT '0',
+ `parent_mid` char(255) CHARACTER SET ascii NOT NULL DEFAULT '',
+ `thr_parent` char(255) NOT NULL DEFAULT '',
+ `created` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
+ `edited` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
+ `expires` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
+ `commented` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
+ `received` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
+ `changed` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
+ `comments_closed` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
+ `owner_xchan` char(255) NOT NULL DEFAULT '',
+ `author_xchan` char(255) NOT NULL DEFAULT '',
+ `source_xchan` char(255) NOT NULL DEFAULT '',
+ `mimetype` char(255) NOT NULL DEFAULT '',
+ `title` text NOT NULL,
+ `body` mediumtext NOT NULL,
+ `app` char(255) NOT NULL DEFAULT '',
+ `lang` char(64) NOT NULL DEFAULT '',
+ `revision` int(10) unsigned NOT NULL DEFAULT '0',
+ `verb` char(255) NOT NULL DEFAULT '',
+ `obj_type` char(255) NOT NULL DEFAULT '',
+ `object` text NOT NULL,
+ `tgt_type` char(255) NOT NULL DEFAULT '',
+ `target` text NOT NULL,
+ `layout_mid` char(255) NOT NULL DEFAULT '',
+ `postopts` text NOT NULL,
+ `route` text NOT NULL,
+ `llink` char(255) NOT NULL DEFAULT '',
+ `plink` char(255) NOT NULL DEFAULT '',
+ `resource_id` char(255) NOT NULL DEFAULT '',
+ `resource_type` char(16) NOT NULL DEFAULT '',
+ `attach` mediumtext NOT NULL,
+ `sig` text NOT NULL,
+ `diaspora_meta` mediumtext NOT NULL,
+ `location` char(255) NOT NULL DEFAULT '',
+ `coord` char(255) NOT NULL DEFAULT '',
+ `public_policy` char(255) NOT NULL DEFAULT '',
+ `comment_policy` char(255) NOT NULL DEFAULT '',
+ `allow_cid` mediumtext NOT NULL,
+ `allow_gid` mediumtext NOT NULL,
+ `deny_cid` mediumtext NOT NULL,
+ `deny_gid` mediumtext NOT NULL,
+ `item_restrict` int(11) NOT NULL DEFAULT '0',
+ `item_flags` int(11) NOT NULL DEFAULT '0',
+ `item_private` tinyint(4) NOT NULL DEFAULT '0',
+ PRIMARY KEY (`id`),
+ KEY `uid` (`uid`),
+ KEY `parent` (`parent`),
+ KEY `created` (`created`),
+ KEY `edited` (`edited`),
+ KEY `received` (`received`),
+ KEY `uid_commented` (`uid`,`commented`),
+ KEY `uid_created` (`uid`,`created`),
+ KEY `aid` (`aid`),
+ KEY `owner_xchan` (`owner_xchan`),
+ KEY `author_xchan` (`author_xchan`),
+ KEY `resource_type` (`resource_type`),
+ KEY `item_restrict` (`item_restrict`),
+ KEY `item_flags` (`item_flags`),
+ KEY `commented` (`commented`),
+ KEY `verb` (`verb`),
+ KEY `item_private` (`item_private`),
+ KEY `llink` (`llink`),
+ KEY `expires` (`expires`),
+ KEY `revision` (`revision`),
+ KEY `mimetype` (`mimetype`),
+ KEY `mid` (`mid`),
+ KEY `parent_mid` (`parent_mid`),
+ KEY `uid_mid` (`mid`,`uid`),
+ KEY `comment_policy` (`comment_policy`),
+ KEY `layout_mid` (`layout_mid`),
+ KEY `public_policy` (`public_policy`),
+ KEY `comments_closed` (`comments_closed`),
+ KEY `changed` (`changed`),
+ FULLTEXT KEY `title` (`title`),
+ FULLTEXT KEY `body` (`body`),
+ FULLTEXT KEY `allow_cid` (`allow_cid`),
+ FULLTEXT KEY `allow_gid` (`allow_gid`),
+ FULLTEXT KEY `deny_cid` (`deny_cid`),
+ FULLTEXT KEY `deny_gid` (`deny_gid`)
+) ENGINE=MyISAM DEFAULT CHARSET=utf8;
+
+-- --------------------------------------------------------
+
+--
+-- Table structure for table `item_id`
+--
+
+CREATE TABLE IF NOT EXISTS `item_id` (
+ `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
+ `iid` int(11) NOT NULL DEFAULT '0',
+ `uid` int(11) NOT NULL DEFAULT '0',
+ `sid` char(255) NOT NULL DEFAULT '',
+ `service` char(255) NOT NULL DEFAULT '',
+ PRIMARY KEY (`id`),
+ KEY `uid` (`uid`),
+ KEY `sid` (`sid`),
+ KEY `service` (`service`),
+ KEY `iid` (`iid`)
+) ENGINE=MyISAM DEFAULT CHARSET=utf8;
+
+-- --------------------------------------------------------
+
+--
+-- Table structure for table `likes`
+--
+
+CREATE TABLE IF NOT EXISTS `likes` (
+ `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
+ `channel_id` int(10) unsigned NOT NULL DEFAULT '0',
+ `liker` char(128) NOT NULL DEFAULT '',
+ `likee` char(128) NOT NULL DEFAULT '',
+ `iid` int(11) unsigned NOT NULL DEFAULT '0',
+ `verb` char(255) NOT NULL DEFAULT '',
+ `target_type` char(255) NOT NULL DEFAULT '',
+ `target_id` char(128) NOT NULL DEFAULT '',
+ `target` mediumtext NOT NULL,
+ PRIMARY KEY (`id`),
+ KEY `liker` (`liker`),
+ KEY `likee` (`likee`),
+ KEY `iid` (`iid`),
+ KEY `verb` (`verb`),
+ KEY `target_type` (`target_type`),
+ KEY `channel_id` (`channel_id`),
+ KEY `target_id` (`target_id`)
+) ENGINE=MyISAM DEFAULT CHARSET=utf8;
+
+-- --------------------------------------------------------
+
+--
+-- Table structure for table `mail`
+--
+
+CREATE TABLE IF NOT EXISTS `mail` (
+ `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
+ `convid` int(10) unsigned NOT NULL DEFAULT '0',
+ `mail_flags` int(10) unsigned NOT NULL DEFAULT '0',
+ `from_xchan` char(255) NOT NULL DEFAULT '',
+ `to_xchan` char(255) NOT NULL DEFAULT '',
+ `account_id` int(10) unsigned NOT NULL DEFAULT '0',
+ `channel_id` int(10) unsigned NOT NULL DEFAULT '0',
+ `title` text NOT NULL,
+ `body` mediumtext NOT NULL,
+ `attach` mediumtext NOT NULL,
+ `mid` char(255) NOT NULL DEFAULT '',
+ `parent_mid` char(255) NOT NULL DEFAULT '',
+ `created` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
+ `expires` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
+ PRIMARY KEY (`id`),
+ KEY `created` (`created`),
+ KEY `mail_flags` (`mail_flags`),
+ KEY `account_id` (`account_id`),
+ KEY `channel_id` (`channel_id`),
+ KEY `from_xchan` (`from_xchan`),
+ KEY `to_xchan` (`to_xchan`),
+ KEY `mid` (`mid`),
+ KEY `parent_mid` (`parent_mid`),
+ KEY `expires` (`expires`),
+ KEY `convid` (`convid`)
+) ENGINE=MyISAM DEFAULT CHARSET=utf8;
+
+-- --------------------------------------------------------
+
+--
+-- Table structure for table `manage`
+--
+
+CREATE TABLE IF NOT EXISTS `manage` (
+ `id` int(11) NOT NULL AUTO_INCREMENT,
+ `uid` int(11) NOT NULL DEFAULT '0',
+ `xchan` char(255) NOT NULL DEFAULT '',
+ PRIMARY KEY (`id`),
+ KEY `uid` (`uid`),
+ KEY `xchan` (`xchan`)
+) ENGINE=MyISAM DEFAULT CHARSET=utf8;
+
+-- --------------------------------------------------------
+
+--
+-- Table structure for table `menu`
+--
+
+CREATE TABLE IF NOT EXISTS `menu` (
+ `menu_id` int(10) unsigned NOT NULL AUTO_INCREMENT,
+ `menu_channel_id` int(10) unsigned NOT NULL DEFAULT '0',
+ `menu_name` char(255) NOT NULL DEFAULT '',
+ `menu_desc` char(255) NOT NULL DEFAULT '',
+ `menu_flags` int(11) NOT NULL DEFAULT '0',
+ PRIMARY KEY (`menu_id`),
+ KEY `menu_channel_id` (`menu_channel_id`),
+ KEY `menu_name` (`menu_name`),
+ KEY `menu_flags` (`menu_flags`)
+) ENGINE=MyISAM DEFAULT CHARSET=utf8;
+
+-- --------------------------------------------------------
+
+--
+-- Table structure for table `menu_item`
+--
+
+CREATE TABLE IF NOT EXISTS `menu_item` (
+ `mitem_id` int(10) unsigned NOT NULL AUTO_INCREMENT,
+ `mitem_link` char(255) NOT NULL DEFAULT '',
+ `mitem_desc` char(255) NOT NULL DEFAULT '',
+ `mitem_flags` int(11) NOT NULL DEFAULT '0',
+ `allow_cid` mediumtext NOT NULL,
+ `allow_gid` mediumtext NOT NULL,
+ `deny_cid` mediumtext NOT NULL,
+ `deny_gid` mediumtext NOT NULL,
+ `mitem_channel_id` int(10) unsigned NOT NULL DEFAULT '0',
+ `mitem_menu_id` int(10) unsigned NOT NULL DEFAULT '0',
+ `mitem_order` int(11) NOT NULL DEFAULT '0',
+ PRIMARY KEY (`mitem_id`),
+ KEY `mitem_channel_id` (`mitem_channel_id`),
+ KEY `mitem_menu_id` (`mitem_menu_id`),
+ KEY `mitem_flags` (`mitem_flags`)
+) ENGINE=MyISAM DEFAULT CHARSET=utf8;
+
+-- --------------------------------------------------------
+
+--
+-- Table structure for table `notify`
+--
+
+CREATE TABLE IF NOT EXISTS `notify` (
+ `id` int(11) NOT NULL AUTO_INCREMENT,
+ `hash` char(64) NOT NULL DEFAULT '',
+ `name` char(255) NOT NULL DEFAULT '',
+ `url` char(255) NOT NULL DEFAULT '',
+ `photo` char(255) NOT NULL DEFAULT '',
+ `date` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
+ `msg` mediumtext NOT NULL,
+ `aid` int(11) NOT NULL DEFAULT '0',
+ `uid` int(11) NOT NULL DEFAULT '0',
+ `link` char(255) NOT NULL DEFAULT '',
+ `parent` char(255) NOT NULL DEFAULT '',
+ `seen` tinyint(1) NOT NULL DEFAULT '0',
+ `type` int(11) NOT NULL DEFAULT '0',
+ `verb` char(255) NOT NULL DEFAULT '',
+ `otype` char(16) NOT NULL DEFAULT '',
+ PRIMARY KEY (`id`),
+ KEY `type` (`type`),
+ KEY `seen` (`seen`),
+ KEY `uid` (`uid`),
+ KEY `date` (`date`),
+ KEY `hash` (`hash`),
+ KEY `parent` (`parent`),
+ KEY `link` (`link`),
+ KEY `otype` (`otype`),
+ KEY `aid` (`aid`)
+) ENGINE=MyISAM DEFAULT CHARSET=utf8;
+
+-- --------------------------------------------------------
+
+--
+-- Table structure for table `obj`
+--
+
+CREATE TABLE IF NOT EXISTS `obj` (
+ `obj_id` int(10) unsigned NOT NULL AUTO_INCREMENT,
+ `obj_page` char(64) NOT NULL DEFAULT '',
+ `obj_verb` char(255) NOT NULL DEFAULT '',
+ `obj_type` int(10) unsigned NOT NULL DEFAULT '0',
+ `obj_obj` char(255) NOT NULL DEFAULT '',
+ `obj_channel` int(10) unsigned NOT NULL DEFAULT '0',
+ `allow_cid` mediumtext NOT NULL,
+ `allow_gid` mediumtext NOT NULL,
+ `deny_cid` mediumtext NOT NULL,
+ `deny_gid` mediumtext NOT NULL,
+ PRIMARY KEY (`obj_id`),
+ KEY `obj_verb` (`obj_verb`),
+ KEY `obj_page` (`obj_page`),
+ KEY `obj_type` (`obj_type`),
+ KEY `obj_channel` (`obj_channel`),
+ KEY `obj_obj` (`obj_obj`)
+) ENGINE=MyISAM DEFAULT CHARSET=utf8;
+
+-- --------------------------------------------------------
+
+--
+-- Table structure for table `outq`
+--
+
+CREATE TABLE IF NOT EXISTS `outq` (
+ `outq_hash` char(255) NOT NULL,
+ `outq_account` int(10) unsigned NOT NULL DEFAULT '0',
+ `outq_channel` int(10) unsigned NOT NULL DEFAULT '0',
+ `outq_driver` char(32) NOT NULL DEFAULT '',
+ `outq_posturl` char(255) NOT NULL DEFAULT '',
+ `outq_async` tinyint(1) NOT NULL DEFAULT '0',
+ `outq_delivered` tinyint(1) NOT NULL DEFAULT '0',
+ `outq_created` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
+ `outq_updated` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
+ `outq_notify` mediumtext NOT NULL,
+ `outq_msg` mediumtext NOT NULL,
+ PRIMARY KEY (`outq_hash`),
+ KEY `outq_account` (`outq_account`),
+ KEY `outq_channel` (`outq_channel`),
+ KEY `outq_hub` (`outq_posturl`),
+ KEY `outq_created` (`outq_created`),
+ KEY `outq_updated` (`outq_updated`),
+ KEY `outq_async` (`outq_async`),
+ KEY `outq_delivered` (`outq_delivered`)
+) ENGINE=MyISAM DEFAULT CHARSET=utf8;
+
+-- --------------------------------------------------------
+
+--
+-- Table structure for table `pconfig`
+--
+
+CREATE TABLE IF NOT EXISTS `pconfig` (
+ `id` int(11) NOT NULL AUTO_INCREMENT,
+ `uid` int(11) NOT NULL DEFAULT '0',
+ `cat` char(255) CHARACTER SET ascii NOT NULL DEFAULT '',
+ `k` char(255) CHARACTER SET ascii NOT NULL DEFAULT '',
+ `v` mediumtext NOT NULL,
+ PRIMARY KEY (`id`),
+ UNIQUE KEY `access` (`uid`,`cat`,`k`)
+) ENGINE=MyISAM DEFAULT CHARSET=utf8;
+
+-- --------------------------------------------------------
+
+--
+-- Table structure for table `photo`
+--
+
+CREATE TABLE IF NOT EXISTS `photo` (
+ `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
+ `aid` int(10) unsigned NOT NULL DEFAULT '0',
+ `uid` int(10) unsigned NOT NULL DEFAULT '0',
+ `xchan` char(255) NOT NULL DEFAULT '',
+ `resource_id` char(255) NOT NULL DEFAULT '',
+ `created` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
+ `edited` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
+ `title` char(255) NOT NULL DEFAULT '',
+ `description` text NOT NULL,
+ `album` char(255) NOT NULL DEFAULT '',
+ `filename` char(255) NOT NULL DEFAULT '',
+ `type` char(128) NOT NULL DEFAULT 'image/jpeg',
+ `height` smallint(6) NOT NULL DEFAULT '0',
+ `width` smallint(6) NOT NULL DEFAULT '0',
+ `size` int(10) unsigned NOT NULL DEFAULT '0',
+ `data` mediumblob NOT NULL,
+ `scale` tinyint(3) NOT NULL DEFAULT '0',
+ `profile` tinyint(1) NOT NULL DEFAULT '0',
+ `photo_flags` int(10) unsigned NOT NULL DEFAULT '0',
+ `allow_cid` mediumtext NOT NULL,
+ `allow_gid` mediumtext NOT NULL,
+ `deny_cid` mediumtext NOT NULL,
+ `deny_gid` mediumtext NOT NULL,
+ PRIMARY KEY (`id`),
+ KEY `uid` (`uid`),
+ KEY `album` (`album`),
+ KEY `scale` (`scale`),
+ KEY `profile` (`profile`),
+ KEY `photo_flags` (`photo_flags`),
+ KEY `type` (`type`),
+ KEY `aid` (`aid`),
+ KEY `xchan` (`xchan`),
+ KEY `size` (`size`),
+ KEY `resource_id` (`resource_id`)
+) ENGINE=MyISAM DEFAULT CHARSET=utf8;
+
+-- --------------------------------------------------------
+
+--
+-- Table structure for table `poll`
+--
+
+CREATE TABLE IF NOT EXISTS `poll` (
+ `poll_id` int(10) unsigned NOT NULL AUTO_INCREMENT,
+ `poll_channel` int(10) unsigned NOT NULL DEFAULT '0',
+ `poll_desc` text NOT NULL,
+ `poll_flags` int(11) NOT NULL DEFAULT '0',
+ `poll_votes` int(11) NOT NULL DEFAULT '0',
+ PRIMARY KEY (`poll_id`),
+ KEY `poll_channel` (`poll_channel`),
+ KEY `poll_flags` (`poll_flags`),
+ KEY `poll_votes` (`poll_votes`)
+) ENGINE=MyISAM DEFAULT CHARSET=utf8;
+
+-- --------------------------------------------------------
+
+--
+-- Table structure for table `poll_elm`
+--
+
+CREATE TABLE IF NOT EXISTS `poll_elm` (
+ `pelm_id` int(10) unsigned NOT NULL AUTO_INCREMENT,
+ `pelm_poll` int(10) unsigned NOT NULL DEFAULT '0',
+ `pelm_desc` text NOT NULL,
+ `pelm_flags` int(11) NOT NULL DEFAULT '0',
+ `pelm_result` float NOT NULL DEFAULT '0',
+ PRIMARY KEY (`pelm_id`),
+ KEY `pelm_poll` (`pelm_poll`),
+ KEY `pelm_result` (`pelm_result`)
+) ENGINE=MyISAM DEFAULT CHARSET=utf8;
+
+-- --------------------------------------------------------
+
+--
+-- Table structure for table `profdef`
+--
+
+CREATE TABLE IF NOT EXISTS `profdef` (
+ `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
+ `field_name` char(255) NOT NULL DEFAULT '',
+ `field_type` char(16) NOT NULL DEFAULT '',
+ `field_desc` char(255) NOT NULL DEFAULT '',
+ `field_help` char(255) NOT NULL DEFAULT '',
+ `field_inputs` mediumtext NOT NULL,
+ PRIMARY KEY (`id`),
+ KEY `field_name` (`field_name`)
+) ENGINE=MyISAM DEFAULT CHARSET=utf8;
+
+-- --------------------------------------------------------
+
+--
+-- Table structure for table `profext`
+--
+
+CREATE TABLE IF NOT EXISTS `profext` (
+ `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
+ `channel_id` int(10) unsigned NOT NULL DEFAULT '0',
+ `hash` char(255) NOT NULL DEFAULT '',
+ `k` char(255) NOT NULL DEFAULT '',
+ `v` mediumtext NOT NULL,
+ PRIMARY KEY (`id`),
+ KEY `channel_id` (`channel_id`),
+ KEY `hash` (`hash`),
+ KEY `k` (`k`)
+) ENGINE=MyISAM DEFAULT CHARSET=utf8;
+
+-- --------------------------------------------------------
+
+--
+-- Table structure for table `profile`
+--
+
+CREATE TABLE IF NOT EXISTS `profile` (
+ `id` int(11) NOT NULL AUTO_INCREMENT,
+ `profile_guid` char(64) NOT NULL DEFAULT '',
+ `aid` int(10) unsigned NOT NULL DEFAULT '0',
+ `uid` int(11) NOT NULL DEFAULT '0',
+ `profile_name` char(255) NOT NULL DEFAULT '',
+ `is_default` tinyint(1) NOT NULL DEFAULT '0',
+ `hide_friends` tinyint(1) NOT NULL DEFAULT '0',
+ `name` char(255) NOT NULL DEFAULT '',
+ `pdesc` char(255) NOT NULL DEFAULT '',
+ `chandesc` text NOT NULL,
+ `dob` char(32) NOT NULL DEFAULT '0000-00-00',
+ `dob_tz` char(255) NOT NULL DEFAULT 'UTC',
+ `address` char(255) NOT NULL DEFAULT '',
+ `locality` char(255) NOT NULL DEFAULT '',
+ `region` char(255) NOT NULL DEFAULT '',
+ `postal_code` char(32) NOT NULL DEFAULT '',
+ `country_name` char(255) NOT NULL DEFAULT '',
+ `hometown` char(255) NOT NULL DEFAULT '',
+ `gender` char(32) NOT NULL DEFAULT '',
+ `marital` char(255) NOT NULL DEFAULT '',
+ `with` text NOT NULL,
+ `howlong` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
+ `sexual` char(255) NOT NULL DEFAULT '',
+ `politic` char(255) NOT NULL DEFAULT '',
+ `religion` char(255) NOT NULL DEFAULT '',
+ `keywords` text NOT NULL,
+ `likes` text NOT NULL,
+ `dislikes` text NOT NULL,
+ `about` text NOT NULL,
+ `summary` char(255) NOT NULL DEFAULT '',
+ `music` text NOT NULL,
+ `book` text NOT NULL,
+ `tv` text NOT NULL,
+ `film` text NOT NULL,
+ `interest` text NOT NULL,
+ `romance` text NOT NULL,
+ `work` text NOT NULL,
+ `education` text NOT NULL,
+ `contact` text NOT NULL,
+ `channels` text NOT NULL,
+ `homepage` char(255) NOT NULL DEFAULT '',
+ `photo` char(255) NOT NULL DEFAULT '',
+ `thumb` char(255) NOT NULL DEFAULT '',
+ `publish` tinyint(1) NOT NULL DEFAULT '0',
+ PRIMARY KEY (`id`),
+ UNIQUE KEY `guid` (`profile_guid`,`uid`),
+ KEY `uid` (`uid`),
+ KEY `locality` (`locality`),
+ KEY `hometown` (`hometown`),
+ KEY `gender` (`gender`),
+ KEY `marital` (`marital`),
+ KEY `sexual` (`sexual`),
+ KEY `publish` (`publish`),
+ KEY `aid` (`aid`),
+ KEY `is_default` (`is_default`),
+ KEY `hide_friends` (`hide_friends`),
+ KEY `postal_code` (`postal_code`),
+ KEY `country_name` (`country_name`),
+ KEY `profile_guid` (`profile_guid`)
+) ENGINE=MyISAM DEFAULT CHARSET=utf8;
+
+-- --------------------------------------------------------
+
+--
+-- Table structure for table `profile_check`
+--
+
+CREATE TABLE IF NOT EXISTS `profile_check` (
+ `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
+ `uid` int(10) unsigned NOT NULL DEFAULT '0',
+ `cid` int(10) unsigned NOT NULL DEFAULT '0',
+ `dfrn_id` char(255) NOT NULL DEFAULT '',
+ `sec` char(255) NOT NULL DEFAULT '',
+ `expire` int(11) NOT NULL DEFAULT '0',
+ PRIMARY KEY (`id`),
+ KEY `uid` (`uid`),
+ KEY `cid` (`cid`),
+ KEY `dfrn_id` (`dfrn_id`),
+ KEY `sec` (`sec`),
+ KEY `expire` (`expire`)
+) ENGINE=MyISAM DEFAULT CHARSET=utf8;
+
+-- --------------------------------------------------------
+
+--
+-- Table structure for table `register`
+--
+
+CREATE TABLE IF NOT EXISTS `register` (
+ `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
+ `hash` char(255) NOT NULL DEFAULT '',
+ `created` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
+ `uid` int(10) unsigned NOT NULL DEFAULT '0',
+ `password` char(255) NOT NULL DEFAULT '',
+ `language` char(16) NOT NULL DEFAULT '',
+ PRIMARY KEY (`id`),
+ KEY `hash` (`hash`),
+ KEY `created` (`created`),
+ KEY `uid` (`uid`)
+) ENGINE=MyISAM DEFAULT CHARSET=utf8;
+
+-- --------------------------------------------------------
+
+--
+-- Table structure for table `session`
+--
+
+CREATE TABLE IF NOT EXISTS `session` (
+ `id` bigint(20) unsigned NOT NULL AUTO_INCREMENT,
+ `sid` char(255) NOT NULL DEFAULT '',
+ `data` text NOT NULL,
+ `expire` bigint(20) unsigned NOT NULL DEFAULT '0',
+ PRIMARY KEY (`id`),
+ KEY `sid` (`sid`),
+ KEY `expire` (`expire`)
+) ENGINE=MyISAM DEFAULT CHARSET=utf8;
+
+-- --------------------------------------------------------
+
+--
+-- Table structure for table `shares`
+--
+
+CREATE TABLE IF NOT EXISTS `shares` (
+ `share_id` int(10) unsigned NOT NULL AUTO_INCREMENT,
+ `share_type` int(11) NOT NULL DEFAULT '0',
+ `share_target` int(10) unsigned NOT NULL DEFAULT '0',
+ `share_xchan` char(255) NOT NULL DEFAULT '',
+ PRIMARY KEY (`share_id`),
+ KEY `share_type` (`share_type`),
+ KEY `share_target` (`share_target`),
+ KEY `share_xchan` (`share_xchan`)
+) ENGINE=MyISAM DEFAULT CHARSET=utf8;
+
+-- --------------------------------------------------------
+
+--
+-- Table structure for table `sign`
+--
+
+CREATE TABLE IF NOT EXISTS `sign` (
+ `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
+ `iid` int(10) unsigned NOT NULL DEFAULT '0',
+ `retract_iid` int(10) unsigned NOT NULL DEFAULT '0',
+ `signed_text` mediumtext NOT NULL,
+ `signature` text NOT NULL,
+ `signer` char(255) NOT NULL DEFAULT '',
+ PRIMARY KEY (`id`),
+ KEY `iid` (`iid`),
+ KEY `retract_iid` (`retract_iid`)
+) ENGINE=MyISAM DEFAULT CHARSET=utf8;
+
+-- --------------------------------------------------------
+
+--
+-- Table structure for table `site`
+--
+
+CREATE TABLE IF NOT EXISTS `site` (
+ `site_url` char(255) NOT NULL,
+ `site_access` int(11) NOT NULL DEFAULT '0',
+ `site_flags` int(11) NOT NULL DEFAULT '0',
+ `site_update` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
+ `site_pull` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
+ `site_sync` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
+ `site_directory` char(255) NOT NULL DEFAULT '',
+ `site_register` int(11) NOT NULL DEFAULT '0',
+ `site_sellpage` char(255) NOT NULL DEFAULT '',
+ `site_location` char(255) NOT NULL DEFAULT '',
+ `site_realm` char(255) NOT NULL DEFAULT '',
+ PRIMARY KEY (`site_url`),
+ KEY `site_flags` (`site_flags`),
+ KEY `site_update` (`site_update`),
+ KEY `site_directory` (`site_directory`),
+ KEY `site_register` (`site_register`),
+ KEY `site_access` (`site_access`),
+ KEY `site_sellpage` (`site_sellpage`),
+ KEY `site_pull` (`site_pull`),
+ KEY `site_realm` (`site_realm`)
+) ENGINE=MyISAM DEFAULT CHARSET=utf8;
+
+-- --------------------------------------------------------
+
+--
+-- Table structure for table `source`
+--
+
+CREATE TABLE IF NOT EXISTS `source` (
+ `src_id` int(10) unsigned NOT NULL AUTO_INCREMENT,
+ `src_channel_id` int(10) unsigned NOT NULL DEFAULT '0',
+ `src_channel_xchan` char(255) NOT NULL DEFAULT '',
+ `src_xchan` char(255) NOT NULL DEFAULT '',
+ `src_patt` mediumtext NOT NULL,
+ PRIMARY KEY (`src_id`),
+ KEY `src_channel_id` (`src_channel_id`),
+ KEY `src_channel_xchan` (`src_channel_xchan`),
+ KEY `src_xchan` (`src_xchan`)
+) ENGINE=MyISAM DEFAULT CHARSET=utf8;
+
+-- --------------------------------------------------------
+
+--
+-- Table structure for table `spam`
+--
+
+CREATE TABLE IF NOT EXISTS `spam` (
+ `id` int(11) NOT NULL AUTO_INCREMENT,
+ `uid` int(11) NOT NULL DEFAULT '0',
+ `spam` int(11) NOT NULL DEFAULT '0',
+ `ham` int(11) NOT NULL DEFAULT '0',
+ `term` char(255) NOT NULL DEFAULT '',
+ `date` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
+ PRIMARY KEY (`id`),
+ KEY `uid` (`uid`),
+ KEY `spam` (`spam`),
+ KEY `ham` (`ham`),
+ KEY `term` (`term`)
+) ENGINE=MyISAM DEFAULT CHARSET=utf8;
+
+-- --------------------------------------------------------
+
+--
+-- Table structure for table `sys_perms`
+--
+
+CREATE TABLE IF NOT EXISTS `sys_perms` (
+ `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
+ `cat` char(255) NOT NULL DEFAULT '',
+ `k` char(255) NOT NULL DEFAULT '',
+ `v` mediumtext NOT NULL,
+ `public_perm` tinyint(1) unsigned NOT NULL DEFAULT '0',
+ PRIMARY KEY (`id`)
+) ENGINE=MyISAM DEFAULT CHARSET=utf8;
+
+-- --------------------------------------------------------
+
+--
+-- Table structure for table `term`
+--
+
+CREATE TABLE IF NOT EXISTS `term` (
+ `tid` int(10) unsigned NOT NULL AUTO_INCREMENT,
+ `aid` int(10) unsigned NOT NULL DEFAULT '0',
+ `uid` int(10) unsigned NOT NULL DEFAULT '0',
+ `oid` int(10) unsigned NOT NULL DEFAULT '0',
+ `otype` tinyint(3) unsigned NOT NULL DEFAULT '0',
+ `type` tinyint(3) unsigned NOT NULL DEFAULT '0',
+ `term` char(255) NOT NULL DEFAULT '',
+ `url` char(255) NOT NULL DEFAULT '',
+ `imgurl` char(255) NOT NULL DEFAULT '',
+ `term_hash` char(255) NOT NULL DEFAULT '',
+ `parent_hash` char(255) NOT NULL DEFAULT '',
+ PRIMARY KEY (`tid`),
+ KEY `oid` (`oid`),
+ KEY `otype` (`otype`),
+ KEY `type` (`type`),
+ KEY `term` (`term`),
+ KEY `uid` (`uid`),
+ KEY `aid` (`aid`),
+ KEY `imgurl` (`imgurl`),
+ KEY `term_hash` (`term_hash`),
+ KEY `parent_hash` (`parent_hash`)
+) ENGINE=MyISAM DEFAULT CHARSET=utf8;
+
+-- --------------------------------------------------------
+
+--
+-- Table structure for table `tokens`
+--
+
+CREATE TABLE IF NOT EXISTS `tokens` (
+ `id` varchar(40) NOT NULL DEFAULT '',
+ `secret` text NOT NULL,
+ `client_id` varchar(20) NOT NULL DEFAULT '',
+ `expires` bigint(20) unsigned NOT NULL DEFAULT '0',
+ `scope` varchar(200) NOT NULL DEFAULT '',
+ `uid` int(11) NOT NULL DEFAULT '0',
+ PRIMARY KEY (`id`),
+ KEY `client_id` (`client_id`),
+ KEY `expires` (`expires`),
+ KEY `uid` (`uid`)
+) ENGINE=MyISAM DEFAULT CHARSET=utf8;
+
+-- --------------------------------------------------------
+
+--
+-- Table structure for table `updates`
+--
+
+CREATE TABLE IF NOT EXISTS `updates` (
+ `ud_id` int(10) unsigned NOT NULL AUTO_INCREMENT,
+ `ud_hash` char(128) NOT NULL DEFAULT '',
+ `ud_guid` char(255) NOT NULL DEFAULT '',
+ `ud_date` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
+ `ud_last` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
+ `ud_flags` int(11) NOT NULL DEFAULT '0',
+ `ud_addr` char(255) NOT NULL DEFAULT '',
+ PRIMARY KEY (`ud_id`),
+ KEY `ud_date` (`ud_date`),
+ KEY `ud_guid` (`ud_guid`),
+ KEY `ud_hash` (`ud_hash`),
+ KEY `ud_flags` (`ud_flags`),
+ KEY `ud_addr` (`ud_addr`),
+ KEY `ud_last` (`ud_last`)
+) ENGINE=MyISAM DEFAULT CHARSET=utf8;
+
+-- --------------------------------------------------------
+
+--
+-- Table structure for table `verify`
+--
+
+CREATE TABLE IF NOT EXISTS `verify` (
+ `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
+ `channel` int(10) unsigned NOT NULL DEFAULT '0',
+ `type` char(32) NOT NULL DEFAULT '',
+ `token` char(255) NOT NULL DEFAULT '',
+ `meta` char(255) NOT NULL DEFAULT '',
+ `created` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
+ PRIMARY KEY (`id`),
+ KEY `channel` (`channel`),
+ KEY `type` (`type`),
+ KEY `token` (`token`),
+ KEY `meta` (`meta`),
+ KEY `created` (`created`)
+) ENGINE=MyISAM DEFAULT CHARSET=utf8;
+
+-- --------------------------------------------------------
+
+--
+-- Table structure for table `vote`
+--
+
+CREATE TABLE IF NOT EXISTS `vote` (
+ `vote_id` int(10) unsigned NOT NULL AUTO_INCREMENT,
+ `vote_poll` int(11) NOT NULL DEFAULT '0',
+ `vote_element` int(11) NOT NULL DEFAULT '0',
+ `vote_result` text NOT NULL,
+ `vote_xchan` char(255) NOT NULL DEFAULT '',
+ PRIMARY KEY (`vote_id`),
+ UNIQUE KEY `vote_vote` (`vote_poll`,`vote_element`,`vote_xchan`),
+ KEY `vote_poll` (`vote_poll`),
+ KEY `vote_element` (`vote_element`)
+) ENGINE=MyISAM DEFAULT CHARSET=utf8;
+
+-- --------------------------------------------------------
+
+--
+-- Table structure for table `xchan`
+--
+
+CREATE TABLE IF NOT EXISTS `xchan` (
+ `xchan_hash` char(255) NOT NULL,
+ `xchan_guid` char(255) NOT NULL DEFAULT '',
+ `xchan_guid_sig` text NOT NULL,
+ `xchan_pubkey` text NOT NULL,
+ `xchan_photo_mimetype` char(32) NOT NULL DEFAULT 'image/jpeg',
+ `xchan_photo_l` char(255) NOT NULL DEFAULT '',
+ `xchan_photo_m` char(255) NOT NULL DEFAULT '',
+ `xchan_photo_s` char(255) NOT NULL DEFAULT '',
+ `xchan_addr` char(255) NOT NULL DEFAULT '',
+ `xchan_url` char(255) NOT NULL DEFAULT '',
+ `xchan_connurl` char(255) NOT NULL DEFAULT '',
+ `xchan_follow` char(255) NOT NULL DEFAULT '',
+ `xchan_connpage` char(255) NOT NULL DEFAULT '',
+ `xchan_name` char(255) NOT NULL DEFAULT '',
+ `xchan_network` char(255) NOT NULL DEFAULT '',
+ `xchan_instance_url` char(255) NOT NULL DEFAULT '',
+ `xchan_flags` int(10) unsigned NOT NULL DEFAULT '0',
+ `xchan_photo_date` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
+ `xchan_name_date` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
+ PRIMARY KEY (`xchan_hash`),
+ KEY `xchan_guid` (`xchan_guid`),
+ KEY `xchan_addr` (`xchan_addr`),
+ KEY `xchan_name` (`xchan_name`),
+ KEY `xchan_network` (`xchan_network`),
+ KEY `xchan_url` (`xchan_url`),
+ KEY `xchan_flags` (`xchan_flags`),
+ KEY `xchan_connurl` (`xchan_connurl`),
+ KEY `xchan_instance_url` (`xchan_instance_url`),
+ KEY `xchan_follow` (`xchan_follow`)
+) ENGINE=MyISAM DEFAULT CHARSET=utf8;
+
+-- --------------------------------------------------------
+
+--
+-- Table structure for table `xchat`
+--
+
+CREATE TABLE IF NOT EXISTS `xchat` (
+ `xchat_id` int(10) unsigned NOT NULL AUTO_INCREMENT,
+ `xchat_url` char(255) NOT NULL DEFAULT '',
+ `xchat_desc` char(255) NOT NULL DEFAULT '',
+ `xchat_xchan` char(255) NOT NULL DEFAULT '',
+ `xchat_edited` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
+ PRIMARY KEY (`xchat_id`),
+ KEY `xchat_url` (`xchat_url`),
+ KEY `xchat_desc` (`xchat_desc`),
+ KEY `xchat_xchan` (`xchat_xchan`),
+ KEY `xchat_edited` (`xchat_edited`)
+) ENGINE=MyISAM DEFAULT CHARSET=utf8;
+
+-- --------------------------------------------------------
+
+--
+-- Table structure for table `xconfig`
+--
+
+CREATE TABLE IF NOT EXISTS `xconfig` (
+ `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
+ `xchan` char(255) NOT NULL DEFAULT '',
+ `cat` char(255) NOT NULL DEFAULT '',
+ `k` char(255) NOT NULL DEFAULT '',
+ `v` mediumtext NOT NULL,
+ PRIMARY KEY (`id`),
+ KEY `xchan` (`xchan`),
+ KEY `cat` (`cat`),
+ KEY `k` (`k`)
+) ENGINE=MyISAM DEFAULT CHARSET=utf8;
+
+-- --------------------------------------------------------
+
+--
+-- Table structure for table `xign`
+--
+
+CREATE TABLE IF NOT EXISTS `xign` (
+ `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
+ `uid` int(11) NOT NULL DEFAULT '0',
+ `xchan` char(255) NOT NULL DEFAULT '',
+ PRIMARY KEY (`id`),
+ KEY `uid` (`uid`),
+ KEY `xchan` (`xchan`)
+) ENGINE=MyISAM DEFAULT CHARSET=utf8;
+
+-- --------------------------------------------------------
+
+--
+-- Table structure for table `xlink`
+--
+
+CREATE TABLE IF NOT EXISTS `xlink` (
+ `xlink_id` int(10) unsigned NOT NULL AUTO_INCREMENT,
+ `xlink_xchan` char(255) NOT NULL DEFAULT '',
+ `xlink_link` char(255) NOT NULL DEFAULT '',
+ `xlink_rating` int(11) NOT NULL DEFAULT '0',
+ `xlink_updated` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
+ PRIMARY KEY (`xlink_id`),
+ KEY `xlink_xchan` (`xlink_xchan`),
+ KEY `xlink_link` (`xlink_link`),
+ KEY `xlink_updated` (`xlink_updated`),
+ KEY `xlink_rating` (`xlink_rating`)
+) ENGINE=MyISAM DEFAULT CHARSET=utf8;
+
+-- --------------------------------------------------------
+
+--
+-- Table structure for table `xprof`
+--
+
+CREATE TABLE IF NOT EXISTS `xprof` (
+ `xprof_hash` char(255) NOT NULL,
+ `xprof_age` tinyint(3) unsigned NOT NULL DEFAULT '0',
+ `xprof_desc` char(255) NOT NULL DEFAULT '',
+ `xprof_dob` char(12) NOT NULL DEFAULT '',
+ `xprof_gender` char(255) NOT NULL DEFAULT '',
+ `xprof_marital` char(255) NOT NULL DEFAULT '',
+ `xprof_sexual` char(255) NOT NULL DEFAULT '',
+ `xprof_locale` char(255) NOT NULL DEFAULT '',
+ `xprof_region` char(255) NOT NULL DEFAULT '',
+ `xprof_postcode` char(32) NOT NULL DEFAULT '',
+ `xprof_country` char(255) NOT NULL DEFAULT '',
+ `xprof_keywords` text NOT NULL,
+ `xprof_about` text NOT NULL,
+ `xprof_homepage` char(255) NOT NULL DEFAULT '',
+ `xprof_hometown` char(255) NOT NULL DEFAULT '',
+ PRIMARY KEY (`xprof_hash`),
+ KEY `xprof_desc` (`xprof_desc`),
+ KEY `xprof_dob` (`xprof_dob`),
+ KEY `xprof_gender` (`xprof_gender`),
+ KEY `xprof_marital` (`xprof_marital`),
+ KEY `xprof_sexual` (`xprof_sexual`),
+ KEY `xprof_locale` (`xprof_locale`),
+ KEY `xprof_region` (`xprof_region`),
+ KEY `xprof_postcode` (`xprof_postcode`),
+ KEY `xprof_country` (`xprof_country`),
+ KEY `xprof_age` (`xprof_age`),
+ KEY `xprof_hometown` (`xprof_hometown`)
+) ENGINE=MyISAM DEFAULT CHARSET=utf8;
+
+-- --------------------------------------------------------
+
+--
+-- Table structure for table `xtag`
+--
+
+CREATE TABLE IF NOT EXISTS `xtag` (
+ `xtag_id` int(10) unsigned NOT NULL AUTO_INCREMENT,
+ `xtag_hash` char(255) NOT NULL DEFAULT '',
+ `xtag_term` char(255) NOT NULL DEFAULT '',
+ `xtag_flags` int(11) NOT NULL DEFAULT '0',
+ PRIMARY KEY (`xtag_id`),
+ KEY `xtag_term` (`xtag_term`),
+ KEY `xtag_hash` (`xtag_hash`),
+ KEY `xtag_flags` (`xtag_flags`)
+) ENGINE=MyISAM DEFAULT CHARSET=utf8;
diff --git a/install/schema_postgres.sql b/install/schema_postgres.sql
new file mode 100644
index 000000000..85eb802d2
--- /dev/null
+++ b/install/schema_postgres.sql
@@ -0,0 +1,1190 @@
+CREATE TABLE "abook" (
+ "abook_id" serial NOT NULL,
+ "abook_account" bigint NOT NULL,
+ "abook_channel" bigint NOT NULL,
+ "abook_xchan" text NOT NULL DEFAULT '',
+ "abook_my_perms" bigint NOT NULL DEFAULT '0',
+ "abook_their_perms" bigint NOT NULL DEFAULT '0',
+ "abook_closeness" numeric(3) NOT NULL DEFAULT '99',
+ "abook_rating" bigint NOT NULL DEFAULT '0',
+ "abook_created" timestamp NOT NULL DEFAULT '0001-01-01 00:00:00',
+ "abook_updated" timestamp NOT NULL DEFAULT '0001-01-01 00:00:00',
+ "abook_connected" timestamp NOT NULL DEFAULT '0001-01-01 00:00:00',
+ "abook_dob" timestamp NOT NULL DEFAULT '0001-01-01 00:00:00',
+ "abook_flags" bigint NOT NULL DEFAULT '0',
+ "abook_profile" char(64) NOT NULL DEFAULT '',
+ PRIMARY KEY ("abook_id")
+);
+ create index "abook_account" on abook ("abook_account");
+ create index "abook_channel" on abook ("abook_channel");
+ create index "abook_xchan" on abook ("abook_xchan");
+ create index "abook_my_perms" on abook ("abook_my_perms");
+ create index "abook_their_perms" on abook ("abook_their_perms");
+ create index "abook_closeness" on abook ("abook_closeness");
+ create index "abook_created" on abook ("abook_created");
+ create index "abook_updated" on abook ("abook_updated");
+ create index "abook_flags" on abook ("abook_flags");
+ create index "abook_profile" on abook ("abook_profile");
+ create index "abook_dob" on abook ("abook_dob");
+ create index "abook_connected" on abook ("abook_connected");
+ create index "abook_rating" on abook ("abook_rating");
+
+CREATE TABLE "account" (
+ "account_id" serial NOT NULL,
+ "account_parent" bigint NOT NULL DEFAULT '0',
+ "account_default_channel" bigint NOT NULL DEFAULT '0',
+ "account_salt" char(32) NOT NULL DEFAULT '',
+ "account_password" text NOT NULL DEFAULT '',
+ "account_email" text NOT NULL DEFAULT '',
+ "account_external" text NOT NULL DEFAULT '',
+ "account_language" varchar(16) NOT NULL DEFAULT 'en',
+ "account_created" timestamp NOT NULL DEFAULT '0001-01-01 00:00:00',
+ "account_lastlog" timestamp NOT NULL DEFAULT '0001-01-01 00:00:00',
+ "account_flags" bigint NOT NULL DEFAULT '0',
+ "account_roles" bigint NOT NULL DEFAULT '0',
+ "account_reset" text NOT NULL DEFAULT '',
+ "account_expires" timestamp NOT NULL DEFAULT '0001-01-01 00:00:00',
+ "account_expire_notified" timestamp NOT NULL DEFAULT '0001-01-01 00:00:00',
+ "account_service_class" varchar(32) NOT NULL DEFAULT '',
+ "account_level" bigint NOT NULL DEFAULT '0',
+ "account_password_changed" timestamp NOT NULL DEFAULT '0001-01-01 00:00:00',
+ PRIMARY KEY ("account_id")
+);
+create index "account_email" on account ("account_email");
+create index "account_service_class" on account ("account_service_class");
+create index "account_parent" on account ("account_parent");
+create index "account_flags" on account ("account_flags");
+create index "account_roles" on account ("account_roles");
+create index "account_lastlog" on account ("account_lastlog");
+create index "account_expires" on account ("account_expires");
+create index "account_default_channel" on account ("account_default_channel");
+create index "account_external" on account ("account_external");
+create index "account_level" on account ("account_level");
+create index "account_password_changed" on account ("account_password_changed");
+CREATE TABLE "addon" (
+ "id" serial NOT NULL,
+ "name" text NOT NULL,
+ "version" text NOT NULL DEFAULT '0',
+ "installed" numeric(1) NOT NULL DEFAULT '0',
+ "hidden" numeric(1) NOT NULL DEFAULT '0',
+ "timestamp" numeric(20) NOT NULL DEFAULT '0',
+ "plugin_admin" numeric(1) NOT NULL DEFAULT '0',
+ PRIMARY KEY ("id")
+);
+create index "addon_hidden_idx" on addon ("hidden");
+create index "addon_name_idx" on addon ("name");
+create index "addon_installed_idx" on addon ("installed");
+CREATE TABLE "app" (
+ "id" serial NOT NULL,
+ "app_id" text NOT NULL DEFAULT '',
+ "app_sig" text NOT NULL DEFAULT '',
+ "app_author" text NOT NULL DEFAULT '',
+ "app_name" text NOT NULL DEFAULT '',
+ "app_desc" text NOT NULL,
+ "app_url" text NOT NULL DEFAULT '',
+ "app_photo" text NOT NULL DEFAULT '',
+ "app_version" text NOT NULL DEFAULT '',
+ "app_channel" bigint NOT NULL DEFAULT '0',
+ "app_addr" text NOT NULL DEFAULT '',
+ "app_price" text NOT NULL DEFAULT '',
+ "app_page" text NOT NULL DEFAULT '',
+ "app_requires" text NOT NULL DEFAULT '',
+ PRIMARY KEY ("id")
+);
+create index "app_id" on app ("app_id");
+create index "app_name" on app ("app_name");
+create index "app_url" on app ("app_url");
+create index "app_photo" on app ("app_photo");
+create index "app_version" on app ("app_version");
+create index "app_channel" on app ("app_channel");
+create index "app_price" on app ("app_price");
+CREATE TABLE "attach" (
+ "id" serial NOT NULL,
+ "aid" bigint NOT NULL DEFAULT '0',
+ "uid" bigint NOT NULL DEFAULT '0',
+ "hash" varchar(64) NOT NULL DEFAULT '',
+ "creator" varchar(128) NOT NULL DEFAULT '',
+ "filename" text NOT NULL DEFAULT '',
+ "filetype" varchar(64) NOT NULL DEFAULT '',
+ "filesize" bigint NOT NULL DEFAULT '0',
+ "revision" bigint NOT NULL DEFAULT '0',
+ "folder" varchar(64) NOT NULL DEFAULT '',
+ "flags" bigint NOT NULL DEFAULT '0',
+ "data" bytea NOT NULL,
+ "created" timestamp NOT NULL DEFAULT '0001-01-01 00:00:00',
+ "edited" timestamp NOT NULL DEFAULT '0001-01-01 00:00:00',
+ "allow_cid" text NOT NULL,
+ "allow_gid" text NOT NULL,
+ "deny_cid" text NOT NULL,
+ "deny_gid" text NOT NULL,
+ PRIMARY KEY ("id")
+
+);
+create index "attach_aid_idx" on attach ("aid");
+create index "attach_uid_idx" on attach ("uid");
+create index "attach_hash_idx" on attach ("hash");
+create index "attach_filename_idx" on attach ("filename");
+create index "attach_filetype_idx" on attach ("filetype");
+create index "attach_filesize_idx" on attach ("filesize");
+create index "attach_created_idx" on attach ("created");
+create index "attach_edited_idx" on attach ("edited");
+create index "attach_revision_idx" on attach ("revision");
+create index "attach_folder_idx" on attach ("folder");
+create index "attach_flags_idx" on attach ("flags");
+create index "attach_creator_idx" on attach ("creator");
+CREATE TABLE "auth_codes" (
+ "id" varchar(40) NOT NULL,
+ "client_id" varchar(20) NOT NULL,
+ "redirect_uri" varchar(200) NOT NULL,
+ "expires" bigint NOT NULL,
+ "scope" varchar(250) NOT NULL,
+ PRIMARY KEY ("id")
+);
+CREATE TABLE "cache" (
+ "k" text NOT NULL,
+ "v" text NOT NULL,
+ "updated" timestamp NOT NULL,
+ PRIMARY KEY ("k")
+);
+CREATE TABLE "channel" (
+ "channel_id" serial NOT NULL,
+ "channel_account_id" bigint NOT NULL DEFAULT '0',
+ "channel_primary" numeric(1) NOT NULL DEFAULT '0',
+ "channel_name" text NOT NULL DEFAULT '',
+ "channel_address" text NOT NULL DEFAULT '',
+ "channel_guid" text NOT NULL DEFAULT '',
+ "channel_guid_sig" text NOT NULL,
+ "channel_hash" text NOT NULL DEFAULT '',
+ "channel_timezone" varchar(128) NOT NULL DEFAULT 'UTC',
+ "channel_location" text NOT NULL DEFAULT '',
+ "channel_theme" text NOT NULL DEFAULT '',
+ "channel_startpage" text NOT NULL DEFAULT '',
+ "channel_pubkey" text NOT NULL,
+ "channel_prvkey" text NOT NULL,
+ "channel_notifyflags" bigint NOT NULL DEFAULT '65535',
+ "channel_pageflags" bigint NOT NULL DEFAULT '0',
+ "channel_dirdate" timestamp NOT NULL DEFAULT '0001-01-01 00:00:00',
+ "channel_deleted" timestamp NOT NULL DEFAULT '0001-01-01 00:00:00',
+ "channel_max_anon_mail" bigint NOT NULL DEFAULT '10',
+ "channel_max_friend_req" bigint NOT NULL DEFAULT '10',
+ "channel_expire_days" bigint NOT NULL DEFAULT '0',
+ "channel_passwd_reset" text NOT NULL DEFAULT '',
+ "channel_default_group" text NOT NULL DEFAULT '',
+ "channel_allow_cid" text ,
+ "channel_allow_gid" text ,
+ "channel_deny_cid" text ,
+ "channel_deny_gid" text ,
+ "channel_r_stream" bigint NOT NULL DEFAULT '128',
+ "channel_r_profile" bigint NOT NULL DEFAULT '128',
+ "channel_r_photos" bigint NOT NULL DEFAULT '128',
+ "channel_r_abook" bigint NOT NULL DEFAULT '128',
+ "channel_w_stream" bigint NOT NULL DEFAULT '128',
+ "channel_w_wall" bigint NOT NULL DEFAULT '128',
+ "channel_w_tagwall" bigint NOT NULL DEFAULT '128',
+ "channel_w_comment" bigint NOT NULL DEFAULT '128',
+ "channel_w_mail" bigint NOT NULL DEFAULT '128',
+ "channel_w_photos" bigint NOT NULL DEFAULT '128',
+ "channel_w_chat" bigint NOT NULL DEFAULT '128',
+ "channel_a_delegate" bigint NOT NULL DEFAULT '0',
+ "channel_r_storage" bigint NOT NULL DEFAULT '128',
+ "channel_w_storage" bigint NOT NULL DEFAULT '128',
+ "channel_r_pages" bigint NOT NULL DEFAULT '128',
+ "channel_w_pages" bigint NOT NULL DEFAULT '128',
+ "channel_a_republish" bigint NOT NULL DEFAULT '128',
+ "channel_w_like" bigint NOT NULL DEFAULT '128',
+ PRIMARY KEY ("channel_id"),
+ UNIQUE ("channel_address")
+);
+create index "channel_account_id" on channel ("channel_account_id");
+create index "channel_primary" on channel ("channel_primary");
+create index "channel_name" on channel ("channel_name");
+create index "channel_timezone" on channel ("channel_timezone");
+create index "channel_location" on channel ("channel_location");
+create index "channel_theme" on channel ("channel_theme");
+create index "channel_notifyflags" on channel ("channel_notifyflags");
+create index "channel_pageflags" on channel ("channel_pageflags");
+create index "channel_max_anon_mail" on channel ("channel_max_anon_mail");
+create index "channel_max_friend_req" on channel ("channel_max_friend_req");
+create index "channel_default_gid" on channel ("channel_default_group");
+create index "channel_r_stream" on channel ("channel_r_stream");
+create index "channel_r_profile" on channel ("channel_r_profile");
+create index "channel_r_photos" on channel ("channel_r_photos");
+create index "channel_r_abook" on channel ("channel_r_abook");
+create index "channel_w_stream" on channel ("channel_w_stream");
+create index "channel_w_wall" on channel ("channel_w_wall");
+create index "channel_w_tagwall" on channel ("channel_w_tagwall");
+create index "channel_w_comment" on channel ("channel_w_comment");
+create index "channel_w_mail" on channel ("channel_w_mail");
+create index "channel_w_photos" on channel ("channel_w_photos");
+create index "channel_w_chat" on channel ("channel_w_chat");
+create index "channel_guid" on channel ("channel_guid");
+create index "channel_hash" on channel ("channel_hash");
+create index "channel_expire_days" on channel ("channel_expire_days");
+create index "channel_a_delegate" on channel ("channel_a_delegate");
+create index "channel_r_storage" on channel ("channel_r_storage");
+create index "channel_w_storage" on channel ("channel_w_storage");
+create index "channel_r_pages" on channel ("channel_r_pages");
+create index "channel_w_pages" on channel ("channel_w_pages");
+create index "channel_deleted" on channel ("channel_deleted");
+create index "channel_a_republish" on channel ("channel_a_republish");
+create index "channel_w_like" on channel ("channel_w_like");
+create index "channel_dirdate" on channel ("channel_dirdate");
+CREATE TABLE "chat" (
+ "chat_id" serial NOT NULL,
+ "chat_room" bigint NOT NULL DEFAULT '0',
+ "chat_xchan" text NOT NULL DEFAULT '',
+ "chat_text" text NOT NULL,
+ "created" timestamp NOT NULL DEFAULT '0001-01-01 00:00:00',
+ PRIMARY KEY ("chat_id")
+);
+create index "chat_room_idx" on chat ("chat_room");
+create index "chat_xchan_idx" on chat ("chat_xchan");
+create index "chat_created_idx" on chat ("created");
+CREATE TABLE "chatpresence" (
+ "cp_id" serial NOT NULL,
+ "cp_room" bigint NOT NULL DEFAULT '0',
+ "cp_xchan" text NOT NULL DEFAULT '',
+ "cp_last" timestamp NOT NULL DEFAULT '0001-01-01 00:00:00',
+ "cp_status" text NOT NULL,
+ "cp_client" char(128) NOT NULL DEFAULT '',
+ PRIMARY KEY ("cp_id")
+);
+create index "cp_room" on chatpresence ("cp_room");
+create index "cp_xchan" on chatpresence ("cp_xchan");
+create index "cp_last" on chatpresence ("cp_last");
+create index "cp_status" on chatpresence ("cp_status");
+
+CREATE TABLE "chatroom" (
+ "cr_id" serial NOT NULL,
+ "cr_aid" bigint NOT NULL DEFAULT '0',
+ "cr_uid" bigint NOT NULL DEFAULT '0',
+ "cr_name" text NOT NULL DEFAULT '',
+ "cr_created" timestamp NOT NULL DEFAULT '0001-01-01 00:00:00',
+ "cr_edited" timestamp NOT NULL DEFAULT '0001-01-01 00:00:00',
+ "cr_expire" bigint NOT NULL DEFAULT '0',
+ "allow_cid" text NOT NULL,
+ "allow_gid" text NOT NULL,
+ "deny_cid" text NOT NULL,
+ "deny_gid" text NOT NULL,
+ PRIMARY KEY ("cr_id")
+);
+create index "cr_aid" on chatroom ("cr_aid");
+create index "cr_uid" on chatroom ("cr_uid");
+create index "cr_name" on chatroom ("cr_name");
+create index "cr_created" on chatroom ("cr_created");
+create index "cr_edited" on chatroom ("cr_edited");
+create index "cr_expire" on chatroom ("cr_expire");
+CREATE TABLE "clients" (
+ "client_id" varchar(20) NOT NULL,
+ "pw" varchar(20) NOT NULL,
+ "redirect_uri" varchar(200) NOT NULL,
+ "name" text,
+ "icon" text,
+ "uid" bigint NOT NULL DEFAULT '0',
+ PRIMARY KEY ("client_id")
+);
+CREATE TABLE "config" (
+ "id" serial NOT NULL,
+ "cat" text NOT NULL,
+ "k" text NOT NULL,
+ "v" text NOT NULL,
+ PRIMARY KEY ("id"),
+ UNIQUE ("cat","k")
+);
+CREATE TABLE "conv" (
+ "id" serial NOT NULL,
+ "guid" text NOT NULL,
+ "recips" text NOT NULL,
+ "uid" bigint NOT NULL,
+ "creator" text NOT NULL,
+ "created" timestamp NOT NULL DEFAULT '0001-01-01 00:00:00',
+ "updated" timestamp NOT NULL DEFAULT '0001-01-01 00:00:00',
+ "subject" text NOT NULL,
+ PRIMARY KEY ("id")
+);
+create index "conv_created_idx" on conv ("created");
+create index "conv_updated_idx" on conv ("updated");
+
+CREATE TABLE "event" (
+ "id" serial NOT NULL,
+ "aid" bigint NOT NULL DEFAULT '0',
+ "uid" bigint NOT NULL,
+ "event_xchan" text NOT NULL DEFAULT '',
+ "event_hash" text NOT NULL DEFAULT '',
+ "created" timestamp NOT NULL,
+ "edited" timestamp NOT NULL,
+ "start" timestamp NOT NULL,
+ "finish" timestamp NOT NULL,
+ "summary" text NOT NULL,
+ "description" text NOT NULL,
+ "location" text NOT NULL,
+ "type" text NOT NULL,
+ "nofinish" numeric(1) NOT NULL DEFAULT '0',
+ "adjust" numeric(1) NOT NULL DEFAULT '1',
+ "ignore" numeric(1) NOT NULL DEFAULT '0',
+ "allow_cid" text NOT NULL,
+ "allow_gid" text NOT NULL,
+ "deny_cid" text NOT NULL,
+ "deny_gid" text NOT NULL,
+ PRIMARY KEY ("id")
+);
+create index "event_uid_idx" on event ("uid");
+create index "event_type_idx" on event ("type");
+create index "event_start_idx" on event ("start");
+create index "event_finish_idx" on event ("finish");
+create index "event_adjust_idx" on event ("adjust");
+create index "event_nofinish_idx" on event ("nofinish");
+create index "event_ignore_idx" on event ("ignore");
+create index "event_aid_idx" on event ("aid");
+create index "event_hash_idx" on event ("event_hash");
+create index "event_xchan_idx" on event ("event_xchan");
+
+
+CREATE TABLE "fcontact" (
+ "id" serial NOT NULL,
+ "url" text NOT NULL,
+ "name" text NOT NULL,
+ "photo" text NOT NULL,
+ "request" text NOT NULL,
+ "nick" text NOT NULL,
+ "addr" text NOT NULL,
+ "batch" text NOT NULL,
+ "notify" text NOT NULL,
+ "poll" text NOT NULL,
+ "confirm" text NOT NULL,
+ "priority" numeric(1) NOT NULL,
+ "network" varchar(32) NOT NULL DEFAULT '',
+ "alias" text NOT NULL,
+ "pubkey" text NOT NULL,
+ "updated" timestamp NOT NULL DEFAULT '0001-01-01 00:00:00',
+ PRIMARY KEY ("id")
+);
+create index "fcontact_addr_idx" on fcontact ("addr");
+create index "fcontact_network_idx" on fcontact ("network");
+
+CREATE TABLE "ffinder" (
+ "id" serial NOT NULL,
+ "uid" bigint NOT NULL,
+ "cid" bigint NOT NULL,
+ "fid" bigint NOT NULL,
+ PRIMARY KEY ("id")
+);
+create index "ffinder_uid_idx" on ffinder ("uid");
+create index "ffinder_cid_idx" on ffinder ("cid");
+create index "ffinder_fid_idx" on ffinder ("fid");
+
+CREATE TABLE "fserver" (
+ "id" serial NOT NULL,
+ "server" text NOT NULL,
+ "posturl" text NOT NULL,
+ "key" text NOT NULL,
+ PRIMARY KEY ("id")
+);
+create index "fserver_server_idx" on fserver ("server");
+create index "fserver_posturl_idx" on fserver ("posturl");
+
+CREATE TABLE "fsuggest" (
+ "id" serial NOT NULL,
+ "uid" bigint NOT NULL,
+ "cid" bigint NOT NULL,
+ "name" text NOT NULL,
+ "url" text NOT NULL,
+ "request" text NOT NULL,
+ "photo" text NOT NULL,
+ "note" text NOT NULL,
+ "created" timestamp NOT NULL,
+ PRIMARY KEY ("id")
+);
+CREATE TABLE "group_member" (
+ "id" serial NOT NULL,
+ "uid" bigint NOT NULL,
+ "gid" bigint NOT NULL,
+ "xchan" text NOT NULL DEFAULT '',
+ PRIMARY KEY ("id")
+);
+create index "groupmember_uid" on group_member ("uid");
+create index "groupmember_gid" on group_member ("gid");
+create index "groupmember_xchan" on group_member ("xchan");
+
+CREATE TABLE "groups" (
+ "id" serial NOT NULL,
+ "hash" text NOT NULL DEFAULT '',
+ "uid" bigint NOT NULL,
+ "visible" numeric(1) NOT NULL DEFAULT '0',
+ "deleted" numeric(1) NOT NULL DEFAULT '0',
+ "name" text NOT NULL,
+ PRIMARY KEY ("id")
+
+);
+create index "groups_uid_idx" on groups ("uid");
+create index "groups_visible_idx" on groups ("visible");
+create index "groups_deleted_idx" on groups ("deleted");
+create index "groups_hash_idx" on groups ("hash");
+
+CREATE TABLE "hook" (
+ "id" serial NOT NULL,
+ "hook" text NOT NULL,
+ "file" text NOT NULL,
+ "function" text NOT NULL,
+ "priority" bigint NOT NULL DEFAULT '0',
+ PRIMARY KEY ("id")
+
+);
+create index "hook_idx" on hook ("hook");
+CREATE TABLE "hubloc" (
+ "hubloc_id" serial NOT NULL,
+ "hubloc_guid" text NOT NULL DEFAULT '',
+ "hubloc_guid_sig" text NOT NULL DEFAULT '',
+ "hubloc_hash" text NOT NULL,
+ "hubloc_addr" text NOT NULL DEFAULT '',
+ "hubloc_network" text NOT NULL DEFAULT '',
+ "hubloc_flags" bigint NOT NULL DEFAULT '0',
+ "hubloc_status" bigint NOT NULL DEFAULT '0',
+ "hubloc_url" text NOT NULL DEFAULT '',
+ "hubloc_url_sig" text NOT NULL DEFAULT '',
+ "hubloc_host" text NOT NULL DEFAULT '',
+ "hubloc_callback" text NOT NULL DEFAULT '',
+ "hubloc_connect" text NOT NULL DEFAULT '',
+ "hubloc_sitekey" text NOT NULL DEFAULT '',
+ "hubloc_updated" timestamp NOT NULL DEFAULT '0001-01-01 00:00:00',
+ "hubloc_connected" timestamp NOT NULL DEFAULT '0001-01-01 00:00:00',
+ PRIMARY KEY ("hubloc_id")
+);
+create index "hubloc_url" on hubloc ("hubloc_url");
+create index "hubloc_guid" on hubloc ("hubloc_guid");
+create index "hubloc_flags" on hubloc ("hubloc_flags");
+create index "hubloc_connect" on hubloc ("hubloc_connect");
+create index "hubloc_host" on hubloc ("hubloc_host");
+create index "hubloc_addr" on hubloc ("hubloc_addr");
+create index "hubloc_network" on hubloc ("hubloc_network");
+create index "hubloc_updated" on hubloc ("hubloc_updated");
+create index "hubloc_connected" on hubloc ("hubloc_connected");
+create index "hubloc_status" on hubloc ("hubloc_status");
+CREATE TABLE "issue" (
+ "issue_id" serial NOT NULL,
+ "issue_created" timestamp NOT NULL DEFAULT '0001-01-01 00:00:00',
+ "issue_updated" timestamp NOT NULL DEFAULT '0001-01-01 00:00:00',
+ "issue_assigned" text NOT NULL,
+ "issue_priority" bigint NOT NULL,
+ "issue_status" bigint NOT NULL,
+ "issue_component" text NOT NULL,
+ PRIMARY KEY ("issue_id")
+);
+create index "issue_created" on issue ("issue_created");
+create index "issue_updated" on issue ("issue_updated");
+create index "issue_assigned" on issue ("issue_assigned");
+create index "issue_priority" on issue ("issue_priority");
+create index "issue_status" on issue ("issue_status");
+create index "issue_component" on issue ("issue_component");
+
+CREATE TABLE "item" (
+ "id" serial NOT NULL,
+ "mid" text NOT NULL DEFAULT '',
+ "aid" bigint NOT NULL DEFAULT '0',
+ "uid" bigint NOT NULL DEFAULT '0',
+ "parent" bigint NOT NULL DEFAULT '0',
+ "parent_mid" text NOT NULL DEFAULT '',
+ "thr_parent" text NOT NULL DEFAULT '',
+ "created" timestamp NOT NULL DEFAULT '0001-01-01 00:00:00',
+ "edited" timestamp NOT NULL DEFAULT '0001-01-01 00:00:00',
+ "expires" timestamp NOT NULL DEFAULT '0001-01-01 00:00:00',
+ "commented" timestamp NOT NULL DEFAULT '0001-01-01 00:00:00',
+ "received" timestamp NOT NULL DEFAULT '0001-01-01 00:00:00',
+ "changed" timestamp NOT NULL DEFAULT '0001-01-01 00:00:00',
+ "comments_closed" timestamp NOT NULL DEFAULT '0001-01-01 00:00:00',
+ "owner_xchan" text NOT NULL DEFAULT '',
+ "author_xchan" text NOT NULL DEFAULT '',
+ "source_xchan" text NOT NULL DEFAULT '',
+ "mimetype" text NOT NULL DEFAULT '',
+ "title" text NOT NULL,
+ "body" text NOT NULL,
+ "app" text NOT NULL DEFAULT '',
+ "lang" varchar(64) NOT NULL DEFAULT '',
+ "revision" bigint NOT NULL DEFAULT '0',
+ "verb" text NOT NULL DEFAULT '',
+ "obj_type" text NOT NULL DEFAULT '',
+ "object" text NOT NULL,
+ "tgt_type" text NOT NULL DEFAULT '',
+ "target" text NOT NULL,
+ "layout_mid" text NOT NULL DEFAULT '',
+ "postopts" text NOT NULL DEFAULT '',
+ "route" text NOT NULL DEFAULT '',
+ "llink" text NOT NULL DEFAULT '',
+ "plink" text NOT NULL DEFAULT '',
+ "resource_id" text NOT NULL DEFAULT '',
+ "resource_type" varchar(16) NOT NULL DEFAULT '',
+ "attach" text NOT NULL,
+ "sig" text NOT NULL DEFAULT '',
+ "diaspora_meta" text NOT NULL DEFAULT '',
+ "location" text NOT NULL DEFAULT '',
+ "coord" text NOT NULL DEFAULT '',
+ "public_policy" text NOT NULL DEFAULT '',
+ "comment_policy" text NOT NULL DEFAULT '',
+ "allow_cid" text NOT NULL,
+ "allow_gid" text NOT NULL,
+ "deny_cid" text NOT NULL,
+ "deny_gid" text NOT NULL,
+ "item_restrict" bigint NOT NULL DEFAULT '0',
+ "item_flags" bigint NOT NULL DEFAULT '0',
+ "item_private" numeric(4) NOT NULL DEFAULT '0',
+ "item_search_vector" tsvector,
+ PRIMARY KEY ("id")
+);
+create index "item_uid" on item ("uid");
+create index "item_parent" on item ("parent");
+create index "item_created" on item ("created");
+create index "item_edited" on item ("edited");
+create index "item_received" on item ("received");
+create index "item_uid_commented" on item ("uid","commented");
+create index "item_uid_created" on item ("uid","created");
+create index "item_changed" on item ("changed");
+create index "item_comments_closed" on item ("comments_closed");
+create index "item_aid" on item ("aid");
+create index "item_owner_xchan" on item ("owner_xchan");
+create index "item_author_xchan" on item ("author_xchan");
+create index "item_resource_type" on item ("resource_type");
+create index "item_restrict" on item ("item_restrict");
+create index "item_flags" on item ("item_flags");
+create index "item_commented" on item ("commented");
+create index "item_verb" on item ("verb");
+create index "item_private" on item ("item_private");
+create index "item_llink" on item ("llink");
+create index "item_expires" on item ("expires");
+create index "item_revision" on item ("revision");
+create index "item_mimetype" on item ("mimetype");
+create index "item_mid" on item ("mid");
+create index "item_parent_mid" on item ("parent_mid");
+create index "item_uid_mid" on item ("mid","uid");
+create index "item_public_policy" on item ("public_policy");
+create index "item_comment_policy" on item ("comment_policy");
+create index "item_layout_mid" on item ("layout_mid");
+
+-- fulltext indexes
+create index "item_search_idx" on item USING gist("item_search_vector");
+create index "item_allow_cid" on item ("allow_cid");
+create index "item_allow_gid" on item ("allow_gid");
+create index "item_deny_cid" on item ("deny_cid");
+create index "item_deny_gid" on item ("deny_gid");
+
+CREATE TABLE "item_id" (
+ "id" serial NOT NULL,
+ "iid" bigint NOT NULL,
+ "uid" bigint NOT NULL,
+ "sid" text NOT NULL,
+ "service" text NOT NULL,
+ PRIMARY KEY ("id")
+
+);
+create index "itemid_uid" on item_id ("uid");
+create index "itemid_sid" on item_id ("sid");
+create index "itemid_service" on item_id ("service");
+create index "itemid_iid" on item_id ("iid");
+CREATE TABLE "likes" (
+ "id" serial NOT NULL,
+ "channel_id" bigint NOT NULL DEFAULT '0',
+ "liker" char(128) NOT NULL DEFAULT '',
+ "likee" char(128) NOT NULL DEFAULT '',
+ "iid" bigint NOT NULL DEFAULT '0',
+ "verb" text NOT NULL DEFAULT '',
+ "target_type" text NOT NULL DEFAULT '',
+ "target_id" char(128) NOT NULL DEFAULT '',
+ "target" text NOT NULL,
+ PRIMARY KEY ("id")
+);
+create index "likes_channel_id" on likes ("channel_id");
+create index "likes_liker" on likes ("liker");
+create index "likes_likee" on likes ("likee");
+create index "likes_iid" on likes ("iid");
+create index "likes_verb" on likes ("verb");
+create index "likes_target_type" on likes ("target_type");
+create index "likes_target_id" on likes ("target_id");
+CREATE TABLE "mail" (
+ "id" serial NOT NULL,
+ "convid" bigint NOT NULL DEFAULT '0',
+ "mail_flags" bigint NOT NULL DEFAULT '0',
+ "from_xchan" text NOT NULL DEFAULT '',
+ "to_xchan" text NOT NULL DEFAULT '',
+ "account_id" bigint NOT NULL DEFAULT '0',
+ "channel_id" bigint NOT NULL,
+ "title" text NOT NULL,
+ "body" text NOT NULL,
+ "attach" text NOT NULL DEFAULT '',
+ "mid" text NOT NULL,
+ "parent_mid" text NOT NULL,
+ "created" timestamp NOT NULL DEFAULT '0001-01-01 00:00:00',
+ "expires" timestamp NOT NULL DEFAULT '0001-01-01 00:00:00',
+ PRIMARY KEY ("id")
+);
+create index "mail_convid" on mail ("convid");
+create index "mail_created" on mail ("created");
+create index "mail_flags" on mail ("mail_flags");
+create index "mail_account_id" on mail ("account_id");
+create index "mail_channel_id" on mail ("channel_id");
+create index "mail_from_xchan" on mail ("from_xchan");
+create index "mail_to_xchan" on mail ("to_xchan");
+create index "mail_mid" on mail ("mid");
+create index "mail_parent_mid" on mail ("parent_mid");
+create index "mail_expires" on mail ("expires");
+CREATE TABLE "manage" (
+ "id" serial NOT NULL,
+ "uid" bigint NOT NULL,
+ "xchan" text NOT NULL DEFAULT '',
+ PRIMARY KEY ("id")
+
+);
+create index "manage_uid" on manage ("uid");
+create index "manage_xchan" on manage ("xchan");
+CREATE TABLE "menu" (
+ "menu_id" serial NOT NULL,
+ "menu_channel_id" bigint NOT NULL DEFAULT '0',
+ "menu_name" text NOT NULL DEFAULT '',
+ "menu_desc" text NOT NULL DEFAULT '',
+ "menu_flags" bigint NOT NULL DEFAULT '0',
+ PRIMARY KEY ("menu_id")
+);
+create index "menu_channel_id" on menu ("menu_channel_id");
+create index "menu_name" on menu ("menu_name");
+create index "menu_flags" on menu ("menu_flags");
+CREATE TABLE "menu_item" (
+ "mitem_id" serial NOT NULL,
+ "mitem_link" text NOT NULL DEFAULT '',
+ "mitem_desc" text NOT NULL DEFAULT '',
+ "mitem_flags" bigint NOT NULL DEFAULT '0',
+ "allow_cid" text NOT NULL,
+ "allow_gid" text NOT NULL,
+ "deny_cid" text NOT NULL,
+ "deny_gid" text NOT NULL,
+ "mitem_channel_id" bigint NOT NULL,
+ "mitem_menu_id" bigint NOT NULL DEFAULT '0',
+ "mitem_order" bigint NOT NULL DEFAULT '0',
+ PRIMARY KEY ("mitem_id")
+
+);
+create index "mitem_channel_id" on menu_item ("mitem_channel_id");
+create index "mitem_menu_id" on menu_item ("mitem_menu_id");
+create index "mitem_flags" on menu_item ("mitem_flags");
+CREATE TABLE "notify" (
+ "id" serial NOT NULL,
+ "hash" char(64) NOT NULL,
+ "name" text NOT NULL,
+ "url" text NOT NULL,
+ "photo" text NOT NULL,
+ "date" timestamp NOT NULL,
+ "msg" text NOT NULL DEFAULT '',
+ "aid" bigint NOT NULL,
+ "uid" bigint NOT NULL,
+ "link" text NOT NULL,
+ "parent" text NOT NULL DEFAULT '',
+ "seen" numeric(1) NOT NULL DEFAULT '0',
+ "type" bigint NOT NULL,
+ "verb" text NOT NULL,
+ "otype" varchar(16) NOT NULL,
+ PRIMARY KEY ("id")
+);
+create index "notify_type" on notify ("type");
+create index "notify_seen" on notify ("seen");
+create index "notify_uid" on notify ("uid");
+create index "notify_date" on notify ("date");
+create index "notify_hash" on notify ("hash");
+create index "notify_parent" on notify ("parent");
+create index "notify_link" on notify ("link");
+create index "notify_otype" on notify ("otype");
+create index "notify_aid" on notify ("aid");
+CREATE TABLE "obj" (
+ "obj_id" serial NOT NULL,
+ "obj_page" char(64) NOT NULL DEFAULT '',
+ "obj_verb" text NOT NULL DEFAULT '',
+ "obj_type" bigint NOT NULL DEFAULT '0',
+ "obj_obj" text NOT NULL DEFAULT '',
+ "obj_channel" bigint NOT NULL DEFAULT '0',
+ "allow_cid" text NOT NULL,
+ "allow_gid" text NOT NULL,
+ "deny_cid" text NOT NULL,
+ "deny_gid" text NOT NULL,
+ PRIMARY KEY ("obj_id")
+
+);
+create index "obj_verb" on obj ("obj_verb");
+create index "obj_page" on obj ("obj_page");
+create index "obj_type" on obj ("obj_type");
+create index "obj_channel" on obj ("obj_channel");
+create index "obj_obj" on obj ("obj_obj");
+
+CREATE TABLE "outq" (
+ "outq_hash" text NOT NULL,
+ "outq_account" bigint NOT NULL DEFAULT '0',
+ "outq_channel" bigint NOT NULL DEFAULT '0',
+ "outq_driver" varchar(32) NOT NULL DEFAULT '',
+ "outq_posturl" text NOT NULL DEFAULT '',
+ "outq_async" numeric(1) NOT NULL DEFAULT '0',
+ "outq_delivered" numeric(1) NOT NULL DEFAULT '0',
+ "outq_created" timestamp NOT NULL DEFAULT '0001-01-01 00:00:00',
+ "outq_updated" timestamp NOT NULL DEFAULT '0001-01-01 00:00:00',
+ "outq_notify" text NOT NULL,
+ "outq_msg" text NOT NULL,
+ PRIMARY KEY ("outq_hash")
+);
+create index "outq_account" on outq ("outq_account");
+create index "outq_channel" on outq ("outq_channel");
+create index "outq_hub" on outq ("outq_posturl");
+create index "outq_created" on outq ("outq_created");
+create index "outq_updated" on outq ("outq_updated");
+create index "outq_async" on outq ("outq_async");
+create index "outq_delivered" on outq ("outq_delivered");
+
+CREATE TABLE "pconfig" (
+ "id" serial NOT NULL,
+ "uid" bigint NOT NULL DEFAULT '0',
+ "cat" text NOT NULL,
+ "k" text NOT NULL,
+ "v" text NOT NULL,
+ PRIMARY KEY ("id"),
+ UNIQUE ("uid","cat","k")
+);
+CREATE TABLE "photo" (
+ "id" serial NOT NULL,
+ "aid" bigint NOT NULL DEFAULT '0',
+ "uid" bigint NOT NULL,
+ "xchan" text NOT NULL DEFAULT '',
+ "resource_id" text NOT NULL,
+ "created" timestamp NOT NULL,
+ "edited" timestamp NOT NULL,
+ "title" text NOT NULL,
+ "description" text NOT NULL,
+ "album" text NOT NULL,
+ "filename" text NOT NULL,
+ "type" varchar(128) NOT NULL DEFAULT 'image/jpeg',
+ "height" numeric(6) NOT NULL,
+ "width" numeric(6) NOT NULL,
+ "size" bigint NOT NULL DEFAULT '0',
+ "data" bytea NOT NULL,
+ "scale" numeric(3) NOT NULL,
+ "profile" numeric(1) NOT NULL DEFAULT '0',
+ "photo_flags" bigint NOT NULL DEFAULT '0',
+ "allow_cid" text NOT NULL,
+ "allow_gid" text NOT NULL,
+ "deny_cid" text NOT NULL,
+ "deny_gid" text NOT NULL,
+ PRIMARY KEY ("id")
+);
+create index "photo_uid" on photo ("uid");
+create index "photo_album" on photo ("album");
+create index "photo_scale" on photo ("scale");
+create index "photo_profile" on photo ("profile");
+create index "photo_flags" on photo ("photo_flags");
+create index "photo_type" on photo ("type");
+create index "photo_aid" on photo ("aid");
+create index "photo_xchan" on photo ("xchan");
+create index "photo_size" on photo ("size");
+create index "photo_resource_id" on photo ("resource_id");
+
+CREATE TABLE "poll" (
+ "poll_id" serial NOT NULL,
+ "poll_channel" bigint NOT NULL DEFAULT '0',
+ "poll_desc" text NOT NULL,
+ "poll_flags" bigint NOT NULL DEFAULT '0',
+ "poll_votes" bigint NOT NULL DEFAULT '0',
+ PRIMARY KEY ("poll_id")
+
+);
+create index "poll_channel" on poll ("poll_channel");
+create index "poll_flags" on poll ("poll_flags");
+create index "poll_votes" on poll ("poll_votes");
+CREATE TABLE "poll_elm" (
+ "pelm_id" serial NOT NULL,
+ "pelm_poll" bigint NOT NULL DEFAULT '0',
+ "pelm_desc" text NOT NULL,
+ "pelm_flags" bigint NOT NULL DEFAULT '0',
+ "pelm_result" float NOT NULL DEFAULT '0',
+ PRIMARY KEY ("pelm_id")
+);
+create index "pelm_poll" on poll_elm ("pelm_poll");
+create index "pelm_result" on poll_elm ("pelm_result");
+
+CREATE TABLE "profdef" (
+ "id" serial NOT NULL,
+ "field_name" text NOT NULL DEFAULT '',
+ "field_type" varchar(16) NOT NULL DEFAULT '',
+ "field_desc" text NOT NULL DEFAULT '',
+ "field_help" text NOT NULL DEFAULT '',
+ "field_inputs" text NOT NULL,
+ PRIMARY KEY ("id")
+);
+create index "profdef_field_name" on profdef ("field_name");
+CREATE TABLE "profext" (
+ "id" serial NOT NULL,
+ "channel_id" bigint NOT NULL DEFAULT '0',
+ "hash" text NOT NULL DEFAULT '',
+ "k" text NOT NULL DEFAULT '',
+ "v" text NOT NULL,
+ PRIMARY KEY ("id")
+);
+create index "profext_channel_id" on profext ("channel_id");
+create index "profext_hash" on profext ("hash");
+create index "profext_k" on profext ("k");
+
+CREATE TABLE "profile" (
+ "id" serial NOT NULL,
+ "profile_guid" char(64) NOT NULL DEFAULT '',
+ "aid" bigint NOT NULL DEFAULT '0',
+ "uid" bigint NOT NULL,
+ "profile_name" text NOT NULL,
+ "is_default" numeric(1) NOT NULL DEFAULT '0',
+ "hide_friends" numeric(1) NOT NULL DEFAULT '0',
+ "name" text NOT NULL,
+ "pdesc" text NOT NULL DEFAULT '',
+ "chandesc" text NOT NULL DEFAULT '',
+ "dob" varchar(32) NOT NULL DEFAULT '',
+ "dob_tz" text NOT NULL DEFAULT 'UTC',
+ "address" text NOT NULL DEFAULT '',
+ "locality" text NOT NULL DEFAULT '',
+ "region" text NOT NULL DEFAULT '',
+ "postal_code" varchar(32) NOT NULL DEFAULT '',
+ "country_name" text NOT NULL DEFAULT '',
+ "hometown" text NOT NULL DEFAULT '',
+ "gender" varchar(32) NOT NULL DEFAULT '',
+ "marital" text NOT NULL DEFAULT '',
+ "with" text NOT NULL DEFAULT '',
+ "howlong" timestamp NOT NULL DEFAULT '0001-01-01 00:00:00',
+ "sexual" text NOT NULL DEFAULT '',
+ "politic" text NOT NULL DEFAULT '',
+ "religion" text NOT NULL DEFAULT '',
+ "keywords" text NOT NULL DEFAULT '',
+ "likes" text NOT NULL DEFAULT '',
+ "dislikes" text NOT NULL DEFAULT '',
+ "about" text NOT NULL DEFAULT '',
+ "summary" text NOT NULL DEFAULT '',
+ "music" text NOT NULL DEFAULT '',
+ "book" text NOT NULL DEFAULT '',
+ "tv" text NOT NULL DEFAULT '',
+ "film" text NOT NULL DEFAULT '',
+ "interest" text NOT NULL DEFAULT '',
+ "romance" text NOT NULL DEFAULT '',
+ "work" text NOT NULL DEFAULT '',
+ "education" text NOT NULL DEFAULT '',
+ "contact" text NOT NULL DEFAULT '',
+ "channels" text NOT NULL DEFAULT '',
+ "homepage" text NOT NULL DEFAULT '',
+ "photo" text NOT NULL,
+ "thumb" text NOT NULL,
+ "publish" numeric(1) NOT NULL DEFAULT '0',
+ PRIMARY KEY ("id"),
+ UNIQUE ("profile_guid","uid")
+
+);
+create index "profile_uid" on profile ("uid");
+create index "profile_locality" on profile ("locality");
+create index "profile_hometown" on profile ("hometown");
+create index "profile_gender" on profile ("gender");
+create index "profile_marital" on profile ("marital");
+create index "profile_sexual" on profile ("sexual");
+create index "profile_publish" on profile ("publish");
+create index "profile_aid" on profile ("aid");
+create index "profile_is_default" on profile ("is_default");
+create index "profile_hide_friends" on profile ("hide_friends");
+create index "profile_postal_code" on profile ("postal_code");
+create index "profile_country_name" on profile ("country_name");
+create index "profile_guid" on profile ("profile_guid");
+CREATE TABLE "profile_check" (
+ "id" serial NOT NULL,
+ "uid" bigint NOT NULL,
+ "cid" bigint NOT NULL DEFAULT '0',
+ "dfrn_id" text NOT NULL,
+ "sec" text NOT NULL,
+ "expire" bigint NOT NULL,
+ PRIMARY KEY ("id")
+);
+create index "pc_uid" on profile_check ("uid");
+create index "pc_cid" on profile_check ("cid");
+create index "pc_dfrn_id" on profile_check ("dfrn_id");
+create index "pc_sec" on profile_check ("sec");
+create index "pc_expire" on profile_check ("expire");
+
+CREATE TABLE "register" (
+ "id" serial NOT NULL,
+ "hash" text NOT NULL,
+ "created" timestamp NOT NULL,
+ "uid" bigint NOT NULL,
+ "password" text NOT NULL,
+ "language" varchar(16) NOT NULL,
+ PRIMARY KEY ("id")
+);
+create index "reg_hash" on register ("hash");
+create index "reg_created" on register ("created");
+create index "reg_uid" on register ("uid");
+CREATE TABLE "session" (
+ "id" serial,
+ "sid" text NOT NULL,
+ "data" text NOT NULL,
+ "expire" numeric(20) NOT NULL,
+ PRIMARY KEY ("id")
+);
+create index "session_sid" on session ("sid");
+create index "session_expire" on session ("expire");
+CREATE TABLE "shares" (
+ "share_id" serial NOT NULL,
+ "share_type" bigint NOT NULL DEFAULT '0',
+ "share_target" bigint NOT NULL DEFAULT '0',
+ "share_xchan" text NOT NULL DEFAULT '',
+ PRIMARY KEY ("share_id")
+);
+create index "share_type" on shares ("share_type");
+create index "share_target" on shares ("share_target");
+create index "share_xchan" on shares ("share_xchan");
+
+CREATE TABLE "sign" (
+ "id" serial NOT NULL,
+ "iid" bigint NOT NULL DEFAULT '0',
+ "retract_iid" bigint NOT NULL DEFAULT '0',
+ "signed_text" text NOT NULL,
+ "signature" text NOT NULL,
+ "signer" text NOT NULL,
+ PRIMARY KEY ("id")
+);
+create index "sign_iid" on "sign" ("iid");
+create index "sign_retract_iid" on "sign" ("retract_iid");
+
+CREATE TABLE "site" (
+ "site_url" text NOT NULL,
+ "site_access" bigint NOT NULL DEFAULT '0',
+ "site_flags" bigint NOT NULL DEFAULT '0',
+ "site_update" timestamp NOT NULL DEFAULT '0001-01-01 00:00:00',
+ "site_pull" timestamp NOT NULL DEFAULT '0001-01-01 00:00:00',
+ "site_sync" timestamp NOT NULL DEFAULT '0001-01-01 00:00:00',
+ "site_directory" text NOT NULL DEFAULT '',
+ "site_register" bigint NOT NULL DEFAULT '0',
+ "site_sellpage" text NOT NULL DEFAULT '',
+ "site_location" text NOT NULL DEFAULT '',
+ "site_realm" text NOT NULL DEFAULT '',
+ PRIMARY KEY ("site_url")
+);
+create index "site_flags" on site ("site_flags");
+create index "site_update" on site ("site_update");
+create index "site_directory" on site ("site_directory");
+create index "site_register" on site ("site_register");
+create index "site_access" on site ("site_access");
+create index "site_sellpage" on site ("site_sellpage");
+create index "site_realm" on site ("site_realm");
+
+CREATE TABLE "source" (
+ "src_id" serial NOT NULL,
+ "src_channel_id" bigint NOT NULL DEFAULT '0',
+ "src_channel_xchan" text NOT NULL DEFAULT '',
+ "src_xchan" text NOT NULL DEFAULT '',
+ "src_patt" text NOT NULL,
+ PRIMARY KEY ("src_id")
+);
+create index "src_channel_id" on "source" ("src_channel_id");
+create index "src_channel_xchan" on "source" ("src_channel_xchan");
+create index "src_xchan" on "source" ("src_xchan");
+CREATE TABLE "spam" (
+ "id" serial NOT NULL,
+ "uid" bigint NOT NULL,
+ "spam" bigint NOT NULL DEFAULT '0',
+ "ham" bigint NOT NULL DEFAULT '0',
+ "term" text NOT NULL,
+ "date" timestamp NOT NULL DEFAULT '0001-01-01 00:00:00',
+ PRIMARY KEY ("id")
+);
+create index "spam_uid" on spam ("uid");
+create index "spam_spam" on spam ("spam");
+create index "spam_ham" on spam ("ham");
+create index "spam_term" on spam ("term");
+CREATE TABLE "sys_perms" (
+ "id" serial NOT NULL,
+ "cat" text NOT NULL,
+ "k" text NOT NULL,
+ "v" text NOT NULL,
+ "public_perm" numeric(1) NOT NULL,
+ PRIMARY KEY ("id")
+);
+CREATE TABLE "term" (
+ "tid" serial NOT NULL,
+ "aid" bigint NOT NULL DEFAULT '0',
+ "uid" bigint NOT NULL DEFAULT '0',
+ "oid" bigint NOT NULL,
+ "otype" numeric(3) NOT NULL,
+ "type" numeric(3) NOT NULL,
+ "term" text NOT NULL,
+ "url" text NOT NULL,
+ "imgurl" text NOT NULL DEFAULT '',
+ "term_hash" text NOT NULL DEFAULT '',
+ "parent_hash" text NOT NULL DEFAULT '',
+ PRIMARY KEY ("tid")
+);
+create index "term_oid" on term ("oid");
+create index "term_otype" on term ("otype");
+create index "term_type" on term ("type");
+create index "term_term" on term ("term");
+create index "term_uid" on term ("uid");
+create index "term_aid" on term ("aid");
+create index "term_imgurl" on term ("imgurl");
+create index "term_hash" on term ("term_hash");
+create index "term_parent_hash" on term ("parent_hash");
+CREATE TABLE "tokens" (
+ "id" varchar(40) NOT NULL,
+ "secret" text NOT NULL,
+ "client_id" varchar(20) NOT NULL,
+ "expires" numeric(20) NOT NULL,
+ "scope" varchar(200) NOT NULL,
+ "uid" bigint NOT NULL,
+ PRIMARY KEY ("id")
+);
+create index "tokens_client_id" on tokens ("client_id");
+create index "tokens_expires" on tokens ("expires");
+create index "tokens_uid" on tokens ("uid");
+
+CREATE TABLE "updates" (
+ "ud_id" serial NOT NULL,
+ "ud_hash" char(128) NOT NULL,
+ "ud_guid" text NOT NULL DEFAULT '',
+ "ud_date" timestamp NOT NULL DEFAULT '0001-01-01 00:00:00',
+ "ud_last" timestamp NOT NULL DEFAULT '0001-01-01 00:00:00',
+ "ud_flags" bigint NOT NULL DEFAULT '0',
+ "ud_addr" text NOT NULL DEFAULT '',
+ PRIMARY KEY ("ud_id")
+);
+create index "ud_date" on updates ("ud_date");
+create index "ud_guid" on updates ("ud_guid");
+create index "ud_hash" on updates ("ud_hash");
+create index "ud_flags" on updates ("ud_flags");
+create index "ud_addr" on updates ("ud_addr");
+create index "ud_last" on updates ("ud_last");
+CREATE TABLE "verify" (
+ "id" serial NOT NULL,
+ "channel" bigint NOT NULL DEFAULT '0',
+ "type" varchar(32) NOT NULL DEFAULT '',
+ "token" text NOT NULL DEFAULT '',
+ "meta" text NOT NULL DEFAULT '',
+ "created" timestamp NOT NULL DEFAULT '0001-01-01 00:00:00',
+ PRIMARY KEY ("id")
+);
+create index "verify_channel" on verify ("channel");
+create index "verify_type" on verify ("type");
+create index "verify_token" on verify ("token");
+create index "verify_meta" on verify ("meta");
+create index "verify_created" on verify ("created");
+CREATE TABLE "vote" (
+ "vote_id" serial NOT NULL,
+ "vote_poll" bigint NOT NULL DEFAULT '0',
+ "vote_element" bigint NOT NULL DEFAULT '0',
+ "vote_result" text NOT NULL,
+ "vote_xchan" text NOT NULL DEFAULT '',
+ PRIMARY KEY ("vote_id"),
+ UNIQUE ("vote_poll","vote_element","vote_xchan")
+);
+create index "vote_poll" on vote ("vote_poll");
+create index "vote_element" on vote ("vote_element");
+CREATE TABLE "xchan" (
+ "xchan_hash" text NOT NULL,
+ "xchan_guid" text NOT NULL DEFAULT '',
+ "xchan_guid_sig" text NOT NULL DEFAULT '',
+ "xchan_pubkey" text NOT NULL DEFAULT '',
+ "xchan_photo_mimetype" text NOT NULL DEFAULT 'image/jpeg',
+ "xchan_photo_l" text NOT NULL DEFAULT '',
+ "xchan_photo_m" text NOT NULL DEFAULT '',
+ "xchan_photo_s" text NOT NULL DEFAULT '',
+ "xchan_addr" text NOT NULL DEFAULT '',
+ "xchan_url" text NOT NULL DEFAULT '',
+ "xchan_connurl" text NOT NULL DEFAULT '',
+ "xchan_follow" text NOT NULL DEFAULT '',
+ "xchan_connpage" text NOT NULL DEFAULT '',
+ "xchan_name" text NOT NULL DEFAULT '',
+ "xchan_network" text NOT NULL DEFAULT '',
+ "xchan_instance_url" text NOT NULL DEFAULT '',
+ "xchan_flags" bigint NOT NULL DEFAULT '0',
+ "xchan_photo_date" timestamp NOT NULL DEFAULT '0001-01-01 00:00:00',
+ "xchan_name_date" timestamp NOT NULL DEFAULT '0001-01-01 00:00:00',
+ PRIMARY KEY ("xchan_hash")
+);
+create index "xchan_guid" on xchan ("xchan_guid");
+create index "xchan_addr" on xchan ("xchan_addr");
+create index "xchan_name" on xchan ("xchan_name");
+create index "xchan_network" on xchan ("xchan_network");
+create index "xchan_url" on xchan ("xchan_url");
+create index "xchan_flags" on xchan ("xchan_flags");
+create index "xchan_connurl" on xchan ("xchan_connurl");
+create index "xchan_instance_url" on xchan ("xchan_instance_url");
+create index "xchan_follow" on xchan ("xchan_follow");
+CREATE TABLE "xchat" (
+ "xchat_id" serial NOT NULL,
+ "xchat_url" text NOT NULL DEFAULT '',
+ "xchat_desc" text NOT NULL DEFAULT '',
+ "xchat_xchan" text NOT NULL DEFAULT '',
+ "xchat_edited" timestamp NOT NULL DEFAULT '0001-01-01 00:00:00',
+ PRIMARY KEY ("xchat_id")
+);
+create index "xchat_url" on xchat ("xchat_url");
+create index "xchat_desc" on xchat ("xchat_desc");
+create index "xchat_xchan" on xchat ("xchat_xchan");
+create index "xchat_edited" on xchat ("xchat_edited");
+CREATE TABLE "xconfig" (
+ "id" serial NOT NULL,
+ "xchan" text NOT NULL,
+ "cat" text NOT NULL,
+ "k" text NOT NULL,
+ "v" text NOT NULL,
+ PRIMARY KEY ("id")
+);
+create index "xconfig_xchan" on xconfig ("xchan");
+create index "xconfig_cat" on xconfig ("cat");
+create index "xconfig_k" on xconfig ("k");
+CREATE TABLE "xign" (
+ "id" serial NOT NULL,
+ "uid" bigint NOT NULL DEFAULT '0',
+ "xchan" text NOT NULL DEFAULT '',
+ PRIMARY KEY ("id")
+);
+create index "xign_uid" on xign ("uid");
+create index "xign_xchan" on xign ("xchan");
+CREATE TABLE "xlink" (
+ "xlink_id" serial NOT NULL,
+ "xlink_xchan" text NOT NULL DEFAULT '',
+ "xlink_link" text NOT NULL DEFAULT '',
+ "xlink_rating" bigint NOT NULL DEFAULT '0',
+ "xlink_updated" timestamp NOT NULL DEFAULT '0001-01-01 00:00:00',
+ PRIMARY KEY ("xlink_id")
+);
+create index "xlink_xchan" on xlink ("xlink_xchan");
+create index "xlink_link" on xlink ("xlink_link");
+create index "xlink_updated" on xlink ("xlink_updated");
+create index "xlink_rating" on xlink ("xlink_rating");
+CREATE TABLE "xprof" (
+ "xprof_hash" text NOT NULL,
+ "xprof_age" numeric(3) NOT NULL DEFAULT '0',
+ "xprof_desc" text NOT NULL DEFAULT '',
+ "xprof_dob" varchar(12) NOT NULL DEFAULT '',
+ "xprof_gender" text NOT NULL DEFAULT '',
+ "xprof_marital" text NOT NULL DEFAULT '',
+ "xprof_sexual" text NOT NULL DEFAULT '',
+ "xprof_locale" text NOT NULL DEFAULT '',
+ "xprof_region" text NOT NULL DEFAULT '',
+ "xprof_postcode" varchar(32) NOT NULL DEFAULT '',
+ "xprof_country" text NOT NULL DEFAULT '',
+ "xprof_keywords" text NOT NULL,
+ "xprof_about" text NOT NULL,
+ "xprof_homepage" text NOT NULL DEFAULT '',
+ "xprof_hometown" text NOT NULL DEFAULT '',
+ PRIMARY KEY ("xprof_hash")
+);
+create index "xprof_desc" on xprof ("xprof_desc");
+create index "xprof_dob" on xprof ("xprof_dob");
+create index "xprof_gender" on xprof ("xprof_gender");
+create index "xprof_marital" on xprof ("xprof_marital");
+create index "xprof_sexual" on xprof ("xprof_sexual");
+create index "xprof_locale" on xprof ("xprof_locale");
+create index "xprof_region" on xprof ("xprof_region");
+create index "xprof_postcode" on xprof ("xprof_postcode");
+create index "xprof_country" on xprof ("xprof_country");
+create index "xprof_age" on xprof ("xprof_age");
+create index "xprof_hometown" on xprof ("xprof_hometown");
+CREATE TABLE "xtag" (
+ "xtag_id" serial NOT NULL,
+ "xtag_hash" text NOT NULL,
+ "xtag_term" text NOT NULL DEFAULT '',
+ "xtag_flags" bigint NOT NULL DEFAULT '0',
+ PRIMARY KEY ("xtag_id")
+);
+create index "xtag_term" on xtag ("xtag_term");
+create index "xtag_hash" on xtag ("xtag_hash");
+create index "xtag_flags" on xtag ("xtag_flags");
diff --git a/install/update.php b/install/update.php
index 5bc5c9aa3..d6953cdbc 100644
--- a/install/update.php
+++ b/install/update.php
@@ -1,6 +1,6 @@
<?php
-define( 'UPDATE_VERSION' , 1118 );
+define( 'UPDATE_VERSION' , 1131 );
/**
*
@@ -1314,3 +1314,173 @@ DROP INDEX `channel_a_bookmark` , ADD INDEX `channel_w_like` ( `channel_w_like`
}
+function update_r1118() {
+ $r = q("ALTER TABLE `account` ADD `account_password_changed` DATETIME NOT NULL DEFAULT '0000-00-00 00:00:00',
+ADD INDEX ( `account_password_changed` )");
+ if($r)
+ return UPDATE_SUCCESS;
+ return UPDATE_FAILED;
+}
+
+
+function update_r1119() {
+ $r1 = q("CREATE TABLE IF NOT EXISTS `profdef` (
+ `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
+ `field_name` char(255) NOT NULL DEFAULT '',
+ `field_type` char(16) NOT NULL DEFAULT '',
+ `field_desc` char(255) NOT NULL DEFAULT '',
+ `field_help` char(255) NOT NULL DEFAULT '',
+ PRIMARY KEY (`id`),
+ KEY `field_name` (`field_name`)
+) ENGINE=MyISAM DEFAULT CHARSET=utf8");
+
+ $r2 = q("CREATE TABLE IF NOT EXISTS `profext` (
+ `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
+ `channel_id` int(10) unsigned NOT NULL DEFAULT '0',
+ `hash` char(255) NOT NULL DEFAULT '',
+ `k` char(255) NOT NULL DEFAULT '',
+ `v` mediumtext NOT NULL,
+ PRIMARY KEY (`id`),
+ KEY `channel_id` (`channel_id`),
+ KEY `hash` (`hash`),
+ KEY `k` (`k`)
+) ENGINE=MyISAM DEFAULT CHARSET=utf8");
+
+ if($r1 && $r2)
+ return UPDATE_SUCCESS;
+ return UPDATE_FAILED;
+}
+
+function update_r1120() {
+ $r = q("ALTER TABLE `item` ADD `public_policy` CHAR( 255 ) NOT NULL DEFAULT '' AFTER `coord` ,
+ADD INDEX ( `public_policy` )");
+ if($r)
+ return UPDATE_SUCCESS;
+ return UPDATE_FAILED;
+}
+
+
+function update_r1121() {
+ $r = q("ALTER TABLE `site` ADD `site_realm` CHAR( 255 ) NOT NULL DEFAULT '',
+ADD INDEX ( `site_realm` )");
+ if($r)
+ return UPDATE_SUCCESS;
+ return UPDATE_FAILED;
+}
+
+
+function update_r1122() {
+ $r = q("update site set site_realm = '%s' where true",
+ dbesc(DIRECTORY_REALM)
+ );
+ if($r)
+ return UPDATE_SUCCESS;
+ return UPDATE_FAILED;
+}
+
+function update_r1123() {
+ $r1 = q("ALTER TABLE `hubloc` ADD `hubloc_network` CHAR( 32 ) NOT NULL DEFAULT '' AFTER `hubloc_addr` ,
+ADD INDEX ( `hubloc_network` )");
+ $r2 = q("update hubloc set hubloc_network = 'zot' where true");
+
+ if($r1 && $r2)
+ return UPDATE_SUCCESS;
+ return UPDATE_FAILED;
+}
+
+function update_r1124() {
+ $r1 = q("CREATE TABLE IF NOT EXISTS `sign` (
+ `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
+ `iid` int(10) unsigned NOT NULL DEFAULT '0',
+ `retract_iid` int(10) unsigned NOT NULL DEFAULT '0',
+ `signed_text` mediumtext NOT NULL,
+ `signature` text NOT NULL,
+ `signer` char(255) NOT NULL,
+ PRIMARY KEY (`id`),
+ KEY `iid` (`iid`),
+ KEY `retract_iid` (`retract_iid`)
+) ENGINE=MyISAM DEFAULT CHARSET=utf8 ");
+
+ $r2 = q("CREATE TABLE IF NOT EXISTS `conv` (
+ `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
+ `guid` char(255) NOT NULL,
+ `recips` mediumtext NOT NULL,
+ `uid` int(11) NOT NULL,
+ `creator` char(255) NOT NULL,
+ `created` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
+ `updated` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
+ `subject` mediumtext NOT NULL,
+ PRIMARY KEY (`id`),
+ KEY `created` (`created`),
+ KEY `updated` (`updated`)
+) ENGINE=MyISAM DEFAULT CHARSET=utf8 ");
+
+ if($r1 && $r2)
+ return UPDATE_SUCCESS;
+ return UPDATE_FAILED;
+
+
+}
+
+function update_r1125() {
+ $r = q("ALTER TABLE `profdef` ADD `field_inputs` MEDIUMTEXT NOT NULL DEFAULT ''");
+ if($r)
+ return UPDATE_SUCCESS;
+ return UPDATE_FAILED;
+
+}
+
+
+function update_r1126() {
+ $r = q("ALTER TABLE `mail` ADD `convid` INT UNSIGNED NOT NULL DEFAULT '0' AFTER `id` ,
+ADD INDEX ( `convid` )");
+ if($r)
+ return UPDATE_SUCCESS;
+ return UPDATE_FAILED;
+
+}
+
+function update_r1127() {
+ $r = q("ALTER TABLE `item` ADD `comments_closed` DATETIME NOT NULL DEFAULT '0000-00-00 00:00:00' AFTER `changed` ,
+ADD INDEX ( `comments_closed` ), ADD INDEX ( `changed` ) ");
+ if($r)
+ return UPDATE_SUCCESS;
+ return UPDATE_FAILED;
+
+}
+
+function update_r1128() {
+ $r = q("ALTER TABLE `item` ADD `diaspora_meta` MEDIUMTEXT NOT NULL DEFAULT '' AFTER `sig` ");
+ if($r)
+ return UPDATE_SUCCESS;
+ return UPDATE_FAILED;
+
+}
+
+function update_r1129() {
+ $r = q("update hubloc set hubloc_network = 'zot' where hubloc_network = ''");
+ if($r)
+ return UPDATE_SUCCESS;
+ return UPDATE_FAILED;
+}
+
+function update_r1130() {
+ $myperms = PERMS_R_STREAM|PERMS_R_PROFILE|PERMS_R_PHOTOS|PERMS_R_ABOOK
+ |PERMS_W_STREAM|PERMS_W_WALL|PERMS_W_COMMENT|PERMS_W_MAIL|PERMS_W_CHAT
+ |PERMS_R_STORAGE|PERMS_R_PAGES|PERMS_W_LIKE;
+
+ $r = q("select abook_channel, abook_my_perms from abook where (abook_flags & %d) and abook_my_perms != 0",
+ intval(ABOOK_FLAG_SELF)
+ );
+ if($r) {
+ foreach($r as $rr) {
+ set_pconfig($rr['abook_channel'],'system','autoperms',$rr['abook_my_perms']);
+ }
+ }
+ $r = q("update abook set abook_my_perms = %d where (abook_flags & %d) and abook_my_perms = 0",
+ intval($myperms),
+ intval(ABOOK_FLAG_SELF)
+ );
+
+ return UPDATE_SUCCESS;
+} \ No newline at end of file
diff --git a/library/HTMLPurifier.autoload.php b/library/HTMLPurifier.autoload.php
index 8d4017640..c3ea67e81 100644
--- a/library/HTMLPurifier.autoload.php
+++ b/library/HTMLPurifier.autoload.php
@@ -3,6 +3,7 @@
/**
* @file
* Convenience file that registers autoload handler for HTML Purifier.
+ * It also does some sanity checks.
*/
if (function_exists('spl_autoload_register') && function_exists('spl_autoload_unregister')) {
@@ -13,9 +14,14 @@ if (function_exists('spl_autoload_register') && function_exists('spl_autoload_un
spl_autoload_register('__autoload');
}
} elseif (!function_exists('__autoload')) {
- function __autoload($class) {
+ function __autoload($class)
+ {
return HTMLPurifier_Bootstrap::autoload($class);
}
}
+if (ini_get('zend.ze1_compatibility_mode')) {
+ trigger_error("HTML Purifier is not compatible with zend.ze1_compatibility_mode; please turn it off", E_USER_ERROR);
+}
+
// vim: et sw=4 sts=4
diff --git a/library/HTMLPurifier.composer.php b/library/HTMLPurifier.composer.php
new file mode 100644
index 000000000..6706f4e39
--- /dev/null
+++ b/library/HTMLPurifier.composer.php
@@ -0,0 +1,4 @@
+<?php
+if (!defined('HTMLPURIFIER_PREFIX')) {
+ define('HTMLPURIFIER_PREFIX', __DIR__);
+}
diff --git a/library/HTMLPurifier.func.php b/library/HTMLPurifier.func.php
index 56a55b2fe..64b140bec 100644
--- a/library/HTMLPurifier.func.php
+++ b/library/HTMLPurifier.func.php
@@ -8,11 +8,13 @@
/**
* Purify HTML.
- * @param $html String HTML to purify
- * @param $config Configuration to use, can be any value accepted by
+ * @param string $html String HTML to purify
+ * @param mixed $config Configuration to use, can be any value accepted by
* HTMLPurifier_Config::create()
+ * @return string
*/
-function HTMLPurifier($html, $config = null) {
+function HTMLPurifier($html, $config = null)
+{
static $purifier = false;
if (!$purifier) {
$purifier = new HTMLPurifier();
diff --git a/library/HTMLPurifier.includes.php b/library/HTMLPurifier.includes.php
index 2ed0f0c17..9b7b88a87 100644
--- a/library/HTMLPurifier.includes.php
+++ b/library/HTMLPurifier.includes.php
@@ -7,7 +7,7 @@
* primary concern and you are using an opcode cache. PLEASE DO NOT EDIT THIS
* FILE, changes will be overwritten the next time the script is run.
*
- * @version 4.1.1
+ * @version 4.6.0
*
* @warning
* You must *not* include any other HTML Purifier files before this file,
@@ -19,6 +19,7 @@
*/
require 'HTMLPurifier.php';
+require 'HTMLPurifier/Arborize.php';
require 'HTMLPurifier/AttrCollections.php';
require 'HTMLPurifier/AttrDef.php';
require 'HTMLPurifier/AttrTransform.php';
@@ -54,9 +55,11 @@ require 'HTMLPurifier/Language.php';
require 'HTMLPurifier/LanguageFactory.php';
require 'HTMLPurifier/Length.php';
require 'HTMLPurifier/Lexer.php';
+require 'HTMLPurifier/Node.php';
require 'HTMLPurifier/PercentEncoder.php';
require 'HTMLPurifier/PropertyList.php';
require 'HTMLPurifier/PropertyListIterator.php';
+require 'HTMLPurifier/Queue.php';
require 'HTMLPurifier/Strategy.php';
require 'HTMLPurifier/StringHash.php';
require 'HTMLPurifier/StringHashParser.php';
@@ -72,7 +75,9 @@ require 'HTMLPurifier/URISchemeRegistry.php';
require 'HTMLPurifier/UnitConverter.php';
require 'HTMLPurifier/VarParser.php';
require 'HTMLPurifier/VarParserException.php';
+require 'HTMLPurifier/Zipper.php';
require 'HTMLPurifier/AttrDef/CSS.php';
+require 'HTMLPurifier/AttrDef/Clone.php';
require 'HTMLPurifier/AttrDef/Enum.php';
require 'HTMLPurifier/AttrDef/Integer.php';
require 'HTMLPurifier/AttrDef/Lang.php';
@@ -90,6 +95,7 @@ require 'HTMLPurifier/AttrDef/CSS/DenyElementDecorator.php';
require 'HTMLPurifier/AttrDef/CSS/Filter.php';
require 'HTMLPurifier/AttrDef/CSS/Font.php';
require 'HTMLPurifier/AttrDef/CSS/FontFamily.php';
+require 'HTMLPurifier/AttrDef/CSS/Ident.php';
require 'HTMLPurifier/AttrDef/CSS/ImportantDecorator.php';
require 'HTMLPurifier/AttrDef/CSS/Length.php';
require 'HTMLPurifier/AttrDef/CSS/ListStyle.php';
@@ -125,14 +131,17 @@ require 'HTMLPurifier/AttrTransform/Lang.php';
require 'HTMLPurifier/AttrTransform/Length.php';
require 'HTMLPurifier/AttrTransform/Name.php';
require 'HTMLPurifier/AttrTransform/NameSync.php';
+require 'HTMLPurifier/AttrTransform/Nofollow.php';
require 'HTMLPurifier/AttrTransform/SafeEmbed.php';
require 'HTMLPurifier/AttrTransform/SafeObject.php';
require 'HTMLPurifier/AttrTransform/SafeParam.php';
require 'HTMLPurifier/AttrTransform/ScriptRequired.php';
+require 'HTMLPurifier/AttrTransform/TargetBlank.php';
require 'HTMLPurifier/AttrTransform/Textarea.php';
require 'HTMLPurifier/ChildDef/Chameleon.php';
require 'HTMLPurifier/ChildDef/Custom.php';
require 'HTMLPurifier/ChildDef/Empty.php';
+require 'HTMLPurifier/ChildDef/List.php';
require 'HTMLPurifier/ChildDef/Required.php';
require 'HTMLPurifier/ChildDef/Optional.php';
require 'HTMLPurifier/ChildDef/StrictBlockquote.php';
@@ -147,10 +156,12 @@ require 'HTMLPurifier/HTMLModule/CommonAttributes.php';
require 'HTMLPurifier/HTMLModule/Edit.php';
require 'HTMLPurifier/HTMLModule/Forms.php';
require 'HTMLPurifier/HTMLModule/Hypertext.php';
+require 'HTMLPurifier/HTMLModule/Iframe.php';
require 'HTMLPurifier/HTMLModule/Image.php';
require 'HTMLPurifier/HTMLModule/Legacy.php';
require 'HTMLPurifier/HTMLModule/List.php';
require 'HTMLPurifier/HTMLModule/Name.php';
+require 'HTMLPurifier/HTMLModule/Nofollow.php';
require 'HTMLPurifier/HTMLModule/NonXMLCommonAttributes.php';
require 'HTMLPurifier/HTMLModule/Object.php';
require 'HTMLPurifier/HTMLModule/Presentation.php';
@@ -158,10 +169,12 @@ require 'HTMLPurifier/HTMLModule/Proprietary.php';
require 'HTMLPurifier/HTMLModule/Ruby.php';
require 'HTMLPurifier/HTMLModule/SafeEmbed.php';
require 'HTMLPurifier/HTMLModule/SafeObject.php';
+require 'HTMLPurifier/HTMLModule/SafeScripting.php';
require 'HTMLPurifier/HTMLModule/Scripting.php';
require 'HTMLPurifier/HTMLModule/StyleAttribute.php';
require 'HTMLPurifier/HTMLModule/Tables.php';
require 'HTMLPurifier/HTMLModule/Target.php';
+require 'HTMLPurifier/HTMLModule/TargetBlank.php';
require 'HTMLPurifier/HTMLModule/Text.php';
require 'HTMLPurifier/HTMLModule/Tidy.php';
require 'HTMLPurifier/HTMLModule/XMLCommonAttributes.php';
@@ -180,6 +193,9 @@ require 'HTMLPurifier/Injector/RemoveSpansWithoutAttributes.php';
require 'HTMLPurifier/Injector/SafeObject.php';
require 'HTMLPurifier/Lexer/DOMLex.php';
require 'HTMLPurifier/Lexer/DirectLex.php';
+require 'HTMLPurifier/Node/Comment.php';
+require 'HTMLPurifier/Node/Element.php';
+require 'HTMLPurifier/Node/Text.php';
require 'HTMLPurifier/Strategy/Composite.php';
require 'HTMLPurifier/Strategy/Core.php';
require 'HTMLPurifier/Strategy/FixNesting.php';
@@ -196,10 +212,13 @@ require 'HTMLPurifier/Token/Start.php';
require 'HTMLPurifier/Token/Text.php';
require 'HTMLPurifier/URIFilter/DisableExternal.php';
require 'HTMLPurifier/URIFilter/DisableExternalResources.php';
+require 'HTMLPurifier/URIFilter/DisableResources.php';
require 'HTMLPurifier/URIFilter/HostBlacklist.php';
require 'HTMLPurifier/URIFilter/MakeAbsolute.php';
require 'HTMLPurifier/URIFilter/Munge.php';
+require 'HTMLPurifier/URIFilter/SafeIframe.php';
require 'HTMLPurifier/URIScheme/data.php';
+require 'HTMLPurifier/URIScheme/file.php';
require 'HTMLPurifier/URIScheme/ftp.php';
require 'HTMLPurifier/URIScheme/http.php';
require 'HTMLPurifier/URIScheme/https.php';
diff --git a/library/HTMLPurifier.kses.php b/library/HTMLPurifier.kses.php
index 3143feb17..752290077 100644
--- a/library/HTMLPurifier.kses.php
+++ b/library/HTMLPurifier.kses.php
@@ -7,7 +7,8 @@
require_once dirname(__FILE__) . '/HTMLPurifier.auto.php';
-function kses($string, $allowed_html, $allowed_protocols = null) {
+function kses($string, $allowed_html, $allowed_protocols = null)
+{
$config = HTMLPurifier_Config::createDefault();
$allowed_elements = array();
$allowed_attributes = array();
@@ -19,7 +20,6 @@ function kses($string, $allowed_html, $allowed_protocols = null) {
}
$config->set('HTML.AllowedElements', $allowed_elements);
$config->set('HTML.AllowedAttributes', $allowed_attributes);
- $allowed_schemes = array();
if ($allowed_protocols !== null) {
$config->set('URI.AllowedSchemes', $allowed_protocols);
}
diff --git a/library/HTMLPurifier.php b/library/HTMLPurifier.php
index ba2c7b306..6f654fde5 100644
--- a/library/HTMLPurifier.php
+++ b/library/HTMLPurifier.php
@@ -19,7 +19,7 @@
*/
/*
- HTML Purifier 4.1.1 - Standards Compliant HTML Filtering
+ HTML Purifier 4.6.0 - Standards Compliant HTML Filtering
Copyright (C) 2006-2008 Edward Z. Yang
This library is free software; you can redistribute it and/or
@@ -54,66 +54,97 @@
class HTMLPurifier
{
- /** Version of HTML Purifier */
- public $version = '4.1.1';
+ /**
+ * Version of HTML Purifier.
+ * @type string
+ */
+ public $version = '4.6.0';
- /** Constant with version of HTML Purifier */
- const VERSION = '4.1.1';
+ /**
+ * Constant with version of HTML Purifier.
+ */
+ const VERSION = '4.6.0';
- /** Global configuration object */
+ /**
+ * Global configuration object.
+ * @type HTMLPurifier_Config
+ */
public $config;
- /** Array of extra HTMLPurifier_Filter objects to run on HTML, for backwards compatibility */
+ /**
+ * Array of extra filter objects to run on HTML,
+ * for backwards compatibility.
+ * @type HTMLPurifier_Filter[]
+ */
private $filters = array();
- /** Single instance of HTML Purifier */
+ /**
+ * Single instance of HTML Purifier.
+ * @type HTMLPurifier
+ */
private static $instance;
- protected $strategy, $generator;
+ /**
+ * @type HTMLPurifier_Strategy_Core
+ */
+ protected $strategy;
+
+ /**
+ * @type HTMLPurifier_Generator
+ */
+ protected $generator;
/**
- * Resultant HTMLPurifier_Context of last run purification. Is an array
- * of contexts if the last called method was purifyArray().
+ * Resultant context of last run purification.
+ * Is an array of contexts if the last called method was purifyArray().
+ * @type HTMLPurifier_Context
*/
public $context;
/**
* Initializes the purifier.
- * @param $config Optional HTMLPurifier_Config object for all instances of
- * the purifier, if omitted, a default configuration is
- * supplied (which can be overridden on a per-use basis).
+ *
+ * @param HTMLPurifier_Config $config Optional HTMLPurifier_Config object
+ * for all instances of the purifier, if omitted, a default
+ * configuration is supplied (which can be overridden on a
+ * per-use basis).
* The parameter can also be any type that
* HTMLPurifier_Config::create() supports.
*/
- public function __construct($config = null) {
-
+ public function __construct($config = null)
+ {
$this->config = HTMLPurifier_Config::create($config);
-
- $this->strategy = new HTMLPurifier_Strategy_Core();
-
+ $this->strategy = new HTMLPurifier_Strategy_Core();
}
/**
* Adds a filter to process the output. First come first serve
- * @param $filter HTMLPurifier_Filter object
+ *
+ * @param HTMLPurifier_Filter $filter HTMLPurifier_Filter object
*/
- public function addFilter($filter) {
- trigger_error('HTMLPurifier->addFilter() is deprecated, use configuration directives in the Filter namespace or Filter.Custom', E_USER_WARNING);
+ public function addFilter($filter)
+ {
+ trigger_error(
+ 'HTMLPurifier->addFilter() is deprecated, use configuration directives' .
+ ' in the Filter namespace or Filter.Custom',
+ E_USER_WARNING
+ );
$this->filters[] = $filter;
}
/**
* Filters an HTML snippet/document to be XSS-free and standards-compliant.
*
- * @param $html String of HTML to purify
- * @param $config HTMLPurifier_Config object for this operation, if omitted,
- * defaults to the config object specified during this
+ * @param string $html String of HTML to purify
+ * @param HTMLPurifier_Config $config Config object for this operation,
+ * if omitted, defaults to the config object specified during this
* object's construction. The parameter can also be any type
* that HTMLPurifier_Config::create() supports.
- * @return Purified HTML
+ *
+ * @return string Purified HTML
*/
- public function purify($html, $config = null) {
-
+ public function purify($html, $config = null)
+ {
// :TODO: make the config merge in, instead of replace
$config = $config ? HTMLPurifier_Config::create($config) : $this->config;
@@ -151,8 +182,12 @@ class HTMLPurifier
unset($filter_flags['Custom']);
$filters = array();
foreach ($filter_flags as $filter => $flag) {
- if (!$flag) continue;
- if (strpos($filter, '.') !== false) continue;
+ if (!$flag) {
+ continue;
+ }
+ if (strpos($filter, '.') !== false) {
+ continue;
+ }
$class = "HTMLPurifier_Filter_$filter";
$filters[] = new $class;
}
@@ -175,9 +210,12 @@ class HTMLPurifier
// list of un-purified tokens
$lexer->tokenizeHTML(
// un-purified HTML
- $html, $config, $context
+ $html,
+ $config,
+ $context
),
- $config, $context
+ $config,
+ $context
)
);
@@ -192,11 +230,15 @@ class HTMLPurifier
/**
* Filters an array of HTML snippets
- * @param $config Optional HTMLPurifier_Config object for this operation.
+ *
+ * @param string[] $array_of_html Array of html snippets
+ * @param HTMLPurifier_Config $config Optional config object for this operation.
* See HTMLPurifier::purify() for more details.
- * @return Array of purified HTML
+ *
+ * @return string[] Array of purified HTML
*/
- public function purifyArray($array_of_html, $config = null) {
+ public function purifyArray($array_of_html, $config = null)
+ {
$context_array = array();
foreach ($array_of_html as $key => $html) {
$array_of_html[$key] = $this->purify($html, $config);
@@ -208,11 +250,16 @@ class HTMLPurifier
/**
* Singleton for enforcing just one HTML Purifier in your system
- * @param $prototype Optional prototype HTMLPurifier instance to
- * overload singleton with, or HTMLPurifier_Config
- * instance to configure the generated version with.
+ *
+ * @param HTMLPurifier|HTMLPurifier_Config $prototype Optional prototype
+ * HTMLPurifier instance to overload singleton with,
+ * or HTMLPurifier_Config instance to configure the
+ * generated version with.
+ *
+ * @return HTMLPurifier
*/
- public static function instance($prototype = null) {
+ public static function instance($prototype = null)
+ {
if (!self::$instance || $prototype) {
if ($prototype instanceof HTMLPurifier) {
self::$instance = $prototype;
@@ -226,12 +273,20 @@ class HTMLPurifier
}
/**
+ * Singleton for enforcing just one HTML Purifier in your system
+ *
+ * @param HTMLPurifier|HTMLPurifier_Config $prototype Optional prototype
+ * HTMLPurifier instance to overload singleton with,
+ * or HTMLPurifier_Config instance to configure the
+ * generated version with.
+ *
+ * @return HTMLPurifier
* @note Backwards compatibility, see instance()
*/
- public static function getInstance($prototype = null) {
+ public static function getInstance($prototype = null)
+ {
return HTMLPurifier::instance($prototype);
}
-
}
// vim: et sw=4 sts=4
diff --git a/library/HTMLPurifier.safe-includes.php b/library/HTMLPurifier.safe-includes.php
index 6402de045..9dea6d1ed 100644
--- a/library/HTMLPurifier.safe-includes.php
+++ b/library/HTMLPurifier.safe-includes.php
@@ -13,6 +13,7 @@
$__dir = dirname(__FILE__);
require_once $__dir . '/HTMLPurifier.php';
+require_once $__dir . '/HTMLPurifier/Arborize.php';
require_once $__dir . '/HTMLPurifier/AttrCollections.php';
require_once $__dir . '/HTMLPurifier/AttrDef.php';
require_once $__dir . '/HTMLPurifier/AttrTransform.php';
@@ -48,9 +49,11 @@ require_once $__dir . '/HTMLPurifier/Language.php';
require_once $__dir . '/HTMLPurifier/LanguageFactory.php';
require_once $__dir . '/HTMLPurifier/Length.php';
require_once $__dir . '/HTMLPurifier/Lexer.php';
+require_once $__dir . '/HTMLPurifier/Node.php';
require_once $__dir . '/HTMLPurifier/PercentEncoder.php';
require_once $__dir . '/HTMLPurifier/PropertyList.php';
require_once $__dir . '/HTMLPurifier/PropertyListIterator.php';
+require_once $__dir . '/HTMLPurifier/Queue.php';
require_once $__dir . '/HTMLPurifier/Strategy.php';
require_once $__dir . '/HTMLPurifier/StringHash.php';
require_once $__dir . '/HTMLPurifier/StringHashParser.php';
@@ -66,7 +69,9 @@ require_once $__dir . '/HTMLPurifier/URISchemeRegistry.php';
require_once $__dir . '/HTMLPurifier/UnitConverter.php';
require_once $__dir . '/HTMLPurifier/VarParser.php';
require_once $__dir . '/HTMLPurifier/VarParserException.php';
+require_once $__dir . '/HTMLPurifier/Zipper.php';
require_once $__dir . '/HTMLPurifier/AttrDef/CSS.php';
+require_once $__dir . '/HTMLPurifier/AttrDef/Clone.php';
require_once $__dir . '/HTMLPurifier/AttrDef/Enum.php';
require_once $__dir . '/HTMLPurifier/AttrDef/Integer.php';
require_once $__dir . '/HTMLPurifier/AttrDef/Lang.php';
@@ -84,6 +89,7 @@ require_once $__dir . '/HTMLPurifier/AttrDef/CSS/DenyElementDecorator.php';
require_once $__dir . '/HTMLPurifier/AttrDef/CSS/Filter.php';
require_once $__dir . '/HTMLPurifier/AttrDef/CSS/Font.php';
require_once $__dir . '/HTMLPurifier/AttrDef/CSS/FontFamily.php';
+require_once $__dir . '/HTMLPurifier/AttrDef/CSS/Ident.php';
require_once $__dir . '/HTMLPurifier/AttrDef/CSS/ImportantDecorator.php';
require_once $__dir . '/HTMLPurifier/AttrDef/CSS/Length.php';
require_once $__dir . '/HTMLPurifier/AttrDef/CSS/ListStyle.php';
@@ -119,14 +125,17 @@ require_once $__dir . '/HTMLPurifier/AttrTransform/Lang.php';
require_once $__dir . '/HTMLPurifier/AttrTransform/Length.php';
require_once $__dir . '/HTMLPurifier/AttrTransform/Name.php';
require_once $__dir . '/HTMLPurifier/AttrTransform/NameSync.php';
+require_once $__dir . '/HTMLPurifier/AttrTransform/Nofollow.php';
require_once $__dir . '/HTMLPurifier/AttrTransform/SafeEmbed.php';
require_once $__dir . '/HTMLPurifier/AttrTransform/SafeObject.php';
require_once $__dir . '/HTMLPurifier/AttrTransform/SafeParam.php';
require_once $__dir . '/HTMLPurifier/AttrTransform/ScriptRequired.php';
+require_once $__dir . '/HTMLPurifier/AttrTransform/TargetBlank.php';
require_once $__dir . '/HTMLPurifier/AttrTransform/Textarea.php';
require_once $__dir . '/HTMLPurifier/ChildDef/Chameleon.php';
require_once $__dir . '/HTMLPurifier/ChildDef/Custom.php';
require_once $__dir . '/HTMLPurifier/ChildDef/Empty.php';
+require_once $__dir . '/HTMLPurifier/ChildDef/List.php';
require_once $__dir . '/HTMLPurifier/ChildDef/Required.php';
require_once $__dir . '/HTMLPurifier/ChildDef/Optional.php';
require_once $__dir . '/HTMLPurifier/ChildDef/StrictBlockquote.php';
@@ -141,10 +150,12 @@ require_once $__dir . '/HTMLPurifier/HTMLModule/CommonAttributes.php';
require_once $__dir . '/HTMLPurifier/HTMLModule/Edit.php';
require_once $__dir . '/HTMLPurifier/HTMLModule/Forms.php';
require_once $__dir . '/HTMLPurifier/HTMLModule/Hypertext.php';
+require_once $__dir . '/HTMLPurifier/HTMLModule/Iframe.php';
require_once $__dir . '/HTMLPurifier/HTMLModule/Image.php';
require_once $__dir . '/HTMLPurifier/HTMLModule/Legacy.php';
require_once $__dir . '/HTMLPurifier/HTMLModule/List.php';
require_once $__dir . '/HTMLPurifier/HTMLModule/Name.php';
+require_once $__dir . '/HTMLPurifier/HTMLModule/Nofollow.php';
require_once $__dir . '/HTMLPurifier/HTMLModule/NonXMLCommonAttributes.php';
require_once $__dir . '/HTMLPurifier/HTMLModule/Object.php';
require_once $__dir . '/HTMLPurifier/HTMLModule/Presentation.php';
@@ -152,10 +163,12 @@ require_once $__dir . '/HTMLPurifier/HTMLModule/Proprietary.php';
require_once $__dir . '/HTMLPurifier/HTMLModule/Ruby.php';
require_once $__dir . '/HTMLPurifier/HTMLModule/SafeEmbed.php';
require_once $__dir . '/HTMLPurifier/HTMLModule/SafeObject.php';
+require_once $__dir . '/HTMLPurifier/HTMLModule/SafeScripting.php';
require_once $__dir . '/HTMLPurifier/HTMLModule/Scripting.php';
require_once $__dir . '/HTMLPurifier/HTMLModule/StyleAttribute.php';
require_once $__dir . '/HTMLPurifier/HTMLModule/Tables.php';
require_once $__dir . '/HTMLPurifier/HTMLModule/Target.php';
+require_once $__dir . '/HTMLPurifier/HTMLModule/TargetBlank.php';
require_once $__dir . '/HTMLPurifier/HTMLModule/Text.php';
require_once $__dir . '/HTMLPurifier/HTMLModule/Tidy.php';
require_once $__dir . '/HTMLPurifier/HTMLModule/XMLCommonAttributes.php';
@@ -174,6 +187,9 @@ require_once $__dir . '/HTMLPurifier/Injector/RemoveSpansWithoutAttributes.php';
require_once $__dir . '/HTMLPurifier/Injector/SafeObject.php';
require_once $__dir . '/HTMLPurifier/Lexer/DOMLex.php';
require_once $__dir . '/HTMLPurifier/Lexer/DirectLex.php';
+require_once $__dir . '/HTMLPurifier/Node/Comment.php';
+require_once $__dir . '/HTMLPurifier/Node/Element.php';
+require_once $__dir . '/HTMLPurifier/Node/Text.php';
require_once $__dir . '/HTMLPurifier/Strategy/Composite.php';
require_once $__dir . '/HTMLPurifier/Strategy/Core.php';
require_once $__dir . '/HTMLPurifier/Strategy/FixNesting.php';
@@ -190,10 +206,13 @@ require_once $__dir . '/HTMLPurifier/Token/Start.php';
require_once $__dir . '/HTMLPurifier/Token/Text.php';
require_once $__dir . '/HTMLPurifier/URIFilter/DisableExternal.php';
require_once $__dir . '/HTMLPurifier/URIFilter/DisableExternalResources.php';
+require_once $__dir . '/HTMLPurifier/URIFilter/DisableResources.php';
require_once $__dir . '/HTMLPurifier/URIFilter/HostBlacklist.php';
require_once $__dir . '/HTMLPurifier/URIFilter/MakeAbsolute.php';
require_once $__dir . '/HTMLPurifier/URIFilter/Munge.php';
+require_once $__dir . '/HTMLPurifier/URIFilter/SafeIframe.php';
require_once $__dir . '/HTMLPurifier/URIScheme/data.php';
+require_once $__dir . '/HTMLPurifier/URIScheme/file.php';
require_once $__dir . '/HTMLPurifier/URIScheme/ftp.php';
require_once $__dir . '/HTMLPurifier/URIScheme/http.php';
require_once $__dir . '/HTMLPurifier/URIScheme/https.php';
diff --git a/library/HTMLPurifier/Arborize.php b/library/HTMLPurifier/Arborize.php
new file mode 100644
index 000000000..9e6617be5
--- /dev/null
+++ b/library/HTMLPurifier/Arborize.php
@@ -0,0 +1,71 @@
+<?php
+
+/**
+ * Converts a stream of HTMLPurifier_Token into an HTMLPurifier_Node,
+ * and back again.
+ *
+ * @note This transformation is not an equivalence. We mutate the input
+ * token stream to make it so; see all [MUT] markers in code.
+ */
+class HTMLPurifier_Arborize
+{
+ public static function arborize($tokens, $config, $context) {
+ $definition = $config->getHTMLDefinition();
+ $parent = new HTMLPurifier_Token_Start($definition->info_parent);
+ $stack = array($parent->toNode());
+ foreach ($tokens as $token) {
+ $token->skip = null; // [MUT]
+ $token->carryover = null; // [MUT]
+ if ($token instanceof HTMLPurifier_Token_End) {
+ $token->start = null; // [MUT]
+ $r = array_pop($stack);
+ assert($r->name === $token->name);
+ assert(empty($token->attr));
+ $r->endCol = $token->col;
+ $r->endLine = $token->line;
+ $r->endArmor = $token->armor;
+ continue;
+ }
+ $node = $token->toNode();
+ $stack[count($stack)-1]->children[] = $node;
+ if ($token instanceof HTMLPurifier_Token_Start) {
+ $stack[] = $node;
+ }
+ }
+ assert(count($stack) == 1);
+ return $stack[0];
+ }
+
+ public static function flatten($node, $config, $context) {
+ $level = 0;
+ $nodes = array($level => new HTMLPurifier_Queue(array($node)));
+ $closingTokens = array();
+ $tokens = array();
+ do {
+ while (!$nodes[$level]->isEmpty()) {
+ $node = $nodes[$level]->shift(); // FIFO
+ list($start, $end) = $node->toTokenPair();
+ if ($level > 0) {
+ $tokens[] = $start;
+ }
+ if ($end !== NULL) {
+ $closingTokens[$level][] = $end;
+ }
+ if ($node instanceof HTMLPurifier_Node_Element) {
+ $level++;
+ $nodes[$level] = new HTMLPurifier_Queue();
+ foreach ($node->children as $childNode) {
+ $nodes[$level]->push($childNode);
+ }
+ }
+ }
+ $level--;
+ if ($level && isset($closingTokens[$level])) {
+ while ($token = array_pop($closingTokens[$level])) {
+ $tokens[] = $token;
+ }
+ }
+ } while ($level > 0);
+ return $tokens;
+ }
+}
diff --git a/library/HTMLPurifier/AttrCollections.php b/library/HTMLPurifier/AttrCollections.php
index 555b86d04..4f6c2e39a 100644
--- a/library/HTMLPurifier/AttrCollections.php
+++ b/library/HTMLPurifier/AttrCollections.php
@@ -8,7 +8,8 @@ class HTMLPurifier_AttrCollections
{
/**
- * Associative array of attribute collections, indexed by name
+ * Associative array of attribute collections, indexed by name.
+ * @type array
*/
public $info = array();
@@ -16,10 +17,11 @@ class HTMLPurifier_AttrCollections
* Performs all expansions on internal data for use by other inclusions
* It also collects all attribute collection extensions from
* modules
- * @param $attr_types HTMLPurifier_AttrTypes instance
- * @param $modules Hash array of HTMLPurifier_HTMLModule members
+ * @param HTMLPurifier_AttrTypes $attr_types HTMLPurifier_AttrTypes instance
+ * @param HTMLPurifier_HTMLModule[] $modules Hash array of HTMLPurifier_HTMLModule members
*/
- public function __construct($attr_types, $modules) {
+ public function __construct($attr_types, $modules)
+ {
// load extensions from the modules
foreach ($modules as $module) {
foreach ($module->attr_collections as $coll_i => $coll) {
@@ -30,7 +32,9 @@ class HTMLPurifier_AttrCollections
if ($attr_i === 0 && isset($this->info[$coll_i][$attr_i])) {
// merge in includes
$this->info[$coll_i][$attr_i] = array_merge(
- $this->info[$coll_i][$attr_i], $attr);
+ $this->info[$coll_i][$attr_i],
+ $attr
+ );
continue;
}
$this->info[$coll_i][$attr_i] = $attr;
@@ -49,20 +53,29 @@ class HTMLPurifier_AttrCollections
/**
* Takes a reference to an attribute associative array and performs
* all inclusions specified by the zero index.
- * @param &$attr Reference to attribute array
+ * @param array &$attr Reference to attribute array
*/
- public function performInclusions(&$attr) {
- if (!isset($attr[0])) return;
+ public function performInclusions(&$attr)
+ {
+ if (!isset($attr[0])) {
+ return;
+ }
$merge = $attr[0];
$seen = array(); // recursion guard
// loop through all the inclusions
for ($i = 0; isset($merge[$i]); $i++) {
- if (isset($seen[$merge[$i]])) continue;
+ if (isset($seen[$merge[$i]])) {
+ continue;
+ }
$seen[$merge[$i]] = true;
// foreach attribute of the inclusion, copy it over
- if (!isset($this->info[$merge[$i]])) continue;
+ if (!isset($this->info[$merge[$i]])) {
+ continue;
+ }
foreach ($this->info[$merge[$i]] as $key => $value) {
- if (isset($attr[$key])) continue; // also catches more inclusions
+ if (isset($attr[$key])) {
+ continue;
+ } // also catches more inclusions
$attr[$key] = $value;
}
if (isset($this->info[$merge[$i]][0])) {
@@ -76,20 +89,24 @@ class HTMLPurifier_AttrCollections
/**
* Expands all string identifiers in an attribute array by replacing
* them with the appropriate values inside HTMLPurifier_AttrTypes
- * @param &$attr Reference to attribute array
- * @param $attr_types HTMLPurifier_AttrTypes instance
+ * @param array &$attr Reference to attribute array
+ * @param HTMLPurifier_AttrTypes $attr_types HTMLPurifier_AttrTypes instance
*/
- public function expandIdentifiers(&$attr, $attr_types) {
-
+ public function expandIdentifiers(&$attr, $attr_types)
+ {
// because foreach will process new elements we add, make sure we
// skip duplicates
$processed = array();
foreach ($attr as $def_i => $def) {
// skip inclusions
- if ($def_i === 0) continue;
+ if ($def_i === 0) {
+ continue;
+ }
- if (isset($processed[$def_i])) continue;
+ if (isset($processed[$def_i])) {
+ continue;
+ }
// determine whether or not attribute is required
if ($required = (strpos($def_i, '*') !== false)) {
@@ -120,9 +137,7 @@ class HTMLPurifier_AttrCollections
unset($attr[$def_i]);
}
}
-
}
-
}
// vim: et sw=4 sts=4
diff --git a/library/HTMLPurifier/AttrDef.php b/library/HTMLPurifier/AttrDef.php
index b2e4f36c5..5ac06522b 100644
--- a/library/HTMLPurifier/AttrDef.php
+++ b/library/HTMLPurifier/AttrDef.php
@@ -14,23 +14,25 @@ abstract class HTMLPurifier_AttrDef
{
/**
- * Tells us whether or not an HTML attribute is minimized. Has no
- * meaning in other contexts.
+ * Tells us whether or not an HTML attribute is minimized.
+ * Has no meaning in other contexts.
+ * @type bool
*/
public $minimized = false;
/**
- * Tells us whether or not an HTML attribute is required. Has no
- * meaning in other contexts
+ * Tells us whether or not an HTML attribute is required.
+ * Has no meaning in other contexts
+ * @type bool
*/
public $required = false;
/**
* Validates and cleans passed string according to a definition.
*
- * @param $string String to be validated and cleaned.
- * @param $config Mandatory HTMLPurifier_Config object.
- * @param $context Mandatory HTMLPurifier_AttrContext object.
+ * @param string $string String to be validated and cleaned.
+ * @param HTMLPurifier_Config $config Mandatory HTMLPurifier_Config object.
+ * @param HTMLPurifier_Context $context Mandatory HTMLPurifier_Context object.
*/
abstract public function validate($string, $config, $context);
@@ -55,7 +57,8 @@ abstract class HTMLPurifier_AttrDef
* parsing XML, thus, this behavior may still be correct. We
* assume that newlines have been normalized.
*/
- public function parseCDATA($string) {
+ public function parseCDATA($string)
+ {
$string = trim($string);
$string = str_replace(array("\n", "\t", "\r"), ' ', $string);
return $string;
@@ -63,10 +66,11 @@ abstract class HTMLPurifier_AttrDef
/**
* Factory method for creating this class from a string.
- * @param $string String construction info
- * @return Created AttrDef object corresponding to $string
+ * @param string $string String construction info
+ * @return HTMLPurifier_AttrDef Created AttrDef object corresponding to $string
*/
- public function make($string) {
+ public function make($string)
+ {
// default implementation, return a flyweight of this object.
// If $string has an effect on the returned object (i.e. you
// need to overload this method), it is best
@@ -77,16 +81,20 @@ abstract class HTMLPurifier_AttrDef
/**
* Removes spaces from rgb(0, 0, 0) so that shorthand CSS properties work
* properly. THIS IS A HACK!
+ * @param string $string a CSS colour definition
+ * @return string
*/
- protected function mungeRgb($string) {
+ protected function mungeRgb($string)
+ {
return preg_replace('/rgb\((\d+)\s*,\s*(\d+)\s*,\s*(\d+)\)/', 'rgb(\1,\2,\3)', $string);
}
/**
- * Parses a possibly escaped CSS string and returns the "pure"
+ * Parses a possibly escaped CSS string and returns the "pure"
* version of it.
*/
- protected function expandCSSEscape($string) {
+ protected function expandCSSEscape($string)
+ {
// flexibly parse it
$ret = '';
for ($i = 0, $c = strlen($string); $i < $c; $i++) {
@@ -99,25 +107,32 @@ abstract class HTMLPurifier_AttrDef
if (ctype_xdigit($string[$i])) {
$code = $string[$i];
for ($a = 1, $i++; $i < $c && $a < 6; $i++, $a++) {
- if (!ctype_xdigit($string[$i])) break;
+ if (!ctype_xdigit($string[$i])) {
+ break;
+ }
$code .= $string[$i];
}
// We have to be extremely careful when adding
// new characters, to make sure we're not breaking
// the encoding.
$char = HTMLPurifier_Encoder::unichr(hexdec($code));
- if (HTMLPurifier_Encoder::cleanUTF8($char) === '') continue;
+ if (HTMLPurifier_Encoder::cleanUTF8($char) === '') {
+ continue;
+ }
$ret .= $char;
- if ($i < $c && trim($string[$i]) !== '') $i--;
+ if ($i < $c && trim($string[$i]) !== '') {
+ $i--;
+ }
+ continue;
+ }
+ if ($string[$i] === "\n") {
continue;
}
- if ($string[$i] === "\n") continue;
}
$ret .= $string[$i];
}
return $ret;
}
-
}
// vim: et sw=4 sts=4
diff --git a/library/HTMLPurifier/AttrDef/CSS.php b/library/HTMLPurifier/AttrDef/CSS.php
index 953e70675..02c1641fb 100644
--- a/library/HTMLPurifier/AttrDef/CSS.php
+++ b/library/HTMLPurifier/AttrDef/CSS.php
@@ -14,8 +14,14 @@
class HTMLPurifier_AttrDef_CSS extends HTMLPurifier_AttrDef
{
- public function validate($css, $config, $context) {
-
+ /**
+ * @param string $css
+ * @param HTMLPurifier_Config $config
+ * @param HTMLPurifier_Context $context
+ * @return bool|string
+ */
+ public function validate($css, $config, $context)
+ {
$css = $this->parseCDATA($css);
$definition = $config->getCSSDefinition();
@@ -36,34 +42,47 @@ class HTMLPurifier_AttrDef_CSS extends HTMLPurifier_AttrDef
$context->register('CurrentCSSProperty', $property);
foreach ($declarations as $declaration) {
- if (!$declaration) continue;
- if (!strpos($declaration, ':')) continue;
+ if (!$declaration) {
+ continue;
+ }
+ if (!strpos($declaration, ':')) {
+ continue;
+ }
list($property, $value) = explode(':', $declaration, 2);
$property = trim($property);
- $value = trim($value);
+ $value = trim($value);
$ok = false;
do {
if (isset($definition->info[$property])) {
$ok = true;
break;
}
- if (ctype_lower($property)) break;
+ if (ctype_lower($property)) {
+ break;
+ }
$property = strtolower($property);
if (isset($definition->info[$property])) {
$ok = true;
break;
}
- } while(0);
- if (!$ok) continue;
+ } while (0);
+ if (!$ok) {
+ continue;
+ }
// inefficient call, since the validator will do this again
if (strtolower(trim($value)) !== 'inherit') {
// inherit works for everything (but only on the base property)
$result = $definition->info[$property]->validate(
- $value, $config, $context );
+ $value,
+ $config,
+ $context
+ );
} else {
$result = 'inherit';
}
- if ($result === false) continue;
+ if ($result === false) {
+ continue;
+ }
$propvalues[$property] = $result;
}
diff --git a/library/HTMLPurifier/AttrDef/CSS/AlphaValue.php b/library/HTMLPurifier/AttrDef/CSS/AlphaValue.php
index 292c040d4..af2b83dff 100644
--- a/library/HTMLPurifier/AttrDef/CSS/AlphaValue.php
+++ b/library/HTMLPurifier/AttrDef/CSS/AlphaValue.php
@@ -3,19 +3,32 @@
class HTMLPurifier_AttrDef_CSS_AlphaValue extends HTMLPurifier_AttrDef_CSS_Number
{
- public function __construct() {
+ public function __construct()
+ {
parent::__construct(false); // opacity is non-negative, but we will clamp it
}
- public function validate($number, $config, $context) {
+ /**
+ * @param string $number
+ * @param HTMLPurifier_Config $config
+ * @param HTMLPurifier_Context $context
+ * @return string
+ */
+ public function validate($number, $config, $context)
+ {
$result = parent::validate($number, $config, $context);
- if ($result === false) return $result;
- $float = (float) $result;
- if ($float < 0.0) $result = '0';
- if ($float > 1.0) $result = '1';
+ if ($result === false) {
+ return $result;
+ }
+ $float = (float)$result;
+ if ($float < 0.0) {
+ $result = '0';
+ }
+ if ($float > 1.0) {
+ $result = '1';
+ }
return $result;
}
-
}
// vim: et sw=4 sts=4
diff --git a/library/HTMLPurifier/AttrDef/CSS/Background.php b/library/HTMLPurifier/AttrDef/CSS/Background.php
index 3a3d20cd6..7f1ea3b0f 100644
--- a/library/HTMLPurifier/AttrDef/CSS/Background.php
+++ b/library/HTMLPurifier/AttrDef/CSS/Background.php
@@ -9,11 +9,16 @@ class HTMLPurifier_AttrDef_CSS_Background extends HTMLPurifier_AttrDef
/**
* Local copy of component validators.
+ * @type HTMLPurifier_AttrDef[]
* @note See HTMLPurifier_AttrDef_Font::$info for a similar impl.
*/
protected $info;
- public function __construct($config) {
+ /**
+ * @param HTMLPurifier_Config $config
+ */
+ public function __construct($config)
+ {
$def = $config->getCSSDefinition();
$this->info['background-color'] = $def->info['background-color'];
$this->info['background-image'] = $def->info['background-image'];
@@ -22,40 +27,55 @@ class HTMLPurifier_AttrDef_CSS_Background extends HTMLPurifier_AttrDef
$this->info['background-position'] = $def->info['background-position'];
}
- public function validate($string, $config, $context) {
-
+ /**
+ * @param string $string
+ * @param HTMLPurifier_Config $config
+ * @param HTMLPurifier_Context $context
+ * @return bool|string
+ */
+ public function validate($string, $config, $context)
+ {
// regular pre-processing
$string = $this->parseCDATA($string);
- if ($string === '') return false;
+ if ($string === '') {
+ return false;
+ }
// munge rgb() decl if necessary
$string = $this->mungeRgb($string);
// assumes URI doesn't have spaces in it
- $bits = explode(' ', strtolower($string)); // bits to process
+ $bits = explode(' ', $string); // bits to process
$caught = array();
- $caught['color'] = false;
- $caught['image'] = false;
- $caught['repeat'] = false;
+ $caught['color'] = false;
+ $caught['image'] = false;
+ $caught['repeat'] = false;
$caught['attachment'] = false;
$caught['position'] = false;
$i = 0; // number of catches
- $none = false;
foreach ($bits as $bit) {
- if ($bit === '') continue;
+ if ($bit === '') {
+ continue;
+ }
foreach ($caught as $key => $status) {
if ($key != 'position') {
- if ($status !== false) continue;
+ if ($status !== false) {
+ continue;
+ }
$r = $this->info['background-' . $key]->validate($bit, $config, $context);
} else {
$r = $bit;
}
- if ($r === false) continue;
+ if ($r === false) {
+ continue;
+ }
if ($key == 'position') {
- if ($caught[$key] === false) $caught[$key] = '';
+ if ($caught[$key] === false) {
+ $caught[$key] = '';
+ }
$caught[$key] .= $r . ' ';
} else {
$caught[$key] = $r;
@@ -65,7 +85,9 @@ class HTMLPurifier_AttrDef_CSS_Background extends HTMLPurifier_AttrDef
}
}
- if (!$i) return false;
+ if (!$i) {
+ return false;
+ }
if ($caught['position'] !== false) {
$caught['position'] = $this->info['background-position']->
validate($caught['position'], $config, $context);
@@ -73,15 +95,17 @@ class HTMLPurifier_AttrDef_CSS_Background extends HTMLPurifier_AttrDef
$ret = array();
foreach ($caught as $value) {
- if ($value === false) continue;
+ if ($value === false) {
+ continue;
+ }
$ret[] = $value;
}
- if (empty($ret)) return false;
+ if (empty($ret)) {
+ return false;
+ }
return implode(' ', $ret);
-
}
-
}
// vim: et sw=4 sts=4
diff --git a/library/HTMLPurifier/AttrDef/CSS/BackgroundPosition.php b/library/HTMLPurifier/AttrDef/CSS/BackgroundPosition.php
index fae82eaec..4580ef5a9 100644
--- a/library/HTMLPurifier/AttrDef/CSS/BackgroundPosition.php
+++ b/library/HTMLPurifier/AttrDef/CSS/BackgroundPosition.php
@@ -44,15 +44,30 @@
class HTMLPurifier_AttrDef_CSS_BackgroundPosition extends HTMLPurifier_AttrDef
{
+ /**
+ * @type HTMLPurifier_AttrDef_CSS_Length
+ */
protected $length;
+
+ /**
+ * @type HTMLPurifier_AttrDef_CSS_Percentage
+ */
protected $percentage;
- public function __construct() {
- $this->length = new HTMLPurifier_AttrDef_CSS_Length();
+ public function __construct()
+ {
+ $this->length = new HTMLPurifier_AttrDef_CSS_Length();
$this->percentage = new HTMLPurifier_AttrDef_CSS_Percentage();
}
- public function validate($string, $config, $context) {
+ /**
+ * @param string $string
+ * @param HTMLPurifier_Config $config
+ * @param HTMLPurifier_Context $context
+ * @return bool|string
+ */
+ public function validate($string, $config, $context)
+ {
$string = $this->parseCDATA($string);
$bits = explode(' ', $string);
@@ -74,7 +89,9 @@ class HTMLPurifier_AttrDef_CSS_BackgroundPosition extends HTMLPurifier_AttrDef
);
foreach ($bits as $bit) {
- if ($bit === '') continue;
+ if ($bit === '') {
+ continue;
+ }
// test for keyword
$lbit = ctype_lower($bit) ? $bit : strtolower($bit);
@@ -104,30 +121,37 @@ class HTMLPurifier_AttrDef_CSS_BackgroundPosition extends HTMLPurifier_AttrDef
$measures[] = $r;
$i++;
}
-
}
- if (!$i) return false; // no valid values were caught
+ if (!$i) {
+ return false;
+ } // no valid values were caught
$ret = array();
// first keyword
- if ($keywords['h']) $ret[] = $keywords['h'];
- elseif ($keywords['ch']) {
+ if ($keywords['h']) {
+ $ret[] = $keywords['h'];
+ } elseif ($keywords['ch']) {
$ret[] = $keywords['ch'];
$keywords['cv'] = false; // prevent re-use: center = center center
+ } elseif (count($measures)) {
+ $ret[] = array_shift($measures);
}
- elseif (count($measures)) $ret[] = array_shift($measures);
- if ($keywords['v']) $ret[] = $keywords['v'];
- elseif ($keywords['cv']) $ret[] = $keywords['cv'];
- elseif (count($measures)) $ret[] = array_shift($measures);
+ if ($keywords['v']) {
+ $ret[] = $keywords['v'];
+ } elseif ($keywords['cv']) {
+ $ret[] = $keywords['cv'];
+ } elseif (count($measures)) {
+ $ret[] = array_shift($measures);
+ }
- if (empty($ret)) return false;
+ if (empty($ret)) {
+ return false;
+ }
return implode(' ', $ret);
-
}
-
}
// vim: et sw=4 sts=4
diff --git a/library/HTMLPurifier/AttrDef/CSS/Border.php b/library/HTMLPurifier/AttrDef/CSS/Border.php
index 42a1d1b4a..16243ba1e 100644
--- a/library/HTMLPurifier/AttrDef/CSS/Border.php
+++ b/library/HTMLPurifier/AttrDef/CSS/Border.php
@@ -8,17 +8,29 @@ class HTMLPurifier_AttrDef_CSS_Border extends HTMLPurifier_AttrDef
/**
* Local copy of properties this property is shorthand for.
+ * @type HTMLPurifier_AttrDef[]
*/
protected $info = array();
- public function __construct($config) {
+ /**
+ * @param HTMLPurifier_Config $config
+ */
+ public function __construct($config)
+ {
$def = $config->getCSSDefinition();
$this->info['border-width'] = $def->info['border-width'];
$this->info['border-style'] = $def->info['border-style'];
$this->info['border-top-color'] = $def->info['border-top-color'];
}
- public function validate($string, $config, $context) {
+ /**
+ * @param string $string
+ * @param HTMLPurifier_Config $config
+ * @param HTMLPurifier_Context $context
+ * @return bool|string
+ */
+ public function validate($string, $config, $context)
+ {
$string = $this->parseCDATA($string);
$string = $this->mungeRgb($string);
$bits = explode(' ', $string);
@@ -26,7 +38,9 @@ class HTMLPurifier_AttrDef_CSS_Border extends HTMLPurifier_AttrDef
$ret = ''; // return value
foreach ($bits as $bit) {
foreach ($this->info as $propname => $validator) {
- if (isset($done[$propname])) continue;
+ if (isset($done[$propname])) {
+ continue;
+ }
$r = $validator->validate($bit, $config, $context);
if ($r !== false) {
$ret .= $r . ' ';
@@ -37,7 +51,6 @@ class HTMLPurifier_AttrDef_CSS_Border extends HTMLPurifier_AttrDef
}
return rtrim($ret);
}
-
}
// vim: et sw=4 sts=4
diff --git a/library/HTMLPurifier/AttrDef/CSS/Color.php b/library/HTMLPurifier/AttrDef/CSS/Color.php
index 07f95a671..16d2a6b98 100644
--- a/library/HTMLPurifier/AttrDef/CSS/Color.php
+++ b/library/HTMLPurifier/AttrDef/CSS/Color.php
@@ -6,29 +6,47 @@
class HTMLPurifier_AttrDef_CSS_Color extends HTMLPurifier_AttrDef
{
- public function validate($color, $config, $context) {
-
+ /**
+ * @param string $color
+ * @param HTMLPurifier_Config $config
+ * @param HTMLPurifier_Context $context
+ * @return bool|string
+ */
+ public function validate($color, $config, $context)
+ {
static $colors = null;
- if ($colors === null) $colors = $config->get('Core.ColorKeywords');
+ if ($colors === null) {
+ $colors = $config->get('Core.ColorKeywords');
+ }
$color = trim($color);
- if ($color === '') return false;
+ if ($color === '') {
+ return false;
+ }
$lower = strtolower($color);
- if (isset($colors[$lower])) return $colors[$lower];
+ if (isset($colors[$lower])) {
+ return $colors[$lower];
+ }
if (strpos($color, 'rgb(') !== false) {
// rgb literal handling
$length = strlen($color);
- if (strpos($color, ')') !== $length - 1) return false;
+ if (strpos($color, ')') !== $length - 1) {
+ return false;
+ }
$triad = substr($color, 4, $length - 4 - 1);
$parts = explode(',', $triad);
- if (count($parts) !== 3) return false;
+ if (count($parts) !== 3) {
+ return false;
+ }
$type = false; // to ensure that they're all the same type
$new_parts = array();
foreach ($parts as $part) {
$part = trim($part);
- if ($part === '') return false;
+ if ($part === '') {
+ return false;
+ }
$length = strlen($part);
if ($part[$length - 1] === '%') {
// handle percents
@@ -37,9 +55,13 @@ class HTMLPurifier_AttrDef_CSS_Color extends HTMLPurifier_AttrDef
} elseif ($type !== 'percentage') {
return false;
}
- $num = (float) substr($part, 0, $length - 1);
- if ($num < 0) $num = 0;
- if ($num > 100) $num = 100;
+ $num = (float)substr($part, 0, $length - 1);
+ if ($num < 0) {
+ $num = 0;
+ }
+ if ($num > 100) {
+ $num = 100;
+ }
$new_parts[] = "$num%";
} else {
// handle integers
@@ -48,10 +70,14 @@ class HTMLPurifier_AttrDef_CSS_Color extends HTMLPurifier_AttrDef
} elseif ($type !== 'integer') {
return false;
}
- $num = (int) $part;
- if ($num < 0) $num = 0;
- if ($num > 255) $num = 255;
- $new_parts[] = (string) $num;
+ $num = (int)$part;
+ if ($num < 0) {
+ $num = 0;
+ }
+ if ($num > 255) {
+ $num = 255;
+ }
+ $new_parts[] = (string)$num;
}
}
$new_triad = implode(',', $new_parts);
@@ -65,14 +91,15 @@ class HTMLPurifier_AttrDef_CSS_Color extends HTMLPurifier_AttrDef
$color = '#' . $color;
}
$length = strlen($hex);
- if ($length !== 3 && $length !== 6) return false;
- if (!ctype_xdigit($hex)) return false;
+ if ($length !== 3 && $length !== 6) {
+ return false;
+ }
+ if (!ctype_xdigit($hex)) {
+ return false;
+ }
}
-
return $color;
-
}
-
}
// vim: et sw=4 sts=4
diff --git a/library/HTMLPurifier/AttrDef/CSS/Composite.php b/library/HTMLPurifier/AttrDef/CSS/Composite.php
index de1289cba..9c1750554 100644
--- a/library/HTMLPurifier/AttrDef/CSS/Composite.php
+++ b/library/HTMLPurifier/AttrDef/CSS/Composite.php
@@ -13,26 +13,36 @@ class HTMLPurifier_AttrDef_CSS_Composite extends HTMLPurifier_AttrDef
{
/**
- * List of HTMLPurifier_AttrDef objects that may process strings
+ * List of objects that may process strings.
+ * @type HTMLPurifier_AttrDef[]
* @todo Make protected
*/
public $defs;
/**
- * @param $defs List of HTMLPurifier_AttrDef objects
+ * @param HTMLPurifier_AttrDef[] $defs List of HTMLPurifier_AttrDef objects
*/
- public function __construct($defs) {
+ public function __construct($defs)
+ {
$this->defs = $defs;
}
- public function validate($string, $config, $context) {
+ /**
+ * @param string $string
+ * @param HTMLPurifier_Config $config
+ * @param HTMLPurifier_Context $context
+ * @return bool|string
+ */
+ public function validate($string, $config, $context)
+ {
foreach ($this->defs as $i => $def) {
$result = $this->defs[$i]->validate($string, $config, $context);
- if ($result !== false) return $result;
+ if ($result !== false) {
+ return $result;
+ }
}
return false;
}
-
}
// vim: et sw=4 sts=4
diff --git a/library/HTMLPurifier/AttrDef/CSS/DenyElementDecorator.php b/library/HTMLPurifier/AttrDef/CSS/DenyElementDecorator.php
index 6599c5b2d..9d77cc9aa 100644
--- a/library/HTMLPurifier/AttrDef/CSS/DenyElementDecorator.php
+++ b/library/HTMLPurifier/AttrDef/CSS/DenyElementDecorator.php
@@ -5,22 +5,38 @@
*/
class HTMLPurifier_AttrDef_CSS_DenyElementDecorator extends HTMLPurifier_AttrDef
{
- public $def, $element;
+ /**
+ * @type HTMLPurifier_AttrDef
+ */
+ public $def;
+ /**
+ * @type string
+ */
+ public $element;
/**
- * @param $def Definition to wrap
- * @param $element Element to deny
+ * @param HTMLPurifier_AttrDef $def Definition to wrap
+ * @param string $element Element to deny
*/
- public function __construct($def, $element) {
+ public function __construct($def, $element)
+ {
$this->def = $def;
$this->element = $element;
}
+
/**
* Checks if CurrentToken is set and equal to $this->element
+ * @param string $string
+ * @param HTMLPurifier_Config $config
+ * @param HTMLPurifier_Context $context
+ * @return bool|string
*/
- public function validate($string, $config, $context) {
+ public function validate($string, $config, $context)
+ {
$token = $context->get('CurrentToken', true);
- if ($token && $token->name == $this->element) return false;
+ if ($token && $token->name == $this->element) {
+ return false;
+ }
return $this->def->validate($string, $config, $context);
}
}
diff --git a/library/HTMLPurifier/AttrDef/CSS/Filter.php b/library/HTMLPurifier/AttrDef/CSS/Filter.php
index 147894b86..bde4c3301 100644
--- a/library/HTMLPurifier/AttrDef/CSS/Filter.php
+++ b/library/HTMLPurifier/AttrDef/CSS/Filter.php
@@ -7,23 +7,37 @@
*/
class HTMLPurifier_AttrDef_CSS_Filter extends HTMLPurifier_AttrDef
{
-
+ /**
+ * @type HTMLPurifier_AttrDef_Integer
+ */
protected $intValidator;
- public function __construct() {
+ public function __construct()
+ {
$this->intValidator = new HTMLPurifier_AttrDef_Integer();
}
- public function validate($value, $config, $context) {
+ /**
+ * @param string $value
+ * @param HTMLPurifier_Config $config
+ * @param HTMLPurifier_Context $context
+ * @return bool|string
+ */
+ public function validate($value, $config, $context)
+ {
$value = $this->parseCDATA($value);
- if ($value === 'none') return $value;
+ if ($value === 'none') {
+ return $value;
+ }
// if we looped this we could support multiple filters
$function_length = strcspn($value, '(');
$function = trim(substr($value, 0, $function_length));
if ($function !== 'alpha' &&
$function !== 'Alpha' &&
$function !== 'progid:DXImageTransform.Microsoft.Alpha'
- ) return false;
+ ) {
+ return false;
+ }
$cursor = $function_length + 1;
$parameters_length = strcspn($value, ')', $cursor);
$parameters = substr($value, $cursor, $parameters_length);
@@ -32,15 +46,25 @@ class HTMLPurifier_AttrDef_CSS_Filter extends HTMLPurifier_AttrDef
$lookup = array();
foreach ($params as $param) {
list($key, $value) = explode('=', $param);
- $key = trim($key);
+ $key = trim($key);
$value = trim($value);
- if (isset($lookup[$key])) continue;
- if ($key !== 'opacity') continue;
+ if (isset($lookup[$key])) {
+ continue;
+ }
+ if ($key !== 'opacity') {
+ continue;
+ }
$value = $this->intValidator->validate($value, $config, $context);
- if ($value === false) continue;
- $int = (int) $value;
- if ($int > 100) $value = '100';
- if ($int < 0) $value = '0';
+ if ($value === false) {
+ continue;
+ }
+ $int = (int)$value;
+ if ($int > 100) {
+ $value = '100';
+ }
+ if ($int < 0) {
+ $value = '0';
+ }
$ret_params[] = "$key=$value";
$lookup[$key] = true;
}
@@ -48,7 +72,6 @@ class HTMLPurifier_AttrDef_CSS_Filter extends HTMLPurifier_AttrDef
$ret_function = "$function($ret_parameters)";
return $ret_function;
}
-
}
// vim: et sw=4 sts=4
diff --git a/library/HTMLPurifier/AttrDef/CSS/Font.php b/library/HTMLPurifier/AttrDef/CSS/Font.php
index 699ee0b70..579b97ef1 100644
--- a/library/HTMLPurifier/AttrDef/CSS/Font.php
+++ b/library/HTMLPurifier/AttrDef/CSS/Font.php
@@ -7,8 +7,8 @@ class HTMLPurifier_AttrDef_CSS_Font extends HTMLPurifier_AttrDef
{
/**
- * Local copy of component validators.
- *
+ * Local copy of validators
+ * @type HTMLPurifier_AttrDef[]
* @note If we moved specific CSS property definitions to their own
* classes instead of having them be assembled at run time by
* CSSDefinition, this wouldn't be necessary. We'd instantiate
@@ -16,18 +16,28 @@ class HTMLPurifier_AttrDef_CSS_Font extends HTMLPurifier_AttrDef
*/
protected $info = array();
- public function __construct($config) {
+ /**
+ * @param HTMLPurifier_Config $config
+ */
+ public function __construct($config)
+ {
$def = $config->getCSSDefinition();
- $this->info['font-style'] = $def->info['font-style'];
+ $this->info['font-style'] = $def->info['font-style'];
$this->info['font-variant'] = $def->info['font-variant'];
- $this->info['font-weight'] = $def->info['font-weight'];
- $this->info['font-size'] = $def->info['font-size'];
- $this->info['line-height'] = $def->info['line-height'];
- $this->info['font-family'] = $def->info['font-family'];
+ $this->info['font-weight'] = $def->info['font-weight'];
+ $this->info['font-size'] = $def->info['font-size'];
+ $this->info['line-height'] = $def->info['line-height'];
+ $this->info['font-family'] = $def->info['font-family'];
}
- public function validate($string, $config, $context) {
-
+ /**
+ * @param string $string
+ * @param HTMLPurifier_Config $config
+ * @param HTMLPurifier_Context $context
+ * @return bool|string
+ */
+ public function validate($string, $config, $context)
+ {
static $system_fonts = array(
'caption' => true,
'icon' => true,
@@ -39,7 +49,9 @@ class HTMLPurifier_AttrDef_CSS_Font extends HTMLPurifier_AttrDef
// regular pre-processing
$string = $this->parseCDATA($string);
- if ($string === '') return false;
+ if ($string === '') {
+ return false;
+ }
// check if it's one of the keywords
$lowercase_string = strtolower($string);
@@ -54,15 +66,20 @@ class HTMLPurifier_AttrDef_CSS_Font extends HTMLPurifier_AttrDef
$final = ''; // output
for ($i = 0, $size = count($bits); $i < $size; $i++) {
- if ($bits[$i] === '') continue;
+ if ($bits[$i] === '') {
+ continue;
+ }
switch ($stage) {
-
- // attempting to catch font-style, font-variant or font-weight
- case 0:
+ case 0: // attempting to catch font-style, font-variant or font-weight
foreach ($stage_1 as $validator_name) {
- if (isset($caught[$validator_name])) continue;
+ if (isset($caught[$validator_name])) {
+ continue;
+ }
$r = $this->info[$validator_name]->validate(
- $bits[$i], $config, $context);
+ $bits[$i],
+ $config,
+ $context
+ );
if ($r !== false) {
$final .= $r . ' ';
$caught[$validator_name] = true;
@@ -70,15 +87,17 @@ class HTMLPurifier_AttrDef_CSS_Font extends HTMLPurifier_AttrDef
}
}
// all three caught, continue on
- if (count($caught) >= 3) $stage = 1;
- if ($r !== false) break;
-
- // attempting to catch font-size and perhaps line-height
- case 1:
+ if (count($caught) >= 3) {
+ $stage = 1;
+ }
+ if ($r !== false) {
+ break;
+ }
+ case 1: // attempting to catch font-size and perhaps line-height
$found_slash = false;
if (strpos($bits[$i], '/') !== false) {
list($font_size, $line_height) =
- explode('/', $bits[$i]);
+ explode('/', $bits[$i]);
if ($line_height === '') {
// ooh, there's a space after the slash!
$line_height = false;
@@ -89,14 +108,19 @@ class HTMLPurifier_AttrDef_CSS_Font extends HTMLPurifier_AttrDef
$line_height = false;
}
$r = $this->info['font-size']->validate(
- $font_size, $config, $context);
+ $font_size,
+ $config,
+ $context
+ );
if ($r !== false) {
$final .= $r;
// attempt to catch line-height
if ($line_height === false) {
// we need to scroll forward
for ($j = $i + 1; $j < $size; $j++) {
- if ($bits[$j] === '') continue;
+ if ($bits[$j] === '') {
+ continue;
+ }
if ($bits[$j] === '/') {
if ($found_slash) {
return false;
@@ -116,7 +140,10 @@ class HTMLPurifier_AttrDef_CSS_Font extends HTMLPurifier_AttrDef
if ($found_slash) {
$i = $j;
$r = $this->info['line-height']->validate(
- $line_height, $config, $context);
+ $line_height,
+ $config,
+ $context
+ );
if ($r !== false) {
$final .= '/' . $r;
}
@@ -126,13 +153,14 @@ class HTMLPurifier_AttrDef_CSS_Font extends HTMLPurifier_AttrDef
break;
}
return false;
-
- // attempting to catch font-family
- case 2:
+ case 2: // attempting to catch font-family
$font_family =
implode(' ', array_slice($bits, $i, $size - $i));
$r = $this->info['font-family']->validate(
- $font_family, $config, $context);
+ $font_family,
+ $config,
+ $context
+ );
if ($r !== false) {
$final .= $r . ' ';
// processing completed successfully
@@ -143,7 +171,6 @@ class HTMLPurifier_AttrDef_CSS_Font extends HTMLPurifier_AttrDef
}
return false;
}
-
}
// vim: et sw=4 sts=4
diff --git a/library/HTMLPurifier/AttrDef/CSS/FontFamily.php b/library/HTMLPurifier/AttrDef/CSS/FontFamily.php
index 42c2054c2..74e24c881 100644
--- a/library/HTMLPurifier/AttrDef/CSS/FontFamily.php
+++ b/library/HTMLPurifier/AttrDef/CSS/FontFamily.php
@@ -2,12 +2,58 @@
/**
* Validates a font family list according to CSS spec
- * @todo whitelisting allowed fonts would be nice
*/
class HTMLPurifier_AttrDef_CSS_FontFamily extends HTMLPurifier_AttrDef
{
- public function validate($string, $config, $context) {
+ protected $mask = null;
+
+ public function __construct()
+ {
+ $this->mask = '_- ';
+ for ($c = 'a'; $c <= 'z'; $c++) {
+ $this->mask .= $c;
+ }
+ for ($c = 'A'; $c <= 'Z'; $c++) {
+ $this->mask .= $c;
+ }
+ for ($c = '0'; $c <= '9'; $c++) {
+ $this->mask .= $c;
+ } // cast-y, but should be fine
+ // special bytes used by UTF-8
+ for ($i = 0x80; $i <= 0xFF; $i++) {
+ // We don't bother excluding invalid bytes in this range,
+ // because the our restriction of well-formed UTF-8 will
+ // prevent these from ever occurring.
+ $this->mask .= chr($i);
+ }
+
+ /*
+ PHP's internal strcspn implementation is
+ O(length of string * length of mask), making it inefficient
+ for large masks. However, it's still faster than
+ preg_match 8)
+ for (p = s1;;) {
+ spanp = s2;
+ do {
+ if (*spanp == c || p == s1_end) {
+ return p - s1;
+ }
+ } while (spanp++ < (s2_end - 1));
+ c = *++p;
+ }
+ */
+ // possible optimization: invert the mask.
+ }
+
+ /**
+ * @param string $string
+ * @param HTMLPurifier_Config $config
+ * @param HTMLPurifier_Context $context
+ * @return bool|string
+ */
+ public function validate($string, $config, $context)
+ {
static $generic_names = array(
'serif' => true,
'sans-serif' => true,
@@ -15,24 +61,33 @@ class HTMLPurifier_AttrDef_CSS_FontFamily extends HTMLPurifier_AttrDef
'fantasy' => true,
'cursive' => true
);
+ $allowed_fonts = $config->get('CSS.AllowedFonts');
// assume that no font names contain commas in them
$fonts = explode(',', $string);
$final = '';
- foreach($fonts as $font) {
+ foreach ($fonts as $font) {
$font = trim($font);
- if ($font === '') continue;
+ if ($font === '') {
+ continue;
+ }
// match a generic name
if (isset($generic_names[$font])) {
- $final .= $font . ', ';
+ if ($allowed_fonts === null || isset($allowed_fonts[$font])) {
+ $final .= $font . ', ';
+ }
continue;
}
// match a quoted name
if ($font[0] === '"' || $font[0] === "'") {
$length = strlen($font);
- if ($length <= 2) continue;
+ if ($length <= 2) {
+ continue;
+ }
$quote = $font[0];
- if ($font[$length - 1] !== $quote) continue;
+ if ($font[$length - 1] !== $quote) {
+ continue;
+ }
$font = substr($font, 1, $length - 2);
}
@@ -40,6 +95,10 @@ class HTMLPurifier_AttrDef_CSS_FontFamily extends HTMLPurifier_AttrDef
// $font is a pure representation of the font name
+ if ($allowed_fonts !== null && !isset($allowed_fonts[$font])) {
+ continue;
+ }
+
if (ctype_alnum($font) && $font !== '') {
// very simple font, allow it in unharmed
$final .= $font . ', ';
@@ -50,20 +109,108 @@ class HTMLPurifier_AttrDef_CSS_FontFamily extends HTMLPurifier_AttrDef
// shouldn't show up regardless
$font = str_replace(array("\n", "\t", "\r", "\x0C"), ' ', $font);
- // These ugly transforms don't pose a security
- // risk (as \\ and \" might). We could try to be clever and
- // use single-quote wrapping when there is a double quote
- // present, but I have choosen not to implement that.
- // (warning: this code relies on the selection of quotation
- // mark below)
- $font = str_replace('\\', '\\5C ', $font);
- $font = str_replace('"', '\\22 ', $font);
-
- // complicated font, requires quoting
- $final .= "\"$font\", "; // note that this will later get turned into &quot;
+ // Here, there are various classes of characters which need
+ // to be treated differently:
+ // - Alphanumeric characters are essentially safe. We
+ // handled these above.
+ // - Spaces require quoting, though most parsers will do
+ // the right thing if there aren't any characters that
+ // can be misinterpreted
+ // - Dashes rarely occur, but they fairly unproblematic
+ // for parsing/rendering purposes.
+ // The above characters cover the majority of Western font
+ // names.
+ // - Arbitrary Unicode characters not in ASCII. Because
+ // most parsers give little thought to Unicode, treatment
+ // of these codepoints is basically uniform, even for
+ // punctuation-like codepoints. These characters can
+ // show up in non-Western pages and are supported by most
+ // major browsers, for example: "ï¼­ï¼³ 明æœ" is a
+ // legitimate font-name
+ // <http://ja.wikipedia.org/wiki/MS_明æœ>. See
+ // the CSS3 spec for more examples:
+ // <http://www.w3.org/TR/2011/WD-css3-fonts-20110324/localizedfamilynames.png>
+ // You can see live samples of these on the Internet:
+ // <http://www.google.co.jp/search?q=font-family+ï¼­ï¼³+明æœ|ゴシック>
+ // However, most of these fonts have ASCII equivalents:
+ // for example, 'MS Mincho', and it's considered
+ // professional to use ASCII font names instead of
+ // Unicode font names. Thanks Takeshi Terada for
+ // providing this information.
+ // The following characters, to my knowledge, have not been
+ // used to name font names.
+ // - Single quote. While theoretically you might find a
+ // font name that has a single quote in its name (serving
+ // as an apostrophe, e.g. Dave's Scribble), I haven't
+ // been able to find any actual examples of this.
+ // Internet Explorer's cssText translation (which I
+ // believe is invoked by innerHTML) normalizes any
+ // quoting to single quotes, and fails to escape single
+ // quotes. (Note that this is not IE's behavior for all
+ // CSS properties, just some sort of special casing for
+ // font-family). So a single quote *cannot* be used
+ // safely in the font-family context if there will be an
+ // innerHTML/cssText translation. Note that Firefox 3.x
+ // does this too.
+ // - Double quote. In IE, these get normalized to
+ // single-quotes, no matter what the encoding. (Fun
+ // fact, in IE8, the 'content' CSS property gained
+ // support, where they special cased to preserve encoded
+ // double quotes, but still translate unadorned double
+ // quotes into single quotes.) So, because their
+ // fixpoint behavior is identical to single quotes, they
+ // cannot be allowed either. Firefox 3.x displays
+ // single-quote style behavior.
+ // - Backslashes are reduced by one (so \\ -> \) every
+ // iteration, so they cannot be used safely. This shows
+ // up in IE7, IE8 and FF3
+ // - Semicolons, commas and backticks are handled properly.
+ // - The rest of the ASCII punctuation is handled properly.
+ // We haven't checked what browsers do to unadorned
+ // versions, but this is not important as long as the
+ // browser doesn't /remove/ surrounding quotes (as IE does
+ // for HTML).
+ //
+ // With these results in hand, we conclude that there are
+ // various levels of safety:
+ // - Paranoid: alphanumeric, spaces and dashes(?)
+ // - International: Paranoid + non-ASCII Unicode
+ // - Edgy: Everything except quotes, backslashes
+ // - NoJS: Standards compliance, e.g. sod IE. Note that
+ // with some judicious character escaping (since certain
+ // types of escaping doesn't work) this is theoretically
+ // OK as long as innerHTML/cssText is not called.
+ // We believe that international is a reasonable default
+ // (that we will implement now), and once we do more
+ // extensive research, we may feel comfortable with dropping
+ // it down to edgy.
+
+ // Edgy: alphanumeric, spaces, dashes, underscores and Unicode. Use of
+ // str(c)spn assumes that the string was already well formed
+ // Unicode (which of course it is).
+ if (strspn($font, $this->mask) !== strlen($font)) {
+ continue;
+ }
+
+ // Historical:
+ // In the absence of innerHTML/cssText, these ugly
+ // transforms don't pose a security risk (as \\ and \"
+ // might--these escapes are not supported by most browsers).
+ // We could try to be clever and use single-quote wrapping
+ // when there is a double quote present, but I have choosen
+ // not to implement that. (NOTE: you can reduce the amount
+ // of escapes by one depending on what quoting style you use)
+ // $font = str_replace('\\', '\\5C ', $font);
+ // $font = str_replace('"', '\\22 ', $font);
+ // $font = str_replace("'", '\\27 ', $font);
+
+ // font possibly with spaces, requires quoting
+ $final .= "'$font', ";
}
$final = rtrim($final, ', ');
- if ($final === '') return false;
+ if ($final === '') {
+ return false;
+ }
return $final;
}
diff --git a/library/HTMLPurifier/AttrDef/CSS/Ident.php b/library/HTMLPurifier/AttrDef/CSS/Ident.php
new file mode 100644
index 000000000..973002c17
--- /dev/null
+++ b/library/HTMLPurifier/AttrDef/CSS/Ident.php
@@ -0,0 +1,32 @@
+<?php
+
+/**
+ * Validates based on {ident} CSS grammar production
+ */
+class HTMLPurifier_AttrDef_CSS_Ident extends HTMLPurifier_AttrDef
+{
+
+ /**
+ * @param string $string
+ * @param HTMLPurifier_Config $config
+ * @param HTMLPurifier_Context $context
+ * @return bool|string
+ */
+ public function validate($string, $config, $context)
+ {
+ $string = trim($string);
+
+ // early abort: '' and '0' (strings that convert to false) are invalid
+ if (!$string) {
+ return false;
+ }
+
+ $pattern = '/^(-?[A-Za-z_][A-Za-z_\-0-9]*)$/';
+ if (!preg_match($pattern, $string)) {
+ return false;
+ }
+ return $string;
+ }
+}
+
+// vim: et sw=4 sts=4
diff --git a/library/HTMLPurifier/AttrDef/CSS/ImportantDecorator.php b/library/HTMLPurifier/AttrDef/CSS/ImportantDecorator.php
index 4e6b35e5a..ffc989fe8 100644
--- a/library/HTMLPurifier/AttrDef/CSS/ImportantDecorator.php
+++ b/library/HTMLPurifier/AttrDef/CSS/ImportantDecorator.php
@@ -5,20 +5,34 @@
*/
class HTMLPurifier_AttrDef_CSS_ImportantDecorator extends HTMLPurifier_AttrDef
{
- public $def, $allow;
+ /**
+ * @type HTMLPurifier_AttrDef
+ */
+ public $def;
+ /**
+ * @type bool
+ */
+ public $allow;
/**
- * @param $def Definition to wrap
- * @param $allow Whether or not to allow !important
+ * @param HTMLPurifier_AttrDef $def Definition to wrap
+ * @param bool $allow Whether or not to allow !important
*/
- public function __construct($def, $allow = false) {
+ public function __construct($def, $allow = false)
+ {
$this->def = $def;
$this->allow = $allow;
}
+
/**
* Intercepts and removes !important if necessary
+ * @param string $string
+ * @param HTMLPurifier_Config $config
+ * @param HTMLPurifier_Context $context
+ * @return bool|string
*/
- public function validate($string, $config, $context) {
+ public function validate($string, $config, $context)
+ {
// test for ! and important tokens
$string = trim($string);
$is_important = false;
@@ -32,7 +46,9 @@ class HTMLPurifier_AttrDef_CSS_ImportantDecorator extends HTMLPurifier_AttrDef
}
}
$string = $this->def->validate($string, $config, $context);
- if ($this->allow && $is_important) $string .= ' !important';
+ if ($this->allow && $is_important) {
+ $string .= ' !important';
+ }
return $string;
}
}
diff --git a/library/HTMLPurifier/AttrDef/CSS/Length.php b/library/HTMLPurifier/AttrDef/CSS/Length.php
index a07ec5813..f12453a04 100644
--- a/library/HTMLPurifier/AttrDef/CSS/Length.php
+++ b/library/HTMLPurifier/AttrDef/CSS/Length.php
@@ -6,42 +6,72 @@
class HTMLPurifier_AttrDef_CSS_Length extends HTMLPurifier_AttrDef
{
- protected $min, $max;
+ /**
+ * @type HTMLPurifier_Length|string
+ */
+ protected $min;
/**
- * @param HTMLPurifier_Length $max Minimum length, or null for no bound. String is also acceptable.
- * @param HTMLPurifier_Length $max Maximum length, or null for no bound. String is also acceptable.
+ * @type HTMLPurifier_Length|string
*/
- public function __construct($min = null, $max = null) {
+ protected $max;
+
+ /**
+ * @param HTMLPurifier_Length|string $min Minimum length, or null for no bound. String is also acceptable.
+ * @param HTMLPurifier_Length|string $max Maximum length, or null for no bound. String is also acceptable.
+ */
+ public function __construct($min = null, $max = null)
+ {
$this->min = $min !== null ? HTMLPurifier_Length::make($min) : null;
$this->max = $max !== null ? HTMLPurifier_Length::make($max) : null;
}
- public function validate($string, $config, $context) {
+ /**
+ * @param string $string
+ * @param HTMLPurifier_Config $config
+ * @param HTMLPurifier_Context $context
+ * @return bool|string
+ */
+ public function validate($string, $config, $context)
+ {
$string = $this->parseCDATA($string);
// Optimizations
- if ($string === '') return false;
- if ($string === '0') return '0';
- if (strlen($string) === 1) return false;
+ if ($string === '') {
+ return false;
+ }
+ if ($string === '0') {
+ return '0';
+ }
+ if (strlen($string) === 1) {
+ return false;
+ }
$length = HTMLPurifier_Length::make($string);
- if (!$length->isValid()) return false;
+ if (!$length->isValid()) {
+ return false;
+ }
if ($this->min) {
$c = $length->compareTo($this->min);
- if ($c === false) return false;
- if ($c < 0) return false;
+ if ($c === false) {
+ return false;
+ }
+ if ($c < 0) {
+ return false;
+ }
}
if ($this->max) {
$c = $length->compareTo($this->max);
- if ($c === false) return false;
- if ($c > 0) return false;
+ if ($c === false) {
+ return false;
+ }
+ if ($c > 0) {
+ return false;
+ }
}
-
return $length->toString();
}
-
}
// vim: et sw=4 sts=4
diff --git a/library/HTMLPurifier/AttrDef/CSS/ListStyle.php b/library/HTMLPurifier/AttrDef/CSS/ListStyle.php
index 4406868c0..e74d42654 100644
--- a/library/HTMLPurifier/AttrDef/CSS/ListStyle.php
+++ b/library/HTMLPurifier/AttrDef/CSS/ListStyle.php
@@ -8,46 +8,72 @@ class HTMLPurifier_AttrDef_CSS_ListStyle extends HTMLPurifier_AttrDef
{
/**
- * Local copy of component validators.
+ * Local copy of validators.
+ * @type HTMLPurifier_AttrDef[]
* @note See HTMLPurifier_AttrDef_CSS_Font::$info for a similar impl.
*/
protected $info;
- public function __construct($config) {
+ /**
+ * @param HTMLPurifier_Config $config
+ */
+ public function __construct($config)
+ {
$def = $config->getCSSDefinition();
- $this->info['list-style-type'] = $def->info['list-style-type'];
+ $this->info['list-style-type'] = $def->info['list-style-type'];
$this->info['list-style-position'] = $def->info['list-style-position'];
$this->info['list-style-image'] = $def->info['list-style-image'];
}
- public function validate($string, $config, $context) {
-
+ /**
+ * @param string $string
+ * @param HTMLPurifier_Config $config
+ * @param HTMLPurifier_Context $context
+ * @return bool|string
+ */
+ public function validate($string, $config, $context)
+ {
// regular pre-processing
$string = $this->parseCDATA($string);
- if ($string === '') return false;
+ if ($string === '') {
+ return false;
+ }
// assumes URI doesn't have spaces in it
$bits = explode(' ', strtolower($string)); // bits to process
$caught = array();
- $caught['type'] = false;
+ $caught['type'] = false;
$caught['position'] = false;
- $caught['image'] = false;
+ $caught['image'] = false;
$i = 0; // number of catches
$none = false;
foreach ($bits as $bit) {
- if ($i >= 3) return; // optimization bit
- if ($bit === '') continue;
+ if ($i >= 3) {
+ return;
+ } // optimization bit
+ if ($bit === '') {
+ continue;
+ }
foreach ($caught as $key => $status) {
- if ($status !== false) continue;
+ if ($status !== false) {
+ continue;
+ }
$r = $this->info['list-style-' . $key]->validate($bit, $config, $context);
- if ($r === false) continue;
+ if ($r === false) {
+ continue;
+ }
if ($r === 'none') {
- if ($none) continue;
- else $none = true;
- if ($key == 'image') continue;
+ if ($none) {
+ continue;
+ } else {
+ $none = true;
+ }
+ if ($key == 'image') {
+ continue;
+ }
}
$caught[$key] = $r;
$i++;
@@ -55,24 +81,32 @@ class HTMLPurifier_AttrDef_CSS_ListStyle extends HTMLPurifier_AttrDef
}
}
- if (!$i) return false;
+ if (!$i) {
+ return false;
+ }
$ret = array();
// construct type
- if ($caught['type']) $ret[] = $caught['type'];
+ if ($caught['type']) {
+ $ret[] = $caught['type'];
+ }
// construct image
- if ($caught['image']) $ret[] = $caught['image'];
+ if ($caught['image']) {
+ $ret[] = $caught['image'];
+ }
// construct position
- if ($caught['position']) $ret[] = $caught['position'];
+ if ($caught['position']) {
+ $ret[] = $caught['position'];
+ }
- if (empty($ret)) return false;
+ if (empty($ret)) {
+ return false;
+ }
return implode(' ', $ret);
-
}
-
}
// vim: et sw=4 sts=4
diff --git a/library/HTMLPurifier/AttrDef/CSS/Multiple.php b/library/HTMLPurifier/AttrDef/CSS/Multiple.php
index 4d62a40d7..9f266cdd1 100644
--- a/library/HTMLPurifier/AttrDef/CSS/Multiple.php
+++ b/library/HTMLPurifier/AttrDef/CSS/Multiple.php
@@ -13,9 +13,9 @@
*/
class HTMLPurifier_AttrDef_CSS_Multiple extends HTMLPurifier_AttrDef
{
-
/**
* Instance of component definition to defer validation to.
+ * @type HTMLPurifier_AttrDef
* @todo Make protected
*/
public $single;
@@ -27,32 +27,45 @@ class HTMLPurifier_AttrDef_CSS_Multiple extends HTMLPurifier_AttrDef
public $max;
/**
- * @param $single HTMLPurifier_AttrDef to multiply
- * @param $max Max number of values allowed (usually four)
+ * @param HTMLPurifier_AttrDef $single HTMLPurifier_AttrDef to multiply
+ * @param int $max Max number of values allowed (usually four)
*/
- public function __construct($single, $max = 4) {
+ public function __construct($single, $max = 4)
+ {
$this->single = $single;
$this->max = $max;
}
- public function validate($string, $config, $context) {
+ /**
+ * @param string $string
+ * @param HTMLPurifier_Config $config
+ * @param HTMLPurifier_Context $context
+ * @return bool|string
+ */
+ public function validate($string, $config, $context)
+ {
$string = $this->parseCDATA($string);
- if ($string === '') return false;
+ if ($string === '') {
+ return false;
+ }
$parts = explode(' ', $string); // parseCDATA replaced \r, \t and \n
$length = count($parts);
$final = '';
for ($i = 0, $num = 0; $i < $length && $num < $this->max; $i++) {
- if (ctype_space($parts[$i])) continue;
+ if (ctype_space($parts[$i])) {
+ continue;
+ }
$result = $this->single->validate($parts[$i], $config, $context);
if ($result !== false) {
$final .= $result . ' ';
$num++;
}
}
- if ($final === '') return false;
+ if ($final === '') {
+ return false;
+ }
return rtrim($final);
}
-
}
// vim: et sw=4 sts=4
diff --git a/library/HTMLPurifier/AttrDef/CSS/Number.php b/library/HTMLPurifier/AttrDef/CSS/Number.php
index 3f99e12ec..8edc159e7 100644
--- a/library/HTMLPurifier/AttrDef/CSS/Number.php
+++ b/library/HTMLPurifier/AttrDef/CSS/Number.php
@@ -7,32 +7,44 @@ class HTMLPurifier_AttrDef_CSS_Number extends HTMLPurifier_AttrDef
{
/**
- * Bool indicating whether or not only positive values allowed.
+ * Indicates whether or not only positive values are allowed.
+ * @type bool
*/
protected $non_negative = false;
/**
- * @param $non_negative Bool indicating whether negatives are forbidden
+ * @param bool $non_negative indicates whether negatives are forbidden
*/
- public function __construct($non_negative = false) {
+ public function __construct($non_negative = false)
+ {
$this->non_negative = $non_negative;
}
/**
+ * @param string $number
+ * @param HTMLPurifier_Config $config
+ * @param HTMLPurifier_Context $context
+ * @return string|bool
* @warning Some contexts do not pass $config, $context. These
* variables should not be used without checking HTMLPurifier_Length
*/
- public function validate($number, $config, $context) {
-
+ public function validate($number, $config, $context)
+ {
$number = $this->parseCDATA($number);
- if ($number === '') return false;
- if ($number === '0') return '0';
+ if ($number === '') {
+ return false;
+ }
+ if ($number === '0') {
+ return '0';
+ }
$sign = '';
switch ($number[0]) {
case '-':
- if ($this->non_negative) return false;
+ if ($this->non_negative) {
+ return false;
+ }
$sign = '-';
case '+':
$number = substr($number, 1);
@@ -44,14 +56,20 @@ class HTMLPurifier_AttrDef_CSS_Number extends HTMLPurifier_AttrDef
}
// Period is the only non-numeric character allowed
- if (strpos($number, '.') === false) return false;
+ if (strpos($number, '.') === false) {
+ return false;
+ }
list($left, $right) = explode('.', $number, 2);
- if ($left === '' && $right === '') return false;
- if ($left !== '' && !ctype_digit($left)) return false;
+ if ($left === '' && $right === '') {
+ return false;
+ }
+ if ($left !== '' && !ctype_digit($left)) {
+ return false;
+ }
- $left = ltrim($left, '0');
+ $left = ltrim($left, '0');
$right = rtrim($right, '0');
if ($right === '') {
@@ -59,11 +77,8 @@ class HTMLPurifier_AttrDef_CSS_Number extends HTMLPurifier_AttrDef
} elseif (!ctype_digit($right)) {
return false;
}
-
return $sign . $left . '.' . $right;
-
}
-
}
// vim: et sw=4 sts=4
diff --git a/library/HTMLPurifier/AttrDef/CSS/Percentage.php b/library/HTMLPurifier/AttrDef/CSS/Percentage.php
index c34b8fc3c..f0f25c50a 100644
--- a/library/HTMLPurifier/AttrDef/CSS/Percentage.php
+++ b/library/HTMLPurifier/AttrDef/CSS/Percentage.php
@@ -7,34 +7,48 @@ class HTMLPurifier_AttrDef_CSS_Percentage extends HTMLPurifier_AttrDef
{
/**
- * Instance of HTMLPurifier_AttrDef_CSS_Number to defer number validation
+ * Instance to defer number validation to.
+ * @type HTMLPurifier_AttrDef_CSS_Number
*/
protected $number_def;
/**
- * @param Bool indicating whether to forbid negative values
+ * @param bool $non_negative Whether to forbid negative values
*/
- public function __construct($non_negative = false) {
+ public function __construct($non_negative = false)
+ {
$this->number_def = new HTMLPurifier_AttrDef_CSS_Number($non_negative);
}
- public function validate($string, $config, $context) {
-
+ /**
+ * @param string $string
+ * @param HTMLPurifier_Config $config
+ * @param HTMLPurifier_Context $context
+ * @return bool|string
+ */
+ public function validate($string, $config, $context)
+ {
$string = $this->parseCDATA($string);
- if ($string === '') return false;
+ if ($string === '') {
+ return false;
+ }
$length = strlen($string);
- if ($length === 1) return false;
- if ($string[$length - 1] !== '%') return false;
+ if ($length === 1) {
+ return false;
+ }
+ if ($string[$length - 1] !== '%') {
+ return false;
+ }
$number = substr($string, 0, $length - 1);
$number = $this->number_def->validate($number, $config, $context);
- if ($number === false) return false;
+ if ($number === false) {
+ return false;
+ }
return "$number%";
-
}
-
}
// vim: et sw=4 sts=4
diff --git a/library/HTMLPurifier/AttrDef/CSS/TextDecoration.php b/library/HTMLPurifier/AttrDef/CSS/TextDecoration.php
index 772c922d8..5fd4b7f7b 100644
--- a/library/HTMLPurifier/AttrDef/CSS/TextDecoration.php
+++ b/library/HTMLPurifier/AttrDef/CSS/TextDecoration.php
@@ -8,8 +8,14 @@
class HTMLPurifier_AttrDef_CSS_TextDecoration extends HTMLPurifier_AttrDef
{
- public function validate($string, $config, $context) {
-
+ /**
+ * @param string $string
+ * @param HTMLPurifier_Config $config
+ * @param HTMLPurifier_Context $context
+ * @return bool|string
+ */
+ public function validate($string, $config, $context)
+ {
static $allowed_values = array(
'line-through' => true,
'overline' => true,
@@ -18,7 +24,9 @@ class HTMLPurifier_AttrDef_CSS_TextDecoration extends HTMLPurifier_AttrDef
$string = strtolower($this->parseCDATA($string));
- if ($string === 'none') return $string;
+ if ($string === 'none') {
+ return $string;
+ }
$parts = explode(' ', $string);
$final = '';
@@ -28,11 +36,11 @@ class HTMLPurifier_AttrDef_CSS_TextDecoration extends HTMLPurifier_AttrDef
}
}
$final = rtrim($final);
- if ($final === '') return false;
+ if ($final === '') {
+ return false;
+ }
return $final;
-
}
-
}
// vim: et sw=4 sts=4
diff --git a/library/HTMLPurifier/AttrDef/CSS/URI.php b/library/HTMLPurifier/AttrDef/CSS/URI.php
index 1df17dc25..f9434230e 100644
--- a/library/HTMLPurifier/AttrDef/CSS/URI.php
+++ b/library/HTMLPurifier/AttrDef/CSS/URI.php
@@ -12,25 +12,39 @@
class HTMLPurifier_AttrDef_CSS_URI extends HTMLPurifier_AttrDef_URI
{
- public function __construct() {
+ public function __construct()
+ {
parent::__construct(true); // always embedded
}
- public function validate($uri_string, $config, $context) {
+ /**
+ * @param string $uri_string
+ * @param HTMLPurifier_Config $config
+ * @param HTMLPurifier_Context $context
+ * @return bool|string
+ */
+ public function validate($uri_string, $config, $context)
+ {
// parse the URI out of the string and then pass it onto
// the parent object
$uri_string = $this->parseCDATA($uri_string);
- if (strpos($uri_string, 'url(') !== 0) return false;
+ if (strpos($uri_string, 'url(') !== 0) {
+ return false;
+ }
$uri_string = substr($uri_string, 4);
$new_length = strlen($uri_string) - 1;
- if ($uri_string[$new_length] != ')') return false;
+ if ($uri_string[$new_length] != ')') {
+ return false;
+ }
$uri = trim(substr($uri_string, 0, $new_length));
if (!empty($uri) && ($uri[0] == "'" || $uri[0] == '"')) {
$quote = $uri[0];
$new_length = strlen($uri) - 1;
- if ($uri[$new_length] !== $quote) return false;
+ if ($uri[$new_length] !== $quote) {
+ return false;
+ }
$uri = substr($uri, 1, $new_length - 1);
}
@@ -38,15 +52,23 @@ class HTMLPurifier_AttrDef_CSS_URI extends HTMLPurifier_AttrDef_URI
$result = parent::validate($uri, $config, $context);
- if ($result === false) return false;
+ if ($result === false) {
+ return false;
+ }
// extra sanity check; should have been done by URI
$result = str_replace(array('"', "\\", "\n", "\x0c", "\r"), "", $result);
- return "url(\"$result\")";
+ // suspicious characters are ()'; we're going to percent encode
+ // them for safety.
+ $result = str_replace(array('(', ')', "'"), array('%28', '%29', '%27'), $result);
+ // there's an extra bug where ampersands lose their escaping on
+ // an innerHTML cycle, so a very unlucky query parameter could
+ // then change the meaning of the URL. Unfortunately, there's
+ // not much we can do about that...
+ return "url(\"$result\")";
}
-
}
// vim: et sw=4 sts=4
diff --git a/library/HTMLPurifier/AttrDef/Clone.php b/library/HTMLPurifier/AttrDef/Clone.php
new file mode 100644
index 000000000..6698a00c0
--- /dev/null
+++ b/library/HTMLPurifier/AttrDef/Clone.php
@@ -0,0 +1,44 @@
+<?php
+
+/**
+ * Dummy AttrDef that mimics another AttrDef, BUT it generates clones
+ * with make.
+ */
+class HTMLPurifier_AttrDef_Clone extends HTMLPurifier_AttrDef
+{
+ /**
+ * What we're cloning.
+ * @type HTMLPurifier_AttrDef
+ */
+ protected $clone;
+
+ /**
+ * @param HTMLPurifier_AttrDef $clone
+ */
+ public function __construct($clone)
+ {
+ $this->clone = $clone;
+ }
+
+ /**
+ * @param string $v
+ * @param HTMLPurifier_Config $config
+ * @param HTMLPurifier_Context $context
+ * @return bool|string
+ */
+ public function validate($v, $config, $context)
+ {
+ return $this->clone->validate($v, $config, $context);
+ }
+
+ /**
+ * @param string $string
+ * @return HTMLPurifier_AttrDef
+ */
+ public function make($string)
+ {
+ return clone $this->clone;
+ }
+}
+
+// vim: et sw=4 sts=4
diff --git a/library/HTMLPurifier/AttrDef/Enum.php b/library/HTMLPurifier/AttrDef/Enum.php
index 5d603ebcc..8abda7f6e 100644
--- a/library/HTMLPurifier/AttrDef/Enum.php
+++ b/library/HTMLPurifier/AttrDef/Enum.php
@@ -12,9 +12,10 @@ class HTMLPurifier_AttrDef_Enum extends HTMLPurifier_AttrDef
/**
* Lookup table of valid values.
+ * @type array
* @todo Make protected
*/
- public $valid_values = array();
+ public $valid_values = array();
/**
* Bool indicating whether or not enumeration is case sensitive.
@@ -23,17 +24,23 @@ class HTMLPurifier_AttrDef_Enum extends HTMLPurifier_AttrDef
protected $case_sensitive = false; // values according to W3C spec
/**
- * @param $valid_values List of valid values
- * @param $case_sensitive Bool indicating whether or not case sensitive
+ * @param array $valid_values List of valid values
+ * @param bool $case_sensitive Whether or not case sensitive
*/
- public function __construct(
- $valid_values = array(), $case_sensitive = false
- ) {
+ public function __construct($valid_values = array(), $case_sensitive = false)
+ {
$this->valid_values = array_flip($valid_values);
$this->case_sensitive = $case_sensitive;
}
- public function validate($string, $config, $context) {
+ /**
+ * @param string $string
+ * @param HTMLPurifier_Config $config
+ * @param HTMLPurifier_Context $context
+ * @return bool|string
+ */
+ public function validate($string, $config, $context)
+ {
$string = trim($string);
if (!$this->case_sensitive) {
// we may want to do full case-insensitive libraries
@@ -45,11 +52,13 @@ class HTMLPurifier_AttrDef_Enum extends HTMLPurifier_AttrDef
}
/**
- * @param $string In form of comma-delimited list of case-insensitive
+ * @param string $string In form of comma-delimited list of case-insensitive
* valid values. Example: "foo,bar,baz". Prepend "s:" to make
* case sensitive
+ * @return HTMLPurifier_AttrDef_Enum
*/
- public function make($string) {
+ public function make($string)
+ {
if (strlen($string) > 2 && $string[0] == 's' && $string[1] == ':') {
$string = substr($string, 2);
$sensitive = true;
@@ -59,7 +68,6 @@ class HTMLPurifier_AttrDef_Enum extends HTMLPurifier_AttrDef
$values = explode(',', $string);
return new HTMLPurifier_AttrDef_Enum($values, $sensitive);
}
-
}
// vim: et sw=4 sts=4
diff --git a/library/HTMLPurifier/AttrDef/HTML/Bool.php b/library/HTMLPurifier/AttrDef/HTML/Bool.php
index e06987eb8..036a240e1 100644
--- a/library/HTMLPurifier/AttrDef/HTML/Bool.php
+++ b/library/HTMLPurifier/AttrDef/HTML/Bool.php
@@ -6,23 +6,46 @@
class HTMLPurifier_AttrDef_HTML_Bool extends HTMLPurifier_AttrDef
{
+ /**
+ * @type bool
+ */
protected $name;
+
+ /**
+ * @type bool
+ */
public $minimized = true;
- public function __construct($name = false) {$this->name = $name;}
+ /**
+ * @param bool $name
+ */
+ public function __construct($name = false)
+ {
+ $this->name = $name;
+ }
- public function validate($string, $config, $context) {
- if (empty($string)) return false;
+ /**
+ * @param string $string
+ * @param HTMLPurifier_Config $config
+ * @param HTMLPurifier_Context $context
+ * @return bool|string
+ */
+ public function validate($string, $config, $context)
+ {
+ if (empty($string)) {
+ return false;
+ }
return $this->name;
}
/**
- * @param $string Name of attribute
+ * @param string $string Name of attribute
+ * @return HTMLPurifier_AttrDef_HTML_Bool
*/
- public function make($string) {
+ public function make($string)
+ {
return new HTMLPurifier_AttrDef_HTML_Bool($string);
}
-
}
// vim: et sw=4 sts=4
diff --git a/library/HTMLPurifier/AttrDef/HTML/Class.php b/library/HTMLPurifier/AttrDef/HTML/Class.php
index 370068d97..d5013488f 100644
--- a/library/HTMLPurifier/AttrDef/HTML/Class.php
+++ b/library/HTMLPurifier/AttrDef/HTML/Class.php
@@ -5,7 +5,14 @@
*/
class HTMLPurifier_AttrDef_HTML_Class extends HTMLPurifier_AttrDef_HTML_Nmtokens
{
- protected function split($string, $config, $context) {
+ /**
+ * @param string $string
+ * @param HTMLPurifier_Config $config
+ * @param HTMLPurifier_Context $context
+ * @return bool|string
+ */
+ protected function split($string, $config, $context)
+ {
// really, this twiddle should be lazy loaded
$name = $config->getDefinition('HTML')->doctype->name;
if ($name == "XHTML 1.1" || $name == "XHTML 2.0") {
@@ -14,13 +21,20 @@ class HTMLPurifier_AttrDef_HTML_Class extends HTMLPurifier_AttrDef_HTML_Nmtokens
return preg_split('/\s+/', $string);
}
}
- protected function filter($tokens, $config, $context) {
+
+ /**
+ * @param array $tokens
+ * @param HTMLPurifier_Config $config
+ * @param HTMLPurifier_Context $context
+ * @return array
+ */
+ protected function filter($tokens, $config, $context)
+ {
$allowed = $config->get('Attr.AllowedClasses');
$forbidden = $config->get('Attr.ForbiddenClasses');
$ret = array();
foreach ($tokens as $token) {
- if (
- ($allowed === null || isset($allowed[$token])) &&
+ if (($allowed === null || isset($allowed[$token])) &&
!isset($forbidden[$token]) &&
// We need this O(n) check because of PHP's array
// implementation that casts -0 to 0.
diff --git a/library/HTMLPurifier/AttrDef/HTML/Color.php b/library/HTMLPurifier/AttrDef/HTML/Color.php
index d01e20454..946ebb782 100644
--- a/library/HTMLPurifier/AttrDef/HTML/Color.php
+++ b/library/HTMLPurifier/AttrDef/HTML/Color.php
@@ -6,27 +6,46 @@
class HTMLPurifier_AttrDef_HTML_Color extends HTMLPurifier_AttrDef
{
- public function validate($string, $config, $context) {
-
+ /**
+ * @param string $string
+ * @param HTMLPurifier_Config $config
+ * @param HTMLPurifier_Context $context
+ * @return bool|string
+ */
+ public function validate($string, $config, $context)
+ {
static $colors = null;
- if ($colors === null) $colors = $config->get('Core.ColorKeywords');
+ if ($colors === null) {
+ $colors = $config->get('Core.ColorKeywords');
+ }
$string = trim($string);
- if (empty($string)) return false;
- if (isset($colors[$string])) return $colors[$string];
- if ($string[0] === '#') $hex = substr($string, 1);
- else $hex = $string;
+ if (empty($string)) {
+ return false;
+ }
+ $lower = strtolower($string);
+ if (isset($colors[$lower])) {
+ return $colors[$lower];
+ }
+ if ($string[0] === '#') {
+ $hex = substr($string, 1);
+ } else {
+ $hex = $string;
+ }
$length = strlen($hex);
- if ($length !== 3 && $length !== 6) return false;
- if (!ctype_xdigit($hex)) return false;
- if ($length === 3) $hex = $hex[0].$hex[0].$hex[1].$hex[1].$hex[2].$hex[2];
-
+ if ($length !== 3 && $length !== 6) {
+ return false;
+ }
+ if (!ctype_xdigit($hex)) {
+ return false;
+ }
+ if ($length === 3) {
+ $hex = $hex[0] . $hex[0] . $hex[1] . $hex[1] . $hex[2] . $hex[2];
+ }
return "#$hex";
-
}
-
}
// vim: et sw=4 sts=4
diff --git a/library/HTMLPurifier/AttrDef/HTML/FrameTarget.php b/library/HTMLPurifier/AttrDef/HTML/FrameTarget.php
index ae6ea7c01..d79ba12b3 100644
--- a/library/HTMLPurifier/AttrDef/HTML/FrameTarget.php
+++ b/library/HTMLPurifier/AttrDef/HTML/FrameTarget.php
@@ -6,16 +6,33 @@
class HTMLPurifier_AttrDef_HTML_FrameTarget extends HTMLPurifier_AttrDef_Enum
{
+ /**
+ * @type array
+ */
public $valid_values = false; // uninitialized value
+
+ /**
+ * @type bool
+ */
protected $case_sensitive = false;
- public function __construct() {}
+ public function __construct()
+ {
+ }
- public function validate($string, $config, $context) {
- if ($this->valid_values === false) $this->valid_values = $config->get('Attr.AllowedFrameTargets');
+ /**
+ * @param string $string
+ * @param HTMLPurifier_Config $config
+ * @param HTMLPurifier_Context $context
+ * @return bool|string
+ */
+ public function validate($string, $config, $context)
+ {
+ if ($this->valid_values === false) {
+ $this->valid_values = $config->get('Attr.AllowedFrameTargets');
+ }
return parent::validate($string, $config, $context);
}
-
}
// vim: et sw=4 sts=4
diff --git a/library/HTMLPurifier/AttrDef/HTML/ID.php b/library/HTMLPurifier/AttrDef/HTML/ID.php
index 81d03762d..3d86efb44 100644
--- a/library/HTMLPurifier/AttrDef/HTML/ID.php
+++ b/library/HTMLPurifier/AttrDef/HTML/ID.php
@@ -12,42 +12,77 @@
class HTMLPurifier_AttrDef_HTML_ID extends HTMLPurifier_AttrDef
{
- // ref functionality disabled, since we also have to verify
- // whether or not the ID it refers to exists
-
- public function validate($id, $config, $context) {
+ // selector is NOT a valid thing to use for IDREFs, because IDREFs
+ // *must* target IDs that exist, whereas selector #ids do not.
+
+ /**
+ * Determines whether or not we're validating an ID in a CSS
+ * selector context.
+ * @type bool
+ */
+ protected $selector;
+
+ /**
+ * @param bool $selector
+ */
+ public function __construct($selector = false)
+ {
+ $this->selector = $selector;
+ }
- if (!$config->get('Attr.EnableID')) return false;
+ /**
+ * @param string $id
+ * @param HTMLPurifier_Config $config
+ * @param HTMLPurifier_Context $context
+ * @return bool|string
+ */
+ public function validate($id, $config, $context)
+ {
+ if (!$this->selector && !$config->get('Attr.EnableID')) {
+ return false;
+ }
$id = trim($id); // trim it first
- if ($id === '') return false;
+ if ($id === '') {
+ return false;
+ }
$prefix = $config->get('Attr.IDPrefix');
if ($prefix !== '') {
$prefix .= $config->get('Attr.IDPrefixLocal');
// prevent re-appending the prefix
- if (strpos($id, $prefix) !== 0) $id = $prefix . $id;
+ if (strpos($id, $prefix) !== 0) {
+ $id = $prefix . $id;
+ }
} elseif ($config->get('Attr.IDPrefixLocal') !== '') {
- trigger_error('%Attr.IDPrefixLocal cannot be used unless '.
- '%Attr.IDPrefix is set', E_USER_WARNING);
+ trigger_error(
+ '%Attr.IDPrefixLocal cannot be used unless ' .
+ '%Attr.IDPrefix is set',
+ E_USER_WARNING
+ );
}
- //if (!$this->ref) {
+ if (!$this->selector) {
$id_accumulator =& $context->get('IDAccumulator');
- if (isset($id_accumulator->ids[$id])) return false;
- //}
+ if (isset($id_accumulator->ids[$id])) {
+ return false;
+ }
+ }
// we purposely avoid using regex, hopefully this is faster
if (ctype_alpha($id)) {
$result = true;
} else {
- if (!ctype_alpha(@$id[0])) return false;
- $trim = trim( // primitive style of regexps, I suppose
+ if (!ctype_alpha(@$id[0])) {
+ return false;
+ }
+ // primitive style of regexps, I suppose
+ $trim = trim(
$id,
'A..Za..z0..9:-._'
- );
+ );
$result = ($trim === '');
}
@@ -56,15 +91,15 @@ class HTMLPurifier_AttrDef_HTML_ID extends HTMLPurifier_AttrDef
return false;
}
- if (/*!$this->ref && */$result) $id_accumulator->add($id);
+ if (!$this->selector && $result) {
+ $id_accumulator->add($id);
+ }
// if no change was made to the ID, return the result
// else, return the new id if stripping whitespace made it
// valid, or return false.
return $result ? $id : false;
-
}
-
}
// vim: et sw=4 sts=4
diff --git a/library/HTMLPurifier/AttrDef/HTML/Length.php b/library/HTMLPurifier/AttrDef/HTML/Length.php
index a242f9c23..1c4006fbb 100644
--- a/library/HTMLPurifier/AttrDef/HTML/Length.php
+++ b/library/HTMLPurifier/AttrDef/HTML/Length.php
@@ -10,32 +10,47 @@
class HTMLPurifier_AttrDef_HTML_Length extends HTMLPurifier_AttrDef_HTML_Pixels
{
- public function validate($string, $config, $context) {
-
+ /**
+ * @param string $string
+ * @param HTMLPurifier_Config $config
+ * @param HTMLPurifier_Context $context
+ * @return bool|string
+ */
+ public function validate($string, $config, $context)
+ {
$string = trim($string);
- if ($string === '') return false;
+ if ($string === '') {
+ return false;
+ }
$parent_result = parent::validate($string, $config, $context);
- if ($parent_result !== false) return $parent_result;
+ if ($parent_result !== false) {
+ return $parent_result;
+ }
$length = strlen($string);
$last_char = $string[$length - 1];
- if ($last_char !== '%') return false;
+ if ($last_char !== '%') {
+ return false;
+ }
$points = substr($string, 0, $length - 1);
- if (!is_numeric($points)) return false;
-
- $points = (int) $points;
+ if (!is_numeric($points)) {
+ return false;
+ }
- if ($points < 0) return '0%';
- if ($points > 100) return '100%';
-
- return ((string) $points) . '%';
+ $points = (int)$points;
+ if ($points < 0) {
+ return '0%';
+ }
+ if ($points > 100) {
+ return '100%';
+ }
+ return ((string)$points) . '%';
}
-
}
// vim: et sw=4 sts=4
diff --git a/library/HTMLPurifier/AttrDef/HTML/LinkTypes.php b/library/HTMLPurifier/AttrDef/HTML/LinkTypes.php
index 76d25ed08..63fa04c15 100644
--- a/library/HTMLPurifier/AttrDef/HTML/LinkTypes.php
+++ b/library/HTMLPurifier/AttrDef/HTML/LinkTypes.php
@@ -9,26 +9,44 @@
class HTMLPurifier_AttrDef_HTML_LinkTypes extends HTMLPurifier_AttrDef
{
- /** Name config attribute to pull. */
+ /**
+ * Name config attribute to pull.
+ * @type string
+ */
protected $name;
- public function __construct($name) {
+ /**
+ * @param string $name
+ */
+ public function __construct($name)
+ {
$configLookup = array(
'rel' => 'AllowedRel',
'rev' => 'AllowedRev'
);
if (!isset($configLookup[$name])) {
- trigger_error('Unrecognized attribute name for link '.
- 'relationship.', E_USER_ERROR);
+ trigger_error(
+ 'Unrecognized attribute name for link ' .
+ 'relationship.',
+ E_USER_ERROR
+ );
return;
}
$this->name = $configLookup[$name];
}
- public function validate($string, $config, $context) {
-
+ /**
+ * @param string $string
+ * @param HTMLPurifier_Config $config
+ * @param HTMLPurifier_Context $context
+ * @return bool|string
+ */
+ public function validate($string, $config, $context)
+ {
$allowed = $config->get('Attr.' . $this->name);
- if (empty($allowed)) return false;
+ if (empty($allowed)) {
+ return false;
+ }
$string = $this->parseCDATA($string);
$parts = explode(' ', $string);
@@ -37,17 +55,18 @@ class HTMLPurifier_AttrDef_HTML_LinkTypes extends HTMLPurifier_AttrDef
$ret_lookup = array();
foreach ($parts as $part) {
$part = strtolower(trim($part));
- if (!isset($allowed[$part])) continue;
+ if (!isset($allowed[$part])) {
+ continue;
+ }
$ret_lookup[$part] = true;
}
- if (empty($ret_lookup)) return false;
+ if (empty($ret_lookup)) {
+ return false;
+ }
$string = implode(' ', array_keys($ret_lookup));
-
return $string;
-
}
-
}
// vim: et sw=4 sts=4
diff --git a/library/HTMLPurifier/AttrDef/HTML/MultiLength.php b/library/HTMLPurifier/AttrDef/HTML/MultiLength.php
index c72fc76e4..bbb20f2f8 100644
--- a/library/HTMLPurifier/AttrDef/HTML/MultiLength.php
+++ b/library/HTMLPurifier/AttrDef/HTML/MultiLength.php
@@ -9,33 +9,52 @@
class HTMLPurifier_AttrDef_HTML_MultiLength extends HTMLPurifier_AttrDef_HTML_Length
{
- public function validate($string, $config, $context) {
-
+ /**
+ * @param string $string
+ * @param HTMLPurifier_Config $config
+ * @param HTMLPurifier_Context $context
+ * @return bool|string
+ */
+ public function validate($string, $config, $context)
+ {
$string = trim($string);
- if ($string === '') return false;
+ if ($string === '') {
+ return false;
+ }
$parent_result = parent::validate($string, $config, $context);
- if ($parent_result !== false) return $parent_result;
+ if ($parent_result !== false) {
+ return $parent_result;
+ }
$length = strlen($string);
$last_char = $string[$length - 1];
- if ($last_char !== '*') return false;
+ if ($last_char !== '*') {
+ return false;
+ }
$int = substr($string, 0, $length - 1);
- if ($int == '') return '*';
- if (!is_numeric($int)) return false;
-
- $int = (int) $int;
-
- if ($int < 0) return false;
- if ($int == 0) return '0';
- if ($int == 1) return '*';
- return ((string) $int) . '*';
-
+ if ($int == '') {
+ return '*';
+ }
+ if (!is_numeric($int)) {
+ return false;
+ }
+
+ $int = (int)$int;
+ if ($int < 0) {
+ return false;
+ }
+ if ($int == 0) {
+ return '0';
+ }
+ if ($int == 1) {
+ return '*';
+ }
+ return ((string)$int) . '*';
}
-
}
// vim: et sw=4 sts=4
diff --git a/library/HTMLPurifier/AttrDef/HTML/Nmtokens.php b/library/HTMLPurifier/AttrDef/HTML/Nmtokens.php
index aa34120bd..f79683b4f 100644
--- a/library/HTMLPurifier/AttrDef/HTML/Nmtokens.php
+++ b/library/HTMLPurifier/AttrDef/HTML/Nmtokens.php
@@ -6,24 +6,38 @@
class HTMLPurifier_AttrDef_HTML_Nmtokens extends HTMLPurifier_AttrDef
{
- public function validate($string, $config, $context) {
-
+ /**
+ * @param string $string
+ * @param HTMLPurifier_Config $config
+ * @param HTMLPurifier_Context $context
+ * @return bool|string
+ */
+ public function validate($string, $config, $context)
+ {
$string = trim($string);
// early abort: '' and '0' (strings that convert to false) are invalid
- if (!$string) return false;
+ if (!$string) {
+ return false;
+ }
$tokens = $this->split($string, $config, $context);
$tokens = $this->filter($tokens, $config, $context);
- if (empty($tokens)) return false;
+ if (empty($tokens)) {
+ return false;
+ }
return implode(' ', $tokens);
-
}
/**
* Splits a space separated list of tokens into its constituent parts.
+ * @param string $string
+ * @param HTMLPurifier_Config $config
+ * @param HTMLPurifier_Context $context
+ * @return array
*/
- protected function split($string, $config, $context) {
+ protected function split($string, $config, $context)
+ {
// OPTIMIZABLE!
// do the preg_match, capture all subpatterns for reformulation
@@ -31,9 +45,9 @@ class HTMLPurifier_AttrDef_HTML_Nmtokens extends HTMLPurifier_AttrDef
// escaping because I don't know how to do that with regexps
// and plus it would complicate optimization efforts (you never
// see that anyway).
- $pattern = '/(?:(?<=\s)|\A)'. // look behind for space or string start
- '((?:--|-?[A-Za-z_])[A-Za-z_\-0-9]*)'.
- '(?:(?=\s)|\z)/'; // look ahead for space or string end
+ $pattern = '/(?:(?<=\s)|\A)' . // look behind for space or string start
+ '((?:--|-?[A-Za-z_])[A-Za-z_\-0-9]*)' .
+ '(?:(?=\s)|\z)/'; // look ahead for space or string end
preg_match_all($pattern, $string, $matches);
return $matches[1];
}
@@ -42,11 +56,15 @@ class HTMLPurifier_AttrDef_HTML_Nmtokens extends HTMLPurifier_AttrDef
* Template method for removing certain tokens based on arbitrary criteria.
* @note If we wanted to be really functional, we'd do an array_filter
* with a callback. But... we're not.
+ * @param array $tokens
+ * @param HTMLPurifier_Config $config
+ * @param HTMLPurifier_Context $context
+ * @return array
*/
- protected function filter($tokens, $config, $context) {
+ protected function filter($tokens, $config, $context)
+ {
return $tokens;
}
-
}
// vim: et sw=4 sts=4
diff --git a/library/HTMLPurifier/AttrDef/HTML/Pixels.php b/library/HTMLPurifier/AttrDef/HTML/Pixels.php
index 4cb2c1b85..a1d019e09 100644
--- a/library/HTMLPurifier/AttrDef/HTML/Pixels.php
+++ b/library/HTMLPurifier/AttrDef/HTML/Pixels.php
@@ -6,43 +6,71 @@
class HTMLPurifier_AttrDef_HTML_Pixels extends HTMLPurifier_AttrDef
{
+ /**
+ * @type int
+ */
protected $max;
- public function __construct($max = null) {
+ /**
+ * @param int $max
+ */
+ public function __construct($max = null)
+ {
$this->max = $max;
}
- public function validate($string, $config, $context) {
-
+ /**
+ * @param string $string
+ * @param HTMLPurifier_Config $config
+ * @param HTMLPurifier_Context $context
+ * @return bool|string
+ */
+ public function validate($string, $config, $context)
+ {
$string = trim($string);
- if ($string === '0') return $string;
- if ($string === '') return false;
+ if ($string === '0') {
+ return $string;
+ }
+ if ($string === '') {
+ return false;
+ }
$length = strlen($string);
if (substr($string, $length - 2) == 'px') {
$string = substr($string, 0, $length - 2);
}
- if (!is_numeric($string)) return false;
- $int = (int) $string;
+ if (!is_numeric($string)) {
+ return false;
+ }
+ $int = (int)$string;
- if ($int < 0) return '0';
+ if ($int < 0) {
+ return '0';
+ }
// upper-bound value, extremely high values can
// crash operating systems, see <http://ha.ckers.org/imagecrash.html>
// WARNING, above link WILL crash you if you're using Windows
- if ($this->max !== null && $int > $this->max) return (string) $this->max;
-
- return (string) $int;
-
+ if ($this->max !== null && $int > $this->max) {
+ return (string)$this->max;
+ }
+ return (string)$int;
}
- public function make($string) {
- if ($string === '') $max = null;
- else $max = (int) $string;
+ /**
+ * @param string $string
+ * @return HTMLPurifier_AttrDef
+ */
+ public function make($string)
+ {
+ if ($string === '') {
+ $max = null;
+ } else {
+ $max = (int)$string;
+ }
$class = get_class($this);
return new $class($max);
}
-
}
// vim: et sw=4 sts=4
diff --git a/library/HTMLPurifier/AttrDef/Integer.php b/library/HTMLPurifier/AttrDef/Integer.php
index d59738d2a..400e707d2 100644
--- a/library/HTMLPurifier/AttrDef/Integer.php
+++ b/library/HTMLPurifier/AttrDef/Integer.php
@@ -11,17 +11,20 @@ class HTMLPurifier_AttrDef_Integer extends HTMLPurifier_AttrDef
{
/**
- * Bool indicating whether or not negative values are allowed
+ * Whether or not negative values are allowed.
+ * @type bool
*/
protected $negative = true;
/**
- * Bool indicating whether or not zero is allowed
+ * Whether or not zero is allowed.
+ * @type bool
*/
protected $zero = true;
/**
- * Bool indicating whether or not positive values are allowed
+ * Whether or not positive values are allowed.
+ * @type bool
*/
protected $positive = true;
@@ -30,44 +33,59 @@ class HTMLPurifier_AttrDef_Integer extends HTMLPurifier_AttrDef
* @param $zero Bool indicating whether or not zero is allowed
* @param $positive Bool indicating whether or not positive values are allowed
*/
- public function __construct(
- $negative = true, $zero = true, $positive = true
- ) {
+ public function __construct($negative = true, $zero = true, $positive = true)
+ {
$this->negative = $negative;
- $this->zero = $zero;
+ $this->zero = $zero;
$this->positive = $positive;
}
- public function validate($integer, $config, $context) {
-
+ /**
+ * @param string $integer
+ * @param HTMLPurifier_Config $config
+ * @param HTMLPurifier_Context $context
+ * @return bool|string
+ */
+ public function validate($integer, $config, $context)
+ {
$integer = $this->parseCDATA($integer);
- if ($integer === '') return false;
+ if ($integer === '') {
+ return false;
+ }
// we could possibly simply typecast it to integer, but there are
// certain fringe cases that must not return an integer.
// clip leading sign
- if ( $this->negative && $integer[0] === '-' ) {
+ if ($this->negative && $integer[0] === '-') {
$digits = substr($integer, 1);
- if ($digits === '0') $integer = '0'; // rm minus sign for zero
- } elseif( $this->positive && $integer[0] === '+' ) {
+ if ($digits === '0') {
+ $integer = '0';
+ } // rm minus sign for zero
+ } elseif ($this->positive && $integer[0] === '+') {
$digits = $integer = substr($integer, 1); // rm unnecessary plus
} else {
$digits = $integer;
}
// test if it's numeric
- if (!ctype_digit($digits)) return false;
+ if (!ctype_digit($digits)) {
+ return false;
+ }
// perform scope tests
- if (!$this->zero && $integer == 0) return false;
- if (!$this->positive && $integer > 0) return false;
- if (!$this->negative && $integer < 0) return false;
+ if (!$this->zero && $integer == 0) {
+ return false;
+ }
+ if (!$this->positive && $integer > 0) {
+ return false;
+ }
+ if (!$this->negative && $integer < 0) {
+ return false;
+ }
return $integer;
-
}
-
}
// vim: et sw=4 sts=4
diff --git a/library/HTMLPurifier/AttrDef/Lang.php b/library/HTMLPurifier/AttrDef/Lang.php
index 10e6da56d..2a55cea64 100644
--- a/library/HTMLPurifier/AttrDef/Lang.php
+++ b/library/HTMLPurifier/AttrDef/Lang.php
@@ -7,15 +7,25 @@
class HTMLPurifier_AttrDef_Lang extends HTMLPurifier_AttrDef
{
- public function validate($string, $config, $context) {
-
+ /**
+ * @param string $string
+ * @param HTMLPurifier_Config $config
+ * @param HTMLPurifier_Context $context
+ * @return bool|string
+ */
+ public function validate($string, $config, $context)
+ {
$string = trim($string);
- if (!$string) return false;
+ if (!$string) {
+ return false;
+ }
$subtags = explode('-', $string);
$num_subtags = count($subtags);
- if ($num_subtags == 0) return false; // sanity check
+ if ($num_subtags == 0) { // sanity check
+ return false;
+ }
// process primary subtag : $subtags[0]
$length = strlen($subtags[0]);
@@ -23,15 +33,15 @@ class HTMLPurifier_AttrDef_Lang extends HTMLPurifier_AttrDef
case 0:
return false;
case 1:
- if (! ($subtags[0] == 'x' || $subtags[0] == 'i') ) {
+ if (!($subtags[0] == 'x' || $subtags[0] == 'i')) {
return false;
}
break;
case 2:
case 3:
- if (! ctype_alpha($subtags[0]) ) {
+ if (!ctype_alpha($subtags[0])) {
return false;
- } elseif (! ctype_lower($subtags[0]) ) {
+ } elseif (!ctype_lower($subtags[0])) {
$subtags[0] = strtolower($subtags[0]);
}
break;
@@ -40,17 +50,23 @@ class HTMLPurifier_AttrDef_Lang extends HTMLPurifier_AttrDef
}
$new_string = $subtags[0];
- if ($num_subtags == 1) return $new_string;
+ if ($num_subtags == 1) {
+ return $new_string;
+ }
// process second subtag : $subtags[1]
$length = strlen($subtags[1]);
if ($length == 0 || ($length == 1 && $subtags[1] != 'x') || $length > 8 || !ctype_alnum($subtags[1])) {
return $new_string;
}
- if (!ctype_lower($subtags[1])) $subtags[1] = strtolower($subtags[1]);
+ if (!ctype_lower($subtags[1])) {
+ $subtags[1] = strtolower($subtags[1]);
+ }
$new_string .= '-' . $subtags[1];
- if ($num_subtags == 2) return $new_string;
+ if ($num_subtags == 2) {
+ return $new_string;
+ }
// process all other subtags, index 2 and up
for ($i = 2; $i < $num_subtags; $i++) {
@@ -63,11 +79,8 @@ class HTMLPurifier_AttrDef_Lang extends HTMLPurifier_AttrDef
}
$new_string .= '-' . $subtags[$i];
}
-
return $new_string;
-
}
-
}
// vim: et sw=4 sts=4
diff --git a/library/HTMLPurifier/AttrDef/Switch.php b/library/HTMLPurifier/AttrDef/Switch.php
index c9e3ed193..c7eb3199a 100644
--- a/library/HTMLPurifier/AttrDef/Switch.php
+++ b/library/HTMLPurifier/AttrDef/Switch.php
@@ -6,21 +6,41 @@
class HTMLPurifier_AttrDef_Switch
{
+ /**
+ * @type string
+ */
protected $tag;
- protected $withTag, $withoutTag;
+
+ /**
+ * @type HTMLPurifier_AttrDef
+ */
+ protected $withTag;
+
+ /**
+ * @type HTMLPurifier_AttrDef
+ */
+ protected $withoutTag;
/**
* @param string $tag Tag name to switch upon
* @param HTMLPurifier_AttrDef $with_tag Call if token matches tag
* @param HTMLPurifier_AttrDef $without_tag Call if token doesn't match, or there is no token
*/
- public function __construct($tag, $with_tag, $without_tag) {
+ public function __construct($tag, $with_tag, $without_tag)
+ {
$this->tag = $tag;
$this->withTag = $with_tag;
$this->withoutTag = $without_tag;
}
- public function validate($string, $config, $context) {
+ /**
+ * @param string $string
+ * @param HTMLPurifier_Config $config
+ * @param HTMLPurifier_Context $context
+ * @return bool|string
+ */
+ public function validate($string, $config, $context)
+ {
$token = $context->get('CurrentToken', true);
if (!$token || $token->name !== $this->tag) {
return $this->withoutTag->validate($string, $config, $context);
@@ -28,7 +48,6 @@ class HTMLPurifier_AttrDef_Switch
return $this->withTag->validate($string, $config, $context);
}
}
-
}
// vim: et sw=4 sts=4
diff --git a/library/HTMLPurifier/AttrDef/Text.php b/library/HTMLPurifier/AttrDef/Text.php
index c6216cc53..4553a4ea9 100644
--- a/library/HTMLPurifier/AttrDef/Text.php
+++ b/library/HTMLPurifier/AttrDef/Text.php
@@ -6,10 +6,16 @@
class HTMLPurifier_AttrDef_Text extends HTMLPurifier_AttrDef
{
- public function validate($string, $config, $context) {
+ /**
+ * @param string $string
+ * @param HTMLPurifier_Config $config
+ * @param HTMLPurifier_Context $context
+ * @return bool|string
+ */
+ public function validate($string, $config, $context)
+ {
return $this->parseCDATA($string);
}
-
}
// vim: et sw=4 sts=4
diff --git a/library/HTMLPurifier/AttrDef/URI.php b/library/HTMLPurifier/AttrDef/URI.php
index 01a6d83e9..c1cd89772 100644
--- a/library/HTMLPurifier/AttrDef/URI.php
+++ b/library/HTMLPurifier/AttrDef/URI.php
@@ -7,31 +7,54 @@
class HTMLPurifier_AttrDef_URI extends HTMLPurifier_AttrDef
{
+ /**
+ * @type HTMLPurifier_URIParser
+ */
protected $parser;
+
+ /**
+ * @type bool
+ */
protected $embedsResource;
/**
- * @param $embeds_resource_resource Does the URI here result in an extra HTTP request?
+ * @param bool $embeds_resource Does the URI here result in an extra HTTP request?
*/
- public function __construct($embeds_resource = false) {
+ public function __construct($embeds_resource = false)
+ {
$this->parser = new HTMLPurifier_URIParser();
- $this->embedsResource = (bool) $embeds_resource;
+ $this->embedsResource = (bool)$embeds_resource;
}
- public function make($string) {
- $embeds = (bool) $string;
+ /**
+ * @param string $string
+ * @return HTMLPurifier_AttrDef_URI
+ */
+ public function make($string)
+ {
+ $embeds = ($string === 'embedded');
return new HTMLPurifier_AttrDef_URI($embeds);
}
- public function validate($uri, $config, $context) {
-
- if ($config->get('URI.Disable')) return false;
+ /**
+ * @param string $uri
+ * @param HTMLPurifier_Config $config
+ * @param HTMLPurifier_Context $context
+ * @return bool|string
+ */
+ public function validate($uri, $config, $context)
+ {
+ if ($config->get('URI.Disable')) {
+ return false;
+ }
$uri = $this->parseCDATA($uri);
// parse the URI
$uri = $this->parser->parse($uri);
- if ($uri === false) return false;
+ if ($uri === false) {
+ return false;
+ }
// add embedded flag to context for validators
$context->register('EmbeddedURI', $this->embedsResource);
@@ -41,23 +64,35 @@ class HTMLPurifier_AttrDef_URI extends HTMLPurifier_AttrDef
// generic validation
$result = $uri->validate($config, $context);
- if (!$result) break;
+ if (!$result) {
+ break;
+ }
// chained filtering
$uri_def = $config->getDefinition('URI');
$result = $uri_def->filter($uri, $config, $context);
- if (!$result) break;
+ if (!$result) {
+ break;
+ }
// scheme-specific validation
$scheme_obj = $uri->getSchemeObj($config, $context);
- if (!$scheme_obj) break;
- if ($this->embedsResource && !$scheme_obj->browsable) break;
+ if (!$scheme_obj) {
+ break;
+ }
+ if ($this->embedsResource && !$scheme_obj->browsable) {
+ break;
+ }
$result = $scheme_obj->validate($uri, $config, $context);
- if (!$result) break;
+ if (!$result) {
+ break;
+ }
// Post chained filtering
$result = $uri_def->postFilter($uri, $config, $context);
- if (!$result) break;
+ if (!$result) {
+ break;
+ }
// survived gauntlet
$ok = true;
@@ -65,13 +100,12 @@ class HTMLPurifier_AttrDef_URI extends HTMLPurifier_AttrDef
} while (false);
$context->destroy('EmbeddedURI');
- if (!$ok) return false;
-
+ if (!$ok) {
+ return false;
+ }
// back to string
return $uri->toString();
-
}
-
}
// vim: et sw=4 sts=4
diff --git a/library/HTMLPurifier/AttrDef/URI/Email.php b/library/HTMLPurifier/AttrDef/URI/Email.php
index bfee9d166..daf32b764 100644
--- a/library/HTMLPurifier/AttrDef/URI/Email.php
+++ b/library/HTMLPurifier/AttrDef/URI/Email.php
@@ -5,8 +5,11 @@ abstract class HTMLPurifier_AttrDef_URI_Email extends HTMLPurifier_AttrDef
/**
* Unpacks a mailbox into its display-name and address
+ * @param string $string
+ * @return mixed
*/
- function unpack($string) {
+ public function unpack($string)
+ {
// needs to be implemented
}
diff --git a/library/HTMLPurifier/AttrDef/URI/Email/SimpleCheck.php b/library/HTMLPurifier/AttrDef/URI/Email/SimpleCheck.php
index 94c715ab4..52c0d5968 100644
--- a/library/HTMLPurifier/AttrDef/URI/Email/SimpleCheck.php
+++ b/library/HTMLPurifier/AttrDef/URI/Email/SimpleCheck.php
@@ -7,15 +7,23 @@
class HTMLPurifier_AttrDef_URI_Email_SimpleCheck extends HTMLPurifier_AttrDef_URI_Email
{
- public function validate($string, $config, $context) {
+ /**
+ * @param string $string
+ * @param HTMLPurifier_Config $config
+ * @param HTMLPurifier_Context $context
+ * @return bool|string
+ */
+ public function validate($string, $config, $context)
+ {
// no support for named mailboxes i.e. "Bob <bob@example.com>"
// that needs more percent encoding to be done
- if ($string == '') return false;
+ if ($string == '') {
+ return false;
+ }
$string = trim($string);
$result = preg_match('/^[A-Z0-9._%-]+@[A-Z0-9.-]+\.[A-Z]{2,4}$/i', $string);
return $result ? $string : false;
}
-
}
// vim: et sw=4 sts=4
diff --git a/library/HTMLPurifier/AttrDef/URI/Host.php b/library/HTMLPurifier/AttrDef/URI/Host.php
index 2156c10c6..e7df800b1 100644
--- a/library/HTMLPurifier/AttrDef/URI/Host.php
+++ b/library/HTMLPurifier/AttrDef/URI/Host.php
@@ -7,56 +7,122 @@ class HTMLPurifier_AttrDef_URI_Host extends HTMLPurifier_AttrDef
{
/**
- * Instance of HTMLPurifier_AttrDef_URI_IPv4 sub-validator
+ * IPv4 sub-validator.
+ * @type HTMLPurifier_AttrDef_URI_IPv4
*/
protected $ipv4;
/**
- * Instance of HTMLPurifier_AttrDef_URI_IPv6 sub-validator
+ * IPv6 sub-validator.
+ * @type HTMLPurifier_AttrDef_URI_IPv6
*/
protected $ipv6;
- public function __construct() {
+ public function __construct()
+ {
$this->ipv4 = new HTMLPurifier_AttrDef_URI_IPv4();
$this->ipv6 = new HTMLPurifier_AttrDef_URI_IPv6();
}
- public function validate($string, $config, $context) {
+ /**
+ * @param string $string
+ * @param HTMLPurifier_Config $config
+ * @param HTMLPurifier_Context $context
+ * @return bool|string
+ */
+ public function validate($string, $config, $context)
+ {
$length = strlen($string);
- if ($string === '') return '';
- if ($length > 1 && $string[0] === '[' && $string[$length-1] === ']') {
+ // empty hostname is OK; it's usually semantically equivalent:
+ // the default host as defined by a URI scheme is used:
+ //
+ // If the URI scheme defines a default for host, then that
+ // default applies when the host subcomponent is undefined
+ // or when the registered name is empty (zero length).
+ if ($string === '') {
+ return '';
+ }
+ if ($length > 1 && $string[0] === '[' && $string[$length - 1] === ']') {
//IPv6
$ip = substr($string, 1, $length - 2);
$valid = $this->ipv6->validate($ip, $config, $context);
- if ($valid === false) return false;
- return '['. $valid . ']';
+ if ($valid === false) {
+ return false;
+ }
+ return '[' . $valid . ']';
}
// need to do checks on unusual encodings too
$ipv4 = $this->ipv4->validate($string, $config, $context);
- if ($ipv4 !== false) return $ipv4;
+ if ($ipv4 !== false) {
+ return $ipv4;
+ }
// A regular domain name.
- // This breaks I18N domain names, but we don't have proper IRI support,
- // so force users to insert Punycode. If there's complaining we'll
- // try to fix things into an international friendly form.
+ // This doesn't match I18N domain names, but we don't have proper IRI support,
+ // so force users to insert Punycode.
+
+ // There is not a good sense in which underscores should be
+ // allowed, since it's technically not! (And if you go as
+ // far to allow everything as specified by the DNS spec...
+ // well, that's literally everything, modulo some space limits
+ // for the components and the overall name (which, by the way,
+ // we are NOT checking!). So we (arbitrarily) decide this:
+ // let's allow underscores wherever we would have allowed
+ // hyphens, if they are enabled. This is a pretty good match
+ // for browser behavior, for example, a large number of browsers
+ // cannot handle foo_.example.com, but foo_bar.example.com is
+ // fairly well supported.
+ $underscore = $config->get('Core.AllowHostnameUnderscore') ? '_' : '';
// The productions describing this are:
$a = '[a-z]'; // alpha
$an = '[a-z0-9]'; // alphanum
- $and = '[a-z0-9-]'; // alphanum | "-"
+ $and = "[a-z0-9-$underscore]"; // alphanum | "-"
// domainlabel = alphanum | alphanum *( alphanum | "-" ) alphanum
- $domainlabel = "$an($and*$an)?";
+ $domainlabel = "$an($and*$an)?";
// toplabel = alpha | alpha *( alphanum | "-" ) alphanum
- $toplabel = "$a($and*$an)?";
+ $toplabel = "$a($and*$an)?";
// hostname = *( domainlabel "." ) toplabel [ "." ]
- $match = preg_match("/^($domainlabel\.)*$toplabel\.?$/i", $string);
- if (!$match) return false;
+ if (preg_match("/^($domainlabel\.)*$toplabel\.?$/i", $string)) {
+ return $string;
+ }
- return $string;
- }
+ // If we have Net_IDNA2 support, we can support IRIs by
+ // punycoding them. (This is the most portable thing to do,
+ // since otherwise we have to assume browsers support
+ if ($config->get('Core.EnableIDNA')) {
+ $idna = new Net_IDNA2(array('encoding' => 'utf8', 'overlong' => false, 'strict' => true));
+ // we need to encode each period separately
+ $parts = explode('.', $string);
+ try {
+ $new_parts = array();
+ foreach ($parts as $part) {
+ $encodable = false;
+ for ($i = 0, $c = strlen($part); $i < $c; $i++) {
+ if (ord($part[$i]) > 0x7a) {
+ $encodable = true;
+ break;
+ }
+ }
+ if (!$encodable) {
+ $new_parts[] = $part;
+ } else {
+ $new_parts[] = $idna->encode($part);
+ }
+ }
+ $string = implode('.', $new_parts);
+ if (preg_match("/^($domainlabel\.)*$toplabel\.?$/i", $string)) {
+ return $string;
+ }
+ } catch (Exception $e) {
+ // XXX error reporting
+ }
+ }
+ return false;
+ }
}
// vim: et sw=4 sts=4
diff --git a/library/HTMLPurifier/AttrDef/URI/IPv4.php b/library/HTMLPurifier/AttrDef/URI/IPv4.php
index ec4cf591b..30ac16c9e 100644
--- a/library/HTMLPurifier/AttrDef/URI/IPv4.php
+++ b/library/HTMLPurifier/AttrDef/URI/IPv4.php
@@ -8,32 +8,38 @@ class HTMLPurifier_AttrDef_URI_IPv4 extends HTMLPurifier_AttrDef
{
/**
- * IPv4 regex, protected so that IPv6 can reuse it
+ * IPv4 regex, protected so that IPv6 can reuse it.
+ * @type string
*/
protected $ip4;
- public function validate($aIP, $config, $context) {
-
- if (!$this->ip4) $this->_loadRegex();
-
- if (preg_match('#^' . $this->ip4 . '$#s', $aIP))
- {
- return $aIP;
+ /**
+ * @param string $aIP
+ * @param HTMLPurifier_Config $config
+ * @param HTMLPurifier_Context $context
+ * @return bool|string
+ */
+ public function validate($aIP, $config, $context)
+ {
+ if (!$this->ip4) {
+ $this->_loadRegex();
}
+ if (preg_match('#^' . $this->ip4 . '$#s', $aIP)) {
+ return $aIP;
+ }
return false;
-
}
/**
* Lazy load function to prevent regex from being stuffed in
* cache.
*/
- protected function _loadRegex() {
+ protected function _loadRegex()
+ {
$oct = '(?:25[0-5]|2[0-4][0-9]|1[0-9]{2}|[1-9][0-9]|[0-9])'; // 0-255
$this->ip4 = "(?:{$oct}\\.{$oct}\\.{$oct}\\.{$oct})";
}
-
}
// vim: et sw=4 sts=4
diff --git a/library/HTMLPurifier/AttrDef/URI/IPv6.php b/library/HTMLPurifier/AttrDef/URI/IPv6.php
index 9454e9be5..f243793ee 100644
--- a/library/HTMLPurifier/AttrDef/URI/IPv6.php
+++ b/library/HTMLPurifier/AttrDef/URI/IPv6.php
@@ -9,91 +9,81 @@
class HTMLPurifier_AttrDef_URI_IPv6 extends HTMLPurifier_AttrDef_URI_IPv4
{
- public function validate($aIP, $config, $context) {
-
- if (!$this->ip4) $this->_loadRegex();
+ /**
+ * @param string $aIP
+ * @param HTMLPurifier_Config $config
+ * @param HTMLPurifier_Context $context
+ * @return bool|string
+ */
+ public function validate($aIP, $config, $context)
+ {
+ if (!$this->ip4) {
+ $this->_loadRegex();
+ }
$original = $aIP;
$hex = '[0-9a-fA-F]';
$blk = '(?:' . $hex . '{1,4})';
- $pre = '(?:/(?:12[0-8]|1[0-1][0-9]|[1-9][0-9]|[0-9]))'; // /0 - /128
+ $pre = '(?:/(?:12[0-8]|1[0-1][0-9]|[1-9][0-9]|[0-9]))'; // /0 - /128
// prefix check
- if (strpos($aIP, '/') !== false)
- {
- if (preg_match('#' . $pre . '$#s', $aIP, $find))
- {
- $aIP = substr($aIP, 0, 0-strlen($find[0]));
- unset($find);
- }
- else
- {
- return false;
- }
+ if (strpos($aIP, '/') !== false) {
+ if (preg_match('#' . $pre . '$#s', $aIP, $find)) {
+ $aIP = substr($aIP, 0, 0 - strlen($find[0]));
+ unset($find);
+ } else {
+ return false;
+ }
}
// IPv4-compatiblity check
- if (preg_match('#(?<=:'.')' . $this->ip4 . '$#s', $aIP, $find))
- {
- $aIP = substr($aIP, 0, 0-strlen($find[0]));
- $ip = explode('.', $find[0]);
- $ip = array_map('dechex', $ip);
- $aIP .= $ip[0] . $ip[1] . ':' . $ip[2] . $ip[3];
- unset($find, $ip);
+ if (preg_match('#(?<=:' . ')' . $this->ip4 . '$#s', $aIP, $find)) {
+ $aIP = substr($aIP, 0, 0 - strlen($find[0]));
+ $ip = explode('.', $find[0]);
+ $ip = array_map('dechex', $ip);
+ $aIP .= $ip[0] . $ip[1] . ':' . $ip[2] . $ip[3];
+ unset($find, $ip);
}
// compression check
$aIP = explode('::', $aIP);
$c = count($aIP);
- if ($c > 2)
- {
+ if ($c > 2) {
+ return false;
+ } elseif ($c == 2) {
+ list($first, $second) = $aIP;
+ $first = explode(':', $first);
+ $second = explode(':', $second);
+
+ if (count($first) + count($second) > 8) {
return false;
- }
- elseif ($c == 2)
- {
- list($first, $second) = $aIP;
- $first = explode(':', $first);
- $second = explode(':', $second);
-
- if (count($first) + count($second) > 8)
- {
- return false;
- }
+ }
- while(count($first) < 8)
- {
- array_push($first, '0');
- }
+ while (count($first) < 8) {
+ array_push($first, '0');
+ }
- array_splice($first, 8 - count($second), 8, $second);
- $aIP = $first;
- unset($first,$second);
- }
- else
- {
- $aIP = explode(':', $aIP[0]);
+ array_splice($first, 8 - count($second), 8, $second);
+ $aIP = $first;
+ unset($first, $second);
+ } else {
+ $aIP = explode(':', $aIP[0]);
}
$c = count($aIP);
- if ($c != 8)
- {
- return false;
+ if ($c != 8) {
+ return false;
}
// All the pieces should be 16-bit hex strings. Are they?
- foreach ($aIP as $piece)
- {
- if (!preg_match('#^[0-9a-fA-F]{4}$#s', sprintf('%04s', $piece)))
- {
- return false;
- }
+ foreach ($aIP as $piece) {
+ if (!preg_match('#^[0-9a-fA-F]{4}$#s', sprintf('%04s', $piece))) {
+ return false;
+ }
}
-
return $original;
-
}
-
}
// vim: et sw=4 sts=4
diff --git a/library/HTMLPurifier/AttrTransform.php b/library/HTMLPurifier/AttrTransform.php
index e61d3e01b..b428331f1 100644
--- a/library/HTMLPurifier/AttrTransform.php
+++ b/library/HTMLPurifier/AttrTransform.php
@@ -20,37 +20,41 @@ abstract class HTMLPurifier_AttrTransform
/**
* Abstract: makes changes to the attributes dependent on multiple values.
*
- * @param $attr Assoc array of attributes, usually from
+ * @param array $attr Assoc array of attributes, usually from
* HTMLPurifier_Token_Tag::$attr
- * @param $config Mandatory HTMLPurifier_Config object.
- * @param $context Mandatory HTMLPurifier_Context object
- * @returns Processed attribute array.
+ * @param HTMLPurifier_Config $config Mandatory HTMLPurifier_Config object.
+ * @param HTMLPurifier_Context $context Mandatory HTMLPurifier_Context object
+ * @return array Processed attribute array.
*/
abstract public function transform($attr, $config, $context);
/**
* Prepends CSS properties to the style attribute, creating the
* attribute if it doesn't exist.
- * @param $attr Attribute array to process (passed by reference)
- * @param $css CSS to prepend
+ * @param array &$attr Attribute array to process (passed by reference)
+ * @param string $css CSS to prepend
*/
- public function prependCSS(&$attr, $css) {
+ public function prependCSS(&$attr, $css)
+ {
$attr['style'] = isset($attr['style']) ? $attr['style'] : '';
$attr['style'] = $css . $attr['style'];
}
/**
* Retrieves and removes an attribute
- * @param $attr Attribute array to process (passed by reference)
- * @param $key Key of attribute to confiscate
+ * @param array &$attr Attribute array to process (passed by reference)
+ * @param mixed $key Key of attribute to confiscate
+ * @return mixed
*/
- public function confiscateAttr(&$attr, $key) {
- if (!isset($attr[$key])) return null;
+ public function confiscateAttr(&$attr, $key)
+ {
+ if (!isset($attr[$key])) {
+ return null;
+ }
$value = $attr[$key];
unset($attr[$key]);
return $value;
}
-
}
// vim: et sw=4 sts=4
diff --git a/library/HTMLPurifier/AttrTransform/Background.php b/library/HTMLPurifier/AttrTransform/Background.php
index 0e1ff24a3..2f72869a5 100644
--- a/library/HTMLPurifier/AttrTransform/Background.php
+++ b/library/HTMLPurifier/AttrTransform/Background.php
@@ -3,21 +3,26 @@
/**
* Pre-transform that changes proprietary background attribute to CSS.
*/
-class HTMLPurifier_AttrTransform_Background extends HTMLPurifier_AttrTransform {
-
- public function transform($attr, $config, $context) {
-
- if (!isset($attr['background'])) return $attr;
+class HTMLPurifier_AttrTransform_Background extends HTMLPurifier_AttrTransform
+{
+ /**
+ * @param array $attr
+ * @param HTMLPurifier_Config $config
+ * @param HTMLPurifier_Context $context
+ * @return array
+ */
+ public function transform($attr, $config, $context)
+ {
+ if (!isset($attr['background'])) {
+ return $attr;
+ }
$background = $this->confiscateAttr($attr, 'background');
// some validation should happen here
$this->prependCSS($attr, "background-image:url($background);");
-
return $attr;
-
}
-
}
// vim: et sw=4 sts=4
diff --git a/library/HTMLPurifier/AttrTransform/BdoDir.php b/library/HTMLPurifier/AttrTransform/BdoDir.php
index 4d1a05665..d66c04a5b 100644
--- a/library/HTMLPurifier/AttrTransform/BdoDir.php
+++ b/library/HTMLPurifier/AttrTransform/BdoDir.php
@@ -8,12 +8,20 @@
class HTMLPurifier_AttrTransform_BdoDir extends HTMLPurifier_AttrTransform
{
- public function transform($attr, $config, $context) {
- if (isset($attr['dir'])) return $attr;
+ /**
+ * @param array $attr
+ * @param HTMLPurifier_Config $config
+ * @param HTMLPurifier_Context $context
+ * @return array
+ */
+ public function transform($attr, $config, $context)
+ {
+ if (isset($attr['dir'])) {
+ return $attr;
+ }
$attr['dir'] = $config->get('Attr.DefaultTextDir');
return $attr;
}
-
}
// vim: et sw=4 sts=4
diff --git a/library/HTMLPurifier/AttrTransform/BgColor.php b/library/HTMLPurifier/AttrTransform/BgColor.php
index ad3916bb9..0f51fd2ce 100644
--- a/library/HTMLPurifier/AttrTransform/BgColor.php
+++ b/library/HTMLPurifier/AttrTransform/BgColor.php
@@ -3,21 +3,26 @@
/**
* Pre-transform that changes deprecated bgcolor attribute to CSS.
*/
-class HTMLPurifier_AttrTransform_BgColor extends HTMLPurifier_AttrTransform {
-
- public function transform($attr, $config, $context) {
-
- if (!isset($attr['bgcolor'])) return $attr;
+class HTMLPurifier_AttrTransform_BgColor extends HTMLPurifier_AttrTransform
+{
+ /**
+ * @param array $attr
+ * @param HTMLPurifier_Config $config
+ * @param HTMLPurifier_Context $context
+ * @return array
+ */
+ public function transform($attr, $config, $context)
+ {
+ if (!isset($attr['bgcolor'])) {
+ return $attr;
+ }
$bgcolor = $this->confiscateAttr($attr, 'bgcolor');
// some validation should happen here
$this->prependCSS($attr, "background-color:$bgcolor;");
-
return $attr;
-
}
-
}
// vim: et sw=4 sts=4
diff --git a/library/HTMLPurifier/AttrTransform/BoolToCSS.php b/library/HTMLPurifier/AttrTransform/BoolToCSS.php
index 51159b671..f25cd0195 100644
--- a/library/HTMLPurifier/AttrTransform/BoolToCSS.php
+++ b/library/HTMLPurifier/AttrTransform/BoolToCSS.php
@@ -3,34 +3,45 @@
/**
* Pre-transform that changes converts a boolean attribute to fixed CSS
*/
-class HTMLPurifier_AttrTransform_BoolToCSS extends HTMLPurifier_AttrTransform {
-
+class HTMLPurifier_AttrTransform_BoolToCSS extends HTMLPurifier_AttrTransform
+{
/**
- * Name of boolean attribute that is trigger
+ * Name of boolean attribute that is trigger.
+ * @type string
*/
protected $attr;
/**
- * CSS declarations to add to style, needs trailing semicolon
+ * CSS declarations to add to style, needs trailing semicolon.
+ * @type string
*/
protected $css;
/**
- * @param $attr string attribute name to convert from
- * @param $css string CSS declarations to add to style (needs semicolon)
+ * @param string $attr attribute name to convert from
+ * @param string $css CSS declarations to add to style (needs semicolon)
*/
- public function __construct($attr, $css) {
+ public function __construct($attr, $css)
+ {
$this->attr = $attr;
- $this->css = $css;
+ $this->css = $css;
}
- public function transform($attr, $config, $context) {
- if (!isset($attr[$this->attr])) return $attr;
+ /**
+ * @param array $attr
+ * @param HTMLPurifier_Config $config
+ * @param HTMLPurifier_Context $context
+ * @return array
+ */
+ public function transform($attr, $config, $context)
+ {
+ if (!isset($attr[$this->attr])) {
+ return $attr;
+ }
unset($attr[$this->attr]);
$this->prependCSS($attr, $this->css);
return $attr;
}
-
}
// vim: et sw=4 sts=4
diff --git a/library/HTMLPurifier/AttrTransform/Border.php b/library/HTMLPurifier/AttrTransform/Border.php
index 476b0b079..057dc017f 100644
--- a/library/HTMLPurifier/AttrTransform/Border.php
+++ b/library/HTMLPurifier/AttrTransform/Border.php
@@ -3,16 +3,24 @@
/**
* Pre-transform that changes deprecated border attribute to CSS.
*/
-class HTMLPurifier_AttrTransform_Border extends HTMLPurifier_AttrTransform {
-
- public function transform($attr, $config, $context) {
- if (!isset($attr['border'])) return $attr;
+class HTMLPurifier_AttrTransform_Border extends HTMLPurifier_AttrTransform
+{
+ /**
+ * @param array $attr
+ * @param HTMLPurifier_Config $config
+ * @param HTMLPurifier_Context $context
+ * @return array
+ */
+ public function transform($attr, $config, $context)
+ {
+ if (!isset($attr['border'])) {
+ return $attr;
+ }
$border_width = $this->confiscateAttr($attr, 'border');
// some validation should happen here
$this->prependCSS($attr, "border:{$border_width}px solid;");
return $attr;
}
-
}
// vim: et sw=4 sts=4
diff --git a/library/HTMLPurifier/AttrTransform/EnumToCSS.php b/library/HTMLPurifier/AttrTransform/EnumToCSS.php
index 2a5b4514a..7ccd0e3fb 100644
--- a/library/HTMLPurifier/AttrTransform/EnumToCSS.php
+++ b/library/HTMLPurifier/AttrTransform/EnumToCSS.php
@@ -4,55 +4,65 @@
* Generic pre-transform that converts an attribute with a fixed number of
* values (enumerated) to CSS.
*/
-class HTMLPurifier_AttrTransform_EnumToCSS extends HTMLPurifier_AttrTransform {
-
+class HTMLPurifier_AttrTransform_EnumToCSS extends HTMLPurifier_AttrTransform
+{
/**
- * Name of attribute to transform from
+ * Name of attribute to transform from.
+ * @type string
*/
protected $attr;
/**
- * Lookup array of attribute values to CSS
+ * Lookup array of attribute values to CSS.
+ * @type array
*/
protected $enumToCSS = array();
/**
- * Case sensitivity of the matching
+ * Case sensitivity of the matching.
+ * @type bool
* @warning Currently can only be guaranteed to work with ASCII
* values.
*/
protected $caseSensitive = false;
/**
- * @param $attr String attribute name to transform from
- * @param $enumToCSS Lookup array of attribute values to CSS
- * @param $case_sensitive Boolean case sensitivity indicator, default false
+ * @param string $attr Attribute name to transform from
+ * @param array $enum_to_css Lookup array of attribute values to CSS
+ * @param bool $case_sensitive Case sensitivity indicator, default false
*/
- public function __construct($attr, $enum_to_css, $case_sensitive = false) {
+ public function __construct($attr, $enum_to_css, $case_sensitive = false)
+ {
$this->attr = $attr;
$this->enumToCSS = $enum_to_css;
- $this->caseSensitive = (bool) $case_sensitive;
+ $this->caseSensitive = (bool)$case_sensitive;
}
- public function transform($attr, $config, $context) {
-
- if (!isset($attr[$this->attr])) return $attr;
+ /**
+ * @param array $attr
+ * @param HTMLPurifier_Config $config
+ * @param HTMLPurifier_Context $context
+ * @return array
+ */
+ public function transform($attr, $config, $context)
+ {
+ if (!isset($attr[$this->attr])) {
+ return $attr;
+ }
$value = trim($attr[$this->attr]);
unset($attr[$this->attr]);
- if (!$this->caseSensitive) $value = strtolower($value);
+ if (!$this->caseSensitive) {
+ $value = strtolower($value);
+ }
if (!isset($this->enumToCSS[$value])) {
return $attr;
}
-
$this->prependCSS($attr, $this->enumToCSS[$value]);
-
return $attr;
-
}
-
}
// vim: et sw=4 sts=4
diff --git a/library/HTMLPurifier/AttrTransform/ImgRequired.php b/library/HTMLPurifier/AttrTransform/ImgRequired.php
index 7f0e4b7a5..7df6cb3e1 100644
--- a/library/HTMLPurifier/AttrTransform/ImgRequired.php
+++ b/library/HTMLPurifier/AttrTransform/ImgRequired.php
@@ -11,11 +11,19 @@
class HTMLPurifier_AttrTransform_ImgRequired extends HTMLPurifier_AttrTransform
{
- public function transform($attr, $config, $context) {
-
+ /**
+ * @param array $attr
+ * @param HTMLPurifier_Config $config
+ * @param HTMLPurifier_Context $context
+ * @return array
+ */
+ public function transform($attr, $config, $context)
+ {
$src = true;
if (!isset($attr['src'])) {
- if ($config->get('Core.RemoveInvalidImg')) return $attr;
+ if ($config->get('Core.RemoveInvalidImg')) {
+ return $attr;
+ }
$attr['src'] = $config->get('Attr.DefaultInvalidImage');
$src = false;
}
@@ -25,7 +33,7 @@ class HTMLPurifier_AttrTransform_ImgRequired extends HTMLPurifier_AttrTransform
$alt = $config->get('Attr.DefaultImageAlt');
if ($alt === null) {
// truncate if the alt is too long
- $attr['alt'] = substr(basename($attr['src']),0,40);
+ $attr['alt'] = substr(basename($attr['src']), 0, 40);
} else {
$attr['alt'] = $alt;
}
@@ -33,11 +41,8 @@ class HTMLPurifier_AttrTransform_ImgRequired extends HTMLPurifier_AttrTransform
$attr['alt'] = $config->get('Attr.DefaultInvalidImageAlt');
}
}
-
return $attr;
-
}
-
}
// vim: et sw=4 sts=4
diff --git a/library/HTMLPurifier/AttrTransform/ImgSpace.php b/library/HTMLPurifier/AttrTransform/ImgSpace.php
index fd84c10c3..350b3358f 100644
--- a/library/HTMLPurifier/AttrTransform/ImgSpace.php
+++ b/library/HTMLPurifier/AttrTransform/ImgSpace.php
@@ -3,42 +3,59 @@
/**
* Pre-transform that changes deprecated hspace and vspace attributes to CSS
*/
-class HTMLPurifier_AttrTransform_ImgSpace extends HTMLPurifier_AttrTransform {
-
+class HTMLPurifier_AttrTransform_ImgSpace extends HTMLPurifier_AttrTransform
+{
+ /**
+ * @type string
+ */
protected $attr;
+
+ /**
+ * @type array
+ */
protected $css = array(
'hspace' => array('left', 'right'),
'vspace' => array('top', 'bottom')
);
- public function __construct($attr) {
+ /**
+ * @param string $attr
+ */
+ public function __construct($attr)
+ {
$this->attr = $attr;
if (!isset($this->css[$attr])) {
trigger_error(htmlspecialchars($attr) . ' is not valid space attribute');
}
}
- public function transform($attr, $config, $context) {
-
- if (!isset($attr[$this->attr])) return $attr;
+ /**
+ * @param array $attr
+ * @param HTMLPurifier_Config $config
+ * @param HTMLPurifier_Context $context
+ * @return array
+ */
+ public function transform($attr, $config, $context)
+ {
+ if (!isset($attr[$this->attr])) {
+ return $attr;
+ }
$width = $this->confiscateAttr($attr, $this->attr);
// some validation could happen here
- if (!isset($this->css[$this->attr])) return $attr;
+ if (!isset($this->css[$this->attr])) {
+ return $attr;
+ }
$style = '';
foreach ($this->css[$this->attr] as $suffix) {
$property = "margin-$suffix";
$style .= "$property:{$width}px;";
}
-
$this->prependCSS($attr, $style);
-
return $attr;
-
}
-
}
// vim: et sw=4 sts=4
diff --git a/library/HTMLPurifier/AttrTransform/Input.php b/library/HTMLPurifier/AttrTransform/Input.php
index 16829552d..3ab47ed8c 100644
--- a/library/HTMLPurifier/AttrTransform/Input.php
+++ b/library/HTMLPurifier/AttrTransform/Input.php
@@ -4,17 +4,31 @@
* Performs miscellaneous cross attribute validation and filtering for
* input elements. This is meant to be a post-transform.
*/
-class HTMLPurifier_AttrTransform_Input extends HTMLPurifier_AttrTransform {
-
+class HTMLPurifier_AttrTransform_Input extends HTMLPurifier_AttrTransform
+{
+ /**
+ * @type HTMLPurifier_AttrDef_HTML_Pixels
+ */
protected $pixels;
- public function __construct() {
+ public function __construct()
+ {
$this->pixels = new HTMLPurifier_AttrDef_HTML_Pixels();
}
- public function transform($attr, $config, $context) {
- if (!isset($attr['type'])) $t = 'text';
- else $t = strtolower($attr['type']);
+ /**
+ * @param array $attr
+ * @param HTMLPurifier_Config $config
+ * @param HTMLPurifier_Context $context
+ * @return array
+ */
+ public function transform($attr, $config, $context)
+ {
+ if (!isset($attr['type'])) {
+ $t = 'text';
+ } else {
+ $t = strtolower($attr['type']);
+ }
if (isset($attr['checked']) && $t !== 'radio' && $t !== 'checkbox') {
unset($attr['checked']);
}
@@ -23,8 +37,11 @@ class HTMLPurifier_AttrTransform_Input extends HTMLPurifier_AttrTransform {
}
if (isset($attr['size']) && $t !== 'text' && $t !== 'password') {
$result = $this->pixels->validate($attr['size'], $config, $context);
- if ($result === false) unset($attr['size']);
- else $attr['size'] = $result;
+ if ($result === false) {
+ unset($attr['size']);
+ } else {
+ $attr['size'] = $result;
+ }
}
if (isset($attr['src']) && $t !== 'image') {
unset($attr['src']);
@@ -34,7 +51,6 @@ class HTMLPurifier_AttrTransform_Input extends HTMLPurifier_AttrTransform {
}
return $attr;
}
-
}
// vim: et sw=4 sts=4
diff --git a/library/HTMLPurifier/AttrTransform/Lang.php b/library/HTMLPurifier/AttrTransform/Lang.php
index 5869e7f82..5b0aff0e4 100644
--- a/library/HTMLPurifier/AttrTransform/Lang.php
+++ b/library/HTMLPurifier/AttrTransform/Lang.php
@@ -8,9 +8,15 @@
class HTMLPurifier_AttrTransform_Lang extends HTMLPurifier_AttrTransform
{
- public function transform($attr, $config, $context) {
-
- $lang = isset($attr['lang']) ? $attr['lang'] : false;
+ /**
+ * @param array $attr
+ * @param HTMLPurifier_Config $config
+ * @param HTMLPurifier_Context $context
+ * @return array
+ */
+ public function transform($attr, $config, $context)
+ {
+ $lang = isset($attr['lang']) ? $attr['lang'] : false;
$xml_lang = isset($attr['xml:lang']) ? $attr['xml:lang'] : false;
if ($lang !== false && $xml_lang === false) {
@@ -18,11 +24,8 @@ class HTMLPurifier_AttrTransform_Lang extends HTMLPurifier_AttrTransform
} elseif ($xml_lang !== false) {
$attr['lang'] = $xml_lang;
}
-
return $attr;
-
}
-
}
// vim: et sw=4 sts=4
diff --git a/library/HTMLPurifier/AttrTransform/Length.php b/library/HTMLPurifier/AttrTransform/Length.php
index ea2f30473..853f33549 100644
--- a/library/HTMLPurifier/AttrTransform/Length.php
+++ b/library/HTMLPurifier/AttrTransform/Length.php
@@ -6,22 +6,40 @@
class HTMLPurifier_AttrTransform_Length extends HTMLPurifier_AttrTransform
{
+ /**
+ * @type string
+ */
protected $name;
+
+ /**
+ * @type string
+ */
protected $cssName;
- public function __construct($name, $css_name = null) {
+ public function __construct($name, $css_name = null)
+ {
$this->name = $name;
$this->cssName = $css_name ? $css_name : $name;
}
- public function transform($attr, $config, $context) {
- if (!isset($attr[$this->name])) return $attr;
+ /**
+ * @param array $attr
+ * @param HTMLPurifier_Config $config
+ * @param HTMLPurifier_Context $context
+ * @return array
+ */
+ public function transform($attr, $config, $context)
+ {
+ if (!isset($attr[$this->name])) {
+ return $attr;
+ }
$length = $this->confiscateAttr($attr, $this->name);
- if(ctype_digit($length)) $length .= 'px';
+ if (ctype_digit($length)) {
+ $length .= 'px';
+ }
$this->prependCSS($attr, $this->cssName . ":$length;");
return $attr;
}
-
}
// vim: et sw=4 sts=4
diff --git a/library/HTMLPurifier/AttrTransform/Name.php b/library/HTMLPurifier/AttrTransform/Name.php
index 15315bc73..63cce6837 100644
--- a/library/HTMLPurifier/AttrTransform/Name.php
+++ b/library/HTMLPurifier/AttrTransform/Name.php
@@ -6,16 +6,28 @@
class HTMLPurifier_AttrTransform_Name extends HTMLPurifier_AttrTransform
{
- public function transform($attr, $config, $context) {
+ /**
+ * @param array $attr
+ * @param HTMLPurifier_Config $config
+ * @param HTMLPurifier_Context $context
+ * @return array
+ */
+ public function transform($attr, $config, $context)
+ {
// Abort early if we're using relaxed definition of name
- if ($config->get('HTML.Attr.Name.UseCDATA')) return $attr;
- if (!isset($attr['name'])) return $attr;
+ if ($config->get('HTML.Attr.Name.UseCDATA')) {
+ return $attr;
+ }
+ if (!isset($attr['name'])) {
+ return $attr;
+ }
$id = $this->confiscateAttr($attr, 'name');
- if ( isset($attr['id'])) return $attr;
+ if (isset($attr['id'])) {
+ return $attr;
+ }
$attr['id'] = $id;
return $attr;
}
-
}
// vim: et sw=4 sts=4
diff --git a/library/HTMLPurifier/AttrTransform/NameSync.php b/library/HTMLPurifier/AttrTransform/NameSync.php
index a95638c14..36079b786 100644
--- a/library/HTMLPurifier/AttrTransform/NameSync.php
+++ b/library/HTMLPurifier/AttrTransform/NameSync.php
@@ -8,20 +8,34 @@
class HTMLPurifier_AttrTransform_NameSync extends HTMLPurifier_AttrTransform
{
- public function __construct() {
+ public function __construct()
+ {
$this->idDef = new HTMLPurifier_AttrDef_HTML_ID();
}
- public function transform($attr, $config, $context) {
- if (!isset($attr['name'])) return $attr;
+ /**
+ * @param array $attr
+ * @param HTMLPurifier_Config $config
+ * @param HTMLPurifier_Context $context
+ * @return array
+ */
+ public function transform($attr, $config, $context)
+ {
+ if (!isset($attr['name'])) {
+ return $attr;
+ }
$name = $attr['name'];
- if (isset($attr['id']) && $attr['id'] === $name) return $attr;
+ if (isset($attr['id']) && $attr['id'] === $name) {
+ return $attr;
+ }
$result = $this->idDef->validate($name, $config, $context);
- if ($result === false) unset($attr['name']);
- else $attr['name'] = $result;
+ if ($result === false) {
+ unset($attr['name']);
+ } else {
+ $attr['name'] = $result;
+ }
return $attr;
}
-
}
// vim: et sw=4 sts=4
diff --git a/library/HTMLPurifier/AttrTransform/Nofollow.php b/library/HTMLPurifier/AttrTransform/Nofollow.php
new file mode 100644
index 000000000..1057ebee1
--- /dev/null
+++ b/library/HTMLPurifier/AttrTransform/Nofollow.php
@@ -0,0 +1,52 @@
+<?php
+
+// must be called POST validation
+
+/**
+ * Adds rel="nofollow" to all outbound links. This transform is
+ * only attached if Attr.Nofollow is TRUE.
+ */
+class HTMLPurifier_AttrTransform_Nofollow extends HTMLPurifier_AttrTransform
+{
+ /**
+ * @type HTMLPurifier_URIParser
+ */
+ private $parser;
+
+ public function __construct()
+ {
+ $this->parser = new HTMLPurifier_URIParser();
+ }
+
+ /**
+ * @param array $attr
+ * @param HTMLPurifier_Config $config
+ * @param HTMLPurifier_Context $context
+ * @return array
+ */
+ public function transform($attr, $config, $context)
+ {
+ if (!isset($attr['href'])) {
+ return $attr;
+ }
+
+ // XXX Kind of inefficient
+ $url = $this->parser->parse($attr['href']);
+ $scheme = $url->getSchemeObj($config, $context);
+
+ if ($scheme->browsable && !$url->isLocal($config, $context)) {
+ if (isset($attr['rel'])) {
+ $rels = explode(' ', $attr['rel']);
+ if (!in_array('nofollow', $rels)) {
+ $rels[] = 'nofollow';
+ }
+ $attr['rel'] = implode(' ', $rels);
+ } else {
+ $attr['rel'] = 'nofollow';
+ }
+ }
+ return $attr;
+ }
+}
+
+// vim: et sw=4 sts=4
diff --git a/library/HTMLPurifier/AttrTransform/SafeEmbed.php b/library/HTMLPurifier/AttrTransform/SafeEmbed.php
index 4da449981..231c81a3f 100644
--- a/library/HTMLPurifier/AttrTransform/SafeEmbed.php
+++ b/library/HTMLPurifier/AttrTransform/SafeEmbed.php
@@ -2,9 +2,19 @@
class HTMLPurifier_AttrTransform_SafeEmbed extends HTMLPurifier_AttrTransform
{
+ /**
+ * @type string
+ */
public $name = "SafeEmbed";
- public function transform($attr, $config, $context) {
+ /**
+ * @param array $attr
+ * @param HTMLPurifier_Config $config
+ * @param HTMLPurifier_Context $context
+ * @return array
+ */
+ public function transform($attr, $config, $context)
+ {
$attr['allowscriptaccess'] = 'never';
$attr['allownetworking'] = 'internal';
$attr['type'] = 'application/x-shockwave-flash';
diff --git a/library/HTMLPurifier/AttrTransform/SafeObject.php b/library/HTMLPurifier/AttrTransform/SafeObject.php
index 1ed74898b..d1f3a4d2e 100644
--- a/library/HTMLPurifier/AttrTransform/SafeObject.php
+++ b/library/HTMLPurifier/AttrTransform/SafeObject.php
@@ -5,10 +5,22 @@
*/
class HTMLPurifier_AttrTransform_SafeObject extends HTMLPurifier_AttrTransform
{
+ /**
+ * @type string
+ */
public $name = "SafeObject";
- function transform($attr, $config, $context) {
- if (!isset($attr['type'])) $attr['type'] = 'application/x-shockwave-flash';
+ /**
+ * @param array $attr
+ * @param HTMLPurifier_Config $config
+ * @param HTMLPurifier_Context $context
+ * @return array
+ */
+ public function transform($attr, $config, $context)
+ {
+ if (!isset($attr['type'])) {
+ $attr['type'] = 'application/x-shockwave-flash';
+ }
return $attr;
}
}
diff --git a/library/HTMLPurifier/AttrTransform/SafeParam.php b/library/HTMLPurifier/AttrTransform/SafeParam.php
index 3f992ec31..1143b4b49 100644
--- a/library/HTMLPurifier/AttrTransform/SafeParam.php
+++ b/library/HTMLPurifier/AttrTransform/SafeParam.php
@@ -14,14 +14,30 @@
*/
class HTMLPurifier_AttrTransform_SafeParam extends HTMLPurifier_AttrTransform
{
+ /**
+ * @type string
+ */
public $name = "SafeParam";
+
+ /**
+ * @type HTMLPurifier_AttrDef_URI
+ */
private $uri;
- public function __construct() {
+ public function __construct()
+ {
$this->uri = new HTMLPurifier_AttrDef_URI(true); // embedded
+ $this->wmode = new HTMLPurifier_AttrDef_Enum(array('window', 'opaque', 'transparent'));
}
- public function transform($attr, $config, $context) {
+ /**
+ * @param array $attr
+ * @param HTMLPurifier_Config $config
+ * @param HTMLPurifier_Context $context
+ * @return array
+ */
+ public function transform($attr, $config, $context)
+ {
// If we add support for other objects, we'll need to alter the
// transforms.
switch ($attr['name']) {
@@ -33,8 +49,15 @@ class HTMLPurifier_AttrTransform_SafeParam extends HTMLPurifier_AttrTransform
case 'allowNetworking':
$attr['value'] = 'internal';
break;
+ case 'allowFullScreen':
+ if ($config->get('HTML.FlashAllowFullScreen')) {
+ $attr['value'] = ($attr['value'] == 'true') ? 'true' : 'false';
+ } else {
+ $attr['value'] = 'false';
+ }
+ break;
case 'wmode':
- $attr['value'] = 'window';
+ $attr['value'] = $this->wmode->validate($attr['value'], $config, $context);
break;
case 'movie':
case 'src':
diff --git a/library/HTMLPurifier/AttrTransform/ScriptRequired.php b/library/HTMLPurifier/AttrTransform/ScriptRequired.php
index 4499050a2..b7057bbf8 100644
--- a/library/HTMLPurifier/AttrTransform/ScriptRequired.php
+++ b/library/HTMLPurifier/AttrTransform/ScriptRequired.php
@@ -5,7 +5,14 @@
*/
class HTMLPurifier_AttrTransform_ScriptRequired extends HTMLPurifier_AttrTransform
{
- public function transform($attr, $config, $context) {
+ /**
+ * @param array $attr
+ * @param HTMLPurifier_Config $config
+ * @param HTMLPurifier_Context $context
+ * @return array
+ */
+ public function transform($attr, $config, $context)
+ {
if (!isset($attr['type'])) {
$attr['type'] = 'text/javascript';
}
diff --git a/library/HTMLPurifier/AttrTransform/TargetBlank.php b/library/HTMLPurifier/AttrTransform/TargetBlank.php
new file mode 100644
index 000000000..dd63ea89c
--- /dev/null
+++ b/library/HTMLPurifier/AttrTransform/TargetBlank.php
@@ -0,0 +1,45 @@
+<?php
+
+// must be called POST validation
+
+/**
+ * Adds target="blank" to all outbound links. This transform is
+ * only attached if Attr.TargetBlank is TRUE. This works regardless
+ * of whether or not Attr.AllowedFrameTargets
+ */
+class HTMLPurifier_AttrTransform_TargetBlank extends HTMLPurifier_AttrTransform
+{
+ /**
+ * @type HTMLPurifier_URIParser
+ */
+ private $parser;
+
+ public function __construct()
+ {
+ $this->parser = new HTMLPurifier_URIParser();
+ }
+
+ /**
+ * @param array $attr
+ * @param HTMLPurifier_Config $config
+ * @param HTMLPurifier_Context $context
+ * @return array
+ */
+ public function transform($attr, $config, $context)
+ {
+ if (!isset($attr['href'])) {
+ return $attr;
+ }
+
+ // XXX Kind of inefficient
+ $url = $this->parser->parse($attr['href']);
+ $scheme = $url->getSchemeObj($config, $context);
+
+ if ($scheme->browsable && !$url->isBenign($config, $context)) {
+ $attr['target'] = '_blank';
+ }
+ return $attr;
+ }
+}
+
+// vim: et sw=4 sts=4
diff --git a/library/HTMLPurifier/AttrTransform/Textarea.php b/library/HTMLPurifier/AttrTransform/Textarea.php
index 81ac3488b..6a9f33a0c 100644
--- a/library/HTMLPurifier/AttrTransform/Textarea.php
+++ b/library/HTMLPurifier/AttrTransform/Textarea.php
@@ -5,14 +5,23 @@
*/
class HTMLPurifier_AttrTransform_Textarea extends HTMLPurifier_AttrTransform
{
-
- public function transform($attr, $config, $context) {
+ /**
+ * @param array $attr
+ * @param HTMLPurifier_Config $config
+ * @param HTMLPurifier_Context $context
+ * @return array
+ */
+ public function transform($attr, $config, $context)
+ {
// Calculated from Firefox
- if (!isset($attr['cols'])) $attr['cols'] = '22';
- if (!isset($attr['rows'])) $attr['rows'] = '3';
+ if (!isset($attr['cols'])) {
+ $attr['cols'] = '22';
+ }
+ if (!isset($attr['rows'])) {
+ $attr['rows'] = '3';
+ }
return $attr;
}
-
}
// vim: et sw=4 sts=4
diff --git a/library/HTMLPurifier/AttrTypes.php b/library/HTMLPurifier/AttrTypes.php
index fc2ea4e58..3b70520b6 100644
--- a/library/HTMLPurifier/AttrTypes.php
+++ b/library/HTMLPurifier/AttrTypes.php
@@ -6,7 +6,8 @@
class HTMLPurifier_AttrTypes
{
/**
- * Lookup array of attribute string identifiers to concrete implementations
+ * Lookup array of attribute string identifiers to concrete implementations.
+ * @type HTMLPurifier_AttrDef[]
*/
protected $info = array();
@@ -14,7 +15,15 @@ class HTMLPurifier_AttrTypes
* Constructs the info array, supplying default implementations for attribute
* types.
*/
- public function __construct() {
+ public function __construct()
+ {
+ // XXX This is kind of poor, since we don't actually /clone/
+ // instances; instead, we use the supplied make() attribute. So,
+ // the underlying class must know how to deal with arguments.
+ // With the old implementation of Enum, that ignored its
+ // arguments when handling a make dispatch, the IAlign
+ // definition wouldn't work.
+
// pseudo-types, must be instantiated via shorthand
$this->info['Enum'] = new HTMLPurifier_AttrDef_Enum();
$this->info['Bool'] = new HTMLPurifier_AttrDef_HTML_Bool();
@@ -29,6 +38,9 @@ class HTMLPurifier_AttrTypes
$this->info['URI'] = new HTMLPurifier_AttrDef_URI();
$this->info['LanguageCode'] = new HTMLPurifier_AttrDef_Lang();
$this->info['Color'] = new HTMLPurifier_AttrDef_HTML_Color();
+ $this->info['IAlign'] = self::makeEnum('top,middle,bottom,left,right');
+ $this->info['LAlign'] = self::makeEnum('top,bottom,left,right');
+ $this->info['FrameTarget'] = new HTMLPurifier_AttrDef_HTML_FrameTarget();
// unimplemented aliases
$this->info['ContentType'] = new HTMLPurifier_AttrDef_Text();
@@ -44,32 +56,39 @@ class HTMLPurifier_AttrTypes
$this->info['Number'] = new HTMLPurifier_AttrDef_Integer(false, false, true);
}
+ private static function makeEnum($in)
+ {
+ return new HTMLPurifier_AttrDef_Clone(new HTMLPurifier_AttrDef_Enum(explode(',', $in)));
+ }
+
/**
* Retrieves a type
- * @param $type String type name
- * @return Object AttrDef for type
+ * @param string $type String type name
+ * @return HTMLPurifier_AttrDef Object AttrDef for type
*/
- public function get($type) {
-
+ public function get($type)
+ {
// determine if there is any extra info tacked on
- if (strpos($type, '#') !== false) list($type, $string) = explode('#', $type, 2);
- else $string = '';
+ if (strpos($type, '#') !== false) {
+ list($type, $string) = explode('#', $type, 2);
+ } else {
+ $string = '';
+ }
if (!isset($this->info[$type])) {
trigger_error('Cannot retrieve undefined attribute type ' . $type, E_USER_ERROR);
return;
}
-
return $this->info[$type]->make($string);
-
}
/**
* Sets a new implementation for a type
- * @param $type String type name
- * @param $impl Object AttrDef for type
+ * @param string $type String type name
+ * @param HTMLPurifier_AttrDef $impl Object AttrDef for type
*/
- public function set($type, $impl) {
+ public function set($type, $impl)
+ {
$this->info[$type] = $impl;
}
}
diff --git a/library/HTMLPurifier/AttrValidator.php b/library/HTMLPurifier/AttrValidator.php
index 829a0f8f2..f97dc93ed 100644
--- a/library/HTMLPurifier/AttrValidator.php
+++ b/library/HTMLPurifier/AttrValidator.php
@@ -9,17 +9,14 @@ class HTMLPurifier_AttrValidator
{
/**
- * Validates the attributes of a token, returning a modified token
+ * Validates the attributes of a token, mutating it as necessary.
* that has valid tokens
- * @param $token Reference to token to validate. We require a reference
- * because the operation this class performs on the token are
- * not atomic, so the context CurrentToken to be updated
- * throughout
- * @param $config Instance of HTMLPurifier_Config
- * @param $context Instance of HTMLPurifier_Context
+ * @param HTMLPurifier_Token $token Token to validate.
+ * @param HTMLPurifier_Config $config Instance of HTMLPurifier_Config
+ * @param HTMLPurifier_Context $context Instance of HTMLPurifier_Context
*/
- public function validateToken(&$token, &$config, $context) {
-
+ public function validateToken($token, $config, $context)
+ {
$definition = $config->getHTMLDefinition();
$e =& $context->get('ErrorCollector', true);
@@ -32,12 +29,15 @@ class HTMLPurifier_AttrValidator
// initialize CurrentToken if necessary
$current_token =& $context->get('CurrentToken', true);
- if (!$current_token) $context->register('CurrentToken', $token);
+ if (!$current_token) {
+ $context->register('CurrentToken', $token);
+ }
- if (
- !$token instanceof HTMLPurifier_Token_Start &&
+ if (!$token instanceof HTMLPurifier_Token_Start &&
!$token instanceof HTMLPurifier_Token_Empty
- ) return $token;
+ ) {
+ return;
+ }
// create alias to global definition array, see also $defs
// DEFINITION CALL
@@ -51,7 +51,9 @@ class HTMLPurifier_AttrValidator
foreach ($definition->info_attr_transform_pre as $transform) {
$attr = $transform->transform($o = $attr, $config, $context);
if ($e) {
- if ($attr != $o) $e->send(E_NOTICE, 'AttrValidator: Attributes transformed', $o, $attr);
+ if ($attr != $o) {
+ $e->send(E_NOTICE, 'AttrValidator: Attributes transformed', $o, $attr);
+ }
}
}
@@ -60,7 +62,9 @@ class HTMLPurifier_AttrValidator
foreach ($definition->info[$token->name]->attr_transform_pre as $transform) {
$attr = $transform->transform($o = $attr, $config, $context);
if ($e) {
- if ($attr != $o) $e->send(E_NOTICE, 'AttrValidator: Attributes transformed', $o, $attr);
+ if ($attr != $o) {
+ $e->send(E_NOTICE, 'AttrValidator: Attributes transformed', $o, $attr);
+ }
}
}
@@ -77,7 +81,7 @@ class HTMLPurifier_AttrValidator
foreach ($attr as $attr_key => $value) {
// call the definition
- if ( isset($defs[$attr_key]) ) {
+ if (isset($defs[$attr_key])) {
// there is a local definition defined
if ($defs[$attr_key] === false) {
// We've explicitly been told not to allow this element.
@@ -89,15 +93,19 @@ class HTMLPurifier_AttrValidator
} else {
// validate according to the element's definition
$result = $defs[$attr_key]->validate(
- $value, $config, $context
- );
+ $value,
+ $config,
+ $context
+ );
}
- } elseif ( isset($d_defs[$attr_key]) ) {
+ } elseif (isset($d_defs[$attr_key])) {
// there is a global definition defined, validate according
// to the global definition
$result = $d_defs[$attr_key]->validate(
- $value, $config, $context
- );
+ $value,
+ $config,
+ $context
+ );
} else {
// system never heard of the attribute? DELETE!
$result = false;
@@ -107,7 +115,9 @@ class HTMLPurifier_AttrValidator
if ($result === false || $result === null) {
// this is a generic error message that should replaced
// with more specific ones when possible
- if ($e) $e->send(E_ERROR, 'AttrValidator: Attribute removed');
+ if ($e) {
+ $e->send(E_ERROR, 'AttrValidator: Attribute removed');
+ }
// remove the attribute
unset($attr[$attr_key]);
@@ -137,7 +147,9 @@ class HTMLPurifier_AttrValidator
foreach ($definition->info_attr_transform_post as $transform) {
$attr = $transform->transform($o = $attr, $config, $context);
if ($e) {
- if ($attr != $o) $e->send(E_NOTICE, 'AttrValidator: Attributes transformed', $o, $attr);
+ if ($attr != $o) {
+ $e->send(E_NOTICE, 'AttrValidator: Attributes transformed', $o, $attr);
+ }
}
}
@@ -145,14 +157,18 @@ class HTMLPurifier_AttrValidator
foreach ($definition->info[$token->name]->attr_transform_post as $transform) {
$attr = $transform->transform($o = $attr, $config, $context);
if ($e) {
- if ($attr != $o) $e->send(E_NOTICE, 'AttrValidator: Attributes transformed', $o, $attr);
+ if ($attr != $o) {
+ $e->send(E_NOTICE, 'AttrValidator: Attributes transformed', $o, $attr);
+ }
}
}
$token->attr = $attr;
// destroy CurrentToken if we made it ourselves
- if (!$current_token) $context->destroy('CurrentToken');
+ if (!$current_token) {
+ $context->destroy('CurrentToken');
+ }
}
diff --git a/library/HTMLPurifier/Bootstrap.php b/library/HTMLPurifier/Bootstrap.php
index 559f61a23..707122bb2 100644
--- a/library/HTMLPurifier/Bootstrap.php
+++ b/library/HTMLPurifier/Bootstrap.php
@@ -32,20 +32,34 @@ class HTMLPurifier_Bootstrap
/**
* Autoload function for HTML Purifier
- * @param $class Class to load
+ * @param string $class Class to load
+ * @return bool
*/
- public static function autoload($class) {
+ public static function autoload($class)
+ {
$file = HTMLPurifier_Bootstrap::getPath($class);
- if (!$file) return false;
- require HTMLPURIFIER_PREFIX . '/' . $file;
+ if (!$file) {
+ return false;
+ }
+ // Technically speaking, it should be ok and more efficient to
+ // just do 'require', but Antonio Parraga reports that with
+ // Zend extensions such as Zend debugger and APC, this invariant
+ // may be broken. Since we have efficient alternatives, pay
+ // the cost here and avoid the bug.
+ require_once HTMLPURIFIER_PREFIX . '/' . $file;
return true;
}
/**
* Returns the path for a specific class.
+ * @param string $class Class path to get
+ * @return string
*/
- public static function getPath($class) {
- if (strncmp('HTMLPurifier', $class, 12) !== 0) return false;
+ public static function getPath($class)
+ {
+ if (strncmp('HTMLPurifier', $class, 12) !== 0) {
+ return false;
+ }
// Custom implementations
if (strncmp('HTMLPurifier_Language_', $class, 22) === 0) {
$code = str_replace('_', '-', substr($class, 22));
@@ -53,46 +67,58 @@ class HTMLPurifier_Bootstrap
} else {
$file = str_replace('_', '/', $class) . '.php';
}
- if (!file_exists(HTMLPURIFIER_PREFIX . '/' . $file)) return false;
+ if (!file_exists(HTMLPURIFIER_PREFIX . '/' . $file)) {
+ return false;
+ }
return $file;
}
/**
* "Pre-registers" our autoloader on the SPL stack.
*/
- public static function registerAutoload() {
+ public static function registerAutoload()
+ {
$autoload = array('HTMLPurifier_Bootstrap', 'autoload');
- if ( ($funcs = spl_autoload_functions()) === false ) {
+ if (($funcs = spl_autoload_functions()) === false) {
spl_autoload_register($autoload);
} elseif (function_exists('spl_autoload_unregister')) {
- $compat = version_compare(PHP_VERSION, '5.1.2', '<=') &&
- version_compare(PHP_VERSION, '5.1.0', '>=');
- foreach ($funcs as $func) {
- if (is_array($func)) {
- // :TRICKY: There are some compatibility issues and some
- // places where we need to error out
- $reflector = new ReflectionMethod($func[0], $func[1]);
- if (!$reflector->isStatic()) {
- throw new Exception('
- HTML Purifier autoloader registrar is not compatible
- with non-static object methods due to PHP Bug #44144;
- Please do not use HTMLPurifier.autoload.php (or any
- file that includes this file); instead, place the code:
- spl_autoload_register(array(\'HTMLPurifier_Bootstrap\', \'autoload\'))
- after your own autoloaders.
- ');
+ if (version_compare(PHP_VERSION, '5.3.0', '>=')) {
+ // prepend flag exists, no need for shenanigans
+ spl_autoload_register($autoload, true, true);
+ } else {
+ $buggy = version_compare(PHP_VERSION, '5.2.11', '<');
+ $compat = version_compare(PHP_VERSION, '5.1.2', '<=') &&
+ version_compare(PHP_VERSION, '5.1.0', '>=');
+ foreach ($funcs as $func) {
+ if ($buggy && is_array($func)) {
+ // :TRICKY: There are some compatibility issues and some
+ // places where we need to error out
+ $reflector = new ReflectionMethod($func[0], $func[1]);
+ if (!$reflector->isStatic()) {
+ throw new Exception(
+ 'HTML Purifier autoloader registrar is not compatible
+ with non-static object methods due to PHP Bug #44144;
+ Please do not use HTMLPurifier.autoload.php (or any
+ file that includes this file); instead, place the code:
+ spl_autoload_register(array(\'HTMLPurifier_Bootstrap\', \'autoload\'))
+ after your own autoloaders.'
+ );
+ }
+ // Suprisingly, spl_autoload_register supports the
+ // Class::staticMethod callback format, although call_user_func doesn't
+ if ($compat) {
+ $func = implode('::', $func);
+ }
}
- // Suprisingly, spl_autoload_register supports the
- // Class::staticMethod callback format, although call_user_func doesn't
- if ($compat) $func = implode('::', $func);
+ spl_autoload_unregister($func);
+ }
+ spl_autoload_register($autoload);
+ foreach ($funcs as $func) {
+ spl_autoload_register($func);
}
- spl_autoload_unregister($func);
}
- spl_autoload_register($autoload);
- foreach ($funcs as $func) spl_autoload_register($func);
}
}
-
}
// vim: et sw=4 sts=4
diff --git a/library/HTMLPurifier/CSSDefinition.php b/library/HTMLPurifier/CSSDefinition.php
index 6a2e6f56d..0acdee2d9 100644
--- a/library/HTMLPurifier/CSSDefinition.php
+++ b/library/HTMLPurifier/CSSDefinition.php
@@ -11,35 +11,59 @@ class HTMLPurifier_CSSDefinition extends HTMLPurifier_Definition
/**
* Assoc array of attribute name to definition object.
+ * @type HTMLPurifier_AttrDef[]
*/
public $info = array();
/**
* Constructs the info array. The meat of this class.
+ * @param HTMLPurifier_Config $config
*/
- protected function doSetup($config) {
-
+ protected function doSetup($config)
+ {
$this->info['text-align'] = new HTMLPurifier_AttrDef_Enum(
- array('left', 'right', 'center', 'justify'), false);
+ array('left', 'right', 'center', 'justify'),
+ false
+ );
$border_style =
- $this->info['border-bottom-style'] =
- $this->info['border-right-style'] =
- $this->info['border-left-style'] =
- $this->info['border-top-style'] = new HTMLPurifier_AttrDef_Enum(
- array('none', 'hidden', 'dotted', 'dashed', 'solid', 'double',
- 'groove', 'ridge', 'inset', 'outset'), false);
+ $this->info['border-bottom-style'] =
+ $this->info['border-right-style'] =
+ $this->info['border-left-style'] =
+ $this->info['border-top-style'] = new HTMLPurifier_AttrDef_Enum(
+ array(
+ 'none',
+ 'hidden',
+ 'dotted',
+ 'dashed',
+ 'solid',
+ 'double',
+ 'groove',
+ 'ridge',
+ 'inset',
+ 'outset'
+ ),
+ false
+ );
$this->info['border-style'] = new HTMLPurifier_AttrDef_CSS_Multiple($border_style);
$this->info['clear'] = new HTMLPurifier_AttrDef_Enum(
- array('none', 'left', 'right', 'both'), false);
+ array('none', 'left', 'right', 'both'),
+ false
+ );
$this->info['float'] = new HTMLPurifier_AttrDef_Enum(
- array('none', 'left', 'right'), false);
+ array('none', 'left', 'right'),
+ false
+ );
$this->info['font-style'] = new HTMLPurifier_AttrDef_Enum(
- array('normal', 'italic', 'oblique'), false);
+ array('normal', 'italic', 'oblique'),
+ false
+ );
$this->info['font-variant'] = new HTMLPurifier_AttrDef_Enum(
- array('normal', 'small-caps'), false);
+ array('normal', 'small-caps'),
+ false
+ );
$uri_or_none = new HTMLPurifier_AttrDef_CSS_Composite(
array(
@@ -49,16 +73,31 @@ class HTMLPurifier_CSSDefinition extends HTMLPurifier_Definition
);
$this->info['list-style-position'] = new HTMLPurifier_AttrDef_Enum(
- array('inside', 'outside'), false);
+ array('inside', 'outside'),
+ false
+ );
$this->info['list-style-type'] = new HTMLPurifier_AttrDef_Enum(
- array('disc', 'circle', 'square', 'decimal', 'lower-roman',
- 'upper-roman', 'lower-alpha', 'upper-alpha', 'none'), false);
+ array(
+ 'disc',
+ 'circle',
+ 'square',
+ 'decimal',
+ 'lower-roman',
+ 'upper-roman',
+ 'lower-alpha',
+ 'upper-alpha',
+ 'none'
+ ),
+ false
+ );
$this->info['list-style-image'] = $uri_or_none;
$this->info['list-style'] = new HTMLPurifier_AttrDef_CSS_ListStyle($config);
$this->info['text-transform'] = new HTMLPurifier_AttrDef_Enum(
- array('capitalize', 'uppercase', 'lowercase', 'none'), false);
+ array('capitalize', 'uppercase', 'lowercase', 'none'),
+ false
+ );
$this->info['color'] = new HTMLPurifier_AttrDef_CSS_Color();
$this->info['background-image'] = $uri_or_none;
@@ -71,104 +110,137 @@ class HTMLPurifier_CSSDefinition extends HTMLPurifier_Definition
$this->info['background-position'] = new HTMLPurifier_AttrDef_CSS_BackgroundPosition();
$border_color =
- $this->info['border-top-color'] =
- $this->info['border-bottom-color'] =
- $this->info['border-left-color'] =
- $this->info['border-right-color'] =
- $this->info['background-color'] = new HTMLPurifier_AttrDef_CSS_Composite(array(
- new HTMLPurifier_AttrDef_Enum(array('transparent')),
- new HTMLPurifier_AttrDef_CSS_Color()
- ));
+ $this->info['border-top-color'] =
+ $this->info['border-bottom-color'] =
+ $this->info['border-left-color'] =
+ $this->info['border-right-color'] =
+ $this->info['background-color'] = new HTMLPurifier_AttrDef_CSS_Composite(
+ array(
+ new HTMLPurifier_AttrDef_Enum(array('transparent')),
+ new HTMLPurifier_AttrDef_CSS_Color()
+ )
+ );
$this->info['background'] = new HTMLPurifier_AttrDef_CSS_Background($config);
$this->info['border-color'] = new HTMLPurifier_AttrDef_CSS_Multiple($border_color);
$border_width =
- $this->info['border-top-width'] =
- $this->info['border-bottom-width'] =
- $this->info['border-left-width'] =
- $this->info['border-right-width'] = new HTMLPurifier_AttrDef_CSS_Composite(array(
- new HTMLPurifier_AttrDef_Enum(array('thin', 'medium', 'thick')),
- new HTMLPurifier_AttrDef_CSS_Length('0') //disallow negative
- ));
+ $this->info['border-top-width'] =
+ $this->info['border-bottom-width'] =
+ $this->info['border-left-width'] =
+ $this->info['border-right-width'] = new HTMLPurifier_AttrDef_CSS_Composite(
+ array(
+ new HTMLPurifier_AttrDef_Enum(array('thin', 'medium', 'thick')),
+ new HTMLPurifier_AttrDef_CSS_Length('0') //disallow negative
+ )
+ );
$this->info['border-width'] = new HTMLPurifier_AttrDef_CSS_Multiple($border_width);
- $this->info['letter-spacing'] = new HTMLPurifier_AttrDef_CSS_Composite(array(
- new HTMLPurifier_AttrDef_Enum(array('normal')),
- new HTMLPurifier_AttrDef_CSS_Length()
- ));
-
- $this->info['word-spacing'] = new HTMLPurifier_AttrDef_CSS_Composite(array(
- new HTMLPurifier_AttrDef_Enum(array('normal')),
- new HTMLPurifier_AttrDef_CSS_Length()
- ));
-
- $this->info['font-size'] = new HTMLPurifier_AttrDef_CSS_Composite(array(
- new HTMLPurifier_AttrDef_Enum(array('xx-small', 'x-small',
- 'small', 'medium', 'large', 'x-large', 'xx-large',
- 'larger', 'smaller')),
- new HTMLPurifier_AttrDef_CSS_Percentage(),
- new HTMLPurifier_AttrDef_CSS_Length()
- ));
-
- $this->info['line-height'] = new HTMLPurifier_AttrDef_CSS_Composite(array(
- new HTMLPurifier_AttrDef_Enum(array('normal')),
- new HTMLPurifier_AttrDef_CSS_Number(true), // no negatives
- new HTMLPurifier_AttrDef_CSS_Length('0'),
- new HTMLPurifier_AttrDef_CSS_Percentage(true)
- ));
+ $this->info['letter-spacing'] = new HTMLPurifier_AttrDef_CSS_Composite(
+ array(
+ new HTMLPurifier_AttrDef_Enum(array('normal')),
+ new HTMLPurifier_AttrDef_CSS_Length()
+ )
+ );
+
+ $this->info['word-spacing'] = new HTMLPurifier_AttrDef_CSS_Composite(
+ array(
+ new HTMLPurifier_AttrDef_Enum(array('normal')),
+ new HTMLPurifier_AttrDef_CSS_Length()
+ )
+ );
+
+ $this->info['font-size'] = new HTMLPurifier_AttrDef_CSS_Composite(
+ array(
+ new HTMLPurifier_AttrDef_Enum(
+ array(
+ 'xx-small',
+ 'x-small',
+ 'small',
+ 'medium',
+ 'large',
+ 'x-large',
+ 'xx-large',
+ 'larger',
+ 'smaller'
+ )
+ ),
+ new HTMLPurifier_AttrDef_CSS_Percentage(),
+ new HTMLPurifier_AttrDef_CSS_Length()
+ )
+ );
+
+ $this->info['line-height'] = new HTMLPurifier_AttrDef_CSS_Composite(
+ array(
+ new HTMLPurifier_AttrDef_Enum(array('normal')),
+ new HTMLPurifier_AttrDef_CSS_Number(true), // no negatives
+ new HTMLPurifier_AttrDef_CSS_Length('0'),
+ new HTMLPurifier_AttrDef_CSS_Percentage(true)
+ )
+ );
$margin =
- $this->info['margin-top'] =
- $this->info['margin-bottom'] =
- $this->info['margin-left'] =
- $this->info['margin-right'] = new HTMLPurifier_AttrDef_CSS_Composite(array(
- new HTMLPurifier_AttrDef_CSS_Length(),
- new HTMLPurifier_AttrDef_CSS_Percentage(),
- new HTMLPurifier_AttrDef_Enum(array('auto'))
- ));
+ $this->info['margin-top'] =
+ $this->info['margin-bottom'] =
+ $this->info['margin-left'] =
+ $this->info['margin-right'] = new HTMLPurifier_AttrDef_CSS_Composite(
+ array(
+ new HTMLPurifier_AttrDef_CSS_Length(),
+ new HTMLPurifier_AttrDef_CSS_Percentage(),
+ new HTMLPurifier_AttrDef_Enum(array('auto'))
+ )
+ );
$this->info['margin'] = new HTMLPurifier_AttrDef_CSS_Multiple($margin);
// non-negative
$padding =
- $this->info['padding-top'] =
- $this->info['padding-bottom'] =
- $this->info['padding-left'] =
- $this->info['padding-right'] = new HTMLPurifier_AttrDef_CSS_Composite(array(
- new HTMLPurifier_AttrDef_CSS_Length('0'),
- new HTMLPurifier_AttrDef_CSS_Percentage(true)
- ));
+ $this->info['padding-top'] =
+ $this->info['padding-bottom'] =
+ $this->info['padding-left'] =
+ $this->info['padding-right'] = new HTMLPurifier_AttrDef_CSS_Composite(
+ array(
+ new HTMLPurifier_AttrDef_CSS_Length('0'),
+ new HTMLPurifier_AttrDef_CSS_Percentage(true)
+ )
+ );
$this->info['padding'] = new HTMLPurifier_AttrDef_CSS_Multiple($padding);
- $this->info['text-indent'] = new HTMLPurifier_AttrDef_CSS_Composite(array(
- new HTMLPurifier_AttrDef_CSS_Length(),
- new HTMLPurifier_AttrDef_CSS_Percentage()
- ));
+ $this->info['text-indent'] = new HTMLPurifier_AttrDef_CSS_Composite(
+ array(
+ new HTMLPurifier_AttrDef_CSS_Length(),
+ new HTMLPurifier_AttrDef_CSS_Percentage()
+ )
+ );
- $trusted_wh = new HTMLPurifier_AttrDef_CSS_Composite(array(
- new HTMLPurifier_AttrDef_CSS_Length('0'),
- new HTMLPurifier_AttrDef_CSS_Percentage(true),
- new HTMLPurifier_AttrDef_Enum(array('auto'))
- ));
+ $trusted_wh = new HTMLPurifier_AttrDef_CSS_Composite(
+ array(
+ new HTMLPurifier_AttrDef_CSS_Length('0'),
+ new HTMLPurifier_AttrDef_CSS_Percentage(true),
+ new HTMLPurifier_AttrDef_Enum(array('auto'))
+ )
+ );
$max = $config->get('CSS.MaxImgLength');
$this->info['width'] =
$this->info['height'] =
$max === null ?
- $trusted_wh :
- new HTMLPurifier_AttrDef_Switch('img',
- // For img tags:
- new HTMLPurifier_AttrDef_CSS_Composite(array(
- new HTMLPurifier_AttrDef_CSS_Length('0', $max),
- new HTMLPurifier_AttrDef_Enum(array('auto'))
- )),
- // For everyone else:
- $trusted_wh
- );
+ $trusted_wh :
+ new HTMLPurifier_AttrDef_Switch(
+ 'img',
+ // For img tags:
+ new HTMLPurifier_AttrDef_CSS_Composite(
+ array(
+ new HTMLPurifier_AttrDef_CSS_Length('0', $max),
+ new HTMLPurifier_AttrDef_Enum(array('auto'))
+ )
+ ),
+ // For everyone else:
+ $trusted_wh
+ );
$this->info['text-decoration'] = new HTMLPurifier_AttrDef_CSS_TextDecoration();
@@ -176,8 +248,23 @@ class HTMLPurifier_CSSDefinition extends HTMLPurifier_Definition
// this could use specialized code
$this->info['font-weight'] = new HTMLPurifier_AttrDef_Enum(
- array('normal', 'bold', 'bolder', 'lighter', '100', '200', '300',
- '400', '500', '600', '700', '800', '900'), false);
+ array(
+ 'normal',
+ 'bold',
+ 'bolder',
+ 'lighter',
+ '100',
+ '200',
+ '300',
+ '400',
+ '500',
+ '600',
+ '700',
+ '800',
+ '900'
+ ),
+ false
+ );
// MUST be called after other font properties, as it references
// a CSSDefinition object
@@ -190,26 +277,44 @@ class HTMLPurifier_CSSDefinition extends HTMLPurifier_Definition
$this->info['border-left'] =
$this->info['border-right'] = new HTMLPurifier_AttrDef_CSS_Border($config);
- $this->info['border-collapse'] = new HTMLPurifier_AttrDef_Enum(array(
- 'collapse', 'separate'));
+ $this->info['border-collapse'] = new HTMLPurifier_AttrDef_Enum(
+ array('collapse', 'separate')
+ );
- $this->info['caption-side'] = new HTMLPurifier_AttrDef_Enum(array(
- 'top', 'bottom'));
+ $this->info['caption-side'] = new HTMLPurifier_AttrDef_Enum(
+ array('top', 'bottom')
+ );
- $this->info['table-layout'] = new HTMLPurifier_AttrDef_Enum(array(
- 'auto', 'fixed'));
+ $this->info['table-layout'] = new HTMLPurifier_AttrDef_Enum(
+ array('auto', 'fixed')
+ );
- $this->info['vertical-align'] = new HTMLPurifier_AttrDef_CSS_Composite(array(
- new HTMLPurifier_AttrDef_Enum(array('baseline', 'sub', 'super',
- 'top', 'text-top', 'middle', 'bottom', 'text-bottom')),
- new HTMLPurifier_AttrDef_CSS_Length(),
- new HTMLPurifier_AttrDef_CSS_Percentage()
- ));
+ $this->info['vertical-align'] = new HTMLPurifier_AttrDef_CSS_Composite(
+ array(
+ new HTMLPurifier_AttrDef_Enum(
+ array(
+ 'baseline',
+ 'sub',
+ 'super',
+ 'top',
+ 'text-top',
+ 'middle',
+ 'bottom',
+ 'text-bottom'
+ )
+ ),
+ new HTMLPurifier_AttrDef_CSS_Length(),
+ new HTMLPurifier_AttrDef_CSS_Percentage()
+ )
+ );
$this->info['border-spacing'] = new HTMLPurifier_AttrDef_CSS_Multiple(new HTMLPurifier_AttrDef_CSS_Length(), 2);
- // partial support
- $this->info['white-space'] = new HTMLPurifier_AttrDef_Enum(array('nowrap'));
+ // These CSS properties don't work on many browsers, but we live
+ // in THE FUTURE!
+ $this->info['white-space'] = new HTMLPurifier_AttrDef_Enum(
+ array('nowrap', 'normal', 'pre', 'pre-wrap', 'pre-line')
+ );
if ($config->get('CSS.Proprietary')) {
$this->doSetupProprietary($config);
@@ -219,6 +324,10 @@ class HTMLPurifier_CSSDefinition extends HTMLPurifier_Definition
$this->doSetupTricky($config);
}
+ if ($config->get('CSS.Trusted')) {
+ $this->doSetupTrusted($config);
+ }
+
$allow_important = $config->get('CSS.AllowImportant');
// wrap all attr-defs with decorator that handles !important
foreach ($this->info as $k => $v) {
@@ -228,64 +337,137 @@ class HTMLPurifier_CSSDefinition extends HTMLPurifier_Definition
$this->setupConfigStuff($config);
}
- protected function doSetupProprietary($config) {
+ /**
+ * @param HTMLPurifier_Config $config
+ */
+ protected function doSetupProprietary($config)
+ {
// Internet Explorer only scrollbar colors
- $this->info['scrollbar-arrow-color'] = new HTMLPurifier_AttrDef_CSS_Color();
- $this->info['scrollbar-base-color'] = new HTMLPurifier_AttrDef_CSS_Color();
- $this->info['scrollbar-darkshadow-color'] = new HTMLPurifier_AttrDef_CSS_Color();
- $this->info['scrollbar-face-color'] = new HTMLPurifier_AttrDef_CSS_Color();
- $this->info['scrollbar-highlight-color'] = new HTMLPurifier_AttrDef_CSS_Color();
- $this->info['scrollbar-shadow-color'] = new HTMLPurifier_AttrDef_CSS_Color();
+ $this->info['scrollbar-arrow-color'] = new HTMLPurifier_AttrDef_CSS_Color();
+ $this->info['scrollbar-base-color'] = new HTMLPurifier_AttrDef_CSS_Color();
+ $this->info['scrollbar-darkshadow-color'] = new HTMLPurifier_AttrDef_CSS_Color();
+ $this->info['scrollbar-face-color'] = new HTMLPurifier_AttrDef_CSS_Color();
+ $this->info['scrollbar-highlight-color'] = new HTMLPurifier_AttrDef_CSS_Color();
+ $this->info['scrollbar-shadow-color'] = new HTMLPurifier_AttrDef_CSS_Color();
// technically not proprietary, but CSS3, and no one supports it
- $this->info['opacity'] = new HTMLPurifier_AttrDef_CSS_AlphaValue();
- $this->info['-moz-opacity'] = new HTMLPurifier_AttrDef_CSS_AlphaValue();
- $this->info['-khtml-opacity'] = new HTMLPurifier_AttrDef_CSS_AlphaValue();
+ $this->info['opacity'] = new HTMLPurifier_AttrDef_CSS_AlphaValue();
+ $this->info['-moz-opacity'] = new HTMLPurifier_AttrDef_CSS_AlphaValue();
+ $this->info['-khtml-opacity'] = new HTMLPurifier_AttrDef_CSS_AlphaValue();
// only opacity, for now
$this->info['filter'] = new HTMLPurifier_AttrDef_CSS_Filter();
+ // more CSS3
+ $this->info['page-break-after'] =
+ $this->info['page-break-before'] = new HTMLPurifier_AttrDef_Enum(
+ array(
+ 'auto',
+ 'always',
+ 'avoid',
+ 'left',
+ 'right'
+ )
+ );
+ $this->info['page-break-inside'] = new HTMLPurifier_AttrDef_Enum(array('auto', 'avoid'));
+
}
- protected function doSetupTricky($config) {
- $this->info['display'] = new HTMLPurifier_AttrDef_Enum(array(
- 'inline', 'block', 'list-item', 'run-in', 'compact',
- 'marker', 'table', 'inline-table', 'table-row-group',
- 'table-header-group', 'table-footer-group', 'table-row',
- 'table-column-group', 'table-column', 'table-cell', 'table-caption', 'none'
- ));
- $this->info['visibility'] = new HTMLPurifier_AttrDef_Enum(array(
- 'visible', 'hidden', 'collapse'
- ));
+ /**
+ * @param HTMLPurifier_Config $config
+ */
+ protected function doSetupTricky($config)
+ {
+ $this->info['display'] = new HTMLPurifier_AttrDef_Enum(
+ array(
+ 'inline',
+ 'block',
+ 'list-item',
+ 'run-in',
+ 'compact',
+ 'marker',
+ 'table',
+ 'inline-block',
+ 'inline-table',
+ 'table-row-group',
+ 'table-header-group',
+ 'table-footer-group',
+ 'table-row',
+ 'table-column-group',
+ 'table-column',
+ 'table-cell',
+ 'table-caption',
+ 'none'
+ )
+ );
+ $this->info['visibility'] = new HTMLPurifier_AttrDef_Enum(
+ array('visible', 'hidden', 'collapse')
+ );
$this->info['overflow'] = new HTMLPurifier_AttrDef_Enum(array('visible', 'hidden', 'auto', 'scroll'));
}
+ /**
+ * @param HTMLPurifier_Config $config
+ */
+ protected function doSetupTrusted($config)
+ {
+ $this->info['position'] = new HTMLPurifier_AttrDef_Enum(
+ array('static', 'relative', 'absolute', 'fixed')
+ );
+ $this->info['top'] =
+ $this->info['left'] =
+ $this->info['right'] =
+ $this->info['bottom'] = new HTMLPurifier_AttrDef_CSS_Composite(
+ array(
+ new HTMLPurifier_AttrDef_CSS_Length(),
+ new HTMLPurifier_AttrDef_CSS_Percentage(),
+ new HTMLPurifier_AttrDef_Enum(array('auto')),
+ )
+ );
+ $this->info['z-index'] = new HTMLPurifier_AttrDef_CSS_Composite(
+ array(
+ new HTMLPurifier_AttrDef_Integer(),
+ new HTMLPurifier_AttrDef_Enum(array('auto')),
+ )
+ );
+ }
/**
* Performs extra config-based processing. Based off of
* HTMLPurifier_HTMLDefinition.
+ * @param HTMLPurifier_Config $config
* @todo Refactor duplicate elements into common class (probably using
* composition, not inheritance).
*/
- protected function setupConfigStuff($config) {
-
+ protected function setupConfigStuff($config)
+ {
// setup allowed elements
- $support = "(for information on implementing this, see the ".
- "support forums) ";
- $allowed_attributes = $config->get('CSS.AllowedProperties');
- if ($allowed_attributes !== null) {
+ $support = "(for information on implementing this, see the " .
+ "support forums) ";
+ $allowed_properties = $config->get('CSS.AllowedProperties');
+ if ($allowed_properties !== null) {
foreach ($this->info as $name => $d) {
- if(!isset($allowed_attributes[$name])) unset($this->info[$name]);
- unset($allowed_attributes[$name]);
+ if (!isset($allowed_properties[$name])) {
+ unset($this->info[$name]);
+ }
+ unset($allowed_properties[$name]);
}
// emit errors
- foreach ($allowed_attributes as $name => $d) {
+ foreach ($allowed_properties as $name => $d) {
// :TODO: Is this htmlspecialchars() call really necessary?
$name = htmlspecialchars($name);
trigger_error("Style attribute '$name' is not supported $support", E_USER_WARNING);
}
}
+ $forbidden_properties = $config->get('CSS.ForbiddenProperties');
+ if ($forbidden_properties !== null) {
+ foreach ($this->info as $name => $d) {
+ if (isset($forbidden_properties[$name])) {
+ unset($this->info[$name]);
+ }
+ }
+ }
}
}
diff --git a/library/HTMLPurifier/ChildDef.php b/library/HTMLPurifier/ChildDef.php
index c5d5216da..8eb17b82e 100644
--- a/library/HTMLPurifier/ChildDef.php
+++ b/library/HTMLPurifier/ChildDef.php
@@ -1,48 +1,52 @@
<?php
/**
- * Defines allowed child nodes and validates tokens against it.
+ * Defines allowed child nodes and validates nodes against it.
*/
abstract class HTMLPurifier_ChildDef
{
/**
* Type of child definition, usually right-most part of class name lowercase.
* Used occasionally in terms of context.
+ * @type string
*/
public $type;
/**
- * Bool that indicates whether or not an empty array of children is okay
+ * Indicates whether or not an empty array of children is okay.
*
* This is necessary for redundant checking when changes affecting
* a child node may cause a parent node to now be disallowed.
+ * @type bool
*/
public $allow_empty;
/**
- * Lookup array of all elements that this definition could possibly allow
+ * Lookup array of all elements that this definition could possibly allow.
+ * @type array
*/
public $elements = array();
/**
* Get lookup of tag names that should not close this element automatically.
* All other elements will do so.
+ * @param HTMLPurifier_Config $config HTMLPurifier_Config object
+ * @return array
*/
- public function getAllowedElements($config) {
+ public function getAllowedElements($config)
+ {
return $this->elements;
}
/**
* Validates nodes according to definition and returns modification.
*
- * @param $tokens_of_children Array of HTMLPurifier_Token
- * @param $config HTMLPurifier_Config object
- * @param $context HTMLPurifier_Context object
- * @return bool true to leave nodes as is
- * @return bool false to remove parent node
- * @return array of replacement child tokens
+ * @param HTMLPurifier_Node[] $children Array of HTMLPurifier_Node
+ * @param HTMLPurifier_Config $config HTMLPurifier_Config object
+ * @param HTMLPurifier_Context $context HTMLPurifier_Context object
+ * @return bool|array true to leave nodes as is, false to remove parent node, array of replacement children
*/
- abstract public function validateChildren($tokens_of_children, $config, $context);
+ abstract public function validateChildren($children, $config, $context);
}
// vim: et sw=4 sts=4
diff --git a/library/HTMLPurifier/ChildDef/Chameleon.php b/library/HTMLPurifier/ChildDef/Chameleon.php
index 15c364ee3..7439be26b 100644
--- a/library/HTMLPurifier/ChildDef/Chameleon.php
+++ b/library/HTMLPurifier/ChildDef/Chameleon.php
@@ -14,33 +14,52 @@ class HTMLPurifier_ChildDef_Chameleon extends HTMLPurifier_ChildDef
/**
* Instance of the definition object to use when inline. Usually stricter.
+ * @type HTMLPurifier_ChildDef_Optional
*/
public $inline;
/**
* Instance of the definition object to use when block.
+ * @type HTMLPurifier_ChildDef_Optional
*/
public $block;
+ /**
+ * @type string
+ */
public $type = 'chameleon';
/**
- * @param $inline List of elements to allow when inline.
- * @param $block List of elements to allow when block.
+ * @param array $inline List of elements to allow when inline.
+ * @param array $block List of elements to allow when block.
*/
- public function __construct($inline, $block) {
+ public function __construct($inline, $block)
+ {
$this->inline = new HTMLPurifier_ChildDef_Optional($inline);
- $this->block = new HTMLPurifier_ChildDef_Optional($block);
+ $this->block = new HTMLPurifier_ChildDef_Optional($block);
$this->elements = $this->block->elements;
}
- public function validateChildren($tokens_of_children, $config, $context) {
+ /**
+ * @param HTMLPurifier_Node[] $children
+ * @param HTMLPurifier_Config $config
+ * @param HTMLPurifier_Context $context
+ * @return bool
+ */
+ public function validateChildren($children, $config, $context)
+ {
if ($context->get('IsInline') === false) {
return $this->block->validateChildren(
- $tokens_of_children, $config, $context);
+ $children,
+ $config,
+ $context
+ );
} else {
return $this->inline->validateChildren(
- $tokens_of_children, $config, $context);
+ $children,
+ $config,
+ $context
+ );
}
}
}
diff --git a/library/HTMLPurifier/ChildDef/Custom.php b/library/HTMLPurifier/ChildDef/Custom.php
index b68047b4b..128132e96 100644
--- a/library/HTMLPurifier/ChildDef/Custom.php
+++ b/library/HTMLPurifier/ChildDef/Custom.php
@@ -8,28 +8,42 @@
*/
class HTMLPurifier_ChildDef_Custom extends HTMLPurifier_ChildDef
{
+ /**
+ * @type string
+ */
public $type = 'custom';
+
+ /**
+ * @type bool
+ */
public $allow_empty = false;
+
/**
- * Allowed child pattern as defined by the DTD
+ * Allowed child pattern as defined by the DTD.
+ * @type string
*/
public $dtd_regex;
+
/**
- * PCRE regex derived from $dtd_regex
- * @private
+ * PCRE regex derived from $dtd_regex.
+ * @type string
*/
private $_pcre_regex;
+
/**
* @param $dtd_regex Allowed child pattern from the DTD
*/
- public function __construct($dtd_regex) {
+ public function __construct($dtd_regex)
+ {
$this->dtd_regex = $dtd_regex;
$this->_compileRegex();
}
+
/**
* Compiles the PCRE regex from a DTD regex ($dtd_regex to $_pcre_regex)
*/
- protected function _compileRegex() {
+ protected function _compileRegex()
+ {
$raw = str_replace(' ', '', $this->dtd_regex);
if ($raw{0} != '(') {
$raw = "($raw)";
@@ -57,33 +71,31 @@ class HTMLPurifier_ChildDef_Custom extends HTMLPurifier_ChildDef
$this->_pcre_regex = $reg;
}
- public function validateChildren($tokens_of_children, $config, $context) {
+
+ /**
+ * @param HTMLPurifier_Node[] $children
+ * @param HTMLPurifier_Config $config
+ * @param HTMLPurifier_Context $context
+ * @return bool
+ */
+ public function validateChildren($children, $config, $context)
+ {
$list_of_children = '';
$nesting = 0; // depth into the nest
- foreach ($tokens_of_children as $token) {
- if (!empty($token->is_whitespace)) continue;
-
- $is_child = ($nesting == 0); // direct
-
- if ($token instanceof HTMLPurifier_Token_Start) {
- $nesting++;
- } elseif ($token instanceof HTMLPurifier_Token_End) {
- $nesting--;
- }
-
- if ($is_child) {
- $list_of_children .= $token->name . ',';
+ foreach ($children as $node) {
+ if (!empty($node->is_whitespace)) {
+ continue;
}
+ $list_of_children .= $node->name . ',';
}
// add leading comma to deal with stray comma declarations
$list_of_children = ',' . rtrim($list_of_children, ',');
$okay =
preg_match(
- '/^,?'.$this->_pcre_regex.'$/',
+ '/^,?' . $this->_pcre_regex . '$/',
$list_of_children
);
-
- return (bool) $okay;
+ return (bool)$okay;
}
}
diff --git a/library/HTMLPurifier/ChildDef/Empty.php b/library/HTMLPurifier/ChildDef/Empty.php
index 13171f665..a8a6cbdd2 100644
--- a/library/HTMLPurifier/ChildDef/Empty.php
+++ b/library/HTMLPurifier/ChildDef/Empty.php
@@ -9,10 +9,28 @@
*/
class HTMLPurifier_ChildDef_Empty extends HTMLPurifier_ChildDef
{
+ /**
+ * @type bool
+ */
public $allow_empty = true;
+
+ /**
+ * @type string
+ */
public $type = 'empty';
- public function __construct() {}
- public function validateChildren($tokens_of_children, $config, $context) {
+
+ public function __construct()
+ {
+ }
+
+ /**
+ * @param HTMLPurifier_Node[] $children
+ * @param HTMLPurifier_Config $config
+ * @param HTMLPurifier_Context $context
+ * @return array
+ */
+ public function validateChildren($children, $config, $context)
+ {
return array();
}
}
diff --git a/library/HTMLPurifier/ChildDef/List.php b/library/HTMLPurifier/ChildDef/List.php
new file mode 100644
index 000000000..891b9f6f5
--- /dev/null
+++ b/library/HTMLPurifier/ChildDef/List.php
@@ -0,0 +1,86 @@
+<?php
+
+/**
+ * Definition for list containers ul and ol.
+ *
+ * What does this do? The big thing is to handle ol/ul at the top
+ * level of list nodes, which should be handled specially by /folding/
+ * them into the previous list node. We generally shouldn't ever
+ * see other disallowed elements, because the autoclose behavior
+ * in MakeWellFormed handles it.
+ */
+class HTMLPurifier_ChildDef_List extends HTMLPurifier_ChildDef
+{
+ /**
+ * @type string
+ */
+ public $type = 'list';
+ /**
+ * @type array
+ */
+ // lying a little bit, so that we can handle ul and ol ourselves
+ // XXX: This whole business with 'wrap' is all a bit unsatisfactory
+ public $elements = array('li' => true, 'ul' => true, 'ol' => true);
+
+ /**
+ * @param array $children
+ * @param HTMLPurifier_Config $config
+ * @param HTMLPurifier_Context $context
+ * @return array
+ */
+ public function validateChildren($children, $config, $context)
+ {
+ // Flag for subclasses
+ $this->whitespace = false;
+
+ // if there are no tokens, delete parent node
+ if (empty($children)) {
+ return false;
+ }
+
+ // the new set of children
+ $result = array();
+
+ // a little sanity check to make sure it's not ALL whitespace
+ $all_whitespace = true;
+
+ $current_li = false;
+
+ foreach ($children as $node) {
+ if (!empty($node->is_whitespace)) {
+ $result[] = $node;
+ continue;
+ }
+ $all_whitespace = false; // phew, we're not talking about whitespace
+
+ if ($node->name === 'li') {
+ // good
+ $current_li = $node;
+ $result[] = $node;
+ } else {
+ // we want to tuck this into the previous li
+ // Invariant: we expect the node to be ol/ul
+ // ToDo: Make this more robust in the case of not ol/ul
+ // by distinguishing between existing li and li created
+ // to handle non-list elements; non-list elements should
+ // not be appended to an existing li; only li created
+ // for non-list. This distinction is not currently made.
+ if ($current_li === false) {
+ $current_li = new HTMLPurifier_Node_Element('li');
+ $result[] = $current_li;
+ }
+ $current_li->children[] = $node;
+ $current_li->empty = false; // XXX fascinating! Check for this error elsewhere ToDo
+ }
+ }
+ if (empty($result)) {
+ return false;
+ }
+ if ($all_whitespace) {
+ return false;
+ }
+ return $result;
+ }
+}
+
+// vim: et sw=4 sts=4
diff --git a/library/HTMLPurifier/ChildDef/Optional.php b/library/HTMLPurifier/ChildDef/Optional.php
index 32bcb9898..b9468063b 100644
--- a/library/HTMLPurifier/ChildDef/Optional.php
+++ b/library/HTMLPurifier/ChildDef/Optional.php
@@ -9,15 +9,34 @@
*/
class HTMLPurifier_ChildDef_Optional extends HTMLPurifier_ChildDef_Required
{
+ /**
+ * @type bool
+ */
public $allow_empty = true;
+
+ /**
+ * @type string
+ */
public $type = 'optional';
- public function validateChildren($tokens_of_children, $config, $context) {
- $result = parent::validateChildren($tokens_of_children, $config, $context);
- // we assume that $tokens_of_children is not modified
+
+ /**
+ * @param array $children
+ * @param HTMLPurifier_Config $config
+ * @param HTMLPurifier_Context $context
+ * @return array
+ */
+ public function validateChildren($children, $config, $context)
+ {
+ $result = parent::validateChildren($children, $config, $context);
+ // we assume that $children is not modified
if ($result === false) {
- if (empty($tokens_of_children)) return true;
- elseif ($this->whitespace) return $tokens_of_children;
- else return array();
+ if (empty($children)) {
+ return true;
+ } elseif ($this->whitespace) {
+ return $children;
+ } else {
+ return array();
+ }
}
return $result;
}
diff --git a/library/HTMLPurifier/ChildDef/Required.php b/library/HTMLPurifier/ChildDef/Required.php
index 4889f249b..0d1c8f5f3 100644
--- a/library/HTMLPurifier/ChildDef/Required.php
+++ b/library/HTMLPurifier/ChildDef/Required.php
@@ -7,17 +7,21 @@ class HTMLPurifier_ChildDef_Required extends HTMLPurifier_ChildDef
{
/**
* Lookup table of allowed elements.
- * @public
+ * @type array
*/
public $elements = array();
+
/**
* Whether or not the last passed node was all whitespace.
+ * @type bool
*/
protected $whitespace = false;
+
/**
- * @param $elements List of allowed element names (lowercase).
+ * @param array|string $elements List of allowed element names (lowercase).
*/
- public function __construct($elements) {
+ public function __construct($elements)
+ {
if (is_string($elements)) {
$elements = str_replace(' ', '', $elements);
$elements = explode('|', $elements);
@@ -27,29 +31,43 @@ class HTMLPurifier_ChildDef_Required extends HTMLPurifier_ChildDef
$elements = array_flip($elements);
foreach ($elements as $i => $x) {
$elements[$i] = true;
- if (empty($i)) unset($elements[$i]); // remove blank
+ if (empty($i)) {
+ unset($elements[$i]);
+ } // remove blank
}
}
$this->elements = $elements;
}
+
+ /**
+ * @type bool
+ */
public $allow_empty = false;
+
+ /**
+ * @type string
+ */
public $type = 'required';
- public function validateChildren($tokens_of_children, $config, $context) {
+
+ /**
+ * @param array $children
+ * @param HTMLPurifier_Config $config
+ * @param HTMLPurifier_Context $context
+ * @return array
+ */
+ public function validateChildren($children, $config, $context)
+ {
// Flag for subclasses
$this->whitespace = false;
// if there are no tokens, delete parent node
- if (empty($tokens_of_children)) return false;
+ if (empty($children)) {
+ return false;
+ }
// the new set of children
$result = array();
- // current depth into the nest
- $nesting = 0;
-
- // whether or not we're deleting a node
- $is_deleting = false;
-
// whether or not parsed character data is allowed
// this controls whether or not we silently drop a tag
// or generate escaped HTML from it
@@ -58,58 +76,41 @@ class HTMLPurifier_ChildDef_Required extends HTMLPurifier_ChildDef
// a little sanity check to make sure it's not ALL whitespace
$all_whitespace = true;
- // some configuration
- $escape_invalid_children = $config->get('Core.EscapeInvalidChildren');
-
- // generator
- $gen = new HTMLPurifier_Generator($config, $context);
-
- foreach ($tokens_of_children as $token) {
- if (!empty($token->is_whitespace)) {
- $result[] = $token;
+ $stack = array_reverse($children);
+ while (!empty($stack)) {
+ $node = array_pop($stack);
+ if (!empty($node->is_whitespace)) {
+ $result[] = $node;
continue;
}
$all_whitespace = false; // phew, we're not talking about whitespace
- $is_child = ($nesting == 0);
-
- if ($token instanceof HTMLPurifier_Token_Start) {
- $nesting++;
- } elseif ($token instanceof HTMLPurifier_Token_End) {
- $nesting--;
- }
-
- if ($is_child) {
- $is_deleting = false;
- if (!isset($this->elements[$token->name])) {
- $is_deleting = true;
- if ($pcdata_allowed && $token instanceof HTMLPurifier_Token_Text) {
- $result[] = $token;
- } elseif ($pcdata_allowed && $escape_invalid_children) {
- $result[] = new HTMLPurifier_Token_Text(
- $gen->generateFromToken($token)
- );
+ if (!isset($this->elements[$node->name])) {
+ // special case text
+ // XXX One of these ought to be redundant or something
+ if ($pcdata_allowed && $node instanceof HTMLPurifier_Node_Text) {
+ $result[] = $node;
+ continue;
+ }
+ // spill the child contents in
+ // ToDo: Make configurable
+ if ($node instanceof HTMLPurifier_Node_Element) {
+ for ($i = count($node->children) - 1; $i >= 0; $i--) {
+ $stack[] = $node->children[$i];
}
continue;
}
+ continue;
}
- if (!$is_deleting || ($pcdata_allowed && $token instanceof HTMLPurifier_Token_Text)) {
- $result[] = $token;
- } elseif ($pcdata_allowed && $escape_invalid_children) {
- $result[] =
- new HTMLPurifier_Token_Text(
- $gen->generateFromToken($token)
- );
- } else {
- // drop silently
- }
+ $result[] = $node;
+ }
+ if (empty($result)) {
+ return false;
}
- if (empty($result)) return false;
if ($all_whitespace) {
$this->whitespace = true;
return false;
}
- if ($tokens_of_children == $result) return true;
return $result;
}
}
diff --git a/library/HTMLPurifier/ChildDef/StrictBlockquote.php b/library/HTMLPurifier/ChildDef/StrictBlockquote.php
index dfae8a6e5..3270a46e1 100644
--- a/library/HTMLPurifier/ChildDef/StrictBlockquote.php
+++ b/library/HTMLPurifier/ChildDef/StrictBlockquote.php
@@ -5,75 +5,97 @@
*/
class HTMLPurifier_ChildDef_StrictBlockquote extends HTMLPurifier_ChildDef_Required
{
+ /**
+ * @type array
+ */
protected $real_elements;
+
+ /**
+ * @type array
+ */
protected $fake_elements;
+
+ /**
+ * @type bool
+ */
public $allow_empty = true;
+
+ /**
+ * @type string
+ */
public $type = 'strictblockquote';
+
+ /**
+ * @type bool
+ */
protected $init = false;
/**
+ * @param HTMLPurifier_Config $config
+ * @return array
* @note We don't want MakeWellFormed to auto-close inline elements since
* they might be allowed.
*/
- public function getAllowedElements($config) {
+ public function getAllowedElements($config)
+ {
$this->init($config);
return $this->fake_elements;
}
- public function validateChildren($tokens_of_children, $config, $context) {
-
+ /**
+ * @param array $children
+ * @param HTMLPurifier_Config $config
+ * @param HTMLPurifier_Context $context
+ * @return array
+ */
+ public function validateChildren($children, $config, $context)
+ {
$this->init($config);
// trick the parent class into thinking it allows more
$this->elements = $this->fake_elements;
- $result = parent::validateChildren($tokens_of_children, $config, $context);
+ $result = parent::validateChildren($children, $config, $context);
$this->elements = $this->real_elements;
- if ($result === false) return array();
- if ($result === true) $result = $tokens_of_children;
+ if ($result === false) {
+ return array();
+ }
+ if ($result === true) {
+ $result = $children;
+ }
$def = $config->getHTMLDefinition();
- $block_wrap_start = new HTMLPurifier_Token_Start($def->info_block_wrapper);
- $block_wrap_end = new HTMLPurifier_Token_End( $def->info_block_wrapper);
- $is_inline = false;
- $depth = 0;
+ $block_wrap_name = $def->info_block_wrapper;
+ $block_wrap = false;
$ret = array();
- // assuming that there are no comment tokens
- foreach ($result as $i => $token) {
- $token = $result[$i];
- // ifs are nested for readability
- if (!$is_inline) {
- if (!$depth) {
- if (
- ($token instanceof HTMLPurifier_Token_Text && !$token->is_whitespace) ||
- (!$token instanceof HTMLPurifier_Token_Text && !isset($this->elements[$token->name]))
- ) {
- $is_inline = true;
- $ret[] = $block_wrap_start;
- }
+ foreach ($result as $node) {
+ if ($block_wrap === false) {
+ if (($node instanceof HTMLPurifier_Node_Text && !$node->is_whitespace) ||
+ ($node instanceof HTMLPurifier_Node_Element && !isset($this->elements[$node->name]))) {
+ $block_wrap = new HTMLPurifier_Node_Element($def->info_block_wrapper);
+ $ret[] = $block_wrap;
}
} else {
- if (!$depth) {
- // starting tokens have been inline text / empty
- if ($token instanceof HTMLPurifier_Token_Start || $token instanceof HTMLPurifier_Token_Empty) {
- if (isset($this->elements[$token->name])) {
- // ended
- $ret[] = $block_wrap_end;
- $is_inline = false;
- }
- }
+ if ($node instanceof HTMLPurifier_Node_Element && isset($this->elements[$node->name])) {
+ $block_wrap = false;
+
}
}
- $ret[] = $token;
- if ($token instanceof HTMLPurifier_Token_Start) $depth++;
- if ($token instanceof HTMLPurifier_Token_End) $depth--;
+ if ($block_wrap) {
+ $block_wrap->children[] = $node;
+ } else {
+ $ret[] = $node;
+ }
}
- if ($is_inline) $ret[] = $block_wrap_end;
return $ret;
}
- private function init($config) {
+ /**
+ * @param HTMLPurifier_Config $config
+ */
+ private function init($config)
+ {
if (!$this->init) {
$def = $config->getHTMLDefinition();
// allow all inline elements
diff --git a/library/HTMLPurifier/ChildDef/Table.php b/library/HTMLPurifier/ChildDef/Table.php
index 34f0227dd..3e4a0f218 100644
--- a/library/HTMLPurifier/ChildDef/Table.php
+++ b/library/HTMLPurifier/ChildDef/Table.php
@@ -1,140 +1,222 @@
<?php
/**
- * Definition for tables
+ * Definition for tables. The general idea is to extract out all of the
+ * essential bits, and then reconstruct it later.
+ *
+ * This is a bit confusing, because the DTDs and the W3C
+ * validators seem to disagree on the appropriate definition. The
+ * DTD claims:
+ *
+ * (CAPTION?, (COL*|COLGROUP*), THEAD?, TFOOT?, TBODY+)
+ *
+ * But actually, the HTML4 spec then has this to say:
+ *
+ * The TBODY start tag is always required except when the table
+ * contains only one table body and no table head or foot sections.
+ * The TBODY end tag may always be safely omitted.
+ *
+ * So the DTD is kind of wrong. The validator is, unfortunately, kind
+ * of on crack.
+ *
+ * The definition changed again in XHTML1.1; and in my opinion, this
+ * formulation makes the most sense.
+ *
+ * caption?, ( col* | colgroup* ), (( thead?, tfoot?, tbody+ ) | ( tr+ ))
+ *
+ * Essentially, we have two modes: thead/tfoot/tbody mode, and tr mode.
+ * If we encounter a thead, tfoot or tbody, we are placed in the former
+ * mode, and we *must* wrap any stray tr segments with a tbody. But if
+ * we don't run into any of them, just have tr tags is OK.
*/
class HTMLPurifier_ChildDef_Table extends HTMLPurifier_ChildDef
{
+ /**
+ * @type bool
+ */
public $allow_empty = false;
+
+ /**
+ * @type string
+ */
public $type = 'table';
- public $elements = array('tr' => true, 'tbody' => true, 'thead' => true,
- 'tfoot' => true, 'caption' => true, 'colgroup' => true, 'col' => true);
- public function __construct() {}
- public function validateChildren($tokens_of_children, $config, $context) {
- if (empty($tokens_of_children)) return false;
- // this ensures that the loop gets run one last time before closing
- // up. It's a little bit of a hack, but it works! Just make sure you
- // get rid of the token later.
- $tokens_of_children[] = false;
+ /**
+ * @type array
+ */
+ public $elements = array(
+ 'tr' => true,
+ 'tbody' => true,
+ 'thead' => true,
+ 'tfoot' => true,
+ 'caption' => true,
+ 'colgroup' => true,
+ 'col' => true
+ );
+
+ public function __construct()
+ {
+ }
+
+ /**
+ * @param array $children
+ * @param HTMLPurifier_Config $config
+ * @param HTMLPurifier_Context $context
+ * @return array
+ */
+ public function validateChildren($children, $config, $context)
+ {
+ if (empty($children)) {
+ return false;
+ }
// only one of these elements is allowed in a table
$caption = false;
- $thead = false;
- $tfoot = false;
+ $thead = false;
+ $tfoot = false;
+
+ // whitespace
+ $initial_ws = array();
+ $after_caption_ws = array();
+ $after_thead_ws = array();
+ $after_tfoot_ws = array();
// as many of these as you want
- $cols = array();
+ $cols = array();
$content = array();
- $nesting = 0; // current depth so we can determine nodes
- $is_collecting = false; // are we globbing together tokens to package
- // into one of the collectors?
- $collection = array(); // collected nodes
- $tag_index = 0; // the first node might be whitespace,
- // so this tells us where the start tag is
-
- foreach ($tokens_of_children as $token) {
- $is_child = ($nesting == 0);
-
- if ($token === false) {
- // terminating sequence started
- } elseif ($token instanceof HTMLPurifier_Token_Start) {
- $nesting++;
- } elseif ($token instanceof HTMLPurifier_Token_End) {
- $nesting--;
- }
+ $tbody_mode = false; // if true, then we need to wrap any stray
+ // <tr>s with a <tbody>.
- // handle node collection
- if ($is_collecting) {
- if ($is_child) {
- // okay, let's stash the tokens away
- // first token tells us the type of the collection
- switch ($collection[$tag_index]->name) {
- case 'tr':
- case 'tbody':
- $content[] = $collection;
- break;
- case 'caption':
- if ($caption !== false) break;
- $caption = $collection;
- break;
- case 'thead':
- case 'tfoot':
- // access the appropriate variable, $thead or $tfoot
- $var = $collection[$tag_index]->name;
- if ($$var === false) {
- $$var = $collection;
- } else {
- // transmutate the first and less entries into
- // tbody tags, and then put into content
- $collection[$tag_index]->name = 'tbody';
- $collection[count($collection)-1]->name = 'tbody';
- $content[] = $collection;
- }
- break;
- case 'colgroup':
- $cols[] = $collection;
- break;
- }
- $collection = array();
- $is_collecting = false;
- $tag_index = 0;
+ $ws_accum =& $initial_ws;
+
+ foreach ($children as $node) {
+ if ($node instanceof HTMLPurifier_Node_Comment) {
+ $ws_accum[] = $node;
+ continue;
+ }
+ switch ($node->name) {
+ case 'tbody':
+ $tbody_mode = true;
+ // fall through
+ case 'tr':
+ $content[] = $node;
+ $ws_accum =& $content;
+ break;
+ case 'caption':
+ // there can only be one caption!
+ if ($caption !== false) break;
+ $caption = $node;
+ $ws_accum =& $after_caption_ws;
+ break;
+ case 'thead':
+ $tbody_mode = true;
+ // XXX This breaks rendering properties with
+ // Firefox, which never floats a <thead> to
+ // the top. Ever. (Our scheme will float the
+ // first <thead> to the top.) So maybe
+ // <thead>s that are not first should be
+ // turned into <tbody>? Very tricky, indeed.
+ if ($thead === false) {
+ $thead = $node;
+ $ws_accum =& $after_thead_ws;
} else {
- // add the node to the collection
- $collection[] = $token;
+ // Oops, there's a second one! What
+ // should we do? Current behavior is to
+ // transmutate the first and last entries into
+ // tbody tags, and then put into content.
+ // Maybe a better idea is to *attach
+ // it* to the existing thead or tfoot?
+ // We don't do this, because Firefox
+ // doesn't float an extra tfoot to the
+ // bottom like it does for the first one.
+ $node->name = 'tbody';
+ $content[] = $node;
+ $ws_accum =& $content;
}
- }
-
- // terminate
- if ($token === false) break;
-
- if ($is_child) {
- // determine what we're dealing with
- if ($token->name == 'col') {
- // the only empty tag in the possie, we can handle it
- // immediately
- $cols[] = array_merge($collection, array($token));
- $collection = array();
- $tag_index = 0;
- continue;
+ break;
+ case 'tfoot':
+ // see above for some aveats
+ $tbody_mode = true;
+ if ($tfoot === false) {
+ $tfoot = $node;
+ $ws_accum =& $after_tfoot_ws;
+ } else {
+ $node->name = 'tbody';
+ $content[] = $node;
+ $ws_accum =& $content;
}
- switch($token->name) {
- case 'caption':
- case 'colgroup':
- case 'thead':
- case 'tfoot':
- case 'tbody':
- case 'tr':
- $is_collecting = true;
- $collection[] = $token;
- continue;
- default:
- if (!empty($token->is_whitespace)) {
- $collection[] = $token;
- $tag_index++;
- }
- continue;
+ break;
+ case 'colgroup':
+ case 'col':
+ $cols[] = $node;
+ $ws_accum =& $cols;
+ break;
+ case '#PCDATA':
+ // How is whitespace handled? We treat is as sticky to
+ // the *end* of the previous element. So all of the
+ // nonsense we have worked on is to keep things
+ // together.
+ if (!empty($node->is_whitespace)) {
+ $ws_accum[] = $node;
}
+ break;
}
}
- if (empty($content)) return false;
-
- $ret = array();
- if ($caption !== false) $ret = array_merge($ret, $caption);
- if ($cols !== false) foreach ($cols as $token_array) $ret = array_merge($ret, $token_array);
- if ($thead !== false) $ret = array_merge($ret, $thead);
- if ($tfoot !== false) $ret = array_merge($ret, $tfoot);
- foreach ($content as $token_array) $ret = array_merge($ret, $token_array);
- if (!empty($collection) && $is_collecting == false){
- // grab the trailing space
- $ret = array_merge($ret, $collection);
+ if (empty($content)) {
+ return false;
+ }
+
+ $ret = $initial_ws;
+ if ($caption !== false) {
+ $ret[] = $caption;
+ $ret = array_merge($ret, $after_caption_ws);
+ }
+ if ($cols !== false) {
+ $ret = array_merge($ret, $cols);
+ }
+ if ($thead !== false) {
+ $ret[] = $thead;
+ $ret = array_merge($ret, $after_thead_ws);
+ }
+ if ($tfoot !== false) {
+ $ret[] = $tfoot;
+ $ret = array_merge($ret, $after_tfoot_ws);
}
- array_pop($tokens_of_children); // remove phantom token
+ if ($tbody_mode) {
+ // we have to shuffle tr into tbody
+ $current_tr_tbody = null;
+
+ foreach($content as $node) {
+ switch ($node->name) {
+ case 'tbody':
+ $current_tr_tbody = null;
+ $ret[] = $node;
+ break;
+ case 'tr':
+ if ($current_tr_tbody === null) {
+ $current_tr_tbody = new HTMLPurifier_Node_Element('tbody');
+ $ret[] = $current_tr_tbody;
+ }
+ $current_tr_tbody->children[] = $node;
+ break;
+ case '#PCDATA':
+ assert($node->is_whitespace);
+ if ($current_tr_tbody === null) {
+ $ret[] = $node;
+ } else {
+ $current_tr_tbody->children[] = $node;
+ }
+ break;
+ }
+ }
+ } else {
+ $ret = array_merge($ret, $content);
+ }
- return ($ret === $tokens_of_children) ? true : $ret;
+ return $ret;
}
}
diff --git a/library/HTMLPurifier/Config.php b/library/HTMLPurifier/Config.php
index 2a334b0d8..7ada59b94 100644
--- a/library/HTMLPurifier/Config.php
+++ b/library/HTMLPurifier/Config.php
@@ -19,77 +19,92 @@ class HTMLPurifier_Config
/**
* HTML Purifier's version
+ * @type string
*/
- public $version = '4.1.1';
+ public $version = '4.6.0';
/**
- * Bool indicator whether or not to automatically finalize
- * the object if a read operation is done
+ * Whether or not to automatically finalize
+ * the object if a read operation is done.
+ * @type bool
*/
public $autoFinalize = true;
// protected member variables
/**
- * Namespace indexed array of serials for specific namespaces (see
- * getSerial() for more info).
+ * Namespace indexed array of serials for specific namespaces.
+ * @see getSerial() for more info.
+ * @type string[]
*/
protected $serials = array();
/**
- * Serial for entire configuration object
+ * Serial for entire configuration object.
+ * @type string
*/
protected $serial;
/**
- * Parser for variables
+ * Parser for variables.
+ * @type HTMLPurifier_VarParser_Flexible
*/
- protected $parser;
+ protected $parser = null;
/**
- * Reference HTMLPurifier_ConfigSchema for value checking
+ * Reference HTMLPurifier_ConfigSchema for value checking.
+ * @type HTMLPurifier_ConfigSchema
* @note This is public for introspective purposes. Please don't
* abuse!
*/
public $def;
/**
- * Indexed array of definitions
+ * Indexed array of definitions.
+ * @type HTMLPurifier_Definition[]
*/
protected $definitions;
/**
- * Bool indicator whether or not config is finalized
+ * Whether or not config is finalized.
+ * @type bool
*/
protected $finalized = false;
/**
* Property list containing configuration directives.
+ * @type array
*/
protected $plist;
/**
- * Whether or not a set is taking place due to an
- * alias lookup.
+ * Whether or not a set is taking place due to an alias lookup.
+ * @type bool
*/
private $aliasMode;
/**
- * Set to false if you do not want line and file numbers in errors
- * (useful when unit testing)
+ * Set to false if you do not want line and file numbers in errors.
+ * (useful when unit testing). This will also compress some errors
+ * and exceptions.
+ * @type bool
*/
public $chatty = true;
/**
* Current lock; only gets to this namespace are allowed.
+ * @type string
*/
private $lock;
/**
- * @param $definition HTMLPurifier_ConfigSchema that defines what directives
- * are allowed.
+ * Constructor
+ * @param HTMLPurifier_ConfigSchema $definition ConfigSchema that defines
+ * what directives are allowed.
+ * @param HTMLPurifier_PropertyList $parent
*/
- public function __construct($definition, $parent = null) {
+ public function __construct($definition, $parent = null)
+ {
$parent = $parent ? $parent : $definition->defaultPlist;
$this->plist = new HTMLPurifier_PropertyList($parent);
$this->def = $definition; // keep a copy around for checking
@@ -102,10 +117,11 @@ class HTMLPurifier_Config
* object. Can be: a HTMLPurifier_Config() object,
* an array of directives based on loadArray(),
* or a string filename of an ini file.
- * @param HTMLPurifier_ConfigSchema Schema object
- * @return Configured HTMLPurifier_Config object
+ * @param HTMLPurifier_ConfigSchema $schema Schema object
+ * @return HTMLPurifier_Config Configured object
*/
- public static function create($config, $schema = null) {
+ public static function create($config, $schema = null)
+ {
if ($config instanceof HTMLPurifier_Config) {
// pass-through
return $config;
@@ -115,57 +131,79 @@ class HTMLPurifier_Config
} else {
$ret = new HTMLPurifier_Config($schema);
}
- if (is_string($config)) $ret->loadIni($config);
- elseif (is_array($config)) $ret->loadArray($config);
+ if (is_string($config)) {
+ $ret->loadIni($config);
+ } elseif (is_array($config)) $ret->loadArray($config);
return $ret;
}
/**
* Creates a new config object that inherits from a previous one.
- * @param HTMLPurifier_Config $config Configuration object to inherit
- * from.
+ * @param HTMLPurifier_Config $config Configuration object to inherit from.
* @return HTMLPurifier_Config object with $config as its parent.
*/
- public static function inherit(HTMLPurifier_Config $config) {
+ public static function inherit(HTMLPurifier_Config $config)
+ {
return new HTMLPurifier_Config($config->def, $config->plist);
}
/**
* Convenience constructor that creates a default configuration object.
- * @return Default HTMLPurifier_Config object.
+ * @return HTMLPurifier_Config default object.
*/
- public static function createDefault() {
+ public static function createDefault()
+ {
$definition = HTMLPurifier_ConfigSchema::instance();
$config = new HTMLPurifier_Config($definition);
return $config;
}
/**
- * Retreives a value from the configuration.
- * @param $key String key
+ * Retrieves a value from the configuration.
+ *
+ * @param string $key String key
+ * @param mixed $a
+ *
+ * @return mixed
*/
- public function get($key, $a = null) {
+ public function get($key, $a = null)
+ {
if ($a !== null) {
- $this->triggerError("Using deprecated API: use \$config->get('$key.$a') instead", E_USER_WARNING);
+ $this->triggerError(
+ "Using deprecated API: use \$config->get('$key.$a') instead",
+ E_USER_WARNING
+ );
$key = "$key.$a";
}
- if (!$this->finalized) $this->autoFinalize();
+ if (!$this->finalized) {
+ $this->autoFinalize();
+ }
if (!isset($this->def->info[$key])) {
// can't add % due to SimpleTest bug
- $this->triggerError('Cannot retrieve value of undefined directive ' . htmlspecialchars($key),
- E_USER_WARNING);
+ $this->triggerError(
+ 'Cannot retrieve value of undefined directive ' . htmlspecialchars($key),
+ E_USER_WARNING
+ );
return;
}
if (isset($this->def->info[$key]->isAlias)) {
$d = $this->def->info[$key];
- $this->triggerError('Cannot get value from aliased directive, use real name ' . $d->key,
- E_USER_ERROR);
+ $this->triggerError(
+ 'Cannot get value from aliased directive, use real name ' . $d->key,
+ E_USER_ERROR
+ );
return;
}
if ($this->lock) {
list($ns) = explode('.', $key);
if ($ns !== $this->lock) {
- $this->triggerError('Cannot get value of namespace ' . $ns . ' when lock for ' . $this->lock . ' is active, this probably indicates a Definition setup method is accessing directives that are not within its namespace', E_USER_ERROR);
+ $this->triggerError(
+ 'Cannot get value of namespace ' . $ns . ' when lock for ' .
+ $this->lock .
+ ' is active, this probably indicates a Definition setup method ' .
+ 'is accessing directives that are not within its namespace',
+ E_USER_ERROR
+ );
return;
}
}
@@ -173,53 +211,73 @@ class HTMLPurifier_Config
}
/**
- * Retreives an array of directives to values from a given namespace
- * @param $namespace String namespace
+ * Retrieves an array of directives to values from a given namespace
+ *
+ * @param string $namespace String namespace
+ *
+ * @return array
*/
- public function getBatch($namespace) {
- if (!$this->finalized) $this->autoFinalize();
+ public function getBatch($namespace)
+ {
+ if (!$this->finalized) {
+ $this->autoFinalize();
+ }
$full = $this->getAll();
if (!isset($full[$namespace])) {
- $this->triggerError('Cannot retrieve undefined namespace ' . htmlspecialchars($namespace),
- E_USER_WARNING);
+ $this->triggerError(
+ 'Cannot retrieve undefined namespace ' .
+ htmlspecialchars($namespace),
+ E_USER_WARNING
+ );
return;
}
return $full[$namespace];
}
/**
- * Returns a md5 signature of a segment of the configuration object
+ * Returns a SHA-1 signature of a segment of the configuration object
* that uniquely identifies that particular configuration
+ *
+ * @param string $namespace Namespace to get serial for
+ *
+ * @return string
* @note Revision is handled specially and is removed from the batch
* before processing!
- * @param $namespace Namespace to get serial for
*/
- public function getBatchSerial($namespace) {
+ public function getBatchSerial($namespace)
+ {
if (empty($this->serials[$namespace])) {
$batch = $this->getBatch($namespace);
unset($batch['DefinitionRev']);
- $this->serials[$namespace] = md5(serialize($batch));
+ $this->serials[$namespace] = sha1(serialize($batch));
}
return $this->serials[$namespace];
}
/**
- * Returns a md5 signature for the entire configuration object
+ * Returns a SHA-1 signature for the entire configuration object
* that uniquely identifies that particular configuration
+ *
+ * @return string
*/
- public function getSerial() {
+ public function getSerial()
+ {
if (empty($this->serial)) {
- $this->serial = md5(serialize($this->getAll()));
+ $this->serial = sha1(serialize($this->getAll()));
}
return $this->serial;
}
/**
* Retrieves all directives, organized by namespace
+ *
* @warning This is a pretty inefficient function, avoid if you can
*/
- public function getAll() {
- if (!$this->finalized) $this->autoFinalize();
+ public function getAll()
+ {
+ if (!$this->finalized) {
+ $this->autoFinalize();
+ }
$ret = array();
foreach ($this->plist->squash() as $name => $value) {
list($ns, $key) = explode('.', $name, 2);
@@ -230,10 +288,13 @@ class HTMLPurifier_Config
/**
* Sets a value to configuration.
- * @param $key String key
- * @param $value Mixed value
+ *
+ * @param string $key key
+ * @param mixed $value value
+ * @param mixed $a
*/
- public function set($key, $value, $a = null) {
+ public function set($key, $value, $a = null)
+ {
if (strpos($key, '.') === false) {
$namespace = $key;
$directive = $value;
@@ -243,18 +304,25 @@ class HTMLPurifier_Config
} else {
list($namespace) = explode('.', $key);
}
- if ($this->isFinalized('Cannot set directive after finalization')) return;
+ if ($this->isFinalized('Cannot set directive after finalization')) {
+ return;
+ }
if (!isset($this->def->info[$key])) {
- $this->triggerError('Cannot set undefined directive ' . htmlspecialchars($key) . ' to value',
- E_USER_WARNING);
+ $this->triggerError(
+ 'Cannot set undefined directive ' . htmlspecialchars($key) . ' to value',
+ E_USER_WARNING
+ );
return;
}
$def = $this->def->info[$key];
if (isset($def->isAlias)) {
if ($this->aliasMode) {
- $this->triggerError('Double-aliases not allowed, please fix '.
- 'ConfigSchema bug with' . $key, E_USER_ERROR);
+ $this->triggerError(
+ 'Double-aliases not allowed, please fix '.
+ 'ConfigSchema bug with' . $key,
+ E_USER_ERROR
+ );
return;
}
$this->aliasMode = true;
@@ -278,7 +346,11 @@ class HTMLPurifier_Config
try {
$value = $this->parser->parse($value, $type, $allow_null);
} catch (HTMLPurifier_VarParserException $e) {
- $this->triggerError('Value for ' . $key . ' is of invalid type, should be ' . HTMLPurifier_VarParser::getTypeName($type), E_USER_WARNING);
+ $this->triggerError(
+ 'Value for ' . $key . ' is of invalid type, should be ' .
+ HTMLPurifier_VarParser::getTypeName($type),
+ E_USER_WARNING
+ );
return;
}
if (is_string($value) && is_object($def)) {
@@ -288,8 +360,11 @@ class HTMLPurifier_Config
}
// check to see if the value is allowed
if (isset($def->allowed) && !isset($def->allowed[$value])) {
- $this->triggerError('Value not supported, valid values are: ' .
- $this->_listify($def->allowed), E_USER_WARNING);
+ $this->triggerError(
+ 'Value not supported, valid values are: ' .
+ $this->_listify($def->allowed),
+ E_USER_WARNING
+ );
return;
}
}
@@ -307,38 +382,102 @@ class HTMLPurifier_Config
/**
* Convenience function for error reporting
+ *
+ * @param array $lookup
+ *
+ * @return string
*/
- private function _listify($lookup) {
+ private function _listify($lookup)
+ {
$list = array();
- foreach ($lookup as $name => $b) $list[] = $name;
+ foreach ($lookup as $name => $b) {
+ $list[] = $name;
+ }
return implode(', ', $list);
}
/**
* Retrieves object reference to the HTML definition.
- * @param $raw Return a copy that has not been setup yet. Must be
+ *
+ * @param bool $raw Return a copy that has not been setup yet. Must be
* called before it's been setup, otherwise won't work.
- */
- public function getHTMLDefinition($raw = false) {
- return $this->getDefinition('HTML', $raw);
+ * @param bool $optimized If true, this method may return null, to
+ * indicate that a cached version of the modified
+ * definition object is available and no further edits
+ * are necessary. Consider using
+ * maybeGetRawHTMLDefinition, which is more explicitly
+ * named, instead.
+ *
+ * @return HTMLPurifier_HTMLDefinition
+ */
+ public function getHTMLDefinition($raw = false, $optimized = false)
+ {
+ return $this->getDefinition('HTML', $raw, $optimized);
}
/**
* Retrieves object reference to the CSS definition
- * @param $raw Return a copy that has not been setup yet. Must be
+ *
+ * @param bool $raw Return a copy that has not been setup yet. Must be
* called before it's been setup, otherwise won't work.
- */
- public function getCSSDefinition($raw = false) {
- return $this->getDefinition('CSS', $raw);
+ * @param bool $optimized If true, this method may return null, to
+ * indicate that a cached version of the modified
+ * definition object is available and no further edits
+ * are necessary. Consider using
+ * maybeGetRawCSSDefinition, which is more explicitly
+ * named, instead.
+ *
+ * @return HTMLPurifier_CSSDefinition
+ */
+ public function getCSSDefinition($raw = false, $optimized = false)
+ {
+ return $this->getDefinition('CSS', $raw, $optimized);
+ }
+
+ /**
+ * Retrieves object reference to the URI definition
+ *
+ * @param bool $raw Return a copy that has not been setup yet. Must be
+ * called before it's been setup, otherwise won't work.
+ * @param bool $optimized If true, this method may return null, to
+ * indicate that a cached version of the modified
+ * definition object is available and no further edits
+ * are necessary. Consider using
+ * maybeGetRawURIDefinition, which is more explicitly
+ * named, instead.
+ *
+ * @return HTMLPurifier_URIDefinition
+ */
+ public function getURIDefinition($raw = false, $optimized = false)
+ {
+ return $this->getDefinition('URI', $raw, $optimized);
}
/**
* Retrieves a definition
- * @param $type Type of definition: HTML, CSS, etc
- * @param $raw Whether or not definition should be returned raw
- */
- public function getDefinition($type, $raw = false) {
- if (!$this->finalized) $this->autoFinalize();
+ *
+ * @param string $type Type of definition: HTML, CSS, etc
+ * @param bool $raw Whether or not definition should be returned raw
+ * @param bool $optimized Only has an effect when $raw is true. Whether
+ * or not to return null if the result is already present in
+ * the cache. This is off by default for backwards
+ * compatibility reasons, but you need to do things this
+ * way in order to ensure that caching is done properly.
+ * Check out enduser-customize.html for more details.
+ * We probably won't ever change this default, as much as the
+ * maybe semantics is the "right thing to do."
+ *
+ * @throws HTMLPurifier_Exception
+ * @return HTMLPurifier_Definition
+ */
+ public function getDefinition($type, $raw = false, $optimized = false)
+ {
+ if ($optimized && !$raw) {
+ throw new HTMLPurifier_Exception("Cannot set optimized = true when raw = false");
+ }
+ if (!$this->finalized) {
+ $this->autoFinalize();
+ }
// temporarily suspend locks, so we can handle recursive definition calls
$lock = $this->lock;
$this->lock = null;
@@ -346,61 +485,193 @@ class HTMLPurifier_Config
$cache = $factory->create($type, $this);
$this->lock = $lock;
if (!$raw) {
- // see if we can quickly supply a definition
+ // full definition
+ // ---------------
+ // check if definition is in memory
+ if (!empty($this->definitions[$type])) {
+ $def = $this->definitions[$type];
+ // check if the definition is setup
+ if ($def->setup) {
+ return $def;
+ } else {
+ $def->setup($this);
+ if ($def->optimized) {
+ $cache->add($def, $this);
+ }
+ return $def;
+ }
+ }
+ // check if definition is in cache
+ $def = $cache->get($this);
+ if ($def) {
+ // definition in cache, save to memory and return it
+ $this->definitions[$type] = $def;
+ return $def;
+ }
+ // initialize it
+ $def = $this->initDefinition($type);
+ // set it up
+ $this->lock = $type;
+ $def->setup($this);
+ $this->lock = null;
+ // save in cache
+ $cache->add($def, $this);
+ // return it
+ return $def;
+ } else {
+ // raw definition
+ // --------------
+ // check preconditions
+ $def = null;
+ if ($optimized) {
+ if (is_null($this->get($type . '.DefinitionID'))) {
+ // fatally error out if definition ID not set
+ throw new HTMLPurifier_Exception(
+ "Cannot retrieve raw version without specifying %$type.DefinitionID"
+ );
+ }
+ }
if (!empty($this->definitions[$type])) {
- if (!$this->definitions[$type]->setup) {
- $this->definitions[$type]->setup($this);
- $cache->set($this->definitions[$type], $this);
+ $def = $this->definitions[$type];
+ if ($def->setup && !$optimized) {
+ $extra = $this->chatty ?
+ " (try moving this code block earlier in your initialization)" :
+ "";
+ throw new HTMLPurifier_Exception(
+ "Cannot retrieve raw definition after it has already been setup" .
+ $extra
+ );
+ }
+ if ($def->optimized === null) {
+ $extra = $this->chatty ? " (try flushing your cache)" : "";
+ throw new HTMLPurifier_Exception(
+ "Optimization status of definition is unknown" . $extra
+ );
+ }
+ if ($def->optimized !== $optimized) {
+ $msg = $optimized ? "optimized" : "unoptimized";
+ $extra = $this->chatty ?
+ " (this backtrace is for the first inconsistent call, which was for a $msg raw definition)"
+ : "";
+ throw new HTMLPurifier_Exception(
+ "Inconsistent use of optimized and unoptimized raw definition retrievals" . $extra
+ );
}
- return $this->definitions[$type];
}
- // memory check missed, try cache
- $this->definitions[$type] = $cache->get($this);
- if ($this->definitions[$type]) {
- // definition in cache, return it
- return $this->definitions[$type];
+ // check if definition was in memory
+ if ($def) {
+ if ($def->setup) {
+ // invariant: $optimized === true (checked above)
+ return null;
+ } else {
+ return $def;
+ }
}
- } elseif (
- !empty($this->definitions[$type]) &&
- !$this->definitions[$type]->setup
- ) {
- // raw requested, raw in memory, quick return
- return $this->definitions[$type];
+ // if optimized, check if definition was in cache
+ // (because we do the memory check first, this formulation
+ // is prone to cache slamming, but I think
+ // guaranteeing that either /all/ of the raw
+ // setup code or /none/ of it is run is more important.)
+ if ($optimized) {
+ // This code path only gets run once; once we put
+ // something in $definitions (which is guaranteed by the
+ // trailing code), we always short-circuit above.
+ $def = $cache->get($this);
+ if ($def) {
+ // save the full definition for later, but don't
+ // return it yet
+ $this->definitions[$type] = $def;
+ return null;
+ }
+ }
+ // check invariants for creation
+ if (!$optimized) {
+ if (!is_null($this->get($type . '.DefinitionID'))) {
+ if ($this->chatty) {
+ $this->triggerError(
+ 'Due to a documentation error in previous version of HTML Purifier, your ' .
+ 'definitions are not being cached. If this is OK, you can remove the ' .
+ '%$type.DefinitionRev and %$type.DefinitionID declaration. Otherwise, ' .
+ 'modify your code to use maybeGetRawDefinition, and test if the returned ' .
+ 'value is null before making any edits (if it is null, that means that a ' .
+ 'cached version is available, and no raw operations are necessary). See ' .
+ '<a href="http://htmlpurifier.org/docs/enduser-customize.html#optimized">' .
+ 'Customize</a> for more details',
+ E_USER_WARNING
+ );
+ } else {
+ $this->triggerError(
+ "Useless DefinitionID declaration",
+ E_USER_WARNING
+ );
+ }
+ }
+ }
+ // initialize it
+ $def = $this->initDefinition($type);
+ $def->optimized = $optimized;
+ return $def;
}
+ throw new HTMLPurifier_Exception("The impossible happened!");
+ }
+
+ /**
+ * Initialise definition
+ *
+ * @param string $type What type of definition to create
+ *
+ * @return HTMLPurifier_CSSDefinition|HTMLPurifier_HTMLDefinition|HTMLPurifier_URIDefinition
+ * @throws HTMLPurifier_Exception
+ */
+ private function initDefinition($type)
+ {
// quick checks failed, let's create the object
if ($type == 'HTML') {
- $this->definitions[$type] = new HTMLPurifier_HTMLDefinition();
+ $def = new HTMLPurifier_HTMLDefinition();
} elseif ($type == 'CSS') {
- $this->definitions[$type] = new HTMLPurifier_CSSDefinition();
+ $def = new HTMLPurifier_CSSDefinition();
} elseif ($type == 'URI') {
- $this->definitions[$type] = new HTMLPurifier_URIDefinition();
+ $def = new HTMLPurifier_URIDefinition();
} else {
- throw new HTMLPurifier_Exception("Definition of $type type not supported");
+ throw new HTMLPurifier_Exception(
+ "Definition of $type type not supported"
+ );
}
- // quick abort if raw
- if ($raw) {
- if (is_null($this->get($type . '.DefinitionID'))) {
- // fatally error out if definition ID not set
- throw new HTMLPurifier_Exception("Cannot retrieve raw version without specifying %$type.DefinitionID");
- }
- return $this->definitions[$type];
- }
- // set it up
- $this->lock = $type;
- $this->definitions[$type]->setup($this);
- $this->lock = null;
- // save in cache
- $cache->set($this->definitions[$type], $this);
- return $this->definitions[$type];
+ $this->definitions[$type] = $def;
+ return $def;
+ }
+
+ public function maybeGetRawDefinition($name)
+ {
+ return $this->getDefinition($name, true, true);
+ }
+
+ public function maybeGetRawHTMLDefinition()
+ {
+ return $this->getDefinition('HTML', true, true);
+ }
+
+ public function maybeGetRawCSSDefinition()
+ {
+ return $this->getDefinition('CSS', true, true);
+ }
+
+ public function maybeGetRawURIDefinition()
+ {
+ return $this->getDefinition('URI', true, true);
}
/**
* Loads configuration values from an array with the following structure:
* Namespace.Directive => Value
- * @param $config_array Configuration associative array
+ *
+ * @param array $config_array Configuration associative array
*/
- public function loadArray($config_array) {
- if ($this->isFinalized('Cannot load directives after finalization')) return;
+ public function loadArray($config_array)
+ {
+ if ($this->isFinalized('Cannot load directives after finalization')) {
+ return;
+ }
foreach ($config_array as $key => $value) {
$key = str_replace('_', '.', $key);
if (strpos($key, '.') !== false) {
@@ -408,8 +679,8 @@ class HTMLPurifier_Config
} else {
$namespace = $key;
$namespace_values = $value;
- foreach ($namespace_values as $directive => $value) {
- $this->set($namespace .'.'. $directive, $value);
+ foreach ($namespace_values as $directive => $value2) {
+ $this->set($namespace .'.'. $directive, $value2);
}
}
}
@@ -419,40 +690,55 @@ class HTMLPurifier_Config
* Returns a list of array(namespace, directive) for all directives
* that are allowed in a web-form context as per an allowed
* namespaces/directives list.
- * @param $allowed List of allowed namespaces/directives
- */
- public static function getAllowedDirectivesForForm($allowed, $schema = null) {
+ *
+ * @param array $allowed List of allowed namespaces/directives
+ * @param HTMLPurifier_ConfigSchema $schema Schema to use, if not global copy
+ *
+ * @return array
+ */
+ public static function getAllowedDirectivesForForm($allowed, $schema = null)
+ {
if (!$schema) {
$schema = HTMLPurifier_ConfigSchema::instance();
}
if ($allowed !== true) {
- if (is_string($allowed)) $allowed = array($allowed);
- $allowed_ns = array();
- $allowed_directives = array();
- $blacklisted_directives = array();
- foreach ($allowed as $ns_or_directive) {
- if (strpos($ns_or_directive, '.') !== false) {
- // directive
- if ($ns_or_directive[0] == '-') {
- $blacklisted_directives[substr($ns_or_directive, 1)] = true;
- } else {
- $allowed_directives[$ns_or_directive] = true;
- }
- } else {
- // namespace
- $allowed_ns[$ns_or_directive] = true;
- }
- }
+ if (is_string($allowed)) {
+ $allowed = array($allowed);
+ }
+ $allowed_ns = array();
+ $allowed_directives = array();
+ $blacklisted_directives = array();
+ foreach ($allowed as $ns_or_directive) {
+ if (strpos($ns_or_directive, '.') !== false) {
+ // directive
+ if ($ns_or_directive[0] == '-') {
+ $blacklisted_directives[substr($ns_or_directive, 1)] = true;
+ } else {
+ $allowed_directives[$ns_or_directive] = true;
+ }
+ } else {
+ // namespace
+ $allowed_ns[$ns_or_directive] = true;
+ }
+ }
}
$ret = array();
foreach ($schema->info as $key => $def) {
list($ns, $directive) = explode('.', $key, 2);
if ($allowed !== true) {
- if (isset($blacklisted_directives["$ns.$directive"])) continue;
- if (!isset($allowed_directives["$ns.$directive"]) && !isset($allowed_ns[$ns])) continue;
+ if (isset($blacklisted_directives["$ns.$directive"])) {
+ continue;
+ }
+ if (!isset($allowed_directives["$ns.$directive"]) && !isset($allowed_ns[$ns])) {
+ continue;
+ }
+ }
+ if (isset($def->isAlias)) {
+ continue;
+ }
+ if ($directive == 'DefinitionID' || $directive == 'DefinitionRev') {
+ continue;
}
- if (isset($def->isAlias)) continue;
- if ($directive == 'DefinitionID' || $directive == 'DefinitionRev') continue;
$ret[] = array($ns, $directive);
}
return $ret;
@@ -461,13 +747,17 @@ class HTMLPurifier_Config
/**
* Loads configuration values from $_GET/$_POST that were posted
* via ConfigForm
- * @param $array $_GET or $_POST array to import
- * @param $index Index/name that the config variables are in
- * @param $allowed List of allowed namespaces/directives
- * @param $mq_fix Boolean whether or not to enable magic quotes fix
- * @param $schema Instance of HTMLPurifier_ConfigSchema to use, if not global copy
- */
- public static function loadArrayFromForm($array, $index = false, $allowed = true, $mq_fix = true, $schema = null) {
+ *
+ * @param array $array $_GET or $_POST array to import
+ * @param string|bool $index Index/name that the config variables are in
+ * @param array|bool $allowed List of allowed namespaces/directives
+ * @param bool $mq_fix Boolean whether or not to enable magic quotes fix
+ * @param HTMLPurifier_ConfigSchema $schema Schema to use, if not global copy
+ *
+ * @return mixed
+ */
+ public static function loadArrayFromForm($array, $index = false, $allowed = true, $mq_fix = true, $schema = null)
+ {
$ret = HTMLPurifier_Config::prepareArrayFromForm($array, $index, $allowed, $mq_fix, $schema);
$config = HTMLPurifier_Config::create($ret, $schema);
return $config;
@@ -475,9 +765,14 @@ class HTMLPurifier_Config
/**
* Merges in configuration values from $_GET/$_POST to object. NOT STATIC.
- * @note Same parameters as loadArrayFromForm
- */
- public function mergeArrayFromForm($array, $index = false, $allowed = true, $mq_fix = true) {
+ *
+ * @param array $array $_GET or $_POST array to import
+ * @param string|bool $index Index/name that the config variables are in
+ * @param array|bool $allowed List of allowed namespaces/directives
+ * @param bool $mq_fix Boolean whether or not to enable magic quotes fix
+ */
+ public function mergeArrayFromForm($array, $index = false, $allowed = true, $mq_fix = true)
+ {
$ret = HTMLPurifier_Config::prepareArrayFromForm($array, $index, $allowed, $mq_fix, $this->def);
$this->loadArray($ret);
}
@@ -485,9 +780,20 @@ class HTMLPurifier_Config
/**
* Prepares an array from a form into something usable for the more
* strict parts of HTMLPurifier_Config
- */
- public static function prepareArrayFromForm($array, $index = false, $allowed = true, $mq_fix = true, $schema = null) {
- if ($index !== false) $array = (isset($array[$index]) && is_array($array[$index])) ? $array[$index] : array();
+ *
+ * @param array $array $_GET or $_POST array to import
+ * @param string|bool $index Index/name that the config variables are in
+ * @param array|bool $allowed List of allowed namespaces/directives
+ * @param bool $mq_fix Boolean whether or not to enable magic quotes fix
+ * @param HTMLPurifier_ConfigSchema $schema Schema to use, if not global copy
+ *
+ * @return array
+ */
+ public static function prepareArrayFromForm($array, $index = false, $allowed = true, $mq_fix = true, $schema = null)
+ {
+ if ($index !== false) {
+ $array = (isset($array[$index]) && is_array($array[$index])) ? $array[$index] : array();
+ }
$mq = $mq_fix && function_exists('get_magic_quotes_gpc') && get_magic_quotes_gpc();
$allowed = HTMLPurifier_Config::getAllowedDirectivesForForm($allowed, $schema);
@@ -499,7 +805,9 @@ class HTMLPurifier_Config
$ret[$ns][$directive] = null;
continue;
}
- if (!isset($array[$skey])) continue;
+ if (!isset($array[$skey])) {
+ continue;
+ }
$value = $mq ? stripslashes($array[$skey]) : $array[$skey];
$ret[$ns][$directive] = $value;
}
@@ -508,19 +816,27 @@ class HTMLPurifier_Config
/**
* Loads configuration values from an ini file
- * @param $filename Name of ini file
+ *
+ * @param string $filename Name of ini file
*/
- public function loadIni($filename) {
- if ($this->isFinalized('Cannot load directives after finalization')) return;
+ public function loadIni($filename)
+ {
+ if ($this->isFinalized('Cannot load directives after finalization')) {
+ return;
+ }
$array = parse_ini_file($filename, true);
$this->loadArray($array);
}
/**
* Checks whether or not the configuration object is finalized.
- * @param $error String error message, or false for no error
+ *
+ * @param string|bool $error String error message, or false for no error
+ *
+ * @return bool
*/
- public function isFinalized($error = false) {
+ public function isFinalized($error = false)
+ {
if ($this->finalized && $error) {
$this->triggerError($error, E_USER_ERROR);
}
@@ -531,7 +847,8 @@ class HTMLPurifier_Config
* Finalizes configuration only if auto finalize is on and not
* already finalized
*/
- public function autoFinalize() {
+ public function autoFinalize()
+ {
if ($this->autoFinalize) {
$this->finalize();
} else {
@@ -542,24 +859,35 @@ class HTMLPurifier_Config
/**
* Finalizes a configuration object, prohibiting further change
*/
- public function finalize() {
+ public function finalize()
+ {
$this->finalized = true;
- unset($this->parser);
+ $this->parser = null;
}
/**
* Produces a nicely formatted error message by supplying the
- * stack frame information from two levels up and OUTSIDE of
- * HTMLPurifier_Config.
+ * stack frame information OUTSIDE of HTMLPurifier_Config.
+ *
+ * @param string $msg An error message
+ * @param int $no An error number
*/
- protected function triggerError($msg, $no) {
+ protected function triggerError($msg, $no)
+ {
// determine previous stack frame
- $backtrace = debug_backtrace();
- if ($this->chatty && isset($backtrace[1])) {
- $frame = $backtrace[1];
- $extra = " on line {$frame['line']} in file {$frame['file']}";
- } else {
- $extra = '';
+ $extra = '';
+ if ($this->chatty) {
+ $trace = debug_backtrace();
+ // zip(tail(trace), trace) -- but PHP is not Haskell har har
+ for ($i = 0, $c = count($trace); $i < $c - 1; $i++) {
+ // XXX this is not correct on some versions of HTML Purifier
+ if ($trace[$i + 1]['class'] === 'HTMLPurifier_Config') {
+ continue;
+ }
+ $frame = $trace[$i];
+ $extra = " invoked on line {$frame['line']} in file {$frame['file']}";
+ break;
+ }
}
trigger_error($msg . $extra, $no);
}
@@ -567,8 +895,11 @@ class HTMLPurifier_Config
/**
* Returns a serialized form of the configuration object that can
* be reconstituted.
+ *
+ * @return string
*/
- public function serialize() {
+ public function serialize()
+ {
$this->getDefinition('HTML');
$this->getDefinition('CSS');
$this->getDefinition('URI');
diff --git a/library/HTMLPurifier/ConfigSchema.php b/library/HTMLPurifier/ConfigSchema.php
index 67be5c71f..bfbb0f92f 100644
--- a/library/HTMLPurifier/ConfigSchema.php
+++ b/library/HTMLPurifier/ConfigSchema.php
@@ -3,21 +3,24 @@
/**
* Configuration definition, defines directives and their defaults.
*/
-class HTMLPurifier_ConfigSchema {
-
+class HTMLPurifier_ConfigSchema
+{
/**
* Defaults of the directives and namespaces.
+ * @type array
* @note This shares the exact same structure as HTMLPurifier_Config::$conf
*/
public $defaults = array();
/**
* The default property list. Do not edit this property list.
+ * @type array
*/
public $defaultPlist;
/**
- * Definition of the directives. The structure of this is:
+ * Definition of the directives.
+ * The structure of this is:
*
* array(
* 'Namespace' => array(
@@ -44,29 +47,43 @@ class HTMLPurifier_ConfigSchema {
* This class is friendly with HTMLPurifier_Config. If you need introspection
* about the schema, you're better of using the ConfigSchema_Interchange,
* which uses more memory but has much richer information.
+ * @type array
*/
public $info = array();
/**
* Application-wide singleton
+ * @type HTMLPurifier_ConfigSchema
*/
- static protected $singleton;
+ protected static $singleton;
- public function __construct() {
+ public function __construct()
+ {
$this->defaultPlist = new HTMLPurifier_PropertyList();
}
/**
* Unserializes the default ConfigSchema.
+ * @return HTMLPurifier_ConfigSchema
*/
- public static function makeFromSerial() {
- return unserialize(file_get_contents(HTMLPURIFIER_PREFIX . '/HTMLPurifier/ConfigSchema/schema.ser'));
+ public static function makeFromSerial()
+ {
+ $contents = file_get_contents(HTMLPURIFIER_PREFIX . '/HTMLPurifier/ConfigSchema/schema.ser');
+ $r = unserialize($contents);
+ if (!$r) {
+ $hash = sha1($contents);
+ trigger_error("Unserialization of configuration schema failed, sha1 of file was $hash", E_USER_ERROR);
+ }
+ return $r;
}
/**
* Retrieves an instance of the application-wide configuration definition.
+ * @param HTMLPurifier_ConfigSchema $prototype
+ * @return HTMLPurifier_ConfigSchema
*/
- public static function instance($prototype = null) {
+ public static function instance($prototype = null)
+ {
if ($prototype !== null) {
HTMLPurifier_ConfigSchema::$singleton = $prototype;
} elseif (HTMLPurifier_ConfigSchema::$singleton === null || $prototype === true) {
@@ -80,17 +97,19 @@ class HTMLPurifier_ConfigSchema {
* @warning Will fail of directive's namespace is defined.
* @warning This method's signature is slightly different from the legacy
* define() static method! Beware!
- * @param $namespace Namespace the directive is in
- * @param $name Key of directive
- * @param $default Default value of directive
- * @param $type Allowed type of the directive. See
+ * @param string $key Name of directive
+ * @param mixed $default Default value of directive
+ * @param string $type Allowed type of the directive. See
* HTMLPurifier_DirectiveDef::$type for allowed values
- * @param $allow_null Whether or not to allow null values
+ * @param bool $allow_null Whether or not to allow null values
*/
- public function add($key, $default, $type, $allow_null) {
+ public function add($key, $default, $type, $allow_null)
+ {
$obj = new stdclass();
$obj->type = is_int($type) ? $type : HTMLPurifier_VarParser::$types[$type];
- if ($allow_null) $obj->allow_null = true;
+ if ($allow_null) {
+ $obj->allow_null = true;
+ }
$this->info[$key] = $obj;
$this->defaults[$key] = $default;
$this->defaultPlist->set($key, $default);
@@ -101,11 +120,11 @@ class HTMLPurifier_ConfigSchema {
*
* Directive value aliases are convenient for developers because it lets
* them set a directive to several values and get the same result.
- * @param $namespace Directive's namespace
- * @param $name Name of Directive
- * @param $aliases Hash of aliased values to the real alias
+ * @param string $key Name of Directive
+ * @param array $aliases Hash of aliased values to the real alias
*/
- public function addValueAliases($key, $aliases) {
+ public function addValueAliases($key, $aliases)
+ {
if (!isset($this->info[$key]->aliases)) {
$this->info[$key]->aliases = array();
}
@@ -118,22 +137,21 @@ class HTMLPurifier_ConfigSchema {
* Defines a set of allowed values for a directive.
* @warning This is slightly different from the corresponding static
* method definition.
- * @param $namespace Namespace of directive
- * @param $name Name of directive
- * @param $allowed Lookup array of allowed values
+ * @param string $key Name of directive
+ * @param array $allowed Lookup array of allowed values
*/
- public function addAllowedValues($key, $allowed) {
+ public function addAllowedValues($key, $allowed)
+ {
$this->info[$key]->allowed = $allowed;
}
/**
* Defines a directive alias for backwards compatibility
- * @param $namespace
- * @param $name Directive that will be aliased
- * @param $new_namespace
- * @param $new_name Directive that the alias will be to
+ * @param string $key Directive that will be aliased
+ * @param string $new_key Directive that the alias will be to
*/
- public function addAlias($key, $new_key) {
+ public function addAlias($key, $new_key)
+ {
$obj = new stdclass;
$obj->key = $new_key;
$obj->isAlias = true;
@@ -143,7 +161,8 @@ class HTMLPurifier_ConfigSchema {
/**
* Replaces any stdclass that only has the type property with type integer.
*/
- public function postProcess() {
+ public function postProcess()
+ {
foreach ($this->info as $key => $v) {
if (count((array) $v) == 1) {
$this->info[$key] = $v->type;
@@ -152,7 +171,6 @@ class HTMLPurifier_ConfigSchema {
}
}
}
-
}
// vim: et sw=4 sts=4
diff --git a/library/HTMLPurifier/ConfigSchema/Builder/ConfigSchema.php b/library/HTMLPurifier/ConfigSchema/Builder/ConfigSchema.php
index c05668a70..d5906cd46 100644
--- a/library/HTMLPurifier/ConfigSchema/Builder/ConfigSchema.php
+++ b/library/HTMLPurifier/ConfigSchema/Builder/ConfigSchema.php
@@ -7,7 +7,12 @@
class HTMLPurifier_ConfigSchema_Builder_ConfigSchema
{
- public function build($interchange) {
+ /**
+ * @param HTMLPurifier_ConfigSchema_Interchange $interchange
+ * @return HTMLPurifier_ConfigSchema
+ */
+ public function build($interchange)
+ {
$schema = new HTMLPurifier_ConfigSchema();
foreach ($interchange->directives as $d) {
$schema->add(
@@ -38,7 +43,6 @@ class HTMLPurifier_ConfigSchema_Builder_ConfigSchema
$schema->postProcess();
return $schema;
}
-
}
// vim: et sw=4 sts=4
diff --git a/library/HTMLPurifier/ConfigSchema/Builder/Xml.php b/library/HTMLPurifier/ConfigSchema/Builder/Xml.php
index 244561a37..5fa56f7dd 100644
--- a/library/HTMLPurifier/ConfigSchema/Builder/Xml.php
+++ b/library/HTMLPurifier/ConfigSchema/Builder/Xml.php
@@ -7,10 +7,21 @@
class HTMLPurifier_ConfigSchema_Builder_Xml extends XMLWriter
{
+ /**
+ * @type HTMLPurifier_ConfigSchema_Interchange
+ */
protected $interchange;
+
+ /**
+ * @type string
+ */
private $namespace;
- protected function writeHTMLDiv($html) {
+ /**
+ * @param string $html
+ */
+ protected function writeHTMLDiv($html)
+ {
$this->startElement('div');
$purifier = HTMLPurifier::getInstance();
@@ -21,12 +32,23 @@ class HTMLPurifier_ConfigSchema_Builder_Xml extends XMLWriter
$this->endElement(); // div
}
- protected function export($var) {
- if ($var === array()) return 'array()';
+ /**
+ * @param mixed $var
+ * @return string
+ */
+ protected function export($var)
+ {
+ if ($var === array()) {
+ return 'array()';
+ }
return var_export($var, true);
}
- public function build($interchange) {
+ /**
+ * @param HTMLPurifier_ConfigSchema_Interchange $interchange
+ */
+ public function build($interchange)
+ {
// global access, only use as last resort
$this->interchange = $interchange;
@@ -39,19 +61,26 @@ class HTMLPurifier_ConfigSchema_Builder_Xml extends XMLWriter
$this->buildDirective($directive);
}
- if ($this->namespace) $this->endElement(); // namespace
+ if ($this->namespace) {
+ $this->endElement();
+ } // namespace
$this->endElement(); // configdoc
$this->flush();
}
- public function buildDirective($directive) {
-
+ /**
+ * @param HTMLPurifier_ConfigSchema_Interchange_Directive $directive
+ */
+ public function buildDirective($directive)
+ {
// Kludge, although I suppose having a notion of a "root namespace"
// certainly makes things look nicer when documentation is built.
// Depends on things being sorted.
if (!$this->namespace || $this->namespace !== $directive->id->getRootNamespace()) {
- if ($this->namespace) $this->endElement(); // namespace
+ if ($this->namespace) {
+ $this->endElement();
+ } // namespace
$this->namespace = $directive->id->getRootNamespace();
$this->startElement('namespace');
$this->writeAttribute('id', $this->namespace);
@@ -64,43 +93,52 @@ class HTMLPurifier_ConfigSchema_Builder_Xml extends XMLWriter
$this->writeElement('name', $directive->id->getDirective());
$this->startElement('aliases');
- foreach ($directive->aliases as $alias) $this->writeElement('alias', $alias->toString());
+ foreach ($directive->aliases as $alias) {
+ $this->writeElement('alias', $alias->toString());
+ }
$this->endElement(); // aliases
$this->startElement('constraints');
- if ($directive->version) $this->writeElement('version', $directive->version);
- $this->startElement('type');
- if ($directive->typeAllowsNull) $this->writeAttribute('allow-null', 'yes');
- $this->text($directive->type);
- $this->endElement(); // type
- if ($directive->allowed) {
- $this->startElement('allowed');
- foreach ($directive->allowed as $value => $x) $this->writeElement('value', $value);
- $this->endElement(); // allowed
+ if ($directive->version) {
+ $this->writeElement('version', $directive->version);
+ }
+ $this->startElement('type');
+ if ($directive->typeAllowsNull) {
+ $this->writeAttribute('allow-null', 'yes');
+ }
+ $this->text($directive->type);
+ $this->endElement(); // type
+ if ($directive->allowed) {
+ $this->startElement('allowed');
+ foreach ($directive->allowed as $value => $x) {
+ $this->writeElement('value', $value);
}
- $this->writeElement('default', $this->export($directive->default));
- $this->writeAttribute('xml:space', 'preserve');
- if ($directive->external) {
- $this->startElement('external');
- foreach ($directive->external as $project) $this->writeElement('project', $project);
- $this->endElement();
+ $this->endElement(); // allowed
+ }
+ $this->writeElement('default', $this->export($directive->default));
+ $this->writeAttribute('xml:space', 'preserve');
+ if ($directive->external) {
+ $this->startElement('external');
+ foreach ($directive->external as $project) {
+ $this->writeElement('project', $project);
}
+ $this->endElement();
+ }
$this->endElement(); // constraints
if ($directive->deprecatedVersion) {
$this->startElement('deprecated');
- $this->writeElement('version', $directive->deprecatedVersion);
- $this->writeElement('use', $directive->deprecatedUse->toString());
+ $this->writeElement('version', $directive->deprecatedVersion);
+ $this->writeElement('use', $directive->deprecatedUse->toString());
$this->endElement(); // deprecated
}
$this->startElement('description');
- $this->writeHTMLDiv($directive->description);
+ $this->writeHTMLDiv($directive->description);
$this->endElement(); // description
$this->endElement(); // directive
}
-
}
// vim: et sw=4 sts=4
diff --git a/library/HTMLPurifier/ConfigSchema/Interchange.php b/library/HTMLPurifier/ConfigSchema/Interchange.php
index 91a5aa730..0e08ae8fe 100644
--- a/library/HTMLPurifier/ConfigSchema/Interchange.php
+++ b/library/HTMLPurifier/ConfigSchema/Interchange.php
@@ -10,18 +10,23 @@ class HTMLPurifier_ConfigSchema_Interchange
/**
* Name of the application this schema is describing.
+ * @type string
*/
public $name;
/**
* Array of Directive ID => array(directive info)
+ * @type HTMLPurifier_ConfigSchema_Interchange_Directive[]
*/
public $directives = array();
/**
* Adds a directive array to $directives
+ * @param HTMLPurifier_ConfigSchema_Interchange_Directive $directive
+ * @throws HTMLPurifier_ConfigSchema_Exception
*/
- public function addDirective($directive) {
+ public function addDirective($directive)
+ {
if (isset($this->directives[$i = $directive->id->toString()])) {
throw new HTMLPurifier_ConfigSchema_Exception("Cannot redefine directive '$i'");
}
@@ -32,11 +37,11 @@ class HTMLPurifier_ConfigSchema_Interchange
* Convenience function to perform standard validation. Throws exception
* on failed validation.
*/
- public function validate() {
+ public function validate()
+ {
$validator = new HTMLPurifier_ConfigSchema_Validator();
return $validator->validate($this);
}
-
}
// vim: et sw=4 sts=4
diff --git a/library/HTMLPurifier/ConfigSchema/Interchange/Directive.php b/library/HTMLPurifier/ConfigSchema/Interchange/Directive.php
index ac8be0d97..127a39a67 100644
--- a/library/HTMLPurifier/ConfigSchema/Interchange/Directive.php
+++ b/library/HTMLPurifier/ConfigSchema/Interchange/Directive.php
@@ -7,71 +7,83 @@ class HTMLPurifier_ConfigSchema_Interchange_Directive
{
/**
- * ID of directive, instance of HTMLPurifier_ConfigSchema_Interchange_Id.
+ * ID of directive.
+ * @type HTMLPurifier_ConfigSchema_Interchange_Id
*/
public $id;
/**
- * String type, e.g. 'integer' or 'istring'.
+ * Type, e.g. 'integer' or 'istring'.
+ * @type string
*/
public $type;
/**
* Default value, e.g. 3 or 'DefaultVal'.
+ * @type mixed
*/
public $default;
/**
* HTML description.
+ * @type string
*/
public $description;
/**
- * Boolean whether or not null is allowed as a value.
+ * Whether or not null is allowed as a value.
+ * @type bool
*/
public $typeAllowsNull = false;
/**
- * Lookup table of allowed scalar values, e.g. array('allowed' => true).
+ * Lookup table of allowed scalar values.
+ * e.g. array('allowed' => true).
* Null if all values are allowed.
+ * @type array
*/
public $allowed;
/**
- * List of aliases for the directive,
+ * List of aliases for the directive.
* e.g. array(new HTMLPurifier_ConfigSchema_Interchange_Id('Ns', 'Dir'))).
+ * @type HTMLPurifier_ConfigSchema_Interchange_Id[]
*/
public $aliases = array();
/**
* Hash of value aliases, e.g. array('alt' => 'real'). Null if value
* aliasing is disabled (necessary for non-scalar types).
+ * @type array
*/
public $valueAliases;
/**
* Version of HTML Purifier the directive was introduced, e.g. '1.3.1'.
* Null if the directive has always existed.
+ * @type string
*/
public $version;
/**
- * ID of directive that supercedes this old directive, is an instance
- * of HTMLPurifier_ConfigSchema_Interchange_Id. Null if not deprecated.
+ * ID of directive that supercedes this old directive.
+ * Null if not deprecated.
+ * @type HTMLPurifier_ConfigSchema_Interchange_Id
*/
public $deprecatedUse;
/**
* Version of HTML Purifier this directive was deprecated. Null if not
* deprecated.
+ * @type string
*/
public $deprecatedVersion;
/**
* List of external projects this directive depends on, e.g. array('CSSTidy').
+ * @type array
*/
public $external = array();
-
}
// vim: et sw=4 sts=4
diff --git a/library/HTMLPurifier/ConfigSchema/Interchange/Id.php b/library/HTMLPurifier/ConfigSchema/Interchange/Id.php
index b9b3c6f5c..126f09d95 100644
--- a/library/HTMLPurifier/ConfigSchema/Interchange/Id.php
+++ b/library/HTMLPurifier/ConfigSchema/Interchange/Id.php
@@ -6,32 +6,53 @@
class HTMLPurifier_ConfigSchema_Interchange_Id
{
+ /**
+ * @type string
+ */
public $key;
- public function __construct($key) {
+ /**
+ * @param string $key
+ */
+ public function __construct($key)
+ {
$this->key = $key;
}
/**
+ * @return string
* @warning This is NOT magic, to ensure that people don't abuse SPL and
* cause problems for PHP 5.0 support.
*/
- public function toString() {
+ public function toString()
+ {
return $this->key;
}
- public function getRootNamespace() {
+ /**
+ * @return string
+ */
+ public function getRootNamespace()
+ {
return substr($this->key, 0, strpos($this->key, "."));
}
- public function getDirective() {
+ /**
+ * @return string
+ */
+ public function getDirective()
+ {
return substr($this->key, strpos($this->key, ".") + 1);
}
- public static function make($id) {
+ /**
+ * @param string $id
+ * @return HTMLPurifier_ConfigSchema_Interchange_Id
+ */
+ public static function make($id)
+ {
return new HTMLPurifier_ConfigSchema_Interchange_Id($id);
}
-
}
// vim: et sw=4 sts=4
diff --git a/library/HTMLPurifier/ConfigSchema/InterchangeBuilder.php b/library/HTMLPurifier/ConfigSchema/InterchangeBuilder.php
index 785b72ce8..655e6dd1b 100644
--- a/library/HTMLPurifier/ConfigSchema/InterchangeBuilder.php
+++ b/library/HTMLPurifier/ConfigSchema/InterchangeBuilder.php
@@ -5,21 +5,39 @@ class HTMLPurifier_ConfigSchema_InterchangeBuilder
/**
* Used for processing DEFAULT, nothing else.
+ * @type HTMLPurifier_VarParser
*/
protected $varParser;
- public function __construct($varParser = null) {
+ /**
+ * @param HTMLPurifier_VarParser $varParser
+ */
+ public function __construct($varParser = null)
+ {
$this->varParser = $varParser ? $varParser : new HTMLPurifier_VarParser_Native();
}
- public static function buildFromDirectory($dir = null) {
- $builder = new HTMLPurifier_ConfigSchema_InterchangeBuilder();
+ /**
+ * @param string $dir
+ * @return HTMLPurifier_ConfigSchema_Interchange
+ */
+ public static function buildFromDirectory($dir = null)
+ {
+ $builder = new HTMLPurifier_ConfigSchema_InterchangeBuilder();
$interchange = new HTMLPurifier_ConfigSchema_Interchange();
return $builder->buildDir($interchange, $dir);
}
- public function buildDir($interchange, $dir = null) {
- if (!$dir) $dir = HTMLPURIFIER_PREFIX . '/HTMLPurifier/ConfigSchema/schema';
+ /**
+ * @param HTMLPurifier_ConfigSchema_Interchange $interchange
+ * @param string $dir
+ * @return HTMLPurifier_ConfigSchema_Interchange
+ */
+ public function buildDir($interchange, $dir = null)
+ {
+ if (!$dir) {
+ $dir = HTMLPURIFIER_PREFIX . '/HTMLPurifier/ConfigSchema/schema';
+ }
if (file_exists($dir . '/info.ini')) {
$info = parse_ini_file($dir . '/info.ini');
$interchange->name = $info['name'];
@@ -39,24 +57,30 @@ class HTMLPurifier_ConfigSchema_InterchangeBuilder
foreach ($files as $file) {
$this->buildFile($interchange, $dir . '/' . $file);
}
-
return $interchange;
}
- public function buildFile($interchange, $file) {
+ /**
+ * @param HTMLPurifier_ConfigSchema_Interchange $interchange
+ * @param string $file
+ */
+ public function buildFile($interchange, $file)
+ {
$parser = new HTMLPurifier_StringHashParser();
$this->build(
$interchange,
- new HTMLPurifier_StringHash( $parser->parseFile($file) )
+ new HTMLPurifier_StringHash($parser->parseFile($file))
);
}
/**
* Builds an interchange object based on a hash.
- * @param $interchange HTMLPurifier_ConfigSchema_Interchange object to build
- * @param $hash HTMLPurifier_ConfigSchema_StringHash source data
+ * @param HTMLPurifier_ConfigSchema_Interchange $interchange HTMLPurifier_ConfigSchema_Interchange object to build
+ * @param HTMLPurifier_StringHash $hash source data
+ * @throws HTMLPurifier_ConfigSchema_Exception
*/
- public function build($interchange, $hash) {
+ public function build($interchange, $hash)
+ {
if (!$hash instanceof HTMLPurifier_StringHash) {
$hash = new HTMLPurifier_StringHash($hash);
}
@@ -75,7 +99,13 @@ class HTMLPurifier_ConfigSchema_InterchangeBuilder
$this->_findUnused($hash);
}
- public function buildDirective($interchange, $hash) {
+ /**
+ * @param HTMLPurifier_ConfigSchema_Interchange $interchange
+ * @param HTMLPurifier_StringHash $hash
+ * @throws HTMLPurifier_ConfigSchema_Exception
+ */
+ public function buildDirective($interchange, $hash)
+ {
$directive = new HTMLPurifier_ConfigSchema_Interchange_Directive();
// These are required elements:
@@ -84,7 +114,9 @@ class HTMLPurifier_ConfigSchema_InterchangeBuilder
if (isset($hash['TYPE'])) {
$type = explode('/', $hash->offsetGet('TYPE'));
- if (isset($type[1])) $directive->typeAllowsNull = true;
+ if (isset($type[1])) {
+ $directive->typeAllowsNull = true;
+ }
$directive->type = $type[0];
} else {
throw new HTMLPurifier_ConfigSchema_Exception("TYPE in directive hash '$id' not defined");
@@ -92,7 +124,11 @@ class HTMLPurifier_ConfigSchema_InterchangeBuilder
if (isset($hash['DEFAULT'])) {
try {
- $directive->default = $this->varParser->parse($hash->offsetGet('DEFAULT'), $directive->type, $directive->typeAllowsNull);
+ $directive->default = $this->varParser->parse(
+ $hash->offsetGet('DEFAULT'),
+ $directive->type,
+ $directive->typeAllowsNull
+ );
} catch (HTMLPurifier_VarParserException $e) {
throw new HTMLPurifier_ConfigSchema_Exception($e->getMessage() . " in DEFAULT in directive hash '$id'");
}
@@ -139,34 +175,45 @@ class HTMLPurifier_ConfigSchema_InterchangeBuilder
/**
* Evaluates an array PHP code string without array() wrapper
+ * @param string $contents
*/
- protected function evalArray($contents) {
- return eval('return array('. $contents .');');
+ protected function evalArray($contents)
+ {
+ return eval('return array(' . $contents . ');');
}
/**
* Converts an array list into a lookup array.
+ * @param array $array
+ * @return array
*/
- protected function lookup($array) {
+ protected function lookup($array)
+ {
$ret = array();
- foreach ($array as $val) $ret[$val] = true;
+ foreach ($array as $val) {
+ $ret[$val] = true;
+ }
return $ret;
}
/**
* Convenience function that creates an HTMLPurifier_ConfigSchema_Interchange_Id
* object based on a string Id.
+ * @param string $id
+ * @return HTMLPurifier_ConfigSchema_Interchange_Id
*/
- protected function id($id) {
+ protected function id($id)
+ {
return HTMLPurifier_ConfigSchema_Interchange_Id::make($id);
}
/**
* Triggers errors for any unused keys passed in the hash; such keys
* may indicate typos, missing values, etc.
- * @param $hash Instance of ConfigSchema_StringHash to check.
+ * @param HTMLPurifier_StringHash $hash Hash to check.
*/
- protected function _findUnused($hash) {
+ protected function _findUnused($hash)
+ {
$accessed = $hash->getAccessed();
foreach ($hash as $k => $v) {
if (!isset($accessed[$k])) {
@@ -174,7 +221,6 @@ class HTMLPurifier_ConfigSchema_InterchangeBuilder
}
}
}
-
}
// vim: et sw=4 sts=4
diff --git a/library/HTMLPurifier/ConfigSchema/Validator.php b/library/HTMLPurifier/ConfigSchema/Validator.php
index f374f6a02..fb3127788 100644
--- a/library/HTMLPurifier/ConfigSchema/Validator.php
+++ b/library/HTMLPurifier/ConfigSchema/Validator.php
@@ -12,36 +12,48 @@ class HTMLPurifier_ConfigSchema_Validator
{
/**
- * Easy to access global objects.
+ * @type HTMLPurifier_ConfigSchema_Interchange
*/
- protected $interchange, $aliases;
+ protected $interchange;
+
+ /**
+ * @type array
+ */
+ protected $aliases;
/**
* Context-stack to provide easy to read error messages.
+ * @type array
*/
protected $context = array();
/**
- * HTMLPurifier_VarParser to test default's type.
+ * to test default's type.
+ * @type HTMLPurifier_VarParser
*/
protected $parser;
- public function __construct() {
+ public function __construct()
+ {
$this->parser = new HTMLPurifier_VarParser();
}
/**
- * Validates a fully-formed interchange object. Throws an
- * HTMLPurifier_ConfigSchema_Exception if there's a problem.
+ * Validates a fully-formed interchange object.
+ * @param HTMLPurifier_ConfigSchema_Interchange $interchange
+ * @return bool
*/
- public function validate($interchange) {
+ public function validate($interchange)
+ {
$this->interchange = $interchange;
$this->aliases = array();
// PHP is a bit lax with integer <=> string conversions in
// arrays, so we don't use the identical !== comparison
foreach ($interchange->directives as $i => $directive) {
$id = $directive->id->toString();
- if ($i != $id) $this->error(false, "Integrity violation: key '$i' does not match internal id '$id'");
+ if ($i != $id) {
+ $this->error(false, "Integrity violation: key '$i' does not match internal id '$id'");
+ }
$this->validateDirective($directive);
}
return true;
@@ -49,8 +61,10 @@ class HTMLPurifier_ConfigSchema_Validator
/**
* Validates a HTMLPurifier_ConfigSchema_Interchange_Id object.
+ * @param HTMLPurifier_ConfigSchema_Interchange_Id $id
*/
- public function validateId($id) {
+ public function validateId($id)
+ {
$id_string = $id->toString();
$this->context[] = "id '$id_string'";
if (!$id instanceof HTMLPurifier_ConfigSchema_Interchange_Id) {
@@ -67,8 +81,10 @@ class HTMLPurifier_ConfigSchema_Validator
/**
* Validates a HTMLPurifier_ConfigSchema_Interchange_Directive object.
+ * @param HTMLPurifier_ConfigSchema_Interchange_Directive $d
*/
- public function validateDirective($d) {
+ public function validateDirective($d)
+ {
$id = $d->id->toString();
$this->context[] = "directive '$id'";
$this->validateId($d->id);
@@ -108,9 +124,13 @@ class HTMLPurifier_ConfigSchema_Validator
/**
* Extra validation if $allowed member variable of
* HTMLPurifier_ConfigSchema_Interchange_Directive is defined.
+ * @param HTMLPurifier_ConfigSchema_Interchange_Directive $d
*/
- public function validateDirectiveAllowed($d) {
- if (is_null($d->allowed)) return;
+ public function validateDirectiveAllowed($d)
+ {
+ if (is_null($d->allowed)) {
+ return;
+ }
$this->with($d, 'allowed')
->assertNotEmpty()
->assertIsLookup(); // handled by InterchangeBuilder
@@ -119,7 +139,9 @@ class HTMLPurifier_ConfigSchema_Validator
}
$this->context[] = 'allowed';
foreach ($d->allowed as $val => $x) {
- if (!is_string($val)) $this->error("value $val", 'must be a string');
+ if (!is_string($val)) {
+ $this->error("value $val", 'must be a string');
+ }
}
array_pop($this->context);
}
@@ -127,15 +149,23 @@ class HTMLPurifier_ConfigSchema_Validator
/**
* Extra validation if $valueAliases member variable of
* HTMLPurifier_ConfigSchema_Interchange_Directive is defined.
+ * @param HTMLPurifier_ConfigSchema_Interchange_Directive $d
*/
- public function validateDirectiveValueAliases($d) {
- if (is_null($d->valueAliases)) return;
+ public function validateDirectiveValueAliases($d)
+ {
+ if (is_null($d->valueAliases)) {
+ return;
+ }
$this->with($d, 'valueAliases')
->assertIsArray(); // handled by InterchangeBuilder
$this->context[] = 'valueAliases';
foreach ($d->valueAliases as $alias => $real) {
- if (!is_string($alias)) $this->error("alias $alias", 'must be a string');
- if (!is_string($real)) $this->error("alias target $real from alias '$alias'", 'must be a string');
+ if (!is_string($alias)) {
+ $this->error("alias $alias", 'must be a string');
+ }
+ if (!is_string($real)) {
+ $this->error("alias target $real from alias '$alias'", 'must be a string');
+ }
if ($alias === $real) {
$this->error("alias '$alias'", "must not be an alias to itself");
}
@@ -155,8 +185,10 @@ class HTMLPurifier_ConfigSchema_Validator
/**
* Extra validation if $aliases member variable of
* HTMLPurifier_ConfigSchema_Interchange_Directive is defined.
+ * @param HTMLPurifier_ConfigSchema_Interchange_Directive $d
*/
- public function validateDirectiveAliases($d) {
+ public function validateDirectiveAliases($d)
+ {
$this->with($d, 'aliases')
->assertIsArray(); // handled by InterchangeBuilder
$this->context[] = 'aliases';
@@ -180,27 +212,37 @@ class HTMLPurifier_ConfigSchema_Validator
/**
* Convenience function for generating HTMLPurifier_ConfigSchema_ValidatorAtom
* for validating simple member variables of objects.
+ * @param $obj
+ * @param $member
+ * @return HTMLPurifier_ConfigSchema_ValidatorAtom
*/
- protected function with($obj, $member) {
+ protected function with($obj, $member)
+ {
return new HTMLPurifier_ConfigSchema_ValidatorAtom($this->getFormattedContext(), $obj, $member);
}
/**
* Emits an error, providing helpful context.
+ * @throws HTMLPurifier_ConfigSchema_Exception
*/
- protected function error($target, $msg) {
- if ($target !== false) $prefix = ucfirst($target) . ' in ' . $this->getFormattedContext();
- else $prefix = ucfirst($this->getFormattedContext());
+ protected function error($target, $msg)
+ {
+ if ($target !== false) {
+ $prefix = ucfirst($target) . ' in ' . $this->getFormattedContext();
+ } else {
+ $prefix = ucfirst($this->getFormattedContext());
+ }
throw new HTMLPurifier_ConfigSchema_Exception(trim($prefix . ' ' . $msg));
}
/**
* Returns a formatted context string.
+ * @return string
*/
- protected function getFormattedContext() {
+ protected function getFormattedContext()
+ {
return implode(' in ', array_reverse($this->context));
}
-
}
// vim: et sw=4 sts=4
diff --git a/library/HTMLPurifier/ConfigSchema/ValidatorAtom.php b/library/HTMLPurifier/ConfigSchema/ValidatorAtom.php
index b95aea18c..c9aa3644a 100644
--- a/library/HTMLPurifier/ConfigSchema/ValidatorAtom.php
+++ b/library/HTMLPurifier/ConfigSchema/ValidatorAtom.php
@@ -8,59 +8,123 @@
*/
class HTMLPurifier_ConfigSchema_ValidatorAtom
{
+ /**
+ * @type string
+ */
+ protected $context;
- protected $context, $obj, $member, $contents;
+ /**
+ * @type object
+ */
+ protected $obj;
- public function __construct($context, $obj, $member) {
- $this->context = $context;
- $this->obj = $obj;
- $this->member = $member;
- $this->contents =& $obj->$member;
+ /**
+ * @type string
+ */
+ protected $member;
+
+ /**
+ * @type mixed
+ */
+ protected $contents;
+
+ public function __construct($context, $obj, $member)
+ {
+ $this->context = $context;
+ $this->obj = $obj;
+ $this->member = $member;
+ $this->contents =& $obj->$member;
}
- public function assertIsString() {
- if (!is_string($this->contents)) $this->error('must be a string');
+ /**
+ * @return HTMLPurifier_ConfigSchema_ValidatorAtom
+ */
+ public function assertIsString()
+ {
+ if (!is_string($this->contents)) {
+ $this->error('must be a string');
+ }
return $this;
}
- public function assertIsBool() {
- if (!is_bool($this->contents)) $this->error('must be a boolean');
+ /**
+ * @return HTMLPurifier_ConfigSchema_ValidatorAtom
+ */
+ public function assertIsBool()
+ {
+ if (!is_bool($this->contents)) {
+ $this->error('must be a boolean');
+ }
return $this;
}
- public function assertIsArray() {
- if (!is_array($this->contents)) $this->error('must be an array');
+ /**
+ * @return HTMLPurifier_ConfigSchema_ValidatorAtom
+ */
+ public function assertIsArray()
+ {
+ if (!is_array($this->contents)) {
+ $this->error('must be an array');
+ }
return $this;
}
- public function assertNotNull() {
- if ($this->contents === null) $this->error('must not be null');
+ /**
+ * @return HTMLPurifier_ConfigSchema_ValidatorAtom
+ */
+ public function assertNotNull()
+ {
+ if ($this->contents === null) {
+ $this->error('must not be null');
+ }
return $this;
}
- public function assertAlnum() {
+ /**
+ * @return HTMLPurifier_ConfigSchema_ValidatorAtom
+ */
+ public function assertAlnum()
+ {
$this->assertIsString();
- if (!ctype_alnum($this->contents)) $this->error('must be alphanumeric');
+ if (!ctype_alnum($this->contents)) {
+ $this->error('must be alphanumeric');
+ }
return $this;
}
- public function assertNotEmpty() {
- if (empty($this->contents)) $this->error('must not be empty');
+ /**
+ * @return HTMLPurifier_ConfigSchema_ValidatorAtom
+ */
+ public function assertNotEmpty()
+ {
+ if (empty($this->contents)) {
+ $this->error('must not be empty');
+ }
return $this;
}
- public function assertIsLookup() {
+ /**
+ * @return HTMLPurifier_ConfigSchema_ValidatorAtom
+ */
+ public function assertIsLookup()
+ {
$this->assertIsArray();
foreach ($this->contents as $v) {
- if ($v !== true) $this->error('must be a lookup array');
+ if ($v !== true) {
+ $this->error('must be a lookup array');
+ }
}
return $this;
}
- protected function error($msg) {
+ /**
+ * @param string $msg
+ * @throws HTMLPurifier_ConfigSchema_Exception
+ */
+ protected function error($msg)
+ {
throw new HTMLPurifier_ConfigSchema_Exception(ucfirst($this->member) . ' in ' . $this->context . ' ' . $msg);
}
-
}
// vim: et sw=4 sts=4
diff --git a/library/HTMLPurifier/ConfigSchema/schema.ser b/library/HTMLPurifier/ConfigSchema/schema.ser
index 22b8d54a5..22ea32185 100644
--- a/library/HTMLPurifier/ConfigSchema/schema.ser
+++ b/library/HTMLPurifier/ConfigSchema/schema.ser
Binary files differ
diff --git a/library/HTMLPurifier/ConfigSchema/schema/CSS.AllowedFonts.txt b/library/HTMLPurifier/ConfigSchema/schema/CSS.AllowedFonts.txt
new file mode 100644
index 000000000..3fd465406
--- /dev/null
+++ b/library/HTMLPurifier/ConfigSchema/schema/CSS.AllowedFonts.txt
@@ -0,0 +1,12 @@
+CSS.AllowedFonts
+TYPE: lookup/null
+VERSION: 4.3.0
+DEFAULT: NULL
+--DESCRIPTION--
+<p>
+ Allows you to manually specify a set of allowed fonts. If
+ <code>NULL</code>, all fonts are allowed. This directive
+ affects generic names (serif, sans-serif, monospace, cursive,
+ fantasy) as well as specific font families.
+</p>
+--# vim: et sw=4 sts=4
diff --git a/library/HTMLPurifier/ConfigSchema/schema/CSS.ForbiddenProperties.txt b/library/HTMLPurifier/ConfigSchema/schema/CSS.ForbiddenProperties.txt
new file mode 100644
index 000000000..f1f5c5f12
--- /dev/null
+++ b/library/HTMLPurifier/ConfigSchema/schema/CSS.ForbiddenProperties.txt
@@ -0,0 +1,13 @@
+CSS.ForbiddenProperties
+TYPE: lookup
+VERSION: 4.2.0
+DEFAULT: array()
+--DESCRIPTION--
+<p>
+ This is the logical inverse of %CSS.AllowedProperties, and it will
+ override that directive or any other directive. If possible,
+ %CSS.AllowedProperties is recommended over this directive,
+ because it can sometimes be difficult to tell whether or not you've
+ forbidden all of the CSS properties you truly would like to disallow.
+</p>
+--# vim: et sw=4 sts=4
diff --git a/library/HTMLPurifier/ConfigSchema/schema/CSS.Trusted.txt b/library/HTMLPurifier/ConfigSchema/schema/CSS.Trusted.txt
new file mode 100644
index 000000000..e733a61e8
--- /dev/null
+++ b/library/HTMLPurifier/ConfigSchema/schema/CSS.Trusted.txt
@@ -0,0 +1,9 @@
+CSS.Trusted
+TYPE: bool
+VERSION: 4.2.1
+DEFAULT: false
+--DESCRIPTION--
+Indicates whether or not the user's CSS input is trusted or not. If the
+input is trusted, a more expansive set of allowed properties. See
+also %HTML.Trusted.
+--# vim: et sw=4 sts=4
diff --git a/library/HTMLPurifier/ConfigSchema/schema/Cache.SerializerPermissions.txt b/library/HTMLPurifier/ConfigSchema/schema/Cache.SerializerPermissions.txt
new file mode 100644
index 000000000..b2b83d9ab
--- /dev/null
+++ b/library/HTMLPurifier/ConfigSchema/schema/Cache.SerializerPermissions.txt
@@ -0,0 +1,11 @@
+Cache.SerializerPermissions
+TYPE: int
+VERSION: 4.3.0
+DEFAULT: 0755
+--DESCRIPTION--
+
+<p>
+ Directory permissions of the files and directories created inside
+ the DefinitionCache/Serializer or other custom serializer path.
+</p>
+--# vim: et sw=4 sts=4
diff --git a/library/HTMLPurifier/ConfigSchema/schema/Core.AllowHostnameUnderscore.txt b/library/HTMLPurifier/ConfigSchema/schema/Core.AllowHostnameUnderscore.txt
new file mode 100644
index 000000000..2c910cc7d
--- /dev/null
+++ b/library/HTMLPurifier/ConfigSchema/schema/Core.AllowHostnameUnderscore.txt
@@ -0,0 +1,16 @@
+Core.AllowHostnameUnderscore
+TYPE: bool
+VERSION: 4.6.0
+DEFAULT: false
+--DESCRIPTION--
+<p>
+ By RFC 1123, underscores are not permitted in host names.
+ (This is in contrast to the specification for DNS, RFC
+ 2181, which allows underscores.)
+ However, most browsers do the right thing when faced with
+ an underscore in the host name, and so some poorly written
+ websites are written with the expectation this should work.
+ Setting this parameter to true relaxes our allowed character
+ check so that underscores are permitted.
+</p>
+--# vim: et sw=4 sts=4
diff --git a/library/HTMLPurifier/ConfigSchema/schema/Core.ColorKeywords.txt b/library/HTMLPurifier/ConfigSchema/schema/Core.ColorKeywords.txt
index 08b381d34..c572c14ec 100644
--- a/library/HTMLPurifier/ConfigSchema/schema/Core.ColorKeywords.txt
+++ b/library/HTMLPurifier/ConfigSchema/schema/Core.ColorKeywords.txt
@@ -24,5 +24,6 @@ array (
--DESCRIPTION--
Lookup array of color names to six digit hexadecimal number corresponding
-to color, with preceding hash mark. Used when parsing colors.
+to color, with preceding hash mark. Used when parsing colors. The lookup
+is done in a case-insensitive manner.
--# vim: et sw=4 sts=4
diff --git a/library/HTMLPurifier/ConfigSchema/schema/Core.DisableExcludes.txt b/library/HTMLPurifier/ConfigSchema/schema/Core.DisableExcludes.txt
new file mode 100644
index 000000000..1cd4c2c96
--- /dev/null
+++ b/library/HTMLPurifier/ConfigSchema/schema/Core.DisableExcludes.txt
@@ -0,0 +1,14 @@
+Core.DisableExcludes
+TYPE: bool
+DEFAULT: false
+VERSION: 4.5.0
+--DESCRIPTION--
+<p>
+ This directive disables SGML-style exclusions, e.g. the exclusion of
+ <code>&lt;object&gt;</code> in any descendant of a
+ <code>&lt;pre&gt;</code> tag. Disabling excludes will allow some
+ invalid documents to pass through HTML Purifier, but HTML Purifier
+ will also be less likely to accidentally remove large documents during
+ processing.
+</p>
+--# vim: et sw=4 sts=4
diff --git a/library/HTMLPurifier/ConfigSchema/schema/Core.EnableIDNA.txt b/library/HTMLPurifier/ConfigSchema/schema/Core.EnableIDNA.txt
new file mode 100644
index 000000000..ce243c35d
--- /dev/null
+++ b/library/HTMLPurifier/ConfigSchema/schema/Core.EnableIDNA.txt
@@ -0,0 +1,9 @@
+Core.EnableIDNA
+TYPE: bool
+DEFAULT: false
+VERSION: 4.4.0
+--DESCRIPTION--
+Allows international domain names in URLs. This configuration option
+requires the PEAR Net_IDNA2 module to be installed. It operates by
+punycoding any internationalized host names for maximum portability.
+--# vim: et sw=4 sts=4
diff --git a/library/HTMLPurifier/ConfigSchema/schema/Core.EscapeInvalidChildren.txt b/library/HTMLPurifier/ConfigSchema/schema/Core.EscapeInvalidChildren.txt
index 4d5b5055c..a3881be75 100644
--- a/library/HTMLPurifier/ConfigSchema/schema/Core.EscapeInvalidChildren.txt
+++ b/library/HTMLPurifier/ConfigSchema/schema/Core.EscapeInvalidChildren.txt
@@ -2,9 +2,11 @@ Core.EscapeInvalidChildren
TYPE: bool
DEFAULT: false
--DESCRIPTION--
-When true, a child is found that is not allowed in the context of the
+<p><strong>Warning:</strong> this configuration option is no longer does anything as of 4.6.0.</p>
+
+<p>When true, a child is found that is not allowed in the context of the
parent element will be transformed into text as if it were ASCII. When
false, that element and all internal tags will be dropped, though text will
be preserved. There is no option for dropping the element but preserving
-child nodes.
+child nodes.</p>
--# vim: et sw=4 sts=4
diff --git a/library/HTMLPurifier/ConfigSchema/schema/Core.NormalizeNewlines.txt b/library/HTMLPurifier/ConfigSchema/schema/Core.NormalizeNewlines.txt
new file mode 100644
index 000000000..d77f5360d
--- /dev/null
+++ b/library/HTMLPurifier/ConfigSchema/schema/Core.NormalizeNewlines.txt
@@ -0,0 +1,11 @@
+Core.NormalizeNewlines
+TYPE: bool
+VERSION: 4.2.0
+DEFAULT: true
+--DESCRIPTION--
+<p>
+ Whether or not to normalize newlines to the operating
+ system default. When <code>false</code>, HTML Purifier
+ will attempt to preserve mixed newline files.
+</p>
+--# vim: et sw=4 sts=4
diff --git a/library/HTMLPurifier/ConfigSchema/schema/Core.RemoveProcessingInstructions.txt b/library/HTMLPurifier/ConfigSchema/schema/Core.RemoveProcessingInstructions.txt
new file mode 100644
index 000000000..3397d9f71
--- /dev/null
+++ b/library/HTMLPurifier/ConfigSchema/schema/Core.RemoveProcessingInstructions.txt
@@ -0,0 +1,11 @@
+Core.RemoveProcessingInstructions
+TYPE: bool
+VERSION: 4.2.0
+DEFAULT: false
+--DESCRIPTION--
+Instead of escaping processing instructions in the form <code>&lt;? ...
+?&gt;</code>, remove it out-right. This may be useful if the HTML
+you are validating contains XML processing instruction gunk, however,
+it can also be user-unfriendly for people attempting to post PHP
+snippets.
+--# vim: et sw=4 sts=4
diff --git a/library/HTMLPurifier/ConfigSchema/schema/Filter.YouTube.txt b/library/HTMLPurifier/ConfigSchema/schema/Filter.YouTube.txt
index 7fa6536b2..321eaa2d8 100644
--- a/library/HTMLPurifier/ConfigSchema/schema/Filter.YouTube.txt
+++ b/library/HTMLPurifier/ConfigSchema/schema/Filter.YouTube.txt
@@ -4,6 +4,11 @@ VERSION: 3.1.0
DEFAULT: false
--DESCRIPTION--
<p>
+ <strong>Warning:</strong> Deprecated in favor of %HTML.SafeObject and
+ %Output.FlashCompat (turn both on to allow YouTube videos and other
+ Flash content).
+</p>
+<p>
This directive enables YouTube video embedding in HTML Purifier. Check
<a href="http://htmlpurifier.org/docs/enduser-youtube.html">this document
on embedding videos</a> for more information on what this filter does.
diff --git a/library/HTMLPurifier/ConfigSchema/schema/HTML.Allowed.txt b/library/HTMLPurifier/ConfigSchema/schema/HTML.Allowed.txt
index 3e231d2d1..0b2c106da 100644
--- a/library/HTMLPurifier/ConfigSchema/schema/HTML.Allowed.txt
+++ b/library/HTMLPurifier/ConfigSchema/schema/HTML.Allowed.txt
@@ -5,11 +5,14 @@ DEFAULT: NULL
--DESCRIPTION--
<p>
- This is a convenience directive that rolls the functionality of
- %HTML.AllowedElements and %HTML.AllowedAttributes into one directive.
+ This is a preferred convenience directive that combines
+ %HTML.AllowedElements and %HTML.AllowedAttributes.
Specify elements and attributes that are allowed using:
- <code>element1[attr1|attr2],element2...</code>. You can also use
- newlines instead of commas to separate elements.
+ <code>element1[attr1|attr2],element2...</code>. For example,
+ if you would like to only allow paragraphs and links, specify
+ <code>a[href],p</code>. You can specify attributes that apply
+ to all elements using an asterisk, e.g. <code>*[lang]</code>.
+ You can also use newlines instead of commas to separate elements.
</p>
<p>
<strong>Warning</strong>:
diff --git a/library/HTMLPurifier/ConfigSchema/schema/HTML.AllowedComments.txt b/library/HTMLPurifier/ConfigSchema/schema/HTML.AllowedComments.txt
new file mode 100644
index 000000000..140e21423
--- /dev/null
+++ b/library/HTMLPurifier/ConfigSchema/schema/HTML.AllowedComments.txt
@@ -0,0 +1,10 @@
+HTML.AllowedComments
+TYPE: lookup
+VERSION: 4.4.0
+DEFAULT: array()
+--DESCRIPTION--
+A whitelist which indicates what explicit comment bodies should be
+allowed, modulo leading and trailing whitespace. See also %HTML.AllowedCommentsRegexp
+(these directives are union'ed together, so a comment is considered
+valid if any directive deems it valid.)
+--# vim: et sw=4 sts=4
diff --git a/library/HTMLPurifier/ConfigSchema/schema/HTML.AllowedCommentsRegexp.txt b/library/HTMLPurifier/ConfigSchema/schema/HTML.AllowedCommentsRegexp.txt
new file mode 100644
index 000000000..f22e977d4
--- /dev/null
+++ b/library/HTMLPurifier/ConfigSchema/schema/HTML.AllowedCommentsRegexp.txt
@@ -0,0 +1,15 @@
+HTML.AllowedCommentsRegexp
+TYPE: string/null
+VERSION: 4.4.0
+DEFAULT: NULL
+--DESCRIPTION--
+A regexp, which if it matches the body of a comment, indicates that
+it should be allowed. Trailing and leading spaces are removed prior
+to running this regular expression.
+<strong>Warning:</strong> Make sure you specify
+correct anchor metacharacters <code>^regex$</code>, otherwise you may accept
+comments that you did not mean to! In particular, the regex <code>/foo|bar/</code>
+is probably not sufficiently strict, since it also allows <code>foobar</code>.
+See also %HTML.AllowedComments (these directives are union'ed together,
+so a comment is considered valid if any directive deems it valid.)
+--# vim: et sw=4 sts=4
diff --git a/library/HTMLPurifier/ConfigSchema/schema/HTML.AllowedElements.txt b/library/HTMLPurifier/ConfigSchema/schema/HTML.AllowedElements.txt
index 888d55819..1d3fa7907 100644
--- a/library/HTMLPurifier/ConfigSchema/schema/HTML.AllowedElements.txt
+++ b/library/HTMLPurifier/ConfigSchema/schema/HTML.AllowedElements.txt
@@ -4,12 +4,17 @@ VERSION: 1.3.0
DEFAULT: NULL
--DESCRIPTION--
<p>
- If HTML Purifier's tag set is unsatisfactory for your needs, you
- can overload it with your own list of tags to allow. Note that this
- method is subtractive: it does its job by taking away from HTML Purifier
- usual feature set, so you cannot add a tag that HTML Purifier never
- supported in the first place (like embed, form or head). If you
- change this, you probably also want to change %HTML.AllowedAttributes.
+ If HTML Purifier's tag set is unsatisfactory for your needs, you can
+ overload it with your own list of tags to allow. If you change
+ this, you probably also want to change %HTML.AllowedAttributes; see
+ also %HTML.Allowed which lets you set allowed elements and
+ attributes at the same time.
+</p>
+<p>
+ If you attempt to allow an element that HTML Purifier does not know
+ about, HTML Purifier will raise an error. You will need to manually
+ tell HTML Purifier about this element by using the
+ <a href="http://htmlpurifier.org/docs/enduser-customize.html">advanced customization features.</a>
</p>
<p>
<strong>Warning:</strong> If another directive conflicts with the
diff --git a/library/HTMLPurifier/ConfigSchema/schema/HTML.FlashAllowFullScreen.txt b/library/HTMLPurifier/ConfigSchema/schema/HTML.FlashAllowFullScreen.txt
new file mode 100644
index 000000000..7878dc0bf
--- /dev/null
+++ b/library/HTMLPurifier/ConfigSchema/schema/HTML.FlashAllowFullScreen.txt
@@ -0,0 +1,11 @@
+HTML.FlashAllowFullScreen
+TYPE: bool
+VERSION: 4.2.0
+DEFAULT: false
+--DESCRIPTION--
+<p>
+ Whether or not to permit embedded Flash content from
+ %HTML.SafeObject to expand to the full screen. Corresponds to
+ the <code>allowFullScreen</code> parameter.
+</p>
+--# vim: et sw=4 sts=4
diff --git a/library/HTMLPurifier/ConfigSchema/schema/HTML.Nofollow.txt b/library/HTMLPurifier/ConfigSchema/schema/HTML.Nofollow.txt
new file mode 100644
index 000000000..700b30924
--- /dev/null
+++ b/library/HTMLPurifier/ConfigSchema/schema/HTML.Nofollow.txt
@@ -0,0 +1,7 @@
+HTML.Nofollow
+TYPE: bool
+VERSION: 4.3.0
+DEFAULT: FALSE
+--DESCRIPTION--
+If enabled, nofollow rel attributes are added to all outgoing links.
+--# vim: et sw=4 sts=4
diff --git a/library/HTMLPurifier/ConfigSchema/schema/HTML.SafeIframe.txt b/library/HTMLPurifier/ConfigSchema/schema/HTML.SafeIframe.txt
new file mode 100644
index 000000000..5eb6ec2b5
--- /dev/null
+++ b/library/HTMLPurifier/ConfigSchema/schema/HTML.SafeIframe.txt
@@ -0,0 +1,13 @@
+HTML.SafeIframe
+TYPE: bool
+VERSION: 4.4.0
+DEFAULT: false
+--DESCRIPTION--
+<p>
+ Whether or not to permit iframe tags in untrusted documents. This
+ directive must be accompanied by a whitelist of permitted iframes,
+ such as %URI.SafeIframeRegexp, otherwise it will fatally error.
+ This directive has no effect on strict doctypes, as iframes are not
+ valid.
+</p>
+--# vim: et sw=4 sts=4
diff --git a/library/HTMLPurifier/ConfigSchema/schema/HTML.SafeScripting.txt b/library/HTMLPurifier/ConfigSchema/schema/HTML.SafeScripting.txt
new file mode 100644
index 000000000..5ebc7a19d
--- /dev/null
+++ b/library/HTMLPurifier/ConfigSchema/schema/HTML.SafeScripting.txt
@@ -0,0 +1,10 @@
+HTML.SafeScripting
+TYPE: lookup
+VERSION: 4.5.0
+DEFAULT: array()
+--DESCRIPTION--
+<p>
+ Whether or not to permit script tags to external scripts in documents.
+ Inline scripting is not allowed, and the script must match an explicit whitelist.
+</p>
+--# vim: et sw=4 sts=4
diff --git a/library/HTMLPurifier/ConfigSchema/schema/HTML.TargetBlank.txt b/library/HTMLPurifier/ConfigSchema/schema/HTML.TargetBlank.txt
new file mode 100644
index 000000000..587a16778
--- /dev/null
+++ b/library/HTMLPurifier/ConfigSchema/schema/HTML.TargetBlank.txt
@@ -0,0 +1,8 @@
+HTML.TargetBlank
+TYPE: bool
+VERSION: 4.4.0
+DEFAULT: FALSE
+--DESCRIPTION--
+If enabled, <code>target=blank</code> attributes are added to all outgoing links.
+(This includes links from an HTTPS version of a page to an HTTP version.)
+--# vim: et sw=4 sts=4
diff --git a/library/HTMLPurifier/ConfigSchema/schema/HTML.Trusted.txt b/library/HTMLPurifier/ConfigSchema/schema/HTML.Trusted.txt
index 89133b1a3..1db9237e9 100644
--- a/library/HTMLPurifier/ConfigSchema/schema/HTML.Trusted.txt
+++ b/library/HTMLPurifier/ConfigSchema/schema/HTML.Trusted.txt
@@ -5,4 +5,5 @@ DEFAULT: false
--DESCRIPTION--
Indicates whether or not the user input is trusted or not. If the input is
trusted, a more expansive set of allowed tags and attributes will be used.
+See also %CSS.Trusted.
--# vim: et sw=4 sts=4
diff --git a/library/HTMLPurifier/ConfigSchema/schema/Output.FixInnerHTML.txt b/library/HTMLPurifier/ConfigSchema/schema/Output.FixInnerHTML.txt
new file mode 100644
index 000000000..d6f0d9f29
--- /dev/null
+++ b/library/HTMLPurifier/ConfigSchema/schema/Output.FixInnerHTML.txt
@@ -0,0 +1,15 @@
+Output.FixInnerHTML
+TYPE: bool
+VERSION: 4.3.0
+DEFAULT: true
+--DESCRIPTION--
+<p>
+ If true, HTML Purifier will protect against Internet Explorer's
+ mishandling of the <code>innerHTML</code> attribute by appending
+ a space to any attribute that does not contain angled brackets, spaces
+ or quotes, but contains a backtick. This slightly changes the
+ semantics of any given attribute, so if this is unacceptable and
+ you do not use <code>innerHTML</code> on any of your pages, you can
+ turn this directive off.
+</p>
+--# vim: et sw=4 sts=4
diff --git a/library/HTMLPurifier/ConfigSchema/schema/URI.AllowedSchemes.txt b/library/HTMLPurifier/ConfigSchema/schema/URI.AllowedSchemes.txt
index ae3a913f2..666635a5f 100644
--- a/library/HTMLPurifier/ConfigSchema/schema/URI.AllowedSchemes.txt
+++ b/library/HTMLPurifier/ConfigSchema/schema/URI.AllowedSchemes.txt
@@ -12,6 +12,6 @@ array (
--DESCRIPTION--
Whitelist that defines the schemes that a URI is allowed to have. This
prevents XSS attacks from using pseudo-schemes like javascript or mocha.
-There is also support for the <code>data</code> URI scheme, but it is not
-enabled by default.
+There is also support for the <code>data</code> and <code>file</code>
+URI schemes, but they are not enabled by default.
--# vim: et sw=4 sts=4
diff --git a/library/HTMLPurifier/ConfigSchema/schema/URI.DisableResources.txt b/library/HTMLPurifier/ConfigSchema/schema/URI.DisableResources.txt
index 51e6ea91f..f891de499 100644
--- a/library/HTMLPurifier/ConfigSchema/schema/URI.DisableResources.txt
+++ b/library/HTMLPurifier/ConfigSchema/schema/URI.DisableResources.txt
@@ -1,12 +1,15 @@
URI.DisableResources
TYPE: bool
-VERSION: 1.3.0
+VERSION: 4.2.0
DEFAULT: false
--DESCRIPTION--
-
<p>
Disables embedding resources, essentially meaning no pictures. You can
still link to them though. See %URI.DisableExternalResources for why
this might be a good idea.
</p>
+<p>
+ <em>Note:</em> While this directive has been available since 1.3.0,
+ it didn't actually start doing anything until 4.2.0.
+</p>
--# vim: et sw=4 sts=4
diff --git a/library/HTMLPurifier/ConfigSchema/schema/URI.MungeSecretKey.txt b/library/HTMLPurifier/ConfigSchema/schema/URI.MungeSecretKey.txt
index 0d00f62ea..1e17c1d46 100644
--- a/library/HTMLPurifier/ConfigSchema/schema/URI.MungeSecretKey.txt
+++ b/library/HTMLPurifier/ConfigSchema/schema/URI.MungeSecretKey.txt
@@ -11,7 +11,7 @@ DEFAULT: NULL
to check if a URI has passed through HTML Purifier with this line:
</p>
-<pre>$checksum === sha1($secret_key . ':' . $url)</pre>
+<pre>$checksum === hash_hmac("sha256", $url, $secret_key)</pre>
<p>
If the output is TRUE, the redirector script should accept the URI.
diff --git a/library/HTMLPurifier/ConfigSchema/schema/URI.SafeIframeRegexp.txt b/library/HTMLPurifier/ConfigSchema/schema/URI.SafeIframeRegexp.txt
new file mode 100644
index 000000000..79084832b
--- /dev/null
+++ b/library/HTMLPurifier/ConfigSchema/schema/URI.SafeIframeRegexp.txt
@@ -0,0 +1,22 @@
+URI.SafeIframeRegexp
+TYPE: string/null
+VERSION: 4.4.0
+DEFAULT: NULL
+--DESCRIPTION--
+<p>
+ A PCRE regular expression that will be matched against an iframe URI. This is
+ a relatively inflexible scheme, but works well enough for the most common
+ use-case of iframes: embedded video. This directive only has an effect if
+ %HTML.SafeIframe is enabled. Here are some example values:
+</p>
+<ul>
+ <li><code>%^http://www.youtube.com/embed/%</code> - Allow YouTube videos</li>
+ <li><code>%^http://player.vimeo.com/video/%</code> - Allow Vimeo videos</li>
+ <li><code>%^http://(www.youtube.com/embed/|player.vimeo.com/video/)%</code> - Allow both</li>
+</ul>
+<p>
+ Note that this directive does not give you enough granularity to, say, disable
+ all <code>autoplay</code> videos. Pipe up on the HTML Purifier forums if this
+ is a capability you want.
+</p>
+--# vim: et sw=4 sts=4
diff --git a/library/HTMLPurifier/ContentSets.php b/library/HTMLPurifier/ContentSets.php
index 3b6e96f5f..543e3f8f1 100644
--- a/library/HTMLPurifier/ContentSets.php
+++ b/library/HTMLPurifier/ContentSets.php
@@ -7,35 +7,42 @@ class HTMLPurifier_ContentSets
{
/**
- * List of content set strings (pipe seperators) indexed by name.
+ * List of content set strings (pipe separators) indexed by name.
+ * @type array
*/
public $info = array();
/**
* List of content set lookups (element => true) indexed by name.
+ * @type array
* @note This is in HTMLPurifier_HTMLDefinition->info_content_sets
*/
public $lookup = array();
/**
- * Synchronized list of defined content sets (keys of info)
+ * Synchronized list of defined content sets (keys of info).
+ * @type array
*/
protected $keys = array();
/**
- * Synchronized list of defined content values (values of info)
+ * Synchronized list of defined content values (values of info).
+ * @type array
*/
protected $values = array();
/**
* Merges in module's content sets, expands identifiers in the content
* sets and populates the keys, values and lookup member variables.
- * @param $modules List of HTMLPurifier_HTMLModule
+ * @param HTMLPurifier_HTMLModule[] $modules List of HTMLPurifier_HTMLModule
*/
- public function __construct($modules) {
- if (!is_array($modules)) $modules = array($modules);
+ public function __construct($modules)
+ {
+ if (!is_array($modules)) {
+ $modules = array($modules);
+ }
// populate content_sets based on module hints
// sorry, no way of overloading
- foreach ($modules as $module_i => $module) {
+ foreach ($modules as $module) {
foreach ($module->content_sets as $key => $value) {
$temp = $this->convertToLookup($value);
if (isset($this->lookup[$key])) {
@@ -70,11 +77,14 @@ class HTMLPurifier_ContentSets
/**
* Accepts a definition; generates and assigns a ChildDef for it
- * @param $def HTMLPurifier_ElementDef reference
- * @param $module Module that defined the ElementDef
+ * @param HTMLPurifier_ElementDef $def HTMLPurifier_ElementDef reference
+ * @param HTMLPurifier_HTMLModule $module Module that defined the ElementDef
*/
- public function generateChildDef(&$def, $module) {
- if (!empty($def->child)) return; // already done!
+ public function generateChildDef(&$def, $module)
+ {
+ if (!empty($def->child)) { // already done!
+ return;
+ }
$content_model = $def->content_model;
if (is_string($content_model)) {
// Assume that $this->keys is alphanumeric
@@ -89,7 +99,8 @@ class HTMLPurifier_ContentSets
$def->child = $this->getChildDef($def, $module);
}
- public function generateChildDefCallback($matches) {
+ public function generateChildDefCallback($matches)
+ {
return $this->info[$matches[0]];
}
@@ -98,10 +109,12 @@ class HTMLPurifier_ContentSets
* member variables in HTMLPurifier_ElementDef
* @note This will also defer to modules for custom HTMLPurifier_ChildDef
* subclasses that need content set expansion
- * @param $def HTMLPurifier_ElementDef to have ChildDef extracted
+ * @param HTMLPurifier_ElementDef $def HTMLPurifier_ElementDef to have ChildDef extracted
+ * @param HTMLPurifier_HTMLModule $module Module that defined the ElementDef
* @return HTMLPurifier_ChildDef corresponding to ElementDef
*/
- public function getChildDef($def, $module) {
+ public function getChildDef($def, $module)
+ {
$value = $def->content_model;
if (is_object($value)) {
trigger_error(
@@ -126,7 +139,9 @@ class HTMLPurifier_ContentSets
if ($module->defines_child_def) { // save a func call
$return = $module->getChildDef($def);
}
- if ($return !== false) return $return;
+ if ($return !== false) {
+ return $return;
+ }
// error-out
trigger_error(
'Could not determine which ChildDef class to instantiate',
@@ -138,18 +153,18 @@ class HTMLPurifier_ContentSets
/**
* Converts a string list of elements separated by pipes into
* a lookup array.
- * @param $string List of elements
- * @return Lookup array of elements
+ * @param string $string List of elements
+ * @return array Lookup array of elements
*/
- protected function convertToLookup($string) {
+ protected function convertToLookup($string)
+ {
$array = explode('|', str_replace(' ', '', $string));
$ret = array();
- foreach ($array as $i => $k) {
+ foreach ($array as $k) {
$ret[$k] = true;
}
return $ret;
}
-
}
// vim: et sw=4 sts=4
diff --git a/library/HTMLPurifier/Context.php b/library/HTMLPurifier/Context.php
index 9ddf0c547..00e509c85 100644
--- a/library/HTMLPurifier/Context.php
+++ b/library/HTMLPurifier/Context.php
@@ -12,18 +12,22 @@ class HTMLPurifier_Context
/**
* Private array that stores the references.
+ * @type array
*/
private $_storage = array();
/**
* Registers a variable into the context.
- * @param $name String name
- * @param $ref Reference to variable to be registered
+ * @param string $name String name
+ * @param mixed $ref Reference to variable to be registered
*/
- public function register($name, &$ref) {
- if (isset($this->_storage[$name])) {
- trigger_error("Name $name produces collision, cannot re-register",
- E_USER_ERROR);
+ public function register($name, &$ref)
+ {
+ if (array_key_exists($name, $this->_storage)) {
+ trigger_error(
+ "Name $name produces collision, cannot re-register",
+ E_USER_ERROR
+ );
return;
}
$this->_storage[$name] =& $ref;
@@ -31,14 +35,18 @@ class HTMLPurifier_Context
/**
* Retrieves a variable reference from the context.
- * @param $name String name
- * @param $ignore_error Boolean whether or not to ignore error
+ * @param string $name String name
+ * @param bool $ignore_error Boolean whether or not to ignore error
+ * @return mixed
*/
- public function &get($name, $ignore_error = false) {
- if (!isset($this->_storage[$name])) {
+ public function &get($name, $ignore_error = false)
+ {
+ if (!array_key_exists($name, $this->_storage)) {
if (!$ignore_error) {
- trigger_error("Attempted to retrieve non-existent variable $name",
- E_USER_ERROR);
+ trigger_error(
+ "Attempted to retrieve non-existent variable $name",
+ E_USER_ERROR
+ );
}
$var = null; // so we can return by reference
return $var;
@@ -47,13 +55,16 @@ class HTMLPurifier_Context
}
/**
- * Destorys a variable in the context.
- * @param $name String name
+ * Destroys a variable in the context.
+ * @param string $name String name
*/
- public function destroy($name) {
- if (!isset($this->_storage[$name])) {
- trigger_error("Attempted to destroy non-existent variable $name",
- E_USER_ERROR);
+ public function destroy($name)
+ {
+ if (!array_key_exists($name, $this->_storage)) {
+ trigger_error(
+ "Attempted to destroy non-existent variable $name",
+ E_USER_ERROR
+ );
return;
}
unset($this->_storage[$name]);
@@ -61,22 +72,24 @@ class HTMLPurifier_Context
/**
* Checks whether or not the variable exists.
- * @param $name String name
+ * @param string $name String name
+ * @return bool
*/
- public function exists($name) {
- return isset($this->_storage[$name]);
+ public function exists($name)
+ {
+ return array_key_exists($name, $this->_storage);
}
/**
* Loads a series of variables from an associative array
- * @param $context_array Assoc array of variables to load
+ * @param array $context_array Assoc array of variables to load
*/
- public function loadArray($context_array) {
+ public function loadArray($context_array)
+ {
foreach ($context_array as $key => $discard) {
$this->register($key, $context_array[$key]);
}
}
-
}
// vim: et sw=4 sts=4
diff --git a/library/HTMLPurifier/Definition.php b/library/HTMLPurifier/Definition.php
index a7408c974..bc6d43364 100644
--- a/library/HTMLPurifier/Definition.php
+++ b/library/HTMLPurifier/Definition.php
@@ -9,31 +9,47 @@ abstract class HTMLPurifier_Definition
/**
* Has setup() been called yet?
+ * @type bool
*/
public $setup = false;
/**
+ * If true, write out the final definition object to the cache after
+ * setup. This will be true only if all invocations to get a raw
+ * definition object are also optimized. This does not cause file
+ * system thrashing because on subsequent calls the cached object
+ * is used and any writes to the raw definition object are short
+ * circuited. See enduser-customize.html for the high-level
+ * picture.
+ * @type bool
+ */
+ public $optimized = null;
+
+ /**
* What type of definition is it?
+ * @type string
*/
public $type;
/**
* Sets up the definition object into the final form, something
* not done by the constructor
- * @param $config HTMLPurifier_Config instance
+ * @param HTMLPurifier_Config $config
*/
abstract protected function doSetup($config);
/**
* Setup function that aborts if already setup
- * @param $config HTMLPurifier_Config instance
+ * @param HTMLPurifier_Config $config
*/
- public function setup($config) {
- if ($this->setup) return;
+ public function setup($config)
+ {
+ if ($this->setup) {
+ return;
+ }
$this->setup = true;
$this->doSetup($config);
}
-
}
// vim: et sw=4 sts=4
diff --git a/library/HTMLPurifier/DefinitionCache.php b/library/HTMLPurifier/DefinitionCache.php
index c6e1e388c..67bb5b1e6 100644
--- a/library/HTMLPurifier/DefinitionCache.php
+++ b/library/HTMLPurifier/DefinitionCache.php
@@ -10,22 +10,27 @@
*/
abstract class HTMLPurifier_DefinitionCache
{
-
+ /**
+ * @type string
+ */
public $type;
/**
- * @param $name Type of definition objects this instance of the
+ * @param string $type Type of definition objects this instance of the
* cache will handle.
*/
- public function __construct($type) {
+ public function __construct($type)
+ {
$this->type = $type;
}
/**
* Generates a unique identifier for a particular configuration
- * @param Instance of HTMLPurifier_Config
+ * @param HTMLPurifier_Config $config Instance of HTMLPurifier_Config
+ * @return string
*/
- public function generateKey($config) {
+ public function generateKey($config)
+ {
return $config->version . ',' . // possibly replace with function calls
$config->getBatchSerial($this->type) . ',' .
$config->get($this->type . '.DefinitionRev');
@@ -34,30 +39,37 @@ abstract class HTMLPurifier_DefinitionCache
/**
* Tests whether or not a key is old with respect to the configuration's
* version and revision number.
- * @param $key Key to test
- * @param $config Instance of HTMLPurifier_Config to test against
+ * @param string $key Key to test
+ * @param HTMLPurifier_Config $config Instance of HTMLPurifier_Config to test against
+ * @return bool
*/
- public function isOld($key, $config) {
- if (substr_count($key, ',') < 2) return true;
+ public function isOld($key, $config)
+ {
+ if (substr_count($key, ',') < 2) {
+ return true;
+ }
list($version, $hash, $revision) = explode(',', $key, 3);
$compare = version_compare($version, $config->version);
// version mismatch, is always old
- if ($compare != 0) return true;
+ if ($compare != 0) {
+ return true;
+ }
// versions match, ids match, check revision number
- if (
- $hash == $config->getBatchSerial($this->type) &&
- $revision < $config->get($this->type . '.DefinitionRev')
- ) return true;
+ if ($hash == $config->getBatchSerial($this->type) &&
+ $revision < $config->get($this->type . '.DefinitionRev')) {
+ return true;
+ }
return false;
}
/**
* Checks if a definition's type jives with the cache's type
* @note Throws an error on failure
- * @param $def Definition object to check
- * @return Boolean true if good, false if not
+ * @param HTMLPurifier_Definition $def Definition object to check
+ * @return bool true if good, false if not
*/
- public function checkDefType($def) {
+ public function checkDefType($def)
+ {
if ($def->type !== $this->type) {
trigger_error("Cannot use definition of type {$def->type} in cache for {$this->type}");
return false;
@@ -67,31 +79,40 @@ abstract class HTMLPurifier_DefinitionCache
/**
* Adds a definition object to the cache
+ * @param HTMLPurifier_Definition $def
+ * @param HTMLPurifier_Config $config
*/
abstract public function add($def, $config);
/**
* Unconditionally saves a definition object to the cache
+ * @param HTMLPurifier_Definition $def
+ * @param HTMLPurifier_Config $config
*/
abstract public function set($def, $config);
/**
* Replace an object in the cache
+ * @param HTMLPurifier_Definition $def
+ * @param HTMLPurifier_Config $config
*/
abstract public function replace($def, $config);
/**
* Retrieves a definition object from the cache
+ * @param HTMLPurifier_Config $config
*/
abstract public function get($config);
/**
* Removes a definition object to the cache
+ * @param HTMLPurifier_Config $config
*/
abstract public function remove($config);
/**
* Clears all objects from cache
+ * @param HTMLPurifier_Config $config
*/
abstract public function flush($config);
@@ -100,9 +121,9 @@ abstract class HTMLPurifier_DefinitionCache
* @note Be carefuly implementing this method as flush. Flush must
* not interfere with other Definition types, and cleanup()
* should not be repeatedly called by userland code.
+ * @param HTMLPurifier_Config $config
*/
abstract public function cleanup($config);
-
}
// vim: et sw=4 sts=4
diff --git a/library/HTMLPurifier/DefinitionCache/Decorator.php b/library/HTMLPurifier/DefinitionCache/Decorator.php
index b0fb6d0cd..b57a51b6c 100644
--- a/library/HTMLPurifier/DefinitionCache/Decorator.php
+++ b/library/HTMLPurifier/DefinitionCache/Decorator.php
@@ -5,58 +5,108 @@ class HTMLPurifier_DefinitionCache_Decorator extends HTMLPurifier_DefinitionCach
/**
* Cache object we are decorating
+ * @type HTMLPurifier_DefinitionCache
*/
public $cache;
- public function __construct() {}
+ /**
+ * The name of the decorator
+ * @var string
+ */
+ public $name;
+
+ public function __construct()
+ {
+ }
/**
* Lazy decorator function
- * @param $cache Reference to cache object to decorate
+ * @param HTMLPurifier_DefinitionCache $cache Reference to cache object to decorate
+ * @return HTMLPurifier_DefinitionCache_Decorator
*/
- public function decorate(&$cache) {
+ public function decorate(&$cache)
+ {
$decorator = $this->copy();
// reference is necessary for mocks in PHP 4
$decorator->cache =& $cache;
- $decorator->type = $cache->type;
+ $decorator->type = $cache->type;
return $decorator;
}
/**
* Cross-compatible clone substitute
+ * @return HTMLPurifier_DefinitionCache_Decorator
*/
- public function copy() {
+ public function copy()
+ {
return new HTMLPurifier_DefinitionCache_Decorator();
}
- public function add($def, $config) {
+ /**
+ * @param HTMLPurifier_Definition $def
+ * @param HTMLPurifier_Config $config
+ * @return mixed
+ */
+ public function add($def, $config)
+ {
return $this->cache->add($def, $config);
}
- public function set($def, $config) {
+ /**
+ * @param HTMLPurifier_Definition $def
+ * @param HTMLPurifier_Config $config
+ * @return mixed
+ */
+ public function set($def, $config)
+ {
return $this->cache->set($def, $config);
}
- public function replace($def, $config) {
+ /**
+ * @param HTMLPurifier_Definition $def
+ * @param HTMLPurifier_Config $config
+ * @return mixed
+ */
+ public function replace($def, $config)
+ {
return $this->cache->replace($def, $config);
}
- public function get($config) {
+ /**
+ * @param HTMLPurifier_Config $config
+ * @return mixed
+ */
+ public function get($config)
+ {
return $this->cache->get($config);
}
- public function remove($config) {
+ /**
+ * @param HTMLPurifier_Config $config
+ * @return mixed
+ */
+ public function remove($config)
+ {
return $this->cache->remove($config);
}
- public function flush($config) {
+ /**
+ * @param HTMLPurifier_Config $config
+ * @return mixed
+ */
+ public function flush($config)
+ {
return $this->cache->flush($config);
}
- public function cleanup($config) {
+ /**
+ * @param HTMLPurifier_Config $config
+ * @return mixed
+ */
+ public function cleanup($config)
+ {
return $this->cache->cleanup($config);
}
-
}
// vim: et sw=4 sts=4
diff --git a/library/HTMLPurifier/DefinitionCache/Decorator/Cleanup.php b/library/HTMLPurifier/DefinitionCache/Decorator/Cleanup.php
index d4cc35c4b..4991777ce 100644
--- a/library/HTMLPurifier/DefinitionCache/Decorator/Cleanup.php
+++ b/library/HTMLPurifier/DefinitionCache/Decorator/Cleanup.php
@@ -4,40 +4,75 @@
* Definition cache decorator class that cleans up the cache
* whenever there is a cache miss.
*/
-class HTMLPurifier_DefinitionCache_Decorator_Cleanup extends
- HTMLPurifier_DefinitionCache_Decorator
+class HTMLPurifier_DefinitionCache_Decorator_Cleanup extends HTMLPurifier_DefinitionCache_Decorator
{
-
+ /**
+ * @type string
+ */
public $name = 'Cleanup';
- public function copy() {
+ /**
+ * @return HTMLPurifier_DefinitionCache_Decorator_Cleanup
+ */
+ public function copy()
+ {
return new HTMLPurifier_DefinitionCache_Decorator_Cleanup();
}
- public function add($def, $config) {
+ /**
+ * @param HTMLPurifier_Definition $def
+ * @param HTMLPurifier_Config $config
+ * @return mixed
+ */
+ public function add($def, $config)
+ {
$status = parent::add($def, $config);
- if (!$status) parent::cleanup($config);
+ if (!$status) {
+ parent::cleanup($config);
+ }
return $status;
}
- public function set($def, $config) {
+ /**
+ * @param HTMLPurifier_Definition $def
+ * @param HTMLPurifier_Config $config
+ * @return mixed
+ */
+ public function set($def, $config)
+ {
$status = parent::set($def, $config);
- if (!$status) parent::cleanup($config);
+ if (!$status) {
+ parent::cleanup($config);
+ }
return $status;
}
- public function replace($def, $config) {
+ /**
+ * @param HTMLPurifier_Definition $def
+ * @param HTMLPurifier_Config $config
+ * @return mixed
+ */
+ public function replace($def, $config)
+ {
$status = parent::replace($def, $config);
- if (!$status) parent::cleanup($config);
+ if (!$status) {
+ parent::cleanup($config);
+ }
return $status;
}
- public function get($config) {
+ /**
+ * @param HTMLPurifier_Config $config
+ * @return mixed
+ */
+ public function get($config)
+ {
$ret = parent::get($config);
- if (!$ret) parent::cleanup($config);
+ if (!$ret) {
+ parent::cleanup($config);
+ }
return $ret;
}
-
}
// vim: et sw=4 sts=4
diff --git a/library/HTMLPurifier/DefinitionCache/Decorator/Memory.php b/library/HTMLPurifier/DefinitionCache/Decorator/Memory.php
index 18f16d32b..d529dce48 100644
--- a/library/HTMLPurifier/DefinitionCache/Decorator/Memory.php
+++ b/library/HTMLPurifier/DefinitionCache/Decorator/Memory.php
@@ -5,42 +5,81 @@
* to PHP's memory; good for unit tests or circumstances where
* there are lots of configuration objects floating around.
*/
-class HTMLPurifier_DefinitionCache_Decorator_Memory extends
- HTMLPurifier_DefinitionCache_Decorator
+class HTMLPurifier_DefinitionCache_Decorator_Memory extends HTMLPurifier_DefinitionCache_Decorator
{
-
+ /**
+ * @type array
+ */
protected $definitions;
+
+ /**
+ * @type string
+ */
public $name = 'Memory';
- public function copy() {
+ /**
+ * @return HTMLPurifier_DefinitionCache_Decorator_Memory
+ */
+ public function copy()
+ {
return new HTMLPurifier_DefinitionCache_Decorator_Memory();
}
- public function add($def, $config) {
+ /**
+ * @param HTMLPurifier_Definition $def
+ * @param HTMLPurifier_Config $config
+ * @return mixed
+ */
+ public function add($def, $config)
+ {
$status = parent::add($def, $config);
- if ($status) $this->definitions[$this->generateKey($config)] = $def;
+ if ($status) {
+ $this->definitions[$this->generateKey($config)] = $def;
+ }
return $status;
}
- public function set($def, $config) {
+ /**
+ * @param HTMLPurifier_Definition $def
+ * @param HTMLPurifier_Config $config
+ * @return mixed
+ */
+ public function set($def, $config)
+ {
$status = parent::set($def, $config);
- if ($status) $this->definitions[$this->generateKey($config)] = $def;
+ if ($status) {
+ $this->definitions[$this->generateKey($config)] = $def;
+ }
return $status;
}
- public function replace($def, $config) {
+ /**
+ * @param HTMLPurifier_Definition $def
+ * @param HTMLPurifier_Config $config
+ * @return mixed
+ */
+ public function replace($def, $config)
+ {
$status = parent::replace($def, $config);
- if ($status) $this->definitions[$this->generateKey($config)] = $def;
+ if ($status) {
+ $this->definitions[$this->generateKey($config)] = $def;
+ }
return $status;
}
- public function get($config) {
+ /**
+ * @param HTMLPurifier_Config $config
+ * @return mixed
+ */
+ public function get($config)
+ {
$key = $this->generateKey($config);
- if (isset($this->definitions[$key])) return $this->definitions[$key];
+ if (isset($this->definitions[$key])) {
+ return $this->definitions[$key];
+ }
$this->definitions[$key] = parent::get($config);
return $this->definitions[$key];
}
-
}
// vim: et sw=4 sts=4
diff --git a/library/HTMLPurifier/DefinitionCache/Decorator/Template.php.in b/library/HTMLPurifier/DefinitionCache/Decorator/Template.php.in
index 21a8fcfda..b1fec8d36 100644
--- a/library/HTMLPurifier/DefinitionCache/Decorator/Template.php.in
+++ b/library/HTMLPurifier/DefinitionCache/Decorator/Template.php.in
@@ -5,43 +5,78 @@ require_once 'HTMLPurifier/DefinitionCache/Decorator.php';
/**
* Definition cache decorator template.
*/
-class HTMLPurifier_DefinitionCache_Decorator_Template extends
- HTMLPurifier_DefinitionCache_Decorator
+class HTMLPurifier_DefinitionCache_Decorator_Template extends HTMLPurifier_DefinitionCache_Decorator
{
- var $name = 'Template'; // replace this
+ /**
+ * @type string
+ */
+ public $name = 'Template'; // replace this
- function copy() {
+ public function copy()
+ {
// replace class name with yours
return new HTMLPurifier_DefinitionCache_Decorator_Template();
}
// remove methods you don't need
- function add($def, $config) {
+ /**
+ * @param HTMLPurifier_Definition $def
+ * @param HTMLPurifier_Config $config
+ * @return mixed
+ */
+ public function add($def, $config)
+ {
return parent::add($def, $config);
}
- function set($def, $config) {
+ /**
+ * @param HTMLPurifier_Definition $def
+ * @param HTMLPurifier_Config $config
+ * @return mixed
+ */
+ public function set($def, $config)
+ {
return parent::set($def, $config);
}
- function replace($def, $config) {
+ /**
+ * @param HTMLPurifier_Definition $def
+ * @param HTMLPurifier_Config $config
+ * @return mixed
+ */
+ public function replace($def, $config)
+ {
return parent::replace($def, $config);
}
- function get($config) {
+ /**
+ * @param HTMLPurifier_Config $config
+ * @return mixed
+ */
+ public function get($config)
+ {
return parent::get($config);
}
- function flush() {
- return parent::flush();
+ /**
+ * @param HTMLPurifier_Config $config
+ * @return mixed
+ */
+ public function flush($config)
+ {
+ return parent::flush($config);
}
- function cleanup($config) {
+ /**
+ * @param HTMLPurifier_Config $config
+ * @return mixed
+ */
+ public function cleanup($config)
+ {
return parent::cleanup($config);
}
-
}
// vim: et sw=4 sts=4
diff --git a/library/HTMLPurifier/DefinitionCache/Null.php b/library/HTMLPurifier/DefinitionCache/Null.php
index 41d97e734..d9a75ce22 100644
--- a/library/HTMLPurifier/DefinitionCache/Null.php
+++ b/library/HTMLPurifier/DefinitionCache/Null.php
@@ -6,34 +6,71 @@
class HTMLPurifier_DefinitionCache_Null extends HTMLPurifier_DefinitionCache
{
- public function add($def, $config) {
+ /**
+ * @param HTMLPurifier_Definition $def
+ * @param HTMLPurifier_Config $config
+ * @return bool
+ */
+ public function add($def, $config)
+ {
return false;
}
- public function set($def, $config) {
+ /**
+ * @param HTMLPurifier_Definition $def
+ * @param HTMLPurifier_Config $config
+ * @return bool
+ */
+ public function set($def, $config)
+ {
return false;
}
- public function replace($def, $config) {
+ /**
+ * @param HTMLPurifier_Definition $def
+ * @param HTMLPurifier_Config $config
+ * @return bool
+ */
+ public function replace($def, $config)
+ {
return false;
}
- public function remove($config) {
+ /**
+ * @param HTMLPurifier_Config $config
+ * @return bool
+ */
+ public function remove($config)
+ {
return false;
}
- public function get($config) {
+ /**
+ * @param HTMLPurifier_Config $config
+ * @return bool
+ */
+ public function get($config)
+ {
return false;
}
- public function flush($config) {
+ /**
+ * @param HTMLPurifier_Config $config
+ * @return bool
+ */
+ public function flush($config)
+ {
return false;
}
- public function cleanup($config) {
+ /**
+ * @param HTMLPurifier_Config $config
+ * @return bool
+ */
+ public function cleanup($config)
+ {
return false;
}
-
}
// vim: et sw=4 sts=4
diff --git a/library/HTMLPurifier/DefinitionCache/Serializer.php b/library/HTMLPurifier/DefinitionCache/Serializer.php
index 7a6aa93f0..ecacb88fe 100644
--- a/library/HTMLPurifier/DefinitionCache/Serializer.php
+++ b/library/HTMLPurifier/DefinitionCache/Serializer.php
@@ -1,83 +1,160 @@
<?php
-class HTMLPurifier_DefinitionCache_Serializer extends
- HTMLPurifier_DefinitionCache
+class HTMLPurifier_DefinitionCache_Serializer extends HTMLPurifier_DefinitionCache
{
- public function add($def, $config) {
- if (!$this->checkDefType($def)) return;
+ /**
+ * @param HTMLPurifier_Definition $def
+ * @param HTMLPurifier_Config $config
+ * @return int|bool
+ */
+ public function add($def, $config)
+ {
+ if (!$this->checkDefType($def)) {
+ return;
+ }
$file = $this->generateFilePath($config);
- if (file_exists($file)) return false;
- if (!$this->_prepareDir($config)) return false;
- return $this->_write($file, serialize($def));
+ if (file_exists($file)) {
+ return false;
+ }
+ if (!$this->_prepareDir($config)) {
+ return false;
+ }
+ return $this->_write($file, serialize($def), $config);
}
- public function set($def, $config) {
- if (!$this->checkDefType($def)) return;
+ /**
+ * @param HTMLPurifier_Definition $def
+ * @param HTMLPurifier_Config $config
+ * @return int|bool
+ */
+ public function set($def, $config)
+ {
+ if (!$this->checkDefType($def)) {
+ return;
+ }
$file = $this->generateFilePath($config);
- if (!$this->_prepareDir($config)) return false;
- return $this->_write($file, serialize($def));
+ if (!$this->_prepareDir($config)) {
+ return false;
+ }
+ return $this->_write($file, serialize($def), $config);
}
- public function replace($def, $config) {
- if (!$this->checkDefType($def)) return;
+ /**
+ * @param HTMLPurifier_Definition $def
+ * @param HTMLPurifier_Config $config
+ * @return int|bool
+ */
+ public function replace($def, $config)
+ {
+ if (!$this->checkDefType($def)) {
+ return;
+ }
$file = $this->generateFilePath($config);
- if (!file_exists($file)) return false;
- if (!$this->_prepareDir($config)) return false;
- return $this->_write($file, serialize($def));
+ if (!file_exists($file)) {
+ return false;
+ }
+ if (!$this->_prepareDir($config)) {
+ return false;
+ }
+ return $this->_write($file, serialize($def), $config);
}
- public function get($config) {
+ /**
+ * @param HTMLPurifier_Config $config
+ * @return bool|HTMLPurifier_Config
+ */
+ public function get($config)
+ {
$file = $this->generateFilePath($config);
- if (!file_exists($file)) return false;
+ if (!file_exists($file)) {
+ return false;
+ }
return unserialize(file_get_contents($file));
}
- public function remove($config) {
+ /**
+ * @param HTMLPurifier_Config $config
+ * @return bool
+ */
+ public function remove($config)
+ {
$file = $this->generateFilePath($config);
- if (!file_exists($file)) return false;
+ if (!file_exists($file)) {
+ return false;
+ }
return unlink($file);
}
- public function flush($config) {
- if (!$this->_prepareDir($config)) return false;
+ /**
+ * @param HTMLPurifier_Config $config
+ * @return bool
+ */
+ public function flush($config)
+ {
+ if (!$this->_prepareDir($config)) {
+ return false;
+ }
$dir = $this->generateDirectoryPath($config);
- $dh = opendir($dir);
+ $dh = opendir($dir);
while (false !== ($filename = readdir($dh))) {
- if (empty($filename)) continue;
- if ($filename[0] === '.') continue;
+ if (empty($filename)) {
+ continue;
+ }
+ if ($filename[0] === '.') {
+ continue;
+ }
unlink($dir . '/' . $filename);
}
}
- public function cleanup($config) {
- if (!$this->_prepareDir($config)) return false;
+ /**
+ * @param HTMLPurifier_Config $config
+ * @return bool
+ */
+ public function cleanup($config)
+ {
+ if (!$this->_prepareDir($config)) {
+ return false;
+ }
$dir = $this->generateDirectoryPath($config);
- $dh = opendir($dir);
+ $dh = opendir($dir);
while (false !== ($filename = readdir($dh))) {
- if (empty($filename)) continue;
- if ($filename[0] === '.') continue;
+ if (empty($filename)) {
+ continue;
+ }
+ if ($filename[0] === '.') {
+ continue;
+ }
$key = substr($filename, 0, strlen($filename) - 4);
- if ($this->isOld($key, $config)) unlink($dir . '/' . $filename);
+ if ($this->isOld($key, $config)) {
+ unlink($dir . '/' . $filename);
+ }
}
}
/**
* Generates the file path to the serial file corresponding to
* the configuration and definition name
+ * @param HTMLPurifier_Config $config
+ * @return string
* @todo Make protected
*/
- public function generateFilePath($config) {
+ public function generateFilePath($config)
+ {
$key = $this->generateKey($config);
return $this->generateDirectoryPath($config) . '/' . $key . '.ser';
}
/**
* Generates the path to the directory contain this cache's serial files
+ * @param HTMLPurifier_Config $config
+ * @return string
* @note No trailing slash
* @todo Make protected
*/
- public function generateDirectoryPath($config) {
+ public function generateDirectoryPath($config)
+ {
$base = $this->generateBaseDirectoryPath($config);
return $base . '/' . $this->type;
}
@@ -85,9 +162,12 @@ class HTMLPurifier_DefinitionCache_Serializer extends
/**
* Generates path to base directory that contains all definition type
* serials
+ * @param HTMLPurifier_Config $config
+ * @return mixed|string
* @todo Make protected
*/
- public function generateBaseDirectoryPath($config) {
+ public function generateBaseDirectoryPath($config)
+ {
$base = $config->get('Cache.SerializerPath');
$base = is_null($base) ? HTMLPURIFIER_PREFIX . '/HTMLPurifier/DefinitionCache/Serializer' : $base;
return $base;
@@ -95,34 +175,54 @@ class HTMLPurifier_DefinitionCache_Serializer extends
/**
* Convenience wrapper function for file_put_contents
- * @param $file File name to write to
- * @param $data Data to write into file
- * @return Number of bytes written if success, or false if failure.
+ * @param string $file File name to write to
+ * @param string $data Data to write into file
+ * @param HTMLPurifier_Config $config
+ * @return int|bool Number of bytes written if success, or false if failure.
*/
- private function _write($file, $data) {
- return file_put_contents($file, $data);
+ private function _write($file, $data, $config)
+ {
+ $result = file_put_contents($file, $data);
+ if ($result !== false) {
+ // set permissions of the new file (no execute)
+ $chmod = $config->get('Cache.SerializerPermissions');
+ if (!$chmod) {
+ $chmod = 0644; // invalid config or simpletest
+ }
+ $chmod = $chmod & 0666;
+ chmod($file, $chmod);
+ }
+ return $result;
}
/**
* Prepares the directory that this type stores the serials in
- * @return True if successful
+ * @param HTMLPurifier_Config $config
+ * @return bool True if successful
*/
- private function _prepareDir($config) {
+ private function _prepareDir($config)
+ {
$directory = $this->generateDirectoryPath($config);
+ $chmod = $config->get('Cache.SerializerPermissions');
+ if (!$chmod) {
+ $chmod = 0755; // invalid config or simpletest
+ }
if (!is_dir($directory)) {
$base = $this->generateBaseDirectoryPath($config);
if (!is_dir($base)) {
- trigger_error('Base directory '.$base.' does not exist,
+ trigger_error(
+ 'Base directory ' . $base . ' does not exist,
please create or change using %Cache.SerializerPath',
- E_USER_WARNING);
+ E_USER_WARNING
+ );
return false;
- } elseif (!$this->_testPermissions($base)) {
+ } elseif (!$this->_testPermissions($base, $chmod)) {
return false;
}
- $old = umask(0022); // disable group and world writes
- mkdir($directory);
+ $old = umask(0000);
+ mkdir($directory, $chmod);
umask($old);
- } elseif (!$this->_testPermissions($directory)) {
+ } elseif (!$this->_testPermissions($directory, $chmod)) {
return false;
}
return true;
@@ -131,42 +231,55 @@ class HTMLPurifier_DefinitionCache_Serializer extends
/**
* Tests permissions on a directory and throws out friendly
* error messages and attempts to chmod it itself if possible
+ * @param string $dir Directory path
+ * @param int $chmod Permissions
+ * @return bool True if directory is writable
*/
- private function _testPermissions($dir) {
+ private function _testPermissions($dir, $chmod)
+ {
// early abort, if it is writable, everything is hunky-dory
- if (is_writable($dir)) return true;
+ if (is_writable($dir)) {
+ return true;
+ }
if (!is_dir($dir)) {
// generally, you'll want to handle this beforehand
// so a more specific error message can be given
- trigger_error('Directory '.$dir.' does not exist',
- E_USER_WARNING);
+ trigger_error(
+ 'Directory ' . $dir . ' does not exist',
+ E_USER_WARNING
+ );
return false;
}
if (function_exists('posix_getuid')) {
// POSIX system, we can give more specific advice
if (fileowner($dir) === posix_getuid()) {
// we can chmod it ourselves
- chmod($dir, 0755);
- return true;
+ $chmod = $chmod | 0700;
+ if (chmod($dir, $chmod)) {
+ return true;
+ }
} elseif (filegroup($dir) === posix_getgid()) {
- $chmod = '775';
+ $chmod = $chmod | 0070;
} else {
// PHP's probably running as nobody, so we'll
// need to give global permissions
- $chmod = '777';
+ $chmod = $chmod | 0777;
}
- trigger_error('Directory '.$dir.' not writable, '.
- 'please chmod to ' . $chmod,
- E_USER_WARNING);
+ trigger_error(
+ 'Directory ' . $dir . ' not writable, ' .
+ 'please chmod to ' . decoct($chmod),
+ E_USER_WARNING
+ );
} else {
// generic error message
- trigger_error('Directory '.$dir.' not writable, '.
+ trigger_error(
+ 'Directory ' . $dir . ' not writable, ' .
'please alter file permissions',
- E_USER_WARNING);
+ E_USER_WARNING
+ );
}
return false;
}
-
}
// vim: et sw=4 sts=4
diff --git a/library/HTMLPurifier/DefinitionCache/Serializer/README b/library/HTMLPurifier/DefinitionCache/Serializer/README
index 2e35c1c3d..2e35c1c3d 100644..100755
--- a/library/HTMLPurifier/DefinitionCache/Serializer/README
+++ b/library/HTMLPurifier/DefinitionCache/Serializer/README
diff --git a/library/HTMLPurifier/DefinitionCacheFactory.php b/library/HTMLPurifier/DefinitionCacheFactory.php
index a6ead6281..fd1cc9be4 100644
--- a/library/HTMLPurifier/DefinitionCacheFactory.php
+++ b/library/HTMLPurifier/DefinitionCacheFactory.php
@@ -5,22 +5,36 @@
*/
class HTMLPurifier_DefinitionCacheFactory
{
-
+ /**
+ * @type array
+ */
protected $caches = array('Serializer' => array());
+
+ /**
+ * @type array
+ */
protected $implementations = array();
+
+ /**
+ * @type HTMLPurifier_DefinitionCache_Decorator[]
+ */
protected $decorators = array();
/**
* Initialize default decorators
*/
- public function setup() {
+ public function setup()
+ {
$this->addDecorator('Cleanup');
}
/**
* Retrieves an instance of global definition cache factory.
+ * @param HTMLPurifier_DefinitionCacheFactory $prototype
+ * @return HTMLPurifier_DefinitionCacheFactory
*/
- public static function instance($prototype = null) {
+ public static function instance($prototype = null)
+ {
static $instance;
if ($prototype !== null) {
$instance = $prototype;
@@ -33,19 +47,22 @@ class HTMLPurifier_DefinitionCacheFactory
/**
* Registers a new definition cache object
- * @param $short Short name of cache object, for reference
- * @param $long Full class name of cache object, for construction
+ * @param string $short Short name of cache object, for reference
+ * @param string $long Full class name of cache object, for construction
*/
- public function register($short, $long) {
+ public function register($short, $long)
+ {
$this->implementations[$short] = $long;
}
/**
* Factory method that creates a cache object based on configuration
- * @param $name Name of definitions handled by cache
- * @param $config Instance of HTMLPurifier_Config
+ * @param string $type Name of definitions handled by cache
+ * @param HTMLPurifier_Config $config Config instance
+ * @return mixed
*/
- public function create($type, $config) {
+ public function create($type, $config)
+ {
$method = $config->get('Cache.DefinitionImpl');
if ($method === null) {
return new HTMLPurifier_DefinitionCache_Null($type);
@@ -53,10 +70,8 @@ class HTMLPurifier_DefinitionCacheFactory
if (!empty($this->caches[$method][$type])) {
return $this->caches[$method][$type];
}
- if (
- isset($this->implementations[$method]) &&
- class_exists($class = $this->implementations[$method], false)
- ) {
+ if (isset($this->implementations[$method]) &&
+ class_exists($class = $this->implementations[$method], false)) {
$cache = new $class($type);
} else {
if ($method != 'Serializer') {
@@ -76,16 +91,16 @@ class HTMLPurifier_DefinitionCacheFactory
/**
* Registers a decorator to add to all new cache objects
- * @param
+ * @param HTMLPurifier_DefinitionCache_Decorator|string $decorator An instance or the name of a decorator
*/
- public function addDecorator($decorator) {
+ public function addDecorator($decorator)
+ {
if (is_string($decorator)) {
$class = "HTMLPurifier_DefinitionCache_Decorator_$decorator";
$decorator = new $class;
}
$this->decorators[$decorator->name] = $decorator;
}
-
}
// vim: et sw=4 sts=4
diff --git a/library/HTMLPurifier/Doctype.php b/library/HTMLPurifier/Doctype.php
index 1e3c574c0..4acd06e5b 100644
--- a/library/HTMLPurifier/Doctype.php
+++ b/library/HTMLPurifier/Doctype.php
@@ -10,42 +10,55 @@ class HTMLPurifier_Doctype
{
/**
* Full name of doctype
+ * @type string
*/
public $name;
/**
* List of standard modules (string identifiers or literal objects)
* that this doctype uses
+ * @type array
*/
public $modules = array();
/**
* List of modules to use for tidying up code
+ * @type array
*/
public $tidyModules = array();
/**
* Is the language derived from XML (i.e. XHTML)?
+ * @type bool
*/
public $xml = true;
/**
* List of aliases for this doctype
+ * @type array
*/
public $aliases = array();
/**
* Public DTD identifier
+ * @type string
*/
public $dtdPublic;
/**
* System DTD identifier
+ * @type string
*/
public $dtdSystem;
- public function __construct($name = null, $xml = true, $modules = array(),
- $tidyModules = array(), $aliases = array(), $dtd_public = null, $dtd_system = null
+ public function __construct(
+ $name = null,
+ $xml = true,
+ $modules = array(),
+ $tidyModules = array(),
+ $aliases = array(),
+ $dtd_public = null,
+ $dtd_system = null
) {
$this->name = $name;
$this->xml = $xml;
diff --git a/library/HTMLPurifier/DoctypeRegistry.php b/library/HTMLPurifier/DoctypeRegistry.php
index 86049e939..acc1d64a6 100644
--- a/library/HTMLPurifier/DoctypeRegistry.php
+++ b/library/HTMLPurifier/DoctypeRegistry.php
@@ -4,12 +4,14 @@ class HTMLPurifier_DoctypeRegistry
{
/**
- * Hash of doctype names to doctype objects
+ * Hash of doctype names to doctype objects.
+ * @type array
*/
protected $doctypes;
/**
- * Lookup table of aliases to real doctype names
+ * Lookup table of aliases to real doctype names.
+ * @type array
*/
protected $aliases;
@@ -17,32 +19,57 @@ class HTMLPurifier_DoctypeRegistry
* Registers a doctype to the registry
* @note Accepts a fully-formed doctype object, or the
* parameters for constructing a doctype object
- * @param $doctype Name of doctype or literal doctype object
- * @param $modules Modules doctype will load
- * @param $modules_for_modes Modules doctype will load for certain modes
- * @param $aliases Alias names for doctype
- * @return Editable registered doctype
+ * @param string $doctype Name of doctype or literal doctype object
+ * @param bool $xml
+ * @param array $modules Modules doctype will load
+ * @param array $tidy_modules Modules doctype will load for certain modes
+ * @param array $aliases Alias names for doctype
+ * @param string $dtd_public
+ * @param string $dtd_system
+ * @return HTMLPurifier_Doctype Editable registered doctype
*/
- public function register($doctype, $xml = true, $modules = array(),
- $tidy_modules = array(), $aliases = array(), $dtd_public = null, $dtd_system = null
+ public function register(
+ $doctype,
+ $xml = true,
+ $modules = array(),
+ $tidy_modules = array(),
+ $aliases = array(),
+ $dtd_public = null,
+ $dtd_system = null
) {
- if (!is_array($modules)) $modules = array($modules);
- if (!is_array($tidy_modules)) $tidy_modules = array($tidy_modules);
- if (!is_array($aliases)) $aliases = array($aliases);
+ if (!is_array($modules)) {
+ $modules = array($modules);
+ }
+ if (!is_array($tidy_modules)) {
+ $tidy_modules = array($tidy_modules);
+ }
+ if (!is_array($aliases)) {
+ $aliases = array($aliases);
+ }
if (!is_object($doctype)) {
$doctype = new HTMLPurifier_Doctype(
- $doctype, $xml, $modules, $tidy_modules, $aliases, $dtd_public, $dtd_system
+ $doctype,
+ $xml,
+ $modules,
+ $tidy_modules,
+ $aliases,
+ $dtd_public,
+ $dtd_system
);
}
$this->doctypes[$doctype->name] = $doctype;
$name = $doctype->name;
// hookup aliases
foreach ($doctype->aliases as $alias) {
- if (isset($this->doctypes[$alias])) continue;
+ if (isset($this->doctypes[$alias])) {
+ continue;
+ }
$this->aliases[$alias] = $name;
}
// remove old aliases
- if (isset($this->aliases[$name])) unset($this->aliases[$name]);
+ if (isset($this->aliases[$name])) {
+ unset($this->aliases[$name]);
+ }
return $doctype;
}
@@ -50,11 +77,14 @@ class HTMLPurifier_DoctypeRegistry
* Retrieves reference to a doctype of a certain name
* @note This function resolves aliases
* @note When possible, use the more fully-featured make()
- * @param $doctype Name of doctype
- * @return Editable doctype object
+ * @param string $doctype Name of doctype
+ * @return HTMLPurifier_Doctype Editable doctype object
*/
- public function get($doctype) {
- if (isset($this->aliases[$doctype])) $doctype = $this->aliases[$doctype];
+ public function get($doctype)
+ {
+ if (isset($this->aliases[$doctype])) {
+ $doctype = $this->aliases[$doctype];
+ }
if (!isset($this->doctypes[$doctype])) {
trigger_error('Doctype ' . htmlspecialchars($doctype) . ' does not exist', E_USER_ERROR);
$anon = new HTMLPurifier_Doctype($doctype);
@@ -70,20 +100,30 @@ class HTMLPurifier_DoctypeRegistry
* can hold on to (this is necessary in order to tell
* Generator whether or not the current document is XML
* based or not).
+ * @param HTMLPurifier_Config $config
+ * @return HTMLPurifier_Doctype
*/
- public function make($config) {
+ public function make($config)
+ {
return clone $this->get($this->getDoctypeFromConfig($config));
}
/**
* Retrieves the doctype from the configuration object
+ * @param HTMLPurifier_Config $config
+ * @return string
*/
- public function getDoctypeFromConfig($config) {
+ public function getDoctypeFromConfig($config)
+ {
// recommended test
$doctype = $config->get('HTML.Doctype');
- if (!empty($doctype)) return $doctype;
+ if (!empty($doctype)) {
+ return $doctype;
+ }
$doctype = $config->get('HTML.CustomDoctype');
- if (!empty($doctype)) return $doctype;
+ if (!empty($doctype)) {
+ return $doctype;
+ }
// backwards-compatibility
if ($config->get('HTML.XHTML')) {
$doctype = 'XHTML 1.0';
@@ -97,7 +137,6 @@ class HTMLPurifier_DoctypeRegistry
}
return $doctype;
}
-
}
// vim: et sw=4 sts=4
diff --git a/library/HTMLPurifier/ElementDef.php b/library/HTMLPurifier/ElementDef.php
index 5498d9567..d5311cedc 100644
--- a/library/HTMLPurifier/ElementDef.php
+++ b/library/HTMLPurifier/ElementDef.php
@@ -10,15 +10,16 @@
*/
class HTMLPurifier_ElementDef
{
-
/**
* Does the definition work by itself, or is it created solely
* for the purpose of merging into another definition?
+ * @type bool
*/
public $standalone = true;
/**
- * Associative array of attribute name to HTMLPurifier_AttrDef
+ * Associative array of attribute name to HTMLPurifier_AttrDef.
+ * @type array
* @note Before being processed by HTMLPurifier_AttrCollections
* when modules are finalized during
* HTMLPurifier_HTMLDefinition->setup(), this array may also
@@ -30,27 +31,43 @@ class HTMLPurifier_ElementDef
*/
public $attr = array();
+ // XXX: Design note: currently, it's not possible to override
+ // previously defined AttrTransforms without messing around with
+ // the final generated config. This is by design; a previous version
+ // used an associated list of attr_transform, but it was extremely
+ // easy to accidentally override other attribute transforms by
+ // forgetting to specify an index (and just using 0.) While we
+ // could check this by checking the index number and complaining,
+ // there is a second problem which is that it is not at all easy to
+ // tell when something is getting overridden. Combine this with a
+ // codebase where this isn't really being used, and it's perfect for
+ // nuking.
+
/**
- * Indexed list of tag's HTMLPurifier_AttrTransform to be done before validation
+ * List of tags HTMLPurifier_AttrTransform to be done before validation.
+ * @type array
*/
public $attr_transform_pre = array();
/**
- * Indexed list of tag's HTMLPurifier_AttrTransform to be done after validation
+ * List of tags HTMLPurifier_AttrTransform to be done after validation.
+ * @type array
*/
public $attr_transform_post = array();
/**
* HTMLPurifier_ChildDef of this tag.
+ * @type HTMLPurifier_ChildDef
*/
public $child;
/**
- * Abstract string representation of internal ChildDef rules. See
- * HTMLPurifier_ContentSets for how this is parsed and then transformed
+ * Abstract string representation of internal ChildDef rules.
+ * @see HTMLPurifier_ContentSets for how this is parsed and then transformed
* into an HTMLPurifier_ChildDef.
* @warning This is a temporary variable that is not available after
* being processed by HTMLDefinition
+ * @type string
*/
public $content_model;
@@ -60,27 +77,29 @@ class HTMLPurifier_ElementDef
* @warning This must be lowercase
* @warning This is a temporary variable that is not available after
* being processed by HTMLDefinition
+ * @type string
*/
public $content_model_type;
-
-
/**
* Does the element have a content model (#PCDATA | Inline)*? This
* is important for chameleon ins and del processing in
* HTMLPurifier_ChildDef_Chameleon. Dynamically set: modules don't
* have to worry about this one.
+ * @type bool
*/
public $descendants_are_inline = false;
/**
- * List of the names of required attributes this element has. Dynamically
- * populated by HTMLPurifier_HTMLDefinition::getElement
+ * List of the names of required attributes this element has.
+ * Dynamically populated by HTMLPurifier_HTMLDefinition::getElement()
+ * @type array
*/
public $required_attr = array();
/**
* Lookup table of tags excluded from all descendants of this tag.
+ * @type array
* @note SGML permits exclusions for all descendants, but this is
* not possible with DTDs or XML Schemas. W3C has elected to
* use complicated compositions of content_models to simulate
@@ -94,6 +113,7 @@ class HTMLPurifier_ElementDef
/**
* This tag is explicitly auto-closed by the following tags.
+ * @type array
*/
public $autoclose = array();
@@ -101,19 +121,22 @@ class HTMLPurifier_ElementDef
* If a foreign element is found in this element, test if it is
* allowed by this sub-element; if it is, instead of closing the
* current element, place it inside this element.
+ * @type string
*/
public $wrap;
/**
* Whether or not this is a formatting element affected by the
* "Active Formatting Elements" algorithm.
+ * @type bool
*/
public $formatting;
/**
* Low-level factory constructor for creating new standalone element defs
*/
- public static function create($content_model, $content_model_type, $attr) {
+ public static function create($content_model, $content_model_type, $attr)
+ {
$def = new HTMLPurifier_ElementDef();
$def->content_model = $content_model;
$def->content_model_type = $content_model_type;
@@ -125,11 +148,12 @@ class HTMLPurifier_ElementDef
* Merges the values of another element definition into this one.
* Values from the new element def take precedence if a value is
* not mergeable.
+ * @param HTMLPurifier_ElementDef $def
*/
- public function mergeIn($def) {
-
+ public function mergeIn($def)
+ {
// later keys takes precedence
- foreach($def->attr as $k => $v) {
+ foreach ($def->attr as $k => $v) {
if ($k === 0) {
// merge in the includes
// sorry, no way to override an include
@@ -139,28 +163,35 @@ class HTMLPurifier_ElementDef
continue;
}
if ($v === false) {
- if (isset($this->attr[$k])) unset($this->attr[$k]);
+ if (isset($this->attr[$k])) {
+ unset($this->attr[$k]);
+ }
continue;
}
$this->attr[$k] = $v;
}
- $this->_mergeAssocArray($this->attr_transform_pre, $def->attr_transform_pre);
- $this->_mergeAssocArray($this->attr_transform_post, $def->attr_transform_post);
$this->_mergeAssocArray($this->excludes, $def->excludes);
+ $this->attr_transform_pre = array_merge($this->attr_transform_pre, $def->attr_transform_pre);
+ $this->attr_transform_post = array_merge($this->attr_transform_post, $def->attr_transform_post);
- if(!empty($def->content_model)) {
+ if (!empty($def->content_model)) {
$this->content_model =
str_replace("#SUPER", $this->content_model, $def->content_model);
$this->child = false;
}
- if(!empty($def->content_model_type)) {
+ if (!empty($def->content_model_type)) {
$this->content_model_type = $def->content_model_type;
$this->child = false;
}
- if(!is_null($def->child)) $this->child = $def->child;
- if(!is_null($def->formatting)) $this->formatting = $def->formatting;
- if($def->descendants_are_inline) $this->descendants_are_inline = $def->descendants_are_inline;
-
+ if (!is_null($def->child)) {
+ $this->child = $def->child;
+ }
+ if (!is_null($def->formatting)) {
+ $this->formatting = $def->formatting;
+ }
+ if ($def->descendants_are_inline) {
+ $this->descendants_are_inline = $def->descendants_are_inline;
+ }
}
/**
@@ -168,16 +199,18 @@ class HTMLPurifier_ElementDef
* @param $a1 Array by reference that is merged into
* @param $a2 Array that merges into $a1
*/
- private function _mergeAssocArray(&$a1, $a2) {
+ private function _mergeAssocArray(&$a1, $a2)
+ {
foreach ($a2 as $k => $v) {
if ($v === false) {
- if (isset($a1[$k])) unset($a1[$k]);
+ if (isset($a1[$k])) {
+ unset($a1[$k]);
+ }
continue;
}
$a1[$k] = $v;
}
}
-
}
// vim: et sw=4 sts=4
diff --git a/library/HTMLPurifier/Encoder.php b/library/HTMLPurifier/Encoder.php
index 2b3140caa..fef9b5890 100644
--- a/library/HTMLPurifier/Encoder.php
+++ b/library/HTMLPurifier/Encoder.php
@@ -10,14 +10,90 @@ class HTMLPurifier_Encoder
/**
* Constructor throws fatal error if you attempt to instantiate class
*/
- private function __construct() {
+ private function __construct()
+ {
trigger_error('Cannot instantiate encoder, call methods statically', E_USER_ERROR);
}
/**
* Error-handler that mutes errors, alternative to shut-up operator.
*/
- public static function muteErrorHandler() {}
+ public static function muteErrorHandler()
+ {
+ }
+
+ /**
+ * iconv wrapper which mutes errors, but doesn't work around bugs.
+ * @param string $in Input encoding
+ * @param string $out Output encoding
+ * @param string $text The text to convert
+ * @return string
+ */
+ public static function unsafeIconv($in, $out, $text)
+ {
+ set_error_handler(array('HTMLPurifier_Encoder', 'muteErrorHandler'));
+ $r = iconv($in, $out, $text);
+ restore_error_handler();
+ return $r;
+ }
+
+ /**
+ * iconv wrapper which mutes errors and works around bugs.
+ * @param string $in Input encoding
+ * @param string $out Output encoding
+ * @param string $text The text to convert
+ * @param int $max_chunk_size
+ * @return string
+ */
+ public static function iconv($in, $out, $text, $max_chunk_size = 8000)
+ {
+ $code = self::testIconvTruncateBug();
+ if ($code == self::ICONV_OK) {
+ return self::unsafeIconv($in, $out, $text);
+ } elseif ($code == self::ICONV_TRUNCATES) {
+ // we can only work around this if the input character set
+ // is utf-8
+ if ($in == 'utf-8') {
+ if ($max_chunk_size < 4) {
+ trigger_error('max_chunk_size is too small', E_USER_WARNING);
+ return false;
+ }
+ // split into 8000 byte chunks, but be careful to handle
+ // multibyte boundaries properly
+ if (($c = strlen($text)) <= $max_chunk_size) {
+ return self::unsafeIconv($in, $out, $text);
+ }
+ $r = '';
+ $i = 0;
+ while (true) {
+ if ($i + $max_chunk_size >= $c) {
+ $r .= self::unsafeIconv($in, $out, substr($text, $i));
+ break;
+ }
+ // wibble the boundary
+ if (0x80 != (0xC0 & ord($text[$i + $max_chunk_size]))) {
+ $chunk_size = $max_chunk_size;
+ } elseif (0x80 != (0xC0 & ord($text[$i + $max_chunk_size - 1]))) {
+ $chunk_size = $max_chunk_size - 1;
+ } elseif (0x80 != (0xC0 & ord($text[$i + $max_chunk_size - 2]))) {
+ $chunk_size = $max_chunk_size - 2;
+ } elseif (0x80 != (0xC0 & ord($text[$i + $max_chunk_size - 3]))) {
+ $chunk_size = $max_chunk_size - 3;
+ } else {
+ return false; // rather confusing UTF-8...
+ }
+ $chunk = substr($text, $i, $chunk_size); // substr doesn't mind overlong lengths
+ $r .= self::unsafeIconv($in, $out, $chunk);
+ $i += $chunk_size;
+ }
+ return $r;
+ } else {
+ return false;
+ }
+ } else {
+ return false;
+ }
+ }
/**
* Cleans a UTF-8 string for well-formedness and SGML validity
@@ -25,6 +101,10 @@ class HTMLPurifier_Encoder
* It will parse according to UTF-8 and return a valid UTF8 string, with
* non-SGML codepoints excluded.
*
+ * @param string $str The string to clean
+ * @param bool $force_php
+ * @return string
+ *
* @note Just for reference, the non-SGML code points are 0 to 31 and
* 127 to 159, inclusive. However, we allow code points 9, 10
* and 13, which are the tab, line feed and carriage return
@@ -44,14 +124,17 @@ class HTMLPurifier_Encoder
* would need that, and I'm probably not going to implement them.
* Once again, PHP 6 should solve all our problems.
*/
- public static function cleanUTF8($str, $force_php = false) {
-
+ public static function cleanUTF8($str, $force_php = false)
+ {
// UTF-8 validity is checked since PHP 4.3.5
// This is an optimization: if the string is already valid UTF-8, no
// need to do PHP stuff. 99% of the time, this will be the case.
// The regexp matches the XML char production, as well as well as excluding
// non-SGML codepoints U+007F to U+009F
- if (preg_match('/^[\x{9}\x{A}\x{D}\x{20}-\x{7E}\x{A0}-\x{D7FF}\x{E000}-\x{FFFD}\x{10000}-\x{10FFFF}]*$/Du', $str)) {
+ if (preg_match(
+ '/^[\x{9}\x{A}\x{D}\x{20}-\x{7E}\x{A0}-\x{D7FF}\x{E000}-\x{FFFD}\x{10000}-\x{10FFFF}]*$/Du',
+ $str
+ )) {
return $str;
}
@@ -70,7 +153,7 @@ class HTMLPurifier_Encoder
$char = '';
$len = strlen($str);
- for($i = 0; $i < $len; $i++) {
+ for ($i = 0; $i < $len; $i++) {
$in = ord($str{$i});
$char .= $str[$i]; // append byte to char
if (0 == $mState) {
@@ -223,8 +306,9 @@ class HTMLPurifier_Encoder
// | 00000000 | 00010000 | 11111111 | 11111111 | Defined upper limit of legal scalar codes
// +----------+----------+----------+----------+
- public static function unichr($code) {
- if($code > 1114111 or $code < 0 or
+ public static function unichr($code)
+ {
+ if ($code > 1114111 or $code < 0 or
($code >= 55296 and $code <= 57343) ) {
// bits are set outside the "valid" range as defined
// by UNICODE 4.1.0
@@ -242,7 +326,7 @@ class HTMLPurifier_Encoder
$y = (($code & 2047) >> 6) | 192;
} else {
$y = (($code & 4032) >> 6) | 128;
- if($code < 65536) {
+ if ($code < 65536) {
$z = (($code >> 12) & 15) | 224;
} else {
$z = (($code >> 12) & 63) | 128;
@@ -252,84 +336,129 @@ class HTMLPurifier_Encoder
}
// set up the actual character
$ret = '';
- if($w) $ret .= chr($w);
- if($z) $ret .= chr($z);
- if($y) $ret .= chr($y);
+ if ($w) {
+ $ret .= chr($w);
+ }
+ if ($z) {
+ $ret .= chr($z);
+ }
+ if ($y) {
+ $ret .= chr($y);
+ }
$ret .= chr($x);
return $ret;
}
/**
- * Converts a string to UTF-8 based on configuration.
+ * @return bool
+ */
+ public static function iconvAvailable()
+ {
+ static $iconv = null;
+ if ($iconv === null) {
+ $iconv = function_exists('iconv') && self::testIconvTruncateBug() != self::ICONV_UNUSABLE;
+ }
+ return $iconv;
+ }
+
+ /**
+ * Convert a string to UTF-8 based on configuration.
+ * @param string $str The string to convert
+ * @param HTMLPurifier_Config $config
+ * @param HTMLPurifier_Context $context
+ * @return string
*/
- public static function convertToUTF8($str, $config, $context) {
+ public static function convertToUTF8($str, $config, $context)
+ {
$encoding = $config->get('Core.Encoding');
- if ($encoding === 'utf-8') return $str;
+ if ($encoding === 'utf-8') {
+ return $str;
+ }
static $iconv = null;
- if ($iconv === null) $iconv = function_exists('iconv');
- set_error_handler(array('HTMLPurifier_Encoder', 'muteErrorHandler'));
+ if ($iconv === null) {
+ $iconv = self::iconvAvailable();
+ }
if ($iconv && !$config->get('Test.ForceNoIconv')) {
- $str = iconv($encoding, 'utf-8//IGNORE', $str);
+ // unaffected by bugs, since UTF-8 support all characters
+ $str = self::unsafeIconv($encoding, 'utf-8//IGNORE', $str);
if ($str === false) {
// $encoding is not a valid encoding
- restore_error_handler();
trigger_error('Invalid encoding ' . $encoding, E_USER_ERROR);
return '';
}
// If the string is bjorked by Shift_JIS or a similar encoding
// that doesn't support all of ASCII, convert the naughty
// characters to their true byte-wise ASCII/UTF-8 equivalents.
- $str = strtr($str, HTMLPurifier_Encoder::testEncodingSupportsASCII($encoding));
- restore_error_handler();
+ $str = strtr($str, self::testEncodingSupportsASCII($encoding));
return $str;
} elseif ($encoding === 'iso-8859-1') {
$str = utf8_encode($str);
- restore_error_handler();
return $str;
}
- trigger_error('Encoding not supported, please install iconv', E_USER_ERROR);
+ $bug = HTMLPurifier_Encoder::testIconvTruncateBug();
+ if ($bug == self::ICONV_OK) {
+ trigger_error('Encoding not supported, please install iconv', E_USER_ERROR);
+ } else {
+ trigger_error(
+ 'You have a buggy version of iconv, see https://bugs.php.net/bug.php?id=48147 ' .
+ 'and http://sourceware.org/bugzilla/show_bug.cgi?id=13541',
+ E_USER_ERROR
+ );
+ }
}
/**
* Converts a string from UTF-8 based on configuration.
+ * @param string $str The string to convert
+ * @param HTMLPurifier_Config $config
+ * @param HTMLPurifier_Context $context
+ * @return string
* @note Currently, this is a lossy conversion, with unexpressable
* characters being omitted.
*/
- public static function convertFromUTF8($str, $config, $context) {
+ public static function convertFromUTF8($str, $config, $context)
+ {
$encoding = $config->get('Core.Encoding');
- if ($encoding === 'utf-8') return $str;
- static $iconv = null;
- if ($iconv === null) $iconv = function_exists('iconv');
if ($escape = $config->get('Core.EscapeNonASCIICharacters')) {
- $str = HTMLPurifier_Encoder::convertToASCIIDumbLossless($str);
+ $str = self::convertToASCIIDumbLossless($str);
+ }
+ if ($encoding === 'utf-8') {
+ return $str;
+ }
+ static $iconv = null;
+ if ($iconv === null) {
+ $iconv = self::iconvAvailable();
}
- set_error_handler(array('HTMLPurifier_Encoder', 'muteErrorHandler'));
if ($iconv && !$config->get('Test.ForceNoIconv')) {
// Undo our previous fix in convertToUTF8, otherwise iconv will barf
- $ascii_fix = HTMLPurifier_Encoder::testEncodingSupportsASCII($encoding);
+ $ascii_fix = self::testEncodingSupportsASCII($encoding);
if (!$escape && !empty($ascii_fix)) {
$clear_fix = array();
- foreach ($ascii_fix as $utf8 => $native) $clear_fix[$utf8] = '';
+ foreach ($ascii_fix as $utf8 => $native) {
+ $clear_fix[$utf8] = '';
+ }
$str = strtr($str, $clear_fix);
}
$str = strtr($str, array_flip($ascii_fix));
// Normal stuff
- $str = iconv('utf-8', $encoding . '//IGNORE', $str);
- restore_error_handler();
+ $str = self::iconv('utf-8', $encoding . '//IGNORE', $str);
return $str;
} elseif ($encoding === 'iso-8859-1') {
$str = utf8_decode($str);
- restore_error_handler();
return $str;
}
trigger_error('Encoding not supported', E_USER_ERROR);
+ // You might be tempted to assume that the ASCII representation
+ // might be OK, however, this is *not* universally true over all
+ // encodings. So we take the conservative route here, rather
+ // than forcibly turn on %Core.EscapeNonASCIICharacters
}
/**
* Lossless (character-wise) conversion of HTML to ASCII
- * @param $str UTF-8 string to be converted to ASCII
- * @returns ASCII encoded string with non-ASCII character entity-ized
+ * @param string $str UTF-8 string to be converted to ASCII
+ * @return string ASCII encoded string with non-ASCII character entity-ized
* @warning Adapted from MediaWiki, claiming fair use: this is a common
* algorithm. If you disagree with this license fudgery,
* implement it yourself.
@@ -342,27 +471,28 @@ class HTMLPurifier_Encoder
* @note Sort of with cleanUTF8() but it assumes that $str is
* well-formed UTF-8
*/
- public static function convertToASCIIDumbLossless($str) {
+ public static function convertToASCIIDumbLossless($str)
+ {
$bytesleft = 0;
$result = '';
$working = 0;
$len = strlen($str);
- for( $i = 0; $i < $len; $i++ ) {
- $bytevalue = ord( $str[$i] );
- if( $bytevalue <= 0x7F ) { //0xxx xxxx
- $result .= chr( $bytevalue );
+ for ($i = 0; $i < $len; $i++) {
+ $bytevalue = ord($str[$i]);
+ if ($bytevalue <= 0x7F) { //0xxx xxxx
+ $result .= chr($bytevalue);
$bytesleft = 0;
- } elseif( $bytevalue <= 0xBF ) { //10xx xxxx
+ } elseif ($bytevalue <= 0xBF) { //10xx xxxx
$working = $working << 6;
$working += ($bytevalue & 0x3F);
$bytesleft--;
- if( $bytesleft <= 0 ) {
+ if ($bytesleft <= 0) {
$result .= "&#" . $working . ";";
}
- } elseif( $bytevalue <= 0xDF ) { //110x xxxx
+ } elseif ($bytevalue <= 0xDF) { //110x xxxx
$working = $bytevalue & 0x1F;
$bytesleft = 1;
- } elseif( $bytevalue <= 0xEF ) { //1110 xxxx
+ } elseif ($bytevalue <= 0xEF) { //1110 xxxx
$working = $bytevalue & 0x0F;
$bytesleft = 2;
} else { //1111 0xxx
@@ -373,6 +503,54 @@ class HTMLPurifier_Encoder
return $result;
}
+ /** No bugs detected in iconv. */
+ const ICONV_OK = 0;
+
+ /** Iconv truncates output if converting from UTF-8 to another
+ * character set with //IGNORE, and a non-encodable character is found */
+ const ICONV_TRUNCATES = 1;
+
+ /** Iconv does not support //IGNORE, making it unusable for
+ * transcoding purposes */
+ const ICONV_UNUSABLE = 2;
+
+ /**
+ * glibc iconv has a known bug where it doesn't handle the magic
+ * //IGNORE stanza correctly. In particular, rather than ignore
+ * characters, it will return an EILSEQ after consuming some number
+ * of characters, and expect you to restart iconv as if it were
+ * an E2BIG. Old versions of PHP did not respect the errno, and
+ * returned the fragment, so as a result you would see iconv
+ * mysteriously truncating output. We can work around this by
+ * manually chopping our input into segments of about 8000
+ * characters, as long as PHP ignores the error code. If PHP starts
+ * paying attention to the error code, iconv becomes unusable.
+ *
+ * @return int Error code indicating severity of bug.
+ */
+ public static function testIconvTruncateBug()
+ {
+ static $code = null;
+ if ($code === null) {
+ // better not use iconv, otherwise infinite loop!
+ $r = self::unsafeIconv('utf-8', 'ascii//IGNORE', "\xCE\xB1" . str_repeat('a', 9000));
+ if ($r === false) {
+ $code = self::ICONV_UNUSABLE;
+ } elseif (($c = strlen($r)) < 9000) {
+ $code = self::ICONV_TRUNCATES;
+ } elseif ($c > 9000) {
+ trigger_error(
+ 'Your copy of iconv is extremely buggy. Please notify HTML Purifier maintainers: ' .
+ 'include your iconv version as per phpversion()',
+ E_USER_ERROR
+ );
+ } else {
+ $code = self::ICONV_OK;
+ }
+ }
+ return $code;
+ }
+
/**
* This expensive function tests whether or not a given character
* encoding supports ASCII. 7/8-bit encodings like Shift_JIS will
@@ -384,10 +562,18 @@ class HTMLPurifier_Encoder
* @return Array of UTF-8 characters to their corresponding ASCII,
* which can be used to "undo" any overzealous iconv action.
*/
- public static function testEncodingSupportsASCII($encoding, $bypass = false) {
+ public static function testEncodingSupportsASCII($encoding, $bypass = false)
+ {
+ // All calls to iconv here are unsafe, proof by case analysis:
+ // If ICONV_OK, no difference.
+ // If ICONV_TRUNCATE, all calls involve one character inputs,
+ // so bug is not triggered.
+ // If ICONV_UNUSABLE, this call is irrelevant
static $encodings = array();
if (!$bypass) {
- if (isset($encodings[$encoding])) return $encodings[$encoding];
+ if (isset($encodings[$encoding])) {
+ return $encodings[$encoding];
+ }
$lenc = strtolower($encoding);
switch ($lenc) {
case 'shift_jis':
@@ -395,32 +581,31 @@ class HTMLPurifier_Encoder
case 'johab':
return array("\xE2\x82\xA9" => '\\');
}
- if (strpos($lenc, 'iso-8859-') === 0) return array();
+ if (strpos($lenc, 'iso-8859-') === 0) {
+ return array();
+ }
}
$ret = array();
- set_error_handler(array('HTMLPurifier_Encoder', 'muteErrorHandler'));
- if (iconv('UTF-8', $encoding, 'a') === false) return false;
+ if (self::unsafeIconv('UTF-8', $encoding, 'a') === false) {
+ return false;
+ }
for ($i = 0x20; $i <= 0x7E; $i++) { // all printable ASCII chars
$c = chr($i); // UTF-8 char
- $r = iconv('UTF-8', "$encoding//IGNORE", $c); // initial conversion
- if (
- $r === '' ||
+ $r = self::unsafeIconv('UTF-8', "$encoding//IGNORE", $c); // initial conversion
+ if ($r === '' ||
// This line is needed for iconv implementations that do not
// omit characters that do not exist in the target character set
- ($r === $c && iconv($encoding, 'UTF-8//IGNORE', $r) !== $c)
+ ($r === $c && self::unsafeIconv($encoding, 'UTF-8//IGNORE', $r) !== $c)
) {
// Reverse engineer: what's the UTF-8 equiv of this byte
// sequence? This assumes that there's no variable width
// encoding that doesn't support ASCII.
- $ret[iconv($encoding, 'UTF-8//IGNORE', $c)] = $c;
+ $ret[self::unsafeIconv($encoding, 'UTF-8//IGNORE', $c)] = $c;
}
}
- restore_error_handler();
$encodings[$encoding] = $ret;
return $ret;
}
-
-
}
// vim: et sw=4 sts=4
diff --git a/library/HTMLPurifier/EntityLookup.php b/library/HTMLPurifier/EntityLookup.php
index b4dfce94c..f12ff13a3 100644
--- a/library/HTMLPurifier/EntityLookup.php
+++ b/library/HTMLPurifier/EntityLookup.php
@@ -3,20 +3,23 @@
/**
* Object that provides entity lookup table from entity name to character
*/
-class HTMLPurifier_EntityLookup {
-
+class HTMLPurifier_EntityLookup
+{
/**
* Assoc array of entity name to character represented.
+ * @type array
*/
public $table;
/**
* Sets up the entity lookup table from the serialized file contents.
+ * @param bool $file
* @note The serialized contents are versioned, but were generated
* using the maintenance script generate_entity_file.php
* @warning This is not in constructor to help enforce the Singleton
*/
- public function setup($file = false) {
+ public function setup($file = false)
+ {
if (!$file) {
$file = HTMLPURIFIER_PREFIX . '/HTMLPurifier/EntityLookup/entities.ser';
}
@@ -25,9 +28,11 @@ class HTMLPurifier_EntityLookup {
/**
* Retrieves sole instance of the object.
- * @param Optional prototype of custom lookup table to overload with.
+ * @param bool|HTMLPurifier_EntityLookup $prototype Optional prototype of custom lookup table to overload with.
+ * @return HTMLPurifier_EntityLookup
*/
- public static function instance($prototype = false) {
+ public static function instance($prototype = false)
+ {
// no references, since PHP doesn't copy unless modified
static $instance = null;
if ($prototype) {
@@ -38,7 +43,6 @@ class HTMLPurifier_EntityLookup {
}
return $instance;
}
-
}
// vim: et sw=4 sts=4
diff --git a/library/HTMLPurifier/EntityLookup/entities.ser b/library/HTMLPurifier/EntityLookup/entities.ser
index f2b8b8f2d..e8b08128b 100644
--- a/library/HTMLPurifier/EntityLookup/entities.ser
+++ b/library/HTMLPurifier/EntityLookup/entities.ser
@@ -1 +1 @@
-a:246:{s:4:"nbsp";s:2:" ";s:5:"iexcl";s:2:"¡";s:4:"cent";s:2:"¢";s:5:"pound";s:2:"£";s:6:"curren";s:2:"¤";s:3:"yen";s:2:"Â¥";s:6:"brvbar";s:2:"¦";s:4:"sect";s:2:"§";s:3:"uml";s:2:"¨";s:4:"copy";s:2:"©";s:4:"ordf";s:2:"ª";s:5:"laquo";s:2:"«";s:3:"not";s:2:"¬";s:3:"shy";s:2:"­";s:3:"reg";s:2:"®";s:4:"macr";s:2:"¯";s:3:"deg";s:2:"°";s:6:"plusmn";s:2:"±";s:5:"acute";s:2:"´";s:5:"micro";s:2:"µ";s:4:"para";s:2:"¶";s:6:"middot";s:2:"·";s:5:"cedil";s:2:"¸";s:4:"ordm";s:2:"º";s:5:"raquo";s:2:"»";s:6:"iquest";s:2:"¿";s:6:"Agrave";s:2:"À";s:6:"Aacute";s:2:"Ã";s:5:"Acirc";s:2:"Â";s:6:"Atilde";s:2:"Ã";s:4:"Auml";s:2:"Ä";s:5:"Aring";s:2:"Ã…";s:5:"AElig";s:2:"Æ";s:6:"Ccedil";s:2:"Ç";s:6:"Egrave";s:2:"È";s:6:"Eacute";s:2:"É";s:5:"Ecirc";s:2:"Ê";s:4:"Euml";s:2:"Ë";s:6:"Igrave";s:2:"ÃŒ";s:6:"Iacute";s:2:"Ã";s:5:"Icirc";s:2:"ÃŽ";s:4:"Iuml";s:2:"Ã";s:3:"ETH";s:2:"Ã";s:6:"Ntilde";s:2:"Ñ";s:6:"Ograve";s:2:"Ã’";s:6:"Oacute";s:2:"Ó";s:5:"Ocirc";s:2:"Ô";s:6:"Otilde";s:2:"Õ";s:4:"Ouml";s:2:"Ö";s:5:"times";s:2:"×";s:6:"Oslash";s:2:"Ø";s:6:"Ugrave";s:2:"Ù";s:6:"Uacute";s:2:"Ú";s:5:"Ucirc";s:2:"Û";s:4:"Uuml";s:2:"Ãœ";s:6:"Yacute";s:2:"Ã";s:5:"THORN";s:2:"Þ";s:5:"szlig";s:2:"ß";s:6:"agrave";s:2:"à";s:6:"aacute";s:2:"á";s:5:"acirc";s:2:"â";s:6:"atilde";s:2:"ã";s:4:"auml";s:2:"ä";s:5:"aring";s:2:"Ã¥";s:5:"aelig";s:2:"æ";s:6:"ccedil";s:2:"ç";s:6:"egrave";s:2:"è";s:6:"eacute";s:2:"é";s:5:"ecirc";s:2:"ê";s:4:"euml";s:2:"ë";s:6:"igrave";s:2:"ì";s:6:"iacute";s:2:"í";s:5:"icirc";s:2:"î";s:4:"iuml";s:2:"ï";s:3:"eth";s:2:"ð";s:6:"ntilde";s:2:"ñ";s:6:"ograve";s:2:"ò";s:6:"oacute";s:2:"ó";s:5:"ocirc";s:2:"ô";s:6:"otilde";s:2:"õ";s:4:"ouml";s:2:"ö";s:6:"divide";s:2:"÷";s:6:"oslash";s:2:"ø";s:6:"ugrave";s:2:"ù";s:6:"uacute";s:2:"ú";s:5:"ucirc";s:2:"û";s:4:"uuml";s:2:"ü";s:6:"yacute";s:2:"ý";s:5:"thorn";s:2:"þ";s:4:"yuml";s:2:"ÿ";s:4:"quot";s:1:""";s:3:"amp";s:1:"&";s:2:"lt";s:1:"<";s:2:"gt";s:1:">";s:4:"apos";s:1:"'";s:5:"OElig";s:2:"Å’";s:5:"oelig";s:2:"Å“";s:6:"Scaron";s:2:"Å ";s:6:"scaron";s:2:"Å¡";s:4:"Yuml";s:2:"Ÿ";s:4:"circ";s:2:"ˆ";s:5:"tilde";s:2:"Ëœ";s:4:"ensp";s:3:" ";s:4:"emsp";s:3:" ";s:6:"thinsp";s:3:" ";s:4:"zwnj";s:3:"‌";s:3:"zwj";s:3:"â€";s:3:"lrm";s:3:"‎";s:3:"rlm";s:3:"â€";s:5:"ndash";s:3:"–";s:5:"mdash";s:3:"—";s:5:"lsquo";s:3:"‘";s:5:"rsquo";s:3:"’";s:5:"sbquo";s:3:"‚";s:5:"ldquo";s:3:"“";s:5:"rdquo";s:3:"â€";s:5:"bdquo";s:3:"„";s:6:"dagger";s:3:"†";s:6:"Dagger";s:3:"‡";s:6:"permil";s:3:"‰";s:6:"lsaquo";s:3:"‹";s:6:"rsaquo";s:3:"›";s:4:"euro";s:3:"€";s:4:"fnof";s:2:"Æ’";s:5:"Alpha";s:2:"Α";s:4:"Beta";s:2:"Î’";s:5:"Gamma";s:2:"Γ";s:5:"Delta";s:2:"Δ";s:7:"Epsilon";s:2:"Ε";s:4:"Zeta";s:2:"Ζ";s:3:"Eta";s:2:"Η";s:5:"Theta";s:2:"Θ";s:4:"Iota";s:2:"Ι";s:5:"Kappa";s:2:"Κ";s:6:"Lambda";s:2:"Λ";s:2:"Mu";s:2:"Îœ";s:2:"Nu";s:2:"Î";s:2:"Xi";s:2:"Ξ";s:7:"Omicron";s:2:"Ο";s:2:"Pi";s:2:"Π";s:3:"Rho";s:2:"Ρ";s:5:"Sigma";s:2:"Σ";s:3:"Tau";s:2:"Τ";s:7:"Upsilon";s:2:"Î¥";s:3:"Phi";s:2:"Φ";s:3:"Chi";s:2:"Χ";s:3:"Psi";s:2:"Ψ";s:5:"Omega";s:2:"Ω";s:5:"alpha";s:2:"α";s:4:"beta";s:2:"β";s:5:"gamma";s:2:"γ";s:5:"delta";s:2:"δ";s:7:"epsilon";s:2:"ε";s:4:"zeta";s:2:"ζ";s:3:"eta";s:2:"η";s:5:"theta";s:2:"θ";s:4:"iota";s:2:"ι";s:5:"kappa";s:2:"κ";s:6:"lambda";s:2:"λ";s:2:"mu";s:2:"μ";s:2:"nu";s:2:"ν";s:2:"xi";s:2:"ξ";s:7:"omicron";s:2:"ο";s:2:"pi";s:2:"Ï€";s:3:"rho";s:2:"Ï";s:6:"sigmaf";s:2:"Ï‚";s:5:"sigma";s:2:"σ";s:3:"tau";s:2:"Ï„";s:7:"upsilon";s:2:"Ï…";s:3:"phi";s:2:"φ";s:3:"chi";s:2:"χ";s:3:"psi";s:2:"ψ";s:5:"omega";s:2:"ω";s:8:"thetasym";s:2:"Ï‘";s:5:"upsih";s:2:"Ï’";s:3:"piv";s:2:"Ï–";s:4:"bull";s:3:"•";s:6:"hellip";s:3:"…";s:5:"prime";s:3:"′";s:5:"Prime";s:3:"″";s:5:"oline";s:3:"‾";s:5:"frasl";s:3:"â„";s:6:"weierp";s:3:"℘";s:5:"image";s:3:"â„‘";s:4:"real";s:3:"â„œ";s:5:"trade";s:3:"â„¢";s:7:"alefsym";s:3:"ℵ";s:4:"larr";s:3:"â†";s:4:"uarr";s:3:"↑";s:4:"rarr";s:3:"→";s:4:"darr";s:3:"↓";s:4:"harr";s:3:"↔";s:5:"crarr";s:3:"↵";s:4:"lArr";s:3:"â‡";s:4:"uArr";s:3:"⇑";s:4:"rArr";s:3:"⇒";s:4:"dArr";s:3:"⇓";s:4:"hArr";s:3:"⇔";s:6:"forall";s:3:"∀";s:4:"part";s:3:"∂";s:5:"exist";s:3:"∃";s:5:"empty";s:3:"∅";s:5:"nabla";s:3:"∇";s:4:"isin";s:3:"∈";s:5:"notin";s:3:"∉";s:2:"ni";s:3:"∋";s:4:"prod";s:3:"âˆ";s:3:"sum";s:3:"∑";s:5:"minus";s:3:"−";s:6:"lowast";s:3:"∗";s:5:"radic";s:3:"√";s:4:"prop";s:3:"âˆ";s:5:"infin";s:3:"∞";s:3:"ang";s:3:"∠";s:3:"and";s:3:"∧";s:2:"or";s:3:"∨";s:3:"cap";s:3:"∩";s:3:"cup";s:3:"∪";s:3:"int";s:3:"∫";s:3:"sim";s:3:"∼";s:4:"cong";s:3:"≅";s:5:"asymp";s:3:"≈";s:2:"ne";s:3:"≠";s:5:"equiv";s:3:"≡";s:2:"le";s:3:"≤";s:2:"ge";s:3:"≥";s:3:"sub";s:3:"⊂";s:3:"sup";s:3:"⊃";s:4:"nsub";s:3:"⊄";s:4:"sube";s:3:"⊆";s:4:"supe";s:3:"⊇";s:5:"oplus";s:3:"⊕";s:6:"otimes";s:3:"⊗";s:4:"perp";s:3:"⊥";s:4:"sdot";s:3:"â‹…";s:5:"lceil";s:3:"⌈";s:5:"rceil";s:3:"⌉";s:6:"lfloor";s:3:"⌊";s:6:"rfloor";s:3:"⌋";s:4:"lang";s:3:"〈";s:4:"rang";s:3:"〉";s:3:"loz";s:3:"â—Š";s:6:"spades";s:3:"â™ ";s:5:"clubs";s:3:"♣";s:6:"hearts";s:3:"♥";s:5:"diams";s:3:"♦";} \ No newline at end of file
+a:253:{s:4:"fnof";s:2:"Æ’";s:5:"Alpha";s:2:"Α";s:4:"Beta";s:2:"Î’";s:5:"Gamma";s:2:"Γ";s:5:"Delta";s:2:"Δ";s:7:"Epsilon";s:2:"Ε";s:4:"Zeta";s:2:"Ζ";s:3:"Eta";s:2:"Η";s:5:"Theta";s:2:"Θ";s:4:"Iota";s:2:"Ι";s:5:"Kappa";s:2:"Κ";s:6:"Lambda";s:2:"Λ";s:2:"Mu";s:2:"Îœ";s:2:"Nu";s:2:"Î";s:2:"Xi";s:2:"Ξ";s:7:"Omicron";s:2:"Ο";s:2:"Pi";s:2:"Π";s:3:"Rho";s:2:"Ρ";s:5:"Sigma";s:2:"Σ";s:3:"Tau";s:2:"Τ";s:7:"Upsilon";s:2:"Î¥";s:3:"Phi";s:2:"Φ";s:3:"Chi";s:2:"Χ";s:3:"Psi";s:2:"Ψ";s:5:"Omega";s:2:"Ω";s:5:"alpha";s:2:"α";s:4:"beta";s:2:"β";s:5:"gamma";s:2:"γ";s:5:"delta";s:2:"δ";s:7:"epsilon";s:2:"ε";s:4:"zeta";s:2:"ζ";s:3:"eta";s:2:"η";s:5:"theta";s:2:"θ";s:4:"iota";s:2:"ι";s:5:"kappa";s:2:"κ";s:6:"lambda";s:2:"λ";s:2:"mu";s:2:"μ";s:2:"nu";s:2:"ν";s:2:"xi";s:2:"ξ";s:7:"omicron";s:2:"ο";s:2:"pi";s:2:"Ï€";s:3:"rho";s:2:"Ï";s:6:"sigmaf";s:2:"Ï‚";s:5:"sigma";s:2:"σ";s:3:"tau";s:2:"Ï„";s:7:"upsilon";s:2:"Ï…";s:3:"phi";s:2:"φ";s:3:"chi";s:2:"χ";s:3:"psi";s:2:"ψ";s:5:"omega";s:2:"ω";s:8:"thetasym";s:2:"Ï‘";s:5:"upsih";s:2:"Ï’";s:3:"piv";s:2:"Ï–";s:4:"bull";s:3:"•";s:6:"hellip";s:3:"…";s:5:"prime";s:3:"′";s:5:"Prime";s:3:"″";s:5:"oline";s:3:"‾";s:5:"frasl";s:3:"â„";s:6:"weierp";s:3:"℘";s:5:"image";s:3:"â„‘";s:4:"real";s:3:"â„œ";s:5:"trade";s:3:"â„¢";s:7:"alefsym";s:3:"ℵ";s:4:"larr";s:3:"â†";s:4:"uarr";s:3:"↑";s:4:"rarr";s:3:"→";s:4:"darr";s:3:"↓";s:4:"harr";s:3:"↔";s:5:"crarr";s:3:"↵";s:4:"lArr";s:3:"â‡";s:4:"uArr";s:3:"⇑";s:4:"rArr";s:3:"⇒";s:4:"dArr";s:3:"⇓";s:4:"hArr";s:3:"⇔";s:6:"forall";s:3:"∀";s:4:"part";s:3:"∂";s:5:"exist";s:3:"∃";s:5:"empty";s:3:"∅";s:5:"nabla";s:3:"∇";s:4:"isin";s:3:"∈";s:5:"notin";s:3:"∉";s:2:"ni";s:3:"∋";s:4:"prod";s:3:"âˆ";s:3:"sum";s:3:"∑";s:5:"minus";s:3:"−";s:6:"lowast";s:3:"∗";s:5:"radic";s:3:"√";s:4:"prop";s:3:"âˆ";s:5:"infin";s:3:"∞";s:3:"ang";s:3:"∠";s:3:"and";s:3:"∧";s:2:"or";s:3:"∨";s:3:"cap";s:3:"∩";s:3:"cup";s:3:"∪";s:3:"int";s:3:"∫";s:6:"there4";s:3:"∴";s:3:"sim";s:3:"∼";s:4:"cong";s:3:"≅";s:5:"asymp";s:3:"≈";s:2:"ne";s:3:"≠";s:5:"equiv";s:3:"≡";s:2:"le";s:3:"≤";s:2:"ge";s:3:"≥";s:3:"sub";s:3:"⊂";s:3:"sup";s:3:"⊃";s:4:"nsub";s:3:"⊄";s:4:"sube";s:3:"⊆";s:4:"supe";s:3:"⊇";s:5:"oplus";s:3:"⊕";s:6:"otimes";s:3:"⊗";s:4:"perp";s:3:"⊥";s:4:"sdot";s:3:"â‹…";s:5:"lceil";s:3:"⌈";s:5:"rceil";s:3:"⌉";s:6:"lfloor";s:3:"⌊";s:6:"rfloor";s:3:"⌋";s:4:"lang";s:3:"〈";s:4:"rang";s:3:"〉";s:3:"loz";s:3:"â—Š";s:6:"spades";s:3:"â™ ";s:5:"clubs";s:3:"♣";s:6:"hearts";s:3:"♥";s:5:"diams";s:3:"♦";s:4:"quot";s:1:""";s:3:"amp";s:1:"&";s:2:"lt";s:1:"<";s:2:"gt";s:1:">";s:4:"apos";s:1:"'";s:5:"OElig";s:2:"Å’";s:5:"oelig";s:2:"Å“";s:6:"Scaron";s:2:"Å ";s:6:"scaron";s:2:"Å¡";s:4:"Yuml";s:2:"Ÿ";s:4:"circ";s:2:"ˆ";s:5:"tilde";s:2:"Ëœ";s:4:"ensp";s:3:" ";s:4:"emsp";s:3:" ";s:6:"thinsp";s:3:" ";s:4:"zwnj";s:3:"‌";s:3:"zwj";s:3:"â€";s:3:"lrm";s:3:"‎";s:3:"rlm";s:3:"â€";s:5:"ndash";s:3:"–";s:5:"mdash";s:3:"—";s:5:"lsquo";s:3:"‘";s:5:"rsquo";s:3:"’";s:5:"sbquo";s:3:"‚";s:5:"ldquo";s:3:"“";s:5:"rdquo";s:3:"â€";s:5:"bdquo";s:3:"„";s:6:"dagger";s:3:"†";s:6:"Dagger";s:3:"‡";s:6:"permil";s:3:"‰";s:6:"lsaquo";s:3:"‹";s:6:"rsaquo";s:3:"›";s:4:"euro";s:3:"€";s:4:"nbsp";s:2:" ";s:5:"iexcl";s:2:"¡";s:4:"cent";s:2:"¢";s:5:"pound";s:2:"£";s:6:"curren";s:2:"¤";s:3:"yen";s:2:"Â¥";s:6:"brvbar";s:2:"¦";s:4:"sect";s:2:"§";s:3:"uml";s:2:"¨";s:4:"copy";s:2:"©";s:4:"ordf";s:2:"ª";s:5:"laquo";s:2:"«";s:3:"not";s:2:"¬";s:3:"shy";s:2:"­";s:3:"reg";s:2:"®";s:4:"macr";s:2:"¯";s:3:"deg";s:2:"°";s:6:"plusmn";s:2:"±";s:4:"sup2";s:2:"²";s:4:"sup3";s:2:"³";s:5:"acute";s:2:"´";s:5:"micro";s:2:"µ";s:4:"para";s:2:"¶";s:6:"middot";s:2:"·";s:5:"cedil";s:2:"¸";s:4:"sup1";s:2:"¹";s:4:"ordm";s:2:"º";s:5:"raquo";s:2:"»";s:6:"frac14";s:2:"¼";s:6:"frac12";s:2:"½";s:6:"frac34";s:2:"¾";s:6:"iquest";s:2:"¿";s:6:"Agrave";s:2:"À";s:6:"Aacute";s:2:"Ã";s:5:"Acirc";s:2:"Â";s:6:"Atilde";s:2:"Ã";s:4:"Auml";s:2:"Ä";s:5:"Aring";s:2:"Ã…";s:5:"AElig";s:2:"Æ";s:6:"Ccedil";s:2:"Ç";s:6:"Egrave";s:2:"È";s:6:"Eacute";s:2:"É";s:5:"Ecirc";s:2:"Ê";s:4:"Euml";s:2:"Ë";s:6:"Igrave";s:2:"ÃŒ";s:6:"Iacute";s:2:"Ã";s:5:"Icirc";s:2:"ÃŽ";s:4:"Iuml";s:2:"Ã";s:3:"ETH";s:2:"Ã";s:6:"Ntilde";s:2:"Ñ";s:6:"Ograve";s:2:"Ã’";s:6:"Oacute";s:2:"Ó";s:5:"Ocirc";s:2:"Ô";s:6:"Otilde";s:2:"Õ";s:4:"Ouml";s:2:"Ö";s:5:"times";s:2:"×";s:6:"Oslash";s:2:"Ø";s:6:"Ugrave";s:2:"Ù";s:6:"Uacute";s:2:"Ú";s:5:"Ucirc";s:2:"Û";s:4:"Uuml";s:2:"Ãœ";s:6:"Yacute";s:2:"Ã";s:5:"THORN";s:2:"Þ";s:5:"szlig";s:2:"ß";s:6:"agrave";s:2:"à";s:6:"aacute";s:2:"á";s:5:"acirc";s:2:"â";s:6:"atilde";s:2:"ã";s:4:"auml";s:2:"ä";s:5:"aring";s:2:"Ã¥";s:5:"aelig";s:2:"æ";s:6:"ccedil";s:2:"ç";s:6:"egrave";s:2:"è";s:6:"eacute";s:2:"é";s:5:"ecirc";s:2:"ê";s:4:"euml";s:2:"ë";s:6:"igrave";s:2:"ì";s:6:"iacute";s:2:"í";s:5:"icirc";s:2:"î";s:4:"iuml";s:2:"ï";s:3:"eth";s:2:"ð";s:6:"ntilde";s:2:"ñ";s:6:"ograve";s:2:"ò";s:6:"oacute";s:2:"ó";s:5:"ocirc";s:2:"ô";s:6:"otilde";s:2:"õ";s:4:"ouml";s:2:"ö";s:6:"divide";s:2:"÷";s:6:"oslash";s:2:"ø";s:6:"ugrave";s:2:"ù";s:6:"uacute";s:2:"ú";s:5:"ucirc";s:2:"û";s:4:"uuml";s:2:"ü";s:6:"yacute";s:2:"ý";s:5:"thorn";s:2:"þ";s:4:"yuml";s:2:"ÿ";} \ No newline at end of file
diff --git a/library/HTMLPurifier/EntityParser.php b/library/HTMLPurifier/EntityParser.php
index 8c384472d..61529dcd9 100644
--- a/library/HTMLPurifier/EntityParser.php
+++ b/library/HTMLPurifier/EntityParser.php
@@ -12,19 +12,21 @@ class HTMLPurifier_EntityParser
/**
* Reference to entity lookup table.
+ * @type HTMLPurifier_EntityLookup
*/
protected $_entity_lookup;
/**
* Callback regex string for parsing entities.
+ * @type string
*/
protected $_substituteEntitiesRegex =
-'/&(?:[#]x([a-fA-F0-9]+)|[#]0*(\d+)|([A-Za-z_:][A-Za-z0-9.\-_:]*));?/';
-// 1. hex 2. dec 3. string (XML style)
-
+ '/&(?:[#]x([a-fA-F0-9]+)|[#]0*(\d+)|([A-Za-z_:][A-Za-z0-9.\-_:]*));?/';
+ // 1. hex 2. dec 3. string (XML style)
/**
* Decimal to parsed string conversion table for special entities.
+ * @type array
*/
protected $_special_dec2str =
array(
@@ -37,6 +39,7 @@ class HTMLPurifier_EntityParser
/**
* Stripped entity names to decimal conversion table for special entities.
+ * @type array
*/
protected $_special_ent2dec =
array(
@@ -51,41 +54,45 @@ class HTMLPurifier_EntityParser
* running this whenever you have parsed character is t3h 5uck, we run
* it before everything else.
*
- * @param $string String to have non-special entities parsed.
- * @returns Parsed string.
+ * @param string $string String to have non-special entities parsed.
+ * @return string Parsed string.
*/
- public function substituteNonSpecialEntities($string) {
+ public function substituteNonSpecialEntities($string)
+ {
// it will try to detect missing semicolons, but don't rely on it
return preg_replace_callback(
$this->_substituteEntitiesRegex,
array($this, 'nonSpecialEntityCallback'),
$string
- );
+ );
}
/**
* Callback function for substituteNonSpecialEntities() that does the work.
*
- * @param $matches PCRE matches array, with 0 the entire match, and
+ * @param array $matches PCRE matches array, with 0 the entire match, and
* either index 1, 2 or 3 set with a hex value, dec value,
* or string (respectively).
- * @returns Replacement string.
+ * @return string Replacement string.
*/
- protected function nonSpecialEntityCallback($matches) {
+ protected function nonSpecialEntityCallback($matches)
+ {
// replaces all but big five
$entity = $matches[0];
$is_num = (@$matches[0][1] === '#');
if ($is_num) {
$is_hex = (@$entity[2] === 'x');
$code = $is_hex ? hexdec($matches[1]) : (int) $matches[2];
-
// abort for special characters
- if (isset($this->_special_dec2str[$code])) return $entity;
-
+ if (isset($this->_special_dec2str[$code])) {
+ return $entity;
+ }
return HTMLPurifier_Encoder::unichr($code);
} else {
- if (isset($this->_special_ent2dec[$matches[3]])) return $entity;
+ if (isset($this->_special_ent2dec[$matches[3]])) {
+ return $entity;
+ }
if (!$this->_entity_lookup) {
$this->_entity_lookup = HTMLPurifier_EntityLookup::instance();
}
@@ -103,14 +110,16 @@ class HTMLPurifier_EntityParser
* @notice We try to avoid calling this function because otherwise, it
* would have to be called a lot (for every parsed section).
*
- * @param $string String to have non-special entities parsed.
- * @returns Parsed string.
+ * @param string $string String to have non-special entities parsed.
+ * @return string Parsed string.
*/
- public function substituteSpecialEntities($string) {
+ public function substituteSpecialEntities($string)
+ {
return preg_replace_callback(
$this->_substituteEntitiesRegex,
array($this, 'specialEntityCallback'),
- $string);
+ $string
+ );
}
/**
@@ -118,12 +127,13 @@ class HTMLPurifier_EntityParser
*
* This callback has same syntax as nonSpecialEntityCallback().
*
- * @param $matches PCRE-style matches array, with 0 the entire match, and
+ * @param array $matches PCRE-style matches array, with 0 the entire match, and
* either index 1, 2 or 3 set with a hex value, dec value,
* or string (respectively).
- * @returns Replacement string.
+ * @return string Replacement string.
*/
- protected function specialEntityCallback($matches) {
+ protected function specialEntityCallback($matches)
+ {
$entity = $matches[0];
$is_num = (@$matches[0][1] === '#');
if ($is_num) {
@@ -138,7 +148,6 @@ class HTMLPurifier_EntityParser
$entity;
}
}
-
}
// vim: et sw=4 sts=4
diff --git a/library/HTMLPurifier/ErrorCollector.php b/library/HTMLPurifier/ErrorCollector.php
index 6713eaf77..d47e3f2e2 100644
--- a/library/HTMLPurifier/ErrorCollector.php
+++ b/library/HTMLPurifier/ErrorCollector.php
@@ -16,16 +16,46 @@ class HTMLPurifier_ErrorCollector
const MESSAGE = 2;
const CHILDREN = 3;
+ /**
+ * @type array
+ */
protected $errors;
+
+ /**
+ * @type array
+ */
protected $_current;
+
+ /**
+ * @type array
+ */
protected $_stacks = array(array());
+
+ /**
+ * @type HTMLPurifier_Language
+ */
protected $locale;
+
+ /**
+ * @type HTMLPurifier_Generator
+ */
protected $generator;
+
+ /**
+ * @type HTMLPurifier_Context
+ */
protected $context;
+ /**
+ * @type array
+ */
protected $lines = array();
- public function __construct($context) {
+ /**
+ * @param HTMLPurifier_Context $context
+ */
+ public function __construct($context)
+ {
$this->locale =& $context->get('Locale');
$this->context = $context;
$this->_current =& $this->_stacks[0];
@@ -34,13 +64,11 @@ class HTMLPurifier_ErrorCollector
/**
* Sends an error message to the collector for later use
- * @param $severity int Error severity, PHP error style (don't use E_USER_)
- * @param $msg string Error message text
- * @param $subst1 string First substitution for $msg
- * @param $subst2 string ...
+ * @param int $severity Error severity, PHP error style (don't use E_USER_)
+ * @param string $msg Error message text
*/
- public function send($severity, $msg) {
-
+ public function send($severity, $msg)
+ {
$args = array();
if (func_num_args() > 2) {
$args = func_get_args();
@@ -50,7 +78,7 @@ class HTMLPurifier_ErrorCollector
$token = $this->context->get('CurrentToken', true);
$line = $token ? $token->line : $this->context->get('CurrentLine', true);
- $col = $token ? $token->col : $this->context->get('CurrentCol', true);
+ $col = $token ? $token->col : $this->context->get('CurrentCol', true);
$attr = $this->context->get('CurrentAttr', true);
// perform special substitutions, also add custom parameters
@@ -60,7 +88,9 @@ class HTMLPurifier_ErrorCollector
}
if (!is_null($attr)) {
$subst['$CurrentAttr.Name'] = $attr;
- if (isset($token->attr[$attr])) $subst['$CurrentAttr.Value'] = $token->attr[$attr];
+ if (isset($token->attr[$attr])) {
+ $subst['$CurrentAttr.Value'] = $token->attr[$attr];
+ }
}
if (empty($args)) {
@@ -69,7 +99,9 @@ class HTMLPurifier_ErrorCollector
$msg = $this->locale->formatMessage($msg, $args);
}
- if (!empty($subst)) $msg = strtr($msg, $subst);
+ if (!empty($subst)) {
+ $msg = strtr($msg, $subst);
+ }
// (numerically indexed)
$error = array(
@@ -80,16 +112,15 @@ class HTMLPurifier_ErrorCollector
);
$this->_current[] = $error;
-
// NEW CODE BELOW ...
-
- $struct = null;
// Top-level errors are either:
// TOKEN type, if $value is set appropriately, or
// "syntax" type, if $value is null
$new_struct = new HTMLPurifier_ErrorStruct();
$new_struct->type = HTMLPurifier_ErrorStruct::TOKEN;
- if ($token) $new_struct->value = clone $token;
+ if ($token) {
+ $new_struct->value = clone $token;
+ }
if (is_int($line) && is_int($col)) {
if (isset($this->lines[$line][$col])) {
$struct = $this->lines[$line][$col];
@@ -128,30 +159,34 @@ class HTMLPurifier_ErrorCollector
/**
* Retrieves raw error data for custom formatter to use
- * @param List of arrays in format of array(line of error,
- * error severity, error message,
- * recursive sub-errors array)
*/
- public function getRaw() {
+ public function getRaw()
+ {
return $this->errors;
}
/**
* Default HTML formatting implementation for error messages
- * @param $config Configuration array, vital for HTML output nature
- * @param $errors Errors array to display; used for recursion.
+ * @param HTMLPurifier_Config $config Configuration, vital for HTML output nature
+ * @param array $errors Errors array to display; used for recursion.
+ * @return string
*/
- public function getHTMLFormatted($config, $errors = null) {
+ public function getHTMLFormatted($config, $errors = null)
+ {
$ret = array();
$this->generator = new HTMLPurifier_Generator($config, $this->context);
- if ($errors === null) $errors = $this->errors;
+ if ($errors === null) {
+ $errors = $this->errors;
+ }
// 'At line' message needs to be removed
// generation code for new structure goes here. It needs to be recursive.
foreach ($this->lines as $line => $col_array) {
- if ($line == -1) continue;
+ if ($line == -1) {
+ continue;
+ }
foreach ($col_array as $col => $struct) {
$this->_renderStruct($ret, $struct, $line, $col);
}
@@ -168,7 +203,8 @@ class HTMLPurifier_ErrorCollector
}
- private function _renderStruct(&$ret, $struct, $line = null, $col = null) {
+ private function _renderStruct(&$ret, $struct, $line = null, $col = null)
+ {
$stack = array($struct);
$context_stack = array(array());
while ($current = array_pop($stack)) {
@@ -194,7 +230,7 @@ class HTMLPurifier_ErrorCollector
//$string .= '</pre>';
$ret[] = $string;
}
- foreach ($current->children as $type => $array) {
+ foreach ($current->children as $array) {
$context[] = $current;
$stack = array_merge($stack, array_reverse($array, true));
for ($i = count($array); $i > 0; $i--) {
@@ -203,7 +239,6 @@ class HTMLPurifier_ErrorCollector
}
}
}
-
}
// vim: et sw=4 sts=4
diff --git a/library/HTMLPurifier/ErrorStruct.php b/library/HTMLPurifier/ErrorStruct.php
index 9bc8996ec..cf869d321 100644
--- a/library/HTMLPurifier/ErrorStruct.php
+++ b/library/HTMLPurifier/ErrorStruct.php
@@ -19,6 +19,7 @@ class HTMLPurifier_ErrorStruct
/**
* Type of this struct.
+ * @type string
*/
public $type;
@@ -28,11 +29,13 @@ class HTMLPurifier_ErrorStruct
* - TOKEN: Instance of HTMLPurifier_Token
* - ATTR: array('attr-name', 'value')
* - CSSPROP: array('prop-name', 'value')
+ * @type mixed
*/
public $value;
/**
* Errors registered for this structure.
+ * @type array
*/
public $errors = array();
@@ -40,10 +43,17 @@ class HTMLPurifier_ErrorStruct
* Child ErrorStructs that are from this structure. For example, a TOKEN
* ErrorStruct would contain ATTR ErrorStructs. This is a multi-dimensional
* array in structure: [TYPE]['identifier']
+ * @type array
*/
public $children = array();
- public function getChild($type, $id) {
+ /**
+ * @param string $type
+ * @param string $id
+ * @return mixed
+ */
+ public function getChild($type, $id)
+ {
if (!isset($this->children[$type][$id])) {
$this->children[$type][$id] = new HTMLPurifier_ErrorStruct();
$this->children[$type][$id]->type = $type;
@@ -51,10 +61,14 @@ class HTMLPurifier_ErrorStruct
return $this->children[$type][$id];
}
- public function addError($severity, $message) {
+ /**
+ * @param int $severity
+ * @param string $message
+ */
+ public function addError($severity, $message)
+ {
$this->errors[] = array($severity, $message);
}
-
}
// vim: et sw=4 sts=4
diff --git a/library/HTMLPurifier/Filter.php b/library/HTMLPurifier/Filter.php
index 9a0e7b09f..c1f41ee16 100644
--- a/library/HTMLPurifier/Filter.php
+++ b/library/HTMLPurifier/Filter.php
@@ -23,24 +23,34 @@ class HTMLPurifier_Filter
{
/**
- * Name of the filter for identification purposes
+ * Name of the filter for identification purposes.
+ * @type string
*/
public $name;
/**
* Pre-processor function, handles HTML before HTML Purifier
+ * @param string $html
+ * @param HTMLPurifier_Config $config
+ * @param HTMLPurifier_Context $context
+ * @return string
*/
- public function preFilter($html, $config, $context) {
+ public function preFilter($html, $config, $context)
+ {
return $html;
}
/**
* Post-processor function, handles HTML after HTML Purifier
+ * @param string $html
+ * @param HTMLPurifier_Config $config
+ * @param HTMLPurifier_Context $context
+ * @return string
*/
- public function postFilter($html, $config, $context) {
+ public function postFilter($html, $config, $context)
+ {
return $html;
}
-
}
// vim: et sw=4 sts=4
diff --git a/library/HTMLPurifier/Filter/ExtractStyleBlocks.php b/library/HTMLPurifier/Filter/ExtractStyleBlocks.php
index bbf78a663..08e62c16b 100644
--- a/library/HTMLPurifier/Filter/ExtractStyleBlocks.php
+++ b/library/HTMLPurifier/Filter/ExtractStyleBlocks.php
@@ -1,5 +1,13 @@
<?php
+// why is this a top level function? Because PHP 5.2.0 doesn't seem to
+// understand how to interpret this filter if it's a static method.
+// It's all really silly, but if we go this route it might be reasonable
+// to coalesce all of these methods into one.
+function htmlpurifier_filter_extractstyleblocks_muteerrorhandler()
+{
+}
+
/**
* This filter extracts <style> blocks from input HTML, cleans them up
* using CSSTidy, and then places them in $purifier->context->get('StyleBlocks')
@@ -16,30 +24,77 @@
*/
class HTMLPurifier_Filter_ExtractStyleBlocks extends HTMLPurifier_Filter
{
-
+ /**
+ * @type string
+ */
public $name = 'ExtractStyleBlocks';
+
+ /**
+ * @type array
+ */
private $_styleMatches = array();
+
+ /**
+ * @type csstidy
+ */
private $_tidy;
- public function __construct() {
+ /**
+ * @type HTMLPurifier_AttrDef_HTML_ID
+ */
+ private $_id_attrdef;
+
+ /**
+ * @type HTMLPurifier_AttrDef_CSS_Ident
+ */
+ private $_class_attrdef;
+
+ /**
+ * @type HTMLPurifier_AttrDef_Enum
+ */
+ private $_enum_attrdef;
+
+ public function __construct()
+ {
$this->_tidy = new csstidy();
+ $this->_tidy->set_cfg('lowercase_s', false);
+ $this->_id_attrdef = new HTMLPurifier_AttrDef_HTML_ID(true);
+ $this->_class_attrdef = new HTMLPurifier_AttrDef_CSS_Ident();
+ $this->_enum_attrdef = new HTMLPurifier_AttrDef_Enum(
+ array(
+ 'first-child',
+ 'link',
+ 'visited',
+ 'active',
+ 'hover',
+ 'focus'
+ )
+ );
}
/**
* Save the contents of CSS blocks to style matches
- * @param $matches preg_replace style $matches array
+ * @param array $matches preg_replace style $matches array
*/
- protected function styleCallback($matches) {
+ protected function styleCallback($matches)
+ {
$this->_styleMatches[] = $matches[1];
}
/**
* Removes inline <style> tags from HTML, saves them for later use
+ * @param string $html
+ * @param HTMLPurifier_Config $config
+ * @param HTMLPurifier_Context $context
+ * @return string
* @todo Extend to indicate non-text/css style blocks
*/
- public function preFilter($html, $config, $context) {
+ public function preFilter($html, $config, $context)
+ {
$tidy = $config->get('Filter.ExtractStyleBlocks.TidyImpl');
- if ($tidy !== null) $this->_tidy = $tidy;
+ if ($tidy !== null) {
+ $this->_tidy = $tidy;
+ }
$html = preg_replace_callback('#<style(?:\s.*)?>(.+)</style>#isU', array($this, 'styleCallback'), $html);
$style_blocks = $this->_styleMatches;
$this->_styleMatches = array(); // reset
@@ -55,12 +110,14 @@ class HTMLPurifier_Filter_ExtractStyleBlocks extends HTMLPurifier_Filter
/**
* Takes CSS (the stuff found in <style>) and cleans it.
* @warning Requires CSSTidy <http://csstidy.sourceforge.net/>
- * @param $css CSS styling to clean
- * @param $config Instance of HTMLPurifier_Config
- * @param $context Instance of HTMLPurifier_Context
- * @return Cleaned CSS
+ * @param string $css CSS styling to clean
+ * @param HTMLPurifier_Config $config
+ * @param HTMLPurifier_Context $context
+ * @throws HTMLPurifier_Exception
+ * @return string Cleaned CSS
*/
- public function cleanCSS($css, $config, $context) {
+ public function cleanCSS($css, $config, $context)
+ {
// prepare scope
$scope = $config->get('Filter.ExtractStyleBlocks.Scope');
if ($scope !== null) {
@@ -77,27 +134,170 @@ class HTMLPurifier_Filter_ExtractStyleBlocks extends HTMLPurifier_Filter
$css = substr($css, 0, -3);
}
$css = trim($css);
+ set_error_handler('htmlpurifier_filter_extractstyleblocks_muteerrorhandler');
$this->_tidy->parse($css);
+ restore_error_handler();
$css_definition = $config->getDefinition('CSS');
+ $html_definition = $config->getDefinition('HTML');
+ $new_css = array();
foreach ($this->_tidy->css as $k => $decls) {
// $decls are all CSS declarations inside an @ selector
$new_decls = array();
foreach ($decls as $selector => $style) {
$selector = trim($selector);
- if ($selector === '') continue; // should not happen
- if ($selector[0] === '+') {
- if ($selector !== '' && $selector[0] === '+') continue;
- }
- if (!empty($scopes)) {
- $new_selector = array(); // because multiple ones are possible
- $selectors = array_map('trim', explode(',', $selector));
- foreach ($scopes as $s1) {
- foreach ($selectors as $s2) {
- $new_selector[] = "$s1 $s2";
+ if ($selector === '') {
+ continue;
+ } // should not happen
+ // Parse the selector
+ // Here is the relevant part of the CSS grammar:
+ //
+ // ruleset
+ // : selector [ ',' S* selector ]* '{' ...
+ // selector
+ // : simple_selector [ combinator selector | S+ [ combinator? selector ]? ]?
+ // combinator
+ // : '+' S*
+ // : '>' S*
+ // simple_selector
+ // : element_name [ HASH | class | attrib | pseudo ]*
+ // | [ HASH | class | attrib | pseudo ]+
+ // element_name
+ // : IDENT | '*'
+ // ;
+ // class
+ // : '.' IDENT
+ // ;
+ // attrib
+ // : '[' S* IDENT S* [ [ '=' | INCLUDES | DASHMATCH ] S*
+ // [ IDENT | STRING ] S* ]? ']'
+ // ;
+ // pseudo
+ // : ':' [ IDENT | FUNCTION S* [IDENT S*]? ')' ]
+ // ;
+ //
+ // For reference, here are the relevant tokens:
+ //
+ // HASH #{name}
+ // IDENT {ident}
+ // INCLUDES ==
+ // DASHMATCH |=
+ // STRING {string}
+ // FUNCTION {ident}\(
+ //
+ // And the lexical scanner tokens
+ //
+ // name {nmchar}+
+ // nmchar [_a-z0-9-]|{nonascii}|{escape}
+ // nonascii [\240-\377]
+ // escape {unicode}|\\[^\r\n\f0-9a-f]
+ // unicode \\{h}}{1,6}(\r\n|[ \t\r\n\f])?
+ // ident -?{nmstart}{nmchar*}
+ // nmstart [_a-z]|{nonascii}|{escape}
+ // string {string1}|{string2}
+ // string1 \"([^\n\r\f\\"]|\\{nl}|{escape})*\"
+ // string2 \'([^\n\r\f\\"]|\\{nl}|{escape})*\'
+ //
+ // We'll implement a subset (in order to reduce attack
+ // surface); in particular:
+ //
+ // - No Unicode support
+ // - No escapes support
+ // - No string support (by proxy no attrib support)
+ // - element_name is matched against allowed
+ // elements (some people might find this
+ // annoying...)
+ // - Pseudo-elements one of :first-child, :link,
+ // :visited, :active, :hover, :focus
+
+ // handle ruleset
+ $selectors = array_map('trim', explode(',', $selector));
+ $new_selectors = array();
+ foreach ($selectors as $sel) {
+ // split on +, > and spaces
+ $basic_selectors = preg_split('/\s*([+> ])\s*/', $sel, -1, PREG_SPLIT_DELIM_CAPTURE);
+ // even indices are chunks, odd indices are
+ // delimiters
+ $nsel = null;
+ $delim = null; // guaranteed to be non-null after
+ // two loop iterations
+ for ($i = 0, $c = count($basic_selectors); $i < $c; $i++) {
+ $x = $basic_selectors[$i];
+ if ($i % 2) {
+ // delimiter
+ if ($x === ' ') {
+ $delim = ' ';
+ } else {
+ $delim = ' ' . $x . ' ';
+ }
+ } else {
+ // simple selector
+ $components = preg_split('/([#.:])/', $x, -1, PREG_SPLIT_DELIM_CAPTURE);
+ $sdelim = null;
+ $nx = null;
+ for ($j = 0, $cc = count($components); $j < $cc; $j++) {
+ $y = $components[$j];
+ if ($j === 0) {
+ if ($y === '*' || isset($html_definition->info[$y = strtolower($y)])) {
+ $nx = $y;
+ } else {
+ // $nx stays null; this matters
+ // if we don't manage to find
+ // any valid selector content,
+ // in which case we ignore the
+ // outer $delim
+ }
+ } elseif ($j % 2) {
+ // set delimiter
+ $sdelim = $y;
+ } else {
+ $attrdef = null;
+ if ($sdelim === '#') {
+ $attrdef = $this->_id_attrdef;
+ } elseif ($sdelim === '.') {
+ $attrdef = $this->_class_attrdef;
+ } elseif ($sdelim === ':') {
+ $attrdef = $this->_enum_attrdef;
+ } else {
+ throw new HTMLPurifier_Exception('broken invariant sdelim and preg_split');
+ }
+ $r = $attrdef->validate($y, $config, $context);
+ if ($r !== false) {
+ if ($r !== true) {
+ $y = $r;
+ }
+ if ($nx === null) {
+ $nx = '';
+ }
+ $nx .= $sdelim . $y;
+ }
+ }
+ }
+ if ($nx !== null) {
+ if ($nsel === null) {
+ $nsel = $nx;
+ } else {
+ $nsel .= $delim . $nx;
+ }
+ } else {
+ // delimiters to the left of invalid
+ // basic selector ignored
+ }
+ }
+ }
+ if ($nsel !== null) {
+ if (!empty($scopes)) {
+ foreach ($scopes as $s) {
+ $new_selectors[] = "$s $nsel";
+ }
+ } else {
+ $new_selectors[] = $nsel;
}
}
- $selector = implode(', ', $new_selector); // now it's a string
}
+ if (empty($new_selectors)) {
+ continue;
+ }
+ $selector = implode(', ', $new_selectors);
foreach ($style as $name => $value) {
if (!isset($css_definition->info[$name])) {
unset($style[$name]);
@@ -105,15 +305,19 @@ class HTMLPurifier_Filter_ExtractStyleBlocks extends HTMLPurifier_Filter
}
$def = $css_definition->info[$name];
$ret = $def->validate($value, $config, $context);
- if ($ret === false) unset($style[$name]);
- else $style[$name] = $ret;
+ if ($ret === false) {
+ unset($style[$name]);
+ } else {
+ $style[$name] = $ret;
+ }
}
$new_decls[$selector] = $style;
}
- $this->_tidy->css[$k] = $new_decls;
+ $new_css[$k] = $new_decls;
}
// remove stuff that shouldn't be used, could be reenabled
// after security risks are analyzed
+ $this->_tidy->css = $new_css;
$this->_tidy->import = array();
$this->_tidy->charset = null;
$this->_tidy->namespace = null;
@@ -122,14 +326,13 @@ class HTMLPurifier_Filter_ExtractStyleBlocks extends HTMLPurifier_Filter
// that no funny business occurs (i.e. </style> in a font-family prop).
if ($config->get('Filter.ExtractStyleBlocks.Escaping')) {
$css = str_replace(
- array('<', '>', '&'),
+ array('<', '>', '&'),
array('\3C ', '\3E ', '\26 '),
$css
);
}
return $css;
}
-
}
// vim: et sw=4 sts=4
diff --git a/library/HTMLPurifier/Filter/YouTube.php b/library/HTMLPurifier/Filter/YouTube.php
index 23df221ea..411519ad6 100644
--- a/library/HTMLPurifier/Filter/YouTube.php
+++ b/library/HTMLPurifier/Filter/YouTube.php
@@ -3,36 +3,62 @@
class HTMLPurifier_Filter_YouTube extends HTMLPurifier_Filter
{
+ /**
+ * @type string
+ */
public $name = 'YouTube';
- public function preFilter($html, $config, $context) {
- $pre_regex = '#<object[^>]+>.+?'.
+ /**
+ * @param string $html
+ * @param HTMLPurifier_Config $config
+ * @param HTMLPurifier_Context $context
+ * @return string
+ */
+ public function preFilter($html, $config, $context)
+ {
+ $pre_regex = '#<object[^>]+>.+?' .
'http://www.youtube.com/((?:v|cp)/[A-Za-z0-9\-_=]+).+?</object>#s';
$pre_replace = '<span class="youtube-embed">\1</span>';
return preg_replace($pre_regex, $pre_replace, $html);
}
- public function postFilter($html, $config, $context) {
+ /**
+ * @param string $html
+ * @param HTMLPurifier_Config $config
+ * @param HTMLPurifier_Context $context
+ * @return string
+ */
+ public function postFilter($html, $config, $context)
+ {
$post_regex = '#<span class="youtube-embed">((?:v|cp)/[A-Za-z0-9\-_=]+)</span>#';
return preg_replace_callback($post_regex, array($this, 'postFilterCallback'), $html);
}
- protected function armorUrl($url) {
+ /**
+ * @param $url
+ * @return string
+ */
+ protected function armorUrl($url)
+ {
return str_replace('--', '-&#45;', $url);
}
- protected function postFilterCallback($matches) {
+ /**
+ * @param array $matches
+ * @return string
+ */
+ protected function postFilterCallback($matches)
+ {
$url = $this->armorUrl($matches[1]);
- return '<object width="425" height="350" type="application/x-shockwave-flash" '.
- 'data="http://www.youtube.com/'.$url.'">'.
- '<param name="movie" value="http://www.youtube.com/'.$url.'"></param>'.
- '<!--[if IE]>'.
- '<embed src="http://www.youtube.com/'.$url.'"'.
- 'type="application/x-shockwave-flash"'.
- 'wmode="transparent" width="425" height="350" />'.
- '<![endif]-->'.
- '</object>';
-
+ return '<object width="425" height="350" type="application/x-shockwave-flash" ' .
+ 'data="http://www.youtube.com/' . $url . '">' .
+ '<param name="movie" value="http://www.youtube.com/' . $url . '"></param>' .
+ '<!--[if IE]>' .
+ '<embed src="http://www.youtube.com/' . $url . '"' .
+ 'type="application/x-shockwave-flash"' .
+ 'wmode="transparent" width="425" height="350" />' .
+ '<![endif]-->' .
+ '</object>';
}
}
diff --git a/library/HTMLPurifier/Generator.php b/library/HTMLPurifier/Generator.php
index 4a6241727..6fb568714 100644
--- a/library/HTMLPurifier/Generator.php
+++ b/library/HTMLPurifier/Generator.php
@@ -11,49 +11,64 @@ class HTMLPurifier_Generator
{
/**
- * Whether or not generator should produce XML output
+ * Whether or not generator should produce XML output.
+ * @type bool
*/
private $_xhtml = true;
/**
- * :HACK: Whether or not generator should comment the insides of <script> tags
+ * :HACK: Whether or not generator should comment the insides of <script> tags.
+ * @type bool
*/
private $_scriptFix = false;
/**
* Cache of HTMLDefinition during HTML output to determine whether or
* not attributes should be minimized.
+ * @type HTMLPurifier_HTMLDefinition
*/
private $_def;
/**
- * Cache of %Output.SortAttr
+ * Cache of %Output.SortAttr.
+ * @type bool
*/
private $_sortAttr;
/**
- * Cache of %Output.FlashCompat
+ * Cache of %Output.FlashCompat.
+ * @type bool
*/
private $_flashCompat;
/**
+ * Cache of %Output.FixInnerHTML.
+ * @type bool
+ */
+ private $_innerHTMLFix;
+
+ /**
* Stack for keeping track of object information when outputting IE
* compatibility code.
+ * @type array
*/
private $_flashStack = array();
/**
* Configuration for the generator
+ * @type HTMLPurifier_Config
*/
protected $config;
/**
- * @param $config Instance of HTMLPurifier_Config
- * @param $context Instance of HTMLPurifier_Context
+ * @param HTMLPurifier_Config $config
+ * @param HTMLPurifier_Context $context
*/
- public function __construct($config, $context) {
+ public function __construct($config, $context)
+ {
$this->config = $config;
$this->_scriptFix = $config->get('Output.CommentScriptContents');
+ $this->_innerHTMLFix = $config->get('Output.FixInnerHTML');
$this->_sortAttr = $config->get('Output.SortAttr');
$this->_flashCompat = $config->get('Output.FlashCompat');
$this->_def = $config->getHTMLDefinition();
@@ -62,12 +77,14 @@ class HTMLPurifier_Generator
/**
* Generates HTML from an array of tokens.
- * @param $tokens Array of HTMLPurifier_Token
- * @param $config HTMLPurifier_Config object
- * @return Generated HTML
+ * @param HTMLPurifier_Token[] $tokens Array of HTMLPurifier_Token
+ * @return string Generated HTML
*/
- public function generateFromTokens($tokens) {
- if (!$tokens) return '';
+ public function generateFromTokens($tokens)
+ {
+ if (!$tokens) {
+ return '';
+ }
// Basic algorithm
$html = '';
@@ -86,30 +103,41 @@ class HTMLPurifier_Generator
// Tidy cleanup
if (extension_loaded('tidy') && $this->config->get('Output.TidyFormat')) {
$tidy = new Tidy;
- $tidy->parseString($html, array(
- 'indent'=> true,
- 'output-xhtml' => $this->_xhtml,
- 'show-body-only' => true,
- 'indent-spaces' => 2,
- 'wrap' => 68,
- ), 'utf8');
+ $tidy->parseString(
+ $html,
+ array(
+ 'indent'=> true,
+ 'output-xhtml' => $this->_xhtml,
+ 'show-body-only' => true,
+ 'indent-spaces' => 2,
+ 'wrap' => 68,
+ ),
+ 'utf8'
+ );
$tidy->cleanRepair();
$html = (string) $tidy; // explicit cast necessary
}
// Normalize newlines to system defined value
- $nl = $this->config->get('Output.Newline');
- if ($nl === null) $nl = PHP_EOL;
- if ($nl !== "\n") $html = str_replace("\n", $nl, $html);
+ if ($this->config->get('Core.NormalizeNewlines')) {
+ $nl = $this->config->get('Output.Newline');
+ if ($nl === null) {
+ $nl = PHP_EOL;
+ }
+ if ($nl !== "\n") {
+ $html = str_replace("\n", $nl, $html);
+ }
+ }
return $html;
}
/**
* Generates HTML from a single token.
- * @param $token HTMLPurifier_Token object.
- * @return Generated HTML
+ * @param HTMLPurifier_Token $token HTMLPurifier_Token object.
+ * @return string Generated HTML
*/
- public function generateFromToken($token) {
+ public function generateFromToken($token)
+ {
if (!$token instanceof HTMLPurifier_Token) {
trigger_error('Cannot generate HTML from non-HTMLPurifier_Token object', E_USER_WARNING);
return '';
@@ -130,19 +158,7 @@ class HTMLPurifier_Generator
$_extra = '';
if ($this->_flashCompat) {
if ($token->name == "object" && !empty($this->_flashStack)) {
- $flash = array_pop($this->_flashStack);
- $compat_token = new HTMLPurifier_Token_Empty("embed");
- foreach ($flash->attr as $name => $val) {
- if ($name == "classid") continue;
- if ($name == "type") continue;
- if ($name == "data") $name = "src";
- $compat_token->attr[$name] = $val;
- }
- foreach ($flash->param as $name => $val) {
- if ($name == "movie") $name = "src";
- $compat_token->attr[$name] = $val;
- }
- $_extra = "<!--[if IE]>".$this->generateFromToken($compat_token)."<![endif]-->";
+ // doesn't do anything for now
}
}
return $_extra . '</' . $token->name . '>';
@@ -169,11 +185,16 @@ class HTMLPurifier_Generator
/**
* Special case processor for the contents of script tags
+ * @param HTMLPurifier_Token $token HTMLPurifier_Token object.
+ * @return string
* @warning This runs into problems if there's already a literal
* --> somewhere inside the script contents.
*/
- public function generateScriptFromToken($token) {
- if (!$token instanceof HTMLPurifier_Token_Text) return $this->generateFromToken($token);
+ public function generateScriptFromToken($token)
+ {
+ if (!$token instanceof HTMLPurifier_Token_Text) {
+ return $this->generateFromToken($token);
+ }
// Thanks <http://lachy.id.au/log/2005/05/script-comments>
$data = preg_replace('#//\s*$#', '', $token->data);
return '<!--//--><![CDATA[//><!--' . "\n" . trim($data) . "\n" . '//--><!]]>';
@@ -182,24 +203,60 @@ class HTMLPurifier_Generator
/**
* Generates attribute declarations from attribute array.
* @note This does not include the leading or trailing space.
- * @param $assoc_array_of_attributes Attribute array
- * @param $element Name of element attributes are for, used to check
+ * @param array $assoc_array_of_attributes Attribute array
+ * @param string $element Name of element attributes are for, used to check
* attribute minimization.
- * @return Generate HTML fragment for insertion.
+ * @return string Generated HTML fragment for insertion.
*/
- public function generateAttributes($assoc_array_of_attributes, $element = false) {
+ public function generateAttributes($assoc_array_of_attributes, $element = '')
+ {
$html = '';
- if ($this->_sortAttr) ksort($assoc_array_of_attributes);
+ if ($this->_sortAttr) {
+ ksort($assoc_array_of_attributes);
+ }
foreach ($assoc_array_of_attributes as $key => $value) {
if (!$this->_xhtml) {
// Remove namespaced attributes
- if (strpos($key, ':') !== false) continue;
+ if (strpos($key, ':') !== false) {
+ continue;
+ }
// Check if we should minimize the attribute: val="val" -> val
if ($element && !empty($this->_def->info[$element]->attr[$key]->minimized)) {
$html .= $key . ' ';
continue;
}
}
+ // Workaround for Internet Explorer innerHTML bug.
+ // Essentially, Internet Explorer, when calculating
+ // innerHTML, omits quotes if there are no instances of
+ // angled brackets, quotes or spaces. However, when parsing
+ // HTML (for example, when you assign to innerHTML), it
+ // treats backticks as quotes. Thus,
+ // <img alt="``" />
+ // becomes
+ // <img alt=`` />
+ // becomes
+ // <img alt='' />
+ // Fortunately, all we need to do is trigger an appropriate
+ // quoting style, which we do by adding an extra space.
+ // This also is consistent with the W3C spec, which states
+ // that user agents may ignore leading or trailing
+ // whitespace (in fact, most don't, at least for attributes
+ // like alt, but an extra space at the end is barely
+ // noticeable). Still, we have a configuration knob for
+ // this, since this transformation is not necesary if you
+ // don't process user input with innerHTML or you don't plan
+ // on supporting Internet Explorer.
+ if ($this->_innerHTMLFix) {
+ if (strpos($value, '`') !== false) {
+ // check if correct quoting style would not already be
+ // triggered
+ if (strcspn($value, '"\' <>') === strlen($value)) {
+ // protect!
+ $value .= ' ';
+ }
+ }
+ }
$html .= $key.'="'.$this->escape($value).'" ';
}
return rtrim($html);
@@ -210,15 +267,20 @@ class HTMLPurifier_Generator
* @todo This really ought to be protected, but until we have a facility
* for properly generating HTML here w/o using tokens, it stays
* public.
- * @param $string String data to escape for HTML.
- * @param $quote Quoting style, like htmlspecialchars. ENT_NOQUOTES is
+ * @param string $string String data to escape for HTML.
+ * @param int $quote Quoting style, like htmlspecialchars. ENT_NOQUOTES is
* permissible for non-attribute output.
- * @return String escaped data.
+ * @return string escaped data.
*/
- public function escape($string, $quote = ENT_COMPAT) {
+ public function escape($string, $quote = null)
+ {
+ // Workaround for APC bug on Mac Leopard reported by sidepodcast
+ // http://htmlpurifier.org/phorum/read.php?3,4823,4846
+ if ($quote === null) {
+ $quote = ENT_COMPAT;
+ }
return htmlspecialchars($string, $quote, 'UTF-8');
}
-
}
// vim: et sw=4 sts=4
diff --git a/library/HTMLPurifier/HTMLDefinition.php b/library/HTMLPurifier/HTMLDefinition.php
index c99ac11eb..9b7b334dd 100644
--- a/library/HTMLPurifier/HTMLDefinition.php
+++ b/library/HTMLPurifier/HTMLDefinition.php
@@ -29,60 +29,71 @@ class HTMLPurifier_HTMLDefinition extends HTMLPurifier_Definition
// FULLY-PUBLIC VARIABLES ---------------------------------------------
/**
- * Associative array of element names to HTMLPurifier_ElementDef
+ * Associative array of element names to HTMLPurifier_ElementDef.
+ * @type HTMLPurifier_ElementDef[]
*/
public $info = array();
/**
* Associative array of global attribute name to attribute definition.
+ * @type array
*/
public $info_global_attr = array();
/**
* String name of parent element HTML will be going into.
+ * @type string
*/
public $info_parent = 'div';
/**
* Definition for parent element, allows parent element to be a
* tag that's not allowed inside the HTML fragment.
+ * @type HTMLPurifier_ElementDef
*/
public $info_parent_def;
/**
- * String name of element used to wrap inline elements in block context
+ * String name of element used to wrap inline elements in block context.
+ * @type string
* @note This is rarely used except for BLOCKQUOTEs in strict mode
*/
public $info_block_wrapper = 'p';
/**
- * Associative array of deprecated tag name to HTMLPurifier_TagTransform
+ * Associative array of deprecated tag name to HTMLPurifier_TagTransform.
+ * @type array
*/
public $info_tag_transform = array();
/**
* Indexed list of HTMLPurifier_AttrTransform to be performed before validation.
+ * @type HTMLPurifier_AttrTransform[]
*/
public $info_attr_transform_pre = array();
/**
* Indexed list of HTMLPurifier_AttrTransform to be performed after validation.
+ * @type HTMLPurifier_AttrTransform[]
*/
public $info_attr_transform_post = array();
/**
* Nested lookup array of content set name (Block, Inline) to
* element name to whether or not it belongs in that content set.
+ * @type array
*/
public $info_content_sets = array();
/**
* Indexed list of HTMLPurifier_Injector to be used.
+ * @type HTMLPurifier_Injector[]
*/
public $info_injector = array();
/**
* Doctype object
+ * @type HTMLPurifier_Doctype
*/
public $doctype;
@@ -94,12 +105,13 @@ class HTMLPurifier_HTMLDefinition extends HTMLPurifier_Definition
* Adds a custom attribute to a pre-existing element
* @note This is strictly convenience, and does not have a corresponding
* method in HTMLPurifier_HTMLModule
- * @param $element_name String element name to add attribute to
- * @param $attr_name String name of attribute
- * @param $def Attribute definition, can be string or object, see
+ * @param string $element_name Element name to add attribute to
+ * @param string $attr_name Name of attribute
+ * @param mixed $def Attribute definition, can be string or object, see
* HTMLPurifier_AttrTypes for details
*/
- public function addAttribute($element_name, $attr_name, $def) {
+ public function addAttribute($element_name, $attr_name, $def)
+ {
$module = $this->getAnonymousModule();
if (!isset($module->info[$element_name])) {
$element = $module->addBlankElement($element_name);
@@ -111,10 +123,11 @@ class HTMLPurifier_HTMLDefinition extends HTMLPurifier_Definition
/**
* Adds a custom element to your HTML definition
- * @note See HTMLPurifier_HTMLModule::addElement for detailed
+ * @see HTMLPurifier_HTMLModule::addElement() for detailed
* parameter and return value descriptions.
*/
- public function addElement($element_name, $type, $contents, $attr_collections, $attributes = array()) {
+ public function addElement($element_name, $type, $contents, $attr_collections, $attributes = array())
+ {
$module = $this->getAnonymousModule();
// assume that if the user is calling this, the element
// is safe. This may not be a good idea
@@ -125,10 +138,13 @@ class HTMLPurifier_HTMLDefinition extends HTMLPurifier_Definition
/**
* Adds a blank element to your HTML definition, for overriding
* existing behavior
- * @note See HTMLPurifier_HTMLModule::addBlankElement for detailed
+ * @param string $element_name
+ * @return HTMLPurifier_ElementDef
+ * @see HTMLPurifier_HTMLModule::addBlankElement() for detailed
* parameter and return value descriptions.
*/
- public function addBlankElement($element_name) {
+ public function addBlankElement($element_name)
+ {
$module = $this->getAnonymousModule();
$element = $module->addBlankElement($element_name);
return $element;
@@ -138,8 +154,10 @@ class HTMLPurifier_HTMLDefinition extends HTMLPurifier_Definition
* Retrieves a reference to the anonymous module, so you can
* bust out advanced features without having to make your own
* module.
+ * @return HTMLPurifier_HTMLModule
*/
- public function getAnonymousModule() {
+ public function getAnonymousModule()
+ {
if (!$this->_anonModule) {
$this->_anonModule = new HTMLPurifier_HTMLModule();
$this->_anonModule->name = 'Anonymous';
@@ -147,22 +165,33 @@ class HTMLPurifier_HTMLDefinition extends HTMLPurifier_Definition
return $this->_anonModule;
}
- private $_anonModule;
-
+ private $_anonModule = null;
// PUBLIC BUT INTERNAL VARIABLES --------------------------------------
+ /**
+ * @type string
+ */
public $type = 'HTML';
- public $manager; /**< Instance of HTMLPurifier_HTMLModuleManager */
+
+ /**
+ * @type HTMLPurifier_HTMLModuleManager
+ */
+ public $manager;
/**
* Performs low-cost, preliminary initialization.
*/
- public function __construct() {
+ public function __construct()
+ {
$this->manager = new HTMLPurifier_HTMLModuleManager();
}
- protected function doSetup($config) {
+ /**
+ * @param HTMLPurifier_Config $config
+ */
+ protected function doSetup($config)
+ {
$this->processModules($config);
$this->setupConfigStuff($config);
unset($this->manager);
@@ -176,9 +205,10 @@ class HTMLPurifier_HTMLDefinition extends HTMLPurifier_Definition
/**
* Extract out the information from the manager
+ * @param HTMLPurifier_Config $config
*/
- protected function processModules($config) {
-
+ protected function processModules($config)
+ {
if ($this->_anonModule) {
// for user specific changes
// this is late-loaded so we don't have to deal with PHP4
@@ -191,40 +221,53 @@ class HTMLPurifier_HTMLDefinition extends HTMLPurifier_Definition
$this->doctype = $this->manager->doctype;
foreach ($this->manager->modules as $module) {
- foreach($module->info_tag_transform as $k => $v) {
- if ($v === false) unset($this->info_tag_transform[$k]);
- else $this->info_tag_transform[$k] = $v;
+ foreach ($module->info_tag_transform as $k => $v) {
+ if ($v === false) {
+ unset($this->info_tag_transform[$k]);
+ } else {
+ $this->info_tag_transform[$k] = $v;
+ }
}
- foreach($module->info_attr_transform_pre as $k => $v) {
- if ($v === false) unset($this->info_attr_transform_pre[$k]);
- else $this->info_attr_transform_pre[$k] = $v;
+ foreach ($module->info_attr_transform_pre as $k => $v) {
+ if ($v === false) {
+ unset($this->info_attr_transform_pre[$k]);
+ } else {
+ $this->info_attr_transform_pre[$k] = $v;
+ }
}
- foreach($module->info_attr_transform_post as $k => $v) {
- if ($v === false) unset($this->info_attr_transform_post[$k]);
- else $this->info_attr_transform_post[$k] = $v;
+ foreach ($module->info_attr_transform_post as $k => $v) {
+ if ($v === false) {
+ unset($this->info_attr_transform_post[$k]);
+ } else {
+ $this->info_attr_transform_post[$k] = $v;
+ }
}
foreach ($module->info_injector as $k => $v) {
- if ($v === false) unset($this->info_injector[$k]);
- else $this->info_injector[$k] = $v;
+ if ($v === false) {
+ unset($this->info_injector[$k]);
+ } else {
+ $this->info_injector[$k] = $v;
+ }
}
}
-
$this->info = $this->manager->getElements();
$this->info_content_sets = $this->manager->contentSets->lookup;
-
}
/**
* Sets up stuff based on config. We need a better way of doing this.
+ * @param HTMLPurifier_Config $config
*/
- protected function setupConfigStuff($config) {
-
+ protected function setupConfigStuff($config)
+ {
$block_wrapper = $config->get('HTML.BlockWrapper');
if (isset($this->info_content_sets['Block'][$block_wrapper])) {
$this->info_block_wrapper = $block_wrapper;
} else {
- trigger_error('Cannot use non-block element as block wrapper',
- E_USER_ERROR);
+ trigger_error(
+ 'Cannot use non-block element as block wrapper',
+ E_USER_ERROR
+ );
}
$parent = $config->get('HTML.Parent');
@@ -233,14 +276,15 @@ class HTMLPurifier_HTMLDefinition extends HTMLPurifier_Definition
$this->info_parent = $parent;
$this->info_parent_def = $def;
} else {
- trigger_error('Cannot use unrecognized element as parent',
- E_USER_ERROR);
+ trigger_error(
+ 'Cannot use unrecognized element as parent',
+ E_USER_ERROR
+ );
$this->info_parent_def = $this->manager->getElement($this->info_parent, true);
}
// support template text
- $support = "(for information on implementing this, see the ".
- "support forums) ";
+ $support = "(for information on implementing this, see the support forums) ";
// setup allowed elements -----------------------------------------
@@ -256,7 +300,9 @@ class HTMLPurifier_HTMLDefinition extends HTMLPurifier_Definition
if (is_array($allowed_elements)) {
foreach ($this->info as $name => $d) {
- if(!isset($allowed_elements[$name])) unset($this->info[$name]);
+ if (!isset($allowed_elements[$name])) {
+ unset($this->info[$name]);
+ }
unset($allowed_elements[$name]);
}
// emit errors
@@ -270,7 +316,6 @@ class HTMLPurifier_HTMLDefinition extends HTMLPurifier_Definition
$allowed_attributes_mutable = $allowed_attributes; // by copy!
if (is_array($allowed_attributes)) {
-
// This actually doesn't do anything, since we went away from
// global attributes. It's possible that userland code uses
// it, but HTMLModuleManager doesn't!
@@ -285,7 +330,9 @@ class HTMLPurifier_HTMLDefinition extends HTMLPurifier_Definition
unset($allowed_attributes_mutable[$key]);
}
}
- if ($delete) unset($this->info_global_attr[$attr]);
+ if ($delete) {
+ unset($this->info_global_attr[$attr]);
+ }
}
foreach ($this->info as $tag => $info) {
@@ -300,7 +347,16 @@ class HTMLPurifier_HTMLDefinition extends HTMLPurifier_Definition
unset($allowed_attributes_mutable[$key]);
}
}
- if ($delete) unset($this->info[$tag]->attr[$attr]);
+ if ($delete) {
+ if ($this->info[$tag]->attr[$attr]->required) {
+ trigger_error(
+ "Required attribute '$attr' in element '$tag' " .
+ "was not allowed, which means '$tag' will not be allowed either",
+ E_USER_WARNING
+ );
+ }
+ unset($this->info[$tag]->attr[$attr]);
+ }
}
}
// emit errors
@@ -313,23 +369,29 @@ class HTMLPurifier_HTMLDefinition extends HTMLPurifier_Definition
$element = htmlspecialchars($bits[0]);
$attribute = htmlspecialchars($bits[1]);
if (!isset($this->info[$element])) {
- trigger_error("Cannot allow attribute '$attribute' if element '$element' is not allowed/supported $support");
+ trigger_error(
+ "Cannot allow attribute '$attribute' if element " .
+ "'$element' is not allowed/supported $support"
+ );
} else {
- trigger_error("Attribute '$attribute' in element '$element' not supported $support",
- E_USER_WARNING);
+ trigger_error(
+ "Attribute '$attribute' in element '$element' not supported $support",
+ E_USER_WARNING
+ );
}
break;
}
// otherwise fall through
case 1:
$attribute = htmlspecialchars($bits[0]);
- trigger_error("Global attribute '$attribute' is not ".
+ trigger_error(
+ "Global attribute '$attribute' is not ".
"supported in any elements $support",
- E_USER_WARNING);
+ E_USER_WARNING
+ );
break;
}
}
-
}
// setup forbidden elements ---------------------------------------
@@ -343,25 +405,34 @@ class HTMLPurifier_HTMLDefinition extends HTMLPurifier_Definition
continue;
}
foreach ($info->attr as $attr => $x) {
- if (
- isset($forbidden_attributes["$tag@$attr"]) ||
+ if (isset($forbidden_attributes["$tag@$attr"]) ||
isset($forbidden_attributes["*@$attr"]) ||
isset($forbidden_attributes[$attr])
) {
unset($this->info[$tag]->attr[$attr]);
continue;
- } // this segment might get removed eventually
- elseif (isset($forbidden_attributes["$tag.$attr"])) {
+ } elseif (isset($forbidden_attributes["$tag.$attr"])) { // this segment might get removed eventually
// $tag.$attr are not user supplied, so no worries!
- trigger_error("Error with $tag.$attr: tag.attr syntax not supported for HTML.ForbiddenAttributes; use tag@attr instead", E_USER_WARNING);
+ trigger_error(
+ "Error with $tag.$attr: tag.attr syntax not supported for " .
+ "HTML.ForbiddenAttributes; use tag@attr instead",
+ E_USER_WARNING
+ );
}
}
}
foreach ($forbidden_attributes as $key => $v) {
- if (strlen($key) < 2) continue;
- if ($key[0] != '*') continue;
+ if (strlen($key) < 2) {
+ continue;
+ }
+ if ($key[0] != '*') {
+ continue;
+ }
if ($key[1] == '.') {
- trigger_error("Error with $key: *.attr syntax not supported for HTML.ForbiddenAttributes; use attr instead", E_USER_WARNING);
+ trigger_error(
+ "Error with $key: *.attr syntax not supported for HTML.ForbiddenAttributes; use attr instead",
+ E_USER_WARNING
+ );
}
}
@@ -380,12 +451,12 @@ class HTMLPurifier_HTMLDefinition extends HTMLPurifier_Definition
* separate lists for processing. Format is element[attr1|attr2],element2...
* @warning Although it's largely drawn from TinyMCE's implementation,
* it is different, and you'll probably have to modify your lists
- * @param $list String list to parse
- * @param array($allowed_elements, $allowed_attributes)
+ * @param array $list String list to parse
+ * @return array
* @todo Give this its own class, probably static interface
*/
- public function parseTinyMCEAllowedList($list) {
-
+ public function parseTinyMCEAllowedList($list)
+ {
$list = str_replace(array(' ', "\t"), '', $list);
$elements = array();
@@ -393,7 +464,9 @@ class HTMLPurifier_HTMLDefinition extends HTMLPurifier_Definition
$chunks = preg_split('/(,|[\n\r]+)/', $list);
foreach ($chunks as $chunk) {
- if (empty($chunk)) continue;
+ if (empty($chunk)) {
+ continue;
+ }
// remove TinyMCE element control characters
if (!strpos($chunk, '[')) {
$element = $chunk;
@@ -401,20 +474,20 @@ class HTMLPurifier_HTMLDefinition extends HTMLPurifier_Definition
} else {
list($element, $attr) = explode('[', $chunk);
}
- if ($element !== '*') $elements[$element] = true;
- if (!$attr) continue;
+ if ($element !== '*') {
+ $elements[$element] = true;
+ }
+ if (!$attr) {
+ continue;
+ }
$attr = substr($attr, 0, strlen($attr) - 1); // remove trailing ]
$attr = explode('|', $attr);
foreach ($attr as $key) {
$attributes["$element.$key"] = true;
}
}
-
return array($elements, $attributes);
-
}
-
-
}
// vim: et sw=4 sts=4
diff --git a/library/HTMLPurifier/HTMLModule.php b/library/HTMLPurifier/HTMLModule.php
index 072cf6808..bb3a9230b 100644
--- a/library/HTMLPurifier/HTMLModule.php
+++ b/library/HTMLPurifier/HTMLModule.php
@@ -21,13 +21,15 @@ class HTMLPurifier_HTMLModule
// -- Overloadable ----------------------------------------------------
/**
- * Short unique string identifier of the module
+ * Short unique string identifier of the module.
+ * @type string
*/
public $name;
/**
- * Informally, a list of elements this module changes. Not used in
- * any significant way.
+ * Informally, a list of elements this module changes.
+ * Not used in any significant way.
+ * @type array
*/
public $elements = array();
@@ -35,6 +37,7 @@ class HTMLPurifier_HTMLModule
* Associative array of element names to element definitions.
* Some definitions may be incomplete, to be merged in later
* with the full definition.
+ * @type array
*/
public $info = array();
@@ -43,6 +46,7 @@ class HTMLPurifier_HTMLModule
* This is commonly used to, say, add an A element to the Inline
* content set. This corresponds to an internal variable $content_sets
* and NOT info_content_sets member variable of HTMLDefinition.
+ * @type array
*/
public $content_sets = array();
@@ -53,21 +57,25 @@ class HTMLPurifier_HTMLModule
* the style attribute to the Core. Corresponds to HTMLDefinition's
* attr_collections->info, since the object's data is only info,
* with extra behavior associated with it.
+ * @type array
*/
public $attr_collections = array();
/**
- * Associative array of deprecated tag name to HTMLPurifier_TagTransform
+ * Associative array of deprecated tag name to HTMLPurifier_TagTransform.
+ * @type array
*/
public $info_tag_transform = array();
/**
* List of HTMLPurifier_AttrTransform to be performed before validation.
+ * @type array
*/
public $info_attr_transform_pre = array();
/**
* List of HTMLPurifier_AttrTransform to be performed after validation.
+ * @type array
*/
public $info_attr_transform_post = array();
@@ -76,6 +84,7 @@ class HTMLPurifier_HTMLModule
* An injector will only be invoked if all of it's pre-requisites are met;
* if an injector fails setup, there will be no error; it will simply be
* silently disabled.
+ * @type array
*/
public $info_injector = array();
@@ -84,6 +93,7 @@ class HTMLPurifier_HTMLModule
* For optimization reasons: may save a call to a function. Be sure
* to set it if you do implement getChildDef(), otherwise it will have
* no effect!
+ * @type bool
*/
public $defines_child_def = false;
@@ -94,6 +104,7 @@ class HTMLPurifier_HTMLModule
* which is based off of safe HTML, to explicitly say, "This is safe," even
* though there are modules which are "unsafe")
*
+ * @type bool
* @note Previously, safety could be applied at an element level granularity.
* We've removed this ability, so in order to add "unsafe" elements
* or attributes, a dedicated module with this property set to false
@@ -106,51 +117,62 @@ class HTMLPurifier_HTMLModule
* content_model and content_model_type member variables of
* the HTMLPurifier_ElementDef class. There is a similar function
* in HTMLPurifier_HTMLDefinition.
- * @param $def HTMLPurifier_ElementDef instance
+ * @param HTMLPurifier_ElementDef $def
* @return HTMLPurifier_ChildDef subclass
*/
- public function getChildDef($def) {return false;}
+ public function getChildDef($def)
+ {
+ return false;
+ }
// -- Convenience -----------------------------------------------------
/**
* Convenience function that sets up a new element
- * @param $element Name of element to add
- * @param $type What content set should element be registered to?
+ * @param string $element Name of element to add
+ * @param string|bool $type What content set should element be registered to?
* Set as false to skip this step.
- * @param $contents Allowed children in form of:
+ * @param string $contents Allowed children in form of:
* "$content_model_type: $content_model"
- * @param $attr_includes What attribute collections to register to
+ * @param array $attr_includes What attribute collections to register to
* element?
- * @param $attr What unique attributes does the element define?
- * @note See ElementDef for in-depth descriptions of these parameters.
- * @return Created element definition object, so you
+ * @param array $attr What unique attributes does the element define?
+ * @see HTMLPurifier_ElementDef:: for in-depth descriptions of these parameters.
+ * @return HTMLPurifier_ElementDef Created element definition object, so you
* can set advanced parameters
*/
- public function addElement($element, $type, $contents, $attr_includes = array(), $attr = array()) {
+ public function addElement($element, $type, $contents, $attr_includes = array(), $attr = array())
+ {
$this->elements[] = $element;
// parse content_model
list($content_model_type, $content_model) = $this->parseContents($contents);
// merge in attribute inclusions
$this->mergeInAttrIncludes($attr, $attr_includes);
// add element to content sets
- if ($type) $this->addElementToContentSet($element, $type);
+ if ($type) {
+ $this->addElementToContentSet($element, $type);
+ }
// create element
$this->info[$element] = HTMLPurifier_ElementDef::create(
- $content_model, $content_model_type, $attr
+ $content_model,
+ $content_model_type,
+ $attr
);
// literal object $contents means direct child manipulation
- if (!is_string($contents)) $this->info[$element]->child = $contents;
+ if (!is_string($contents)) {
+ $this->info[$element]->child = $contents;
+ }
return $this->info[$element];
}
/**
* Convenience function that creates a totally blank, non-standalone
* element.
- * @param $element Name of element to create
- * @return Created element
+ * @param string $element Name of element to create
+ * @return HTMLPurifier_ElementDef Created element
*/
- public function addBlankElement($element) {
+ public function addBlankElement($element)
+ {
if (!isset($this->info[$element])) {
$this->elements[] = $element;
$this->info[$element] = new HTMLPurifier_ElementDef();
@@ -163,27 +185,35 @@ class HTMLPurifier_HTMLModule
/**
* Convenience function that registers an element to a content set
- * @param Element to register
- * @param Name content set (warning: case sensitive, usually upper-case
+ * @param string $element Element to register
+ * @param string $type Name content set (warning: case sensitive, usually upper-case
* first letter)
*/
- public function addElementToContentSet($element, $type) {
- if (!isset($this->content_sets[$type])) $this->content_sets[$type] = '';
- else $this->content_sets[$type] .= ' | ';
+ public function addElementToContentSet($element, $type)
+ {
+ if (!isset($this->content_sets[$type])) {
+ $this->content_sets[$type] = '';
+ } else {
+ $this->content_sets[$type] .= ' | ';
+ }
$this->content_sets[$type] .= $element;
}
/**
* Convenience function that transforms single-string contents
* into separate content model and content model type
- * @param $contents Allowed children in form of:
+ * @param string $contents Allowed children in form of:
* "$content_model_type: $content_model"
+ * @return array
* @note If contents is an object, an array of two nulls will be
* returned, and the callee needs to take the original $contents
* and use it directly.
*/
- public function parseContents($contents) {
- if (!is_string($contents)) return array(null, null); // defer
+ public function parseContents($contents)
+ {
+ if (!is_string($contents)) {
+ return array(null, null);
+ } // defer
switch ($contents) {
// check for shorthand content model forms
case 'Empty':
@@ -202,13 +232,17 @@ class HTMLPurifier_HTMLModule
/**
* Convenience function that merges a list of attribute includes into
* an attribute array.
- * @param $attr Reference to attr array to modify
- * @param $attr_includes Array of includes / string include to merge in
+ * @param array $attr Reference to attr array to modify
+ * @param array $attr_includes Array of includes / string include to merge in
*/
- public function mergeInAttrIncludes(&$attr, $attr_includes) {
+ public function mergeInAttrIncludes(&$attr, $attr_includes)
+ {
if (!is_array($attr_includes)) {
- if (empty($attr_includes)) $attr_includes = array();
- else $attr_includes = array($attr_includes);
+ if (empty($attr_includes)) {
+ $attr_includes = array();
+ } else {
+ $attr_includes = array($attr_includes);
+ }
}
$attr[0] = $attr_includes;
}
@@ -216,16 +250,21 @@ class HTMLPurifier_HTMLModule
/**
* Convenience function that generates a lookup table with boolean
* true as value.
- * @param $list List of values to turn into a lookup
+ * @param string $list List of values to turn into a lookup
* @note You can also pass an arbitrary number of arguments in
* place of the regular argument
- * @return Lookup array equivalent of list
+ * @return array array equivalent of list
*/
- public function makeLookup($list) {
- if (is_string($list)) $list = func_get_args();
+ public function makeLookup($list)
+ {
+ if (is_string($list)) {
+ $list = func_get_args();
+ }
$ret = array();
foreach ($list as $value) {
- if (is_null($value)) continue;
+ if (is_null($value)) {
+ continue;
+ }
$ret[$value] = true;
}
return $ret;
@@ -235,10 +274,11 @@ class HTMLPurifier_HTMLModule
* Lazy load construction of the module after determining whether
* or not it's needed, and also when a finalized configuration object
* is available.
- * @param $config Instance of HTMLPurifier_Config
+ * @param HTMLPurifier_Config $config
*/
- public function setup($config) {}
-
+ public function setup($config)
+ {
+ }
}
// vim: et sw=4 sts=4
diff --git a/library/HTMLPurifier/HTMLModule/Bdo.php b/library/HTMLPurifier/HTMLModule/Bdo.php
index 3d66f1b4e..1e67c790d 100644
--- a/library/HTMLPurifier/HTMLModule/Bdo.php
+++ b/library/HTMLPurifier/HTMLModule/Bdo.php
@@ -7,25 +7,38 @@
class HTMLPurifier_HTMLModule_Bdo extends HTMLPurifier_HTMLModule
{
+ /**
+ * @type string
+ */
public $name = 'Bdo';
+
+ /**
+ * @type array
+ */
public $attr_collections = array(
'I18N' => array('dir' => false)
);
- public function setup($config) {
+ /**
+ * @param HTMLPurifier_Config $config
+ */
+ public function setup($config)
+ {
$bdo = $this->addElement(
- 'bdo', 'Inline', 'Inline', array('Core', 'Lang'),
+ 'bdo',
+ 'Inline',
+ 'Inline',
+ array('Core', 'Lang'),
array(
'dir' => 'Enum#ltr,rtl', // required
// The Abstract Module specification has the attribute
// inclusions wrong for bdo: bdo allows Lang
)
);
- $bdo->attr_transform_post['required-dir'] = new HTMLPurifier_AttrTransform_BdoDir();
+ $bdo->attr_transform_post[] = new HTMLPurifier_AttrTransform_BdoDir();
$this->attr_collections['I18N']['dir'] = 'Enum#ltr,rtl';
}
-
}
// vim: et sw=4 sts=4
diff --git a/library/HTMLPurifier/HTMLModule/CommonAttributes.php b/library/HTMLPurifier/HTMLModule/CommonAttributes.php
index 7c15da84f..a96ab1bef 100644
--- a/library/HTMLPurifier/HTMLModule/CommonAttributes.php
+++ b/library/HTMLPurifier/HTMLModule/CommonAttributes.php
@@ -2,8 +2,14 @@
class HTMLPurifier_HTMLModule_CommonAttributes extends HTMLPurifier_HTMLModule
{
+ /**
+ * @type string
+ */
public $name = 'CommonAttributes';
+ /**
+ * @type array
+ */
public $attr_collections = array(
'Core' => array(
0 => array('Style'),
@@ -20,7 +26,6 @@ class HTMLPurifier_HTMLModule_CommonAttributes extends HTMLPurifier_HTMLModule
0 => array('Core', 'I18N')
)
);
-
}
// vim: et sw=4 sts=4
diff --git a/library/HTMLPurifier/HTMLModule/Edit.php b/library/HTMLPurifier/HTMLModule/Edit.php
index ff9369055..a9042a357 100644
--- a/library/HTMLPurifier/HTMLModule/Edit.php
+++ b/library/HTMLPurifier/HTMLModule/Edit.php
@@ -7,9 +7,16 @@
class HTMLPurifier_HTMLModule_Edit extends HTMLPurifier_HTMLModule
{
+ /**
+ * @type string
+ */
public $name = 'Edit';
- public function setup($config) {
+ /**
+ * @param HTMLPurifier_Config $config
+ */
+ public function setup($config)
+ {
$contents = 'Chameleon: #PCDATA | Inline ! #PCDATA | Flow';
$attr = array(
'cite' => 'URI',
@@ -26,13 +33,23 @@ class HTMLPurifier_HTMLModule_Edit extends HTMLPurifier_HTMLModule
// Inline context ! Block context (exclamation mark is
// separator, see getChildDef for parsing)
+ /**
+ * @type bool
+ */
public $defines_child_def = true;
- public function getChildDef($def) {
- if ($def->content_model_type != 'chameleon') return false;
+
+ /**
+ * @param HTMLPurifier_ElementDef $def
+ * @return HTMLPurifier_ChildDef_Chameleon
+ */
+ public function getChildDef($def)
+ {
+ if ($def->content_model_type != 'chameleon') {
+ return false;
+ }
$value = explode('!', $def->content_model);
return new HTMLPurifier_ChildDef_Chameleon($value[0], $value[1]);
}
-
}
// vim: et sw=4 sts=4
diff --git a/library/HTMLPurifier/HTMLModule/Forms.php b/library/HTMLPurifier/HTMLModule/Forms.php
index 44c22f6f8..6f7ddbc05 100644
--- a/library/HTMLPurifier/HTMLModule/Forms.php
+++ b/library/HTMLPurifier/HTMLModule/Forms.php
@@ -5,86 +5,142 @@
*/
class HTMLPurifier_HTMLModule_Forms extends HTMLPurifier_HTMLModule
{
+ /**
+ * @type string
+ */
public $name = 'Forms';
+
+ /**
+ * @type bool
+ */
public $safe = false;
+ /**
+ * @type array
+ */
public $content_sets = array(
'Block' => 'Form',
'Inline' => 'Formctrl',
);
- public function setup($config) {
- $form = $this->addElement('form', 'Form',
- 'Required: Heading | List | Block | fieldset', 'Common', array(
- 'accept' => 'ContentTypes',
- 'accept-charset' => 'Charsets',
- 'action*' => 'URI',
- 'method' => 'Enum#get,post',
- // really ContentType, but these two are the only ones used today
- 'enctype' => 'Enum#application/x-www-form-urlencoded,multipart/form-data',
- ));
+ /**
+ * @param HTMLPurifier_Config $config
+ */
+ public function setup($config)
+ {
+ $form = $this->addElement(
+ 'form',
+ 'Form',
+ 'Required: Heading | List | Block | fieldset',
+ 'Common',
+ array(
+ 'accept' => 'ContentTypes',
+ 'accept-charset' => 'Charsets',
+ 'action*' => 'URI',
+ 'method' => 'Enum#get,post',
+ // really ContentType, but these two are the only ones used today
+ 'enctype' => 'Enum#application/x-www-form-urlencoded,multipart/form-data',
+ )
+ );
$form->excludes = array('form' => true);
- $input = $this->addElement('input', 'Formctrl', 'Empty', 'Common', array(
- 'accept' => 'ContentTypes',
- 'accesskey' => 'Character',
- 'alt' => 'Text',
- 'checked' => 'Bool#checked',
- 'disabled' => 'Bool#disabled',
- 'maxlength' => 'Number',
- 'name' => 'CDATA',
- 'readonly' => 'Bool#readonly',
- 'size' => 'Number',
- 'src' => 'URI#embeds',
- 'tabindex' => 'Number',
- 'type' => 'Enum#text,password,checkbox,button,radio,submit,reset,file,hidden,image',
- 'value' => 'CDATA',
- ));
+ $input = $this->addElement(
+ 'input',
+ 'Formctrl',
+ 'Empty',
+ 'Common',
+ array(
+ 'accept' => 'ContentTypes',
+ 'accesskey' => 'Character',
+ 'alt' => 'Text',
+ 'checked' => 'Bool#checked',
+ 'disabled' => 'Bool#disabled',
+ 'maxlength' => 'Number',
+ 'name' => 'CDATA',
+ 'readonly' => 'Bool#readonly',
+ 'size' => 'Number',
+ 'src' => 'URI#embedded',
+ 'tabindex' => 'Number',
+ 'type' => 'Enum#text,password,checkbox,button,radio,submit,reset,file,hidden,image',
+ 'value' => 'CDATA',
+ )
+ );
$input->attr_transform_post[] = new HTMLPurifier_AttrTransform_Input();
- $this->addElement('select', 'Formctrl', 'Required: optgroup | option', 'Common', array(
- 'disabled' => 'Bool#disabled',
- 'multiple' => 'Bool#multiple',
- 'name' => 'CDATA',
- 'size' => 'Number',
- 'tabindex' => 'Number',
- ));
-
- $this->addElement('option', false, 'Optional: #PCDATA', 'Common', array(
- 'disabled' => 'Bool#disabled',
- 'label' => 'Text',
- 'selected' => 'Bool#selected',
- 'value' => 'CDATA',
- ));
+ $this->addElement(
+ 'select',
+ 'Formctrl',
+ 'Required: optgroup | option',
+ 'Common',
+ array(
+ 'disabled' => 'Bool#disabled',
+ 'multiple' => 'Bool#multiple',
+ 'name' => 'CDATA',
+ 'size' => 'Number',
+ 'tabindex' => 'Number',
+ )
+ );
+
+ $this->addElement(
+ 'option',
+ false,
+ 'Optional: #PCDATA',
+ 'Common',
+ array(
+ 'disabled' => 'Bool#disabled',
+ 'label' => 'Text',
+ 'selected' => 'Bool#selected',
+ 'value' => 'CDATA',
+ )
+ );
// It's illegal for there to be more than one selected, but not
// be multiple. Also, no selected means undefined behavior. This might
// be difficult to implement; perhaps an injector, or a context variable.
- $textarea = $this->addElement('textarea', 'Formctrl', 'Optional: #PCDATA', 'Common', array(
- 'accesskey' => 'Character',
- 'cols*' => 'Number',
- 'disabled' => 'Bool#disabled',
- 'name' => 'CDATA',
- 'readonly' => 'Bool#readonly',
- 'rows*' => 'Number',
- 'tabindex' => 'Number',
- ));
+ $textarea = $this->addElement(
+ 'textarea',
+ 'Formctrl',
+ 'Optional: #PCDATA',
+ 'Common',
+ array(
+ 'accesskey' => 'Character',
+ 'cols*' => 'Number',
+ 'disabled' => 'Bool#disabled',
+ 'name' => 'CDATA',
+ 'readonly' => 'Bool#readonly',
+ 'rows*' => 'Number',
+ 'tabindex' => 'Number',
+ )
+ );
$textarea->attr_transform_pre[] = new HTMLPurifier_AttrTransform_Textarea();
- $button = $this->addElement('button', 'Formctrl', 'Optional: #PCDATA | Heading | List | Block | Inline', 'Common', array(
- 'accesskey' => 'Character',
- 'disabled' => 'Bool#disabled',
- 'name' => 'CDATA',
- 'tabindex' => 'Number',
- 'type' => 'Enum#button,submit,reset',
- 'value' => 'CDATA',
- ));
+ $button = $this->addElement(
+ 'button',
+ 'Formctrl',
+ 'Optional: #PCDATA | Heading | List | Block | Inline',
+ 'Common',
+ array(
+ 'accesskey' => 'Character',
+ 'disabled' => 'Bool#disabled',
+ 'name' => 'CDATA',
+ 'tabindex' => 'Number',
+ 'type' => 'Enum#button,submit,reset',
+ 'value' => 'CDATA',
+ )
+ );
// For exclusions, ideally we'd specify content sets, not literal elements
$button->excludes = $this->makeLookup(
- 'form', 'fieldset', // Form
- 'input', 'select', 'textarea', 'label', 'button', // Formctrl
- 'a' // as per HTML 4.01 spec, this is omitted by modularization
+ 'form',
+ 'fieldset', // Form
+ 'input',
+ 'select',
+ 'textarea',
+ 'label',
+ 'button', // Formctrl
+ 'a', // as per HTML 4.01 spec, this is omitted by modularization
+ 'isindex',
+ 'iframe' // legacy items
);
// Extra exclusion: img usemap="" is not permitted within this element.
@@ -94,24 +150,40 @@ class HTMLPurifier_HTMLModule_Forms extends HTMLPurifier_HTMLModule
// This is HIGHLY user-unfriendly; we need a custom child-def for this
$this->addElement('fieldset', 'Form', 'Custom: (#WS?,legend,(Flow|#PCDATA)*)', 'Common');
- $label = $this->addElement('label', 'Formctrl', 'Optional: #PCDATA | Inline', 'Common', array(
- 'accesskey' => 'Character',
- // 'for' => 'IDREF', // IDREF not implemented, cannot allow
- ));
+ $label = $this->addElement(
+ 'label',
+ 'Formctrl',
+ 'Optional: #PCDATA | Inline',
+ 'Common',
+ array(
+ 'accesskey' => 'Character',
+ // 'for' => 'IDREF', // IDREF not implemented, cannot allow
+ )
+ );
$label->excludes = array('label' => true);
- $this->addElement('legend', false, 'Optional: #PCDATA | Inline', 'Common', array(
- 'accesskey' => 'Character',
- ));
-
- $this->addElement('optgroup', false, 'Required: option', 'Common', array(
- 'disabled' => 'Bool#disabled',
- 'label*' => 'Text',
- ));
+ $this->addElement(
+ 'legend',
+ false,
+ 'Optional: #PCDATA | Inline',
+ 'Common',
+ array(
+ 'accesskey' => 'Character',
+ )
+ );
+ $this->addElement(
+ 'optgroup',
+ false,
+ 'Required: option',
+ 'Common',
+ array(
+ 'disabled' => 'Bool#disabled',
+ 'label*' => 'Text',
+ )
+ );
// Don't forget an injector for <isindex>. This one's a little complex
// because it maps to multiple elements.
-
}
}
diff --git a/library/HTMLPurifier/HTMLModule/Hypertext.php b/library/HTMLPurifier/HTMLModule/Hypertext.php
index d7e9bdd27..72d7a31e6 100644
--- a/library/HTMLPurifier/HTMLModule/Hypertext.php
+++ b/library/HTMLPurifier/HTMLModule/Hypertext.php
@@ -6,11 +6,21 @@
class HTMLPurifier_HTMLModule_Hypertext extends HTMLPurifier_HTMLModule
{
+ /**
+ * @type string
+ */
public $name = 'Hypertext';
- public function setup($config) {
+ /**
+ * @param HTMLPurifier_Config $config
+ */
+ public function setup($config)
+ {
$a = $this->addElement(
- 'a', 'Inline', 'Inline', 'Common',
+ 'a',
+ 'Inline',
+ 'Inline',
+ 'Common',
array(
// 'accesskey' => 'Character',
// 'charset' => 'Charset',
@@ -25,7 +35,6 @@ class HTMLPurifier_HTMLModule_Hypertext extends HTMLPurifier_HTMLModule
$a->formatting = true;
$a->excludes = array('a' => true);
}
-
}
// vim: et sw=4 sts=4
diff --git a/library/HTMLPurifier/HTMLModule/Iframe.php b/library/HTMLPurifier/HTMLModule/Iframe.php
new file mode 100644
index 000000000..f7e7c91c0
--- /dev/null
+++ b/library/HTMLPurifier/HTMLModule/Iframe.php
@@ -0,0 +1,51 @@
+<?php
+
+/**
+ * XHTML 1.1 Iframe Module provides inline frames.
+ *
+ * @note This module is not considered safe unless an Iframe
+ * whitelisting mechanism is specified. Currently, the only
+ * such mechanism is %URL.SafeIframeRegexp
+ */
+class HTMLPurifier_HTMLModule_Iframe extends HTMLPurifier_HTMLModule
+{
+
+ /**
+ * @type string
+ */
+ public $name = 'Iframe';
+
+ /**
+ * @type bool
+ */
+ public $safe = false;
+
+ /**
+ * @param HTMLPurifier_Config $config
+ */
+ public function setup($config)
+ {
+ if ($config->get('HTML.SafeIframe')) {
+ $this->safe = true;
+ }
+ $this->addElement(
+ 'iframe',
+ 'Inline',
+ 'Flow',
+ 'Common',
+ array(
+ 'src' => 'URI#embedded',
+ 'width' => 'Length',
+ 'height' => 'Length',
+ 'name' => 'ID',
+ 'scrolling' => 'Enum#yes,no,auto',
+ 'frameborder' => 'Enum#0,1',
+ 'longdesc' => 'URI',
+ 'marginheight' => 'Pixels',
+ 'marginwidth' => 'Pixels',
+ )
+ );
+ }
+}
+
+// vim: et sw=4 sts=4
diff --git a/library/HTMLPurifier/HTMLModule/Image.php b/library/HTMLPurifier/HTMLModule/Image.php
index 948d435bc..0f5fdb3ba 100644
--- a/library/HTMLPurifier/HTMLModule/Image.php
+++ b/library/HTMLPurifier/HTMLModule/Image.php
@@ -8,18 +8,28 @@
class HTMLPurifier_HTMLModule_Image extends HTMLPurifier_HTMLModule
{
+ /**
+ * @type string
+ */
public $name = 'Image';
- public function setup($config) {
+ /**
+ * @param HTMLPurifier_Config $config
+ */
+ public function setup($config)
+ {
$max = $config->get('HTML.MaxImgLength');
$img = $this->addElement(
- 'img', 'Inline', 'Empty', 'Common',
+ 'img',
+ 'Inline',
+ 'Empty',
+ 'Common',
array(
'alt*' => 'Text',
// According to the spec, it's Length, but percents can
// be abused, so we allow only Pixels.
'height' => 'Pixels#' . $max,
- 'width' => 'Pixels#' . $max,
+ 'width' => 'Pixels#' . $max,
'longdesc' => 'URI',
'src*' => new HTMLPurifier_AttrDef_URI(true), // embedded
)
@@ -34,7 +44,6 @@ class HTMLPurifier_HTMLModule_Image extends HTMLPurifier_HTMLModule
$img->attr_transform_post[] =
new HTMLPurifier_AttrTransform_ImgRequired();
}
-
}
// vim: et sw=4 sts=4
diff --git a/library/HTMLPurifier/HTMLModule/Legacy.php b/library/HTMLPurifier/HTMLModule/Legacy.php
index df33927ba..86b529957 100644
--- a/library/HTMLPurifier/HTMLModule/Legacy.php
+++ b/library/HTMLPurifier/HTMLModule/Legacy.php
@@ -18,29 +18,58 @@
class HTMLPurifier_HTMLModule_Legacy extends HTMLPurifier_HTMLModule
{
-
+ /**
+ * @type string
+ */
public $name = 'Legacy';
- public function setup($config) {
-
- $this->addElement('basefont', 'Inline', 'Empty', false, array(
- 'color' => 'Color',
- 'face' => 'Text', // extremely broad, we should
- 'size' => 'Text', // tighten it
- 'id' => 'ID'
- ));
+ /**
+ * @param HTMLPurifier_Config $config
+ */
+ public function setup($config)
+ {
+ $this->addElement(
+ 'basefont',
+ 'Inline',
+ 'Empty',
+ null,
+ array(
+ 'color' => 'Color',
+ 'face' => 'Text', // extremely broad, we should
+ 'size' => 'Text', // tighten it
+ 'id' => 'ID'
+ )
+ );
$this->addElement('center', 'Block', 'Flow', 'Common');
- $this->addElement('dir', 'Block', 'Required: li', 'Common', array(
- 'compact' => 'Bool#compact'
- ));
- $this->addElement('font', 'Inline', 'Inline', array('Core', 'I18N'), array(
- 'color' => 'Color',
- 'face' => 'Text', // extremely broad, we should
- 'size' => 'Text', // tighten it
- ));
- $this->addElement('menu', 'Block', 'Required: li', 'Common', array(
- 'compact' => 'Bool#compact'
- ));
+ $this->addElement(
+ 'dir',
+ 'Block',
+ 'Required: li',
+ 'Common',
+ array(
+ 'compact' => 'Bool#compact'
+ )
+ );
+ $this->addElement(
+ 'font',
+ 'Inline',
+ 'Inline',
+ array('Core', 'I18N'),
+ array(
+ 'color' => 'Color',
+ 'face' => 'Text', // extremely broad, we should
+ 'size' => 'Text', // tighten it
+ )
+ );
+ $this->addElement(
+ 'menu',
+ 'Block',
+ 'Required: li',
+ 'Common',
+ array(
+ 'compact' => 'Bool#compact'
+ )
+ );
$s = $this->addElement('s', 'Inline', 'Inline', 'Common');
$s->formatting = true;
@@ -89,7 +118,7 @@ class HTMLPurifier_HTMLModule_Legacy extends HTMLPurifier_HTMLModule
$hr->attr['width'] = 'Length';
$img = $this->addBlankElement('img');
- $img->attr['align'] = 'Enum#top,middle,bottom,left,right';
+ $img->attr['align'] = 'IAlign';
$img->attr['border'] = 'Pixels';
$img->attr['hspace'] = 'Pixels';
$img->attr['vspace'] = 'Pixels';
@@ -98,7 +127,7 @@ class HTMLPurifier_HTMLModule_Legacy extends HTMLPurifier_HTMLModule
$li = $this->addBlankElement('li');
$li->attr['value'] = new HTMLPurifier_AttrDef_Integer();
- $li->attr['type'] = 'Enum#s:1,i,I,a,A,disc,square,circle';
+ $li->attr['type'] = 'Enum#s:1,i,I,a,A,disc,square,circle';
$ol = $this->addBlankElement('ol');
$ol->attr['compact'] = 'Bool#compact';
@@ -136,8 +165,22 @@ class HTMLPurifier_HTMLModule_Legacy extends HTMLPurifier_HTMLModule
$ul->attr['compact'] = 'Bool#compact';
$ul->attr['type'] = 'Enum#square,disc,circle';
- }
+ // "safe" modifications to "unsafe" elements
+ // WARNING: If you want to add support for an unsafe, legacy
+ // attribute, make a new TrustedLegacy module with the trusted
+ // bit set appropriately
+ $form = $this->addBlankElement('form');
+ $form->content_model = 'Flow | #PCDATA';
+ $form->content_model_type = 'optional';
+ $form->attr['target'] = 'FrameTarget';
+
+ $input = $this->addBlankElement('input');
+ $input->attr['align'] = 'IAlign';
+
+ $legend = $this->addBlankElement('legend');
+ $legend->attr['align'] = 'LAlign';
+ }
}
// vim: et sw=4 sts=4
diff --git a/library/HTMLPurifier/HTMLModule/List.php b/library/HTMLPurifier/HTMLModule/List.php
index 74d4522f4..7a20ff701 100644
--- a/library/HTMLPurifier/HTMLModule/List.php
+++ b/library/HTMLPurifier/HTMLModule/List.php
@@ -5,7 +5,9 @@
*/
class HTMLPurifier_HTMLModule_List extends HTMLPurifier_HTMLModule
{
-
+ /**
+ * @type string
+ */
public $name = 'List';
// According to the abstract schema, the List content set is a fully formed
@@ -17,13 +19,26 @@ class HTMLPurifier_HTMLModule_List extends HTMLPurifier_HTMLModule
// we don't have support for such nested expressions without using
// the incredibly inefficient and draconic Custom ChildDef.
+ /**
+ * @type array
+ */
public $content_sets = array('Flow' => 'List');
- public function setup($config) {
- $ol = $this->addElement('ol', 'List', 'Required: li', 'Common');
- $ol->wrap = "li";
- $ul = $this->addElement('ul', 'List', 'Required: li', 'Common');
- $ul->wrap = "li";
+ /**
+ * @param HTMLPurifier_Config $config
+ */
+ public function setup($config)
+ {
+ $ol = $this->addElement('ol', 'List', new HTMLPurifier_ChildDef_List(), 'Common');
+ $ul = $this->addElement('ul', 'List', new HTMLPurifier_ChildDef_List(), 'Common');
+ // XXX The wrap attribute is handled by MakeWellFormed. This is all
+ // quite unsatisfactory, because we generated this
+ // *specifically* for lists, and now a big chunk of the handling
+ // is done properly by the List ChildDef. So actually, we just
+ // want enough information to make autoclosing work properly,
+ // and then hand off the tricky stuff to the ChildDef.
+ $ol->wrap = 'li';
+ $ul->wrap = 'li';
$this->addElement('dl', 'List', 'Required: dt | dd', 'Common');
$this->addElement('li', false, 'Flow', 'Common');
@@ -31,7 +46,6 @@ class HTMLPurifier_HTMLModule_List extends HTMLPurifier_HTMLModule
$this->addElement('dd', false, 'Flow', 'Common');
$this->addElement('dt', false, 'Inline', 'Common');
}
-
}
// vim: et sw=4 sts=4
diff --git a/library/HTMLPurifier/HTMLModule/Name.php b/library/HTMLPurifier/HTMLModule/Name.php
index 05694b450..60c054515 100644
--- a/library/HTMLPurifier/HTMLModule/Name.php
+++ b/library/HTMLPurifier/HTMLModule/Name.php
@@ -2,20 +2,25 @@
class HTMLPurifier_HTMLModule_Name extends HTMLPurifier_HTMLModule
{
-
+ /**
+ * @type string
+ */
public $name = 'Name';
- public function setup($config) {
+ /**
+ * @param HTMLPurifier_Config $config
+ */
+ public function setup($config)
+ {
$elements = array('a', 'applet', 'form', 'frame', 'iframe', 'img', 'map');
foreach ($elements as $name) {
$element = $this->addBlankElement($name);
$element->attr['name'] = 'CDATA';
if (!$config->get('HTML.Attr.Name.UseCDATA')) {
- $element->attr_transform_post['NameSync'] = new HTMLPurifier_AttrTransform_NameSync();
+ $element->attr_transform_post[] = new HTMLPurifier_AttrTransform_NameSync();
}
}
}
-
}
// vim: et sw=4 sts=4
diff --git a/library/HTMLPurifier/HTMLModule/Nofollow.php b/library/HTMLPurifier/HTMLModule/Nofollow.php
new file mode 100644
index 000000000..dc9410a89
--- /dev/null
+++ b/library/HTMLPurifier/HTMLModule/Nofollow.php
@@ -0,0 +1,25 @@
+<?php
+
+/**
+ * Module adds the nofollow attribute transformation to a tags. It
+ * is enabled by HTML.Nofollow
+ */
+class HTMLPurifier_HTMLModule_Nofollow extends HTMLPurifier_HTMLModule
+{
+
+ /**
+ * @type string
+ */
+ public $name = 'Nofollow';
+
+ /**
+ * @param HTMLPurifier_Config $config
+ */
+ public function setup($config)
+ {
+ $a = $this->addBlankElement('a');
+ $a->attr_transform_post[] = new HTMLPurifier_AttrTransform_Nofollow();
+ }
+}
+
+// vim: et sw=4 sts=4
diff --git a/library/HTMLPurifier/HTMLModule/NonXMLCommonAttributes.php b/library/HTMLPurifier/HTMLModule/NonXMLCommonAttributes.php
index 5f1b14abb..da722253a 100644
--- a/library/HTMLPurifier/HTMLModule/NonXMLCommonAttributes.php
+++ b/library/HTMLPurifier/HTMLModule/NonXMLCommonAttributes.php
@@ -2,8 +2,14 @@
class HTMLPurifier_HTMLModule_NonXMLCommonAttributes extends HTMLPurifier_HTMLModule
{
+ /**
+ * @type string
+ */
public $name = 'NonXMLCommonAttributes';
+ /**
+ * @type array
+ */
public $attr_collections = array(
'Lang' => array(
'lang' => 'LanguageCode',
diff --git a/library/HTMLPurifier/HTMLModule/Object.php b/library/HTMLPurifier/HTMLModule/Object.php
index 193c1011f..2f9efc5c8 100644
--- a/library/HTMLPurifier/HTMLModule/Object.php
+++ b/library/HTMLPurifier/HTMLModule/Object.php
@@ -7,13 +7,26 @@
*/
class HTMLPurifier_HTMLModule_Object extends HTMLPurifier_HTMLModule
{
-
+ /**
+ * @type string
+ */
public $name = 'Object';
- public $safe = false;
- public function setup($config) {
+ /**
+ * @type bool
+ */
+ public $safe = false;
- $this->addElement('object', 'Inline', 'Optional: #PCDATA | Flow | param', 'Common',
+ /**
+ * @param HTMLPurifier_Config $config
+ */
+ public function setup($config)
+ {
+ $this->addElement(
+ 'object',
+ 'Inline',
+ 'Optional: #PCDATA | Flow | param',
+ 'Common',
array(
'archive' => 'URI',
'classid' => 'URI',
@@ -30,18 +43,20 @@ class HTMLPurifier_HTMLModule_Object extends HTMLPurifier_HTMLModule
)
);
- $this->addElement('param', false, 'Empty', false,
+ $this->addElement(
+ 'param',
+ false,
+ 'Empty',
+ null,
array(
'id' => 'ID',
'name*' => 'Text',
'type' => 'Text',
'value' => 'Text',
'valuetype' => 'Enum#data,ref,object'
- )
+ )
);
-
}
-
}
// vim: et sw=4 sts=4
diff --git a/library/HTMLPurifier/HTMLModule/Presentation.php b/library/HTMLPurifier/HTMLModule/Presentation.php
index 8ff0b5ed7..6458ce9d8 100644
--- a/library/HTMLPurifier/HTMLModule/Presentation.php
+++ b/library/HTMLPurifier/HTMLModule/Presentation.php
@@ -13,24 +13,30 @@
class HTMLPurifier_HTMLModule_Presentation extends HTMLPurifier_HTMLModule
{
+ /**
+ * @type string
+ */
public $name = 'Presentation';
- public function setup($config) {
- $this->addElement('hr', 'Block', 'Empty', 'Common');
- $this->addElement('sub', 'Inline', 'Inline', 'Common');
- $this->addElement('sup', 'Inline', 'Inline', 'Common');
- $b = $this->addElement('b', 'Inline', 'Inline', 'Common');
+ /**
+ * @param HTMLPurifier_Config $config
+ */
+ public function setup($config)
+ {
+ $this->addElement('hr', 'Block', 'Empty', 'Common');
+ $this->addElement('sub', 'Inline', 'Inline', 'Common');
+ $this->addElement('sup', 'Inline', 'Inline', 'Common');
+ $b = $this->addElement('b', 'Inline', 'Inline', 'Common');
$b->formatting = true;
- $big = $this->addElement('big', 'Inline', 'Inline', 'Common');
+ $big = $this->addElement('big', 'Inline', 'Inline', 'Common');
$big->formatting = true;
- $i = $this->addElement('i', 'Inline', 'Inline', 'Common');
+ $i = $this->addElement('i', 'Inline', 'Inline', 'Common');
$i->formatting = true;
- $small = $this->addElement('small', 'Inline', 'Inline', 'Common');
+ $small = $this->addElement('small', 'Inline', 'Inline', 'Common');
$small->formatting = true;
- $tt = $this->addElement('tt', 'Inline', 'Inline', 'Common');
+ $tt = $this->addElement('tt', 'Inline', 'Inline', 'Common');
$tt->formatting = true;
}
-
}
// vim: et sw=4 sts=4
diff --git a/library/HTMLPurifier/HTMLModule/Proprietary.php b/library/HTMLPurifier/HTMLModule/Proprietary.php
index dd36a3de0..5ee3c8e67 100644
--- a/library/HTMLPurifier/HTMLModule/Proprietary.php
+++ b/library/HTMLPurifier/HTMLModule/Proprietary.php
@@ -6,12 +6,21 @@
*/
class HTMLPurifier_HTMLModule_Proprietary extends HTMLPurifier_HTMLModule
{
-
+ /**
+ * @type string
+ */
public $name = 'Proprietary';
- public function setup($config) {
-
- $this->addElement('marquee', 'Inline', 'Flow', 'Common',
+ /**
+ * @param HTMLPurifier_Config $config
+ */
+ public function setup($config)
+ {
+ $this->addElement(
+ 'marquee',
+ 'Inline',
+ 'Flow',
+ 'Common',
array(
'direction' => 'Enum#left,right,up,down',
'behavior' => 'Enum#alternate',
@@ -25,9 +34,7 @@ class HTMLPurifier_HTMLModule_Proprietary extends HTMLPurifier_HTMLModule
'vspace' => 'Pixels',
)
);
-
}
-
}
// vim: et sw=4 sts=4
diff --git a/library/HTMLPurifier/HTMLModule/Ruby.php b/library/HTMLPurifier/HTMLModule/Ruby.php
index b26a0a30a..a0d48924d 100644
--- a/library/HTMLPurifier/HTMLModule/Ruby.php
+++ b/library/HTMLPurifier/HTMLModule/Ruby.php
@@ -7,12 +7,22 @@
class HTMLPurifier_HTMLModule_Ruby extends HTMLPurifier_HTMLModule
{
+ /**
+ * @type string
+ */
public $name = 'Ruby';
- public function setup($config) {
- $this->addElement('ruby', 'Inline',
+ /**
+ * @param HTMLPurifier_Config $config
+ */
+ public function setup($config)
+ {
+ $this->addElement(
+ 'ruby',
+ 'Inline',
'Custom: ((rb, (rt | (rp, rt, rp))) | (rbc, rtc, rtc?))',
- 'Common');
+ 'Common'
+ );
$this->addElement('rbc', false, 'Required: rb', 'Common');
$this->addElement('rtc', false, 'Required: rt', 'Common');
$rb = $this->addElement('rb', false, 'Inline', 'Common');
@@ -21,7 +31,6 @@ class HTMLPurifier_HTMLModule_Ruby extends HTMLPurifier_HTMLModule
$rt->excludes = array('ruby' => true);
$this->addElement('rp', false, 'Optional: #PCDATA', 'Common');
}
-
}
// vim: et sw=4 sts=4
diff --git a/library/HTMLPurifier/HTMLModule/SafeEmbed.php b/library/HTMLPurifier/HTMLModule/SafeEmbed.php
index ea256716b..04e6689ea 100644
--- a/library/HTMLPurifier/HTMLModule/SafeEmbed.php
+++ b/library/HTMLPurifier/HTMLModule/SafeEmbed.php
@@ -5,14 +5,22 @@
*/
class HTMLPurifier_HTMLModule_SafeEmbed extends HTMLPurifier_HTMLModule
{
-
+ /**
+ * @type string
+ */
public $name = 'SafeEmbed';
- public function setup($config) {
-
+ /**
+ * @param HTMLPurifier_Config $config
+ */
+ public function setup($config)
+ {
$max = $config->get('HTML.MaxImgLength');
$embed = $this->addElement(
- 'embed', 'Inline', 'Empty', 'Common',
+ 'embed',
+ 'Inline',
+ 'Empty',
+ 'Common',
array(
'src*' => 'URI#embedded',
'type' => 'Enum#application/x-shockwave-flash',
@@ -21,14 +29,12 @@ class HTMLPurifier_HTMLModule_SafeEmbed extends HTMLPurifier_HTMLModule
'allowscriptaccess' => 'Enum#never',
'allownetworking' => 'Enum#internal',
'flashvars' => 'Text',
- 'wmode' => 'Enum#window',
+ 'wmode' => 'Enum#window,transparent,opaque',
'name' => 'ID',
)
);
$embed->attr_transform_post[] = new HTMLPurifier_AttrTransform_SafeEmbed();
-
}
-
}
// vim: et sw=4 sts=4
diff --git a/library/HTMLPurifier/HTMLModule/SafeObject.php b/library/HTMLPurifier/HTMLModule/SafeObject.php
index 64ab8c070..1297f80a3 100644
--- a/library/HTMLPurifier/HTMLModule/SafeObject.php
+++ b/library/HTMLPurifier/HTMLModule/SafeObject.php
@@ -8,11 +8,16 @@
*/
class HTMLPurifier_HTMLModule_SafeObject extends HTMLPurifier_HTMLModule
{
-
+ /**
+ * @type string
+ */
public $name = 'SafeObject';
- public function setup($config) {
-
+ /**
+ * @param HTMLPurifier_Config $config
+ */
+ public function setup($config)
+ {
// These definitions are not intrinsically safe: the attribute transforms
// are a vital part of ensuring safety.
@@ -25,18 +30,24 @@ class HTMLPurifier_HTMLModule_SafeObject extends HTMLPurifier_HTMLModule
array(
// While technically not required by the spec, we're forcing
// it to this value.
- 'type' => 'Enum#application/x-shockwave-flash',
- 'width' => 'Pixels#' . $max,
+ 'type' => 'Enum#application/x-shockwave-flash',
+ 'width' => 'Pixels#' . $max,
'height' => 'Pixels#' . $max,
- 'data' => 'URI#embedded',
- 'classid' => 'Enum#clsid:d27cdb6e-ae6d-11cf-96b8-444553540000',
- 'codebase' => new HTMLPurifier_AttrDef_Enum(array(
- 'http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0')),
+ 'data' => 'URI#embedded',
+ 'codebase' => new HTMLPurifier_AttrDef_Enum(
+ array(
+ 'http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0'
+ )
+ ),
)
);
$object->attr_transform_post[] = new HTMLPurifier_AttrTransform_SafeObject();
- $param = $this->addElement('param', false, 'Empty', false,
+ $param = $this->addElement(
+ 'param',
+ false,
+ 'Empty',
+ false,
array(
'id' => 'ID',
'name*' => 'Text',
@@ -45,9 +56,7 @@ class HTMLPurifier_HTMLModule_SafeObject extends HTMLPurifier_HTMLModule
);
$param->attr_transform_post[] = new HTMLPurifier_AttrTransform_SafeParam();
$this->info_injector[] = 'SafeObject';
-
}
-
}
// vim: et sw=4 sts=4
diff --git a/library/HTMLPurifier/HTMLModule/SafeScripting.php b/library/HTMLPurifier/HTMLModule/SafeScripting.php
new file mode 100644
index 000000000..0330cd97f
--- /dev/null
+++ b/library/HTMLPurifier/HTMLModule/SafeScripting.php
@@ -0,0 +1,40 @@
+<?php
+
+/**
+ * A "safe" script module. No inline JS is allowed, and pointed to JS
+ * files must match whitelist.
+ */
+class HTMLPurifier_HTMLModule_SafeScripting extends HTMLPurifier_HTMLModule
+{
+ /**
+ * @type string
+ */
+ public $name = 'SafeScripting';
+
+ /**
+ * @param HTMLPurifier_Config $config
+ */
+ public function setup($config)
+ {
+ // These definitions are not intrinsically safe: the attribute transforms
+ // are a vital part of ensuring safety.
+
+ $allowed = $config->get('HTML.SafeScripting');
+ $script = $this->addElement(
+ 'script',
+ 'Inline',
+ 'Empty',
+ null,
+ array(
+ // While technically not required by the spec, we're forcing
+ // it to this value.
+ 'type' => 'Enum#text/javascript',
+ 'src*' => new HTMLPurifier_AttrDef_Enum(array_keys($allowed))
+ )
+ );
+ $script->attr_transform_pre[] =
+ $script->attr_transform_post[] = new HTMLPurifier_AttrTransform_ScriptRequired();
+ }
+}
+
+// vim: et sw=4 sts=4
diff --git a/library/HTMLPurifier/HTMLModule/Scripting.php b/library/HTMLPurifier/HTMLModule/Scripting.php
index cecdea6c3..8b28a7b7e 100644
--- a/library/HTMLPurifier/HTMLModule/Scripting.php
+++ b/library/HTMLPurifier/HTMLModule/Scripting.php
@@ -15,12 +15,31 @@ INSIDE HTML PURIFIER DOCUMENTS. USE ONLY WITH TRUSTED USER INPUT!!!
*/
class HTMLPurifier_HTMLModule_Scripting extends HTMLPurifier_HTMLModule
{
+ /**
+ * @type string
+ */
public $name = 'Scripting';
+
+ /**
+ * @type array
+ */
public $elements = array('script', 'noscript');
+
+ /**
+ * @type array
+ */
public $content_sets = array('Block' => 'script | noscript', 'Inline' => 'script | noscript');
+
+ /**
+ * @type bool
+ */
public $safe = false;
- public function setup($config) {
+ /**
+ * @param HTMLPurifier_Config $config
+ */
+ public function setup($config)
+ {
// TODO: create custom child-definition for noscript that
// auto-wraps stray #PCDATA in a similar manner to
// blockquote's custom definition (we would use it but
@@ -33,20 +52,20 @@ class HTMLPurifier_HTMLModule_Scripting extends HTMLPurifier_HTMLModule
// In theory, this could be safe, but I don't see any reason to
// allow it.
$this->info['noscript'] = new HTMLPurifier_ElementDef();
- $this->info['noscript']->attr = array( 0 => array('Common') );
+ $this->info['noscript']->attr = array(0 => array('Common'));
$this->info['noscript']->content_model = 'Heading | List | Block';
$this->info['noscript']->content_model_type = 'required';
$this->info['script'] = new HTMLPurifier_ElementDef();
$this->info['script']->attr = array(
'defer' => new HTMLPurifier_AttrDef_Enum(array('defer')),
- 'src' => new HTMLPurifier_AttrDef_URI(true),
- 'type' => new HTMLPurifier_AttrDef_Enum(array('text/javascript'))
+ 'src' => new HTMLPurifier_AttrDef_URI(true),
+ 'type' => new HTMLPurifier_AttrDef_Enum(array('text/javascript'))
);
$this->info['script']->content_model = '#PCDATA';
$this->info['script']->content_model_type = 'optional';
- $this->info['script']->attr_transform_pre['type'] =
- $this->info['script']->attr_transform_post['type'] =
+ $this->info['script']->attr_transform_pre[] =
+ $this->info['script']->attr_transform_post[] =
new HTMLPurifier_AttrTransform_ScriptRequired();
}
}
diff --git a/library/HTMLPurifier/HTMLModule/StyleAttribute.php b/library/HTMLPurifier/HTMLModule/StyleAttribute.php
index eb78464cc..497b832ae 100644
--- a/library/HTMLPurifier/HTMLModule/StyleAttribute.php
+++ b/library/HTMLPurifier/HTMLModule/StyleAttribute.php
@@ -6,8 +6,14 @@
*/
class HTMLPurifier_HTMLModule_StyleAttribute extends HTMLPurifier_HTMLModule
{
-
+ /**
+ * @type string
+ */
public $name = 'StyleAttribute';
+
+ /**
+ * @type array
+ */
public $attr_collections = array(
// The inclusion routine differs from the Abstract Modules but
// is in line with the DTD and XML Schemas.
@@ -15,10 +21,13 @@ class HTMLPurifier_HTMLModule_StyleAttribute extends HTMLPurifier_HTMLModule
'Core' => array(0 => array('Style'))
);
- public function setup($config) {
+ /**
+ * @param HTMLPurifier_Config $config
+ */
+ public function setup($config)
+ {
$this->attr_collections['Style']['style'] = new HTMLPurifier_AttrDef_CSS();
}
-
}
// vim: et sw=4 sts=4
diff --git a/library/HTMLPurifier/HTMLModule/Tables.php b/library/HTMLPurifier/HTMLModule/Tables.php
index f314ced3f..8a0b3b461 100644
--- a/library/HTMLPurifier/HTMLModule/Tables.php
+++ b/library/HTMLPurifier/HTMLModule/Tables.php
@@ -5,15 +5,23 @@
*/
class HTMLPurifier_HTMLModule_Tables extends HTMLPurifier_HTMLModule
{
-
+ /**
+ * @type string
+ */
public $name = 'Tables';
- public function setup($config) {
-
+ /**
+ * @param HTMLPurifier_Config $config
+ */
+ public function setup($config)
+ {
$this->addElement('caption', false, 'Inline', 'Common');
- $this->addElement('table', 'Block',
- new HTMLPurifier_ChildDef_Table(), 'Common',
+ $this->addElement(
+ 'table',
+ 'Block',
+ new HTMLPurifier_ChildDef_Table(),
+ 'Common',
array(
'border' => 'Pixels',
'cellpadding' => 'Length',
@@ -34,9 +42,12 @@ class HTMLPurifier_HTMLModule_Tables extends HTMLPurifier_HTMLModule
$cell_t = array_merge(
array(
- 'abbr' => 'Text',
+ 'abbr' => 'Text',
'colspan' => 'Number',
'rowspan' => 'Number',
+ // Apparently, as of HTML5 this attribute only applies
+ // to 'th' elements.
+ 'scope' => 'Enum#row,col,rowgroup,colgroup',
),
$cell_align
);
@@ -47,20 +58,18 @@ class HTMLPurifier_HTMLModule_Tables extends HTMLPurifier_HTMLModule
$cell_col = array_merge(
array(
- 'span' => 'Number',
+ 'span' => 'Number',
'width' => 'MultiLength',
),
$cell_align
);
- $this->addElement('col', false, 'Empty', 'Common', $cell_col);
+ $this->addElement('col', false, 'Empty', 'Common', $cell_col);
$this->addElement('colgroup', false, 'Optional: col', 'Common', $cell_col);
$this->addElement('tbody', false, 'Required: tr', 'Common', $cell_align);
$this->addElement('thead', false, 'Required: tr', 'Common', $cell_align);
$this->addElement('tfoot', false, 'Required: tr', 'Common', $cell_align);
-
}
-
}
// vim: et sw=4 sts=4
diff --git a/library/HTMLPurifier/HTMLModule/Target.php b/library/HTMLPurifier/HTMLModule/Target.php
index 2b844ecc4..b188ac936 100644
--- a/library/HTMLPurifier/HTMLModule/Target.php
+++ b/library/HTMLPurifier/HTMLModule/Target.php
@@ -5,10 +5,16 @@
*/
class HTMLPurifier_HTMLModule_Target extends HTMLPurifier_HTMLModule
{
-
+ /**
+ * @type string
+ */
public $name = 'Target';
- public function setup($config) {
+ /**
+ * @param HTMLPurifier_Config $config
+ */
+ public function setup($config)
+ {
$elements = array('a');
foreach ($elements as $name) {
$e = $this->addBlankElement($name);
@@ -17,7 +23,6 @@ class HTMLPurifier_HTMLModule_Target extends HTMLPurifier_HTMLModule
);
}
}
-
}
// vim: et sw=4 sts=4
diff --git a/library/HTMLPurifier/HTMLModule/TargetBlank.php b/library/HTMLPurifier/HTMLModule/TargetBlank.php
new file mode 100644
index 000000000..58ccc6894
--- /dev/null
+++ b/library/HTMLPurifier/HTMLModule/TargetBlank.php
@@ -0,0 +1,24 @@
+<?php
+
+/**
+ * Module adds the target=blank attribute transformation to a tags. It
+ * is enabled by HTML.TargetBlank
+ */
+class HTMLPurifier_HTMLModule_TargetBlank extends HTMLPurifier_HTMLModule
+{
+ /**
+ * @type string
+ */
+ public $name = 'TargetBlank';
+
+ /**
+ * @param HTMLPurifier_Config $config
+ */
+ public function setup($config)
+ {
+ $a = $this->addBlankElement('a');
+ $a->attr_transform_post[] = new HTMLPurifier_AttrTransform_TargetBlank();
+ }
+}
+
+// vim: et sw=4 sts=4
diff --git a/library/HTMLPurifier/HTMLModule/Text.php b/library/HTMLPurifier/HTMLModule/Text.php
index ae77c7188..7a65e0048 100644
--- a/library/HTMLPurifier/HTMLModule/Text.php
+++ b/library/HTMLPurifier/HTMLModule/Text.php
@@ -14,43 +14,59 @@
*/
class HTMLPurifier_HTMLModule_Text extends HTMLPurifier_HTMLModule
{
-
+ /**
+ * @type string
+ */
public $name = 'Text';
+
+ /**
+ * @type array
+ */
public $content_sets = array(
'Flow' => 'Heading | Block | Inline'
);
- public function setup($config) {
-
+ /**
+ * @param HTMLPurifier_Config $config
+ */
+ public function setup($config)
+ {
// Inline Phrasal -------------------------------------------------
- $this->addElement('abbr', 'Inline', 'Inline', 'Common');
+ $this->addElement('abbr', 'Inline', 'Inline', 'Common');
$this->addElement('acronym', 'Inline', 'Inline', 'Common');
- $this->addElement('cite', 'Inline', 'Inline', 'Common');
- $this->addElement('dfn', 'Inline', 'Inline', 'Common');
- $this->addElement('kbd', 'Inline', 'Inline', 'Common');
- $this->addElement('q', 'Inline', 'Inline', 'Common', array('cite' => 'URI'));
- $this->addElement('samp', 'Inline', 'Inline', 'Common');
- $this->addElement('var', 'Inline', 'Inline', 'Common');
+ $this->addElement('cite', 'Inline', 'Inline', 'Common');
+ $this->addElement('dfn', 'Inline', 'Inline', 'Common');
+ $this->addElement('kbd', 'Inline', 'Inline', 'Common');
+ $this->addElement('q', 'Inline', 'Inline', 'Common', array('cite' => 'URI'));
+ $this->addElement('samp', 'Inline', 'Inline', 'Common');
+ $this->addElement('var', 'Inline', 'Inline', 'Common');
- $em = $this->addElement('em', 'Inline', 'Inline', 'Common');
+ $em = $this->addElement('em', 'Inline', 'Inline', 'Common');
$em->formatting = true;
- $strong = $this->addElement('strong', 'Inline', 'Inline', 'Common');
+ $strong = $this->addElement('strong', 'Inline', 'Inline', 'Common');
$strong->formatting = true;
- $code = $this->addElement('code', 'Inline', 'Inline', 'Common');
+ $code = $this->addElement('code', 'Inline', 'Inline', 'Common');
$code->formatting = true;
// Inline Structural ----------------------------------------------
$this->addElement('span', 'Inline', 'Inline', 'Common');
- $this->addElement('br', 'Inline', 'Empty', 'Core');
+ $this->addElement('br', 'Inline', 'Empty', 'Core');
// Block Phrasal --------------------------------------------------
- $this->addElement('address', 'Block', 'Inline', 'Common');
- $this->addElement('blockquote', 'Block', 'Optional: Heading | Block | List', 'Common', array('cite' => 'URI') );
+ $this->addElement('address', 'Block', 'Inline', 'Common');
+ $this->addElement('blockquote', 'Block', 'Optional: Heading | Block | List', 'Common', array('cite' => 'URI'));
$pre = $this->addElement('pre', 'Block', 'Inline', 'Common');
$pre->excludes = $this->makeLookup(
- 'img', 'big', 'small', 'object', 'applet', 'font', 'basefont' );
+ 'img',
+ 'big',
+ 'small',
+ 'object',
+ 'applet',
+ 'font',
+ 'basefont'
+ );
$this->addElement('h1', 'Heading', 'Inline', 'Common');
$this->addElement('h2', 'Heading', 'Inline', 'Common');
$this->addElement('h3', 'Heading', 'Inline', 'Common');
@@ -60,12 +76,12 @@ class HTMLPurifier_HTMLModule_Text extends HTMLPurifier_HTMLModule
// Block Structural -----------------------------------------------
$p = $this->addElement('p', 'Block', 'Inline', 'Common');
- $p->autoclose = array_flip(array("address", "blockquote", "center", "dir", "div", "dl", "fieldset", "ol", "p", "ul"));
+ $p->autoclose = array_flip(
+ array("address", "blockquote", "center", "dir", "div", "dl", "fieldset", "ol", "p", "ul")
+ );
$this->addElement('div', 'Block', 'Flow', 'Common');
-
}
-
}
// vim: et sw=4 sts=4
diff --git a/library/HTMLPurifier/HTMLModule/Tidy.php b/library/HTMLPurifier/HTMLModule/Tidy.php
index 21783f18e..08aa23247 100644
--- a/library/HTMLPurifier/HTMLModule/Tidy.php
+++ b/library/HTMLPurifier/HTMLModule/Tidy.php
@@ -7,36 +7,41 @@
*/
class HTMLPurifier_HTMLModule_Tidy extends HTMLPurifier_HTMLModule
{
-
/**
- * List of supported levels. Index zero is a special case "no fixes"
- * level.
+ * List of supported levels.
+ * Index zero is a special case "no fixes" level.
+ * @type array
*/
public $levels = array(0 => 'none', 'light', 'medium', 'heavy');
/**
- * Default level to place all fixes in. Disabled by default
+ * Default level to place all fixes in.
+ * Disabled by default.
+ * @type string
*/
public $defaultLevel = null;
/**
- * Lists of fixes used by getFixesForLevel(). Format is:
+ * Lists of fixes used by getFixesForLevel().
+ * Format is:
* HTMLModule_Tidy->fixesForLevel[$level] = array('fix-1', 'fix-2');
+ * @type array
*/
public $fixesForLevel = array(
- 'light' => array(),
+ 'light' => array(),
'medium' => array(),
- 'heavy' => array()
+ 'heavy' => array()
);
/**
* Lazy load constructs the module by determining the necessary
* fixes to create and then delegating to the populate() function.
+ * @param HTMLPurifier_Config $config
* @todo Wildcard matching and error reporting when an added or
* subtracted fix has no effect.
*/
- public function setup($config) {
-
+ public function setup($config)
+ {
// create fixes, initialize fixesForLevel
$fixes = $this->makeFixes();
$this->makeFixesForLevel($fixes);
@@ -46,38 +51,38 @@ class HTMLPurifier_HTMLModule_Tidy extends HTMLPurifier_HTMLModule
$fixes_lookup = $this->getFixesForLevel($level);
// get custom fix declarations: these need namespace processing
- $add_fixes = $config->get('HTML.TidyAdd');
+ $add_fixes = $config->get('HTML.TidyAdd');
$remove_fixes = $config->get('HTML.TidyRemove');
foreach ($fixes as $name => $fix) {
// needs to be refactored a little to implement globbing
- if (
- isset($remove_fixes[$name]) ||
- (!isset($add_fixes[$name]) && !isset($fixes_lookup[$name]))
- ) {
+ if (isset($remove_fixes[$name]) ||
+ (!isset($add_fixes[$name]) && !isset($fixes_lookup[$name]))) {
unset($fixes[$name]);
}
}
// populate this module with necessary fixes
$this->populate($fixes);
-
}
/**
* Retrieves all fixes per a level, returning fixes for that specific
* level as well as all levels below it.
- * @param $level String level identifier, see $levels for valid values
- * @return Lookup up table of fixes
+ * @param string $level level identifier, see $levels for valid values
+ * @return array Lookup up table of fixes
*/
- public function getFixesForLevel($level) {
+ public function getFixesForLevel($level)
+ {
if ($level == $this->levels[0]) {
return array();
}
$activated_levels = array();
for ($i = 1, $c = count($this->levels); $i < $c; $i++) {
$activated_levels[] = $this->levels[$i];
- if ($this->levels[$i] == $level) break;
+ if ($this->levels[$i] == $level) {
+ break;
+ }
}
if ($i == $c) {
trigger_error(
@@ -99,9 +104,13 @@ class HTMLPurifier_HTMLModule_Tidy extends HTMLPurifier_HTMLModule
* Dynamically populates the $fixesForLevel member variable using
* the fixes array. It may be custom overloaded, used in conjunction
* with $defaultLevel, or not used at all.
+ * @param array $fixes
*/
- public function makeFixesForLevel($fixes) {
- if (!isset($this->defaultLevel)) return;
+ public function makeFixesForLevel($fixes)
+ {
+ if (!isset($this->defaultLevel)) {
+ return;
+ }
if (!isset($this->fixesForLevel[$this->defaultLevel])) {
trigger_error(
'Default level ' . $this->defaultLevel . ' does not exist',
@@ -115,9 +124,10 @@ class HTMLPurifier_HTMLModule_Tidy extends HTMLPurifier_HTMLModule
/**
* Populates the module with transforms and other special-case code
* based on a list of fixes passed to it
- * @param $lookup Lookup table of fixes to activate
+ * @param array $fixes Lookup table of fixes to activate
*/
- public function populate($fixes) {
+ public function populate($fixes)
+ {
foreach ($fixes as $name => $fix) {
// determine what the fix is for
list($type, $params) = $this->getFixType($name);
@@ -169,20 +179,31 @@ class HTMLPurifier_HTMLModule_Tidy extends HTMLPurifier_HTMLModule
* @note $fix_parameters is type dependant, see populate() for usage
* of these parameters
*/
- public function getFixType($name) {
+ public function getFixType($name)
+ {
// parse it
$property = $attr = null;
- if (strpos($name, '#') !== false) list($name, $property) = explode('#', $name);
- if (strpos($name, '@') !== false) list($name, $attr) = explode('@', $name);
+ if (strpos($name, '#') !== false) {
+ list($name, $property) = explode('#', $name);
+ }
+ if (strpos($name, '@') !== false) {
+ list($name, $attr) = explode('@', $name);
+ }
// figure out the parameters
$params = array();
- if ($name !== '') $params['element'] = $name;
- if (!is_null($attr)) $params['attr'] = $attr;
+ if ($name !== '') {
+ $params['element'] = $name;
+ }
+ if (!is_null($attr)) {
+ $params['attr'] = $attr;
+ }
// special case: attribute transform
if (!is_null($attr)) {
- if (is_null($property)) $property = 'pre';
+ if (is_null($property)) {
+ $property = 'pre';
+ }
$type = 'attr_transform_' . $property;
return array($type, $params);
}
@@ -199,9 +220,11 @@ class HTMLPurifier_HTMLModule_Tidy extends HTMLPurifier_HTMLModule
/**
* Defines all fixes the module will perform in a compact
* associative array of fix name to fix implementation.
+ * @return array
*/
- public function makeFixes() {}
-
+ public function makeFixes()
+ {
+ }
}
// vim: et sw=4 sts=4
diff --git a/library/HTMLPurifier/HTMLModule/Tidy/Name.php b/library/HTMLPurifier/HTMLModule/Tidy/Name.php
index 61ff85ce2..a995161b2 100644
--- a/library/HTMLPurifier/HTMLModule/Tidy/Name.php
+++ b/library/HTMLPurifier/HTMLModule/Tidy/Name.php
@@ -5,18 +5,27 @@
*/
class HTMLPurifier_HTMLModule_Tidy_Name extends HTMLPurifier_HTMLModule_Tidy
{
+ /**
+ * @type string
+ */
public $name = 'Tidy_Name';
+
+ /**
+ * @type string
+ */
public $defaultLevel = 'heavy';
- public function makeFixes() {
+ /**
+ * @return array
+ */
+ public function makeFixes()
+ {
$r = array();
-
// @name for img, a -----------------------------------------------
// Technically, it's allowed even on strict, so we allow authors to use
// it. However, it's deprecated in future versions of XHTML.
$r['img@name'] =
$r['a@name'] = new HTMLPurifier_AttrTransform_Name();
-
return $r;
}
}
diff --git a/library/HTMLPurifier/HTMLModule/Tidy/Proprietary.php b/library/HTMLPurifier/HTMLModule/Tidy/Proprietary.php
index 14c15c4a0..332643821 100644
--- a/library/HTMLPurifier/HTMLModule/Tidy/Proprietary.php
+++ b/library/HTMLPurifier/HTMLModule/Tidy/Proprietary.php
@@ -3,10 +3,21 @@
class HTMLPurifier_HTMLModule_Tidy_Proprietary extends HTMLPurifier_HTMLModule_Tidy
{
+ /**
+ * @type string
+ */
public $name = 'Tidy_Proprietary';
+
+ /**
+ * @type string
+ */
public $defaultLevel = 'light';
- public function makeFixes() {
+ /**
+ * @return array
+ */
+ public function makeFixes()
+ {
$r = array();
$r['table@background'] = new HTMLPurifier_AttrTransform_Background();
$r['td@background'] = new HTMLPurifier_AttrTransform_Background();
@@ -18,7 +29,6 @@ class HTMLPurifier_HTMLModule_Tidy_Proprietary extends HTMLPurifier_HTMLModule_T
$r['table@height'] = new HTMLPurifier_AttrTransform_Length('height');
return $r;
}
-
}
// vim: et sw=4 sts=4
diff --git a/library/HTMLPurifier/HTMLModule/Tidy/Strict.php b/library/HTMLPurifier/HTMLModule/Tidy/Strict.php
index c73dc3c4d..803c44fab 100644
--- a/library/HTMLPurifier/HTMLModule/Tidy/Strict.php
+++ b/library/HTMLPurifier/HTMLModule/Tidy/Strict.php
@@ -2,18 +2,40 @@
class HTMLPurifier_HTMLModule_Tidy_Strict extends HTMLPurifier_HTMLModule_Tidy_XHTMLAndHTML4
{
+ /**
+ * @type string
+ */
public $name = 'Tidy_Strict';
+
+ /**
+ * @type string
+ */
public $defaultLevel = 'light';
- public function makeFixes() {
+ /**
+ * @return array
+ */
+ public function makeFixes()
+ {
$r = parent::makeFixes();
$r['blockquote#content_model_type'] = 'strictblockquote';
return $r;
}
+ /**
+ * @type bool
+ */
public $defines_child_def = true;
- public function getChildDef($def) {
- if ($def->content_model_type != 'strictblockquote') return parent::getChildDef($def);
+
+ /**
+ * @param HTMLPurifier_ElementDef $def
+ * @return HTMLPurifier_ChildDef_StrictBlockquote
+ */
+ public function getChildDef($def)
+ {
+ if ($def->content_model_type != 'strictblockquote') {
+ return parent::getChildDef($def);
+ }
return new HTMLPurifier_ChildDef_StrictBlockquote($def->content_model);
}
}
diff --git a/library/HTMLPurifier/HTMLModule/Tidy/Transitional.php b/library/HTMLPurifier/HTMLModule/Tidy/Transitional.php
index 9960b1dd1..c095ad974 100644
--- a/library/HTMLPurifier/HTMLModule/Tidy/Transitional.php
+++ b/library/HTMLPurifier/HTMLModule/Tidy/Transitional.php
@@ -2,7 +2,14 @@
class HTMLPurifier_HTMLModule_Tidy_Transitional extends HTMLPurifier_HTMLModule_Tidy_XHTMLAndHTML4
{
+ /**
+ * @type string
+ */
public $name = 'Tidy_Transitional';
+
+ /**
+ * @type string
+ */
public $defaultLevel = 'heavy';
}
diff --git a/library/HTMLPurifier/HTMLModule/Tidy/XHTML.php b/library/HTMLPurifier/HTMLModule/Tidy/XHTML.php
index db5a378e5..3ecddc434 100644
--- a/library/HTMLPurifier/HTMLModule/Tidy/XHTML.php
+++ b/library/HTMLPurifier/HTMLModule/Tidy/XHTML.php
@@ -2,16 +2,25 @@
class HTMLPurifier_HTMLModule_Tidy_XHTML extends HTMLPurifier_HTMLModule_Tidy
{
-
+ /**
+ * @type string
+ */
public $name = 'Tidy_XHTML';
+
+ /**
+ * @type string
+ */
public $defaultLevel = 'medium';
- public function makeFixes() {
+ /**
+ * @return array
+ */
+ public function makeFixes()
+ {
$r = array();
$r['@lang'] = new HTMLPurifier_AttrTransform_Lang();
return $r;
}
-
}
// vim: et sw=4 sts=4
diff --git a/library/HTMLPurifier/HTMLModule/Tidy/XHTMLAndHTML4.php b/library/HTMLPurifier/HTMLModule/Tidy/XHTMLAndHTML4.php
index 02e943813..c4f16a4dc 100644
--- a/library/HTMLPurifier/HTMLModule/Tidy/XHTMLAndHTML4.php
+++ b/library/HTMLPurifier/HTMLModule/Tidy/XHTMLAndHTML4.php
@@ -3,69 +3,86 @@
class HTMLPurifier_HTMLModule_Tidy_XHTMLAndHTML4 extends HTMLPurifier_HTMLModule_Tidy
{
- public function makeFixes() {
-
+ /**
+ * @return array
+ */
+ public function makeFixes()
+ {
$r = array();
// == deprecated tag transforms ===================================
- $r['font'] = new HTMLPurifier_TagTransform_Font();
- $r['menu'] = new HTMLPurifier_TagTransform_Simple('ul');
- $r['dir'] = new HTMLPurifier_TagTransform_Simple('ul');
- $r['center'] = new HTMLPurifier_TagTransform_Simple('div', 'text-align:center;');
- $r['u'] = new HTMLPurifier_TagTransform_Simple('span', 'text-decoration:underline;');
- $r['s'] = new HTMLPurifier_TagTransform_Simple('span', 'text-decoration:line-through;');
+ $r['font'] = new HTMLPurifier_TagTransform_Font();
+ $r['menu'] = new HTMLPurifier_TagTransform_Simple('ul');
+ $r['dir'] = new HTMLPurifier_TagTransform_Simple('ul');
+ $r['center'] = new HTMLPurifier_TagTransform_Simple('div', 'text-align:center;');
+ $r['u'] = new HTMLPurifier_TagTransform_Simple('span', 'text-decoration:underline;');
+ $r['s'] = new HTMLPurifier_TagTransform_Simple('span', 'text-decoration:line-through;');
$r['strike'] = new HTMLPurifier_TagTransform_Simple('span', 'text-decoration:line-through;');
// == deprecated attribute transforms =============================
$r['caption@align'] =
- new HTMLPurifier_AttrTransform_EnumToCSS('align', array(
- // we're following IE's behavior, not Firefox's, due
- // to the fact that no one supports caption-side:right,
- // W3C included (with CSS 2.1). This is a slightly
- // unreasonable attribute!
- 'left' => 'text-align:left;',
- 'right' => 'text-align:right;',
- 'top' => 'caption-side:top;',
- 'bottom' => 'caption-side:bottom;' // not supported by IE
- ));
+ new HTMLPurifier_AttrTransform_EnumToCSS(
+ 'align',
+ array(
+ // we're following IE's behavior, not Firefox's, due
+ // to the fact that no one supports caption-side:right,
+ // W3C included (with CSS 2.1). This is a slightly
+ // unreasonable attribute!
+ 'left' => 'text-align:left;',
+ 'right' => 'text-align:right;',
+ 'top' => 'caption-side:top;',
+ 'bottom' => 'caption-side:bottom;' // not supported by IE
+ )
+ );
// @align for img -------------------------------------------------
$r['img@align'] =
- new HTMLPurifier_AttrTransform_EnumToCSS('align', array(
- 'left' => 'float:left;',
- 'right' => 'float:right;',
- 'top' => 'vertical-align:top;',
- 'middle' => 'vertical-align:middle;',
- 'bottom' => 'vertical-align:baseline;',
- ));
+ new HTMLPurifier_AttrTransform_EnumToCSS(
+ 'align',
+ array(
+ 'left' => 'float:left;',
+ 'right' => 'float:right;',
+ 'top' => 'vertical-align:top;',
+ 'middle' => 'vertical-align:middle;',
+ 'bottom' => 'vertical-align:baseline;',
+ )
+ );
// @align for table -----------------------------------------------
$r['table@align'] =
- new HTMLPurifier_AttrTransform_EnumToCSS('align', array(
- 'left' => 'float:left;',
- 'center' => 'margin-left:auto;margin-right:auto;',
- 'right' => 'float:right;'
- ));
+ new HTMLPurifier_AttrTransform_EnumToCSS(
+ 'align',
+ array(
+ 'left' => 'float:left;',
+ 'center' => 'margin-left:auto;margin-right:auto;',
+ 'right' => 'float:right;'
+ )
+ );
// @align for hr -----------------------------------------------
$r['hr@align'] =
- new HTMLPurifier_AttrTransform_EnumToCSS('align', array(
- // we use both text-align and margin because these work
- // for different browsers (IE and Firefox, respectively)
- // and the melange makes for a pretty cross-compatible
- // solution
- 'left' => 'margin-left:0;margin-right:auto;text-align:left;',
- 'center' => 'margin-left:auto;margin-right:auto;text-align:center;',
- 'right' => 'margin-left:auto;margin-right:0;text-align:right;'
- ));
+ new HTMLPurifier_AttrTransform_EnumToCSS(
+ 'align',
+ array(
+ // we use both text-align and margin because these work
+ // for different browsers (IE and Firefox, respectively)
+ // and the melange makes for a pretty cross-compatible
+ // solution
+ 'left' => 'margin-left:0;margin-right:auto;text-align:left;',
+ 'center' => 'margin-left:auto;margin-right:auto;text-align:center;',
+ 'right' => 'margin-left:auto;margin-right:0;text-align:right;'
+ )
+ );
// @align for h1, h2, h3, h4, h5, h6, p, div ----------------------
// {{{
- $align_lookup = array();
- $align_values = array('left', 'right', 'center', 'justify');
- foreach ($align_values as $v) $align_lookup[$v] = "text-align:$v;";
+ $align_lookup = array();
+ $align_values = array('left', 'right', 'center', 'justify');
+ foreach ($align_values as $v) {
+ $align_lookup[$v] = "text-align:$v;";
+ }
// }}}
$r['h1@align'] =
$r['h2@align'] =
@@ -73,7 +90,7 @@ class HTMLPurifier_HTMLModule_Tidy_XHTMLAndHTML4 extends HTMLPurifier_HTMLModule
$r['h4@align'] =
$r['h5@align'] =
$r['h6@align'] =
- $r['p@align'] =
+ $r['p@align'] =
$r['div@align'] =
new HTMLPurifier_AttrTransform_EnumToCSS('align', $align_lookup);
@@ -88,12 +105,15 @@ class HTMLPurifier_HTMLModule_Tidy_XHTMLAndHTML4 extends HTMLPurifier_HTMLModule
// @clear for br --------------------------------------------------
$r['br@clear'] =
- new HTMLPurifier_AttrTransform_EnumToCSS('clear', array(
- 'left' => 'clear:left;',
- 'right' => 'clear:right;',
- 'all' => 'clear:both;',
- 'none' => 'clear:none;',
- ));
+ new HTMLPurifier_AttrTransform_EnumToCSS(
+ 'clear',
+ array(
+ 'left' => 'clear:left;',
+ 'right' => 'clear:right;',
+ 'all' => 'clear:both;',
+ 'none' => 'clear:none;',
+ )
+ );
// @height for td, th ---------------------------------------------
$r['td@height'] =
@@ -125,19 +145,19 @@ class HTMLPurifier_HTMLModule_Tidy_XHTMLAndHTML4 extends HTMLPurifier_HTMLModule
// @type for li, ol, ul -------------------------------------------
// {{{
- $ul_types = array(
- 'disc' => 'list-style-type:disc;',
- 'square' => 'list-style-type:square;',
- 'circle' => 'list-style-type:circle;'
- );
- $ol_types = array(
- '1' => 'list-style-type:decimal;',
- 'i' => 'list-style-type:lower-roman;',
- 'I' => 'list-style-type:upper-roman;',
- 'a' => 'list-style-type:lower-alpha;',
- 'A' => 'list-style-type:upper-alpha;'
- );
- $li_types = $ul_types + $ol_types;
+ $ul_types = array(
+ 'disc' => 'list-style-type:disc;',
+ 'square' => 'list-style-type:square;',
+ 'circle' => 'list-style-type:circle;'
+ );
+ $ol_types = array(
+ '1' => 'list-style-type:decimal;',
+ 'i' => 'list-style-type:lower-roman;',
+ 'I' => 'list-style-type:upper-roman;',
+ 'a' => 'list-style-type:lower-alpha;',
+ 'A' => 'list-style-type:upper-alpha;'
+ );
+ $li_types = $ul_types + $ol_types;
// }}}
$r['ul@type'] = new HTMLPurifier_AttrTransform_EnumToCSS('type', $ul_types);
@@ -153,9 +173,7 @@ class HTMLPurifier_HTMLModule_Tidy_XHTMLAndHTML4 extends HTMLPurifier_HTMLModule
$r['hr@width'] = new HTMLPurifier_AttrTransform_Length('width');
return $r;
-
}
-
}
// vim: et sw=4 sts=4
diff --git a/library/HTMLPurifier/HTMLModule/XMLCommonAttributes.php b/library/HTMLPurifier/HTMLModule/XMLCommonAttributes.php
index 9c0e03198..01dbe9deb 100644
--- a/library/HTMLPurifier/HTMLModule/XMLCommonAttributes.php
+++ b/library/HTMLPurifier/HTMLModule/XMLCommonAttributes.php
@@ -2,8 +2,14 @@
class HTMLPurifier_HTMLModule_XMLCommonAttributes extends HTMLPurifier_HTMLModule
{
+ /**
+ * @type string
+ */
public $name = 'XMLCommonAttributes';
+ /**
+ * @type array
+ */
public $attr_collections = array(
'Lang' => array(
'xml:lang' => 'LanguageCode',
diff --git a/library/HTMLPurifier/HTMLModuleManager.php b/library/HTMLPurifier/HTMLModuleManager.php
index f5c4a1d2c..f3a17cb03 100644
--- a/library/HTMLPurifier/HTMLModuleManager.php
+++ b/library/HTMLPurifier/HTMLModuleManager.php
@@ -4,57 +4,75 @@ class HTMLPurifier_HTMLModuleManager
{
/**
- * Instance of HTMLPurifier_DoctypeRegistry
+ * @type HTMLPurifier_DoctypeRegistry
*/
public $doctypes;
/**
- * Instance of current doctype
+ * Instance of current doctype.
+ * @type string
*/
public $doctype;
/**
- * Instance of HTMLPurifier_AttrTypes
+ * @type HTMLPurifier_AttrTypes
*/
public $attrTypes;
/**
* Active instances of modules for the specified doctype are
* indexed, by name, in this array.
+ * @type HTMLPurifier_HTMLModule[]
*/
public $modules = array();
/**
- * Array of recognized HTMLPurifier_Module instances, indexed by
- * module's class name. This array is usually lazy loaded, but a
+ * Array of recognized HTMLPurifier_HTMLModule instances,
+ * indexed by module's class name. This array is usually lazy loaded, but a
* user can overload a module by pre-emptively registering it.
+ * @type HTMLPurifier_HTMLModule[]
*/
public $registeredModules = array();
/**
- * List of extra modules that were added by the user using addModule().
- * These get unconditionally merged into the current doctype, whatever
+ * List of extra modules that were added by the user
+ * using addModule(). These get unconditionally merged into the current doctype, whatever
* it may be.
+ * @type HTMLPurifier_HTMLModule[]
*/
public $userModules = array();
/**
* Associative array of element name to list of modules that have
* definitions for the element; this array is dynamically filled.
+ * @type array
*/
public $elementLookup = array();
- /** List of prefixes we should use for registering small names */
+ /**
+ * List of prefixes we should use for registering small names.
+ * @type array
+ */
public $prefixes = array('HTMLPurifier_HTMLModule_');
- public $contentSets; /**< Instance of HTMLPurifier_ContentSets */
- public $attrCollections; /**< Instance of HTMLPurifier_AttrCollections */
+ /**
+ * @type HTMLPurifier_ContentSets
+ */
+ public $contentSets;
- /** If set to true, unsafe elements and attributes will be allowed */
- public $trusted = false;
+ /**
+ * @type HTMLPurifier_AttrCollections
+ */
+ public $attrCollections;
- public function __construct() {
+ /**
+ * If set to true, unsafe elements and attributes will be allowed.
+ * @type bool
+ */
+ public $trusted = false;
+ public function __construct()
+ {
// editable internal objects
$this->attrTypes = new HTMLPurifier_AttrTypes();
$this->doctypes = new HTMLPurifier_DoctypeRegistry();
@@ -65,17 +83,18 @@ class HTMLPurifier_HTMLModuleManager
'Presentation', 'Edit', 'Bdo', 'Tables', 'Image',
'StyleAttribute',
// Unsafe:
- 'Scripting', 'Object', 'Forms',
+ 'Scripting', 'Object', 'Forms',
// Sorta legacy, but present in strict:
'Name',
);
- $transitional = array('Legacy', 'Target');
+ $transitional = array('Legacy', 'Target', 'Iframe');
$xml = array('XMLCommonAttributes');
$non_xml = array('NonXMLCommonAttributes');
// setup basic doctypes
$this->doctypes->register(
- 'HTML 4.01 Transitional', false,
+ 'HTML 4.01 Transitional',
+ false,
array_merge($common, $transitional, $non_xml),
array('Tidy_Transitional', 'Tidy_Proprietary'),
array(),
@@ -84,7 +103,8 @@ class HTMLPurifier_HTMLModuleManager
);
$this->doctypes->register(
- 'HTML 4.01 Strict', false,
+ 'HTML 4.01 Strict',
+ false,
array_merge($common, $non_xml),
array('Tidy_Strict', 'Tidy_Proprietary', 'Tidy_Name'),
array(),
@@ -93,7 +113,8 @@ class HTMLPurifier_HTMLModuleManager
);
$this->doctypes->register(
- 'XHTML 1.0 Transitional', true,
+ 'XHTML 1.0 Transitional',
+ true,
array_merge($common, $transitional, $xml, $non_xml),
array('Tidy_Transitional', 'Tidy_XHTML', 'Tidy_Proprietary', 'Tidy_Name'),
array(),
@@ -102,7 +123,8 @@ class HTMLPurifier_HTMLModuleManager
);
$this->doctypes->register(
- 'XHTML 1.0 Strict', true,
+ 'XHTML 1.0 Strict',
+ true,
array_merge($common, $xml, $non_xml),
array('Tidy_Strict', 'Tidy_XHTML', 'Tidy_Strict', 'Tidy_Proprietary', 'Tidy_Name'),
array(),
@@ -111,8 +133,11 @@ class HTMLPurifier_HTMLModuleManager
);
$this->doctypes->register(
- 'XHTML 1.1', true,
- array_merge($common, $xml, array('Ruby')),
+ 'XHTML 1.1',
+ true,
+ // Iframe is a real XHTML 1.1 module, despite being
+ // "transitional"!
+ array_merge($common, $xml, array('Ruby', 'Iframe')),
array('Tidy_Strict', 'Tidy_XHTML', 'Tidy_Proprietary', 'Tidy_Strict', 'Tidy_Name'), // Tidy_XHTML1_1
array(),
'-//W3C//DTD XHTML 1.1//EN',
@@ -142,7 +167,8 @@ class HTMLPurifier_HTMLModuleManager
* your module manually. All modules must have been included
* externally: registerModule will not perform inclusions for you!
*/
- public function registerModule($module, $overload = false) {
+ public function registerModule($module, $overload = false)
+ {
if (is_string($module)) {
// attempt to load the module
$original_module = $module;
@@ -157,8 +183,10 @@ class HTMLPurifier_HTMLModuleManager
if (!$ok) {
$module = $original_module;
if (!class_exists($module)) {
- trigger_error($original_module . ' module does not exist',
- E_USER_ERROR);
+ trigger_error(
+ $original_module . ' module does not exist',
+ E_USER_ERROR
+ );
return;
}
}
@@ -178,9 +206,12 @@ class HTMLPurifier_HTMLModuleManager
* Adds a module to the current doctype by first registering it,
* and then tacking it on to the active doctype
*/
- public function addModule($module) {
+ public function addModule($module)
+ {
$this->registerModule($module);
- if (is_object($module)) $module = $module->name;
+ if (is_object($module)) {
+ $module = $module->name;
+ }
$this->userModules[] = $module;
}
@@ -188,17 +219,18 @@ class HTMLPurifier_HTMLModuleManager
* Adds a class prefix that registerModule() will use to resolve a
* string name to a concrete class
*/
- public function addPrefix($prefix) {
+ public function addPrefix($prefix)
+ {
$this->prefixes[] = $prefix;
}
/**
* Performs processing on modules, after being called you may
* use getElement() and getElements()
- * @param $config Instance of HTMLPurifier_Config
+ * @param HTMLPurifier_Config $config
*/
- public function setup($config) {
-
+ public function setup($config)
+ {
$this->trusted = $config->get('HTML.Trusted');
// generate
@@ -211,24 +243,34 @@ class HTMLPurifier_HTMLModuleManager
if (is_array($lookup)) {
foreach ($modules as $k => $m) {
- if (isset($special_cases[$m])) continue;
- if (!isset($lookup[$m])) unset($modules[$k]);
+ if (isset($special_cases[$m])) {
+ continue;
+ }
+ if (!isset($lookup[$m])) {
+ unset($modules[$k]);
+ }
}
}
- // add proprietary module (this gets special treatment because
- // it is completely removed from doctypes, etc.)
+ // custom modules
if ($config->get('HTML.Proprietary')) {
$modules[] = 'Proprietary';
}
-
- // add SafeObject/Safeembed modules
if ($config->get('HTML.SafeObject')) {
$modules[] = 'SafeObject';
}
if ($config->get('HTML.SafeEmbed')) {
$modules[] = 'SafeEmbed';
}
+ if ($config->get('HTML.SafeScripting') !== array()) {
+ $modules[] = 'SafeScripting';
+ }
+ if ($config->get('HTML.Nofollow')) {
+ $modules[] = 'Nofollow';
+ }
+ if ($config->get('HTML.TargetBlank')) {
+ $modules[] = 'TargetBlank';
+ }
// merge in custom modules
$modules = array_merge($modules, $this->userModules);
@@ -246,7 +288,7 @@ class HTMLPurifier_HTMLModuleManager
// prepare any injectors
foreach ($this->modules as $module) {
$n = array();
- foreach ($module->info_injector as $i => $injector) {
+ foreach ($module->info_injector as $injector) {
if (!is_object($injector)) {
$class = "HTMLPurifier_Injector_$injector";
$injector = new $class;
@@ -285,7 +327,8 @@ class HTMLPurifier_HTMLModuleManager
* Takes a module and adds it to the active module collection,
* registering it if necessary.
*/
- public function processModule($module) {
+ public function processModule($module)
+ {
if (!isset($this->registeredModules[$module]) || is_object($module)) {
$this->registerModule($module);
}
@@ -296,13 +339,17 @@ class HTMLPurifier_HTMLModuleManager
* Retrieves merged element definitions.
* @return Array of HTMLPurifier_ElementDef
*/
- public function getElements() {
-
+ public function getElements()
+ {
$elements = array();
foreach ($this->modules as $module) {
- if (!$this->trusted && !$module->safe) continue;
+ if (!$this->trusted && !$module->safe) {
+ continue;
+ }
foreach ($module->info as $name => $v) {
- if (isset($elements[$name])) continue;
+ if (isset($elements[$name])) {
+ continue;
+ }
$elements[$name] = $this->getElement($name);
}
}
@@ -310,7 +357,9 @@ class HTMLPurifier_HTMLModuleManager
// remove dud elements, this happens when an element that
// appeared to be safe actually wasn't
foreach ($elements as $n => $v) {
- if ($v === false) unset($elements[$n]);
+ if ($v === false) {
+ unset($elements[$n]);
+ }
}
return $elements;
@@ -319,28 +368,29 @@ class HTMLPurifier_HTMLModuleManager
/**
* Retrieves a single merged element definition
- * @param $name Name of element
- * @param $trusted Boolean trusted overriding parameter: set to true
+ * @param string $name Name of element
+ * @param bool $trusted Boolean trusted overriding parameter: set to true
* if you want the full version of an element
- * @return Merged HTMLPurifier_ElementDef
+ * @return HTMLPurifier_ElementDef Merged HTMLPurifier_ElementDef
* @note You may notice that modules are getting iterated over twice (once
* in getElements() and once here). This
* is because
*/
- public function getElement($name, $trusted = null) {
-
+ public function getElement($name, $trusted = null)
+ {
if (!isset($this->elementLookup[$name])) {
return false;
}
// setup global state variables
$def = false;
- if ($trusted === null) $trusted = $this->trusted;
+ if ($trusted === null) {
+ $trusted = $this->trusted;
+ }
// iterate through each module that has registered itself to this
// element
- foreach($this->elementLookup[$name] as $module_name) {
-
+ foreach ($this->elementLookup[$name] as $module_name) {
$module = $this->modules[$module_name];
// refuse to create/merge from a module that is deemed unsafe--
@@ -364,6 +414,13 @@ class HTMLPurifier_HTMLModuleManager
// :TODO:
// non-standalone definitions that don't have a standalone
// to merge into could be deferred to the end
+ // HOWEVER, it is perfectly valid for a non-standalone
+ // definition to lack a standalone definition, even
+ // after all processing: this allows us to safely
+ // specify extra attributes for elements that may not be
+ // enabled all in one place. In particular, this might
+ // be the case for trusted elements. WARNING: care must
+ // be taken that the /extra/ definitions are all safe.
continue;
}
@@ -385,7 +442,9 @@ class HTMLPurifier_HTMLModuleManager
// This can occur if there is a blank definition, but no base to
// mix it in with
- if (!$def) return false;
+ if (!$def) {
+ return false;
+ }
// add information on required attributes
foreach ($def->attr as $attr_name => $attr_def) {
@@ -393,11 +452,8 @@ class HTMLPurifier_HTMLModuleManager
$def->required_attr[] = $attr_name;
}
}
-
return $def;
-
}
-
}
// vim: et sw=4 sts=4
diff --git a/library/HTMLPurifier/IDAccumulator.php b/library/HTMLPurifier/IDAccumulator.php
index 73215295a..65c902c07 100644
--- a/library/HTMLPurifier/IDAccumulator.php
+++ b/library/HTMLPurifier/IDAccumulator.php
@@ -17,11 +17,12 @@ class HTMLPurifier_IDAccumulator
/**
* Builds an IDAccumulator, also initializing the default blacklist
- * @param $config Instance of HTMLPurifier_Config
- * @param $context Instance of HTMLPurifier_Context
- * @return Fully initialized HTMLPurifier_IDAccumulator
+ * @param HTMLPurifier_Config $config Instance of HTMLPurifier_Config
+ * @param HTMLPurifier_Context $context Instance of HTMLPurifier_Context
+ * @return HTMLPurifier_IDAccumulator Fully initialized HTMLPurifier_IDAccumulator
*/
- public static function build($config, $context) {
+ public static function build($config, $context)
+ {
$id_accumulator = new HTMLPurifier_IDAccumulator();
$id_accumulator->load($config->get('Attr.IDBlacklist'));
return $id_accumulator;
@@ -29,11 +30,14 @@ class HTMLPurifier_IDAccumulator
/**
* Add an ID to the lookup table.
- * @param $id ID to be added.
- * @return Bool status, true if success, false if there's a dupe
+ * @param string $id ID to be added.
+ * @return bool status, true if success, false if there's a dupe
*/
- public function add($id) {
- if (isset($this->ids[$id])) return false;
+ public function add($id)
+ {
+ if (isset($this->ids[$id])) {
+ return false;
+ }
return $this->ids[$id] = true;
}
@@ -42,12 +46,12 @@ class HTMLPurifier_IDAccumulator
* @param $array_of_ids Array of IDs to load
* @note This function doesn't care about duplicates
*/
- public function load($array_of_ids) {
+ public function load($array_of_ids)
+ {
foreach ($array_of_ids as $id) {
$this->ids[$id] = true;
}
}
-
}
// vim: et sw=4 sts=4
diff --git a/library/HTMLPurifier/Injector.php b/library/HTMLPurifier/Injector.php
index 5922f8130..5060eef9e 100644
--- a/library/HTMLPurifier/Injector.php
+++ b/library/HTMLPurifier/Injector.php
@@ -17,64 +17,71 @@ abstract class HTMLPurifier_Injector
{
/**
- * Advisory name of injector, this is for friendly error messages
+ * Advisory name of injector, this is for friendly error messages.
+ * @type string
*/
public $name;
/**
- * Instance of HTMLPurifier_HTMLDefinition
+ * @type HTMLPurifier_HTMLDefinition
*/
protected $htmlDefinition;
/**
* Reference to CurrentNesting variable in Context. This is an array
* list of tokens that we are currently "inside"
+ * @type array
*/
protected $currentNesting;
/**
- * Reference to InputTokens variable in Context. This is an array
- * list of the input tokens that are being processed.
+ * Reference to current token.
+ * @type HTMLPurifier_Token
*/
- protected $inputTokens;
+ protected $currentToken;
/**
- * Reference to InputIndex variable in Context. This is an integer
- * array index for $this->inputTokens that indicates what token
- * is currently being processed.
+ * Reference to InputZipper variable in Context.
+ * @type HTMLPurifier_Zipper
*/
- protected $inputIndex;
+ protected $inputZipper;
/**
* Array of elements and attributes this injector creates and therefore
* need to be allowed by the definition. Takes form of
* array('element' => array('attr', 'attr2'), 'element2')
+ * @type array
*/
public $needed = array();
/**
- * Index of inputTokens to rewind to.
+ * Number of elements to rewind backwards (relative).
+ * @type bool|int
*/
- protected $rewind = false;
+ protected $rewindOffset = false;
/**
* Rewind to a spot to re-perform processing. This is useful if you
* deleted a node, and now need to see if this change affected any
* earlier nodes. Rewinding does not affect other injectors, and can
* result in infinite loops if not used carefully.
+ * @param bool|int $offset
* @warning HTML Purifier will prevent you from fast-forwarding with this
* function.
*/
- public function rewind($index) {
- $this->rewind = $index;
+ public function rewindOffset($offset)
+ {
+ $this->rewindOffset = $offset;
}
/**
- * Retrieves rewind, and then unsets it.
+ * Retrieves rewind offset, and then unsets it.
+ * @return bool|int
*/
- public function getRewind() {
- $r = $this->rewind;
- $this->rewind = false;
+ public function getRewindOffset()
+ {
+ $r = $this->rewindOffset;
+ $this->rewindOffset = false;
return $r;
}
@@ -83,20 +90,23 @@ abstract class HTMLPurifier_Injector
* this allows references to important variables to be made within
* the injector. This function also checks if the HTML environment
* will work with the Injector (see checkNeeded()).
- * @param $config Instance of HTMLPurifier_Config
- * @param $context Instance of HTMLPurifier_Context
- * @return Boolean false if success, string of missing needed element/attribute if failure
+ * @param HTMLPurifier_Config $config
+ * @param HTMLPurifier_Context $context
+ * @return bool|string Boolean false if success, string of missing needed element/attribute if failure
*/
- public function prepare($config, $context) {
+ public function prepare($config, $context)
+ {
$this->htmlDefinition = $config->getHTMLDefinition();
// Even though this might fail, some unit tests ignore this and
// still test checkNeeded, so be careful. Maybe get rid of that
// dependency.
$result = $this->checkNeeded($config);
- if ($result !== false) return $result;
+ if ($result !== false) {
+ return $result;
+ }
$this->currentNesting =& $context->get('CurrentNesting');
- $this->inputTokens =& $context->get('InputTokens');
- $this->inputIndex =& $context->get('InputIndex');
+ $this->currentToken =& $context->get('CurrentToken');
+ $this->inputZipper =& $context->get('InputZipper');
return false;
}
@@ -104,18 +114,26 @@ abstract class HTMLPurifier_Injector
* This function checks if the HTML environment
* will work with the Injector: if p tags are not allowed, the
* Auto-Paragraphing injector should not be enabled.
- * @param $config Instance of HTMLPurifier_Config
- * @param $context Instance of HTMLPurifier_Context
- * @return Boolean false if success, string of missing needed element/attribute if failure
+ * @param HTMLPurifier_Config $config
+ * @return bool|string Boolean false if success, string of missing needed element/attribute if failure
*/
- public function checkNeeded($config) {
+ public function checkNeeded($config)
+ {
$def = $config->getHTMLDefinition();
foreach ($this->needed as $element => $attributes) {
- if (is_int($element)) $element = $attributes;
- if (!isset($def->info[$element])) return $element;
- if (!is_array($attributes)) continue;
+ if (is_int($element)) {
+ $element = $attributes;
+ }
+ if (!isset($def->info[$element])) {
+ return $element;
+ }
+ if (!is_array($attributes)) {
+ continue;
+ }
foreach ($attributes as $name) {
- if (!isset($def->info[$element]->attr[$name])) return "$element.$name";
+ if (!isset($def->info[$element]->attr[$name])) {
+ return "$element.$name";
+ }
}
}
return false;
@@ -123,10 +141,11 @@ abstract class HTMLPurifier_Injector
/**
* Tests if the context node allows a certain element
- * @param $name Name of element to test for
- * @return True if element is allowed, false if it is not
+ * @param string $name Name of element to test for
+ * @return bool True if element is allowed, false if it is not
*/
- public function allowsElement($name) {
+ public function allowsElement($name)
+ {
if (!empty($this->currentNesting)) {
$parent_token = array_pop($this->currentNesting);
$this->currentNesting[] = $parent_token;
@@ -141,7 +160,9 @@ abstract class HTMLPurifier_Injector
for ($i = count($this->currentNesting) - 2; $i >= 0; $i--) {
$node = $this->currentNesting[$i];
$def = $this->htmlDefinition->info[$node->name];
- if (isset($def->excludes[$name])) return false;
+ if (isset($def->excludes[$name])) {
+ return false;
+ }
}
return true;
}
@@ -151,14 +172,22 @@ abstract class HTMLPurifier_Injector
* you reach the end of the input tokens.
* @warning Please prevent previous references from interfering with this
* functions by setting $i = null beforehand!
- * @param &$i Current integer index variable for inputTokens
- * @param &$current Current token variable. Do NOT use $token, as that variable is also a reference
- */
- protected function forward(&$i, &$current) {
- if ($i === null) $i = $this->inputIndex + 1;
- else $i++;
- if (!isset($this->inputTokens[$i])) return false;
- $current = $this->inputTokens[$i];
+ * @param int $i Current integer index variable for inputTokens
+ * @param HTMLPurifier_Token $current Current token variable.
+ * Do NOT use $token, as that variable is also a reference
+ * @return bool
+ */
+ protected function forward(&$i, &$current)
+ {
+ if ($i === null) {
+ $i = count($this->inputZipper->back) - 1;
+ } else {
+ $i--;
+ }
+ if ($i < 0) {
+ return false;
+ }
+ $current = $this->inputZipper->back[$i];
return true;
}
@@ -166,14 +195,27 @@ abstract class HTMLPurifier_Injector
* Similar to _forward, but accepts a third parameter $nesting (which
* should be initialized at 0) and stops when we hit the end tag
* for the node $this->inputIndex starts in.
+ * @param int $i Current integer index variable for inputTokens
+ * @param HTMLPurifier_Token $current Current token variable.
+ * Do NOT use $token, as that variable is also a reference
+ * @param int $nesting
+ * @return bool
*/
- protected function forwardUntilEndToken(&$i, &$current, &$nesting) {
+ protected function forwardUntilEndToken(&$i, &$current, &$nesting)
+ {
$result = $this->forward($i, $current);
- if (!$result) return false;
- if ($nesting === null) $nesting = 0;
- if ($current instanceof HTMLPurifier_Token_Start) $nesting++;
- elseif ($current instanceof HTMLPurifier_Token_End) {
- if ($nesting <= 0) return false;
+ if (!$result) {
+ return false;
+ }
+ if ($nesting === null) {
+ $nesting = 0;
+ }
+ if ($current instanceof HTMLPurifier_Token_Start) {
+ $nesting++;
+ } elseif ($current instanceof HTMLPurifier_Token_End) {
+ if ($nesting <= 0) {
+ return false;
+ }
$nesting--;
}
return true;
@@ -184,56 +226,56 @@ abstract class HTMLPurifier_Injector
* you reach the beginning of input tokens.
* @warning Please prevent previous references from interfering with this
* functions by setting $i = null beforehand!
- * @param &$i Current integer index variable for inputTokens
- * @param &$current Current token variable. Do NOT use $token, as that variable is also a reference
- */
- protected function backward(&$i, &$current) {
- if ($i === null) $i = $this->inputIndex - 1;
- else $i--;
- if ($i < 0) return false;
- $current = $this->inputTokens[$i];
- return true;
- }
-
- /**
- * Initializes the iterator at the current position. Use in a do {} while;
- * loop to force the _forward and _backward functions to start at the
- * current location.
- * @warning Please prevent previous references from interfering with this
- * functions by setting $i = null beforehand!
- * @param &$i Current integer index variable for inputTokens
- * @param &$current Current token variable. Do NOT use $token, as that variable is also a reference
+ * @param int $i Current integer index variable for inputTokens
+ * @param HTMLPurifier_Token $current Current token variable.
+ * Do NOT use $token, as that variable is also a reference
+ * @return bool
*/
- protected function current(&$i, &$current) {
- if ($i === null) $i = $this->inputIndex;
- $current = $this->inputTokens[$i];
+ protected function backward(&$i, &$current)
+ {
+ if ($i === null) {
+ $i = count($this->inputZipper->front) - 1;
+ } else {
+ $i--;
+ }
+ if ($i < 0) {
+ return false;
+ }
+ $current = $this->inputZipper->front[$i];
+ return true;
}
/**
* Handler that is called when a text token is processed
*/
- public function handleText(&$token) {}
+ public function handleText(&$token)
+ {
+ }
/**
* Handler that is called when a start or empty token is processed
*/
- public function handleElement(&$token) {}
+ public function handleElement(&$token)
+ {
+ }
/**
* Handler that is called when an end token is processed
*/
- public function handleEnd(&$token) {
+ public function handleEnd(&$token)
+ {
$this->notifyEnd($token);
}
/**
* Notifier that is called when an end token is processed
+ * @param HTMLPurifier_Token $token Current token variable.
* @note This differs from handlers in that the token is read-only
* @deprecated
*/
- public function notifyEnd($token) {}
-
-
+ public function notifyEnd($token)
+ {
+ }
}
// vim: et sw=4 sts=4
diff --git a/library/HTMLPurifier/Injector/AutoParagraph.php b/library/HTMLPurifier/Injector/AutoParagraph.php
index afa760892..4afdd128d 100644
--- a/library/HTMLPurifier/Injector/AutoParagraph.php
+++ b/library/HTMLPurifier/Injector/AutoParagraph.php
@@ -8,17 +8,31 @@
*/
class HTMLPurifier_Injector_AutoParagraph extends HTMLPurifier_Injector
{
-
+ /**
+ * @type string
+ */
public $name = 'AutoParagraph';
+
+ /**
+ * @type array
+ */
public $needed = array('p');
- private function _pStart() {
+ /**
+ * @return HTMLPurifier_Token_Start
+ */
+ private function _pStart()
+ {
$par = new HTMLPurifier_Token_Start('p');
$par->armor['MakeWellFormed_TagClosedError'] = true;
return $par;
}
- public function handleText(&$token) {
+ /**
+ * @param HTMLPurifier_Token_Text $token
+ */
+ public function handleText(&$token)
+ {
$text = $token->data;
// Does the current parent allow <p> tags?
if ($this->allowsElement('p')) {
@@ -72,11 +86,9 @@ class HTMLPurifier_Injector_AutoParagraph extends HTMLPurifier_Injector
// ----
}
}
- // Is the current parent a <p> tag?
- } elseif (
- !empty($this->currentNesting) &&
- $this->currentNesting[count($this->currentNesting)-1]->name == 'p'
- ) {
+ // Is the current parent a <p> tag?
+ } elseif (!empty($this->currentNesting) &&
+ $this->currentNesting[count($this->currentNesting) - 1]->name == 'p') {
// State 3.1: ...<p>PAR1
// ----
@@ -84,7 +96,7 @@ class HTMLPurifier_Injector_AutoParagraph extends HTMLPurifier_Injector
// ------------
$token = array();
$this->_splitText($text, $token);
- // Abort!
+ // Abort!
} else {
// State 4.1: ...<b>PAR1
// ----
@@ -94,7 +106,11 @@ class HTMLPurifier_Injector_AutoParagraph extends HTMLPurifier_Injector
}
}
- public function handleElement(&$token) {
+ /**
+ * @param HTMLPurifier_Token $token
+ */
+ public function handleElement(&$token)
+ {
// We don't have to check if we're already in a <p> tag for block
// tokens, because the tag would have been autoclosed by MakeWellFormed.
if ($this->allowsElement('p')) {
@@ -102,7 +118,6 @@ class HTMLPurifier_Injector_AutoParagraph extends HTMLPurifier_Injector
if ($this->_isInline($token)) {
// State 1: <div>...<b>
// ---
-
// Check if this token is adjacent to the parent token
// (seek backwards until token isn't whitespace)
$i = null;
@@ -110,31 +125,24 @@ class HTMLPurifier_Injector_AutoParagraph extends HTMLPurifier_Injector
if (!$prev instanceof HTMLPurifier_Token_Start) {
// Token wasn't adjacent
-
- if (
- $prev instanceof HTMLPurifier_Token_Text &&
+ if ($prev instanceof HTMLPurifier_Token_Text &&
substr($prev->data, -2) === "\n\n"
) {
// State 1.1.4: <div><p>PAR1</p>\n\n<b>
// ---
-
// Quite frankly, this should be handled by splitText
$token = array($this->_pStart(), $token);
} else {
// State 1.1.1: <div><p>PAR1</p><b>
// ---
-
// State 1.1.2: <div><br /><b>
// ---
-
// State 1.1.3: <div>PAR<b>
// ---
}
-
} else {
// State 1.2.1: <div><b>
// ---
-
// Lookahead to see if <p> is needed.
if ($this->_pLookAhead()) {
// State 1.3.1: <div><b>PAR1\n\nPAR2
@@ -166,24 +174,20 @@ class HTMLPurifier_Injector_AutoParagraph extends HTMLPurifier_Injector
$i = null;
if ($this->backward($i, $prev)) {
- if (
- !$prev instanceof HTMLPurifier_Token_Text
- ) {
+ if (!$prev instanceof HTMLPurifier_Token_Text) {
// State 3.1.1: ...</p>{p}<b>
// ---
-
// State 3.2.1: ...</p><div>
// -----
-
- if (!is_array($token)) $token = array($token);
+ if (!is_array($token)) {
+ $token = array($token);
+ }
array_unshift($token, new HTMLPurifier_Token_Text("\n\n"));
} else {
// State 3.1.2: ...</p>\n\n{p}<b>
// ---
-
// State 3.2.2: ...</p>\n\n<div>
// -----
-
// Note: PAR<ELEM> cannot occur because PAR would have been
// wrapped in <p> tags.
}
@@ -192,7 +196,6 @@ class HTMLPurifier_Injector_AutoParagraph extends HTMLPurifier_Injector
} else {
// State 2.2: <ul><li>
// ----
-
// State 2.4: <p><b>
// ---
}
@@ -201,18 +204,17 @@ class HTMLPurifier_Injector_AutoParagraph extends HTMLPurifier_Injector
/**
* Splits up a text in paragraph tokens and appends them
* to the result stream that will replace the original
- * @param $data String text data that will be processed
+ * @param string $data String text data that will be processed
* into paragraphs
- * @param $result Reference to array of tokens that the
+ * @param HTMLPurifier_Token[] $result Reference to array of tokens that the
* tags will be appended onto
- * @param $config Instance of HTMLPurifier_Config
- * @param $context Instance of HTMLPurifier_Context
*/
- private function _splitText($data, &$result) {
+ private function _splitText($data, &$result)
+ {
$raw_paragraphs = explode("\n\n", $data);
- $paragraphs = array(); // without empty paragraphs
+ $paragraphs = array(); // without empty paragraphs
$needs_start = false;
- $needs_end = false;
+ $needs_end = false;
$c = count($raw_paragraphs);
if ($c == 1) {
@@ -285,26 +287,33 @@ class HTMLPurifier_Injector_AutoParagraph extends HTMLPurifier_Injector
array_pop($result); // removes \n\n
array_pop($result); // removes </p>
}
-
}
/**
* Returns true if passed token is inline (and, ergo, allowed in
* paragraph tags)
+ * @param HTMLPurifier_Token $token
+ * @return bool
*/
- private function _isInline($token) {
+ private function _isInline($token)
+ {
return isset($this->htmlDefinition->info['p']->child->elements[$token->name]);
}
/**
* Looks ahead in the token list and determines whether or not we need
* to insert a <p> tag.
+ * @return bool
*/
- private function _pLookAhead() {
- $this->current($i, $current);
- if ($current instanceof HTMLPurifier_Token_Start) $nesting = 1;
- else $nesting = 0;
+ private function _pLookAhead()
+ {
+ if ($this->currentToken instanceof HTMLPurifier_Token_Start) {
+ $nesting = 1;
+ } else {
+ $nesting = 0;
+ }
$ok = false;
+ $i = null;
while ($this->forwardUntilEndToken($i, $current, $nesting)) {
$result = $this->_checkNeedsP($current);
if ($result !== null) {
@@ -318,9 +327,12 @@ class HTMLPurifier_Injector_AutoParagraph extends HTMLPurifier_Injector
/**
* Determines if a particular token requires an earlier inline token
* to get a paragraph. This should be used with _forwardUntilEndToken
+ * @param HTMLPurifier_Token $current
+ * @return bool
*/
- private function _checkNeedsP($current) {
- if ($current instanceof HTMLPurifier_Token_Start){
+ private function _checkNeedsP($current)
+ {
+ if ($current instanceof HTMLPurifier_Token_Start) {
if (!$this->_isInline($current)) {
// <div>PAR1<div>
// ----
@@ -339,7 +351,6 @@ class HTMLPurifier_Injector_AutoParagraph extends HTMLPurifier_Injector
}
return null;
}
-
}
// vim: et sw=4 sts=4
diff --git a/library/HTMLPurifier/Injector/DisplayLinkURI.php b/library/HTMLPurifier/Injector/DisplayLinkURI.php
index 9dce9bd08..c19b1bc27 100644
--- a/library/HTMLPurifier/Injector/DisplayLinkURI.php
+++ b/library/HTMLPurifier/Injector/DisplayLinkURI.php
@@ -5,15 +5,29 @@
*/
class HTMLPurifier_Injector_DisplayLinkURI extends HTMLPurifier_Injector
{
-
+ /**
+ * @type string
+ */
public $name = 'DisplayLinkURI';
+
+ /**
+ * @type array
+ */
public $needed = array('a');
- public function handleElement(&$token) {
+ /**
+ * @param $token
+ */
+ public function handleElement(&$token)
+ {
}
- public function handleEnd(&$token) {
- if (isset($token->start->attr['href'])){
+ /**
+ * @param HTMLPurifier_Token $token
+ */
+ public function handleEnd(&$token)
+ {
+ if (isset($token->start->attr['href'])) {
$url = $token->start->attr['href'];
unset($token->start->attr['href']);
$token = array($token, new HTMLPurifier_Token_Text(" ($url)"));
diff --git a/library/HTMLPurifier/Injector/Linkify.php b/library/HTMLPurifier/Injector/Linkify.php
index 296dac282..069708c25 100644
--- a/library/HTMLPurifier/Injector/Linkify.php
+++ b/library/HTMLPurifier/Injector/Linkify.php
@@ -5,12 +5,24 @@
*/
class HTMLPurifier_Injector_Linkify extends HTMLPurifier_Injector
{
-
+ /**
+ * @type string
+ */
public $name = 'Linkify';
+
+ /**
+ * @type array
+ */
public $needed = array('a' => array('href'));
- public function handleText(&$token) {
- if (!$this->allowsElement('a')) return;
+ /**
+ * @param HTMLPurifier_Token $token
+ */
+ public function handleText(&$token)
+ {
+ if (!$this->allowsElement('a')) {
+ return;
+ }
if (strpos($token->data, '://') === false) {
// our really quick heuristic failed, abort
@@ -21,7 +33,8 @@ class HTMLPurifier_Injector_Linkify extends HTMLPurifier_Injector
// there is/are URL(s). Let's split the string:
// Note: this regex is extremely permissive
- $bits = preg_split('#((?:https?|ftp)://[^\s\'"<>()]+)#S', $token->data, -1, PREG_SPLIT_DELIM_CAPTURE);
+ $bits = preg_split('#((?:https?|ftp)://[^\s\'",<>()]+)#Su', $token->data, -1, PREG_SPLIT_DELIM_CAPTURE);
+
$token = array();
@@ -30,7 +43,9 @@ class HTMLPurifier_Injector_Linkify extends HTMLPurifier_Injector
// $l = is link
for ($i = 0, $c = count($bits), $l = false; $i < $c; $i++, $l = !$l) {
if (!$l) {
- if ($bits[$i] === '') continue;
+ if ($bits[$i] === '') {
+ continue;
+ }
$token[] = new HTMLPurifier_Token_Text($bits[$i]);
} else {
$token[] = new HTMLPurifier_Token_Start('a', array('href' => $bits[$i]));
@@ -38,9 +53,7 @@ class HTMLPurifier_Injector_Linkify extends HTMLPurifier_Injector
$token[] = new HTMLPurifier_Token_End('a');
}
}
-
}
-
}
// vim: et sw=4 sts=4
diff --git a/library/HTMLPurifier/Injector/PurifierLinkify.php b/library/HTMLPurifier/Injector/PurifierLinkify.php
index ad2455a91..cb9046f33 100644
--- a/library/HTMLPurifier/Injector/PurifierLinkify.php
+++ b/library/HTMLPurifier/Injector/PurifierLinkify.php
@@ -6,19 +6,43 @@
*/
class HTMLPurifier_Injector_PurifierLinkify extends HTMLPurifier_Injector
{
-
+ /**
+ * @type string
+ */
public $name = 'PurifierLinkify';
+
+ /**
+ * @type string
+ */
public $docURL;
+
+ /**
+ * @type array
+ */
public $needed = array('a' => array('href'));
- public function prepare($config, $context) {
+ /**
+ * @param HTMLPurifier_Config $config
+ * @param HTMLPurifier_Context $context
+ * @return string
+ */
+ public function prepare($config, $context)
+ {
$this->docURL = $config->get('AutoFormat.PurifierLinkify.DocURL');
return parent::prepare($config, $context);
}
- public function handleText(&$token) {
- if (!$this->allowsElement('a')) return;
- if (strpos($token->data, '%') === false) return;
+ /**
+ * @param HTMLPurifier_Token $token
+ */
+ public function handleText(&$token)
+ {
+ if (!$this->allowsElement('a')) {
+ return;
+ }
+ if (strpos($token->data, '%') === false) {
+ return;
+ }
$bits = preg_split('#%([a-z0-9]+\.[a-z0-9]+)#Si', $token->data, -1, PREG_SPLIT_DELIM_CAPTURE);
$token = array();
@@ -28,18 +52,20 @@ class HTMLPurifier_Injector_PurifierLinkify extends HTMLPurifier_Injector
// $l = is link
for ($i = 0, $c = count($bits), $l = false; $i < $c; $i++, $l = !$l) {
if (!$l) {
- if ($bits[$i] === '') continue;
+ if ($bits[$i] === '') {
+ continue;
+ }
$token[] = new HTMLPurifier_Token_Text($bits[$i]);
} else {
- $token[] = new HTMLPurifier_Token_Start('a',
- array('href' => str_replace('%s', $bits[$i], $this->docURL)));
+ $token[] = new HTMLPurifier_Token_Start(
+ 'a',
+ array('href' => str_replace('%s', $bits[$i], $this->docURL))
+ );
$token[] = new HTMLPurifier_Token_Text('%' . $bits[$i]);
$token[] = new HTMLPurifier_Token_End('a');
}
}
-
}
-
}
// vim: et sw=4 sts=4
diff --git a/library/HTMLPurifier/Injector/RemoveEmpty.php b/library/HTMLPurifier/Injector/RemoveEmpty.php
index 638bfca03..cd885722e 100644
--- a/library/HTMLPurifier/Injector/RemoveEmpty.php
+++ b/library/HTMLPurifier/Injector/RemoveEmpty.php
@@ -2,10 +2,44 @@
class HTMLPurifier_Injector_RemoveEmpty extends HTMLPurifier_Injector
{
+ /**
+ * @type HTMLPurifier_Context
+ */
+ private $context;
- private $context, $config, $attrValidator, $removeNbsp, $removeNbspExceptions;
+ /**
+ * @type HTMLPurifier_Config
+ */
+ private $config;
- public function prepare($config, $context) {
+ /**
+ * @type HTMLPurifier_AttrValidator
+ */
+ private $attrValidator;
+
+ /**
+ * @type bool
+ */
+ private $removeNbsp;
+
+ /**
+ * @type bool
+ */
+ private $removeNbspExceptions;
+
+ /**
+ * @type array
+ * TODO: make me configurable
+ */
+ private $_exclude = array('colgroup' => 1, 'th' => 1, 'td' => 1, 'iframe' => 1);
+
+ /**
+ * @param HTMLPurifier_Config $config
+ * @param HTMLPurifier_Context $context
+ * @return void
+ */
+ public function prepare($config, $context)
+ {
parent::prepare($config, $context);
$this->config = $config;
$this->context = $context;
@@ -14,38 +48,54 @@ class HTMLPurifier_Injector_RemoveEmpty extends HTMLPurifier_Injector
$this->attrValidator = new HTMLPurifier_AttrValidator();
}
- public function handleElement(&$token) {
- if (!$token instanceof HTMLPurifier_Token_Start) return;
+ /**
+ * @param HTMLPurifier_Token $token
+ */
+ public function handleElement(&$token)
+ {
+ if (!$token instanceof HTMLPurifier_Token_Start) {
+ return;
+ }
$next = false;
- for ($i = $this->inputIndex + 1, $c = count($this->inputTokens); $i < $c; $i++) {
- $next = $this->inputTokens[$i];
+ $deleted = 1; // the current tag
+ for ($i = count($this->inputZipper->back) - 1; $i >= 0; $i--, $deleted++) {
+ $next = $this->inputZipper->back[$i];
if ($next instanceof HTMLPurifier_Token_Text) {
- if ($next->is_whitespace) continue;
+ if ($next->is_whitespace) {
+ continue;
+ }
if ($this->removeNbsp && !isset($this->removeNbspExceptions[$token->name])) {
$plain = str_replace("\xC2\xA0", "", $next->data);
$isWsOrNbsp = $plain === '' || ctype_space($plain);
- if ($isWsOrNbsp) continue;
+ if ($isWsOrNbsp) {
+ continue;
+ }
}
}
break;
}
if (!$next || ($next instanceof HTMLPurifier_Token_End && $next->name == $token->name)) {
- if ($token->name == 'colgroup') return;
+ if (isset($this->_exclude[$token->name])) {
+ return;
+ }
$this->attrValidator->validateToken($token, $this->config, $this->context);
$token->armor['ValidateAttributes'] = true;
- if (isset($token->attr['id']) || isset($token->attr['name'])) return;
- $token = $i - $this->inputIndex + 1;
- for ($b = $this->inputIndex - 1; $b > 0; $b--) {
- $prev = $this->inputTokens[$b];
- if ($prev instanceof HTMLPurifier_Token_Text && $prev->is_whitespace) continue;
+ if (isset($token->attr['id']) || isset($token->attr['name'])) {
+ return;
+ }
+ $token = $deleted + 1;
+ for ($b = 0, $c = count($this->inputZipper->front); $b < $c; $b++) {
+ $prev = $this->inputZipper->front[$b];
+ if ($prev instanceof HTMLPurifier_Token_Text && $prev->is_whitespace) {
+ continue;
+ }
break;
}
// This is safe because we removed the token that triggered this.
- $this->rewind($b - 1);
+ $this->rewindOffset($b+$deleted);
return;
}
}
-
}
// vim: et sw=4 sts=4
diff --git a/library/HTMLPurifier/Injector/RemoveSpansWithoutAttributes.php b/library/HTMLPurifier/Injector/RemoveSpansWithoutAttributes.php
index b21313470..9ee7aa84d 100644
--- a/library/HTMLPurifier/Injector/RemoveSpansWithoutAttributes.php
+++ b/library/HTMLPurifier/Injector/RemoveSpansWithoutAttributes.php
@@ -5,25 +5,45 @@
*/
class HTMLPurifier_Injector_RemoveSpansWithoutAttributes extends HTMLPurifier_Injector
{
+ /**
+ * @type string
+ */
public $name = 'RemoveSpansWithoutAttributes';
+
+ /**
+ * @type array
+ */
public $needed = array('span');
+ /**
+ * @type HTMLPurifier_AttrValidator
+ */
private $attrValidator;
/**
- * Used by AttrValidator
+ * Used by AttrValidator.
+ * @type HTMLPurifier_Config
*/
private $config;
+
+ /**
+ * @type HTMLPurifier_Context
+ */
private $context;
- public function prepare($config, $context) {
+ public function prepare($config, $context)
+ {
$this->attrValidator = new HTMLPurifier_AttrValidator();
$this->config = $config;
$this->context = $context;
return parent::prepare($config, $context);
}
- public function handleElement(&$token) {
+ /**
+ * @param HTMLPurifier_Token $token
+ */
+ public function handleElement(&$token)
+ {
if ($token->name !== 'span' || !$token instanceof HTMLPurifier_Token_Start) {
return;
}
@@ -39,8 +59,8 @@ class HTMLPurifier_Injector_RemoveSpansWithoutAttributes extends HTMLPurifier_In
}
$nesting = 0;
- $spanContentTokens = array();
- while ($this->forwardUntilEndToken($i, $current, $nesting)) {}
+ while ($this->forwardUntilEndToken($i, $current, $nesting)) {
+ }
if ($current instanceof HTMLPurifier_Token_End && $current->name === 'span') {
// Mark closing span tag for deletion
@@ -50,7 +70,11 @@ class HTMLPurifier_Injector_RemoveSpansWithoutAttributes extends HTMLPurifier_In
}
}
- public function handleEnd(&$token) {
+ /**
+ * @param HTMLPurifier_Token $token
+ */
+ public function handleEnd(&$token)
+ {
if ($token->markForDeletion) {
$token = false;
}
diff --git a/library/HTMLPurifier/Injector/SafeObject.php b/library/HTMLPurifier/Injector/SafeObject.php
index 9e178ce01..3d17e07af 100644
--- a/library/HTMLPurifier/Injector/SafeObject.php
+++ b/library/HTMLPurifier/Injector/SafeObject.php
@@ -6,29 +6,61 @@
*/
class HTMLPurifier_Injector_SafeObject extends HTMLPurifier_Injector
{
+ /**
+ * @type string
+ */
public $name = 'SafeObject';
+
+ /**
+ * @type array
+ */
public $needed = array('object', 'param');
+ /**
+ * @type array
+ */
protected $objectStack = array();
- protected $paramStack = array();
- // Keep this synchronized with AttrTransform/SafeParam.php
+ /**
+ * @type array
+ */
+ protected $paramStack = array();
+
+ /**
+ * Keep this synchronized with AttrTransform/SafeParam.php.
+ * @type array
+ */
protected $addParam = array(
'allowScriptAccess' => 'never',
'allowNetworking' => 'internal',
);
+
+ /**
+ * @type array
+ */
protected $allowedParam = array(
'wmode' => true,
'movie' => true,
'flashvars' => true,
'src' => true,
+ 'allowFullScreen' => true, // if omitted, assume to be 'false'
);
- public function prepare($config, $context) {
+ /**
+ * @param HTMLPurifier_Config $config
+ * @param HTMLPurifier_Context $context
+ * @return void
+ */
+ public function prepare($config, $context)
+ {
parent::prepare($config, $context);
}
- public function handleElement(&$token) {
+ /**
+ * @param HTMLPurifier_Token $token
+ */
+ public function handleElement(&$token)
+ {
if ($token->name == 'object') {
$this->objectStack[] = $token;
$this->paramStack[] = array();
@@ -50,16 +82,15 @@ class HTMLPurifier_Injector_SafeObject extends HTMLPurifier_Injector
// attribute, which we need if a type is specified. This is
// *very* Flash specific.
if (!isset($this->objectStack[$i]->attr['data']) &&
- ($token->attr['name'] == 'movie' || $token->attr['name'] == 'src')) {
+ ($token->attr['name'] == 'movie' || $token->attr['name'] == 'src')
+ ) {
$this->objectStack[$i]->attr['data'] = $token->attr['value'];
}
// Check if the parameter is the correct value but has not
// already been added
- if (
- !isset($this->paramStack[$i][$n]) &&
+ if (!isset($this->paramStack[$i][$n]) &&
isset($this->addParam[$n]) &&
- $token->attr['name'] === $this->addParam[$n]
- ) {
+ $token->attr['name'] === $this->addParam[$n]) {
// keep token, and add to param stack
$this->paramStack[$i][$n] = true;
} elseif (isset($this->allowedParam[$n])) {
@@ -75,7 +106,8 @@ class HTMLPurifier_Injector_SafeObject extends HTMLPurifier_Injector
}
}
- public function handleEnd(&$token) {
+ public function handleEnd(&$token)
+ {
// This is the WRONG way of handling the object and param stacks;
// we should be inserting them directly on the relevant object tokens
// so that the global stack handling handles it.
@@ -84,7 +116,6 @@ class HTMLPurifier_Injector_SafeObject extends HTMLPurifier_Injector
array_pop($this->paramStack);
}
}
-
}
// vim: et sw=4 sts=4
diff --git a/library/HTMLPurifier/Language.php b/library/HTMLPurifier/Language.php
index 3e2be03b5..65277dd43 100644
--- a/library/HTMLPurifier/Language.php
+++ b/library/HTMLPurifier/Language.php
@@ -8,22 +8,26 @@ class HTMLPurifier_Language
{
/**
- * ISO 639 language code of language. Prefers shortest possible version
+ * ISO 639 language code of language. Prefers shortest possible version.
+ * @type string
*/
public $code = 'en';
/**
- * Fallback language code
+ * Fallback language code.
+ * @type bool|string
*/
public $fallback = false;
/**
- * Array of localizable messages
+ * Array of localizable messages.
+ * @type array
*/
public $messages = array();
/**
- * Array of localizable error codes
+ * Array of localizable error codes.
+ * @type array
*/
public $errorNames = array();
@@ -31,21 +35,33 @@ class HTMLPurifier_Language
* True if no message file was found for this language, so English
* is being used instead. Check this if you'd like to notify the
* user that they've used a non-supported language.
+ * @type bool
*/
public $error = false;
/**
* Has the language object been loaded yet?
+ * @type bool
* @todo Make it private, fix usage in HTMLPurifier_LanguageTest
*/
public $_loaded = false;
/**
- * Instances of HTMLPurifier_Config and HTMLPurifier_Context
+ * @type HTMLPurifier_Config
*/
- protected $config, $context;
+ protected $config;
- public function __construct($config, $context) {
+ /**
+ * @type HTMLPurifier_Context
+ */
+ protected $context;
+
+ /**
+ * @param HTMLPurifier_Config $config
+ * @param HTMLPurifier_Context $context
+ */
+ public function __construct($config, $context)
+ {
$this->config = $config;
$this->context = $context;
}
@@ -54,8 +70,11 @@ class HTMLPurifier_Language
* Loads language object with necessary info from factory cache
* @note This is a lazy loader
*/
- public function load() {
- if ($this->_loaded) return;
+ public function load()
+ {
+ if ($this->_loaded) {
+ return;
+ }
$factory = HTMLPurifier_LanguageFactory::instance();
$factory->loadLanguage($this->code);
foreach ($factory->keys as $key) {
@@ -66,31 +85,43 @@ class HTMLPurifier_Language
/**
* Retrieves a localised message.
- * @param $key string identifier of message
+ * @param string $key string identifier of message
* @return string localised message
*/
- public function getMessage($key) {
- if (!$this->_loaded) $this->load();
- if (!isset($this->messages[$key])) return "[$key]";
+ public function getMessage($key)
+ {
+ if (!$this->_loaded) {
+ $this->load();
+ }
+ if (!isset($this->messages[$key])) {
+ return "[$key]";
+ }
return $this->messages[$key];
}
/**
* Retrieves a localised error name.
- * @param $int integer error number, corresponding to PHP's error
- * reporting
+ * @param int $int error number, corresponding to PHP's error reporting
* @return string localised message
*/
- public function getErrorName($int) {
- if (!$this->_loaded) $this->load();
- if (!isset($this->errorNames[$int])) return "[Error: $int]";
+ public function getErrorName($int)
+ {
+ if (!$this->_loaded) {
+ $this->load();
+ }
+ if (!isset($this->errorNames[$int])) {
+ return "[Error: $int]";
+ }
return $this->errorNames[$int];
}
/**
* Converts an array list into a string readable representation
+ * @param array $array
+ * @return string
*/
- public function listify($array) {
+ public function listify($array)
+ {
$sep = $this->getMessage('Item separator');
$sep_last = $this->getMessage('Item separator last');
$ret = '';
@@ -108,15 +139,20 @@ class HTMLPurifier_Language
/**
* Formats a localised message with passed parameters
- * @param $key string identifier of message
- * @param $args Parameters to substitute in
+ * @param string $key string identifier of message
+ * @param array $args Parameters to substitute in
* @return string localised message
* @todo Implement conditionals? Right now, some messages make
* reference to line numbers, but those aren't always available
*/
- public function formatMessage($key, $args = array()) {
- if (!$this->_loaded) $this->load();
- if (!isset($this->messages[$key])) return "[$key]";
+ public function formatMessage($key, $args = array())
+ {
+ if (!$this->_loaded) {
+ $this->load();
+ }
+ if (!isset($this->messages[$key])) {
+ return "[$key]";
+ }
$raw = $this->messages[$key];
$subst = array();
$generator = false;
@@ -124,9 +160,15 @@ class HTMLPurifier_Language
if (is_object($value)) {
if ($value instanceof HTMLPurifier_Token) {
// factor this out some time
- if (!$generator) $generator = $this->context->get('Generator');
- if (isset($value->name)) $subst['$'.$i.'.Name'] = $value->name;
- if (isset($value->data)) $subst['$'.$i.'.Data'] = $value->data;
+ if (!$generator) {
+ $generator = $this->context->get('Generator');
+ }
+ if (isset($value->name)) {
+ $subst['$'.$i.'.Name'] = $value->name;
+ }
+ if (isset($value->data)) {
+ $subst['$'.$i.'.Data'] = $value->data;
+ }
$subst['$'.$i.'.Compact'] =
$subst['$'.$i.'.Serialized'] = $generator->generateFromToken($value);
// a more complex algorithm for compact representation
@@ -157,7 +199,6 @@ class HTMLPurifier_Language
}
return strtr($raw, $subst);
}
-
}
// vim: et sw=4 sts=4
diff --git a/library/HTMLPurifier/Language/classes/en-x-test.php b/library/HTMLPurifier/Language/classes/en-x-test.php
index d52fcb7ac..8828f5cde 100644
--- a/library/HTMLPurifier/Language/classes/en-x-test.php
+++ b/library/HTMLPurifier/Language/classes/en-x-test.php
@@ -4,9 +4,6 @@
class HTMLPurifier_Language_en_x_test extends HTMLPurifier_Language
{
-
-
-
}
// vim: et sw=4 sts=4
diff --git a/library/HTMLPurifier/Language/messages/en.php b/library/HTMLPurifier/Language/messages/en.php
index 8d7b5736b..c7f197e1e 100644
--- a/library/HTMLPurifier/Language/messages/en.php
+++ b/library/HTMLPurifier/Language/messages/en.php
@@ -4,60 +4,52 @@ $fallback = false;
$messages = array(
-'HTMLPurifier' => 'HTML Purifier',
-
+ 'HTMLPurifier' => 'HTML Purifier',
// for unit testing purposes
-'LanguageFactoryTest: Pizza' => 'Pizza',
-'LanguageTest: List' => '$1',
-'LanguageTest: Hash' => '$1.Keys; $1.Values',
-
-'Item separator' => ', ',
-'Item separator last' => ' and ', // non-Harvard style
-
-'ErrorCollector: No errors' => 'No errors detected. However, because error reporting is still incomplete, there may have been errors that the error collector was not notified of; please inspect the output HTML carefully.',
-'ErrorCollector: At line' => ' at line $line',
-'ErrorCollector: Incidental errors' => 'Incidental errors',
-
-'Lexer: Unclosed comment' => 'Unclosed comment',
-'Lexer: Unescaped lt' => 'Unescaped less-than sign (<) should be &lt;',
-'Lexer: Missing gt' => 'Missing greater-than sign (>), previous less-than sign (<) should be escaped',
-'Lexer: Missing attribute key' => 'Attribute declaration has no key',
-'Lexer: Missing end quote' => 'Attribute declaration has no end quote',
-'Lexer: Extracted body' => 'Removed document metadata tags',
-
-'Strategy_RemoveForeignElements: Tag transform' => '<$1> element transformed into $CurrentToken.Serialized',
-'Strategy_RemoveForeignElements: Missing required attribute' => '$CurrentToken.Compact element missing required attribute $1',
-'Strategy_RemoveForeignElements: Foreign element to text' => 'Unrecognized $CurrentToken.Serialized tag converted to text',
-'Strategy_RemoveForeignElements: Foreign element removed' => 'Unrecognized $CurrentToken.Serialized tag removed',
-'Strategy_RemoveForeignElements: Comment removed' => 'Comment containing "$CurrentToken.Data" removed',
-'Strategy_RemoveForeignElements: Foreign meta element removed' => 'Unrecognized $CurrentToken.Serialized meta tag and all descendants removed',
-'Strategy_RemoveForeignElements: Token removed to end' => 'Tags and text starting from $1 element where removed to end',
-'Strategy_RemoveForeignElements: Trailing hyphen in comment removed' => 'Trailing hyphen(s) in comment removed',
-'Strategy_RemoveForeignElements: Hyphens in comment collapsed' => 'Double hyphens in comments are not allowed, and were collapsed into single hyphens',
-
-'Strategy_MakeWellFormed: Unnecessary end tag removed' => 'Unnecessary $CurrentToken.Serialized tag removed',
-'Strategy_MakeWellFormed: Unnecessary end tag to text' => 'Unnecessary $CurrentToken.Serialized tag converted to text',
-'Strategy_MakeWellFormed: Tag auto closed' => '$1.Compact started on line $1.Line auto-closed by $CurrentToken.Compact',
-'Strategy_MakeWellFormed: Tag carryover' => '$1.Compact started on line $1.Line auto-continued into $CurrentToken.Compact',
-'Strategy_MakeWellFormed: Stray end tag removed' => 'Stray $CurrentToken.Serialized tag removed',
-'Strategy_MakeWellFormed: Stray end tag to text' => 'Stray $CurrentToken.Serialized tag converted to text',
-'Strategy_MakeWellFormed: Tag closed by element end' => '$1.Compact tag started on line $1.Line closed by end of $CurrentToken.Serialized',
-'Strategy_MakeWellFormed: Tag closed by document end' => '$1.Compact tag started on line $1.Line closed by end of document',
-
-'Strategy_FixNesting: Node removed' => '$CurrentToken.Compact node removed',
-'Strategy_FixNesting: Node excluded' => '$CurrentToken.Compact node removed due to descendant exclusion by ancestor element',
-'Strategy_FixNesting: Node reorganized' => 'Contents of $CurrentToken.Compact node reorganized to enforce its content model',
-'Strategy_FixNesting: Node contents removed' => 'Contents of $CurrentToken.Compact node removed',
-
-'AttrValidator: Attributes transformed' => 'Attributes on $CurrentToken.Compact transformed from $1.Keys to $2.Keys',
-'AttrValidator: Attribute removed' => '$CurrentAttr.Name attribute on $CurrentToken.Compact removed',
-
+ 'LanguageFactoryTest: Pizza' => 'Pizza',
+ 'LanguageTest: List' => '$1',
+ 'LanguageTest: Hash' => '$1.Keys; $1.Values',
+ 'Item separator' => ', ',
+ 'Item separator last' => ' and ', // non-Harvard style
+
+ 'ErrorCollector: No errors' => 'No errors detected. However, because error reporting is still incomplete, there may have been errors that the error collector was not notified of; please inspect the output HTML carefully.',
+ 'ErrorCollector: At line' => ' at line $line',
+ 'ErrorCollector: Incidental errors' => 'Incidental errors',
+ 'Lexer: Unclosed comment' => 'Unclosed comment',
+ 'Lexer: Unescaped lt' => 'Unescaped less-than sign (<) should be &lt;',
+ 'Lexer: Missing gt' => 'Missing greater-than sign (>), previous less-than sign (<) should be escaped',
+ 'Lexer: Missing attribute key' => 'Attribute declaration has no key',
+ 'Lexer: Missing end quote' => 'Attribute declaration has no end quote',
+ 'Lexer: Extracted body' => 'Removed document metadata tags',
+ 'Strategy_RemoveForeignElements: Tag transform' => '<$1> element transformed into $CurrentToken.Serialized',
+ 'Strategy_RemoveForeignElements: Missing required attribute' => '$CurrentToken.Compact element missing required attribute $1',
+ 'Strategy_RemoveForeignElements: Foreign element to text' => 'Unrecognized $CurrentToken.Serialized tag converted to text',
+ 'Strategy_RemoveForeignElements: Foreign element removed' => 'Unrecognized $CurrentToken.Serialized tag removed',
+ 'Strategy_RemoveForeignElements: Comment removed' => 'Comment containing "$CurrentToken.Data" removed',
+ 'Strategy_RemoveForeignElements: Foreign meta element removed' => 'Unrecognized $CurrentToken.Serialized meta tag and all descendants removed',
+ 'Strategy_RemoveForeignElements: Token removed to end' => 'Tags and text starting from $1 element where removed to end',
+ 'Strategy_RemoveForeignElements: Trailing hyphen in comment removed' => 'Trailing hyphen(s) in comment removed',
+ 'Strategy_RemoveForeignElements: Hyphens in comment collapsed' => 'Double hyphens in comments are not allowed, and were collapsed into single hyphens',
+ 'Strategy_MakeWellFormed: Unnecessary end tag removed' => 'Unnecessary $CurrentToken.Serialized tag removed',
+ 'Strategy_MakeWellFormed: Unnecessary end tag to text' => 'Unnecessary $CurrentToken.Serialized tag converted to text',
+ 'Strategy_MakeWellFormed: Tag auto closed' => '$1.Compact started on line $1.Line auto-closed by $CurrentToken.Compact',
+ 'Strategy_MakeWellFormed: Tag carryover' => '$1.Compact started on line $1.Line auto-continued into $CurrentToken.Compact',
+ 'Strategy_MakeWellFormed: Stray end tag removed' => 'Stray $CurrentToken.Serialized tag removed',
+ 'Strategy_MakeWellFormed: Stray end tag to text' => 'Stray $CurrentToken.Serialized tag converted to text',
+ 'Strategy_MakeWellFormed: Tag closed by element end' => '$1.Compact tag started on line $1.Line closed by end of $CurrentToken.Serialized',
+ 'Strategy_MakeWellFormed: Tag closed by document end' => '$1.Compact tag started on line $1.Line closed by end of document',
+ 'Strategy_FixNesting: Node removed' => '$CurrentToken.Compact node removed',
+ 'Strategy_FixNesting: Node excluded' => '$CurrentToken.Compact node removed due to descendant exclusion by ancestor element',
+ 'Strategy_FixNesting: Node reorganized' => 'Contents of $CurrentToken.Compact node reorganized to enforce its content model',
+ 'Strategy_FixNesting: Node contents removed' => 'Contents of $CurrentToken.Compact node removed',
+ 'AttrValidator: Attributes transformed' => 'Attributes on $CurrentToken.Compact transformed from $1.Keys to $2.Keys',
+ 'AttrValidator: Attribute removed' => '$CurrentAttr.Name attribute on $CurrentToken.Compact removed',
);
$errorNames = array(
- E_ERROR => 'Error',
+ E_ERROR => 'Error',
E_WARNING => 'Warning',
- E_NOTICE => 'Notice'
+ E_NOTICE => 'Notice'
);
// vim: et sw=4 sts=4
diff --git a/library/HTMLPurifier/LanguageFactory.php b/library/HTMLPurifier/LanguageFactory.php
index 134ef8c74..4e35272d8 100644
--- a/library/HTMLPurifier/LanguageFactory.php
+++ b/library/HTMLPurifier/LanguageFactory.php
@@ -11,50 +11,53 @@ class HTMLPurifier_LanguageFactory
{
/**
- * Cache of language code information used to load HTMLPurifier_Language objects
+ * Cache of language code information used to load HTMLPurifier_Language objects.
* Structure is: $factory->cache[$language_code][$key] = $value
- * @value array map
+ * @type array
*/
public $cache;
/**
* Valid keys in the HTMLPurifier_Language object. Designates which
* variables to slurp out of a message file.
- * @value array list
+ * @type array
*/
public $keys = array('fallback', 'messages', 'errorNames');
/**
- * Instance of HTMLPurifier_AttrDef_Lang to validate language codes
- * @value object HTMLPurifier_AttrDef_Lang
+ * Instance to validate language codes.
+ * @type HTMLPurifier_AttrDef_Lang
+ *
*/
protected $validator;
/**
* Cached copy of dirname(__FILE__), directory of current file without
- * trailing slash
- * @value string filename
+ * trailing slash.
+ * @type string
*/
protected $dir;
/**
- * Keys whose contents are a hash map and can be merged
- * @value array lookup
+ * Keys whose contents are a hash map and can be merged.
+ * @type array
*/
protected $mergeable_keys_map = array('messages' => true, 'errorNames' => true);
/**
- * Keys whose contents are a list and can be merged
+ * Keys whose contents are a list and can be merged.
* @value array lookup
*/
protected $mergeable_keys_list = array();
/**
* Retrieve sole instance of the factory.
- * @param $prototype Optional prototype to overload sole instance with,
+ * @param HTMLPurifier_LanguageFactory $prototype Optional prototype to overload sole instance with,
* or bool true to reset to default factory.
+ * @return HTMLPurifier_LanguageFactory
*/
- public static function instance($prototype = null) {
+ public static function instance($prototype = null)
+ {
static $instance = null;
if ($prototype !== null) {
$instance = $prototype;
@@ -69,28 +72,34 @@ class HTMLPurifier_LanguageFactory
* Sets up the singleton, much like a constructor
* @note Prevents people from getting this outside of the singleton
*/
- public function setup() {
+ public function setup()
+ {
$this->validator = new HTMLPurifier_AttrDef_Lang();
$this->dir = HTMLPURIFIER_PREFIX . '/HTMLPurifier';
}
/**
* Creates a language object, handles class fallbacks
- * @param $config Instance of HTMLPurifier_Config
- * @param $context Instance of HTMLPurifier_Context
- * @param $code Code to override configuration with. Private parameter.
+ * @param HTMLPurifier_Config $config
+ * @param HTMLPurifier_Context $context
+ * @param bool|string $code Code to override configuration with. Private parameter.
+ * @return HTMLPurifier_Language
*/
- public function create($config, $context, $code = false) {
-
+ public function create($config, $context, $code = false)
+ {
// validate language code
if ($code === false) {
$code = $this->validator->validate(
- $config->get('Core.Language'), $config, $context
+ $config->get('Core.Language'),
+ $config,
+ $context
);
} else {
$code = $this->validator->validate($code, $config, $context);
}
- if ($code === false) $code = 'en'; // malformed code becomes English
+ if ($code === false) {
+ $code = 'en'; // malformed code becomes English
+ }
$pcode = str_replace('-', '_', $code); // make valid PHP classname
static $depth = 0; // recursion protection
@@ -114,32 +123,34 @@ class HTMLPurifier_LanguageFactory
$depth--;
}
}
-
$lang->code = $code;
-
return $lang;
-
}
/**
* Returns the fallback language for language
* @note Loads the original language into cache
- * @param $code string language code
+ * @param string $code language code
+ * @return string|bool
*/
- public function getFallbackFor($code) {
+ public function getFallbackFor($code)
+ {
$this->loadLanguage($code);
return $this->cache[$code]['fallback'];
}
/**
* Loads language into the cache, handles message file and fallbacks
- * @param $code string language code
+ * @param string $code language code
*/
- public function loadLanguage($code) {
+ public function loadLanguage($code)
+ {
static $languages_seen = array(); // recursion guard
// abort if we've already loaded it
- if (isset($this->cache[$code])) return;
+ if (isset($this->cache[$code])) {
+ return;
+ }
// generate filename
$filename = $this->dir . '/Language/messages/' . $code . '.php';
@@ -162,8 +173,11 @@ class HTMLPurifier_LanguageFactory
// infinite recursion guard
if (isset($languages_seen[$code])) {
- trigger_error('Circular fallback reference in language ' .
- $code, E_USER_ERROR);
+ trigger_error(
+ 'Circular fallback reference in language ' .
+ $code,
+ E_USER_ERROR
+ );
$fallback = 'en';
}
$language_seen[$code] = true;
@@ -173,26 +187,23 @@ class HTMLPurifier_LanguageFactory
$fallback_cache = $this->cache[$fallback];
// merge fallback with current language
- foreach ( $this->keys as $key ) {
+ foreach ($this->keys as $key) {
if (isset($cache[$key]) && isset($fallback_cache[$key])) {
if (isset($this->mergeable_keys_map[$key])) {
$cache[$key] = $cache[$key] + $fallback_cache[$key];
} elseif (isset($this->mergeable_keys_list[$key])) {
- $cache[$key] = array_merge( $fallback_cache[$key], $cache[$key] );
+ $cache[$key] = array_merge($fallback_cache[$key], $cache[$key]);
}
} else {
$cache[$key] = $fallback_cache[$key];
}
}
-
}
// save to cache for later retrieval
$this->cache[$code] = $cache;
-
return;
}
-
}
// vim: et sw=4 sts=4
diff --git a/library/HTMLPurifier/Length.php b/library/HTMLPurifier/Length.php
index 8d2a46b7d..bbfbe6624 100644
--- a/library/HTMLPurifier/Length.php
+++ b/library/HTMLPurifier/Length.php
@@ -9,21 +9,25 @@ class HTMLPurifier_Length
/**
* String numeric magnitude.
+ * @type string
*/
protected $n;
/**
* String unit. False is permitted if $n = 0.
+ * @type string|bool
*/
protected $unit;
/**
* Whether or not this length is valid. Null if not calculated yet.
+ * @type bool
*/
protected $isValid;
/**
- * Lookup array of units recognized by CSS 2.1
+ * Array Lookup array of units recognized by CSS 2.1
+ * @type array
*/
protected static $allowedUnits = array(
'em' => true, 'ex' => true, 'px' => true, 'in' => true,
@@ -31,85 +35,126 @@ class HTMLPurifier_Length
);
/**
- * @param number $n Magnitude
- * @param string $u Unit
+ * @param string $n Magnitude
+ * @param bool|string $u Unit
*/
- public function __construct($n = '0', $u = false) {
+ public function __construct($n = '0', $u = false)
+ {
$this->n = (string) $n;
$this->unit = $u !== false ? (string) $u : false;
}
/**
* @param string $s Unit string, like '2em' or '3.4in'
+ * @return HTMLPurifier_Length
* @warning Does not perform validation.
*/
- static public function make($s) {
- if ($s instanceof HTMLPurifier_Length) return $s;
+ public static function make($s)
+ {
+ if ($s instanceof HTMLPurifier_Length) {
+ return $s;
+ }
$n_length = strspn($s, '1234567890.+-');
$n = substr($s, 0, $n_length);
$unit = substr($s, $n_length);
- if ($unit === '') $unit = false;
+ if ($unit === '') {
+ $unit = false;
+ }
return new HTMLPurifier_Length($n, $unit);
}
/**
* Validates the number and unit.
+ * @return bool
*/
- protected function validate() {
+ protected function validate()
+ {
// Special case:
- if ($this->n === '+0' || $this->n === '-0') $this->n = '0';
- if ($this->n === '0' && $this->unit === false) return true;
- if (!ctype_lower($this->unit)) $this->unit = strtolower($this->unit);
- if (!isset(HTMLPurifier_Length::$allowedUnits[$this->unit])) return false;
+ if ($this->n === '+0' || $this->n === '-0') {
+ $this->n = '0';
+ }
+ if ($this->n === '0' && $this->unit === false) {
+ return true;
+ }
+ if (!ctype_lower($this->unit)) {
+ $this->unit = strtolower($this->unit);
+ }
+ if (!isset(HTMLPurifier_Length::$allowedUnits[$this->unit])) {
+ return false;
+ }
// Hack:
$def = new HTMLPurifier_AttrDef_CSS_Number();
$result = $def->validate($this->n, false, false);
- if ($result === false) return false;
+ if ($result === false) {
+ return false;
+ }
$this->n = $result;
return true;
}
/**
* Returns string representation of number.
+ * @return string
*/
- public function toString() {
- if (!$this->isValid()) return false;
+ public function toString()
+ {
+ if (!$this->isValid()) {
+ return false;
+ }
return $this->n . $this->unit;
}
/**
* Retrieves string numeric magnitude.
+ * @return string
*/
- public function getN() {return $this->n;}
+ public function getN()
+ {
+ return $this->n;
+ }
/**
* Retrieves string unit.
+ * @return string
*/
- public function getUnit() {return $this->unit;}
+ public function getUnit()
+ {
+ return $this->unit;
+ }
/**
* Returns true if this length unit is valid.
+ * @return bool
*/
- public function isValid() {
- if ($this->isValid === null) $this->isValid = $this->validate();
+ public function isValid()
+ {
+ if ($this->isValid === null) {
+ $this->isValid = $this->validate();
+ }
return $this->isValid;
}
/**
* Compares two lengths, and returns 1 if greater, -1 if less and 0 if equal.
+ * @param HTMLPurifier_Length $l
+ * @return int
* @warning If both values are too large or small, this calculation will
* not work properly
*/
- public function compareTo($l) {
- if ($l === false) return false;
+ public function compareTo($l)
+ {
+ if ($l === false) {
+ return false;
+ }
if ($l->unit !== $this->unit) {
$converter = new HTMLPurifier_UnitConverter();
$l = $converter->convert($l, $this->unit);
- if ($l === false) return false;
+ if ($l === false) {
+ return false;
+ }
}
return $this->n - $l->n;
}
-
}
// vim: et sw=4 sts=4
diff --git a/library/HTMLPurifier/Lexer.php b/library/HTMLPurifier/Lexer.php
index b05e11546..43732621d 100644
--- a/library/HTMLPurifier/Lexer.php
+++ b/library/HTMLPurifier/Lexer.php
@@ -62,16 +62,20 @@ class HTMLPurifier_Lexer
* To specify your own prototype, set %Core.LexerImpl to it.
* This change in behavior de-singletonizes the lexer object.
*
- * @param $config Instance of HTMLPurifier_Config
- * @return Concrete lexer.
+ * @param HTMLPurifier_Config $config
+ * @return HTMLPurifier_Lexer
+ * @throws HTMLPurifier_Exception
*/
- public static function create($config) {
-
+ public static function create($config)
+ {
if (!($config instanceof HTMLPurifier_Config)) {
$lexer = $config;
- trigger_error("Passing a prototype to
- HTMLPurifier_Lexer::create() is deprecated, please instead
- use %Core.LexerImpl", E_USER_WARNING);
+ trigger_error(
+ "Passing a prototype to
+ HTMLPurifier_Lexer::create() is deprecated, please instead
+ use %Core.LexerImpl",
+ E_USER_WARNING
+ );
} else {
$lexer = $config->get('Core.LexerImpl');
}
@@ -84,30 +88,28 @@ class HTMLPurifier_Lexer
if (is_object($lexer)) {
$inst = $lexer;
} else {
-
- if (is_null($lexer)) { do {
- // auto-detection algorithm
-
- if ($needs_tracking) {
- $lexer = 'DirectLex';
- break;
- }
-
- if (
- class_exists('DOMDocument') &&
- method_exists('DOMDocument', 'loadHTML') &&
- !extension_loaded('domxml')
- ) {
- // check for DOM support, because while it's part of the
- // core, it can be disabled compile time. Also, the PECL
- // domxml extension overrides the default DOM, and is evil
- // and nasty and we shan't bother to support it
- $lexer = 'DOMLex';
- } else {
- $lexer = 'DirectLex';
- }
-
- } while(0); } // do..while so we can break
+ if (is_null($lexer)) {
+ do {
+ // auto-detection algorithm
+ if ($needs_tracking) {
+ $lexer = 'DirectLex';
+ break;
+ }
+
+ if (class_exists('DOMDocument') &&
+ method_exists('DOMDocument', 'loadHTML') &&
+ !extension_loaded('domxml')
+ ) {
+ // check for DOM support, because while it's part of the
+ // core, it can be disabled compile time. Also, the PECL
+ // domxml extension overrides the default DOM, and is evil
+ // and nasty and we shan't bother to support it
+ $lexer = 'DOMLex';
+ } else {
+ $lexer = 'DirectLex';
+ }
+ } while (0);
+ } // do..while so we can break
// instantiate recognized string names
switch ($lexer) {
@@ -121,16 +123,24 @@ class HTMLPurifier_Lexer
$inst = new HTMLPurifier_Lexer_PH5P();
break;
default:
- throw new HTMLPurifier_Exception("Cannot instantiate unrecognized Lexer type " . htmlspecialchars($lexer));
+ throw new HTMLPurifier_Exception(
+ "Cannot instantiate unrecognized Lexer type " .
+ htmlspecialchars($lexer)
+ );
}
}
- if (!$inst) throw new HTMLPurifier_Exception('No lexer was instantiated');
+ if (!$inst) {
+ throw new HTMLPurifier_Exception('No lexer was instantiated');
+ }
// once PHP DOM implements native line numbers, or we
// hack out something using XSLT, remove this stipulation
if ($needs_tracking && !$inst->tracksLineNumbers) {
- throw new HTMLPurifier_Exception('Cannot use lexer that does not support line numbers with Core.MaintainLineNumbers or Core.CollectErrors (use DirectLex instead)');
+ throw new HTMLPurifier_Exception(
+ 'Cannot use lexer that does not support line numbers with ' .
+ 'Core.MaintainLineNumbers or Core.CollectErrors (use DirectLex instead)'
+ );
}
return $inst;
@@ -139,23 +149,25 @@ class HTMLPurifier_Lexer
// -- CONVENIENCE MEMBERS ---------------------------------------------
- public function __construct() {
+ public function __construct()
+ {
$this->_entity_parser = new HTMLPurifier_EntityParser();
}
/**
* Most common entity to raw value conversion table for special entities.
+ * @type array
*/
protected $_special_entity2str =
- array(
- '&quot;' => '"',
- '&amp;' => '&',
- '&lt;' => '<',
- '&gt;' => '>',
- '&#39;' => "'",
- '&#039;' => "'",
- '&#x27;' => "'"
- );
+ array(
+ '&quot;' => '"',
+ '&amp;' => '&',
+ '&lt;' => '<',
+ '&gt;' => '>',
+ '&#39;' => "'",
+ '&#039;' => "'",
+ '&#x27;' => "'"
+ );
/**
* Parses special entities into the proper characters.
@@ -168,27 +180,33 @@ class HTMLPurifier_Lexer
* completely parsed, but that's only because all other entities should
* have been handled previously in substituteNonSpecialEntities()
*
- * @param $string String character data to be parsed.
- * @returns Parsed character data.
+ * @param string $string String character data to be parsed.
+ * @return string Parsed character data.
*/
- public function parseData($string) {
-
+ public function parseData($string)
+ {
// following functions require at least one character
- if ($string === '') return '';
+ if ($string === '') {
+ return '';
+ }
// subtracts amps that cannot possibly be escaped
$num_amp = substr_count($string, '&') - substr_count($string, '& ') -
- ($string[strlen($string)-1] === '&' ? 1 : 0);
+ ($string[strlen($string) - 1] === '&' ? 1 : 0);
- if (!$num_amp) return $string; // abort if no entities
+ if (!$num_amp) {
+ return $string;
+ } // abort if no entities
$num_esc_amp = substr_count($string, '&amp;');
$string = strtr($string, $this->_special_entity2str);
// code duplication for sake of optimization, see above
$num_amp_2 = substr_count($string, '&') - substr_count($string, '& ') -
- ($string[strlen($string)-1] === '&' ? 1 : 0);
+ ($string[strlen($string) - 1] === '&' ? 1 : 0);
- if ($num_amp_2 <= $num_esc_amp) return $string;
+ if ($num_amp_2 <= $num_esc_amp) {
+ return $string;
+ }
// hmm... now we have some uncommon entities. Use the callback.
$string = $this->_entity_parser->substituteSpecialEntities($string);
@@ -197,21 +215,23 @@ class HTMLPurifier_Lexer
/**
* Lexes an HTML string into tokens.
- *
* @param $string String HTML.
- * @return HTMLPurifier_Token array representation of HTML.
+ * @param HTMLPurifier_Config $config
+ * @param HTMLPurifier_Context $context
+ * @return HTMLPurifier_Token[] array representation of HTML.
*/
- public function tokenizeHTML($string, $config, $context) {
+ public function tokenizeHTML($string, $config, $context)
+ {
trigger_error('Call to abstract class', E_USER_ERROR);
}
/**
* Translates CDATA sections into regular sections (through escaping).
- *
- * @param $string HTML string to process.
- * @returns HTML with CDATA sections escaped.
+ * @param string $string HTML string to process.
+ * @return string HTML with CDATA sections escaped.
*/
- protected static function escapeCDATA($string) {
+ protected static function escapeCDATA($string)
+ {
return preg_replace_callback(
'/<!\[CDATA\[(.+?)\]\]>/s',
array('HTMLPurifier_Lexer', 'CDATACallback'),
@@ -221,8 +241,11 @@ class HTMLPurifier_Lexer
/**
* Special CDATA case that is especially convoluted for <script>
+ * @param string $string HTML string to process.
+ * @return string HTML with CDATA sections escaped.
*/
- protected static function escapeCommentedCDATA($string) {
+ protected static function escapeCommentedCDATA($string)
+ {
return preg_replace_callback(
'#<!--//--><!\[CDATA\[//><!--(.+?)//--><!\]\]>#s',
array('HTMLPurifier_Lexer', 'CDATACallback'),
@@ -231,15 +254,30 @@ class HTMLPurifier_Lexer
}
/**
+ * Special Internet Explorer conditional comments should be removed.
+ * @param string $string HTML string to process.
+ * @return string HTML with conditional comments removed.
+ */
+ protected static function removeIEConditional($string)
+ {
+ return preg_replace(
+ '#<!--\[if [^>]+\]>.*?<!\[endif\]-->#si', // probably should generalize for all strings
+ '',
+ $string
+ );
+ }
+
+ /**
* Callback function for escapeCDATA() that does the work.
*
* @warning Though this is public in order to let the callback happen,
* calling it directly is not recommended.
- * @params $matches PCRE matches array, with index 0 the entire match
+ * @param array $matches PCRE matches array, with index 0 the entire match
* and 1 the inside of the CDATA section.
- * @returns Escaped internals of the CDATA section.
+ * @return string Escaped internals of the CDATA section.
*/
- protected static function CDATACallback($matches) {
+ protected static function CDATACallback($matches)
+ {
// not exactly sure why the character set is needed, but whatever
return htmlspecialchars($matches[1], ENT_COMPAT, 'UTF-8');
}
@@ -247,13 +285,19 @@ class HTMLPurifier_Lexer
/**
* Takes a piece of HTML and normalizes it by converting entities, fixing
* encoding, extracting bits, and other good stuff.
+ * @param string $html HTML.
+ * @param HTMLPurifier_Config $config
+ * @param HTMLPurifier_Context $context
+ * @return string
* @todo Consider making protected
*/
- public function normalize($html, $config, $context) {
-
+ public function normalize($html, $config, $context)
+ {
// normalize newlines to \n
- $html = str_replace("\r\n", "\n", $html);
- $html = str_replace("\r", "\n", $html);
+ if ($config->get('Core.NormalizeNewlines')) {
+ $html = str_replace("\r\n", "\n", $html);
+ $html = str_replace("\r", "\n", $html);
+ }
if ($config->get('HTML.Trusted')) {
// escape convoluted CDATA
@@ -263,6 +307,8 @@ class HTMLPurifier_Lexer
// escape CDATA
$html = $this->escapeCDATA($html);
+ $html = $this->removeIEConditional($html);
+
// extract body from document if applicable
if ($config->get('Core.ConvertDocumentToFragment')) {
$e = false;
@@ -284,6 +330,11 @@ class HTMLPurifier_Lexer
// represent non-SGML characters (horror, horror!)
$html = HTMLPurifier_Encoder::cleanUTF8($html);
+ // if processing instructions are to removed, remove them now
+ if ($config->get('Core.RemoveProcessingInstructions')) {
+ $html = preg_replace('#<\?.+?\?>#s', '', $html);
+ }
+
return $html;
}
@@ -291,7 +342,8 @@ class HTMLPurifier_Lexer
* Takes a string of HTML (fragment or document) and returns the content
* @todo Consider making protected
*/
- public function extractBody($html) {
+ public function extractBody($html)
+ {
$matches = array();
$result = preg_match('!<body[^>]*>(.*)</body>!is', $html, $matches);
if ($result) {
@@ -300,7 +352,6 @@ class HTMLPurifier_Lexer
return $html;
}
}
-
}
// vim: et sw=4 sts=4
diff --git a/library/HTMLPurifier/Lexer/DOMLex.php b/library/HTMLPurifier/Lexer/DOMLex.php
index 20dc2ed48..720754454 100644
--- a/library/HTMLPurifier/Lexer/DOMLex.php
+++ b/library/HTMLPurifier/Lexer/DOMLex.php
@@ -27,16 +27,26 @@
class HTMLPurifier_Lexer_DOMLex extends HTMLPurifier_Lexer
{
+ /**
+ * @type HTMLPurifier_TokenFactory
+ */
private $factory;
- public function __construct() {
+ public function __construct()
+ {
// setup the factory
parent::__construct();
$this->factory = new HTMLPurifier_TokenFactory();
}
- public function tokenizeHTML($html, $config, $context) {
-
+ /**
+ * @param string $html
+ * @param HTMLPurifier_Config $config
+ * @param HTMLPurifier_Context $context
+ * @return HTMLPurifier_Token[]
+ */
+ public function tokenizeHTML($html, $config, $context)
+ {
$html = $this->normalize($html, $config, $context);
// attempt to armor stray angled brackets that cannot possibly
@@ -65,30 +75,67 @@ class HTMLPurifier_Lexer_DOMLex extends HTMLPurifier_Lexer
$tokens = array();
$this->tokenizeDOM(
$doc->getElementsByTagName('html')->item(0)-> // <html>
- getElementsByTagName('body')->item(0)-> // <body>
- getElementsByTagName('div')->item(0) // <div>
- , $tokens);
+ getElementsByTagName('body')->item(0)-> // <body>
+ getElementsByTagName('div')->item(0), // <div>
+ $tokens
+ );
return $tokens;
}
/**
- * Recursive function that tokenizes a node, putting it into an accumulator.
- *
- * @param $node DOMNode to be tokenized.
- * @param $tokens Array-list of already tokenized tokens.
- * @param $collect Says whether or start and close are collected, set to
- * false at first recursion because it's the implicit DIV
- * tag you're dealing with.
- * @returns Tokens of node appended to previously passed tokens.
+ * Iterative function that tokenizes a node, putting it into an accumulator.
+ * To iterate is human, to recurse divine - L. Peter Deutsch
+ * @param DOMNode $node DOMNode to be tokenized.
+ * @param HTMLPurifier_Token[] $tokens Array-list of already tokenized tokens.
+ * @return HTMLPurifier_Token of node appended to previously passed tokens.
*/
- protected function tokenizeDOM($node, &$tokens, $collect = false) {
+ protected function tokenizeDOM($node, &$tokens)
+ {
+ $level = 0;
+ $nodes = array($level => new HTMLPurifier_Queue(array($node)));
+ $closingNodes = array();
+ do {
+ while (!$nodes[$level]->isEmpty()) {
+ $node = $nodes[$level]->shift(); // FIFO
+ $collect = $level > 0 ? true : false;
+ $needEndingTag = $this->createStartNode($node, $tokens, $collect);
+ if ($needEndingTag) {
+ $closingNodes[$level][] = $node;
+ }
+ if ($node->childNodes && $node->childNodes->length) {
+ $level++;
+ $nodes[$level] = new HTMLPurifier_Queue();
+ foreach ($node->childNodes as $childNode) {
+ $nodes[$level]->push($childNode);
+ }
+ }
+ }
+ $level--;
+ if ($level && isset($closingNodes[$level])) {
+ while ($node = array_pop($closingNodes[$level])) {
+ $this->createEndNode($node, $tokens);
+ }
+ }
+ } while ($level > 0);
+ }
+ /**
+ * @param DOMNode $node DOMNode to be tokenized.
+ * @param HTMLPurifier_Token[] $tokens Array-list of already tokenized tokens.
+ * @param bool $collect Says whether or start and close are collected, set to
+ * false at first recursion because it's the implicit DIV
+ * tag you're dealing with.
+ * @return bool if the token needs an endtoken
+ * @todo data and tagName properties don't seem to exist in DOMNode?
+ */
+ protected function createStartNode($node, &$tokens, $collect)
+ {
// intercept non element nodes. WE MUST catch all of them,
// but we're not getting the character reference nodes because
// those should have been preprocessed
if ($node->nodeType === XML_TEXT_NODE) {
$tokens[] = $this->factory->createText($node->data);
- return;
+ return false;
} elseif ($node->nodeType === XML_CDATA_SECTION_NODE) {
// undo libxml's special treatment of <script> and <style> tags
$last = end($tokens);
@@ -106,59 +153,61 @@ class HTMLPurifier_Lexer_DOMLex extends HTMLPurifier_Lexer
}
}
$tokens[] = $this->factory->createText($this->parseData($data));
- return;
+ return false;
} elseif ($node->nodeType === XML_COMMENT_NODE) {
// this is code is only invoked for comments in script/style in versions
// of libxml pre-2.6.28 (regular comments, of course, are still
// handled regularly)
$tokens[] = $this->factory->createComment($node->data);
- return;
- } elseif (
+ return false;
+ } elseif ($node->nodeType !== XML_ELEMENT_NODE) {
// not-well tested: there may be other nodes we have to grab
- $node->nodeType !== XML_ELEMENT_NODE
- ) {
- return;
+ return false;
}
- $attr = $node->hasAttributes() ?
- $this->transformAttrToAssoc($node->attributes) :
- array();
+ $attr = $node->hasAttributes() ? $this->transformAttrToAssoc($node->attributes) : array();
// We still have to make sure that the element actually IS empty
if (!$node->childNodes->length) {
if ($collect) {
$tokens[] = $this->factory->createEmpty($node->tagName, $attr);
}
+ return false;
} else {
- if ($collect) { // don't wrap on first iteration
+ if ($collect) {
$tokens[] = $this->factory->createStart(
$tag_name = $node->tagName, // somehow, it get's dropped
$attr
);
}
- foreach ($node->childNodes as $node) {
- // remember, it's an accumulator. Otherwise, we'd have
- // to use array_merge
- $this->tokenizeDOM($node, $tokens, true);
- }
- if ($collect) {
- $tokens[] = $this->factory->createEnd($tag_name);
- }
+ return true;
}
+ }
+ /**
+ * @param DOMNode $node
+ * @param HTMLPurifier_Token[] $tokens
+ */
+ protected function createEndNode($node, &$tokens)
+ {
+ $tokens[] = $this->factory->createEnd($node->tagName);
}
+
/**
* Converts a DOMNamedNodeMap of DOMAttr objects into an assoc array.
*
- * @param $attribute_list DOMNamedNodeMap of DOMAttr objects.
- * @returns Associative array of attributes.
+ * @param DOMNamedNodeMap $node_map DOMNamedNodeMap of DOMAttr objects.
+ * @return array Associative array of attributes.
*/
- protected function transformAttrToAssoc($node_map) {
+ protected function transformAttrToAssoc($node_map)
+ {
// NamedNodeMap is documented very well, so we're using undocumented
// features, namely, the fact that it implements Iterator and
// has a ->length attribute
- if ($node_map->length === 0) return array();
+ if ($node_map->length === 0) {
+ return array();
+ }
$array = array();
foreach ($node_map as $attr) {
$array[$attr->name] = $attr->value;
@@ -168,46 +217,64 @@ class HTMLPurifier_Lexer_DOMLex extends HTMLPurifier_Lexer
/**
* An error handler that mutes all errors
+ * @param int $errno
+ * @param string $errstr
*/
- public function muteErrorHandler($errno, $errstr) {}
+ public function muteErrorHandler($errno, $errstr)
+ {
+ }
/**
* Callback function for undoing escaping of stray angled brackets
* in comments
+ * @param array $matches
+ * @return string
*/
- public function callbackUndoCommentSubst($matches) {
- return '<!--' . strtr($matches[1], array('&amp;'=>'&','&lt;'=>'<')) . $matches[2];
+ public function callbackUndoCommentSubst($matches)
+ {
+ return '<!--' . strtr($matches[1], array('&amp;' => '&', '&lt;' => '<')) . $matches[2];
}
/**
* Callback function that entity-izes ampersands in comments so that
* callbackUndoCommentSubst doesn't clobber them
+ * @param array $matches
+ * @return string
*/
- public function callbackArmorCommentEntities($matches) {
+ public function callbackArmorCommentEntities($matches)
+ {
return '<!--' . str_replace('&', '&amp;', $matches[1]) . $matches[2];
}
/**
* Wraps an HTML fragment in the necessary HTML
+ * @param string $html
+ * @param HTMLPurifier_Config $config
+ * @param HTMLPurifier_Context $context
+ * @return string
*/
- protected function wrapHTML($html, $config, $context) {
+ protected function wrapHTML($html, $config, $context)
+ {
$def = $config->getDefinition('HTML');
$ret = '';
if (!empty($def->doctype->dtdPublic) || !empty($def->doctype->dtdSystem)) {
$ret .= '<!DOCTYPE html ';
- if (!empty($def->doctype->dtdPublic)) $ret .= 'PUBLIC "' . $def->doctype->dtdPublic . '" ';
- if (!empty($def->doctype->dtdSystem)) $ret .= '"' . $def->doctype->dtdSystem . '" ';
+ if (!empty($def->doctype->dtdPublic)) {
+ $ret .= 'PUBLIC "' . $def->doctype->dtdPublic . '" ';
+ }
+ if (!empty($def->doctype->dtdSystem)) {
+ $ret .= '"' . $def->doctype->dtdSystem . '" ';
+ }
$ret .= '>';
}
$ret .= '<html><head>';
$ret .= '<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />';
// No protection if $html contains a stray </div>!
- $ret .= '</head><body><div>'.$html.'</div></body></html>';
+ $ret .= '</head><body><div>' . $html . '</div></body></html>';
return $ret;
}
-
}
// vim: et sw=4 sts=4
diff --git a/library/HTMLPurifier/Lexer/DirectLex.php b/library/HTMLPurifier/Lexer/DirectLex.php
index 456e6e190..746b6e315 100644
--- a/library/HTMLPurifier/Lexer/DirectLex.php
+++ b/library/HTMLPurifier/Lexer/DirectLex.php
@@ -12,30 +12,44 @@
*/
class HTMLPurifier_Lexer_DirectLex extends HTMLPurifier_Lexer
{
-
+ /**
+ * @type bool
+ */
public $tracksLineNumbers = true;
/**
* Whitespace characters for str(c)spn.
+ * @type string
*/
protected $_whitespace = "\x20\x09\x0D\x0A";
/**
* Callback function for script CDATA fudge
- * @param $matches, in form of array(opening tag, contents, closing tag)
+ * @param array $matches, in form of array(opening tag, contents, closing tag)
+ * @return string
*/
- protected function scriptCallback($matches) {
+ protected function scriptCallback($matches)
+ {
return $matches[1] . htmlspecialchars($matches[2], ENT_COMPAT, 'UTF-8') . $matches[3];
}
- public function tokenizeHTML($html, $config, $context) {
-
+ /**
+ * @param String $html
+ * @param HTMLPurifier_Config $config
+ * @param HTMLPurifier_Context $context
+ * @return array|HTMLPurifier_Token[]
+ */
+ public function tokenizeHTML($html, $config, $context)
+ {
// special normalization for script tags without any armor
// our "armor" heurstic is a < sign any number of whitespaces after
// the first script tag
if ($config->get('HTML.Trusted')) {
- $html = preg_replace_callback('#(<script[^>]*>)(\s*[^<].+?)(</script>)#si',
- array($this, 'scriptCallback'), $html);
+ $html = preg_replace_callback(
+ '#(<script[^>]*>)(\s*[^<].+?)(</script>)#si',
+ array($this, 'scriptCallback'),
+ $html
+ );
}
$html = $this->normalize($html, $config, $context);
@@ -55,15 +69,15 @@ class HTMLPurifier_Lexer_DirectLex extends HTMLPurifier_Lexer
if ($maintain_line_numbers) {
$current_line = 1;
- $current_col = 0;
+ $current_col = 0;
$length = strlen($html);
} else {
$current_line = false;
- $current_col = false;
+ $current_col = false;
$length = false;
}
$context->register('CurrentLine', $current_line);
- $context->register('CurrentCol', $current_col);
+ $context->register('CurrentCol', $current_col);
$nl = "\n";
// how often to manually recalculate. This will ALWAYS be right,
// but it's pretty wasteful. Set to 0 to turn off
@@ -77,16 +91,14 @@ class HTMLPurifier_Lexer_DirectLex extends HTMLPurifier_Lexer
// for testing synchronization
$loops = 0;
- while(++$loops) {
-
+ while (++$loops) {
// $cursor is either at the start of a token, or inside of
// a tag (i.e. there was a < immediately before it), as indicated
// by $inside_tag
if ($maintain_line_numbers) {
-
// $rcursor, however, is always at the start of a token.
- $rcursor = $cursor - (int) $inside_tag;
+ $rcursor = $cursor - (int)$inside_tag;
// Column number is cheap, so we calculate it every round.
// We're interested at the *end* of the newline string, so
@@ -96,14 +108,11 @@ class HTMLPurifier_Lexer_DirectLex extends HTMLPurifier_Lexer
$current_col = $rcursor - (is_bool($nl_pos) ? 0 : $nl_pos + 1);
// recalculate lines
- if (
- $synchronize_interval && // synchronization is on
- $cursor > 0 && // cursor is further than zero
- $loops % $synchronize_interval === 0 // time to synchronize!
- ) {
+ if ($synchronize_interval && // synchronization is on
+ $cursor > 0 && // cursor is further than zero
+ $loops % $synchronize_interval === 0) { // time to synchronize!
$current_line = 1 + $this->substrCount($html, $nl, 0, $cursor);
}
-
}
$position_next_lt = strpos($html, '<', $cursor);
@@ -119,35 +128,42 @@ class HTMLPurifier_Lexer_DirectLex extends HTMLPurifier_Lexer
if (!$inside_tag && $position_next_lt !== false) {
// We are not inside tag and there still is another tag to parse
$token = new
- HTMLPurifier_Token_Text(
- $this->parseData(
- substr(
- $html, $cursor, $position_next_lt - $cursor
- )
+ HTMLPurifier_Token_Text(
+ $this->parseData(
+ substr(
+ $html,
+ $cursor,
+ $position_next_lt - $cursor
)
- );
+ )
+ );
if ($maintain_line_numbers) {
$token->rawPosition($current_line, $current_col);
$current_line += $this->substrCount($html, $nl, $cursor, $position_next_lt - $cursor);
}
$array[] = $token;
- $cursor = $position_next_lt + 1;
+ $cursor = $position_next_lt + 1;
$inside_tag = true;
continue;
} elseif (!$inside_tag) {
// We are not inside tag but there are no more tags
// If we're already at the end, break
- if ($cursor === strlen($html)) break;
+ if ($cursor === strlen($html)) {
+ break;
+ }
// Create Text of rest of string
$token = new
- HTMLPurifier_Token_Text(
- $this->parseData(
- substr(
- $html, $cursor
- )
+ HTMLPurifier_Token_Text(
+ $this->parseData(
+ substr(
+ $html,
+ $cursor
)
- );
- if ($maintain_line_numbers) $token->rawPosition($current_line, $current_col);
+ )
+ );
+ if ($maintain_line_numbers) {
+ $token->rawPosition($current_line, $current_col);
+ }
$array[] = $token;
break;
} elseif ($inside_tag && $position_next_gt !== false) {
@@ -171,16 +187,16 @@ class HTMLPurifier_Lexer_DirectLex extends HTMLPurifier_Lexer
}
// Check if it's a comment
- if (
- substr($segment, 0, 3) === '!--'
- ) {
+ if (substr($segment, 0, 3) === '!--') {
// re-determine segment length, looking for -->
$position_comment_end = strpos($html, '-->', $cursor);
if ($position_comment_end === false) {
// uh oh, we have a comment that extends to
// infinity. Can't be helped: set comment
// end position to end of string
- if ($e) $e->send(E_WARNING, 'Lexer: Unclosed comment');
+ if ($e) {
+ $e->send(E_WARNING, 'Lexer: Unclosed comment');
+ }
$position_comment_end = strlen($html);
$end = true;
} else {
@@ -189,11 +205,13 @@ class HTMLPurifier_Lexer_DirectLex extends HTMLPurifier_Lexer
$strlen_segment = $position_comment_end - $cursor;
$segment = substr($html, $cursor, $strlen_segment);
$token = new
- HTMLPurifier_Token_Comment(
- substr(
- $segment, 3, $strlen_segment - 3
- )
- );
+ HTMLPurifier_Token_Comment(
+ substr(
+ $segment,
+ 3,
+ $strlen_segment - 3
+ )
+ );
if ($maintain_line_numbers) {
$token->rawPosition($current_line, $current_col);
$current_line += $this->substrCount($html, $nl, $cursor, $strlen_segment);
@@ -205,7 +223,7 @@ class HTMLPurifier_Lexer_DirectLex extends HTMLPurifier_Lexer
}
// Check if it's an end tag
- $is_end_tag = (strpos($segment,'/') === 0);
+ $is_end_tag = (strpos($segment, '/') === 0);
if ($is_end_tag) {
$type = substr($segment, 1);
$token = new HTMLPurifier_Token_End($type);
@@ -224,7 +242,9 @@ class HTMLPurifier_Lexer_DirectLex extends HTMLPurifier_Lexer
// text and go our merry way
if (!ctype_alpha($segment[0])) {
// XML: $segment[0] !== '_' && $segment[0] !== ':'
- if ($e) $e->send(E_NOTICE, 'Lexer: Unescaped lt');
+ if ($e) {
+ $e->send(E_NOTICE, 'Lexer: Unescaped lt');
+ }
$token = new HTMLPurifier_Token_Text('<');
if ($maintain_line_numbers) {
$token->rawPosition($current_line, $current_col);
@@ -239,7 +259,7 @@ class HTMLPurifier_Lexer_DirectLex extends HTMLPurifier_Lexer
// trailing slash. Remember, we could have a tag like <br>, so
// any later token processing scripts must convert improperly
// classified EmptyTags from StartTags.
- $is_self_closing = (strrpos($segment,'/') === $strlen_segment-1);
+ $is_self_closing = (strrpos($segment, '/') === $strlen_segment - 1);
if ($is_self_closing) {
$strlen_segment--;
$segment = substr($segment, 0, $strlen_segment);
@@ -269,14 +289,16 @@ class HTMLPurifier_Lexer_DirectLex extends HTMLPurifier_Lexer
$attribute_string =
trim(
substr(
- $segment, $position_first_space
+ $segment,
+ $position_first_space
)
);
if ($attribute_string) {
$attr = $this->parseAttributeString(
- $attribute_string
- , $config, $context
- );
+ $attribute_string,
+ $config,
+ $context
+ );
} else {
$attr = array();
}
@@ -296,15 +318,19 @@ class HTMLPurifier_Lexer_DirectLex extends HTMLPurifier_Lexer
continue;
} else {
// inside tag, but there's no ending > sign
- if ($e) $e->send(E_WARNING, 'Lexer: Missing gt');
+ if ($e) {
+ $e->send(E_WARNING, 'Lexer: Missing gt');
+ }
$token = new
- HTMLPurifier_Token_Text(
- '<' .
- $this->parseData(
- substr($html, $cursor)
- )
- );
- if ($maintain_line_numbers) $token->rawPosition($current_line, $current_col);
+ HTMLPurifier_Token_Text(
+ '<' .
+ $this->parseData(
+ substr($html, $cursor)
+ )
+ );
+ if ($maintain_line_numbers) {
+ $token->rawPosition($current_line, $current_col);
+ }
// no cursor scroll? Hmm...
$array[] = $token;
break;
@@ -319,8 +345,14 @@ class HTMLPurifier_Lexer_DirectLex extends HTMLPurifier_Lexer
/**
* PHP 5.0.x compatible substr_count that implements offset and length
+ * @param string $haystack
+ * @param string $needle
+ * @param int $offset
+ * @param int $length
+ * @return int
*/
- protected function substrCount($haystack, $needle, $offset, $length) {
+ protected function substrCount($haystack, $needle, $offset, $length)
+ {
static $oldVersion;
if ($oldVersion === null) {
$oldVersion = version_compare(PHP_VERSION, '5.1', '<');
@@ -336,13 +368,18 @@ class HTMLPurifier_Lexer_DirectLex extends HTMLPurifier_Lexer
/**
* Takes the inside of an HTML tag and makes an assoc array of attributes.
*
- * @param $string Inside of tag excluding name.
- * @returns Assoc array of attributes.
+ * @param string $string Inside of tag excluding name.
+ * @param HTMLPurifier_Config $config
+ * @param HTMLPurifier_Context $context
+ * @return array Assoc array of attributes.
*/
- public function parseAttributeString($string, $config, $context) {
- $string = (string) $string; // quick typecast
+ public function parseAttributeString($string, $config, $context)
+ {
+ $string = (string)$string; // quick typecast
- if ($string == '') return array(); // no attributes
+ if ($string == '') {
+ return array();
+ } // no attributes
$e = false;
if ($config->get('Core.CollectErrors')) {
@@ -361,46 +398,55 @@ class HTMLPurifier_Lexer_DirectLex extends HTMLPurifier_Lexer
list($key, $quoted_value) = explode('=', $string);
$quoted_value = trim($quoted_value);
if (!$key) {
- if ($e) $e->send(E_ERROR, 'Lexer: Missing attribute key');
+ if ($e) {
+ $e->send(E_ERROR, 'Lexer: Missing attribute key');
+ }
return array();
}
- if (!$quoted_value) return array($key => '');
+ if (!$quoted_value) {
+ return array($key => '');
+ }
$first_char = @$quoted_value[0];
- $last_char = @$quoted_value[strlen($quoted_value)-1];
+ $last_char = @$quoted_value[strlen($quoted_value) - 1];
$same_quote = ($first_char == $last_char);
$open_quote = ($first_char == '"' || $first_char == "'");
- if ( $same_quote && $open_quote) {
+ if ($same_quote && $open_quote) {
// well behaved
$value = substr($quoted_value, 1, strlen($quoted_value) - 2);
} else {
// not well behaved
if ($open_quote) {
- if ($e) $e->send(E_ERROR, 'Lexer: Missing end quote');
+ if ($e) {
+ $e->send(E_ERROR, 'Lexer: Missing end quote');
+ }
$value = substr($quoted_value, 1);
} else {
$value = $quoted_value;
}
}
- if ($value === false) $value = '';
+ if ($value === false) {
+ $value = '';
+ }
return array($key => $this->parseData($value));
}
// setup loop environment
- $array = array(); // return assoc array of attributes
+ $array = array(); // return assoc array of attributes
$cursor = 0; // current position in string (moves forward)
- $size = strlen($string); // size of the string (stays the same)
+ $size = strlen($string); // size of the string (stays the same)
// if we have unquoted attributes, the parser expects a terminating
// space, so let's guarantee that there's always a terminating space.
$string .= ' ';
- while(true) {
-
- if ($cursor >= $size) {
- break;
+ $old_cursor = -1;
+ while ($cursor < $size) {
+ if ($old_cursor >= $cursor) {
+ throw new Exception("Infinite loop detected");
}
+ $old_cursor = $cursor;
$cursor += ($value = strspn($string, $this->_whitespace, $cursor));
// grab the key
@@ -415,8 +461,10 @@ class HTMLPurifier_Lexer_DirectLex extends HTMLPurifier_Lexer
$key = substr($string, $key_begin, $key_end - $key_begin);
if (!$key) {
- if ($e) $e->send(E_ERROR, 'Lexer: Missing attribute key');
- $cursor += strcspn($string, $this->_whitespace, $cursor + 1); // prevent infinite loop
+ if ($e) {
+ $e->send(E_ERROR, 'Lexer: Missing attribute key');
+ }
+ $cursor += 1 + strcspn($string, $this->_whitespace, $cursor + 1); // prevent infinite loop
continue; // empty key
}
@@ -467,24 +515,25 @@ class HTMLPurifier_Lexer_DirectLex extends HTMLPurifier_Lexer
}
$value = substr($string, $value_begin, $value_end - $value_begin);
- if ($value === false) $value = '';
+ if ($value === false) {
+ $value = '';
+ }
$array[$key] = $this->parseData($value);
$cursor++;
-
} else {
// boolattr
if ($key !== '') {
$array[$key] = $key;
} else {
// purely theoretical
- if ($e) $e->send(E_ERROR, 'Lexer: Missing attribute key');
+ if ($e) {
+ $e->send(E_ERROR, 'Lexer: Missing attribute key');
+ }
}
-
}
}
return $array;
}
-
}
// vim: et sw=4 sts=4
diff --git a/library/HTMLPurifier/Lexer/PEARSax3.php b/library/HTMLPurifier/Lexer/PEARSax3.php
deleted file mode 100644
index 1d358c7b6..000000000
--- a/library/HTMLPurifier/Lexer/PEARSax3.php
+++ /dev/null
@@ -1,139 +0,0 @@
-<?php
-
-/**
- * Proof-of-concept lexer that uses the PEAR package XML_HTMLSax3 to parse HTML.
- *
- * PEAR, not suprisingly, also has a SAX parser for HTML. I don't know
- * very much about implementation, but it's fairly well written. However, that
- * abstraction comes at a price: performance. You need to have it installed,
- * and if the API changes, it might break our adapter. Not sure whether or not
- * it's UTF-8 aware, but it has some entity parsing trouble (in all areas,
- * text and attributes).
- *
- * Quite personally, I don't recommend using the PEAR class, and the defaults
- * don't use it. The unit tests do perform the tests on the SAX parser too, but
- * whatever it does for poorly formed HTML is up to it.
- *
- * @todo Generalize so that XML_HTMLSax is also supported.
- *
- * @warning Entity-resolution inside attributes is broken.
- */
-
-class HTMLPurifier_Lexer_PEARSax3 extends HTMLPurifier_Lexer
-{
-
- /**
- * Internal accumulator array for SAX parsers.
- */
- protected $tokens = array();
- protected $last_token_was_empty;
-
- private $parent_handler;
- private $stack = array();
-
- public function tokenizeHTML($string, $config, $context) {
-
- $this->tokens = array();
- $this->last_token_was_empty = false;
-
- $string = $this->normalize($string, $config, $context);
-
- $this->parent_handler = set_error_handler(array($this, 'muteStrictErrorHandler'));
-
- $parser = new XML_HTMLSax3();
- $parser->set_object($this);
- $parser->set_element_handler('openHandler','closeHandler');
- $parser->set_data_handler('dataHandler');
- $parser->set_escape_handler('escapeHandler');
-
- // doesn't seem to work correctly for attributes
- $parser->set_option('XML_OPTION_ENTITIES_PARSED', 1);
-
- $parser->parse($string);
-
- restore_error_handler();
-
- return $this->tokens;
-
- }
-
- /**
- * Open tag event handler, interface is defined by PEAR package.
- */
- public function openHandler(&$parser, $name, $attrs, $closed) {
- // entities are not resolved in attrs
- foreach ($attrs as $key => $attr) {
- $attrs[$key] = $this->parseData($attr);
- }
- if ($closed) {
- $this->tokens[] = new HTMLPurifier_Token_Empty($name, $attrs);
- $this->last_token_was_empty = true;
- } else {
- $this->tokens[] = new HTMLPurifier_Token_Start($name, $attrs);
- }
- $this->stack[] = $name;
- return true;
- }
-
- /**
- * Close tag event handler, interface is defined by PEAR package.
- */
- public function closeHandler(&$parser, $name) {
- // HTMLSax3 seems to always send empty tags an extra close tag
- // check and ignore if you see it:
- // [TESTME] to make sure it doesn't overreach
- if ($this->last_token_was_empty) {
- $this->last_token_was_empty = false;
- return true;
- }
- $this->tokens[] = new HTMLPurifier_Token_End($name);
- if (!empty($this->stack)) array_pop($this->stack);
- return true;
- }
-
- /**
- * Data event handler, interface is defined by PEAR package.
- */
- public function dataHandler(&$parser, $data) {
- $this->last_token_was_empty = false;
- $this->tokens[] = new HTMLPurifier_Token_Text($data);
- return true;
- }
-
- /**
- * Escaped text handler, interface is defined by PEAR package.
- */
- public function escapeHandler(&$parser, $data) {
- if (strpos($data, '--') === 0) {
- // remove trailing and leading double-dashes
- $data = substr($data, 2);
- if (strlen($data) >= 2 && substr($data, -2) == "--") {
- $data = substr($data, 0, -2);
- }
- if (isset($this->stack[sizeof($this->stack) - 1]) &&
- $this->stack[sizeof($this->stack) - 1] == "style") {
- $this->tokens[] = new HTMLPurifier_Token_Text($data);
- } else {
- $this->tokens[] = new HTMLPurifier_Token_Comment($data);
- }
- $this->last_token_was_empty = false;
- }
- // CDATA is handled elsewhere, but if it was handled here:
- //if (strpos($data, '[CDATA[') === 0) {
- // $this->tokens[] = new HTMLPurifier_Token_Text(
- // substr($data, 7, strlen($data) - 9) );
- //}
- return true;
- }
-
- /**
- * An error handler that mutes strict errors
- */
- public function muteStrictErrorHandler($errno, $errstr, $errfile=null, $errline=null, $errcontext=null) {
- if ($errno == E_STRICT) return;
- return call_user_func($this->parent_handler, $errno, $errstr, $errfile, $errline, $errcontext);
- }
-
-}
-
-// vim: et sw=4 sts=4
diff --git a/library/HTMLPurifier/Lexer/PH5P.php b/library/HTMLPurifier/Lexer/PH5P.php
index fa1bf973e..a4587e4cd 100644
--- a/library/HTMLPurifier/Lexer/PH5P.php
+++ b/library/HTMLPurifier/Lexer/PH5P.php
@@ -3,16 +3,23 @@
/**
* Experimental HTML5-based parser using Jeroen van der Meer's PH5P library.
* Occupies space in the HTML5 pseudo-namespace, which may cause conflicts.
- *
+ *
* @note
* Recent changes to PHP's DOM extension have resulted in some fatal
* error conditions with the original version of PH5P. Pending changes,
- * this lexer will punt to DirectLex if DOM throughs an exception.
+ * this lexer will punt to DirectLex if DOM throws an exception.
*/
-class HTMLPurifier_Lexer_PH5P extends HTMLPurifier_Lexer_DOMLex {
-
- public function tokenizeHTML($html, $config, $context) {
+class HTMLPurifier_Lexer_PH5P extends HTMLPurifier_Lexer_DOMLex
+{
+ /**
+ * @param string $html
+ * @param HTMLPurifier_Config $config
+ * @param HTMLPurifier_Context $context
+ * @return HTMLPurifier_Token[]
+ */
+ public function tokenizeHTML($html, $config, $context)
+ {
$new_html = $this->normalize($html, $config, $context);
$new_html = $this->wrapHTML($new_html, $config, $context);
try {
@@ -27,40 +34,42 @@ class HTMLPurifier_Lexer_PH5P extends HTMLPurifier_Lexer_DOMLex {
$tokens = array();
$this->tokenizeDOM(
$doc->getElementsByTagName('html')->item(0)-> // <html>
- getElementsByTagName('body')->item(0)-> // <body>
- getElementsByTagName('div')->item(0) // <div>
- , $tokens);
+ getElementsByTagName('body')->item(0)-> // <body>
+ getElementsByTagName('div')->item(0) // <div>
+ ,
+ $tokens
+ );
return $tokens;
}
-
}
/*
-Copyright 2007 Jeroen van der Meer <http://jero.net/>
+Copyright 2007 Jeroen van der Meer <http://jero.net/>
-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:
+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 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.
+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.
*/
-class HTML5 {
+class HTML5
+{
private $data;
private $char;
private $EOF;
@@ -69,91 +78,418 @@ class HTML5 {
private $token;
private $content_model;
private $escape = false;
- private $entities = array('AElig;','AElig','AMP;','AMP','Aacute;','Aacute',
- 'Acirc;','Acirc','Agrave;','Agrave','Alpha;','Aring;','Aring','Atilde;',
- 'Atilde','Auml;','Auml','Beta;','COPY;','COPY','Ccedil;','Ccedil','Chi;',
- 'Dagger;','Delta;','ETH;','ETH','Eacute;','Eacute','Ecirc;','Ecirc','Egrave;',
- 'Egrave','Epsilon;','Eta;','Euml;','Euml','GT;','GT','Gamma;','Iacute;',
- 'Iacute','Icirc;','Icirc','Igrave;','Igrave','Iota;','Iuml;','Iuml','Kappa;',
- 'LT;','LT','Lambda;','Mu;','Ntilde;','Ntilde','Nu;','OElig;','Oacute;',
- 'Oacute','Ocirc;','Ocirc','Ograve;','Ograve','Omega;','Omicron;','Oslash;',
- 'Oslash','Otilde;','Otilde','Ouml;','Ouml','Phi;','Pi;','Prime;','Psi;',
- 'QUOT;','QUOT','REG;','REG','Rho;','Scaron;','Sigma;','THORN;','THORN',
- 'TRADE;','Tau;','Theta;','Uacute;','Uacute','Ucirc;','Ucirc','Ugrave;',
- 'Ugrave','Upsilon;','Uuml;','Uuml','Xi;','Yacute;','Yacute','Yuml;','Zeta;',
- 'aacute;','aacute','acirc;','acirc','acute;','acute','aelig;','aelig',
- 'agrave;','agrave','alefsym;','alpha;','amp;','amp','and;','ang;','apos;',
- 'aring;','aring','asymp;','atilde;','atilde','auml;','auml','bdquo;','beta;',
- 'brvbar;','brvbar','bull;','cap;','ccedil;','ccedil','cedil;','cedil',
- 'cent;','cent','chi;','circ;','clubs;','cong;','copy;','copy','crarr;',
- 'cup;','curren;','curren','dArr;','dagger;','darr;','deg;','deg','delta;',
- 'diams;','divide;','divide','eacute;','eacute','ecirc;','ecirc','egrave;',
- 'egrave','empty;','emsp;','ensp;','epsilon;','equiv;','eta;','eth;','eth',
- 'euml;','euml','euro;','exist;','fnof;','forall;','frac12;','frac12',
- 'frac14;','frac14','frac34;','frac34','frasl;','gamma;','ge;','gt;','gt',
- 'hArr;','harr;','hearts;','hellip;','iacute;','iacute','icirc;','icirc',
- 'iexcl;','iexcl','igrave;','igrave','image;','infin;','int;','iota;',
- 'iquest;','iquest','isin;','iuml;','iuml','kappa;','lArr;','lambda;','lang;',
- 'laquo;','laquo','larr;','lceil;','ldquo;','le;','lfloor;','lowast;','loz;',
- 'lrm;','lsaquo;','lsquo;','lt;','lt','macr;','macr','mdash;','micro;','micro',
- 'middot;','middot','minus;','mu;','nabla;','nbsp;','nbsp','ndash;','ne;',
- 'ni;','not;','not','notin;','nsub;','ntilde;','ntilde','nu;','oacute;',
- 'oacute','ocirc;','ocirc','oelig;','ograve;','ograve','oline;','omega;',
- 'omicron;','oplus;','or;','ordf;','ordf','ordm;','ordm','oslash;','oslash',
- 'otilde;','otilde','otimes;','ouml;','ouml','para;','para','part;','permil;',
- 'perp;','phi;','pi;','piv;','plusmn;','plusmn','pound;','pound','prime;',
- 'prod;','prop;','psi;','quot;','quot','rArr;','radic;','rang;','raquo;',
- 'raquo','rarr;','rceil;','rdquo;','real;','reg;','reg','rfloor;','rho;',
- 'rlm;','rsaquo;','rsquo;','sbquo;','scaron;','sdot;','sect;','sect','shy;',
- 'shy','sigma;','sigmaf;','sim;','spades;','sub;','sube;','sum;','sup1;',
- 'sup1','sup2;','sup2','sup3;','sup3','sup;','supe;','szlig;','szlig','tau;',
- 'there4;','theta;','thetasym;','thinsp;','thorn;','thorn','tilde;','times;',
- 'times','trade;','uArr;','uacute;','uacute','uarr;','ucirc;','ucirc',
- 'ugrave;','ugrave','uml;','uml','upsih;','upsilon;','uuml;','uuml','weierp;',
- 'xi;','yacute;','yacute','yen;','yen','yuml;','yuml','zeta;','zwj;','zwnj;');
-
- const PCDATA = 0;
- const RCDATA = 1;
- const CDATA = 2;
+ private $entities = array(
+ 'AElig;',
+ 'AElig',
+ 'AMP;',
+ 'AMP',
+ 'Aacute;',
+ 'Aacute',
+ 'Acirc;',
+ 'Acirc',
+ 'Agrave;',
+ 'Agrave',
+ 'Alpha;',
+ 'Aring;',
+ 'Aring',
+ 'Atilde;',
+ 'Atilde',
+ 'Auml;',
+ 'Auml',
+ 'Beta;',
+ 'COPY;',
+ 'COPY',
+ 'Ccedil;',
+ 'Ccedil',
+ 'Chi;',
+ 'Dagger;',
+ 'Delta;',
+ 'ETH;',
+ 'ETH',
+ 'Eacute;',
+ 'Eacute',
+ 'Ecirc;',
+ 'Ecirc',
+ 'Egrave;',
+ 'Egrave',
+ 'Epsilon;',
+ 'Eta;',
+ 'Euml;',
+ 'Euml',
+ 'GT;',
+ 'GT',
+ 'Gamma;',
+ 'Iacute;',
+ 'Iacute',
+ 'Icirc;',
+ 'Icirc',
+ 'Igrave;',
+ 'Igrave',
+ 'Iota;',
+ 'Iuml;',
+ 'Iuml',
+ 'Kappa;',
+ 'LT;',
+ 'LT',
+ 'Lambda;',
+ 'Mu;',
+ 'Ntilde;',
+ 'Ntilde',
+ 'Nu;',
+ 'OElig;',
+ 'Oacute;',
+ 'Oacute',
+ 'Ocirc;',
+ 'Ocirc',
+ 'Ograve;',
+ 'Ograve',
+ 'Omega;',
+ 'Omicron;',
+ 'Oslash;',
+ 'Oslash',
+ 'Otilde;',
+ 'Otilde',
+ 'Ouml;',
+ 'Ouml',
+ 'Phi;',
+ 'Pi;',
+ 'Prime;',
+ 'Psi;',
+ 'QUOT;',
+ 'QUOT',
+ 'REG;',
+ 'REG',
+ 'Rho;',
+ 'Scaron;',
+ 'Sigma;',
+ 'THORN;',
+ 'THORN',
+ 'TRADE;',
+ 'Tau;',
+ 'Theta;',
+ 'Uacute;',
+ 'Uacute',
+ 'Ucirc;',
+ 'Ucirc',
+ 'Ugrave;',
+ 'Ugrave',
+ 'Upsilon;',
+ 'Uuml;',
+ 'Uuml',
+ 'Xi;',
+ 'Yacute;',
+ 'Yacute',
+ 'Yuml;',
+ 'Zeta;',
+ 'aacute;',
+ 'aacute',
+ 'acirc;',
+ 'acirc',
+ 'acute;',
+ 'acute',
+ 'aelig;',
+ 'aelig',
+ 'agrave;',
+ 'agrave',
+ 'alefsym;',
+ 'alpha;',
+ 'amp;',
+ 'amp',
+ 'and;',
+ 'ang;',
+ 'apos;',
+ 'aring;',
+ 'aring',
+ 'asymp;',
+ 'atilde;',
+ 'atilde',
+ 'auml;',
+ 'auml',
+ 'bdquo;',
+ 'beta;',
+ 'brvbar;',
+ 'brvbar',
+ 'bull;',
+ 'cap;',
+ 'ccedil;',
+ 'ccedil',
+ 'cedil;',
+ 'cedil',
+ 'cent;',
+ 'cent',
+ 'chi;',
+ 'circ;',
+ 'clubs;',
+ 'cong;',
+ 'copy;',
+ 'copy',
+ 'crarr;',
+ 'cup;',
+ 'curren;',
+ 'curren',
+ 'dArr;',
+ 'dagger;',
+ 'darr;',
+ 'deg;',
+ 'deg',
+ 'delta;',
+ 'diams;',
+ 'divide;',
+ 'divide',
+ 'eacute;',
+ 'eacute',
+ 'ecirc;',
+ 'ecirc',
+ 'egrave;',
+ 'egrave',
+ 'empty;',
+ 'emsp;',
+ 'ensp;',
+ 'epsilon;',
+ 'equiv;',
+ 'eta;',
+ 'eth;',
+ 'eth',
+ 'euml;',
+ 'euml',
+ 'euro;',
+ 'exist;',
+ 'fnof;',
+ 'forall;',
+ 'frac12;',
+ 'frac12',
+ 'frac14;',
+ 'frac14',
+ 'frac34;',
+ 'frac34',
+ 'frasl;',
+ 'gamma;',
+ 'ge;',
+ 'gt;',
+ 'gt',
+ 'hArr;',
+ 'harr;',
+ 'hearts;',
+ 'hellip;',
+ 'iacute;',
+ 'iacute',
+ 'icirc;',
+ 'icirc',
+ 'iexcl;',
+ 'iexcl',
+ 'igrave;',
+ 'igrave',
+ 'image;',
+ 'infin;',
+ 'int;',
+ 'iota;',
+ 'iquest;',
+ 'iquest',
+ 'isin;',
+ 'iuml;',
+ 'iuml',
+ 'kappa;',
+ 'lArr;',
+ 'lambda;',
+ 'lang;',
+ 'laquo;',
+ 'laquo',
+ 'larr;',
+ 'lceil;',
+ 'ldquo;',
+ 'le;',
+ 'lfloor;',
+ 'lowast;',
+ 'loz;',
+ 'lrm;',
+ 'lsaquo;',
+ 'lsquo;',
+ 'lt;',
+ 'lt',
+ 'macr;',
+ 'macr',
+ 'mdash;',
+ 'micro;',
+ 'micro',
+ 'middot;',
+ 'middot',
+ 'minus;',
+ 'mu;',
+ 'nabla;',
+ 'nbsp;',
+ 'nbsp',
+ 'ndash;',
+ 'ne;',
+ 'ni;',
+ 'not;',
+ 'not',
+ 'notin;',
+ 'nsub;',
+ 'ntilde;',
+ 'ntilde',
+ 'nu;',
+ 'oacute;',
+ 'oacute',
+ 'ocirc;',
+ 'ocirc',
+ 'oelig;',
+ 'ograve;',
+ 'ograve',
+ 'oline;',
+ 'omega;',
+ 'omicron;',
+ 'oplus;',
+ 'or;',
+ 'ordf;',
+ 'ordf',
+ 'ordm;',
+ 'ordm',
+ 'oslash;',
+ 'oslash',
+ 'otilde;',
+ 'otilde',
+ 'otimes;',
+ 'ouml;',
+ 'ouml',
+ 'para;',
+ 'para',
+ 'part;',
+ 'permil;',
+ 'perp;',
+ 'phi;',
+ 'pi;',
+ 'piv;',
+ 'plusmn;',
+ 'plusmn',
+ 'pound;',
+ 'pound',
+ 'prime;',
+ 'prod;',
+ 'prop;',
+ 'psi;',
+ 'quot;',
+ 'quot',
+ 'rArr;',
+ 'radic;',
+ 'rang;',
+ 'raquo;',
+ 'raquo',
+ 'rarr;',
+ 'rceil;',
+ 'rdquo;',
+ 'real;',
+ 'reg;',
+ 'reg',
+ 'rfloor;',
+ 'rho;',
+ 'rlm;',
+ 'rsaquo;',
+ 'rsquo;',
+ 'sbquo;',
+ 'scaron;',
+ 'sdot;',
+ 'sect;',
+ 'sect',
+ 'shy;',
+ 'shy',
+ 'sigma;',
+ 'sigmaf;',
+ 'sim;',
+ 'spades;',
+ 'sub;',
+ 'sube;',
+ 'sum;',
+ 'sup1;',
+ 'sup1',
+ 'sup2;',
+ 'sup2',
+ 'sup3;',
+ 'sup3',
+ 'sup;',
+ 'supe;',
+ 'szlig;',
+ 'szlig',
+ 'tau;',
+ 'there4;',
+ 'theta;',
+ 'thetasym;',
+ 'thinsp;',
+ 'thorn;',
+ 'thorn',
+ 'tilde;',
+ 'times;',
+ 'times',
+ 'trade;',
+ 'uArr;',
+ 'uacute;',
+ 'uacute',
+ 'uarr;',
+ 'ucirc;',
+ 'ucirc',
+ 'ugrave;',
+ 'ugrave',
+ 'uml;',
+ 'uml',
+ 'upsih;',
+ 'upsilon;',
+ 'uuml;',
+ 'uuml',
+ 'weierp;',
+ 'xi;',
+ 'yacute;',
+ 'yacute',
+ 'yen;',
+ 'yen',
+ 'yuml;',
+ 'yuml',
+ 'zeta;',
+ 'zwj;',
+ 'zwnj;'
+ );
+
+ const PCDATA = 0;
+ const RCDATA = 1;
+ const CDATA = 2;
const PLAINTEXT = 3;
- const DOCTYPE = 0;
+ const DOCTYPE = 0;
const STARTTAG = 1;
- const ENDTAG = 2;
- const COMMENT = 3;
+ const ENDTAG = 2;
+ const COMMENT = 3;
const CHARACTR = 4;
- const EOF = 5;
-
- public function __construct($data) {
- $data = str_replace("\r\n", "\n", $data);
- $data = str_replace("\r", null, $data);
+ const EOF = 5;
+ public function __construct($data)
+ {
$this->data = $data;
$this->char = -1;
- $this->EOF = strlen($data);
+ $this->EOF = strlen($data);
$this->tree = new HTML5TreeConstructer;
$this->content_model = self::PCDATA;
$this->state = 'data';
- while($this->state !== null) {
- $this->{$this->state.'State'}();
+ while ($this->state !== null) {
+ $this->{$this->state . 'State'}();
}
}
- public function save() {
+ public function save()
+ {
return $this->tree->save();
}
- private function char() {
+ private function char()
+ {
return ($this->char < $this->EOF)
? $this->data[$this->char]
: false;
}
- private function character($s, $l = 0) {
- if($s + $l < $this->EOF) {
- if($l === 0) {
+ private function character($s, $l = 0)
+ {
+ if ($s + $l < $this->EOF) {
+ if ($l === 0) {
return $this->data[$s];
} else {
return substr($this->data, $s, $l);
@@ -161,46 +497,52 @@ class HTML5 {
}
}
- private function characters($char_class, $start) {
- return preg_replace('#^(['.$char_class.']+).*#s', '\\1', substr($this->data, $start));
+ private function characters($char_class, $start)
+ {
+ return preg_replace('#^([' . $char_class . ']+).*#s', '\\1', substr($this->data, $start));
}
- private function dataState() {
+ private function dataState()
+ {
// Consume the next input character
$this->char++;
$char = $this->char();
- if($char === '&' && ($this->content_model === self::PCDATA || $this->content_model === self::RCDATA)) {
+ if ($char === '&' && ($this->content_model === self::PCDATA || $this->content_model === self::RCDATA)) {
/* U+0026 AMPERSAND (&)
When the content model flag is set to one of the PCDATA or RCDATA
states: switch to the entity data state. Otherwise: treat it as per
the "anything else" entry below. */
$this->state = 'entityData';
- } elseif($char === '-') {
+ } elseif ($char === '-') {
/* If the content model flag is set to either the RCDATA state or
the CDATA state, and the escape flag is false, and there are at
least three characters before this one in the input stream, and the
last four characters in the input stream, including this one, are
U+003C LESS-THAN SIGN, U+0021 EXCLAMATION MARK, U+002D HYPHEN-MINUS,
and U+002D HYPHEN-MINUS ("<!--"), then set the escape flag to true. */
- if(($this->content_model === self::RCDATA || $this->content_model ===
- self::CDATA) && $this->escape === false &&
- $this->char >= 3 && $this->character($this->char - 4, 4) === '<!--') {
+ if (($this->content_model === self::RCDATA || $this->content_model ===
+ self::CDATA) && $this->escape === false &&
+ $this->char >= 3 && $this->character($this->char - 4, 4) === '<!--'
+ ) {
$this->escape = true;
}
/* In any case, emit the input character as a character token. Stay
in the data state. */
- $this->emitToken(array(
- 'type' => self::CHARACTR,
- 'data' => $char
- ));
+ $this->emitToken(
+ array(
+ 'type' => self::CHARACTR,
+ 'data' => $char
+ )
+ );
- /* U+003C LESS-THAN SIGN (<) */
- } elseif($char === '<' && ($this->content_model === self::PCDATA ||
- (($this->content_model === self::RCDATA ||
- $this->content_model === self::CDATA) && $this->escape === false))) {
+ /* U+003C LESS-THAN SIGN (<) */
+ } elseif ($char === '<' && ($this->content_model === self::PCDATA ||
+ (($this->content_model === self::RCDATA ||
+ $this->content_model === self::CDATA) && $this->escape === false))
+ ) {
/* When the content model flag is set to the PCDATA state: switch
to the tag open state.
@@ -211,39 +553,44 @@ class HTML5 {
Otherwise: treat it as per the "anything else" entry below. */
$this->state = 'tagOpen';
- /* U+003E GREATER-THAN SIGN (>) */
- } elseif($char === '>') {
+ /* U+003E GREATER-THAN SIGN (>) */
+ } elseif ($char === '>') {
/* If the content model flag is set to either the RCDATA state or
the CDATA state, and the escape flag is true, and the last three
characters in the input stream including this one are U+002D
HYPHEN-MINUS, U+002D HYPHEN-MINUS, U+003E GREATER-THAN SIGN ("-->"),
set the escape flag to false. */
- if(($this->content_model === self::RCDATA ||
- $this->content_model === self::CDATA) && $this->escape === true &&
- $this->character($this->char, 3) === '-->') {
+ if (($this->content_model === self::RCDATA ||
+ $this->content_model === self::CDATA) && $this->escape === true &&
+ $this->character($this->char, 3) === '-->'
+ ) {
$this->escape = false;
}
/* In any case, emit the input character as a character token.
Stay in the data state. */
- $this->emitToken(array(
- 'type' => self::CHARACTR,
- 'data' => $char
- ));
+ $this->emitToken(
+ array(
+ 'type' => self::CHARACTR,
+ 'data' => $char
+ )
+ );
- } elseif($this->char === $this->EOF) {
+ } elseif ($this->char === $this->EOF) {
/* EOF
Emit an end-of-file token. */
$this->EOF();
- } elseif($this->content_model === self::PLAINTEXT) {
+ } elseif ($this->content_model === self::PLAINTEXT) {
/* When the content model flag is set to the PLAINTEXT state
THIS DIFFERS GREATLY FROM THE SPEC: Get the remaining characters of
the text and emit it as a character token. */
- $this->emitToken(array(
- 'type' => self::CHARACTR,
- 'data' => substr($this->data, $this->char)
- ));
+ $this->emitToken(
+ array(
+ 'type' => self::CHARACTR,
+ 'data' => substr($this->data, $this->char)
+ )
+ );
$this->EOF();
@@ -252,37 +599,43 @@ class HTML5 {
THIS DIFFERS GREATLY FROM THE SPEC: Get as many character that
otherwise would also be treated as a character token and emit it
as a single character token. Stay in the data state. */
- $len = strcspn($this->data, '<&', $this->char);
+ $len = strcspn($this->data, '<&', $this->char);
$char = substr($this->data, $this->char, $len);
$this->char += $len - 1;
- $this->emitToken(array(
- 'type' => self::CHARACTR,
- 'data' => $char
- ));
+ $this->emitToken(
+ array(
+ 'type' => self::CHARACTR,
+ 'data' => $char
+ )
+ );
$this->state = 'data';
}
}
- private function entityDataState() {
+ private function entityDataState()
+ {
// Attempt to consume an entity.
$entity = $this->entity();
// If nothing is returned, emit a U+0026 AMPERSAND character token.
// Otherwise, emit the character token that was returned.
$char = (!$entity) ? '&' : $entity;
- $this->emitToken(array(
- 'type' => self::CHARACTR,
- 'data' => $char
- ));
+ $this->emitToken(
+ array(
+ 'type' => self::CHARACTR,
+ 'data' => $char
+ )
+ );
// Finally, switch to the data state.
$this->state = 'data';
}
- private function tagOpenState() {
- switch($this->content_model) {
+ private function tagOpenState()
+ {
+ switch ($this->content_model) {
case self::RCDATA:
case self::CDATA:
/* If the next input character is a U+002F SOLIDUS (/) character,
@@ -290,19 +643,21 @@ class HTML5 {
input character is not a U+002F SOLIDUS (/) character, emit a
U+003C LESS-THAN SIGN character token and switch to the data
state to process the next input character. */
- if($this->character($this->char + 1) === '/') {
+ if ($this->character($this->char + 1) === '/') {
$this->char++;
$this->state = 'closeTagOpen';
} else {
- $this->emitToken(array(
- 'type' => self::CHARACTR,
- 'data' => '<'
- ));
+ $this->emitToken(
+ array(
+ 'type' => self::CHARACTR,
+ 'data' => '<'
+ )
+ );
$this->state = 'data';
}
- break;
+ break;
case self::PCDATA:
// If the content model flag is set to the PCDATA state
@@ -310,42 +665,44 @@ class HTML5 {
$this->char++;
$char = $this->char();
- if($char === '!') {
+ if ($char === '!') {
/* U+0021 EXCLAMATION MARK (!)
Switch to the markup declaration open state. */
$this->state = 'markupDeclarationOpen';
- } elseif($char === '/') {
+ } elseif ($char === '/') {
/* U+002F SOLIDUS (/)
Switch to the close tag open state. */
$this->state = 'closeTagOpen';
- } elseif(preg_match('/^[A-Za-z]$/', $char)) {
+ } elseif (preg_match('/^[A-Za-z]$/', $char)) {
/* U+0041 LATIN LETTER A through to U+005A LATIN LETTER Z
Create a new start tag token, set its tag name to the lowercase
version of the input character (add 0x0020 to the character's code
point), then switch to the tag name state. (Don't emit the token
yet; further details will be filled in before it is emitted.) */
$this->token = array(
- 'name' => strtolower($char),
- 'type' => self::STARTTAG,
- 'attr' => array()
+ 'name' => strtolower($char),
+ 'type' => self::STARTTAG,
+ 'attr' => array()
);
$this->state = 'tagName';
- } elseif($char === '>') {
+ } elseif ($char === '>') {
/* U+003E GREATER-THAN SIGN (>)
Parse error. Emit a U+003C LESS-THAN SIGN character token and a
U+003E GREATER-THAN SIGN character token. Switch to the data state. */
- $this->emitToken(array(
- 'type' => self::CHARACTR,
- 'data' => '<>'
- ));
+ $this->emitToken(
+ array(
+ 'type' => self::CHARACTR,
+ 'data' => '<>'
+ )
+ );
$this->state = 'data';
- } elseif($char === '?') {
+ } elseif ($char === '?') {
/* U+003F QUESTION MARK (?)
Parse error. Switch to the bogus comment state. */
$this->state = 'bogusComment';
@@ -354,25 +711,31 @@ class HTML5 {
/* Anything else
Parse error. Emit a U+003C LESS-THAN SIGN character token and
reconsume the current input character in the data state. */
- $this->emitToken(array(
- 'type' => self::CHARACTR,
- 'data' => '<'
- ));
+ $this->emitToken(
+ array(
+ 'type' => self::CHARACTR,
+ 'data' => '<'
+ )
+ );
$this->char--;
$this->state = 'data';
}
- break;
+ break;
}
}
- private function closeTagOpenState() {
+ private function closeTagOpenState()
+ {
$next_node = strtolower($this->characters('A-Za-z', $this->char + 1));
$the_same = count($this->tree->stack) > 0 && $next_node === end($this->tree->stack)->nodeName;
- if(($this->content_model === self::RCDATA || $this->content_model === self::CDATA) &&
- (!$the_same || ($the_same && (!preg_match('/[\t\n\x0b\x0c >\/]/',
- $this->character($this->char + 1 + strlen($next_node))) || $this->EOF === $this->char)))) {
+ if (($this->content_model === self::RCDATA || $this->content_model === self::CDATA) &&
+ (!$the_same || ($the_same && (!preg_match(
+ '/[\t\n\x0b\x0c >\/]/',
+ $this->character($this->char + 1 + strlen($next_node))
+ ) || $this->EOF === $this->char)))
+ ) {
/* If the content model flag is set to the RCDATA or CDATA states then
examine the next few characters. If they do not match the tag name of
the last start tag token emitted (case insensitively), or if they do but
@@ -388,10 +751,12 @@ class HTML5 {
...then there is a parse error. Emit a U+003C LESS-THAN SIGN character
token, a U+002F SOLIDUS character token, and switch to the data state
to process the next input character. */
- $this->emitToken(array(
- 'type' => self::CHARACTR,
- 'data' => '</'
- ));
+ $this->emitToken(
+ array(
+ 'type' => self::CHARACTR,
+ 'data' => '</'
+ )
+ );
$this->state = 'data';
@@ -402,32 +767,34 @@ class HTML5 {
$this->char++;
$char = $this->char();
- if(preg_match('/^[A-Za-z]$/', $char)) {
+ if (preg_match('/^[A-Za-z]$/', $char)) {
/* U+0041 LATIN LETTER A through to U+005A LATIN LETTER Z
Create a new end tag token, set its tag name to the lowercase version
of the input character (add 0x0020 to the character's code point), then
switch to the tag name state. (Don't emit the token yet; further details
will be filled in before it is emitted.) */
$this->token = array(
- 'name' => strtolower($char),
- 'type' => self::ENDTAG
+ 'name' => strtolower($char),
+ 'type' => self::ENDTAG
);
$this->state = 'tagName';
- } elseif($char === '>') {
+ } elseif ($char === '>') {
/* U+003E GREATER-THAN SIGN (>)
Parse error. Switch to the data state. */
$this->state = 'data';
- } elseif($this->char === $this->EOF) {
+ } elseif ($this->char === $this->EOF) {
/* EOF
Parse error. Emit a U+003C LESS-THAN SIGN character token and a U+002F
SOLIDUS character token. Reconsume the EOF character in the data state. */
- $this->emitToken(array(
- 'type' => self::CHARACTR,
- 'data' => '</'
- ));
+ $this->emitToken(
+ array(
+ 'type' => self::CHARACTR,
+ 'data' => '</'
+ )
+ );
$this->char--;
$this->state = 'data';
@@ -439,12 +806,13 @@ class HTML5 {
}
}
- private function tagNameState() {
+ private function tagNameState()
+ {
// Consume the next input character:
$this->char++;
$char = $this->character($this->char);
- if(preg_match('/^[\t\n\x0b\x0c ]$/', $char)) {
+ if (preg_match('/^[\t\n\x0b\x0c ]$/', $char)) {
/* U+0009 CHARACTER TABULATION
U+000A LINE FEED (LF)
U+000B LINE TABULATION
@@ -453,13 +821,13 @@ class HTML5 {
Switch to the before attribute name state. */
$this->state = 'beforeAttributeName';
- } elseif($char === '>') {
+ } elseif ($char === '>') {
/* U+003E GREATER-THAN SIGN (>)
Emit the current tag token. Switch to the data state. */
$this->emitToken($this->token);
$this->state = 'data';
- } elseif($this->char === $this->EOF) {
+ } elseif ($this->char === $this->EOF) {
/* EOF
Parse error. Emit the current tag token. Reconsume the EOF
character in the data state. */
@@ -468,7 +836,7 @@ class HTML5 {
$this->char--;
$this->state = 'data';
- } elseif($char === '/') {
+ } elseif ($char === '/') {
/* U+002F SOLIDUS (/)
Parse error unless this is a permitted slash. Switch to the before
attribute name state. */
@@ -483,12 +851,13 @@ class HTML5 {
}
}
- private function beforeAttributeNameState() {
+ private function beforeAttributeNameState()
+ {
// Consume the next input character:
$this->char++;
$char = $this->character($this->char);
- if(preg_match('/^[\t\n\x0b\x0c ]$/', $char)) {
+ if (preg_match('/^[\t\n\x0b\x0c ]$/', $char)) {
/* U+0009 CHARACTER TABULATION
U+000A LINE FEED (LF)
U+000B LINE TABULATION
@@ -497,19 +866,19 @@ class HTML5 {
Stay in the before attribute name state. */
$this->state = 'beforeAttributeName';
- } elseif($char === '>') {
+ } elseif ($char === '>') {
/* U+003E GREATER-THAN SIGN (>)
Emit the current tag token. Switch to the data state. */
$this->emitToken($this->token);
$this->state = 'data';
- } elseif($char === '/') {
+ } elseif ($char === '/') {
/* U+002F SOLIDUS (/)
Parse error unless this is a permitted slash. Stay in the before
attribute name state. */
$this->state = 'beforeAttributeName';
- } elseif($this->char === $this->EOF) {
+ } elseif ($this->char === $this->EOF) {
/* EOF
Parse error. Emit the current tag token. Reconsume the EOF
character in the data state. */
@@ -524,7 +893,7 @@ class HTML5 {
name to the current input character, and its value to the empty string.
Switch to the attribute name state. */
$this->token['attr'][] = array(
- 'name' => strtolower($char),
+ 'name' => strtolower($char),
'value' => null
);
@@ -532,12 +901,13 @@ class HTML5 {
}
}
- private function attributeNameState() {
+ private function attributeNameState()
+ {
// Consume the next input character:
$this->char++;
$char = $this->character($this->char);
- if(preg_match('/^[\t\n\x0b\x0c ]$/', $char)) {
+ if (preg_match('/^[\t\n\x0b\x0c ]$/', $char)) {
/* U+0009 CHARACTER TABULATION
U+000A LINE FEED (LF)
U+000B LINE TABULATION
@@ -546,24 +916,24 @@ class HTML5 {
Stay in the before attribute name state. */
$this->state = 'afterAttributeName';
- } elseif($char === '=') {
+ } elseif ($char === '=') {
/* U+003D EQUALS SIGN (=)
Switch to the before attribute value state. */
$this->state = 'beforeAttributeValue';
- } elseif($char === '>') {
+ } elseif ($char === '>') {
/* U+003E GREATER-THAN SIGN (>)
Emit the current tag token. Switch to the data state. */
$this->emitToken($this->token);
$this->state = 'data';
- } elseif($char === '/' && $this->character($this->char + 1) !== '>') {
+ } elseif ($char === '/' && $this->character($this->char + 1) !== '>') {
/* U+002F SOLIDUS (/)
Parse error unless this is a permitted slash. Switch to the before
attribute name state. */
$this->state = 'beforeAttributeName';
- } elseif($this->char === $this->EOF) {
+ } elseif ($this->char === $this->EOF) {
/* EOF
Parse error. Emit the current tag token. Reconsume the EOF
character in the data state. */
@@ -583,12 +953,13 @@ class HTML5 {
}
}
- private function afterAttributeNameState() {
+ private function afterAttributeNameState()
+ {
// Consume the next input character:
$this->char++;
$char = $this->character($this->char);
- if(preg_match('/^[\t\n\x0b\x0c ]$/', $char)) {
+ if (preg_match('/^[\t\n\x0b\x0c ]$/', $char)) {
/* U+0009 CHARACTER TABULATION
U+000A LINE FEED (LF)
U+000B LINE TABULATION
@@ -597,24 +968,24 @@ class HTML5 {
Stay in the after attribute name state. */
$this->state = 'afterAttributeName';
- } elseif($char === '=') {
+ } elseif ($char === '=') {
/* U+003D EQUALS SIGN (=)
Switch to the before attribute value state. */
$this->state = 'beforeAttributeValue';
- } elseif($char === '>') {
+ } elseif ($char === '>') {
/* U+003E GREATER-THAN SIGN (>)
Emit the current tag token. Switch to the data state. */
$this->emitToken($this->token);
$this->state = 'data';
- } elseif($char === '/' && $this->character($this->char + 1) !== '>') {
+ } elseif ($char === '/' && $this->character($this->char + 1) !== '>') {
/* U+002F SOLIDUS (/)
Parse error unless this is a permitted slash. Switch to the
before attribute name state. */
$this->state = 'beforeAttributeName';
- } elseif($this->char === $this->EOF) {
+ } elseif ($this->char === $this->EOF) {
/* EOF
Parse error. Emit the current tag token. Reconsume the EOF
character in the data state. */
@@ -629,7 +1000,7 @@ class HTML5 {
name to the current input character, and its value to the empty string.
Switch to the attribute name state. */
$this->token['attr'][] = array(
- 'name' => strtolower($char),
+ 'name' => strtolower($char),
'value' => null
);
@@ -637,12 +1008,13 @@ class HTML5 {
}
}
- private function beforeAttributeValueState() {
+ private function beforeAttributeValueState()
+ {
// Consume the next input character:
$this->char++;
$char = $this->character($this->char);
- if(preg_match('/^[\t\n\x0b\x0c ]$/', $char)) {
+ if (preg_match('/^[\t\n\x0b\x0c ]$/', $char)) {
/* U+0009 CHARACTER TABULATION
U+000A LINE FEED (LF)
U+000B LINE TABULATION
@@ -651,24 +1023,24 @@ class HTML5 {
Stay in the before attribute value state. */
$this->state = 'beforeAttributeValue';
- } elseif($char === '"') {
+ } elseif ($char === '"') {
/* U+0022 QUOTATION MARK (")
Switch to the attribute value (double-quoted) state. */
$this->state = 'attributeValueDoubleQuoted';
- } elseif($char === '&') {
+ } elseif ($char === '&') {
/* U+0026 AMPERSAND (&)
Switch to the attribute value (unquoted) state and reconsume
this input character. */
$this->char--;
$this->state = 'attributeValueUnquoted';
- } elseif($char === '\'') {
+ } elseif ($char === '\'') {
/* U+0027 APOSTROPHE (')
Switch to the attribute value (single-quoted) state. */
$this->state = 'attributeValueSingleQuoted';
- } elseif($char === '>') {
+ } elseif ($char === '>') {
/* U+003E GREATER-THAN SIGN (>)
Emit the current tag token. Switch to the data state. */
$this->emitToken($this->token);
@@ -685,22 +1057,23 @@ class HTML5 {
}
}
- private function attributeValueDoubleQuotedState() {
+ private function attributeValueDoubleQuotedState()
+ {
// Consume the next input character:
$this->char++;
$char = $this->character($this->char);
- if($char === '"') {
+ if ($char === '"') {
/* U+0022 QUOTATION MARK (")
Switch to the before attribute name state. */
$this->state = 'beforeAttributeName';
- } elseif($char === '&') {
+ } elseif ($char === '&') {
/* U+0026 AMPERSAND (&)
Switch to the entity in attribute value state. */
$this->entityInAttributeValueState('double');
- } elseif($this->char === $this->EOF) {
+ } elseif ($this->char === $this->EOF) {
/* EOF
Parse error. Emit the current tag token. Reconsume the character
in the data state. */
@@ -720,22 +1093,23 @@ class HTML5 {
}
}
- private function attributeValueSingleQuotedState() {
+ private function attributeValueSingleQuotedState()
+ {
// Consume the next input character:
$this->char++;
$char = $this->character($this->char);
- if($char === '\'') {
+ if ($char === '\'') {
/* U+0022 QUOTATION MARK (')
Switch to the before attribute name state. */
$this->state = 'beforeAttributeName';
- } elseif($char === '&') {
+ } elseif ($char === '&') {
/* U+0026 AMPERSAND (&)
Switch to the entity in attribute value state. */
$this->entityInAttributeValueState('single');
- } elseif($this->char === $this->EOF) {
+ } elseif ($this->char === $this->EOF) {
/* EOF
Parse error. Emit the current tag token. Reconsume the character
in the data state. */
@@ -755,12 +1129,13 @@ class HTML5 {
}
}
- private function attributeValueUnquotedState() {
+ private function attributeValueUnquotedState()
+ {
// Consume the next input character:
$this->char++;
$char = $this->character($this->char);
- if(preg_match('/^[\t\n\x0b\x0c ]$/', $char)) {
+ if (preg_match('/^[\t\n\x0b\x0c ]$/', $char)) {
/* U+0009 CHARACTER TABULATION
U+000A LINE FEED (LF)
U+000B LINE TABULATION
@@ -769,12 +1144,12 @@ class HTML5 {
Switch to the before attribute name state. */
$this->state = 'beforeAttributeName';
- } elseif($char === '&') {
+ } elseif ($char === '&') {
/* U+0026 AMPERSAND (&)
Switch to the entity in attribute value state. */
$this->entityInAttributeValueState();
- } elseif($char === '>') {
+ } elseif ($char === '>') {
/* U+003E GREATER-THAN SIGN (>)
Emit the current tag token. Switch to the data state. */
$this->emitToken($this->token);
@@ -791,7 +1166,8 @@ class HTML5 {
}
}
- private function entityInAttributeValueState() {
+ private function entityInAttributeValueState()
+ {
// Attempt to consume an entity.
$entity = $this->entity();
@@ -806,7 +1182,8 @@ class HTML5 {
$this->token['attr'][$last]['value'] .= $char;
}
- private function bogusCommentState() {
+ private function bogusCommentState()
+ {
/* Consume every character up to the first U+003E GREATER-THAN SIGN
character (>) or the end of the file (EOF), whichever comes first. Emit
a comment token whose data is the concatenation of all the characters
@@ -816,10 +1193,12 @@ class HTML5 {
end of the file otherwise. (If the comment was started by the end of
the file (EOF), the token is empty.) */
$data = $this->characters('^>', $this->char);
- $this->emitToken(array(
- 'data' => $data,
- 'type' => self::COMMENT
- ));
+ $this->emitToken(
+ array(
+ 'data' => $data,
+ 'type' => self::COMMENT
+ )
+ );
$this->char += strlen($data);
@@ -827,16 +1206,17 @@ class HTML5 {
$this->state = 'data';
/* If the end of the file was reached, reconsume the EOF character. */
- if($this->char === $this->EOF) {
+ if ($this->char === $this->EOF) {
$this->char = $this->EOF - 1;
}
}
- private function markupDeclarationOpenState() {
+ private function markupDeclarationOpenState()
+ {
/* If the next two characters are both U+002D HYPHEN-MINUS (-)
characters, consume those two characters, create a comment token whose
data is the empty string, and switch to the comment state. */
- if($this->character($this->char + 1, 2) === '--') {
+ if ($this->character($this->char + 1, 2) === '--') {
$this->char += 2;
$this->state = 'comment';
$this->token = array(
@@ -844,41 +1224,42 @@ class HTML5 {
'type' => self::COMMENT
);
- /* Otherwise if the next seven chacacters are a case-insensitive match
- for the word "DOCTYPE", then consume those characters and switch to the
- DOCTYPE state. */
- } elseif(strtolower($this->character($this->char + 1, 7)) === 'doctype') {
+ /* Otherwise if the next seven chacacters are a case-insensitive match
+ for the word "DOCTYPE", then consume those characters and switch to the
+ DOCTYPE state. */
+ } elseif (strtolower($this->character($this->char + 1, 7)) === 'doctype') {
$this->char += 7;
$this->state = 'doctype';
- /* Otherwise, is is a parse error. Switch to the bogus comment state.
- The next character that is consumed, if any, is the first character
- that will be in the comment. */
+ /* Otherwise, is is a parse error. Switch to the bogus comment state.
+ The next character that is consumed, if any, is the first character
+ that will be in the comment. */
} else {
$this->char++;
$this->state = 'bogusComment';
}
}
- private function commentState() {
+ private function commentState()
+ {
/* Consume the next input character: */
$this->char++;
$char = $this->char();
/* U+002D HYPHEN-MINUS (-) */
- if($char === '-') {
+ if ($char === '-') {
/* Switch to the comment dash state */
$this->state = 'commentDash';
- /* EOF */
- } elseif($this->char === $this->EOF) {
+ /* EOF */
+ } elseif ($this->char === $this->EOF) {
/* Parse error. Emit the comment token. Reconsume the EOF character
in the data state. */
$this->emitToken($this->token);
$this->char--;
$this->state = 'data';
- /* Anything else */
+ /* Anything else */
} else {
/* Append the input character to the comment token's data. Stay in
the comment state. */
@@ -886,62 +1267,65 @@ class HTML5 {
}
}
- private function commentDashState() {
+ private function commentDashState()
+ {
/* Consume the next input character: */
$this->char++;
$char = $this->char();
/* U+002D HYPHEN-MINUS (-) */
- if($char === '-') {
+ if ($char === '-') {
/* Switch to the comment end state */
$this->state = 'commentEnd';
- /* EOF */
- } elseif($this->char === $this->EOF) {
+ /* EOF */
+ } elseif ($this->char === $this->EOF) {
/* Parse error. Emit the comment token. Reconsume the EOF character
in the data state. */
$this->emitToken($this->token);
$this->char--;
$this->state = 'data';
- /* Anything else */
+ /* Anything else */
} else {
/* Append a U+002D HYPHEN-MINUS (-) character and the input
character to the comment token's data. Switch to the comment state. */
- $this->token['data'] .= '-'.$char;
+ $this->token['data'] .= '-' . $char;
$this->state = 'comment';
}
}
- private function commentEndState() {
+ private function commentEndState()
+ {
/* Consume the next input character: */
$this->char++;
$char = $this->char();
- if($char === '>') {
+ if ($char === '>') {
$this->emitToken($this->token);
$this->state = 'data';
- } elseif($char === '-') {
+ } elseif ($char === '-') {
$this->token['data'] .= '-';
- } elseif($this->char === $this->EOF) {
+ } elseif ($this->char === $this->EOF) {
$this->emitToken($this->token);
$this->char--;
$this->state = 'data';
} else {
- $this->token['data'] .= '--'.$char;
+ $this->token['data'] .= '--' . $char;
$this->state = 'comment';
}
}
- private function doctypeState() {
+ private function doctypeState()
+ {
/* Consume the next input character: */
$this->char++;
$char = $this->char();
- if(preg_match('/^[\t\n\x0b\x0c ]$/', $char)) {
+ if (preg_match('/^[\t\n\x0b\x0c ]$/', $char)) {
$this->state = 'beforeDoctypeName';
} else {
@@ -950,15 +1334,16 @@ class HTML5 {
}
}
- private function beforeDoctypeNameState() {
+ private function beforeDoctypeNameState()
+ {
/* Consume the next input character: */
$this->char++;
$char = $this->char();
- if(preg_match('/^[\t\n\x0b\x0c ]$/', $char)) {
+ if (preg_match('/^[\t\n\x0b\x0c ]$/', $char)) {
// Stay in the before DOCTYPE name state.
- } elseif(preg_match('/^[a-z]$/', $char)) {
+ } elseif (preg_match('/^[a-z]$/', $char)) {
$this->token = array(
'name' => strtoupper($char),
'type' => self::DOCTYPE,
@@ -967,21 +1352,25 @@ class HTML5 {
$this->state = 'doctypeName';
- } elseif($char === '>') {
- $this->emitToken(array(
- 'name' => null,
- 'type' => self::DOCTYPE,
- 'error' => true
- ));
+ } elseif ($char === '>') {
+ $this->emitToken(
+ array(
+ 'name' => null,
+ 'type' => self::DOCTYPE,
+ 'error' => true
+ )
+ );
$this->state = 'data';
- } elseif($this->char === $this->EOF) {
- $this->emitToken(array(
- 'name' => null,
- 'type' => self::DOCTYPE,
- 'error' => true
- ));
+ } elseif ($this->char === $this->EOF) {
+ $this->emitToken(
+ array(
+ 'name' => null,
+ 'type' => self::DOCTYPE,
+ 'error' => true
+ )
+ );
$this->char--;
$this->state = 'data';
@@ -997,22 +1386,23 @@ class HTML5 {
}
}
- private function doctypeNameState() {
+ private function doctypeNameState()
+ {
/* Consume the next input character: */
$this->char++;
$char = $this->char();
- if(preg_match('/^[\t\n\x0b\x0c ]$/', $char)) {
+ if (preg_match('/^[\t\n\x0b\x0c ]$/', $char)) {
$this->state = 'AfterDoctypeName';
- } elseif($char === '>') {
+ } elseif ($char === '>') {
$this->emitToken($this->token);
$this->state = 'data';
- } elseif(preg_match('/^[a-z]$/', $char)) {
+ } elseif (preg_match('/^[a-z]$/', $char)) {
$this->token['name'] .= strtoupper($char);
- } elseif($this->char === $this->EOF) {
+ } elseif ($this->char === $this->EOF) {
$this->emitToken($this->token);
$this->char--;
$this->state = 'data';
@@ -1026,19 +1416,20 @@ class HTML5 {
: true;
}
- private function afterDoctypeNameState() {
+ private function afterDoctypeNameState()
+ {
/* Consume the next input character: */
$this->char++;
$char = $this->char();
- if(preg_match('/^[\t\n\x0b\x0c ]$/', $char)) {
+ if (preg_match('/^[\t\n\x0b\x0c ]$/', $char)) {
// Stay in the DOCTYPE name state.
- } elseif($char === '>') {
+ } elseif ($char === '>') {
$this->emitToken($this->token);
$this->state = 'data';
- } elseif($this->char === $this->EOF) {
+ } elseif ($this->char === $this->EOF) {
$this->emitToken($this->token);
$this->char--;
$this->state = 'data';
@@ -1049,16 +1440,17 @@ class HTML5 {
}
}
- private function bogusDoctypeState() {
+ private function bogusDoctypeState()
+ {
/* Consume the next input character: */
$this->char++;
$char = $this->char();
- if($char === '>') {
+ if ($char === '>') {
$this->emitToken($this->token);
$this->state = 'data';
- } elseif($this->char === $this->EOF) {
+ } elseif ($this->char === $this->EOF) {
$this->emitToken($this->token);
$this->char--;
$this->state = 'data';
@@ -1068,22 +1460,23 @@ class HTML5 {
}
}
- private function entity() {
+ private function entity()
+ {
$start = $this->char;
// This section defines how to consume an entity. This definition is
// used when parsing entities in text and in attributes.
// The behaviour depends on the identity of the next character (the
- // one immediately after the U+0026 AMPERSAND character):
+ // one immediately after the U+0026 AMPERSAND character):
- switch($this->character($this->char + 1)) {
+ switch ($this->character($this->char + 1)) {
// U+0023 NUMBER SIGN (#)
case '#':
// The behaviour further depends on the character after the
// U+0023 NUMBER SIGN:
- switch($this->character($this->char + 1)) {
+ switch ($this->character($this->char + 1)) {
// U+0078 LATIN SMALL LETTER X
// U+0058 LATIN CAPITAL LETTER X
case 'x':
@@ -1096,7 +1489,7 @@ class HTML5 {
// words, 0-9, A-F, a-f).
$char = 1;
$char_class = '0-9A-Fa-f';
- break;
+ break;
// Anything else
default:
@@ -1105,7 +1498,7 @@ class HTML5 {
// NINE (i.e. just 0-9).
$char = 0;
$char_class = '0-9';
- break;
+ break;
}
// Consume as many characters as match the range of characters
@@ -1116,7 +1509,7 @@ class HTML5 {
$cond = strlen($e_name) > 0;
// The rest of the parsing happens bellow.
- break;
+ break;
// Anything else
default:
@@ -1126,12 +1519,12 @@ class HTML5 {
$e_name = $this->characters('0-9A-Za-z;', $this->char + 1);
$len = strlen($e_name);
- for($c = 1; $c <= $len; $c++) {
+ for ($c = 1; $c <= $len; $c++) {
$id = substr($e_name, 0, $c);
$this->char++;
- if(in_array($id, $this->entities)) {
- if ($e_name[$c-1] !== ';') {
+ if (in_array($id, $this->entities)) {
+ if ($e_name[$c - 1] !== ';') {
if ($c < $len && $e_name[$c] == ';') {
$this->char++; // consume extra semicolon
}
@@ -1143,10 +1536,10 @@ class HTML5 {
$cond = isset($entity);
// The rest of the parsing happens bellow.
- break;
+ break;
}
- if(!$cond) {
+ if (!$cond) {
// If no match can be made, then this is a parse error. No
// characters are consumed, and nothing is returned.
$this->char = $start;
@@ -1155,81 +1548,157 @@ class HTML5 {
// Return a character token for the character corresponding to the
// entity name (as given by the second column of the entities table).
- return html_entity_decode('&'.$entity.';', ENT_QUOTES, 'UTF-8');
+ return html_entity_decode('&' . $entity . ';', ENT_QUOTES, 'UTF-8');
}
- private function emitToken($token) {
+ private function emitToken($token)
+ {
$emit = $this->tree->emitToken($token);
- if(is_int($emit)) {
+ if (is_int($emit)) {
$this->content_model = $emit;
- } elseif($token['type'] === self::ENDTAG) {
+ } elseif ($token['type'] === self::ENDTAG) {
$this->content_model = self::PCDATA;
}
}
- private function EOF() {
+ private function EOF()
+ {
$this->state = null;
- $this->tree->emitToken(array(
- 'type' => self::EOF
- ));
+ $this->tree->emitToken(
+ array(
+ 'type' => self::EOF
+ )
+ );
}
}
-class HTML5TreeConstructer {
+class HTML5TreeConstructer
+{
public $stack = array();
private $phase;
private $mode;
private $dom;
private $foster_parent = null;
- private $a_formatting = array();
+ private $a_formatting = array();
private $head_pointer = null;
private $form_pointer = null;
- private $scoping = array('button','caption','html','marquee','object','table','td','th');
- private $formatting = array('a','b','big','em','font','i','nobr','s','small','strike','strong','tt','u');
- private $special = array('address','area','base','basefont','bgsound',
- 'blockquote','body','br','center','col','colgroup','dd','dir','div','dl',
- 'dt','embed','fieldset','form','frame','frameset','h1','h2','h3','h4','h5',
- 'h6','head','hr','iframe','image','img','input','isindex','li','link',
- 'listing','menu','meta','noembed','noframes','noscript','ol','optgroup',
- 'option','p','param','plaintext','pre','script','select','spacer','style',
- 'tbody','textarea','tfoot','thead','title','tr','ul','wbr');
+ private $scoping = array('button', 'caption', 'html', 'marquee', 'object', 'table', 'td', 'th');
+ private $formatting = array(
+ 'a',
+ 'b',
+ 'big',
+ 'em',
+ 'font',
+ 'i',
+ 'nobr',
+ 's',
+ 'small',
+ 'strike',
+ 'strong',
+ 'tt',
+ 'u'
+ );
+ private $special = array(
+ 'address',
+ 'area',
+ 'base',
+ 'basefont',
+ 'bgsound',
+ 'blockquote',
+ 'body',
+ 'br',
+ 'center',
+ 'col',
+ 'colgroup',
+ 'dd',
+ 'dir',
+ 'div',
+ 'dl',
+ 'dt',
+ 'embed',
+ 'fieldset',
+ 'form',
+ 'frame',
+ 'frameset',
+ 'h1',
+ 'h2',
+ 'h3',
+ 'h4',
+ 'h5',
+ 'h6',
+ 'head',
+ 'hr',
+ 'iframe',
+ 'image',
+ 'img',
+ 'input',
+ 'isindex',
+ 'li',
+ 'link',
+ 'listing',
+ 'menu',
+ 'meta',
+ 'noembed',
+ 'noframes',
+ 'noscript',
+ 'ol',
+ 'optgroup',
+ 'option',
+ 'p',
+ 'param',
+ 'plaintext',
+ 'pre',
+ 'script',
+ 'select',
+ 'spacer',
+ 'style',
+ 'tbody',
+ 'textarea',
+ 'tfoot',
+ 'thead',
+ 'title',
+ 'tr',
+ 'ul',
+ 'wbr'
+ );
// The different phases.
const INIT_PHASE = 0;
const ROOT_PHASE = 1;
const MAIN_PHASE = 2;
- const END_PHASE = 3;
+ const END_PHASE = 3;
// The different insertion modes for the main phase.
const BEFOR_HEAD = 0;
- const IN_HEAD = 1;
+ const IN_HEAD = 1;
const AFTER_HEAD = 2;
- const IN_BODY = 3;
- const IN_TABLE = 4;
+ const IN_BODY = 3;
+ const IN_TABLE = 4;
const IN_CAPTION = 5;
- const IN_CGROUP = 6;
- const IN_TBODY = 7;
- const IN_ROW = 8;
- const IN_CELL = 9;
- const IN_SELECT = 10;
+ const IN_CGROUP = 6;
+ const IN_TBODY = 7;
+ const IN_ROW = 8;
+ const IN_CELL = 9;
+ const IN_SELECT = 10;
const AFTER_BODY = 11;
- const IN_FRAME = 12;
+ const IN_FRAME = 12;
const AFTR_FRAME = 13;
// The different types of elements.
- const SPECIAL = 0;
- const SCOPING = 1;
+ const SPECIAL = 0;
+ const SCOPING = 1;
const FORMATTING = 2;
- const PHRASING = 3;
+ const PHRASING = 3;
- const MARKER = 0;
+ const MARKER = 0;
- public function __construct() {
+ public function __construct()
+ {
$this->phase = self::INIT_PHASE;
$this->mode = self::BEFOR_HEAD;
$this->dom = new DOMDocument;
@@ -1241,16 +1710,26 @@ class HTML5TreeConstructer {
}
// Process tag tokens
- public function emitToken($token) {
- switch($this->phase) {
- case self::INIT_PHASE: return $this->initPhase($token); break;
- case self::ROOT_PHASE: return $this->rootElementPhase($token); break;
- case self::MAIN_PHASE: return $this->mainPhase($token); break;
- case self::END_PHASE : return $this->trailingEndPhase($token); break;
+ public function emitToken($token)
+ {
+ switch ($this->phase) {
+ case self::INIT_PHASE:
+ return $this->initPhase($token);
+ break;
+ case self::ROOT_PHASE:
+ return $this->rootElementPhase($token);
+ break;
+ case self::MAIN_PHASE:
+ return $this->mainPhase($token);
+ break;
+ case self::END_PHASE :
+ return $this->trailingEndPhase($token);
+ break;
}
}
- private function initPhase($token) {
+ private function initPhase($token)
+ {
/* Initially, the tree construction stage must handle each token
emitted from the tokenisation stage as follows: */
@@ -1262,13 +1741,14 @@ class HTML5TreeConstructer {
U+000A LINE FEED (LF), U+000B LINE TABULATION, U+000C FORM FEED (FF),
or U+0020 SPACE
An end-of-file token */
- if((isset($token['error']) && $token['error']) ||
- $token['type'] === HTML5::COMMENT ||
- $token['type'] === HTML5::STARTTAG ||
- $token['type'] === HTML5::ENDTAG ||
- $token['type'] === HTML5::EOF ||
- ($token['type'] === HTML5::CHARACTR && isset($token['data']) &&
- !preg_match('/^[\t\n\x0b\x0c ]+$/', $token['data']))) {
+ if ((isset($token['error']) && $token['error']) ||
+ $token['type'] === HTML5::COMMENT ||
+ $token['type'] === HTML5::STARTTAG ||
+ $token['type'] === HTML5::ENDTAG ||
+ $token['type'] === HTML5::EOF ||
+ ($token['type'] === HTML5::CHARACTR && isset($token['data']) &&
+ !preg_match('/^[\t\n\x0b\x0c ]+$/', $token['data']))
+ ) {
/* This specification does not define how to handle this case. In
particular, user agents may ignore the entirety of this specification
altogether for such documents, and instead invoke special parse modes
@@ -1277,8 +1757,8 @@ class HTML5TreeConstructer {
$this->phase = self::ROOT_PHASE;
return $this->rootElementPhase($token);
- /* A DOCTYPE token marked as being correct */
- } elseif(isset($token['error']) && !$token['error']) {
+ /* A DOCTYPE token marked as being correct */
+ } elseif (isset($token['error']) && !$token['error']) {
/* Append a DocumentType node to the Document node, with the name
attribute set to the name given in the DOCTYPE token (which will be
"HTML"), and the other attributes specific to DocumentType objects
@@ -1289,52 +1769,58 @@ class HTML5TreeConstructer {
stage. */
$this->phase = self::ROOT_PHASE;
- /* A character token that is one of one of U+0009 CHARACTER TABULATION,
- U+000A LINE FEED (LF), U+000B LINE TABULATION, U+000C FORM FEED (FF),
- or U+0020 SPACE */
- } elseif(isset($token['data']) && preg_match('/^[\t\n\x0b\x0c ]+$/',
- $token['data'])) {
+ /* A character token that is one of one of U+0009 CHARACTER TABULATION,
+ U+000A LINE FEED (LF), U+000B LINE TABULATION, U+000C FORM FEED (FF),
+ or U+0020 SPACE */
+ } elseif (isset($token['data']) && preg_match(
+ '/^[\t\n\x0b\x0c ]+$/',
+ $token['data']
+ )
+ ) {
/* Append that character to the Document node. */
$text = $this->dom->createTextNode($token['data']);
$this->dom->appendChild($text);
}
}
- private function rootElementPhase($token) {
+ private function rootElementPhase($token)
+ {
/* After the initial phase, as each token is emitted from the tokenisation
stage, it must be processed as described in this section. */
/* A DOCTYPE token */
- if($token['type'] === HTML5::DOCTYPE) {
+ if ($token['type'] === HTML5::DOCTYPE) {
// Parse error. Ignore the token.
- /* A comment token */
- } elseif($token['type'] === HTML5::COMMENT) {
+ /* A comment token */
+ } elseif ($token['type'] === HTML5::COMMENT) {
/* Append a Comment node to the Document object with the data
attribute set to the data given in the comment token. */
$comment = $this->dom->createComment($token['data']);
$this->dom->appendChild($comment);
- /* A character token that is one of one of U+0009 CHARACTER TABULATION,
- U+000A LINE FEED (LF), U+000B LINE TABULATION, U+000C FORM FEED (FF),
- or U+0020 SPACE */
- } elseif($token['type'] === HTML5::CHARACTR &&
- preg_match('/^[\t\n\x0b\x0c ]+$/', $token['data'])) {
+ /* A character token that is one of one of U+0009 CHARACTER TABULATION,
+ U+000A LINE FEED (LF), U+000B LINE TABULATION, U+000C FORM FEED (FF),
+ or U+0020 SPACE */
+ } elseif ($token['type'] === HTML5::CHARACTR &&
+ preg_match('/^[\t\n\x0b\x0c ]+$/', $token['data'])
+ ) {
/* Append that character to the Document node. */
$text = $this->dom->createTextNode($token['data']);
$this->dom->appendChild($text);
- /* A character token that is not one of U+0009 CHARACTER TABULATION,
- U+000A LINE FEED (LF), U+000B LINE TABULATION, U+000C FORM FEED
- (FF), or U+0020 SPACE
- A start tag token
- An end tag token
- An end-of-file token */
- } elseif(($token['type'] === HTML5::CHARACTR &&
- !preg_match('/^[\t\n\x0b\x0c ]+$/', $token['data'])) ||
- $token['type'] === HTML5::STARTTAG ||
- $token['type'] === HTML5::ENDTAG ||
- $token['type'] === HTML5::EOF) {
+ /* A character token that is not one of U+0009 CHARACTER TABULATION,
+ U+000A LINE FEED (LF), U+000B LINE TABULATION, U+000C FORM FEED
+ (FF), or U+0020 SPACE
+ A start tag token
+ An end tag token
+ An end-of-file token */
+ } elseif (($token['type'] === HTML5::CHARACTR &&
+ !preg_match('/^[\t\n\x0b\x0c ]+$/', $token['data'])) ||
+ $token['type'] === HTML5::STARTTAG ||
+ $token['type'] === HTML5::ENDTAG ||
+ $token['type'] === HTML5::EOF
+ ) {
/* Create an HTMLElement node with the tag name html, in the HTML
namespace. Append it to the Document object. Switch to the main
phase and reprocess the current token. */
@@ -1347,15 +1833,16 @@ class HTML5TreeConstructer {
}
}
- private function mainPhase($token) {
+ private function mainPhase($token)
+ {
/* Tokens in the main phase must be handled as follows: */
/* A DOCTYPE token */
- if($token['type'] === HTML5::DOCTYPE) {
+ if ($token['type'] === HTML5::DOCTYPE) {
// Parse error. Ignore the token.
- /* A start tag token with the tag name "html" */
- } elseif($token['type'] === HTML5::STARTTAG && $token['name'] === 'html') {
+ /* A start tag token with the tag name "html" */
+ } elseif ($token['type'] === HTML5::STARTTAG && $token['name'] === 'html') {
/* If this start tag token was not the first start tag token, then
it is a parse error. */
@@ -1363,59 +1850,91 @@ class HTML5TreeConstructer {
is already present on the top element of the stack of open elements.
If it is not, add the attribute and its corresponding value to that
element. */
- foreach($token['attr'] as $attr) {
- if(!$this->stack[0]->hasAttribute($attr['name'])) {
+ foreach ($token['attr'] as $attr) {
+ if (!$this->stack[0]->hasAttribute($attr['name'])) {
$this->stack[0]->setAttribute($attr['name'], $attr['value']);
}
}
- /* An end-of-file token */
- } elseif($token['type'] === HTML5::EOF) {
+ /* An end-of-file token */
+ } elseif ($token['type'] === HTML5::EOF) {
/* Generate implied end tags. */
$this->generateImpliedEndTags();
- /* Anything else. */
+ /* Anything else. */
} else {
/* Depends on the insertion mode: */
- switch($this->mode) {
- case self::BEFOR_HEAD: return $this->beforeHead($token); break;
- case self::IN_HEAD: return $this->inHead($token); break;
- case self::AFTER_HEAD: return $this->afterHead($token); break;
- case self::IN_BODY: return $this->inBody($token); break;
- case self::IN_TABLE: return $this->inTable($token); break;
- case self::IN_CAPTION: return $this->inCaption($token); break;
- case self::IN_CGROUP: return $this->inColumnGroup($token); break;
- case self::IN_TBODY: return $this->inTableBody($token); break;
- case self::IN_ROW: return $this->inRow($token); break;
- case self::IN_CELL: return $this->inCell($token); break;
- case self::IN_SELECT: return $this->inSelect($token); break;
- case self::AFTER_BODY: return $this->afterBody($token); break;
- case self::IN_FRAME: return $this->inFrameset($token); break;
- case self::AFTR_FRAME: return $this->afterFrameset($token); break;
- case self::END_PHASE: return $this->trailingEndPhase($token); break;
+ switch ($this->mode) {
+ case self::BEFOR_HEAD:
+ return $this->beforeHead($token);
+ break;
+ case self::IN_HEAD:
+ return $this->inHead($token);
+ break;
+ case self::AFTER_HEAD:
+ return $this->afterHead($token);
+ break;
+ case self::IN_BODY:
+ return $this->inBody($token);
+ break;
+ case self::IN_TABLE:
+ return $this->inTable($token);
+ break;
+ case self::IN_CAPTION:
+ return $this->inCaption($token);
+ break;
+ case self::IN_CGROUP:
+ return $this->inColumnGroup($token);
+ break;
+ case self::IN_TBODY:
+ return $this->inTableBody($token);
+ break;
+ case self::IN_ROW:
+ return $this->inRow($token);
+ break;
+ case self::IN_CELL:
+ return $this->inCell($token);
+ break;
+ case self::IN_SELECT:
+ return $this->inSelect($token);
+ break;
+ case self::AFTER_BODY:
+ return $this->afterBody($token);
+ break;
+ case self::IN_FRAME:
+ return $this->inFrameset($token);
+ break;
+ case self::AFTR_FRAME:
+ return $this->afterFrameset($token);
+ break;
+ case self::END_PHASE:
+ return $this->trailingEndPhase($token);
+ break;
}
}
}
- private function beforeHead($token) {
+ private function beforeHead($token)
+ {
/* Handle the token as follows: */
/* A character token that is one of one of U+0009 CHARACTER TABULATION,
U+000A LINE FEED (LF), U+000B LINE TABULATION, U+000C FORM FEED (FF),
or U+0020 SPACE */
- if($token['type'] === HTML5::CHARACTR &&
- preg_match('/^[\t\n\x0b\x0c ]+$/', $token['data'])) {
+ if ($token['type'] === HTML5::CHARACTR &&
+ preg_match('/^[\t\n\x0b\x0c ]+$/', $token['data'])
+ ) {
/* Append the character to the current node. */
$this->insertText($token['data']);
- /* A comment token */
- } elseif($token['type'] === HTML5::COMMENT) {
+ /* A comment token */
+ } elseif ($token['type'] === HTML5::COMMENT) {
/* Append a Comment node to the current node with the data attribute
set to the data given in the comment token. */
$this->insertComment($token['data']);
- /* A start tag token with the tag name "head" */
- } elseif($token['type'] === HTML5::STARTTAG && $token['name'] === 'head') {
+ /* A start tag token with the tag name "head" */
+ } elseif ($token['type'] === HTML5::STARTTAG && $token['name'] === 'head') {
/* Create an element for the token, append the new element to the
current node and push it onto the stack of open elements. */
$element = $this->insertElement($token);
@@ -1426,32 +1945,38 @@ class HTML5TreeConstructer {
/* Change the insertion mode to "in head". */
$this->mode = self::IN_HEAD;
- /* A start tag token whose tag name is one of: "base", "link", "meta",
- "script", "style", "title". Or an end tag with the tag name "html".
- Or a character token that is not one of U+0009 CHARACTER TABULATION,
- U+000A LINE FEED (LF), U+000B LINE TABULATION, U+000C FORM FEED (FF),
- or U+0020 SPACE. Or any other start tag token */
- } elseif($token['type'] === HTML5::STARTTAG ||
- ($token['type'] === HTML5::ENDTAG && $token['name'] === 'html') ||
- ($token['type'] === HTML5::CHARACTR && !preg_match('/^[\t\n\x0b\x0c ]$/',
- $token['data']))) {
+ /* A start tag token whose tag name is one of: "base", "link", "meta",
+ "script", "style", "title". Or an end tag with the tag name "html".
+ Or a character token that is not one of U+0009 CHARACTER TABULATION,
+ U+000A LINE FEED (LF), U+000B LINE TABULATION, U+000C FORM FEED (FF),
+ or U+0020 SPACE. Or any other start tag token */
+ } elseif ($token['type'] === HTML5::STARTTAG ||
+ ($token['type'] === HTML5::ENDTAG && $token['name'] === 'html') ||
+ ($token['type'] === HTML5::CHARACTR && !preg_match(
+ '/^[\t\n\x0b\x0c ]$/',
+ $token['data']
+ ))
+ ) {
/* Act as if a start tag token with the tag name "head" and no
attributes had been seen, then reprocess the current token. */
- $this->beforeHead(array(
- 'name' => 'head',
- 'type' => HTML5::STARTTAG,
- 'attr' => array()
- ));
+ $this->beforeHead(
+ array(
+ 'name' => 'head',
+ 'type' => HTML5::STARTTAG,
+ 'attr' => array()
+ )
+ );
return $this->inHead($token);
- /* Any other end tag */
- } elseif($token['type'] === HTML5::ENDTAG) {
+ /* Any other end tag */
+ } elseif ($token['type'] === HTML5::ENDTAG) {
/* Parse error. Ignore the token. */
}
}
- private function inHead($token) {
+ private function inHead($token)
+ {
/* Handle the token as follows: */
/* A character token that is one of one of U+0009 CHARACTER TABULATION,
@@ -1461,30 +1986,34 @@ class HTML5TreeConstructer {
THIS DIFFERS FROM THE SPEC: If the current node is either a title, style
or script element, append the character to the current node regardless
of its content. */
- if(($token['type'] === HTML5::CHARACTR &&
- preg_match('/^[\t\n\x0b\x0c ]+$/', $token['data'])) || (
- $token['type'] === HTML5::CHARACTR && in_array(end($this->stack)->nodeName,
- array('title', 'style', 'script')))) {
+ if (($token['type'] === HTML5::CHARACTR &&
+ preg_match('/^[\t\n\x0b\x0c ]+$/', $token['data'])) || (
+ $token['type'] === HTML5::CHARACTR && in_array(
+ end($this->stack)->nodeName,
+ array('title', 'style', 'script')
+ ))
+ ) {
/* Append the character to the current node. */
$this->insertText($token['data']);
- /* A comment token */
- } elseif($token['type'] === HTML5::COMMENT) {
+ /* A comment token */
+ } elseif ($token['type'] === HTML5::COMMENT) {
/* Append a Comment node to the current node with the data attribute
set to the data given in the comment token. */
$this->insertComment($token['data']);
- } elseif($token['type'] === HTML5::ENDTAG &&
- in_array($token['name'], array('title', 'style', 'script'))) {
+ } elseif ($token['type'] === HTML5::ENDTAG &&
+ in_array($token['name'], array('title', 'style', 'script'))
+ ) {
array_pop($this->stack);
return HTML5::PCDATA;
- /* A start tag with the tag name "title" */
- } elseif($token['type'] === HTML5::STARTTAG && $token['name'] === 'title') {
+ /* A start tag with the tag name "title" */
+ } elseif ($token['type'] === HTML5::STARTTAG && $token['name'] === 'title') {
/* Create an element for the token and append the new element to the
node pointed to by the head element pointer, or, if that is null
(innerHTML case), to the current node. */
- if($this->head_pointer !== null) {
+ if ($this->head_pointer !== null) {
$element = $this->insertElement($token, false);
$this->head_pointer->appendChild($element);
@@ -1495,12 +2024,12 @@ class HTML5TreeConstructer {
/* Switch the tokeniser's content model flag to the RCDATA state. */
return HTML5::RCDATA;
- /* A start tag with the tag name "style" */
- } elseif($token['type'] === HTML5::STARTTAG && $token['name'] === 'style') {
+ /* A start tag with the tag name "style" */
+ } elseif ($token['type'] === HTML5::STARTTAG && $token['name'] === 'style') {
/* Create an element for the token and append the new element to the
node pointed to by the head element pointer, or, if that is null
(innerHTML case), to the current node. */
- if($this->head_pointer !== null) {
+ if ($this->head_pointer !== null) {
$element = $this->insertElement($token, false);
$this->head_pointer->appendChild($element);
@@ -1511,8 +2040,8 @@ class HTML5TreeConstructer {
/* Switch the tokeniser's content model flag to the CDATA state. */
return HTML5::CDATA;
- /* A start tag with the tag name "script" */
- } elseif($token['type'] === HTML5::STARTTAG && $token['name'] === 'script') {
+ /* A start tag with the tag name "script" */
+ } elseif ($token['type'] === HTML5::STARTTAG && $token['name'] === 'script') {
/* Create an element for the token. */
$element = $this->insertElement($token, false);
$this->head_pointer->appendChild($element);
@@ -1520,13 +2049,16 @@ class HTML5TreeConstructer {
/* Switch the tokeniser's content model flag to the CDATA state. */
return HTML5::CDATA;
- /* A start tag with the tag name "base", "link", or "meta" */
- } elseif($token['type'] === HTML5::STARTTAG && in_array($token['name'],
- array('base', 'link', 'meta'))) {
+ /* A start tag with the tag name "base", "link", or "meta" */
+ } elseif ($token['type'] === HTML5::STARTTAG && in_array(
+ $token['name'],
+ array('base', 'link', 'meta')
+ )
+ ) {
/* Create an element for the token and append the new element to the
node pointed to by the head element pointer, or, if that is null
(innerHTML case), to the current node. */
- if($this->head_pointer !== null) {
+ if ($this->head_pointer !== null) {
$element = $this->insertElement($token, false);
$this->head_pointer->appendChild($element);
array_pop($this->stack);
@@ -1535,14 +2067,14 @@ class HTML5TreeConstructer {
$this->insertElement($token);
}
- /* An end tag with the tag name "head" */
- } elseif($token['type'] === HTML5::ENDTAG && $token['name'] === 'head') {
+ /* An end tag with the tag name "head" */
+ } elseif ($token['type'] === HTML5::ENDTAG && $token['name'] === 'head') {
/* If the current node is a head element, pop the current node off
the stack of open elements. */
- if($this->head_pointer->isSameNode(end($this->stack))) {
+ if ($this->head_pointer->isSameNode(end($this->stack))) {
array_pop($this->stack);
- /* Otherwise, this is a parse error. */
+ /* Otherwise, this is a parse error. */
} else {
// k
}
@@ -1550,22 +2082,25 @@ class HTML5TreeConstructer {
/* Change the insertion mode to "after head". */
$this->mode = self::AFTER_HEAD;
- /* A start tag with the tag name "head" or an end tag except "html". */
- } elseif(($token['type'] === HTML5::STARTTAG && $token['name'] === 'head') ||
- ($token['type'] === HTML5::ENDTAG && $token['name'] !== 'html')) {
+ /* A start tag with the tag name "head" or an end tag except "html". */
+ } elseif (($token['type'] === HTML5::STARTTAG && $token['name'] === 'head') ||
+ ($token['type'] === HTML5::ENDTAG && $token['name'] !== 'html')
+ ) {
// Parse error. Ignore the token.
- /* Anything else */
+ /* Anything else */
} else {
/* If the current node is a head element, act as if an end tag
token with the tag name "head" had been seen. */
- if($this->head_pointer->isSameNode(end($this->stack))) {
- $this->inHead(array(
- 'name' => 'head',
- 'type' => HTML5::ENDTAG
- ));
+ if ($this->head_pointer->isSameNode(end($this->stack))) {
+ $this->inHead(
+ array(
+ 'name' => 'head',
+ 'type' => HTML5::ENDTAG
+ )
+ );
- /* Otherwise, change the insertion mode to "after head". */
+ /* Otherwise, change the insertion mode to "after head". */
} else {
$this->mode = self::AFTER_HEAD;
}
@@ -1575,66 +2110,74 @@ class HTML5TreeConstructer {
}
}
- private function afterHead($token) {
+ private function afterHead($token)
+ {
/* Handle the token as follows: */
/* A character token that is one of one of U+0009 CHARACTER TABULATION,
U+000A LINE FEED (LF), U+000B LINE TABULATION, U+000C FORM FEED (FF),
or U+0020 SPACE */
- if($token['type'] === HTML5::CHARACTR &&
- preg_match('/^[\t\n\x0b\x0c ]+$/', $token['data'])) {
+ if ($token['type'] === HTML5::CHARACTR &&
+ preg_match('/^[\t\n\x0b\x0c ]+$/', $token['data'])
+ ) {
/* Append the character to the current node. */
$this->insertText($token['data']);
- /* A comment token */
- } elseif($token['type'] === HTML5::COMMENT) {
+ /* A comment token */
+ } elseif ($token['type'] === HTML5::COMMENT) {
/* Append a Comment node to the current node with the data attribute
set to the data given in the comment token. */
$this->insertComment($token['data']);
- /* A start tag token with the tag name "body" */
- } elseif($token['type'] === HTML5::STARTTAG && $token['name'] === 'body') {
+ /* A start tag token with the tag name "body" */
+ } elseif ($token['type'] === HTML5::STARTTAG && $token['name'] === 'body') {
/* Insert a body element for the token. */
$this->insertElement($token);
/* Change the insertion mode to "in body". */
$this->mode = self::IN_BODY;
- /* A start tag token with the tag name "frameset" */
- } elseif($token['type'] === HTML5::STARTTAG && $token['name'] === 'frameset') {
+ /* A start tag token with the tag name "frameset" */
+ } elseif ($token['type'] === HTML5::STARTTAG && $token['name'] === 'frameset') {
/* Insert a frameset element for the token. */
$this->insertElement($token);
/* Change the insertion mode to "in frameset". */
$this->mode = self::IN_FRAME;
- /* A start tag token whose tag name is one of: "base", "link", "meta",
- "script", "style", "title" */
- } elseif($token['type'] === HTML5::STARTTAG && in_array($token['name'],
- array('base', 'link', 'meta', 'script', 'style', 'title'))) {
+ /* A start tag token whose tag name is one of: "base", "link", "meta",
+ "script", "style", "title" */
+ } elseif ($token['type'] === HTML5::STARTTAG && in_array(
+ $token['name'],
+ array('base', 'link', 'meta', 'script', 'style', 'title')
+ )
+ ) {
/* Parse error. Switch the insertion mode back to "in head" and
reprocess the token. */
$this->mode = self::IN_HEAD;
return $this->inHead($token);
- /* Anything else */
+ /* Anything else */
} else {
/* Act as if a start tag token with the tag name "body" and no
attributes had been seen, and then reprocess the current token. */
- $this->afterHead(array(
- 'name' => 'body',
- 'type' => HTML5::STARTTAG,
- 'attr' => array()
- ));
+ $this->afterHead(
+ array(
+ 'name' => 'body',
+ 'type' => HTML5::STARTTAG,
+ 'attr' => array()
+ )
+ );
return $this->inBody($token);
}
}
- private function inBody($token) {
+ private function inBody($token)
+ {
/* Handle the token as follows: */
- switch($token['type']) {
+ switch ($token['type']) {
/* A character token */
case HTML5::CHARACTR:
/* Reconstruct the active formatting elements, if any. */
@@ -1642,1015 +2185,1159 @@ class HTML5TreeConstructer {
/* Append the token's character to the current node. */
$this->insertText($token['data']);
- break;
+ break;
/* A comment token */
case HTML5::COMMENT:
/* Append a Comment node to the current node with the data
attribute set to the data given in the comment token. */
$this->insertComment($token['data']);
- break;
+ break;
case HTML5::STARTTAG:
- switch($token['name']) {
- /* A start tag token whose tag name is one of: "script",
- "style" */
- case 'script': case 'style':
- /* Process the token as if the insertion mode had been "in
- head". */
- return $this->inHead($token);
- break;
+ switch ($token['name']) {
+ /* A start tag token whose tag name is one of: "script",
+ "style" */
+ case 'script':
+ case 'style':
+ /* Process the token as if the insertion mode had been "in
+ head". */
+ return $this->inHead($token);
+ break;
- /* A start tag token whose tag name is one of: "base", "link",
- "meta", "title" */
- case 'base': case 'link': case 'meta': case 'title':
- /* Parse error. Process the token as if the insertion mode
- had been "in head". */
- return $this->inHead($token);
- break;
+ /* A start tag token whose tag name is one of: "base", "link",
+ "meta", "title" */
+ case 'base':
+ case 'link':
+ case 'meta':
+ case 'title':
+ /* Parse error. Process the token as if the insertion mode
+ had been "in head". */
+ return $this->inHead($token);
+ break;
- /* A start tag token with the tag name "body" */
- case 'body':
- /* Parse error. If the second element on the stack of open
- elements is not a body element, or, if the stack of open
- elements has only one node on it, then ignore the token.
- (innerHTML case) */
- if(count($this->stack) === 1 || $this->stack[1]->nodeName !== 'body') {
- // Ignore
-
- /* Otherwise, for each attribute on the token, check to see
- if the attribute is already present on the body element (the
- second element) on the stack of open elements. If it is not,
- add the attribute and its corresponding value to that
- element. */
- } else {
- foreach($token['attr'] as $attr) {
- if(!$this->stack[1]->hasAttribute($attr['name'])) {
- $this->stack[1]->setAttribute($attr['name'], $attr['value']);
+ /* A start tag token with the tag name "body" */
+ case 'body':
+ /* Parse error. If the second element on the stack of open
+ elements is not a body element, or, if the stack of open
+ elements has only one node on it, then ignore the token.
+ (innerHTML case) */
+ if (count($this->stack) === 1 || $this->stack[1]->nodeName !== 'body') {
+ // Ignore
+
+ /* Otherwise, for each attribute on the token, check to see
+ if the attribute is already present on the body element (the
+ second element) on the stack of open elements. If it is not,
+ add the attribute and its corresponding value to that
+ element. */
+ } else {
+ foreach ($token['attr'] as $attr) {
+ if (!$this->stack[1]->hasAttribute($attr['name'])) {
+ $this->stack[1]->setAttribute($attr['name'], $attr['value']);
+ }
}
}
- }
- break;
-
- /* A start tag whose tag name is one of: "address",
- "blockquote", "center", "dir", "div", "dl", "fieldset",
- "listing", "menu", "ol", "p", "ul" */
- case 'address': case 'blockquote': case 'center': case 'dir':
- case 'div': case 'dl': case 'fieldset': case 'listing':
- case 'menu': case 'ol': case 'p': case 'ul':
- /* If the stack of open elements has a p element in scope,
- then act as if an end tag with the tag name p had been
- seen. */
- if($this->elementInScope('p')) {
- $this->emitToken(array(
- 'name' => 'p',
- 'type' => HTML5::ENDTAG
- ));
- }
-
- /* Insert an HTML element for the token. */
- $this->insertElement($token);
- break;
+ break;
- /* A start tag whose tag name is "form" */
- case 'form':
- /* If the form element pointer is not null, ignore the
- token with a parse error. */
- if($this->form_pointer !== null) {
- // Ignore.
-
- /* Otherwise: */
- } else {
- /* If the stack of open elements has a p element in
- scope, then act as if an end tag with the tag name p
- had been seen. */
- if($this->elementInScope('p')) {
- $this->emitToken(array(
- 'name' => 'p',
- 'type' => HTML5::ENDTAG
- ));
+ /* A start tag whose tag name is one of: "address",
+ "blockquote", "center", "dir", "div", "dl", "fieldset",
+ "listing", "menu", "ol", "p", "ul" */
+ case 'address':
+ case 'blockquote':
+ case 'center':
+ case 'dir':
+ case 'div':
+ case 'dl':
+ case 'fieldset':
+ case 'listing':
+ case 'menu':
+ case 'ol':
+ case 'p':
+ case 'ul':
+ /* If the stack of open elements has a p element in scope,
+ then act as if an end tag with the tag name p had been
+ seen. */
+ if ($this->elementInScope('p')) {
+ $this->emitToken(
+ array(
+ 'name' => 'p',
+ 'type' => HTML5::ENDTAG
+ )
+ );
}
- /* Insert an HTML element for the token, and set the
- form element pointer to point to the element created. */
- $element = $this->insertElement($token);
- $this->form_pointer = $element;
- }
- break;
+ /* Insert an HTML element for the token. */
+ $this->insertElement($token);
+ break;
- /* A start tag whose tag name is "li", "dd" or "dt" */
- case 'li': case 'dd': case 'dt':
- /* If the stack of open elements has a p element in scope,
- then act as if an end tag with the tag name p had been
- seen. */
- if($this->elementInScope('p')) {
- $this->emitToken(array(
- 'name' => 'p',
- 'type' => HTML5::ENDTAG
- ));
- }
+ /* A start tag whose tag name is "form" */
+ case 'form':
+ /* If the form element pointer is not null, ignore the
+ token with a parse error. */
+ if ($this->form_pointer !== null) {
+ // Ignore.
- $stack_length = count($this->stack) - 1;
-
- for($n = $stack_length; 0 <= $n; $n--) {
- /* 1. Initialise node to be the current node (the
- bottommost node of the stack). */
- $stop = false;
- $node = $this->stack[$n];
- $cat = $this->getElementCategory($node->tagName);
-
- /* 2. If node is an li, dd or dt element, then pop all
- the nodes from the current node up to node, including
- node, then stop this algorithm. */
- if($token['name'] === $node->tagName || ($token['name'] !== 'li'
- && ($node->tagName === 'dd' || $node->tagName === 'dt'))) {
- for($x = $stack_length; $x >= $n ; $x--) {
- array_pop($this->stack);
+ /* Otherwise: */
+ } else {
+ /* If the stack of open elements has a p element in
+ scope, then act as if an end tag with the tag name p
+ had been seen. */
+ if ($this->elementInScope('p')) {
+ $this->emitToken(
+ array(
+ 'name' => 'p',
+ 'type' => HTML5::ENDTAG
+ )
+ );
}
- break;
+ /* Insert an HTML element for the token, and set the
+ form element pointer to point to the element created. */
+ $element = $this->insertElement($token);
+ $this->form_pointer = $element;
}
+ break;
- /* 3. If node is not in the formatting category, and is
- not in the phrasing category, and is not an address or
- div element, then stop this algorithm. */
- if($cat !== self::FORMATTING && $cat !== self::PHRASING &&
- $node->tagName !== 'address' && $node->tagName !== 'div') {
- break;
+ /* A start tag whose tag name is "li", "dd" or "dt" */
+ case 'li':
+ case 'dd':
+ case 'dt':
+ /* If the stack of open elements has a p element in scope,
+ then act as if an end tag with the tag name p had been
+ seen. */
+ if ($this->elementInScope('p')) {
+ $this->emitToken(
+ array(
+ 'name' => 'p',
+ 'type' => HTML5::ENDTAG
+ )
+ );
}
- }
- /* Finally, insert an HTML element with the same tag
- name as the token's. */
- $this->insertElement($token);
- break;
+ $stack_length = count($this->stack) - 1;
+
+ for ($n = $stack_length; 0 <= $n; $n--) {
+ /* 1. Initialise node to be the current node (the
+ bottommost node of the stack). */
+ $stop = false;
+ $node = $this->stack[$n];
+ $cat = $this->getElementCategory($node->tagName);
+
+ /* 2. If node is an li, dd or dt element, then pop all
+ the nodes from the current node up to node, including
+ node, then stop this algorithm. */
+ if ($token['name'] === $node->tagName || ($token['name'] !== 'li'
+ && ($node->tagName === 'dd' || $node->tagName === 'dt'))
+ ) {
+ for ($x = $stack_length; $x >= $n; $x--) {
+ array_pop($this->stack);
+ }
- /* A start tag token whose tag name is "plaintext" */
- case 'plaintext':
- /* If the stack of open elements has a p element in scope,
- then act as if an end tag with the tag name p had been
- seen. */
- if($this->elementInScope('p')) {
- $this->emitToken(array(
- 'name' => 'p',
- 'type' => HTML5::ENDTAG
- ));
- }
+ break;
+ }
- /* Insert an HTML element for the token. */
- $this->insertElement($token);
+ /* 3. If node is not in the formatting category, and is
+ not in the phrasing category, and is not an address or
+ div element, then stop this algorithm. */
+ if ($cat !== self::FORMATTING && $cat !== self::PHRASING &&
+ $node->tagName !== 'address' && $node->tagName !== 'div'
+ ) {
+ break;
+ }
+ }
- return HTML5::PLAINTEXT;
- break;
+ /* Finally, insert an HTML element with the same tag
+ name as the token's. */
+ $this->insertElement($token);
+ break;
- /* A start tag whose tag name is one of: "h1", "h2", "h3", "h4",
- "h5", "h6" */
- case 'h1': case 'h2': case 'h3': case 'h4': case 'h5': case 'h6':
- /* If the stack of open elements has a p element in scope,
- then act as if an end tag with the tag name p had been seen. */
- if($this->elementInScope('p')) {
- $this->emitToken(array(
- 'name' => 'p',
- 'type' => HTML5::ENDTAG
- ));
- }
+ /* A start tag token whose tag name is "plaintext" */
+ case 'plaintext':
+ /* If the stack of open elements has a p element in scope,
+ then act as if an end tag with the tag name p had been
+ seen. */
+ if ($this->elementInScope('p')) {
+ $this->emitToken(
+ array(
+ 'name' => 'p',
+ 'type' => HTML5::ENDTAG
+ )
+ );
+ }
- /* If the stack of open elements has in scope an element whose
- tag name is one of "h1", "h2", "h3", "h4", "h5", or "h6", then
- this is a parse error; pop elements from the stack until an
- element with one of those tag names has been popped from the
- stack. */
- while($this->elementInScope(array('h1', 'h2', 'h3', 'h4', 'h5', 'h6'))) {
- array_pop($this->stack);
- }
+ /* Insert an HTML element for the token. */
+ $this->insertElement($token);
- /* Insert an HTML element for the token. */
- $this->insertElement($token);
- break;
+ return HTML5::PLAINTEXT;
+ break;
- /* A start tag whose tag name is "a" */
- case 'a':
- /* If the list of active formatting elements contains
- an element whose tag name is "a" between the end of the
- list and the last marker on the list (or the start of
- the list if there is no marker on the list), then this
- is a parse error; act as if an end tag with the tag name
- "a" had been seen, then remove that element from the list
- of active formatting elements and the stack of open
- elements if the end tag didn't already remove it (it
- might not have if the element is not in table scope). */
- $leng = count($this->a_formatting);
-
- for($n = $leng - 1; $n >= 0; $n--) {
- if($this->a_formatting[$n] === self::MARKER) {
- break;
-
- } elseif($this->a_formatting[$n]->nodeName === 'a') {
- $this->emitToken(array(
- 'name' => 'a',
- 'type' => HTML5::ENDTAG
- ));
- break;
+ /* A start tag whose tag name is one of: "h1", "h2", "h3", "h4",
+ "h5", "h6" */
+ case 'h1':
+ case 'h2':
+ case 'h3':
+ case 'h4':
+ case 'h5':
+ case 'h6':
+ /* If the stack of open elements has a p element in scope,
+ then act as if an end tag with the tag name p had been seen. */
+ if ($this->elementInScope('p')) {
+ $this->emitToken(
+ array(
+ 'name' => 'p',
+ 'type' => HTML5::ENDTAG
+ )
+ );
}
- }
- /* Reconstruct the active formatting elements, if any. */
- $this->reconstructActiveFormattingElements();
+ /* If the stack of open elements has in scope an element whose
+ tag name is one of "h1", "h2", "h3", "h4", "h5", or "h6", then
+ this is a parse error; pop elements from the stack until an
+ element with one of those tag names has been popped from the
+ stack. */
+ while ($this->elementInScope(array('h1', 'h2', 'h3', 'h4', 'h5', 'h6'))) {
+ array_pop($this->stack);
+ }
- /* Insert an HTML element for the token. */
- $el = $this->insertElement($token);
+ /* Insert an HTML element for the token. */
+ $this->insertElement($token);
+ break;
- /* Add that element to the list of active formatting
- elements. */
- $this->a_formatting[] = $el;
- break;
+ /* A start tag whose tag name is "a" */
+ case 'a':
+ /* If the list of active formatting elements contains
+ an element whose tag name is "a" between the end of the
+ list and the last marker on the list (or the start of
+ the list if there is no marker on the list), then this
+ is a parse error; act as if an end tag with the tag name
+ "a" had been seen, then remove that element from the list
+ of active formatting elements and the stack of open
+ elements if the end tag didn't already remove it (it
+ might not have if the element is not in table scope). */
+ $leng = count($this->a_formatting);
+
+ for ($n = $leng - 1; $n >= 0; $n--) {
+ if ($this->a_formatting[$n] === self::MARKER) {
+ break;
- /* A start tag whose tag name is one of: "b", "big", "em", "font",
- "i", "nobr", "s", "small", "strike", "strong", "tt", "u" */
- case 'b': case 'big': case 'em': case 'font': case 'i':
- case 'nobr': case 's': case 'small': case 'strike':
- case 'strong': case 'tt': case 'u':
- /* Reconstruct the active formatting elements, if any. */
- $this->reconstructActiveFormattingElements();
+ } elseif ($this->a_formatting[$n]->nodeName === 'a') {
+ $this->emitToken(
+ array(
+ 'name' => 'a',
+ 'type' => HTML5::ENDTAG
+ )
+ );
+ break;
+ }
+ }
- /* Insert an HTML element for the token. */
- $el = $this->insertElement($token);
+ /* Reconstruct the active formatting elements, if any. */
+ $this->reconstructActiveFormattingElements();
- /* Add that element to the list of active formatting
- elements. */
- $this->a_formatting[] = $el;
- break;
+ /* Insert an HTML element for the token. */
+ $el = $this->insertElement($token);
- /* A start tag token whose tag name is "button" */
- case 'button':
- /* If the stack of open elements has a button element in scope,
- then this is a parse error; act as if an end tag with the tag
- name "button" had been seen, then reprocess the token. (We don't
- do that. Unnecessary.) */
- if($this->elementInScope('button')) {
- $this->inBody(array(
- 'name' => 'button',
- 'type' => HTML5::ENDTAG
- ));
- }
+ /* Add that element to the list of active formatting
+ elements. */
+ $this->a_formatting[] = $el;
+ break;
- /* Reconstruct the active formatting elements, if any. */
- $this->reconstructActiveFormattingElements();
+ /* A start tag whose tag name is one of: "b", "big", "em", "font",
+ "i", "nobr", "s", "small", "strike", "strong", "tt", "u" */
+ case 'b':
+ case 'big':
+ case 'em':
+ case 'font':
+ case 'i':
+ case 'nobr':
+ case 's':
+ case 'small':
+ case 'strike':
+ case 'strong':
+ case 'tt':
+ case 'u':
+ /* Reconstruct the active formatting elements, if any. */
+ $this->reconstructActiveFormattingElements();
+
+ /* Insert an HTML element for the token. */
+ $el = $this->insertElement($token);
+
+ /* Add that element to the list of active formatting
+ elements. */
+ $this->a_formatting[] = $el;
+ break;
- /* Insert an HTML element for the token. */
- $this->insertElement($token);
+ /* A start tag token whose tag name is "button" */
+ case 'button':
+ /* If the stack of open elements has a button element in scope,
+ then this is a parse error; act as if an end tag with the tag
+ name "button" had been seen, then reprocess the token. (We don't
+ do that. Unnecessary.) */
+ if ($this->elementInScope('button')) {
+ $this->inBody(
+ array(
+ 'name' => 'button',
+ 'type' => HTML5::ENDTAG
+ )
+ );
+ }
- /* Insert a marker at the end of the list of active
- formatting elements. */
- $this->a_formatting[] = self::MARKER;
- break;
+ /* Reconstruct the active formatting elements, if any. */
+ $this->reconstructActiveFormattingElements();
- /* A start tag token whose tag name is one of: "marquee", "object" */
- case 'marquee': case 'object':
- /* Reconstruct the active formatting elements, if any. */
- $this->reconstructActiveFormattingElements();
+ /* Insert an HTML element for the token. */
+ $this->insertElement($token);
- /* Insert an HTML element for the token. */
- $this->insertElement($token);
+ /* Insert a marker at the end of the list of active
+ formatting elements. */
+ $this->a_formatting[] = self::MARKER;
+ break;
- /* Insert a marker at the end of the list of active
- formatting elements. */
- $this->a_formatting[] = self::MARKER;
- break;
+ /* A start tag token whose tag name is one of: "marquee", "object" */
+ case 'marquee':
+ case 'object':
+ /* Reconstruct the active formatting elements, if any. */
+ $this->reconstructActiveFormattingElements();
- /* A start tag token whose tag name is "xmp" */
- case 'xmp':
- /* Reconstruct the active formatting elements, if any. */
- $this->reconstructActiveFormattingElements();
+ /* Insert an HTML element for the token. */
+ $this->insertElement($token);
- /* Insert an HTML element for the token. */
- $this->insertElement($token);
+ /* Insert a marker at the end of the list of active
+ formatting elements. */
+ $this->a_formatting[] = self::MARKER;
+ break;
- /* Switch the content model flag to the CDATA state. */
- return HTML5::CDATA;
- break;
+ /* A start tag token whose tag name is "xmp" */
+ case 'xmp':
+ /* Reconstruct the active formatting elements, if any. */
+ $this->reconstructActiveFormattingElements();
- /* A start tag whose tag name is "table" */
- case 'table':
- /* If the stack of open elements has a p element in scope,
- then act as if an end tag with the tag name p had been seen. */
- if($this->elementInScope('p')) {
- $this->emitToken(array(
- 'name' => 'p',
- 'type' => HTML5::ENDTAG
- ));
- }
+ /* Insert an HTML element for the token. */
+ $this->insertElement($token);
- /* Insert an HTML element for the token. */
- $this->insertElement($token);
+ /* Switch the content model flag to the CDATA state. */
+ return HTML5::CDATA;
+ break;
- /* Change the insertion mode to "in table". */
- $this->mode = self::IN_TABLE;
- break;
+ /* A start tag whose tag name is "table" */
+ case 'table':
+ /* If the stack of open elements has a p element in scope,
+ then act as if an end tag with the tag name p had been seen. */
+ if ($this->elementInScope('p')) {
+ $this->emitToken(
+ array(
+ 'name' => 'p',
+ 'type' => HTML5::ENDTAG
+ )
+ );
+ }
- /* A start tag whose tag name is one of: "area", "basefont",
- "bgsound", "br", "embed", "img", "param", "spacer", "wbr" */
- case 'area': case 'basefont': case 'bgsound': case 'br':
- case 'embed': case 'img': case 'param': case 'spacer':
- case 'wbr':
- /* Reconstruct the active formatting elements, if any. */
- $this->reconstructActiveFormattingElements();
+ /* Insert an HTML element for the token. */
+ $this->insertElement($token);
- /* Insert an HTML element for the token. */
- $this->insertElement($token);
+ /* Change the insertion mode to "in table". */
+ $this->mode = self::IN_TABLE;
+ break;
- /* Immediately pop the current node off the stack of open elements. */
- array_pop($this->stack);
- break;
+ /* A start tag whose tag name is one of: "area", "basefont",
+ "bgsound", "br", "embed", "img", "param", "spacer", "wbr" */
+ case 'area':
+ case 'basefont':
+ case 'bgsound':
+ case 'br':
+ case 'embed':
+ case 'img':
+ case 'param':
+ case 'spacer':
+ case 'wbr':
+ /* Reconstruct the active formatting elements, if any. */
+ $this->reconstructActiveFormattingElements();
+
+ /* Insert an HTML element for the token. */
+ $this->insertElement($token);
+
+ /* Immediately pop the current node off the stack of open elements. */
+ array_pop($this->stack);
+ break;
- /* A start tag whose tag name is "hr" */
- case 'hr':
- /* If the stack of open elements has a p element in scope,
- then act as if an end tag with the tag name p had been seen. */
- if($this->elementInScope('p')) {
- $this->emitToken(array(
- 'name' => 'p',
- 'type' => HTML5::ENDTAG
- ));
- }
+ /* A start tag whose tag name is "hr" */
+ case 'hr':
+ /* If the stack of open elements has a p element in scope,
+ then act as if an end tag with the tag name p had been seen. */
+ if ($this->elementInScope('p')) {
+ $this->emitToken(
+ array(
+ 'name' => 'p',
+ 'type' => HTML5::ENDTAG
+ )
+ );
+ }
- /* Insert an HTML element for the token. */
- $this->insertElement($token);
+ /* Insert an HTML element for the token. */
+ $this->insertElement($token);
- /* Immediately pop the current node off the stack of open elements. */
- array_pop($this->stack);
- break;
+ /* Immediately pop the current node off the stack of open elements. */
+ array_pop($this->stack);
+ break;
- /* A start tag whose tag name is "image" */
- case 'image':
- /* Parse error. Change the token's tag name to "img" and
- reprocess it. (Don't ask.) */
- $token['name'] = 'img';
- return $this->inBody($token);
- break;
+ /* A start tag whose tag name is "image" */
+ case 'image':
+ /* Parse error. Change the token's tag name to "img" and
+ reprocess it. (Don't ask.) */
+ $token['name'] = 'img';
+ return $this->inBody($token);
+ break;
- /* A start tag whose tag name is "input" */
- case 'input':
- /* Reconstruct the active formatting elements, if any. */
- $this->reconstructActiveFormattingElements();
+ /* A start tag whose tag name is "input" */
+ case 'input':
+ /* Reconstruct the active formatting elements, if any. */
+ $this->reconstructActiveFormattingElements();
- /* Insert an input element for the token. */
- $element = $this->insertElement($token, false);
+ /* Insert an input element for the token. */
+ $element = $this->insertElement($token, false);
- /* If the form element pointer is not null, then associate the
- input element with the form element pointed to by the form
- element pointer. */
- $this->form_pointer !== null
- ? $this->form_pointer->appendChild($element)
- : end($this->stack)->appendChild($element);
+ /* If the form element pointer is not null, then associate the
+ input element with the form element pointed to by the form
+ element pointer. */
+ $this->form_pointer !== null
+ ? $this->form_pointer->appendChild($element)
+ : end($this->stack)->appendChild($element);
- /* Pop that input element off the stack of open elements. */
- array_pop($this->stack);
- break;
+ /* Pop that input element off the stack of open elements. */
+ array_pop($this->stack);
+ break;
- /* A start tag whose tag name is "isindex" */
- case 'isindex':
- /* Parse error. */
- // w/e
-
- /* If the form element pointer is not null,
- then ignore the token. */
- if($this->form_pointer === null) {
- /* Act as if a start tag token with the tag name "form" had
- been seen. */
- $this->inBody(array(
- 'name' => 'body',
- 'type' => HTML5::STARTTAG,
- 'attr' => array()
- ));
-
- /* Act as if a start tag token with the tag name "hr" had
- been seen. */
- $this->inBody(array(
- 'name' => 'hr',
- 'type' => HTML5::STARTTAG,
- 'attr' => array()
- ));
-
- /* Act as if a start tag token with the tag name "p" had
- been seen. */
- $this->inBody(array(
- 'name' => 'p',
- 'type' => HTML5::STARTTAG,
- 'attr' => array()
- ));
-
- /* Act as if a start tag token with the tag name "label"
- had been seen. */
- $this->inBody(array(
- 'name' => 'label',
- 'type' => HTML5::STARTTAG,
- 'attr' => array()
- ));
-
- /* Act as if a stream of character tokens had been seen. */
- $this->insertText('This is a searchable index. '.
- 'Insert your search keywords here: ');
-
- /* Act as if a start tag token with the tag name "input"
- had been seen, with all the attributes from the "isindex"
- token, except with the "name" attribute set to the value
- "isindex" (ignoring any explicit "name" attribute). */
- $attr = $token['attr'];
- $attr[] = array('name' => 'name', 'value' => 'isindex');
-
- $this->inBody(array(
- 'name' => 'input',
- 'type' => HTML5::STARTTAG,
- 'attr' => $attr
- ));
-
- /* Act as if a stream of character tokens had been seen
- (see below for what they should say). */
- $this->insertText('This is a searchable index. '.
- 'Insert your search keywords here: ');
-
- /* Act as if an end tag token with the tag name "label"
- had been seen. */
- $this->inBody(array(
- 'name' => 'label',
- 'type' => HTML5::ENDTAG
- ));
-
- /* Act as if an end tag token with the tag name "p" had
- been seen. */
- $this->inBody(array(
- 'name' => 'p',
- 'type' => HTML5::ENDTAG
- ));
-
- /* Act as if a start tag token with the tag name "hr" had
- been seen. */
- $this->inBody(array(
- 'name' => 'hr',
- 'type' => HTML5::ENDTAG
- ));
-
- /* Act as if an end tag token with the tag name "form" had
- been seen. */
- $this->inBody(array(
- 'name' => 'form',
- 'type' => HTML5::ENDTAG
- ));
- }
- break;
+ /* A start tag whose tag name is "isindex" */
+ case 'isindex':
+ /* Parse error. */
+ // w/e
- /* A start tag whose tag name is "textarea" */
- case 'textarea':
- $this->insertElement($token);
+ /* If the form element pointer is not null,
+ then ignore the token. */
+ if ($this->form_pointer === null) {
+ /* Act as if a start tag token with the tag name "form" had
+ been seen. */
+ $this->inBody(
+ array(
+ 'name' => 'body',
+ 'type' => HTML5::STARTTAG,
+ 'attr' => array()
+ )
+ );
+
+ /* Act as if a start tag token with the tag name "hr" had
+ been seen. */
+ $this->inBody(
+ array(
+ 'name' => 'hr',
+ 'type' => HTML5::STARTTAG,
+ 'attr' => array()
+ )
+ );
+
+ /* Act as if a start tag token with the tag name "p" had
+ been seen. */
+ $this->inBody(
+ array(
+ 'name' => 'p',
+ 'type' => HTML5::STARTTAG,
+ 'attr' => array()
+ )
+ );
+
+ /* Act as if a start tag token with the tag name "label"
+ had been seen. */
+ $this->inBody(
+ array(
+ 'name' => 'label',
+ 'type' => HTML5::STARTTAG,
+ 'attr' => array()
+ )
+ );
+
+ /* Act as if a stream of character tokens had been seen. */
+ $this->insertText(
+ 'This is a searchable index. ' .
+ 'Insert your search keywords here: '
+ );
+
+ /* Act as if a start tag token with the tag name "input"
+ had been seen, with all the attributes from the "isindex"
+ token, except with the "name" attribute set to the value
+ "isindex" (ignoring any explicit "name" attribute). */
+ $attr = $token['attr'];
+ $attr[] = array('name' => 'name', 'value' => 'isindex');
+
+ $this->inBody(
+ array(
+ 'name' => 'input',
+ 'type' => HTML5::STARTTAG,
+ 'attr' => $attr
+ )
+ );
+
+ /* Act as if a stream of character tokens had been seen
+ (see below for what they should say). */
+ $this->insertText(
+ 'This is a searchable index. ' .
+ 'Insert your search keywords here: '
+ );
+
+ /* Act as if an end tag token with the tag name "label"
+ had been seen. */
+ $this->inBody(
+ array(
+ 'name' => 'label',
+ 'type' => HTML5::ENDTAG
+ )
+ );
+
+ /* Act as if an end tag token with the tag name "p" had
+ been seen. */
+ $this->inBody(
+ array(
+ 'name' => 'p',
+ 'type' => HTML5::ENDTAG
+ )
+ );
+
+ /* Act as if a start tag token with the tag name "hr" had
+ been seen. */
+ $this->inBody(
+ array(
+ 'name' => 'hr',
+ 'type' => HTML5::ENDTAG
+ )
+ );
+
+ /* Act as if an end tag token with the tag name "form" had
+ been seen. */
+ $this->inBody(
+ array(
+ 'name' => 'form',
+ 'type' => HTML5::ENDTAG
+ )
+ );
+ }
+ break;
- /* Switch the tokeniser's content model flag to the
- RCDATA state. */
- return HTML5::RCDATA;
- break;
+ /* A start tag whose tag name is "textarea" */
+ case 'textarea':
+ $this->insertElement($token);
- /* A start tag whose tag name is one of: "iframe", "noembed",
- "noframes" */
- case 'iframe': case 'noembed': case 'noframes':
- $this->insertElement($token);
+ /* Switch the tokeniser's content model flag to the
+ RCDATA state. */
+ return HTML5::RCDATA;
+ break;
- /* Switch the tokeniser's content model flag to the CDATA state. */
- return HTML5::CDATA;
- break;
+ /* A start tag whose tag name is one of: "iframe", "noembed",
+ "noframes" */
+ case 'iframe':
+ case 'noembed':
+ case 'noframes':
+ $this->insertElement($token);
- /* A start tag whose tag name is "select" */
- case 'select':
- /* Reconstruct the active formatting elements, if any. */
- $this->reconstructActiveFormattingElements();
+ /* Switch the tokeniser's content model flag to the CDATA state. */
+ return HTML5::CDATA;
+ break;
- /* Insert an HTML element for the token. */
- $this->insertElement($token);
+ /* A start tag whose tag name is "select" */
+ case 'select':
+ /* Reconstruct the active formatting elements, if any. */
+ $this->reconstructActiveFormattingElements();
- /* Change the insertion mode to "in select". */
- $this->mode = self::IN_SELECT;
- break;
+ /* Insert an HTML element for the token. */
+ $this->insertElement($token);
- /* A start or end tag whose tag name is one of: "caption", "col",
- "colgroup", "frame", "frameset", "head", "option", "optgroup",
- "tbody", "td", "tfoot", "th", "thead", "tr". */
- case 'caption': case 'col': case 'colgroup': case 'frame':
- case 'frameset': case 'head': case 'option': case 'optgroup':
- case 'tbody': case 'td': case 'tfoot': case 'th': case 'thead':
- case 'tr':
- // Parse error. Ignore the token.
- break;
+ /* Change the insertion mode to "in select". */
+ $this->mode = self::IN_SELECT;
+ break;
- /* A start or end tag whose tag name is one of: "event-source",
- "section", "nav", "article", "aside", "header", "footer",
- "datagrid", "command" */
- case 'event-source': case 'section': case 'nav': case 'article':
- case 'aside': case 'header': case 'footer': case 'datagrid':
- case 'command':
- // Work in progress!
- break;
+ /* A start or end tag whose tag name is one of: "caption", "col",
+ "colgroup", "frame", "frameset", "head", "option", "optgroup",
+ "tbody", "td", "tfoot", "th", "thead", "tr". */
+ case 'caption':
+ case 'col':
+ case 'colgroup':
+ case 'frame':
+ case 'frameset':
+ case 'head':
+ case 'option':
+ case 'optgroup':
+ case 'tbody':
+ case 'td':
+ case 'tfoot':
+ case 'th':
+ case 'thead':
+ case 'tr':
+ // Parse error. Ignore the token.
+ break;
- /* A start tag token not covered by the previous entries */
- default:
- /* Reconstruct the active formatting elements, if any. */
- $this->reconstructActiveFormattingElements();
+ /* A start or end tag whose tag name is one of: "event-source",
+ "section", "nav", "article", "aside", "header", "footer",
+ "datagrid", "command" */
+ case 'event-source':
+ case 'section':
+ case 'nav':
+ case 'article':
+ case 'aside':
+ case 'header':
+ case 'footer':
+ case 'datagrid':
+ case 'command':
+ // Work in progress!
+ break;
+
+ /* A start tag token not covered by the previous entries */
+ default:
+ /* Reconstruct the active formatting elements, if any. */
+ $this->reconstructActiveFormattingElements();
- $this->insertElement($token, true, true);
+ $this->insertElement($token, true, true);
+ break;
+ }
break;
- }
- break;
case HTML5::ENDTAG:
- switch($token['name']) {
- /* An end tag with the tag name "body" */
- case 'body':
- /* If the second element in the stack of open elements is
- not a body element, this is a parse error. Ignore the token.
- (innerHTML case) */
- if(count($this->stack) < 2 || $this->stack[1]->nodeName !== 'body') {
- // Ignore.
-
- /* If the current node is not the body element, then this
- is a parse error. */
- } elseif(end($this->stack)->nodeName !== 'body') {
- // Parse error.
- }
+ switch ($token['name']) {
+ /* An end tag with the tag name "body" */
+ case 'body':
+ /* If the second element in the stack of open elements is
+ not a body element, this is a parse error. Ignore the token.
+ (innerHTML case) */
+ if (count($this->stack) < 2 || $this->stack[1]->nodeName !== 'body') {
+ // Ignore.
+
+ /* If the current node is not the body element, then this
+ is a parse error. */
+ } elseif (end($this->stack)->nodeName !== 'body') {
+ // Parse error.
+ }
- /* Change the insertion mode to "after body". */
- $this->mode = self::AFTER_BODY;
- break;
+ /* Change the insertion mode to "after body". */
+ $this->mode = self::AFTER_BODY;
+ break;
- /* An end tag with the tag name "html" */
- case 'html':
- /* Act as if an end tag with tag name "body" had been seen,
- then, if that token wasn't ignored, reprocess the current
- token. */
- $this->inBody(array(
- 'name' => 'body',
- 'type' => HTML5::ENDTAG
- ));
+ /* An end tag with the tag name "html" */
+ case 'html':
+ /* Act as if an end tag with tag name "body" had been seen,
+ then, if that token wasn't ignored, reprocess the current
+ token. */
+ $this->inBody(
+ array(
+ 'name' => 'body',
+ 'type' => HTML5::ENDTAG
+ )
+ );
- return $this->afterBody($token);
- break;
+ return $this->afterBody($token);
+ break;
- /* An end tag whose tag name is one of: "address", "blockquote",
- "center", "dir", "div", "dl", "fieldset", "listing", "menu",
- "ol", "pre", "ul" */
- case 'address': case 'blockquote': case 'center': case 'dir':
- case 'div': case 'dl': case 'fieldset': case 'listing':
- case 'menu': case 'ol': case 'pre': case 'ul':
- /* If the stack of open elements has an element in scope
- with the same tag name as that of the token, then generate
- implied end tags. */
- if($this->elementInScope($token['name'])) {
- $this->generateImpliedEndTags();
-
- /* Now, if the current node is not an element with
- the same tag name as that of the token, then this
- is a parse error. */
- // w/e
+ /* An end tag whose tag name is one of: "address", "blockquote",
+ "center", "dir", "div", "dl", "fieldset", "listing", "menu",
+ "ol", "pre", "ul" */
+ case 'address':
+ case 'blockquote':
+ case 'center':
+ case 'dir':
+ case 'div':
+ case 'dl':
+ case 'fieldset':
+ case 'listing':
+ case 'menu':
+ case 'ol':
+ case 'pre':
+ case 'ul':
+ /* If the stack of open elements has an element in scope
+ with the same tag name as that of the token, then generate
+ implied end tags. */
+ if ($this->elementInScope($token['name'])) {
+ $this->generateImpliedEndTags();
- /* If the stack of open elements has an element in
- scope with the same tag name as that of the token,
- then pop elements from this stack until an element
- with that tag name has been popped from the stack. */
- for($n = count($this->stack) - 1; $n >= 0; $n--) {
- if($this->stack[$n]->nodeName === $token['name']) {
- $n = -1;
+ /* Now, if the current node is not an element with
+ the same tag name as that of the token, then this
+ is a parse error. */
+ // w/e
+
+ /* If the stack of open elements has an element in
+ scope with the same tag name as that of the token,
+ then pop elements from this stack until an element
+ with that tag name has been popped from the stack. */
+ for ($n = count($this->stack) - 1; $n >= 0; $n--) {
+ if ($this->stack[$n]->nodeName === $token['name']) {
+ $n = -1;
+ }
+
+ array_pop($this->stack);
}
+ }
+ break;
+
+ /* An end tag whose tag name is "form" */
+ case 'form':
+ /* If the stack of open elements has an element in scope
+ with the same tag name as that of the token, then generate
+ implied end tags. */
+ if ($this->elementInScope($token['name'])) {
+ $this->generateImpliedEndTags();
- array_pop($this->stack);
}
- }
- break;
- /* An end tag whose tag name is "form" */
- case 'form':
- /* If the stack of open elements has an element in scope
- with the same tag name as that of the token, then generate
- implied end tags. */
- if($this->elementInScope($token['name'])) {
- $this->generateImpliedEndTags();
+ if (end($this->stack)->nodeName !== $token['name']) {
+ /* Now, if the current node is not an element with the
+ same tag name as that of the token, then this is a parse
+ error. */
+ // w/e
- }
+ } else {
+ /* Otherwise, if the current node is an element with
+ the same tag name as that of the token pop that element
+ from the stack. */
+ array_pop($this->stack);
+ }
- if(end($this->stack)->nodeName !== $token['name']) {
- /* Now, if the current node is not an element with the
- same tag name as that of the token, then this is a parse
- error. */
- // w/e
+ /* In any case, set the form element pointer to null. */
+ $this->form_pointer = null;
+ break;
- } else {
- /* Otherwise, if the current node is an element with
- the same tag name as that of the token pop that element
- from the stack. */
- array_pop($this->stack);
- }
+ /* An end tag whose tag name is "p" */
+ case 'p':
+ /* If the stack of open elements has a p element in scope,
+ then generate implied end tags, except for p elements. */
+ if ($this->elementInScope('p')) {
+ $this->generateImpliedEndTags(array('p'));
- /* In any case, set the form element pointer to null. */
- $this->form_pointer = null;
- break;
+ /* If the current node is not a p element, then this is
+ a parse error. */
+ // k
- /* An end tag whose tag name is "p" */
- case 'p':
- /* If the stack of open elements has a p element in scope,
- then generate implied end tags, except for p elements. */
- if($this->elementInScope('p')) {
- $this->generateImpliedEndTags(array('p'));
-
- /* If the current node is not a p element, then this is
- a parse error. */
- // k
-
- /* If the stack of open elements has a p element in
- scope, then pop elements from this stack until the stack
- no longer has a p element in scope. */
- for($n = count($this->stack) - 1; $n >= 0; $n--) {
- if($this->elementInScope('p')) {
- array_pop($this->stack);
+ /* If the stack of open elements has a p element in
+ scope, then pop elements from this stack until the stack
+ no longer has a p element in scope. */
+ for ($n = count($this->stack) - 1; $n >= 0; $n--) {
+ if ($this->elementInScope('p')) {
+ array_pop($this->stack);
- } else {
- break;
+ } else {
+ break;
+ }
}
}
- }
- break;
-
- /* An end tag whose tag name is "dd", "dt", or "li" */
- case 'dd': case 'dt': case 'li':
- /* If the stack of open elements has an element in scope
- whose tag name matches the tag name of the token, then
- generate implied end tags, except for elements with the
- same tag name as the token. */
- if($this->elementInScope($token['name'])) {
- $this->generateImpliedEndTags(array($token['name']));
-
- /* If the current node is not an element with the same
- tag name as the token, then this is a parse error. */
- // w/e
+ break;
+ /* An end tag whose tag name is "dd", "dt", or "li" */
+ case 'dd':
+ case 'dt':
+ case 'li':
/* If the stack of open elements has an element in scope
whose tag name matches the tag name of the token, then
- pop elements from this stack until an element with that
- tag name has been popped from the stack. */
- for($n = count($this->stack) - 1; $n >= 0; $n--) {
- if($this->stack[$n]->nodeName === $token['name']) {
- $n = -1;
- }
+ generate implied end tags, except for elements with the
+ same tag name as the token. */
+ if ($this->elementInScope($token['name'])) {
+ $this->generateImpliedEndTags(array($token['name']));
+
+ /* If the current node is not an element with the same
+ tag name as the token, then this is a parse error. */
+ // w/e
+
+ /* If the stack of open elements has an element in scope
+ whose tag name matches the tag name of the token, then
+ pop elements from this stack until an element with that
+ tag name has been popped from the stack. */
+ for ($n = count($this->stack) - 1; $n >= 0; $n--) {
+ if ($this->stack[$n]->nodeName === $token['name']) {
+ $n = -1;
+ }
- array_pop($this->stack);
+ array_pop($this->stack);
+ }
}
- }
- break;
-
- /* An end tag whose tag name is one of: "h1", "h2", "h3", "h4",
- "h5", "h6" */
- case 'h1': case 'h2': case 'h3': case 'h4': case 'h5': case 'h6':
- $elements = array('h1', 'h2', 'h3', 'h4', 'h5', 'h6');
+ break;
- /* If the stack of open elements has in scope an element whose
- tag name is one of "h1", "h2", "h3", "h4", "h5", or "h6", then
- generate implied end tags. */
- if($this->elementInScope($elements)) {
- $this->generateImpliedEndTags();
+ /* An end tag whose tag name is one of: "h1", "h2", "h3", "h4",
+ "h5", "h6" */
+ case 'h1':
+ case 'h2':
+ case 'h3':
+ case 'h4':
+ case 'h5':
+ case 'h6':
+ $elements = array('h1', 'h2', 'h3', 'h4', 'h5', 'h6');
+
+ /* If the stack of open elements has in scope an element whose
+ tag name is one of "h1", "h2", "h3", "h4", "h5", or "h6", then
+ generate implied end tags. */
+ if ($this->elementInScope($elements)) {
+ $this->generateImpliedEndTags();
- /* Now, if the current node is not an element with the same
- tag name as that of the token, then this is a parse error. */
- // w/e
+ /* Now, if the current node is not an element with the same
+ tag name as that of the token, then this is a parse error. */
+ // w/e
- /* If the stack of open elements has in scope an element
- whose tag name is one of "h1", "h2", "h3", "h4", "h5", or
- "h6", then pop elements from the stack until an element
- with one of those tag names has been popped from the stack. */
- while($this->elementInScope($elements)) {
- array_pop($this->stack);
+ /* If the stack of open elements has in scope an element
+ whose tag name is one of "h1", "h2", "h3", "h4", "h5", or
+ "h6", then pop elements from the stack until an element
+ with one of those tag names has been popped from the stack. */
+ while ($this->elementInScope($elements)) {
+ array_pop($this->stack);
+ }
}
- }
- break;
+ break;
- /* An end tag whose tag name is one of: "a", "b", "big", "em",
- "font", "i", "nobr", "s", "small", "strike", "strong", "tt", "u" */
- case 'a': case 'b': case 'big': case 'em': case 'font':
- case 'i': case 'nobr': case 's': case 'small': case 'strike':
- case 'strong': case 'tt': case 'u':
- /* 1. Let the formatting element be the last element in
- the list of active formatting elements that:
- * is between the end of the list and the last scope
- marker in the list, if any, or the start of the list
- otherwise, and
- * has the same tag name as the token.
- */
- while(true) {
- for($a = count($this->a_formatting) - 1; $a >= 0; $a--) {
- if($this->a_formatting[$a] === self::MARKER) {
+ /* An end tag whose tag name is one of: "a", "b", "big", "em",
+ "font", "i", "nobr", "s", "small", "strike", "strong", "tt", "u" */
+ case 'a':
+ case 'b':
+ case 'big':
+ case 'em':
+ case 'font':
+ case 'i':
+ case 'nobr':
+ case 's':
+ case 'small':
+ case 'strike':
+ case 'strong':
+ case 'tt':
+ case 'u':
+ /* 1. Let the formatting element be the last element in
+ the list of active formatting elements that:
+ * is between the end of the list and the last scope
+ marker in the list, if any, or the start of the list
+ otherwise, and
+ * has the same tag name as the token.
+ */
+ while (true) {
+ for ($a = count($this->a_formatting) - 1; $a >= 0; $a--) {
+ if ($this->a_formatting[$a] === self::MARKER) {
+ break;
+
+ } elseif ($this->a_formatting[$a]->tagName === $token['name']) {
+ $formatting_element = $this->a_formatting[$a];
+ $in_stack = in_array($formatting_element, $this->stack, true);
+ $fe_af_pos = $a;
+ break;
+ }
+ }
+
+ /* If there is no such node, or, if that node is
+ also in the stack of open elements but the element
+ is not in scope, then this is a parse error. Abort
+ these steps. The token is ignored. */
+ if (!isset($formatting_element) || ($in_stack &&
+ !$this->elementInScope($token['name']))
+ ) {
break;
- } elseif($this->a_formatting[$a]->tagName === $token['name']) {
- $formatting_element = $this->a_formatting[$a];
- $in_stack = in_array($formatting_element, $this->stack, true);
- $fe_af_pos = $a;
+ /* Otherwise, if there is such a node, but that node
+ is not in the stack of open elements, then this is a
+ parse error; remove the element from the list, and
+ abort these steps. */
+ } elseif (isset($formatting_element) && !$in_stack) {
+ unset($this->a_formatting[$fe_af_pos]);
+ $this->a_formatting = array_merge($this->a_formatting);
break;
}
- }
-
- /* If there is no such node, or, if that node is
- also in the stack of open elements but the element
- is not in scope, then this is a parse error. Abort
- these steps. The token is ignored. */
- if(!isset($formatting_element) || ($in_stack &&
- !$this->elementInScope($token['name']))) {
- break;
-
- /* Otherwise, if there is such a node, but that node
- is not in the stack of open elements, then this is a
- parse error; remove the element from the list, and
- abort these steps. */
- } elseif(isset($formatting_element) && !$in_stack) {
- unset($this->a_formatting[$fe_af_pos]);
- $this->a_formatting = array_merge($this->a_formatting);
- break;
- }
- /* 2. Let the furthest block be the topmost node in the
- stack of open elements that is lower in the stack
- than the formatting element, and is not an element in
- the phrasing or formatting categories. There might
- not be one. */
- $fe_s_pos = array_search($formatting_element, $this->stack, true);
- $length = count($this->stack);
+ /* 2. Let the furthest block be the topmost node in the
+ stack of open elements that is lower in the stack
+ than the formatting element, and is not an element in
+ the phrasing or formatting categories. There might
+ not be one. */
+ $fe_s_pos = array_search($formatting_element, $this->stack, true);
+ $length = count($this->stack);
- for($s = $fe_s_pos + 1; $s < $length; $s++) {
- $category = $this->getElementCategory($this->stack[$s]->nodeName);
+ for ($s = $fe_s_pos + 1; $s < $length; $s++) {
+ $category = $this->getElementCategory($this->stack[$s]->nodeName);
- if($category !== self::PHRASING && $category !== self::FORMATTING) {
- $furthest_block = $this->stack[$s];
+ if ($category !== self::PHRASING && $category !== self::FORMATTING) {
+ $furthest_block = $this->stack[$s];
+ }
}
- }
- /* 3. If there is no furthest block, then the UA must
- skip the subsequent steps and instead just pop all
- the nodes from the bottom of the stack of open
- elements, from the current node up to the formatting
- element, and remove the formatting element from the
- list of active formatting elements. */
- if(!isset($furthest_block)) {
- for($n = $length - 1; $n >= $fe_s_pos; $n--) {
- array_pop($this->stack);
- }
+ /* 3. If there is no furthest block, then the UA must
+ skip the subsequent steps and instead just pop all
+ the nodes from the bottom of the stack of open
+ elements, from the current node up to the formatting
+ element, and remove the formatting element from the
+ list of active formatting elements. */
+ if (!isset($furthest_block)) {
+ for ($n = $length - 1; $n >= $fe_s_pos; $n--) {
+ array_pop($this->stack);
+ }
- unset($this->a_formatting[$fe_af_pos]);
- $this->a_formatting = array_merge($this->a_formatting);
- break;
- }
+ unset($this->a_formatting[$fe_af_pos]);
+ $this->a_formatting = array_merge($this->a_formatting);
+ break;
+ }
- /* 4. Let the common ancestor be the element
- immediately above the formatting element in the stack
- of open elements. */
- $common_ancestor = $this->stack[$fe_s_pos - 1];
+ /* 4. Let the common ancestor be the element
+ immediately above the formatting element in the stack
+ of open elements. */
+ $common_ancestor = $this->stack[$fe_s_pos - 1];
- /* 5. If the furthest block has a parent node, then
- remove the furthest block from its parent node. */
- if($furthest_block->parentNode !== null) {
- $furthest_block->parentNode->removeChild($furthest_block);
- }
+ /* 5. If the furthest block has a parent node, then
+ remove the furthest block from its parent node. */
+ if ($furthest_block->parentNode !== null) {
+ $furthest_block->parentNode->removeChild($furthest_block);
+ }
- /* 6. Let a bookmark note the position of the
- formatting element in the list of active formatting
- elements relative to the elements on either side
- of it in the list. */
- $bookmark = $fe_af_pos;
-
- /* 7. Let node and last node be the furthest block.
- Follow these steps: */
- $node = $furthest_block;
- $last_node = $furthest_block;
-
- while(true) {
- for($n = array_search($node, $this->stack, true) - 1; $n >= 0; $n--) {
- /* 7.1 Let node be the element immediately
- prior to node in the stack of open elements. */
- $node = $this->stack[$n];
-
- /* 7.2 If node is not in the list of active
- formatting elements, then remove node from
- the stack of open elements and then go back
- to step 1. */
- if(!in_array($node, $this->a_formatting, true)) {
- unset($this->stack[$n]);
- $this->stack = array_merge($this->stack);
+ /* 6. Let a bookmark note the position of the
+ formatting element in the list of active formatting
+ elements relative to the elements on either side
+ of it in the list. */
+ $bookmark = $fe_af_pos;
+
+ /* 7. Let node and last node be the furthest block.
+ Follow these steps: */
+ $node = $furthest_block;
+ $last_node = $furthest_block;
+
+ while (true) {
+ for ($n = array_search($node, $this->stack, true) - 1; $n >= 0; $n--) {
+ /* 7.1 Let node be the element immediately
+ prior to node in the stack of open elements. */
+ $node = $this->stack[$n];
+
+ /* 7.2 If node is not in the list of active
+ formatting elements, then remove node from
+ the stack of open elements and then go back
+ to step 1. */
+ if (!in_array($node, $this->a_formatting, true)) {
+ unset($this->stack[$n]);
+ $this->stack = array_merge($this->stack);
+
+ } else {
+ break;
+ }
+ }
- } else {
+ /* 7.3 Otherwise, if node is the formatting
+ element, then go to the next step in the overall
+ algorithm. */
+ if ($node === $formatting_element) {
break;
+
+ /* 7.4 Otherwise, if last node is the furthest
+ block, then move the aforementioned bookmark to
+ be immediately after the node in the list of
+ active formatting elements. */
+ } elseif ($last_node === $furthest_block) {
+ $bookmark = array_search($node, $this->a_formatting, true) + 1;
}
- }
- /* 7.3 Otherwise, if node is the formatting
- element, then go to the next step in the overall
- algorithm. */
- if($node === $formatting_element) {
- break;
+ /* 7.5 If node has any children, perform a
+ shallow clone of node, replace the entry for
+ node in the list of active formatting elements
+ with an entry for the clone, replace the entry
+ for node in the stack of open elements with an
+ entry for the clone, and let node be the clone. */
+ if ($node->hasChildNodes()) {
+ $clone = $node->cloneNode();
+ $s_pos = array_search($node, $this->stack, true);
+ $a_pos = array_search($node, $this->a_formatting, true);
+
+ $this->stack[$s_pos] = $clone;
+ $this->a_formatting[$a_pos] = $clone;
+ $node = $clone;
+ }
- /* 7.4 Otherwise, if last node is the furthest
- block, then move the aforementioned bookmark to
- be immediately after the node in the list of
- active formatting elements. */
- } elseif($last_node === $furthest_block) {
- $bookmark = array_search($node, $this->a_formatting, true) + 1;
- }
+ /* 7.6 Insert last node into node, first removing
+ it from its previous parent node if any. */
+ if ($last_node->parentNode !== null) {
+ $last_node->parentNode->removeChild($last_node);
+ }
+
+ $node->appendChild($last_node);
- /* 7.5 If node has any children, perform a
- shallow clone of node, replace the entry for
- node in the list of active formatting elements
- with an entry for the clone, replace the entry
- for node in the stack of open elements with an
- entry for the clone, and let node be the clone. */
- if($node->hasChildNodes()) {
- $clone = $node->cloneNode();
- $s_pos = array_search($node, $this->stack, true);
- $a_pos = array_search($node, $this->a_formatting, true);
-
- $this->stack[$s_pos] = $clone;
- $this->a_formatting[$a_pos] = $clone;
- $node = $clone;
+ /* 7.7 Let last node be node. */
+ $last_node = $node;
}
- /* 7.6 Insert last node into node, first removing
- it from its previous parent node if any. */
- if($last_node->parentNode !== null) {
+ /* 8. Insert whatever last node ended up being in
+ the previous step into the common ancestor node,
+ first removing it from its previous parent node if
+ any. */
+ if ($last_node->parentNode !== null) {
$last_node->parentNode->removeChild($last_node);
}
- $node->appendChild($last_node);
+ $common_ancestor->appendChild($last_node);
- /* 7.7 Let last node be node. */
- $last_node = $node;
- }
+ /* 9. Perform a shallow clone of the formatting
+ element. */
+ $clone = $formatting_element->cloneNode();
- /* 8. Insert whatever last node ended up being in
- the previous step into the common ancestor node,
- first removing it from its previous parent node if
- any. */
- if($last_node->parentNode !== null) {
- $last_node->parentNode->removeChild($last_node);
- }
+ /* 10. Take all of the child nodes of the furthest
+ block and append them to the clone created in the
+ last step. */
+ while ($furthest_block->hasChildNodes()) {
+ $child = $furthest_block->firstChild;
+ $furthest_block->removeChild($child);
+ $clone->appendChild($child);
+ }
- $common_ancestor->appendChild($last_node);
+ /* 11. Append that clone to the furthest block. */
+ $furthest_block->appendChild($clone);
- /* 9. Perform a shallow clone of the formatting
- element. */
- $clone = $formatting_element->cloneNode();
+ /* 12. Remove the formatting element from the list
+ of active formatting elements, and insert the clone
+ into the list of active formatting elements at the
+ position of the aforementioned bookmark. */
+ $fe_af_pos = array_search($formatting_element, $this->a_formatting, true);
+ unset($this->a_formatting[$fe_af_pos]);
+ $this->a_formatting = array_merge($this->a_formatting);
- /* 10. Take all of the child nodes of the furthest
- block and append them to the clone created in the
- last step. */
- while($furthest_block->hasChildNodes()) {
- $child = $furthest_block->firstChild;
- $furthest_block->removeChild($child);
- $clone->appendChild($child);
+ $af_part1 = array_slice($this->a_formatting, 0, $bookmark - 1);
+ $af_part2 = array_slice($this->a_formatting, $bookmark, count($this->a_formatting));
+ $this->a_formatting = array_merge($af_part1, array($clone), $af_part2);
+
+ /* 13. Remove the formatting element from the stack
+ of open elements, and insert the clone into the stack
+ of open elements immediately after (i.e. in a more
+ deeply nested position than) the position of the
+ furthest block in that stack. */
+ $fe_s_pos = array_search($formatting_element, $this->stack, true);
+ $fb_s_pos = array_search($furthest_block, $this->stack, true);
+ unset($this->stack[$fe_s_pos]);
+
+ $s_part1 = array_slice($this->stack, 0, $fb_s_pos);
+ $s_part2 = array_slice($this->stack, $fb_s_pos + 1, count($this->stack));
+ $this->stack = array_merge($s_part1, array($clone), $s_part2);
+
+ /* 14. Jump back to step 1 in this series of steps. */
+ unset($formatting_element, $fe_af_pos, $fe_s_pos, $furthest_block);
}
+ break;
- /* 11. Append that clone to the furthest block. */
- $furthest_block->appendChild($clone);
-
- /* 12. Remove the formatting element from the list
- of active formatting elements, and insert the clone
- into the list of active formatting elements at the
- position of the aforementioned bookmark. */
- $fe_af_pos = array_search($formatting_element, $this->a_formatting, true);
- unset($this->a_formatting[$fe_af_pos]);
- $this->a_formatting = array_merge($this->a_formatting);
-
- $af_part1 = array_slice($this->a_formatting, 0, $bookmark - 1);
- $af_part2 = array_slice($this->a_formatting, $bookmark, count($this->a_formatting));
- $this->a_formatting = array_merge($af_part1, array($clone), $af_part2);
-
- /* 13. Remove the formatting element from the stack
- of open elements, and insert the clone into the stack
- of open elements immediately after (i.e. in a more
- deeply nested position than) the position of the
- furthest block in that stack. */
- $fe_s_pos = array_search($formatting_element, $this->stack, true);
- $fb_s_pos = array_search($furthest_block, $this->stack, true);
- unset($this->stack[$fe_s_pos]);
-
- $s_part1 = array_slice($this->stack, 0, $fb_s_pos);
- $s_part2 = array_slice($this->stack, $fb_s_pos + 1, count($this->stack));
- $this->stack = array_merge($s_part1, array($clone), $s_part2);
-
- /* 14. Jump back to step 1 in this series of steps. */
- unset($formatting_element, $fe_af_pos, $fe_s_pos, $furthest_block);
- }
- break;
+ /* An end tag token whose tag name is one of: "button",
+ "marquee", "object" */
+ case 'button':
+ case 'marquee':
+ case 'object':
+ /* If the stack of open elements has an element in scope whose
+ tag name matches the tag name of the token, then generate implied
+ tags. */
+ if ($this->elementInScope($token['name'])) {
+ $this->generateImpliedEndTags();
- /* An end tag token whose tag name is one of: "button",
- "marquee", "object" */
- case 'button': case 'marquee': case 'object':
- /* If the stack of open elements has an element in scope whose
- tag name matches the tag name of the token, then generate implied
- tags. */
- if($this->elementInScope($token['name'])) {
- $this->generateImpliedEndTags();
-
- /* Now, if the current node is not an element with the same
- tag name as the token, then this is a parse error. */
- // k
-
- /* Now, if the stack of open elements has an element in scope
- whose tag name matches the tag name of the token, then pop
- elements from the stack until that element has been popped from
- the stack, and clear the list of active formatting elements up
- to the last marker. */
- for($n = count($this->stack) - 1; $n >= 0; $n--) {
- if($this->stack[$n]->nodeName === $token['name']) {
- $n = -1;
- }
+ /* Now, if the current node is not an element with the same
+ tag name as the token, then this is a parse error. */
+ // k
- array_pop($this->stack);
- }
+ /* Now, if the stack of open elements has an element in scope
+ whose tag name matches the tag name of the token, then pop
+ elements from the stack until that element has been popped from
+ the stack, and clear the list of active formatting elements up
+ to the last marker. */
+ for ($n = count($this->stack) - 1; $n >= 0; $n--) {
+ if ($this->stack[$n]->nodeName === $token['name']) {
+ $n = -1;
+ }
- $marker = end(array_keys($this->a_formatting, self::MARKER, true));
+ array_pop($this->stack);
+ }
- for($n = count($this->a_formatting) - 1; $n > $marker; $n--) {
- array_pop($this->a_formatting);
- }
- }
- break;
+ $marker = end(array_keys($this->a_formatting, self::MARKER, true));
- /* Or an end tag whose tag name is one of: "area", "basefont",
- "bgsound", "br", "embed", "hr", "iframe", "image", "img",
- "input", "isindex", "noembed", "noframes", "param", "select",
- "spacer", "table", "textarea", "wbr" */
- case 'area': case 'basefont': case 'bgsound': case 'br':
- case 'embed': case 'hr': case 'iframe': case 'image':
- case 'img': case 'input': case 'isindex': case 'noembed':
- case 'noframes': case 'param': case 'select': case 'spacer':
- case 'table': case 'textarea': case 'wbr':
- // Parse error. Ignore the token.
- break;
+ for ($n = count($this->a_formatting) - 1; $n > $marker; $n--) {
+ array_pop($this->a_formatting);
+ }
+ }
+ break;
- /* An end tag token not covered by the previous entries */
- default:
- for($n = count($this->stack) - 1; $n >= 0; $n--) {
- /* Initialise node to be the current node (the bottommost
- node of the stack). */
- $node = end($this->stack);
-
- /* If node has the same tag name as the end tag token,
- then: */
- if($token['name'] === $node->nodeName) {
- /* Generate implied end tags. */
- $this->generateImpliedEndTags();
+ /* Or an end tag whose tag name is one of: "area", "basefont",
+ "bgsound", "br", "embed", "hr", "iframe", "image", "img",
+ "input", "isindex", "noembed", "noframes", "param", "select",
+ "spacer", "table", "textarea", "wbr" */
+ case 'area':
+ case 'basefont':
+ case 'bgsound':
+ case 'br':
+ case 'embed':
+ case 'hr':
+ case 'iframe':
+ case 'image':
+ case 'img':
+ case 'input':
+ case 'isindex':
+ case 'noembed':
+ case 'noframes':
+ case 'param':
+ case 'select':
+ case 'spacer':
+ case 'table':
+ case 'textarea':
+ case 'wbr':
+ // Parse error. Ignore the token.
+ break;
- /* If the tag name of the end tag token does not
- match the tag name of the current node, this is a
- parse error. */
- // k
+ /* An end tag token not covered by the previous entries */
+ default:
+ for ($n = count($this->stack) - 1; $n >= 0; $n--) {
+ /* Initialise node to be the current node (the bottommost
+ node of the stack). */
+ $node = end($this->stack);
+
+ /* If node has the same tag name as the end tag token,
+ then: */
+ if ($token['name'] === $node->nodeName) {
+ /* Generate implied end tags. */
+ $this->generateImpliedEndTags();
+
+ /* If the tag name of the end tag token does not
+ match the tag name of the current node, this is a
+ parse error. */
+ // k
+
+ /* Pop all the nodes from the current node up to
+ node, including node, then stop this algorithm. */
+ for ($x = count($this->stack) - $n; $x >= $n; $x--) {
+ array_pop($this->stack);
+ }
- /* Pop all the nodes from the current node up to
- node, including node, then stop this algorithm. */
- for($x = count($this->stack) - $n; $x >= $n; $x--) {
- array_pop($this->stack);
- }
-
- } else {
- $category = $this->getElementCategory($node);
-
- if($category !== self::SPECIAL && $category !== self::SCOPING) {
- /* Otherwise, if node is in neither the formatting
- category nor the phrasing category, then this is a
- parse error. Stop this algorithm. The end tag token
- is ignored. */
- return false;
+ } else {
+ $category = $this->getElementCategory($node);
+
+ if ($category !== self::SPECIAL && $category !== self::SCOPING) {
+ /* Otherwise, if node is in neither the formatting
+ category nor the phrasing category, then this is a
+ parse error. Stop this algorithm. The end tag token
+ is ignored. */
+ return false;
+ }
}
}
- }
+ break;
+ }
break;
- }
- break;
}
}
- private function inTable($token) {
+ private function inTable($token)
+ {
$clear = array('html', 'table');
/* A character token that is one of one of U+0009 CHARACTER TABULATION,
U+000A LINE FEED (LF), U+000B LINE TABULATION, U+000C FORM FEED (FF),
or U+0020 SPACE */
- if($token['type'] === HTML5::CHARACTR &&
- preg_match('/^[\t\n\x0b\x0c ]+$/', $token['data'])) {
+ if ($token['type'] === HTML5::CHARACTR &&
+ preg_match('/^[\t\n\x0b\x0c ]+$/', $token['data'])
+ ) {
/* Append the character to the current node. */
$text = $this->dom->createTextNode($token['data']);
end($this->stack)->appendChild($text);
- /* A comment token */
- } elseif($token['type'] === HTML5::COMMENT) {
+ /* A comment token */
+ } elseif ($token['type'] === HTML5::COMMENT) {
/* Append a Comment node to the current node with the data
attribute set to the data given in the comment token. */
$comment = $this->dom->createComment($token['data']);
end($this->stack)->appendChild($comment);
- /* A start tag whose tag name is "caption" */
- } elseif($token['type'] === HTML5::STARTTAG &&
- $token['name'] === 'caption') {
+ /* A start tag whose tag name is "caption" */
+ } elseif ($token['type'] === HTML5::STARTTAG &&
+ $token['name'] === 'caption'
+ ) {
/* Clear the stack back to a table context. */
$this->clearStackToTableContext($clear);
@@ -2663,9 +3350,10 @@ class HTML5TreeConstructer {
$this->insertElement($token);
$this->mode = self::IN_CAPTION;
- /* A start tag whose tag name is "colgroup" */
- } elseif($token['type'] === HTML5::STARTTAG &&
- $token['name'] === 'colgroup') {
+ /* A start tag whose tag name is "colgroup" */
+ } elseif ($token['type'] === HTML5::STARTTAG &&
+ $token['name'] === 'colgroup'
+ ) {
/* Clear the stack back to a table context. */
$this->clearStackToTableContext($clear);
@@ -2674,20 +3362,26 @@ class HTML5TreeConstructer {
$this->insertElement($token);
$this->mode = self::IN_CGROUP;
- /* A start tag whose tag name is "col" */
- } elseif($token['type'] === HTML5::STARTTAG &&
- $token['name'] === 'col') {
- $this->inTable(array(
- 'name' => 'colgroup',
- 'type' => HTML5::STARTTAG,
- 'attr' => array()
- ));
+ /* A start tag whose tag name is "col" */
+ } elseif ($token['type'] === HTML5::STARTTAG &&
+ $token['name'] === 'col'
+ ) {
+ $this->inTable(
+ array(
+ 'name' => 'colgroup',
+ 'type' => HTML5::STARTTAG,
+ 'attr' => array()
+ )
+ );
$this->inColumnGroup($token);
- /* A start tag whose tag name is one of: "tbody", "tfoot", "thead" */
- } elseif($token['type'] === HTML5::STARTTAG && in_array($token['name'],
- array('tbody', 'tfoot', 'thead'))) {
+ /* A start tag whose tag name is one of: "tbody", "tfoot", "thead" */
+ } elseif ($token['type'] === HTML5::STARTTAG && in_array(
+ $token['name'],
+ array('tbody', 'tfoot', 'thead')
+ )
+ ) {
/* Clear the stack back to a table context. */
$this->clearStackToTableContext($clear);
@@ -2696,42 +3390,49 @@ class HTML5TreeConstructer {
$this->insertElement($token);
$this->mode = self::IN_TBODY;
- /* A start tag whose tag name is one of: "td", "th", "tr" */
- } elseif($token['type'] === HTML5::STARTTAG &&
- in_array($token['name'], array('td', 'th', 'tr'))) {
+ /* A start tag whose tag name is one of: "td", "th", "tr" */
+ } elseif ($token['type'] === HTML5::STARTTAG &&
+ in_array($token['name'], array('td', 'th', 'tr'))
+ ) {
/* Act as if a start tag token with the tag name "tbody" had been
seen, then reprocess the current token. */
- $this->inTable(array(
- 'name' => 'tbody',
- 'type' => HTML5::STARTTAG,
- 'attr' => array()
- ));
+ $this->inTable(
+ array(
+ 'name' => 'tbody',
+ 'type' => HTML5::STARTTAG,
+ 'attr' => array()
+ )
+ );
return $this->inTableBody($token);
- /* A start tag whose tag name is "table" */
- } elseif($token['type'] === HTML5::STARTTAG &&
- $token['name'] === 'table') {
+ /* A start tag whose tag name is "table" */
+ } elseif ($token['type'] === HTML5::STARTTAG &&
+ $token['name'] === 'table'
+ ) {
/* Parse error. Act as if an end tag token with the tag name "table"
had been seen, then, if that token wasn't ignored, reprocess the
current token. */
- $this->inTable(array(
- 'name' => 'table',
- 'type' => HTML5::ENDTAG
- ));
+ $this->inTable(
+ array(
+ 'name' => 'table',
+ 'type' => HTML5::ENDTAG
+ )
+ );
return $this->mainPhase($token);
- /* An end tag whose tag name is "table" */
- } elseif($token['type'] === HTML5::ENDTAG &&
- $token['name'] === 'table') {
+ /* An end tag whose tag name is "table" */
+ } elseif ($token['type'] === HTML5::ENDTAG &&
+ $token['name'] === 'table'
+ ) {
/* If the stack of open elements does not have an element in table
scope with the same tag name as the token, this is a parse error.
Ignore the token. (innerHTML case) */
- if(!$this->elementInScope($token['name'], true)) {
+ if (!$this->elementInScope($token['name'], true)) {
return false;
- /* Otherwise: */
+ /* Otherwise: */
} else {
/* Generate implied end tags. */
$this->generateImpliedEndTags();
@@ -2742,11 +3443,11 @@ class HTML5TreeConstructer {
/* Pop elements from this stack until a table element has been
popped from the stack. */
- while(true) {
+ while (true) {
$current = end($this->stack)->nodeName;
array_pop($this->stack);
- if($current === 'table') {
+ if ($current === 'table') {
break;
}
}
@@ -2755,14 +3456,28 @@ class HTML5TreeConstructer {
$this->resetInsertionMode();
}
- /* An end tag whose tag name is one of: "body", "caption", "col",
- "colgroup", "html", "tbody", "td", "tfoot", "th", "thead", "tr" */
- } elseif($token['type'] === HTML5::ENDTAG && in_array($token['name'],
- array('body', 'caption', 'col', 'colgroup', 'html', 'tbody', 'td',
- 'tfoot', 'th', 'thead', 'tr'))) {
+ /* An end tag whose tag name is one of: "body", "caption", "col",
+ "colgroup", "html", "tbody", "td", "tfoot", "th", "thead", "tr" */
+ } elseif ($token['type'] === HTML5::ENDTAG && in_array(
+ $token['name'],
+ array(
+ 'body',
+ 'caption',
+ 'col',
+ 'colgroup',
+ 'html',
+ 'tbody',
+ 'td',
+ 'tfoot',
+ 'th',
+ 'thead',
+ 'tr'
+ )
+ )
+ ) {
// Parse error. Ignore the token.
- /* Anything else */
+ /* Anything else */
} else {
/* Parse error. Process the token as if the insertion mode was "in
body", with the following exception: */
@@ -2770,8 +3485,11 @@ class HTML5TreeConstructer {
/* If the current node is a table, tbody, tfoot, thead, or tr
element, then, whenever a node would be inserted into the current
node, it must instead be inserted into the foster parent element. */
- if(in_array(end($this->stack)->nodeName,
- array('table', 'tbody', 'tfoot', 'thead', 'tr'))) {
+ if (in_array(
+ end($this->stack)->nodeName,
+ array('table', 'tbody', 'tfoot', 'thead', 'tr')
+ )
+ ) {
/* The foster parent element is the parent element of the last
table element in the stack of open elements, if there is a
table element and it has such a parent element. If there is no
@@ -2783,21 +3501,22 @@ class HTML5TreeConstructer {
its parent node is not an element, then the foster parent
element is the element before the last table element in the
stack of open elements. */
- for($n = count($this->stack) - 1; $n >= 0; $n--) {
- if($this->stack[$n]->nodeName === 'table') {
+ for ($n = count($this->stack) - 1; $n >= 0; $n--) {
+ if ($this->stack[$n]->nodeName === 'table') {
$table = $this->stack[$n];
break;
}
}
- if(isset($table) && $table->parentNode !== null) {
+ if (isset($table) && $table->parentNode !== null) {
$this->foster_parent = $table->parentNode;
- } elseif(!isset($table)) {
+ } elseif (!isset($table)) {
$this->foster_parent = $this->stack[0];
- } elseif(isset($table) && ($table->parentNode === null ||
- $table->parentNode->nodeType !== XML_ELEMENT_NODE)) {
+ } elseif (isset($table) && ($table->parentNode === null ||
+ $table->parentNode->nodeType !== XML_ELEMENT_NODE)
+ ) {
$this->foster_parent = $this->stack[$n - 1];
}
}
@@ -2806,16 +3525,17 @@ class HTML5TreeConstructer {
}
}
- private function inCaption($token) {
+ private function inCaption($token)
+ {
/* An end tag whose tag name is "caption" */
- if($token['type'] === HTML5::ENDTAG && $token['name'] === 'caption') {
+ if ($token['type'] === HTML5::ENDTAG && $token['name'] === 'caption') {
/* If the stack of open elements does not have an element in table
scope with the same tag name as the token, this is a parse error.
Ignore the token. (innerHTML case) */
- if(!$this->elementInScope($token['name'], true)) {
+ if (!$this->elementInScope($token['name'], true)) {
// Ignore
- /* Otherwise: */
+ /* Otherwise: */
} else {
/* Generate implied end tags. */
$this->generateImpliedEndTags();
@@ -2826,11 +3546,11 @@ class HTML5TreeConstructer {
/* Pop elements from this stack until a caption element has
been popped from the stack. */
- while(true) {
+ while (true) {
$node = end($this->stack)->nodeName;
array_pop($this->stack);
- if($node === 'caption') {
+ if ($node === 'caption') {
break;
}
}
@@ -2843,99 +3563,131 @@ class HTML5TreeConstructer {
$this->mode = self::IN_TABLE;
}
- /* A start tag whose tag name is one of: "caption", "col", "colgroup",
- "tbody", "td", "tfoot", "th", "thead", "tr", or an end tag whose tag
- name is "table" */
- } elseif(($token['type'] === HTML5::STARTTAG && in_array($token['name'],
- array('caption', 'col', 'colgroup', 'tbody', 'td', 'tfoot', 'th',
- 'thead', 'tr'))) || ($token['type'] === HTML5::ENDTAG &&
- $token['name'] === 'table')) {
+ /* A start tag whose tag name is one of: "caption", "col", "colgroup",
+ "tbody", "td", "tfoot", "th", "thead", "tr", or an end tag whose tag
+ name is "table" */
+ } elseif (($token['type'] === HTML5::STARTTAG && in_array(
+ $token['name'],
+ array(
+ 'caption',
+ 'col',
+ 'colgroup',
+ 'tbody',
+ 'td',
+ 'tfoot',
+ 'th',
+ 'thead',
+ 'tr'
+ )
+ )) || ($token['type'] === HTML5::ENDTAG &&
+ $token['name'] === 'table')
+ ) {
/* Parse error. Act as if an end tag with the tag name "caption"
had been seen, then, if that token wasn't ignored, reprocess the
current token. */
- $this->inCaption(array(
- 'name' => 'caption',
- 'type' => HTML5::ENDTAG
- ));
+ $this->inCaption(
+ array(
+ 'name' => 'caption',
+ 'type' => HTML5::ENDTAG
+ )
+ );
return $this->inTable($token);
- /* An end tag whose tag name is one of: "body", "col", "colgroup",
- "html", "tbody", "td", "tfoot", "th", "thead", "tr" */
- } elseif($token['type'] === HTML5::ENDTAG && in_array($token['name'],
- array('body', 'col', 'colgroup', 'html', 'tbody', 'tfoot', 'th',
- 'thead', 'tr'))) {
+ /* An end tag whose tag name is one of: "body", "col", "colgroup",
+ "html", "tbody", "td", "tfoot", "th", "thead", "tr" */
+ } elseif ($token['type'] === HTML5::ENDTAG && in_array(
+ $token['name'],
+ array(
+ 'body',
+ 'col',
+ 'colgroup',
+ 'html',
+ 'tbody',
+ 'tfoot',
+ 'th',
+ 'thead',
+ 'tr'
+ )
+ )
+ ) {
// Parse error. Ignore the token.
- /* Anything else */
+ /* Anything else */
} else {
/* Process the token as if the insertion mode was "in body". */
$this->inBody($token);
}
}
- private function inColumnGroup($token) {
+ private function inColumnGroup($token)
+ {
/* A character token that is one of one of U+0009 CHARACTER TABULATION,
U+000A LINE FEED (LF), U+000B LINE TABULATION, U+000C FORM FEED (FF),
or U+0020 SPACE */
- if($token['type'] === HTML5::CHARACTR &&
- preg_match('/^[\t\n\x0b\x0c ]+$/', $token['data'])) {
+ if ($token['type'] === HTML5::CHARACTR &&
+ preg_match('/^[\t\n\x0b\x0c ]+$/', $token['data'])
+ ) {
/* Append the character to the current node. */
$text = $this->dom->createTextNode($token['data']);
end($this->stack)->appendChild($text);
- /* A comment token */
- } elseif($token['type'] === HTML5::COMMENT) {
+ /* A comment token */
+ } elseif ($token['type'] === HTML5::COMMENT) {
/* Append a Comment node to the current node with the data
attribute set to the data given in the comment token. */
$comment = $this->dom->createComment($token['data']);
end($this->stack)->appendChild($comment);
- /* A start tag whose tag name is "col" */
- } elseif($token['type'] === HTML5::STARTTAG && $token['name'] === 'col') {
+ /* A start tag whose tag name is "col" */
+ } elseif ($token['type'] === HTML5::STARTTAG && $token['name'] === 'col') {
/* Insert a col element for the token. Immediately pop the current
node off the stack of open elements. */
$this->insertElement($token);
array_pop($this->stack);
- /* An end tag whose tag name is "colgroup" */
- } elseif($token['type'] === HTML5::ENDTAG &&
- $token['name'] === 'colgroup') {
+ /* An end tag whose tag name is "colgroup" */
+ } elseif ($token['type'] === HTML5::ENDTAG &&
+ $token['name'] === 'colgroup'
+ ) {
/* If the current node is the root html element, then this is a
parse error, ignore the token. (innerHTML case) */
- if(end($this->stack)->nodeName === 'html') {
+ if (end($this->stack)->nodeName === 'html') {
// Ignore
- /* Otherwise, pop the current node (which will be a colgroup
- element) from the stack of open elements. Switch the insertion
- mode to "in table". */
+ /* Otherwise, pop the current node (which will be a colgroup
+ element) from the stack of open elements. Switch the insertion
+ mode to "in table". */
} else {
array_pop($this->stack);
$this->mode = self::IN_TABLE;
}
- /* An end tag whose tag name is "col" */
- } elseif($token['type'] === HTML5::ENDTAG && $token['name'] === 'col') {
+ /* An end tag whose tag name is "col" */
+ } elseif ($token['type'] === HTML5::ENDTAG && $token['name'] === 'col') {
/* Parse error. Ignore the token. */
- /* Anything else */
+ /* Anything else */
} else {
/* Act as if an end tag with the tag name "colgroup" had been seen,
and then, if that token wasn't ignored, reprocess the current token. */
- $this->inColumnGroup(array(
- 'name' => 'colgroup',
- 'type' => HTML5::ENDTAG
- ));
+ $this->inColumnGroup(
+ array(
+ 'name' => 'colgroup',
+ 'type' => HTML5::ENDTAG
+ )
+ );
return $this->inTable($token);
}
}
- private function inTableBody($token) {
+ private function inTableBody($token)
+ {
$clear = array('tbody', 'tfoot', 'thead', 'html');
/* A start tag whose tag name is "tr" */
- if($token['type'] === HTML5::STARTTAG && $token['name'] === 'tr') {
+ if ($token['type'] === HTML5::STARTTAG && $token['name'] === 'tr') {
/* Clear the stack back to a table body context. */
$this->clearStackToTableContext($clear);
@@ -2944,29 +3696,33 @@ class HTML5TreeConstructer {
$this->insertElement($token);
$this->mode = self::IN_ROW;
- /* A start tag whose tag name is one of: "th", "td" */
- } elseif($token['type'] === HTML5::STARTTAG &&
- ($token['name'] === 'th' || $token['name'] === 'td')) {
+ /* A start tag whose tag name is one of: "th", "td" */
+ } elseif ($token['type'] === HTML5::STARTTAG &&
+ ($token['name'] === 'th' || $token['name'] === 'td')
+ ) {
/* Parse error. Act as if a start tag with the tag name "tr" had
been seen, then reprocess the current token. */
- $this->inTableBody(array(
- 'name' => 'tr',
- 'type' => HTML5::STARTTAG,
- 'attr' => array()
- ));
+ $this->inTableBody(
+ array(
+ 'name' => 'tr',
+ 'type' => HTML5::STARTTAG,
+ 'attr' => array()
+ )
+ );
return $this->inRow($token);
- /* An end tag whose tag name is one of: "tbody", "tfoot", "thead" */
- } elseif($token['type'] === HTML5::ENDTAG &&
- in_array($token['name'], array('tbody', 'tfoot', 'thead'))) {
+ /* An end tag whose tag name is one of: "tbody", "tfoot", "thead" */
+ } elseif ($token['type'] === HTML5::ENDTAG &&
+ in_array($token['name'], array('tbody', 'tfoot', 'thead'))
+ ) {
/* If the stack of open elements does not have an element in table
scope with the same tag name as the token, this is a parse error.
Ignore the token. */
- if(!$this->elementInScope($token['name'], true)) {
+ if (!$this->elementInScope($token['name'], true)) {
// Ignore
- /* Otherwise: */
+ /* Otherwise: */
} else {
/* Clear the stack back to a table body context. */
$this->clearStackToTableContext($clear);
@@ -2977,18 +3733,21 @@ class HTML5TreeConstructer {
$this->mode = self::IN_TABLE;
}
- /* A start tag whose tag name is one of: "caption", "col", "colgroup",
- "tbody", "tfoot", "thead", or an end tag whose tag name is "table" */
- } elseif(($token['type'] === HTML5::STARTTAG && in_array($token['name'],
- array('caption', 'col', 'colgroup', 'tbody', 'tfoor', 'thead'))) ||
- ($token['type'] === HTML5::STARTTAG && $token['name'] === 'table')) {
+ /* A start tag whose tag name is one of: "caption", "col", "colgroup",
+ "tbody", "tfoot", "thead", or an end tag whose tag name is "table" */
+ } elseif (($token['type'] === HTML5::STARTTAG && in_array(
+ $token['name'],
+ array('caption', 'col', 'colgroup', 'tbody', 'tfoor', 'thead')
+ )) ||
+ ($token['type'] === HTML5::STARTTAG && $token['name'] === 'table')
+ ) {
/* If the stack of open elements does not have a tbody, thead, or
tfoot element in table scope, this is a parse error. Ignore the
token. (innerHTML case) */
- if(!$this->elementInScope(array('tbody', 'thead', 'tfoot'), true)) {
+ if (!$this->elementInScope(array('tbody', 'thead', 'tfoot'), true)) {
// Ignore.
- /* Otherwise: */
+ /* Otherwise: */
} else {
/* Clear the stack back to a table body context. */
$this->clearStackToTableContext($clear);
@@ -2996,33 +3755,40 @@ class HTML5TreeConstructer {
/* Act as if an end tag with the same tag name as the current
node ("tbody", "tfoot", or "thead") had been seen, then
reprocess the current token. */
- $this->inTableBody(array(
- 'name' => end($this->stack)->nodeName,
- 'type' => HTML5::ENDTAG
- ));
+ $this->inTableBody(
+ array(
+ 'name' => end($this->stack)->nodeName,
+ 'type' => HTML5::ENDTAG
+ )
+ );
return $this->mainPhase($token);
}
- /* An end tag whose tag name is one of: "body", "caption", "col",
- "colgroup", "html", "td", "th", "tr" */
- } elseif($token['type'] === HTML5::ENDTAG && in_array($token['name'],
- array('body', 'caption', 'col', 'colgroup', 'html', 'td', 'th', 'tr'))) {
+ /* An end tag whose tag name is one of: "body", "caption", "col",
+ "colgroup", "html", "td", "th", "tr" */
+ } elseif ($token['type'] === HTML5::ENDTAG && in_array(
+ $token['name'],
+ array('body', 'caption', 'col', 'colgroup', 'html', 'td', 'th', 'tr')
+ )
+ ) {
/* Parse error. Ignore the token. */
- /* Anything else */
+ /* Anything else */
} else {
/* Process the token as if the insertion mode was "in table". */
$this->inTable($token);
}
}
- private function inRow($token) {
+ private function inRow($token)
+ {
$clear = array('tr', 'html');
/* A start tag whose tag name is one of: "th", "td" */
- if($token['type'] === HTML5::STARTTAG &&
- ($token['name'] === 'th' || $token['name'] === 'td')) {
+ if ($token['type'] === HTML5::STARTTAG &&
+ ($token['name'] === 'th' || $token['name'] === 'td')
+ ) {
/* Clear the stack back to a table row context. */
$this->clearStackToTableContext($clear);
@@ -3035,15 +3801,15 @@ class HTML5TreeConstructer {
elements. */
$this->a_formatting[] = self::MARKER;
- /* An end tag whose tag name is "tr" */
- } elseif($token['type'] === HTML5::ENDTAG && $token['name'] === 'tr') {
+ /* An end tag whose tag name is "tr" */
+ } elseif ($token['type'] === HTML5::ENDTAG && $token['name'] === 'tr') {
/* If the stack of open elements does not have an element in table
scope with the same tag name as the token, this is a parse error.
Ignore the token. (innerHTML case) */
- if(!$this->elementInScope($token['name'], true)) {
+ if (!$this->elementInScope($token['name'], true)) {
// Ignore.
- /* Otherwise: */
+ /* Otherwise: */
} else {
/* Clear the stack back to a table row context. */
$this->clearStackToTableContext($clear);
@@ -3055,64 +3821,77 @@ class HTML5TreeConstructer {
$this->mode = self::IN_TBODY;
}
- /* A start tag whose tag name is one of: "caption", "col", "colgroup",
- "tbody", "tfoot", "thead", "tr" or an end tag whose tag name is "table" */
- } elseif($token['type'] === HTML5::STARTTAG && in_array($token['name'],
- array('caption', 'col', 'colgroup', 'tbody', 'tfoot', 'thead', 'tr'))) {
+ /* A start tag whose tag name is one of: "caption", "col", "colgroup",
+ "tbody", "tfoot", "thead", "tr" or an end tag whose tag name is "table" */
+ } elseif ($token['type'] === HTML5::STARTTAG && in_array(
+ $token['name'],
+ array('caption', 'col', 'colgroup', 'tbody', 'tfoot', 'thead', 'tr')
+ )
+ ) {
/* Act as if an end tag with the tag name "tr" had been seen, then,
if that token wasn't ignored, reprocess the current token. */
- $this->inRow(array(
- 'name' => 'tr',
- 'type' => HTML5::ENDTAG
- ));
+ $this->inRow(
+ array(
+ 'name' => 'tr',
+ 'type' => HTML5::ENDTAG
+ )
+ );
return $this->inCell($token);
- /* An end tag whose tag name is one of: "tbody", "tfoot", "thead" */
- } elseif($token['type'] === HTML5::ENDTAG &&
- in_array($token['name'], array('tbody', 'tfoot', 'thead'))) {
+ /* An end tag whose tag name is one of: "tbody", "tfoot", "thead" */
+ } elseif ($token['type'] === HTML5::ENDTAG &&
+ in_array($token['name'], array('tbody', 'tfoot', 'thead'))
+ ) {
/* If the stack of open elements does not have an element in table
scope with the same tag name as the token, this is a parse error.
Ignore the token. */
- if(!$this->elementInScope($token['name'], true)) {
+ if (!$this->elementInScope($token['name'], true)) {
// Ignore.
- /* Otherwise: */
+ /* Otherwise: */
} else {
/* Otherwise, act as if an end tag with the tag name "tr" had
been seen, then reprocess the current token. */
- $this->inRow(array(
- 'name' => 'tr',
- 'type' => HTML5::ENDTAG
- ));
+ $this->inRow(
+ array(
+ 'name' => 'tr',
+ 'type' => HTML5::ENDTAG
+ )
+ );
return $this->inCell($token);
}
- /* An end tag whose tag name is one of: "body", "caption", "col",
- "colgroup", "html", "td", "th" */
- } elseif($token['type'] === HTML5::ENDTAG && in_array($token['name'],
- array('body', 'caption', 'col', 'colgroup', 'html', 'td', 'th', 'tr'))) {
+ /* An end tag whose tag name is one of: "body", "caption", "col",
+ "colgroup", "html", "td", "th" */
+ } elseif ($token['type'] === HTML5::ENDTAG && in_array(
+ $token['name'],
+ array('body', 'caption', 'col', 'colgroup', 'html', 'td', 'th', 'tr')
+ )
+ ) {
/* Parse error. Ignore the token. */
- /* Anything else */
+ /* Anything else */
} else {
/* Process the token as if the insertion mode was "in table". */
$this->inTable($token);
}
}
- private function inCell($token) {
+ private function inCell($token)
+ {
/* An end tag whose tag name is one of: "td", "th" */
- if($token['type'] === HTML5::ENDTAG &&
- ($token['name'] === 'td' || $token['name'] === 'th')) {
+ if ($token['type'] === HTML5::ENDTAG &&
+ ($token['name'] === 'td' || $token['name'] === 'th')
+ ) {
/* If the stack of open elements does not have an element in table
scope with the same tag name as that of the token, then this is a
parse error and the token must be ignored. */
- if(!$this->elementInScope($token['name'], true)) {
+ if (!$this->elementInScope($token['name'], true)) {
// Ignore.
- /* Otherwise: */
+ /* Otherwise: */
} else {
/* Generate implied end tags, except for elements with the same
tag name as the token. */
@@ -3124,11 +3903,11 @@ class HTML5TreeConstructer {
/* Pop elements from this stack until an element with the same
tag name as the token has been popped from the stack. */
- while(true) {
+ while (true) {
$node = end($this->stack)->nodeName;
array_pop($this->stack);
- if($node === $token['name']) {
+ if ($node === $token['name']) {
break;
}
}
@@ -3142,178 +3921,223 @@ class HTML5TreeConstructer {
$this->mode = self::IN_ROW;
}
- /* A start tag whose tag name is one of: "caption", "col", "colgroup",
- "tbody", "td", "tfoot", "th", "thead", "tr" */
- } elseif($token['type'] === HTML5::STARTTAG && in_array($token['name'],
- array('caption', 'col', 'colgroup', 'tbody', 'td', 'tfoot', 'th',
- 'thead', 'tr'))) {
+ /* A start tag whose tag name is one of: "caption", "col", "colgroup",
+ "tbody", "td", "tfoot", "th", "thead", "tr" */
+ } elseif ($token['type'] === HTML5::STARTTAG && in_array(
+ $token['name'],
+ array(
+ 'caption',
+ 'col',
+ 'colgroup',
+ 'tbody',
+ 'td',
+ 'tfoot',
+ 'th',
+ 'thead',
+ 'tr'
+ )
+ )
+ ) {
/* If the stack of open elements does not have a td or th element
in table scope, then this is a parse error; ignore the token.
(innerHTML case) */
- if(!$this->elementInScope(array('td', 'th'), true)) {
+ if (!$this->elementInScope(array('td', 'th'), true)) {
// Ignore.
- /* Otherwise, close the cell (see below) and reprocess the current
- token. */
+ /* Otherwise, close the cell (see below) and reprocess the current
+ token. */
} else {
$this->closeCell();
return $this->inRow($token);
}
- /* A start tag whose tag name is one of: "caption", "col", "colgroup",
- "tbody", "td", "tfoot", "th", "thead", "tr" */
- } elseif($token['type'] === HTML5::STARTTAG && in_array($token['name'],
- array('caption', 'col', 'colgroup', 'tbody', 'td', 'tfoot', 'th',
- 'thead', 'tr'))) {
+ /* A start tag whose tag name is one of: "caption", "col", "colgroup",
+ "tbody", "td", "tfoot", "th", "thead", "tr" */
+ } elseif ($token['type'] === HTML5::STARTTAG && in_array(
+ $token['name'],
+ array(
+ 'caption',
+ 'col',
+ 'colgroup',
+ 'tbody',
+ 'td',
+ 'tfoot',
+ 'th',
+ 'thead',
+ 'tr'
+ )
+ )
+ ) {
/* If the stack of open elements does not have a td or th element
in table scope, then this is a parse error; ignore the token.
(innerHTML case) */
- if(!$this->elementInScope(array('td', 'th'), true)) {
+ if (!$this->elementInScope(array('td', 'th'), true)) {
// Ignore.
- /* Otherwise, close the cell (see below) and reprocess the current
- token. */
+ /* Otherwise, close the cell (see below) and reprocess the current
+ token. */
} else {
$this->closeCell();
return $this->inRow($token);
}
- /* An end tag whose tag name is one of: "body", "caption", "col",
- "colgroup", "html" */
- } elseif($token['type'] === HTML5::ENDTAG && in_array($token['name'],
- array('body', 'caption', 'col', 'colgroup', 'html'))) {
+ /* An end tag whose tag name is one of: "body", "caption", "col",
+ "colgroup", "html" */
+ } elseif ($token['type'] === HTML5::ENDTAG && in_array(
+ $token['name'],
+ array('body', 'caption', 'col', 'colgroup', 'html')
+ )
+ ) {
/* Parse error. Ignore the token. */
- /* An end tag whose tag name is one of: "table", "tbody", "tfoot",
- "thead", "tr" */
- } elseif($token['type'] === HTML5::ENDTAG && in_array($token['name'],
- array('table', 'tbody', 'tfoot', 'thead', 'tr'))) {
+ /* An end tag whose tag name is one of: "table", "tbody", "tfoot",
+ "thead", "tr" */
+ } elseif ($token['type'] === HTML5::ENDTAG && in_array(
+ $token['name'],
+ array('table', 'tbody', 'tfoot', 'thead', 'tr')
+ )
+ ) {
/* If the stack of open elements does not have an element in table
scope with the same tag name as that of the token (which can only
happen for "tbody", "tfoot" and "thead", or, in the innerHTML case),
then this is a parse error and the token must be ignored. */
- if(!$this->elementInScope($token['name'], true)) {
+ if (!$this->elementInScope($token['name'], true)) {
// Ignore.
- /* Otherwise, close the cell (see below) and reprocess the current
- token. */
+ /* Otherwise, close the cell (see below) and reprocess the current
+ token. */
} else {
$this->closeCell();
return $this->inRow($token);
}
- /* Anything else */
+ /* Anything else */
} else {
/* Process the token as if the insertion mode was "in body". */
$this->inBody($token);
}
}
- private function inSelect($token) {
+ private function inSelect($token)
+ {
/* Handle the token as follows: */
/* A character token */
- if($token['type'] === HTML5::CHARACTR) {
+ if ($token['type'] === HTML5::CHARACTR) {
/* Append the token's character to the current node. */
$this->insertText($token['data']);
- /* A comment token */
- } elseif($token['type'] === HTML5::COMMENT) {
+ /* A comment token */
+ } elseif ($token['type'] === HTML5::COMMENT) {
/* Append a Comment node to the current node with the data
attribute set to the data given in the comment token. */
$this->insertComment($token['data']);
- /* A start tag token whose tag name is "option" */
- } elseif($token['type'] === HTML5::STARTTAG &&
- $token['name'] === 'option') {
+ /* A start tag token whose tag name is "option" */
+ } elseif ($token['type'] === HTML5::STARTTAG &&
+ $token['name'] === 'option'
+ ) {
/* If the current node is an option element, act as if an end tag
with the tag name "option" had been seen. */
- if(end($this->stack)->nodeName === 'option') {
- $this->inSelect(array(
- 'name' => 'option',
- 'type' => HTML5::ENDTAG
- ));
+ if (end($this->stack)->nodeName === 'option') {
+ $this->inSelect(
+ array(
+ 'name' => 'option',
+ 'type' => HTML5::ENDTAG
+ )
+ );
}
/* Insert an HTML element for the token. */
$this->insertElement($token);
- /* A start tag token whose tag name is "optgroup" */
- } elseif($token['type'] === HTML5::STARTTAG &&
- $token['name'] === 'optgroup') {
+ /* A start tag token whose tag name is "optgroup" */
+ } elseif ($token['type'] === HTML5::STARTTAG &&
+ $token['name'] === 'optgroup'
+ ) {
/* If the current node is an option element, act as if an end tag
with the tag name "option" had been seen. */
- if(end($this->stack)->nodeName === 'option') {
- $this->inSelect(array(
- 'name' => 'option',
- 'type' => HTML5::ENDTAG
- ));
+ if (end($this->stack)->nodeName === 'option') {
+ $this->inSelect(
+ array(
+ 'name' => 'option',
+ 'type' => HTML5::ENDTAG
+ )
+ );
}
/* If the current node is an optgroup element, act as if an end tag
with the tag name "optgroup" had been seen. */
- if(end($this->stack)->nodeName === 'optgroup') {
- $this->inSelect(array(
- 'name' => 'optgroup',
- 'type' => HTML5::ENDTAG
- ));
+ if (end($this->stack)->nodeName === 'optgroup') {
+ $this->inSelect(
+ array(
+ 'name' => 'optgroup',
+ 'type' => HTML5::ENDTAG
+ )
+ );
}
/* Insert an HTML element for the token. */
$this->insertElement($token);
- /* An end tag token whose tag name is "optgroup" */
- } elseif($token['type'] === HTML5::ENDTAG &&
- $token['name'] === 'optgroup') {
+ /* An end tag token whose tag name is "optgroup" */
+ } elseif ($token['type'] === HTML5::ENDTAG &&
+ $token['name'] === 'optgroup'
+ ) {
/* First, if the current node is an option element, and the node
immediately before it in the stack of open elements is an optgroup
element, then act as if an end tag with the tag name "option" had
been seen. */
$elements_in_stack = count($this->stack);
- if($this->stack[$elements_in_stack - 1]->nodeName === 'option' &&
- $this->stack[$elements_in_stack - 2]->nodeName === 'optgroup') {
- $this->inSelect(array(
- 'name' => 'option',
- 'type' => HTML5::ENDTAG
- ));
+ if ($this->stack[$elements_in_stack - 1]->nodeName === 'option' &&
+ $this->stack[$elements_in_stack - 2]->nodeName === 'optgroup'
+ ) {
+ $this->inSelect(
+ array(
+ 'name' => 'option',
+ 'type' => HTML5::ENDTAG
+ )
+ );
}
/* If the current node is an optgroup element, then pop that node
from the stack of open elements. Otherwise, this is a parse error,
ignore the token. */
- if($this->stack[$elements_in_stack - 1] === 'optgroup') {
+ if ($this->stack[$elements_in_stack - 1] === 'optgroup') {
array_pop($this->stack);
}
- /* An end tag token whose tag name is "option" */
- } elseif($token['type'] === HTML5::ENDTAG &&
- $token['name'] === 'option') {
+ /* An end tag token whose tag name is "option" */
+ } elseif ($token['type'] === HTML5::ENDTAG &&
+ $token['name'] === 'option'
+ ) {
/* If the current node is an option element, then pop that node
from the stack of open elements. Otherwise, this is a parse error,
ignore the token. */
- if(end($this->stack)->nodeName === 'option') {
+ if (end($this->stack)->nodeName === 'option') {
array_pop($this->stack);
}
- /* An end tag whose tag name is "select" */
- } elseif($token['type'] === HTML5::ENDTAG &&
- $token['name'] === 'select') {
+ /* An end tag whose tag name is "select" */
+ } elseif ($token['type'] === HTML5::ENDTAG &&
+ $token['name'] === 'select'
+ ) {
/* If the stack of open elements does not have an element in table
scope with the same tag name as the token, this is a parse error.
Ignore the token. (innerHTML case) */
- if(!$this->elementInScope($token['name'], true)) {
+ if (!$this->elementInScope($token['name'], true)) {
// w/e
- /* Otherwise: */
+ /* Otherwise: */
} else {
/* Pop elements from the stack of open elements until a select
element has been popped from the stack. */
- while(true) {
+ while (true) {
$current = end($this->stack)->nodeName;
array_pop($this->stack);
- if($current === 'select') {
+ if ($current === 'select') {
break;
}
}
@@ -3322,20 +4146,35 @@ class HTML5TreeConstructer {
$this->resetInsertionMode();
}
- /* A start tag whose tag name is "select" */
- } elseif($token['name'] === 'select' &&
- $token['type'] === HTML5::STARTTAG) {
+ /* A start tag whose tag name is "select" */
+ } elseif ($token['name'] === 'select' &&
+ $token['type'] === HTML5::STARTTAG
+ ) {
/* Parse error. Act as if the token had been an end tag with the
tag name "select" instead. */
- $this->inSelect(array(
- 'name' => 'select',
- 'type' => HTML5::ENDTAG
- ));
-
- /* An end tag whose tag name is one of: "caption", "table", "tbody",
- "tfoot", "thead", "tr", "td", "th" */
- } elseif(in_array($token['name'], array('caption', 'table', 'tbody',
- 'tfoot', 'thead', 'tr', 'td', 'th')) && $token['type'] === HTML5::ENDTAG) {
+ $this->inSelect(
+ array(
+ 'name' => 'select',
+ 'type' => HTML5::ENDTAG
+ )
+ );
+
+ /* An end tag whose tag name is one of: "caption", "table", "tbody",
+ "tfoot", "thead", "tr", "td", "th" */
+ } elseif (in_array(
+ $token['name'],
+ array(
+ 'caption',
+ 'table',
+ 'tbody',
+ 'tfoot',
+ 'thead',
+ 'tr',
+ 'td',
+ 'th'
+ )
+ ) && $token['type'] === HTML5::ENDTAG
+ ) {
/* Parse error. */
// w/e
@@ -3343,43 +4182,47 @@ class HTML5TreeConstructer {
the same tag name as that of the token, then act as if an end tag
with the tag name "select" had been seen, and reprocess the token.
Otherwise, ignore the token. */
- if($this->elementInScope($token['name'], true)) {
- $this->inSelect(array(
- 'name' => 'select',
- 'type' => HTML5::ENDTAG
- ));
+ if ($this->elementInScope($token['name'], true)) {
+ $this->inSelect(
+ array(
+ 'name' => 'select',
+ 'type' => HTML5::ENDTAG
+ )
+ );
$this->mainPhase($token);
}
- /* Anything else */
+ /* Anything else */
} else {
/* Parse error. Ignore the token. */
}
}
- private function afterBody($token) {
+ private function afterBody($token)
+ {
/* Handle the token as follows: */
/* A character token that is one of one of U+0009 CHARACTER TABULATION,
U+000A LINE FEED (LF), U+000B LINE TABULATION, U+000C FORM FEED (FF),
or U+0020 SPACE */
- if($token['type'] === HTML5::CHARACTR &&
- preg_match('/^[\t\n\x0b\x0c ]+$/', $token['data'])) {
+ if ($token['type'] === HTML5::CHARACTR &&
+ preg_match('/^[\t\n\x0b\x0c ]+$/', $token['data'])
+ ) {
/* Process the token as it would be processed if the insertion mode
was "in body". */
$this->inBody($token);
- /* A comment token */
- } elseif($token['type'] === HTML5::COMMENT) {
+ /* A comment token */
+ } elseif ($token['type'] === HTML5::COMMENT) {
/* Append a Comment node to the first element in the stack of open
elements (the html element), with the data attribute set to the
data given in the comment token. */
$comment = $this->dom->createComment($token['data']);
$this->stack[0]->appendChild($comment);
- /* An end tag with the tag name "html" */
- } elseif($token['type'] === HTML5::ENDTAG && $token['name'] === 'html') {
+ /* An end tag with the tag name "html" */
+ } elseif ($token['type'] === HTML5::ENDTAG && $token['name'] === 'html') {
/* If the parser was originally created in order to handle the
setting of an element's innerHTML attribute, this is a parse error;
ignore the token. (The element will be an html element in this
@@ -3388,7 +4231,7 @@ class HTML5TreeConstructer {
/* Otherwise, switch to the trailing end phase. */
$this->phase = self::END_PHASE;
- /* Anything else */
+ /* Anything else */
} else {
/* Parse error. Set the insertion mode to "in body" and reprocess
the token. */
@@ -3397,34 +4240,38 @@ class HTML5TreeConstructer {
}
}
- private function inFrameset($token) {
+ private function inFrameset($token)
+ {
/* Handle the token as follows: */
/* A character token that is one of one of U+0009 CHARACTER TABULATION,
U+000A LINE FEED (LF), U+000B LINE TABULATION, U+000C FORM FEED (FF),
U+000D CARRIAGE RETURN (CR), or U+0020 SPACE */
- if($token['type'] === HTML5::CHARACTR &&
- preg_match('/^[\t\n\x0b\x0c ]+$/', $token['data'])) {
+ if ($token['type'] === HTML5::CHARACTR &&
+ preg_match('/^[\t\n\x0b\x0c ]+$/', $token['data'])
+ ) {
/* Append the character to the current node. */
$this->insertText($token['data']);
- /* A comment token */
- } elseif($token['type'] === HTML5::COMMENT) {
+ /* A comment token */
+ } elseif ($token['type'] === HTML5::COMMENT) {
/* Append a Comment node to the current node with the data
attribute set to the data given in the comment token. */
$this->insertComment($token['data']);
- /* A start tag with the tag name "frameset" */
- } elseif($token['name'] === 'frameset' &&
- $token['type'] === HTML5::STARTTAG) {
+ /* A start tag with the tag name "frameset" */
+ } elseif ($token['name'] === 'frameset' &&
+ $token['type'] === HTML5::STARTTAG
+ ) {
$this->insertElement($token);
- /* An end tag with the tag name "frameset" */
- } elseif($token['name'] === 'frameset' &&
- $token['type'] === HTML5::ENDTAG) {
+ /* An end tag with the tag name "frameset" */
+ } elseif ($token['name'] === 'frameset' &&
+ $token['type'] === HTML5::ENDTAG
+ ) {
/* If the current node is the root html element, then this is a
parse error; ignore the token. (innerHTML case) */
- if(end($this->stack)->nodeName === 'html') {
+ if (end($this->stack)->nodeName === 'html') {
// Ignore
} else {
@@ -3439,103 +4286,113 @@ class HTML5TreeConstructer {
$this->mode = self::AFTR_FRAME;
}
- /* A start tag with the tag name "frame" */
- } elseif($token['name'] === 'frame' &&
- $token['type'] === HTML5::STARTTAG) {
+ /* A start tag with the tag name "frame" */
+ } elseif ($token['name'] === 'frame' &&
+ $token['type'] === HTML5::STARTTAG
+ ) {
/* Insert an HTML element for the token. */
$this->insertElement($token);
/* Immediately pop the current node off the stack of open elements. */
array_pop($this->stack);
- /* A start tag with the tag name "noframes" */
- } elseif($token['name'] === 'noframes' &&
- $token['type'] === HTML5::STARTTAG) {
+ /* A start tag with the tag name "noframes" */
+ } elseif ($token['name'] === 'noframes' &&
+ $token['type'] === HTML5::STARTTAG
+ ) {
/* Process the token as if the insertion mode had been "in body". */
$this->inBody($token);
- /* Anything else */
+ /* Anything else */
} else {
/* Parse error. Ignore the token. */
}
}
- private function afterFrameset($token) {
+ private function afterFrameset($token)
+ {
/* Handle the token as follows: */
/* A character token that is one of one of U+0009 CHARACTER TABULATION,
U+000A LINE FEED (LF), U+000B LINE TABULATION, U+000C FORM FEED (FF),
U+000D CARRIAGE RETURN (CR), or U+0020 SPACE */
- if($token['type'] === HTML5::CHARACTR &&
- preg_match('/^[\t\n\x0b\x0c ]+$/', $token['data'])) {
+ if ($token['type'] === HTML5::CHARACTR &&
+ preg_match('/^[\t\n\x0b\x0c ]+$/', $token['data'])
+ ) {
/* Append the character to the current node. */
$this->insertText($token['data']);
- /* A comment token */
- } elseif($token['type'] === HTML5::COMMENT) {
+ /* A comment token */
+ } elseif ($token['type'] === HTML5::COMMENT) {
/* Append a Comment node to the current node with the data
attribute set to the data given in the comment token. */
$this->insertComment($token['data']);
- /* An end tag with the tag name "html" */
- } elseif($token['name'] === 'html' &&
- $token['type'] === HTML5::ENDTAG) {
+ /* An end tag with the tag name "html" */
+ } elseif ($token['name'] === 'html' &&
+ $token['type'] === HTML5::ENDTAG
+ ) {
/* Switch to the trailing end phase. */
$this->phase = self::END_PHASE;
- /* A start tag with the tag name "noframes" */
- } elseif($token['name'] === 'noframes' &&
- $token['type'] === HTML5::STARTTAG) {
+ /* A start tag with the tag name "noframes" */
+ } elseif ($token['name'] === 'noframes' &&
+ $token['type'] === HTML5::STARTTAG
+ ) {
/* Process the token as if the insertion mode had been "in body". */
$this->inBody($token);
- /* Anything else */
+ /* Anything else */
} else {
/* Parse error. Ignore the token. */
}
}
- private function trailingEndPhase($token) {
+ private function trailingEndPhase($token)
+ {
/* After the main phase, as each token is emitted from the tokenisation
stage, it must be processed as described in this section. */
/* A DOCTYPE token */
- if($token['type'] === HTML5::DOCTYPE) {
+ if ($token['type'] === HTML5::DOCTYPE) {
// Parse error. Ignore the token.
- /* A comment token */
- } elseif($token['type'] === HTML5::COMMENT) {
+ /* A comment token */
+ } elseif ($token['type'] === HTML5::COMMENT) {
/* Append a Comment node to the Document object with the data
attribute set to the data given in the comment token. */
$comment = $this->dom->createComment($token['data']);
$this->dom->appendChild($comment);
- /* A character token that is one of one of U+0009 CHARACTER TABULATION,
- U+000A LINE FEED (LF), U+000B LINE TABULATION, U+000C FORM FEED (FF),
- or U+0020 SPACE */
- } elseif($token['type'] === HTML5::CHARACTR &&
- preg_match('/^[\t\n\x0b\x0c ]+$/', $token['data'])) {
+ /* A character token that is one of one of U+0009 CHARACTER TABULATION,
+ U+000A LINE FEED (LF), U+000B LINE TABULATION, U+000C FORM FEED (FF),
+ or U+0020 SPACE */
+ } elseif ($token['type'] === HTML5::CHARACTR &&
+ preg_match('/^[\t\n\x0b\x0c ]+$/', $token['data'])
+ ) {
/* Process the token as it would be processed in the main phase. */
$this->mainPhase($token);
- /* A character token that is not one of U+0009 CHARACTER TABULATION,
- U+000A LINE FEED (LF), U+000B LINE TABULATION, U+000C FORM FEED (FF),
- or U+0020 SPACE. Or a start tag token. Or an end tag token. */
- } elseif(($token['type'] === HTML5::CHARACTR &&
- preg_match('/^[\t\n\x0b\x0c ]+$/', $token['data'])) ||
- $token['type'] === HTML5::STARTTAG || $token['type'] === HTML5::ENDTAG) {
+ /* A character token that is not one of U+0009 CHARACTER TABULATION,
+ U+000A LINE FEED (LF), U+000B LINE TABULATION, U+000C FORM FEED (FF),
+ or U+0020 SPACE. Or a start tag token. Or an end tag token. */
+ } elseif (($token['type'] === HTML5::CHARACTR &&
+ preg_match('/^[\t\n\x0b\x0c ]+$/', $token['data'])) ||
+ $token['type'] === HTML5::STARTTAG || $token['type'] === HTML5::ENDTAG
+ ) {
/* Parse error. Switch back to the main phase and reprocess the
token. */
$this->phase = self::MAIN_PHASE;
return $this->mainPhase($token);
- /* An end-of-file token */
- } elseif($token['type'] === HTML5::EOF) {
+ /* An end-of-file token */
+ } elseif ($token['type'] === HTML5::EOF) {
/* OMG DONE!! */
}
}
- private function insertElement($token, $append = true, $check = false) {
+ private function insertElement($token, $append = true, $check = false)
+ {
// Proprietary workaround for libxml2's limitations with tag names
if ($check) {
// Slightly modified HTML5 tag-name modification,
@@ -3544,13 +4401,15 @@ class HTML5TreeConstructer {
// Remove leading hyphens and numbers
$token['name'] = ltrim($token['name'], '-0..9');
// In theory, this should ever be needed, but just in case
- if ($token['name'] === '') $token['name'] = 'span'; // arbitrary generic choice
+ if ($token['name'] === '') {
+ $token['name'] = 'span';
+ } // arbitrary generic choice
}
-
+
$el = $this->dom->createElement($token['name']);
- foreach($token['attr'] as $attr) {
- if(!$el->hasAttribute($attr['name'])) {
+ foreach ($token['attr'] as $attr) {
+ if (!$el->hasAttribute($attr['name'])) {
$el->setAttribute($attr['name'], $attr['value']);
}
}
@@ -3561,48 +4420,54 @@ class HTML5TreeConstructer {
return $el;
}
- private function insertText($data) {
+ private function insertText($data)
+ {
$text = $this->dom->createTextNode($data);
$this->appendToRealParent($text);
}
- private function insertComment($data) {
+ private function insertComment($data)
+ {
$comment = $this->dom->createComment($data);
$this->appendToRealParent($comment);
}
- private function appendToRealParent($node) {
- if($this->foster_parent === null) {
+ private function appendToRealParent($node)
+ {
+ if ($this->foster_parent === null) {
end($this->stack)->appendChild($node);
- } elseif($this->foster_parent !== null) {
+ } elseif ($this->foster_parent !== null) {
/* If the foster parent element is the parent element of the
last table element in the stack of open elements, then the new
node must be inserted immediately before the last table element
in the stack of open elements in the foster parent element;
otherwise, the new node must be appended to the foster parent
element. */
- for($n = count($this->stack) - 1; $n >= 0; $n--) {
- if($this->stack[$n]->nodeName === 'table' &&
- $this->stack[$n]->parentNode !== null) {
+ for ($n = count($this->stack) - 1; $n >= 0; $n--) {
+ if ($this->stack[$n]->nodeName === 'table' &&
+ $this->stack[$n]->parentNode !== null
+ ) {
$table = $this->stack[$n];
break;
}
}
- if(isset($table) && $this->foster_parent->isSameNode($table->parentNode))
+ if (isset($table) && $this->foster_parent->isSameNode($table->parentNode)) {
$this->foster_parent->insertBefore($node, $table);
- else
+ } else {
$this->foster_parent->appendChild($node);
+ }
$this->foster_parent = null;
}
}
- private function elementInScope($el, $table = false) {
- if(is_array($el)) {
- foreach($el as $element) {
- if($this->elementInScope($element, $table)) {
+ private function elementInScope($el, $table = false)
+ {
+ if (is_array($el)) {
+ foreach ($el as $element) {
+ if ($this->elementInScope($element, $table)) {
return true;
}
}
@@ -3612,28 +4477,38 @@ class HTML5TreeConstructer {
$leng = count($this->stack);
- for($n = 0; $n < $leng; $n++) {
+ for ($n = 0; $n < $leng; $n++) {
/* 1. Initialise node to be the current node (the bottommost node of
the stack). */
$node = $this->stack[$leng - 1 - $n];
- if($node->tagName === $el) {
+ if ($node->tagName === $el) {
/* 2. If node is the target node, terminate in a match state. */
return true;
- } elseif($node->tagName === 'table') {
+ } elseif ($node->tagName === 'table') {
/* 3. Otherwise, if node is a table element, terminate in a failure
state. */
return false;
- } elseif($table === true && in_array($node->tagName, array('caption', 'td',
- 'th', 'button', 'marquee', 'object'))) {
+ } elseif ($table === true && in_array(
+ $node->tagName,
+ array(
+ 'caption',
+ 'td',
+ 'th',
+ 'button',
+ 'marquee',
+ 'object'
+ )
+ )
+ ) {
/* 4. Otherwise, if the algorithm is the "has an element in scope"
variant (rather than the "has an element in table scope" variant),
and node is one of the following, terminate in a failure state. */
return false;
- } elseif($node === $node->ownerDocument->documentElement) {
+ } elseif ($node === $node->ownerDocument->documentElement) {
/* 5. Otherwise, if node is an html element (root element), terminate
in a failure state. (This can only happen if the node is the topmost
node of the stack of open elements, and prevents the next step from
@@ -3648,12 +4523,13 @@ class HTML5TreeConstructer {
}
}
- private function reconstructActiveFormattingElements() {
+ private function reconstructActiveFormattingElements()
+ {
/* 1. If there are no entries in the list of active formatting elements,
then there is nothing to reconstruct; stop this algorithm. */
$formatting_elements = count($this->a_formatting);
- if($formatting_elements === 0) {
+ if ($formatting_elements === 0) {
return false;
}
@@ -3665,14 +4541,14 @@ class HTML5TreeConstructer {
formatting elements is a marker, or if it is an element that is in the
stack of open elements, then there is nothing to reconstruct; stop this
algorithm. */
- if($entry === self::MARKER || in_array($entry, $this->stack, true)) {
+ if ($entry === self::MARKER || in_array($entry, $this->stack, true)) {
return false;
}
- for($a = $formatting_elements - 1; $a >= 0; true) {
+ for ($a = $formatting_elements - 1; $a >= 0; true) {
/* 4. If there are no entries before entry in the list of active
formatting elements, then jump to step 8. */
- if($a === 0) {
+ if ($a === 0) {
$step_seven = false;
break;
}
@@ -3684,15 +4560,15 @@ class HTML5TreeConstructer {
/* 6. If entry is neither a marker nor an element that is also in
thetack of open elements, go to step 4. */
- if($entry === self::MARKER || in_array($entry, $this->stack, true)) {
+ if ($entry === self::MARKER || in_array($entry, $this->stack, true)) {
break;
}
}
- while(true) {
+ while (true) {
/* 7. Let entry be the element one later than entry in the list of
active formatting elements. */
- if(isset($step_seven) && $step_seven === true) {
+ if (isset($step_seven) && $step_seven === true) {
$a++;
$entry = $this->a_formatting[$a];
}
@@ -3711,7 +4587,7 @@ class HTML5TreeConstructer {
/* 11. If the entry for clone in the list of active formatting
elements is not the last entry in the list, return to step 7. */
- if(end($this->a_formatting) !== $clone) {
+ if (end($this->a_formatting) !== $clone) {
$step_seven = true;
} else {
break;
@@ -3719,12 +4595,13 @@ class HTML5TreeConstructer {
}
}
- private function clearTheActiveFormattingElementsUpToTheLastMarker() {
+ private function clearTheActiveFormattingElementsUpToTheLastMarker()
+ {
/* When the steps below require the UA to clear the list of active
formatting elements up to the last marker, the UA must perform the
following steps: */
- while(true) {
+ while (true) {
/* 1. Let entry be the last (most recently added) entry in the list
of active formatting elements. */
$entry = end($this->a_formatting);
@@ -3734,13 +4611,14 @@ class HTML5TreeConstructer {
/* 3. If entry was a marker, then stop the algorithm at this point.
The list has been cleared up to the last marker. */
- if($entry === self::MARKER) {
+ if ($entry === self::MARKER) {
break;
}
}
}
- private function generateImpliedEndTags($exclude = array()) {
+ private function generateImpliedEndTags($exclude = array())
+ {
/* When the steps below require the UA to generate implied end tags,
then, if the current node is a dd element, a dt element, an li element,
a p element, a td element, a th element, or a tr element, the UA must
@@ -3749,36 +4627,36 @@ class HTML5TreeConstructer {
$node = end($this->stack);
$elements = array_diff(array('dd', 'dt', 'li', 'p', 'td', 'th', 'tr'), $exclude);
- while(in_array(end($this->stack)->nodeName, $elements)) {
+ while (in_array(end($this->stack)->nodeName, $elements)) {
array_pop($this->stack);
}
}
- private function getElementCategory($node) {
+ private function getElementCategory($node)
+ {
$name = $node->tagName;
- if(in_array($name, $this->special))
+ if (in_array($name, $this->special)) {
return self::SPECIAL;
-
- elseif(in_array($name, $this->scoping))
+ } elseif (in_array($name, $this->scoping)) {
return self::SCOPING;
-
- elseif(in_array($name, $this->formatting))
+ } elseif (in_array($name, $this->formatting)) {
return self::FORMATTING;
-
- else
+ } else {
return self::PHRASING;
+ }
}
- private function clearStackToTableContext($elements) {
+ private function clearStackToTableContext($elements)
+ {
/* When the steps above require the UA to clear the stack back to a
table context, it means that the UA must, while the current node is not
a table element or an html element, pop elements from the stack of open
elements. If this causes any elements to be popped from the stack, then
this is a parse error. */
- while(true) {
+ while (true) {
$node = end($this->stack)->nodeName;
- if(in_array($node, $elements)) {
+ if (in_array($node, $elements)) {
break;
} else {
array_pop($this->stack);
@@ -3786,12 +4664,13 @@ class HTML5TreeConstructer {
}
}
- private function resetInsertionMode() {
+ private function resetInsertionMode()
+ {
/* 1. Let last be false. */
$last = false;
$leng = count($this->stack);
- for($n = $leng - 1; $n >= 0; $n--) {
+ for ($n = $leng - 1; $n >= 0; $n--) {
/* 2. Let node be the last node in the stack of open elements. */
$node = $this->stack[$n];
@@ -3799,108 +4678,111 @@ class HTML5TreeConstructer {
set last to true. If the element whose innerHTML attribute is being
set is neither a td element nor a th element, then set node to the
element whose innerHTML attribute is being set. (innerHTML case) */
- if($this->stack[0]->isSameNode($node)) {
+ if ($this->stack[0]->isSameNode($node)) {
$last = true;
}
/* 4. If node is a select element, then switch the insertion mode to
"in select" and abort these steps. (innerHTML case) */
- if($node->nodeName === 'select') {
+ if ($node->nodeName === 'select') {
$this->mode = self::IN_SELECT;
break;
- /* 5. If node is a td or th element, then switch the insertion mode
- to "in cell" and abort these steps. */
- } elseif($node->nodeName === 'td' || $node->nodeName === 'th') {
+ /* 5. If node is a td or th element, then switch the insertion mode
+ to "in cell" and abort these steps. */
+ } elseif ($node->nodeName === 'td' || $node->nodeName === 'th') {
$this->mode = self::IN_CELL;
break;
- /* 6. If node is a tr element, then switch the insertion mode to
- "in row" and abort these steps. */
- } elseif($node->nodeName === 'tr') {
+ /* 6. If node is a tr element, then switch the insertion mode to
+ "in row" and abort these steps. */
+ } elseif ($node->nodeName === 'tr') {
$this->mode = self::IN_ROW;
break;
- /* 7. If node is a tbody, thead, or tfoot element, then switch the
- insertion mode to "in table body" and abort these steps. */
- } elseif(in_array($node->nodeName, array('tbody', 'thead', 'tfoot'))) {
+ /* 7. If node is a tbody, thead, or tfoot element, then switch the
+ insertion mode to "in table body" and abort these steps. */
+ } elseif (in_array($node->nodeName, array('tbody', 'thead', 'tfoot'))) {
$this->mode = self::IN_TBODY;
break;
- /* 8. If node is a caption element, then switch the insertion mode
- to "in caption" and abort these steps. */
- } elseif($node->nodeName === 'caption') {
+ /* 8. If node is a caption element, then switch the insertion mode
+ to "in caption" and abort these steps. */
+ } elseif ($node->nodeName === 'caption') {
$this->mode = self::IN_CAPTION;
break;
- /* 9. If node is a colgroup element, then switch the insertion mode
- to "in column group" and abort these steps. (innerHTML case) */
- } elseif($node->nodeName === 'colgroup') {
+ /* 9. If node is a colgroup element, then switch the insertion mode
+ to "in column group" and abort these steps. (innerHTML case) */
+ } elseif ($node->nodeName === 'colgroup') {
$this->mode = self::IN_CGROUP;
break;
- /* 10. If node is a table element, then switch the insertion mode
- to "in table" and abort these steps. */
- } elseif($node->nodeName === 'table') {
+ /* 10. If node is a table element, then switch the insertion mode
+ to "in table" and abort these steps. */
+ } elseif ($node->nodeName === 'table') {
$this->mode = self::IN_TABLE;
break;
- /* 11. If node is a head element, then switch the insertion mode
- to "in body" ("in body"! not "in head"!) and abort these steps.
- (innerHTML case) */
- } elseif($node->nodeName === 'head') {
+ /* 11. If node is a head element, then switch the insertion mode
+ to "in body" ("in body"! not "in head"!) and abort these steps.
+ (innerHTML case) */
+ } elseif ($node->nodeName === 'head') {
$this->mode = self::IN_BODY;
break;
- /* 12. If node is a body element, then switch the insertion mode to
- "in body" and abort these steps. */
- } elseif($node->nodeName === 'body') {
+ /* 12. If node is a body element, then switch the insertion mode to
+ "in body" and abort these steps. */
+ } elseif ($node->nodeName === 'body') {
$this->mode = self::IN_BODY;
break;
- /* 13. If node is a frameset element, then switch the insertion
- mode to "in frameset" and abort these steps. (innerHTML case) */
- } elseif($node->nodeName === 'frameset') {
+ /* 13. If node is a frameset element, then switch the insertion
+ mode to "in frameset" and abort these steps. (innerHTML case) */
+ } elseif ($node->nodeName === 'frameset') {
$this->mode = self::IN_FRAME;
break;
- /* 14. If node is an html element, then: if the head element
- pointer is null, switch the insertion mode to "before head",
- otherwise, switch the insertion mode to "after head". In either
- case, abort these steps. (innerHTML case) */
- } elseif($node->nodeName === 'html') {
+ /* 14. If node is an html element, then: if the head element
+ pointer is null, switch the insertion mode to "before head",
+ otherwise, switch the insertion mode to "after head". In either
+ case, abort these steps. (innerHTML case) */
+ } elseif ($node->nodeName === 'html') {
$this->mode = ($this->head_pointer === null)
? self::BEFOR_HEAD
: self::AFTER_HEAD;
break;
- /* 15. If last is true, then set the insertion mode to "in body"
- and abort these steps. (innerHTML case) */
- } elseif($last) {
+ /* 15. If last is true, then set the insertion mode to "in body"
+ and abort these steps. (innerHTML case) */
+ } elseif ($last) {
$this->mode = self::IN_BODY;
break;
}
}
}
- private function closeCell() {
+ private function closeCell()
+ {
/* If the stack of open elements has a td or th element in table scope,
then act as if an end tag token with that tag name had been seen. */
- foreach(array('td', 'th') as $cell) {
- if($this->elementInScope($cell, true)) {
- $this->inCell(array(
- 'name' => $cell,
- 'type' => HTML5::ENDTAG
- ));
+ foreach (array('td', 'th') as $cell) {
+ if ($this->elementInScope($cell, true)) {
+ $this->inCell(
+ array(
+ 'name' => $cell,
+ 'type' => HTML5::ENDTAG
+ )
+ );
break;
}
}
}
- public function save() {
+ public function save()
+ {
return $this->dom;
}
}
-?>
diff --git a/library/HTMLPurifier/Node.php b/library/HTMLPurifier/Node.php
new file mode 100644
index 000000000..3995fec9f
--- /dev/null
+++ b/library/HTMLPurifier/Node.php
@@ -0,0 +1,49 @@
+<?php
+
+/**
+ * Abstract base node class that all others inherit from.
+ *
+ * Why do we not use the DOM extension? (1) It is not always available,
+ * (2) it has funny constraints on the data it can represent,
+ * whereas we want a maximally flexible representation, and (3) its
+ * interface is a bit cumbersome.
+ */
+abstract class HTMLPurifier_Node
+{
+ /**
+ * Line number of the start token in the source document
+ * @type int
+ */
+ public $line;
+
+ /**
+ * Column number of the start token in the source document. Null if unknown.
+ * @type int
+ */
+ public $col;
+
+ /**
+ * Lookup array of processing that this token is exempt from.
+ * Currently, valid values are "ValidateAttributes".
+ * @type array
+ */
+ public $armor = array();
+
+ /**
+ * When true, this node should be ignored as non-existent.
+ *
+ * Who is responsible for ignoring dead nodes? FixNesting is
+ * responsible for removing them before passing on to child
+ * validators.
+ */
+ public $dead = false;
+
+ /**
+ * Returns a pair of start and end tokens, where the end token
+ * is null if it is not necessary. Does not include children.
+ * @type array
+ */
+ abstract public function toTokenPair();
+}
+
+// vim: et sw=4 sts=4
diff --git a/library/HTMLPurifier/Node/Comment.php b/library/HTMLPurifier/Node/Comment.php
new file mode 100644
index 000000000..38ba19394
--- /dev/null
+++ b/library/HTMLPurifier/Node/Comment.php
@@ -0,0 +1,36 @@
+<?php
+
+/**
+ * Concrete comment node class.
+ */
+class HTMLPurifier_Node_Comment extends HTMLPurifier_Node
+{
+ /**
+ * Character data within comment.
+ * @type string
+ */
+ public $data;
+
+ /**
+ * @type bool
+ */
+ public $is_whitespace = true;
+
+ /**
+ * Transparent constructor.
+ *
+ * @param string $data String comment data.
+ * @param int $line
+ * @param int $col
+ */
+ public function __construct($data, $line = null, $col = null)
+ {
+ $this->data = $data;
+ $this->line = $line;
+ $this->col = $col;
+ }
+
+ public function toTokenPair() {
+ return array(new HTMLPurifier_Token_Comment($this->data, $this->line, $this->col), null);
+ }
+}
diff --git a/library/HTMLPurifier/Node/Element.php b/library/HTMLPurifier/Node/Element.php
new file mode 100644
index 000000000..6cbf56dad
--- /dev/null
+++ b/library/HTMLPurifier/Node/Element.php
@@ -0,0 +1,59 @@
+<?php
+
+/**
+ * Concrete element node class.
+ */
+class HTMLPurifier_Node_Element extends HTMLPurifier_Node
+{
+ /**
+ * The lower-case name of the tag, like 'a', 'b' or 'blockquote'.
+ *
+ * @note Strictly speaking, XML tags are case sensitive, so we shouldn't
+ * be lower-casing them, but these tokens cater to HTML tags, which are
+ * insensitive.
+ * @type string
+ */
+ public $name;
+
+ /**
+ * Associative array of the node's attributes.
+ * @type array
+ */
+ public $attr = array();
+
+ /**
+ * List of child elements.
+ * @type array
+ */
+ public $children = array();
+
+ /**
+ * Does this use the <a></a> form or the </a> form, i.e.
+ * is it a pair of start/end tokens or an empty token.
+ * @bool
+ */
+ public $empty = false;
+
+ public $endCol = null, $endLine = null, $endArmor = array();
+
+ public function __construct($name, $attr = array(), $line = null, $col = null, $armor = array()) {
+ $this->name = $name;
+ $this->attr = $attr;
+ $this->line = $line;
+ $this->col = $col;
+ $this->armor = $armor;
+ }
+
+ public function toTokenPair() {
+ // XXX inefficiency here, normalization is not necessary
+ if ($this->empty) {
+ return array(new HTMLPurifier_Token_Empty($this->name, $this->attr, $this->line, $this->col, $this->armor), null);
+ } else {
+ $start = new HTMLPurifier_Token_Start($this->name, $this->attr, $this->line, $this->col, $this->armor);
+ $end = new HTMLPurifier_Token_End($this->name, array(), $this->endLine, $this->endCol, $this->endArmor);
+ //$end->start = $start;
+ return array($start, $end);
+ }
+ }
+}
+
diff --git a/library/HTMLPurifier/Node/Text.php b/library/HTMLPurifier/Node/Text.php
new file mode 100644
index 000000000..aec916647
--- /dev/null
+++ b/library/HTMLPurifier/Node/Text.php
@@ -0,0 +1,54 @@
+<?php
+
+/**
+ * Concrete text token class.
+ *
+ * Text tokens comprise of regular parsed character data (PCDATA) and raw
+ * character data (from the CDATA sections). Internally, their
+ * data is parsed with all entities expanded. Surprisingly, the text token
+ * does have a "tag name" called #PCDATA, which is how the DTD represents it
+ * in permissible child nodes.
+ */
+class HTMLPurifier_Node_Text extends HTMLPurifier_Node
+{
+
+ /**
+ * PCDATA tag name compatible with DTD, see
+ * HTMLPurifier_ChildDef_Custom for details.
+ * @type string
+ */
+ public $name = '#PCDATA';
+
+ /**
+ * @type string
+ */
+ public $data;
+ /**< Parsed character data of text. */
+
+ /**
+ * @type bool
+ */
+ public $is_whitespace;
+
+ /**< Bool indicating if node is whitespace. */
+
+ /**
+ * Constructor, accepts data and determines if it is whitespace.
+ * @param string $data String parsed character data.
+ * @param int $line
+ * @param int $col
+ */
+ public function __construct($data, $is_whitespace, $line = null, $col = null)
+ {
+ $this->data = $data;
+ $this->is_whitespace = $is_whitespace;
+ $this->line = $line;
+ $this->col = $col;
+ }
+
+ public function toTokenPair() {
+ return array(new HTMLPurifier_Token_Text($this->data, $this->line, $this->col), null);
+ }
+}
+
+// vim: et sw=4 sts=4
diff --git a/library/HTMLPurifier/PercentEncoder.php b/library/HTMLPurifier/PercentEncoder.php
index a43c44f4c..18c8bbb00 100644
--- a/library/HTMLPurifier/PercentEncoder.php
+++ b/library/HTMLPurifier/PercentEncoder.php
@@ -13,17 +13,26 @@ class HTMLPurifier_PercentEncoder
/**
* Reserved characters to preserve when using encode().
+ * @type array
*/
protected $preserve = array();
/**
* String of characters that should be preserved while using encode().
+ * @param bool $preserve
*/
- public function __construct($preserve = false) {
+ public function __construct($preserve = false)
+ {
// unreserved letters, ought to const-ify
- for ($i = 48; $i <= 57; $i++) $this->preserve[$i] = true; // digits
- for ($i = 65; $i <= 90; $i++) $this->preserve[$i] = true; // upper-case
- for ($i = 97; $i <= 122; $i++) $this->preserve[$i] = true; // lower-case
+ for ($i = 48; $i <= 57; $i++) { // digits
+ $this->preserve[$i] = true;
+ }
+ for ($i = 65; $i <= 90; $i++) { // upper-case
+ $this->preserve[$i] = true;
+ }
+ for ($i = 97; $i <= 122; $i++) { // lower-case
+ $this->preserve[$i] = true;
+ }
$this->preserve[45] = true; // Dash -
$this->preserve[46] = true; // Period .
$this->preserve[95] = true; // Underscore _
@@ -44,13 +53,14 @@ class HTMLPurifier_PercentEncoder
* Assumes that the string has already been normalized, making any
* and all percent escape sequences valid. Percents will not be
* re-escaped, regardless of their status in $preserve
- * @param $string String to be encoded
- * @return Encoded string.
+ * @param string $string String to be encoded
+ * @return string Encoded string.
*/
- public function encode($string) {
+ public function encode($string)
+ {
$ret = '';
for ($i = 0, $c = strlen($string); $i < $c; $i++) {
- if ($string[$i] !== '%' && !isset($this->preserve[$int = ord($string[$i])]) ) {
+ if ($string[$i] !== '%' && !isset($this->preserve[$int = ord($string[$i])])) {
$ret .= '%' . sprintf('%02X', $int);
} else {
$ret .= $string[$i];
@@ -64,10 +74,14 @@ class HTMLPurifier_PercentEncoder
* @warning This function is affected by $preserve, even though the
* usual desired behavior is for this not to preserve those
* characters. Be careful when reusing instances of PercentEncoder!
- * @param $string String to normalize
+ * @param string $string String to normalize
+ * @return string
*/
- public function normalize($string) {
- if ($string == '') return '';
+ public function normalize($string)
+ {
+ if ($string == '') {
+ return '';
+ }
$parts = explode('%', $string);
$ret = array_shift($parts);
foreach ($parts as $part) {
@@ -92,7 +106,6 @@ class HTMLPurifier_PercentEncoder
}
return $ret;
}
-
}
// vim: et sw=4 sts=4
diff --git a/library/HTMLPurifier/Printer.php b/library/HTMLPurifier/Printer.php
index e7eb82e83..549e4cea1 100644
--- a/library/HTMLPurifier/Printer.php
+++ b/library/HTMLPurifier/Printer.php
@@ -7,25 +7,30 @@ class HTMLPurifier_Printer
{
/**
- * Instance of HTMLPurifier_Generator for HTML generation convenience funcs
+ * For HTML generation convenience funcs.
+ * @type HTMLPurifier_Generator
*/
protected $generator;
/**
- * Instance of HTMLPurifier_Config, for easy access
+ * For easy access.
+ * @type HTMLPurifier_Config
*/
protected $config;
/**
* Initialize $generator.
*/
- public function __construct() {
+ public function __construct()
+ {
}
/**
* Give generator necessary configuration if possible
+ * @param HTMLPurifier_Config $config
*/
- public function prepareGenerator($config) {
+ public function prepareGenerator($config)
+ {
$all = $config->getAll();
$context = new HTMLPurifier_Context();
$this->generator = new HTMLPurifier_Generator($config, $context);
@@ -39,45 +44,62 @@ class HTMLPurifier_Printer
/**
* Returns a start tag
- * @param $tag Tag name
- * @param $attr Attribute array
+ * @param string $tag Tag name
+ * @param array $attr Attribute array
+ * @return string
*/
- protected function start($tag, $attr = array()) {
+ protected function start($tag, $attr = array())
+ {
return $this->generator->generateFromToken(
- new HTMLPurifier_Token_Start($tag, $attr ? $attr : array())
- );
+ new HTMLPurifier_Token_Start($tag, $attr ? $attr : array())
+ );
}
/**
- * Returns an end teg
- * @param $tag Tag name
+ * Returns an end tag
+ * @param string $tag Tag name
+ * @return string
*/
- protected function end($tag) {
+ protected function end($tag)
+ {
return $this->generator->generateFromToken(
- new HTMLPurifier_Token_End($tag)
- );
+ new HTMLPurifier_Token_End($tag)
+ );
}
/**
* Prints a complete element with content inside
- * @param $tag Tag name
- * @param $contents Element contents
- * @param $attr Tag attributes
- * @param $escape Bool whether or not to escape contents
+ * @param string $tag Tag name
+ * @param string $contents Element contents
+ * @param array $attr Tag attributes
+ * @param bool $escape whether or not to escape contents
+ * @return string
*/
- protected function element($tag, $contents, $attr = array(), $escape = true) {
+ protected function element($tag, $contents, $attr = array(), $escape = true)
+ {
return $this->start($tag, $attr) .
- ($escape ? $this->escape($contents) : $contents) .
- $this->end($tag);
+ ($escape ? $this->escape($contents) : $contents) .
+ $this->end($tag);
}
- protected function elementEmpty($tag, $attr = array()) {
+ /**
+ * @param string $tag
+ * @param array $attr
+ * @return string
+ */
+ protected function elementEmpty($tag, $attr = array())
+ {
return $this->generator->generateFromToken(
new HTMLPurifier_Token_Empty($tag, $attr)
);
}
- protected function text($text) {
+ /**
+ * @param string $text
+ * @return string
+ */
+ protected function text($text)
+ {
return $this->generator->generateFromToken(
new HTMLPurifier_Token_Text($text)
);
@@ -85,24 +107,29 @@ class HTMLPurifier_Printer
/**
* Prints a simple key/value row in a table.
- * @param $name Key
- * @param $value Value
+ * @param string $name Key
+ * @param mixed $value Value
+ * @return string
*/
- protected function row($name, $value) {
- if (is_bool($value)) $value = $value ? 'On' : 'Off';
+ protected function row($name, $value)
+ {
+ if (is_bool($value)) {
+ $value = $value ? 'On' : 'Off';
+ }
return
$this->start('tr') . "\n" .
- $this->element('th', $name) . "\n" .
- $this->element('td', $value) . "\n" .
- $this->end('tr')
- ;
+ $this->element('th', $name) . "\n" .
+ $this->element('td', $value) . "\n" .
+ $this->end('tr');
}
/**
* Escapes a string for HTML output.
- * @param $string String to escape
+ * @param string $string String to escape
+ * @return string
*/
- protected function escape($string) {
+ protected function escape($string)
+ {
$string = HTMLPurifier_Encoder::cleanUTF8($string);
$string = htmlspecialchars($string, ENT_COMPAT, 'UTF-8');
return $string;
@@ -110,32 +137,46 @@ class HTMLPurifier_Printer
/**
* Takes a list of strings and turns them into a single list
- * @param $array List of strings
- * @param $polite Bool whether or not to add an end before the last
+ * @param string[] $array List of strings
+ * @param bool $polite Bool whether or not to add an end before the last
+ * @return string
*/
- protected function listify($array, $polite = false) {
- if (empty($array)) return 'None';
+ protected function listify($array, $polite = false)
+ {
+ if (empty($array)) {
+ return 'None';
+ }
$ret = '';
$i = count($array);
foreach ($array as $value) {
$i--;
$ret .= $value;
- if ($i > 0 && !($polite && $i == 1)) $ret .= ', ';
- if ($polite && $i == 1) $ret .= 'and ';
+ if ($i > 0 && !($polite && $i == 1)) {
+ $ret .= ', ';
+ }
+ if ($polite && $i == 1) {
+ $ret .= 'and ';
+ }
}
return $ret;
}
/**
* Retrieves the class of an object without prefixes, as well as metadata
- * @param $obj Object to determine class of
- * @param $prefix Further prefix to remove
+ * @param object $obj Object to determine class of
+ * @param string $sec_prefix Further prefix to remove
+ * @return string
*/
- protected function getClass($obj, $sec_prefix = '') {
+ protected function getClass($obj, $sec_prefix = '')
+ {
static $five = null;
- if ($five === null) $five = version_compare(PHP_VERSION, '5', '>=');
+ if ($five === null) {
+ $five = version_compare(PHP_VERSION, '5', '>=');
+ }
$prefix = 'HTMLPurifier_' . $sec_prefix;
- if (!$five) $prefix = strtolower($prefix);
+ if (!$five) {
+ $prefix = strtolower($prefix);
+ }
$class = str_replace($prefix, '', get_class($obj));
$lclass = strtolower($class);
$class .= '(';
@@ -164,13 +205,14 @@ class HTMLPurifier_Printer
break;
case 'css_importantdecorator':
$class .= $this->getClass($obj->def, $sec_prefix);
- if ($obj->allow) $class .= ', !important';
+ if ($obj->allow) {
+ $class .= ', !important';
+ }
break;
}
$class .= ')';
return $class;
}
-
}
// vim: et sw=4 sts=4
diff --git a/library/HTMLPurifier/Printer/CSSDefinition.php b/library/HTMLPurifier/Printer/CSSDefinition.php
index 81f986590..29505fe12 100644
--- a/library/HTMLPurifier/Printer/CSSDefinition.php
+++ b/library/HTMLPurifier/Printer/CSSDefinition.php
@@ -2,10 +2,17 @@
class HTMLPurifier_Printer_CSSDefinition extends HTMLPurifier_Printer
{
-
+ /**
+ * @type HTMLPurifier_CSSDefinition
+ */
protected $def;
- public function render($config) {
+ /**
+ * @param HTMLPurifier_Config $config
+ * @return string
+ */
+ public function render($config)
+ {
$this->def = $config->getCSSDefinition();
$ret = '';
@@ -32,7 +39,6 @@ class HTMLPurifier_Printer_CSSDefinition extends HTMLPurifier_Printer
return $ret;
}
-
}
// vim: et sw=4 sts=4
diff --git a/library/HTMLPurifier/Printer/ConfigForm.php b/library/HTMLPurifier/Printer/ConfigForm.php
index 02aa65689..36100ce73 100644
--- a/library/HTMLPurifier/Printer/ConfigForm.php
+++ b/library/HTMLPurifier/Printer/ConfigForm.php
@@ -7,17 +7,20 @@ class HTMLPurifier_Printer_ConfigForm extends HTMLPurifier_Printer
{
/**
- * Printers for specific fields
+ * Printers for specific fields.
+ * @type HTMLPurifier_Printer[]
*/
protected $fields = array();
/**
- * Documentation URL, can have fragment tagged on end
+ * Documentation URL, can have fragment tagged on end.
+ * @type string
*/
protected $docURL;
/**
- * Name of form element to stuff config in
+ * Name of form element to stuff config in.
+ * @type string
*/
protected $name;
@@ -25,24 +28,27 @@ class HTMLPurifier_Printer_ConfigForm extends HTMLPurifier_Printer
* Whether or not to compress directive names, clipping them off
* after a certain amount of letters. False to disable or integer letters
* before clipping.
+ * @type bool
*/
protected $compress = false;
/**
- * @param $name Form element name for directives to be stuffed into
- * @param $doc_url String documentation URL, will have fragment tagged on
- * @param $compress Integer max length before compressing a directive name, set to false to turn off
+ * @param string $name Form element name for directives to be stuffed into
+ * @param string $doc_url String documentation URL, will have fragment tagged on
+ * @param bool $compress Integer max length before compressing a directive name, set to false to turn off
*/
public function __construct(
- $name, $doc_url = null, $compress = false
+ $name,
+ $doc_url = null,
+ $compress = false
) {
parent::__construct();
$this->docURL = $doc_url;
- $this->name = $name;
+ $this->name = $name;
$this->compress = $compress;
// initialize sub-printers
- $this->fields[0] = new HTMLPurifier_Printer_ConfigForm_default();
- $this->fields[HTMLPurifier_VarParser::BOOL] = new HTMLPurifier_Printer_ConfigForm_bool();
+ $this->fields[0] = new HTMLPurifier_Printer_ConfigForm_default();
+ $this->fields[HTMLPurifier_VarParser::BOOL] = new HTMLPurifier_Printer_ConfigForm_bool();
}
/**
@@ -50,32 +56,42 @@ class HTMLPurifier_Printer_ConfigForm extends HTMLPurifier_Printer
* @param $cols Integer columns of textarea, null to use default
* @param $rows Integer rows of textarea, null to use default
*/
- public function setTextareaDimensions($cols = null, $rows = null) {
- if ($cols) $this->fields['default']->cols = $cols;
- if ($rows) $this->fields['default']->rows = $rows;
+ public function setTextareaDimensions($cols = null, $rows = null)
+ {
+ if ($cols) {
+ $this->fields['default']->cols = $cols;
+ }
+ if ($rows) {
+ $this->fields['default']->rows = $rows;
+ }
}
/**
* Retrieves styling, in case it is not accessible by webserver
*/
- public static function getCSS() {
+ public static function getCSS()
+ {
return file_get_contents(HTMLPURIFIER_PREFIX . '/HTMLPurifier/Printer/ConfigForm.css');
}
/**
* Retrieves JavaScript, in case it is not accessible by webserver
*/
- public static function getJavaScript() {
+ public static function getJavaScript()
+ {
return file_get_contents(HTMLPURIFIER_PREFIX . '/HTMLPurifier/Printer/ConfigForm.js');
}
/**
* Returns HTML output for a configuration form
- * @param $config Configuration object of current form state, or an array
+ * @param HTMLPurifier_Config|array $config Configuration object of current form state, or an array
* where [0] has an HTML namespace and [1] is being rendered.
- * @param $allowed Optional namespace(s) and directives to restrict form to.
+ * @param array|bool $allowed Optional namespace(s) and directives to restrict form to.
+ * @param bool $render_controls
+ * @return string
*/
- public function render($config, $allowed = true, $render_controls = true) {
+ public function render($config, $allowed = true, $render_controls = true)
+ {
if (is_array($config) && isset($config[0])) {
$gen_config = $config[0];
$config = $config[1];
@@ -91,29 +107,29 @@ class HTMLPurifier_Printer_ConfigForm extends HTMLPurifier_Printer
$all = array();
foreach ($allowed as $key) {
list($ns, $directive) = $key;
- $all[$ns][$directive] = $config->get($ns .'.'. $directive);
+ $all[$ns][$directive] = $config->get($ns . '.' . $directive);
}
$ret = '';
$ret .= $this->start('table', array('class' => 'hp-config'));
$ret .= $this->start('thead');
$ret .= $this->start('tr');
- $ret .= $this->element('th', 'Directive', array('class' => 'hp-directive'));
- $ret .= $this->element('th', 'Value', array('class' => 'hp-value'));
+ $ret .= $this->element('th', 'Directive', array('class' => 'hp-directive'));
+ $ret .= $this->element('th', 'Value', array('class' => 'hp-value'));
$ret .= $this->end('tr');
$ret .= $this->end('thead');
foreach ($all as $ns => $directives) {
$ret .= $this->renderNamespace($ns, $directives);
}
if ($render_controls) {
- $ret .= $this->start('tbody');
- $ret .= $this->start('tr');
- $ret .= $this->start('td', array('colspan' => 2, 'class' => 'controls'));
- $ret .= $this->elementEmpty('input', array('type' => 'submit', 'value' => 'Submit'));
- $ret .= '[<a href="?">Reset</a>]';
- $ret .= $this->end('td');
- $ret .= $this->end('tr');
- $ret .= $this->end('tbody');
+ $ret .= $this->start('tbody');
+ $ret .= $this->start('tr');
+ $ret .= $this->start('td', array('colspan' => 2, 'class' => 'controls'));
+ $ret .= $this->elementEmpty('input', array('type' => 'submit', 'value' => 'Submit'));
+ $ret .= '[<a href="?">Reset</a>]';
+ $ret .= $this->end('td');
+ $ret .= $this->end('tr');
+ $ret .= $this->end('tbody');
}
$ret .= $this->end('table');
return $ret;
@@ -122,13 +138,15 @@ class HTMLPurifier_Printer_ConfigForm extends HTMLPurifier_Printer
/**
* Renders a single namespace
* @param $ns String namespace name
- * @param $directive Associative array of directives to values
+ * @param array $directives array of directives to values
+ * @return string
*/
- protected function renderNamespace($ns, $directives) {
+ protected function renderNamespace($ns, $directives)
+ {
$ret = '';
$ret .= $this->start('tbody', array('class' => 'namespace'));
$ret .= $this->start('tr');
- $ret .= $this->element('th', $ns, array('colspan' => 2));
+ $ret .= $this->element('th', $ns, array('colspan' => 2));
$ret .= $this->end('tr');
$ret .= $this->end('tbody');
$ret .= $this->start('tbody');
@@ -139,40 +157,44 @@ class HTMLPurifier_Printer_ConfigForm extends HTMLPurifier_Printer
$url = str_replace('%s', urlencode("$ns.$directive"), $this->docURL);
$ret .= $this->start('a', array('href' => $url));
}
- $attr = array('for' => "{$this->name}:$ns.$directive");
-
- // crop directive name if it's too long
- if (!$this->compress || (strlen($directive) < $this->compress)) {
- $directive_disp = $directive;
- } else {
- $directive_disp = substr($directive, 0, $this->compress - 2) . '...';
- $attr['title'] = $directive;
- }
+ $attr = array('for' => "{$this->name}:$ns.$directive");
+
+ // crop directive name if it's too long
+ if (!$this->compress || (strlen($directive) < $this->compress)) {
+ $directive_disp = $directive;
+ } else {
+ $directive_disp = substr($directive, 0, $this->compress - 2) . '...';
+ $attr['title'] = $directive;
+ }
- $ret .= $this->element(
- 'label',
- $directive_disp,
- // component printers must create an element with this id
- $attr
- );
- if ($this->docURL) $ret .= $this->end('a');
+ $ret .= $this->element(
+ 'label',
+ $directive_disp,
+ // component printers must create an element with this id
+ $attr
+ );
+ if ($this->docURL) {
+ $ret .= $this->end('a');
+ }
$ret .= $this->end('th');
$ret .= $this->start('td');
- $def = $this->config->def->info["$ns.$directive"];
- if (is_int($def)) {
- $allow_null = $def < 0;
- $type = abs($def);
- } else {
- $type = $def->type;
- $allow_null = isset($def->allow_null);
- }
- if (!isset($this->fields[$type])) $type = 0; // default
- $type_obj = $this->fields[$type];
- if ($allow_null) {
- $type_obj = new HTMLPurifier_Printer_ConfigForm_NullDecorator($type_obj);
- }
- $ret .= $type_obj->render($ns, $directive, $value, $this->name, array($this->genConfig, $this->config));
+ $def = $this->config->def->info["$ns.$directive"];
+ if (is_int($def)) {
+ $allow_null = $def < 0;
+ $type = abs($def);
+ } else {
+ $type = $def->type;
+ $allow_null = isset($def->allow_null);
+ }
+ if (!isset($this->fields[$type])) {
+ $type = 0;
+ } // default
+ $type_obj = $this->fields[$type];
+ if ($allow_null) {
+ $type_obj = new HTMLPurifier_Printer_ConfigForm_NullDecorator($type_obj);
+ }
+ $ret .= $type_obj->render($ns, $directive, $value, $this->name, array($this->genConfig, $this->config));
$ret .= $this->end('td');
$ret .= $this->end('tr');
}
@@ -185,19 +207,33 @@ class HTMLPurifier_Printer_ConfigForm extends HTMLPurifier_Printer
/**
* Printer decorator for directives that accept null
*/
-class HTMLPurifier_Printer_ConfigForm_NullDecorator extends HTMLPurifier_Printer {
+class HTMLPurifier_Printer_ConfigForm_NullDecorator extends HTMLPurifier_Printer
+{
/**
* Printer being decorated
+ * @type HTMLPurifier_Printer
*/
protected $obj;
+
/**
- * @param $obj Printer to decorate
+ * @param HTMLPurifier_Printer $obj Printer to decorate
*/
- public function __construct($obj) {
+ public function __construct($obj)
+ {
parent::__construct();
$this->obj = $obj;
}
- public function render($ns, $directive, $value, $name, $config) {
+
+ /**
+ * @param string $ns
+ * @param string $directive
+ * @param string $value
+ * @param string $name
+ * @param HTMLPurifier_Config|array $config
+ * @return string
+ */
+ public function render($ns, $directive, $value, $name, $config)
+ {
if (is_array($config) && isset($config[0])) {
$gen_config = $config[0];
$config = $config[1];
@@ -215,15 +251,19 @@ class HTMLPurifier_Printer_ConfigForm_NullDecorator extends HTMLPurifier_Printer
'type' => 'checkbox',
'value' => '1',
'class' => 'null-toggle',
- 'name' => "$name"."[Null_$ns.$directive]",
+ 'name' => "$name" . "[Null_$ns.$directive]",
'id' => "$name:Null_$ns.$directive",
'onclick' => "toggleWriteability('$name:$ns.$directive',checked)" // INLINE JAVASCRIPT!!!!
);
if ($this->obj instanceof HTMLPurifier_Printer_ConfigForm_bool) {
// modify inline javascript slightly
- $attr['onclick'] = "toggleWriteability('$name:Yes_$ns.$directive',checked);toggleWriteability('$name:No_$ns.$directive',checked)";
+ $attr['onclick'] =
+ "toggleWriteability('$name:Yes_$ns.$directive',checked);" .
+ "toggleWriteability('$name:No_$ns.$directive',checked)";
+ }
+ if ($value === null) {
+ $attr['checked'] = 'checked';
}
- if ($value === null) $attr['checked'] = 'checked';
$ret .= $this->elementEmpty('input', $attr);
$ret .= $this->text(' or ');
$ret .= $this->elementEmpty('br');
@@ -235,10 +275,28 @@ class HTMLPurifier_Printer_ConfigForm_NullDecorator extends HTMLPurifier_Printer
/**
* Swiss-army knife configuration form field printer
*/
-class HTMLPurifier_Printer_ConfigForm_default extends HTMLPurifier_Printer {
+class HTMLPurifier_Printer_ConfigForm_default extends HTMLPurifier_Printer
+{
+ /**
+ * @type int
+ */
public $cols = 18;
+
+ /**
+ * @type int
+ */
public $rows = 5;
- public function render($ns, $directive, $value, $name, $config) {
+
+ /**
+ * @param string $ns
+ * @param string $directive
+ * @param string $value
+ * @param string $name
+ * @param HTMLPurifier_Config|array $config
+ * @return string
+ */
+ public function render($ns, $directive, $value, $name, $config)
+ {
if (is_array($config) && isset($config[0])) {
$gen_config = $config[0];
$config = $config[1];
@@ -262,6 +320,7 @@ class HTMLPurifier_Printer_ConfigForm_default extends HTMLPurifier_Printer {
foreach ($array as $val => $b) {
$value[] = $val;
}
+ //TODO does this need a break?
case HTMLPurifier_VarParser::ALIST:
$value = implode(PHP_EOL, $value);
break;
@@ -281,25 +340,27 @@ class HTMLPurifier_Printer_ConfigForm_default extends HTMLPurifier_Printer {
$value = serialize($value);
}
$attr = array(
- 'name' => "$name"."[$ns.$directive]",
+ 'name' => "$name" . "[$ns.$directive]",
'id' => "$name:$ns.$directive"
);
- if ($value === null) $attr['disabled'] = 'disabled';
+ if ($value === null) {
+ $attr['disabled'] = 'disabled';
+ }
if (isset($def->allowed)) {
$ret .= $this->start('select', $attr);
foreach ($def->allowed as $val => $b) {
$attr = array();
- if ($value == $val) $attr['selected'] = 'selected';
+ if ($value == $val) {
+ $attr['selected'] = 'selected';
+ }
$ret .= $this->element('option', $val, $attr);
}
$ret .= $this->end('select');
- } elseif (
- $type === HTMLPurifier_VarParser::TEXT ||
- $type === HTMLPurifier_VarParser::ITEXT ||
- $type === HTMLPurifier_VarParser::ALIST ||
- $type === HTMLPurifier_VarParser::HASH ||
- $type === HTMLPurifier_VarParser::LOOKUP
- ) {
+ } elseif ($type === HTMLPurifier_VarParser::TEXT ||
+ $type === HTMLPurifier_VarParser::ITEXT ||
+ $type === HTMLPurifier_VarParser::ALIST ||
+ $type === HTMLPurifier_VarParser::HASH ||
+ $type === HTMLPurifier_VarParser::LOOKUP) {
$attr['cols'] = $this->cols;
$attr['rows'] = $this->rows;
$ret .= $this->start('textarea', $attr);
@@ -317,8 +378,18 @@ class HTMLPurifier_Printer_ConfigForm_default extends HTMLPurifier_Printer {
/**
* Bool form field printer
*/
-class HTMLPurifier_Printer_ConfigForm_bool extends HTMLPurifier_Printer {
- public function render($ns, $directive, $value, $name, $config) {
+class HTMLPurifier_Printer_ConfigForm_bool extends HTMLPurifier_Printer
+{
+ /**
+ * @param string $ns
+ * @param string $directive
+ * @param string $value
+ * @param string $name
+ * @param HTMLPurifier_Config|array $config
+ * @return string
+ */
+ public function render($ns, $directive, $value, $name, $config)
+ {
if (is_array($config) && isset($config[0])) {
$gen_config = $config[0];
$config = $config[1];
@@ -336,12 +407,16 @@ class HTMLPurifier_Printer_ConfigForm_bool extends HTMLPurifier_Printer {
$attr = array(
'type' => 'radio',
- 'name' => "$name"."[$ns.$directive]",
+ 'name' => "$name" . "[$ns.$directive]",
'id' => "$name:Yes_$ns.$directive",
'value' => '1'
);
- if ($value === true) $attr['checked'] = 'checked';
- if ($value === null) $attr['disabled'] = 'disabled';
+ if ($value === true) {
+ $attr['checked'] = 'checked';
+ }
+ if ($value === null) {
+ $attr['disabled'] = 'disabled';
+ }
$ret .= $this->elementEmpty('input', $attr);
$ret .= $this->start('label', array('for' => "$name:No_$ns.$directive"));
@@ -351,12 +426,16 @@ class HTMLPurifier_Printer_ConfigForm_bool extends HTMLPurifier_Printer {
$attr = array(
'type' => 'radio',
- 'name' => "$name"."[$ns.$directive]",
+ 'name' => "$name" . "[$ns.$directive]",
'id' => "$name:No_$ns.$directive",
'value' => '0'
);
- if ($value === false) $attr['checked'] = 'checked';
- if ($value === null) $attr['disabled'] = 'disabled';
+ if ($value === false) {
+ $attr['checked'] = 'checked';
+ }
+ if ($value === null) {
+ $attr['disabled'] = 'disabled';
+ }
$ret .= $this->elementEmpty('input', $attr);
$ret .= $this->end('div');
diff --git a/library/HTMLPurifier/Printer/HTMLDefinition.php b/library/HTMLPurifier/Printer/HTMLDefinition.php
index 8a8f126b8..5f2f2f8a7 100644
--- a/library/HTMLPurifier/Printer/HTMLDefinition.php
+++ b/library/HTMLPurifier/Printer/HTMLDefinition.php
@@ -4,11 +4,16 @@ class HTMLPurifier_Printer_HTMLDefinition extends HTMLPurifier_Printer
{
/**
- * Instance of HTMLPurifier_HTMLDefinition, for easy access
+ * @type HTMLPurifier_HTMLDefinition, for easy access
*/
protected $def;
- public function render($config) {
+ /**
+ * @param HTMLPurifier_Config $config
+ * @return string
+ */
+ public function render($config)
+ {
$ret = '';
$this->config =& $config;
@@ -28,8 +33,10 @@ class HTMLPurifier_Printer_HTMLDefinition extends HTMLPurifier_Printer
/**
* Renders the Doctype table
+ * @return string
*/
- protected function renderDoctype() {
+ protected function renderDoctype()
+ {
$doctype = $this->def->doctype;
$ret = '';
$ret .= $this->start('table');
@@ -45,8 +52,10 @@ class HTMLPurifier_Printer_HTMLDefinition extends HTMLPurifier_Printer
/**
* Renders environment table, which is miscellaneous info
+ * @return string
*/
- protected function renderEnvironment() {
+ protected function renderEnvironment()
+ {
$def = $this->def;
$ret = '';
@@ -59,28 +68,28 @@ class HTMLPurifier_Printer_HTMLDefinition extends HTMLPurifier_Printer
$ret .= $this->row('Block wrap name', $def->info_block_wrapper);
$ret .= $this->start('tr');
- $ret .= $this->element('th', 'Global attributes');
- $ret .= $this->element('td', $this->listifyAttr($def->info_global_attr),0,0);
+ $ret .= $this->element('th', 'Global attributes');
+ $ret .= $this->element('td', $this->listifyAttr($def->info_global_attr), null, 0);
$ret .= $this->end('tr');
$ret .= $this->start('tr');
- $ret .= $this->element('th', 'Tag transforms');
- $list = array();
- foreach ($def->info_tag_transform as $old => $new) {
- $new = $this->getClass($new, 'TagTransform_');
- $list[] = "<$old> with $new";
- }
- $ret .= $this->element('td', $this->listify($list));
+ $ret .= $this->element('th', 'Tag transforms');
+ $list = array();
+ foreach ($def->info_tag_transform as $old => $new) {
+ $new = $this->getClass($new, 'TagTransform_');
+ $list[] = "<$old> with $new";
+ }
+ $ret .= $this->element('td', $this->listify($list));
$ret .= $this->end('tr');
$ret .= $this->start('tr');
- $ret .= $this->element('th', 'Pre-AttrTransform');
- $ret .= $this->element('td', $this->listifyObjectList($def->info_attr_transform_pre));
+ $ret .= $this->element('th', 'Pre-AttrTransform');
+ $ret .= $this->element('td', $this->listifyObjectList($def->info_attr_transform_pre));
$ret .= $this->end('tr');
$ret .= $this->start('tr');
- $ret .= $this->element('th', 'Post-AttrTransform');
- $ret .= $this->element('td', $this->listifyObjectList($def->info_attr_transform_post));
+ $ret .= $this->element('th', 'Post-AttrTransform');
+ $ret .= $this->element('td', $this->listifyObjectList($def->info_attr_transform_post));
$ret .= $this->end('tr');
$ret .= $this->end('table');
@@ -89,8 +98,10 @@ class HTMLPurifier_Printer_HTMLDefinition extends HTMLPurifier_Printer
/**
* Renders the Content Sets table
+ * @return string
*/
- protected function renderContentSets() {
+ protected function renderContentSets()
+ {
$ret = '';
$ret .= $this->start('table');
$ret .= $this->element('caption', 'Content Sets');
@@ -106,8 +117,10 @@ class HTMLPurifier_Printer_HTMLDefinition extends HTMLPurifier_Printer
/**
* Renders the Elements ($info) table
+ * @return string
*/
- protected function renderInfo() {
+ protected function renderInfo()
+ {
$ret = '';
$ret .= $this->start('table');
$ret .= $this->element('caption', 'Elements ($info)');
@@ -118,39 +131,39 @@ class HTMLPurifier_Printer_HTMLDefinition extends HTMLPurifier_Printer
$ret .= $this->end('tr');
foreach ($this->def->info as $name => $def) {
$ret .= $this->start('tr');
- $ret .= $this->element('th', "<$name>", array('class'=>'heavy', 'colspan' => 2));
+ $ret .= $this->element('th', "<$name>", array('class' => 'heavy', 'colspan' => 2));
$ret .= $this->end('tr');
$ret .= $this->start('tr');
- $ret .= $this->element('th', 'Inline content');
- $ret .= $this->element('td', $def->descendants_are_inline ? 'Yes' : 'No');
+ $ret .= $this->element('th', 'Inline content');
+ $ret .= $this->element('td', $def->descendants_are_inline ? 'Yes' : 'No');
$ret .= $this->end('tr');
if (!empty($def->excludes)) {
$ret .= $this->start('tr');
- $ret .= $this->element('th', 'Excludes');
- $ret .= $this->element('td', $this->listifyTagLookup($def->excludes));
+ $ret .= $this->element('th', 'Excludes');
+ $ret .= $this->element('td', $this->listifyTagLookup($def->excludes));
$ret .= $this->end('tr');
}
if (!empty($def->attr_transform_pre)) {
$ret .= $this->start('tr');
- $ret .= $this->element('th', 'Pre-AttrTransform');
- $ret .= $this->element('td', $this->listifyObjectList($def->attr_transform_pre));
+ $ret .= $this->element('th', 'Pre-AttrTransform');
+ $ret .= $this->element('td', $this->listifyObjectList($def->attr_transform_pre));
$ret .= $this->end('tr');
}
if (!empty($def->attr_transform_post)) {
$ret .= $this->start('tr');
- $ret .= $this->element('th', 'Post-AttrTransform');
- $ret .= $this->element('td', $this->listifyObjectList($def->attr_transform_post));
+ $ret .= $this->element('th', 'Post-AttrTransform');
+ $ret .= $this->element('td', $this->listifyObjectList($def->attr_transform_post));
$ret .= $this->end('tr');
}
if (!empty($def->auto_close)) {
$ret .= $this->start('tr');
- $ret .= $this->element('th', 'Auto closed by');
- $ret .= $this->element('td', $this->listifyTagLookup($def->auto_close));
+ $ret .= $this->element('th', 'Auto closed by');
+ $ret .= $this->element('td', $this->listifyTagLookup($def->auto_close));
$ret .= $this->end('tr');
}
$ret .= $this->start('tr');
- $ret .= $this->element('th', 'Allowed attributes');
- $ret .= $this->element('td',$this->listifyAttr($def->attr), array(), 0);
+ $ret .= $this->element('th', 'Allowed attributes');
+ $ret .= $this->element('td', $this->listifyAttr($def->attr), array(), 0);
$ret .= $this->end('tr');
if (!empty($def->required_attr)) {
@@ -165,64 +178,94 @@ class HTMLPurifier_Printer_HTMLDefinition extends HTMLPurifier_Printer
/**
* Renders a row describing the allowed children of an element
- * @param $def HTMLPurifier_ChildDef of pertinent element
+ * @param HTMLPurifier_ChildDef $def HTMLPurifier_ChildDef of pertinent element
+ * @return string
*/
- protected function renderChildren($def) {
+ protected function renderChildren($def)
+ {
$context = new HTMLPurifier_Context();
$ret = '';
$ret .= $this->start('tr');
- $elements = array();
- $attr = array();
- if (isset($def->elements)) {
- if ($def->type == 'strictblockquote') {
- $def->validateChildren(array(), $this->config, $context);
- }
- $elements = $def->elements;
+ $elements = array();
+ $attr = array();
+ if (isset($def->elements)) {
+ if ($def->type == 'strictblockquote') {
+ $def->validateChildren(array(), $this->config, $context);
}
- if ($def->type == 'chameleon') {
- $attr['rowspan'] = 2;
- } elseif ($def->type == 'empty') {
- $elements = array();
- } elseif ($def->type == 'table') {
- $elements = array_flip(array('col', 'caption', 'colgroup', 'thead',
- 'tfoot', 'tbody', 'tr'));
- }
- $ret .= $this->element('th', 'Allowed children', $attr);
-
- if ($def->type == 'chameleon') {
-
- $ret .= $this->element('td',
- '<em>Block</em>: ' .
- $this->escape($this->listifyTagLookup($def->block->elements)),0,0);
- $ret .= $this->end('tr');
- $ret .= $this->start('tr');
- $ret .= $this->element('td',
- '<em>Inline</em>: ' .
- $this->escape($this->listifyTagLookup($def->inline->elements)),0,0);
-
- } elseif ($def->type == 'custom') {
+ $elements = $def->elements;
+ }
+ if ($def->type == 'chameleon') {
+ $attr['rowspan'] = 2;
+ } elseif ($def->type == 'empty') {
+ $elements = array();
+ } elseif ($def->type == 'table') {
+ $elements = array_flip(
+ array(
+ 'col',
+ 'caption',
+ 'colgroup',
+ 'thead',
+ 'tfoot',
+ 'tbody',
+ 'tr'
+ )
+ );
+ }
+ $ret .= $this->element('th', 'Allowed children', $attr);
- $ret .= $this->element('td', '<em>'.ucfirst($def->type).'</em>: ' .
- $def->dtd_regex);
+ if ($def->type == 'chameleon') {
- } else {
- $ret .= $this->element('td',
- '<em>'.ucfirst($def->type).'</em>: ' .
- $this->escape($this->listifyTagLookup($elements)),0,0);
- }
+ $ret .= $this->element(
+ 'td',
+ '<em>Block</em>: ' .
+ $this->escape($this->listifyTagLookup($def->block->elements)),
+ null,
+ 0
+ );
+ $ret .= $this->end('tr');
+ $ret .= $this->start('tr');
+ $ret .= $this->element(
+ 'td',
+ '<em>Inline</em>: ' .
+ $this->escape($this->listifyTagLookup($def->inline->elements)),
+ null,
+ 0
+ );
+
+ } elseif ($def->type == 'custom') {
+
+ $ret .= $this->element(
+ 'td',
+ '<em>' . ucfirst($def->type) . '</em>: ' .
+ $def->dtd_regex
+ );
+
+ } else {
+ $ret .= $this->element(
+ 'td',
+ '<em>' . ucfirst($def->type) . '</em>: ' .
+ $this->escape($this->listifyTagLookup($elements)),
+ null,
+ 0
+ );
+ }
$ret .= $this->end('tr');
return $ret;
}
/**
* Listifies a tag lookup table.
- * @param $array Tag lookup array in form of array('tagname' => true)
+ * @param array $array Tag lookup array in form of array('tagname' => true)
+ * @return string
*/
- protected function listifyTagLookup($array) {
+ protected function listifyTagLookup($array)
+ {
ksort($array);
$list = array();
foreach ($array as $name => $discard) {
- if ($name !== '#PCDATA' && !isset($this->def->info[$name])) continue;
+ if ($name !== '#PCDATA' && !isset($this->def->info[$name])) {
+ continue;
+ }
$list[] = $name;
}
return $this->listify($list);
@@ -230,13 +273,15 @@ class HTMLPurifier_Printer_HTMLDefinition extends HTMLPurifier_Printer
/**
* Listifies a list of objects by retrieving class names and internal state
- * @param $array List of objects
+ * @param array $array List of objects
+ * @return string
* @todo Also add information about internal state
*/
- protected function listifyObjectList($array) {
+ protected function listifyObjectList($array)
+ {
ksort($array);
$list = array();
- foreach ($array as $discard => $obj) {
+ foreach ($array as $obj) {
$list[] = $this->getClass($obj, 'AttrTransform_');
}
return $this->listify($list);
@@ -244,13 +289,17 @@ class HTMLPurifier_Printer_HTMLDefinition extends HTMLPurifier_Printer
/**
* Listifies a hash of attributes to AttrDef classes
- * @param $array Array hash in form of array('attrname' => HTMLPurifier_AttrDef)
+ * @param array $array Array hash in form of array('attrname' => HTMLPurifier_AttrDef)
+ * @return string
*/
- protected function listifyAttr($array) {
+ protected function listifyAttr($array)
+ {
ksort($array);
$list = array();
foreach ($array as $name => $obj) {
- if ($obj === false) continue;
+ if ($obj === false) {
+ continue;
+ }
$list[] = "$name&nbsp;=&nbsp;<i>" . $this->getClass($obj, 'AttrDef_') . '</i>';
}
return $this->listify($list);
@@ -258,15 +307,18 @@ class HTMLPurifier_Printer_HTMLDefinition extends HTMLPurifier_Printer
/**
* Creates a heavy header row
+ * @param string $text
+ * @param int $num
+ * @return string
*/
- protected function heavyHeader($text, $num = 1) {
+ protected function heavyHeader($text, $num = 1)
+ {
$ret = '';
$ret .= $this->start('tr');
$ret .= $this->element('th', $text, array('colspan' => $num, 'class' => 'heavy'));
$ret .= $this->end('tr');
return $ret;
}
-
}
// vim: et sw=4 sts=4
diff --git a/library/HTMLPurifier/PropertyList.php b/library/HTMLPurifier/PropertyList.php
index 2b99fb7bc..189348fd9 100644
--- a/library/HTMLPurifier/PropertyList.php
+++ b/library/HTMLPurifier/PropertyList.php
@@ -6,61 +6,93 @@
class HTMLPurifier_PropertyList
{
/**
- * Internal data-structure for properties
+ * Internal data-structure for properties.
+ * @type array
*/
protected $data = array();
/**
- * Parent plist
+ * Parent plist.
+ * @type HTMLPurifier_PropertyList
*/
protected $parent;
+ /**
+ * Cache.
+ * @type array
+ */
protected $cache;
- public function __construct($parent = null) {
+ /**
+ * @param HTMLPurifier_PropertyList $parent Parent plist
+ */
+ public function __construct($parent = null)
+ {
$this->parent = $parent;
}
/**
* Recursively retrieves the value for a key
+ * @param string $name
+ * @throws HTMLPurifier_Exception
*/
- public function get($name) {
- if ($this->has($name)) return $this->data[$name];
+ public function get($name)
+ {
+ if ($this->has($name)) {
+ return $this->data[$name];
+ }
// possible performance bottleneck, convert to iterative if necessary
- if ($this->parent) return $this->parent->get($name);
+ if ($this->parent) {
+ return $this->parent->get($name);
+ }
throw new HTMLPurifier_Exception("Key '$name' not found");
}
/**
* Sets the value of a key, for this plist
+ * @param string $name
+ * @param mixed $value
*/
- public function set($name, $value) {
+ public function set($name, $value)
+ {
$this->data[$name] = $value;
}
/**
* Returns true if a given key exists
+ * @param string $name
+ * @return bool
*/
- public function has($name) {
+ public function has($name)
+ {
return array_key_exists($name, $this->data);
}
/**
* Resets a value to the value of it's parent, usually the default. If
* no value is specified, the entire plist is reset.
+ * @param string $name
*/
- public function reset($name = null) {
- if ($name == null) $this->data = array();
- else unset($this->data[$name]);
+ public function reset($name = null)
+ {
+ if ($name == null) {
+ $this->data = array();
+ } else {
+ unset($this->data[$name]);
+ }
}
/**
* Squashes this property list and all of its property lists into a single
* array, and returns the array. This value is cached by default.
- * @param $force If true, ignores the cache and regenerates the array.
+ * @param bool $force If true, ignores the cache and regenerates the array.
+ * @return array
*/
- public function squash($force = false) {
- if ($this->cache !== null && !$force) return $this->cache;
+ public function squash($force = false)
+ {
+ if ($this->cache !== null && !$force) {
+ return $this->cache;
+ }
if ($this->parent) {
return $this->cache = array_merge($this->parent->squash($force), $this->data);
} else {
@@ -70,15 +102,19 @@ class HTMLPurifier_PropertyList
/**
* Returns the parent plist.
+ * @return HTMLPurifier_PropertyList
*/
- public function getParent() {
+ public function getParent()
+ {
return $this->parent;
}
/**
* Sets the parent plist.
+ * @param HTMLPurifier_PropertyList $plist Parent plist
*/
- public function setParent($plist) {
+ public function setParent($plist)
+ {
$this->parent = $plist;
}
}
diff --git a/library/HTMLPurifier/PropertyListIterator.php b/library/HTMLPurifier/PropertyListIterator.php
index 8f250443e..15b330ea3 100644
--- a/library/HTMLPurifier/PropertyListIterator.php
+++ b/library/HTMLPurifier/PropertyListIterator.php
@@ -6,27 +6,37 @@
class HTMLPurifier_PropertyListIterator extends FilterIterator
{
+ /**
+ * @type int
+ */
protected $l;
+ /**
+ * @type string
+ */
protected $filter;
/**
- * @param $data Array of data to iterate over
- * @param $filter Optional prefix to only allow values of
+ * @param Iterator $iterator Array of data to iterate over
+ * @param string $filter Optional prefix to only allow values of
*/
- public function __construct(Iterator $iterator, $filter = null) {
+ public function __construct(Iterator $iterator, $filter = null)
+ {
parent::__construct($iterator);
$this->l = strlen($filter);
$this->filter = $filter;
}
- public function accept() {
+ /**
+ * @return bool
+ */
+ public function accept()
+ {
$key = $this->getInnerIterator()->key();
- if( strncmp($key, $this->filter, $this->l) !== 0 ) {
+ if (strncmp($key, $this->filter, $this->l) !== 0) {
return false;
}
return true;
}
-
}
// vim: et sw=4 sts=4
diff --git a/library/HTMLPurifier/Queue.php b/library/HTMLPurifier/Queue.php
new file mode 100644
index 000000000..f58db9042
--- /dev/null
+++ b/library/HTMLPurifier/Queue.php
@@ -0,0 +1,56 @@
+<?php
+
+/**
+ * A simple array-backed queue, based off of the classic Okasaki
+ * persistent amortized queue. The basic idea is to maintain two
+ * stacks: an input stack and an output stack. When the output
+ * stack runs out, reverse the input stack and use it as the output
+ * stack.
+ *
+ * We don't use the SPL implementation because it's only supported
+ * on PHP 5.3 and later.
+ *
+ * Exercise: Prove that push/pop on this queue take amortized O(1) time.
+ *
+ * Exercise: Extend this queue to be a deque, while preserving amortized
+ * O(1) time. Some care must be taken on rebalancing to avoid quadratic
+ * behaviour caused by repeatedly shuffling data from the input stack
+ * to the output stack and back.
+ */
+class HTMLPurifier_Queue {
+ private $input;
+ private $output;
+
+ public function __construct($input = array()) {
+ $this->input = $input;
+ $this->output = array();
+ }
+
+ /**
+ * Shifts an element off the front of the queue.
+ */
+ public function shift() {
+ if (empty($this->output)) {
+ $this->output = array_reverse($this->input);
+ $this->input = array();
+ }
+ if (empty($this->output)) {
+ return NULL;
+ }
+ return array_pop($this->output);
+ }
+
+ /**
+ * Pushes an element onto the front of the queue.
+ */
+ public function push($x) {
+ array_push($this->input, $x);
+ }
+
+ /**
+ * Checks if it's empty.
+ */
+ public function isEmpty() {
+ return empty($this->input) && empty($this->output);
+ }
+}
diff --git a/library/HTMLPurifier/Strategy.php b/library/HTMLPurifier/Strategy.php
index 246286521..e1ff3b72d 100644
--- a/library/HTMLPurifier/Strategy.php
+++ b/library/HTMLPurifier/Strategy.php
@@ -15,12 +15,12 @@ abstract class HTMLPurifier_Strategy
/**
* Executes the strategy on the tokens.
*
- * @param $tokens Array of HTMLPurifier_Token objects to be operated on.
- * @param $config Configuration options
- * @returns Processed array of token objects.
+ * @param HTMLPurifier_Token[] $tokens Array of HTMLPurifier_Token objects to be operated on.
+ * @param HTMLPurifier_Config $config
+ * @param HTMLPurifier_Context $context
+ * @return HTMLPurifier_Token[] Processed array of token objects.
*/
abstract public function execute($tokens, $config, $context);
-
}
// vim: et sw=4 sts=4
diff --git a/library/HTMLPurifier/Strategy/Composite.php b/library/HTMLPurifier/Strategy/Composite.php
index 816490b79..d7d35ce7d 100644
--- a/library/HTMLPurifier/Strategy/Composite.php
+++ b/library/HTMLPurifier/Strategy/Composite.php
@@ -8,18 +8,23 @@ abstract class HTMLPurifier_Strategy_Composite extends HTMLPurifier_Strategy
/**
* List of strategies to run tokens through.
+ * @type HTMLPurifier_Strategy[]
*/
protected $strategies = array();
- abstract public function __construct();
-
- public function execute($tokens, $config, $context) {
+ /**
+ * @param HTMLPurifier_Token[] $tokens
+ * @param HTMLPurifier_Config $config
+ * @param HTMLPurifier_Context $context
+ * @return HTMLPurifier_Token[]
+ */
+ public function execute($tokens, $config, $context)
+ {
foreach ($this->strategies as $strategy) {
$tokens = $strategy->execute($tokens, $config, $context);
}
return $tokens;
}
-
}
// vim: et sw=4 sts=4
diff --git a/library/HTMLPurifier/Strategy/Core.php b/library/HTMLPurifier/Strategy/Core.php
index d90e15860..4414c17d6 100644
--- a/library/HTMLPurifier/Strategy/Core.php
+++ b/library/HTMLPurifier/Strategy/Core.php
@@ -5,14 +5,13 @@
*/
class HTMLPurifier_Strategy_Core extends HTMLPurifier_Strategy_Composite
{
-
- public function __construct() {
+ public function __construct()
+ {
$this->strategies[] = new HTMLPurifier_Strategy_RemoveForeignElements();
$this->strategies[] = new HTMLPurifier_Strategy_MakeWellFormed();
$this->strategies[] = new HTMLPurifier_Strategy_FixNesting();
$this->strategies[] = new HTMLPurifier_Strategy_ValidateAttributes();
}
-
}
// vim: et sw=4 sts=4
diff --git a/library/HTMLPurifier/Strategy/FixNesting.php b/library/HTMLPurifier/Strategy/FixNesting.php
index f81802391..6fa673db9 100644
--- a/library/HTMLPurifier/Strategy/FixNesting.php
+++ b/library/HTMLPurifier/Strategy/FixNesting.php
@@ -10,12 +10,12 @@
* document type definitions, such as the chameleon nature of ins/del
* tags and global child exclusions.
*
- * The first major objective of this strategy is to iterate through all the
- * nodes (not tokens) of the list of tokens and determine whether or not
- * their children conform to the element's definition. If they do not, the
- * child definition may optionally supply an amended list of elements that
- * is valid or require that the entire node be deleted (and the previous
- * node rescanned).
+ * The first major objective of this strategy is to iterate through all
+ * the nodes and determine whether or not their children conform to the
+ * element's definition. If they do not, the child definition may
+ * optionally supply an amended list of elements that is valid or
+ * require that the entire node be deleted (and the previous node
+ * rescanned).
*
* The second objective is to ensure that explicitly excluded elements of
* an element do not appear in its children. Code that accomplishes this
@@ -25,24 +25,33 @@
* @note Whether or not unrecognized children are silently dropped or
* translated into text depends on the child definitions.
*
- * @todo Enable nodes to be bubbled out of the structure.
+ * @todo Enable nodes to be bubbled out of the structure. This is
+ * easier with our new algorithm.
*/
class HTMLPurifier_Strategy_FixNesting extends HTMLPurifier_Strategy
{
- public function execute($tokens, $config, $context) {
+ /**
+ * @param HTMLPurifier_Token[] $tokens
+ * @param HTMLPurifier_Config $config
+ * @param HTMLPurifier_Context $context
+ * @return array|HTMLPurifier_Token[]
+ */
+ public function execute($tokens, $config, $context)
+ {
+
//####################################################################//
// Pre-processing
+ // O(n) pass to convert to a tree, so that we can efficiently
+ // refer to substrings
+ $top_node = HTMLPurifier_Arborize::arborize($tokens, $config, $context);
+
// get a copy of the HTML definition
$definition = $config->getHTMLDefinition();
- // insert implicit "parent" node, will be removed at end.
- // DEFINITION CALL
- $parent_name = $definition->info_parent;
- array_unshift($tokens, new HTMLPurifier_Token_Start($parent_name));
- $tokens[] = new HTMLPurifier_Token_End($parent_name);
+ $excludes_enabled = !$config->get('Core.DisableExcludes');
// setup the context variable 'IsInline', for chameleon processing
// is 'false' when we are not inline, 'true' when it must always
@@ -57,272 +66,116 @@ class HTMLPurifier_Strategy_FixNesting extends HTMLPurifier_Strategy
//####################################################################//
// Loop initialization
- // stack that contains the indexes of all parents,
- // $stack[count($stack)-1] being the current parent
- $stack = array();
-
// stack that contains all elements that are excluded
// it is organized by parent elements, similar to $stack,
// but it is only populated when an element with exclusions is
// processed, i.e. there won't be empty exclusions.
- $exclude_stack = array();
+ $exclude_stack = array($definition->info_parent_def->excludes);
// variable that contains the start token while we are processing
// nodes. This enables error reporting to do its job
- $start_token = false;
- $context->register('CurrentToken', $start_token);
+ $node = $top_node;
+ // dummy token
+ list($token, $d) = $node->toTokenPair();
+ $context->register('CurrentNode', $node);
+ $context->register('CurrentToken', $token);
//####################################################################//
// Loop
- // iterate through all start nodes. Determining the start node
- // is complicated so it has been omitted from the loop construct
- for ($i = 0, $size = count($tokens) ; $i < $size; ) {
-
- //################################################################//
- // Gather information on children
-
- // child token accumulator
- $child_tokens = array();
-
- // scroll to the end of this node, report number, and collect
- // all children
- for ($j = $i, $depth = 0; ; $j++) {
- if ($tokens[$j] instanceof HTMLPurifier_Token_Start) {
- $depth++;
- // skip token assignment on first iteration, this is the
- // token we currently are on
- if ($depth == 1) continue;
- } elseif ($tokens[$j] instanceof HTMLPurifier_Token_End) {
- $depth--;
- // skip token assignment on last iteration, this is the
- // end token of the token we're currently on
- if ($depth == 0) break;
- }
- $child_tokens[] = $tokens[$j];
- }
-
- // $i is index of start token
- // $j is index of end token
-
- $start_token = $tokens[$i]; // to make token available via CurrentToken
-
- //################################################################//
- // Gather information on parent
-
- // calculate parent information
- if ($count = count($stack)) {
- $parent_index = $stack[$count-1];
- $parent_name = $tokens[$parent_index]->name;
- if ($parent_index == 0) {
- $parent_def = $definition->info_parent_def;
- } else {
- $parent_def = $definition->info[$parent_name];
- }
- } else {
- // processing as if the parent were the "root" node
- // unknown info, it won't be used anyway, in the future,
- // we may want to enforce one element only (this is
- // necessary for HTML Purifier to clean entire documents
- $parent_index = $parent_name = $parent_def = null;
- }
-
- // calculate context
- if ($is_inline === false) {
- // check if conditions make it inline
- if (!empty($parent_def) && $parent_def->descendants_are_inline) {
- $is_inline = $count - 1;
- }
- } else {
- // check if we're out of inline
- if ($count === $is_inline) {
- $is_inline = false;
- }
- }
-
- //################################################################//
- // Determine whether element is explicitly excluded SGML-style
-
- // determine whether or not element is excluded by checking all
- // parent exclusions. The array should not be very large, two
- // elements at most.
- $excluded = false;
- if (!empty($exclude_stack)) {
- foreach ($exclude_stack as $lookup) {
- if (isset($lookup[$tokens[$i]->name])) {
- $excluded = true;
- // no need to continue processing
- break;
- }
+ // We need to implement a post-order traversal iteratively, to
+ // avoid running into stack space limits. This is pretty tricky
+ // to reason about, so we just manually stack-ify the recursive
+ // variant:
+ //
+ // function f($node) {
+ // foreach ($node->children as $child) {
+ // f($child);
+ // }
+ // validate($node);
+ // }
+ //
+ // Thus, we will represent a stack frame as array($node,
+ // $is_inline, stack of children)
+ // e.g. array_reverse($node->children) - already processed
+ // children.
+
+ $parent_def = $definition->info_parent_def;
+ $stack = array(
+ array($top_node,
+ $parent_def->descendants_are_inline,
+ $parent_def->excludes, // exclusions
+ 0)
+ );
+
+ while (!empty($stack)) {
+ list($node, $is_inline, $excludes, $ix) = array_pop($stack);
+ // recursive call
+ $go = false;
+ $def = empty($stack) ? $definition->info_parent_def : $definition->info[$node->name];
+ while (isset($node->children[$ix])) {
+ $child = $node->children[$ix++];
+ if ($child instanceof HTMLPurifier_Node_Element) {
+ $go = true;
+ $stack[] = array($node, $is_inline, $excludes, $ix);
+ $stack[] = array($child,
+ // ToDo: I don't think it matters if it's def or
+ // child_def, but double check this...
+ $is_inline || $def->descendants_are_inline,
+ empty($def->excludes) ? $excludes
+ : array_merge($excludes, $def->excludes),
+ 0);
+ break;
}
- }
-
- //################################################################//
- // Perform child validation
-
- if ($excluded) {
- // there is an exclusion, remove the entire node
- $result = false;
- $excludes = array(); // not used, but good to initialize anyway
+ };
+ if ($go) continue;
+ list($token, $d) = $node->toTokenPair();
+ // base case
+ if ($excludes_enabled && isset($excludes[$node->name])) {
+ $node->dead = true;
+ if ($e) $e->send(E_ERROR, 'Strategy_FixNesting: Node excluded');
} else {
- // DEFINITION CALL
- if ($i === 0) {
- // special processing for the first node
- $def = $definition->info_parent_def;
- } else {
- $def = $definition->info[$tokens[$i]->name];
-
+ // XXX I suppose it would be slightly more efficient to
+ // avoid the allocation here and have children
+ // strategies handle it
+ $children = array();
+ foreach ($node->children as $child) {
+ if (!$child->dead) $children[] = $child;
}
-
- if (!empty($def->child)) {
- // have DTD child def validate children
- $result = $def->child->validateChildren(
- $child_tokens, $config, $context);
+ $result = $def->child->validateChildren($children, $config, $context);
+ if ($result === true) {
+ // nop
+ $node->children = $children;
+ } elseif ($result === false) {
+ $node->dead = true;
+ if ($e) $e->send(E_ERROR, 'Strategy_FixNesting: Node removed');
} else {
- // weird, no child definition, get rid of everything
- $result = false;
- }
-
- // determine whether or not this element has any exclusions
- $excludes = $def->excludes;
- }
-
- // $result is now a bool or array
-
- //################################################################//
- // Process result by interpreting $result
-
- if ($result === true || $child_tokens === $result) {
- // leave the node as is
-
- // register start token as a parental node start
- $stack[] = $i;
-
- // register exclusions if there are any
- if (!empty($excludes)) $exclude_stack[] = $excludes;
-
- // move cursor to next possible start node
- $i++;
-
- } elseif($result === false) {
- // remove entire node
-
- if ($e) {
- if ($excluded) {
- $e->send(E_ERROR, 'Strategy_FixNesting: Node excluded');
- } else {
- $e->send(E_ERROR, 'Strategy_FixNesting: Node removed');
- }
- }
-
- // calculate length of inner tokens and current tokens
- $length = $j - $i + 1;
-
- // perform removal
- array_splice($tokens, $i, $length);
-
- // update size
- $size -= $length;
-
- // there is no start token to register,
- // current node is now the next possible start node
- // unless it turns out that we need to do a double-check
-
- // this is a rought heuristic that covers 100% of HTML's
- // cases and 99% of all other cases. A child definition
- // that would be tricked by this would be something like:
- // ( | a b c) where it's all or nothing. Fortunately,
- // our current implementation claims that that case would
- // not allow empty, even if it did
- if (!$parent_def->child->allow_empty) {
- // we need to do a double-check
- $i = $parent_index;
- array_pop($stack);
- }
-
- // PROJECTED OPTIMIZATION: Process all children elements before
- // reprocessing parent node.
-
- } else {
- // replace node with $result
-
- // calculate length of inner tokens
- $length = $j - $i - 1;
-
- if ($e) {
- if (empty($result) && $length) {
- $e->send(E_ERROR, 'Strategy_FixNesting: Node contents removed');
- } else {
- $e->send(E_WARNING, 'Strategy_FixNesting: Node reorganized');
+ $node->children = $result;
+ if ($e) {
+ // XXX This will miss mutations of internal nodes. Perhaps defer to the child validators
+ if (empty($result) && !empty($children)) {
+ $e->send(E_ERROR, 'Strategy_FixNesting: Node contents removed');
+ } else if ($result != $children) {
+ $e->send(E_WARNING, 'Strategy_FixNesting: Node reorganized');
+ }
}
}
-
- // perform replacement
- array_splice($tokens, $i + 1, $length, $result);
-
- // update size
- $size -= $length;
- $size += count($result);
-
- // register start token as a parental node start
- $stack[] = $i;
-
- // register exclusions if there are any
- if (!empty($excludes)) $exclude_stack[] = $excludes;
-
- // move cursor to next possible start node
- $i++;
-
}
-
- //################################################################//
- // Scroll to next start node
-
- // We assume, at this point, that $i is the index of the token
- // that is the first possible new start point for a node.
-
- // Test if the token indeed is a start tag, if not, move forward
- // and test again.
- $size = count($tokens);
- while ($i < $size and !$tokens[$i] instanceof HTMLPurifier_Token_Start) {
- if ($tokens[$i] instanceof HTMLPurifier_Token_End) {
- // pop a token index off the stack if we ended a node
- array_pop($stack);
- // pop an exclusion lookup off exclusion stack if
- // we ended node and that node had exclusions
- if ($i == 0 || $i == $size - 1) {
- // use specialized var if it's the super-parent
- $s_excludes = $definition->info_parent_def->excludes;
- } else {
- $s_excludes = $definition->info[$tokens[$i]->name]->excludes;
- }
- if ($s_excludes) {
- array_pop($exclude_stack);
- }
- }
- $i++;
- }
-
}
//####################################################################//
// Post-processing
- // remove implicit parent tokens at the beginning and end
- array_shift($tokens);
- array_pop($tokens);
-
// remove context variables
$context->destroy('IsInline');
+ $context->destroy('CurrentNode');
$context->destroy('CurrentToken');
//####################################################################//
// Return
- return $tokens;
-
+ return HTMLPurifier_Arborize::flatten($node, $config, $context);
}
-
}
// vim: et sw=4 sts=4
diff --git a/library/HTMLPurifier/Strategy/MakeWellFormed.php b/library/HTMLPurifier/Strategy/MakeWellFormed.php
index c73658400..e389e0011 100644
--- a/library/HTMLPurifier/Strategy/MakeWellFormed.php
+++ b/library/HTMLPurifier/Strategy/MakeWellFormed.php
@@ -2,66 +2,97 @@
/**
* Takes tokens makes them well-formed (balance end tags, etc.)
+ *
+ * Specification of the armor attributes this strategy uses:
+ *
+ * - MakeWellFormed_TagClosedError: This armor field is used to
+ * suppress tag closed errors for certain tokens [TagClosedSuppress],
+ * in particular, if a tag was generated automatically by HTML
+ * Purifier, we may rely on our infrastructure to close it for us
+ * and shouldn't report an error to the user [TagClosedAuto].
*/
class HTMLPurifier_Strategy_MakeWellFormed extends HTMLPurifier_Strategy
{
/**
* Array stream of tokens being processed.
+ * @type HTMLPurifier_Token[]
*/
protected $tokens;
/**
- * Current index in $tokens.
+ * Current token.
+ * @type HTMLPurifier_Token
*/
- protected $t;
+ protected $token;
+
+ /**
+ * Zipper managing the true state.
+ * @type HTMLPurifier_Zipper
+ */
+ protected $zipper;
/**
* Current nesting of elements.
+ * @type array
*/
protected $stack;
/**
* Injectors active in this stream processing.
+ * @type HTMLPurifier_Injector[]
*/
protected $injectors;
/**
* Current instance of HTMLPurifier_Config.
+ * @type HTMLPurifier_Config
*/
protected $config;
/**
* Current instance of HTMLPurifier_Context.
+ * @type HTMLPurifier_Context
*/
protected $context;
- public function execute($tokens, $config, $context) {
-
+ /**
+ * @param HTMLPurifier_Token[] $tokens
+ * @param HTMLPurifier_Config $config
+ * @param HTMLPurifier_Context $context
+ * @return HTMLPurifier_Token[]
+ * @throws HTMLPurifier_Exception
+ */
+ public function execute($tokens, $config, $context)
+ {
$definition = $config->getHTMLDefinition();
// local variables
$generator = new HTMLPurifier_Generator($config, $context);
$escape_invalid_tags = $config->get('Core.EscapeInvalidTags');
+ // used for autoclose early abortion
+ $global_parent_allowed_elements = $definition->info_parent_def->child->getAllowedElements($config);
$e = $context->get('ErrorCollector', true);
- $t = false; // token index
$i = false; // injector index
- $token = false; // the current token
- $reprocess = false; // whether or not to reprocess the same token
+ list($zipper, $token) = HTMLPurifier_Zipper::fromArray($tokens);
+ if ($token === NULL) {
+ return array();
+ }
+ $reprocess = false; // whether or not to reprocess the same token
$stack = array();
// member variables
- $this->stack =& $stack;
- $this->t =& $t;
- $this->tokens =& $tokens;
- $this->config = $config;
+ $this->stack =& $stack;
+ $this->tokens =& $tokens;
+ $this->token =& $token;
+ $this->zipper =& $zipper;
+ $this->config = $config;
$this->context = $context;
// context variables
$context->register('CurrentNesting', $stack);
- $context->register('InputIndex', $t);
- $context->register('InputTokens', $tokens);
- $context->register('CurrentToken', $token);
+ $context->register('InputZipper', $zipper);
+ $context->register('CurrentToken', $token);
// -- begin INJECTOR --
@@ -73,9 +104,13 @@ class HTMLPurifier_Strategy_MakeWellFormed extends HTMLPurifier_Strategy
unset($injectors['Custom']); // special case
foreach ($injectors as $injector => $b) {
// XXX: Fix with a legitimate lookup table of enabled filters
- if (strpos($injector, '.') !== false) continue;
+ if (strpos($injector, '.') !== false) {
+ continue;
+ }
$injector = "HTMLPurifier_Injector_$injector";
- if (!$b) continue;
+ if (!$b) {
+ continue;
+ }
$this->injectors[] = new $injector;
}
foreach ($def_injectors as $injector) {
@@ -83,7 +118,9 @@ class HTMLPurifier_Strategy_MakeWellFormed extends HTMLPurifier_Strategy
$this->injectors[] = $injector;
}
foreach ($custom_injectors as $injector) {
- if (!$injector) continue;
+ if (!$injector) {
+ continue;
+ }
if (is_string($injector)) {
$injector = "HTMLPurifier_Injector_$injector";
$injector = new $injector;
@@ -95,14 +132,16 @@ class HTMLPurifier_Strategy_MakeWellFormed extends HTMLPurifier_Strategy
// variables for performance reasons
foreach ($this->injectors as $ix => $injector) {
$error = $injector->prepare($config, $context);
- if (!$error) continue;
+ if (!$error) {
+ continue;
+ }
array_splice($this->injectors, $ix, 1); // rm the injector
trigger_error("Cannot enable {$injector->name} injector because $error is not allowed", E_USER_WARNING);
}
// -- end INJECTOR --
- // a note on punting:
+ // a note on reprocessing:
// In order to reduce code duplication, whenever some code needs
// to make HTML changes in order to make things "correct", the
// new HTML gets sent through the purifier, regardless of its
@@ -111,70 +150,75 @@ class HTMLPurifier_Strategy_MakeWellFormed extends HTMLPurifier_Strategy
// punt ($reprocess = true; continue;) and it does that for us.
// isset is in loop because $tokens size changes during loop exec
- for (
- $t = 0;
- $t == 0 || isset($tokens[$t - 1]);
- // only increment if we don't need to reprocess
- $reprocess ? $reprocess = false : $t++
- ) {
+ for (;;
+ // only increment if we don't need to reprocess
+ $reprocess ? $reprocess = false : $token = $zipper->next($token)) {
// check for a rewind
- if (is_int($i) && $i >= 0) {
+ if (is_int($i)) {
// possibility: disable rewinding if the current token has a
// rewind set on it already. This would offer protection from
// infinite loop, but might hinder some advanced rewinding.
- $rewind_to = $this->injectors[$i]->getRewind();
- if (is_int($rewind_to) && $rewind_to < $t) {
- if ($rewind_to < 0) $rewind_to = 0;
- while ($t > $rewind_to) {
- $t--;
- $prev = $tokens[$t];
+ $rewind_offset = $this->injectors[$i]->getRewindOffset();
+ if (is_int($rewind_offset)) {
+ for ($j = 0; $j < $rewind_offset; $j++) {
+ if (empty($zipper->front)) break;
+ $token = $zipper->prev($token);
// indicate that other injectors should not process this token,
// but we need to reprocess it
- unset($prev->skip[$i]);
- $prev->rewind = $i;
- if ($prev instanceof HTMLPurifier_Token_Start) array_pop($this->stack);
- elseif ($prev instanceof HTMLPurifier_Token_End) $this->stack[] = $prev->start;
+ unset($token->skip[$i]);
+ $token->rewind = $i;
+ if ($token instanceof HTMLPurifier_Token_Start) {
+ array_pop($this->stack);
+ } elseif ($token instanceof HTMLPurifier_Token_End) {
+ $this->stack[] = $token->start;
+ }
}
}
$i = false;
}
// handle case of document end
- if (!isset($tokens[$t])) {
+ if ($token === NULL) {
// kill processing if stack is empty
- if (empty($this->stack)) break;
+ if (empty($this->stack)) {
+ break;
+ }
// peek
$top_nesting = array_pop($this->stack);
$this->stack[] = $top_nesting;
- // send error
+ // send error [TagClosedSuppress]
if ($e && !isset($top_nesting->armor['MakeWellFormed_TagClosedError'])) {
$e->send(E_NOTICE, 'Strategy_MakeWellFormed: Tag closed by document end', $top_nesting);
}
// append, don't splice, since this is the end
- $tokens[] = new HTMLPurifier_Token_End($top_nesting->name);
+ $token = new HTMLPurifier_Token_End($top_nesting->name);
// punt!
$reprocess = true;
continue;
}
- $token = $tokens[$t];
-
- //echo '<br>'; printTokens($tokens, $t); printTokens($this->stack);
+ //echo '<br>'; printZipper($zipper, $token);//printTokens($this->stack);
//flush();
// quick-check: if it's not a tag, no need to process
if (empty($token->is_tag)) {
if ($token instanceof HTMLPurifier_Token_Text) {
foreach ($this->injectors as $i => $injector) {
- if (isset($token->skip[$i])) continue;
- if ($token->rewind !== null && $token->rewind !== $i) continue;
- $injector->handleText($token);
- $this->processToken($token, $i);
+ if (isset($token->skip[$i])) {
+ continue;
+ }
+ if ($token->rewind !== null && $token->rewind !== $i) {
+ continue;
+ }
+ // XXX fuckup
+ $r = $token;
+ $injector->handleText($r);
+ $token = $this->processToken($r, $i);
$reprocess = true;
break;
}
@@ -193,12 +237,22 @@ class HTMLPurifier_Strategy_MakeWellFormed extends HTMLPurifier_Strategy
$ok = false;
if ($type === 'empty' && $token instanceof HTMLPurifier_Token_Start) {
// claims to be a start tag but is empty
- $token = new HTMLPurifier_Token_Empty($token->name, $token->attr);
+ $token = new HTMLPurifier_Token_Empty(
+ $token->name,
+ $token->attr,
+ $token->line,
+ $token->col,
+ $token->armor
+ );
$ok = true;
} elseif ($type && $type !== 'empty' && $token instanceof HTMLPurifier_Token_Empty) {
// claims to be empty but really is a start tag
- $this->swap(new HTMLPurifier_Token_End($token->name));
- $this->insertBefore(new HTMLPurifier_Token_Start($token->name, $token->attr));
+ // NB: this assignment is required
+ $old_token = $token;
+ $token = new HTMLPurifier_Token_End($token->name);
+ $token = $this->insertBefore(
+ new HTMLPurifier_Token_Start($old_token->name, $old_token->attr, $old_token->line, $old_token->col, $old_token->armor)
+ );
// punt (since we had to modify the input stream in a non-trivial way)
$reprocess = true;
continue;
@@ -211,55 +265,96 @@ class HTMLPurifier_Strategy_MakeWellFormed extends HTMLPurifier_Strategy
// ...unless they also have to close their parent
if (!empty($this->stack)) {
+ // Performance note: you might think that it's rather
+ // inefficient, recalculating the autoclose information
+ // for every tag that a token closes (since when we
+ // do an autoclose, we push a new token into the
+ // stream and then /process/ that, before
+ // re-processing this token.) But this is
+ // necessary, because an injector can make an
+ // arbitrary transformations to the autoclosing
+ // tokens we introduce, so things may have changed
+ // in the meantime. Also, doing the inefficient thing is
+ // "easy" to reason about (for certain perverse definitions
+ // of "easy")
+
$parent = array_pop($this->stack);
$this->stack[] = $parent;
+ $parent_def = null;
+ $parent_elements = null;
+ $autoclose = false;
if (isset($definition->info[$parent->name])) {
- $elements = $definition->info[$parent->name]->child->getAllowedElements($config);
- $autoclose = !isset($elements[$token->name]);
- } else {
- $autoclose = false;
+ $parent_def = $definition->info[$parent->name];
+ $parent_elements = $parent_def->child->getAllowedElements($config);
+ $autoclose = !isset($parent_elements[$token->name]);
}
if ($autoclose && $definition->info[$token->name]->wrap) {
- // Check if an element can be wrapped by another
- // element to make it valid in a context (for
+ // Check if an element can be wrapped by another
+ // element to make it valid in a context (for
// example, <ul><ul> needs a <li> in between)
$wrapname = $definition->info[$token->name]->wrap;
$wrapdef = $definition->info[$wrapname];
$elements = $wrapdef->child->getAllowedElements($config);
- $parent_elements = $definition->info[$parent->name]->child->getAllowedElements($config);
if (isset($elements[$token->name]) && isset($parent_elements[$wrapname])) {
$newtoken = new HTMLPurifier_Token_Start($wrapname);
- $this->insertBefore($newtoken);
+ $token = $this->insertBefore($newtoken);
$reprocess = true;
continue;
}
}
$carryover = false;
- if ($autoclose && $definition->info[$parent->name]->formatting) {
+ if ($autoclose && $parent_def->formatting) {
$carryover = true;
}
if ($autoclose) {
- // errors need to be updated
- $new_token = new HTMLPurifier_Token_End($parent->name);
- $new_token->start = $parent;
- if ($carryover) {
- $element = clone $parent;
- $element->armor['MakeWellFormed_TagClosedError'] = true;
- $element->carryover = true;
- $this->processToken(array($new_token, $token, $element));
- } else {
- $this->insertBefore($new_token);
+ // check if this autoclose is doomed to fail
+ // (this rechecks $parent, which his harmless)
+ $autoclose_ok = isset($global_parent_allowed_elements[$token->name]);
+ if (!$autoclose_ok) {
+ foreach ($this->stack as $ancestor) {
+ $elements = $definition->info[$ancestor->name]->child->getAllowedElements($config);
+ if (isset($elements[$token->name])) {
+ $autoclose_ok = true;
+ break;
+ }
+ if ($definition->info[$token->name]->wrap) {
+ $wrapname = $definition->info[$token->name]->wrap;
+ $wrapdef = $definition->info[$wrapname];
+ $wrap_elements = $wrapdef->child->getAllowedElements($config);
+ if (isset($wrap_elements[$token->name]) && isset($elements[$wrapname])) {
+ $autoclose_ok = true;
+ break;
+ }
+ }
+ }
}
- if ($e && !isset($parent->armor['MakeWellFormed_TagClosedError'])) {
- if (!$carryover) {
- $e->send(E_NOTICE, 'Strategy_MakeWellFormed: Tag auto closed', $parent);
+ if ($autoclose_ok) {
+ // errors need to be updated
+ $new_token = new HTMLPurifier_Token_End($parent->name);
+ $new_token->start = $parent;
+ // [TagClosedSuppress]
+ if ($e && !isset($parent->armor['MakeWellFormed_TagClosedError'])) {
+ if (!$carryover) {
+ $e->send(E_NOTICE, 'Strategy_MakeWellFormed: Tag auto closed', $parent);
+ } else {
+ $e->send(E_NOTICE, 'Strategy_MakeWellFormed: Tag carryover', $parent);
+ }
+ }
+ if ($carryover) {
+ $element = clone $parent;
+ // [TagClosedAuto]
+ $element->armor['MakeWellFormed_TagClosedError'] = true;
+ $element->carryover = true;
+ $token = $this->processToken(array($new_token, $token, $element));
} else {
- $e->send(E_NOTICE, 'Strategy_MakeWellFormed: Tag carryover', $parent);
+ $token = $this->insertBefore($new_token);
}
+ } else {
+ $token = $this->remove();
}
$reprocess = true;
continue;
@@ -271,20 +366,26 @@ class HTMLPurifier_Strategy_MakeWellFormed extends HTMLPurifier_Strategy
if ($ok) {
foreach ($this->injectors as $i => $injector) {
- if (isset($token->skip[$i])) continue;
- if ($token->rewind !== null && $token->rewind !== $i) continue;
- $injector->handleElement($token);
- $this->processToken($token, $i);
+ if (isset($token->skip[$i])) {
+ continue;
+ }
+ if ($token->rewind !== null && $token->rewind !== $i) {
+ continue;
+ }
+ $r = $token;
+ $injector->handleElement($r);
+ $token = $this->processToken($r, $i);
$reprocess = true;
break;
}
if (!$reprocess) {
// ah, nothing interesting happened; do normal processing
- $this->swap($token);
if ($token instanceof HTMLPurifier_Token_Start) {
$this->stack[] = $token;
} elseif ($token instanceof HTMLPurifier_Token_End) {
- throw new HTMLPurifier_Exception('Improper handling of end tag in start code; possible error in MakeWellFormed');
+ throw new HTMLPurifier_Exception(
+ 'Improper handling of end tag in start code; possible error in MakeWellFormed'
+ );
}
}
continue;
@@ -298,13 +399,15 @@ class HTMLPurifier_Strategy_MakeWellFormed extends HTMLPurifier_Strategy
// make sure that we have something open
if (empty($this->stack)) {
if ($escape_invalid_tags) {
- if ($e) $e->send(E_WARNING, 'Strategy_MakeWellFormed: Unnecessary end tag to text');
- $this->swap(new HTMLPurifier_Token_Text(
- $generator->generateFromToken($token)
- ));
+ if ($e) {
+ $e->send(E_WARNING, 'Strategy_MakeWellFormed: Unnecessary end tag to text');
+ }
+ $token = new HTMLPurifier_Token_Text($generator->generateFromToken($token));
} else {
- $this->remove();
- if ($e) $e->send(E_WARNING, 'Strategy_MakeWellFormed: Unnecessary end tag removed');
+ if ($e) {
+ $e->send(E_WARNING, 'Strategy_MakeWellFormed: Unnecessary end tag removed');
+ }
+ $token = $this->remove();
}
$reprocess = true;
continue;
@@ -318,10 +421,15 @@ class HTMLPurifier_Strategy_MakeWellFormed extends HTMLPurifier_Strategy
if ($current_parent->name == $token->name) {
$token->start = $current_parent;
foreach ($this->injectors as $i => $injector) {
- if (isset($token->skip[$i])) continue;
- if ($token->rewind !== null && $token->rewind !== $i) continue;
- $injector->handleEnd($token);
- $this->processToken($token, $i);
+ if (isset($token->skip[$i])) {
+ continue;
+ }
+ if ($token->rewind !== null && $token->rewind !== $i) {
+ continue;
+ }
+ $r = $token;
+ $injector->handleEnd($r);
+ $token = $this->processToken($r, $i);
$this->stack[] = $current_parent;
$reprocess = true;
break;
@@ -349,13 +457,15 @@ class HTMLPurifier_Strategy_MakeWellFormed extends HTMLPurifier_Strategy
// we didn't find the tag, so remove
if ($skipped_tags === false) {
if ($escape_invalid_tags) {
- $this->swap(new HTMLPurifier_Token_Text(
- $generator->generateFromToken($token)
- ));
- if ($e) $e->send(E_WARNING, 'Strategy_MakeWellFormed: Stray end tag to text');
+ if ($e) {
+ $e->send(E_WARNING, 'Strategy_MakeWellFormed: Stray end tag to text');
+ }
+ $token = new HTMLPurifier_Token_Text($generator->generateFromToken($token));
} else {
- $this->remove();
- if ($e) $e->send(E_WARNING, 'Strategy_MakeWellFormed: Stray end tag removed');
+ if ($e) {
+ $e->send(E_WARNING, 'Strategy_MakeWellFormed: Stray end tag removed');
+ }
+ $token = $this->remove();
}
$reprocess = true;
continue;
@@ -366,7 +476,7 @@ class HTMLPurifier_Strategy_MakeWellFormed extends HTMLPurifier_Strategy
if ($e) {
for ($j = $c - 1; $j > 0; $j--) {
// notice we exclude $j == 0, i.e. the current ending tag, from
- // the errors...
+ // the errors... [TagClosedSuppress]
if (!isset($skipped_tags[$j]->armor['MakeWellFormed_TagClosedError'])) {
$e->send(E_NOTICE, 'Strategy_MakeWellFormed: Tag closed by element end', $skipped_tags[$j]);
}
@@ -381,24 +491,24 @@ class HTMLPurifier_Strategy_MakeWellFormed extends HTMLPurifier_Strategy
$new_token->start = $skipped_tags[$j];
array_unshift($replace, $new_token);
if (isset($definition->info[$new_token->name]) && $definition->info[$new_token->name]->formatting) {
+ // [TagClosedAuto]
$element = clone $skipped_tags[$j];
$element->carryover = true;
$element->armor['MakeWellFormed_TagClosedError'] = true;
$replace[] = $element;
}
}
- $this->processToken($replace);
+ $token = $this->processToken($replace);
$reprocess = true;
continue;
}
- $context->destroy('CurrentNesting');
- $context->destroy('InputTokens');
- $context->destroy('InputIndex');
$context->destroy('CurrentToken');
+ $context->destroy('CurrentNesting');
+ $context->destroy('InputZipper');
- unset($this->injectors, $this->stack, $this->tokens, $this->t);
- return $tokens;
+ unset($this->injectors, $this->stack, $this->tokens);
+ return $zipper->toArray($token);
}
/**
@@ -417,25 +527,38 @@ class HTMLPurifier_Strategy_MakeWellFormed extends HTMLPurifier_Strategy
* If $token is an integer, that number of tokens (with the first token
* being the current one) will be deleted.
*
- * @param $token Token substitution value
- * @param $injector Injector that performed the substitution; default is if
+ * @param HTMLPurifier_Token|array|int|bool $token Token substitution value
+ * @param HTMLPurifier_Injector|int $injector Injector that performed the substitution; default is if
* this is not an injector related operation.
+ * @throws HTMLPurifier_Exception
*/
- protected function processToken($token, $injector = -1) {
-
+ protected function processToken($token, $injector = -1)
+ {
// normalize forms of token
- if (is_object($token)) $token = array(1, $token);
- if (is_int($token)) $token = array($token);
- if ($token === false) $token = array(1);
- if (!is_array($token)) throw new HTMLPurifier_Exception('Invalid token type from injector');
- if (!is_int($token[0])) array_unshift($token, 1);
- if ($token[0] === 0) throw new HTMLPurifier_Exception('Deleting zero tokens is not valid');
+ if (is_object($token)) {
+ $token = array(1, $token);
+ }
+ if (is_int($token)) {
+ $token = array($token);
+ }
+ if ($token === false) {
+ $token = array(1);
+ }
+ if (!is_array($token)) {
+ throw new HTMLPurifier_Exception('Invalid token type from injector');
+ }
+ if (!is_int($token[0])) {
+ array_unshift($token, 1);
+ }
+ if ($token[0] === 0) {
+ throw new HTMLPurifier_Exception('Deleting zero tokens is not valid');
+ }
// $token is now an array with the following form:
// array(number nodes to delete, new node 1, new node 2, ...)
$delete = array_shift($token);
- $old = array_splice($this->tokens, $this->t, $delete, $token);
+ list($old, $r) = $this->zipper->splice($this->token, $delete, $token);
if ($injector > -1) {
// determine appropriate skips
@@ -446,30 +569,32 @@ class HTMLPurifier_Strategy_MakeWellFormed extends HTMLPurifier_Strategy
}
}
- }
+ return $r;
- /**
- * Inserts a token before the current token. Cursor now points to this token
- */
- private function insertBefore($token) {
- array_splice($this->tokens, $this->t, 0, array($token));
}
/**
- * Removes current token. Cursor now points to new token occupying previously
- * occupied space.
+ * Inserts a token before the current token. Cursor now points to
+ * this token. You must reprocess after this.
+ * @param HTMLPurifier_Token $token
*/
- private function remove() {
- array_splice($this->tokens, $this->t, 1);
+ private function insertBefore($token)
+ {
+ // NB not $this->zipper->insertBefore(), due to positioning
+ // differences
+ $splice = $this->zipper->splice($this->token, 0, array($token));
+
+ return $splice[1];
}
/**
- * Swap current token with new token. Cursor points to new token (no change).
+ * Removes current token. Cursor now points to new token occupying previously
+ * occupied space. You must reprocess after this.
*/
- private function swap($token) {
- $this->tokens[$this->t] = $token;
+ private function remove()
+ {
+ return $this->zipper->delete();
}
-
}
// vim: et sw=4 sts=4
diff --git a/library/HTMLPurifier/Strategy/RemoveForeignElements.php b/library/HTMLPurifier/Strategy/RemoveForeignElements.php
index cf3a33e40..1a8149ecc 100644
--- a/library/HTMLPurifier/Strategy/RemoveForeignElements.php
+++ b/library/HTMLPurifier/Strategy/RemoveForeignElements.php
@@ -11,19 +11,29 @@
class HTMLPurifier_Strategy_RemoveForeignElements extends HTMLPurifier_Strategy
{
- public function execute($tokens, $config, $context) {
+ /**
+ * @param HTMLPurifier_Token[] $tokens
+ * @param HTMLPurifier_Config $config
+ * @param HTMLPurifier_Context $context
+ * @return array|HTMLPurifier_Token[]
+ */
+ public function execute($tokens, $config, $context)
+ {
$definition = $config->getHTMLDefinition();
$generator = new HTMLPurifier_Generator($config, $context);
$result = array();
$escape_invalid_tags = $config->get('Core.EscapeInvalidTags');
- $remove_invalid_img = $config->get('Core.RemoveInvalidImg');
+ $remove_invalid_img = $config->get('Core.RemoveInvalidImg');
// currently only used to determine if comments should be kept
$trusted = $config->get('HTML.Trusted');
+ $comment_lookup = $config->get('HTML.AllowedComments');
+ $comment_regexp = $config->get('HTML.AllowedCommentsRegexp');
+ $check_comments = $comment_lookup !== array() || $comment_regexp !== null;
$remove_script_contents = $config->get('Core.RemoveScriptContents');
- $hidden_elements = $config->get('Core.HiddenElements');
+ $hidden_elements = $config->get('Core.HiddenElements');
// remove script contents compatibility
if ($remove_script_contents === true) {
@@ -48,34 +58,31 @@ class HTMLPurifier_Strategy_RemoveForeignElements extends HTMLPurifier_Strategy
$e =& $context->get('ErrorCollector');
}
- foreach($tokens as $token) {
+ foreach ($tokens as $token) {
if ($remove_until) {
if (empty($token->is_tag) || $token->name !== $remove_until) {
continue;
}
}
- if (!empty( $token->is_tag )) {
+ if (!empty($token->is_tag)) {
// DEFINITION CALL
// before any processing, try to transform the element
- if (
- isset($definition->info_tag_transform[$token->name])
- ) {
+ if (isset($definition->info_tag_transform[$token->name])) {
$original_name = $token->name;
// there is a transformation for this tag
// DEFINITION CALL
$token = $definition->
- info_tag_transform[$token->name]->
- transform($token, $config, $context);
- if ($e) $e->send(E_NOTICE, 'Strategy_RemoveForeignElements: Tag transform', $original_name);
+ info_tag_transform[$token->name]->transform($token, $config, $context);
+ if ($e) {
+ $e->send(E_NOTICE, 'Strategy_RemoveForeignElements: Tag transform', $original_name);
+ }
}
if (isset($definition->info[$token->name])) {
-
// mostly everything's good, but
// we need to make sure required attributes are in order
- if (
- ($token instanceof HTMLPurifier_Token_Start || $token instanceof HTMLPurifier_Token_Empty) &&
+ if (($token instanceof HTMLPurifier_Token_Start || $token instanceof HTMLPurifier_Token_Empty) &&
$definition->info[$token->name]->required_attr &&
($token->name != 'img' || $remove_invalid_img) // ensure config option still works
) {
@@ -88,7 +95,13 @@ class HTMLPurifier_Strategy_RemoveForeignElements extends HTMLPurifier_Strategy
}
}
if (!$ok) {
- if ($e) $e->send(E_ERROR, 'Strategy_RemoveForeignElements: Missing required attribute', $name);
+ if ($e) {
+ $e->send(
+ E_ERROR,
+ 'Strategy_RemoveForeignElements: Missing required attribute',
+ $name
+ );
+ }
continue;
}
$token->armor['ValidateAttributes'] = true;
@@ -102,7 +115,9 @@ class HTMLPurifier_Strategy_RemoveForeignElements extends HTMLPurifier_Strategy
} elseif ($escape_invalid_tags) {
// invalid tag, generate HTML representation and insert in
- if ($e) $e->send(E_WARNING, 'Strategy_RemoveForeignElements: Foreign element to text');
+ if ($e) {
+ $e->send(E_WARNING, 'Strategy_RemoveForeignElements: Foreign element to text');
+ }
$token = new HTMLPurifier_Token_Text(
$generator->generateFromToken($token)
);
@@ -117,9 +132,13 @@ class HTMLPurifier_Strategy_RemoveForeignElements extends HTMLPurifier_Strategy
} else {
$remove_until = false;
}
- if ($e) $e->send(E_ERROR, 'Strategy_RemoveForeignElements: Foreign meta element removed');
+ if ($e) {
+ $e->send(E_ERROR, 'Strategy_RemoveForeignElements: Foreign meta element removed');
+ }
} else {
- if ($e) $e->send(E_ERROR, 'Strategy_RemoveForeignElements: Foreign element removed');
+ if ($e) {
+ $e->send(E_ERROR, 'Strategy_RemoveForeignElements: Foreign element removed');
+ }
}
continue;
}
@@ -128,26 +147,46 @@ class HTMLPurifier_Strategy_RemoveForeignElements extends HTMLPurifier_Strategy
if ($textify_comments !== false) {
$data = $token->data;
$token = new HTMLPurifier_Token_Text($data);
- } elseif ($trusted) {
- // keep, but perform comment cleaning
+ } elseif ($trusted || $check_comments) {
+ // always cleanup comments
+ $trailing_hyphen = false;
if ($e) {
// perform check whether or not there's a trailing hyphen
if (substr($token->data, -1) == '-') {
- $e->send(E_NOTICE, 'Strategy_RemoveForeignElements: Trailing hyphen in comment removed');
+ $trailing_hyphen = true;
}
}
$token->data = rtrim($token->data, '-');
$found_double_hyphen = false;
while (strpos($token->data, '--') !== false) {
- if ($e && !$found_double_hyphen) {
- $e->send(E_NOTICE, 'Strategy_RemoveForeignElements: Hyphens in comment collapsed');
- }
- $found_double_hyphen = true; // prevent double-erroring
+ $found_double_hyphen = true;
$token->data = str_replace('--', '-', $token->data);
}
+ if ($trusted || !empty($comment_lookup[trim($token->data)]) ||
+ ($comment_regexp !== null && preg_match($comment_regexp, trim($token->data)))) {
+ // OK good
+ if ($e) {
+ if ($trailing_hyphen) {
+ $e->send(
+ E_NOTICE,
+ 'Strategy_RemoveForeignElements: Trailing hyphen in comment removed'
+ );
+ }
+ if ($found_double_hyphen) {
+ $e->send(E_NOTICE, 'Strategy_RemoveForeignElements: Hyphens in comment collapsed');
+ }
+ }
+ } else {
+ if ($e) {
+ $e->send(E_NOTICE, 'Strategy_RemoveForeignElements: Comment removed');
+ }
+ continue;
+ }
} else {
// strip comments
- if ($e) $e->send(E_NOTICE, 'Strategy_RemoveForeignElements: Comment removed');
+ if ($e) {
+ $e->send(E_NOTICE, 'Strategy_RemoveForeignElements: Comment removed');
+ }
continue;
}
} elseif ($token instanceof HTMLPurifier_Token_Text) {
@@ -160,12 +199,9 @@ class HTMLPurifier_Strategy_RemoveForeignElements extends HTMLPurifier_Strategy
// we removed tokens until the end, throw error
$e->send(E_ERROR, 'Strategy_RemoveForeignElements: Token removed to end', $remove_until);
}
-
$context->destroy('CurrentToken');
-
return $result;
}
-
}
// vim: et sw=4 sts=4
diff --git a/library/HTMLPurifier/Strategy/ValidateAttributes.php b/library/HTMLPurifier/Strategy/ValidateAttributes.php
index c3328a9d4..fbb3d27c8 100644
--- a/library/HTMLPurifier/Strategy/ValidateAttributes.php
+++ b/library/HTMLPurifier/Strategy/ValidateAttributes.php
@@ -7,8 +7,14 @@
class HTMLPurifier_Strategy_ValidateAttributes extends HTMLPurifier_Strategy
{
- public function execute($tokens, $config, $context) {
-
+ /**
+ * @param HTMLPurifier_Token[] $tokens
+ * @param HTMLPurifier_Config $config
+ * @param HTMLPurifier_Context $context
+ * @return HTMLPurifier_Token[]
+ */
+ public function execute($tokens, $config, $context)
+ {
// setup validator
$validator = new HTMLPurifier_AttrValidator();
@@ -19,21 +25,21 @@ class HTMLPurifier_Strategy_ValidateAttributes extends HTMLPurifier_Strategy
// only process tokens that have attributes,
// namely start and empty tags
- if (!$token instanceof HTMLPurifier_Token_Start && !$token instanceof HTMLPurifier_Token_Empty) continue;
+ if (!$token instanceof HTMLPurifier_Token_Start && !$token instanceof HTMLPurifier_Token_Empty) {
+ continue;
+ }
// skip tokens that are armored
- if (!empty($token->armor['ValidateAttributes'])) continue;
+ if (!empty($token->armor['ValidateAttributes'])) {
+ continue;
+ }
// note that we have no facilities here for removing tokens
$validator->validateToken($token, $config, $context);
-
- $tokens[$key] = $token; // for PHP 4
}
$context->destroy('CurrentToken');
-
return $tokens;
}
-
}
// vim: et sw=4 sts=4
diff --git a/library/HTMLPurifier/StringHash.php b/library/HTMLPurifier/StringHash.php
index 62085c5c2..c07370197 100644
--- a/library/HTMLPurifier/StringHash.php
+++ b/library/HTMLPurifier/StringHash.php
@@ -10,28 +10,36 @@
*/
class HTMLPurifier_StringHash extends ArrayObject
{
+ /**
+ * @type array
+ */
protected $accessed = array();
/**
* Retrieves a value, and logs the access.
+ * @param mixed $index
+ * @return mixed
*/
- public function offsetGet($index) {
+ public function offsetGet($index)
+ {
$this->accessed[$index] = true;
return parent::offsetGet($index);
}
/**
* Returns a lookup array of all array indexes that have been accessed.
- * @return Array in form array($index => true).
+ * @return array in form array($index => true).
*/
- public function getAccessed() {
+ public function getAccessed()
+ {
return $this->accessed;
}
/**
* Resets the access array.
*/
- public function resetAccessed() {
+ public function resetAccessed()
+ {
$this->accessed = array();
}
}
diff --git a/library/HTMLPurifier/StringHashParser.php b/library/HTMLPurifier/StringHashParser.php
index f3e70c712..7c73f8083 100644
--- a/library/HTMLPurifier/StringHashParser.php
+++ b/library/HTMLPurifier/StringHashParser.php
@@ -28,15 +28,25 @@
class HTMLPurifier_StringHashParser
{
+ /**
+ * @type string
+ */
public $default = 'ID';
/**
* Parses a file that contains a single string-hash.
+ * @param string $file
+ * @return array
*/
- public function parseFile($file) {
- if (!file_exists($file)) return false;
+ public function parseFile($file)
+ {
+ if (!file_exists($file)) {
+ return false;
+ }
$fh = fopen($file, 'r');
- if (!$fh) return false;
+ if (!$fh) {
+ return false;
+ }
$ret = $this->parseHandle($fh);
fclose($fh);
return $ret;
@@ -44,12 +54,19 @@ class HTMLPurifier_StringHashParser
/**
* Parses a file that contains multiple string-hashes delimited by '----'
+ * @param string $file
+ * @return array
*/
- public function parseMultiFile($file) {
- if (!file_exists($file)) return false;
+ public function parseMultiFile($file)
+ {
+ if (!file_exists($file)) {
+ return false;
+ }
$ret = array();
$fh = fopen($file, 'r');
- if (!$fh) return false;
+ if (!$fh) {
+ return false;
+ }
while (!feof($fh)) {
$ret[] = $this->parseHandle($fh);
}
@@ -62,26 +79,36 @@ class HTMLPurifier_StringHashParser
* @note While it's possible to simulate in-memory parsing by using
* custom stream wrappers, if such a use-case arises we should
* factor out the file handle into its own class.
- * @param $fh File handle with pointer at start of valid string-hash
+ * @param resource $fh File handle with pointer at start of valid string-hash
* block.
+ * @return array
*/
- protected function parseHandle($fh) {
+ protected function parseHandle($fh)
+ {
$state = false;
$single = false;
$ret = array();
do {
$line = fgets($fh);
- if ($line === false) break;
+ if ($line === false) {
+ break;
+ }
$line = rtrim($line, "\n\r");
- if (!$state && $line === '') continue;
- if ($line === '----') break;
+ if (!$state && $line === '') {
+ continue;
+ }
+ if ($line === '----') {
+ break;
+ }
if (strncmp('--#', $line, 3) === 0) {
// Comment
continue;
} elseif (strncmp('--', $line, 2) === 0) {
// Multiline declaration
$state = trim($line, '- ');
- if (!isset($ret[$state])) $ret[$state] = '';
+ if (!isset($ret[$state])) {
+ $ret[$state] = '';
+ }
continue;
} elseif (!$state) {
$single = true;
@@ -104,7 +131,6 @@ class HTMLPurifier_StringHashParser
} while (!feof($fh));
return $ret;
}
-
}
// vim: et sw=4 sts=4
diff --git a/library/HTMLPurifier/TagTransform.php b/library/HTMLPurifier/TagTransform.php
index 210a44721..7b8d83343 100644
--- a/library/HTMLPurifier/TagTransform.php
+++ b/library/HTMLPurifier/TagTransform.php
@@ -8,14 +8,15 @@ abstract class HTMLPurifier_TagTransform
/**
* Tag name to transform the tag to.
+ * @type string
*/
public $transform_to;
/**
* Transforms the obsolete tag into the valid tag.
- * @param $tag Tag to be transformed.
- * @param $config Mandatory HTMLPurifier_Config object
- * @param $context Mandatory HTMLPurifier_Context object
+ * @param HTMLPurifier_Token_Tag $tag Tag to be transformed.
+ * @param HTMLPurifier_Config $config Mandatory HTMLPurifier_Config object
+ * @param HTMLPurifier_Context $context Mandatory HTMLPurifier_Context object
*/
abstract public function transform($tag, $config, $context);
@@ -23,14 +24,14 @@ abstract class HTMLPurifier_TagTransform
* Prepends CSS properties to the style attribute, creating the
* attribute if it doesn't exist.
* @warning Copied over from AttrTransform, be sure to keep in sync
- * @param $attr Attribute array to process (passed by reference)
- * @param $css CSS to prepend
+ * @param array $attr Attribute array to process (passed by reference)
+ * @param string $css CSS to prepend
*/
- protected function prependCSS(&$attr, $css) {
+ protected function prependCSS(&$attr, $css)
+ {
$attr['style'] = isset($attr['style']) ? $attr['style'] : '';
$attr['style'] = $css . $attr['style'];
}
-
}
// vim: et sw=4 sts=4
diff --git a/library/HTMLPurifier/TagTransform/Font.php b/library/HTMLPurifier/TagTransform/Font.php
index ed2463786..7853d90bc 100644
--- a/library/HTMLPurifier/TagTransform/Font.php
+++ b/library/HTMLPurifier/TagTransform/Font.php
@@ -17,9 +17,14 @@
*/
class HTMLPurifier_TagTransform_Font extends HTMLPurifier_TagTransform
{
-
+ /**
+ * @type string
+ */
public $transform_to = 'span';
+ /**
+ * @type array
+ */
protected $_size_lookup = array(
'0' => 'xx-small',
'1' => 'xx-small',
@@ -37,8 +42,14 @@ class HTMLPurifier_TagTransform_Font extends HTMLPurifier_TagTransform
'+4' => '300%'
);
- public function transform($tag, $config, $context) {
-
+ /**
+ * @param HTMLPurifier_Token_Tag $tag
+ * @param HTMLPurifier_Config $config
+ * @param HTMLPurifier_Context $context
+ * @return HTMLPurifier_Token_End|string
+ */
+ public function transform($tag, $config, $context)
+ {
if ($tag instanceof HTMLPurifier_Token_End) {
$new_tag = clone $tag;
$new_tag->name = $this->transform_to;
@@ -63,17 +74,25 @@ class HTMLPurifier_TagTransform_Font extends HTMLPurifier_TagTransform
// handle size transform
if (isset($attr['size'])) {
// normalize large numbers
- if ($attr['size']{0} == '+' || $attr['size']{0} == '-') {
- $size = (int) $attr['size'];
- if ($size < -2) $attr['size'] = '-2';
- if ($size > 4) $attr['size'] = '+4';
- } else {
- $size = (int) $attr['size'];
- if ($size > 7) $attr['size'] = '7';
+ if ($attr['size'] !== '') {
+ if ($attr['size']{0} == '+' || $attr['size']{0} == '-') {
+ $size = (int)$attr['size'];
+ if ($size < -2) {
+ $attr['size'] = '-2';
+ }
+ if ($size > 4) {
+ $attr['size'] = '+4';
+ }
+ } else {
+ $size = (int)$attr['size'];
+ if ($size > 7) {
+ $attr['size'] = '7';
+ }
+ }
}
if (isset($this->_size_lookup[$attr['size']])) {
$prepend_style .= 'font-size:' .
- $this->_size_lookup[$attr['size']] . ';';
+ $this->_size_lookup[$attr['size']] . ';';
}
unset($attr['size']);
}
@@ -89,7 +108,6 @@ class HTMLPurifier_TagTransform_Font extends HTMLPurifier_TagTransform
$new_tag->attr = $attr;
return $new_tag;
-
}
}
diff --git a/library/HTMLPurifier/TagTransform/Simple.php b/library/HTMLPurifier/TagTransform/Simple.php
index 0e36130f2..71bf10b91 100644
--- a/library/HTMLPurifier/TagTransform/Simple.php
+++ b/library/HTMLPurifier/TagTransform/Simple.php
@@ -7,19 +7,29 @@
*/
class HTMLPurifier_TagTransform_Simple extends HTMLPurifier_TagTransform
{
-
+ /**
+ * @type string
+ */
protected $style;
/**
- * @param $transform_to Tag name to transform to.
- * @param $style CSS style to add to the tag
+ * @param string $transform_to Tag name to transform to.
+ * @param string $style CSS style to add to the tag
*/
- public function __construct($transform_to, $style = null) {
+ public function __construct($transform_to, $style = null)
+ {
$this->transform_to = $transform_to;
$this->style = $style;
}
- public function transform($tag, $config, $context) {
+ /**
+ * @param HTMLPurifier_Token_Tag $tag
+ * @param HTMLPurifier_Config $config
+ * @param HTMLPurifier_Context $context
+ * @return string
+ */
+ public function transform($tag, $config, $context)
+ {
$new_tag = clone $tag;
$new_tag->name = $this->transform_to;
if (!is_null($this->style) &&
@@ -29,7 +39,6 @@ class HTMLPurifier_TagTransform_Simple extends HTMLPurifier_TagTransform
}
return $new_tag;
}
-
}
// vim: et sw=4 sts=4
diff --git a/library/HTMLPurifier/Token.php b/library/HTMLPurifier/Token.php
index 7900e6cb1..85b85e072 100644
--- a/library/HTMLPurifier/Token.php
+++ b/library/HTMLPurifier/Token.php
@@ -3,55 +3,98 @@
/**
* Abstract base token class that all others inherit from.
*/
-class HTMLPurifier_Token {
- public $line; /**< Line number node was on in source document. Null if unknown. */
- public $col; /**< Column of line node was on in source document. Null if unknown. */
+abstract class HTMLPurifier_Token
+{
+ /**
+ * Line number node was on in source document. Null if unknown.
+ * @type int
+ */
+ public $line;
+
+ /**
+ * Column of line node was on in source document. Null if unknown.
+ * @type int
+ */
+ public $col;
/**
* Lookup array of processing that this token is exempt from.
* Currently, valid values are "ValidateAttributes" and
* "MakeWellFormed_TagClosedError"
+ * @type array
*/
public $armor = array();
/**
* Used during MakeWellFormed.
+ * @type
*/
public $skip;
+
+ /**
+ * @type
+ */
public $rewind;
+
+ /**
+ * @type
+ */
public $carryover;
- public function __get($n) {
- if ($n === 'type') {
- trigger_error('Deprecated type property called; use instanceof', E_USER_NOTICE);
- switch (get_class($this)) {
- case 'HTMLPurifier_Token_Start': return 'start';
- case 'HTMLPurifier_Token_Empty': return 'empty';
- case 'HTMLPurifier_Token_End': return 'end';
- case 'HTMLPurifier_Token_Text': return 'text';
- case 'HTMLPurifier_Token_Comment': return 'comment';
- default: return null;
+ /**
+ * @param string $n
+ * @return null|string
+ */
+ public function __get($n)
+ {
+ if ($n === 'type') {
+ trigger_error('Deprecated type property called; use instanceof', E_USER_NOTICE);
+ switch (get_class($this)) {
+ case 'HTMLPurifier_Token_Start':
+ return 'start';
+ case 'HTMLPurifier_Token_Empty':
+ return 'empty';
+ case 'HTMLPurifier_Token_End':
+ return 'end';
+ case 'HTMLPurifier_Token_Text':
+ return 'text';
+ case 'HTMLPurifier_Token_Comment':
+ return 'comment';
+ default:
+ return null;
+ }
}
- }
}
/**
* Sets the position of the token in the source document.
+ * @param int $l
+ * @param int $c
*/
- public function position($l = null, $c = null) {
+ public function position($l = null, $c = null)
+ {
$this->line = $l;
- $this->col = $c;
+ $this->col = $c;
}
/**
* Convenience function for DirectLex settings line/col position.
+ * @param int $l
+ * @param int $c
*/
- public function rawPosition($l, $c) {
- if ($c === -1) $l++;
+ public function rawPosition($l, $c)
+ {
+ if ($c === -1) {
+ $l++;
+ }
$this->line = $l;
- $this->col = $c;
+ $this->col = $c;
}
+ /**
+ * Converts a token into its corresponding node.
+ */
+ abstract public function toNode();
}
// vim: et sw=4 sts=4
diff --git a/library/HTMLPurifier/Token/Comment.php b/library/HTMLPurifier/Token/Comment.php
index dc6bdcabb..23453c705 100644
--- a/library/HTMLPurifier/Token/Comment.php
+++ b/library/HTMLPurifier/Token/Comment.php
@@ -5,17 +5,33 @@
*/
class HTMLPurifier_Token_Comment extends HTMLPurifier_Token
{
- public $data; /**< Character data within comment. */
+ /**
+ * Character data within comment.
+ * @type string
+ */
+ public $data;
+
+ /**
+ * @type bool
+ */
public $is_whitespace = true;
+
/**
* Transparent constructor.
*
- * @param $data String comment data.
+ * @param string $data String comment data.
+ * @param int $line
+ * @param int $col
*/
- public function __construct($data, $line = null, $col = null) {
+ public function __construct($data, $line = null, $col = null)
+ {
$this->data = $data;
$this->line = $line;
- $this->col = $col;
+ $this->col = $col;
+ }
+
+ public function toNode() {
+ return new HTMLPurifier_Node_Comment($this->data, $this->line, $this->col);
}
}
diff --git a/library/HTMLPurifier/Token/Empty.php b/library/HTMLPurifier/Token/Empty.php
index 2a82b47ad..78a95f555 100644
--- a/library/HTMLPurifier/Token/Empty.php
+++ b/library/HTMLPurifier/Token/Empty.php
@@ -5,7 +5,11 @@
*/
class HTMLPurifier_Token_Empty extends HTMLPurifier_Token_Tag
{
-
+ public function toNode() {
+ $n = parent::toNode();
+ $n->empty = true;
+ return $n;
+ }
}
// vim: et sw=4 sts=4
diff --git a/library/HTMLPurifier/Token/End.php b/library/HTMLPurifier/Token/End.php
index 353e79daf..59b38fdc5 100644
--- a/library/HTMLPurifier/Token/End.php
+++ b/library/HTMLPurifier/Token/End.php
@@ -10,10 +10,15 @@
class HTMLPurifier_Token_End extends HTMLPurifier_Token_Tag
{
/**
- * Token that started this node. Added by MakeWellFormed. Please
- * do not edit this!
+ * Token that started this node.
+ * Added by MakeWellFormed. Please do not edit this!
+ * @type HTMLPurifier_Token
*/
public $start;
+
+ public function toNode() {
+ throw new Exception("HTMLPurifier_Token_End->toNode not supported!");
+ }
}
// vim: et sw=4 sts=4
diff --git a/library/HTMLPurifier/Token/Start.php b/library/HTMLPurifier/Token/Start.php
index e0e14fc62..019f317ad 100644
--- a/library/HTMLPurifier/Token/Start.php
+++ b/library/HTMLPurifier/Token/Start.php
@@ -5,7 +5,6 @@
*/
class HTMLPurifier_Token_Start extends HTMLPurifier_Token_Tag
{
-
}
// vim: et sw=4 sts=4
diff --git a/library/HTMLPurifier/Token/Tag.php b/library/HTMLPurifier/Token/Tag.php
index 798be028e..d643fa64e 100644
--- a/library/HTMLPurifier/Token/Tag.php
+++ b/library/HTMLPurifier/Token/Tag.php
@@ -3,13 +3,14 @@
/**
* Abstract class of a tag token (start, end or empty), and its behavior.
*/
-class HTMLPurifier_Token_Tag extends HTMLPurifier_Token
+abstract class HTMLPurifier_Token_Tag extends HTMLPurifier_Token
{
/**
* Static bool marker that indicates the class is a tag.
*
* This allows us to check objects with <tt>!empty($obj->is_tag)</tt>
* without having to use a function call <tt>is_a()</tt>.
+ * @type bool
*/
public $is_tag = true;
@@ -19,21 +20,27 @@ class HTMLPurifier_Token_Tag extends HTMLPurifier_Token
* @note Strictly speaking, XML tags are case sensitive, so we shouldn't
* be lower-casing them, but these tokens cater to HTML tags, which are
* insensitive.
+ * @type string
*/
public $name;
/**
* Associative array of the tag's attributes.
+ * @type array
*/
public $attr = array();
/**
* Non-overloaded constructor, which lower-cases passed tag name.
*
- * @param $name String name.
- * @param $attr Associative array of attributes.
+ * @param string $name String name.
+ * @param array $attr Associative array of attributes.
+ * @param int $line
+ * @param int $col
+ * @param array $armor
*/
- public function __construct($name, $attr = array(), $line = null, $col = null) {
+ public function __construct($name, $attr = array(), $line = null, $col = null, $armor = array())
+ {
$this->name = ctype_lower($name) ? $name : strtolower($name);
foreach ($attr as $key => $value) {
// normalization only necessary when key is not lowercase
@@ -49,7 +56,12 @@ class HTMLPurifier_Token_Tag extends HTMLPurifier_Token
}
$this->attr = $attr;
$this->line = $line;
- $this->col = $col;
+ $this->col = $col;
+ $this->armor = $armor;
+ }
+
+ public function toNode() {
+ return new HTMLPurifier_Node_Element($this->name, $this->attr, $this->line, $this->col, $this->armor);
}
}
diff --git a/library/HTMLPurifier/Token/Text.php b/library/HTMLPurifier/Token/Text.php
index 82efd823d..f26a1c211 100644
--- a/library/HTMLPurifier/Token/Text.php
+++ b/library/HTMLPurifier/Token/Text.php
@@ -12,22 +12,42 @@
class HTMLPurifier_Token_Text extends HTMLPurifier_Token
{
- public $name = '#PCDATA'; /**< PCDATA tag name compatible with DTD. */
- public $data; /**< Parsed character data of text. */
- public $is_whitespace; /**< Bool indicating if node is whitespace. */
+ /**
+ * @type string
+ */
+ public $name = '#PCDATA';
+ /**< PCDATA tag name compatible with DTD. */
+
+ /**
+ * @type string
+ */
+ public $data;
+ /**< Parsed character data of text. */
+
+ /**
+ * @type bool
+ */
+ public $is_whitespace;
+
+ /**< Bool indicating if node is whitespace. */
/**
* Constructor, accepts data and determines if it is whitespace.
- *
- * @param $data String parsed character data.
+ * @param string $data String parsed character data.
+ * @param int $line
+ * @param int $col
*/
- public function __construct($data, $line = null, $col = null) {
+ public function __construct($data, $line = null, $col = null)
+ {
$this->data = $data;
$this->is_whitespace = ctype_space($data);
$this->line = $line;
- $this->col = $col;
+ $this->col = $col;
}
+ public function toNode() {
+ return new HTMLPurifier_Node_Text($this->data, $this->is_whitespace, $this->line, $this->col);
+ }
}
// vim: et sw=4 sts=4
diff --git a/library/HTMLPurifier/TokenFactory.php b/library/HTMLPurifier/TokenFactory.php
index 7cf48fb41..dea2446b9 100644
--- a/library/HTMLPurifier/TokenFactory.php
+++ b/library/HTMLPurifier/TokenFactory.php
@@ -13,32 +13,53 @@
*/
class HTMLPurifier_TokenFactory
{
+ // p stands for prototype
/**
- * Prototypes that will be cloned.
- * @private
+ * @type HTMLPurifier_Token_Start
*/
- // p stands for prototype
- private $p_start, $p_end, $p_empty, $p_text, $p_comment;
+ private $p_start;
+
+ /**
+ * @type HTMLPurifier_Token_End
+ */
+ private $p_end;
+
+ /**
+ * @type HTMLPurifier_Token_Empty
+ */
+ private $p_empty;
+
+ /**
+ * @type HTMLPurifier_Token_Text
+ */
+ private $p_text;
+
+ /**
+ * @type HTMLPurifier_Token_Comment
+ */
+ private $p_comment;
/**
* Generates blank prototypes for cloning.
*/
- public function __construct() {
- $this->p_start = new HTMLPurifier_Token_Start('', array());
- $this->p_end = new HTMLPurifier_Token_End('');
- $this->p_empty = new HTMLPurifier_Token_Empty('', array());
- $this->p_text = new HTMLPurifier_Token_Text('');
- $this->p_comment= new HTMLPurifier_Token_Comment('');
+ public function __construct()
+ {
+ $this->p_start = new HTMLPurifier_Token_Start('', array());
+ $this->p_end = new HTMLPurifier_Token_End('');
+ $this->p_empty = new HTMLPurifier_Token_Empty('', array());
+ $this->p_text = new HTMLPurifier_Token_Text('');
+ $this->p_comment = new HTMLPurifier_Token_Comment('');
}
/**
* Creates a HTMLPurifier_Token_Start.
- * @param $name Tag name
- * @param $attr Associative array of attributes
- * @return Generated HTMLPurifier_Token_Start
+ * @param string $name Tag name
+ * @param array $attr Associative array of attributes
+ * @return HTMLPurifier_Token_Start Generated HTMLPurifier_Token_Start
*/
- public function createStart($name, $attr = array()) {
+ public function createStart($name, $attr = array())
+ {
$p = clone $this->p_start;
$p->__construct($name, $attr);
return $p;
@@ -46,10 +67,11 @@ class HTMLPurifier_TokenFactory
/**
* Creates a HTMLPurifier_Token_End.
- * @param $name Tag name
- * @return Generated HTMLPurifier_Token_End
+ * @param string $name Tag name
+ * @return HTMLPurifier_Token_End Generated HTMLPurifier_Token_End
*/
- public function createEnd($name) {
+ public function createEnd($name)
+ {
$p = clone $this->p_end;
$p->__construct($name);
return $p;
@@ -57,11 +79,12 @@ class HTMLPurifier_TokenFactory
/**
* Creates a HTMLPurifier_Token_Empty.
- * @param $name Tag name
- * @param $attr Associative array of attributes
- * @return Generated HTMLPurifier_Token_Empty
+ * @param string $name Tag name
+ * @param array $attr Associative array of attributes
+ * @return HTMLPurifier_Token_Empty Generated HTMLPurifier_Token_Empty
*/
- public function createEmpty($name, $attr = array()) {
+ public function createEmpty($name, $attr = array())
+ {
$p = clone $this->p_empty;
$p->__construct($name, $attr);
return $p;
@@ -69,10 +92,11 @@ class HTMLPurifier_TokenFactory
/**
* Creates a HTMLPurifier_Token_Text.
- * @param $data Data of text token
- * @return Generated HTMLPurifier_Token_Text
+ * @param string $data Data of text token
+ * @return HTMLPurifier_Token_Text Generated HTMLPurifier_Token_Text
*/
- public function createText($data) {
+ public function createText($data)
+ {
$p = clone $this->p_text;
$p->__construct($data);
return $p;
@@ -80,15 +104,15 @@ class HTMLPurifier_TokenFactory
/**
* Creates a HTMLPurifier_Token_Comment.
- * @param $data Data of comment token
- * @return Generated HTMLPurifier_Token_Comment
+ * @param string $data Data of comment token
+ * @return HTMLPurifier_Token_Comment Generated HTMLPurifier_Token_Comment
*/
- public function createComment($data) {
+ public function createComment($data)
+ {
$p = clone $this->p_comment;
$p->__construct($data);
return $p;
}
-
}
// vim: et sw=4 sts=4
diff --git a/library/HTMLPurifier/URI.php b/library/HTMLPurifier/URI.php
index 8b50d0d18..a5e7ae298 100644
--- a/library/HTMLPurifier/URI.php
+++ b/library/HTMLPurifier/URI.php
@@ -10,17 +10,57 @@
*/
class HTMLPurifier_URI
{
+ /**
+ * @type string
+ */
+ public $scheme;
- public $scheme, $userinfo, $host, $port, $path, $query, $fragment;
+ /**
+ * @type string
+ */
+ public $userinfo;
/**
+ * @type string
+ */
+ public $host;
+
+ /**
+ * @type int
+ */
+ public $port;
+
+ /**
+ * @type string
+ */
+ public $path;
+
+ /**
+ * @type string
+ */
+ public $query;
+
+ /**
+ * @type string
+ */
+ public $fragment;
+
+ /**
+ * @param string $scheme
+ * @param string $userinfo
+ * @param string $host
+ * @param int $port
+ * @param string $path
+ * @param string $query
+ * @param string $fragment
* @note Automatically normalizes scheme and port
*/
- public function __construct($scheme, $userinfo, $host, $port, $path, $query, $fragment) {
+ public function __construct($scheme, $userinfo, $host, $port, $path, $query, $fragment)
+ {
$this->scheme = is_null($scheme) || ctype_lower($scheme) ? $scheme : strtolower($scheme);
$this->userinfo = $userinfo;
$this->host = $host;
- $this->port = is_null($port) ? $port : (int) $port;
+ $this->port = is_null($port) ? $port : (int)$port;
$this->path = $path;
$this->query = $query;
$this->fragment = $fragment;
@@ -28,19 +68,22 @@ class HTMLPurifier_URI
/**
* Retrieves a scheme object corresponding to the URI's scheme/default
- * @param $config Instance of HTMLPurifier_Config
- * @param $context Instance of HTMLPurifier_Context
- * @return Scheme object appropriate for validating this URI
+ * @param HTMLPurifier_Config $config
+ * @param HTMLPurifier_Context $context
+ * @return HTMLPurifier_URIScheme Scheme object appropriate for validating this URI
*/
- public function getSchemeObj($config, $context) {
+ public function getSchemeObj($config, $context)
+ {
$registry = HTMLPurifier_URISchemeRegistry::instance();
if ($this->scheme !== null) {
$scheme_obj = $registry->getScheme($this->scheme, $config, $context);
- if (!$scheme_obj) return false; // invalid scheme, clean it out
+ if (!$scheme_obj) {
+ return false;
+ } // invalid scheme, clean it out
} else {
// no scheme: retrieve the default one
$def = $config->getDefinition('URI');
- $scheme_obj = $registry->getScheme($def->defaultScheme, $config, $context);
+ $scheme_obj = $def->getDefaultScheme($config, $context);
if (!$scheme_obj) {
// something funky happened to the default scheme object
trigger_error(
@@ -56,30 +99,39 @@ class HTMLPurifier_URI
/**
* Generic validation method applicable for all schemes. May modify
* this URI in order to get it into a compliant form.
- * @param $config Instance of HTMLPurifier_Config
- * @param $context Instance of HTMLPurifier_Context
- * @return True if validation/filtering succeeds, false if failure
+ * @param HTMLPurifier_Config $config
+ * @param HTMLPurifier_Context $context
+ * @return bool True if validation/filtering succeeds, false if failure
*/
- public function validate($config, $context) {
-
+ public function validate($config, $context)
+ {
// ABNF definitions from RFC 3986
$chars_sub_delims = '!$&\'()*+,;=';
$chars_gen_delims = ':/?#[]@';
$chars_pchar = $chars_sub_delims . ':@';
- // validate scheme (MUST BE FIRST!)
- if (!is_null($this->scheme) && is_null($this->host)) {
- $def = $config->getDefinition('URI');
- if ($def->defaultScheme === $this->scheme) {
- $this->scheme = null;
- }
- }
-
// validate host
if (!is_null($this->host)) {
$host_def = new HTMLPurifier_AttrDef_URI_Host();
$this->host = $host_def->validate($this->host, $config, $context);
- if ($this->host === false) $this->host = null;
+ if ($this->host === false) {
+ $this->host = null;
+ }
+ }
+
+ // validate scheme
+ // NOTE: It's not appropriate to check whether or not this
+ // scheme is in our registry, since a URIFilter may convert a
+ // URI that we don't allow into one we do. So instead, we just
+ // check if the scheme can be dropped because there is no host
+ // and it is our default scheme.
+ if (!is_null($this->scheme) && is_null($this->host) || $this->host === '') {
+ // support for relative paths is pretty abysmal when the
+ // scheme is present, so axe it when possible
+ $def = $config->getDefinition('URI');
+ if ($def->defaultScheme === $this->scheme) {
+ $this->scheme = null;
+ }
}
// validate username
@@ -90,38 +142,55 @@ class HTMLPurifier_URI
// validate port
if (!is_null($this->port)) {
- if ($this->port < 1 || $this->port > 65535) $this->port = null;
+ if ($this->port < 1 || $this->port > 65535) {
+ $this->port = null;
+ }
}
// validate path
- $path_parts = array();
$segments_encoder = new HTMLPurifier_PercentEncoder($chars_pchar . '/');
- if (!is_null($this->host)) {
+ if (!is_null($this->host)) { // this catches $this->host === ''
// path-abempty (hier and relative)
+ // http://www.example.com/my/path
+ // //www.example.com/my/path (looks odd, but works, and
+ // recognized by most browsers)
+ // (this set is valid or invalid on a scheme by scheme
+ // basis, so we'll deal with it later)
+ // file:///my/path
+ // ///my/path
$this->path = $segments_encoder->encode($this->path);
- } elseif ($this->path !== '' && $this->path[0] === '/') {
- // path-absolute (hier and relative)
- if (strlen($this->path) >= 2 && $this->path[1] === '/') {
- // This shouldn't ever happen!
- $this->path = '';
- } else {
+ } elseif ($this->path !== '') {
+ if ($this->path[0] === '/') {
+ // path-absolute (hier and relative)
+ // http:/my/path
+ // /my/path
+ if (strlen($this->path) >= 2 && $this->path[1] === '/') {
+ // This could happen if both the host gets stripped
+ // out
+ // http://my/path
+ // //my/path
+ $this->path = '';
+ } else {
+ $this->path = $segments_encoder->encode($this->path);
+ }
+ } elseif (!is_null($this->scheme)) {
+ // path-rootless (hier)
+ // http:my/path
+ // Short circuit evaluation means we don't need to check nz
$this->path = $segments_encoder->encode($this->path);
- }
- } elseif (!is_null($this->scheme) && $this->path !== '') {
- // path-rootless (hier)
- // Short circuit evaluation means we don't need to check nz
- $this->path = $segments_encoder->encode($this->path);
- } elseif (is_null($this->scheme) && $this->path !== '') {
- // path-noscheme (relative)
- // (once again, not checking nz)
- $segment_nc_encoder = new HTMLPurifier_PercentEncoder($chars_sub_delims . '@');
- $c = strpos($this->path, '/');
- if ($c !== false) {
- $this->path =
- $segment_nc_encoder->encode(substr($this->path, 0, $c)) .
- $segments_encoder->encode(substr($this->path, $c));
} else {
- $this->path = $segment_nc_encoder->encode($this->path);
+ // path-noscheme (relative)
+ // my/path
+ // (once again, not checking nz)
+ $segment_nc_encoder = new HTMLPurifier_PercentEncoder($chars_sub_delims . '@');
+ $c = strpos($this->path, '/');
+ if ($c !== false) {
+ $this->path =
+ $segment_nc_encoder->encode(substr($this->path, 0, $c)) .
+ $segments_encoder->encode(substr($this->path, $c));
+ } else {
+ $this->path = $segment_nc_encoder->encode($this->path);
+ }
}
} else {
// path-empty (hier and relative)
@@ -138,36 +207,108 @@ class HTMLPurifier_URI
if (!is_null($this->fragment)) {
$this->fragment = $qf_encoder->encode($this->fragment);
}
-
return true;
-
}
/**
* Convert URI back to string
- * @return String URI appropriate for output
+ * @return string URI appropriate for output
*/
- public function toString() {
+ public function toString()
+ {
// reconstruct authority
$authority = null;
+ // there is a rendering difference between a null authority
+ // (http:foo-bar) and an empty string authority
+ // (http:///foo-bar).
if (!is_null($this->host)) {
$authority = '';
- if(!is_null($this->userinfo)) $authority .= $this->userinfo . '@';
+ if (!is_null($this->userinfo)) {
+ $authority .= $this->userinfo . '@';
+ }
$authority .= $this->host;
- if(!is_null($this->port)) $authority .= ':' . $this->port;
+ if (!is_null($this->port)) {
+ $authority .= ':' . $this->port;
+ }
}
- // reconstruct the result
+ // Reconstruct the result
+ // One might wonder about parsing quirks from browsers after
+ // this reconstruction. Unfortunately, parsing behavior depends
+ // on what *scheme* was employed (file:///foo is handled *very*
+ // differently than http:///foo), so unfortunately we have to
+ // defer to the schemes to do the right thing.
$result = '';
- if (!is_null($this->scheme)) $result .= $this->scheme . ':';
- if (!is_null($authority)) $result .= '//' . $authority;
+ if (!is_null($this->scheme)) {
+ $result .= $this->scheme . ':';
+ }
+ if (!is_null($authority)) {
+ $result .= '//' . $authority;
+ }
$result .= $this->path;
- if (!is_null($this->query)) $result .= '?' . $this->query;
- if (!is_null($this->fragment)) $result .= '#' . $this->fragment;
+ if (!is_null($this->query)) {
+ $result .= '?' . $this->query;
+ }
+ if (!is_null($this->fragment)) {
+ $result .= '#' . $this->fragment;
+ }
return $result;
}
+ /**
+ * Returns true if this URL might be considered a 'local' URL given
+ * the current context. This is true when the host is null, or
+ * when it matches the host supplied to the configuration.
+ *
+ * Note that this does not do any scheme checking, so it is mostly
+ * only appropriate for metadata that doesn't care about protocol
+ * security. isBenign is probably what you actually want.
+ * @param HTMLPurifier_Config $config
+ * @param HTMLPurifier_Context $context
+ * @return bool
+ */
+ public function isLocal($config, $context)
+ {
+ if ($this->host === null) {
+ return true;
+ }
+ $uri_def = $config->getDefinition('URI');
+ if ($uri_def->host === $this->host) {
+ return true;
+ }
+ return false;
+ }
+
+ /**
+ * Returns true if this URL should be considered a 'benign' URL,
+ * that is:
+ *
+ * - It is a local URL (isLocal), and
+ * - It has a equal or better level of security
+ * @param HTMLPurifier_Config $config
+ * @param HTMLPurifier_Context $context
+ * @return bool
+ */
+ public function isBenign($config, $context)
+ {
+ if (!$this->isLocal($config, $context)) {
+ return false;
+ }
+
+ $scheme_obj = $this->getSchemeObj($config, $context);
+ if (!$scheme_obj) {
+ return false;
+ } // conservative approach
+
+ $current_scheme_obj = $config->getDefinition('URI')->getDefaultScheme($config, $context);
+ if ($current_scheme_obj->secure) {
+ if (!$scheme_obj->secure) {
+ return false;
+ }
+ }
+ return true;
+ }
}
// vim: et sw=4 sts=4
diff --git a/library/HTMLPurifier/URIDefinition.php b/library/HTMLPurifier/URIDefinition.php
index ea2b8fe24..e0bd8bcca 100644
--- a/library/HTMLPurifier/URIDefinition.php
+++ b/library/HTMLPurifier/URIDefinition.php
@@ -23,19 +23,24 @@ class HTMLPurifier_URIDefinition extends HTMLPurifier_Definition
*/
public $defaultScheme;
- public function __construct() {
+ public function __construct()
+ {
$this->registerFilter(new HTMLPurifier_URIFilter_DisableExternal());
$this->registerFilter(new HTMLPurifier_URIFilter_DisableExternalResources());
+ $this->registerFilter(new HTMLPurifier_URIFilter_DisableResources());
$this->registerFilter(new HTMLPurifier_URIFilter_HostBlacklist());
+ $this->registerFilter(new HTMLPurifier_URIFilter_SafeIframe());
$this->registerFilter(new HTMLPurifier_URIFilter_MakeAbsolute());
$this->registerFilter(new HTMLPurifier_URIFilter_Munge());
}
- public function registerFilter($filter) {
+ public function registerFilter($filter)
+ {
$this->registeredFilters[$filter->name] = $filter;
}
- public function addFilter($filter, $config) {
+ public function addFilter($filter, $config)
+ {
$r = $filter->prepare($config);
if ($r === false) return; // null is ok, for backwards compat
if ($filter->post) {
@@ -45,22 +50,29 @@ class HTMLPurifier_URIDefinition extends HTMLPurifier_Definition
}
}
- protected function doSetup($config) {
+ protected function doSetup($config)
+ {
$this->setupMemberVariables($config);
$this->setupFilters($config);
}
- protected function setupFilters($config) {
+ protected function setupFilters($config)
+ {
foreach ($this->registeredFilters as $name => $filter) {
- $conf = $config->get('URI.' . $name);
- if ($conf !== false && $conf !== null) {
+ if ($filter->always_load) {
$this->addFilter($filter, $config);
+ } else {
+ $conf = $config->get('URI.' . $name);
+ if ($conf !== false && $conf !== null) {
+ $this->addFilter($filter, $config);
+ }
}
}
unset($this->registeredFilters);
}
- protected function setupMemberVariables($config) {
+ protected function setupMemberVariables($config)
+ {
$this->host = $config->get('URI.Host');
$base_uri = $config->get('URI.Base');
if (!is_null($base_uri)) {
@@ -72,7 +84,13 @@ class HTMLPurifier_URIDefinition extends HTMLPurifier_Definition
if (is_null($this->defaultScheme)) $this->defaultScheme = $config->get('URI.DefaultScheme');
}
- public function filter(&$uri, $config, $context) {
+ public function getDefaultScheme($config, $context)
+ {
+ return HTMLPurifier_URISchemeRegistry::instance()->getScheme($this->defaultScheme, $config, $context);
+ }
+
+ public function filter(&$uri, $config, $context)
+ {
foreach ($this->filters as $name => $f) {
$result = $f->filter($uri, $config, $context);
if (!$result) return false;
@@ -80,7 +98,8 @@ class HTMLPurifier_URIDefinition extends HTMLPurifier_Definition
return true;
}
- public function postFilter(&$uri, $config, $context) {
+ public function postFilter(&$uri, $config, $context)
+ {
foreach ($this->postFilters as $name => $f) {
$result = $f->filter($uri, $config, $context);
if (!$result) return false;
diff --git a/library/HTMLPurifier/URIFilter.php b/library/HTMLPurifier/URIFilter.php
index c116f93df..09724e9f4 100644
--- a/library/HTMLPurifier/URIFilter.php
+++ b/library/HTMLPurifier/URIFilter.php
@@ -4,7 +4,21 @@
* Chainable filters for custom URI processing.
*
* These filters can perform custom actions on a URI filter object,
- * including transformation or blacklisting.
+ * including transformation or blacklisting. A filter named Foo
+ * must have a corresponding configuration directive %URI.Foo,
+ * unless always_load is specified to be true.
+ *
+ * The following contexts may be available while URIFilters are being
+ * processed:
+ *
+ * - EmbeddedURI: true if URI is an embedded resource that will
+ * be loaded automatically on page load
+ * - CurrentToken: a reference to the token that is currently
+ * being processed
+ * - CurrentAttr: the name of the attribute that is currently being
+ * processed
+ * - CurrentCSSProperty: the name of the CSS property that is
+ * currently being processed (if applicable)
*
* @warning This filter is called before scheme object validation occurs.
* Make sure, if you require a specific scheme object, you
@@ -15,31 +29,46 @@ abstract class HTMLPurifier_URIFilter
{
/**
- * Unique identifier of filter
+ * Unique identifier of filter.
+ * @type string
*/
public $name;
/**
* True if this filter should be run after scheme validation.
+ * @type bool
*/
public $post = false;
/**
- * Performs initialization for the filter
+ * True if this filter should always be loaded.
+ * This permits a filter to be named Foo without the corresponding
+ * %URI.Foo directive existing.
+ * @type bool
+ */
+ public $always_load = false;
+
+ /**
+ * Performs initialization for the filter. If the filter returns
+ * false, this means that it shouldn't be considered active.
+ * @param HTMLPurifier_Config $config
+ * @return bool
*/
- public function prepare($config) {return true;}
+ public function prepare($config)
+ {
+ return true;
+ }
/**
* Filter a URI object
- * @param $uri Reference to URI object variable
- * @param $config Instance of HTMLPurifier_Config
- * @param $context Instance of HTMLPurifier_Context
+ * @param HTMLPurifier_URI $uri Reference to URI object variable
+ * @param HTMLPurifier_Config $config
+ * @param HTMLPurifier_Context $context
* @return bool Whether or not to continue processing: false indicates
* URL is no good, true indicates continue processing. Note that
* all changes are committed directly on the URI object
*/
abstract public function filter(&$uri, $config, $context);
-
}
// vim: et sw=4 sts=4
diff --git a/library/HTMLPurifier/URIFilter/DisableExternal.php b/library/HTMLPurifier/URIFilter/DisableExternal.php
index d8a39a501..ced1b1376 100644
--- a/library/HTMLPurifier/URIFilter/DisableExternal.php
+++ b/library/HTMLPurifier/URIFilter/DisableExternal.php
@@ -2,19 +2,50 @@
class HTMLPurifier_URIFilter_DisableExternal extends HTMLPurifier_URIFilter
{
+ /**
+ * @type string
+ */
public $name = 'DisableExternal';
+
+ /**
+ * @type array
+ */
protected $ourHostParts = false;
- public function prepare($config) {
+
+ /**
+ * @param HTMLPurifier_Config $config
+ * @return void
+ */
+ public function prepare($config)
+ {
$our_host = $config->getDefinition('URI')->host;
- if ($our_host !== null) $this->ourHostParts = array_reverse(explode('.', $our_host));
+ if ($our_host !== null) {
+ $this->ourHostParts = array_reverse(explode('.', $our_host));
+ }
}
- public function filter(&$uri, $config, $context) {
- if (is_null($uri->host)) return true;
- if ($this->ourHostParts === false) return false;
+
+ /**
+ * @param HTMLPurifier_URI $uri Reference
+ * @param HTMLPurifier_Config $config
+ * @param HTMLPurifier_Context $context
+ * @return bool
+ */
+ public function filter(&$uri, $config, $context)
+ {
+ if (is_null($uri->host)) {
+ return true;
+ }
+ if ($this->ourHostParts === false) {
+ return false;
+ }
$host_parts = array_reverse(explode('.', $uri->host));
foreach ($this->ourHostParts as $i => $x) {
- if (!isset($host_parts[$i])) return false;
- if ($host_parts[$i] != $this->ourHostParts[$i]) return false;
+ if (!isset($host_parts[$i])) {
+ return false;
+ }
+ if ($host_parts[$i] != $this->ourHostParts[$i]) {
+ return false;
+ }
}
return true;
}
diff --git a/library/HTMLPurifier/URIFilter/DisableExternalResources.php b/library/HTMLPurifier/URIFilter/DisableExternalResources.php
index 881abc43c..c6562169e 100644
--- a/library/HTMLPurifier/URIFilter/DisableExternalResources.php
+++ b/library/HTMLPurifier/URIFilter/DisableExternalResources.php
@@ -2,9 +2,22 @@
class HTMLPurifier_URIFilter_DisableExternalResources extends HTMLPurifier_URIFilter_DisableExternal
{
+ /**
+ * @type string
+ */
public $name = 'DisableExternalResources';
- public function filter(&$uri, $config, $context) {
- if (!$context->get('EmbeddedURI', true)) return true;
+
+ /**
+ * @param HTMLPurifier_URI $uri
+ * @param HTMLPurifier_Config $config
+ * @param HTMLPurifier_Context $context
+ * @return bool
+ */
+ public function filter(&$uri, $config, $context)
+ {
+ if (!$context->get('EmbeddedURI', true)) {
+ return true;
+ }
return parent::filter($uri, $config, $context);
}
}
diff --git a/library/HTMLPurifier/URIFilter/DisableResources.php b/library/HTMLPurifier/URIFilter/DisableResources.php
new file mode 100644
index 000000000..d5c412c44
--- /dev/null
+++ b/library/HTMLPurifier/URIFilter/DisableResources.php
@@ -0,0 +1,22 @@
+<?php
+
+class HTMLPurifier_URIFilter_DisableResources extends HTMLPurifier_URIFilter
+{
+ /**
+ * @type string
+ */
+ public $name = 'DisableResources';
+
+ /**
+ * @param HTMLPurifier_URI $uri
+ * @param HTMLPurifier_Config $config
+ * @param HTMLPurifier_Context $context
+ * @return bool
+ */
+ public function filter(&$uri, $config, $context)
+ {
+ return !$context->get('EmbeddedURI', true);
+ }
+}
+
+// vim: et sw=4 sts=4
diff --git a/library/HTMLPurifier/URIFilter/HostBlacklist.php b/library/HTMLPurifier/URIFilter/HostBlacklist.php
index 045aa0992..a6645c17e 100644
--- a/library/HTMLPurifier/URIFilter/HostBlacklist.php
+++ b/library/HTMLPurifier/URIFilter/HostBlacklist.php
@@ -1,15 +1,40 @@
<?php
+// It's not clear to me whether or not Punycode means that hostnames
+// do not have canonical forms anymore. As far as I can tell, it's
+// not a problem (punycoding should be identity when no Unicode
+// points are involved), but I'm not 100% sure
class HTMLPurifier_URIFilter_HostBlacklist extends HTMLPurifier_URIFilter
{
+ /**
+ * @type string
+ */
public $name = 'HostBlacklist';
+
+ /**
+ * @type array
+ */
protected $blacklist = array();
- public function prepare($config) {
+
+ /**
+ * @param HTMLPurifier_Config $config
+ * @return bool
+ */
+ public function prepare($config)
+ {
$this->blacklist = $config->get('URI.HostBlacklist');
return true;
}
- public function filter(&$uri, $config, $context) {
- foreach($this->blacklist as $blacklisted_host_fragment) {
+
+ /**
+ * @param HTMLPurifier_URI $uri
+ * @param HTMLPurifier_Config $config
+ * @param HTMLPurifier_Context $context
+ * @return bool
+ */
+ public function filter(&$uri, $config, $context)
+ {
+ foreach ($this->blacklist as $blacklisted_host_fragment) {
if (strpos($uri->host, $blacklisted_host_fragment) !== false) {
return false;
}
diff --git a/library/HTMLPurifier/URIFilter/MakeAbsolute.php b/library/HTMLPurifier/URIFilter/MakeAbsolute.php
index f46ab2630..c507bbff8 100644
--- a/library/HTMLPurifier/URIFilter/MakeAbsolute.php
+++ b/library/HTMLPurifier/URIFilter/MakeAbsolute.php
@@ -4,14 +4,35 @@
class HTMLPurifier_URIFilter_MakeAbsolute extends HTMLPurifier_URIFilter
{
+ /**
+ * @type string
+ */
public $name = 'MakeAbsolute';
+
+ /**
+ * @type
+ */
protected $base;
+
+ /**
+ * @type array
+ */
protected $basePathStack = array();
- public function prepare($config) {
+
+ /**
+ * @param HTMLPurifier_Config $config
+ * @return bool
+ */
+ public function prepare($config)
+ {
$def = $config->getDefinition('URI');
$this->base = $def->base;
if (is_null($this->base)) {
- trigger_error('URI.MakeAbsolute is being ignored due to lack of value for URI.Base configuration', E_USER_WARNING);
+ trigger_error(
+ 'URI.MakeAbsolute is being ignored due to lack of ' .
+ 'value for URI.Base configuration',
+ E_USER_WARNING
+ );
return false;
}
$this->base->fragment = null; // fragment is invalid for base URI
@@ -21,19 +42,29 @@ class HTMLPurifier_URIFilter_MakeAbsolute extends HTMLPurifier_URIFilter
$this->basePathStack = $stack;
return true;
}
- public function filter(&$uri, $config, $context) {
- if (is_null($this->base)) return true; // abort early
- if (
- $uri->path === '' && is_null($uri->scheme) &&
- is_null($uri->host) && is_null($uri->query) && is_null($uri->fragment)
- ) {
+
+ /**
+ * @param HTMLPurifier_URI $uri
+ * @param HTMLPurifier_Config $config
+ * @param HTMLPurifier_Context $context
+ * @return bool
+ */
+ public function filter(&$uri, $config, $context)
+ {
+ if (is_null($this->base)) {
+ return true;
+ } // abort early
+ if ($uri->path === '' && is_null($uri->scheme) &&
+ is_null($uri->host) && is_null($uri->query) && is_null($uri->fragment)) {
// reference to current document
$uri = clone $this->base;
return true;
}
if (!is_null($uri->scheme)) {
// absolute URI already: don't change
- if (!is_null($uri->host)) return true;
+ if (!is_null($uri->host)) {
+ return true;
+ }
$scheme_obj = $uri->getSchemeObj($config, $context);
if (!$scheme_obj) {
// scheme not recognized
@@ -66,22 +97,33 @@ class HTMLPurifier_URIFilter_MakeAbsolute extends HTMLPurifier_URIFilter
}
// re-combine
$uri->scheme = $this->base->scheme;
- if (is_null($uri->userinfo)) $uri->userinfo = $this->base->userinfo;
- if (is_null($uri->host)) $uri->host = $this->base->host;
- if (is_null($uri->port)) $uri->port = $this->base->port;
+ if (is_null($uri->userinfo)) {
+ $uri->userinfo = $this->base->userinfo;
+ }
+ if (is_null($uri->host)) {
+ $uri->host = $this->base->host;
+ }
+ if (is_null($uri->port)) {
+ $uri->port = $this->base->port;
+ }
return true;
}
/**
* Resolve dots and double-dots in a path stack
+ * @param array $stack
+ * @return array
*/
- private function _collapseStack($stack) {
+ private function _collapseStack($stack)
+ {
$result = array();
$is_folder = false;
for ($i = 0; isset($stack[$i]); $i++) {
$is_folder = false;
// absorb an internally duplicated slash
- if ($stack[$i] == '' && $i && isset($stack[$i+1])) continue;
+ if ($stack[$i] == '' && $i && isset($stack[$i + 1])) {
+ continue;
+ }
if ($stack[$i] == '..') {
if (!empty($result)) {
$segment = array_pop($result);
@@ -106,7 +148,9 @@ class HTMLPurifier_URIFilter_MakeAbsolute extends HTMLPurifier_URIFilter
}
$result[] = $stack[$i];
}
- if ($is_folder) $result[] = '';
+ if ($is_folder) {
+ $result[] = '';
+ }
return $result;
}
}
diff --git a/library/HTMLPurifier/URIFilter/Munge.php b/library/HTMLPurifier/URIFilter/Munge.php
index efa10a645..6e03315a1 100644
--- a/library/HTMLPurifier/URIFilter/Munge.php
+++ b/library/HTMLPurifier/URIFilter/Munge.php
@@ -2,31 +2,79 @@
class HTMLPurifier_URIFilter_Munge extends HTMLPurifier_URIFilter
{
+ /**
+ * @type string
+ */
public $name = 'Munge';
+
+ /**
+ * @type bool
+ */
public $post = true;
- private $target, $parser, $doEmbed, $secretKey;
+ /**
+ * @type string
+ */
+ private $target;
+
+ /**
+ * @type HTMLPurifier_URIParser
+ */
+ private $parser;
+
+ /**
+ * @type bool
+ */
+ private $doEmbed;
+
+ /**
+ * @type string
+ */
+ private $secretKey;
+
+ /**
+ * @type array
+ */
protected $replace = array();
- public function prepare($config) {
- $this->target = $config->get('URI.' . $this->name);
- $this->parser = new HTMLPurifier_URIParser();
- $this->doEmbed = $config->get('URI.MungeResources');
+ /**
+ * @param HTMLPurifier_Config $config
+ * @return bool
+ */
+ public function prepare($config)
+ {
+ $this->target = $config->get('URI.' . $this->name);
+ $this->parser = new HTMLPurifier_URIParser();
+ $this->doEmbed = $config->get('URI.MungeResources');
$this->secretKey = $config->get('URI.MungeSecretKey');
+ if ($this->secretKey && !function_exists('hash_hmac')) {
+ throw new Exception("Cannot use %URI.MungeSecretKey without hash_hmac support.");
+ }
return true;
}
- public function filter(&$uri, $config, $context) {
- if ($context->get('EmbeddedURI', true) && !$this->doEmbed) return true;
- $scheme_obj = $uri->getSchemeObj($config, $context);
- if (!$scheme_obj) return true; // ignore unknown schemes, maybe another postfilter did it
- if (is_null($uri->host) || empty($scheme_obj->browsable)) {
+ /**
+ * @param HTMLPurifier_URI $uri
+ * @param HTMLPurifier_Config $config
+ * @param HTMLPurifier_Context $context
+ * @return bool
+ */
+ public function filter(&$uri, $config, $context)
+ {
+ if ($context->get('EmbeddedURI', true) && !$this->doEmbed) {
return true;
}
- // don't redirect if target host is our host
- if ($uri->host === $config->getDefinition('URI')->host) {
+
+ $scheme_obj = $uri->getSchemeObj($config, $context);
+ if (!$scheme_obj) {
return true;
- }
+ } // ignore unknown schemes, maybe another postfilter did it
+ if (!$scheme_obj->browsable) {
+ return true;
+ } // ignore non-browseable schemes, since we can't munge those in a reasonable way
+ if ($uri->isBenign($config, $context)) {
+ return true;
+ } // don't redirect if a benign URL
$this->makeReplace($uri, $config, $context);
$this->replace = array_map('rawurlencode', $this->replace);
@@ -35,12 +83,20 @@ class HTMLPurifier_URIFilter_Munge extends HTMLPurifier_URIFilter
$new_uri = $this->parser->parse($new_uri);
// don't redirect if the target host is the same as the
// starting host
- if ($uri->host === $new_uri->host) return true;
+ if ($uri->host === $new_uri->host) {
+ return true;
+ }
$uri = $new_uri; // overwrite
return true;
}
- protected function makeReplace($uri, $config, $context) {
+ /**
+ * @param HTMLPurifier_URI $uri
+ * @param HTMLPurifier_Config $config
+ * @param HTMLPurifier_Context $context
+ */
+ protected function makeReplace($uri, $config, $context)
+ {
$string = $uri->toString();
// always available
$this->replace['%s'] = $string;
@@ -50,9 +106,10 @@ class HTMLPurifier_URIFilter_Munge extends HTMLPurifier_URIFilter
$this->replace['%m'] = $context->get('CurrentAttr', true);
$this->replace['%p'] = $context->get('CurrentCSSProperty', true);
// not always available
- if ($this->secretKey) $this->replace['%t'] = sha1($this->secretKey . ':' . $string);
+ if ($this->secretKey) {
+ $this->replace['%t'] = hash_hmac("sha256", $string, $this->secretKey);
+ }
}
-
}
// vim: et sw=4 sts=4
diff --git a/library/HTMLPurifier/URIFilter/SafeIframe.php b/library/HTMLPurifier/URIFilter/SafeIframe.php
new file mode 100644
index 000000000..f609c47a3
--- /dev/null
+++ b/library/HTMLPurifier/URIFilter/SafeIframe.php
@@ -0,0 +1,68 @@
+<?php
+
+/**
+ * Implements safety checks for safe iframes.
+ *
+ * @warning This filter is *critical* for ensuring that %HTML.SafeIframe
+ * works safely.
+ */
+class HTMLPurifier_URIFilter_SafeIframe extends HTMLPurifier_URIFilter
+{
+ /**
+ * @type string
+ */
+ public $name = 'SafeIframe';
+
+ /**
+ * @type bool
+ */
+ public $always_load = true;
+
+ /**
+ * @type string
+ */
+ protected $regexp = null;
+
+ // XXX: The not so good bit about how this is all set up now is we
+ // can't check HTML.SafeIframe in the 'prepare' step: we have to
+ // defer till the actual filtering.
+ /**
+ * @param HTMLPurifier_Config $config
+ * @return bool
+ */
+ public function prepare($config)
+ {
+ $this->regexp = $config->get('URI.SafeIframeRegexp');
+ return true;
+ }
+
+ /**
+ * @param HTMLPurifier_URI $uri
+ * @param HTMLPurifier_Config $config
+ * @param HTMLPurifier_Context $context
+ * @return bool
+ */
+ public function filter(&$uri, $config, $context)
+ {
+ // check if filter not applicable
+ if (!$config->get('HTML.SafeIframe')) {
+ return true;
+ }
+ // check if the filter should actually trigger
+ if (!$context->get('EmbeddedURI', true)) {
+ return true;
+ }
+ $token = $context->get('CurrentToken', true);
+ if (!($token && $token->name == 'iframe')) {
+ return true;
+ }
+ // check if we actually have some whitelists enabled
+ if ($this->regexp === null) {
+ return false;
+ }
+ // actually check the whitelists
+ return preg_match($this->regexp, $uri->toString());
+ }
+}
+
+// vim: et sw=4 sts=4
diff --git a/library/HTMLPurifier/URIParser.php b/library/HTMLPurifier/URIParser.php
index 7179e4ab8..0e7381a07 100644
--- a/library/HTMLPurifier/URIParser.php
+++ b/library/HTMLPurifier/URIParser.php
@@ -12,7 +12,8 @@ class HTMLPurifier_URIParser
*/
protected $percentEncoder;
- public function __construct() {
+ public function __construct()
+ {
$this->percentEncoder = new HTMLPurifier_PercentEncoder();
}
@@ -22,15 +23,15 @@ class HTMLPurifier_URIParser
* @return HTMLPurifier_URI representation of URI. This representation has
* not been validated yet and may not conform to RFC.
*/
- public function parse($uri) {
-
+ public function parse($uri)
+ {
$uri = $this->percentEncoder->normalize($uri);
// Regexp is as per Appendix B.
// Note that ["<>] are an addition to the RFC's recommended
// characters, because they represent external delimeters.
$r_URI = '!'.
- '(([^:/?#"<>]+):)?'. // 2. Scheme
+ '(([a-zA-Z0-9\.\+\-]+):)?'. // 2. Scheme
'(//([^/?#"<>]*))?'. // 4. Authority
'([^?#"<>]*)'. // 5. Path
'(\?([^#"<>]*))?'. // 7. Query
diff --git a/library/HTMLPurifier/URIScheme.php b/library/HTMLPurifier/URIScheme.php
index 039710fd1..fe9e82cf2 100644
--- a/library/HTMLPurifier/URIScheme.php
+++ b/library/HTMLPurifier/URIScheme.php
@@ -3,40 +3,100 @@
/**
* Validator for the components of a URI for a specific scheme
*/
-class HTMLPurifier_URIScheme
+abstract class HTMLPurifier_URIScheme
{
/**
- * Scheme's default port (integer)
+ * Scheme's default port (integer). If an explicit port number is
+ * specified that coincides with the default port, it will be
+ * elided.
+ * @type int
*/
public $default_port = null;
/**
- * Whether or not URIs of this schem are locatable by a browser
+ * Whether or not URIs of this scheme are locatable by a browser
* http and ftp are accessible, while mailto and news are not.
+ * @type bool
*/
public $browsable = false;
/**
+ * Whether or not data transmitted over this scheme is encrypted.
+ * https is secure, http is not.
+ * @type bool
+ */
+ public $secure = false;
+
+ /**
* Whether or not the URI always uses <hier_part>, resolves edge cases
* with making relative URIs absolute
+ * @type bool
*/
public $hierarchical = false;
/**
- * Validates the components of a URI
- * @note This implementation should be called by children if they define
- * a default port, as it does port processing.
- * @param $uri Instance of HTMLPurifier_URI
- * @param $config HTMLPurifier_Config object
- * @param $context HTMLPurifier_Context object
- * @return Bool success or failure
+ * Whether or not the URI may omit a hostname when the scheme is
+ * explicitly specified, ala file:///path/to/file. As of writing,
+ * 'file' is the only scheme that browsers support his properly.
+ * @type bool
*/
- public function validate(&$uri, $config, $context) {
- if ($this->default_port == $uri->port) $uri->port = null;
- return true;
- }
+ public $may_omit_host = false;
+
+ /**
+ * Validates the components of a URI for a specific scheme.
+ * @param HTMLPurifier_URI $uri Reference to a HTMLPurifier_URI object
+ * @param HTMLPurifier_Config $config
+ * @param HTMLPurifier_Context $context
+ * @return bool success or failure
+ */
+ abstract public function doValidate(&$uri, $config, $context);
+ /**
+ * Public interface for validating components of a URI. Performs a
+ * bunch of default actions. Don't overload this method.
+ * @param HTMLPurifier_URI $uri Reference to a HTMLPurifier_URI object
+ * @param HTMLPurifier_Config $config
+ * @param HTMLPurifier_Context $context
+ * @return bool success or failure
+ */
+ public function validate(&$uri, $config, $context)
+ {
+ if ($this->default_port == $uri->port) {
+ $uri->port = null;
+ }
+ // kludge: browsers do funny things when the scheme but not the
+ // authority is set
+ if (!$this->may_omit_host &&
+ // if the scheme is present, a missing host is always in error
+ (!is_null($uri->scheme) && ($uri->host === '' || is_null($uri->host))) ||
+ // if the scheme is not present, a *blank* host is in error,
+ // since this translates into '///path' which most browsers
+ // interpret as being 'http://path'.
+ (is_null($uri->scheme) && $uri->host === '')
+ ) {
+ do {
+ if (is_null($uri->scheme)) {
+ if (substr($uri->path, 0, 2) != '//') {
+ $uri->host = null;
+ break;
+ }
+ // URI is '////path', so we cannot nullify the
+ // host to preserve semantics. Try expanding the
+ // hostname instead (fall through)
+ }
+ // first see if we can manually insert a hostname
+ $host = $config->get('URI.Host');
+ if (!is_null($host)) {
+ $uri->host = $host;
+ } else {
+ // we can't do anything sensible, reject the URL.
+ return false;
+ }
+ } while (false);
+ }
+ return $this->doValidate($uri, $config, $context);
+ }
}
// vim: et sw=4 sts=4
diff --git a/library/HTMLPurifier/URIScheme/data.php b/library/HTMLPurifier/URIScheme/data.php
index b7f1989cb..6ebca4984 100644
--- a/library/HTMLPurifier/URIScheme/data.php
+++ b/library/HTMLPurifier/URIScheme/data.php
@@ -3,18 +3,38 @@
/**
* Implements data: URI for base64 encoded images supported by GD.
*/
-class HTMLPurifier_URIScheme_data extends HTMLPurifier_URIScheme {
-
+class HTMLPurifier_URIScheme_data extends HTMLPurifier_URIScheme
+{
+ /**
+ * @type bool
+ */
public $browsable = true;
+
+ /**
+ * @type array
+ */
public $allowed_types = array(
// you better write validation code for other types if you
// decide to allow them
'image/jpeg' => true,
'image/gif' => true,
'image/png' => true,
- );
+ );
+ // this is actually irrelevant since we only write out the path
+ // component
+ /**
+ * @type bool
+ */
+ public $may_omit_host = true;
- public function validate(&$uri, $config, $context) {
+ /**
+ * @param HTMLPurifier_URI $uri
+ * @param HTMLPurifier_Config $config
+ * @param HTMLPurifier_Context $context
+ * @return bool
+ */
+ public function doValidate(&$uri, $config, $context)
+ {
$result = explode(',', $uri->path, 2);
$is_base64 = false;
$charset = null;
@@ -23,7 +43,7 @@ class HTMLPurifier_URIScheme_data extends HTMLPurifier_URIScheme {
list($metadata, $data) = $result;
// do some legwork on the metadata
$metas = explode(';', $metadata);
- while(!empty($metas)) {
+ while (!empty($metas)) {
$cur = array_shift($metas);
if ($cur == 'base64') {
$is_base64 = true;
@@ -32,10 +52,14 @@ class HTMLPurifier_URIScheme_data extends HTMLPurifier_URIScheme {
if (substr($cur, 0, 8) == 'charset=') {
// doesn't match if there are arbitrary spaces, but
// whatever dude
- if ($charset !== null) continue; // garbage
+ if ($charset !== null) {
+ continue;
+ } // garbage
$charset = substr($cur, 8); // not used
} else {
- if ($content_type !== null) continue; // garbage
+ if ($content_type !== null) {
+ continue;
+ } // garbage
$content_type = $cur;
}
}
@@ -61,11 +85,15 @@ class HTMLPurifier_URIScheme_data extends HTMLPurifier_URIScheme {
file_put_contents($file, $raw_data);
if (function_exists('exif_imagetype')) {
$image_code = exif_imagetype($file);
+ unlink($file);
} elseif (function_exists('getimagesize')) {
set_error_handler(array($this, 'muteErrorHandler'));
$info = getimagesize($file);
restore_error_handler();
- if ($info == false) return false;
+ unlink($file);
+ if ($info == false) {
+ return false;
+ }
$image_code = $info[2];
} else {
trigger_error("could not find exif_imagetype or getimagesize functions", E_USER_ERROR);
@@ -74,7 +102,9 @@ class HTMLPurifier_URIScheme_data extends HTMLPurifier_URIScheme {
if ($real_content_type != $content_type) {
// we're nice guys; if the content type is something else we
// support, change it over
- if (empty($this->allowed_types[$real_content_type])) return false;
+ if (empty($this->allowed_types[$real_content_type])) {
+ return false;
+ }
$content_type = $real_content_type;
}
// ok, it's kosher, rewrite what we need
@@ -87,7 +117,11 @@ class HTMLPurifier_URIScheme_data extends HTMLPurifier_URIScheme {
return true;
}
- public function muteErrorHandler($errno, $errstr) {}
-
+ /**
+ * @param int $errno
+ * @param string $errstr
+ */
+ public function muteErrorHandler($errno, $errstr)
+ {
+ }
}
-
diff --git a/library/HTMLPurifier/URIScheme/file.php b/library/HTMLPurifier/URIScheme/file.php
new file mode 100644
index 000000000..215be4ba8
--- /dev/null
+++ b/library/HTMLPurifier/URIScheme/file.php
@@ -0,0 +1,44 @@
+<?php
+
+/**
+ * Validates file as defined by RFC 1630 and RFC 1738.
+ */
+class HTMLPurifier_URIScheme_file extends HTMLPurifier_URIScheme
+{
+ /**
+ * Generally file:// URLs are not accessible from most
+ * machines, so placing them as an img src is incorrect.
+ * @type bool
+ */
+ public $browsable = false;
+
+ /**
+ * Basically the *only* URI scheme for which this is true, since
+ * accessing files on the local machine is very common. In fact,
+ * browsers on some operating systems don't understand the
+ * authority, though I hear it is used on Windows to refer to
+ * network shares.
+ * @type bool
+ */
+ public $may_omit_host = true;
+
+ /**
+ * @param HTMLPurifier_URI $uri
+ * @param HTMLPurifier_Config $config
+ * @param HTMLPurifier_Context $context
+ * @return bool
+ */
+ public function doValidate(&$uri, $config, $context)
+ {
+ // Authentication method is not supported
+ $uri->userinfo = null;
+ // file:// makes no provisions for accessing the resource
+ $uri->port = null;
+ // While it seems to work on Firefox, the querystring has
+ // no possible effect and is thus stripped.
+ $uri->query = null;
+ return true;
+ }
+}
+
+// vim: et sw=4 sts=4
diff --git a/library/HTMLPurifier/URIScheme/ftp.php b/library/HTMLPurifier/URIScheme/ftp.php
index 5849bf7ff..1eb43ee5c 100644
--- a/library/HTMLPurifier/URIScheme/ftp.php
+++ b/library/HTMLPurifier/URIScheme/ftp.php
@@ -3,15 +3,32 @@
/**
* Validates ftp (File Transfer Protocol) URIs as defined by generic RFC 1738.
*/
-class HTMLPurifier_URIScheme_ftp extends HTMLPurifier_URIScheme {
-
+class HTMLPurifier_URIScheme_ftp extends HTMLPurifier_URIScheme
+{
+ /**
+ * @type int
+ */
public $default_port = 21;
+
+ /**
+ * @type bool
+ */
public $browsable = true; // usually
+
+ /**
+ * @type bool
+ */
public $hierarchical = true;
- public function validate(&$uri, $config, $context) {
- parent::validate($uri, $config, $context);
- $uri->query = null;
+ /**
+ * @param HTMLPurifier_URI $uri
+ * @param HTMLPurifier_Config $config
+ * @param HTMLPurifier_Context $context
+ * @return bool
+ */
+ public function doValidate(&$uri, $config, $context)
+ {
+ $uri->query = null;
// typecode check
$semicolon_pos = strrpos($uri->path, ';'); // reverse
@@ -34,10 +51,8 @@ class HTMLPurifier_URIScheme_ftp extends HTMLPurifier_URIScheme {
$uri->path = str_replace(';', '%3B', $uri->path);
$uri->path .= $type_ret;
}
-
return true;
}
-
}
// vim: et sw=4 sts=4
diff --git a/library/HTMLPurifier/URIScheme/http.php b/library/HTMLPurifier/URIScheme/http.php
index b097a31d6..ce69ec438 100644
--- a/library/HTMLPurifier/URIScheme/http.php
+++ b/library/HTMLPurifier/URIScheme/http.php
@@ -3,18 +3,34 @@
/**
* Validates http (HyperText Transfer Protocol) as defined by RFC 2616
*/
-class HTMLPurifier_URIScheme_http extends HTMLPurifier_URIScheme {
-
+class HTMLPurifier_URIScheme_http extends HTMLPurifier_URIScheme
+{
+ /**
+ * @type int
+ */
public $default_port = 80;
+
+ /**
+ * @type bool
+ */
public $browsable = true;
+
+ /**
+ * @type bool
+ */
public $hierarchical = true;
- public function validate(&$uri, $config, $context) {
- parent::validate($uri, $config, $context);
+ /**
+ * @param HTMLPurifier_URI $uri
+ * @param HTMLPurifier_Config $config
+ * @param HTMLPurifier_Context $context
+ * @return bool
+ */
+ public function doValidate(&$uri, $config, $context)
+ {
$uri->userinfo = null;
return true;
}
-
}
// vim: et sw=4 sts=4
diff --git a/library/HTMLPurifier/URIScheme/https.php b/library/HTMLPurifier/URIScheme/https.php
index 29e380919..0e96882db 100644
--- a/library/HTMLPurifier/URIScheme/https.php
+++ b/library/HTMLPurifier/URIScheme/https.php
@@ -3,10 +3,16 @@
/**
* Validates https (Secure HTTP) according to http scheme.
*/
-class HTMLPurifier_URIScheme_https extends HTMLPurifier_URIScheme_http {
-
+class HTMLPurifier_URIScheme_https extends HTMLPurifier_URIScheme_http
+{
+ /**
+ * @type int
+ */
public $default_port = 443;
-
+ /**
+ * @type bool
+ */
+ public $secure = true;
}
// vim: et sw=4 sts=4
diff --git a/library/HTMLPurifier/URIScheme/mailto.php b/library/HTMLPurifier/URIScheme/mailto.php
index c1e2cd5aa..c3a6b602a 100644
--- a/library/HTMLPurifier/URIScheme/mailto.php
+++ b/library/HTMLPurifier/URIScheme/mailto.php
@@ -9,19 +9,32 @@
* @todo Filter allowed query parameters
*/
-class HTMLPurifier_URIScheme_mailto extends HTMLPurifier_URIScheme {
-
+class HTMLPurifier_URIScheme_mailto extends HTMLPurifier_URIScheme
+{
+ /**
+ * @type bool
+ */
public $browsable = false;
- public function validate(&$uri, $config, $context) {
- parent::validate($uri, $config, $context);
+ /**
+ * @type bool
+ */
+ public $may_omit_host = true;
+
+ /**
+ * @param HTMLPurifier_URI $uri
+ * @param HTMLPurifier_Config $config
+ * @param HTMLPurifier_Context $context
+ * @return bool
+ */
+ public function doValidate(&$uri, $config, $context)
+ {
$uri->userinfo = null;
$uri->host = null;
$uri->port = null;
// we need to validate path against RFC 2368's addr-spec
return true;
}
-
}
// vim: et sw=4 sts=4
diff --git a/library/HTMLPurifier/URIScheme/news.php b/library/HTMLPurifier/URIScheme/news.php
index f5f54f4f5..7490927d6 100644
--- a/library/HTMLPurifier/URIScheme/news.php
+++ b/library/HTMLPurifier/URIScheme/news.php
@@ -3,20 +3,33 @@
/**
* Validates news (Usenet) as defined by generic RFC 1738
*/
-class HTMLPurifier_URIScheme_news extends HTMLPurifier_URIScheme {
-
+class HTMLPurifier_URIScheme_news extends HTMLPurifier_URIScheme
+{
+ /**
+ * @type bool
+ */
public $browsable = false;
- public function validate(&$uri, $config, $context) {
- parent::validate($uri, $config, $context);
+ /**
+ * @type bool
+ */
+ public $may_omit_host = true;
+
+ /**
+ * @param HTMLPurifier_URI $uri
+ * @param HTMLPurifier_Config $config
+ * @param HTMLPurifier_Context $context
+ * @return bool
+ */
+ public function doValidate(&$uri, $config, $context)
+ {
$uri->userinfo = null;
- $uri->host = null;
- $uri->port = null;
- $uri->query = null;
+ $uri->host = null;
+ $uri->port = null;
+ $uri->query = null;
// typecode check needed on path
return true;
}
-
}
// vim: et sw=4 sts=4
diff --git a/library/HTMLPurifier/URIScheme/nntp.php b/library/HTMLPurifier/URIScheme/nntp.php
index 5bf93ea78..f211d715e 100644
--- a/library/HTMLPurifier/URIScheme/nntp.php
+++ b/library/HTMLPurifier/URIScheme/nntp.php
@@ -3,18 +3,30 @@
/**
* Validates nntp (Network News Transfer Protocol) as defined by generic RFC 1738
*/
-class HTMLPurifier_URIScheme_nntp extends HTMLPurifier_URIScheme {
-
+class HTMLPurifier_URIScheme_nntp extends HTMLPurifier_URIScheme
+{
+ /**
+ * @type int
+ */
public $default_port = 119;
+
+ /**
+ * @type bool
+ */
public $browsable = false;
- public function validate(&$uri, $config, $context) {
- parent::validate($uri, $config, $context);
+ /**
+ * @param HTMLPurifier_URI $uri
+ * @param HTMLPurifier_Config $config
+ * @param HTMLPurifier_Context $context
+ * @return bool
+ */
+ public function doValidate(&$uri, $config, $context)
+ {
$uri->userinfo = null;
- $uri->query = null;
+ $uri->query = null;
return true;
}
-
}
// vim: et sw=4 sts=4
diff --git a/library/HTMLPurifier/URISchemeRegistry.php b/library/HTMLPurifier/URISchemeRegistry.php
index 576bf7b6d..4ac8a0b76 100644
--- a/library/HTMLPurifier/URISchemeRegistry.php
+++ b/library/HTMLPurifier/URISchemeRegistry.php
@@ -8,12 +8,14 @@ class HTMLPurifier_URISchemeRegistry
/**
* Retrieve sole instance of the registry.
- * @param $prototype Optional prototype to overload sole instance with,
+ * @param HTMLPurifier_URISchemeRegistry $prototype Optional prototype to overload sole instance with,
* or bool true to reset to default registry.
+ * @return HTMLPurifier_URISchemeRegistry
* @note Pass a registry object $prototype with a compatible interface and
* the function will copy it and return it all further times.
*/
- public static function instance($prototype = null) {
+ public static function instance($prototype = null)
+ {
static $instance = null;
if ($prototype !== null) {
$instance = $prototype;
@@ -25,17 +27,22 @@ class HTMLPurifier_URISchemeRegistry
/**
* Cache of retrieved schemes.
+ * @type HTMLPurifier_URIScheme[]
*/
protected $schemes = array();
/**
* Retrieves a scheme validator object
- * @param $scheme String scheme name like http or mailto
- * @param $config HTMLPurifier_Config object
- * @param $config HTMLPurifier_Context object
+ * @param string $scheme String scheme name like http or mailto
+ * @param HTMLPurifier_Config $config
+ * @param HTMLPurifier_Context $context
+ * @return HTMLPurifier_URIScheme
*/
- public function getScheme($scheme, $config, $context) {
- if (!$config) $config = HTMLPurifier_Config::createDefault();
+ public function getScheme($scheme, $config, $context)
+ {
+ if (!$config) {
+ $config = HTMLPurifier_Config::createDefault();
+ }
// important, otherwise attacker could include arbitrary file
$allowed_schemes = $config->get('URI.AllowedSchemes');
@@ -45,24 +52,30 @@ class HTMLPurifier_URISchemeRegistry
return;
}
- if (isset($this->schemes[$scheme])) return $this->schemes[$scheme];
- if (!isset($allowed_schemes[$scheme])) return;
+ if (isset($this->schemes[$scheme])) {
+ return $this->schemes[$scheme];
+ }
+ if (!isset($allowed_schemes[$scheme])) {
+ return;
+ }
$class = 'HTMLPurifier_URIScheme_' . $scheme;
- if (!class_exists($class)) return;
+ if (!class_exists($class)) {
+ return;
+ }
$this->schemes[$scheme] = new $class();
return $this->schemes[$scheme];
}
/**
* Registers a custom scheme to the cache, bypassing reflection.
- * @param $scheme Scheme name
- * @param $scheme_obj HTMLPurifier_URIScheme object
+ * @param string $scheme Scheme name
+ * @param HTMLPurifier_URIScheme $scheme_obj
*/
- public function register($scheme, $scheme_obj) {
+ public function register($scheme, $scheme_obj)
+ {
$this->schemes[$scheme] = $scheme_obj;
}
-
}
// vim: et sw=4 sts=4
diff --git a/library/HTMLPurifier/UnitConverter.php b/library/HTMLPurifier/UnitConverter.php
index 545d42622..166f3bf30 100644
--- a/library/HTMLPurifier/UnitConverter.php
+++ b/library/HTMLPurifier/UnitConverter.php
@@ -37,20 +37,24 @@ class HTMLPurifier_UnitConverter
/**
* Minimum bcmath precision for output.
+ * @type int
*/
protected $outputPrecision;
/**
* Bcmath precision for internal calculations.
+ * @type int
*/
protected $internalPrecision;
/**
- * Whether or not BCMath is available
+ * Whether or not BCMath is available.
+ * @type bool
*/
private $bcmath;
- public function __construct($output_precision = 4, $internal_precision = 10, $force_no_bcmath = false) {
+ public function __construct($output_precision = 4, $internal_precision = 10, $force_no_bcmath = false)
+ {
$this->outputPrecision = $output_precision;
$this->internalPrecision = $internal_precision;
$this->bcmath = !$force_no_bcmath && function_exists('bcmul');
@@ -63,6 +67,7 @@ class HTMLPurifier_UnitConverter
* it before passing it here!
* @param string $to_unit
* Unit to convert to.
+ * @return HTMLPurifier_Length|bool
* @note
* About precision: This conversion function pays very special
* attention to the incoming precision of values and attempts
@@ -74,11 +79,13 @@ class HTMLPurifier_UnitConverter
* and this causes some decimals to be excluded, those
* decimals will be added on.
*/
- public function convert($length, $to_unit) {
-
- if (!$length->isValid()) return false;
+ public function convert($length, $to_unit)
+ {
+ if (!$length->isValid()) {
+ return false;
+ }
- $n = $length->getN();
+ $n = $length->getN();
$unit = $length->getUnit();
if ($n === '0' || $unit === false) {
@@ -87,21 +94,29 @@ class HTMLPurifier_UnitConverter
$state = $dest_state = false;
foreach (self::$units as $k => $x) {
- if (isset($x[$unit])) $state = $k;
- if (isset($x[$to_unit])) $dest_state = $k;
+ if (isset($x[$unit])) {
+ $state = $k;
+ }
+ if (isset($x[$to_unit])) {
+ $dest_state = $k;
+ }
+ }
+ if (!$state || !$dest_state) {
+ return false;
}
- if (!$state || !$dest_state) return false;
// Some calculations about the initial precision of the number;
// this will be useful when we need to do final rounding.
$sigfigs = $this->getSigFigs($n);
- if ($sigfigs < $this->outputPrecision) $sigfigs = $this->outputPrecision;
+ if ($sigfigs < $this->outputPrecision) {
+ $sigfigs = $this->outputPrecision;
+ }
// BCMath's internal precision deals only with decimals. Use
// our default if the initial number has no decimals, or increase
// it by how ever many decimals, thus, the number of guard digits
// will always be greater than or equal to internalPrecision.
- $log = (int) floor(log(abs($n), 10));
+ $log = (int)floor(log(abs($n), 10));
$cp = ($log < 0) ? $this->internalPrecision - $log : $this->internalPrecision; // internal precision
for ($i = 0; $i < 2; $i++) {
@@ -152,14 +167,18 @@ class HTMLPurifier_UnitConverter
}
// Post-condition: $unit == $to_unit
- if ($unit !== $to_unit) return false;
+ if ($unit !== $to_unit) {
+ return false;
+ }
// Useful for debugging:
//echo "<pre>n";
//echo "$n\nsigfigs = $sigfigs\nnew_log = $new_log\nlog = $log\nrp = $rp\n</pre>\n";
$n = $this->round($n, $sigfigs);
- if (strpos($n, '.') !== false) $n = rtrim($n, '0');
+ if (strpos($n, '.') !== false) {
+ $n = rtrim($n, '0');
+ }
$n = rtrim($n, '.');
return new HTMLPurifier_Length($n, $unit);
@@ -170,53 +189,84 @@ class HTMLPurifier_UnitConverter
* @param string $n Decimal number
* @return int number of sigfigs
*/
- public function getSigFigs($n) {
+ public function getSigFigs($n)
+ {
$n = ltrim($n, '0+-');
$dp = strpos($n, '.'); // decimal position
if ($dp === false) {
$sigfigs = strlen(rtrim($n, '0'));
} else {
$sigfigs = strlen(ltrim($n, '0.')); // eliminate extra decimal character
- if ($dp !== 0) $sigfigs--;
+ if ($dp !== 0) {
+ $sigfigs--;
+ }
}
return $sigfigs;
}
/**
* Adds two numbers, using arbitrary precision when available.
+ * @param string $s1
+ * @param string $s2
+ * @param int $scale
+ * @return string
*/
- private function add($s1, $s2, $scale) {
- if ($this->bcmath) return bcadd($s1, $s2, $scale);
- else return $this->scale($s1 + $s2, $scale);
+ private function add($s1, $s2, $scale)
+ {
+ if ($this->bcmath) {
+ return bcadd($s1, $s2, $scale);
+ } else {
+ return $this->scale((float)$s1 + (float)$s2, $scale);
+ }
}
/**
* Multiples two numbers, using arbitrary precision when available.
+ * @param string $s1
+ * @param string $s2
+ * @param int $scale
+ * @return string
*/
- private function mul($s1, $s2, $scale) {
- if ($this->bcmath) return bcmul($s1, $s2, $scale);
- else return $this->scale($s1 * $s2, $scale);
+ private function mul($s1, $s2, $scale)
+ {
+ if ($this->bcmath) {
+ return bcmul($s1, $s2, $scale);
+ } else {
+ return $this->scale((float)$s1 * (float)$s2, $scale);
+ }
}
/**
* Divides two numbers, using arbitrary precision when available.
+ * @param string $s1
+ * @param string $s2
+ * @param int $scale
+ * @return string
*/
- private function div($s1, $s2, $scale) {
- if ($this->bcmath) return bcdiv($s1, $s2, $scale);
- else return $this->scale($s1 / $s2, $scale);
+ private function div($s1, $s2, $scale)
+ {
+ if ($this->bcmath) {
+ return bcdiv($s1, $s2, $scale);
+ } else {
+ return $this->scale((float)$s1 / (float)$s2, $scale);
+ }
}
/**
* Rounds a number according to the number of sigfigs it should have,
* using arbitrary precision when available.
+ * @param float $n
+ * @param int $sigfigs
+ * @return string
*/
- private function round($n, $sigfigs) {
- $new_log = (int) floor(log(abs($n), 10)); // Number of digits left of decimal - 1
+ private function round($n, $sigfigs)
+ {
+ $new_log = (int)floor(log(abs($n), 10)); // Number of digits left of decimal - 1
$rp = $sigfigs - $new_log - 1; // Number of decimal places needed
$neg = $n < 0 ? '-' : ''; // Negative sign
if ($this->bcmath) {
if ($rp >= 0) {
- $n = bcadd($n, $neg . '0.' . str_repeat('0', $rp) . '5', $rp + 1);
+ $n = bcadd($n, $neg . '0.' . str_repeat('0', $rp) . '5', $rp + 1);
$n = bcdiv($n, '1', $rp);
} else {
// This algorithm partially depends on the standardized
@@ -232,23 +282,26 @@ class HTMLPurifier_UnitConverter
/**
* Scales a float to $scale digits right of decimal point, like BCMath.
+ * @param float $r
+ * @param int $scale
+ * @return string
*/
- private function scale($r, $scale) {
+ private function scale($r, $scale)
+ {
if ($scale < 0) {
// The f sprintf type doesn't support negative numbers, so we
// need to cludge things manually. First get the string.
- $r = sprintf('%.0f', (float) $r);
+ $r = sprintf('%.0f', (float)$r);
// Due to floating point precision loss, $r will more than likely
// look something like 4652999999999.9234. We grab one more digit
// than we need to precise from $r and then use that to round
// appropriately.
- $precise = (string) round(substr($r, 0, strlen($r) + $scale), -1);
+ $precise = (string)round(substr($r, 0, strlen($r) + $scale), -1);
// Now we return it, truncating the zero that was rounded off.
return substr($precise, 0, -1) . str_repeat('0', -$scale + 1);
}
- return sprintf('%.' . $scale . 'f', (float) $r);
+ return sprintf('%.' . $scale . 'f', (float)$r);
}
-
}
// vim: et sw=4 sts=4
diff --git a/library/HTMLPurifier/VarParser.php b/library/HTMLPurifier/VarParser.php
index 68e72ae86..50cba6910 100644
--- a/library/HTMLPurifier/VarParser.php
+++ b/library/HTMLPurifier/VarParser.php
@@ -7,58 +7,59 @@
class HTMLPurifier_VarParser
{
- const STRING = 1;
- const ISTRING = 2;
- const TEXT = 3;
- const ITEXT = 4;
- const INT = 5;
- const FLOAT = 6;
- const BOOL = 7;
- const LOOKUP = 8;
- const ALIST = 9;
- const HASH = 10;
- const MIXED = 11;
+ const STRING = 1;
+ const ISTRING = 2;
+ const TEXT = 3;
+ const ITEXT = 4;
+ const INT = 5;
+ const FLOAT = 6;
+ const BOOL = 7;
+ const LOOKUP = 8;
+ const ALIST = 9;
+ const HASH = 10;
+ const MIXED = 11;
/**
* Lookup table of allowed types. Mainly for backwards compatibility, but
* also convenient for transforming string type names to the integer constants.
*/
- static public $types = array(
- 'string' => self::STRING,
- 'istring' => self::ISTRING,
- 'text' => self::TEXT,
- 'itext' => self::ITEXT,
- 'int' => self::INT,
- 'float' => self::FLOAT,
- 'bool' => self::BOOL,
- 'lookup' => self::LOOKUP,
- 'list' => self::ALIST,
- 'hash' => self::HASH,
- 'mixed' => self::MIXED
+ public static $types = array(
+ 'string' => self::STRING,
+ 'istring' => self::ISTRING,
+ 'text' => self::TEXT,
+ 'itext' => self::ITEXT,
+ 'int' => self::INT,
+ 'float' => self::FLOAT,
+ 'bool' => self::BOOL,
+ 'lookup' => self::LOOKUP,
+ 'list' => self::ALIST,
+ 'hash' => self::HASH,
+ 'mixed' => self::MIXED
);
/**
* Lookup table of types that are string, and can have aliases or
* allowed value lists.
*/
- static public $stringTypes = array(
- self::STRING => true,
- self::ISTRING => true,
- self::TEXT => true,
- self::ITEXT => true,
+ public static $stringTypes = array(
+ self::STRING => true,
+ self::ISTRING => true,
+ self::TEXT => true,
+ self::ITEXT => true,
);
/**
- * Validate a variable according to type. Throws
- * HTMLPurifier_VarParserException if invalid.
+ * Validate a variable according to type.
* It may return NULL as a valid type if $allow_null is true.
*
- * @param $var Variable to validate
- * @param $type Type of variable, see HTMLPurifier_VarParser->types
- * @param $allow_null Whether or not to permit null as a value
- * @return Validated and type-coerced variable
+ * @param mixed $var Variable to validate
+ * @param int $type Type of variable, see HTMLPurifier_VarParser->types
+ * @param bool $allow_null Whether or not to permit null as a value
+ * @return string Validated and type-coerced variable
+ * @throws HTMLPurifier_VarParserException
*/
- final public function parse($var, $type, $allow_null = false) {
+ final public function parse($var, $type, $allow_null = false)
+ {
if (is_string($type)) {
if (!isset(HTMLPurifier_VarParser::$types[$type])) {
throw new HTMLPurifier_VarParserException("Invalid type '$type'");
@@ -67,7 +68,9 @@ class HTMLPurifier_VarParser
}
}
$var = $this->parseImplementation($var, $type, $allow_null);
- if ($allow_null && $var === null) return null;
+ if ($allow_null && $var === null) {
+ return null;
+ }
// These are basic checks, to make sure nothing horribly wrong
// happened in our implementations.
switch ($type) {
@@ -75,27 +78,45 @@ class HTMLPurifier_VarParser
case (self::ISTRING):
case (self::TEXT):
case (self::ITEXT):
- if (!is_string($var)) break;
- if ($type == self::ISTRING || $type == self::ITEXT) $var = strtolower($var);
+ if (!is_string($var)) {
+ break;
+ }
+ if ($type == self::ISTRING || $type == self::ITEXT) {
+ $var = strtolower($var);
+ }
return $var;
case (self::INT):
- if (!is_int($var)) break;
+ if (!is_int($var)) {
+ break;
+ }
return $var;
case (self::FLOAT):
- if (!is_float($var)) break;
+ if (!is_float($var)) {
+ break;
+ }
return $var;
case (self::BOOL):
- if (!is_bool($var)) break;
+ if (!is_bool($var)) {
+ break;
+ }
return $var;
case (self::LOOKUP):
case (self::ALIST):
case (self::HASH):
- if (!is_array($var)) break;
+ if (!is_array($var)) {
+ break;
+ }
if ($type === self::LOOKUP) {
- foreach ($var as $k) if ($k !== true) $this->error('Lookup table contains value other than true');
+ foreach ($var as $k) {
+ if ($k !== true) {
+ $this->error('Lookup table contains value other than true');
+ }
+ }
} elseif ($type === self::ALIST) {
$keys = array_keys($var);
- if (array_keys($keys) !== $keys) $this->error('Indices for list are not uniform');
+ if (array_keys($keys) !== $keys) {
+ $this->error('Indices for list are not uniform');
+ }
}
return $var;
case (self::MIXED):
@@ -107,17 +128,24 @@ class HTMLPurifier_VarParser
}
/**
- * Actually implements the parsing. Base implementation is to not
+ * Actually implements the parsing. Base implementation does not
* do anything to $var. Subclasses should overload this!
+ * @param mixed $var
+ * @param int $type
+ * @param bool $allow_null
+ * @return string
*/
- protected function parseImplementation($var, $type, $allow_null) {
+ protected function parseImplementation($var, $type, $allow_null)
+ {
return $var;
}
/**
* Throws an exception.
+ * @throws HTMLPurifier_VarParserException
*/
- protected function error($msg) {
+ protected function error($msg)
+ {
throw new HTMLPurifier_VarParserException($msg);
}
@@ -126,29 +154,45 @@ class HTMLPurifier_VarParser
* @note This should not ever be called. It would be called if we
* extend the allowed values of HTMLPurifier_VarParser without
* updating subclasses.
+ * @param string $class
+ * @param int $type
+ * @throws HTMLPurifier_Exception
*/
- protected function errorInconsistent($class, $type) {
- throw new HTMLPurifier_Exception("Inconsistency in $class: ".HTMLPurifier_VarParser::getTypeName($type)." not implemented");
+ protected function errorInconsistent($class, $type)
+ {
+ throw new HTMLPurifier_Exception(
+ "Inconsistency in $class: " . HTMLPurifier_VarParser::getTypeName($type) .
+ " not implemented"
+ );
}
/**
* Generic error for if a type didn't work.
+ * @param mixed $var
+ * @param int $type
*/
- protected function errorGeneric($var, $type) {
+ protected function errorGeneric($var, $type)
+ {
$vtype = gettype($var);
- $this->error("Expected type ".HTMLPurifier_VarParser::getTypeName($type).", got $vtype");
+ $this->error("Expected type " . HTMLPurifier_VarParser::getTypeName($type) . ", got $vtype");
}
- static public function getTypeName($type) {
+ /**
+ * @param int $type
+ * @return string
+ */
+ public static function getTypeName($type)
+ {
static $lookup;
if (!$lookup) {
// Lazy load the alternative lookup table
$lookup = array_flip(HTMLPurifier_VarParser::$types);
}
- if (!isset($lookup[$type])) return 'unknown';
+ if (!isset($lookup[$type])) {
+ return 'unknown';
+ }
return $lookup[$type];
}
-
}
// vim: et sw=4 sts=4
diff --git a/library/HTMLPurifier/VarParser/Flexible.php b/library/HTMLPurifier/VarParser/Flexible.php
index c954250e9..b15016c5b 100644
--- a/library/HTMLPurifier/VarParser/Flexible.php
+++ b/library/HTMLPurifier/VarParser/Flexible.php
@@ -7,28 +7,41 @@
*/
class HTMLPurifier_VarParser_Flexible extends HTMLPurifier_VarParser
{
-
- protected function parseImplementation($var, $type, $allow_null) {
- if ($allow_null && $var === null) return null;
+ /**
+ * @param mixed $var
+ * @param int $type
+ * @param bool $allow_null
+ * @return array|bool|float|int|mixed|null|string
+ * @throws HTMLPurifier_VarParserException
+ */
+ protected function parseImplementation($var, $type, $allow_null)
+ {
+ if ($allow_null && $var === null) {
+ return null;
+ }
switch ($type) {
// Note: if code "breaks" from the switch, it triggers a generic
// exception to be thrown. Specific errors can be specifically
// done here.
- case self::MIXED :
- case self::ISTRING :
- case self::STRING :
- case self::TEXT :
- case self::ITEXT :
+ case self::MIXED:
+ case self::ISTRING:
+ case self::STRING:
+ case self::TEXT:
+ case self::ITEXT:
return $var;
- case self::INT :
- if (is_string($var) && ctype_digit($var)) $var = (int) $var;
+ case self::INT:
+ if (is_string($var) && ctype_digit($var)) {
+ $var = (int)$var;
+ }
return $var;
- case self::FLOAT :
- if ((is_string($var) && is_numeric($var)) || is_int($var)) $var = (float) $var;
+ case self::FLOAT:
+ if ((is_string($var) && is_numeric($var)) || is_int($var)) {
+ $var = (float)$var;
+ }
return $var;
- case self::BOOL :
+ case self::BOOL:
if (is_int($var) && ($var === 0 || $var === 1)) {
- $var = (bool) $var;
+ $var = (bool)$var;
} elseif (is_string($var)) {
if ($var == 'on' || $var == 'true' || $var == '1') {
$var = true;
@@ -39,48 +52,70 @@ class HTMLPurifier_VarParser_Flexible extends HTMLPurifier_VarParser
}
}
return $var;
- case self::ALIST :
- case self::HASH :
- case self::LOOKUP :
+ case self::ALIST:
+ case self::HASH:
+ case self::LOOKUP:
if (is_string($var)) {
// special case: technically, this is an array with
// a single empty string item, but having an empty
// array is more intuitive
- if ($var == '') return array();
+ if ($var == '') {
+ return array();
+ }
if (strpos($var, "\n") === false && strpos($var, "\r") === false) {
// simplistic string to array method that only works
// for simple lists of tag names or alphanumeric characters
- $var = explode(',',$var);
+ $var = explode(',', $var);
} else {
$var = preg_split('/(,|[\n\r]+)/', $var);
}
// remove spaces
- foreach ($var as $i => $j) $var[$i] = trim($j);
+ foreach ($var as $i => $j) {
+ $var[$i] = trim($j);
+ }
if ($type === self::HASH) {
// key:value,key2:value2
$nvar = array();
foreach ($var as $keypair) {
$c = explode(':', $keypair, 2);
- if (!isset($c[1])) continue;
- $nvar[$c[0]] = $c[1];
+ if (!isset($c[1])) {
+ continue;
+ }
+ $nvar[trim($c[0])] = trim($c[1]);
}
$var = $nvar;
}
}
- if (!is_array($var)) break;
+ if (!is_array($var)) {
+ break;
+ }
$keys = array_keys($var);
if ($keys === array_keys($keys)) {
- if ($type == self::ALIST) return $var;
- elseif ($type == self::LOOKUP) {
+ if ($type == self::ALIST) {
+ return $var;
+ } elseif ($type == self::LOOKUP) {
$new = array();
foreach ($var as $key) {
$new[$key] = true;
}
return $new;
- } else break;
+ } else {
+ break;
+ }
+ }
+ if ($type === self::ALIST) {
+ trigger_error("Array list did not have consecutive integer indexes", E_USER_WARNING);
+ return array_values($var);
}
if ($type === self::LOOKUP) {
foreach ($var as $key => $value) {
+ if ($value !== true) {
+ trigger_error(
+ "Lookup array has non-true value at key '$key'; " .
+ "maybe your input array was not indexed numerically",
+ E_USER_WARNING
+ );
+ }
$var[$key] = true;
}
}
@@ -90,7 +125,6 @@ class HTMLPurifier_VarParser_Flexible extends HTMLPurifier_VarParser
}
$this->errorGeneric($var, $type);
}
-
}
// vim: et sw=4 sts=4
diff --git a/library/HTMLPurifier/VarParser/Native.php b/library/HTMLPurifier/VarParser/Native.php
index b02a6de54..f11c318ef 100644
--- a/library/HTMLPurifier/VarParser/Native.php
+++ b/library/HTMLPurifier/VarParser/Native.php
@@ -8,11 +8,24 @@
class HTMLPurifier_VarParser_Native extends HTMLPurifier_VarParser
{
- protected function parseImplementation($var, $type, $allow_null) {
+ /**
+ * @param mixed $var
+ * @param int $type
+ * @param bool $allow_null
+ * @return null|string
+ */
+ protected function parseImplementation($var, $type, $allow_null)
+ {
return $this->evalExpression($var);
}
- protected function evalExpression($expr) {
+ /**
+ * @param string $expr
+ * @return mixed
+ * @throws HTMLPurifier_VarParserException
+ */
+ protected function evalExpression($expr)
+ {
$var = null;
$result = eval("\$var = $expr;");
if ($result === false) {
@@ -20,7 +33,6 @@ class HTMLPurifier_VarParser_Native extends HTMLPurifier_VarParser
}
return $var;
}
-
}
// vim: et sw=4 sts=4
diff --git a/library/HTMLPurifier/Zipper.php b/library/HTMLPurifier/Zipper.php
new file mode 100644
index 000000000..6e21ea070
--- /dev/null
+++ b/library/HTMLPurifier/Zipper.php
@@ -0,0 +1,157 @@
+<?php
+
+/**
+ * A zipper is a purely-functional data structure which contains
+ * a focus that can be efficiently manipulated. It is known as
+ * a "one-hole context". This mutable variant implements a zipper
+ * for a list as a pair of two arrays, laid out as follows:
+ *
+ * Base list: 1 2 3 4 [ ] 6 7 8 9
+ * Front list: 1 2 3 4
+ * Back list: 9 8 7 6
+ *
+ * User is expected to keep track of the "current element" and properly
+ * fill it back in as necessary. (ToDo: Maybe it's more user friendly
+ * to implicitly track the current element?)
+ *
+ * Nota bene: the current class gets confused if you try to store NULLs
+ * in the list.
+ */
+
+class HTMLPurifier_Zipper
+{
+ public $front, $back;
+
+ public function __construct($front, $back) {
+ $this->front = $front;
+ $this->back = $back;
+ }
+
+ /**
+ * Creates a zipper from an array, with a hole in the
+ * 0-index position.
+ * @param Array to zipper-ify.
+ * @return Tuple of zipper and element of first position.
+ */
+ static public function fromArray($array) {
+ $z = new self(array(), array_reverse($array));
+ $t = $z->delete(); // delete the "dummy hole"
+ return array($z, $t);
+ }
+
+ /**
+ * Convert zipper back into a normal array, optionally filling in
+ * the hole with a value. (Usually you should supply a $t, unless you
+ * are at the end of the array.)
+ */
+ public function toArray($t = NULL) {
+ $a = $this->front;
+ if ($t !== NULL) $a[] = $t;
+ for ($i = count($this->back)-1; $i >= 0; $i--) {
+ $a[] = $this->back[$i];
+ }
+ return $a;
+ }
+
+ /**
+ * Move hole to the next element.
+ * @param $t Element to fill hole with
+ * @return Original contents of new hole.
+ */
+ public function next($t) {
+ if ($t !== NULL) array_push($this->front, $t);
+ return empty($this->back) ? NULL : array_pop($this->back);
+ }
+
+ /**
+ * Iterated hole advancement.
+ * @param $t Element to fill hole with
+ * @param $i How many forward to advance hole
+ * @return Original contents of new hole, i away
+ */
+ public function advance($t, $n) {
+ for ($i = 0; $i < $n; $i++) {
+ $t = $this->next($t);
+ }
+ return $t;
+ }
+
+ /**
+ * Move hole to the previous element
+ * @param $t Element to fill hole with
+ * @return Original contents of new hole.
+ */
+ public function prev($t) {
+ if ($t !== NULL) array_push($this->back, $t);
+ return empty($this->front) ? NULL : array_pop($this->front);
+ }
+
+ /**
+ * Delete contents of current hole, shifting hole to
+ * next element.
+ * @return Original contents of new hole.
+ */
+ public function delete() {
+ return empty($this->back) ? NULL : array_pop($this->back);
+ }
+
+ /**
+ * Returns true if we are at the end of the list.
+ * @return bool
+ */
+ public function done() {
+ return empty($this->back);
+ }
+
+ /**
+ * Insert element before hole.
+ * @param Element to insert
+ */
+ public function insertBefore($t) {
+ if ($t !== NULL) array_push($this->front, $t);
+ }
+
+ /**
+ * Insert element after hole.
+ * @param Element to insert
+ */
+ public function insertAfter($t) {
+ if ($t !== NULL) array_push($this->back, $t);
+ }
+
+ /**
+ * Splice in multiple elements at hole. Functional specification
+ * in terms of array_splice:
+ *
+ * $arr1 = $arr;
+ * $old1 = array_splice($arr1, $i, $delete, $replacement);
+ *
+ * list($z, $t) = HTMLPurifier_Zipper::fromArray($arr);
+ * $t = $z->advance($t, $i);
+ * list($old2, $t) = $z->splice($t, $delete, $replacement);
+ * $arr2 = $z->toArray($t);
+ *
+ * assert($old1 === $old2);
+ * assert($arr1 === $arr2);
+ *
+ * NB: the absolute index location after this operation is
+ * *unchanged!*
+ *
+ * @param Current contents of hole.
+ */
+ public function splice($t, $delete, $replacement) {
+ // delete
+ $old = array();
+ $r = $t;
+ for ($i = $delete; $i > 0; $i--) {
+ $old[] = $r;
+ $r = $this->delete();
+ }
+ // insert
+ for ($i = count($replacement)-1; $i >= 0; $i--) {
+ $this->insertAfter($r);
+ $r = $replacement[$i];
+ }
+ return array($old, $r);
+ }
+}
diff --git a/library/Smarty/README b/library/Smarty/README
index 167462823..6367f030e 100644
--- a/library/Smarty/README
+++ b/library/Smarty/README
@@ -1,4 +1,4 @@
-Smarty 3.1.11
+Smarty 3.1.21
Author: Monte Ohrt <monte at ohrt dot com >
Author: Uwe Tews
@@ -120,7 +120,7 @@ $smarty->unregisterObject($object_name)
$smarty->unregisterFilter($type, $function_name)
$smarty->unregisterResource($resource_type)
-$smarty->compileAllTemplates($extention = '.tpl', $force_compile = false, $time_limit = 0, $max_errors = null)
+$smarty->compileAllTemplates($extension = '.tpl', $force_compile = false, $time_limit = 0, $max_errors = null)
$smarty->clearCompiledTemplate($resource_name = null, $compile_id = null, $exp_time = null)
$smarty->testInstall()
diff --git a/library/Smarty/SMARTY_3.1_NOTES.txt b/library/Smarty/SMARTY_3.1_NOTES.txt
index e56e56f67..57709f0d7 100644
--- a/library/Smarty/SMARTY_3.1_NOTES.txt
+++ b/library/Smarty/SMARTY_3.1_NOTES.txt
@@ -199,7 +199,7 @@ Relative paths are available with {include file="..."} and
$smarty->fetch('./foo.tpl') cannot be relative to a template, an
exception is thrown.
- Adressing a specific $template_dir
+ Addressing a specific $template_dir
Smarty 3.1 introduces the $template_dir index notation.
$smarty->fetch('[foo]bar.tpl') and {include file="[foo]bar.tpl"}
diff --git a/library/Smarty/change_log.txt b/library/Smarty/change_log.txt
index 27c506db6..a0161659d 100644
--- a/library/Smarty/change_log.txt
+++ b/library/Smarty/change_log.txt
@@ -1,5 +1,342 @@
-===== trunk =====
-===== Smarty-3.1.11 =====
+ ===== 3.1.22-dev ===== (xx.xx.2014)
+ ===== 3.1.21 ===== (18.10.2014)
+ 18.10.2014
+ - composer moved to github
+ - add COMPOSER_RELEASE_NOTES
+
+ 17.10.2014
+ - bugfix on $php_handling security and optimization of smarty_internal_parsetree (Thue Kristensen)
+
+ 16.10.2014
+ - bugfix composer.json update
+
+ 15.10.2014
+ - bugfix calling a new created cache file with fetch() and Smarty::CACHING_LIFETIME_SAVED multiple times did fail (forum 22350)
+
+ 14.10.2014
+ - bugfix any tag placed within "<script language=php>" will throw a security exception to close all thinkable holes
+ - bugfix classmap in root composer.json should start at "libs/..."
+ - improvement cache is_file(file_exists) results of loadPlugin() to avoid unnecessary calls during compilation (Issue 201}
+
+ 12.10.2014
+ - bugfix a comment like "<script{*foo*} language=php>" bypassed $php_handling checking (Thue Kristensen)
+ - bugfix change of 08.10.2014 could create E_NOTICE meassage when using "<?php" tags
+ - bugfix "<script language=php>" with $php_handling PHP_PASSTHRU was executed in {nocache} sections
+
+ ===== 3.1.20 ===== (09.10.2014)
+ 08.10.2014
+ - bugfix security mode of "<script language=php>" must be controlled by $php_handling property (Thue Kristensen)
+
+ 01.10.2014
+ - bugfix template resource of inheritance blocks could get invalid if the default resource type is not 'file'(Issue 202)
+ - bugfix existing child {block} tag must override parent {block} tag append / prepend setting (topic 25259)
+
+ 02.08.2014
+ - bugfix modifier wordwrap did output break string wrong if first word was exceeding length with cut = true (topic 25193)
+
+ 24.07.2014
+ - bugfix cache clear when cache folder does not exist
+
+ 16.07.2014
+ - enhancement remove BOM automatically from template source (topic 25161)
+
+ 04.07.2014
+ - bugfix the bufix of 02.06.2014 broke correct handling of child templates with same name but different template folders in extends resource (issue 194 and topic 25099)
+
+ ===== 3.1.19 ===== (06.30.2014)
+ 20.06.2014
+ - bugfix template variables could not be passed as parameter in {include} when the include was in a {nocache} section (topic 25131)
+
+ 17.06.2014
+ - bugfix large template text of some charsets could cause parsing errors (topic 24630)
+
+ 08.06.2014
+ - bugfix registered objects did not work after spelling fixes of 06.06.2014
+ - bugfix {block} tags within {literal} .. {/literal} got not displayed correctly (topic 25024)
+ - bugfix UNC WINDOWS PATH like "\\psf\path\to\dir" did not work as template directory (Issue 192)
+ - bugfix {html_image} security check did fail on files relative to basedir (Issue 191)
+
+ 06.06.2014
+ - fixed PHPUnit outputFilterTrimWhitespaceTests.php assertion of test result
+ - fixed spelling, PHPDoc , minor errors, code cleanup
+
+ 02.06.2014
+ - using multiple cwd with relative template dirs could result in identical compiled file names. (issue 194 and topic 25099)
+
+ 19.04.2014
+ - bugfix calling createTemplate(template, data) with empty data array caused notice of array to string conversion (Issue 189)
+ - bugfix clearCompiledTemplate() did not delete files on WINDOWS when a compile_id was specified
+
+ 18.04.2014
+ - revert bugfix of 5.4.2014 because %-e date format is not supported on all operating systems
+
+ ===== 3.1.18 ===== (07.04.2014)
+ 06.04.2014
+ - bugfix template inheritance fail when using custom resource after patch of 8.3.2014 (Issue 187)
+ - bugfix update of composer file (Issue 168 and 184)
+
+ 05.04.2014
+ - bugfix default date format leads to extra spaces when displaying dates with single digit days (Issue 165)
+
+ 26.03.2014
+ - bugfix Smart_Resource_Custom should not lowercase the resource name (Issue 183)
+
+ 24.03.2014
+ - bugfix using a {foreach} property like @iteration could fail when used in inheritance parent templates (Issue 182)
+
+ 20.03.2014
+ - bugfix $smarty->auto_literal and mbsting.func_overload 2, 6 or 7 did fail (forum topic 24899)
+
+ 18.03.2014
+ - revert change of 17.03.2014
+
+17.03.2014
+ - bugfix $smarty->auto_literal and mbsting.func_overload 2, 6 or 7 did fail (forum topic 24899)
+
+ 15.03.2014
+ - bugfix Smarty_CacheResource_Keyvaluestore did use different keys on read/writes and clearCache() calls (Issue 169)
+
+ 13.03.2014
+ - bugfix clearXxx() change of 27.1.2014 did not work when specifing cache_id or compile_id (forum topic 24868 and 24867)
+
+ ===== 3.1.17 =====
+ 08.03.2014
+ - bugfix relative file path {include} within {block} of child templates did throw exception on first call (Issue 177)
+
+ 17.02.2014
+ - bugfix Smarty failed when executing PHP on HHVM (Hip Hop 2.4) because uniqid('',true) does return string with ',' (forum topic 20343)
+
+ 16.02.2014
+ - bugfix a '//' or '\\' in template_dir path could produce wrong path on relative filepath in {include} (Issue 175)
+
+ 05.02.2014
+ - bugfix shared.literal_compiler_param.php did throw an exception when literal did contain a '-' (smarty-developers group)
+
+ 27.01.2014
+ - bugfix $smarty->debugging = true; did show the variable of the $smarty object not the variables used in display() call (forum topic 24764)
+ - bugfix clearCompiledTemplate(), clearAll() and clear() should use realpath to avoid possible exception from RecursiveDirectoryIterator (Issue 171)
+
+ 26.01.2014
+ - bugfix undo block nesting checks for {nocache} for reasons like forum topic 23280 (forum topic 24762)
+
+ 18.01.2014
+ - bugfix the compiler did fail when using template inheritance and recursive {include} (smarty-developers group)
+
+ 11.01.2014
+ - bugfix "* }" (spaces before right delimiter) was interpreted by mistake as comment end tag (Issue 170)
+ - internals content cache should be clear when updating cache file
+
+ 08.01.2014
+ - bugfix Smarty_CacheResource_Custom did not handle template resource type specifications on clearCache() calls (Issue 169)
+ - bugfix SmartyBC.class.php should use require_once to load Smarty.class.php (forum topic 24683)
+
+ ===== 3.1.16 =====
+ 15.12.2013
+ - bugfix {include} with {block} tag handling (forum topic 24599, 24594, 24682) (Issue 161)
+ Read 3.1.16_RELEASE_NOTES for more details
+ - enhancement additional debug output at $smarty->_parserdebug = true;
+
+ 07.11.2013
+ - bugfix too restrictive handling of {include} within {block} tags. 3.1.15 did throw errors where 3.1.14 did not (forum topic 24599)
+ - bugfix compiler could fail if PHP mbstring.func_overload is enabled (Issue 164)
+
+ 28.10.2013
+ - bugfix variable resource name at custom resource plugin did not work within {block} tags (Issue 163)
+ - bugfix notice "Trying to get property of non-object" removed (Issue 163)
+ - bugfix correction of modifier capitalize fix from 3.10.2013 (issue 159)
+ - bugfix multiple {block}s with same name in parent did not work (forum topic 24631)
+
+ 20.10.2013
+ - bugfix a variable file name at {extends} tag did fail (forum topic 24618)
+
+ 14.10.2013
+ - bugfix yesterdays fix could result in an undefined variable
+
+ 13.10.2013
+ - bugfix variable names on {include} in template inheritance did unextepted error message (forum topic 24594) (Issue 161)
+.- bugfix relative includes with same name like {include './foo.tpl'} from different folder failed (forum topic 24590)(Issue 161)
+
+ 04.10.2013
+ - bugfix variable file names at {extends} had been disbabled by mistake with the rewrite of
+ template inheritance of 24.08.2013 (forum topic 24585)
+
+03.10.2013
+ - bugfix loops using modifier capitalize did eat up memory (issue 159)
+
+ ===== Smarty 3.1.15 =====
+01.10.2013
+ - use current delimiters in compiler error messages (issue 157)
+ - improvement on performance when using error handler and multiple template folders (issue 152)
+
+17.09.2013
+ - improvement added patch for additional SmartyCompilerException properties for better access to scource information (forum topic 24559)
+
+16.09.2013
+ - bugfix recompiled templates did not show on first request with zend opcache cache (forum topic 24320)
+
+13.09.2013
+ - bugfix html_select_time defaulting error for the Meridian dropdown (forum topic 24549)
+
+09.09.2012
+- bugfix incorrect compiled code with array(object,method) callback at registered Variable Filter (forum topic 24542)
+
+27.08.2013
+- bugfix delimiter followed by linebreak did not work as auto literal after update from 24.08.2013 (forum topic 24518)
+
+24.08.2013
+- bugfix and enhancement
+ Because several recent problems with template inheritance the {block} tag compiler has been rewriten
+ - Error messages shown now the correct child template file and line number
+ - The compiler could fail on some larger UTF-8 text block (forum topic 24455)
+ - The {strip} tag can now be placed outside {block} tags in child templates (forum topic 24289)
+- change SmartyException::$escape is now false by default
+- change PHP traceback has been remove for SmartyException and SmartyCompilerException
+
+14.08.2013
+- bugfix compiled filepath of config file did not observe different config_dir (forum topic 24493)
+
+13.08.2013
+- bugfix the internal resource cache did not observe config_dir changes (forum topic 24493)
+
+12.08.2013
+- bugfix internal $tmpx variables must be unique over all inheritance templates (Issue 149)
+
+10.08.2013
+- bugfix a newline was eaten when a <?xml ... ?> was passed by a Smarty variable and caching was enabled (forum topic 24482)
+
+29.07.2013
+- bugfix headers already send warning thrown when using 'SMARTY_DEBUG=on' from URL (Issue 148)
+
+27.07.2013
+- enhancement allow access to properties of registered opjects for Smarty2 BC (forum topic 24344)
+
+26.07.2013
+- bugfix template inheritance nesting problem (forum topic 24387)
+
+15.7.2013
+- update code generated by PSR-2 standards fixer which introduced PHP 5.4 incompatibilities of 14.7.2013
+
+14.7.2013
+- bugfix increase of internal maximum parser stacksize to allow more complex tag code {forum topic 24426}
+- update for PHP 5.4 compatibility
+- reformat source to PSR-2 standard
+
+12.7.2013
+- bugfix Do not remove '//' from file path at normalization (Issue 142)
+
+2.7.2013
+- bugfix trimwhitespace would replace captured items in wrong order (forum topic 24387)
+
+===== Smarty-3.1.14 =====
+27.06.2013
+- bugfix removed PHP 5.5 deprecated preg_replace /e option in modifier capitalize (forum topic 24389)
+
+17.06.2013
+- fixed spelling in sources and documentation (from smarty-developers forum Veres Lajos)
+- enhancement added constant SMARTY::CLEAR_EXPIRED for the change of 26.05.2013 (forum topic 24310)
+- bugfix added smarty_security.php to composer.json (Issue 135)
+
+26.05.2013
+- enhancement an expire_time of -1 in clearCache() and clearAllCache() will delete outdated cache files
+ by their individual cache_lifetime used at creation (forum topic 24310)
+
+21.05.2013
+- bugfix modifier strip_tags:true was compiled into wrong code (Forum Topic 24287)
+- bugfix /n after ?> in Smarty.class.php did start output buffering (Issue 138)
+
+25.04.2013
+- bugfix escape and wordrap modifier could be compiled into wrong code when used in {nocache}{/nocache}
+ section but caching is disabled (Forum Topic 24260)
+
+05.04.2013
+- bugfix post filter must not run when compiling inheritance child blocks (Forum Topic 24094)
+- bugfix after the fix for Issue #130 compiler exceptions got double escaped (Forum Topic 24199)
+
+28.02.2013
+- bugfix nocache blocks could be lost when using CACHING_LIFETIME_SAVED (Issue #133)
+- bugfix Compile ID gets nulled when compiling child blocks (Issue #134)
+
+
+24.01.2013
+- bugfix wrong tag type in smarty_internal_templatecompilerbase.php could cause wrong plugin search order (Forum Topic 24028)
+
+===== Smarty-3.1.13 =====
+13.01.2013
+- enhancement allow to disable exception message escaping by SmartyException::$escape = false; (Issue #130)
+
+09.01.2013
+- bugfix compilation did fail when a prefilter did modify an {extends} tag c
+- bugfix template inheritance could fail if nested {block} tags in childs did contain {$smarty.block.child} (Issue #127)
+- bugfix template inheritance could fail if {block} tags in childs did have similar name as used plugins (Issue #128)
+- added abstract method declaration doCompile() in Smarty_Internal_TemplateCompilerBase (Forum Topic 23969)
+
+06.01.2013
+- Allow '://' URL syntax in template names of stream resources (Issue #129)
+
+27.11.2012
+- bugfix wrong variable usage in smarty_internal_utility.php (Issue #125)
+
+26.11.2012
+- bugfix global variable assigned within template function are not seen after template function exit (Forum Topic 23800)
+
+24.11.2012
+- made SmartyBC loadable via composer (Issue #124)
+
+20.11.2012
+- bugfix assignGlobal() called from plugins did not work (Forum Topic 23771)
+
+13.11.2012
+- adding attribute "strict" to html_options, html_checkboxes, html_radios to only print disabled/readonly attributes if their values are true or "disabled"/"readonly" (Issue #120)
+
+01.11.2012
+- bugfix muteExcpetedErrors() would screw up for non-readable paths (Issue #118)
+
+===== Smarty-3.1.12 =====
+14.09.2012
+- bugfix template inheritance failed to compile with delimiters {/ and /} (Forum Topic 23008)
+
+11.09.2012
+- bugfix escape Smarty exception messages to avoid possible script execution
+
+10.09.2012
+- bugfix tag option flags and shorttag attributes did not work when rdel started with '=' (Forum Topic 22979)
+
+31.08.2012
+- bugfix resolving relative paths broke in some circumstances (Issue #114)
+
+22.08.2012
+- bugfix test MBString availability through mb_split, as it could've been compiled without regex support (--enable-mbregex).
+ Either we get MBstring's full package, or we pretend it's not there at all.
+
+21.08.2012
+- bugfix $auto_literal = false did not work with { block} tags in child templates
+ (problem was reintroduced after fix in 3.1.7)(Forum Topic 20581)
+
+17.08.2012
+- bugfix compiled code of nocache sections could contain wrong escaping (Forum Topic 22810)
+
+15.08.2012
+- bugfix template inheritance did produce wrong code if subtemplates with {block} was
+ included several times (from smarty-developers forum)
+
+14.08.2012
+- bugfix PHP5.2 compatibility compromised by SplFileInfo::getBasename() (Issue 110)
+
+01.08.2012
+- bugfix avoid PHP error on $smarty->configLoad(...) with invalid section specification (Forum Topic 22608)
+
+30.07.2012
+-bugfix {assign} in a nocache section should not overwrite existing variable values
+ during compilation (issue 109)
+
+28.07.2012
+- bugfix array access of config variables did not work (Forum Topic 22527)
+
+19.07.2012
+- bugfix the default plugin handler did create wrong compiled code for static class methods
+ from external script files (issue 108)
+
+===== Smarty-3.1.11 =====
30.06.2012
- bugfix {block.. hide} did not work as nested child (Forum Topic 22216)
@@ -342,7 +679,7 @@
03/09/2011
- bugfix createTemplate() must default to cache_id and compile_id of Smarty object
- bugfix Smarty_CacheResource_KeyValueStore must include $source->uid in cache filepath to keep templates with same
- name but different folders seperated
+ name but different folders separated
- added cacheresource.apc.php example in demo folder
02/09/2011
@@ -533,7 +870,7 @@
- changed ./ and ../ behaviour
14/02/2011
-- added {block ... hide} option to supress block if no child is defined
+- added {block ... hide} option to suppress block if no child is defined
13/02/2011
- update handling of recursive subtemplate calls
@@ -647,7 +984,7 @@
- bugfix on compiler object destruction. compiler_object property was by mistake unset.
09/03/2011
--bugfix a variable filter should run before modifers on an output tag (see change of 23/07/2010)
+-bugfix a variable filter should run before modifiers on an output tag (see change of 23/07/2010)
08/03/2011
- bugfix loading config file without section should load only defaults
@@ -951,10 +1288,10 @@ request_use_auto_globals
- bugfix passing scope attributes in doublequoted strings did not work at {include} {assign} and {append}
25/07/2010
-- another bugfix of change from 23/07/2010 when compiling modifer
+- another bugfix of change from 23/07/2010 when compiling modifier
24/07/2010
-- bugfix of change from 23/07/2010 when compiling modifer
+- bugfix of change from 23/07/2010 when compiling modifier
23/07/2010
- changed execution order. A variable filter does now run before modifiers on output of variables
@@ -1261,7 +1598,7 @@ request_use_auto_globals
- bugfix on {if} tags
01/12/2010
-- changed back modifer handling in parser. Some restrictions still apply:
+- changed back modifier handling in parser. Some restrictions still apply:
if modifiers are used in side {if...} expression or in mathematical expressions
parentheses must be used.
- bugfix the {function..} tag did not accept the name attribute in double quotes
@@ -1873,7 +2210,7 @@ NOTICE: existing compiled template and cache files must be deleted
- fixed exceptions in function plugins
- fixed notice error in Smarty.class.php
- allow chained objects to span multiple lines
-- fixed error in modifers
+- fixed error in modifiers
03/20/2009
- moved /plugins folder into /libs folder
@@ -1881,7 +2218,7 @@ NOTICE: existing compiled template and cache files must be deleted
- autoappend a directory separator if the xxxxx_dir definition have no trailing one
03/19/2009
-- allow array definition as modifer parameter
+- allow array definition as modifier parameter
- changed modifier to use multi byte string funktions.
03/17/2009
diff --git a/library/Smarty/demo/index.php b/library/Smarty/demo/index.php
index 74c8e8971..33f3035c5 100644
--- a/library/Smarty/demo/index.php
+++ b/library/Smarty/demo/index.php
@@ -1,33 +1,30 @@
<?php
- /**
+/**
* Example Application
-
+ *
* @package Example-application
*/
-require('../libs/Smarty.class.php');
+require '../libs/Smarty.class.php';
$smarty = new Smarty;
-
-
//$smarty->force_compile = true;
$smarty->debugging = true;
$smarty->caching = true;
$smarty->cache_lifetime = 120;
-$smarty->assign("Name","Fred Irving Johnathan Bradley Peppergill",true);
-$smarty->assign("FirstName",array("John","Mary","James","Henry"));
-$smarty->assign("LastName",array("Doe","Smith","Johnson","Case"));
-$smarty->assign("Class",array(array("A","B","C","D"), array("E", "F", "G", "H"),
- array("I", "J", "K", "L"), array("M", "N", "O", "P")));
+$smarty->assign("Name", "Fred Irving Johnathan Bradley Peppergill", true);
+$smarty->assign("FirstName", array("John", "Mary", "James", "Henry"));
+$smarty->assign("LastName", array("Doe", "Smith", "Johnson", "Case"));
+$smarty->assign("Class", array(array("A", "B", "C", "D"), array("E", "F", "G", "H"),
+ array("I", "J", "K", "L"), array("M", "N", "O", "P")));
$smarty->assign("contacts", array(array("phone" => "1", "fax" => "2", "cell" => "3"),
- array("phone" => "555-4444", "fax" => "555-3333", "cell" => "760-1234")));
+ array("phone" => "555-4444", "fax" => "555-3333", "cell" => "760-1234")));
-$smarty->assign("option_values", array("NY","NE","KS","IA","OK","TX"));
-$smarty->assign("option_output", array("New York","Nebraska","Kansas","Iowa","Oklahoma","Texas"));
+$smarty->assign("option_values", array("NY", "NE", "KS", "IA", "OK", "TX"));
+$smarty->assign("option_output", array("New York", "Nebraska", "Kansas", "Iowa", "Oklahoma", "Texas"));
$smarty->assign("option_selected", "NE");
$smarty->display('index.tpl');
-?>
diff --git a/library/Smarty/demo/plugins/cacheresource.apc.php b/library/Smarty/demo/plugins/cacheresource.apc.php
index 00ba59817..d7336f2bf 100644
--- a/library/Smarty/demo/plugins/cacheresource.apc.php
+++ b/library/Smarty/demo/plugins/cacheresource.apc.php
@@ -2,19 +2,19 @@
/**
* APC CacheResource
- *
* CacheResource Implementation based on the KeyValueStore API to use
* memcache as the storage resource for Smarty's output caching.
* *
+ *
* @package CacheResource-examples
- * @author Uwe Tews
+ * @author Uwe Tews
*/
-class Smarty_CacheResource_Apc extends Smarty_CacheResource_KeyValueStore {
-
+class Smarty_CacheResource_Apc extends Smarty_CacheResource_KeyValueStore
+{
public function __construct()
{
// test if APC is present
- if(!function_exists('apc_cache_info')) {
+ if (!function_exists('apc_cache_info')) {
throw new Exception('APC Template Caching Error: APC is not installed');
}
}
@@ -22,8 +22,9 @@ class Smarty_CacheResource_Apc extends Smarty_CacheResource_KeyValueStore {
/**
* Read values for a set of keys from cache
*
- * @param array $keys list of keys to fetch
- * @return array list of values with the given keys used as indexes
+ * @param array $keys list of keys to fetch
+ *
+ * @return array list of values with the given keys used as indexes
* @return boolean true on success, false on failure
*/
protected function read(array $keys)
@@ -33,28 +34,32 @@ class Smarty_CacheResource_Apc extends Smarty_CacheResource_KeyValueStore {
foreach ($res as $k => $v) {
$_res[$k] = $v;
}
+
return $_res;
}
/**
* Save values for a set of keys to cache
*
- * @param array $keys list of values to save
- * @param int $expire expiration time
+ * @param array $keys list of values to save
+ * @param int $expire expiration time
+ *
* @return boolean true on success, false on failure
*/
- protected function write(array $keys, $expire=null)
+ protected function write(array $keys, $expire = null)
{
foreach ($keys as $k => $v) {
apc_store($k, $v, $expire);
}
+
return true;
}
/**
* Remove values from cache
*
- * @param array $keys list of keys to delete
+ * @param array $keys list of keys to delete
+ *
* @return boolean true on success, false on failure
*/
protected function delete(array $keys)
@@ -62,6 +67,7 @@ class Smarty_CacheResource_Apc extends Smarty_CacheResource_KeyValueStore {
foreach ($keys as $k) {
apc_delete($k);
}
+
return true;
}
diff --git a/library/Smarty/demo/plugins/cacheresource.memcache.php b/library/Smarty/demo/plugins/cacheresource.memcache.php
index 230607d69..e265365fb 100644
--- a/library/Smarty/demo/plugins/cacheresource.memcache.php
+++ b/library/Smarty/demo/plugins/cacheresource.memcache.php
@@ -2,34 +2,35 @@
/**
* Memcache CacheResource
- *
* CacheResource Implementation based on the KeyValueStore API to use
* memcache as the storage resource for Smarty's output caching.
- *
* Note that memcache has a limitation of 256 characters per cache-key.
* To avoid complications all cache-keys are translated to a sha1 hash.
*
* @package CacheResource-examples
- * @author Rodney Rehm
+ * @author Rodney Rehm
*/
-class Smarty_CacheResource_Memcache extends Smarty_CacheResource_KeyValueStore {
+class Smarty_CacheResource_Memcache extends Smarty_CacheResource_KeyValueStore
+{
/**
* memcache instance
+ *
* @var Memcache
*/
protected $memcache = null;
-
+
public function __construct()
{
$this->memcache = new Memcache();
- $this->memcache->addServer( '127.0.0.1', 11211 );
+ $this->memcache->addServer('127.0.0.1', 11211);
}
-
+
/**
* Read values for a set of keys from cache
*
- * @param array $keys list of keys to fetch
- * @return array list of values with the given keys used as indexes
+ * @param array $keys list of keys to fetch
+ *
+ * @return array list of values with the given keys used as indexes
* @return boolean true on success, false on failure
*/
protected function read(array $keys)
@@ -45,29 +46,33 @@ class Smarty_CacheResource_Memcache extends Smarty_CacheResource_KeyValueStore {
foreach ($res as $k => $v) {
$_res[$lookup[$k]] = $v;
}
+
return $_res;
}
-
+
/**
* Save values for a set of keys to cache
*
- * @param array $keys list of values to save
- * @param int $expire expiration time
+ * @param array $keys list of values to save
+ * @param int $expire expiration time
+ *
* @return boolean true on success, false on failure
*/
- protected function write(array $keys, $expire=null)
+ protected function write(array $keys, $expire = null)
{
foreach ($keys as $k => $v) {
$k = sha1($k);
$this->memcache->set($k, $v, 0, $expire);
}
+
return true;
}
/**
* Remove values from cache
*
- * @param array $keys list of keys to delete
+ * @param array $keys list of keys to delete
+ *
* @return boolean true on success, false on failure
*/
protected function delete(array $keys)
@@ -76,6 +81,7 @@ class Smarty_CacheResource_Memcache extends Smarty_CacheResource_KeyValueStore {
$k = sha1($k);
$this->memcache->delete($k);
}
+
return true;
}
@@ -86,6 +92,6 @@ class Smarty_CacheResource_Memcache extends Smarty_CacheResource_KeyValueStore {
*/
protected function purge()
{
- return $this->memcache->flush();
+ $this->memcache->flush();
}
}
diff --git a/library/Smarty/demo/plugins/cacheresource.mysql.php b/library/Smarty/demo/plugins/cacheresource.mysql.php
index ab8c47516..d8d00ab26 100644
--- a/library/Smarty/demo/plugins/cacheresource.mysql.php
+++ b/library/Smarty/demo/plugins/cacheresource.mysql.php
@@ -2,10 +2,8 @@
/**
* MySQL CacheResource
- *
* CacheResource Implementation based on the Custom API to use
* MySQL as the storage resource for Smarty's output caching.
- *
* Table definition:
* <pre>CREATE TABLE IF NOT EXISTS `output_cache` (
* `id` CHAR(40) NOT NULL COMMENT 'sha1 hash',
@@ -22,19 +20,22 @@
* ) ENGINE = InnoDB;</pre>
*
* @package CacheResource-examples
- * @author Rodney Rehm
+ * @author Rodney Rehm
*/
-class Smarty_CacheResource_Mysql extends Smarty_CacheResource_Custom {
+class Smarty_CacheResource_Mysql extends Smarty_CacheResource_Custom
+{
// PDO instance
protected $db;
protected $fetch;
protected $fetchTimestamp;
protected $save;
-
- public function __construct() {
+
+ public function __construct()
+ {
try {
- $this->db = new PDO("mysql:dbname=test;host=127.0.0.1", "smarty", "smarty");
- } catch (PDOException $e) {
+ $this->db = new PDO("mysql:dbname=test;host=127.0.0.1", "smarty");
+ }
+ catch (PDOException $e) {
throw new SmartyException('Mysql Resource failed: ' . $e->getMessage());
}
$this->fetch = $this->db->prepare('SELECT modified, content FROM output_cache WHERE id = :id');
@@ -46,19 +47,20 @@ class Smarty_CacheResource_Mysql extends Smarty_CacheResource_Custom {
/**
* fetch cached content and its modification time from data source
*
- * @param string $id unique cache content identifier
- * @param string $name template name
- * @param string $cache_id cache id
- * @param string $compile_id compile id
- * @param string $content cached content
- * @param integer $mtime cache modification timestamp (epoch)
+ * @param string $id unique cache content identifier
+ * @param string $name template name
+ * @param string $cache_id cache id
+ * @param string $compile_id compile id
+ * @param string $content cached content
+ * @param integer $mtime cache modification timestamp (epoch)
+ *
* @return void
*/
protected function fetch($id, $name, $cache_id, $compile_id, &$content, &$mtime)
{
$this->fetch->execute(array('id' => $id));
$row = $this->fetch->fetch();
- $this->fetch->closeCursor();
+ $this->fetch->closeCursor();
if ($row) {
$content = $row['content'];
$mtime = strtotime($row['modified']);
@@ -67,15 +69,17 @@ class Smarty_CacheResource_Mysql extends Smarty_CacheResource_Custom {
$mtime = null;
}
}
-
+
/**
* Fetch cached content's modification timestamp from data source
*
* @note implementing this method is optional. Only implement it if modification times can be accessed faster than loading the complete cached content.
- * @param string $id unique cache content identifier
- * @param string $name template name
- * @param string $cache_id cache id
- * @param string $compile_id compile id
+ *
+ * @param string $id unique cache content identifier
+ * @param string $name template name
+ * @param string $cache_id cache id
+ * @param string $compile_id compile id
+ *
* @return integer|boolean timestamp (epoch) the template was modified, or false if not found
*/
protected function fetchTimestamp($id, $name, $cache_id, $compile_id)
@@ -83,40 +87,44 @@ class Smarty_CacheResource_Mysql extends Smarty_CacheResource_Custom {
$this->fetchTimestamp->execute(array('id' => $id));
$mtime = strtotime($this->fetchTimestamp->fetchColumn());
$this->fetchTimestamp->closeCursor();
+
return $mtime;
}
-
+
/**
* Save content to cache
*
- * @param string $id unique cache content identifier
- * @param string $name template name
- * @param string $cache_id cache id
- * @param string $compile_id compile id
- * @param integer|null $exp_time seconds till expiration time in seconds or null
- * @param string $content content to cache
- * @return boolean success
+ * @param string $id unique cache content identifier
+ * @param string $name template name
+ * @param string $cache_id cache id
+ * @param string $compile_id compile id
+ * @param integer|null $exp_time seconds till expiration time in seconds or null
+ * @param string $content content to cache
+ *
+ * @return boolean success
*/
protected function save($id, $name, $cache_id, $compile_id, $exp_time, $content)
{
$this->save->execute(array(
- 'id' => $id,
- 'name' => $name,
- 'cache_id' => $cache_id,
- 'compile_id' => $compile_id,
- 'content' => $content,
- ));
+ 'id' => $id,
+ 'name' => $name,
+ 'cache_id' => $cache_id,
+ 'compile_id' => $compile_id,
+ 'content' => $content,
+ ));
+
return !!$this->save->rowCount();
}
-
+
/**
* Delete content from cache
*
- * @param string $name template name
- * @param string $cache_id cache id
- * @param string $compile_id compile id
- * @param integer|null $exp_time seconds till expiration or null
- * @return integer number of deleted caches
+ * @param string $name template name
+ * @param string $cache_id cache id
+ * @param string $compile_id compile id
+ * @param integer|null $exp_time seconds till expiration or null
+ *
+ * @return integer number of deleted caches
*/
protected function delete($name, $cache_id, $compile_id, $exp_time)
{
@@ -124,7 +132,8 @@ class Smarty_CacheResource_Mysql extends Smarty_CacheResource_Custom {
if ($name === null && $cache_id === null && $compile_id === null && $exp_time === null) {
// returning the number of deleted caches would require a second query to count them
$query = $this->db->query('TRUNCATE TABLE output_cache');
- return -1;
+
+ return - 1;
}
// build the filter
$where = array();
@@ -142,11 +151,12 @@ class Smarty_CacheResource_Mysql extends Smarty_CacheResource_Custom {
}
// equal test cache_id and match sub-groups
if ($cache_id !== null) {
- $where[] = '(cache_id = '. $this->db->quote($cache_id)
- . ' OR cache_id LIKE '. $this->db->quote($cache_id .'|%') .')';
+ $where[] = '(cache_id = ' . $this->db->quote($cache_id)
+ . ' OR cache_id LIKE ' . $this->db->quote($cache_id . '|%') . ')';
}
// run delete query
$query = $this->db->query('DELETE FROM output_cache WHERE ' . join(' AND ', $where));
+
return $query->rowCount();
}
}
diff --git a/library/Smarty/demo/plugins/resource.extendsall.php b/library/Smarty/demo/plugins/resource.extendsall.php
index d8c40b5ba..500b3c862 100644
--- a/library/Smarty/demo/plugins/resource.extendsall.php
+++ b/library/Smarty/demo/plugins/resource.extendsall.php
@@ -2,49 +2,51 @@
/**
* Extends All Resource
- *
* Resource Implementation modifying the extends-Resource to walk
* through the template_dirs and inherit all templates of the same name
- *
+ *
* @package Resource-examples
- * @author Rodney Rehm
+ * @author Rodney Rehm
*/
-class Smarty_Resource_Extendsall extends Smarty_Internal_Resource_Extends {
-
+class Smarty_Resource_Extendsall extends Smarty_Internal_Resource_Extends
+{
/**
* populate Source Object with meta data from Resource
*
- * @param Smarty_Template_Source $source source object
- * @param Smarty_Internal_Template $_template template object
+ * @param Smarty_Template_Source $source source object
+ * @param Smarty_Internal_Template $_template template object
+ *
* @return void
*/
- public function populate(Smarty_Template_Source $source, Smarty_Internal_Template $_template=null)
+ public function populate(Smarty_Template_Source $source, Smarty_Internal_Template $_template = null)
{
$uid = '';
$sources = array();
$exists = true;
foreach ($_template->smarty->getTemplateDir() as $key => $directory) {
try {
- $s = Smarty_Resource::source(null, $source->smarty, '[' . $key . ']' . $source->name );
+ $s = Smarty_Resource::source(null, $source->smarty, '[' . $key . ']' . $source->name);
if (!$s->exists) {
continue;
}
$sources[$s->uid] = $s;
$uid .= $s->filepath;
}
- catch (SmartyException $e) {}
+ catch (SmartyException $e) {
+ }
}
-
+
if (!$sources) {
$source->exists = false;
$source->template = $_template;
+
return;
}
-
+
$sources = array_reverse($sources, true);
reset($sources);
$s = current($sources);
-
+
$source->components = $sources;
$source->filepath = $s->filepath;
$source->uid = sha1($uid);
@@ -55,6 +57,4 @@ class Smarty_Resource_Extendsall extends Smarty_Internal_Resource_Extends {
// need the template at getContent()
$source->template = $_template;
}
-}
-
-?> \ No newline at end of file
+}
diff --git a/library/Smarty/demo/plugins/resource.mysql.php b/library/Smarty/demo/plugins/resource.mysql.php
index 312f3fc73..dfc9606b4 100644
--- a/library/Smarty/demo/plugins/resource.mysql.php
+++ b/library/Smarty/demo/plugins/resource.mysql.php
@@ -2,10 +2,8 @@
/**
* MySQL Resource
- *
* Resource Implementation based on the Custom API to use
* MySQL as the storage resource for Smarty's templates and configs.
- *
* Table definition:
* <pre>CREATE TABLE IF NOT EXISTS `templates` (
* `name` varchar(100) NOT NULL,
@@ -13,14 +11,14 @@
* `source` text,
* PRIMARY KEY (`name`)
* ) ENGINE=InnoDB DEFAULT CHARSET=utf8;</pre>
- *
* Demo data:
* <pre>INSERT INTO `templates` (`name`, `modified`, `source`) VALUES ('test.tpl', "2010-12-25 22:00:00", '{$x="hello world"}{$x}');</pre>
*
* @package Resource-examples
- * @author Rodney Rehm
+ * @author Rodney Rehm
*/
-class Smarty_Resource_Mysql extends Smarty_Resource_Custom {
+class Smarty_Resource_Mysql extends Smarty_Resource_Custom
+{
// PDO instance
protected $db;
// prepared fetch() statement
@@ -28,22 +26,25 @@ class Smarty_Resource_Mysql extends Smarty_Resource_Custom {
// prepared fetchTimestamp() statement
protected $mtime;
- public function __construct() {
+ public function __construct()
+ {
try {
- $this->db = new PDO("mysql:dbname=test;host=127.0.0.1", "smarty", "smarty");
- } catch (PDOException $e) {
+ $this->db = new PDO("mysql:dbname=test;host=127.0.0.1", "smarty");
+ }
+ catch (PDOException $e) {
throw new SmartyException('Mysql Resource failed: ' . $e->getMessage());
}
$this->fetch = $this->db->prepare('SELECT modified, source FROM templates WHERE name = :name');
$this->mtime = $this->db->prepare('SELECT modified FROM templates WHERE name = :name');
}
-
+
/**
* Fetch a template and its modification time from database
*
- * @param string $name template name
- * @param string $source template source
- * @param integer $mtime template modification timestamp (epoch)
+ * @param string $name template name
+ * @param string $source template source
+ * @param integer $mtime template modification timestamp (epoch)
+ *
* @return void
*/
protected function fetch($name, &$source, &$mtime)
@@ -59,18 +60,22 @@ class Smarty_Resource_Mysql extends Smarty_Resource_Custom {
$mtime = null;
}
}
-
+
/**
* Fetch a template's modification time from database
*
* @note implementing this method is optional. Only implement it if modification times can be accessed faster than loading the comple template source.
- * @param string $name template name
+ *
+ * @param string $name template name
+ *
* @return integer timestamp (epoch) the template was modified
*/
- protected function fetchTimestamp($name) {
+ protected function fetchTimestamp($name)
+ {
$this->mtime->execute(array('name' => $name));
$mtime = $this->mtime->fetchColumn();
$this->mtime->closeCursor();
+
return strtotime($mtime);
}
}
diff --git a/library/Smarty/demo/plugins/resource.mysqls.php b/library/Smarty/demo/plugins/resource.mysqls.php
index f9fe1c2f2..f694ddf11 100644
--- a/library/Smarty/demo/plugins/resource.mysqls.php
+++ b/library/Smarty/demo/plugins/resource.mysqls.php
@@ -2,13 +2,10 @@
/**
* MySQL Resource
- *
* Resource Implementation based on the Custom API to use
* MySQL as the storage resource for Smarty's templates and configs.
- *
* Note that this MySQL implementation fetches the source and timestamps in
- * a single database query, instead of two seperate like resource.mysql.php does.
- *
+ * a single database query, instead of two separate like resource.mysql.php does.
* Table definition:
* <pre>CREATE TABLE IF NOT EXISTS `templates` (
* `name` varchar(100) NOT NULL,
@@ -16,34 +13,37 @@
* `source` text,
* PRIMARY KEY (`name`)
* ) ENGINE=InnoDB DEFAULT CHARSET=utf8;</pre>
- *
* Demo data:
* <pre>INSERT INTO `templates` (`name`, `modified`, `source`) VALUES ('test.tpl', "2010-12-25 22:00:00", '{$x="hello world"}{$x}');</pre>
*
* @package Resource-examples
- * @author Rodney Rehm
+ * @author Rodney Rehm
*/
-class Smarty_Resource_Mysqls extends Smarty_Resource_Custom {
+class Smarty_Resource_Mysqls extends Smarty_Resource_Custom
+{
// PDO instance
protected $db;
// prepared fetch() statement
protected $fetch;
- public function __construct() {
+ public function __construct()
+ {
try {
- $this->db = new PDO("mysql:dbname=test;host=127.0.0.1", "smarty", "smarty");
- } catch (PDOException $e) {
+ $this->db = new PDO("mysql:dbname=test;host=127.0.0.1", "smarty");
+ }
+ catch (PDOException $e) {
throw new SmartyException('Mysql Resource failed: ' . $e->getMessage());
}
$this->fetch = $this->db->prepare('SELECT modified, source FROM templates WHERE name = :name');
}
-
+
/**
* Fetch a template and its modification time from database
*
- * @param string $name template name
- * @param string $source template source
- * @param integer $mtime template modification timestamp (epoch)
+ * @param string $name template name
+ * @param string $source template source
+ * @param integer $mtime template modification timestamp (epoch)
+ *
* @return void
*/
protected function fetch($name, &$source, &$mtime)
diff --git a/library/Smarty/demo/templates/header.tpl b/library/Smarty/demo/templates/header.tpl
index 783210a18..13fa6cb5a 100644
--- a/library/Smarty/demo/templates/header.tpl
+++ b/library/Smarty/demo/templates/header.tpl
@@ -1,5 +1,5 @@
<HTML>
<HEAD>
-<TITLE>{$title} - {$Name}</TITLE>
+ <TITLE>{$title} - {$Name}</TITLE>
</HEAD>
<BODY bgcolor="#ffffff">
diff --git a/library/Smarty/demo/templates/index.tpl b/library/Smarty/demo/templates/index.tpl
index 38d233412..1fbb6d379 100644
--- a/library/Smarty/demo/templates/index.tpl
+++ b/library/Smarty/demo/templates/index.tpl
@@ -4,18 +4,18 @@
<PRE>
{* bold and title are read from the config file *}
-{if #bold#}<b>{/if}
-{* capitalize the first letters of each word of the title *}
-Title: {#title#|capitalize}
-{if #bold#}</b>{/if}
+ {if #bold#}<b>{/if}
+ {* capitalize the first letters of each word of the title *}
+ Title: {#title#|capitalize}
+ {if #bold#}</b>{/if}
-The current date and time is {$smarty.now|date_format:"%Y-%m-%d %H:%M:%S"}
+ The current date and time is {$smarty.now|date_format:"%Y-%m-%d %H:%M:%S"}
-The value of global assigned variable $SCRIPT_NAME is {$SCRIPT_NAME}
+ The value of global assigned variable $SCRIPT_NAME is {$SCRIPT_NAME}
-Example of accessing server environment variable SERVER_NAME: {$smarty.server.SERVER_NAME}
+ Example of accessing server environment variable SERVER_NAME: {$smarty.server.SERVER_NAME}
-The value of {ldelim}$Name{rdelim} is <b>{$Name}</b>
+ The value of {ldelim}$Name{rdelim} is <b>{$Name}</b>
variable modifier example of {ldelim}$Name|upper{rdelim}
@@ -24,59 +24,64 @@ variable modifier example of {ldelim}$Name|upper{rdelim}
An example of a section loop:
-{section name=outer
-loop=$FirstName}
-{if $smarty.section.outer.index is odd by 2}
- {$smarty.section.outer.rownum} . {$FirstName[outer]} {$LastName[outer]}
-{else}
- {$smarty.section.outer.rownum} * {$FirstName[outer]} {$LastName[outer]}
-{/if}
-{sectionelse}
- none
-{/section}
-
-An example of section looped key values:
-
-{section name=sec1 loop=$contacts}
- phone: {$contacts[sec1].phone}<br>
- fax: {$contacts[sec1].fax}<br>
- cell: {$contacts[sec1].cell}<br>
-{/section}
-<p>
-
-testing strip tags
-{strip}
+ {section name=outer
+ loop=$FirstName}
+ {if $smarty.section.outer.index is odd by 2}
+ {$smarty.section.outer.rownum} . {$FirstName[outer]} {$LastName[outer]}
+ {else}
+ {$smarty.section.outer.rownum} * {$FirstName[outer]} {$LastName[outer]}
+ {/if}
+ {sectionelse}
+ none
+ {/section}
+
+ An example of section looped key values:
+
+ {section name=sec1 loop=$contacts}
+ phone: {$contacts[sec1].phone}
+ <br>
+
+ fax: {$contacts[sec1].fax}
+ <br>
+
+ cell: {$contacts[sec1].cell}
+ <br>
+ {/section}
+ <p>
+
+ testing strip tags
+ {strip}
<table border=0>
- <tr>
- <td>
- <A HREF="{$SCRIPT_NAME}">
- <font color="red">This is a test </font>
- </A>
- </td>
- </tr>
+ <tr>
+ <td>
+ <A HREF="{$SCRIPT_NAME}">
+ <font color="red">This is a test </font>
+ </A>
+ </td>
+ </tr>
</table>
-{/strip}
+ {/strip}
</PRE>
This is an example of the html_select_date function:
<form>
-{html_select_date start_year=1998 end_year=2010}
+ {html_select_date start_year=1998 end_year=2010}
</form>
This is an example of the html_select_time function:
<form>
-{html_select_time use_24_hours=false}
+ {html_select_time use_24_hours=false}
</form>
This is an example of the html_options function:
<form>
-<select name=states>
-{html_options values=$option_values selected=$option_selected output=$option_output}
-</select>
+ <select name=states>
+ {html_options values=$option_values selected=$option_selected output=$option_output}
+ </select>
</form>
{include file="footer.tpl"}
diff --git a/library/Smarty/libs/Smarty.class.php b/library/Smarty/libs/Smarty.class.php
index f776aaf7c..832b0d309 100644
--- a/library/Smarty/libs/Smarty.class.php
+++ b/library/Smarty/libs/Smarty.class.php
@@ -2,33 +2,29 @@
/**
* Project: Smarty: the PHP compiling template engine
* File: Smarty.class.php
- * SVN: $Id: Smarty.class.php 4614 2012-05-24 15:13:19Z rodneyrehm $
- *
+ * SVN: $Id: Smarty.class.php 4897 2014-10-14 22:29:58Z Uwe.Tews@googlemail.com $
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
* version 2.1 of the License, or (at your option) any later version.
- *
* This library 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
* Lesser General Public License for more details.
- *
* You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
- *
* For questions, help, comments, discussion, etc., please join the
* Smarty mailing list. Send a blank e-mail to
* smarty-discussion-subscribe@googlegroups.com
*
- * @link http://www.smarty.net/
+ * @link http://www.smarty.net/
* @copyright 2008 New Digital Group, Inc.
- * @author Monte Ohrt <monte at ohrt dot com>
- * @author Uwe Tews
- * @author Rodney Rehm
- * @package Smarty
- * @version 3.1-DEV
+ * @author Monte Ohrt <monte at ohrt dot com>
+ * @author Uwe Tews
+ * @author Rodney Rehm
+ * @package Smarty
+ * @version 3.1.21
*/
/**
@@ -57,7 +53,7 @@ if (!defined('SMARTY_PLUGINS_DIR')) {
define('SMARTY_PLUGINS_DIR', SMARTY_DIR . 'plugins' . DS);
}
if (!defined('SMARTY_MBSTRING')) {
- define('SMARTY_MBSTRING', function_exists('mb_strlen'));
+ define('SMARTY_MBSTRING', function_exists('mb_split'));
}
if (!defined('SMARTY_RESOURCE_CHAR_SET')) {
// UTF-8 can only be done properly when mbstring is available!
@@ -92,20 +88,21 @@ if (SMARTY_SPL_AUTOLOAD && set_include_path(get_include_path() . PATH_SEPARATOR
/**
* Load always needed external class files
*/
-include_once SMARTY_SYSPLUGINS_DIR.'smarty_internal_data.php';
-include_once SMARTY_SYSPLUGINS_DIR.'smarty_internal_templatebase.php';
-include_once SMARTY_SYSPLUGINS_DIR.'smarty_internal_template.php';
-include_once SMARTY_SYSPLUGINS_DIR.'smarty_resource.php';
-include_once SMARTY_SYSPLUGINS_DIR.'smarty_internal_resource_file.php';
-include_once SMARTY_SYSPLUGINS_DIR.'smarty_cacheresource.php';
-include_once SMARTY_SYSPLUGINS_DIR.'smarty_internal_cacheresource_file.php';
+include_once SMARTY_SYSPLUGINS_DIR . 'smarty_internal_data.php';
+include_once SMARTY_SYSPLUGINS_DIR . 'smarty_internal_templatebase.php';
+include_once SMARTY_SYSPLUGINS_DIR . 'smarty_internal_template.php';
+include_once SMARTY_SYSPLUGINS_DIR . 'smarty_resource.php';
+include_once SMARTY_SYSPLUGINS_DIR . 'smarty_internal_resource_file.php';
+include_once SMARTY_SYSPLUGINS_DIR . 'smarty_cacheresource.php';
+include_once SMARTY_SYSPLUGINS_DIR . 'smarty_internal_cacheresource_file.php';
/**
* This is the main Smarty class
+ *
* @package Smarty
*/
-class Smarty extends Smarty_Internal_TemplateBase {
-
+class Smarty extends Smarty_Internal_TemplateBase
+{
/**#@+
* constant definitions
*/
@@ -113,7 +110,7 @@ class Smarty extends Smarty_Internal_TemplateBase {
/**
* smarty version
*/
- const SMARTY_VERSION = 'Smarty-3.1.11';
+ const SMARTY_VERSION = 'Smarty-3.1.21-dev';
/**
* define variable scopes
@@ -129,6 +126,11 @@ class Smarty extends Smarty_Internal_TemplateBase {
const CACHING_LIFETIME_CURRENT = 1;
const CACHING_LIFETIME_SAVED = 2;
/**
+ * define constant for clearing cache files be saved expiration datees
+ */
+ const CLEAR_EXPIRED = - 1;
+
+ /**
* define compile check modes
*/
const COMPILECHECK_OFF = 0;
@@ -189,118 +191,145 @@ class Smarty extends Smarty_Internal_TemplateBase {
* Flag denoting if PCRE should run in UTF-8 mode
*/
public static $_UTF8_MODIFIER = 'u';
-
+
/**
* Flag denoting if operating system is windows
*/
public static $_IS_WINDOWS = false;
-
+
/**#@+
* variables
*/
/**
* auto literal on delimiters with whitspace
+ *
* @var boolean
*/
public $auto_literal = true;
/**
* display error on not assigned variables
+ *
* @var boolean
*/
public $error_unassigned = false;
/**
* look up relative filepaths in include_path
+ *
* @var boolean
*/
public $use_include_path = false;
/**
* template directory
+ *
* @var array
*/
private $template_dir = array();
/**
* joined template directory string used in cache keys
+ *
* @var string
*/
public $joined_template_dir = null;
/**
* joined config directory string used in cache keys
+ *
* @var string
*/
public $joined_config_dir = null;
/**
* default template handler
+ *
* @var callable
*/
public $default_template_handler_func = null;
/**
* default config handler
+ *
* @var callable
*/
public $default_config_handler_func = null;
/**
* default plugin handler
+ *
* @var callable
*/
public $default_plugin_handler_func = null;
/**
* compile directory
+ *
* @var string
*/
private $compile_dir = null;
/**
* plugins directory
+ *
* @var array
*/
private $plugins_dir = array();
/**
* cache directory
+ *
* @var string
*/
private $cache_dir = null;
/**
* config directory
+ *
* @var array
*/
private $config_dir = array();
/**
* force template compiling?
+ *
* @var boolean
*/
public $force_compile = false;
/**
* check template for modifications?
+ *
* @var boolean
*/
public $compile_check = true;
/**
* use sub dirs for compiled/cached files?
+ *
* @var boolean
*/
public $use_sub_dirs = false;
/**
* allow ambiguous resources (that are made unique by the resource handler)
+ *
* @var boolean
*/
public $allow_ambiguous_resources = false;
/**
* caching enabled
+ *
* @var boolean
*/
public $caching = false;
/**
* merge compiled includes
+ *
* @var boolean
*/
public $merge_compiled_includes = false;
/**
+ * template inheritance merge compiled includes
+ *
+ * @var boolean
+ */
+ public $inheritance_merge_compiled_includes = true;
+ /**
* cache lifetime in seconds
+ *
* @var integer
*/
public $cache_lifetime = 3600;
/**
* force cache file creation
+ *
* @var boolean
*/
public $force_cache = false;
@@ -320,11 +349,13 @@ class Smarty extends Smarty_Internal_TemplateBase {
public $compile_id = null;
/**
* template left-delimiter
+ *
* @var string
*/
public $left_delimiter = "{";
/**
* template right-delimiter
+ *
* @var string
*/
public $right_delimiter = "}";
@@ -333,7 +364,6 @@ class Smarty extends Smarty_Internal_TemplateBase {
*/
/**
* class name
- *
* This should be instance of Smarty_Security.
*
* @var string
@@ -360,7 +390,6 @@ class Smarty extends Smarty_Internal_TemplateBase {
public $allow_php_templates = false;
/**
* Should compiled-templates be prevented from being called directly?
- *
* {@internal
* Currently used by Smarty_Internal_Template only.
* }}
@@ -371,7 +400,6 @@ class Smarty extends Smarty_Internal_TemplateBase {
/**#@-*/
/**
* debug mode
- *
* Setting this to true enables the debug-console.
*
* @var boolean
@@ -383,12 +411,12 @@ class Smarty extends Smarty_Internal_TemplateBase {
* <li>NONE => no debugging control allowed</li>
* <li>URL => enable debugging when SMARTY_DEBUG is found in the URL.</li>
* </ul>
+ *
* @var string
*/
public $debugging_ctrl = 'NONE';
/**
* Name of debugging URL-param.
- *
* Only used when $debugging_ctrl is set to 'URL'.
* The name of the URL-parameter that activates debugging.
*
@@ -397,16 +425,19 @@ class Smarty extends Smarty_Internal_TemplateBase {
public $smarty_debug_id = 'SMARTY_DEBUG';
/**
* Path of debug template.
+ *
* @var string
*/
public $debug_tpl = null;
/**
* When set, smarty uses this value as error_reporting-level.
+ *
* @var int
*/
public $error_reporting = null;
/**
* Internal flag for getTags()
+ *
* @var boolean
*/
public $get_used_tags = false;
@@ -417,16 +448,19 @@ class Smarty extends Smarty_Internal_TemplateBase {
/**
* Controls whether variables with the same name overwrite each other.
+ *
* @var boolean
*/
public $config_overwrite = true;
/**
* Controls whether config values of on/true/yes and off/false/no get converted to boolean.
+ *
* @var boolean
*/
public $config_booleanize = true;
/**
* Controls whether hidden config sections/vars are read from the file.
+ *
* @var boolean
*/
public $config_read_hidden = false;
@@ -439,16 +473,19 @@ class Smarty extends Smarty_Internal_TemplateBase {
/**
* locking concurrent compiles
+ *
* @var boolean
*/
public $compile_locking = true;
/**
* Controls whether cache resources should emply locking mechanism
+ *
* @var boolean
*/
public $cache_locking = false;
/**
* seconds to wait for acquiring a lock before ignoring the write lock
+ *
* @var float
*/
public $locking_timeout = 10;
@@ -457,19 +494,19 @@ class Smarty extends Smarty_Internal_TemplateBase {
/**
* global template functions
+ *
* @var array
*/
public $template_functions = array();
/**
* resource type used if none given
- *
* Must be an valid key of $registered_resources.
+ *
* @var string
*/
public $default_resource_type = 'file';
/**
* caching type
- *
* Must be an element of $cache_resource_types.
*
* @var string
@@ -477,121 +514,145 @@ class Smarty extends Smarty_Internal_TemplateBase {
public $caching_type = 'file';
/**
* internal config properties
+ *
* @var array
*/
public $properties = array();
/**
* config type
+ *
* @var string
*/
public $default_config_type = 'file';
/**
* cached template objects
+ *
* @var array
*/
public $template_objects = array();
/**
* check If-Modified-Since headers
+ *
* @var boolean
*/
public $cache_modified_check = false;
/**
* registered plugins
+ *
* @var array
*/
public $registered_plugins = array();
/**
* plugin search order
+ *
* @var array
*/
public $plugin_search_order = array('function', 'block', 'compiler', 'class');
/**
* registered objects
+ *
* @var array
*/
public $registered_objects = array();
/**
* registered classes
+ *
* @var array
*/
public $registered_classes = array();
/**
* registered filters
+ *
* @var array
*/
public $registered_filters = array();
/**
* registered resources
+ *
* @var array
*/
public $registered_resources = array();
/**
* resource handler cache
+ *
* @var array
*/
public $_resource_handlers = array();
/**
* registered cache resources
+ *
* @var array
*/
public $registered_cache_resources = array();
/**
* cache resource handler cache
+ *
* @var array
*/
public $_cacheresource_handlers = array();
/**
* autoload filter
+ *
* @var array
*/
public $autoload_filters = array();
/**
* default modifier
+ *
* @var array
*/
public $default_modifiers = array();
/**
* autoescape variable output
+ *
* @var boolean
*/
public $escape_html = false;
/**
* global internal smarty vars
+ *
* @var array
*/
public static $_smarty_vars = array();
/**
* start time for execution time calculation
+ *
* @var int
*/
public $start_time = 0;
/**
* default file permissions
+ *
* @var int
*/
public $_file_perms = 0644;
/**
* default dir permissions
+ *
* @var int
*/
public $_dir_perms = 0771;
/**
* block tag hierarchy
+ *
* @var array
*/
public $_tag_stack = array();
/**
* self pointer to Smarty object
+ *
* @var Smarty
*/
public $smarty;
/**
* required by the compiler for BC
+ *
* @var string
*/
public $_current_file = null;
/**
* internal flag to enable parser debugging
+ *
* @var bool
*/
public $_parserdebug = false;
@@ -601,11 +662,19 @@ class Smarty extends Smarty_Internal_TemplateBase {
* @var array
*/
public $merged_templates_func = array();
+
+ /**
+ * Cache of is_file results of loadPlugin()
+ *
+ * @var array
+ */
+ public static $_is_file_cache= array();
+
/**#@-*/
/**
* Initialize new Smarty object
- *
+
*/
public function __construct()
{
@@ -628,7 +697,6 @@ class Smarty extends Smarty_Internal_TemplateBase {
}
}
-
/**
* Class destructor
*/
@@ -645,36 +713,34 @@ class Smarty extends Smarty_Internal_TemplateBase {
$this->smarty = $this;
}
-
/**
* <<magic>> Generic getter.
- *
* Calls the appropriate getter function.
* Issues an E_USER_NOTICE if no valid getter is found.
*
- * @param string $name property name
+ * @param string $name property name
+ *
* @return mixed
*/
public function __get($name)
{
$allowed = array(
- 'template_dir' => 'getTemplateDir',
- 'config_dir' => 'getConfigDir',
- 'plugins_dir' => 'getPluginsDir',
- 'compile_dir' => 'getCompileDir',
- 'cache_dir' => 'getCacheDir',
+ 'template_dir' => 'getTemplateDir',
+ 'config_dir' => 'getConfigDir',
+ 'plugins_dir' => 'getPluginsDir',
+ 'compile_dir' => 'getCompileDir',
+ 'cache_dir' => 'getCacheDir',
);
if (isset($allowed[$name])) {
return $this->{$allowed[$name]}();
} else {
- trigger_error('Undefined property: '. get_class($this) .'::$'. $name, E_USER_NOTICE);
+ trigger_error('Undefined property: ' . get_class($this) . '::$' . $name, E_USER_NOTICE);
}
}
/**
* <<magic>> Generic setter.
- *
* Calls the appropriate setter function.
* Issues an E_USER_NOTICE if no valid setter is found.
*
@@ -684,11 +750,11 @@ class Smarty extends Smarty_Internal_TemplateBase {
public function __set($name, $value)
{
$allowed = array(
- 'template_dir' => 'setTemplateDir',
- 'config_dir' => 'setConfigDir',
- 'plugins_dir' => 'setPluginsDir',
- 'compile_dir' => 'setCompileDir',
- 'cache_dir' => 'setCacheDir',
+ 'template_dir' => 'setTemplateDir',
+ 'config_dir' => 'setConfigDir',
+ 'plugins_dir' => 'setPluginsDir',
+ 'compile_dir' => 'setCompileDir',
+ 'cache_dir' => 'setCacheDir',
);
if (isset($allowed[$name])) {
@@ -701,7 +767,8 @@ class Smarty extends Smarty_Internal_TemplateBase {
/**
* Check if a template resource exists
*
- * @param string $resource_name template name
+ * @param string $resource_name template name
+ *
* @return boolean status
*/
public function templateExists($resource_name)
@@ -712,14 +779,15 @@ class Smarty extends Smarty_Internal_TemplateBase {
// check if it does exists
$result = $tpl->source->exists;
$this->template_objects = $save;
+
return $result;
}
/**
* Returns a single or all global variables
*
- * @param object $smarty
- * @param string $varname variable name or null
+ * @param string $varname variable name or null
+ *
* @return string variable value or or array of variables
*/
public function getGlobal($varname = null)
@@ -735,6 +803,7 @@ class Smarty extends Smarty_Internal_TemplateBase {
foreach (self::$global_tpl_vars AS $key => $var) {
$_result[$key] = $var->value;
}
+
return $_result;
}
}
@@ -742,26 +811,29 @@ class Smarty extends Smarty_Internal_TemplateBase {
/**
* Empty cache folder
*
- * @param integer $exp_time expiration time
- * @param string $type resource type
+ * @param integer $exp_time expiration time
+ * @param string $type resource type
+ *
* @return integer number of cache files deleted
*/
- function clearAllCache($exp_time = null, $type = null)
+ public function clearAllCache($exp_time = null, $type = null)
{
// load cache resource and call clearAll
$_cache_resource = Smarty_CacheResource::load($this, $type);
Smarty_CacheResource::invalidLoadedCache($this);
+
return $_cache_resource->clearAll($this, $exp_time);
}
/**
* Empty cache for a specific template
*
- * @param string $template_name template name
- * @param string $cache_id cache id
- * @param string $compile_id compile id
- * @param integer $exp_time expiration time
- * @param string $type resource type
+ * @param string $template_name template name
+ * @param string $cache_id cache id
+ * @param string $compile_id compile id
+ * @param integer $exp_time expiration time
+ * @param string $type resource type
+ *
* @return integer number of cache files deleted
*/
public function clearCache($template_name, $cache_id = null, $compile_id = null, $exp_time = null, $type = null)
@@ -769,20 +841,23 @@ class Smarty extends Smarty_Internal_TemplateBase {
// load cache resource and call clear
$_cache_resource = Smarty_CacheResource::load($this, $type);
Smarty_CacheResource::invalidLoadedCache($this);
+
return $_cache_resource->clear($this, $template_name, $cache_id, $compile_id, $exp_time);
}
/**
* Loads security class and enables security
*
- * @param string|Smarty_Security $security_class if a string is used, it must be class-name
- * @return Smarty current Smarty instance for chaining
- * @throws SmartyException when an invalid class name is provided
+ * @param string|Smarty_Security $security_class if a string is used, it must be class-name
+ *
+ * @return Smarty current Smarty instance for chaining
+ * @throws SmartyException when an invalid class name is provided
*/
public function enableSecurity($security_class = null)
{
if ($security_class instanceof Smarty_Security) {
$this->security_policy = $security_class;
+
return $this;
} elseif (is_object($security_class)) {
throw new SmartyException("Class '" . get_class($security_class) . "' must extend Smarty_Security.");
@@ -803,6 +878,7 @@ class Smarty extends Smarty_Internal_TemplateBase {
/**
* Disable security
+ *
* @return Smarty current Smarty instance for chaining
*/
public function disableSecurity()
@@ -815,145 +891,164 @@ class Smarty extends Smarty_Internal_TemplateBase {
/**
* Set template directory
*
- * @param string|array $template_dir directory(s) of template sources
- * @return Smarty current Smarty instance for chaining
+ * @param string|array $template_dir directory(s) of template sources
+ *
+ * @return Smarty current Smarty instance for chaining
*/
public function setTemplateDir($template_dir)
{
$this->template_dir = array();
foreach ((array) $template_dir as $k => $v) {
- $this->template_dir[$k] = rtrim($v, '/\\') . DS;
+ $this->template_dir[$k] = preg_replace('#(\w+)(/|\\\\){1,}#', '$1$2', rtrim($v, '/\\')) . DS;
}
$this->joined_template_dir = join(DIRECTORY_SEPARATOR, $this->template_dir);
+
return $this;
}
/**
* Add template directory(s)
*
- * @param string|array $template_dir directory(s) of template sources
- * @param string $key of the array element to assign the template dir to
- * @return Smarty current Smarty instance for chaining
+ * @param string|array $template_dir directory(s) of template sources
+ * @param string $key of the array element to assign the template dir to
+ *
+ * @return Smarty current Smarty instance for chaining
* @throws SmartyException when the given template directory is not valid
*/
- public function addTemplateDir($template_dir, $key=null)
+ public function addTemplateDir($template_dir, $key = null)
{
// make sure we're dealing with an array
$this->template_dir = (array) $this->template_dir;
if (is_array($template_dir)) {
foreach ($template_dir as $k => $v) {
+ $v = preg_replace('#(\w+)(/|\\\\){1,}#', '$1$2', rtrim($v, '/\\')) . DS;
if (is_int($k)) {
// indexes are not merged but appended
- $this->template_dir[] = rtrim($v, '/\\') . DS;
+ $this->template_dir[] = $v;
} else {
// string indexes are overridden
- $this->template_dir[$k] = rtrim($v, '/\\') . DS;
+ $this->template_dir[$k] = $v;
}
}
- } elseif ($key !== null) {
- // override directory at specified index
- $this->template_dir[$key] = rtrim($template_dir, '/\\') . DS;
} else {
- // append new directory
- $this->template_dir[] = rtrim($template_dir, '/\\') . DS;
+ $v = preg_replace('#(\w+)(/|\\\\){1,}#', '$1$2', rtrim($template_dir, '/\\')) . DS;
+ if ($key !== null) {
+ // override directory at specified index
+ $this->template_dir[$key] = $v;
+ } else {
+ // append new directory
+ $this->template_dir[] = $v;
+ }
}
$this->joined_template_dir = join(DIRECTORY_SEPARATOR, $this->template_dir);
+
return $this;
}
/**
* Get template directories
*
- * @param mixed index of directory to get, null to get all
+ * @param mixed $index index of directory to get, null to get all
+ *
* @return array|string list of template directories, or directory of $index
*/
- public function getTemplateDir($index=null)
+ public function getTemplateDir($index = null)
{
if ($index !== null) {
return isset($this->template_dir[$index]) ? $this->template_dir[$index] : null;
}
- return (array)$this->template_dir;
+ return (array) $this->template_dir;
}
/**
* Set config directory
*
- * @param string|array $template_dir directory(s) of configuration sources
- * @return Smarty current Smarty instance for chaining
+ * @param $config_dir
+ *
+ * @return Smarty current Smarty instance for chaining
*/
public function setConfigDir($config_dir)
{
$this->config_dir = array();
foreach ((array) $config_dir as $k => $v) {
- $this->config_dir[$k] = rtrim($v, '/\\') . DS;
+ $this->config_dir[$k] = preg_replace('#(\w+)(/|\\\\){1,}#', '$1$2', rtrim($v, '/\\')) . DS;
}
$this->joined_config_dir = join(DIRECTORY_SEPARATOR, $this->config_dir);
+
return $this;
}
/**
* Add config directory(s)
*
- * @param string|array $config_dir directory(s) of config sources
- * @param string key of the array element to assign the config dir to
+ * @param string|array $config_dir directory(s) of config sources
+ * @param mixed $key key of the array element to assign the config dir to
+ *
* @return Smarty current Smarty instance for chaining
*/
- public function addConfigDir($config_dir, $key=null)
+ public function addConfigDir($config_dir, $key = null)
{
// make sure we're dealing with an array
$this->config_dir = (array) $this->config_dir;
if (is_array($config_dir)) {
foreach ($config_dir as $k => $v) {
+ $v = preg_replace('#(\w+)(/|\\\\){1,}#', '$1$2', rtrim($v, '/\\')) . DS;
if (is_int($k)) {
// indexes are not merged but appended
- $this->config_dir[] = rtrim($v, '/\\') . DS;
+ $this->config_dir[] = $v;
} else {
// string indexes are overridden
- $this->config_dir[$k] = rtrim($v, '/\\') . DS;
+ $this->config_dir[$k] = $v;
}
}
- } elseif( $key !== null ) {
- // override directory at specified index
- $this->config_dir[$key] = rtrim($config_dir, '/\\') . DS;
} else {
- // append new directory
- $this->config_dir[] = rtrim($config_dir, '/\\') . DS;
+ $v = preg_replace('#(\w+)(/|\\\\){1,}#', '$1$2', rtrim($config_dir, '/\\')) . DS;
+ if ($key !== null) {
+ // override directory at specified index
+ $this->config_dir[$key] = rtrim($v, '/\\') . DS;
+ } else {
+ // append new directory
+ $this->config_dir[] = rtrim($v, '/\\') . DS;
+ }
}
$this->joined_config_dir = join(DIRECTORY_SEPARATOR, $this->config_dir);
+
return $this;
}
/**
* Get config directory
*
- * @param mixed index of directory to get, null to get all
+ * @param mixed $index index of directory to get, null to get all
+ *
* @return array|string configuration directory
*/
- public function getConfigDir($index=null)
+ public function getConfigDir($index = null)
{
if ($index !== null) {
return isset($this->config_dir[$index]) ? $this->config_dir[$index] : null;
}
- return (array)$this->config_dir;
+ return (array) $this->config_dir;
}
/**
* Set plugins directory
*
- * @param string|array $plugins_dir directory(s) of plugins
- * @return Smarty current Smarty instance for chaining
+ * @param string|array $plugins_dir directory(s) of plugins
+ *
+ * @return Smarty current Smarty instance for chaining
*/
public function setPluginsDir($plugins_dir)
{
$this->plugins_dir = array();
- foreach ((array)$plugins_dir as $k => $v) {
+ foreach ((array) $plugins_dir as $k => $v) {
$this->plugins_dir[$k] = rtrim($v, '/\\') . DS;
}
@@ -963,8 +1058,8 @@ class Smarty extends Smarty_Internal_TemplateBase {
/**
* Adds directory of plugin files
*
- * @param object $smarty
- * @param string $ |array $ plugins folder
+ * @param $plugins_dir
+ *
* @return Smarty current Smarty instance for chaining
*/
public function addPluginsDir($plugins_dir)
@@ -988,6 +1083,7 @@ class Smarty extends Smarty_Internal_TemplateBase {
}
$this->plugins_dir = array_unique($this->plugins_dir);
+
return $this;
}
@@ -998,13 +1094,14 @@ class Smarty extends Smarty_Internal_TemplateBase {
*/
public function getPluginsDir()
{
- return (array)$this->plugins_dir;
+ return (array) $this->plugins_dir;
}
/**
* Set compile directory
*
- * @param string $compile_dir directory to store compiled templates in
+ * @param string $compile_dir directory to store compiled templates in
+ *
* @return Smarty current Smarty instance for chaining
*/
public function setCompileDir($compile_dir)
@@ -1013,6 +1110,7 @@ class Smarty extends Smarty_Internal_TemplateBase {
if (!isset(Smarty::$_muted_directories[$this->compile_dir])) {
Smarty::$_muted_directories[$this->compile_dir] = null;
}
+
return $this;
}
@@ -1029,7 +1127,8 @@ class Smarty extends Smarty_Internal_TemplateBase {
/**
* Set cache directory
*
- * @param string $cache_dir directory to store cached templates in
+ * @param string $cache_dir directory to store cached templates in
+ *
* @return Smarty current Smarty instance for chaining
*/
public function setCacheDir($cache_dir)
@@ -1038,6 +1137,7 @@ class Smarty extends Smarty_Internal_TemplateBase {
if (!isset(Smarty::$_muted_directories[$this->cache_dir])) {
Smarty::$_muted_directories[$this->cache_dir] = null;
}
+
return $this;
}
@@ -1054,20 +1154,23 @@ class Smarty extends Smarty_Internal_TemplateBase {
/**
* Set default modifiers
*
- * @param array|string $modifiers modifier or list of modifiers to set
- * @return Smarty current Smarty instance for chaining
+ * @param array|string $modifiers modifier or list of modifiers to set
+ *
+ * @return Smarty current Smarty instance for chaining
*/
public function setDefaultModifiers($modifiers)
{
$this->default_modifiers = (array) $modifiers;
+
return $this;
}
/**
* Add default modifiers
*
- * @param array|string $modifiers modifier or list of modifiers to add
- * @return Smarty current Smarty instance for chaining
+ * @param array|string $modifiers modifier or list of modifiers to add
+ *
+ * @return Smarty current Smarty instance for chaining
*/
public function addDefaultModifiers($modifiers)
{
@@ -1090,15 +1193,15 @@ class Smarty extends Smarty_Internal_TemplateBase {
return $this->default_modifiers;
}
-
/**
* Set autoload filters
*
- * @param array $filters filters to load automatically
- * @param string $type "pre", "output", … specify the filter type to set. Defaults to none treating $filters' keys as the appropriate types
+ * @param array $filters filters to load automatically
+ * @param string $type "pre", "output", … specify the filter type to set. Defaults to none treating $filters' keys as the appropriate types
+ *
* @return Smarty current Smarty instance for chaining
*/
- public function setAutoloadFilters($filters, $type=null)
+ public function setAutoloadFilters($filters, $type = null)
{
if ($type !== null) {
$this->autoload_filters[$type] = (array) $filters;
@@ -1112,11 +1215,12 @@ class Smarty extends Smarty_Internal_TemplateBase {
/**
* Add autoload filters
*
- * @param array $filters filters to load automatically
- * @param string $type "pre", "output", … specify the filter type to set. Defaults to none treating $filters' keys as the appropriate types
+ * @param array $filters filters to load automatically
+ * @param string $type "pre", "output", … specify the filter type to set. Defaults to none treating $filters' keys as the appropriate types
+ *
* @return Smarty current Smarty instance for chaining
*/
- public function addAutoloadFilters($filters, $type=null)
+ public function addAutoloadFilters($filters, $type = null)
{
if ($type !== null) {
if (!empty($this->autoload_filters[$type])) {
@@ -1140,10 +1244,11 @@ class Smarty extends Smarty_Internal_TemplateBase {
/**
* Get autoload filters
*
- * @param string $type type of filter to get autoloads for. Defaults to all autoload filters
- * @return array array( 'type1' => array( 'filter1', 'filter2', … ) ) or array( 'filter1', 'filter2', …) if $type was specified
+ * @param string $type type of filter to get autoloads for. Defaults to all autoload filters
+ *
+ * @return array array( 'type1' => array( 'filter1', 'filter2', … ) ) or array( 'filter1', 'filter2', …) if $type was specified
*/
- public function getAutoloadFilters($type=null)
+ public function getAutoloadFilters($type = null)
{
if ($type !== null) {
return isset($this->autoload_filters[$type]) ? $this->autoload_filters[$type] : array();
@@ -1165,8 +1270,9 @@ class Smarty extends Smarty_Internal_TemplateBase {
/**
* set the debug template
*
- * @param string $tpl_name
- * @return Smarty current Smarty instance for chaining
+ * @param string $tpl_name
+ *
+ * @return Smarty current Smarty instance for chaining
* @throws SmartyException if file is not readable
*/
public function setDebugTemplate($tpl_name)
@@ -1182,20 +1288,21 @@ class Smarty extends Smarty_Internal_TemplateBase {
/**
* creates a template object
*
- * @param string $template the resource handle of the template file
- * @param mixed $cache_id cache id to be used with this template
- * @param mixed $compile_id compile id to be used with this template
- * @param object $parent next higher level of Smarty variables
- * @param boolean $do_clone flag is Smarty object shall be cloned
- * @return object template object
+ * @param string $template the resource handle of the template file
+ * @param mixed $cache_id cache id to be used with this template
+ * @param mixed $compile_id compile id to be used with this template
+ * @param object $parent next higher level of Smarty variables
+ * @param boolean $do_clone flag is Smarty object shall be cloned
+ *
+ * @return object template object
*/
public function createTemplate($template, $cache_id = null, $compile_id = null, $parent = null, $do_clone = true)
{
- if (!empty($cache_id) && (is_object($cache_id) || is_array($cache_id))) {
+ if ($cache_id !== null && (is_object($cache_id) || is_array($cache_id))) {
$parent = $cache_id;
$cache_id = null;
}
- if (!empty($parent) && is_array($parent)) {
+ if ($parent !== null && is_array($parent)) {
$data = $parent;
$parent = null;
} else {
@@ -1242,17 +1349,19 @@ class Smarty extends Smarty_Internal_TemplateBase {
$tpl->tpl_vars[$_key] = new Smarty_variable($_val);
}
}
+
return $tpl;
}
-
/**
* Takes unknown classes and loads plugin files for them
* class name format: Smarty_PluginType_PluginName
* plugin filename format: plugintype.pluginname.php
*
- * @param string $plugin_name class plugin name to load
- * @param bool $check check if already loaded
+ * @param string $plugin_name class plugin name to load
+ * @param bool $check check if already loaded
+ *
+ * @throws SmartyException
* @return string |boolean filepath of loaded file or false
*/
public function loadPlugin($plugin_name, $check = true)
@@ -1267,12 +1376,11 @@ class Smarty extends Smarty_Internal_TemplateBase {
// count($_name_parts) < 3 === !isset($_name_parts[2])
if (!isset($_name_parts[2]) || strtolower($_name_parts[0]) !== 'smarty') {
throw new SmartyException("plugin {$plugin_name} is not a valid name format");
- return false;
}
// if type is "internal", get plugin from sysplugins
if (strtolower($_name_parts[1]) == 'internal') {
$file = SMARTY_SYSPLUGINS_DIR . strtolower($plugin_name) . '.php';
- if (file_exists($file)) {
+ if (isset(self::$_is_file_cache[$file]) ? self::$_is_file_cache[$file] : self::$_is_file_cache[$file] = is_file($file)) {
require_once($file);
return $file;
} else {
@@ -1281,17 +1389,17 @@ class Smarty extends Smarty_Internal_TemplateBase {
}
// plugin filename is expected to be: [type].[name].php
$_plugin_filename = "{$_name_parts[1]}.{$_name_parts[2]}.php";
-
+
$_stream_resolve_include_path = function_exists('stream_resolve_include_path');
// loop through plugin dirs and find the plugin
- foreach($this->getPluginsDir() as $_plugin_dir) {
+ foreach ($this->getPluginsDir() as $_plugin_dir) {
$names = array(
$_plugin_dir . $_plugin_filename,
$_plugin_dir . strtolower($_plugin_filename),
);
foreach ($names as $file) {
- if (file_exists($file)) {
+ if (isset(self::$_is_file_cache[$file]) ? self::$_is_file_cache[$file] : self::$_is_file_cache[$file] = is_file($file)) {
require_once($file);
return $file;
}
@@ -1302,9 +1410,10 @@ class Smarty extends Smarty_Internal_TemplateBase {
} else {
$file = Smarty_Internal_Get_Include_Path::getIncludePath($file);
}
-
+
if ($file !== false) {
require_once($file);
+
return $file;
}
}
@@ -1317,37 +1426,40 @@ class Smarty extends Smarty_Internal_TemplateBase {
/**
* Compile all template files
*
- * @param string $extension file extension
- * @param bool $force_compile force all to recompile
- * @param int $time_limit
- * @param int $max_errors
+ * @param string $extension file extension
+ * @param bool $force_compile force all to recompile
+ * @param int $time_limit
+ * @param int $max_errors
+ *
* @return integer number of template files recompiled
*/
- public function compileAllTemplates($extention = '.tpl', $force_compile = false, $time_limit = 0, $max_errors = null)
+ public function compileAllTemplates($extension = '.tpl', $force_compile = false, $time_limit = 0, $max_errors = null)
{
- return Smarty_Internal_Utility::compileAllTemplates($extention, $force_compile, $time_limit, $max_errors, $this);
+ return Smarty_Internal_Utility::compileAllTemplates($extension, $force_compile, $time_limit, $max_errors, $this);
}
/**
* Compile all config files
*
- * @param string $extension file extension
- * @param bool $force_compile force all to recompile
- * @param int $time_limit
- * @param int $max_errors
+ * @param string $extension file extension
+ * @param bool $force_compile force all to recompile
+ * @param int $time_limit
+ * @param int $max_errors
+ *
* @return integer number of template files recompiled
*/
- public function compileAllConfig($extention = '.conf', $force_compile = false, $time_limit = 0, $max_errors = null)
+ public function compileAllConfig($extension = '.conf', $force_compile = false, $time_limit = 0, $max_errors = null)
{
- return Smarty_Internal_Utility::compileAllConfig($extention, $force_compile, $time_limit, $max_errors, $this);
+ return Smarty_Internal_Utility::compileAllConfig($extension, $force_compile, $time_limit, $max_errors, $this);
}
/**
* Delete compiled template file
*
- * @param string $resource_name template name
- * @param string $compile_id compile id
- * @param integer $exp_time expiration time
+ * @param string $resource_name template name
+ * @param string $compile_id compile id
+ * @param integer $exp_time expiration time
+ *
* @return integer number of template files deleted
*/
public function clearCompiledTemplate($resource_name = null, $compile_id = null, $exp_time = null)
@@ -1355,12 +1467,12 @@ class Smarty extends Smarty_Internal_TemplateBase {
return Smarty_Internal_Utility::clearCompiledTemplate($resource_name, $compile_id, $exp_time, $this);
}
-
/**
* Return array of tag/attributes of all tags used by an template
*
- * @param object $templae template object
- * @return array of tag/attributes
+ * @param Smarty_Internal_Template $template
+ *
+ * @return array of tag/attributes
*/
public function getTags(Smarty_Internal_Template $template)
{
@@ -1370,10 +1482,11 @@ class Smarty extends Smarty_Internal_TemplateBase {
/**
* Run installation test
*
- * @param array $errors Array to write errors into, rather than outputting them
+ * @param array $errors Array to write errors into, rather than outputting them
+ *
* @return boolean true if setup is fine, false if something is wrong
*/
- public function testInstall(&$errors=null)
+ public function testInstall(&$errors = null)
{
return Smarty_Internal_Utility::testInstall($this, $errors);
}
@@ -1382,7 +1495,13 @@ class Smarty extends Smarty_Internal_TemplateBase {
* Error Handler to mute expected messages
*
* @link http://php.net/set_error_handler
- * @param integer $errno Error level
+ *
+ * @param integer $errno Error level
+ * @param $errstr
+ * @param $errfile
+ * @param $errline
+ * @param $errcontext
+ *
* @return boolean
*/
public static function mutingErrorHandler($errno, $errstr, $errfile, $errline, $errcontext)
@@ -1392,10 +1511,12 @@ class Smarty extends Smarty_Internal_TemplateBase {
// add the SMARTY_DIR to the list of muted directories
if (!isset(Smarty::$_muted_directories[SMARTY_DIR])) {
$smarty_dir = realpath(SMARTY_DIR);
- Smarty::$_muted_directories[SMARTY_DIR] = array(
- 'file' => $smarty_dir,
- 'length' => strlen($smarty_dir),
- );
+ if ($smarty_dir !== false) {
+ Smarty::$_muted_directories[SMARTY_DIR] = array(
+ 'file' => $smarty_dir,
+ 'length' => strlen($smarty_dir),
+ );
+ }
}
// walk the muted directories and test against $errfile
@@ -1403,8 +1524,13 @@ class Smarty extends Smarty_Internal_TemplateBase {
if (!$dir) {
// resolve directory and length for speedy comparisons
$file = realpath($key);
+ if ($file === false) {
+ // this directory does not exist, remove and skip it
+ unset(Smarty::$_muted_directories[$key]);
+ continue;
+ }
$dir = array(
- 'file' => $file,
+ 'file' => $file,
'length' => strlen($file),
);
}
@@ -1478,16 +1604,55 @@ if (Smarty::$_CHARSET !== 'UTF-8') {
/**
* Smarty exception class
+ *
* @package Smarty
*/
-class SmartyException extends Exception {
+class SmartyException extends Exception
+{
+ public static $escape = false;
+
+ public function __toString()
+ {
+ return ' --> Smarty: ' . (self::$escape ? htmlentities($this->message) : $this->message) . ' <-- ';
+ }
}
/**
* Smarty compiler exception class
+ *
* @package Smarty
*/
-class SmartyCompilerException extends SmartyException {
+class SmartyCompilerException extends SmartyException
+{
+ public function __toString()
+ {
+ return ' --> Smarty Compiler: ' . $this->message . ' <-- ';
+ }
+
+ /**
+ * The line number of the template error
+ *
+ * @type int|null
+ */
+ public $line = null;
+ /**
+ * The template source snippet relating to the error
+ *
+ * @type string|null
+ */
+ public $source = null;
+ /**
+ * The raw text of the error message
+ *
+ * @type string|null
+ */
+ public $desc = null;
+ /**
+ * The resource identifier or template name
+ *
+ * @type string|null
+ */
+ public $template = null;
}
/**
@@ -1496,22 +1661,20 @@ class SmartyCompilerException extends SmartyException {
function smartyAutoload($class)
{
$_class = strtolower($class);
- $_classes = array(
- 'smarty_config_source' => true,
- 'smarty_config_compiled' => true,
- 'smarty_security' => true,
- 'smarty_cacheresource' => true,
- 'smarty_cacheresource_custom' => true,
+ static $_classes = array(
+ 'smarty_config_source' => true,
+ 'smarty_config_compiled' => true,
+ 'smarty_security' => true,
+ 'smarty_cacheresource' => true,
+ 'smarty_cacheresource_custom' => true,
'smarty_cacheresource_keyvaluestore' => true,
- 'smarty_resource' => true,
- 'smarty_resource_custom' => true,
- 'smarty_resource_uncompiled' => true,
- 'smarty_resource_recompiled' => true,
+ 'smarty_resource' => true,
+ 'smarty_resource_custom' => true,
+ 'smarty_resource_uncompiled' => true,
+ 'smarty_resource_recompiled' => true,
);
if (!strncmp($_class, 'smarty_internal_', 16) || isset($_classes[$_class])) {
include SMARTY_SYSPLUGINS_DIR . $_class . '.php';
}
}
-
-?>
diff --git a/library/Smarty/libs/SmartyBC.class.php b/library/Smarty/libs/SmartyBC.class.php
index f8f0a138f..cec946746 100644
--- a/library/Smarty/libs/SmartyBC.class.php
+++ b/library/Smarty/libs/SmartyBC.class.php
@@ -1,460 +1,467 @@
-<?php
-/**
- * Project: Smarty: the PHP compiling template engine
- * File: SmartyBC.class.php
- * SVN: $Id: $
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2.1 of the License, or (at your option) any later version.
- *
- * This library 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
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
- *
- * For questions, help, comments, discussion, etc., please join the
- * Smarty mailing list. Send a blank e-mail to
- * smarty-discussion-subscribe@googlegroups.com
- *
- * @link http://www.smarty.net/
- * @copyright 2008 New Digital Group, Inc.
- * @author Monte Ohrt <monte at ohrt dot com>
- * @author Uwe Tews
- * @author Rodney Rehm
- * @package Smarty
- */
-/**
- * @ignore
- */
-require(dirname(__FILE__) . '/Smarty.class.php');
-
-/**
- * Smarty Backward Compatability Wrapper Class
- *
- * @package Smarty
- */
-class SmartyBC extends Smarty {
-
- /**
- * Smarty 2 BC
- * @var string
- */
- public $_version = self::SMARTY_VERSION;
-
- /**
- * Initialize new SmartyBC object
- *
- * @param array $options options to set during initialization, e.g. array( 'forceCompile' => false )
- */
- public function __construct(array $options=array())
- {
- parent::__construct($options);
- // register {php} tag
- $this->registerPlugin('block', 'php', 'smarty_php_tag');
- }
-
- /**
- * wrapper for assign_by_ref
- *
- * @param string $tpl_var the template variable name
- * @param mixed &$value the referenced value to assign
- */
- public function assign_by_ref($tpl_var, &$value)
- {
- $this->assignByRef($tpl_var, $value);
- }
-
- /**
- * wrapper for append_by_ref
- *
- * @param string $tpl_var the template variable name
- * @param mixed &$value the referenced value to append
- * @param boolean $merge flag if array elements shall be merged
- */
- public function append_by_ref($tpl_var, &$value, $merge = false)
- {
- $this->appendByRef($tpl_var, $value, $merge);
- }
-
- /**
- * clear the given assigned template variable.
- *
- * @param string $tpl_var the template variable to clear
- */
- public function clear_assign($tpl_var)
- {
- $this->clearAssign($tpl_var);
- }
-
- /**
- * Registers custom function to be used in templates
- *
- * @param string $function the name of the template function
- * @param string $function_impl the name of the PHP function to register
- * @param bool $cacheable
- * @param mixed $cache_attrs
- */
- public function register_function($function, $function_impl, $cacheable=true, $cache_attrs=null)
- {
- $this->registerPlugin('function', $function, $function_impl, $cacheable, $cache_attrs);
- }
-
- /**
- * Unregisters custom function
- *
- * @param string $function name of template function
- */
- public function unregister_function($function)
- {
- $this->unregisterPlugin('function', $function);
- }
-
- /**
- * Registers object to be used in templates
- *
- * @param string $object name of template object
- * @param object $object_impl the referenced PHP object to register
- * @param array $allowed list of allowed methods (empty = all)
- * @param boolean $smarty_args smarty argument format, else traditional
- * @param array $block_functs list of methods that are block format
- */
- public function register_object($object, $object_impl, $allowed = array(), $smarty_args = true, $block_methods = array())
- {
- settype($allowed, 'array');
- settype($smarty_args, 'boolean');
- $this->registerObject($object, $object_impl, $allowed, $smarty_args, $block_methods);
- }
-
- /**
- * Unregisters object
- *
- * @param string $object name of template object
- */
- public function unregister_object($object)
- {
- $this->unregisterObject($object);
- }
-
- /**
- * Registers block function to be used in templates
- *
- * @param string $block name of template block
- * @param string $block_impl PHP function to register
- * @param bool $cacheable
- * @param mixed $cache_attrs
- */
- public function register_block($block, $block_impl, $cacheable=true, $cache_attrs=null)
- {
- $this->registerPlugin('block', $block, $block_impl, $cacheable, $cache_attrs);
- }
-
- /**
- * Unregisters block function
- *
- * @param string $block name of template function
- */
- public function unregister_block($block)
- {
- $this->unregisterPlugin('block', $block);
- }
-
- /**
- * Registers compiler function
- *
- * @param string $function name of template function
- * @param string $function_impl name of PHP function to register
- * @param bool $cacheable
- */
- public function register_compiler_function($function, $function_impl, $cacheable=true)
- {
- $this->registerPlugin('compiler', $function, $function_impl, $cacheable);
- }
-
- /**
- * Unregisters compiler function
- *
- * @param string $function name of template function
- */
- public function unregister_compiler_function($function)
- {
- $this->unregisterPlugin('compiler', $function);
- }
-
- /**
- * Registers modifier to be used in templates
- *
- * @param string $modifier name of template modifier
- * @param string $modifier_impl name of PHP function to register
- */
- public function register_modifier($modifier, $modifier_impl)
- {
- $this->registerPlugin('modifier', $modifier, $modifier_impl);
- }
-
- /**
- * Unregisters modifier
- *
- * @param string $modifier name of template modifier
- */
- public function unregister_modifier($modifier)
- {
- $this->unregisterPlugin('modifier', $modifier);
- }
-
- /**
- * Registers a resource to fetch a template
- *
- * @param string $type name of resource
- * @param array $functions array of functions to handle resource
- */
- public function register_resource($type, $functions)
- {
- $this->registerResource($type, $functions);
- }
-
- /**
- * Unregisters a resource
- *
- * @param string $type name of resource
- */
- public function unregister_resource($type)
- {
- $this->unregisterResource($type);
- }
-
- /**
- * Registers a prefilter function to apply
- * to a template before compiling
- *
- * @param callable $function
- */
- public function register_prefilter($function)
- {
- $this->registerFilter('pre', $function);
- }
-
- /**
- * Unregisters a prefilter function
- *
- * @param callable $function
- */
- public function unregister_prefilter($function)
- {
- $this->unregisterFilter('pre', $function);
- }
-
- /**
- * Registers a postfilter function to apply
- * to a compiled template after compilation
- *
- * @param callable $function
- */
- public function register_postfilter($function)
- {
- $this->registerFilter('post', $function);
- }
-
- /**
- * Unregisters a postfilter function
- *
- * @param callable $function
- */
- public function unregister_postfilter($function)
- {
- $this->unregisterFilter('post', $function);
- }
-
- /**
- * Registers an output filter function to apply
- * to a template output
- *
- * @param callable $function
- */
- public function register_outputfilter($function)
- {
- $this->registerFilter('output', $function);
- }
-
- /**
- * Unregisters an outputfilter function
- *
- * @param callable $function
- */
- public function unregister_outputfilter($function)
- {
- $this->unregisterFilter('output', $function);
- }
-
- /**
- * load a filter of specified type and name
- *
- * @param string $type filter type
- * @param string $name filter name
- */
- public function load_filter($type, $name)
- {
- $this->loadFilter($type, $name);
- }
-
- /**
- * clear cached content for the given template and cache id
- *
- * @param string $tpl_file name of template file
- * @param string $cache_id name of cache_id
- * @param string $compile_id name of compile_id
- * @param string $exp_time expiration time
- * @return boolean
- */
- public function clear_cache($tpl_file = null, $cache_id = null, $compile_id = null, $exp_time = null)
- {
- return $this->clearCache($tpl_file, $cache_id, $compile_id, $exp_time);
- }
-
- /**
- * clear the entire contents of cache (all templates)
- *
- * @param string $exp_time expire time
- * @return boolean
- */
- public function clear_all_cache($exp_time = null)
- {
- return $this->clearCache(null, null, null, $exp_time);
- }
-
- /**
- * test to see if valid cache exists for this template
- *
- * @param string $tpl_file name of template file
- * @param string $cache_id
- * @param string $compile_id
- * @return boolean
- */
- public function is_cached($tpl_file, $cache_id = null, $compile_id = null)
- {
- return $this->isCached($tpl_file, $cache_id, $compile_id);
- }
-
- /**
- * clear all the assigned template variables.
- */
- public function clear_all_assign()
- {
- $this->clearAllAssign();
- }
-
- /**
- * clears compiled version of specified template resource,
- * or all compiled template files if one is not specified.
- * This function is for advanced use only, not normally needed.
- *
- * @param string $tpl_file
- * @param string $compile_id
- * @param string $exp_time
- * @return boolean results of {@link smarty_core_rm_auto()}
- */
- public function clear_compiled_tpl($tpl_file = null, $compile_id = null, $exp_time = null)
- {
- return $this->clearCompiledTemplate($tpl_file, $compile_id, $exp_time);
- }
-
- /**
- * Checks whether requested template exists.
- *
- * @param string $tpl_file
- * @return boolean
- */
- public function template_exists($tpl_file)
- {
- return $this->templateExists($tpl_file);
- }
-
- /**
- * Returns an array containing template variables
- *
- * @param string $name
- * @return array
- */
- public function get_template_vars($name=null)
- {
- return $this->getTemplateVars($name);
- }
-
- /**
- * Returns an array containing config variables
- *
- * @param string $name
- * @return array
- */
- public function get_config_vars($name=null)
- {
- return $this->getConfigVars($name);
- }
-
- /**
- * load configuration values
- *
- * @param string $file
- * @param string $section
- * @param string $scope
- */
- public function config_load($file, $section = null, $scope = 'global')
- {
- $this->ConfigLoad($file, $section, $scope);
- }
-
- /**
- * return a reference to a registered object
- *
- * @param string $name
- * @return object
- */
- public function get_registered_object($name)
- {
- return $this->getRegisteredObject($name);
- }
-
- /**
- * clear configuration values
- *
- * @param string $var
- */
- public function clear_config($var = null)
- {
- $this->clearConfig($var);
- }
-
- /**
- * trigger Smarty error
- *
- * @param string $error_msg
- * @param integer $error_type
- */
- public function trigger_error($error_msg, $error_type = E_USER_WARNING)
- {
- trigger_error("Smarty error: $error_msg", $error_type);
- }
-
-}
-
-/**
- * Smarty {php}{/php} block function
- *
- * @param array $params parameter list
- * @param string $content contents of the block
- * @param object $template template object
- * @param boolean &$repeat repeat flag
- * @return string content re-formatted
- */
-function smarty_php_tag($params, $content, $template, &$repeat)
-{
- eval($content);
- return '';
-}
-
-?> \ No newline at end of file
+<?php
+/**
+ * Project: Smarty: the PHP compiling template engine
+ * File: SmartyBC.class.php
+ * SVN: $Id: $
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ * This library 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
+ * Lesser General Public License for more details.
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ * For questions, help, comments, discussion, etc., please join the
+ * Smarty mailing list. Send a blank e-mail to
+ * smarty-discussion-subscribe@googlegroups.com
+ *
+ * @link http://www.smarty.net/
+ * @copyright 2008 New Digital Group, Inc.
+ * @author Monte Ohrt <monte at ohrt dot com>
+ * @author Uwe Tews
+ * @author Rodney Rehm
+ * @package Smarty
+ */
+/**
+ * @ignore
+ */
+require_once(dirname(__FILE__) . '/Smarty.class.php');
+
+/**
+ * Smarty Backward Compatability Wrapper Class
+ *
+ * @package Smarty
+ */
+class SmartyBC extends Smarty
+{
+ /**
+ * Smarty 2 BC
+ *
+ * @var string
+ */
+ public $_version = self::SMARTY_VERSION;
+
+ /**
+ * Initialize new SmartyBC object
+ *
+ * @param array $options options to set during initialization, e.g. array( 'forceCompile' => false )
+ */
+ public function __construct(array $options = array())
+ {
+ parent::__construct($options);
+ // register {php} tag
+ $this->registerPlugin('block', 'php', 'smarty_php_tag');
+ }
+
+ /**
+ * wrapper for assign_by_ref
+ *
+ * @param string $tpl_var the template variable name
+ * @param mixed &$value the referenced value to assign
+ */
+ public function assign_by_ref($tpl_var, &$value)
+ {
+ $this->assignByRef($tpl_var, $value);
+ }
+
+ /**
+ * wrapper for append_by_ref
+ *
+ * @param string $tpl_var the template variable name
+ * @param mixed &$value the referenced value to append
+ * @param boolean $merge flag if array elements shall be merged
+ */
+ public function append_by_ref($tpl_var, &$value, $merge = false)
+ {
+ $this->appendByRef($tpl_var, $value, $merge);
+ }
+
+ /**
+ * clear the given assigned template variable.
+ *
+ * @param string $tpl_var the template variable to clear
+ */
+ public function clear_assign($tpl_var)
+ {
+ $this->clearAssign($tpl_var);
+ }
+
+ /**
+ * Registers custom function to be used in templates
+ *
+ * @param string $function the name of the template function
+ * @param string $function_impl the name of the PHP function to register
+ * @param bool $cacheable
+ * @param mixed $cache_attrs
+ */
+ public function register_function($function, $function_impl, $cacheable = true, $cache_attrs = null)
+ {
+ $this->registerPlugin('function', $function, $function_impl, $cacheable, $cache_attrs);
+ }
+
+ /**
+ * Unregisters custom function
+ *
+ * @param string $function name of template function
+ */
+ public function unregister_function($function)
+ {
+ $this->unregisterPlugin('function', $function);
+ }
+
+ /**
+ * Registers object to be used in templates
+ *
+ * @param string $object name of template object
+ * @param object $object_impl the referenced PHP object to register
+ * @param array $allowed list of allowed methods (empty = all)
+ * @param boolean $smarty_args smarty argument format, else traditional
+ * @param array $block_methods list of methods that are block format
+ *
+ * @throws SmartyException
+ * @internal param array $block_functs list of methods that are block format
+ */
+ public function register_object($object, $object_impl, $allowed = array(), $smarty_args = true, $block_methods = array())
+ {
+ settype($allowed, 'array');
+ settype($smarty_args, 'boolean');
+ $this->registerObject($object, $object_impl, $allowed, $smarty_args, $block_methods);
+ }
+
+ /**
+ * Unregisters object
+ *
+ * @param string $object name of template object
+ */
+ public function unregister_object($object)
+ {
+ $this->unregisterObject($object);
+ }
+
+ /**
+ * Registers block function to be used in templates
+ *
+ * @param string $block name of template block
+ * @param string $block_impl PHP function to register
+ * @param bool $cacheable
+ * @param mixed $cache_attrs
+ */
+ public function register_block($block, $block_impl, $cacheable = true, $cache_attrs = null)
+ {
+ $this->registerPlugin('block', $block, $block_impl, $cacheable, $cache_attrs);
+ }
+
+ /**
+ * Unregisters block function
+ *
+ * @param string $block name of template function
+ */
+ public function unregister_block($block)
+ {
+ $this->unregisterPlugin('block', $block);
+ }
+
+ /**
+ * Registers compiler function
+ *
+ * @param string $function name of template function
+ * @param string $function_impl name of PHP function to register
+ * @param bool $cacheable
+ */
+ public function register_compiler_function($function, $function_impl, $cacheable = true)
+ {
+ $this->registerPlugin('compiler', $function, $function_impl, $cacheable);
+ }
+
+ /**
+ * Unregisters compiler function
+ *
+ * @param string $function name of template function
+ */
+ public function unregister_compiler_function($function)
+ {
+ $this->unregisterPlugin('compiler', $function);
+ }
+
+ /**
+ * Registers modifier to be used in templates
+ *
+ * @param string $modifier name of template modifier
+ * @param string $modifier_impl name of PHP function to register
+ */
+ public function register_modifier($modifier, $modifier_impl)
+ {
+ $this->registerPlugin('modifier', $modifier, $modifier_impl);
+ }
+
+ /**
+ * Unregisters modifier
+ *
+ * @param string $modifier name of template modifier
+ */
+ public function unregister_modifier($modifier)
+ {
+ $this->unregisterPlugin('modifier', $modifier);
+ }
+
+ /**
+ * Registers a resource to fetch a template
+ *
+ * @param string $type name of resource
+ * @param array $functions array of functions to handle resource
+ */
+ public function register_resource($type, $functions)
+ {
+ $this->registerResource($type, $functions);
+ }
+
+ /**
+ * Unregisters a resource
+ *
+ * @param string $type name of resource
+ */
+ public function unregister_resource($type)
+ {
+ $this->unregisterResource($type);
+ }
+
+ /**
+ * Registers a prefilter function to apply
+ * to a template before compiling
+ *
+ * @param callable $function
+ */
+ public function register_prefilter($function)
+ {
+ $this->registerFilter('pre', $function);
+ }
+
+ /**
+ * Unregisters a prefilter function
+ *
+ * @param callable $function
+ */
+ public function unregister_prefilter($function)
+ {
+ $this->unregisterFilter('pre', $function);
+ }
+
+ /**
+ * Registers a postfilter function to apply
+ * to a compiled template after compilation
+ *
+ * @param callable $function
+ */
+ public function register_postfilter($function)
+ {
+ $this->registerFilter('post', $function);
+ }
+
+ /**
+ * Unregisters a postfilter function
+ *
+ * @param callable $function
+ */
+ public function unregister_postfilter($function)
+ {
+ $this->unregisterFilter('post', $function);
+ }
+
+ /**
+ * Registers an output filter function to apply
+ * to a template output
+ *
+ * @param callable $function
+ */
+ public function register_outputfilter($function)
+ {
+ $this->registerFilter('output', $function);
+ }
+
+ /**
+ * Unregisters an outputfilter function
+ *
+ * @param callable $function
+ */
+ public function unregister_outputfilter($function)
+ {
+ $this->unregisterFilter('output', $function);
+ }
+
+ /**
+ * load a filter of specified type and name
+ *
+ * @param string $type filter type
+ * @param string $name filter name
+ */
+ public function load_filter($type, $name)
+ {
+ $this->loadFilter($type, $name);
+ }
+
+ /**
+ * clear cached content for the given template and cache id
+ *
+ * @param string $tpl_file name of template file
+ * @param string $cache_id name of cache_id
+ * @param string $compile_id name of compile_id
+ * @param string $exp_time expiration time
+ *
+ * @return boolean
+ */
+ public function clear_cache($tpl_file = null, $cache_id = null, $compile_id = null, $exp_time = null)
+ {
+ return $this->clearCache($tpl_file, $cache_id, $compile_id, $exp_time);
+ }
+
+ /**
+ * clear the entire contents of cache (all templates)
+ *
+ * @param string $exp_time expire time
+ *
+ * @return boolean
+ */
+ public function clear_all_cache($exp_time = null)
+ {
+ return $this->clearCache(null, null, null, $exp_time);
+ }
+
+ /**
+ * test to see if valid cache exists for this template
+ *
+ * @param string $tpl_file name of template file
+ * @param string $cache_id
+ * @param string $compile_id
+ *
+ * @return boolean
+ */
+ public function is_cached($tpl_file, $cache_id = null, $compile_id = null)
+ {
+ return $this->isCached($tpl_file, $cache_id, $compile_id);
+ }
+
+ /**
+ * clear all the assigned template variables.
+ */
+ public function clear_all_assign()
+ {
+ $this->clearAllAssign();
+ }
+
+ /**
+ * clears compiled version of specified template resource,
+ * or all compiled template files if one is not specified.
+ * This function is for advanced use only, not normally needed.
+ *
+ * @param string $tpl_file
+ * @param string $compile_id
+ * @param string $exp_time
+ *
+ * @return boolean results of {@link smarty_core_rm_auto()}
+ */
+ public function clear_compiled_tpl($tpl_file = null, $compile_id = null, $exp_time = null)
+ {
+ return $this->clearCompiledTemplate($tpl_file, $compile_id, $exp_time);
+ }
+
+ /**
+ * Checks whether requested template exists.
+ *
+ * @param string $tpl_file
+ *
+ * @return boolean
+ */
+ public function template_exists($tpl_file)
+ {
+ return $this->templateExists($tpl_file);
+ }
+
+ /**
+ * Returns an array containing template variables
+ *
+ * @param string $name
+ *
+ * @return array
+ */
+ public function get_template_vars($name = null)
+ {
+ return $this->getTemplateVars($name);
+ }
+
+ /**
+ * Returns an array containing config variables
+ *
+ * @param string $name
+ *
+ * @return array
+ */
+ public function get_config_vars($name = null)
+ {
+ return $this->getConfigVars($name);
+ }
+
+ /**
+ * load configuration values
+ *
+ * @param string $file
+ * @param string $section
+ * @param string $scope
+ */
+ public function config_load($file, $section = null, $scope = 'global')
+ {
+ $this->ConfigLoad($file, $section, $scope);
+ }
+
+ /**
+ * return a reference to a registered object
+ *
+ * @param string $name
+ *
+ * @return object
+ */
+ public function get_registered_object($name)
+ {
+ return $this->getRegisteredObject($name);
+ }
+
+ /**
+ * clear configuration values
+ *
+ * @param string $var
+ */
+ public function clear_config($var = null)
+ {
+ $this->clearConfig($var);
+ }
+
+ /**
+ * trigger Smarty error
+ *
+ * @param string $error_msg
+ * @param integer $error_type
+ */
+ public function trigger_error($error_msg, $error_type = E_USER_WARNING)
+ {
+ trigger_error("Smarty error: $error_msg", $error_type);
+ }
+}
+
+/**
+ * Smarty {php}{/php} block function
+ *
+ * @param array $params parameter list
+ * @param string $content contents of the block
+ * @param object $template template object
+ * @param boolean &$repeat repeat flag
+ *
+ * @return string content re-formatted
+ */
+function smarty_php_tag($params, $content, $template, &$repeat)
+{
+ eval($content);
+
+ return '';
+}
diff --git a/library/Smarty/libs/debug.tpl b/library/Smarty/libs/debug.tpl
index 12eef0ffd..61b8876a4 100644
--- a/library/Smarty/libs/debug.tpl
+++ b/library/Smarty/libs/debug.tpl
@@ -1,133 +1,137 @@
{capture name='_smarty_debug' assign=debug_output}
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
-<head>
- <title>Smarty Debug Console</title>
-<style type="text/css">
-{literal}
-body, h1, h2, td, th, p {
- font-family: sans-serif;
- font-weight: normal;
- font-size: 0.9em;
- margin: 1px;
- padding: 0;
-}
-
-h1 {
- margin: 0;
- text-align: left;
- padding: 2px;
- background-color: #f0c040;
- color: black;
- font-weight: bold;
- font-size: 1.2em;
- }
-
-h2 {
- background-color: #9B410E;
- color: white;
- text-align: left;
- font-weight: bold;
- padding: 2px;
- border-top: 1px solid black;
-}
-
-body {
- background: black;
-}
-
-p, table, div {
- background: #f0ead8;
-}
-
-p {
- margin: 0;
- font-style: italic;
- text-align: center;
-}
-
-table {
- width: 100%;
-}
-
-th, td {
- font-family: monospace;
- vertical-align: top;
- text-align: left;
- width: 50%;
-}
-
-td {
- color: green;
-}
-
-.odd {
- background-color: #eeeeee;
-}
-
-.even {
- background-color: #fafafa;
-}
-
-.exectime {
- font-size: 0.8em;
- font-style: italic;
-}
-
-#table_assigned_vars th {
- color: blue;
-}
-
-#table_config_vars th {
- color: maroon;
-}
-{/literal}
-</style>
-</head>
-<body>
-
-<h1>Smarty Debug Console - {if isset($template_name)}{$template_name|debug_print_var nofilter}{else}Total Time {$execution_time|string_format:"%.5f"}{/if}</h1>
-
-{if !empty($template_data)}
-<h2>included templates &amp; config files (load time in seconds)</h2>
-
-<div>
-{foreach $template_data as $template}
- <font color=brown>{$template.name}</font>
- <span class="exectime">
- (compile {$template['compile_time']|string_format:"%.5f"}) (render {$template['render_time']|string_format:"%.5f"}) (cache {$template['cache_time']|string_format:"%.5f"})
+ <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
+ <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
+ <head>
+ <title>Smarty Debug Console</title>
+ <style type="text/css">
+ {literal}
+ body, h1, h2, td, th, p {
+ font-family: sans-serif;
+ font-weight: normal;
+ font-size: 0.9em;
+ margin: 1px;
+ padding: 0;
+ }
+
+ h1 {
+ margin: 0;
+ text-align: left;
+ padding: 2px;
+ background-color: #f0c040;
+ color: black;
+ font-weight: bold;
+ font-size: 1.2em;
+ }
+
+ h2 {
+ background-color: #9B410E;
+ color: white;
+ text-align: left;
+ font-weight: bold;
+ padding: 2px;
+ border-top: 1px solid black;
+ }
+
+ body {
+ background: black;
+ }
+
+ p, table, div {
+ background: #f0ead8;
+ }
+
+ p {
+ margin: 0;
+ font-style: italic;
+ text-align: center;
+ }
+
+ table {
+ width: 100%;
+ }
+
+ th, td {
+ font-family: monospace;
+ vertical-align: top;
+ text-align: left;
+ width: 50%;
+ }
+
+ td {
+ color: green;
+ }
+
+ .odd {
+ background-color: #eeeeee;
+ }
+
+ .even {
+ background-color: #fafafa;
+ }
+
+ .exectime {
+ font-size: 0.8em;
+ font-style: italic;
+ }
+
+ #table_assigned_vars th {
+ color: blue;
+ }
+
+ #table_config_vars th {
+ color: maroon;
+ }
+
+ {/literal}
+ </style>
+ </head>
+ <body>
+
+ <h1>Smarty Debug Console
+ - {if isset($template_name)}{$template_name|debug_print_var nofilter}{else}Total Time {$execution_time|string_format:"%.5f"}{/if}</h1>
+
+ {if !empty($template_data)}
+ <h2>included templates &amp; config files (load time in seconds)</h2>
+ <div>
+ {foreach $template_data as $template}
+ <font color=brown>{$template.name}</font>
+ <span class="exectime">
+ (compile {$template['compile_time']|string_format:"%.5f"}) (render {$template['render_time']|string_format:"%.5f"}) (cache {$template['cache_time']|string_format:"%.5f"}
+ )
</span>
- <br>
-{/foreach}
-</div>
-{/if}
-
-<h2>assigned template variables</h2>
-
-<table id="table_assigned_vars">
- {foreach $assigned_vars as $vars}
- <tr class="{if $vars@iteration % 2 eq 0}odd{else}even{/if}">
- <th>${$vars@key|escape:'html'}</th>
- <td>{$vars|debug_print_var nofilter}</td></tr>
- {/foreach}
-</table>
-
-<h2>assigned config file variables (outer template scope)</h2>
-
-<table id="table_config_vars">
- {foreach $config_vars as $vars}
- <tr class="{if $vars@iteration % 2 eq 0}odd{else}even{/if}">
- <th>{$vars@key|escape:'html'}</th>
- <td>{$vars|debug_print_var nofilter}</td></tr>
- {/foreach}
-
-</table>
-</body>
-</html>
+ <br>
+ {/foreach}
+ </div>
+ {/if}
+
+ <h2>assigned template variables</h2>
+
+ <table id="table_assigned_vars">
+ {foreach $assigned_vars as $vars}
+ <tr class="{if $vars@iteration % 2 eq 0}odd{else}even{/if}">
+ <th>${$vars@key|escape:'html'}</th>
+ <td>{$vars|debug_print_var nofilter}</td>
+ </tr>
+ {/foreach}
+ </table>
+
+ <h2>assigned config file variables (outer template scope)</h2>
+
+ <table id="table_config_vars">
+ {foreach $config_vars as $vars}
+ <tr class="{if $vars@iteration % 2 eq 0}odd{else}even{/if}">
+ <th>{$vars@key|escape:'html'}</th>
+ <td>{$vars|debug_print_var nofilter}</td>
+ </tr>
+ {/foreach}
+
+ </table>
+ </body>
+ </html>
{/capture}
<script type="text/javascript">
-{$id = $template_name|default:''|md5}
- _smarty_console = window.open("","console{$id}","width=680,height=600,resizable,scrollbars=yes");
+ {$id = $template_name|default:''|md5}
+ _smarty_console = window.open("", "console{$id}", "width=680,height=600,resizable,scrollbars=yes");
_smarty_console.document.write("{$debug_output|escape:'javascript' nofilter}");
_smarty_console.document.close();
</script>
diff --git a/library/Smarty/libs/plugins/block.textformat.php b/library/Smarty/libs/plugins/block.textformat.php
index b22b104a5..abf544939 100644
--- a/library/Smarty/libs/plugins/block.textformat.php
+++ b/library/Smarty/libs/plugins/block.textformat.php
@@ -2,13 +2,12 @@
/**
* Smarty plugin to format text blocks
*
- * @package Smarty
+ * @package Smarty
* @subpackage PluginsBlock
*/
/**
* Smarty {textformat}{/textformat} block plugin
- *
* Type: block function<br>
* Name: textformat<br>
* Purpose: format text a certain way with preset styles
@@ -23,12 +22,14 @@
* - wrap_boundary - boolean (true)
* </pre>
*
- * @link http://www.smarty.net/manual/en/language.function.textformat.php {textformat}
- * (Smarty online manual)
+ * @link http://www.smarty.net/manual/en/language.function.textformat.php {textformat}
+ * (Smarty online manual)
+ *
* @param array $params parameters
* @param string $content contents of the block
* @param Smarty_Internal_Template $template template object
* @param boolean &$repeat repeat flag
+ *
* @return string content re-formatted
* @author Monte Ohrt <monte at ohrt dot com>
*/
@@ -53,17 +54,17 @@ function smarty_block_textformat($params, $content, $template, &$repeat)
case 'indent_char':
case 'wrap_char':
case 'assign':
- $$_key = (string)$_val;
+ $$_key = (string) $_val;
break;
case 'indent':
case 'indent_first':
case 'wrap':
- $$_key = (int)$_val;
+ $$_key = (int) $_val;
break;
case 'wrap_cut':
- $$_key = (bool)$_val;
+ $$_key = (bool) $_val;
break;
default:
@@ -76,8 +77,6 @@ function smarty_block_textformat($params, $content, $template, &$repeat)
}
// split into paragraphs
$_paragraphs = preg_split('![\r\n]{2}!', $content);
- $_output = '';
-
foreach ($_paragraphs as &$_paragraph) {
if (!$_paragraph) {
@@ -102,12 +101,10 @@ function smarty_block_textformat($params, $content, $template, &$repeat)
}
}
$_output = implode($wrap_char . $wrap_char, $_paragraphs);
-
+
if ($assign) {
$template->assign($assign, $_output);
} else {
return $_output;
}
}
-
-?> \ No newline at end of file
diff --git a/library/Smarty/libs/plugins/function.counter.php b/library/Smarty/libs/plugins/function.counter.php
index 3906badf0..4da85a14e 100644
--- a/library/Smarty/libs/plugins/function.counter.php
+++ b/library/Smarty/libs/plugins/function.counter.php
@@ -1,22 +1,24 @@
<?php
/**
* Smarty plugin
- * @package Smarty
+ *
+ * @package Smarty
* @subpackage PluginsFunction
*/
/**
* Smarty {counter} function plugin
- *
* Type: function<br>
* Name: counter<br>
* Purpose: print out a counter value
*
* @author Monte Ohrt <monte at ohrt dot com>
- * @link http://www.smarty.net/manual/en/language.function.counter.php {counter}
- * (Smarty online manual)
+ * @link http://www.smarty.net/manual/en/language.function.counter.php {counter}
+ * (Smarty online manual)
+ *
* @param array $params parameters
* @param Smarty_Internal_Template $template template object
+ *
* @return string|null
*/
function smarty_function_counter($params, $template)
@@ -26,16 +28,16 @@ function smarty_function_counter($params, $template)
$name = (isset($params['name'])) ? $params['name'] : 'default';
if (!isset($counters[$name])) {
$counters[$name] = array(
- 'start'=>1,
- 'skip'=>1,
- 'direction'=>'up',
- 'count'=>1
- );
+ 'start' => 1,
+ 'skip' => 1,
+ 'direction' => 'up',
+ 'count' => 1
+ );
}
$counter =& $counters[$name];
if (isset($params['start'])) {
- $counter['start'] = $counter['count'] = (int)$params['start'];
+ $counter['start'] = $counter['count'] = (int) $params['start'];
}
if (!empty($params['assign'])) {
@@ -45,9 +47,9 @@ function smarty_function_counter($params, $template)
if (isset($counter['assign'])) {
$template->assign($counter['assign'], $counter['count']);
}
-
+
if (isset($params['print'])) {
- $print = (bool)$params['print'];
+ $print = (bool) $params['print'];
} else {
$print = empty($counter['assign']);
}
@@ -61,18 +63,16 @@ function smarty_function_counter($params, $template)
if (isset($params['skip'])) {
$counter['skip'] = $params['skip'];
}
-
+
if (isset($params['direction'])) {
$counter['direction'] = $params['direction'];
}
- if ($counter['direction'] == "down")
+ if ($counter['direction'] == "down") {
$counter['count'] -= $counter['skip'];
- else
+ } else {
$counter['count'] += $counter['skip'];
-
+ }
+
return $retval;
-
}
-
-?> \ No newline at end of file
diff --git a/library/Smarty/libs/plugins/function.cycle.php b/library/Smarty/libs/plugins/function.cycle.php
index 1778ffb53..8dc5cd9d5 100644
--- a/library/Smarty/libs/plugins/function.cycle.php
+++ b/library/Smarty/libs/plugins/function.cycle.php
@@ -2,13 +2,12 @@
/**
* Smarty plugin
*
- * @package Smarty
+ * @package Smarty
* @subpackage PluginsFunction
*/
/**
* Smarty {cycle} function plugin
- *
* Type: function<br>
* Name: cycle<br>
* Date: May 3, 2002<br>
@@ -31,15 +30,17 @@
* {cycle name=row}
* </pre>
*
- * @link http://www.smarty.net/manual/en/language.function.cycle.php {cycle}
- * (Smarty online manual)
- * @author Monte Ohrt <monte at ohrt dot com>
- * @author credit to Mark Priatel <mpriatel@rogers.com>
- * @author credit to Gerard <gerard@interfold.com>
- * @author credit to Jason Sweat <jsweat_php@yahoo.com>
+ * @link http://www.smarty.net/manual/en/language.function.cycle.php {cycle}
+ * (Smarty online manual)
+ * @author Monte Ohrt <monte at ohrt dot com>
+ * @author credit to Mark Priatel <mpriatel@rogers.com>
+ * @author credit to Gerard <gerard@interfold.com>
+ * @author credit to Jason Sweat <jsweat_php@yahoo.com>
* @version 1.3
+ *
* @param array $params parameters
* @param Smarty_Internal_Template $template template object
+ *
* @return string|null
*/
@@ -48,18 +49,20 @@ function smarty_function_cycle($params, $template)
static $cycle_vars;
$name = (empty($params['name'])) ? 'default' : $params['name'];
- $print = (isset($params['print'])) ? (bool)$params['print'] : true;
- $advance = (isset($params['advance'])) ? (bool)$params['advance'] : true;
- $reset = (isset($params['reset'])) ? (bool)$params['reset'] : false;
+ $print = (isset($params['print'])) ? (bool) $params['print'] : true;
+ $advance = (isset($params['advance'])) ? (bool) $params['advance'] : true;
+ $reset = (isset($params['reset'])) ? (bool) $params['reset'] : false;
if (!isset($params['values'])) {
- if(!isset($cycle_vars[$name]['values'])) {
+ if (!isset($cycle_vars[$name]['values'])) {
trigger_error("cycle: missing 'values' parameter");
+
return;
}
} else {
- if(isset($cycle_vars[$name]['values'])
- && $cycle_vars[$name]['values'] != $params['values'] ) {
+ if (isset($cycle_vars[$name]['values'])
+ && $cycle_vars[$name]['values'] != $params['values']
+ ) {
$cycle_vars[$name]['index'] = 0;
}
$cycle_vars[$name]['values'] = $params['values'];
@@ -71,13 +74,13 @@ function smarty_function_cycle($params, $template)
$cycle_vars[$name]['delimiter'] = ',';
}
- if(is_array($cycle_vars[$name]['values'])) {
+ if (is_array($cycle_vars[$name]['values'])) {
$cycle_array = $cycle_vars[$name]['values'];
} else {
- $cycle_array = explode($cycle_vars[$name]['delimiter'],$cycle_vars[$name]['values']);
+ $cycle_array = explode($cycle_vars[$name]['delimiter'], $cycle_vars[$name]['values']);
}
- if(!isset($cycle_vars[$name]['index']) || $reset ) {
+ if (!isset($cycle_vars[$name]['index']) || $reset) {
$cycle_vars[$name]['index'] = 0;
}
@@ -86,21 +89,19 @@ function smarty_function_cycle($params, $template)
$template->assign($params['assign'], $cycle_array[$cycle_vars[$name]['index']]);
}
- if($print) {
+ if ($print) {
$retval = $cycle_array[$cycle_vars[$name]['index']];
} else {
$retval = null;
}
- if($advance) {
- if ( $cycle_vars[$name]['index'] >= count($cycle_array) -1 ) {
+ if ($advance) {
+ if ($cycle_vars[$name]['index'] >= count($cycle_array) - 1) {
$cycle_vars[$name]['index'] = 0;
} else {
- $cycle_vars[$name]['index']++;
+ $cycle_vars[$name]['index'] ++;
}
}
return $retval;
}
-
-?> \ No newline at end of file
diff --git a/library/Smarty/libs/plugins/function.fetch.php b/library/Smarty/libs/plugins/function.fetch.php
index eca1182d5..3506d4a8d 100644
--- a/library/Smarty/libs/plugins/function.fetch.php
+++ b/library/Smarty/libs/plugins/function.fetch.php
@@ -2,50 +2,53 @@
/**
* Smarty plugin
*
- * @package Smarty
+ * @package Smarty
* @subpackage PluginsFunction
*/
/**
* Smarty {fetch} plugin
- *
* Type: function<br>
* Name: fetch<br>
* Purpose: fetch file, web or ftp data and display results
*
- * @link http://www.smarty.net/manual/en/language.function.fetch.php {fetch}
- * (Smarty online manual)
+ * @link http://www.smarty.net/manual/en/language.function.fetch.php {fetch}
+ * (Smarty online manual)
* @author Monte Ohrt <monte at ohrt dot com>
+ *
* @param array $params parameters
* @param Smarty_Internal_Template $template template object
+ *
+ * @throws SmartyException
* @return string|null if the assign parameter is passed, Smarty assigns the result to a template variable
*/
function smarty_function_fetch($params, $template)
{
if (empty($params['file'])) {
- trigger_error("[plugin] fetch parameter 'file' cannot be empty",E_USER_NOTICE);
+ trigger_error("[plugin] fetch parameter 'file' cannot be empty", E_USER_NOTICE);
+
return;
}
-
+
// strip file protocol
if (stripos($params['file'], 'file://') === 0) {
$params['file'] = substr($params['file'], 7);
}
-
+
$protocol = strpos($params['file'], '://');
if ($protocol !== false) {
$protocol = strtolower(substr($params['file'], 0, $protocol));
}
-
+
if (isset($template->smarty->security_policy)) {
if ($protocol) {
// remote resource (or php stream, …)
- if(!$template->smarty->security_policy->isTrustedUri($params['file'])) {
+ if (!$template->smarty->security_policy->isTrustedUri($params['file'])) {
return;
}
} else {
// local file
- if(!$template->smarty->security_policy->isTrustedResourceDir($params['file'])) {
+ if (!$template->smarty->security_policy->isTrustedResourceDir($params['file'])) {
return;
}
}
@@ -54,53 +57,54 @@ function smarty_function_fetch($params, $template)
$content = '';
if ($protocol == 'http') {
// http fetch
- if($uri_parts = parse_url($params['file'])) {
+ if ($uri_parts = parse_url($params['file'])) {
// set defaults
$host = $server_name = $uri_parts['host'];
$timeout = 30;
$accept = "image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, */*";
- $agent = "Smarty Template Engine ". Smarty::SMARTY_VERSION;
+ $agent = "Smarty Template Engine " . Smarty::SMARTY_VERSION;
$referer = "";
$uri = !empty($uri_parts['path']) ? $uri_parts['path'] : '/';
$uri .= !empty($uri_parts['query']) ? '?' . $uri_parts['query'] : '';
$_is_proxy = false;
- if(empty($uri_parts['port'])) {
+ if (empty($uri_parts['port'])) {
$port = 80;
} else {
$port = $uri_parts['port'];
}
- if(!empty($uri_parts['user'])) {
+ if (!empty($uri_parts['user'])) {
$user = $uri_parts['user'];
}
- if(!empty($uri_parts['pass'])) {
+ if (!empty($uri_parts['pass'])) {
$pass = $uri_parts['pass'];
}
// loop through parameters, setup headers
- foreach($params as $param_key => $param_value) {
- switch($param_key) {
+ foreach ($params as $param_key => $param_value) {
+ switch ($param_key) {
case "file":
case "assign":
case "assign_headers":
break;
case "user":
- if(!empty($param_value)) {
+ if (!empty($param_value)) {
$user = $param_value;
}
break;
case "pass":
- if(!empty($param_value)) {
+ if (!empty($param_value)) {
$pass = $param_value;
}
break;
case "accept":
- if(!empty($param_value)) {
+ if (!empty($param_value)) {
$accept = $param_value;
}
break;
case "header":
- if(!empty($param_value)) {
- if(!preg_match('![\w\d-]+: .+!',$param_value)) {
- trigger_error("[plugin] invalid header format '".$param_value."'",E_USER_NOTICE);
+ if (!empty($param_value)) {
+ if (!preg_match('![\w\d-]+: .+!', $param_value)) {
+ trigger_error("[plugin] invalid header format '" . $param_value . "'", E_USER_NOTICE);
+
return;
} else {
$extra_headers[] = $param_value;
@@ -108,99 +112,104 @@ function smarty_function_fetch($params, $template)
}
break;
case "proxy_host":
- if(!empty($param_value)) {
+ if (!empty($param_value)) {
$proxy_host = $param_value;
}
break;
case "proxy_port":
- if(!preg_match('!\D!', $param_value)) {
+ if (!preg_match('!\D!', $param_value)) {
$proxy_port = (int) $param_value;
} else {
- trigger_error("[plugin] invalid value for attribute '".$param_key."'",E_USER_NOTICE);
+ trigger_error("[plugin] invalid value for attribute '" . $param_key . "'", E_USER_NOTICE);
+
return;
}
break;
case "agent":
- if(!empty($param_value)) {
+ if (!empty($param_value)) {
$agent = $param_value;
}
break;
case "referer":
- if(!empty($param_value)) {
+ if (!empty($param_value)) {
$referer = $param_value;
}
break;
case "timeout":
- if(!preg_match('!\D!', $param_value)) {
+ if (!preg_match('!\D!', $param_value)) {
$timeout = (int) $param_value;
} else {
- trigger_error("[plugin] invalid value for attribute '".$param_key."'",E_USER_NOTICE);
+ trigger_error("[plugin] invalid value for attribute '" . $param_key . "'", E_USER_NOTICE);
+
return;
}
break;
default:
- trigger_error("[plugin] unrecognized attribute '".$param_key."'",E_USER_NOTICE);
+ trigger_error("[plugin] unrecognized attribute '" . $param_key . "'", E_USER_NOTICE);
+
return;
}
}
- if(!empty($proxy_host) && !empty($proxy_port)) {
+ if (!empty($proxy_host) && !empty($proxy_port)) {
$_is_proxy = true;
- $fp = fsockopen($proxy_host,$proxy_port,$errno,$errstr,$timeout);
+ $fp = fsockopen($proxy_host, $proxy_port, $errno, $errstr, $timeout);
} else {
- $fp = fsockopen($server_name,$port,$errno,$errstr,$timeout);
+ $fp = fsockopen($server_name, $port, $errno, $errstr, $timeout);
}
- if(!$fp) {
- trigger_error("[plugin] unable to fetch: $errstr ($errno)",E_USER_NOTICE);
+ if (!$fp) {
+ trigger_error("[plugin] unable to fetch: $errstr ($errno)", E_USER_NOTICE);
+
return;
} else {
- if($_is_proxy) {
+ if ($_is_proxy) {
fputs($fp, 'GET ' . $params['file'] . " HTTP/1.0\r\n");
} else {
fputs($fp, "GET $uri HTTP/1.0\r\n");
}
- if(!empty($host)) {
+ if (!empty($host)) {
fputs($fp, "Host: $host\r\n");
}
- if(!empty($accept)) {
+ if (!empty($accept)) {
fputs($fp, "Accept: $accept\r\n");
}
- if(!empty($agent)) {
+ if (!empty($agent)) {
fputs($fp, "User-Agent: $agent\r\n");
}
- if(!empty($referer)) {
+ if (!empty($referer)) {
fputs($fp, "Referer: $referer\r\n");
}
- if(isset($extra_headers) && is_array($extra_headers)) {
- foreach($extra_headers as $curr_header) {
- fputs($fp, $curr_header."\r\n");
+ if (isset($extra_headers) && is_array($extra_headers)) {
+ foreach ($extra_headers as $curr_header) {
+ fputs($fp, $curr_header . "\r\n");
}
}
- if(!empty($user) && !empty($pass)) {
- fputs($fp, "Authorization: BASIC ".base64_encode("$user:$pass")."\r\n");
+ if (!empty($user) && !empty($pass)) {
+ fputs($fp, "Authorization: BASIC " . base64_encode("$user:$pass") . "\r\n");
}
fputs($fp, "\r\n");
- while(!feof($fp)) {
- $content .= fgets($fp,4096);
+ while (!feof($fp)) {
+ $content .= fgets($fp, 4096);
}
fclose($fp);
- $csplit = preg_split("!\r\n\r\n!",$content,2);
+ $csplit = preg_split("!\r\n\r\n!", $content, 2);
$content = $csplit[1];
- if(!empty($params['assign_headers'])) {
- $template->assign($params['assign_headers'],preg_split("!\r\n!",$csplit[0]));
+ if (!empty($params['assign_headers'])) {
+ $template->assign($params['assign_headers'], preg_split("!\r\n!", $csplit[0]));
}
}
} else {
- trigger_error("[plugin fetch] unable to parse URL, check syntax",E_USER_NOTICE);
+ trigger_error("[plugin fetch] unable to parse URL, check syntax", E_USER_NOTICE);
+
return;
}
} else {
$content = @file_get_contents($params['file']);
if ($content === false) {
- throw new SmartyException("{fetch} cannot read resource '" . $params['file'] ."'");
+ throw new SmartyException("{fetch} cannot read resource '" . $params['file'] . "'");
}
}
@@ -210,5 +219,3 @@ function smarty_function_fetch($params, $template)
return $content;
}
}
-
-?> \ No newline at end of file
diff --git a/library/Smarty/libs/plugins/function.html_checkboxes.php b/library/Smarty/libs/plugins/function.html_checkboxes.php
index fb9584bbd..d78680368 100644
--- a/library/Smarty/libs/plugins/function.html_checkboxes.php
+++ b/library/Smarty/libs/plugins/function.html_checkboxes.php
@@ -2,13 +2,12 @@
/**
* Smarty plugin
*
- * @package Smarty
+ * @package Smarty
* @subpackage PluginsFunction
*/
/**
* Smarty {html_checkboxes} function plugin
- *
* File: function.html_checkboxes.php<br>
* Type: function<br>
* Name: html_checkboxes<br>
@@ -32,15 +31,17 @@
* - escape (optional) - escape the content (not value), defaults to true
* </pre>
*
- * @link http://www.smarty.net/manual/en/language.function.html.checkboxes.php {html_checkboxes}
- * (Smarty online manual)
+ * @link http://www.smarty.net/manual/en/language.function.html.checkboxes.php {html_checkboxes}
+ * (Smarty online manual)
* @author Christopher Kvarme <christopher.kvarme@flashjab.com>
- * @author credits to Monte Ohrt <monte at ohrt dot com>
+ * @author credits to Monte Ohrt <monte at ohrt dot com>
* @version 1.0
- * @param array $params parameters
+ *
+ * @param array $params parameters
* @param object $template template object
+ *
* @return string
- * @uses smarty_function_escape_special_chars()
+ * @uses smarty_function_escape_special_chars()
*/
function smarty_function_html_checkboxes($params, $template)
{
@@ -58,8 +59,8 @@ function smarty_function_html_checkboxes($params, $template)
$extra = '';
- foreach($params as $_key => $_val) {
- switch($_key) {
+ foreach ($params as $_key => $_val) {
+ switch ($_key) {
case 'name':
case 'separator':
$$_key = (string) $_val;
@@ -89,7 +90,7 @@ function smarty_function_html_checkboxes($params, $template)
if (method_exists($_sel, "__toString")) {
$_sel = smarty_function_escape_special_chars((string) $_sel->__toString());
} else {
- trigger_error("html_checkboxes: selected attribute contains an object of class '". get_class($_sel) ."' without __toString() method", E_USER_NOTICE);
+ trigger_error("html_checkboxes: selected attribute contains an object of class '" . get_class($_sel) . "' without __toString() method", E_USER_NOTICE);
continue;
}
} else {
@@ -101,7 +102,7 @@ function smarty_function_html_checkboxes($params, $template)
if (method_exists($_val, "__toString")) {
$selected = smarty_function_escape_special_chars((string) $_val->__toString());
} else {
- trigger_error("html_checkboxes: selected attribute is an object of class '". get_class($_val) ."' without __toString() method", E_USER_NOTICE);
+ trigger_error("html_checkboxes: selected attribute is an object of class '" . get_class($_val) . "' without __toString() method", E_USER_NOTICE);
}
} else {
$selected = smarty_function_escape_special_chars((string) $_val);
@@ -116,9 +117,27 @@ function smarty_function_html_checkboxes($params, $template)
case 'assign':
break;
+ case 'strict':
+ break;
+
+ case 'disabled':
+ case 'readonly':
+ if (!empty($params['strict'])) {
+ if (!is_scalar($_val)) {
+ trigger_error("html_options: $_key attribute must be a scalar, only boolean true or string '$_key' will actually add the attribute", E_USER_NOTICE);
+ }
+
+ if ($_val === true || $_val === $_key) {
+ $extra .= ' ' . $_key . '="' . smarty_function_escape_special_chars($_key) . '"';
+ }
+
+ break;
+ }
+ // omit break; to fall through!
+
default:
- if(!is_array($_val)) {
- $extra .= ' '.$_key.'="'.smarty_function_escape_special_chars($_val).'"';
+ if (!is_array($_val)) {
+ $extra .= ' ' . $_key . '="' . smarty_function_escape_special_chars($_val) . '"';
} else {
trigger_error("html_checkboxes: extra attribute '$_key' cannot be an array", E_USER_NOTICE);
}
@@ -126,76 +145,79 @@ function smarty_function_html_checkboxes($params, $template)
}
}
- if (!isset($options) && !isset($values))
- return ''; /* raise error here? */
+ if (!isset($options) && !isset($values)) {
+ return '';
+ } /* raise error here? */
$_html_result = array();
if (isset($options)) {
- foreach ($options as $_key=>$_val) {
+ foreach ($options as $_key => $_val) {
$_html_result[] = smarty_function_html_checkboxes_output($name, $_key, $_val, $selected, $extra, $separator, $labels, $label_ids, $escape);
}
} else {
- foreach ($values as $_i=>$_key) {
+ foreach ($values as $_i => $_key) {
$_val = isset($output[$_i]) ? $output[$_i] : '';
$_html_result[] = smarty_function_html_checkboxes_output($name, $_key, $_val, $selected, $extra, $separator, $labels, $label_ids, $escape);
}
}
- if(!empty($params['assign'])) {
+ if (!empty($params['assign'])) {
$template->assign($params['assign'], $_html_result);
} else {
return implode("\n", $_html_result);
}
-
}
-function smarty_function_html_checkboxes_output($name, $value, $output, $selected, $extra, $separator, $labels, $label_ids, $escape=true) {
+function smarty_function_html_checkboxes_output($name, $value, $output, $selected, $extra, $separator, $labels, $label_ids, $escape = true)
+{
$_output = '';
-
+
if (is_object($value)) {
if (method_exists($value, "__toString")) {
$value = (string) $value->__toString();
} else {
- trigger_error("html_options: value is an object of class '". get_class($value) ."' without __toString() method", E_USER_NOTICE);
+ trigger_error("html_options: value is an object of class '" . get_class($value) . "' without __toString() method", E_USER_NOTICE);
+
return '';
}
} else {
$value = (string) $value;
}
-
+
if (is_object($output)) {
if (method_exists($output, "__toString")) {
$output = (string) $output->__toString();
} else {
- trigger_error("html_options: output is an object of class '". get_class($output) ."' without __toString() method", E_USER_NOTICE);
+ trigger_error("html_options: output is an object of class '" . get_class($output) . "' without __toString() method", E_USER_NOTICE);
+
return '';
}
} else {
$output = (string) $output;
}
-
+
if ($labels) {
if ($label_ids) {
$_id = smarty_function_escape_special_chars(preg_replace('![^\w\-\.]!' . Smarty::$_UTF8_MODIFIER, '_', $name . '_' . $value));
$_output .= '<label for="' . $_id . '">';
} else {
$_output .= '<label>';
- }
+ }
}
-
+
$name = smarty_function_escape_special_chars($name);
$value = smarty_function_escape_special_chars($value);
if ($escape) {
$output = smarty_function_escape_special_chars($output);
}
-
+
$_output .= '<input type="checkbox" name="' . $name . '[]" value="' . $value . '"';
-
+
if ($labels && $label_ids) {
$_output .= ' id="' . $_id . '"';
}
-
+
if (is_array($selected)) {
if (isset($selected[$value])) {
$_output .= ' checked="checked"';
@@ -203,14 +225,13 @@ function smarty_function_html_checkboxes_output($name, $value, $output, $selecte
} elseif ($value === $selected) {
$_output .= ' checked="checked"';
}
-
+
$_output .= $extra . ' />' . $output;
if ($labels) {
$_output .= '</label>';
}
-
- $_output .= $separator;
+
+ $_output .= $separator;
+
return $_output;
}
-
-?> \ No newline at end of file
diff --git a/library/Smarty/libs/plugins/function.html_image.php b/library/Smarty/libs/plugins/function.html_image.php
index 6521966bb..5037e8bd1 100644
--- a/library/Smarty/libs/plugins/function.html_image.php
+++ b/library/Smarty/libs/plugins/function.html_image.php
@@ -1,14 +1,13 @@
<?php
/**
* Smarty plugin
- *
- * @package Smarty
+ *
+ * @package Smarty
* @subpackage PluginsFunction
*/
/**
* Smarty {html_image} function plugin
- *
* Type: function<br>
* Name: html_image<br>
* Date: Feb 24, 2003<br>
@@ -23,21 +22,24 @@
* - basedir - (optional) - base directory for absolute paths, default is environment variable DOCUMENT_ROOT
* - path_prefix - prefix for path output (optional, default empty)
* </pre>
- *
- * @link http://www.smarty.net/manual/en/language.function.html.image.php {html_image}
- * (Smarty online manual)
- * @author Monte Ohrt <monte at ohrt dot com>
- * @author credits to Duda <duda@big.hu>
+ *
+ * @link http://www.smarty.net/manual/en/language.function.html.image.php {html_image}
+ * (Smarty online manual)
+ * @author Monte Ohrt <monte at ohrt dot com>
+ * @author credits to Duda <duda@big.hu>
* @version 1.0
+ *
* @param array $params parameters
* @param Smarty_Internal_Template $template template object
- * @return string
- * @uses smarty_function_escape_special_chars()
+ *
+ * @throws SmartyException
+ * @return string
+ * @uses smarty_function_escape_special_chars()
*/
function smarty_function_html_image($params, $template)
{
require_once(SMARTY_PLUGINS_DIR . 'shared.escape_special_chars.php');
-
+
$alt = '';
$file = '';
$height = '';
@@ -47,7 +49,7 @@ function smarty_function_html_image($params, $template)
$suffix = '';
$path_prefix = '';
$basedir = isset($_SERVER['DOCUMENT_ROOT']) ? $_SERVER['DOCUMENT_ROOT'] : '';
- foreach($params as $_key => $_val) {
+ foreach ($params as $_key => $_val) {
switch ($_key) {
case 'file':
case 'height':
@@ -63,7 +65,7 @@ function smarty_function_html_image($params, $template)
$$_key = smarty_function_escape_special_chars($_val);
} else {
throw new SmartyException ("html_image: extra attribute '$_key' cannot be an array", E_USER_NOTICE);
- }
+ }
break;
case 'link':
@@ -77,41 +79,42 @@ function smarty_function_html_image($params, $template)
$extra .= ' ' . $_key . '="' . smarty_function_escape_special_chars($_val) . '"';
} else {
throw new SmartyException ("html_image: extra attribute '$_key' cannot be an array", E_USER_NOTICE);
- }
+ }
break;
- }
- }
+ }
+ }
if (empty($file)) {
trigger_error("html_image: missing 'file' parameter", E_USER_NOTICE);
+
return;
- }
+ }
if ($file[0] == '/') {
$_image_path = $basedir . $file;
} else {
$_image_path = $file;
}
-
+
// strip file protocol
if (stripos($params['file'], 'file://') === 0) {
$params['file'] = substr($params['file'], 7);
}
-
+
$protocol = strpos($params['file'], '://');
if ($protocol !== false) {
$protocol = strtolower(substr($params['file'], 0, $protocol));
}
-
+
if (isset($template->smarty->security_policy)) {
if ($protocol) {
// remote resource (or php stream, …)
- if(!$template->smarty->security_policy->isTrustedUri($params['file'])) {
+ if (!$template->smarty->security_policy->isTrustedUri($params['file'])) {
return;
}
} else {
// local file
- if(!$template->smarty->security_policy->isTrustedResourceDir($params['file'])) {
+ if (!$template->smarty->security_policy->isTrustedResourceDir($_image_path)) {
return;
}
}
@@ -122,23 +125,26 @@ function smarty_function_html_image($params, $template)
if (!$_image_data = @getimagesize($_image_path)) {
if (!file_exists($_image_path)) {
trigger_error("html_image: unable to find '$_image_path'", E_USER_NOTICE);
+
return;
- } else if (!is_readable($_image_path)) {
+ } elseif (!is_readable($_image_path)) {
trigger_error("html_image: unable to read '$_image_path'", E_USER_NOTICE);
+
return;
} else {
trigger_error("html_image: '$_image_path' is not a valid image file", E_USER_NOTICE);
+
return;
- }
+ }
}
if (!isset($params['width'])) {
$width = $_image_data[0];
- }
+ }
if (!isset($params['height'])) {
$height = $_image_data[1];
- }
- }
+ }
+ }
if (isset($params['dpi'])) {
if (strstr($_SERVER['HTTP_USER_AGENT'], 'Mac')) {
@@ -147,13 +153,11 @@ function smarty_function_html_image($params, $template)
$dpi_default = 72;
} else {
$dpi_default = 96;
- }
+ }
$_resize = $dpi_default / $params['dpi'];
$width = round($width * $_resize);
$height = round($height * $_resize);
- }
+ }
return $prefix . '<img src="' . $path_prefix . $file . '" alt="' . $alt . '" width="' . $width . '" height="' . $height . '"' . $extra . ' />' . $suffix;
-}
-
-?> \ No newline at end of file
+}
diff --git a/library/Smarty/libs/plugins/function.html_options.php b/library/Smarty/libs/plugins/function.html_options.php
index 46330e896..7ec3e065c 100644
--- a/library/Smarty/libs/plugins/function.html_options.php
+++ b/library/Smarty/libs/plugins/function.html_options.php
@@ -1,14 +1,13 @@
<?php
/**
* Smarty plugin
- *
- * @package Smarty
+ *
+ * @package Smarty
* @subpackage PluginsFunction
*/
/**
* Smarty {html_options} function plugin
- *
* Type: function<br>
* Name: html_options<br>
* Purpose: Prints the list of <option> tags generated from
@@ -23,17 +22,18 @@
* - id (optional) - string default not set
* - class (optional) - string default not set
* </pre>
- *
- * @link http://www.smarty.net/manual/en/language.function.html.options.php {html_image}
- * (Smarty online manual)
- * @author Monte Ohrt <monte at ohrt dot com>
- * @author Ralf Strehle (minor optimization) <ralf dot strehle at yahoo dot de>
- * @param array $params parameters
- * @param Smarty_Internal_Template $template template object
- * @return string
- * @uses smarty_function_escape_special_chars()
+ *
+ * @link http://www.smarty.net/manual/en/language.function.html.options.php {html_image}
+ * (Smarty online manual)
+ * @author Monte Ohrt <monte at ohrt dot com>
+ * @author Ralf Strehle (minor optimization) <ralf dot strehle at yahoo dot de>
+ *
+ * @param array $params parameters
+ *
+ * @return string
+ * @uses smarty_function_escape_special_chars()
*/
-function smarty_function_html_options($params, $template)
+function smarty_function_html_options($params)
{
require_once(SMARTY_PLUGINS_DIR . 'shared.escape_special_chars.php');
@@ -72,7 +72,7 @@ function smarty_function_html_options($params, $template)
if (method_exists($_sel, "__toString")) {
$_sel = smarty_function_escape_special_chars((string) $_sel->__toString());
} else {
- trigger_error("html_options: selected attribute contains an object of class '". get_class($_sel) ."' without __toString() method", E_USER_NOTICE);
+ trigger_error("html_options: selected attribute contains an object of class '" . get_class($_sel) . "' without __toString() method", E_USER_NOTICE);
continue;
}
} else {
@@ -84,25 +84,44 @@ function smarty_function_html_options($params, $template)
if (method_exists($_val, "__toString")) {
$selected = smarty_function_escape_special_chars((string) $_val->__toString());
} else {
- trigger_error("html_options: selected attribute is an object of class '". get_class($_val) ."' without __toString() method", E_USER_NOTICE);
+ trigger_error("html_options: selected attribute is an object of class '" . get_class($_val) . "' without __toString() method", E_USER_NOTICE);
}
} else {
$selected = smarty_function_escape_special_chars((string) $_val);
}
break;
+ case 'strict':
+ break;
+
+ case 'disabled':
+ case 'readonly':
+ if (!empty($params['strict'])) {
+ if (!is_scalar($_val)) {
+ trigger_error("html_options: $_key attribute must be a scalar, only boolean true or string '$_key' will actually add the attribute", E_USER_NOTICE);
+ }
+
+ if ($_val === true || $_val === $_key) {
+ $extra .= ' ' . $_key . '="' . smarty_function_escape_special_chars($_key) . '"';
+ }
+
+ break;
+ }
+ // omit break; to fall through!
+
default:
if (!is_array($_val)) {
$extra .= ' ' . $_key . '="' . smarty_function_escape_special_chars($_val) . '"';
} else {
trigger_error("html_options: extra attribute '$_key' cannot be an array", E_USER_NOTICE);
- }
+ }
break;
- }
+ }
}
if (!isset($options) && !isset($values)) {
/* raise error here? */
+
return '';
}
@@ -117,14 +136,14 @@ function smarty_function_html_options($params, $template)
foreach ($values as $_i => $_key) {
$_val = isset($output[$_i]) ? $output[$_i] : '';
$_html_result .= smarty_function_html_options_optoutput($_key, $_val, $selected, $id, $class, $_idx);
- }
+ }
}
if (!empty($name)) {
- $_html_class = !empty($class) ? ' class="'.$class.'"' : '';
- $_html_id = !empty($id) ? ' id="'.$id.'"' : '';
+ $_html_class = !empty($class) ? ' class="' . $class . '"' : '';
+ $_html_id = !empty($id) ? ' id="' . $id . '"' : '';
$_html_result = '<select name="' . $name . '"' . $_html_class . $_html_id . $extra . '>' . "\n" . $_html_result . '</select>' . "\n";
- }
+ }
return $_html_result;
}
@@ -141,36 +160,37 @@ function smarty_function_html_options_optoutput($key, $value, $selected, $id, $c
} elseif ($_key === $selected) {
$_html_result .= ' selected="selected"';
}
- $_html_class = !empty($class) ? ' class="'.$class.' option"' : '';
- $_html_id = !empty($id) ? ' id="'.$id.'-'.$idx.'"' : '';
+ $_html_class = !empty($class) ? ' class="' . $class . ' option"' : '';
+ $_html_id = !empty($id) ? ' id="' . $id . '-' . $idx . '"' : '';
if (is_object($value)) {
if (method_exists($value, "__toString")) {
$value = smarty_function_escape_special_chars((string) $value->__toString());
} else {
- trigger_error("html_options: value is an object of class '". get_class($value) ."' without __toString() method", E_USER_NOTICE);
+ trigger_error("html_options: value is an object of class '" . get_class($value) . "' without __toString() method", E_USER_NOTICE);
+
return '';
}
} else {
$value = smarty_function_escape_special_chars((string) $value);
}
$_html_result .= $_html_class . $_html_id . '>' . $value . '</option>' . "\n";
- $idx++;
+ $idx ++;
} else {
$_idx = 0;
- $_html_result = smarty_function_html_options_optgroup($key, $value, $selected, !empty($id) ? ($id.'-'.$idx) : null, $class, $_idx);
- $idx++;
+ $_html_result = smarty_function_html_options_optgroup($key, $value, $selected, !empty($id) ? ($id . '-' . $idx) : null, $class, $_idx);
+ $idx ++;
}
+
return $_html_result;
-}
+}
function smarty_function_html_options_optgroup($key, $values, $selected, $id, $class, &$idx)
{
$optgroup_html = '<optgroup label="' . smarty_function_escape_special_chars($key) . '">' . "\n";
foreach ($values as $key => $value) {
$optgroup_html .= smarty_function_html_options_optoutput($key, $value, $selected, $id, $class, $idx);
- }
+ }
$optgroup_html .= "</optgroup>\n";
- return $optgroup_html;
-}
-?> \ No newline at end of file
+ return $optgroup_html;
+}
diff --git a/library/Smarty/libs/plugins/function.html_radios.php b/library/Smarty/libs/plugins/function.html_radios.php
index 7c830724a..f121d5eae 100644
--- a/library/Smarty/libs/plugins/function.html_radios.php
+++ b/library/Smarty/libs/plugins/function.html_radios.php
@@ -1,14 +1,13 @@
<?php
/**
* Smarty plugin
- *
- * @package Smarty
+ *
+ * @package Smarty
* @subpackage PluginsFunction
*/
/**
* Smarty {html_radios} function plugin
- *
* File: function.html_radios.php<br>
* Type: function<br>
* Name: html_radios<br>
@@ -31,16 +30,18 @@
* {html_radios values=$ids name='box' separator='<br>' output=$names}
* {html_radios values=$ids checked=$checked separator='<br>' output=$names}
* </pre>
- *
- * @link http://smarty.php.net/manual/en/language.function.html.radios.php {html_radios}
- * (Smarty online manual)
- * @author Christopher Kvarme <christopher.kvarme@flashjab.com>
- * @author credits to Monte Ohrt <monte at ohrt dot com>
+ *
+ * @link http://smarty.php.net/manual/en/language.function.html.radios.php {html_radios}
+ * (Smarty online manual)
+ * @author Christopher Kvarme <christopher.kvarme@flashjab.com>
+ * @author credits to Monte Ohrt <monte at ohrt dot com>
* @version 1.0
+ *
* @param array $params parameters
* @param Smarty_Internal_Template $template template object
- * @return string
- * @uses smarty_function_escape_special_chars()
+ *
+ * @return string
+ * @uses smarty_function_escape_special_chars()
*/
function smarty_function_html_radios($params, $template)
{
@@ -57,7 +58,7 @@ function smarty_function_html_radios($params, $template)
$output = null;
$extra = '';
- foreach($params as $_key => $_val) {
+ foreach ($params as $_key => $_val) {
switch ($_key) {
case 'name':
case 'separator':
@@ -72,11 +73,11 @@ function smarty_function_html_radios($params, $template)
if (method_exists($_val, "__toString")) {
$selected = smarty_function_escape_special_chars((string) $_val->__toString());
} else {
- trigger_error("html_radios: selected attribute is an object of class '". get_class($_val) ."' without __toString() method", E_USER_NOTICE);
+ trigger_error("html_radios: selected attribute is an object of class '" . get_class($_val) . "' without __toString() method", E_USER_NOTICE);
}
} else {
$selected = (string) $_val;
- }
+ }
break;
case 'escape':
@@ -102,18 +103,37 @@ function smarty_function_html_radios($params, $template)
case 'assign':
break;
+ case 'strict':
+ break;
+
+ case 'disabled':
+ case 'readonly':
+ if (!empty($params['strict'])) {
+ if (!is_scalar($_val)) {
+ trigger_error("html_options: $_key attribute must be a scalar, only boolean true or string '$_key' will actually add the attribute", E_USER_NOTICE);
+ }
+
+ if ($_val === true || $_val === $_key) {
+ $extra .= ' ' . $_key . '="' . smarty_function_escape_special_chars($_key) . '"';
+ }
+
+ break;
+ }
+ // omit break; to fall through!
+
default:
if (!is_array($_val)) {
$extra .= ' ' . $_key . '="' . smarty_function_escape_special_chars($_val) . '"';
} else {
trigger_error("html_radios: extra attribute '$_key' cannot be an array", E_USER_NOTICE);
- }
+ }
break;
- }
- }
+ }
+ }
if (!isset($options) && !isset($values)) {
/* raise error here? */
+
return '';
}
@@ -127,57 +147,59 @@ function smarty_function_html_radios($params, $template)
foreach ($values as $_i => $_key) {
$_val = isset($output[$_i]) ? $output[$_i] : '';
$_html_result[] = smarty_function_html_radios_output($name, $_key, $_val, $selected, $extra, $separator, $labels, $label_ids, $escape);
- }
- }
+ }
+ }
if (!empty($params['assign'])) {
$template->assign($params['assign'], $_html_result);
} else {
return implode("\n", $_html_result);
- }
-}
+ }
+}
function smarty_function_html_radios_output($name, $value, $output, $selected, $extra, $separator, $labels, $label_ids, $escape)
{
$_output = '';
-
+
if (is_object($value)) {
if (method_exists($value, "__toString")) {
$value = (string) $value->__toString();
} else {
- trigger_error("html_options: value is an object of class '". get_class($value) ."' without __toString() method", E_USER_NOTICE);
+ trigger_error("html_options: value is an object of class '" . get_class($value) . "' without __toString() method", E_USER_NOTICE);
+
return '';
}
} else {
$value = (string) $value;
}
-
+
if (is_object($output)) {
if (method_exists($output, "__toString")) {
$output = (string) $output->__toString();
} else {
- trigger_error("html_options: output is an object of class '". get_class($output) ."' without __toString() method", E_USER_NOTICE);
+ trigger_error("html_options: output is an object of class '" . get_class($output) . "' without __toString() method", E_USER_NOTICE);
+
return '';
}
} else {
$output = (string) $output;
}
-
+
if ($labels) {
if ($label_ids) {
$_id = smarty_function_escape_special_chars(preg_replace('![^\w\-\.]!' . Smarty::$_UTF8_MODIFIER, '_', $name . '_' . $value));
$_output .= '<label for="' . $_id . '">';
} else {
$_output .= '<label>';
- }
+ }
}
-
+
$name = smarty_function_escape_special_chars($name);
$value = smarty_function_escape_special_chars($value);
if ($escape) {
$output = smarty_function_escape_special_chars($output);
}
-
+
$_output .= '<input type="radio" name="' . $name . '" value="' . $value . '"';
if ($labels && $label_ids) {
@@ -187,14 +209,13 @@ function smarty_function_html_radios_output($name, $value, $output, $selected, $
if ($value === $selected) {
$_output .= ' checked="checked"';
}
-
+
$_output .= $extra . ' />' . $output;
if ($labels) {
$_output .= '</label>';
}
-
+
$_output .= $separator;
- return $_output;
-}
-?> \ No newline at end of file
+ return $_output;
+}
diff --git a/library/Smarty/libs/plugins/function.html_select_date.php b/library/Smarty/libs/plugins/function.html_select_date.php
index 13c500354..d66256651 100644
--- a/library/Smarty/libs/plugins/function.html_select_date.php
+++ b/library/Smarty/libs/plugins/function.html_select_date.php
@@ -1,8 +1,8 @@
<?php
/**
* Smarty plugin
- *
- * @package Smarty
+ *
+ * @package Smarty
* @subpackage PluginsFunction
*/
@@ -17,11 +17,9 @@ require_once(SMARTY_PLUGINS_DIR . 'shared.make_timestamp.php');
/**
* Smarty {html_select_date} plugin
- *
* Type: function<br>
* Name: html_select_date<br>
* Purpose: Prints the dropdowns for date selection.
- *
* ChangeLog:
* <pre>
* - 1.0 initial release
@@ -37,21 +35,22 @@ require_once(SMARTY_PLUGINS_DIR . 'shared.make_timestamp.php');
* dropdown to include given date unless explicitly set (Monte)
* - 1.3.4 fix behaviour of 0000-00-00 00:00:00 dates to match that
* of 0000-00-00 dates (cybot, boots)
- * - 2.0 complete rewrite for performance,
+ * - 2.0 complete rewrite for performance,
* added attributes month_names, *_id
* </pre>
- *
- * @link http://www.smarty.net/manual/en/language.function.html.select.date.php {html_select_date}
- * (Smarty online manual)
- * @version 2.0
- * @author Andrei Zmievski
- * @author Monte Ohrt <monte at ohrt dot com>
- * @author Rodney Rehm
- * @param array $params parameters
- * @param Smarty_Internal_Template $template template object
- * @return string
+ *
+ * @link http://www.smarty.net/manual/en/language.function.html.select.date.php {html_select_date}
+ * (Smarty online manual)
+ * @version 2.0
+ * @author Andrei Zmievski
+ * @author Monte Ohrt <monte at ohrt dot com>
+ * @author Rodney Rehm
+ *
+ * @param array $params parameters
+ *
+ * @return string
*/
-function smarty_function_html_select_date($params, $template)
+function smarty_function_html_select_date($params)
{
// generate timestamps used for month names only
static $_month_timestamps = null;
@@ -59,7 +58,7 @@ function smarty_function_html_select_date($params, $template)
if ($_month_timestamps === null) {
$_current_year = date('Y');
$_month_timestamps = array();
- for ($i = 1; $i <= 12; $i++) {
+ for ($i = 1; $i <= 12; $i ++) {
$_month_timestamps[$i] = mktime(0, 0, 0, $i, 1, 2000);
}
}
@@ -120,7 +119,7 @@ function smarty_function_html_select_date($params, $template)
$time = smarty_make_timestamp($_value);
}
break;
-
+
case 'month_names':
if (is_array($_value) && count($_value) == 12) {
$$_key = $_value;
@@ -128,7 +127,7 @@ function smarty_function_html_select_date($params, $template)
trigger_error("html_select_date: month_names must be an array of 12 strings", E_USER_NOTICE);
}
break;
-
+
case 'prefix':
case 'field_array':
case 'start_year':
@@ -155,7 +154,7 @@ function smarty_function_html_select_date($params, $template)
case 'month_id':
case 'day_id':
case 'year_id':
- $$_key = (string)$_value;
+ $$_key = (string) $_value;
break;
case 'display_days':
@@ -163,7 +162,7 @@ function smarty_function_html_select_date($params, $template)
case 'display_years':
case 'year_as_text':
case 'reverse_years':
- $$_key = (bool)$_value;
+ $$_key = (bool) $_value;
break;
default:
@@ -171,32 +170,30 @@ function smarty_function_html_select_date($params, $template)
$extra_attrs .= ' ' . $_key . '="' . smarty_function_escape_special_chars($_value) . '"';
} else {
trigger_error("html_select_date: extra attribute '$_key' cannot be an array", E_USER_NOTICE);
- }
+ }
break;
- }
+ }
}
-
+
// Note: date() is faster than strftime()
// Note: explode(date()) is faster than date() date() date()
if (isset($params['time']) && is_array($params['time'])) {
if (isset($params['time'][$prefix . 'Year'])) {
// $_REQUEST[$field_array] given
- foreach (array('Y' => 'Year', 'm' => 'Month', 'd' => 'Day') as $_elementKey => $_elementName) {
+ foreach (array('Y' => 'Year', 'm' => 'Month', 'd' => 'Day') as $_elementKey => $_elementName) {
$_variableName = '_' . strtolower($_elementName);
$$_variableName = isset($params['time'][$prefix . $_elementName])
? $params['time'][$prefix . $_elementName]
: date($_elementKey);
}
- $time = mktime(0, 0, 0, $_month, $_day, $_year);
} elseif (isset($params['time'][$field_array][$prefix . 'Year'])) {
// $_REQUEST given
- foreach (array('Y' => 'Year', 'm' => 'Month', 'd' => 'Day') as $_elementKey => $_elementName) {
+ foreach (array('Y' => 'Year', 'm' => 'Month', 'd' => 'Day') as $_elementKey => $_elementName) {
$_variableName = '_' . strtolower($_elementName);
$$_variableName = isset($params['time'][$field_array][$prefix . $_elementName])
? $params['time'][$field_array][$prefix . $_elementName]
: date($_elementKey);
}
- $time = mktime(0, 0, 0, $_month, $_day, $_year);
} else {
// no date found, use NOW
list($_year, $_month, $_day) = $time = explode('-', date('Y-m-d'));
@@ -217,13 +214,13 @@ function smarty_function_html_select_date($params, $template)
$key .= '_year';
$t = $$key;
if ($t === null) {
- $$key = (int)$_current_year;
- } else if ($t[0] == '+') {
- $$key = (int)($_current_year + trim(substr($t, 1)));
- } else if ($t[0] == '-') {
- $$key = (int)($_current_year - trim(substr($t, 1)));
+ $$key = (int) $_current_year;
+ } elseif ($t[0] == '+') {
+ $$key = (int) ($_current_year + (int)trim(substr($t, 1)));
+ } elseif ($t[0] == '-') {
+ $$key = (int) ($_current_year - (int)trim(substr($t, 1)));
} else {
- $$key = (int)$$key;
+ $$key = (int) $$key;
}
}
@@ -236,73 +233,71 @@ function smarty_function_html_select_date($params, $template)
// generate year <select> or <input>
if ($display_years) {
- $_html_years = '';
$_extra = '';
$_name = $field_array ? ($field_array . '[' . $prefix . 'Year]') : ($prefix . 'Year');
if ($all_extra) {
$_extra .= ' ' . $all_extra;
- }
+ }
if ($year_extra) {
$_extra .= ' ' . $year_extra;
}
-
+
if ($year_as_text) {
$_html_years = '<input type="text" name="' . $_name . '" value="' . $_year . '" size="4" maxlength="4"' . $_extra . $extra_attrs . ' />';
} else {
$_html_years = '<select name="' . $_name . '"';
if ($year_id !== null || $all_id !== null) {
- $_html_years .= ' id="' . smarty_function_escape_special_chars(
- $year_id !== null ? ( $year_id ? $year_id : $_name ) : ( $all_id ? ($all_id . $_name) : $_name )
- ) . '"';
+ $_html_years .= ' id="' . smarty_function_escape_special_chars(
+ $year_id !== null ? ($year_id ? $year_id : $_name) : ($all_id ? ($all_id . $_name) : $_name)
+ ) . '"';
}
if ($year_size) {
$_html_years .= ' size="' . $year_size . '"';
- }
+ }
$_html_years .= $_extra . $extra_attrs . '>' . $option_separator;
-
+
if (isset($year_empty) || isset($all_empty)) {
- $_html_years .= '<option value="">' . ( isset($year_empty) ? $year_empty : $all_empty ) . '</option>' . $option_separator;
+ $_html_years .= '<option value="">' . (isset($year_empty) ? $year_empty : $all_empty) . '</option>' . $option_separator;
}
-
- $op = $start_year > $end_year ? -1 : 1;
- for ($i=$start_year; $op > 0 ? $i <= $end_year : $i >= $end_year; $i += $op) {
+
+ $op = $start_year > $end_year ? - 1 : 1;
+ for ($i = $start_year; $op > 0 ? $i <= $end_year : $i >= $end_year; $i += $op) {
$_html_years .= '<option value="' . $i . '"'
. ($_year == $i ? ' selected="selected"' : '')
. '>' . $i . '</option>' . $option_separator;
}
-
+
$_html_years .= '</select>';
}
}
-
+
// generate month <select> or <input>
if ($display_months) {
- $_html_month = '';
$_extra = '';
$_name = $field_array ? ($field_array . '[' . $prefix . 'Month]') : ($prefix . 'Month');
if ($all_extra) {
$_extra .= ' ' . $all_extra;
- }
+ }
if ($month_extra) {
$_extra .= ' ' . $month_extra;
}
-
+
$_html_months = '<select name="' . $_name . '"';
if ($month_id !== null || $all_id !== null) {
- $_html_months .= ' id="' . smarty_function_escape_special_chars(
- $month_id !== null ? ( $month_id ? $month_id : $_name ) : ( $all_id ? ($all_id . $_name) : $_name )
- ) . '"';
+ $_html_months .= ' id="' . smarty_function_escape_special_chars(
+ $month_id !== null ? ($month_id ? $month_id : $_name) : ($all_id ? ($all_id . $_name) : $_name)
+ ) . '"';
}
if ($month_size) {
$_html_months .= ' size="' . $month_size . '"';
- }
+ }
$_html_months .= $_extra . $extra_attrs . '>' . $option_separator;
-
+
if (isset($month_empty) || isset($all_empty)) {
- $_html_months .= '<option value="">' . ( isset($month_empty) ? $month_empty : $all_empty ) . '</option>' . $option_separator;
+ $_html_months .= '<option value="">' . (isset($month_empty) ? $month_empty : $all_empty) . '</option>' . $option_separator;
}
-
- for ($i = 1; $i <= 12; $i++) {
+
+ for ($i = 1; $i <= 12; $i ++) {
$_val = sprintf('%02d', $i);
$_text = isset($month_names) ? smarty_function_escape_special_chars($month_names[$i]) : ($month_format == "%m" ? $_val : strftime($month_format, $_month_timestamps[$i]));
$_value = $month_value_format == "%m" ? $_val : strftime($month_value_format, $_month_timestamps[$i]);
@@ -310,52 +305,51 @@ function smarty_function_html_select_date($params, $template)
. ($_val == $_month ? ' selected="selected"' : '')
. '>' . $_text . '</option>' . $option_separator;
}
-
+
$_html_months .= '</select>';
}
-
+
// generate day <select> or <input>
if ($display_days) {
- $_html_day = '';
$_extra = '';
$_name = $field_array ? ($field_array . '[' . $prefix . 'Day]') : ($prefix . 'Day');
if ($all_extra) {
$_extra .= ' ' . $all_extra;
- }
+ }
if ($day_extra) {
$_extra .= ' ' . $day_extra;
}
-
+
$_html_days = '<select name="' . $_name . '"';
if ($day_id !== null || $all_id !== null) {
- $_html_days .= ' id="' . smarty_function_escape_special_chars(
- $day_id !== null ? ( $day_id ? $day_id : $_name ) : ( $all_id ? ($all_id . $_name) : $_name )
- ) . '"';
+ $_html_days .= ' id="' . smarty_function_escape_special_chars(
+ $day_id !== null ? ($day_id ? $day_id : $_name) : ($all_id ? ($all_id . $_name) : $_name)
+ ) . '"';
}
if ($day_size) {
$_html_days .= ' size="' . $day_size . '"';
- }
+ }
$_html_days .= $_extra . $extra_attrs . '>' . $option_separator;
-
+
if (isset($day_empty) || isset($all_empty)) {
- $_html_days .= '<option value="">' . ( isset($day_empty) ? $day_empty : $all_empty ) . '</option>' . $option_separator;
+ $_html_days .= '<option value="">' . (isset($day_empty) ? $day_empty : $all_empty) . '</option>' . $option_separator;
}
-
- for ($i = 1; $i <= 31; $i++) {
+
+ for ($i = 1; $i <= 31; $i ++) {
$_val = sprintf('%02d', $i);
$_text = $day_format == '%02d' ? $_val : sprintf($day_format, $i);
- $_value = $day_value_format == '%02d' ? $_val : sprintf($day_value_format, $i);
+ $_value = $day_value_format == '%02d' ? $_val : sprintf($day_value_format, $i);
$_html_days .= '<option value="' . $_value . '"'
. ($_val == $_day ? ' selected="selected"' : '')
. '>' . $_text . '</option>' . $option_separator;
}
-
+
$_html_days .= '</select>';
}
// order the fields for output
$_html = '';
- for ($i=0; $i <= 2; $i++) {
+ for ($i = 0; $i <= 2; $i ++) {
switch ($field_order[$i]) {
case 'Y':
case 'y':
@@ -365,8 +359,8 @@ function smarty_function_html_select_date($params, $template)
}
$_html .= $_html_years;
}
- break;
-
+ break;
+
case 'm':
case 'M':
if (isset($_html_months)) {
@@ -375,8 +369,8 @@ function smarty_function_html_select_date($params, $template)
}
$_html .= $_html_months;
}
- break;
-
+ break;
+
case 'd':
case 'D':
if (isset($_html_days)) {
@@ -385,10 +379,9 @@ function smarty_function_html_select_date($params, $template)
}
$_html .= $_html_days;
}
- break;
+ break;
}
}
+
return $_html;
}
-
-?> \ No newline at end of file
diff --git a/library/Smarty/libs/plugins/function.html_select_time.php b/library/Smarty/libs/plugins/function.html_select_time.php
index 9fb8038e4..9af6aad5b 100644
--- a/library/Smarty/libs/plugins/function.html_select_time.php
+++ b/library/Smarty/libs/plugins/function.html_select_time.php
@@ -2,7 +2,7 @@
/**
* Smarty plugin
*
- * @package Smarty
+ * @package Smarty
* @subpackage PluginsFunction
*/
@@ -17,21 +17,21 @@ require_once(SMARTY_PLUGINS_DIR . 'shared.make_timestamp.php');
/**
* Smarty {html_select_time} function plugin
- *
* Type: function<br>
* Name: html_select_time<br>
* Purpose: Prints the dropdowns for time selection
*
- * @link http://www.smarty.net/manual/en/language.function.html.select.time.php {html_select_time}
- * (Smarty online manual)
- * @author Roberto Berto <roberto@berto.net>
- * @author Monte Ohrt <monte AT ohrt DOT com>
- * @param array $params parameters
- * @param Smarty_Internal_Template $template template object
+ * @link http://www.smarty.net/manual/en/language.function.html.select.time.php {html_select_time}
+ * (Smarty online manual)
+ * @author Roberto Berto <roberto@berto.net>
+ * @author Monte Ohrt <monte AT ohrt DOT com>
+ *
+ * @param array $params parameters
+ *
* @return string
- * @uses smarty_make_timestamp()
+ * @uses smarty_make_timestamp()
*/
-function smarty_function_html_select_time($params, $template)
+function smarty_function_html_select_time($params)
{
$prefix = "Time_";
$field_array = null;
@@ -117,7 +117,7 @@ function smarty_function_html_select_time($params, $template)
case 'minute_value_format':
case 'second_format':
case 'second_value_format':
- $$_key = (string)$_value;
+ $$_key = (string) $_value;
break;
case 'display_hours':
@@ -125,7 +125,7 @@ function smarty_function_html_select_time($params, $template)
case 'display_seconds':
case 'display_meridian':
case 'use_24_hours':
- $$_key = (bool)$_value;
+ $$_key = (bool) $_value;
break;
case 'minute_interval':
@@ -135,7 +135,7 @@ function smarty_function_html_select_time($params, $template)
case 'minute_size':
case 'second_size':
case 'meridian_size':
- $$_key = (int)$_value;
+ $$_key = (int) $_value;
break;
default:
@@ -151,7 +151,7 @@ function smarty_function_html_select_time($params, $template)
if (isset($params['time']) && is_array($params['time'])) {
if (isset($params['time'][$prefix . 'Hour'])) {
// $_REQUEST[$field_array] given
- foreach (array('H' => 'Hour', 'i' => 'Minute', 's' => 'Second') as $_elementKey => $_elementName) {
+ foreach (array('H' => 'Hour', 'i' => 'Minute', 's' => 'Second') as $_elementKey => $_elementName) {
$_variableName = '_' . strtolower($_elementName);
$$_variableName = isset($params['time'][$prefix . $_elementName])
? $params['time'][$prefix . $_elementName]
@@ -160,11 +160,11 @@ function smarty_function_html_select_time($params, $template)
$_meridian = isset($params['time'][$prefix . 'Meridian'])
? (' ' . $params['time'][$prefix . 'Meridian'])
: '';
- $time = strtotime( $_hour . ':' . $_minute . ':' . $_second . $_meridian );
+ $time = strtotime($_hour . ':' . $_minute . ':' . $_second . $_meridian);
list($_hour, $_minute, $_second) = $time = explode('-', date('H-i-s', $time));
} elseif (isset($params['time'][$field_array][$prefix . 'Hour'])) {
// $_REQUEST given
- foreach (array('H' => 'Hour', 'i' => 'Minute', 's' => 'Second') as $_elementKey => $_elementName) {
+ foreach (array('H' => 'Hour', 'i' => 'Minute', 's' => 'Second') as $_elementKey => $_elementName) {
$_variableName = '_' . strtolower($_elementName);
$$_variableName = isset($params['time'][$field_array][$prefix . $_elementName])
? $params['time'][$field_array][$prefix . $_elementName]
@@ -173,7 +173,7 @@ function smarty_function_html_select_time($params, $template)
$_meridian = isset($params['time'][$field_array][$prefix . 'Meridian'])
? (' ' . $params['time'][$field_array][$prefix . 'Meridian'])
: '';
- $time = strtotime( $_hour . ':' . $_minute . ':' . $_second . $_meridian );
+ $time = strtotime($_hour . ':' . $_minute . ':' . $_second . $_meridian);
list($_hour, $_minute, $_second) = $time = explode('-', date('H-i-s', $time));
} else {
// no date found, use NOW
@@ -204,8 +204,8 @@ function smarty_function_html_select_time($params, $template)
$_html_hours = '<select name="' . $_name . '"';
if ($hour_id !== null || $all_id !== null) {
$_html_hours .= ' id="' . smarty_function_escape_special_chars(
- $hour_id !== null ? ( $hour_id ? $hour_id : $_name ) : ( $all_id ? ($all_id . $_name) : $_name )
- ) . '"';
+ $hour_id !== null ? ($hour_id ? $hour_id : $_name) : ($all_id ? ($all_id . $_name) : $_name)
+ ) . '"';
}
if ($hour_size) {
$_html_hours .= ' size="' . $hour_size . '"';
@@ -213,12 +213,12 @@ function smarty_function_html_select_time($params, $template)
$_html_hours .= $_extra . $extra_attrs . '>' . $option_separator;
if (isset($hour_empty) || isset($all_empty)) {
- $_html_hours .= '<option value="">' . ( isset($hour_empty) ? $hour_empty : $all_empty ) . '</option>' . $option_separator;
+ $_html_hours .= '<option value="">' . (isset($hour_empty) ? $hour_empty : $all_empty) . '</option>' . $option_separator;
}
$start = $use_24_hours ? 0 : 1;
$end = $use_24_hours ? 23 : 12;
- for ($i=$start; $i <= $end; $i++) {
+ for ($i = $start; $i <= $end; $i ++) {
$_val = sprintf('%02d', $i);
$_text = $hour_format == '%02d' ? $_val : sprintf($hour_format, $i);
$_value = $hour_value_format == '%02d' ? $_val : sprintf($hour_value_format, $i);
@@ -226,7 +226,7 @@ function smarty_function_html_select_time($params, $template)
if (!$use_24_hours) {
$_hour12 = $_hour == 0
? 12
- : ($_hour <= 12 ? $_hour : $_hour -12);
+ : ($_hour <= 12 ? $_hour : $_hour - 12);
}
$selected = $_hour !== null ? ($use_24_hours ? $_hour == $_val : $_hour12 == $_val) : null;
@@ -253,8 +253,8 @@ function smarty_function_html_select_time($params, $template)
$_html_minutes = '<select name="' . $_name . '"';
if ($minute_id !== null || $all_id !== null) {
$_html_minutes .= ' id="' . smarty_function_escape_special_chars(
- $minute_id !== null ? ( $minute_id ? $minute_id : $_name ) : ( $all_id ? ($all_id . $_name) : $_name )
- ) . '"';
+ $minute_id !== null ? ($minute_id ? $minute_id : $_name) : ($all_id ? ($all_id . $_name) : $_name)
+ ) . '"';
}
if ($minute_size) {
$_html_minutes .= ' size="' . $minute_size . '"';
@@ -262,11 +262,11 @@ function smarty_function_html_select_time($params, $template)
$_html_minutes .= $_extra . $extra_attrs . '>' . $option_separator;
if (isset($minute_empty) || isset($all_empty)) {
- $_html_minutes .= '<option value="">' . ( isset($minute_empty) ? $minute_empty : $all_empty ) . '</option>' . $option_separator;
+ $_html_minutes .= '<option value="">' . (isset($minute_empty) ? $minute_empty : $all_empty) . '</option>' . $option_separator;
}
$selected = $_minute !== null ? ($_minute - $_minute % $minute_interval) : null;
- for ($i=0; $i <= 59; $i += $minute_interval) {
+ for ($i = 0; $i <= 59; $i += $minute_interval) {
$_val = sprintf('%02d', $i);
$_text = $minute_format == '%02d' ? $_val : sprintf($minute_format, $i);
$_value = $minute_value_format == '%02d' ? $_val : sprintf($minute_value_format, $i);
@@ -293,8 +293,8 @@ function smarty_function_html_select_time($params, $template)
$_html_seconds = '<select name="' . $_name . '"';
if ($second_id !== null || $all_id !== null) {
$_html_seconds .= ' id="' . smarty_function_escape_special_chars(
- $second_id !== null ? ( $second_id ? $second_id : $_name ) : ( $all_id ? ($all_id . $_name) : $_name )
- ) . '"';
+ $second_id !== null ? ($second_id ? $second_id : $_name) : ($all_id ? ($all_id . $_name) : $_name)
+ ) . '"';
}
if ($second_size) {
$_html_seconds .= ' size="' . $second_size . '"';
@@ -302,11 +302,11 @@ function smarty_function_html_select_time($params, $template)
$_html_seconds .= $_extra . $extra_attrs . '>' . $option_separator;
if (isset($second_empty) || isset($all_empty)) {
- $_html_seconds .= '<option value="">' . ( isset($second_empty) ? $second_empty : $all_empty ) . '</option>' . $option_separator;
+ $_html_seconds .= '<option value="">' . (isset($second_empty) ? $second_empty : $all_empty) . '</option>' . $option_separator;
}
$selected = $_second !== null ? ($_second - $_second % $second_interval) : null;
- for ($i=0; $i <= 59; $i += $second_interval) {
+ for ($i = 0; $i <= 59; $i += $second_interval) {
$_val = sprintf('%02d', $i);
$_text = $second_format == '%02d' ? $_val : sprintf($second_format, $i);
$_value = $second_value_format == '%02d' ? $_val : sprintf($second_value_format, $i);
@@ -333,8 +333,8 @@ function smarty_function_html_select_time($params, $template)
$_html_meridian = '<select name="' . $_name . '"';
if ($meridian_id !== null || $all_id !== null) {
$_html_meridian .= ' id="' . smarty_function_escape_special_chars(
- $meridian_id !== null ? ( $meridian_id ? $meridian_id : $_name ) : ( $all_id ? ($all_id . $_name) : $_name )
- ) . '"';
+ $meridian_id !== null ? ($meridian_id ? $meridian_id : $_name) : ($all_id ? ($all_id . $_name) : $_name)
+ ) . '"';
}
if ($meridian_size) {
$_html_meridian .= ' size="' . $meridian_size . '"';
@@ -342,11 +342,11 @@ function smarty_function_html_select_time($params, $template)
$_html_meridian .= $_extra . $extra_attrs . '>' . $option_separator;
if (isset($meridian_empty) || isset($all_empty)) {
- $_html_meridian .= '<option value="">' . ( isset($meridian_empty) ? $meridian_empty : $all_empty ) . '</option>' . $option_separator;
+ $_html_meridian .= '<option value="">' . (isset($meridian_empty) ? $meridian_empty : $all_empty) . '</option>' . $option_separator;
}
- $_html_meridian .= '<option value="am"'. ($_hour < 12 ? ' selected="selected"' : '') .'>AM</option>' . $option_separator
- . '<option value="pm"'. ($_hour < 12 ? '' : ' selected="selected"') .'>PM</option>' . $option_separator
+ $_html_meridian .= '<option value="am"' . ($_hour > 0 && $_hour < 12 ? ' selected="selected"' : '') . '>AM</option>' . $option_separator
+ . '<option value="pm"' . ($_hour < 12 ? '' : ' selected="selected"') . '>PM</option>' . $option_separator
. '</select>';
}
@@ -362,5 +362,3 @@ function smarty_function_html_select_time($params, $template)
return $_html;
}
-
-?> \ No newline at end of file
diff --git a/library/Smarty/libs/plugins/function.html_table.php b/library/Smarty/libs/plugins/function.html_table.php
index 6b9cb9d12..ec7ba48a4 100644
--- a/library/Smarty/libs/plugins/function.html_table.php
+++ b/library/Smarty/libs/plugins/function.html_table.php
@@ -2,13 +2,12 @@
/**
* Smarty plugin
*
- * @package Smarty
+ * @package Smarty
* @subpackage PluginsFunction
*/
/**
* Smarty {html_table} function plugin
- *
* Type: function<br>
* Name: html_table<br>
* Date: Feb 17, 2003<br>
@@ -37,17 +36,18 @@
* {table loop=$data cols="first,second,third" tr_attr=$colors}
* </pre>
*
- * @author Monte Ohrt <monte at ohrt dot com>
- * @author credit to Messju Mohr <messju at lammfellpuschen dot de>
- * @author credit to boots <boots dot smarty at yahoo dot com>
- * @version 1.1
- * @link http://www.smarty.net/manual/en/language.function.html.table.php {html_table}
- * (Smarty online manual)
- * @param array $params parameters
- * @param Smarty_Internal_Template $template template object
+ * @author Monte Ohrt <monte at ohrt dot com>
+ * @author credit to Messju Mohr <messju at lammfellpuschen dot de>
+ * @author credit to boots <boots dot smarty at yahoo dot com>
+ * @version 1.1
+ * @link http://www.smarty.net/manual/en/language.function.html.table.php {html_table}
+ * (Smarty online manual)
+ *
+ * @param array $params parameters
+ *
* @return string
*/
-function smarty_function_html_table($params, $template)
+function smarty_function_html_table($params)
{
$table_attr = 'border="1"';
$tr_attr = '';
@@ -63,14 +63,15 @@ function smarty_function_html_table($params, $template)
$loop = null;
if (!isset($params['loop'])) {
- trigger_error("html_table: missing 'loop' parameter",E_USER_WARNING);
+ trigger_error("html_table: missing 'loop' parameter", E_USER_WARNING);
+
return;
}
foreach ($params as $_key => $_value) {
switch ($_key) {
case 'loop':
- $$_key = (array)$_value;
+ $$_key = (array) $_value;
break;
case 'cols':
@@ -81,14 +82,14 @@ function smarty_function_html_table($params, $template)
$cols = explode(',', $_value);
$cols_count = count($cols);
} elseif (!empty($_value)) {
- $cols_count = (int)$_value;
+ $cols_count = (int) $_value;
} else {
$cols_count = $cols;
}
break;
case 'rows':
- $$_key = (int)$_value;
+ $$_key = (int) $_value;
break;
case 'table_attr':
@@ -97,7 +98,7 @@ function smarty_function_html_table($params, $template)
case 'vdir':
case 'inner':
case 'caption':
- $$_key = (string)$_value;
+ $$_key = (string) $_value;
break;
case 'tr_attr':
@@ -129,7 +130,7 @@ function smarty_function_html_table($params, $template)
$cols = ($hdir == 'right') ? $cols : array_reverse($cols);
$output .= "<thead><tr>\n";
- for ($r = 0; $r < $cols_count; $r++) {
+ for ($r = 0; $r < $cols_count; $r ++) {
$output .= '<th' . smarty_function_html_table_cycle('th', $th_attr, $r) . '>';
$output .= $cols[$r];
$output .= "</th>\n";
@@ -138,12 +139,12 @@ function smarty_function_html_table($params, $template)
}
$output .= "<tbody>\n";
- for ($r = 0; $r < $rows; $r++) {
+ for ($r = 0; $r < $rows; $r ++) {
$output .= "<tr" . smarty_function_html_table_cycle('tr', $tr_attr, $r) . ">\n";
- $rx = ($vdir == 'down') ? $r * $cols_count : ($rows-1 - $r) * $cols_count;
+ $rx = ($vdir == 'down') ? $r * $cols_count : ($rows - 1 - $r) * $cols_count;
- for ($c = 0; $c < $cols_count; $c++) {
- $x = ($hdir == 'right') ? $rx + $c : $rx + $cols_count-1 - $c;
+ for ($c = 0; $c < $cols_count; $c ++) {
+ $x = ($hdir == 'right') ? $rx + $c : $rx + $cols_count - 1 - $c;
if ($inner != 'cols') {
/* shuffle x to loop over rows*/
$x = floor($x / $cols_count) + ($x % $cols_count) * $rows;
@@ -173,5 +174,3 @@ function smarty_function_html_table_cycle($name, $var, $no)
return ($ret) ? ' ' . $ret : '';
}
-
-?> \ No newline at end of file
diff --git a/library/Smarty/libs/plugins/function.mailto.php b/library/Smarty/libs/plugins/function.mailto.php
index 55d5c0602..520fb7aa6 100644
--- a/library/Smarty/libs/plugins/function.mailto.php
+++ b/library/Smarty/libs/plugins/function.mailto.php
@@ -2,13 +2,12 @@
/**
* Smarty plugin
*
- * @package Smarty
+ * @package Smarty
* @subpackage PluginsFunction
*/
/**
* Smarty {mailto} function plugin
- *
* Type: function<br>
* Name: mailto<br>
* Date: May 21, 2002
@@ -39,22 +38,24 @@
* {mailto address="me@domain.com" extra='class="mailto"'}
* </pre>
*
- * @link http://www.smarty.net/manual/en/language.function.mailto.php {mailto}
- * (Smarty online manual)
- * @version 1.2
- * @author Monte Ohrt <monte at ohrt dot com>
- * @author credits to Jason Sweat (added cc, bcc and subject functionality)
- * @param array $params parameters
- * @param Smarty_Internal_Template $template template object
+ * @link http://www.smarty.net/manual/en/language.function.mailto.php {mailto}
+ * (Smarty online manual)
+ * @version 1.2
+ * @author Monte Ohrt <monte at ohrt dot com>
+ * @author credits to Jason Sweat (added cc, bcc and subject functionality)
+ *
+ * @param array $params parameters
+ *
* @return string
*/
-function smarty_function_mailto($params, $template)
+function smarty_function_mailto($params)
{
static $_allowed_encoding = array('javascript' => true, 'javascript_charcode' => true, 'hex' => true, 'none' => true);
$extra = '';
if (empty($params['address'])) {
- trigger_error("mailto: missing 'address' parameter",E_USER_WARNING);
+ trigger_error("mailto: missing 'address' parameter", E_USER_WARNING);
+
return;
} else {
$address = $params['address'];
@@ -71,8 +72,9 @@ function smarty_function_mailto($params, $template)
case 'cc':
case 'bcc':
case 'followupto':
- if (!empty($value))
- $mail_parms[] = $var . '=' . str_replace($search, $replace, rawurlencode($value));
+ if (!empty($value)) {
+ $mail_parms[] = $var . '=' . str_replace($search, $replace, rawurlencode($value));
+ }
break;
case 'subject':
@@ -91,10 +93,11 @@ function smarty_function_mailto($params, $template)
if ($mail_parms) {
$address .= '?' . join('&', $mail_parms);
}
-
+
$encode = (empty($params['encode'])) ? 'none' : $params['encode'];
if (!isset($_allowed_encoding[$encode])) {
trigger_error("mailto: 'encode' parameter must be none, javascript, javascript_charcode or hex", E_USER_WARNING);
+
return;
}
// FIXME: (rodneyrehm) document.write() excues me what? 1998 has passed!
@@ -102,7 +105,7 @@ function smarty_function_mailto($params, $template)
$string = 'document.write(\'<a href="mailto:' . $address . '" ' . $extra . '>' . $text . '</a>\');';
$js_encode = '';
- for ($x = 0, $_length = strlen($string); $x < $_length; $x++) {
+ for ($x = 0, $_length = strlen($string); $x < $_length; $x ++) {
$js_encode .= '%' . bin2hex($string[$x]);
}
@@ -110,7 +113,7 @@ function smarty_function_mailto($params, $template)
} elseif ($encode == 'javascript_charcode') {
$string = '<a href="mailto:' . $address . '" ' . $extra . '>' . $text . '</a>';
- for($x = 0, $y = strlen($string); $x < $y; $x++) {
+ for ($x = 0, $y = strlen($string); $x < $y; $x ++) {
$ord[] = ord($string[$x]);
}
@@ -125,11 +128,12 @@ function smarty_function_mailto($params, $template)
} elseif ($encode == 'hex') {
preg_match('!^(.*)(\?.*)$!', $address, $match);
if (!empty($match[2])) {
- trigger_error("mailto: hex encoding does not work with extra attributes. Try javascript.",E_USER_WARNING);
+ trigger_error("mailto: hex encoding does not work with extra attributes. Try javascript.", E_USER_WARNING);
+
return;
}
$address_encode = '';
- for ($x = 0, $_length = strlen($address); $x < $_length; $x++) {
+ for ($x = 0, $_length = strlen($address); $x < $_length; $x ++) {
if (preg_match('!\w!' . Smarty::$_UTF8_MODIFIER, $address[$x])) {
$address_encode .= '%' . bin2hex($address[$x]);
} else {
@@ -137,16 +141,15 @@ function smarty_function_mailto($params, $template)
}
}
$text_encode = '';
- for ($x = 0, $_length = strlen($text); $x < $_length; $x++) {
+ for ($x = 0, $_length = strlen($text); $x < $_length; $x ++) {
$text_encode .= '&#x' . bin2hex($text[$x]) . ';';
}
$mailto = "&#109;&#97;&#105;&#108;&#116;&#111;&#58;";
+
return '<a href="' . $mailto . $address_encode . '" ' . $extra . '>' . $text_encode . '</a>';
} else {
// no encoding
return '<a href="mailto:' . $address . '" ' . $extra . '>' . $text . '</a>';
}
}
-
-?> \ No newline at end of file
diff --git a/library/Smarty/libs/plugins/function.math.php b/library/Smarty/libs/plugins/function.math.php
index f4d3f05ee..aba76e825 100644
--- a/library/Smarty/libs/plugins/function.math.php
+++ b/library/Smarty/libs/plugins/function.math.php
@@ -1,87 +1,91 @@
<?php
/**
* Smarty plugin
- *
* This plugin is only for Smarty2 BC
- * @package Smarty
+ *
+ * @package Smarty
* @subpackage PluginsFunction
*/
/**
* Smarty {math} function plugin
- *
* Type: function<br>
* Name: math<br>
* Purpose: handle math computations in template
*
- * @link http://www.smarty.net/manual/en/language.function.math.php {math}
- * (Smarty online manual)
+ * @link http://www.smarty.net/manual/en/language.function.math.php {math}
+ * (Smarty online manual)
* @author Monte Ohrt <monte at ohrt dot com>
+ *
* @param array $params parameters
* @param Smarty_Internal_Template $template template object
+ *
* @return string|null
*/
function smarty_function_math($params, $template)
{
static $_allowed_funcs = array(
- 'int' => true, 'abs' => true, 'ceil' => true, 'cos' => true, 'exp' => true, 'floor' => true,
- 'log' => true, 'log10' => true, 'max' => true, 'min' => true, 'pi' => true, 'pow' => true,
- 'rand' => true, 'round' => true, 'sin' => true, 'sqrt' => true, 'srand' => true ,'tan' => true
+ 'int' => true, 'abs' => true, 'ceil' => true, 'cos' => true, 'exp' => true, 'floor' => true,
+ 'log' => true, 'log10' => true, 'max' => true, 'min' => true, 'pi' => true, 'pow' => true,
+ 'rand' => true, 'round' => true, 'sin' => true, 'sqrt' => true, 'srand' => true, 'tan' => true
);
// be sure equation parameter is present
if (empty($params['equation'])) {
- trigger_error("math: missing equation parameter",E_USER_WARNING);
+ trigger_error("math: missing equation parameter", E_USER_WARNING);
+
return;
}
$equation = $params['equation'];
// make sure parenthesis are balanced
- if (substr_count($equation,"(") != substr_count($equation,")")) {
- trigger_error("math: unbalanced parenthesis",E_USER_WARNING);
+ if (substr_count($equation, "(") != substr_count($equation, ")")) {
+ trigger_error("math: unbalanced parenthesis", E_USER_WARNING);
+
return;
}
// match all vars in equation, make sure all are passed
- preg_match_all("!(?:0x[a-fA-F0-9]+)|([a-zA-Z][a-zA-Z0-9_]*)!",$equation, $match);
+ preg_match_all("!(?:0x[a-fA-F0-9]+)|([a-zA-Z][a-zA-Z0-9_]*)!", $equation, $match);
- foreach($match[1] as $curr_var) {
+ foreach ($match[1] as $curr_var) {
if ($curr_var && !isset($params[$curr_var]) && !isset($_allowed_funcs[$curr_var])) {
- trigger_error("math: function call $curr_var not allowed",E_USER_WARNING);
+ trigger_error("math: function call $curr_var not allowed", E_USER_WARNING);
+
return;
}
}
- foreach($params as $key => $val) {
+ foreach ($params as $key => $val) {
if ($key != "equation" && $key != "format" && $key != "assign") {
// make sure value is not empty
- if (strlen($val)==0) {
- trigger_error("math: parameter $key is empty",E_USER_WARNING);
+ if (strlen($val) == 0) {
+ trigger_error("math: parameter $key is empty", E_USER_WARNING);
+
return;
}
if (!is_numeric($val)) {
- trigger_error("math: parameter $key: is not numeric",E_USER_WARNING);
+ trigger_error("math: parameter $key: is not numeric", E_USER_WARNING);
+
return;
}
$equation = preg_replace("/\b$key\b/", " \$params['$key'] ", $equation);
}
}
$smarty_math_result = null;
- eval("\$smarty_math_result = ".$equation.";");
+ eval("\$smarty_math_result = " . $equation . ";");
if (empty($params['format'])) {
if (empty($params['assign'])) {
return $smarty_math_result;
} else {
- $template->assign($params['assign'],$smarty_math_result);
+ $template->assign($params['assign'], $smarty_math_result);
}
} else {
- if (empty($params['assign'])){
- printf($params['format'],$smarty_math_result);
+ if (empty($params['assign'])) {
+ printf($params['format'], $smarty_math_result);
} else {
- $template->assign($params['assign'],sprintf($params['format'],$smarty_math_result));
+ $template->assign($params['assign'], sprintf($params['format'], $smarty_math_result));
}
}
}
-
-?> \ No newline at end of file
diff --git a/library/Smarty/libs/plugins/modifier.capitalize.php b/library/Smarty/libs/plugins/modifier.capitalize.php
index a78e3632a..a8ad76370 100644
--- a/library/Smarty/libs/plugins/modifier.capitalize.php
+++ b/library/Smarty/libs/plugins/modifier.capitalize.php
@@ -1,25 +1,24 @@
<?php
/**
* Smarty plugin
- *
- * @package Smarty
+ *
+ * @package Smarty
* @subpackage PluginsModifier
*/
/**
* Smarty capitalize modifier plugin
- *
* Type: modifier<br>
* Name: capitalize<br>
* Purpose: capitalize words in the string
- *
* {@internal {$string|capitalize:true:true} is the fastest option for MBString enabled systems }}
*
* @param string $string string to capitalize
* @param boolean $uc_digits also capitalize "x123" to "X123"
* @param boolean $lc_rest capitalize first letters, lowercase all following letters "aAa" to "Aaa"
+ *
* @return string capitalized string
- * @author Monte Ohrt <monte at ohrt dot com>
+ * @author Monte Ohrt <monte at ohrt dot com>
* @author Rodney Rehm
*/
function smarty_modifier_capitalize($string, $uc_digits = false, $lc_rest = false)
@@ -27,39 +26,65 @@ function smarty_modifier_capitalize($string, $uc_digits = false, $lc_rest = fals
if (Smarty::$_MBSTRING) {
if ($lc_rest) {
// uppercase (including hyphenated words)
- $upper_string = mb_convert_case( $string, MB_CASE_TITLE, Smarty::$_CHARSET );
+ $upper_string = mb_convert_case($string, MB_CASE_TITLE, Smarty::$_CHARSET);
} else {
// uppercase word breaks
- $upper_string = preg_replace("!(^|[^\p{L}'])([\p{Ll}])!eS" . Smarty::$_UTF8_MODIFIER, "stripslashes('\\1').mb_convert_case(stripslashes('\\2'),MB_CASE_UPPER, '" . addslashes(Smarty::$_CHARSET) . "')", $string);
+ $upper_string = preg_replace_callback("!(^|[^\p{L}'])([\p{Ll}])!S" . Smarty::$_UTF8_MODIFIER, 'smarty_mod_cap_mbconvert_cb', $string);
}
// check uc_digits case
if (!$uc_digits) {
if (preg_match_all("!\b([\p{L}]*[\p{N}]+[\p{L}]*)\b!" . Smarty::$_UTF8_MODIFIER, $string, $matches, PREG_OFFSET_CAPTURE)) {
- foreach($matches[1] as $match) {
+ foreach ($matches[1] as $match) {
$upper_string = substr_replace($upper_string, mb_strtolower($match[0], Smarty::$_CHARSET), $match[1], strlen($match[0]));
}
- }
+ }
}
- $upper_string = preg_replace("!((^|\s)['\"])(\w)!e" . Smarty::$_UTF8_MODIFIER, "stripslashes('\\1').mb_convert_case(stripslashes('\\3'),MB_CASE_UPPER, '" . addslashes(Smarty::$_CHARSET) . "')", $upper_string);
+ $upper_string = preg_replace_callback("!((^|\s)['\"])(\w)!" . Smarty::$_UTF8_MODIFIER, 'smarty_mod_cap_mbconvert2_cb', $upper_string);
return $upper_string;
}
-
+
// lowercase first
if ($lc_rest) {
$string = strtolower($string);
}
// uppercase (including hyphenated words)
- $upper_string = preg_replace("!(^|[^\p{L}'])([\p{Ll}])!eS" . Smarty::$_UTF8_MODIFIER, "stripslashes('\\1').ucfirst(stripslashes('\\2'))", $string);
+ $upper_string = preg_replace_callback("!(^|[^\p{L}'])([\p{Ll}])!S" . Smarty::$_UTF8_MODIFIER, 'smarty_mod_cap_ucfirst_cb', $string);
// check uc_digits case
if (!$uc_digits) {
if (preg_match_all("!\b([\p{L}]*[\p{N}]+[\p{L}]*)\b!" . Smarty::$_UTF8_MODIFIER, $string, $matches, PREG_OFFSET_CAPTURE)) {
- foreach($matches[1] as $match) {
+ foreach ($matches[1] as $match) {
$upper_string = substr_replace($upper_string, strtolower($match[0]), $match[1], strlen($match[0]));
}
- }
+ }
}
- $upper_string = preg_replace("!((^|\s)['\"])(\w)!e" . Smarty::$_UTF8_MODIFIER, "stripslashes('\\1').strtoupper(stripslashes('\\3'))", $upper_string);
+ $upper_string = preg_replace_callback("!((^|\s)['\"])(\w)!" . Smarty::$_UTF8_MODIFIER, 'smarty_mod_cap_ucfirst2_cb', $upper_string);
return $upper_string;
-}
+}
+
+/*
+ *
+ * Bug: create_function() use exhausts memory when used in long loops
+ * Fix: use declared functions for callbacks instead of using create_function()
+ * Note: This can be fixed using anonymous functions instead, but that requires PHP >= 5.3
+ *
+ * @author Kyle Renfrow
+ */
+function smarty_mod_cap_mbconvert_cb($matches)
+{
+ return stripslashes($matches[1]) . mb_convert_case(stripslashes($matches[2]), MB_CASE_UPPER, Smarty::$_CHARSET);
+}
+
+function smarty_mod_cap_mbconvert2_cb($matches)
+{
+ return stripslashes($matches[1]) . mb_convert_case(stripslashes($matches[3]), MB_CASE_UPPER, Smarty::$_CHARSET);
+}
+
+function smarty_mod_cap_ucfirst_cb($matches)
+{
+ return stripslashes($matches[1]) . ucfirst(stripslashes($matches[2]));
+}
-?> \ No newline at end of file
+function smarty_mod_cap_ucfirst2_cb($matches)
+{
+ return stripslashes($matches[1]) . ucfirst(stripslashes($matches[3]));
+}
diff --git a/library/Smarty/libs/plugins/modifier.date_format.php b/library/Smarty/libs/plugins/modifier.date_format.php
index f3eaba057..5ad7540b1 100644
--- a/library/Smarty/libs/plugins/modifier.date_format.php
+++ b/library/Smarty/libs/plugins/modifier.date_format.php
@@ -1,14 +1,13 @@
<?php
/**
* Smarty plugin
- *
- * @package Smarty
+ *
+ * @package Smarty
* @subpackage PluginsModifier
*/
/**
* Smarty date_format modifier plugin
- *
* Type: modifier<br>
* Name: date_format<br>
* Purpose: format datestamps via strftime<br>
@@ -16,24 +15,26 @@
* - string: input date string
* - format: strftime format for output
* - default_date: default date if $string is empty
- *
- * @link http://www.smarty.net/manual/en/language.modifier.date.format.php date_format (Smarty online manual)
- * @author Monte Ohrt <monte at ohrt dot com>
+ *
+ * @link http://www.smarty.net/manual/en/language.modifier.date.format.php date_format (Smarty online manual)
+ * @author Monte Ohrt <monte at ohrt dot com>
+ *
* @param string $string input date string
* @param string $format strftime format for output
* @param string $default_date default date if $string is empty
* @param string $formatter either 'strftime' or 'auto'
+ *
* @return string |void
- * @uses smarty_make_timestamp()
+ * @uses smarty_make_timestamp()
*/
-function smarty_modifier_date_format($string, $format=null, $default_date='', $formatter='auto')
+function smarty_modifier_date_format($string, $format = null, $default_date = '', $formatter = 'auto')
{
if ($format === null) {
$format = Smarty::$_DATE_FORMAT;
}
/**
- * Include the {@link shared.make_timestamp.php} plugin
- */
+ * Include the {@link shared.make_timestamp.php} plugin
+ */
require_once(SMARTY_PLUGINS_DIR . 'shared.make_timestamp.php');
if ($string != '' && $string != '0000-00-00' && $string != '0000-00-00 00:00:00') {
$timestamp = smarty_make_timestamp($string);
@@ -41,25 +42,24 @@ function smarty_modifier_date_format($string, $format=null, $default_date='', $f
$timestamp = smarty_make_timestamp($default_date);
} else {
return;
- }
- if($formatter=='strftime'||($formatter=='auto'&&strpos($format,'%')!==false)) {
+ }
+ if ($formatter == 'strftime' || ($formatter == 'auto' && strpos($format, '%') !== false)) {
if (DS == '\\') {
$_win_from = array('%D', '%h', '%n', '%r', '%R', '%t', '%T');
$_win_to = array('%m/%d/%y', '%b', "\n", '%I:%M:%S %p', '%H:%M', "\t", '%H:%M:%S');
if (strpos($format, '%e') !== false) {
$_win_from[] = '%e';
$_win_to[] = sprintf('%\' 2d', date('j', $timestamp));
- }
+ }
if (strpos($format, '%l') !== false) {
$_win_from[] = '%l';
$_win_to[] = sprintf('%\' 2d', date('h', $timestamp));
- }
+ }
$format = str_replace($_win_from, $_win_to, $format);
- }
+ }
+
return strftime($format, $timestamp);
} else {
return date($format, $timestamp);
}
-}
-
-?> \ No newline at end of file
+}
diff --git a/library/Smarty/libs/plugins/modifier.debug_print_var.php b/library/Smarty/libs/plugins/modifier.debug_print_var.php
index fa44100e8..66363d253 100644
--- a/library/Smarty/libs/plugins/modifier.debug_print_var.php
+++ b/library/Smarty/libs/plugins/modifier.debug_print_var.php
@@ -1,53 +1,54 @@
<?php
/**
* Smarty plugin
- *
- * @package Smarty
+ *
+ * @package Smarty
* @subpackage Debug
*/
/**
* Smarty debug_print_var modifier plugin
- *
* Type: modifier<br>
* Name: debug_print_var<br>
* Purpose: formats variable contents for display in the console
*
- * @author Monte Ohrt <monte at ohrt dot com>
- * @param array|object $var variable to be formatted
- * @param integer $depth maximum recursion depth if $var is an array
- * @param integer $length maximum string length if $var is a string
- * @return string
+ * @author Monte Ohrt <monte at ohrt dot com>
+ *
+ * @param array|object $var variable to be formatted
+ * @param integer $depth maximum recursion depth if $var is an array
+ * @param integer $length maximum string length if $var is a string
+ *
+ * @return string
*/
-function smarty_modifier_debug_print_var ($var, $depth = 0, $length = 40)
+function smarty_modifier_debug_print_var($var, $depth = 0, $length = 40)
{
$_replace = array("\n" => '<i>\n</i>',
- "\r" => '<i>\r</i>',
- "\t" => '<i>\t</i>'
- );
+ "\r" => '<i>\r</i>',
+ "\t" => '<i>\t</i>'
+ );
switch (gettype($var)) {
case 'array' :
$results = '<b>Array (' . count($var) . ')</b>';
foreach ($var as $curr_key => $curr_val) {
$results .= '<br>' . str_repeat('&nbsp;', $depth * 2)
- . '<b>' . strtr($curr_key, $_replace) . '</b> =&gt; '
- . smarty_modifier_debug_print_var($curr_val, ++$depth, $length);
- $depth--;
- }
+ . '<b>' . strtr($curr_key, $_replace) . '</b> =&gt; '
+ . smarty_modifier_debug_print_var($curr_val, ++$depth, $length);
+ $depth --;
+ }
break;
-
+
case 'object' :
$object_vars = get_object_vars($var);
$results = '<b>' . get_class($var) . ' Object (' . count($object_vars) . ')</b>';
foreach ($object_vars as $curr_key => $curr_val) {
$results .= '<br>' . str_repeat('&nbsp;', $depth * 2)
- . '<b> -&gt;' . strtr($curr_key, $_replace) . '</b> = '
- . smarty_modifier_debug_print_var($curr_val, ++$depth, $length);
- $depth--;
- }
+ . '<b> -&gt;' . strtr($curr_key, $_replace) . '</b> = '
+ . smarty_modifier_debug_print_var($curr_val, ++$depth, $length);
+ $depth --;
+ }
break;
-
+
case 'boolean' :
case 'NULL' :
case 'resource' :
@@ -59,15 +60,15 @@ function smarty_modifier_debug_print_var ($var, $depth = 0, $length = 40)
$results = 'null';
} else {
$results = htmlspecialchars((string) $var);
- }
+ }
$results = '<i>' . $results . '</i>';
break;
-
+
case 'integer' :
case 'float' :
$results = htmlspecialchars((string) $var);
break;
-
+
case 'string' :
$results = strtr($var, $_replace);
if (Smarty::$_MBSTRING) {
@@ -82,7 +83,7 @@ function smarty_modifier_debug_print_var ($var, $depth = 0, $length = 40)
$results = htmlspecialchars('"' . $results . '"');
break;
-
+
case 'unknown type' :
default :
$results = strtr((string) $var, $_replace);
@@ -95,11 +96,9 @@ function smarty_modifier_debug_print_var ($var, $depth = 0, $length = 40)
$results = substr($results, 0, $length - 3) . '...';
}
}
-
+
$results = htmlspecialchars($results);
- }
+ }
return $results;
-}
-
-?> \ No newline at end of file
+}
diff --git a/library/Smarty/libs/plugins/modifier.escape.php b/library/Smarty/libs/plugins/modifier.escape.php
index 32d185fce..9fdb0702f 100644
--- a/library/Smarty/libs/plugins/modifier.escape.php
+++ b/library/Smarty/libs/plugins/modifier.escape.php
@@ -2,23 +2,24 @@
/**
* Smarty plugin
*
- * @package Smarty
+ * @package Smarty
* @subpackage PluginsModifier
*/
/**
* Smarty escape modifier plugin
- *
* Type: modifier<br>
* Name: escape<br>
* Purpose: escape string for output
*
- * @link http://www.smarty.net/manual/en/language.modifier.count.characters.php count_characters (Smarty online manual)
+ * @link http://www.smarty.net/docs/en/language.modifier.escape
* @author Monte Ohrt <monte at ohrt dot com>
+ *
* @param string $string input string
* @param string $esc_type escape type
* @param string $char_set character set, used for htmlspecialchars() or htmlentities()
* @param boolean $double_encode encode already encoded entitites again, used for htmlspecialchars() or htmlentities()
+ *
* @return string escaped input string
*/
function smarty_modifier_escape($string, $esc_type = 'html', $char_set = null, $double_encode = true)
@@ -27,7 +28,7 @@ function smarty_modifier_escape($string, $esc_type = 'html', $char_set = null, $
if ($_double_encode === null) {
$_double_encode = version_compare(PHP_VERSION, '5.2.3', '>=');
}
-
+
if (!$char_set) {
$char_set = Smarty::$_CHARSET;
}
@@ -39,13 +40,14 @@ function smarty_modifier_escape($string, $esc_type = 'html', $char_set = null, $
return htmlspecialchars($string, ENT_QUOTES, $char_set, $double_encode);
} else {
if ($double_encode) {
- // php <5.3.2 - only handle double encoding
+ // php <5.2.3 - only handle double encoding
return htmlspecialchars($string, ENT_QUOTES, $char_set);
} else {
- // php <5.3.2 - prevent double encoding
+ // php <5.2.3 - prevent double encoding
$string = preg_replace('!&(#?\w+);!', '%%%SMARTY_START%%%\\1%%%SMARTY_END%%%', $string);
$string = htmlspecialchars($string, ENT_QUOTES, $char_set);
$string = str_replace(array('%%%SMARTY_START%%%', '%%%SMARTY_END%%%'), array('&', ';'), $string);
+
return $string;
}
}
@@ -58,17 +60,18 @@ function smarty_modifier_escape($string, $esc_type = 'html', $char_set = null, $
$string = htmlspecialchars($string, ENT_QUOTES, $char_set, $double_encode);
} else {
if ($double_encode) {
- // php <5.3.2 - only handle double encoding
+ // php <5.2.3 - only handle double encoding
$string = htmlspecialchars($string, ENT_QUOTES, $char_set);
} else {
- // php <5.3.2 - prevent double encoding
+ // php <5.2.3 - prevent double encoding
$string = preg_replace('!&(#?\w+);!', '%%%SMARTY_START%%%\\1%%%SMARTY_END%%%', $string);
$string = htmlspecialchars($string, ENT_QUOTES, $char_set);
$string = str_replace(array('%%%SMARTY_START%%%', '%%%SMARTY_END%%%'), array('&', ';'), $string);
+
return $string;
}
}
-
+
// htmlentities() won't convert everything, so use mb_convert_encoding
return mb_convert_encoding($string, 'HTML-ENTITIES', $char_set);
}
@@ -83,6 +86,7 @@ function smarty_modifier_escape($string, $esc_type = 'html', $char_set = null, $
$string = preg_replace('!&(#?\w+);!', '%%%SMARTY_START%%%\\1%%%SMARTY_END%%%', $string);
$string = htmlentities($string, ENT_QUOTES, $char_set);
$string = str_replace(array('%%%SMARTY_START%%%', '%%%SMARTY_END%%%'), array('&', ';'), $string);
+
return $string;
}
}
@@ -102,9 +106,10 @@ function smarty_modifier_escape($string, $esc_type = 'html', $char_set = null, $
// Note that the UTF-8 encoded character ä will be represented as %c3%a4
$return = '';
$_length = strlen($string);
- for ($x = 0; $x < $_length; $x++) {
+ for ($x = 0; $x < $_length; $x ++) {
$return .= '%' . bin2hex($string[$x]);
}
+
return $return;
case 'hexentity':
@@ -115,13 +120,15 @@ function smarty_modifier_escape($string, $esc_type = 'html', $char_set = null, $
foreach (smarty_mb_to_unicode($string, Smarty::$_CHARSET) as $unicode) {
$return .= '&#x' . strtoupper(dechex($unicode)) . ';';
}
+
return $return;
}
// no MBString fallback
$_length = strlen($string);
- for ($x = 0; $x < $_length; $x++) {
+ for ($x = 0; $x < $_length; $x ++) {
$return .= '&#x' . bin2hex($string[$x]) . ';';
}
+
return $return;
case 'decentity':
@@ -132,13 +139,15 @@ function smarty_modifier_escape($string, $esc_type = 'html', $char_set = null, $
foreach (smarty_mb_to_unicode($string, Smarty::$_CHARSET) as $unicode) {
$return .= '&#' . $unicode . ';';
}
+
return $return;
}
// no MBString fallback
$_length = strlen($string);
- for ($x = 0; $x < $_length; $x++) {
+ for ($x = 0; $x < $_length; $x ++) {
$return .= '&#' . ord($string[$x]) . ';';
}
+
return $return;
case 'javascript':
@@ -148,6 +157,7 @@ function smarty_modifier_escape($string, $esc_type = 'html', $char_set = null, $
case 'mail':
if (Smarty::$_MBSTRING) {
require_once(SMARTY_PLUGINS_DIR . 'shared.mb_str_replace.php');
+
return smarty_mb_str_replace(array('@', '.'), array(' [AT] ', ' [DOT] '), $string);
}
// no MBString fallback
@@ -165,11 +175,12 @@ function smarty_modifier_escape($string, $esc_type = 'html', $char_set = null, $
$return .= chr($unicode);
}
}
+
return $return;
}
$_length = strlen($string);
- for ($_i = 0; $_i < $_length; $_i++) {
+ for ($_i = 0; $_i < $_length; $_i ++) {
$_ord = ord(substr($string, $_i, 1));
// non-standard char, escape it
if ($_ord >= 126) {
@@ -178,11 +189,10 @@ function smarty_modifier_escape($string, $esc_type = 'html', $char_set = null, $
$return .= substr($string, $_i, 1);
}
}
+
return $return;
default:
return $string;
}
}
-
-?> \ No newline at end of file
diff --git a/library/Smarty/libs/plugins/modifier.regex_replace.php b/library/Smarty/libs/plugins/modifier.regex_replace.php
index f9fd5fa53..abb1ff548 100644
--- a/library/Smarty/libs/plugins/modifier.regex_replace.php
+++ b/library/Smarty/libs/plugins/modifier.regex_replace.php
@@ -2,39 +2,42 @@
/**
* Smarty plugin
*
- * @package Smarty
+ * @package Smarty
* @subpackage PluginsModifier
*/
/**
* Smarty regex_replace modifier plugin
- *
* Type: modifier<br>
* Name: regex_replace<br>
* Purpose: regular expression search/replace
*
- * @link http://smarty.php.net/manual/en/language.modifier.regex.replace.php
+ * @link http://smarty.php.net/manual/en/language.modifier.regex.replace.php
* regex_replace (Smarty online manual)
- * @author Monte Ohrt <monte at ohrt dot com>
- * @param string $string input string
- * @param string|array $search regular expression(s) to search for
- * @param string|array $replace string(s) that should be replaced
+ * @author Monte Ohrt <monte at ohrt dot com>
+ *
+ * @param string $string input string
+ * @param string|array $search regular expression(s) to search for
+ * @param string|array $replace string(s) that should be replaced
+ *
* @return string
*/
function smarty_modifier_regex_replace($string, $search, $replace)
{
- if(is_array($search)) {
- foreach($search as $idx => $s) {
+ if (is_array($search)) {
+ foreach ($search as $idx => $s) {
$search[$idx] = _smarty_regex_replace_check($s);
}
} else {
$search = _smarty_regex_replace_check($search);
}
+
return preg_replace($search, $replace, $string);
}
/**
* @param string $search string(s) that should be replaced
+ *
* @return string
* @ignore
*/
@@ -42,14 +45,13 @@ function _smarty_regex_replace_check($search)
{
// null-byte injection detection
// anything behind the first null-byte is ignored
- if (($pos = strpos($search,"\0")) !== false) {
- $search = substr($search,0,$pos);
+ if (($pos = strpos($search, "\0")) !== false) {
+ $search = substr($search, 0, $pos);
}
// remove eval-modifier from $search
if (preg_match('!([a-zA-Z\s]+)$!s', $search, $match) && (strpos($match[1], 'e') !== false)) {
- $search = substr($search, 0, -strlen($match[1])) . preg_replace('![e\s]+!', '', $match[1]);
+ $search = substr($search, 0, - strlen($match[1])) . preg_replace('![e\s]+!', '', $match[1]);
}
+
return $search;
}
-
-?> \ No newline at end of file
diff --git a/library/Smarty/libs/plugins/modifier.replace.php b/library/Smarty/libs/plugins/modifier.replace.php
index 4d71a6e9b..aa5e8570b 100644
--- a/library/Smarty/libs/plugins/modifier.replace.php
+++ b/library/Smarty/libs/plugins/modifier.replace.php
@@ -1,33 +1,34 @@
<?php
/**
* Smarty plugin
- * @package Smarty
+ *
+ * @package Smarty
* @subpackage PluginsModifier
*/
/**
* Smarty replace modifier plugin
- *
* Type: modifier<br>
* Name: replace<br>
* Purpose: simple search/replace
- *
- * @link http://smarty.php.net/manual/en/language.modifier.replace.php replace (Smarty online manual)
- * @author Monte Ohrt <monte at ohrt dot com>
- * @author Uwe Tews
+ *
+ * @link http://smarty.php.net/manual/en/language.modifier.replace.php replace (Smarty online manual)
+ * @author Monte Ohrt <monte at ohrt dot com>
+ * @author Uwe Tews
+ *
* @param string $string input string
* @param string $search text to search for
* @param string $replace replacement text
- * @return string
+ *
+ * @return string
*/
function smarty_modifier_replace($string, $search, $replace)
{
if (Smarty::$_MBSTRING) {
require_once(SMARTY_PLUGINS_DIR . 'shared.mb_str_replace.php');
+
return smarty_mb_str_replace($search, $replace, $string);
}
-
- return str_replace($search, $replace, $string);
-}
-?> \ No newline at end of file
+ return str_replace($search, $replace, $string);
+}
diff --git a/library/Smarty/libs/plugins/modifier.spacify.php b/library/Smarty/libs/plugins/modifier.spacify.php
index a907232ff..e5c41ad8b 100644
--- a/library/Smarty/libs/plugins/modifier.spacify.php
+++ b/library/Smarty/libs/plugins/modifier.spacify.php
@@ -1,27 +1,27 @@
<?php
/**
* Smarty plugin
- * @package Smarty
+ *
+ * @package Smarty
* @subpackage PluginsModifier
*/
/**
* Smarty spacify modifier plugin
- *
* Type: modifier<br>
* Name: spacify<br>
* Purpose: add spaces between characters in a string
- *
- * @link http://smarty.php.net/manual/en/language.modifier.spacify.php spacify (Smarty online manual)
- * @author Monte Ohrt <monte at ohrt dot com>
+ *
+ * @link http://smarty.php.net/manual/en/language.modifier.spacify.php spacify (Smarty online manual)
+ * @author Monte Ohrt <monte at ohrt dot com>
+ *
* @param string $string input string
* @param string $spacify_char string to insert between characters.
+ *
* @return string
*/
function smarty_modifier_spacify($string, $spacify_char = ' ')
{
// well… what about charsets besides latin and UTF-8?
- return implode($spacify_char, preg_split('//' . Smarty::$_UTF8_MODIFIER, $string, -1, PREG_SPLIT_NO_EMPTY));
-}
-
-?> \ No newline at end of file
+ return implode($spacify_char, preg_split('//' . Smarty::$_UTF8_MODIFIER, $string, - 1, PREG_SPLIT_NO_EMPTY));
+}
diff --git a/library/Smarty/libs/plugins/modifier.truncate.php b/library/Smarty/libs/plugins/modifier.truncate.php
index 9a803ec99..fbe62e823 100644
--- a/library/Smarty/libs/plugins/modifier.truncate.php
+++ b/library/Smarty/libs/plugins/modifier.truncate.php
@@ -2,58 +2,63 @@
/**
* Smarty plugin
*
- * @package Smarty
+ * @package Smarty
* @subpackage PluginsModifier
*/
-
+
/**
* Smarty truncate modifier plugin
- *
* Type: modifier<br>
* Name: truncate<br>
* Purpose: Truncate a string to a certain length if necessary,
* optionally splitting in the middle of a word, and
* appending the $etc string or inserting $etc into the middle.
- *
- * @link http://smarty.php.net/manual/en/language.modifier.truncate.php truncate (Smarty online manual)
- * @author Monte Ohrt <monte at ohrt dot com>
+ *
+ * @link http://smarty.php.net/manual/en/language.modifier.truncate.php truncate (Smarty online manual)
+ * @author Monte Ohrt <monte at ohrt dot com>
+ *
* @param string $string input string
* @param integer $length length of truncated text
* @param string $etc end string
* @param boolean $break_words truncate at word boundary
* @param boolean $middle truncate in the middle of text
+ *
* @return string truncated string
*/
-function smarty_modifier_truncate($string, $length = 80, $etc = '...', $break_words = false, $middle = false) {
- if ($length == 0)
+function smarty_modifier_truncate($string, $length = 80, $etc = '...', $break_words = false, $middle = false)
+{
+ if ($length == 0) {
return '';
+ }
if (Smarty::$_MBSTRING) {
if (mb_strlen($string, Smarty::$_CHARSET) > $length) {
$length -= min($length, mb_strlen($etc, Smarty::$_CHARSET));
if (!$break_words && !$middle) {
$string = preg_replace('/\s+?(\S+)?$/' . Smarty::$_UTF8_MODIFIER, '', mb_substr($string, 0, $length + 1, Smarty::$_CHARSET));
- }
+ }
if (!$middle) {
return mb_substr($string, 0, $length, Smarty::$_CHARSET) . $etc;
}
+
return mb_substr($string, 0, $length / 2, Smarty::$_CHARSET) . $etc . mb_substr($string, - $length / 2, $length, Smarty::$_CHARSET);
}
+
return $string;
}
-
+
// no MBString fallback
if (isset($string[$length])) {
$length -= min($length, strlen($etc));
if (!$break_words && !$middle) {
$string = preg_replace('/\s+?(\S+)?$/', '', substr($string, 0, $length + 1));
- }
+ }
if (!$middle) {
return substr($string, 0, $length) . $etc;
}
+
return substr($string, 0, $length / 2) . $etc . substr($string, - $length / 2);
}
- return $string;
-}
-?> \ No newline at end of file
+ return $string;
+}
diff --git a/library/Smarty/libs/plugins/modifiercompiler.cat.php b/library/Smarty/libs/plugins/modifiercompiler.cat.php
index 1cfe6308a..db9d81fbf 100644
--- a/library/Smarty/libs/plugins/modifiercompiler.cat.php
+++ b/library/Smarty/libs/plugins/modifiercompiler.cat.php
@@ -1,30 +1,29 @@
-<?php
-/**
- * Smarty plugin
- *
- * @package Smarty
- * @subpackage PluginsModifierCompiler
- */
-
-/**
- * Smarty cat modifier plugin
- *
- * Type: modifier<br>
- * Name: cat<br>
- * Date: Feb 24, 2003<br>
- * Purpose: catenate a value to a variable<br>
- * Input: string to catenate<br>
- * Example: {$var|cat:"foo"}
- *
- * @link http://smarty.php.net/manual/en/language.modifier.cat.php cat
- * (Smarty online manual)
- * @author Uwe Tews
- * @param array $params parameters
- * @return string with compiled code
- */
-function smarty_modifiercompiler_cat($params, $compiler)
-{
- return '('.implode(').(', $params).')';
-}
-
-?> \ No newline at end of file
+<?php
+/**
+ * Smarty plugin
+ *
+ * @package Smarty
+ * @subpackage PluginsModifierCompiler
+ */
+
+/**
+ * Smarty cat modifier plugin
+ * Type: modifier<br>
+ * Name: cat<br>
+ * Date: Feb 24, 2003<br>
+ * Purpose: catenate a value to a variable<br>
+ * Input: string to catenate<br>
+ * Example: {$var|cat:"foo"}
+ *
+ * @link http://smarty.php.net/manual/en/language.modifier.cat.php cat
+ * (Smarty online manual)
+ * @author Uwe Tews
+ *
+ * @param array $params parameters
+ *
+ * @return string with compiled code
+ */
+function smarty_modifiercompiler_cat($params)
+{
+ return '(' . implode(').(', $params) . ')';
+}
diff --git a/library/Smarty/libs/plugins/modifiercompiler.count_characters.php b/library/Smarty/libs/plugins/modifiercompiler.count_characters.php
index 98e8efa0d..f8463d80a 100644
--- a/library/Smarty/libs/plugins/modifiercompiler.count_characters.php
+++ b/library/Smarty/libs/plugins/modifiercompiler.count_characters.php
@@ -1,33 +1,32 @@
-<?php
-/**
- * Smarty plugin
- *
- * @package Smarty
- * @subpackage PluginsModifierCompiler
- */
-
-/**
- * Smarty count_characters modifier plugin
- *
- * Type: modifier<br>
- * Name: count_characteres<br>
- * Purpose: count the number of characters in a text
- *
- * @link http://www.smarty.net/manual/en/language.modifier.count.characters.php count_characters (Smarty online manual)
- * @author Uwe Tews
- * @param array $params parameters
- * @return string with compiled code
- */
-function smarty_modifiercompiler_count_characters($params, $compiler)
-{
- if (!isset($params[1]) || $params[1] != 'true') {
- return 'preg_match_all(\'/[^\s]/' . Smarty::$_UTF8_MODIFIER . '\',' . $params[0] . ', $tmp)';
- }
- if (Smarty::$_MBSTRING) {
- return 'mb_strlen(' . $params[0] . ', \'' . addslashes(Smarty::$_CHARSET) . '\')';
- }
- // no MBString fallback
- return 'strlen(' . $params[0] . ')';
-}
-
-?> \ No newline at end of file
+<?php
+/**
+ * Smarty plugin
+ *
+ * @package Smarty
+ * @subpackage PluginsModifierCompiler
+ */
+
+/**
+ * Smarty count_characters modifier plugin
+ * Type: modifier<br>
+ * Name: count_characteres<br>
+ * Purpose: count the number of characters in a text
+ *
+ * @link http://www.smarty.net/manual/en/language.modifier.count.characters.php count_characters (Smarty online manual)
+ * @author Uwe Tews
+ *
+ * @param array $params parameters
+ *
+ * @return string with compiled code
+ */
+function smarty_modifiercompiler_count_characters($params)
+{
+ if (!isset($params[1]) || $params[1] != 'true') {
+ return 'preg_match_all(\'/[^\s]/' . Smarty::$_UTF8_MODIFIER . '\',' . $params[0] . ', $tmp)';
+ }
+ if (Smarty::$_MBSTRING) {
+ return 'mb_strlen(' . $params[0] . ', \'' . addslashes(Smarty::$_CHARSET) . '\')';
+ }
+ // no MBString fallback
+ return 'strlen(' . $params[0] . ')';
+}
diff --git a/library/Smarty/libs/plugins/modifiercompiler.count_paragraphs.php b/library/Smarty/libs/plugins/modifiercompiler.count_paragraphs.php
index 0e1b0af83..34f0bbb8a 100644
--- a/library/Smarty/libs/plugins/modifiercompiler.count_paragraphs.php
+++ b/library/Smarty/libs/plugins/modifiercompiler.count_paragraphs.php
@@ -1,28 +1,27 @@
-<?php
-/**
- * Smarty plugin
- *
- * @package Smarty
- * @subpackage PluginsModifierCompiler
- */
-
-/**
- * Smarty count_paragraphs modifier plugin
- *
- * Type: modifier<br>
- * Name: count_paragraphs<br>
- * Purpose: count the number of paragraphs in a text
- *
- * @link http://www.smarty.net/manual/en/language.modifier.count.paragraphs.php
- * count_paragraphs (Smarty online manual)
- * @author Uwe Tews
- * @param array $params parameters
- * @return string with compiled code
- */
-function smarty_modifiercompiler_count_paragraphs($params, $compiler)
-{
- // count \r or \n characters
- return '(preg_match_all(\'#[\r\n]+#\', ' . $params[0] . ', $tmp)+1)';
-}
-
-?> \ No newline at end of file
+<?php
+/**
+ * Smarty plugin
+ *
+ * @package Smarty
+ * @subpackage PluginsModifierCompiler
+ */
+
+/**
+ * Smarty count_paragraphs modifier plugin
+ * Type: modifier<br>
+ * Name: count_paragraphs<br>
+ * Purpose: count the number of paragraphs in a text
+ *
+ * @link http://www.smarty.net/manual/en/language.modifier.count.paragraphs.php
+ * count_paragraphs (Smarty online manual)
+ * @author Uwe Tews
+ *
+ * @param array $params parameters
+ *
+ * @return string with compiled code
+ */
+function smarty_modifiercompiler_count_paragraphs($params)
+{
+ // count \r or \n characters
+ return '(preg_match_all(\'#[\r\n]+#\', ' . $params[0] . ', $tmp)+1)';
+}
diff --git a/library/Smarty/libs/plugins/modifiercompiler.count_sentences.php b/library/Smarty/libs/plugins/modifiercompiler.count_sentences.php
index 2f517be96..f1ec56007 100644
--- a/library/Smarty/libs/plugins/modifiercompiler.count_sentences.php
+++ b/library/Smarty/libs/plugins/modifiercompiler.count_sentences.php
@@ -1,28 +1,27 @@
-<?php
-/**
- * Smarty plugin
- *
- * @package Smarty
- * @subpackage PluginsModifierCompiler
- */
-
-/**
- * Smarty count_sentences modifier plugin
- *
- * Type: modifier<br>
- * Name: count_sentences
- * Purpose: count the number of sentences in a text
- *
- * @link http://www.smarty.net/manual/en/language.modifier.count.paragraphs.php
- * count_sentences (Smarty online manual)
- * @author Uwe Tews
- * @param array $params parameters
- * @return string with compiled code
- */
-function smarty_modifiercompiler_count_sentences($params, $compiler)
-{
- // find periods, question marks, exclamation marks with a word before but not after.
- return 'preg_match_all("#\w[\.\?\!](\W|$)#S' . Smarty::$_UTF8_MODIFIER . '", ' . $params[0] . ', $tmp)';
-}
-
-?> \ No newline at end of file
+<?php
+/**
+ * Smarty plugin
+ *
+ * @package Smarty
+ * @subpackage PluginsModifierCompiler
+ */
+
+/**
+ * Smarty count_sentences modifier plugin
+ * Type: modifier<br>
+ * Name: count_sentences
+ * Purpose: count the number of sentences in a text
+ *
+ * @link http://www.smarty.net/manual/en/language.modifier.count.paragraphs.php
+ * count_sentences (Smarty online manual)
+ * @author Uwe Tews
+ *
+ * @param array $params parameters
+ *
+ * @return string with compiled code
+ */
+function smarty_modifiercompiler_count_sentences($params)
+{
+ // find periods, question marks, exclamation marks with a word before but not after.
+ return 'preg_match_all("#\w[\.\?\!](\W|$)#S' . Smarty::$_UTF8_MODIFIER . '", ' . $params[0] . ', $tmp)';
+}
diff --git a/library/Smarty/libs/plugins/modifiercompiler.count_words.php b/library/Smarty/libs/plugins/modifiercompiler.count_words.php
index e05738c01..8b4330f1e 100644
--- a/library/Smarty/libs/plugins/modifiercompiler.count_words.php
+++ b/library/Smarty/libs/plugins/modifiercompiler.count_words.php
@@ -1,32 +1,31 @@
-<?php
-/**
- * Smarty plugin
- *
- * @package Smarty
- * @subpackage PluginsModifierCompiler
- */
-
-/**
- * Smarty count_words modifier plugin
- *
- * Type: modifier<br>
- * Name: count_words<br>
- * Purpose: count the number of words in a text
- *
- * @link http://www.smarty.net/manual/en/language.modifier.count.words.php count_words (Smarty online manual)
- * @author Uwe Tews
- * @param array $params parameters
- * @return string with compiled code
-*/
-function smarty_modifiercompiler_count_words($params, $compiler)
-{
- if (Smarty::$_MBSTRING) {
- // return 'preg_match_all(\'#[\w\pL]+#' . Smarty::$_UTF8_MODIFIER . '\', ' . $params[0] . ', $tmp)';
- // expression taken from http://de.php.net/manual/en/function.str-word-count.php#85592
- return 'preg_match_all(\'/\p{L}[\p{L}\p{Mn}\p{Pd}\\\'\x{2019}]*/' . Smarty::$_UTF8_MODIFIER . '\', ' . $params[0] . ', $tmp)';
- }
- // no MBString fallback
- return 'str_word_count(' . $params[0] . ')';
-}
-
-?> \ No newline at end of file
+<?php
+/**
+ * Smarty plugin
+ *
+ * @package Smarty
+ * @subpackage PluginsModifierCompiler
+ */
+
+/**
+ * Smarty count_words modifier plugin
+ * Type: modifier<br>
+ * Name: count_words<br>
+ * Purpose: count the number of words in a text
+ *
+ * @link http://www.smarty.net/manual/en/language.modifier.count.words.php count_words (Smarty online manual)
+ * @author Uwe Tews
+ *
+ * @param array $params parameters
+ *
+ * @return string with compiled code
+ */
+function smarty_modifiercompiler_count_words($params)
+{
+ if (Smarty::$_MBSTRING) {
+ // return 'preg_match_all(\'#[\w\pL]+#' . Smarty::$_UTF8_MODIFIER . '\', ' . $params[0] . ', $tmp)';
+ // expression taken from http://de.php.net/manual/en/function.str-word-count.php#85592
+ return 'preg_match_all(\'/\p{L}[\p{L}\p{Mn}\p{Pd}\\\'\x{2019}]*/' . Smarty::$_UTF8_MODIFIER . '\', ' . $params[0] . ', $tmp)';
+ }
+ // no MBString fallback
+ return 'str_word_count(' . $params[0] . ')';
+}
diff --git a/library/Smarty/libs/plugins/modifiercompiler.default.php b/library/Smarty/libs/plugins/modifiercompiler.default.php
index 4f831a589..fe777623e 100644
--- a/library/Smarty/libs/plugins/modifiercompiler.default.php
+++ b/library/Smarty/libs/plugins/modifiercompiler.default.php
@@ -1,35 +1,35 @@
-<?php
-/**
- * Smarty plugin
- *
- * @package Smarty
- * @subpackage PluginsModifierCompiler
- */
-
-/**
- * Smarty default modifier plugin
- *
- * Type: modifier<br>
- * Name: default<br>
- * Purpose: designate default value for empty variables
- *
- * @link http://www.smarty.net/manual/en/language.modifier.default.php default (Smarty online manual)
- * @author Uwe Tews
- * @param array $params parameters
- * @return string with compiled code
- */
-function smarty_modifiercompiler_default ($params, $compiler)
-{
- $output = $params[0];
- if (!isset($params[1])) {
- $params[1] = "''";
- }
-
- array_shift($params);
- foreach ($params as $param) {
- $output = '(($tmp = @' . $output . ')===null||$tmp===\'\' ? ' . $param . ' : $tmp)';
- }
- return $output;
-}
-
-?> \ No newline at end of file
+<?php
+/**
+ * Smarty plugin
+ *
+ * @package Smarty
+ * @subpackage PluginsModifierCompiler
+ */
+
+/**
+ * Smarty default modifier plugin
+ * Type: modifier<br>
+ * Name: default<br>
+ * Purpose: designate default value for empty variables
+ *
+ * @link http://www.smarty.net/manual/en/language.modifier.default.php default (Smarty online manual)
+ * @author Uwe Tews
+ *
+ * @param array $params parameters
+ *
+ * @return string with compiled code
+ */
+function smarty_modifiercompiler_default($params)
+{
+ $output = $params[0];
+ if (!isset($params[1])) {
+ $params[1] = "''";
+ }
+
+ array_shift($params);
+ foreach ($params as $param) {
+ $output = '(($tmp = @' . $output . ')===null||$tmp===\'\' ? ' . $param . ' : $tmp)';
+ }
+
+ return $output;
+}
diff --git a/library/Smarty/libs/plugins/modifiercompiler.escape.php b/library/Smarty/libs/plugins/modifiercompiler.escape.php
index 48b74d140..7e848aaec 100644
--- a/library/Smarty/libs/plugins/modifiercompiler.escape.php
+++ b/library/Smarty/libs/plugins/modifiercompiler.escape.php
@@ -1,125 +1,126 @@
-<?php
-/**
- * Smarty plugin
- *
- * @package Smarty
- * @subpackage PluginsModifierCompiler
- */
-
-/**
- * @ignore
- */
-require_once( SMARTY_PLUGINS_DIR .'shared.literal_compiler_param.php' );
-
-/**
- * Smarty escape modifier plugin
- *
- * Type: modifier<br>
- * Name: escape<br>
- * Purpose: escape string for output
- *
- * @link http://www.smarty.net/docsv2/en/language.modifier.escape count_characters (Smarty online manual)
- * @author Rodney Rehm
- * @param array $params parameters
- * @return string with compiled code
- */
-function smarty_modifiercompiler_escape($params, $compiler)
-{
- static $_double_encode = null;
- if ($_double_encode === null) {
- $_double_encode = version_compare(PHP_VERSION, '5.2.3', '>=');
- }
-
- try {
- $esc_type = smarty_literal_compiler_param($params, 1, 'html');
- $char_set = smarty_literal_compiler_param($params, 2, Smarty::$_CHARSET);
- $double_encode = smarty_literal_compiler_param($params, 3, true);
-
- if (!$char_set) {
- $char_set = Smarty::$_CHARSET;
- }
-
- switch ($esc_type) {
- case 'html':
- if ($_double_encode) {
- return 'htmlspecialchars('
- . $params[0] .', ENT_QUOTES, '
- . var_export($char_set, true) . ', '
- . var_export($double_encode, true) . ')';
- } else if ($double_encode) {
- return 'htmlspecialchars('
- . $params[0] .', ENT_QUOTES, '
- . var_export($char_set, true) . ')';
- } else {
- // fall back to modifier.escape.php
- }
-
- case 'htmlall':
- if (Smarty::$_MBSTRING) {
- if ($_double_encode) {
- // php >=5.3.2 - go native
- return 'mb_convert_encoding(htmlspecialchars('
- . $params[0] .', ENT_QUOTES, '
- . var_export($char_set, true) . ', '
- . var_export($double_encode, true)
- . '), "HTML-ENTITIES", '
- . var_export($char_set, true) . ')';
- } else if ($double_encode) {
- // php <5.3.2 - only handle double encoding
- return 'mb_convert_encoding(htmlspecialchars('
- . $params[0] .', ENT_QUOTES, '
- . var_export($char_set, true)
- . '), "HTML-ENTITIES", '
- . var_export($char_set, true) . ')';
- } else {
- // fall back to modifier.escape.php
- }
- }
-
- // no MBString fallback
- if ($_double_encode) {
- // php >=5.3.2 - go native
- return 'htmlentities('
- . $params[0] .', ENT_QUOTES, '
- . var_export($char_set, true) . ', '
- . var_export($double_encode, true) . ')';
- } else if ($double_encode) {
- // php <5.3.2 - only handle double encoding
- return 'htmlentities('
- . $params[0] .', ENT_QUOTES, '
- . var_export($char_set, true) . ')';
- } else {
- // fall back to modifier.escape.php
- }
-
- case 'url':
- return 'rawurlencode(' . $params[0] . ')';
-
- case 'urlpathinfo':
- return 'str_replace("%2F", "/", rawurlencode(' . $params[0] . '))';
-
- case 'quotes':
- // escape unescaped single quotes
- return 'preg_replace("%(?<!\\\\\\\\)\'%", "\\\'",' . $params[0] . ')';
-
- case 'javascript':
- // escape quotes and backslashes, newlines, etc.
- return 'strtr(' . $params[0] . ', array("\\\\" => "\\\\\\\\", "\'" => "\\\\\'", "\"" => "\\\\\"", "\\r" => "\\\\r", "\\n" => "\\\n", "</" => "<\/" ))';
-
- }
- } catch(SmartyException $e) {
- // pass through to regular plugin fallback
- }
-
- // could not optimize |escape call, so fallback to regular plugin
- if ($compiler->tag_nocache | $compiler->nocache) {
- $compiler->template->required_plugins['nocache']['escape']['modifier']['file'] = SMARTY_PLUGINS_DIR .'modifier.escape.php';
- $compiler->template->required_plugins['nocache']['escape']['modifier']['function'] = 'smarty_modifier_escape';
- } else {
- $compiler->template->required_plugins['compiled']['escape']['modifier']['file'] = SMARTY_PLUGINS_DIR .'modifier.escape.php';
- $compiler->template->required_plugins['compiled']['escape']['modifier']['function'] = 'smarty_modifier_escape';
- }
- return 'smarty_modifier_escape(' . join( ', ', $params ) . ')';
-}
-
-?> \ No newline at end of file
+<?php
+/**
+ * Smarty plugin
+ *
+ * @package Smarty
+ * @subpackage PluginsModifierCompiler
+ */
+
+/**
+ * @ignore
+ */
+require_once(SMARTY_PLUGINS_DIR . 'shared.literal_compiler_param.php');
+
+/**
+ * Smarty escape modifier plugin
+ * Type: modifier<br>
+ * Name: escape<br>
+ * Purpose: escape string for output
+ *
+ * @link http://www.smarty.net/docsv2/en/language.modifier.escape count_characters (Smarty online manual)
+ * @author Rodney Rehm
+ *
+ * @param array $params parameters
+ * @param $compiler
+ *
+ * @return string with compiled code
+ */
+function smarty_modifiercompiler_escape($params, $compiler)
+{
+ static $_double_encode = null;
+ if ($_double_encode === null) {
+ $_double_encode = version_compare(PHP_VERSION, '5.2.3', '>=');
+ }
+
+ try {
+ $esc_type = smarty_literal_compiler_param($params, 1, 'html');
+ $char_set = smarty_literal_compiler_param($params, 2, Smarty::$_CHARSET);
+ $double_encode = smarty_literal_compiler_param($params, 3, true);
+
+ if (!$char_set) {
+ $char_set = Smarty::$_CHARSET;
+ }
+
+ switch ($esc_type) {
+ case 'html':
+ if ($_double_encode) {
+ return 'htmlspecialchars('
+ . $params[0] . ', ENT_QUOTES, '
+ . var_export($char_set, true) . ', '
+ . var_export($double_encode, true) . ')';
+ } elseif ($double_encode) {
+ return 'htmlspecialchars('
+ . $params[0] . ', ENT_QUOTES, '
+ . var_export($char_set, true) . ')';
+ } else {
+ // fall back to modifier.escape.php
+ }
+
+ case 'htmlall':
+ if (Smarty::$_MBSTRING) {
+ if ($_double_encode) {
+ // php >=5.2.3 - go native
+ return 'mb_convert_encoding(htmlspecialchars('
+ . $params[0] . ', ENT_QUOTES, '
+ . var_export($char_set, true) . ', '
+ . var_export($double_encode, true)
+ . '), "HTML-ENTITIES", '
+ . var_export($char_set, true) . ')';
+ } elseif ($double_encode) {
+ // php <5.2.3 - only handle double encoding
+ return 'mb_convert_encoding(htmlspecialchars('
+ . $params[0] . ', ENT_QUOTES, '
+ . var_export($char_set, true)
+ . '), "HTML-ENTITIES", '
+ . var_export($char_set, true) . ')';
+ } else {
+ // fall back to modifier.escape.php
+ }
+ }
+
+ // no MBString fallback
+ if ($_double_encode) {
+ // php >=5.2.3 - go native
+ return 'htmlentities('
+ . $params[0] . ', ENT_QUOTES, '
+ . var_export($char_set, true) . ', '
+ . var_export($double_encode, true) . ')';
+ } elseif ($double_encode) {
+ // php <5.2.3 - only handle double encoding
+ return 'htmlentities('
+ . $params[0] . ', ENT_QUOTES, '
+ . var_export($char_set, true) . ')';
+ } else {
+ // fall back to modifier.escape.php
+ }
+
+ case 'url':
+ return 'rawurlencode(' . $params[0] . ')';
+
+ case 'urlpathinfo':
+ return 'str_replace("%2F", "/", rawurlencode(' . $params[0] . '))';
+
+ case 'quotes':
+ // escape unescaped single quotes
+ return 'preg_replace("%(?<!\\\\\\\\)\'%", "\\\'",' . $params[0] . ')';
+
+ case 'javascript':
+ // escape quotes and backslashes, newlines, etc.
+ return 'strtr(' . $params[0] . ', array("\\\\" => "\\\\\\\\", "\'" => "\\\\\'", "\"" => "\\\\\"", "\\r" => "\\\\r", "\\n" => "\\\n", "</" => "<\/" ))';
+ }
+ }
+ catch (SmartyException $e) {
+ // pass through to regular plugin fallback
+ }
+
+ // could not optimize |escape call, so fallback to regular plugin
+ if ($compiler->template->caching && ($compiler->tag_nocache | $compiler->nocache)) {
+ $compiler->template->required_plugins['nocache']['escape']['modifier']['file'] = SMARTY_PLUGINS_DIR . 'modifier.escape.php';
+ $compiler->template->required_plugins['nocache']['escape']['modifier']['function'] = 'smarty_modifier_escape';
+ } else {
+ $compiler->template->required_plugins['compiled']['escape']['modifier']['file'] = SMARTY_PLUGINS_DIR . 'modifier.escape.php';
+ $compiler->template->required_plugins['compiled']['escape']['modifier']['function'] = 'smarty_modifier_escape';
+ }
+
+ return 'smarty_modifier_escape(' . join(', ', $params) . ')';
+}
diff --git a/library/Smarty/libs/plugins/modifiercompiler.from_charset.php b/library/Smarty/libs/plugins/modifiercompiler.from_charset.php
index 93b568a5a..dab43e9c3 100644
--- a/library/Smarty/libs/plugins/modifiercompiler.from_charset.php
+++ b/library/Smarty/libs/plugins/modifiercompiler.from_charset.php
@@ -1,34 +1,33 @@
-<?php
-/**
- * Smarty plugin
- *
- * @package Smarty
- * @subpackage PluginsModifierCompiler
- */
-
-/**
- * Smarty from_charset modifier plugin
- *
- * Type: modifier<br>
- * Name: from_charset<br>
- * Purpose: convert character encoding from $charset to internal encoding
- *
- * @author Rodney Rehm
- * @param array $params parameters
- * @return string with compiled code
- */
-function smarty_modifiercompiler_from_charset($params, $compiler)
-{
- if (!Smarty::$_MBSTRING) {
- // FIXME: (rodneyrehm) shouldn't this throw an error?
- return $params[0];
- }
-
- if (!isset($params[1])) {
- $params[1] = '"ISO-8859-1"';
- }
-
- return 'mb_convert_encoding(' . $params[0] . ', "' . addslashes(Smarty::$_CHARSET) . '", ' . $params[1] . ')';
-}
-
-?> \ No newline at end of file
+<?php
+/**
+ * Smarty plugin
+ *
+ * @package Smarty
+ * @subpackage PluginsModifierCompiler
+ */
+
+/**
+ * Smarty from_charset modifier plugin
+ * Type: modifier<br>
+ * Name: from_charset<br>
+ * Purpose: convert character encoding from $charset to internal encoding
+ *
+ * @author Rodney Rehm
+ *
+ * @param array $params parameters
+ *
+ * @return string with compiled code
+ */
+function smarty_modifiercompiler_from_charset($params)
+{
+ if (!Smarty::$_MBSTRING) {
+ // FIXME: (rodneyrehm) shouldn't this throw an error?
+ return $params[0];
+ }
+
+ if (!isset($params[1])) {
+ $params[1] = '"ISO-8859-1"';
+ }
+
+ return 'mb_convert_encoding(' . $params[0] . ', "' . addslashes(Smarty::$_CHARSET) . '", ' . $params[1] . ')';
+}
diff --git a/library/Smarty/libs/plugins/modifiercompiler.indent.php b/library/Smarty/libs/plugins/modifiercompiler.indent.php
index 020c4fdb3..e3ca20821 100644
--- a/library/Smarty/libs/plugins/modifiercompiler.indent.php
+++ b/library/Smarty/libs/plugins/modifiercompiler.indent.php
@@ -1,32 +1,33 @@
-<?php
-/**
- * Smarty plugin
- * @package Smarty
- * @subpackage PluginsModifierCompiler
- */
-
-/**
- * Smarty indent modifier plugin
- *
- * Type: modifier<br>
- * Name: indent<br>
- * Purpose: indent lines of text
- *
- * @link http://www.smarty.net/manual/en/language.modifier.indent.php indent (Smarty online manual)
- * @author Uwe Tews
- * @param array $params parameters
- * @return string with compiled code
- */
-
-function smarty_modifiercompiler_indent($params, $compiler)
-{
- if (!isset($params[1])) {
- $params[1] = 4;
- }
- if (!isset($params[2])) {
- $params[2] = "' '";
- }
- return 'preg_replace(\'!^!m\',str_repeat(' . $params[2] . ',' . $params[1] . '),' . $params[0] . ')';
-}
-
-?> \ No newline at end of file
+<?php
+/**
+ * Smarty plugin
+ *
+ * @package Smarty
+ * @subpackage PluginsModifierCompiler
+ */
+
+/**
+ * Smarty indent modifier plugin
+ * Type: modifier<br>
+ * Name: indent<br>
+ * Purpose: indent lines of text
+ *
+ * @link http://www.smarty.net/manual/en/language.modifier.indent.php indent (Smarty online manual)
+ * @author Uwe Tews
+ *
+ * @param array $params parameters
+ *
+ * @return string with compiled code
+ */
+
+function smarty_modifiercompiler_indent($params)
+{
+ if (!isset($params[1])) {
+ $params[1] = 4;
+ }
+ if (!isset($params[2])) {
+ $params[2] = "' '";
+ }
+
+ return 'preg_replace(\'!^!m\',str_repeat(' . $params[2] . ',' . $params[1] . '),' . $params[0] . ')';
+}
diff --git a/library/Smarty/libs/plugins/modifiercompiler.lower.php b/library/Smarty/libs/plugins/modifiercompiler.lower.php
index 1845cc1d2..1d255f371 100644
--- a/library/Smarty/libs/plugins/modifiercompiler.lower.php
+++ b/library/Smarty/libs/plugins/modifiercompiler.lower.php
@@ -1,31 +1,31 @@
-<?php
-/**
- * Smarty plugin
- * @package Smarty
- * @subpackage PluginsModifierCompiler
- */
-
-/**
- * Smarty lower modifier plugin
- *
- * Type: modifier<br>
- * Name: lower<br>
- * Purpose: convert string to lowercase
- *
- * @link http://www.smarty.net/manual/en/language.modifier.lower.php lower (Smarty online manual)
- * @author Monte Ohrt <monte at ohrt dot com>
- * @author Uwe Tews
- * @param array $params parameters
- * @return string with compiled code
- */
-
-function smarty_modifiercompiler_lower($params, $compiler)
-{
- if (Smarty::$_MBSTRING) {
- return 'mb_strtolower(' . $params[0] . ', \'' . addslashes(Smarty::$_CHARSET) . '\')' ;
- }
- // no MBString fallback
- return 'strtolower(' . $params[0] . ')';
-}
-
-?> \ No newline at end of file
+<?php
+/**
+ * Smarty plugin
+ *
+ * @package Smarty
+ * @subpackage PluginsModifierCompiler
+ */
+
+/**
+ * Smarty lower modifier plugin
+ * Type: modifier<br>
+ * Name: lower<br>
+ * Purpose: convert string to lowercase
+ *
+ * @link http://www.smarty.net/manual/en/language.modifier.lower.php lower (Smarty online manual)
+ * @author Monte Ohrt <monte at ohrt dot com>
+ * @author Uwe Tews
+ *
+ * @param array $params parameters
+ *
+ * @return string with compiled code
+ */
+
+function smarty_modifiercompiler_lower($params)
+{
+ if (Smarty::$_MBSTRING) {
+ return 'mb_strtolower(' . $params[0] . ', \'' . addslashes(Smarty::$_CHARSET) . '\')';
+ }
+ // no MBString fallback
+ return 'strtolower(' . $params[0] . ')';
+}
diff --git a/library/Smarty/libs/plugins/modifiercompiler.noprint.php b/library/Smarty/libs/plugins/modifiercompiler.noprint.php
index 3ca26571a..4906908b4 100644
--- a/library/Smarty/libs/plugins/modifiercompiler.noprint.php
+++ b/library/Smarty/libs/plugins/modifiercompiler.noprint.php
@@ -1,25 +1,21 @@
-<?php
-/**
- * Smarty plugin
- *
- * @package Smarty
- * @subpackage PluginsModifierCompiler
- */
-
-/**
- * Smarty noprint modifier plugin
- *
- * Type: modifier<br>
- * Name: noprint<br>
- * Purpose: return an empty string
- *
- * @author Uwe Tews
- * @param array $params parameters
- * @return string with compiled code
- */
-function smarty_modifiercompiler_noprint($params, $compiler)
-{
- return "''";
-}
-
-?> \ No newline at end of file
+<?php
+/**
+ * Smarty plugin
+ *
+ * @package Smarty
+ * @subpackage PluginsModifierCompiler
+ */
+
+/**
+ * Smarty noprint modifier plugin
+ * Type: modifier<br>
+ * Name: noprint<br>
+ * Purpose: return an empty string
+ *
+ * @author Uwe Tews
+ * @return string with compiled code
+ */
+function smarty_modifiercompiler_noprint()
+{
+ return "''";
+}
diff --git a/library/Smarty/libs/plugins/modifiercompiler.string_format.php b/library/Smarty/libs/plugins/modifiercompiler.string_format.php
index 83345977b..71cdf2819 100644
--- a/library/Smarty/libs/plugins/modifiercompiler.string_format.php
+++ b/library/Smarty/libs/plugins/modifiercompiler.string_format.php
@@ -1,26 +1,25 @@
-<?php
-/**
- * Smarty plugin
- *
- * @package Smarty
- * @subpackage PluginsModifierCompiler
- */
-
-/**
- * Smarty string_format modifier plugin
- *
- * Type: modifier<br>
- * Name: string_format<br>
- * Purpose: format strings via sprintf
- *
- * @link http://www.smarty.net/manual/en/language.modifier.string.format.php string_format (Smarty online manual)
- * @author Uwe Tews
- * @param array $params parameters
- * @return string with compiled code
- */
-function smarty_modifiercompiler_string_format($params, $compiler)
-{
- return 'sprintf(' . $params[1] . ',' . $params[0] . ')';
-}
-
-?> \ No newline at end of file
+<?php
+/**
+ * Smarty plugin
+ *
+ * @package Smarty
+ * @subpackage PluginsModifierCompiler
+ */
+
+/**
+ * Smarty string_format modifier plugin
+ * Type: modifier<br>
+ * Name: string_format<br>
+ * Purpose: format strings via sprintf
+ *
+ * @link http://www.smarty.net/manual/en/language.modifier.string.format.php string_format (Smarty online manual)
+ * @author Uwe Tews
+ *
+ * @param array $params parameters
+ *
+ * @return string with compiled code
+ */
+function smarty_modifiercompiler_string_format($params)
+{
+ return 'sprintf(' . $params[1] . ',' . $params[0] . ')';
+}
diff --git a/library/Smarty/libs/plugins/modifiercompiler.strip.php b/library/Smarty/libs/plugins/modifiercompiler.strip.php
index f1d5db045..fcd6cbaea 100644
--- a/library/Smarty/libs/plugins/modifiercompiler.strip.php
+++ b/library/Smarty/libs/plugins/modifiercompiler.strip.php
@@ -1,33 +1,33 @@
-<?php
-/**
- * Smarty plugin
- *
- * @package Smarty
- * @subpackage PluginsModifierCompiler
- */
-
-/**
- * Smarty strip modifier plugin
- *
- * Type: modifier<br>
- * Name: strip<br>
- * Purpose: Replace all repeated spaces, newlines, tabs
- * with a single space or supplied replacement string.<br>
- * Example: {$var|strip} {$var|strip:"&nbsp;"}<br>
- * Date: September 25th, 2002
- *
- * @link http://www.smarty.net/manual/en/language.modifier.strip.php strip (Smarty online manual)
- * @author Uwe Tews
- * @param array $params parameters
- * @return string with compiled code
- */
-
-function smarty_modifiercompiler_strip($params, $compiler)
-{
- if (!isset($params[1])) {
- $params[1] = "' '";
- }
- return "preg_replace('!\s+!" . Smarty::$_UTF8_MODIFIER . "', {$params[1]},{$params[0]})";
-}
-
-?> \ No newline at end of file
+<?php
+/**
+ * Smarty plugin
+ *
+ * @package Smarty
+ * @subpackage PluginsModifierCompiler
+ */
+
+/**
+ * Smarty strip modifier plugin
+ * Type: modifier<br>
+ * Name: strip<br>
+ * Purpose: Replace all repeated spaces, newlines, tabs
+ * with a single space or supplied replacement string.<br>
+ * Example: {$var|strip} {$var|strip:"&nbsp;"}<br>
+ * Date: September 25th, 2002
+ *
+ * @link http://www.smarty.net/manual/en/language.modifier.strip.php strip (Smarty online manual)
+ * @author Uwe Tews
+ *
+ * @param array $params parameters
+ *
+ * @return string with compiled code
+ */
+
+function smarty_modifiercompiler_strip($params)
+{
+ if (!isset($params[1])) {
+ $params[1] = "' '";
+ }
+
+ return "preg_replace('!\s+!" . Smarty::$_UTF8_MODIFIER . "', {$params[1]},{$params[0]})";
+}
diff --git a/library/Smarty/libs/plugins/modifiercompiler.strip_tags.php b/library/Smarty/libs/plugins/modifiercompiler.strip_tags.php
index 296a3a2da..3e6e13048 100644
--- a/library/Smarty/libs/plugins/modifiercompiler.strip_tags.php
+++ b/library/Smarty/libs/plugins/modifiercompiler.strip_tags.php
@@ -1,33 +1,29 @@
-<?php
-/**
- * Smarty plugin
- *
- * @package Smarty
- * @subpackage PluginsModifierCompiler
- */
-
-/**
- * Smarty strip_tags modifier plugin
- *
- * Type: modifier<br>
- * Name: strip_tags<br>
- * Purpose: strip html tags from text
- *
- * @link http://www.smarty.net/manual/en/language.modifier.strip.tags.php strip_tags (Smarty online manual)
- * @author Uwe Tews
- * @param array $params parameters
- * @return string with compiled code
- */
-function smarty_modifiercompiler_strip_tags($params, $compiler)
-{
- if (!isset($params[1])) {
- $params[1] = true;
- }
- if ($params[1] === true) {
- return "preg_replace('!<[^>]*?>!', ' ', {$params[0]})";
- } else {
- return 'strip_tags(' . $params[0] . ')';
- }
-}
-
-?> \ No newline at end of file
+<?php
+/**
+ * Smarty plugin
+ *
+ * @package Smarty
+ * @subpackage PluginsModifierCompiler
+ */
+
+/**
+ * Smarty strip_tags modifier plugin
+ * Type: modifier<br>
+ * Name: strip_tags<br>
+ * Purpose: strip html tags from text
+ *
+ * @link http://www.smarty.net/manual/en/language.modifier.strip.tags.php strip_tags (Smarty online manual)
+ * @author Uwe Tews
+ *
+ * @param array $params parameters
+ *
+ * @return string with compiled code
+ */
+function smarty_modifiercompiler_strip_tags($params)
+{
+ if (!isset($params[1]) || $params[1] === true || trim($params[1], '"') == 'true') {
+ return "preg_replace('!<[^>]*?>!', ' ', {$params[0]})";
+ } else {
+ return 'strip_tags(' . $params[0] . ')';
+ }
+}
diff --git a/library/Smarty/libs/plugins/modifiercompiler.to_charset.php b/library/Smarty/libs/plugins/modifiercompiler.to_charset.php
index f5cdf455f..9122d8bbb 100644
--- a/library/Smarty/libs/plugins/modifiercompiler.to_charset.php
+++ b/library/Smarty/libs/plugins/modifiercompiler.to_charset.php
@@ -1,34 +1,33 @@
-<?php
-/**
- * Smarty plugin
- *
- * @package Smarty
- * @subpackage PluginsModifierCompiler
- */
-
-/**
- * Smarty to_charset modifier plugin
- *
- * Type: modifier<br>
- * Name: to_charset<br>
- * Purpose: convert character encoding from internal encoding to $charset
- *
- * @author Rodney Rehm
- * @param array $params parameters
- * @return string with compiled code
- */
-function smarty_modifiercompiler_to_charset($params, $compiler)
-{
- if (!Smarty::$_MBSTRING) {
- // FIXME: (rodneyrehm) shouldn't this throw an error?
- return $params[0];
- }
-
- if (!isset($params[1])) {
- $params[1] = '"ISO-8859-1"';
- }
-
- return 'mb_convert_encoding(' . $params[0] . ', ' . $params[1] . ', "' . addslashes(Smarty::$_CHARSET) . '")';
-}
-
-?> \ No newline at end of file
+<?php
+/**
+ * Smarty plugin
+ *
+ * @package Smarty
+ * @subpackage PluginsModifierCompiler
+ */
+
+/**
+ * Smarty to_charset modifier plugin
+ * Type: modifier<br>
+ * Name: to_charset<br>
+ * Purpose: convert character encoding from internal encoding to $charset
+ *
+ * @author Rodney Rehm
+ *
+ * @param array $params parameters
+ *
+ * @return string with compiled code
+ */
+function smarty_modifiercompiler_to_charset($params)
+{
+ if (!Smarty::$_MBSTRING) {
+ // FIXME: (rodneyrehm) shouldn't this throw an error?
+ return $params[0];
+ }
+
+ if (!isset($params[1])) {
+ $params[1] = '"ISO-8859-1"';
+ }
+
+ return 'mb_convert_encoding(' . $params[0] . ', ' . $params[1] . ', "' . addslashes(Smarty::$_CHARSET) . '")';
+}
diff --git a/library/Smarty/libs/plugins/modifiercompiler.unescape.php b/library/Smarty/libs/plugins/modifiercompiler.unescape.php
index 4321ff18d..3b17ea2e1 100644
--- a/library/Smarty/libs/plugins/modifiercompiler.unescape.php
+++ b/library/Smarty/libs/plugins/modifiercompiler.unescape.php
@@ -1,51 +1,50 @@
-<?php
-/**
- * Smarty plugin
- *
- * @package Smarty
- * @subpackage PluginsModifierCompiler
- */
-
-/**
- * Smarty unescape modifier plugin
- *
- * Type: modifier<br>
- * Name: unescape<br>
- * Purpose: unescape html entities
- *
- * @author Rodney Rehm
- * @param array $params parameters
- * @return string with compiled code
- */
-function smarty_modifiercompiler_unescape($params, $compiler)
-{
- if (!isset($params[1])) {
- $params[1] = 'html';
- }
- if (!isset($params[2])) {
- $params[2] = '\'' . addslashes(Smarty::$_CHARSET) . '\'';
- } else {
- $params[2] = "'" . $params[2] . "'";
- }
-
- switch (trim($params[1], '"\'')) {
- case 'entity':
- case 'htmlall':
- if (Smarty::$_MBSTRING) {
- return 'mb_convert_encoding(' . $params[0] . ', ' . $params[2] . ', \'HTML-ENTITIES\')';
- }
-
- return 'html_entity_decode(' . $params[0] . ', ENT_NOQUOTES, ' . $params[2] . ')';
-
- case 'html':
- return 'htmlspecialchars_decode(' . $params[0] . ', ENT_QUOTES)';
-
- case 'url':
- return 'rawurldecode(' . $params[0] . ')';
-
- default:
- return $params[0];
- }
-}
-
-?> \ No newline at end of file
+<?php
+/**
+ * Smarty plugin
+ *
+ * @package Smarty
+ * @subpackage PluginsModifierCompiler
+ */
+
+/**
+ * Smarty unescape modifier plugin
+ * Type: modifier<br>
+ * Name: unescape<br>
+ * Purpose: unescape html entities
+ *
+ * @author Rodney Rehm
+ *
+ * @param array $params parameters
+ *
+ * @return string with compiled code
+ */
+function smarty_modifiercompiler_unescape($params)
+{
+ if (!isset($params[1])) {
+ $params[1] = 'html';
+ }
+ if (!isset($params[2])) {
+ $params[2] = '\'' . addslashes(Smarty::$_CHARSET) . '\'';
+ } else {
+ $params[2] = "'" . $params[2] . "'";
+ }
+
+ switch (trim($params[1], '"\'')) {
+ case 'entity':
+ case 'htmlall':
+ if (Smarty::$_MBSTRING) {
+ return 'mb_convert_encoding(' . $params[0] . ', ' . $params[2] . ', \'HTML-ENTITIES\')';
+ }
+
+ return 'html_entity_decode(' . $params[0] . ', ENT_NOQUOTES, ' . $params[2] . ')';
+
+ case 'html':
+ return 'htmlspecialchars_decode(' . $params[0] . ', ENT_QUOTES)';
+
+ case 'url':
+ return 'rawurldecode(' . $params[0] . ')';
+
+ default:
+ return $params[0];
+ }
+}
diff --git a/library/Smarty/libs/plugins/modifiercompiler.upper.php b/library/Smarty/libs/plugins/modifiercompiler.upper.php
index f368e37dc..52ca4e8ff 100644
--- a/library/Smarty/libs/plugins/modifiercompiler.upper.php
+++ b/library/Smarty/libs/plugins/modifiercompiler.upper.php
@@ -1,30 +1,29 @@
-<?php
-/**
- * Smarty plugin
- *
- * @package Smarty
- * @subpackage PluginsModifierCompiler
- */
-
-/**
- * Smarty upper modifier plugin
- *
- * Type: modifier<br>
- * Name: lower<br>
- * Purpose: convert string to uppercase
- *
- * @link http://smarty.php.net/manual/en/language.modifier.upper.php lower (Smarty online manual)
- * @author Uwe Tews
- * @param array $params parameters
- * @return string with compiled code
- */
-function smarty_modifiercompiler_upper($params, $compiler)
-{
- if (Smarty::$_MBSTRING) {
- return 'mb_strtoupper(' . $params[0] . ', \'' . addslashes(Smarty::$_CHARSET) . '\')' ;
- }
- // no MBString fallback
- return 'strtoupper(' . $params[0] . ')';
-}
-
-?> \ No newline at end of file
+<?php
+/**
+ * Smarty plugin
+ *
+ * @package Smarty
+ * @subpackage PluginsModifierCompiler
+ */
+
+/**
+ * Smarty upper modifier plugin
+ * Type: modifier<br>
+ * Name: lower<br>
+ * Purpose: convert string to uppercase
+ *
+ * @link http://smarty.php.net/manual/en/language.modifier.upper.php lower (Smarty online manual)
+ * @author Uwe Tews
+ *
+ * @param array $params parameters
+ *
+ * @return string with compiled code
+ */
+function smarty_modifiercompiler_upper($params)
+{
+ if (Smarty::$_MBSTRING) {
+ return 'mb_strtoupper(' . $params[0] . ', \'' . addslashes(Smarty::$_CHARSET) . '\')';
+ }
+ // no MBString fallback
+ return 'strtoupper(' . $params[0] . ')';
+}
diff --git a/library/Smarty/libs/plugins/modifiercompiler.wordwrap.php b/library/Smarty/libs/plugins/modifiercompiler.wordwrap.php
index f6845ad37..2ad928ea1 100644
--- a/library/Smarty/libs/plugins/modifiercompiler.wordwrap.php
+++ b/library/Smarty/libs/plugins/modifiercompiler.wordwrap.php
@@ -1,46 +1,47 @@
-<?php
-/**
- * Smarty plugin
- *
- * @package Smarty
- * @subpackage PluginsModifierCompiler
- */
-
-/**
- * Smarty wordwrap modifier plugin
- *
- * Type: modifier<br>
- * Name: wordwrap<br>
- * Purpose: wrap a string of text at a given length
- *
- * @link http://smarty.php.net/manual/en/language.modifier.wordwrap.php wordwrap (Smarty online manual)
- * @author Uwe Tews
- * @param array $params parameters
- * @return string with compiled code
- */
-function smarty_modifiercompiler_wordwrap($params, $compiler)
-{
- if (!isset($params[1])) {
- $params[1] = 80;
- }
- if (!isset($params[2])) {
- $params[2] = '"\n"';
- }
- if (!isset($params[3])) {
- $params[3] = 'false';
- }
- $function = 'wordwrap';
- if (Smarty::$_MBSTRING) {
- if ($compiler->tag_nocache | $compiler->nocache) {
- $compiler->template->required_plugins['nocache']['wordwrap']['modifier']['file'] = SMARTY_PLUGINS_DIR .'shared.mb_wordwrap.php';
- $compiler->template->required_plugins['nocache']['wordwrap']['modifier']['function'] = 'smarty_mb_wordwrap';
- } else {
- $compiler->template->required_plugins['compiled']['wordwrap']['modifier']['file'] = SMARTY_PLUGINS_DIR .'shared.mb_wordwrap.php';
- $compiler->template->required_plugins['compiled']['wordwrap']['modifier']['function'] = 'smarty_mb_wordwrap';
- }
- $function = 'smarty_mb_wordwrap';
- }
- return $function . '(' . $params[0] . ',' . $params[1] . ',' . $params[2] . ',' . $params[3] . ')';
-}
-
-?> \ No newline at end of file
+<?php
+/**
+ * Smarty plugin
+ *
+ * @package Smarty
+ * @subpackage PluginsModifierCompiler
+ */
+
+/**
+ * Smarty wordwrap modifier plugin
+ * Type: modifier<br>
+ * Name: wordwrap<br>
+ * Purpose: wrap a string of text at a given length
+ *
+ * @link http://smarty.php.net/manual/en/language.modifier.wordwrap.php wordwrap (Smarty online manual)
+ * @author Uwe Tews
+ *
+ * @param array $params parameters
+ * @param $compiler
+ *
+ * @return string with compiled code
+ */
+function smarty_modifiercompiler_wordwrap($params, $compiler)
+{
+ if (!isset($params[1])) {
+ $params[1] = 80;
+ }
+ if (!isset($params[2])) {
+ $params[2] = '"\n"';
+ }
+ if (!isset($params[3])) {
+ $params[3] = 'false';
+ }
+ $function = 'wordwrap';
+ if (Smarty::$_MBSTRING) {
+ if ($compiler->template->caching && ($compiler->tag_nocache | $compiler->nocache)) {
+ $compiler->template->required_plugins['nocache']['wordwrap']['modifier']['file'] = SMARTY_PLUGINS_DIR . 'shared.mb_wordwrap.php';
+ $compiler->template->required_plugins['nocache']['wordwrap']['modifier']['function'] = 'smarty_mb_wordwrap';
+ } else {
+ $compiler->template->required_plugins['compiled']['wordwrap']['modifier']['file'] = SMARTY_PLUGINS_DIR . 'shared.mb_wordwrap.php';
+ $compiler->template->required_plugins['compiled']['wordwrap']['modifier']['function'] = 'smarty_mb_wordwrap';
+ }
+ $function = 'smarty_mb_wordwrap';
+ }
+
+ return $function . '(' . $params[0] . ',' . $params[1] . ',' . $params[2] . ',' . $params[3] . ')';
+}
diff --git a/library/Smarty/libs/plugins/outputfilter.trimwhitespace.php b/library/Smarty/libs/plugins/outputfilter.trimwhitespace.php
index 87cf8c781..62ab4e776 100644
--- a/library/Smarty/libs/plugins/outputfilter.trimwhitespace.php
+++ b/library/Smarty/libs/plugins/outputfilter.trimwhitespace.php
@@ -2,22 +2,22 @@
/**
* Smarty plugin
*
- * @package Smarty
+ * @package Smarty
* @subpackage PluginsFilter
*/
/**
* Smarty trimwhitespace outputfilter plugin
- *
* Trim unnecessary whitespace from HTML markup.
*
* @author Rodney Rehm
- * @param string $source input string
- * @param Smarty_Internal_Template $smarty Smarty object
+ *
+ * @param string $source input string
+ *
* @return string filtered output
- * @todo substr_replace() is not overloaded by mbstring.func_overload - so this function might fail!
+ * @todo substr_replace() is not overloaded by mbstring.func_overload - so this function might fail!
*/
-function smarty_outputfilter_trimwhitespace($source, Smarty_Internal_Template $smarty)
+function smarty_outputfilter_trimwhitespace($source)
{
$store = array();
$_store = 0;
@@ -35,13 +35,13 @@ function smarty_outputfilter_trimwhitespace($source, Smarty_Internal_Template $s
$source = substr_replace($source, $replace, $match[0][1] - $_offset, $_length);
$_offset += $_length - strlen($replace);
- $_store++;
+ $_store ++;
}
}
// Strip all HTML-Comments
// yes, even the ones in <script> - see http://stackoverflow.com/a/808850/515124
- $source = preg_replace( '#<!--.*?-->#ms', '', $source );
+ $source = preg_replace('#<!--.*?-->#ms', '', $source);
// capture html elements not to be messed with
$_offset = 0;
@@ -53,42 +53,38 @@ function smarty_outputfilter_trimwhitespace($source, Smarty_Internal_Template $s
$source = substr_replace($source, $replace, $match[0][1] - $_offset, $_length);
$_offset += $_length - strlen($replace);
- $_store++;
+ $_store ++;
}
}
$expressions = array(
// replace multiple spaces between tags by a single space
// can't remove them entirely, becaue that might break poorly implemented CSS display:inline-block elements
- '#(:SMARTY@!@|>)\s+(?=@!@SMARTY:|<)#s' => '\1 \2',
+ '#(:SMARTY@!@|>)\s+(?=@!@SMARTY:|<)#s' => '\1 \2',
// remove spaces between attributes (but not in attribute values!)
'#(([a-z0-9]\s*=\s*(["\'])[^\3]*?\3)|<[a-z0-9_]+)\s+([a-z/>])#is' => '\1 \4',
// note: for some very weird reason trim() seems to remove spaces inside attributes.
// maybe a \0 byte or something is interfering?
- '#^\s+<#Ss' => '<',
- '#>\s+$#Ss' => '>',
+ '#^\s+<#Ss' => '<',
+ '#>\s+$#Ss' => '>',
);
- $source = preg_replace( array_keys($expressions), array_values($expressions), $source );
+ $source = preg_replace(array_keys($expressions), array_values($expressions), $source);
// note: for some very weird reason trim() seems to remove spaces inside attributes.
// maybe a \0 byte or something is interfering?
// $source = trim( $source );
- // capture html elements not to be messed with
$_offset = 0;
if (preg_match_all('#@!@SMARTY:([0-9]+):SMARTY@!@#is', $source, $matches, PREG_OFFSET_CAPTURE | PREG_SET_ORDER)) {
foreach ($matches as $match) {
- $store[] = $match[0][0];
$_length = strlen($match[0][0]);
- $replace = array_shift($store);
+ $replace = $store[$match[1][0]];
$source = substr_replace($source, $replace, $match[0][1] + $_offset, $_length);
$_offset += strlen($replace) - $_length;
- $_store++;
+ $_store ++;
}
}
return $source;
}
-
-?> \ No newline at end of file
diff --git a/library/Smarty/libs/plugins/shared.escape_special_chars.php b/library/Smarty/libs/plugins/shared.escape_special_chars.php
index d2609b674..d3bd756b1 100644
--- a/library/Smarty/libs/plugins/shared.escape_special_chars.php
+++ b/library/Smarty/libs/plugins/shared.escape_special_chars.php
@@ -2,20 +2,21 @@
/**
* Smarty shared plugin
*
- * @package Smarty
+ * @package Smarty
* @subpackage PluginsShared
*/
if (version_compare(PHP_VERSION, '5.2.3', '>=')) {
/**
* escape_special_chars common function
- *
* Function: smarty_function_escape_special_chars<br>
* Purpose: used by other smarty functions to escape
* special chars except for already escaped ones
*
* @author Monte Ohrt <monte at ohrt dot com>
- * @param string $string text that should by escaped
+ *
+ * @param string $string text that should by escaped
+ *
* @return string
*/
function smarty_function_escape_special_chars($string)
@@ -23,18 +24,20 @@ if (version_compare(PHP_VERSION, '5.2.3', '>=')) {
if (!is_array($string)) {
$string = htmlspecialchars($string, ENT_COMPAT, Smarty::$_CHARSET, false);
}
+
return $string;
- }
-} else {
+ }
+} else {
/**
* escape_special_chars common function
- *
* Function: smarty_function_escape_special_chars<br>
* Purpose: used by other smarty functions to escape
* special chars except for already escaped ones
*
* @author Monte Ohrt <monte at ohrt dot com>
- * @param string $string text that should by escaped
+ *
+ * @param string $string text that should by escaped
+ *
* @return string
*/
function smarty_function_escape_special_chars($string)
@@ -42,10 +45,9 @@ if (version_compare(PHP_VERSION, '5.2.3', '>=')) {
if (!is_array($string)) {
$string = preg_replace('!&(#?\w+);!', '%%%SMARTY_START%%%\\1%%%SMARTY_END%%%', $string);
$string = htmlspecialchars($string);
- $string = str_replace(array('%%%SMARTY_START%%%', '%%%SMARTY_END%%%'), array('&', ';'), $string);
+ $string = str_replace(array('%%%SMARTY_START%%%', '%%%SMARTY_END%%%'), array('&', ';'), $string);
}
- return $string;
- }
-}
-?> \ No newline at end of file
+ return $string;
+ }
+}
diff --git a/library/Smarty/libs/plugins/shared.literal_compiler_param.php b/library/Smarty/libs/plugins/shared.literal_compiler_param.php
index dbcd9374c..47d728a76 100644
--- a/library/Smarty/libs/plugins/shared.literal_compiler_param.php
+++ b/library/Smarty/libs/plugins/shared.literal_compiler_param.php
@@ -2,7 +2,7 @@
/**
* Smarty plugin
*
- * @package Smarty
+ * @package Smarty
* @subpackage PluginsShared
*/
@@ -12,22 +12,24 @@
* @param array $params parameter array as given to the compiler function
* @param integer $index array index of the parameter to convert
* @param mixed $default value to be returned if the parameter is not present
+ *
* @return mixed evaluated value of parameter or $default
* @throws SmartyException if parameter is not a literal (but an expression, variable, …)
* @author Rodney Rehm
*/
-function smarty_literal_compiler_param($params, $index, $default=null)
+function smarty_literal_compiler_param($params, $index, $default = null)
{
// not set, go default
if (!isset($params[$index])) {
return $default;
}
// test if param is a literal
- if (!preg_match('/^([\'"]?)[a-zA-Z0-9]+(\\1)$/', $params[$index])) {
+ if (!preg_match('/^([\'"]?)[a-zA-Z0-9-]+(\\1)$/', $params[$index])) {
throw new SmartyException('$param[' . $index . '] is not a literal and is thus not evaluatable at compile time');
}
$t = null;
eval("\$t = " . $params[$index] . ";");
+
return $t;
}
diff --git a/library/Smarty/libs/plugins/shared.make_timestamp.php b/library/Smarty/libs/plugins/shared.make_timestamp.php
index 5d7c97e91..7c94e5f59 100644
--- a/library/Smarty/libs/plugins/shared.make_timestamp.php
+++ b/library/Smarty/libs/plugins/shared.make_timestamp.php
@@ -2,7 +2,7 @@
/**
* Smarty shared plugin
*
- * @package Smarty
+ * @package Smarty
* @subpackage PluginsShared
*/
@@ -11,7 +11,9 @@
* Purpose: used by other smarty functions to make a timestamp from a string.
*
* @author Monte Ohrt <monte at ohrt dot com>
- * @param DateTime|int|string $string date object, timestamp or string that can be converted using strtotime()
+ *
+ * @param DateTime|int|string $string date object, timestamp or string that can be converted using strtotime()
+ *
* @return int
*/
function smarty_make_timestamp($string)
@@ -23,20 +25,19 @@ function smarty_make_timestamp($string)
return $string->getTimestamp();
} elseif (strlen($string) == 14 && ctype_digit($string)) {
// it is mysql timestamp format of YYYYMMDDHHMMSS?
- return mktime(substr($string, 8, 2),substr($string, 10, 2),substr($string, 12, 2),
- substr($string, 4, 2),substr($string, 6, 2),substr($string, 0, 4));
+ return mktime(substr($string, 8, 2), substr($string, 10, 2), substr($string, 12, 2),
+ substr($string, 4, 2), substr($string, 6, 2), substr($string, 0, 4));
} elseif (is_numeric($string)) {
// it is a numeric string, we handle it as timestamp
return (int) $string;
} else {
// strtotime should handle it
$time = strtotime($string);
- if ($time == -1 || $time === false) {
+ if ($time == - 1 || $time === false) {
// strtotime() was not able to parse $string, use "now":
return time();
}
+
return $time;
}
}
-
-?>
diff --git a/library/Smarty/libs/plugins/shared.mb_str_replace.php b/library/Smarty/libs/plugins/shared.mb_str_replace.php
index ecafeb74a..a5682ed30 100644
--- a/library/Smarty/libs/plugins/shared.mb_str_replace.php
+++ b/library/Smarty/libs/plugins/shared.mb_str_replace.php
@@ -2,7 +2,7 @@
/**
* Smarty shared plugin
*
- * @package Smarty
+ * @package Smarty
* @subpackage PluginsShared
*/
if (!function_exists('smarty_mb_str_replace')) {
@@ -10,14 +10,15 @@ if (!function_exists('smarty_mb_str_replace')) {
/**
* Multibyte string replace
*
- * @param string $search the string to be searched
- * @param string $replace the replacement string
- * @param string $subject the source string
- * @param int &$count number of matches found
+ * @param string $search the string to be searched
+ * @param string $replace the replacement string
+ * @param string $subject the source string
+ * @param int &$count number of matches found
+ *
* @return string replaced string
* @author Rodney Rehm
*/
- function smarty_mb_str_replace($search, $replace, $subject, &$count=0)
+ function smarty_mb_str_replace($search, $replace, $subject, &$count = 0)
{
if (!is_array($search) && is_array($replace)) {
return false;
@@ -25,7 +26,7 @@ if (!function_exists('smarty_mb_str_replace')) {
if (is_array($subject)) {
// call mb_replace for each single string in $subject
foreach ($subject as &$string) {
- $string = &smarty_mb_str_replace($search, $replace, $string, $c);
+ $string = & smarty_mb_str_replace($search, $replace, $string, $c);
$count += $c;
}
} elseif (is_array($search)) {
@@ -36,7 +37,7 @@ if (!function_exists('smarty_mb_str_replace')) {
}
} else {
$n = max(count($search), count($replace));
- while ($n--) {
+ while ($n --) {
$subject = smarty_mb_str_replace(current($search), current($replace), $subject, $c);
$count += $c;
next($search);
@@ -48,8 +49,7 @@ if (!function_exists('smarty_mb_str_replace')) {
$count = count($parts) - 1;
$subject = implode($replace, $parts);
}
+
return $subject;
}
-
}
-?> \ No newline at end of file
diff --git a/library/Smarty/libs/plugins/shared.mb_unicode.php b/library/Smarty/libs/plugins/shared.mb_unicode.php
index e7f839ec8..0f790b56a 100644
--- a/library/Smarty/libs/plugins/shared.mb_unicode.php
+++ b/library/Smarty/libs/plugins/shared.mb_unicode.php
@@ -2,47 +2,53 @@
/**
* Smarty shared plugin
*
- * @package Smarty
+ * @package Smarty
* @subpackage PluginsShared
*/
/**
* convert characters to their decimal unicode equivalents
*
- * @link http://www.ibm.com/developerworks/library/os-php-unicode/index.html#listing3 for inspiration
+ * @link http://www.ibm.com/developerworks/library/os-php-unicode/index.html#listing3 for inspiration
+ *
* @param string $string characters to calculate unicode of
* @param string $encoding encoding of $string, if null mb_internal_encoding() is used
+ *
* @return array sequence of unicodes
* @author Rodney Rehm
*/
-function smarty_mb_to_unicode($string, $encoding=null) {
+function smarty_mb_to_unicode($string, $encoding = null)
+{
if ($encoding) {
$expanded = mb_convert_encoding($string, "UTF-32BE", $encoding);
} else {
$expanded = mb_convert_encoding($string, "UTF-32BE");
}
+
return unpack("N*", $expanded);
}
/**
* convert unicodes to the character of given encoding
*
- * @link http://www.ibm.com/developerworks/library/os-php-unicode/index.html#listing3 for inspiration
+ * @link http://www.ibm.com/developerworks/library/os-php-unicode/index.html#listing3 for inspiration
+ *
* @param integer|array $unicode single unicode or list of unicodes to convert
* @param string $encoding encoding of returned string, if null mb_internal_encoding() is used
+ *
* @return string unicode as character sequence in given $encoding
* @author Rodney Rehm
*/
-function smarty_mb_from_unicode($unicode, $encoding=null) {
+function smarty_mb_from_unicode($unicode, $encoding = null)
+{
$t = '';
if (!$encoding) {
$encoding = mb_internal_encoding();
}
- foreach((array) $unicode as $utf32be) {
+ foreach ((array) $unicode as $utf32be) {
$character = pack("N*", $utf32be);
$t .= mb_convert_encoding($character, $encoding, "UTF-32BE");
}
+
return $t;
}
-
-?> \ No newline at end of file
diff --git a/library/Smarty/libs/plugins/shared.mb_wordwrap.php b/library/Smarty/libs/plugins/shared.mb_wordwrap.php
index ba3498c70..31f4acf01 100644
--- a/library/Smarty/libs/plugins/shared.mb_wordwrap.php
+++ b/library/Smarty/libs/plugins/shared.mb_wordwrap.php
@@ -2,44 +2,40 @@
/**
* Smarty shared plugin
*
- * @package Smarty
+ * @package Smarty
* @subpackage PluginsShared
*/
-if(!function_exists('smarty_mb_wordwrap')) {
+if (!function_exists('smarty_mb_wordwrap')) {
/**
* Wrap a string to a given number of characters
*
- * @link http://php.net/manual/en/function.wordwrap.php for similarity
- * @param string $str the string to wrap
- * @param int $width the width of the output
- * @param string $break the character used to break the line
- * @param boolean $cut ignored parameter, just for the sake of
- * @return string wrapped string
+ * @link http://php.net/manual/en/function.wordwrap.php for similarity
+ *
+ * @param string $str the string to wrap
+ * @param int $width the width of the output
+ * @param string $break the character used to break the line
+ * @param boolean $cut ignored parameter, just for the sake of
+ *
+ * @return string wrapped string
* @author Rodney Rehm
*/
- function smarty_mb_wordwrap($str, $width=75, $break="\n", $cut=false)
+ function smarty_mb_wordwrap($str, $width = 75, $break = "\n", $cut = false)
{
// break words into tokens using white space as a delimiter
- $tokens = preg_split('!(\s)!S' . Smarty::$_UTF8_MODIFIER, $str, -1, PREG_SPLIT_NO_EMPTY + PREG_SPLIT_DELIM_CAPTURE);
+ $tokens = preg_split('!(\s)!S' . Smarty::$_UTF8_MODIFIER, $str, - 1, PREG_SPLIT_NO_EMPTY + PREG_SPLIT_DELIM_CAPTURE);
$length = 0;
$t = '';
$_previous = false;
+ $_space = false;
foreach ($tokens as $_token) {
$token_length = mb_strlen($_token, Smarty::$_CHARSET);
$_tokens = array($_token);
if ($token_length > $width) {
- // remove last space
- $t = mb_substr($t, 0, -1, Smarty::$_CHARSET);
- $_previous = false;
- $length = 0;
-
- if ($cut) {
- $_tokens = preg_split('!(.{' . $width . '})!S' . Smarty::$_UTF8_MODIFIER, $_token, -1, PREG_SPLIT_NO_EMPTY + PREG_SPLIT_DELIM_CAPTURE);
- // broken words go on a new line
- $t .= $break;
+ if ($cut) {
+ $_tokens = preg_split('!(.{' . $width . '})!S' . Smarty::$_UTF8_MODIFIER, $_token, - 1, PREG_SPLIT_NO_EMPTY + PREG_SPLIT_DELIM_CAPTURE);
}
}
@@ -50,27 +46,23 @@ if(!function_exists('smarty_mb_wordwrap')) {
if ($length > $width) {
// remove space before inserted break
- if ($_previous && $token_length < $width) {
- $t = mb_substr($t, 0, -1, Smarty::$_CHARSET);
+ if ($_previous) {
+ $t = mb_substr($t, 0, - 1, Smarty::$_CHARSET);
}
- // add the break before the token
- $t .= $break;
- $length = $token_length;
-
- // skip space after inserting a break
- if ($_space) {
- $length = 0;
- continue;
+ if (!$_space) {
+ // add the break before the token
+ if (!empty($t)) {
+ $t .= $break;
+ }
+ $length = $token_length;
}
- } else if ($token == "\n") {
+ } elseif ($token == "\n") {
// hard break must reset counters
$_previous = 0;
$length = 0;
- } else {
- // remember if we had a space or not
- $_previous = $_space;
}
+ $_previous = $_space;
// add the token
$t .= $token;
}
@@ -78,6 +70,4 @@ if(!function_exists('smarty_mb_wordwrap')) {
return $t;
}
-
}
-?> \ No newline at end of file
diff --git a/library/Smarty/libs/plugins/variablefilter.htmlspecialchars.php b/library/Smarty/libs/plugins/variablefilter.htmlspecialchars.php
index aff711e48..aecd1e7e7 100644
--- a/library/Smarty/libs/plugins/variablefilter.htmlspecialchars.php
+++ b/library/Smarty/libs/plugins/variablefilter.htmlspecialchars.php
@@ -2,20 +2,18 @@
/**
* Smarty plugin
*
- * @package Smarty
+ * @package Smarty
* @subpackage PluginsFilter
*/
/**
* Smarty htmlspecialchars variablefilter plugin
*
- * @param string $source input string
- * @param Smarty_Internal_Template $smarty Smarty object
+ * @param string $source input string
+ *
* @return string filtered output
*/
-function smarty_variablefilter_htmlspecialchars($source, $smarty)
+function smarty_variablefilter_htmlspecialchars($source)
{
return htmlspecialchars($source, ENT_QUOTES, Smarty::$_CHARSET);
}
-
-?> \ No newline at end of file
diff --git a/library/Smarty/libs/sysplugins/smarty_cacheresource.php b/library/Smarty/libs/sysplugins/smarty_cacheresource.php
index ca18add5e..667bee44f 100644
--- a/library/Smarty/libs/sysplugins/smarty_cacheresource.php
+++ b/library/Smarty/libs/sysplugins/smarty_cacheresource.php
@@ -1,106 +1,123 @@
<?php
/**
-* Smarty Internal Plugin
-*
-* @package Smarty
-* @subpackage Cacher
-*/
+ * Smarty Internal Plugin
+ *
+ * @package Smarty
+ * @subpackage Cacher
+ */
/**
-* Cache Handler API
-*
-* @package Smarty
-* @subpackage Cacher
-* @author Rodney Rehm
-*/
-abstract class Smarty_CacheResource {
+ * Cache Handler API
+ *
+ * @package Smarty
+ * @subpackage Cacher
+ * @author Rodney Rehm
+ */
+abstract class Smarty_CacheResource
+{
/**
- * cache for Smarty_CacheResource instances
- * @var array
- */
+ * cache for Smarty_CacheResource instances
+ *
+ * @var array
+ */
public static $resources = array();
/**
- * resource types provided by the core
- * @var array
- */
+ * resource types provided by the core
+ *
+ * @var array
+ */
protected static $sysplugins = array(
'file' => true,
);
/**
- * populate Cached Object with meta data from Resource
- *
- * @param Smarty_Template_Cached $cached cached object
- * @param Smarty_Internal_Template $_template template object
- * @return void
- */
- public abstract function populate(Smarty_Template_Cached $cached, Smarty_Internal_Template $_template);
+ * populate Cached Object with meta data from Resource
+ *
+ * @param Smarty_Template_Cached $cached cached object
+ * @param Smarty_Internal_Template $_template template object
+ *
+ * @return void
+ */
+ abstract public function populate(Smarty_Template_Cached $cached, Smarty_Internal_Template $_template);
/**
- * populate Cached Object with timestamp and exists from Resource
- *
- * @param Smarty_Template_Cached $source cached object
- * @return void
- */
- public abstract function populateTimestamp(Smarty_Template_Cached $cached);
+ * populate Cached Object with timestamp and exists from Resource
+ *
+ * @param Smarty_Template_Cached $cached
+ *
+ * @return void
+ */
+ abstract public function populateTimestamp(Smarty_Template_Cached $cached);
/**
- * Read the cached template and process header
- *
- * @param Smarty_Internal_Template $_template template object
- * @param Smarty_Template_Cached $cached cached object
- * @return booelan true or false if the cached content does not exist
- */
- public abstract function process(Smarty_Internal_Template $_template, Smarty_Template_Cached $cached=null);
+ * Read the cached template and process header
+ *
+ * @param Smarty_Internal_Template $_template template object
+ * @param Smarty_Template_Cached $cached cached object
+ *
+ * @return boolean true or false if the cached content does not exist
+ */
+ abstract public function process(Smarty_Internal_Template $_template, Smarty_Template_Cached $cached = null);
/**
- * Write the rendered template output to cache
- *
- * @param Smarty_Internal_Template $_template template object
- * @param string $content content to cache
- * @return boolean success
- */
- public abstract function writeCachedContent(Smarty_Internal_Template $_template, $content);
+ * Write the rendered template output to cache
+ *
+ * @param Smarty_Internal_Template $_template template object
+ * @param string $content content to cache
+ *
+ * @return boolean success
+ */
+ abstract public function writeCachedContent(Smarty_Internal_Template $_template, $content);
/**
- * Return cached content
- *
- * @param Smarty_Internal_Template $_template template object
- * @param string $content content of cache
- */
+ * Return cached content
+ *
+ * @param Smarty_Internal_Template $_template template object
+ *
+ * @return null|string
+ */
public function getCachedContent(Smarty_Internal_Template $_template)
{
if ($_template->cached->handler->process($_template)) {
ob_start();
$_template->properties['unifunc']($_template);
+
return ob_get_clean();
}
+
return null;
}
/**
- * Empty cache
- *
- * @param Smarty $smarty Smarty object
- * @param integer $exp_time expiration time (number of seconds, not timestamp)
- * @return integer number of cache files deleted
- */
- public abstract function clearAll(Smarty $smarty, $exp_time=null);
+ * Empty cache
+ *
+ * @param Smarty $smarty Smarty object
+ * @param integer $exp_time expiration time (number of seconds, not timestamp)
+ *
+ * @return integer number of cache files deleted
+ */
+ abstract public function clearAll(Smarty $smarty, $exp_time = null);
/**
- * Empty cache for a specific template
- *
- * @param Smarty $smarty Smarty object
- * @param string $resource_name template name
- * @param string $cache_id cache id
- * @param string $compile_id compile id
- * @param integer $exp_time expiration time (number of seconds, not timestamp)
- * @return integer number of cache files deleted
- */
- public abstract function clear(Smarty $smarty, $resource_name, $cache_id, $compile_id, $exp_time);
-
+ * Empty cache for a specific template
+ *
+ * @param Smarty $smarty Smarty object
+ * @param string $resource_name template name
+ * @param string $cache_id cache id
+ * @param string $compile_id compile id
+ * @param integer $exp_time expiration time (number of seconds, not timestamp)
+ *
+ * @return integer number of cache files deleted
+ */
+ abstract public function clear(Smarty $smarty, $resource_name, $cache_id, $compile_id, $exp_time);
+ /**
+ * @param Smarty $smarty
+ * @param Smarty_Template_Cached $cached
+ *
+ * @return bool|null
+ */
public function locked(Smarty $smarty, Smarty_Template_Cached $cached)
{
// theoretically locking_timeout should be checked against time_limit (max_execution_time)
@@ -114,35 +131,61 @@ abstract class Smarty_CacheResource {
}
sleep(1);
}
+
return $hadLock;
}
+ /**
+ * Check is cache is locked for this template
+ *
+ * @param Smarty $smarty
+ * @param Smarty_Template_Cached $cached
+ *
+ * @return bool
+ */
public function hasLock(Smarty $smarty, Smarty_Template_Cached $cached)
{
// check if lock exists
return false;
}
+ /**
+ * Lock cache for this template
+ *
+ * @param Smarty $smarty
+ * @param Smarty_Template_Cached $cached
+ *
+ * @return bool
+ */
public function acquireLock(Smarty $smarty, Smarty_Template_Cached $cached)
{
// create lock
return true;
}
+ /**
+ * Unlock cache for this template
+ *
+ * @param Smarty $smarty
+ * @param Smarty_Template_Cached $cached
+ *
+ * @return bool
+ */
public function releaseLock(Smarty $smarty, Smarty_Template_Cached $cached)
{
// release lock
return true;
}
-
/**
- * Load Cache Resource Handler
- *
- * @param Smarty $smarty Smarty object
- * @param string $type name of the cache resource
- * @return Smarty_CacheResource Cache Resource Handler
- */
+ * Load Cache Resource Handler
+ *
+ * @param Smarty $smarty Smarty object
+ * @param string $type name of the cache resource
+ *
+ * @throws SmartyException
+ * @return Smarty_CacheResource Cache Resource Handler
+ */
public static function load(Smarty $smarty, $type = null)
{
if (!isset($type)) {
@@ -153,7 +196,7 @@ abstract class Smarty_CacheResource {
if (isset($smarty->_cacheresource_handlers[$type])) {
return $smarty->_cacheresource_handlers[$type];
}
-
+
// try registered resource
if (isset($smarty->registered_cache_resources[$type])) {
// do not cache these instances as they may vary from instance to instance
@@ -165,6 +208,7 @@ abstract class Smarty_CacheResource {
$cache_resource_class = 'Smarty_Internal_CacheResource_' . ucfirst($type);
self::$resources[$type] = new $cache_resource_class();
}
+
return $smarty->_cacheresource_handlers[$type] = self::$resources[$type];
}
// try plugins dir
@@ -173,6 +217,7 @@ abstract class Smarty_CacheResource {
if (!isset(self::$resources[$type])) {
self::$resources[$type] = new $cache_resource_class();
}
+
return $smarty->_cacheresource_handlers[$type] = self::$resources[$type];
}
// give up
@@ -180,10 +225,10 @@ abstract class Smarty_CacheResource {
}
/**
- * Invalid Loaded Cache Files
- *
- * @param Smarty $smarty Smarty object
- */
+ * Invalid Loaded Cache Files
+ *
+ * @param Smarty $smarty Smarty object
+ */
public static function invalidLoadedCache(Smarty $smarty)
{
foreach ($smarty->template_objects as $tpl) {
@@ -196,92 +241,104 @@ abstract class Smarty_CacheResource {
}
/**
-* Smarty Resource Data Object
-*
-* Cache Data Container for Template Files
-*
-* @package Smarty
-* @subpackage TemplateResources
-* @author Rodney Rehm
-*/
-class Smarty_Template_Cached {
+ * Smarty Resource Data Object
+ * Cache Data Container for Template Files
+ *
+ * @package Smarty
+ * @subpackage TemplateResources
+ * @author Rodney Rehm
+ */
+class Smarty_Template_Cached
+{
/**
- * Source Filepath
- * @var string
- */
+ * Source Filepath
+ *
+ * @var string
+ */
public $filepath = false;
/**
- * Source Content
- * @var string
- */
+ * Source Content
+ *
+ * @var string
+ */
public $content = null;
/**
- * Source Timestamp
- * @var integer
- */
+ * Source Timestamp
+ *
+ * @var integer
+ */
public $timestamp = false;
/**
- * Source Existance
- * @var boolean
- */
+ * Source Existence
+ *
+ * @var boolean
+ */
public $exists = false;
/**
- * Cache Is Valid
- * @var boolean
- */
+ * Cache Is Valid
+ *
+ * @var boolean
+ */
public $valid = false;
/**
- * Cache was processed
- * @var boolean
- */
+ * Cache was processed
+ *
+ * @var boolean
+ */
public $processed = false;
/**
- * CacheResource Handler
- * @var Smarty_CacheResource
- */
+ * CacheResource Handler
+ *
+ * @var Smarty_CacheResource
+ */
public $handler = null;
/**
- * Template Compile Id (Smarty_Internal_Template::$compile_id)
- * @var string
- */
+ * Template Compile Id (Smarty_Internal_Template::$compile_id)
+ *
+ * @var string
+ */
public $compile_id = null;
/**
- * Template Cache Id (Smarty_Internal_Template::$cache_id)
- * @var string
- */
+ * Template Cache Id (Smarty_Internal_Template::$cache_id)
+ *
+ * @var string
+ */
public $cache_id = null;
/**
- * Id for cache locking
- * @var string
- */
+ * Id for cache locking
+ *
+ * @var string
+ */
public $lock_id = null;
/**
- * flag that cache is locked by this instance
- * @var bool
- */
+ * flag that cache is locked by this instance
+ *
+ * @var bool
+ */
public $is_locked = false;
/**
- * Source Object
- * @var Smarty_Template_Source
- */
+ * Source Object
+ *
+ * @var Smarty_Template_Source
+ */
public $source = null;
/**
- * create Cached Object container
- *
- * @param Smarty_Internal_Template $_template template object
- */
+ * create Cached Object container
+ *
+ * @param Smarty_Internal_Template $_template template object
+ */
public function __construct(Smarty_Internal_Template $_template)
{
$this->compile_id = $_template->compile_id;
@@ -300,6 +357,7 @@ class Smarty_Template_Cached {
//
if (!($_template->caching == Smarty::CACHING_LIFETIME_CURRENT || $_template->caching == Smarty::CACHING_LIFETIME_SAVED) || $_template->source->recompiled) {
$handler->populate($this, $_template);
+
return;
}
while (true) {
@@ -328,7 +386,7 @@ class Smarty_Template_Cached {
if ($smarty->debugging) {
Smarty_Internal_Debug::start_cache($_template);
}
- if($handler->process($_template, $this) === false) {
+ if ($handler->process($_template, $this) === false) {
$this->valid = false;
} else {
$this->processed = true;
@@ -347,6 +405,7 @@ class Smarty_Template_Cached {
}
if (!$this->valid && $_template->smarty->cache_locking) {
$this->handler->acquireLock($_template->smarty, $this);
+
return;
} else {
return;
@@ -355,27 +414,29 @@ class Smarty_Template_Cached {
}
/**
- * Write this cache object to handler
- *
- * @param Smarty_Internal_Template $_template template object
- * @param string $content content to cache
- * @return boolean success
- */
+ * Write this cache object to handler
+ *
+ * @param Smarty_Internal_Template $_template template object
+ * @param string $content content to cache
+ *
+ * @return boolean success
+ */
public function write(Smarty_Internal_Template $_template, $content)
{
if (!$_template->source->recompiled) {
if ($this->handler->writeCachedContent($_template, $content)) {
+ $this->content = null;
$this->timestamp = time();
$this->exists = true;
$this->valid = true;
if ($_template->smarty->cache_locking) {
$this->handler->releaseLock($_template->smarty, $this);
}
+
return true;
}
}
+
return false;
}
-
}
-?> \ No newline at end of file
diff --git a/library/Smarty/libs/sysplugins/smarty_cacheresource_custom.php b/library/Smarty/libs/sysplugins/smarty_cacheresource_custom.php
index ee9de157b..a258b2de7 100644
--- a/library/Smarty/libs/sysplugins/smarty_cacheresource_custom.php
+++ b/library/Smarty/libs/sysplugins/smarty_cacheresource_custom.php
@@ -2,42 +2,43 @@
/**
* Smarty Internal Plugin
*
- * @package Smarty
+ * @package Smarty
* @subpackage Cacher
*/
/**
* Cache Handler API
*
- * @package Smarty
+ * @package Smarty
* @subpackage Cacher
- * @author Rodney Rehm
+ * @author Rodney Rehm
*/
-abstract class Smarty_CacheResource_Custom extends Smarty_CacheResource {
-
+abstract class Smarty_CacheResource_Custom extends Smarty_CacheResource
+{
/**
* fetch cached content and its modification time from data source
*
- * @param string $id unique cache content identifier
- * @param string $name template name
- * @param string $cache_id cache id
- * @param string $compile_id compile id
- * @param string $content cached content
- * @param integer $mtime cache modification timestamp (epoch)
+ * @param string $id unique cache content identifier
+ * @param string $name template name
+ * @param string $cache_id cache id
+ * @param string $compile_id compile id
+ * @param string $content cached content
+ * @param integer $mtime cache modification timestamp (epoch)
+ *
* @return void
*/
- protected abstract function fetch($id, $name, $cache_id, $compile_id, &$content, &$mtime);
+ abstract protected function fetch($id, $name, $cache_id, $compile_id, &$content, &$mtime);
/**
* Fetch cached content's modification timestamp from data source
- *
* {@internal implementing this method is optional.
* Only implement it if modification times can be accessed faster than loading the complete cached content.}}
*
- * @param string $id unique cache content identifier
- * @param string $name template name
- * @param string $cache_id cache id
- * @param string $compile_id compile id
+ * @param string $id unique cache content identifier
+ * @param string $name template name
+ * @param string $cache_id cache id
+ * @param string $compile_id compile id
+ *
* @return integer|boolean timestamp (epoch) the template was modified, or false if not found
*/
protected function fetchTimestamp($id, $name, $cache_id, $compile_id)
@@ -48,32 +49,35 @@ abstract class Smarty_CacheResource_Custom extends Smarty_CacheResource {
/**
* Save content to cache
*
- * @param string $id unique cache content identifier
- * @param string $name template name
- * @param string $cache_id cache id
- * @param string $compile_id compile id
- * @param integer|null $exp_time seconds till expiration or null
- * @param string $content content to cache
- * @return boolean success
+ * @param string $id unique cache content identifier
+ * @param string $name template name
+ * @param string $cache_id cache id
+ * @param string $compile_id compile id
+ * @param integer|null $exp_time seconds till expiration or null
+ * @param string $content content to cache
+ *
+ * @return boolean success
*/
- protected abstract function save($id, $name, $cache_id, $compile_id, $exp_time, $content);
+ abstract protected function save($id, $name, $cache_id, $compile_id, $exp_time, $content);
/**
* Delete content from cache
*
- * @param string $name template name
- * @param string $cache_id cache id
- * @param string $compile_id compile id
- * @param integer|null $exp_time seconds till expiration time in seconds or null
- * @return integer number of deleted caches
+ * @param string $name template name
+ * @param string $cache_id cache id
+ * @param string $compile_id compile id
+ * @param integer|null $exp_time seconds till expiration time in seconds or null
+ *
+ * @return integer number of deleted caches
*/
- protected abstract function delete($name, $cache_id, $compile_id, $exp_time);
+ abstract protected function delete($name, $cache_id, $compile_id, $exp_time);
/**
* populate Cached Object with meta data from Resource
*
- * @param Smarty_Template_Cached $cached cached object
- * @param Smarty_Internal_Template $_template template object
+ * @param Smarty_Template_Cached $cached cached object
+ * @param Smarty_Internal_Template $_template template object
+ *
* @return void
*/
public function populate(Smarty_Template_Cached $cached, Smarty_Internal_Template $_template)
@@ -88,7 +92,8 @@ abstract class Smarty_CacheResource_Custom extends Smarty_CacheResource {
/**
* populate Cached Object with timestamp and exists from Resource
*
- * @param Smarty_Template_Cached $source cached object
+ * @param Smarty_Template_Cached $cached
+ *
* @return void
*/
public function populateTimestamp(Smarty_Template_Cached $cached)
@@ -97,6 +102,7 @@ abstract class Smarty_CacheResource_Custom extends Smarty_CacheResource {
if ($mtime !== null) {
$cached->timestamp = $mtime;
$cached->exists = !!$cached->timestamp;
+
return;
}
$timestamp = null;
@@ -108,11 +114,12 @@ abstract class Smarty_CacheResource_Custom extends Smarty_CacheResource {
/**
* Read the cached template and process the header
*
- * @param Smarty_Internal_Template $_template template object
- * @param Smarty_Template_Cached $cached cached object
- * @return booelan true or false if the cached content does not exist
+ * @param Smarty_Internal_Template $_template template object
+ * @param Smarty_Template_Cached $cached cached object
+ *
+ * @return boolean true or false if the cached content does not exist
*/
- public function process(Smarty_Internal_Template $_template, Smarty_Template_Cached $cached=null)
+ public function process(Smarty_Internal_Template $_template, Smarty_Template_Cached $cached = null)
{
if (!$cached) {
$cached = $_template->cached;
@@ -130,19 +137,25 @@ abstract class Smarty_CacheResource_Custom extends Smarty_CacheResource {
);
}
if (isset($content)) {
+ /** @var Smarty_Internal_Template $_smarty_tpl
+ * used in evaluated code
+ */
$_smarty_tpl = $_template;
eval("?>" . $content);
+
return true;
}
+
return false;
}
/**
* Write the rendered template output to cache
*
- * @param Smarty_Internal_Template $_template template object
- * @param string $content content to cache
- * @return boolean success
+ * @param Smarty_Internal_Template $_template template object
+ * @param string $content content to cache
+ *
+ * @return boolean success
*/
public function writeCachedContent(Smarty_Internal_Template $_template, $content)
{
@@ -159,38 +172,69 @@ abstract class Smarty_CacheResource_Custom extends Smarty_CacheResource {
/**
* Empty cache
*
- * @param Smarty $smarty Smarty object
- * @param integer $exp_time expiration time (number of seconds, not timestamp)
+ * @param Smarty $smarty Smarty object
+ * @param integer $exp_time expiration time (number of seconds, not timestamp)
+ *
* @return integer number of cache files deleted
*/
- public function clearAll(Smarty $smarty, $exp_time=null)
+ public function clearAll(Smarty $smarty, $exp_time = null)
{
$this->cache = array();
+
return $this->delete(null, null, null, $exp_time);
}
/**
* Empty cache for a specific template
*
- * @param Smarty $smarty Smarty object
- * @param string $resource_name template name
- * @param string $cache_id cache id
- * @param string $compile_id compile id
- * @param integer $exp_time expiration time (number of seconds, not timestamp)
+ * @param Smarty $smarty Smarty object
+ * @param string $resource_name template name
+ * @param string $cache_id cache id
+ * @param string $compile_id compile id
+ * @param integer $exp_time expiration time (number of seconds, not timestamp)
+ *
* @return integer number of cache files deleted
*/
public function clear(Smarty $smarty, $resource_name, $cache_id, $compile_id, $exp_time)
{
$this->cache = array();
- return $this->delete($resource_name, $cache_id, $compile_id, $exp_time);
+ $cache_name = null;
+
+ if (isset($resource_name)) {
+ $_save_stat = $smarty->caching;
+ $smarty->caching = true;
+ $tpl = new $smarty->template_class($resource_name, $smarty);
+ $smarty->caching = $_save_stat;
+
+ if ($tpl->source->exists) {
+ $cache_name = $tpl->source->name;
+ } else {
+ return 0;
+ }
+ // remove from template cache
+ if ($smarty->allow_ambiguous_resources) {
+ $_templateId = $tpl->source->unique_resource . $tpl->cache_id . $tpl->compile_id;
+ } else {
+ $_templateId = $smarty->joined_template_dir . '#' . $resource_name . $tpl->cache_id . $tpl->compile_id;
+ }
+ if (isset($_templateId[150])) {
+ $_templateId = sha1($_templateId);
+ }
+ unset($smarty->template_objects[$_templateId]);
+ // template object no longer needed
+ unset($tpl);
+ }
+
+ return $this->delete($cache_name, $cache_id, $compile_id, $exp_time);
}
/**
* Check is cache is locked for this template
*
- * @param Smarty $smarty Smarty object
- * @param Smarty_Template_Cached $cached cached object
- * @return booelan true or false if cache is locked
+ * @param Smarty $smarty Smarty object
+ * @param Smarty_Template_Cached $cached cached object
+ *
+ * @return boolean true or false if cache is locked
*/
public function hasLock(Smarty $smarty, Smarty_Template_Cached $cached)
{
@@ -208,8 +252,10 @@ abstract class Smarty_CacheResource_Custom extends Smarty_CacheResource {
/**
* Lock cache for this template
*
- * @param Smarty $smarty Smarty object
+ * @param Smarty $smarty Smarty object
* @param Smarty_Template_Cached $cached cached object
+ *
+ * @return bool|void
*/
public function acquireLock(Smarty $smarty, Smarty_Template_Cached $cached)
{
@@ -223,8 +269,10 @@ abstract class Smarty_CacheResource_Custom extends Smarty_CacheResource {
/**
* Unlock cache for this template
*
- * @param Smarty $smarty Smarty object
+ * @param Smarty $smarty Smarty object
* @param Smarty_Template_Cached $cached cached object
+ *
+ * @return bool|void
*/
public function releaseLock(Smarty $smarty, Smarty_Template_Cached $cached)
{
@@ -234,4 +282,3 @@ abstract class Smarty_CacheResource_Custom extends Smarty_CacheResource {
$this->delete($name, null, null, null);
}
}
-?> \ No newline at end of file
diff --git a/library/Smarty/libs/sysplugins/smarty_cacheresource_keyvaluestore.php b/library/Smarty/libs/sysplugins/smarty_cacheresource_keyvaluestore.php
index dff9b65aa..a4b365a82 100644
--- a/library/Smarty/libs/sysplugins/smarty_cacheresource_keyvaluestore.php
+++ b/library/Smarty/libs/sysplugins/smarty_cacheresource_keyvaluestore.php
@@ -2,44 +2,43 @@
/**
* Smarty Internal Plugin
*
- * @package Smarty
+ * @package Smarty
* @subpackage Cacher
*/
/**
* Smarty Cache Handler Base for Key/Value Storage Implementations
- *
* This class implements the functionality required to use simple key/value stores
* for hierarchical cache groups. key/value stores like memcache or APC do not support
* wildcards in keys, therefore a cache group cannot be cleared like "a|*" - which
* is no problem to filesystem and RDBMS implementations.
- *
* This implementation is based on the concept of invalidation. While one specific cache
* can be identified and cleared, any range of caches cannot be identified. For this reason
* each level of the cache group hierarchy can have its own value in the store. These values
* are nothing but microtimes, telling us when a particular cache group was cleared for the
* last time. These keys are evaluated for every cache read to determine if the cache has
* been invalidated since it was created and should hence be treated as inexistent.
- *
* Although deep hierarchies are possible, they are not recommended. Try to keep your
* cache groups as shallow as possible. Anything up 3-5 parents should be ok. So
* »a|b|c« is a good depth where »a|b|c|d|e|f|g|h|i|j|k« isn't. Try to join correlating
* cache groups: if your cache groups look somewhat like »a|b|$page|$items|$whatever«
* consider using »a|b|c|$page-$items-$whatever« instead.
*
- * @package Smarty
+ * @package Smarty
* @subpackage Cacher
- * @author Rodney Rehm
+ * @author Rodney Rehm
*/
-abstract class Smarty_CacheResource_KeyValueStore extends Smarty_CacheResource {
-
+abstract class Smarty_CacheResource_KeyValueStore extends Smarty_CacheResource
+{
/**
* cache for contents
+ *
* @var array
*/
protected $contents = array();
/**
* cache for timestamps
+ *
* @var array
*/
protected $timestamps = array();
@@ -47,16 +46,17 @@ abstract class Smarty_CacheResource_KeyValueStore extends Smarty_CacheResource {
/**
* populate Cached Object with meta data from Resource
*
- * @param Smarty_Template_Cached $cached cached object
- * @param Smarty_Internal_Template $_template template object
+ * @param Smarty_Template_Cached $cached cached object
+ * @param Smarty_Internal_Template $_template template object
+ *
* @return void
*/
public function populate(Smarty_Template_Cached $cached, Smarty_Internal_Template $_template)
{
$cached->filepath = $_template->source->uid
- . '#' . $this->sanitize($cached->source->name)
- . '#' . $this->sanitize($cached->cache_id)
- . '#' . $this->sanitize($cached->compile_id);
+ . '#' . $this->sanitize($cached->source->resource)
+ . '#' . $this->sanitize($cached->cache_id)
+ . '#' . $this->sanitize($cached->compile_id);
$this->populateTimestamp($cached);
}
@@ -64,7 +64,8 @@ abstract class Smarty_CacheResource_KeyValueStore extends Smarty_CacheResource {
/**
* populate Cached Object with timestamp and exists from Resource
*
- * @param Smarty_Template_Cached $cached cached object
+ * @param Smarty_Template_Cached $cached cached object
+ *
* @return void
*/
public function populateTimestamp(Smarty_Template_Cached $cached)
@@ -80,11 +81,12 @@ abstract class Smarty_CacheResource_KeyValueStore extends Smarty_CacheResource {
/**
* Read the cached template and process the header
*
- * @param Smarty_Internal_Template $_template template object
- * @param Smarty_Template_Cached $cached cached object
- * @return booelan true or false if the cached content does not exist
+ * @param Smarty_Internal_Template $_template template object
+ * @param Smarty_Template_Cached $cached cached object
+ *
+ * @return boolean true or false if the cached content does not exist
*/
- public function process(Smarty_Internal_Template $_template, Smarty_Template_Cached $cached=null)
+ public function process(Smarty_Internal_Template $_template, Smarty_Template_Cached $cached = null)
{
if (!$cached) {
$cached = $_template->cached;
@@ -97,55 +99,63 @@ abstract class Smarty_CacheResource_KeyValueStore extends Smarty_CacheResource {
}
}
if (isset($content)) {
+ /** @var Smarty_Internal_Template $_smarty_tpl
+ * used in evaluated code
+ */
$_smarty_tpl = $_template;
eval("?>" . $content);
+
return true;
}
+
return false;
}
/**
* Write the rendered template output to cache
*
- * @param Smarty_Internal_Template $_template template object
- * @param string $content content to cache
- * @return boolean success
+ * @param Smarty_Internal_Template $_template template object
+ * @param string $content content to cache
+ *
+ * @return boolean success
*/
public function writeCachedContent(Smarty_Internal_Template $_template, $content)
{
$this->addMetaTimestamp($content);
+
return $this->write(array($_template->cached->filepath => $content), $_template->properties['cache_lifetime']);
}
/**
* Empty cache
- *
* {@internal the $exp_time argument is ignored altogether }}
*
- * @param Smarty $smarty Smarty object
- * @param integer $exp_time expiration time [being ignored]
+ * @param Smarty $smarty Smarty object
+ * @param integer $exp_time expiration time [being ignored]
+ *
* @return integer number of cache files deleted [always -1]
* @uses purge() to clear the whole store
* @uses invalidate() to mark everything outdated if purge() is inapplicable
*/
- public function clearAll(Smarty $smarty, $exp_time=null)
+ public function clearAll(Smarty $smarty, $exp_time = null)
{
if (!$this->purge()) {
$this->invalidate(null);
}
- return -1;
+
+ return - 1;
}
/**
* Empty cache for a specific template
- *
* {@internal the $exp_time argument is ignored altogether}}
*
- * @param Smarty $smarty Smarty object
- * @param string $resource_name template name
- * @param string $cache_id cache id
- * @param string $compile_id compile id
- * @param integer $exp_time expiration time [being ignored]
+ * @param Smarty $smarty Smarty object
+ * @param string $resource_name template name
+ * @param string $cache_id cache id
+ * @param string $compile_id compile id
+ * @param integer $exp_time expiration time [being ignored]
+ *
* @return integer number of cache files deleted [always -1]
* @uses buildCachedFilepath() to generate the CacheID
* @uses invalidate() to mark CacheIDs parent chain as outdated
@@ -157,15 +167,18 @@ abstract class Smarty_CacheResource_KeyValueStore extends Smarty_CacheResource {
$cid = $uid . '#' . $this->sanitize($resource_name) . '#' . $this->sanitize($cache_id) . '#' . $this->sanitize($compile_id);
$this->delete(array($cid));
$this->invalidate($cid, $resource_name, $cache_id, $compile_id, $uid);
- return -1;
+
+ return - 1;
}
+
/**
* Get template's unique ID
*
- * @param Smarty $smarty Smarty object
- * @param string $resource_name template name
- * @param string $cache_id cache id
- * @param string $compile_id compile id
+ * @param Smarty $smarty Smarty object
+ * @param string $resource_name template name
+ * @param string $cache_id cache id
+ * @param string $compile_id compile id
+ *
* @return string filepath of cache file
*/
protected function getTemplateUid(Smarty $smarty, $resource_name, $cache_id, $compile_id)
@@ -176,7 +189,7 @@ abstract class Smarty_CacheResource_KeyValueStore extends Smarty_CacheResource {
if ($tpl->source->exists) {
$uid = $tpl->source->uid;
}
-
+
// remove from template cache
if ($smarty->allow_ambiguous_resources) {
$_templateId = $tpl->source->unique_resource . $tpl->cache_id . $tpl->compile_id;
@@ -188,13 +201,15 @@ abstract class Smarty_CacheResource_KeyValueStore extends Smarty_CacheResource {
}
unset($smarty->template_objects[$_templateId]);
}
+
return $uid;
}
/**
* Sanitize CacheID components
*
- * @param string $string CacheID component to sanitize
+ * @param string $string CacheID component to sanitize
+ *
* @return string sanitized CacheID component
*/
protected function sanitize($string)
@@ -204,19 +219,21 @@ abstract class Smarty_CacheResource_KeyValueStore extends Smarty_CacheResource {
if (!$string) {
return null;
}
+
return preg_replace('#[^\w\|]+#S', '_', $string);
}
/**
* Fetch and prepare a cache object.
*
- * @param string $cid CacheID to fetch
- * @param string $resource_name template name
- * @param string $cache_id cache id
- * @param string $compile_id compile id
- * @param string $content cached content
- * @param integer &$timestamp cached timestamp (epoch)
- * @param string $resource_uid resource's uid
+ * @param string $cid CacheID to fetch
+ * @param string $resource_name template name
+ * @param string $cache_id cache id
+ * @param string $compile_id compile id
+ * @param string $content cached content
+ * @param integer &$timestamp cached timestamp (epoch)
+ * @param string $resource_uid resource's uid
+ *
* @return boolean success
*/
protected function fetch($cid, $resource_name = null, $cache_id = null, $compile_id = null, &$content = null, &$timestamp = null, $resource_uid = null)
@@ -238,7 +255,6 @@ abstract class Smarty_CacheResource_KeyValueStore extends Smarty_CacheResource {
/**
* Add current microtime to the beginning of $cache_content
- *
* {@internal the header uses 8 Bytes, the first 4 Bytes are the seconds, the second 4 Bytes are the microseconds}}
*
* @param string &$content the content to be cached
@@ -253,25 +269,28 @@ abstract class Smarty_CacheResource_KeyValueStore extends Smarty_CacheResource {
/**
* Extract the timestamp the $content was cached
*
- * @param string &$content the cached content
- * @return float the microtime the content was cached
+ * @param string &$content the cached content
+ *
+ * @return float the microtime the content was cached
*/
protected function getMetaTimestamp(&$content)
{
$s = unpack("N", substr($content, 0, 4));
$m = unpack("N", substr($content, 4, 4));
$content = substr($content, 8);
+
return $s[1] + ($m[1] / 100000000);
}
/**
* Invalidate CacheID
*
- * @param string $cid CacheID
- * @param string $resource_name template name
- * @param string $cache_id cache id
- * @param string $compile_id compile id
- * @param string $resource_uid source's uid
+ * @param string $cid CacheID
+ * @param string $resource_name template name
+ * @param string $cache_id cache id
+ * @param string $compile_id compile id
+ * @param string $resource_uid source's uid
+ *
* @return void
*/
protected function invalidate($cid = null, $resource_name = null, $cache_id = null, $compile_id = null, $resource_uid = null)
@@ -281,22 +300,24 @@ abstract class Smarty_CacheResource_KeyValueStore extends Smarty_CacheResource {
// invalidate everything
if (!$resource_name && !$cache_id && !$compile_id) {
$key = 'IVK#ALL';
- }
- // invalidate all caches by template
- else if ($resource_name && !$cache_id && !$compile_id) {
- $key = 'IVK#TEMPLATE#' . $resource_uid . '#' . $this->sanitize($resource_name);
- }
- // invalidate all caches by cache group
- else if (!$resource_name && $cache_id && !$compile_id) {
- $key = 'IVK#CACHE#' . $this->sanitize($cache_id);
- }
- // invalidate all caches by compile id
- else if (!$resource_name && !$cache_id && $compile_id) {
- $key = 'IVK#COMPILE#' . $this->sanitize($compile_id);
- }
- // invalidate by combination
+ } // invalidate all caches by template
else {
- $key = 'IVK#CID#' . $cid;
+ if ($resource_name && !$cache_id && !$compile_id) {
+ $key = 'IVK#TEMPLATE#' . $resource_uid . '#' . $this->sanitize($resource_name);
+ } // invalidate all caches by cache group
+ else {
+ if (!$resource_name && $cache_id && !$compile_id) {
+ $key = 'IVK#CACHE#' . $this->sanitize($cache_id);
+ } // invalidate all caches by compile id
+ else {
+ if (!$resource_name && !$cache_id && $compile_id) {
+ $key = 'IVK#COMPILE#' . $this->sanitize($compile_id);
+ } // invalidate by combination
+ else {
+ $key = 'IVK#CID#' . $cid;
+ }
+ }
+ }
}
$this->write(array($key => $now));
}
@@ -304,12 +325,13 @@ abstract class Smarty_CacheResource_KeyValueStore extends Smarty_CacheResource {
/**
* Determine the latest timestamp known to the invalidation chain
*
- * @param string $cid CacheID to determine latest invalidation timestamp of
- * @param string $resource_name template name
- * @param string $cache_id cache id
- * @param string $compile_id compile id
- * @param string $resource_uid source's filepath
- * @return float the microtime the CacheID was invalidated
+ * @param string $cid CacheID to determine latest invalidation timestamp of
+ * @param string $resource_name template name
+ * @param string $cache_id cache id
+ * @param string $compile_id compile id
+ * @param string $resource_uid source's filepath
+ *
+ * @return float the microtime the CacheID was invalidated
*/
protected function getLatestInvalidationTimestamp($cid, $resource_name = null, $cache_id = null, $compile_id = null, $resource_uid = null)
{
@@ -321,27 +343,28 @@ abstract class Smarty_CacheResource_KeyValueStore extends Smarty_CacheResource {
if (!($_cid = $this->listInvalidationKeys($cid, $resource_name, $cache_id, $compile_id, $resource_uid))) {
return 0;
}
-
+
// there are no InValidationKeys
if (!($values = $this->read($_cid))) {
return 0;
}
// make sure we're dealing with floats
$values = array_map('floatval', $values);
+
return max($values);
}
/**
* Translate a CacheID into the list of applicable InvalidationKeys.
- *
* Splits "some|chain|into|an|array" into array( '#clearAll#', 'some', 'some|chain', 'some|chain|into', ... )
*
- * @param string $cid CacheID to translate
- * @param string $resource_name template name
- * @param string $cache_id cache id
- * @param string $compile_id compile id
- * @param string $resource_uid source's filepath
- * @return array list of InvalidationKeys
+ * @param string $cid CacheID to translate
+ * @param string $resource_name template name
+ * @param string $cache_id cache id
+ * @param string $compile_id compile id
+ * @param string $resource_uid source's filepath
+ *
+ * @return array list of InvalidationKeys
* @uses $invalidationKeyPrefix to prepend to each InvalidationKey
*/
protected function listInvalidationKeys($cid, $resource_name = null, $cache_id = null, $compile_id = null, $resource_uid = null)
@@ -378,30 +401,35 @@ abstract class Smarty_CacheResource_KeyValueStore extends Smarty_CacheResource {
$t[] = 'IVK#CACHE#' . $part;
$t[] = 'IVK#CID' . $_name . $part . $_compile;
// skip past delimiter position
- $i++;
+ $i ++;
}
+
return $t;
}
/**
* Check is cache is locked for this template
*
- * @param Smarty $smarty Smarty object
- * @param Smarty_Template_Cached $cached cached object
- * @return booelan true or false if cache is locked
+ * @param Smarty $smarty Smarty object
+ * @param Smarty_Template_Cached $cached cached object
+ *
+ * @return boolean true or false if cache is locked
*/
public function hasLock(Smarty $smarty, Smarty_Template_Cached $cached)
{
$key = 'LOCK#' . $cached->filepath;
$data = $this->read(array($key));
+
return $data && time() - $data[$key] < $smarty->locking_timeout;
}
/**
* Lock cache for this template
*
- * @param Smarty $smarty Smarty object
+ * @param Smarty $smarty Smarty object
* @param Smarty_Template_Cached $cached cached object
+ *
+ * @return bool|void
*/
public function acquireLock(Smarty $smarty, Smarty_Template_Cached $cached)
{
@@ -413,8 +441,10 @@ abstract class Smarty_CacheResource_KeyValueStore extends Smarty_CacheResource {
/**
* Unlock cache for this template
*
- * @param Smarty $smarty Smarty object
+ * @param Smarty $smarty Smarty object
* @param Smarty_Template_Cached $cached cached object
+ *
+ * @return bool|void
*/
public function releaseLock(Smarty $smarty, Smarty_Template_Cached $cached)
{
@@ -426,27 +456,30 @@ abstract class Smarty_CacheResource_KeyValueStore extends Smarty_CacheResource {
/**
* Read values for a set of keys from cache
*
- * @param array $keys list of keys to fetch
+ * @param array $keys list of keys to fetch
+ *
* @return array list of values with the given keys used as indexes
*/
- protected abstract function read(array $keys);
+ abstract protected function read(array $keys);
/**
* Save values for a set of keys to cache
*
- * @param array $keys list of values to save
- * @param int $expire expiration time
+ * @param array $keys list of values to save
+ * @param int $expire expiration time
+ *
* @return boolean true on success, false on failure
*/
- protected abstract function write(array $keys, $expire=null);
+ abstract protected function write(array $keys, $expire = null);
/**
* Remove values from cache
*
- * @param array $keys list of keys to delete
+ * @param array $keys list of keys to delete
+ *
* @return boolean true on success, false on failure
*/
- protected abstract function delete(array $keys);
+ abstract protected function delete(array $keys);
/**
* Remove *all* values from cache
@@ -457,7 +490,4 @@ abstract class Smarty_CacheResource_KeyValueStore extends Smarty_CacheResource {
{
return false;
}
-
}
-
-?> \ No newline at end of file
diff --git a/library/Smarty/libs/sysplugins/smarty_config_source.php b/library/Smarty/libs/sysplugins/smarty_config_source.php
index 043ff13e9..fd37e61f7 100644
--- a/library/Smarty/libs/sysplugins/smarty_config_source.php
+++ b/library/Smarty/libs/sysplugins/smarty_config_source.php
@@ -2,34 +2,32 @@
/**
* Smarty Internal Plugin
*
- * @package Smarty
+ * @package Smarty
* @subpackage TemplateResources
*/
/**
* Smarty Resource Data Object
- *
* Meta Data Container for Config Files
*
- * @package Smarty
+ * @package Smarty
* @subpackage TemplateResources
- * @author Rodney Rehm
- *
+ * @author Rodney Rehm
* @property string $content
* @property int $timestamp
* @property bool $exists
*/
-class Smarty_Config_Source extends Smarty_Template_Source {
-
+class Smarty_Config_Source extends Smarty_Template_Source
+{
/**
* create Config Object container
*
- * @param Smarty_Resource $handler Resource Handler this source object communicates with
- * @param Smarty $smarty Smarty instance this source object belongs to
- * @param string $resource full config_resource
- * @param string $type type of resource
- * @param string $name resource name
- * @param string $unique_resource unqiue resource name
+ * @param Smarty_Resource $handler Resource Handler this source object communicates with
+ * @param Smarty $smarty Smarty instance this source object belongs to
+ * @param string $resource full config_resource
+ * @param string $type type of resource
+ * @param string $name resource name
+ * @param string $unique_resource unqiue resource name
*/
public function __construct(Smarty_Resource $handler, Smarty $smarty, $resource, $type, $name, $unique_resource)
{
@@ -50,8 +48,9 @@ class Smarty_Config_Source extends Smarty_Template_Source {
/**
* <<magic>> Generic setter.
*
- * @param string $property_name valid: content, timestamp, exists
- * @param mixed $value newly assigned value (not check for correct type)
+ * @param string $property_name valid: content, timestamp, exists
+ * @param mixed $value newly assigned value (not check for correct type)
+ *
* @throws SmartyException when the given property name is not valid
*/
public function __set($property_name, $value)
@@ -71,7 +70,9 @@ class Smarty_Config_Source extends Smarty_Template_Source {
/**
* <<magic>> Generic getter.
*
- * @param string $property_name valid: content, timestamp, exists
+ * @param string $property_name valid: content, timestamp, exists
+ *
+ * @return mixed|void
* @throws SmartyException when the given property name is not valid
*/
public function __get($property_name)
@@ -80,6 +81,7 @@ class Smarty_Config_Source extends Smarty_Template_Source {
case 'timestamp':
case 'exists':
$this->handler->populateTimestamp($this);
+
return $this->$property_name;
case 'content':
@@ -89,7 +91,4 @@ class Smarty_Config_Source extends Smarty_Template_Source {
throw new SmartyException("config property '$property_name' does not exist.");
}
}
-
}
-
-?> \ No newline at end of file
diff --git a/library/Smarty/libs/sysplugins/smarty_internal_cacheresource_file.php b/library/Smarty/libs/sysplugins/smarty_internal_cacheresource_file.php
index e5d20bd6e..b8e99cc69 100644
--- a/library/Smarty/libs/sysplugins/smarty_internal_cacheresource_file.php
+++ b/library/Smarty/libs/sysplugins/smarty_internal_cacheresource_file.php
@@ -2,27 +2,27 @@
/**
* Smarty Internal Plugin CacheResource File
*
- * @package Smarty
+ * @package Smarty
* @subpackage Cacher
- * @author Uwe Tews
- * @author Rodney Rehm
+ * @author Uwe Tews
+ * @author Rodney Rehm
*/
/**
* This class does contain all necessary methods for the HTML cache on file system
- *
* Implements the file system as resource for the HTML cache Version ussing nocache inserts.
*
- * @package Smarty
+ * @package Smarty
* @subpackage Cacher
*/
-class Smarty_Internal_CacheResource_File extends Smarty_CacheResource {
-
+class Smarty_Internal_CacheResource_File extends Smarty_CacheResource
+{
/**
* populate Cached Object with meta data from Resource
*
* @param Smarty_Template_Cached $cached cached object
* @param Smarty_Internal_Template $_template template object
+ *
* @return void
*/
public function populate(Smarty_Template_Cached $cached, Smarty_Internal_Template $_template)
@@ -58,7 +58,7 @@ class Smarty_Internal_CacheResource_File extends Smarty_CacheResource {
} else {
$_lock_dir = $_cache_dir;
}
- $cached->lock_id = $_lock_dir.sha1($_cache_id.$_compile_id.$_template->source->uid).'.lock';
+ $cached->lock_id = $_lock_dir . sha1($_cache_id . $_compile_id . $_template->source->uid) . '.lock';
}
$cached->filepath = $_cache_dir . $_cache_id . $_compile_id . $_filepath . '.' . basename($_source_file_path) . '.php';
$cached->timestamp = @filemtime($cached->filepath);
@@ -69,6 +69,7 @@ class Smarty_Internal_CacheResource_File extends Smarty_CacheResource {
* populate Cached Object with timestamp and exists from Resource
*
* @param Smarty_Template_Cached $cached cached object
+ *
* @return void
*/
public function populateTimestamp(Smarty_Template_Cached $cached)
@@ -81,12 +82,17 @@ class Smarty_Internal_CacheResource_File extends Smarty_CacheResource {
* Read the cached template and process its header
*
* @param Smarty_Internal_Template $_template template object
- * @param Smarty_Template_Cached $cached cached object
- * @return booelan true or false if the cached content does not exist
+ * @param Smarty_Template_Cached $cached cached object
+ *
+ * @return booleantrue or false if the cached content does not exist
*/
- public function process(Smarty_Internal_Template $_template, Smarty_Template_Cached $cached=null)
+ public function process(Smarty_Internal_Template $_template, Smarty_Template_Cached $cached = null)
{
+ /** @var Smarty_Internal_Template $_smarty_tpl
+ * used in included file
+ */
$_smarty_tpl = $_template;
+
return @include $_template->cached->filepath;
}
@@ -95,6 +101,7 @@ class Smarty_Internal_CacheResource_File extends Smarty_CacheResource {
*
* @param Smarty_Internal_Template $_template template object
* @param string $content content to cache
+ *
* @return boolean success
*/
public function writeCachedContent(Smarty_Internal_Template $_template, $content)
@@ -106,14 +113,16 @@ class Smarty_Internal_CacheResource_File extends Smarty_CacheResource {
return true;
}
}
+
return false;
}
/**
* Empty cache
*
- * @param Smarty_Internal_Template $_template template object
- * @param integer $exp_time expiration time (number of seconds, not timestamp)
+ * @param Smarty $smarty
+ * @param integer $exp_time expiration time (number of seconds, not timestamp)
+ *
* @return integer number of cache files deleted
*/
public function clearAll(Smarty $smarty, $exp_time = null)
@@ -124,20 +133,24 @@ class Smarty_Internal_CacheResource_File extends Smarty_CacheResource {
/**
* Empty cache for a specific template
*
- * @param Smarty $_template template object
+ * @param Smarty $smarty
* @param string $resource_name template name
* @param string $cache_id cache id
* @param string $compile_id compile id
* @param integer $exp_time expiration time (number of seconds, not timestamp)
+ *
* @return integer number of cache files deleted
- */
+ */
public function clear(Smarty $smarty, $resource_name, $cache_id, $compile_id, $exp_time)
{
$_cache_id = isset($cache_id) ? preg_replace('![^\w\|]+!', '_', $cache_id) : null;
$_compile_id = isset($compile_id) ? preg_replace('![^\w\|]+!', '_', $compile_id) : null;
$_dir_sep = $smarty->use_sub_dirs ? '/' : '^';
$_compile_id_offset = $smarty->use_sub_dirs ? 3 : 0;
- $_dir = $smarty->getCacheDir();
+ if (($_dir = realpath($smarty->getCacheDir())) === false) {
+ return 0;
+ }
+ $_dir .= '/';
$_dir_length = strlen($_dir);
if (isset($_cache_id)) {
$_cache_id_parts = explode('|', $_cache_id);
@@ -178,7 +191,9 @@ class Smarty_Internal_CacheResource_File extends Smarty_CacheResource {
$_cacheDirs = new RecursiveDirectoryIterator($_dir);
$_cache = new RecursiveIteratorIterator($_cacheDirs, RecursiveIteratorIterator::CHILD_FIRST);
foreach ($_cache as $_file) {
- if (substr($_file->getBasename(),0,1) == '.' || strpos($_file, '.svn') !== false) continue;
+ if (substr(basename($_file->getPathname()), 0, 1) == '.' || strpos($_file, '.svn') !== false) {
+ continue;
+ }
// directory ?
if ($_file->isDir()) {
if (!$_cache->isDot()) {
@@ -186,16 +201,16 @@ class Smarty_Internal_CacheResource_File extends Smarty_CacheResource {
@rmdir($_file->getPathname());
}
} else {
- $_parts = explode($_dir_sep, str_replace('\\', '/', substr((string)$_file, $_dir_length)));
+ $_parts = explode($_dir_sep, str_replace('\\', '/', substr((string) $_file, $_dir_length)));
$_parts_count = count($_parts);
// check name
if (isset($resource_name)) {
- if ($_parts[$_parts_count-1] != $_resourcename_parts) {
+ if ($_parts[$_parts_count - 1] != $_resourcename_parts) {
continue;
}
}
// check compile id
- if (isset($_compile_id) && (!isset($_parts[$_parts_count-2 - $_compile_id_offset]) || $_parts[$_parts_count-2 - $_compile_id_offset] != $_compile_id)) {
+ if (isset($_compile_id) && (!isset($_parts[$_parts_count - 2 - $_compile_id_offset]) || $_parts[$_parts_count - 2 - $_compile_id_offset] != $_compile_id)) {
continue;
}
// check cache id
@@ -205,27 +220,40 @@ class Smarty_Internal_CacheResource_File extends Smarty_CacheResource {
if ($_parts_count < $_cache_id_parts_count) {
continue;
}
- for ($i = 0; $i < $_cache_id_parts_count; $i++) {
- if ($_parts[$i] != $_cache_id_parts[$i]) continue 2;
+ for ($i = 0; $i < $_cache_id_parts_count; $i ++) {
+ if ($_parts[$i] != $_cache_id_parts[$i]) {
+ continue 2;
+ }
}
}
// expired ?
- if (isset($exp_time) && $_time - @filemtime($_file) < $exp_time) {
- continue;
+ if (isset($exp_time)) {
+ if ($exp_time < 0) {
+ preg_match('#\'cache_lifetime\' =>\s*(\d*)#', file_get_contents($_file), $match);
+ if ($_time < (@filemtime($_file) + $match[1])) {
+ continue;
+ }
+ } else {
+ if ($_time - @filemtime($_file) < $exp_time) {
+ continue;
+ }
+ }
}
$_count += @unlink((string) $_file) ? 1 : 0;
}
}
}
+
return $_count;
}
/**
* Check is cache is locked for this template
*
- * @param Smarty $smarty Smarty object
+ * @param Smarty $smarty Smarty object
* @param Smarty_Template_Cached $cached cached object
- * @return booelan true or false if cache is locked
+ *
+ * @return boolean true or false if cache is locked
*/
public function hasLock(Smarty $smarty, Smarty_Template_Cached $cached)
{
@@ -235,14 +263,17 @@ class Smarty_Internal_CacheResource_File extends Smarty_CacheResource {
clearstatcache();
}
$t = @filemtime($cached->lock_id);
+
return $t && (time() - $t < $smarty->locking_timeout);
}
/**
* Lock cache for this template
*
- * @param Smarty $smarty Smarty object
+ * @param Smarty $smarty Smarty object
* @param Smarty_Template_Cached $cached cached object
+ *
+ * @return bool|void
*/
public function acquireLock(Smarty $smarty, Smarty_Template_Cached $cached)
{
@@ -253,8 +284,10 @@ class Smarty_Internal_CacheResource_File extends Smarty_CacheResource {
/**
* Unlock cache for this template
*
- * @param Smarty $smarty Smarty object
+ * @param Smarty $smarty Smarty object
* @param Smarty_Template_Cached $cached cached object
+ *
+ * @return bool|void
*/
public function releaseLock(Smarty $smarty, Smarty_Template_Cached $cached)
{
@@ -262,5 +295,3 @@ class Smarty_Internal_CacheResource_File extends Smarty_CacheResource {
@unlink($cached->lock_id);
}
}
-
-?> \ No newline at end of file
diff --git a/library/Smarty/libs/sysplugins/smarty_internal_compile_append.php b/library/Smarty/libs/sysplugins/smarty_internal_compile_append.php
index f6036e883..cbf65685b 100644
--- a/library/Smarty/libs/sysplugins/smarty_internal_compile_append.php
+++ b/library/Smarty/libs/sysplugins/smarty_internal_compile_append.php
@@ -1,28 +1,28 @@
<?php
/**
* Smarty Internal Plugin Compile Append
- *
* Compiles the {append} tag
*
- * @package Smarty
+ * @package Smarty
* @subpackage Compiler
- * @author Uwe Tews
+ * @author Uwe Tews
*/
/**
* Smarty Internal Plugin Compile Append Class
*
- * @package Smarty
+ * @package Smarty
* @subpackage Compiler
*/
-class Smarty_Internal_Compile_Append extends Smarty_Internal_Compile_Assign {
-
+class Smarty_Internal_Compile_Append extends Smarty_Internal_Compile_Assign
+{
/**
* Compiles code for the {append} tag
*
- * @param array $args array with attributes from parser
- * @param object $compiler compiler object
- * @param array $parameter array with compilation parameter
+ * @param array $args array with attributes from parser
+ * @param object $compiler compiler object
+ * @param array $parameter array with compilation parameter
+ *
* @return string compiled code
*/
public function compile($args, $compiler, $parameter)
@@ -47,7 +47,4 @@ class Smarty_Internal_Compile_Append extends Smarty_Internal_Compile_Assign {
// call compile assign
return parent::compile($_new_attr, $compiler, $_params);
}
-
}
-
-?> \ No newline at end of file
diff --git a/library/Smarty/libs/sysplugins/smarty_internal_compile_assign.php b/library/Smarty/libs/sysplugins/smarty_internal_compile_assign.php
index 0ac3f68ce..caa34861f 100644
--- a/library/Smarty/libs/sysplugins/smarty_internal_compile_assign.php
+++ b/library/Smarty/libs/sysplugins/smarty_internal_compile_assign.php
@@ -1,28 +1,28 @@
<?php
/**
* Smarty Internal Plugin Compile Assign
- *
* Compiles the {assign} tag
*
- * @package Smarty
+ * @package Smarty
* @subpackage Compiler
- * @author Uwe Tews
+ * @author Uwe Tews
*/
/**
* Smarty Internal Plugin Compile Assign Class
*
- * @package Smarty
+ * @package Smarty
* @subpackage Compiler
*/
-class Smarty_Internal_Compile_Assign extends Smarty_Internal_CompileBase {
-
+class Smarty_Internal_Compile_Assign extends Smarty_Internal_CompileBase
+{
/**
* Compiles code for the {assign} tag
*
- * @param array $args array with attributes from parser
- * @param object $compiler compiler object
- * @param array $parameter array with compilation parameter
+ * @param array $args array with attributes from parser
+ * @param object $compiler compiler object
+ * @param array $parameter array with compilation parameter
+ *
* @return string compiled code
*/
public function compile($args, $compiler, $parameter)
@@ -39,7 +39,11 @@ class Smarty_Internal_Compile_Assign extends Smarty_Internal_CompileBase {
if ($compiler->tag_nocache || $compiler->nocache) {
$_nocache = 'true';
// create nocache var to make it know for further compiling
- $compiler->template->tpl_vars[trim($_attr['var'], "'")] = new Smarty_variable(null, true);
+ if (isset($compiler->template->tpl_vars[trim($_attr['var'], "'")])) {
+ $compiler->template->tpl_vars[trim($_attr['var'], "'")]->nocache = true;
+ } else {
+ $compiler->template->tpl_vars[trim($_attr['var'], "'")] = new Smarty_variable(null, true);
+ }
}
// scope setup
if (isset($_attr['scope'])) {
@@ -72,13 +76,11 @@ class Smarty_Internal_Compile_Assign extends Smarty_Internal_CompileBase {
} elseif ($_scope == Smarty::SCOPE_ROOT || $_scope == Smarty::SCOPE_GLOBAL) {
$output .= "\n\$_ptr = \$_smarty_tpl->parent; while (\$_ptr != null) {\$_ptr->tpl_vars[$_attr[var]] = clone \$_smarty_tpl->tpl_vars[$_attr[var]]; \$_ptr = \$_ptr->parent; }";
}
- if ( $_scope == Smarty::SCOPE_GLOBAL) {
+ if ($_scope == Smarty::SCOPE_GLOBAL) {
$output .= "\nSmarty::\$global_tpl_vars[$_attr[var]] = clone \$_smarty_tpl->tpl_vars[$_attr[var]];";
}
$output .= '?>';
+
return $output;
}
-
}
-
-?> \ No newline at end of file
diff --git a/library/Smarty/libs/sysplugins/smarty_internal_compile_block.php b/library/Smarty/libs/sysplugins/smarty_internal_compile_block.php
index 03abf493e..8c2fb975f 100644
--- a/library/Smarty/libs/sysplugins/smarty_internal_compile_block.php
+++ b/library/Smarty/libs/sysplugins/smarty_internal_compile_block.php
@@ -2,22 +2,23 @@
/**
* Smarty Internal Plugin Compile Block
- *
* Compiles the {block}{/block} tags
*
- * @package Smarty
+ * @package Smarty
* @subpackage Compiler
- * @author Uwe Tews
+ * @author Uwe Tews
*/
/**
* Smarty Internal Plugin Compile Block Class
*
- * @package Smarty
+ * @package Smarty
* @subpackage Compiler
*/
-class Smarty_Internal_Compile_Block extends Smarty_Internal_CompileBase {
+class Smarty_Internal_Compile_Block extends Smarty_Internal_CompileBase
+{
+ const parent = '____SMARTY_BLOCK_PARENT____';
/**
* Attribute definition: Overwrites base class.
*
@@ -32,7 +33,15 @@ class Smarty_Internal_Compile_Block extends Smarty_Internal_CompileBase {
* @var array
* @see Smarty_Internal_CompileBase
*/
- public $shorttag_order = array('name', 'hide');
+ public $shorttag_order = array('name');
+
+ /**
+ * Attribute definition: Overwrites base class.
+ *
+ * @var array
+ * @see Smarty_Internal_CompileBase
+ */
+ public $option_flags = array('hide', 'append', 'prepend', 'nocache');
/**
* Attribute definition: Overwrites base class.
@@ -40,161 +49,140 @@ class Smarty_Internal_Compile_Block extends Smarty_Internal_CompileBase {
* @var array
* @see Smarty_Internal_CompileBase
*/
- public $optional_attributes = array('hide');
+ public $optional_attributes = array('internal_file', 'internal_uid', 'internal_line');
+ /**
+ * nested child block names
+ *
+ * @var array
+ */
+ public static $nested_block_names = array();
+
+ /**
+ * child block source buffer
+ *
+ * @var array
+ */
+ public static $block_data = array();
/**
* Compiles code for the {block} tag
*
* @param array $args array with attributes from parser
* @param object $compiler compiler object
+ *
* @return boolean true
*/
- public function compile($args, $compiler) {
+ public function compile($args, $compiler)
+ {
// check and get attributes
$_attr = $this->getAttributes($compiler, $args);
- $save = array($_attr, $compiler->parser->current_buffer, $compiler->nocache, $compiler->smarty->merge_compiled_includes, $compiler->merged_templates, $compiler->smarty->merged_templates_func, $compiler->template->properties, $compiler->template->has_nocache_code);
- $this->openTag($compiler, 'block', $save);
+ $_name = trim($_attr['name'], "\"'");
+
+ // existing child must override parent settings
+ if (isset($compiler->template->block_data[$_name]) && $compiler->template->block_data[$_name]['mode'] == 'replace') {
+ $_attr['append'] = false;
+ $_attr['prepend'] = false;
+ }
+
+ // check if we process an inheritance child template
+ if ($compiler->inheritance_child) {
+ array_unshift(self::$nested_block_names, $_name);
+ // build {block} for child block
+ self::$block_data[$_name]['source'] =
+ "{$compiler->smarty->left_delimiter}private_child_block name={$_attr['name']} file='{$compiler->template->source->filepath}' type='{$compiler->template->source->type}' resource='{$compiler->template->template_resource}'" .
+ " uid='{$compiler->template->source->uid}' line={$compiler->lex->line}";
+ if ($_attr['nocache']) {
+ self::$block_data[$_name]['source'] .= ' nocache';
+ }
+ self::$block_data[$_name]['source'] .= $compiler->smarty->right_delimiter;
+
+ $save = array($_attr, $compiler->inheritance);
+ $this->openTag($compiler, 'block', $save);
+ // set flag for {block} tag
+ $compiler->inheritance = true;
+ $compiler->lex->yypushstate(Smarty_Internal_Templatelexer::CHILDBLOCK);
+ $compiler->has_code = false;
+ return;
+ }
+ // must merge includes
if ($_attr['nocache'] == true) {
- $compiler->nocache = true;
+ $compiler->tag_nocache = true;
}
- // set flag for {block} tag
+ $save = array($_attr, $compiler->inheritance, $compiler->parser->current_buffer, $compiler->nocache);
+ $this->openTag($compiler, 'block', $save);
$compiler->inheritance = true;
- // must merge includes
- $compiler->smarty->merge_compiled_includes = true;
+ $compiler->nocache = $compiler->nocache | $compiler->tag_nocache;
$compiler->parser->current_buffer = new _smarty_template_buffer($compiler->parser);
$compiler->has_code = false;
+
return true;
}
/**
- * Save or replace child block source by block name during parsing
+ * Compile saved child block source
*
- * @param string $block_content block source content
- * @param string $block_tag opening block tag
- * @param object $template template object
- * @param string $filepath filepath of template source
+ * @param object $compiler compiler object
+ * @param string $_name optional name of child block
+ *
+ * @return string compiled code of child block
*/
- public static function saveBlockData($block_content, $block_tag, $template, $filepath) {
- $_rdl = preg_quote($template->smarty->right_delimiter);
- $_ldl = preg_quote($template->smarty->left_delimiter);
- if ($template->smarty->auto_literal) {
- $al = '\s*';
- } else {
- $al = '';
- }
- if (0 == preg_match("!({$_ldl}{$al}block\s+)(name=)?(\w+|'.*'|\".*\")(\s*?)?((append|prepend|nocache)?(\s*)?(hide)?)?(\s*{$_rdl})!", $block_tag, $_match)) {
- $error_text = 'Syntax Error in template "' . $template->source->filepath . '" "' . htmlspecialchars($block_tag) . '" illegal options';
- throw new SmartyCompilerException($error_text);
- } else {
- $_name = trim($_match[3], '\'"');
- if ($_match[8] != 'hide' || isset($template->block_data[$_name])) { // replace {$smarty.block.child}
- // do we have {$smart.block.child} in nested {block} tags?
- if (0 != preg_match_all("!({$_ldl}{$al}block\s+)(name=)?(\w+|'.*'|\".*\")([\s\S]*?)(hide)?(\s*{$_rdl})([\s\S]*?)({$_ldl}{$al}\\\$smarty\.block\.child{$_rdl})([\s\S]*?{$_ldl}{$al}/block{$_rdl})!", $block_content, $_match2)) {
- foreach ($_match2[3] as $key => $name) {
- // get it's replacement
- $_name2 = trim($name, '\'"');
- if ($_match2[5][$key] != 'hide' || isset($template->block_data[$_name2])) {
- if (isset($template->block_data[$_name2])) {
- $replacement = $template->block_data[$_name2]['source'];
- } else {
- $replacement = '';
- }
- // replace {$smarty.block.child} tag
- $search = array("%({$_ldl}{$al}block[\s\S]*?{$name}[\s\S]*?{$_rdl})([\s\S]*?)({$_ldl}{$al}\\\$smarty\.block\.child{$_rdl})([\s\S]*?)({$_ldl}{$al}/block{$_rdl})%", "/§§§child§§§/");
- $replace = array('\2§§§child§§§\4', $replacement);
- $block_content = preg_replace($search, $replace, $block_content);
- } else {
- // remove hidden blocks
- $block_content = preg_replace("%({$_ldl}{$al}block[\s\S]*?{$name}[\s\S]*?{$_rdl}[\s\S]*?{$_ldl}{$al}/block{$_rdl})%", '', $block_content);
- }
- }
- }
- // do we have not nested {$smart.block.child}
- if (0 != preg_match("/({$_ldl}{$al}\\\$smarty\.block\.child{$_rdl})/", $block_content, $_match2)) {
- // get child replacement for this block
- if (isset($template->block_data[$_name])) {
- $replacement = $template->block_data[$_name]['source'];
- unset($template->block_data[$_name]);
- } else {
- $replacement = '';
- }
- $block_content = preg_replace("/({$_ldl}{$al}\\\$smarty\.block\.child{$_rdl})/", $replacement, $block_content);
- }
- if (isset($template->block_data[$_name])) {
- if (strpos($template->block_data[$_name]['source'], '%%%%SMARTY_PARENT%%%%') !== false) {
- $template->block_data[$_name]['source'] =
- str_replace('%%%%SMARTY_PARENT%%%%', $block_content, $template->block_data[$_name]['source']);
- } elseif ($template->block_data[$_name]['mode'] == 'prepend') {
- $template->block_data[$_name]['source'] .= $block_content;
- } elseif ($template->block_data[$_name]['mode'] == 'append') {
- $template->block_data[$_name]['source'] = $block_content . $template->block_data[$_name]['source'];
- }
- } else {
- $template->block_data[$_name]['source'] = $block_content;
- $template->block_data[$_name]['file'] = $filepath;
- }
- if ($_match[6] == 'append') {
- $template->block_data[$_name]['mode'] = 'append';
- } elseif ($_match[6] == 'prepend') {
- $template->block_data[$_name]['mode'] = 'prepend';
- } else {
- $template->block_data[$_name]['mode'] = 'replace';
- }
+ static function compileChildBlock($compiler, $_name = null)
+ {
+ if ($compiler->inheritance_child) {
+ $name1 = Smarty_Internal_Compile_Block::$nested_block_names[0];
+ if (isset($compiler->template->block_data[$name1])) {
+ // replace inner block name with generic
+ Smarty_Internal_Compile_Block::$block_data[$name1]['source'] .= $compiler->template->block_data[$name1]['source'];
+ Smarty_Internal_Compile_Block::$block_data[$name1]['child'] = true;
}
+ $compiler->lex->yypushstate(Smarty_Internal_Templatelexer::CHILDBLOCK);
+ $compiler->has_code = false;
+ return;
}
- }
-
- /**
- * Compile saved child block source
- *
- * @param object $compiler compiler object
- * @param string $_name optional name of child block
- * @return string compiled code of schild block
- */
- public static function compileChildBlock($compiler, $_name = null) {
- $_output = '';
// if called by {$smarty.block.child} we must search the name of enclosing {block}
if ($_name == null) {
$stack_count = count($compiler->_tag_stack);
while (--$stack_count >= 0) {
if ($compiler->_tag_stack[$stack_count][0] == 'block') {
- $_name = trim($compiler->_tag_stack[$stack_count][1][0]['name'], "'\"");
+ $_name = trim($compiler->_tag_stack[$stack_count][1][0]['name'], "\"'");
break;
}
}
- // flag that child is already compile by {$smarty.block.child} inclusion
- $compiler->template->block_data[$_name]['compiled'] = true;
}
if ($_name == null) {
- $compiler->trigger_template_error('{$smarty.block.child} used out of context', $compiler->lex->taglineno);
+ $compiler->trigger_template_error(' tag {$smarty.block.child} used outside {block} tags ', $compiler->lex->taglineno);
}
// undefined child?
if (!isset($compiler->template->block_data[$_name]['source'])) {
+ $compiler->popTrace();
return '';
}
+ // flag that child is already compile by {$smarty.block.child} inclusion
+ $compiler->template->block_data[$_name]['compiled'] = true;
$_tpl = new Smarty_Internal_template('string:' . $compiler->template->block_data[$_name]['source'], $compiler->smarty, $compiler->template, $compiler->template->cache_id,
- $compiler->template->compile_id = null, $compiler->template->caching, $compiler->template->cache_lifetime);
+ $compiler->template->compile_id, $compiler->template->caching, $compiler->template->cache_lifetime);
+ if ($compiler->smarty->debugging) {
+ Smarty_Internal_Debug::ignore($_tpl);
+ }
+ $_tpl->tpl_vars = $compiler->template->tpl_vars;
$_tpl->variable_filters = $compiler->template->variable_filters;
$_tpl->properties['nocache_hash'] = $compiler->template->properties['nocache_hash'];
- $_tpl->source->filepath = $compiler->template->block_data[$_name]['file'];
$_tpl->allow_relative_path = true;
- if ($compiler->nocache) {
- $_tpl->compiler->forceNocache = 2;
- } else {
- $_tpl->compiler->forceNocache = 1;
- }
+ $_tpl->compiler->inheritance = true;
$_tpl->compiler->suppressHeader = true;
+ $_tpl->compiler->suppressFilter = true;
$_tpl->compiler->suppressTemplatePropertyHeader = true;
$_tpl->compiler->suppressMergedTemplates = true;
- if (strpos($compiler->template->block_data[$_name]['source'], '%%%%SMARTY_PARENT%%%%') !== false) {
- $_output = str_replace('%%%%SMARTY_PARENT%%%%', $compiler->parser->current_buffer->to_smarty_php(), $_tpl->compiler->compileTemplate($_tpl));
+ $nocache = $compiler->nocache || $compiler->tag_nocache;
+ if (strpos($compiler->template->block_data[$_name]['source'], self::parent) !== false) {
+ $_output = str_replace(self::parent, $compiler->parser->current_buffer->to_smarty_php(), $_tpl->compiler->compileTemplate($_tpl, $nocache));
} elseif ($compiler->template->block_data[$_name]['mode'] == 'prepend') {
- $_output = $_tpl->compiler->compileTemplate($_tpl) . $compiler->parser->current_buffer->to_smarty_php();
+ $_output = $_tpl->compiler->compileTemplate($_tpl, $nocache) . $compiler->parser->current_buffer->to_smarty_php();
} elseif ($compiler->template->block_data[$_name]['mode'] == 'append') {
- $_output = $compiler->parser->current_buffer->to_smarty_php() . $_tpl->compiler->compileTemplate($_tpl);
+ $_output = $compiler->parser->current_buffer->to_smarty_php() . $_tpl->compiler->compileTemplate($_tpl, $nocache);
} elseif (!empty($compiler->template->block_data[$_name])) {
- $_output = $_tpl->compiler->compileTemplate($_tpl);
+ $_output = $_tpl->compiler->compileTemplate($_tpl, $nocache);
}
$compiler->template->properties['file_dependency'] = array_merge($compiler->template->properties['file_dependency'], $_tpl->properties['file_dependency']);
$compiler->template->properties['function'] = array_merge($compiler->template->properties['function'], $_tpl->properties['function']);
@@ -216,62 +204,241 @@ class Smarty_Internal_Compile_Block extends Smarty_Internal_CompileBase {
}
}
unset($_tpl);
+ $compiler->has_code = true;
return $_output;
}
+ /**
+ * Compile $smarty.block.parent
+ *
+ * @param object $compiler compiler object
+ * @param string $_name optional name of child block
+ *
+ * @return string compiled code of child block
+ */
+ static function compileParentBlock($compiler, $_name = null)
+ {
+ // if called by {$smarty.block.parent} we must search the name of enclosing {block}
+ if ($_name == null) {
+ $stack_count = count($compiler->_tag_stack);
+ while (--$stack_count >= 0) {
+ if ($compiler->_tag_stack[$stack_count][0] == 'block') {
+ $_name = trim($compiler->_tag_stack[$stack_count][1][0]['name'], "\"'");
+ break;
+ }
+ }
+ }
+ if ($_name == null) {
+ $compiler->trigger_template_error(' tag {$smarty.block.parent} used outside {block} tags ', $compiler->lex->taglineno);
+ }
+ if (empty(Smarty_Internal_Compile_Block::$nested_block_names)) {
+ $compiler->trigger_template_error(' illegal {$smarty.block.parent} in parent template ', $compiler->lex->taglineno);
+ }
+ Smarty_Internal_Compile_Block::$block_data[Smarty_Internal_Compile_Block::$nested_block_names[0]]['source'] .= Smarty_Internal_Compile_Block::parent;
+ $compiler->lex->yypushstate(Smarty_Internal_Templatelexer::CHILDBLOCK);
+ $compiler->has_code = false;
+ return;
+ }
+
+ /**
+ * Process block source
+ *
+ * @param $compiler
+ * @param string $source source text
+ *
+ */
+ static function blockSource($compiler, $source)
+ {
+ Smarty_Internal_Compile_Block::$block_data[Smarty_Internal_Compile_Block::$nested_block_names[0]]['source'] .= $source;
+ }
}
/**
* Smarty Internal Plugin Compile BlockClose Class
*
- * @package Smarty
+ * @package Smarty
* @subpackage Compiler
*/
-class Smarty_Internal_Compile_Blockclose extends Smarty_Internal_CompileBase {
-
+class Smarty_Internal_Compile_Blockclose extends Smarty_Internal_CompileBase
+{
/**
* Compiles code for the {/block} tag
*
* @param array $args array with attributes from parser
* @param object $compiler compiler object
+ *
* @return string compiled code
*/
- public function compile($args, $compiler) {
+ public function compile($args, $compiler)
+ {
$compiler->has_code = true;
// check and get attributes
$_attr = $this->getAttributes($compiler, $args);
$saved_data = $this->closeTag($compiler, array('block'));
$_name = trim($saved_data[0]['name'], "\"'");
+ // reset flag for {block} tag
+ $compiler->inheritance = $saved_data[1];
+ // check if we process an inheritance child template
+ if ($compiler->inheritance_child) {
+ $name1 = Smarty_Internal_Compile_Block::$nested_block_names[0];
+ Smarty_Internal_Compile_Block::$block_data[$name1]['source'] .= "{$compiler->smarty->left_delimiter}/private_child_block{$compiler->smarty->right_delimiter}";
+ array_shift(Smarty_Internal_Compile_Block::$nested_block_names);
+ if (!empty(Smarty_Internal_Compile_Block::$nested_block_names)) {
+ $name2 = Smarty_Internal_Compile_Block::$nested_block_names[0];
+ if (isset($compiler->template->block_data[$name1]) || !$saved_data[0]['hide']) {
+ if (isset(Smarty_Internal_Compile_Block::$block_data[$name1]['child']) || !isset($compiler->template->block_data[$name1])) {
+ Smarty_Internal_Compile_Block::$block_data[$name2]['source'] .= Smarty_Internal_Compile_Block::$block_data[$name1]['source'];
+ } else {
+ if ($compiler->template->block_data[$name1]['mode'] == 'append') {
+ Smarty_Internal_Compile_Block::$block_data[$name2]['source'] .= Smarty_Internal_Compile_Block::$block_data[$name1]['source'] . $compiler->template->block_data[$name1]['source'];
+ } elseif ($compiler->template->block_data[$name1]['mode'] == 'prepend') {
+ Smarty_Internal_Compile_Block::$block_data[$name2]['source'] .= $compiler->template->block_data[$name1]['source'] . Smarty_Internal_Compile_Block::$block_data[$name1]['source'];
+ } else {
+ Smarty_Internal_Compile_Block::$block_data[$name2]['source'] .= $compiler->template->block_data[$name1]['source'];
+ }
+ }
+ }
+ unset(Smarty_Internal_Compile_Block::$block_data[$name1]);
+ $compiler->lex->yypushstate(Smarty_Internal_Templatelexer::CHILDBLOCK);
+ } else {
+ if (isset($compiler->template->block_data[$name1]) || !$saved_data[0]['hide']) {
+ if (isset($compiler->template->block_data[$name1]) && !isset(Smarty_Internal_Compile_Block::$block_data[$name1]['child'])) {
+ if (strpos($compiler->template->block_data[$name1]['source'], Smarty_Internal_Compile_Block::parent) !== false) {
+ $compiler->template->block_data[$name1]['source'] =
+ str_replace(Smarty_Internal_Compile_Block::parent, Smarty_Internal_Compile_Block::$block_data[$name1]['source'], $compiler->template->block_data[$name1]['source']);
+ } elseif ($compiler->template->block_data[$name1]['mode'] == 'prepend') {
+ $compiler->template->block_data[$name1]['source'] .= Smarty_Internal_Compile_Block::$block_data[$name1]['source'];
+ } elseif ($compiler->template->block_data[$name1]['mode'] == 'append') {
+ $compiler->template->block_data[$name1]['source'] = Smarty_Internal_Compile_Block::$block_data[$name1]['source'] . $compiler->template->block_data[$name1]['source'];
+ }
+ } else {
+ $compiler->template->block_data[$name1]['source'] = Smarty_Internal_Compile_Block::$block_data[$name1]['source'];
+ }
+ $compiler->template->block_data[$name1]['mode'] = 'replace';
+ if ($saved_data[0]['append']) {
+ $compiler->template->block_data[$name1]['mode'] = 'append';
+ }
+ if ($saved_data[0]['prepend']) {
+ $compiler->template->block_data[$name1]['mode'] = 'prepend';
+ }
+ }
+ unset(Smarty_Internal_Compile_Block::$block_data[$name1]);
+ $compiler->lex->yypushstate(Smarty_Internal_Templatelexer::CHILDBODY);
+ }
+ $compiler->has_code = false;
+ return;
+ }
if (isset($compiler->template->block_data[$_name]) && !isset($compiler->template->block_data[$_name]['compiled'])) {
- // restore to status before {block} tag as new subtemplate code of parent {block} is not needed
- // TODO: Below code was disabled in 3.1.8 because of problems with {include} in nested {block} tags in child templates
- // combined with append/prepend or $smarty.block.parent
- // For later versions it should be checked under which conditions it could run for optimisation
- //
- //$compiler->merged_templates = $saved_data[4];
- //$compiler->smarty->merged_templates_func = $saved_data[5];
- //$compiler->template->properties = $saved_data[6];
- //$compiler->template->has_nocache_code = $saved_data[7];
$_output = Smarty_Internal_Compile_Block::compileChildBlock($compiler, $_name);
} else {
- if (isset($saved_data[0]['hide']) && !isset($compiler->template->block_data[$_name]['source'])) {
+ if ($saved_data[0]['hide'] && !isset($compiler->template->block_data[$_name]['source'])) {
$_output = '';
} else {
$_output = $compiler->parser->current_buffer->to_smarty_php();
}
- unset($compiler->template->block_data[$_name]['compiled']);
}
+ unset($compiler->template->block_data[$_name]['compiled']);
// reset flags
- $compiler->parser->current_buffer = $saved_data[1];
- $compiler->nocache = $saved_data[2];
- $compiler->smarty->merge_compiled_includes = $saved_data[3];
- // reset flag for {block} tag
- $compiler->inheritance = false;
+ $compiler->parser->current_buffer = $saved_data[2];
+ if ($compiler->nocache) {
+ $compiler->tag_nocache = true;
+ }
+ $compiler->nocache = $saved_data[3];
// $_output content has already nocache code processed
$compiler->suppressNocacheProcessing = true;
+
return $_output;
}
+}
+
+/**
+ * Smarty Internal Plugin Compile Child Block Class
+ *
+ * @package Smarty
+ * @subpackage Compiler
+ */
+class Smarty_Internal_Compile_Private_Child_Block extends Smarty_Internal_CompileBase
+{
+
+ /**
+ * Attribute definition: Overwrites base class.
+ *
+ * @var array
+ * @see Smarty_Internal_CompileBase
+ */
+ public $required_attributes = array('name', 'file', 'uid', 'line', 'type', 'resource');
+ /**
+ * Compiles code for the {private_child_block} tag
+ *
+ * @param array $args array with attributes from parser
+ * @param object $compiler compiler object
+ *
+ * @return boolean true
+ */
+ public function compile($args, $compiler)
+ {
+ // check and get attributes
+ $_attr = $this->getAttributes($compiler, $args);
+
+ // update template with original template resource of {block}
+ if (trim($_attr['type'], "'") == 'file') {
+ $compiler->template->template_resource = 'file:' . realpath(trim($_attr['file'], "'"));
+ } else {
+ $compiler->template->template_resource = trim($_attr['resource'], "'");
+ }
+ // source object
+ unset ($compiler->template->source);
+ $exists = $compiler->template->source->exists;
+
+ // must merge includes
+ if ($_attr['nocache'] == true) {
+ $compiler->tag_nocache = true;
+ }
+ $save = array($_attr, $compiler->nocache);
+
+ // set trace back to child block
+ $compiler->pushTrace(trim($_attr['file'], "\"'"), trim($_attr['uid'], "\"'"), $_attr['line'] - $compiler->lex->line);
+
+ $this->openTag($compiler, 'private_child_block', $save);
+
+ $compiler->nocache = $compiler->nocache | $compiler->tag_nocache;
+ $compiler->has_code = false;
+
+ return true;
+ }
}
-?> \ No newline at end of file
+/**
+ * Smarty Internal Plugin Compile Child Block Close Class
+ *
+ * @package Smarty
+ * @subpackage Compiler
+ */
+class Smarty_Internal_Compile_Private_Child_Blockclose extends Smarty_Internal_CompileBase
+{
+
+ /**
+ * Compiles code for the {/private_child_block} tag
+ *
+ * @param array $args array with attributes from parser
+ * @param object $compiler compiler object
+ *
+ * @return boolean true
+ */
+ public function compile($args, $compiler)
+ {
+ // check and get attributes
+ $_attr = $this->getAttributes($compiler, $args);
+
+ $saved_data = $this->closeTag($compiler, array('private_child_block'));
+
+ // end of child block
+ $compiler->popTrace();
+
+ $compiler->nocache = $saved_data[1];
+ $compiler->has_code = false;
+
+ return true;
+ }
+}
diff --git a/library/Smarty/libs/sysplugins/smarty_internal_compile_break.php b/library/Smarty/libs/sysplugins/smarty_internal_compile_break.php
index 259c66e2b..b51e9e8f3 100644
--- a/library/Smarty/libs/sysplugins/smarty_internal_compile_break.php
+++ b/library/Smarty/libs/sysplugins/smarty_internal_compile_break.php
@@ -1,77 +1,75 @@
-<?php
-/**
- * Smarty Internal Plugin Compile Break
- *
- * Compiles the {break} tag
- *
- * @package Smarty
- * @subpackage Compiler
- * @author Uwe Tews
- */
-/**
- * Smarty Internal Plugin Compile Break Class
- *
- * @package Smarty
- * @subpackage Compiler
- */
-class Smarty_Internal_Compile_Break extends Smarty_Internal_CompileBase {
-
- /**
- * Attribute definition: Overwrites base class.
- *
- * @var array
- * @see Smarty_Internal_CompileBase
- */
- public $optional_attributes = array('levels');
- /**
- * Attribute definition: Overwrites base class.
- *
- * @var array
- * @see Smarty_Internal_CompileBase
- */
- public $shorttag_order = array('levels');
-
- /**
- * Compiles code for the {break} tag
- *
- * @param array $args array with attributes from parser
- * @param object $compiler compiler object
- * @param array $parameter array with compilation parameter
- * @return string compiled code
- */
- public function compile($args, $compiler, $parameter)
- {
- static $_is_loopy = array('for' => true, 'foreach' => true, 'while' => true, 'section' => true);
- // check and get attributes
- $_attr = $this->getAttributes($compiler, $args);
-
- if ($_attr['nocache'] === true) {
- $compiler->trigger_template_error('nocache option not allowed', $compiler->lex->taglineno);
- }
-
- if (isset($_attr['levels'])) {
- if (!is_numeric($_attr['levels'])) {
- $compiler->trigger_template_error('level attribute must be a numeric constant', $compiler->lex->taglineno);
- }
- $_levels = $_attr['levels'];
- } else {
- $_levels = 1;
- }
- $level_count = $_levels;
- $stack_count = count($compiler->_tag_stack) - 1;
- while ($level_count > 0 && $stack_count >= 0) {
- if (isset($_is_loopy[$compiler->_tag_stack[$stack_count][0]])) {
- $level_count--;
- }
- $stack_count--;
- }
- if ($level_count != 0) {
- $compiler->trigger_template_error("cannot break {$_levels} level(s)", $compiler->lex->taglineno);
- }
- $compiler->has_code = true;
- return "<?php break {$_levels}?>";
- }
-
-}
-
-?> \ No newline at end of file
+<?php
+/**
+ * Smarty Internal Plugin Compile Break
+ * Compiles the {break} tag
+ *
+ * @package Smarty
+ * @subpackage Compiler
+ * @author Uwe Tews
+ */
+
+/**
+ * Smarty Internal Plugin Compile Break Class
+ *
+ * @package Smarty
+ * @subpackage Compiler
+ */
+class Smarty_Internal_Compile_Break extends Smarty_Internal_CompileBase
+{
+ /**
+ * Attribute definition: Overwrites base class.
+ *
+ * @var array
+ * @see Smarty_Internal_CompileBase
+ */
+ public $optional_attributes = array('levels');
+ /**
+ * Attribute definition: Overwrites base class.
+ *
+ * @var array
+ * @see Smarty_Internal_CompileBase
+ */
+ public $shorttag_order = array('levels');
+
+ /**
+ * Compiles code for the {break} tag
+ *
+ * @param array $args array with attributes from parser
+ * @param object $compiler compiler object
+ * @param array $parameter array with compilation parameter
+ *
+ * @return string compiled code
+ */
+ public function compile($args, $compiler, $parameter)
+ {
+ static $_is_loopy = array('for' => true, 'foreach' => true, 'while' => true, 'section' => true);
+ // check and get attributes
+ $_attr = $this->getAttributes($compiler, $args);
+
+ if ($_attr['nocache'] === true) {
+ $compiler->trigger_template_error('nocache option not allowed', $compiler->lex->taglineno);
+ }
+
+ if (isset($_attr['levels'])) {
+ if (!is_numeric($_attr['levels'])) {
+ $compiler->trigger_template_error('level attribute must be a numeric constant', $compiler->lex->taglineno);
+ }
+ $_levels = $_attr['levels'];
+ } else {
+ $_levels = 1;
+ }
+ $level_count = $_levels;
+ $stack_count = count($compiler->_tag_stack) - 1;
+ while ($level_count > 0 && $stack_count >= 0) {
+ if (isset($_is_loopy[$compiler->_tag_stack[$stack_count][0]])) {
+ $level_count --;
+ }
+ $stack_count --;
+ }
+ if ($level_count != 0) {
+ $compiler->trigger_template_error("cannot break {$_levels} level(s)", $compiler->lex->taglineno);
+ }
+
+ return "<?php break {$_levels};?>";
+ }
+}
diff --git a/library/Smarty/libs/sysplugins/smarty_internal_compile_call.php b/library/Smarty/libs/sysplugins/smarty_internal_compile_call.php
index af12a048c..bfbd1f547 100644
--- a/library/Smarty/libs/sysplugins/smarty_internal_compile_call.php
+++ b/library/Smarty/libs/sysplugins/smarty_internal_compile_call.php
@@ -1,22 +1,21 @@
<?php
/**
* Smarty Internal Plugin Compile Function_Call
- *
* Compiles the calls of user defined tags defined by {function}
*
- * @package Smarty
+ * @package Smarty
* @subpackage Compiler
- * @author Uwe Tews
+ * @author Uwe Tews
*/
/**
* Smarty Internal Plugin Compile Function_Call Class
*
- * @package Smarty
+ * @package Smarty
* @subpackage Compiler
*/
-class Smarty_Internal_Compile_Call extends Smarty_Internal_CompileBase {
-
+class Smarty_Internal_Compile_Call extends Smarty_Internal_CompileBase
+{
/**
* Attribute definition: Overwrites base class.
*
@@ -42,9 +41,9 @@ class Smarty_Internal_Compile_Call extends Smarty_Internal_CompileBase {
/**
* Compiles the calls of user defined tags defined by {function}
*
- * @param array $args array with attributes from parser
- * @param object $compiler compiler object
- * @param array $parameter array with compilation parameter
+ * @param array $args array with attributes from parser
+ * @param object $compiler compiler object
+ *
* @return string compiled code
*/
public function compile($args, $compiler)
@@ -53,7 +52,7 @@ class Smarty_Internal_Compile_Call extends Smarty_Internal_CompileBase {
$_attr = $this->getAttributes($compiler, $args);
// save possible attributes
if (isset($_attr['assign'])) {
- // output will be stored in a smarty variable instead of beind displayed
+ // output will be stored in a smarty variable instead of being displayed
$_assign = $_attr['assign'];
}
$_name = $_attr['name'];
@@ -96,7 +95,7 @@ class Smarty_Internal_Compile_Call extends Smarty_Internal_CompileBase {
}
}
}
- //varibale name?
+ //variable name?
if (!(strpos($_name, '$') === false)) {
$call_cache = $_name;
$call_function = '$tmp = "smarty_template_function_".' . $_name . '; $tmp';
@@ -122,9 +121,7 @@ class Smarty_Internal_Compile_Call extends Smarty_Internal_CompileBase {
$_output = "<?php {$call_function}(\$_smarty_tpl,{$_params});?>\n";
}
}
+
return $_output;
}
-
}
-
-?> \ No newline at end of file
diff --git a/library/Smarty/libs/sysplugins/smarty_internal_compile_capture.php b/library/Smarty/libs/sysplugins/smarty_internal_compile_capture.php
index 9a5071ebe..34728e47a 100644
--- a/library/Smarty/libs/sysplugins/smarty_internal_compile_capture.php
+++ b/library/Smarty/libs/sysplugins/smarty_internal_compile_capture.php
@@ -1,22 +1,21 @@
<?php
/**
* Smarty Internal Plugin Compile Capture
- *
* Compiles the {capture} tag
*
- * @package Smarty
+ * @package Smarty
* @subpackage Compiler
- * @author Uwe Tews
+ * @author Uwe Tews
*/
/**
* Smarty Internal Plugin Compile Capture Class
*
- * @package Smarty
+ * @package Smarty
* @subpackage Compiler
*/
-class Smarty_Internal_Compile_Capture extends Smarty_Internal_CompileBase {
-
+class Smarty_Internal_Compile_Capture extends Smarty_Internal_CompileBase
+{
/**
* Attribute definition: Overwrites base class.
*
@@ -35,8 +34,9 @@ class Smarty_Internal_Compile_Capture extends Smarty_Internal_CompileBase {
/**
* Compiles code for the {capture} tag
*
- * @param array $args array with attributes from parser
- * @param object $compiler compiler object
+ * @param array $args array with attributes from parser
+ * @param object $compiler compiler object
+ *
* @return string compiled code
*/
public function compile($args, $compiler)
@@ -55,22 +55,22 @@ class Smarty_Internal_Compile_Capture extends Smarty_Internal_CompileBase {
return $_output;
}
-
}
/**
* Smarty Internal Plugin Compile Captureclose Class
*
- * @package Smarty
+ * @package Smarty
* @subpackage Compiler
*/
-class Smarty_Internal_Compile_CaptureClose extends Smarty_Internal_CompileBase {
-
+class Smarty_Internal_Compile_CaptureClose extends Smarty_Internal_CompileBase
+{
/**
* Compiles code for the {/capture} tag
*
- * @param array $args array with attributes from parser
- * @param object $compiler compiler object
+ * @param array $args array with attributes from parser
+ * @param object $compiler compiler object
+ *
* @return string compiled code
*/
public function compile($args, $compiler)
@@ -90,9 +90,7 @@ class Smarty_Internal_Compile_CaptureClose extends Smarty_Internal_CompileBase {
$_output .= " if (isset( \$_capture_append)) \$_smarty_tpl->append( \$_capture_append, ob_get_contents());\n";
$_output .= " Smarty::\$_smarty_vars['capture'][\$_capture_buffer]=ob_get_clean();\n";
$_output .= "} else \$_smarty_tpl->capture_error();?>";
+
return $_output;
}
-
}
-
-?> \ No newline at end of file
diff --git a/library/Smarty/libs/sysplugins/smarty_internal_compile_config_load.php b/library/Smarty/libs/sysplugins/smarty_internal_compile_config_load.php
index deaa052c5..8813664d4 100644
--- a/library/Smarty/libs/sysplugins/smarty_internal_compile_config_load.php
+++ b/library/Smarty/libs/sysplugins/smarty_internal_compile_config_load.php
@@ -1,22 +1,21 @@
<?php
/**
* Smarty Internal Plugin Compile Config Load
- *
* Compiles the {config load} tag
*
- * @package Smarty
+ * @package Smarty
* @subpackage Compiler
- * @author Uwe Tews
+ * @author Uwe Tews
*/
/**
* Smarty Internal Plugin Compile Config Load Class
*
- * @package Smarty
+ * @package Smarty
* @subpackage Compiler
*/
-class Smarty_Internal_Compile_Config_Load extends Smarty_Internal_CompileBase {
-
+class Smarty_Internal_Compile_Config_Load extends Smarty_Internal_CompileBase
+{
/**
* Attribute definition: Overwrites base class.
*
@@ -30,7 +29,7 @@ class Smarty_Internal_Compile_Config_Load extends Smarty_Internal_CompileBase {
* @var array
* @see Smarty_Internal_CompileBase
*/
- public $shorttag_order = array('file','section');
+ public $shorttag_order = array('file', 'section');
/**
* Attribute definition: Overwrites base class.
*
@@ -42,13 +41,14 @@ class Smarty_Internal_Compile_Config_Load extends Smarty_Internal_CompileBase {
/**
* Compiles code for the {config_load} tag
*
- * @param array $args array with attributes from parser
- * @param object $compiler compiler object
+ * @param array $args array with attributes from parser
+ * @param object $compiler compiler object
+ *
* @return string compiled code
*/
public function compile($args, $compiler)
{
- static $_is_legal_scope = array('local' => true,'parent' => true,'root' => true,'global' => true);
+ static $_is_legal_scope = array('local' => true, 'parent' => true, 'root' => true, 'global' => true);
// check and get attributes
$_attr = $this->getAttributes($compiler, $args);
@@ -56,8 +56,7 @@ class Smarty_Internal_Compile_Config_Load extends Smarty_Internal_CompileBase {
$compiler->trigger_template_error('nocache option not allowed', $compiler->lex->taglineno);
}
-
- // save posible attributes
+ // save possible attributes
$conf_file = $_attr['file'];
if (isset($_attr['section'])) {
$section = $_attr['section'];
@@ -70,16 +69,14 @@ class Smarty_Internal_Compile_Config_Load extends Smarty_Internal_CompileBase {
$_attr['scope'] = trim($_attr['scope'], "'\"");
if (isset($_is_legal_scope[$_attr['scope']])) {
$scope = $_attr['scope'];
- } else {
+ } else {
$compiler->trigger_template_error('illegal value for "scope" attribute', $compiler->lex->taglineno);
- }
+ }
}
// create config object
$_output = "<?php \$_config = new Smarty_Internal_Config($conf_file, \$_smarty_tpl->smarty, \$_smarty_tpl);";
$_output .= "\$_config->loadConfigVars($section, '$scope'); ?>";
+
return $_output;
}
-
}
-
-?> \ No newline at end of file
diff --git a/library/Smarty/libs/sysplugins/smarty_internal_compile_continue.php b/library/Smarty/libs/sysplugins/smarty_internal_compile_continue.php
index 4082a93b3..af3765128 100644
--- a/library/Smarty/libs/sysplugins/smarty_internal_compile_continue.php
+++ b/library/Smarty/libs/sysplugins/smarty_internal_compile_continue.php
@@ -1,78 +1,75 @@
-<?php
-/**
- * Smarty Internal Plugin Compile Continue
- *
- * Compiles the {continue} tag
- *
- * @package Smarty
- * @subpackage Compiler
- * @author Uwe Tews
- */
-
-/**
- * Smarty Internal Plugin Compile Continue Class
- *
- * @package Smarty
- * @subpackage Compiler
- */
-class Smarty_Internal_Compile_Continue extends Smarty_Internal_CompileBase {
-
- /**
- * Attribute definition: Overwrites base class.
- *
- * @var array
- * @see Smarty_Internal_CompileBase
- */
- public $optional_attributes = array('levels');
- /**
- * Attribute definition: Overwrites base class.
- *
- * @var array
- * @see Smarty_Internal_CompileBase
- */
- public $shorttag_order = array('levels');
-
- /**
- * Compiles code for the {continue} tag
- *
- * @param array $args array with attributes from parser
- * @param object $compiler compiler object
- * @param array $parameter array with compilation parameter
- * @return string compiled code
- */
- public function compile($args, $compiler, $parameter)
- {
- static $_is_loopy = array('for' => true, 'foreach' => true, 'while' => true, 'section' => true);
- // check and get attributes
- $_attr = $this->getAttributes($compiler, $args);
-
- if ($_attr['nocache'] === true) {
- $compiler->trigger_template_error('nocache option not allowed', $compiler->lex->taglineno);
- }
-
- if (isset($_attr['levels'])) {
- if (!is_numeric($_attr['levels'])) {
- $compiler->trigger_template_error('level attribute must be a numeric constant', $compiler->lex->taglineno);
- }
- $_levels = $_attr['levels'];
- } else {
- $_levels = 1;
- }
- $level_count = $_levels;
- $stack_count = count($compiler->_tag_stack) - 1;
- while ($level_count > 0 && $stack_count >= 0) {
- if (isset($_is_loopy[$compiler->_tag_stack[$stack_count][0]])) {
- $level_count--;
- }
- $stack_count--;
- }
- if ($level_count != 0) {
- $compiler->trigger_template_error("cannot continue {$_levels} level(s)", $compiler->lex->taglineno);
- }
- $compiler->has_code = true;
- return "<?php continue {$_levels}?>";
- }
-
-}
-
-?> \ No newline at end of file
+<?php
+/**
+ * Smarty Internal Plugin Compile Continue
+ * Compiles the {continue} tag
+ *
+ * @package Smarty
+ * @subpackage Compiler
+ * @author Uwe Tews
+ */
+
+/**
+ * Smarty Internal Plugin Compile Continue Class
+ *
+ * @package Smarty
+ * @subpackage Compiler
+ */
+class Smarty_Internal_Compile_Continue extends Smarty_Internal_CompileBase
+{
+ /**
+ * Attribute definition: Overwrites base class.
+ *
+ * @var array
+ * @see Smarty_Internal_CompileBase
+ */
+ public $optional_attributes = array('levels');
+ /**
+ * Attribute definition: Overwrites base class.
+ *
+ * @var array
+ * @see Smarty_Internal_CompileBase
+ */
+ public $shorttag_order = array('levels');
+
+ /**
+ * Compiles code for the {continue} tag
+ *
+ * @param array $args array with attributes from parser
+ * @param object $compiler compiler object
+ * @param array $parameter array with compilation parameter
+ *
+ * @return string compiled code
+ */
+ public function compile($args, $compiler, $parameter)
+ {
+ static $_is_loopy = array('for' => true, 'foreach' => true, 'while' => true, 'section' => true);
+ // check and get attributes
+ $_attr = $this->getAttributes($compiler, $args);
+
+ if ($_attr['nocache'] === true) {
+ $compiler->trigger_template_error('nocache option not allowed', $compiler->lex->taglineno);
+ }
+
+ if (isset($_attr['levels'])) {
+ if (!is_numeric($_attr['levels'])) {
+ $compiler->trigger_template_error('level attribute must be a numeric constant', $compiler->lex->taglineno);
+ }
+ $_levels = $_attr['levels'];
+ } else {
+ $_levels = 1;
+ }
+ $level_count = $_levels;
+ $stack_count = count($compiler->_tag_stack) - 1;
+ while ($level_count > 0 && $stack_count >= 0) {
+ if (isset($_is_loopy[$compiler->_tag_stack[$stack_count][0]])) {
+ $level_count --;
+ }
+ $stack_count --;
+ }
+ if ($level_count != 0) {
+ $compiler->trigger_template_error("cannot continue {$_levels} level(s)", $compiler->lex->taglineno);
+ }
+
+ return "<?php continue {$_levels};?>";
+ }
+}
diff --git a/library/Smarty/libs/sysplugins/smarty_internal_compile_debug.php b/library/Smarty/libs/sysplugins/smarty_internal_compile_debug.php
index f50c7aee2..b184a746b 100644
--- a/library/Smarty/libs/sysplugins/smarty_internal_compile_debug.php
+++ b/library/Smarty/libs/sysplugins/smarty_internal_compile_debug.php
@@ -1,28 +1,28 @@
<?php
/**
* Smarty Internal Plugin Compile Debug
- *
* Compiles the {debug} tag.
* It opens a window the the Smarty Debugging Console.
*
- * @package Smarty
+ * @package Smarty
* @subpackage Compiler
- * @author Uwe Tews
+ * @author Uwe Tews
*/
/**
* Smarty Internal Plugin Compile Debug Class
*
- * @package Smarty
+ * @package Smarty
* @subpackage Compiler
*/
-class Smarty_Internal_Compile_Debug extends Smarty_Internal_CompileBase {
-
+class Smarty_Internal_Compile_Debug extends Smarty_Internal_CompileBase
+{
/**
* Compiles code for the {debug} tag
*
- * @param array $args array with attributes from parser
- * @param object $compiler compiler object
+ * @param array $args array with attributes from parser
+ * @param object $compiler compiler object
+ *
* @return string compiled code
*/
public function compile($args, $compiler)
@@ -35,9 +35,7 @@ class Smarty_Internal_Compile_Debug extends Smarty_Internal_CompileBase {
// display debug template
$_output = "<?php \$_smarty_tpl->smarty->loadPlugin('Smarty_Internal_Debug'); Smarty_Internal_Debug::display_debug(\$_smarty_tpl); ?>";
+
return $_output;
}
-
}
-
-?> \ No newline at end of file
diff --git a/library/Smarty/libs/sysplugins/smarty_internal_compile_eval.php b/library/Smarty/libs/sysplugins/smarty_internal_compile_eval.php
index 6cf481b50..407482f07 100644
--- a/library/Smarty/libs/sysplugins/smarty_internal_compile_eval.php
+++ b/library/Smarty/libs/sysplugins/smarty_internal_compile_eval.php
@@ -1,22 +1,21 @@
<?php
/**
* Smarty Internal Plugin Compile Eval
- *
* Compiles the {eval} tag.
*
- * @package Smarty
+ * @package Smarty
* @subpackage Compiler
- * @author Uwe Tews
+ * @author Uwe Tews
*/
/**
* Smarty Internal Plugin Compile Eval Class
*
- * @package Smarty
+ * @package Smarty
* @subpackage Compiler
*/
-class Smarty_Internal_Compile_Eval extends Smarty_Internal_CompileBase {
-
+class Smarty_Internal_Compile_Eval extends Smarty_Internal_CompileBase
+{
/**
* Attribute definition: Overwrites base class.
*
@@ -37,13 +36,14 @@ class Smarty_Internal_Compile_Eval extends Smarty_Internal_CompileBase {
* @var array
* @see Smarty_Internal_CompileBase
*/
- public $shorttag_order = array('var','assign');
+ public $shorttag_order = array('var', 'assign');
/**
* Compiles code for the {eval} tag
*
- * @param array $args array with attributes from parser
- * @param object $compiler compiler object
+ * @param array $args array with attributes from parser
+ * @param object $compiler compiler object
+ *
* @return string compiled code
*/
public function compile($args, $compiler)
@@ -53,21 +53,19 @@ class Smarty_Internal_Compile_Eval extends Smarty_Internal_CompileBase {
// check and get attributes
$_attr = $this->getAttributes($compiler, $args);
if (isset($_attr['assign'])) {
- // output will be stored in a smarty variable instead of beind displayed
+ // output will be stored in a smarty variable instead of being displayed
$_assign = $_attr['assign'];
}
// create template object
- $_output = "\$_template = new {$compiler->smarty->template_class}('eval:'.".$_attr['var'].", \$_smarty_tpl->smarty, \$_smarty_tpl);";
+ $_output = "\$_template = new {$compiler->smarty->template_class}('eval:'." . $_attr['var'] . ", \$_smarty_tpl->smarty, \$_smarty_tpl);";
//was there an assign attribute?
if (isset($_assign)) {
$_output .= "\$_smarty_tpl->assign($_assign,\$_template->fetch());";
} else {
$_output .= "echo \$_template->fetch();";
}
+
return "<?php $_output ?>";
}
-
}
-
-?> \ No newline at end of file
diff --git a/library/Smarty/libs/sysplugins/smarty_internal_compile_extends.php b/library/Smarty/libs/sysplugins/smarty_internal_compile_extends.php
index 9042aa233..2b541f2e3 100644
--- a/library/Smarty/libs/sysplugins/smarty_internal_compile_extends.php
+++ b/library/Smarty/libs/sysplugins/smarty_internal_compile_extends.php
@@ -1,128 +1,85 @@
<?php
/**
-* Smarty Internal Plugin Compile extend
-*
-* Compiles the {extends} tag
-*
-* @package Smarty
-* @subpackage Compiler
-* @author Uwe Tews
-*/
+ * Smarty Internal Plugin Compile extend
+ * Compiles the {extends} tag
+ *
+ * @package Smarty
+ * @subpackage Compiler
+ * @author Uwe Tews
+ */
/**
-* Smarty Internal Plugin Compile extend Class
-*
-* @package Smarty
-* @subpackage Compiler
-*/
-class Smarty_Internal_Compile_Extends extends Smarty_Internal_CompileBase {
-
+ * Smarty Internal Plugin Compile extend Class
+ *
+ * @package Smarty
+ * @subpackage Compiler
+ */
+class Smarty_Internal_Compile_Extends extends Smarty_Internal_CompileBase
+{
/**
- * Attribute definition: Overwrites base class.
- *
- * @var array
- * @see Smarty_Internal_CompileBase
- */
+ * Attribute definition: Overwrites base class.
+ *
+ * @var array
+ * @see Smarty_Internal_CompileBase
+ */
public $required_attributes = array('file');
/**
- * Attribute definition: Overwrites base class.
- *
- * @var array
- * @see Smarty_Internal_CompileBase
- */
+ * Attribute definition: Overwrites base class.
+ *
+ * @var array
+ * @see Smarty_Internal_CompileBase
+ */
public $shorttag_order = array('file');
- /**
- * mbstring.overload flag
- *
- * @var int
- */
- public $mbstring_overload = 0;
/**
- * Compiles code for the {extends} tag
- *
- * @param array $args array with attributes from parser
- * @param object $compiler compiler object
- * @return string compiled code
- */
+ * Compiles code for the {extends} tag
+ *
+ * @param array $args array with attributes from parser
+ * @param object $compiler compiler object
+ *
+ * @return string compiled code
+ */
public function compile($args, $compiler)
{
- static $_is_stringy = array('string' => true, 'eval' => true);
- $this->_rdl = preg_quote($compiler->smarty->right_delimiter);
- $this->_ldl = preg_quote($compiler->smarty->left_delimiter);
- $filepath = $compiler->template->source->filepath;
- $this->mbstring_overload = ini_get('mbstring.func_overload') & 2;
// check and get attributes
$_attr = $this->getAttributes($compiler, $args);
if ($_attr['nocache'] === true) {
$compiler->trigger_template_error('nocache option not allowed', $compiler->lex->taglineno);
}
-
- $_smarty_tpl = $compiler->template;
- $include_file = null;
if (strpos($_attr['file'], '$_tmp') !== false) {
$compiler->trigger_template_error('illegal value for file attribute', $compiler->lex->taglineno);
}
- eval('$include_file = ' . $_attr['file'] . ';');
+
+ $name = $_attr['file'];
+ /** @var Smarty_Internal_Template $_smarty_tpl
+ * used in evaluated code
+ */
+ $_smarty_tpl = $compiler->template;
+ eval("\$tpl_name = $name;");
// create template object
- $_template = new $compiler->smarty->template_class($include_file, $compiler->smarty, $compiler->template);
- // save file dependency
- if (isset($_is_stringy[$_template->source->type])) {
- $template_sha1 = sha1($include_file);
- } else {
- $template_sha1 = sha1($_template->source->filepath);
- }
- if (isset($compiler->template->properties['file_dependency'][$template_sha1])) {
- $compiler->trigger_template_error("illegal recursive call of \"{$include_file}\"", $compiler->lex->line - 1);
- }
- $compiler->template->properties['file_dependency'][$template_sha1] = array($_template->source->filepath, $_template->source->timestamp, $_template->source->type);
- $_content = ($this->mbstring_overload ? mb_substr($compiler->template->source->content, $compiler->lex->counter - 1, 20000000, 'latin1') : substr($compiler->template->source->content, $compiler->lex->counter - 1));
- if (preg_match_all("!({$this->_ldl}block\s(.+?){$this->_rdl})!", $_content, $s) !=
- preg_match_all("!({$this->_ldl}/block{$this->_rdl})!", $_content, $c)) {
- $compiler->trigger_template_error('unmatched {block} {/block} pairs');
+ $_template = new $compiler->smarty->template_class($tpl_name, $compiler->smarty, $compiler->template);
+ // check for recursion
+ $uid = $_template->source->uid;
+ if (isset($compiler->extends_uid[$uid])) {
+ $compiler->trigger_template_error("illegal recursive call of \"$include_file\"", $compiler->lex->line - 1);
}
- preg_match_all("!{$this->_ldl}block\s(.+?){$this->_rdl}|{$this->_ldl}/block{$this->_rdl}|{$this->_ldl}\*([\S\s]*?)\*{$this->_rdl}!", $_content, $_result, PREG_OFFSET_CAPTURE);
- $_result_count = count($_result[0]);
- $_start = 0;
- while ($_start+1 < $_result_count) {
- $_end = 0;
- $_level = 1;
- if (($this->mbstring_overload ? mb_substr($_result[0][$_start][0],0,mb_strlen($compiler->smarty->left_delimiter,'latin1')+1, 'latin1') : substr($_result[0][$_start][0],0,strlen($compiler->smarty->left_delimiter)+1)) == $compiler->smarty->left_delimiter.'*') {
- $_start++;
- continue;
- }
- while ($_level != 0) {
- $_end++;
- if (($this->mbstring_overload ? mb_substr($_result[0][$_start + $_end][0],0,mb_strlen($compiler->smarty->left_delimiter,'latin1')+1, 'latin1') : substr($_result[0][$_start + $_end][0],0,strlen($compiler->smarty->left_delimiter)+1)) == $compiler->smarty->left_delimiter.'*') {
- continue;
- }
- if (!strpos($_result[0][$_start + $_end][0], '/')) {
- $_level++;
- } else {
- $_level--;
+ $compiler->extends_uid[$uid] = true;
+ if (empty($_template->source->components)) {
+ array_unshift($compiler->sources, $_template->source);
+ } else {
+ foreach ($_template->source->components as $source) {
+ array_unshift($compiler->sources, $source);
+ $uid = $source->uid;
+ if (isset($compiler->extends_uid[$uid])) {
+ $compiler->trigger_template_error("illegal recursive call of \"{$source->filepath}\"", $compiler->lex->line - 1);
}
- }
- $_block_content = str_replace($compiler->smarty->left_delimiter . '$smarty.block.parent' . $compiler->smarty->right_delimiter, '%%%%SMARTY_PARENT%%%%',
- ($this->mbstring_overload ? mb_substr($_content, $_result[0][$_start][1] + mb_strlen($_result[0][$_start][0], 'latin1'), $_result[0][$_start + $_end][1] - $_result[0][$_start][1] - + mb_strlen($_result[0][$_start][0], 'latin1'), 'latin1') : substr($_content, $_result[0][$_start][1] + strlen($_result[0][$_start][0]), $_result[0][$_start + $_end][1] - $_result[0][$_start][1] - + strlen($_result[0][$_start][0]))));
- Smarty_Internal_Compile_Block::saveBlockData($_block_content, $_result[0][$_start][0], $compiler->template, $filepath);
- $_start = $_start + $_end + 1;
- }
- if ($_template->source->type == 'extends') {
- $_template->block_data = $compiler->template->block_data;
- }
- $compiler->template->source->content = $_template->source->content;
- if ($_template->source->type == 'extends') {
- $compiler->template->block_data = $_template->block_data;
- foreach ($_template->source->components as $key => $component) {
- $compiler->template->properties['file_dependency'][$key] = array($component->filepath, $component->timestamp, $component->type);
+ $compiler->extends_uid[$uid] = true;
}
}
- $compiler->template->source->filepath = $_template->source->filepath;
- $compiler->abort_and_recompile = true;
+ unset ($_template);
+ $compiler->inheritance_child = true;
+ $compiler->lex->yypushstate(Smarty_Internal_Templatelexer::CHILDBODY);
return '';
}
-
}
-
-?> \ No newline at end of file
diff --git a/library/Smarty/libs/sysplugins/smarty_internal_compile_for.php b/library/Smarty/libs/sysplugins/smarty_internal_compile_for.php
index 057f4fb79..a624b922c 100644
--- a/library/Smarty/libs/sysplugins/smarty_internal_compile_for.php
+++ b/library/Smarty/libs/sysplugins/smarty_internal_compile_for.php
@@ -1,39 +1,35 @@
<?php
/**
* Smarty Internal Plugin Compile For
- *
* Compiles the {for} {forelse} {/for} tags
*
- * @package Smarty
+ * @package Smarty
* @subpackage Compiler
- * @author Uwe Tews
+ * @author Uwe Tews
*/
/**
* Smarty Internal Plugin Compile For Class
*
- * @package Smarty
+ * @package Smarty
* @subpackage Compiler
*/
-class Smarty_Internal_Compile_For extends Smarty_Internal_CompileBase {
-
+class Smarty_Internal_Compile_For extends Smarty_Internal_CompileBase
+{
/**
* Compiles code for the {for} tag
- *
- * Smarty 3 does implement two different sytaxes:
- *
+ * Smarty 3 does implement two different syntax's:
* - {for $var in $array}
* For looping over arrays or iterators
- *
* - {for $x=0; $x<$y; $x++}
* For general loops
+ * The parser is generating different sets of attribute by which this compiler can
+ * determine which syntax is used.
*
- * The parser is gereration different sets of attribute by which this compiler can
- * determin which syntax is used.
+ * @param array $args array with attributes from parser
+ * @param object $compiler compiler object
+ * @param array $parameter array with compilation parameter
*
- * @param array $args array with attributes from parser
- * @param object $compiler compiler object
- * @param array $parameter array with compilation parameter
* @return string compiled code
*/
public function compile($args, $compiler, $parameter)
@@ -54,7 +50,7 @@ class Smarty_Internal_Compile_For extends Smarty_Internal_CompileBase {
$output .= " \$_smarty_tpl->tpl_vars[$_statement[var]] = new Smarty_Variable;";
$output .= " \$_smarty_tpl->tpl_vars[$_statement[var]]->value = $_statement[value];\n";
}
- $output .= " if ($_attr[ifexp]){ for (\$_foo=true;$_attr[ifexp]; \$_smarty_tpl->tpl_vars[$_attr[var]]->value$_attr[step]){\n";
+ $output .= " if ($_attr[ifexp]) { for (\$_foo=true;$_attr[ifexp]; \$_smarty_tpl->tpl_vars[$_attr[var]]->value$_attr[step]) {\n";
} else {
$_statement = $_attr['start'];
$output .= "\$_smarty_tpl->tpl_vars[$_statement[var]] = new Smarty_Variable;";
@@ -64,12 +60,12 @@ class Smarty_Internal_Compile_For extends Smarty_Internal_CompileBase {
$output .= "\$_smarty_tpl->tpl_vars[$_statement[var]]->step = 1;";
}
if (isset($_attr['max'])) {
- $output .= "\$_smarty_tpl->tpl_vars[$_statement[var]]->total = (int)min(ceil((\$_smarty_tpl->tpl_vars[$_statement[var]]->step > 0 ? $_attr[to]+1 - ($_statement[value]) : $_statement[value]-($_attr[to])+1)/abs(\$_smarty_tpl->tpl_vars[$_statement[var]]->step)),$_attr[max]);\n";
+ $output .= "\$_smarty_tpl->tpl_vars[$_statement[var]]->total = (int) min(ceil((\$_smarty_tpl->tpl_vars[$_statement[var]]->step > 0 ? $_attr[to]+1 - ($_statement[value]) : $_statement[value]-($_attr[to])+1)/abs(\$_smarty_tpl->tpl_vars[$_statement[var]]->step)),$_attr[max]);\n";
} else {
- $output .= "\$_smarty_tpl->tpl_vars[$_statement[var]]->total = (int)ceil((\$_smarty_tpl->tpl_vars[$_statement[var]]->step > 0 ? $_attr[to]+1 - ($_statement[value]) : $_statement[value]-($_attr[to])+1)/abs(\$_smarty_tpl->tpl_vars[$_statement[var]]->step));\n";
+ $output .= "\$_smarty_tpl->tpl_vars[$_statement[var]]->total = (int) ceil((\$_smarty_tpl->tpl_vars[$_statement[var]]->step > 0 ? $_attr[to]+1 - ($_statement[value]) : $_statement[value]-($_attr[to])+1)/abs(\$_smarty_tpl->tpl_vars[$_statement[var]]->step));\n";
}
- $output .= "if (\$_smarty_tpl->tpl_vars[$_statement[var]]->total > 0){\n";
- $output .= "for (\$_smarty_tpl->tpl_vars[$_statement[var]]->value = $_statement[value], \$_smarty_tpl->tpl_vars[$_statement[var]]->iteration = 1;\$_smarty_tpl->tpl_vars[$_statement[var]]->iteration <= \$_smarty_tpl->tpl_vars[$_statement[var]]->total;\$_smarty_tpl->tpl_vars[$_statement[var]]->value += \$_smarty_tpl->tpl_vars[$_statement[var]]->step, \$_smarty_tpl->tpl_vars[$_statement[var]]->iteration++){\n";
+ $output .= "if (\$_smarty_tpl->tpl_vars[$_statement[var]]->total > 0) {\n";
+ $output .= "for (\$_smarty_tpl->tpl_vars[$_statement[var]]->value = $_statement[value], \$_smarty_tpl->tpl_vars[$_statement[var]]->iteration = 1;\$_smarty_tpl->tpl_vars[$_statement[var]]->iteration <= \$_smarty_tpl->tpl_vars[$_statement[var]]->total;\$_smarty_tpl->tpl_vars[$_statement[var]]->value += \$_smarty_tpl->tpl_vars[$_statement[var]]->step, \$_smarty_tpl->tpl_vars[$_statement[var]]->iteration++) {\n";
$output .= "\$_smarty_tpl->tpl_vars[$_statement[var]]->first = \$_smarty_tpl->tpl_vars[$_statement[var]]->iteration == 1;";
$output .= "\$_smarty_tpl->tpl_vars[$_statement[var]]->last = \$_smarty_tpl->tpl_vars[$_statement[var]]->iteration == \$_smarty_tpl->tpl_vars[$_statement[var]]->total;";
}
@@ -81,51 +77,52 @@ class Smarty_Internal_Compile_For extends Smarty_Internal_CompileBase {
// return compiled code
return $output;
}
-
}
/**
* Smarty Internal Plugin Compile Forelse Class
*
- * @package Smarty
+ * @package Smarty
* @subpackage Compiler
*/
-class Smarty_Internal_Compile_Forelse extends Smarty_Internal_CompileBase {
-
+class Smarty_Internal_Compile_Forelse extends Smarty_Internal_CompileBase
+{
/**
* Compiles code for the {forelse} tag
*
- * @param array $args array with attributes from parser
- * @param object $compiler compiler object
- * @param array $parameter array with compilation parameter
+ * @param array $args array with attributes from parser
+ * @param object $compiler compiler object
+ * @param array $parameter array with compilation parameter
+ *
* @return string compiled code
*/
public function compile($args, $compiler, $parameter)
{
// check and get attributes
- $_attr = $this->getAttributes($compiler, $args);
+ $_attr = $this->getAttributes($compiler, $args);
list($openTag, $nocache) = $this->closeTag($compiler, array('for'));
$this->openTag($compiler, 'forelse', array('forelse', $nocache));
+
return "<?php }} else { ?>";
}
-
}
/**
* Smarty Internal Plugin Compile Forclose Class
*
- * @package Smarty
+ * @package Smarty
* @subpackage Compiler
*/
-class Smarty_Internal_Compile_Forclose extends Smarty_Internal_CompileBase {
-
+class Smarty_Internal_Compile_Forclose extends Smarty_Internal_CompileBase
+{
/**
* Compiles code for the {/for} tag
*
- * @param array $args array with attributes from parser
- * @param object $compiler compiler object
- * @param array $parameter array with compilation parameter
+ * @param array $args array with attributes from parser
+ * @param object $compiler compiler object
+ * @param array $parameter array with compilation parameter
+ *
* @return string compiled code
*/
public function compile($args, $compiler, $parameter)
@@ -145,7 +142,4 @@ class Smarty_Internal_Compile_Forclose extends Smarty_Internal_CompileBase {
return "<?php }} ?>";
}
}
-
}
-
-?> \ No newline at end of file
diff --git a/library/Smarty/libs/sysplugins/smarty_internal_compile_foreach.php b/library/Smarty/libs/sysplugins/smarty_internal_compile_foreach.php
index 1354c89d5..fc77f5749 100644
--- a/library/Smarty/libs/sysplugins/smarty_internal_compile_foreach.php
+++ b/library/Smarty/libs/sysplugins/smarty_internal_compile_foreach.php
@@ -1,21 +1,21 @@
<?php
/**
* Smarty Internal Plugin Compile Foreach
- *
* Compiles the {foreach} {foreachelse} {/foreach} tags
*
- * @package Smarty
+ * @package Smarty
* @subpackage Compiler
- * @author Uwe Tews
+ * @author Uwe Tews
*/
/**
* Smarty Internal Plugin Compile Foreach Class
*
- * @package Smarty
+ * @package Smarty
* @subpackage Compiler
*/
-class Smarty_Internal_Compile_Foreach extends Smarty_Internal_CompileBase {
+class Smarty_Internal_Compile_Foreach extends Smarty_Internal_CompileBase
+{
/**
* Attribute definition: Overwrites base class.
*
@@ -36,19 +36,19 @@ class Smarty_Internal_Compile_Foreach extends Smarty_Internal_CompileBase {
* @var array
* @see Smarty_Internal_CompileBase
*/
- public $shorttag_order = array('from','item','key','name');
+ public $shorttag_order = array('from', 'item', 'key', 'name');
/**
* Compiles code for the {foreach} tag
*
- * @param array $args array with attributes from parser
- * @param object $compiler compiler object
- * @param array $parameter array with compilation parameter
+ * @param array $args array with attributes from parser
+ * @param object $compiler compiler object
+ * @param array $parameter array with compilation parameter
+ *
* @return string compiled code
*/
public function compile($args, $compiler, $parameter)
{
- $tpl = $compiler->template;
// check and get attributes
$_attr = $this->getAttributes($compiler, $args);
@@ -79,12 +79,12 @@ class Smarty_Internal_Compile_Foreach extends Smarty_Internal_CompileBase {
$ItemVarName = '$' . trim($item, '\'"') . '@';
// evaluates which Smarty variables and properties have to be computed
if ($has_name) {
- $usesSmartyFirst = strpos($tpl->source->content, $SmartyVarName . 'first') !== false;
- $usesSmartyLast = strpos($tpl->source->content, $SmartyVarName . 'last') !== false;
- $usesSmartyIndex = strpos($tpl->source->content, $SmartyVarName . 'index') !== false;
- $usesSmartyIteration = strpos($tpl->source->content, $SmartyVarName . 'iteration') !== false;
- $usesSmartyShow = strpos($tpl->source->content, $SmartyVarName . 'show') !== false;
- $usesSmartyTotal = strpos($tpl->source->content, $SmartyVarName . 'total') !== false;
+ $usesSmartyFirst = strpos($compiler->lex->data, $SmartyVarName . 'first') !== false;
+ $usesSmartyLast = strpos($compiler->lex->data, $SmartyVarName . 'last') !== false;
+ $usesSmartyIndex = strpos($compiler->lex->data, $SmartyVarName . 'index') !== false;
+ $usesSmartyIteration = strpos($compiler->lex->data, $SmartyVarName . 'iteration') !== false;
+ $usesSmartyShow = strpos($compiler->lex->data, $SmartyVarName . 'show') !== false;
+ $usesSmartyTotal = strpos($compiler->lex->data, $SmartyVarName . 'total') !== false;
} else {
$usesSmartyFirst = false;
$usesSmartyLast = false;
@@ -92,12 +92,12 @@ class Smarty_Internal_Compile_Foreach extends Smarty_Internal_CompileBase {
$usesSmartyShow = false;
}
- $usesPropFirst = $usesSmartyFirst || strpos($tpl->source->content, $ItemVarName . 'first') !== false;
- $usesPropLast = $usesSmartyLast || strpos($tpl->source->content, $ItemVarName . 'last') !== false;
- $usesPropIndex = $usesPropFirst || strpos($tpl->source->content, $ItemVarName . 'index') !== false;
- $usesPropIteration = $usesPropLast || strpos($tpl->source->content, $ItemVarName . 'iteration') !== false;
- $usesPropShow = strpos($tpl->source->content, $ItemVarName . 'show') !== false;
- $usesPropTotal = $usesSmartyTotal || $usesSmartyShow || $usesPropShow || $usesPropLast || strpos($tpl->source->content, $ItemVarName . 'total') !== false;
+ $usesPropFirst = $usesSmartyFirst || strpos($compiler->lex->data, $ItemVarName . 'first') !== false;
+ $usesPropLast = $usesSmartyLast || strpos($compiler->lex->data, $ItemVarName . 'last') !== false;
+ $usesPropIndex = $usesPropFirst || strpos($compiler->lex->data, $ItemVarName . 'index') !== false;
+ $usesPropIteration = $usesPropLast || strpos($compiler->lex->data, $ItemVarName . 'iteration') !== false;
+ $usesPropShow = strpos($compiler->lex->data, $ItemVarName . 'show') !== false;
+ $usesPropTotal = $usesSmartyTotal || $usesSmartyShow || $usesPropShow || $usesPropLast || strpos($compiler->lex->data, $ItemVarName . 'total') !== false;
// generate output code
$output = "<?php ";
$output .= " \$_smarty_tpl->tpl_vars[$item] = new Smarty_Variable; \$_smarty_tpl->tpl_vars[$item]->_loop = false;\n";
@@ -131,7 +131,7 @@ class Smarty_Internal_Compile_Foreach extends Smarty_Internal_CompileBase {
$output .= " \$_smarty_tpl->tpl_vars['smarty']->value['foreach'][$name]['show']=(\$_smarty_tpl->tpl_vars[$item]->total > 0);\n";
}
}
- $output .= "foreach (\$_from as \$_smarty_tpl->tpl_vars[$item]->key => \$_smarty_tpl->tpl_vars[$item]->value){\n\$_smarty_tpl->tpl_vars[$item]->_loop = true;\n";
+ $output .= "foreach (\$_from as \$_smarty_tpl->tpl_vars[$item]->key => \$_smarty_tpl->tpl_vars[$item]->value) {\n\$_smarty_tpl->tpl_vars[$item]->_loop = true;\n";
if ($key != null) {
$output .= " \$_smarty_tpl->tpl_vars[$key]->value = \$_smarty_tpl->tpl_vars[$item]->key;\n";
}
@@ -170,17 +170,18 @@ class Smarty_Internal_Compile_Foreach extends Smarty_Internal_CompileBase {
/**
* Smarty Internal Plugin Compile Foreachelse Class
*
- * @package Smarty
+ * @package Smarty
* @subpackage Compiler
*/
-class Smarty_Internal_Compile_Foreachelse extends Smarty_Internal_CompileBase {
-
+class Smarty_Internal_Compile_Foreachelse extends Smarty_Internal_CompileBase
+{
/**
* Compiles code for the {foreachelse} tag
*
- * @param array $args array with attributes from parser
- * @param object $compiler compiler object
- * @param array $parameter array with compilation parameter
+ * @param array $args array with attributes from parser
+ * @param object $compiler compiler object
+ * @param array $parameter array with compilation parameter
+ *
* @return string compiled code
*/
public function compile($args, $compiler, $parameter)
@@ -193,23 +194,23 @@ class Smarty_Internal_Compile_Foreachelse extends Smarty_Internal_CompileBase {
return "<?php }\nif (!\$_smarty_tpl->tpl_vars[$item]->_loop) {\n?>";
}
-
}
/**
* Smarty Internal Plugin Compile Foreachclose Class
*
- * @package Smarty
+ * @package Smarty
* @subpackage Compiler
*/
-class Smarty_Internal_Compile_Foreachclose extends Smarty_Internal_CompileBase {
-
+class Smarty_Internal_Compile_Foreachclose extends Smarty_Internal_CompileBase
+{
/**
* Compiles code for the {/foreach} tag
*
- * @param array $args array with attributes from parser
- * @param object $compiler compiler object
- * @param array $parameter array with compilation parameter
+ * @param array $args array with attributes from parser
+ * @param object $compiler compiler object
+ * @param array $parameter array with compilation parameter
+ *
* @return string compiled code
*/
public function compile($args, $compiler, $parameter)
@@ -225,7 +226,4 @@ class Smarty_Internal_Compile_Foreachclose extends Smarty_Internal_CompileBase {
return "<?php } ?>";
}
-
}
-
-?> \ No newline at end of file
diff --git a/library/Smarty/libs/sysplugins/smarty_internal_compile_function.php b/library/Smarty/libs/sysplugins/smarty_internal_compile_function.php
index 876b13dee..298eb16f2 100644
--- a/library/Smarty/libs/sysplugins/smarty_internal_compile_function.php
+++ b/library/Smarty/libs/sysplugins/smarty_internal_compile_function.php
@@ -1,22 +1,21 @@
<?php
/**
* Smarty Internal Plugin Compile Function
- *
* Compiles the {function} {/function} tags
*
- * @package Smarty
+ * @package Smarty
* @subpackage Compiler
- * @author Uwe Tews
+ * @author Uwe Tews
*/
/**
* Smarty Internal Plugin Compile Function Class
*
- * @package Smarty
+ * @package Smarty
* @subpackage Compiler
*/
-class Smarty_Internal_Compile_Function extends Smarty_Internal_CompileBase {
-
+class Smarty_Internal_Compile_Function extends Smarty_Internal_CompileBase
+{
/**
* Attribute definition: Overwrites base class.
*
@@ -42,9 +41,10 @@ class Smarty_Internal_Compile_Function extends Smarty_Internal_CompileBase {
/**
* Compiles code for the {function} tag
*
- * @param array $args array with attributes from parser
- * @param object $compiler compiler object
- * @param array $parameter array with compilation parameter
+ * @param array $args array with attributes from parser
+ * @param object $compiler compiler object
+ * @param array $parameter array with compilation parameter
+ *
* @return boolean true
*/
public function compile($args, $compiler, $parameter)
@@ -57,16 +57,19 @@ class Smarty_Internal_Compile_Function extends Smarty_Internal_CompileBase {
}
unset($_attr['nocache']);
$save = array($_attr, $compiler->parser->current_buffer,
- $compiler->template->has_nocache_code, $compiler->template->required_plugins);
+ $compiler->template->has_nocache_code, $compiler->template->required_plugins);
$this->openTag($compiler, 'function', $save);
$_name = trim($_attr['name'], "'\"");
unset($_attr['name']);
// set flag that we are compiling a template function
$compiler->compiles_template_function = true;
$compiler->template->properties['function'][$_name]['parameter'] = array();
+ /** @var Smarty_Internal_Template $_smarty_tpl
+ * used in evaluated code
+ */
$_smarty_tpl = $compiler->template;
foreach ($_attr as $_key => $_data) {
- eval ('$tmp='.$_data.';');
+ eval ('$tmp=' . $_data . ';');
$compiler->template->properties['function'][$_name]['parameter'][$_key] = $tmp;
}
$compiler->smarty->template_functions[$_name]['parameter'] = $compiler->template->properties['function'][$_name]['parameter'];
@@ -79,7 +82,7 @@ class Smarty_Internal_Compile_Function extends Smarty_Internal_CompileBase {
foreach (\$_smarty_tpl->smarty->template_functions['{$_name}']['parameter'] as \$key => \$value) {\$_smarty_tpl->tpl_vars[\$key] = new Smarty_variable(\$value);};
foreach (\$params as \$key => \$value) {\$_smarty_tpl->tpl_vars[\$key] = new Smarty_variable(\$value);}?>";
}
- // Init temporay context
+ // Init temporary context
$compiler->template->required_plugins = array('compiled' => array(), 'nocache' => array());
$compiler->parser->current_buffer = new _smarty_template_buffer($compiler->parser);
$compiler->parser->current_buffer->append_subtree(new _smarty_tag($compiler->parser, $output));
@@ -88,23 +91,23 @@ class Smarty_Internal_Compile_Function extends Smarty_Internal_CompileBase {
$compiler->template->properties['function'][$_name]['compiled'] = '';
return true;
}
-
}
/**
* Smarty Internal Plugin Compile Functionclose Class
*
- * @package Smarty
+ * @package Smarty
* @subpackage Compiler
*/
-class Smarty_Internal_Compile_Functionclose extends Smarty_Internal_CompileBase {
-
+class Smarty_Internal_Compile_Functionclose extends Smarty_Internal_CompileBase
+{
/**
* Compiles code for the {/function} tag
*
- * @param array $args array with attributes from parser
- * @param object $compiler compiler object
- * @param array $parameter array with compilation parameter
+ * @param array $args array with attributes from parser
+ * @param object $compiler compiler object
+ * @param array $parameter array with compilation parameter
+ *
* @return boolean true
*/
public function compile($args, $compiler, $parameter)
@@ -116,8 +119,8 @@ class Smarty_Internal_Compile_Functionclose extends Smarty_Internal_CompileBase
$plugins_string = '';
if (!empty($compiler->template->required_plugins['compiled'])) {
$plugins_string = '<?php ';
- foreach($compiler->template->required_plugins['compiled'] as $tmp) {
- foreach($tmp as $data) {
+ foreach ($compiler->template->required_plugins['compiled'] as $tmp) {
+ foreach ($tmp as $data) {
$plugins_string .= "if (!is_callable('{$data['function']}')) include '{$data['file']}';\n";
}
}
@@ -125,22 +128,17 @@ class Smarty_Internal_Compile_Functionclose extends Smarty_Internal_CompileBase
}
if (!empty($compiler->template->required_plugins['nocache'])) {
$plugins_string .= "<?php echo '/*%%SmartyNocache:{$compiler->template->properties['nocache_hash']}%%*/<?php ";
- foreach($compiler->template->required_plugins['nocache'] as $tmp) {
- foreach($tmp as $data) {
+ foreach ($compiler->template->required_plugins['nocache'] as $tmp) {
+ foreach ($tmp as $data) {
$plugins_string .= "if (!is_callable(\'{$data['function']}\')) include \'{$data['file']}\';\n";
}
}
$plugins_string .= "?>/*/%%SmartyNocache:{$compiler->template->properties['nocache_hash']}%%*/';?>\n";
}
- // remove last line break from function definition
- $last = count($compiler->parser->current_buffer->subtrees) - 1;
- if ($compiler->parser->current_buffer->subtrees[$last] instanceof _smarty_linebreak) {
- unset($compiler->parser->current_buffer->subtrees[$last]);
- }
- // if caching save template function for possible nocache call
+ // if caching save template function for possible nocache call
if ($compiler->template->caching) {
$compiler->template->properties['function'][$_name]['compiled'] .= $plugins_string
- . $compiler->parser->current_buffer->to_smarty_php();
+ . $compiler->parser->current_buffer->to_smarty_php();
$compiler->template->properties['function'][$_name]['nocache_hash'] = $compiler->template->properties['nocache_hash'];
$compiler->template->properties['function'][$_name]['has_nocache_code'] = $compiler->template->has_nocache_code;
$compiler->template->properties['function'][$_name]['called_functions'] = $compiler->called_functions;
@@ -149,7 +147,8 @@ class Smarty_Internal_Compile_Functionclose extends Smarty_Internal_CompileBase
$compiler->has_code = false;
$output = true;
} else {
- $output = $plugins_string . $compiler->parser->current_buffer->to_smarty_php() . "<?php \$_smarty_tpl->tpl_vars = \$saved_tpl_vars;}}?>\n";
+ $output = $plugins_string . $compiler->parser->current_buffer->to_smarty_php() . "<?php \$_smarty_tpl->tpl_vars = \$saved_tpl_vars;
+foreach (Smarty::\$global_tpl_vars as \$key => \$value) if(!isset(\$_smarty_tpl->tpl_vars[\$key])) \$_smarty_tpl->tpl_vars[\$key] = \$value;}}?>\n";
}
// reset flag that we are compiling a template function
$compiler->compiles_template_function = false;
@@ -157,9 +156,7 @@ class Smarty_Internal_Compile_Functionclose extends Smarty_Internal_CompileBase
$compiler->parser->current_buffer = $saved_data[1];
$compiler->template->has_nocache_code = $compiler->template->has_nocache_code | $saved_data[2];
$compiler->template->required_plugins = $saved_data[3];
+
return $output;
}
-
}
-
-?> \ No newline at end of file
diff --git a/library/Smarty/libs/sysplugins/smarty_internal_compile_if.php b/library/Smarty/libs/sysplugins/smarty_internal_compile_if.php
index 8794b014b..d709fcfd8 100644
--- a/library/Smarty/libs/sysplugins/smarty_internal_compile_if.php
+++ b/library/Smarty/libs/sysplugins/smarty_internal_compile_if.php
@@ -1,30 +1,30 @@
<?php
/**
-* Smarty Internal Plugin Compile If
-*
-* Compiles the {if} {else} {elseif} {/if} tags
-*
-* @package Smarty
-* @subpackage Compiler
-* @author Uwe Tews
-*/
+ * Smarty Internal Plugin Compile If
+ * Compiles the {if} {else} {elseif} {/if} tags
+ *
+ * @package Smarty
+ * @subpackage Compiler
+ * @author Uwe Tews
+ */
/**
-* Smarty Internal Plugin Compile If Class
-*
-* @package Smarty
-* @subpackage Compiler
-*/
-class Smarty_Internal_Compile_If extends Smarty_Internal_CompileBase {
-
+ * Smarty Internal Plugin Compile If Class
+ *
+ * @package Smarty
+ * @subpackage Compiler
+ */
+class Smarty_Internal_Compile_If extends Smarty_Internal_CompileBase
+{
/**
- * Compiles code for the {if} tag
- *
- * @param array $args array with attributes from parser
- * @param object $compiler compiler object
- * @param array $parameter array with compilation parameter
- * @return string compiled code
- */
+ * Compiles code for the {if} tag
+ *
+ * @param array $args array with attributes from parser
+ * @param object $compiler compiler object
+ * @param array $parameter array with compilation parameter
+ *
+ * @return string compiled code
+ */
public function compile($args, $compiler, $parameter)
{
// check and get attributes
@@ -33,7 +33,7 @@ class Smarty_Internal_Compile_If extends Smarty_Internal_CompileBase {
// must whole block be nocache ?
$compiler->nocache = $compiler->nocache | $compiler->tag_nocache;
- if (!array_key_exists("if condition",$parameter)) {
+ if (!array_key_exists("if condition", $parameter)) {
$compiler->trigger_template_error("missing if condition", $compiler->lex->taglineno);
}
@@ -50,62 +50,63 @@ class Smarty_Internal_Compile_If extends Smarty_Internal_CompileBase {
$_nocache = '';
}
if (is_array($parameter['if condition']['var'])) {
- $_output = "<?php if (!isset(\$_smarty_tpl->tpl_vars[".$parameter['if condition']['var']['var']."]) || !is_array(\$_smarty_tpl->tpl_vars[".$parameter['if condition']['var']['var']."]->value)) \$_smarty_tpl->createLocalArrayVariable(".$parameter['if condition']['var']['var']."$_nocache);\n";
- $_output .= "if (\$_smarty_tpl->tpl_vars[".$parameter['if condition']['var']['var']."]->value".$parameter['if condition']['var']['smarty_internal_index']." = ".$parameter['if condition']['value']."){?>";
+ $_output = "<?php if (!isset(\$_smarty_tpl->tpl_vars[" . $parameter['if condition']['var']['var'] . "]) || !is_array(\$_smarty_tpl->tpl_vars[" . $parameter['if condition']['var']['var'] . "]->value)) \$_smarty_tpl->createLocalArrayVariable(" . $parameter['if condition']['var']['var'] . "$_nocache);\n";
+ $_output .= "if (\$_smarty_tpl->tpl_vars[" . $parameter['if condition']['var']['var'] . "]->value" . $parameter['if condition']['var']['smarty_internal_index'] . " = " . $parameter['if condition']['value'] . ") {?>";
} else {
- $_output = "<?php if (!isset(\$_smarty_tpl->tpl_vars[".$parameter['if condition']['var']."])) \$_smarty_tpl->tpl_vars[".$parameter['if condition']['var']."] = new Smarty_Variable(null{$_nocache});";
- $_output .= "if (\$_smarty_tpl->tpl_vars[".$parameter['if condition']['var']."]->value = ".$parameter['if condition']['value']."){?>";
+ $_output = "<?php if (!isset(\$_smarty_tpl->tpl_vars[" . $parameter['if condition']['var'] . "])) \$_smarty_tpl->tpl_vars[" . $parameter['if condition']['var'] . "] = new Smarty_Variable(null{$_nocache});";
+ $_output .= "if (\$_smarty_tpl->tpl_vars[" . $parameter['if condition']['var'] . "]->value = " . $parameter['if condition']['value'] . ") {?>";
}
+
return $_output;
} else {
- return "<?php if ({$parameter['if condition']}){?>";
+ return "<?php if ({$parameter['if condition']}) {?>";
}
}
-
}
/**
-* Smarty Internal Plugin Compile Else Class
-*
-* @package Smarty
-* @subpackage Compiler
-*/
-class Smarty_Internal_Compile_Else extends Smarty_Internal_CompileBase {
-
+ * Smarty Internal Plugin Compile Else Class
+ *
+ * @package Smarty
+ * @subpackage Compiler
+ */
+class Smarty_Internal_Compile_Else extends Smarty_Internal_CompileBase
+{
/**
- * Compiles code for the {else} tag
- *
- * @param array $args array with attributes from parser
- * @param object $compiler compiler object
- * @param array $parameter array with compilation parameter
- * @return string compiled code
- */
+ * Compiles code for the {else} tag
+ *
+ * @param array $args array with attributes from parser
+ * @param object $compiler compiler object
+ * @param array $parameter array with compilation parameter
+ *
+ * @return string compiled code
+ */
public function compile($args, $compiler, $parameter)
{
list($nesting, $compiler->tag_nocache) = $this->closeTag($compiler, array('if', 'elseif'));
$this->openTag($compiler, 'else', array($nesting, $compiler->tag_nocache));
- return "<?php }else{ ?>";
+ return "<?php } else { ?>";
}
-
}
/**
-* Smarty Internal Plugin Compile ElseIf Class
-*
-* @package Smarty
-* @subpackage Compiler
-*/
-class Smarty_Internal_Compile_Elseif extends Smarty_Internal_CompileBase {
-
+ * Smarty Internal Plugin Compile ElseIf Class
+ *
+ * @package Smarty
+ * @subpackage Compiler
+ */
+class Smarty_Internal_Compile_Elseif extends Smarty_Internal_CompileBase
+{
/**
- * Compiles code for the {elseif} tag
- *
- * @param array $args array with attributes from parser
- * @param object $compiler compiler object
- * @param array $parameter array with compilation parameter
- * @return string compiled code
- */
+ * Compiles code for the {elseif} tag
+ *
+ * @param array $args array with attributes from parser
+ * @param object $compiler compiler object
+ * @param array $parameter array with compilation parameter
+ *
+ * @return string compiled code
+ */
public function compile($args, $compiler, $parameter)
{
// check and get attributes
@@ -113,7 +114,7 @@ class Smarty_Internal_Compile_Elseif extends Smarty_Internal_CompileBase {
list($nesting, $compiler->tag_nocache) = $this->closeTag($compiler, array('if', 'elseif'));
- if (!array_key_exists("if condition",$parameter)) {
+ if (!array_key_exists("if condition", $parameter)) {
$compiler->trigger_template_error("missing elseif condition", $compiler->lex->taglineno);
}
@@ -138,56 +139,60 @@ class Smarty_Internal_Compile_Elseif extends Smarty_Internal_CompileBase {
if ($condition_by_assign) {
$this->openTag($compiler, 'elseif', array($nesting + 1, $compiler->tag_nocache));
if (is_array($parameter['if condition']['var'])) {
- $_output = "<?php }else{ if (!isset(\$_smarty_tpl->tpl_vars[" . $parameter['if condition']['var']['var'] . "]) || !is_array(\$_smarty_tpl->tpl_vars[" . $parameter['if condition']['var']['var'] . "]->value)) \$_smarty_tpl->createLocalArrayVariable(" . $parameter['if condition']['var']['var'] . "$_nocache);\n";
- $_output .= "if (\$_smarty_tpl->tpl_vars[" . $parameter['if condition']['var']['var'] . "]->value" . $parameter['if condition']['var']['smarty_internal_index'] . " = " . $parameter['if condition']['value'] . "){?>";
+ $_output = "<?php } else { if (!isset(\$_smarty_tpl->tpl_vars[" . $parameter['if condition']['var']['var'] . "]) || !is_array(\$_smarty_tpl->tpl_vars[" . $parameter['if condition']['var']['var'] . "]->value)) \$_smarty_tpl->createLocalArrayVariable(" . $parameter['if condition']['var']['var'] . "$_nocache);\n";
+ $_output .= "if (\$_smarty_tpl->tpl_vars[" . $parameter['if condition']['var']['var'] . "]->value" . $parameter['if condition']['var']['smarty_internal_index'] . " = " . $parameter['if condition']['value'] . ") {?>";
} else {
- $_output = "<?php }else{ if (!isset(\$_smarty_tpl->tpl_vars[" . $parameter['if condition']['var'] . "])) \$_smarty_tpl->tpl_vars[" . $parameter['if condition']['var'] . "] = new Smarty_Variable(null{$_nocache});";
- $_output .= "if (\$_smarty_tpl->tpl_vars[" . $parameter['if condition']['var'] . "]->value = " . $parameter['if condition']['value'] . "){?>";
+ $_output = "<?php } else { if (!isset(\$_smarty_tpl->tpl_vars[" . $parameter['if condition']['var'] . "])) \$_smarty_tpl->tpl_vars[" . $parameter['if condition']['var'] . "] = new Smarty_Variable(null{$_nocache});";
+ $_output .= "if (\$_smarty_tpl->tpl_vars[" . $parameter['if condition']['var'] . "]->value = " . $parameter['if condition']['value'] . ") {?>";
}
+
return $_output;
} else {
$this->openTag($compiler, 'elseif', array($nesting, $compiler->tag_nocache));
- return "<?php }elseif({$parameter['if condition']}){?>";
+
+ return "<?php } elseif ({$parameter['if condition']}) {?>";
}
} else {
$tmp = '';
- foreach ($compiler->prefix_code as $code)
- $tmp .= $code;
+ foreach ($compiler->prefix_code as $code) {
+ $tmp .= $code;
+ }
$compiler->prefix_code = array();
$this->openTag($compiler, 'elseif', array($nesting + 1, $compiler->tag_nocache));
if ($condition_by_assign) {
if (is_array($parameter['if condition']['var'])) {
- $_output = "<?php }else{?>{$tmp}<?php if (!isset(\$_smarty_tpl->tpl_vars[" . $parameter['if condition']['var']['var'] . "]) || !is_array(\$_smarty_tpl->tpl_vars[" . $parameter['if condition']['var']['var'] . "]->value)) \$_smarty_tpl->createLocalArrayVariable(" . $parameter['if condition']['var']['var'] . "$_nocache);\n";
- $_output .= "if (\$_smarty_tpl->tpl_vars[" . $parameter['if condition']['var']['var'] . "]->value" . $parameter['if condition']['var']['smarty_internal_index'] . " = " . $parameter['if condition']['value'] . "){?>";
+ $_output = "<?php } else {?>{$tmp}<?php if (!isset(\$_smarty_tpl->tpl_vars[" . $parameter['if condition']['var']['var'] . "]) || !is_array(\$_smarty_tpl->tpl_vars[" . $parameter['if condition']['var']['var'] . "]->value)) \$_smarty_tpl->createLocalArrayVariable(" . $parameter['if condition']['var']['var'] . "$_nocache);\n";
+ $_output .= "if (\$_smarty_tpl->tpl_vars[" . $parameter['if condition']['var']['var'] . "]->value" . $parameter['if condition']['var']['smarty_internal_index'] . " = " . $parameter['if condition']['value'] . ") {?>";
} else {
- $_output = "<?php }else{?>{$tmp}<?php if (!isset(\$_smarty_tpl->tpl_vars[" . $parameter['if condition']['var'] . "])) \$_smarty_tpl->tpl_vars[" . $parameter['if condition']['var'] . "] = new Smarty_Variable(null{$_nocache});";
- $_output .= "if (\$_smarty_tpl->tpl_vars[" . $parameter['if condition']['var'] . "]->value = " . $parameter['if condition']['value'] . "){?>";
+ $_output = "<?php } else {?>{$tmp}<?php if (!isset(\$_smarty_tpl->tpl_vars[" . $parameter['if condition']['var'] . "])) \$_smarty_tpl->tpl_vars[" . $parameter['if condition']['var'] . "] = new Smarty_Variable(null{$_nocache});";
+ $_output .= "if (\$_smarty_tpl->tpl_vars[" . $parameter['if condition']['var'] . "]->value = " . $parameter['if condition']['value'] . ") {?>";
}
+
return $_output;
} else {
- return "<?php }else{?>{$tmp}<?php if ({$parameter['if condition']}){?>";
+ return "<?php } else {?>{$tmp}<?php if ({$parameter['if condition']}) {?>";
}
}
}
-
}
/**
-* Smarty Internal Plugin Compile Ifclose Class
-*
-* @package Smarty
-* @subpackage Compiler
-*/
-class Smarty_Internal_Compile_Ifclose extends Smarty_Internal_CompileBase {
-
+ * Smarty Internal Plugin Compile Ifclose Class
+ *
+ * @package Smarty
+ * @subpackage Compiler
+ */
+class Smarty_Internal_Compile_Ifclose extends Smarty_Internal_CompileBase
+{
/**
- * Compiles code for the {/if} tag
- *
- * @param array $args array with attributes from parser
- * @param object $compiler compiler object
- * @param array $parameter array with compilation parameter
- * @return string compiled code
- */
+ * Compiles code for the {/if} tag
+ *
+ * @param array $args array with attributes from parser
+ * @param object $compiler compiler object
+ * @param array $parameter array with compilation parameter
+ *
+ * @return string compiled code
+ */
public function compile($args, $compiler, $parameter)
{
// must endblock be nocache?
@@ -196,12 +201,10 @@ class Smarty_Internal_Compile_Ifclose extends Smarty_Internal_CompileBase {
}
list($nesting, $compiler->nocache) = $this->closeTag($compiler, array('if', 'else', 'elseif'));
$tmp = '';
- for ($i = 0; $i < $nesting; $i++) {
+ for ($i = 0; $i < $nesting; $i ++) {
$tmp .= '}';
}
+
return "<?php {$tmp}?>";
}
-
}
-
-?> \ No newline at end of file
diff --git a/library/Smarty/libs/sysplugins/smarty_internal_compile_include.php b/library/Smarty/libs/sysplugins/smarty_internal_compile_include.php
index 43a144f94..4b7b09ce7 100644
--- a/library/Smarty/libs/sysplugins/smarty_internal_compile_include.php
+++ b/library/Smarty/libs/sysplugins/smarty_internal_compile_include.php
@@ -1,72 +1,72 @@
<?php
/**
-* Smarty Internal Plugin Compile Include
-*
-* Compiles the {include} tag
-*
-* @package Smarty
-* @subpackage Compiler
-* @author Uwe Tews
-*/
+ * Smarty Internal Plugin Compile Include
+ * Compiles the {include} tag
+ *
+ * @package Smarty
+ * @subpackage Compiler
+ * @author Uwe Tews
+ */
/**
-* Smarty Internal Plugin Compile Include Class
-*
-* @package Smarty
-* @subpackage Compiler
-*/
-class Smarty_Internal_Compile_Include extends Smarty_Internal_CompileBase {
-
+ * Smarty Internal Plugin Compile Include Class
+ *
+ * @package Smarty
+ * @subpackage Compiler
+ */
+class Smarty_Internal_Compile_Include extends Smarty_Internal_CompileBase
+{
/**
- * caching mode to create nocache code but no cache file
- */
+ * caching mode to create nocache code but no cache file
+ */
const CACHING_NOCACHE_CODE = 9999;
/**
- * Attribute definition: Overwrites base class.
- *
- * @var array
- * @see Smarty_Internal_CompileBase
- */
+ * Attribute definition: Overwrites base class.
+ *
+ * @var array
+ * @see Smarty_Internal_CompileBase
+ */
public $required_attributes = array('file');
/**
- * Attribute definition: Overwrites base class.
- *
- * @var array
- * @see Smarty_Internal_CompileBase
- */
+ * Attribute definition: Overwrites base class.
+ *
+ * @var array
+ * @see Smarty_Internal_CompileBase
+ */
public $shorttag_order = array('file');
/**
- * Attribute definition: Overwrites base class.
- *
- * @var array
- * @see Smarty_Internal_CompileBase
- */
+ * Attribute definition: Overwrites base class.
+ *
+ * @var array
+ * @see Smarty_Internal_CompileBase
+ */
public $option_flags = array('nocache', 'inline', 'caching');
/**
- * Attribute definition: Overwrites base class.
- *
- * @var array
- * @see Smarty_Internal_CompileBase
- */
+ * Attribute definition: Overwrites base class.
+ *
+ * @var array
+ * @see Smarty_Internal_CompileBase
+ */
public $optional_attributes = array('_any');
/**
- * Compiles code for the {include} tag
- *
- * @param array $args array with attributes from parser
- * @param object $compiler compiler object
- * @param array $parameter array with compilation parameter
+ * Compiles code for the {include} tag
+ *
+ * @param array $args array with attributes from parser
+ * @param object $compiler compiler object
+ * @param array $parameter array with compilation parameter
+ *
* @return string compiled code
*/
public function compile($args, $compiler, $parameter)
{
// check and get attributes
$_attr = $this->getAttributes($compiler, $args);
- // save posible attributes
+ // save possible attributes
$include_file = $_attr['file'];
if (isset($_attr['assign'])) {
- // output will be stored in a smarty variable instead of beind displayed
+ // output will be stored in a smarty variable instead of being displayed
$_assign = $_attr['assign'];
}
@@ -81,12 +81,15 @@ class Smarty_Internal_Compile_Include extends Smarty_Internal_CompileBase {
$_parent_scope = Smarty::SCOPE_GLOBAL;
}
}
- $_caching = 'null';
- if ($compiler->nocache || $compiler->tag_nocache) {
- $_caching = Smarty::CACHING_OFF;
- }
- // default for included templates
- if ($compiler->template->caching && !$compiler->nocache && !$compiler->tag_nocache) {
+
+ $_caching = Smarty::CACHING_OFF;
+
+ // flag if included template code should be merged into caller
+ $merge_compiled_includes = ($compiler->smarty->merge_compiled_includes || ($compiler->inheritance && $compiler->smarty->inheritance_merge_compiled_includes) || $_attr['inline'] === true) && !$compiler->template->source->recompiled;
+
+ // set default when in nocache mode
+ // if ($compiler->template->caching && ($compiler->nocache || $compiler->tag_nocache || $compiler->forceNocache == 2)) {
+ if ($compiler->template->caching && ((!$compiler->inheritance && !$compiler->nocache && !$compiler->tag_nocache) || ($compiler->inheritance && ($compiler->nocache || $compiler->tag_nocache)))) {
$_caching = self::CACHING_NOCACHE_CODE;
}
/*
@@ -118,52 +121,93 @@ class Smarty_Internal_Compile_Include extends Smarty_Internal_CompileBase {
}
if ($_attr['nocache'] === true) {
$compiler->tag_nocache = true;
- $_caching = Smarty::CACHING_OFF;
+ if ($merge_compiled_includes) {
+ $_caching = self::CACHING_NOCACHE_CODE;
+ } else {
+ $_caching = Smarty::CACHING_OFF;
+ }
}
$has_compiled_template = false;
- if (($compiler->smarty->merge_compiled_includes || $_attr['inline'] === true) && !$compiler->template->source->recompiled
- && !($compiler->template->caching && ($compiler->tag_nocache || $compiler->nocache)) && $_caching != Smarty::CACHING_LIFETIME_CURRENT) {
- // check if compiled code can be merged (contains no variable part)
- if (!$compiler->has_variable_string && (substr_count($include_file, '"') == 2 or substr_count($include_file, "'") == 2)
- and substr_count($include_file, '(') == 0 and substr_count($include_file, '$_smarty_tpl->') == 0) {
- $tpl_name = null;
- eval("\$tpl_name = $include_file;");
- if (!isset($compiler->smarty->merged_templates_func[$tpl_name]) || $compiler->inheritance) {
- $tpl = new $compiler->smarty->template_class ($tpl_name, $compiler->smarty, $compiler->template, $compiler->template->cache_id, $compiler->template->compile_id);
- // save unique function name
- $compiler->smarty->merged_templates_func[$tpl_name]['func'] = $tpl->properties['unifunc'] = 'content_'. str_replace('.', '_', uniqid('', true));
- // use current nocache hash for inlined code
- $compiler->smarty->merged_templates_func[$tpl_name]['nocache_hash'] = $tpl->properties['nocache_hash'] = $compiler->template->properties['nocache_hash'];
- if ($compiler->template->caching) {
- // needs code for cached page but no cache file
- $tpl->caching = self::CACHING_NOCACHE_CODE;
+ if ($merge_compiled_includes && $_attr['inline'] !== true) {
+ // variable template name ?
+ if ($compiler->has_variable_string || !((substr_count($include_file, '"') == 2 || substr_count($include_file, "'") == 2))
+ || substr_count($include_file, '(') != 0 || substr_count($include_file, '$_smarty_tpl->') != 0
+ ) {
+ $merge_compiled_includes = false;
+ if ($compiler->inheritance && $compiler->smarty->inheritance_merge_compiled_includes) {
+ $compiler->trigger_template_error(' variable template file names not allow within {block} tags');
+ }
+ }
+ // variable compile_id?
+ if (isset($_attr['compile_id'])) {
+ if (!((substr_count($_attr['compile_id'], '"') == 2 || substr_count($_attr['compile_id'], "'") == 2))
+ || substr_count($_attr['compile_id'], '(') != 0 || substr_count($_attr['compile_id'], '$_smarty_tpl->') != 0
+ ) {
+ $merge_compiled_includes = false;
+ if ($compiler->inheritance && $compiler->smarty->inheritance_merge_compiled_includes) {
+ $compiler->trigger_template_error(' variable compile_id not allow within {block} tags');
}
- // make sure whole chain gest compiled
- $tpl->mustCompile = true;
- if (!($tpl->source->uncompiled) && $tpl->source->exists) {
- // get compiled code
- $compiled_code = $tpl->compiler->compileTemplate($tpl);
- // release compiler object to free memory
- unset($tpl->compiler);
- // merge compiled code for {function} tags
- $compiler->template->properties['function'] = array_merge($compiler->template->properties['function'], $tpl->properties['function']);
- // merge filedependency
- $tpl->properties['file_dependency'][$tpl->source->uid] = array($tpl->source->filepath, $tpl->source->timestamp,$tpl->source->type);
- $compiler->template->properties['file_dependency'] = array_merge($compiler->template->properties['file_dependency'], $tpl->properties['file_dependency']);
- // remove header code
- $compiled_code = preg_replace("/(<\?php \/\*%%SmartyHeaderCode:{$tpl->properties['nocache_hash']}%%\*\/(.+?)\/\*\/%%SmartyHeaderCode%%\*\/\?>\n)/s", '', $compiled_code);
- if ($tpl->has_nocache_code) {
- // replace nocache_hash
- $compiled_code = str_replace("{$tpl->properties['nocache_hash']}", $compiler->template->properties['nocache_hash'], $compiled_code);
- $compiler->template->has_nocache_code = true;
- }
- $compiler->merged_templates[$tpl->properties['unifunc']] = $compiled_code;
- $has_compiled_template = true;
+ }
+ }
+ }
+ if ($merge_compiled_includes) {
+ if ($compiler->template->caching && ($compiler->tag_nocache || $compiler->nocache) && $_caching != self::CACHING_NOCACHE_CODE) {
+ $merge_compiled_includes = false;
+ if ($compiler->inheritance && $compiler->smarty->inheritance_merge_compiled_includes) {
+ $compiler->trigger_template_error(' invalid caching mode of subtemplate within {block} tags');
+ }
+ }
+ }
+ if ($merge_compiled_includes) {
+ // we must observe different compile_id
+ $uid = sha1($_compile_id);
+ $tpl_name = null;
+ $nocache = false;
+ /** @var Smarty_Internal_Template $_smarty_tpl
+ * used in evaluated code
+ */
+ $_smarty_tpl = $compiler->template;
+ eval("\$tpl_name = $include_file;");
+ if (!isset($compiler->smarty->merged_templates_func[$tpl_name][$uid])) {
+ $tpl = new $compiler->smarty->template_class ($tpl_name, $compiler->smarty, $compiler->template, $compiler->template->cache_id, $compiler->template->compile_id);
+ // save unique function name
+ $compiler->smarty->merged_templates_func[$tpl_name][$uid]['func'] = $tpl->properties['unifunc'] = 'content_' . str_replace(array('.', ','), '_', uniqid('', true));
+ // use current nocache hash for inlined code
+ $compiler->smarty->merged_templates_func[$tpl_name][$uid]['nocache_hash'] = $tpl->properties['nocache_hash'] = $compiler->template->properties['nocache_hash'];
+ if ($compiler->template->caching && $_caching == self::CACHING_NOCACHE_CODE) {
+ // all code must be nocache
+ $nocache = true;
+ }
+ if ($compiler->inheritance) {
+ $tpl->compiler->inheritance = true;
+ }
+ // make sure whole chain gets compiled
+ $tpl->mustCompile = true;
+ if (!($tpl->source->uncompiled) && $tpl->source->exists) {
+
+ // get compiled code
+ $compiled_code = $tpl->compiler->compileTemplate($tpl, $nocache);
+ // release compiler object to free memory
+ unset($tpl->compiler);
+ // merge compiled code for {function} tags
+ $compiler->template->properties['function'] = array_merge($compiler->template->properties['function'], $tpl->properties['function']);
+ // merge filedependency
+ $tpl->properties['file_dependency'][$tpl->source->uid] = array($tpl->source->filepath, $tpl->source->timestamp, $tpl->source->type);
+ $compiler->template->properties['file_dependency'] = array_merge($compiler->template->properties['file_dependency'], $tpl->properties['file_dependency']);
+ // remove header code
+ $compiled_code = preg_replace("/(<\?php \/\*%%SmartyHeaderCode:{$tpl->properties['nocache_hash']}%%\*\/(.+?)\/\*\/%%SmartyHeaderCode%%\*\/\?>\n)/s", '', $compiled_code);
+ if ($tpl->has_nocache_code) {
+ // replace nocache_hash
+ $compiled_code = str_replace("{$tpl->properties['nocache_hash']}", $compiler->template->properties['nocache_hash'], $compiled_code);
+ $compiler->template->has_nocache_code = true;
}
- } else {
+ $compiler->merged_templates[$tpl->properties['unifunc']] = $compiled_code;
$has_compiled_template = true;
+ unset ($tpl);
}
+ } else {
+ $has_compiled_template = true;
}
}
// delete {include} standard attributes
@@ -172,32 +216,40 @@ class Smarty_Internal_Compile_Include extends Smarty_Internal_CompileBase {
if (!empty($_attr)) {
if ($_parent_scope == Smarty::SCOPE_LOCAL) {
// create variables
+ $nccode = '';
foreach ($_attr as $key => $value) {
$_pairs[] = "'$key'=>$value";
+ $nccode .= "\$_smarty_tpl->tpl_vars['$key'] = new Smarty_variable($value);\n";
}
- $_vars = 'array('.join(',',$_pairs).')';
- $_has_vars = true;
+ $_vars = 'array(' . join(',', $_pairs) . ')';
} else {
$compiler->trigger_template_error('variable passing not allowed in parent/global scope', $compiler->lex->taglineno);
}
} else {
$_vars = 'array()';
- $_has_vars = false;
}
if ($has_compiled_template) {
- $_hash = $compiler->smarty->merged_templates_func[$tpl_name]['nocache_hash'];
+ // never call inline templates in nocache mode
+ $compiler->suppressNocacheProcessing = true;
+ $_hash = $compiler->smarty->merged_templates_func[$tpl_name][$uid]['nocache_hash'];
$_output = "<?php /* Call merged included template \"" . $tpl_name . "\" */\n";
$_output .= "\$_tpl_stack[] = \$_smarty_tpl;\n";
+ if (!empty($nccode) && $_caching == 9999 && $_smarty_tpl->caching) {
+ $compiler->suppressNocacheProcessing = false;
+ $_output .= substr($compiler->processNocacheCode('<?php ' .$nccode . "?>\n", true), 6, -3);
+ $compiler->suppressNocacheProcessing = true;
+ }
$_output .= " \$_smarty_tpl = \$_smarty_tpl->setupInlineSubTemplate($include_file, $_cache_id, $_compile_id, $_caching, $_cache_lifetime, $_vars, $_parent_scope, '$_hash');\n";
if (isset($_assign)) {
$_output .= 'ob_start(); ';
}
- $_output .= $compiler->smarty->merged_templates_func[$tpl_name]['func']. "(\$_smarty_tpl);\n";
+ $_output .= $compiler->smarty->merged_templates_func[$tpl_name][$uid]['func'] . "(\$_smarty_tpl);\n";
$_output .= "\$_smarty_tpl = array_pop(\$_tpl_stack); ";
if (isset($_assign)) {
$_output .= " \$_smarty_tpl->tpl_vars[$_assign] = new Smarty_variable(ob_get_clean());";
}
- $_output .= "/* End of included template \"" . $tpl_name . "\" */?>";
+ $_output .= "\n/* End of included template \"" . $tpl_name . "\" */?>";
+
return $_output;
}
@@ -207,9 +259,7 @@ class Smarty_Internal_Compile_Include extends Smarty_Internal_CompileBase {
} else {
$_output = "<?php echo \$_smarty_tpl->getSubTemplate ($include_file, $_cache_id, $_compile_id, $_caching, $_cache_lifetime, $_vars, $_parent_scope);?>\n";
}
+
return $_output;
}
-
}
-
-?> \ No newline at end of file
diff --git a/library/Smarty/libs/sysplugins/smarty_internal_compile_include_php.php b/library/Smarty/libs/sysplugins/smarty_internal_compile_include_php.php
index d52712368..76f506c52 100644
--- a/library/Smarty/libs/sysplugins/smarty_internal_compile_include_php.php
+++ b/library/Smarty/libs/sysplugins/smarty_internal_compile_include_php.php
@@ -1,22 +1,21 @@
<?php
/**
* Smarty Internal Plugin Compile Include PHP
- *
* Compiles the {include_php} tag
*
- * @package Smarty
+ * @package Smarty
* @subpackage Compiler
- * @author Uwe Tews
+ * @author Uwe Tews
*/
/**
* Smarty Internal Plugin Compile Insert Class
*
- * @package Smarty
+ * @package Smarty
* @subpackage Compiler
*/
-class Smarty_Internal_Compile_Include_Php extends Smarty_Internal_CompileBase {
-
+class Smarty_Internal_Compile_Include_Php extends Smarty_Internal_CompileBase
+{
/**
* Attribute definition: Overwrites base class.
*
@@ -42,8 +41,10 @@ class Smarty_Internal_Compile_Include_Php extends Smarty_Internal_CompileBase {
/**
* Compiles code for the {include_php} tag
*
- * @param array $args array with attributes from parser
- * @param object $compiler compiler object
+ * @param array $args array with attributes from parser
+ * @param object $compiler compiler object
+ *
+ * @throws SmartyException
* @return string compiled code
*/
public function compile($args, $compiler)
@@ -54,8 +55,9 @@ class Smarty_Internal_Compile_Include_Php extends Smarty_Internal_CompileBase {
// check and get attributes
$_attr = $this->getAttributes($compiler, $args);
- $_output = '<?php ';
-
+ /** @var Smarty_Internal_Template $_smarty_tpl
+ * used in evaluated code
+ */
$_smarty_tpl = $compiler->template;
$_filepath = false;
eval('$_file = ' . $_attr['file'] . ';');
@@ -68,10 +70,10 @@ class Smarty_Internal_Compile_Include_Php extends Smarty_Internal_CompileBase {
$_dir = $compiler->smarty->trusted_dir;
}
if (!empty($_dir)) {
- foreach((array)$_dir as $_script_dir) {
+ foreach ((array) $_dir as $_script_dir) {
$_script_dir = rtrim($_script_dir, '/\\') . DS;
if (file_exists($_script_dir . $_file)) {
- $_filepath = $_script_dir . $_file;
+ $_filepath = $_script_dir . $_file;
break;
}
}
@@ -102,7 +104,4 @@ class Smarty_Internal_Compile_Include_Php extends Smarty_Internal_CompileBase {
return "<?php include{$_once} ('{$_filepath}');?>\n";
}
}
-
}
-
-?> \ No newline at end of file
diff --git a/library/Smarty/libs/sysplugins/smarty_internal_compile_insert.php b/library/Smarty/libs/sysplugins/smarty_internal_compile_insert.php
index e4d3f9355..4c6585543 100644
--- a/library/Smarty/libs/sysplugins/smarty_internal_compile_insert.php
+++ b/library/Smarty/libs/sysplugins/smarty_internal_compile_insert.php
@@ -2,22 +2,21 @@
/**
* Smarty Internal Plugin Compile Insert
- *
* Compiles the {insert} tag
*
- * @package Smarty
+ * @package Smarty
* @subpackage Compiler
- * @author Uwe Tews
+ * @author Uwe Tews
*/
/**
* Smarty Internal Plugin Compile Insert Class
*
- * @package Smarty
+ * @package Smarty
* @subpackage Compiler
*/
-class Smarty_Internal_Compile_Insert extends Smarty_Internal_CompileBase {
-
+class Smarty_Internal_Compile_Insert extends Smarty_Internal_CompileBase
+{
/**
* Attribute definition: Overwrites base class.
*
@@ -43,8 +42,9 @@ class Smarty_Internal_Compile_Insert extends Smarty_Internal_CompileBase {
/**
* Compiles code for the {insert} tag
*
- * @param array $args array with attributes from parser
- * @param object $compiler compiler object
+ * @param array $args array with attributes from parser
+ * @param object $compiler compiler object
+ *
* @return string compiled code
*/
public function compile($args, $compiler)
@@ -59,12 +59,12 @@ class Smarty_Internal_Compile_Insert extends Smarty_Internal_CompileBase {
$_script = null;
$_output = '<?php ';
- // save posible attributes
+ // save possible attributes
eval('$_name = ' . $_attr['name'] . ';');
if (isset($_attr['assign'])) {
// output will be stored in a smarty variable instead of being displayed
$_assign = $_attr['assign'];
- // create variable to make shure that the compiler knows about its nocache status
+ // create variable to make sure that the compiler knows about its nocache status
$compiler->template->tpl_vars[trim($_attr['assign'], "'")] = new Smarty_Variable(null, true);
}
if (isset($_attr['script'])) {
@@ -82,7 +82,7 @@ class Smarty_Internal_Compile_Insert extends Smarty_Internal_CompileBase {
$_dir = $compiler->smarty->trusted_dir;
}
if (!empty($_dir)) {
- foreach((array)$_dir as $_script_dir) {
+ foreach ((array) $_dir as $_script_dir) {
$_script_dir = rtrim($_script_dir, '/\\') . DS;
if (file_exists($_script_dir . $_script)) {
$_filepath = $_script_dir . $_script;
@@ -134,9 +134,7 @@ class Smarty_Internal_Compile_Insert extends Smarty_Internal_CompileBase {
$_output .= "echo {$_function}({$_params},\$_smarty_tpl);?>";
}
}
+
return $_output;
}
-
}
-
-?> \ No newline at end of file
diff --git a/library/Smarty/libs/sysplugins/smarty_internal_compile_ldelim.php b/library/Smarty/libs/sysplugins/smarty_internal_compile_ldelim.php
index 990632590..91b44881e 100644
--- a/library/Smarty/libs/sysplugins/smarty_internal_compile_ldelim.php
+++ b/library/Smarty/libs/sysplugins/smarty_internal_compile_ldelim.php
@@ -1,28 +1,28 @@
<?php
/**
* Smarty Internal Plugin Compile Ldelim
- *
* Compiles the {ldelim} tag
*
- * @package Smarty
+ * @package Smarty
* @subpackage Compiler
- * @author Uwe Tews
+ * @author Uwe Tews
*/
/**
* Smarty Internal Plugin Compile Ldelim Class
*
- * @package Smarty
+ * @package Smarty
* @subpackage Compiler
*/
-class Smarty_Internal_Compile_Ldelim extends Smarty_Internal_CompileBase {
-
+class Smarty_Internal_Compile_Ldelim extends Smarty_Internal_CompileBase
+{
/**
* Compiles code for the {ldelim} tag
- *
* This tag does output the left delimiter
- * @param array $args array with attributes from parser
- * @param object $compiler compiler object
+ *
+ * @param array $args array with attributes from parser
+ * @param object $compiler compiler object
+ *
* @return string compiled code
*/
public function compile($args, $compiler)
@@ -33,9 +33,7 @@ class Smarty_Internal_Compile_Ldelim extends Smarty_Internal_CompileBase {
}
// this tag does not return compiled code
$compiler->has_code = true;
+
return $compiler->smarty->left_delimiter;
}
-
}
-
-?>
diff --git a/library/Smarty/libs/sysplugins/smarty_internal_compile_nocache.php b/library/Smarty/libs/sysplugins/smarty_internal_compile_nocache.php
index 5fb71b71d..ba39717fd 100644
--- a/library/Smarty/libs/sysplugins/smarty_internal_compile_nocache.php
+++ b/library/Smarty/libs/sysplugins/smarty_internal_compile_nocache.php
@@ -1,29 +1,28 @@
<?php
/**
* Smarty Internal Plugin Compile Nocache
- *
* Compiles the {nocache} {/nocache} tags.
*
- * @package Smarty
+ * @package Smarty
* @subpackage Compiler
- * @author Uwe Tews
+ * @author Uwe Tews
*/
/**
- * Smarty Internal Plugin Compile Nocache Classv
+ * Smarty Internal Plugin Compile Nocache Class
*
- * @package Smarty
+ * @package Smarty
* @subpackage Compiler
*/
-class Smarty_Internal_Compile_Nocache extends Smarty_Internal_CompileBase {
-
+class Smarty_Internal_Compile_Nocache extends Smarty_Internal_CompileBase
+{
/**
* Compiles code for the {nocache} tag
- *
* This tag does not generate compiled output. It only sets a compiler flag.
*
- * @param array $args array with attributes from parser
- * @param object $compiler compiler object
+ * @param array $args array with attributes from parser
+ * @param object $compiler compiler object
+ *
* @return bool
*/
public function compile($args, $compiler)
@@ -36,26 +35,26 @@ class Smarty_Internal_Compile_Nocache extends Smarty_Internal_CompileBase {
$compiler->nocache = true;
// this tag does not return compiled code
$compiler->has_code = false;
+
return true;
}
-
}
/**
* Smarty Internal Plugin Compile Nocacheclose Class
*
- * @package Smarty
+ * @package Smarty
* @subpackage Compiler
*/
-class Smarty_Internal_Compile_Nocacheclose extends Smarty_Internal_CompileBase {
-
+class Smarty_Internal_Compile_Nocacheclose extends Smarty_Internal_CompileBase
+{
/**
* Compiles code for the {/nocache} tag
- *
* This tag does not generate compiled output. It only sets a compiler flag.
*
- * @param array $args array with attributes from parser
- * @param object $compiler compiler object
+ * @param array $args array with attributes from parser
+ * @param object $compiler compiler object
+ *
* @return bool
*/
public function compile($args, $compiler)
@@ -65,9 +64,7 @@ class Smarty_Internal_Compile_Nocacheclose extends Smarty_Internal_CompileBase {
$compiler->nocache = false;
// this tag does not return compiled code
$compiler->has_code = false;
+
return true;
}
-
}
-
-?> \ No newline at end of file
diff --git a/library/Smarty/libs/sysplugins/smarty_internal_compile_private_block_plugin.php b/library/Smarty/libs/sysplugins/smarty_internal_compile_private_block_plugin.php
index 5288f4560..3dff8538e 100644
--- a/library/Smarty/libs/sysplugins/smarty_internal_compile_private_block_plugin.php
+++ b/library/Smarty/libs/sysplugins/smarty_internal_compile_private_block_plugin.php
@@ -1,22 +1,21 @@
<?php
/**
* Smarty Internal Plugin Compile Block Plugin
- *
* Compiles code for the execution of block plugin
*
- * @package Smarty
+ * @package Smarty
* @subpackage Compiler
- * @author Uwe Tews
+ * @author Uwe Tews
*/
/**
* Smarty Internal Plugin Compile Block Plugin Class
*
- * @package Smarty
+ * @package Smarty
* @subpackage Compiler
*/
-class Smarty_Internal_Compile_Private_Block_Plugin extends Smarty_Internal_CompileBase {
-
+class Smarty_Internal_Compile_Private_Block_Plugin extends Smarty_Internal_CompileBase
+{
/**
* Attribute definition: Overwrites base class.
*
@@ -28,23 +27,24 @@ class Smarty_Internal_Compile_Private_Block_Plugin extends Smarty_Internal_Compi
/**
* Compiles code for the execution of block plugin
*
- * @param array $args array with attributes from parser
- * @param object $compiler compiler object
- * @param array $parameter array with compilation parameter
- * @param string $tag name of block plugin
- * @param string $function PHP function name
+ * @param array $args array with attributes from parser
+ * @param object $compiler compiler object
+ * @param array $parameter array with compilation parameter
+ * @param string $tag name of block plugin
+ * @param string $function PHP function name
+ *
* @return string compiled code
*/
public function compile($args, $compiler, $parameter, $tag, $function)
{
- if (!isset($tag[5]) || substr($tag, -5) != 'close') {
+ if (!isset($tag[5]) || substr($tag, - 5) != 'close') {
// opening tag of block plugin
// check and get attributes
$_attr = $this->getAttributes($compiler, $args);
if ($_attr['nocache'] === true) {
$compiler->tag_nocache = true;
}
- unset($_attr['nocache']);
+ unset($_attr['nocache']);
// convert attributes into parameter array string
$_paramsArray = array();
foreach ($_attr as $_key => $_value) {
@@ -67,21 +67,19 @@ class Smarty_Internal_Compile_Private_Block_Plugin extends Smarty_Internal_Compi
$compiler->tag_nocache = true;
}
// closing tag of block plugin, restore nocache
- list($_params, $compiler->nocache) = $this->closeTag($compiler, substr($tag, 0, -5));
+ list($_params, $compiler->nocache) = $this->closeTag($compiler, substr($tag, 0, - 5));
// This tag does create output
$compiler->has_output = true;
// compile code
if (!isset($parameter['modifier_list'])) {
- $mod_pre = $mod_post ='';
+ $mod_pre = $mod_post = '';
} else {
$mod_pre = ' ob_start(); ';
- $mod_post = 'echo '.$compiler->compileTag('private_modifier',array(),array('modifierlist'=>$parameter['modifier_list'],'value'=>'ob_get_clean()')).';';
+ $mod_post = 'echo ' . $compiler->compileTag('private_modifier', array(), array('modifierlist' => $parameter['modifier_list'], 'value' => 'ob_get_clean()')) . ';';
}
- $output = "<?php \$_block_content = ob_get_clean(); \$_block_repeat=false;".$mod_pre." echo {$function}({$_params}, \$_block_content, \$_smarty_tpl, \$_block_repeat); ".$mod_post." } array_pop(\$_smarty_tpl->smarty->_tag_stack);?>";
+ $output = "<?php \$_block_content = ob_get_clean(); \$_block_repeat=false;" . $mod_pre . " echo {$function}({$_params}, \$_block_content, \$_smarty_tpl, \$_block_repeat); " . $mod_post . " } array_pop(\$_smarty_tpl->smarty->_tag_stack);?>";
}
+
return $output . "\n";
}
-
}
-
-?> \ No newline at end of file
diff --git a/library/Smarty/libs/sysplugins/smarty_internal_compile_private_function_plugin.php b/library/Smarty/libs/sysplugins/smarty_internal_compile_private_function_plugin.php
index 70e764318..4fbd4dc18 100644
--- a/library/Smarty/libs/sysplugins/smarty_internal_compile_private_function_plugin.php
+++ b/library/Smarty/libs/sysplugins/smarty_internal_compile_private_function_plugin.php
@@ -1,22 +1,21 @@
<?php
/**
* Smarty Internal Plugin Compile Function Plugin
- *
* Compiles code for the execution of function plugin
*
- * @package Smarty
+ * @package Smarty
* @subpackage Compiler
- * @author Uwe Tews
+ * @author Uwe Tews
*/
/**
* Smarty Internal Plugin Compile Function Plugin Class
*
- * @package Smarty
+ * @package Smarty
* @subpackage Compiler
*/
-class Smarty_Internal_Compile_Private_Function_Plugin extends Smarty_Internal_CompileBase {
-
+class Smarty_Internal_Compile_Private_Function_Plugin extends Smarty_Internal_CompileBase
+{
/**
* Attribute definition: Overwrites base class.
*
@@ -35,11 +34,12 @@ class Smarty_Internal_Compile_Private_Function_Plugin extends Smarty_Internal_Co
/**
* Compiles code for the execution of function plugin
*
- * @param array $args array with attributes from parser
- * @param object $compiler compiler object
- * @param array $parameter array with compilation parameter
- * @param string $tag name of function plugin
- * @param string $function PHP function name
+ * @param array $args array with attributes from parser
+ * @param object $compiler compiler object
+ * @param array $parameter array with compilation parameter
+ * @param string $tag name of function plugin
+ * @param string $function PHP function name
+ *
* @return string compiled code
*/
public function compile($args, $compiler, $parameter, $tag, $function)
@@ -65,9 +65,7 @@ class Smarty_Internal_Compile_Private_Function_Plugin extends Smarty_Internal_Co
$_params = 'array(' . implode(",", $_paramsArray) . ')';
// compile code
$output = "<?php echo {$function}({$_params},\$_smarty_tpl);?>\n";
+
return $output;
}
-
}
-
-?> \ No newline at end of file
diff --git a/library/Smarty/libs/sysplugins/smarty_internal_compile_private_modifier.php b/library/Smarty/libs/sysplugins/smarty_internal_compile_private_modifier.php
index 120f3ff10..ba03bfcfa 100644
--- a/library/Smarty/libs/sysplugins/smarty_internal_compile_private_modifier.php
+++ b/library/Smarty/libs/sysplugins/smarty_internal_compile_private_modifier.php
@@ -1,140 +1,139 @@
-<?php
-
-/**
- * Smarty Internal Plugin Compile Modifier
- *
- * Compiles code for modifier execution
- *
- * @package Smarty
- * @subpackage Compiler
- * @author Uwe Tews
- */
-
-/**
- * Smarty Internal Plugin Compile Modifier Class
- *
- * @package Smarty
- * @subpackage Compiler
- */
-class Smarty_Internal_Compile_Private_Modifier extends Smarty_Internal_CompileBase {
-
- /**
- * Compiles code for modifier execution
- *
- * @param array $args array with attributes from parser
- * @param object $compiler compiler object
- * @param array $parameter array with compilation parameter
- * @return string compiled code
- */
- public function compile($args, $compiler, $parameter) {
- // check and get attributes
- $_attr = $this->getAttributes($compiler, $args);
- $output = $parameter['value'];
- // loop over list of modifiers
- foreach ($parameter['modifierlist'] as $single_modifier) {
- $modifier = $single_modifier[0];
- $single_modifier[0] = $output;
- $params = implode(',', $single_modifier);
- // check if we know already the type of modifier
- if (isset($compiler->known_modifier_type[$modifier])) {
- $modifier_types = array($compiler->known_modifier_type[$modifier]);
- } else {
- $modifier_types = array(1, 2, 3, 4, 5, 6);
- }
- foreach ($modifier_types as $type) {
- switch ($type) {
- case 1:
- // registered modifier
- if (isset($compiler->smarty->registered_plugins[Smarty::PLUGIN_MODIFIER][$modifier])) {
- $function = $compiler->smarty->registered_plugins[Smarty::PLUGIN_MODIFIER][$modifier][0];
- if (!is_array($function)) {
- $output = "{$function}({$params})";
- } else {
- if (is_object($function[0])) {
- $output = '$_smarty_tpl->smarty->registered_plugins[Smarty::PLUGIN_MODIFIER][\'' . $modifier . '\'][0][0]->' . $function[1] . '(' . $params . ')';
- } else {
- $output = $function[0] . '::' . $function[1] . '(' . $params . ')';
- }
- }
- $compiler->known_modifier_type[$modifier] = $type;
- break 2;
- }
- break;
- case 2:
- // registered modifier compiler
- if (isset($compiler->smarty->registered_plugins[Smarty::PLUGIN_MODIFIERCOMPILER][$modifier][0])) {
- $output = call_user_func($compiler->smarty->registered_plugins[Smarty::PLUGIN_MODIFIERCOMPILER][$modifier][0], $single_modifier, $compiler->smarty);
- $compiler->known_modifier_type[$modifier] = $type;
- break 2;
- }
- break;
- case 3:
- // modifiercompiler plugin
- if ($compiler->smarty->loadPlugin('smarty_modifiercompiler_' . $modifier)) {
- // check if modifier allowed
- if (!is_object($compiler->smarty->security_policy) || $compiler->smarty->security_policy->isTrustedModifier($modifier, $compiler)) {
- $plugin = 'smarty_modifiercompiler_' . $modifier;
- $output = $plugin($single_modifier, $compiler);
- }
- $compiler->known_modifier_type[$modifier] = $type;
- break 2;
- }
- break;
- case 4:
- // modifier plugin
- if ($function = $compiler->getPlugin($modifier, Smarty::PLUGIN_MODIFIER)) {
- // check if modifier allowed
- if (!is_object($compiler->smarty->security_policy) || $compiler->smarty->security_policy->isTrustedModifier($modifier, $compiler)) {
- $output = "{$function}({$params})";
- }
- $compiler->known_modifier_type[$modifier] = $type;
- break 2;
- }
- break;
- case 5:
- // PHP function
- if (is_callable($modifier)) {
- // check if modifier allowed
- if (!is_object($compiler->smarty->security_policy) || $compiler->smarty->security_policy->isTrustedPhpModifier($modifier, $compiler)) {
- $output = "{$modifier}({$params})";
- }
- $compiler->known_modifier_type[$modifier] = $type;
- break 2;
- }
- break;
- case 6:
- // default plugin handler
- if (isset($compiler->default_handler_plugins[Smarty::PLUGIN_MODIFIER][$modifier]) || (is_callable($compiler->smarty->default_plugin_handler_func) && $compiler->getPluginFromDefaultHandler($modifier, Smarty::PLUGIN_MODIFIER))) {
- $function = $compiler->default_handler_plugins[Smarty::PLUGIN_MODIFIER][$modifier][0];
- // check if modifier allowed
- if (!is_object($compiler->smarty->security_policy) || $compiler->smarty->security_policy->isTrustedModifier($modifier, $compiler)) {
- if (!is_array($function)) {
- $output = "{$function}({$params})";
- } else {
- if (is_object($function[0])) {
- $output = '$_smarty_tpl->smarty->registered_plugins[Smarty::PLUGIN_MODIFIER][\'' . $modifier . '\'][0][0]->' . $function[1] . '(' . $params . ')';
- } else {
- $output = $function[0] . '::' . $function[1] . '(' . $params . ')';
- }
- }
- }
- if (isset($compiler->template->required_plugins['nocache'][$modifier][Smarty::PLUGIN_MODIFIER]['file']) || isset($compiler->template->required_plugins['compiled'][$modifier][Smarty::PLUGIN_MODIFIER]['file'])) {
- // was a plugin
- $compiler->known_modifier_type[$modifier] = 4;
- } else {
- $compiler->known_modifier_type[$modifier] = $type;
- }
- break 2;
- }
- }
- }
- if (!isset($compiler->known_modifier_type[$modifier])) {
- $compiler->trigger_template_error("unknown modifier \"" . $modifier . "\"", $compiler->lex->taglineno);
- }
- }
- return $output;
- }
-
-}
-
-?> \ No newline at end of file
+<?php
+
+/**
+ * Smarty Internal Plugin Compile Modifier
+ * Compiles code for modifier execution
+ *
+ * @package Smarty
+ * @subpackage Compiler
+ * @author Uwe Tews
+ */
+
+/**
+ * Smarty Internal Plugin Compile Modifier Class
+ *
+ * @package Smarty
+ * @subpackage Compiler
+ */
+class Smarty_Internal_Compile_Private_Modifier extends Smarty_Internal_CompileBase
+{
+ /**
+ * Compiles code for modifier execution
+ *
+ * @param array $args array with attributes from parser
+ * @param object $compiler compiler object
+ * @param array $parameter array with compilation parameter
+ *
+ * @return string compiled code
+ */
+ public function compile($args, $compiler, $parameter)
+ {
+ // check and get attributes
+ $_attr = $this->getAttributes($compiler, $args);
+ $output = $parameter['value'];
+ // loop over list of modifiers
+ foreach ($parameter['modifierlist'] as $single_modifier) {
+ $modifier = $single_modifier[0];
+ $single_modifier[0] = $output;
+ $params = implode(',', $single_modifier);
+ // check if we know already the type of modifier
+ if (isset($compiler->known_modifier_type[$modifier])) {
+ $modifier_types = array($compiler->known_modifier_type[$modifier]);
+ } else {
+ $modifier_types = array(1, 2, 3, 4, 5, 6);
+ }
+ foreach ($modifier_types as $type) {
+ switch ($type) {
+ case 1:
+ // registered modifier
+ if (isset($compiler->smarty->registered_plugins[Smarty::PLUGIN_MODIFIER][$modifier])) {
+ $function = $compiler->smarty->registered_plugins[Smarty::PLUGIN_MODIFIER][$modifier][0];
+ if (!is_array($function)) {
+ $output = "{$function}({$params})";
+ } else {
+ if (is_object($function[0])) {
+ $output = '$_smarty_tpl->smarty->registered_plugins[Smarty::PLUGIN_MODIFIER][\'' . $modifier . '\'][0][0]->' . $function[1] . '(' . $params . ')';
+ } else {
+ $output = $function[0] . '::' . $function[1] . '(' . $params . ')';
+ }
+ }
+ $compiler->known_modifier_type[$modifier] = $type;
+ break 2;
+ }
+ break;
+ case 2:
+ // registered modifier compiler
+ if (isset($compiler->smarty->registered_plugins[Smarty::PLUGIN_MODIFIERCOMPILER][$modifier][0])) {
+ $output = call_user_func($compiler->smarty->registered_plugins[Smarty::PLUGIN_MODIFIERCOMPILER][$modifier][0], $single_modifier, $compiler->smarty);
+ $compiler->known_modifier_type[$modifier] = $type;
+ break 2;
+ }
+ break;
+ case 3:
+ // modifiercompiler plugin
+ if ($compiler->smarty->loadPlugin('smarty_modifiercompiler_' . $modifier)) {
+ // check if modifier allowed
+ if (!is_object($compiler->smarty->security_policy) || $compiler->smarty->security_policy->isTrustedModifier($modifier, $compiler)) {
+ $plugin = 'smarty_modifiercompiler_' . $modifier;
+ $output = $plugin($single_modifier, $compiler);
+ }
+ $compiler->known_modifier_type[$modifier] = $type;
+ break 2;
+ }
+ break;
+ case 4:
+ // modifier plugin
+ if ($function = $compiler->getPlugin($modifier, Smarty::PLUGIN_MODIFIER)) {
+ // check if modifier allowed
+ if (!is_object($compiler->smarty->security_policy) || $compiler->smarty->security_policy->isTrustedModifier($modifier, $compiler)) {
+ $output = "{$function}({$params})";
+ }
+ $compiler->known_modifier_type[$modifier] = $type;
+ break 2;
+ }
+ break;
+ case 5:
+ // PHP function
+ if (is_callable($modifier)) {
+ // check if modifier allowed
+ if (!is_object($compiler->smarty->security_policy) || $compiler->smarty->security_policy->isTrustedPhpModifier($modifier, $compiler)) {
+ $output = "{$modifier}({$params})";
+ }
+ $compiler->known_modifier_type[$modifier] = $type;
+ break 2;
+ }
+ break;
+ case 6:
+ // default plugin handler
+ if (isset($compiler->default_handler_plugins[Smarty::PLUGIN_MODIFIER][$modifier]) || (is_callable($compiler->smarty->default_plugin_handler_func) && $compiler->getPluginFromDefaultHandler($modifier, Smarty::PLUGIN_MODIFIER))) {
+ $function = $compiler->default_handler_plugins[Smarty::PLUGIN_MODIFIER][$modifier][0];
+ // check if modifier allowed
+ if (!is_object($compiler->smarty->security_policy) || $compiler->smarty->security_policy->isTrustedModifier($modifier, $compiler)) {
+ if (!is_array($function)) {
+ $output = "{$function}({$params})";
+ } else {
+ if (is_object($function[0])) {
+ $output = '$_smarty_tpl->smarty->registered_plugins[Smarty::PLUGIN_MODIFIER][\'' . $modifier . '\'][0][0]->' . $function[1] . '(' . $params . ')';
+ } else {
+ $output = $function[0] . '::' . $function[1] . '(' . $params . ')';
+ }
+ }
+ }
+ if (isset($compiler->template->required_plugins['nocache'][$modifier][Smarty::PLUGIN_MODIFIER]['file']) || isset($compiler->template->required_plugins['compiled'][$modifier][Smarty::PLUGIN_MODIFIER]['file'])) {
+ // was a plugin
+ $compiler->known_modifier_type[$modifier] = 4;
+ } else {
+ $compiler->known_modifier_type[$modifier] = $type;
+ }
+ break 2;
+ }
+ }
+ }
+ if (!isset($compiler->known_modifier_type[$modifier])) {
+ $compiler->trigger_template_error("unknown modifier \"" . $modifier . "\"", $compiler->lex->taglineno);
+ }
+ }
+
+ return $output;
+ }
+}
diff --git a/library/Smarty/libs/sysplugins/smarty_internal_compile_private_object_block_function.php b/library/Smarty/libs/sysplugins/smarty_internal_compile_private_object_block_function.php
index cca924d10..5418fefff 100644
--- a/library/Smarty/libs/sysplugins/smarty_internal_compile_private_object_block_function.php
+++ b/library/Smarty/libs/sysplugins/smarty_internal_compile_private_object_block_function.php
@@ -1,22 +1,21 @@
<?php
/**
* Smarty Internal Plugin Compile Object Block Function
- *
* Compiles code for registered objects as block function
*
- * @package Smarty
+ * @package Smarty
* @subpackage Compiler
- * @author Uwe Tews
+ * @author Uwe Tews
*/
/**
* Smarty Internal Plugin Compile Object Block Function Class
*
- * @package Smarty
+ * @package Smarty
* @subpackage Compiler
*/
-class Smarty_Internal_Compile_Private_Object_Block_Function extends Smarty_Internal_CompileBase {
-
+class Smarty_Internal_Compile_Private_Object_Block_Function extends Smarty_Internal_CompileBase
+{
/**
* Attribute definition: Overwrites base class.
*
@@ -28,16 +27,17 @@ class Smarty_Internal_Compile_Private_Object_Block_Function extends Smarty_Inter
/**
* Compiles code for the execution of block plugin
*
- * @param array $args array with attributes from parser
- * @param object $compiler compiler object
- * @param array $parameter array with compilation parameter
- * @param string $tag name of block object
- * @param string $method name of method to call
+ * @param array $args array with attributes from parser
+ * @param object $compiler compiler object
+ * @param array $parameter array with compilation parameter
+ * @param string $tag name of block object
+ * @param string $method name of method to call
+ *
* @return string compiled code
*/
public function compile($args, $compiler, $parameter, $tag, $method)
{
- if (!isset($tag[5]) || substr($tag, -5) != 'close') {
+ if (!isset($tag[5]) || substr($tag, - 5) != 'close') {
// opening tag of block plugin
// check and get attributes
$_attr = $this->getAttributes($compiler, $args);
@@ -62,7 +62,7 @@ class Smarty_Internal_Compile_Private_Object_Block_Function extends Smarty_Inter
// compile code
$output = "<?php \$_smarty_tpl->smarty->_tag_stack[] = array('{$tag}->{$method}', {$_params}); \$_block_repeat=true; echo \$_smarty_tpl->smarty->registered_objects['{$tag}'][0]->{$method}({$_params}, null, \$_smarty_tpl, \$_block_repeat);while (\$_block_repeat) { ob_start();?>";
} else {
- $base_tag = substr($tag, 0, -5);
+ $base_tag = substr($tag, 0, - 5);
// must endblock be nocache?
if ($compiler->nocache) {
$compiler->tag_nocache = true;
@@ -80,9 +80,7 @@ class Smarty_Internal_Compile_Private_Object_Block_Function extends Smarty_Inter
}
$output = "<?php \$_block_content = ob_get_contents(); ob_end_clean(); \$_block_repeat=false;" . $mod_pre . " echo \$_smarty_tpl->smarty->registered_objects['{$base_tag}'][0]->{$method}({$_params}, \$_block_content, \$_smarty_tpl, \$_block_repeat); " . $mod_post . " } array_pop(\$_smarty_tpl->smarty->_tag_stack);?>";
}
+
return $output . "\n";
}
-
}
-
-?> \ No newline at end of file
diff --git a/library/Smarty/libs/sysplugins/smarty_internal_compile_private_object_function.php b/library/Smarty/libs/sysplugins/smarty_internal_compile_private_object_function.php
index f649084c3..d6eb47ab3 100644
--- a/library/Smarty/libs/sysplugins/smarty_internal_compile_private_object_function.php
+++ b/library/Smarty/libs/sysplugins/smarty_internal_compile_private_object_function.php
@@ -1,22 +1,21 @@
<?php
/**
- * Smarty Internal Plugin Compile Object Funtion
- *
+ * Smarty Internal Plugin Compile Object Function
* Compiles code for registered objects as function
*
- * @package Smarty
+ * @package Smarty
* @subpackage Compiler
- * @author Uwe Tews
+ * @author Uwe Tews
*/
/**
* Smarty Internal Plugin Compile Object Function Class
*
- * @package Smarty
+ * @package Smarty
* @subpackage Compiler
*/
-class Smarty_Internal_Compile_Private_Object_Function extends Smarty_Internal_CompileBase {
-
+class Smarty_Internal_Compile_Private_Object_Function extends Smarty_Internal_CompileBase
+{
/**
* Attribute definition: Overwrites base class.
*
@@ -28,11 +27,12 @@ class Smarty_Internal_Compile_Private_Object_Function extends Smarty_Internal_Co
/**
* Compiles code for the execution of function plugin
*
- * @param array $args array with attributes from parser
- * @param object $compiler compiler object
- * @param array $parameter array with compilation parameter
- * @param string $tag name of function
- * @param string $method name of method to call
+ * @param array $args array with attributes from parser
+ * @param object $compiler compiler object
+ * @param array $parameter array with compilation parameter
+ * @param string $tag name of function
+ * @param string $method name of method to call
+ *
* @return string compiled code
*/
public function compile($args, $compiler, $parameter, $tag, $method)
@@ -48,22 +48,29 @@ class Smarty_Internal_Compile_Private_Object_Function extends Smarty_Internal_Co
$_assign = $_attr['assign'];
unset($_attr['assign']);
}
- // convert attributes into parameter array string
- if ($compiler->smarty->registered_objects[$tag][2]) {
- $_paramsArray = array();
- foreach ($_attr as $_key => $_value) {
- if (is_int($_key)) {
- $_paramsArray[] = "$_key=>$_value";
- } else {
- $_paramsArray[] = "'$_key'=>$_value";
+ // method or property ?
+ if (method_exists($compiler->smarty->registered_objects[$tag][0], $method)) {
+ // convert attributes into parameter array string
+ if ($compiler->smarty->registered_objects[$tag][2]) {
+ $_paramsArray = array();
+ foreach ($_attr as $_key => $_value) {
+ if (is_int($_key)) {
+ $_paramsArray[] = "$_key=>$_value";
+ } else {
+ $_paramsArray[] = "'$_key'=>$_value";
+ }
}
+ $_params = 'array(' . implode(",", $_paramsArray) . ')';
+ $return = "\$_smarty_tpl->smarty->registered_objects['{$tag}'][0]->{$method}({$_params},\$_smarty_tpl)";
+ } else {
+ $_params = implode(",", $_attr);
+ $return = "\$_smarty_tpl->smarty->registered_objects['{$tag}'][0]->{$method}({$_params})";
}
- $_params = 'array(' . implode(",", $_paramsArray) . ')';
- $return = "\$_smarty_tpl->smarty->registered_objects['{$tag}'][0]->{$method}({$_params},\$_smarty_tpl)";
} else {
- $_params = implode(",", $_attr);
- $return = "\$_smarty_tpl->smarty->registered_objects['{$tag}'][0]->{$method}({$_params})";
+ // object property
+ $return = "\$_smarty_tpl->smarty->registered_objects['{$tag}'][0]->{$method}";
}
+
if (empty($_assign)) {
// This tag does create output
$compiler->has_output = true;
@@ -71,9 +78,7 @@ class Smarty_Internal_Compile_Private_Object_Function extends Smarty_Internal_Co
} else {
$output = "<?php \$_smarty_tpl->assign({$_assign},{$return});?>\n";
}
+
return $output;
}
-
}
-
-?> \ No newline at end of file
diff --git a/library/Smarty/libs/sysplugins/smarty_internal_compile_private_print_expression.php b/library/Smarty/libs/sysplugins/smarty_internal_compile_private_print_expression.php
index a37119547..188bbe77a 100644
--- a/library/Smarty/libs/sysplugins/smarty_internal_compile_private_print_expression.php
+++ b/library/Smarty/libs/sysplugins/smarty_internal_compile_private_print_expression.php
@@ -1,45 +1,46 @@
<?php
/**
-* Smarty Internal Plugin Compile Print Expression
-*
-* Compiles any tag which will output an expression or variable
-*
-* @package Smarty
-* @subpackage Compiler
-* @author Uwe Tews
-*/
+ * Smarty Internal Plugin Compile Print Expression
+ * Compiles any tag which will output an expression or variable
+ *
+ * @package Smarty
+ * @subpackage Compiler
+ * @author Uwe Tews
+ */
/**
-* Smarty Internal Plugin Compile Print Expression Class
-*
-* @package Smarty
-* @subpackage Compiler
-*/
-class Smarty_Internal_Compile_Private_Print_Expression extends Smarty_Internal_CompileBase {
-
+ * Smarty Internal Plugin Compile Print Expression Class
+ *
+ * @package Smarty
+ * @subpackage Compiler
+ */
+class Smarty_Internal_Compile_Private_Print_Expression extends Smarty_Internal_CompileBase
+{
/**
- * Attribute definition: Overwrites base class.
- *
- * @var array
- * @see Smarty_Internal_CompileBase
- */
+ * Attribute definition: Overwrites base class.
+ *
+ * @var array
+ * @see Smarty_Internal_CompileBase
+ */
public $optional_attributes = array('assign');
/**
- * Attribute definition: Overwrites base class.
- *
- * @var array
- * @see Smarty_Internal_CompileBase
- */
+ * Attribute definition: Overwrites base class.
+ *
+ * @var array
+ * @see Smarty_Internal_CompileBase
+ */
public $option_flags = array('nocache', 'nofilter');
/**
- * Compiles code for gererting output from any expression
- *
- * @param array $args array with attributes from parser
- * @param object $compiler compiler object
- * @param array $parameter array with compilation parameter
- * @return string compiled code
- */
+ * Compiles code for generating output from any expression
+ *
+ * @param array $args array with attributes from parser
+ * @param object $compiler compiler object
+ * @param array $parameter array with compilation parameter
+ *
+ * @throws SmartyException
+ * @return string compiled code
+ */
public function compile($args, $compiler, $parameter)
{
// check and get attributes
@@ -48,12 +49,6 @@ class Smarty_Internal_Compile_Private_Print_Expression extends Smarty_Internal_C
if ($_attr['nocache'] === true) {
$compiler->tag_nocache = true;
}
- // filter handling
- if ($_attr['nofilter'] === true) {
- $_filter = 'false';
- } else {
- $_filter = 'true';
- }
if (isset($_attr['assign'])) {
// assign output to variable
$output = "<?php \$_smarty_tpl->assign({$_attr['assign']},{$parameter['value']});?>";
@@ -71,13 +66,13 @@ class Smarty_Internal_Compile_Private_Print_Expression extends Smarty_Internal_C
$modifierlist = array();
foreach ($compiler->smarty->default_modifiers as $key => $single_default_modifier) {
preg_match_all('/(\'[^\'\\\\]*(?:\\\\.[^\'\\\\]*)*\'|"[^"\\\\]*(?:\\\\.[^"\\\\]*)*"|:|[^:]+)/', $single_default_modifier, $mod_array);
- for ($i = 0, $count = count($mod_array[0]);$i < $count;$i++) {
+ for ($i = 0, $count = count($mod_array[0]); $i < $count; $i ++) {
if ($mod_array[0][$i] != ':') {
$modifierlist[$key][] = $mod_array[0][$i];
}
}
}
- $compiler->default_modifier_list = $modifierlist;
+ $compiler->default_modifier_list = $modifierlist;
}
$output = $compiler->compileTag('private_modifier', array(), array('modifierlist' => $compiler->default_modifier_list, 'value' => $output));
}
@@ -85,13 +80,13 @@ class Smarty_Internal_Compile_Private_Print_Expression extends Smarty_Internal_C
if ($compiler->template->smarty->escape_html) {
$output = "htmlspecialchars({$output}, ENT_QUOTES, '" . addslashes(Smarty::$_CHARSET) . "')";
}
- // loop over registerd filters
+ // loop over registered filters
if (!empty($compiler->template->smarty->registered_filters[Smarty::FILTER_VARIABLE])) {
foreach ($compiler->template->smarty->registered_filters[Smarty::FILTER_VARIABLE] as $key => $function) {
if (!is_array($function)) {
$output = "{$function}({$output},\$_smarty_tpl)";
- } else if (is_object($function[0])) {
- $output = "\$_smarty_tpl->smarty->registered_filters[Smarty::FILTER_VARIABLE][{$key}][0]->{$function[1]}({$output},\$_smarty_tpl)";
+ } elseif (is_object($function[0])) {
+ $output = "\$_smarty_tpl->smarty->registered_filters[Smarty::FILTER_VARIABLE]['{$key}'][0]->{$function[1]}({$output},\$_smarty_tpl)";
} else {
$output = "{$function[0]}::{$function[1]}({$output},\$_smarty_tpl)";
}
@@ -99,7 +94,7 @@ class Smarty_Internal_Compile_Private_Print_Expression extends Smarty_Internal_C
}
// auto loaded filters
if (isset($compiler->smarty->autoload_filters[Smarty::FILTER_VARIABLE])) {
- foreach ((array)$compiler->template->smarty->autoload_filters[Smarty::FILTER_VARIABLE] as $name) {
+ foreach ((array) $compiler->template->smarty->autoload_filters[Smarty::FILTER_VARIABLE] as $name) {
$result = $this->compile_output_filter($compiler, $name, $output);
if ($result !== false) {
$output = $result;
@@ -123,15 +118,17 @@ class Smarty_Internal_Compile_Private_Print_Expression extends Smarty_Internal_C
$compiler->has_output = true;
$output = "<?php echo {$output};?>";
}
+
return $output;
}
/**
- * @param object $compiler compiler object
- * @param string $name name of variable filter
- * @param type $output embedded output
- * @return string
- */
+ * @param object $compiler compiler object
+ * @param string $name name of variable filter
+ * @param string $output embedded output
+ *
+ * @return string
+ */
private function compile_output_filter($compiler, $name, $output)
{
$plugin_name = "smarty_variablefilter_{$name}";
@@ -148,9 +145,7 @@ class Smarty_Internal_Compile_Private_Print_Expression extends Smarty_Internal_C
// not found
return false;
}
+
return "{$plugin_name}({$output},\$_smarty_tpl)";
}
-
}
-
-?> \ No newline at end of file
diff --git a/library/Smarty/libs/sysplugins/smarty_internal_compile_private_registered_block.php b/library/Smarty/libs/sysplugins/smarty_internal_compile_private_registered_block.php
index 9fed36c3b..68ab644fc 100644
--- a/library/Smarty/libs/sysplugins/smarty_internal_compile_private_registered_block.php
+++ b/library/Smarty/libs/sysplugins/smarty_internal_compile_private_registered_block.php
@@ -1,113 +1,111 @@
-<?php
-/**
- * Smarty Internal Plugin Compile Registered Block
- *
- * Compiles code for the execution of a registered block function
- *
- * @package Smarty
- * @subpackage Compiler
- * @author Uwe Tews
- */
-
-/**
- * Smarty Internal Plugin Compile Registered Block Class
- *
- * @package Smarty
- * @subpackage Compiler
- */
-class Smarty_Internal_Compile_Private_Registered_Block extends Smarty_Internal_CompileBase {
-
- /**
- * Attribute definition: Overwrites base class.
- *
- * @var array
- * @see Smarty_Internal_CompileBase
- */
- public $optional_attributes = array('_any');
-
- /**
- * Compiles code for the execution of a block function
- *
- * @param array $args array with attributes from parser
- * @param object $compiler compiler object
- * @param array $parameter array with compilation parameter
- * @param string $tag name of block function
- * @return string compiled code
- */
- public function compile($args, $compiler, $parameter, $tag)
- {
- if (!isset($tag[5]) || substr($tag,-5) != 'close') {
- // opening tag of block plugin
- // check and get attributes
- $_attr = $this->getAttributes($compiler, $args);
- if ($_attr['nocache']) {
- $compiler->tag_nocache = true;
- }
- unset($_attr['nocache']);
- if (isset($compiler->smarty->registered_plugins[Smarty::PLUGIN_BLOCK][$tag])) {
- $tag_info = $compiler->smarty->registered_plugins[Smarty::PLUGIN_BLOCK][$tag];
- } else {
- $tag_info = $compiler->default_handler_plugins[Smarty::PLUGIN_BLOCK][$tag];
- }
- // convert attributes into parameter array string
- $_paramsArray = array();
- foreach ($_attr as $_key => $_value) {
- if (is_int($_key)) {
- $_paramsArray[] = "$_key=>$_value";
- } elseif ($compiler->template->caching && in_array($_key,$tag_info[2])) {
- $_value = str_replace("'","^#^",$_value);
- $_paramsArray[] = "'$_key'=>^#^.var_export($_value,true).^#^";
- } else {
- $_paramsArray[] = "'$_key'=>$_value";
- }
- }
- $_params = 'array(' . implode(",", $_paramsArray) . ')';
-
- $this->openTag($compiler, $tag, array($_params, $compiler->nocache));
- // maybe nocache because of nocache variables or nocache plugin
- $compiler->nocache = !$tag_info[1] | $compiler->nocache | $compiler->tag_nocache;
- $function = $tag_info[0];
- // compile code
- if (!is_array($function)) {
- $output = "<?php \$_smarty_tpl->smarty->_tag_stack[] = array('{$tag}', {$_params}); \$_block_repeat=true; echo {$function}({$_params}, null, \$_smarty_tpl, \$_block_repeat);while (\$_block_repeat) { ob_start();?>";
- } else if (is_object($function[0])) {
- $output = "<?php \$_smarty_tpl->smarty->_tag_stack[] = array('{$tag}', {$_params}); \$_block_repeat=true; echo \$_smarty_tpl->smarty->registered_plugins['block']['{$tag}'][0][0]->{$function[1]}({$_params}, null, \$_smarty_tpl, \$_block_repeat);while (\$_block_repeat) { ob_start();?>";
- } else {
- $output = "<?php \$_smarty_tpl->smarty->_tag_stack[] = array('{$tag}', {$_params}); \$_block_repeat=true; echo {$function[0]}::{$function[1]}({$_params}, null, \$_smarty_tpl, \$_block_repeat);while (\$_block_repeat) { ob_start();?>";
- }
- } else {
- // must endblock be nocache?
- if ($compiler->nocache) {
- $compiler->tag_nocache = true;
- }
- $base_tag = substr($tag, 0, -5);
- // closing tag of block plugin, restore nocache
- list($_params, $compiler->nocache) = $this->closeTag($compiler, $base_tag);
- // This tag does create output
- $compiler->has_output = true;
- if (isset($compiler->smarty->registered_plugins[Smarty::PLUGIN_BLOCK][$base_tag])) {
- $function = $compiler->smarty->registered_plugins[Smarty::PLUGIN_BLOCK][$base_tag][0];
- } else {
- $function = $compiler->default_handler_plugins[Smarty::PLUGIN_BLOCK][$base_tag][0];
- }
- // compile code
- if (!isset($parameter['modifier_list'])) {
- $mod_pre = $mod_post ='';
- } else {
- $mod_pre = ' ob_start(); ';
- $mod_post = 'echo '.$compiler->compileTag('private_modifier',array(),array('modifierlist'=>$parameter['modifier_list'],'value'=>'ob_get_clean()')).';';
- }
- if (!is_array($function)) {
- $output = "<?php \$_block_content = ob_get_clean(); \$_block_repeat=false;".$mod_pre." echo {$function}({$_params}, \$_block_content, \$_smarty_tpl, \$_block_repeat);".$mod_post." } array_pop(\$_smarty_tpl->smarty->_tag_stack);?>";
- } else if (is_object($function[0])) {
- $output = "<?php \$_block_content = ob_get_clean(); \$_block_repeat=false;".$mod_pre." echo \$_smarty_tpl->smarty->registered_plugins['block']['{$base_tag}'][0][0]->{$function[1]}({$_params}, \$_block_content, \$_smarty_tpl, \$_block_repeat); ".$mod_post."} array_pop(\$_smarty_tpl->smarty->_tag_stack);?>";
- } else {
- $output = "<?php \$_block_content = ob_get_clean(); \$_block_repeat=false;".$mod_pre." echo {$function[0]}::{$function[1]}({$_params}, \$_block_content, \$_smarty_tpl, \$_block_repeat); ".$mod_post."} array_pop(\$_smarty_tpl->smarty->_tag_stack);?>";
- }
- }
- return $output . "\n";
- }
-
-}
-
-?> \ No newline at end of file
+<?php
+/**
+ * Smarty Internal Plugin Compile Registered Block
+ * Compiles code for the execution of a registered block function
+ *
+ * @package Smarty
+ * @subpackage Compiler
+ * @author Uwe Tews
+ */
+
+/**
+ * Smarty Internal Plugin Compile Registered Block Class
+ *
+ * @package Smarty
+ * @subpackage Compiler
+ */
+class Smarty_Internal_Compile_Private_Registered_Block extends Smarty_Internal_CompileBase
+{
+ /**
+ * Attribute definition: Overwrites base class.
+ *
+ * @var array
+ * @see Smarty_Internal_CompileBase
+ */
+ public $optional_attributes = array('_any');
+
+ /**
+ * Compiles code for the execution of a block function
+ *
+ * @param array $args array with attributes from parser
+ * @param object $compiler compiler object
+ * @param array $parameter array with compilation parameter
+ * @param string $tag name of block function
+ *
+ * @return string compiled code
+ */
+ public function compile($args, $compiler, $parameter, $tag)
+ {
+ if (!isset($tag[5]) || substr($tag, - 5) != 'close') {
+ // opening tag of block plugin
+ // check and get attributes
+ $_attr = $this->getAttributes($compiler, $args);
+ if ($_attr['nocache']) {
+ $compiler->tag_nocache = true;
+ }
+ unset($_attr['nocache']);
+ if (isset($compiler->smarty->registered_plugins[Smarty::PLUGIN_BLOCK][$tag])) {
+ $tag_info = $compiler->smarty->registered_plugins[Smarty::PLUGIN_BLOCK][$tag];
+ } else {
+ $tag_info = $compiler->default_handler_plugins[Smarty::PLUGIN_BLOCK][$tag];
+ }
+ // convert attributes into parameter array string
+ $_paramsArray = array();
+ foreach ($_attr as $_key => $_value) {
+ if (is_int($_key)) {
+ $_paramsArray[] = "$_key=>$_value";
+ } elseif ($compiler->template->caching && in_array($_key, $tag_info[2])) {
+ $_value = str_replace("'", "^#^", $_value);
+ $_paramsArray[] = "'$_key'=>^#^.var_export($_value,true).^#^";
+ } else {
+ $_paramsArray[] = "'$_key'=>$_value";
+ }
+ }
+ $_params = 'array(' . implode(",", $_paramsArray) . ')';
+
+ $this->openTag($compiler, $tag, array($_params, $compiler->nocache));
+ // maybe nocache because of nocache variables or nocache plugin
+ $compiler->nocache = !$tag_info[1] | $compiler->nocache | $compiler->tag_nocache;
+ $function = $tag_info[0];
+ // compile code
+ if (!is_array($function)) {
+ $output = "<?php \$_smarty_tpl->smarty->_tag_stack[] = array('{$tag}', {$_params}); \$_block_repeat=true; echo {$function}({$_params}, null, \$_smarty_tpl, \$_block_repeat);while (\$_block_repeat) { ob_start();?>";
+ } elseif (is_object($function[0])) {
+ $output = "<?php \$_smarty_tpl->smarty->_tag_stack[] = array('{$tag}', {$_params}); \$_block_repeat=true; echo \$_smarty_tpl->smarty->registered_plugins['block']['{$tag}'][0][0]->{$function[1]}({$_params}, null, \$_smarty_tpl, \$_block_repeat);while (\$_block_repeat) { ob_start();?>";
+ } else {
+ $output = "<?php \$_smarty_tpl->smarty->_tag_stack[] = array('{$tag}', {$_params}); \$_block_repeat=true; echo {$function[0]}::{$function[1]}({$_params}, null, \$_smarty_tpl, \$_block_repeat);while (\$_block_repeat) { ob_start();?>";
+ }
+ } else {
+ // must endblock be nocache?
+ if ($compiler->nocache) {
+ $compiler->tag_nocache = true;
+ }
+ $base_tag = substr($tag, 0, - 5);
+ // closing tag of block plugin, restore nocache
+ list($_params, $compiler->nocache) = $this->closeTag($compiler, $base_tag);
+ // This tag does create output
+ $compiler->has_output = true;
+ if (isset($compiler->smarty->registered_plugins[Smarty::PLUGIN_BLOCK][$base_tag])) {
+ $function = $compiler->smarty->registered_plugins[Smarty::PLUGIN_BLOCK][$base_tag][0];
+ } else {
+ $function = $compiler->default_handler_plugins[Smarty::PLUGIN_BLOCK][$base_tag][0];
+ }
+ // compile code
+ if (!isset($parameter['modifier_list'])) {
+ $mod_pre = $mod_post = '';
+ } else {
+ $mod_pre = ' ob_start(); ';
+ $mod_post = 'echo ' . $compiler->compileTag('private_modifier', array(), array('modifierlist' => $parameter['modifier_list'], 'value' => 'ob_get_clean()')) . ';';
+ }
+ if (!is_array($function)) {
+ $output = "<?php \$_block_content = ob_get_clean(); \$_block_repeat=false;" . $mod_pre . " echo {$function}({$_params}, \$_block_content, \$_smarty_tpl, \$_block_repeat);" . $mod_post . " } array_pop(\$_smarty_tpl->smarty->_tag_stack);?>";
+ } elseif (is_object($function[0])) {
+ $output = "<?php \$_block_content = ob_get_clean(); \$_block_repeat=false;" . $mod_pre . " echo \$_smarty_tpl->smarty->registered_plugins['block']['{$base_tag}'][0][0]->{$function[1]}({$_params}, \$_block_content, \$_smarty_tpl, \$_block_repeat); " . $mod_post . "} array_pop(\$_smarty_tpl->smarty->_tag_stack);?>";
+ } else {
+ $output = "<?php \$_block_content = ob_get_clean(); \$_block_repeat=false;" . $mod_pre . " echo {$function[0]}::{$function[1]}({$_params}, \$_block_content, \$_smarty_tpl, \$_block_repeat); " . $mod_post . "} array_pop(\$_smarty_tpl->smarty->_tag_stack);?>";
+ }
+ }
+
+ return $output . "\n";
+ }
+}
diff --git a/library/Smarty/libs/sysplugins/smarty_internal_compile_private_registered_function.php b/library/Smarty/libs/sysplugins/smarty_internal_compile_private_registered_function.php
index 5058bfbbd..dfb4572f4 100644
--- a/library/Smarty/libs/sysplugins/smarty_internal_compile_private_registered_function.php
+++ b/library/Smarty/libs/sysplugins/smarty_internal_compile_private_registered_function.php
@@ -1,81 +1,79 @@
-<?php
-/**
- * Smarty Internal Plugin Compile Registered Function
- *
- * Compiles code for the execution of a registered function
- *
- * @package Smarty
- * @subpackage Compiler
- * @author Uwe Tews
- */
-
-/**
- * Smarty Internal Plugin Compile Registered Function Class
- *
- * @package Smarty
- * @subpackage Compiler
- */
-class Smarty_Internal_Compile_Private_Registered_Function extends Smarty_Internal_CompileBase {
-
- /**
- * Attribute definition: Overwrites base class.
- *
- * @var array
- * @see Smarty_Internal_CompileBase
- */
- public $optional_attributes = array('_any');
-
- /**
- * Compiles code for the execution of a registered function
- *
- * @param array $args array with attributes from parser
- * @param object $compiler compiler object
- * @param array $parameter array with compilation parameter
- * @param string $tag name of function
- * @return string compiled code
- */
- public function compile($args, $compiler, $parameter, $tag)
- {
- // This tag does create output
- $compiler->has_output = true;
- // check and get attributes
- $_attr = $this->getAttributes($compiler, $args);
- if ($_attr['nocache']) {
- $compiler->tag_nocache = true;
- }
- unset($_attr['nocache']);
- if (isset($compiler->smarty->registered_plugins[Smarty::PLUGIN_FUNCTION][$tag])) {
- $tag_info = $compiler->smarty->registered_plugins[Smarty::PLUGIN_FUNCTION][$tag];
- } else {
- $tag_info = $compiler->default_handler_plugins[Smarty::PLUGIN_FUNCTION][$tag];
- }
- // not cachable?
- $compiler->tag_nocache = $compiler->tag_nocache || !$tag_info[1];
- // convert attributes into parameter array string
- $_paramsArray = array();
- foreach ($_attr as $_key => $_value) {
- if (is_int($_key)) {
- $_paramsArray[] = "$_key=>$_value";
- } elseif ($compiler->template->caching && in_array($_key,$tag_info[2])) {
- $_value = str_replace("'","^#^",$_value);
- $_paramsArray[] = "'$_key'=>^#^.var_export($_value,true).^#^";
- } else {
- $_paramsArray[] = "'$_key'=>$_value";
- }
- }
- $_params = 'array(' . implode(",", $_paramsArray) . ')';
- $function = $tag_info[0];
- // compile code
- if (!is_array($function)) {
- $output = "<?php echo {$function}({$_params},\$_smarty_tpl);?>\n";
- } else if (is_object($function[0])) {
- $output = "<?php echo \$_smarty_tpl->smarty->registered_plugins[Smarty::PLUGIN_FUNCTION]['{$tag}'][0][0]->{$function[1]}({$_params},\$_smarty_tpl);?>\n";
- } else {
- $output = "<?php echo {$function[0]}::{$function[1]}({$_params},\$_smarty_tpl);?>\n";
- }
- return $output;
- }
-
-}
-
-?> \ No newline at end of file
+<?php
+/**
+ * Smarty Internal Plugin Compile Registered Function
+ * Compiles code for the execution of a registered function
+ *
+ * @package Smarty
+ * @subpackage Compiler
+ * @author Uwe Tews
+ */
+
+/**
+ * Smarty Internal Plugin Compile Registered Function Class
+ *
+ * @package Smarty
+ * @subpackage Compiler
+ */
+class Smarty_Internal_Compile_Private_Registered_Function extends Smarty_Internal_CompileBase
+{
+ /**
+ * Attribute definition: Overwrites base class.
+ *
+ * @var array
+ * @see Smarty_Internal_CompileBase
+ */
+ public $optional_attributes = array('_any');
+
+ /**
+ * Compiles code for the execution of a registered function
+ *
+ * @param array $args array with attributes from parser
+ * @param object $compiler compiler object
+ * @param array $parameter array with compilation parameter
+ * @param string $tag name of function
+ *
+ * @return string compiled code
+ */
+ public function compile($args, $compiler, $parameter, $tag)
+ {
+ // This tag does create output
+ $compiler->has_output = true;
+ // check and get attributes
+ $_attr = $this->getAttributes($compiler, $args);
+ if ($_attr['nocache']) {
+ $compiler->tag_nocache = true;
+ }
+ unset($_attr['nocache']);
+ if (isset($compiler->smarty->registered_plugins[Smarty::PLUGIN_FUNCTION][$tag])) {
+ $tag_info = $compiler->smarty->registered_plugins[Smarty::PLUGIN_FUNCTION][$tag];
+ } else {
+ $tag_info = $compiler->default_handler_plugins[Smarty::PLUGIN_FUNCTION][$tag];
+ }
+ // not cachable?
+ $compiler->tag_nocache = $compiler->tag_nocache || !$tag_info[1];
+ // convert attributes into parameter array string
+ $_paramsArray = array();
+ foreach ($_attr as $_key => $_value) {
+ if (is_int($_key)) {
+ $_paramsArray[] = "$_key=>$_value";
+ } elseif ($compiler->template->caching && in_array($_key, $tag_info[2])) {
+ $_value = str_replace("'", "^#^", $_value);
+ $_paramsArray[] = "'$_key'=>^#^.var_export($_value,true).^#^";
+ } else {
+ $_paramsArray[] = "'$_key'=>$_value";
+ }
+ }
+ $_params = 'array(' . implode(",", $_paramsArray) . ')';
+ $function = $tag_info[0];
+ // compile code
+ if (!is_array($function)) {
+ $output = "<?php echo {$function}({$_params},\$_smarty_tpl);?>\n";
+ } elseif (is_object($function[0])) {
+ $output = "<?php echo \$_smarty_tpl->smarty->registered_plugins[Smarty::PLUGIN_FUNCTION]['{$tag}'][0][0]->{$function[1]}({$_params},\$_smarty_tpl);?>\n";
+ } else {
+ $output = "<?php echo {$function[0]}::{$function[1]}({$_params},\$_smarty_tpl);?>\n";
+ }
+
+ return $output;
+ }
+}
diff --git a/library/Smarty/libs/sysplugins/smarty_internal_compile_private_special_variable.php b/library/Smarty/libs/sysplugins/smarty_internal_compile_private_special_variable.php
index 4760dbe3f..23b17ae14 100644
--- a/library/Smarty/libs/sysplugins/smarty_internal_compile_private_special_variable.php
+++ b/library/Smarty/libs/sysplugins/smarty_internal_compile_private_special_variable.php
@@ -1,32 +1,33 @@
<?php
/**
* Smarty Internal Plugin Compile Special Smarty Variable
- *
* Compiles the special $smarty variables
*
- * @package Smarty
+ * @package Smarty
* @subpackage Compiler
- * @author Uwe Tews
+ * @author Uwe Tews
*/
/**
* Smarty Internal Plugin Compile special Smarty Variable Class
*
- * @package Smarty
+ * @package Smarty
* @subpackage Compiler
*/
-class Smarty_Internal_Compile_Private_Special_Variable extends Smarty_Internal_CompileBase {
-
+class Smarty_Internal_Compile_Private_Special_Variable extends Smarty_Internal_CompileBase
+{
/**
- * Compiles code for the speical $smarty variables
+ * Compiles code for the special $smarty variables
+ *
+ * @param array $args array with attributes from parser
+ * @param object $compiler compiler object
+ * @param $parameter
*
- * @param array $args array with attributes from parser
- * @param object $compiler compiler object
* @return string compiled code
*/
public function compile($args, $compiler, $parameter)
{
- $_index = preg_split("/\]\[/",substr($parameter, 1, strlen($parameter)-2));
+ $_index = preg_split("/\]\[/", substr($parameter, 1, strlen($parameter) - 2));
$compiled_ref = ' ';
$variable = trim($_index[0], "'");
switch ($variable) {
@@ -56,7 +57,7 @@ class Smarty_Internal_Compile_Private_Special_Variable extends Smarty_Internal_C
$compiler->trigger_template_error("(secure mode) super globals not permitted");
break;
}
- $compiled_ref = '$_'.strtoupper($variable);
+ $compiled_ref = '$_' . strtoupper($variable);
break;
case 'template':
@@ -70,6 +71,7 @@ class Smarty_Internal_Compile_Private_Special_Variable extends Smarty_Internal_C
case 'version':
$_version = Smarty::SMARTY_VERSION;
+
return "'$_version'";
case 'const':
@@ -77,16 +79,23 @@ class Smarty_Internal_Compile_Private_Special_Variable extends Smarty_Internal_C
$compiler->trigger_template_error("(secure mode) constants not permitted");
break;
}
- return '@' . trim($_index[1], "'");
+
+ return "@constant({$_index[1]})";
case 'config':
- return "\$_smarty_tpl->getConfigVariable($_index[1])";
+ if (isset($_index[2])) {
+ return "(is_array(\$tmp = \$_smarty_tpl->getConfigVariable($_index[1])) ? \$tmp[$_index[2]] : null)";
+ } else {
+ return "\$_smarty_tpl->getConfigVariable($_index[1])";
+ }
case 'ldelim':
$_ldelim = $compiler->smarty->left_delimiter;
+
return "'$_ldelim'";
case 'rdelim':
$_rdelim = $compiler->smarty->right_delimiter;
+
return "'$_rdelim'";
default:
@@ -99,9 +108,7 @@ class Smarty_Internal_Compile_Private_Special_Variable extends Smarty_Internal_C
$compiled_ref = $compiled_ref . "[$_ind]";
}
}
+
return $compiled_ref;
}
-
}
-
-?> \ No newline at end of file
diff --git a/library/Smarty/libs/sysplugins/smarty_internal_compile_rdelim.php b/library/Smarty/libs/sysplugins/smarty_internal_compile_rdelim.php
index 807c7e2b9..dcff2ae41 100644
--- a/library/Smarty/libs/sysplugins/smarty_internal_compile_rdelim.php
+++ b/library/Smarty/libs/sysplugins/smarty_internal_compile_rdelim.php
@@ -1,28 +1,28 @@
<?php
/**
* Smarty Internal Plugin Compile Rdelim
- *
* Compiles the {rdelim} tag
- * @package Smarty
+ *
+ * @package Smarty
* @subpackage Compiler
- * @author Uwe Tews
+ * @author Uwe Tews
*/
/**
* Smarty Internal Plugin Compile Rdelim Class
*
- * @package Smarty
+ * @package Smarty
* @subpackage Compiler
*/
-class Smarty_Internal_Compile_Rdelim extends Smarty_Internal_CompileBase {
-
+class Smarty_Internal_Compile_Rdelim extends Smarty_Internal_CompileBase
+{
/**
* Compiles code for the {rdelim} tag
- *
* This tag does output the right delimiter.
*
- * @param array $args array with attributes from parser
- * @param object $compiler compiler object
+ * @param array $args array with attributes from parser
+ * @param object $compiler compiler object
+ *
* @return string compiled code
*/
public function compile($args, $compiler)
@@ -33,9 +33,7 @@ class Smarty_Internal_Compile_Rdelim extends Smarty_Internal_CompileBase {
}
// this tag does not return compiled code
$compiler->has_code = true;
+
return $compiler->smarty->right_delimiter;
}
-
}
-
-?> \ No newline at end of file
diff --git a/library/Smarty/libs/sysplugins/smarty_internal_compile_section.php b/library/Smarty/libs/sysplugins/smarty_internal_compile_section.php
index ccb7673d8..5ac3fb067 100644
--- a/library/Smarty/libs/sysplugins/smarty_internal_compile_section.php
+++ b/library/Smarty/libs/sysplugins/smarty_internal_compile_section.php
@@ -1,22 +1,21 @@
<?php
/**
* Smarty Internal Plugin Compile Section
- *
* Compiles the {section} {sectionelse} {/section} tags
*
- * @package Smarty
+ * @package Smarty
* @subpackage Compiler
- * @author Uwe Tews
+ * @author Uwe Tews
*/
/**
* Smarty Internal Plugin Compile Section Class
- *
- * @package Smarty
+ *
+ * @package Smarty
* @subpackage Compiler
*/
-class Smarty_Internal_Compile_Section extends Smarty_Internal_CompileBase {
-
+class Smarty_Internal_Compile_Section extends Smarty_Internal_CompileBase
+{
/**
* Attribute definition: Overwrites base class.
*
@@ -42,8 +41,9 @@ class Smarty_Internal_Compile_Section extends Smarty_Internal_CompileBase {
/**
* Compiles code for the {section} tag
*
- * @param array $args array with attributes from parser
- * @param object $compiler compiler object
+ * @param array $args array with attributes from parser
+ * @param object $compiler compiler object
+ *
* @return string compiled code
*/
public function compile($args, $compiler)
@@ -65,14 +65,15 @@ class Smarty_Internal_Compile_Section extends Smarty_Internal_CompileBase {
foreach ($_attr as $attr_name => $attr_value) {
switch ($attr_name) {
case 'loop':
- $output .= "{$section_props}['loop'] = is_array(\$_loop=$attr_value) ? count(\$_loop) : max(0, (int)\$_loop); unset(\$_loop);\n";
+ $output .= "{$section_props}['loop'] = is_array(\$_loop=$attr_value) ? count(\$_loop) : max(0, (int) \$_loop); unset(\$_loop);\n";
break;
case 'show':
- if (is_bool($attr_value))
+ if (is_bool($attr_value)) {
$show_attr_value = $attr_value ? 'true' : 'false';
- else
- $show_attr_value = "(bool)$attr_value";
+ } else {
+ $show_attr_value = "(bool) $attr_value";
+ }
$output .= "{$section_props}['show'] = $show_attr_value;\n";
break;
@@ -82,32 +83,36 @@ class Smarty_Internal_Compile_Section extends Smarty_Internal_CompileBase {
case 'max':
case 'start':
- $output .= "{$section_props}['$attr_name'] = (int)$attr_value;\n";
+ $output .= "{$section_props}['$attr_name'] = (int) $attr_value;\n";
break;
case 'step':
- $output .= "{$section_props}['$attr_name'] = ((int)$attr_value) == 0 ? 1 : (int)$attr_value;\n";
+ $output .= "{$section_props}['$attr_name'] = ((int) $attr_value) == 0 ? 1 : (int) $attr_value;\n";
break;
}
}
- if (!isset($_attr['show']))
+ if (!isset($_attr['show'])) {
$output .= "{$section_props}['show'] = true;\n";
+ }
- if (!isset($_attr['loop']))
+ if (!isset($_attr['loop'])) {
$output .= "{$section_props}['loop'] = 1;\n";
+ }
- if (!isset($_attr['max']))
+ if (!isset($_attr['max'])) {
$output .= "{$section_props}['max'] = {$section_props}['loop'];\n";
- else
+ } else {
$output .= "if ({$section_props}['max'] < 0)\n" . " {$section_props}['max'] = {$section_props}['loop'];\n";
+ }
- if (!isset($_attr['step']))
+ if (!isset($_attr['step'])) {
$output .= "{$section_props}['step'] = 1;\n";
+ }
- if (!isset($_attr['start']))
+ if (!isset($_attr['start'])) {
$output .= "{$section_props}['start'] = {$section_props}['step'] > 0 ? 0 : {$section_props}['loop']-1;\n";
- else {
+ } else {
$output .= "if ({$section_props}['start'] < 0)\n" . " {$section_props}['start'] = max({$section_props}['step'] > 0 ? 0 : -1, {$section_props}['loop'] + {$section_props}['start']);\n" . "else\n" . " {$section_props}['start'] = min({$section_props}['start'], {$section_props}['step'] > 0 ? {$section_props}['loop'] : {$section_props}['loop']-1);\n";
}
@@ -131,24 +136,25 @@ class Smarty_Internal_Compile_Section extends Smarty_Internal_CompileBase {
$output .= "{$section_props}['last'] = ({$section_props}['iteration'] == {$section_props}['total']);\n";
$output .= "?>";
+
return $output;
}
-
}
/**
* Smarty Internal Plugin Compile Sectionelse Class
- *
- * @package Smarty
+ *
+ * @package Smarty
* @subpackage Compiler
*/
-class Smarty_Internal_Compile_Sectionelse extends Smarty_Internal_CompileBase {
-
+class Smarty_Internal_Compile_Sectionelse extends Smarty_Internal_CompileBase
+{
/**
* Compiles code for the {sectionelse} tag
*
- * @param array $args array with attributes from parser
- * @param object $compiler compiler object
+ * @param array $args array with attributes from parser
+ * @param object $compiler compiler object
+ *
* @return string compiled code
*/
public function compile($args, $compiler)
@@ -161,22 +167,22 @@ class Smarty_Internal_Compile_Sectionelse extends Smarty_Internal_CompileBase {
return "<?php endfor; else: ?>";
}
-
}
/**
* Smarty Internal Plugin Compile Sectionclose Class
- *
- * @package Smarty
+ *
+ * @package Smarty
* @subpackage Compiler
*/
-class Smarty_Internal_Compile_Sectionclose extends Smarty_Internal_CompileBase {
-
+class Smarty_Internal_Compile_Sectionclose extends Smarty_Internal_CompileBase
+{
/**
* Compiles code for the {/section} tag
*
- * @param array $args array with attributes from parser
- * @param object $compiler compiler object
+ * @param array $args array with attributes from parser
+ * @param object $compiler compiler object
+ *
* @return string compiled code
*/
public function compile($args, $compiler)
@@ -197,7 +203,4 @@ class Smarty_Internal_Compile_Sectionclose extends Smarty_Internal_CompileBase {
return "<?php endfor; endif; ?>";
}
}
-
}
-
-?> \ No newline at end of file
diff --git a/library/Smarty/libs/sysplugins/smarty_internal_compile_setfilter.php b/library/Smarty/libs/sysplugins/smarty_internal_compile_setfilter.php
index d1dd90cf8..8e91ba6d0 100644
--- a/library/Smarty/libs/sysplugins/smarty_internal_compile_setfilter.php
+++ b/library/Smarty/libs/sysplugins/smarty_internal_compile_setfilter.php
@@ -1,72 +1,70 @@
-<?php
-/**
- * Smarty Internal Plugin Compile Setfilter
- *
- * Compiles code for setfilter tag
- *
- * @package Smarty
- * @subpackage Compiler
- * @author Uwe Tews
- */
-
-/**
- * Smarty Internal Plugin Compile Setfilter Class
- *
- * @package Smarty
- * @subpackage Compiler
- */
-class Smarty_Internal_Compile_Setfilter extends Smarty_Internal_CompileBase {
-
- /**
- * Compiles code for setfilter tag
- *
- * @param array $args array with attributes from parser
- * @param object $compiler compiler object
- * @param array $parameter array with compilation parameter
- * @return string compiled code
- */
- public function compile($args, $compiler, $parameter)
- {
- $compiler->variable_filter_stack[] = $compiler->template->variable_filters;
- $compiler->template->variable_filters = $parameter['modifier_list'];
- // this tag does not return compiled code
- $compiler->has_code = false;
- return true;
- }
-
-}
-
-/**
- * Smarty Internal Plugin Compile Setfilterclose Class
- *
- * @package Smarty
- * @subpackage Compiler
- */
-class Smarty_Internal_Compile_Setfilterclose extends Smarty_Internal_CompileBase {
-
- /**
- * Compiles code for the {/setfilter} tag
- *
- * This tag does not generate compiled output. It resets variable filter.
- *
- * @param array $args array with attributes from parser
- * @param object $compiler compiler object
- * @return string compiled code
- */
- public function compile($args, $compiler)
- {
- $_attr = $this->getAttributes($compiler, $args);
- // reset variable filter to previous state
- if (count($compiler->variable_filter_stack)) {
- $compiler->template->variable_filters = array_pop($compiler->variable_filter_stack);
- } else {
- $compiler->template->variable_filters = array();
- }
- // this tag does not return compiled code
- $compiler->has_code = false;
- return true;
- }
-
-}
-
-?> \ No newline at end of file
+<?php
+/**
+ * Smarty Internal Plugin Compile Setfilter
+ * Compiles code for setfilter tag
+ *
+ * @package Smarty
+ * @subpackage Compiler
+ * @author Uwe Tews
+ */
+
+/**
+ * Smarty Internal Plugin Compile Setfilter Class
+ *
+ * @package Smarty
+ * @subpackage Compiler
+ */
+class Smarty_Internal_Compile_Setfilter extends Smarty_Internal_CompileBase
+{
+ /**
+ * Compiles code for setfilter tag
+ *
+ * @param array $args array with attributes from parser
+ * @param object $compiler compiler object
+ * @param array $parameter array with compilation parameter
+ *
+ * @return string compiled code
+ */
+ public function compile($args, $compiler, $parameter)
+ {
+ $compiler->variable_filter_stack[] = $compiler->template->variable_filters;
+ $compiler->template->variable_filters = $parameter['modifier_list'];
+ // this tag does not return compiled code
+ $compiler->has_code = false;
+
+ return true;
+ }
+}
+
+/**
+ * Smarty Internal Plugin Compile Setfilterclose Class
+ *
+ * @package Smarty
+ * @subpackage Compiler
+ */
+class Smarty_Internal_Compile_Setfilterclose extends Smarty_Internal_CompileBase
+{
+ /**
+ * Compiles code for the {/setfilter} tag
+ * This tag does not generate compiled output. It resets variable filter.
+ *
+ * @param array $args array with attributes from parser
+ * @param object $compiler compiler object
+ *
+ * @return string compiled code
+ */
+ public function compile($args, $compiler)
+ {
+ $_attr = $this->getAttributes($compiler, $args);
+ // reset variable filter to previous state
+ if (count($compiler->variable_filter_stack)) {
+ $compiler->template->variable_filters = array_pop($compiler->variable_filter_stack);
+ } else {
+ $compiler->template->variable_filters = array();
+ }
+ // this tag does not return compiled code
+ $compiler->has_code = false;
+
+ return true;
+ }
+}
diff --git a/library/Smarty/libs/sysplugins/smarty_internal_compile_while.php b/library/Smarty/libs/sysplugins/smarty_internal_compile_while.php
index d7d986c34..36dc049db 100644
--- a/library/Smarty/libs/sysplugins/smarty_internal_compile_while.php
+++ b/library/Smarty/libs/sysplugins/smarty_internal_compile_while.php
@@ -1,28 +1,28 @@
<?php
/**
* Smarty Internal Plugin Compile While
- *
* Compiles the {while} tag
*
- * @package Smarty
+ * @package Smarty
* @subpackage Compiler
- * @author Uwe Tews
+ * @author Uwe Tews
*/
/**
* Smarty Internal Plugin Compile While Class
*
- * @package Smarty
+ * @package Smarty
* @subpackage Compiler
*/
-class Smarty_Internal_Compile_While extends Smarty_Internal_CompileBase {
-
+class Smarty_Internal_Compile_While extends Smarty_Internal_CompileBase
+{
/**
* Compiles code for the {while} tag
*
- * @param array $args array with attributes from parser
- * @param object $compiler compiler object
- * @param array $parameter array with compilation parameter
+ * @param array $args array with attributes from parser
+ * @param object $compiler compiler object
+ * @param array $parameter array with compilation parameter
+ *
* @return string compiled code
*/
public function compile($args, $compiler, $parameter)
@@ -31,7 +31,7 @@ class Smarty_Internal_Compile_While extends Smarty_Internal_CompileBase {
$_attr = $this->getAttributes($compiler, $args);
$this->openTag($compiler, 'while', $compiler->nocache);
- if (!array_key_exists("if condition",$parameter)) {
+ if (!array_key_exists("if condition", $parameter)) {
$compiler->trigger_template_error("missing while condition", $compiler->lex->taglineno);
}
@@ -51,32 +51,33 @@ class Smarty_Internal_Compile_While extends Smarty_Internal_CompileBase {
}
if (is_array($parameter['if condition']['var'])) {
$_output = "<?php if (!isset(\$_smarty_tpl->tpl_vars[" . $parameter['if condition']['var']['var'] . "]) || !is_array(\$_smarty_tpl->tpl_vars[" . $parameter['if condition']['var']['var'] . "]->value)) \$_smarty_tpl->createLocalArrayVariable(" . $parameter['if condition']['var']['var'] . "$_nocache);\n";
- $_output .= "while (\$_smarty_tpl->tpl_vars[" . $parameter['if condition']['var']['var'] . "]->value" . $parameter['if condition']['var']['smarty_internal_index'] . " = " . $parameter['if condition']['value'] . "){?>";
+ $_output .= "while (\$_smarty_tpl->tpl_vars[" . $parameter['if condition']['var']['var'] . "]->value" . $parameter['if condition']['var']['smarty_internal_index'] . " = " . $parameter['if condition']['value'] . ") {?>";
} else {
$_output = "<?php if (!isset(\$_smarty_tpl->tpl_vars[" . $parameter['if condition']['var'] . "])) \$_smarty_tpl->tpl_vars[" . $parameter['if condition']['var'] . "] = new Smarty_Variable(null{$_nocache});";
- $_output .= "while (\$_smarty_tpl->tpl_vars[" . $parameter['if condition']['var'] . "]->value = " . $parameter['if condition']['value'] . "){?>";
+ $_output .= "while (\$_smarty_tpl->tpl_vars[" . $parameter['if condition']['var'] . "]->value = " . $parameter['if condition']['value'] . ") {?>";
}
+
return $_output;
} else {
- return "<?php while ({$parameter['if condition']}){?>";
+ return "<?php while ({$parameter['if condition']}) {?>";
}
}
-
}
/**
* Smarty Internal Plugin Compile Whileclose Class
*
- * @package Smarty
+ * @package Smarty
* @subpackage Compiler
*/
-class Smarty_Internal_Compile_Whileclose extends Smarty_Internal_CompileBase {
-
+class Smarty_Internal_Compile_Whileclose extends Smarty_Internal_CompileBase
+{
/**
* Compiles code for the {/while} tag
*
- * @param array $args array with attributes from parser
- * @param object $compiler compiler object
+ * @param array $args array with attributes from parser
+ * @param object $compiler compiler object
+ *
* @return string compiled code
*/
public function compile($args, $compiler)
@@ -86,9 +87,7 @@ class Smarty_Internal_Compile_Whileclose extends Smarty_Internal_CompileBase {
$compiler->tag_nocache = true;
}
$compiler->nocache = $this->closeTag($compiler, array('while'));
+
return "<?php }?>";
}
-
}
-
-?> \ No newline at end of file
diff --git a/library/Smarty/libs/sysplugins/smarty_internal_compilebase.php b/library/Smarty/libs/sysplugins/smarty_internal_compilebase.php
index 5fb56f371..f78f15f40 100644
--- a/library/Smarty/libs/sysplugins/smarty_internal_compilebase.php
+++ b/library/Smarty/libs/sysplugins/smarty_internal_compilebase.php
@@ -2,19 +2,19 @@
/**
* Smarty Internal Plugin CompileBase
*
- * @package Smarty
+ * @package Smarty
* @subpackage Compiler
- * @author Uwe Tews
+ * @author Uwe Tews
*/
/**
* This class does extend all internal compile plugins
*
- * @package Smarty
+ * @package Smarty
* @subpackage Compiler
*/
-abstract class Smarty_Internal_CompileBase {
-
+abstract class Smarty_Internal_CompileBase
+{
/**
* Array of names of required attribute required by tag
*
@@ -43,15 +43,15 @@ abstract class Smarty_Internal_CompileBase {
/**
* This function checks if the attributes passed are valid
- *
* The attributes passed for the tag to compile are checked against the list of required and
* optional attributes. Required attributes must be present. Optional attributes are check against
* the corresponding list. The keyword '_any' specifies that any attribute will be accepted
* as valid
*
- * @param object $compiler compiler object
- * @param array $attributes attributes applied to the tag
- * @return array of mapped attributes for further processing
+ * @param object $compiler compiler object
+ * @param array $attributes attributes applied to the tag
+ *
+ * @return array of mapped attributes for further processing
*/
public function getAttributes($compiler, $attributes)
{
@@ -64,7 +64,7 @@ abstract class Smarty_Internal_CompileBase {
if (in_array(trim($mixed, '\'"'), $this->option_flags)) {
$_indexed_attr[trim($mixed, '\'"')] = true;
// shorthand attribute ?
- } else if (isset($this->shorttag_order[$key])) {
+ } elseif (isset($this->shorttag_order[$key])) {
$_indexed_attr[$this->shorttag_order[$key]] = $mixed;
} else {
// too many shorthands
@@ -77,13 +77,13 @@ abstract class Smarty_Internal_CompileBase {
if (in_array($kv['key'], $this->option_flags)) {
if (is_bool($kv['value'])) {
$_indexed_attr[$kv['key']] = $kv['value'];
- } else if (is_string($kv['value']) && in_array(trim($kv['value'], '\'"'), array('true', 'false'))) {
+ } elseif (is_string($kv['value']) && in_array(trim($kv['value'], '\'"'), array('true', 'false'))) {
if (trim($kv['value']) == 'true') {
$_indexed_attr[$kv['key']] = true;
} else {
$_indexed_attr[$kv['key']] = false;
}
- } else if (is_numeric($kv['value']) && in_array($kv['value'], array(0, 1))) {
+ } elseif (is_numeric($kv['value']) && in_array($kv['value'], array(0, 1))) {
if ($kv['value'] == 1) {
$_indexed_attr[$kv['key']] = true;
} else {
@@ -105,7 +105,7 @@ abstract class Smarty_Internal_CompileBase {
$compiler->trigger_template_error("missing \"" . $attr . "\" attribute", $compiler->lex->taglineno);
}
}
- // check for unallowed attributes
+ // check for not allowed attributes
if ($this->optional_attributes != array('_any')) {
$tmp_array = array_merge($this->required_attributes, $this->optional_attributes, $this->option_flags);
foreach ($_indexed_attr as $key => $dummy) {
@@ -126,12 +126,11 @@ abstract class Smarty_Internal_CompileBase {
/**
* Push opening tag name on stack
- *
* Optionally additional data can be saved on stack
*
- * @param object $compiler compiler object
- * @param string $openTag the opening tag's name
- * @param mixed $data optional data saved
+ * @param object $compiler compiler object
+ * @param string $openTag the opening tag's name
+ * @param mixed $data optional data saved
*/
public function openTag($compiler, $openTag, $data = null)
{
@@ -140,12 +139,12 @@ abstract class Smarty_Internal_CompileBase {
/**
* Pop closing tag
- *
* Raise an error if this stack-top doesn't match with expected opening tags
*
- * @param object $compiler compiler object
- * @param array|string $expectedTag the expected opening tag names
- * @return mixed any type the opening tag's name or saved data
+ * @param object $compiler compiler object
+ * @param array|string $expectedTag the expected opening tag names
+ *
+ * @return mixed any type the opening tag's name or saved data
*/
public function closeTag($compiler, $expectedTag)
{
@@ -163,14 +162,13 @@ abstract class Smarty_Internal_CompileBase {
}
}
// wrong nesting of tags
- $compiler->trigger_template_error("unclosed {" . $_openTag . "} tag");
+ $compiler->trigger_template_error("unclosed {$compiler->smarty->left_delimiter}" . $_openTag . "{$compiler->smarty->right_delimiter} tag");
+
return;
}
// wrong nesting of tags
$compiler->trigger_template_error("unexpected closing tag", $compiler->lex->taglineno);
+
return;
}
-
}
-
-?> \ No newline at end of file
diff --git a/library/Smarty/libs/sysplugins/smarty_internal_config.php b/library/Smarty/libs/sysplugins/smarty_internal_config.php
index a309ec9ff..25694d5a9 100644
--- a/library/Smarty/libs/sysplugins/smarty_internal_config.php
+++ b/library/Smarty/libs/sysplugins/smarty_internal_config.php
@@ -2,27 +2,23 @@
/**
* Smarty Internal Plugin Config
*
- * @package Smarty
+ * @package Smarty
* @subpackage Config
- * @author Uwe Tews
+ * @author Uwe Tews
*/
/**
* Smarty Internal Plugin Config
- *
* Main class for config variables
*
- * @package Smarty
+ * @package Smarty
* @subpackage Config
- *
- * @property Smarty_Config_Source $source
- * @property Smarty_Config_Compiled $compiled
* @ignore
*/
-class Smarty_Internal_Config {
-
+class Smarty_Internal_Config
+{
/**
- * Samrty instance
+ * Smarty instance
*
* @var Smarty object
*/
@@ -35,6 +31,7 @@ class Smarty_Internal_Config {
public $data = null;
/**
* Config resource
+ *
* @var string
*/
public $config_resource = null;
@@ -58,6 +55,7 @@ class Smarty_Internal_Config {
public $compiled_timestamp = null;
/**
* flag if compiled config file is invalid and must be (re)compiled
+ *
* @var bool
*/
public $mustCompile = null;
@@ -72,8 +70,8 @@ class Smarty_Internal_Config {
* Constructor of config file object
*
* @param string $config_resource config file resource name
- * @param Smarty $smarty Smarty instance
- * @param object $data object for config vars storage
+ * @param Smarty $smarty Smarty instance
+ * @param object $data object for config vars storage
*/
public function __construct($config_resource, $smarty, $data = null)
{
@@ -90,8 +88,8 @@ class Smarty_Internal_Config {
public function getCompiledFilepath()
{
return $this->compiled_filepath === null ?
- ($this->compiled_filepath = $this->buildCompiledFilepath()) :
- $this->compiled_filepath;
+ ($this->compiled_filepath = $this->buildCompiledFilepath()) :
+ $this->compiled_filepath;
}
/**
@@ -103,25 +101,26 @@ class Smarty_Internal_Config {
{
$_compile_id = isset($this->smarty->compile_id) ? preg_replace('![^\w\|]+!', '_', $this->smarty->compile_id) : null;
$_flag = (int) $this->smarty->config_read_hidden + (int) $this->smarty->config_booleanize * 2
- + (int) $this->smarty->config_overwrite * 4;
- $_filepath = sha1($this->source->name . $_flag);
+ + (int) $this->smarty->config_overwrite * 4;
+ $_filepath = sha1(realpath($this->source->filepath) . $_flag);
// if use_sub_dirs, break file into directories
if ($this->smarty->use_sub_dirs) {
$_filepath = substr($_filepath, 0, 2) . DS
- . substr($_filepath, 2, 2) . DS
- . substr($_filepath, 4, 2) . DS
- . $_filepath;
+ . substr($_filepath, 2, 2) . DS
+ . substr($_filepath, 4, 2) . DS
+ . $_filepath;
}
$_compile_dir_sep = $this->smarty->use_sub_dirs ? DS : '^';
if (isset($_compile_id)) {
$_filepath = $_compile_id . $_compile_dir_sep . $_filepath;
}
$_compile_dir = $this->smarty->getCompileDir();
+
return $_compile_dir . $_filepath . '.' . basename($this->source->name) . '.config' . '.php';
}
/**
- * Returns the timpestamp of the compiled file
+ * Returns the timestamp of the compiled file
*
* @return integer the file timestamp
*/
@@ -134,7 +133,6 @@ class Smarty_Internal_Config {
/**
* Returns if the current config file must be compiled
- *
* It does compare the timestamps of config source and the compiled config and checks the force compile configuration
*
* @return boolean true if the file must be compiled
@@ -142,13 +140,12 @@ class Smarty_Internal_Config {
public function mustCompile()
{
return $this->mustCompile === null ?
- $this->mustCompile = ($this->smarty->force_compile || $this->getCompiledTimestamp () === false || $this->smarty->compile_check && $this->getCompiledTimestamp () < $this->source->timestamp):
+ $this->mustCompile = ($this->smarty->force_compile || $this->getCompiledTimestamp() === false || $this->smarty->compile_check && $this->getCompiledTimestamp() < $this->source->timestamp) :
$this->mustCompile;
}
/**
* Returns the compiled config file
- *
* It checks if the config file must be compiled or just read the compiled version
*
* @return string the compiled config file
@@ -163,6 +160,7 @@ class Smarty_Internal_Config {
$this->compiled_config = file_get_contents($this->getCompiledFilepath());
}
}
+
return $this->compiled_config;
}
@@ -187,14 +185,15 @@ class Smarty_Internal_Config {
// call compiler
try {
$this->compiler_object->compileSource($this);
- } catch (Exception $e) {
+ }
+ catch (Exception $e) {
// restore old timestamp in case of error
if ($this->smarty->compile_locking && $saved_timestamp) {
touch($this->getCompiledFilepath(), $saved_timestamp);
}
throw $e;
}
- // compiling succeded
+ // compiling succeeded
// write compiled template
Smarty_Internal_Write_File::writeFile($this->getCompiledFilepath(), $this->getCompiledConfig(), $this->smarty);
}
@@ -202,8 +201,10 @@ class Smarty_Internal_Config {
/**
* load config variables
*
- * @param mixed $sections array of section names, single section or null
- * @param object $scope global,parent or local
+ * @param mixed $sections array of section names, single section or null
+ * @param string $scope global,parent or local
+ *
+ * @throws Exception
*/
public function loadConfigVars($sections = null, $scope = 'local')
{
@@ -240,9 +241,8 @@ class Smarty_Internal_Config {
}
// scan sections
if (!empty($sections)) {
- $sections = array_flip((array) $sections);
- foreach ($_config_vars['sections'] as $this_section => $dummy) {
- if (isset($sections[$this_section])) {
+ foreach ((array) $sections as $this_section) {
+ if (isset($_config_vars['sections'][$this_section])) {
foreach ($_config_vars['sections'][$this_section]['vars'] as $variable => $value) {
if ($this->smarty->config_overwrite || !isset($scope_ptr->config_vars[$variable])) {
$scope_ptr->config_vars[$variable] = $value;
@@ -258,8 +258,9 @@ class Smarty_Internal_Config {
/**
* set Smarty property in template context
*
- * @param string $property_name property name
- * @param mixed $value value
+ * @param string $property_name property name
+ * @param mixed $value value
+ *
* @throws SmartyException if $property_name is not valid
*/
public function __set($property_name, $value)
@@ -268,6 +269,7 @@ class Smarty_Internal_Config {
case 'source':
case 'compiled':
$this->$property_name = $value;
+
return;
}
@@ -277,7 +279,9 @@ class Smarty_Internal_Config {
/**
* get Smarty property in template context
*
- * @param string $property_name property name
+ * @param string $property_name property name
+ *
+ * @return \Smarty_Config_Source|\Smarty_Template_Compiled
* @throws SmartyException if $property_name is not valid
*/
public function __get($property_name)
@@ -288,16 +292,15 @@ class Smarty_Internal_Config {
throw new SmartyException("Unable to parse resource name \"{$this->config_resource}\"");
}
$this->source = Smarty_Resource::config($this);
+
return $this->source;
case 'compiled':
$this->compiled = $this->source->getCompiled($this);
+
return $this->compiled;
}
throw new SmartyException("config attribute '$property_name' does not exist.");
}
-
}
-
-?> \ No newline at end of file
diff --git a/library/Smarty/libs/sysplugins/smarty_internal_config_file_compiler.php b/library/Smarty/libs/sysplugins/smarty_internal_config_file_compiler.php
index b16a6940d..117310439 100644
--- a/library/Smarty/libs/sysplugins/smarty_internal_config_file_compiler.php
+++ b/library/Smarty/libs/sysplugins/smarty_internal_config_file_compiler.php
@@ -1,23 +1,22 @@
<?php
/**
* Smarty Internal Plugin Config File Compiler
- *
* This is the config file compiler class. It calls the lexer and parser to
* perform the compiling.
*
- * @package Smarty
+ * @package Smarty
* @subpackage Config
- * @author Uwe Tews
+ * @author Uwe Tews
*/
/**
* Main config file compiler class
*
- * @package Smarty
+ * @package Smarty
* @subpackage Config
*/
-class Smarty_Internal_Config_File_Compiler {
-
+class Smarty_Internal_Config_File_Compiler
+{
/**
* Lexer object
*
@@ -69,7 +68,8 @@ class Smarty_Internal_Config_File_Compiler {
* Method to compile a Smarty template.
*
* @param Smarty_Internal_Config $config config object
- * @return bool true if compiling succeeded, false if it failed
+ *
+ * @return bool true if compiling succeeded, false if it failed
*/
public function compileSource(Smarty_Internal_Config $config)
{
@@ -84,28 +84,46 @@ class Smarty_Internal_Config_File_Compiler {
return true;
}
// init the lexer/parser to compile the config file
- $lex = new Smarty_Internal_Configfilelexer($_content, $this->smarty);
+ $lex = new Smarty_Internal_Configfilelexer($_content, $this);
$parser = new Smarty_Internal_Configfileparser($lex, $this);
- if ($this->smarty->_parserdebug) $parser->PrintTrace();
+
+ if (function_exists('mb_internal_encoding') && ((int) ini_get('mbstring.func_overload')) & 2) {
+ $mbEncoding = mb_internal_encoding();
+ mb_internal_encoding('ASCII');
+ } else {
+ $mbEncoding = null;
+ }
+
+
+ if ($this->smarty->_parserdebug) {
+ $parser->PrintTrace();
+ }
// get tokens from lexer and parse them
while ($lex->yylex()) {
- if ($this->smarty->_parserdebug) echo "<br>Parsing {$parser->yyTokenName[$lex->token]} Token {$lex->value} Line {$lex->line} \n";
+ if ($this->smarty->_parserdebug) {
+ echo "<br>Parsing {$parser->yyTokenName[$lex->token]} Token {$lex->value} Line {$lex->line} \n";
+ }
$parser->doParse($lex->token, $lex->value);
}
// finish parsing process
$parser->doParse(0, 0);
+
+ if ($mbEncoding) {
+ mb_internal_encoding($mbEncoding);
+ }
+
$config->compiled_config = '<?php $_config_vars = ' . var_export($this->config_data, true) . '; ?>';
}
/**
* display compiler error messages without dying
- *
* If parameter $args is empty it is a parser detected syntax error.
- * In this case the parser is called to obtain information about exspected tokens.
- *
+ * In this case the parser is called to obtain information about expected tokens.
* If parameter $args contains a string this is used as error message
*
* @param string $args individual error message or null
+ *
+ * @throws SmartyCompilerException
*/
public function trigger_config_file_error($args = null)
{
@@ -117,12 +135,12 @@ class Smarty_Internal_Config_File_Compiler {
// $line--;
}
$match = preg_split("/\n/", $this->lex->data);
- $error_text = "Syntax error in config file '{$this->config->source->filepath}' on line {$line} '{$match[$line-1]}' ";
+ $error_text = "Syntax error in config file '{$this->config->source->filepath}' on line {$line} '{$match[$line - 1]}' ";
if (isset($args)) {
// individual error message
$error_text .= $args;
} else {
- // exspected token from parser
+ // expected token from parser
foreach ($this->parser->yy_get_expected_tokens($this->parser->yymajor) as $token) {
$exp_token = $this->parser->yyTokenName[$token];
if (isset($this->lex->smarty_token_names[$exp_token])) {
@@ -138,7 +156,4 @@ class Smarty_Internal_Config_File_Compiler {
}
throw new SmartyCompilerException($error_text);
}
-
}
-
-?> \ No newline at end of file
diff --git a/library/Smarty/libs/sysplugins/smarty_internal_configfilelexer.php b/library/Smarty/libs/sysplugins/smarty_internal_configfilelexer.php
index bade2fe74..f0292196b 100644
--- a/library/Smarty/libs/sysplugins/smarty_internal_configfilelexer.php
+++ b/library/Smarty/libs/sysplugins/smarty_internal_configfilelexer.php
@@ -1,15 +1,16 @@
<?php
/**
-* Smarty Internal Plugin Configfilelexer
-*
-* This is the lexer to break the config file source into tokens
-* @package Smarty
-* @subpackage Config
-* @author Uwe Tews
-*/
+ * Smarty Internal Plugin Configfilelexer
+ * This is the lexer to break the config file source into tokens
+ *
+ * @package Smarty
+ * @subpackage Config
+ * @author Uwe Tews
+ */
+
/**
-* Smarty Internal Plugin Configfilelexer
-*/
+ * Smarty Internal Plugin Configfilelexer
+ */
class Smarty_Internal_Configfilelexer
{
@@ -20,96 +21,119 @@ class Smarty_Internal_Configfilelexer
public $node;
public $line;
private $state = 1;
- public $smarty_token_names = array ( // Text for parser error messages
- );
-
+ public $yyTraceFILE;
+ public $yyTracePrompt;
+ public $state_name = array(1 => 'START', 2 => 'VALUE', 3 => 'NAKED_STRING_VALUE', 4 => 'COMMENT', 5 => 'SECTION', 6 => 'TRIPPLE');
+ public $smarty_token_names = array( // Text for parser error messages
+ );
- function __construct($data, $smarty)
+ function __construct($data, $compiler)
{
// set instance object
self::instance($this);
$this->data = $data . "\n"; //now all lines are \n-terminated
$this->counter = 0;
+ if (preg_match('/^\xEF\xBB\xBF/', $this->data, $match)) {
+ $this->counter += strlen($match[0]);
+ }
$this->line = 1;
- $this->smarty = $smarty;
- $this->mbstring_overload = ini_get('mbstring.func_overload') & 2;
+ $this->compiler = $compiler;
+ $this->smarty = $compiler->smarty;
}
+
public static function &instance($new_instance = null)
{
static $instance = null;
- if (isset($new_instance) && is_object($new_instance))
+ if (isset($new_instance) && is_object($new_instance)) {
$instance = $new_instance;
+ }
return $instance;
}
-
+ public function PrintTrace()
+ {
+ $this->yyTraceFILE = fopen('php://output', 'w');
+ $this->yyTracePrompt = '<br>';
+ }
private $_yy_state = 1;
private $_yy_stack = array();
- function yylex()
+ public function yylex()
{
return $this->{'yylex' . $this->_yy_state}();
}
- function yypushstate($state)
+ public function yypushstate($state)
{
+ if ($this->yyTraceFILE) {
+ fprintf($this->yyTraceFILE, "%sState push %s\n", $this->yyTracePrompt, isset($this->state_name[$this->_yy_state]) ? $this->state_name[$this->_yy_state] : $this->_yy_state);
+ }
array_push($this->_yy_stack, $this->_yy_state);
$this->_yy_state = $state;
+ if ($this->yyTraceFILE) {
+ fprintf($this->yyTraceFILE, "%snew State %s\n", $this->yyTracePrompt, isset($this->state_name[$this->_yy_state]) ? $this->state_name[$this->_yy_state] : $this->_yy_state);
+ }
}
- function yypopstate()
+ public function yypopstate()
{
+ if ($this->yyTraceFILE) {
+ fprintf($this->yyTraceFILE, "%sState pop %s\n", $this->yyTracePrompt, isset($this->state_name[$this->_yy_state]) ? $this->state_name[$this->_yy_state] : $this->_yy_state);
+ }
$this->_yy_state = array_pop($this->_yy_stack);
+ if ($this->yyTraceFILE) {
+ fprintf($this->yyTraceFILE, "%snew State %s\n", $this->yyTracePrompt, isset($this->state_name[$this->_yy_state]) ? $this->state_name[$this->_yy_state] : $this->_yy_state);
+ }
}
- function yybegin($state)
+ public function yybegin($state)
{
$this->_yy_state = $state;
+ if ($this->yyTraceFILE) {
+ fprintf($this->yyTraceFILE, "%sState set %s\n", $this->yyTracePrompt, isset($this->state_name[$this->_yy_state]) ? $this->state_name[$this->_yy_state] : $this->_yy_state);
+ }
}
-
-
-
- function yylex1()
+ public function yylex1()
{
- $tokenMap = array (
- 1 => 0,
- 2 => 0,
- 3 => 0,
- 4 => 0,
- 5 => 0,
- 6 => 0,
- 7 => 0,
- 8 => 0,
- );
- if ($this->counter >= ($this->mbstring_overload ? mb_strlen($this->data,'latin1'): strlen($this->data))) {
+ $tokenMap = array(
+ 1 => 0,
+ 2 => 0,
+ 3 => 0,
+ 4 => 0,
+ 5 => 0,
+ 6 => 0,
+ 7 => 0,
+ 8 => 0,
+ );
+ if ($this->counter >= strlen($this->data)) {
return false; // end of input
}
$yy_global_pattern = "/\G(#|;)|\G(\\[)|\G(\\])|\G(=)|\G([ \t\r]+)|\G(\n)|\G([0-9]*[a-zA-Z_]\\w*)|\G([\S\s])/iS";
do {
- if ($this->mbstring_overload ? preg_match($yy_global_pattern, mb_substr($this->data, $this->counter,2000000000,'latin1'), $yymatches) : preg_match($yy_global_pattern,$this->data, $yymatches, null, $this->counter)) {
+ if (preg_match($yy_global_pattern, $this->data, $yymatches, null, $this->counter)) {
$yysubmatches = $yymatches;
$yymatches = array_filter($yymatches, 'strlen'); // remove empty sub-patterns
if (!count($yymatches)) {
throw new Exception('Error: lexing failed because a rule matched' .
- ' an empty string. Input "' . substr($this->data,
- $this->counter, 5) . '... state START');
+ ' an empty string. Input "' . substr($this->data,
+ $this->counter, 5) . '... state START');
}
next($yymatches); // skip global match
$this->token = key($yymatches); // token number
if ($tokenMap[$this->token]) {
// extract sub-patterns for passing to lex function
$yysubmatches = array_slice($yysubmatches, $this->token + 1,
- $tokenMap[$this->token]);
+ $tokenMap[$this->token]);
} else {
$yysubmatches = array();
}
$this->value = current($yymatches); // token value
$r = $this->{'yy_r1_' . $this->token}($yysubmatches);
if ($r === null) {
- $this->counter += ($this->mbstring_overload ? mb_strlen($this->value,'latin1'): strlen($this->value));
+ $this->counter += strlen($this->value);
$this->line += substr_count($this->value, "\n");
// accept this token
return true;
@@ -118,110 +142,115 @@ class Smarty_Internal_Configfilelexer
// process this token in the new state
return $this->yylex();
} elseif ($r === false) {
- $this->counter += ($this->mbstring_overload ? mb_strlen($this->value,'latin1'): strlen($this->value));
+ $this->counter += strlen($this->value);
$this->line += substr_count($this->value, "\n");
- if ($this->counter >= ($this->mbstring_overload ? mb_strlen($this->data,'latin1'): strlen($this->data))) {
+ if ($this->counter >= strlen($this->data)) {
return false; // end of input
}
// skip this token
continue;
- } } else {
+ }
+ } else {
throw new Exception('Unexpected input at line' . $this->line .
- ': ' . $this->data[$this->counter]);
+ ': ' . $this->data[$this->counter]);
}
break;
} while (true);
-
} // end function
-
const START = 1;
+
function yy_r1_1($yy_subpatterns)
{
- $this->token = Smarty_Internal_Configfileparser::TPC_COMMENTSTART;
- $this->yypushstate(self::COMMENT);
+ $this->token = Smarty_Internal_Configfileparser::TPC_COMMENTSTART;
+ $this->yypushstate(self::COMMENT);
}
+
function yy_r1_2($yy_subpatterns)
{
- $this->token = Smarty_Internal_Configfileparser::TPC_OPENB;
- $this->yypushstate(self::SECTION);
+ $this->token = Smarty_Internal_Configfileparser::TPC_OPENB;
+ $this->yypushstate(self::SECTION);
}
+
function yy_r1_3($yy_subpatterns)
{
- $this->token = Smarty_Internal_Configfileparser::TPC_CLOSEB;
+ $this->token = Smarty_Internal_Configfileparser::TPC_CLOSEB;
}
+
function yy_r1_4($yy_subpatterns)
{
- $this->token = Smarty_Internal_Configfileparser::TPC_EQUAL;
- $this->yypushstate(self::VALUE);
+ $this->token = Smarty_Internal_Configfileparser::TPC_EQUAL;
+ $this->yypushstate(self::VALUE);
}
+
function yy_r1_5($yy_subpatterns)
{
- return false;
+ return false;
}
+
function yy_r1_6($yy_subpatterns)
{
- $this->token = Smarty_Internal_Configfileparser::TPC_NEWLINE;
+ $this->token = Smarty_Internal_Configfileparser::TPC_NEWLINE;
}
+
function yy_r1_7($yy_subpatterns)
{
- $this->token = Smarty_Internal_Configfileparser::TPC_ID;
+ $this->token = Smarty_Internal_Configfileparser::TPC_ID;
}
+
function yy_r1_8($yy_subpatterns)
{
- $this->token = Smarty_Internal_Configfileparser::TPC_OTHER;
+ $this->token = Smarty_Internal_Configfileparser::TPC_OTHER;
}
-
-
- function yylex2()
+ public function yylex2()
{
- $tokenMap = array (
- 1 => 0,
- 2 => 0,
- 3 => 0,
- 4 => 0,
- 5 => 0,
- 6 => 0,
- 7 => 0,
- 8 => 0,
- 9 => 0,
- );
- if ($this->counter >= ($this->mbstring_overload ? mb_strlen($this->data,'latin1'): strlen($this->data))) {
+ $tokenMap = array(
+ 1 => 0,
+ 2 => 0,
+ 3 => 0,
+ 4 => 0,
+ 5 => 0,
+ 6 => 0,
+ 7 => 0,
+ 8 => 0,
+ 9 => 0,
+ );
+ if ($this->counter >= strlen($this->data)) {
return false; // end of input
}
$yy_global_pattern = "/\G([ \t\r]+)|\G(\\d+\\.\\d+(?=[ \t\r]*[\n#;]))|\G(\\d+(?=[ \t\r]*[\n#;]))|\G(\"\"\")|\G('[^'\\\\]*(?:\\\\.[^'\\\\]*)*'(?=[ \t\r]*[\n#;]))|\G(\"[^\"\\\\]*(?:\\\\.[^\"\\\\]*)*\"(?=[ \t\r]*[\n#;]))|\G([a-zA-Z]+(?=[ \t\r]*[\n#;]))|\G([^\n]+?(?=[ \t\r]*\n))|\G(\n)/iS";
do {
- if ($this->mbstring_overload ? preg_match($yy_global_pattern, mb_substr($this->data, $this->counter,2000000000,'latin1'), $yymatches) : preg_match($yy_global_pattern,$this->data, $yymatches, null, $this->counter)) {
+ if (preg_match($yy_global_pattern, $this->data, $yymatches, null, $this->counter)) {
$yysubmatches = $yymatches;
$yymatches = array_filter($yymatches, 'strlen'); // remove empty sub-patterns
if (!count($yymatches)) {
throw new Exception('Error: lexing failed because a rule matched' .
- ' an empty string. Input "' . substr($this->data,
- $this->counter, 5) . '... state VALUE');
+ ' an empty string. Input "' . substr($this->data,
+ $this->counter, 5) . '... state VALUE');
}
next($yymatches); // skip global match
$this->token = key($yymatches); // token number
if ($tokenMap[$this->token]) {
// extract sub-patterns for passing to lex function
$yysubmatches = array_slice($yysubmatches, $this->token + 1,
- $tokenMap[$this->token]);
+ $tokenMap[$this->token]);
} else {
$yysubmatches = array();
}
$this->value = current($yymatches); // token value
$r = $this->{'yy_r2_' . $this->token}($yysubmatches);
if ($r === null) {
- $this->counter += ($this->mbstring_overload ? mb_strlen($this->value,'latin1'): strlen($this->value));
+ $this->counter += strlen($this->value);
$this->line += substr_count($this->value, "\n");
// accept this token
return true;
@@ -230,119 +259,125 @@ class Smarty_Internal_Configfilelexer
// process this token in the new state
return $this->yylex();
} elseif ($r === false) {
- $this->counter += ($this->mbstring_overload ? mb_strlen($this->value,'latin1'): strlen($this->value));
+ $this->counter += strlen($this->value);
$this->line += substr_count($this->value, "\n");
- if ($this->counter >= ($this->mbstring_overload ? mb_strlen($this->data,'latin1'): strlen($this->data))) {
+ if ($this->counter >= strlen($this->data)) {
return false; // end of input
}
// skip this token
continue;
- } } else {
+ }
+ } else {
throw new Exception('Unexpected input at line' . $this->line .
- ': ' . $this->data[$this->counter]);
+ ': ' . $this->data[$this->counter]);
}
break;
} while (true);
-
} // end function
-
const VALUE = 2;
+
function yy_r2_1($yy_subpatterns)
{
- return false;
+ return false;
}
+
function yy_r2_2($yy_subpatterns)
{
- $this->token = Smarty_Internal_Configfileparser::TPC_FLOAT;
- $this->yypopstate();
+ $this->token = Smarty_Internal_Configfileparser::TPC_FLOAT;
+ $this->yypopstate();
}
+
function yy_r2_3($yy_subpatterns)
{
- $this->token = Smarty_Internal_Configfileparser::TPC_INT;
- $this->yypopstate();
+ $this->token = Smarty_Internal_Configfileparser::TPC_INT;
+ $this->yypopstate();
}
+
function yy_r2_4($yy_subpatterns)
{
- $this->token = Smarty_Internal_Configfileparser::TPC_TRIPPLE_QUOTES;
- $this->yypushstate(self::TRIPPLE);
+ $this->token = Smarty_Internal_Configfileparser::TPC_TRIPPLE_QUOTES;
+ $this->yypushstate(self::TRIPPLE);
}
+
function yy_r2_5($yy_subpatterns)
{
- $this->token = Smarty_Internal_Configfileparser::TPC_SINGLE_QUOTED_STRING;
- $this->yypopstate();
+ $this->token = Smarty_Internal_Configfileparser::TPC_SINGLE_QUOTED_STRING;
+ $this->yypopstate();
}
+
function yy_r2_6($yy_subpatterns)
{
- $this->token = Smarty_Internal_Configfileparser::TPC_DOUBLE_QUOTED_STRING;
- $this->yypopstate();
+ $this->token = Smarty_Internal_Configfileparser::TPC_DOUBLE_QUOTED_STRING;
+ $this->yypopstate();
}
+
function yy_r2_7($yy_subpatterns)
{
- if (!$this->smarty->config_booleanize || !in_array(strtolower($this->value), Array("true", "false", "on", "off", "yes", "no")) ) {
- $this->yypopstate();
- $this->yypushstate(self::NAKED_STRING_VALUE);
- return true; //reprocess in new state
- } else {
- $this->token = Smarty_Internal_Configfileparser::TPC_BOOL;
- $this->yypopstate();
- }
+ if (!$this->smarty->config_booleanize || !in_array(strtolower($this->value), Array("true", "false", "on", "off", "yes", "no"))) {
+ $this->yypopstate();
+ $this->yypushstate(self::NAKED_STRING_VALUE);
+ return true; //reprocess in new state
+ } else {
+ $this->token = Smarty_Internal_Configfileparser::TPC_BOOL;
+ $this->yypopstate();
+ }
}
+
function yy_r2_8($yy_subpatterns)
{
- $this->token = Smarty_Internal_Configfileparser::TPC_NAKED_STRING;
- $this->yypopstate();
+ $this->token = Smarty_Internal_Configfileparser::TPC_NAKED_STRING;
+ $this->yypopstate();
}
+
function yy_r2_9($yy_subpatterns)
{
- $this->token = Smarty_Internal_Configfileparser::TPC_NAKED_STRING;
- $this->value = "";
- $this->yypopstate();
+ $this->token = Smarty_Internal_Configfileparser::TPC_NAKED_STRING;
+ $this->value = "";
+ $this->yypopstate();
}
-
-
- function yylex3()
+ public function yylex3()
{
- $tokenMap = array (
- 1 => 0,
- );
- if ($this->counter >= ($this->mbstring_overload ? mb_strlen($this->data,'latin1'): strlen($this->data))) {
+ $tokenMap = array(
+ 1 => 0,
+ );
+ if ($this->counter >= strlen($this->data)) {
return false; // end of input
}
$yy_global_pattern = "/\G([^\n]+?(?=[ \t\r]*\n))/iS";
do {
- if ($this->mbstring_overload ? preg_match($yy_global_pattern, mb_substr($this->data, $this->counter,2000000000,'latin1'), $yymatches) : preg_match($yy_global_pattern,$this->data, $yymatches, null, $this->counter)) {
+ if (preg_match($yy_global_pattern, $this->data, $yymatches, null, $this->counter)) {
$yysubmatches = $yymatches;
$yymatches = array_filter($yymatches, 'strlen'); // remove empty sub-patterns
if (!count($yymatches)) {
throw new Exception('Error: lexing failed because a rule matched' .
- ' an empty string. Input "' . substr($this->data,
- $this->counter, 5) . '... state NAKED_STRING_VALUE');
+ ' an empty string. Input "' . substr($this->data,
+ $this->counter, 5) . '... state NAKED_STRING_VALUE');
}
next($yymatches); // skip global match
$this->token = key($yymatches); // token number
if ($tokenMap[$this->token]) {
// extract sub-patterns for passing to lex function
$yysubmatches = array_slice($yysubmatches, $this->token + 1,
- $tokenMap[$this->token]);
+ $tokenMap[$this->token]);
} else {
$yysubmatches = array();
}
$this->value = current($yymatches); // token value
$r = $this->{'yy_r3_' . $this->token}($yysubmatches);
if ($r === null) {
- $this->counter += ($this->mbstring_overload ? mb_strlen($this->value,'latin1'): strlen($this->value));
+ $this->counter += strlen($this->value);
$this->line += substr_count($this->value, "\n");
// accept this token
return true;
@@ -351,67 +386,65 @@ class Smarty_Internal_Configfilelexer
// process this token in the new state
return $this->yylex();
} elseif ($r === false) {
- $this->counter += ($this->mbstring_overload ? mb_strlen($this->value,'latin1'): strlen($this->value));
+ $this->counter += strlen($this->value);
$this->line += substr_count($this->value, "\n");
- if ($this->counter >= ($this->mbstring_overload ? mb_strlen($this->data,'latin1'): strlen($this->data))) {
+ if ($this->counter >= strlen($this->data)) {
return false; // end of input
}
// skip this token
continue;
- } } else {
+ }
+ } else {
throw new Exception('Unexpected input at line' . $this->line .
- ': ' . $this->data[$this->counter]);
+ ': ' . $this->data[$this->counter]);
}
break;
} while (true);
-
} // end function
-
const NAKED_STRING_VALUE = 3;
+
function yy_r3_1($yy_subpatterns)
{
- $this->token = Smarty_Internal_Configfileparser::TPC_NAKED_STRING;
- $this->yypopstate();
+ $this->token = Smarty_Internal_Configfileparser::TPC_NAKED_STRING;
+ $this->yypopstate();
}
-
-
- function yylex4()
+ public function yylex4()
{
- $tokenMap = array (
- 1 => 0,
- 2 => 0,
- 3 => 0,
- );
- if ($this->counter >= ($this->mbstring_overload ? mb_strlen($this->data,'latin1'): strlen($this->data))) {
+ $tokenMap = array(
+ 1 => 0,
+ 2 => 0,
+ 3 => 0,
+ );
+ if ($this->counter >= strlen($this->data)) {
return false; // end of input
}
$yy_global_pattern = "/\G([ \t\r]+)|\G([^\n]+?(?=[ \t\r]*\n))|\G(\n)/iS";
do {
- if ($this->mbstring_overload ? preg_match($yy_global_pattern, mb_substr($this->data, $this->counter,2000000000,'latin1'), $yymatches) : preg_match($yy_global_pattern,$this->data, $yymatches, null, $this->counter)) {
+ if (preg_match($yy_global_pattern, $this->data, $yymatches, null, $this->counter)) {
$yysubmatches = $yymatches;
$yymatches = array_filter($yymatches, 'strlen'); // remove empty sub-patterns
if (!count($yymatches)) {
throw new Exception('Error: lexing failed because a rule matched' .
- ' an empty string. Input "' . substr($this->data,
- $this->counter, 5) . '... state COMMENT');
+ ' an empty string. Input "' . substr($this->data,
+ $this->counter, 5) . '... state COMMENT');
}
next($yymatches); // skip global match
$this->token = key($yymatches); // token number
if ($tokenMap[$this->token]) {
// extract sub-patterns for passing to lex function
$yysubmatches = array_slice($yysubmatches, $this->token + 1,
- $tokenMap[$this->token]);
+ $tokenMap[$this->token]);
} else {
$yysubmatches = array();
}
$this->value = current($yymatches); // token value
$r = $this->{'yy_r4_' . $this->token}($yysubmatches);
if ($r === null) {
- $this->counter += ($this->mbstring_overload ? mb_strlen($this->value,'latin1'): strlen($this->value));
+ $this->counter += strlen($this->value);
$this->line += substr_count($this->value, "\n");
// accept this token
return true;
@@ -420,76 +453,76 @@ class Smarty_Internal_Configfilelexer
// process this token in the new state
return $this->yylex();
} elseif ($r === false) {
- $this->counter += ($this->mbstring_overload ? mb_strlen($this->value,'latin1'): strlen($this->value));
+ $this->counter += strlen($this->value);
$this->line += substr_count($this->value, "\n");
- if ($this->counter >= ($this->mbstring_overload ? mb_strlen($this->data,'latin1'): strlen($this->data))) {
+ if ($this->counter >= strlen($this->data)) {
return false; // end of input
}
// skip this token
continue;
- } } else {
+ }
+ } else {
throw new Exception('Unexpected input at line' . $this->line .
- ': ' . $this->data[$this->counter]);
+ ': ' . $this->data[$this->counter]);
}
break;
} while (true);
-
} // end function
-
const COMMENT = 4;
+
function yy_r4_1($yy_subpatterns)
{
- return false;
+ return false;
}
+
function yy_r4_2($yy_subpatterns)
{
- $this->token = Smarty_Internal_Configfileparser::TPC_NAKED_STRING;
+ $this->token = Smarty_Internal_Configfileparser::TPC_NAKED_STRING;
}
+
function yy_r4_3($yy_subpatterns)
{
- $this->token = Smarty_Internal_Configfileparser::TPC_NEWLINE;
- $this->yypopstate();
+ $this->token = Smarty_Internal_Configfileparser::TPC_NEWLINE;
+ $this->yypopstate();
}
-
-
- function yylex5()
+ public function yylex5()
{
- $tokenMap = array (
- 1 => 0,
- 2 => 0,
- );
- if ($this->counter >= ($this->mbstring_overload ? mb_strlen($this->data,'latin1'): strlen($this->data))) {
+ $tokenMap = array(
+ 1 => 0,
+ 2 => 0,
+ );
+ if ($this->counter >= strlen($this->data)) {
return false; // end of input
}
$yy_global_pattern = "/\G(\\.)|\G(.*?(?=[\.=[\]\r\n]))/iS";
do {
- if ($this->mbstring_overload ? preg_match($yy_global_pattern, mb_substr($this->data, $this->counter,2000000000,'latin1'), $yymatches) : preg_match($yy_global_pattern,$this->data, $yymatches, null, $this->counter)) {
+ if (preg_match($yy_global_pattern, $this->data, $yymatches, null, $this->counter)) {
$yysubmatches = $yymatches;
$yymatches = array_filter($yymatches, 'strlen'); // remove empty sub-patterns
if (!count($yymatches)) {
throw new Exception('Error: lexing failed because a rule matched' .
- ' an empty string. Input "' . substr($this->data,
- $this->counter, 5) . '... state SECTION');
+ ' an empty string. Input "' . substr($this->data,
+ $this->counter, 5) . '... state SECTION');
}
next($yymatches); // skip global match
$this->token = key($yymatches); // token number
if ($tokenMap[$this->token]) {
// extract sub-patterns for passing to lex function
$yysubmatches = array_slice($yysubmatches, $this->token + 1,
- $tokenMap[$this->token]);
+ $tokenMap[$this->token]);
} else {
$yysubmatches = array();
}
$this->value = current($yymatches); // token value
$r = $this->{'yy_r5_' . $this->token}($yysubmatches);
if ($r === null) {
- $this->counter += ($this->mbstring_overload ? mb_strlen($this->value,'latin1'): strlen($this->value));
+ $this->counter += strlen($this->value);
$this->line += substr_count($this->value, "\n");
// accept this token
return true;
@@ -498,70 +531,70 @@ class Smarty_Internal_Configfilelexer
// process this token in the new state
return $this->yylex();
} elseif ($r === false) {
- $this->counter += ($this->mbstring_overload ? mb_strlen($this->value,'latin1'): strlen($this->value));
+ $this->counter += strlen($this->value);
$this->line += substr_count($this->value, "\n");
- if ($this->counter >= ($this->mbstring_overload ? mb_strlen($this->data,'latin1'): strlen($this->data))) {
+ if ($this->counter >= strlen($this->data)) {
return false; // end of input
}
// skip this token
continue;
- } } else {
+ }
+ } else {
throw new Exception('Unexpected input at line' . $this->line .
- ': ' . $this->data[$this->counter]);
+ ': ' . $this->data[$this->counter]);
}
break;
} while (true);
-
} // end function
-
const SECTION = 5;
+
function yy_r5_1($yy_subpatterns)
{
- $this->token = Smarty_Internal_Configfileparser::TPC_DOT;
+ $this->token = Smarty_Internal_Configfileparser::TPC_DOT;
}
+
function yy_r5_2($yy_subpatterns)
{
- $this->token = Smarty_Internal_Configfileparser::TPC_SECTION;
- $this->yypopstate();
+ $this->token = Smarty_Internal_Configfileparser::TPC_SECTION;
+ $this->yypopstate();
}
-
- function yylex6()
+ public function yylex6()
{
- $tokenMap = array (
- 1 => 0,
- 2 => 0,
- );
- if ($this->counter >= ($this->mbstring_overload ? mb_strlen($this->data,'latin1'): strlen($this->data))) {
+ $tokenMap = array(
+ 1 => 0,
+ 2 => 0,
+ );
+ if ($this->counter >= strlen($this->data)) {
return false; // end of input
}
$yy_global_pattern = "/\G(\"\"\"(?=[ \t\r]*[\n#;]))|\G([\S\s])/iS";
do {
- if ($this->mbstring_overload ? preg_match($yy_global_pattern, mb_substr($this->data, $this->counter,2000000000,'latin1'), $yymatches) : preg_match($yy_global_pattern,$this->data, $yymatches, null, $this->counter)) {
+ if (preg_match($yy_global_pattern, $this->data, $yymatches, null, $this->counter)) {
$yysubmatches = $yymatches;
$yymatches = array_filter($yymatches, 'strlen'); // remove empty sub-patterns
if (!count($yymatches)) {
throw new Exception('Error: lexing failed because a rule matched' .
- ' an empty string. Input "' . substr($this->data,
- $this->counter, 5) . '... state TRIPPLE');
+ ' an empty string. Input "' . substr($this->data,
+ $this->counter, 5) . '... state TRIPPLE');
}
next($yymatches); // skip global match
$this->token = key($yymatches); // token number
if ($tokenMap[$this->token]) {
// extract sub-patterns for passing to lex function
$yysubmatches = array_slice($yysubmatches, $this->token + 1,
- $tokenMap[$this->token]);
+ $tokenMap[$this->token]);
} else {
$yysubmatches = array();
}
$this->value = current($yymatches); // token value
$r = $this->{'yy_r6_' . $this->token}($yysubmatches);
if ($r === null) {
- $this->counter += ($this->mbstring_overload ? mb_strlen($this->value,'latin1'): strlen($this->value));
+ $this->counter += strlen($this->value);
$this->line += substr_count($this->value, "\n");
// accept this token
return true;
@@ -570,53 +603,44 @@ class Smarty_Internal_Configfilelexer
// process this token in the new state
return $this->yylex();
} elseif ($r === false) {
- $this->counter += ($this->mbstring_overload ? mb_strlen($this->value,'latin1'): strlen($this->value));
+ $this->counter += strlen($this->value);
$this->line += substr_count($this->value, "\n");
- if ($this->counter >= ($this->mbstring_overload ? mb_strlen($this->data,'latin1'): strlen($this->data))) {
+ if ($this->counter >= strlen($this->data)) {
return false; // end of input
}
// skip this token
continue;
- } } else {
+ }
+ } else {
throw new Exception('Unexpected input at line' . $this->line .
- ': ' . $this->data[$this->counter]);
+ ': ' . $this->data[$this->counter]);
}
break;
} while (true);
-
} // end function
-
const TRIPPLE = 6;
+
function yy_r6_1($yy_subpatterns)
{
- $this->token = Smarty_Internal_Configfileparser::TPC_TRIPPLE_QUOTES_END;
- $this->yypopstate();
- $this->yypushstate(self::START);
+ $this->token = Smarty_Internal_Configfileparser::TPC_TRIPPLE_QUOTES_END;
+ $this->yypopstate();
+ $this->yypushstate(self::START);
}
+
function yy_r6_2($yy_subpatterns)
{
- if ($this->mbstring_overload) {
- $to = mb_strlen($this->data,'latin1');
- } else {
- $to = strlen($this->data);
- }
- preg_match("/\"\"\"[ \t\r]*[\n#;]/",$this->data,$match,PREG_OFFSET_CAPTURE,$this->counter);
- if (isset($match[0][1])) {
- $to = $match[0][1];
- } else {
- $this->compiler->trigger_template_error ("missing or misspelled literal closing tag");
- }
- if ($this->mbstring_overload) {
- $this->value = mb_substr($this->data,$this->counter,$to-$this->counter,'latin1');
- } else {
- $this->value = substr($this->data,$this->counter,$to-$this->counter);
- }
- $this->token = Smarty_Internal_Configfileparser::TPC_TRIPPLE_TEXT;
+ $to = strlen($this->data);
+ preg_match("/\"\"\"[ \t\r]*[\n#;]/", $this->data, $match, PREG_OFFSET_CAPTURE, $this->counter);
+ if (isset($match[0][1])) {
+ $to = $match[0][1];
+ } else {
+ $this->compiler->trigger_template_error("missing or misspelled literal closing tag");
+ }
+ $this->value = substr($this->data, $this->counter, $to - $this->counter);
+ $this->token = Smarty_Internal_Configfileparser::TPC_TRIPPLE_TEXT;
}
-
-
}
-?> \ No newline at end of file
+
diff --git a/library/Smarty/libs/sysplugins/smarty_internal_configfileparser.php b/library/Smarty/libs/sysplugins/smarty_internal_configfileparser.php
index 784bc684d..fc476ce0a 100644
--- a/library/Smarty/libs/sysplugins/smarty_internal_configfileparser.php
+++ b/library/Smarty/libs/sysplugins/smarty_internal_configfileparser.php
@@ -1,20 +1,20 @@
<?php
-/**
-* Smarty Internal Plugin Configfileparser
-*
-* This is the config file parser.
-* It is generated from the internal.configfileparser.y file
-* @package Smarty
-* @subpackage Compiler
-* @author Uwe Tews
-*/
+/**
+ * Smarty Internal Plugin Configfileparser
+ * This is the config file parser.
+ * It is generated from the internal.configfileparser.y file
+ *
+ * @package Smarty
+ * @subpackage Compiler
+ * @author Uwe Tews
+ */
class TPC_yyToken implements ArrayAccess
{
public $string = '';
public $metadata = array();
- function __construct($s, $m = array())
+ public function __construct($s, $m = array())
{
if ($s instanceof TPC_yyToken) {
$this->string = $s->string;
@@ -29,28 +29,29 @@ class TPC_yyToken implements ArrayAccess
}
}
- function __toString()
+ public function __toString()
{
return $this->_string;
}
- function offsetExists($offset)
+ public function offsetExists($offset)
{
return isset($this->metadata[$offset]);
}
- function offsetGet($offset)
+ public function offsetGet($offset)
{
return $this->metadata[$offset];
}
- function offsetSet($offset, $value)
+ public function offsetSet($offset, $value)
{
if ($offset === null) {
if (isset($value[0])) {
$x = ($value instanceof TPC_yyToken) ?
$value->metadata : $value;
$this->metadata = array_merge($this->metadata, $x);
+
return;
}
$offset = count($this->metadata);
@@ -67,7 +68,7 @@ class TPC_yyToken implements ArrayAccess
}
}
- function offsetUnset($offset)
+ public function offsetUnset($offset)
{
unset($this->metadata[$offset]);
}
@@ -75,18 +76,19 @@ class TPC_yyToken implements ArrayAccess
class TPC_yyStackEntry
{
- public $stateno; /* The state-number */
- public $major; /* The major token value. This is the code
+ public $stateno; /* The state-number */
+ public $major; /* The major token value. This is the code
** number for the token at this stack level */
public $minor; /* The user-supplied minor token value. This
** is the value of the token */
-};
+}
+;
#line 12 "smarty_internal_configfileparser.y"
-class Smarty_Internal_Configfileparser#line 79 "smarty_internal_configfileparser.php"
+class Smarty_Internal_Configfileparser #line 80 "smarty_internal_configfileparser.php"
{
-#line 14 "smarty_internal_configfileparser.y"
+ #line 14 "smarty_internal_configfileparser.y"
// states whether the parse was successful or not
public $successful = true;
@@ -94,23 +96,27 @@ class Smarty_Internal_Configfileparser#line 79 "smarty_internal_configfileparser
private $lex;
private $internalError = false;
- function __construct($lex, $compiler) {
+ function __construct($lex, $compiler)
+ {
// set instance object
self::instance($this);
$this->lex = $lex;
$this->smarty = $compiler->smarty;
$this->compiler = $compiler;
}
+
public static function &instance($new_instance = null)
{
static $instance = null;
- if (isset($new_instance) && is_object($new_instance))
+ if (isset($new_instance) && is_object($new_instance)) {
$instance = $new_instance;
+ }
return $instance;
}
- private function parse_bool($str) {
- if (in_array(strtolower($str) ,array('on','yes','true'))) {
+ private function parse_bool($str)
+ {
+ if (in_array(strtolower($str), array('on', 'yes', 'true'))) {
$res = true;
} else {
$res = false;
@@ -119,11 +125,13 @@ class Smarty_Internal_Configfileparser#line 79 "smarty_internal_configfileparser
}
private static $escapes_single = Array('\\' => '\\',
- '\'' => '\'');
- private static function parse_single_quoted_string($qstr) {
- $escaped_string = substr($qstr, 1, strlen($qstr)-2); //remove outer quotes
+ '\'' => '\'');
+
+ private static function parse_single_quoted_string($qstr)
+ {
+ $escaped_string = substr($qstr, 1, strlen($qstr) - 2); //remove outer quotes
- $ss = preg_split('/(\\\\.)/', $escaped_string, -1, PREG_SPLIT_DELIM_CAPTURE);
+ $ss = preg_split('/(\\\\.)/', $escaped_string, - 1, PREG_SPLIT_DELIM_CAPTURE);
$str = "";
foreach ($ss as $s) {
@@ -131,24 +139,27 @@ class Smarty_Internal_Configfileparser#line 79 "smarty_internal_configfileparser
if (isset(self::$escapes_single[$s[1]])) {
$s = self::$escapes_single[$s[1]];
}
- }
+ }
- $str .= $s;
+ $str .= $s;
}
return $str;
}
- private static function parse_double_quoted_string($qstr) {
- $inner_str = substr($qstr, 1, strlen($qstr)-2);
+ private static function parse_double_quoted_string($qstr)
+ {
+ $inner_str = substr($qstr, 1, strlen($qstr) - 2);
return stripcslashes($inner_str);
}
- private static function parse_tripple_double_quoted_string($qstr) {
+ private static function parse_tripple_double_quoted_string($qstr)
+ {
return stripcslashes($qstr);
}
- private function set_var(Array $var, Array &$target_array) {
+ private function set_var(Array $var, Array &$target_array)
+ {
$key = $var["key"];
$value = $var["value"];
@@ -160,16 +171,18 @@ class Smarty_Internal_Configfileparser#line 79 "smarty_internal_configfileparser
}
}
- private function add_global_vars(Array $vars) {
+ private function add_global_vars(Array $vars)
+ {
if (!isset($this->compiler->config_data['vars'])) {
- $this->compiler->config_data['vars'] = Array();
+ $this->compiler->config_data['vars'] = Array();
}
foreach ($vars as $var) {
$this->set_var($var, $this->compiler->config_data);
}
}
- private function add_section_vars($section_name, Array $vars) {
+ private function add_section_vars($section_name, Array $vars)
+ {
if (!isset($this->compiler->config_data['sections'][$section_name]['vars'])) {
$this->compiler->config_data['sections'][$section_name]['vars'] = Array();
}
@@ -177,99 +190,152 @@ class Smarty_Internal_Configfileparser#line 79 "smarty_internal_configfileparser
$this->set_var($var, $this->compiler->config_data['sections'][$section_name]);
}
}
-#line 173 "smarty_internal_configfileparser.php"
-
- const TPC_OPENB = 1;
- const TPC_SECTION = 2;
- const TPC_CLOSEB = 3;
- const TPC_DOT = 4;
- const TPC_ID = 5;
- const TPC_EQUAL = 6;
- const TPC_FLOAT = 7;
- const TPC_INT = 8;
- const TPC_BOOL = 9;
- const TPC_SINGLE_QUOTED_STRING = 10;
- const TPC_DOUBLE_QUOTED_STRING = 11;
- const TPC_TRIPPLE_QUOTES = 12;
- const TPC_TRIPPLE_TEXT = 13;
- const TPC_TRIPPLE_QUOTES_END = 14;
- const TPC_NAKED_STRING = 15;
- const TPC_OTHER = 16;
- const TPC_NEWLINE = 17;
- const TPC_COMMENTSTART = 18;
+
+ #line 174 "smarty_internal_configfileparser.php"
+
+ const TPC_OPENB = 1;
+ const TPC_SECTION = 2;
+ const TPC_CLOSEB = 3;
+ const TPC_DOT = 4;
+ const TPC_ID = 5;
+ const TPC_EQUAL = 6;
+ const TPC_FLOAT = 7;
+ const TPC_INT = 8;
+ const TPC_BOOL = 9;
+ const TPC_SINGLE_QUOTED_STRING = 10;
+ const TPC_DOUBLE_QUOTED_STRING = 11;
+ const TPC_TRIPPLE_QUOTES = 12;
+ const TPC_TRIPPLE_TEXT = 13;
+ const TPC_TRIPPLE_QUOTES_END = 14;
+ const TPC_NAKED_STRING = 15;
+ const TPC_OTHER = 16;
+ const TPC_NEWLINE = 17;
+ const TPC_COMMENTSTART = 18;
const YY_NO_ACTION = 60;
const YY_ACCEPT_ACTION = 59;
const YY_ERROR_ACTION = 58;
const YY_SZ_ACTTAB = 38;
-static public $yy_action = array(
- /* 0 */ 29, 30, 34, 33, 24, 13, 19, 25, 35, 21,
- /* 10 */ 59, 8, 3, 1, 20, 12, 14, 31, 20, 12,
- /* 20 */ 15, 17, 23, 18, 27, 26, 4, 5, 6, 32,
- /* 30 */ 2, 11, 28, 22, 16, 9, 7, 10,
+ static public $yy_action = array(
+ /* 0 */
+ 29, 30, 34, 33, 24, 13, 19, 25, 35, 21,
+ /* 10 */
+ 59, 8, 3, 1, 20, 12, 14, 31, 20, 12,
+ /* 20 */
+ 15, 17, 23, 18, 27, 26, 4, 5, 6, 32,
+ /* 30 */
+ 2, 11, 28, 22, 16, 9, 7, 10,
);
static public $yy_lookahead = array(
- /* 0 */ 7, 8, 9, 10, 11, 12, 5, 27, 15, 16,
- /* 10 */ 20, 21, 23, 23, 17, 18, 13, 14, 17, 18,
- /* 20 */ 15, 2, 17, 4, 25, 26, 6, 3, 3, 14,
- /* 30 */ 23, 1, 24, 17, 2, 25, 22, 25,
-);
- const YY_SHIFT_USE_DFLT = -8;
+ /* 0 */
+ 7, 8, 9, 10, 11, 12, 5, 27, 15, 16,
+ /* 10 */
+ 20, 21, 23, 23, 17, 18, 13, 14, 17, 18,
+ /* 20 */
+ 15, 2, 17, 4, 25, 26, 6, 3, 3, 14,
+ /* 30 */
+ 23, 1, 24, 17, 2, 25, 22, 25,
+ );
+ const YY_SHIFT_USE_DFLT = - 8;
const YY_SHIFT_MAX = 19;
static public $yy_shift_ofst = array(
- /* 0 */ -8, 1, 1, 1, -7, -3, -3, 30, -8, -8,
- /* 10 */ -8, 19, 5, 3, 15, 16, 24, 25, 32, 20,
-);
- const YY_REDUCE_USE_DFLT = -21;
+ /* 0 */
+ - 8, 1, 1, 1, - 7, - 3, - 3, 30, - 8, - 8,
+ /* 10 */
+ - 8, 19, 5, 3, 15, 16, 24, 25, 32, 20,
+ );
+ const YY_REDUCE_USE_DFLT = - 21;
const YY_REDUCE_MAX = 10;
static public $yy_reduce_ofst = array(
- /* 0 */ -10, -1, -1, -1, -20, 10, 12, 8, 14, 7,
- /* 10 */ -11,
-);
+ /* 0 */
+ - 10, - 1, - 1, - 1, - 20, 10, 12, 8, 14, 7,
+ /* 10 */
+ - 11,
+ );
static public $yyExpectedTokens = array(
- /* 0 */ array(),
- /* 1 */ array(5, 17, 18, ),
- /* 2 */ array(5, 17, 18, ),
- /* 3 */ array(5, 17, 18, ),
- /* 4 */ array(7, 8, 9, 10, 11, 12, 15, 16, ),
- /* 5 */ array(17, 18, ),
- /* 6 */ array(17, 18, ),
- /* 7 */ array(1, ),
- /* 8 */ array(),
- /* 9 */ array(),
- /* 10 */ array(),
- /* 11 */ array(2, 4, ),
- /* 12 */ array(15, 17, ),
- /* 13 */ array(13, 14, ),
- /* 14 */ array(14, ),
- /* 15 */ array(17, ),
- /* 16 */ array(3, ),
- /* 17 */ array(3, ),
- /* 18 */ array(2, ),
- /* 19 */ array(6, ),
- /* 20 */ array(),
- /* 21 */ array(),
- /* 22 */ array(),
- /* 23 */ array(),
- /* 24 */ array(),
- /* 25 */ array(),
- /* 26 */ array(),
- /* 27 */ array(),
- /* 28 */ array(),
- /* 29 */ array(),
- /* 30 */ array(),
- /* 31 */ array(),
- /* 32 */ array(),
- /* 33 */ array(),
- /* 34 */ array(),
- /* 35 */ array(),
-);
+ /* 0 */
+ array(),
+ /* 1 */
+ array(5, 17, 18,),
+ /* 2 */
+ array(5, 17, 18,),
+ /* 3 */
+ array(5, 17, 18,),
+ /* 4 */
+ array(7, 8, 9, 10, 11, 12, 15, 16,),
+ /* 5 */
+ array(17, 18,),
+ /* 6 */
+ array(17, 18,),
+ /* 7 */
+ array(1,),
+ /* 8 */
+ array(),
+ /* 9 */
+ array(),
+ /* 10 */
+ array(),
+ /* 11 */
+ array(2, 4,),
+ /* 12 */
+ array(15, 17,),
+ /* 13 */
+ array(13, 14,),
+ /* 14 */
+ array(14,),
+ /* 15 */
+ array(17,),
+ /* 16 */
+ array(3,),
+ /* 17 */
+ array(3,),
+ /* 18 */
+ array(2,),
+ /* 19 */
+ array(6,),
+ /* 20 */
+ array(),
+ /* 21 */
+ array(),
+ /* 22 */
+ array(),
+ /* 23 */
+ array(),
+ /* 24 */
+ array(),
+ /* 25 */
+ array(),
+ /* 26 */
+ array(),
+ /* 27 */
+ array(),
+ /* 28 */
+ array(),
+ /* 29 */
+ array(),
+ /* 30 */
+ array(),
+ /* 31 */
+ array(),
+ /* 32 */
+ array(),
+ /* 33 */
+ array(),
+ /* 34 */
+ array(),
+ /* 35 */
+ array(),
+ );
static public $yy_default = array(
- /* 0 */ 44, 37, 41, 40, 58, 58, 58, 36, 39, 44,
- /* 10 */ 44, 58, 58, 58, 58, 58, 58, 58, 58, 58,
- /* 20 */ 55, 54, 57, 56, 50, 45, 43, 42, 38, 46,
- /* 30 */ 47, 52, 51, 49, 48, 53,
-);
+ /* 0 */
+ 44, 37, 41, 40, 58, 58, 58, 36, 39, 44,
+ /* 10 */
+ 44, 58, 58, 58, 58, 58, 58, 58, 58, 58,
+ /* 20 */
+ 55, 54, 57, 56, 50, 45, 43, 42, 38, 46,
+ /* 30 */
+ 47, 52, 51, 49, 48, 53,
+ );
const YYNOCODE = 29;
const YYSTACKDEPTH = 100;
const YYNSTATE = 36;
@@ -277,67 +343,89 @@ static public $yy_action = array(
const YYERRORSYMBOL = 19;
const YYERRSYMDT = 'yy0';
const YYFALLBACK = 0;
- static public $yyFallback = array(
- );
- static function Trace($TraceFILE, $zTracePrompt)
+ public static $yyFallback = array();
+
+ public function Trace($TraceFILE, $zTracePrompt)
{
if (!$TraceFILE) {
$zTracePrompt = 0;
} elseif (!$zTracePrompt) {
$TraceFILE = 0;
}
- self::$yyTraceFILE = $TraceFILE;
- self::$yyTracePrompt = $zTracePrompt;
+ $this->yyTraceFILE = $TraceFILE;
+ $this->yyTracePrompt = $zTracePrompt;
}
- static function PrintTrace()
+ public function PrintTrace()
{
- self::$yyTraceFILE = fopen('php://output', 'w');
- self::$yyTracePrompt = '<br>';
+ $this->yyTraceFILE = fopen('php://output', 'w');
+ $this->yyTracePrompt = '<br>';
}
- static public $yyTraceFILE;
- static public $yyTracePrompt;
- public $yyidx; /* Index of top element in stack */
- public $yyerrcnt; /* Shifts left before out of the error */
- public $yystack = array(); /* The parser's stack */
+ public $yyTraceFILE;
+ public $yyTracePrompt;
+ public $yyidx; /* Index of top element in stack */
+ public $yyerrcnt; /* Shifts left before out of the error */
+ public $yystack = array(); /* The parser's stack */
public $yyTokenName = array(
- '$', 'OPENB', 'SECTION', 'CLOSEB',
- 'DOT', 'ID', 'EQUAL', 'FLOAT',
- 'INT', 'BOOL', 'SINGLE_QUOTED_STRING', 'DOUBLE_QUOTED_STRING',
- 'TRIPPLE_QUOTES', 'TRIPPLE_TEXT', 'TRIPPLE_QUOTES_END', 'NAKED_STRING',
- 'OTHER', 'NEWLINE', 'COMMENTSTART', 'error',
- 'start', 'global_vars', 'sections', 'var_list',
- 'section', 'newline', 'var', 'value',
+ '$', 'OPENB', 'SECTION', 'CLOSEB',
+ 'DOT', 'ID', 'EQUAL', 'FLOAT',
+ 'INT', 'BOOL', 'SINGLE_QUOTED_STRING', 'DOUBLE_QUOTED_STRING',
+ 'TRIPPLE_QUOTES', 'TRIPPLE_TEXT', 'TRIPPLE_QUOTES_END', 'NAKED_STRING',
+ 'OTHER', 'NEWLINE', 'COMMENTSTART', 'error',
+ 'start', 'global_vars', 'sections', 'var_list',
+ 'section', 'newline', 'var', 'value',
);
- static public $yyRuleName = array(
- /* 0 */ "start ::= global_vars sections",
- /* 1 */ "global_vars ::= var_list",
- /* 2 */ "sections ::= sections section",
- /* 3 */ "sections ::=",
- /* 4 */ "section ::= OPENB SECTION CLOSEB newline var_list",
- /* 5 */ "section ::= OPENB DOT SECTION CLOSEB newline var_list",
- /* 6 */ "var_list ::= var_list newline",
- /* 7 */ "var_list ::= var_list var",
- /* 8 */ "var_list ::=",
- /* 9 */ "var ::= ID EQUAL value",
- /* 10 */ "value ::= FLOAT",
- /* 11 */ "value ::= INT",
- /* 12 */ "value ::= BOOL",
- /* 13 */ "value ::= SINGLE_QUOTED_STRING",
- /* 14 */ "value ::= DOUBLE_QUOTED_STRING",
- /* 15 */ "value ::= TRIPPLE_QUOTES TRIPPLE_TEXT TRIPPLE_QUOTES_END",
- /* 16 */ "value ::= TRIPPLE_QUOTES TRIPPLE_QUOTES_END",
- /* 17 */ "value ::= NAKED_STRING",
- /* 18 */ "value ::= OTHER",
- /* 19 */ "newline ::= NEWLINE",
- /* 20 */ "newline ::= COMMENTSTART NEWLINE",
- /* 21 */ "newline ::= COMMENTSTART NAKED_STRING NEWLINE",
+ public static $yyRuleName = array(
+ /* 0 */
+ "start ::= global_vars sections",
+ /* 1 */
+ "global_vars ::= var_list",
+ /* 2 */
+ "sections ::= sections section",
+ /* 3 */
+ "sections ::=",
+ /* 4 */
+ "section ::= OPENB SECTION CLOSEB newline var_list",
+ /* 5 */
+ "section ::= OPENB DOT SECTION CLOSEB newline var_list",
+ /* 6 */
+ "var_list ::= var_list newline",
+ /* 7 */
+ "var_list ::= var_list var",
+ /* 8 */
+ "var_list ::=",
+ /* 9 */
+ "var ::= ID EQUAL value",
+ /* 10 */
+ "value ::= FLOAT",
+ /* 11 */
+ "value ::= INT",
+ /* 12 */
+ "value ::= BOOL",
+ /* 13 */
+ "value ::= SINGLE_QUOTED_STRING",
+ /* 14 */
+ "value ::= DOUBLE_QUOTED_STRING",
+ /* 15 */
+ "value ::= TRIPPLE_QUOTES TRIPPLE_TEXT TRIPPLE_QUOTES_END",
+ /* 16 */
+ "value ::= TRIPPLE_QUOTES TRIPPLE_QUOTES_END",
+ /* 17 */
+ "value ::= NAKED_STRING",
+ /* 18 */
+ "value ::= OTHER",
+ /* 19 */
+ "newline ::= NEWLINE",
+ /* 20 */
+ "newline ::= COMMENTSTART NEWLINE",
+ /* 21 */
+ "newline ::= COMMENTSTART NAKED_STRING NEWLINE",
);
- function tokenName($tokenType)
+ public function tokenName($tokenType)
{
if ($tokenType === 0) {
return 'End of Input';
@@ -349,41 +437,43 @@ static public $yy_action = array(
}
}
- static function yy_destructor($yymajor, $yypminor)
+ public static function yy_destructor($yymajor, $yypminor)
{
switch ($yymajor) {
- default: break; /* If no destructor action specified: do nothing */
+ default:
+ break; /* If no destructor action specified: do nothing */
}
}
- function yy_pop_parser_stack()
+ public function yy_pop_parser_stack()
{
if (!count($this->yystack)) {
return;
}
$yytos = array_pop($this->yystack);
- if (self::$yyTraceFILE && $this->yyidx >= 0) {
- fwrite(self::$yyTraceFILE,
- self::$yyTracePrompt . 'Popping ' . $this->yyTokenName[$yytos->major] .
- "\n");
+ if ($this->yyTraceFILE && $this->yyidx >= 0) {
+ fwrite($this->yyTraceFILE,
+ $this->yyTracePrompt . 'Popping ' . $this->yyTokenName[$yytos->major] .
+ "\n");
}
$yymajor = $yytos->major;
self::yy_destructor($yymajor, $yytos->minor);
- $this->yyidx--;
+ $this->yyidx --;
+
return $yymajor;
}
- function __destruct()
+ public function __destruct()
{
while ($this->yystack !== Array()) {
$this->yy_pop_parser_stack();
}
- if (is_resource(self::$yyTraceFILE)) {
- fclose(self::$yyTraceFILE);
+ if (is_resource($this->yyTraceFILE)) {
+ fclose($this->yyTraceFILE);
}
}
- function yy_get_expected_tokens($token)
+ public function yy_get_expected_tokens($token)
{
$state = $this->yystack[$this->yyidx]->stateno;
$expected = self::$yyExpectedTokens[$state];
@@ -398,7 +488,7 @@ static public $yy_action = array(
// reduce action
$done = 0;
do {
- if ($done++ == 100) {
+ if ($done ++ == 100) {
$this->yyidx = $yyidx;
$this->yystack = $stack;
// too much recursion prevents proper detection
@@ -411,17 +501,18 @@ static public $yy_action = array(
$this->yystack[$this->yyidx]->stateno,
self::$yyRuleInfo[$yyruleno]['lhs']);
if (isset(self::$yyExpectedTokens[$nextstate])) {
- $expected = array_merge($expected, self::$yyExpectedTokens[$nextstate]);
- if (in_array($token,
- self::$yyExpectedTokens[$nextstate], true)) {
+ $expected = array_merge($expected, self::$yyExpectedTokens[$nextstate]);
+ if (in_array($token,
+ self::$yyExpectedTokens[$nextstate], true)) {
$this->yyidx = $yyidx;
$this->yystack = $stack;
+
return array_unique($expected);
}
}
if ($nextstate < self::YYNSTATE) {
// we need to shift a non-terminal
- $this->yyidx++;
+ $this->yyidx ++;
$x = new TPC_yyStackEntry;
$x->stateno = $nextstate;
$x->major = self::$yyRuleInfo[$yyruleno]['lhs'];
@@ -446,12 +537,13 @@ static public $yy_action = array(
}
break;
} while (true);
- $this->yyidx = $yyidx;
- $this->yystack = $stack;
+ $this->yyidx = $yyidx;
+ $this->yystack = $stack;
+
return array_unique($expected);
}
- function yy_is_expected_token($token)
+ public function yy_is_expected_token($token)
{
if ($token === 0) {
return true; // 0 is not part of this
@@ -468,7 +560,7 @@ static public $yy_action = array(
// reduce action
$done = 0;
do {
- if ($done++ == 100) {
+ if ($done ++ == 100) {
$this->yyidx = $yyidx;
$this->yystack = $stack;
// too much recursion prevents proper detection
@@ -481,14 +573,16 @@ static public $yy_action = array(
$this->yystack[$this->yyidx]->stateno,
self::$yyRuleInfo[$yyruleno]['lhs']);
if (isset(self::$yyExpectedTokens[$nextstate]) &&
- in_array($token, self::$yyExpectedTokens[$nextstate], true)) {
+ in_array($token, self::$yyExpectedTokens[$nextstate], true)
+ ) {
$this->yyidx = $yyidx;
$this->yystack = $stack;
+
return true;
}
if ($nextstate < self::YYNSTATE) {
// we need to shift a non-terminal
- $this->yyidx++;
+ $this->yyidx ++;
$x = new TPC_yyStackEntry;
$x->stateno = $nextstate;
$x->major = self::$yyRuleInfo[$yyruleno]['lhs'];
@@ -519,10 +613,11 @@ static public $yy_action = array(
} while (true);
$this->yyidx = $yyidx;
$this->yystack = $stack;
+
return true;
}
- function yy_find_shift_action($iLookAhead)
+ public function yy_find_shift_action($iLookAhead)
{
$stateno = $this->yystack[$this->yyidx]->stateno;
@@ -540,23 +635,27 @@ static public $yy_action = array(
}
$i += $iLookAhead;
if ($i < 0 || $i >= self::YY_SZ_ACTTAB ||
- self::$yy_lookahead[$i] != $iLookAhead) {
+ self::$yy_lookahead[$i] != $iLookAhead
+ ) {
if (count(self::$yyFallback) && $iLookAhead < count(self::$yyFallback)
- && ($iFallback = self::$yyFallback[$iLookAhead]) != 0) {
- if (self::$yyTraceFILE) {
- fwrite(self::$yyTraceFILE, self::$yyTracePrompt . "FALLBACK " .
+ && ($iFallback = self::$yyFallback[$iLookAhead]) != 0
+ ) {
+ if ($this->yyTraceFILE) {
+ fwrite($this->yyTraceFILE, $this->yyTracePrompt . "FALLBACK " .
$this->yyTokenName[$iLookAhead] . " => " .
$this->yyTokenName[$iFallback] . "\n");
}
+
return $this->yy_find_shift_action($iFallback);
}
+
return self::$yy_default[$stateno];
} else {
return self::$yy_action[$i];
}
}
- function yy_find_reduce_action($stateno, $iLookAhead)
+ public function yy_find_reduce_action($stateno, $iLookAhead)
{
/* $stateno = $this->yystack[$this->yyidx]->stateno; */
@@ -572,29 +671,31 @@ static public $yy_action = array(
}
$i += $iLookAhead;
if ($i < 0 || $i >= self::YY_SZ_ACTTAB ||
- self::$yy_lookahead[$i] != $iLookAhead) {
+ self::$yy_lookahead[$i] != $iLookAhead
+ ) {
return self::$yy_default[$stateno];
} else {
return self::$yy_action[$i];
}
}
- function yy_shift($yyNewState, $yyMajor, $yypMinor)
+ public function yy_shift($yyNewState, $yyMajor, $yypMinor)
{
- $this->yyidx++;
+ $this->yyidx ++;
if ($this->yyidx >= self::YYSTACKDEPTH) {
- $this->yyidx--;
- if (self::$yyTraceFILE) {
- fprintf(self::$yyTraceFILE, "%sStack Overflow!\n", self::$yyTracePrompt);
+ $this->yyidx --;
+ if ($this->yyTraceFILE) {
+ fprintf($this->yyTraceFILE, "%sStack Overflow!\n", $this->yyTracePrompt);
}
while ($this->yyidx >= 0) {
$this->yy_pop_parser_stack();
}
-#line 125 "smarty_internal_configfileparser.y"
+ #line 125 "smarty_internal_configfileparser.y"
+
+ $this->internalError = true;
+ $this->compiler->trigger_config_file_error("Stack overflow in configfile parser");
+ #line 601 "smarty_internal_configfileparser.php"
- $this->internalError = true;
- $this->compiler->trigger_config_file_error("Stack overflow in configfile parser");
-#line 593 "smarty_internal_configfileparser.php"
return;
}
$yytos = new TPC_yyStackEntry;
@@ -602,57 +703,57 @@ static public $yy_action = array(
$yytos->major = $yyMajor;
$yytos->minor = $yypMinor;
array_push($this->yystack, $yytos);
- if (self::$yyTraceFILE && $this->yyidx > 0) {
- fprintf(self::$yyTraceFILE, "%sShift %d\n", self::$yyTracePrompt,
- $yyNewState);
- fprintf(self::$yyTraceFILE, "%sStack:", self::$yyTracePrompt);
- for($i = 1; $i <= $this->yyidx; $i++) {
- fprintf(self::$yyTraceFILE, " %s",
- $this->yyTokenName[$this->yystack[$i]->major]);
+ if ($this->yyTraceFILE && $this->yyidx > 0) {
+ fprintf($this->yyTraceFILE, "%sShift %d\n", $this->yyTracePrompt,
+ $yyNewState);
+ fprintf($this->yyTraceFILE, "%sStack:", $this->yyTracePrompt);
+ for ($i = 1; $i <= $this->yyidx; $i ++) {
+ fprintf($this->yyTraceFILE, " %s",
+ $this->yyTokenName[$this->yystack[$i]->major]);
}
- fwrite(self::$yyTraceFILE,"\n");
- }
- }
-
- static public $yyRuleInfo = array(
- array( 'lhs' => 20, 'rhs' => 2 ),
- array( 'lhs' => 21, 'rhs' => 1 ),
- array( 'lhs' => 22, 'rhs' => 2 ),
- array( 'lhs' => 22, 'rhs' => 0 ),
- array( 'lhs' => 24, 'rhs' => 5 ),
- array( 'lhs' => 24, 'rhs' => 6 ),
- array( 'lhs' => 23, 'rhs' => 2 ),
- array( 'lhs' => 23, 'rhs' => 2 ),
- array( 'lhs' => 23, 'rhs' => 0 ),
- array( 'lhs' => 26, 'rhs' => 3 ),
- array( 'lhs' => 27, 'rhs' => 1 ),
- array( 'lhs' => 27, 'rhs' => 1 ),
- array( 'lhs' => 27, 'rhs' => 1 ),
- array( 'lhs' => 27, 'rhs' => 1 ),
- array( 'lhs' => 27, 'rhs' => 1 ),
- array( 'lhs' => 27, 'rhs' => 3 ),
- array( 'lhs' => 27, 'rhs' => 2 ),
- array( 'lhs' => 27, 'rhs' => 1 ),
- array( 'lhs' => 27, 'rhs' => 1 ),
- array( 'lhs' => 25, 'rhs' => 1 ),
- array( 'lhs' => 25, 'rhs' => 2 ),
- array( 'lhs' => 25, 'rhs' => 3 ),
+ fwrite($this->yyTraceFILE, "\n");
+ }
+ }
+
+ public static $yyRuleInfo = array(
+ array('lhs' => 20, 'rhs' => 2),
+ array('lhs' => 21, 'rhs' => 1),
+ array('lhs' => 22, 'rhs' => 2),
+ array('lhs' => 22, 'rhs' => 0),
+ array('lhs' => 24, 'rhs' => 5),
+ array('lhs' => 24, 'rhs' => 6),
+ array('lhs' => 23, 'rhs' => 2),
+ array('lhs' => 23, 'rhs' => 2),
+ array('lhs' => 23, 'rhs' => 0),
+ array('lhs' => 26, 'rhs' => 3),
+ array('lhs' => 27, 'rhs' => 1),
+ array('lhs' => 27, 'rhs' => 1),
+ array('lhs' => 27, 'rhs' => 1),
+ array('lhs' => 27, 'rhs' => 1),
+ array('lhs' => 27, 'rhs' => 1),
+ array('lhs' => 27, 'rhs' => 3),
+ array('lhs' => 27, 'rhs' => 2),
+ array('lhs' => 27, 'rhs' => 1),
+ array('lhs' => 27, 'rhs' => 1),
+ array('lhs' => 25, 'rhs' => 1),
+ array('lhs' => 25, 'rhs' => 2),
+ array('lhs' => 25, 'rhs' => 3),
);
- static public $yyReduceMap = array(
- 0 => 0,
- 2 => 0,
- 3 => 0,
+ public static $yyReduceMap = array(
+ 0 => 0,
+ 2 => 0,
+ 3 => 0,
19 => 0,
20 => 0,
21 => 0,
- 1 => 1,
- 4 => 4,
- 5 => 5,
- 6 => 6,
- 7 => 7,
- 8 => 8,
- 9 => 9,
+ 1 => 1,
+ 4 => 4,
+ 5 => 5,
+ 6 => 6,
+ 7 => 7,
+ 8 => 8,
+ 9 => 9,
10 => 10,
11 => 11,
12 => 12,
@@ -663,101 +764,121 @@ static public $yy_action = array(
17 => 17,
18 => 17,
);
-#line 131 "smarty_internal_configfileparser.y"
- function yy_r0(){
- $this->_retvalue = null;
- }
-#line 666 "smarty_internal_configfileparser.php"
-#line 136 "smarty_internal_configfileparser.y"
- function yy_r1(){
- $this->add_global_vars($this->yystack[$this->yyidx + 0]->minor); $this->_retvalue = null;
- }
-#line 671 "smarty_internal_configfileparser.php"
-#line 149 "smarty_internal_configfileparser.y"
- function yy_r4(){
- $this->add_section_vars($this->yystack[$this->yyidx + -3]->minor, $this->yystack[$this->yyidx + 0]->minor);
- $this->_retvalue = null;
- }
-#line 677 "smarty_internal_configfileparser.php"
-#line 154 "smarty_internal_configfileparser.y"
- function yy_r5(){
- if ($this->smarty->config_read_hidden) {
- $this->add_section_vars($this->yystack[$this->yyidx + -3]->minor, $this->yystack[$this->yyidx + 0]->minor);
- }
- $this->_retvalue = null;
- }
-#line 685 "smarty_internal_configfileparser.php"
-#line 162 "smarty_internal_configfileparser.y"
- function yy_r6(){
- $this->_retvalue = $this->yystack[$this->yyidx + -1]->minor;
- }
-#line 690 "smarty_internal_configfileparser.php"
-#line 166 "smarty_internal_configfileparser.y"
- function yy_r7(){
- $this->_retvalue = array_merge($this->yystack[$this->yyidx + -1]->minor, Array($this->yystack[$this->yyidx + 0]->minor));
- }
-#line 695 "smarty_internal_configfileparser.php"
-#line 170 "smarty_internal_configfileparser.y"
- function yy_r8(){
- $this->_retvalue = Array();
- }
-#line 700 "smarty_internal_configfileparser.php"
-#line 176 "smarty_internal_configfileparser.y"
- function yy_r9(){
- $this->_retvalue = Array("key" => $this->yystack[$this->yyidx + -2]->minor, "value" => $this->yystack[$this->yyidx + 0]->minor);
- }
-#line 705 "smarty_internal_configfileparser.php"
-#line 181 "smarty_internal_configfileparser.y"
- function yy_r10(){
- $this->_retvalue = (float) $this->yystack[$this->yyidx + 0]->minor;
- }
-#line 710 "smarty_internal_configfileparser.php"
-#line 185 "smarty_internal_configfileparser.y"
- function yy_r11(){
- $this->_retvalue = (int) $this->yystack[$this->yyidx + 0]->minor;
- }
-#line 715 "smarty_internal_configfileparser.php"
-#line 189 "smarty_internal_configfileparser.y"
- function yy_r12(){
- $this->_retvalue = $this->parse_bool($this->yystack[$this->yyidx + 0]->minor);
- }
-#line 720 "smarty_internal_configfileparser.php"
-#line 193 "smarty_internal_configfileparser.y"
- function yy_r13(){
- $this->_retvalue = self::parse_single_quoted_string($this->yystack[$this->yyidx + 0]->minor);
- }
-#line 725 "smarty_internal_configfileparser.php"
-#line 197 "smarty_internal_configfileparser.y"
- function yy_r14(){
- $this->_retvalue = self::parse_double_quoted_string($this->yystack[$this->yyidx + 0]->minor);
- }
-#line 730 "smarty_internal_configfileparser.php"
-#line 201 "smarty_internal_configfileparser.y"
- function yy_r15(){
- $this->_retvalue = self::parse_tripple_double_quoted_string($this->yystack[$this->yyidx + -1]->minor);
- }
-#line 735 "smarty_internal_configfileparser.php"
-#line 205 "smarty_internal_configfileparser.y"
- function yy_r16(){
- $this->_retvalue = '';
- }
-#line 740 "smarty_internal_configfileparser.php"
-#line 209 "smarty_internal_configfileparser.y"
- function yy_r17(){
- $this->_retvalue = $this->yystack[$this->yyidx + 0]->minor;
- }
-#line 745 "smarty_internal_configfileparser.php"
+
+ #line 131 "smarty_internal_configfileparser.y"
+ function yy_r0()
+ {
+ $this->_retvalue = null;
+ }
+ #line 675 "smarty_internal_configfileparser.php"
+ #line 136 "smarty_internal_configfileparser.y"
+ function yy_r1()
+ {
+ $this->add_global_vars($this->yystack[$this->yyidx + 0]->minor);
+ $this->_retvalue = null;
+ }
+ #line 680 "smarty_internal_configfileparser.php"
+ #line 149 "smarty_internal_configfileparser.y"
+ function yy_r4()
+ {
+ $this->add_section_vars($this->yystack[$this->yyidx + - 3]->minor, $this->yystack[$this->yyidx + 0]->minor);
+ $this->_retvalue = null;
+ }
+ #line 686 "smarty_internal_configfileparser.php"
+ #line 154 "smarty_internal_configfileparser.y"
+ function yy_r5()
+ {
+ if ($this->smarty->config_read_hidden) {
+ $this->add_section_vars($this->yystack[$this->yyidx + - 3]->minor, $this->yystack[$this->yyidx + 0]->minor);
+ }
+ $this->_retvalue = null;
+ }
+ #line 694 "smarty_internal_configfileparser.php"
+ #line 162 "smarty_internal_configfileparser.y"
+ function yy_r6()
+ {
+ $this->_retvalue = $this->yystack[$this->yyidx + - 1]->minor;
+ }
+ #line 699 "smarty_internal_configfileparser.php"
+ #line 166 "smarty_internal_configfileparser.y"
+ function yy_r7()
+ {
+ $this->_retvalue = array_merge($this->yystack[$this->yyidx + - 1]->minor, Array($this->yystack[$this->yyidx + 0]->minor));
+ }
+ #line 704 "smarty_internal_configfileparser.php"
+ #line 170 "smarty_internal_configfileparser.y"
+ function yy_r8()
+ {
+ $this->_retvalue = Array();
+ }
+ #line 709 "smarty_internal_configfileparser.php"
+ #line 176 "smarty_internal_configfileparser.y"
+ function yy_r9()
+ {
+ $this->_retvalue = Array("key" => $this->yystack[$this->yyidx + - 2]->minor, "value" => $this->yystack[$this->yyidx + 0]->minor);
+ }
+ #line 714 "smarty_internal_configfileparser.php"
+ #line 181 "smarty_internal_configfileparser.y"
+ function yy_r10()
+ {
+ $this->_retvalue = (float) $this->yystack[$this->yyidx + 0]->minor;
+ }
+ #line 719 "smarty_internal_configfileparser.php"
+ #line 185 "smarty_internal_configfileparser.y"
+ function yy_r11()
+ {
+ $this->_retvalue = (int) $this->yystack[$this->yyidx + 0]->minor;
+ }
+ #line 724 "smarty_internal_configfileparser.php"
+ #line 189 "smarty_internal_configfileparser.y"
+ function yy_r12()
+ {
+ $this->_retvalue = $this->parse_bool($this->yystack[$this->yyidx + 0]->minor);
+ }
+ #line 729 "smarty_internal_configfileparser.php"
+ #line 193 "smarty_internal_configfileparser.y"
+ function yy_r13()
+ {
+ $this->_retvalue = self::parse_single_quoted_string($this->yystack[$this->yyidx + 0]->minor);
+ }
+ #line 734 "smarty_internal_configfileparser.php"
+ #line 197 "smarty_internal_configfileparser.y"
+ function yy_r14()
+ {
+ $this->_retvalue = self::parse_double_quoted_string($this->yystack[$this->yyidx + 0]->minor);
+ }
+ #line 739 "smarty_internal_configfileparser.php"
+ #line 201 "smarty_internal_configfileparser.y"
+ function yy_r15()
+ {
+ $this->_retvalue = self::parse_tripple_double_quoted_string($this->yystack[$this->yyidx + - 1]->minor);
+ }
+ #line 744 "smarty_internal_configfileparser.php"
+ #line 205 "smarty_internal_configfileparser.y"
+ function yy_r16()
+ {
+ $this->_retvalue = '';
+ }
+ #line 749 "smarty_internal_configfileparser.php"
+ #line 209 "smarty_internal_configfileparser.y"
+ function yy_r17()
+ {
+ $this->_retvalue = $this->yystack[$this->yyidx + 0]->minor;
+ }
+
+ #line 754 "smarty_internal_configfileparser.php"
private $_retvalue;
- function yy_reduce($yyruleno)
+ public function yy_reduce($yyruleno)
{
$yymsp = $this->yystack[$this->yyidx];
- if (self::$yyTraceFILE && $yyruleno >= 0
- && $yyruleno < count(self::$yyRuleName)) {
- fprintf(self::$yyTraceFILE, "%sReduce (%d) [%s].\n",
- self::$yyTracePrompt, $yyruleno,
- self::$yyRuleName[$yyruleno]);
+ if ($this->yyTraceFILE && $yyruleno >= 0
+ && $yyruleno < count(self::$yyRuleName)
+ ) {
+ fprintf($this->yyTraceFILE, "%sReduce (%d) [%s].\n",
+ $this->yyTracePrompt, $yyruleno,
+ self::$yyRuleName[$yyruleno]);
}
$this->_retvalue = $yy_lefthand_side = null;
@@ -770,14 +891,14 @@ static public $yy_action = array(
$yygoto = self::$yyRuleInfo[$yyruleno]['lhs'];
$yysize = self::$yyRuleInfo[$yyruleno]['rhs'];
$this->yyidx -= $yysize;
- for($i = $yysize; $i; $i--) {
+ for ($i = $yysize; $i; $i --) {
// pop all of the right-hand side parameters
array_pop($this->yystack);
}
$yyact = $this->yy_find_reduce_action($this->yystack[$this->yyidx]->stateno, $yygoto);
if ($yyact < self::YYNSTATE) {
- if (!self::$yyTraceFILE && $yysize) {
- $this->yyidx++;
+ if (!$this->yyTraceFILE && $yysize) {
+ $this->yyidx ++;
$x = new TPC_yyStackEntry;
$x->stateno = $yyact;
$x->major = $yygoto;
@@ -791,73 +912,74 @@ static public $yy_action = array(
}
}
- function yy_parse_failed()
+ public function yy_parse_failed()
{
- if (self::$yyTraceFILE) {
- fprintf(self::$yyTraceFILE, "%sFail!\n", self::$yyTracePrompt);
+ if ($this->yyTraceFILE) {
+ fprintf($this->yyTraceFILE, "%sFail!\n", $this->yyTracePrompt);
}
while ($this->yyidx >= 0) {
$this->yy_pop_parser_stack();
}
}
- function yy_syntax_error($yymajor, $TOKEN)
+ public function yy_syntax_error($yymajor, $TOKEN)
{
-#line 118 "smarty_internal_configfileparser.y"
+ #line 118 "smarty_internal_configfileparser.y"
- $this->internalError = true;
- $this->yymajor = $yymajor;
- $this->compiler->trigger_config_file_error();
-#line 808 "smarty_internal_configfileparser.php"
+ $this->internalError = true;
+ $this->yymajor = $yymajor;
+ $this->compiler->trigger_config_file_error();
+ #line 816 "smarty_internal_configfileparser.php"
}
- function yy_accept()
+ public function yy_accept()
{
- if (self::$yyTraceFILE) {
- fprintf(self::$yyTraceFILE, "%sAccept!\n", self::$yyTracePrompt);
+ if ($this->yyTraceFILE) {
+ fprintf($this->yyTraceFILE, "%sAccept!\n", $this->yyTracePrompt);
}
while ($this->yyidx >= 0) {
$stack = $this->yy_pop_parser_stack();
}
-#line 110 "smarty_internal_configfileparser.y"
+ #line 110 "smarty_internal_configfileparser.y"
- $this->successful = !$this->internalError;
- $this->internalError = false;
- $this->retvalue = $this->_retvalue;
- //echo $this->retvalue."\n\n";
-#line 826 "smarty_internal_configfileparser.php"
+ $this->successful = !$this->internalError;
+ $this->internalError = false;
+ $this->retvalue = $this->_retvalue;
+ //echo $this->retvalue."\n\n";
+ #line 833 "smarty_internal_configfileparser.php"
}
- function doParse($yymajor, $yytokenvalue)
+ public function doParse($yymajor, $yytokenvalue)
{
- $yyerrorhit = 0; /* True if yymajor has invoked an error */
+ $yyerrorhit = 0; /* True if yymajor has invoked an error */
if ($this->yyidx === null || $this->yyidx < 0) {
$this->yyidx = 0;
- $this->yyerrcnt = -1;
+ $this->yyerrcnt = - 1;
$x = new TPC_yyStackEntry;
$x->stateno = 0;
$x->major = 0;
$this->yystack = array();
array_push($this->yystack, $x);
}
- $yyendofinput = ($yymajor==0);
+ $yyendofinput = ($yymajor == 0);
- if (self::$yyTraceFILE) {
- fprintf(self::$yyTraceFILE, "%sInput %s\n",
- self::$yyTracePrompt, $this->yyTokenName[$yymajor]);
+ if ($this->yyTraceFILE) {
+ fprintf($this->yyTraceFILE, "%sInput %s\n",
+ $this->yyTracePrompt, $this->yyTokenName[$yymajor]);
}
do {
$yyact = $this->yy_find_shift_action($yymajor);
if ($yymajor < self::YYERRORSYMBOL &&
- !$this->yy_is_expected_token($yymajor)) {
+ !$this->yy_is_expected_token($yymajor)
+ ) {
// force a syntax error
$yyact = self::YY_ERROR_ACTION;
}
if ($yyact < self::YYNSTATE) {
$this->yy_shift($yyact, $yymajor, $yytokenvalue);
- $this->yyerrcnt--;
+ $this->yyerrcnt --;
if ($yyendofinput && $this->yyidx >= 0) {
$yymajor = 0;
} else {
@@ -866,30 +988,30 @@ static public $yy_action = array(
} elseif ($yyact < self::YYNSTATE + self::YYNRULE) {
$this->yy_reduce($yyact - self::YYNSTATE);
} elseif ($yyact == self::YY_ERROR_ACTION) {
- if (self::$yyTraceFILE) {
- fprintf(self::$yyTraceFILE, "%sSyntax Error!\n",
- self::$yyTracePrompt);
+ if ($this->yyTraceFILE) {
+ fprintf($this->yyTraceFILE, "%sSyntax Error!\n",
+ $this->yyTracePrompt);
}
if (self::YYERRORSYMBOL) {
if ($this->yyerrcnt < 0) {
$this->yy_syntax_error($yymajor, $yytokenvalue);
}
$yymx = $this->yystack[$this->yyidx]->major;
- if ($yymx == self::YYERRORSYMBOL || $yyerrorhit ){
- if (self::$yyTraceFILE) {
- fprintf(self::$yyTraceFILE, "%sDiscard input token %s\n",
- self::$yyTracePrompt, $this->yyTokenName[$yymajor]);
+ if ($yymx == self::YYERRORSYMBOL || $yyerrorhit) {
+ if ($this->yyTraceFILE) {
+ fprintf($this->yyTraceFILE, "%sDiscard input token %s\n",
+ $this->yyTracePrompt, $this->yyTokenName[$yymajor]);
}
$this->yy_destructor($yymajor, $yytokenvalue);
$yymajor = self::YYNOCODE;
} else {
while ($this->yyidx >= 0 &&
- $yymx != self::YYERRORSYMBOL &&
- ($yyact = $this->yy_find_shift_action(self::YYERRORSYMBOL)) >= self::YYNSTATE
- ){
+ $yymx != self::YYERRORSYMBOL &&
+ ($yyact = $this->yy_find_shift_action(self::YYERRORSYMBOL)) >= self::YYNSTATE
+ ) {
$this->yy_pop_parser_stack();
}
- if ($this->yyidx < 0 || $yymajor==0) {
+ if ($this->yyidx < 0 || $yymajor == 0) {
$this->yy_destructor($yymajor, $yytokenvalue);
$this->yy_parse_failed();
$yymajor = self::YYNOCODE;
@@ -918,4 +1040,3 @@ static public $yy_action = array(
} while ($yymajor != self::YYNOCODE && $this->yyidx >= 0);
}
}
-?> \ No newline at end of file
diff --git a/library/Smarty/libs/sysplugins/smarty_internal_data.php b/library/Smarty/libs/sysplugins/smarty_internal_data.php
index 5baf3b76d..9e16f10c0 100644
--- a/library/Smarty/libs/sysplugins/smarty_internal_data.php
+++ b/library/Smarty/libs/sysplugins/smarty_internal_data.php
@@ -1,22 +1,21 @@
<?php
/**
* Smarty Internal Plugin Data
+ * This file contains the basic classes and methods for template and variable creation
*
- * This file contains the basic classes and methodes for template and variable creation
- *
- * @package Smarty
+ * @package Smarty
* @subpackage Template
- * @author Uwe Tews
+ * @author Uwe Tews
*/
/**
- * Base class with template and variable methodes
+ * Base class with template and variable methods
*
- * @package Smarty
+ * @package Smarty
* @subpackage Template
*/
-class Smarty_Internal_Data {
-
+class Smarty_Internal_Data
+{
/**
* name of class used for templates
*
@@ -45,10 +44,10 @@ class Smarty_Internal_Data {
/**
* assigns a Smarty variable
*
- * @param array|string $tpl_var the template variable name(s)
- * @param mixed $value the value to assign
- * @param boolean $nocache if true any output of this variable will be not cached
- * @param boolean $scope the scope the variable will have (local,parent or root)
+ * @param array|string $tpl_var the template variable name(s)
+ * @param mixed $value the value to assign
+ * @param boolean $nocache if true any output of this variable will be not cached
+ *
* @return Smarty_Internal_Data current Smarty_Internal_Data (or Smarty or Smarty_Internal_Template) instance for chaining
*/
public function assign($tpl_var, $value = null, $nocache = false)
@@ -71,32 +70,40 @@ class Smarty_Internal_Data {
/**
* assigns a global Smarty variable
*
- * @param string $varname the global variable name
- * @param mixed $value the value to assign
- * @param boolean $nocache if true any output of this variable will be not cached
+ * @param string $varname the global variable name
+ * @param mixed $value the value to assign
+ * @param boolean $nocache if true any output of this variable will be not cached
+ *
* @return Smarty_Internal_Data current Smarty_Internal_Data (or Smarty or Smarty_Internal_Template) instance for chaining
*/
public function assignGlobal($varname, $value = null, $nocache = false)
{
if ($varname != '') {
Smarty::$global_tpl_vars[$varname] = new Smarty_variable($value, $nocache);
+ $ptr = $this;
+ while ($ptr instanceof Smarty_Internal_Template) {
+ $ptr->tpl_vars[$varname] = clone Smarty::$global_tpl_vars[$varname];
+ $ptr = $ptr->parent;
+ }
}
return $this;
}
+
/**
* assigns values to template variables by reference
*
- * @param string $tpl_var the template variable name
- * @param mixed $ &$value the referenced value to assign
- * @param boolean $nocache if true any output of this variable will be not cached
+ * @param string $tpl_var the template variable name
+ * @param $value
+ * @param boolean $nocache if true any output of this variable will be not cached
+ *
* @return Smarty_Internal_Data current Smarty_Internal_Data (or Smarty or Smarty_Internal_Template) instance for chaining
*/
public function assignByRef($tpl_var, &$value, $nocache = false)
{
if ($tpl_var != '') {
$this->tpl_vars[$tpl_var] = new Smarty_variable(null, $nocache);
- $this->tpl_vars[$tpl_var]->value = &$value;
+ $this->tpl_vars[$tpl_var]->value = & $value;
}
return $this;
@@ -105,10 +112,11 @@ class Smarty_Internal_Data {
/**
* appends values to template variables
*
- * @param array|string $tpl_var the template variable name(s)
- * @param mixed $value the value to append
- * @param boolean $merge flag if array elements shall be merged
- * @param boolean $nocache if true any output of this variable will be not cached
+ * @param array|string $tpl_var the template variable name(s)
+ * @param mixed $value the value to append
+ * @param boolean $merge flag if array elements shall be merged
+ * @param boolean $nocache if true any output of this variable will be not cached
+ *
* @return Smarty_Internal_Data current Smarty_Internal_Data (or Smarty or Smarty_Internal_Template) instance for chaining
*/
public function append($tpl_var, $value = null, $merge = false, $nocache = false)
@@ -129,7 +137,7 @@ class Smarty_Internal_Data {
settype($this->tpl_vars[$_key]->value, 'array');
}
if ($merge && is_array($_val)) {
- foreach($_val as $_mkey => $_mval) {
+ foreach ($_val as $_mkey => $_mval) {
$this->tpl_vars[$_key]->value[$_mkey] = $_mval;
}
} else {
@@ -151,7 +159,7 @@ class Smarty_Internal_Data {
settype($this->tpl_vars[$tpl_var]->value, 'array');
}
if ($merge && is_array($value)) {
- foreach($value as $_mkey => $_mval) {
+ foreach ($value as $_mkey => $_mval) {
$this->tpl_vars[$tpl_var]->value[$_mkey] = $_mval;
}
} else {
@@ -166,9 +174,10 @@ class Smarty_Internal_Data {
/**
* appends values to template variables by reference
*
- * @param string $tpl_var the template variable name
- * @param mixed &$value the referenced value to append
- * @param boolean $merge flag if array elements shall be merged
+ * @param string $tpl_var the template variable name
+ * @param mixed &$value the referenced value to append
+ * @param boolean $merge flag if array elements shall be merged
+ *
* @return Smarty_Internal_Data current Smarty_Internal_Data (or Smarty or Smarty_Internal_Template) instance for chaining
*/
public function appendByRef($tpl_var, &$value, $merge = false)
@@ -181,11 +190,11 @@ class Smarty_Internal_Data {
settype($this->tpl_vars[$tpl_var]->value, 'array');
}
if ($merge && is_array($value)) {
- foreach($value as $_key => $_val) {
- $this->tpl_vars[$tpl_var]->value[$_key] = &$value[$_key];
+ foreach ($value as $_key => $_val) {
+ $this->tpl_vars[$tpl_var]->value[$_key] = & $value[$_key];
}
} else {
- $this->tpl_vars[$tpl_var]->value[] = &$value;
+ $this->tpl_vars[$tpl_var]->value[] = & $value;
}
}
@@ -195,10 +204,11 @@ class Smarty_Internal_Data {
/**
* Returns a single or all template variables
*
- * @param string $varname variable name or null
- * @param string $_ptr optional pointer to data object
- * @param boolean $search_parents include parent templates?
- * @return string variable value or or array of variables
+ * @param string $varname variable name or null
+ * @param object $_ptr optional pointer to data object
+ * @param boolean $search_parents include parent templates?
+ *
+ * @return string variable value or or array of variables
*/
public function getTemplateVars($varname = null, $_ptr = null, $search_parents = true)
{
@@ -213,7 +223,8 @@ class Smarty_Internal_Data {
$_result = array();
if ($_ptr === null) {
$_ptr = $this;
- } while ($_ptr !== null) {
+ }
+ while ($_ptr !== null) {
foreach ($_ptr->tpl_vars AS $key => $var) {
if (!array_key_exists($key, $_result)) {
$_result[$key] = $var->value;
@@ -233,6 +244,7 @@ class Smarty_Internal_Data {
}
}
}
+
return $_result;
}
}
@@ -240,7 +252,8 @@ class Smarty_Internal_Data {
/**
* clear the given assigned template variable.
*
- * @param string|array $tpl_var the template variable(s) to clear
+ * @param string|array $tpl_var the template variable(s) to clear
+ *
* @return Smarty_Internal_Data current Smarty_Internal_Data (or Smarty or Smarty_Internal_Template) instance for chaining
*/
public function clearAssign($tpl_var)
@@ -258,19 +271,22 @@ class Smarty_Internal_Data {
/**
* clear all the assigned template variables.
+ *
* @return Smarty_Internal_Data current Smarty_Internal_Data (or Smarty or Smarty_Internal_Template) instance for chaining
*/
public function clearAllAssign()
{
$this->tpl_vars = array();
+
return $this;
}
/**
* load a config file, optionally load just selected sections
*
- * @param string $config_file filename
- * @param mixed $sections array of section names, single section or null
+ * @param string $config_file filename
+ * @param mixed $sections array of section names, single section or null
+ *
* @return Smarty_Internal_Data current Smarty_Internal_Data (or Smarty or Smarty_Internal_Template) instance for chaining
*/
public function configLoad($config_file, $sections = null)
@@ -278,22 +294,26 @@ class Smarty_Internal_Data {
// load Config class
$config = new Smarty_Internal_Config($config_file, $this->smarty, $this);
$config->loadConfigVars($sections);
+
return $this;
}
/**
* gets the object of a Smarty variable
*
- * @param string $variable the name of the Smarty variable
- * @param object $_ptr optional pointer to data object
- * @param boolean $search_parents search also in parent data
- * @return object the object of the variable
+ * @param string $variable the name of the Smarty variable
+ * @param object $_ptr optional pointer to data object
+ * @param boolean $search_parents search also in parent data
+ * @param bool $error_enable
+ *
+ * @return object the object of the variable
*/
public function getVariable($variable, $_ptr = null, $search_parents = true, $error_enable = true)
{
if ($_ptr === null) {
$_ptr = $this;
- } while ($_ptr !== null) {
+ }
+ while ($_ptr !== null) {
if (isset($_ptr->tpl_vars[$variable])) {
// found it, return it
return $_ptr->tpl_vars[$variable];
@@ -313,14 +333,17 @@ class Smarty_Internal_Data {
// force a notice
$x = $$variable;
}
+
return new Undefined_Smarty_Variable;
}
/**
* gets a config variable
*
- * @param string $variable the name of the config variable
- * @return mixed the value of the config variable
+ * @param string $variable the name of the config variable
+ * @param bool $error_enable
+ *
+ * @return mixed the value of the config variable
*/
public function getConfigVariable($variable, $error_enable = true)
{
@@ -337,24 +360,28 @@ class Smarty_Internal_Data {
// force a notice
$x = $$variable;
}
+
return null;
}
/**
* gets a stream variable
*
- * @param string $variable the stream of the variable
- * @return mixed the value of the stream variable
+ * @param string $variable the stream of the variable
+ *
+ * @throws SmartyException
+ * @return mixed the value of the stream variable
*/
public function getStreamVariable($variable)
{
$_result = '';
$fp = fopen($variable, 'r+');
if ($fp) {
- while (!feof($fp) && ($current_line = fgets($fp)) !== false ) {
+ while (!feof($fp) && ($current_line = fgets($fp)) !== false) {
$_result .= $current_line;
}
fclose($fp);
+
return $_result;
}
@@ -368,7 +395,9 @@ class Smarty_Internal_Data {
/**
* Returns a single or all config variables
*
- * @param string $varname variable name or null
+ * @param string $varname variable name or null
+ * @param bool $search_parents
+ *
* @return string variable value or or array of variables
*/
public function getConfigVars($varname = null, $search_parents = true)
@@ -383,7 +412,7 @@ class Smarty_Internal_Data {
} else {
$var_array = array_merge($_ptr->config_vars, $var_array);
}
- // not found, try at parent
+ // not found, try at parent
if ($search_parents) {
$_ptr = $_ptr->parent;
} else {
@@ -400,7 +429,8 @@ class Smarty_Internal_Data {
/**
* Deassigns a single or all config variables
*
- * @param string $varname variable name or null
+ * @param string $varname variable name or null
+ *
* @return Smarty_Internal_Data current Smarty_Internal_Data (or Smarty or Smarty_Internal_Template) instance for chaining
*/
public function clearConfig($varname = null)
@@ -410,21 +440,20 @@ class Smarty_Internal_Data {
} else {
$this->config_vars = array();
}
+
return $this;
}
-
}
/**
* class for the Smarty data object
- *
* The Smarty data object will hold Smarty variables in the current scope
*
- * @package Smarty
+ * @package Smarty
* @subpackage Template
*/
-class Smarty_Data extends Smarty_Internal_Data {
-
+class Smarty_Data extends Smarty_Internal_Data
+{
/**
* Smarty object
*
@@ -435,10 +464,12 @@ class Smarty_Data extends Smarty_Internal_Data {
/**
* create Smarty data object
*
- * @param Smarty|array $_parent parent template
- * @param Smarty $smarty global smarty instance
+ * @param Smarty|array $_parent parent template
+ * @param Smarty|Smarty_Internal_Template $smarty global smarty instance
+ *
+ * @throws SmartyException
*/
- public function __construct ($_parent = null, $smarty = null)
+ public function __construct($_parent = null, $smarty = null)
{
$this->smarty = $smarty;
if (is_object($_parent)) {
@@ -453,19 +484,17 @@ class Smarty_Data extends Smarty_Internal_Data {
throw new SmartyException("Wrong type for template variables");
}
}
-
}
/**
* class for the Smarty variable object
- *
* This class defines the Smarty variable object
*
- * @package Smarty
+ * @package Smarty
* @subpackage Template
*/
-class Smarty_Variable {
-
+class Smarty_Variable
+{
/**
* template variable
*
@@ -508,23 +537,22 @@ class Smarty_Variable {
{
return (string) $this->value;
}
-
}
/**
* class for undefined variable object
- *
* This class defines an object for undefined variable handling
*
- * @package Smarty
+ * @package Smarty
* @subpackage Template
*/
-class Undefined_Smarty_Variable {
-
+class Undefined_Smarty_Variable
+{
/**
* Returns FALSE for 'nocache' and NULL otherwise.
*
- * @param string $name
+ * @param string $name
+ *
* @return bool
*/
public function __get($name)
@@ -545,7 +573,4 @@ class Undefined_Smarty_Variable {
{
return "";
}
-
}
-
-?> \ No newline at end of file
diff --git a/library/Smarty/libs/sysplugins/smarty_internal_debug.php b/library/Smarty/libs/sysplugins/smarty_internal_debug.php
index 2aea13f30..e5175d51d 100644
--- a/library/Smarty/libs/sysplugins/smarty_internal_debug.php
+++ b/library/Smarty/libs/sysplugins/smarty_internal_debug.php
@@ -1,22 +1,21 @@
<?php
/**
* Smarty Internal Plugin Debug
- *
* Class to collect data for the Smarty Debugging Consol
*
- * @package Smarty
+ * @package Smarty
* @subpackage Debug
- * @author Uwe Tews
+ * @author Uwe Tews
*/
/**
* Smarty Internal Plugin Debug Class
*
- * @package Smarty
+ * @package Smarty
* @subpackage Debug
*/
-class Smarty_Internal_Debug extends Smarty_Internal_Data {
-
+class Smarty_Internal_Debug extends Smarty_Internal_Data
+{
/**
* template data
*
@@ -25,13 +24,52 @@ class Smarty_Internal_Debug extends Smarty_Internal_Data {
public static $template_data = array();
/**
+ * List of uid's which shall be ignored
+ *
+ * @var array
+ */
+ public static $ignore_uid = array();
+
+ /**
+ * Ignore template
+ *
+ * @param object $template
+ */
+ public static function ignore($template)
+ {
+ // calculate Uid if not already done
+ if ($template->source->uid == '') {
+ $template->source->filepath;
+ }
+ self::$ignore_uid[$template->source->uid] = true;
+ }
+
+ /**
* Start logging of compile time
*
* @param object $template
*/
public static function start_compile($template)
{
- $key = self::get_key($template);
+ static $_is_stringy = array('string' => true, 'eval' => true);
+ if (!empty($template->compiler->trace_uid)) {
+ $key = $template->compiler->trace_uid;
+ if (!isset(self::$template_data[$key])) {
+ if (isset($_is_stringy[$template->source->type])) {
+ self::$template_data[$key]['name'] = '\'' . substr($template->source->name, 0, 25) . '...\'';
+ } else {
+ self::$template_data[$key]['name'] = $template->source->filepath;
+ }
+ self::$template_data[$key]['compile_time'] = 0;
+ self::$template_data[$key]['render_time'] = 0;
+ self::$template_data[$key]['cache_time'] = 0;
+ }
+ } else {
+ if (isset(self::$ignore_uid[$template->source->uid])) {
+ return;
+ }
+ $key = self::get_key($template);
+ }
self::$template_data[$key]['start_time'] = microtime(true);
}
@@ -42,7 +80,15 @@ class Smarty_Internal_Debug extends Smarty_Internal_Data {
*/
public static function end_compile($template)
{
- $key = self::get_key($template);
+ if (!empty($template->compiler->trace_uid)) {
+ $key = $template->compiler->trace_uid;
+ } else {
+ if (isset(self::$ignore_uid[$template->source->uid])) {
+ return;
+ }
+
+ $key = self::get_key($template);
+ }
self::$template_data[$key]['compile_time'] += microtime(true) - self::$template_data[$key]['start_time'];
}
@@ -115,6 +161,7 @@ class Smarty_Internal_Debug extends Smarty_Internal_Data {
$smarty->left_delimiter = '{';
$smarty->right_delimiter = '}';
$smarty->debugging = false;
+ $smarty->debugging_ctrl = 'NONE';
$smarty->force_compile = false;
$_template = new Smarty_Internal_Template($smarty->debug_tpl, $smarty);
$_template->caching = false;
@@ -138,7 +185,8 @@ class Smarty_Internal_Debug extends Smarty_Internal_Data {
/**
* Recursively gets variables from all template/data scopes
*
- * @param Smarty_Internal_Template|Smarty_Data $obj object to debug
+ * @param Smarty_Internal_Template|Smarty_Data $obj object to debug
+ *
* @return StdClass
*/
public static function get_debug_vars($obj)
@@ -169,14 +217,16 @@ class Smarty_Internal_Debug extends Smarty_Internal_Data {
}
}
}
+
return (object) array('tpl_vars' => $tpl_vars, 'config_vars' => $config_vars);
}
/**
* Return key into $template_data for template
*
- * @param object $template template object
- * @return string key into $template_data
+ * @param object $template template object
+ *
+ * @return string key into $template_data
*/
private static function get_key($template)
{
@@ -190,17 +240,15 @@ class Smarty_Internal_Debug extends Smarty_Internal_Data {
return $key;
} else {
if (isset($_is_stringy[$template->source->type])) {
- self::$template_data[$key]['name'] = '\''.substr($template->source->name,0,25).'...\'';
+ self::$template_data[$key]['name'] = '\'' . substr($template->source->name, 0, 25) . '...\'';
} else {
self::$template_data[$key]['name'] = $template->source->filepath;
}
self::$template_data[$key]['compile_time'] = 0;
self::$template_data[$key]['render_time'] = 0;
self::$template_data[$key]['cache_time'] = 0;
+
return $key;
}
}
-
}
-
-?> \ No newline at end of file
diff --git a/library/Smarty/libs/sysplugins/smarty_internal_filter_handler.php b/library/Smarty/libs/sysplugins/smarty_internal_filter_handler.php
index c9370e1ac..4f0f3981c 100644
--- a/library/Smarty/libs/sysplugins/smarty_internal_filter_handler.php
+++ b/library/Smarty/libs/sysplugins/smarty_internal_filter_handler.php
@@ -1,41 +1,41 @@
<?php
/**
* Smarty Internal Plugin Filter Handler
- *
* Smarty filter handler class
*
- * @package Smarty
+ * @package Smarty
* @subpackage PluginsInternal
- * @author Uwe Tews
+ * @author Uwe Tews
*/
/**
* Class for filter processing
*
- * @package Smarty
+ * @package Smarty
* @subpackage PluginsInternal
*/
-class Smarty_Internal_Filter_Handler {
-
+class Smarty_Internal_Filter_Handler
+{
/**
* Run filters over content
- *
* The filters will be lazy loaded if required
* class name format: Smarty_FilterType_FilterName
* plugin filename format: filtertype.filtername.php
* Smarty2 filter plugins could be used
*
- * @param string $type the type of filter ('pre','post','output') which shall run
- * @param string $content the content which shall be processed by the filters
- * @param Smarty_Internal_Template $template template object
- * @return string the filtered content
+ * @param string $type the type of filter ('pre','post','output') which shall run
+ * @param string $content the content which shall be processed by the filters
+ * @param Smarty_Internal_Template $template template object
+ *
+ * @throws SmartyException
+ * @return string the filtered content
*/
public static function runFilter($type, $content, Smarty_Internal_Template $template)
{
$output = $content;
// loop over autoload filters of specified type
if (!empty($template->smarty->autoload_filters[$type])) {
- foreach ((array)$template->smarty->autoload_filters[$type] as $name) {
+ foreach ((array) $template->smarty->autoload_filters[$type] as $name) {
$plugin_name = "Smarty_{$type}filter_{$name}";
if ($template->smarty->loadPlugin($plugin_name)) {
if (function_exists($plugin_name)) {
@@ -64,7 +64,4 @@ class Smarty_Internal_Filter_Handler {
// return filtered output
return $output;
}
-
}
-
-?> \ No newline at end of file
diff --git a/library/Smarty/libs/sysplugins/smarty_internal_function_call_handler.php b/library/Smarty/libs/sysplugins/smarty_internal_function_call_handler.php
index 010d63592..a81ff728b 100644
--- a/library/Smarty/libs/sysplugins/smarty_internal_function_call_handler.php
+++ b/library/Smarty/libs/sysplugins/smarty_internal_function_call_handler.php
@@ -1,55 +1,52 @@
-<?php
-/**
- * Smarty Internal Plugin Function Call Handler
- *
- * @package Smarty
- * @subpackage PluginsInternal
- * @author Uwe Tews
- */
-
-/**
- * This class does call function defined with the {function} tag
- *
- * @package Smarty
- * @subpackage PluginsInternal
- */
-class Smarty_Internal_Function_Call_Handler {
-
- /**
- * This function handles calls to template functions defined by {function}
- * It does create a PHP function at the first call
- *
- * @param string $_name template function name
- * @param Smarty_Internal_Template $_template template object
- * @param array $_params Smarty variables passed as call parameter
- * @param string $_hash nocache hash value
- * @param bool $_nocache nocache flag
- */
- public static function call($_name, Smarty_Internal_Template $_template, $_params, $_hash, $_nocache)
- {
- if ($_nocache) {
- $_function = "smarty_template_function_{$_name}_nocache";
- } else {
- $_function = "smarty_template_function_{$_hash}_{$_name}";
- }
- if (!is_callable($_function)) {
- $_code = "function {$_function}(\$_smarty_tpl,\$params) {
- \$saved_tpl_vars = \$_smarty_tpl->tpl_vars;
- foreach (\$_smarty_tpl->smarty->template_functions['{$_name}']['parameter'] as \$key => \$value) {\$_smarty_tpl->tpl_vars[\$key] = new Smarty_variable(\$value);};
- foreach (\$params as \$key => \$value) {\$_smarty_tpl->tpl_vars[\$key] = new Smarty_variable(\$value);}?>";
- if ($_nocache) {
- $_code .= preg_replace(array("!<\?php echo \\'/\*%%SmartyNocache:{$_template->smarty->template_functions[$_name]['nocache_hash']}%%\*/|/\*/%%SmartyNocache:{$_template->smarty->template_functions[$_name]['nocache_hash']}%%\*/\\';\?>!",
- "!\\\'!"), array('', "'"), $_template->smarty->template_functions[$_name]['compiled']);
- $_template->smarty->template_functions[$_name]['called_nocache'] = true;
- } else {
- $_code .= preg_replace("/{$_template->smarty->template_functions[$_name]['nocache_hash']}/", $_template->properties['nocache_hash'], $_template->smarty->template_functions[$_name]['compiled']);
- }
- $_code .= "<?php \$_smarty_tpl->tpl_vars = \$saved_tpl_vars;}";
- eval($_code);
- }
- $_function($_template, $_params);
- }
-
-}
-
-?>
+<?php
+/**
+ * Smarty Internal Plugin Function Call Handler
+ *
+ * @package Smarty
+ * @subpackage PluginsInternal
+ * @author Uwe Tews
+ */
+
+/**
+ * This class does call function defined with the {function} tag
+ *
+ * @package Smarty
+ * @subpackage PluginsInternal
+ */
+class Smarty_Internal_Function_Call_Handler
+{
+ /**
+ * This function handles calls to template functions defined by {function}
+ * It does create a PHP function at the first call
+ *
+ * @param string $_name template function name
+ * @param Smarty_Internal_Template $_template template object
+ * @param array $_params Smarty variables passed as call parameter
+ * @param string $_hash nocache hash value
+ * @param bool $_nocache nocache flag
+ */
+ public static function call($_name, Smarty_Internal_Template $_template, $_params, $_hash, $_nocache)
+ {
+ if ($_nocache) {
+ $_function = "smarty_template_function_{$_name}_nocache";
+ } else {
+ $_function = "smarty_template_function_{$_hash}_{$_name}";
+ }
+ if (!is_callable($_function)) {
+ $_code = "function {$_function}(\$_smarty_tpl,\$params) {
+ \$saved_tpl_vars = \$_smarty_tpl->tpl_vars;
+ foreach (\$_smarty_tpl->smarty->template_functions['{$_name}']['parameter'] as \$key => \$value) {\$_smarty_tpl->tpl_vars[\$key] = new Smarty_variable(\$value);};
+ foreach (\$params as \$key => \$value) {\$_smarty_tpl->tpl_vars[\$key] = new Smarty_variable(\$value);}?>";
+ if ($_nocache) {
+ $_code .= preg_replace(array("!<\?php echo \\'/\*%%SmartyNocache:{$_template->smarty->template_functions[$_name]['nocache_hash']}%%\*/|/\*/%%SmartyNocache:{$_template->smarty->template_functions[$_name]['nocache_hash']}%%\*/\\';\?>!",
+ "!\\\'!"), array('', "'"), $_template->smarty->template_functions[$_name]['compiled']);
+ $_template->smarty->template_functions[$_name]['called_nocache'] = true;
+ } else {
+ $_code .= preg_replace("/{$_template->smarty->template_functions[$_name]['nocache_hash']}/", $_template->properties['nocache_hash'], $_template->smarty->template_functions[$_name]['compiled']);
+ }
+ $_code .= "<?php \$_smarty_tpl->tpl_vars = \$saved_tpl_vars;}";
+ eval($_code);
+ }
+ $_function($_template, $_params);
+ }
+}
diff --git a/library/Smarty/libs/sysplugins/smarty_internal_get_include_path.php b/library/Smarty/libs/sysplugins/smarty_internal_get_include_path.php
index 518c406aa..d46ca7029 100644
--- a/library/Smarty/libs/sysplugins/smarty_internal_get_include_path.php
+++ b/library/Smarty/libs/sysplugins/smarty_internal_get_include_path.php
@@ -1,48 +1,46 @@
-<?php
-/**
- * Smarty read include path plugin
- *
- * @package Smarty
- * @subpackage PluginsInternal
- * @author Monte Ohrt
- */
-
-/**
- * Smarty Internal Read Include Path Class
- *
- * @package Smarty
- * @subpackage PluginsInternal
- */
-class Smarty_Internal_Get_Include_Path {
-
- /**
- * Return full file path from PHP include_path
- *
- * @param string $filepath filepath
- * @return string|boolean full filepath or false
- */
- public static function getIncludePath($filepath)
- {
- static $_include_path = null;
-
- if (function_exists('stream_resolve_include_path')) {
- // available since PHP 5.3.2
- return stream_resolve_include_path($filepath);
- }
-
- if ($_include_path === null) {
- $_include_path = explode(PATH_SEPARATOR, get_include_path());
- }
-
- foreach ($_include_path as $_path) {
- if (file_exists($_path . DS . $filepath)) {
- return $_path . DS . $filepath;
- }
- }
-
- return false;
- }
-
-}
-
-?> \ No newline at end of file
+<?php
+/**
+ * Smarty read include path plugin
+ *
+ * @package Smarty
+ * @subpackage PluginsInternal
+ * @author Monte Ohrt
+ */
+
+/**
+ * Smarty Internal Read Include Path Class
+ *
+ * @package Smarty
+ * @subpackage PluginsInternal
+ */
+class Smarty_Internal_Get_Include_Path
+{
+ /**
+ * Return full file path from PHP include_path
+ *
+ * @param string $filepath filepath
+ *
+ * @return string|boolean full filepath or false
+ */
+ public static function getIncludePath($filepath)
+ {
+ static $_include_path = null;
+
+ if (function_exists('stream_resolve_include_path')) {
+ // available since PHP 5.3.2
+ return stream_resolve_include_path($filepath);
+ }
+
+ if ($_include_path === null) {
+ $_include_path = explode(PATH_SEPARATOR, get_include_path());
+ }
+
+ foreach ($_include_path as $_path) {
+ if (file_exists($_path . DS . $filepath)) {
+ return $_path . DS . $filepath;
+ }
+ }
+
+ return false;
+ }
+}
diff --git a/library/Smarty/libs/sysplugins/smarty_internal_nocache_insert.php b/library/Smarty/libs/sysplugins/smarty_internal_nocache_insert.php
index faae49af6..0d2facfe9 100644
--- a/library/Smarty/libs/sysplugins/smarty_internal_nocache_insert.php
+++ b/library/Smarty/libs/sysplugins/smarty_internal_nocache_insert.php
@@ -1,53 +1,51 @@
-<?php
-/**
- * Smarty Internal Plugin Nocache Insert
- *
- * Compiles the {insert} tag into the cache file
- *
- * @package Smarty
- * @subpackage Compiler
- * @author Uwe Tews
- */
-
-/**
- * Smarty Internal Plugin Compile Insert Class
- *
- * @package Smarty
- * @subpackage Compiler
- */
-class Smarty_Internal_Nocache_Insert {
-
- /**
- * Compiles code for the {insert} tag into cache file
- *
- * @param string $_function insert function name
- * @param array $_attr array with parameter
- * @param Smarty_Internal_Template $_template template object
- * @param string $_script script name to load or 'null'
- * @param string $_assign optional variable name
- * @return string compiled code
- */
- public static function compile($_function, $_attr, $_template, $_script, $_assign = null)
- {
- $_output = '<?php ';
- if ($_script != 'null') {
- // script which must be included
- // code for script file loading
- $_output .= "require_once '{$_script}';";
- }
- // call insert
- if (isset($_assign)) {
- $_output .= "\$_smarty_tpl->assign('{$_assign}' , {$_function} (" . var_export($_attr, true) . ",\$_smarty_tpl), true);?>";
- } else {
- $_output .= "echo {$_function}(" . var_export($_attr, true) . ",\$_smarty_tpl);?>";
- }
- $_tpl = $_template;
- while ($_tpl->parent instanceof Smarty_Internal_Template) {
- $_tpl = $_tpl->parent;
- }
- return "/*%%SmartyNocache:{$_tpl->properties['nocache_hash']}%%*/" . $_output . "/*/%%SmartyNocache:{$_tpl->properties['nocache_hash']}%%*/";
- }
-
-}
-
-?>
+<?php
+/**
+ * Smarty Internal Plugin Nocache Insert
+ * Compiles the {insert} tag into the cache file
+ *
+ * @package Smarty
+ * @subpackage Compiler
+ * @author Uwe Tews
+ */
+
+/**
+ * Smarty Internal Plugin Compile Insert Class
+ *
+ * @package Smarty
+ * @subpackage Compiler
+ */
+class Smarty_Internal_Nocache_Insert
+{
+ /**
+ * Compiles code for the {insert} tag into cache file
+ *
+ * @param string $_function insert function name
+ * @param array $_attr array with parameter
+ * @param Smarty_Internal_Template $_template template object
+ * @param string $_script script name to load or 'null'
+ * @param string $_assign optional variable name
+ *
+ * @return string compiled code
+ */
+ public static function compile($_function, $_attr, $_template, $_script, $_assign = null)
+ {
+ $_output = '<?php ';
+ if ($_script != 'null') {
+ // script which must be included
+ // code for script file loading
+ $_output .= "require_once '{$_script}';";
+ }
+ // call insert
+ if (isset($_assign)) {
+ $_output .= "\$_smarty_tpl->assign('{$_assign}' , {$_function} (" . var_export($_attr, true) . ",\$_smarty_tpl), true);?>";
+ } else {
+ $_output .= "echo {$_function}(" . var_export($_attr, true) . ",\$_smarty_tpl);?>";
+ }
+ $_tpl = $_template;
+ while ($_tpl->parent instanceof Smarty_Internal_Template) {
+ $_tpl = $_tpl->parent;
+ }
+
+ return "/*%%SmartyNocache:{$_tpl->properties['nocache_hash']}%%*/" . $_output . "/*/%%SmartyNocache:{$_tpl->properties['nocache_hash']}%%*/";
+ }
+}
diff --git a/library/Smarty/libs/sysplugins/smarty_internal_parsetree.php b/library/Smarty/libs/sysplugins/smarty_internal_parsetree.php
index c9fb1f762..186671021 100644
--- a/library/Smarty/libs/sysplugins/smarty_internal_parsetree.php
+++ b/library/Smarty/libs/sysplugins/smarty_internal_parsetree.php
@@ -1,395 +1,361 @@
-<?php
-/**
- * Smarty Internal Plugin Templateparser Parsetrees
- *
- * These are classes to build parsetrees in the template parser
- *
- * @package Smarty
- * @subpackage Compiler
- * @author Thue Kristensen
- * @author Uwe Tews
- */
-
-/**
- * @package Smarty
- * @subpackage Compiler
- * @ignore
- */
-abstract class _smarty_parsetree {
-
- /**
- * Parser object
- * @var object
- */
- public $parser;
- /**
- * Buffer content
- * @var mixed
- */
- public $data;
-
- /**
- * Return buffer
- *
- * @return string buffer content
- */
- abstract public function to_smarty_php();
-
-}
-
-/**
- * A complete smarty tag.
- *
- * @package Smarty
- * @subpackage Compiler
- * @ignore
- */
-class _smarty_tag extends _smarty_parsetree {
-
- /**
- * Saved block nesting level
- * @var int
- */
- public $saved_block_nesting;
-
- /**
- * Create parse tree buffer for Smarty tag
- *
- * @param object $parser parser object
- * @param string $data content
- */
- public function __construct($parser, $data)
- {
- $this->parser = $parser;
- $this->data = $data;
- $this->saved_block_nesting = $parser->block_nesting_level;
- }
-
- /**
- * Return buffer content
- *
- * @return string content
- */
- public function to_smarty_php()
- {
- return $this->data;
- }
-
- /**
- * Return complied code that loads the evaluated outout of buffer content into a temporary variable
- *
- * @return string template code
- */
- public function assign_to_var()
- {
- $var = sprintf('$_tmp%d', ++$this->parser->prefix_number);
- $this->parser->compiler->prefix_code[] = sprintf('<?php ob_start();?>%s<?php %s=ob_get_clean();?>', $this->data, $var);
- return $var;
- }
-
-}
-
-/**
- * Code fragment inside a tag.
- *
- * @package Smarty
- * @subpackage Compiler
- * @ignore
- */
-class _smarty_code extends _smarty_parsetree {
-
-
- /**
- * Create parse tree buffer for code fragment
- *
- * @param object $parser parser object
- * @param string $data content
- */
- public function __construct($parser, $data)
- {
- $this->parser = $parser;
- $this->data = $data;
- }
-
- /**
- * Return buffer content in parentheses
- *
- * @return string content
- */
- public function to_smarty_php()
- {
- return sprintf("(%s)", $this->data);
- }
-
-}
-
-/**
- * Double quoted string inside a tag.
- *
- * @package Smarty
- * @subpackage Compiler
- * @ignore
- */
-class _smarty_doublequoted extends _smarty_parsetree {
-
- /**
- * Create parse tree buffer for double quoted string subtrees
- *
- * @param object $parser parser object
- * @param _smarty_parsetree $subtree parsetree buffer
- */
- public function __construct($parser, _smarty_parsetree $subtree)
- {
- $this->parser = $parser;
- $this->subtrees[] = $subtree;
- if ($subtree instanceof _smarty_tag) {
- $this->parser->block_nesting_level = count($this->parser->compiler->_tag_stack);
- }
- }
-
- /**
- * Append buffer to subtree
- *
- * @param _smarty_parsetree $subtree parsetree buffer
- */
- public function append_subtree(_smarty_parsetree $subtree)
- {
- $last_subtree = count($this->subtrees) - 1;
- if ($last_subtree >= 0 && $this->subtrees[$last_subtree] instanceof _smarty_tag && $this->subtrees[$last_subtree]->saved_block_nesting < $this->parser->block_nesting_level) {
- if ($subtree instanceof _smarty_code) {
- $this->subtrees[$last_subtree]->data .= '<?php echo ' . $subtree->data . ';?>';
- } elseif ($subtree instanceof _smarty_dq_content) {
- $this->subtrees[$last_subtree]->data .= '<?php echo "' . $subtree->data . '";?>';
- } else {
- $this->subtrees[$last_subtree]->data .= $subtree->data;
- }
- } else {
- $this->subtrees[] = $subtree;
- }
- if ($subtree instanceof _smarty_tag) {
- $this->parser->block_nesting_level = count($this->parser->compiler->_tag_stack);
- }
- }
-
- /**
- * Merge subtree buffer content together
- *
- * @return string compiled template code
- */
- public function to_smarty_php()
- {
- $code = '';
- foreach ($this->subtrees as $subtree) {
- if ($code !== "") {
- $code .= ".";
- }
- if ($subtree instanceof _smarty_tag) {
- $more_php = $subtree->assign_to_var();
- } else {
- $more_php = $subtree->to_smarty_php();
- }
-
- $code .= $more_php;
-
- if (!$subtree instanceof _smarty_dq_content) {
- $this->parser->compiler->has_variable_string = true;
- }
- }
- return $code;
- }
-
-}
-
-/**
- * Raw chars as part of a double quoted string.
- *
- * @package Smarty
- * @subpackage Compiler
- * @ignore
- */
-class _smarty_dq_content extends _smarty_parsetree {
-
-
- /**
- * Create parse tree buffer with string content
- *
- * @param object $parser parser object
- * @param string $data string section
- */
- public function __construct($parser, $data)
- {
- $this->parser = $parser;
- $this->data = $data;
- }
-
- /**
- * Return content as double quoted string
- *
- * @return string doubled quoted string
- */
- public function to_smarty_php()
- {
- return '"' . $this->data . '"';
- }
-
-}
-
-/**
- * Template element
- *
- * @package Smarty
- * @subpackage Compiler
- * @ignore
- */
-class _smarty_template_buffer extends _smarty_parsetree {
-
- /**
- * Array of template elements
- *
- * @var array
- */
- public $subtrees = Array();
-
- /**
- * Create root of parse tree for template elements
- *
- * @param object $parser parse object
- */
- public function __construct($parser)
- {
- $this->parser = $parser;
- }
-
- /**
- * Append buffer to subtree
- *
- * @param _smarty_parsetree $subtree
- */
- public function append_subtree(_smarty_parsetree $subtree)
- {
- $this->subtrees[] = $subtree;
- }
-
- /**
- * Sanitize and merge subtree buffers together
- *
- * @return string template code content
- */
- public function to_smarty_php()
- {
- $code = '';
- for ($key = 0, $cnt = count($this->subtrees); $key < $cnt; $key++) {
- if ($key + 2 < $cnt) {
- if ($this->subtrees[$key] instanceof _smarty_linebreak && $this->subtrees[$key + 1] instanceof _smarty_tag && $this->subtrees[$key + 1]->data == '' && $this->subtrees[$key + 2] instanceof _smarty_linebreak) {
- $key = $key + 1;
- continue;
- }
- if (substr($this->subtrees[$key]->data, -1) == '<' && $this->subtrees[$key + 1]->data == '' && substr($this->subtrees[$key + 2]->data, -1) == '?') {
- $key = $key + 2;
- continue;
- }
- }
- if (substr($code, -1) == '<') {
- $subtree = $this->subtrees[$key]->to_smarty_php();
- if (substr($subtree, 0, 1) == '?') {
- $code = substr($code, 0, strlen($code) - 1) . '<<?php ?>?' . substr($subtree, 1);
- } elseif ($this->parser->asp_tags && substr($subtree, 0, 1) == '%') {
- $code = substr($code, 0, strlen($code) - 1) . '<<?php ?>%' . substr($subtree, 1);
- } else {
- $code .= $subtree;
- }
- continue;
- }
- if ($this->parser->asp_tags && substr($code, -1) == '%') {
- $subtree = $this->subtrees[$key]->to_smarty_php();
- if (substr($subtree, 0, 1) == '>') {
- $code = substr($code, 0, strlen($code) - 1) . '%<?php ?>>' . substr($subtree, 1);
- } else {
- $code .= $subtree;
- }
- continue;
- }
- if (substr($code, -1) == '?') {
- $subtree = $this->subtrees[$key]->to_smarty_php();
- if (substr($subtree, 0, 1) == '>') {
- $code = substr($code, 0, strlen($code) - 1) . '?<?php ?>>' . substr($subtree, 1);
- } else {
- $code .= $subtree;
- }
- continue;
- }
- $code .= $this->subtrees[$key]->to_smarty_php();
- }
- return $code;
- }
-
-}
-
-/**
- * template text
- *
- * @package Smarty
- * @subpackage Compiler
- * @ignore
- */
-class _smarty_text extends _smarty_parsetree {
-
-
- /**
- * Create template text buffer
- *
- * @param object $parser parser object
- * @param string $data text
- */
- public function __construct($parser, $data)
- {
- $this->parser = $parser;
- $this->data = $data;
- }
-
- /**
- * Return buffer content
- *
- * @return strint text
- */
- public function to_smarty_php()
- {
- return $this->data;
- }
-
-}
-
-/**
- * template linebreaks
- *
- * @package Smarty
- * @subpackage Compiler
- * @ignore
- */
-class _smarty_linebreak extends _smarty_parsetree {
-
- /**
- * Create buffer with linebreak content
- *
- * @param object $parser parser object
- * @param string $data linebreak string
- */
- public function __construct($parser, $data)
- {
- $this->parser = $parser;
- $this->data = $data;
- }
-
- /**
- * Return linebrak
- *
- * @return string linebreak
- */
- public function to_smarty_php()
- {
- return $this->data;
- }
-
-}
-
-?> \ No newline at end of file
+<?php
+/**
+ * Smarty Internal Plugin Templateparser Parsetrees
+ * These are classes to build parsetrees in the template parser
+ *
+ * @package Smarty
+ * @subpackage Compiler
+ * @author Thue Kristensen
+ * @author Uwe Tews
+ */
+
+/**
+ * @package Smarty
+ * @subpackage Compiler
+ * @ignore
+ */
+abstract class _smarty_parsetree
+{
+ /**
+ * Parser object
+ *
+ * @var object
+ */
+ public $parser;
+ /**
+ * Buffer content
+ *
+ * @var mixed
+ */
+ public $data;
+
+ /**
+ * Subtree array
+ *
+ * @var array
+ */
+ public $subtrees = array();
+
+ /**
+ * Return buffer
+ *
+ * @return string buffer content
+ */
+ abstract public function to_smarty_php();
+}
+
+/**
+ * A complete smarty tag.
+ *
+ * @package Smarty
+ * @subpackage Compiler
+ * @ignore
+ */
+class _smarty_tag extends _smarty_parsetree
+{
+ /**
+ * Saved block nesting level
+ *
+ * @var int
+ */
+ public $saved_block_nesting;
+
+ /**
+ * Create parse tree buffer for Smarty tag
+ *
+ * @param object $parser parser object
+ * @param string $data content
+ */
+ public function __construct($parser, $data)
+ {
+ $this->parser = $parser;
+ $this->data = $data;
+ $this->saved_block_nesting = $parser->block_nesting_level;
+ }
+
+ /**
+ * Return buffer content
+ *
+ * @return string content
+ */
+ public function to_smarty_php()
+ {
+ return $this->data;
+ }
+
+ /**
+ * Return complied code that loads the evaluated output of buffer content into a temporary variable
+ *
+ * @return string template code
+ */
+ public function assign_to_var()
+ {
+ $var = sprintf('$_tmp%d', ++Smarty_Internal_Templateparser::$prefix_number);
+ $this->parser->compiler->prefix_code[] = sprintf("<?php ob_start();\n%s\n%s=ob_get_clean();?>", preg_replace(array('/^\s*<\?php\s+/','/\s*\?>\s*$/'), '', $this->data), $var);
+
+ return $var;
+ }
+}
+
+/**
+ * Code fragment inside a tag.
+ *
+ * @package Smarty
+ * @subpackage Compiler
+ * @ignore
+ */
+class _smarty_code extends _smarty_parsetree
+{
+ /**
+ * Create parse tree buffer for code fragment
+ *
+ * @param object $parser parser object
+ * @param string $data content
+ */
+ public function __construct($parser, $data)
+ {
+ $this->parser = $parser;
+ $this->data = $data;
+ }
+
+ /**
+ * Return buffer content in parentheses
+ *
+ * @return string content
+ */
+ public function to_smarty_php()
+ {
+ return sprintf("(%s)", $this->data);
+ }
+}
+
+/**
+ * Double quoted string inside a tag.
+ *
+ * @package Smarty
+ * @subpackage Compiler
+ * @ignore
+ */
+class _smarty_doublequoted extends _smarty_parsetree
+{
+ /**
+ * Create parse tree buffer for double quoted string subtrees
+ *
+ * @param object $parser parser object
+ * @param _smarty_parsetree $subtree parsetree buffer
+ */
+ public function __construct($parser, _smarty_parsetree $subtree)
+ {
+ $this->parser = $parser;
+ $this->subtrees[] = $subtree;
+ if ($subtree instanceof _smarty_tag) {
+ $this->parser->block_nesting_level = count($this->parser->compiler->_tag_stack);
+ }
+ }
+
+ /**
+ * Append buffer to subtree
+ *
+ * @param _smarty_parsetree $subtree parsetree buffer
+ */
+ public function append_subtree(_smarty_parsetree $subtree)
+ {
+ $last_subtree = count($this->subtrees) - 1;
+ if ($last_subtree >= 0 && $this->subtrees[$last_subtree] instanceof _smarty_tag && $this->subtrees[$last_subtree]->saved_block_nesting < $this->parser->block_nesting_level) {
+ if ($subtree instanceof _smarty_code) {
+ $this->subtrees[$last_subtree]->data .= '<?php echo ' . $subtree->data . ';?>';
+ } elseif ($subtree instanceof _smarty_dq_content) {
+ $this->subtrees[$last_subtree]->data .= '<?php echo "' . $subtree->data . '";?>';
+ } else {
+ $this->subtrees[$last_subtree]->data .= $subtree->data;
+ }
+ } else {
+ $this->subtrees[] = $subtree;
+ }
+ if ($subtree instanceof _smarty_tag) {
+ $this->parser->block_nesting_level = count($this->parser->compiler->_tag_stack);
+ }
+ }
+
+ /**
+ * Merge subtree buffer content together
+ *
+ * @return string compiled template code
+ */
+ public function to_smarty_php()
+ {
+ $code = '';
+ foreach ($this->subtrees as $subtree) {
+ if ($code !== "") {
+ $code .= ".";
+ }
+ if ($subtree instanceof _smarty_tag) {
+ $more_php = $subtree->assign_to_var();
+ } else {
+ $more_php = $subtree->to_smarty_php();
+ }
+
+ $code .= $more_php;
+
+ if (!$subtree instanceof _smarty_dq_content) {
+ $this->parser->compiler->has_variable_string = true;
+ }
+ }
+
+ return $code;
+ }
+}
+
+/**
+ * Raw chars as part of a double quoted string.
+ *
+ * @package Smarty
+ * @subpackage Compiler
+ * @ignore
+ */
+class _smarty_dq_content extends _smarty_parsetree
+{
+ /**
+ * Create parse tree buffer with string content
+ *
+ * @param object $parser parser object
+ * @param string $data string section
+ */
+ public function __construct($parser, $data)
+ {
+ $this->parser = $parser;
+ $this->data = $data;
+ }
+
+ /**
+ * Return content as double quoted string
+ *
+ * @return string doubled quoted string
+ */
+ public function to_smarty_php()
+ {
+ return '"' . $this->data . '"';
+ }
+}
+
+/**
+ * Template element
+ *
+ * @package Smarty
+ * @subpackage Compiler
+ * @ignore
+ */
+class _smarty_template_buffer extends _smarty_parsetree
+{
+ /**
+ * Array of template elements
+ *
+ * @var array
+ */
+ public $subtrees = Array();
+
+ /**
+ * Create root of parse tree for template elements
+ *
+ * @param object $parser parse object
+ */
+ public function __construct($parser)
+ {
+ $this->parser = $parser;
+ }
+
+ /**
+ * Append buffer to subtree
+ *
+ * @param _smarty_parsetree $subtree
+ */
+ public function append_subtree(_smarty_parsetree $subtree)
+ {
+ if ($subtree->data !== '') {
+ $this->subtrees[] = $subtree;
+ }
+ }
+
+ /**
+ * Sanitize and merge subtree buffers together
+ *
+ * @return string template code content
+ */
+ public function to_smarty_php()
+ {
+ $code = '';
+ for ($key = 0, $cnt = count($this->subtrees); $key < $cnt; $key ++) {
+ if ($this->subtrees[$key] instanceof _smarty_text) {
+ $subtree = $this->subtrees[$key]->to_smarty_php();
+ while ($key + 1 < $cnt && ($this->subtrees[$key+1] instanceof _smarty_text || $this->subtrees[$key +1]->data == '')) {
+ $key++;
+ if ($this->subtrees[$key]->data == '') {
+ continue;
+ }
+ $subtree .= $this->subtrees[$key]->to_smarty_php();
+ }
+ if ($subtree == '') {
+ continue;
+ }
+ $code .= preg_replace('/(<%|%>|<\?php|<\?|\?>|<\/?script)/', "<?php echo '\$1'; ?>\n", $subtree);
+ continue;
+ }
+ if ($this->subtrees[$key] instanceof _smarty_tag) {
+ $subtree = $this->subtrees[$key]->to_smarty_php();
+ while ($key + 1 < $cnt && ($this->subtrees[$key+1] instanceof _smarty_tag || $this->subtrees[$key +1]->data == '')) {
+ $key++;
+ if ($this->subtrees[$key]->data == '') {
+ continue;
+ }
+ $newCode = $this->subtrees[$key]->to_smarty_php();
+ if ((preg_match('/^\s*<\?php\s+/', $newCode) && preg_match('/\s*\?>\s*$/', $subtree))) {
+ $subtree = preg_replace('/\s*\?>\s*$/', "\n", $subtree);
+ $subtree .= preg_replace('/^\s*<\?php\s+/', '', $newCode);
+ } else {
+ $subtree .= $newCode;
+ }
+ }
+ if ($subtree == '') {
+ continue;
+ }
+ $code .= $subtree;
+ continue;
+ }
+ $code .= $this->subtrees[$key]->to_smarty_php();
+ }
+ return $code;
+ }
+
+}
+
+/**
+ * template text
+ *
+ * @package Smarty
+ * @subpackage Compiler
+ * @ignore
+ */
+class _smarty_text extends _smarty_parsetree
+{
+ /**
+ * Create template text buffer
+ *
+ * @param object $parser parser object
+ * @param string $data text
+ */
+ public function __construct($parser, $data)
+ {
+ $this->parser = $parser;
+ $this->data = $data;
+ }
+
+ /**
+ * Return buffer content
+ *
+ * @return strint text
+ */
+ public function to_smarty_php()
+ {
+ return $this->data;
+ }
+}
diff --git a/library/Smarty/libs/sysplugins/smarty_internal_resource_eval.php b/library/Smarty/libs/sysplugins/smarty_internal_resource_eval.php
index cf2ec3e1c..1c64b7cf5 100644
--- a/library/Smarty/libs/sysplugins/smarty_internal_resource_eval.php
+++ b/library/Smarty/libs/sysplugins/smarty_internal_resource_eval.php
@@ -1,94 +1,96 @@
-<?php
-/**
- * Smarty Internal Plugin Resource Eval
- *
- * @package Smarty
- * @subpackage TemplateResources
- * @author Uwe Tews
- * @author Rodney Rehm
- */
-
-/**
- * Smarty Internal Plugin Resource Eval
- *
- * Implements the strings as resource for Smarty template
- *
- * {@internal unlike string-resources the compiled state of eval-resources is NOT saved for subsequent access}}
- *
- * @package Smarty
- * @subpackage TemplateResources
- */
-class Smarty_Internal_Resource_Eval extends Smarty_Resource_Recompiled {
-
- /**
- * populate Source Object with meta data from Resource
- *
- * @param Smarty_Template_Source $source source object
- * @param Smarty_Internal_Template $_template template object
- * @return void
- */
- public function populate(Smarty_Template_Source $source, Smarty_Internal_Template $_template=null)
- {
- $source->uid = $source->filepath = sha1($source->name);
- $source->timestamp = false;
- $source->exists = true;
- }
-
- /**
- * Load template's source from $resource_name into current template object
- *
- * @uses decode() to decode base64 and urlencoded template_resources
- * @param Smarty_Template_Source $source source object
- * @return string template source
- */
- public function getContent(Smarty_Template_Source $source)
- {
- return $this->decode($source->name);
- }
-
- /**
- * decode base64 and urlencode
- *
- * @param string $string template_resource to decode
- * @return string decoded template_resource
- */
- protected function decode($string)
- {
- // decode if specified
- if (($pos = strpos($string, ':')) !== false) {
- if (!strncmp($string, 'base64', 6)) {
- return base64_decode(substr($string, 7));
- } elseif (!strncmp($string, 'urlencode', 9)) {
- return urldecode(substr($string, 10));
- }
- }
-
- return $string;
- }
-
- /**
- * modify resource_name according to resource handlers specifications
- *
- * @param Smarty $smarty Smarty instance
- * @param string $resource_name resource_name to make unique
- * @return string unique resource name
- */
- protected function buildUniqueResourceName(Smarty $smarty, $resource_name)
- {
- return get_class($this) . '#' .$this->decode($resource_name);
- }
-
- /**
- * Determine basename for compiled filename
- *
- * @param Smarty_Template_Source $source source object
- * @return string resource's basename
- */
- protected function getBasename(Smarty_Template_Source $source)
- {
- return '';
- }
-
-}
-
-?> \ No newline at end of file
+<?php
+/**
+ * Smarty Internal Plugin Resource Eval
+ *
+ * @package Smarty
+ * @subpackage TemplateResources
+ * @author Uwe Tews
+ * @author Rodney Rehm
+ */
+
+/**
+ * Smarty Internal Plugin Resource Eval
+ * Implements the strings as resource for Smarty template
+ * {@internal unlike string-resources the compiled state of eval-resources is NOT saved for subsequent access}}
+ *
+ * @package Smarty
+ * @subpackage TemplateResources
+ */
+class Smarty_Internal_Resource_Eval extends Smarty_Resource_Recompiled
+{
+ /**
+ * populate Source Object with meta data from Resource
+ *
+ * @param Smarty_Template_Source $source source object
+ * @param Smarty_Internal_Template $_template template object
+ *
+ * @return void
+ */
+ public function populate(Smarty_Template_Source $source, Smarty_Internal_Template $_template = null)
+ {
+ $source->uid = $source->filepath = sha1($source->name);
+ $source->timestamp = false;
+ $source->exists = true;
+ }
+
+ /**
+ * Load template's source from $resource_name into current template object
+ *
+ * @uses decode() to decode base64 and urlencoded template_resources
+ *
+ * @param Smarty_Template_Source $source source object
+ *
+ * @return string template source
+ */
+ public function getContent(Smarty_Template_Source $source)
+ {
+ return $this->decode($source->name);
+ }
+
+ /**
+ * decode base64 and urlencode
+ *
+ * @param string $string template_resource to decode
+ *
+ * @return string decoded template_resource
+ */
+ protected function decode($string)
+ {
+ // decode if specified
+ if (($pos = strpos($string, ':')) !== false) {
+ if (!strncmp($string, 'base64', 6)) {
+ return base64_decode(substr($string, 7));
+ } elseif (!strncmp($string, 'urlencode', 9)) {
+ return urldecode(substr($string, 10));
+ }
+ }
+
+ return $string;
+ }
+
+ /**
+ * modify resource_name according to resource handlers specifications
+ *
+ * @param Smarty $smarty Smarty instance
+ * @param string $resource_name resource_name to make unique
+ * @param boolean $is_config flag for config resource
+ *
+ * @return string unique resource name
+ */
+ protected function buildUniqueResourceName(Smarty $smarty, $resource_name, $is_config = false)
+ {
+ return get_class($this) . '#' . $this->decode($resource_name);
+ }
+
+ /**
+ * Determine basename for compiled filename
+ *
+ * @param Smarty_Template_Source $source source object
+ *
+ * @return string resource's basename
+ */
+ protected function getBasename(Smarty_Template_Source $source)
+ {
+ return '';
+ }
+}
diff --git a/library/Smarty/libs/sysplugins/smarty_internal_resource_extends.php b/library/Smarty/libs/sysplugins/smarty_internal_resource_extends.php
index 9481d9922..c78dba512 100644
--- a/library/Smarty/libs/sysplugins/smarty_internal_resource_extends.php
+++ b/library/Smarty/libs/sysplugins/smarty_internal_resource_extends.php
@@ -1,37 +1,38 @@
<?php
/**
-* Smarty Internal Plugin Resource Extends
-*
-* @package Smarty
-* @subpackage TemplateResources
-* @author Uwe Tews
-* @author Rodney Rehm
-*/
+ * Smarty Internal Plugin Resource Extends
+ *
+ * @package Smarty
+ * @subpackage TemplateResources
+ * @author Uwe Tews
+ * @author Rodney Rehm
+ */
/**
-* Smarty Internal Plugin Resource Extends
-*
-* Implements the file system as resource for Smarty which {extend}s a chain of template files templates
-*
-* @package Smarty
-* @subpackage TemplateResources
-*/
-class Smarty_Internal_Resource_Extends extends Smarty_Resource {
-
+ * Smarty Internal Plugin Resource Extends
+ * Implements the file system as resource for Smarty which {extend}s a chain of template files templates
+ *
+ * @package Smarty
+ * @subpackage TemplateResources
+ */
+class Smarty_Internal_Resource_Extends extends Smarty_Resource
+{
/**
- * mbstring.overload flag
- *
- * @var int
- */
+ * mbstring.overload flag
+ *
+ * @var int
+ */
public $mbstring_overload = 0;
/**
- * populate Source Object with meta data from Resource
- *
- * @param Smarty_Template_Source $source source object
- * @param Smarty_Internal_Template $_template template object
- */
- public function populate(Smarty_Template_Source $source, Smarty_Internal_Template $_template=null)
+ * populate Source Object with meta data from Resource
+ *
+ * @param Smarty_Template_Source $source source object
+ * @param Smarty_Internal_Template $_template template object
+ *
+ * @throws SmartyException
+ */
+ public function populate(Smarty_Template_Source $source, Smarty_Internal_Template $_template = null)
{
$uid = '';
$sources = array();
@@ -43,7 +44,7 @@ class Smarty_Internal_Resource_Extends extends Smarty_Resource {
throw new SmartyException("Resource type {$s->type} cannot be used with the extends resource type");
}
$sources[$s->uid] = $s;
- $uid .= $s->filepath;
+ $uid .= realpath($s->filepath);
if ($_template && $_template->smarty->compile_check) {
$exists = $exists && $s->exists;
}
@@ -60,10 +61,10 @@ class Smarty_Internal_Resource_Extends extends Smarty_Resource {
}
/**
- * populate Source Object with timestamp and exists from Resource
- *
- * @param Smarty_Template_Source $source source object
- */
+ * populate Source Object with timestamp and exists from Resource
+ *
+ * @param Smarty_Template_Source $source source object
+ */
public function populateTimestamp(Smarty_Template_Source $source)
{
$source->exists = true;
@@ -74,84 +75,38 @@ class Smarty_Internal_Resource_Extends extends Smarty_Resource {
}
/**
- * Load template's source from files into current template object
- *
- * @param Smarty_Template_Source $source source object
- * @return string template source
- * @throws SmartyException if source cannot be loaded
- */
+ * Load template's source from files into current template object
+ *
+ * @param Smarty_Template_Source $source source object
+ *
+ * @return string template source
+ * @throws SmartyException if source cannot be loaded
+ */
public function getContent(Smarty_Template_Source $source)
{
if (!$source->exists) {
throw new SmartyException("Unable to read template {$source->type} '{$source->name}'");
}
- $this->mbstring_overload = ini_get('mbstring.func_overload') & 2;
- $_rdl = preg_quote($source->smarty->right_delimiter);
- $_ldl = preg_quote($source->smarty->left_delimiter);
$_components = array_reverse($source->components);
- $_first = reset($_components);
- $_last = end($_components);
+ $_content = '';
foreach ($_components as $_component) {
- // register dependency
- if ($_component != $_first) {
- $source->template->properties['file_dependency'][$_component->uid] = array($_component->filepath, $_component->timestamp, $_component->type);
- }
-
// read content
- $source->filepath = $_component->filepath;
- $_content = $_component->content;
-
- // extend sources
- if ($_component != $_last) {
- if (preg_match_all("!({$_ldl}block\s(.+?){$_rdl})!", $_content, $_open) !=
- preg_match_all("!({$_ldl}/block{$_rdl})!", $_content, $_close)) {
- throw new SmartyException("unmatched {block} {/block} pairs in template {$_component->type} '{$_component->name}'");
- }
- preg_match_all("!{$_ldl}block\s(.+?){$_rdl}|{$_ldl}/block{$_rdl}|{$_ldl}\*([\S\s]*?)\*{$_rdl}!", $_content, $_result, PREG_OFFSET_CAPTURE);
- $_result_count = count($_result[0]);
- $_start = 0;
- while ($_start+1 < $_result_count) {
- $_end = 0;
- $_level = 1;
- if (($this->mbstring_overload ? mb_substr($_result[0][$_start][0],0,mb_strlen($source->smarty->left_delimiter,'latin1')+1, 'latin1') : substr($_result[0][$_start][0],0,strlen($source->smarty->left_delimiter)+1)) == $source->smarty->left_delimiter.'*') {
- $_start++;
- continue;
- }
- while ($_level != 0) {
- $_end++;
- if (($this->mbstring_overload ? mb_substr($_result[0][$_start + $_end][0],0,mb_strlen($source->smarty->left_delimiter,'latin1')+1, 'latin1') : substr($_result[0][$_start + $_end][0],0,strlen($source->smarty->left_delimiter)+1)) == $source->smarty->left_delimiter.'*') {
- continue;
- }
- if (!strpos($_result[0][$_start + $_end][0], '/')) {
- $_level++;
- } else {
- $_level--;
- }
- }
- $_block_content = str_replace($source->smarty->left_delimiter . '$smarty.block.parent' . $source->smarty->right_delimiter, '%%%%SMARTY_PARENT%%%%',
- ($this->mbstring_overload ? mb_substr($_content, $_result[0][$_start][1] + mb_strlen($_result[0][$_start][0], 'latin1'), $_result[0][$_start + $_end][1] - $_result[0][$_start][1] - + mb_strlen($_result[0][$_start][0], 'latin1'), 'latin1') : substr($_content, $_result[0][$_start][1] + strlen($_result[0][$_start][0]), $_result[0][$_start + $_end][1] - $_result[0][$_start][1] - + strlen($_result[0][$_start][0]))));
- Smarty_Internal_Compile_Block::saveBlockData($_block_content, $_result[0][$_start][0], $source->template, $_component->filepath);
- $_start = $_start + $_end + 1;
- }
- } else {
- return $_content;
- }
+ $_content .= $_component->content;
}
+ return $_content;
}
/**
- * Determine basename for compiled filename
- *
- * @param Smarty_Template_Source $source source object
- * @return string resource's basename
- */
+ * Determine basename for compiled filename
+ *
+ * @param Smarty_Template_Source $source source object
+ *
+ * @return string resource's basename
+ */
public function getBasename(Smarty_Template_Source $source)
{
return str_replace(':', '.', basename($source->filepath));
}
-
}
-
-?> \ No newline at end of file
diff --git a/library/Smarty/libs/sysplugins/smarty_internal_resource_file.php b/library/Smarty/libs/sysplugins/smarty_internal_resource_file.php
index 48b391d20..0abdc4495 100644
--- a/library/Smarty/libs/sysplugins/smarty_internal_resource_file.php
+++ b/library/Smarty/libs/sysplugins/smarty_internal_resource_file.php
@@ -2,29 +2,28 @@
/**
* Smarty Internal Plugin Resource File
*
- * @package Smarty
+ * @package Smarty
* @subpackage TemplateResources
- * @author Uwe Tews
- * @author Rodney Rehm
+ * @author Uwe Tews
+ * @author Rodney Rehm
*/
/**
* Smarty Internal Plugin Resource File
- *
* Implements the file system as resource for Smarty templates
*
- * @package Smarty
+ * @package Smarty
* @subpackage TemplateResources
*/
-class Smarty_Internal_Resource_File extends Smarty_Resource {
-
+class Smarty_Internal_Resource_File extends Smarty_Resource
+{
/**
* populate Source Object with meta data from Resource
*
* @param Smarty_Template_Source $source source object
* @param Smarty_Internal_Template $_template template object
*/
- public function populate(Smarty_Template_Source $source, Smarty_Internal_Template $_template=null)
+ public function populate(Smarty_Template_Source $source, Smarty_Internal_Template $_template = null)
{
$source->filepath = $this->buildFilepath($source, $_template);
@@ -33,7 +32,7 @@ class Smarty_Internal_Resource_File extends Smarty_Resource {
$source->smarty->security_policy->isTrustedResourceDir($source->filepath);
}
- $source->uid = sha1($source->filepath);
+ $source->uid = sha1(realpath($source->filepath));
if ($source->smarty->compile_check && !isset($source->timestamp)) {
$source->timestamp = @filemtime($source->filepath);
$source->exists = !!$source->timestamp;
@@ -55,9 +54,10 @@ class Smarty_Internal_Resource_File extends Smarty_Resource {
/**
* Load template's source from file into current template object
*
- * @param Smarty_Template_Source $source source object
- * @return string template source
- * @throws SmartyException if source cannot be loaded
+ * @param Smarty_Template_Source $source source object
+ *
+ * @return string template source
+ * @throws SmartyException if source cannot be loaded
*/
public function getContent(Smarty_Template_Source $source)
{
@@ -73,8 +73,9 @@ class Smarty_Internal_Resource_File extends Smarty_Resource {
/**
* Determine basename for compiled filename
*
- * @param Smarty_Template_Source $source source object
- * @return string resource's basename
+ * @param Smarty_Template_Source $source source object
+ *
+ * @return string resource's basename
*/
public function getBasename(Smarty_Template_Source $source)
{
@@ -82,9 +83,7 @@ class Smarty_Internal_Resource_File extends Smarty_Resource {
if (($_pos = strpos($_file, ']')) !== false) {
$_file = substr($_file, $_pos + 1);
}
+
return basename($_file);
}
-
}
-
-?> \ No newline at end of file
diff --git a/library/Smarty/libs/sysplugins/smarty_internal_resource_php.php b/library/Smarty/libs/sysplugins/smarty_internal_resource_php.php
index 7cd8baeec..7463c2960 100644
--- a/library/Smarty/libs/sysplugins/smarty_internal_resource_php.php
+++ b/library/Smarty/libs/sysplugins/smarty_internal_resource_php.php
@@ -2,38 +2,40 @@
/**
* Smarty Internal Plugin Resource PHP
- *
* Implements the file system as resource for PHP templates
*
- * @package Smarty
+ * @package Smarty
* @subpackage TemplateResources
- * @author Uwe Tews
- * @author Rodney Rehm
+ * @author Uwe Tews
+ * @author Rodney Rehm
*/
-class Smarty_Internal_Resource_PHP extends Smarty_Resource_Uncompiled {
+class Smarty_Internal_Resource_PHP extends Smarty_Resource_Uncompiled
+{
/**
* container for short_open_tag directive's value before executing PHP templates
+ *
* @var string
*/
protected $short_open_tag;
/**
* Create a new PHP Resource
- *
+
*/
public function __construct()
{
- $this->short_open_tag = ini_get( 'short_open_tag' );
+ $this->short_open_tag = ini_get('short_open_tag');
}
/**
* populate Source Object with meta data from Resource
*
- * @param Smarty_Template_Source $source source object
- * @param Smarty_Internal_Template $_template template object
+ * @param Smarty_Template_Source $source source object
+ * @param Smarty_Internal_Template $_template template object
+ *
* @return void
*/
- public function populate(Smarty_Template_Source $source, Smarty_Internal_Template $_template=null)
+ public function populate(Smarty_Template_Source $source, Smarty_Internal_Template $_template = null)
{
$source->filepath = $this->buildFilepath($source, $_template);
@@ -53,7 +55,8 @@ class Smarty_Internal_Resource_PHP extends Smarty_Resource_Uncompiled {
/**
* populate Source Object with timestamp and exists from Resource
*
- * @param Smarty_Template_Source $source source object
+ * @param Smarty_Template_Source $source source object
+ *
* @return void
*/
public function populateTimestamp(Smarty_Template_Source $source)
@@ -65,9 +68,10 @@ class Smarty_Internal_Resource_PHP extends Smarty_Resource_Uncompiled {
/**
* Load template's source from file into current template object
*
- * @param Smarty_Template_Source $source source object
- * @return string template source
- * @throws SmartyException if source cannot be loaded
+ * @param Smarty_Template_Source $source source object
+ *
+ * @return string template source
+ * @throws SmartyException if source cannot be loaded
*/
public function getContent(Smarty_Template_Source $source)
{
@@ -80,15 +84,14 @@ class Smarty_Internal_Resource_PHP extends Smarty_Resource_Uncompiled {
/**
* Render and output the template (without using the compiler)
*
- * @param Smarty_Template_Source $source source object
- * @param Smarty_Internal_Template $_template template object
+ * @param Smarty_Template_Source $source source object
+ * @param Smarty_Internal_Template $_template template object
+ *
* @return void
- * @throws SmartyException if template cannot be loaded or allow_php_templates is disabled
+ * @throws SmartyException if template cannot be loaded or allow_php_templates is disabled
*/
public function renderUncompiled(Smarty_Template_Source $source, Smarty_Internal_Template $_template)
{
- $_smarty_template = $_template;
-
if (!$source->smarty->allow_php_templates) {
throw new SmartyException("PHP templates are disabled");
}
@@ -105,10 +108,12 @@ class Smarty_Internal_Resource_PHP extends Smarty_Resource_Uncompiled {
extract($_template->getTemplateVars());
// include PHP template with short open tags enabled
- ini_set( 'short_open_tag', '1' );
+ ini_set('short_open_tag', '1');
+ /** @var Smarty_Internal_Template $_smarty_template
+ * used in included file
+ */
+ $_smarty_template = $_template;
include($source->filepath);
- ini_set( 'short_open_tag', $this->short_open_tag );
+ ini_set('short_open_tag', $this->short_open_tag);
}
}
-
-?> \ No newline at end of file
diff --git a/library/Smarty/libs/sysplugins/smarty_internal_resource_registered.php b/library/Smarty/libs/sysplugins/smarty_internal_resource_registered.php
index 44497b922..f12d843e1 100644
--- a/library/Smarty/libs/sysplugins/smarty_internal_resource_registered.php
+++ b/library/Smarty/libs/sysplugins/smarty_internal_resource_registered.php
@@ -2,31 +2,31 @@
/**
* Smarty Internal Plugin Resource Registered
*
- * @package Smarty
+ * @package Smarty
* @subpackage TemplateResources
- * @author Uwe Tews
- * @author Rodney Rehm
+ * @author Uwe Tews
+ * @author Rodney Rehm
*/
/**
* Smarty Internal Plugin Resource Registered
- *
* Implements the registered resource for Smarty template
*
- * @package Smarty
+ * @package Smarty
* @subpackage TemplateResources
* @deprecated
*/
-class Smarty_Internal_Resource_Registered extends Smarty_Resource {
-
+class Smarty_Internal_Resource_Registered extends Smarty_Resource
+{
/**
* populate Source Object with meta data from Resource
*
- * @param Smarty_Template_Source $source source object
- * @param Smarty_Internal_Template $_template template object
+ * @param Smarty_Template_Source $source source object
+ * @param Smarty_Internal_Template $_template template object
+ *
* @return void
*/
- public function populate(Smarty_Template_Source $source, Smarty_Internal_Template $_template=null)
+ public function populate(Smarty_Template_Source $source, Smarty_Internal_Template $_template = null)
{
$source->filepath = $source->type . ':' . $source->name;
$source->uid = sha1($source->filepath);
@@ -39,7 +39,8 @@ class Smarty_Internal_Resource_Registered extends Smarty_Resource {
/**
* populate Source Object with timestamp and exists from Resource
*
- * @param Smarty_Template_Source $source source object
+ * @param Smarty_Template_Source $source source object
+ *
* @return void
*/
public function populateTimestamp(Smarty_Template_Source $source)
@@ -51,23 +52,26 @@ class Smarty_Internal_Resource_Registered extends Smarty_Resource {
/**
* Get timestamp (epoch) the template source was modified
*
- * @param Smarty_Template_Source $source source object
- * @return integer|boolean timestamp (epoch) the template was modified, false if resources has no timestamp
+ * @param Smarty_Template_Source $source source object
+ *
+ * @return integer|boolean timestamp (epoch) the template was modified, false if resources has no timestamp
*/
public function getTemplateTimestamp(Smarty_Template_Source $source)
{
// return timestamp
$time_stamp = false;
call_user_func_array($source->smarty->registered_resources[$source->type][0][1], array($source->name, &$time_stamp, $source->smarty));
+
return is_numeric($time_stamp) ? (int) $time_stamp : $time_stamp;
}
/**
* Load template's source by invoking the registered callback into current template object
*
- * @param Smarty_Template_Source $source source object
- * @return string template source
- * @throws SmartyException if source cannot be loaded
+ * @param Smarty_Template_Source $source source object
+ *
+ * @return string template source
+ * @throws SmartyException if source cannot be loaded
*/
public function getContent(Smarty_Template_Source $source)
{
@@ -76,20 +80,19 @@ class Smarty_Internal_Resource_Registered extends Smarty_Resource {
if (is_bool($t) && !$t) {
throw new SmartyException("Unable to read template {$source->type} '{$source->name}'");
}
+
return $source->content;
}
/**
* Determine basename for compiled filename
*
- * @param Smarty_Template_Source $source source object
- * @return string resource's basename
+ * @param Smarty_Template_Source $source source object
+ *
+ * @return string resource's basename
*/
protected function getBasename(Smarty_Template_Source $source)
{
return basename($source->name);
}
-
}
-
-?> \ No newline at end of file
diff --git a/library/Smarty/libs/sysplugins/smarty_internal_resource_stream.php b/library/Smarty/libs/sysplugins/smarty_internal_resource_stream.php
index 85698c232..f7d1aac31 100644
--- a/library/Smarty/libs/sysplugins/smarty_internal_resource_stream.php
+++ b/library/Smarty/libs/sysplugins/smarty_internal_resource_stream.php
@@ -1,36 +1,39 @@
<?php
/**
* Smarty Internal Plugin Resource Stream
- *
* Implements the streams as resource for Smarty template
*
- * @package Smarty
+ * @package Smarty
* @subpackage TemplateResources
- * @author Uwe Tews
- * @author Rodney Rehm
+ * @author Uwe Tews
+ * @author Rodney Rehm
*/
/**
* Smarty Internal Plugin Resource Stream
- *
* Implements the streams as resource for Smarty template
*
- * @link http://php.net/streams
- * @package Smarty
+ * @link http://php.net/streams
+ * @package Smarty
* @subpackage TemplateResources
*/
-class Smarty_Internal_Resource_Stream extends Smarty_Resource_Recompiled {
-
+class Smarty_Internal_Resource_Stream extends Smarty_Resource_Recompiled
+{
/**
* populate Source Object with meta data from Resource
*
* @param Smarty_Template_Source $source source object
* @param Smarty_Internal_Template $_template template object
+ *
* @return void
*/
- public function populate(Smarty_Template_Source $source, Smarty_Internal_Template $_template=null)
+ public function populate(Smarty_Template_Source $source, Smarty_Internal_Template $_template = null)
{
- $source->filepath = str_replace(':', '://', $source->resource);
+ if (strpos($source->resource, '://') !== false) {
+ $source->filepath = $source->resource;
+ } else {
+ $source->filepath = str_replace(':', '://', $source->resource);
+ }
$source->uid = false;
$source->content = $this->getContent($source);
$source->timestamp = false;
@@ -41,6 +44,7 @@ class Smarty_Internal_Resource_Stream extends Smarty_Resource_Recompiled {
* Load template's source from stream into current template object
*
* @param Smarty_Template_Source $source source object
+ *
* @return string template source
* @throws SmartyException if source cannot be loaded
*/
@@ -54,23 +58,24 @@ class Smarty_Internal_Resource_Stream extends Smarty_Resource_Recompiled {
$t .= $current_line;
}
fclose($fp);
+
return $t;
} else {
return false;
}
}
-
+
/**
* modify resource_name according to resource handlers specifications
*
- * @param Smarty $smarty Smarty instance
- * @param string $resource_name resource_name to make unique
+ * @param Smarty $smarty Smarty instance
+ * @param string $resource_name resource_name to make unique
+ * @param boolean $is_config flag for config resource
+ *
* @return string unique resource name
*/
- protected function buildUniqueResourceName(Smarty $smarty, $resource_name)
+ protected function buildUniqueResourceName(Smarty $smarty, $resource_name, $is_config = false)
{
return get_class($this) . '#' . $resource_name;
}
}
-
-?> \ No newline at end of file
diff --git a/library/Smarty/libs/sysplugins/smarty_internal_resource_string.php b/library/Smarty/libs/sysplugins/smarty_internal_resource_string.php
index 9571337b0..bfa069974 100644
--- a/library/Smarty/libs/sysplugins/smarty_internal_resource_string.php
+++ b/library/Smarty/libs/sysplugins/smarty_internal_resource_string.php
@@ -2,32 +2,31 @@
/**
* Smarty Internal Plugin Resource String
*
- * @package Smarty
+ * @package Smarty
* @subpackage TemplateResources
- * @author Uwe Tews
- * @author Rodney Rehm
+ * @author Uwe Tews
+ * @author Rodney Rehm
*/
/**
* Smarty Internal Plugin Resource String
- *
* Implements the strings as resource for Smarty template
- *
* {@internal unlike eval-resources the compiled state of string-resources is saved for subsequent access}}
*
- * @package Smarty
+ * @package Smarty
* @subpackage TemplateResources
*/
-class Smarty_Internal_Resource_String extends Smarty_Resource {
-
+class Smarty_Internal_Resource_String extends Smarty_Resource
+{
/**
* populate Source Object with meta data from Resource
*
- * @param Smarty_Template_Source $source source object
- * @param Smarty_Internal_Template $_template template object
+ * @param Smarty_Template_Source $source source object
+ * @param Smarty_Internal_Template $_template template object
+ *
* @return void
*/
- public function populate(Smarty_Template_Source $source, Smarty_Internal_Template $_template=null)
+ public function populate(Smarty_Template_Source $source, Smarty_Internal_Template $_template = null)
{
$source->uid = $source->filepath = sha1($source->name);
$source->timestamp = 0;
@@ -38,18 +37,21 @@ class Smarty_Internal_Resource_String extends Smarty_Resource {
* Load template's source from $resource_name into current template object
*
* @uses decode() to decode base64 and urlencoded template_resources
- * @param Smarty_Template_Source $source source object
- * @return string template source
+ *
+ * @param Smarty_Template_Source $source source object
+ *
+ * @return string template source
*/
public function getContent(Smarty_Template_Source $source)
{
return $this->decode($source->name);
}
-
+
/**
* decode base64 and urlencode
*
- * @param string $string template_resource to decode
+ * @param string $string template_resource to decode
+ *
* @return string decoded template_resource
*/
protected function decode($string)
@@ -62,35 +64,34 @@ class Smarty_Internal_Resource_String extends Smarty_Resource {
return urldecode(substr($string, 10));
}
}
-
+
return $string;
}
-
+
/**
* modify resource_name according to resource handlers specifications
*
- * @param Smarty $smarty Smarty instance
- * @param string $resource_name resource_name to make unique
+ * @param Smarty $smarty Smarty instance
+ * @param string $resource_name resource_name to make unique
+ * @param boolean $is_config flag for config resource
+ *
* @return string unique resource name
*/
- protected function buildUniqueResourceName(Smarty $smarty, $resource_name)
+ protected function buildUniqueResourceName(Smarty $smarty, $resource_name, $is_config = false)
{
- return get_class($this) . '#' .$this->decode($resource_name);
+ return get_class($this) . '#' . $this->decode($resource_name);
}
/**
* Determine basename for compiled filename
- *
* Always returns an empty string.
*
- * @param Smarty_Template_Source $source source object
- * @return string resource's basename
+ * @param Smarty_Template_Source $source source object
+ *
+ * @return string resource's basename
*/
protected function getBasename(Smarty_Template_Source $source)
{
return '';
}
-
}
-
-?> \ No newline at end of file
diff --git a/library/Smarty/libs/sysplugins/smarty_internal_smartytemplatecompiler.php b/library/Smarty/libs/sysplugins/smarty_internal_smartytemplatecompiler.php
index 1ec1aa430..50bd16ef2 100644
--- a/library/Smarty/libs/sysplugins/smarty_internal_smartytemplatecompiler.php
+++ b/library/Smarty/libs/sysplugins/smarty_internal_smartytemplatecompiler.php
@@ -1,27 +1,26 @@
<?php
/**
* Smarty Internal Plugin Smarty Template Compiler Base
+ * This file contains the basic classes and methods for compiling Smarty templates with lexer/parser
*
- * This file contains the basic classes and methodes for compiling Smarty templates with lexer/parser
- *
- * @package Smarty
+ * @package Smarty
* @subpackage Compiler
- * @author Uwe Tews
+ * @author Uwe Tews
*/
/**
* @ignore
*/
-include ("smarty_internal_parsetree.php");
+include 'smarty_internal_parsetree.php';
/**
* Class SmartyTemplateCompiler
*
- * @package Smarty
+ * @package Smarty
* @subpackage Compiler
*/
-class Smarty_Internal_SmartyTemplateCompiler extends Smarty_Internal_TemplateCompilerBase {
-
+class Smarty_Internal_SmartyTemplateCompiler extends Smarty_Internal_TemplateCompilerBase
+{
/**
* Lexer class name
*
@@ -81,10 +80,11 @@ class Smarty_Internal_SmartyTemplateCompiler extends Smarty_Internal_TemplateCom
}
/**
- * Methode to compile a Smarty template
+ * method to compile a Smarty template
*
* @param mixed $_content template source
- * @return bool true if compiling succeeded, false if it failed
+ *
+ * @return bool true if compiling succeeded, false if it failed
*/
protected function doCompile($_content)
{
@@ -94,8 +94,21 @@ class Smarty_Internal_SmartyTemplateCompiler extends Smarty_Internal_TemplateCom
// init the lexer/parser to compile the template
$this->lex = new $this->lexer_class($_content, $this);
$this->parser = new $this->parser_class($this->lex, $this);
- if ($this->smarty->_parserdebug)
+ if ($this->inheritance_child) {
+ // start state on child templates
+ $this->lex->yypushstate(Smarty_Internal_Templatelexer::CHILDBODY);
+ }
+ if (function_exists('mb_internal_encoding') && ((int) ini_get('mbstring.func_overload')) & 2) {
+ $mbEncoding = mb_internal_encoding();
+ mb_internal_encoding('ASCII');
+ } else {
+ $mbEncoding = null;
+ }
+
+ if ($this->smarty->_parserdebug) {
$this->parser->PrintTrace();
+ $this->lex->PrintTrace();
+ }
// get tokens from lexer and parse them
while ($this->lex->yylex() && !$this->abort_and_recompile) {
if ($this->smarty->_parserdebug) {
@@ -111,17 +124,17 @@ class Smarty_Internal_SmartyTemplateCompiler extends Smarty_Internal_TemplateCom
}
// finish parsing process
$this->parser->doParse(0, 0);
+ if ($mbEncoding) {
+ mb_internal_encoding($mbEncoding);
+ }
// check for unclosed tags
if (count($this->_tag_stack) > 0) {
// get stacked info
list($openTag, $_data) = array_pop($this->_tag_stack);
- $this->trigger_template_error("unclosed {" . $openTag . "} tag");
+ $this->trigger_template_error("unclosed {$this->smarty->left_delimiter}" . $openTag . "{$this->smarty->right_delimiter} tag");
}
// return compiled code
// return str_replace(array("? >\n<?php","? ><?php"), array('',''), $this->parser->retvalue);
return $this->parser->retvalue;
}
-
}
-
-?> \ No newline at end of file
diff --git a/library/Smarty/libs/sysplugins/smarty_internal_template.php b/library/Smarty/libs/sysplugins/smarty_internal_template.php
index de9d54cf6..f1a73a4ae 100644
--- a/library/Smarty/libs/sysplugins/smarty_internal_template.php
+++ b/library/Smarty/libs/sysplugins/smarty_internal_template.php
@@ -1,28 +1,27 @@
<?php
/**
* Smarty Internal Plugin Template
- *
* This file contains the Smarty template engine
*
- * @package Smarty
+ * @package Smarty
* @subpackage Template
- * @author Uwe Tews
+ * @author Uwe Tews
*/
/**
* Main class with template data structures and methods
*
- * @package Smarty
+ * @package Smarty
* @subpackage Template
- *
* @property Smarty_Template_Source $source
* @property Smarty_Template_Compiled $compiled
* @property Smarty_Template_Cached $cached
*/
-class Smarty_Internal_Template extends Smarty_Internal_TemplateBase {
-
+class Smarty_Internal_Template extends Smarty_Internal_TemplateBase
+{
/**
* cache_id
+ *
* @var string
*/
public $cache_id = null;
@@ -33,95 +32,108 @@ class Smarty_Internal_Template extends Smarty_Internal_TemplateBase {
public $compile_id = null;
/**
* caching enabled
+ *
* @var boolean
*/
public $caching = null;
/**
* cache lifetime in seconds
+ *
* @var integer
*/
public $cache_lifetime = null;
/**
* Template resource
+ *
* @var string
*/
public $template_resource = null;
/**
* flag if compiled template is invalid and must be (re)compiled
+ *
* @var bool
*/
public $mustCompile = null;
/**
* flag if template does contain nocache code sections
+ *
* @var bool
*/
public $has_nocache_code = false;
/**
* special compiled and cached template properties
+ *
* @var array
*/
public $properties = array('file_dependency' => array(),
- 'nocache_hash' => '',
- 'function' => array());
+ 'nocache_hash' => '',
+ 'function' => array());
/**
* required plugins
+ *
* @var array
*/
public $required_plugins = array('compiled' => array(), 'nocache' => array());
/**
* Global smarty instance
+ *
* @var Smarty
*/
public $smarty = null;
/**
* blocks for template inheritance
+ *
* @var array
*/
public $block_data = array();
/**
* variable filters
+ *
* @var array
*/
public $variable_filters = array();
/**
* optional log of tag/attributes
+ *
* @var array
*/
public $used_tags = array();
/**
* internal flag to allow relative path in child template blocks
+ *
* @var bool
*/
public $allow_relative_path = false;
/**
* internal capture runtime stack
+ *
* @var array
*/
public $_capture_stack = array(0 => array());
/**
* Create template data object
- *
* Some of the global Smarty settings copied to template scope
* It load the required template resources and cacher plugins
*
* @param string $template_resource template resource string
* @param Smarty $smarty Smarty instance
* @param Smarty_Internal_Template $_parent back pointer to parent object with variables or null
- * @param mixed $_cache_id cache id or null
+ * @param mixed $_cache_id cache id or null
* @param mixed $_compile_id compile id or null
* @param bool $_caching use caching?
* @param int $_cache_lifetime cache life-time in seconds
*/
public function __construct($template_resource, $smarty, $_parent = null, $_cache_id = null, $_compile_id = null, $_caching = null, $_cache_lifetime = null)
{
- $this->smarty = &$smarty;
+ $this->smarty = & $smarty;
// Smarty parameter
$this->cache_id = $_cache_id === null ? $this->smarty->cache_id : $_cache_id;
$this->compile_id = $_compile_id === null ? $this->smarty->compile_id : $_compile_id;
$this->caching = $_caching === null ? $this->smarty->caching : $_caching;
- if ($this->caching === true)
+ if ($this->caching === true) {
$this->caching = Smarty::CACHING_LIFETIME_CURRENT;
+ }
$this->cache_lifetime = $_cache_lifetime === null ? $this->smarty->cache_lifetime : $_cache_lifetime;
$this->parent = $_parent;
// Template resource
@@ -134,9 +146,9 @@ class Smarty_Internal_Template extends Smarty_Internal_TemplateBase {
/**
* Returns if the current template must be compiled by the Smarty compiler
- *
* It does compare the timestamps of template source and the compiled templates and checks the force compile configuration
*
+ * @throws SmartyException
* @return boolean true if the template must be compiled
*/
public function mustCompile()
@@ -153,12 +165,12 @@ class Smarty_Internal_Template extends Smarty_Internal_TemplateBase {
$this->mustCompile = (!$this->source->uncompiled && ($this->smarty->force_compile || $this->source->recompiled || $this->compiled->timestamp === false ||
($this->smarty->compile_check && $this->compiled->timestamp < $this->source->timestamp)));
}
+
return $this->mustCompile;
}
/**
* Compiles the template
- *
* If the template is not evaluated the compiled template is saved on disk
*/
public function compileTemplateSource()
@@ -166,16 +178,14 @@ class Smarty_Internal_Template extends Smarty_Internal_TemplateBase {
if (!$this->source->recompiled) {
$this->properties['file_dependency'] = array();
if ($this->source->components) {
+ // for the extends resource the compiler will fill it
// uses real resource for file dependency
- $source = end($this->source->components);
- $this->properties['file_dependency'][$this->source->uid] = array($this->source->filepath, $this->source->timestamp, $source->type);
+ // $source = end($this->source->components);
+ // $this->properties['file_dependency'][$this->source->uid] = array($this->source->filepath, $this->source->timestamp, $source->type);
} else {
$this->properties['file_dependency'][$this->source->uid] = array($this->source->filepath, $this->source->timestamp, $this->source->type);
}
}
- if ($this->smarty->debugging) {
- Smarty_Internal_Debug::start_compile($this);
- }
// compile locking
if ($this->smarty->compile_locking && !$this->source->recompiled) {
if ($saved_timestamp = $this->compiled->timestamp) {
@@ -185,7 +195,8 @@ class Smarty_Internal_Template extends Smarty_Internal_TemplateBase {
// call compiler
try {
$code = $this->compiler->compileTemplate($this);
- } catch (Exception $e) {
+ }
+ catch (Exception $e) {
// restore old timestamp in case of error
if ($this->smarty->compile_locking && !$this->source->recompiled && $saved_timestamp) {
touch($this->compiled->filepath, $saved_timestamp);
@@ -196,15 +207,13 @@ class Smarty_Internal_Template extends Smarty_Internal_TemplateBase {
if (!$this->source->recompiled && $this->compiler->write_compiled_code) {
// write compiled template
$_filepath = $this->compiled->filepath;
- if ($_filepath === false)
+ if ($_filepath === false) {
throw new SmartyException('getCompiledFilepath() did not return a destination to save the compiled template to');
+ }
Smarty_Internal_Write_File::writeFile($_filepath, $code, $this->smarty);
$this->compiled->exists = true;
$this->compiled->isCompiled = true;
}
- if ($this->smarty->debugging) {
- Smarty_Internal_Debug::end_compile($this);
- }
// release compiler object to free memory
unset($this->compiler);
}
@@ -212,6 +221,8 @@ class Smarty_Internal_Template extends Smarty_Internal_TemplateBase {
/**
* Writes the cached template output
*
+ * @param string $content
+ *
* @return bool
*/
public function writeCachedContent($content)
@@ -220,13 +231,18 @@ class Smarty_Internal_Template extends Smarty_Internal_TemplateBase {
// don't write cache file
return false;
}
+ $this->cached->timestamp = time();
$this->properties['cache_lifetime'] = $this->cache_lifetime;
- $this->properties['unifunc'] = 'content_' . str_replace('.', '_', uniqid('', true));
+ $this->properties['unifunc'] = 'content_' . str_replace(array('.', ','), '_', uniqid('', true));
$content = $this->createTemplateCodeFrame($content, true);
+ /** @var Smarty_Internal_Template $_smarty_tpl
+ * used in evaluated code
+ */
$_smarty_tpl = $this;
eval("?>" . $content);
$this->cached->valid = true;
$this->cached->processed = true;
+
return $this->cached->write($this, $content);
}
@@ -238,15 +254,16 @@ class Smarty_Internal_Template extends Smarty_Internal_TemplateBase {
* @param mixed $compile_id compile id to be used with this template
* @param integer $caching cache mode
* @param integer $cache_lifetime life time of cache data
- * @param array $vars optional variables to assign
+ * @param $data
* @param int $parent_scope scope in which {include} should execute
+ *
* @returns string template content
*/
public function getSubTemplate($template, $cache_id, $compile_id, $caching, $cache_lifetime, $data, $parent_scope)
{
// already in template cache?
if ($this->smarty->allow_ambiguous_resources) {
- $_templateId = Smarty_Resource::getUniqueTemplateName($this->smarty, $template) . $cache_id . $compile_id;
+ $_templateId = Smarty_Resource::getUniqueTemplateName($this, $template) . $cache_id . $compile_id;
} else {
$_templateId = $this->smarty->joined_template_dir . '#' . $template . $cache_id . $compile_id;
}
@@ -268,13 +285,13 @@ class Smarty_Internal_Template extends Smarty_Internal_TemplateBase {
$tpl->tpl_vars = $this->tpl_vars;
$tpl->tpl_vars['smarty'] = clone $this->tpl_vars['smarty'];
} elseif ($parent_scope == Smarty::SCOPE_PARENT) {
- $tpl->tpl_vars = &$this->tpl_vars;
+ $tpl->tpl_vars = & $this->tpl_vars;
} elseif ($parent_scope == Smarty::SCOPE_GLOBAL) {
- $tpl->tpl_vars = &Smarty::$global_tpl_vars;
+ $tpl->tpl_vars = & Smarty::$global_tpl_vars;
} elseif (($scope_ptr = $this->getScopePointer($parent_scope)) == null) {
- $tpl->tpl_vars = &$this->tpl_vars;
+ $tpl->tpl_vars = & $this->tpl_vars;
} else {
- $tpl->tpl_vars = &$scope_ptr->tpl_vars;
+ $tpl->tpl_vars = & $scope_ptr->tpl_vars;
}
$tpl->config_vars = $this->config_vars;
if (!empty($data)) {
@@ -283,6 +300,7 @@ class Smarty_Internal_Template extends Smarty_Internal_TemplateBase {
$tpl->tpl_vars[$_key] = new Smarty_variable($_val);
}
}
+
return $tpl->fetch(null, null, null, null, false, false, true);
}
@@ -294,27 +312,28 @@ class Smarty_Internal_Template extends Smarty_Internal_TemplateBase {
* @param mixed $compile_id compile id to be used with this template
* @param integer $caching cache mode
* @param integer $cache_lifetime life time of cache data
- * @param array $vars optional variables to assign
+ * @param $data
* @param int $parent_scope scope in which {include} should execute
* @param string $hash nocache hash code
+ *
* @returns string template content
*/
public function setupInlineSubTemplate($template, $cache_id, $compile_id, $caching, $cache_lifetime, $data, $parent_scope, $hash)
{
$tpl = new $this->smarty->template_class($template, $this->smarty, $this, $cache_id, $compile_id, $caching, $cache_lifetime);
- $tpl->properties['nocache_hash'] = $hash;
+ $tpl->properties['nocache_hash'] = $hash;
// get variables from calling scope
- if ($parent_scope == Smarty::SCOPE_LOCAL ) {
+ if ($parent_scope == Smarty::SCOPE_LOCAL) {
$tpl->tpl_vars = $this->tpl_vars;
$tpl->tpl_vars['smarty'] = clone $this->tpl_vars['smarty'];
} elseif ($parent_scope == Smarty::SCOPE_PARENT) {
- $tpl->tpl_vars = &$this->tpl_vars;
+ $tpl->tpl_vars = & $this->tpl_vars;
} elseif ($parent_scope == Smarty::SCOPE_GLOBAL) {
- $tpl->tpl_vars = &Smarty::$global_tpl_vars;
+ $tpl->tpl_vars = & Smarty::$global_tpl_vars;
} elseif (($scope_ptr = $this->getScopePointer($parent_scope)) == null) {
- $tpl->tpl_vars = &$this->tpl_vars;
+ $tpl->tpl_vars = & $this->tpl_vars;
} else {
- $tpl->tpl_vars = &$scope_ptr->tpl_vars;
+ $tpl->tpl_vars = & $scope_ptr->tpl_vars;
}
$tpl->config_vars = $this->config_vars;
if (!empty($data)) {
@@ -323,15 +342,16 @@ class Smarty_Internal_Template extends Smarty_Internal_TemplateBase {
$tpl->tpl_vars[$_key] = new Smarty_variable($_val);
}
}
+
return $tpl;
}
-
/**
* Create code frame for compiled and cached templates
*
- * @param string $content optional template content
- * @param bool $cache flag for cache file
+ * @param string $content optional template content
+ * @param bool $cache flag for cache file
+ *
* @return string
*/
public function createTemplateCodeFrame($content = '', $cache = false)
@@ -344,7 +364,11 @@ class Smarty_Internal_Template extends Smarty_Internal_TemplateBase {
foreach ($this->required_plugins['compiled'] as $tmp) {
foreach ($tmp as $data) {
$file = addslashes($data['file']);
- $plugins_string .= "if (!is_callable('{$data['function']}')) include '{$file}';\n";
+ if (is_Array($data['function'])) {
+ $plugins_string .= "if (!is_callable(array('{$data['function'][0]}','{$data['function'][1]}'))) include '{$file}';\n";
+ } else {
+ $plugins_string .= "if (!is_callable('{$data['function']}')) include '{$file}';\n";
+ }
}
}
$plugins_string .= '?>';
@@ -355,7 +379,11 @@ class Smarty_Internal_Template extends Smarty_Internal_TemplateBase {
foreach ($this->required_plugins['nocache'] as $tmp) {
foreach ($tmp as $data) {
$file = addslashes($data['file']);
- $plugins_string .= addslashes("if (!is_callable('{$data['function']}')) include '{$file}';\n");
+ if (is_Array($data['function'])) {
+ $plugins_string .= addslashes("if (!is_callable(array('{$data['function'][0]}','{$data['function'][1]}'))) include '{$file}';\n");
+ } else {
+ $plugins_string .= addslashes("if (!is_callable('{$data['function']}')) include '{$file}';\n");
+ }
}
}
$plugins_string .= "?>/*/%%SmartyNocache:{$this->properties['nocache_hash']}%%*/';?>\n";
@@ -382,7 +410,7 @@ class Smarty_Internal_Template extends Smarty_Internal_TemplateBase {
}
}
}
- foreach ($this->smarty->template_functions as $name => $function_data) {
+ foreach ($this->smarty->template_functions as $name => $function_data) {
if (isset($function_data['called_nocache'])) {
unset($function_data['called_nocache'], $function_data['called_functions'], $this->smarty->template_functions[$name]['called_nocache']);
$this->properties['function'][$name] = $function_data;
@@ -392,7 +420,7 @@ class Smarty_Internal_Template extends Smarty_Internal_TemplateBase {
}
$this->properties['version'] = Smarty::SMARTY_VERSION;
if (!isset($this->properties['unifunc'])) {
- $this->properties['unifunc'] = 'content_' . str_replace('.', '_', uniqid('', true));
+ $this->properties['unifunc'] = 'content_' . str_replace(array('.', ','), '_', uniqid('', true));
}
if (!$this->source->recompiled) {
$output .= "\$_valid = \$_smarty_tpl->decodeProperties(" . var_export($this->properties, true) . ',' . ($cache ? 'true' : 'false') . "); /*/%%SmartyHeaderCode%%*/?>\n";
@@ -401,20 +429,21 @@ class Smarty_Internal_Template extends Smarty_Internal_TemplateBase {
$output .= $plugins_string;
$output .= $content;
if (!$this->source->recompiled) {
- $output .= '<?php }} ?>';
+ $output .= "<?php }} ?>\n";
}
+
return $output;
}
/**
* This function is executed automatically when a compiled or cached template file is included
- *
* - Decode saved properties from compiled template and cache files
* - Check if compiled or cache file is valid
*
- * @param array $properties special template properties
- * @param bool $cache flag if called from cache file
- * @return bool flag if compiled or cache file is valid
+ * @param array $properties special template properties
+ * @param bool $cache flag if called from cache file
+ *
+ * @return bool flag if compiled or cache file is valid
*/
public function decodeProperties($properties, $cache = false)
{
@@ -436,7 +465,7 @@ class Smarty_Internal_Template extends Smarty_Internal_TemplateBase {
$is_valid = true;
if ($this->properties['version'] != Smarty::SMARTY_VERSION) {
$is_valid = false;
- } else if (((!$cache && $this->smarty->compile_check && empty($this->compiled->_properties) && !$this->compiled->isCompiled) || $cache && ($this->smarty->compile_check === true || $this->smarty->compile_check === Smarty::COMPILECHECK_ON)) && !empty($this->properties['file_dependency'])) {
+ } elseif (((!$cache && $this->smarty->compile_check && empty($this->compiled->_properties) && !$this->compiled->isCompiled) || $cache && ($this->smarty->compile_check === true || $this->smarty->compile_check === Smarty::COMPILECHECK_ON)) && !empty($this->properties['file_dependency'])) {
foreach ($this->properties['file_dependency'] as $_file_to_check) {
if ($_file_to_check[2] == 'file' || $_file_to_check[2] == 'php') {
if ($this->source->filepath == $_file_to_check[0] && isset($this->source->timestamp)) {
@@ -459,6 +488,13 @@ class Smarty_Internal_Template extends Smarty_Internal_TemplateBase {
}
}
if ($cache) {
+ // CACHING_LIFETIME_SAVED cache expiry has to be validated here since otherwise we'd define the unifunc
+ if ($this->caching === Smarty::CACHING_LIFETIME_SAVED &&
+ $this->properties['cache_lifetime'] >= 0 &&
+ (time() > ($this->cached->timestamp + $this->properties['cache_lifetime']))
+ ) {
+ $is_valid = false;
+ }
$this->cached->valid = $is_valid;
} else {
$this->mustCompile = !$is_valid;
@@ -467,15 +503,16 @@ class Smarty_Internal_Template extends Smarty_Internal_TemplateBase {
if (!$cache) {
$this->compiled->_properties = $properties;
}
+
return $is_valid;
}
/**
* Template code runtime function to create a local Smarty variable for array assignments
*
- * @param string $tpl_var tempate variable name
- * @param bool $nocache cache mode of variable
- * @param int $scope scope of variable
+ * @param string $tpl_var tempate variable name
+ * @param bool $nocache cache mode of variable
+ * @param int $scope scope of variable
*/
public function createLocalArrayVariable($tpl_var, $nocache = false, $scope = Smarty::SCOPE_LOCAL)
{
@@ -495,8 +532,9 @@ class Smarty_Internal_Template extends Smarty_Internal_TemplateBase {
/**
* Template code runtime function to get pointer to template variable array of requested scope
*
- * @param int $scope requested variable scope
- * @return array array of template variables
+ * @param int $scope requested variable scope
+ *
+ * @return array array of template variables
*/
public function &getScope($scope)
{
@@ -507,18 +545,21 @@ class Smarty_Internal_Template extends Smarty_Internal_TemplateBase {
while (!empty($ptr->parent)) {
$ptr = $ptr->parent;
}
+
return $ptr->tpl_vars;
} elseif ($scope == Smarty::SCOPE_GLOBAL) {
return Smarty::$global_tpl_vars;
}
$null = null;
+
return $null;
}
/**
* Get parent or root of template parent chain
*
- * @param int $scope pqrent or root scope
+ * @param int $scope pqrent or root scope
+ *
* @return mixed object
*/
public function getScopePointer($scope)
@@ -530,16 +571,19 @@ class Smarty_Internal_Template extends Smarty_Internal_TemplateBase {
while (!empty($ptr->parent)) {
$ptr = $ptr->parent;
}
+
return $ptr;
}
+
return null;
}
/**
* [util function] counts an array, arrayaccess/traversable or PDOStatement object
*
- * @param mixed $value
- * @return int the count for arrays and objects that implement countable, 1 for other objects that don't, and 0 for empty elements
+ * @param mixed $value
+ *
+ * @return int the count for arrays and objects that implement countable, 1 for other objects that don't, and 0 for empty elements
*/
public function _count($value)
{
@@ -562,12 +606,13 @@ class Smarty_Internal_Template extends Smarty_Internal_TemplateBase {
} elseif (is_object($value)) {
return count($value);
}
+
return 0;
}
/**
* runtime error not matching capture tags
- *
+
*/
public function capture_error()
{
@@ -575,22 +620,26 @@ class Smarty_Internal_Template extends Smarty_Internal_TemplateBase {
}
/**
- * Empty cache for this template
- *
- * @param integer $exp_time expiration time
- * @return integer number of cache files deleted
- */
- public function clearCache($exp_time=null)
+ * Empty cache for this template
+ *
+ * @param integer $exp_time expiration time
+ *
+ * @return integer number of cache files deleted
+ */
+ public function clearCache($exp_time = null)
{
Smarty_CacheResource::invalidLoadedCache($this->smarty);
+
return $this->cached->handler->clear($this->smarty, $this->template_name, $this->cache_id, $this->compile_id, $exp_time);
}
- /**
+ /**
* set Smarty property in template context
*
* @param string $property_name property name
* @param mixed $value value
+ *
+ * @throws SmartyException
*/
public function __set($property_name, $value)
{
@@ -600,12 +649,14 @@ class Smarty_Internal_Template extends Smarty_Internal_TemplateBase {
case 'cached':
case 'compiler':
$this->$property_name = $value;
+
return;
// FIXME: routing of template -> smarty attributes
default:
if (property_exists($this->smarty, $property_name)) {
$this->smarty->$property_name = $value;
+
return;
}
}
@@ -617,6 +668,8 @@ class Smarty_Internal_Template extends Smarty_Internal_TemplateBase {
* get Smarty property in template context
*
* @param string $property_name property name
+ *
+ * @throws SmartyException
*/
public function __get($property_name)
{
@@ -640,10 +693,12 @@ class Smarty_Internal_Template extends Smarty_Internal_TemplateBase {
}
$this->smarty->template_objects[$_templateId] = $this;
}
+
return $this->source;
case 'compiled':
$this->compiled = $this->source->getCompiled($this);
+
return $this->compiled;
case 'cached':
@@ -651,11 +706,13 @@ class Smarty_Internal_Template extends Smarty_Internal_TemplateBase {
include SMARTY_SYSPLUGINS_DIR . 'smarty_cacheresource.php';
}
$this->cached = new Smarty_Template_Cached($this);
+
return $this->cached;
case 'compiler':
$this->smarty->loadPlugin($this->source->compiler_class);
$this->compiler = new $this->source->compiler_class($this->source->template_lexer_class, $this->source->template_parser_class, $this->smarty);
+
return $this->compiler;
// FIXME: routing of template -> smarty attributes
@@ -669,8 +726,8 @@ class Smarty_Internal_Template extends Smarty_Internal_TemplateBase {
}
/**
- * Template data object destrutor
- *
+ * Template data object destructor
+
*/
public function __destruct()
{
@@ -678,7 +735,4 @@ class Smarty_Internal_Template extends Smarty_Internal_TemplateBase {
$this->cached->handler->releaseLock($this->smarty, $this->cached);
}
}
-
}
-
-?> \ No newline at end of file
diff --git a/library/Smarty/libs/sysplugins/smarty_internal_templatebase.php b/library/Smarty/libs/sysplugins/smarty_internal_templatebase.php
index abd48b799..f8f1c9e1e 100644
--- a/library/Smarty/libs/sysplugins/smarty_internal_templatebase.php
+++ b/library/Smarty/libs/sysplugins/smarty_internal_templatebase.php
@@ -1,32 +1,34 @@
<?php
/**
* Smarty Internal Plugin Smarty Template Base
+ * This file contains the basic shared methods for template handling
*
- * This file contains the basic shared methodes for template handling
- *
- * @package Smarty
+ * @package Smarty
* @subpackage Template
- * @author Uwe Tews
+ * @author Uwe Tews
*/
/**
- * Class with shared template methodes
+ * Class with shared template methods
*
- * @package Smarty
+ * @package Smarty
* @subpackage Template
*/
-abstract class Smarty_Internal_TemplateBase extends Smarty_Internal_Data {
-
+abstract class Smarty_Internal_TemplateBase extends Smarty_Internal_Data
+{
/**
* fetches a rendered Smarty template
*
- * @param string $template the resource handle of the template file or template object
- * @param mixed $cache_id cache id to be used with this template
- * @param mixed $compile_id compile id to be used with this template
- * @param object $parent next higher level of Smarty variables
- * @param bool $display true: display, false: fetch
- * @param bool $merge_tpl_vars if true parent template variables merged in to local scope
- * @param bool $no_output_filter if true do not run output filter
+ * @param string $template the resource handle of the template file or template object
+ * @param mixed $cache_id cache id to be used with this template
+ * @param mixed $compile_id compile id to be used with this template
+ * @param object $parent next higher level of Smarty variables
+ * @param bool $display true: display, false: fetch
+ * @param bool $merge_tpl_vars if true parent template variables merged in to local scope
+ * @param bool $no_output_filter if true do not run output filter
+ *
+ * @throws Exception
+ * @throws SmartyException
* @return string rendered template output
*/
public function fetch($template = null, $cache_id = null, $compile_id = null, $parent = null, $display = false, $merge_tpl_vars = true, $no_output_filter = false)
@@ -34,7 +36,7 @@ abstract class Smarty_Internal_TemplateBase extends Smarty_Internal_Data {
if ($template === null && $this instanceof $this->template_class) {
$template = $this;
}
- if (!empty($cache_id) && is_object($cache_id)) {
+ if ($cache_id !== null && is_object($cache_id)) {
$parent = $cache_id;
$cache_id = null;
}
@@ -43,8 +45,8 @@ abstract class Smarty_Internal_TemplateBase extends Smarty_Internal_Data {
}
// create template object if necessary
$_template = ($template instanceof $this->template_class)
- ? $template
- : $this->smarty->createTemplate($template, $cache_id, $compile_id, $parent, false);
+ ? $template
+ : $this->smarty->createTemplate($template, $cache_id, $compile_id, $parent, false);
// if called by Smarty object make sure we use current caching status
if ($this instanceof Smarty) {
$_template->caching = $this->caching;
@@ -130,29 +132,32 @@ abstract class Smarty_Internal_TemplateBase extends Smarty_Internal_Data {
if (!($_template->caching == Smarty::CACHING_LIFETIME_CURRENT || $_template->caching == Smarty::CACHING_LIFETIME_SAVED) || !$_template->cached->valid) {
// render template (not loaded and not in cache)
if (!$_template->source->uncompiled) {
+ /** @var Smarty_Internal_Template $_smarty_tpl
+ * used in evaluated code
+ */
$_smarty_tpl = $_template;
if ($_template->source->recompiled) {
- if ($this->smarty->debugging) {
- Smarty_Internal_Debug::start_compile($_template);
- }
$code = $_template->compiler->compileTemplate($_template);
if ($this->smarty->debugging) {
- Smarty_Internal_Debug::end_compile($_template);
- }
- if ($this->smarty->debugging) {
Smarty_Internal_Debug::start_render($_template);
}
try {
ob_start();
eval("?>" . $code);
unset($code);
- } catch (Exception $e) {
+ }
+ catch (Exception $e) {
ob_get_clean();
throw $e;
}
} else {
if (!$_template->compiled->exists || ($_template->smarty->force_compile && !$_template->compiled->isCompiled)) {
$_template->compileTemplateSource();
+ $code = file_get_contents($_template->compiled->filepath);
+ eval("?>" . $code);
+ unset($code);
+ $_template->compiled->loaded = true;
+ $_template->compiled->isCompiled = true;
}
if ($this->smarty->debugging) {
Smarty_Internal_Debug::start_render($_template);
@@ -162,7 +167,10 @@ abstract class Smarty_Internal_TemplateBase extends Smarty_Internal_Data {
if ($_template->mustCompile) {
// recompile and load again
$_template->compileTemplateSource();
- include($_template->compiled->filepath);
+ $code = file_get_contents($_template->compiled->filepath);
+ eval("?>" . $code);
+ unset($code);
+ $_template->compiled->isCompiled = true;
}
$_template->compiled->loaded = true;
} else {
@@ -173,7 +181,7 @@ abstract class Smarty_Internal_TemplateBase extends Smarty_Internal_Data {
if (empty($_template->properties['unifunc']) || !is_callable($_template->properties['unifunc'])) {
throw new SmartyException("Invalid compiled template for '{$_template->template_resource}'");
}
- array_unshift($_template->_capture_stack,array());
+ array_unshift($_template->_capture_stack, array());
//
// render compiled template
//
@@ -183,7 +191,8 @@ abstract class Smarty_Internal_TemplateBase extends Smarty_Internal_Data {
$_template->capture_error();
}
array_shift($_template->_capture_stack);
- } catch (Exception $e) {
+ }
+ catch (Exception $e) {
ob_get_clean();
throw $e;
}
@@ -196,7 +205,8 @@ abstract class Smarty_Internal_TemplateBase extends Smarty_Internal_Data {
try {
ob_start();
$_template->source->renderUncompiled($_template);
- } catch (Exception $e) {
+ }
+ catch (Exception $e) {
ob_get_clean();
throw $e;
}
@@ -235,7 +245,7 @@ abstract class Smarty_Internal_TemplateBase extends Smarty_Internal_Data {
// loop over items, stitch back together
foreach ($cache_split as $curr_idx => $curr_split) {
// escape PHP tags in template content
- $output .= preg_replace('/(<%|%>|<\?php|<\?|\?>)/', '<?php echo \'$1\'; ?>', $curr_split);
+ $output .= preg_replace('/(<%|%>|<\?php|<\?|\?>|<script\s+language\s*=\s*[\"\']?\s*php\s*[\"\']?\s*>)/', "<?php echo '\$1'; ?>\n", $curr_split);
if (isset($cache_parts[0][$curr_idx])) {
$_template->properties['has_nocache_code'] = true;
// remove nocache tags from cache output
@@ -246,12 +256,16 @@ abstract class Smarty_Internal_TemplateBase extends Smarty_Internal_Data {
$output = Smarty_Internal_Filter_Handler::runFilter('output', $output, $_template);
}
// rendering (must be done before writing cache file because of {function} nocache handling)
+ /** @var Smarty_Internal_Template $_smarty_tpl
+ * used in evaluated code
+ */
$_smarty_tpl = $_template;
try {
ob_start();
eval("?>" . $output);
$_output = ob_get_clean();
- } catch (Exception $e) {
+ }
+ catch (Exception $e) {
ob_get_clean();
throw $e;
}
@@ -274,7 +288,7 @@ abstract class Smarty_Internal_TemplateBase extends Smarty_Internal_Data {
}
try {
ob_start();
- array_unshift($_template->_capture_stack,array());
+ array_unshift($_template->_capture_stack, array());
//
// render cached template
//
@@ -285,7 +299,8 @@ abstract class Smarty_Internal_TemplateBase extends Smarty_Internal_Data {
}
array_shift($_template->_capture_stack);
$_output = ob_get_clean();
- } catch (Exception $e) {
+ }
+ catch (Exception $e) {
ob_get_clean();
throw $e;
}
@@ -306,33 +321,37 @@ abstract class Smarty_Internal_TemplateBase extends Smarty_Internal_Data {
$_last_modified_date = @substr($_SERVER['HTTP_IF_MODIFIED_SINCE'], 0, strpos($_SERVER['HTTP_IF_MODIFIED_SINCE'], 'GMT') + 3);
if ($_isCached && $_template->cached->timestamp <= strtotime($_last_modified_date)) {
switch (PHP_SAPI) {
- case 'cgi': // php-cgi < 5.3
- case 'cgi-fcgi': // php-cgi >= 5.3
- case 'fpm-fcgi': // php-fpm >= 5.3.3
- header('Status: 304 Not Modified');
- break;
+ case 'cgi': // php-cgi < 5.3
+ case 'cgi-fcgi': // php-cgi >= 5.3
+ case 'fpm-fcgi': // php-fpm >= 5.3.3
+ header('Status: 304 Not Modified');
+ break;
case 'cli':
- if (/* ^phpunit */!empty($_SERVER['SMARTY_PHPUNIT_DISABLE_HEADERS'])/* phpunit$ */) {
- $_SERVER['SMARTY_PHPUNIT_HEADERS'][] = '304 Not Modified';
- }
- break;
+ if ( /* ^phpunit */
+ !empty($_SERVER['SMARTY_PHPUNIT_DISABLE_HEADERS']) /* phpunit$ */
+ ) {
+ $_SERVER['SMARTY_PHPUNIT_HEADERS'][] = '304 Not Modified';
+ }
+ break;
default:
- header($_SERVER['SERVER_PROTOCOL'].' 304 Not Modified');
- break;
+ header($_SERVER['SERVER_PROTOCOL'] . ' 304 Not Modified');
+ break;
}
} else {
switch (PHP_SAPI) {
case 'cli':
- if (/* ^phpunit */!empty($_SERVER['SMARTY_PHPUNIT_DISABLE_HEADERS'])/* phpunit$ */) {
- $_SERVER['SMARTY_PHPUNIT_HEADERS'][] = 'Last-Modified: ' . gmdate('D, d M Y H:i:s', $_template->cached->timestamp) . ' GMT';
- }
- break;
+ if ( /* ^phpunit */
+ !empty($_SERVER['SMARTY_PHPUNIT_DISABLE_HEADERS']) /* phpunit$ */
+ ) {
+ $_SERVER['SMARTY_PHPUNIT_HEADERS'][] = 'Last-Modified: ' . gmdate('D, d M Y H:i:s', $_template->cached->timestamp) . ' GMT';
+ }
+ break;
default:
- header('Last-Modified: ' . gmdate('D, d M Y H:i:s', $_template->cached->timestamp) . ' GMT');
- break;
+ header('Last-Modified: ' . gmdate('D, d M Y H:i:s', $_template->cached->timestamp) . ' GMT');
+ break;
}
echo $_output;
}
@@ -341,19 +360,20 @@ abstract class Smarty_Internal_TemplateBase extends Smarty_Internal_Data {
}
// debug output
if ($this->smarty->debugging) {
- Smarty_Internal_Debug::display_debug($this);
+ Smarty_Internal_Debug::display_debug($_template);
}
if ($merge_tpl_vars) {
// restore local variables
$_template->tpl_vars = $save_tpl_vars;
- $_template->config_vars = $save_config_vars;
+ $_template->config_vars = $save_config_vars;
}
+
return;
} else {
if ($merge_tpl_vars) {
// restore local variables
$_template->tpl_vars = $save_tpl_vars;
- $_template->config_vars = $save_config_vars;
+ $_template->config_vars = $save_config_vars;
}
// return fetched content
return $_output;
@@ -377,11 +397,12 @@ abstract class Smarty_Internal_TemplateBase extends Smarty_Internal_Data {
/**
* test if cache is valid
*
- * @param string|object $template the resource handle of the template file or template object
- * @param mixed $cache_id cache id to be used with this template
- * @param mixed $compile_id compile id to be used with this template
- * @param object $parent next higher level of Smarty variables
- * @return boolean cache status
+ * @param string|object $template the resource handle of the template file or template object
+ * @param mixed $cache_id cache id to be used with this template
+ * @param mixed $compile_id compile id to be used with this template
+ * @param object $parent next higher level of Smarty variables
+ *
+ * @return boolean cache status
*/
public function isCached($template = null, $cache_id = null, $compile_id = null, $parent = null)
{
@@ -402,6 +423,7 @@ abstract class Smarty_Internal_TemplateBase extends Smarty_Internal_Data {
* creates a data object
*
* @param object $parent next higher level of Smarty variables
+ *
* @returns Smarty_Data data object
*/
public function createData($parent = null)
@@ -412,13 +434,14 @@ abstract class Smarty_Internal_TemplateBase extends Smarty_Internal_Data {
/**
* Registers plugin to be used in templates
*
- * @param string $type plugin type
- * @param string $tag name of template tag
- * @param callback $callback PHP callback to register
- * @param boolean $cacheable if true (default) this fuction is cachable
- * @param array $cache_attr caching attributes if any
+ * @param string $type plugin type
+ * @param string $tag name of template tag
+ * @param callback $callback PHP callback to register
+ * @param boolean $cacheable if true (default) this fuction is cachable
+ * @param array $cache_attr caching attributes if any
+ *
* @return Smarty_Internal_Templatebase current Smarty_Internal_Templatebase (or Smarty or Smarty_Internal_Template) instance for chaining
- * @throws SmartyException when the plugin tag is invalid
+ * @throws SmartyException when the plugin tag is invalid
*/
public function registerPlugin($type, $tag, $callback, $cacheable = true, $cache_attr = null)
{
@@ -436,8 +459,9 @@ abstract class Smarty_Internal_TemplateBase extends Smarty_Internal_Data {
/**
* Unregister Plugin
*
- * @param string $type of plugin
- * @param string $tag name of plugin
+ * @param string $type of plugin
+ * @param string $tag name of plugin
+ *
* @return Smarty_Internal_Templatebase current Smarty_Internal_Templatebase (or Smarty or Smarty_Internal_Template) instance for chaining
*/
public function unregisterPlugin($type, $tag)
@@ -452,20 +476,23 @@ abstract class Smarty_Internal_TemplateBase extends Smarty_Internal_Data {
/**
* Registers a resource to fetch a template
*
- * @param string $type name of resource type
- * @param Smarty_Resource|array $callback or instance of Smarty_Resource, or array of callbacks to handle resource (deprecated)
+ * @param string $type name of resource type
+ * @param Smarty_Resource|array $callback or instance of Smarty_Resource, or array of callbacks to handle resource (deprecated)
+ *
* @return Smarty_Internal_Templatebase current Smarty_Internal_Templatebase (or Smarty or Smarty_Internal_Template) instance for chaining
*/
public function registerResource($type, $callback)
{
$this->smarty->registered_resources[$type] = $callback instanceof Smarty_Resource ? $callback : array($callback, false);
+
return $this;
}
/**
* Unregisters a resource
*
- * @param string $type name of resource type
+ * @param string $type name of resource type
+ *
* @return Smarty_Internal_Templatebase current Smarty_Internal_Templatebase (or Smarty or Smarty_Internal_Template) instance for chaining
*/
public function unregisterResource($type)
@@ -480,20 +507,23 @@ abstract class Smarty_Internal_TemplateBase extends Smarty_Internal_Data {
/**
* Registers a cache resource to cache a template's output
*
- * @param string $type name of cache resource type
- * @param Smarty_CacheResource $callback instance of Smarty_CacheResource to handle output caching
+ * @param string $type name of cache resource type
+ * @param Smarty_CacheResource $callback instance of Smarty_CacheResource to handle output caching
+ *
* @return Smarty_Internal_Templatebase current Smarty_Internal_Templatebase (or Smarty or Smarty_Internal_Template) instance for chaining
*/
public function registerCacheResource($type, Smarty_CacheResource $callback)
{
$this->smarty->registered_cache_resources[$type] = $callback;
+
return $this;
}
/**
* Unregisters a cache resource
*
- * @param string $type name of cache resource type
+ * @param string $type name of cache resource type
+ *
* @return Smarty_Internal_Templatebase current Smarty_Internal_Templatebase (or Smarty or Smarty_Internal_Template) instance for chaining
*/
public function unregisterCacheResource($type)
@@ -508,26 +538,26 @@ abstract class Smarty_Internal_TemplateBase extends Smarty_Internal_Data {
/**
* Registers object to be used in templates
*
- * @param string $object name of template object
- * @param object $object_impl the referenced PHP object to register
- * @param array $allowed list of allowed methods (empty = all)
- * @param boolean $smarty_args smarty argument format, else traditional
- * @param array $block_methods list of block-methods
- * @param array $block_functs list of methods that are block format
+ * @param $object_name
+ * @param object $object_impl the referenced PHP object to register
+ * @param array $allowed list of allowed methods (empty = all)
+ * @param boolean $smarty_args smarty argument format, else traditional
+ * @param array $block_methods list of block-methods
+ *
+ * @throws SmartyException
* @return Smarty_Internal_Templatebase current Smarty_Internal_Templatebase (or Smarty or Smarty_Internal_Template) instance for chaining
- * @throws SmartyException if any of the methods in $allowed or $block_methods are invalid
*/
public function registerObject($object_name, $object_impl, $allowed = array(), $smarty_args = true, $block_methods = array())
{
- // test if allowed methodes callable
+ // test if allowed methods callable
if (!empty($allowed)) {
foreach ((array) $allowed as $method) {
- if (!is_callable(array($object_impl, $method))) {
- throw new SmartyException("Undefined method '$method' in registered object");
+ if (!is_callable(array($object_impl, $method)) && !property_exists($object_impl, $method)) {
+ throw new SmartyException("Undefined method or property '$method' in registered object");
}
}
}
- // test if block methodes callable
+ // test if block methods callable
if (!empty($block_methods)) {
foreach ((array) $block_methods as $method) {
if (!is_callable(array($object_impl, $method))) {
@@ -537,14 +567,16 @@ abstract class Smarty_Internal_TemplateBase extends Smarty_Internal_Data {
}
// register the object
$this->smarty->registered_objects[$object_name] =
- array($object_impl, (array) $allowed, (boolean) $smarty_args, (array) $block_methods);
+ array($object_impl, (array) $allowed, (boolean) $smarty_args, (array) $block_methods);
+
return $this;
}
/**
* return a reference to a registered object
*
- * @param string $name object name
+ * @param string $name object name
+ *
* @return object
* @throws SmartyException if no such object is found
*/
@@ -556,13 +588,15 @@ abstract class Smarty_Internal_TemplateBase extends Smarty_Internal_Data {
if (!is_object($this->smarty->registered_objects[$name][0])) {
throw new SmartyException("registered '$name' is not an object");
}
+
return $this->smarty->registered_objects[$name][0];
}
/**
* unregister an object
*
- * @param string $name object name
+ * @param string $name object name
+ *
* @return Smarty_Internal_Templatebase current Smarty_Internal_Templatebase (or Smarty or Smarty_Internal_Template) instance for chaining
*/
public function unregisterObject($name)
@@ -577,10 +611,11 @@ abstract class Smarty_Internal_TemplateBase extends Smarty_Internal_Data {
/**
* Registers static classes to be used in templates
*
- * @param string $class name of template class
- * @param string $class_impl the referenced PHP class to register
+ * @param $class_name
+ * @param string $class_impl the referenced PHP class to register
+ *
+ * @throws SmartyException
* @return Smarty_Internal_Templatebase current Smarty_Internal_Templatebase (or Smarty or Smarty_Internal_Template) instance for chaining
- * @throws SmartyException if $class_impl does not refer to an existing class
*/
public function registerClass($class_name, $class_impl)
{
@@ -590,15 +625,17 @@ abstract class Smarty_Internal_TemplateBase extends Smarty_Internal_Data {
}
// register the class
$this->smarty->registered_classes[$class_name] = $class_impl;
+
return $this;
}
/**
* Registers a default plugin handler
*
- * @param callable $callback class/method name
+ * @param callable $callback class/method name
+ *
* @return Smarty_Internal_Templatebase current Smarty_Internal_Templatebase (or Smarty or Smarty_Internal_Template) instance for chaining
- * @throws SmartyException if $callback is not callable
+ * @throws SmartyException if $callback is not callable
*/
public function registerDefaultPluginHandler($callback)
{
@@ -614,9 +651,10 @@ abstract class Smarty_Internal_TemplateBase extends Smarty_Internal_Data {
/**
* Registers a default template handler
*
- * @param callable $callback class/method name
+ * @param callable $callback class/method name
+ *
* @return Smarty_Internal_Templatebase current Smarty_Internal_Templatebase (or Smarty or Smarty_Internal_Template) instance for chaining
- * @throws SmartyException if $callback is not callable
+ * @throws SmartyException if $callback is not callable
*/
public function registerDefaultTemplateHandler($callback)
{
@@ -632,9 +670,10 @@ abstract class Smarty_Internal_TemplateBase extends Smarty_Internal_Data {
/**
* Registers a default template handler
*
- * @param callable $callback class/method name
+ * @param callable $callback class/method name
+ *
* @return Smarty_Internal_Templatebase current Smarty_Internal_Templatebase (or Smarty or Smarty_Internal_Template) instance for chaining
- * @throws SmartyException if $callback is not callable
+ * @throws SmartyException if $callback is not callable
*/
public function registerDefaultConfigHandler($callback)
{
@@ -650,21 +689,24 @@ abstract class Smarty_Internal_TemplateBase extends Smarty_Internal_Data {
/**
* Registers a filter function
*
- * @param string $type filter type
- * @param callback $callback
+ * @param string $type filter type
+ * @param callback $callback
+ *
* @return Smarty_Internal_Templatebase current Smarty_Internal_Templatebase (or Smarty or Smarty_Internal_Template) instance for chaining
*/
public function registerFilter($type, $callback)
{
$this->smarty->registered_filters[$type][$this->_get_filter_name($callback)] = $callback;
+
return $this;
}
/**
* Unregisters a filter function
*
- * @param string $type filter type
- * @param callback $callback
+ * @param string $type filter type
+ * @param callback $callback
+ *
* @return Smarty_Internal_Templatebase current Smarty_Internal_Templatebase (or Smarty or Smarty_Internal_Template) instance for chaining
*/
public function unregisterFilter($type, $callback)
@@ -680,14 +722,16 @@ abstract class Smarty_Internal_TemplateBase extends Smarty_Internal_Data {
/**
* Return internal filter name
*
- * @param callback $function_name
- * @return string internal filter name
+ * @param callback $function_name
+ *
+ * @return string internal filter name
*/
public function _get_filter_name($function_name)
{
if (is_array($function_name)) {
$_class_name = (is_object($function_name[0]) ?
- get_class($function_name[0]) : $function_name[0]);
+ get_class($function_name[0]) : $function_name[0]);
+
return $_class_name . '_' . $function_name[1];
} else {
return $function_name;
@@ -697,8 +741,9 @@ abstract class Smarty_Internal_TemplateBase extends Smarty_Internal_Data {
/**
* load a filter of specified type and name
*
- * @param string $type filter type
- * @param string $name filter name
+ * @param string $type filter type
+ * @param string $name filter name
+ *
* @throws SmartyException if filter could not be loaded
*/
public function loadFilter($type, $name)
@@ -711,6 +756,7 @@ abstract class Smarty_Internal_TemplateBase extends Smarty_Internal_Data {
}
if (is_callable($_plugin)) {
$this->smarty->registered_filters[$type][$_filter_name] = $_plugin;
+
return true;
}
}
@@ -720,8 +766,9 @@ abstract class Smarty_Internal_TemplateBase extends Smarty_Internal_Data {
/**
* unload a filter of specified type and name
*
- * @param string $type filter type
- * @param string $name filter name
+ * @param string $type filter type
+ * @param string $name filter name
+ *
* @return Smarty_Internal_Templatebase current Smarty_Internal_Templatebase (or Smarty or Smarty_Internal_Template) instance for chaining
*/
public function unloadFilter($type, $name)
@@ -737,10 +784,12 @@ abstract class Smarty_Internal_TemplateBase extends Smarty_Internal_Data {
/**
* preg_replace callback to convert camelcase getter/setter to underscore property names
*
- * @param string $match match string
+ * @param string $match match string
+ *
* @return string replacemant
*/
- private function replaceCamelcase($match) {
+ private function replaceCamelcase($match)
+ {
return "_" . strtolower($match[1]);
}
@@ -749,6 +798,8 @@ abstract class Smarty_Internal_TemplateBase extends Smarty_Internal_Data {
*
* @param string $name unknown method-name
* @param array $args argument array
+ *
+ * @throws SmartyException
*/
public function __call($name, $args)
{
@@ -770,7 +821,7 @@ abstract class Smarty_Internal_TemplateBase extends Smarty_Internal_Data {
// lcfirst() not available < PHP 5.3.0, so improvise
$property_name = strtolower(substr($name, 3, 1)) . substr($name, 4);
// convert camel case to underscored name
- $property_name = preg_replace_callback('/([A-Z])/', array($this,'replaceCamelcase'), $property_name);
+ $property_name = preg_replace_callback('/([A-Z])/', array($this, 'replaceCamelcase'), $property_name);
$_resolved_property_name[$name] = $property_name;
}
if (isset($_resolved_property_source[$property_name])) {
@@ -779,25 +830,26 @@ abstract class Smarty_Internal_TemplateBase extends Smarty_Internal_Data {
$_is_this = null;
if (property_exists($this, $property_name)) {
$_is_this = true;
- } else if (property_exists($this->smarty, $property_name)) {
+ } elseif (property_exists($this->smarty, $property_name)) {
$_is_this = false;
}
$_resolved_property_source[$property_name] = $_is_this;
}
if ($_is_this) {
- if ($first3 == 'get')
- return $this->$property_name;
- else
- return $this->$property_name = $args[0];
- } else if ($_is_this === false) {
- if ($first3 == 'get')
- return $this->smarty->$property_name;
- else
- return $this->smarty->$property_name = $args[0];
+ if ($first3 == 'get') {
+ return $this->$property_name;
+ } else {
+ return $this->$property_name = $args[0];
+ }
+ } elseif ($_is_this === false) {
+ if ($first3 == 'get') {
+ return $this->smarty->$property_name;
+ } else {
+ return $this->smarty->$property_name = $args[0];
+ }
} else {
throw new SmartyException("property '$property_name' does not exist.");
- return false;
- }
+ }
}
if ($name == 'Smarty') {
throw new SmartyException("PHP5 requires you to call __construct() instead of Smarty()");
@@ -805,7 +857,4 @@ abstract class Smarty_Internal_TemplateBase extends Smarty_Internal_Data {
// must be unknown
throw new SmartyException("Call of unknown method '$name'.");
}
-
}
-
-?> \ No newline at end of file
diff --git a/library/Smarty/libs/sysplugins/smarty_internal_templatecompilerbase.php b/library/Smarty/libs/sysplugins/smarty_internal_templatecompilerbase.php
index 85906239d..d00bfb8f4 100644
--- a/library/Smarty/libs/sysplugins/smarty_internal_templatecompilerbase.php
+++ b/library/Smarty/libs/sysplugins/smarty_internal_templatecompilerbase.php
@@ -1,661 +1,823 @@
-<?php
-
-/**
- * Smarty Internal Plugin Smarty Template Compiler Base
- *
- * This file contains the basic classes and methodes for compiling Smarty templates with lexer/parser
- *
- * @package Smarty
- * @subpackage Compiler
- * @author Uwe Tews
- */
-
-/**
- * Main abstract compiler class
- *
- * @package Smarty
- * @subpackage Compiler
- */
-abstract class Smarty_Internal_TemplateCompilerBase {
-
- /**
- * hash for nocache sections
- *
- * @var mixed
- */
- private $nocache_hash = null;
-
- /**
- * suppress generation of nocache code
- *
- * @var bool
- */
- public $suppressNocacheProcessing = false;
-
- /**
- * suppress generation of merged template code
- *
- * @var bool
- */
- public $suppressMergedTemplates = false;
-
- /**
- * compile tag objects
- *
- * @var array
- */
- public static $_tag_objects = array();
-
- /**
- * tag stack
- *
- * @var array
- */
- public $_tag_stack = array();
-
- /**
- * current template
- *
- * @var Smarty_Internal_Template
- */
- public $template = null;
-
- /**
- * merged templates
- *
- * @var array
- */
- public $merged_templates = array();
-
- /**
- * flag when compiling {block}
- *
- * @var bool
- */
- public $inheritance = false;
-
- /**
- * plugins loaded by default plugin handler
- *
- * @var array
- */
- public $default_handler_plugins = array();
-
- /**
- * saved preprocessed modifier list
- *
- * @var mixed
- */
- public $default_modifier_list = null;
-
- /**
- * force compilation of complete template as nocache
- * @var boolean
- */
- public $forceNocache = false;
-
- /**
- * suppress Smarty header code in compiled template
- * @var bool
- */
- public $suppressHeader = false;
-
- /**
- * suppress template property header code in compiled template
- * @var bool
- */
- public $suppressTemplatePropertyHeader = false;
-
- /**
- * flag if compiled template file shall we written
- * @var bool
- */
- public $write_compiled_code = true;
-
- /**
- * flag if currently a template function is compiled
- * @var bool
- */
- public $compiles_template_function = false;
-
- /**
- * called subfuntions from template function
- * @var array
- */
- public $called_functions = array();
-
- /**
- * flags for used modifier plugins
- * @var array
- */
- public $modifier_plugins = array();
-
- /**
- * type of already compiled modifier
- * @var array
- */
- public $known_modifier_type = array();
-
- /**
- * Initialize compiler
- */
- public function __construct() {
- $this->nocache_hash = str_replace('.', '-', uniqid(rand(), true));
- }
-
- /**
- * Method to compile a Smarty template
- *
- * @param Smarty_Internal_Template $template template object to compile
- * @return bool true if compiling succeeded, false if it failed
- */
- public function compileTemplate(Smarty_Internal_Template $template) {
- if (empty($template->properties['nocache_hash'])) {
- $template->properties['nocache_hash'] = $this->nocache_hash;
- } else {
- $this->nocache_hash = $template->properties['nocache_hash'];
- }
- // flag for nochache sections
- $this->nocache = false;
- $this->tag_nocache = false;
- // save template object in compiler class
- $this->template = $template;
- // reset has noche code flag
- $this->template->has_nocache_code = false;
- $this->smarty->_current_file = $saved_filepath = $this->template->source->filepath;
- // template header code
- $template_header = '';
- if (!$this->suppressHeader) {
- $template_header .= "<?php /* Smarty version " . Smarty::SMARTY_VERSION . ", created on " . strftime("%Y-%m-%d %H:%M:%S") . "\n";
- $template_header .= " compiled from \"" . $this->template->source->filepath . "\" */ ?>\n";
- }
-
- do {
- // flag for aborting current and start recompile
- $this->abort_and_recompile = false;
- // get template source
- $_content = $template->source->content;
- // run prefilter if required
- if (isset($this->smarty->autoload_filters['pre']) || isset($this->smarty->registered_filters['pre'])) {
- $_content = Smarty_Internal_Filter_Handler::runFilter('pre', $_content, $template);
- }
- // on empty template just return header
- if ($_content == '') {
- if ($this->suppressTemplatePropertyHeader) {
- $code = '';
- } else {
- $code = $template_header . $template->createTemplateCodeFrame();
- }
- return $code;
- }
- // call compiler
- $_compiled_code = $this->doCompile($_content);
- } while ($this->abort_and_recompile);
- $this->template->source->filepath = $saved_filepath;
- // free memory
- unset($this->parser->root_buffer, $this->parser->current_buffer, $this->parser, $this->lex, $this->template);
- self::$_tag_objects = array();
- // return compiled code to template object
- $merged_code = '';
- if (!$this->suppressMergedTemplates && !empty($this->merged_templates)) {
- foreach ($this->merged_templates as $code) {
- $merged_code .= $code;
- }
- // run postfilter if required on merged code
- if (isset($this->smarty->autoload_filters['post']) || isset($this->smarty->registered_filters['post'])) {
- $merged_code = Smarty_Internal_Filter_Handler::runFilter('post', $merged_code, $template);
- }
- }
- // run postfilter if required on compiled template code
- if (isset($this->smarty->autoload_filters['post']) || isset($this->smarty->registered_filters['post'])) {
- $_compiled_code = Smarty_Internal_Filter_Handler::runFilter('post', $_compiled_code, $template);
- }
- if ($this->suppressTemplatePropertyHeader) {
- $code = $_compiled_code . $merged_code;
- } else {
- $code = $template_header . $template->createTemplateCodeFrame($_compiled_code) . $merged_code;
- }
- return $code;
- }
-
- /**
- * Compile Tag
- *
- * This is a call back from the lexer/parser
- * It executes the required compile plugin for the Smarty tag
- *
- * @param string $tag tag name
- * @param array $args array with tag attributes
- * @param array $parameter array with compilation parameter
- * @return string compiled code
- */
- public function compileTag($tag, $args, $parameter = array()) {
- // $args contains the attributes parsed and compiled by the lexer/parser
- // assume that tag does compile into code, but creates no HTML output
- $this->has_code = true;
- $this->has_output = false;
- // log tag/attributes
- if (isset($this->smarty->get_used_tags) && $this->smarty->get_used_tags) {
- $this->template->used_tags[] = array($tag, $args);
- }
- // check nocache option flag
- if (in_array("'nocache'", $args) || in_array(array('nocache' => 'true'), $args)
- || in_array(array('nocache' => '"true"'), $args) || in_array(array('nocache' => "'true'"), $args)) {
- $this->tag_nocache = true;
- }
- // compile the smarty tag (required compile classes to compile the tag are autoloaded)
- if (($_output = $this->callTagCompiler($tag, $args, $parameter)) === false) {
- if (isset($this->smarty->template_functions[$tag])) {
- // template defined by {template} tag
- $args['_attr']['name'] = "'" . $tag . "'";
- $_output = $this->callTagCompiler('call', $args, $parameter);
- }
- }
- if ($_output !== false) {
- if ($_output !== true) {
- // did we get compiled code
- if ($this->has_code) {
- // Does it create output?
- if ($this->has_output) {
- $_output .= "\n";
- }
- // return compiled code
- return $_output;
- }
- }
- // tag did not produce compiled code
- return '';
- } else {
- // map_named attributes
- if (isset($args['_attr'])) {
- foreach ($args['_attr'] as $key => $attribute) {
- if (is_array($attribute)) {
- $args = array_merge($args, $attribute);
- }
- }
- }
- // not an internal compiler tag
- if (strlen($tag) < 6 || substr($tag, -5) != 'close') {
- // check if tag is a registered object
- if (isset($this->smarty->registered_objects[$tag]) && isset($parameter['object_methode'])) {
- $methode = $parameter['object_methode'];
- if (!in_array($methode, $this->smarty->registered_objects[$tag][3]) &&
- (empty($this->smarty->registered_objects[$tag][1]) || in_array($methode, $this->smarty->registered_objects[$tag][1]))) {
- return $this->callTagCompiler('private_object_function', $args, $parameter, $tag, $methode);
- } elseif (in_array($methode, $this->smarty->registered_objects[$tag][3])) {
- return $this->callTagCompiler('private_object_block_function', $args, $parameter, $tag, $methode);
- } else {
- return $this->trigger_template_error('unallowed methode "' . $methode . '" in registered object "' . $tag . '"', $this->lex->taglineno);
- }
- }
- // check if tag is registered
- foreach (array(Smarty::PLUGIN_COMPILER, Smarty::PLUGIN_FUNCTION, Smarty::PLUGIN_BLOCK) as $plugin_type) {
- if (isset($this->smarty->registered_plugins[$plugin_type][$tag])) {
- // if compiler function plugin call it now
- if ($plugin_type == Smarty::PLUGIN_COMPILER) {
- $new_args = array();
- foreach ($args as $key => $mixed) {
- if (is_array($mixed)) {
- $new_args = array_merge($new_args, $mixed);
- } else {
- $new_args[$key] = $mixed;
- }
- }
- if (!$this->smarty->registered_plugins[$plugin_type][$tag][1]) {
- $this->tag_nocache = true;
- }
- $function = $this->smarty->registered_plugins[$plugin_type][$tag][0];
- if (!is_array($function)) {
- return $function($new_args, $this);
- } else if (is_object($function[0])) {
- return $this->smarty->registered_plugins[$plugin_type][$tag][0][0]->$function[1]($new_args, $this);
- } else {
- return call_user_func_array($function, array($new_args, $this));
- }
- }
- // compile registered function or block function
- if ($plugin_type == Smarty::PLUGIN_FUNCTION || $plugin_type == Smarty::PLUGIN_BLOCK) {
- return $this->callTagCompiler('private_registered_' . $plugin_type, $args, $parameter, $tag);
- }
- }
- }
- // check plugins from plugins folder
- foreach ($this->smarty->plugin_search_order as $plugin_type) {
- if ($plugin_type == Smarty::PLUGIN_BLOCK && $this->smarty->loadPlugin('smarty_compiler_' . $tag) && (!isset($this->smarty->security_policy) || $this->smarty->security_policy->isTrustedTag($tag, $this))) {
- $plugin = 'smarty_compiler_' . $tag;
- if (is_callable($plugin)) {
- // convert arguments format for old compiler plugins
- $new_args = array();
- foreach ($args as $key => $mixed) {
- if (is_array($mixed)) {
- $new_args = array_merge($new_args, $mixed);
- } else {
- $new_args[$key] = $mixed;
- }
- }
- return $plugin($new_args, $this->smarty);
- }
- if (class_exists($plugin, false)) {
- $plugin_object = new $plugin;
- if (method_exists($plugin_object, 'compile')) {
- return $plugin_object->compile($args, $this);
- }
- }
- throw new SmartyException("Plugin \"{$tag}\" not callable");
- } else {
- if ($function = $this->getPlugin($tag, $plugin_type)) {
- if (!isset($this->smarty->security_policy) || $this->smarty->security_policy->isTrustedTag($tag, $this)) {
- return $this->callTagCompiler('private_' . $plugin_type . '_plugin', $args, $parameter, $tag, $function);
- }
- }
- }
- }
- if (is_callable($this->smarty->default_plugin_handler_func)) {
- $found = false;
- // look for already resolved tags
- foreach ($this->smarty->plugin_search_order as $plugin_type) {
- if (isset($this->default_handler_plugins[$plugin_type][$tag])) {
- $found = true;
- break;
- }
- }
- if (!$found) {
- // call default handler
- foreach ($this->smarty->plugin_search_order as $plugin_type) {
- if ($this->getPluginFromDefaultHandler($tag, $plugin_type)) {
- $found = true;
- break;
- }
- }
- }
- if ($found) {
- // if compiler function plugin call it now
- if ($plugin_type == Smarty::PLUGIN_COMPILER) {
- $new_args = array();
- foreach ($args as $mixed) {
- $new_args = array_merge($new_args, $mixed);
- }
- $function = $this->default_handler_plugins[$plugin_type][$tag][0];
- if (!is_array($function)) {
- return $function($new_args, $this);
- } else if (is_object($function[0])) {
- return $this->default_handler_plugins[$plugin_type][$tag][0][0]->$function[1]($new_args, $this);
- } else {
- return call_user_func_array($function, array($new_args, $this));
- }
- } else {
- return $this->callTagCompiler('private_registered_' . $plugin_type, $args, $parameter, $tag);
- }
- }
- }
- } else {
- // compile closing tag of block function
- $base_tag = substr($tag, 0, -5);
- // check if closing tag is a registered object
- if (isset($this->smarty->registered_objects[$base_tag]) && isset($parameter['object_methode'])) {
- $methode = $parameter['object_methode'];
- if (in_array($methode, $this->smarty->registered_objects[$base_tag][3])) {
- return $this->callTagCompiler('private_object_block_function', $args, $parameter, $tag, $methode);
- } else {
- return $this->trigger_template_error('unallowed closing tag methode "' . $methode . '" in registered object "' . $base_tag . '"', $this->lex->taglineno);
- }
- }
- // registered block tag ?
- if (isset($this->smarty->registered_plugins[Smarty::PLUGIN_BLOCK][$base_tag]) || isset($this->default_handler_plugins[Smarty::PLUGIN_BLOCK][$base_tag])) {
- return $this->callTagCompiler('private_registered_block', $args, $parameter, $tag);
- }
- // block plugin?
- if ($function = $this->getPlugin($base_tag, Smarty::PLUGIN_BLOCK)) {
- return $this->callTagCompiler('private_block_plugin', $args, $parameter, $tag, $function);
- }
- // registered compiler plugin ?
- if (isset($this->smarty->registered_plugins[Smarty::PLUGIN_COMPILER][$tag])) {
- // if compiler function plugin call it now
- $args = array();
- if (!$this->smarty->registered_plugins[Smarty::PLUGIN_COMPILER][$tag][1]) {
- $this->tag_nocache = true;
- }
- $function = $this->smarty->registered_plugins[Smarty::PLUGIN_COMPILER][$tag][0];
- if (!is_array($function)) {
- return $function($args, $this);
- } else if (is_object($function[0])) {
- return $this->smarty->registered_plugins[Smarty::PLUGIN_COMPILER][$tag][0][0]->$function[1]($args, $this);
- } else {
- return call_user_func_array($function, array($args, $this));
- }
- }
- if ($this->smarty->loadPlugin('smarty_compiler_' . $tag)) {
- $plugin = 'smarty_compiler_' . $tag;
- if (is_callable($plugin)) {
- return $plugin($args, $this->smarty);
- }
- if (class_exists($plugin, false)) {
- $plugin_object = new $plugin;
- if (method_exists($plugin_object, 'compile')) {
- return $plugin_object->compile($args, $this);
- }
- }
- throw new SmartyException("Plugin \"{$tag}\" not callable");
- }
- }
- $this->trigger_template_error("unknown tag \"" . $tag . "\"", $this->lex->taglineno);
- }
- }
-
- /**
- * lazy loads internal compile plugin for tag and calls the compile methode
- *
- * compile objects cached for reuse.
- * class name format: Smarty_Internal_Compile_TagName
- * plugin filename format: Smarty_Internal_Tagname.php
- *
- * @param string $tag tag name
- * @param array $args list of tag attributes
- * @param mixed $param1 optional parameter
- * @param mixed $param2 optional parameter
- * @param mixed $param3 optional parameter
- * @return string compiled code
- */
- public function callTagCompiler($tag, $args, $param1 = null, $param2 = null, $param3 = null) {
- // re-use object if already exists
- if (isset(self::$_tag_objects[$tag])) {
- // compile this tag
- return self::$_tag_objects[$tag]->compile($args, $this, $param1, $param2, $param3);
- }
- // lazy load internal compiler plugin
- $class_name = 'Smarty_Internal_Compile_' . $tag;
- if ($this->smarty->loadPlugin($class_name)) {
- // check if tag allowed by security
- if (!isset($this->smarty->security_policy) || $this->smarty->security_policy->isTrustedTag($tag, $this)) {
- // use plugin if found
- self::$_tag_objects[$tag] = new $class_name;
- // compile this tag
- return self::$_tag_objects[$tag]->compile($args, $this, $param1, $param2, $param3);
- }
- }
- // no internal compile plugin for this tag
- return false;
- }
-
- /**
- * Check for plugins and return function name
- *
- * @param string $pugin_name name of plugin or function
- * @param string $plugin_type type of plugin
- * @return string call name of function
- */
- public function getPlugin($plugin_name, $plugin_type) {
- $function = null;
- if ($this->template->caching && ($this->nocache || $this->tag_nocache)) {
- if (isset($this->template->required_plugins['nocache'][$plugin_name][$plugin_type])) {
- $function = $this->template->required_plugins['nocache'][$plugin_name][$plugin_type]['function'];
- } else if (isset($this->template->required_plugins['compiled'][$plugin_name][$plugin_type])) {
- $this->template->required_plugins['nocache'][$plugin_name][$plugin_type] = $this->template->required_plugins['compiled'][$plugin_name][$plugin_type];
- $function = $this->template->required_plugins['nocache'][$plugin_name][$plugin_type]['function'];
- }
- } else {
- if (isset($this->template->required_plugins['compiled'][$plugin_name][$plugin_type])) {
- $function = $this->template->required_plugins['compiled'][$plugin_name][$plugin_type]['function'];
- } else if (isset($this->template->required_plugins['nocache'][$plugin_name][$plugin_type])) {
- $this->template->required_plugins['compiled'][$plugin_name][$plugin_type] = $this->template->required_plugins['nocache'][$plugin_name][$plugin_type];
- $function = $this->template->required_plugins['compiled'][$plugin_name][$plugin_type]['function'];
- }
- }
- if (isset($function)) {
- if ($plugin_type == 'modifier') {
- $this->modifier_plugins[$plugin_name] = true;
- }
- return $function;
- }
- // loop through plugin dirs and find the plugin
- $function = 'smarty_' . $plugin_type . '_' . $plugin_name;
- $file = $this->smarty->loadPlugin($function, false);
-
- if (is_string($file)) {
- if ($this->template->caching && ($this->nocache || $this->tag_nocache)) {
- $this->template->required_plugins['nocache'][$plugin_name][$plugin_type]['file'] = $file;
- $this->template->required_plugins['nocache'][$plugin_name][$plugin_type]['function'] = $function;
- } else {
- $this->template->required_plugins['compiled'][$plugin_name][$plugin_type]['file'] = $file;
- $this->template->required_plugins['compiled'][$plugin_name][$plugin_type]['function'] = $function;
- }
- if ($plugin_type == 'modifier') {
- $this->modifier_plugins[$plugin_name] = true;
- }
- return $function;
- }
- if (is_callable($function)) {
- // plugin function is defined in the script
- return $function;
- }
- return false;
- }
-
- /**
- * Check for plugins by default plugin handler
- *
- * @param string $tag name of tag
- * @param string $plugin_type type of plugin
- * @return boolean true if found
- */
- public function getPluginFromDefaultHandler($tag, $plugin_type) {
- $callback = null;
- $script = null;
- $cacheable = true;
- $result = call_user_func_array(
- $this->smarty->default_plugin_handler_func, array($tag, $plugin_type, $this->template, &$callback, &$script, &$cacheable)
- );
- if ($result) {
- $this->tag_nocache = $this->tag_nocache || !$cacheable;
- if ($script !== null) {
- if (is_file($script)) {
- if ($this->template->caching && ($this->nocache || $this->tag_nocache)) {
- $this->template->required_plugins['nocache'][$tag][$plugin_type]['file'] = $script;
- $this->template->required_plugins['nocache'][$tag][$plugin_type]['function'] = $callback;
- } else {
- $this->template->required_plugins['compiled'][$tag][$plugin_type]['file'] = $script;
- $this->template->required_plugins['compiled'][$tag][$plugin_type]['function'] = $callback;
- }
- include_once $script;
- } else {
- $this->trigger_template_error("Default plugin handler: Returned script file \"{$script}\" for \"{$tag}\" not found");
- }
- }
- if (!is_string($callback) && !(is_array($callback) && is_string($callback[0]) && is_string($callback[1]))) {
- $this->trigger_template_error("Default plugin handler: Returned callback for \"{$tag}\" must be a static function name or array of class and function name");
- }
- if (is_callable($callback)) {
- $this->default_handler_plugins[$plugin_type][$tag] = array($callback, true, array());
- return true;
- } else {
- $this->trigger_template_error("Default plugin handler: Returned callback for \"{$tag}\" not callable");
- }
- }
- return false;
- }
-
- /**
- * Inject inline code for nocache template sections
- *
- * This method gets the content of each template element from the parser.
- * If the content is compiled code and it should be not cached the code is injected
- * into the rendered output.
- *
- * @param string $content content of template element
- * @param boolean $is_code true if content is compiled code
- * @return string content
- */
- public function processNocacheCode($content, $is_code) {
- // If the template is not evaluated and we have a nocache section and or a nocache tag
- if ($is_code && !empty($content)) {
- // generate replacement code
- if ((!($this->template->source->recompiled) || $this->forceNocache) && $this->template->caching && !$this->suppressNocacheProcessing &&
- ($this->nocache || $this->tag_nocache || $this->forceNocache == 2)) {
- $this->template->has_nocache_code = true;
- $_output = str_replace("'", "\'", $content);
- $_output = str_replace('\\\\', '\\\\\\\\', $_output);
- $_output = str_replace("^#^", "'", $_output);
- $_output = "<?php echo '/*%%SmartyNocache:{$this->nocache_hash}%%*/" . $_output . "/*/%%SmartyNocache:{$this->nocache_hash}%%*/';?>\n";
- // make sure we include modifer plugins for nocache code
- foreach ($this->modifier_plugins as $plugin_name => $dummy) {
- if (isset($this->template->required_plugins['compiled'][$plugin_name]['modifier'])) {
- $this->template->required_plugins['nocache'][$plugin_name]['modifier'] = $this->template->required_plugins['compiled'][$plugin_name]['modifier'];
- }
- }
- } else {
- $_output = $content;
- }
- } else {
- $_output = $content;
- }
- $this->modifier_plugins = array();
- $this->suppressNocacheProcessing = false;
- $this->tag_nocache = false;
- return $_output;
- }
-
- /**
- * display compiler error messages without dying
- *
- * If parameter $args is empty it is a parser detected syntax error.
- * In this case the parser is called to obtain information about expected tokens.
- *
- * If parameter $args contains a string this is used as error message
- *
- * @param string $args individual error message or null
- * @param string $line line-number
- * @throws SmartyCompilerException when an unexpected token is found
- */
- public function trigger_template_error($args = null, $line = null) {
- // get template source line which has error
- if (!isset($line)) {
- $line = $this->lex->line;
- }
- $match = preg_split("/\n/", $this->lex->data);
- $error_text = 'Syntax Error in template "' . $this->template->source->filepath . '" on line ' . $line . ' "' . htmlspecialchars(trim(preg_replace('![\t\r\n]+!', ' ', $match[$line - 1]))) . '" ';
- if (isset($args)) {
- // individual error message
- $error_text .= $args;
- } else {
- // expected token from parser
- $error_text .= ' - Unexpected "' . $this->lex->value . '"';
- if (count($this->parser->yy_get_expected_tokens($this->parser->yymajor)) <= 4) {
- foreach ($this->parser->yy_get_expected_tokens($this->parser->yymajor) as $token) {
- $exp_token = $this->parser->yyTokenName[$token];
- if (isset($this->lex->smarty_token_names[$exp_token])) {
- // token type from lexer
- $expect[] = '"' . $this->lex->smarty_token_names[$exp_token] . '"';
- } else {
- // otherwise internal token name
- $expect[] = $this->parser->yyTokenName[$token];
- }
- }
- $error_text .= ', expected one of: ' . implode(' , ', $expect);
- }
- }
- throw new SmartyCompilerException($error_text);
- }
-
-}
-
-?> \ No newline at end of file
+<?php
+
+/**
+ * Smarty Internal Plugin Smarty Template Compiler Base
+ * This file contains the basic classes and methods for compiling Smarty templates with lexer/parser
+ *
+ * @package Smarty
+ * @subpackage Compiler
+ * @author Uwe Tews
+ */
+
+/**
+ * Main abstract compiler class
+ *
+ * @package Smarty
+ * @subpackage Compiler
+ */
+abstract class Smarty_Internal_TemplateCompilerBase
+{
+ /**
+ * hash for nocache sections
+ *
+ * @var mixed
+ */
+ private $nocache_hash = null;
+
+ /**
+ * suppress generation of nocache code
+ *
+ * @var bool
+ */
+ public $suppressNocacheProcessing = false;
+
+ /**
+ * suppress generation of merged template code
+ *
+ * @var bool
+ */
+ public $suppressMergedTemplates = false;
+
+ /**
+ * compile tag objects
+ *
+ * @var array
+ */
+ public static $_tag_objects = array();
+
+ /**
+ * tag stack
+ *
+ * @var array
+ */
+ public $_tag_stack = array();
+
+ /**
+ * current template
+ *
+ * @var Smarty_Internal_Template
+ */
+ public $template = null;
+
+ /**
+ * merged templates
+ *
+ * @var array
+ */
+ public $merged_templates = array();
+
+ /**
+ * sources which must be compiled
+ *
+ * @var array
+ */
+ public $sources = array();
+
+ /**
+ * flag that we are inside {block}
+ *
+ * @var bool
+ */
+ public $inheritance = false;
+
+ /**
+ * flag when compiling inheritance child template
+ *
+ * @var bool
+ */
+ public $inheritance_child = false;
+
+ /**
+ * uid of templates called by {extends} for recursion check
+ *
+ * @var array
+ */
+ public $extends_uid = array();
+
+ /**
+ * source line offset for error messages
+ *
+ * @var int
+ */
+ public $trace_line_offset = 0;
+
+ /**
+ * trace uid
+ *
+ * @var string
+ */
+ public $trace_uid = '';
+
+ /**
+ * trace file path
+ *
+ * @var string
+ */
+ public $trace_filepath = '';
+ /**
+ * stack for tracing file and line of nested {block} tags
+ *
+ * @var array
+ */
+ public $trace_stack = array();
+
+ /**
+ * plugins loaded by default plugin handler
+ *
+ * @var array
+ */
+ public $default_handler_plugins = array();
+
+ /**
+ * saved preprocessed modifier list
+ *
+ * @var mixed
+ */
+ public $default_modifier_list = null;
+
+ /**
+ * force compilation of complete template as nocache
+ *
+ * @var boolean
+ */
+ public $forceNocache = false;
+
+ /**
+ * suppress Smarty header code in compiled template
+ *
+ * @var bool
+ */
+ public $suppressHeader = false;
+
+ /**
+ * suppress template property header code in compiled template
+ *
+ * @var bool
+ */
+ public $suppressTemplatePropertyHeader = false;
+
+ /**
+ * suppress pre and post filter
+ *
+ * @var bool
+ */
+ public $suppressFilter = false;
+
+ /**
+ * flag if compiled template file shall we written
+ *
+ * @var bool
+ */
+ public $write_compiled_code = true;
+
+ /**
+ * flag if currently a template function is compiled
+ *
+ * @var bool
+ */
+ public $compiles_template_function = false;
+
+ /**
+ * called subfuntions from template function
+ *
+ * @var array
+ */
+ public $called_functions = array();
+
+ /**
+ * flags for used modifier plugins
+ *
+ * @var array
+ */
+ public $modifier_plugins = array();
+
+ /**
+ * type of already compiled modifier
+ *
+ * @var array
+ */
+ public $known_modifier_type = array();
+
+ /**
+ * method to compile a Smarty template
+ *
+ * @param mixed $_content template source
+ *
+ * @return bool true if compiling succeeded, false if it failed
+ */
+ abstract protected function doCompile($_content);
+
+ /**
+ * Initialize compiler
+ */
+ public function __construct()
+ {
+ $this->nocache_hash = str_replace(array('.', ','), '-', uniqid(rand(), true));
+ }
+
+ /**
+ * Method to compile a Smarty template
+ *
+ * @param Smarty_Internal_Template $template template object to compile
+ * @param bool $nocache true is shall be compiled in nocache mode
+ *
+ * @return bool true if compiling succeeded, false if it failed
+ */
+ public function compileTemplate(Smarty_Internal_Template $template, $nocache = false)
+ {
+ if (empty($template->properties['nocache_hash'])) {
+ $template->properties['nocache_hash'] = $this->nocache_hash;
+ } else {
+ $this->nocache_hash = $template->properties['nocache_hash'];
+ }
+ // flag for nochache sections
+ $this->nocache = $nocache;
+ $this->tag_nocache = false;
+ // save template object in compiler class
+ $this->template = $template;
+ // reset has nocache code flag
+ $this->template->has_nocache_code = false;
+ $save_source = $this->template->source;
+ // template header code
+ $template_header = '';
+ if (!$this->suppressHeader) {
+ $template_header .= "<?php /* Smarty version " . Smarty::SMARTY_VERSION . ", created on " . strftime("%Y-%m-%d %H:%M:%S") . "\n";
+ $template_header .= " compiled from \"" . $this->template->source->filepath . "\" */ ?>\n";
+ }
+
+ if (empty($this->template->source->components)) {
+ $this->sources = array($template->source);
+ } else {
+ // we have array of inheritance templates by extends: resource
+ $this->sources = array_reverse($template->source->components);
+ }
+ $loop = 0;
+ // the $this->sources array can get additional elements while compiling by the {extends} tag
+ while ($this->template->source = array_shift($this->sources)) {
+ $this->smarty->_current_file = $this->template->source->filepath;
+ if ($this->smarty->debugging) {
+ Smarty_Internal_Debug::start_compile($this->template);
+ }
+ $no_sources = count($this->sources);
+ if ($loop || $no_sources) {
+ $this->template->properties['file_dependency'][$this->template->source->uid] = array($this->template->source->filepath, $this->template->source->timestamp, $this->template->source->type);
+ }
+ $loop ++;
+ if ($no_sources) {
+ $this->inheritance_child = true;
+ } else {
+ $this->inheritance_child = false;
+ }
+ do {
+ $_compiled_code = '';
+ // flag for aborting current and start recompile
+ $this->abort_and_recompile = false;
+ // get template source
+ $_content = $this->template->source->content;
+ if ($_content != '') {
+ // run prefilter if required
+ if ((isset($this->smarty->autoload_filters['pre']) || isset($this->smarty->registered_filters['pre'])) && !$this->suppressFilter) {
+ $_content = Smarty_Internal_Filter_Handler::runFilter('pre', $_content, $template);
+ }
+ // call compiler
+ $_compiled_code = $this->doCompile($_content);
+ }
+ } while ($this->abort_and_recompile);
+ if ($this->smarty->debugging) {
+ Smarty_Internal_Debug::end_compile($this->template);
+ }
+ }
+ // restore source
+ $this->template->source = $save_source;
+ unset($save_source);
+ $this->smarty->_current_file = $this->template->source->filepath;
+ // free memory
+ unset($this->parser->root_buffer, $this->parser->current_buffer, $this->parser, $this->lex, $this->template);
+ self::$_tag_objects = array();
+ // return compiled code to template object
+ $merged_code = '';
+ if (!$this->suppressMergedTemplates && !empty($this->merged_templates)) {
+ foreach ($this->merged_templates as $code) {
+ $merged_code .= $code;
+ }
+ }
+ // run postfilter if required on compiled template code
+ if ((isset($this->smarty->autoload_filters['post']) || isset($this->smarty->registered_filters['post'])) && !$this->suppressFilter && $_compiled_code != '') {
+ $_compiled_code = Smarty_Internal_Filter_Handler::runFilter('post', $_compiled_code, $template);
+ }
+ if ($this->suppressTemplatePropertyHeader) {
+ $code = $_compiled_code . $merged_code;
+ } else {
+ $code = $template_header . $template->createTemplateCodeFrame($_compiled_code) . $merged_code;
+ }
+ // unset content because template inheritance could have replace source with parent code
+ unset ($template->source->content);
+
+ return $code;
+ }
+
+ /**
+ * Compile Tag
+ * This is a call back from the lexer/parser
+ * It executes the required compile plugin for the Smarty tag
+ *
+ * @param string $tag tag name
+ * @param array $args array with tag attributes
+ * @param array $parameter array with compilation parameter
+ *
+ * @throws SmartyCompilerException
+ * @throws SmartyException
+ * @return string compiled code
+ */
+ public function compileTag($tag, $args, $parameter = array())
+ {
+ // $args contains the attributes parsed and compiled by the lexer/parser
+ // assume that tag does compile into code, but creates no HTML output
+ $this->has_code = true;
+ $this->has_output = false;
+ // log tag/attributes
+ if (isset($this->smarty->get_used_tags) && $this->smarty->get_used_tags) {
+ $this->template->used_tags[] = array($tag, $args);
+ }
+ // check nocache option flag
+ if (in_array("'nocache'", $args) || in_array(array('nocache' => 'true'), $args)
+ || in_array(array('nocache' => '"true"'), $args) || in_array(array('nocache' => "'true'"), $args)
+ ) {
+ $this->tag_nocache = true;
+ }
+ // compile the smarty tag (required compile classes to compile the tag are autoloaded)
+ if (($_output = $this->callTagCompiler($tag, $args, $parameter)) === false) {
+ if (isset($this->smarty->template_functions[$tag])) {
+ // template defined by {template} tag
+ $args['_attr']['name'] = "'" . $tag . "'";
+ $_output = $this->callTagCompiler('call', $args, $parameter);
+ }
+ }
+ if ($_output !== false) {
+ if ($_output !== true) {
+ // did we get compiled code
+ if ($this->has_code) {
+ // Does it create output?
+ if ($this->has_output) {
+ $_output .= "\n";
+ }
+ // return compiled code
+ return $_output;
+ }
+ }
+ // tag did not produce compiled code
+ return null;
+ } else {
+ // map_named attributes
+ if (isset($args['_attr'])) {
+ foreach ($args['_attr'] as $key => $attribute) {
+ if (is_array($attribute)) {
+ $args = array_merge($args, $attribute);
+ }
+ }
+ }
+ // not an internal compiler tag
+ if (strlen($tag) < 6 || substr($tag, - 5) != 'close') {
+ // check if tag is a registered object
+ if (isset($this->smarty->registered_objects[$tag]) && isset($parameter['object_method'])) {
+ $method = $parameter['object_method'];
+ if (!in_array($method, $this->smarty->registered_objects[$tag][3]) &&
+ (empty($this->smarty->registered_objects[$tag][1]) || in_array($method, $this->smarty->registered_objects[$tag][1]))
+ ) {
+ return $this->callTagCompiler('private_object_function', $args, $parameter, $tag, $method);
+ } elseif (in_array($method, $this->smarty->registered_objects[$tag][3])) {
+ return $this->callTagCompiler('private_object_block_function', $args, $parameter, $tag, $method);
+ } else {
+ // throw exception
+ $this->trigger_template_error('not allowed method "' . $method . '" in registered object "' . $tag . '"', $this->lex->taglineno);
+ }
+ }
+ // check if tag is registered
+ foreach (array(Smarty::PLUGIN_COMPILER, Smarty::PLUGIN_FUNCTION, Smarty::PLUGIN_BLOCK) as $plugin_type) {
+ if (isset($this->smarty->registered_plugins[$plugin_type][$tag])) {
+ // if compiler function plugin call it now
+ if ($plugin_type == Smarty::PLUGIN_COMPILER) {
+ $new_args = array();
+ foreach ($args as $key => $mixed) {
+ if (is_array($mixed)) {
+ $new_args = array_merge($new_args, $mixed);
+ } else {
+ $new_args[$key] = $mixed;
+ }
+ }
+ if (!$this->smarty->registered_plugins[$plugin_type][$tag][1]) {
+ $this->tag_nocache = true;
+ }
+ $function = $this->smarty->registered_plugins[$plugin_type][$tag][0];
+ if (!is_array($function)) {
+ return $function($new_args, $this);
+ } elseif (is_object($function[0])) {
+ return $this->smarty->registered_plugins[$plugin_type][$tag][0][0]->$function[1]($new_args, $this);
+ } else {
+ return call_user_func_array($function, array($new_args, $this));
+ }
+ }
+ // compile registered function or block function
+ if ($plugin_type == Smarty::PLUGIN_FUNCTION || $plugin_type == Smarty::PLUGIN_BLOCK) {
+ return $this->callTagCompiler('private_registered_' . $plugin_type, $args, $parameter, $tag);
+ }
+ }
+ }
+ // check plugins from plugins folder
+ foreach ($this->smarty->plugin_search_order as $plugin_type) {
+ if ($plugin_type == Smarty::PLUGIN_COMPILER && $this->smarty->loadPlugin('smarty_compiler_' . $tag) && (!isset($this->smarty->security_policy) || $this->smarty->security_policy->isTrustedTag($tag, $this))) {
+ $plugin = 'smarty_compiler_' . $tag;
+ if (is_callable($plugin)) {
+ // convert arguments format for old compiler plugins
+ $new_args = array();
+ foreach ($args as $key => $mixed) {
+ if (is_array($mixed)) {
+ $new_args = array_merge($new_args, $mixed);
+ } else {
+ $new_args[$key] = $mixed;
+ }
+ }
+
+ return $plugin($new_args, $this->smarty);
+ }
+ if (class_exists($plugin, false)) {
+ $plugin_object = new $plugin;
+ if (method_exists($plugin_object, 'compile')) {
+ return $plugin_object->compile($args, $this);
+ }
+ }
+ throw new SmartyException("Plugin \"{$tag}\" not callable");
+ } else {
+ if ($function = $this->getPlugin($tag, $plugin_type)) {
+ if (!isset($this->smarty->security_policy) || $this->smarty->security_policy->isTrustedTag($tag, $this)) {
+ return $this->callTagCompiler('private_' . $plugin_type . '_plugin', $args, $parameter, $tag, $function);
+ }
+ }
+ }
+ }
+ if (is_callable($this->smarty->default_plugin_handler_func)) {
+ $found = false;
+ // look for already resolved tags
+ foreach ($this->smarty->plugin_search_order as $plugin_type) {
+ if (isset($this->default_handler_plugins[$plugin_type][$tag])) {
+ $found = true;
+ break;
+ }
+ }
+ if (!$found) {
+ // call default handler
+ foreach ($this->smarty->plugin_search_order as $plugin_type) {
+ if ($this->getPluginFromDefaultHandler($tag, $plugin_type)) {
+ $found = true;
+ break;
+ }
+ }
+ }
+ if ($found) {
+ // if compiler function plugin call it now
+ if ($plugin_type == Smarty::PLUGIN_COMPILER) {
+ $new_args = array();
+ foreach ($args as $mixed) {
+ $new_args = array_merge($new_args, $mixed);
+ }
+ $function = $this->default_handler_plugins[$plugin_type][$tag][0];
+ if (!is_array($function)) {
+ return $function($new_args, $this);
+ } elseif (is_object($function[0])) {
+ return $this->default_handler_plugins[$plugin_type][$tag][0][0]->$function[1]($new_args, $this);
+ } else {
+ return call_user_func_array($function, array($new_args, $this));
+ }
+ } else {
+ return $this->callTagCompiler('private_registered_' . $plugin_type, $args, $parameter, $tag);
+ }
+ }
+ }
+ } else {
+ // compile closing tag of block function
+ $base_tag = substr($tag, 0, - 5);
+ // check if closing tag is a registered object
+ if (isset($this->smarty->registered_objects[$base_tag]) && isset($parameter['object_method'])) {
+ $method = $parameter['object_method'];
+ if (in_array($method, $this->smarty->registered_objects[$base_tag][3])) {
+ return $this->callTagCompiler('private_object_block_function', $args, $parameter, $tag, $method);
+ } else {
+ // throw exception
+ $this->trigger_template_error('not allowed closing tag method "' . $method . '" in registered object "' . $base_tag . '"', $this->lex->taglineno);
+ }
+ }
+ // registered block tag ?
+ if (isset($this->smarty->registered_plugins[Smarty::PLUGIN_BLOCK][$base_tag]) || isset($this->default_handler_plugins[Smarty::PLUGIN_BLOCK][$base_tag])) {
+ return $this->callTagCompiler('private_registered_block', $args, $parameter, $tag);
+ }
+ // block plugin?
+ if ($function = $this->getPlugin($base_tag, Smarty::PLUGIN_BLOCK)) {
+ return $this->callTagCompiler('private_block_plugin', $args, $parameter, $tag, $function);
+ }
+ // registered compiler plugin ?
+ if (isset($this->smarty->registered_plugins[Smarty::PLUGIN_COMPILER][$tag])) {
+ // if compiler function plugin call it now
+ $args = array();
+ if (!$this->smarty->registered_plugins[Smarty::PLUGIN_COMPILER][$tag][1]) {
+ $this->tag_nocache = true;
+ }
+ $function = $this->smarty->registered_plugins[Smarty::PLUGIN_COMPILER][$tag][0];
+ if (!is_array($function)) {
+ return $function($args, $this);
+ } elseif (is_object($function[0])) {
+ return $this->smarty->registered_plugins[Smarty::PLUGIN_COMPILER][$tag][0][0]->$function[1]($args, $this);
+ } else {
+ return call_user_func_array($function, array($args, $this));
+ }
+ }
+ if ($this->smarty->loadPlugin('smarty_compiler_' . $tag)) {
+ $plugin = 'smarty_compiler_' . $tag;
+ if (is_callable($plugin)) {
+ return $plugin($args, $this->smarty);
+ }
+ if (class_exists($plugin, false)) {
+ $plugin_object = new $plugin;
+ if (method_exists($plugin_object, 'compile')) {
+ return $plugin_object->compile($args, $this);
+ }
+ }
+ throw new SmartyException("Plugin \"{$tag}\" not callable");
+ }
+ }
+ $this->trigger_template_error("unknown tag \"" . $tag . "\"", $this->lex->taglineno);
+ }
+ }
+
+ /**
+ * lazy loads internal compile plugin for tag and calls the compile method
+ * compile objects cached for reuse.
+ * class name format: Smarty_Internal_Compile_TagName
+ * plugin filename format: Smarty_Internal_Tagname.php
+ *
+ * @param string $tag tag name
+ * @param array $args list of tag attributes
+ * @param mixed $param1 optional parameter
+ * @param mixed $param2 optional parameter
+ * @param mixed $param3 optional parameter
+ *
+ * @return string compiled code
+ */
+ public function callTagCompiler($tag, $args, $param1 = null, $param2 = null, $param3 = null)
+ {
+ // re-use object if already exists
+ if (isset(self::$_tag_objects[$tag])) {
+ // compile this tag
+ return self::$_tag_objects[$tag]->compile($args, $this, $param1, $param2, $param3);
+ }
+ // lazy load internal compiler plugin
+ $class_name = 'Smarty_Internal_Compile_' . $tag;
+ if ($this->smarty->loadPlugin($class_name)) {
+ // check if tag allowed by security
+ if (!isset($this->smarty->security_policy) || $this->smarty->security_policy->isTrustedTag($tag, $this)) {
+ // use plugin if found
+ self::$_tag_objects[$tag] = new $class_name;
+ // compile this tag
+ return self::$_tag_objects[$tag]->compile($args, $this, $param1, $param2, $param3);
+ }
+ }
+ // no internal compile plugin for this tag
+ return false;
+ }
+
+ /**
+ * Check for plugins and return function name
+ *
+ * @param $plugin_name
+ * @param string $plugin_type type of plugin
+ *
+ * @return string call name of function
+ */
+ public function getPlugin($plugin_name, $plugin_type)
+ {
+ $function = null;
+ if ($this->template->caching && ($this->nocache || $this->tag_nocache)) {
+ if (isset($this->template->required_plugins['nocache'][$plugin_name][$plugin_type])) {
+ $function = $this->template->required_plugins['nocache'][$plugin_name][$plugin_type]['function'];
+ } elseif (isset($this->template->required_plugins['compiled'][$plugin_name][$plugin_type])) {
+ $this->template->required_plugins['nocache'][$plugin_name][$plugin_type] = $this->template->required_plugins['compiled'][$plugin_name][$plugin_type];
+ $function = $this->template->required_plugins['nocache'][$plugin_name][$plugin_type]['function'];
+ }
+ } else {
+ if (isset($this->template->required_plugins['compiled'][$plugin_name][$plugin_type])) {
+ $function = $this->template->required_plugins['compiled'][$plugin_name][$plugin_type]['function'];
+ } elseif (isset($this->template->required_plugins['nocache'][$plugin_name][$plugin_type])) {
+ $this->template->required_plugins['compiled'][$plugin_name][$plugin_type] = $this->template->required_plugins['nocache'][$plugin_name][$plugin_type];
+ $function = $this->template->required_plugins['compiled'][$plugin_name][$plugin_type]['function'];
+ }
+ }
+ if (isset($function)) {
+ if ($plugin_type == 'modifier') {
+ $this->modifier_plugins[$plugin_name] = true;
+ }
+
+ return $function;
+ }
+ // loop through plugin dirs and find the plugin
+ $function = 'smarty_' . $plugin_type . '_' . $plugin_name;
+ $file = $this->smarty->loadPlugin($function, false);
+
+ if (is_string($file)) {
+ if ($this->template->caching && ($this->nocache || $this->tag_nocache)) {
+ $this->template->required_plugins['nocache'][$plugin_name][$plugin_type]['file'] = $file;
+ $this->template->required_plugins['nocache'][$plugin_name][$plugin_type]['function'] = $function;
+ } else {
+ $this->template->required_plugins['compiled'][$plugin_name][$plugin_type]['file'] = $file;
+ $this->template->required_plugins['compiled'][$plugin_name][$plugin_type]['function'] = $function;
+ }
+ if ($plugin_type == 'modifier') {
+ $this->modifier_plugins[$plugin_name] = true;
+ }
+
+ return $function;
+ }
+ if (is_callable($function)) {
+ // plugin function is defined in the script
+ return $function;
+ }
+
+ return false;
+ }
+
+ /**
+ * Check for plugins by default plugin handler
+ *
+ * @param string $tag name of tag
+ * @param string $plugin_type type of plugin
+ *
+ * @return boolean true if found
+ */
+ public function getPluginFromDefaultHandler($tag, $plugin_type)
+ {
+ $callback = null;
+ $script = null;
+ $cacheable = true;
+ $result = call_user_func_array(
+ $this->smarty->default_plugin_handler_func, array($tag, $plugin_type, $this->template, &$callback, &$script, &$cacheable)
+ );
+ if ($result) {
+ $this->tag_nocache = $this->tag_nocache || !$cacheable;
+ if ($script !== null) {
+ if (is_file($script)) {
+ if ($this->template->caching && ($this->nocache || $this->tag_nocache)) {
+ $this->template->required_plugins['nocache'][$tag][$plugin_type]['file'] = $script;
+ $this->template->required_plugins['nocache'][$tag][$plugin_type]['function'] = $callback;
+ } else {
+ $this->template->required_plugins['compiled'][$tag][$plugin_type]['file'] = $script;
+ $this->template->required_plugins['compiled'][$tag][$plugin_type]['function'] = $callback;
+ }
+ include_once $script;
+ } else {
+ $this->trigger_template_error("Default plugin handler: Returned script file \"{$script}\" for \"{$tag}\" not found");
+ }
+ }
+ if (!is_string($callback) && !(is_array($callback) && is_string($callback[0]) && is_string($callback[1]))) {
+ $this->trigger_template_error("Default plugin handler: Returned callback for \"{$tag}\" must be a static function name or array of class and function name");
+ }
+ if (is_callable($callback)) {
+ $this->default_handler_plugins[$plugin_type][$tag] = array($callback, true, array());
+
+ return true;
+ } else {
+ $this->trigger_template_error("Default plugin handler: Returned callback for \"{$tag}\" not callable");
+ }
+ }
+
+ return false;
+ }
+
+ /**
+ * Inject inline code for nocache template sections
+ * This method gets the content of each template element from the parser.
+ * If the content is compiled code and it should be not cached the code is injected
+ * into the rendered output.
+ *
+ * @param string $content content of template element
+ * @param boolean $is_code true if content is compiled code
+ *
+ * @return string content
+ */
+ public function processNocacheCode($content, $is_code)
+ {
+ // If the template is not evaluated and we have a nocache section and or a nocache tag
+ if ($is_code && !empty($content)) {
+ // generate replacement code
+ if ((!($this->template->source->recompiled) || $this->forceNocache) && $this->template->caching && !$this->suppressNocacheProcessing &&
+ ($this->nocache || $this->tag_nocache)
+ ) {
+ $this->template->has_nocache_code = true;
+ $_output = addcslashes($content, '\'\\');
+ $_output = str_replace("^#^", "'", $_output);
+ $_output = "<?php echo '/*%%SmartyNocache:{$this->nocache_hash}%%*/" . $_output . "/*/%%SmartyNocache:{$this->nocache_hash}%%*/';?>\n";
+ // make sure we include modifier plugins for nocache code
+ foreach ($this->modifier_plugins as $plugin_name => $dummy) {
+ if (isset($this->template->required_plugins['compiled'][$plugin_name]['modifier'])) {
+ $this->template->required_plugins['nocache'][$plugin_name]['modifier'] = $this->template->required_plugins['compiled'][$plugin_name]['modifier'];
+ }
+ }
+ } else {
+ $_output = $content;
+ }
+ } else {
+ $_output = $content;
+ }
+ $this->modifier_plugins = array();
+ $this->suppressNocacheProcessing = false;
+ $this->tag_nocache = false;
+
+ return $_output;
+ }
+
+ /**
+ * push current file and line offset on stack for tracing {block} source lines
+ *
+ * @param string $file new filename
+ * @param string $uid uid of file
+ * @param int $line line offset to source
+ * @param bool $debug false debug end_compile shall not be called
+ */
+ public function pushTrace($file, $uid, $line, $debug = true)
+ {
+ if ($this->smarty->debugging && $debug) {
+ Smarty_Internal_Debug::end_compile($this->template);
+ }
+ array_push($this->trace_stack, array($this->smarty->_current_file, $this->trace_filepath, $this->trace_uid, $this->trace_line_offset));
+ $this->trace_filepath = $this->smarty->_current_file = $file;
+ $this->trace_uid = $uid;
+ $this->trace_line_offset = $line;
+ if ($this->smarty->debugging) {
+ Smarty_Internal_Debug::start_compile($this->template);
+ }
+ }
+
+ /**
+ * restore file and line offset
+
+ */
+ public function popTrace()
+ {
+ if ($this->smarty->debugging) {
+ Smarty_Internal_Debug::end_compile($this->template);
+ }
+ $r = array_pop($this->trace_stack);
+ $this->smarty->_current_file = $r[0];
+ $this->trace_filepath = $r[1];
+ $this->trace_uid = $r[2];
+ $this->trace_line_offset = $r[3];
+ if ($this->smarty->debugging) {
+ Smarty_Internal_Debug::start_compile($this->template);
+ }
+ }
+
+ /**
+ * display compiler error messages without dying
+ * If parameter $args is empty it is a parser detected syntax error.
+ * In this case the parser is called to obtain information about expected tokens.
+ * If parameter $args contains a string this is used as error message
+ *
+ * @param string $args individual error message or null
+ * @param string $line line-number
+ *
+ * @throws SmartyCompilerException when an unexpected token is found
+ */
+ public function trigger_template_error($args = null, $line = null)
+ {
+ // get template source line which has error
+ if (!isset($line)) {
+ $line = $this->lex->line;
+ }
+ // $line += $this->trace_line_offset;
+ $match = preg_split("/\n/", $this->lex->data);
+ $error_text = 'Syntax error in template "' . (empty($this->trace_filepath) ? $this->template->source->filepath : $this->trace_filepath) . '" on line ' . ($line + $this->trace_line_offset) . ' "' . trim(preg_replace('![\t\r\n]+!', ' ', $match[$line - 1])) . '" ';
+ if (isset($args)) {
+ // individual error message
+ $error_text .= $args;
+ } else {
+ // expected token from parser
+ $error_text .= ' - Unexpected "' . $this->lex->value . '"';
+ if (count($this->parser->yy_get_expected_tokens($this->parser->yymajor)) <= 4) {
+ foreach ($this->parser->yy_get_expected_tokens($this->parser->yymajor) as $token) {
+ $exp_token = $this->parser->yyTokenName[$token];
+ if (isset($this->lex->smarty_token_names[$exp_token])) {
+ // token type from lexer
+ $expect[] = '"' . $this->lex->smarty_token_names[$exp_token] . '"';
+ } else {
+ // otherwise internal token name
+ $expect[] = $this->parser->yyTokenName[$token];
+ }
+ }
+ $error_text .= ', expected one of: ' . implode(' , ', $expect);
+ }
+ }
+ $e = new SmartyCompilerException($error_text);
+ $e->line = $line;
+ $e->source = trim(preg_replace('![\t\r\n]+!', ' ', $match[$line - 1]));
+ $e->desc = $args;
+ $e->template = $this->template->source->filepath;
+ throw $e;
+ }
+}
diff --git a/library/Smarty/libs/sysplugins/smarty_internal_templatelexer.php b/library/Smarty/libs/sysplugins/smarty_internal_templatelexer.php
index bfc413aef..4de8a9c06 100644
--- a/library/Smarty/libs/sysplugins/smarty_internal_templatelexer.php
+++ b/library/Smarty/libs/sysplugins/smarty_internal_templatelexer.php
@@ -1,15 +1,16 @@
<?php
/**
-* Smarty Internal Plugin Templatelexer
-*
-* This is the lexer to break the template source into tokens
-* @package Smarty
-* @subpackage Compiler
-* @author Uwe Tews
-*/
+ * Smarty Internal Plugin Templatelexer
+ * This is the lexer to break the template source into tokens
+ *
+ * @package Smarty
+ * @subpackage Compiler
+ * @author Uwe Tews
+ */
+
/**
-* Smarty Internal Plugin Templatelexer
-*/
+ * Smarty Internal Plugin Templatelexer
+ */
class Smarty_Internal_Templatelexer
{
public $data;
@@ -19,156 +20,179 @@ class Smarty_Internal_Templatelexer
public $node;
public $line;
public $taglineno;
+ public $is_phpScript = false;
public $state = 1;
+ public $smarty;
+ public $literal_cnt = 0;
private $heredoc_id_stack = Array();
- public $smarty_token_names = array ( // Text for parser error messages
- 'IDENTITY' => '===',
- 'NONEIDENTITY' => '!==',
- 'EQUALS' => '==',
- 'NOTEQUALS' => '!=',
- 'GREATEREQUAL' => '(>=,ge)',
- 'LESSEQUAL' => '(<=,le)',
- 'GREATERTHAN' => '(>,gt)',
- 'LESSTHAN' => '(<,lt)',
- 'MOD' => '(%,mod)',
- 'NOT' => '(!,not)',
- 'LAND' => '(&&,and)',
- 'LOR' => '(||,or)',
- 'LXOR' => 'xor',
- 'OPENP' => '(',
- 'CLOSEP' => ')',
- 'OPENB' => '[',
- 'CLOSEB' => ']',
- 'PTR' => '->',
- 'APTR' => '=>',
- 'EQUAL' => '=',
- 'NUMBER' => 'number',
- 'UNIMATH' => '+" , "-',
- 'MATH' => '*" , "/" , "%',
- 'INCDEC' => '++" , "--',
- 'SPACE' => ' ',
- 'DOLLAR' => '$',
- 'SEMICOLON' => ';',
- 'COLON' => ':',
- 'DOUBLECOLON' => '::',
- 'AT' => '@',
- 'HATCH' => '#',
- 'QUOTE' => '"',
- 'BACKTICK' => '`',
- 'VERT' => '|',
- 'DOT' => '.',
- 'COMMA' => '","',
- 'ANDSYM' => '"&"',
- 'QMARK' => '"?"',
- 'ID' => 'identifier',
- 'TEXT' => 'text',
- 'FAKEPHPSTARTTAG' => 'Fake PHP start tag',
- 'PHPSTARTTAG' => 'PHP start tag',
- 'PHPENDTAG' => 'PHP end tag',
- 'LITERALSTART' => 'Literal start',
- 'LITERALEND' => 'Literal end',
- 'LDELSLASH' => 'closing tag',
- 'COMMENT' => 'comment',
- 'AS' => 'as',
- 'TO' => 'to',
- );
-
-
- function __construct($data,$compiler)
- {
-// $this->data = preg_replace("/(\r\n|\r|\n)/", "\n", $data);
+ public $yyTraceFILE;
+ public $yyTracePrompt;
+ public $state_name = array(1 => 'TEXT', 2 => 'SMARTY', 3 => 'LITERAL', 4 => 'DOUBLEQUOTEDSTRING', 5 => 'CHILDBODY');
+ public $smarty_token_names = array( // Text for parser error messages
+ 'IDENTITY' => '===',
+ 'NONEIDENTITY' => '!==',
+ 'EQUALS' => '==',
+ 'NOTEQUALS' => '!=',
+ 'GREATEREQUAL' => '(>=,ge)',
+ 'LESSEQUAL' => '(<=,le)',
+ 'GREATERTHAN' => '(>,gt)',
+ 'LESSTHAN' => '(<,lt)',
+ 'MOD' => '(%,mod)',
+ 'NOT' => '(!,not)',
+ 'LAND' => '(&&,and)',
+ 'LOR' => '(||,or)',
+ 'LXOR' => 'xor',
+ 'OPENP' => '(',
+ 'CLOSEP' => ')',
+ 'OPENB' => '[',
+ 'CLOSEB' => ']',
+ 'PTR' => '->',
+ 'APTR' => '=>',
+ 'EQUAL' => '=',
+ 'NUMBER' => 'number',
+ 'UNIMATH' => '+" , "-',
+ 'MATH' => '*" , "/" , "%',
+ 'INCDEC' => '++" , "--',
+ 'SPACE' => ' ',
+ 'DOLLAR' => '$',
+ 'SEMICOLON' => ';',
+ 'COLON' => ':',
+ 'DOUBLECOLON' => '::',
+ 'AT' => '@',
+ 'HATCH' => '#',
+ 'QUOTE' => '"',
+ 'BACKTICK' => '`',
+ 'VERT' => '|',
+ 'DOT' => '.',
+ 'COMMA' => '","',
+ 'ANDSYM' => '"&"',
+ 'QMARK' => '"?"',
+ 'ID' => 'identifier',
+ 'TEXT' => 'text',
+ 'FAKEPHPSTARTTAG' => 'Fake PHP start tag',
+ 'PHPSTARTTAG' => 'PHP start tag',
+ 'PHPENDTAG' => 'PHP end tag',
+ 'LITERALSTART' => 'Literal start',
+ 'LITERALEND' => 'Literal end',
+ 'LDELSLASH' => 'closing tag',
+ 'COMMENT' => 'comment',
+ 'AS' => 'as',
+ 'TO' => 'to',
+ );
+
+ function __construct($data, $compiler)
+ {
+ // $this->data = preg_replace("/(\r\n|\r|\n)/", "\n", $data);
$this->data = $data;
$this->counter = 0;
+ if (preg_match('/^\xEF\xBB\xBF/', $this->data, $match)) {
+ $this->counter += strlen($match[0]);
+ }
$this->line = 1;
$this->smarty = $compiler->smarty;
$this->compiler = $compiler;
- $this->ldel = preg_quote($this->smarty->left_delimiter,'/');
+ $this->ldel = preg_quote($this->smarty->left_delimiter, '/');
$this->ldel_length = strlen($this->smarty->left_delimiter);
- $this->rdel = preg_quote($this->smarty->right_delimiter,'/');
- $this->smarty_token_names['LDEL'] = $this->smarty->left_delimiter;
- $this->smarty_token_names['RDEL'] = $this->smarty->right_delimiter;
- $this->mbstring_overload = ini_get('mbstring.func_overload') & 2;
- }
+ $this->rdel = preg_quote($this->smarty->right_delimiter, '/');
+ $this->rdel_length = strlen($this->smarty->right_delimiter);
+ $this->smarty_token_names['LDEL'] = $this->smarty->left_delimiter;
+ $this->smarty_token_names['RDEL'] = $this->smarty->right_delimiter;
+ }
+ public function PrintTrace()
+ {
+ $this->yyTraceFILE = fopen('php://output', 'w');
+ $this->yyTracePrompt = '<br>';
+ }
private $_yy_state = 1;
private $_yy_stack = array();
- function yylex()
+ public function yylex()
{
return $this->{'yylex' . $this->_yy_state}();
}
- function yypushstate($state)
+ public function yypushstate($state)
{
+ if ($this->yyTraceFILE) {
+ fprintf($this->yyTraceFILE, "%sState push %s\n", $this->yyTracePrompt, isset($this->state_name[$this->_yy_state]) ? $this->state_name[$this->_yy_state] : $this->_yy_state);
+ }
array_push($this->_yy_stack, $this->_yy_state);
$this->_yy_state = $state;
+ if ($this->yyTraceFILE) {
+ fprintf($this->yyTraceFILE, "%snew State %s\n", $this->yyTracePrompt, isset($this->state_name[$this->_yy_state]) ? $this->state_name[$this->_yy_state] : $this->_yy_state);
+ }
}
- function yypopstate()
+ public function yypopstate()
{
+ if ($this->yyTraceFILE) {
+ fprintf($this->yyTraceFILE, "%sState pop %s\n", $this->yyTracePrompt, isset($this->state_name[$this->_yy_state]) ? $this->state_name[$this->_yy_state] : $this->_yy_state);
+ }
$this->_yy_state = array_pop($this->_yy_stack);
+ if ($this->yyTraceFILE) {
+ fprintf($this->yyTraceFILE, "%snew State %s\n", $this->yyTracePrompt, isset($this->state_name[$this->_yy_state]) ? $this->state_name[$this->_yy_state] : $this->_yy_state);
+ }
}
- function yybegin($state)
+ public function yybegin($state)
{
$this->_yy_state = $state;
+ if ($this->yyTraceFILE) {
+ fprintf($this->yyTraceFILE, "%sState set %s\n", $this->yyTracePrompt, isset($this->state_name[$this->_yy_state]) ? $this->state_name[$this->_yy_state] : $this->_yy_state);
+ }
}
-
-
- function yylex1()
- {
- $tokenMap = array (
- 1 => 0,
- 2 => 0,
- 3 => 1,
- 5 => 0,
- 6 => 0,
- 7 => 0,
- 8 => 0,
- 9 => 0,
- 10 => 0,
- 11 => 1,
- 13 => 0,
- 14 => 0,
- 15 => 0,
- 16 => 0,
- 17 => 0,
- 18 => 0,
- 19 => 0,
- 20 => 0,
- 21 => 0,
- 22 => 0,
- 23 => 0,
- );
- if ($this->counter >= ($this->mbstring_overload ? mb_strlen($this->data,'latin1'): strlen($this->data))) {
+ public function yylex1()
+ {
+ $tokenMap = array(
+ 1 => 0,
+ 2 => 1,
+ 4 => 0,
+ 5 => 0,
+ 6 => 0,
+ 7 => 1,
+ 9 => 0,
+ 10 => 0,
+ 11 => 0,
+ 12 => 0,
+ 13 => 0,
+ 14 => 2,
+ 17 => 0,
+ 18 => 0,
+ 19 => 0,
+ 20 => 0,
+ 21 => 0,
+ 22 => 0,
+ );
+ if ($this->counter >= strlen($this->data)) {
return false; // end of input
}
- $yy_global_pattern = "/\G(".$this->ldel."[$]smarty\\.block\\.child".$this->rdel.")|\G(\\{\\})|\G(".$this->ldel."\\*([\S\s]*?)\\*".$this->rdel.")|\G(".$this->ldel."strip".$this->rdel.")|\G(".$this->ldel."\\s{1,}strip\\s{1,}".$this->rdel.")|\G(".$this->ldel."\/strip".$this->rdel.")|\G(".$this->ldel."\\s{1,}\/strip\\s{1,}".$this->rdel.")|\G(".$this->ldel."\\s*literal\\s*".$this->rdel.")|\G(".$this->ldel."\\s{1,}\/)|\G(".$this->ldel."\\s*(if|elseif|else if|while)\\s+)|\G(".$this->ldel."\\s*for\\s+)|\G(".$this->ldel."\\s*foreach(?![^\s]))|\G(".$this->ldel."\\s*setfilter\\s+)|\G(".$this->ldel."\\s{1,})|\G(".$this->ldel."\/)|\G(".$this->ldel.")|\G(<\\?(?:php\\w+|=|[a-zA-Z]+)?)|\G(\\?>)|\G(<%)|\G(%>)|\G([\S\s])/iS";
+ $yy_global_pattern = "/\G(\\{\\})|\G(" . $this->ldel . "\\*([\S\s]*?)\\*" . $this->rdel . ")|\G(" . $this->ldel . "\\s*strip\\s*" . $this->rdel . ")|\G(" . $this->ldel . "\\s*\/strip\\s*" . $this->rdel . ")|\G(" . $this->ldel . "\\s*literal\\s*" . $this->rdel . ")|\G(" . $this->ldel . "\\s*(if|elseif|else if|while)\\s+)|\G(" . $this->ldel . "\\s*for\\s+)|\G(" . $this->ldel . "\\s*foreach(?![^\s]))|\G(" . $this->ldel . "\\s*setfilter\\s+)|\G(" . $this->ldel . "\\s*\/)|\G(" . $this->ldel . "\\s*)|\G((<script\\s+language\\s*=\\s*[\"']?\\s*php\\s*[\"']?\\s*>)|(<\\?(?:php\\w+|=|[a-zA-Z]+)?))|\G(\\?>)|\G(<\/script>)|\G(\\s*" . $this->rdel . ")|\G(<%)|\G(%>)|\G([\S\s])/iS";
do {
- if ($this->mbstring_overload ? preg_match($yy_global_pattern, mb_substr($this->data, $this->counter,2000000000,'latin1'), $yymatches) : preg_match($yy_global_pattern,$this->data, $yymatches, null, $this->counter)) {
+ if (preg_match($yy_global_pattern, $this->data, $yymatches, null, $this->counter)) {
$yysubmatches = $yymatches;
$yymatches = array_filter($yymatches, 'strlen'); // remove empty sub-patterns
if (!count($yymatches)) {
throw new Exception('Error: lexing failed because a rule matched' .
- ' an empty string. Input "' . substr($this->data,
- $this->counter, 5) . '... state TEXT');
+ ' an empty string. Input "' . substr($this->data,
+ $this->counter, 5) . '... state TEXT');
}
next($yymatches); // skip global match
$this->token = key($yymatches); // token number
if ($tokenMap[$this->token]) {
// extract sub-patterns for passing to lex function
$yysubmatches = array_slice($yysubmatches, $this->token + 1,
- $tokenMap[$this->token]);
+ $tokenMap[$this->token]);
} else {
$yysubmatches = array();
}
$this->value = current($yymatches); // token value
$r = $this->{'yy_r1_' . $this->token}($yysubmatches);
if ($r === null) {
- $this->counter += ($this->mbstring_overload ? mb_strlen($this->value,'latin1'): strlen($this->value));
+ $this->counter += strlen($this->value);
$this->line += substr_count($this->value, "\n");
// accept this token
return true;
@@ -177,300 +201,295 @@ class Smarty_Internal_Templatelexer
// process this token in the new state
return $this->yylex();
} elseif ($r === false) {
- $this->counter += ($this->mbstring_overload ? mb_strlen($this->value,'latin1'): strlen($this->value));
+ $this->counter += strlen($this->value);
$this->line += substr_count($this->value, "\n");
- if ($this->counter >= ($this->mbstring_overload ? mb_strlen($this->data,'latin1'): strlen($this->data))) {
+ if ($this->counter >= strlen($this->data)) {
return false; // end of input
}
// skip this token
continue;
- } } else {
+ }
+ } else {
throw new Exception('Unexpected input at line' . $this->line .
- ': ' . $this->data[$this->counter]);
+ ': ' . $this->data[$this->counter]);
}
break;
} while (true);
-
} // end function
-
const TEXT = 1;
+
function yy_r1_1($yy_subpatterns)
{
- $this->token = Smarty_Internal_Templateparser::TP_SMARTYBLOCKCHILD;
+ $this->token = Smarty_Internal_Templateparser::TP_TEXT;
}
+
function yy_r1_2($yy_subpatterns)
{
- $this->token = Smarty_Internal_Templateparser::TP_TEXT;
+ $this->token = Smarty_Internal_Templateparser::TP_COMMENT;
}
- function yy_r1_3($yy_subpatterns)
+
+ function yy_r1_4($yy_subpatterns)
{
- $this->token = Smarty_Internal_Templateparser::TP_COMMENT;
+ if ($this->smarty->auto_literal && isset($this->value[$this->ldel_length]) ? strpos(" \n\t\r", $this->value[$this->ldel_length]) !== false : false) {
+ $this->token = Smarty_Internal_Templateparser::TP_TEXT;
+ } else {
+ $this->token = Smarty_Internal_Templateparser::TP_STRIPON;
+ }
}
+
function yy_r1_5($yy_subpatterns)
{
- $this->token = Smarty_Internal_Templateparser::TP_STRIPON;
+ if ($this->smarty->auto_literal && isset($this->value[$this->ldel_length]) ? strpos(" \n\t\r", $this->value[$this->ldel_length]) !== false : false) {
+ $this->token = Smarty_Internal_Templateparser::TP_TEXT;
+ } else {
+ $this->token = Smarty_Internal_Templateparser::TP_STRIPOFF;
+ }
}
+
function yy_r1_6($yy_subpatterns)
{
- if ($this->smarty->auto_literal) {
- $this->token = Smarty_Internal_Templateparser::TP_TEXT;
- } else {
- $this->token = Smarty_Internal_Templateparser::TP_STRIPON;
- }
+ if ($this->smarty->auto_literal && isset($this->value[$this->ldel_length]) ? strpos(" \n\t\r", $this->value[$this->ldel_length]) !== false : false) {
+ $this->token = Smarty_Internal_Templateparser::TP_TEXT;
+ } else {
+ $this->token = Smarty_Internal_Templateparser::TP_LITERALSTART;
+ $this->yypushstate(self::LITERAL);
+ }
}
+
function yy_r1_7($yy_subpatterns)
{
- $this->token = Smarty_Internal_Templateparser::TP_STRIPOFF;
+ if ($this->smarty->auto_literal && isset($this->value[$this->ldel_length]) ? strpos(" \n\t\r", $this->value[$this->ldel_length]) !== false : false) {
+ $this->token = Smarty_Internal_Templateparser::TP_TEXT;
+ } else {
+ $this->token = Smarty_Internal_Templateparser::TP_LDELIF;
+ $this->yypushstate(self::SMARTY);
+ $this->taglineno = $this->line;
+ }
}
- function yy_r1_8($yy_subpatterns)
- {
- if ($this->smarty->auto_literal) {
- $this->token = Smarty_Internal_Templateparser::TP_TEXT;
- } else {
- $this->token = Smarty_Internal_Templateparser::TP_STRIPOFF;
- }
- }
function yy_r1_9($yy_subpatterns)
{
- $this->token = Smarty_Internal_Templateparser::TP_LITERALSTART;
- $this->yypushstate(self::LITERAL);
+ if ($this->smarty->auto_literal && isset($this->value[$this->ldel_length]) ? strpos(" \n\t\r", $this->value[$this->ldel_length]) !== false : false) {
+ $this->token = Smarty_Internal_Templateparser::TP_TEXT;
+ } else {
+ $this->token = Smarty_Internal_Templateparser::TP_LDELFOR;
+ $this->yypushstate(self::SMARTY);
+ $this->taglineno = $this->line;
+ }
}
+
function yy_r1_10($yy_subpatterns)
{
- if ($this->smarty->auto_literal) {
- $this->token = Smarty_Internal_Templateparser::TP_TEXT;
- } else {
- $this->token = Smarty_Internal_Templateparser::TP_LDELSLASH;
- $this->yypushstate(self::SMARTY);
- $this->taglineno = $this->line;
- }
+ if ($this->smarty->auto_literal && isset($this->value[$this->ldel_length]) ? strpos(" \n\t\r", $this->value[$this->ldel_length]) !== false : false) {
+ $this->token = Smarty_Internal_Templateparser::TP_TEXT;
+ } else {
+ $this->token = Smarty_Internal_Templateparser::TP_LDELFOREACH;
+ $this->yypushstate(self::SMARTY);
+ $this->taglineno = $this->line;
+ }
}
+
function yy_r1_11($yy_subpatterns)
{
- if ($this->smarty->auto_literal && trim(substr($this->value,$this->ldel_length,1)) == '') {
- $this->token = Smarty_Internal_Templateparser::TP_TEXT;
- } else {
- $this->token = Smarty_Internal_Templateparser::TP_LDELIF;
- $this->yypushstate(self::SMARTY);
- $this->taglineno = $this->line;
- }
+ if ($this->smarty->auto_literal && isset($this->value[$this->ldel_length]) ? strpos(" \n\t\r", $this->value[$this->ldel_length]) !== false : false) {
+ $this->token = Smarty_Internal_Templateparser::TP_TEXT;
+ } else {
+ $this->token = Smarty_Internal_Templateparser::TP_LDELSETFILTER;
+ $this->yypushstate(self::SMARTY);
+ $this->taglineno = $this->line;
+ }
}
- function yy_r1_13($yy_subpatterns)
- {
- if ($this->smarty->auto_literal && trim(substr($this->value,$this->ldel_length,1)) == '') {
- $this->token = Smarty_Internal_Templateparser::TP_TEXT;
- } else {
- $this->token = Smarty_Internal_Templateparser::TP_LDELFOR;
- $this->yypushstate(self::SMARTY);
- $this->taglineno = $this->line;
- }
- }
- function yy_r1_14($yy_subpatterns)
+ function yy_r1_12($yy_subpatterns)
{
- if ($this->smarty->auto_literal && trim(substr($this->value,$this->ldel_length,1)) == '') {
- $this->token = Smarty_Internal_Templateparser::TP_TEXT;
- } else {
- $this->token = Smarty_Internal_Templateparser::TP_LDELFOREACH;
- $this->yypushstate(self::SMARTY);
- $this->taglineno = $this->line;
- }
+ if ($this->smarty->auto_literal && isset($this->value[$this->ldel_length]) ? strpos(" \n\t\r", $this->value[$this->ldel_length]) !== false : false) {
+ $this->token = Smarty_Internal_Templateparser::TP_TEXT;
+ } else {
+ $this->token = Smarty_Internal_Templateparser::TP_LDELSLASH;
+ $this->yypushstate(self::SMARTY);
+ $this->taglineno = $this->line;
+ }
}
- function yy_r1_15($yy_subpatterns)
+
+ function yy_r1_13($yy_subpatterns)
{
- if ($this->smarty->auto_literal && trim(substr($this->value,$this->ldel_length,1)) == '') {
- $this->token = Smarty_Internal_Templateparser::TP_TEXT;
- } else {
- $this->token = Smarty_Internal_Templateparser::TP_LDELSETFILTER;
- $this->yypushstate(self::SMARTY);
- $this->taglineno = $this->line;
- }
+ if ($this->smarty->auto_literal && isset($this->value[$this->ldel_length]) ? strpos(" \n\t\r", $this->value[$this->ldel_length]) !== false : false) {
+ $this->token = Smarty_Internal_Templateparser::TP_TEXT;
+ } else {
+ $this->token = Smarty_Internal_Templateparser::TP_LDEL;
+ $this->yypushstate(self::SMARTY);
+ $this->taglineno = $this->line;
+ }
}
- function yy_r1_16($yy_subpatterns)
+
+ function yy_r1_14($yy_subpatterns)
{
- if ($this->smarty->auto_literal) {
- $this->token = Smarty_Internal_Templateparser::TP_TEXT;
- } else {
- $this->token = Smarty_Internal_Templateparser::TP_LDEL;
- $this->yypushstate(self::SMARTY);
- $this->taglineno = $this->line;
- }
+ if (($script = strpos($this->value, '<s') === 0) || in_array($this->value, Array('<?', '<?=', '<?php'))) {
+ if ($script) {
+ $this->is_phpScript = true;
+ }
+ $this->token = Smarty_Internal_Templateparser::TP_PHPSTARTTAG;
+ } elseif ($this->value == '<?xml') {
+ $this->token = Smarty_Internal_Templateparser::TP_XMLTAG;
+ } else {
+ $this->token = Smarty_Internal_Templateparser::TP_TEXT;
+ //$this->value = substr($this->value, 0, 2);
+ }
}
+
function yy_r1_17($yy_subpatterns)
{
- $this->token = Smarty_Internal_Templateparser::TP_LDELSLASH;
- $this->yypushstate(self::SMARTY);
- $this->taglineno = $this->line;
+ $this->token = Smarty_Internal_Templateparser::TP_PHPENDTAG;
}
+
function yy_r1_18($yy_subpatterns)
{
- $this->token = Smarty_Internal_Templateparser::TP_LDEL;
- $this->yypushstate(self::SMARTY);
- $this->taglineno = $this->line;
+ $this->token = Smarty_Internal_Templateparser::TP_PHPENDSCRIPT;
}
+
function yy_r1_19($yy_subpatterns)
{
- if (in_array($this->value, Array('<?', '<?=', '<?php'))) {
- $this->token = Smarty_Internal_Templateparser::TP_PHPSTARTTAG;
- } elseif ($this->value == '<?xml') {
- $this->token = Smarty_Internal_Templateparser::TP_XMLTAG;
- } else {
- $this->token = Smarty_Internal_Templateparser::TP_FAKEPHPSTARTTAG;
- $this->value = substr($this->value, 0, 2);
- }
- }
+ $this->token = Smarty_Internal_Templateparser::TP_TEXT;
+ }
+
function yy_r1_20($yy_subpatterns)
{
- $this->token = Smarty_Internal_Templateparser::TP_PHPENDTAG;
+ $this->token = Smarty_Internal_Templateparser::TP_ASPSTARTTAG;
}
+
function yy_r1_21($yy_subpatterns)
{
- $this->token = Smarty_Internal_Templateparser::TP_ASPSTARTTAG;
+ $this->token = Smarty_Internal_Templateparser::TP_ASPENDTAG;
}
+
function yy_r1_22($yy_subpatterns)
{
- $this->token = Smarty_Internal_Templateparser::TP_ASPENDTAG;
- }
- function yy_r1_23($yy_subpatterns)
- {
-
- if ($this->mbstring_overload) {
- $to = mb_strlen($this->data,'latin1');
- } else {
- $to = strlen($this->data);
- }
- preg_match("/{$this->ldel}|<\?|\?>|<%|%>/",$this->data,$match,PREG_OFFSET_CAPTURE,$this->counter);
- if (isset($match[0][1])) {
- $to = $match[0][1];
- }
- if ($this->mbstring_overload) {
- $this->value = mb_substr($this->data,$this->counter,$to-$this->counter,'latin1');
- } else {
- $this->value = substr($this->data,$this->counter,$to-$this->counter);
- }
- $this->token = Smarty_Internal_Templateparser::TP_TEXT;
- }
-
-
- function yylex2()
- {
- $tokenMap = array (
- 1 => 0,
- 2 => 0,
- 3 => 1,
- 5 => 0,
- 6 => 0,
- 7 => 0,
- 8 => 0,
- 9 => 0,
- 10 => 0,
- 11 => 0,
- 12 => 0,
- 13 => 0,
- 14 => 0,
- 15 => 0,
- 16 => 0,
- 17 => 0,
- 18 => 0,
- 19 => 0,
- 20 => 1,
- 22 => 1,
- 24 => 1,
- 26 => 0,
- 27 => 0,
- 28 => 0,
- 29 => 0,
- 30 => 0,
- 31 => 0,
- 32 => 0,
- 33 => 0,
- 34 => 0,
- 35 => 0,
- 36 => 0,
- 37 => 0,
- 38 => 0,
- 39 => 0,
- 40 => 0,
- 41 => 0,
- 42 => 0,
- 43 => 3,
- 47 => 0,
- 48 => 0,
- 49 => 0,
- 50 => 0,
- 51 => 0,
- 52 => 0,
- 53 => 0,
- 54 => 0,
- 55 => 1,
- 57 => 1,
- 59 => 0,
- 60 => 0,
- 61 => 0,
- 62 => 0,
- 63 => 0,
- 64 => 0,
- 65 => 0,
- 66 => 0,
- 67 => 0,
- 68 => 0,
- 69 => 0,
- 70 => 0,
- 71 => 0,
- 72 => 0,
- 73 => 0,
- 74 => 0,
- 75 => 0,
- 76 => 0,
- 77 => 0,
- );
- if ($this->counter >= ($this->mbstring_overload ? mb_strlen($this->data,'latin1'): strlen($this->data))) {
+ $phpEndScript = $this->is_phpScript ? '|<\\/script>' : '';
+ $to = strlen($this->data);
+ preg_match("/{$this->ldel}|<\?|<%|\?>|%>|<script\s+language\s*=\s*[\"\']?\s*php\s*[\"\']?\s*>{$phpEndScript}/", $this->data, $match, PREG_OFFSET_CAPTURE, $this->counter);
+ if (isset($match[0][1])) {
+ $to = $match[0][1];
+ }
+ $this->value = substr($this->data, $this->counter, $to - $this->counter);
+ $this->token = Smarty_Internal_Templateparser::TP_TEXT;
+ }
+
+ public function yylex2()
+ {
+ $tokenMap = array(
+ 1 => 0,
+ 2 => 0,
+ 3 => 1,
+ 5 => 0,
+ 6 => 0,
+ 7 => 0,
+ 8 => 0,
+ 9 => 0,
+ 10 => 0,
+ 11 => 0,
+ 12 => 0,
+ 13 => 0,
+ 14 => 0,
+ 15 => 1,
+ 17 => 1,
+ 19 => 1,
+ 21 => 0,
+ 22 => 0,
+ 23 => 0,
+ 24 => 0,
+ 25 => 0,
+ 26 => 0,
+ 27 => 0,
+ 28 => 0,
+ 29 => 0,
+ 30 => 0,
+ 31 => 0,
+ 32 => 0,
+ 33 => 0,
+ 34 => 0,
+ 35 => 0,
+ 36 => 0,
+ 37 => 0,
+ 38 => 3,
+ 42 => 0,
+ 43 => 0,
+ 44 => 0,
+ 45 => 0,
+ 46 => 0,
+ 47 => 0,
+ 48 => 0,
+ 49 => 0,
+ 50 => 1,
+ 52 => 1,
+ 54 => 0,
+ 55 => 0,
+ 56 => 0,
+ 57 => 0,
+ 58 => 0,
+ 59 => 0,
+ 60 => 0,
+ 61 => 0,
+ 62 => 0,
+ 63 => 0,
+ 64 => 0,
+ 65 => 0,
+ 66 => 0,
+ 67 => 0,
+ 68 => 0,
+ 69 => 0,
+ 70 => 1,
+ 72 => 0,
+ 73 => 0,
+ 74 => 0,
+ 75 => 0,
+ 76 => 0,
+ );
+ if ($this->counter >= strlen($this->data)) {
return false; // end of input
}
- $yy_global_pattern = "/\G('[^'\\\\]*(?:\\\\.[^'\\\\]*)*')|\G(".$this->ldel."\\s{1,}\/)|\G(".$this->ldel."\\s*(if|elseif|else if|while)\\s+)|\G(".$this->ldel."\\s*for\\s+)|\G(".$this->ldel."\\s*foreach(?![^\s]))|\G(".$this->ldel."\\s{1,})|\G(\\s{1,}".$this->rdel.")|\G(".$this->ldel."\/)|\G(".$this->ldel.")|\G(".$this->rdel.")|\G(\\s+is\\s+in\\s+)|\G(\\s+as\\s+)|\G(\\s+to\\s+)|\G(\\s+step\\s+)|\G(\\s+instanceof\\s+)|\G(\\s*===\\s*)|\G(\\s*!==\\s*)|\G(\\s*==\\s*|\\s+eq\\s+)|\G(\\s*!=\\s*|\\s*<>\\s*|\\s+(ne|neq)\\s+)|\G(\\s*>=\\s*|\\s+(ge|gte)\\s+)|\G(\\s*<=\\s*|\\s+(le|lte)\\s+)|\G(\\s*>\\s*|\\s+gt\\s+)|\G(\\s*<\\s*|\\s+lt\\s+)|\G(\\s+mod\\s+)|\G(!\\s*|not\\s+)|\G(\\s*&&\\s*|\\s*and\\s+)|\G(\\s*\\|\\|\\s*|\\s*or\\s+)|\G(\\s*xor\\s+)|\G(\\s+is\\s+odd\\s+by\\s+)|\G(\\s+is\\s+not\\s+odd\\s+by\\s+)|\G(\\s+is\\s+odd)|\G(\\s+is\\s+not\\s+odd)|\G(\\s+is\\s+even\\s+by\\s+)|\G(\\s+is\\s+not\\s+even\\s+by\\s+)|\G(\\s+is\\s+even)|\G(\\s+is\\s+not\\s+even)|\G(\\s+is\\s+div\\s+by\\s+)|\G(\\s+is\\s+not\\s+div\\s+by\\s+)|\G(\\((int(eger)?|bool(ean)?|float|double|real|string|binary|array|object)\\)\\s*)|\G(\\s*\\(\\s*)|\G(\\s*\\))|\G(\\[\\s*)|\G(\\s*\\])|\G(\\s*->\\s*)|\G(\\s*=>\\s*)|\G(\\s*=\\s*)|\G(\\+\\+|--)|\G(\\s*(\\+|-)\\s*)|\G(\\s*(\\*|\/|%)\\s*)|\G(\\$)|\G(\\s*;)|\G(::)|\G(\\s*:\\s*)|\G(@)|\G(#)|\G(\")|\G(`)|\G(\\|)|\G(\\.)|\G(\\s*,\\s*)|\G(\\s*&\\s*)|\G(\\s*\\?\\s*)|\G(0[xX][0-9a-fA-F]+)|\G(\\s+[0-9]*[a-zA-Z_][a-zA-Z0-9_\-:]*\\s?=\\s?)|\G([0-9]*[a-zA-Z_]\\w*)|\G(\\d+)|\G(\\s+)|\G([\S\s])/iS";
+ $yy_global_pattern = "/\G(\")|\G('[^'\\\\]*(?:\\\\.[^'\\\\]*)*')|\G([$]smarty\\.block\\.(child|parent))|\G(\\$)|\G(\\s*" . $this->rdel . ")|\G(\\s+is\\s+in\\s+)|\G(\\s+as\\s+)|\G(\\s+to\\s+)|\G(\\s+step\\s+)|\G(\\s+instanceof\\s+)|\G(\\s*===\\s*)|\G(\\s*!==\\s*)|\G(\\s*==\\s*|\\s+eq\\s+)|\G(\\s*!=\\s*|\\s*<>\\s*|\\s+(ne|neq)\\s+)|\G(\\s*>=\\s*|\\s+(ge|gte)\\s+)|\G(\\s*<=\\s*|\\s+(le|lte)\\s+)|\G(\\s*>\\s*|\\s+gt\\s+)|\G(\\s*<\\s*|\\s+lt\\s+)|\G(\\s+mod\\s+)|\G(!\\s*|not\\s+)|\G(\\s*&&\\s*|\\s*and\\s+)|\G(\\s*\\|\\|\\s*|\\s*or\\s+)|\G(\\s*xor\\s+)|\G(\\s+is\\s+odd\\s+by\\s+)|\G(\\s+is\\s+not\\s+odd\\s+by\\s+)|\G(\\s+is\\s+odd)|\G(\\s+is\\s+not\\s+odd)|\G(\\s+is\\s+even\\s+by\\s+)|\G(\\s+is\\s+not\\s+even\\s+by\\s+)|\G(\\s+is\\s+even)|\G(\\s+is\\s+not\\s+even)|\G(\\s+is\\s+div\\s+by\\s+)|\G(\\s+is\\s+not\\s+div\\s+by\\s+)|\G(\\((int(eger)?|bool(ean)?|float|double|real|string|binary|array|object)\\)\\s*)|\G(\\s*\\(\\s*)|\G(\\s*\\))|\G(\\[\\s*)|\G(\\s*\\])|\G(\\s*->\\s*)|\G(\\s*=>\\s*)|\G(\\s*=\\s*)|\G(\\+\\+|--)|\G(\\s*(\\+|-)\\s*)|\G(\\s*(\\*|\/|%)\\s*)|\G(@)|\G(#)|\G(\\s+[0-9]*[a-zA-Z_][a-zA-Z0-9_\-:]*\\s*=\\s*)|\G([0-9]*[a-zA-Z_]\\w*)|\G(\\d+)|\G(`)|\G(\\|)|\G(\\.)|\G(\\s*,\\s*)|\G(\\s*;)|\G(::)|\G(\\s*:\\s*)|\G(\\s*&\\s*)|\G(\\s*\\?\\s*)|\G(0[xX][0-9a-fA-F]+)|\G(\\s+)|\G(" . $this->ldel . "\\s*(if|elseif|else if|while)\\s+)|\G(" . $this->ldel . "\\s*for\\s+)|\G(" . $this->ldel . "\\s*foreach(?![^\s]))|\G(" . $this->ldel . "\\s*\/)|\G(" . $this->ldel . "\\s*)|\G([\S\s])/iS";
do {
- if ($this->mbstring_overload ? preg_match($yy_global_pattern, mb_substr($this->data, $this->counter,2000000000,'latin1'), $yymatches) : preg_match($yy_global_pattern,$this->data, $yymatches, null, $this->counter)) {
+ if (preg_match($yy_global_pattern, $this->data, $yymatches, null, $this->counter)) {
$yysubmatches = $yymatches;
$yymatches = array_filter($yymatches, 'strlen'); // remove empty sub-patterns
if (!count($yymatches)) {
throw new Exception('Error: lexing failed because a rule matched' .
- ' an empty string. Input "' . substr($this->data,
- $this->counter, 5) . '... state SMARTY');
+ ' an empty string. Input "' . substr($this->data,
+ $this->counter, 5) . '... state SMARTY');
}
next($yymatches); // skip global match
$this->token = key($yymatches); // token number
if ($tokenMap[$this->token]) {
// extract sub-patterns for passing to lex function
$yysubmatches = array_slice($yysubmatches, $this->token + 1,
- $tokenMap[$this->token]);
+ $tokenMap[$this->token]);
} else {
$yysubmatches = array();
}
$this->value = current($yymatches); // token value
$r = $this->{'yy_r2_' . $this->token}($yysubmatches);
if ($r === null) {
- $this->counter += ($this->mbstring_overload ? mb_strlen($this->value,'latin1'): strlen($this->value));
+ $this->counter += strlen($this->value);
$this->line += substr_count($this->value, "\n");
// accept this token
return true;
@@ -479,443 +498,598 @@ class Smarty_Internal_Templatelexer
// process this token in the new state
return $this->yylex();
} elseif ($r === false) {
- $this->counter += ($this->mbstring_overload ? mb_strlen($this->value,'latin1'): strlen($this->value));
+ $this->counter += strlen($this->value);
$this->line += substr_count($this->value, "\n");
- if ($this->counter >= ($this->mbstring_overload ? mb_strlen($this->data,'latin1'): strlen($this->data))) {
+ if ($this->counter >= strlen($this->data)) {
return false; // end of input
}
// skip this token
continue;
- } } else {
+ }
+ } else {
throw new Exception('Unexpected input at line' . $this->line .
- ': ' . $this->data[$this->counter]);
+ ': ' . $this->data[$this->counter]);
}
break;
} while (true);
-
} // end function
-
const SMARTY = 2;
+
function yy_r2_1($yy_subpatterns)
{
- $this->token = Smarty_Internal_Templateparser::TP_SINGLEQUOTESTRING;
+ $this->token = Smarty_Internal_Templateparser::TP_QUOTE;
+ $this->yypushstate(self::DOUBLEQUOTEDSTRING);
}
+
function yy_r2_2($yy_subpatterns)
{
- if ($this->smarty->auto_literal) {
- $this->token = Smarty_Internal_Templateparser::TP_TEXT;
- } else {
- $this->token = Smarty_Internal_Templateparser::TP_LDELSLASH;
- $this->yypushstate(self::SMARTY);
- $this->taglineno = $this->line;
- }
+ $this->token = Smarty_Internal_Templateparser::TP_SINGLEQUOTESTRING;
}
+
function yy_r2_3($yy_subpatterns)
{
- if ($this->smarty->auto_literal && trim(substr($this->value,$this->ldel_length,1)) == '') {
- $this->token = Smarty_Internal_Templateparser::TP_TEXT;
- } else {
- $this->token = Smarty_Internal_Templateparser::TP_LDELIF;
- $this->yypushstate(self::SMARTY);
- $this->taglineno = $this->line;
- }
+ $this->token = Smarty_Internal_Templateparser::TP_SMARTYBLOCKCHILDPARENT;
+ $this->taglineno = $this->line;
}
+
function yy_r2_5($yy_subpatterns)
{
- if ($this->smarty->auto_literal && trim(substr($this->value,$this->ldel_length,1)) == '') {
- $this->token = Smarty_Internal_Templateparser::TP_TEXT;
- } else {
- $this->token = Smarty_Internal_Templateparser::TP_LDELFOR;
- $this->yypushstate(self::SMARTY);
- $this->taglineno = $this->line;
- }
+ $this->token = Smarty_Internal_Templateparser::TP_DOLLAR;
}
+
function yy_r2_6($yy_subpatterns)
{
- if ($this->smarty->auto_literal && trim(substr($this->value,$this->ldel_length,1)) == '') {
- $this->token = Smarty_Internal_Templateparser::TP_TEXT;
- } else {
- $this->token = Smarty_Internal_Templateparser::TP_LDELFOREACH;
- $this->yypushstate(self::SMARTY);
- $this->taglineno = $this->line;
- }
+ $this->token = Smarty_Internal_Templateparser::TP_RDEL;
+ $this->yypopstate();
}
+
function yy_r2_7($yy_subpatterns)
{
- if ($this->smarty->auto_literal) {
- $this->token = Smarty_Internal_Templateparser::TP_TEXT;
- } else {
- $this->token = Smarty_Internal_Templateparser::TP_LDEL;
- $this->yypushstate(self::SMARTY);
- $this->taglineno = $this->line;
- }
+ $this->token = Smarty_Internal_Templateparser::TP_ISIN;
}
+
function yy_r2_8($yy_subpatterns)
{
- $this->token = Smarty_Internal_Templateparser::TP_RDEL;
- $this->yypopstate();
+ $this->token = Smarty_Internal_Templateparser::TP_AS;
}
+
function yy_r2_9($yy_subpatterns)
{
- $this->token = Smarty_Internal_Templateparser::TP_LDELSLASH;
- $this->yypushstate(self::SMARTY);
- $this->taglineno = $this->line;
+ $this->token = Smarty_Internal_Templateparser::TP_TO;
}
+
function yy_r2_10($yy_subpatterns)
{
- $this->token = Smarty_Internal_Templateparser::TP_LDEL;
- $this->yypushstate(self::SMARTY);
- $this->taglineno = $this->line;
+ $this->token = Smarty_Internal_Templateparser::TP_STEP;
}
+
function yy_r2_11($yy_subpatterns)
{
- $this->token = Smarty_Internal_Templateparser::TP_RDEL;
- $this->yypopstate();
+ $this->token = Smarty_Internal_Templateparser::TP_INSTANCEOF;
}
+
function yy_r2_12($yy_subpatterns)
{
- $this->token = Smarty_Internal_Templateparser::TP_ISIN;
+ $this->token = Smarty_Internal_Templateparser::TP_IDENTITY;
}
+
function yy_r2_13($yy_subpatterns)
{
- $this->token = Smarty_Internal_Templateparser::TP_AS;
+ $this->token = Smarty_Internal_Templateparser::TP_NONEIDENTITY;
}
+
function yy_r2_14($yy_subpatterns)
{
- $this->token = Smarty_Internal_Templateparser::TP_TO;
+ $this->token = Smarty_Internal_Templateparser::TP_EQUALS;
}
+
function yy_r2_15($yy_subpatterns)
{
- $this->token = Smarty_Internal_Templateparser::TP_STEP;
+ $this->token = Smarty_Internal_Templateparser::TP_NOTEQUALS;
}
- function yy_r2_16($yy_subpatterns)
- {
- $this->token = Smarty_Internal_Templateparser::TP_INSTANCEOF;
- }
function yy_r2_17($yy_subpatterns)
{
- $this->token = Smarty_Internal_Templateparser::TP_IDENTITY;
+ $this->token = Smarty_Internal_Templateparser::TP_GREATEREQUAL;
}
- function yy_r2_18($yy_subpatterns)
- {
- $this->token = Smarty_Internal_Templateparser::TP_NONEIDENTITY;
- }
function yy_r2_19($yy_subpatterns)
{
- $this->token = Smarty_Internal_Templateparser::TP_EQUALS;
+ $this->token = Smarty_Internal_Templateparser::TP_LESSEQUAL;
}
- function yy_r2_20($yy_subpatterns)
+
+ function yy_r2_21($yy_subpatterns)
{
- $this->token = Smarty_Internal_Templateparser::TP_NOTEQUALS;
+ $this->token = Smarty_Internal_Templateparser::TP_GREATERTHAN;
}
+
function yy_r2_22($yy_subpatterns)
{
- $this->token = Smarty_Internal_Templateparser::TP_GREATEREQUAL;
+ $this->token = Smarty_Internal_Templateparser::TP_LESSTHAN;
+ }
+
+ function yy_r2_23($yy_subpatterns)
+ {
+
+ $this->token = Smarty_Internal_Templateparser::TP_MOD;
}
+
function yy_r2_24($yy_subpatterns)
{
- $this->token = Smarty_Internal_Templateparser::TP_LESSEQUAL;
+ $this->token = Smarty_Internal_Templateparser::TP_NOT;
+ }
+
+ function yy_r2_25($yy_subpatterns)
+ {
+
+ $this->token = Smarty_Internal_Templateparser::TP_LAND;
}
+
function yy_r2_26($yy_subpatterns)
{
- $this->token = Smarty_Internal_Templateparser::TP_GREATERTHAN;
+ $this->token = Smarty_Internal_Templateparser::TP_LOR;
}
+
function yy_r2_27($yy_subpatterns)
{
- $this->token = Smarty_Internal_Templateparser::TP_LESSTHAN;
+ $this->token = Smarty_Internal_Templateparser::TP_LXOR;
}
+
function yy_r2_28($yy_subpatterns)
{
- $this->token = Smarty_Internal_Templateparser::TP_MOD;
+ $this->token = Smarty_Internal_Templateparser::TP_ISODDBY;
}
+
function yy_r2_29($yy_subpatterns)
{
- $this->token = Smarty_Internal_Templateparser::TP_NOT;
+ $this->token = Smarty_Internal_Templateparser::TP_ISNOTODDBY;
}
+
function yy_r2_30($yy_subpatterns)
{
- $this->token = Smarty_Internal_Templateparser::TP_LAND;
+ $this->token = Smarty_Internal_Templateparser::TP_ISODD;
}
+
function yy_r2_31($yy_subpatterns)
{
- $this->token = Smarty_Internal_Templateparser::TP_LOR;
+ $this->token = Smarty_Internal_Templateparser::TP_ISNOTODD;
}
+
function yy_r2_32($yy_subpatterns)
{
- $this->token = Smarty_Internal_Templateparser::TP_LXOR;
+ $this->token = Smarty_Internal_Templateparser::TP_ISEVENBY;
}
+
function yy_r2_33($yy_subpatterns)
{
- $this->token = Smarty_Internal_Templateparser::TP_ISODDBY;
+ $this->token = Smarty_Internal_Templateparser::TP_ISNOTEVENBY;
}
+
function yy_r2_34($yy_subpatterns)
{
- $this->token = Smarty_Internal_Templateparser::TP_ISNOTODDBY;
+ $this->token = Smarty_Internal_Templateparser::TP_ISEVEN;
}
+
function yy_r2_35($yy_subpatterns)
{
- $this->token = Smarty_Internal_Templateparser::TP_ISODD;
+ $this->token = Smarty_Internal_Templateparser::TP_ISNOTEVEN;
}
+
function yy_r2_36($yy_subpatterns)
{
- $this->token = Smarty_Internal_Templateparser::TP_ISNOTODD;
+ $this->token = Smarty_Internal_Templateparser::TP_ISDIVBY;
}
+
function yy_r2_37($yy_subpatterns)
{
- $this->token = Smarty_Internal_Templateparser::TP_ISEVENBY;
+ $this->token = Smarty_Internal_Templateparser::TP_ISNOTDIVBY;
}
+
function yy_r2_38($yy_subpatterns)
{
- $this->token = Smarty_Internal_Templateparser::TP_ISNOTEVENBY;
+ $this->token = Smarty_Internal_Templateparser::TP_TYPECAST;
}
- function yy_r2_39($yy_subpatterns)
+
+ function yy_r2_42($yy_subpatterns)
{
- $this->token = Smarty_Internal_Templateparser::TP_ISEVEN;
+ $this->token = Smarty_Internal_Templateparser::TP_OPENP;
}
- function yy_r2_40($yy_subpatterns)
+
+ function yy_r2_43($yy_subpatterns)
{
- $this->token = Smarty_Internal_Templateparser::TP_ISNOTEVEN;
+ $this->token = Smarty_Internal_Templateparser::TP_CLOSEP;
}
- function yy_r2_41($yy_subpatterns)
+
+ function yy_r2_44($yy_subpatterns)
{
- $this->token = Smarty_Internal_Templateparser::TP_ISDIVBY;
+ $this->token = Smarty_Internal_Templateparser::TP_OPENB;
}
- function yy_r2_42($yy_subpatterns)
+
+ function yy_r2_45($yy_subpatterns)
{
- $this->token = Smarty_Internal_Templateparser::TP_ISNOTDIVBY;
+ $this->token = Smarty_Internal_Templateparser::TP_CLOSEB;
}
- function yy_r2_43($yy_subpatterns)
+
+ function yy_r2_46($yy_subpatterns)
{
- $this->token = Smarty_Internal_Templateparser::TP_TYPECAST;
+ $this->token = Smarty_Internal_Templateparser::TP_PTR;
}
+
function yy_r2_47($yy_subpatterns)
{
- $this->token = Smarty_Internal_Templateparser::TP_OPENP;
+ $this->token = Smarty_Internal_Templateparser::TP_APTR;
}
+
function yy_r2_48($yy_subpatterns)
{
- $this->token = Smarty_Internal_Templateparser::TP_CLOSEP;
+ $this->token = Smarty_Internal_Templateparser::TP_EQUAL;
}
+
function yy_r2_49($yy_subpatterns)
{
- $this->token = Smarty_Internal_Templateparser::TP_OPENB;
+ $this->token = Smarty_Internal_Templateparser::TP_INCDEC;
}
+
function yy_r2_50($yy_subpatterns)
{
- $this->token = Smarty_Internal_Templateparser::TP_CLOSEB;
+ $this->token = Smarty_Internal_Templateparser::TP_UNIMATH;
}
- function yy_r2_51($yy_subpatterns)
- {
- $this->token = Smarty_Internal_Templateparser::TP_PTR;
- }
function yy_r2_52($yy_subpatterns)
{
- $this->token = Smarty_Internal_Templateparser::TP_APTR;
+ $this->token = Smarty_Internal_Templateparser::TP_MATH;
}
- function yy_r2_53($yy_subpatterns)
- {
- $this->token = Smarty_Internal_Templateparser::TP_EQUAL;
- }
function yy_r2_54($yy_subpatterns)
{
- $this->token = Smarty_Internal_Templateparser::TP_INCDEC;
+ $this->token = Smarty_Internal_Templateparser::TP_AT;
}
+
function yy_r2_55($yy_subpatterns)
{
- $this->token = Smarty_Internal_Templateparser::TP_UNIMATH;
+ $this->token = Smarty_Internal_Templateparser::TP_HATCH;
}
+
+ function yy_r2_56($yy_subpatterns)
+ {
+
+ // resolve conflicts with shorttag and right_delimiter starting with '='
+ if (substr($this->data, $this->counter + strlen($this->value) - 1, $this->rdel_length) == $this->smarty->right_delimiter) {
+ preg_match("/\s+/", $this->value, $match);
+ $this->value = $match[0];
+ $this->token = Smarty_Internal_Templateparser::TP_SPACE;
+ } else {
+ $this->token = Smarty_Internal_Templateparser::TP_ATTR;
+ }
+ }
+
function yy_r2_57($yy_subpatterns)
{
- $this->token = Smarty_Internal_Templateparser::TP_MATH;
+ $this->token = Smarty_Internal_Templateparser::TP_ID;
+ }
+
+ function yy_r2_58($yy_subpatterns)
+ {
+
+ $this->token = Smarty_Internal_Templateparser::TP_INTEGER;
}
+
function yy_r2_59($yy_subpatterns)
{
- $this->token = Smarty_Internal_Templateparser::TP_DOLLAR;
+ $this->token = Smarty_Internal_Templateparser::TP_BACKTICK;
+ $this->yypopstate();
}
+
function yy_r2_60($yy_subpatterns)
{
- $this->token = Smarty_Internal_Templateparser::TP_SEMICOLON;
+ $this->token = Smarty_Internal_Templateparser::TP_VERT;
}
+
function yy_r2_61($yy_subpatterns)
{
- $this->token = Smarty_Internal_Templateparser::TP_DOUBLECOLON;
+ $this->token = Smarty_Internal_Templateparser::TP_DOT;
}
+
function yy_r2_62($yy_subpatterns)
{
- $this->token = Smarty_Internal_Templateparser::TP_COLON;
+ $this->token = Smarty_Internal_Templateparser::TP_COMMA;
}
+
function yy_r2_63($yy_subpatterns)
{
- $this->token = Smarty_Internal_Templateparser::TP_AT;
+ $this->token = Smarty_Internal_Templateparser::TP_SEMICOLON;
}
+
function yy_r2_64($yy_subpatterns)
{
- $this->token = Smarty_Internal_Templateparser::TP_HATCH;
+ $this->token = Smarty_Internal_Templateparser::TP_DOUBLECOLON;
}
+
function yy_r2_65($yy_subpatterns)
{
- $this->token = Smarty_Internal_Templateparser::TP_QUOTE;
- $this->yypushstate(self::DOUBLEQUOTEDSTRING);
+ $this->token = Smarty_Internal_Templateparser::TP_COLON;
}
+
function yy_r2_66($yy_subpatterns)
{
- $this->token = Smarty_Internal_Templateparser::TP_BACKTICK;
- $this->yypopstate();
+ $this->token = Smarty_Internal_Templateparser::TP_ANDSYM;
}
+
function yy_r2_67($yy_subpatterns)
{
- $this->token = Smarty_Internal_Templateparser::TP_VERT;
+ $this->token = Smarty_Internal_Templateparser::TP_QMARK;
}
+
function yy_r2_68($yy_subpatterns)
{
- $this->token = Smarty_Internal_Templateparser::TP_DOT;
+ $this->token = Smarty_Internal_Templateparser::TP_HEX;
}
+
function yy_r2_69($yy_subpatterns)
{
- $this->token = Smarty_Internal_Templateparser::TP_COMMA;
+ $this->token = Smarty_Internal_Templateparser::TP_SPACE;
}
+
function yy_r2_70($yy_subpatterns)
{
- $this->token = Smarty_Internal_Templateparser::TP_ANDSYM;
+ if ($this->smarty->auto_literal && isset($this->value[$this->ldel_length]) ? strpos(" \n\t\r", $this->value[$this->ldel_length]) !== false : false) {
+ $this->token = Smarty_Internal_Templateparser::TP_TEXT;
+ } else {
+ $this->token = Smarty_Internal_Templateparser::TP_LDELIF;
+ $this->yypushstate(self::SMARTY);
+ $this->taglineno = $this->line;
+ }
}
- function yy_r2_71($yy_subpatterns)
- {
- $this->token = Smarty_Internal_Templateparser::TP_QMARK;
- }
function yy_r2_72($yy_subpatterns)
{
- $this->token = Smarty_Internal_Templateparser::TP_HEX;
+ if ($this->smarty->auto_literal && isset($this->value[$this->ldel_length]) ? strpos(" \n\t\r", $this->value[$this->ldel_length]) !== false : false) {
+ $this->token = Smarty_Internal_Templateparser::TP_TEXT;
+ } else {
+ $this->token = Smarty_Internal_Templateparser::TP_LDELFOR;
+ $this->yypushstate(self::SMARTY);
+ $this->taglineno = $this->line;
+ }
}
+
function yy_r2_73($yy_subpatterns)
{
- $this->token = Smarty_Internal_Templateparser::TP_ATTR;
+ if ($this->smarty->auto_literal && isset($this->value[$this->ldel_length]) ? strpos(" \n\t\r", $this->value[$this->ldel_length]) !== false : false) {
+ $this->token = Smarty_Internal_Templateparser::TP_TEXT;
+ } else {
+ $this->token = Smarty_Internal_Templateparser::TP_LDELFOREACH;
+ $this->yypushstate(self::SMARTY);
+ $this->taglineno = $this->line;
+ }
}
+
function yy_r2_74($yy_subpatterns)
{
- $this->token = Smarty_Internal_Templateparser::TP_ID;
+ if ($this->smarty->auto_literal && isset($this->value[$this->ldel_length]) ? strpos(" \n\t\r", $this->value[$this->ldel_length]) !== false : false) {
+ $this->token = Smarty_Internal_Templateparser::TP_TEXT;
+ } else {
+ $this->token = Smarty_Internal_Templateparser::TP_LDELSLASH;
+ $this->yypushstate(self::SMARTY);
+ $this->taglineno = $this->line;
+ }
}
+
function yy_r2_75($yy_subpatterns)
{
- $this->token = Smarty_Internal_Templateparser::TP_INTEGER;
+ if ($this->smarty->auto_literal && isset($this->value[$this->ldel_length]) ? strpos(" \n\t\r", $this->value[$this->ldel_length]) !== false : false) {
+ $this->token = Smarty_Internal_Templateparser::TP_TEXT;
+ } else {
+ $this->token = Smarty_Internal_Templateparser::TP_LDEL;
+ $this->yypushstate(self::SMARTY);
+ $this->taglineno = $this->line;
+ }
}
+
function yy_r2_76($yy_subpatterns)
{
- $this->token = Smarty_Internal_Templateparser::TP_SPACE;
+ $this->token = Smarty_Internal_Templateparser::TP_TEXT;
}
- function yy_r2_77($yy_subpatterns)
+
+ public function yylex3()
{
+ $tokenMap = array(
+ 1 => 0,
+ 2 => 0,
+ 3 => 0,
+ );
+ if ($this->counter >= strlen($this->data)) {
+ return false; // end of input
+ }
+ $yy_global_pattern = "/\G(" . $this->ldel . "\\s*literal\\s*" . $this->rdel . ")|\G(" . $this->ldel . "\\s*\/literal\\s*" . $this->rdel . ")|\G([\S\s])/iS";
- $this->token = Smarty_Internal_Templateparser::TP_TEXT;
+ do {
+ if (preg_match($yy_global_pattern, $this->data, $yymatches, null, $this->counter)) {
+ $yysubmatches = $yymatches;
+ $yymatches = array_filter($yymatches, 'strlen'); // remove empty sub-patterns
+ if (!count($yymatches)) {
+ throw new Exception('Error: lexing failed because a rule matched' .
+ ' an empty string. Input "' . substr($this->data,
+ $this->counter, 5) . '... state LITERAL');
+ }
+ next($yymatches); // skip global match
+ $this->token = key($yymatches); // token number
+ if ($tokenMap[$this->token]) {
+ // extract sub-patterns for passing to lex function
+ $yysubmatches = array_slice($yysubmatches, $this->token + 1,
+ $tokenMap[$this->token]);
+ } else {
+ $yysubmatches = array();
+ }
+ $this->value = current($yymatches); // token value
+ $r = $this->{'yy_r3_' . $this->token}($yysubmatches);
+ if ($r === null) {
+ $this->counter += strlen($this->value);
+ $this->line += substr_count($this->value, "\n");
+ // accept this token
+ return true;
+ } elseif ($r === true) {
+ // we have changed state
+ // process this token in the new state
+ return $this->yylex();
+ } elseif ($r === false) {
+ $this->counter += strlen($this->value);
+ $this->line += substr_count($this->value, "\n");
+ if ($this->counter >= strlen($this->data)) {
+ return false; // end of input
+ }
+ // skip this token
+ continue;
+ }
+ } else {
+ throw new Exception('Unexpected input at line' . $this->line .
+ ': ' . $this->data[$this->counter]);
+ }
+ break;
+ } while (true);
+ } // end function
+
+ const LITERAL = 3;
+
+ function yy_r3_1($yy_subpatterns)
+ {
+
+ $this->literal_cnt ++;
+ $this->token = Smarty_Internal_Templateparser::TP_LITERAL;
}
+ function yy_r3_2($yy_subpatterns)
+ {
+ if ($this->literal_cnt) {
+ $this->literal_cnt --;
+ $this->token = Smarty_Internal_Templateparser::TP_LITERAL;
+ } else {
+ $this->token = Smarty_Internal_Templateparser::TP_LITERALEND;
+ $this->yypopstate();
+ }
+ }
- function yylex3()
+ function yy_r3_3($yy_subpatterns)
{
- $tokenMap = array (
- 1 => 0,
- 2 => 0,
- 3 => 0,
- 4 => 0,
- 5 => 0,
- 6 => 0,
- 7 => 0,
- );
- if ($this->counter >= ($this->mbstring_overload ? mb_strlen($this->data,'latin1'): strlen($this->data))) {
+
+ $to = strlen($this->data);
+ preg_match("/{$this->ldel}\/?literal{$this->rdel}/", $this->data, $match, PREG_OFFSET_CAPTURE, $this->counter);
+ if (isset($match[0][1])) {
+ $to = $match[0][1];
+ } else {
+ $this->compiler->trigger_template_error("missing or misspelled literal closing tag");
+ }
+ $this->value = substr($this->data, $this->counter, $to - $this->counter);
+ $this->token = Smarty_Internal_Templateparser::TP_LITERAL;
+ }
+
+ public function yylex4()
+ {
+ $tokenMap = array(
+ 1 => 1,
+ 3 => 0,
+ 4 => 0,
+ 5 => 0,
+ 6 => 0,
+ 7 => 0,
+ 8 => 0,
+ 9 => 0,
+ 10 => 0,
+ 11 => 0,
+ 12 => 0,
+ 13 => 3,
+ 17 => 0,
+ );
+ if ($this->counter >= strlen($this->data)) {
return false; // end of input
}
- $yy_global_pattern = "/\G(".$this->ldel."\\s*literal\\s*".$this->rdel.")|\G(".$this->ldel."\\s*\/literal\\s*".$this->rdel.")|\G(<\\?(?:php\\w+|=|[a-zA-Z]+)?)|\G(\\?>)|\G(<%)|\G(%>)|\G([\S\s])/iS";
+ $yy_global_pattern = "/\G(" . $this->ldel . "\\s*(if|elseif|else if|while)\\s+)|\G(" . $this->ldel . "\\s*for\\s+)|\G(" . $this->ldel . "\\s*foreach(?![^\s]))|\G(" . $this->ldel . "\\s*literal\\s*" . $this->rdel . ")|\G(" . $this->ldel . "\\s*\/literal\\s*" . $this->rdel . ")|\G(" . $this->ldel . "\\s*\/)|\G(" . $this->ldel . "\\s*)|\G(\")|\G(`\\$)|\G(\\$[0-9]*[a-zA-Z_]\\w*)|\G(\\$)|\G(([^\"\\\\]*?)((?:\\\\.[^\"\\\\]*?)*?)(?=(" . $this->ldel . "|\\$|`\\$|\")))|\G([\S\s])/iS";
do {
- if ($this->mbstring_overload ? preg_match($yy_global_pattern, mb_substr($this->data, $this->counter,2000000000,'latin1'), $yymatches) : preg_match($yy_global_pattern,$this->data, $yymatches, null, $this->counter)) {
+ if (preg_match($yy_global_pattern, $this->data, $yymatches, null, $this->counter)) {
$yysubmatches = $yymatches;
$yymatches = array_filter($yymatches, 'strlen'); // remove empty sub-patterns
if (!count($yymatches)) {
throw new Exception('Error: lexing failed because a rule matched' .
- ' an empty string. Input "' . substr($this->data,
- $this->counter, 5) . '... state LITERAL');
+ ' an empty string. Input "' . substr($this->data,
+ $this->counter, 5) . '... state DOUBLEQUOTEDSTRING');
}
next($yymatches); // skip global match
$this->token = key($yymatches); // token number
if ($tokenMap[$this->token]) {
// extract sub-patterns for passing to lex function
$yysubmatches = array_slice($yysubmatches, $this->token + 1,
- $tokenMap[$this->token]);
+ $tokenMap[$this->token]);
} else {
$yysubmatches = array();
}
$this->value = current($yymatches); // token value
- $r = $this->{'yy_r3_' . $this->token}($yysubmatches);
+ $r = $this->{'yy_r4_' . $this->token}($yysubmatches);
if ($r === null) {
- $this->counter += ($this->mbstring_overload ? mb_strlen($this->value,'latin1'): strlen($this->value));
+ $this->counter += strlen($this->value);
$this->line += substr_count($this->value, "\n");
// accept this token
return true;
@@ -924,128 +1098,173 @@ class Smarty_Internal_Templatelexer
// process this token in the new state
return $this->yylex();
} elseif ($r === false) {
- $this->counter += ($this->mbstring_overload ? mb_strlen($this->value,'latin1'): strlen($this->value));
+ $this->counter += strlen($this->value);
$this->line += substr_count($this->value, "\n");
- if ($this->counter >= ($this->mbstring_overload ? mb_strlen($this->data,'latin1'): strlen($this->data))) {
+ if ($this->counter >= strlen($this->data)) {
return false; // end of input
}
// skip this token
continue;
- } } else {
+ }
+ } else {
throw new Exception('Unexpected input at line' . $this->line .
- ': ' . $this->data[$this->counter]);
+ ': ' . $this->data[$this->counter]);
}
break;
} while (true);
-
} // end function
+ const DOUBLEQUOTEDSTRING = 4;
- const LITERAL = 3;
- function yy_r3_1($yy_subpatterns)
+ function yy_r4_1($yy_subpatterns)
{
- $this->token = Smarty_Internal_Templateparser::TP_LITERALSTART;
- $this->yypushstate(self::LITERAL);
+ if ($this->smarty->auto_literal && isset($this->value[$this->ldel_length]) ? strpos(" \n\t\r", $this->value[$this->ldel_length]) !== false : false) {
+ $this->token = Smarty_Internal_Templateparser::TP_TEXT;
+ } else {
+ $this->token = Smarty_Internal_Templateparser::TP_LDELIF;
+ $this->yypushstate(self::SMARTY);
+ $this->taglineno = $this->line;
+ }
}
- function yy_r3_2($yy_subpatterns)
+
+ function yy_r4_3($yy_subpatterns)
{
- $this->token = Smarty_Internal_Templateparser::TP_LITERALEND;
- $this->yypopstate();
+ if ($this->smarty->auto_literal && isset($this->value[$this->ldel_length]) ? strpos(" \n\t\r", $this->value[$this->ldel_length]) !== false : false) {
+ $this->token = Smarty_Internal_Templateparser::TP_TEXT;
+ } else {
+ $this->token = Smarty_Internal_Templateparser::TP_LDELFOR;
+ $this->yypushstate(self::SMARTY);
+ $this->taglineno = $this->line;
+ }
}
- function yy_r3_3($yy_subpatterns)
+
+ function yy_r4_4($yy_subpatterns)
+ {
+
+ if ($this->smarty->auto_literal && isset($this->value[$this->ldel_length]) ? strpos(" \n\t\r", $this->value[$this->ldel_length]) !== false : false) {
+ $this->token = Smarty_Internal_Templateparser::TP_TEXT;
+ } else {
+ $this->token = Smarty_Internal_Templateparser::TP_LDELFOREACH;
+ $this->yypushstate(self::SMARTY);
+ $this->taglineno = $this->line;
+ }
+ }
+
+ function yy_r4_5($yy_subpatterns)
+ {
+
+ $this->token = Smarty_Internal_Templateparser::TP_TEXT;
+ }
+
+ function yy_r4_6($yy_subpatterns)
+ {
+
+ $this->token = Smarty_Internal_Templateparser::TP_TEXT;
+ }
+
+ function yy_r4_7($yy_subpatterns)
+ {
+
+ if ($this->smarty->auto_literal && isset($this->value[$this->ldel_length]) ? strpos(" \n\t\r", $this->value[$this->ldel_length]) !== false : false) {
+ $this->token = Smarty_Internal_Templateparser::TP_TEXT;
+ } else {
+ $this->token = Smarty_Internal_Templateparser::TP_LDELSLASH;
+ $this->yypushstate(self::SMARTY);
+ $this->taglineno = $this->line;
+ }
+ }
+
+ function yy_r4_8($yy_subpatterns)
+ {
+
+ if ($this->smarty->auto_literal && isset($this->value[$this->ldel_length]) ? strpos(" \n\t\r", $this->value[$this->ldel_length]) !== false : false) {
+ $this->token = Smarty_Internal_Templateparser::TP_TEXT;
+ } else {
+ $this->token = Smarty_Internal_Templateparser::TP_LDEL;
+ $this->yypushstate(self::SMARTY);
+ $this->taglineno = $this->line;
+ }
+ }
+
+ function yy_r4_9($yy_subpatterns)
{
- if (in_array($this->value, Array('<?', '<?=', '<?php'))) {
- $this->token = Smarty_Internal_Templateparser::TP_PHPSTARTTAG;
- } else {
- $this->token = Smarty_Internal_Templateparser::TP_FAKEPHPSTARTTAG;
- $this->value = substr($this->value, 0, 2);
- }
+ $this->token = Smarty_Internal_Templateparser::TP_QUOTE;
+ $this->yypopstate();
}
- function yy_r3_4($yy_subpatterns)
+
+ function yy_r4_10($yy_subpatterns)
{
- $this->token = Smarty_Internal_Templateparser::TP_PHPENDTAG;
+ $this->token = Smarty_Internal_Templateparser::TP_BACKTICK;
+ $this->value = substr($this->value, 0, - 1);
+ $this->yypushstate(self::SMARTY);
+ $this->taglineno = $this->line;
}
- function yy_r3_5($yy_subpatterns)
+
+ function yy_r4_11($yy_subpatterns)
{
- $this->token = Smarty_Internal_Templateparser::TP_ASPSTARTTAG;
+ $this->token = Smarty_Internal_Templateparser::TP_DOLLARID;
}
- function yy_r3_6($yy_subpatterns)
+
+ function yy_r4_12($yy_subpatterns)
{
- $this->token = Smarty_Internal_Templateparser::TP_ASPENDTAG;
+ $this->token = Smarty_Internal_Templateparser::TP_TEXT;
}
- function yy_r3_7($yy_subpatterns)
+
+ function yy_r4_13($yy_subpatterns)
{
- if ($this->mbstring_overload) {
- $to = mb_strlen($this->data,'latin1');
- } else {
- $to = strlen($this->data);
- }
- preg_match("/{$this->ldel}\/?literal{$this->rdel}|<\?|<%|\?>|%>/",$this->data,$match,PREG_OFFSET_CAPTURE,$this->counter);
- if (isset($match[0][1])) {
- $to = $match[0][1];
- } else {
- $this->compiler->trigger_template_error ("missing or misspelled literal closing tag");
- }
- if ($this->mbstring_overload) {
- $this->value = mb_substr($this->data,$this->counter,$to-$this->counter,'latin1');
- } else {
- $this->value = substr($this->data,$this->counter,$to-$this->counter);
- }
- $this->token = Smarty_Internal_Templateparser::TP_LITERAL;
+ $this->token = Smarty_Internal_Templateparser::TP_TEXT;
}
+ function yy_r4_17($yy_subpatterns)
+ {
+
+ $to = strlen($this->data);
+ $this->value = substr($this->data, $this->counter, $to - $this->counter);
+ $this->token = Smarty_Internal_Templateparser::TP_TEXT;
+ }
- function yylex4()
+ public function yylex5()
{
- $tokenMap = array (
- 1 => 0,
- 2 => 1,
- 4 => 0,
- 5 => 0,
- 6 => 0,
- 7 => 0,
- 8 => 0,
- 9 => 0,
- 10 => 0,
- 11 => 0,
- 12 => 0,
- 13 => 3,
- 17 => 0,
- );
- if ($this->counter >= ($this->mbstring_overload ? mb_strlen($this->data,'latin1'): strlen($this->data))) {
+ $tokenMap = array(
+ 1 => 0,
+ 2 => 0,
+ 3 => 0,
+ 4 => 0,
+ );
+ if ($this->counter >= strlen($this->data)) {
return false; // end of input
}
- $yy_global_pattern = "/\G(".$this->ldel."\\s{1,}\/)|\G(".$this->ldel."\\s*(if|elseif|else if|while)\\s+)|\G(".$this->ldel."\\s*for\\s+)|\G(".$this->ldel."\\s*foreach(?![^\s]))|\G(".$this->ldel."\\s{1,})|\G(".$this->ldel."\/)|\G(".$this->ldel.")|\G(\")|\G(`\\$)|\G(\\$[0-9]*[a-zA-Z_]\\w*)|\G(\\$)|\G(([^\"\\\\]*?)((?:\\\\.[^\"\\\\]*?)*?)(?=(".$this->ldel."|\\$|`\\$|\")))|\G([\S\s])/iS";
+ $yy_global_pattern = "/\G(" . $this->ldel . "\\s*strip\\s*" . $this->rdel . ")|\G(" . $this->ldel . "\\s*\/strip\\s*" . $this->rdel . ")|\G(" . $this->ldel . "\\s*block)|\G([\S\s])/iS";
do {
- if ($this->mbstring_overload ? preg_match($yy_global_pattern, mb_substr($this->data, $this->counter,2000000000,'latin1'), $yymatches) : preg_match($yy_global_pattern,$this->data, $yymatches, null, $this->counter)) {
+ if (preg_match($yy_global_pattern, $this->data, $yymatches, null, $this->counter)) {
$yysubmatches = $yymatches;
$yymatches = array_filter($yymatches, 'strlen'); // remove empty sub-patterns
if (!count($yymatches)) {
throw new Exception('Error: lexing failed because a rule matched' .
- ' an empty string. Input "' . substr($this->data,
- $this->counter, 5) . '... state DOUBLEQUOTEDSTRING');
+ ' an empty string. Input "' . substr($this->data,
+ $this->counter, 5) . '... state CHILDBODY');
}
next($yymatches); // skip global match
$this->token = key($yymatches); // token number
if ($tokenMap[$this->token]) {
// extract sub-patterns for passing to lex function
$yysubmatches = array_slice($yysubmatches, $this->token + 1,
- $tokenMap[$this->token]);
+ $tokenMap[$this->token]);
} else {
$yysubmatches = array();
}
$this->value = current($yymatches); // token value
- $r = $this->{'yy_r4_' . $this->token}($yysubmatches);
+ $r = $this->{'yy_r5_' . $this->token}($yysubmatches);
if ($r === null) {
- $this->counter += ($this->mbstring_overload ? mb_strlen($this->value,'latin1'): strlen($this->value));
+ $this->counter += strlen($this->value);
$this->line += substr_count($this->value, "\n");
// accept this token
return true;
@@ -1054,137 +1273,280 @@ class Smarty_Internal_Templatelexer
// process this token in the new state
return $this->yylex();
} elseif ($r === false) {
- $this->counter += ($this->mbstring_overload ? mb_strlen($this->value,'latin1'): strlen($this->value));
+ $this->counter += strlen($this->value);
$this->line += substr_count($this->value, "\n");
- if ($this->counter >= ($this->mbstring_overload ? mb_strlen($this->data,'latin1'): strlen($this->data))) {
+ if ($this->counter >= strlen($this->data)) {
return false; // end of input
}
// skip this token
continue;
- } } else {
+ }
+ } else {
throw new Exception('Unexpected input at line' . $this->line .
- ': ' . $this->data[$this->counter]);
+ ': ' . $this->data[$this->counter]);
}
break;
} while (true);
-
} // end function
+ const CHILDBODY = 5;
- const DOUBLEQUOTEDSTRING = 4;
- function yy_r4_1($yy_subpatterns)
+ function yy_r5_1($yy_subpatterns)
{
- if ($this->smarty->auto_literal) {
- $this->token = Smarty_Internal_Templateparser::TP_TEXT;
- } else {
- $this->token = Smarty_Internal_Templateparser::TP_LDELSLASH;
- $this->yypushstate(self::SMARTY);
- $this->taglineno = $this->line;
- }
+ if ($this->smarty->auto_literal && isset($this->value[$this->ldel_length]) ? strpos(" \n\t\r", $this->value[$this->ldel_length]) !== false : false) {
+ return false;
+ } else {
+ $this->token = Smarty_Internal_Templateparser::TP_STRIPON;
+ }
}
- function yy_r4_2($yy_subpatterns)
+
+ function yy_r5_2($yy_subpatterns)
{
- if ($this->smarty->auto_literal && trim(substr($this->value,$this->ldel_length,1)) == '') {
- $this->token = Smarty_Internal_Templateparser::TP_TEXT;
- } else {
- $this->token = Smarty_Internal_Templateparser::TP_LDELIF;
- $this->yypushstate(self::SMARTY);
- $this->taglineno = $this->line;
- }
+ if ($this->smarty->auto_literal && isset($this->value[$this->ldel_length]) ? strpos(" \n\t\r", $this->value[$this->ldel_length]) !== false : false) {
+ return false;
+ } else {
+ $this->token = Smarty_Internal_Templateparser::TP_STRIPOFF;
+ }
}
- function yy_r4_4($yy_subpatterns)
+
+ function yy_r5_3($yy_subpatterns)
{
- if ($this->smarty->auto_literal && trim(substr($this->value,$this->ldel_length,1)) == '') {
- $this->token = Smarty_Internal_Templateparser::TP_TEXT;
- } else {
- $this->token = Smarty_Internal_Templateparser::TP_LDELFOR;
- $this->yypushstate(self::SMARTY);
- $this->taglineno = $this->line;
- }
+ if ($this->smarty->auto_literal && isset($this->value[$this->ldel_length]) ? strpos(" \n\t\r", $this->value[$this->ldel_length]) !== false : false) {
+ return false;
+ } else {
+ $this->yypopstate();
+ return true;
+ }
}
- function yy_r4_5($yy_subpatterns)
+
+ function yy_r5_4($yy_subpatterns)
{
- if ($this->smarty->auto_literal && trim(substr($this->value,$this->ldel_length,1)) == '') {
- $this->token = Smarty_Internal_Templateparser::TP_TEXT;
- } else {
- $this->token = Smarty_Internal_Templateparser::TP_LDELFOREACH;
- $this->yypushstate(self::SMARTY);
- $this->taglineno = $this->line;
- }
+ $to = strlen($this->data);
+ preg_match("/" . $this->ldel . "\s*((\/)?strip\s*" . $this->rdel . "|block\s+)/", $this->data, $match, PREG_OFFSET_CAPTURE, $this->counter);
+ if (isset($match[0][1])) {
+ $to = $match[0][1];
+ }
+ $this->value = substr($this->data, $this->counter, $to - $this->counter);
+ return false;
}
- function yy_r4_6($yy_subpatterns)
+
+ public function yylex6()
{
+ $tokenMap = array(
+ 1 => 0,
+ 2 => 0,
+ 3 => 0,
+ 4 => 1,
+ 6 => 0,
+ );
+ if ($this->counter >= strlen($this->data)) {
+ return false; // end of input
+ }
+ $yy_global_pattern = "/\G(" . $this->ldel . "\\s*literal\\s*" . $this->rdel . ")|\G(" . $this->ldel . "\\s*block)|\G(" . $this->ldel . "\\s*\/block)|\G(" . $this->ldel . "\\s*[$]smarty\\.block\\.(child|parent))|\G([\S\s])/iS";
- if ($this->smarty->auto_literal) {
- $this->token = Smarty_Internal_Templateparser::TP_TEXT;
- } else {
- $this->token = Smarty_Internal_Templateparser::TP_LDEL;
- $this->yypushstate(self::SMARTY);
- $this->taglineno = $this->line;
- }
- }
- function yy_r4_7($yy_subpatterns)
+ do {
+ if (preg_match($yy_global_pattern, $this->data, $yymatches, null, $this->counter)) {
+ $yysubmatches = $yymatches;
+ $yymatches = array_filter($yymatches, 'strlen'); // remove empty sub-patterns
+ if (!count($yymatches)) {
+ throw new Exception('Error: lexing failed because a rule matched' .
+ ' an empty string. Input "' . substr($this->data,
+ $this->counter, 5) . '... state CHILDBLOCK');
+ }
+ next($yymatches); // skip global match
+ $this->token = key($yymatches); // token number
+ if ($tokenMap[$this->token]) {
+ // extract sub-patterns for passing to lex function
+ $yysubmatches = array_slice($yysubmatches, $this->token + 1,
+ $tokenMap[$this->token]);
+ } else {
+ $yysubmatches = array();
+ }
+ $this->value = current($yymatches); // token value
+ $r = $this->{'yy_r6_' . $this->token}($yysubmatches);
+ if ($r === null) {
+ $this->counter += strlen($this->value);
+ $this->line += substr_count($this->value, "\n");
+ // accept this token
+ return true;
+ } elseif ($r === true) {
+ // we have changed state
+ // process this token in the new state
+ return $this->yylex();
+ } elseif ($r === false) {
+ $this->counter += strlen($this->value);
+ $this->line += substr_count($this->value, "\n");
+ if ($this->counter >= strlen($this->data)) {
+ return false; // end of input
+ }
+ // skip this token
+ continue;
+ }
+ } else {
+ throw new Exception('Unexpected input at line' . $this->line .
+ ': ' . $this->data[$this->counter]);
+ }
+ break;
+ } while (true);
+ } // end function
+
+ const CHILDBLOCK = 6;
+
+ function yy_r6_1($yy_subpatterns)
{
- $this->token = Smarty_Internal_Templateparser::TP_LDELSLASH;
- $this->yypushstate(self::SMARTY);
- $this->taglineno = $this->line;
+ if ($this->smarty->auto_literal && isset($this->value[$this->ldel_length]) ? strpos(" \n\t\r", $this->value[$this->ldel_length]) !== false : false) {
+ $this->token = Smarty_Internal_Templateparser::TP_BLOCKSOURCE;
+ } else {
+ $this->token = Smarty_Internal_Templateparser::TP_BLOCKSOURCE;
+ $this->yypushstate(self::CHILDLITERAL);
+ }
}
- function yy_r4_8($yy_subpatterns)
+
+ function yy_r6_2($yy_subpatterns)
{
- $this->token = Smarty_Internal_Templateparser::TP_LDEL;
- $this->yypushstate(self::SMARTY);
- $this->taglineno = $this->line;
+ if ($this->smarty->auto_literal && isset($this->value[$this->ldel_length]) ? strpos(" \n\t\r", $this->value[$this->ldel_length]) !== false : false) {
+ $this->token = Smarty_Internal_Templateparser::TP_BLOCKSOURCE;
+ } else {
+ $this->yypopstate();
+ return true;
+ }
}
- function yy_r4_9($yy_subpatterns)
+
+ function yy_r6_3($yy_subpatterns)
{
- $this->token = Smarty_Internal_Templateparser::TP_QUOTE;
- $this->yypopstate();
+ if ($this->smarty->auto_literal && isset($this->value[$this->ldel_length]) ? strpos(" \n\t\r", $this->value[$this->ldel_length]) !== false : false) {
+ $this->token = Smarty_Internal_Templateparser::TP_BLOCKSOURCE;
+ } else {
+ $this->yypopstate();
+ return true;
+ }
}
- function yy_r4_10($yy_subpatterns)
+
+ function yy_r6_4($yy_subpatterns)
{
- $this->token = Smarty_Internal_Templateparser::TP_BACKTICK;
- $this->value = substr($this->value,0,-1);
- $this->yypushstate(self::SMARTY);
- $this->taglineno = $this->line;
+ if ($this->smarty->auto_literal && isset($this->value[$this->ldel_length]) ? strpos(" \n\t\r", $this->value[$this->ldel_length]) !== false : false) {
+ $this->token = Smarty_Internal_Templateparser::TP_BLOCKSOURCE;
+ } else {
+ $this->yypopstate();
+ return true;
+ }
}
- function yy_r4_11($yy_subpatterns)
+
+ function yy_r6_6($yy_subpatterns)
{
- $this->token = Smarty_Internal_Templateparser::TP_DOLLARID;
+ $to = strlen($this->data);
+ preg_match("/" . $this->ldel . "\s*(literal\s*" . $this->rdel . "|(\/)?block(\s|" . $this->rdel . ")|[\$]smarty\.block\.(child|parent))/", $this->data, $match, PREG_OFFSET_CAPTURE, $this->counter);
+ if (isset($match[0][1])) {
+ $to = $match[0][1];
+ }
+ $this->value = substr($this->data, $this->counter, $to - $this->counter);
+ $this->token = Smarty_Internal_Templateparser::TP_BLOCKSOURCE;
}
- function yy_r4_12($yy_subpatterns)
+
+ public function yylex7()
{
+ $tokenMap = array(
+ 1 => 0,
+ 2 => 0,
+ 3 => 0,
+ );
+ if ($this->counter >= strlen($this->data)) {
+ return false; // end of input
+ }
+ $yy_global_pattern = "/\G(" . $this->ldel . "\\s*literal\\s*" . $this->rdel . ")|\G(" . $this->ldel . "\\s*\/literal\\s*" . $this->rdel . ")|\G([\S\s])/iS";
- $this->token = Smarty_Internal_Templateparser::TP_TEXT;
- }
- function yy_r4_13($yy_subpatterns)
+ do {
+ if (preg_match($yy_global_pattern, $this->data, $yymatches, null, $this->counter)) {
+ $yysubmatches = $yymatches;
+ $yymatches = array_filter($yymatches, 'strlen'); // remove empty sub-patterns
+ if (!count($yymatches)) {
+ throw new Exception('Error: lexing failed because a rule matched' .
+ ' an empty string. Input "' . substr($this->data,
+ $this->counter, 5) . '... state CHILDLITERAL');
+ }
+ next($yymatches); // skip global match
+ $this->token = key($yymatches); // token number
+ if ($tokenMap[$this->token]) {
+ // extract sub-patterns for passing to lex function
+ $yysubmatches = array_slice($yysubmatches, $this->token + 1,
+ $tokenMap[$this->token]);
+ } else {
+ $yysubmatches = array();
+ }
+ $this->value = current($yymatches); // token value
+ $r = $this->{'yy_r7_' . $this->token}($yysubmatches);
+ if ($r === null) {
+ $this->counter += strlen($this->value);
+ $this->line += substr_count($this->value, "\n");
+ // accept this token
+ return true;
+ } elseif ($r === true) {
+ // we have changed state
+ // process this token in the new state
+ return $this->yylex();
+ } elseif ($r === false) {
+ $this->counter += strlen($this->value);
+ $this->line += substr_count($this->value, "\n");
+ if ($this->counter >= strlen($this->data)) {
+ return false; // end of input
+ }
+ // skip this token
+ continue;
+ }
+ } else {
+ throw new Exception('Unexpected input at line' . $this->line .
+ ': ' . $this->data[$this->counter]);
+ }
+ break;
+ } while (true);
+ } // end function
+
+ const CHILDLITERAL = 7;
+
+ function yy_r7_1($yy_subpatterns)
{
- $this->token = Smarty_Internal_Templateparser::TP_TEXT;
+ if ($this->smarty->auto_literal && isset($this->value[$this->ldel_length]) ? strpos(" \n\t\r", $this->value[$this->ldel_length]) !== false : false) {
+ $this->token = Smarty_Internal_Templateparser::TP_BLOCKSOURCE;
+ } else {
+ $this->token = Smarty_Internal_Templateparser::TP_BLOCKSOURCE;
+ $this->yypushstate(self::CHILDLITERAL);
+ }
}
- function yy_r4_17($yy_subpatterns)
+
+ function yy_r7_2($yy_subpatterns)
{
- if ($this->mbstring_overload) {
- $to = mb_strlen($this->data,'latin1');
- } else {
- $to = strlen($this->data);
- }
- if ($this->mbstring_overload) {
- $this->value = mb_substr($this->data,$this->counter,$to-$this->counter,'latin1');
- } else {
- $this->value = substr($this->data,$this->counter,$to-$this->counter);
- }
- $this->token = Smarty_Internal_Templateparser::TP_TEXT;
+ if ($this->smarty->auto_literal && isset($this->value[$this->ldel_length]) ? strpos(" \n\t\r", $this->value[$this->ldel_length]) !== false : false) {
+ $this->token = Smarty_Internal_Templateparser::TP_BLOCKSOURCE;
+ } else {
+ $this->token = Smarty_Internal_Templateparser::TP_BLOCKSOURCE;
+ $this->yypopstate();
+ }
}
+ function yy_r7_3($yy_subpatterns)
+ {
+
+ $to = strlen($this->data);
+ preg_match("/{$this->ldel}\/?literal\s*{$this->rdel}/", $this->data, $match, PREG_OFFSET_CAPTURE, $this->counter);
+ if (isset($match[0][1])) {
+ $to = $match[0][1];
+ } else {
+ $this->compiler->trigger_template_error("missing or misspelled literal closing tag");
+ }
+ $this->value = substr($this->data, $this->counter, $to - $this->counter);
+ $this->token = Smarty_Internal_Templateparser::TP_BLOCKSOURCE;
+ }
}
-?> \ No newline at end of file
+
+ \ No newline at end of file
diff --git a/library/Smarty/libs/sysplugins/smarty_internal_templateparser.php b/library/Smarty/libs/sysplugins/smarty_internal_templateparser.php
index ed20e8237..98b9fc7fb 100644
--- a/library/Smarty/libs/sysplugins/smarty_internal_templateparser.php
+++ b/library/Smarty/libs/sysplugins/smarty_internal_templateparser.php
@@ -1,20 +1,20 @@
<?php
-/**
-* Smarty Internal Plugin Templateparser
-*
-* This is the template parser.
-* It is generated from the internal.templateparser.y file
-* @package Smarty
-* @subpackage Compiler
-* @author Uwe Tews
-*/
+/**
+ * Smarty Internal Plugin Templateparser
+ * This is the template parser.
+ * It is generated from the internal.templateparser.y file
+ *
+ * @package Smarty
+ * @subpackage Compiler
+ * @author Uwe Tews
+ */
class TP_yyToken implements ArrayAccess
{
public $string = '';
public $metadata = array();
- function __construct($s, $m = array())
+ public function __construct($s, $m = array())
{
if ($s instanceof TP_yyToken) {
$this->string = $s->string;
@@ -29,28 +29,29 @@ class TP_yyToken implements ArrayAccess
}
}
- function __toString()
+ public function __toString()
{
return $this->_string;
}
- function offsetExists($offset)
+ public function offsetExists($offset)
{
return isset($this->metadata[$offset]);
}
- function offsetGet($offset)
+ public function offsetGet($offset)
{
return $this->metadata[$offset];
}
- function offsetSet($offset, $value)
+ public function offsetSet($offset, $value)
{
if ($offset === null) {
if (isset($value[0])) {
$x = ($value instanceof TP_yyToken) ?
$value->metadata : $value;
$this->metadata = array_merge($this->metadata, $x);
+
return;
}
$offset = count($this->metadata);
@@ -67,7 +68,7 @@ class TP_yyToken implements ArrayAccess
}
}
- function offsetUnset($offset)
+ public function offsetUnset($offset)
{
unset($this->metadata[$offset]);
}
@@ -80,13 +81,14 @@ class TP_yyStackEntry
** number for the token at this stack level */
public $minor; /* The user-supplied minor token value. This
** is the value of the token */
-};
+}
+;
-#line 12 "smarty_internal_templateparser.y"
-class Smarty_Internal_Templateparser#line 79 "smarty_internal_templateparser.php"
+#line 13 "smarty_internal_templateparser.y"
+class Smarty_Internal_Templateparser#line 80 "smarty_internal_templateparser.php"
{
-#line 14 "smarty_internal_templateparser.y"
+ #line 15 "smarty_internal_templateparser.y"
const Err1 = "Security error: Call to private object member not allowed";
const Err2 = "Security error: Call to dynamic object member not allowed";
@@ -94,18 +96,25 @@ class Smarty_Internal_Templateparser#line 79 "smarty_internal_templateparser.php
// states whether the parse was successful or not
public $successful = true;
public $retvalue = 0;
+ public static $prefix_number = 0;
+ private $_string;
+ public $yymajor;
+ public $last_index;
+ public $last_variable;
+ public $root_buffer;
+ public $current_buffer;
private $lex;
private $internalError = false;
private $strip = false;
- function __construct($lex, $compiler) {
+ function __construct($lex, $compiler)
+ {
$this->lex = $lex;
$this->compiler = $compiler;
$this->smarty = $this->compiler->smarty;
$this->template = $this->compiler->template;
$this->compiler->has_variable_string = false;
$this->compiler->prefix_code = array();
- $this->prefix_number = 0;
$this->block_nesting_level = 0;
if ($this->security = isset($this->smarty->security_policy)) {
$this->php_handling = $this->smarty->security_policy->php_handling;
@@ -117,1367 +126,2494 @@ class Smarty_Internal_Templateparser#line 79 "smarty_internal_templateparser.php
$this->current_buffer = $this->root_buffer = new _smarty_template_buffer($this);
}
- public static function escape_start_tag($tag_text) {
- $tag = preg_replace('/\A<\?(.*)\z/', '<<?php ?>?\1', $tag_text, -1 , $count); //Escape tag
- return $tag;
- }
-
- public static function escape_end_tag($tag_text) {
- return '?<?php ?>>';
- }
-
- public function compileVariable($variable) {
- if (strpos($variable,'(') == 0) {
+ public function compileVariable($variable)
+ {
+ if (strpos($variable, '(') == 0) {
// not a variable variable
- $var = trim($variable,'\'');
- $this->compiler->tag_nocache=$this->compiler->tag_nocache|$this->template->getVariable($var, null, true, false)->nocache;
- $this->template->properties['variables'][$var] = $this->compiler->tag_nocache|$this->compiler->nocache;
+ $var = trim($variable, '\'');
+ $this->compiler->tag_nocache = $this->compiler->tag_nocache | $this->template->getVariable($var, null, true, false)->nocache;
+ $this->template->properties['variables'][$var] = $this->compiler->tag_nocache | $this->compiler->nocache;
}
-// return '(isset($_smarty_tpl->tpl_vars['. $variable .'])?$_smarty_tpl->tpl_vars['. $variable .']->value:$_smarty_tpl->getVariable('. $variable .')->value)';
- return '$_smarty_tpl->tpl_vars['. $variable .']->value';
+ // return '(isset($_smarty_tpl->tpl_vars['. $variable .'])?$_smarty_tpl->tpl_vars['. $variable .']->value:$_smarty_tpl->getVariable('. $variable .')->value)';
+ return '$_smarty_tpl->tpl_vars[' . $variable . ']->value';
}
-#line 132 "smarty_internal_templateparser.php"
- const TP_VERT = 1;
- const TP_COLON = 2;
- const TP_COMMENT = 3;
- const TP_PHPSTARTTAG = 4;
- const TP_PHPENDTAG = 5;
- const TP_ASPSTARTTAG = 6;
- const TP_ASPENDTAG = 7;
- const TP_FAKEPHPSTARTTAG = 8;
- const TP_XMLTAG = 9;
- const TP_TEXT = 10;
- const TP_STRIPON = 11;
- const TP_STRIPOFF = 12;
- const TP_LITERALSTART = 13;
- const TP_LITERALEND = 14;
- const TP_LITERAL = 15;
- const TP_LDEL = 16;
- const TP_RDEL = 17;
- const TP_DOLLAR = 18;
- const TP_ID = 19;
- const TP_EQUAL = 20;
- const TP_PTR = 21;
- const TP_LDELIF = 22;
- const TP_LDELFOR = 23;
- const TP_SEMICOLON = 24;
- const TP_INCDEC = 25;
- const TP_TO = 26;
- const TP_STEP = 27;
- const TP_LDELFOREACH = 28;
- const TP_SPACE = 29;
- const TP_AS = 30;
- const TP_APTR = 31;
- const TP_LDELSETFILTER = 32;
- const TP_SMARTYBLOCKCHILD = 33;
- const TP_LDELSLASH = 34;
- const TP_ATTR = 35;
- const TP_INTEGER = 36;
- const TP_COMMA = 37;
- const TP_OPENP = 38;
- const TP_CLOSEP = 39;
- const TP_MATH = 40;
- const TP_UNIMATH = 41;
- const TP_ANDSYM = 42;
- const TP_ISIN = 43;
- const TP_ISDIVBY = 44;
- const TP_ISNOTDIVBY = 45;
- const TP_ISEVEN = 46;
- const TP_ISNOTEVEN = 47;
- const TP_ISEVENBY = 48;
- const TP_ISNOTEVENBY = 49;
- const TP_ISODD = 50;
- const TP_ISNOTODD = 51;
- const TP_ISODDBY = 52;
- const TP_ISNOTODDBY = 53;
- const TP_INSTANCEOF = 54;
- const TP_QMARK = 55;
- const TP_NOT = 56;
- const TP_TYPECAST = 57;
- const TP_HEX = 58;
- const TP_DOT = 59;
- const TP_SINGLEQUOTESTRING = 60;
- const TP_DOUBLECOLON = 61;
- const TP_AT = 62;
- const TP_HATCH = 63;
- const TP_OPENB = 64;
- const TP_CLOSEB = 65;
- const TP_EQUALS = 66;
- const TP_NOTEQUALS = 67;
- const TP_GREATERTHAN = 68;
- const TP_LESSTHAN = 69;
- const TP_GREATEREQUAL = 70;
- const TP_LESSEQUAL = 71;
- const TP_IDENTITY = 72;
- const TP_NONEIDENTITY = 73;
- const TP_MOD = 74;
- const TP_LAND = 75;
- const TP_LOR = 76;
- const TP_LXOR = 77;
- const TP_QUOTE = 78;
- const TP_BACKTICK = 79;
- const TP_DOLLARID = 80;
- const YY_NO_ACTION = 593;
- const YY_ACCEPT_ACTION = 592;
- const YY_ERROR_ACTION = 591;
+ #line 130 "smarty_internal_templateparser.php"
+
+ const TP_VERT = 1;
+ const TP_COLON = 2;
+ const TP_RDEL = 3;
+ const TP_COMMENT = 4;
+ const TP_PHPSTARTTAG = 5;
+ const TP_PHPENDTAG = 6;
+ const TP_PHPENDSCRIPT = 7;
+ const TP_ASPSTARTTAG = 8;
+ const TP_ASPENDTAG = 9;
+ const TP_XMLTAG = 10;
+ const TP_TEXT = 11;
+ const TP_STRIPON = 12;
+ const TP_STRIPOFF = 13;
+ const TP_BLOCKSOURCE = 14;
+ const TP_LITERALSTART = 15;
+ const TP_LITERALEND = 16;
+ const TP_LITERAL = 17;
+ const TP_LDEL = 18;
+ const TP_DOLLAR = 19;
+ const TP_ID = 20;
+ const TP_EQUAL = 21;
+ const TP_PTR = 22;
+ const TP_LDELIF = 23;
+ const TP_LDELFOR = 24;
+ const TP_SEMICOLON = 25;
+ const TP_INCDEC = 26;
+ const TP_TO = 27;
+ const TP_STEP = 28;
+ const TP_LDELFOREACH = 29;
+ const TP_SPACE = 30;
+ const TP_AS = 31;
+ const TP_APTR = 32;
+ const TP_LDELSETFILTER = 33;
+ const TP_SMARTYBLOCKCHILDPARENT = 34;
+ const TP_LDELSLASH = 35;
+ const TP_ATTR = 36;
+ const TP_INTEGER = 37;
+ const TP_COMMA = 38;
+ const TP_OPENP = 39;
+ const TP_CLOSEP = 40;
+ const TP_MATH = 41;
+ const TP_UNIMATH = 42;
+ const TP_ANDSYM = 43;
+ const TP_ISIN = 44;
+ const TP_ISDIVBY = 45;
+ const TP_ISNOTDIVBY = 46;
+ const TP_ISEVEN = 47;
+ const TP_ISNOTEVEN = 48;
+ const TP_ISEVENBY = 49;
+ const TP_ISNOTEVENBY = 50;
+ const TP_ISODD = 51;
+ const TP_ISNOTODD = 52;
+ const TP_ISODDBY = 53;
+ const TP_ISNOTODDBY = 54;
+ const TP_INSTANCEOF = 55;
+ const TP_QMARK = 56;
+ const TP_NOT = 57;
+ const TP_TYPECAST = 58;
+ const TP_HEX = 59;
+ const TP_DOT = 60;
+ const TP_SINGLEQUOTESTRING = 61;
+ const TP_DOUBLECOLON = 62;
+ const TP_AT = 63;
+ const TP_HATCH = 64;
+ const TP_OPENB = 65;
+ const TP_CLOSEB = 66;
+ const TP_EQUALS = 67;
+ const TP_NOTEQUALS = 68;
+ const TP_GREATERTHAN = 69;
+ const TP_LESSTHAN = 70;
+ const TP_GREATEREQUAL = 71;
+ const TP_LESSEQUAL = 72;
+ const TP_IDENTITY = 73;
+ const TP_NONEIDENTITY = 74;
+ const TP_MOD = 75;
+ const TP_LAND = 76;
+ const TP_LOR = 77;
+ const TP_LXOR = 78;
+ const TP_QUOTE = 79;
+ const TP_BACKTICK = 80;
+ const TP_DOLLARID = 81;
+ const YY_NO_ACTION = 560;
+ const YY_ACCEPT_ACTION = 559;
+ const YY_ERROR_ACTION = 558;
- const YY_SZ_ACTTAB = 2453;
-static public $yy_action = array(
- /* 0 */ 210, 320, 317, 316, 312, 311, 313, 314, 315, 322,
- /* 10 */ 323, 189, 191, 340, 43, 168, 292, 290, 161, 25,
- /* 20 */ 3, 108, 284, 29, 294, 199, 146, 294, 15, 15,
- /* 30 */ 244, 296, 243, 277, 18, 18, 285, 12, 127, 48,
- /* 40 */ 52, 50, 44, 9, 14, 384, 385, 17, 16, 386,
- /* 50 */ 283, 41, 39, 210, 592, 95, 260, 319, 321, 6,
- /* 60 */ 21, 194, 135, 374, 193, 387, 383, 382, 378, 377,
- /* 70 */ 379, 380, 381, 363, 362, 345, 344, 28, 31, 34,
- /* 80 */ 370, 15, 19, 237, 137, 187, 25, 18, 203, 284,
- /* 90 */ 29, 203, 48, 52, 50, 44, 9, 14, 384, 385,
- /* 100 */ 17, 16, 386, 283, 41, 39, 329, 324, 326, 327,
- /* 110 */ 325, 24, 288, 4, 4, 189, 332, 330, 387, 383,
- /* 120 */ 382, 378, 377, 379, 380, 381, 363, 362, 345, 344,
- /* 130 */ 210, 368, 231, 210, 251, 117, 139, 139, 84, 132,
- /* 140 */ 278, 25, 10, 162, 284, 359, 338, 302, 346, 459,
- /* 150 */ 226, 228, 369, 364, 15, 375, 230, 15, 15, 177,
- /* 160 */ 18, 459, 240, 18, 18, 212, 257, 459, 294, 48,
- /* 170 */ 52, 50, 44, 9, 14, 384, 385, 17, 16, 386,
- /* 180 */ 283, 41, 39, 131, 101, 159, 47, 196, 340, 371,
- /* 190 */ 25, 190, 340, 284, 294, 387, 383, 382, 378, 377,
- /* 200 */ 379, 380, 381, 363, 362, 345, 344, 210, 368, 208,
- /* 210 */ 210, 203, 140, 210, 8, 56, 123, 118, 210, 457,
- /* 220 */ 366, 261, 234, 343, 302, 346, 453, 147, 228, 369,
- /* 230 */ 364, 457, 375, 15, 342, 15, 231, 457, 15, 18,
- /* 240 */ 4, 18, 307, 37, 18, 195, 48, 52, 50, 44,
- /* 250 */ 9, 14, 384, 385, 17, 16, 386, 283, 41, 39,
- /* 260 */ 210, 25, 2, 139, 284, 11, 47, 185, 210, 45,
- /* 270 */ 266, 47, 387, 383, 382, 378, 377, 379, 380, 381,
- /* 280 */ 363, 362, 345, 344, 286, 242, 104, 166, 15, 210,
- /* 290 */ 276, 184, 188, 23, 18, 272, 294, 22, 162, 48,
- /* 300 */ 52, 50, 44, 9, 14, 384, 385, 17, 16, 386,
- /* 310 */ 283, 41, 39, 203, 106, 170, 13, 15, 203, 288,
- /* 320 */ 318, 319, 321, 18, 294, 387, 383, 382, 378, 377,
- /* 330 */ 379, 380, 381, 363, 362, 345, 344, 210, 131, 105,
- /* 340 */ 210, 203, 23, 368, 268, 130, 249, 152, 355, 25,
- /* 350 */ 197, 132, 284, 271, 32, 162, 287, 155, 354, 210,
- /* 360 */ 3, 108, 15, 228, 369, 364, 146, 375, 18, 252,
- /* 370 */ 244, 296, 243, 375, 303, 305, 48, 52, 50, 44,
- /* 380 */ 9, 14, 384, 385, 17, 16, 386, 283, 41, 39,
- /* 390 */ 103, 210, 36, 208, 109, 388, 303, 232, 8, 4,
- /* 400 */ 248, 246, 387, 383, 382, 378, 377, 379, 380, 381,
- /* 410 */ 363, 362, 345, 344, 198, 40, 361, 27, 353, 179,
- /* 420 */ 175, 20, 139, 236, 239, 211, 116, 18, 294, 294,
- /* 430 */ 48, 52, 50, 44, 9, 14, 384, 385, 17, 16,
- /* 440 */ 386, 283, 41, 39, 178, 200, 200, 23, 25, 267,
- /* 450 */ 351, 284, 186, 294, 285, 201, 387, 383, 382, 378,
- /* 460 */ 377, 379, 380, 381, 363, 362, 345, 344, 210, 368,
- /* 470 */ 200, 210, 210, 140, 301, 181, 69, 123, 238, 25,
- /* 480 */ 210, 147, 284, 347, 202, 302, 346, 459, 304, 228,
- /* 490 */ 369, 364, 15, 375, 241, 15, 297, 172, 18, 459,
- /* 500 */ 235, 18, 203, 306, 129, 459, 294, 48, 52, 50,
- /* 510 */ 44, 9, 14, 384, 385, 17, 16, 386, 283, 41,
- /* 520 */ 39, 210, 25, 200, 47, 229, 25, 134, 210, 233,
- /* 530 */ 120, 119, 210, 387, 383, 382, 378, 377, 379, 380,
- /* 540 */ 381, 363, 362, 345, 344, 373, 373, 143, 308, 180,
- /* 550 */ 236, 282, 25, 25, 42, 284, 216, 236, 238, 250,
- /* 560 */ 48, 52, 50, 44, 9, 14, 384, 385, 17, 16,
- /* 570 */ 386, 283, 41, 39, 210, 30, 203, 360, 182, 25,
- /* 580 */ 285, 47, 222, 126, 167, 303, 387, 383, 382, 378,
- /* 590 */ 377, 379, 380, 381, 363, 362, 345, 344, 245, 373,
- /* 600 */ 15, 372, 160, 334, 6, 333, 18, 247, 254, 35,
- /* 610 */ 255, 294, 114, 48, 52, 50, 44, 9, 14, 384,
- /* 620 */ 385, 17, 16, 386, 283, 41, 39, 373, 192, 281,
- /* 630 */ 253, 145, 38, 298, 300, 226, 94, 124, 102, 387,
- /* 640 */ 383, 382, 378, 377, 379, 380, 381, 363, 362, 345,
- /* 650 */ 344, 210, 368, 373, 210, 141, 140, 368, 336, 71,
- /* 660 */ 132, 149, 136, 7, 10, 132, 165, 204, 302, 346,
- /* 670 */ 456, 98, 228, 369, 364, 294, 375, 228, 369, 364,
- /* 680 */ 279, 375, 456, 220, 232, 335, 373, 285, 456, 162,
- /* 690 */ 48, 52, 50, 44, 9, 14, 384, 385, 17, 16,
- /* 700 */ 386, 283, 41, 39, 210, 210, 309, 47, 285, 200,
- /* 710 */ 371, 45, 162, 183, 144, 97, 387, 383, 382, 378,
- /* 720 */ 377, 379, 380, 381, 363, 362, 345, 344, 285, 131,
- /* 730 */ 373, 354, 331, 107, 110, 256, 376, 327, 327, 327,
- /* 740 */ 327, 327, 115, 48, 52, 50, 44, 9, 14, 384,
- /* 750 */ 385, 17, 16, 386, 283, 41, 39, 373, 327, 327,
- /* 760 */ 327, 327, 327, 327, 327, 327, 327, 327, 356, 387,
- /* 770 */ 383, 382, 378, 377, 379, 380, 381, 363, 362, 345,
- /* 780 */ 344, 210, 352, 368, 327, 210, 327, 140, 327, 327,
- /* 790 */ 71, 132, 327, 100, 339, 327, 138, 269, 337, 302,
- /* 800 */ 346, 328, 327, 228, 369, 364, 15, 375, 373, 327,
- /* 810 */ 15, 373, 18, 15, 219, 327, 18, 327, 327, 18,
- /* 820 */ 48, 52, 50, 44, 9, 14, 384, 385, 17, 16,
- /* 830 */ 386, 283, 41, 39, 210, 327, 327, 327, 47, 327,
- /* 840 */ 327, 327, 327, 327, 327, 327, 387, 383, 382, 378,
- /* 850 */ 377, 379, 380, 381, 363, 362, 345, 344, 327, 327,
- /* 860 */ 327, 327, 327, 327, 327, 327, 327, 327, 327, 327,
- /* 870 */ 327, 327, 274, 48, 52, 50, 44, 9, 14, 384,
- /* 880 */ 385, 17, 16, 386, 283, 41, 39, 210, 327, 327,
- /* 890 */ 327, 327, 327, 327, 327, 327, 327, 327, 327, 387,
- /* 900 */ 383, 382, 378, 377, 379, 380, 381, 363, 362, 345,
- /* 910 */ 344, 327, 327, 327, 327, 327, 327, 327, 327, 327,
- /* 920 */ 327, 327, 327, 327, 327, 327, 48, 52, 50, 44,
- /* 930 */ 9, 14, 384, 385, 17, 16, 386, 283, 41, 39,
- /* 940 */ 210, 327, 327, 327, 327, 327, 327, 327, 327, 327,
- /* 950 */ 327, 265, 387, 383, 382, 378, 377, 379, 380, 381,
- /* 960 */ 363, 362, 345, 344, 327, 327, 327, 327, 327, 224,
- /* 970 */ 327, 327, 327, 327, 327, 327, 327, 327, 327, 48,
- /* 980 */ 52, 50, 44, 9, 14, 384, 385, 17, 16, 386,
- /* 990 */ 283, 41, 39, 210, 327, 327, 327, 327, 327, 327,
- /* 1000 */ 327, 327, 327, 327, 327, 387, 383, 382, 378, 377,
- /* 1010 */ 379, 380, 381, 363, 362, 345, 344, 327, 327, 327,
- /* 1020 */ 327, 327, 327, 327, 327, 327, 327, 327, 327, 327,
- /* 1030 */ 327, 327, 48, 52, 50, 44, 9, 14, 384, 385,
- /* 1040 */ 17, 16, 386, 283, 41, 39, 327, 327, 327, 327,
- /* 1050 */ 327, 327, 327, 327, 327, 327, 327, 327, 387, 383,
- /* 1060 */ 382, 378, 377, 379, 380, 381, 363, 362, 345, 344,
- /* 1070 */ 327, 327, 327, 48, 52, 50, 44, 9, 14, 384,
- /* 1080 */ 385, 17, 16, 386, 283, 41, 39, 327, 327, 327,
- /* 1090 */ 327, 327, 327, 327, 327, 327, 327, 327, 327, 387,
- /* 1100 */ 383, 382, 378, 377, 379, 380, 381, 363, 362, 345,
- /* 1110 */ 344, 327, 327, 327, 327, 327, 43, 327, 142, 207,
- /* 1120 */ 327, 327, 3, 108, 327, 264, 327, 368, 146, 327,
- /* 1130 */ 327, 151, 244, 296, 243, 132, 227, 15, 33, 327,
- /* 1140 */ 327, 51, 327, 18, 367, 327, 368, 228, 369, 364,
- /* 1150 */ 150, 375, 327, 174, 132, 327, 49, 46, 299, 225,
- /* 1160 */ 365, 327, 294, 103, 1, 280, 228, 369, 364, 262,
- /* 1170 */ 375, 327, 327, 43, 285, 142, 218, 327, 96, 3,
- /* 1180 */ 108, 15, 289, 327, 327, 146, 327, 18, 327, 244,
- /* 1190 */ 296, 243, 327, 227, 15, 33, 327, 327, 51, 327,
- /* 1200 */ 18, 327, 368, 327, 327, 327, 121, 327, 327, 54,
- /* 1210 */ 132, 327, 327, 49, 46, 299, 225, 365, 302, 346,
- /* 1220 */ 103, 1, 228, 369, 364, 327, 375, 350, 327, 327,
- /* 1230 */ 43, 327, 142, 205, 327, 96, 3, 108, 327, 15,
- /* 1240 */ 169, 327, 146, 327, 358, 18, 244, 296, 243, 294,
- /* 1250 */ 227, 327, 33, 327, 327, 51, 15, 327, 327, 368,
- /* 1260 */ 327, 285, 18, 140, 327, 327, 66, 132, 327, 327,
- /* 1270 */ 49, 46, 299, 225, 365, 302, 346, 103, 1, 228,
- /* 1280 */ 369, 364, 327, 375, 295, 327, 327, 43, 327, 130,
- /* 1290 */ 218, 327, 96, 3, 108, 327, 15, 327, 327, 146,
- /* 1300 */ 327, 293, 18, 244, 296, 243, 327, 227, 327, 26,
- /* 1310 */ 327, 327, 51, 15, 327, 327, 368, 327, 327, 18,
- /* 1320 */ 140, 327, 327, 60, 132, 327, 327, 49, 46, 299,
- /* 1330 */ 225, 365, 302, 346, 103, 1, 228, 369, 364, 327,
- /* 1340 */ 375, 258, 327, 327, 43, 327, 128, 218, 327, 96,
- /* 1350 */ 3, 108, 327, 15, 327, 327, 146, 327, 291, 18,
- /* 1360 */ 244, 296, 243, 327, 227, 327, 5, 327, 327, 51,
- /* 1370 */ 15, 327, 327, 368, 327, 327, 18, 140, 327, 327,
- /* 1380 */ 75, 132, 327, 327, 49, 46, 299, 225, 365, 302,
- /* 1390 */ 346, 103, 1, 228, 369, 364, 327, 375, 259, 327,
- /* 1400 */ 327, 43, 327, 142, 209, 327, 96, 3, 108, 327,
- /* 1410 */ 15, 327, 327, 146, 327, 273, 18, 244, 296, 243,
- /* 1420 */ 327, 227, 327, 33, 327, 327, 51, 15, 327, 327,
- /* 1430 */ 368, 327, 327, 18, 140, 327, 327, 87, 132, 327,
- /* 1440 */ 327, 49, 46, 299, 225, 365, 302, 346, 103, 1,
- /* 1450 */ 228, 369, 364, 327, 375, 275, 327, 327, 43, 327,
- /* 1460 */ 125, 92, 327, 96, 3, 108, 327, 15, 327, 327,
- /* 1470 */ 146, 327, 310, 18, 244, 296, 243, 327, 227, 327,
- /* 1480 */ 33, 327, 327, 51, 15, 327, 327, 368, 327, 327,
- /* 1490 */ 18, 140, 327, 327, 58, 132, 327, 327, 49, 46,
- /* 1500 */ 299, 225, 365, 302, 346, 103, 1, 228, 369, 364,
- /* 1510 */ 327, 375, 341, 327, 327, 43, 327, 133, 218, 327,
- /* 1520 */ 96, 3, 108, 327, 15, 327, 327, 146, 327, 348,
- /* 1530 */ 18, 244, 296, 243, 327, 227, 327, 33, 327, 327,
- /* 1540 */ 51, 15, 327, 327, 368, 327, 327, 18, 140, 327,
- /* 1550 */ 327, 68, 132, 327, 327, 49, 46, 299, 225, 365,
- /* 1560 */ 302, 346, 103, 1, 215, 369, 364, 327, 375, 327,
- /* 1570 */ 327, 327, 43, 327, 142, 206, 327, 96, 3, 108,
- /* 1580 */ 327, 327, 327, 327, 146, 327, 327, 327, 244, 296,
- /* 1590 */ 243, 327, 213, 327, 33, 327, 327, 51, 327, 327,
- /* 1600 */ 327, 368, 327, 327, 327, 140, 327, 327, 89, 132,
- /* 1610 */ 327, 327, 49, 46, 299, 225, 365, 302, 346, 103,
- /* 1620 */ 1, 228, 369, 364, 327, 375, 327, 327, 327, 43,
- /* 1630 */ 327, 130, 214, 327, 96, 3, 108, 327, 327, 327,
- /* 1640 */ 327, 146, 327, 327, 327, 244, 296, 243, 327, 227,
- /* 1650 */ 327, 26, 327, 327, 51, 327, 327, 327, 368, 327,
- /* 1660 */ 327, 327, 93, 327, 327, 53, 122, 327, 327, 49,
- /* 1670 */ 46, 299, 225, 365, 302, 346, 103, 327, 221, 369,
- /* 1680 */ 364, 327, 375, 327, 327, 327, 43, 327, 130, 218,
- /* 1690 */ 327, 96, 3, 108, 327, 327, 327, 327, 146, 327,
- /* 1700 */ 327, 327, 244, 296, 243, 327, 227, 327, 26, 327,
- /* 1710 */ 327, 51, 327, 327, 327, 368, 327, 327, 327, 140,
- /* 1720 */ 327, 327, 71, 132, 327, 327, 49, 46, 299, 225,
- /* 1730 */ 365, 302, 346, 103, 327, 228, 369, 364, 327, 375,
- /* 1740 */ 327, 327, 327, 327, 502, 327, 217, 327, 96, 327,
- /* 1750 */ 327, 502, 327, 502, 502, 355, 502, 502, 327, 327,
- /* 1760 */ 327, 32, 502, 327, 502, 4, 502, 3, 108, 327,
- /* 1770 */ 99, 171, 327, 146, 327, 327, 327, 244, 296, 243,
- /* 1780 */ 294, 502, 327, 28, 31, 327, 327, 327, 139, 327,
- /* 1790 */ 327, 327, 502, 327, 368, 193, 163, 203, 117, 327,
- /* 1800 */ 327, 84, 132, 327, 327, 294, 502, 327, 28, 31,
- /* 1810 */ 302, 346, 327, 368, 228, 369, 364, 157, 375, 327,
- /* 1820 */ 327, 132, 203, 357, 27, 353, 327, 327, 327, 263,
- /* 1830 */ 270, 327, 368, 228, 369, 364, 140, 375, 327, 69,
- /* 1840 */ 132, 327, 210, 368, 327, 327, 327, 140, 302, 346,
- /* 1850 */ 79, 132, 228, 369, 364, 327, 375, 327, 349, 302,
- /* 1860 */ 346, 327, 223, 228, 369, 364, 327, 375, 327, 327,
- /* 1870 */ 15, 327, 327, 327, 368, 327, 18, 327, 140, 4,
- /* 1880 */ 327, 91, 132, 327, 327, 327, 327, 327, 327, 327,
- /* 1890 */ 302, 346, 327, 327, 228, 369, 364, 368, 375, 327,
- /* 1900 */ 327, 140, 139, 368, 76, 132, 327, 153, 327, 327,
- /* 1910 */ 327, 132, 327, 302, 346, 327, 327, 228, 369, 364,
- /* 1920 */ 327, 375, 368, 228, 369, 364, 140, 375, 327, 63,
- /* 1930 */ 132, 327, 327, 368, 327, 327, 327, 111, 302, 346,
- /* 1940 */ 62, 132, 228, 369, 364, 327, 375, 327, 327, 302,
- /* 1950 */ 346, 327, 327, 228, 369, 364, 327, 375, 327, 327,
- /* 1960 */ 368, 193, 176, 327, 140, 327, 327, 78, 132, 327,
- /* 1970 */ 327, 294, 327, 327, 28, 31, 302, 346, 327, 327,
- /* 1980 */ 228, 369, 364, 368, 375, 327, 327, 140, 203, 368,
- /* 1990 */ 64, 132, 327, 154, 327, 327, 327, 132, 327, 302,
- /* 2000 */ 346, 327, 327, 228, 369, 364, 327, 375, 368, 228,
- /* 2010 */ 369, 364, 140, 375, 327, 77, 132, 327, 327, 368,
- /* 2020 */ 327, 327, 327, 140, 302, 346, 80, 132, 228, 369,
- /* 2030 */ 364, 327, 375, 327, 327, 302, 346, 327, 327, 228,
- /* 2040 */ 369, 364, 327, 375, 327, 327, 368, 327, 327, 327,
- /* 2050 */ 140, 327, 327, 61, 132, 327, 327, 327, 327, 327,
- /* 2060 */ 327, 327, 302, 346, 327, 327, 228, 369, 364, 368,
- /* 2070 */ 375, 327, 327, 140, 327, 368, 65, 132, 327, 156,
- /* 2080 */ 327, 327, 327, 132, 327, 302, 346, 327, 327, 228,
- /* 2090 */ 369, 364, 327, 375, 368, 228, 369, 364, 140, 375,
- /* 2100 */ 327, 81, 132, 327, 327, 368, 327, 327, 327, 113,
- /* 2110 */ 302, 346, 88, 132, 228, 369, 364, 327, 375, 327,
- /* 2120 */ 327, 302, 346, 327, 327, 228, 369, 364, 327, 375,
- /* 2130 */ 327, 327, 368, 327, 327, 327, 140, 327, 327, 67,
- /* 2140 */ 132, 327, 327, 327, 327, 327, 327, 327, 302, 346,
- /* 2150 */ 327, 327, 228, 369, 364, 368, 375, 327, 327, 140,
- /* 2160 */ 327, 368, 86, 132, 327, 148, 327, 327, 327, 132,
- /* 2170 */ 327, 302, 346, 327, 327, 228, 369, 364, 327, 375,
- /* 2180 */ 368, 228, 369, 364, 140, 375, 327, 85, 132, 327,
- /* 2190 */ 327, 368, 327, 327, 327, 112, 302, 346, 73, 132,
- /* 2200 */ 228, 369, 364, 327, 375, 327, 327, 302, 346, 327,
- /* 2210 */ 327, 228, 369, 364, 327, 375, 327, 327, 368, 327,
- /* 2220 */ 327, 327, 140, 327, 327, 70, 132, 327, 327, 327,
- /* 2230 */ 327, 327, 327, 327, 302, 346, 327, 327, 228, 369,
- /* 2240 */ 364, 368, 375, 327, 327, 140, 327, 327, 57, 132,
- /* 2250 */ 327, 327, 327, 327, 327, 327, 327, 302, 346, 327,
- /* 2260 */ 327, 228, 369, 364, 327, 375, 368, 327, 327, 327,
- /* 2270 */ 140, 327, 327, 90, 132, 327, 327, 368, 327, 327,
- /* 2280 */ 327, 140, 302, 346, 83, 132, 228, 369, 364, 327,
- /* 2290 */ 375, 327, 327, 302, 346, 327, 327, 228, 369, 364,
- /* 2300 */ 327, 375, 327, 327, 368, 327, 327, 327, 140, 327,
- /* 2310 */ 327, 82, 132, 327, 327, 327, 327, 327, 327, 327,
- /* 2320 */ 302, 346, 327, 327, 228, 369, 364, 368, 375, 327,
- /* 2330 */ 327, 140, 327, 327, 55, 132, 327, 327, 327, 327,
- /* 2340 */ 327, 327, 327, 302, 346, 327, 327, 228, 369, 364,
- /* 2350 */ 327, 375, 368, 327, 327, 327, 140, 327, 327, 72,
- /* 2360 */ 132, 327, 327, 368, 327, 327, 327, 93, 302, 346,
- /* 2370 */ 59, 122, 228, 369, 364, 327, 375, 327, 327, 302,
- /* 2380 */ 346, 327, 327, 228, 369, 364, 327, 375, 327, 327,
- /* 2390 */ 368, 327, 327, 327, 140, 327, 327, 74, 132, 327,
- /* 2400 */ 327, 327, 327, 193, 158, 327, 302, 346, 327, 327,
- /* 2410 */ 228, 369, 364, 294, 375, 327, 28, 31, 193, 173,
- /* 2420 */ 327, 327, 327, 327, 327, 193, 164, 327, 294, 327,
- /* 2430 */ 203, 28, 31, 327, 327, 294, 327, 327, 28, 31,
- /* 2440 */ 327, 327, 327, 327, 327, 203, 327, 327, 327, 327,
- /* 2450 */ 327, 327, 203,
+ const YY_SZ_ACTTAB = 2541;
+ static public $yy_action = array(
+ /* 0 */
+ 225, 35, 312, 333, 198, 272, 273, 275, 283, 292,
+ /* 10 */
+ 293, 294, 295, 287, 288, 267, 190, 43, 19, 8,
+ /* 20 */
+ 204, 14, 212, 299, 2, 108, 225, 9, 424, 41,
+ /* 30 */
+ 139, 208, 225, 41, 250, 32, 228, 13, 159, 32,
+ /* 40 */
+ 51, 52, 50, 44, 11, 12, 298, 300, 21, 23,
+ /* 50 */
+ 303, 302, 25, 17, 225, 424, 234, 225, 225, 381,
+ /* 60 */
+ 421, 424, 45, 38, 145, 357, 313, 323, 322, 324,
+ /* 70 */
+ 325, 326, 320, 315, 314, 316, 317, 319, 127, 41,
+ /* 80 */
+ 46, 42, 338, 41, 168, 32, 41, 421, 14, 32,
+ /* 90 */
+ 299, 34, 32, 421, 51, 52, 50, 44, 11, 12,
+ /* 100 */
+ 298, 300, 21, 23, 303, 302, 25, 17, 225, 104,
+ /* 110 */
+ 185, 46, 46, 559, 95, 279, 242, 271, 3, 321,
+ /* 120 */
+ 313, 323, 322, 324, 325, 326, 320, 315, 314, 316,
+ /* 130 */
+ 317, 319, 14, 241, 299, 34, 208, 41, 225, 14,
+ /* 140 */
+ 418, 299, 28, 32, 179, 7, 356, 285, 51, 52,
+ /* 150 */
+ 50, 44, 11, 12, 298, 300, 21, 23, 303, 302,
+ /* 160 */
+ 25, 17, 225, 225, 274, 424, 240, 41, 134, 190,
+ /* 170 */
+ 332, 343, 340, 32, 313, 323, 322, 324, 325, 326,
+ /* 180 */
+ 320, 315, 314, 316, 317, 319, 37, 122, 182, 31,
+ /* 190 */
+ 202, 225, 424, 352, 225, 14, 7, 299, 424, 225,
+ /* 200 */
+ 150, 386, 51, 52, 50, 44, 11, 12, 298, 300,
+ /* 210 */
+ 21, 23, 303, 302, 25, 17, 225, 46, 349, 134,
+ /* 220 */
+ 41, 278, 242, 271, 7, 29, 32, 341, 313, 323,
+ /* 230 */
+ 322, 324, 325, 326, 320, 315, 314, 316, 317, 319,
+ /* 240 */
+ 226, 227, 197, 304, 103, 184, 232, 134, 46, 14,
+ /* 250 */
+ 35, 299, 265, 46, 321, 18, 51, 52, 50, 44,
+ /* 260 */
+ 11, 12, 298, 300, 21, 23, 303, 302, 25, 17,
+ /* 270 */
+ 225, 208, 264, 259, 258, 218, 6, 109, 345, 35,
+ /* 280 */
+ 193, 263, 313, 323, 322, 324, 325, 326, 320, 315,
+ /* 290 */
+ 314, 316, 317, 319, 241, 192, 304, 107, 102, 175,
+ /* 300 */
+ 269, 201, 191, 304, 203, 142, 253, 208, 321, 335,
+ /* 310 */
+ 51, 52, 50, 44, 11, 12, 298, 300, 21, 23,
+ /* 320 */
+ 303, 302, 25, 17, 225, 208, 268, 196, 208, 305,
+ /* 330 */
+ 485, 208, 230, 200, 308, 485, 313, 323, 322, 324,
+ /* 340 */
+ 325, 326, 320, 315, 314, 316, 317, 319, 30, 159,
+ /* 350 */
+ 105, 20, 233, 161, 186, 305, 301, 274, 256, 247,
+ /* 360 */
+ 208, 225, 321, 36, 51, 52, 50, 44, 11, 12,
+ /* 370 */
+ 298, 300, 21, 23, 303, 302, 25, 17, 225, 204,
+ /* 380 */
+ 207, 14, 254, 299, 131, 259, 249, 225, 158, 127,
+ /* 390 */
+ 313, 323, 322, 324, 325, 326, 320, 315, 314, 316,
+ /* 400 */
+ 317, 319, 237, 262, 130, 225, 45, 183, 187, 14,
+ /* 410 */
+ 169, 223, 301, 342, 274, 334, 321, 321, 51, 52,
+ /* 420 */
+ 50, 44, 11, 12, 298, 300, 21, 23, 303, 302,
+ /* 430 */
+ 25, 17, 225, 204, 204, 14, 6, 244, 141, 259,
+ /* 440 */
+ 291, 46, 98, 194, 313, 323, 322, 324, 325, 326,
+ /* 450 */
+ 320, 315, 314, 316, 317, 319, 132, 262, 227, 166,
+ /* 460 */
+ 163, 189, 14, 284, 231, 26, 237, 27, 321, 321,
+ /* 470 */
+ 321, 32, 51, 52, 50, 44, 11, 12, 298, 300,
+ /* 480 */
+ 21, 23, 303, 302, 25, 17, 225, 204, 14, 276,
+ /* 490 */
+ 245, 206, 22, 4, 144, 328, 150, 120, 313, 323,
+ /* 500 */
+ 322, 324, 325, 326, 320, 315, 314, 316, 317, 319,
+ /* 510 */
+ 195, 348, 262, 176, 171, 39, 30, 199, 143, 180,
+ /* 520 */
+ 148, 281, 321, 260, 159, 230, 51, 52, 50, 44,
+ /* 530 */
+ 11, 12, 298, 300, 21, 23, 303, 302, 25, 17,
+ /* 540 */
+ 225, 296, 205, 129, 346, 289, 124, 329, 125, 339,
+ /* 550 */
+ 97, 119, 313, 323, 322, 324, 325, 326, 320, 315,
+ /* 560 */
+ 314, 316, 317, 319, 127, 262, 262, 239, 277, 282,
+ /* 570 */
+ 307, 94, 266, 351, 269, 170, 159, 181, 172, 106,
+ /* 580 */
+ 51, 52, 50, 44, 11, 12, 298, 300, 21, 23,
+ /* 590 */
+ 303, 302, 25, 17, 225, 330, 270, 301, 15, 115,
+ /* 600 */
+ 331, 310, 326, 255, 140, 126, 313, 323, 322, 324,
+ /* 610 */
+ 325, 326, 320, 315, 314, 316, 317, 319, 301, 326,
+ /* 620 */
+ 262, 326, 326, 326, 326, 326, 326, 326, 326, 326,
+ /* 630 */
+ 326, 326, 326, 243, 51, 52, 50, 44, 11, 12,
+ /* 640 */
+ 298, 300, 21, 23, 303, 302, 25, 17, 225, 40,
+ /* 650 */
+ 326, 326, 326, 326, 326, 326, 326, 113, 99, 100,
+ /* 660 */
+ 313, 323, 322, 324, 325, 326, 320, 315, 314, 316,
+ /* 670 */
+ 317, 319, 262, 262, 262, 326, 326, 326, 326, 326,
+ /* 680 */
+ 326, 326, 326, 326, 326, 326, 326, 326, 51, 52,
+ /* 690 */
+ 50, 44, 11, 12, 298, 300, 21, 23, 303, 302,
+ /* 700 */
+ 25, 17, 225, 326, 326, 326, 326, 326, 326, 326,
+ /* 710 */
+ 326, 114, 326, 326, 313, 323, 322, 324, 325, 326,
+ /* 720 */
+ 320, 315, 314, 316, 317, 319, 262, 326, 326, 326,
+ /* 730 */
+ 326, 326, 326, 326, 326, 326, 326, 326, 326, 326,
+ /* 740 */
+ 326, 286, 51, 52, 50, 44, 11, 12, 298, 300,
+ /* 750 */
+ 21, 23, 303, 302, 25, 17, 225, 326, 326, 326,
+ /* 760 */
+ 326, 326, 326, 326, 326, 326, 326, 326, 313, 323,
+ /* 770 */
+ 322, 324, 325, 326, 320, 315, 314, 316, 317, 319,
+ /* 780 */
+ 326, 326, 326, 326, 326, 326, 326, 326, 326, 326,
+ /* 790 */
+ 326, 326, 326, 326, 326, 326, 51, 52, 50, 44,
+ /* 800 */
+ 11, 12, 298, 300, 21, 23, 303, 302, 25, 17,
+ /* 810 */
+ 326, 326, 326, 326, 326, 326, 326, 326, 326, 326,
+ /* 820 */
+ 159, 326, 313, 323, 322, 324, 325, 326, 320, 315,
+ /* 830 */
+ 314, 316, 317, 319, 326, 326, 326, 326, 51, 52,
+ /* 840 */
+ 50, 44, 11, 12, 298, 300, 21, 23, 303, 302,
+ /* 850 */
+ 25, 17, 326, 326, 326, 326, 326, 326, 212, 326,
+ /* 860 */
+ 326, 326, 326, 9, 313, 323, 322, 324, 325, 326,
+ /* 870 */
+ 320, 315, 314, 316, 317, 319, 326, 326, 326, 326,
+ /* 880 */
+ 326, 326, 326, 8, 138, 211, 326, 326, 2, 108,
+ /* 890 */
+ 326, 235, 326, 326, 139, 157, 165, 326, 250, 128,
+ /* 900 */
+ 228, 326, 246, 326, 24, 321, 326, 48, 261, 326,
+ /* 910 */
+ 326, 251, 336, 353, 326, 311, 326, 301, 174, 173,
+ /* 920 */
+ 326, 326, 49, 47, 280, 238, 297, 321, 321, 105,
+ /* 930 */
+ 1, 337, 326, 147, 326, 326, 326, 326, 326, 301,
+ /* 940 */
+ 301, 8, 123, 92, 96, 257, 2, 108, 326, 311,
+ /* 950 */
+ 326, 326, 139, 326, 326, 235, 250, 309, 228, 146,
+ /* 960 */
+ 246, 326, 24, 128, 162, 48, 326, 326, 326, 326,
+ /* 970 */
+ 235, 326, 350, 321, 155, 251, 336, 353, 128, 311,
+ /* 980 */
+ 49, 47, 280, 238, 297, 301, 326, 105, 1, 326,
+ /* 990 */
+ 251, 336, 353, 326, 311, 14, 326, 299, 326, 8,
+ /* 1000 */
+ 138, 224, 96, 326, 2, 108, 326, 41, 326, 252,
+ /* 1010 */
+ 139, 235, 326, 32, 250, 153, 228, 326, 246, 128,
+ /* 1020 */
+ 24, 326, 326, 48, 326, 326, 326, 326, 326, 326,
+ /* 1030 */
+ 326, 251, 336, 353, 326, 311, 326, 326, 49, 47,
+ /* 1040 */
+ 280, 238, 297, 326, 326, 105, 1, 326, 326, 326,
+ /* 1050 */
+ 326, 326, 14, 326, 299, 326, 326, 8, 142, 224,
+ /* 1060 */
+ 96, 326, 2, 108, 41, 235, 248, 326, 139, 154,
+ /* 1070 */
+ 32, 235, 250, 128, 228, 156, 246, 326, 33, 128,
+ /* 1080 */
+ 326, 48, 326, 326, 326, 251, 336, 353, 326, 311,
+ /* 1090 */
+ 326, 251, 336, 353, 326, 311, 49, 47, 280, 238,
+ /* 1100 */
+ 297, 326, 326, 105, 1, 326, 326, 326, 326, 326,
+ /* 1110 */
+ 326, 326, 326, 326, 326, 8, 138, 213, 96, 326,
+ /* 1120 */
+ 2, 108, 326, 326, 326, 326, 139, 235, 326, 326,
+ /* 1130 */
+ 250, 149, 228, 326, 246, 128, 24, 326, 326, 48,
+ /* 1140 */
+ 326, 326, 326, 326, 326, 326, 326, 251, 336, 353,
+ /* 1150 */
+ 326, 311, 326, 326, 49, 47, 280, 238, 297, 326,
+ /* 1160 */
+ 326, 105, 1, 326, 326, 326, 326, 326, 326, 326,
+ /* 1170 */
+ 326, 326, 326, 8, 138, 210, 96, 326, 2, 108,
+ /* 1180 */
+ 326, 326, 326, 326, 139, 235, 326, 326, 250, 151,
+ /* 1190 */
+ 228, 326, 219, 128, 24, 326, 326, 48, 326, 326,
+ /* 1200 */
+ 326, 326, 326, 326, 326, 251, 336, 353, 326, 311,
+ /* 1210 */
+ 326, 326, 49, 47, 280, 238, 297, 326, 326, 105,
+ /* 1220 */
+ 1, 326, 326, 326, 326, 326, 326, 326, 326, 326,
+ /* 1230 */
+ 326, 8, 136, 224, 96, 326, 2, 108, 326, 326,
+ /* 1240 */
+ 326, 326, 139, 235, 326, 326, 250, 152, 228, 326,
+ /* 1250 */
+ 246, 128, 24, 326, 326, 48, 326, 326, 326, 326,
+ /* 1260 */
+ 326, 326, 326, 251, 336, 353, 326, 311, 326, 326,
+ /* 1270 */
+ 49, 47, 280, 238, 297, 326, 326, 105, 1, 326,
+ /* 1280 */
+ 225, 326, 391, 326, 422, 326, 326, 326, 326, 8,
+ /* 1290 */
+ 135, 224, 96, 326, 2, 108, 326, 326, 326, 326,
+ /* 1300 */
+ 139, 236, 229, 326, 250, 326, 228, 326, 246, 41,
+ /* 1310 */
+ 5, 422, 326, 48, 326, 32, 326, 422, 7, 326,
+ /* 1320 */
+ 7, 326, 326, 326, 198, 178, 326, 326, 49, 47,
+ /* 1330 */
+ 280, 238, 297, 326, 321, 105, 1, 43, 19, 326,
+ /* 1340 */
+ 326, 134, 326, 134, 326, 326, 326, 8, 138, 209,
+ /* 1350 */
+ 96, 208, 2, 108, 326, 326, 326, 326, 139, 326,
+ /* 1360 */
+ 326, 326, 250, 326, 228, 326, 246, 326, 24, 198,
+ /* 1370 */
+ 164, 48, 326, 326, 326, 326, 326, 326, 326, 321,
+ /* 1380 */
+ 326, 326, 43, 19, 326, 326, 49, 47, 280, 238,
+ /* 1390 */
+ 297, 326, 326, 105, 1, 326, 208, 326, 326, 326,
+ /* 1400 */
+ 326, 326, 326, 326, 326, 8, 142, 224, 96, 326,
+ /* 1410 */
+ 2, 108, 326, 326, 326, 326, 139, 326, 326, 326,
+ /* 1420 */
+ 250, 326, 228, 326, 246, 326, 33, 198, 177, 48,
+ /* 1430 */
+ 326, 326, 326, 326, 326, 326, 326, 321, 326, 326,
+ /* 1440 */
+ 43, 19, 326, 326, 49, 47, 280, 238, 297, 326,
+ /* 1450 */
+ 326, 105, 326, 326, 208, 326, 326, 326, 326, 326,
+ /* 1460 */
+ 326, 326, 326, 8, 142, 222, 96, 326, 2, 108,
+ /* 1470 */
+ 326, 326, 326, 326, 139, 326, 326, 326, 250, 326,
+ /* 1480 */
+ 228, 326, 246, 326, 33, 326, 467, 48, 326, 326,
+ /* 1490 */
+ 326, 326, 326, 326, 326, 326, 326, 326, 326, 326,
+ /* 1500 */
+ 326, 326, 49, 47, 280, 238, 297, 326, 467, 105,
+ /* 1510 */
+ 467, 467, 326, 467, 467, 326, 326, 326, 326, 467,
+ /* 1520 */
+ 326, 467, 7, 467, 96, 326, 326, 326, 326, 326,
+ /* 1530 */
+ 326, 326, 326, 326, 326, 235, 326, 326, 467, 121,
+ /* 1540 */
+ 326, 326, 86, 128, 326, 134, 326, 326, 326, 467,
+ /* 1550 */
+ 326, 290, 318, 326, 326, 251, 336, 353, 326, 311,
+ /* 1560 */
+ 326, 326, 326, 467, 326, 326, 326, 235, 326, 216,
+ /* 1570 */
+ 354, 133, 326, 326, 68, 117, 249, 326, 326, 326,
+ /* 1580 */
+ 326, 326, 326, 290, 318, 326, 326, 251, 336, 353,
+ /* 1590 */
+ 235, 311, 326, 326, 133, 326, 326, 76, 128, 326,
+ /* 1600 */
+ 326, 326, 326, 326, 326, 326, 290, 318, 326, 235,
+ /* 1610 */
+ 251, 336, 353, 133, 311, 326, 76, 128, 326, 326,
+ /* 1620 */
+ 326, 221, 326, 326, 326, 290, 318, 326, 326, 251,
+ /* 1630 */
+ 336, 353, 326, 311, 326, 326, 326, 326, 235, 326,
+ /* 1640 */
+ 215, 326, 121, 326, 326, 86, 128, 326, 326, 326,
+ /* 1650 */
+ 326, 326, 326, 326, 290, 318, 326, 326, 251, 336,
+ /* 1660 */
+ 353, 235, 311, 326, 326, 133, 326, 326, 59, 117,
+ /* 1670 */
+ 137, 326, 326, 355, 326, 326, 326, 290, 318, 326,
+ /* 1680 */
+ 326, 251, 336, 353, 235, 311, 326, 326, 133, 326,
+ /* 1690 */
+ 326, 76, 128, 326, 326, 326, 326, 326, 326, 326,
+ /* 1700 */
+ 290, 318, 326, 235, 251, 336, 353, 110, 311, 326,
+ /* 1710 */
+ 69, 128, 326, 326, 326, 217, 326, 326, 326, 290,
+ /* 1720 */
+ 318, 326, 326, 251, 336, 353, 326, 311, 326, 235,
+ /* 1730 */
+ 101, 160, 326, 133, 326, 326, 57, 128, 326, 326,
+ /* 1740 */
+ 321, 326, 326, 43, 19, 290, 318, 326, 235, 251,
+ /* 1750 */
+ 336, 353, 133, 311, 326, 73, 128, 208, 326, 326,
+ /* 1760 */
+ 326, 326, 326, 326, 290, 318, 326, 326, 251, 336,
+ /* 1770 */
+ 353, 235, 311, 326, 326, 133, 326, 326, 78, 128,
+ /* 1780 */
+ 326, 326, 326, 326, 326, 326, 326, 290, 318, 326,
+ /* 1790 */
+ 235, 251, 336, 353, 133, 311, 326, 70, 128, 326,
+ /* 1800 */
+ 326, 326, 326, 326, 326, 326, 290, 318, 326, 326,
+ /* 1810 */
+ 251, 336, 353, 326, 311, 326, 235, 198, 167, 326,
+ /* 1820 */
+ 133, 326, 326, 64, 128, 326, 326, 321, 326, 326,
+ /* 1830 */
+ 43, 19, 290, 318, 326, 235, 251, 336, 353, 133,
+ /* 1840 */
+ 311, 326, 67, 128, 208, 326, 326, 326, 326, 326,
+ /* 1850 */
+ 326, 290, 318, 326, 326, 251, 336, 353, 235, 311,
+ /* 1860 */
+ 326, 326, 133, 326, 326, 88, 128, 326, 326, 326,
+ /* 1870 */
+ 326, 326, 326, 326, 290, 318, 326, 235, 251, 336,
+ /* 1880 */
+ 353, 133, 311, 326, 82, 128, 326, 326, 326, 326,
+ /* 1890 */
+ 326, 326, 326, 290, 318, 326, 326, 251, 336, 353,
+ /* 1900 */
+ 326, 311, 326, 235, 198, 188, 326, 133, 326, 326,
+ /* 1910 */
+ 72, 128, 326, 326, 321, 326, 326, 43, 19, 290,
+ /* 1920 */
+ 318, 326, 235, 251, 336, 353, 93, 311, 326, 55,
+ /* 1930 */
+ 116, 208, 326, 326, 326, 326, 326, 326, 290, 318,
+ /* 1940 */
+ 326, 326, 251, 336, 353, 235, 311, 326, 326, 112,
+ /* 1950 */
+ 326, 326, 87, 128, 326, 326, 326, 326, 326, 326,
+ /* 1960 */
+ 326, 290, 318, 326, 235, 251, 336, 353, 133, 311,
+ /* 1970 */
+ 326, 77, 128, 326, 326, 326, 326, 326, 326, 326,
+ /* 1980 */
+ 290, 318, 326, 326, 251, 336, 353, 326, 311, 326,
+ /* 1990 */
+ 235, 326, 326, 326, 133, 326, 326, 89, 128, 326,
+ /* 2000 */
+ 326, 326, 326, 326, 326, 326, 290, 318, 326, 235,
+ /* 2010 */
+ 251, 336, 353, 133, 311, 326, 75, 128, 326, 326,
+ /* 2020 */
+ 326, 326, 326, 326, 326, 290, 318, 326, 326, 251,
+ /* 2030 */
+ 336, 353, 235, 311, 326, 326, 133, 326, 326, 91,
+ /* 2040 */
+ 128, 326, 326, 326, 326, 326, 326, 326, 290, 318,
+ /* 2050 */
+ 326, 235, 251, 336, 353, 133, 311, 326, 62, 128,
+ /* 2060 */
+ 326, 326, 326, 326, 326, 326, 326, 290, 318, 326,
+ /* 2070 */
+ 326, 251, 336, 353, 326, 311, 326, 235, 326, 326,
+ /* 2080 */
+ 326, 93, 326, 326, 53, 116, 326, 326, 326, 326,
+ /* 2090 */
+ 326, 326, 326, 290, 318, 326, 235, 220, 336, 353,
+ /* 2100 */
+ 133, 311, 326, 63, 128, 326, 326, 326, 326, 326,
+ /* 2110 */
+ 326, 326, 290, 318, 326, 326, 251, 336, 353, 235,
+ /* 2120 */
+ 311, 326, 326, 133, 326, 326, 61, 128, 326, 326,
+ /* 2130 */
+ 326, 326, 326, 326, 326, 290, 318, 326, 235, 214,
+ /* 2140 */
+ 336, 353, 133, 311, 326, 71, 128, 326, 326, 326,
+ /* 2150 */
+ 326, 326, 326, 326, 290, 318, 326, 326, 251, 336,
+ /* 2160 */
+ 353, 326, 311, 326, 235, 326, 326, 326, 133, 326,
+ /* 2170 */
+ 326, 85, 128, 326, 326, 326, 326, 326, 326, 326,
+ /* 2180 */
+ 290, 318, 326, 235, 251, 336, 353, 133, 311, 326,
+ /* 2190 */
+ 65, 128, 326, 326, 326, 326, 326, 326, 326, 290,
+ /* 2200 */
+ 318, 326, 326, 251, 336, 353, 235, 311, 326, 326,
+ /* 2210 */
+ 111, 326, 326, 74, 128, 326, 326, 326, 326, 326,
+ /* 2220 */
+ 326, 326, 290, 318, 326, 235, 251, 336, 353, 118,
+ /* 2230 */
+ 311, 326, 58, 128, 326, 326, 326, 326, 326, 326,
+ /* 2240 */
+ 326, 290, 318, 326, 326, 251, 336, 353, 326, 311,
+ /* 2250 */
+ 326, 235, 326, 326, 326, 133, 326, 326, 56, 128,
+ /* 2260 */
+ 326, 326, 326, 326, 326, 326, 326, 290, 318, 326,
+ /* 2270 */
+ 235, 251, 336, 353, 133, 311, 326, 79, 128, 326,
+ /* 2280 */
+ 326, 326, 326, 326, 326, 326, 290, 318, 326, 326,
+ /* 2290 */
+ 251, 336, 353, 235, 311, 326, 326, 133, 326, 326,
+ /* 2300 */
+ 80, 128, 326, 326, 326, 326, 326, 326, 326, 290,
+ /* 2310 */
+ 318, 326, 235, 251, 336, 353, 133, 311, 326, 84,
+ /* 2320 */
+ 128, 326, 326, 326, 326, 326, 326, 326, 290, 318,
+ /* 2330 */
+ 326, 326, 251, 336, 353, 326, 311, 326, 235, 326,
+ /* 2340 */
+ 326, 326, 133, 326, 326, 66, 128, 326, 326, 326,
+ /* 2350 */
+ 326, 326, 326, 326, 290, 318, 326, 344, 251, 336,
+ /* 2360 */
+ 353, 326, 311, 326, 10, 326, 326, 326, 326, 2,
+ /* 2370 */
+ 108, 344, 326, 326, 326, 139, 326, 326, 10, 250,
+ /* 2380 */
+ 326, 228, 326, 2, 108, 326, 326, 326, 326, 139,
+ /* 2390 */
+ 326, 326, 326, 250, 326, 228, 235, 326, 326, 326,
+ /* 2400 */
+ 133, 326, 326, 60, 128, 326, 326, 326, 326, 326,
+ /* 2410 */
+ 326, 326, 290, 318, 326, 326, 251, 336, 353, 326,
+ /* 2420 */
+ 311, 326, 326, 326, 326, 306, 16, 347, 326, 235,
+ /* 2430 */
+ 326, 326, 326, 133, 326, 326, 81, 128, 326, 327,
+ /* 2440 */
+ 16, 347, 326, 326, 326, 290, 318, 326, 326, 251,
+ /* 2450 */
+ 336, 353, 326, 311, 326, 326, 235, 326, 326, 326,
+ /* 2460 */
+ 133, 326, 326, 68, 128, 326, 326, 326, 326, 326,
+ /* 2470 */
+ 326, 326, 290, 318, 326, 326, 251, 336, 353, 326,
+ /* 2480 */
+ 311, 326, 235, 326, 326, 326, 133, 326, 326, 54,
+ /* 2490 */
+ 128, 326, 326, 326, 326, 326, 326, 326, 290, 318,
+ /* 2500 */
+ 326, 326, 251, 336, 353, 235, 311, 326, 326, 133,
+ /* 2510 */
+ 326, 326, 83, 128, 326, 326, 235, 326, 326, 326,
+ /* 2520 */
+ 133, 290, 318, 90, 128, 251, 336, 353, 326, 311,
+ /* 2530 */
+ 326, 326, 290, 318, 326, 326, 251, 336, 353, 326,
+ /* 2540 */
+ 311,
);
static public $yy_lookahead = array(
- /* 0 */ 1, 3, 4, 5, 6, 7, 8, 9, 10, 11,
- /* 10 */ 12, 13, 113, 114, 16, 91, 17, 17, 91, 16,
- /* 20 */ 22, 23, 19, 20, 100, 24, 28, 100, 29, 29,
- /* 30 */ 32, 33, 34, 29, 35, 35, 112, 16, 37, 40,
- /* 40 */ 41, 42, 43, 44, 45, 46, 47, 48, 49, 50,
- /* 50 */ 51, 52, 53, 1, 82, 83, 84, 85, 86, 38,
- /* 60 */ 16, 90, 18, 19, 90, 66, 67, 68, 69, 70,
- /* 70 */ 71, 72, 73, 74, 75, 76, 77, 103, 104, 27,
- /* 80 */ 36, 29, 16, 96, 18, 19, 16, 35, 117, 19,
- /* 90 */ 20, 117, 40, 41, 42, 43, 44, 45, 46, 47,
- /* 100 */ 48, 49, 50, 51, 52, 53, 4, 5, 6, 7,
- /* 110 */ 8, 20, 118, 38, 38, 13, 14, 15, 66, 67,
- /* 120 */ 68, 69, 70, 71, 72, 73, 74, 75, 76, 77,
- /* 130 */ 1, 85, 62, 1, 59, 89, 61, 61, 92, 93,
- /* 140 */ 65, 16, 20, 21, 19, 17, 17, 101, 102, 17,
- /* 150 */ 59, 105, 106, 107, 29, 109, 31, 29, 29, 91,
- /* 160 */ 35, 29, 30, 35, 35, 119, 120, 35, 100, 40,
- /* 170 */ 41, 42, 43, 44, 45, 46, 47, 48, 49, 50,
- /* 180 */ 51, 52, 53, 61, 90, 91, 54, 113, 114, 111,
- /* 190 */ 16, 113, 114, 19, 100, 66, 67, 68, 69, 70,
- /* 200 */ 71, 72, 73, 74, 75, 76, 77, 1, 85, 59,
- /* 210 */ 1, 117, 89, 1, 64, 92, 93, 94, 1, 17,
- /* 220 */ 108, 17, 20, 17, 101, 102, 17, 115, 105, 106,
- /* 230 */ 107, 29, 109, 29, 17, 29, 62, 35, 29, 35,
- /* 240 */ 38, 35, 19, 31, 35, 99, 40, 41, 42, 43,
- /* 250 */ 44, 45, 46, 47, 48, 49, 50, 51, 52, 53,
- /* 260 */ 1, 16, 37, 61, 19, 20, 54, 110, 1, 2,
- /* 270 */ 25, 54, 66, 67, 68, 69, 70, 71, 72, 73,
- /* 280 */ 74, 75, 76, 77, 17, 62, 90, 91, 29, 1,
- /* 290 */ 65, 90, 110, 37, 35, 39, 100, 20, 21, 40,
- /* 300 */ 41, 42, 43, 44, 45, 46, 47, 48, 49, 50,
- /* 310 */ 51, 52, 53, 117, 90, 91, 96, 29, 117, 118,
- /* 320 */ 84, 85, 86, 35, 100, 66, 67, 68, 69, 70,
- /* 330 */ 71, 72, 73, 74, 75, 76, 77, 1, 61, 99,
- /* 340 */ 1, 117, 37, 85, 39, 18, 19, 89, 10, 16,
- /* 350 */ 99, 93, 19, 17, 16, 21, 17, 93, 85, 1,
- /* 360 */ 22, 23, 29, 105, 106, 107, 28, 109, 35, 105,
- /* 370 */ 32, 33, 34, 109, 25, 17, 40, 41, 42, 43,
- /* 380 */ 44, 45, 46, 47, 48, 49, 50, 51, 52, 53,
- /* 390 */ 63, 1, 31, 59, 121, 122, 25, 2, 64, 38,
- /* 400 */ 18, 19, 66, 67, 68, 69, 70, 71, 72, 73,
- /* 410 */ 74, 75, 76, 77, 24, 20, 78, 79, 80, 91,
- /* 420 */ 91, 29, 61, 93, 94, 95, 19, 35, 100, 100,
- /* 430 */ 40, 41, 42, 43, 44, 45, 46, 47, 48, 49,
- /* 440 */ 50, 51, 52, 53, 91, 117, 117, 37, 16, 39,
- /* 450 */ 79, 19, 110, 100, 112, 19, 66, 67, 68, 69,
- /* 460 */ 70, 71, 72, 73, 74, 75, 76, 77, 1, 85,
- /* 470 */ 117, 1, 1, 89, 108, 90, 92, 93, 94, 16,
- /* 480 */ 1, 115, 19, 17, 17, 101, 102, 17, 17, 105,
- /* 490 */ 106, 107, 29, 109, 31, 29, 17, 91, 35, 29,
- /* 500 */ 21, 35, 117, 19, 18, 35, 100, 40, 41, 42,
- /* 510 */ 43, 44, 45, 46, 47, 48, 49, 50, 51, 52,
- /* 520 */ 53, 1, 16, 117, 54, 19, 16, 18, 1, 19,
- /* 530 */ 97, 97, 1, 66, 67, 68, 69, 70, 71, 72,
- /* 540 */ 73, 74, 75, 76, 77, 112, 112, 38, 17, 90,
- /* 550 */ 93, 94, 16, 16, 26, 19, 19, 93, 94, 39,
- /* 560 */ 40, 41, 42, 43, 44, 45, 46, 47, 48, 49,
- /* 570 */ 50, 51, 52, 53, 1, 2, 117, 17, 110, 16,
- /* 580 */ 112, 54, 19, 18, 97, 25, 66, 67, 68, 69,
- /* 590 */ 70, 71, 72, 73, 74, 75, 76, 77, 62, 112,
- /* 600 */ 29, 19, 91, 86, 38, 88, 35, 19, 63, 55,
- /* 610 */ 63, 100, 97, 40, 41, 42, 43, 44, 45, 46,
- /* 620 */ 47, 48, 49, 50, 51, 52, 53, 112, 19, 65,
- /* 630 */ 39, 18, 2, 36, 36, 59, 19, 18, 97, 66,
- /* 640 */ 67, 68, 69, 70, 71, 72, 73, 74, 75, 76,
- /* 650 */ 77, 1, 85, 112, 1, 18, 89, 85, 19, 92,
- /* 660 */ 93, 89, 19, 38, 20, 93, 91, 17, 101, 102,
- /* 670 */ 17, 97, 105, 106, 107, 100, 109, 105, 106, 107,
- /* 680 */ 19, 109, 29, 116, 2, 19, 112, 112, 35, 21,
- /* 690 */ 40, 41, 42, 43, 44, 45, 46, 47, 48, 49,
- /* 700 */ 50, 51, 52, 53, 1, 1, 100, 54, 112, 117,
- /* 710 */ 111, 2, 21, 110, 98, 97, 66, 67, 68, 69,
- /* 720 */ 70, 71, 72, 73, 74, 75, 76, 77, 112, 61,
- /* 730 */ 112, 85, 14, 110, 87, 115, 114, 123, 123, 123,
- /* 740 */ 123, 123, 97, 40, 41, 42, 43, 44, 45, 46,
- /* 750 */ 47, 48, 49, 50, 51, 52, 53, 112, 123, 123,
- /* 760 */ 123, 123, 123, 123, 123, 123, 123, 123, 122, 66,
- /* 770 */ 67, 68, 69, 70, 71, 72, 73, 74, 75, 76,
- /* 780 */ 77, 1, 79, 85, 123, 1, 123, 89, 123, 123,
- /* 790 */ 92, 93, 123, 97, 17, 123, 97, 17, 17, 101,
- /* 800 */ 102, 17, 123, 105, 106, 107, 29, 109, 112, 123,
- /* 810 */ 29, 112, 35, 29, 116, 123, 35, 123, 123, 35,
- /* 820 */ 40, 41, 42, 43, 44, 45, 46, 47, 48, 49,
- /* 830 */ 50, 51, 52, 53, 1, 123, 123, 123, 54, 123,
- /* 840 */ 123, 123, 123, 123, 123, 123, 66, 67, 68, 69,
- /* 850 */ 70, 71, 72, 73, 74, 75, 76, 77, 123, 123,
- /* 860 */ 123, 123, 123, 123, 123, 123, 123, 123, 123, 123,
- /* 870 */ 123, 123, 39, 40, 41, 42, 43, 44, 45, 46,
- /* 880 */ 47, 48, 49, 50, 51, 52, 53, 1, 123, 123,
- /* 890 */ 123, 123, 123, 123, 123, 123, 123, 123, 123, 66,
- /* 900 */ 67, 68, 69, 70, 71, 72, 73, 74, 75, 76,
- /* 910 */ 77, 123, 123, 123, 123, 123, 123, 123, 123, 123,
- /* 920 */ 123, 123, 123, 123, 123, 123, 40, 41, 42, 43,
- /* 930 */ 44, 45, 46, 47, 48, 49, 50, 51, 52, 53,
- /* 940 */ 1, 123, 123, 123, 123, 123, 123, 123, 123, 123,
- /* 950 */ 123, 65, 66, 67, 68, 69, 70, 71, 72, 73,
- /* 960 */ 74, 75, 76, 77, 123, 123, 123, 123, 123, 30,
- /* 970 */ 123, 123, 123, 123, 123, 123, 123, 123, 123, 40,
- /* 980 */ 41, 42, 43, 44, 45, 46, 47, 48, 49, 50,
- /* 990 */ 51, 52, 53, 1, 123, 123, 123, 123, 123, 123,
- /* 1000 */ 123, 123, 123, 123, 123, 66, 67, 68, 69, 70,
- /* 1010 */ 71, 72, 73, 74, 75, 76, 77, 123, 123, 123,
- /* 1020 */ 123, 123, 123, 123, 123, 123, 123, 123, 123, 123,
- /* 1030 */ 123, 123, 40, 41, 42, 43, 44, 45, 46, 47,
- /* 1040 */ 48, 49, 50, 51, 52, 53, 123, 123, 123, 123,
- /* 1050 */ 123, 123, 123, 123, 123, 123, 123, 123, 66, 67,
- /* 1060 */ 68, 69, 70, 71, 72, 73, 74, 75, 76, 77,
- /* 1070 */ 123, 123, 123, 40, 41, 42, 43, 44, 45, 46,
- /* 1080 */ 47, 48, 49, 50, 51, 52, 53, 123, 123, 123,
- /* 1090 */ 123, 123, 123, 123, 123, 123, 123, 123, 123, 66,
- /* 1100 */ 67, 68, 69, 70, 71, 72, 73, 74, 75, 76,
- /* 1110 */ 77, 123, 123, 123, 123, 123, 16, 123, 18, 19,
- /* 1120 */ 123, 123, 22, 23, 123, 17, 123, 85, 28, 123,
- /* 1130 */ 123, 89, 32, 33, 34, 93, 36, 29, 38, 123,
- /* 1140 */ 123, 41, 123, 35, 102, 123, 85, 105, 106, 107,
- /* 1150 */ 89, 109, 123, 91, 93, 123, 56, 57, 58, 59,
- /* 1160 */ 60, 123, 100, 63, 64, 65, 105, 106, 107, 17,
- /* 1170 */ 109, 123, 123, 16, 112, 18, 19, 123, 78, 22,
- /* 1180 */ 23, 29, 17, 123, 123, 28, 123, 35, 123, 32,
- /* 1190 */ 33, 34, 123, 36, 29, 38, 123, 123, 41, 123,
- /* 1200 */ 35, 123, 85, 123, 123, 123, 89, 123, 123, 92,
- /* 1210 */ 93, 123, 123, 56, 57, 58, 59, 60, 101, 102,
- /* 1220 */ 63, 64, 105, 106, 107, 123, 109, 17, 123, 123,
- /* 1230 */ 16, 123, 18, 19, 123, 78, 22, 23, 123, 29,
- /* 1240 */ 91, 123, 28, 123, 17, 35, 32, 33, 34, 100,
- /* 1250 */ 36, 123, 38, 123, 123, 41, 29, 123, 123, 85,
- /* 1260 */ 123, 112, 35, 89, 123, 123, 92, 93, 123, 123,
- /* 1270 */ 56, 57, 58, 59, 60, 101, 102, 63, 64, 105,
- /* 1280 */ 106, 107, 123, 109, 17, 123, 123, 16, 123, 18,
- /* 1290 */ 19, 123, 78, 22, 23, 123, 29, 123, 123, 28,
- /* 1300 */ 123, 17, 35, 32, 33, 34, 123, 36, 123, 38,
- /* 1310 */ 123, 123, 41, 29, 123, 123, 85, 123, 123, 35,
- /* 1320 */ 89, 123, 123, 92, 93, 123, 123, 56, 57, 58,
- /* 1330 */ 59, 60, 101, 102, 63, 64, 105, 106, 107, 123,
- /* 1340 */ 109, 17, 123, 123, 16, 123, 18, 19, 123, 78,
- /* 1350 */ 22, 23, 123, 29, 123, 123, 28, 123, 17, 35,
- /* 1360 */ 32, 33, 34, 123, 36, 123, 38, 123, 123, 41,
- /* 1370 */ 29, 123, 123, 85, 123, 123, 35, 89, 123, 123,
- /* 1380 */ 92, 93, 123, 123, 56, 57, 58, 59, 60, 101,
- /* 1390 */ 102, 63, 64, 105, 106, 107, 123, 109, 17, 123,
- /* 1400 */ 123, 16, 123, 18, 19, 123, 78, 22, 23, 123,
- /* 1410 */ 29, 123, 123, 28, 123, 17, 35, 32, 33, 34,
- /* 1420 */ 123, 36, 123, 38, 123, 123, 41, 29, 123, 123,
- /* 1430 */ 85, 123, 123, 35, 89, 123, 123, 92, 93, 123,
- /* 1440 */ 123, 56, 57, 58, 59, 60, 101, 102, 63, 64,
- /* 1450 */ 105, 106, 107, 123, 109, 17, 123, 123, 16, 123,
- /* 1460 */ 18, 19, 123, 78, 22, 23, 123, 29, 123, 123,
- /* 1470 */ 28, 123, 17, 35, 32, 33, 34, 123, 36, 123,
- /* 1480 */ 38, 123, 123, 41, 29, 123, 123, 85, 123, 123,
- /* 1490 */ 35, 89, 123, 123, 92, 93, 123, 123, 56, 57,
- /* 1500 */ 58, 59, 60, 101, 102, 63, 64, 105, 106, 107,
- /* 1510 */ 123, 109, 17, 123, 123, 16, 123, 18, 19, 123,
- /* 1520 */ 78, 22, 23, 123, 29, 123, 123, 28, 123, 17,
- /* 1530 */ 35, 32, 33, 34, 123, 36, 123, 38, 123, 123,
- /* 1540 */ 41, 29, 123, 123, 85, 123, 123, 35, 89, 123,
- /* 1550 */ 123, 92, 93, 123, 123, 56, 57, 58, 59, 60,
- /* 1560 */ 101, 102, 63, 64, 105, 106, 107, 123, 109, 123,
- /* 1570 */ 123, 123, 16, 123, 18, 19, 123, 78, 22, 23,
- /* 1580 */ 123, 123, 123, 123, 28, 123, 123, 123, 32, 33,
- /* 1590 */ 34, 123, 36, 123, 38, 123, 123, 41, 123, 123,
- /* 1600 */ 123, 85, 123, 123, 123, 89, 123, 123, 92, 93,
- /* 1610 */ 123, 123, 56, 57, 58, 59, 60, 101, 102, 63,
- /* 1620 */ 64, 105, 106, 107, 123, 109, 123, 123, 123, 16,
- /* 1630 */ 123, 18, 19, 123, 78, 22, 23, 123, 123, 123,
- /* 1640 */ 123, 28, 123, 123, 123, 32, 33, 34, 123, 36,
- /* 1650 */ 123, 38, 123, 123, 41, 123, 123, 123, 85, 123,
- /* 1660 */ 123, 123, 89, 123, 123, 92, 93, 123, 123, 56,
- /* 1670 */ 57, 58, 59, 60, 101, 102, 63, 123, 105, 106,
- /* 1680 */ 107, 123, 109, 123, 123, 123, 16, 123, 18, 19,
- /* 1690 */ 123, 78, 22, 23, 123, 123, 123, 123, 28, 123,
- /* 1700 */ 123, 123, 32, 33, 34, 123, 36, 123, 38, 123,
- /* 1710 */ 123, 41, 123, 123, 123, 85, 123, 123, 123, 89,
- /* 1720 */ 123, 123, 92, 93, 123, 123, 56, 57, 58, 59,
- /* 1730 */ 60, 101, 102, 63, 123, 105, 106, 107, 123, 109,
- /* 1740 */ 123, 123, 123, 123, 17, 123, 116, 123, 78, 123,
- /* 1750 */ 123, 24, 123, 26, 27, 10, 29, 30, 123, 123,
- /* 1760 */ 123, 16, 35, 123, 37, 38, 39, 22, 23, 123,
- /* 1770 */ 90, 91, 123, 28, 123, 123, 123, 32, 33, 34,
- /* 1780 */ 100, 54, 123, 103, 104, 123, 123, 123, 61, 123,
- /* 1790 */ 123, 123, 65, 123, 85, 90, 91, 117, 89, 123,
- /* 1800 */ 123, 92, 93, 123, 123, 100, 79, 123, 103, 104,
- /* 1810 */ 101, 102, 123, 85, 105, 106, 107, 89, 109, 123,
- /* 1820 */ 123, 93, 117, 78, 79, 80, 123, 123, 123, 120,
- /* 1830 */ 102, 123, 85, 105, 106, 107, 89, 109, 123, 92,
- /* 1840 */ 93, 123, 1, 85, 123, 123, 123, 89, 101, 102,
- /* 1850 */ 92, 93, 105, 106, 107, 123, 109, 123, 17, 101,
- /* 1860 */ 102, 123, 21, 105, 106, 107, 123, 109, 123, 123,
- /* 1870 */ 29, 123, 123, 123, 85, 123, 35, 123, 89, 38,
- /* 1880 */ 123, 92, 93, 123, 123, 123, 123, 123, 123, 123,
- /* 1890 */ 101, 102, 123, 123, 105, 106, 107, 85, 109, 123,
- /* 1900 */ 123, 89, 61, 85, 92, 93, 123, 89, 123, 123,
- /* 1910 */ 123, 93, 123, 101, 102, 123, 123, 105, 106, 107,
- /* 1920 */ 123, 109, 85, 105, 106, 107, 89, 109, 123, 92,
- /* 1930 */ 93, 123, 123, 85, 123, 123, 123, 89, 101, 102,
- /* 1940 */ 92, 93, 105, 106, 107, 123, 109, 123, 123, 101,
- /* 1950 */ 102, 123, 123, 105, 106, 107, 123, 109, 123, 123,
- /* 1960 */ 85, 90, 91, 123, 89, 123, 123, 92, 93, 123,
- /* 1970 */ 123, 100, 123, 123, 103, 104, 101, 102, 123, 123,
- /* 1980 */ 105, 106, 107, 85, 109, 123, 123, 89, 117, 85,
- /* 1990 */ 92, 93, 123, 89, 123, 123, 123, 93, 123, 101,
- /* 2000 */ 102, 123, 123, 105, 106, 107, 123, 109, 85, 105,
- /* 2010 */ 106, 107, 89, 109, 123, 92, 93, 123, 123, 85,
- /* 2020 */ 123, 123, 123, 89, 101, 102, 92, 93, 105, 106,
- /* 2030 */ 107, 123, 109, 123, 123, 101, 102, 123, 123, 105,
- /* 2040 */ 106, 107, 123, 109, 123, 123, 85, 123, 123, 123,
- /* 2050 */ 89, 123, 123, 92, 93, 123, 123, 123, 123, 123,
- /* 2060 */ 123, 123, 101, 102, 123, 123, 105, 106, 107, 85,
- /* 2070 */ 109, 123, 123, 89, 123, 85, 92, 93, 123, 89,
- /* 2080 */ 123, 123, 123, 93, 123, 101, 102, 123, 123, 105,
- /* 2090 */ 106, 107, 123, 109, 85, 105, 106, 107, 89, 109,
- /* 2100 */ 123, 92, 93, 123, 123, 85, 123, 123, 123, 89,
- /* 2110 */ 101, 102, 92, 93, 105, 106, 107, 123, 109, 123,
- /* 2120 */ 123, 101, 102, 123, 123, 105, 106, 107, 123, 109,
- /* 2130 */ 123, 123, 85, 123, 123, 123, 89, 123, 123, 92,
- /* 2140 */ 93, 123, 123, 123, 123, 123, 123, 123, 101, 102,
- /* 2150 */ 123, 123, 105, 106, 107, 85, 109, 123, 123, 89,
- /* 2160 */ 123, 85, 92, 93, 123, 89, 123, 123, 123, 93,
- /* 2170 */ 123, 101, 102, 123, 123, 105, 106, 107, 123, 109,
- /* 2180 */ 85, 105, 106, 107, 89, 109, 123, 92, 93, 123,
- /* 2190 */ 123, 85, 123, 123, 123, 89, 101, 102, 92, 93,
- /* 2200 */ 105, 106, 107, 123, 109, 123, 123, 101, 102, 123,
- /* 2210 */ 123, 105, 106, 107, 123, 109, 123, 123, 85, 123,
- /* 2220 */ 123, 123, 89, 123, 123, 92, 93, 123, 123, 123,
- /* 2230 */ 123, 123, 123, 123, 101, 102, 123, 123, 105, 106,
- /* 2240 */ 107, 85, 109, 123, 123, 89, 123, 123, 92, 93,
- /* 2250 */ 123, 123, 123, 123, 123, 123, 123, 101, 102, 123,
- /* 2260 */ 123, 105, 106, 107, 123, 109, 85, 123, 123, 123,
- /* 2270 */ 89, 123, 123, 92, 93, 123, 123, 85, 123, 123,
- /* 2280 */ 123, 89, 101, 102, 92, 93, 105, 106, 107, 123,
- /* 2290 */ 109, 123, 123, 101, 102, 123, 123, 105, 106, 107,
- /* 2300 */ 123, 109, 123, 123, 85, 123, 123, 123, 89, 123,
- /* 2310 */ 123, 92, 93, 123, 123, 123, 123, 123, 123, 123,
- /* 2320 */ 101, 102, 123, 123, 105, 106, 107, 85, 109, 123,
- /* 2330 */ 123, 89, 123, 123, 92, 93, 123, 123, 123, 123,
- /* 2340 */ 123, 123, 123, 101, 102, 123, 123, 105, 106, 107,
- /* 2350 */ 123, 109, 85, 123, 123, 123, 89, 123, 123, 92,
- /* 2360 */ 93, 123, 123, 85, 123, 123, 123, 89, 101, 102,
- /* 2370 */ 92, 93, 105, 106, 107, 123, 109, 123, 123, 101,
- /* 2380 */ 102, 123, 123, 105, 106, 107, 123, 109, 123, 123,
- /* 2390 */ 85, 123, 123, 123, 89, 123, 123, 92, 93, 123,
- /* 2400 */ 123, 123, 123, 90, 91, 123, 101, 102, 123, 123,
- /* 2410 */ 105, 106, 107, 100, 109, 123, 103, 104, 90, 91,
- /* 2420 */ 123, 123, 123, 123, 123, 90, 91, 123, 100, 123,
- /* 2430 */ 117, 103, 104, 123, 123, 100, 123, 123, 103, 104,
- /* 2440 */ 123, 123, 123, 123, 123, 117, 123, 123, 123, 123,
- /* 2450 */ 123, 123, 117,
-);
- const YY_SHIFT_USE_DFLT = -3;
- const YY_SHIFT_MAX = 252;
+ /* 0 */
+ 1, 38, 3, 40, 91, 4, 5, 6, 7, 8,
+ /* 10 */
+ 9, 10, 11, 12, 13, 14, 15, 104, 105, 18,
+ /* 20 */
+ 118, 18, 60, 20, 23, 24, 1, 65, 3, 30,
+ /* 30 */
+ 29, 118, 1, 30, 33, 36, 35, 21, 22, 36,
+ /* 40 */
+ 41, 42, 43, 44, 45, 46, 47, 48, 49, 50,
+ /* 50 */
+ 51, 52, 53, 54, 1, 30, 31, 1, 1, 3,
+ /* 60 */
+ 3, 36, 2, 18, 19, 20, 67, 68, 69, 70,
+ /* 70 */
+ 71, 72, 73, 74, 75, 76, 77, 78, 62, 30,
+ /* 80 */
+ 55, 28, 37, 30, 111, 36, 30, 30, 18, 36,
+ /* 90 */
+ 20, 21, 36, 36, 41, 42, 43, 44, 45, 46,
+ /* 100 */
+ 47, 48, 49, 50, 51, 52, 53, 54, 1, 91,
+ /* 110 */
+ 92, 55, 55, 83, 84, 85, 86, 87, 38, 101,
+ /* 120 */
+ 67, 68, 69, 70, 71, 72, 73, 74, 75, 76,
+ /* 130 */
+ 77, 78, 18, 63, 20, 21, 118, 30, 1, 18,
+ /* 140 */
+ 3, 20, 21, 36, 111, 39, 66, 26, 41, 42,
+ /* 150 */
+ 43, 44, 45, 46, 47, 48, 49, 50, 51, 52,
+ /* 160 */
+ 53, 54, 1, 1, 26, 3, 60, 30, 62, 15,
+ /* 170 */
+ 16, 17, 66, 36, 67, 68, 69, 70, 71, 72,
+ /* 180 */
+ 73, 74, 75, 76, 77, 78, 18, 19, 20, 32,
+ /* 190 */
+ 100, 1, 30, 109, 1, 18, 39, 20, 36, 1,
+ /* 200 */
+ 116, 3, 41, 42, 43, 44, 45, 46, 47, 48,
+ /* 210 */
+ 49, 50, 51, 52, 53, 54, 1, 55, 80, 62,
+ /* 220 */
+ 30, 85, 86, 87, 39, 32, 36, 66, 67, 68,
+ /* 230 */
+ 69, 70, 71, 72, 73, 74, 75, 76, 77, 78,
+ /* 240 */
+ 63, 86, 114, 115, 91, 92, 31, 62, 55, 18,
+ /* 250 */
+ 38, 20, 40, 55, 101, 18, 41, 42, 43, 44,
+ /* 260 */
+ 45, 46, 47, 48, 49, 50, 51, 52, 53, 54,
+ /* 270 */
+ 1, 118, 3, 94, 95, 96, 39, 122, 123, 38,
+ /* 280 */
+ 91, 40, 67, 68, 69, 70, 71, 72, 73, 74,
+ /* 290 */
+ 75, 76, 77, 78, 63, 114, 115, 100, 91, 92,
+ /* 300 */
+ 112, 91, 114, 115, 91, 19, 20, 118, 101, 20,
+ /* 310 */
+ 41, 42, 43, 44, 45, 46, 47, 48, 49, 50,
+ /* 320 */
+ 51, 52, 53, 54, 1, 118, 3, 100, 118, 119,
+ /* 330 */
+ 60, 118, 2, 91, 3, 65, 67, 68, 69, 70,
+ /* 340 */
+ 71, 72, 73, 74, 75, 76, 77, 78, 21, 22,
+ /* 350 */
+ 64, 21, 63, 92, 111, 119, 113, 26, 19, 20,
+ /* 360 */
+ 118, 1, 101, 21, 41, 42, 43, 44, 45, 46,
+ /* 370 */
+ 47, 48, 49, 50, 51, 52, 53, 54, 1, 118,
+ /* 380 */
+ 3, 18, 22, 20, 19, 94, 95, 1, 98, 62,
+ /* 390 */
+ 67, 68, 69, 70, 71, 72, 73, 74, 75, 76,
+ /* 400 */
+ 77, 78, 60, 113, 39, 1, 2, 92, 92, 18,
+ /* 410 */
+ 111, 20, 113, 87, 26, 89, 101, 101, 41, 42,
+ /* 420 */
+ 43, 44, 45, 46, 47, 48, 49, 50, 51, 52,
+ /* 430 */
+ 53, 54, 1, 118, 118, 18, 39, 20, 19, 94,
+ /* 440 */
+ 95, 55, 98, 25, 67, 68, 69, 70, 71, 72,
+ /* 450 */
+ 73, 74, 75, 76, 77, 78, 38, 113, 86, 92,
+ /* 460 */
+ 92, 92, 18, 40, 20, 30, 60, 2, 101, 101,
+ /* 470 */
+ 101, 36, 41, 42, 43, 44, 45, 46, 47, 48,
+ /* 480 */
+ 49, 50, 51, 52, 53, 54, 1, 118, 18, 109,
+ /* 490 */
+ 20, 20, 56, 39, 19, 123, 116, 98, 67, 68,
+ /* 500 */
+ 69, 70, 71, 72, 73, 74, 75, 76, 77, 78,
+ /* 510 */
+ 25, 80, 113, 92, 64, 27, 21, 20, 19, 64,
+ /* 520 */
+ 20, 3, 101, 20, 22, 2, 41, 42, 43, 44,
+ /* 530 */
+ 45, 46, 47, 48, 49, 50, 51, 52, 53, 54,
+ /* 540 */
+ 1, 20, 3, 19, 3, 20, 20, 20, 19, 66,
+ /* 550 */
+ 98, 98, 67, 68, 69, 70, 71, 72, 73, 74,
+ /* 560 */
+ 75, 76, 77, 78, 62, 113, 113, 20, 37, 37,
+ /* 570 */
+ 3, 20, 20, 101, 112, 111, 22, 111, 111, 111,
+ /* 580 */
+ 41, 42, 43, 44, 45, 46, 47, 48, 49, 50,
+ /* 590 */
+ 51, 52, 53, 54, 1, 116, 30, 113, 97, 88,
+ /* 600 */
+ 16, 115, 124, 97, 99, 98, 67, 68, 69, 70,
+ /* 610 */
+ 71, 72, 73, 74, 75, 76, 77, 78, 113, 124,
+ /* 620 */
+ 113, 124, 124, 124, 124, 124, 124, 124, 124, 124,
+ /* 630 */
+ 124, 124, 124, 40, 41, 42, 43, 44, 45, 46,
+ /* 640 */
+ 47, 48, 49, 50, 51, 52, 53, 54, 1, 2,
+ /* 650 */
+ 124, 124, 124, 124, 124, 124, 124, 98, 98, 98,
+ /* 660 */
+ 67, 68, 69, 70, 71, 72, 73, 74, 75, 76,
+ /* 670 */
+ 77, 78, 113, 113, 113, 124, 124, 124, 124, 124,
+ /* 680 */
+ 124, 124, 124, 124, 124, 124, 124, 124, 41, 42,
+ /* 690 */
+ 43, 44, 45, 46, 47, 48, 49, 50, 51, 52,
+ /* 700 */
+ 53, 54, 1, 124, 124, 124, 124, 124, 124, 124,
+ /* 710 */
+ 124, 98, 124, 124, 67, 68, 69, 70, 71, 72,
+ /* 720 */
+ 73, 74, 75, 76, 77, 78, 113, 124, 124, 124,
+ /* 730 */
+ 124, 124, 124, 124, 124, 124, 124, 124, 124, 124,
+ /* 740 */
+ 124, 40, 41, 42, 43, 44, 45, 46, 47, 48,
+ /* 750 */
+ 49, 50, 51, 52, 53, 54, 1, 124, 124, 124,
+ /* 760 */
+ 124, 124, 124, 124, 124, 124, 124, 124, 67, 68,
+ /* 770 */
+ 69, 70, 71, 72, 73, 74, 75, 76, 77, 78,
+ /* 780 */
+ 124, 124, 124, 124, 124, 124, 124, 124, 124, 124,
+ /* 790 */
+ 124, 124, 124, 124, 124, 124, 41, 42, 43, 44,
+ /* 800 */
+ 45, 46, 47, 48, 49, 50, 51, 52, 53, 54,
+ /* 810 */
+ 124, 124, 124, 124, 124, 124, 124, 124, 124, 124,
+ /* 820 */
+ 22, 124, 67, 68, 69, 70, 71, 72, 73, 74,
+ /* 830 */
+ 75, 76, 77, 78, 124, 124, 124, 124, 41, 42,
+ /* 840 */
+ 43, 44, 45, 46, 47, 48, 49, 50, 51, 52,
+ /* 850 */
+ 53, 54, 124, 124, 124, 124, 124, 124, 60, 124,
+ /* 860 */
+ 124, 124, 124, 65, 67, 68, 69, 70, 71, 72,
+ /* 870 */
+ 73, 74, 75, 76, 77, 78, 124, 124, 124, 124,
+ /* 880 */
+ 124, 124, 124, 18, 19, 20, 124, 124, 23, 24,
+ /* 890 */
+ 124, 86, 124, 124, 29, 90, 92, 124, 33, 94,
+ /* 900 */
+ 35, 124, 37, 124, 39, 101, 124, 42, 103, 124,
+ /* 910 */
+ 124, 106, 107, 108, 124, 110, 124, 113, 92, 92,
+ /* 920 */
+ 124, 124, 57, 58, 59, 60, 61, 101, 101, 64,
+ /* 930 */
+ 65, 66, 124, 94, 124, 124, 124, 124, 124, 113,
+ /* 940 */
+ 113, 18, 19, 20, 79, 106, 23, 24, 124, 110,
+ /* 950 */
+ 124, 124, 29, 124, 124, 86, 33, 34, 35, 90,
+ /* 960 */
+ 37, 124, 39, 94, 92, 42, 124, 124, 124, 124,
+ /* 970 */
+ 86, 124, 103, 101, 90, 106, 107, 108, 94, 110,
+ /* 980 */
+ 57, 58, 59, 60, 61, 113, 124, 64, 65, 124,
+ /* 990 */
+ 106, 107, 108, 124, 110, 18, 124, 20, 124, 18,
+ /* 1000 */
+ 19, 20, 79, 124, 23, 24, 124, 30, 124, 32,
+ /* 1010 */
+ 29, 86, 124, 36, 33, 90, 35, 124, 37, 94,
+ /* 1020 */
+ 39, 124, 124, 42, 124, 124, 124, 124, 124, 124,
+ /* 1030 */
+ 124, 106, 107, 108, 124, 110, 124, 124, 57, 58,
+ /* 1040 */
+ 59, 60, 61, 124, 124, 64, 65, 124, 124, 124,
+ /* 1050 */
+ 124, 124, 18, 124, 20, 124, 124, 18, 19, 20,
+ /* 1060 */
+ 79, 124, 23, 24, 30, 86, 32, 124, 29, 90,
+ /* 1070 */
+ 36, 86, 33, 94, 35, 90, 37, 124, 39, 94,
+ /* 1080 */
+ 124, 42, 124, 124, 124, 106, 107, 108, 124, 110,
+ /* 1090 */
+ 124, 106, 107, 108, 124, 110, 57, 58, 59, 60,
+ /* 1100 */
+ 61, 124, 124, 64, 65, 124, 124, 124, 124, 124,
+ /* 1110 */
+ 124, 124, 124, 124, 124, 18, 19, 20, 79, 124,
+ /* 1120 */
+ 23, 24, 124, 124, 124, 124, 29, 86, 124, 124,
+ /* 1130 */
+ 33, 90, 35, 124, 37, 94, 39, 124, 124, 42,
+ /* 1140 */
+ 124, 124, 124, 124, 124, 124, 124, 106, 107, 108,
+ /* 1150 */
+ 124, 110, 124, 124, 57, 58, 59, 60, 61, 124,
+ /* 1160 */
+ 124, 64, 65, 124, 124, 124, 124, 124, 124, 124,
+ /* 1170 */
+ 124, 124, 124, 18, 19, 20, 79, 124, 23, 24,
+ /* 1180 */
+ 124, 124, 124, 124, 29, 86, 124, 124, 33, 90,
+ /* 1190 */
+ 35, 124, 37, 94, 39, 124, 124, 42, 124, 124,
+ /* 1200 */
+ 124, 124, 124, 124, 124, 106, 107, 108, 124, 110,
+ /* 1210 */
+ 124, 124, 57, 58, 59, 60, 61, 124, 124, 64,
+ /* 1220 */
+ 65, 124, 124, 124, 124, 124, 124, 124, 124, 124,
+ /* 1230 */
+ 124, 18, 19, 20, 79, 124, 23, 24, 124, 124,
+ /* 1240 */
+ 124, 124, 29, 86, 124, 124, 33, 90, 35, 124,
+ /* 1250 */
+ 37, 94, 39, 124, 124, 42, 124, 124, 124, 124,
+ /* 1260 */
+ 124, 124, 124, 106, 107, 108, 124, 110, 124, 124,
+ /* 1270 */
+ 57, 58, 59, 60, 61, 124, 124, 64, 65, 124,
+ /* 1280 */
+ 1, 124, 3, 124, 3, 124, 124, 124, 124, 18,
+ /* 1290 */
+ 19, 20, 79, 124, 23, 24, 124, 124, 124, 124,
+ /* 1300 */
+ 29, 22, 21, 124, 33, 124, 35, 124, 37, 30,
+ /* 1310 */
+ 39, 30, 124, 42, 124, 36, 124, 36, 39, 124,
+ /* 1320 */
+ 39, 124, 124, 124, 91, 92, 124, 124, 57, 58,
+ /* 1330 */
+ 59, 60, 61, 124, 101, 64, 65, 104, 105, 124,
+ /* 1340 */
+ 124, 62, 124, 62, 124, 124, 124, 18, 19, 20,
+ /* 1350 */
+ 79, 118, 23, 24, 124, 124, 124, 124, 29, 124,
+ /* 1360 */
+ 124, 124, 33, 124, 35, 124, 37, 124, 39, 91,
+ /* 1370 */
+ 92, 42, 124, 124, 124, 124, 124, 124, 124, 101,
+ /* 1380 */
+ 124, 124, 104, 105, 124, 124, 57, 58, 59, 60,
+ /* 1390 */
+ 61, 124, 124, 64, 65, 124, 118, 124, 124, 124,
+ /* 1400 */
+ 124, 124, 124, 124, 124, 18, 19, 20, 79, 124,
+ /* 1410 */
+ 23, 24, 124, 124, 124, 124, 29, 124, 124, 124,
+ /* 1420 */
+ 33, 124, 35, 124, 37, 124, 39, 91, 92, 42,
+ /* 1430 */
+ 124, 124, 124, 124, 124, 124, 124, 101, 124, 124,
+ /* 1440 */
+ 104, 105, 124, 124, 57, 58, 59, 60, 61, 124,
+ /* 1450 */
+ 124, 64, 124, 124, 118, 124, 124, 124, 124, 124,
+ /* 1460 */
+ 124, 124, 124, 18, 19, 20, 79, 124, 23, 24,
+ /* 1470 */
+ 124, 124, 124, 124, 29, 124, 124, 124, 33, 124,
+ /* 1480 */
+ 35, 124, 37, 124, 39, 124, 3, 42, 124, 124,
+ /* 1490 */
+ 124, 124, 124, 124, 124, 124, 124, 124, 124, 124,
+ /* 1500 */
+ 124, 124, 57, 58, 59, 60, 61, 124, 25, 64,
+ /* 1510 */
+ 27, 28, 124, 30, 31, 124, 124, 124, 124, 36,
+ /* 1520 */
+ 124, 38, 39, 40, 79, 124, 124, 124, 124, 124,
+ /* 1530 */
+ 124, 124, 124, 124, 124, 86, 124, 124, 55, 90,
+ /* 1540 */
+ 124, 124, 93, 94, 124, 62, 124, 124, 124, 66,
+ /* 1550 */
+ 124, 102, 103, 124, 124, 106, 107, 108, 124, 110,
+ /* 1560 */
+ 124, 124, 124, 80, 124, 124, 124, 86, 124, 120,
+ /* 1570 */
+ 121, 90, 124, 124, 93, 94, 95, 124, 124, 124,
+ /* 1580 */
+ 124, 124, 124, 102, 103, 124, 124, 106, 107, 108,
+ /* 1590 */
+ 86, 110, 124, 124, 90, 124, 124, 93, 94, 124,
+ /* 1600 */
+ 124, 124, 124, 124, 124, 124, 102, 103, 124, 86,
+ /* 1610 */
+ 106, 107, 108, 90, 110, 124, 93, 94, 124, 124,
+ /* 1620 */
+ 124, 117, 124, 124, 124, 102, 103, 124, 124, 106,
+ /* 1630 */
+ 107, 108, 124, 110, 124, 124, 124, 124, 86, 124,
+ /* 1640 */
+ 117, 124, 90, 124, 124, 93, 94, 124, 124, 124,
+ /* 1650 */
+ 124, 124, 124, 124, 102, 103, 124, 124, 106, 107,
+ /* 1660 */
+ 108, 86, 110, 124, 124, 90, 124, 124, 93, 94,
+ /* 1670 */
+ 95, 124, 124, 121, 124, 124, 124, 102, 103, 124,
+ /* 1680 */
+ 124, 106, 107, 108, 86, 110, 124, 124, 90, 124,
+ /* 1690 */
+ 124, 93, 94, 124, 124, 124, 124, 124, 124, 124,
+ /* 1700 */
+ 102, 103, 124, 86, 106, 107, 108, 90, 110, 124,
+ /* 1710 */
+ 93, 94, 124, 124, 124, 117, 124, 124, 124, 102,
+ /* 1720 */
+ 103, 124, 124, 106, 107, 108, 124, 110, 124, 86,
+ /* 1730 */
+ 91, 92, 124, 90, 124, 124, 93, 94, 124, 124,
+ /* 1740 */
+ 101, 124, 124, 104, 105, 102, 103, 124, 86, 106,
+ /* 1750 */
+ 107, 108, 90, 110, 124, 93, 94, 118, 124, 124,
+ /* 1760 */
+ 124, 124, 124, 124, 102, 103, 124, 124, 106, 107,
+ /* 1770 */
+ 108, 86, 110, 124, 124, 90, 124, 124, 93, 94,
+ /* 1780 */
+ 124, 124, 124, 124, 124, 124, 124, 102, 103, 124,
+ /* 1790 */
+ 86, 106, 107, 108, 90, 110, 124, 93, 94, 124,
+ /* 1800 */
+ 124, 124, 124, 124, 124, 124, 102, 103, 124, 124,
+ /* 1810 */
+ 106, 107, 108, 124, 110, 124, 86, 91, 92, 124,
+ /* 1820 */
+ 90, 124, 124, 93, 94, 124, 124, 101, 124, 124,
+ /* 1830 */
+ 104, 105, 102, 103, 124, 86, 106, 107, 108, 90,
+ /* 1840 */
+ 110, 124, 93, 94, 118, 124, 124, 124, 124, 124,
+ /* 1850 */
+ 124, 102, 103, 124, 124, 106, 107, 108, 86, 110,
+ /* 1860 */
+ 124, 124, 90, 124, 124, 93, 94, 124, 124, 124,
+ /* 1870 */
+ 124, 124, 124, 124, 102, 103, 124, 86, 106, 107,
+ /* 1880 */
+ 108, 90, 110, 124, 93, 94, 124, 124, 124, 124,
+ /* 1890 */
+ 124, 124, 124, 102, 103, 124, 124, 106, 107, 108,
+ /* 1900 */
+ 124, 110, 124, 86, 91, 92, 124, 90, 124, 124,
+ /* 1910 */
+ 93, 94, 124, 124, 101, 124, 124, 104, 105, 102,
+ /* 1920 */
+ 103, 124, 86, 106, 107, 108, 90, 110, 124, 93,
+ /* 1930 */
+ 94, 118, 124, 124, 124, 124, 124, 124, 102, 103,
+ /* 1940 */
+ 124, 124, 106, 107, 108, 86, 110, 124, 124, 90,
+ /* 1950 */
+ 124, 124, 93, 94, 124, 124, 124, 124, 124, 124,
+ /* 1960 */
+ 124, 102, 103, 124, 86, 106, 107, 108, 90, 110,
+ /* 1970 */
+ 124, 93, 94, 124, 124, 124, 124, 124, 124, 124,
+ /* 1980 */
+ 102, 103, 124, 124, 106, 107, 108, 124, 110, 124,
+ /* 1990 */
+ 86, 124, 124, 124, 90, 124, 124, 93, 94, 124,
+ /* 2000 */
+ 124, 124, 124, 124, 124, 124, 102, 103, 124, 86,
+ /* 2010 */
+ 106, 107, 108, 90, 110, 124, 93, 94, 124, 124,
+ /* 2020 */
+ 124, 124, 124, 124, 124, 102, 103, 124, 124, 106,
+ /* 2030 */
+ 107, 108, 86, 110, 124, 124, 90, 124, 124, 93,
+ /* 2040 */
+ 94, 124, 124, 124, 124, 124, 124, 124, 102, 103,
+ /* 2050 */
+ 124, 86, 106, 107, 108, 90, 110, 124, 93, 94,
+ /* 2060 */
+ 124, 124, 124, 124, 124, 124, 124, 102, 103, 124,
+ /* 2070 */
+ 124, 106, 107, 108, 124, 110, 124, 86, 124, 124,
+ /* 2080 */
+ 124, 90, 124, 124, 93, 94, 124, 124, 124, 124,
+ /* 2090 */
+ 124, 124, 124, 102, 103, 124, 86, 106, 107, 108,
+ /* 2100 */
+ 90, 110, 124, 93, 94, 124, 124, 124, 124, 124,
+ /* 2110 */
+ 124, 124, 102, 103, 124, 124, 106, 107, 108, 86,
+ /* 2120 */
+ 110, 124, 124, 90, 124, 124, 93, 94, 124, 124,
+ /* 2130 */
+ 124, 124, 124, 124, 124, 102, 103, 124, 86, 106,
+ /* 2140 */
+ 107, 108, 90, 110, 124, 93, 94, 124, 124, 124,
+ /* 2150 */
+ 124, 124, 124, 124, 102, 103, 124, 124, 106, 107,
+ /* 2160 */
+ 108, 124, 110, 124, 86, 124, 124, 124, 90, 124,
+ /* 2170 */
+ 124, 93, 94, 124, 124, 124, 124, 124, 124, 124,
+ /* 2180 */
+ 102, 103, 124, 86, 106, 107, 108, 90, 110, 124,
+ /* 2190 */
+ 93, 94, 124, 124, 124, 124, 124, 124, 124, 102,
+ /* 2200 */
+ 103, 124, 124, 106, 107, 108, 86, 110, 124, 124,
+ /* 2210 */
+ 90, 124, 124, 93, 94, 124, 124, 124, 124, 124,
+ /* 2220 */
+ 124, 124, 102, 103, 124, 86, 106, 107, 108, 90,
+ /* 2230 */
+ 110, 124, 93, 94, 124, 124, 124, 124, 124, 124,
+ /* 2240 */
+ 124, 102, 103, 124, 124, 106, 107, 108, 124, 110,
+ /* 2250 */
+ 124, 86, 124, 124, 124, 90, 124, 124, 93, 94,
+ /* 2260 */
+ 124, 124, 124, 124, 124, 124, 124, 102, 103, 124,
+ /* 2270 */
+ 86, 106, 107, 108, 90, 110, 124, 93, 94, 124,
+ /* 2280 */
+ 124, 124, 124, 124, 124, 124, 102, 103, 124, 124,
+ /* 2290 */
+ 106, 107, 108, 86, 110, 124, 124, 90, 124, 124,
+ /* 2300 */
+ 93, 94, 124, 124, 124, 124, 124, 124, 124, 102,
+ /* 2310 */
+ 103, 124, 86, 106, 107, 108, 90, 110, 124, 93,
+ /* 2320 */
+ 94, 124, 124, 124, 124, 124, 124, 124, 102, 103,
+ /* 2330 */
+ 124, 124, 106, 107, 108, 124, 110, 124, 86, 124,
+ /* 2340 */
+ 124, 124, 90, 124, 124, 93, 94, 124, 124, 124,
+ /* 2350 */
+ 124, 124, 124, 124, 102, 103, 124, 11, 106, 107,
+ /* 2360 */
+ 108, 124, 110, 124, 18, 124, 124, 124, 124, 23,
+ /* 2370 */
+ 24, 11, 124, 124, 124, 29, 124, 124, 18, 33,
+ /* 2380 */
+ 124, 35, 124, 23, 24, 124, 124, 124, 124, 29,
+ /* 2390 */
+ 124, 124, 124, 33, 124, 35, 86, 124, 124, 124,
+ /* 2400 */
+ 90, 124, 124, 93, 94, 124, 124, 124, 124, 124,
+ /* 2410 */
+ 124, 124, 102, 103, 124, 124, 106, 107, 108, 124,
+ /* 2420 */
+ 110, 124, 124, 124, 124, 79, 80, 81, 124, 86,
+ /* 2430 */
+ 124, 124, 124, 90, 124, 124, 93, 94, 124, 79,
+ /* 2440 */
+ 80, 81, 124, 124, 124, 102, 103, 124, 124, 106,
+ /* 2450 */
+ 107, 108, 124, 110, 124, 124, 86, 124, 124, 124,
+ /* 2460 */
+ 90, 124, 124, 93, 94, 124, 124, 124, 124, 124,
+ /* 2470 */
+ 124, 124, 102, 103, 124, 124, 106, 107, 108, 124,
+ /* 2480 */
+ 110, 124, 86, 124, 124, 124, 90, 124, 124, 93,
+ /* 2490 */
+ 94, 124, 124, 124, 124, 124, 124, 124, 102, 103,
+ /* 2500 */
+ 124, 124, 106, 107, 108, 86, 110, 124, 124, 90,
+ /* 2510 */
+ 124, 124, 93, 94, 124, 124, 86, 124, 124, 124,
+ /* 2520 */
+ 90, 102, 103, 93, 94, 106, 107, 108, 124, 110,
+ /* 2530 */
+ 124, 124, 102, 103, 124, 124, 106, 107, 108, 124,
+ /* 2540 */
+ 110,
+ );
+ const YY_SHIFT_USE_DFLT = - 39;
+ const YY_SHIFT_MAX = 259;
static public $yy_shift_ofst = array(
- /* 0 */ -2, 1385, 1385, 1328, 1157, 1328, 1157, 1157, 1100, 1157,
- /* 10 */ 1157, 1157, 1157, 1157, 1157, 1556, 1157, 1157, 1157, 1157,
- /* 20 */ 1556, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157,
- /* 30 */ 1157, 1157, 1442, 1157, 1157, 1499, 1157, 1157, 1214, 1157,
- /* 40 */ 1157, 1157, 1157, 1442, 1271, 1271, 1670, 1613, 1670, 1670,
- /* 50 */ 1670, 1670, 1670, 206, 129, 52, -1, 259, 259, 259,
- /* 60 */ 833, 886, 939, 780, 650, 390, 336, 467, 703, 520,
- /* 70 */ 573, 992, 992, 992, 992, 992, 992, 992, 992, 992,
- /* 80 */ 992, 992, 992, 992, 992, 992, 992, 992, 992, 992,
- /* 90 */ 1033, 1033, 1841, 784, 288, -2, 338, 125, 463, 209,
- /* 100 */ 333, 209, 333, 327, 288, 267, 288, 334, 509, 1745,
- /* 110 */ 102, 132, 470, 653, 70, 245, 479, 212, 204, 3,
- /* 120 */ 174, 217, 277, 122, 432, 537, 432, 509, 510, 432,
- /* 130 */ 432, 382, 668, 506, 432, 432, 531, 563, 432, 382,
- /* 140 */ 527, 432, 510, 509, 571, 432, 392, 691, 704, 704,
- /* 150 */ 704, 704, 704, 704, 704, 691, 704, -3, 1341, 1381,
- /* 160 */ 1284, 1267, 66, 1108, 1152, 1165, 1210, 536, 1438, 1398,
- /* 170 */ 1495, 1512, 466, 777, 0, 128, 781, 1324, 1455, 1227,
- /* 180 */ 471, 358, 150, 150, 339, 150, 150, 21, 150, 718,
- /* 190 */ 691, 691, 625, 704, 704, 709, 691, 709, 4, 4,
- /* 200 */ -3, -3, -3, -3, -3, 1727, 202, 75, 44, 361,
- /* 210 */ 223, 1, 225, 91, 76, 371, 395, 410, 76, 256,
- /* 220 */ 305, 560, 625, 617, 619, 598, 597, 576, 349, 630,
- /* 230 */ 637, 639, 666, 682, 661, 643, 644, 613, 591, 528,
- /* 240 */ 565, 486, 484, 407, 436, 582, 566, 564, 609, 547,
- /* 250 */ 554, 588, 545,
-);
- const YY_REDUCE_USE_DFLT = -102;
- const YY_REDUCE_MAX = 204;
+ /* 0 */
+ 1, 1097, 1271, 1097, 981, 1271, 981, 981, 923, 865,
+ /* 10 */
+ 923, 981, 981, 981, 981, 981, 981, 981, 981, 981,
+ /* 20 */
+ 981, 981, 1213, 981, 981, 981, 1155, 1329, 981, 981,
+ /* 30 */
+ 981, 981, 981, 981, 981, 981, 981, 981, 981, 981,
+ /* 40 */
+ 981, 1155, 981, 981, 1039, 1039, 1445, 1387, 1387, 1387,
+ /* 50 */
+ 1387, 1387, 1387, - 1, 53, 107, 107, 107, 107, 107,
+ /* 60 */
+ 539, 431, 701, 161, 377, 269, 647, 485, 593, 215,
+ /* 70 */
+ 323, 755, 755, 755, 755, 755, 755, 755, 755, 755,
+ /* 80 */
+ 755, 755, 755, 755, 755, 755, 755, 755, 755, 755,
+ /* 90 */
+ 797, 797, 1279, 56, 190, 1, 2346, 977, 1034, 3,
+ /* 100 */
+ 3, 137, 137, 190, 190, 286, 798, 404, 365, 2360,
+ /* 110 */
+ 25, 162, 57, 121, 70, 154, 16, 327, 198, 231,
+ /* 120 */
+ 114, 193, 417, 391, 360, 363, 363, 339, 502, 363,
+ /* 130 */
+ 365, 363, 365, 386, 339, 444, 470, 49, 444, 435,
+ /* 140 */
+ 49, 363, 363, 363, 363, 363, 31, 554, 31, 31,
+ /* 150 */
+ 554, 31, 31, 31, 31, 31, 31, - 39, 177, 168,
+ /* 160 */
+ 49, 49, 49, 49, 49, 49, 49, 49, - 38, - 38,
+ /* 170 */
+ - 38, 270, - 38, 49, 49, 49, 49, 49, 49, - 38,
+ /* 180 */
+ 270, - 38, 237, 49, 49, 49, - 38, 49, 49, 49,
+ /* 190 */
+ 584, 554, 554, 31, 566, 566, 60, 554, 31, 454,
+ /* 200 */
+ 31, 31, 60, 31, - 39, - 39, - 39, - 39, - 39, 1483,
+ /* 210 */
+ 1281, 106, 45, 157, 138, - 37, 80, 241, 418, 342,
+ /* 220 */
+ 331, 212, 185, 330, 185, 289, 552, 541, 526, 525,
+ /* 230 */
+ 521, 523, 524, 527, 529, 567, 551, 532, 531, 483,
+ /* 240 */
+ 547, 503, 518, 436, 454, 465, 406, 397, 419, 423,
+ /* 250 */
+ 471, 388, 475, 455, 500, 499, 497, 450, 488, 495,
+ );
+ const YY_REDUCE_USE_DFLT = - 99;
+ const YY_REDUCE_MAX = 208;
static public $yy_reduce_ofst = array(
- /* 0 */ -28, 46, 1709, 123, 567, 384, 1630, 698, 1961, 1934,
- /* 10 */ 1923, 1875, 1898, 1984, 2009, 2106, 2095, 2070, 2020, 2047,
- /* 20 */ 1848, 1837, 1402, 1345, 1288, 1174, 1231, 1459, 1516, 1812,
- /* 30 */ 1789, 1758, 1573, 1747, 2156, 2133, 2305, 2267, 2181, 2192,
- /* 40 */ 1117, 2219, 2242, 2278, 1042, 1728, 258, 1061, 572, 2076,
- /* 50 */ 1990, 1904, 1818, 1680, 1871, 1705, 2313, 2335, 2328, 1680,
- /* 60 */ -26, -26, -26, -26, -26, -26, -26, -26, -26, -26,
- /* 70 */ -26, -26, -26, -26, -26, -26, -26, -26, -26, -26,
- /* 80 */ -26, -26, -26, -26, -26, -26, -26, -26, -26, -26,
- /* 90 */ -26, -26, 224, 94, 196, 236, 273, 1149, 1062, 406,
- /* 100 */ -76, 353, 575, 264, 328, 201, 329, 78, 330, 646,
- /* 110 */ 517, -29, -29, -29, 342, 616, 385, -29, 68, 342,
- /* 120 */ 342, -29, 74, 74, 618, 433, 574, 457, 515, 541,
- /* 130 */ 433, 112, 74, 433, 434, 487, 459, 699, 468, 366,
- /* 140 */ -29, 696, 433, 464, 511, 645, -73, -101, -29, -29,
- /* 150 */ -29, -29, -29, -29, -29, 74, -29, -29, 606, 606,
- /* 160 */ 606, 606, 620, 606, 606, 606, 606, 596, 606, 606,
- /* 170 */ 606, 606, 606, 606, 606, 606, 606, 606, 606, 606,
- /* 180 */ 592, 592, 599, 599, 592, 599, 599, 603, 599, 647,
- /* 190 */ 622, 622, 623, 592, 592, -6, 622, -6, -13, 220,
- /* 200 */ 251, 240, 182, 146, 157,
-);
+ /* 0 */
+ 30, 1449, 1575, 1552, 1523, 1481, 1504, 1598, 1836, 2010,
+ /* 10 */
+ 1991, 1791, 1685, 1643, 1704, 1749, 2033, 2078, 2310, 2419,
+ /* 20 */
+ 2139, 2207, 2252, 2343, 2370, 1772, 1617, 1946, 1904, 2184,
+ /* 30 */
+ 1923, 1878, 1859, 1965, 2052, 1662, 1817, 1730, 2097, 2396,
+ /* 40 */
+ 2430, 2120, 2165, 2226, 869, 805, 985, 925, 884, 979,
+ /* 50 */
+ 1099, 1041, 1157, 1639, 1233, 1639, 1336, 1278, 1726, 1813,
+ /* 60 */
+ - 87, - 87, - 87, - 87, - 87, - 87, - 87, - 87, - 87, - 87,
+ /* 70 */
+ - 87, - 87, - 87, - 87, - 87, - 87, - 87, - 87, - 87, - 87,
+ /* 80 */
+ - 87, - 87, - 87, - 87, - 87, - 87, - 87, - 87, - 87, - 87,
+ /* 90 */
+ - 87, - 87, 18, 207, 153, 136, 155, 827, 872, 804,
+ /* 100 */
+ 826, 261, 316, 369, 315, 839, 188, 210, 179, 372,
+ /* 110 */
+ 189, 189, 189, 505, 299, 326, 128, 128, 189, 299,
+ /* 120 */
+ 299, 189, 507, 453, 242, 344, 243, 84, 128, 452,
+ /* 130 */
+ 291, 399, 345, 189, 380, 613, 453, 421, 453, 368,
+ /* 140 */
+ 367, 560, 453, 559, 561, 290, 189, 128, 213, 189,
+ /* 150 */
+ 181, 189, 189, 189, 189, 189, 189, 189, 484, 479,
+ /* 160 */
+ 472, 472, 472, 472, 472, 472, 472, 472, 462, 462,
+ /* 170 */
+ 462, 464, 462, 472, 472, 472, 472, 472, 472, 462,
+ /* 180 */
+ 467, 462, 466, 472, 472, 472, 462, 472, 472, 472,
+ /* 190 */
+ 511, 486, 486, - 98, 501, 506, 236, 486, - 98, 468,
+ /* 200 */
+ - 98, - 98, 236, - 98, 227, - 27, 197, 33, 90,
+ );
static public $yyExpectedTokens = array(
- /* 0 */ array(3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 16, 22, 23, 28, 32, 33, 34, ),
- /* 1 */ array(16, 18, 19, 22, 23, 28, 32, 33, 34, 36, 38, 41, 56, 57, 58, 59, 60, 63, 64, 78, ),
- /* 2 */ array(16, 18, 19, 22, 23, 28, 32, 33, 34, 36, 38, 41, 56, 57, 58, 59, 60, 63, 64, 78, ),
- /* 3 */ array(16, 18, 19, 22, 23, 28, 32, 33, 34, 36, 38, 41, 56, 57, 58, 59, 60, 63, 64, 78, ),
- /* 4 */ array(16, 18, 19, 22, 23, 28, 32, 33, 34, 36, 38, 41, 56, 57, 58, 59, 60, 63, 64, 78, ),
- /* 5 */ array(16, 18, 19, 22, 23, 28, 32, 33, 34, 36, 38, 41, 56, 57, 58, 59, 60, 63, 64, 78, ),
- /* 6 */ array(16, 18, 19, 22, 23, 28, 32, 33, 34, 36, 38, 41, 56, 57, 58, 59, 60, 63, 64, 78, ),
- /* 7 */ array(16, 18, 19, 22, 23, 28, 32, 33, 34, 36, 38, 41, 56, 57, 58, 59, 60, 63, 64, 78, ),
- /* 8 */ array(16, 18, 19, 22, 23, 28, 32, 33, 34, 36, 38, 41, 56, 57, 58, 59, 60, 63, 64, 65, 78, ),
- /* 9 */ array(16, 18, 19, 22, 23, 28, 32, 33, 34, 36, 38, 41, 56, 57, 58, 59, 60, 63, 64, 78, ),
- /* 10 */ array(16, 18, 19, 22, 23, 28, 32, 33, 34, 36, 38, 41, 56, 57, 58, 59, 60, 63, 64, 78, ),
- /* 11 */ array(16, 18, 19, 22, 23, 28, 32, 33, 34, 36, 38, 41, 56, 57, 58, 59, 60, 63, 64, 78, ),
- /* 12 */ array(16, 18, 19, 22, 23, 28, 32, 33, 34, 36, 38, 41, 56, 57, 58, 59, 60, 63, 64, 78, ),
- /* 13 */ array(16, 18, 19, 22, 23, 28, 32, 33, 34, 36, 38, 41, 56, 57, 58, 59, 60, 63, 64, 78, ),
- /* 14 */ array(16, 18, 19, 22, 23, 28, 32, 33, 34, 36, 38, 41, 56, 57, 58, 59, 60, 63, 64, 78, ),
- /* 15 */ array(16, 18, 19, 22, 23, 28, 32, 33, 34, 36, 38, 41, 56, 57, 58, 59, 60, 63, 64, 78, ),
- /* 16 */ array(16, 18, 19, 22, 23, 28, 32, 33, 34, 36, 38, 41, 56, 57, 58, 59, 60, 63, 64, 78, ),
- /* 17 */ array(16, 18, 19, 22, 23, 28, 32, 33, 34, 36, 38, 41, 56, 57, 58, 59, 60, 63, 64, 78, ),
- /* 18 */ array(16, 18, 19, 22, 23, 28, 32, 33, 34, 36, 38, 41, 56, 57, 58, 59, 60, 63, 64, 78, ),
- /* 19 */ array(16, 18, 19, 22, 23, 28, 32, 33, 34, 36, 38, 41, 56, 57, 58, 59, 60, 63, 64, 78, ),
- /* 20 */ array(16, 18, 19, 22, 23, 28, 32, 33, 34, 36, 38, 41, 56, 57, 58, 59, 60, 63, 64, 78, ),
- /* 21 */ array(16, 18, 19, 22, 23, 28, 32, 33, 34, 36, 38, 41, 56, 57, 58, 59, 60, 63, 64, 78, ),
- /* 22 */ array(16, 18, 19, 22, 23, 28, 32, 33, 34, 36, 38, 41, 56, 57, 58, 59, 60, 63, 64, 78, ),
- /* 23 */ array(16, 18, 19, 22, 23, 28, 32, 33, 34, 36, 38, 41, 56, 57, 58, 59, 60, 63, 64, 78, ),
- /* 24 */ array(16, 18, 19, 22, 23, 28, 32, 33, 34, 36, 38, 41, 56, 57, 58, 59, 60, 63, 64, 78, ),
- /* 25 */ array(16, 18, 19, 22, 23, 28, 32, 33, 34, 36, 38, 41, 56, 57, 58, 59, 60, 63, 64, 78, ),
- /* 26 */ array(16, 18, 19, 22, 23, 28, 32, 33, 34, 36, 38, 41, 56, 57, 58, 59, 60, 63, 64, 78, ),
- /* 27 */ array(16, 18, 19, 22, 23, 28, 32, 33, 34, 36, 38, 41, 56, 57, 58, 59, 60, 63, 64, 78, ),
- /* 28 */ array(16, 18, 19, 22, 23, 28, 32, 33, 34, 36, 38, 41, 56, 57, 58, 59, 60, 63, 64, 78, ),
- /* 29 */ array(16, 18, 19, 22, 23, 28, 32, 33, 34, 36, 38, 41, 56, 57, 58, 59, 60, 63, 64, 78, ),
- /* 30 */ array(16, 18, 19, 22, 23, 28, 32, 33, 34, 36, 38, 41, 56, 57, 58, 59, 60, 63, 64, 78, ),
- /* 31 */ array(16, 18, 19, 22, 23, 28, 32, 33, 34, 36, 38, 41, 56, 57, 58, 59, 60, 63, 64, 78, ),
- /* 32 */ array(16, 18, 19, 22, 23, 28, 32, 33, 34, 36, 38, 41, 56, 57, 58, 59, 60, 63, 64, 78, ),
- /* 33 */ array(16, 18, 19, 22, 23, 28, 32, 33, 34, 36, 38, 41, 56, 57, 58, 59, 60, 63, 64, 78, ),
- /* 34 */ array(16, 18, 19, 22, 23, 28, 32, 33, 34, 36, 38, 41, 56, 57, 58, 59, 60, 63, 64, 78, ),
- /* 35 */ array(16, 18, 19, 22, 23, 28, 32, 33, 34, 36, 38, 41, 56, 57, 58, 59, 60, 63, 64, 78, ),
- /* 36 */ array(16, 18, 19, 22, 23, 28, 32, 33, 34, 36, 38, 41, 56, 57, 58, 59, 60, 63, 64, 78, ),
- /* 37 */ array(16, 18, 19, 22, 23, 28, 32, 33, 34, 36, 38, 41, 56, 57, 58, 59, 60, 63, 64, 78, ),
- /* 38 */ array(16, 18, 19, 22, 23, 28, 32, 33, 34, 36, 38, 41, 56, 57, 58, 59, 60, 63, 64, 78, ),
- /* 39 */ array(16, 18, 19, 22, 23, 28, 32, 33, 34, 36, 38, 41, 56, 57, 58, 59, 60, 63, 64, 78, ),
- /* 40 */ array(16, 18, 19, 22, 23, 28, 32, 33, 34, 36, 38, 41, 56, 57, 58, 59, 60, 63, 64, 78, ),
- /* 41 */ array(16, 18, 19, 22, 23, 28, 32, 33, 34, 36, 38, 41, 56, 57, 58, 59, 60, 63, 64, 78, ),
- /* 42 */ array(16, 18, 19, 22, 23, 28, 32, 33, 34, 36, 38, 41, 56, 57, 58, 59, 60, 63, 64, 78, ),
- /* 43 */ array(16, 18, 19, 22, 23, 28, 32, 33, 34, 36, 38, 41, 56, 57, 58, 59, 60, 63, 64, 78, ),
- /* 44 */ array(16, 18, 19, 22, 23, 28, 32, 33, 34, 36, 38, 41, 56, 57, 58, 59, 60, 63, 64, 78, ),
- /* 45 */ array(16, 18, 19, 22, 23, 28, 32, 33, 34, 36, 38, 41, 56, 57, 58, 59, 60, 63, 64, 78, ),
- /* 46 */ array(16, 18, 19, 22, 23, 28, 32, 33, 34, 36, 38, 41, 56, 57, 58, 59, 60, 63, 78, ),
- /* 47 */ array(16, 18, 19, 22, 23, 28, 32, 33, 34, 36, 38, 41, 56, 57, 58, 59, 60, 63, 78, ),
- /* 48 */ array(16, 18, 19, 22, 23, 28, 32, 33, 34, 36, 38, 41, 56, 57, 58, 59, 60, 63, 78, ),
- /* 49 */ array(16, 18, 19, 22, 23, 28, 32, 33, 34, 36, 38, 41, 56, 57, 58, 59, 60, 63, 78, ),
- /* 50 */ array(16, 18, 19, 22, 23, 28, 32, 33, 34, 36, 38, 41, 56, 57, 58, 59, 60, 63, 78, ),
- /* 51 */ array(16, 18, 19, 22, 23, 28, 32, 33, 34, 36, 38, 41, 56, 57, 58, 59, 60, 63, 78, ),
- /* 52 */ array(16, 18, 19, 22, 23, 28, 32, 33, 34, 36, 38, 41, 56, 57, 58, 59, 60, 63, 78, ),
- /* 53 */ array(1, 17, 29, 35, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, ),
- /* 54 */ array(1, 17, 29, 35, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, ),
- /* 55 */ array(1, 27, 29, 35, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, ),
- /* 56 */ array(1, 17, 29, 35, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, ),
- /* 57 */ array(1, 29, 35, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, ),
- /* 58 */ array(1, 29, 35, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, ),
- /* 59 */ array(1, 29, 35, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, ),
- /* 60 */ array(1, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, ),
- /* 61 */ array(1, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, ),
- /* 62 */ array(1, 30, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, ),
- /* 63 */ array(1, 17, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, ),
- /* 64 */ array(1, 17, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, ),
- /* 65 */ array(1, 24, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, ),
- /* 66 */ array(1, 17, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, ),
- /* 67 */ array(1, 17, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, ),
- /* 68 */ array(1, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 79, ),
- /* 69 */ array(1, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, ),
- /* 70 */ array(1, 2, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, ),
- /* 71 */ array(1, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, ),
- /* 72 */ array(1, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, ),
- /* 73 */ array(1, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, ),
- /* 74 */ array(1, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, ),
- /* 75 */ array(1, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, ),
- /* 76 */ array(1, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, ),
- /* 77 */ array(1, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, ),
- /* 78 */ array(1, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, ),
- /* 79 */ array(1, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, ),
- /* 80 */ array(1, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, ),
- /* 81 */ array(1, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, ),
- /* 82 */ array(1, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, ),
- /* 83 */ array(1, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, ),
- /* 84 */ array(1, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, ),
- /* 85 */ array(1, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, ),
- /* 86 */ array(1, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, ),
- /* 87 */ array(1, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, ),
- /* 88 */ array(1, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, ),
- /* 89 */ array(1, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, ),
- /* 90 */ array(40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, ),
- /* 91 */ array(40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, ),
- /* 92 */ array(1, 17, 21, 29, 35, 38, 61, ),
- /* 93 */ array(1, 17, 29, 35, 54, ),
- /* 94 */ array(1, 29, 35, ),
- /* 95 */ array(3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 16, 22, 23, 28, 32, 33, 34, ),
- /* 96 */ array(10, 16, 22, 23, 28, 32, 33, 34, 78, 79, 80, ),
- /* 97 */ array(16, 19, 29, 31, 35, ),
- /* 98 */ array(16, 19, 29, 31, 35, ),
- /* 99 */ array(1, 17, 29, 35, ),
- /* 100 */ array(16, 19, 29, 35, ),
- /* 101 */ array(1, 17, 29, 35, ),
- /* 102 */ array(16, 19, 29, 35, ),
- /* 103 */ array(18, 19, 63, ),
- /* 104 */ array(1, 29, 35, ),
- /* 105 */ array(1, 2, 17, ),
- /* 106 */ array(1, 29, 35, ),
- /* 107 */ array(21, 59, 64, ),
- /* 108 */ array(18, 38, ),
- /* 109 */ array(10, 16, 22, 23, 28, 32, 33, 34, 78, 79, 80, ),
- /* 110 */ array(4, 5, 6, 7, 8, 13, 14, 15, ),
- /* 111 */ array(1, 17, 29, 30, 35, 54, ),
- /* 112 */ array(1, 17, 29, 35, 54, ),
- /* 113 */ array(1, 17, 29, 35, 54, ),
- /* 114 */ array(16, 19, 20, 62, ),
- /* 115 */ array(16, 19, 20, 25, ),
- /* 116 */ array(1, 17, 21, ),
- /* 117 */ array(1, 31, 54, ),
- /* 118 */ array(17, 29, 35, ),
- /* 119 */ array(16, 19, 20, ),
- /* 120 */ array(16, 19, 62, ),
- /* 121 */ array(1, 17, 54, ),
- /* 122 */ array(20, 21, 61, ),
- /* 123 */ array(20, 21, 61, ),
- /* 124 */ array(16, 19, ),
- /* 125 */ array(16, 19, ),
- /* 126 */ array(16, 19, ),
- /* 127 */ array(18, 38, ),
- /* 128 */ array(16, 19, ),
- /* 129 */ array(16, 19, ),
- /* 130 */ array(16, 19, ),
- /* 131 */ array(18, 19, ),
- /* 132 */ array(21, 61, ),
- /* 133 */ array(16, 19, ),
- /* 134 */ array(16, 19, ),
- /* 135 */ array(16, 19, ),
- /* 136 */ array(1, 17, ),
- /* 137 */ array(16, 19, ),
- /* 138 */ array(16, 19, ),
- /* 139 */ array(18, 19, ),
- /* 140 */ array(1, 54, ),
- /* 141 */ array(16, 19, ),
- /* 142 */ array(16, 19, ),
- /* 143 */ array(18, 38, ),
- /* 144 */ array(29, 35, ),
- /* 145 */ array(16, 19, ),
- /* 146 */ array(29, 35, ),
- /* 147 */ array(21, ),
- /* 148 */ array(1, ),
- /* 149 */ array(1, ),
- /* 150 */ array(1, ),
- /* 151 */ array(1, ),
- /* 152 */ array(1, ),
- /* 153 */ array(1, ),
- /* 154 */ array(1, ),
- /* 155 */ array(21, ),
- /* 156 */ array(1, ),
- /* 157 */ array(),
- /* 158 */ array(17, 29, 35, ),
- /* 159 */ array(17, 29, 35, ),
- /* 160 */ array(17, 29, 35, ),
- /* 161 */ array(17, 29, 35, ),
- /* 162 */ array(16, 18, 19, ),
- /* 163 */ array(17, 29, 35, ),
- /* 164 */ array(17, 29, 35, ),
- /* 165 */ array(17, 29, 35, ),
- /* 166 */ array(17, 29, 35, ),
- /* 167 */ array(16, 19, 62, ),
- /* 168 */ array(17, 29, 35, ),
- /* 169 */ array(17, 29, 35, ),
- /* 170 */ array(17, 29, 35, ),
- /* 171 */ array(17, 29, 35, ),
- /* 172 */ array(17, 29, 35, ),
- /* 173 */ array(17, 29, 35, ),
- /* 174 */ array(17, 29, 35, ),
- /* 175 */ array(17, 29, 35, ),
- /* 176 */ array(17, 29, 35, ),
- /* 177 */ array(17, 29, 35, ),
- /* 178 */ array(17, 29, 35, ),
- /* 179 */ array(17, 29, 35, ),
- /* 180 */ array(1, 17, ),
- /* 181 */ array(1, 17, ),
- /* 182 */ array(59, 64, ),
- /* 183 */ array(59, 64, ),
- /* 184 */ array(1, 17, ),
- /* 185 */ array(59, 64, ),
- /* 186 */ array(59, 64, ),
- /* 187 */ array(16, 38, ),
- /* 188 */ array(59, 64, ),
- /* 189 */ array(14, ),
- /* 190 */ array(21, ),
- /* 191 */ array(21, ),
- /* 192 */ array(38, ),
- /* 193 */ array(1, ),
- /* 194 */ array(1, ),
- /* 195 */ array(2, ),
- /* 196 */ array(21, ),
- /* 197 */ array(2, ),
- /* 198 */ array(29, ),
- /* 199 */ array(29, ),
- /* 200 */ array(),
- /* 201 */ array(),
- /* 202 */ array(),
- /* 203 */ array(),
- /* 204 */ array(),
- /* 205 */ array(17, 24, 26, 27, 29, 30, 35, 37, 38, 39, 54, 61, 65, 79, ),
- /* 206 */ array(17, 20, 29, 35, 38, 61, ),
- /* 207 */ array(38, 59, 61, 65, ),
- /* 208 */ array(16, 18, 19, 36, ),
- /* 209 */ array(31, 38, 61, ),
- /* 210 */ array(19, 62, ),
- /* 211 */ array(24, 37, ),
- /* 212 */ array(37, 65, ),
- /* 213 */ array(20, 59, ),
- /* 214 */ array(38, 61, ),
- /* 215 */ array(25, 79, ),
- /* 216 */ array(2, 20, ),
- /* 217 */ array(37, 39, ),
- /* 218 */ array(38, 61, ),
- /* 219 */ array(37, 39, ),
- /* 220 */ array(37, 39, ),
- /* 221 */ array(17, 25, ),
- /* 222 */ array(38, ),
- /* 223 */ array(19, ),
- /* 224 */ array(18, ),
- /* 225 */ array(36, ),
- /* 226 */ array(36, ),
- /* 227 */ array(59, ),
- /* 228 */ array(25, ),
- /* 229 */ array(2, ),
- /* 230 */ array(18, ),
- /* 231 */ array(19, ),
- /* 232 */ array(19, ),
- /* 233 */ array(2, ),
- /* 234 */ array(19, ),
- /* 235 */ array(19, ),
- /* 236 */ array(20, ),
- /* 237 */ array(18, ),
- /* 238 */ array(39, ),
- /* 239 */ array(26, ),
- /* 240 */ array(18, ),
- /* 241 */ array(18, ),
- /* 242 */ array(19, ),
- /* 243 */ array(19, ),
- /* 244 */ array(19, ),
- /* 245 */ array(19, ),
- /* 246 */ array(38, ),
- /* 247 */ array(65, ),
- /* 248 */ array(19, ),
- /* 249 */ array(63, ),
- /* 250 */ array(55, ),
- /* 251 */ array(19, ),
- /* 252 */ array(63, ),
- /* 253 */ array(),
- /* 254 */ array(),
- /* 255 */ array(),
- /* 256 */ array(),
- /* 257 */ array(),
- /* 258 */ array(),
- /* 259 */ array(),
- /* 260 */ array(),
- /* 261 */ array(),
- /* 262 */ array(),
- /* 263 */ array(),
- /* 264 */ array(),
- /* 265 */ array(),
- /* 266 */ array(),
- /* 267 */ array(),
- /* 268 */ array(),
- /* 269 */ array(),
- /* 270 */ array(),
- /* 271 */ array(),
- /* 272 */ array(),
- /* 273 */ array(),
- /* 274 */ array(),
- /* 275 */ array(),
- /* 276 */ array(),
- /* 277 */ array(),
- /* 278 */ array(),
- /* 279 */ array(),
- /* 280 */ array(),
- /* 281 */ array(),
- /* 282 */ array(),
- /* 283 */ array(),
- /* 284 */ array(),
- /* 285 */ array(),
- /* 286 */ array(),
- /* 287 */ array(),
- /* 288 */ array(),
- /* 289 */ array(),
- /* 290 */ array(),
- /* 291 */ array(),
- /* 292 */ array(),
- /* 293 */ array(),
- /* 294 */ array(),
- /* 295 */ array(),
- /* 296 */ array(),
- /* 297 */ array(),
- /* 298 */ array(),
- /* 299 */ array(),
- /* 300 */ array(),
- /* 301 */ array(),
- /* 302 */ array(),
- /* 303 */ array(),
- /* 304 */ array(),
- /* 305 */ array(),
- /* 306 */ array(),
- /* 307 */ array(),
- /* 308 */ array(),
- /* 309 */ array(),
- /* 310 */ array(),
- /* 311 */ array(),
- /* 312 */ array(),
- /* 313 */ array(),
- /* 314 */ array(),
- /* 315 */ array(),
- /* 316 */ array(),
- /* 317 */ array(),
- /* 318 */ array(),
- /* 319 */ array(),
- /* 320 */ array(),
- /* 321 */ array(),
- /* 322 */ array(),
- /* 323 */ array(),
- /* 324 */ array(),
- /* 325 */ array(),
- /* 326 */ array(),
- /* 327 */ array(),
- /* 328 */ array(),
- /* 329 */ array(),
- /* 330 */ array(),
- /* 331 */ array(),
- /* 332 */ array(),
- /* 333 */ array(),
- /* 334 */ array(),
- /* 335 */ array(),
- /* 336 */ array(),
- /* 337 */ array(),
- /* 338 */ array(),
- /* 339 */ array(),
- /* 340 */ array(),
- /* 341 */ array(),
- /* 342 */ array(),
- /* 343 */ array(),
- /* 344 */ array(),
- /* 345 */ array(),
- /* 346 */ array(),
- /* 347 */ array(),
- /* 348 */ array(),
- /* 349 */ array(),
- /* 350 */ array(),
- /* 351 */ array(),
- /* 352 */ array(),
- /* 353 */ array(),
- /* 354 */ array(),
- /* 355 */ array(),
- /* 356 */ array(),
- /* 357 */ array(),
- /* 358 */ array(),
- /* 359 */ array(),
- /* 360 */ array(),
- /* 361 */ array(),
- /* 362 */ array(),
- /* 363 */ array(),
- /* 364 */ array(),
- /* 365 */ array(),
- /* 366 */ array(),
- /* 367 */ array(),
- /* 368 */ array(),
- /* 369 */ array(),
- /* 370 */ array(),
- /* 371 */ array(),
- /* 372 */ array(),
- /* 373 */ array(),
- /* 374 */ array(),
- /* 375 */ array(),
- /* 376 */ array(),
- /* 377 */ array(),
- /* 378 */ array(),
- /* 379 */ array(),
- /* 380 */ array(),
- /* 381 */ array(),
- /* 382 */ array(),
- /* 383 */ array(),
- /* 384 */ array(),
- /* 385 */ array(),
- /* 386 */ array(),
- /* 387 */ array(),
- /* 388 */ array(),
-);
+ /* 0 */
+ array(4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 18, 23, 24, 29, 33, 35,),
+ /* 1 */
+ array(18, 19, 20, 23, 24, 29, 33, 35, 37, 39, 42, 57, 58, 59, 60, 61, 64, 65, 79,),
+ /* 2 */
+ array(18, 19, 20, 23, 24, 29, 33, 35, 37, 39, 42, 57, 58, 59, 60, 61, 64, 65, 79,),
+ /* 3 */
+ array(18, 19, 20, 23, 24, 29, 33, 35, 37, 39, 42, 57, 58, 59, 60, 61, 64, 65, 79,),
+ /* 4 */
+ array(18, 19, 20, 23, 24, 29, 33, 35, 37, 39, 42, 57, 58, 59, 60, 61, 64, 65, 79,),
+ /* 5 */
+ array(18, 19, 20, 23, 24, 29, 33, 35, 37, 39, 42, 57, 58, 59, 60, 61, 64, 65, 79,),
+ /* 6 */
+ array(18, 19, 20, 23, 24, 29, 33, 35, 37, 39, 42, 57, 58, 59, 60, 61, 64, 65, 79,),
+ /* 7 */
+ array(18, 19, 20, 23, 24, 29, 33, 35, 37, 39, 42, 57, 58, 59, 60, 61, 64, 65, 79,),
+ /* 8 */
+ array(18, 19, 20, 23, 24, 29, 33, 34, 35, 37, 39, 42, 57, 58, 59, 60, 61, 64, 65, 79,),
+ /* 9 */
+ array(18, 19, 20, 23, 24, 29, 33, 35, 37, 39, 42, 57, 58, 59, 60, 61, 64, 65, 66, 79,),
+ /* 10 */
+ array(18, 19, 20, 23, 24, 29, 33, 34, 35, 37, 39, 42, 57, 58, 59, 60, 61, 64, 65, 79,),
+ /* 11 */
+ array(18, 19, 20, 23, 24, 29, 33, 35, 37, 39, 42, 57, 58, 59, 60, 61, 64, 65, 79,),
+ /* 12 */
+ array(18, 19, 20, 23, 24, 29, 33, 35, 37, 39, 42, 57, 58, 59, 60, 61, 64, 65, 79,),
+ /* 13 */
+ array(18, 19, 20, 23, 24, 29, 33, 35, 37, 39, 42, 57, 58, 59, 60, 61, 64, 65, 79,),
+ /* 14 */
+ array(18, 19, 20, 23, 24, 29, 33, 35, 37, 39, 42, 57, 58, 59, 60, 61, 64, 65, 79,),
+ /* 15 */
+ array(18, 19, 20, 23, 24, 29, 33, 35, 37, 39, 42, 57, 58, 59, 60, 61, 64, 65, 79,),
+ /* 16 */
+ array(18, 19, 20, 23, 24, 29, 33, 35, 37, 39, 42, 57, 58, 59, 60, 61, 64, 65, 79,),
+ /* 17 */
+ array(18, 19, 20, 23, 24, 29, 33, 35, 37, 39, 42, 57, 58, 59, 60, 61, 64, 65, 79,),
+ /* 18 */
+ array(18, 19, 20, 23, 24, 29, 33, 35, 37, 39, 42, 57, 58, 59, 60, 61, 64, 65, 79,),
+ /* 19 */
+ array(18, 19, 20, 23, 24, 29, 33, 35, 37, 39, 42, 57, 58, 59, 60, 61, 64, 65, 79,),
+ /* 20 */
+ array(18, 19, 20, 23, 24, 29, 33, 35, 37, 39, 42, 57, 58, 59, 60, 61, 64, 65, 79,),
+ /* 21 */
+ array(18, 19, 20, 23, 24, 29, 33, 35, 37, 39, 42, 57, 58, 59, 60, 61, 64, 65, 79,),
+ /* 22 */
+ array(18, 19, 20, 23, 24, 29, 33, 35, 37, 39, 42, 57, 58, 59, 60, 61, 64, 65, 79,),
+ /* 23 */
+ array(18, 19, 20, 23, 24, 29, 33, 35, 37, 39, 42, 57, 58, 59, 60, 61, 64, 65, 79,),
+ /* 24 */
+ array(18, 19, 20, 23, 24, 29, 33, 35, 37, 39, 42, 57, 58, 59, 60, 61, 64, 65, 79,),
+ /* 25 */
+ array(18, 19, 20, 23, 24, 29, 33, 35, 37, 39, 42, 57, 58, 59, 60, 61, 64, 65, 79,),
+ /* 26 */
+ array(18, 19, 20, 23, 24, 29, 33, 35, 37, 39, 42, 57, 58, 59, 60, 61, 64, 65, 79,),
+ /* 27 */
+ array(18, 19, 20, 23, 24, 29, 33, 35, 37, 39, 42, 57, 58, 59, 60, 61, 64, 65, 79,),
+ /* 28 */
+ array(18, 19, 20, 23, 24, 29, 33, 35, 37, 39, 42, 57, 58, 59, 60, 61, 64, 65, 79,),
+ /* 29 */
+ array(18, 19, 20, 23, 24, 29, 33, 35, 37, 39, 42, 57, 58, 59, 60, 61, 64, 65, 79,),
+ /* 30 */
+ array(18, 19, 20, 23, 24, 29, 33, 35, 37, 39, 42, 57, 58, 59, 60, 61, 64, 65, 79,),
+ /* 31 */
+ array(18, 19, 20, 23, 24, 29, 33, 35, 37, 39, 42, 57, 58, 59, 60, 61, 64, 65, 79,),
+ /* 32 */
+ array(18, 19, 20, 23, 24, 29, 33, 35, 37, 39, 42, 57, 58, 59, 60, 61, 64, 65, 79,),
+ /* 33 */
+ array(18, 19, 20, 23, 24, 29, 33, 35, 37, 39, 42, 57, 58, 59, 60, 61, 64, 65, 79,),
+ /* 34 */
+ array(18, 19, 20, 23, 24, 29, 33, 35, 37, 39, 42, 57, 58, 59, 60, 61, 64, 65, 79,),
+ /* 35 */
+ array(18, 19, 20, 23, 24, 29, 33, 35, 37, 39, 42, 57, 58, 59, 60, 61, 64, 65, 79,),
+ /* 36 */
+ array(18, 19, 20, 23, 24, 29, 33, 35, 37, 39, 42, 57, 58, 59, 60, 61, 64, 65, 79,),
+ /* 37 */
+ array(18, 19, 20, 23, 24, 29, 33, 35, 37, 39, 42, 57, 58, 59, 60, 61, 64, 65, 79,),
+ /* 38 */
+ array(18, 19, 20, 23, 24, 29, 33, 35, 37, 39, 42, 57, 58, 59, 60, 61, 64, 65, 79,),
+ /* 39 */
+ array(18, 19, 20, 23, 24, 29, 33, 35, 37, 39, 42, 57, 58, 59, 60, 61, 64, 65, 79,),
+ /* 40 */
+ array(18, 19, 20, 23, 24, 29, 33, 35, 37, 39, 42, 57, 58, 59, 60, 61, 64, 65, 79,),
+ /* 41 */
+ array(18, 19, 20, 23, 24, 29, 33, 35, 37, 39, 42, 57, 58, 59, 60, 61, 64, 65, 79,),
+ /* 42 */
+ array(18, 19, 20, 23, 24, 29, 33, 35, 37, 39, 42, 57, 58, 59, 60, 61, 64, 65, 79,),
+ /* 43 */
+ array(18, 19, 20, 23, 24, 29, 33, 35, 37, 39, 42, 57, 58, 59, 60, 61, 64, 65, 79,),
+ /* 44 */
+ array(18, 19, 20, 23, 24, 29, 33, 35, 37, 39, 42, 57, 58, 59, 60, 61, 64, 65, 79,),
+ /* 45 */
+ array(18, 19, 20, 23, 24, 29, 33, 35, 37, 39, 42, 57, 58, 59, 60, 61, 64, 65, 79,),
+ /* 46 */
+ array(18, 19, 20, 23, 24, 29, 33, 35, 37, 39, 42, 57, 58, 59, 60, 61, 64, 79,),
+ /* 47 */
+ array(18, 19, 20, 23, 24, 29, 33, 35, 37, 39, 42, 57, 58, 59, 60, 61, 64, 79,),
+ /* 48 */
+ array(18, 19, 20, 23, 24, 29, 33, 35, 37, 39, 42, 57, 58, 59, 60, 61, 64, 79,),
+ /* 49 */
+ array(18, 19, 20, 23, 24, 29, 33, 35, 37, 39, 42, 57, 58, 59, 60, 61, 64, 79,),
+ /* 50 */
+ array(18, 19, 20, 23, 24, 29, 33, 35, 37, 39, 42, 57, 58, 59, 60, 61, 64, 79,),
+ /* 51 */
+ array(18, 19, 20, 23, 24, 29, 33, 35, 37, 39, 42, 57, 58, 59, 60, 61, 64, 79,),
+ /* 52 */
+ array(18, 19, 20, 23, 24, 29, 33, 35, 37, 39, 42, 57, 58, 59, 60, 61, 64, 79,),
+ /* 53 */
+ array(1, 3, 30, 36, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78,),
+ /* 54 */
+ array(1, 28, 30, 36, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78,),
+ /* 55 */
+ array(1, 30, 36, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78,),
+ /* 56 */
+ array(1, 30, 36, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78,),
+ /* 57 */
+ array(1, 30, 36, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78,),
+ /* 58 */
+ array(1, 30, 36, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78,),
+ /* 59 */
+ array(1, 30, 36, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78,),
+ /* 60 */
+ array(1, 3, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78,),
+ /* 61 */
+ array(1, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 80,),
+ /* 62 */
+ array(1, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78,),
+ /* 63 */
+ array(1, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78,),
+ /* 64 */
+ array(1, 3, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78,),
+ /* 65 */
+ array(1, 3, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78,),
+ /* 66 */
+ array(1, 2, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78,),
+ /* 67 */
+ array(1, 25, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78,),
+ /* 68 */
+ array(1, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78,),
+ /* 69 */
+ array(1, 31, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78,),
+ /* 70 */
+ array(1, 3, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78,),
+ /* 71 */
+ array(1, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78,),
+ /* 72 */
+ array(1, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78,),
+ /* 73 */
+ array(1, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78,),
+ /* 74 */
+ array(1, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78,),
+ /* 75 */
+ array(1, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78,),
+ /* 76 */
+ array(1, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78,),
+ /* 77 */
+ array(1, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78,),
+ /* 78 */
+ array(1, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78,),
+ /* 79 */
+ array(1, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78,),
+ /* 80 */
+ array(1, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78,),
+ /* 81 */
+ array(1, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78,),
+ /* 82 */
+ array(1, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78,),
+ /* 83 */
+ array(1, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78,),
+ /* 84 */
+ array(1, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78,),
+ /* 85 */
+ array(1, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78,),
+ /* 86 */
+ array(1, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78,),
+ /* 87 */
+ array(1, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78,),
+ /* 88 */
+ array(1, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78,),
+ /* 89 */
+ array(1, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78,),
+ /* 90 */
+ array(41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78,),
+ /* 91 */
+ array(41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78,),
+ /* 92 */
+ array(1, 3, 22, 30, 36, 39, 62,),
+ /* 93 */
+ array(1, 3, 30, 36, 55,),
+ /* 94 */
+ array(1, 30, 36,),
+ /* 95 */
+ array(4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 18, 23, 24, 29, 33, 35,),
+ /* 96 */
+ array(11, 18, 23, 24, 29, 33, 35, 79, 80, 81,),
+ /* 97 */
+ array(18, 20, 30, 32, 36,),
+ /* 98 */
+ array(18, 20, 30, 32, 36,),
+ /* 99 */
+ array(18, 20, 30, 36,),
+ /* 100 */
+ array(18, 20, 30, 36,),
+ /* 101 */
+ array(1, 3, 30, 36,),
+ /* 102 */
+ array(1, 3, 30, 36,),
+ /* 103 */
+ array(1, 30, 36,),
+ /* 104 */
+ array(1, 30, 36,),
+ /* 105 */
+ array(19, 20, 64,),
+ /* 106 */
+ array(22, 60, 65,),
+ /* 107 */
+ array(1, 2,),
+ /* 108 */
+ array(19, 39,),
+ /* 109 */
+ array(11, 18, 23, 24, 29, 33, 35, 79, 80, 81,),
+ /* 110 */
+ array(1, 3, 30, 31, 36, 55,),
+ /* 111 */
+ array(1, 3, 30, 36, 55,),
+ /* 112 */
+ array(1, 3, 30, 36, 55,),
+ /* 113 */
+ array(18, 20, 21, 26,),
+ /* 114 */
+ array(18, 20, 21, 63,),
+ /* 115 */
+ array(15, 16, 17,),
+ /* 116 */
+ array(21, 22, 62,),
+ /* 117 */
+ array(21, 22, 62,),
+ /* 118 */
+ array(1, 3, 55,),
+ /* 119 */
+ array(18, 20, 63,),
+ /* 120 */
+ array(18, 20, 21,),
+ /* 121 */
+ array(1, 32, 55,),
+ /* 122 */
+ array(18, 20,),
+ /* 123 */
+ array(18, 20,),
+ /* 124 */
+ array(1, 22,),
+ /* 125 */
+ array(18, 20,),
+ /* 126 */
+ array(18, 20,),
+ /* 127 */
+ array(19, 20,),
+ /* 128 */
+ array(22, 62,),
+ /* 129 */
+ array(18, 20,),
+ /* 130 */
+ array(19, 39,),
+ /* 131 */
+ array(18, 20,),
+ /* 132 */
+ array(19, 39,),
+ /* 133 */
+ array(1, 55,),
+ /* 134 */
+ array(19, 20,),
+ /* 135 */
+ array(18, 20,),
+ /* 136 */
+ array(18, 20,),
+ /* 137 */
+ array(30, 36,),
+ /* 138 */
+ array(18, 20,),
+ /* 139 */
+ array(30, 36,),
+ /* 140 */
+ array(30, 36,),
+ /* 141 */
+ array(18, 20,),
+ /* 142 */
+ array(18, 20,),
+ /* 143 */
+ array(18, 20,),
+ /* 144 */
+ array(18, 20,),
+ /* 145 */
+ array(18, 20,),
+ /* 146 */
+ array(1,),
+ /* 147 */
+ array(22,),
+ /* 148 */
+ array(1,),
+ /* 149 */
+ array(1,),
+ /* 150 */
+ array(22,),
+ /* 151 */
+ array(1,),
+ /* 152 */
+ array(1,),
+ /* 153 */
+ array(1,),
+ /* 154 */
+ array(1,),
+ /* 155 */
+ array(1,),
+ /* 156 */
+ array(1,),
+ /* 157 */
+ array(),
+ /* 158 */
+ array(18, 20, 63,),
+ /* 159 */
+ array(18, 19, 20,),
+ /* 160 */
+ array(30, 36,),
+ /* 161 */
+ array(30, 36,),
+ /* 162 */
+ array(30, 36,),
+ /* 163 */
+ array(30, 36,),
+ /* 164 */
+ array(30, 36,),
+ /* 165 */
+ array(30, 36,),
+ /* 166 */
+ array(30, 36,),
+ /* 167 */
+ array(30, 36,),
+ /* 168 */
+ array(60, 65,),
+ /* 169 */
+ array(60, 65,),
+ /* 170 */
+ array(60, 65,),
+ /* 171 */
+ array(60, 65,),
+ /* 172 */
+ array(60, 65,),
+ /* 173 */
+ array(30, 36,),
+ /* 174 */
+ array(30, 36,),
+ /* 175 */
+ array(30, 36,),
+ /* 176 */
+ array(30, 36,),
+ /* 177 */
+ array(30, 36,),
+ /* 178 */
+ array(30, 36,),
+ /* 179 */
+ array(60, 65,),
+ /* 180 */
+ array(60, 65,),
+ /* 181 */
+ array(60, 65,),
+ /* 182 */
+ array(18, 39,),
+ /* 183 */
+ array(30, 36,),
+ /* 184 */
+ array(30, 36,),
+ /* 185 */
+ array(30, 36,),
+ /* 186 */
+ array(60, 65,),
+ /* 187 */
+ array(30, 36,),
+ /* 188 */
+ array(30, 36,),
+ /* 189 */
+ array(30, 36,),
+ /* 190 */
+ array(16,),
+ /* 191 */
+ array(22,),
+ /* 192 */
+ array(22,),
+ /* 193 */
+ array(1,),
+ /* 194 */
+ array(30,),
+ /* 195 */
+ array(30,),
+ /* 196 */
+ array(2,),
+ /* 197 */
+ array(22,),
+ /* 198 */
+ array(1,),
+ /* 199 */
+ array(39,),
+ /* 200 */
+ array(1,),
+ /* 201 */
+ array(1,),
+ /* 202 */
+ array(2,),
+ /* 203 */
+ array(1,),
+ /* 204 */
+ array(),
+ /* 205 */
+ array(),
+ /* 206 */
+ array(),
+ /* 207 */
+ array(),
+ /* 208 */
+ array(),
+ /* 209 */
+ array(3, 25, 27, 28, 30, 31, 36, 38, 39, 40, 55, 62, 66, 80,),
+ /* 210 */
+ array(3, 21, 30, 36, 39, 62,),
+ /* 211 */
+ array(39, 60, 62, 66,),
+ /* 212 */
+ array(18, 19, 20, 37,),
+ /* 213 */
+ array(32, 39, 62,),
+ /* 214 */
+ array(26, 80,),
+ /* 215 */
+ array(38, 40,),
+ /* 216 */
+ array(38, 66,),
+ /* 217 */
+ array(38, 40,),
+ /* 218 */
+ array(25, 38,),
+ /* 219 */
+ array(21, 60,),
+ /* 220 */
+ array(3, 26,),
+ /* 221 */
+ array(38, 40,),
+ /* 222 */
+ array(39, 62,),
+ /* 223 */
+ array(2, 21,),
+ /* 224 */
+ array(39, 62,),
+ /* 225 */
+ array(20, 63,),
+ /* 226 */
+ array(20,),
+ /* 227 */
+ array(3,),
+ /* 228 */
+ array(20,),
+ /* 229 */
+ array(20,),
+ /* 230 */
+ array(20,),
+ /* 231 */
+ array(2,),
+ /* 232 */
+ array(19,),
+ /* 233 */
+ array(20,),
+ /* 234 */
+ array(19,),
+ /* 235 */
+ array(3,),
+ /* 236 */
+ array(20,),
+ /* 237 */
+ array(37,),
+ /* 238 */
+ array(37,),
+ /* 239 */
+ array(66,),
+ /* 240 */
+ array(20,),
+ /* 241 */
+ array(20,),
+ /* 242 */
+ array(3,),
+ /* 243 */
+ array(56,),
+ /* 244 */
+ array(39,),
+ /* 245 */
+ array(2,),
+ /* 246 */
+ array(60,),
+ /* 247 */
+ array(39,),
+ /* 248 */
+ array(19,),
+ /* 249 */
+ array(40,),
+ /* 250 */
+ array(20,),
+ /* 251 */
+ array(26,),
+ /* 252 */
+ array(19,),
+ /* 253 */
+ array(64,),
+ /* 254 */
+ array(20,),
+ /* 255 */
+ array(19,),
+ /* 256 */
+ array(20,),
+ /* 257 */
+ array(64,),
+ /* 258 */
+ array(27,),
+ /* 259 */
+ array(21,),
+ /* 260 */
+ array(),
+ /* 261 */
+ array(),
+ /* 262 */
+ array(),
+ /* 263 */
+ array(),
+ /* 264 */
+ array(),
+ /* 265 */
+ array(),
+ /* 266 */
+ array(),
+ /* 267 */
+ array(),
+ /* 268 */
+ array(),
+ /* 269 */
+ array(),
+ /* 270 */
+ array(),
+ /* 271 */
+ array(),
+ /* 272 */
+ array(),
+ /* 273 */
+ array(),
+ /* 274 */
+ array(),
+ /* 275 */
+ array(),
+ /* 276 */
+ array(),
+ /* 277 */
+ array(),
+ /* 278 */
+ array(),
+ /* 279 */
+ array(),
+ /* 280 */
+ array(),
+ /* 281 */
+ array(),
+ /* 282 */
+ array(),
+ /* 283 */
+ array(),
+ /* 284 */
+ array(),
+ /* 285 */
+ array(),
+ /* 286 */
+ array(),
+ /* 287 */
+ array(),
+ /* 288 */
+ array(),
+ /* 289 */
+ array(),
+ /* 290 */
+ array(),
+ /* 291 */
+ array(),
+ /* 292 */
+ array(),
+ /* 293 */
+ array(),
+ /* 294 */
+ array(),
+ /* 295 */
+ array(),
+ /* 296 */
+ array(),
+ /* 297 */
+ array(),
+ /* 298 */
+ array(),
+ /* 299 */
+ array(),
+ /* 300 */
+ array(),
+ /* 301 */
+ array(),
+ /* 302 */
+ array(),
+ /* 303 */
+ array(),
+ /* 304 */
+ array(),
+ /* 305 */
+ array(),
+ /* 306 */
+ array(),
+ /* 307 */
+ array(),
+ /* 308 */
+ array(),
+ /* 309 */
+ array(),
+ /* 310 */
+ array(),
+ /* 311 */
+ array(),
+ /* 312 */
+ array(),
+ /* 313 */
+ array(),
+ /* 314 */
+ array(),
+ /* 315 */
+ array(),
+ /* 316 */
+ array(),
+ /* 317 */
+ array(),
+ /* 318 */
+ array(),
+ /* 319 */
+ array(),
+ /* 320 */
+ array(),
+ /* 321 */
+ array(),
+ /* 322 */
+ array(),
+ /* 323 */
+ array(),
+ /* 324 */
+ array(),
+ /* 325 */
+ array(),
+ /* 326 */
+ array(),
+ /* 327 */
+ array(),
+ /* 328 */
+ array(),
+ /* 329 */
+ array(),
+ /* 330 */
+ array(),
+ /* 331 */
+ array(),
+ /* 332 */
+ array(),
+ /* 333 */
+ array(),
+ /* 334 */
+ array(),
+ /* 335 */
+ array(),
+ /* 336 */
+ array(),
+ /* 337 */
+ array(),
+ /* 338 */
+ array(),
+ /* 339 */
+ array(),
+ /* 340 */
+ array(),
+ /* 341 */
+ array(),
+ /* 342 */
+ array(),
+ /* 343 */
+ array(),
+ /* 344 */
+ array(),
+ /* 345 */
+ array(),
+ /* 346 */
+ array(),
+ /* 347 */
+ array(),
+ /* 348 */
+ array(),
+ /* 349 */
+ array(),
+ /* 350 */
+ array(),
+ /* 351 */
+ array(),
+ /* 352 */
+ array(),
+ /* 353 */
+ array(),
+ /* 354 */
+ array(),
+ /* 355 */
+ array(),
+ /* 356 */
+ array(),
+ /* 357 */
+ array(),
+ );
static public $yy_default = array(
- /* 0 */ 392, 574, 591, 591, 545, 591, 545, 545, 591, 591,
- /* 10 */ 591, 591, 591, 591, 591, 591, 591, 591, 591, 591,
- /* 20 */ 591, 591, 591, 591, 591, 591, 591, 591, 591, 591,
- /* 30 */ 591, 591, 591, 591, 591, 591, 591, 591, 591, 591,
- /* 40 */ 591, 591, 591, 591, 591, 591, 591, 591, 591, 591,
- /* 50 */ 591, 591, 591, 591, 591, 453, 591, 453, 453, 453,
- /* 60 */ 591, 591, 458, 591, 591, 591, 591, 591, 591, 591,
- /* 70 */ 591, 544, 575, 458, 576, 460, 463, 464, 435, 477,
- /* 80 */ 478, 479, 486, 487, 577, 483, 482, 543, 455, 474,
- /* 90 */ 490, 491, 502, 466, 453, 389, 591, 453, 453, 473,
- /* 100 */ 453, 510, 453, 591, 453, 591, 453, 557, 591, 591,
- /* 110 */ 591, 466, 466, 466, 518, 591, 591, 466, 591, 518,
- /* 120 */ 518, 466, 511, 511, 591, 591, 591, 591, 591, 591,
- /* 130 */ 591, 591, 511, 591, 591, 591, 591, 591, 518, 591,
- /* 140 */ 466, 591, 591, 591, 453, 591, 453, 554, 494, 469,
- /* 150 */ 489, 476, 495, 470, 493, 511, 471, 552, 591, 591,
- /* 160 */ 591, 591, 591, 591, 591, 591, 591, 519, 591, 591,
- /* 170 */ 591, 591, 591, 591, 591, 591, 591, 591, 591, 591,
- /* 180 */ 591, 591, 536, 535, 591, 538, 516, 518, 537, 408,
- /* 190 */ 558, 555, 518, 473, 510, 547, 532, 546, 590, 590,
- /* 200 */ 551, 551, 518, 551, 518, 468, 502, 502, 591, 502,
- /* 210 */ 591, 591, 591, 498, 488, 492, 530, 591, 502, 591,
- /* 220 */ 591, 492, 530, 591, 591, 591, 500, 498, 492, 530,
- /* 230 */ 591, 591, 591, 530, 591, 591, 591, 591, 591, 461,
- /* 240 */ 591, 591, 591, 591, 591, 591, 556, 591, 591, 591,
- /* 250 */ 504, 591, 591, 465, 515, 514, 539, 572, 433, 418,
- /* 260 */ 390, 432, 438, 573, 437, 526, 436, 541, 540, 523,
- /* 270 */ 553, 531, 542, 442, 504, 443, 571, 589, 524, 454,
- /* 280 */ 527, 525, 462, 485, 530, 529, 444, 445, 550, 441,
- /* 290 */ 440, 431, 430, 434, 452, 439, 446, 447, 499, 497,
- /* 300 */ 501, 507, 467, 496, 450, 448, 548, 549, 449, 451,
- /* 310 */ 417, 399, 398, 400, 401, 402, 397, 396, 391, 393,
- /* 320 */ 394, 395, 403, 404, 413, 412, 414, 415, 416, 411,
- /* 330 */ 410, 405, 406, 407, 409, 468, 512, 423, 422, 424,
- /* 340 */ 533, 425, 421, 586, 570, 569, 472, 419, 420, 426,
- /* 350 */ 427, 582, 583, 584, 587, 588, 580, 579, 429, 428,
- /* 360 */ 585, 578, 568, 567, 506, 505, 508, 475, 509, 503,
- /* 370 */ 522, 517, 520, 528, 521, 513, 534, 563, 562, 564,
- /* 380 */ 565, 566, 561, 560, 480, 481, 484, 559, 581,
-);
- const YYNOCODE = 124;
- const YYSTACKDEPTH = 100;
- const YYNSTATE = 389;
- const YYNRULE = 202;
- const YYERRORSYMBOL = 81;
+ /* 0 */
+ 361, 541, 558, 558, 512, 558, 512, 512, 558, 558,
+ /* 10 */
+ 558, 558, 558, 558, 558, 558, 558, 558, 558, 558,
+ /* 20 */
+ 558, 558, 558, 558, 558, 558, 558, 558, 558, 558,
+ /* 30 */
+ 558, 558, 558, 558, 558, 558, 558, 558, 558, 558,
+ /* 40 */
+ 558, 558, 558, 558, 558, 558, 558, 558, 558, 558,
+ /* 50 */
+ 558, 558, 558, 558, 418, 418, 418, 418, 387, 395,
+ /* 60 */
+ 558, 558, 558, 558, 558, 558, 558, 558, 558, 423,
+ /* 70 */
+ 558, 428, 425, 510, 423, 429, 511, 543, 444, 542,
+ /* 80 */
+ 447, 448, 443, 442, 439, 452, 544, 420, 451, 400,
+ /* 90 */
+ 456, 455, 467, 431, 418, 358, 558, 418, 418, 418,
+ /* 100 */
+ 418, 438, 475, 418, 418, 558, 524, 409, 558, 558,
+ /* 110 */
+ 431, 431, 431, 558, 485, 558, 476, 476, 431, 485,
+ /* 120 */
+ 485, 431, 558, 558, 412, 558, 485, 558, 476, 558,
+ /* 130 */
+ 558, 558, 558, 431, 558, 558, 558, 397, 558, 418,
+ /* 140 */
+ 418, 558, 558, 558, 558, 558, 441, 476, 414, 434,
+ /* 150 */
+ 521, 436, 435, 460, 459, 458, 454, 519, 486, 558,
+ /* 160 */
+ 385, 384, 405, 404, 389, 406, 399, 388, 505, 483,
+ /* 170 */
+ 482, 481, 480, 407, 408, 383, 398, 403, 402, 504,
+ /* 180 */
+ 479, 502, 485, 393, 392, 390, 503, 382, 396, 394,
+ /* 190 */
+ 378, 525, 522, 475, 557, 557, 513, 499, 438, 485,
+ /* 200 */
+ 413, 410, 514, 415, 518, 485, 518, 485, 518, 433,
+ /* 210 */
+ 467, 467, 558, 467, 457, 558, 558, 558, 558, 463,
+ /* 220 */
+ 457, 558, 453, 497, 467, 558, 558, 558, 558, 558,
+ /* 230 */
+ 558, 497, 558, 558, 558, 558, 558, 465, 558, 558,
+ /* 240 */
+ 558, 558, 558, 469, 497, 497, 463, 523, 558, 558,
+ /* 250 */
+ 558, 457, 558, 558, 558, 558, 558, 558, 426, 558,
+ /* 260 */
+ 477, 520, 495, 507, 490, 508, 487, 374, 498, 484,
+ /* 270 */
+ 556, 364, 363, 365, 461, 366, 472, 466, 360, 359,
+ /* 280 */
+ 462, 362, 464, 367, 430, 401, 469, 372, 373, 419,
+ /* 290 */
+ 432, 427, 368, 369, 370, 371, 433, 470, 445, 497,
+ /* 300 */
+ 446, 496, 450, 449, 500, 517, 545, 474, 552, 411,
+ /* 310 */
+ 501, 478, 553, 526, 534, 533, 535, 536, 437, 537,
+ /* 320 */
+ 532, 417, 528, 527, 529, 530, 531, 546, 547, 515,
+ /* 330 */
+ 506, 375, 376, 509, 377, 516, 468, 494, 489, 492,
+ /* 340 */
+ 491, 493, 379, 380, 555, 548, 554, 551, 550, 549,
+ /* 350 */
+ 440, 416, 473, 471, 539, 540, 538, 488,
+ );
+ const YYNOCODE = 125;
+ const YYSTACKDEPTH = 500;
+ const YYNSTATE = 358;
+ const YYNRULE = 200;
+ const YYERRORSYMBOL = 82;
const YYERRSYMDT = 'yy0';
const YYFALLBACK = 0;
- static public $yyFallback = array(
- );
- static function Trace($TraceFILE, $zTracePrompt)
+ public static $yyFallback = array();
+
+ public function Trace($TraceFILE, $zTracePrompt)
{
if (!$TraceFILE) {
$zTracePrompt = 0;
} elseif (!$zTracePrompt) {
$TraceFILE = 0;
}
- self::$yyTraceFILE = $TraceFILE;
- self::$yyTracePrompt = $zTracePrompt;
+ $this->yyTraceFILE = $TraceFILE;
+ $this->yyTracePrompt = $zTracePrompt;
}
- static function PrintTrace()
+ public function PrintTrace()
{
- self::$yyTraceFILE = fopen('php://output', 'w');
- self::$yyTracePrompt = '<br>';
+ $this->yyTraceFILE = fopen('php://output', 'w');
+ $this->yyTracePrompt = '<br>';
}
- static public $yyTraceFILE;
- static public $yyTracePrompt;
+ public $yyTraceFILE;
+ public $yyTracePrompt;
public $yyidx; /* Index of top element in stack */
public $yyerrcnt; /* Shifts left before out of the error */
public $yystack = array(); /* The parser's stack */
public $yyTokenName = array(
- '$', 'VERT', 'COLON', 'COMMENT',
- 'PHPSTARTTAG', 'PHPENDTAG', 'ASPSTARTTAG', 'ASPENDTAG',
- 'FAKEPHPSTARTTAG', 'XMLTAG', 'TEXT', 'STRIPON',
- 'STRIPOFF', 'LITERALSTART', 'LITERALEND', 'LITERAL',
- 'LDEL', 'RDEL', 'DOLLAR', 'ID',
- 'EQUAL', 'PTR', 'LDELIF', 'LDELFOR',
- 'SEMICOLON', 'INCDEC', 'TO', 'STEP',
- 'LDELFOREACH', 'SPACE', 'AS', 'APTR',
- 'LDELSETFILTER', 'SMARTYBLOCKCHILD', 'LDELSLASH', 'ATTR',
- 'INTEGER', 'COMMA', 'OPENP', 'CLOSEP',
- 'MATH', 'UNIMATH', 'ANDSYM', 'ISIN',
- 'ISDIVBY', 'ISNOTDIVBY', 'ISEVEN', 'ISNOTEVEN',
- 'ISEVENBY', 'ISNOTEVENBY', 'ISODD', 'ISNOTODD',
- 'ISODDBY', 'ISNOTODDBY', 'INSTANCEOF', 'QMARK',
- 'NOT', 'TYPECAST', 'HEX', 'DOT',
- 'SINGLEQUOTESTRING', 'DOUBLECOLON', 'AT', 'HATCH',
- 'OPENB', 'CLOSEB', 'EQUALS', 'NOTEQUALS',
- 'GREATERTHAN', 'LESSTHAN', 'GREATEREQUAL', 'LESSEQUAL',
- 'IDENTITY', 'NONEIDENTITY', 'MOD', 'LAND',
- 'LOR', 'LXOR', 'QUOTE', 'BACKTICK',
- 'DOLLARID', 'error', 'start', 'template',
- 'template_element', 'smartytag', 'literal', 'literal_elements',
- 'literal_element', 'value', 'modifierlist', 'attributes',
- 'expr', 'varindexed', 'statement', 'statements',
- 'optspace', 'varvar', 'foraction', 'modparameters',
- 'attribute', 'ternary', 'array', 'ifcond',
- 'lop', 'variable', 'function', 'doublequoted_with_quotes',
- 'static_class_access', 'object', 'arrayindex', 'indexdef',
- 'varvarele', 'objectchain', 'objectelement', 'method',
- 'params', 'modifier', 'modparameter', 'arrayelements',
- 'arrayelement', 'doublequoted', 'doublequotedcontent',
+ '$', 'VERT', 'COLON', 'RDEL',
+ 'COMMENT', 'PHPSTARTTAG', 'PHPENDTAG', 'PHPENDSCRIPT',
+ 'ASPSTARTTAG', 'ASPENDTAG', 'XMLTAG', 'TEXT',
+ 'STRIPON', 'STRIPOFF', 'BLOCKSOURCE', 'LITERALSTART',
+ 'LITERALEND', 'LITERAL', 'LDEL', 'DOLLAR',
+ 'ID', 'EQUAL', 'PTR', 'LDELIF',
+ 'LDELFOR', 'SEMICOLON', 'INCDEC', 'TO',
+ 'STEP', 'LDELFOREACH', 'SPACE', 'AS',
+ 'APTR', 'LDELSETFILTER', 'SMARTYBLOCKCHILDPARENT', 'LDELSLASH',
+ 'ATTR', 'INTEGER', 'COMMA', 'OPENP',
+ 'CLOSEP', 'MATH', 'UNIMATH', 'ANDSYM',
+ 'ISIN', 'ISDIVBY', 'ISNOTDIVBY', 'ISEVEN',
+ 'ISNOTEVEN', 'ISEVENBY', 'ISNOTEVENBY', 'ISODD',
+ 'ISNOTODD', 'ISODDBY', 'ISNOTODDBY', 'INSTANCEOF',
+ 'QMARK', 'NOT', 'TYPECAST', 'HEX',
+ 'DOT', 'SINGLEQUOTESTRING', 'DOUBLECOLON', 'AT',
+ 'HATCH', 'OPENB', 'CLOSEB', 'EQUALS',
+ 'NOTEQUALS', 'GREATERTHAN', 'LESSTHAN', 'GREATEREQUAL',
+ 'LESSEQUAL', 'IDENTITY', 'NONEIDENTITY', 'MOD',
+ 'LAND', 'LOR', 'LXOR', 'QUOTE',
+ 'BACKTICK', 'DOLLARID', 'error', 'start',
+ 'template', 'template_element', 'smartytag', 'literal',
+ 'literal_elements', 'literal_element', 'value', 'modifierlist',
+ 'attributes', 'expr', 'varindexed', 'statement',
+ 'statements', 'optspace', 'varvar', 'foraction',
+ 'modparameters', 'attribute', 'ternary', 'array',
+ 'ifcond', 'lop', 'variable', 'function',
+ 'doublequoted_with_quotes', 'static_class_access', 'object', 'arrayindex',
+ 'indexdef', 'varvarele', 'objectchain', 'objectelement',
+ 'method', 'params', 'modifier', 'modparameter',
+ 'arrayelements', 'arrayelement', 'doublequoted', 'doublequotedcontent',
);
- static public $yyRuleName = array(
- /* 0 */ "start ::= template",
- /* 1 */ "template ::= template_element",
- /* 2 */ "template ::= template template_element",
- /* 3 */ "template ::=",
- /* 4 */ "template_element ::= smartytag",
- /* 5 */ "template_element ::= COMMENT",
- /* 6 */ "template_element ::= literal",
- /* 7 */ "template_element ::= PHPSTARTTAG",
- /* 8 */ "template_element ::= PHPENDTAG",
- /* 9 */ "template_element ::= ASPSTARTTAG",
- /* 10 */ "template_element ::= ASPENDTAG",
- /* 11 */ "template_element ::= FAKEPHPSTARTTAG",
- /* 12 */ "template_element ::= XMLTAG",
- /* 13 */ "template_element ::= TEXT",
- /* 14 */ "template_element ::= STRIPON",
- /* 15 */ "template_element ::= STRIPOFF",
- /* 16 */ "literal ::= LITERALSTART LITERALEND",
- /* 17 */ "literal ::= LITERALSTART literal_elements LITERALEND",
- /* 18 */ "literal_elements ::= literal_elements literal_element",
- /* 19 */ "literal_elements ::=",
- /* 20 */ "literal_element ::= literal",
- /* 21 */ "literal_element ::= LITERAL",
- /* 22 */ "literal_element ::= PHPSTARTTAG",
- /* 23 */ "literal_element ::= FAKEPHPSTARTTAG",
- /* 24 */ "literal_element ::= PHPENDTAG",
- /* 25 */ "literal_element ::= ASPSTARTTAG",
- /* 26 */ "literal_element ::= ASPENDTAG",
- /* 27 */ "smartytag ::= LDEL value RDEL",
- /* 28 */ "smartytag ::= LDEL value modifierlist attributes RDEL",
- /* 29 */ "smartytag ::= LDEL value attributes RDEL",
- /* 30 */ "smartytag ::= LDEL expr modifierlist attributes RDEL",
- /* 31 */ "smartytag ::= LDEL expr attributes RDEL",
- /* 32 */ "smartytag ::= LDEL DOLLAR ID EQUAL value RDEL",
- /* 33 */ "smartytag ::= LDEL DOLLAR ID EQUAL expr RDEL",
- /* 34 */ "smartytag ::= LDEL DOLLAR ID EQUAL expr attributes RDEL",
- /* 35 */ "smartytag ::= LDEL varindexed EQUAL expr attributes RDEL",
- /* 36 */ "smartytag ::= LDEL ID attributes RDEL",
- /* 37 */ "smartytag ::= LDEL ID RDEL",
- /* 38 */ "smartytag ::= LDEL ID PTR ID attributes RDEL",
- /* 39 */ "smartytag ::= LDEL ID modifierlist attributes RDEL",
- /* 40 */ "smartytag ::= LDEL ID PTR ID modifierlist attributes RDEL",
- /* 41 */ "smartytag ::= LDELIF expr RDEL",
- /* 42 */ "smartytag ::= LDELIF expr attributes RDEL",
- /* 43 */ "smartytag ::= LDELIF statement RDEL",
- /* 44 */ "smartytag ::= LDELIF statement attributes RDEL",
- /* 45 */ "smartytag ::= LDELFOR statements SEMICOLON optspace expr SEMICOLON optspace DOLLAR varvar foraction attributes RDEL",
- /* 46 */ "foraction ::= EQUAL expr",
- /* 47 */ "foraction ::= INCDEC",
- /* 48 */ "smartytag ::= LDELFOR statement TO expr attributes RDEL",
- /* 49 */ "smartytag ::= LDELFOR statement TO expr STEP expr attributes RDEL",
- /* 50 */ "smartytag ::= LDELFOREACH attributes RDEL",
- /* 51 */ "smartytag ::= LDELFOREACH SPACE value AS DOLLAR varvar attributes RDEL",
- /* 52 */ "smartytag ::= LDELFOREACH SPACE value AS DOLLAR varvar APTR DOLLAR varvar attributes RDEL",
- /* 53 */ "smartytag ::= LDELFOREACH SPACE expr AS DOLLAR varvar attributes RDEL",
- /* 54 */ "smartytag ::= LDELFOREACH SPACE expr AS DOLLAR varvar APTR DOLLAR varvar attributes RDEL",
- /* 55 */ "smartytag ::= LDELSETFILTER ID modparameters RDEL",
- /* 56 */ "smartytag ::= LDELSETFILTER ID modparameters modifierlist RDEL",
- /* 57 */ "smartytag ::= SMARTYBLOCKCHILD",
- /* 58 */ "smartytag ::= LDELSLASH ID RDEL",
- /* 59 */ "smartytag ::= LDELSLASH ID modifierlist RDEL",
- /* 60 */ "smartytag ::= LDELSLASH ID PTR ID RDEL",
- /* 61 */ "smartytag ::= LDELSLASH ID PTR ID modifierlist RDEL",
- /* 62 */ "attributes ::= attributes attribute",
- /* 63 */ "attributes ::= attribute",
- /* 64 */ "attributes ::=",
- /* 65 */ "attribute ::= SPACE ID EQUAL ID",
- /* 66 */ "attribute ::= ATTR expr",
- /* 67 */ "attribute ::= ATTR value",
- /* 68 */ "attribute ::= SPACE ID",
- /* 69 */ "attribute ::= SPACE expr",
- /* 70 */ "attribute ::= SPACE value",
- /* 71 */ "attribute ::= SPACE INTEGER EQUAL expr",
- /* 72 */ "statements ::= statement",
- /* 73 */ "statements ::= statements COMMA statement",
- /* 74 */ "statement ::= DOLLAR varvar EQUAL expr",
- /* 75 */ "statement ::= varindexed EQUAL expr",
- /* 76 */ "statement ::= OPENP statement CLOSEP",
- /* 77 */ "expr ::= value",
- /* 78 */ "expr ::= ternary",
- /* 79 */ "expr ::= DOLLAR ID COLON ID",
- /* 80 */ "expr ::= expr MATH value",
- /* 81 */ "expr ::= expr UNIMATH value",
- /* 82 */ "expr ::= expr ANDSYM value",
- /* 83 */ "expr ::= array",
- /* 84 */ "expr ::= expr modifierlist",
- /* 85 */ "expr ::= expr ifcond expr",
- /* 86 */ "expr ::= expr ISIN array",
- /* 87 */ "expr ::= expr ISIN value",
- /* 88 */ "expr ::= expr lop expr",
- /* 89 */ "expr ::= expr ISDIVBY expr",
- /* 90 */ "expr ::= expr ISNOTDIVBY expr",
- /* 91 */ "expr ::= expr ISEVEN",
- /* 92 */ "expr ::= expr ISNOTEVEN",
- /* 93 */ "expr ::= expr ISEVENBY expr",
- /* 94 */ "expr ::= expr ISNOTEVENBY expr",
- /* 95 */ "expr ::= expr ISODD",
- /* 96 */ "expr ::= expr ISNOTODD",
- /* 97 */ "expr ::= expr ISODDBY expr",
- /* 98 */ "expr ::= expr ISNOTODDBY expr",
- /* 99 */ "expr ::= value INSTANCEOF ID",
- /* 100 */ "expr ::= value INSTANCEOF value",
- /* 101 */ "ternary ::= OPENP expr CLOSEP QMARK DOLLAR ID COLON expr",
- /* 102 */ "ternary ::= OPENP expr CLOSEP QMARK expr COLON expr",
- /* 103 */ "value ::= variable",
- /* 104 */ "value ::= UNIMATH value",
- /* 105 */ "value ::= NOT value",
- /* 106 */ "value ::= TYPECAST value",
- /* 107 */ "value ::= variable INCDEC",
- /* 108 */ "value ::= HEX",
- /* 109 */ "value ::= INTEGER",
- /* 110 */ "value ::= INTEGER DOT INTEGER",
- /* 111 */ "value ::= INTEGER DOT",
- /* 112 */ "value ::= DOT INTEGER",
- /* 113 */ "value ::= ID",
- /* 114 */ "value ::= function",
- /* 115 */ "value ::= OPENP expr CLOSEP",
- /* 116 */ "value ::= SINGLEQUOTESTRING",
- /* 117 */ "value ::= doublequoted_with_quotes",
- /* 118 */ "value ::= ID DOUBLECOLON static_class_access",
- /* 119 */ "value ::= varindexed DOUBLECOLON static_class_access",
- /* 120 */ "value ::= smartytag",
- /* 121 */ "value ::= value modifierlist",
- /* 122 */ "variable ::= varindexed",
- /* 123 */ "variable ::= DOLLAR varvar AT ID",
- /* 124 */ "variable ::= object",
- /* 125 */ "variable ::= HATCH ID HATCH",
- /* 126 */ "variable ::= HATCH variable HATCH",
- /* 127 */ "varindexed ::= DOLLAR varvar arrayindex",
- /* 128 */ "arrayindex ::= arrayindex indexdef",
- /* 129 */ "arrayindex ::=",
- /* 130 */ "indexdef ::= DOT DOLLAR varvar",
- /* 131 */ "indexdef ::= DOT DOLLAR varvar AT ID",
- /* 132 */ "indexdef ::= DOT ID",
- /* 133 */ "indexdef ::= DOT INTEGER",
- /* 134 */ "indexdef ::= DOT LDEL expr RDEL",
- /* 135 */ "indexdef ::= OPENB ID CLOSEB",
- /* 136 */ "indexdef ::= OPENB ID DOT ID CLOSEB",
- /* 137 */ "indexdef ::= OPENB expr CLOSEB",
- /* 138 */ "indexdef ::= OPENB CLOSEB",
- /* 139 */ "varvar ::= varvarele",
- /* 140 */ "varvar ::= varvar varvarele",
- /* 141 */ "varvarele ::= ID",
- /* 142 */ "varvarele ::= LDEL expr RDEL",
- /* 143 */ "object ::= varindexed objectchain",
- /* 144 */ "objectchain ::= objectelement",
- /* 145 */ "objectchain ::= objectchain objectelement",
- /* 146 */ "objectelement ::= PTR ID arrayindex",
- /* 147 */ "objectelement ::= PTR DOLLAR varvar arrayindex",
- /* 148 */ "objectelement ::= PTR LDEL expr RDEL arrayindex",
- /* 149 */ "objectelement ::= PTR ID LDEL expr RDEL arrayindex",
- /* 150 */ "objectelement ::= PTR method",
- /* 151 */ "function ::= ID OPENP params CLOSEP",
- /* 152 */ "method ::= ID OPENP params CLOSEP",
- /* 153 */ "method ::= DOLLAR ID OPENP params CLOSEP",
- /* 154 */ "params ::= params COMMA expr",
- /* 155 */ "params ::= expr",
- /* 156 */ "params ::=",
- /* 157 */ "modifierlist ::= modifierlist modifier modparameters",
- /* 158 */ "modifierlist ::= modifier modparameters",
- /* 159 */ "modifier ::= VERT AT ID",
- /* 160 */ "modifier ::= VERT ID",
- /* 161 */ "modparameters ::= modparameters modparameter",
- /* 162 */ "modparameters ::=",
- /* 163 */ "modparameter ::= COLON value",
- /* 164 */ "modparameter ::= COLON array",
- /* 165 */ "static_class_access ::= method",
- /* 166 */ "static_class_access ::= method objectchain",
- /* 167 */ "static_class_access ::= ID",
- /* 168 */ "static_class_access ::= DOLLAR ID arrayindex",
- /* 169 */ "static_class_access ::= DOLLAR ID arrayindex objectchain",
- /* 170 */ "ifcond ::= EQUALS",
- /* 171 */ "ifcond ::= NOTEQUALS",
- /* 172 */ "ifcond ::= GREATERTHAN",
- /* 173 */ "ifcond ::= LESSTHAN",
- /* 174 */ "ifcond ::= GREATEREQUAL",
- /* 175 */ "ifcond ::= LESSEQUAL",
- /* 176 */ "ifcond ::= IDENTITY",
- /* 177 */ "ifcond ::= NONEIDENTITY",
- /* 178 */ "ifcond ::= MOD",
- /* 179 */ "lop ::= LAND",
- /* 180 */ "lop ::= LOR",
- /* 181 */ "lop ::= LXOR",
- /* 182 */ "array ::= OPENB arrayelements CLOSEB",
- /* 183 */ "arrayelements ::= arrayelement",
- /* 184 */ "arrayelements ::= arrayelements COMMA arrayelement",
- /* 185 */ "arrayelements ::=",
- /* 186 */ "arrayelement ::= value APTR expr",
- /* 187 */ "arrayelement ::= ID APTR expr",
- /* 188 */ "arrayelement ::= expr",
- /* 189 */ "doublequoted_with_quotes ::= QUOTE QUOTE",
- /* 190 */ "doublequoted_with_quotes ::= QUOTE doublequoted QUOTE",
- /* 191 */ "doublequoted ::= doublequoted doublequotedcontent",
- /* 192 */ "doublequoted ::= doublequotedcontent",
- /* 193 */ "doublequotedcontent ::= BACKTICK variable BACKTICK",
- /* 194 */ "doublequotedcontent ::= BACKTICK expr BACKTICK",
- /* 195 */ "doublequotedcontent ::= DOLLARID",
- /* 196 */ "doublequotedcontent ::= LDEL variable RDEL",
- /* 197 */ "doublequotedcontent ::= LDEL expr RDEL",
- /* 198 */ "doublequotedcontent ::= smartytag",
- /* 199 */ "doublequotedcontent ::= TEXT",
- /* 200 */ "optspace ::= SPACE",
- /* 201 */ "optspace ::=",
+ public static $yyRuleName = array(
+ /* 0 */
+ "start ::= template",
+ /* 1 */
+ "template ::= template_element",
+ /* 2 */
+ "template ::= template template_element",
+ /* 3 */
+ "template ::=",
+ /* 4 */
+ "template_element ::= smartytag RDEL",
+ /* 5 */
+ "template_element ::= COMMENT",
+ /* 6 */
+ "template_element ::= literal",
+ /* 7 */
+ "template_element ::= PHPSTARTTAG",
+ /* 8 */
+ "template_element ::= PHPENDTAG",
+ /* 9 */
+ "template_element ::= PHPENDSCRIPT",
+ /* 10 */
+ "template_element ::= ASPSTARTTAG",
+ /* 11 */
+ "template_element ::= ASPENDTAG",
+ /* 12 */
+ "template_element ::= XMLTAG",
+ /* 13 */
+ "template_element ::= TEXT",
+ /* 14 */
+ "template_element ::= STRIPON",
+ /* 15 */
+ "template_element ::= STRIPOFF",
+ /* 16 */
+ "template_element ::= BLOCKSOURCE",
+ /* 17 */
+ "literal ::= LITERALSTART LITERALEND",
+ /* 18 */
+ "literal ::= LITERALSTART literal_elements LITERALEND",
+ /* 19 */
+ "literal_elements ::= literal_elements literal_element",
+ /* 20 */
+ "literal_elements ::=",
+ /* 21 */
+ "literal_element ::= literal",
+ /* 22 */
+ "literal_element ::= LITERAL",
+ /* 23 */
+ "smartytag ::= LDEL value",
+ /* 24 */
+ "smartytag ::= LDEL value modifierlist attributes",
+ /* 25 */
+ "smartytag ::= LDEL value attributes",
+ /* 26 */
+ "smartytag ::= LDEL expr modifierlist attributes",
+ /* 27 */
+ "smartytag ::= LDEL expr attributes",
+ /* 28 */
+ "smartytag ::= LDEL DOLLAR ID EQUAL value",
+ /* 29 */
+ "smartytag ::= LDEL DOLLAR ID EQUAL expr",
+ /* 30 */
+ "smartytag ::= LDEL DOLLAR ID EQUAL expr attributes",
+ /* 31 */
+ "smartytag ::= LDEL varindexed EQUAL expr attributes",
+ /* 32 */
+ "smartytag ::= LDEL ID attributes",
+ /* 33 */
+ "smartytag ::= LDEL ID",
+ /* 34 */
+ "smartytag ::= LDEL ID PTR ID attributes",
+ /* 35 */
+ "smartytag ::= LDEL ID modifierlist attributes",
+ /* 36 */
+ "smartytag ::= LDEL ID PTR ID modifierlist attributes",
+ /* 37 */
+ "smartytag ::= LDELIF expr",
+ /* 38 */
+ "smartytag ::= LDELIF expr attributes",
+ /* 39 */
+ "smartytag ::= LDELIF statement",
+ /* 40 */
+ "smartytag ::= LDELIF statement attributes",
+ /* 41 */
+ "smartytag ::= LDELFOR statements SEMICOLON optspace expr SEMICOLON optspace DOLLAR varvar foraction attributes",
+ /* 42 */
+ "foraction ::= EQUAL expr",
+ /* 43 */
+ "foraction ::= INCDEC",
+ /* 44 */
+ "smartytag ::= LDELFOR statement TO expr attributes",
+ /* 45 */
+ "smartytag ::= LDELFOR statement TO expr STEP expr attributes",
+ /* 46 */
+ "smartytag ::= LDELFOREACH attributes",
+ /* 47 */
+ "smartytag ::= LDELFOREACH SPACE value AS DOLLAR varvar attributes",
+ /* 48 */
+ "smartytag ::= LDELFOREACH SPACE value AS DOLLAR varvar APTR DOLLAR varvar attributes",
+ /* 49 */
+ "smartytag ::= LDELFOREACH SPACE expr AS DOLLAR varvar attributes",
+ /* 50 */
+ "smartytag ::= LDELFOREACH SPACE expr AS DOLLAR varvar APTR DOLLAR varvar attributes",
+ /* 51 */
+ "smartytag ::= LDELSETFILTER ID modparameters",
+ /* 52 */
+ "smartytag ::= LDELSETFILTER ID modparameters modifierlist",
+ /* 53 */
+ "smartytag ::= LDEL SMARTYBLOCKCHILDPARENT",
+ /* 54 */
+ "smartytag ::= LDELSLASH ID",
+ /* 55 */
+ "smartytag ::= LDELSLASH ID modifierlist",
+ /* 56 */
+ "smartytag ::= LDELSLASH ID PTR ID",
+ /* 57 */
+ "smartytag ::= LDELSLASH ID PTR ID modifierlist",
+ /* 58 */
+ "attributes ::= attributes attribute",
+ /* 59 */
+ "attributes ::= attribute",
+ /* 60 */
+ "attributes ::=",
+ /* 61 */
+ "attribute ::= SPACE ID EQUAL ID",
+ /* 62 */
+ "attribute ::= ATTR expr",
+ /* 63 */
+ "attribute ::= ATTR value",
+ /* 64 */
+ "attribute ::= SPACE ID",
+ /* 65 */
+ "attribute ::= SPACE expr",
+ /* 66 */
+ "attribute ::= SPACE value",
+ /* 67 */
+ "attribute ::= SPACE INTEGER EQUAL expr",
+ /* 68 */
+ "statements ::= statement",
+ /* 69 */
+ "statements ::= statements COMMA statement",
+ /* 70 */
+ "statement ::= DOLLAR varvar EQUAL expr",
+ /* 71 */
+ "statement ::= varindexed EQUAL expr",
+ /* 72 */
+ "statement ::= OPENP statement CLOSEP",
+ /* 73 */
+ "expr ::= value",
+ /* 74 */
+ "expr ::= ternary",
+ /* 75 */
+ "expr ::= DOLLAR ID COLON ID",
+ /* 76 */
+ "expr ::= expr MATH value",
+ /* 77 */
+ "expr ::= expr UNIMATH value",
+ /* 78 */
+ "expr ::= expr ANDSYM value",
+ /* 79 */
+ "expr ::= array",
+ /* 80 */
+ "expr ::= expr modifierlist",
+ /* 81 */
+ "expr ::= expr ifcond expr",
+ /* 82 */
+ "expr ::= expr ISIN array",
+ /* 83 */
+ "expr ::= expr ISIN value",
+ /* 84 */
+ "expr ::= expr lop expr",
+ /* 85 */
+ "expr ::= expr ISDIVBY expr",
+ /* 86 */
+ "expr ::= expr ISNOTDIVBY expr",
+ /* 87 */
+ "expr ::= expr ISEVEN",
+ /* 88 */
+ "expr ::= expr ISNOTEVEN",
+ /* 89 */
+ "expr ::= expr ISEVENBY expr",
+ /* 90 */
+ "expr ::= expr ISNOTEVENBY expr",
+ /* 91 */
+ "expr ::= expr ISODD",
+ /* 92 */
+ "expr ::= expr ISNOTODD",
+ /* 93 */
+ "expr ::= expr ISODDBY expr",
+ /* 94 */
+ "expr ::= expr ISNOTODDBY expr",
+ /* 95 */
+ "expr ::= value INSTANCEOF ID",
+ /* 96 */
+ "expr ::= value INSTANCEOF value",
+ /* 97 */
+ "ternary ::= OPENP expr CLOSEP QMARK DOLLAR ID COLON expr",
+ /* 98 */
+ "ternary ::= OPENP expr CLOSEP QMARK expr COLON expr",
+ /* 99 */
+ "value ::= variable",
+ /* 100 */
+ "value ::= UNIMATH value",
+ /* 101 */
+ "value ::= NOT value",
+ /* 102 */
+ "value ::= TYPECAST value",
+ /* 103 */
+ "value ::= variable INCDEC",
+ /* 104 */
+ "value ::= HEX",
+ /* 105 */
+ "value ::= INTEGER",
+ /* 106 */
+ "value ::= INTEGER DOT INTEGER",
+ /* 107 */
+ "value ::= INTEGER DOT",
+ /* 108 */
+ "value ::= DOT INTEGER",
+ /* 109 */
+ "value ::= ID",
+ /* 110 */
+ "value ::= function",
+ /* 111 */
+ "value ::= OPENP expr CLOSEP",
+ /* 112 */
+ "value ::= SINGLEQUOTESTRING",
+ /* 113 */
+ "value ::= doublequoted_with_quotes",
+ /* 114 */
+ "value ::= ID DOUBLECOLON static_class_access",
+ /* 115 */
+ "value ::= varindexed DOUBLECOLON static_class_access",
+ /* 116 */
+ "value ::= smartytag RDEL",
+ /* 117 */
+ "value ::= value modifierlist",
+ /* 118 */
+ "variable ::= varindexed",
+ /* 119 */
+ "variable ::= DOLLAR varvar AT ID",
+ /* 120 */
+ "variable ::= object",
+ /* 121 */
+ "variable ::= HATCH ID HATCH",
+ /* 122 */
+ "variable ::= HATCH ID HATCH arrayindex",
+ /* 123 */
+ "variable ::= HATCH variable HATCH",
+ /* 124 */
+ "variable ::= HATCH variable HATCH arrayindex",
+ /* 125 */
+ "varindexed ::= DOLLAR varvar arrayindex",
+ /* 126 */
+ "arrayindex ::= arrayindex indexdef",
+ /* 127 */
+ "arrayindex ::=",
+ /* 128 */
+ "indexdef ::= DOT DOLLAR varvar",
+ /* 129 */
+ "indexdef ::= DOT DOLLAR varvar AT ID",
+ /* 130 */
+ "indexdef ::= DOT ID",
+ /* 131 */
+ "indexdef ::= DOT INTEGER",
+ /* 132 */
+ "indexdef ::= DOT LDEL expr RDEL",
+ /* 133 */
+ "indexdef ::= OPENB ID CLOSEB",
+ /* 134 */
+ "indexdef ::= OPENB ID DOT ID CLOSEB",
+ /* 135 */
+ "indexdef ::= OPENB expr CLOSEB",
+ /* 136 */
+ "indexdef ::= OPENB CLOSEB",
+ /* 137 */
+ "varvar ::= varvarele",
+ /* 138 */
+ "varvar ::= varvar varvarele",
+ /* 139 */
+ "varvarele ::= ID",
+ /* 140 */
+ "varvarele ::= LDEL expr RDEL",
+ /* 141 */
+ "object ::= varindexed objectchain",
+ /* 142 */
+ "objectchain ::= objectelement",
+ /* 143 */
+ "objectchain ::= objectchain objectelement",
+ /* 144 */
+ "objectelement ::= PTR ID arrayindex",
+ /* 145 */
+ "objectelement ::= PTR DOLLAR varvar arrayindex",
+ /* 146 */
+ "objectelement ::= PTR LDEL expr RDEL arrayindex",
+ /* 147 */
+ "objectelement ::= PTR ID LDEL expr RDEL arrayindex",
+ /* 148 */
+ "objectelement ::= PTR method",
+ /* 149 */
+ "function ::= ID OPENP params CLOSEP",
+ /* 150 */
+ "method ::= ID OPENP params CLOSEP",
+ /* 151 */
+ "method ::= DOLLAR ID OPENP params CLOSEP",
+ /* 152 */
+ "params ::= params COMMA expr",
+ /* 153 */
+ "params ::= expr",
+ /* 154 */
+ "params ::=",
+ /* 155 */
+ "modifierlist ::= modifierlist modifier modparameters",
+ /* 156 */
+ "modifierlist ::= modifier modparameters",
+ /* 157 */
+ "modifier ::= VERT AT ID",
+ /* 158 */
+ "modifier ::= VERT ID",
+ /* 159 */
+ "modparameters ::= modparameters modparameter",
+ /* 160 */
+ "modparameters ::=",
+ /* 161 */
+ "modparameter ::= COLON value",
+ /* 162 */
+ "modparameter ::= COLON array",
+ /* 163 */
+ "static_class_access ::= method",
+ /* 164 */
+ "static_class_access ::= method objectchain",
+ /* 165 */
+ "static_class_access ::= ID",
+ /* 166 */
+ "static_class_access ::= DOLLAR ID arrayindex",
+ /* 167 */
+ "static_class_access ::= DOLLAR ID arrayindex objectchain",
+ /* 168 */
+ "ifcond ::= EQUALS",
+ /* 169 */
+ "ifcond ::= NOTEQUALS",
+ /* 170 */
+ "ifcond ::= GREATERTHAN",
+ /* 171 */
+ "ifcond ::= LESSTHAN",
+ /* 172 */
+ "ifcond ::= GREATEREQUAL",
+ /* 173 */
+ "ifcond ::= LESSEQUAL",
+ /* 174 */
+ "ifcond ::= IDENTITY",
+ /* 175 */
+ "ifcond ::= NONEIDENTITY",
+ /* 176 */
+ "ifcond ::= MOD",
+ /* 177 */
+ "lop ::= LAND",
+ /* 178 */
+ "lop ::= LOR",
+ /* 179 */
+ "lop ::= LXOR",
+ /* 180 */
+ "array ::= OPENB arrayelements CLOSEB",
+ /* 181 */
+ "arrayelements ::= arrayelement",
+ /* 182 */
+ "arrayelements ::= arrayelements COMMA arrayelement",
+ /* 183 */
+ "arrayelements ::=",
+ /* 184 */
+ "arrayelement ::= value APTR expr",
+ /* 185 */
+ "arrayelement ::= ID APTR expr",
+ /* 186 */
+ "arrayelement ::= expr",
+ /* 187 */
+ "doublequoted_with_quotes ::= QUOTE QUOTE",
+ /* 188 */
+ "doublequoted_with_quotes ::= QUOTE doublequoted QUOTE",
+ /* 189 */
+ "doublequoted ::= doublequoted doublequotedcontent",
+ /* 190 */
+ "doublequoted ::= doublequotedcontent",
+ /* 191 */
+ "doublequotedcontent ::= BACKTICK variable BACKTICK",
+ /* 192 */
+ "doublequotedcontent ::= BACKTICK expr BACKTICK",
+ /* 193 */
+ "doublequotedcontent ::= DOLLARID",
+ /* 194 */
+ "doublequotedcontent ::= LDEL variable RDEL",
+ /* 195 */
+ "doublequotedcontent ::= LDEL expr RDEL",
+ /* 196 */
+ "doublequotedcontent ::= smartytag RDEL",
+ /* 197 */
+ "doublequotedcontent ::= TEXT",
+ /* 198 */
+ "optspace ::= SPACE",
+ /* 199 */
+ "optspace ::=",
);
- function tokenName($tokenType)
+ public function tokenName($tokenType)
{
if ($tokenType === 0) {
return 'End of Input';
@@ -1489,41 +2625,43 @@ static public $yy_action = array(
}
}
- static function yy_destructor($yymajor, $yypminor)
+ public static function yy_destructor($yymajor, $yypminor)
{
switch ($yymajor) {
- default: break; /* If no destructor action specified: do nothing */
+ default:
+ break; /* If no destructor action specified: do nothing */
}
}
- function yy_pop_parser_stack()
+ public function yy_pop_parser_stack()
{
if (!count($this->yystack)) {
return;
}
$yytos = array_pop($this->yystack);
- if (self::$yyTraceFILE && $this->yyidx >= 0) {
- fwrite(self::$yyTraceFILE,
- self::$yyTracePrompt . 'Popping ' . $this->yyTokenName[$yytos->major] .
- "\n");
+ if ($this->yyTraceFILE && $this->yyidx >= 0) {
+ fwrite($this->yyTraceFILE,
+ $this->yyTracePrompt . 'Popping ' . $this->yyTokenName[$yytos->major] .
+ "\n");
}
$yymajor = $yytos->major;
self::yy_destructor($yymajor, $yytos->minor);
- $this->yyidx--;
+ $this->yyidx --;
+
return $yymajor;
}
- function __destruct()
+ public function __destruct()
{
while ($this->yystack !== Array()) {
$this->yy_pop_parser_stack();
}
- if (is_resource(self::$yyTraceFILE)) {
- fclose(self::$yyTraceFILE);
+ if (is_resource($this->yyTraceFILE)) {
+ fclose($this->yyTraceFILE);
}
}
- function yy_get_expected_tokens($token)
+ public function yy_get_expected_tokens($token)
{
$state = $this->yystack[$this->yyidx]->stateno;
$expected = self::$yyExpectedTokens[$state];
@@ -1538,7 +2676,7 @@ static public $yy_action = array(
// reduce action
$done = 0;
do {
- if ($done++ == 100) {
+ if ($done ++ == 100) {
$this->yyidx = $yyidx;
$this->yystack = $stack;
// too much recursion prevents proper detection
@@ -1551,17 +2689,18 @@ static public $yy_action = array(
$this->yystack[$this->yyidx]->stateno,
self::$yyRuleInfo[$yyruleno]['lhs']);
if (isset(self::$yyExpectedTokens[$nextstate])) {
- $expected = array_merge($expected, self::$yyExpectedTokens[$nextstate]);
- if (in_array($token,
- self::$yyExpectedTokens[$nextstate], true)) {
+ $expected = array_merge($expected, self::$yyExpectedTokens[$nextstate]);
+ if (in_array($token,
+ self::$yyExpectedTokens[$nextstate], true)) {
$this->yyidx = $yyidx;
$this->yystack = $stack;
+
return array_unique($expected);
}
}
if ($nextstate < self::YYNSTATE) {
// we need to shift a non-terminal
- $this->yyidx++;
+ $this->yyidx ++;
$x = new TP_yyStackEntry;
$x->stateno = $nextstate;
$x->major = self::$yyRuleInfo[$yyruleno]['lhs'];
@@ -1586,12 +2725,13 @@ static public $yy_action = array(
}
break;
} while (true);
- $this->yyidx = $yyidx;
- $this->yystack = $stack;
+ $this->yyidx = $yyidx;
+ $this->yystack = $stack;
+
return array_unique($expected);
}
- function yy_is_expected_token($token)
+ public function yy_is_expected_token($token)
{
if ($token === 0) {
return true; // 0 is not part of this
@@ -1608,7 +2748,7 @@ static public $yy_action = array(
// reduce action
$done = 0;
do {
- if ($done++ == 100) {
+ if ($done ++ == 100) {
$this->yyidx = $yyidx;
$this->yystack = $stack;
// too much recursion prevents proper detection
@@ -1621,14 +2761,16 @@ static public $yy_action = array(
$this->yystack[$this->yyidx]->stateno,
self::$yyRuleInfo[$yyruleno]['lhs']);
if (isset(self::$yyExpectedTokens[$nextstate]) &&
- in_array($token, self::$yyExpectedTokens[$nextstate], true)) {
+ in_array($token, self::$yyExpectedTokens[$nextstate], true)
+ ) {
$this->yyidx = $yyidx;
$this->yystack = $stack;
+
return true;
}
if ($nextstate < self::YYNSTATE) {
// we need to shift a non-terminal
- $this->yyidx++;
+ $this->yyidx ++;
$x = new TP_yyStackEntry;
$x->stateno = $nextstate;
$x->major = self::$yyRuleInfo[$yyruleno]['lhs'];
@@ -1659,10 +2801,11 @@ static public $yy_action = array(
} while (true);
$this->yyidx = $yyidx;
$this->yystack = $stack;
+
return true;
}
- function yy_find_shift_action($iLookAhead)
+ public function yy_find_shift_action($iLookAhead)
{
$stateno = $this->yystack[$this->yyidx]->stateno;
@@ -1680,23 +2823,27 @@ static public $yy_action = array(
}
$i += $iLookAhead;
if ($i < 0 || $i >= self::YY_SZ_ACTTAB ||
- self::$yy_lookahead[$i] != $iLookAhead) {
+ self::$yy_lookahead[$i] != $iLookAhead
+ ) {
if (count(self::$yyFallback) && $iLookAhead < count(self::$yyFallback)
- && ($iFallback = self::$yyFallback[$iLookAhead]) != 0) {
- if (self::$yyTraceFILE) {
- fwrite(self::$yyTraceFILE, self::$yyTracePrompt . "FALLBACK " .
+ && ($iFallback = self::$yyFallback[$iLookAhead]) != 0
+ ) {
+ if ($this->yyTraceFILE) {
+ fwrite($this->yyTraceFILE, $this->yyTracePrompt . "FALLBACK " .
$this->yyTokenName[$iLookAhead] . " => " .
$this->yyTokenName[$iFallback] . "\n");
}
+
return $this->yy_find_shift_action($iFallback);
}
+
return self::$yy_default[$stateno];
} else {
return self::$yy_action[$i];
}
}
- function yy_find_reduce_action($stateno, $iLookAhead)
+ public function yy_find_reduce_action($stateno, $iLookAhead)
{
/* $stateno = $this->yystack[$this->yyidx]->stateno; */
@@ -1712,29 +2859,31 @@ static public $yy_action = array(
}
$i += $iLookAhead;
if ($i < 0 || $i >= self::YY_SZ_ACTTAB ||
- self::$yy_lookahead[$i] != $iLookAhead) {
+ self::$yy_lookahead[$i] != $iLookAhead
+ ) {
return self::$yy_default[$stateno];
} else {
return self::$yy_action[$i];
}
}
- function yy_shift($yyNewState, $yyMajor, $yypMinor)
+ public function yy_shift($yyNewState, $yyMajor, $yypMinor)
{
- $this->yyidx++;
+ $this->yyidx ++;
if ($this->yyidx >= self::YYSTACKDEPTH) {
- $this->yyidx--;
- if (self::$yyTraceFILE) {
- fprintf(self::$yyTraceFILE, "%sStack Overflow!\n", self::$yyTracePrompt);
+ $this->yyidx --;
+ if ($this->yyTraceFILE) {
+ fprintf($this->yyTraceFILE, "%sStack Overflow!\n", $this->yyTracePrompt);
}
while ($this->yyidx >= 0) {
$this->yy_pop_parser_stack();
}
-#line 84 "smarty_internal_templateparser.y"
+ #line 82 "smarty_internal_templateparser.y"
+
+ $this->internalError = true;
+ $this->compiler->trigger_template_error("Stack overflow in template parser");
+ #line 1721 "smarty_internal_templateparser.php"
- $this->internalError = true;
- $this->compiler->trigger_template_error("Stack overflow in template parser");
-#line 1733 "smarty_internal_templateparser.php"
return;
}
$yytos = new TP_yyStackEntry;
@@ -1742,377 +2891,375 @@ static public $yy_action = array(
$yytos->major = $yyMajor;
$yytos->minor = $yypMinor;
array_push($this->yystack, $yytos);
- if (self::$yyTraceFILE && $this->yyidx > 0) {
- fprintf(self::$yyTraceFILE, "%sShift %d\n", self::$yyTracePrompt,
- $yyNewState);
- fprintf(self::$yyTraceFILE, "%sStack:", self::$yyTracePrompt);
- for($i = 1; $i <= $this->yyidx; $i++) {
- fprintf(self::$yyTraceFILE, " %s",
- $this->yyTokenName[$this->yystack[$i]->major]);
+ if ($this->yyTraceFILE && $this->yyidx > 0) {
+ fprintf($this->yyTraceFILE, "%sShift %d\n", $this->yyTracePrompt,
+ $yyNewState);
+ fprintf($this->yyTraceFILE, "%sStack:", $this->yyTracePrompt);
+ for ($i = 1; $i <= $this->yyidx; $i ++) {
+ fprintf($this->yyTraceFILE, " %s",
+ $this->yyTokenName[$this->yystack[$i]->major]);
}
- fwrite(self::$yyTraceFILE,"\n");
+ fwrite($this->yyTraceFILE, "\n");
}
}
- static public $yyRuleInfo = array(
- array( 'lhs' => 82, 'rhs' => 1 ),
- array( 'lhs' => 83, 'rhs' => 1 ),
- array( 'lhs' => 83, 'rhs' => 2 ),
- array( 'lhs' => 83, 'rhs' => 0 ),
- array( 'lhs' => 84, 'rhs' => 1 ),
- array( 'lhs' => 84, 'rhs' => 1 ),
- array( 'lhs' => 84, 'rhs' => 1 ),
- array( 'lhs' => 84, 'rhs' => 1 ),
- array( 'lhs' => 84, 'rhs' => 1 ),
- array( 'lhs' => 84, 'rhs' => 1 ),
- array( 'lhs' => 84, 'rhs' => 1 ),
- array( 'lhs' => 84, 'rhs' => 1 ),
- array( 'lhs' => 84, 'rhs' => 1 ),
- array( 'lhs' => 84, 'rhs' => 1 ),
- array( 'lhs' => 84, 'rhs' => 1 ),
- array( 'lhs' => 84, 'rhs' => 1 ),
- array( 'lhs' => 86, 'rhs' => 2 ),
- array( 'lhs' => 86, 'rhs' => 3 ),
- array( 'lhs' => 87, 'rhs' => 2 ),
- array( 'lhs' => 87, 'rhs' => 0 ),
- array( 'lhs' => 88, 'rhs' => 1 ),
- array( 'lhs' => 88, 'rhs' => 1 ),
- array( 'lhs' => 88, 'rhs' => 1 ),
- array( 'lhs' => 88, 'rhs' => 1 ),
- array( 'lhs' => 88, 'rhs' => 1 ),
- array( 'lhs' => 88, 'rhs' => 1 ),
- array( 'lhs' => 88, 'rhs' => 1 ),
- array( 'lhs' => 85, 'rhs' => 3 ),
- array( 'lhs' => 85, 'rhs' => 5 ),
- array( 'lhs' => 85, 'rhs' => 4 ),
- array( 'lhs' => 85, 'rhs' => 5 ),
- array( 'lhs' => 85, 'rhs' => 4 ),
- array( 'lhs' => 85, 'rhs' => 6 ),
- array( 'lhs' => 85, 'rhs' => 6 ),
- array( 'lhs' => 85, 'rhs' => 7 ),
- array( 'lhs' => 85, 'rhs' => 6 ),
- array( 'lhs' => 85, 'rhs' => 4 ),
- array( 'lhs' => 85, 'rhs' => 3 ),
- array( 'lhs' => 85, 'rhs' => 6 ),
- array( 'lhs' => 85, 'rhs' => 5 ),
- array( 'lhs' => 85, 'rhs' => 7 ),
- array( 'lhs' => 85, 'rhs' => 3 ),
- array( 'lhs' => 85, 'rhs' => 4 ),
- array( 'lhs' => 85, 'rhs' => 3 ),
- array( 'lhs' => 85, 'rhs' => 4 ),
- array( 'lhs' => 85, 'rhs' => 12 ),
- array( 'lhs' => 98, 'rhs' => 2 ),
- array( 'lhs' => 98, 'rhs' => 1 ),
- array( 'lhs' => 85, 'rhs' => 6 ),
- array( 'lhs' => 85, 'rhs' => 8 ),
- array( 'lhs' => 85, 'rhs' => 3 ),
- array( 'lhs' => 85, 'rhs' => 8 ),
- array( 'lhs' => 85, 'rhs' => 11 ),
- array( 'lhs' => 85, 'rhs' => 8 ),
- array( 'lhs' => 85, 'rhs' => 11 ),
- array( 'lhs' => 85, 'rhs' => 4 ),
- array( 'lhs' => 85, 'rhs' => 5 ),
- array( 'lhs' => 85, 'rhs' => 1 ),
- array( 'lhs' => 85, 'rhs' => 3 ),
- array( 'lhs' => 85, 'rhs' => 4 ),
- array( 'lhs' => 85, 'rhs' => 5 ),
- array( 'lhs' => 85, 'rhs' => 6 ),
- array( 'lhs' => 91, 'rhs' => 2 ),
- array( 'lhs' => 91, 'rhs' => 1 ),
- array( 'lhs' => 91, 'rhs' => 0 ),
- array( 'lhs' => 100, 'rhs' => 4 ),
- array( 'lhs' => 100, 'rhs' => 2 ),
- array( 'lhs' => 100, 'rhs' => 2 ),
- array( 'lhs' => 100, 'rhs' => 2 ),
- array( 'lhs' => 100, 'rhs' => 2 ),
- array( 'lhs' => 100, 'rhs' => 2 ),
- array( 'lhs' => 100, 'rhs' => 4 ),
- array( 'lhs' => 95, 'rhs' => 1 ),
- array( 'lhs' => 95, 'rhs' => 3 ),
- array( 'lhs' => 94, 'rhs' => 4 ),
- array( 'lhs' => 94, 'rhs' => 3 ),
- array( 'lhs' => 94, 'rhs' => 3 ),
- array( 'lhs' => 92, 'rhs' => 1 ),
- array( 'lhs' => 92, 'rhs' => 1 ),
- array( 'lhs' => 92, 'rhs' => 4 ),
- array( 'lhs' => 92, 'rhs' => 3 ),
- array( 'lhs' => 92, 'rhs' => 3 ),
- array( 'lhs' => 92, 'rhs' => 3 ),
- array( 'lhs' => 92, 'rhs' => 1 ),
- array( 'lhs' => 92, 'rhs' => 2 ),
- array( 'lhs' => 92, 'rhs' => 3 ),
- array( 'lhs' => 92, 'rhs' => 3 ),
- array( 'lhs' => 92, 'rhs' => 3 ),
- array( 'lhs' => 92, 'rhs' => 3 ),
- array( 'lhs' => 92, 'rhs' => 3 ),
- array( 'lhs' => 92, 'rhs' => 3 ),
- array( 'lhs' => 92, 'rhs' => 2 ),
- array( 'lhs' => 92, 'rhs' => 2 ),
- array( 'lhs' => 92, 'rhs' => 3 ),
- array( 'lhs' => 92, 'rhs' => 3 ),
- array( 'lhs' => 92, 'rhs' => 2 ),
- array( 'lhs' => 92, 'rhs' => 2 ),
- array( 'lhs' => 92, 'rhs' => 3 ),
- array( 'lhs' => 92, 'rhs' => 3 ),
- array( 'lhs' => 92, 'rhs' => 3 ),
- array( 'lhs' => 92, 'rhs' => 3 ),
- array( 'lhs' => 101, 'rhs' => 8 ),
- array( 'lhs' => 101, 'rhs' => 7 ),
- array( 'lhs' => 89, 'rhs' => 1 ),
- array( 'lhs' => 89, 'rhs' => 2 ),
- array( 'lhs' => 89, 'rhs' => 2 ),
- array( 'lhs' => 89, 'rhs' => 2 ),
- array( 'lhs' => 89, 'rhs' => 2 ),
- array( 'lhs' => 89, 'rhs' => 1 ),
- array( 'lhs' => 89, 'rhs' => 1 ),
- array( 'lhs' => 89, 'rhs' => 3 ),
- array( 'lhs' => 89, 'rhs' => 2 ),
- array( 'lhs' => 89, 'rhs' => 2 ),
- array( 'lhs' => 89, 'rhs' => 1 ),
- array( 'lhs' => 89, 'rhs' => 1 ),
- array( 'lhs' => 89, 'rhs' => 3 ),
- array( 'lhs' => 89, 'rhs' => 1 ),
- array( 'lhs' => 89, 'rhs' => 1 ),
- array( 'lhs' => 89, 'rhs' => 3 ),
- array( 'lhs' => 89, 'rhs' => 3 ),
- array( 'lhs' => 89, 'rhs' => 1 ),
- array( 'lhs' => 89, 'rhs' => 2 ),
- array( 'lhs' => 105, 'rhs' => 1 ),
- array( 'lhs' => 105, 'rhs' => 4 ),
- array( 'lhs' => 105, 'rhs' => 1 ),
- array( 'lhs' => 105, 'rhs' => 3 ),
- array( 'lhs' => 105, 'rhs' => 3 ),
- array( 'lhs' => 93, 'rhs' => 3 ),
- array( 'lhs' => 110, 'rhs' => 2 ),
- array( 'lhs' => 110, 'rhs' => 0 ),
- array( 'lhs' => 111, 'rhs' => 3 ),
- array( 'lhs' => 111, 'rhs' => 5 ),
- array( 'lhs' => 111, 'rhs' => 2 ),
- array( 'lhs' => 111, 'rhs' => 2 ),
- array( 'lhs' => 111, 'rhs' => 4 ),
- array( 'lhs' => 111, 'rhs' => 3 ),
- array( 'lhs' => 111, 'rhs' => 5 ),
- array( 'lhs' => 111, 'rhs' => 3 ),
- array( 'lhs' => 111, 'rhs' => 2 ),
- array( 'lhs' => 97, 'rhs' => 1 ),
- array( 'lhs' => 97, 'rhs' => 2 ),
- array( 'lhs' => 112, 'rhs' => 1 ),
- array( 'lhs' => 112, 'rhs' => 3 ),
- array( 'lhs' => 109, 'rhs' => 2 ),
- array( 'lhs' => 113, 'rhs' => 1 ),
- array( 'lhs' => 113, 'rhs' => 2 ),
- array( 'lhs' => 114, 'rhs' => 3 ),
- array( 'lhs' => 114, 'rhs' => 4 ),
- array( 'lhs' => 114, 'rhs' => 5 ),
- array( 'lhs' => 114, 'rhs' => 6 ),
- array( 'lhs' => 114, 'rhs' => 2 ),
- array( 'lhs' => 106, 'rhs' => 4 ),
- array( 'lhs' => 115, 'rhs' => 4 ),
- array( 'lhs' => 115, 'rhs' => 5 ),
- array( 'lhs' => 116, 'rhs' => 3 ),
- array( 'lhs' => 116, 'rhs' => 1 ),
- array( 'lhs' => 116, 'rhs' => 0 ),
- array( 'lhs' => 90, 'rhs' => 3 ),
- array( 'lhs' => 90, 'rhs' => 2 ),
- array( 'lhs' => 117, 'rhs' => 3 ),
- array( 'lhs' => 117, 'rhs' => 2 ),
- array( 'lhs' => 99, 'rhs' => 2 ),
- array( 'lhs' => 99, 'rhs' => 0 ),
- array( 'lhs' => 118, 'rhs' => 2 ),
- array( 'lhs' => 118, 'rhs' => 2 ),
- array( 'lhs' => 108, 'rhs' => 1 ),
- array( 'lhs' => 108, 'rhs' => 2 ),
- array( 'lhs' => 108, 'rhs' => 1 ),
- array( 'lhs' => 108, 'rhs' => 3 ),
- array( 'lhs' => 108, 'rhs' => 4 ),
- array( 'lhs' => 103, 'rhs' => 1 ),
- array( 'lhs' => 103, 'rhs' => 1 ),
- array( 'lhs' => 103, 'rhs' => 1 ),
- array( 'lhs' => 103, 'rhs' => 1 ),
- array( 'lhs' => 103, 'rhs' => 1 ),
- array( 'lhs' => 103, 'rhs' => 1 ),
- array( 'lhs' => 103, 'rhs' => 1 ),
- array( 'lhs' => 103, 'rhs' => 1 ),
- array( 'lhs' => 103, 'rhs' => 1 ),
- array( 'lhs' => 104, 'rhs' => 1 ),
- array( 'lhs' => 104, 'rhs' => 1 ),
- array( 'lhs' => 104, 'rhs' => 1 ),
- array( 'lhs' => 102, 'rhs' => 3 ),
- array( 'lhs' => 119, 'rhs' => 1 ),
- array( 'lhs' => 119, 'rhs' => 3 ),
- array( 'lhs' => 119, 'rhs' => 0 ),
- array( 'lhs' => 120, 'rhs' => 3 ),
- array( 'lhs' => 120, 'rhs' => 3 ),
- array( 'lhs' => 120, 'rhs' => 1 ),
- array( 'lhs' => 107, 'rhs' => 2 ),
- array( 'lhs' => 107, 'rhs' => 3 ),
- array( 'lhs' => 121, 'rhs' => 2 ),
- array( 'lhs' => 121, 'rhs' => 1 ),
- array( 'lhs' => 122, 'rhs' => 3 ),
- array( 'lhs' => 122, 'rhs' => 3 ),
- array( 'lhs' => 122, 'rhs' => 1 ),
- array( 'lhs' => 122, 'rhs' => 3 ),
- array( 'lhs' => 122, 'rhs' => 3 ),
- array( 'lhs' => 122, 'rhs' => 1 ),
- array( 'lhs' => 122, 'rhs' => 1 ),
- array( 'lhs' => 96, 'rhs' => 1 ),
- array( 'lhs' => 96, 'rhs' => 0 ),
+ public static $yyRuleInfo = array(
+ array('lhs' => 83, 'rhs' => 1),
+ array('lhs' => 84, 'rhs' => 1),
+ array('lhs' => 84, 'rhs' => 2),
+ array('lhs' => 84, 'rhs' => 0),
+ array('lhs' => 85, 'rhs' => 2),
+ array('lhs' => 85, 'rhs' => 1),
+ array('lhs' => 85, 'rhs' => 1),
+ array('lhs' => 85, 'rhs' => 1),
+ array('lhs' => 85, 'rhs' => 1),
+ array('lhs' => 85, 'rhs' => 1),
+ array('lhs' => 85, 'rhs' => 1),
+ array('lhs' => 85, 'rhs' => 1),
+ array('lhs' => 85, 'rhs' => 1),
+ array('lhs' => 85, 'rhs' => 1),
+ array('lhs' => 85, 'rhs' => 1),
+ array('lhs' => 85, 'rhs' => 1),
+ array('lhs' => 85, 'rhs' => 1),
+ array('lhs' => 87, 'rhs' => 2),
+ array('lhs' => 87, 'rhs' => 3),
+ array('lhs' => 88, 'rhs' => 2),
+ array('lhs' => 88, 'rhs' => 0),
+ array('lhs' => 89, 'rhs' => 1),
+ array('lhs' => 89, 'rhs' => 1),
+ array('lhs' => 86, 'rhs' => 2),
+ array('lhs' => 86, 'rhs' => 4),
+ array('lhs' => 86, 'rhs' => 3),
+ array('lhs' => 86, 'rhs' => 4),
+ array('lhs' => 86, 'rhs' => 3),
+ array('lhs' => 86, 'rhs' => 5),
+ array('lhs' => 86, 'rhs' => 5),
+ array('lhs' => 86, 'rhs' => 6),
+ array('lhs' => 86, 'rhs' => 5),
+ array('lhs' => 86, 'rhs' => 3),
+ array('lhs' => 86, 'rhs' => 2),
+ array('lhs' => 86, 'rhs' => 5),
+ array('lhs' => 86, 'rhs' => 4),
+ array('lhs' => 86, 'rhs' => 6),
+ array('lhs' => 86, 'rhs' => 2),
+ array('lhs' => 86, 'rhs' => 3),
+ array('lhs' => 86, 'rhs' => 2),
+ array('lhs' => 86, 'rhs' => 3),
+ array('lhs' => 86, 'rhs' => 11),
+ array('lhs' => 99, 'rhs' => 2),
+ array('lhs' => 99, 'rhs' => 1),
+ array('lhs' => 86, 'rhs' => 5),
+ array('lhs' => 86, 'rhs' => 7),
+ array('lhs' => 86, 'rhs' => 2),
+ array('lhs' => 86, 'rhs' => 7),
+ array('lhs' => 86, 'rhs' => 10),
+ array('lhs' => 86, 'rhs' => 7),
+ array('lhs' => 86, 'rhs' => 10),
+ array('lhs' => 86, 'rhs' => 3),
+ array('lhs' => 86, 'rhs' => 4),
+ array('lhs' => 86, 'rhs' => 2),
+ array('lhs' => 86, 'rhs' => 2),
+ array('lhs' => 86, 'rhs' => 3),
+ array('lhs' => 86, 'rhs' => 4),
+ array('lhs' => 86, 'rhs' => 5),
+ array('lhs' => 92, 'rhs' => 2),
+ array('lhs' => 92, 'rhs' => 1),
+ array('lhs' => 92, 'rhs' => 0),
+ array('lhs' => 101, 'rhs' => 4),
+ array('lhs' => 101, 'rhs' => 2),
+ array('lhs' => 101, 'rhs' => 2),
+ array('lhs' => 101, 'rhs' => 2),
+ array('lhs' => 101, 'rhs' => 2),
+ array('lhs' => 101, 'rhs' => 2),
+ array('lhs' => 101, 'rhs' => 4),
+ array('lhs' => 96, 'rhs' => 1),
+ array('lhs' => 96, 'rhs' => 3),
+ array('lhs' => 95, 'rhs' => 4),
+ array('lhs' => 95, 'rhs' => 3),
+ array('lhs' => 95, 'rhs' => 3),
+ array('lhs' => 93, 'rhs' => 1),
+ array('lhs' => 93, 'rhs' => 1),
+ array('lhs' => 93, 'rhs' => 4),
+ array('lhs' => 93, 'rhs' => 3),
+ array('lhs' => 93, 'rhs' => 3),
+ array('lhs' => 93, 'rhs' => 3),
+ array('lhs' => 93, 'rhs' => 1),
+ array('lhs' => 93, 'rhs' => 2),
+ array('lhs' => 93, 'rhs' => 3),
+ array('lhs' => 93, 'rhs' => 3),
+ array('lhs' => 93, 'rhs' => 3),
+ array('lhs' => 93, 'rhs' => 3),
+ array('lhs' => 93, 'rhs' => 3),
+ array('lhs' => 93, 'rhs' => 3),
+ array('lhs' => 93, 'rhs' => 2),
+ array('lhs' => 93, 'rhs' => 2),
+ array('lhs' => 93, 'rhs' => 3),
+ array('lhs' => 93, 'rhs' => 3),
+ array('lhs' => 93, 'rhs' => 2),
+ array('lhs' => 93, 'rhs' => 2),
+ array('lhs' => 93, 'rhs' => 3),
+ array('lhs' => 93, 'rhs' => 3),
+ array('lhs' => 93, 'rhs' => 3),
+ array('lhs' => 93, 'rhs' => 3),
+ array('lhs' => 102, 'rhs' => 8),
+ array('lhs' => 102, 'rhs' => 7),
+ array('lhs' => 90, 'rhs' => 1),
+ array('lhs' => 90, 'rhs' => 2),
+ array('lhs' => 90, 'rhs' => 2),
+ array('lhs' => 90, 'rhs' => 2),
+ array('lhs' => 90, 'rhs' => 2),
+ array('lhs' => 90, 'rhs' => 1),
+ array('lhs' => 90, 'rhs' => 1),
+ array('lhs' => 90, 'rhs' => 3),
+ array('lhs' => 90, 'rhs' => 2),
+ array('lhs' => 90, 'rhs' => 2),
+ array('lhs' => 90, 'rhs' => 1),
+ array('lhs' => 90, 'rhs' => 1),
+ array('lhs' => 90, 'rhs' => 3),
+ array('lhs' => 90, 'rhs' => 1),
+ array('lhs' => 90, 'rhs' => 1),
+ array('lhs' => 90, 'rhs' => 3),
+ array('lhs' => 90, 'rhs' => 3),
+ array('lhs' => 90, 'rhs' => 2),
+ array('lhs' => 90, 'rhs' => 2),
+ array('lhs' => 106, 'rhs' => 1),
+ array('lhs' => 106, 'rhs' => 4),
+ array('lhs' => 106, 'rhs' => 1),
+ array('lhs' => 106, 'rhs' => 3),
+ array('lhs' => 106, 'rhs' => 4),
+ array('lhs' => 106, 'rhs' => 3),
+ array('lhs' => 106, 'rhs' => 4),
+ array('lhs' => 94, 'rhs' => 3),
+ array('lhs' => 111, 'rhs' => 2),
+ array('lhs' => 111, 'rhs' => 0),
+ array('lhs' => 112, 'rhs' => 3),
+ array('lhs' => 112, 'rhs' => 5),
+ array('lhs' => 112, 'rhs' => 2),
+ array('lhs' => 112, 'rhs' => 2),
+ array('lhs' => 112, 'rhs' => 4),
+ array('lhs' => 112, 'rhs' => 3),
+ array('lhs' => 112, 'rhs' => 5),
+ array('lhs' => 112, 'rhs' => 3),
+ array('lhs' => 112, 'rhs' => 2),
+ array('lhs' => 98, 'rhs' => 1),
+ array('lhs' => 98, 'rhs' => 2),
+ array('lhs' => 113, 'rhs' => 1),
+ array('lhs' => 113, 'rhs' => 3),
+ array('lhs' => 110, 'rhs' => 2),
+ array('lhs' => 114, 'rhs' => 1),
+ array('lhs' => 114, 'rhs' => 2),
+ array('lhs' => 115, 'rhs' => 3),
+ array('lhs' => 115, 'rhs' => 4),
+ array('lhs' => 115, 'rhs' => 5),
+ array('lhs' => 115, 'rhs' => 6),
+ array('lhs' => 115, 'rhs' => 2),
+ array('lhs' => 107, 'rhs' => 4),
+ array('lhs' => 116, 'rhs' => 4),
+ array('lhs' => 116, 'rhs' => 5),
+ array('lhs' => 117, 'rhs' => 3),
+ array('lhs' => 117, 'rhs' => 1),
+ array('lhs' => 117, 'rhs' => 0),
+ array('lhs' => 91, 'rhs' => 3),
+ array('lhs' => 91, 'rhs' => 2),
+ array('lhs' => 118, 'rhs' => 3),
+ array('lhs' => 118, 'rhs' => 2),
+ array('lhs' => 100, 'rhs' => 2),
+ array('lhs' => 100, 'rhs' => 0),
+ array('lhs' => 119, 'rhs' => 2),
+ array('lhs' => 119, 'rhs' => 2),
+ array('lhs' => 109, 'rhs' => 1),
+ array('lhs' => 109, 'rhs' => 2),
+ array('lhs' => 109, 'rhs' => 1),
+ array('lhs' => 109, 'rhs' => 3),
+ array('lhs' => 109, 'rhs' => 4),
+ array('lhs' => 104, 'rhs' => 1),
+ array('lhs' => 104, 'rhs' => 1),
+ array('lhs' => 104, 'rhs' => 1),
+ array('lhs' => 104, 'rhs' => 1),
+ array('lhs' => 104, 'rhs' => 1),
+ array('lhs' => 104, 'rhs' => 1),
+ array('lhs' => 104, 'rhs' => 1),
+ array('lhs' => 104, 'rhs' => 1),
+ array('lhs' => 104, 'rhs' => 1),
+ array('lhs' => 105, 'rhs' => 1),
+ array('lhs' => 105, 'rhs' => 1),
+ array('lhs' => 105, 'rhs' => 1),
+ array('lhs' => 103, 'rhs' => 3),
+ array('lhs' => 120, 'rhs' => 1),
+ array('lhs' => 120, 'rhs' => 3),
+ array('lhs' => 120, 'rhs' => 0),
+ array('lhs' => 121, 'rhs' => 3),
+ array('lhs' => 121, 'rhs' => 3),
+ array('lhs' => 121, 'rhs' => 1),
+ array('lhs' => 108, 'rhs' => 2),
+ array('lhs' => 108, 'rhs' => 3),
+ array('lhs' => 122, 'rhs' => 2),
+ array('lhs' => 122, 'rhs' => 1),
+ array('lhs' => 123, 'rhs' => 3),
+ array('lhs' => 123, 'rhs' => 3),
+ array('lhs' => 123, 'rhs' => 1),
+ array('lhs' => 123, 'rhs' => 3),
+ array('lhs' => 123, 'rhs' => 3),
+ array('lhs' => 123, 'rhs' => 2),
+ array('lhs' => 123, 'rhs' => 1),
+ array('lhs' => 97, 'rhs' => 1),
+ array('lhs' => 97, 'rhs' => 0),
);
- static public $yyReduceMap = array(
- 0 => 0,
- 1 => 1,
- 2 => 1,
- 4 => 4,
- 5 => 5,
- 6 => 6,
- 7 => 7,
- 8 => 8,
- 9 => 9,
- 10 => 10,
- 11 => 11,
- 12 => 12,
- 13 => 13,
- 14 => 14,
- 15 => 15,
- 16 => 16,
- 19 => 16,
- 201 => 16,
- 17 => 17,
- 76 => 17,
- 18 => 18,
- 104 => 18,
- 106 => 18,
- 107 => 18,
- 128 => 18,
- 166 => 18,
- 20 => 20,
- 21 => 20,
- 47 => 20,
- 69 => 20,
- 70 => 20,
- 77 => 20,
- 78 => 20,
- 83 => 20,
- 103 => 20,
- 108 => 20,
- 109 => 20,
- 114 => 20,
- 116 => 20,
- 117 => 20,
- 124 => 20,
- 139 => 20,
- 165 => 20,
- 167 => 20,
- 183 => 20,
- 188 => 20,
- 200 => 20,
- 22 => 22,
- 23 => 22,
- 24 => 24,
- 25 => 25,
- 26 => 26,
- 27 => 27,
- 28 => 28,
- 29 => 29,
- 31 => 29,
- 30 => 30,
- 32 => 32,
- 33 => 32,
- 34 => 34,
- 35 => 35,
- 36 => 36,
- 37 => 37,
- 38 => 38,
- 39 => 39,
- 40 => 40,
- 41 => 41,
- 42 => 42,
- 44 => 42,
- 43 => 43,
- 45 => 45,
- 46 => 46,
- 48 => 48,
- 49 => 49,
- 50 => 50,
- 51 => 51,
- 52 => 52,
- 53 => 53,
- 54 => 54,
- 55 => 55,
- 56 => 56,
- 57 => 57,
- 58 => 58,
- 59 => 59,
- 60 => 60,
- 61 => 61,
- 62 => 62,
- 63 => 63,
- 72 => 63,
- 155 => 63,
- 159 => 63,
- 163 => 63,
- 164 => 63,
- 64 => 64,
- 156 => 64,
- 162 => 64,
- 65 => 65,
- 66 => 66,
- 67 => 66,
- 68 => 68,
- 71 => 71,
- 73 => 73,
- 74 => 74,
- 75 => 74,
- 79 => 79,
- 80 => 80,
- 81 => 80,
- 82 => 80,
- 84 => 84,
- 121 => 84,
- 85 => 85,
- 88 => 85,
- 99 => 85,
- 86 => 86,
- 87 => 87,
- 89 => 89,
- 90 => 90,
- 91 => 91,
- 96 => 91,
- 92 => 92,
- 95 => 92,
- 93 => 93,
- 98 => 93,
- 94 => 94,
- 97 => 94,
- 100 => 100,
+ public static $yyReduceMap = array(
+ 0 => 0,
+ 1 => 1,
+ 2 => 2,
+ 4 => 4,
+ 5 => 5,
+ 6 => 6,
+ 7 => 7,
+ 8 => 8,
+ 9 => 9,
+ 10 => 10,
+ 11 => 11,
+ 12 => 12,
+ 13 => 13,
+ 14 => 14,
+ 15 => 15,
+ 16 => 16,
+ 17 => 17,
+ 20 => 17,
+ 199 => 17,
+ 18 => 18,
+ 72 => 18,
+ 19 => 19,
+ 100 => 19,
+ 102 => 19,
+ 103 => 19,
+ 126 => 19,
+ 164 => 19,
+ 21 => 21,
+ 22 => 21,
+ 43 => 21,
+ 65 => 21,
+ 66 => 21,
+ 73 => 21,
+ 74 => 21,
+ 79 => 21,
+ 99 => 21,
+ 104 => 21,
+ 105 => 21,
+ 110 => 21,
+ 112 => 21,
+ 113 => 21,
+ 120 => 21,
+ 137 => 21,
+ 163 => 21,
+ 165 => 21,
+ 181 => 21,
+ 186 => 21,
+ 198 => 21,
+ 23 => 23,
+ 24 => 24,
+ 25 => 25,
+ 27 => 25,
+ 26 => 26,
+ 28 => 28,
+ 29 => 28,
+ 30 => 30,
+ 31 => 31,
+ 32 => 32,
+ 33 => 33,
+ 34 => 34,
+ 35 => 35,
+ 36 => 36,
+ 37 => 37,
+ 38 => 38,
+ 40 => 38,
+ 39 => 39,
+ 41 => 41,
+ 42 => 42,
+ 44 => 44,
+ 45 => 45,
+ 46 => 46,
+ 47 => 47,
+ 49 => 47,
+ 48 => 48,
+ 50 => 48,
+ 51 => 51,
+ 52 => 52,
+ 53 => 53,
+ 54 => 54,
+ 55 => 55,
+ 56 => 56,
+ 57 => 57,
+ 58 => 58,
+ 59 => 59,
+ 68 => 59,
+ 153 => 59,
+ 157 => 59,
+ 161 => 59,
+ 162 => 59,
+ 60 => 60,
+ 154 => 60,
+ 160 => 60,
+ 61 => 61,
+ 62 => 62,
+ 63 => 62,
+ 64 => 64,
+ 67 => 67,
+ 69 => 69,
+ 70 => 70,
+ 71 => 70,
+ 75 => 75,
+ 76 => 76,
+ 77 => 76,
+ 78 => 76,
+ 80 => 80,
+ 117 => 80,
+ 81 => 81,
+ 84 => 81,
+ 95 => 81,
+ 82 => 82,
+ 83 => 83,
+ 85 => 85,
+ 86 => 86,
+ 87 => 87,
+ 92 => 87,
+ 88 => 88,
+ 91 => 88,
+ 89 => 89,
+ 94 => 89,
+ 90 => 90,
+ 93 => 90,
+ 96 => 96,
+ 97 => 97,
+ 98 => 98,
101 => 101,
- 102 => 102,
- 105 => 105,
- 110 => 110,
+ 106 => 106,
+ 107 => 107,
+ 108 => 108,
+ 109 => 109,
111 => 111,
- 112 => 112,
- 113 => 113,
+ 114 => 114,
115 => 115,
+ 116 => 116,
118 => 118,
119 => 119,
- 120 => 120,
+ 121 => 121,
122 => 122,
123 => 123,
+ 124 => 124,
125 => 125,
- 126 => 126,
127 => 127,
+ 183 => 127,
+ 128 => 128,
129 => 129,
- 185 => 129,
130 => 130,
131 => 131,
132 => 132,
+ 135 => 132,
133 => 133,
134 => 134,
- 137 => 134,
- 135 => 135,
136 => 136,
138 => 138,
+ 139 => 139,
140 => 140,
141 => 141,
142 => 142,
@@ -2126,12 +3273,12 @@ static public $yy_action = array(
150 => 150,
151 => 151,
152 => 152,
- 153 => 153,
- 154 => 154,
- 157 => 157,
+ 155 => 155,
+ 156 => 156,
158 => 158,
- 160 => 160,
- 161 => 161,
+ 159 => 159,
+ 166 => 166,
+ 167 => 167,
168 => 168,
169 => 169,
170 => 170,
@@ -2145,948 +3292,1118 @@ static public $yy_action = array(
178 => 178,
179 => 179,
180 => 180,
- 181 => 181,
182 => 182,
184 => 184,
- 186 => 186,
+ 185 => 185,
187 => 187,
+ 188 => 188,
189 => 189,
190 => 190,
191 => 191,
- 192 => 192,
+ 192 => 191,
+ 194 => 191,
193 => 193,
- 194 => 193,
- 196 => 193,
195 => 195,
+ 196 => 196,
197 => 197,
- 198 => 198,
- 199 => 199,
);
-#line 95 "smarty_internal_templateparser.y"
- function yy_r0(){
- $this->_retvalue = $this->root_buffer->to_smarty_php();
- }
-#line 2165 "smarty_internal_templateparser.php"
-#line 103 "smarty_internal_templateparser.y"
- function yy_r1(){
- $this->current_buffer->append_subtree($this->yystack[$this->yyidx + 0]->minor);
- }
-#line 2170 "smarty_internal_templateparser.php"
-#line 119 "smarty_internal_templateparser.y"
- function yy_r4(){
- if ($this->compiler->has_code) {
- $tmp =''; foreach ($this->compiler->prefix_code as $code) {$tmp.=$code;} $this->compiler->prefix_code=array();
- $this->_retvalue = new _smarty_tag($this, $this->compiler->processNocacheCode($tmp.$this->yystack[$this->yyidx + 0]->minor,true));
- } else {
- $this->_retvalue = new _smarty_tag($this, $this->yystack[$this->yyidx + 0]->minor);
- }
- $this->compiler->has_variable_string = false;
- $this->block_nesting_level = count($this->compiler->_tag_stack);
- }
-#line 2182 "smarty_internal_templateparser.php"
-#line 131 "smarty_internal_templateparser.y"
- function yy_r5(){
- $this->_retvalue = new _smarty_tag($this, '');
- }
-#line 2187 "smarty_internal_templateparser.php"
-#line 136 "smarty_internal_templateparser.y"
- function yy_r6(){
- $this->_retvalue = new _smarty_text($this, $this->yystack[$this->yyidx + 0]->minor);
- }
-#line 2192 "smarty_internal_templateparser.php"
-#line 141 "smarty_internal_templateparser.y"
- function yy_r7(){
- if ($this->php_handling == Smarty::PHP_PASSTHRU) {
- $this->_retvalue = new _smarty_text($this, self::escape_start_tag($this->yystack[$this->yyidx + 0]->minor));
- } elseif ($this->php_handling == Smarty::PHP_QUOTE) {
- $this->_retvalue = new _smarty_text($this, htmlspecialchars($this->yystack[$this->yyidx + 0]->minor, ENT_QUOTES));
- } elseif ($this->php_handling == Smarty::PHP_ALLOW) {
- if (!($this->smarty instanceof SmartyBC)) {
- $this->compiler->trigger_template_error (self::Err3);
+
+ #line 93 "smarty_internal_templateparser.y"
+ function yy_r0()
+ {
+ $this->_retvalue = $this->root_buffer->to_smarty_php();
+ }
+ #line 2150 "smarty_internal_templateparser.php"
+ #line 101 "smarty_internal_templateparser.y"
+ function yy_r1()
+ {
+ if ($this->yystack[$this->yyidx + 0]->minor != null) {
+ $this->current_buffer->append_subtree($this->yystack[$this->yyidx + 0]->minor);
}
- $this->_retvalue = new _smarty_text($this, $this->compiler->processNocacheCode('<?php', true));
- } elseif ($this->php_handling == Smarty::PHP_REMOVE) {
- $this->_retvalue = new _smarty_text($this, '');
}
+ #line 2157 "smarty_internal_templateparser.php"
+ #line 108 "smarty_internal_templateparser.y"
+ function yy_r2()
+ {
+ if ($this->yystack[$this->yyidx + 0]->minor != null) {
+ // because of possible code injection
+ $this->current_buffer->append_subtree($this->yystack[$this->yyidx + 0]->minor);
+ }
}
-#line 2208 "smarty_internal_templateparser.php"
-#line 157 "smarty_internal_templateparser.y"
- function yy_r8(){
- if ($this->is_xml) {
+ #line 2165 "smarty_internal_templateparser.php"
+ #line 122 "smarty_internal_templateparser.y"
+ function yy_r4()
+ {
+ if ($this->compiler->has_code) {
+ $tmp = '';
+ foreach ($this->compiler->prefix_code as $code) {
+ $tmp .= $code;
+ }
+ $this->compiler->prefix_code = array();
+ $this->_retvalue = new _smarty_tag($this, $this->compiler->processNocacheCode($tmp . $this->yystack[$this->yyidx + - 1]->minor, true));
+ } else {
+ $this->_retvalue = null;
+ }
+ $this->compiler->has_variable_string = false;
+ $this->block_nesting_level = count($this->compiler->_tag_stack);
+ }
+ #line 2177 "smarty_internal_templateparser.php"
+ #line 134 "smarty_internal_templateparser.y"
+ function yy_r5()
+ {
+ $this->_retvalue = null;
+ }
+ #line 2182 "smarty_internal_templateparser.php"
+ #line 139 "smarty_internal_templateparser.y"
+ function yy_r6()
+ {
+ $this->_retvalue = new _smarty_text($this, $this->yystack[$this->yyidx + 0]->minor);
+ }
+ #line 2187 "smarty_internal_templateparser.php"
+ #line 144 "smarty_internal_templateparser.y"
+ function yy_r7()
+ {
+ if (strpos($this->yystack[$this->yyidx + 0]->minor, '<s') === 0) {
+ $this->lex->is_phpScript = true;
+ }
+ if ($this->php_handling == Smarty::PHP_PASSTHRU) {
+ if ($this->lex->is_phpScript) {
+ $s = addcslashes($this->yystack[$this->yyidx + 0]->minor, "'");
+ $this->_retvalue = new _smarty_text($this, $s);
+ } else {
+ $this->_retvalue = new _smarty_text($this, $this->yystack[$this->yyidx + 0]->minor);
+ }
+ } elseif ($this->php_handling == Smarty::PHP_QUOTE) {
+ $this->_retvalue = new _smarty_text($this, htmlspecialchars($this->yystack[$this->yyidx + 0]->minor, ENT_QUOTES));
+ } elseif ($this->php_handling == Smarty::PHP_ALLOW) {
+ if (!($this->smarty instanceof SmartyBC)) {
+ $this->compiler->trigger_template_error(self::Err3);
+ }
+ $this->_retvalue = new _smarty_tag($this, $this->compiler->processNocacheCode('<?php ', true));
+ } elseif ($this->php_handling == Smarty::PHP_REMOVE) {
+ $this->_retvalue = null;
+ }
+ }
+ #line 2211 "smarty_internal_templateparser.php"
+ #line 168 "smarty_internal_templateparser.y"
+ function yy_r8()
+ {
+ if ($this->is_xml) {
+ $this->compiler->tag_nocache = true;
+ $this->is_xml = false;
+ $save = $this->template->has_nocache_code;
+ $this->_retvalue = new _smarty_tag($this, $this->compiler->processNocacheCode("<?php echo '?>';?>\n", $this->compiler, true));
+ $this->template->has_nocache_code = $save;
+ } elseif ($this->php_handling == Smarty::PHP_PASSTHRU) {
+ $this->_retvalue = new _smarty_text($this, $this->yystack[$this->yyidx + 0]->minor);
+ } elseif ($this->php_handling == Smarty::PHP_QUOTE) {
+ $this->_retvalue = new _smarty_text($this, htmlspecialchars('?>', ENT_QUOTES));
+ } elseif ($this->php_handling == Smarty::PHP_ALLOW) {
+ $this->_retvalue = new _smarty_tag($this, $this->compiler->processNocacheCode('?>', true));
+ } elseif ($this->php_handling == Smarty::PHP_REMOVE) {
+ $this->_retvalue = null;
+ }
+ }
+ #line 2230 "smarty_internal_templateparser.php"
+ #line 186 "smarty_internal_templateparser.y"
+ function yy_r9()
+ {
+ if (!$this->lex->is_phpScript) {
+ $this->_retvalue = new _smarty_text($this, $this->yystack[$this->yyidx + 0]->minor);
+ } else {
+ $this->lex->is_phpScript = false;
+ if ($this->php_handling == Smarty::PHP_PASSTHRU) {
+ $this->_retvalue = new _smarty_text($this, $this->yystack[$this->yyidx + 0]->minor);
+ } elseif ($this->php_handling == Smarty::PHP_QUOTE) {
+ $this->_retvalue = new _smarty_text($this, htmlspecialchars($this->yystack[$this->yyidx + 0]->minor, ENT_QUOTES));
+ } elseif ($this->php_handling == Smarty::PHP_ALLOW) {
+ $this->_retvalue = new _smarty_tag($this, $this->compiler->processNocacheCode('?>', true));
+ } elseif ($this->php_handling == Smarty::PHP_REMOVE) {
+ $this->_retvalue = null;
+ }
+ }
+ }
+ #line 2248 "smarty_internal_templateparser.php"
+ #line 204 "smarty_internal_templateparser.y"
+ function yy_r10()
+ {
+ if ($this->php_handling == Smarty::PHP_PASSTHRU) {
+ $this->_retvalue = new _smarty_text($this, $this->yystack[$this->yyidx + 0]->minor);
+ } elseif ($this->php_handling == Smarty::PHP_QUOTE) {
+ $this->_retvalue = new _smarty_text($this, htmlspecialchars($this->yystack[$this->yyidx + 0]->minor, ENT_QUOTES));
+ } elseif ($this->php_handling == Smarty::PHP_ALLOW) {
+ if ($this->asp_tags) {
+ if (!($this->smarty instanceof SmartyBC)) {
+ $this->compiler->trigger_template_error(self::Err3);
+ }
+ $this->_retvalue = new _smarty_tag($this, $this->compiler->processNocacheCode('<%', true));
+ } else {
+ $this->_retvalue = new _smarty_text($this, $this->yystack[$this->yyidx + 0]->minor);
+ }
+ } elseif ($this->php_handling == Smarty::PHP_REMOVE) {
+ if ($this->asp_tags) {
+ $this->_retvalue = null;
+ } else {
+ $this->_retvalue = new _smarty_text($this, $this->yystack[$this->yyidx + 0]->minor);
+ }
+ }
+ }
+ #line 2272 "smarty_internal_templateparser.php"
+ #line 228 "smarty_internal_templateparser.y"
+ function yy_r11()
+ {
+ if ($this->php_handling == Smarty::PHP_PASSTHRU) {
+ $this->_retvalue = new _smarty_text($this, st);
+ } elseif ($this->php_handling == Smarty::PHP_QUOTE) {
+ $this->_retvalue = new _smarty_text($this, htmlspecialchars('%>', ENT_QUOTES));
+ } elseif ($this->php_handling == Smarty::PHP_ALLOW) {
+ if ($this->asp_tags) {
+ $this->_retvalue = new _smarty_tag($this, $this->compiler->processNocacheCode('%>', true));
+ } else {
+ $this->_retvalue = new _smarty_text($this, st);
+ }
+ } elseif ($this->php_handling == Smarty::PHP_REMOVE) {
+ if ($this->asp_tags) {
+ $this->_retvalue = null;
+ } else {
+ $this->_retvalue = new _smarty_text($this, st);
+ }
+ }
+ }
+ #line 2293 "smarty_internal_templateparser.php"
+ #line 250 "smarty_internal_templateparser.y"
+ function yy_r12()
+ {
$this->compiler->tag_nocache = true;
- $this->is_xml = false;
+ $this->is_xml = true;
$save = $this->template->has_nocache_code;
- $this->_retvalue = new _smarty_text($this, $this->compiler->processNocacheCode("<?php echo '?>';?>\n", $this->compiler, true));
+ $this->_retvalue = new _smarty_tag($this, $this->compiler->processNocacheCode("<?php echo '<?xml';?>", $this->compiler, true));
$this->template->has_nocache_code = $save;
- } elseif ($this->php_handling == Smarty::PHP_PASSTHRU) {
- $this->_retvalue = new _smarty_text($this, '?<?php ?>>');
- } elseif ($this->php_handling == Smarty::PHP_QUOTE) {
- $this->_retvalue = new _smarty_text($this, htmlspecialchars('?>', ENT_QUOTES));
- } elseif ($this->php_handling == Smarty::PHP_ALLOW) {
- $this->_retvalue = new _smarty_text($this, $this->compiler->processNocacheCode('?>', true));
- } elseif ($this->php_handling == Smarty::PHP_REMOVE) {
- $this->_retvalue = new _smarty_text($this, '');
- }
- }
-#line 2227 "smarty_internal_templateparser.php"
-#line 176 "smarty_internal_templateparser.y"
- function yy_r9(){
- if ($this->php_handling == Smarty::PHP_PASSTHRU) {
- $this->_retvalue = new _smarty_text($this, '<<?php ?>%');
- } elseif ($this->php_handling == Smarty::PHP_QUOTE) {
- $this->_retvalue = new _smarty_text($this, htmlspecialchars($this->yystack[$this->yyidx + 0]->minor, ENT_QUOTES));
- } elseif ($this->php_handling == Smarty::PHP_ALLOW) {
- if ($this->asp_tags) {
- if (!($this->smarty instanceof SmartyBC)) {
- $this->compiler->trigger_template_error (self::Err3);
- }
- $this->_retvalue = new _smarty_text($this, $this->compiler->processNocacheCode('<%', true));
+ }
+ #line 2302 "smarty_internal_templateparser.php"
+ #line 259 "smarty_internal_templateparser.y"
+ function yy_r13()
+ {
+ if ($this->strip) {
+ $this->_retvalue = new _smarty_text($this, preg_replace('![\t ]*[\r\n]+[\t ]*!', '', $this->yystack[$this->yyidx + 0]->minor));
} else {
- $this->_retvalue = new _smarty_text($this, '<<?php ?>%');
+ $this->_retvalue = new _smarty_text($this, $this->yystack[$this->yyidx + 0]->minor);
}
- } elseif ($this->php_handling == Smarty::PHP_REMOVE) {
- if ($this->asp_tags) {
- $this->_retvalue = new _smarty_text($this, '');
+ }
+ #line 2311 "smarty_internal_templateparser.php"
+ #line 268 "smarty_internal_templateparser.y"
+ function yy_r14()
+ {
+ $this->strip = true;
+ }
+ #line 2316 "smarty_internal_templateparser.php"
+ #line 272 "smarty_internal_templateparser.y"
+ function yy_r15()
+ {
+ $this->strip = false;
+ }
+ #line 2321 "smarty_internal_templateparser.php"
+ #line 276 "smarty_internal_templateparser.y"
+ function yy_r16()
+ {
+ if ($this->strip) {
+ SMARTY_INTERNAL_COMPILE_BLOCK::blockSource($this->compiler, preg_replace('![\t ]*[\r\n]+[\t ]*!', '', $this->yystack[$this->yyidx + 0]->minor));
} else {
- $this->_retvalue = new _smarty_text($this, '<<?php ?>%');
+ SMARTY_INTERNAL_COMPILE_BLOCK::blockSource($this->compiler, $this->yystack[$this->yyidx + 0]->minor);
}
}
+ #line 2330 "smarty_internal_templateparser.php"
+ #line 285 "smarty_internal_templateparser.y"
+ function yy_r17()
+ {
+ $this->_retvalue = '';
}
-#line 2251 "smarty_internal_templateparser.php"
-#line 200 "smarty_internal_templateparser.y"
- function yy_r10(){
- if ($this->php_handling == Smarty::PHP_PASSTHRU) {
- $this->_retvalue = new _smarty_text($this, '%<?php ?>>');
- } elseif ($this->php_handling == Smarty::PHP_QUOTE) {
- $this->_retvalue = new _smarty_text($this, htmlspecialchars('%>', ENT_QUOTES));
- } elseif ($this->php_handling == Smarty::PHP_ALLOW) {
- if ($this->asp_tags) {
- $this->_retvalue = new _smarty_text($this, $this->compiler->processNocacheCode('%>', true));
+ #line 2335 "smarty_internal_templateparser.php"
+ #line 289 "smarty_internal_templateparser.y"
+ function yy_r18()
+ {
+ $this->_retvalue = $this->yystack[$this->yyidx + - 1]->minor;
+ }
+ #line 2340 "smarty_internal_templateparser.php"
+ #line 293 "smarty_internal_templateparser.y"
+ function yy_r19()
+ {
+ $this->_retvalue = $this->yystack[$this->yyidx + - 1]->minor . $this->yystack[$this->yyidx + 0]->minor;
+ }
+ #line 2345 "smarty_internal_templateparser.php"
+ #line 301 "smarty_internal_templateparser.y"
+ function yy_r21()
+ {
+ $this->_retvalue = $this->yystack[$this->yyidx + 0]->minor;
+ }
+ #line 2350 "smarty_internal_templateparser.php"
+ #line 314 "smarty_internal_templateparser.y"
+ function yy_r23()
+ {
+ $this->_retvalue = $this->compiler->compileTag('private_print_expression', array(), array('value' => $this->yystack[$this->yyidx + 0]->minor));
+ }
+ #line 2355 "smarty_internal_templateparser.php"
+ #line 318 "smarty_internal_templateparser.y"
+ function yy_r24()
+ {
+ $this->_retvalue = $this->compiler->compileTag('private_print_expression', $this->yystack[$this->yyidx + 0]->minor, array('value' => $this->yystack[$this->yyidx + - 2]->minor, 'modifierlist' => $this->yystack[$this->yyidx + - 1]->minor));
+ }
+ #line 2360 "smarty_internal_templateparser.php"
+ #line 322 "smarty_internal_templateparser.y"
+ function yy_r25()
+ {
+ $this->_retvalue = $this->compiler->compileTag('private_print_expression', $this->yystack[$this->yyidx + 0]->minor, array('value' => $this->yystack[$this->yyidx + - 1]->minor));
+ }
+ #line 2365 "smarty_internal_templateparser.php"
+ #line 326 "smarty_internal_templateparser.y"
+ function yy_r26()
+ {
+ $this->_retvalue = $this->compiler->compileTag('private_print_expression', $this->yystack[$this->yyidx + 0]->minor, array('value' => $this->yystack[$this->yyidx + - 2]->minor, 'modifierlist' => $this->yystack[$this->yyidx + - 1]->minor));
+ }
+ #line 2370 "smarty_internal_templateparser.php"
+ #line 339 "smarty_internal_templateparser.y"
+ function yy_r28()
+ {
+ $this->_retvalue = $this->compiler->compileTag('assign', array(array('value' => $this->yystack[$this->yyidx + 0]->minor), array('var' => "'" . $this->yystack[$this->yyidx + - 2]->minor . "'")));
+ }
+ #line 2375 "smarty_internal_templateparser.php"
+ #line 347 "smarty_internal_templateparser.y"
+ function yy_r30()
+ {
+ $this->_retvalue = $this->compiler->compileTag('assign', array_merge(array(array('value' => $this->yystack[$this->yyidx + - 1]->minor), array('var' => "'" . $this->yystack[$this->yyidx + - 3]->minor . "'")), $this->yystack[$this->yyidx + 0]->minor));
+ }
+ #line 2380 "smarty_internal_templateparser.php"
+ #line 351 "smarty_internal_templateparser.y"
+ function yy_r31()
+ {
+ $this->_retvalue = $this->compiler->compileTag('assign', array_merge(array(array('value' => $this->yystack[$this->yyidx + - 1]->minor), array('var' => $this->yystack[$this->yyidx + - 3]->minor['var'])), $this->yystack[$this->yyidx + 0]->minor), array('smarty_internal_index' => $this->yystack[$this->yyidx + - 3]->minor['smarty_internal_index']));
+ }
+ #line 2385 "smarty_internal_templateparser.php"
+ #line 356 "smarty_internal_templateparser.y"
+ function yy_r32()
+ {
+ $this->_retvalue = $this->compiler->compileTag($this->yystack[$this->yyidx + - 1]->minor, $this->yystack[$this->yyidx + 0]->minor);
+ }
+ #line 2390 "smarty_internal_templateparser.php"
+ #line 360 "smarty_internal_templateparser.y"
+ function yy_r33()
+ {
+ $this->_retvalue = $this->compiler->compileTag($this->yystack[$this->yyidx + 0]->minor, array());
+ }
+ #line 2395 "smarty_internal_templateparser.php"
+ #line 365 "smarty_internal_templateparser.y"
+ function yy_r34()
+ {
+ $this->_retvalue = $this->compiler->compileTag($this->yystack[$this->yyidx + - 3]->minor, $this->yystack[$this->yyidx + 0]->minor, array('object_method' => $this->yystack[$this->yyidx + - 1]->minor));
+ }
+ #line 2400 "smarty_internal_templateparser.php"
+ #line 370 "smarty_internal_templateparser.y"
+ function yy_r35()
+ {
+ $this->_retvalue = '<?php ob_start();?>' . $this->compiler->compileTag($this->yystack[$this->yyidx + - 2]->minor, $this->yystack[$this->yyidx + 0]->minor) . '<?php echo ';
+ $this->_retvalue .= $this->compiler->compileTag('private_modifier', array(), array('modifierlist' => $this->yystack[$this->yyidx + - 1]->minor, 'value' => 'ob_get_clean()')) . '?>';
+ }
+ #line 2406 "smarty_internal_templateparser.php"
+ #line 376 "smarty_internal_templateparser.y"
+ function yy_r36()
+ {
+ $this->_retvalue = '<?php ob_start();?>' . $this->compiler->compileTag($this->yystack[$this->yyidx + - 4]->minor, $this->yystack[$this->yyidx + 0]->minor, array('object_method' => $this->yystack[$this->yyidx + - 2]->minor)) . '<?php echo ';
+ $this->_retvalue .= $this->compiler->compileTag('private_modifier', array(), array('modifierlist' => $this->yystack[$this->yyidx + - 1]->minor, 'value' => 'ob_get_clean()')) . '?>';
+ }
+ #line 2412 "smarty_internal_templateparser.php"
+ #line 382 "smarty_internal_templateparser.y"
+ function yy_r37()
+ {
+ $tag = trim(substr($this->yystack[$this->yyidx + - 1]->minor, $this->lex->ldel_length));
+ $this->_retvalue = $this->compiler->compileTag(($tag == 'else if') ? 'elseif' : $tag, array(), array('if condition' => $this->yystack[$this->yyidx + 0]->minor));
+ }
+ #line 2418 "smarty_internal_templateparser.php"
+ #line 387 "smarty_internal_templateparser.y"
+ function yy_r38()
+ {
+ $tag = trim(substr($this->yystack[$this->yyidx + - 2]->minor, $this->lex->ldel_length));
+ $this->_retvalue = $this->compiler->compileTag(($tag == 'else if') ? 'elseif' : $tag, $this->yystack[$this->yyidx + 0]->minor, array('if condition' => $this->yystack[$this->yyidx + - 1]->minor));
+ }
+ #line 2424 "smarty_internal_templateparser.php"
+ #line 392 "smarty_internal_templateparser.y"
+ function yy_r39()
+ {
+ $tag = trim(substr($this->yystack[$this->yyidx + - 1]->minor, $this->lex->ldel_length));
+ $this->_retvalue = $this->compiler->compileTag(($tag == 'else if') ? 'elseif' : $tag, array(), array('if condition' => $this->yystack[$this->yyidx + 0]->minor));
+ }
+ #line 2430 "smarty_internal_templateparser.php"
+ #line 403 "smarty_internal_templateparser.y"
+ function yy_r41()
+ {
+ $this->_retvalue = $this->compiler->compileTag('for', array_merge($this->yystack[$this->yyidx + 0]->minor, array(array('start' => $this->yystack[$this->yyidx + - 9]->minor), array('ifexp' => $this->yystack[$this->yyidx + - 6]->minor), array('var' => $this->yystack[$this->yyidx + - 2]->minor), array('step' => $this->yystack[$this->yyidx + - 1]->minor))), 1);
+ }
+ #line 2435 "smarty_internal_templateparser.php"
+ #line 407 "smarty_internal_templateparser.y"
+ function yy_r42()
+ {
+ $this->_retvalue = '=' . $this->yystack[$this->yyidx + 0]->minor;
+ }
+ #line 2440 "smarty_internal_templateparser.php"
+ #line 415 "smarty_internal_templateparser.y"
+ function yy_r44()
+ {
+ $this->_retvalue = $this->compiler->compileTag('for', array_merge($this->yystack[$this->yyidx + 0]->minor, array(array('start' => $this->yystack[$this->yyidx + - 3]->minor), array('to' => $this->yystack[$this->yyidx + - 1]->minor))), 0);
+ }
+ #line 2445 "smarty_internal_templateparser.php"
+ #line 419 "smarty_internal_templateparser.y"
+ function yy_r45()
+ {
+ $this->_retvalue = $this->compiler->compileTag('for', array_merge($this->yystack[$this->yyidx + 0]->minor, array(array('start' => $this->yystack[$this->yyidx + - 5]->minor), array('to' => $this->yystack[$this->yyidx + - 3]->minor), array('step' => $this->yystack[$this->yyidx + - 1]->minor))), 0);
+ }
+ #line 2450 "smarty_internal_templateparser.php"
+ #line 424 "smarty_internal_templateparser.y"
+ function yy_r46()
+ {
+ $this->_retvalue = $this->compiler->compileTag('foreach', $this->yystack[$this->yyidx + 0]->minor);
+ }
+ #line 2455 "smarty_internal_templateparser.php"
+ #line 429 "smarty_internal_templateparser.y"
+ function yy_r47()
+ {
+ $this->_retvalue = $this->compiler->compileTag('foreach', array_merge($this->yystack[$this->yyidx + 0]->minor, array(array('from' => $this->yystack[$this->yyidx + - 4]->minor), array('item' => $this->yystack[$this->yyidx + - 1]->minor))));
+ }
+ #line 2460 "smarty_internal_templateparser.php"
+ #line 433 "smarty_internal_templateparser.y"
+ function yy_r48()
+ {
+ $this->_retvalue = $this->compiler->compileTag('foreach', array_merge($this->yystack[$this->yyidx + 0]->minor, array(array('from' => $this->yystack[$this->yyidx + - 7]->minor), array('item' => $this->yystack[$this->yyidx + - 1]->minor), array('key' => $this->yystack[$this->yyidx + - 4]->minor))));
+ }
+ #line 2465 "smarty_internal_templateparser.php"
+ #line 446 "smarty_internal_templateparser.y"
+ function yy_r51()
+ {
+ $this->_retvalue = $this->compiler->compileTag('setfilter', array(), array('modifier_list' => array(array_merge(array($this->yystack[$this->yyidx + - 1]->minor), $this->yystack[$this->yyidx + 0]->minor))));
+ }
+ #line 2470 "smarty_internal_templateparser.php"
+ #line 450 "smarty_internal_templateparser.y"
+ function yy_r52()
+ {
+ $this->_retvalue = $this->compiler->compileTag('setfilter', array(), array('modifier_list' => array_merge(array(array_merge(array($this->yystack[$this->yyidx + - 2]->minor), $this->yystack[$this->yyidx + - 1]->minor)), $this->yystack[$this->yyidx + 0]->minor)));
+ }
+ #line 2475 "smarty_internal_templateparser.php"
+ #line 455 "smarty_internal_templateparser.y"
+ function yy_r53()
+ {
+ $j = strrpos($this->yystack[$this->yyidx + 0]->minor, '.');
+ if ($this->yystack[$this->yyidx + 0]->minor[$j + 1] == 'c') {
+ // {$smarty.block.child}
+ $this->_retvalue = SMARTY_INTERNAL_COMPILE_BLOCK::compileChildBlock($this->compiler);
} else {
- $this->_retvalue = new _smarty_text($this, '%<?php ?>>');
+ // {$smarty.block.parent}
+ $this->_retvalue = SMARTY_INTERNAL_COMPILE_BLOCK::compileParentBlock($this->compiler);
}
- } elseif ($this->php_handling == Smarty::PHP_REMOVE) {
- if ($this->asp_tags) {
- $this->_retvalue = new _smarty_text($this, '');
+ }
+ #line 2487 "smarty_internal_templateparser.php"
+ #line 468 "smarty_internal_templateparser.y"
+ function yy_r54()
+ {
+ $this->_retvalue = $this->compiler->compileTag($this->yystack[$this->yyidx + 0]->minor . 'close', array());
+ }
+ #line 2492 "smarty_internal_templateparser.php"
+ #line 472 "smarty_internal_templateparser.y"
+ function yy_r55()
+ {
+ $this->_retvalue = $this->compiler->compileTag($this->yystack[$this->yyidx + - 1]->minor . 'close', array(), array('modifier_list' => $this->yystack[$this->yyidx + 0]->minor));
+ }
+ #line 2497 "smarty_internal_templateparser.php"
+ #line 477 "smarty_internal_templateparser.y"
+ function yy_r56()
+ {
+ $this->_retvalue = $this->compiler->compileTag($this->yystack[$this->yyidx + - 2]->minor . 'close', array(), array('object_method' => $this->yystack[$this->yyidx + 0]->minor));
+ }
+ #line 2502 "smarty_internal_templateparser.php"
+ #line 481 "smarty_internal_templateparser.y"
+ function yy_r57()
+ {
+ $this->_retvalue = $this->compiler->compileTag($this->yystack[$this->yyidx + - 3]->minor . 'close', array(), array('object_method' => $this->yystack[$this->yyidx + - 1]->minor, 'modifier_list' => $this->yystack[$this->yyidx + 0]->minor));
+ }
+ #line 2507 "smarty_internal_templateparser.php"
+ #line 489 "smarty_internal_templateparser.y"
+ function yy_r58()
+ {
+ $this->_retvalue = $this->yystack[$this->yyidx + - 1]->minor;
+ $this->_retvalue[] = $this->yystack[$this->yyidx + 0]->minor;
+ }
+ #line 2513 "smarty_internal_templateparser.php"
+ #line 495 "smarty_internal_templateparser.y"
+ function yy_r59()
+ {
+ $this->_retvalue = array($this->yystack[$this->yyidx + 0]->minor);
+ }
+ #line 2518 "smarty_internal_templateparser.php"
+ #line 500 "smarty_internal_templateparser.y"
+ function yy_r60()
+ {
+ $this->_retvalue = array();
+ }
+ #line 2523 "smarty_internal_templateparser.php"
+ #line 505 "smarty_internal_templateparser.y"
+ function yy_r61()
+ {
+ if (preg_match('~^true$~i', $this->yystack[$this->yyidx + 0]->minor)) {
+ $this->_retvalue = array($this->yystack[$this->yyidx + - 2]->minor => 'true');
+ } elseif (preg_match('~^false$~i', $this->yystack[$this->yyidx + 0]->minor)) {
+ $this->_retvalue = array($this->yystack[$this->yyidx + - 2]->minor => 'false');
+ } elseif (preg_match('~^null$~i', $this->yystack[$this->yyidx + 0]->minor)) {
+ $this->_retvalue = array($this->yystack[$this->yyidx + - 2]->minor => 'null');
} else {
- $this->_retvalue = new _smarty_text($this, '%<?php ?>>');
+ $this->_retvalue = array($this->yystack[$this->yyidx + - 2]->minor => "'" . $this->yystack[$this->yyidx + 0]->minor . "'");
}
}
+ #line 2536 "smarty_internal_templateparser.php"
+ #line 517 "smarty_internal_templateparser.y"
+ function yy_r62()
+ {
+ $this->_retvalue = array(trim($this->yystack[$this->yyidx + - 1]->minor, " =\n\r\t") => $this->yystack[$this->yyidx + 0]->minor);
}
-#line 2272 "smarty_internal_templateparser.php"
-#line 220 "smarty_internal_templateparser.y"
- function yy_r11(){
- if ($this->strip) {
- $this->_retvalue = new _smarty_text($this, preg_replace('![\t ]*[\r\n]+[\t ]*!', '', self::escape_start_tag($this->yystack[$this->yyidx + 0]->minor)));
- } else {
- $this->_retvalue = new _smarty_text($this, self::escape_start_tag($this->yystack[$this->yyidx + 0]->minor));
- }
- }
-#line 2281 "smarty_internal_templateparser.php"
-#line 229 "smarty_internal_templateparser.y"
- function yy_r12(){
- $this->compiler->tag_nocache = true;
- $this->is_xml = true;
- $save = $this->template->has_nocache_code;
- $this->_retvalue = new _smarty_text($this, $this->compiler->processNocacheCode("<?php echo '<?xml';?>", $this->compiler, true));
- $this->template->has_nocache_code = $save;
- }
-#line 2290 "smarty_internal_templateparser.php"
-#line 238 "smarty_internal_templateparser.y"
- function yy_r13(){
- if ($this->strip) {
- $this->_retvalue = new _smarty_text($this, preg_replace('![\t ]*[\r\n]+[\t ]*!', '', $this->yystack[$this->yyidx + 0]->minor));
- } else {
- $this->_retvalue = new _smarty_text($this, $this->yystack[$this->yyidx + 0]->minor);
+ #line 2541 "smarty_internal_templateparser.php"
+ #line 525 "smarty_internal_templateparser.y"
+ function yy_r64()
+ {
+ $this->_retvalue = "'" . $this->yystack[$this->yyidx + 0]->minor . "'";
+ }
+ #line 2546 "smarty_internal_templateparser.php"
+ #line 537 "smarty_internal_templateparser.y"
+ function yy_r67()
+ {
+ $this->_retvalue = array($this->yystack[$this->yyidx + - 2]->minor => $this->yystack[$this->yyidx + 0]->minor);
+ }
+ #line 2551 "smarty_internal_templateparser.php"
+ #line 550 "smarty_internal_templateparser.y"
+ function yy_r69()
+ {
+ $this->yystack[$this->yyidx + - 2]->minor[] = $this->yystack[$this->yyidx + 0]->minor;
+ $this->_retvalue = $this->yystack[$this->yyidx + - 2]->minor;
+ }
+ #line 2557 "smarty_internal_templateparser.php"
+ #line 555 "smarty_internal_templateparser.y"
+ function yy_r70()
+ {
+ $this->_retvalue = array('var' => $this->yystack[$this->yyidx + - 2]->minor, 'value' => $this->yystack[$this->yyidx + 0]->minor);
+ }
+ #line 2562 "smarty_internal_templateparser.php"
+ #line 583 "smarty_internal_templateparser.y"
+ function yy_r75()
+ {
+ $this->_retvalue = '$_smarty_tpl->getStreamVariable(\'' . $this->yystack[$this->yyidx + - 2]->minor . '://' . $this->yystack[$this->yyidx + 0]->minor . '\')';
+ }
+ #line 2567 "smarty_internal_templateparser.php"
+ #line 588 "smarty_internal_templateparser.y"
+ function yy_r76()
+ {
+ $this->_retvalue = $this->yystack[$this->yyidx + - 2]->minor . trim($this->yystack[$this->yyidx + - 1]->minor) . $this->yystack[$this->yyidx + 0]->minor;
+ }
+ #line 2572 "smarty_internal_templateparser.php"
+ #line 607 "smarty_internal_templateparser.y"
+ function yy_r80()
+ {
+ $this->_retvalue = $this->compiler->compileTag('private_modifier', array(), array('value' => $this->yystack[$this->yyidx + - 1]->minor, 'modifierlist' => $this->yystack[$this->yyidx + 0]->minor));
+ }
+ #line 2577 "smarty_internal_templateparser.php"
+ #line 613 "smarty_internal_templateparser.y"
+ function yy_r81()
+ {
+ $this->_retvalue = $this->yystack[$this->yyidx + - 2]->minor . $this->yystack[$this->yyidx + - 1]->minor . $this->yystack[$this->yyidx + 0]->minor;
+ }
+ #line 2582 "smarty_internal_templateparser.php"
+ #line 617 "smarty_internal_templateparser.y"
+ function yy_r82()
+ {
+ $this->_retvalue = 'in_array(' . $this->yystack[$this->yyidx + - 2]->minor . ',' . $this->yystack[$this->yyidx + 0]->minor . ')';
+ }
+ #line 2587 "smarty_internal_templateparser.php"
+ #line 621 "smarty_internal_templateparser.y"
+ function yy_r83()
+ {
+ $this->_retvalue = 'in_array(' . $this->yystack[$this->yyidx + - 2]->minor . ',(array)' . $this->yystack[$this->yyidx + 0]->minor . ')';
+ }
+ #line 2592 "smarty_internal_templateparser.php"
+ #line 629 "smarty_internal_templateparser.y"
+ function yy_r85()
+ {
+ $this->_retvalue = '!(' . $this->yystack[$this->yyidx + - 2]->minor . ' % ' . $this->yystack[$this->yyidx + 0]->minor . ')';
+ }
+ #line 2597 "smarty_internal_templateparser.php"
+ #line 633 "smarty_internal_templateparser.y"
+ function yy_r86()
+ {
+ $this->_retvalue = '(' . $this->yystack[$this->yyidx + - 2]->minor . ' % ' . $this->yystack[$this->yyidx + 0]->minor . ')';
+ }
+ #line 2602 "smarty_internal_templateparser.php"
+ #line 637 "smarty_internal_templateparser.y"
+ function yy_r87()
+ {
+ $this->_retvalue = '!(1 & ' . $this->yystack[$this->yyidx + - 1]->minor . ')';
+ }
+ #line 2607 "smarty_internal_templateparser.php"
+ #line 641 "smarty_internal_templateparser.y"
+ function yy_r88()
+ {
+ $this->_retvalue = '(1 & ' . $this->yystack[$this->yyidx + - 1]->minor . ')';
+ }
+ #line 2612 "smarty_internal_templateparser.php"
+ #line 645 "smarty_internal_templateparser.y"
+ function yy_r89()
+ {
+ $this->_retvalue = '!(1 & ' . $this->yystack[$this->yyidx + - 2]->minor . ' / ' . $this->yystack[$this->yyidx + 0]->minor . ')';
+ }
+ #line 2617 "smarty_internal_templateparser.php"
+ #line 649 "smarty_internal_templateparser.y"
+ function yy_r90()
+ {
+ $this->_retvalue = '(1 & ' . $this->yystack[$this->yyidx + - 2]->minor . ' / ' . $this->yystack[$this->yyidx + 0]->minor . ')';
+ }
+ #line 2622 "smarty_internal_templateparser.php"
+ #line 673 "smarty_internal_templateparser.y"
+ function yy_r96()
+ {
+ self::$prefix_number ++;
+ $this->compiler->prefix_code[] = '<?php $_tmp' . self::$prefix_number . '=' . $this->yystack[$this->yyidx + 0]->minor . ';?>';
+ $this->_retvalue = $this->yystack[$this->yyidx + - 2]->minor . $this->yystack[$this->yyidx + - 1]->minor . '$_tmp' . self::$prefix_number;
+ }
+ #line 2629 "smarty_internal_templateparser.php"
+ #line 682 "smarty_internal_templateparser.y"
+ function yy_r97()
+ {
+ $this->_retvalue = $this->yystack[$this->yyidx + - 6]->minor . ' ? ' . $this->compileVariable("'" . $this->yystack[$this->yyidx + - 2]->minor . "'") . ' : ' . $this->yystack[$this->yyidx + 0]->minor;
+ }
+ #line 2634 "smarty_internal_templateparser.php"
+ #line 686 "smarty_internal_templateparser.y"
+ function yy_r98()
+ {
+ $this->_retvalue = $this->yystack[$this->yyidx + - 5]->minor . ' ? ' . $this->yystack[$this->yyidx + - 2]->minor . ' : ' . $this->yystack[$this->yyidx + 0]->minor;
+ }
+ #line 2639 "smarty_internal_templateparser.php"
+ #line 701 "smarty_internal_templateparser.y"
+ function yy_r101()
+ {
+ $this->_retvalue = '!' . $this->yystack[$this->yyidx + 0]->minor;
+ }
+ #line 2644 "smarty_internal_templateparser.php"
+ #line 722 "smarty_internal_templateparser.y"
+ function yy_r106()
+ {
+ $this->_retvalue = $this->yystack[$this->yyidx + - 2]->minor . '.' . $this->yystack[$this->yyidx + 0]->minor;
}
+ #line 2649 "smarty_internal_templateparser.php"
+ #line 726 "smarty_internal_templateparser.y"
+ function yy_r107()
+ {
+ $this->_retvalue = $this->yystack[$this->yyidx + - 1]->minor . '.';
+ }
+ #line 2654 "smarty_internal_templateparser.php"
+ #line 730 "smarty_internal_templateparser.y"
+ function yy_r108()
+ {
+ $this->_retvalue = '.' . $this->yystack[$this->yyidx + 0]->minor;
}
-#line 2299 "smarty_internal_templateparser.php"
-#line 247 "smarty_internal_templateparser.y"
- function yy_r14(){
- $this->strip = true;
- $this->_retvalue = new _smarty_text($this, '');
- }
-#line 2305 "smarty_internal_templateparser.php"
-#line 252 "smarty_internal_templateparser.y"
- function yy_r15(){
- $this->strip = false;
- $this->_retvalue = new _smarty_text($this, '');
- }
-#line 2311 "smarty_internal_templateparser.php"
-#line 258 "smarty_internal_templateparser.y"
- function yy_r16(){
- $this->_retvalue = '';
- }
-#line 2316 "smarty_internal_templateparser.php"
-#line 262 "smarty_internal_templateparser.y"
- function yy_r17(){
- $this->_retvalue = $this->yystack[$this->yyidx + -1]->minor;
- }
-#line 2321 "smarty_internal_templateparser.php"
-#line 266 "smarty_internal_templateparser.y"
- function yy_r18(){
- $this->_retvalue = $this->yystack[$this->yyidx + -1]->minor.$this->yystack[$this->yyidx + 0]->minor;
- }
-#line 2326 "smarty_internal_templateparser.php"
-#line 274 "smarty_internal_templateparser.y"
- function yy_r20(){
- $this->_retvalue = $this->yystack[$this->yyidx + 0]->minor;
- }
-#line 2331 "smarty_internal_templateparser.php"
-#line 282 "smarty_internal_templateparser.y"
- function yy_r22(){
- $this->_retvalue = self::escape_start_tag($this->yystack[$this->yyidx + 0]->minor);
- }
-#line 2336 "smarty_internal_templateparser.php"
-#line 290 "smarty_internal_templateparser.y"
- function yy_r24(){
- $this->_retvalue = self::escape_end_tag($this->yystack[$this->yyidx + 0]->minor);
- }
-#line 2341 "smarty_internal_templateparser.php"
-#line 294 "smarty_internal_templateparser.y"
- function yy_r25(){
- $this->_retvalue = '<<?php ?>%';
- }
-#line 2346 "smarty_internal_templateparser.php"
-#line 298 "smarty_internal_templateparser.y"
- function yy_r26(){
- $this->_retvalue = '%<?php ?>>';
- }
-#line 2351 "smarty_internal_templateparser.php"
-#line 307 "smarty_internal_templateparser.y"
- function yy_r27(){
- $this->_retvalue = $this->compiler->compileTag('private_print_expression',array(),array('value'=>$this->yystack[$this->yyidx + -1]->minor));
- }
-#line 2356 "smarty_internal_templateparser.php"
-#line 311 "smarty_internal_templateparser.y"
- function yy_r28(){
- $this->_retvalue = $this->compiler->compileTag('private_print_expression',$this->yystack[$this->yyidx + -1]->minor,array('value'=>$this->yystack[$this->yyidx + -3]->minor, 'modifierlist'=>$this->yystack[$this->yyidx + -2]->minor));
- }
-#line 2361 "smarty_internal_templateparser.php"
-#line 315 "smarty_internal_templateparser.y"
- function yy_r29(){
- $this->_retvalue = $this->compiler->compileTag('private_print_expression',$this->yystack[$this->yyidx + -1]->minor,array('value'=>$this->yystack[$this->yyidx + -2]->minor));
- }
-#line 2366 "smarty_internal_templateparser.php"
-#line 319 "smarty_internal_templateparser.y"
- function yy_r30(){
- $this->_retvalue = $this->compiler->compileTag('private_print_expression',$this->yystack[$this->yyidx + -1]->minor,array('value'=>$this->yystack[$this->yyidx + -3]->minor,'modifierlist'=>$this->yystack[$this->yyidx + -2]->minor));
- }
-#line 2371 "smarty_internal_templateparser.php"
-#line 332 "smarty_internal_templateparser.y"
- function yy_r32(){
- $this->_retvalue = $this->compiler->compileTag('assign',array(array('value'=>$this->yystack[$this->yyidx + -1]->minor),array('var'=>"'".$this->yystack[$this->yyidx + -3]->minor."'")));
- }
-#line 2376 "smarty_internal_templateparser.php"
-#line 340 "smarty_internal_templateparser.y"
- function yy_r34(){
- $this->_retvalue = $this->compiler->compileTag('assign',array_merge(array(array('value'=>$this->yystack[$this->yyidx + -2]->minor),array('var'=>"'".$this->yystack[$this->yyidx + -4]->minor."'")),$this->yystack[$this->yyidx + -1]->minor));
- }
-#line 2381 "smarty_internal_templateparser.php"
-#line 344 "smarty_internal_templateparser.y"
- function yy_r35(){
- $this->_retvalue = $this->compiler->compileTag('assign',array_merge(array(array('value'=>$this->yystack[$this->yyidx + -2]->minor),array('var'=>$this->yystack[$this->yyidx + -4]->minor['var'])),$this->yystack[$this->yyidx + -1]->minor),array('smarty_internal_index'=>$this->yystack[$this->yyidx + -4]->minor['smarty_internal_index']));
- }
-#line 2386 "smarty_internal_templateparser.php"
-#line 349 "smarty_internal_templateparser.y"
- function yy_r36(){
- $this->_retvalue = $this->compiler->compileTag($this->yystack[$this->yyidx + -2]->minor,$this->yystack[$this->yyidx + -1]->minor);
- }
-#line 2391 "smarty_internal_templateparser.php"
-#line 353 "smarty_internal_templateparser.y"
- function yy_r37(){
- $this->_retvalue = $this->compiler->compileTag($this->yystack[$this->yyidx + -1]->minor,array());
- }
-#line 2396 "smarty_internal_templateparser.php"
-#line 358 "smarty_internal_templateparser.y"
- function yy_r38(){
- $this->_retvalue = $this->compiler->compileTag($this->yystack[$this->yyidx + -4]->minor,$this->yystack[$this->yyidx + -1]->minor,array('object_methode'=>$this->yystack[$this->yyidx + -2]->minor));
- }
-#line 2401 "smarty_internal_templateparser.php"
-#line 363 "smarty_internal_templateparser.y"
- function yy_r39(){
- $this->_retvalue = '<?php ob_start();?>'.$this->compiler->compileTag($this->yystack[$this->yyidx + -3]->minor,$this->yystack[$this->yyidx + -1]->minor).'<?php echo ';
- $this->_retvalue .= $this->compiler->compileTag('private_modifier',array(),array('modifierlist'=>$this->yystack[$this->yyidx + -2]->minor,'value'=>'ob_get_clean()')).'?>';
- }
-#line 2407 "smarty_internal_templateparser.php"
-#line 369 "smarty_internal_templateparser.y"
- function yy_r40(){
- $this->_retvalue = '<?php ob_start();?>'.$this->compiler->compileTag($this->yystack[$this->yyidx + -5]->minor,$this->yystack[$this->yyidx + -1]->minor,array('object_methode'=>$this->yystack[$this->yyidx + -3]->minor)).'<?php echo ';
- $this->_retvalue .= $this->compiler->compileTag('private_modifier',array(),array('modifierlist'=>$this->yystack[$this->yyidx + -2]->minor,'value'=>'ob_get_clean()')).'?>';
- }
-#line 2413 "smarty_internal_templateparser.php"
-#line 375 "smarty_internal_templateparser.y"
- function yy_r41(){
- $tag = trim(substr($this->yystack[$this->yyidx + -2]->minor,$this->lex->ldel_length));
- $this->_retvalue = $this->compiler->compileTag(($tag == 'else if')? 'elseif' : $tag,array(),array('if condition'=>$this->yystack[$this->yyidx + -1]->minor));
- }
-#line 2419 "smarty_internal_templateparser.php"
-#line 380 "smarty_internal_templateparser.y"
- function yy_r42(){
- $tag = trim(substr($this->yystack[$this->yyidx + -3]->minor,$this->lex->ldel_length));
- $this->_retvalue = $this->compiler->compileTag(($tag == 'else if')? 'elseif' : $tag,$this->yystack[$this->yyidx + -1]->minor,array('if condition'=>$this->yystack[$this->yyidx + -2]->minor));
- }
-#line 2425 "smarty_internal_templateparser.php"
-#line 385 "smarty_internal_templateparser.y"
- function yy_r43(){
- $tag = trim(substr($this->yystack[$this->yyidx + -2]->minor,$this->lex->ldel_length));
- $this->_retvalue = $this->compiler->compileTag(($tag == 'else if')? 'elseif' : $tag,array(),array('if condition'=>$this->yystack[$this->yyidx + -1]->minor));
- }
-#line 2431 "smarty_internal_templateparser.php"
-#line 396 "smarty_internal_templateparser.y"
- function yy_r45(){
- $this->_retvalue = $this->compiler->compileTag('for',array_merge($this->yystack[$this->yyidx + -1]->minor,array(array('start'=>$this->yystack[$this->yyidx + -10]->minor),array('ifexp'=>$this->yystack[$this->yyidx + -7]->minor),array('var'=>$this->yystack[$this->yyidx + -3]->minor),array('step'=>$this->yystack[$this->yyidx + -2]->minor))),1);
- }
-#line 2436 "smarty_internal_templateparser.php"
-#line 400 "smarty_internal_templateparser.y"
- function yy_r46(){
- $this->_retvalue = '='.$this->yystack[$this->yyidx + 0]->minor;
- }
-#line 2441 "smarty_internal_templateparser.php"
-#line 408 "smarty_internal_templateparser.y"
- function yy_r48(){
- $this->_retvalue = $this->compiler->compileTag('for',array_merge($this->yystack[$this->yyidx + -1]->minor,array(array('start'=>$this->yystack[$this->yyidx + -4]->minor),array('to'=>$this->yystack[$this->yyidx + -2]->minor))),0);
- }
-#line 2446 "smarty_internal_templateparser.php"
-#line 412 "smarty_internal_templateparser.y"
- function yy_r49(){
- $this->_retvalue = $this->compiler->compileTag('for',array_merge($this->yystack[$this->yyidx + -1]->minor,array(array('start'=>$this->yystack[$this->yyidx + -6]->minor),array('to'=>$this->yystack[$this->yyidx + -4]->minor),array('step'=>$this->yystack[$this->yyidx + -2]->minor))),0);
- }
-#line 2451 "smarty_internal_templateparser.php"
-#line 417 "smarty_internal_templateparser.y"
- function yy_r50(){
- $this->_retvalue = $this->compiler->compileTag('foreach',$this->yystack[$this->yyidx + -1]->minor);
- }
-#line 2456 "smarty_internal_templateparser.php"
-#line 422 "smarty_internal_templateparser.y"
- function yy_r51(){
- $this->_retvalue = $this->compiler->compileTag('foreach',array_merge($this->yystack[$this->yyidx + -1]->minor,array(array('from'=>$this->yystack[$this->yyidx + -5]->minor),array('item'=>$this->yystack[$this->yyidx + -2]->minor))));
- }
-#line 2461 "smarty_internal_templateparser.php"
-#line 426 "smarty_internal_templateparser.y"
- function yy_r52(){
- $this->_retvalue = $this->compiler->compileTag('foreach',array_merge($this->yystack[$this->yyidx + -1]->minor,array(array('from'=>$this->yystack[$this->yyidx + -8]->minor),array('item'=>$this->yystack[$this->yyidx + -2]->minor),array('key'=>$this->yystack[$this->yyidx + -5]->minor))));
- }
-#line 2466 "smarty_internal_templateparser.php"
-#line 430 "smarty_internal_templateparser.y"
- function yy_r53(){
- $this->_retvalue = $this->compiler->compileTag('foreach',array_merge($this->yystack[$this->yyidx + -1]->minor,array(array('from'=>$this->yystack[$this->yyidx + -5]->minor),array('item'=>$this->yystack[$this->yyidx + -2]->minor))));
- }
-#line 2471 "smarty_internal_templateparser.php"
-#line 434 "smarty_internal_templateparser.y"
- function yy_r54(){
- $this->_retvalue = $this->compiler->compileTag('foreach',array_merge($this->yystack[$this->yyidx + -1]->minor,array(array('from'=>$this->yystack[$this->yyidx + -8]->minor),array('item'=>$this->yystack[$this->yyidx + -2]->minor),array('key'=>$this->yystack[$this->yyidx + -5]->minor))));
- }
-#line 2476 "smarty_internal_templateparser.php"
-#line 439 "smarty_internal_templateparser.y"
- function yy_r55(){
- $this->_retvalue = $this->compiler->compileTag('setfilter',array(),array('modifier_list'=>array(array_merge(array($this->yystack[$this->yyidx + -2]->minor),$this->yystack[$this->yyidx + -1]->minor))));
- }
-#line 2481 "smarty_internal_templateparser.php"
-#line 443 "smarty_internal_templateparser.y"
- function yy_r56(){
- $this->_retvalue = $this->compiler->compileTag('setfilter',array(),array('modifier_list'=>array_merge(array(array_merge(array($this->yystack[$this->yyidx + -3]->minor),$this->yystack[$this->yyidx + -2]->minor)),$this->yystack[$this->yyidx + -1]->minor)));
- }
-#line 2486 "smarty_internal_templateparser.php"
-#line 448 "smarty_internal_templateparser.y"
- function yy_r57(){
- $this->_retvalue = SMARTY_INTERNAL_COMPILE_BLOCK::compileChildBlock($this->compiler);
- }
-#line 2491 "smarty_internal_templateparser.php"
-#line 454 "smarty_internal_templateparser.y"
- function yy_r58(){
- $this->_retvalue = $this->compiler->compileTag($this->yystack[$this->yyidx + -1]->minor.'close',array());
- }
-#line 2496 "smarty_internal_templateparser.php"
-#line 458 "smarty_internal_templateparser.y"
- function yy_r59(){
- $this->_retvalue = $this->compiler->compileTag($this->yystack[$this->yyidx + -2]->minor.'close',array(),array('modifier_list'=>$this->yystack[$this->yyidx + -1]->minor));
- }
-#line 2501 "smarty_internal_templateparser.php"
-#line 463 "smarty_internal_templateparser.y"
- function yy_r60(){
- $this->_retvalue = $this->compiler->compileTag($this->yystack[$this->yyidx + -3]->minor.'close',array(),array('object_methode'=>$this->yystack[$this->yyidx + -1]->minor));
- }
-#line 2506 "smarty_internal_templateparser.php"
-#line 467 "smarty_internal_templateparser.y"
- function yy_r61(){
- $this->_retvalue = $this->compiler->compileTag($this->yystack[$this->yyidx + -4]->minor.'close',array(),array('object_methode'=>$this->yystack[$this->yyidx + -2]->minor, 'modifier_list'=>$this->yystack[$this->yyidx + -1]->minor));
- }
-#line 2511 "smarty_internal_templateparser.php"
-#line 475 "smarty_internal_templateparser.y"
- function yy_r62(){
- $this->_retvalue = $this->yystack[$this->yyidx + -1]->minor;
- $this->_retvalue[] = $this->yystack[$this->yyidx + 0]->minor;
- }
-#line 2517 "smarty_internal_templateparser.php"
-#line 481 "smarty_internal_templateparser.y"
- function yy_r63(){
- $this->_retvalue = array($this->yystack[$this->yyidx + 0]->minor);
- }
-#line 2522 "smarty_internal_templateparser.php"
-#line 486 "smarty_internal_templateparser.y"
- function yy_r64(){
- $this->_retvalue = array();
- }
-#line 2527 "smarty_internal_templateparser.php"
-#line 491 "smarty_internal_templateparser.y"
- function yy_r65(){
- if (preg_match('~^true$~i', $this->yystack[$this->yyidx + 0]->minor)) {
- $this->_retvalue = array($this->yystack[$this->yyidx + -2]->minor=>'true');
- } elseif (preg_match('~^false$~i', $this->yystack[$this->yyidx + 0]->minor)) {
- $this->_retvalue = array($this->yystack[$this->yyidx + -2]->minor=>'false');
- } elseif (preg_match('~^null$~i', $this->yystack[$this->yyidx + 0]->minor)) {
- $this->_retvalue = array($this->yystack[$this->yyidx + -2]->minor=>'null');
- } else {
- $this->_retvalue = array($this->yystack[$this->yyidx + -2]->minor=>"'".$this->yystack[$this->yyidx + 0]->minor."'");
- }
- }
-#line 2540 "smarty_internal_templateparser.php"
-#line 503 "smarty_internal_templateparser.y"
- function yy_r66(){
- $this->_retvalue = array(trim($this->yystack[$this->yyidx + -1]->minor," =\n\r\t")=>$this->yystack[$this->yyidx + 0]->minor);
- }
-#line 2545 "smarty_internal_templateparser.php"
-#line 511 "smarty_internal_templateparser.y"
- function yy_r68(){
- $this->_retvalue = "'".$this->yystack[$this->yyidx + 0]->minor."'";
- }
-#line 2550 "smarty_internal_templateparser.php"
-#line 523 "smarty_internal_templateparser.y"
- function yy_r71(){
- $this->_retvalue = array($this->yystack[$this->yyidx + -2]->minor=>$this->yystack[$this->yyidx + 0]->minor);
- }
-#line 2555 "smarty_internal_templateparser.php"
-#line 536 "smarty_internal_templateparser.y"
- function yy_r73(){
- $this->yystack[$this->yyidx + -2]->minor[]=$this->yystack[$this->yyidx + 0]->minor;
- $this->_retvalue = $this->yystack[$this->yyidx + -2]->minor;
- }
-#line 2561 "smarty_internal_templateparser.php"
-#line 541 "smarty_internal_templateparser.y"
- function yy_r74(){
- $this->_retvalue = array('var' => $this->yystack[$this->yyidx + -2]->minor, 'value'=>$this->yystack[$this->yyidx + 0]->minor);
- }
-#line 2566 "smarty_internal_templateparser.php"
-#line 569 "smarty_internal_templateparser.y"
- function yy_r79(){
- $this->_retvalue = '$_smarty_tpl->getStreamVariable(\''. $this->yystack[$this->yyidx + -2]->minor .'://'. $this->yystack[$this->yyidx + 0]->minor . '\')';
- }
-#line 2571 "smarty_internal_templateparser.php"
-#line 574 "smarty_internal_templateparser.y"
- function yy_r80(){
- $this->_retvalue = $this->yystack[$this->yyidx + -2]->minor . trim($this->yystack[$this->yyidx + -1]->minor) . $this->yystack[$this->yyidx + 0]->minor;
- }
-#line 2576 "smarty_internal_templateparser.php"
-#line 593 "smarty_internal_templateparser.y"
- function yy_r84(){
- $this->_retvalue = $this->compiler->compileTag('private_modifier',array(),array('value'=>$this->yystack[$this->yyidx + -1]->minor,'modifierlist'=>$this->yystack[$this->yyidx + 0]->minor));
- }
-#line 2581 "smarty_internal_templateparser.php"
-#line 599 "smarty_internal_templateparser.y"
- function yy_r85(){
- $this->_retvalue = $this->yystack[$this->yyidx + -2]->minor.$this->yystack[$this->yyidx + -1]->minor.$this->yystack[$this->yyidx + 0]->minor;
- }
-#line 2586 "smarty_internal_templateparser.php"
-#line 603 "smarty_internal_templateparser.y"
- function yy_r86(){
- $this->_retvalue = 'in_array('.$this->yystack[$this->yyidx + -2]->minor.','.$this->yystack[$this->yyidx + 0]->minor.')';
- }
-#line 2591 "smarty_internal_templateparser.php"
-#line 607 "smarty_internal_templateparser.y"
- function yy_r87(){
- $this->_retvalue = 'in_array('.$this->yystack[$this->yyidx + -2]->minor.',(array)'.$this->yystack[$this->yyidx + 0]->minor.')';
- }
-#line 2596 "smarty_internal_templateparser.php"
-#line 615 "smarty_internal_templateparser.y"
- function yy_r89(){
- $this->_retvalue = '!('.$this->yystack[$this->yyidx + -2]->minor.' % '.$this->yystack[$this->yyidx + 0]->minor.')';
- }
-#line 2601 "smarty_internal_templateparser.php"
-#line 619 "smarty_internal_templateparser.y"
- function yy_r90(){
- $this->_retvalue = '('.$this->yystack[$this->yyidx + -2]->minor.' % '.$this->yystack[$this->yyidx + 0]->minor.')';
- }
-#line 2606 "smarty_internal_templateparser.php"
-#line 623 "smarty_internal_templateparser.y"
- function yy_r91(){
- $this->_retvalue = '!(1 & '.$this->yystack[$this->yyidx + -1]->minor.')';
- }
-#line 2611 "smarty_internal_templateparser.php"
-#line 627 "smarty_internal_templateparser.y"
- function yy_r92(){
- $this->_retvalue = '(1 & '.$this->yystack[$this->yyidx + -1]->minor.')';
- }
-#line 2616 "smarty_internal_templateparser.php"
-#line 631 "smarty_internal_templateparser.y"
- function yy_r93(){
- $this->_retvalue = '!(1 & '.$this->yystack[$this->yyidx + -2]->minor.' / '.$this->yystack[$this->yyidx + 0]->minor.')';
- }
-#line 2621 "smarty_internal_templateparser.php"
-#line 635 "smarty_internal_templateparser.y"
- function yy_r94(){
- $this->_retvalue = '(1 & '.$this->yystack[$this->yyidx + -2]->minor.' / '.$this->yystack[$this->yyidx + 0]->minor.')';
- }
-#line 2626 "smarty_internal_templateparser.php"
-#line 659 "smarty_internal_templateparser.y"
- function yy_r100(){
- $this->prefix_number++;
- $this->compiler->prefix_code[] = '<?php $_tmp'.$this->prefix_number.'='.$this->yystack[$this->yyidx + 0]->minor.';?>';
- $this->_retvalue = $this->yystack[$this->yyidx + -2]->minor.$this->yystack[$this->yyidx + -1]->minor.'$_tmp'.$this->prefix_number;
- }
-#line 2633 "smarty_internal_templateparser.php"
-#line 668 "smarty_internal_templateparser.y"
- function yy_r101(){
- $this->_retvalue = $this->yystack[$this->yyidx + -6]->minor.' ? '. $this->compileVariable("'".$this->yystack[$this->yyidx + -2]->minor."'") . ' : '.$this->yystack[$this->yyidx + 0]->minor;
- }
-#line 2638 "smarty_internal_templateparser.php"
-#line 672 "smarty_internal_templateparser.y"
- function yy_r102(){
- $this->_retvalue = $this->yystack[$this->yyidx + -5]->minor.' ? '.$this->yystack[$this->yyidx + -2]->minor.' : '.$this->yystack[$this->yyidx + 0]->minor;
- }
-#line 2643 "smarty_internal_templateparser.php"
-#line 687 "smarty_internal_templateparser.y"
- function yy_r105(){
- $this->_retvalue = '!'.$this->yystack[$this->yyidx + 0]->minor;
- }
-#line 2648 "smarty_internal_templateparser.php"
-#line 708 "smarty_internal_templateparser.y"
- function yy_r110(){
- $this->_retvalue = $this->yystack[$this->yyidx + -2]->minor.'.'.$this->yystack[$this->yyidx + 0]->minor;
- }
-#line 2653 "smarty_internal_templateparser.php"
-#line 712 "smarty_internal_templateparser.y"
- function yy_r111(){
- $this->_retvalue = $this->yystack[$this->yyidx + -1]->minor.'.';
- }
-#line 2658 "smarty_internal_templateparser.php"
-#line 716 "smarty_internal_templateparser.y"
- function yy_r112(){
- $this->_retvalue = '.'.$this->yystack[$this->yyidx + 0]->minor;
- }
-#line 2663 "smarty_internal_templateparser.php"
-#line 721 "smarty_internal_templateparser.y"
- function yy_r113(){
- if (preg_match('~^true$~i', $this->yystack[$this->yyidx + 0]->minor)) {
- $this->_retvalue = 'true';
- } elseif (preg_match('~^false$~i', $this->yystack[$this->yyidx + 0]->minor)) {
- $this->_retvalue = 'false';
- } elseif (preg_match('~^null$~i', $this->yystack[$this->yyidx + 0]->minor)) {
- $this->_retvalue = 'null';
- } else {
- $this->_retvalue = "'".$this->yystack[$this->yyidx + 0]->minor."'";
- }
- }
-#line 2676 "smarty_internal_templateparser.php"
-#line 739 "smarty_internal_templateparser.y"
- function yy_r115(){
- $this->_retvalue = "(". $this->yystack[$this->yyidx + -1]->minor .")";
- }
-#line 2681 "smarty_internal_templateparser.php"
-#line 754 "smarty_internal_templateparser.y"
- function yy_r118(){
- if (!$this->security || isset($this->smarty->registered_classes[$this->yystack[$this->yyidx + -2]->minor]) || $this->smarty->security_policy->isTrustedStaticClass($this->yystack[$this->yyidx + -2]->minor, $this->compiler)) {
- if (isset($this->smarty->registered_classes[$this->yystack[$this->yyidx + -2]->minor])) {
- $this->_retvalue = $this->smarty->registered_classes[$this->yystack[$this->yyidx + -2]->minor].'::'.$this->yystack[$this->yyidx + 0]->minor;
+ #line 2659 "smarty_internal_templateparser.php"
+ #line 735 "smarty_internal_templateparser.y"
+ function yy_r109()
+ {
+ if (preg_match('~^true$~i', $this->yystack[$this->yyidx + 0]->minor)) {
+ $this->_retvalue = 'true';
+ } elseif (preg_match('~^false$~i', $this->yystack[$this->yyidx + 0]->minor)) {
+ $this->_retvalue = 'false';
+ } elseif (preg_match('~^null$~i', $this->yystack[$this->yyidx + 0]->minor)) {
+ $this->_retvalue = 'null';
} else {
- $this->_retvalue = $this->yystack[$this->yyidx + -2]->minor.'::'.$this->yystack[$this->yyidx + 0]->minor;
+ $this->_retvalue = "'" . $this->yystack[$this->yyidx + 0]->minor . "'";
}
- } else {
- $this->compiler->trigger_template_error ("static class '".$this->yystack[$this->yyidx + -2]->minor."' is undefined or not allowed by security setting");
- }
- }
-#line 2694 "smarty_internal_templateparser.php"
-#line 766 "smarty_internal_templateparser.y"
- function yy_r119(){
- if ($this->yystack[$this->yyidx + -2]->minor['var'] == '\'smarty\'') {
- $this->_retvalue = $this->compiler->compileTag('private_special_variable',array(),$this->yystack[$this->yyidx + -2]->minor['smarty_internal_index']).'::'.$this->yystack[$this->yyidx + 0]->minor;
- } else {
- $this->_retvalue = $this->compileVariable($this->yystack[$this->yyidx + -2]->minor['var']).$this->yystack[$this->yyidx + -2]->minor['smarty_internal_index'].'::'.$this->yystack[$this->yyidx + 0]->minor;
- }
- }
-#line 2703 "smarty_internal_templateparser.php"
-#line 775 "smarty_internal_templateparser.y"
- function yy_r120(){
- $this->prefix_number++;
- $this->compiler->prefix_code[] = '<?php ob_start();?>'.$this->yystack[$this->yyidx + 0]->minor.'<?php $_tmp'.$this->prefix_number.'=ob_get_clean();?>';
- $this->_retvalue = '$_tmp'.$this->prefix_number;
- }
-#line 2710 "smarty_internal_templateparser.php"
-#line 790 "smarty_internal_templateparser.y"
- function yy_r122(){
- if ($this->yystack[$this->yyidx + 0]->minor['var'] == '\'smarty\'') {
- $smarty_var = $this->compiler->compileTag('private_special_variable',array(),$this->yystack[$this->yyidx + 0]->minor['smarty_internal_index']);
- $this->_retvalue = $smarty_var;
- } else {
- // used for array reset,next,prev,end,current
- $this->last_variable = $this->yystack[$this->yyidx + 0]->minor['var'];
- $this->last_index = $this->yystack[$this->yyidx + 0]->minor['smarty_internal_index'];
- $this->_retvalue = $this->compileVariable($this->yystack[$this->yyidx + 0]->minor['var']).$this->yystack[$this->yyidx + 0]->minor['smarty_internal_index'];
- }
- }
-#line 2723 "smarty_internal_templateparser.php"
-#line 803 "smarty_internal_templateparser.y"
- function yy_r123(){
- $this->_retvalue = '$_smarty_tpl->tpl_vars['. $this->yystack[$this->yyidx + -2]->minor .']->'.$this->yystack[$this->yyidx + 0]->minor;
- }
-#line 2728 "smarty_internal_templateparser.php"
-#line 813 "smarty_internal_templateparser.y"
- function yy_r125(){
- $this->_retvalue = '$_smarty_tpl->getConfigVariable(\''. $this->yystack[$this->yyidx + -1]->minor .'\')';
- }
-#line 2733 "smarty_internal_templateparser.php"
-#line 817 "smarty_internal_templateparser.y"
- function yy_r126(){
- $this->_retvalue = '$_smarty_tpl->getConfigVariable('. $this->yystack[$this->yyidx + -1]->minor .')';
- }
-#line 2738 "smarty_internal_templateparser.php"
-#line 821 "smarty_internal_templateparser.y"
- function yy_r127(){
- $this->_retvalue = array('var'=>$this->yystack[$this->yyidx + -1]->minor, 'smarty_internal_index'=>$this->yystack[$this->yyidx + 0]->minor);
- }
-#line 2743 "smarty_internal_templateparser.php"
-#line 834 "smarty_internal_templateparser.y"
- function yy_r129(){
- return;
- }
-#line 2748 "smarty_internal_templateparser.php"
-#line 840 "smarty_internal_templateparser.y"
- function yy_r130(){
- $this->_retvalue = '['.$this->compileVariable($this->yystack[$this->yyidx + 0]->minor).']';
- }
-#line 2753 "smarty_internal_templateparser.php"
-#line 844 "smarty_internal_templateparser.y"
- function yy_r131(){
- $this->_retvalue = '['.$this->compileVariable($this->yystack[$this->yyidx + -2]->minor).'->'.$this->yystack[$this->yyidx + 0]->minor.']';
- }
-#line 2758 "smarty_internal_templateparser.php"
-#line 848 "smarty_internal_templateparser.y"
- function yy_r132(){
- $this->_retvalue = "['". $this->yystack[$this->yyidx + 0]->minor ."']";
- }
-#line 2763 "smarty_internal_templateparser.php"
-#line 852 "smarty_internal_templateparser.y"
- function yy_r133(){
- $this->_retvalue = "[". $this->yystack[$this->yyidx + 0]->minor ."]";
- }
-#line 2768 "smarty_internal_templateparser.php"
-#line 856 "smarty_internal_templateparser.y"
- function yy_r134(){
- $this->_retvalue = "[". $this->yystack[$this->yyidx + -1]->minor ."]";
- }
-#line 2773 "smarty_internal_templateparser.php"
-#line 861 "smarty_internal_templateparser.y"
- function yy_r135(){
- $this->_retvalue = '['.$this->compiler->compileTag('private_special_variable',array(),'[\'section\'][\''.$this->yystack[$this->yyidx + -1]->minor.'\'][\'index\']').']';
- }
-#line 2778 "smarty_internal_templateparser.php"
-#line 865 "smarty_internal_templateparser.y"
- function yy_r136(){
- $this->_retvalue = '['.$this->compiler->compileTag('private_special_variable',array(),'[\'section\'][\''.$this->yystack[$this->yyidx + -3]->minor.'\'][\''.$this->yystack[$this->yyidx + -1]->minor.'\']').']';
- }
-#line 2783 "smarty_internal_templateparser.php"
-#line 875 "smarty_internal_templateparser.y"
- function yy_r138(){
- $this->_retvalue = '[]';
- }
-#line 2788 "smarty_internal_templateparser.php"
-#line 888 "smarty_internal_templateparser.y"
- function yy_r140(){
- $this->_retvalue = $this->yystack[$this->yyidx + -1]->minor.'.'.$this->yystack[$this->yyidx + 0]->minor;
- }
-#line 2793 "smarty_internal_templateparser.php"
-#line 893 "smarty_internal_templateparser.y"
- function yy_r141(){
- $this->_retvalue = '\''.$this->yystack[$this->yyidx + 0]->minor.'\'';
- }
-#line 2798 "smarty_internal_templateparser.php"
-#line 898 "smarty_internal_templateparser.y"
- function yy_r142(){
- $this->_retvalue = '('.$this->yystack[$this->yyidx + -1]->minor.')';
- }
-#line 2803 "smarty_internal_templateparser.php"
-#line 905 "smarty_internal_templateparser.y"
- function yy_r143(){
- if ($this->yystack[$this->yyidx + -1]->minor['var'] == '\'smarty\'') {
- $this->_retvalue = $this->compiler->compileTag('private_special_variable',array(),$this->yystack[$this->yyidx + -1]->minor['smarty_internal_index']).$this->yystack[$this->yyidx + 0]->minor;
- } else {
- $this->_retvalue = $this->compileVariable($this->yystack[$this->yyidx + -1]->minor['var']).$this->yystack[$this->yyidx + -1]->minor['smarty_internal_index'].$this->yystack[$this->yyidx + 0]->minor;
- }
- }
-#line 2812 "smarty_internal_templateparser.php"
-#line 914 "smarty_internal_templateparser.y"
- function yy_r144(){
- $this->_retvalue = $this->yystack[$this->yyidx + 0]->minor;
- }
-#line 2817 "smarty_internal_templateparser.php"
-#line 919 "smarty_internal_templateparser.y"
- function yy_r145(){
- $this->_retvalue = $this->yystack[$this->yyidx + -1]->minor.$this->yystack[$this->yyidx + 0]->minor;
- }
-#line 2822 "smarty_internal_templateparser.php"
-#line 924 "smarty_internal_templateparser.y"
- function yy_r146(){
- if ($this->security && substr($this->yystack[$this->yyidx + -1]->minor,0,1) == '_') {
- $this->compiler->trigger_template_error (self::Err1);
- }
- $this->_retvalue = '->'.$this->yystack[$this->yyidx + -1]->minor.$this->yystack[$this->yyidx + 0]->minor;
- }
-#line 2830 "smarty_internal_templateparser.php"
-#line 931 "smarty_internal_templateparser.y"
- function yy_r147(){
- if ($this->security) {
- $this->compiler->trigger_template_error (self::Err2);
- }
- $this->_retvalue = '->{'.$this->compileVariable($this->yystack[$this->yyidx + -1]->minor).$this->yystack[$this->yyidx + 0]->minor.'}';
- }
-#line 2838 "smarty_internal_templateparser.php"
-#line 938 "smarty_internal_templateparser.y"
- function yy_r148(){
- if ($this->security) {
- $this->compiler->trigger_template_error (self::Err2);
- }
- $this->_retvalue = '->{'.$this->yystack[$this->yyidx + -2]->minor.$this->yystack[$this->yyidx + 0]->minor.'}';
- }
-#line 2846 "smarty_internal_templateparser.php"
-#line 945 "smarty_internal_templateparser.y"
- function yy_r149(){
- if ($this->security) {
- $this->compiler->trigger_template_error (self::Err2);
- }
- $this->_retvalue = '->{\''.$this->yystack[$this->yyidx + -4]->minor.'\'.'.$this->yystack[$this->yyidx + -2]->minor.$this->yystack[$this->yyidx + 0]->minor.'}';
- }
-#line 2854 "smarty_internal_templateparser.php"
-#line 953 "smarty_internal_templateparser.y"
- function yy_r150(){
- $this->_retvalue = '->'.$this->yystack[$this->yyidx + 0]->minor;
- }
-#line 2859 "smarty_internal_templateparser.php"
-#line 961 "smarty_internal_templateparser.y"
- function yy_r151(){
- if (!$this->security || $this->smarty->security_policy->isTrustedPhpFunction($this->yystack[$this->yyidx + -3]->minor, $this->compiler)) {
- if (strcasecmp($this->yystack[$this->yyidx + -3]->minor,'isset') === 0 || strcasecmp($this->yystack[$this->yyidx + -3]->minor,'empty') === 0 || strcasecmp($this->yystack[$this->yyidx + -3]->minor,'array') === 0 || is_callable($this->yystack[$this->yyidx + -3]->minor)) {
- $func_name = strtolower($this->yystack[$this->yyidx + -3]->minor);
- if ($func_name == 'isset') {
- if (count($this->yystack[$this->yyidx + -1]->minor) == 0) {
- $this->compiler->trigger_template_error ('Illegal number of paramer in "isset()"');
- }
- $par = implode(',',$this->yystack[$this->yyidx + -1]->minor);
- if (strncasecmp($par,'$_smarty_tpl->getConfigVariable',strlen('$_smarty_tpl->getConfigVariable')) === 0) {
- $this->prefix_number++;
- $this->compiler->prefix_code[] = '<?php $_tmp'.$this->prefix_number.'='.str_replace(')',', false)',$par).';?>';
- $isset_par = '$_tmp'.$this->prefix_number;
- } else {
- $isset_par=str_replace("')->value","',null,true,false)->value",$par);
- }
- $this->_retvalue = $this->yystack[$this->yyidx + -3]->minor . "(". $isset_par .")";
- } elseif (in_array($func_name,array('empty','reset','current','end','prev','next'))){
- if (count($this->yystack[$this->yyidx + -1]->minor) != 1) {
- $this->compiler->trigger_template_error ('Illegal number of paramer in "empty()"');
- }
- if ($func_name == 'empty') {
- $this->_retvalue = $func_name.'('.str_replace("')->value","',null,true,false)->value",$this->yystack[$this->yyidx + -1]->minor[0]).')';
+ }
+ #line 2672 "smarty_internal_templateparser.php"
+ #line 753 "smarty_internal_templateparser.y"
+ function yy_r111()
+ {
+ $this->_retvalue = "(" . $this->yystack[$this->yyidx + - 1]->minor . ")";
+ }
+ #line 2677 "smarty_internal_templateparser.php"
+ #line 768 "smarty_internal_templateparser.y"
+ function yy_r114()
+ {
+ if (!$this->security || isset($this->smarty->registered_classes[$this->yystack[$this->yyidx + - 2]->minor]) || $this->smarty->security_policy->isTrustedStaticClass($this->yystack[$this->yyidx + - 2]->minor, $this->compiler)) {
+ if (isset($this->smarty->registered_classes[$this->yystack[$this->yyidx + - 2]->minor])) {
+ $this->_retvalue = $this->smarty->registered_classes[$this->yystack[$this->yyidx + - 2]->minor] . '::' . $this->yystack[$this->yyidx + 0]->minor;
+ } else {
+ $this->_retvalue = $this->yystack[$this->yyidx + - 2]->minor . '::' . $this->yystack[$this->yyidx + 0]->minor;
+ }
+ } else {
+ $this->compiler->trigger_template_error("static class '" . $this->yystack[$this->yyidx + - 2]->minor . "' is undefined or not allowed by security setting");
+ }
+ }
+ #line 2690 "smarty_internal_templateparser.php"
+ #line 780 "smarty_internal_templateparser.y"
+ function yy_r115()
+ {
+ if ($this->yystack[$this->yyidx + - 2]->minor['var'] == '\'smarty\'') {
+ $this->_retvalue = $this->compiler->compileTag('private_special_variable', array(), $this->yystack[$this->yyidx + - 2]->minor['smarty_internal_index']) . '::' . $this->yystack[$this->yyidx + 0]->minor;
+ } else {
+ $this->_retvalue = $this->compileVariable($this->yystack[$this->yyidx + - 2]->minor['var']) . $this->yystack[$this->yyidx + - 2]->minor['smarty_internal_index'] . '::' . $this->yystack[$this->yyidx + 0]->minor;
+ }
+ }
+ #line 2699 "smarty_internal_templateparser.php"
+ #line 789 "smarty_internal_templateparser.y"
+ function yy_r116()
+ {
+ self::$prefix_number ++;
+ $this->compiler->prefix_code[] = '<?php ob_start();?>' . $this->yystack[$this->yyidx + - 1]->minor . '<?php $_tmp' . self::$prefix_number . '=ob_get_clean();?>';
+ $this->_retvalue = '$_tmp' . self::$prefix_number;
+ }
+ #line 2706 "smarty_internal_templateparser.php"
+ #line 804 "smarty_internal_templateparser.y"
+ function yy_r118()
+ {
+ if ($this->yystack[$this->yyidx + 0]->minor['var'] == '\'smarty\'') {
+ $smarty_var = $this->compiler->compileTag('private_special_variable', array(), $this->yystack[$this->yyidx + 0]->minor['smarty_internal_index']);
+ $this->_retvalue = $smarty_var;
+ } else {
+ // used for array reset,next,prev,end,current
+ $this->last_variable = $this->yystack[$this->yyidx + 0]->minor['var'];
+ $this->last_index = $this->yystack[$this->yyidx + 0]->minor['smarty_internal_index'];
+ $this->_retvalue = $this->compileVariable($this->yystack[$this->yyidx + 0]->minor['var']) . $this->yystack[$this->yyidx + 0]->minor['smarty_internal_index'];
+ }
+ }
+ #line 2719 "smarty_internal_templateparser.php"
+ #line 817 "smarty_internal_templateparser.y"
+ function yy_r119()
+ {
+ $this->_retvalue = '$_smarty_tpl->tpl_vars[' . $this->yystack[$this->yyidx + - 2]->minor . ']->' . $this->yystack[$this->yyidx + 0]->minor;
+ }
+ #line 2724 "smarty_internal_templateparser.php"
+ #line 827 "smarty_internal_templateparser.y"
+ function yy_r121()
+ {
+ $this->_retvalue = '$_smarty_tpl->getConfigVariable(\'' . $this->yystack[$this->yyidx + - 1]->minor . '\')';
+ }
+ #line 2729 "smarty_internal_templateparser.php"
+ #line 831 "smarty_internal_templateparser.y"
+ function yy_r122()
+ {
+ $this->_retvalue = '(is_array($tmp = $_smarty_tpl->getConfigVariable(\'' . $this->yystack[$this->yyidx + - 2]->minor . '\')) ? $tmp' . $this->yystack[$this->yyidx + 0]->minor . ' :null)';
+ }
+ #line 2734 "smarty_internal_templateparser.php"
+ #line 835 "smarty_internal_templateparser.y"
+ function yy_r123()
+ {
+ $this->_retvalue = '$_smarty_tpl->getConfigVariable(' . $this->yystack[$this->yyidx + - 1]->minor . ')';
+ }
+ #line 2739 "smarty_internal_templateparser.php"
+ #line 839 "smarty_internal_templateparser.y"
+ function yy_r124()
+ {
+ $this->_retvalue = '(is_array($tmp = $_smarty_tpl->getConfigVariable(' . $this->yystack[$this->yyidx + - 2]->minor . ')) ? $tmp' . $this->yystack[$this->yyidx + 0]->minor . ' : null)';
+ }
+ #line 2744 "smarty_internal_templateparser.php"
+ #line 843 "smarty_internal_templateparser.y"
+ function yy_r125()
+ {
+ $this->_retvalue = array('var' => $this->yystack[$this->yyidx + - 1]->minor, 'smarty_internal_index' => $this->yystack[$this->yyidx + 0]->minor);
+ }
+ #line 2749 "smarty_internal_templateparser.php"
+ #line 856 "smarty_internal_templateparser.y"
+ function yy_r127()
+ {
+ return;
+ }
+ #line 2754 "smarty_internal_templateparser.php"
+ #line 862 "smarty_internal_templateparser.y"
+ function yy_r128()
+ {
+ $this->_retvalue = '[' . $this->compileVariable($this->yystack[$this->yyidx + 0]->minor) . ']';
+ }
+ #line 2759 "smarty_internal_templateparser.php"
+ #line 866 "smarty_internal_templateparser.y"
+ function yy_r129()
+ {
+ $this->_retvalue = '[' . $this->compileVariable($this->yystack[$this->yyidx + - 2]->minor) . '->' . $this->yystack[$this->yyidx + 0]->minor . ']';
+ }
+ #line 2764 "smarty_internal_templateparser.php"
+ #line 870 "smarty_internal_templateparser.y"
+ function yy_r130()
+ {
+ $this->_retvalue = "['" . $this->yystack[$this->yyidx + 0]->minor . "']";
+ }
+ #line 2769 "smarty_internal_templateparser.php"
+ #line 874 "smarty_internal_templateparser.y"
+ function yy_r131()
+ {
+ $this->_retvalue = "[" . $this->yystack[$this->yyidx + 0]->minor . "]";
+ }
+ #line 2774 "smarty_internal_templateparser.php"
+ #line 878 "smarty_internal_templateparser.y"
+ function yy_r132()
+ {
+ $this->_retvalue = "[" . $this->yystack[$this->yyidx + - 1]->minor . "]";
+ }
+ #line 2779 "smarty_internal_templateparser.php"
+ #line 883 "smarty_internal_templateparser.y"
+ function yy_r133()
+ {
+ $this->_retvalue = '[' . $this->compiler->compileTag('private_special_variable', array(), '[\'section\'][\'' . $this->yystack[$this->yyidx + - 1]->minor . '\'][\'index\']') . ']';
+ }
+ #line 2784 "smarty_internal_templateparser.php"
+ #line 887 "smarty_internal_templateparser.y"
+ function yy_r134()
+ {
+ $this->_retvalue = '[' . $this->compiler->compileTag('private_special_variable', array(), '[\'section\'][\'' . $this->yystack[$this->yyidx + - 3]->minor . '\'][\'' . $this->yystack[$this->yyidx + - 1]->minor . '\']') . ']';
+ }
+ #line 2789 "smarty_internal_templateparser.php"
+ #line 897 "smarty_internal_templateparser.y"
+ function yy_r136()
+ {
+ $this->_retvalue = '[]';
+ }
+ #line 2794 "smarty_internal_templateparser.php"
+ #line 910 "smarty_internal_templateparser.y"
+ function yy_r138()
+ {
+ $this->_retvalue = $this->yystack[$this->yyidx + - 1]->minor . '.' . $this->yystack[$this->yyidx + 0]->minor;
+ }
+ #line 2799 "smarty_internal_templateparser.php"
+ #line 915 "smarty_internal_templateparser.y"
+ function yy_r139()
+ {
+ $this->_retvalue = '\'' . $this->yystack[$this->yyidx + 0]->minor . '\'';
+ }
+ #line 2804 "smarty_internal_templateparser.php"
+ #line 920 "smarty_internal_templateparser.y"
+ function yy_r140()
+ {
+ $this->_retvalue = '(' . $this->yystack[$this->yyidx + - 1]->minor . ')';
+ }
+ #line 2809 "smarty_internal_templateparser.php"
+ #line 927 "smarty_internal_templateparser.y"
+ function yy_r141()
+ {
+ if ($this->yystack[$this->yyidx + - 1]->minor['var'] == '\'smarty\'') {
+ $this->_retvalue = $this->compiler->compileTag('private_special_variable', array(), $this->yystack[$this->yyidx + - 1]->minor['smarty_internal_index']) . $this->yystack[$this->yyidx + 0]->minor;
+ } else {
+ $this->_retvalue = $this->compileVariable($this->yystack[$this->yyidx + - 1]->minor['var']) . $this->yystack[$this->yyidx + - 1]->minor['smarty_internal_index'] . $this->yystack[$this->yyidx + 0]->minor;
+ }
+ }
+ #line 2818 "smarty_internal_templateparser.php"
+ #line 936 "smarty_internal_templateparser.y"
+ function yy_r142()
+ {
+ $this->_retvalue = $this->yystack[$this->yyidx + 0]->minor;
+ }
+ #line 2823 "smarty_internal_templateparser.php"
+ #line 941 "smarty_internal_templateparser.y"
+ function yy_r143()
+ {
+ $this->_retvalue = $this->yystack[$this->yyidx + - 1]->minor . $this->yystack[$this->yyidx + 0]->minor;
+ }
+ #line 2828 "smarty_internal_templateparser.php"
+ #line 946 "smarty_internal_templateparser.y"
+ function yy_r144()
+ {
+ if ($this->security && substr($this->yystack[$this->yyidx + - 1]->minor, 0, 1) == '_') {
+ $this->compiler->trigger_template_error(self::Err1);
+ }
+ $this->_retvalue = '->' . $this->yystack[$this->yyidx + - 1]->minor . $this->yystack[$this->yyidx + 0]->minor;
+ }
+ #line 2836 "smarty_internal_templateparser.php"
+ #line 953 "smarty_internal_templateparser.y"
+ function yy_r145()
+ {
+ if ($this->security) {
+ $this->compiler->trigger_template_error(self::Err2);
+ }
+ $this->_retvalue = '->{' . $this->compileVariable($this->yystack[$this->yyidx + - 1]->minor) . $this->yystack[$this->yyidx + 0]->minor . '}';
+ }
+ #line 2844 "smarty_internal_templateparser.php"
+ #line 960 "smarty_internal_templateparser.y"
+ function yy_r146()
+ {
+ if ($this->security) {
+ $this->compiler->trigger_template_error(self::Err2);
+ }
+ $this->_retvalue = '->{' . $this->yystack[$this->yyidx + - 2]->minor . $this->yystack[$this->yyidx + 0]->minor . '}';
+ }
+ #line 2852 "smarty_internal_templateparser.php"
+ #line 967 "smarty_internal_templateparser.y"
+ function yy_r147()
+ {
+ if ($this->security) {
+ $this->compiler->trigger_template_error(self::Err2);
+ }
+ $this->_retvalue = '->{\'' . $this->yystack[$this->yyidx + - 4]->minor . '\'.' . $this->yystack[$this->yyidx + - 2]->minor . $this->yystack[$this->yyidx + 0]->minor . '}';
+ }
+ #line 2860 "smarty_internal_templateparser.php"
+ #line 975 "smarty_internal_templateparser.y"
+ function yy_r148()
+ {
+ $this->_retvalue = '->' . $this->yystack[$this->yyidx + 0]->minor;
+ }
+ #line 2865 "smarty_internal_templateparser.php"
+ #line 983 "smarty_internal_templateparser.y"
+ function yy_r149()
+ {
+ if (!$this->security || $this->smarty->security_policy->isTrustedPhpFunction($this->yystack[$this->yyidx + - 3]->minor, $this->compiler)) {
+ if (strcasecmp($this->yystack[$this->yyidx + - 3]->minor, 'isset') === 0 || strcasecmp($this->yystack[$this->yyidx + - 3]->minor, 'empty') === 0 || strcasecmp($this->yystack[$this->yyidx + - 3]->minor, 'array') === 0 || is_callable($this->yystack[$this->yyidx + - 3]->minor)) {
+ $func_name = strtolower($this->yystack[$this->yyidx + - 3]->minor);
+ if ($func_name == 'isset') {
+ if (count($this->yystack[$this->yyidx + - 1]->minor) == 0) {
+ $this->compiler->trigger_template_error('Illegal number of paramer in "isset()"');
+ }
+ $par = implode(',', $this->yystack[$this->yyidx + - 1]->minor);
+ if (strncasecmp($par, '$_smarty_tpl->getConfigVariable', strlen('$_smarty_tpl->getConfigVariable')) === 0) {
+ self::$prefix_number ++;
+ $this->compiler->prefix_code[] = '<?php $_tmp' . self::$prefix_number . '=' . str_replace(')', ', false)', $par) . ';?>';
+ $isset_par = '$_tmp' . self::$prefix_number;
+ } else {
+ $isset_par = str_replace("')->value", "',null,true,false)->value", $par);
+ }
+ $this->_retvalue = $this->yystack[$this->yyidx + - 3]->minor . "(" . $isset_par . ")";
+ } elseif (in_array($func_name, array('empty', 'reset', 'current', 'end', 'prev', 'next'))) {
+ if (count($this->yystack[$this->yyidx + - 1]->minor) != 1) {
+ $this->compiler->trigger_template_error('Illegal number of paramer in "empty()"');
+ }
+ if ($func_name == 'empty') {
+ $this->_retvalue = $func_name . '(' . str_replace("')->value", "',null,true,false)->value", $this->yystack[$this->yyidx + - 1]->minor[0]) . ')';
+ } else {
+ $this->_retvalue = $func_name . '(' . $this->yystack[$this->yyidx + - 1]->minor[0] . ')';
+ }
} else {
- $this->_retvalue = $func_name.'('.$this->yystack[$this->yyidx + -1]->minor[0].')';
+ $this->_retvalue = $this->yystack[$this->yyidx + - 3]->minor . "(" . implode(',', $this->yystack[$this->yyidx + - 1]->minor) . ")";
}
} else {
- $this->_retvalue = $this->yystack[$this->yyidx + -3]->minor . "(". implode(',',$this->yystack[$this->yyidx + -1]->minor) .")";
+ $this->compiler->trigger_template_error("unknown function \"" . $this->yystack[$this->yyidx + - 3]->minor . "\"");
}
- } else {
- $this->compiler->trigger_template_error ("unknown function \"" . $this->yystack[$this->yyidx + -3]->minor . "\"");
}
}
+ #line 2901 "smarty_internal_templateparser.php"
+ #line 1021 "smarty_internal_templateparser.y"
+ function yy_r150()
+ {
+ if ($this->security && substr($this->yystack[$this->yyidx + - 3]->minor, 0, 1) == '_') {
+ $this->compiler->trigger_template_error(self::Err1);
+ }
+ $this->_retvalue = $this->yystack[$this->yyidx + - 3]->minor . "(" . implode(',', $this->yystack[$this->yyidx + - 1]->minor) . ")";
+ }
+ #line 2909 "smarty_internal_templateparser.php"
+ #line 1028 "smarty_internal_templateparser.y"
+ function yy_r151()
+ {
+ if ($this->security) {
+ $this->compiler->trigger_template_error(self::Err2);
+ }
+ self::$prefix_number ++;
+ $this->compiler->prefix_code[] = '<?php $_tmp' . self::$prefix_number . '=' . $this->compileVariable("'" . $this->yystack[$this->yyidx + - 3]->minor . "'") . ';?>';
+ $this->_retvalue = '$_tmp' . self::$prefix_number . '(' . implode(',', $this->yystack[$this->yyidx + - 1]->minor) . ')';
+ }
+ #line 2919 "smarty_internal_templateparser.php"
+ #line 1039 "smarty_internal_templateparser.y"
+ function yy_r152()
+ {
+ $this->_retvalue = array_merge($this->yystack[$this->yyidx + - 2]->minor, array($this->yystack[$this->yyidx + 0]->minor));
+ }
+ #line 2924 "smarty_internal_templateparser.php"
+ #line 1056 "smarty_internal_templateparser.y"
+ function yy_r155()
+ {
+ $this->_retvalue = array_merge($this->yystack[$this->yyidx + - 2]->minor, array(array_merge($this->yystack[$this->yyidx + - 1]->minor, $this->yystack[$this->yyidx + 0]->minor)));
+ }
+ #line 2929 "smarty_internal_templateparser.php"
+ #line 1060 "smarty_internal_templateparser.y"
+ function yy_r156()
+ {
+ $this->_retvalue = array(array_merge($this->yystack[$this->yyidx + - 1]->minor, $this->yystack[$this->yyidx + 0]->minor));
+ }
+ #line 2934 "smarty_internal_templateparser.php"
+ #line 1068 "smarty_internal_templateparser.y"
+ function yy_r158()
+ {
+ $this->_retvalue = array($this->yystack[$this->yyidx + 0]->minor);
+ }
+ #line 2939 "smarty_internal_templateparser.php"
+ #line 1076 "smarty_internal_templateparser.y"
+ function yy_r159()
+ {
+ $this->_retvalue = array_merge($this->yystack[$this->yyidx + - 1]->minor, $this->yystack[$this->yyidx + 0]->minor);
+ }
+ #line 2944 "smarty_internal_templateparser.php"
+ #line 1110 "smarty_internal_templateparser.y"
+ function yy_r166()
+ {
+ $this->_retvalue = '$' . $this->yystack[$this->yyidx + - 1]->minor . $this->yystack[$this->yyidx + 0]->minor;
+ }
+ #line 2949 "smarty_internal_templateparser.php"
+ #line 1115 "smarty_internal_templateparser.y"
+ function yy_r167()
+ {
+ $this->_retvalue = '$' . $this->yystack[$this->yyidx + - 2]->minor . $this->yystack[$this->yyidx + - 1]->minor . $this->yystack[$this->yyidx + 0]->minor;
+ }
+ #line 2954 "smarty_internal_templateparser.php"
+ #line 1121 "smarty_internal_templateparser.y"
+ function yy_r168()
+ {
+ $this->_retvalue = '==';
+ }
+ #line 2959 "smarty_internal_templateparser.php"
+ #line 1125 "smarty_internal_templateparser.y"
+ function yy_r169()
+ {
+ $this->_retvalue = '!=';
+ }
+ #line 2964 "smarty_internal_templateparser.php"
+ #line 1129 "smarty_internal_templateparser.y"
+ function yy_r170()
+ {
+ $this->_retvalue = '>';
+ }
+ #line 2969 "smarty_internal_templateparser.php"
+ #line 1133 "smarty_internal_templateparser.y"
+ function yy_r171()
+ {
+ $this->_retvalue = '<';
+ }
+ #line 2974 "smarty_internal_templateparser.php"
+ #line 1137 "smarty_internal_templateparser.y"
+ function yy_r172()
+ {
+ $this->_retvalue = '>=';
+ }
+ #line 2979 "smarty_internal_templateparser.php"
+ #line 1141 "smarty_internal_templateparser.y"
+ function yy_r173()
+ {
+ $this->_retvalue = '<=';
+ }
+ #line 2984 "smarty_internal_templateparser.php"
+ #line 1145 "smarty_internal_templateparser.y"
+ function yy_r174()
+ {
+ $this->_retvalue = '===';
+ }
+ #line 2989 "smarty_internal_templateparser.php"
+ #line 1149 "smarty_internal_templateparser.y"
+ function yy_r175()
+ {
+ $this->_retvalue = '!==';
+ }
+ #line 2994 "smarty_internal_templateparser.php"
+ #line 1153 "smarty_internal_templateparser.y"
+ function yy_r176()
+ {
+ $this->_retvalue = '%';
+ }
+ #line 2999 "smarty_internal_templateparser.php"
+ #line 1157 "smarty_internal_templateparser.y"
+ function yy_r177()
+ {
+ $this->_retvalue = '&&';
+ }
+ #line 3004 "smarty_internal_templateparser.php"
+ #line 1161 "smarty_internal_templateparser.y"
+ function yy_r178()
+ {
+ $this->_retvalue = '||';
+ }
+ #line 3009 "smarty_internal_templateparser.php"
+ #line 1165 "smarty_internal_templateparser.y"
+ function yy_r179()
+ {
+ $this->_retvalue = ' XOR ';
+ }
+ #line 3014 "smarty_internal_templateparser.php"
+ #line 1172 "smarty_internal_templateparser.y"
+ function yy_r180()
+ {
+ $this->_retvalue = 'array(' . $this->yystack[$this->yyidx + - 1]->minor . ')';
+ }
+ #line 3019 "smarty_internal_templateparser.php"
+ #line 1180 "smarty_internal_templateparser.y"
+ function yy_r182()
+ {
+ $this->_retvalue = $this->yystack[$this->yyidx + - 2]->minor . ',' . $this->yystack[$this->yyidx + 0]->minor;
+ }
+ #line 3024 "smarty_internal_templateparser.php"
+ #line 1188 "smarty_internal_templateparser.y"
+ function yy_r184()
+ {
+ $this->_retvalue = $this->yystack[$this->yyidx + - 2]->minor . '=>' . $this->yystack[$this->yyidx + 0]->minor;
+ }
+ #line 3029 "smarty_internal_templateparser.php"
+ #line 1192 "smarty_internal_templateparser.y"
+ function yy_r185()
+ {
+ $this->_retvalue = '\'' . $this->yystack[$this->yyidx + - 2]->minor . '\'=>' . $this->yystack[$this->yyidx + 0]->minor;
+ }
+ #line 3034 "smarty_internal_templateparser.php"
+ #line 1204 "smarty_internal_templateparser.y"
+ function yy_r187()
+ {
+ $this->_retvalue = "''";
+ }
+ #line 3039 "smarty_internal_templateparser.php"
+ #line 1208 "smarty_internal_templateparser.y"
+ function yy_r188()
+ {
+ $this->_retvalue = $this->yystack[$this->yyidx + - 1]->minor->to_smarty_php();
+ }
+ #line 3044 "smarty_internal_templateparser.php"
+ #line 1213 "smarty_internal_templateparser.y"
+ function yy_r189()
+ {
+ $this->yystack[$this->yyidx + - 1]->minor->append_subtree($this->yystack[$this->yyidx + 0]->minor);
+ $this->_retvalue = $this->yystack[$this->yyidx + - 1]->minor;
+ }
+ #line 3050 "smarty_internal_templateparser.php"
+ #line 1218 "smarty_internal_templateparser.y"
+ function yy_r190()
+ {
+ $this->_retvalue = new _smarty_doublequoted($this, $this->yystack[$this->yyidx + 0]->minor);
+ }
+ #line 3055 "smarty_internal_templateparser.php"
+ #line 1222 "smarty_internal_templateparser.y"
+ function yy_r191()
+ {
+ $this->_retvalue = new _smarty_code($this, '(string)' . $this->yystack[$this->yyidx + - 1]->minor);
+ }
+ #line 3060 "smarty_internal_templateparser.php"
+ #line 1230 "smarty_internal_templateparser.y"
+ function yy_r193()
+ {
+ $this->_retvalue = new _smarty_code($this, '(string)$_smarty_tpl->tpl_vars[\'' . substr($this->yystack[$this->yyidx + 0]->minor, 1) . '\']->value');
+ }
+ #line 3065 "smarty_internal_templateparser.php"
+ #line 1238 "smarty_internal_templateparser.y"
+ function yy_r195()
+ {
+ $this->_retvalue = new _smarty_code($this, '(string)(' . $this->yystack[$this->yyidx + - 1]->minor . ')');
+ }
+ #line 3070 "smarty_internal_templateparser.php"
+ #line 1242 "smarty_internal_templateparser.y"
+ function yy_r196()
+ {
+ $this->_retvalue = new _smarty_tag($this, $this->yystack[$this->yyidx + - 1]->minor);
+ }
+ #line 3075 "smarty_internal_templateparser.php"
+ #line 1246 "smarty_internal_templateparser.y"
+ function yy_r197()
+ {
+ $this->_retvalue = new _smarty_dq_content($this, $this->yystack[$this->yyidx + 0]->minor);
}
-#line 2895 "smarty_internal_templateparser.php"
-#line 999 "smarty_internal_templateparser.y"
- function yy_r152(){
- if ($this->security && substr($this->yystack[$this->yyidx + -3]->minor,0,1) == '_') {
- $this->compiler->trigger_template_error (self::Err1);
- }
- $this->_retvalue = $this->yystack[$this->yyidx + -3]->minor . "(". implode(',',$this->yystack[$this->yyidx + -1]->minor) .")";
- }
-#line 2903 "smarty_internal_templateparser.php"
-#line 1006 "smarty_internal_templateparser.y"
- function yy_r153(){
- if ($this->security) {
- $this->compiler->trigger_template_error (self::Err2);
- }
- $this->prefix_number++;
- $this->compiler->prefix_code[] = '<?php $_tmp'.$this->prefix_number.'='.$this->compileVariable("'".$this->yystack[$this->yyidx + -3]->minor."'").';?>';
- $this->_retvalue = '$_tmp'.$this->prefix_number.'('. implode(',',$this->yystack[$this->yyidx + -1]->minor) .')';
- }
-#line 2913 "smarty_internal_templateparser.php"
-#line 1017 "smarty_internal_templateparser.y"
- function yy_r154(){
- $this->_retvalue = array_merge($this->yystack[$this->yyidx + -2]->minor,array($this->yystack[$this->yyidx + 0]->minor));
- }
-#line 2918 "smarty_internal_templateparser.php"
-#line 1034 "smarty_internal_templateparser.y"
- function yy_r157(){
- $this->_retvalue = array_merge($this->yystack[$this->yyidx + -2]->minor,array(array_merge($this->yystack[$this->yyidx + -1]->minor,$this->yystack[$this->yyidx + 0]->minor)));
- }
-#line 2923 "smarty_internal_templateparser.php"
-#line 1038 "smarty_internal_templateparser.y"
- function yy_r158(){
- $this->_retvalue = array(array_merge($this->yystack[$this->yyidx + -1]->minor,$this->yystack[$this->yyidx + 0]->minor));
- }
-#line 2928 "smarty_internal_templateparser.php"
-#line 1046 "smarty_internal_templateparser.y"
- function yy_r160(){
- $this->_retvalue = array($this->yystack[$this->yyidx + 0]->minor);
- }
-#line 2933 "smarty_internal_templateparser.php"
-#line 1054 "smarty_internal_templateparser.y"
- function yy_r161(){
- $this->_retvalue = array_merge($this->yystack[$this->yyidx + -1]->minor,$this->yystack[$this->yyidx + 0]->minor);
- }
-#line 2938 "smarty_internal_templateparser.php"
-#line 1088 "smarty_internal_templateparser.y"
- function yy_r168(){
- $this->_retvalue = '$'.$this->yystack[$this->yyidx + -1]->minor.$this->yystack[$this->yyidx + 0]->minor;
- }
-#line 2943 "smarty_internal_templateparser.php"
-#line 1093 "smarty_internal_templateparser.y"
- function yy_r169(){
- $this->_retvalue = '$'.$this->yystack[$this->yyidx + -2]->minor.$this->yystack[$this->yyidx + -1]->minor.$this->yystack[$this->yyidx + 0]->minor;
- }
-#line 2948 "smarty_internal_templateparser.php"
-#line 1099 "smarty_internal_templateparser.y"
- function yy_r170(){
- $this->_retvalue = '==';
- }
-#line 2953 "smarty_internal_templateparser.php"
-#line 1103 "smarty_internal_templateparser.y"
- function yy_r171(){
- $this->_retvalue = '!=';
- }
-#line 2958 "smarty_internal_templateparser.php"
-#line 1107 "smarty_internal_templateparser.y"
- function yy_r172(){
- $this->_retvalue = '>';
- }
-#line 2963 "smarty_internal_templateparser.php"
-#line 1111 "smarty_internal_templateparser.y"
- function yy_r173(){
- $this->_retvalue = '<';
- }
-#line 2968 "smarty_internal_templateparser.php"
-#line 1115 "smarty_internal_templateparser.y"
- function yy_r174(){
- $this->_retvalue = '>=';
- }
-#line 2973 "smarty_internal_templateparser.php"
-#line 1119 "smarty_internal_templateparser.y"
- function yy_r175(){
- $this->_retvalue = '<=';
- }
-#line 2978 "smarty_internal_templateparser.php"
-#line 1123 "smarty_internal_templateparser.y"
- function yy_r176(){
- $this->_retvalue = '===';
- }
-#line 2983 "smarty_internal_templateparser.php"
-#line 1127 "smarty_internal_templateparser.y"
- function yy_r177(){
- $this->_retvalue = '!==';
- }
-#line 2988 "smarty_internal_templateparser.php"
-#line 1131 "smarty_internal_templateparser.y"
- function yy_r178(){
- $this->_retvalue = '%';
- }
-#line 2993 "smarty_internal_templateparser.php"
-#line 1135 "smarty_internal_templateparser.y"
- function yy_r179(){
- $this->_retvalue = '&&';
- }
-#line 2998 "smarty_internal_templateparser.php"
-#line 1139 "smarty_internal_templateparser.y"
- function yy_r180(){
- $this->_retvalue = '||';
- }
-#line 3003 "smarty_internal_templateparser.php"
-#line 1143 "smarty_internal_templateparser.y"
- function yy_r181(){
- $this->_retvalue = ' XOR ';
- }
-#line 3008 "smarty_internal_templateparser.php"
-#line 1150 "smarty_internal_templateparser.y"
- function yy_r182(){
- $this->_retvalue = 'array('.$this->yystack[$this->yyidx + -1]->minor.')';
- }
-#line 3013 "smarty_internal_templateparser.php"
-#line 1158 "smarty_internal_templateparser.y"
- function yy_r184(){
- $this->_retvalue = $this->yystack[$this->yyidx + -2]->minor.','.$this->yystack[$this->yyidx + 0]->minor;
- }
-#line 3018 "smarty_internal_templateparser.php"
-#line 1166 "smarty_internal_templateparser.y"
- function yy_r186(){
- $this->_retvalue = $this->yystack[$this->yyidx + -2]->minor.'=>'.$this->yystack[$this->yyidx + 0]->minor;
- }
-#line 3023 "smarty_internal_templateparser.php"
-#line 1170 "smarty_internal_templateparser.y"
- function yy_r187(){
- $this->_retvalue = '\''.$this->yystack[$this->yyidx + -2]->minor.'\'=>'.$this->yystack[$this->yyidx + 0]->minor;
- }
-#line 3028 "smarty_internal_templateparser.php"
-#line 1182 "smarty_internal_templateparser.y"
- function yy_r189(){
- $this->_retvalue = "''";
- }
-#line 3033 "smarty_internal_templateparser.php"
-#line 1186 "smarty_internal_templateparser.y"
- function yy_r190(){
- $this->_retvalue = $this->yystack[$this->yyidx + -1]->minor->to_smarty_php();
- }
-#line 3038 "smarty_internal_templateparser.php"
-#line 1191 "smarty_internal_templateparser.y"
- function yy_r191(){
- $this->yystack[$this->yyidx + -1]->minor->append_subtree($this->yystack[$this->yyidx + 0]->minor);
- $this->_retvalue = $this->yystack[$this->yyidx + -1]->minor;
- }
-#line 3044 "smarty_internal_templateparser.php"
-#line 1196 "smarty_internal_templateparser.y"
- function yy_r192(){
- $this->_retvalue = new _smarty_doublequoted($this, $this->yystack[$this->yyidx + 0]->minor);
- }
-#line 3049 "smarty_internal_templateparser.php"
-#line 1200 "smarty_internal_templateparser.y"
- function yy_r193(){
- $this->_retvalue = new _smarty_code($this, '(string)'.$this->yystack[$this->yyidx + -1]->minor);
- }
-#line 3054 "smarty_internal_templateparser.php"
-#line 1208 "smarty_internal_templateparser.y"
- function yy_r195(){
- $this->_retvalue = new _smarty_code($this, '(string)$_smarty_tpl->tpl_vars[\''. substr($this->yystack[$this->yyidx + 0]->minor,1) .'\']->value');
- }
-#line 3059 "smarty_internal_templateparser.php"
-#line 1216 "smarty_internal_templateparser.y"
- function yy_r197(){
- $this->_retvalue = new _smarty_code($this, '(string)('.$this->yystack[$this->yyidx + -1]->minor.')');
- }
-#line 3064 "smarty_internal_templateparser.php"
-#line 1220 "smarty_internal_templateparser.y"
- function yy_r198(){
- $this->_retvalue = new _smarty_tag($this, $this->yystack[$this->yyidx + 0]->minor);
- }
-#line 3069 "smarty_internal_templateparser.php"
-#line 1224 "smarty_internal_templateparser.y"
- function yy_r199(){
- $this->_retvalue = new _smarty_dq_content($this, $this->yystack[$this->yyidx + 0]->minor);
- }
-#line 3074 "smarty_internal_templateparser.php"
+
+ #line 3080 "smarty_internal_templateparser.php"
private $_retvalue;
- function yy_reduce($yyruleno)
+ public function yy_reduce($yyruleno)
{
$yymsp = $this->yystack[$this->yyidx];
- if (self::$yyTraceFILE && $yyruleno >= 0
- && $yyruleno < count(self::$yyRuleName)) {
- fprintf(self::$yyTraceFILE, "%sReduce (%d) [%s].\n",
- self::$yyTracePrompt, $yyruleno,
- self::$yyRuleName[$yyruleno]);
+ if ($this->yyTraceFILE && $yyruleno >= 0
+ && $yyruleno < count(self::$yyRuleName)
+ ) {
+ fprintf($this->yyTraceFILE, "%sReduce (%d) [%s].\n",
+ $this->yyTracePrompt, $yyruleno,
+ self::$yyRuleName[$yyruleno]);
}
$this->_retvalue = $yy_lefthand_side = null;
@@ -3099,14 +4416,14 @@ static public $yy_action = array(
$yygoto = self::$yyRuleInfo[$yyruleno]['lhs'];
$yysize = self::$yyRuleInfo[$yyruleno]['rhs'];
$this->yyidx -= $yysize;
- for($i = $yysize; $i; $i--) {
+ for ($i = $yysize; $i; $i --) {
// pop all of the right-hand side parameters
array_pop($this->yystack);
}
$yyact = $this->yy_find_reduce_action($this->yystack[$this->yyidx]->stateno, $yygoto);
if ($yyact < self::YYNSTATE) {
- if (!self::$yyTraceFILE && $yysize) {
- $this->yyidx++;
+ if (!$this->yyTraceFILE && $yysize) {
+ $this->yyidx ++;
$x = new TP_yyStackEntry;
$x->stateno = $yyact;
$x->major = $yygoto;
@@ -3120,73 +4437,75 @@ static public $yy_action = array(
}
}
- function yy_parse_failed()
+ public function yy_parse_failed()
{
- if (self::$yyTraceFILE) {
- fprintf(self::$yyTraceFILE, "%sFail!\n", self::$yyTracePrompt);
+ if ($this->yyTraceFILE) {
+ fprintf($this->yyTraceFILE, "%sFail!\n", $this->yyTracePrompt);
}
while ($this->yyidx >= 0) {
$this->yy_pop_parser_stack();
}
}
- function yy_syntax_error($yymajor, $TOKEN)
+ public function yy_syntax_error($yymajor, $TOKEN)
{
-#line 77 "smarty_internal_templateparser.y"
+ #line 75 "smarty_internal_templateparser.y"
- $this->internalError = true;
- $this->yymajor = $yymajor;
- $this->compiler->trigger_template_error();
-#line 3137 "smarty_internal_templateparser.php"
+ $this->internalError = true;
+ $this->yymajor = $yymajor;
+ $this->compiler->trigger_template_error();
+ #line 3142 "smarty_internal_templateparser.php"
}
- function yy_accept()
+ public function yy_accept()
{
- if (self::$yyTraceFILE) {
- fprintf(self::$yyTraceFILE, "%sAccept!\n", self::$yyTracePrompt);
+ if ($this->yyTraceFILE) {
+ fprintf($this->yyTraceFILE, "%sAccept!\n", $this->yyTracePrompt);
}
while ($this->yyidx >= 0) {
$stack = $this->yy_pop_parser_stack();
}
-#line 69 "smarty_internal_templateparser.y"
+ #line 66 "smarty_internal_templateparser.y"
+
+ $this->successful = !$this->internalError;
+ $this->internalError = false;
+ $this->retvalue = $this->_retvalue;
+ //echo $this->retvalue."\n\n";
- $this->successful = !$this->internalError;
- $this->internalError = false;
- $this->retvalue = $this->_retvalue;
- //echo $this->retvalue."\n\n";
-#line 3155 "smarty_internal_templateparser.php"
+ #line 3160 "smarty_internal_templateparser.php"
}
- function doParse($yymajor, $yytokenvalue)
+ public function doParse($yymajor, $yytokenvalue)
{
$yyerrorhit = 0; /* True if yymajor has invoked an error */
if ($this->yyidx === null || $this->yyidx < 0) {
$this->yyidx = 0;
- $this->yyerrcnt = -1;
+ $this->yyerrcnt = - 1;
$x = new TP_yyStackEntry;
$x->stateno = 0;
$x->major = 0;
$this->yystack = array();
array_push($this->yystack, $x);
}
- $yyendofinput = ($yymajor==0);
+ $yyendofinput = ($yymajor == 0);
- if (self::$yyTraceFILE) {
- fprintf(self::$yyTraceFILE, "%sInput %s\n",
- self::$yyTracePrompt, $this->yyTokenName[$yymajor]);
+ if ($this->yyTraceFILE) {
+ fprintf($this->yyTraceFILE, "%sInput %s\n",
+ $this->yyTracePrompt, $this->yyTokenName[$yymajor]);
}
do {
$yyact = $this->yy_find_shift_action($yymajor);
if ($yymajor < self::YYERRORSYMBOL &&
- !$this->yy_is_expected_token($yymajor)) {
+ !$this->yy_is_expected_token($yymajor)
+ ) {
// force a syntax error
$yyact = self::YY_ERROR_ACTION;
}
if ($yyact < self::YYNSTATE) {
$this->yy_shift($yyact, $yymajor, $yytokenvalue);
- $this->yyerrcnt--;
+ $this->yyerrcnt --;
if ($yyendofinput && $this->yyidx >= 0) {
$yymajor = 0;
} else {
@@ -3195,30 +4514,30 @@ static public $yy_action = array(
} elseif ($yyact < self::YYNSTATE + self::YYNRULE) {
$this->yy_reduce($yyact - self::YYNSTATE);
} elseif ($yyact == self::YY_ERROR_ACTION) {
- if (self::$yyTraceFILE) {
- fprintf(self::$yyTraceFILE, "%sSyntax Error!\n",
- self::$yyTracePrompt);
+ if ($this->yyTraceFILE) {
+ fprintf($this->yyTraceFILE, "%sSyntax Error!\n",
+ $this->yyTracePrompt);
}
if (self::YYERRORSYMBOL) {
if ($this->yyerrcnt < 0) {
$this->yy_syntax_error($yymajor, $yytokenvalue);
}
$yymx = $this->yystack[$this->yyidx]->major;
- if ($yymx == self::YYERRORSYMBOL || $yyerrorhit ){
- if (self::$yyTraceFILE) {
- fprintf(self::$yyTraceFILE, "%sDiscard input token %s\n",
- self::$yyTracePrompt, $this->yyTokenName[$yymajor]);
+ if ($yymx == self::YYERRORSYMBOL || $yyerrorhit) {
+ if ($this->yyTraceFILE) {
+ fprintf($this->yyTraceFILE, "%sDiscard input token %s\n",
+ $this->yyTracePrompt, $this->yyTokenName[$yymajor]);
}
$this->yy_destructor($yymajor, $yytokenvalue);
$yymajor = self::YYNOCODE;
} else {
while ($this->yyidx >= 0 &&
- $yymx != self::YYERRORSYMBOL &&
- ($yyact = $this->yy_find_shift_action(self::YYERRORSYMBOL)) >= self::YYNSTATE
- ){
+ $yymx != self::YYERRORSYMBOL &&
+ ($yyact = $this->yy_find_shift_action(self::YYERRORSYMBOL)) >= self::YYNSTATE
+ ) {
$this->yy_pop_parser_stack();
}
- if ($this->yyidx < 0 || $yymajor==0) {
+ if ($this->yyidx < 0 || $yymajor == 0) {
$this->yy_destructor($yymajor, $yytokenvalue);
$this->yy_parse_failed();
$yymajor = self::YYNOCODE;
@@ -3247,4 +4566,3 @@ static public $yy_action = array(
} while ($yymajor != self::YYNOCODE && $this->yyidx >= 0);
}
}
-?> \ No newline at end of file
diff --git a/library/Smarty/libs/sysplugins/smarty_internal_utility.php b/library/Smarty/libs/sysplugins/smarty_internal_utility.php
index 3e362855c..0a5975bba 100644
--- a/library/Smarty/libs/sysplugins/smarty_internal_utility.php
+++ b/library/Smarty/libs/sysplugins/smarty_internal_utility.php
@@ -3,47 +3,42 @@
* Project: Smarty: the PHP compiling template engine
* File: smarty_internal_utility.php
* SVN: $Id: $
- *
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
* version 2.1 of the License, or (at your option) any later version.
- *
* This library 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
* Lesser General Public License for more details.
- *
* You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
- *
* For questions, help, comments, discussion, etc., please join the
* Smarty mailing list. Send a blank e-mail to
* smarty-discussion-subscribe@googlegroups.com
*
- * @link http://www.smarty.net/
- * @copyright 2008 New Digital Group, Inc.
- * @author Monte Ohrt <monte at ohrt dot com>
- * @author Uwe Tews
- * @package Smarty
+ * @link http://www.smarty.net/
+ * @copyright 2008 New Digital Group, Inc.
+ * @author Monte Ohrt <monte at ohrt dot com>
+ * @author Uwe Tews
+ * @package Smarty
* @subpackage PluginsInternal
- * @version 3-SVN$Rev: 3286 $
+ * @version 3-SVN$Rev: 3286 $
*/
-
/**
* Utility class
*
- * @package Smarty
+ * @package Smarty
* @subpackage Security
*/
-class Smarty_Internal_Utility {
-
+class Smarty_Internal_Utility
+{
/**
* private constructor to prevent calls creation of new instances
*/
- private final function __construct()
+ final private function __construct()
{
// intentionally left blank
}
@@ -51,14 +46,15 @@ class Smarty_Internal_Utility {
/**
* Compile all template files
*
- * @param string $extension template file name extension
- * @param bool $force_compile force all to recompile
- * @param int $time_limit set maximum execution time
- * @param int $max_errors set maximum allowed errors
- * @param Smarty $smarty Smarty instance
+ * @param string $extension template file name extension
+ * @param bool $force_compile force all to recompile
+ * @param int $time_limit set maximum execution time
+ * @param int $max_errors set maximum allowed errors
+ * @param Smarty $smarty Smarty instance
+ *
* @return integer number of template files compiled
*/
- public static function compileAllTemplates($extention, $force_compile, $time_limit, $max_errors, Smarty $smarty)
+ public static function compileAllTemplates($extension, $force_compile, $time_limit, $max_errors, Smarty $smarty)
{
// switch off time limit
if (function_exists('set_time_limit')) {
@@ -68,26 +64,30 @@ class Smarty_Internal_Utility {
$_count = 0;
$_error_count = 0;
// loop over array of template directories
- foreach($smarty->getTemplateDir() as $_dir) {
+ foreach ($smarty->getTemplateDir() as $_dir) {
$_compileDirs = new RecursiveDirectoryIterator($_dir);
$_compile = new RecursiveIteratorIterator($_compileDirs);
foreach ($_compile as $_fileinfo) {
- if (substr($_fileinfo->getBasename(),0,1) == '.' || strpos($_fileinfo, '.svn') !== false) continue;
$_file = $_fileinfo->getFilename();
- if (!substr_compare($_file, $extention, - strlen($extention)) == 0) continue;
- if ($_fileinfo->getPath() == substr($_dir, 0, -1)) {
- $_template_file = $_file;
+ if (substr(basename($_fileinfo->getPathname()), 0, 1) == '.' || strpos($_file, '.svn') !== false) {
+ continue;
+ }
+ if (!substr_compare($_file, $extension, - strlen($extension)) == 0) {
+ continue;
+ }
+ if ($_fileinfo->getPath() == substr($_dir, 0, - 1)) {
+ $_template_file = $_file;
} else {
- $_template_file = substr($_fileinfo->getPath(), strlen($_dir)) . DS . $_file;
+ $_template_file = substr($_fileinfo->getPath(), strlen($_dir)) . DS . $_file;
}
echo '<br>', $_dir, '---', $_template_file;
flush();
$_start_time = microtime(true);
try {
- $_tpl = $smarty->createTemplate($_template_file,null,null,null,false);
+ $_tpl = $smarty->createTemplate($_template_file, null, null, null, false);
if ($_tpl->mustCompile()) {
$_tpl->compileTemplateSource();
- $_count++;
+ $_count ++;
echo ' compiled in ', microtime(true) - $_start_time, ' seconds';
flush();
} else {
@@ -97,7 +97,7 @@ class Smarty_Internal_Utility {
}
catch (Exception $e) {
echo 'Error: ', $e->getMessage(), "<br><br>";
- $_error_count++;
+ $_error_count ++;
}
// free memory
$smarty->template_objects = array();
@@ -109,20 +109,22 @@ class Smarty_Internal_Utility {
}
}
}
+
return $_count;
}
/**
* Compile all config files
*
- * @param string $extension config file name extension
- * @param bool $force_compile force all to recompile
- * @param int $time_limit set maximum execution time
- * @param int $max_errors set maximum allowed errors
- * @param Smarty $smarty Smarty instance
+ * @param string $extension config file name extension
+ * @param bool $force_compile force all to recompile
+ * @param int $time_limit set maximum execution time
+ * @param int $max_errors set maximum allowed errors
+ * @param Smarty $smarty Smarty instance
+ *
* @return integer number of config files compiled
*/
- public static function compileAllConfig($extention, $force_compile, $time_limit, $max_errors, Smarty $smarty)
+ public static function compileAllConfig($extension, $force_compile, $time_limit, $max_errors, Smarty $smarty)
{
// switch off time limit
if (function_exists('set_time_limit')) {
@@ -132,14 +134,18 @@ class Smarty_Internal_Utility {
$_count = 0;
$_error_count = 0;
// loop over array of template directories
- foreach($smarty->getConfigDir() as $_dir) {
+ foreach ($smarty->getConfigDir() as $_dir) {
$_compileDirs = new RecursiveDirectoryIterator($_dir);
$_compile = new RecursiveIteratorIterator($_compileDirs);
foreach ($_compile as $_fileinfo) {
- if (substr($_fileinfo->getBasename(),0,1) == '.' || strpos($_fileinfo, '.svn') !== false) continue;
$_file = $_fileinfo->getFilename();
- if (!substr_compare($_file, $extention, - strlen($extention)) == 0) continue;
- if ($_fileinfo->getPath() == substr($_dir, 0, -1)) {
+ if (substr(basename($_fileinfo->getPathname()), 0, 1) == '.' || strpos($_file, '.svn') !== false) {
+ continue;
+ }
+ if (!substr_compare($_file, $extension, - strlen($extension)) == 0) {
+ continue;
+ }
+ if ($_fileinfo->getPath() == substr($_dir, 0, - 1)) {
$_config_file = $_file;
} else {
$_config_file = substr($_fileinfo->getPath(), strlen($_dir)) . DS . $_file;
@@ -151,7 +157,7 @@ class Smarty_Internal_Utility {
$_config = new Smarty_Internal_Config($_config_file, $smarty);
if ($_config->mustCompile()) {
$_config->compileConfigSource();
- $_count++;
+ $_count ++;
echo ' compiled in ', microtime(true) - $_start_time, ' seconds';
flush();
} else {
@@ -161,7 +167,7 @@ class Smarty_Internal_Utility {
}
catch (Exception $e) {
echo 'Error: ', $e->getMessage(), "<br><br>";
- $_error_count++;
+ $_error_count ++;
}
if ($max_errors !== null && $_error_count == $max_errors) {
echo '<br><br>too many errors';
@@ -169,23 +175,25 @@ class Smarty_Internal_Utility {
}
}
}
+
return $_count;
}
/**
* Delete compiled template file
*
- * @param string $resource_name template name
- * @param string $compile_id compile id
- * @param integer $exp_time expiration time
- * @param Smarty $smarty Smarty instance
+ * @param string $resource_name template name
+ * @param string $compile_id compile id
+ * @param integer $exp_time expiration time
+ * @param Smarty $smarty Smarty instance
+ *
* @return integer number of template files deleted
*/
public static function clearCompiledTemplate($resource_name, $compile_id, $exp_time, Smarty $smarty)
{
- $_compile_dir = $smarty->getCompileDir();
+ $_compile_dir = realpath($smarty->getCompileDir()) . '/';
$_compile_id = isset($compile_id) ? preg_replace('![^\w\|]+!', '_', $compile_id) : null;
- $_dir_sep = $smarty->use_sub_dirs ? DS : '^';
+ $_dir_sep = $smarty->use_sub_dirs ? '/' : '^';
if (isset($resource_name)) {
$_save_stat = $smarty->caching;
$smarty->caching = false;
@@ -205,13 +213,13 @@ class Smarty_Internal_Utility {
unset($smarty->template_objects[$_templateId]);
if ($tpl->source->exists) {
- $_resource_part_1 = basename(str_replace('^', '/', $tpl->compiled->filepath));
- $_resource_part_1_length = strlen($_resource_part_1);
+ $_resource_part_1 = basename(str_replace('^', '/', $tpl->compiled->filepath));
+ $_resource_part_1_length = strlen($_resource_part_1);
} else {
return 0;
}
- $_resource_part_2 = str_replace('.php','.cache.php',$_resource_part_1);
+ $_resource_part_2 = str_replace('.php', '.cache.php', $_resource_part_1);
$_resource_part_2_length = strlen($_resource_part_2);
}
$_dir = $_compile_dir;
@@ -219,22 +227,24 @@ class Smarty_Internal_Utility {
$_dir .= $_compile_id . $_dir_sep;
}
if (isset($_compile_id)) {
- $_compile_id_part = $_compile_dir . $_compile_id . $_dir_sep;
+ $_compile_id_part = str_replace('\\', '/', $_compile_dir . $_compile_id . $_dir_sep);
$_compile_id_part_length = strlen($_compile_id_part);
}
$_count = 0;
try {
$_compileDirs = new RecursiveDirectoryIterator($_dir);
- // NOTE: UnexpectedValueException thrown for PHP >= 5.3
- } catch (Exception $e) {
+ // NOTE: UnexpectedValueException thrown for PHP >= 5.3
+ }
+ catch (Exception $e) {
return 0;
}
$_compile = new RecursiveIteratorIterator($_compileDirs, RecursiveIteratorIterator::CHILD_FIRST);
foreach ($_compile as $_file) {
- if (substr($_file->getBasename(), 0, 1) == '.' || strpos($_file, '.svn') !== false)
+ if (substr(basename($_file->getPathname()), 0, 1) == '.' || strpos($_file, '.svn') !== false) {
continue;
+ }
- $_filepath = (string) $_file;
+ $_filepath = str_replace('\\', '/', (string) $_file);
if ($_file->isDir()) {
if (!$_compile->isDot()) {
@@ -243,12 +253,13 @@ class Smarty_Internal_Utility {
}
} else {
$unlink = false;
- if ((!isset($_compile_id) || (isset($_filepath[$_compile_id_part_length]) && !strncmp($_filepath, $_compile_id_part, $_compile_id_part_length)))
+ if ((!isset($_compile_id) || (isset($_filepath[$_compile_id_part_length]) && $a = !strncmp($_filepath, $_compile_id_part, $_compile_id_part_length)))
&& (!isset($resource_name)
|| (isset($_filepath[$_resource_part_1_length])
- && substr_compare($_filepath, $_resource_part_1, -$_resource_part_1_length, $_resource_part_1_length) == 0)
+ && substr_compare($_filepath, $_resource_part_1, - $_resource_part_1_length, $_resource_part_1_length) == 0)
|| (isset($_filepath[$_resource_part_2_length])
- && substr_compare($_filepath, $_resource_part_2, -$_resource_part_2_length, $_resource_part_2_length) == 0))) {
+ && substr_compare($_filepath, $_resource_part_2, - $_resource_part_2_length, $_resource_part_2_length) == 0))
+ ) {
if (isset($exp_time)) {
if (time() - @filemtime($_filepath) >= $exp_time) {
$unlink = true;
@@ -259,40 +270,44 @@ class Smarty_Internal_Utility {
}
if ($unlink && @unlink($_filepath)) {
- $_count++;
+ $_count ++;
}
}
}
// clear compiled cache
Smarty_Resource::$sources = array();
Smarty_Resource::$compileds = array();
+
return $_count;
}
/**
* Return array of tag/attributes of all tags used by an template
*
- * @param Smarty_Internal_Template $templae template object
- * @return array of tag/attributes
+ * @param Smarty_Internal_Template $template
+ *
+ * @throws Exception
+ * @throws SmartyException
+ * @return array of tag/attributes
*/
public static function getTags(Smarty_Internal_Template $template)
{
$template->smarty->get_used_tags = true;
$template->compileTemplateSource();
+
return $template->used_tags;
}
-
/**
* diagnose Smarty setup
- *
* If $errors is secified, the diagnostic report will be appended to the array, rather than being output.
*
- * @param Smarty $smarty Smarty instance to test
- * @param array $errors array to push results into rather than outputting them
- * @return bool status, true if everything is fine, false else
+ * @param Smarty $smarty Smarty instance to test
+ * @param array $errors array to push results into rather than outputting them
+ *
+ * @return bool status, true if everything is fine, false else
*/
- public static function testInstall(Smarty $smarty, &$errors=null)
+ public static function testInstall(Smarty $smarty, &$errors = null)
{
$status = true;
@@ -305,10 +320,10 @@ class Smarty_Internal_Utility {
$_stream_resolve_include_path = function_exists('stream_resolve_include_path');
// test if all registered template_dir are accessible
- foreach($smarty->getTemplateDir() as $template_dir) {
+ foreach ($smarty->getTemplateDir() as $template_dir) {
$_template_dir = $template_dir;
$template_dir = realpath($template_dir);
- // resolve include_path or fail existance
+ // resolve include_path or fail existence
if (!$template_dir) {
if ($smarty->use_include_path && !preg_match('/^([\/\\\\]|[a-zA-Z]:[\/\\\\])/', $_template_dir)) {
// try PHP include_path
@@ -371,7 +386,6 @@ class Smarty_Internal_Utility {
}
}
-
if ($errors === null) {
echo "Testing compile directory...\n";
}
@@ -417,19 +431,18 @@ class Smarty_Internal_Utility {
}
}
-
if ($errors === null) {
echo "Testing plugins directory...\n";
}
// test if all registered plugins_dir are accessible
// and if core plugins directory is still registered
- $_core_plugins_dir = realpath(dirname(__FILE__) .'/../plugins');
+ $_core_plugins_dir = realpath(dirname(__FILE__) . '/../plugins');
$_core_plugins_available = false;
- foreach($smarty->getPluginsDir() as $plugin_dir) {
+ foreach ($smarty->getPluginsDir() as $plugin_dir) {
$_plugin_dir = $plugin_dir;
$plugin_dir = realpath($plugin_dir);
- // resolve include_path or fail existance
+ // resolve include_path or fail existence
if (!$plugin_dir) {
if ($smarty->use_include_path && !preg_match('/^([\/\\\\]|[a-zA-Z]:[\/\\\\])/', $_plugin_dir)) {
// try PHP include_path
@@ -510,7 +523,6 @@ class Smarty_Internal_Utility {
echo "Testing cache directory...\n";
}
-
// test if all registered cache_dir is accessible
$__cache_dir = $smarty->getCacheDir();
$_cache_dir = realpath($__cache_dir);
@@ -552,16 +564,15 @@ class Smarty_Internal_Utility {
}
}
-
if ($errors === null) {
echo "Testing configs directory...\n";
}
// test if all registered config_dir are accessible
- foreach($smarty->getConfigDir() as $config_dir) {
+ foreach ($smarty->getConfigDir() as $config_dir) {
$_config_dir = $config_dir;
$config_dir = realpath($config_dir);
- // resolve include_path or fail existance
+ // resolve include_path or fail existence
if (!$config_dir) {
if ($smarty->use_include_path && !preg_match('/^([\/\\\\]|[a-zA-Z]:[\/\\\\])/', $_config_dir)) {
// try PHP include_path
@@ -624,7 +635,6 @@ class Smarty_Internal_Utility {
}
}
-
if ($errors === null) {
echo "Testing sysplugin files...\n";
}
@@ -632,75 +642,75 @@ class Smarty_Internal_Utility {
$source = SMARTY_SYSPLUGINS_DIR;
if (is_dir($source)) {
$expected = array(
- "smarty_cacheresource.php" => true,
- "smarty_cacheresource_custom.php" => true,
- "smarty_cacheresource_keyvaluestore.php" => true,
- "smarty_config_source.php" => true,
- "smarty_internal_cacheresource_file.php" => true,
- "smarty_internal_compile_append.php" => true,
- "smarty_internal_compile_assign.php" => true,
- "smarty_internal_compile_block.php" => true,
- "smarty_internal_compile_break.php" => true,
- "smarty_internal_compile_call.php" => true,
- "smarty_internal_compile_capture.php" => true,
- "smarty_internal_compile_config_load.php" => true,
- "smarty_internal_compile_continue.php" => true,
- "smarty_internal_compile_debug.php" => true,
- "smarty_internal_compile_eval.php" => true,
- "smarty_internal_compile_extends.php" => true,
- "smarty_internal_compile_for.php" => true,
- "smarty_internal_compile_foreach.php" => true,
- "smarty_internal_compile_function.php" => true,
- "smarty_internal_compile_if.php" => true,
- "smarty_internal_compile_include.php" => true,
- "smarty_internal_compile_include_php.php" => true,
- "smarty_internal_compile_insert.php" => true,
- "smarty_internal_compile_ldelim.php" => true,
- "smarty_internal_compile_nocache.php" => true,
- "smarty_internal_compile_private_block_plugin.php" => true,
- "smarty_internal_compile_private_function_plugin.php" => true,
- "smarty_internal_compile_private_modifier.php" => true,
+ "smarty_cacheresource.php" => true,
+ "smarty_cacheresource_custom.php" => true,
+ "smarty_cacheresource_keyvaluestore.php" => true,
+ "smarty_config_source.php" => true,
+ "smarty_internal_cacheresource_file.php" => true,
+ "smarty_internal_compile_append.php" => true,
+ "smarty_internal_compile_assign.php" => true,
+ "smarty_internal_compile_block.php" => true,
+ "smarty_internal_compile_break.php" => true,
+ "smarty_internal_compile_call.php" => true,
+ "smarty_internal_compile_capture.php" => true,
+ "smarty_internal_compile_config_load.php" => true,
+ "smarty_internal_compile_continue.php" => true,
+ "smarty_internal_compile_debug.php" => true,
+ "smarty_internal_compile_eval.php" => true,
+ "smarty_internal_compile_extends.php" => true,
+ "smarty_internal_compile_for.php" => true,
+ "smarty_internal_compile_foreach.php" => true,
+ "smarty_internal_compile_function.php" => true,
+ "smarty_internal_compile_if.php" => true,
+ "smarty_internal_compile_include.php" => true,
+ "smarty_internal_compile_include_php.php" => true,
+ "smarty_internal_compile_insert.php" => true,
+ "smarty_internal_compile_ldelim.php" => true,
+ "smarty_internal_compile_nocache.php" => true,
+ "smarty_internal_compile_private_block_plugin.php" => true,
+ "smarty_internal_compile_private_function_plugin.php" => true,
+ "smarty_internal_compile_private_modifier.php" => true,
"smarty_internal_compile_private_object_block_function.php" => true,
- "smarty_internal_compile_private_object_function.php" => true,
- "smarty_internal_compile_private_print_expression.php" => true,
- "smarty_internal_compile_private_registered_block.php" => true,
- "smarty_internal_compile_private_registered_function.php" => true,
- "smarty_internal_compile_private_special_variable.php" => true,
- "smarty_internal_compile_rdelim.php" => true,
- "smarty_internal_compile_section.php" => true,
- "smarty_internal_compile_setfilter.php" => true,
- "smarty_internal_compile_while.php" => true,
- "smarty_internal_compilebase.php" => true,
- "smarty_internal_config.php" => true,
- "smarty_internal_config_file_compiler.php" => true,
- "smarty_internal_configfilelexer.php" => true,
- "smarty_internal_configfileparser.php" => true,
- "smarty_internal_data.php" => true,
- "smarty_internal_debug.php" => true,
- "smarty_internal_filter_handler.php" => true,
- "smarty_internal_function_call_handler.php" => true,
- "smarty_internal_get_include_path.php" => true,
- "smarty_internal_nocache_insert.php" => true,
- "smarty_internal_parsetree.php" => true,
- "smarty_internal_resource_eval.php" => true,
- "smarty_internal_resource_extends.php" => true,
- "smarty_internal_resource_file.php" => true,
- "smarty_internal_resource_registered.php" => true,
- "smarty_internal_resource_stream.php" => true,
- "smarty_internal_resource_string.php" => true,
- "smarty_internal_smartytemplatecompiler.php" => true,
- "smarty_internal_template.php" => true,
- "smarty_internal_templatebase.php" => true,
- "smarty_internal_templatecompilerbase.php" => true,
- "smarty_internal_templatelexer.php" => true,
- "smarty_internal_templateparser.php" => true,
- "smarty_internal_utility.php" => true,
- "smarty_internal_write_file.php" => true,
- "smarty_resource.php" => true,
- "smarty_resource_custom.php" => true,
- "smarty_resource_recompiled.php" => true,
- "smarty_resource_uncompiled.php" => true,
- "smarty_security.php" => true,
+ "smarty_internal_compile_private_object_function.php" => true,
+ "smarty_internal_compile_private_print_expression.php" => true,
+ "smarty_internal_compile_private_registered_block.php" => true,
+ "smarty_internal_compile_private_registered_function.php" => true,
+ "smarty_internal_compile_private_special_variable.php" => true,
+ "smarty_internal_compile_rdelim.php" => true,
+ "smarty_internal_compile_section.php" => true,
+ "smarty_internal_compile_setfilter.php" => true,
+ "smarty_internal_compile_while.php" => true,
+ "smarty_internal_compilebase.php" => true,
+ "smarty_internal_config.php" => true,
+ "smarty_internal_config_file_compiler.php" => true,
+ "smarty_internal_configfilelexer.php" => true,
+ "smarty_internal_configfileparser.php" => true,
+ "smarty_internal_data.php" => true,
+ "smarty_internal_debug.php" => true,
+ "smarty_internal_filter_handler.php" => true,
+ "smarty_internal_function_call_handler.php" => true,
+ "smarty_internal_get_include_path.php" => true,
+ "smarty_internal_nocache_insert.php" => true,
+ "smarty_internal_parsetree.php" => true,
+ "smarty_internal_resource_eval.php" => true,
+ "smarty_internal_resource_extends.php" => true,
+ "smarty_internal_resource_file.php" => true,
+ "smarty_internal_resource_registered.php" => true,
+ "smarty_internal_resource_stream.php" => true,
+ "smarty_internal_resource_string.php" => true,
+ "smarty_internal_smartytemplatecompiler.php" => true,
+ "smarty_internal_template.php" => true,
+ "smarty_internal_templatebase.php" => true,
+ "smarty_internal_templatecompilerbase.php" => true,
+ "smarty_internal_templatelexer.php" => true,
+ "smarty_internal_templateparser.php" => true,
+ "smarty_internal_utility.php" => true,
+ "smarty_internal_write_file.php" => true,
+ "smarty_resource.php" => true,
+ "smarty_resource_custom.php" => true,
+ "smarty_resource_recompiled.php" => true,
+ "smarty_resource_uncompiled.php" => true,
+ "smarty_security.php" => true,
);
$iterator = new DirectoryIterator($source);
foreach ($iterator as $file) {
@@ -713,7 +723,7 @@ class Smarty_Internal_Utility {
}
if ($expected) {
$status = false;
- $message = "FAILED: files missing from libs/sysplugins: ". join(', ', array_keys($expected));
+ $message = "FAILED: files missing from libs/sysplugins: " . join(', ', array_keys($expected));
if ($errors === null) {
echo $message . ".\n";
} else {
@@ -724,7 +734,7 @@ class Smarty_Internal_Utility {
}
} else {
$status = false;
- $message = "FAILED: ". SMARTY_SYSPLUGINS_DIR .' is not a directory';
+ $message = "FAILED: " . SMARTY_SYSPLUGINS_DIR . ' is not a directory';
if ($errors === null) {
echo $message . ".\n";
} else {
@@ -739,53 +749,53 @@ class Smarty_Internal_Utility {
$source = SMARTY_PLUGINS_DIR;
if (is_dir($source)) {
$expected = array(
- "block.textformat.php" => true,
- "function.counter.php" => true,
- "function.cycle.php" => true,
- "function.fetch.php" => true,
- "function.html_checkboxes.php" => true,
- "function.html_image.php" => true,
- "function.html_options.php" => true,
- "function.html_radios.php" => true,
- "function.html_select_date.php" => true,
- "function.html_select_time.php" => true,
- "function.html_table.php" => true,
- "function.mailto.php" => true,
- "function.math.php" => true,
- "modifier.capitalize.php" => true,
- "modifier.date_format.php" => true,
- "modifier.debug_print_var.php" => true,
- "modifier.escape.php" => true,
- "modifier.regex_replace.php" => true,
- "modifier.replace.php" => true,
- "modifier.spacify.php" => true,
- "modifier.truncate.php" => true,
- "modifiercompiler.cat.php" => true,
+ "block.textformat.php" => true,
+ "function.counter.php" => true,
+ "function.cycle.php" => true,
+ "function.fetch.php" => true,
+ "function.html_checkboxes.php" => true,
+ "function.html_image.php" => true,
+ "function.html_options.php" => true,
+ "function.html_radios.php" => true,
+ "function.html_select_date.php" => true,
+ "function.html_select_time.php" => true,
+ "function.html_table.php" => true,
+ "function.mailto.php" => true,
+ "function.math.php" => true,
+ "modifier.capitalize.php" => true,
+ "modifier.date_format.php" => true,
+ "modifier.debug_print_var.php" => true,
+ "modifier.escape.php" => true,
+ "modifier.regex_replace.php" => true,
+ "modifier.replace.php" => true,
+ "modifier.spacify.php" => true,
+ "modifier.truncate.php" => true,
+ "modifiercompiler.cat.php" => true,
"modifiercompiler.count_characters.php" => true,
"modifiercompiler.count_paragraphs.php" => true,
- "modifiercompiler.count_sentences.php" => true,
- "modifiercompiler.count_words.php" => true,
- "modifiercompiler.default.php" => true,
- "modifiercompiler.escape.php" => true,
- "modifiercompiler.from_charset.php" => true,
- "modifiercompiler.indent.php" => true,
- "modifiercompiler.lower.php" => true,
- "modifiercompiler.noprint.php" => true,
- "modifiercompiler.string_format.php" => true,
- "modifiercompiler.strip.php" => true,
- "modifiercompiler.strip_tags.php" => true,
- "modifiercompiler.to_charset.php" => true,
- "modifiercompiler.unescape.php" => true,
- "modifiercompiler.upper.php" => true,
- "modifiercompiler.wordwrap.php" => true,
- "outputfilter.trimwhitespace.php" => true,
- "shared.escape_special_chars.php" => true,
- "shared.literal_compiler_param.php" => true,
- "shared.make_timestamp.php" => true,
- "shared.mb_str_replace.php" => true,
- "shared.mb_unicode.php" => true,
- "shared.mb_wordwrap.php" => true,
- "variablefilter.htmlspecialchars.php" => true,
+ "modifiercompiler.count_sentences.php" => true,
+ "modifiercompiler.count_words.php" => true,
+ "modifiercompiler.default.php" => true,
+ "modifiercompiler.escape.php" => true,
+ "modifiercompiler.from_charset.php" => true,
+ "modifiercompiler.indent.php" => true,
+ "modifiercompiler.lower.php" => true,
+ "modifiercompiler.noprint.php" => true,
+ "modifiercompiler.string_format.php" => true,
+ "modifiercompiler.strip.php" => true,
+ "modifiercompiler.strip_tags.php" => true,
+ "modifiercompiler.to_charset.php" => true,
+ "modifiercompiler.unescape.php" => true,
+ "modifiercompiler.upper.php" => true,
+ "modifiercompiler.wordwrap.php" => true,
+ "outputfilter.trimwhitespace.php" => true,
+ "shared.escape_special_chars.php" => true,
+ "shared.literal_compiler_param.php" => true,
+ "shared.make_timestamp.php" => true,
+ "shared.mb_str_replace.php" => true,
+ "shared.mb_unicode.php" => true,
+ "shared.mb_wordwrap.php" => true,
+ "variablefilter.htmlspecialchars.php" => true,
);
$iterator = new DirectoryIterator($source);
foreach ($iterator as $file) {
@@ -798,7 +808,7 @@ class Smarty_Internal_Utility {
}
if ($expected) {
$status = false;
- $message = "FAILED: files missing from libs/plugins: ". join(', ', array_keys($expected));
+ $message = "FAILED: files missing from libs/plugins: " . join(', ', array_keys($expected));
if ($errors === null) {
echo $message . ".\n";
} else {
@@ -809,7 +819,7 @@ class Smarty_Internal_Utility {
}
} else {
$status = false;
- $message = "FAILED: ". SMARTY_PLUGINS_DIR .' is not a directory';
+ $message = "FAILED: " . SMARTY_PLUGINS_DIR . ' is not a directory';
if ($errors === null) {
echo $message . ".\n";
} else {
@@ -824,7 +834,4 @@ class Smarty_Internal_Utility {
return $status;
}
-
}
-
-?> \ No newline at end of file
diff --git a/library/Smarty/libs/sysplugins/smarty_internal_write_file.php b/library/Smarty/libs/sysplugins/smarty_internal_write_file.php
index e5d19ce8d..f46fe2b6c 100644
--- a/library/Smarty/libs/sysplugins/smarty_internal_write_file.php
+++ b/library/Smarty/libs/sysplugins/smarty_internal_write_file.php
@@ -2,25 +2,27 @@
/**
* Smarty write file plugin
*
- * @package Smarty
+ * @package Smarty
* @subpackage PluginsInternal
- * @author Monte Ohrt
+ * @author Monte Ohrt
*/
/**
* Smarty Internal Write File Class
*
- * @package Smarty
+ * @package Smarty
* @subpackage PluginsInternal
*/
-class Smarty_Internal_Write_File {
-
+class Smarty_Internal_Write_File
+{
/**
* Writes file in a safe way to disk
*
- * @param string $_filepath complete filepath
- * @param string $_contents file content
- * @param Smarty $smarty smarty instance
+ * @param string $_filepath complete filepath
+ * @param string $_contents file content
+ * @param Smarty $smarty smarty instance
+ *
+ * @throws SmartyException
* @return boolean true
*/
public static function writeFile($_filepath, $_contents, Smarty $smarty)
@@ -38,17 +40,16 @@ class Smarty_Internal_Write_File {
}
// write to tmp file, then move to overt file lock race condition
- $_tmp_file = $_dirpath . DS . uniqid('wrt', true);
+ $_tmp_file = $_dirpath . DS . str_replace(array('.', ','), '_', uniqid('wrt', true));
if (!file_put_contents($_tmp_file, $_contents)) {
error_reporting($_error_reporting);
throw new SmartyException("unable to write file {$_tmp_file}");
- return false;
- }
-
+ }
+
/*
* Windows' rename() fails if the destination exists,
* Linux' rename() properly handles the overwrite.
- * Simply unlink()ing a file might cause other processes
+ * Simply unlink()ing a file might cause other processes
* currently reading that file to fail, but linux' rename()
* seems to be smart enough to handle that for us.
*/
@@ -71,7 +72,6 @@ class Smarty_Internal_Write_File {
if (!$success) {
error_reporting($_error_reporting);
throw new SmartyException("unable to write file {$_filepath}");
- return false;
}
if ($smarty->_file_perms !== null) {
@@ -80,9 +80,7 @@ class Smarty_Internal_Write_File {
umask($old_umask);
}
error_reporting($_error_reporting);
+
return true;
}
-
}
-
-?> \ No newline at end of file
diff --git a/library/Smarty/libs/sysplugins/smarty_resource.php b/library/Smarty/libs/sysplugins/smarty_resource.php
index f79373af3..f478a533d 100644
--- a/library/Smarty/libs/sysplugins/smarty_resource.php
+++ b/library/Smarty/libs/sysplugins/smarty_resource.php
@@ -2,84 +2,91 @@
/**
* Smarty Resource Plugin
*
- * @package Smarty
+ * @package Smarty
* @subpackage TemplateResources
- * @author Rodney Rehm
+ * @author Rodney Rehm
*/
/**
* Smarty Resource Plugin
- *
* Base implementation for resource plugins
*
- * @package Smarty
+ * @package Smarty
* @subpackage TemplateResources
*/
-abstract class Smarty_Resource {
+abstract class Smarty_Resource
+{
/**
* cache for Smarty_Template_Source instances
+ *
* @var array
*/
public static $sources = array();
/**
* cache for Smarty_Template_Compiled instances
+ *
* @var array
*/
public static $compileds = array();
/**
* cache for Smarty_Resource instances
+ *
* @var array
*/
public static $resources = array();
/**
* resource types provided by the core
+ *
* @var array
*/
protected static $sysplugins = array(
- 'file' => true,
- 'string' => true,
+ 'file' => true,
+ 'string' => true,
'extends' => true,
- 'stream' => true,
- 'eval' => true,
- 'php' => true
+ 'stream' => true,
+ 'eval' => true,
+ 'php' => true
);
/**
* Name of the Class to compile this resource's contents with
+ *
* @var string
*/
public $compiler_class = 'Smarty_Internal_SmartyTemplateCompiler';
/**
* Name of the Class to tokenize this resource's contents with
+ *
* @var string
*/
public $template_lexer_class = 'Smarty_Internal_Templatelexer';
/**
* Name of the Class to parse this resource's contents with
+ *
* @var string
*/
public $template_parser_class = 'Smarty_Internal_Templateparser';
/**
* Load template's source into current template object
- *
* {@internal The loaded source is assigned to $_template->source->content directly.}}
*
- * @param Smarty_Template_Source $source source object
- * @return string template source
- * @throws SmartyException if source cannot be loaded
+ * @param Smarty_Template_Source $source source object
+ *
+ * @return string template source
+ * @throws SmartyException if source cannot be loaded
*/
- public abstract function getContent(Smarty_Template_Source $source);
+ abstract public function getContent(Smarty_Template_Source $source);
/**
* populate Source Object with meta data from Resource
*
- * @param Smarty_Template_Source $source source object
- * @param Smarty_Internal_Template $_template template object
+ * @param Smarty_Template_Source $source source object
+ * @param Smarty_Internal_Template $_template template object
*/
- public abstract function populate(Smarty_Template_Source $source, Smarty_Internal_Template $_template=null);
+ abstract public function populate(Smarty_Template_Source $source, Smarty_Internal_Template $_template = null);
/**
* populate Source Object with timestamp and exists from Resource
@@ -91,17 +98,22 @@ abstract class Smarty_Resource {
// intentionally left blank
}
-
/**
* modify resource_name according to resource handlers specifications
*
- * @param Smarty $smarty Smarty instance
- * @param string $resource_name resource_name to make unique
+ * @param Smarty $smarty Smarty instance
+ * @param string $resource_name resource_name to make unique
+ * @param boolean $is_config flag for config resource
+ *
* @return string unique resource name
*/
- protected function buildUniqueResourceName(Smarty $smarty, $resource_name)
+ protected function buildUniqueResourceName(Smarty $smarty, $resource_name, $is_config = false)
{
- return get_class($this) . '#' . $smarty->joined_template_dir . '#' . $resource_name;
+ if ($is_config) {
+ return get_class($this) . '#' . $smarty->joined_config_dir . '#' . $resource_name;
+ } else {
+ return get_class($this) . '#' . $smarty->joined_template_dir . '#' . $resource_name;
+ }
}
/**
@@ -117,9 +129,9 @@ abstract class Smarty_Resource {
// if use_sub_dirs, break file into directories
if ($_template->smarty->use_sub_dirs) {
$_filepath = substr($_filepath, 0, 2) . DS
- . substr($_filepath, 2, 2) . DS
- . substr($_filepath, 4, 2) . DS
- . $_filepath;
+ . substr($_filepath, 2, 2) . DS
+ . substr($_filepath, 4, 2) . DS
+ . $_filepath;
}
$_compile_dir_sep = $_template->smarty->use_sub_dirs ? DS : '^';
if (isset($_compile_id)) {
@@ -135,7 +147,7 @@ abstract class Smarty_Resource {
// set basename if not specified
$_basename = $this->getBasename($compiled->source);
if ($_basename === null) {
- $_basename = basename( preg_replace('![^\w\/]+!', '_', $compiled->source->name) );
+ $_basename = basename(preg_replace('![^\w\/]+!', '_', $compiled->source->name));
}
// separate (optional) basename by dot
if ($_basename) {
@@ -144,59 +156,63 @@ abstract class Smarty_Resource {
$compiled->filepath = $_compile_dir . $_filepath . '.' . $compiled->source->type . $_basename . $_cache . '.php';
}
-
+
/**
- * Normalize Paths "foo/../bar" to "bar"
+ * Normalize Paths "foo/../bar" to "bar"
+ *
+ * @param string $_path path to normalize
+ * @param boolean $ds respect windows directory separator
*
- * @param string $_path path to normalize
- * @param boolean $ds respect windows directory separator
- * @return string normalized path
+ * @return string normalized path
*/
- protected function normalizePath($_path, $ds=true)
+ protected function normalizePath($_path, $ds = true)
{
if ($ds) {
// don't we all just love windows?
$_path = str_replace('\\', '/', $_path);
}
-
+
+ $offset = 0;
+
// resolve simples
- $_path = preg_replace('#(/\./(\./)*)|/{2,}#', '/', $_path);
+ $_path = preg_replace('#/\./(\./)*#', '/', $_path);
// resolve parents
while (true) {
- $_parent = strpos($_path, '/../');
- if ($_parent === false) {
- break;
- } else if ($_parent === 0) {
- $_path = substr($_path, 3);
+ $_parent = strpos($_path, '/../', $offset);
+ if (!$_parent) {
break;
+ } elseif ($_path[$_parent - 1] === '.') {
+ $offset = $_parent + 3;
+ continue;
}
-
+
$_pos = strrpos($_path, '/', $_parent - strlen($_path) - 1);
if ($_pos === false) {
// don't we all just love windows?
$_pos = $_parent;
}
-
+
$_path = substr_replace($_path, '', $_pos, $_parent + 3 - $_pos);
}
-
+
if ($ds && DS != '/') {
// don't we all just love windows?
$_path = str_replace('/', '\\', $_path);
}
-
+
return $_path;
}
-
+
/**
* build template filepath by traversing the template_dir array
*
- * @param Smarty_Template_Source $source source object
- * @param Smarty_Internal_Template $_template template object
- * @return string fully qualified filepath
- * @throws SmartyException if default template handler is registered but not callable
+ * @param Smarty_Template_Source $source source object
+ * @param Smarty_Internal_Template $_template template object
+ *
+ * @return string fully qualified filepath
+ * @throws SmartyException if default template handler is registered but not callable
*/
- protected function buildFilepath(Smarty_Template_Source $source, Smarty_Internal_Template $_template=null)
+ protected function buildFilepath(Smarty_Template_Source $source, Smarty_Internal_Template $_template = null)
{
$file = $source->name;
if ($source instanceof Smarty_Config_Source) {
@@ -225,8 +241,6 @@ abstract class Smarty_Resource {
// resolve relative path
if (!preg_match('/^([\/\\\\]|[a-zA-Z]:[\/\\\\])/', $file)) {
// don't we all just love windows?
- $_path = str_replace('\\', '/', $file);
- $_was_relative_prefix = $file[0] == '.' ? substr($file, 0, strpos($_path, '/')) : null;
$_path = DS . trim($file, '/');
$_was_relative = true;
} else {
@@ -240,11 +254,7 @@ abstract class Smarty_Resource {
}
// revert to relative
if (isset($_was_relative)) {
- if (isset($_was_relative_prefix)){
- $_path = $_was_relative_prefix . $_path;
- } else {
- $_path = substr($_path, 1);
- }
+ $_path = substr($_path, 1);
}
// this is only required for directories
@@ -261,7 +271,7 @@ abstract class Smarty_Resource {
// try string indexes
if (isset($_directories[$match['key']])) {
$_directory = $_directories[$match['key']];
- } else if (is_numeric($match['key'])) {
+ } elseif (is_numeric($match['key'])) {
// try numeric index
$match['key'] = (int) $match['key'];
if (isset($_directories[$match['key']])) {
@@ -323,15 +333,17 @@ abstract class Smarty_Resource {
}
}
$_return = call_user_func_array($_default_handler,
- array($source->type, $source->name, &$_content, &$_timestamp, $source->smarty));
+ array($source->type, $source->name, &$_content, &$_timestamp, $source->smarty));
if (is_string($_return)) {
$source->timestamp = @filemtime($_return);
$source->exists = !!$source->timestamp;
+
return $_return;
} elseif ($_return === true) {
$source->content = $_content;
$source->timestamp = $_timestamp;
$source->exists = true;
+
return $_filepath;
}
}
@@ -343,22 +355,24 @@ abstract class Smarty_Resource {
/**
* test is file exists and save timestamp
*
- * @param Smarty_Template_Source $source source object
- * @param string $file file name
- * @return bool true if file exists
+ * @param Smarty_Template_Source $source source object
+ * @param string $file file name
+ *
+ * @return bool true if file exists
*/
protected function fileExists(Smarty_Template_Source $source, $file)
{
- $source->timestamp = @filemtime($file);
- return $source->exists = !!$source->timestamp;
+ $source->timestamp = is_file($file) ? @filemtime($file) : false;
+ return $source->exists = !!$source->timestamp;
}
/**
* Determine basename for compiled filename
*
- * @param Smarty_Template_Source $source source object
- * @return string resource's basename
+ * @param Smarty_Template_Source $source source object
+ *
+ * @return string resource's basename
*/
protected function getBasename(Smarty_Template_Source $source)
{
@@ -368,8 +382,10 @@ abstract class Smarty_Resource {
/**
* Load Resource Handler
*
- * @param Smarty $smarty smarty object
- * @param string $type name of the resource
+ * @param Smarty $smarty smarty object
+ * @param string $type name of the resource
+ *
+ * @throws SmartyException
* @return Smarty_Resource Resource Handler
*/
public static function load(Smarty $smarty, $type)
@@ -403,6 +419,7 @@ abstract class Smarty_Resource {
$_resource_class = 'Smarty_Internal_Resource_' . ucfirst($type);
self::$resources[$type] = new $_resource_class();
}
+
return $smarty->_resource_handlers[$type] = self::$resources[$type];
}
@@ -415,6 +432,7 @@ abstract class Smarty_Resource {
if (class_exists($_resource_class, false)) {
self::$resources[$type] = new $_resource_class();
+
return $smarty->_resource_handlers[$type] = self::$resources[$type];
} else {
$smarty->registerResource($type, array(
@@ -439,23 +457,25 @@ abstract class Smarty_Resource {
if (!isset(self::$resources['stream'])) {
self::$resources['stream'] = new Smarty_Internal_Resource_Stream();
}
+
return $smarty->_resource_handlers[$type] = self::$resources['stream'];
}
// TODO: try default_(template|config)_handler
// give up
- throw new SmartyException("Unkown resource type '{$type}'");
+ throw new SmartyException("Unknown resource type '{$type}'");
}
/**
* extract resource_type and resource_name from template_resource and config_resource
- *
* @note "C:/foo.tpl" was forced to file resource up till Smarty 3.1.3 (including).
- * @param string $resource_name template_resource or config_resource to parse
- * @param string $default_resource the default resource_type defined in $smarty
- * @param string &$name the parsed resource name
- * @param string &$type the parsed resource type
+ *
+ * @param string $resource_name template_resource or config_resource to parse
+ * @param string $default_resource the default resource_type defined in $smarty
+ * @param string &$name the parsed resource name
+ * @param string &$type the parsed resource type
+ *
* @return void
*/
protected static function parseResourceName($resource_name, $default_resource, &$name, &$type)
@@ -472,41 +492,47 @@ abstract class Smarty_Resource {
}
}
-
/**
* modify resource_name according to resource handlers specifications
*
- * @param Smarty $smarty Smarty instance
- * @param string $resource_name resource_name to make unique
+ * @param Smarty $smarty Smarty instance
+ * @param string $resource_name resource_name to make unique
+ *
* @return string unique resource name
*/
/**
* modify template_resource according to resource handlers specifications
*
- * @param string $smarty Smarty instance
- * @param string $template_resource template_resource to extracate resource handler and name of
+ * @param Smarty_Internal_template $template Smarty instance
+ * @param string $template_resource template_resource to extract resource handler and name of
+ *
* @return string unique resource name
*/
- public static function getUniqueTemplateName($smarty, $template_resource)
+ public static function getUniqueTemplateName($template, $template_resource)
{
- self::parseResourceName($template_resource, $smarty->default_resource_type, $name, $type);
+ self::parseResourceName($template_resource, $template->smarty->default_resource_type, $name, $type);
// TODO: optimize for Smarty's internal resource types
- $resource = Smarty_Resource::load($smarty, $type);
- return $resource->buildUniqueResourceName($smarty, $name);
+ $resource = Smarty_Resource::load($template->smarty, $type);
+ // go relative to a given template?
+ $_file_is_dotted = $name[0] == '.' && ($name[1] == '.' || $name[1] == '/' || $name[1] == "\\");
+ if ($template instanceof Smarty_Internal_Template && $_file_is_dotted && ($template->source->type == 'file' || $template->parent->source->type == 'extends')) {
+ $name = dirname($template->source->filepath) . DS . $name;
+ }
+ return $resource->buildUniqueResourceName($template->smarty, $name);
}
/**
* initialize Source Object for given resource
- *
* Either [$_template] or [$smarty, $template_resource] must be specified
*
- * @param Smarty_Internal_Template $_template template object
- * @param Smarty $smarty smarty object
- * @param string $template_resource resource identifier
- * @return Smarty_Template_Source Source Object
+ * @param Smarty_Internal_Template $_template template object
+ * @param Smarty $smarty smarty object
+ * @param string $template_resource resource identifier
+ *
+ * @return Smarty_Template_Source Source Object
*/
- public static function source(Smarty_Internal_Template $_template=null, Smarty $smarty=null, $template_resource=null)
+ public static function source(Smarty_Internal_Template $_template = null, Smarty $smarty = null, $template_resource = null)
{
if ($_template) {
$smarty = $_template->smarty;
@@ -516,12 +542,19 @@ abstract class Smarty_Resource {
// parse resource_name, load resource handler, identify unique resource name
self::parseResourceName($template_resource, $smarty->default_resource_type, $name, $type);
$resource = Smarty_Resource::load($smarty, $type);
- $unique_resource_name = $resource->buildUniqueResourceName($smarty, $name);
+ // go relative to a given template?
+ $_file_is_dotted = isset($name[0]) && $name[0] == '.' && ($name[1] == '.' || $name[1] == '/' || $name[1] == "\\");
+ if ($_file_is_dotted && isset($_template) && $_template->parent instanceof Smarty_Internal_Template && ($_template->parent->source->type == 'file' || $_template->parent->source->type == 'extends')) {
+ $name2 = dirname($_template->parent->source->filepath) . DS . $name;
+ } else {
+ $name2 = $name;
+ }
+ $unique_resource_name = $resource->buildUniqueResourceName($smarty, $name2);
// check runtime cache
$_cache_key = 'template|' . $unique_resource_name;
if ($smarty->compile_id) {
- $_cache_key .= '|'.$smarty->compile_id;
+ $_cache_key .= '|' . $smarty->compile_id;
}
if (isset(self::$sources[$_cache_key])) {
return self::$sources[$_cache_key];
@@ -533,14 +566,17 @@ abstract class Smarty_Resource {
// runtime cache
self::$sources[$_cache_key] = $source;
+
return $source;
}
/**
* initialize Config Source Object for given resource
*
- * @param Smarty_Internal_Config $_config config object
- * @return Smarty_Config_Source Source Object
+ * @param Smarty_Internal_Config $_config config object
+ *
+ * @throws SmartyException
+ * @return Smarty_Config_Source Source Object
*/
public static function config(Smarty_Internal_Config $_config)
{
@@ -558,7 +594,7 @@ abstract class Smarty_Resource {
// load resource handler, identify unique resource name
$resource = Smarty_Resource::load($smarty, $type);
- $unique_resource_name = $resource->buildUniqueResourceName($smarty, $name);
+ $unique_resource_name = $resource->buildUniqueResourceName($smarty, $name, true);
// check runtime cache
$_cache_key = 'config|' . $unique_resource_name;
@@ -572,107 +608,119 @@ abstract class Smarty_Resource {
// runtime cache
self::$sources[$_cache_key] = $source;
+
return $source;
}
-
}
/**
* Smarty Resource Data Object
- *
* Meta Data Container for Template Files
*
- * @package Smarty
+ * @package Smarty
* @subpackage TemplateResources
- * @author Rodney Rehm
- *
+ * @author Rodney Rehm
* @property integer $timestamp Source Timestamp
- * @property boolean $exists Source Existance
+ * @property boolean $exists Source Existence
* @property boolean $template Extended Template reference
* @property string $content Source Content
*/
-class Smarty_Template_Source {
-
+class Smarty_Template_Source
+{
/**
* Name of the Class to compile this resource's contents with
+ *
* @var string
*/
public $compiler_class = null;
/**
* Name of the Class to tokenize this resource's contents with
+ *
* @var string
*/
public $template_lexer_class = null;
/**
* Name of the Class to parse this resource's contents with
+ *
* @var string
*/
public $template_parser_class = null;
/**
* Unique Template ID
+ *
* @var string
*/
public $uid = null;
/**
* Template Resource (Smarty_Internal_Template::$template_resource)
+ *
* @var string
*/
public $resource = null;
/**
* Resource Type
+ *
* @var string
*/
public $type = null;
/**
* Resource Name
+ *
* @var string
*/
public $name = null;
/**
* Unique Resource Name
+ *
* @var string
*/
public $unique_resource = null;
/**
* Source Filepath
+ *
* @var string
*/
public $filepath = null;
/**
* Source is bypassing compiler
+ *
* @var boolean
*/
public $uncompiled = null;
/**
* Source must be recompiled on every occasion
+ *
* @var boolean
*/
public $recompiled = null;
/**
* The Components an extended template is made of
+ *
* @var array
*/
public $components = null;
/**
* Resource Handler
+ *
* @var Smarty_Resource
*/
public $handler = null;
/**
* Smarty instance
+ *
* @var Smarty
*/
public $smarty = null;
@@ -680,12 +728,12 @@ class Smarty_Template_Source {
/**
* create Source Object container
*
- * @param Smarty_Resource $handler Resource Handler this source object communicates with
- * @param Smarty $smarty Smarty instance this source object belongs to
- * @param string $resource full template_resource
- * @param string $type type of resource
- * @param string $name resource name
- * @param string $unique_resource unqiue resource name
+ * @param Smarty_Resource $handler Resource Handler this source object communicates with
+ * @param Smarty $smarty Smarty instance this source object belongs to
+ * @param string $resource full template_resource
+ * @param string $type type of resource
+ * @param string $name resource name
+ * @param string $unique_resource unique resource name
*/
public function __construct(Smarty_Resource $handler, Smarty $smarty, $resource, $type, $name, $unique_resource)
{
@@ -707,10 +755,11 @@ class Smarty_Template_Source {
/**
* get a Compiled Object of this source
*
- * @param Smarty_Internal_Template $_template template objet
+ * @param Smarty_Internal_Template|Smarty_Internal_Config $_template template object
+ *
* @return Smarty_Template_Compiled compiled object
*/
- public function getCompiled(Smarty_Internal_Template $_template)
+ public function getCompiled($_template)
{
// check runtime cache
$_cache_key = $this->unique_resource . '#' . $_template->compile_id;
@@ -742,8 +791,9 @@ class Smarty_Template_Source {
/**
* <<magic>> Generic Setter.
*
- * @param string $property_name valid: timestamp, exists, content, template
- * @param mixed $value new value (is not checked)
+ * @param string $property_name valid: timestamp, exists, content, template
+ * @param mixed $value new value (is not checked)
+ *
* @throws SmartyException if $property_name is not valid
*/
public function __set($property_name, $value)
@@ -753,7 +803,7 @@ class Smarty_Template_Source {
case 'timestamp':
case 'exists':
case 'content':
- // required for extends: only
+ // required for extends: only
case 'template':
$this->$property_name = $value;
break;
@@ -766,7 +816,8 @@ class Smarty_Template_Source {
/**
* <<magic>> Generic getter.
*
- * @param string $property_name valid: timestamp, exists, content
+ * @param string $property_name valid: timestamp, exists, content
+ *
* @return mixed
* @throws SmartyException if $property_name is not valid
*/
@@ -776,6 +827,7 @@ class Smarty_Template_Source {
case 'timestamp':
case 'exists':
$this->handler->populateTimestamp($this);
+
return $this->$property_name;
case 'content':
@@ -785,62 +837,65 @@ class Smarty_Template_Source {
throw new SmartyException("source property '$property_name' does not exist.");
}
}
-
}
/**
* Smarty Resource Data Object
- *
* Meta Data Container for Template Files
*
- * @package Smarty
+ * @package Smarty
* @subpackage TemplateResources
- * @author Rodney Rehm
- *
+ * @author Rodney Rehm
* @property string $content compiled content
*/
-class Smarty_Template_Compiled {
-
+class Smarty_Template_Compiled
+{
/**
* Compiled Filepath
+ *
* @var string
*/
public $filepath = null;
/**
* Compiled Timestamp
+ *
* @var integer
*/
public $timestamp = null;
/**
- * Compiled Existance
+ * Compiled Existence
+ *
* @var boolean
*/
public $exists = false;
/**
* Compiled Content Loaded
+ *
* @var boolean
*/
public $loaded = false;
/**
* Template was compiled
+ *
* @var boolean
*/
public $isCompiled = false;
/**
* Source Object
+ *
* @var Smarty_Template_Source
*/
public $source = null;
/**
* Metadata properties
- *
* populated by Smarty_Internal_Template::decodeProperties()
+ *
* @var array
*/
public $_properties = null;
@@ -854,7 +909,4 @@ class Smarty_Template_Compiled {
{
$this->source = $source;
}
-
}
-
-?> \ No newline at end of file
diff --git a/library/Smarty/libs/sysplugins/smarty_resource_custom.php b/library/Smarty/libs/sysplugins/smarty_resource_custom.php
index 9ec1f356b..7c11bd8c7 100644
--- a/library/Smarty/libs/sysplugins/smarty_resource_custom.php
+++ b/library/Smarty/libs/sysplugins/smarty_resource_custom.php
@@ -2,21 +2,20 @@
/**
* Smarty Resource Plugin
*
- * @package Smarty
+ * @package Smarty
* @subpackage TemplateResources
- * @author Rodney Rehm
+ * @author Rodney Rehm
*/
/**
* Smarty Resource Plugin
- *
* Wrapper Implementation for custom resource plugins
*
- * @package Smarty
+ * @package Smarty
* @subpackage TemplateResources
*/
-abstract class Smarty_Resource_Custom extends Smarty_Resource {
-
+abstract class Smarty_Resource_Custom extends Smarty_Resource
+{
/**
* fetch template and its modification time from data source
*
@@ -24,15 +23,15 @@ abstract class Smarty_Resource_Custom extends Smarty_Resource {
* @param string &$source template source
* @param integer &$mtime template modification timestamp (epoch)
*/
- protected abstract function fetch($name, &$source, &$mtime);
+ abstract protected function fetch($name, &$source, &$mtime);
/**
* Fetch template's modification timestamp from data source
- *
* {@internal implementing this method is optional.
* Only implement it if modification times can be accessed faster than loading the complete template source.}}
*
- * @param string $name template name
+ * @param string $name template name
+ *
* @return integer|boolean timestamp (epoch) the template was modified, or false if not found
*/
protected function fetchTimestamp($name)
@@ -46,9 +45,9 @@ abstract class Smarty_Resource_Custom extends Smarty_Resource {
* @param Smarty_Template_Source $source source object
* @param Smarty_Internal_Template $_template template object
*/
- public function populate(Smarty_Template_Source $source, Smarty_Internal_Template $_template=null)
+ public function populate(Smarty_Template_Source $source, Smarty_Internal_Template $_template = null)
{
- $source->filepath = strtolower($source->type . ':' . $source->name);
+ $source->filepath = $source->type . ':' . $source->name;
$source->uid = sha1($source->type . ':' . $source->name);
$mtime = $this->fetchTimestamp($source->name);
@@ -57,8 +56,9 @@ abstract class Smarty_Resource_Custom extends Smarty_Resource {
} else {
$this->fetch($source->name, $content, $timestamp);
$source->timestamp = isset($timestamp) ? $timestamp : false;
- if( isset($content) )
+ if (isset($content)) {
$source->content = $content;
+ }
}
$source->exists = !!$source->timestamp;
}
@@ -66,9 +66,10 @@ abstract class Smarty_Resource_Custom extends Smarty_Resource {
/**
* Load template's source into current template object
*
- * @param Smarty_Template_Source $source source object
- * @return string template source
- * @throws SmartyException if source cannot be loaded
+ * @param Smarty_Template_Source $source source object
+ *
+ * @return string template source
+ * @throws SmartyException if source cannot be loaded
*/
public function getContent(Smarty_Template_Source $source)
{
@@ -83,14 +84,12 @@ abstract class Smarty_Resource_Custom extends Smarty_Resource {
/**
* Determine basename for compiled filename
*
- * @param Smarty_Template_Source $source source object
- * @return string resource's basename
+ * @param Smarty_Template_Source $source source object
+ *
+ * @return string resource's basename
*/
protected function getBasename(Smarty_Template_Source $source)
{
return basename($source->name);
}
-
}
-
-?> \ No newline at end of file
diff --git a/library/Smarty/libs/sysplugins/smarty_resource_recompiled.php b/library/Smarty/libs/sysplugins/smarty_resource_recompiled.php
index ab55b93a6..66b36e17a 100644
--- a/library/Smarty/libs/sysplugins/smarty_resource_recompiled.php
+++ b/library/Smarty/libs/sysplugins/smarty_resource_recompiled.php
@@ -2,26 +2,26 @@
/**
* Smarty Resource Plugin
*
- * @package Smarty
+ * @package Smarty
* @subpackage TemplateResources
- * @author Rodney Rehm
+ * @author Rodney Rehm
*/
/**
* Smarty Resource Plugin
- *
* Base implementation for resource plugins that don't compile cache
*
- * @package Smarty
+ * @package Smarty
* @subpackage TemplateResources
*/
-abstract class Smarty_Resource_Recompiled extends Smarty_Resource {
-
+abstract class Smarty_Resource_Recompiled extends Smarty_Resource
+{
/**
* populate Compiled Object with compiled filepath
*
- * @param Smarty_Template_Compiled $compiled compiled object
- * @param Smarty_Internal_Template $_template template object
+ * @param Smarty_Template_Compiled $compiled compiled object
+ * @param Smarty_Internal_Template $_template template object
+ *
* @return void
*/
public function populateCompiledFilepath(Smarty_Template_Compiled $compiled, Smarty_Internal_Template $_template)
@@ -30,7 +30,4 @@ abstract class Smarty_Resource_Recompiled extends Smarty_Resource {
$compiled->timestamp = false;
$compiled->exists = false;
}
-
}
-
-?> \ No newline at end of file
diff --git a/library/Smarty/libs/sysplugins/smarty_resource_uncompiled.php b/library/Smarty/libs/sysplugins/smarty_resource_uncompiled.php
index ea8023507..4ee5d7908 100644
--- a/library/Smarty/libs/sysplugins/smarty_resource_uncompiled.php
+++ b/library/Smarty/libs/sysplugins/smarty_resource_uncompiled.php
@@ -2,29 +2,29 @@
/**
* Smarty Resource Plugin
*
- * @package Smarty
+ * @package Smarty
* @subpackage TemplateResources
- * @author Rodney Rehm
+ * @author Rodney Rehm
*/
/**
* Smarty Resource Plugin
- *
* Base implementation for resource plugins that don't use the compiler
*
- * @package Smarty
+ * @package Smarty
* @subpackage TemplateResources
*/
-abstract class Smarty_Resource_Uncompiled extends Smarty_Resource {
-
+abstract class Smarty_Resource_Uncompiled extends Smarty_Resource
+{
/**
* Render and output the template (without using the compiler)
*
- * @param Smarty_Template_Source $source source object
- * @param Smarty_Internal_Template $_template template object
- * @throws SmartyException on failure
+ * @param Smarty_Template_Source $source source object
+ * @param Smarty_Internal_Template $_template template object
+ *
+ * @throws SmartyException on failure
*/
- public abstract function renderUncompiled(Smarty_Template_Source $source, Smarty_Internal_Template $_template);
+ abstract public function renderUncompiled(Smarty_Template_Source $source, Smarty_Internal_Template $_template);
/**
* populate compiled object with compiled filepath
@@ -38,7 +38,4 @@ abstract class Smarty_Resource_Uncompiled extends Smarty_Resource {
$compiled->timestamp = false;
$compiled->exists = false;
}
-
}
-
-?> \ No newline at end of file
diff --git a/library/Smarty/libs/sysplugins/smarty_security.php b/library/Smarty/libs/sysplugins/smarty_security.php
index f8b31d963..9f7183bd0 100644
--- a/library/Smarty/libs/sysplugins/smarty_security.php
+++ b/library/Smarty/libs/sysplugins/smarty_security.php
@@ -2,25 +2,25 @@
/**
* Smarty plugin
*
- * @package Smarty
+ * @package Smarty
* @subpackage Security
- * @author Uwe Tews
+ * @author Uwe Tews
*/
-
+
/*
* FIXME: Smarty_Security API
* - getter and setter instead of public properties would allow cultivating an internal cache properly
* - current implementation of isTrustedResourceDir() assumes that Smarty::$template_dir and Smarty::$config_dir are immutable
* the cache is killed every time either of the variables change. That means that two distinct Smarty objects with differing
- * $template_dir or $config_dir should NOT share the same Smarty_Security instance,
- * as this would lead to (severe) performance penalty! how should this be handled?
+ * $template_dir or $config_dir should NOT share the same Smarty_Security instance,
+ * as this would lead to (severe) performance penalty! how should this be handled?
*/
/**
* This class does contain the security settings
*/
-class Smarty_Security {
-
+class Smarty_Security
+{
/**
* This determines how Smarty handles "<?php ... ?>" tags in templates.
* possible values:
@@ -56,17 +56,17 @@ class Smarty_Security {
public $trusted_uri = array();
/**
* This is an array of trusted static classes.
- *
* If empty access to all static classes is allowed.
* If set to 'none' none is allowed.
+ *
* @var array
*/
public $static_classes = array();
/**
* This is an array of trusted PHP functions.
- *
* If empty all functions are allowed.
* To disable all PHP functions set $php_functions = null.
+ *
* @var array
*/
public $php_functions = array(
@@ -77,10 +77,10 @@ class Smarty_Security {
'nl2br',
);
/**
- * This is an array of trusted PHP modifers.
- *
+ * This is an array of trusted PHP modifiers.
* If empty all modifiers are allowed.
- * To disable all modifier set $modifiers = null.
+ * To disable all modifier set $php_modifiers = null.
+ *
* @var array
*/
public $php_modifiers = array(
@@ -89,83 +89,90 @@ class Smarty_Security {
);
/**
* This is an array of allowed tags.
- *
* If empty no restriction by allowed_tags.
+ *
* @var array
*/
public $allowed_tags = array();
/**
* This is an array of disabled tags.
- *
* If empty no restriction by disabled_tags.
+ *
* @var array
*/
public $disabled_tags = array();
/**
* This is an array of allowed modifier plugins.
- *
* If empty no restriction by allowed_modifiers.
+ *
* @var array
*/
public $allowed_modifiers = array();
/**
* This is an array of disabled modifier plugins.
- *
* If empty no restriction by disabled_modifiers.
+ *
* @var array
*/
public $disabled_modifiers = array();
/**
* This is an array of trusted streams.
- *
* If empty all streams are allowed.
* To disable all streams set $streams = null.
+ *
* @var array
*/
public $streams = array('file');
/**
* + flag if constants can be accessed from template
+ *
* @var boolean
*/
public $allow_constants = true;
/**
* + flag if super globals can be accessed from template
+ *
* @var boolean
*/
public $allow_super_globals = true;
/**
- * Cache for $resource_dir lookups
+ * Cache for $resource_dir lookup
+ *
* @var array
*/
protected $_resource_dir = null;
/**
- * Cache for $template_dir lookups
+ * Cache for $template_dir lookup
+ *
* @var array
*/
protected $_template_dir = null;
/**
- * Cache for $config_dir lookups
+ * Cache for $config_dir lookup
+ *
* @var array
*/
protected $_config_dir = null;
/**
- * Cache for $secure_dir lookups
+ * Cache for $secure_dir lookup
+ *
* @var array
*/
protected $_secure_dir = null;
/**
- * Cache for $php_resource_dir lookups
+ * Cache for $php_resource_dir lookup
+ *
* @var array
*/
protected $_php_resource_dir = null;
/**
- * Cache for $trusted_dir lookups
+ * Cache for $trusted_dir lookup
+ *
* @var array
*/
protected $_trusted_dir = null;
-
-
+
/**
* @param Smarty $smarty
*/
@@ -173,13 +180,14 @@ class Smarty_Security {
{
$this->smarty = $smarty;
}
-
+
/**
* Check if PHP function is trusted.
*
- * @param string $function_name
- * @param object $compiler compiler object
- * @return boolean true if function is trusted
+ * @param string $function_name
+ * @param object $compiler compiler object
+ *
+ * @return boolean true if function is trusted
* @throws SmartyCompilerException if php function is not trusted
*/
public function isTrustedPhpFunction($function_name, $compiler)
@@ -189,15 +197,17 @@ class Smarty_Security {
}
$compiler->trigger_template_error("PHP function '{$function_name}' not allowed by security setting");
+
return false; // should not, but who knows what happens to the compiler in the future?
}
/**
* Check if static class is trusted.
*
- * @param string $class_name
- * @param object $compiler compiler object
- * @return boolean true if class is trusted
+ * @param string $class_name
+ * @param object $compiler compiler object
+ *
+ * @return boolean true if class is trusted
* @throws SmartyCompilerException if static class is not trusted
*/
public function isTrustedStaticClass($class_name, $compiler)
@@ -207,15 +217,17 @@ class Smarty_Security {
}
$compiler->trigger_template_error("access to static class '{$class_name}' not allowed by security setting");
+
return false; // should not, but who knows what happens to the compiler in the future?
}
/**
* Check if PHP modifier is trusted.
*
- * @param string $modifier_name
- * @param object $compiler compiler object
- * @return boolean true if modifier is trusted
+ * @param string $modifier_name
+ * @param object $compiler compiler object
+ *
+ * @return boolean true if modifier is trusted
* @throws SmartyCompilerException if modifier is not trusted
*/
public function isTrustedPhpModifier($modifier_name, $compiler)
@@ -225,22 +237,25 @@ class Smarty_Security {
}
$compiler->trigger_template_error("modifier '{$modifier_name}' not allowed by security setting");
+
return false; // should not, but who knows what happens to the compiler in the future?
}
/**
* Check if tag is trusted.
*
- * @param string $tag_name
- * @param object $compiler compiler object
- * @return boolean true if tag is trusted
+ * @param string $tag_name
+ * @param object $compiler compiler object
+ *
+ * @return boolean true if tag is trusted
* @throws SmartyCompilerException if modifier is not trusted
*/
public function isTrustedTag($tag_name, $compiler)
{
// check for internal always required tags
if (in_array($tag_name, array('assign', 'call', 'private_filter', 'private_block_plugin', 'private_function_plugin', 'private_object_block_function',
- 'private_object_function', 'private_registered_function', 'private_registered_block', 'private_special_variable', 'private_print_expression', 'private_modifier'))) {
+ 'private_object_function', 'private_registered_function', 'private_registered_block', 'private_special_variable', 'private_print_expression', 'private_modifier'))
+ ) {
return true;
}
// check security settings
@@ -250,20 +265,22 @@ class Smarty_Security {
} else {
$compiler->trigger_template_error("tag '{$tag_name}' disabled by security setting", $compiler->lex->taglineno);
}
- } else if (in_array($tag_name, $this->allowed_tags) && !in_array($tag_name, $this->disabled_tags)) {
+ } elseif (in_array($tag_name, $this->allowed_tags) && !in_array($tag_name, $this->disabled_tags)) {
return true;
} else {
$compiler->trigger_template_error("tag '{$tag_name}' not allowed by security setting", $compiler->lex->taglineno);
}
+
return false; // should not, but who knows what happens to the compiler in the future?
}
/**
* Check if modifier plugin is trusted.
*
- * @param string $modifier_name
- * @param object $compiler compiler object
- * @return boolean true if tag is trusted
+ * @param string $modifier_name
+ * @param object $compiler compiler object
+ *
+ * @return boolean true if tag is trusted
* @throws SmartyCompilerException if modifier is not trusted
*/
public function isTrustedModifier($modifier_name, $compiler)
@@ -279,19 +296,21 @@ class Smarty_Security {
} else {
$compiler->trigger_template_error("modifier '{$modifier_name}' disabled by security setting", $compiler->lex->taglineno);
}
- } else if (in_array($modifier_name, $this->allowed_modifiers) && !in_array($modifier_name, $this->disabled_modifiers)) {
+ } elseif (in_array($modifier_name, $this->allowed_modifiers) && !in_array($modifier_name, $this->disabled_modifiers)) {
return true;
} else {
$compiler->trigger_template_error("modifier '{$modifier_name}' not allowed by security setting", $compiler->lex->taglineno);
}
+
return false; // should not, but who knows what happens to the compiler in the future?
}
/**
* Check if stream is trusted.
*
- * @param string $stream_name
- * @return boolean true if stream is trusted
+ * @param string $stream_name
+ *
+ * @return boolean true if stream is trusted
* @throws SmartyException if stream is not trusted
*/
public function isTrustedStream($stream_name)
@@ -306,8 +325,9 @@ class Smarty_Security {
/**
* Check if directory of file resource is trusted.
*
- * @param string $filepath
- * @return boolean true if directory is trusted
+ * @param string $filepath
+ *
+ * @return boolean true if directory is trusted
* @throws SmartyException if directory is not trusted
*/
public function isTrustedResourceDir($filepath)
@@ -321,8 +341,8 @@ class Smarty_Security {
// check if index is outdated
if ((!$this->_template_dir || $this->_template_dir !== $_template_dir)
- || (!$this->_config_dir || $this->_config_dir !== $_config_dir)
- || (!empty($this->secure_dir) && (!$this->_secure_dir || $this->_secure_dir !== $this->secure_dir))
+ || (!$this->_config_dir || $this->_config_dir !== $_config_dir)
+ || (!empty($this->secure_dir) && (!$this->_secure_dir || $this->_secure_dir !== $this->secure_dir))
) {
$this->_resource_dir = array();
$_template = true;
@@ -365,8 +385,9 @@ class Smarty_Security {
$_directory[$directory] = true;
// test if the directory is trusted
if (isset($this->_resource_dir[$directory])) {
- // merge sub directories of current $directory into _resource_dir to speed up subsequent lookups
+ // merge sub directories of current $directory into _resource_dir to speed up subsequent lookup
$this->_resource_dir = array_merge($this->_resource_dir, $_directory);
+
return true;
}
// abort if we've reached root
@@ -380,15 +401,16 @@ class Smarty_Security {
// give up
throw new SmartyException("directory '{$_filepath}' not allowed by security setting");
}
-
+
/**
* Check if URI (e.g. {fetch} or {html_image}) is trusted
- *
* To simplify things, isTrustedUri() resolves all input to "{$PROTOCOL}://{$HOSTNAME}".
* So "http://username:password@hello.world.example.org:8080/some-path?some=query-string"
* is reduced to "http://hello.world.example.org" prior to applying the patters from {@link $trusted_uri}.
- * @param string $uri
- * @return boolean true if URI is trusted
+ *
+ * @param string $uri
+ *
+ * @return boolean true if URI is trusted
* @throws SmartyException if URI is not trusted
* @uses $trusted_uri for list of patterns to match against $uri
*/
@@ -403,15 +425,16 @@ class Smarty_Security {
}
}
}
-
+
throw new SmartyException("URI '{$uri}' not allowed by security setting");
}
-
+
/**
* Check if directory of file resource is trusted.
*
- * @param string $filepath
- * @return boolean true if directory is trusted
+ * @param string $filepath
+ *
+ * @return boolean true if directory is trusted
* @throws SmartyException if PHP directory is not trusted
*/
public function isTrustedPHPDir($filepath)
@@ -439,8 +462,9 @@ class Smarty_Security {
$_directory[] = $directory;
// test if the directory is trusted
if (isset($this->_php_resource_dir[$directory])) {
- // merge sub directories of current $directory into _resource_dir to speed up subsequent lookups
+ // merge sub directories of current $directory into _resource_dir to speed up subsequent lookup
$this->_php_resource_dir = array_merge($this->_php_resource_dir, $_directory);
+
return true;
}
// abort if we've reached root
@@ -453,7 +477,4 @@ class Smarty_Security {
throw new SmartyException("directory '{$_filepath}' not allowed by security setting");
}
-
}
-
-?> \ No newline at end of file
diff --git a/library/blueimp_upload/.gitignore b/library/blueimp_upload/.gitignore
new file mode 100644
index 000000000..29a41a8c4
--- /dev/null
+++ b/library/blueimp_upload/.gitignore
@@ -0,0 +1,3 @@
+.DS_Store
+*.pyc
+node_modules
diff --git a/library/blueimp_upload/.jshintrc b/library/blueimp_upload/.jshintrc
new file mode 100644
index 000000000..4ad82e664
--- /dev/null
+++ b/library/blueimp_upload/.jshintrc
@@ -0,0 +1,81 @@
+{
+ "bitwise" : true, // true: Prohibit bitwise operators (&, |, ^, etc.)
+ "camelcase" : true, // true: Identifiers must be in camelCase
+ "curly" : true, // true: Require {} for every new block or scope
+ "eqeqeq" : true, // true: Require triple equals (===) for comparison
+ "forin" : true, // true: Require filtering for..in loops with obj.hasOwnProperty()
+ "immed" : true, // true: Require immediate invocations to be wrapped in parens
+ // e.g. `(function () { } ());`
+ "indent" : 4, // {int} Number of spaces to use for indentation
+ "latedef" : true, // true: Require variables/functions to be defined before being used
+ "newcap" : true, // true: Require capitalization of all constructor functions e.g. `new F()`
+ "noarg" : true, // true: Prohibit use of `arguments.caller` and `arguments.callee`
+ "noempty" : true, // true: Prohibit use of empty blocks
+ "nonew" : true, // true: Prohibit use of constructors for side-effects (without assignment)
+ "plusplus" : false, // true: Prohibit use of `++` & `--`
+ "quotmark" : "single", // Quotation mark consistency:
+ // false : do nothing (default)
+ // true : ensure whatever is used is consistent
+ // "single" : require single quotes
+ // "double" : require double quotes
+ "undef" : true, // true: Require all non-global variables to be declared (prevents global leaks)
+ "unused" : true, // true: Require all defined variables be used
+ "strict" : true, // true: Requires all functions run in ES5 Strict Mode
+ "trailing" : true, // true: Prohibit trailing whitespaces
+ "maxparams" : false, // {int} Max number of formal params allowed per function
+ "maxdepth" : false, // {int} Max depth of nested blocks (within functions)
+ "maxstatements" : false, // {int} Max number statements per function
+ "maxcomplexity" : false, // {int} Max cyclomatic complexity per function
+ "maxlen" : false, // {int} Max number of characters per line
+
+ // Relaxing
+ "asi" : false, // true: Tolerate Automatic Semicolon Insertion (no semicolons)
+ "boss" : false, // true: Tolerate assignments where comparisons would be expected
+ "debug" : false, // true: Allow debugger statements e.g. browser breakpoints.
+ "eqnull" : false, // true: Tolerate use of `== null`
+ "es5" : false, // true: Allow ES5 syntax (ex: getters and setters)
+ "esnext" : false, // true: Allow ES.next (ES6) syntax (ex: `const`)
+ "moz" : false, // true: Allow Mozilla specific syntax (extends and overrides esnext features)
+ // (ex: `for each`, multiple try/catch, function expression…)
+ "evil" : false, // true: Tolerate use of `eval` and `new Function()`
+ "expr" : false, // true: Tolerate `ExpressionStatement` as Programs
+ "funcscope" : false, // true: Tolerate defining variables inside control statements"
+ "globalstrict" : false, // true: Allow global "use strict" (also enables 'strict')
+ "iterator" : false, // true: Tolerate using the `__iterator__` property
+ "lastsemic" : false, // true: Tolerate omitting a semicolon for the last statement of a 1-line block
+ "laxbreak" : false, // true: Tolerate possibly unsafe line breakings
+ "laxcomma" : false, // true: Tolerate comma-first style coding
+ "loopfunc" : false, // true: Tolerate functions being defined in loops
+ "multistr" : false, // true: Tolerate multi-line strings
+ "proto" : false, // true: Tolerate using the `__proto__` property
+ "scripturl" : false, // true: Tolerate script-targeted URLs
+ "smarttabs" : false, // true: Tolerate mixed tabs/spaces when used for alignment
+ "shadow" : false, // true: Allows re-define variables later in code e.g. `var x=1; x=2;`
+ "sub" : false, // true: Tolerate using `[]` notation when it can still be expressed in dot notation
+ "supernew" : false, // true: Tolerate `new function () { ... };` and `new Object;`
+ "validthis" : false, // true: Tolerate using this in a non-constructor function
+
+ // Environments
+ "browser" : false, // Web Browser (window, document, etc)
+ "couch" : false, // CouchDB
+ "devel" : false, // Development/debugging (alert, confirm, etc)
+ "dojo" : false, // Dojo Toolkit
+ "jquery" : false, // jQuery
+ "mootools" : false, // MooTools
+ "node" : false, // Node.js
+ "nonstandard" : false, // Widely adopted globals (escape, unescape, etc)
+ "prototypejs" : false, // Prototype and Scriptaculous
+ "rhino" : false, // Rhino
+ "worker" : false, // Web Workers
+ "wsh" : false, // Windows Scripting Host
+ "yui" : false, // Yahoo User Interface
+
+ // Legacy
+ "nomen" : true, // true: Prohibit dangling `_` in variables
+ "onevar" : true, // true: Allow only one `var` statement per function
+ "passfail" : false, // true: Stop on first error
+ "white" : true, // true: Check against strict whitespace and indentation rules
+
+ // Custom Globals
+ "globals" : {} // additional predefined global variables
+}
diff --git a/library/blueimp_upload/CONTRIBUTING.md b/library/blueimp_upload/CONTRIBUTING.md
new file mode 100644
index 000000000..b8708f8b6
--- /dev/null
+++ b/library/blueimp_upload/CONTRIBUTING.md
@@ -0,0 +1,42 @@
+# Issue Guidelines
+
+The issues tracker should only be used for **bugs** or **feature requests**.
+
+Please post **support requests** and **general discussions** about this project to the [support forum](https://groups.google.com/d/forum/jquery-fileupload).
+
+## Bugs
+
+Please follow these guidelines before reporting a bug:
+
+1. **Update to the latest version** &mdash; Check if you can reproduce the issue with the latest version from the `master` branch.
+
+2. **Use the GitHub issue search** &mdash; check if the issue has already been reported. If it has been, please comment on the existing issue.
+
+3. **Isolate the demonstrable problem** &mdash; Try to reproduce the problem with the [Demo](https://blueimp.github.io/jQuery-File-Upload/) or with a reduced test case that includes the least amount of code necessary to reproduce the problem.
+
+4. **Provide a means to reproduce the problem** &mdash; Please provide as much details as possible, e.g. server information, browser and operating system versions, steps to reproduce the problem. If possible, provide a link to your reduced test case, e.g. via [JSFiddle](http://jsfiddle.net/).
+
+
+## Feature requests
+
+Please follow the bug guidelines above for feature requests, i.e. update to the latest version and search for exising issues before posting a new request.
+
+Generally, feature requests might be accepted if the implementation would benefit a broader use case or the project could be considered incomplete without that feature.
+
+If you need help integrating this project into another framework, please post your request to the [support forum](https://groups.google.com/d/forum/jquery-fileupload).
+
+## Pull requests
+
+[Pull requests](https://help.github.com/articles/using-pull-requests) are welcome and the preferred way of accepting code contributions.
+
+However, if you add a server-side upload handler implementation for another framework, please continue to maintain this version in your own fork without sending a pull request. You are welcome to add a link and possibly documentation about your implementation to the [Wiki](https://github.com/blueimp/jQuery-File-Upload/wiki).
+
+Please follow these guidelines before sending a pull request:
+
+1. Update your fork to the latest upstream version.
+
+2. Follow the coding conventions of the original repository. Changes to one of the JavaScript source files are required to pass the [JSHint](http://www.jshint.com/) validation tool.
+
+3. Keep your commits as atomar as possible, i.e. create a new commit for every single bug fix or feature added.
+
+4. Always add meaningfull commit messages.
diff --git a/library/blueimp_upload/Gruntfile.js b/library/blueimp_upload/Gruntfile.js
new file mode 100644
index 000000000..dcdb5d57a
--- /dev/null
+++ b/library/blueimp_upload/Gruntfile.js
@@ -0,0 +1,37 @@
+/*
+ * jQuery File Upload Gruntfile
+ * https://github.com/blueimp/jQuery-File-Upload
+ *
+ * Copyright 2013, Sebastian Tschan
+ * https://blueimp.net
+ *
+ * Licensed under the MIT license:
+ * http://www.opensource.org/licenses/MIT
+ */
+
+/*global module */
+
+module.exports = function (grunt) {
+ 'use strict';
+
+ grunt.initConfig({
+ jshint: {
+ options: {
+ jshintrc: '.jshintrc'
+ },
+ all: [
+ 'Gruntfile.js',
+ 'js/cors/*.js',
+ 'js/*.js',
+ 'server/node/server.js',
+ 'test/test.js'
+ ]
+ }
+ });
+
+ grunt.loadNpmTasks('grunt-contrib-jshint');
+ grunt.loadNpmTasks('grunt-bump-build-git');
+ grunt.registerTask('test', ['jshint']);
+ grunt.registerTask('default', ['test']);
+
+};
diff --git a/library/blueimp_upload/README.md b/library/blueimp_upload/README.md
new file mode 100644
index 000000000..3aa33de42
--- /dev/null
+++ b/library/blueimp_upload/README.md
@@ -0,0 +1,123 @@
+# jQuery File Upload Plugin
+
+## Demo
+[Demo File Upload](https://blueimp.github.io/jQuery-File-Upload/)
+
+## Description
+File Upload widget with multiple file selection, drag&amp;drop support, progress bars, validation and preview images, audio and video for jQuery.
+Supports cross-domain, chunked and resumable file uploads and client-side image resizing. Works with any server-side platform (PHP, Python, Ruby on Rails, Java, Node.js, Go etc.) that supports standard HTML form file uploads.
+
+## Setup
+* [How to setup the plugin on your website](https://github.com/blueimp/jQuery-File-Upload/wiki/Setup)
+* [How to use only the basic plugin (minimal setup guide).](https://github.com/blueimp/jQuery-File-Upload/wiki/Basic-plugin)
+
+## Support
+
+* **[Support Forum](https://groups.google.com/d/forum/jquery-fileupload)**
+**Support requests** and **general discussions** about the File Upload plugin can be posted to the official
+[Support Forum](https://groups.google.com/d/forum/jquery-fileupload).
+If your question is not directly related to the File Upload plugin, you might have a better chance to get a reply by posting to [Stack Overflow](http://stackoverflow.com/questions/tagged/blueimp+jquery+file-upload).
+
+* Bugs and Feature requests
+**Bugs** and **Feature requests** can be reported using the [issues tracker](https://github.com/blueimp/jQuery-File-Upload/issues).
+Please read the [issue guidelines](https://github.com/blueimp/jQuery-File-Upload/blob/master/CONTRIBUTING.md) before posting.
+
+## Features
+* **Multiple file upload:**
+ Allows to select multiple files at once and upload them simultaneously.
+* **Drag & Drop support:**
+ Allows to upload files by dragging them from your desktop or filemanager and dropping them on your browser window.
+* **Upload progress bar:**
+ Shows a progress bar indicating the upload progress for individual files and for all uploads combined.
+* **Cancelable uploads:**
+ Individual file uploads can be canceled to stop the upload progress.
+* **Resumable uploads:**
+ Aborted uploads can be resumed with browsers supporting the Blob API.
+* **Chunked uploads:**
+ Large files can be uploaded in smaller chunks with browsers supporting the Blob API.
+* **Client-side image resizing:**
+ Images can be automatically resized on client-side with browsers supporting the required JS APIs.
+* **Preview images, audio and video:**
+ A preview of image, audio and video files can be displayed before uploading with browsers supporting the required APIs.
+* **No browser plugins (e.g. Adobe Flash) required:**
+ The implementation is based on open standards like HTML5 and JavaScript and requires no additional browser plugins.
+* **Graceful fallback for legacy browsers:**
+ Uploads files via XMLHttpRequests if supported and uses iframes as fallback for legacy browsers.
+* **HTML file upload form fallback:**
+ Allows progressive enhancement by using a standard HTML file upload form as widget element.
+* **Cross-site file uploads:**
+ Supports uploading files to a different domain with cross-site XMLHttpRequests or iframe redirects.
+* **Multiple plugin instances:**
+ Allows to use multiple plugin instances on the same webpage.
+* **Customizable and extensible:**
+ Provides an API to set individual options and define callBack methods for various upload events.
+* **Multipart and file contents stream uploads:**
+ Files can be uploaded as standard "multipart/form-data" or file contents stream (HTTP PUT file upload).
+* **Compatible with any server-side application platform:**
+ Works with any server-side platform (PHP, Python, Ruby on Rails, Java, Node.js, Go etc.) that supports standard HTML form file uploads.
+
+## Requirements
+
+### Mandatory requirements
+* [jQuery](https://jquery.com/) v. 1.6+
+* [jQuery UI widget factory](https://api.jqueryui.com/jQuery.widget/) v. 1.9+ (included)
+* [jQuery Iframe Transport plugin](https://github.com/blueimp/jQuery-File-Upload/blob/master/js/jquery.iframe-transport.js) (included)
+
+The jQuery UI widget factory is a requirement for the basic File Upload plugin, but very lightweight without any other dependencies from the jQuery UI suite.
+
+The jQuery Iframe Transport is required for [browsers without XHR file upload support](https://github.com/blueimp/jQuery-File-Upload/wiki/Browser-support).
+
+### Optional requirements
+* [JavaScript Templates engine](https://github.com/blueimp/JavaScript-Templates) v. 2.5.4+
+* [JavaScript Load Image library](https://github.com/blueimp/JavaScript-Load-Image) v. 1.13.0+
+* [JavaScript Canvas to Blob polyfill](https://github.com/blueimp/JavaScript-Canvas-to-Blob) v. 2.1.1+
+* [blueimp Gallery](https://github.com/blueimp/Gallery) v. 2.15.1+
+* [Bootstrap CSS framework](http://getbootstrap.com/) v. 3.2.0+
+* [Glyphicons](http://glyphicons.com/)
+
+The JavaScript Templates engine is used to render the selected and uploaded files for the Basic Plus UI and jQuery UI versions.
+
+The JavaScript Load Image library and JavaScript Canvas to Blob polyfill are required for the image previews and resizing functionality.
+
+The blueimp Gallery is used to display the uploaded images in a lightbox.
+
+The user interface of all versions except the jQuery UI version is built with Twitter's [Bootstrap](http://getbootstrap.com/) framework and icons from [Glyphicons](http://glyphicons.com/).
+
+### Cross-domain requirements
+[Cross-domain File Uploads](https://github.com/blueimp/jQuery-File-Upload/wiki/Cross-domain-uploads) using the [Iframe Transport plugin](https://github.com/blueimp/jQuery-File-Upload/blob/master/js/jquery.iframe-transport.js) require a redirect back to the origin server to retrieve the upload results. The [example implementation](https://github.com/blueimp/jQuery-File-Upload/blob/master/js/main.js) makes use of [result.html](https://github.com/blueimp/jQuery-File-Upload/blob/master/cors/result.html) as a static redirect page for the origin server.
+
+The repository also includes the [jQuery XDomainRequest Transport plugin](https://github.com/blueimp/jQuery-File-Upload/blob/master/js/cors/jquery.xdr-transport.js), which enables limited cross-domain AJAX requests in Microsoft Internet Explorer 8 and 9 (IE 10 supports cross-domain XHR requests).
+The XDomainRequest object allows GET and POST requests only and doesn't support file uploads. It is used on the [Demo](https://blueimp.github.io/jQuery-File-Upload/) to delete uploaded files from the cross-domain demo file upload service.
+
+## Browsers
+
+### Desktop browsers
+The File Upload plugin is regularly tested with the latest browser versions and supports the following minimal versions:
+
+* Google Chrome
+* Apple Safari 4.0+
+* Mozilla Firefox 3.0+
+* Opera 11.0+
+* Microsoft Internet Explorer 6.0+
+
+### Mobile browsers
+The File Upload plugin has been tested with and supports the following mobile browsers:
+
+* Apple Safari on iOS 6.0+
+* Google Chrome on iOS 6.0+
+* Google Chrome on Android 4.0+
+* Default Browser on Android 2.3+
+* Opera Mobile 12.0+
+
+### Supported features
+For a detailed overview of the features supported by each browser version please have a look at the [Extended browser support information](https://github.com/blueimp/jQuery-File-Upload/wiki/Browser-support).
+
+## License
+Released under the [MIT license](http://www.opensource.org/licenses/MIT).
+
+## Donations
+jQuery File Upload is free software, but you can donate to support the developer, Sebastian Tschan:
+
+Flattr: [![Flattr](https://api.flattr.com/button/flattr-badge-large.png)](https://flattr.com/thing/286433/jQuery-File-Upload-Plugin)
+
+PayPal: [![PayPal](https://www.paypalobjects.com/WEBSCR-640-20110429-1/en_US/i/btn/btn_donateCC_LG.gif)](https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=PYWYSYP77KL54)
diff --git a/library/blueimp_upload/angularjs.html b/library/blueimp_upload/angularjs.html
new file mode 100644
index 000000000..2a3ca2007
--- /dev/null
+++ b/library/blueimp_upload/angularjs.html
@@ -0,0 +1,211 @@
+<!DOCTYPE HTML>
+<!--
+/*
+ * jQuery File Upload Plugin AngularJS Demo 2.2.0
+ * https://github.com/blueimp/jQuery-File-Upload
+ *
+ * Copyright 2013, Sebastian Tschan
+ * https://blueimp.net
+ *
+ * Licensed under the MIT license:
+ * http://www.opensource.org/licenses/MIT
+ */
+-->
+<html lang="en">
+<head>
+<!-- Force latest IE rendering engine or ChromeFrame if installed -->
+<!--[if IE]>
+<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
+<![endif]-->
+<meta charset="utf-8">
+<title>jQuery File Upload Demo - AngularJS version</title>
+<meta name="description" content="File Upload widget with multiple file selection, drag&amp;drop support, progress bars, validation and preview images, audio and video for AngularJS. Supports cross-domain, chunked and resumable file uploads and client-side image resizing. Works with any server-side platform (PHP, Python, Ruby on Rails, Java, Node.js, Go etc.) that supports standard HTML form file uploads.">
+<meta name="viewport" content="width=device-width, initial-scale=1.0">
+<!-- Bootstrap styles -->
+<link rel="stylesheet" href="//netdna.bootstrapcdn.com/bootstrap/3.2.0/css/bootstrap.min.css">
+<!-- Generic page styles -->
+<link rel="stylesheet" href="css/style.css">
+<!-- blueimp Gallery styles -->
+<link rel="stylesheet" href="//blueimp.github.io/Gallery/css/blueimp-gallery.min.css">
+<!-- CSS to style the file input field as button and adjust the Bootstrap progress bars -->
+<link rel="stylesheet" href="css/jquery.fileupload.css">
+<link rel="stylesheet" href="css/jquery.fileupload-ui.css">
+<!-- CSS adjustments for browsers with JavaScript disabled -->
+<noscript><link rel="stylesheet" href="css/jquery.fileupload-noscript.css"></noscript>
+<noscript><link rel="stylesheet" href="css/jquery.fileupload-ui-noscript.css"></noscript>
+<style>
+/* Hide Angular JS elements before initializing */
+.ng-cloak {
+ display: none;
+}
+</style>
+</head>
+<body>
+<div class="navbar navbar-default navbar-fixed-top">
+ <div class="container">
+ <div class="navbar-header">
+ <button type="button" class="navbar-toggle" data-toggle="collapse" data-target=".navbar-fixed-top .navbar-collapse">
+ <span class="icon-bar"></span>
+ <span class="icon-bar"></span>
+ <span class="icon-bar"></span>
+ </button>
+ <a class="navbar-brand" href="https://github.com/blueimp/jQuery-File-Upload">jQuery File Upload</a>
+ </div>
+ <div class="navbar-collapse collapse">
+ <ul class="nav navbar-nav">
+ <li><a href="https://github.com/blueimp/jQuery-File-Upload/tags">Download</a></li>
+ <li><a href="https://github.com/blueimp/jQuery-File-Upload">Source Code</a></li>
+ <li><a href="https://github.com/blueimp/jQuery-File-Upload/wiki">Documentation</a></li>
+ <li><a href="https://blueimp.net">&copy; Sebastian Tschan</a></li>
+ </ul>
+ </div>
+ </div>
+</div>
+<div class="container">
+ <h1>jQuery File Upload Demo</h1>
+ <h2 class="lead">AngularJS version</h2>
+ <ul class="nav nav-tabs">
+ <li><a href="basic.html">Basic</a></li>
+ <li><a href="basic-plus.html">Basic Plus</a></li>
+ <li><a href="index.html">Basic Plus UI</a></li>
+ <li class="active"><a href="angularjs.html">AngularJS</a></li>
+ <li><a href="jquery-ui.html">jQuery UI</a></li>
+ </ul>
+ <br>
+ <blockquote>
+ <p>File Upload widget with multiple file selection, drag&amp;drop support, progress bars, validation and preview images, audio and video for AngularJS.<br>
+ Supports cross-domain, chunked and resumable file uploads and client-side image resizing.<br>
+ Works with any server-side platform (PHP, Python, Ruby on Rails, Java, Node.js, Go etc.) that supports standard HTML form file uploads.</p>
+ </blockquote>
+ <br>
+ <!-- The file upload form used as target for the file upload widget -->
+ <form id="fileupload" action="//jquery-file-upload.appspot.com/" method="POST" enctype="multipart/form-data" data-ng-app="demo" data-ng-controller="DemoFileUploadController" data-file-upload="options" data-ng-class="{'fileupload-processing': processing() || loadingFiles}">
+ <!-- Redirect browsers with JavaScript disabled to the origin page -->
+ <noscript><input type="hidden" name="redirect" value="https://blueimp.github.io/jQuery-File-Upload/"></noscript>
+ <!-- The fileupload-buttonbar contains buttons to add/delete files and start/cancel the upload -->
+ <div class="row fileupload-buttonbar">
+ <div class="col-lg-7">
+ <!-- The fileinput-button span is used to style the file input field as button -->
+ <span class="btn btn-success fileinput-button" ng-class="{disabled: disabled}">
+ <i class="glyphicon glyphicon-plus"></i>
+ <span>Add files...</span>
+ <input type="file" name="files[]" multiple ng-disabled="disabled">
+ </span>
+ <button type="button" class="btn btn-primary start" data-ng-click="submit()">
+ <i class="glyphicon glyphicon-upload"></i>
+ <span>Start upload</span>
+ </button>
+ <button type="button" class="btn btn-warning cancel" data-ng-click="cancel()">
+ <i class="glyphicon glyphicon-ban-circle"></i>
+ <span>Cancel upload</span>
+ </button>
+ <!-- The global file processing state -->
+ <span class="fileupload-process"></span>
+ </div>
+ <!-- The global progress state -->
+ <div class="col-lg-5 fade" data-ng-class="{in: active()}">
+ <!-- The global progress bar -->
+ <div class="progress progress-striped active" data-file-upload-progress="progress()"><div class="progress-bar progress-bar-success" data-ng-style="{width: num + '%'}"></div></div>
+ <!-- The extended global progress state -->
+ <div class="progress-extended">&nbsp;</div>
+ </div>
+ </div>
+ <!-- The table listing the files available for upload/download -->
+ <table class="table table-striped files ng-cloak">
+ <tr data-ng-repeat="file in queue" data-ng-class="{'processing': file.$processing()}">
+ <td data-ng-switch data-on="!!file.thumbnailUrl">
+ <div class="preview" data-ng-switch-when="true">
+ <a data-ng-href="{{file.url}}" title="{{file.name}}" download="{{file.name}}" data-gallery><img data-ng-src="{{file.thumbnailUrl}}" alt=""></a>
+ </div>
+ <div class="preview" data-ng-switch-default data-file-upload-preview="file"></div>
+ </td>
+ <td>
+ <p class="name" data-ng-switch data-on="!!file.url">
+ <span data-ng-switch-when="true" data-ng-switch data-on="!!file.thumbnailUrl">
+ <a data-ng-switch-when="true" data-ng-href="{{file.url}}" title="{{file.name}}" download="{{file.name}}" data-gallery>{{file.name}}</a>
+ <a data-ng-switch-default data-ng-href="{{file.url}}" title="{{file.name}}" download="{{file.name}}">{{file.name}}</a>
+ </span>
+ <span data-ng-switch-default>{{file.name}}</span>
+ </p>
+ <strong data-ng-show="file.error" class="error text-danger">{{file.error}}</strong>
+ </td>
+ <td>
+ <p class="size">{{file.size | formatFileSize}}</p>
+ <div class="progress progress-striped active fade" data-ng-class="{pending: 'in'}[file.$state()]" data-file-upload-progress="file.$progress()"><div class="progress-bar progress-bar-success" data-ng-style="{width: num + '%'}"></div></div>
+ </td>
+ <td>
+ <button type="button" class="btn btn-primary start" data-ng-click="file.$submit()" data-ng-hide="!file.$submit || options.autoUpload" data-ng-disabled="file.$state() == 'pending' || file.$state() == 'rejected'">
+ <i class="glyphicon glyphicon-upload"></i>
+ <span>Start</span>
+ </button>
+ <button type="button" class="btn btn-warning cancel" data-ng-click="file.$cancel()" data-ng-hide="!file.$cancel">
+ <i class="glyphicon glyphicon-ban-circle"></i>
+ <span>Cancel</span>
+ </button>
+ <button data-ng-controller="FileDestroyController" type="button" class="btn btn-danger destroy" data-ng-click="file.$destroy()" data-ng-hide="!file.$destroy">
+ <i class="glyphicon glyphicon-trash"></i>
+ <span>Delete</span>
+ </button>
+ </td>
+ </tr>
+ </table>
+ </form>
+ <br>
+ <div class="panel panel-default">
+ <div class="panel-heading">
+ <h3 class="panel-title">Demo Notes</h3>
+ </div>
+ <div class="panel-body">
+ <ul>
+ <li>The maximum file size for uploads in this demo is <strong>5 MB</strong> (default file size is unlimited).</li>
+ <li>Only image files (<strong>JPG, GIF, PNG</strong>) are allowed in this demo (by default there is no file type restriction).</li>
+ <li>Uploaded files will be deleted automatically after <strong>5 minutes</strong> (demo setting).</li>
+ <li>You can <strong>drag &amp; drop</strong> files from your desktop on this webpage (see <a href="https://github.com/blueimp/jQuery-File-Upload/wiki/Browser-support">Browser support</a>).</li>
+ <li>Please refer to the <a href="https://github.com/blueimp/jQuery-File-Upload">project website</a> and <a href="https://github.com/blueimp/jQuery-File-Upload/wiki">documentation</a> for more information.</li>
+ <li>Built with the <a href="http://getbootstrap.com/">Bootstrap</a> CSS framework and Icons from <a href="http://glyphicons.com/">Glyphicons</a>.</li>
+ </ul>
+ </div>
+ </div>
+</div>
+<!-- The blueimp Gallery widget -->
+<div id="blueimp-gallery" class="blueimp-gallery blueimp-gallery-controls" data-filter=":even">
+ <div class="slides"></div>
+ <h3 class="title"></h3>
+ <a class="prev">‹</a>
+ <a class="next">›</a>
+ <a class="close">×</a>
+ <a class="play-pause"></a>
+ <ol class="indicator"></ol>
+</div>
+<script src="//ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
+<script src="//ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script>
+<!-- The jQuery UI widget factory, can be omitted if jQuery UI is already included -->
+<script src="js/vendor/jquery.ui.widget.js"></script>
+<!-- The Load Image plugin is included for the preview images and image resizing functionality -->
+<script src="//blueimp.github.io/JavaScript-Load-Image/js/load-image.all.min.js"></script>
+<!-- The Canvas to Blob plugin is included for image resizing functionality -->
+<script src="//blueimp.github.io/JavaScript-Canvas-to-Blob/js/canvas-to-blob.min.js"></script>
+<!-- Bootstrap JS is not required, but included for the responsive demo navigation -->
+<script src="//netdna.bootstrapcdn.com/bootstrap/3.2.0/js/bootstrap.min.js"></script>
+<!-- blueimp Gallery script -->
+<script src="//blueimp.github.io/Gallery/js/jquery.blueimp-gallery.min.js"></script>
+<!-- The Iframe Transport is required for browsers without support for XHR file uploads -->
+<script src="js/jquery.iframe-transport.js"></script>
+<!-- The basic File Upload plugin -->
+<script src="js/jquery.fileupload.js"></script>
+<!-- The File Upload processing plugin -->
+<script src="js/jquery.fileupload-process.js"></script>
+<!-- The File Upload image preview & resize plugin -->
+<script src="js/jquery.fileupload-image.js"></script>
+<!-- The File Upload audio preview plugin -->
+<script src="js/jquery.fileupload-audio.js"></script>
+<!-- The File Upload video preview plugin -->
+<script src="js/jquery.fileupload-video.js"></script>
+<!-- The File Upload validation plugin -->
+<script src="js/jquery.fileupload-validate.js"></script>
+<!-- The File Upload Angular JS module -->
+<script src="js/jquery.fileupload-angular.js"></script>
+<!-- The main application script -->
+<script src="js/app.js"></script>
+</body>
+</html>
diff --git a/library/blueimp_upload/basic-plus.html b/library/blueimp_upload/basic-plus.html
new file mode 100644
index 000000000..59b73b60c
--- /dev/null
+++ b/library/blueimp_upload/basic-plus.html
@@ -0,0 +1,226 @@
+<!DOCTYPE HTML>
+<!--
+/*
+ * jQuery File Upload Plugin Basic Plus Demo 1.4.0
+ * https://github.com/blueimp/jQuery-File-Upload
+ *
+ * Copyright 2013, Sebastian Tschan
+ * https://blueimp.net
+ *
+ * Licensed under the MIT license:
+ * http://www.opensource.org/licenses/MIT
+ */
+-->
+<html lang="en">
+<head>
+<!-- Force latest IE rendering engine or ChromeFrame if installed -->
+<!--[if IE]><meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1"><![endif]-->
+<meta charset="utf-8">
+<title>jQuery File Upload Demo - Basic Plus version</title>
+<meta name="description" content="File Upload widget with multiple file selection, drag&amp;drop support, progress bar, validation and preview images, audio and video for jQuery. Supports cross-domain, chunked and resumable file uploads. Works with any server-side platform (Google App Engine, PHP, Python, Ruby on Rails, Java, etc.) that supports standard HTML form file uploads.">
+<meta name="viewport" content="width=device-width, initial-scale=1.0">
+<!-- Bootstrap styles -->
+<link rel="stylesheet" href="//netdna.bootstrapcdn.com/bootstrap/3.2.0/css/bootstrap.min.css">
+<!-- Generic page styles -->
+<link rel="stylesheet" href="css/style.css">
+<!-- CSS to style the file input field as button and adjust the Bootstrap progress bars -->
+<link rel="stylesheet" href="css/jquery.fileupload.css">
+</head>
+<body>
+<div class="navbar navbar-default navbar-fixed-top">
+ <div class="container">
+ <div class="navbar-header">
+ <button type="button" class="navbar-toggle" data-toggle="collapse" data-target=".navbar-fixed-top .navbar-collapse">
+ <span class="icon-bar"></span>
+ <span class="icon-bar"></span>
+ <span class="icon-bar"></span>
+ </button>
+ <a class="navbar-brand" href="https://github.com/blueimp/jQuery-File-Upload">jQuery File Upload</a>
+ </div>
+ <div class="navbar-collapse collapse">
+ <ul class="nav navbar-nav">
+ <li><a href="https://github.com/blueimp/jQuery-File-Upload/tags">Download</a></li>
+ <li><a href="https://github.com/blueimp/jQuery-File-Upload">Source Code</a></li>
+ <li><a href="https://github.com/blueimp/jQuery-File-Upload/wiki">Documentation</a></li>
+ <li><a href="https://blueimp.net">&copy; Sebastian Tschan</a></li>
+ </ul>
+ </div>
+ </div>
+</div>
+<div class="container">
+ <h1>jQuery File Upload Demo</h1>
+ <h2 class="lead">Basic Plus version</h2>
+ <ul class="nav nav-tabs">
+ <li><a href="basic.html">Basic</a></li>
+ <li class="active"><a href="basic-plus.html">Basic Plus</a></li>
+ <li><a href="index.html">Basic Plus UI</a></li>
+ <li><a href="angularjs.html">AngularJS</a></li>
+ <li><a href="jquery-ui.html">jQuery UI</a></li>
+ </ul>
+ <br>
+ <blockquote>
+ <p>File Upload widget with multiple file selection, drag&amp;drop support, progress bar, validation and preview images, audio and video for jQuery.<br>
+ Supports cross-domain, chunked and resumable file uploads and client-side image resizing.<br>
+ Works with any server-side platform (PHP, Python, Ruby on Rails, Java, Node.js, Go etc.) that supports standard HTML form file uploads.</p>
+ </blockquote>
+ <br>
+ <!-- The fileinput-button span is used to style the file input field as button -->
+ <span class="btn btn-success fileinput-button">
+ <i class="glyphicon glyphicon-plus"></i>
+ <span>Add files...</span>
+ <!-- The file input field used as target for the file upload widget -->
+ <input id="fileupload" type="file" name="files[]" multiple>
+ </span>
+ <br>
+ <br>
+ <!-- The global progress bar -->
+ <div id="progress" class="progress">
+ <div class="progress-bar progress-bar-success"></div>
+ </div>
+ <!-- The container for the uploaded files -->
+ <div id="files" class="files"></div>
+ <br>
+ <div class="panel panel-default">
+ <div class="panel-heading">
+ <h3 class="panel-title">Demo Notes</h3>
+ </div>
+ <div class="panel-body">
+ <ul>
+ <li>The maximum file size for uploads in this demo is <strong>5 MB</strong> (default file size is unlimited).</li>
+ <li>Only image files (<strong>JPG, GIF, PNG</strong>) are allowed in this demo (by default there is no file type restriction).</li>
+ <li>Uploaded files will be deleted automatically after <strong>5 minutes</strong> (demo setting).</li>
+ <li>You can <strong>drag &amp; drop</strong> files from your desktop on this webpage (see <a href="https://github.com/blueimp/jQuery-File-Upload/wiki/Browser-support">Browser support</a>).</li>
+ <li>Please refer to the <a href="https://github.com/blueimp/jQuery-File-Upload">project website</a> and <a href="https://github.com/blueimp/jQuery-File-Upload/wiki">documentation</a> for more information.</li>
+ <li>Built with the <a href="http://getbootstrap.com/">Bootstrap</a> CSS framework and Icons from <a href="http://glyphicons.com/">Glyphicons</a>.</li>
+ </ul>
+ </div>
+ </div>
+</div>
+<script src="//ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
+<!-- The jQuery UI widget factory, can be omitted if jQuery UI is already included -->
+<script src="js/vendor/jquery.ui.widget.js"></script>
+<!-- The Load Image plugin is included for the preview images and image resizing functionality -->
+<script src="//blueimp.github.io/JavaScript-Load-Image/js/load-image.all.min.js"></script>
+<!-- The Canvas to Blob plugin is included for image resizing functionality -->
+<script src="//blueimp.github.io/JavaScript-Canvas-to-Blob/js/canvas-to-blob.min.js"></script>
+<!-- Bootstrap JS is not required, but included for the responsive demo navigation -->
+<script src="//netdna.bootstrapcdn.com/bootstrap/3.2.0/js/bootstrap.min.js"></script>
+<!-- The Iframe Transport is required for browsers without support for XHR file uploads -->
+<script src="js/jquery.iframe-transport.js"></script>
+<!-- The basic File Upload plugin -->
+<script src="js/jquery.fileupload.js"></script>
+<!-- The File Upload processing plugin -->
+<script src="js/jquery.fileupload-process.js"></script>
+<!-- The File Upload image preview & resize plugin -->
+<script src="js/jquery.fileupload-image.js"></script>
+<!-- The File Upload audio preview plugin -->
+<script src="js/jquery.fileupload-audio.js"></script>
+<!-- The File Upload video preview plugin -->
+<script src="js/jquery.fileupload-video.js"></script>
+<!-- The File Upload validation plugin -->
+<script src="js/jquery.fileupload-validate.js"></script>
+<script>
+/*jslint unparam: true, regexp: true */
+/*global window, $ */
+$(function () {
+ 'use strict';
+ // Change this to the location of your server-side upload handler:
+ var url = window.location.hostname === 'blueimp.github.io' ?
+ '//jquery-file-upload.appspot.com/' : 'server/php/',
+ uploadButton = $('<button/>')
+ .addClass('btn btn-primary')
+ .prop('disabled', true)
+ .text('Processing...')
+ .on('click', function () {
+ var $this = $(this),
+ data = $this.data();
+ $this
+ .off('click')
+ .text('Abort')
+ .on('click', function () {
+ $this.remove();
+ data.abort();
+ });
+ data.submit().always(function () {
+ $this.remove();
+ });
+ });
+ $('#fileupload').fileupload({
+ url: url,
+ dataType: 'json',
+ autoUpload: false,
+ acceptFileTypes: /(\.|\/)(gif|jpe?g|png)$/i,
+ maxFileSize: 5000000, // 5 MB
+ // Enable image resizing, except for Android and Opera,
+ // which actually support image resizing, but fail to
+ // send Blob objects via XHR requests:
+ disableImageResize: /Android(?!.*Chrome)|Opera/
+ .test(window.navigator.userAgent),
+ previewMaxWidth: 100,
+ previewMaxHeight: 100,
+ previewCrop: true
+ }).on('fileuploadadd', function (e, data) {
+ data.context = $('<div/>').appendTo('#files');
+ $.each(data.files, function (index, file) {
+ var node = $('<p/>')
+ .append($('<span/>').text(file.name));
+ if (!index) {
+ node
+ .append('<br>')
+ .append(uploadButton.clone(true).data(data));
+ }
+ node.appendTo(data.context);
+ });
+ }).on('fileuploadprocessalways', function (e, data) {
+ var index = data.index,
+ file = data.files[index],
+ node = $(data.context.children()[index]);
+ if (file.preview) {
+ node
+ .prepend('<br>')
+ .prepend(file.preview);
+ }
+ if (file.error) {
+ node
+ .append('<br>')
+ .append($('<span class="text-danger"/>').text(file.error));
+ }
+ if (index + 1 === data.files.length) {
+ data.context.find('button')
+ .text('Upload')
+ .prop('disabled', !!data.files.error);
+ }
+ }).on('fileuploadprogressall', function (e, data) {
+ var progress = parseInt(data.loaded / data.total * 100, 10);
+ $('#progress .progress-bar').css(
+ 'width',
+ progress + '%'
+ );
+ }).on('fileuploaddone', function (e, data) {
+ $.each(data.result.files, function (index, file) {
+ if (file.url) {
+ var link = $('<a>')
+ .attr('target', '_blank')
+ .prop('href', file.url);
+ $(data.context.children()[index])
+ .wrap(link);
+ } else if (file.error) {
+ var error = $('<span class="text-danger"/>').text(file.error);
+ $(data.context.children()[index])
+ .append('<br>')
+ .append(error);
+ }
+ });
+ }).on('fileuploadfail', function (e, data) {
+ $.each(data.files, function (index) {
+ var error = $('<span class="text-danger"/>').text('File upload failed.');
+ $(data.context.children()[index])
+ .append('<br>')
+ .append(error);
+ });
+ }).prop('disabled', !$.support.fileInput)
+ .parent().addClass($.support.fileInput ? undefined : 'disabled');
+});
+</script>
+</body>
+</html>
diff --git a/library/blueimp_upload/basic.html b/library/blueimp_upload/basic.html
new file mode 100644
index 000000000..f248f4d80
--- /dev/null
+++ b/library/blueimp_upload/basic.html
@@ -0,0 +1,136 @@
+<!DOCTYPE HTML>
+<!--
+/*
+ * jQuery File Upload Plugin Basic Demo 1.3.0
+ * https://github.com/blueimp/jQuery-File-Upload
+ *
+ * Copyright 2013, Sebastian Tschan
+ * https://blueimp.net
+ *
+ * Licensed under the MIT license:
+ * http://www.opensource.org/licenses/MIT
+ */
+-->
+<html lang="en">
+<head>
+<!-- Force latest IE rendering engine or ChromeFrame if installed -->
+<!--[if IE]><meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1"><![endif]-->
+<meta charset="utf-8">
+<title>jQuery File Upload Demo - Basic version</title>
+<meta name="description" content="File Upload widget with multiple file selection, drag&amp;drop support and progress bar for jQuery. Supports cross-domain, chunked and resumable file uploads. Works with any server-side platform (PHP, Python, Ruby on Rails, Java, Node.js, Go etc.) that supports standard HTML form file uploads.">
+<meta name="viewport" content="width=device-width, initial-scale=1.0">
+<!-- Bootstrap styles -->
+<link rel="stylesheet" href="//netdna.bootstrapcdn.com/bootstrap/3.2.0/css/bootstrap.min.css">
+<!-- Generic page styles -->
+<link rel="stylesheet" href="css/style.css">
+<!-- CSS to style the file input field as button and adjust the Bootstrap progress bars -->
+<link rel="stylesheet" href="css/jquery.fileupload.css">
+</head>
+<body>
+<div class="navbar navbar-default navbar-fixed-top">
+ <div class="container">
+ <div class="navbar-header">
+ <button type="button" class="navbar-toggle" data-toggle="collapse" data-target=".navbar-fixed-top .navbar-collapse">
+ <span class="icon-bar"></span>
+ <span class="icon-bar"></span>
+ <span class="icon-bar"></span>
+ </button>
+ <a class="navbar-brand" href="https://github.com/blueimp/jQuery-File-Upload">jQuery File Upload</a>
+ </div>
+ <div class="navbar-collapse collapse">
+ <ul class="nav navbar-nav">
+ <li><a href="https://github.com/blueimp/jQuery-File-Upload/tags">Download</a></li>
+ <li><a href="https://github.com/blueimp/jQuery-File-Upload">Source Code</a></li>
+ <li><a href="https://github.com/blueimp/jQuery-File-Upload/wiki">Documentation</a></li>
+ <li><a href="https://blueimp.net">&copy; Sebastian Tschan</a></li>
+ </ul>
+ </div>
+ </div>
+</div>
+<div class="container">
+ <h1>jQuery File Upload Demo</h1>
+ <h2 class="lead">Basic version</h2>
+ <ul class="nav nav-tabs">
+ <li class="active"><a href="basic.html">Basic</a></li>
+ <li><a href="basic-plus.html">Basic Plus</a></li>
+ <li><a href="index.html">Basic Plus UI</a></li>
+ <li><a href="angularjs.html">AngularJS</a></li>
+ <li><a href="jquery-ui.html">jQuery UI</a></li>
+ </ul>
+ <br>
+ <blockquote>
+ <p>File Upload widget with multiple file selection, drag&amp;drop support and progress bar for jQuery.<br>
+ Supports cross-domain, chunked and resumable file uploads.<br>
+ Works with any server-side platform (PHP, Python, Ruby on Rails, Java, Node.js, Go etc.) that supports standard HTML form file uploads.</p>
+ </blockquote>
+ <br>
+ <!-- The fileinput-button span is used to style the file input field as button -->
+ <span class="btn btn-success fileinput-button">
+ <i class="glyphicon glyphicon-plus"></i>
+ <span>Select files...</span>
+ <!-- The file input field used as target for the file upload widget -->
+ <input id="fileupload" type="file" name="files[]" multiple>
+ </span>
+ <br>
+ <br>
+ <!-- The global progress bar -->
+ <div id="progress" class="progress">
+ <div class="progress-bar progress-bar-success"></div>
+ </div>
+ <!-- The container for the uploaded files -->
+ <div id="files" class="files"></div>
+ <br>
+ <div class="panel panel-default">
+ <div class="panel-heading">
+ <h3 class="panel-title">Demo Notes</h3>
+ </div>
+ <div class="panel-body">
+ <ul>
+ <li>The maximum file size for uploads in this demo is <strong>5 MB</strong> (default file size is unlimited).</li>
+ <li>Only image files (<strong>JPG, GIF, PNG</strong>) are allowed in this demo (by default there is no file type restriction).</li>
+ <li>Uploaded files will be deleted automatically after <strong>5 minutes</strong> (demo setting).</li>
+ <li>You can <strong>drag &amp; drop</strong> files from your desktop on this webpage (see <a href="https://github.com/blueimp/jQuery-File-Upload/wiki/Browser-support">Browser support</a>).</li>
+ <li>Please refer to the <a href="https://github.com/blueimp/jQuery-File-Upload">project website</a> and <a href="https://github.com/blueimp/jQuery-File-Upload/wiki">documentation</a> for more information.</li>
+ <li>Built with Twitter's <a href="http://twitter.github.com/bootstrap/">Bootstrap</a> CSS framework and Icons from <a href="http://glyphicons.com/">Glyphicons</a>.</li>
+ </ul>
+ </div>
+ </div>
+</div>
+<script src="//ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
+<!-- The jQuery UI widget factory, can be omitted if jQuery UI is already included -->
+<script src="js/vendor/jquery.ui.widget.js"></script>
+<!-- The Iframe Transport is required for browsers without support for XHR file uploads -->
+<script src="js/jquery.iframe-transport.js"></script>
+<!-- The basic File Upload plugin -->
+<script src="js/jquery.fileupload.js"></script>
+<!-- Bootstrap JS is not required, but included for the responsive demo navigation -->
+<script src="//netdna.bootstrapcdn.com/bootstrap/3.2.0/js/bootstrap.min.js"></script>
+<script>
+/*jslint unparam: true */
+/*global window, $ */
+$(function () {
+ 'use strict';
+ // Change this to the location of your server-side upload handler:
+ var url = window.location.hostname === 'blueimp.github.io' ?
+ '//jquery-file-upload.appspot.com/' : 'server/php/';
+ $('#fileupload').fileupload({
+ url: url,
+ dataType: 'json',
+ done: function (e, data) {
+ $.each(data.result.files, function (index, file) {
+ $('<p/>').text(file.name).appendTo('#files');
+ });
+ },
+ progressall: function (e, data) {
+ var progress = parseInt(data.loaded / data.total * 100, 10);
+ $('#progress .progress-bar').css(
+ 'width',
+ progress + '%'
+ );
+ }
+ }).prop('disabled', !$.support.fileInput)
+ .parent().addClass($.support.fileInput ? undefined : 'disabled');
+});
+</script>
+</body>
+</html>
diff --git a/library/blueimp_upload/blueimp-file-upload.jquery.json b/library/blueimp_upload/blueimp-file-upload.jquery.json
new file mode 100644
index 000000000..d6d8c911c
--- /dev/null
+++ b/library/blueimp_upload/blueimp-file-upload.jquery.json
@@ -0,0 +1,50 @@
+{
+ "name": "blueimp-file-upload",
+ "version": "9.8.0",
+ "title": "jQuery File Upload",
+ "author": {
+ "name": "Sebastian Tschan",
+ "url": "https://blueimp.net"
+ },
+ "licenses": [
+ {
+ "type": "MIT",
+ "url": "http://www.opensource.org/licenses/MIT"
+ }
+ ],
+ "dependencies": {
+ "jquery": ">=1.6"
+ },
+ "description": "File Upload widget with multiple file selection, drag&amp;drop support, progress bar, validation and preview images, audio and video for jQuery. Supports cross-domain, chunked and resumable file uploads. Works with any server-side platform (Google App Engine, PHP, Python, Ruby on Rails, Java, etc.) that supports standard HTML form file uploads.",
+ "keywords": [
+ "jquery",
+ "file",
+ "upload",
+ "widget",
+ "multiple",
+ "selection",
+ "drag",
+ "drop",
+ "progress",
+ "preview",
+ "cross-domain",
+ "cross-site",
+ "chunk",
+ "resume",
+ "gae",
+ "go",
+ "python",
+ "php",
+ "bootstrap"
+ ],
+ "homepage": "https://github.com/blueimp/jQuery-File-Upload",
+ "docs": "https://github.com/blueimp/jQuery-File-Upload/wiki",
+ "demo": "https://blueimp.github.io/jQuery-File-Upload/",
+ "bugs": "https://github.com/blueimp/jQuery-File-Upload/issues",
+ "maintainers": [
+ {
+ "name": "Sebastian Tschan",
+ "url": "https://blueimp.net"
+ }
+ ]
+}
diff --git a/library/blueimp_upload/bower.json b/library/blueimp_upload/bower.json
new file mode 100644
index 000000000..c0d3d3259
--- /dev/null
+++ b/library/blueimp_upload/bower.json
@@ -0,0 +1,85 @@
+{
+ "name": "blueimp-file-upload",
+ "version": "9.8.0",
+ "title": "jQuery File Upload",
+ "description": "File Upload widget with multiple file selection, drag&amp;drop support, progress bar, validation and preview images, audio and video for jQuery. Supports cross-domain, chunked and resumable file uploads. Works with any server-side platform (Google App Engine, PHP, Python, Ruby on Rails, Java, etc.) that supports standard HTML form file uploads.",
+ "keywords": [
+ "jquery",
+ "file",
+ "upload",
+ "widget",
+ "multiple",
+ "selection",
+ "drag",
+ "drop",
+ "progress",
+ "preview",
+ "cross-domain",
+ "cross-site",
+ "chunk",
+ "resume",
+ "gae",
+ "go",
+ "python",
+ "php",
+ "bootstrap"
+ ],
+ "homepage": "https://github.com/blueimp/jQuery-File-Upload",
+ "author": {
+ "name": "Sebastian Tschan",
+ "url": "https://blueimp.net"
+ },
+ "maintainers": [
+ {
+ "name": "Sebastian Tschan",
+ "url": "https://blueimp.net"
+ }
+ ],
+ "repository": {
+ "type": "git",
+ "url": "git://github.com/blueimp/jQuery-File-Upload.git"
+ },
+ "bugs": "https://github.com/blueimp/jQuery-File-Upload/issues",
+ "licenses": [
+ {
+ "type": "MIT",
+ "url": "http://www.opensource.org/licenses/MIT"
+ }
+ ],
+ "dependencies": {
+ "jquery": ">=1.6",
+ "blueimp-tmpl": ">=2.5.4",
+ "blueimp-load-image": ">=1.13.0",
+ "blueimp-canvas-to-blob": ">=2.1.1"
+ },
+ "main": [
+ "css/jquery.fileupload.css",
+ "css/jquery.fileupload-ui.css",
+ "css/jquery.fileupload-noscript.css",
+ "css/jquery.fileupload-ui-noscript.css",
+ "js/cors/jquery.postmessage-transport.js",
+ "js/cors/jquery.xdr-transport.js",
+ "js/vendor/jquery.ui.widget.js",
+ "js/jquery.fileupload.js",
+ "js/jquery.fileupload-process.js",
+ "js/jquery.fileupload-validate.js",
+ "js/jquery.fileupload-image.js",
+ "js/jquery.fileupload-audio.js",
+ "js/jquery.fileupload-video.js",
+ "js/jquery.fileupload-ui.js",
+ "js/jquery.fileupload-jquery-ui.js",
+ "js/jquery.fileupload-angular.js",
+ "js/jquery.iframe-transport.js"
+ ],
+ "ignore": [
+ "/*.*",
+ "/cors",
+ "css/demo-ie8.css",
+ "css/demo.css",
+ "css/style.css",
+ "js/app.js",
+ "js/main.js",
+ "server",
+ "test"
+ ]
+}
diff --git a/library/blueimp_upload/cors/postmessage.html b/library/blueimp_upload/cors/postmessage.html
new file mode 100644
index 000000000..3d1448f08
--- /dev/null
+++ b/library/blueimp_upload/cors/postmessage.html
@@ -0,0 +1,75 @@
+<!DOCTYPE HTML>
+<!--
+/*
+ * jQuery File Upload Plugin postMessage API 1.2.1
+ * https://github.com/blueimp/jQuery-File-Upload
+ *
+ * Copyright 2011, Sebastian Tschan
+ * https://blueimp.net
+ *
+ * Licensed under the MIT license:
+ * http://www.opensource.org/licenses/MIT
+ */
+-->
+<html lang="en">
+<head>
+<meta charset="utf-8">
+<title>jQuery File Upload Plugin postMessage API</title>
+<script src="//ajax.googleapis.com/ajax/libs/jquery/1.10.1/jquery.min.js"></script>
+</head>
+<body>
+<script>
+/*jslint unparam: true, regexp: true */
+/*global $, Blob, FormData, location */
+'use strict';
+var origin = /^http:\/\/example.org/,
+ target = new RegExp('^(http(s)?:)?\\/\\/' + location.host + '\\/');
+$(window).on('message', function (e) {
+ e = e.originalEvent;
+ var s = e.data,
+ xhr = $.ajaxSettings.xhr(),
+ f;
+ if (!origin.test(e.origin)) {
+ throw new Error('Origin "' + e.origin + '" does not match ' + origin);
+ }
+ if (!target.test(e.data.url)) {
+ throw new Error('Target "' + e.data.url + '" does not match ' + target);
+ }
+ $(xhr.upload).on('progress', function (ev) {
+ ev = ev.originalEvent;
+ e.source.postMessage({
+ id: s.id,
+ type: ev.type,
+ timeStamp: ev.timeStamp,
+ lengthComputable: ev.lengthComputable,
+ loaded: ev.loaded,
+ total: ev.total
+ }, e.origin);
+ });
+ s.xhr = function () {
+ return xhr;
+ };
+ if (!(s.data instanceof Blob)) {
+ f = new FormData();
+ $.each(s.data, function (i, v) {
+ f.append(v.name, v.value);
+ });
+ s.data = f;
+ }
+ $.ajax(s).always(function (result, statusText, jqXHR) {
+ if (!jqXHR.done) {
+ jqXHR = result;
+ result = null;
+ }
+ e.source.postMessage({
+ id: s.id,
+ status: jqXHR.status,
+ statusText: statusText,
+ result: result,
+ headers: jqXHR.getAllResponseHeaders()
+ }, e.origin);
+ });
+});
+</script>
+</body>
+</html> \ No newline at end of file
diff --git a/library/blueimp_upload/cors/result.html b/library/blueimp_upload/cors/result.html
new file mode 100644
index 000000000..225131495
--- /dev/null
+++ b/library/blueimp_upload/cors/result.html
@@ -0,0 +1,24 @@
+<!DOCTYPE HTML>
+<!--
+/*
+ * jQuery Iframe Transport Plugin Redirect Page 2.0.1
+ * https://github.com/blueimp/jQuery-File-Upload
+ *
+ * Copyright 2010, Sebastian Tschan
+ * https://blueimp.net
+ *
+ * Licensed under the MIT license:
+ * http://www.opensource.org/licenses/MIT
+ */
+-->
+<html lang="en">
+<head>
+<meta charset="utf-8">
+<title>jQuery Iframe Transport Plugin Redirect Page</title>
+</head>
+<body>
+<script>
+document.body.innerText=document.body.textContent=decodeURIComponent(window.location.search.slice(1));
+</script>
+</body>
+</html>
diff --git a/library/blueimp_upload/css/demo-ie8.css b/library/blueimp_upload/css/demo-ie8.css
new file mode 100644
index 000000000..262493d08
--- /dev/null
+++ b/library/blueimp_upload/css/demo-ie8.css
@@ -0,0 +1,21 @@
+@charset "UTF-8";
+/*
+ * jQuery File Upload Demo CSS Fixes for IE<9 1.0.0
+ * https://github.com/blueimp/jQuery-File-Upload
+ *
+ * Copyright 2013, Sebastian Tschan
+ * https://blueimp.net
+ *
+ * Licensed under the MIT license:
+ * http://www.opensource.org/licenses/MIT
+ */
+
+.navigation {
+ list-style: none;
+ padding: 0;
+ margin: 1em 0;
+}
+.navigation li {
+ display: inline;
+ margin-right: 10px;
+}
diff --git a/library/blueimp_upload/css/demo.css b/library/blueimp_upload/css/demo.css
new file mode 100644
index 000000000..2b4d43934
--- /dev/null
+++ b/library/blueimp_upload/css/demo.css
@@ -0,0 +1,67 @@
+@charset "UTF-8";
+/*
+ * jQuery File Upload Demo CSS 1.1.0
+ * https://github.com/blueimp/jQuery-File-Upload
+ *
+ * Copyright 2013, Sebastian Tschan
+ * https://blueimp.net
+ *
+ * Licensed under the MIT license:
+ * http://www.opensource.org/licenses/MIT
+ */
+
+body {
+ max-width: 750px;
+ margin: 0 auto;
+ padding: 1em;
+ font-family: "Lucida Grande", "Lucida Sans Unicode", Arial, sans-serif;
+ font-size: 1em;
+ line-height: 1.4em;
+ background: #222;
+ color: #fff;
+ -webkit-text-size-adjust: 100%;
+ -ms-text-size-adjust: 100%;
+}
+a {
+ color: orange;
+ text-decoration: none;
+}
+img {
+ border: 0;
+ vertical-align: middle;
+}
+h1 {
+ line-height: 1em;
+}
+blockquote {
+ padding: 0 0 0 15px;
+ margin: 0 0 20px;
+ border-left: 5px solid #eee;
+}
+table {
+ width: 100%;
+ margin: 10px 0;
+}
+
+.fileupload-progress {
+ margin: 10px 0;
+}
+.fileupload-progress .progress-extended {
+ margin-top: 5px;
+}
+.error {
+ color: red;
+}
+
+@media (min-width: 481px) {
+ .navigation {
+ list-style: none;
+ padding: 0;
+ }
+ .navigation li {
+ display: inline-block;
+ }
+ .navigation li:not(:first-child):before {
+ content: "| ";
+ }
+}
diff --git a/library/blueimp_upload/css/jquery.fileupload-noscript.css b/library/blueimp_upload/css/jquery.fileupload-noscript.css
new file mode 100644
index 000000000..64d728fc3
--- /dev/null
+++ b/library/blueimp_upload/css/jquery.fileupload-noscript.css
@@ -0,0 +1,22 @@
+@charset "UTF-8";
+/*
+ * jQuery File Upload Plugin NoScript CSS 1.2.0
+ * https://github.com/blueimp/jQuery-File-Upload
+ *
+ * Copyright 2013, Sebastian Tschan
+ * https://blueimp.net
+ *
+ * Licensed under the MIT license:
+ * http://www.opensource.org/licenses/MIT
+ */
+
+.fileinput-button input {
+ position: static;
+ opacity: 1;
+ filter: none;
+ font-size: inherit;
+ direction: inherit;
+}
+.fileinput-button span {
+ display: none;
+}
diff --git a/library/blueimp_upload/css/jquery.fileupload-ui-noscript.css b/library/blueimp_upload/css/jquery.fileupload-ui-noscript.css
new file mode 100644
index 000000000..87f110cdb
--- /dev/null
+++ b/library/blueimp_upload/css/jquery.fileupload-ui-noscript.css
@@ -0,0 +1,17 @@
+@charset "UTF-8";
+/*
+ * jQuery File Upload UI Plugin NoScript CSS 8.8.5
+ * https://github.com/blueimp/jQuery-File-Upload
+ *
+ * Copyright 2012, Sebastian Tschan
+ * https://blueimp.net
+ *
+ * Licensed under the MIT license:
+ * http://www.opensource.org/licenses/MIT
+ */
+
+.fileinput-button i,
+.fileupload-buttonbar .delete,
+.fileupload-buttonbar .toggle {
+ display: none;
+}
diff --git a/library/blueimp_upload/css/jquery.fileupload-ui.css b/library/blueimp_upload/css/jquery.fileupload-ui.css
new file mode 100644
index 000000000..76fb376de
--- /dev/null
+++ b/library/blueimp_upload/css/jquery.fileupload-ui.css
@@ -0,0 +1,57 @@
+@charset "UTF-8";
+/*
+ * jQuery File Upload UI Plugin CSS 9.0.0
+ * https://github.com/blueimp/jQuery-File-Upload
+ *
+ * Copyright 2010, Sebastian Tschan
+ * https://blueimp.net
+ *
+ * Licensed under the MIT license:
+ * http://www.opensource.org/licenses/MIT
+ */
+
+.fileupload-buttonbar .btn,
+.fileupload-buttonbar .toggle {
+ margin-bottom: 5px;
+}
+.progress-animated .progress-bar,
+.progress-animated .bar {
+ background: url("../img/progressbar.gif") !important;
+ filter: none;
+}
+.fileupload-process {
+ float: right;
+ display: none;
+}
+.fileupload-processing .fileupload-process,
+.files .processing .preview {
+ display: block;
+ width: 32px;
+ height: 32px;
+ background: url("../img/loading.gif") center no-repeat;
+ background-size: contain;
+}
+.files audio,
+.files video {
+ max-width: 300px;
+}
+
+@media (max-width: 767px) {
+ .fileupload-buttonbar .toggle,
+ .files .toggle,
+ .files .btn span {
+ display: none;
+ }
+ .files .name {
+ width: 80px;
+ word-wrap: break-word;
+ }
+ .files audio,
+ .files video {
+ max-width: 80px;
+ }
+ .files img,
+ .files canvas {
+ max-width: 100%;
+ }
+}
diff --git a/library/blueimp_upload/css/jquery.fileupload.css b/library/blueimp_upload/css/jquery.fileupload.css
new file mode 100644
index 000000000..fb6044d34
--- /dev/null
+++ b/library/blueimp_upload/css/jquery.fileupload.css
@@ -0,0 +1,36 @@
+@charset "UTF-8";
+/*
+ * jQuery File Upload Plugin CSS 1.3.0
+ * https://github.com/blueimp/jQuery-File-Upload
+ *
+ * Copyright 2013, Sebastian Tschan
+ * https://blueimp.net
+ *
+ * Licensed under the MIT license:
+ * http://www.opensource.org/licenses/MIT
+ */
+
+.fileinput-button {
+ position: relative;
+ overflow: hidden;
+}
+.fileinput-button input {
+ position: absolute;
+ top: 0;
+ right: 0;
+ margin: 0;
+ opacity: 0;
+ -ms-filter: 'alpha(opacity=0)';
+ font-size: 200px;
+ direction: ltr;
+ cursor: pointer;
+}
+
+/* Fixes for IE < 8 */
+@media screen\9 {
+ .fileinput-button input {
+ filter: alpha(opacity=0);
+ font-size: 100%;
+ height: 100%;
+ }
+}
diff --git a/library/blueimp_upload/css/style.css b/library/blueimp_upload/css/style.css
new file mode 100644
index 000000000..b2c60a6f1
--- /dev/null
+++ b/library/blueimp_upload/css/style.css
@@ -0,0 +1,15 @@
+@charset "UTF-8";
+/*
+ * jQuery File Upload Plugin CSS Example 8.8.2
+ * https://github.com/blueimp/jQuery-File-Upload
+ *
+ * Copyright 2013, Sebastian Tschan
+ * https://blueimp.net
+ *
+ * Licensed under the MIT license:
+ * http://www.opensource.org/licenses/MIT
+ */
+
+body {
+ padding-top: 60px;
+}
diff --git a/library/blueimp_upload/img/loading.gif b/library/blueimp_upload/img/loading.gif
new file mode 100644
index 000000000..90f28cbdb
--- /dev/null
+++ b/library/blueimp_upload/img/loading.gif
Binary files differ
diff --git a/library/blueimp_upload/img/progressbar.gif b/library/blueimp_upload/img/progressbar.gif
new file mode 100644
index 000000000..fbcce6bc9
--- /dev/null
+++ b/library/blueimp_upload/img/progressbar.gif
Binary files differ
diff --git a/library/blueimp_upload/index.html b/library/blueimp_upload/index.html
new file mode 100644
index 000000000..f92f04aab
--- /dev/null
+++ b/library/blueimp_upload/index.html
@@ -0,0 +1,255 @@
+<!DOCTYPE HTML>
+<!--
+/*
+ * jQuery File Upload Plugin Demo 9.1.0
+ * https://github.com/blueimp/jQuery-File-Upload
+ *
+ * Copyright 2010, Sebastian Tschan
+ * https://blueimp.net
+ *
+ * Licensed under the MIT license:
+ * http://www.opensource.org/licenses/MIT
+ */
+-->
+<html lang="en">
+<head>
+<!-- Force latest IE rendering engine or ChromeFrame if installed -->
+<!--[if IE]>
+<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
+<![endif]-->
+<meta charset="utf-8">
+<title>jQuery File Upload Demo</title>
+<meta name="description" content="File Upload widget with multiple file selection, drag&amp;drop support, progress bars, validation and preview images, audio and video for jQuery. Supports cross-domain, chunked and resumable file uploads and client-side image resizing. Works with any server-side platform (PHP, Python, Ruby on Rails, Java, Node.js, Go etc.) that supports standard HTML form file uploads.">
+<meta name="viewport" content="width=device-width, initial-scale=1.0">
+<!-- Bootstrap styles -->
+<link rel="stylesheet" href="//netdna.bootstrapcdn.com/bootstrap/3.2.0/css/bootstrap.min.css">
+<!-- Generic page styles -->
+<link rel="stylesheet" href="css/style.css">
+<!-- blueimp Gallery styles -->
+<link rel="stylesheet" href="//blueimp.github.io/Gallery/css/blueimp-gallery.min.css">
+<!-- CSS to style the file input field as button and adjust the Bootstrap progress bars -->
+<link rel="stylesheet" href="css/jquery.fileupload.css">
+<link rel="stylesheet" href="css/jquery.fileupload-ui.css">
+<!-- CSS adjustments for browsers with JavaScript disabled -->
+<noscript><link rel="stylesheet" href="css/jquery.fileupload-noscript.css"></noscript>
+<noscript><link rel="stylesheet" href="css/jquery.fileupload-ui-noscript.css"></noscript>
+</head>
+<body>
+<div class="navbar navbar-default navbar-fixed-top">
+ <div class="container">
+ <div class="navbar-header">
+ <button type="button" class="navbar-toggle" data-toggle="collapse" data-target=".navbar-fixed-top .navbar-collapse">
+ <span class="icon-bar"></span>
+ <span class="icon-bar"></span>
+ <span class="icon-bar"></span>
+ </button>
+ <a class="navbar-brand" href="https://github.com/blueimp/jQuery-File-Upload">jQuery File Upload</a>
+ </div>
+ <div class="navbar-collapse collapse">
+ <ul class="nav navbar-nav">
+ <li><a href="https://github.com/blueimp/jQuery-File-Upload/tags">Download</a></li>
+ <li><a href="https://github.com/blueimp/jQuery-File-Upload">Source Code</a></li>
+ <li><a href="https://github.com/blueimp/jQuery-File-Upload/wiki">Documentation</a></li>
+ <li><a href="https://blueimp.net">&copy; Sebastian Tschan</a></li>
+ </ul>
+ </div>
+ </div>
+</div>
+<div class="container">
+ <h1>jQuery File Upload Demo</h1>
+ <h2 class="lead">Basic Plus UI version</h2>
+ <ul class="nav nav-tabs">
+ <li><a href="basic.html">Basic</a></li>
+ <li><a href="basic-plus.html">Basic Plus</a></li>
+ <li class="active"><a href="index.html">Basic Plus UI</a></li>
+ <li><a href="angularjs.html">AngularJS</a></li>
+ <li><a href="jquery-ui.html">jQuery UI</a></li>
+ </ul>
+ <br>
+ <blockquote>
+ <p>File Upload widget with multiple file selection, drag&amp;drop support, progress bars, validation and preview images, audio and video for jQuery.<br>
+ Supports cross-domain, chunked and resumable file uploads and client-side image resizing.<br>
+ Works with any server-side platform (PHP, Python, Ruby on Rails, Java, Node.js, Go etc.) that supports standard HTML form file uploads.</p>
+ </blockquote>
+ <br>
+ <!-- The file upload form used as target for the file upload widget -->
+ <form id="fileupload" action="//jquery-file-upload.appspot.com/" method="POST" enctype="multipart/form-data">
+ <!-- Redirect browsers with JavaScript disabled to the origin page -->
+ <noscript><input type="hidden" name="redirect" value="https://blueimp.github.io/jQuery-File-Upload/"></noscript>
+ <!-- The fileupload-buttonbar contains buttons to add/delete files and start/cancel the upload -->
+ <div class="row fileupload-buttonbar">
+ <div class="col-lg-7">
+ <!-- The fileinput-button span is used to style the file input field as button -->
+ <span class="btn btn-success fileinput-button">
+ <i class="glyphicon glyphicon-plus"></i>
+ <span>Add files...</span>
+ <input type="file" name="files[]" multiple>
+ </span>
+ <button type="submit" class="btn btn-primary start">
+ <i class="glyphicon glyphicon-upload"></i>
+ <span>Start upload</span>
+ </button>
+ <button type="reset" class="btn btn-warning cancel">
+ <i class="glyphicon glyphicon-ban-circle"></i>
+ <span>Cancel upload</span>
+ </button>
+ <button type="button" class="btn btn-danger delete">
+ <i class="glyphicon glyphicon-trash"></i>
+ <span>Delete</span>
+ </button>
+ <input type="checkbox" class="toggle">
+ <!-- The global file processing state -->
+ <span class="fileupload-process"></span>
+ </div>
+ <!-- The global progress state -->
+ <div class="col-lg-5 fileupload-progress fade">
+ <!-- The global progress bar -->
+ <div class="progress progress-striped active" role="progressbar" aria-valuemin="0" aria-valuemax="100">
+ <div class="progress-bar progress-bar-success" style="width:0%;"></div>
+ </div>
+ <!-- The extended global progress state -->
+ <div class="progress-extended">&nbsp;</div>
+ </div>
+ </div>
+ <!-- The table listing the files available for upload/download -->
+ <table role="presentation" class="table table-striped"><tbody class="files"></tbody></table>
+ </form>
+ <br>
+ <div class="panel panel-default">
+ <div class="panel-heading">
+ <h3 class="panel-title">Demo Notes</h3>
+ </div>
+ <div class="panel-body">
+ <ul>
+ <li>The maximum file size for uploads in this demo is <strong>5 MB</strong> (default file size is unlimited).</li>
+ <li>Only image files (<strong>JPG, GIF, PNG</strong>) are allowed in this demo (by default there is no file type restriction).</li>
+ <li>Uploaded files will be deleted automatically after <strong>5 minutes</strong> (demo setting).</li>
+ <li>You can <strong>drag &amp; drop</strong> files from your desktop on this webpage (see <a href="https://github.com/blueimp/jQuery-File-Upload/wiki/Browser-support">Browser support</a>).</li>
+ <li>Please refer to the <a href="https://github.com/blueimp/jQuery-File-Upload">project website</a> and <a href="https://github.com/blueimp/jQuery-File-Upload/wiki">documentation</a> for more information.</li>
+ <li>Built with the <a href="http://getbootstrap.com/">Bootstrap</a> CSS framework and Icons from <a href="http://glyphicons.com/">Glyphicons</a>.</li>
+ </ul>
+ </div>
+ </div>
+</div>
+<!-- The blueimp Gallery widget -->
+<div id="blueimp-gallery" class="blueimp-gallery blueimp-gallery-controls" data-filter=":even">
+ <div class="slides"></div>
+ <h3 class="title"></h3>
+ <a class="prev">‹</a>
+ <a class="next">›</a>
+ <a class="close">×</a>
+ <a class="play-pause"></a>
+ <ol class="indicator"></ol>
+</div>
+<!-- The template to display files available for upload -->
+<script id="template-upload" type="text/x-tmpl">
+{% for (var i=0, file; file=o.files[i]; i++) { %}
+ <tr class="template-upload fade">
+ <td>
+ <span class="preview"></span>
+ </td>
+ <td>
+ <p class="name">{%=file.name%}</p>
+ <strong class="error text-danger"></strong>
+ </td>
+ <td>
+ <p class="size">Processing...</p>
+ <div class="progress progress-striped active" role="progressbar" aria-valuemin="0" aria-valuemax="100" aria-valuenow="0"><div class="progress-bar progress-bar-success" style="width:0%;"></div></div>
+ </td>
+ <td>
+ {% if (!i && !o.options.autoUpload) { %}
+ <button class="btn btn-primary start" disabled>
+ <i class="glyphicon glyphicon-upload"></i>
+ <span>Start</span>
+ </button>
+ {% } %}
+ {% if (!i) { %}
+ <button class="btn btn-warning cancel">
+ <i class="glyphicon glyphicon-ban-circle"></i>
+ <span>Cancel</span>
+ </button>
+ {% } %}
+ </td>
+ </tr>
+{% } %}
+</script>
+<!-- The template to display files available for download -->
+<script id="template-download" type="text/x-tmpl">
+{% for (var i=0, file; file=o.files[i]; i++) { %}
+ <tr class="template-download fade">
+ <td>
+ <span class="preview">
+ {% if (file.thumbnailUrl) { %}
+ <a href="{%=file.url%}" title="{%=file.name%}" download="{%=file.name%}" data-gallery><img src="{%=file.thumbnailUrl%}"></a>
+ {% } %}
+ </span>
+ </td>
+ <td>
+ <p class="name">
+ {% if (file.url) { %}
+ <a href="{%=file.url%}" title="{%=file.name%}" download="{%=file.name%}" {%=file.thumbnailUrl?'data-gallery':''%}>{%=file.name%}</a>
+ {% } else { %}
+ <span>{%=file.name%}</span>
+ {% } %}
+ </p>
+ {% if (file.error) { %}
+ <div><span class="label label-danger">Error</span> {%=file.error%}</div>
+ {% } %}
+ </td>
+ <td>
+ <span class="size">{%=o.formatFileSize(file.size)%}</span>
+ </td>
+ <td>
+ {% if (file.deleteUrl) { %}
+ <button class="btn btn-danger delete" data-type="{%=file.deleteType%}" data-url="{%=file.deleteUrl%}"{% if (file.deleteWithCredentials) { %} data-xhr-fields='{"withCredentials":true}'{% } %}>
+ <i class="glyphicon glyphicon-trash"></i>
+ <span>Delete</span>
+ </button>
+ <input type="checkbox" name="delete" value="1" class="toggle">
+ {% } else { %}
+ <button class="btn btn-warning cancel">
+ <i class="glyphicon glyphicon-ban-circle"></i>
+ <span>Cancel</span>
+ </button>
+ {% } %}
+ </td>
+ </tr>
+{% } %}
+</script>
+<script src="//ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
+<!-- The jQuery UI widget factory, can be omitted if jQuery UI is already included -->
+<script src="js/vendor/jquery.ui.widget.js"></script>
+<!-- The Templates plugin is included to render the upload/download listings -->
+<script src="//blueimp.github.io/JavaScript-Templates/js/tmpl.min.js"></script>
+<!-- The Load Image plugin is included for the preview images and image resizing functionality -->
+<script src="//blueimp.github.io/JavaScript-Load-Image/js/load-image.all.min.js"></script>
+<!-- The Canvas to Blob plugin is included for image resizing functionality -->
+<script src="//blueimp.github.io/JavaScript-Canvas-to-Blob/js/canvas-to-blob.min.js"></script>
+<!-- Bootstrap JS is not required, but included for the responsive demo navigation -->
+<script src="//netdna.bootstrapcdn.com/bootstrap/3.2.0/js/bootstrap.min.js"></script>
+<!-- blueimp Gallery script -->
+<script src="//blueimp.github.io/Gallery/js/jquery.blueimp-gallery.min.js"></script>
+<!-- The Iframe Transport is required for browsers without support for XHR file uploads -->
+<script src="js/jquery.iframe-transport.js"></script>
+<!-- The basic File Upload plugin -->
+<script src="js/jquery.fileupload.js"></script>
+<!-- The File Upload processing plugin -->
+<script src="js/jquery.fileupload-process.js"></script>
+<!-- The File Upload image preview & resize plugin -->
+<script src="js/jquery.fileupload-image.js"></script>
+<!-- The File Upload audio preview plugin -->
+<script src="js/jquery.fileupload-audio.js"></script>
+<!-- The File Upload video preview plugin -->
+<script src="js/jquery.fileupload-video.js"></script>
+<!-- The File Upload validation plugin -->
+<script src="js/jquery.fileupload-validate.js"></script>
+<!-- The File Upload user interface plugin -->
+<script src="js/jquery.fileupload-ui.js"></script>
+<!-- The main application script -->
+<script src="js/main.js"></script>
+<!-- The XDomainRequest Transport is included for cross-domain file deletion for IE 8 and IE 9 -->
+<!--[if (gte IE 8)&(lt IE 10)]>
+<script src="js/cors/jquery.xdr-transport.js"></script>
+<![endif]-->
+</body>
+</html>
diff --git a/library/blueimp_upload/jquery-ui.html b/library/blueimp_upload/jquery-ui.html
new file mode 100644
index 000000000..d61ee5233
--- /dev/null
+++ b/library/blueimp_upload/jquery-ui.html
@@ -0,0 +1,250 @@
+<!DOCTYPE HTML>
+<!--
+/*
+ * jQuery File Upload Plugin jQuery UI Demo 9.1.0
+ * https://github.com/blueimp/jQuery-File-Upload
+ *
+ * Copyright 2013, Sebastian Tschan
+ * https://blueimp.net
+ *
+ * Licensed under the MIT license:
+ * http://www.opensource.org/licenses/MIT
+ */
+-->
+<html lang="en">
+<head>
+<!-- Force latest IE rendering engine or ChromeFrame if installed -->
+<!--[if IE]>
+<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
+<![endif]-->
+<meta charset="utf-8">
+<title>jQuery File Upload Demo - jQuery UI version</title>
+<meta name="description" content="File Upload widget with multiple file selection, drag&amp;drop support, progress bars, validation and preview images, audio and video for jQuery. Supports cross-domain, chunked and resumable file uploads and client-side image resizing. Works with any server-side platform (PHP, Python, Ruby on Rails, Java, Node.js, Go etc.) that supports standard HTML form file uploads.">
+<meta name="viewport" content="width=device-width, initial-scale=1.0">
+<!-- jQuery UI styles -->
+<link rel="stylesheet" href="//ajax.googleapis.com/ajax/libs/jqueryui/1.11.1/themes/dark-hive/jquery-ui.css" id="theme">
+<!-- Demo styles -->
+<link rel="stylesheet" href="css/demo.css">
+<!--[if lte IE 8]>
+<link rel="stylesheet" href="css/demo-ie8.css">
+<![endif]-->
+<style>
+/* Adjust the jQuery UI widget font-size: */
+.ui-widget {
+ font-size: 0.95em;
+}
+</style>
+<!-- blueimp Gallery styles -->
+<link rel="stylesheet" href="//blueimp.github.io/Gallery/css/blueimp-gallery.min.css">
+<!-- CSS to style the file input field as button and adjust the Bootstrap progress bars -->
+<link rel="stylesheet" href="css/jquery.fileupload.css">
+<link rel="stylesheet" href="css/jquery.fileupload-ui.css">
+<!-- CSS adjustments for browsers with JavaScript disabled -->
+<noscript><link rel="stylesheet" href="css/jquery.fileupload-noscript.css"></noscript>
+<noscript><link rel="stylesheet" href="css/jquery.fileupload-ui-noscript.css"></noscript>
+</head>
+<body>
+<ul class="navigation">
+ <li><h3><a href="https://github.com/blueimp/jQuery-File-Upload">jQuery File Upload</a></h3></li>
+ <li><a href="https://github.com/blueimp/jQuery-File-Upload/tags">Download</a></li>
+ <li><a href="https://github.com/blueimp/jQuery-File-Upload">Source Code</a></li>
+ <li><a href="https://github.com/blueimp/jQuery-File-Upload/wiki">Documentation</a></li>
+ <li><a href="https://blueimp.net">&copy; blueimp.net</a></li>
+</ul>
+<h1>jQuery File Upload Demo</h1>
+<h2>jQuery UI version</h2>
+<form>
+ <label for="theme-switcher">Theme:</label>
+ <select id="theme-switcher" class="pull-right">
+ <option value="black-tie">Black Tie</option>
+ <option value="blitzer">Blitzer</option>
+ <option value="cupertino">Cupertino</option>
+ <option value="dark-hive" selected>Dark Hive</option>
+ <option value="dot-luv">Dot Luv</option>
+ <option value="eggplant">Eggplant</option>
+ <option value="excite-bike">Excite Bike</option>
+ <option value="flick">Flick</option>
+ <option value="hot-sneaks">Hot sneaks</option>
+ <option value="humanity">Humanity</option>
+ <option value="le-frog">Le Frog</option>
+ <option value="mint-choc">Mint Choc</option>
+ <option value="overcast">Overcast</option>
+ <option value="pepper-grinder">Pepper Grinder</option>
+ <option value="redmond">Redmond</option>
+ <option value="smoothness">Smoothness</option>
+ <option value="south-street">South Street</option>
+ <option value="start">Start</option>
+ <option value="sunny">Sunny</option>
+ <option value="swanky-purse">Swanky Purse</option>
+ <option value="trontastic">Trontastic</option>
+ <option value="ui-darkness">UI Darkness</option>
+ <option value="ui-lightness">UI Lightness</option>
+ <option value="vader">Vader</option>
+ </select>
+</form>
+<ul class="navigation">
+ <li><a href="basic.html">Basic</a></li>
+ <li><a href="basic-plus.html">Basic Plus</a></li>
+ <li><a href="index.html">Basic Plus UI</a></li>
+ <li><a href="angularjs.html">AngularJS</a></li>
+ <li class="active"><a href="jquery-ui.html">jQuery UI</a></li>
+</ul>
+<blockquote>
+ <p>File Upload widget with multiple file selection, drag&amp;drop support, progress bars, validation and preview images, audio and video for jQuery UI.<br>
+ Supports cross-domain, chunked and resumable file uploads and client-side image resizing.<br>
+ Works with any server-side platform (PHP, Python, Ruby on Rails, Java, Node.js, Go etc.) that supports standard HTML form file uploads.</p>
+</blockquote>
+<!-- The file upload form used as target for the file upload widget -->
+<form id="fileupload" action="//jquery-file-upload.appspot.com/" method="POST" enctype="multipart/form-data">
+ <!-- Redirect browsers with JavaScript disabled to the origin page -->
+ <noscript><input type="hidden" name="redirect" value="https://blueimp.github.io/jQuery-File-Upload/"></noscript>
+ <!-- The fileupload-buttonbar contains buttons to add/delete files and start/cancel the upload -->
+ <div class="fileupload-buttonbar">
+ <div class="fileupload-buttons">
+ <!-- The fileinput-button span is used to style the file input field as button -->
+ <span class="fileinput-button">
+ <span>Add files...</span>
+ <input type="file" name="files[]" multiple>
+ </span>
+ <button type="submit" class="start">Start upload</button>
+ <button type="reset" class="cancel">Cancel upload</button>
+ <button type="button" class="delete">Delete</button>
+ <input type="checkbox" class="toggle">
+ <!-- The global file processing state -->
+ <span class="fileupload-process"></span>
+ </div>
+ <!-- The global progress state -->
+ <div class="fileupload-progress fade" style="display:none">
+ <!-- The global progress bar -->
+ <div class="progress" role="progressbar" aria-valuemin="0" aria-valuemax="100"></div>
+ <!-- The extended global progress state -->
+ <div class="progress-extended">&nbsp;</div>
+ </div>
+ </div>
+ <!-- The table listing the files available for upload/download -->
+ <table role="presentation"><tbody class="files"></tbody></table>
+</form>
+<br>
+<h3>Demo Notes</h3>
+<ul>
+ <li>The maximum file size for uploads in this demo is <strong>5 MB</strong> (default file size is unlimited).</li>
+ <li>Only image files (<strong>JPG, GIF, PNG</strong>) are allowed in this demo (by default there is no file type restriction).</li>
+ <li>Uploaded files will be deleted automatically after <strong>5 minutes</strong> (demo setting).</li>
+ <li>You can <strong>drag &amp; drop</strong> files from your desktop on this webpage (see <a href="https://github.com/blueimp/jQuery-File-Upload/wiki/Browser-support">Browser support</a>).</li>
+ <li>Please refer to the <a href="https://github.com/blueimp/jQuery-File-Upload">project website</a> and <a href="https://github.com/blueimp/jQuery-File-Upload/wiki">documentation</a> for more information.</li>
+ <li>Built with <a href="https://jqueryui.com">jQuery UI</a>.</li>
+</ul>
+<!-- The blueimp Gallery widget -->
+<div id="blueimp-gallery" class="blueimp-gallery blueimp-gallery-controls" data-filter=":even">
+ <div class="slides"></div>
+ <h3 class="title"></h3>
+ <a class="prev">‹</a>
+ <a class="next">›</a>
+ <a class="close">×</a>
+ <a class="play-pause"></a>
+ <ol class="indicator"></ol>
+</div>
+<!-- The template to display files available for upload -->
+<script id="template-upload" type="text/x-tmpl">
+{% for (var i=0, file; file=o.files[i]; i++) { %}
+ <tr class="template-upload fade">
+ <td>
+ <span class="preview"></span>
+ </td>
+ <td>
+ <p class="name">{%=file.name%}</p>
+ <strong class="error"></strong>
+ </td>
+ <td>
+ <p class="size">Processing...</p>
+ <div class="progress"></div>
+ </td>
+ <td>
+ {% if (!i && !o.options.autoUpload) { %}
+ <button class="start" disabled>Start</button>
+ {% } %}
+ {% if (!i) { %}
+ <button class="cancel">Cancel</button>
+ {% } %}
+ </td>
+ </tr>
+{% } %}
+</script>
+<!-- The template to display files available for download -->
+<script id="template-download" type="text/x-tmpl">
+{% for (var i=0, file; file=o.files[i]; i++) { %}
+ <tr class="template-download fade">
+ <td>
+ <span class="preview">
+ {% if (file.thumbnailUrl) { %}
+ <a href="{%=file.url%}" title="{%=file.name%}" download="{%=file.name%}" data-gallery><img src="{%=file.thumbnailUrl%}"></a>
+ {% } %}
+ </span>
+ </td>
+ <td>
+ <p class="name">
+ <a href="{%=file.url%}" title="{%=file.name%}" download="{%=file.name%}" {%=file.thumbnailUrl?'data-gallery':''%}>{%=file.name%}</a>
+ </p>
+ {% if (file.error) { %}
+ <div><span class="error">Error</span> {%=file.error%}</div>
+ {% } %}
+ </td>
+ <td>
+ <span class="size">{%=o.formatFileSize(file.size)%}</span>
+ </td>
+ <td>
+ <button class="delete" data-type="{%=file.deleteType%}" data-url="{%=file.deleteUrl%}"{% if (file.deleteWithCredentials) { %} data-xhr-fields='{"withCredentials":true}'{% } %}>Delete</button>
+ <input type="checkbox" name="delete" value="1" class="toggle">
+ </td>
+ </tr>
+{% } %}
+</script>
+<script src="//ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
+<script src="//ajax.googleapis.com/ajax/libs/jqueryui/1.11.1/jquery-ui.min.js"></script>
+<!-- The Templates plugin is included to render the upload/download listings -->
+<script src="//blueimp.github.io/JavaScript-Templates/js/tmpl.min.js"></script>
+<!-- The Load Image plugin is included for the preview images and image resizing functionality -->
+<script src="//blueimp.github.io/JavaScript-Load-Image/js/load-image.all.min.js"></script>
+<!-- The Canvas to Blob plugin is included for image resizing functionality -->
+<script src="//blueimp.github.io/JavaScript-Canvas-to-Blob/js/canvas-to-blob.min.js"></script>
+<!-- blueimp Gallery script -->
+<script src="//blueimp.github.io/Gallery/js/jquery.blueimp-gallery.min.js"></script>
+<!-- The Iframe Transport is required for browsers without support for XHR file uploads -->
+<script src="js/jquery.iframe-transport.js"></script>
+<!-- The basic File Upload plugin -->
+<script src="js/jquery.fileupload.js"></script>
+<!-- The File Upload processing plugin -->
+<script src="js/jquery.fileupload-process.js"></script>
+<!-- The File Upload image preview & resize plugin -->
+<script src="js/jquery.fileupload-image.js"></script>
+<!-- The File Upload audio preview plugin -->
+<script src="js/jquery.fileupload-audio.js"></script>
+<!-- The File Upload video preview plugin -->
+<script src="js/jquery.fileupload-video.js"></script>
+<!-- The File Upload validation plugin -->
+<script src="js/jquery.fileupload-validate.js"></script>
+<!-- The File Upload user interface plugin -->
+<script src="js/jquery.fileupload-ui.js"></script>
+<!-- The File Upload jQuery UI plugin -->
+<script src="js/jquery.fileupload-jquery-ui.js"></script>
+<!-- The main application script -->
+<script src="js/main.js"></script>
+<script>
+// Initialize the jQuery UI theme switcher:
+$('#theme-switcher').change(function () {
+ var theme = $('#theme');
+ theme.prop(
+ 'href',
+ theme.prop('href').replace(
+ /[\w\-]+\/jquery-ui.css/,
+ $(this).val() + '/jquery-ui.css'
+ )
+ );
+});
+</script>
+<!-- The XDomainRequest Transport is included for cross-domain file deletion for IE 8 and IE 9 -->
+<!--[if (gte IE 8)&(lt IE 10)]>
+<script src="js/cors/jquery.xdr-transport.js"></script>
+<![endif]-->
+</body>
+</html>
diff --git a/library/blueimp_upload/js/app.js b/library/blueimp_upload/js/app.js
new file mode 100644
index 000000000..47b4f923b
--- /dev/null
+++ b/library/blueimp_upload/js/app.js
@@ -0,0 +1,101 @@
+/*
+ * jQuery File Upload Plugin Angular JS Example 1.2.1
+ * https://github.com/blueimp/jQuery-File-Upload
+ *
+ * Copyright 2013, Sebastian Tschan
+ * https://blueimp.net
+ *
+ * Licensed under the MIT license:
+ * http://www.opensource.org/licenses/MIT
+ */
+
+/* jshint nomen:false */
+/* global window, angular */
+
+(function () {
+ 'use strict';
+
+ var isOnGitHub = window.location.hostname === 'blueimp.github.io',
+ url = isOnGitHub ? '//jquery-file-upload.appspot.com/' : 'server/php/';
+
+ angular.module('demo', [
+ 'blueimp.fileupload'
+ ])
+ .config([
+ '$httpProvider', 'fileUploadProvider',
+ function ($httpProvider, fileUploadProvider) {
+ delete $httpProvider.defaults.headers.common['X-Requested-With'];
+ fileUploadProvider.defaults.redirect = window.location.href.replace(
+ /\/[^\/]*$/,
+ '/cors/result.html?%s'
+ );
+ if (isOnGitHub) {
+ // Demo settings:
+ angular.extend(fileUploadProvider.defaults, {
+ // Enable image resizing, except for Android and Opera,
+ // which actually support image resizing, but fail to
+ // send Blob objects via XHR requests:
+ disableImageResize: /Android(?!.*Chrome)|Opera/
+ .test(window.navigator.userAgent),
+ maxFileSize: 5000000,
+ acceptFileTypes: /(\.|\/)(gif|jpe?g|png)$/i
+ });
+ }
+ }
+ ])
+
+ .controller('DemoFileUploadController', [
+ '$scope', '$http', '$filter', '$window',
+ function ($scope, $http) {
+ $scope.options = {
+ url: url
+ };
+ if (!isOnGitHub) {
+ $scope.loadingFiles = true;
+ $http.get(url)
+ .then(
+ function (response) {
+ $scope.loadingFiles = false;
+ $scope.queue = response.data.files || [];
+ },
+ function () {
+ $scope.loadingFiles = false;
+ }
+ );
+ }
+ }
+ ])
+
+ .controller('FileDestroyController', [
+ '$scope', '$http',
+ function ($scope, $http) {
+ var file = $scope.file,
+ state;
+ if (file.url) {
+ file.$state = function () {
+ return state;
+ };
+ file.$destroy = function () {
+ state = 'pending';
+ return $http({
+ url: file.deleteUrl,
+ method: file.deleteType
+ }).then(
+ function () {
+ state = 'resolved';
+ $scope.clear(file);
+ },
+ function () {
+ state = 'rejected';
+ }
+ );
+ };
+ } else if (!file.$cancel && !file._index) {
+ file.$cancel = function () {
+ $scope.clear(file);
+ };
+ }
+ }
+ ]);
+
+}());
diff --git a/library/blueimp_upload/js/cors/jquery.postmessage-transport.js b/library/blueimp_upload/js/cors/jquery.postmessage-transport.js
new file mode 100644
index 000000000..2b4851e67
--- /dev/null
+++ b/library/blueimp_upload/js/cors/jquery.postmessage-transport.js
@@ -0,0 +1,117 @@
+/*
+ * jQuery postMessage Transport Plugin 1.1.1
+ * https://github.com/blueimp/jQuery-File-Upload
+ *
+ * Copyright 2011, Sebastian Tschan
+ * https://blueimp.net
+ *
+ * Licensed under the MIT license:
+ * http://www.opensource.org/licenses/MIT
+ */
+
+/* global define, window, document */
+
+(function (factory) {
+ 'use strict';
+ if (typeof define === 'function' && define.amd) {
+ // Register as an anonymous AMD module:
+ define(['jquery'], factory);
+ } else {
+ // Browser globals:
+ factory(window.jQuery);
+ }
+}(function ($) {
+ 'use strict';
+
+ var counter = 0,
+ names = [
+ 'accepts',
+ 'cache',
+ 'contents',
+ 'contentType',
+ 'crossDomain',
+ 'data',
+ 'dataType',
+ 'headers',
+ 'ifModified',
+ 'mimeType',
+ 'password',
+ 'processData',
+ 'timeout',
+ 'traditional',
+ 'type',
+ 'url',
+ 'username'
+ ],
+ convert = function (p) {
+ return p;
+ };
+
+ $.ajaxSetup({
+ converters: {
+ 'postmessage text': convert,
+ 'postmessage json': convert,
+ 'postmessage html': convert
+ }
+ });
+
+ $.ajaxTransport('postmessage', function (options) {
+ if (options.postMessage && window.postMessage) {
+ var iframe,
+ loc = $('<a>').prop('href', options.postMessage)[0],
+ target = loc.protocol + '//' + loc.host,
+ xhrUpload = options.xhr().upload;
+ return {
+ send: function (_, completeCallback) {
+ counter += 1;
+ var message = {
+ id: 'postmessage-transport-' + counter
+ },
+ eventName = 'message.' + message.id;
+ iframe = $(
+ '<iframe style="display:none;" src="' +
+ options.postMessage + '" name="' +
+ message.id + '"></iframe>'
+ ).bind('load', function () {
+ $.each(names, function (i, name) {
+ message[name] = options[name];
+ });
+ message.dataType = message.dataType.replace('postmessage ', '');
+ $(window).bind(eventName, function (e) {
+ e = e.originalEvent;
+ var data = e.data,
+ ev;
+ if (e.origin === target && data.id === message.id) {
+ if (data.type === 'progress') {
+ ev = document.createEvent('Event');
+ ev.initEvent(data.type, false, true);
+ $.extend(ev, data);
+ xhrUpload.dispatchEvent(ev);
+ } else {
+ completeCallback(
+ data.status,
+ data.statusText,
+ {postmessage: data.result},
+ data.headers
+ );
+ iframe.remove();
+ $(window).unbind(eventName);
+ }
+ }
+ });
+ iframe[0].contentWindow.postMessage(
+ message,
+ target
+ );
+ }).appendTo(document.body);
+ },
+ abort: function () {
+ if (iframe) {
+ iframe.remove();
+ }
+ }
+ };
+ }
+ });
+
+}));
diff --git a/library/blueimp_upload/js/cors/jquery.xdr-transport.js b/library/blueimp_upload/js/cors/jquery.xdr-transport.js
new file mode 100644
index 000000000..0044cc2d5
--- /dev/null
+++ b/library/blueimp_upload/js/cors/jquery.xdr-transport.js
@@ -0,0 +1,86 @@
+/*
+ * jQuery XDomainRequest Transport Plugin 1.1.3
+ * https://github.com/blueimp/jQuery-File-Upload
+ *
+ * Copyright 2011, Sebastian Tschan
+ * https://blueimp.net
+ *
+ * Licensed under the MIT license:
+ * http://www.opensource.org/licenses/MIT
+ *
+ * Based on Julian Aubourg's ajaxHooks xdr.js:
+ * https://github.com/jaubourg/ajaxHooks/
+ */
+
+/* global define, window, XDomainRequest */
+
+(function (factory) {
+ 'use strict';
+ if (typeof define === 'function' && define.amd) {
+ // Register as an anonymous AMD module:
+ define(['jquery'], factory);
+ } else {
+ // Browser globals:
+ factory(window.jQuery);
+ }
+}(function ($) {
+ 'use strict';
+ if (window.XDomainRequest && !$.support.cors) {
+ $.ajaxTransport(function (s) {
+ if (s.crossDomain && s.async) {
+ if (s.timeout) {
+ s.xdrTimeout = s.timeout;
+ delete s.timeout;
+ }
+ var xdr;
+ return {
+ send: function (headers, completeCallback) {
+ var addParamChar = /\?/.test(s.url) ? '&' : '?';
+ function callback(status, statusText, responses, responseHeaders) {
+ xdr.onload = xdr.onerror = xdr.ontimeout = $.noop;
+ xdr = null;
+ completeCallback(status, statusText, responses, responseHeaders);
+ }
+ xdr = new XDomainRequest();
+ // XDomainRequest only supports GET and POST:
+ if (s.type === 'DELETE') {
+ s.url = s.url + addParamChar + '_method=DELETE';
+ s.type = 'POST';
+ } else if (s.type === 'PUT') {
+ s.url = s.url + addParamChar + '_method=PUT';
+ s.type = 'POST';
+ } else if (s.type === 'PATCH') {
+ s.url = s.url + addParamChar + '_method=PATCH';
+ s.type = 'POST';
+ }
+ xdr.open(s.type, s.url);
+ xdr.onload = function () {
+ callback(
+ 200,
+ 'OK',
+ {text: xdr.responseText},
+ 'Content-Type: ' + xdr.contentType
+ );
+ };
+ xdr.onerror = function () {
+ callback(404, 'Not Found');
+ };
+ if (s.xdrTimeout) {
+ xdr.ontimeout = function () {
+ callback(0, 'timeout');
+ };
+ xdr.timeout = s.xdrTimeout;
+ }
+ xdr.send((s.hasContent && s.data) || null);
+ },
+ abort: function () {
+ if (xdr) {
+ xdr.onerror = $.noop();
+ xdr.abort();
+ }
+ }
+ };
+ }
+ });
+ }
+}));
diff --git a/library/blueimp_upload/js/jquery.fileupload-angular.js b/library/blueimp_upload/js/jquery.fileupload-angular.js
new file mode 100644
index 000000000..e4ef3926b
--- /dev/null
+++ b/library/blueimp_upload/js/jquery.fileupload-angular.js
@@ -0,0 +1,429 @@
+/*
+ * jQuery File Upload AngularJS Plugin 2.2.0
+ * https://github.com/blueimp/jQuery-File-Upload
+ *
+ * Copyright 2013, Sebastian Tschan
+ * https://blueimp.net
+ *
+ * Licensed under the MIT license:
+ * http://www.opensource.org/licenses/MIT
+ */
+
+/* jshint nomen:false */
+/* global define, angular */
+
+(function (factory) {
+ 'use strict';
+ if (typeof define === 'function' && define.amd) {
+ // Register as an anonymous AMD module:
+ define([
+ 'jquery',
+ 'angular',
+ './jquery.fileupload-image',
+ './jquery.fileupload-audio',
+ './jquery.fileupload-video',
+ './jquery.fileupload-validate'
+ ], factory);
+ } else {
+ factory();
+ }
+}(function () {
+ 'use strict';
+
+ angular.module('blueimp.fileupload', [])
+
+ // The fileUpload service provides configuration options
+ // for the fileUpload directive and default handlers for
+ // File Upload events:
+ .provider('fileUpload', function () {
+ var scopeEvalAsync = function (expression) {
+ var scope = angular.element(this)
+ .fileupload('option', 'scope');
+ // Schedule a new $digest cycle if not already inside of one
+ // and evaluate the given expression:
+ scope.$evalAsync(expression);
+ },
+ addFileMethods = function (scope, data) {
+ var files = data.files,
+ file = files[0];
+ angular.forEach(files, function (file, index) {
+ file._index = index;
+ file.$state = function () {
+ return data.state();
+ };
+ file.$processing = function () {
+ return data.processing();
+ };
+ file.$progress = function () {
+ return data.progress();
+ };
+ file.$response = function () {
+ return data.response();
+ };
+ });
+ file.$submit = function () {
+ if (!file.error) {
+ return data.submit();
+ }
+ };
+ file.$cancel = function () {
+ return data.abort();
+ };
+ },
+ $config;
+ $config = this.defaults = {
+ handleResponse: function (e, data) {
+ var files = data.result && data.result.files;
+ if (files) {
+ data.scope.replace(data.files, files);
+ } else if (data.errorThrown ||
+ data.textStatus === 'error') {
+ data.files[0].error = data.errorThrown ||
+ data.textStatus;
+ }
+ },
+ add: function (e, data) {
+ if (e.isDefaultPrevented()) {
+ return false;
+ }
+ var scope = data.scope,
+ filesCopy = [];
+ angular.forEach(data.files, function (file) {
+ filesCopy.push(file);
+ });
+ scope.$apply(function () {
+ addFileMethods(scope, data);
+ var method = scope.option('prependFiles') ?
+ 'unshift' : 'push';
+ Array.prototype[method].apply(scope.queue, data.files);
+ });
+ data.process(function () {
+ return scope.process(data);
+ }).always(function () {
+ scope.$apply(function () {
+ addFileMethods(scope, data);
+ scope.replace(filesCopy, data.files);
+ });
+ }).then(function () {
+ if ((scope.option('autoUpload') ||
+ data.autoUpload) &&
+ data.autoUpload !== false) {
+ data.submit();
+ }
+ });
+ },
+ progress: function (e, data) {
+ if (e.isDefaultPrevented()) {
+ return false;
+ }
+ data.scope.$apply();
+ },
+ done: function (e, data) {
+ if (e.isDefaultPrevented()) {
+ return false;
+ }
+ var that = this;
+ data.scope.$apply(function () {
+ data.handleResponse.call(that, e, data);
+ });
+ },
+ fail: function (e, data) {
+ if (e.isDefaultPrevented()) {
+ return false;
+ }
+ var that = this,
+ scope = data.scope;
+ if (data.errorThrown === 'abort') {
+ scope.clear(data.files);
+ return;
+ }
+ scope.$apply(function () {
+ data.handleResponse.call(that, e, data);
+ });
+ },
+ stop: scopeEvalAsync,
+ processstart: scopeEvalAsync,
+ processstop: scopeEvalAsync,
+ getNumberOfFiles: function () {
+ var scope = this.scope;
+ return scope.queue.length - scope.processing();
+ },
+ dataType: 'json',
+ autoUpload: false
+ };
+ this.$get = [
+ function () {
+ return {
+ defaults: $config
+ };
+ }
+ ];
+ })
+
+ // Format byte numbers to readable presentations:
+ .provider('formatFileSizeFilter', function () {
+ var $config = {
+ // Byte units following the IEC format
+ // http://en.wikipedia.org/wiki/Kilobyte
+ units: [
+ {size: 1000000000, suffix: ' GB'},
+ {size: 1000000, suffix: ' MB'},
+ {size: 1000, suffix: ' KB'}
+ ]
+ };
+ this.defaults = $config;
+ this.$get = function () {
+ return function (bytes) {
+ if (!angular.isNumber(bytes)) {
+ return '';
+ }
+ var unit = true,
+ i = 0,
+ prefix,
+ suffix;
+ while (unit) {
+ unit = $config.units[i];
+ prefix = unit.prefix || '';
+ suffix = unit.suffix || '';
+ if (i === $config.units.length - 1 || bytes >= unit.size) {
+ return prefix + (bytes / unit.size).toFixed(2) + suffix;
+ }
+ i += 1;
+ }
+ };
+ };
+ })
+
+ // The FileUploadController initializes the fileupload widget and
+ // provides scope methods to control the File Upload functionality:
+ .controller('FileUploadController', [
+ '$scope', '$element', '$attrs', '$window', 'fileUpload',
+ function ($scope, $element, $attrs, $window, fileUpload) {
+ var uploadMethods = {
+ progress: function () {
+ return $element.fileupload('progress');
+ },
+ active: function () {
+ return $element.fileupload('active');
+ },
+ option: function (option, data) {
+ if (arguments.length === 1) {
+ return $element.fileupload('option', option);
+ }
+ $element.fileupload('option', option, data);
+ },
+ add: function (data) {
+ return $element.fileupload('add', data);
+ },
+ send: function (data) {
+ return $element.fileupload('send', data);
+ },
+ process: function (data) {
+ return $element.fileupload('process', data);
+ },
+ processing: function (data) {
+ return $element.fileupload('processing', data);
+ }
+ };
+ $scope.disabled = !$window.jQuery.support.fileInput;
+ $scope.queue = $scope.queue || [];
+ $scope.clear = function (files) {
+ var queue = this.queue,
+ i = queue.length,
+ file = files,
+ length = 1;
+ if (angular.isArray(files)) {
+ file = files[0];
+ length = files.length;
+ }
+ while (i) {
+ i -= 1;
+ if (queue[i] === file) {
+ return queue.splice(i, length);
+ }
+ }
+ };
+ $scope.replace = function (oldFiles, newFiles) {
+ var queue = this.queue,
+ file = oldFiles[0],
+ i,
+ j;
+ for (i = 0; i < queue.length; i += 1) {
+ if (queue[i] === file) {
+ for (j = 0; j < newFiles.length; j += 1) {
+ queue[i + j] = newFiles[j];
+ }
+ return;
+ }
+ }
+ };
+ $scope.applyOnQueue = function (method) {
+ var list = this.queue.slice(0),
+ i,
+ file;
+ for (i = 0; i < list.length; i += 1) {
+ file = list[i];
+ if (file[method]) {
+ file[method]();
+ }
+ }
+ };
+ $scope.submit = function () {
+ this.applyOnQueue('$submit');
+ };
+ $scope.cancel = function () {
+ this.applyOnQueue('$cancel');
+ };
+ // Add upload methods to the scope:
+ angular.extend($scope, uploadMethods);
+ // The fileupload widget will initialize with
+ // the options provided via "data-"-parameters,
+ // as well as those given via options object:
+ $element.fileupload(angular.extend(
+ {scope: $scope},
+ fileUpload.defaults
+ )).on('fileuploadadd', function (e, data) {
+ data.scope = $scope;
+ }).on('fileuploadfail', function (e, data) {
+ if (data.errorThrown === 'abort') {
+ return;
+ }
+ if (data.dataType &&
+ data.dataType.indexOf('json') === data.dataType.length - 4) {
+ try {
+ data.result = angular.fromJson(data.jqXHR.responseText);
+ } catch (ignore) {}
+ }
+ }).on([
+ 'fileuploadadd',
+ 'fileuploadsubmit',
+ 'fileuploadsend',
+ 'fileuploaddone',
+ 'fileuploadfail',
+ 'fileuploadalways',
+ 'fileuploadprogress',
+ 'fileuploadprogressall',
+ 'fileuploadstart',
+ 'fileuploadstop',
+ 'fileuploadchange',
+ 'fileuploadpaste',
+ 'fileuploaddrop',
+ 'fileuploaddragover',
+ 'fileuploadchunksend',
+ 'fileuploadchunkdone',
+ 'fileuploadchunkfail',
+ 'fileuploadchunkalways',
+ 'fileuploadprocessstart',
+ 'fileuploadprocess',
+ 'fileuploadprocessdone',
+ 'fileuploadprocessfail',
+ 'fileuploadprocessalways',
+ 'fileuploadprocessstop'
+ ].join(' '), function (e, data) {
+ if ($scope.$emit(e.type, data).defaultPrevented) {
+ e.preventDefault();
+ }
+ }).on('remove', function () {
+ // Remove upload methods from the scope,
+ // when the widget is removed:
+ var method;
+ for (method in uploadMethods) {
+ if (uploadMethods.hasOwnProperty(method)) {
+ delete $scope[method];
+ }
+ }
+ });
+ // Observe option changes:
+ $scope.$watch(
+ $attrs.fileUpload,
+ function (newOptions) {
+ if (newOptions) {
+ $element.fileupload('option', newOptions);
+ }
+ }
+ );
+ }
+ ])
+
+ // Provide File Upload progress feedback:
+ .controller('FileUploadProgressController', [
+ '$scope', '$attrs', '$parse',
+ function ($scope, $attrs, $parse) {
+ var fn = $parse($attrs.fileUploadProgress),
+ update = function () {
+ var progress = fn($scope);
+ if (!progress || !progress.total) {
+ return;
+ }
+ $scope.num = Math.floor(
+ progress.loaded / progress.total * 100
+ );
+ };
+ update();
+ $scope.$watch(
+ $attrs.fileUploadProgress + '.loaded',
+ function (newValue, oldValue) {
+ if (newValue !== oldValue) {
+ update();
+ }
+ }
+ );
+ }
+ ])
+
+ // Display File Upload previews:
+ .controller('FileUploadPreviewController', [
+ '$scope', '$element', '$attrs',
+ function ($scope, $element, $attrs) {
+ $scope.$watch(
+ $attrs.fileUploadPreview + '.preview',
+ function (preview) {
+ $element.empty();
+ if (preview) {
+ $element.append(preview);
+ }
+ }
+ );
+ }
+ ])
+
+ .directive('fileUpload', function () {
+ return {
+ controller: 'FileUploadController',
+ scope: true
+ };
+ })
+
+ .directive('fileUploadProgress', function () {
+ return {
+ controller: 'FileUploadProgressController',
+ scope: true
+ };
+ })
+
+ .directive('fileUploadPreview', function () {
+ return {
+ controller: 'FileUploadPreviewController'
+ };
+ })
+
+ // Enhance the HTML5 download attribute to
+ // allow drag&drop of files to the desktop:
+ .directive('download', function () {
+ return function (scope, elm) {
+ elm.on('dragstart', function (e) {
+ try {
+ e.originalEvent.dataTransfer.setData(
+ 'DownloadURL',
+ [
+ 'application/octet-stream',
+ elm.prop('download'),
+ elm.prop('href')
+ ].join(':')
+ );
+ } catch (ignore) {}
+ });
+ };
+ });
+
+}));
diff --git a/library/blueimp_upload/js/jquery.fileupload-audio.js b/library/blueimp_upload/js/jquery.fileupload-audio.js
new file mode 100644
index 000000000..575800e82
--- /dev/null
+++ b/library/blueimp_upload/js/jquery.fileupload-audio.js
@@ -0,0 +1,106 @@
+/*
+ * jQuery File Upload Audio Preview Plugin 1.0.3
+ * https://github.com/blueimp/jQuery-File-Upload
+ *
+ * Copyright 2013, Sebastian Tschan
+ * https://blueimp.net
+ *
+ * Licensed under the MIT license:
+ * http://www.opensource.org/licenses/MIT
+ */
+
+/* jshint nomen:false */
+/* global define, window, document */
+
+(function (factory) {
+ 'use strict';
+ if (typeof define === 'function' && define.amd) {
+ // Register as an anonymous AMD module:
+ define([
+ 'jquery',
+ 'load-image',
+ './jquery.fileupload-process'
+ ], factory);
+ } else {
+ // Browser globals:
+ factory(
+ window.jQuery,
+ window.loadImage
+ );
+ }
+}(function ($, loadImage) {
+ 'use strict';
+
+ // Prepend to the default processQueue:
+ $.blueimp.fileupload.prototype.options.processQueue.unshift(
+ {
+ action: 'loadAudio',
+ // Use the action as prefix for the "@" options:
+ prefix: true,
+ fileTypes: '@',
+ maxFileSize: '@',
+ disabled: '@disableAudioPreview'
+ },
+ {
+ action: 'setAudio',
+ name: '@audioPreviewName',
+ disabled: '@disableAudioPreview'
+ }
+ );
+
+ // The File Upload Audio Preview plugin extends the fileupload widget
+ // with audio preview functionality:
+ $.widget('blueimp.fileupload', $.blueimp.fileupload, {
+
+ options: {
+ // The regular expression for the types of audio files to load,
+ // matched against the file type:
+ loadAudioFileTypes: /^audio\/.*$/
+ },
+
+ _audioElement: document.createElement('audio'),
+
+ processActions: {
+
+ // Loads the audio file given via data.files and data.index
+ // as audio element if the browser supports playing it.
+ // Accepts the options fileTypes (regular expression)
+ // and maxFileSize (integer) to limit the files to load:
+ loadAudio: function (data, options) {
+ if (options.disabled) {
+ return data;
+ }
+ var file = data.files[data.index],
+ url,
+ audio;
+ if (this._audioElement.canPlayType &&
+ this._audioElement.canPlayType(file.type) &&
+ ($.type(options.maxFileSize) !== 'number' ||
+ file.size <= options.maxFileSize) &&
+ (!options.fileTypes ||
+ options.fileTypes.test(file.type))) {
+ url = loadImage.createObjectURL(file);
+ if (url) {
+ audio = this._audioElement.cloneNode(false);
+ audio.src = url;
+ audio.controls = true;
+ data.audio = audio;
+ return data;
+ }
+ }
+ return data;
+ },
+
+ // Sets the audio element as a property of the file object:
+ setAudio: function (data, options) {
+ if (data.audio && !options.disabled) {
+ data.files[data.index][options.name || 'preview'] = data.audio;
+ }
+ return data;
+ }
+
+ }
+
+ });
+
+}));
diff --git a/library/blueimp_upload/js/jquery.fileupload-image.js b/library/blueimp_upload/js/jquery.fileupload-image.js
new file mode 100644
index 000000000..5bb7026ae
--- /dev/null
+++ b/library/blueimp_upload/js/jquery.fileupload-image.js
@@ -0,0 +1,315 @@
+/*
+ * jQuery File Upload Image Preview & Resize Plugin 1.7.2
+ * https://github.com/blueimp/jQuery-File-Upload
+ *
+ * Copyright 2013, Sebastian Tschan
+ * https://blueimp.net
+ *
+ * Licensed under the MIT license:
+ * http://www.opensource.org/licenses/MIT
+ */
+
+/* jshint nomen:false */
+/* global define, window, Blob */
+
+(function (factory) {
+ 'use strict';
+ if (typeof define === 'function' && define.amd) {
+ // Register as an anonymous AMD module:
+ define([
+ 'jquery',
+ 'load-image',
+ 'load-image-meta',
+ 'load-image-exif',
+ 'load-image-ios',
+ 'canvas-to-blob',
+ './jquery.fileupload-process'
+ ], factory);
+ } else {
+ // Browser globals:
+ factory(
+ window.jQuery,
+ window.loadImage
+ );
+ }
+}(function ($, loadImage) {
+ 'use strict';
+
+ // Prepend to the default processQueue:
+ $.blueimp.fileupload.prototype.options.processQueue.unshift(
+ {
+ action: 'loadImageMetaData',
+ disableImageHead: '@',
+ disableExif: '@',
+ disableExifThumbnail: '@',
+ disableExifSub: '@',
+ disableExifGps: '@',
+ disabled: '@disableImageMetaDataLoad'
+ },
+ {
+ action: 'loadImage',
+ // Use the action as prefix for the "@" options:
+ prefix: true,
+ fileTypes: '@',
+ maxFileSize: '@',
+ noRevoke: '@',
+ disabled: '@disableImageLoad'
+ },
+ {
+ action: 'resizeImage',
+ // Use "image" as prefix for the "@" options:
+ prefix: 'image',
+ maxWidth: '@',
+ maxHeight: '@',
+ minWidth: '@',
+ minHeight: '@',
+ crop: '@',
+ orientation: '@',
+ forceResize: '@',
+ disabled: '@disableImageResize'
+ },
+ {
+ action: 'saveImage',
+ quality: '@imageQuality',
+ type: '@imageType',
+ disabled: '@disableImageResize'
+ },
+ {
+ action: 'saveImageMetaData',
+ disabled: '@disableImageMetaDataSave'
+ },
+ {
+ action: 'resizeImage',
+ // Use "preview" as prefix for the "@" options:
+ prefix: 'preview',
+ maxWidth: '@',
+ maxHeight: '@',
+ minWidth: '@',
+ minHeight: '@',
+ crop: '@',
+ orientation: '@',
+ thumbnail: '@',
+ canvas: '@',
+ disabled: '@disableImagePreview'
+ },
+ {
+ action: 'setImage',
+ name: '@imagePreviewName',
+ disabled: '@disableImagePreview'
+ },
+ {
+ action: 'deleteImageReferences',
+ disabled: '@disableImageReferencesDeletion'
+ }
+ );
+
+ // The File Upload Resize plugin extends the fileupload widget
+ // with image resize functionality:
+ $.widget('blueimp.fileupload', $.blueimp.fileupload, {
+
+ options: {
+ // The regular expression for the types of images to load:
+ // matched against the file type:
+ loadImageFileTypes: /^image\/(gif|jpeg|png|svg\+xml)$/,
+ // The maximum file size of images to load:
+ loadImageMaxFileSize: 10000000, // 10MB
+ // The maximum width of resized images:
+ imageMaxWidth: 1920,
+ // The maximum height of resized images:
+ imageMaxHeight: 1080,
+ // Defines the image orientation (1-8) or takes the orientation
+ // value from Exif data if set to true:
+ imageOrientation: false,
+ // Define if resized images should be cropped or only scaled:
+ imageCrop: false,
+ // Disable the resize image functionality by default:
+ disableImageResize: true,
+ // The maximum width of the preview images:
+ previewMaxWidth: 80,
+ // The maximum height of the preview images:
+ previewMaxHeight: 80,
+ // Defines the preview orientation (1-8) or takes the orientation
+ // value from Exif data if set to true:
+ previewOrientation: true,
+ // Create the preview using the Exif data thumbnail:
+ previewThumbnail: true,
+ // Define if preview images should be cropped or only scaled:
+ previewCrop: false,
+ // Define if preview images should be resized as canvas elements:
+ previewCanvas: true
+ },
+
+ processActions: {
+
+ // Loads the image given via data.files and data.index
+ // as img element, if the browser supports the File API.
+ // Accepts the options fileTypes (regular expression)
+ // and maxFileSize (integer) to limit the files to load:
+ loadImage: function (data, options) {
+ if (options.disabled) {
+ return data;
+ }
+ var that = this,
+ file = data.files[data.index],
+ dfd = $.Deferred();
+ if (($.type(options.maxFileSize) === 'number' &&
+ file.size > options.maxFileSize) ||
+ (options.fileTypes &&
+ !options.fileTypes.test(file.type)) ||
+ !loadImage(
+ file,
+ function (img) {
+ if (img.src) {
+ data.img = img;
+ }
+ dfd.resolveWith(that, [data]);
+ },
+ options
+ )) {
+ return data;
+ }
+ return dfd.promise();
+ },
+
+ // Resizes the image given as data.canvas or data.img
+ // and updates data.canvas or data.img with the resized image.
+ // Also stores the resized image as preview property.
+ // Accepts the options maxWidth, maxHeight, minWidth,
+ // minHeight, canvas and crop:
+ resizeImage: function (data, options) {
+ if (options.disabled || !(data.canvas || data.img)) {
+ return data;
+ }
+ options = $.extend({canvas: true}, options);
+ var that = this,
+ dfd = $.Deferred(),
+ img = (options.canvas && data.canvas) || data.img,
+ resolve = function (newImg) {
+ if (newImg && (newImg.width !== img.width ||
+ newImg.height !== img.height ||
+ options.forceResize)) {
+ data[newImg.getContext ? 'canvas' : 'img'] = newImg;
+ }
+ data.preview = newImg;
+ dfd.resolveWith(that, [data]);
+ },
+ thumbnail;
+ if (data.exif) {
+ if (options.orientation === true) {
+ options.orientation = data.exif.get('Orientation');
+ }
+ if (options.thumbnail) {
+ thumbnail = data.exif.get('Thumbnail');
+ if (thumbnail) {
+ loadImage(thumbnail, resolve, options);
+ return dfd.promise();
+ }
+ }
+ // Prevent orienting the same image twice:
+ if (data.orientation) {
+ delete options.orientation;
+ } else {
+ data.orientation = options.orientation;
+ }
+ }
+ if (img) {
+ resolve(loadImage.scale(img, options));
+ return dfd.promise();
+ }
+ return data;
+ },
+
+ // Saves the processed image given as data.canvas
+ // inplace at data.index of data.files:
+ saveImage: function (data, options) {
+ if (!data.canvas || options.disabled) {
+ return data;
+ }
+ var that = this,
+ file = data.files[data.index],
+ dfd = $.Deferred();
+ if (data.canvas.toBlob) {
+ data.canvas.toBlob(
+ function (blob) {
+ if (!blob.name) {
+ if (file.type === blob.type) {
+ blob.name = file.name;
+ } else if (file.name) {
+ blob.name = file.name.replace(
+ /\..+$/,
+ '.' + blob.type.substr(6)
+ );
+ }
+ }
+ // Don't restore invalid meta data:
+ if (file.type !== blob.type) {
+ delete data.imageHead;
+ }
+ // Store the created blob at the position
+ // of the original file in the files list:
+ data.files[data.index] = blob;
+ dfd.resolveWith(that, [data]);
+ },
+ options.type || file.type,
+ options.quality
+ );
+ } else {
+ return data;
+ }
+ return dfd.promise();
+ },
+
+ loadImageMetaData: function (data, options) {
+ if (options.disabled) {
+ return data;
+ }
+ var that = this,
+ dfd = $.Deferred();
+ loadImage.parseMetaData(data.files[data.index], function (result) {
+ $.extend(data, result);
+ dfd.resolveWith(that, [data]);
+ }, options);
+ return dfd.promise();
+ },
+
+ saveImageMetaData: function (data, options) {
+ if (!(data.imageHead && data.canvas &&
+ data.canvas.toBlob && !options.disabled)) {
+ return data;
+ }
+ var file = data.files[data.index],
+ blob = new Blob([
+ data.imageHead,
+ // Resized images always have a head size of 20 bytes,
+ // including the JPEG marker and a minimal JFIF header:
+ this._blobSlice.call(file, 20)
+ ], {type: file.type});
+ blob.name = file.name;
+ data.files[data.index] = blob;
+ return data;
+ },
+
+ // Sets the resized version of the image as a property of the
+ // file object, must be called after "saveImage":
+ setImage: function (data, options) {
+ if (data.preview && !options.disabled) {
+ data.files[data.index][options.name || 'preview'] = data.preview;
+ }
+ return data;
+ },
+
+ deleteImageReferences: function (data, options) {
+ if (!options.disabled) {
+ delete data.img;
+ delete data.canvas;
+ delete data.preview;
+ delete data.imageHead;
+ }
+ return data;
+ }
+
+ }
+
+ });
+
+}));
diff --git a/library/blueimp_upload/js/jquery.fileupload-jquery-ui.js b/library/blueimp_upload/js/jquery.fileupload-jquery-ui.js
new file mode 100755
index 000000000..af0a00b1e
--- /dev/null
+++ b/library/blueimp_upload/js/jquery.fileupload-jquery-ui.js
@@ -0,0 +1,152 @@
+/*
+ * jQuery File Upload jQuery UI Plugin 8.7.1
+ * https://github.com/blueimp/jQuery-File-Upload
+ *
+ * Copyright 2013, Sebastian Tschan
+ * https://blueimp.net
+ *
+ * Licensed under the MIT license:
+ * http://www.opensource.org/licenses/MIT
+ */
+
+/* jshint nomen:false */
+/* global define, window */
+
+(function (factory) {
+ 'use strict';
+ if (typeof define === 'function' && define.amd) {
+ // Register as an anonymous AMD module:
+ define(['jquery', './jquery.fileupload-ui'], factory);
+ } else {
+ // Browser globals:
+ factory(window.jQuery);
+ }
+}(function ($) {
+ 'use strict';
+
+ $.widget('blueimp.fileupload', $.blueimp.fileupload, {
+
+ options: {
+ processdone: function (e, data) {
+ data.context.find('.start').button('enable');
+ },
+ progress: function (e, data) {
+ if (data.context) {
+ data.context.find('.progress').progressbar(
+ 'option',
+ 'value',
+ parseInt(data.loaded / data.total * 100, 10)
+ );
+ }
+ },
+ progressall: function (e, data) {
+ var $this = $(this);
+ $this.find('.fileupload-progress')
+ .find('.progress').progressbar(
+ 'option',
+ 'value',
+ parseInt(data.loaded / data.total * 100, 10)
+ ).end()
+ .find('.progress-extended').each(function () {
+ $(this).html(
+ ($this.data('blueimp-fileupload') ||
+ $this.data('fileupload'))
+ ._renderExtendedProgress(data)
+ );
+ });
+ }
+ },
+
+ _renderUpload: function (func, files) {
+ var node = this._super(func, files),
+ showIconText = $(window).width() > 480;
+ node.find('.progress').empty().progressbar();
+ node.find('.start').button({
+ icons: {primary: 'ui-icon-circle-arrow-e'},
+ text: showIconText
+ });
+ node.find('.cancel').button({
+ icons: {primary: 'ui-icon-cancel'},
+ text: showIconText
+ });
+ if (node.hasClass('fade')) {
+ node.hide();
+ }
+ return node;
+ },
+
+ _renderDownload: function (func, files) {
+ var node = this._super(func, files),
+ showIconText = $(window).width() > 480;
+ node.find('.delete').button({
+ icons: {primary: 'ui-icon-trash'},
+ text: showIconText
+ });
+ if (node.hasClass('fade')) {
+ node.hide();
+ }
+ return node;
+ },
+
+ _startHandler: function (e) {
+ $(e.currentTarget).button('disable');
+ this._super(e);
+ },
+
+ _transition: function (node) {
+ var deferred = $.Deferred();
+ if (node.hasClass('fade')) {
+ node.fadeToggle(
+ this.options.transitionDuration,
+ this.options.transitionEasing,
+ function () {
+ deferred.resolveWith(node);
+ }
+ );
+ } else {
+ deferred.resolveWith(node);
+ }
+ return deferred;
+ },
+
+ _create: function () {
+ this._super();
+ this.element
+ .find('.fileupload-buttonbar')
+ .find('.fileinput-button').each(function () {
+ var input = $(this).find('input:file').detach();
+ $(this)
+ .button({icons: {primary: 'ui-icon-plusthick'}})
+ .append(input);
+ })
+ .end().find('.start')
+ .button({icons: {primary: 'ui-icon-circle-arrow-e'}})
+ .end().find('.cancel')
+ .button({icons: {primary: 'ui-icon-cancel'}})
+ .end().find('.delete')
+ .button({icons: {primary: 'ui-icon-trash'}})
+ .end().find('.progress').progressbar();
+ },
+
+ _destroy: function () {
+ this.element
+ .find('.fileupload-buttonbar')
+ .find('.fileinput-button').each(function () {
+ var input = $(this).find('input:file').detach();
+ $(this)
+ .button('destroy')
+ .append(input);
+ })
+ .end().find('.start')
+ .button('destroy')
+ .end().find('.cancel')
+ .button('destroy')
+ .end().find('.delete')
+ .button('destroy')
+ .end().find('.progress').progressbar('destroy');
+ this._super();
+ }
+
+ });
+
+}));
diff --git a/library/blueimp_upload/js/jquery.fileupload-process.js b/library/blueimp_upload/js/jquery.fileupload-process.js
new file mode 100644
index 000000000..8a6b929a6
--- /dev/null
+++ b/library/blueimp_upload/js/jquery.fileupload-process.js
@@ -0,0 +1,172 @@
+/*
+ * jQuery File Upload Processing Plugin 1.3.0
+ * https://github.com/blueimp/jQuery-File-Upload
+ *
+ * Copyright 2012, Sebastian Tschan
+ * https://blueimp.net
+ *
+ * Licensed under the MIT license:
+ * http://www.opensource.org/licenses/MIT
+ */
+
+/* jshint nomen:false */
+/* global define, window */
+
+(function (factory) {
+ 'use strict';
+ if (typeof define === 'function' && define.amd) {
+ // Register as an anonymous AMD module:
+ define([
+ 'jquery',
+ './jquery.fileupload'
+ ], factory);
+ } else {
+ // Browser globals:
+ factory(
+ window.jQuery
+ );
+ }
+}(function ($) {
+ 'use strict';
+
+ var originalAdd = $.blueimp.fileupload.prototype.options.add;
+
+ // The File Upload Processing plugin extends the fileupload widget
+ // with file processing functionality:
+ $.widget('blueimp.fileupload', $.blueimp.fileupload, {
+
+ options: {
+ // The list of processing actions:
+ processQueue: [
+ /*
+ {
+ action: 'log',
+ type: 'debug'
+ }
+ */
+ ],
+ add: function (e, data) {
+ var $this = $(this);
+ data.process(function () {
+ return $this.fileupload('process', data);
+ });
+ originalAdd.call(this, e, data);
+ }
+ },
+
+ processActions: {
+ /*
+ log: function (data, options) {
+ console[options.type](
+ 'Processing "' + data.files[data.index].name + '"'
+ );
+ }
+ */
+ },
+
+ _processFile: function (data, originalData) {
+ var that = this,
+ dfd = $.Deferred().resolveWith(that, [data]),
+ chain = dfd.promise();
+ this._trigger('process', null, data);
+ $.each(data.processQueue, function (i, settings) {
+ var func = function (data) {
+ if (originalData.errorThrown) {
+ return $.Deferred()
+ .rejectWith(that, [originalData]).promise();
+ }
+ return that.processActions[settings.action].call(
+ that,
+ data,
+ settings
+ );
+ };
+ chain = chain.pipe(func, settings.always && func);
+ });
+ chain
+ .done(function () {
+ that._trigger('processdone', null, data);
+ that._trigger('processalways', null, data);
+ })
+ .fail(function () {
+ that._trigger('processfail', null, data);
+ that._trigger('processalways', null, data);
+ });
+ return chain;
+ },
+
+ // Replaces the settings of each processQueue item that
+ // are strings starting with an "@", using the remaining
+ // substring as key for the option map,
+ // e.g. "@autoUpload" is replaced with options.autoUpload:
+ _transformProcessQueue: function (options) {
+ var processQueue = [];
+ $.each(options.processQueue, function () {
+ var settings = {},
+ action = this.action,
+ prefix = this.prefix === true ? action : this.prefix;
+ $.each(this, function (key, value) {
+ if ($.type(value) === 'string' &&
+ value.charAt(0) === '@') {
+ settings[key] = options[
+ value.slice(1) || (prefix ? prefix +
+ key.charAt(0).toUpperCase() + key.slice(1) : key)
+ ];
+ } else {
+ settings[key] = value;
+ }
+
+ });
+ processQueue.push(settings);
+ });
+ options.processQueue = processQueue;
+ },
+
+ // Returns the number of files currently in the processsing queue:
+ processing: function () {
+ return this._processing;
+ },
+
+ // Processes the files given as files property of the data parameter,
+ // returns a Promise object that allows to bind callbacks:
+ process: function (data) {
+ var that = this,
+ options = $.extend({}, this.options, data);
+ if (options.processQueue && options.processQueue.length) {
+ this._transformProcessQueue(options);
+ if (this._processing === 0) {
+ this._trigger('processstart');
+ }
+ $.each(data.files, function (index) {
+ var opts = index ? $.extend({}, options) : options,
+ func = function () {
+ if (data.errorThrown) {
+ return $.Deferred()
+ .rejectWith(that, [data]).promise();
+ }
+ return that._processFile(opts, data);
+ };
+ opts.index = index;
+ that._processing += 1;
+ that._processingQueue = that._processingQueue.pipe(func, func)
+ .always(function () {
+ that._processing -= 1;
+ if (that._processing === 0) {
+ that._trigger('processstop');
+ }
+ });
+ });
+ }
+ return this._processingQueue;
+ },
+
+ _create: function () {
+ this._super();
+ this._processing = 0;
+ this._processingQueue = $.Deferred().resolveWith(this)
+ .promise();
+ }
+
+ });
+
+}));
diff --git a/library/blueimp_upload/js/jquery.fileupload-ui.js b/library/blueimp_upload/js/jquery.fileupload-ui.js
new file mode 100644
index 000000000..62cf9aa38
--- /dev/null
+++ b/library/blueimp_upload/js/jquery.fileupload-ui.js
@@ -0,0 +1,704 @@
+/*
+ * jQuery File Upload User Interface Plugin 9.6.0
+ * https://github.com/blueimp/jQuery-File-Upload
+ *
+ * Copyright 2010, Sebastian Tschan
+ * https://blueimp.net
+ *
+ * Licensed under the MIT license:
+ * http://www.opensource.org/licenses/MIT
+ */
+
+/* jshint nomen:false */
+/* global define, window */
+
+(function (factory) {
+ 'use strict';
+ if (typeof define === 'function' && define.amd) {
+ // Register as an anonymous AMD module:
+ define([
+ 'jquery',
+ 'tmpl',
+ './jquery.fileupload-image',
+ './jquery.fileupload-audio',
+ './jquery.fileupload-video',
+ './jquery.fileupload-validate'
+ ], factory);
+ } else {
+ // Browser globals:
+ factory(
+ window.jQuery,
+ window.tmpl
+ );
+ }
+}(function ($, tmpl) {
+ 'use strict';
+
+ $.blueimp.fileupload.prototype._specialOptions.push(
+ 'filesContainer',
+ 'uploadTemplateId',
+ 'downloadTemplateId'
+ );
+
+ // The UI version extends the file upload widget
+ // and adds complete user interface interaction:
+ $.widget('blueimp.fileupload', $.blueimp.fileupload, {
+
+ options: {
+ // By default, files added to the widget are uploaded as soon
+ // as the user clicks on the start buttons. To enable automatic
+ // uploads, set the following option to true:
+ autoUpload: false,
+ // The ID of the upload template:
+ uploadTemplateId: 'template-upload',
+ // The ID of the download template:
+ downloadTemplateId: 'template-download',
+ // The container for the list of files. If undefined, it is set to
+ // an element with class "files" inside of the widget element:
+ filesContainer: undefined,
+ // By default, files are appended to the files container.
+ // Set the following option to true, to prepend files instead:
+ prependFiles: false,
+ // The expected data type of the upload response, sets the dataType
+ // option of the $.ajax upload requests:
+ dataType: 'json',
+
+ // Error and info messages:
+ messages: {
+ unknownError: 'Unknown error'
+ },
+
+ // Function returning the current number of files,
+ // used by the maxNumberOfFiles validation:
+ getNumberOfFiles: function () {
+ return this.filesContainer.children()
+ .not('.processing').length;
+ },
+
+ // Callback to retrieve the list of files from the server response:
+ getFilesFromResponse: function (data) {
+ if (data.result && $.isArray(data.result.files)) {
+ return data.result.files;
+ }
+ return [];
+ },
+
+ // The add callback is invoked as soon as files are added to the fileupload
+ // widget (via file input selection, drag & drop or add API call).
+ // See the basic file upload widget for more information:
+ add: function (e, data) {
+ if (e.isDefaultPrevented()) {
+ return false;
+ }
+ var $this = $(this),
+ that = $this.data('blueimp-fileupload') ||
+ $this.data('fileupload'),
+ options = that.options;
+ data.context = that._renderUpload(data.files)
+ .data('data', data)
+ .addClass('processing');
+ options.filesContainer[
+ options.prependFiles ? 'prepend' : 'append'
+ ](data.context);
+ that._forceReflow(data.context);
+ that._transition(data.context);
+ data.process(function () {
+ return $this.fileupload('process', data);
+ }).always(function () {
+ data.context.each(function (index) {
+ $(this).find('.size').text(
+ that._formatFileSize(data.files[index].size)
+ );
+ }).removeClass('processing');
+ that._renderPreviews(data);
+ }).done(function () {
+ data.context.find('.start').prop('disabled', false);
+ if ((that._trigger('added', e, data) !== false) &&
+ (options.autoUpload || data.autoUpload) &&
+ data.autoUpload !== false) {
+ data.submit();
+ }
+ }).fail(function () {
+ if (data.files.error) {
+ data.context.each(function (index) {
+ var error = data.files[index].error;
+ if (error) {
+ $(this).find('.error').text(error);
+ }
+ });
+ }
+ });
+ },
+ // Callback for the start of each file upload request:
+ send: function (e, data) {
+ if (e.isDefaultPrevented()) {
+ return false;
+ }
+ var that = $(this).data('blueimp-fileupload') ||
+ $(this).data('fileupload');
+ if (data.context && data.dataType &&
+ data.dataType.substr(0, 6) === 'iframe') {
+ // Iframe Transport does not support progress events.
+ // In lack of an indeterminate progress bar, we set
+ // the progress to 100%, showing the full animated bar:
+ data.context
+ .find('.progress').addClass(
+ !$.support.transition && 'progress-animated'
+ )
+ .attr('aria-valuenow', 100)
+ .children().first().css(
+ 'width',
+ '100%'
+ );
+ }
+ return that._trigger('sent', e, data);
+ },
+ // Callback for successful uploads:
+ done: function (e, data) {
+ if (e.isDefaultPrevented()) {
+ return false;
+ }
+ var that = $(this).data('blueimp-fileupload') ||
+ $(this).data('fileupload'),
+ getFilesFromResponse = data.getFilesFromResponse ||
+ that.options.getFilesFromResponse,
+ files = getFilesFromResponse(data),
+ template,
+ deferred;
+ if (data.context) {
+ data.context.each(function (index) {
+ var file = files[index] ||
+ {error: 'Empty file upload result'};
+ deferred = that._addFinishedDeferreds();
+ that._transition($(this)).done(
+ function () {
+ var node = $(this);
+ template = that._renderDownload([file])
+ .replaceAll(node);
+ that._forceReflow(template);
+ that._transition(template).done(
+ function () {
+ data.context = $(this);
+ that._trigger('completed', e, data);
+ that._trigger('finished', e, data);
+ deferred.resolve();
+ }
+ );
+ }
+ );
+ });
+ } else {
+ template = that._renderDownload(files)[
+ that.options.prependFiles ? 'prependTo' : 'appendTo'
+ ](that.options.filesContainer);
+ that._forceReflow(template);
+ deferred = that._addFinishedDeferreds();
+ that._transition(template).done(
+ function () {
+ data.context = $(this);
+ that._trigger('completed', e, data);
+ that._trigger('finished', e, data);
+ deferred.resolve();
+ }
+ );
+ }
+ },
+ // Callback for failed (abort or error) uploads:
+ fail: function (e, data) {
+ if (e.isDefaultPrevented()) {
+ return false;
+ }
+ var that = $(this).data('blueimp-fileupload') ||
+ $(this).data('fileupload'),
+ template,
+ deferred;
+ if (data.context) {
+ data.context.each(function (index) {
+ if (data.errorThrown !== 'abort') {
+ var file = data.files[index];
+ file.error = file.error || data.errorThrown ||
+ data.i18n('unknownError');
+ deferred = that._addFinishedDeferreds();
+ that._transition($(this)).done(
+ function () {
+ var node = $(this);
+ template = that._renderDownload([file])
+ .replaceAll(node);
+ that._forceReflow(template);
+ that._transition(template).done(
+ function () {
+ data.context = $(this);
+ that._trigger('failed', e, data);
+ that._trigger('finished', e, data);
+ deferred.resolve();
+ }
+ );
+ }
+ );
+ } else {
+ deferred = that._addFinishedDeferreds();
+ that._transition($(this)).done(
+ function () {
+ $(this).remove();
+ that._trigger('failed', e, data);
+ that._trigger('finished', e, data);
+ deferred.resolve();
+ }
+ );
+ }
+ });
+ } else if (data.errorThrown !== 'abort') {
+ data.context = that._renderUpload(data.files)[
+ that.options.prependFiles ? 'prependTo' : 'appendTo'
+ ](that.options.filesContainer)
+ .data('data', data);
+ that._forceReflow(data.context);
+ deferred = that._addFinishedDeferreds();
+ that._transition(data.context).done(
+ function () {
+ data.context = $(this);
+ that._trigger('failed', e, data);
+ that._trigger('finished', e, data);
+ deferred.resolve();
+ }
+ );
+ } else {
+ that._trigger('failed', e, data);
+ that._trigger('finished', e, data);
+ that._addFinishedDeferreds().resolve();
+ }
+ },
+ // Callback for upload progress events:
+ progress: function (e, data) {
+ if (e.isDefaultPrevented()) {
+ return false;
+ }
+ var progress = Math.floor(data.loaded / data.total * 100);
+ if (data.context) {
+ data.context.each(function () {
+ $(this).find('.progress')
+ .attr('aria-valuenow', progress)
+ .children().first().css(
+ 'width',
+ progress + '%'
+ );
+ });
+ }
+ },
+ // Callback for global upload progress events:
+ progressall: function (e, data) {
+ if (e.isDefaultPrevented()) {
+ return false;
+ }
+ var $this = $(this),
+ progress = Math.floor(data.loaded / data.total * 100),
+ globalProgressNode = $this.find('.fileupload-progress'),
+ extendedProgressNode = globalProgressNode
+ .find('.progress-extended');
+ if (extendedProgressNode.length) {
+ extendedProgressNode.html(
+ ($this.data('blueimp-fileupload') || $this.data('fileupload'))
+ ._renderExtendedProgress(data)
+ );
+ }
+ globalProgressNode
+ .find('.progress')
+ .attr('aria-valuenow', progress)
+ .children().first().css(
+ 'width',
+ progress + '%'
+ );
+ },
+ // Callback for uploads start, equivalent to the global ajaxStart event:
+ start: function (e) {
+ if (e.isDefaultPrevented()) {
+ return false;
+ }
+ var that = $(this).data('blueimp-fileupload') ||
+ $(this).data('fileupload');
+ that._resetFinishedDeferreds();
+ that._transition($(this).find('.fileupload-progress')).done(
+ function () {
+ that._trigger('started', e);
+ }
+ );
+ },
+ // Callback for uploads stop, equivalent to the global ajaxStop event:
+ stop: function (e) {
+ if (e.isDefaultPrevented()) {
+ return false;
+ }
+ var that = $(this).data('blueimp-fileupload') ||
+ $(this).data('fileupload'),
+ deferred = that._addFinishedDeferreds();
+ $.when.apply($, that._getFinishedDeferreds())
+ .done(function () {
+ that._trigger('stopped', e);
+ });
+ that._transition($(this).find('.fileupload-progress')).done(
+ function () {
+ $(this).find('.progress')
+ .attr('aria-valuenow', '0')
+ .children().first().css('width', '0%');
+ $(this).find('.progress-extended').html('&nbsp;');
+ deferred.resolve();
+ }
+ );
+ },
+ processstart: function (e) {
+ if (e.isDefaultPrevented()) {
+ return false;
+ }
+ $(this).addClass('fileupload-processing');
+ },
+ processstop: function (e) {
+ if (e.isDefaultPrevented()) {
+ return false;
+ }
+ $(this).removeClass('fileupload-processing');
+ },
+ // Callback for file deletion:
+ destroy: function (e, data) {
+ if (e.isDefaultPrevented()) {
+ return false;
+ }
+ var that = $(this).data('blueimp-fileupload') ||
+ $(this).data('fileupload'),
+ removeNode = function () {
+ that._transition(data.context).done(
+ function () {
+ $(this).remove();
+ that._trigger('destroyed', e, data);
+ }
+ );
+ };
+ if (data.url) {
+ data.dataType = data.dataType || that.options.dataType;
+ $.ajax(data).done(removeNode).fail(function () {
+ that._trigger('destroyfailed', e, data);
+ });
+ } else {
+ removeNode();
+ }
+ }
+ },
+
+ _resetFinishedDeferreds: function () {
+ this._finishedUploads = [];
+ },
+
+ _addFinishedDeferreds: function (deferred) {
+ if (!deferred) {
+ deferred = $.Deferred();
+ }
+ this._finishedUploads.push(deferred);
+ return deferred;
+ },
+
+ _getFinishedDeferreds: function () {
+ return this._finishedUploads;
+ },
+
+ // Link handler, that allows to download files
+ // by drag & drop of the links to the desktop:
+ _enableDragToDesktop: function () {
+ var link = $(this),
+ url = link.prop('href'),
+ name = link.prop('download'),
+ type = 'application/octet-stream';
+ link.bind('dragstart', function (e) {
+ try {
+ e.originalEvent.dataTransfer.setData(
+ 'DownloadURL',
+ [type, name, url].join(':')
+ );
+ } catch (ignore) {}
+ });
+ },
+
+ _formatFileSize: function (bytes) {
+ if (typeof bytes !== 'number') {
+ return '';
+ }
+ if (bytes >= 1000000000) {
+ return (bytes / 1000000000).toFixed(2) + ' GB';
+ }
+ if (bytes >= 1000000) {
+ return (bytes / 1000000).toFixed(2) + ' MB';
+ }
+ return (bytes / 1000).toFixed(2) + ' KB';
+ },
+
+ _formatBitrate: function (bits) {
+ if (typeof bits !== 'number') {
+ return '';
+ }
+ if (bits >= 1000000000) {
+ return (bits / 1000000000).toFixed(2) + ' Gbit/s';
+ }
+ if (bits >= 1000000) {
+ return (bits / 1000000).toFixed(2) + ' Mbit/s';
+ }
+ if (bits >= 1000) {
+ return (bits / 1000).toFixed(2) + ' kbit/s';
+ }
+ return bits.toFixed(2) + ' bit/s';
+ },
+
+ _formatTime: function (seconds) {
+ var date = new Date(seconds * 1000),
+ days = Math.floor(seconds / 86400);
+ days = days ? days + 'd ' : '';
+ return days +
+ ('0' + date.getUTCHours()).slice(-2) + ':' +
+ ('0' + date.getUTCMinutes()).slice(-2) + ':' +
+ ('0' + date.getUTCSeconds()).slice(-2);
+ },
+
+ _formatPercentage: function (floatValue) {
+ return (floatValue * 100).toFixed(2) + ' %';
+ },
+
+ _renderExtendedProgress: function (data) {
+ return this._formatBitrate(data.bitrate) + ' | ' +
+ this._formatTime(
+ (data.total - data.loaded) * 8 / data.bitrate
+ ) + ' | ' +
+ this._formatPercentage(
+ data.loaded / data.total
+ ) + ' | ' +
+ this._formatFileSize(data.loaded) + ' / ' +
+ this._formatFileSize(data.total);
+ },
+
+ _renderTemplate: function (func, files) {
+ if (!func) {
+ return $();
+ }
+ var result = func({
+ files: files,
+ formatFileSize: this._formatFileSize,
+ options: this.options
+ });
+ if (result instanceof $) {
+ return result;
+ }
+ return $(this.options.templatesContainer).html(result).children();
+ },
+
+ _renderPreviews: function (data) {
+ data.context.find('.preview').each(function (index, elm) {
+ $(elm).append(data.files[index].preview);
+ });
+ },
+
+ _renderUpload: function (files) {
+ return this._renderTemplate(
+ this.options.uploadTemplate,
+ files
+ );
+ },
+
+ _renderDownload: function (files) {
+ return this._renderTemplate(
+ this.options.downloadTemplate,
+ files
+ ).find('a[download]').each(this._enableDragToDesktop).end();
+ },
+
+ _startHandler: function (e) {
+ e.preventDefault();
+ var button = $(e.currentTarget),
+ template = button.closest('.template-upload'),
+ data = template.data('data');
+ button.prop('disabled', true);
+ if (data && data.submit) {
+ data.submit();
+ }
+ },
+
+ _cancelHandler: function (e) {
+ e.preventDefault();
+ var template = $(e.currentTarget)
+ .closest('.template-upload,.template-download'),
+ data = template.data('data') || {};
+ data.context = data.context || template;
+ if (data.abort) {
+ data.abort();
+ } else {
+ data.errorThrown = 'abort';
+ this._trigger('fail', e, data);
+ }
+ },
+
+ _deleteHandler: function (e) {
+ e.preventDefault();
+ var button = $(e.currentTarget);
+ this._trigger('destroy', e, $.extend({
+ context: button.closest('.template-download'),
+ type: 'DELETE'
+ }, button.data()));
+ },
+
+ _forceReflow: function (node) {
+ return $.support.transition && node.length &&
+ node[0].offsetWidth;
+ },
+
+ _transition: function (node) {
+ var dfd = $.Deferred();
+ if ($.support.transition && node.hasClass('fade') && node.is(':visible')) {
+ node.bind(
+ $.support.transition.end,
+ function (e) {
+ // Make sure we don't respond to other transitions events
+ // in the container element, e.g. from button elements:
+ if (e.target === node[0]) {
+ node.unbind($.support.transition.end);
+ dfd.resolveWith(node);
+ }
+ }
+ ).toggleClass('in');
+ } else {
+ node.toggleClass('in');
+ dfd.resolveWith(node);
+ }
+ return dfd;
+ },
+
+ _initButtonBarEventHandlers: function () {
+ var fileUploadButtonBar = this.element.find('.fileupload-buttonbar'),
+ filesList = this.options.filesContainer;
+ this._on(fileUploadButtonBar.find('.start'), {
+ click: function (e) {
+ e.preventDefault();
+ filesList.find('.start').click();
+ }
+ });
+ this._on(fileUploadButtonBar.find('.cancel'), {
+ click: function (e) {
+ e.preventDefault();
+ filesList.find('.cancel').click();
+ }
+ });
+ this._on(fileUploadButtonBar.find('.delete'), {
+ click: function (e) {
+ e.preventDefault();
+ filesList.find('.toggle:checked')
+ .closest('.template-download')
+ .find('.delete').click();
+ fileUploadButtonBar.find('.toggle')
+ .prop('checked', false);
+ }
+ });
+ this._on(fileUploadButtonBar.find('.toggle'), {
+ change: function (e) {
+ filesList.find('.toggle').prop(
+ 'checked',
+ $(e.currentTarget).is(':checked')
+ );
+ }
+ });
+ },
+
+ _destroyButtonBarEventHandlers: function () {
+ this._off(
+ this.element.find('.fileupload-buttonbar')
+ .find('.start, .cancel, .delete'),
+ 'click'
+ );
+ this._off(
+ this.element.find('.fileupload-buttonbar .toggle'),
+ 'change.'
+ );
+ },
+
+ _initEventHandlers: function () {
+ this._super();
+ this._on(this.options.filesContainer, {
+ 'click .start': this._startHandler,
+ 'click .cancel': this._cancelHandler,
+ 'click .delete': this._deleteHandler
+ });
+ this._initButtonBarEventHandlers();
+ },
+
+ _destroyEventHandlers: function () {
+ this._destroyButtonBarEventHandlers();
+ this._off(this.options.filesContainer, 'click');
+ this._super();
+ },
+
+ _enableFileInputButton: function () {
+ this.element.find('.fileinput-button input')
+ .prop('disabled', false)
+ .parent().removeClass('disabled');
+ },
+
+ _disableFileInputButton: function () {
+ this.element.find('.fileinput-button input')
+ .prop('disabled', true)
+ .parent().addClass('disabled');
+ },
+
+ _initTemplates: function () {
+ var options = this.options;
+ options.templatesContainer = this.document[0].createElement(
+ options.filesContainer.prop('nodeName')
+ );
+ if (tmpl) {
+ if (options.uploadTemplateId) {
+ options.uploadTemplate = tmpl(options.uploadTemplateId);
+ }
+ if (options.downloadTemplateId) {
+ options.downloadTemplate = tmpl(options.downloadTemplateId);
+ }
+ }
+ },
+
+ _initFilesContainer: function () {
+ var options = this.options;
+ if (options.filesContainer === undefined) {
+ options.filesContainer = this.element.find('.files');
+ } else if (!(options.filesContainer instanceof $)) {
+ options.filesContainer = $(options.filesContainer);
+ }
+ },
+
+ _initSpecialOptions: function () {
+ this._super();
+ this._initFilesContainer();
+ this._initTemplates();
+ },
+
+ _create: function () {
+ this._super();
+ this._resetFinishedDeferreds();
+ if (!$.support.fileInput) {
+ this._disableFileInputButton();
+ }
+ },
+
+ enable: function () {
+ var wasDisabled = false;
+ if (this.options.disabled) {
+ wasDisabled = true;
+ }
+ this._super();
+ if (wasDisabled) {
+ this.element.find('input, button').prop('disabled', false);
+ this._enableFileInputButton();
+ }
+ },
+
+ disable: function () {
+ if (!this.options.disabled) {
+ this.element.find('input, button').prop('disabled', true);
+ this._disableFileInputButton();
+ }
+ this._super();
+ }
+
+ });
+
+}));
diff --git a/library/blueimp_upload/js/jquery.fileupload-validate.js b/library/blueimp_upload/js/jquery.fileupload-validate.js
new file mode 100644
index 000000000..f93a18fa2
--- /dev/null
+++ b/library/blueimp_upload/js/jquery.fileupload-validate.js
@@ -0,0 +1,119 @@
+/*
+ * jQuery File Upload Validation Plugin 1.1.2
+ * https://github.com/blueimp/jQuery-File-Upload
+ *
+ * Copyright 2013, Sebastian Tschan
+ * https://blueimp.net
+ *
+ * Licensed under the MIT license:
+ * http://www.opensource.org/licenses/MIT
+ */
+
+/* global define, window */
+
+(function (factory) {
+ 'use strict';
+ if (typeof define === 'function' && define.amd) {
+ // Register as an anonymous AMD module:
+ define([
+ 'jquery',
+ './jquery.fileupload-process'
+ ], factory);
+ } else {
+ // Browser globals:
+ factory(
+ window.jQuery
+ );
+ }
+}(function ($) {
+ 'use strict';
+
+ // Append to the default processQueue:
+ $.blueimp.fileupload.prototype.options.processQueue.push(
+ {
+ action: 'validate',
+ // Always trigger this action,
+ // even if the previous action was rejected:
+ always: true,
+ // Options taken from the global options map:
+ acceptFileTypes: '@',
+ maxFileSize: '@',
+ minFileSize: '@',
+ maxNumberOfFiles: '@',
+ disabled: '@disableValidation'
+ }
+ );
+
+ // The File Upload Validation plugin extends the fileupload widget
+ // with file validation functionality:
+ $.widget('blueimp.fileupload', $.blueimp.fileupload, {
+
+ options: {
+ /*
+ // The regular expression for allowed file types, matches
+ // against either file type or file name:
+ acceptFileTypes: /(\.|\/)(gif|jpe?g|png)$/i,
+ // The maximum allowed file size in bytes:
+ maxFileSize: 10000000, // 10 MB
+ // The minimum allowed file size in bytes:
+ minFileSize: undefined, // No minimal file size
+ // The limit of files to be uploaded:
+ maxNumberOfFiles: 10,
+ */
+
+ // Function returning the current number of files,
+ // has to be overriden for maxNumberOfFiles validation:
+ getNumberOfFiles: $.noop,
+
+ // Error and info messages:
+ messages: {
+ maxNumberOfFiles: 'Maximum number of files exceeded',
+ acceptFileTypes: 'File type not allowed',
+ maxFileSize: 'File is too large',
+ minFileSize: 'File is too small'
+ }
+ },
+
+ processActions: {
+
+ validate: function (data, options) {
+ if (options.disabled) {
+ return data;
+ }
+ var dfd = $.Deferred(),
+ settings = this.options,
+ file = data.files[data.index],
+ fileSize;
+ if (options.minFileSize || options.maxFileSize) {
+ fileSize = file.size;
+ }
+ if ($.type(options.maxNumberOfFiles) === 'number' &&
+ (settings.getNumberOfFiles() || 0) + data.files.length >
+ options.maxNumberOfFiles) {
+ file.error = settings.i18n('maxNumberOfFiles');
+ } else if (options.acceptFileTypes &&
+ !(options.acceptFileTypes.test(file.type) ||
+ options.acceptFileTypes.test(file.name))) {
+ file.error = settings.i18n('acceptFileTypes');
+ } else if (fileSize > options.maxFileSize) {
+ file.error = settings.i18n('maxFileSize');
+ } else if ($.type(fileSize) === 'number' &&
+ fileSize < options.minFileSize) {
+ file.error = settings.i18n('minFileSize');
+ } else {
+ delete file.error;
+ }
+ if (file.error || data.files.error) {
+ data.files.error = true;
+ dfd.rejectWith(this, [data]);
+ } else {
+ dfd.resolveWith(this, [data]);
+ }
+ return dfd.promise();
+ }
+
+ }
+
+ });
+
+}));
diff --git a/library/blueimp_upload/js/jquery.fileupload-video.js b/library/blueimp_upload/js/jquery.fileupload-video.js
new file mode 100644
index 000000000..3764b27a2
--- /dev/null
+++ b/library/blueimp_upload/js/jquery.fileupload-video.js
@@ -0,0 +1,106 @@
+/*
+ * jQuery File Upload Video Preview Plugin 1.0.3
+ * https://github.com/blueimp/jQuery-File-Upload
+ *
+ * Copyright 2013, Sebastian Tschan
+ * https://blueimp.net
+ *
+ * Licensed under the MIT license:
+ * http://www.opensource.org/licenses/MIT
+ */
+
+/* jshint nomen:false */
+/* global define, window, document */
+
+(function (factory) {
+ 'use strict';
+ if (typeof define === 'function' && define.amd) {
+ // Register as an anonymous AMD module:
+ define([
+ 'jquery',
+ 'load-image',
+ './jquery.fileupload-process'
+ ], factory);
+ } else {
+ // Browser globals:
+ factory(
+ window.jQuery,
+ window.loadImage
+ );
+ }
+}(function ($, loadImage) {
+ 'use strict';
+
+ // Prepend to the default processQueue:
+ $.blueimp.fileupload.prototype.options.processQueue.unshift(
+ {
+ action: 'loadVideo',
+ // Use the action as prefix for the "@" options:
+ prefix: true,
+ fileTypes: '@',
+ maxFileSize: '@',
+ disabled: '@disableVideoPreview'
+ },
+ {
+ action: 'setVideo',
+ name: '@videoPreviewName',
+ disabled: '@disableVideoPreview'
+ }
+ );
+
+ // The File Upload Video Preview plugin extends the fileupload widget
+ // with video preview functionality:
+ $.widget('blueimp.fileupload', $.blueimp.fileupload, {
+
+ options: {
+ // The regular expression for the types of video files to load,
+ // matched against the file type:
+ loadVideoFileTypes: /^video\/.*$/
+ },
+
+ _videoElement: document.createElement('video'),
+
+ processActions: {
+
+ // Loads the video file given via data.files and data.index
+ // as video element if the browser supports playing it.
+ // Accepts the options fileTypes (regular expression)
+ // and maxFileSize (integer) to limit the files to load:
+ loadVideo: function (data, options) {
+ if (options.disabled) {
+ return data;
+ }
+ var file = data.files[data.index],
+ url,
+ video;
+ if (this._videoElement.canPlayType &&
+ this._videoElement.canPlayType(file.type) &&
+ ($.type(options.maxFileSize) !== 'number' ||
+ file.size <= options.maxFileSize) &&
+ (!options.fileTypes ||
+ options.fileTypes.test(file.type))) {
+ url = loadImage.createObjectURL(file);
+ if (url) {
+ video = this._videoElement.cloneNode(false);
+ video.src = url;
+ video.controls = true;
+ data.video = video;
+ return data;
+ }
+ }
+ return data;
+ },
+
+ // Sets the video element as a property of the file object:
+ setVideo: function (data, options) {
+ if (data.video && !options.disabled) {
+ data.files[data.index][options.name || 'preview'] = data.video;
+ }
+ return data;
+ }
+
+ }
+
+ });
+
+}));
diff --git a/library/blueimp_upload/js/jquery.fileupload.js b/library/blueimp_upload/js/jquery.fileupload.js
new file mode 100644
index 000000000..a4cfdc0ac
--- /dev/null
+++ b/library/blueimp_upload/js/jquery.fileupload.js
@@ -0,0 +1,1457 @@
+/*
+ * jQuery File Upload Plugin 5.42.0
+ * https://github.com/blueimp/jQuery-File-Upload
+ *
+ * Copyright 2010, Sebastian Tschan
+ * https://blueimp.net
+ *
+ * Licensed under the MIT license:
+ * http://www.opensource.org/licenses/MIT
+ */
+
+/* jshint nomen:false */
+/* global define, window, document, location, Blob, FormData */
+
+(function (factory) {
+ 'use strict';
+ if (typeof define === 'function' && define.amd) {
+ // Register as an anonymous AMD module:
+ define([
+ 'jquery',
+ 'jquery.ui.widget'
+ ], factory);
+ } else {
+ // Browser globals:
+ factory(window.jQuery);
+ }
+}(function ($) {
+ 'use strict';
+
+ // Detect file input support, based on
+ // http://viljamis.com/blog/2012/file-upload-support-on-mobile/
+ $.support.fileInput = !(new RegExp(
+ // Handle devices which give false positives for the feature detection:
+ '(Android (1\\.[0156]|2\\.[01]))' +
+ '|(Windows Phone (OS 7|8\\.0))|(XBLWP)|(ZuneWP)|(WPDesktop)' +
+ '|(w(eb)?OSBrowser)|(webOS)' +
+ '|(Kindle/(1\\.0|2\\.[05]|3\\.0))'
+ ).test(window.navigator.userAgent) ||
+ // Feature detection for all other devices:
+ $('<input type="file">').prop('disabled'));
+
+ // The FileReader API is not actually used, but works as feature detection,
+ // as some Safari versions (5?) support XHR file uploads via the FormData API,
+ // but not non-multipart XHR file uploads.
+ // window.XMLHttpRequestUpload is not available on IE10, so we check for
+ // window.ProgressEvent instead to detect XHR2 file upload capability:
+ $.support.xhrFileUpload = !!(window.ProgressEvent && window.FileReader);
+ $.support.xhrFormDataFileUpload = !!window.FormData;
+
+ // Detect support for Blob slicing (required for chunked uploads):
+ $.support.blobSlice = window.Blob && (Blob.prototype.slice ||
+ Blob.prototype.webkitSlice || Blob.prototype.mozSlice);
+
+ // Helper function to create drag handlers for dragover/dragenter/dragleave:
+ function getDragHandler(type) {
+ var isDragOver = type === 'dragover';
+ return function (e) {
+ e.dataTransfer = e.originalEvent && e.originalEvent.dataTransfer;
+ var dataTransfer = e.dataTransfer;
+ if (dataTransfer && $.inArray('Files', dataTransfer.types) !== -1 &&
+ this._trigger(
+ type,
+ $.Event(type, {delegatedEvent: e})
+ ) !== false) {
+ e.preventDefault();
+ if (isDragOver) {
+ dataTransfer.dropEffect = 'copy';
+ }
+ }
+ };
+ }
+
+ // The fileupload widget listens for change events on file input fields defined
+ // via fileInput setting and paste or drop events of the given dropZone.
+ // In addition to the default jQuery Widget methods, the fileupload widget
+ // exposes the "add" and "send" methods, to add or directly send files using
+ // the fileupload API.
+ // By default, files added via file input selection, paste, drag & drop or
+ // "add" method are uploaded immediately, but it is possible to override
+ // the "add" callback option to queue file uploads.
+ $.widget('blueimp.fileupload', {
+
+ options: {
+ // The drop target element(s), by the default the complete document.
+ // Set to null to disable drag & drop support:
+ dropZone: $(document),
+ // The paste target element(s), by the default undefined.
+ // Set to a DOM node or jQuery object to enable file pasting:
+ pasteZone: undefined,
+ // The file input field(s), that are listened to for change events.
+ // If undefined, it is set to the file input fields inside
+ // of the widget element on plugin initialization.
+ // Set to null to disable the change listener.
+ fileInput: undefined,
+ // By default, the file input field is replaced with a clone after
+ // each input field change event. This is required for iframe transport
+ // queues and allows change events to be fired for the same file
+ // selection, but can be disabled by setting the following option to false:
+ replaceFileInput: true,
+ // The parameter name for the file form data (the request argument name).
+ // If undefined or empty, the name property of the file input field is
+ // used, or "files[]" if the file input name property is also empty,
+ // can be a string or an array of strings:
+ paramName: undefined,
+ // By default, each file of a selection is uploaded using an individual
+ // request for XHR type uploads. Set to false to upload file
+ // selections in one request each:
+ singleFileUploads: true,
+ // To limit the number of files uploaded with one XHR request,
+ // set the following option to an integer greater than 0:
+ limitMultiFileUploads: undefined,
+ // The following option limits the number of files uploaded with one
+ // XHR request to keep the request size under or equal to the defined
+ // limit in bytes:
+ limitMultiFileUploadSize: undefined,
+ // Multipart file uploads add a number of bytes to each uploaded file,
+ // therefore the following option adds an overhead for each file used
+ // in the limitMultiFileUploadSize configuration:
+ limitMultiFileUploadSizeOverhead: 512,
+ // Set the following option to true to issue all file upload requests
+ // in a sequential order:
+ sequentialUploads: false,
+ // To limit the number of concurrent uploads,
+ // set the following option to an integer greater than 0:
+ limitConcurrentUploads: undefined,
+ // Set the following option to true to force iframe transport uploads:
+ forceIframeTransport: false,
+ // Set the following option to the location of a redirect url on the
+ // origin server, for cross-domain iframe transport uploads:
+ redirect: undefined,
+ // The parameter name for the redirect url, sent as part of the form
+ // data and set to 'redirect' if this option is empty:
+ redirectParamName: undefined,
+ // Set the following option to the location of a postMessage window,
+ // to enable postMessage transport uploads:
+ postMessage: undefined,
+ // By default, XHR file uploads are sent as multipart/form-data.
+ // The iframe transport is always using multipart/form-data.
+ // Set to false to enable non-multipart XHR uploads:
+ multipart: true,
+ // To upload large files in smaller chunks, set the following option
+ // to a preferred maximum chunk size. If set to 0, null or undefined,
+ // or the browser does not support the required Blob API, files will
+ // be uploaded as a whole.
+ maxChunkSize: undefined,
+ // When a non-multipart upload or a chunked multipart upload has been
+ // aborted, this option can be used to resume the upload by setting
+ // it to the size of the already uploaded bytes. This option is most
+ // useful when modifying the options object inside of the "add" or
+ // "send" callbacks, as the options are cloned for each file upload.
+ uploadedBytes: undefined,
+ // By default, failed (abort or error) file uploads are removed from the
+ // global progress calculation. Set the following option to false to
+ // prevent recalculating the global progress data:
+ recalculateProgress: true,
+ // Interval in milliseconds to calculate and trigger progress events:
+ progressInterval: 100,
+ // Interval in milliseconds to calculate progress bitrate:
+ bitrateInterval: 500,
+ // By default, uploads are started automatically when adding files:
+ autoUpload: true,
+
+ // Error and info messages:
+ messages: {
+ uploadedBytes: 'Uploaded bytes exceed file size'
+ },
+
+ // Translation function, gets the message key to be translated
+ // and an object with context specific data as arguments:
+ i18n: function (message, context) {
+ message = this.messages[message] || message.toString();
+ if (context) {
+ $.each(context, function (key, value) {
+ message = message.replace('{' + key + '}', value);
+ });
+ }
+ return message;
+ },
+
+ // Additional form data to be sent along with the file uploads can be set
+ // using this option, which accepts an array of objects with name and
+ // value properties, a function returning such an array, a FormData
+ // object (for XHR file uploads), or a simple object.
+ // The form of the first fileInput is given as parameter to the function:
+ formData: function (form) {
+ return form.serializeArray();
+ },
+
+ // The add callback is invoked as soon as files are added to the fileupload
+ // widget (via file input selection, drag & drop, paste or add API call).
+ // If the singleFileUploads option is enabled, this callback will be
+ // called once for each file in the selection for XHR file uploads, else
+ // once for each file selection.
+ //
+ // The upload starts when the submit method is invoked on the data parameter.
+ // The data object contains a files property holding the added files
+ // and allows you to override plugin options as well as define ajax settings.
+ //
+ // Listeners for this callback can also be bound the following way:
+ // .bind('fileuploadadd', func);
+ //
+ // data.submit() returns a Promise object and allows to attach additional
+ // handlers using jQuery's Deferred callbacks:
+ // data.submit().done(func).fail(func).always(func);
+ add: function (e, data) {
+ if (e.isDefaultPrevented()) {
+ return false;
+ }
+ if (data.autoUpload || (data.autoUpload !== false &&
+ $(this).fileupload('option', 'autoUpload'))) {
+ data.process().done(function () {
+ data.submit();
+ });
+ }
+ },
+
+ // Other callbacks:
+
+ // Callback for the submit event of each file upload:
+ // submit: function (e, data) {}, // .bind('fileuploadsubmit', func);
+
+ // Callback for the start of each file upload request:
+ // send: function (e, data) {}, // .bind('fileuploadsend', func);
+
+ // Callback for successful uploads:
+ // done: function (e, data) {}, // .bind('fileuploaddone', func);
+
+ // Callback for failed (abort or error) uploads:
+ // fail: function (e, data) {}, // .bind('fileuploadfail', func);
+
+ // Callback for completed (success, abort or error) requests:
+ // always: function (e, data) {}, // .bind('fileuploadalways', func);
+
+ // Callback for upload progress events:
+ // progress: function (e, data) {}, // .bind('fileuploadprogress', func);
+
+ // Callback for global upload progress events:
+ // progressall: function (e, data) {}, // .bind('fileuploadprogressall', func);
+
+ // Callback for uploads start, equivalent to the global ajaxStart event:
+ // start: function (e) {}, // .bind('fileuploadstart', func);
+
+ // Callback for uploads stop, equivalent to the global ajaxStop event:
+ // stop: function (e) {}, // .bind('fileuploadstop', func);
+
+ // Callback for change events of the fileInput(s):
+ // change: function (e, data) {}, // .bind('fileuploadchange', func);
+
+ // Callback for paste events to the pasteZone(s):
+ // paste: function (e, data) {}, // .bind('fileuploadpaste', func);
+
+ // Callback for drop events of the dropZone(s):
+ // drop: function (e, data) {}, // .bind('fileuploaddrop', func);
+
+ // Callback for dragover events of the dropZone(s):
+ // dragover: function (e) {}, // .bind('fileuploaddragover', func);
+
+ // Callback for the start of each chunk upload request:
+ // chunksend: function (e, data) {}, // .bind('fileuploadchunksend', func);
+
+ // Callback for successful chunk uploads:
+ // chunkdone: function (e, data) {}, // .bind('fileuploadchunkdone', func);
+
+ // Callback for failed (abort or error) chunk uploads:
+ // chunkfail: function (e, data) {}, // .bind('fileuploadchunkfail', func);
+
+ // Callback for completed (success, abort or error) chunk upload requests:
+ // chunkalways: function (e, data) {}, // .bind('fileuploadchunkalways', func);
+
+ // The plugin options are used as settings object for the ajax calls.
+ // The following are jQuery ajax settings required for the file uploads:
+ processData: false,
+ contentType: false,
+ cache: false
+ },
+
+ // A list of options that require reinitializing event listeners and/or
+ // special initialization code:
+ _specialOptions: [
+ 'fileInput',
+ 'dropZone',
+ 'pasteZone',
+ 'multipart',
+ 'forceIframeTransport'
+ ],
+
+ _blobSlice: $.support.blobSlice && function () {
+ var slice = this.slice || this.webkitSlice || this.mozSlice;
+ return slice.apply(this, arguments);
+ },
+
+ _BitrateTimer: function () {
+ this.timestamp = ((Date.now) ? Date.now() : (new Date()).getTime());
+ this.loaded = 0;
+ this.bitrate = 0;
+ this.getBitrate = function (now, loaded, interval) {
+ var timeDiff = now - this.timestamp;
+ if (!this.bitrate || !interval || timeDiff > interval) {
+ this.bitrate = (loaded - this.loaded) * (1000 / timeDiff) * 8;
+ this.loaded = loaded;
+ this.timestamp = now;
+ }
+ return this.bitrate;
+ };
+ },
+
+ _isXHRUpload: function (options) {
+ return !options.forceIframeTransport &&
+ ((!options.multipart && $.support.xhrFileUpload) ||
+ $.support.xhrFormDataFileUpload);
+ },
+
+ _getFormData: function (options) {
+ var formData;
+ if ($.type(options.formData) === 'function') {
+ return options.formData(options.form);
+ }
+ if ($.isArray(options.formData)) {
+ return options.formData;
+ }
+ if ($.type(options.formData) === 'object') {
+ formData = [];
+ $.each(options.formData, function (name, value) {
+ formData.push({name: name, value: value});
+ });
+ return formData;
+ }
+ return [];
+ },
+
+ _getTotal: function (files) {
+ var total = 0;
+ $.each(files, function (index, file) {
+ total += file.size || 1;
+ });
+ return total;
+ },
+
+ _initProgressObject: function (obj) {
+ var progress = {
+ loaded: 0,
+ total: 0,
+ bitrate: 0
+ };
+ if (obj._progress) {
+ $.extend(obj._progress, progress);
+ } else {
+ obj._progress = progress;
+ }
+ },
+
+ _initResponseObject: function (obj) {
+ var prop;
+ if (obj._response) {
+ for (prop in obj._response) {
+ if (obj._response.hasOwnProperty(prop)) {
+ delete obj._response[prop];
+ }
+ }
+ } else {
+ obj._response = {};
+ }
+ },
+
+ _onProgress: function (e, data) {
+ if (e.lengthComputable) {
+ var now = ((Date.now) ? Date.now() : (new Date()).getTime()),
+ loaded;
+ if (data._time && data.progressInterval &&
+ (now - data._time < data.progressInterval) &&
+ e.loaded !== e.total) {
+ return;
+ }
+ data._time = now;
+ loaded = Math.floor(
+ e.loaded / e.total * (data.chunkSize || data._progress.total)
+ ) + (data.uploadedBytes || 0);
+ // Add the difference from the previously loaded state
+ // to the global loaded counter:
+ this._progress.loaded += (loaded - data._progress.loaded);
+ this._progress.bitrate = this._bitrateTimer.getBitrate(
+ now,
+ this._progress.loaded,
+ data.bitrateInterval
+ );
+ data._progress.loaded = data.loaded = loaded;
+ data._progress.bitrate = data.bitrate = data._bitrateTimer.getBitrate(
+ now,
+ loaded,
+ data.bitrateInterval
+ );
+ // Trigger a custom progress event with a total data property set
+ // to the file size(s) of the current upload and a loaded data
+ // property calculated accordingly:
+ this._trigger(
+ 'progress',
+ $.Event('progress', {delegatedEvent: e}),
+ data
+ );
+ // Trigger a global progress event for all current file uploads,
+ // including ajax calls queued for sequential file uploads:
+ this._trigger(
+ 'progressall',
+ $.Event('progressall', {delegatedEvent: e}),
+ this._progress
+ );
+ }
+ },
+
+ _initProgressListener: function (options) {
+ var that = this,
+ xhr = options.xhr ? options.xhr() : $.ajaxSettings.xhr();
+ // Accesss to the native XHR object is required to add event listeners
+ // for the upload progress event:
+ if (xhr.upload) {
+ $(xhr.upload).bind('progress', function (e) {
+ var oe = e.originalEvent;
+ // Make sure the progress event properties get copied over:
+ e.lengthComputable = oe.lengthComputable;
+ e.loaded = oe.loaded;
+ e.total = oe.total;
+ that._onProgress(e, options);
+ });
+ options.xhr = function () {
+ return xhr;
+ };
+ }
+ },
+
+ _isInstanceOf: function (type, obj) {
+ // Cross-frame instanceof check
+ return Object.prototype.toString.call(obj) === '[object ' + type + ']';
+ },
+
+ _initXHRData: function (options) {
+ var that = this,
+ formData,
+ file = options.files[0],
+ // Ignore non-multipart setting if not supported:
+ multipart = options.multipart || !$.support.xhrFileUpload,
+ paramName = $.type(options.paramName) === 'array' ?
+ options.paramName[0] : options.paramName;
+ options.headers = $.extend({}, options.headers);
+ if (options.contentRange) {
+ options.headers['Content-Range'] = options.contentRange;
+ }
+ if (!multipart || options.blob || !this._isInstanceOf('File', file)) {
+ options.headers['Content-Disposition'] = 'attachment; filename="' +
+ encodeURI(file.name) + '"';
+ }
+ if (!multipart) {
+ options.contentType = file.type || 'application/octet-stream';
+ options.data = options.blob || file;
+ } else if ($.support.xhrFormDataFileUpload) {
+ if (options.postMessage) {
+ // window.postMessage does not allow sending FormData
+ // objects, so we just add the File/Blob objects to
+ // the formData array and let the postMessage window
+ // create the FormData object out of this array:
+ formData = this._getFormData(options);
+ if (options.blob) {
+ formData.push({
+ name: paramName,
+ value: options.blob
+ });
+ } else {
+ $.each(options.files, function (index, file) {
+ formData.push({
+ name: ($.type(options.paramName) === 'array' &&
+ options.paramName[index]) || paramName,
+ value: file
+ });
+ });
+ }
+ } else {
+ if (that._isInstanceOf('FormData', options.formData)) {
+ formData = options.formData;
+ } else {
+ formData = new FormData();
+ $.each(this._getFormData(options), function (index, field) {
+ formData.append(field.name, field.value);
+ });
+ }
+ if (options.blob) {
+ formData.append(paramName, options.blob, file.name);
+ } else {
+ $.each(options.files, function (index, file) {
+ // This check allows the tests to run with
+ // dummy objects:
+ if (that._isInstanceOf('File', file) ||
+ that._isInstanceOf('Blob', file)) {
+ formData.append(
+ ($.type(options.paramName) === 'array' &&
+ options.paramName[index]) || paramName,
+ file,
+ file.uploadName || file.name
+ );
+ }
+ });
+ }
+ }
+ options.data = formData;
+ }
+ // Blob reference is not needed anymore, free memory:
+ options.blob = null;
+ },
+
+ _initIframeSettings: function (options) {
+ var targetHost = $('<a></a>').prop('href', options.url).prop('host');
+ // Setting the dataType to iframe enables the iframe transport:
+ options.dataType = 'iframe ' + (options.dataType || '');
+ // The iframe transport accepts a serialized array as form data:
+ options.formData = this._getFormData(options);
+ // Add redirect url to form data on cross-domain uploads:
+ if (options.redirect && targetHost && targetHost !== location.host) {
+ options.formData.push({
+ name: options.redirectParamName || 'redirect',
+ value: options.redirect
+ });
+ }
+ },
+
+ _initDataSettings: function (options) {
+ if (this._isXHRUpload(options)) {
+ if (!this._chunkedUpload(options, true)) {
+ if (!options.data) {
+ this._initXHRData(options);
+ }
+ this._initProgressListener(options);
+ }
+ if (options.postMessage) {
+ // Setting the dataType to postmessage enables the
+ // postMessage transport:
+ options.dataType = 'postmessage ' + (options.dataType || '');
+ }
+ } else {
+ this._initIframeSettings(options);
+ }
+ },
+
+ _getParamName: function (options) {
+ var fileInput = $(options.fileInput),
+ paramName = options.paramName;
+ if (!paramName) {
+ paramName = [];
+ fileInput.each(function () {
+ var input = $(this),
+ name = input.prop('name') || 'files[]',
+ i = (input.prop('files') || [1]).length;
+ while (i) {
+ paramName.push(name);
+ i -= 1;
+ }
+ });
+ if (!paramName.length) {
+ paramName = [fileInput.prop('name') || 'files[]'];
+ }
+ } else if (!$.isArray(paramName)) {
+ paramName = [paramName];
+ }
+ return paramName;
+ },
+
+ _initFormSettings: function (options) {
+ // Retrieve missing options from the input field and the
+ // associated form, if available:
+ if (!options.form || !options.form.length) {
+ options.form = $(options.fileInput.prop('form'));
+ // If the given file input doesn't have an associated form,
+ // use the default widget file input's form:
+ if (!options.form.length) {
+ options.form = $(this.options.fileInput.prop('form'));
+ }
+ }
+ options.paramName = this._getParamName(options);
+ if (!options.url) {
+ options.url = options.form.prop('action') || location.href;
+ }
+ // The HTTP request method must be "POST" or "PUT":
+ options.type = (options.type ||
+ ($.type(options.form.prop('method')) === 'string' &&
+ options.form.prop('method')) || ''
+ ).toUpperCase();
+ if (options.type !== 'POST' && options.type !== 'PUT' &&
+ options.type !== 'PATCH') {
+ options.type = 'POST';
+ }
+ if (!options.formAcceptCharset) {
+ options.formAcceptCharset = options.form.attr('accept-charset');
+ }
+ },
+
+ _getAJAXSettings: function (data) {
+ var options = $.extend({}, this.options, data);
+ this._initFormSettings(options);
+ this._initDataSettings(options);
+ return options;
+ },
+
+ // jQuery 1.6 doesn't provide .state(),
+ // while jQuery 1.8+ removed .isRejected() and .isResolved():
+ _getDeferredState: function (deferred) {
+ if (deferred.state) {
+ return deferred.state();
+ }
+ if (deferred.isResolved()) {
+ return 'resolved';
+ }
+ if (deferred.isRejected()) {
+ return 'rejected';
+ }
+ return 'pending';
+ },
+
+ // Maps jqXHR callbacks to the equivalent
+ // methods of the given Promise object:
+ _enhancePromise: function (promise) {
+ promise.success = promise.done;
+ promise.error = promise.fail;
+ promise.complete = promise.always;
+ return promise;
+ },
+
+ // Creates and returns a Promise object enhanced with
+ // the jqXHR methods abort, success, error and complete:
+ _getXHRPromise: function (resolveOrReject, context, args) {
+ var dfd = $.Deferred(),
+ promise = dfd.promise();
+ context = context || this.options.context || promise;
+ if (resolveOrReject === true) {
+ dfd.resolveWith(context, args);
+ } else if (resolveOrReject === false) {
+ dfd.rejectWith(context, args);
+ }
+ promise.abort = dfd.promise;
+ return this._enhancePromise(promise);
+ },
+
+ // Adds convenience methods to the data callback argument:
+ _addConvenienceMethods: function (e, data) {
+ var that = this,
+ getPromise = function (args) {
+ return $.Deferred().resolveWith(that, args).promise();
+ };
+ data.process = function (resolveFunc, rejectFunc) {
+ if (resolveFunc || rejectFunc) {
+ data._processQueue = this._processQueue =
+ (this._processQueue || getPromise([this])).pipe(
+ function () {
+ if (data.errorThrown) {
+ return $.Deferred()
+ .rejectWith(that, [data]).promise();
+ }
+ return getPromise(arguments);
+ }
+ ).pipe(resolveFunc, rejectFunc);
+ }
+ return this._processQueue || getPromise([this]);
+ };
+ data.submit = function () {
+ if (this.state() !== 'pending') {
+ data.jqXHR = this.jqXHR =
+ (that._trigger(
+ 'submit',
+ $.Event('submit', {delegatedEvent: e}),
+ this
+ ) !== false) && that._onSend(e, this);
+ }
+ return this.jqXHR || that._getXHRPromise();
+ };
+ data.abort = function () {
+ if (this.jqXHR) {
+ return this.jqXHR.abort();
+ }
+ this.errorThrown = 'abort';
+ that._trigger('fail', null, this);
+ return that._getXHRPromise(false);
+ };
+ data.state = function () {
+ if (this.jqXHR) {
+ return that._getDeferredState(this.jqXHR);
+ }
+ if (this._processQueue) {
+ return that._getDeferredState(this._processQueue);
+ }
+ };
+ data.processing = function () {
+ return !this.jqXHR && this._processQueue && that
+ ._getDeferredState(this._processQueue) === 'pending';
+ };
+ data.progress = function () {
+ return this._progress;
+ };
+ data.response = function () {
+ return this._response;
+ };
+ },
+
+ // Parses the Range header from the server response
+ // and returns the uploaded bytes:
+ _getUploadedBytes: function (jqXHR) {
+ var range = jqXHR.getResponseHeader('Range'),
+ parts = range && range.split('-'),
+ upperBytesPos = parts && parts.length > 1 &&
+ parseInt(parts[1], 10);
+ return upperBytesPos && upperBytesPos + 1;
+ },
+
+ // Uploads a file in multiple, sequential requests
+ // by splitting the file up in multiple blob chunks.
+ // If the second parameter is true, only tests if the file
+ // should be uploaded in chunks, but does not invoke any
+ // upload requests:
+ _chunkedUpload: function (options, testOnly) {
+ options.uploadedBytes = options.uploadedBytes || 0;
+ var that = this,
+ file = options.files[0],
+ fs = file.size,
+ ub = options.uploadedBytes,
+ mcs = options.maxChunkSize || fs,
+ slice = this._blobSlice,
+ dfd = $.Deferred(),
+ promise = dfd.promise(),
+ jqXHR,
+ upload;
+ if (!(this._isXHRUpload(options) && slice && (ub || mcs < fs)) ||
+ options.data) {
+ return false;
+ }
+ if (testOnly) {
+ return true;
+ }
+ if (ub >= fs) {
+ file.error = options.i18n('uploadedBytes');
+ return this._getXHRPromise(
+ false,
+ options.context,
+ [null, 'error', file.error]
+ );
+ }
+ // The chunk upload method:
+ upload = function () {
+ // Clone the options object for each chunk upload:
+ var o = $.extend({}, options),
+ currentLoaded = o._progress.loaded;
+ o.blob = slice.call(
+ file,
+ ub,
+ ub + mcs,
+ file.type
+ );
+ // Store the current chunk size, as the blob itself
+ // will be dereferenced after data processing:
+ o.chunkSize = o.blob.size;
+ // Expose the chunk bytes position range:
+ o.contentRange = 'bytes ' + ub + '-' +
+ (ub + o.chunkSize - 1) + '/' + fs;
+ // Process the upload data (the blob and potential form data):
+ that._initXHRData(o);
+ // Add progress listeners for this chunk upload:
+ that._initProgressListener(o);
+ jqXHR = ((that._trigger('chunksend', null, o) !== false && $.ajax(o)) ||
+ that._getXHRPromise(false, o.context))
+ .done(function (result, textStatus, jqXHR) {
+ ub = that._getUploadedBytes(jqXHR) ||
+ (ub + o.chunkSize);
+ // Create a progress event if no final progress event
+ // with loaded equaling total has been triggered
+ // for this chunk:
+ if (currentLoaded + o.chunkSize - o._progress.loaded) {
+ that._onProgress($.Event('progress', {
+ lengthComputable: true,
+ loaded: ub - o.uploadedBytes,
+ total: ub - o.uploadedBytes
+ }), o);
+ }
+ options.uploadedBytes = o.uploadedBytes = ub;
+ o.result = result;
+ o.textStatus = textStatus;
+ o.jqXHR = jqXHR;
+ that._trigger('chunkdone', null, o);
+ that._trigger('chunkalways', null, o);
+ if (ub < fs) {
+ // File upload not yet complete,
+ // continue with the next chunk:
+ upload();
+ } else {
+ dfd.resolveWith(
+ o.context,
+ [result, textStatus, jqXHR]
+ );
+ }
+ })
+ .fail(function (jqXHR, textStatus, errorThrown) {
+ o.jqXHR = jqXHR;
+ o.textStatus = textStatus;
+ o.errorThrown = errorThrown;
+ that._trigger('chunkfail', null, o);
+ that._trigger('chunkalways', null, o);
+ dfd.rejectWith(
+ o.context,
+ [jqXHR, textStatus, errorThrown]
+ );
+ });
+ };
+ this._enhancePromise(promise);
+ promise.abort = function () {
+ return jqXHR.abort();
+ };
+ upload();
+ return promise;
+ },
+
+ _beforeSend: function (e, data) {
+ if (this._active === 0) {
+ // the start callback is triggered when an upload starts
+ // and no other uploads are currently running,
+ // equivalent to the global ajaxStart event:
+ this._trigger('start');
+ // Set timer for global bitrate progress calculation:
+ this._bitrateTimer = new this._BitrateTimer();
+ // Reset the global progress values:
+ this._progress.loaded = this._progress.total = 0;
+ this._progress.bitrate = 0;
+ }
+ // Make sure the container objects for the .response() and
+ // .progress() methods on the data object are available
+ // and reset to their initial state:
+ this._initResponseObject(data);
+ this._initProgressObject(data);
+ data._progress.loaded = data.loaded = data.uploadedBytes || 0;
+ data._progress.total = data.total = this._getTotal(data.files) || 1;
+ data._progress.bitrate = data.bitrate = 0;
+ this._active += 1;
+ // Initialize the global progress values:
+ this._progress.loaded += data.loaded;
+ this._progress.total += data.total;
+ },
+
+ _onDone: function (result, textStatus, jqXHR, options) {
+ var total = options._progress.total,
+ response = options._response;
+ if (options._progress.loaded < total) {
+ // Create a progress event if no final progress event
+ // with loaded equaling total has been triggered:
+ this._onProgress($.Event('progress', {
+ lengthComputable: true,
+ loaded: total,
+ total: total
+ }), options);
+ }
+ response.result = options.result = result;
+ response.textStatus = options.textStatus = textStatus;
+ response.jqXHR = options.jqXHR = jqXHR;
+ this._trigger('done', null, options);
+ },
+
+ _onFail: function (jqXHR, textStatus, errorThrown, options) {
+ var response = options._response;
+ if (options.recalculateProgress) {
+ // Remove the failed (error or abort) file upload from
+ // the global progress calculation:
+ this._progress.loaded -= options._progress.loaded;
+ this._progress.total -= options._progress.total;
+ }
+ response.jqXHR = options.jqXHR = jqXHR;
+ response.textStatus = options.textStatus = textStatus;
+ response.errorThrown = options.errorThrown = errorThrown;
+ this._trigger('fail', null, options);
+ },
+
+ _onAlways: function (jqXHRorResult, textStatus, jqXHRorError, options) {
+ // jqXHRorResult, textStatus and jqXHRorError are added to the
+ // options object via done and fail callbacks
+ this._trigger('always', null, options);
+ },
+
+ _onSend: function (e, data) {
+ if (!data.submit) {
+ this._addConvenienceMethods(e, data);
+ }
+ var that = this,
+ jqXHR,
+ aborted,
+ slot,
+ pipe,
+ options = that._getAJAXSettings(data),
+ send = function () {
+ that._sending += 1;
+ // Set timer for bitrate progress calculation:
+ options._bitrateTimer = new that._BitrateTimer();
+ jqXHR = jqXHR || (
+ ((aborted || that._trigger(
+ 'send',
+ $.Event('send', {delegatedEvent: e}),
+ options
+ ) === false) &&
+ that._getXHRPromise(false, options.context, aborted)) ||
+ that._chunkedUpload(options) || $.ajax(options)
+ ).done(function (result, textStatus, jqXHR) {
+ that._onDone(result, textStatus, jqXHR, options);
+ }).fail(function (jqXHR, textStatus, errorThrown) {
+ that._onFail(jqXHR, textStatus, errorThrown, options);
+ }).always(function (jqXHRorResult, textStatus, jqXHRorError) {
+ that._onAlways(
+ jqXHRorResult,
+ textStatus,
+ jqXHRorError,
+ options
+ );
+ that._sending -= 1;
+ that._active -= 1;
+ if (options.limitConcurrentUploads &&
+ options.limitConcurrentUploads > that._sending) {
+ // Start the next queued upload,
+ // that has not been aborted:
+ var nextSlot = that._slots.shift();
+ while (nextSlot) {
+ if (that._getDeferredState(nextSlot) === 'pending') {
+ nextSlot.resolve();
+ break;
+ }
+ nextSlot = that._slots.shift();
+ }
+ }
+ if (that._active === 0) {
+ // The stop callback is triggered when all uploads have
+ // been completed, equivalent to the global ajaxStop event:
+ that._trigger('stop');
+ }
+ });
+ return jqXHR;
+ };
+ this._beforeSend(e, options);
+ if (this.options.sequentialUploads ||
+ (this.options.limitConcurrentUploads &&
+ this.options.limitConcurrentUploads <= this._sending)) {
+ if (this.options.limitConcurrentUploads > 1) {
+ slot = $.Deferred();
+ this._slots.push(slot);
+ pipe = slot.pipe(send);
+ } else {
+ this._sequence = this._sequence.pipe(send, send);
+ pipe = this._sequence;
+ }
+ // Return the piped Promise object, enhanced with an abort method,
+ // which is delegated to the jqXHR object of the current upload,
+ // and jqXHR callbacks mapped to the equivalent Promise methods:
+ pipe.abort = function () {
+ aborted = [undefined, 'abort', 'abort'];
+ if (!jqXHR) {
+ if (slot) {
+ slot.rejectWith(options.context, aborted);
+ }
+ return send();
+ }
+ return jqXHR.abort();
+ };
+ return this._enhancePromise(pipe);
+ }
+ return send();
+ },
+
+ _onAdd: function (e, data) {
+ var that = this,
+ result = true,
+ options = $.extend({}, this.options, data),
+ files = data.files,
+ filesLength = files.length,
+ limit = options.limitMultiFileUploads,
+ limitSize = options.limitMultiFileUploadSize,
+ overhead = options.limitMultiFileUploadSizeOverhead,
+ batchSize = 0,
+ paramName = this._getParamName(options),
+ paramNameSet,
+ paramNameSlice,
+ fileSet,
+ i,
+ j = 0;
+ if (limitSize && (!filesLength || files[0].size === undefined)) {
+ limitSize = undefined;
+ }
+ if (!(options.singleFileUploads || limit || limitSize) ||
+ !this._isXHRUpload(options)) {
+ fileSet = [files];
+ paramNameSet = [paramName];
+ } else if (!(options.singleFileUploads || limitSize) && limit) {
+ fileSet = [];
+ paramNameSet = [];
+ for (i = 0; i < filesLength; i += limit) {
+ fileSet.push(files.slice(i, i + limit));
+ paramNameSlice = paramName.slice(i, i + limit);
+ if (!paramNameSlice.length) {
+ paramNameSlice = paramName;
+ }
+ paramNameSet.push(paramNameSlice);
+ }
+ } else if (!options.singleFileUploads && limitSize) {
+ fileSet = [];
+ paramNameSet = [];
+ for (i = 0; i < filesLength; i = i + 1) {
+ batchSize += files[i].size + overhead;
+ if (i + 1 === filesLength ||
+ ((batchSize + files[i + 1].size + overhead) > limitSize) ||
+ (limit && i + 1 - j >= limit)) {
+ fileSet.push(files.slice(j, i + 1));
+ paramNameSlice = paramName.slice(j, i + 1);
+ if (!paramNameSlice.length) {
+ paramNameSlice = paramName;
+ }
+ paramNameSet.push(paramNameSlice);
+ j = i + 1;
+ batchSize = 0;
+ }
+ }
+ } else {
+ paramNameSet = paramName;
+ }
+ data.originalFiles = files;
+ $.each(fileSet || files, function (index, element) {
+ var newData = $.extend({}, data);
+ newData.files = fileSet ? element : [element];
+ newData.paramName = paramNameSet[index];
+ that._initResponseObject(newData);
+ that._initProgressObject(newData);
+ that._addConvenienceMethods(e, newData);
+ result = that._trigger(
+ 'add',
+ $.Event('add', {delegatedEvent: e}),
+ newData
+ );
+ return result;
+ });
+ return result;
+ },
+
+ _replaceFileInput: function (data) {
+ var input = data.fileInput,
+ inputClone = input.clone(true);
+ // Add a reference for the new cloned file input to the data argument:
+ data.fileInputClone = inputClone;
+ $('<form></form>').append(inputClone)[0].reset();
+ // Detaching allows to insert the fileInput on another form
+ // without loosing the file input value:
+ input.after(inputClone).detach();
+ // Avoid memory leaks with the detached file input:
+ $.cleanData(input.unbind('remove'));
+ // Replace the original file input element in the fileInput
+ // elements set with the clone, which has been copied including
+ // event handlers:
+ this.options.fileInput = this.options.fileInput.map(function (i, el) {
+ if (el === input[0]) {
+ return inputClone[0];
+ }
+ return el;
+ });
+ // If the widget has been initialized on the file input itself,
+ // override this.element with the file input clone:
+ if (input[0] === this.element[0]) {
+ this.element = inputClone;
+ }
+ },
+
+ _handleFileTreeEntry: function (entry, path) {
+ var that = this,
+ dfd = $.Deferred(),
+ errorHandler = function (e) {
+ if (e && !e.entry) {
+ e.entry = entry;
+ }
+ // Since $.when returns immediately if one
+ // Deferred is rejected, we use resolve instead.
+ // This allows valid files and invalid items
+ // to be returned together in one set:
+ dfd.resolve([e]);
+ },
+ successHandler = function (entries) {
+ that._handleFileTreeEntries(
+ entries,
+ path + entry.name + '/'
+ ).done(function (files) {
+ dfd.resolve(files);
+ }).fail(errorHandler);
+ },
+ readEntries = function () {
+ dirReader.readEntries(function (results) {
+ if (!results.length) {
+ successHandler(entries);
+ } else {
+ entries = entries.concat(results);
+ readEntries();
+ }
+ }, errorHandler);
+ },
+ dirReader, entries = [];
+ path = path || '';
+ if (entry.isFile) {
+ if (entry._file) {
+ // Workaround for Chrome bug #149735
+ entry._file.relativePath = path;
+ dfd.resolve(entry._file);
+ } else {
+ entry.file(function (file) {
+ file.relativePath = path;
+ dfd.resolve(file);
+ }, errorHandler);
+ }
+ } else if (entry.isDirectory) {
+ dirReader = entry.createReader();
+ readEntries();
+ } else {
+ // Return an empy list for file system items
+ // other than files or directories:
+ dfd.resolve([]);
+ }
+ return dfd.promise();
+ },
+
+ _handleFileTreeEntries: function (entries, path) {
+ var that = this;
+ return $.when.apply(
+ $,
+ $.map(entries, function (entry) {
+ return that._handleFileTreeEntry(entry, path);
+ })
+ ).pipe(function () {
+ return Array.prototype.concat.apply(
+ [],
+ arguments
+ );
+ });
+ },
+
+ _getDroppedFiles: function (dataTransfer) {
+ dataTransfer = dataTransfer || {};
+ var items = dataTransfer.items;
+ if (items && items.length && (items[0].webkitGetAsEntry ||
+ items[0].getAsEntry)) {
+ return this._handleFileTreeEntries(
+ $.map(items, function (item) {
+ var entry;
+ if (item.webkitGetAsEntry) {
+ entry = item.webkitGetAsEntry();
+ if (entry) {
+ // Workaround for Chrome bug #149735:
+ entry._file = item.getAsFile();
+ }
+ return entry;
+ }
+ return item.getAsEntry();
+ })
+ );
+ }
+ return $.Deferred().resolve(
+ $.makeArray(dataTransfer.files)
+ ).promise();
+ },
+
+ _getSingleFileInputFiles: function (fileInput) {
+ fileInput = $(fileInput);
+ var entries = fileInput.prop('webkitEntries') ||
+ fileInput.prop('entries'),
+ files,
+ value;
+ if (entries && entries.length) {
+ return this._handleFileTreeEntries(entries);
+ }
+ files = $.makeArray(fileInput.prop('files'));
+ if (!files.length) {
+ value = fileInput.prop('value');
+ if (!value) {
+ return $.Deferred().resolve([]).promise();
+ }
+ // If the files property is not available, the browser does not
+ // support the File API and we add a pseudo File object with
+ // the input value as name with path information removed:
+ files = [{name: value.replace(/^.*\\/, '')}];
+ } else if (files[0].name === undefined && files[0].fileName) {
+ // File normalization for Safari 4 and Firefox 3:
+ $.each(files, function (index, file) {
+ file.name = file.fileName;
+ file.size = file.fileSize;
+ });
+ }
+ return $.Deferred().resolve(files).promise();
+ },
+
+ _getFileInputFiles: function (fileInput) {
+ if (!(fileInput instanceof $) || fileInput.length === 1) {
+ return this._getSingleFileInputFiles(fileInput);
+ }
+ return $.when.apply(
+ $,
+ $.map(fileInput, this._getSingleFileInputFiles)
+ ).pipe(function () {
+ return Array.prototype.concat.apply(
+ [],
+ arguments
+ );
+ });
+ },
+
+ _onChange: function (e) {
+ var that = this,
+ data = {
+ fileInput: $(e.target),
+ form: $(e.target.form)
+ };
+ this._getFileInputFiles(data.fileInput).always(function (files) {
+ data.files = files;
+ if (that.options.replaceFileInput) {
+ that._replaceFileInput(data);
+ }
+ if (that._trigger(
+ 'change',
+ $.Event('change', {delegatedEvent: e}),
+ data
+ ) !== false) {
+ that._onAdd(e, data);
+ }
+ });
+ },
+
+ _onPaste: function (e) {
+ var items = e.originalEvent && e.originalEvent.clipboardData &&
+ e.originalEvent.clipboardData.items,
+ data = {files: []};
+ if (items && items.length) {
+ $.each(items, function (index, item) {
+ var file = item.getAsFile && item.getAsFile();
+ if (file) {
+ data.files.push(file);
+ }
+ });
+ if (this._trigger(
+ 'paste',
+ $.Event('paste', {delegatedEvent: e}),
+ data
+ ) !== false) {
+ this._onAdd(e, data);
+ }
+ }
+ },
+
+ _onDrop: function (e) {
+ e.dataTransfer = e.originalEvent && e.originalEvent.dataTransfer;
+ var that = this,
+ dataTransfer = e.dataTransfer,
+ data = {};
+ if (dataTransfer && dataTransfer.files && dataTransfer.files.length) {
+ e.preventDefault();
+ this._getDroppedFiles(dataTransfer).always(function (files) {
+ data.files = files;
+ if (that._trigger(
+ 'drop',
+ $.Event('drop', {delegatedEvent: e}),
+ data
+ ) !== false) {
+ that._onAdd(e, data);
+ }
+ });
+ }
+ },
+
+ _onDragOver: getDragHandler('dragover'),
+
+ _onDragEnter: getDragHandler('dragenter'),
+
+ _onDragLeave: getDragHandler('dragleave'),
+
+ _initEventHandlers: function () {
+ if (this._isXHRUpload(this.options)) {
+ this._on(this.options.dropZone, {
+ dragover: this._onDragOver,
+ drop: this._onDrop,
+ // event.preventDefault() on dragenter is required for IE10+:
+ dragenter: this._onDragEnter,
+ // dragleave is not required, but added for completeness:
+ dragleave: this._onDragLeave
+ });
+ this._on(this.options.pasteZone, {
+ paste: this._onPaste
+ });
+ }
+ if ($.support.fileInput) {
+ this._on(this.options.fileInput, {
+ change: this._onChange
+ });
+ }
+ },
+
+ _destroyEventHandlers: function () {
+ this._off(this.options.dropZone, 'dragenter dragleave dragover drop');
+ this._off(this.options.pasteZone, 'paste');
+ this._off(this.options.fileInput, 'change');
+ },
+
+ _setOption: function (key, value) {
+ var reinit = $.inArray(key, this._specialOptions) !== -1;
+ if (reinit) {
+ this._destroyEventHandlers();
+ }
+ this._super(key, value);
+ if (reinit) {
+ this._initSpecialOptions();
+ this._initEventHandlers();
+ }
+ },
+
+ _initSpecialOptions: function () {
+ var options = this.options;
+ if (options.fileInput === undefined) {
+ options.fileInput = this.element.is('input[type="file"]') ?
+ this.element : this.element.find('input[type="file"]');
+ } else if (!(options.fileInput instanceof $)) {
+ options.fileInput = $(options.fileInput);
+ }
+ if (!(options.dropZone instanceof $)) {
+ options.dropZone = $(options.dropZone);
+ }
+ if (!(options.pasteZone instanceof $)) {
+ options.pasteZone = $(options.pasteZone);
+ }
+ },
+
+ _getRegExp: function (str) {
+ var parts = str.split('/'),
+ modifiers = parts.pop();
+ parts.shift();
+ return new RegExp(parts.join('/'), modifiers);
+ },
+
+ _isRegExpOption: function (key, value) {
+ return key !== 'url' && $.type(value) === 'string' &&
+ /^\/.*\/[igm]{0,3}$/.test(value);
+ },
+
+ _initDataAttributes: function () {
+ var that = this,
+ options = this.options,
+ clone = $(this.element[0].cloneNode(false));
+ // Initialize options set via HTML5 data-attributes:
+ $.each(
+ clone.data(),
+ function (key, value) {
+ var dataAttributeName = 'data-' +
+ // Convert camelCase to hyphen-ated key:
+ key.replace(/([a-z])([A-Z])/g, '$1-$2').toLowerCase();
+ if (clone.attr(dataAttributeName)) {
+ if (that._isRegExpOption(key, value)) {
+ value = that._getRegExp(value);
+ }
+ options[key] = value;
+ }
+ }
+ );
+ },
+
+ _create: function () {
+ this._initDataAttributes();
+ this._initSpecialOptions();
+ this._slots = [];
+ this._sequence = this._getXHRPromise(true);
+ this._sending = this._active = 0;
+ this._initProgressObject(this);
+ this._initEventHandlers();
+ },
+
+ // This method is exposed to the widget API and allows to query
+ // the number of active uploads:
+ active: function () {
+ return this._active;
+ },
+
+ // This method is exposed to the widget API and allows to query
+ // the widget upload progress.
+ // It returns an object with loaded, total and bitrate properties
+ // for the running uploads:
+ progress: function () {
+ return this._progress;
+ },
+
+ // This method is exposed to the widget API and allows adding files
+ // using the fileupload API. The data parameter accepts an object which
+ // must have a files property and can contain additional options:
+ // .fileupload('add', {files: filesList});
+ add: function (data) {
+ var that = this;
+ if (!data || this.options.disabled) {
+ return;
+ }
+ if (data.fileInput && !data.files) {
+ this._getFileInputFiles(data.fileInput).always(function (files) {
+ data.files = files;
+ that._onAdd(null, data);
+ });
+ } else {
+ data.files = $.makeArray(data.files);
+ this._onAdd(null, data);
+ }
+ },
+
+ // This method is exposed to the widget API and allows sending files
+ // using the fileupload API. The data parameter accepts an object which
+ // must have a files or fileInput property and can contain additional options:
+ // .fileupload('send', {files: filesList});
+ // The method returns a Promise object for the file upload call.
+ send: function (data) {
+ if (data && !this.options.disabled) {
+ if (data.fileInput && !data.files) {
+ var that = this,
+ dfd = $.Deferred(),
+ promise = dfd.promise(),
+ jqXHR,
+ aborted;
+ promise.abort = function () {
+ aborted = true;
+ if (jqXHR) {
+ return jqXHR.abort();
+ }
+ dfd.reject(null, 'abort', 'abort');
+ return promise;
+ };
+ this._getFileInputFiles(data.fileInput).always(
+ function (files) {
+ if (aborted) {
+ return;
+ }
+ if (!files.length) {
+ dfd.reject();
+ return;
+ }
+ data.files = files;
+ jqXHR = that._onSend(null, data);
+ jqXHR.then(
+ function (result, textStatus, jqXHR) {
+ dfd.resolve(result, textStatus, jqXHR);
+ },
+ function (jqXHR, textStatus, errorThrown) {
+ dfd.reject(jqXHR, textStatus, errorThrown);
+ }
+ );
+ }
+ );
+ return this._enhancePromise(promise);
+ }
+ data.files = $.makeArray(data.files);
+ if (data.files.length) {
+ return this._onSend(null, data);
+ }
+ }
+ return this._getXHRPromise(false, data && data.context);
+ }
+
+ });
+
+}));
diff --git a/library/blueimp_upload/js/jquery.iframe-transport.js b/library/blueimp_upload/js/jquery.iframe-transport.js
new file mode 100644
index 000000000..8d64b591b
--- /dev/null
+++ b/library/blueimp_upload/js/jquery.iframe-transport.js
@@ -0,0 +1,214 @@
+/*
+ * jQuery Iframe Transport Plugin 1.8.2
+ * https://github.com/blueimp/jQuery-File-Upload
+ *
+ * Copyright 2011, Sebastian Tschan
+ * https://blueimp.net
+ *
+ * Licensed under the MIT license:
+ * http://www.opensource.org/licenses/MIT
+ */
+
+/* global define, window, document */
+
+(function (factory) {
+ 'use strict';
+ if (typeof define === 'function' && define.amd) {
+ // Register as an anonymous AMD module:
+ define(['jquery'], factory);
+ } else {
+ // Browser globals:
+ factory(window.jQuery);
+ }
+}(function ($) {
+ 'use strict';
+
+ // Helper variable to create unique names for the transport iframes:
+ var counter = 0;
+
+ // The iframe transport accepts four additional options:
+ // options.fileInput: a jQuery collection of file input fields
+ // options.paramName: the parameter name for the file form data,
+ // overrides the name property of the file input field(s),
+ // can be a string or an array of strings.
+ // options.formData: an array of objects with name and value properties,
+ // equivalent to the return data of .serializeArray(), e.g.:
+ // [{name: 'a', value: 1}, {name: 'b', value: 2}]
+ // options.initialIframeSrc: the URL of the initial iframe src,
+ // by default set to "javascript:false;"
+ $.ajaxTransport('iframe', function (options) {
+ if (options.async) {
+ // javascript:false as initial iframe src
+ // prevents warning popups on HTTPS in IE6:
+ /*jshint scripturl: true */
+ var initialIframeSrc = options.initialIframeSrc || 'javascript:false;',
+ /*jshint scripturl: false */
+ form,
+ iframe,
+ addParamChar;
+ return {
+ send: function (_, completeCallback) {
+ form = $('<form style="display:none;"></form>');
+ form.attr('accept-charset', options.formAcceptCharset);
+ addParamChar = /\?/.test(options.url) ? '&' : '?';
+ // XDomainRequest only supports GET and POST:
+ if (options.type === 'DELETE') {
+ options.url = options.url + addParamChar + '_method=DELETE';
+ options.type = 'POST';
+ } else if (options.type === 'PUT') {
+ options.url = options.url + addParamChar + '_method=PUT';
+ options.type = 'POST';
+ } else if (options.type === 'PATCH') {
+ options.url = options.url + addParamChar + '_method=PATCH';
+ options.type = 'POST';
+ }
+ // IE versions below IE8 cannot set the name property of
+ // elements that have already been added to the DOM,
+ // so we set the name along with the iframe HTML markup:
+ counter += 1;
+ iframe = $(
+ '<iframe src="' + initialIframeSrc +
+ '" name="iframe-transport-' + counter + '"></iframe>'
+ ).bind('load', function () {
+ var fileInputClones,
+ paramNames = $.isArray(options.paramName) ?
+ options.paramName : [options.paramName];
+ iframe
+ .unbind('load')
+ .bind('load', function () {
+ var response;
+ // Wrap in a try/catch block to catch exceptions thrown
+ // when trying to access cross-domain iframe contents:
+ try {
+ response = iframe.contents();
+ // Google Chrome and Firefox do not throw an
+ // exception when calling iframe.contents() on
+ // cross-domain requests, so we unify the response:
+ if (!response.length || !response[0].firstChild) {
+ throw new Error();
+ }
+ } catch (e) {
+ response = undefined;
+ }
+ // The complete callback returns the
+ // iframe content document as response object:
+ completeCallback(
+ 200,
+ 'success',
+ {'iframe': response}
+ );
+ // Fix for IE endless progress bar activity bug
+ // (happens on form submits to iframe targets):
+ $('<iframe src="' + initialIframeSrc + '"></iframe>')
+ .appendTo(form);
+ window.setTimeout(function () {
+ // Removing the form in a setTimeout call
+ // allows Chrome's developer tools to display
+ // the response result
+ form.remove();
+ }, 0);
+ });
+ form
+ .prop('target', iframe.prop('name'))
+ .prop('action', options.url)
+ .prop('method', options.type);
+ if (options.formData) {
+ $.each(options.formData, function (index, field) {
+ $('<input type="hidden"/>')
+ .prop('name', field.name)
+ .val(field.value)
+ .appendTo(form);
+ });
+ }
+ if (options.fileInput && options.fileInput.length &&
+ options.type === 'POST') {
+ fileInputClones = options.fileInput.clone();
+ // Insert a clone for each file input field:
+ options.fileInput.after(function (index) {
+ return fileInputClones[index];
+ });
+ if (options.paramName) {
+ options.fileInput.each(function (index) {
+ $(this).prop(
+ 'name',
+ paramNames[index] || options.paramName
+ );
+ });
+ }
+ // Appending the file input fields to the hidden form
+ // removes them from their original location:
+ form
+ .append(options.fileInput)
+ .prop('enctype', 'multipart/form-data')
+ // enctype must be set as encoding for IE:
+ .prop('encoding', 'multipart/form-data');
+ // Remove the HTML5 form attribute from the input(s):
+ options.fileInput.removeAttr('form');
+ }
+ form.submit();
+ // Insert the file input fields at their original location
+ // by replacing the clones with the originals:
+ if (fileInputClones && fileInputClones.length) {
+ options.fileInput.each(function (index, input) {
+ var clone = $(fileInputClones[index]);
+ // Restore the original name and form properties:
+ $(input)
+ .prop('name', clone.prop('name'))
+ .attr('form', clone.attr('form'));
+ clone.replaceWith(input);
+ });
+ }
+ });
+ form.append(iframe).appendTo(document.body);
+ },
+ abort: function () {
+ if (iframe) {
+ // javascript:false as iframe src aborts the request
+ // and prevents warning popups on HTTPS in IE6.
+ // concat is used to avoid the "Script URL" JSLint error:
+ iframe
+ .unbind('load')
+ .prop('src', initialIframeSrc);
+ }
+ if (form) {
+ form.remove();
+ }
+ }
+ };
+ }
+ });
+
+ // The iframe transport returns the iframe content document as response.
+ // The following adds converters from iframe to text, json, html, xml
+ // and script.
+ // Please note that the Content-Type for JSON responses has to be text/plain
+ // or text/html, if the browser doesn't include application/json in the
+ // Accept header, else IE will show a download dialog.
+ // The Content-Type for XML responses on the other hand has to be always
+ // application/xml or text/xml, so IE properly parses the XML response.
+ // See also
+ // https://github.com/blueimp/jQuery-File-Upload/wiki/Setup#content-type-negotiation
+ $.ajaxSetup({
+ converters: {
+ 'iframe text': function (iframe) {
+ return iframe && $(iframe[0].body).text();
+ },
+ 'iframe json': function (iframe) {
+ return iframe && $.parseJSON($(iframe[0].body).text());
+ },
+ 'iframe html': function (iframe) {
+ return iframe && $(iframe[0].body).html();
+ },
+ 'iframe xml': function (iframe) {
+ var xmlDoc = iframe && iframe[0];
+ return xmlDoc && $.isXMLDoc(xmlDoc) ? xmlDoc :
+ $.parseXML((xmlDoc.XMLDocument && xmlDoc.XMLDocument.xml) ||
+ $(xmlDoc.body).html());
+ },
+ 'iframe script': function (iframe) {
+ return iframe && $.globalEval($(iframe[0].body).text());
+ }
+ }
+ });
+
+}));
diff --git a/library/blueimp_upload/js/main.js b/library/blueimp_upload/js/main.js
new file mode 100644
index 000000000..8f57967a3
--- /dev/null
+++ b/library/blueimp_upload/js/main.js
@@ -0,0 +1,75 @@
+/*
+ * jQuery File Upload Plugin JS Example 8.9.1
+ * https://github.com/blueimp/jQuery-File-Upload
+ *
+ * Copyright 2010, Sebastian Tschan
+ * https://blueimp.net
+ *
+ * Licensed under the MIT license:
+ * http://www.opensource.org/licenses/MIT
+ */
+
+/* global $, window */
+
+$(function () {
+ 'use strict';
+
+ // Initialize the jQuery File Upload widget:
+ $('#fileupload').fileupload({
+ // Uncomment the following to send cross-domain cookies:
+ //xhrFields: {withCredentials: true},
+ url: 'server/php/'
+ });
+
+ // Enable iframe cross-domain access via redirect option:
+ $('#fileupload').fileupload(
+ 'option',
+ 'redirect',
+ window.location.href.replace(
+ /\/[^\/]*$/,
+ '/cors/result.html?%s'
+ )
+ );
+
+ if (window.location.hostname === 'blueimp.github.io') {
+ // Demo settings:
+ $('#fileupload').fileupload('option', {
+ url: '//jquery-file-upload.appspot.com/',
+ // Enable image resizing, except for Android and Opera,
+ // which actually support image resizing, but fail to
+ // send Blob objects via XHR requests:
+ disableImageResize: /Android(?!.*Chrome)|Opera/
+ .test(window.navigator.userAgent),
+ maxFileSize: 5000000,
+ acceptFileTypes: /(\.|\/)(gif|jpe?g|png)$/i
+ });
+ // Upload server status check for browsers with CORS support:
+ if ($.support.cors) {
+ $.ajax({
+ url: '//jquery-file-upload.appspot.com/',
+ type: 'HEAD'
+ }).fail(function () {
+ $('<div class="alert alert-danger"/>')
+ .text('Upload server currently unavailable - ' +
+ new Date())
+ .appendTo('#fileupload');
+ });
+ }
+ } else {
+ // Load existing files:
+ $('#fileupload').addClass('fileupload-processing');
+ $.ajax({
+ // Uncomment the following to send cross-domain cookies:
+ //xhrFields: {withCredentials: true},
+ url: $('#fileupload').fileupload('option', 'url'),
+ dataType: 'json',
+ context: $('#fileupload')[0]
+ }).always(function () {
+ $(this).removeClass('fileupload-processing');
+ }).done(function (result) {
+ $(this).fileupload('option', 'done')
+ .call(this, $.Event('done'), {result: result});
+ });
+ }
+
+});
diff --git a/library/blueimp_upload/js/vendor/jquery.ui.widget.js b/library/blueimp_upload/js/vendor/jquery.ui.widget.js
new file mode 100644
index 000000000..7899e6bb3
--- /dev/null
+++ b/library/blueimp_upload/js/vendor/jquery.ui.widget.js
@@ -0,0 +1,558 @@
+/*! jQuery UI - v1.11.1 - 2014-09-17
+* http://jqueryui.com
+* Includes: widget.js
+* Copyright 2014 jQuery Foundation and other contributors; Licensed MIT */
+
+(function( factory ) {
+ if ( typeof define === "function" && define.amd ) {
+
+ // AMD. Register as an anonymous module.
+ define([ "jquery" ], factory );
+ } else {
+
+ // Browser globals
+ factory( jQuery );
+ }
+}(function( $ ) {
+/*!
+ * jQuery UI Widget 1.11.1
+ * http://jqueryui.com
+ *
+ * Copyright 2014 jQuery Foundation and other contributors
+ * Released under the MIT license.
+ * http://jquery.org/license
+ *
+ * http://api.jqueryui.com/jQuery.widget/
+ */
+
+
+var widget_uuid = 0,
+ widget_slice = Array.prototype.slice;
+
+$.cleanData = (function( orig ) {
+ return function( elems ) {
+ var events, elem, i;
+ for ( i = 0; (elem = elems[i]) != null; i++ ) {
+ try {
+
+ // Only trigger remove when necessary to save time
+ events = $._data( elem, "events" );
+ if ( events && events.remove ) {
+ $( elem ).triggerHandler( "remove" );
+ }
+
+ // http://bugs.jquery.com/ticket/8235
+ } catch( e ) {}
+ }
+ orig( elems );
+ };
+})( $.cleanData );
+
+$.widget = function( name, base, prototype ) {
+ var fullName, existingConstructor, constructor, basePrototype,
+ // proxiedPrototype allows the provided prototype to remain unmodified
+ // so that it can be used as a mixin for multiple widgets (#8876)
+ proxiedPrototype = {},
+ namespace = name.split( "." )[ 0 ];
+
+ name = name.split( "." )[ 1 ];
+ fullName = namespace + "-" + name;
+
+ if ( !prototype ) {
+ prototype = base;
+ base = $.Widget;
+ }
+
+ // create selector for plugin
+ $.expr[ ":" ][ fullName.toLowerCase() ] = function( elem ) {
+ return !!$.data( elem, fullName );
+ };
+
+ $[ namespace ] = $[ namespace ] || {};
+ existingConstructor = $[ namespace ][ name ];
+ constructor = $[ namespace ][ name ] = function( options, element ) {
+ // allow instantiation without "new" keyword
+ if ( !this._createWidget ) {
+ return new constructor( options, element );
+ }
+
+ // allow instantiation without initializing for simple inheritance
+ // must use "new" keyword (the code above always passes args)
+ if ( arguments.length ) {
+ this._createWidget( options, element );
+ }
+ };
+ // extend with the existing constructor to carry over any static properties
+ $.extend( constructor, existingConstructor, {
+ version: prototype.version,
+ // copy the object used to create the prototype in case we need to
+ // redefine the widget later
+ _proto: $.extend( {}, prototype ),
+ // track widgets that inherit from this widget in case this widget is
+ // redefined after a widget inherits from it
+ _childConstructors: []
+ });
+
+ basePrototype = new base();
+ // we need to make the options hash a property directly on the new instance
+ // otherwise we'll modify the options hash on the prototype that we're
+ // inheriting from
+ basePrototype.options = $.widget.extend( {}, basePrototype.options );
+ $.each( prototype, function( prop, value ) {
+ if ( !$.isFunction( value ) ) {
+ proxiedPrototype[ prop ] = value;
+ return;
+ }
+ proxiedPrototype[ prop ] = (function() {
+ var _super = function() {
+ return base.prototype[ prop ].apply( this, arguments );
+ },
+ _superApply = function( args ) {
+ return base.prototype[ prop ].apply( this, args );
+ };
+ return function() {
+ var __super = this._super,
+ __superApply = this._superApply,
+ returnValue;
+
+ this._super = _super;
+ this._superApply = _superApply;
+
+ returnValue = value.apply( this, arguments );
+
+ this._super = __super;
+ this._superApply = __superApply;
+
+ return returnValue;
+ };
+ })();
+ });
+ constructor.prototype = $.widget.extend( basePrototype, {
+ // TODO: remove support for widgetEventPrefix
+ // always use the name + a colon as the prefix, e.g., draggable:start
+ // don't prefix for widgets that aren't DOM-based
+ widgetEventPrefix: existingConstructor ? (basePrototype.widgetEventPrefix || name) : name
+ }, proxiedPrototype, {
+ constructor: constructor,
+ namespace: namespace,
+ widgetName: name,
+ widgetFullName: fullName
+ });
+
+ // If this widget is being redefined then we need to find all widgets that
+ // are inheriting from it and redefine all of them so that they inherit from
+ // the new version of this widget. We're essentially trying to replace one
+ // level in the prototype chain.
+ if ( existingConstructor ) {
+ $.each( existingConstructor._childConstructors, function( i, child ) {
+ var childPrototype = child.prototype;
+
+ // redefine the child widget using the same prototype that was
+ // originally used, but inherit from the new version of the base
+ $.widget( childPrototype.namespace + "." + childPrototype.widgetName, constructor, child._proto );
+ });
+ // remove the list of existing child constructors from the old constructor
+ // so the old child constructors can be garbage collected
+ delete existingConstructor._childConstructors;
+ } else {
+ base._childConstructors.push( constructor );
+ }
+
+ $.widget.bridge( name, constructor );
+
+ return constructor;
+};
+
+$.widget.extend = function( target ) {
+ var input = widget_slice.call( arguments, 1 ),
+ inputIndex = 0,
+ inputLength = input.length,
+ key,
+ value;
+ for ( ; inputIndex < inputLength; inputIndex++ ) {
+ for ( key in input[ inputIndex ] ) {
+ value = input[ inputIndex ][ key ];
+ if ( input[ inputIndex ].hasOwnProperty( key ) && value !== undefined ) {
+ // Clone objects
+ if ( $.isPlainObject( value ) ) {
+ target[ key ] = $.isPlainObject( target[ key ] ) ?
+ $.widget.extend( {}, target[ key ], value ) :
+ // Don't extend strings, arrays, etc. with objects
+ $.widget.extend( {}, value );
+ // Copy everything else by reference
+ } else {
+ target[ key ] = value;
+ }
+ }
+ }
+ }
+ return target;
+};
+
+$.widget.bridge = function( name, object ) {
+ var fullName = object.prototype.widgetFullName || name;
+ $.fn[ name ] = function( options ) {
+ var isMethodCall = typeof options === "string",
+ args = widget_slice.call( arguments, 1 ),
+ returnValue = this;
+
+ // allow multiple hashes to be passed on init
+ options = !isMethodCall && args.length ?
+ $.widget.extend.apply( null, [ options ].concat(args) ) :
+ options;
+
+ if ( isMethodCall ) {
+ this.each(function() {
+ var methodValue,
+ instance = $.data( this, fullName );
+ if ( options === "instance" ) {
+ returnValue = instance;
+ return false;
+ }
+ if ( !instance ) {
+ return $.error( "cannot call methods on " + name + " prior to initialization; " +
+ "attempted to call method '" + options + "'" );
+ }
+ if ( !$.isFunction( instance[options] ) || options.charAt( 0 ) === "_" ) {
+ return $.error( "no such method '" + options + "' for " + name + " widget instance" );
+ }
+ methodValue = instance[ options ].apply( instance, args );
+ if ( methodValue !== instance && methodValue !== undefined ) {
+ returnValue = methodValue && methodValue.jquery ?
+ returnValue.pushStack( methodValue.get() ) :
+ methodValue;
+ return false;
+ }
+ });
+ } else {
+ this.each(function() {
+ var instance = $.data( this, fullName );
+ if ( instance ) {
+ instance.option( options || {} );
+ if ( instance._init ) {
+ instance._init();
+ }
+ } else {
+ $.data( this, fullName, new object( options, this ) );
+ }
+ });
+ }
+
+ return returnValue;
+ };
+};
+
+$.Widget = function( /* options, element */ ) {};
+$.Widget._childConstructors = [];
+
+$.Widget.prototype = {
+ widgetName: "widget",
+ widgetEventPrefix: "",
+ defaultElement: "<div>",
+ options: {
+ disabled: false,
+
+ // callbacks
+ create: null
+ },
+ _createWidget: function( options, element ) {
+ element = $( element || this.defaultElement || this )[ 0 ];
+ this.element = $( element );
+ this.uuid = widget_uuid++;
+ this.eventNamespace = "." + this.widgetName + this.uuid;
+ this.options = $.widget.extend( {},
+ this.options,
+ this._getCreateOptions(),
+ options );
+
+ this.bindings = $();
+ this.hoverable = $();
+ this.focusable = $();
+
+ if ( element !== this ) {
+ $.data( element, this.widgetFullName, this );
+ this._on( true, this.element, {
+ remove: function( event ) {
+ if ( event.target === element ) {
+ this.destroy();
+ }
+ }
+ });
+ this.document = $( element.style ?
+ // element within the document
+ element.ownerDocument :
+ // element is window or document
+ element.document || element );
+ this.window = $( this.document[0].defaultView || this.document[0].parentWindow );
+ }
+
+ this._create();
+ this._trigger( "create", null, this._getCreateEventData() );
+ this._init();
+ },
+ _getCreateOptions: $.noop,
+ _getCreateEventData: $.noop,
+ _create: $.noop,
+ _init: $.noop,
+
+ destroy: function() {
+ this._destroy();
+ // we can probably remove the unbind calls in 2.0
+ // all event bindings should go through this._on()
+ this.element
+ .unbind( this.eventNamespace )
+ .removeData( this.widgetFullName )
+ // support: jquery <1.6.3
+ // http://bugs.jquery.com/ticket/9413
+ .removeData( $.camelCase( this.widgetFullName ) );
+ this.widget()
+ .unbind( this.eventNamespace )
+ .removeAttr( "aria-disabled" )
+ .removeClass(
+ this.widgetFullName + "-disabled " +
+ "ui-state-disabled" );
+
+ // clean up events and states
+ this.bindings.unbind( this.eventNamespace );
+ this.hoverable.removeClass( "ui-state-hover" );
+ this.focusable.removeClass( "ui-state-focus" );
+ },
+ _destroy: $.noop,
+
+ widget: function() {
+ return this.element;
+ },
+
+ option: function( key, value ) {
+ var options = key,
+ parts,
+ curOption,
+ i;
+
+ if ( arguments.length === 0 ) {
+ // don't return a reference to the internal hash
+ return $.widget.extend( {}, this.options );
+ }
+
+ if ( typeof key === "string" ) {
+ // handle nested keys, e.g., "foo.bar" => { foo: { bar: ___ } }
+ options = {};
+ parts = key.split( "." );
+ key = parts.shift();
+ if ( parts.length ) {
+ curOption = options[ key ] = $.widget.extend( {}, this.options[ key ] );
+ for ( i = 0; i < parts.length - 1; i++ ) {
+ curOption[ parts[ i ] ] = curOption[ parts[ i ] ] || {};
+ curOption = curOption[ parts[ i ] ];
+ }
+ key = parts.pop();
+ if ( arguments.length === 1 ) {
+ return curOption[ key ] === undefined ? null : curOption[ key ];
+ }
+ curOption[ key ] = value;
+ } else {
+ if ( arguments.length === 1 ) {
+ return this.options[ key ] === undefined ? null : this.options[ key ];
+ }
+ options[ key ] = value;
+ }
+ }
+
+ this._setOptions( options );
+
+ return this;
+ },
+ _setOptions: function( options ) {
+ var key;
+
+ for ( key in options ) {
+ this._setOption( key, options[ key ] );
+ }
+
+ return this;
+ },
+ _setOption: function( key, value ) {
+ this.options[ key ] = value;
+
+ if ( key === "disabled" ) {
+ this.widget()
+ .toggleClass( this.widgetFullName + "-disabled", !!value );
+
+ // If the widget is becoming disabled, then nothing is interactive
+ if ( value ) {
+ this.hoverable.removeClass( "ui-state-hover" );
+ this.focusable.removeClass( "ui-state-focus" );
+ }
+ }
+
+ return this;
+ },
+
+ enable: function() {
+ return this._setOptions({ disabled: false });
+ },
+ disable: function() {
+ return this._setOptions({ disabled: true });
+ },
+
+ _on: function( suppressDisabledCheck, element, handlers ) {
+ var delegateElement,
+ instance = this;
+
+ // no suppressDisabledCheck flag, shuffle arguments
+ if ( typeof suppressDisabledCheck !== "boolean" ) {
+ handlers = element;
+ element = suppressDisabledCheck;
+ suppressDisabledCheck = false;
+ }
+
+ // no element argument, shuffle and use this.element
+ if ( !handlers ) {
+ handlers = element;
+ element = this.element;
+ delegateElement = this.widget();
+ } else {
+ element = delegateElement = $( element );
+ this.bindings = this.bindings.add( element );
+ }
+
+ $.each( handlers, function( event, handler ) {
+ function handlerProxy() {
+ // allow widgets to customize the disabled handling
+ // - disabled as an array instead of boolean
+ // - disabled class as method for disabling individual parts
+ if ( !suppressDisabledCheck &&
+ ( instance.options.disabled === true ||
+ $( this ).hasClass( "ui-state-disabled" ) ) ) {
+ return;
+ }
+ return ( typeof handler === "string" ? instance[ handler ] : handler )
+ .apply( instance, arguments );
+ }
+
+ // copy the guid so direct unbinding works
+ if ( typeof handler !== "string" ) {
+ handlerProxy.guid = handler.guid =
+ handler.guid || handlerProxy.guid || $.guid++;
+ }
+
+ var match = event.match( /^([\w:-]*)\s*(.*)$/ ),
+ eventName = match[1] + instance.eventNamespace,
+ selector = match[2];
+ if ( selector ) {
+ delegateElement.delegate( selector, eventName, handlerProxy );
+ } else {
+ element.bind( eventName, handlerProxy );
+ }
+ });
+ },
+
+ _off: function( element, eventName ) {
+ eventName = (eventName || "").split( " " ).join( this.eventNamespace + " " ) + this.eventNamespace;
+ element.unbind( eventName ).undelegate( eventName );
+ },
+
+ _delay: function( handler, delay ) {
+ function handlerProxy() {
+ return ( typeof handler === "string" ? instance[ handler ] : handler )
+ .apply( instance, arguments );
+ }
+ var instance = this;
+ return setTimeout( handlerProxy, delay || 0 );
+ },
+
+ _hoverable: function( element ) {
+ this.hoverable = this.hoverable.add( element );
+ this._on( element, {
+ mouseenter: function( event ) {
+ $( event.currentTarget ).addClass( "ui-state-hover" );
+ },
+ mouseleave: function( event ) {
+ $( event.currentTarget ).removeClass( "ui-state-hover" );
+ }
+ });
+ },
+
+ _focusable: function( element ) {
+ this.focusable = this.focusable.add( element );
+ this._on( element, {
+ focusin: function( event ) {
+ $( event.currentTarget ).addClass( "ui-state-focus" );
+ },
+ focusout: function( event ) {
+ $( event.currentTarget ).removeClass( "ui-state-focus" );
+ }
+ });
+ },
+
+ _trigger: function( type, event, data ) {
+ var prop, orig,
+ callback = this.options[ type ];
+
+ data = data || {};
+ event = $.Event( event );
+ event.type = ( type === this.widgetEventPrefix ?
+ type :
+ this.widgetEventPrefix + type ).toLowerCase();
+ // the original event may come from any element
+ // so we need to reset the target on the new event
+ event.target = this.element[ 0 ];
+
+ // copy original event properties over to the new event
+ orig = event.originalEvent;
+ if ( orig ) {
+ for ( prop in orig ) {
+ if ( !( prop in event ) ) {
+ event[ prop ] = orig[ prop ];
+ }
+ }
+ }
+
+ this.element.trigger( event, data );
+ return !( $.isFunction( callback ) &&
+ callback.apply( this.element[0], [ event ].concat( data ) ) === false ||
+ event.isDefaultPrevented() );
+ }
+};
+
+$.each( { show: "fadeIn", hide: "fadeOut" }, function( method, defaultEffect ) {
+ $.Widget.prototype[ "_" + method ] = function( element, options, callback ) {
+ if ( typeof options === "string" ) {
+ options = { effect: options };
+ }
+ var hasOptions,
+ effectName = !options ?
+ method :
+ options === true || typeof options === "number" ?
+ defaultEffect :
+ options.effect || defaultEffect;
+ options = options || {};
+ if ( typeof options === "number" ) {
+ options = { duration: options };
+ }
+ hasOptions = !$.isEmptyObject( options );
+ options.complete = callback;
+ if ( options.delay ) {
+ element.delay( options.delay );
+ }
+ if ( hasOptions && $.effects && $.effects.effect[ effectName ] ) {
+ element[ method ]( options );
+ } else if ( effectName !== method && element[ effectName ] ) {
+ element[ effectName ]( options.duration, options.easing, callback );
+ } else {
+ element.queue(function( next ) {
+ $( this )[ method ]();
+ if ( callback ) {
+ callback.call( element[ 0 ] );
+ }
+ next();
+ });
+ }
+ };
+});
+
+var widget = $.widget;
+
+
+
+}));
diff --git a/library/blueimp_upload/package.json b/library/blueimp_upload/package.json
new file mode 100644
index 000000000..880574aa7
--- /dev/null
+++ b/library/blueimp_upload/package.json
@@ -0,0 +1,54 @@
+{
+ "name": "blueimp-file-upload",
+ "version": "9.8.0",
+ "title": "jQuery File Upload",
+ "description": "File Upload widget with multiple file selection, drag&amp;drop support, progress bar, validation and preview images, audio and video for jQuery. Supports cross-domain, chunked and resumable file uploads. Works with any server-side platform (Google App Engine, PHP, Python, Ruby on Rails, Java, etc.) that supports standard HTML form file uploads.",
+ "keywords": [
+ "jquery",
+ "file",
+ "upload",
+ "widget",
+ "multiple",
+ "selection",
+ "drag",
+ "drop",
+ "progress",
+ "preview",
+ "cross-domain",
+ "cross-site",
+ "chunk",
+ "resume",
+ "gae",
+ "go",
+ "python",
+ "php",
+ "bootstrap"
+ ],
+ "homepage": "https://github.com/blueimp/jQuery-File-Upload",
+ "author": {
+ "name": "Sebastian Tschan",
+ "url": "https://blueimp.net"
+ },
+ "maintainers": [
+ {
+ "name": "Sebastian Tschan",
+ "url": "https://blueimp.net"
+ }
+ ],
+ "repository": {
+ "type": "git",
+ "url": "git://github.com/blueimp/jQuery-File-Upload.git"
+ },
+ "bugs": "https://github.com/blueimp/jQuery-File-Upload/issues",
+ "licenses": [
+ {
+ "type": "MIT",
+ "url": "http://www.opensource.org/licenses/MIT"
+ }
+ ],
+ "devDependencies": {
+ "grunt": "~0.4.5",
+ "grunt-bump-build-git": "~1.1.1",
+ "grunt-contrib-jshint": "~0.10.0"
+ }
+}
diff --git a/library/blueimp_upload/server/gae-go/app.yaml b/library/blueimp_upload/server/gae-go/app.yaml
new file mode 100644
index 000000000..2d09daa56
--- /dev/null
+++ b/library/blueimp_upload/server/gae-go/app.yaml
@@ -0,0 +1,12 @@
+application: jquery-file-upload
+version: 2
+runtime: go
+api_version: go1
+
+handlers:
+- url: /(favicon\.ico|robots\.txt)
+ static_files: static/\1
+ upload: static/(.*)
+ expiration: '1d'
+- url: /.*
+ script: _go_app
diff --git a/library/blueimp_upload/server/gae-go/app/main.go b/library/blueimp_upload/server/gae-go/app/main.go
new file mode 100644
index 000000000..03af0b1d2
--- /dev/null
+++ b/library/blueimp_upload/server/gae-go/app/main.go
@@ -0,0 +1,296 @@
+/*
+ * jQuery File Upload Plugin GAE Go Example 3.2.0
+ * https://github.com/blueimp/jQuery-File-Upload
+ *
+ * Copyright 2011, Sebastian Tschan
+ * https://blueimp.net
+ *
+ * Licensed under the MIT license:
+ * http://www.opensource.org/licenses/MIT
+ */
+
+package app
+
+import (
+ "appengine"
+ "appengine/blobstore"
+ "appengine/image"
+ "appengine/taskqueue"
+ "bytes"
+ "encoding/json"
+ "fmt"
+ "io"
+ "log"
+ "mime/multipart"
+ "net/http"
+ "net/url"
+ "regexp"
+ "strings"
+ "time"
+)
+
+const (
+ WEBSITE = "https://blueimp.github.io/jQuery-File-Upload/"
+ MIN_FILE_SIZE = 1 // bytes
+ MAX_FILE_SIZE = 5000000 // bytes
+ IMAGE_TYPES = "image/(gif|p?jpeg|(x-)?png)"
+ ACCEPT_FILE_TYPES = IMAGE_TYPES
+ EXPIRATION_TIME = 300 // seconds
+ THUMBNAIL_PARAM = "=s80"
+)
+
+var (
+ imageTypes = regexp.MustCompile(IMAGE_TYPES)
+ acceptFileTypes = regexp.MustCompile(ACCEPT_FILE_TYPES)
+)
+
+type FileInfo struct {
+ Key appengine.BlobKey `json:"-"`
+ Url string `json:"url,omitempty"`
+ ThumbnailUrl string `json:"thumbnailUrl,omitempty"`
+ Name string `json:"name"`
+ Type string `json:"type"`
+ Size int64 `json:"size"`
+ Error string `json:"error,omitempty"`
+ DeleteUrl string `json:"deleteUrl,omitempty"`
+ DeleteType string `json:"deleteType,omitempty"`
+}
+
+func (fi *FileInfo) ValidateType() (valid bool) {
+ if acceptFileTypes.MatchString(fi.Type) {
+ return true
+ }
+ fi.Error = "Filetype not allowed"
+ return false
+}
+
+func (fi *FileInfo) ValidateSize() (valid bool) {
+ if fi.Size < MIN_FILE_SIZE {
+ fi.Error = "File is too small"
+ } else if fi.Size > MAX_FILE_SIZE {
+ fi.Error = "File is too big"
+ } else {
+ return true
+ }
+ return false
+}
+
+func (fi *FileInfo) CreateUrls(r *http.Request, c appengine.Context) {
+ u := &url.URL{
+ Scheme: r.URL.Scheme,
+ Host: appengine.DefaultVersionHostname(c),
+ Path: "/",
+ }
+ uString := u.String()
+ fi.Url = uString + escape(string(fi.Key)) + "/" +
+ escape(string(fi.Name))
+ fi.DeleteUrl = fi.Url + "?delete=true"
+ fi.DeleteType = "DELETE"
+ if imageTypes.MatchString(fi.Type) {
+ servingUrl, err := image.ServingURL(
+ c,
+ fi.Key,
+ &image.ServingURLOptions{
+ Secure: strings.HasSuffix(u.Scheme, "s"),
+ Size: 0,
+ Crop: false,
+ },
+ )
+ check(err)
+ fi.ThumbnailUrl = servingUrl.String() + THUMBNAIL_PARAM
+ }
+}
+
+func check(err error) {
+ if err != nil {
+ panic(err)
+ }
+}
+
+func escape(s string) string {
+ return strings.Replace(url.QueryEscape(s), "+", "%20", -1)
+}
+
+func delayedDelete(c appengine.Context, fi *FileInfo) {
+ if key := string(fi.Key); key != "" {
+ task := &taskqueue.Task{
+ Path: "/" + escape(key) + "/-",
+ Method: "DELETE",
+ Delay: time.Duration(EXPIRATION_TIME) * time.Second,
+ }
+ taskqueue.Add(c, task, "")
+ }
+}
+
+func handleUpload(r *http.Request, p *multipart.Part) (fi *FileInfo) {
+ fi = &FileInfo{
+ Name: p.FileName(),
+ Type: p.Header.Get("Content-Type"),
+ }
+ if !fi.ValidateType() {
+ return
+ }
+ defer func() {
+ if rec := recover(); rec != nil {
+ log.Println(rec)
+ fi.Error = rec.(error).Error()
+ }
+ }()
+ lr := &io.LimitedReader{R: p, N: MAX_FILE_SIZE + 1}
+ context := appengine.NewContext(r)
+ w, err := blobstore.Create(context, fi.Type)
+ defer func() {
+ w.Close()
+ fi.Size = MAX_FILE_SIZE + 1 - lr.N
+ fi.Key, err = w.Key()
+ check(err)
+ if !fi.ValidateSize() {
+ err := blobstore.Delete(context, fi.Key)
+ check(err)
+ return
+ }
+ delayedDelete(context, fi)
+ fi.CreateUrls(r, context)
+ }()
+ check(err)
+ _, err = io.Copy(w, lr)
+ return
+}
+
+func getFormValue(p *multipart.Part) string {
+ var b bytes.Buffer
+ io.CopyN(&b, p, int64(1<<20)) // Copy max: 1 MiB
+ return b.String()
+}
+
+func handleUploads(r *http.Request) (fileInfos []*FileInfo) {
+ fileInfos = make([]*FileInfo, 0)
+ mr, err := r.MultipartReader()
+ check(err)
+ r.Form, err = url.ParseQuery(r.URL.RawQuery)
+ check(err)
+ part, err := mr.NextPart()
+ for err == nil {
+ if name := part.FormName(); name != "" {
+ if part.FileName() != "" {
+ fileInfos = append(fileInfos, handleUpload(r, part))
+ } else {
+ r.Form[name] = append(r.Form[name], getFormValue(part))
+ }
+ }
+ part, err = mr.NextPart()
+ }
+ return
+}
+
+func get(w http.ResponseWriter, r *http.Request) {
+ if r.URL.Path == "/" {
+ http.Redirect(w, r, WEBSITE, http.StatusFound)
+ return
+ }
+ parts := strings.Split(r.URL.Path, "/")
+ if len(parts) == 3 {
+ if key := parts[1]; key != "" {
+ blobKey := appengine.BlobKey(key)
+ bi, err := blobstore.Stat(appengine.NewContext(r), blobKey)
+ if err == nil {
+ w.Header().Add("X-Content-Type-Options", "nosniff")
+ if !imageTypes.MatchString(bi.ContentType) {
+ w.Header().Add("Content-Type", "application/octet-stream")
+ w.Header().Add(
+ "Content-Disposition",
+ fmt.Sprintf("attachment; filename=\"%s\"", parts[2]),
+ )
+ }
+ w.Header().Add(
+ "Cache-Control",
+ fmt.Sprintf("public,max-age=%d", EXPIRATION_TIME),
+ )
+ blobstore.Send(w, blobKey)
+ return
+ }
+ }
+ }
+ http.Error(w, "404 Not Found", http.StatusNotFound)
+}
+
+func post(w http.ResponseWriter, r *http.Request) {
+ result := make(map[string][]*FileInfo, 1)
+ result["files"] = handleUploads(r)
+ b, err := json.Marshal(result)
+ check(err)
+ if redirect := r.FormValue("redirect"); redirect != "" {
+ if strings.Contains(redirect, "%s") {
+ redirect = fmt.Sprintf(
+ redirect,
+ escape(string(b)),
+ )
+ }
+ http.Redirect(w, r, redirect, http.StatusFound)
+ return
+ }
+ w.Header().Set("Cache-Control", "no-cache")
+ jsonType := "application/json"
+ if strings.Index(r.Header.Get("Accept"), jsonType) != -1 {
+ w.Header().Set("Content-Type", jsonType)
+ }
+ fmt.Fprintln(w, string(b))
+}
+
+func delete(w http.ResponseWriter, r *http.Request) {
+ parts := strings.Split(r.URL.Path, "/")
+ if len(parts) != 3 {
+ return
+ }
+ result := make(map[string]bool, 1)
+ if key := parts[1]; key != "" {
+ c := appengine.NewContext(r)
+ blobKey := appengine.BlobKey(key)
+ err := blobstore.Delete(c, blobKey)
+ check(err)
+ err = image.DeleteServingURL(c, blobKey)
+ check(err)
+ result[key] = true
+ }
+ jsonType := "application/json"
+ if strings.Index(r.Header.Get("Accept"), jsonType) != -1 {
+ w.Header().Set("Content-Type", jsonType)
+ }
+ b, err := json.Marshal(result)
+ check(err)
+ fmt.Fprintln(w, string(b))
+}
+
+func handle(w http.ResponseWriter, r *http.Request) {
+ params, err := url.ParseQuery(r.URL.RawQuery)
+ check(err)
+ w.Header().Add("Access-Control-Allow-Origin", "*")
+ w.Header().Add(
+ "Access-Control-Allow-Methods",
+ "OPTIONS, HEAD, GET, POST, PUT, DELETE",
+ )
+ w.Header().Add(
+ "Access-Control-Allow-Headers",
+ "Content-Type, Content-Range, Content-Disposition",
+ )
+ switch r.Method {
+ case "OPTIONS":
+ case "HEAD":
+ case "GET":
+ get(w, r)
+ case "POST":
+ if len(params["_method"]) > 0 && params["_method"][0] == "DELETE" {
+ delete(w, r)
+ } else {
+ post(w, r)
+ }
+ case "DELETE":
+ delete(w, r)
+ default:
+ http.Error(w, "501 Not Implemented", http.StatusNotImplemented)
+ }
+}
+
+func init() {
+ http.HandleFunc("/", handle)
+}
diff --git a/library/blueimp_upload/server/gae-go/static/robots.txt b/library/blueimp_upload/server/gae-go/static/robots.txt
new file mode 100644
index 000000000..eb0536286
--- /dev/null
+++ b/library/blueimp_upload/server/gae-go/static/robots.txt
@@ -0,0 +1,2 @@
+User-agent: *
+Disallow:
diff --git a/library/blueimp_upload/server/gae-python/app.yaml b/library/blueimp_upload/server/gae-python/app.yaml
new file mode 100644
index 000000000..5fe123f59
--- /dev/null
+++ b/library/blueimp_upload/server/gae-python/app.yaml
@@ -0,0 +1,16 @@
+application: jquery-file-upload
+version: 1
+runtime: python27
+api_version: 1
+threadsafe: true
+
+builtins:
+- deferred: on
+
+handlers:
+- url: /(favicon\.ico|robots\.txt)
+ static_files: static/\1
+ upload: static/(.*)
+ expiration: '1d'
+- url: /.*
+ script: main.app
diff --git a/library/blueimp_upload/server/gae-python/main.py b/library/blueimp_upload/server/gae-python/main.py
new file mode 100644
index 000000000..6276be6a0
--- /dev/null
+++ b/library/blueimp_upload/server/gae-python/main.py
@@ -0,0 +1,170 @@
+# -*- coding: utf-8 -*-
+#
+# jQuery File Upload Plugin GAE Python Example 2.2.0
+# https://github.com/blueimp/jQuery-File-Upload
+#
+# Copyright 2011, Sebastian Tschan
+# https://blueimp.net
+#
+# Licensed under the MIT license:
+# http://www.opensource.org/licenses/MIT
+#
+
+from __future__ import with_statement
+from google.appengine.api import files, images
+from google.appengine.ext import blobstore, deferred
+from google.appengine.ext.webapp import blobstore_handlers
+import json
+import re
+import urllib
+import webapp2
+
+WEBSITE = 'https://blueimp.github.io/jQuery-File-Upload/'
+MIN_FILE_SIZE = 1 # bytes
+MAX_FILE_SIZE = 5000000 # bytes
+IMAGE_TYPES = re.compile('image/(gif|p?jpeg|(x-)?png)')
+ACCEPT_FILE_TYPES = IMAGE_TYPES
+THUMBNAIL_MODIFICATOR = '=s80' # max width / height
+EXPIRATION_TIME = 300 # seconds
+
+
+def cleanup(blob_keys):
+ blobstore.delete(blob_keys)
+
+
+class UploadHandler(webapp2.RequestHandler):
+
+ def initialize(self, request, response):
+ super(UploadHandler, self).initialize(request, response)
+ self.response.headers['Access-Control-Allow-Origin'] = '*'
+ self.response.headers[
+ 'Access-Control-Allow-Methods'
+ ] = 'OPTIONS, HEAD, GET, POST, PUT, DELETE'
+ self.response.headers[
+ 'Access-Control-Allow-Headers'
+ ] = 'Content-Type, Content-Range, Content-Disposition'
+
+ def validate(self, file):
+ if file['size'] < MIN_FILE_SIZE:
+ file['error'] = 'File is too small'
+ elif file['size'] > MAX_FILE_SIZE:
+ file['error'] = 'File is too big'
+ elif not ACCEPT_FILE_TYPES.match(file['type']):
+ file['error'] = 'Filetype not allowed'
+ else:
+ return True
+ return False
+
+ def get_file_size(self, file):
+ file.seek(0, 2) # Seek to the end of the file
+ size = file.tell() # Get the position of EOF
+ file.seek(0) # Reset the file position to the beginning
+ return size
+
+ def write_blob(self, data, info):
+ blob = files.blobstore.create(
+ mime_type=info['type'],
+ _blobinfo_uploaded_filename=info['name']
+ )
+ with files.open(blob, 'a') as f:
+ f.write(data)
+ files.finalize(blob)
+ return files.blobstore.get_blob_key(blob)
+
+ def handle_upload(self):
+ results = []
+ blob_keys = []
+ for name, fieldStorage in self.request.POST.items():
+ if type(fieldStorage) is unicode:
+ continue
+ result = {}
+ result['name'] = re.sub(
+ r'^.*\\',
+ '',
+ fieldStorage.filename
+ )
+ result['type'] = fieldStorage.type
+ result['size'] = self.get_file_size(fieldStorage.file)
+ if self.validate(result):
+ blob_key = str(
+ self.write_blob(fieldStorage.value, result)
+ )
+ blob_keys.append(blob_key)
+ result['deleteType'] = 'DELETE'
+ result['deleteUrl'] = self.request.host_url +\
+ '/?key=' + urllib.quote(blob_key, '')
+ if (IMAGE_TYPES.match(result['type'])):
+ try:
+ result['url'] = images.get_serving_url(
+ blob_key,
+ secure_url=self.request.host_url.startswith(
+ 'https'
+ )
+ )
+ result['thumbnailUrl'] = result['url'] +\
+ THUMBNAIL_MODIFICATOR
+ except: # Could not get an image serving url
+ pass
+ if not 'url' in result:
+ result['url'] = self.request.host_url +\
+ '/' + blob_key + '/' + urllib.quote(
+ result['name'].encode('utf-8'), '')
+ results.append(result)
+ deferred.defer(
+ cleanup,
+ blob_keys,
+ _countdown=EXPIRATION_TIME
+ )
+ return results
+
+ def options(self):
+ pass
+
+ def head(self):
+ pass
+
+ def get(self):
+ self.redirect(WEBSITE)
+
+ def post(self):
+ if (self.request.get('_method') == 'DELETE'):
+ return self.delete()
+ result = {'files': self.handle_upload()}
+ s = json.dumps(result, separators=(',', ':'))
+ redirect = self.request.get('redirect')
+ if redirect:
+ return self.redirect(str(
+ redirect.replace('%s', urllib.quote(s, ''), 1)
+ ))
+ if 'application/json' in self.request.headers.get('Accept'):
+ self.response.headers['Content-Type'] = 'application/json'
+ self.response.write(s)
+
+ def delete(self):
+ key = self.request.get('key') or ''
+ blobstore.delete(key)
+ s = json.dumps({key: True}, separators=(',', ':'))
+ if 'application/json' in self.request.headers.get('Accept'):
+ self.response.headers['Content-Type'] = 'application/json'
+ self.response.write(s)
+
+
+class DownloadHandler(blobstore_handlers.BlobstoreDownloadHandler):
+ def get(self, key, filename):
+ if not blobstore.get(key):
+ self.error(404)
+ else:
+ # Prevent browsers from MIME-sniffing the content-type:
+ self.response.headers['X-Content-Type-Options'] = 'nosniff'
+ # Cache for the expiration time:
+ self.response.headers['Cache-Control'] = 'public,max-age=%d' % EXPIRATION_TIME
+ # Send the file forcing a download dialog:
+ self.send_blob(key, save_as=filename, content_type='application/octet-stream')
+
+app = webapp2.WSGIApplication(
+ [
+ ('/', UploadHandler),
+ ('/([^/]+)/([^/]+)', DownloadHandler)
+ ],
+ debug=True
+)
diff --git a/library/blueimp_upload/server/gae-python/static/robots.txt b/library/blueimp_upload/server/gae-python/static/robots.txt
new file mode 100644
index 000000000..eb0536286
--- /dev/null
+++ b/library/blueimp_upload/server/gae-python/static/robots.txt
@@ -0,0 +1,2 @@
+User-agent: *
+Disallow:
diff --git a/library/blueimp_upload/server/node/.gitignore b/library/blueimp_upload/server/node/.gitignore
new file mode 100644
index 000000000..9daa8247d
--- /dev/null
+++ b/library/blueimp_upload/server/node/.gitignore
@@ -0,0 +1,2 @@
+.DS_Store
+node_modules
diff --git a/library/blueimp_upload/server/node/package.json b/library/blueimp_upload/server/node/package.json
new file mode 100644
index 000000000..dd38c50ca
--- /dev/null
+++ b/library/blueimp_upload/server/node/package.json
@@ -0,0 +1,41 @@
+{
+ "name": "blueimp-file-upload-node",
+ "version": "2.1.0",
+ "title": "jQuery File Upload Node.js example",
+ "description": "Node.js implementation example of a file upload handler for jQuery File Upload.",
+ "keywords": [
+ "file",
+ "upload",
+ "cross-domain",
+ "cross-site",
+ "node"
+ ],
+ "homepage": "https://github.com/blueimp/jQuery-File-Upload",
+ "author": {
+ "name": "Sebastian Tschan",
+ "url": "https://blueimp.net"
+ },
+ "maintainers": [
+ {
+ "name": "Sebastian Tschan",
+ "url": "https://blueimp.net"
+ }
+ ],
+ "repository": {
+ "type": "git",
+ "url": "git://github.com/blueimp/jQuery-File-Upload.git"
+ },
+ "bugs": "https://github.com/blueimp/jQuery-File-Upload/issues",
+ "licenses": [
+ {
+ "type": "MIT",
+ "url": "http://www.opensource.org/licenses/MIT"
+ }
+ ],
+ "dependencies": {
+ "formidable": ">=1.0.11",
+ "node-static": ">=0.6.5",
+ "imagemagick": ">=0.1.3"
+ },
+ "main": "server.js"
+}
diff --git a/library/blueimp_upload/server/node/public/files/.gitignore b/library/blueimp_upload/server/node/public/files/.gitignore
new file mode 100644
index 000000000..d6b7ef32c
--- /dev/null
+++ b/library/blueimp_upload/server/node/public/files/.gitignore
@@ -0,0 +1,2 @@
+*
+!.gitignore
diff --git a/library/blueimp_upload/server/node/server.js b/library/blueimp_upload/server/node/server.js
new file mode 100755
index 000000000..7bab20f59
--- /dev/null
+++ b/library/blueimp_upload/server/node/server.js
@@ -0,0 +1,292 @@
+#!/usr/bin/env node
+/*
+ * jQuery File Upload Plugin Node.js Example 2.1.2
+ * https://github.com/blueimp/jQuery-File-Upload
+ *
+ * Copyright 2012, Sebastian Tschan
+ * https://blueimp.net
+ *
+ * Licensed under the MIT license:
+ * http://www.opensource.org/licenses/MIT
+ */
+
+/* jshint nomen:false */
+/* global require, __dirname, unescape, console */
+
+(function (port) {
+ 'use strict';
+ var path = require('path'),
+ fs = require('fs'),
+ // Since Node 0.8, .existsSync() moved from path to fs:
+ _existsSync = fs.existsSync || path.existsSync,
+ formidable = require('formidable'),
+ nodeStatic = require('node-static'),
+ imageMagick = require('imagemagick'),
+ options = {
+ tmpDir: __dirname + '/tmp',
+ publicDir: __dirname + '/public',
+ uploadDir: __dirname + '/public/files',
+ uploadUrl: '/files/',
+ maxPostSize: 11000000000, // 11 GB
+ minFileSize: 1,
+ maxFileSize: 10000000000, // 10 GB
+ acceptFileTypes: /.+/i,
+ // Files not matched by this regular expression force a download dialog,
+ // to prevent executing any scripts in the context of the service domain:
+ inlineFileTypes: /\.(gif|jpe?g|png)$/i,
+ imageTypes: /\.(gif|jpe?g|png)$/i,
+ imageVersions: {
+ 'thumbnail': {
+ width: 80,
+ height: 80
+ }
+ },
+ accessControl: {
+ allowOrigin: '*',
+ allowMethods: 'OPTIONS, HEAD, GET, POST, PUT, DELETE',
+ allowHeaders: 'Content-Type, Content-Range, Content-Disposition'
+ },
+ /* Uncomment and edit this section to provide the service via HTTPS:
+ ssl: {
+ key: fs.readFileSync('/Applications/XAMPP/etc/ssl.key/server.key'),
+ cert: fs.readFileSync('/Applications/XAMPP/etc/ssl.crt/server.crt')
+ },
+ */
+ nodeStatic: {
+ cache: 3600 // seconds to cache served files
+ }
+ },
+ utf8encode = function (str) {
+ return unescape(encodeURIComponent(str));
+ },
+ fileServer = new nodeStatic.Server(options.publicDir, options.nodeStatic),
+ nameCountRegexp = /(?:(?: \(([\d]+)\))?(\.[^.]+))?$/,
+ nameCountFunc = function (s, index, ext) {
+ return ' (' + ((parseInt(index, 10) || 0) + 1) + ')' + (ext || '');
+ },
+ FileInfo = function (file) {
+ this.name = file.name;
+ this.size = file.size;
+ this.type = file.type;
+ this.deleteType = 'DELETE';
+ },
+ UploadHandler = function (req, res, callback) {
+ this.req = req;
+ this.res = res;
+ this.callback = callback;
+ },
+ serve = function (req, res) {
+ res.setHeader(
+ 'Access-Control-Allow-Origin',
+ options.accessControl.allowOrigin
+ );
+ res.setHeader(
+ 'Access-Control-Allow-Methods',
+ options.accessControl.allowMethods
+ );
+ res.setHeader(
+ 'Access-Control-Allow-Headers',
+ options.accessControl.allowHeaders
+ );
+ var handleResult = function (result, redirect) {
+ if (redirect) {
+ res.writeHead(302, {
+ 'Location': redirect.replace(
+ /%s/,
+ encodeURIComponent(JSON.stringify(result))
+ )
+ });
+ res.end();
+ } else {
+ res.writeHead(200, {
+ 'Content-Type': req.headers.accept
+ .indexOf('application/json') !== -1 ?
+ 'application/json' : 'text/plain'
+ });
+ res.end(JSON.stringify(result));
+ }
+ },
+ setNoCacheHeaders = function () {
+ res.setHeader('Pragma', 'no-cache');
+ res.setHeader('Cache-Control', 'no-store, no-cache, must-revalidate');
+ res.setHeader('Content-Disposition', 'inline; filename="files.json"');
+ },
+ handler = new UploadHandler(req, res, handleResult);
+ switch (req.method) {
+ case 'OPTIONS':
+ res.end();
+ break;
+ case 'HEAD':
+ case 'GET':
+ if (req.url === '/') {
+ setNoCacheHeaders();
+ if (req.method === 'GET') {
+ handler.get();
+ } else {
+ res.end();
+ }
+ } else {
+ fileServer.serve(req, res);
+ }
+ break;
+ case 'POST':
+ setNoCacheHeaders();
+ handler.post();
+ break;
+ case 'DELETE':
+ handler.destroy();
+ break;
+ default:
+ res.statusCode = 405;
+ res.end();
+ }
+ };
+ fileServer.respond = function (pathname, status, _headers, files, stat, req, res, finish) {
+ // Prevent browsers from MIME-sniffing the content-type:
+ _headers['X-Content-Type-Options'] = 'nosniff';
+ if (!options.inlineFileTypes.test(files[0])) {
+ // Force a download dialog for unsafe file extensions:
+ _headers['Content-Type'] = 'application/octet-stream';
+ _headers['Content-Disposition'] = 'attachment; filename="' +
+ utf8encode(path.basename(files[0])) + '"';
+ }
+ nodeStatic.Server.prototype.respond
+ .call(this, pathname, status, _headers, files, stat, req, res, finish);
+ };
+ FileInfo.prototype.validate = function () {
+ if (options.minFileSize && options.minFileSize > this.size) {
+ this.error = 'File is too small';
+ } else if (options.maxFileSize && options.maxFileSize < this.size) {
+ this.error = 'File is too big';
+ } else if (!options.acceptFileTypes.test(this.name)) {
+ this.error = 'Filetype not allowed';
+ }
+ return !this.error;
+ };
+ FileInfo.prototype.safeName = function () {
+ // Prevent directory traversal and creating hidden system files:
+ this.name = path.basename(this.name).replace(/^\.+/, '');
+ // Prevent overwriting existing files:
+ while (_existsSync(options.uploadDir + '/' + this.name)) {
+ this.name = this.name.replace(nameCountRegexp, nameCountFunc);
+ }
+ };
+ FileInfo.prototype.initUrls = function (req) {
+ if (!this.error) {
+ var that = this,
+ baseUrl = (options.ssl ? 'https:' : 'http:') +
+ '//' + req.headers.host + options.uploadUrl;
+ this.url = this.deleteUrl = baseUrl + encodeURIComponent(this.name);
+ Object.keys(options.imageVersions).forEach(function (version) {
+ if (_existsSync(
+ options.uploadDir + '/' + version + '/' + that.name
+ )) {
+ that[version + 'Url'] = baseUrl + version + '/' +
+ encodeURIComponent(that.name);
+ }
+ });
+ }
+ };
+ UploadHandler.prototype.get = function () {
+ var handler = this,
+ files = [];
+ fs.readdir(options.uploadDir, function (err, list) {
+ list.forEach(function (name) {
+ var stats = fs.statSync(options.uploadDir + '/' + name),
+ fileInfo;
+ if (stats.isFile() && name[0] !== '.') {
+ fileInfo = new FileInfo({
+ name: name,
+ size: stats.size
+ });
+ fileInfo.initUrls(handler.req);
+ files.push(fileInfo);
+ }
+ });
+ handler.callback({files: files});
+ });
+ };
+ UploadHandler.prototype.post = function () {
+ var handler = this,
+ form = new formidable.IncomingForm(),
+ tmpFiles = [],
+ files = [],
+ map = {},
+ counter = 1,
+ redirect,
+ finish = function () {
+ counter -= 1;
+ if (!counter) {
+ files.forEach(function (fileInfo) {
+ fileInfo.initUrls(handler.req);
+ });
+ handler.callback({files: files}, redirect);
+ }
+ };
+ form.uploadDir = options.tmpDir;
+ form.on('fileBegin', function (name, file) {
+ tmpFiles.push(file.path);
+ var fileInfo = new FileInfo(file);
+ fileInfo.safeName();
+ map[path.basename(file.path)] = fileInfo;
+ files.push(fileInfo);
+ }).on('field', function (name, value) {
+ if (name === 'redirect') {
+ redirect = value;
+ }
+ }).on('file', function (name, file) {
+ var fileInfo = map[path.basename(file.path)];
+ fileInfo.size = file.size;
+ if (!fileInfo.validate()) {
+ fs.unlink(file.path);
+ return;
+ }
+ fs.renameSync(file.path, options.uploadDir + '/' + fileInfo.name);
+ if (options.imageTypes.test(fileInfo.name)) {
+ Object.keys(options.imageVersions).forEach(function (version) {
+ counter += 1;
+ var opts = options.imageVersions[version];
+ imageMagick.resize({
+ width: opts.width,
+ height: opts.height,
+ srcPath: options.uploadDir + '/' + fileInfo.name,
+ dstPath: options.uploadDir + '/' + version + '/' +
+ fileInfo.name
+ }, finish);
+ });
+ }
+ }).on('aborted', function () {
+ tmpFiles.forEach(function (file) {
+ fs.unlink(file);
+ });
+ }).on('error', function (e) {
+ console.log(e);
+ }).on('progress', function (bytesReceived) {
+ if (bytesReceived > options.maxPostSize) {
+ handler.req.connection.destroy();
+ }
+ }).on('end', finish).parse(handler.req);
+ };
+ UploadHandler.prototype.destroy = function () {
+ var handler = this,
+ fileName;
+ if (handler.req.url.slice(0, options.uploadUrl.length) === options.uploadUrl) {
+ fileName = path.basename(decodeURIComponent(handler.req.url));
+ if (fileName[0] !== '.') {
+ fs.unlink(options.uploadDir + '/' + fileName, function (ex) {
+ Object.keys(options.imageVersions).forEach(function (version) {
+ fs.unlink(options.uploadDir + '/' + version + '/' + fileName);
+ });
+ handler.callback({success: !ex});
+ });
+ return;
+ }
+ }
+ handler.callback({success: false});
+ };
+ if (options.ssl) {
+ require('https').createServer(options.ssl, serve).listen(port);
+ } else {
+ require('http').createServer(serve).listen(port);
+ }
+}(8888));
diff --git a/.gitmodules b/library/blueimp_upload/server/node/tmp/.gitignore
index e69de29bb..e69de29bb 100644
--- a/.gitmodules
+++ b/library/blueimp_upload/server/node/tmp/.gitignore
diff --git a/library/blueimp_upload/server/php/UploadHandler.php b/library/blueimp_upload/server/php/UploadHandler.php
new file mode 100755
index 000000000..fb77be1d0
--- /dev/null
+++ b/library/blueimp_upload/server/php/UploadHandler.php
@@ -0,0 +1,1343 @@
+<?php
+/*
+ * jQuery File Upload Plugin PHP Class 8.1.0
+ * https://github.com/blueimp/jQuery-File-Upload
+ *
+ * Copyright 2010, Sebastian Tschan
+ * https://blueimp.net
+ *
+ * Licensed under the MIT license:
+ * http://www.opensource.org/licenses/MIT
+ */
+
+class UploadHandler
+{
+
+ protected $options;
+
+ // PHP File Upload error message codes:
+ // http://php.net/manual/en/features.file-upload.errors.php
+ protected $error_messages = array(
+ 1 => 'The uploaded file exceeds the upload_max_filesize directive in php.ini',
+ 2 => 'The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in the HTML form',
+ 3 => 'The uploaded file was only partially uploaded',
+ 4 => 'No file was uploaded',
+ 6 => 'Missing a temporary folder',
+ 7 => 'Failed to write file to disk',
+ 8 => 'A PHP extension stopped the file upload',
+ 'post_max_size' => 'The uploaded file exceeds the post_max_size directive in php.ini',
+ 'max_file_size' => 'File is too big',
+ 'min_file_size' => 'File is too small',
+ 'accept_file_types' => 'Filetype not allowed',
+ 'max_number_of_files' => 'Maximum number of files exceeded',
+ 'max_width' => 'Image exceeds maximum width',
+ 'min_width' => 'Image requires a minimum width',
+ 'max_height' => 'Image exceeds maximum height',
+ 'min_height' => 'Image requires a minimum height',
+ 'abort' => 'File upload aborted',
+ 'image_resize' => 'Failed to resize image'
+ );
+
+ protected $image_objects = array();
+
+ function __construct($options = null, $initialize = true, $error_messages = null) {
+ $this->options = array(
+ 'script_url' => $this->get_full_url().'/',
+ 'upload_dir' => dirname($this->get_server_var('SCRIPT_FILENAME')).'/files/',
+ 'upload_url' => $this->get_full_url().'/files/',
+ 'user_dirs' => false,
+ 'mkdir_mode' => 0755,
+ 'param_name' => 'files',
+ // Set the following option to 'POST', if your server does not support
+ // DELETE requests. This is a parameter sent to the client:
+ 'delete_type' => 'DELETE',
+ 'access_control_allow_origin' => '*',
+ 'access_control_allow_credentials' => false,
+ 'access_control_allow_methods' => array(
+ 'OPTIONS',
+ 'HEAD',
+ 'GET',
+ 'POST',
+ 'PUT',
+ 'PATCH',
+ 'DELETE'
+ ),
+ 'access_control_allow_headers' => array(
+ 'Content-Type',
+ 'Content-Range',
+ 'Content-Disposition'
+ ),
+ // Enable to provide file downloads via GET requests to the PHP script:
+ // 1. Set to 1 to download files via readfile method through PHP
+ // 2. Set to 2 to send a X-Sendfile header for lighttpd/Apache
+ // 3. Set to 3 to send a X-Accel-Redirect header for nginx
+ // If set to 2 or 3, adjust the upload_url option to the base path of
+ // the redirect parameter, e.g. '/files/'.
+ 'download_via_php' => false,
+ // Read files in chunks to avoid memory limits when download_via_php
+ // is enabled, set to 0 to disable chunked reading of files:
+ 'readfile_chunk_size' => 10 * 1024 * 1024, // 10 MiB
+ // Defines which files can be displayed inline when downloaded:
+ 'inline_file_types' => '/\.(gif|jpe?g|png)$/i',
+ // Defines which files (based on their names) are accepted for upload:
+ 'accept_file_types' => '/.+$/i',
+ // The php.ini settings upload_max_filesize and post_max_size
+ // take precedence over the following max_file_size setting:
+ 'max_file_size' => null,
+ 'min_file_size' => 1,
+ // The maximum number of files for the upload directory:
+ 'max_number_of_files' => null,
+ // Defines which files are handled as image files:
+ 'image_file_types' => '/\.(gif|jpe?g|png)$/i',
+ // Use exif_imagetype on all files to correct file extensions:
+ 'correct_image_extensions' => false,
+ // Image resolution restrictions:
+ 'max_width' => null,
+ 'max_height' => null,
+ 'min_width' => 1,
+ 'min_height' => 1,
+ // Set the following option to false to enable resumable uploads:
+ 'discard_aborted_uploads' => true,
+ // Set to 0 to use the GD library to scale and orient images,
+ // set to 1 to use imagick (if installed, falls back to GD),
+ // set to 2 to use the ImageMagick convert binary directly:
+ 'image_library' => 1,
+ // Uncomment the following to define an array of resource limits
+ // for imagick:
+ /*
+ 'imagick_resource_limits' => array(
+ imagick::RESOURCETYPE_MAP => 32,
+ imagick::RESOURCETYPE_MEMORY => 32
+ ),
+ */
+ // Command or path for to the ImageMagick convert binary:
+ 'convert_bin' => 'convert',
+ // Uncomment the following to add parameters in front of each
+ // ImageMagick convert call (the limit constraints seem only
+ // to have an effect if put in front):
+ /*
+ 'convert_params' => '-limit memory 32MiB -limit map 32MiB',
+ */
+ // Command or path for to the ImageMagick identify binary:
+ 'identify_bin' => 'identify',
+ 'image_versions' => array(
+ // The empty image version key defines options for the original image:
+ '' => array(
+ // Automatically rotate images based on EXIF meta data:
+ 'auto_orient' => true
+ ),
+ // Uncomment the following to create medium sized images:
+ /*
+ 'medium' => array(
+ 'max_width' => 800,
+ 'max_height' => 600
+ ),
+ */
+ 'thumbnail' => array(
+ // Uncomment the following to use a defined directory for the thumbnails
+ // instead of a subdirectory based on the version identifier.
+ // Make sure that this directory doesn't allow execution of files if you
+ // don't pose any restrictions on the type of uploaded files, e.g. by
+ // copying the .htaccess file from the files directory for Apache:
+ //'upload_dir' => dirname($this->get_server_var('SCRIPT_FILENAME')).'/thumb/',
+ //'upload_url' => $this->get_full_url().'/thumb/',
+ // Uncomment the following to force the max
+ // dimensions and e.g. create square thumbnails:
+ //'crop' => true,
+ 'max_width' => 80,
+ 'max_height' => 80
+ )
+ )
+ );
+ if ($options) {
+ $this->options = $options + $this->options;
+ }
+ if ($error_messages) {
+ $this->error_messages = $error_messages + $this->error_messages;
+ }
+ if ($initialize) {
+ $this->initialize();
+ }
+ }
+
+ protected function initialize() {
+ switch ($this->get_server_var('REQUEST_METHOD')) {
+ case 'OPTIONS':
+ case 'HEAD':
+ $this->head();
+ break;
+ case 'GET':
+ $this->get();
+ break;
+ case 'PATCH':
+ case 'PUT':
+ case 'POST':
+ $this->post();
+ break;
+ case 'DELETE':
+ $this->delete();
+ break;
+ default:
+ $this->header('HTTP/1.1 405 Method Not Allowed');
+ }
+ }
+
+ protected function get_full_url() {
+ $https = !empty($_SERVER['HTTPS']) && strcasecmp($_SERVER['HTTPS'], 'on') === 0 ||
+ !empty($_SERVER['HTTP_X_FORWARDED_PROTO']) &&
+ strcasecmp($_SERVER['HTTP_X_FORWARDED_PROTO'], 'https') === 0;
+ return
+ ($https ? 'https://' : 'http://').
+ (!empty($_SERVER['REMOTE_USER']) ? $_SERVER['REMOTE_USER'].'@' : '').
+ (isset($_SERVER['HTTP_HOST']) ? $_SERVER['HTTP_HOST'] : ($_SERVER['SERVER_NAME'].
+ ($https && $_SERVER['SERVER_PORT'] === 443 ||
+ $_SERVER['SERVER_PORT'] === 80 ? '' : ':'.$_SERVER['SERVER_PORT']))).
+ substr($_SERVER['SCRIPT_NAME'],0, strrpos($_SERVER['SCRIPT_NAME'], '/'));
+ }
+
+ protected function get_user_id() {
+ @session_start();
+ return session_id();
+ }
+
+ protected function get_user_path() {
+ if ($this->options['user_dirs']) {
+ return $this->get_user_id().'/';
+ }
+ return '';
+ }
+
+ protected function get_upload_path($file_name = null, $version = null) {
+ $file_name = $file_name ? $file_name : '';
+ if (empty($version)) {
+ $version_path = '';
+ } else {
+ $version_dir = @$this->options['image_versions'][$version]['upload_dir'];
+ if ($version_dir) {
+ return $version_dir.$this->get_user_path().$file_name;
+ }
+ $version_path = $version.'/';
+ }
+ return $this->options['upload_dir'].$this->get_user_path()
+ .$version_path.$file_name;
+ }
+
+ protected function get_query_separator($url) {
+ return strpos($url, '?') === false ? '?' : '&';
+ }
+
+ protected function get_download_url($file_name, $version = null, $direct = false) {
+ if (!$direct && $this->options['download_via_php']) {
+ $url = $this->options['script_url']
+ .$this->get_query_separator($this->options['script_url'])
+ .$this->get_singular_param_name()
+ .'='.rawurlencode($file_name);
+ if ($version) {
+ $url .= '&version='.rawurlencode($version);
+ }
+ return $url.'&download=1';
+ }
+ if (empty($version)) {
+ $version_path = '';
+ } else {
+ $version_url = @$this->options['image_versions'][$version]['upload_url'];
+ if ($version_url) {
+ return $version_url.$this->get_user_path().rawurlencode($file_name);
+ }
+ $version_path = rawurlencode($version).'/';
+ }
+ return $this->options['upload_url'].$this->get_user_path()
+ .$version_path.rawurlencode($file_name);
+ }
+
+ protected function set_additional_file_properties($file) {
+ $file->deleteUrl = $this->options['script_url']
+ .$this->get_query_separator($this->options['script_url'])
+ .$this->get_singular_param_name()
+ .'='.rawurlencode($file->name);
+ $file->deleteType = $this->options['delete_type'];
+ if ($file->deleteType !== 'DELETE') {
+ $file->deleteUrl .= '&_method=DELETE';
+ }
+ if ($this->options['access_control_allow_credentials']) {
+ $file->deleteWithCredentials = true;
+ }
+ }
+
+ // Fix for overflowing signed 32 bit integers,
+ // works for sizes up to 2^32-1 bytes (4 GiB - 1):
+ protected function fix_integer_overflow($size) {
+ if ($size < 0) {
+ $size += 2.0 * (PHP_INT_MAX + 1);
+ }
+ return $size;
+ }
+
+ protected function get_file_size($file_path, $clear_stat_cache = false) {
+ if ($clear_stat_cache) {
+ if (version_compare(PHP_VERSION, '5.3.0') >= 0) {
+ clearstatcache(true, $file_path);
+ } else {
+ clearstatcache();
+ }
+ }
+ return $this->fix_integer_overflow(filesize($file_path));
+ }
+
+ protected function is_valid_file_object($file_name) {
+ $file_path = $this->get_upload_path($file_name);
+ if (is_file($file_path) && $file_name[0] !== '.') {
+ return true;
+ }
+ return false;
+ }
+
+ protected function get_file_object($file_name) {
+ if ($this->is_valid_file_object($file_name)) {
+ $file = new \stdClass();
+ $file->name = $file_name;
+ $file->size = $this->get_file_size(
+ $this->get_upload_path($file_name)
+ );
+ $file->url = $this->get_download_url($file->name);
+ foreach($this->options['image_versions'] as $version => $options) {
+ if (!empty($version)) {
+ if (is_file($this->get_upload_path($file_name, $version))) {
+ $file->{$version.'Url'} = $this->get_download_url(
+ $file->name,
+ $version
+ );
+ }
+ }
+ }
+ $this->set_additional_file_properties($file);
+ return $file;
+ }
+ return null;
+ }
+
+ protected function get_file_objects($iteration_method = 'get_file_object') {
+ $upload_dir = $this->get_upload_path();
+ if (!is_dir($upload_dir)) {
+ return array();
+ }
+ return array_values(array_filter(array_map(
+ array($this, $iteration_method),
+ scandir($upload_dir)
+ )));
+ }
+
+ protected function count_file_objects() {
+ return count($this->get_file_objects('is_valid_file_object'));
+ }
+
+ protected function get_error_message($error) {
+ return array_key_exists($error, $this->error_messages) ?
+ $this->error_messages[$error] : $error;
+ }
+
+ function get_config_bytes($val) {
+ $val = trim($val);
+ $last = strtolower($val[strlen($val)-1]);
+ switch($last) {
+ case 'g':
+ $val *= 1024;
+ case 'm':
+ $val *= 1024;
+ case 'k':
+ $val *= 1024;
+ }
+ return $this->fix_integer_overflow($val);
+ }
+
+ protected function validate($uploaded_file, $file, $error, $index) {
+ if ($error) {
+ $file->error = $this->get_error_message($error);
+ return false;
+ }
+ $content_length = $this->fix_integer_overflow(intval(
+ $this->get_server_var('CONTENT_LENGTH')
+ ));
+ $post_max_size = $this->get_config_bytes(ini_get('post_max_size'));
+ if ($post_max_size && ($content_length > $post_max_size)) {
+ $file->error = $this->get_error_message('post_max_size');
+ return false;
+ }
+ if (!preg_match($this->options['accept_file_types'], $file->name)) {
+ $file->error = $this->get_error_message('accept_file_types');
+ return false;
+ }
+ if ($uploaded_file && is_uploaded_file($uploaded_file)) {
+ $file_size = $this->get_file_size($uploaded_file);
+ } else {
+ $file_size = $content_length;
+ }
+ if ($this->options['max_file_size'] && (
+ $file_size > $this->options['max_file_size'] ||
+ $file->size > $this->options['max_file_size'])
+ ) {
+ $file->error = $this->get_error_message('max_file_size');
+ return false;
+ }
+ if ($this->options['min_file_size'] &&
+ $file_size < $this->options['min_file_size']) {
+ $file->error = $this->get_error_message('min_file_size');
+ return false;
+ }
+ if (is_int($this->options['max_number_of_files']) &&
+ ($this->count_file_objects() >= $this->options['max_number_of_files']) &&
+ // Ignore additional chunks of existing files:
+ !is_file($this->get_upload_path($file->name))) {
+ $file->error = $this->get_error_message('max_number_of_files');
+ return false;
+ }
+ $max_width = @$this->options['max_width'];
+ $max_height = @$this->options['max_height'];
+ $min_width = @$this->options['min_width'];
+ $min_height = @$this->options['min_height'];
+ if (($max_width || $max_height || $min_width || $min_height)
+ && preg_match($this->options['image_file_types'], $file->name)) {
+ list($img_width, $img_height) = $this->get_image_size($uploaded_file);
+ }
+ if (!empty($img_width)) {
+ if ($max_width && $img_width > $max_width) {
+ $file->error = $this->get_error_message('max_width');
+ return false;
+ }
+ if ($max_height && $img_height > $max_height) {
+ $file->error = $this->get_error_message('max_height');
+ return false;
+ }
+ if ($min_width && $img_width < $min_width) {
+ $file->error = $this->get_error_message('min_width');
+ return false;
+ }
+ if ($min_height && $img_height < $min_height) {
+ $file->error = $this->get_error_message('min_height');
+ return false;
+ }
+ }
+ return true;
+ }
+
+ protected function upcount_name_callback($matches) {
+ $index = isset($matches[1]) ? intval($matches[1]) + 1 : 1;
+ $ext = isset($matches[2]) ? $matches[2] : '';
+ return ' ('.$index.')'.$ext;
+ }
+
+ protected function upcount_name($name) {
+ return preg_replace_callback(
+ '/(?:(?: \(([\d]+)\))?(\.[^.]+))?$/',
+ array($this, 'upcount_name_callback'),
+ $name,
+ 1
+ );
+ }
+
+ protected function get_unique_filename($file_path, $name, $size, $type, $error,
+ $index, $content_range) {
+ while(is_dir($this->get_upload_path($name))) {
+ $name = $this->upcount_name($name);
+ }
+ // Keep an existing filename if this is part of a chunked upload:
+ $uploaded_bytes = $this->fix_integer_overflow(intval($content_range[1]));
+ while(is_file($this->get_upload_path($name))) {
+ if ($uploaded_bytes === $this->get_file_size(
+ $this->get_upload_path($name))) {
+ break;
+ }
+ $name = $this->upcount_name($name);
+ }
+ return $name;
+ }
+
+ protected function fix_file_extension($file_path, $name, $size, $type, $error,
+ $index, $content_range) {
+ // Add missing file extension for known image types:
+ if (strpos($name, '.') === false &&
+ preg_match('/^image\/(gif|jpe?g|png)/', $type, $matches)) {
+ $name .= '.'.$matches[1];
+ }
+ if ($this->options['correct_image_extensions'] &&
+ function_exists('exif_imagetype')) {
+ switch(@exif_imagetype($file_path)){
+ case IMAGETYPE_JPEG:
+ $extensions = array('jpg', 'jpeg');
+ break;
+ case IMAGETYPE_PNG:
+ $extensions = array('png');
+ break;
+ case IMAGETYPE_GIF:
+ $extensions = array('gif');
+ break;
+ }
+ // Adjust incorrect image file extensions:
+ if (!empty($extensions)) {
+ $parts = explode('.', $name);
+ $extIndex = count($parts) - 1;
+ $ext = strtolower(@$parts[$extIndex]);
+ if (!in_array($ext, $extensions)) {
+ $parts[$extIndex] = $extensions[0];
+ $name = implode('.', $parts);
+ }
+ }
+ }
+ return $name;
+ }
+
+ protected function trim_file_name($file_path, $name, $size, $type, $error,
+ $index, $content_range) {
+ // Remove path information and dots around the filename, to prevent uploading
+ // into different directories or replacing hidden system files.
+ // Also remove control characters and spaces (\x00..\x20) around the filename:
+ $name = trim(basename(stripslashes($name)), ".\x00..\x20");
+ // Use a timestamp for empty filenames:
+ if (!$name) {
+ $name = str_replace('.', '-', microtime(true));
+ }
+ return $name;
+ }
+
+ protected function get_file_name($file_path, $name, $size, $type, $error,
+ $index, $content_range) {
+ $name = $this->trim_file_name($file_path, $name, $size, $type, $error,
+ $index, $content_range);
+ return $this->get_unique_filename(
+ $file_path,
+ $this->fix_file_extension($file_path, $name, $size, $type, $error,
+ $index, $content_range),
+ $size,
+ $type,
+ $error,
+ $index,
+ $content_range
+ );
+ }
+
+ protected function handle_form_data($file, $index) {
+ // Handle form data, e.g. $_REQUEST['description'][$index]
+ }
+
+ protected function get_scaled_image_file_paths($file_name, $version) {
+ $file_path = $this->get_upload_path($file_name);
+ if (!empty($version)) {
+ $version_dir = $this->get_upload_path(null, $version);
+ if (!is_dir($version_dir)) {
+ mkdir($version_dir, $this->options['mkdir_mode'], true);
+ }
+ $new_file_path = $version_dir.'/'.$file_name;
+ } else {
+ $new_file_path = $file_path;
+ }
+ return array($file_path, $new_file_path);
+ }
+
+ protected function gd_get_image_object($file_path, $func, $no_cache = false) {
+ if (empty($this->image_objects[$file_path]) || $no_cache) {
+ $this->gd_destroy_image_object($file_path);
+ $this->image_objects[$file_path] = $func($file_path);
+ }
+ return $this->image_objects[$file_path];
+ }
+
+ protected function gd_set_image_object($file_path, $image) {
+ $this->gd_destroy_image_object($file_path);
+ $this->image_objects[$file_path] = $image;
+ }
+
+ protected function gd_destroy_image_object($file_path) {
+ $image = (isset($this->image_objects[$file_path])) ? $this->image_objects[$file_path] : null ;
+ return $image && imagedestroy($image);
+ }
+
+ protected function gd_imageflip($image, $mode) {
+ if (function_exists('imageflip')) {
+ return imageflip($image, $mode);
+ }
+ $new_width = $src_width = imagesx($image);
+ $new_height = $src_height = imagesy($image);
+ $new_img = imagecreatetruecolor($new_width, $new_height);
+ $src_x = 0;
+ $src_y = 0;
+ switch ($mode) {
+ case '1': // flip on the horizontal axis
+ $src_y = $new_height - 1;
+ $src_height = -$new_height;
+ break;
+ case '2': // flip on the vertical axis
+ $src_x = $new_width - 1;
+ $src_width = -$new_width;
+ break;
+ case '3': // flip on both axes
+ $src_y = $new_height - 1;
+ $src_height = -$new_height;
+ $src_x = $new_width - 1;
+ $src_width = -$new_width;
+ break;
+ default:
+ return $image;
+ }
+ imagecopyresampled(
+ $new_img,
+ $image,
+ 0,
+ 0,
+ $src_x,
+ $src_y,
+ $new_width,
+ $new_height,
+ $src_width,
+ $src_height
+ );
+ return $new_img;
+ }
+
+ protected function gd_orient_image($file_path, $src_img) {
+ if (!function_exists('exif_read_data')) {
+ return false;
+ }
+ $exif = @exif_read_data($file_path);
+ if ($exif === false) {
+ return false;
+ }
+ $orientation = intval(@$exif['Orientation']);
+ if ($orientation < 2 || $orientation > 8) {
+ return false;
+ }
+ switch ($orientation) {
+ case 2:
+ $new_img = $this->gd_imageflip(
+ $src_img,
+ defined('IMG_FLIP_VERTICAL') ? IMG_FLIP_VERTICAL : 2
+ );
+ break;
+ case 3:
+ $new_img = imagerotate($src_img, 180, 0);
+ break;
+ case 4:
+ $new_img = $this->gd_imageflip(
+ $src_img,
+ defined('IMG_FLIP_HORIZONTAL') ? IMG_FLIP_HORIZONTAL : 1
+ );
+ break;
+ case 5:
+ $tmp_img = $this->gd_imageflip(
+ $src_img,
+ defined('IMG_FLIP_HORIZONTAL') ? IMG_FLIP_HORIZONTAL : 1
+ );
+ $new_img = imagerotate($tmp_img, 270, 0);
+ imagedestroy($tmp_img);
+ break;
+ case 6:
+ $new_img = imagerotate($src_img, 270, 0);
+ break;
+ case 7:
+ $tmp_img = $this->gd_imageflip(
+ $src_img,
+ defined('IMG_FLIP_VERTICAL') ? IMG_FLIP_VERTICAL : 2
+ );
+ $new_img = imagerotate($tmp_img, 270, 0);
+ imagedestroy($tmp_img);
+ break;
+ case 8:
+ $new_img = imagerotate($src_img, 90, 0);
+ break;
+ default:
+ return false;
+ }
+ $this->gd_set_image_object($file_path, $new_img);
+ return true;
+ }
+
+ protected function gd_create_scaled_image($file_name, $version, $options) {
+ if (!function_exists('imagecreatetruecolor')) {
+ error_log('Function not found: imagecreatetruecolor');
+ return false;
+ }
+ list($file_path, $new_file_path) =
+ $this->get_scaled_image_file_paths($file_name, $version);
+ $type = strtolower(substr(strrchr($file_name, '.'), 1));
+ switch ($type) {
+ case 'jpg':
+ case 'jpeg':
+ $src_func = 'imagecreatefromjpeg';
+ $write_func = 'imagejpeg';
+ $image_quality = isset($options['jpeg_quality']) ?
+ $options['jpeg_quality'] : 75;
+ break;
+ case 'gif':
+ $src_func = 'imagecreatefromgif';
+ $write_func = 'imagegif';
+ $image_quality = null;
+ break;
+ case 'png':
+ $src_func = 'imagecreatefrompng';
+ $write_func = 'imagepng';
+ $image_quality = isset($options['png_quality']) ?
+ $options['png_quality'] : 9;
+ break;
+ default:
+ return false;
+ }
+ $src_img = $this->gd_get_image_object(
+ $file_path,
+ $src_func,
+ !empty($options['no_cache'])
+ );
+ $image_oriented = false;
+ if (!empty($options['auto_orient']) && $this->gd_orient_image(
+ $file_path,
+ $src_img
+ )) {
+ $image_oriented = true;
+ $src_img = $this->gd_get_image_object(
+ $file_path,
+ $src_func
+ );
+ }
+ $max_width = $img_width = imagesx($src_img);
+ $max_height = $img_height = imagesy($src_img);
+ if (!empty($options['max_width'])) {
+ $max_width = $options['max_width'];
+ }
+ if (!empty($options['max_height'])) {
+ $max_height = $options['max_height'];
+ }
+ $scale = min(
+ $max_width / $img_width,
+ $max_height / $img_height
+ );
+ if ($scale >= 1) {
+ if ($image_oriented) {
+ return $write_func($src_img, $new_file_path, $image_quality);
+ }
+ if ($file_path !== $new_file_path) {
+ return copy($file_path, $new_file_path);
+ }
+ return true;
+ }
+ if (empty($options['crop'])) {
+ $new_width = $img_width * $scale;
+ $new_height = $img_height * $scale;
+ $dst_x = 0;
+ $dst_y = 0;
+ $new_img = imagecreatetruecolor($new_width, $new_height);
+ } else {
+ if (($img_width / $img_height) >= ($max_width / $max_height)) {
+ $new_width = $img_width / ($img_height / $max_height);
+ $new_height = $max_height;
+ } else {
+ $new_width = $max_width;
+ $new_height = $img_height / ($img_width / $max_width);
+ }
+ $dst_x = 0 - ($new_width - $max_width) / 2;
+ $dst_y = 0 - ($new_height - $max_height) / 2;
+ $new_img = imagecreatetruecolor($max_width, $max_height);
+ }
+ // Handle transparency in GIF and PNG images:
+ switch ($type) {
+ case 'gif':
+ case 'png':
+ imagecolortransparent($new_img, imagecolorallocate($new_img, 0, 0, 0));
+ case 'png':
+ imagealphablending($new_img, false);
+ imagesavealpha($new_img, true);
+ break;
+ }
+ $success = imagecopyresampled(
+ $new_img,
+ $src_img,
+ $dst_x,
+ $dst_y,
+ 0,
+ 0,
+ $new_width,
+ $new_height,
+ $img_width,
+ $img_height
+ ) && $write_func($new_img, $new_file_path, $image_quality);
+ $this->gd_set_image_object($file_path, $new_img);
+ return $success;
+ }
+
+ protected function imagick_get_image_object($file_path, $no_cache = false) {
+ if (empty($this->image_objects[$file_path]) || $no_cache) {
+ $this->imagick_destroy_image_object($file_path);
+ $image = new \Imagick();
+ if (!empty($this->options['imagick_resource_limits'])) {
+ foreach ($this->options['imagick_resource_limits'] as $type => $limit) {
+ $image->setResourceLimit($type, $limit);
+ }
+ }
+ $image->readImage($file_path);
+ $this->image_objects[$file_path] = $image;
+ }
+ return $this->image_objects[$file_path];
+ }
+
+ protected function imagick_set_image_object($file_path, $image) {
+ $this->imagick_destroy_image_object($file_path);
+ $this->image_objects[$file_path] = $image;
+ }
+
+ protected function imagick_destroy_image_object($file_path) {
+ $image = (isset($this->image_objects[$file_path])) ? $this->image_objects[$file_path] : null ;
+ return $image && $image->destroy();
+ }
+
+ protected function imagick_orient_image($image) {
+ $orientation = $image->getImageOrientation();
+ $background = new \ImagickPixel('none');
+ switch ($orientation) {
+ case \imagick::ORIENTATION_TOPRIGHT: // 2
+ $image->flopImage(); // horizontal flop around y-axis
+ break;
+ case \imagick::ORIENTATION_BOTTOMRIGHT: // 3
+ $image->rotateImage($background, 180);
+ break;
+ case \imagick::ORIENTATION_BOTTOMLEFT: // 4
+ $image->flipImage(); // vertical flip around x-axis
+ break;
+ case \imagick::ORIENTATION_LEFTTOP: // 5
+ $image->flopImage(); // horizontal flop around y-axis
+ $image->rotateImage($background, 270);
+ break;
+ case \imagick::ORIENTATION_RIGHTTOP: // 6
+ $image->rotateImage($background, 90);
+ break;
+ case \imagick::ORIENTATION_RIGHTBOTTOM: // 7
+ $image->flipImage(); // vertical flip around x-axis
+ $image->rotateImage($background, 270);
+ break;
+ case \imagick::ORIENTATION_LEFTBOTTOM: // 8
+ $image->rotateImage($background, 270);
+ break;
+ default:
+ return false;
+ }
+ $image->setImageOrientation(\imagick::ORIENTATION_TOPLEFT); // 1
+ return true;
+ }
+
+ protected function imagick_create_scaled_image($file_name, $version, $options) {
+ list($file_path, $new_file_path) =
+ $this->get_scaled_image_file_paths($file_name, $version);
+ $image = $this->imagick_get_image_object(
+ $file_path,
+ !empty($options['no_cache'])
+ );
+ if ($image->getImageFormat() === 'GIF') {
+ // Handle animated GIFs:
+ $images = $image->coalesceImages();
+ foreach ($images as $frame) {
+ $image = $frame;
+ $this->imagick_set_image_object($file_name, $image);
+ break;
+ }
+ }
+ $image_oriented = false;
+ if (!empty($options['auto_orient'])) {
+ $image_oriented = $this->imagick_orient_image($image);
+ }
+ $new_width = $max_width = $img_width = $image->getImageWidth();
+ $new_height = $max_height = $img_height = $image->getImageHeight();
+ if (!empty($options['max_width'])) {
+ $new_width = $max_width = $options['max_width'];
+ }
+ if (!empty($options['max_height'])) {
+ $new_height = $max_height = $options['max_height'];
+ }
+ if (!($image_oriented || $max_width < $img_width || $max_height < $img_height)) {
+ if ($file_path !== $new_file_path) {
+ return copy($file_path, $new_file_path);
+ }
+ return true;
+ }
+ $crop = !empty($options['crop']);
+ if ($crop) {
+ $x = 0;
+ $y = 0;
+ if (($img_width / $img_height) >= ($max_width / $max_height)) {
+ $new_width = 0; // Enables proportional scaling based on max_height
+ $x = ($img_width / ($img_height / $max_height) - $max_width) / 2;
+ } else {
+ $new_height = 0; // Enables proportional scaling based on max_width
+ $y = ($img_height / ($img_width / $max_width) - $max_height) / 2;
+ }
+ }
+ $success = $image->resizeImage(
+ $new_width,
+ $new_height,
+ isset($options['filter']) ? $options['filter'] : \imagick::FILTER_LANCZOS,
+ isset($options['blur']) ? $options['blur'] : 1,
+ $new_width && $new_height // fit image into constraints if not to be cropped
+ );
+ if ($success && $crop) {
+ $success = $image->cropImage(
+ $max_width,
+ $max_height,
+ $x,
+ $y
+ );
+ if ($success) {
+ $success = $image->setImagePage($max_width, $max_height, 0, 0);
+ }
+ }
+ $type = strtolower(substr(strrchr($file_name, '.'), 1));
+ switch ($type) {
+ case 'jpg':
+ case 'jpeg':
+ if (!empty($options['jpeg_quality'])) {
+ $image->setImageCompression(\imagick::COMPRESSION_JPEG);
+ $image->setImageCompressionQuality($options['jpeg_quality']);
+ }
+ break;
+ }
+ if (!empty($options['strip'])) {
+ $image->stripImage();
+ }
+ return $success && $image->writeImage($new_file_path);
+ }
+
+ protected function imagemagick_create_scaled_image($file_name, $version, $options) {
+ list($file_path, $new_file_path) =
+ $this->get_scaled_image_file_paths($file_name, $version);
+ $resize = @$options['max_width']
+ .(empty($options['max_height']) ? '' : 'X'.$options['max_height']);
+ if (!$resize && empty($options['auto_orient'])) {
+ if ($file_path !== $new_file_path) {
+ return copy($file_path, $new_file_path);
+ }
+ return true;
+ }
+ $cmd = $this->options['convert_bin'];
+ if (!empty($this->options['convert_params'])) {
+ $cmd .= ' '.$this->options['convert_params'];
+ }
+ $cmd .= ' '.escapeshellarg($file_path);
+ if (!empty($options['auto_orient'])) {
+ $cmd .= ' -auto-orient';
+ }
+ if ($resize) {
+ // Handle animated GIFs:
+ $cmd .= ' -coalesce';
+ if (empty($options['crop'])) {
+ $cmd .= ' -resize '.escapeshellarg($resize.'>');
+ } else {
+ $cmd .= ' -resize '.escapeshellarg($resize.'^');
+ $cmd .= ' -gravity center';
+ $cmd .= ' -crop '.escapeshellarg($resize.'+0+0');
+ }
+ // Make sure the page dimensions are correct (fixes offsets of animated GIFs):
+ $cmd .= ' +repage';
+ }
+ if (!empty($options['convert_params'])) {
+ $cmd .= ' '.$options['convert_params'];
+ }
+ $cmd .= ' '.escapeshellarg($new_file_path);
+ exec($cmd, $output, $error);
+ if ($error) {
+ error_log(implode('\n', $output));
+ return false;
+ }
+ return true;
+ }
+
+ protected function get_image_size($file_path) {
+ if ($this->options['image_library']) {
+ if (extension_loaded('imagick')) {
+ $image = new \Imagick();
+ try {
+ if (@$image->pingImage($file_path)) {
+ $dimensions = array($image->getImageWidth(), $image->getImageHeight());
+ $image->destroy();
+ return $dimensions;
+ }
+ return false;
+ } catch (Exception $e) {
+ error_log($e->getMessage());
+ }
+ }
+ if ($this->options['image_library'] === 2) {
+ $cmd = $this->options['identify_bin'];
+ $cmd .= ' -ping '.escapeshellarg($file_path);
+ exec($cmd, $output, $error);
+ if (!$error && !empty($output)) {
+ // image.jpg JPEG 1920x1080 1920x1080+0+0 8-bit sRGB 465KB 0.000u 0:00.000
+ $infos = preg_split('/\s+/', $output[0]);
+ $dimensions = preg_split('/x/', $infos[2]);
+ return $dimensions;
+ }
+ return false;
+ }
+ }
+ if (!function_exists('getimagesize')) {
+ error_log('Function not found: getimagesize');
+ return false;
+ }
+ return @getimagesize($file_path);
+ }
+
+ protected function create_scaled_image($file_name, $version, $options) {
+ if ($this->options['image_library'] === 2) {
+ return $this->imagemagick_create_scaled_image($file_name, $version, $options);
+ }
+ if ($this->options['image_library'] && extension_loaded('imagick')) {
+ return $this->imagick_create_scaled_image($file_name, $version, $options);
+ }
+ return $this->gd_create_scaled_image($file_name, $version, $options);
+ }
+
+ protected function destroy_image_object($file_path) {
+ if ($this->options['image_library'] && extension_loaded('imagick')) {
+ return $this->imagick_destroy_image_object($file_path);
+ }
+ }
+
+ protected function is_valid_image_file($file_path) {
+ if (!preg_match($this->options['image_file_types'], $file_path)) {
+ return false;
+ }
+ if (function_exists('exif_imagetype')) {
+ return @exif_imagetype($file_path);
+ }
+ $image_info = $this->get_image_size($file_path);
+ return $image_info && $image_info[0] && $image_info[1];
+ }
+
+ protected function handle_image_file($file_path, $file) {
+ $failed_versions = array();
+ foreach($this->options['image_versions'] as $version => $options) {
+ if ($this->create_scaled_image($file->name, $version, $options)) {
+ if (!empty($version)) {
+ $file->{$version.'Url'} = $this->get_download_url(
+ $file->name,
+ $version
+ );
+ } else {
+ $file->size = $this->get_file_size($file_path, true);
+ }
+ } else {
+ $failed_versions[] = $version ? $version : 'original';
+ }
+ }
+ if (count($failed_versions)) {
+ $file->error = $this->get_error_message('image_resize')
+ .' ('.implode($failed_versions,', ').')';
+ }
+ // Free memory:
+ $this->destroy_image_object($file_path);
+ }
+
+ protected function handle_file_upload($uploaded_file, $name, $size, $type, $error,
+ $index = null, $content_range = null) {
+ $file = new \stdClass();
+ $file->name = $this->get_file_name($uploaded_file, $name, $size, $type, $error,
+ $index, $content_range);
+ $file->size = $this->fix_integer_overflow(intval($size));
+ $file->type = $type;
+ if ($this->validate($uploaded_file, $file, $error, $index)) {
+ $this->handle_form_data($file, $index);
+ $upload_dir = $this->get_upload_path();
+ if (!is_dir($upload_dir)) {
+ mkdir($upload_dir, $this->options['mkdir_mode'], true);
+ }
+ $file_path = $this->get_upload_path($file->name);
+ $append_file = $content_range && is_file($file_path) &&
+ $file->size > $this->get_file_size($file_path);
+ if ($uploaded_file && is_uploaded_file($uploaded_file)) {
+ // multipart/formdata uploads (POST method uploads)
+ if ($append_file) {
+ file_put_contents(
+ $file_path,
+ fopen($uploaded_file, 'r'),
+ FILE_APPEND
+ );
+ } else {
+ move_uploaded_file($uploaded_file, $file_path);
+ }
+ } else {
+ // Non-multipart uploads (PUT method support)
+ file_put_contents(
+ $file_path,
+ fopen('php://input', 'r'),
+ $append_file ? FILE_APPEND : 0
+ );
+ }
+ $file_size = $this->get_file_size($file_path, $append_file);
+ if ($file_size === $file->size) {
+ $file->url = $this->get_download_url($file->name);
+ if ($this->is_valid_image_file($file_path)) {
+ $this->handle_image_file($file_path, $file);
+ }
+ } else {
+ $file->size = $file_size;
+ if (!$content_range && $this->options['discard_aborted_uploads']) {
+ unlink($file_path);
+ $file->error = $this->get_error_message('abort');
+ }
+ }
+ $this->set_additional_file_properties($file);
+ }
+ return $file;
+ }
+
+ protected function readfile($file_path) {
+ $file_size = $this->get_file_size($file_path);
+ $chunk_size = $this->options['readfile_chunk_size'];
+ if ($chunk_size && $file_size > $chunk_size) {
+ $handle = fopen($file_path, 'rb');
+ while (!feof($handle)) {
+ echo fread($handle, $chunk_size);
+ @ob_flush();
+ @flush();
+ }
+ fclose($handle);
+ return $file_size;
+ }
+ return readfile($file_path);
+ }
+
+ protected function body($str) {
+ echo $str;
+ }
+
+ protected function header($str) {
+ header($str);
+ }
+
+ protected function get_server_var($id) {
+ return isset($_SERVER[$id]) ? $_SERVER[$id] : '';
+ }
+
+ protected function generate_response($content, $print_response = true) {
+ if ($print_response) {
+ $json = json_encode($content);
+ $redirect = isset($_REQUEST['redirect']) ?
+ stripslashes($_REQUEST['redirect']) : null;
+ if ($redirect) {
+ $this->header('Location: '.sprintf($redirect, rawurlencode($json)));
+ return;
+ }
+ $this->head();
+ if ($this->get_server_var('HTTP_CONTENT_RANGE')) {
+ $files = isset($content[$this->options['param_name']]) ?
+ $content[$this->options['param_name']] : null;
+ if ($files && is_array($files) && is_object($files[0]) && $files[0]->size) {
+ $this->header('Range: 0-'.(
+ $this->fix_integer_overflow(intval($files[0]->size)) - 1
+ ));
+ }
+ }
+ $this->body($json);
+ }
+ return $content;
+ }
+
+ protected function get_version_param() {
+ return isset($_GET['version']) ? basename(stripslashes($_GET['version'])) : null;
+ }
+
+ protected function get_singular_param_name() {
+ return substr($this->options['param_name'], 0, -1);
+ }
+
+ protected function get_file_name_param() {
+ $name = $this->get_singular_param_name();
+ return isset($_REQUEST[$name]) ? basename(stripslashes($_REQUEST[$name])) : null;
+ }
+
+ protected function get_file_names_params() {
+ $params = isset($_REQUEST[$this->options['param_name']]) ?
+ $_REQUEST[$this->options['param_name']] : array();
+ foreach ($params as $key => $value) {
+ $params[$key] = basename(stripslashes($value));
+ }
+ return $params;
+ }
+
+ protected function get_file_type($file_path) {
+ switch (strtolower(pathinfo($file_path, PATHINFO_EXTENSION))) {
+ case 'jpeg':
+ case 'jpg':
+ return 'image/jpeg';
+ case 'png':
+ return 'image/png';
+ case 'gif':
+ return 'image/gif';
+ default:
+ return '';
+ }
+ }
+
+ protected function download() {
+ switch ($this->options['download_via_php']) {
+ case 1:
+ $redirect_header = null;
+ break;
+ case 2:
+ $redirect_header = 'X-Sendfile';
+ break;
+ case 3:
+ $redirect_header = 'X-Accel-Redirect';
+ break;
+ default:
+ return $this->header('HTTP/1.1 403 Forbidden');
+ }
+ $file_name = $this->get_file_name_param();
+ if (!$this->is_valid_file_object($file_name)) {
+ return $this->header('HTTP/1.1 404 Not Found');
+ }
+ if ($redirect_header) {
+ return $this->header(
+ $redirect_header.': '.$this->get_download_url(
+ $file_name,
+ $this->get_version_param(),
+ true
+ )
+ );
+ }
+ $file_path = $this->get_upload_path($file_name, $this->get_version_param());
+ // Prevent browsers from MIME-sniffing the content-type:
+ $this->header('X-Content-Type-Options: nosniff');
+ if (!preg_match($this->options['inline_file_types'], $file_name)) {
+ $this->header('Content-Type: application/octet-stream');
+ $this->header('Content-Disposition: attachment; filename="'.$file_name.'"');
+ } else {
+ $this->header('Content-Type: '.$this->get_file_type($file_path));
+ $this->header('Content-Disposition: inline; filename="'.$file_name.'"');
+ }
+ $this->header('Content-Length: '.$this->get_file_size($file_path));
+ $this->header('Last-Modified: '.gmdate('D, d M Y H:i:s T', filemtime($file_path)));
+ $this->readfile($file_path);
+ }
+
+ protected function send_content_type_header() {
+ $this->header('Vary: Accept');
+ if (strpos($this->get_server_var('HTTP_ACCEPT'), 'application/json') !== false) {
+ $this->header('Content-type: application/json');
+ } else {
+ $this->header('Content-type: text/plain');
+ }
+ }
+
+ protected function send_access_control_headers() {
+ $this->header('Access-Control-Allow-Origin: '.$this->options['access_control_allow_origin']);
+ $this->header('Access-Control-Allow-Credentials: '
+ .($this->options['access_control_allow_credentials'] ? 'true' : 'false'));
+ $this->header('Access-Control-Allow-Methods: '
+ .implode(', ', $this->options['access_control_allow_methods']));
+ $this->header('Access-Control-Allow-Headers: '
+ .implode(', ', $this->options['access_control_allow_headers']));
+ }
+
+ public function head() {
+ $this->header('Pragma: no-cache');
+ $this->header('Cache-Control: no-store, no-cache, must-revalidate');
+ $this->header('Content-Disposition: inline; filename="files.json"');
+ // Prevent Internet Explorer from MIME-sniffing the content-type:
+ $this->header('X-Content-Type-Options: nosniff');
+ if ($this->options['access_control_allow_origin']) {
+ $this->send_access_control_headers();
+ }
+ $this->send_content_type_header();
+ }
+
+ public function get($print_response = true) {
+ if ($print_response && isset($_GET['download'])) {
+ return $this->download();
+ }
+ $file_name = $this->get_file_name_param();
+ if ($file_name) {
+ $response = array(
+ $this->get_singular_param_name() => $this->get_file_object($file_name)
+ );
+ } else {
+ $response = array(
+ $this->options['param_name'] => $this->get_file_objects()
+ );
+ }
+ return $this->generate_response($response, $print_response);
+ }
+
+ public function post($print_response = true) {
+ if (isset($_REQUEST['_method']) && $_REQUEST['_method'] === 'DELETE') {
+ return $this->delete($print_response);
+ }
+ $upload = isset($_FILES[$this->options['param_name']]) ?
+ $_FILES[$this->options['param_name']] : null;
+ // Parse the Content-Disposition header, if available:
+ $file_name = $this->get_server_var('HTTP_CONTENT_DISPOSITION') ?
+ rawurldecode(preg_replace(
+ '/(^[^"]+")|("$)/',
+ '',
+ $this->get_server_var('HTTP_CONTENT_DISPOSITION')
+ )) : null;
+ // Parse the Content-Range header, which has the following form:
+ // Content-Range: bytes 0-524287/2000000
+ $content_range = $this->get_server_var('HTTP_CONTENT_RANGE') ?
+ preg_split('/[^0-9]+/', $this->get_server_var('HTTP_CONTENT_RANGE')) : null;
+ $size = $content_range ? $content_range[3] : null;
+ $files = array();
+ if ($upload && is_array($upload['tmp_name'])) {
+ // param_name is an array identifier like "files[]",
+ // $_FILES is a multi-dimensional array:
+ foreach ($upload['tmp_name'] as $index => $value) {
+ $files[] = $this->handle_file_upload(
+ $upload['tmp_name'][$index],
+ $file_name ? $file_name : $upload['name'][$index],
+ $size ? $size : $upload['size'][$index],
+ $upload['type'][$index],
+ $upload['error'][$index],
+ $index,
+ $content_range
+ );
+ }
+ } else {
+ // param_name is a single object identifier like "file",
+ // $_FILES is a one-dimensional array:
+ $files[] = $this->handle_file_upload(
+ isset($upload['tmp_name']) ? $upload['tmp_name'] : null,
+ $file_name ? $file_name : (isset($upload['name']) ?
+ $upload['name'] : null),
+ $size ? $size : (isset($upload['size']) ?
+ $upload['size'] : $this->get_server_var('CONTENT_LENGTH')),
+ isset($upload['type']) ?
+ $upload['type'] : $this->get_server_var('CONTENT_TYPE'),
+ isset($upload['error']) ? $upload['error'] : null,
+ null,
+ $content_range
+ );
+ }
+ return $this->generate_response(
+ array($this->options['param_name'] => $files),
+ $print_response
+ );
+ }
+
+ public function delete($print_response = true) {
+ $file_names = $this->get_file_names_params();
+ if (empty($file_names)) {
+ $file_names = array($this->get_file_name_param());
+ }
+ $response = array();
+ foreach($file_names as $file_name) {
+ $file_path = $this->get_upload_path($file_name);
+ $success = is_file($file_path) && $file_name[0] !== '.' && unlink($file_path);
+ if ($success) {
+ foreach($this->options['image_versions'] as $version => $options) {
+ if (!empty($version)) {
+ $file = $this->get_upload_path($file_name, $version);
+ if (is_file($file)) {
+ unlink($file);
+ }
+ }
+ }
+ }
+ $response[$file_name] = $success;
+ }
+ return $this->generate_response($response, $print_response);
+ }
+
+}
diff --git a/library/blueimp_upload/server/php/files/.gitignore b/library/blueimp_upload/server/php/files/.gitignore
new file mode 100644
index 000000000..e24a60fae
--- /dev/null
+++ b/library/blueimp_upload/server/php/files/.gitignore
@@ -0,0 +1,3 @@
+*
+!.gitignore
+!.htaccess
diff --git a/library/blueimp_upload/server/php/files/.htaccess b/library/blueimp_upload/server/php/files/.htaccess
new file mode 100644
index 000000000..56689f0bb
--- /dev/null
+++ b/library/blueimp_upload/server/php/files/.htaccess
@@ -0,0 +1,18 @@
+# The following directives force the content-type application/octet-stream
+# and force browsers to display a download dialog for non-image files.
+# This prevents the execution of script files in the context of the website:
+ForceType application/octet-stream
+Header set Content-Disposition attachment
+<FilesMatch "(?i)\.(gif|jpe?g|png)$">
+ ForceType none
+ Header unset Content-Disposition
+</FilesMatch>
+
+# The following directive prevents browsers from MIME-sniffing the content-type.
+# This is an important complement to the ForceType directive above:
+Header set X-Content-Type-Options nosniff
+
+# Uncomment the following lines to prevent unauthorized download of files:
+#AuthName "Authorization required"
+#AuthType Basic
+#require valid-user
diff --git a/library/blueimp_upload/server/php/index.php b/library/blueimp_upload/server/php/index.php
new file mode 100644
index 000000000..3ae1295ef
--- /dev/null
+++ b/library/blueimp_upload/server/php/index.php
@@ -0,0 +1,15 @@
+<?php
+/*
+ * jQuery File Upload Plugin PHP Example 5.14
+ * https://github.com/blueimp/jQuery-File-Upload
+ *
+ * Copyright 2010, Sebastian Tschan
+ * https://blueimp.net
+ *
+ * Licensed under the MIT license:
+ * http://www.opensource.org/licenses/MIT
+ */
+
+error_reporting(E_ALL | E_STRICT);
+require('UploadHandler.php');
+$upload_handler = new UploadHandler();
diff --git a/library/blueimp_upload/test/index.html b/library/blueimp_upload/test/index.html
new file mode 100644
index 000000000..8779a9a8c
--- /dev/null
+++ b/library/blueimp_upload/test/index.html
@@ -0,0 +1,172 @@
+<!DOCTYPE HTML>
+<!--
+/*
+ * jQuery File Upload Plugin Test 9.1.0
+ * https://github.com/blueimp/jQuery-File-Upload
+ *
+ * Copyright 2010, Sebastian Tschan
+ * https://blueimp.net
+ *
+ * Licensed under the MIT license:
+ * http://www.opensource.org/licenses/MIT
+ */
+-->
+<html lang="en">
+<head>
+<!-- Force latest IE rendering engine or ChromeFrame if installed -->
+<!--[if IE]>
+<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
+<![endif]-->
+<meta charset="utf-8">
+<title>jQuery File Upload Plugin Test</title>
+<meta name="viewport" content="width=device-width, initial-scale=1.0">
+<link rel="stylesheet" href="http://codeorigin.jquery.com/qunit/qunit-1.14.0.css">
+</head>
+<body>
+<h1 id="qunit-header">jQuery File Upload Plugin Test</h1>
+<h2 id="qunit-banner"></h2>
+<div id="qunit-testrunner-toolbar"></div>
+<h2 id="qunit-userAgent"></h2>
+<ol id="qunit-tests"></ol>
+<div id="qunit-fixture">
+ <!-- The file upload form used as target for the file upload widget -->
+ <form id="fileupload" action="../server/php/" method="POST" enctype="multipart/form-data">
+ <!-- The fileupload-buttonbar contains buttons to add/delete files and start/cancel the upload -->
+ <div class="row fileupload-buttonbar">
+ <div class="col-lg-7">
+ <!-- The fileinput-button span is used to style the file input field as button -->
+ <span class="btn btn-success fileinput-button">
+ <i class="icon-plus icon-white"></i>
+ <span>Add files...</span>
+ <input type="file" name="files[]" multiple>
+ </span>
+ <button type="submit" class="btn btn-primary start">
+ <i class="icon-upload icon-white"></i>
+ <span>Start upload</span>
+ </button>
+ <button type="reset" class="btn btn-warning cancel">
+ <i class="icon-ban-circle icon-white"></i>
+ <span>Cancel upload</span>
+ </button>
+ <button type="button" class="btn btn-danger delete">
+ <i class="icon-trash icon-white"></i>
+ <span>Delete</span>
+ </button>
+ <input type="checkbox" class="toggle">
+ <!-- The global file processing state -->
+ <span class="fileupload-process"></span>
+ </div>
+ <!-- The global progress state -->
+ <div class="col-lg-5 fileupload-progress">
+ <!-- The global progress bar -->
+ <div class="progress progress-striped active" role="progressbar" aria-valuemin="0" aria-valuemax="100">
+ <div class="progress-bar progress-bar-success" style="width:0%;"></div>
+ </div>
+ <!-- The extended global progress state -->
+ <div class="progress-extended">&nbsp;</div>
+ </div>
+ </div>
+ <!-- The table listing the files available for upload/download -->
+ <table role="presentation" class="table table-striped"><tbody class="files"></tbody></table>
+ </form>
+</div>
+<!-- The template to display files available for upload -->
+<script id="template-upload" type="text/x-tmpl">
+{% for (var i=0, file; file=o.files[i]; i++) { %}
+ <tr class="template-upload">
+ <td>
+ <span class="preview"></span>
+ </td>
+ <td>
+ <p class="name">{%=file.name%}</p>
+ <strong class="error text-danger"></strong>
+ </td>
+ <td>
+ <p class="size">Processing...</p>
+ <div class="progress progress-striped active" role="progressbar" aria-valuemin="0" aria-valuemax="100" aria-valuenow="0"><div class="progress-bar progress-bar-success" style="width:0%;"></div></div>
+ </td>
+ <td>
+ {% if (!i && !o.options.autoUpload) { %}
+ <button class="btn btn-primary start" disabled>
+ <i class="glyphicon glyphicon-upload"></i>
+ <span>Start</span>
+ </button>
+ {% } %}
+ {% if (!i) { %}
+ <button class="btn btn-warning cancel">
+ <i class="glyphicon glyphicon-ban-circle"></i>
+ <span>Cancel</span>
+ </button>
+ {% } %}
+ </td>
+ </tr>
+{% } %}
+</script>
+<!-- The template to display files available for download -->
+<script id="template-download" type="text/x-tmpl">
+{% for (var i=0, file; file=o.files[i]; i++) { %}
+ <tr class="template-download">
+ <td>
+ <span class="preview">
+ {% if (file.thumbnailUrl) { %}
+ <a href="{%=file.url%}" title="{%=file.name%}" download="{%=file.name%}" data-gallery><img src="{%=file.thumbnailUrl%}"></a>
+ {% } %}
+ </span>
+ </td>
+ <td>
+ <p class="name">
+ {% if (file.url) { %}
+ <a href="{%=file.url%}" title="{%=file.name%}" download="{%=file.name%}" {%=file.thumbnailUrl?'data-gallery':''%}>{%=file.name%}</a>
+ {% } else { %}
+ <span>{%=file.name%}</span>
+ {% } %}
+ </p>
+ {% if (file.error) { %}
+ <div><span class="label label-danger">Error</span> {%=file.error%}</div>
+ {% } %}
+ </td>
+ <td>
+ <span class="size">{%=o.formatFileSize(file.size)%}</span>
+ </td>
+ <td>
+ {% if (file.deleteUrl) { %}
+ <button class="btn btn-danger delete" data-type="{%=file.deleteType%}" data-url="{%=file.deleteUrl%}"{% if (file.deleteWithCredentials) { %} data-xhr-fields='{"withCredentials":true}'{% } %}>
+ <i class="glyphicon glyphicon-trash"></i>
+ <span>Delete</span>
+ </button>
+ <input type="checkbox" name="delete" value="1" class="toggle">
+ {% } else { %}
+ <button class="btn btn-warning cancel">
+ <i class="glyphicon glyphicon-ban-circle"></i>
+ <span>Cancel</span>
+ </button>
+ {% } %}
+ </td>
+ </tr>
+{% } %}
+</script>
+<script src="//ajax.googleapis.com/ajax/libs/jquery/1.11.0/jquery.min.js"></script>
+<script src="../js/vendor/jquery.ui.widget.js"></script>
+<script src="//blueimp.github.io/JavaScript-Templates/js/tmpl.min.js"></script>
+<script src="//blueimp.github.io/JavaScript-Load-Image/js/load-image.all.min.js"></script>
+<script src="//blueimp.github.io/JavaScript-Canvas-to-Blob/js/canvas-to-blob.min.js"></script>
+<script src="../js/jquery.iframe-transport.js"></script>
+<script src="../js/jquery.fileupload.js"></script>
+<script>
+/* global window, $ */
+window.testBasicWidget = $.blueimp.fileupload;
+</script>
+<script src="../js/jquery.fileupload-process.js"></script>
+<script src="../js/jquery.fileupload-image.js"></script>
+<script src="../js/jquery.fileupload-audio.js"></script>
+<script src="../js/jquery.fileupload-video.js"></script>
+<script src="../js/jquery.fileupload-validate.js"></script>
+<script src="../js/jquery.fileupload-ui.js"></script>
+<script>
+/* global window, $ */
+window.testUIWidget = $.blueimp.fileupload;
+</script>
+<script src="//code.jquery.com/qunit/qunit-1.15.0.js"></script>
+<script src="test.js"></script>
+</body>
+</html>
diff --git a/library/blueimp_upload/test/test.js b/library/blueimp_upload/test/test.js
new file mode 100644
index 000000000..72d08d99e
--- /dev/null
+++ b/library/blueimp_upload/test/test.js
@@ -0,0 +1,1288 @@
+/*
+ * jQuery File Upload Plugin Test 9.4.0
+ * https://github.com/blueimp/jQuery-File-Upload
+ *
+ * Copyright 2010, Sebastian Tschan
+ * https://blueimp.net
+ *
+ * Licensed under the MIT license:
+ * http://www.opensource.org/licenses/MIT
+ */
+
+/* global $, QUnit, window, document, expect, module, test, asyncTest, start, ok, strictEqual, notStrictEqual */
+
+$(function () {
+ // jshint nomen:false
+ 'use strict';
+
+ QUnit.done = function () {
+ // Delete all uploaded files:
+ var url = $('#fileupload').prop('action');
+ $.getJSON(url, function (result) {
+ $.each(result.files, function (index, file) {
+ $.ajax({
+ url: url + '?file=' + encodeURIComponent(file.name),
+ type: 'DELETE'
+ });
+ });
+ });
+ };
+
+ var lifecycle = {
+ setup: function () {
+ // Set the .fileupload method to the basic widget method:
+ $.widget('blueimp.fileupload', window.testBasicWidget, {});
+ },
+ teardown: function () {
+ // Remove all remaining event listeners:
+ $(document).unbind();
+ }
+ },
+ lifecycleUI = {
+ setup: function () {
+ // Set the .fileupload method to the UI widget method:
+ $.widget('blueimp.fileupload', window.testUIWidget, {});
+ },
+ teardown: function () {
+ // Remove all remaining event listeners:
+ $(document).unbind();
+ }
+ };
+
+ module('Initialization', lifecycle);
+
+ test('Widget initialization', function () {
+ var fu = $('#fileupload').fileupload();
+ ok(fu.data('blueimp-fileupload') || fu.data('fileupload'));
+ });
+
+ test('Data attribute options', function () {
+ $('#fileupload').attr('data-url', 'http://example.org');
+ $('#fileupload').fileupload();
+ strictEqual(
+ $('#fileupload').fileupload('option', 'url'),
+ 'http://example.org'
+ );
+ });
+
+ test('File input initialization', function () {
+ var fu = $('#fileupload').fileupload();
+ ok(
+ fu.fileupload('option', 'fileInput').length,
+ 'File input field inside of the widget'
+ );
+ ok(
+ fu.fileupload('option', 'fileInput').length,
+ 'Widget element as file input field'
+ );
+ });
+
+ test('Drop zone initialization', function () {
+ ok($('#fileupload').fileupload()
+ .fileupload('option', 'dropZone').length);
+ });
+
+ test('Paste zone initialization', function () {
+ ok($('#fileupload').fileupload()
+ .fileupload('option', 'pasteZone').length);
+ });
+
+ test('Event listeners initialization', function () {
+ expect(
+ $.support.xhrFormDataFileUpload ? 4 : 1
+ );
+ var eo = {
+ originalEvent: {
+ dataTransfer: {files: [{}], types: ['Files']},
+ clipboardData: {items: [{}]}
+ }
+ },
+ fu = $('#fileupload').fileupload({
+ dragover: function () {
+ ok(true, 'Triggers dragover callback');
+ return false;
+ },
+ drop: function () {
+ ok(true, 'Triggers drop callback');
+ return false;
+ },
+ paste: function () {
+ ok(true, 'Triggers paste callback');
+ return false;
+ },
+ change: function () {
+ ok(true, 'Triggers change callback');
+ return false;
+ }
+ }),
+ fileInput = fu.fileupload('option', 'fileInput'),
+ dropZone = fu.fileupload('option', 'dropZone'),
+ pasteZone = fu.fileupload('option', 'pasteZone');
+ fileInput.trigger($.Event('change', eo));
+ dropZone.trigger($.Event('dragover', eo));
+ dropZone.trigger($.Event('drop', eo));
+ pasteZone.trigger($.Event('paste', eo));
+ });
+
+ module('API', lifecycle);
+
+ test('destroy', function () {
+ expect(4);
+ var eo = {
+ originalEvent: {
+ dataTransfer: {files: [{}], types: ['Files']},
+ clipboardData: {items: [{}]}
+ }
+ },
+ options = {
+ dragover: function () {
+ ok(true, 'Triggers dragover callback');
+ return false;
+ },
+ drop: function () {
+ ok(true, 'Triggers drop callback');
+ return false;
+ },
+ paste: function () {
+ ok(true, 'Triggers paste callback');
+ return false;
+ },
+ change: function () {
+ ok(true, 'Triggers change callback');
+ return false;
+ }
+ },
+ fu = $('#fileupload').fileupload(options),
+ fileInput = fu.fileupload('option', 'fileInput'),
+ dropZone = fu.fileupload('option', 'dropZone'),
+ pasteZone = fu.fileupload('option', 'pasteZone');
+ dropZone.bind('dragover', options.dragover);
+ dropZone.bind('drop', options.drop);
+ pasteZone.bind('paste', options.paste);
+ fileInput.bind('change', options.change);
+ fu.fileupload('destroy');
+ fileInput.trigger($.Event('change', eo));
+ dropZone.trigger($.Event('dragover', eo));
+ dropZone.trigger($.Event('drop', eo));
+ pasteZone.trigger($.Event('paste', eo));
+ });
+
+ test('disable/enable', function () {
+ expect(
+ $.support.xhrFormDataFileUpload ? 4 : 1
+ );
+ var eo = {
+ originalEvent: {
+ dataTransfer: {files: [{}], types: ['Files']},
+ clipboardData: {items: [{}]}
+ }
+ },
+ fu = $('#fileupload').fileupload({
+ dragover: function () {
+ ok(true, 'Triggers dragover callback');
+ return false;
+ },
+ drop: function () {
+ ok(true, 'Triggers drop callback');
+ return false;
+ },
+ paste: function () {
+ ok(true, 'Triggers paste callback');
+ return false;
+ },
+ change: function () {
+ ok(true, 'Triggers change callback');
+ return false;
+ }
+ }),
+ fileInput = fu.fileupload('option', 'fileInput'),
+ dropZone = fu.fileupload('option', 'dropZone'),
+ pasteZone = fu.fileupload('option', 'pasteZone');
+ fu.fileupload('disable');
+ fileInput.trigger($.Event('change', eo));
+ dropZone.trigger($.Event('dragover', eo));
+ dropZone.trigger($.Event('drop', eo));
+ pasteZone.trigger($.Event('paste', eo));
+ fu.fileupload('enable');
+ fileInput.trigger($.Event('change', eo));
+ dropZone.trigger($.Event('dragover', eo));
+ dropZone.trigger($.Event('drop', eo));
+ pasteZone.trigger($.Event('paste', eo));
+ });
+
+ test('option', function () {
+ expect(
+ $.support.xhrFormDataFileUpload ? 10 : 7
+ );
+ var eo = {
+ originalEvent: {
+ dataTransfer: {files: [{}], types: ['Files']},
+ clipboardData: {items: [{}]}
+ }
+ },
+ fu = $('#fileupload').fileupload({
+ dragover: function () {
+ ok(true, 'Triggers dragover callback');
+ return false;
+ },
+ drop: function () {
+ ok(true, 'Triggers drop callback');
+ return false;
+ },
+ paste: function () {
+ ok(true, 'Triggers paste callback');
+ return false;
+ },
+ change: function () {
+ ok(true, 'Triggers change callback');
+ return false;
+ }
+ }),
+ fileInput = fu.fileupload('option', 'fileInput'),
+ dropZone = fu.fileupload('option', 'dropZone'),
+ pasteZone = fu.fileupload('option', 'pasteZone');
+ fu.fileupload('option', 'fileInput', null);
+ fu.fileupload('option', 'dropZone', null);
+ fu.fileupload('option', 'pasteZone', null);
+ fileInput.trigger($.Event('change', eo));
+ dropZone.trigger($.Event('dragover', eo));
+ dropZone.trigger($.Event('drop', eo));
+ pasteZone.trigger($.Event('paste', eo));
+ fu.fileupload('option', 'dropZone', 'body');
+ strictEqual(
+ fu.fileupload('option', 'dropZone')[0],
+ document.body,
+ 'Allow a query string as parameter for the dropZone option'
+ );
+ fu.fileupload('option', 'dropZone', document);
+ strictEqual(
+ fu.fileupload('option', 'dropZone')[0],
+ document,
+ 'Allow a document element as parameter for the dropZone option'
+ );
+ fu.fileupload('option', 'pasteZone', 'body');
+ strictEqual(
+ fu.fileupload('option', 'pasteZone')[0],
+ document.body,
+ 'Allow a query string as parameter for the pasteZone option'
+ );
+ fu.fileupload('option', 'pasteZone', document);
+ strictEqual(
+ fu.fileupload('option', 'pasteZone')[0],
+ document,
+ 'Allow a document element as parameter for the pasteZone option'
+ );
+ fu.fileupload('option', 'fileInput', ':file');
+ strictEqual(
+ fu.fileupload('option', 'fileInput')[0],
+ $(':file')[0],
+ 'Allow a query string as parameter for the fileInput option'
+ );
+ fu.fileupload('option', 'fileInput', $(':file')[0]);
+ strictEqual(
+ fu.fileupload('option', 'fileInput')[0],
+ $(':file')[0],
+ 'Allow a document element as parameter for the fileInput option'
+ );
+ fu.fileupload('option', 'fileInput', fileInput);
+ fu.fileupload('option', 'dropZone', dropZone);
+ fu.fileupload('option', 'pasteZone', pasteZone);
+ fileInput.trigger($.Event('change', eo));
+ dropZone.trigger($.Event('dragover', eo));
+ dropZone.trigger($.Event('drop', eo));
+ pasteZone.trigger($.Event('paste', eo));
+ });
+
+ asyncTest('add', function () {
+ expect(2);
+ var param = {files: [{name: 'test'}]};
+ $('#fileupload').fileupload({
+ add: function (e, data) {
+ strictEqual(
+ data.files[0].name,
+ param.files[0].name,
+ 'Triggers add callback'
+ );
+ }
+ }).fileupload('add', param).fileupload(
+ 'option',
+ 'add',
+ function (e, data) {
+ data.submit().complete(function () {
+ ok(true, 'data.submit() Returns a jqXHR object');
+ start();
+ });
+ }
+ ).fileupload('add', param);
+ });
+
+ asyncTest('send', function () {
+ expect(3);
+ var param = {files: [{name: 'test'}]};
+ $('#fileupload').fileupload({
+ send: function (e, data) {
+ strictEqual(
+ data.files[0].name,
+ 'test',
+ 'Triggers send callback'
+ );
+ }
+ }).fileupload('send', param).fail(function () {
+ ok(true, 'Allows to abort the request');
+ }).complete(function () {
+ ok(true, 'Returns a jqXHR object');
+ start();
+ }).abort();
+ });
+
+ module('Callbacks', lifecycle);
+
+ asyncTest('add', function () {
+ expect(1);
+ var param = {files: [{name: 'test'}]};
+ $('#fileupload').fileupload({
+ add: function () {
+ ok(true, 'Triggers add callback');
+ start();
+ }
+ }).fileupload('add', param);
+ });
+
+ asyncTest('submit', function () {
+ expect(1);
+ var param = {files: [{name: 'test'}]};
+ $('#fileupload').fileupload({
+ submit: function () {
+ ok(true, 'Triggers submit callback');
+ start();
+ return false;
+ }
+ }).fileupload('add', param);
+ });
+
+ asyncTest('send', function () {
+ expect(1);
+ var param = {files: [{name: 'test'}]};
+ $('#fileupload').fileupload({
+ send: function () {
+ ok(true, 'Triggers send callback');
+ start();
+ return false;
+ }
+ }).fileupload('send', param);
+ });
+
+ asyncTest('done', function () {
+ expect(1);
+ var param = {files: [{name: 'test'}]};
+ $('#fileupload').fileupload({
+ done: function () {
+ ok(true, 'Triggers done callback');
+ start();
+ }
+ }).fileupload('send', param);
+ });
+
+ asyncTest('fail', function () {
+ expect(1);
+ var param = {files: [{name: 'test'}]},
+ fu = $('#fileupload').fileupload({
+ url: '404',
+ fail: function () {
+ ok(true, 'Triggers fail callback');
+ start();
+ }
+ });
+ (fu.data('blueimp-fileupload') || fu.data('fileupload'))
+ ._isXHRUpload = function () {
+ return true;
+ };
+ fu.fileupload('send', param);
+ });
+
+ asyncTest('always', function () {
+ expect(2);
+ var param = {files: [{name: 'test'}]},
+ counter = 0,
+ fu = $('#fileupload').fileupload({
+ always: function () {
+ ok(true, 'Triggers always callback');
+ if (counter === 1) {
+ start();
+ } else {
+ counter += 1;
+ }
+ }
+ });
+ (fu.data('blueimp-fileupload') || fu.data('fileupload'))
+ ._isXHRUpload = function () {
+ return true;
+ };
+ fu.fileupload('add', param).fileupload(
+ 'option',
+ 'url',
+ '404'
+ ).fileupload('add', param);
+ });
+
+ asyncTest('progress', function () {
+ expect(1);
+ var param = {files: [{name: 'test'}]},
+ counter = 0;
+ $('#fileupload').fileupload({
+ forceIframeTransport: true,
+ progress: function () {
+ ok(true, 'Triggers progress callback');
+ if (counter === 0) {
+ start();
+ } else {
+ counter += 1;
+ }
+ }
+ }).fileupload('send', param);
+ });
+
+ asyncTest('progressall', function () {
+ expect(1);
+ var param = {files: [{name: 'test'}]},
+ counter = 0;
+ $('#fileupload').fileupload({
+ forceIframeTransport: true,
+ progressall: function () {
+ ok(true, 'Triggers progressall callback');
+ if (counter === 0) {
+ start();
+ } else {
+ counter += 1;
+ }
+ }
+ }).fileupload('send', param);
+ });
+
+ asyncTest('start', function () {
+ expect(1);
+ var param = {files: [{name: '1'}, {name: '2'}]},
+ active = 0;
+ $('#fileupload').fileupload({
+ send: function () {
+ active += 1;
+ },
+ start: function () {
+ ok(!active, 'Triggers start callback before uploads');
+ start();
+ }
+ }).fileupload('send', param);
+ });
+
+ asyncTest('stop', function () {
+ expect(1);
+ var param = {files: [{name: '1'}, {name: '2'}]},
+ active = 0;
+ $('#fileupload').fileupload({
+ send: function () {
+ active += 1;
+ },
+ always: function () {
+ active -= 1;
+ },
+ stop: function () {
+ ok(!active, 'Triggers stop callback after uploads');
+ start();
+ }
+ }).fileupload('send', param);
+ });
+
+ test('change', function () {
+ var fu = $('#fileupload').fileupload(),
+ fuo = fu.data('blueimp-fileupload') || fu.data('fileupload'),
+ fileInput = fu.fileupload('option', 'fileInput');
+ expect(2);
+ fu.fileupload({
+ change: function (e, data) {
+ ok(true, 'Triggers change callback');
+ strictEqual(
+ data.files.length,
+ 0,
+ 'Returns empty files list'
+ );
+ },
+ add: $.noop
+ });
+ fuo._onChange({
+ data: {fileupload: fuo},
+ target: fileInput[0]
+ });
+ });
+
+ test('paste', function () {
+ var fu = $('#fileupload').fileupload(),
+ fuo = fu.data('blueimp-fileupload') || fu.data('fileupload');
+ expect(1);
+ fu.fileupload({
+ paste: function () {
+ ok(true, 'Triggers paste callback');
+ },
+ add: $.noop
+ });
+ fuo._onPaste({
+ data: {fileupload: fuo},
+ originalEvent: {
+ dataTransfer: {files: [{}]},
+ clipboardData: {items: [{}]}
+ },
+ preventDefault: $.noop
+ });
+ });
+
+ test('drop', function () {
+ var fu = $('#fileupload').fileupload(),
+ fuo = fu.data('blueimp-fileupload') || fu.data('fileupload');
+ expect(1);
+ fu.fileupload({
+ drop: function () {
+ ok(true, 'Triggers drop callback');
+ },
+ add: $.noop
+ });
+ fuo._onDrop({
+ data: {fileupload: fuo},
+ originalEvent: {
+ dataTransfer: {files: [{}]},
+ clipboardData: {items: [{}]}
+ },
+ preventDefault: $.noop
+ });
+ });
+
+ test('dragover', function () {
+ var fu = $('#fileupload').fileupload(),
+ fuo = fu.data('blueimp-fileupload') || fu.data('fileupload');
+ expect(1);
+ fu.fileupload({
+ dragover: function () {
+ ok(true, 'Triggers dragover callback');
+ },
+ add: $.noop
+ });
+ fuo._onDragOver({
+ data: {fileupload: fuo},
+ originalEvent: {dataTransfer: {types: ['Files']}},
+ preventDefault: $.noop
+ });
+ });
+
+ module('Options', lifecycle);
+
+ test('paramName', function () {
+ expect(1);
+ var param = {files: [{name: 'test'}]};
+ $('#fileupload').fileupload({
+ paramName: null,
+ send: function (e, data) {
+ strictEqual(
+ data.paramName[0],
+ data.fileInput.prop('name'),
+ 'Takes paramName from file input field if not set'
+ );
+ return false;
+ }
+ }).fileupload('send', param);
+ });
+
+ test('url', function () {
+ expect(1);
+ var param = {files: [{name: 'test'}]};
+ $('#fileupload').fileupload({
+ url: null,
+ send: function (e, data) {
+ strictEqual(
+ data.url,
+ $(data.fileInput.prop('form')).prop('action'),
+ 'Takes url from form action if not set'
+ );
+ return false;
+ }
+ }).fileupload('send', param);
+ });
+
+ test('type', function () {
+ expect(2);
+ var param = {files: [{name: 'test'}]};
+ $('#fileupload').fileupload({
+ type: null,
+ send: function (e, data) {
+ strictEqual(
+ data.type,
+ 'POST',
+ 'Request type is "POST" if not set to "PUT"'
+ );
+ return false;
+ }
+ }).fileupload('send', param);
+ $('#fileupload').fileupload({
+ type: 'PUT',
+ send: function (e, data) {
+ strictEqual(
+ data.type,
+ 'PUT',
+ 'Request type is "PUT" if set to "PUT"'
+ );
+ return false;
+ }
+ }).fileupload('send', param);
+ });
+
+ test('replaceFileInput', function () {
+ var fu = $('#fileupload').fileupload(),
+ fuo = fu.data('blueimp-fileupload') || fu.data('fileupload'),
+ fileInput = fu.fileupload('option', 'fileInput'),
+ fileInputElement = fileInput[0];
+ expect(2);
+ fu.fileupload({
+ replaceFileInput: false,
+ change: function () {
+ strictEqual(
+ fu.fileupload('option', 'fileInput')[0],
+ fileInputElement,
+ 'Keeps file input with replaceFileInput: false'
+ );
+ },
+ add: $.noop
+ });
+ fuo._onChange({
+ data: {fileupload: fuo},
+ target: fileInput[0]
+ });
+ fu.fileupload({
+ replaceFileInput: true,
+ change: function () {
+ notStrictEqual(
+ fu.fileupload('option', 'fileInput')[0],
+ fileInputElement,
+ 'Replaces file input with replaceFileInput: true'
+ );
+ },
+ add: $.noop
+ });
+ fuo._onChange({
+ data: {fileupload: fuo},
+ target: fileInput[0]
+ });
+ });
+
+ asyncTest('forceIframeTransport', function () {
+ expect(1);
+ var param = {files: [{name: 'test'}]};
+ $('#fileupload').fileupload({
+ forceIframeTransport: true,
+ done: function (e, data) {
+ strictEqual(
+ data.dataType.substr(0, 6),
+ 'iframe',
+ 'Iframe Transport is used'
+ );
+ start();
+ }
+ }).fileupload('send', param);
+ });
+
+ test('singleFileUploads', function () {
+ expect(3);
+ var fu = $('#fileupload').fileupload(),
+ param = {files: [{name: '1'}, {name: '2'}]},
+ index = 1;
+ (fu.data('blueimp-fileupload') || fu.data('fileupload'))
+ ._isXHRUpload = function () {
+ return true;
+ };
+ $('#fileupload').fileupload({
+ singleFileUploads: true,
+ add: function () {
+ ok(true, 'Triggers callback number ' + index.toString());
+ index += 1;
+ }
+ }).fileupload('add', param).fileupload(
+ 'option',
+ 'singleFileUploads',
+ false
+ ).fileupload('add', param);
+ });
+
+ test('limitMultiFileUploads', function () {
+ expect(3);
+ var fu = $('#fileupload').fileupload(),
+ param = {files: [
+ {name: '1'},
+ {name: '2'},
+ {name: '3'},
+ {name: '4'},
+ {name: '5'}
+ ]},
+ index = 1;
+ (fu.data('blueimp-fileupload') || fu.data('fileupload'))
+ ._isXHRUpload = function () {
+ return true;
+ };
+ $('#fileupload').fileupload({
+ singleFileUploads: false,
+ limitMultiFileUploads: 2,
+ add: function () {
+ ok(true, 'Triggers callback number ' + index.toString());
+ index += 1;
+ }
+ }).fileupload('add', param);
+ });
+
+ test('limitMultiFileUploadSize', function () {
+ expect(7);
+ var fu = $('#fileupload').fileupload(),
+ param = {files: [
+ {name: '1-1', size: 100000},
+ {name: '1-2', size: 40000},
+ {name: '2-1', size: 100000},
+ {name: '3-1', size: 50000},
+ {name: '3-2', size: 40000},
+ {name: '4-1', size: 45000} // New request due to limitMultiFileUploads
+ ]},
+ param2 = {files: [
+ {name: '5-1'},
+ {name: '5-2'},
+ {name: '6-1'},
+ {name: '6-2'},
+ {name: '7-1'}
+ ]},
+ index = 1;
+ (fu.data('blueimp-fileupload') || fu.data('fileupload'))
+ ._isXHRUpload = function () {
+ return true;
+ };
+ $('#fileupload').fileupload({
+ singleFileUploads: false,
+ limitMultiFileUploads: 2,
+ limitMultiFileUploadSize: 150000,
+ limitMultiFileUploadSizeOverhead: 5000,
+ add: function () {
+ ok(true, 'Triggers callback number ' + index.toString());
+ index += 1;
+ }
+ }).fileupload('add', param).fileupload('add', param2);
+ });
+
+ asyncTest('sequentialUploads', function () {
+ expect(6);
+ var param = {files: [
+ {name: '1'},
+ {name: '2'},
+ {name: '3'},
+ {name: '4'},
+ {name: '5'},
+ {name: '6'}
+ ]},
+ addIndex = 0,
+ sendIndex = 0,
+ loadIndex = 0,
+ fu = $('#fileupload').fileupload({
+ sequentialUploads: true,
+ add: function (e, data) {
+ addIndex += 1;
+ if (addIndex === 4) {
+ data.submit().abort();
+ } else {
+ data.submit();
+ }
+ },
+ send: function () {
+ sendIndex += 1;
+ },
+ done: function () {
+ loadIndex += 1;
+ strictEqual(sendIndex, loadIndex, 'upload in order');
+ },
+ fail: function (e, data) {
+ strictEqual(data.errorThrown, 'abort', 'upload aborted');
+ },
+ stop: function () {
+ start();
+ }
+ });
+ (fu.data('blueimp-fileupload') || fu.data('fileupload'))
+ ._isXHRUpload = function () {
+ return true;
+ };
+ fu.fileupload('add', param);
+ });
+
+ asyncTest('limitConcurrentUploads', function () {
+ expect(12);
+ var param = {files: [
+ {name: '1'},
+ {name: '2'},
+ {name: '3'},
+ {name: '4'},
+ {name: '5'},
+ {name: '6'},
+ {name: '7'},
+ {name: '8'},
+ {name: '9'},
+ {name: '10'},
+ {name: '11'},
+ {name: '12'}
+ ]},
+ addIndex = 0,
+ sendIndex = 0,
+ loadIndex = 0,
+ fu = $('#fileupload').fileupload({
+ limitConcurrentUploads: 3,
+ add: function (e, data) {
+ addIndex += 1;
+ if (addIndex === 4) {
+ data.submit().abort();
+ } else {
+ data.submit();
+ }
+ },
+ send: function () {
+ sendIndex += 1;
+ },
+ done: function () {
+ loadIndex += 1;
+ ok(sendIndex - loadIndex < 3);
+ },
+ fail: function (e, data) {
+ strictEqual(data.errorThrown, 'abort', 'upload aborted');
+ },
+ stop: function () {
+ start();
+ }
+ });
+ (fu.data('blueimp-fileupload') || fu.data('fileupload'))
+ ._isXHRUpload = function () {
+ return true;
+ };
+ fu.fileupload('add', param);
+ });
+
+ if ($.support.xhrFileUpload) {
+ asyncTest('multipart', function () {
+ expect(2);
+ var param = {files: [{
+ name: 'test.png',
+ size: 123,
+ type: 'image/png'
+ }]},
+ fu = $('#fileupload').fileupload({
+ multipart: false,
+ always: function (e, data) {
+ strictEqual(
+ data.contentType,
+ param.files[0].type,
+ 'non-multipart upload sets file type as contentType'
+ );
+ strictEqual(
+ data.headers['Content-Disposition'],
+ 'attachment; filename="' + param.files[0].name + '"',
+ 'non-multipart upload sets Content-Disposition header'
+ );
+ start();
+ }
+ });
+ fu.fileupload('send', param);
+ });
+ }
+
+ module('UI Initialization', lifecycleUI);
+
+ test('Widget initialization', function () {
+ var fu = $('#fileupload').fileupload();
+ ok(fu.data('blueimp-fileupload') || fu.data('fileupload'));
+ ok(
+ $('#fileupload').fileupload('option', 'uploadTemplate').length,
+ 'Initialized upload template'
+ );
+ ok(
+ $('#fileupload').fileupload('option', 'downloadTemplate').length,
+ 'Initialized download template'
+ );
+ });
+
+ test('Buttonbar event listeners', function () {
+ var buttonbar = $('#fileupload .fileupload-buttonbar'),
+ files = [{name: 'test'}];
+ expect(4);
+ $('#fileupload').fileupload({
+ send: function () {
+ ok(true, 'Started file upload via global start button');
+ },
+ fail: function (e, data) {
+ ok(true, 'Canceled file upload via global cancel button');
+ data.context.remove();
+ },
+ destroy: function () {
+ ok(true, 'Delete action called via global delete button');
+ }
+ });
+ $('#fileupload').fileupload('add', {files: files});
+ buttonbar.find('.cancel').click();
+ $('#fileupload').fileupload('add', {files: files});
+ buttonbar.find('.start').click();
+ buttonbar.find('.cancel').click();
+ files[0].deleteUrl = 'http://example.org/banana.jpg';
+ ($('#fileupload').data('blueimp-fileupload') ||
+ $('#fileupload').data('fileupload'))
+ ._renderDownload(files)
+ .appendTo($('#fileupload .files')).show()
+ .find('.toggle').click();
+ buttonbar.find('.delete').click();
+ });
+
+ module('UI API', lifecycleUI);
+
+ test('destroy', function () {
+ var buttonbar = $('#fileupload .fileupload-buttonbar'),
+ files = [{name: 'test'}];
+ expect(1);
+ $('#fileupload').fileupload({
+ send: function () {
+ ok(true, 'This test should not run');
+ return false;
+ }
+ })
+ .fileupload('add', {files: files})
+ .fileupload('destroy');
+ buttonbar.find('.start').click(function () {
+ ok(true, 'Clicked global start button');
+ return false;
+ }).click();
+ });
+
+ test('disable/enable', function () {
+ var buttonbar = $('#fileupload .fileupload-buttonbar');
+ $('#fileupload').fileupload();
+ $('#fileupload').fileupload('disable');
+ strictEqual(
+ buttonbar.find('input[type=file], button').not(':disabled').length,
+ 0,
+ 'Disables the buttonbar buttons'
+ );
+ $('#fileupload').fileupload('enable');
+ strictEqual(
+ buttonbar.find('input[type=file], button').not(':disabled').length,
+ 4,
+ 'Enables the buttonbar buttons'
+ );
+ });
+
+ module('UI Callbacks', lifecycleUI);
+
+ test('destroy', function () {
+ expect(3);
+ $('#fileupload').fileupload({
+ destroy: function (e, data) {
+ ok(true, 'Triggers destroy callback');
+ strictEqual(
+ data.url,
+ 'test',
+ 'Passes over deletion url parameter'
+ );
+ strictEqual(
+ data.type,
+ 'DELETE',
+ 'Passes over deletion request type parameter'
+ );
+ }
+ });
+ ($('#fileupload').data('blueimp-fileupload') ||
+ $('#fileupload').data('fileupload'))
+ ._renderDownload([{
+ name: 'test',
+ deleteUrl: 'test',
+ deleteType: 'DELETE'
+ }])
+ .appendTo($('#fileupload .files'))
+ .show()
+ .find('.toggle').click();
+ $('#fileupload .fileupload-buttonbar .delete').click();
+ });
+
+ asyncTest('added', function () {
+ expect(1);
+ var param = {files: [{name: 'test'}]};
+ $('#fileupload').fileupload({
+ added: function (e, data) {
+ start();
+ strictEqual(
+ data.files[0].name,
+ param.files[0].name,
+ 'Triggers added callback'
+ );
+ },
+ send: function () {
+ return false;
+ }
+ }).fileupload('add', param);
+ });
+
+ asyncTest('started', function () {
+ expect(1);
+ var param = {files: [{name: 'test'}]};
+ $('#fileupload').fileupload({
+ started: function () {
+ start();
+ ok('Triggers started callback');
+ return false;
+ },
+ sent: function () {
+ return false;
+ }
+ }).fileupload('send', param);
+ });
+
+ asyncTest('sent', function () {
+ expect(1);
+ var param = {files: [{name: 'test'}]};
+ $('#fileupload').fileupload({
+ sent: function (e, data) {
+ start();
+ strictEqual(
+ data.files[0].name,
+ param.files[0].name,
+ 'Triggers sent callback'
+ );
+ return false;
+ }
+ }).fileupload('send', param);
+ });
+
+ asyncTest('completed', function () {
+ expect(1);
+ var param = {files: [{name: 'test'}]};
+ $('#fileupload').fileupload({
+ completed: function () {
+ start();
+ ok('Triggers completed callback');
+ return false;
+ }
+ }).fileupload('send', param);
+ });
+
+ asyncTest('failed', function () {
+ expect(1);
+ var param = {files: [{name: 'test'}]};
+ $('#fileupload').fileupload({
+ failed: function () {
+ start();
+ ok('Triggers failed callback');
+ return false;
+ }
+ }).fileupload('send', param).abort();
+ });
+
+ asyncTest('stopped', function () {
+ expect(1);
+ var param = {files: [{name: 'test'}]};
+ $('#fileupload').fileupload({
+ stopped: function () {
+ start();
+ ok('Triggers stopped callback');
+ return false;
+ }
+ }).fileupload('send', param);
+ });
+
+ asyncTest('destroyed', function () {
+ expect(1);
+ $('#fileupload').fileupload({
+ dataType: 'html',
+ destroyed: function () {
+ start();
+ ok(true, 'Triggers destroyed callback');
+ }
+ });
+ ($('#fileupload').data('blueimp-fileupload') ||
+ $('#fileupload').data('fileupload'))
+ ._renderDownload([{
+ name: 'test',
+ deleteUrl: '.',
+ deleteType: 'GET'
+ }])
+ .appendTo($('#fileupload .files'))
+ .show()
+ .find('.toggle').click();
+ $('#fileupload .fileupload-buttonbar .delete').click();
+ });
+
+ module('UI Options', lifecycleUI);
+
+ test('autoUpload', function () {
+ expect(1);
+ $('#fileupload')
+ .fileupload({
+ autoUpload: true,
+ send: function () {
+ ok(true, 'Started file upload automatically');
+ return false;
+ }
+ })
+ .fileupload('add', {files: [{name: 'test'}]})
+ .fileupload('option', 'autoUpload', false)
+ .fileupload('add', {files: [{name: 'test'}]});
+ });
+
+ test('maxNumberOfFiles', function () {
+ expect(3);
+ var addIndex = 0,
+ sendIndex = 0;
+ $('#fileupload')
+ .fileupload({
+ autoUpload: true,
+ maxNumberOfFiles: 3,
+ singleFileUploads: false,
+ send: function () {
+ strictEqual(
+ sendIndex += 1,
+ addIndex
+ );
+ },
+ progress: $.noop,
+ progressall: $.noop,
+ done: $.noop,
+ stop: $.noop
+ })
+ .fileupload('add', {files: [{name: (addIndex += 1)}]})
+ .fileupload('add', {files: [{name: (addIndex += 1)}]})
+ .fileupload('add', {files: [{name: (addIndex += 1)}]})
+ .fileupload('add', {files: [{name: 'test'}]});
+ });
+
+ test('maxFileSize', function () {
+ expect(2);
+ var addIndex = 0,
+ sendIndex = 0;
+ $('#fileupload')
+ .fileupload({
+ autoUpload: true,
+ maxFileSize: 1000,
+ send: function () {
+ strictEqual(
+ sendIndex += 1,
+ addIndex
+ );
+ return false;
+ }
+ })
+ .fileupload('add', {files: [{
+ name: (addIndex += 1)
+ }]})
+ .fileupload('add', {files: [{
+ name: (addIndex += 1),
+ size: 999
+ }]})
+ .fileupload('add', {files: [{
+ name: 'test',
+ size: 1001
+ }]})
+ .fileupload({
+ send: function (e, data) {
+ ok(
+ !$.blueimp.fileupload.prototype.options
+ .send.call(this, e, data)
+ );
+ return false;
+ }
+ });
+ });
+
+ test('minFileSize', function () {
+ expect(2);
+ var addIndex = 0,
+ sendIndex = 0;
+ $('#fileupload')
+ .fileupload({
+ autoUpload: true,
+ minFileSize: 1000,
+ send: function () {
+ strictEqual(
+ sendIndex += 1,
+ addIndex
+ );
+ return false;
+ }
+ })
+ .fileupload('add', {files: [{
+ name: (addIndex += 1)
+ }]})
+ .fileupload('add', {files: [{
+ name: (addIndex += 1),
+ size: 1001
+ }]})
+ .fileupload('add', {files: [{
+ name: 'test',
+ size: 999
+ }]})
+ .fileupload({
+ send: function (e, data) {
+ ok(
+ !$.blueimp.fileupload.prototype.options
+ .send.call(this, e, data)
+ );
+ return false;
+ }
+ });
+ });
+
+ test('acceptFileTypes', function () {
+ expect(2);
+ var addIndex = 0,
+ sendIndex = 0;
+ $('#fileupload')
+ .fileupload({
+ autoUpload: true,
+ acceptFileTypes: /(\.|\/)(gif|jpe?g|png)$/i,
+ disableImageMetaDataLoad: true,
+ send: function () {
+ strictEqual(
+ sendIndex += 1,
+ addIndex
+ );
+ return false;
+ }
+ })
+ .fileupload('add', {files: [{
+ name: (addIndex += 1) + '.jpg'
+ }]})
+ .fileupload('add', {files: [{
+ name: (addIndex += 1),
+ type: 'image/jpeg'
+ }]})
+ .fileupload('add', {files: [{
+ name: 'test.txt',
+ type: 'text/plain'
+ }]})
+ .fileupload({
+ send: function (e, data) {
+ ok(
+ !$.blueimp.fileupload.prototype.options
+ .send.call(this, e, data)
+ );
+ return false;
+ }
+ });
+ });
+
+ test('acceptFileTypes as HTML5 data attribute', function () {
+ expect(2);
+ var regExp = /(\.|\/)(gif|jpe?g|png)$/i;
+ $('#fileupload')
+ .attr('data-accept-file-types', regExp.toString())
+ .fileupload();
+ strictEqual(
+ $.type($('#fileupload').fileupload('option', 'acceptFileTypes')),
+ $.type(regExp)
+ );
+ strictEqual(
+ $('#fileupload').fileupload('option', 'acceptFileTypes').toString(),
+ regExp.toString()
+ );
+ });
+
+});
diff --git a/library/bootstrap-datetimepicker/css/bootstrap-datetimepicker.css b/library/bootstrap-datetimepicker/css/bootstrap-datetimepicker.css
deleted file mode 100755
index e5eb7a65c..000000000
--- a/library/bootstrap-datetimepicker/css/bootstrap-datetimepicker.css
+++ /dev/null
@@ -1,174 +0,0 @@
-/**
- * Build file for the dist version of datetimepicker.css
- */
-/*!
- * Datetimepicker for Bootstrap v3
- * https://github.com/Eonasdan/bootstrap-datetimepicker/
- * Copyright 2012 Stefan Petre
- * Licensed under the Apache License v2.0
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- */
-.bootstrap-datetimepicker-widget {
- top: 0;
- left: 0;
- width: 250px;
- padding: 4px;
- margin-top: 1px;
- z-index: 9999;
- border-radius: 4px;
- /*.dow {
- border-top: 1px solid #ddd !important;
- }*/
-}
-.bootstrap-datetimepicker-widget .btn {
- padding: 6px;
-}
-.bootstrap-datetimepicker-widget:before {
- content: '';
- display: inline-block;
- border-left: 7px solid transparent;
- border-right: 7px solid transparent;
- border-bottom: 7px solid #ccc;
- border-bottom-color: rgba(0, 0, 0, 0.2);
- position: absolute;
- top: -7px;
- left: 6px;
-}
-.bootstrap-datetimepicker-widget:after {
- content: '';
- display: inline-block;
- border-left: 6px solid transparent;
- border-right: 6px solid transparent;
- border-bottom: 6px solid white;
- position: absolute;
- top: -6px;
- left: 7px;
-}
-.bootstrap-datetimepicker-widget.pull-right:before {
- left: auto;
- right: 6px;
-}
-.bootstrap-datetimepicker-widget.pull-right:after {
- left: auto;
- right: 7px;
-}
-.bootstrap-datetimepicker-widget > ul {
- list-style-type: none;
- margin: 0;
-}
-.bootstrap-datetimepicker-widget .timepicker-hour,
-.bootstrap-datetimepicker-widget .timepicker-minute,
-.bootstrap-datetimepicker-widget .timepicker-second {
- width: 100%;
- font-weight: bold;
- font-size: 1.2em;
-}
-.bootstrap-datetimepicker-widget table[data-hour-format="12"] .separator {
- width: 4px;
- padding: 0;
- margin: 0;
-}
-.bootstrap-datetimepicker-widget .datepicker > div {
- display: none;
-}
-.bootstrap-datetimepicker-widget .picker-switch {
- text-align: center;
-}
-.bootstrap-datetimepicker-widget table {
- width: 100%;
- margin: 0;
-}
-.bootstrap-datetimepicker-widget td,
-.bootstrap-datetimepicker-widget th {
- text-align: center;
- width: 20px;
- height: 20px;
- border-radius: 4px;
-}
-.bootstrap-datetimepicker-widget td.day:hover,
-.bootstrap-datetimepicker-widget td.hour:hover,
-.bootstrap-datetimepicker-widget td.minute:hover,
-.bootstrap-datetimepicker-widget td.second:hover {
- background: #eeeeee;
- cursor: pointer;
-}
-.bootstrap-datetimepicker-widget td.old,
-.bootstrap-datetimepicker-widget td.new {
- color: #999999;
-}
-.bootstrap-datetimepicker-widget td.active,
-.bootstrap-datetimepicker-widget td.active:hover {
- background-color: #428bca;
- color: #fff;
- text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25);
-}
-.bootstrap-datetimepicker-widget td.disabled,
-.bootstrap-datetimepicker-widget td.disabled:hover {
- background: none;
- color: #999999;
- cursor: not-allowed;
-}
-.bootstrap-datetimepicker-widget td span {
- display: block;
- width: 47px;
- height: 54px;
- line-height: 54px;
- float: left;
- margin: 2px;
- cursor: pointer;
- border-radius: 4px;
-}
-.bootstrap-datetimepicker-widget td span:hover {
- background: #eeeeee;
-}
-.bootstrap-datetimepicker-widget td span.active {
- background-color: #428bca;
- color: #fff;
- text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25);
-}
-.bootstrap-datetimepicker-widget td span.old {
- color: #999999;
-}
-.bootstrap-datetimepicker-widget td span.disabled,
-.bootstrap-datetimepicker-widget td span.disabled:hover {
- background: none;
- color: #999999;
- cursor: not-allowed;
-}
-.bootstrap-datetimepicker-widget th.switch {
- width: 145px;
-}
-.bootstrap-datetimepicker-widget th.next,
-.bootstrap-datetimepicker-widget th.prev {
- font-size: 21px;
-}
-.bootstrap-datetimepicker-widget th.disabled,
-.bootstrap-datetimepicker-widget th.disabled:hover {
- background: none;
- color: #999999;
- cursor: not-allowed;
-}
-.bootstrap-datetimepicker-widget thead tr:first-child th {
- cursor: pointer;
-}
-.bootstrap-datetimepicker-widget thead tr:first-child th:hover {
- background: #eeeeee;
-}
-.input-group.date .input-group-addon span {
- display: block;
- cursor: pointer;
- width: 16px;
- height: 16px;
-}
-.bootstrap-datetimepicker-widget.left-oriented:before {
- left: auto;
- right: 6px;
-}
-.bootstrap-datetimepicker-widget.left-oriented:after {
- left: auto;
- right: 7px;
-}
-.bootstrap-datetimepicker-widget ul.list-unstyled li.in div.timepicker div.timepicker-picker table.table-condensed tbody > tr > td {
- padding: 0px !important;
-}
diff --git a/library/bootstrap-datetimepicker/css/bootstrap-datetimepicker.min.css b/library/bootstrap-datetimepicker/css/bootstrap-datetimepicker.min.css
deleted file mode 100755
index 00b768767..000000000
--- a/library/bootstrap-datetimepicker/css/bootstrap-datetimepicker.min.css
+++ /dev/null
@@ -1,8 +0,0 @@
-/*!
- * Datetimepicker for Bootstrap v3
- * https://github.com/Eonasdan/bootstrap-datetimepicker/
- * Copyright 2012 Stefan Petre
- * Licensed under the Apache License v2.0
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- */.bootstrap-datetimepicker-widget{top:0;left:0;width:250px;padding:4px;margin-top:1px;z-index:9999;border-radius:4px}.bootstrap-datetimepicker-widget .btn{padding:6px}.bootstrap-datetimepicker-widget:before{content:'';display:inline-block;border-left:7px solid transparent;border-right:7px solid transparent;border-bottom:7px solid #ccc;border-bottom-color:rgba(0,0,0,0.2);position:absolute;top:-7px;left:6px}.bootstrap-datetimepicker-widget:after{content:'';display:inline-block;border-left:6px solid transparent;border-right:6px solid transparent;border-bottom:6px solid #fff;position:absolute;top:-6px;left:7px}.bootstrap-datetimepicker-widget.pull-right:before{left:auto;right:6px}.bootstrap-datetimepicker-widget.pull-right:after{left:auto;right:7px}.bootstrap-datetimepicker-widget>ul{list-style-type:none;margin:0}.bootstrap-datetimepicker-widget .timepicker-hour,.bootstrap-datetimepicker-widget .timepicker-minute,.bootstrap-datetimepicker-widget .timepicker-second{width:100%;font-weight:bold;font-size:1.2em}.bootstrap-datetimepicker-widget table[data-hour-format="12"] .separator{width:4px;padding:0;margin:0}.bootstrap-datetimepicker-widget .datepicker>div{display:none}.bootstrap-datetimepicker-widget .picker-switch{text-align:center}.bootstrap-datetimepicker-widget table{width:100%;margin:0}.bootstrap-datetimepicker-widget td,.bootstrap-datetimepicker-widget th{text-align:center;width:20px;height:20px;border-radius:4px}.bootstrap-datetimepicker-widget td.day:hover,.bootstrap-datetimepicker-widget td.hour:hover,.bootstrap-datetimepicker-widget td.minute:hover,.bootstrap-datetimepicker-widget td.second:hover{background:#eee;cursor:pointer}.bootstrap-datetimepicker-widget td.old,.bootstrap-datetimepicker-widget td.new{color:#999}.bootstrap-datetimepicker-widget td.active,.bootstrap-datetimepicker-widget td.active:hover{background-color:#428bca;color:#fff;text-shadow:0 -1px 0 rgba(0,0,0,0.25)}.bootstrap-datetimepicker-widget td.disabled,.bootstrap-datetimepicker-widget td.disabled:hover{background:none;color:#999;cursor:not-allowed}.bootstrap-datetimepicker-widget td span{display:block;width:47px;height:54px;line-height:54px;float:left;margin:2px;cursor:pointer;border-radius:4px}.bootstrap-datetimepicker-widget td span:hover{background:#eee}.bootstrap-datetimepicker-widget td span.active{background-color:#428bca;color:#fff;text-shadow:0 -1px 0 rgba(0,0,0,0.25)}.bootstrap-datetimepicker-widget td span.old{color:#999}.bootstrap-datetimepicker-widget td span.disabled,.bootstrap-datetimepicker-widget td span.disabled:hover{background:none;color:#999;cursor:not-allowed}.bootstrap-datetimepicker-widget th.switch{width:145px}.bootstrap-datetimepicker-widget th.next,.bootstrap-datetimepicker-widget th.prev{font-size:21px}.bootstrap-datetimepicker-widget th.disabled,.bootstrap-datetimepicker-widget th.disabled:hover{background:none;color:#999;cursor:not-allowed}.bootstrap-datetimepicker-widget thead tr:first-child th{cursor:pointer}.bootstrap-datetimepicker-widget thead tr:first-child th:hover{background:#eee}.input-group.date .input-group-addon span{display:block;cursor:pointer;width:16px;height:16px}.bootstrap-datetimepicker-widget.left-oriented:before{left:auto;right:6px}.bootstrap-datetimepicker-widget.left-oriented:after{left:auto;right:7px}.bootstrap-datetimepicker-widget ul.list-unstyled li.in div.timepicker div.timepicker-picker table.table-condensed tbody>tr>td{padding:0 !important} \ No newline at end of file
diff --git a/library/bootstrap-datetimepicker/js/bootstrap-datetimepicker.min.js b/library/bootstrap-datetimepicker/js/bootstrap-datetimepicker.min.js
deleted file mode 100755
index 3bc74fcbb..000000000
--- a/library/bootstrap-datetimepicker/js/bootstrap-datetimepicker.min.js
+++ /dev/null
@@ -1,28 +0,0 @@
-/**
- * version 2.1.11
- * @license
- * =========================================================
- * bootstrap-datetimepicker.js
- * http://www.eyecon.ro/bootstrap-datepicker
- * =========================================================
- * Copyright 2012 Stefan Petre
- *
- * Contributions:
- * - updated for Bootstrap v3 by Jonathan Peterson (@Eonasdan) and (almost)
- * completely rewritten to use Momentjs
- * - based on tarruda's bootstrap-datepicker
- *
- * 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.
- * =========================================================
- */
-(function($){if(typeof moment==="undefined"){alert("momentjs is requried");throw new Error("momentjs is requried")}var dpgId=0,pMoment=moment,DateTimePicker=function(element,options){var defaults={pickDate:true,pickTime:true,startDate:new pMoment({y:1970}),endDate:(new pMoment).add(50,"y"),collapse:true,language:"en",defaultDate:"",disabledDates:[],icons:{},useStrict:false},icons={time:"glyphicon glyphicon-time",date:"glyphicon glyphicon-calendar",up:"glyphicon glyphicon-chevron-up",down:"glyphicon glyphicon-chevron-down"},picker=this,init=function(){var icon=false,i,dDate,longDateFormat;picker.options=$.extend({},defaults,options);picker.options.icons=$.extend({},icons,picker.options.icons);if(!(picker.options.pickTime||picker.options.pickDate))throw new Error("Must choose at least one picker");picker.id=dpgId++;pMoment.lang(picker.options.language);picker.date=pMoment();picker.element=$(element);picker.unset=false;picker.isInput=picker.element.is("input");picker.component=false;if(picker.element.hasClass("input-group")){if(picker.element.find(".datepickerbutton").size()==0){picker.component=picker.element.find(".input-group-addon")}else{picker.component=picker.element.find(".datepickerbutton")}}picker.format=picker.options.format;longDateFormat=pMoment()._lang._longDateFormat;if(!picker.format){if(picker.isInput)picker.format=picker.element.data("format");else picker.format=picker.element.find("input").data("format");if(!picker.format){picker.format=picker.options.pickDate?longDateFormat.L:"";if(picker.options.pickDate&&picker.options.pickTime)picker.format+=" ";picker.format+=picker.options.pickTime?longDateFormat.LT:""}}picker.use24hours=picker.format.toLowerCase().indexOf("a")<1;if(picker.component)icon=picker.component.find("span");if(picker.options.pickTime){if(icon)icon.addClass(picker.options.icons.time)}if(picker.options.pickDate){if(icon){icon.removeClass(picker.options.icons.time);icon.addClass(picker.options.icons.date)}}picker.widget=$(getTemplate(picker.options.pickDate,picker.options.pickTime,picker.options.collapse)).appendTo("body");picker.minViewMode=picker.options.minViewMode||picker.element.data("date-minviewmode")||0;if(typeof picker.minViewMode==="string"){switch(picker.minViewMode){case"months":picker.minViewMode=1;break;case"years":picker.minViewMode=2;break;default:picker.minViewMode=0;break}}picker.viewMode=picker.options.viewMode||picker.element.data("date-viewmode")||0;if(typeof picker.viewMode==="string"){switch(picker.viewMode){case"months":picker.viewMode=1;break;case"years":picker.viewMode=2;break;default:picker.viewMode=0;break}}for(i=0;i<picker.options.disabledDates.length;i++){dDate=picker.options.disabledDates[i];dDate=pMoment(dDate);if(!dDate.isValid())dDate=pMoment(picker.options.startDate).subtract(1,"day");picker.options.disabledDates[i]=dDate.format("L")}picker.startViewMode=picker.viewMode;picker.setStartDate(picker.options.startDate||picker.element.data("date-startdate"));picker.setEndDate(picker.options.endDate||picker.element.data("date-enddate"));fillDow();fillMonths();fillHours();fillMinutes();update();showMode();attachDatePickerEvents();if(picker.options.defaultDate!=="")picker.setValue(picker.options.defaultDate)},place=function(){var position="absolute",offset=picker.component?picker.component.offset():picker.element.offset(),$window=$(window);picker.width=picker.component?picker.component.outerWidth():picker.element.outerWidth();offset.top=offset.top+picker.element.outerHeight();if(picker.options.width!==undefined){picker.widget.width(picker.options.width)}if(picker.options.orientation==="left"){picker.widget.addClass("left-oriented");offset.left=offset.left-picker.widget.width()+20}if(isInFixed()){position="fixed";offset.top-=$window.scrollTop();offset.left-=$window.scrollLeft()}if($window.width()<offset.left+picker.widget.outerWidth()){offset.right=$window.width()-offset.left-picker.width;offset.left="auto";picker.widget.addClass("pull-right")}else{offset.right="auto";picker.widget.removeClass("pull-right")}picker.widget.css({position:position,top:offset.top,left:offset.left,right:offset.right})},notifyChange=function(oldDate){picker.element.trigger({type:"change.dp",date:picker.getDate(),oldDate:oldDate})},notifyError=function(date){picker.element.trigger({type:"error.dp",date:date})},update=function(newDate){pMoment.lang(picker.options.language);var dateStr=newDate;if(!dateStr){if(picker.isInput){dateStr=picker.element.val()}else{dateStr=picker.element.find("input").val()}if(dateStr)picker.date=pMoment(dateStr,picker.format,picker.options.useStrict);if(!picker.date)picker.date=pMoment()}picker.viewDate=pMoment(picker.date).startOf("month");fillDate();fillTime()},fillDow=function(){pMoment.lang(picker.options.language);var html=$("<tr>"),weekdaysMin=pMoment.weekdaysMin(),i;if(pMoment()._lang._week.dow==0){for(i=0;i<7;i++){html.append('<th class="dow">'+weekdaysMin[i]+"</th>")}}else{for(i=1;i<8;i++){if(i==7){html.append('<th class="dow">'+weekdaysMin[0]+"</th>")}else{html.append('<th class="dow">'+weekdaysMin[i]+"</th>")}}}picker.widget.find(".datepicker-days thead").append(html)},fillMonths=function(){pMoment.lang(picker.options.language);var html="",i=0,monthsShort=pMoment.monthsShort();while(i<12){html+='<span class="month">'+monthsShort[i++]+"</span>"}picker.widget.find(".datepicker-months td").append(html)},fillDate=function(){pMoment.lang(picker.options.language);var year=picker.viewDate.year(),month=picker.viewDate.month(),startYear=picker.options.startDate.year(),startMonth=picker.options.startDate.month(),endYear=picker.options.endDate.year(),endMonth=picker.options.endDate.month(),prevMonth,nextMonth,html=[],row,clsName,i,days,yearCont,currentYear,months=pMoment.months();picker.widget.find(".datepicker-days").find(".disabled").removeClass("disabled");picker.widget.find(".datepicker-months").find(".disabled").removeClass("disabled");picker.widget.find(".datepicker-years").find(".disabled").removeClass("disabled");picker.widget.find(".datepicker-days th:eq(1)").text(months[month]+" "+year);prevMonth=pMoment(picker.viewDate).subtract("months",1);days=prevMonth.daysInMonth();prevMonth.date(days).startOf("week");if(year==startYear&&month<=startMonth||year<startYear){picker.widget.find(".datepicker-days th:eq(0)").addClass("disabled")}if(year==endYear&&month>=endMonth||year>endYear){picker.widget.find(".datepicker-days th:eq(2)").addClass("disabled")}nextMonth=pMoment(prevMonth).add(42,"d");while(prevMonth.isBefore(nextMonth)){if(prevMonth.weekday()===pMoment().startOf("week").weekday()){row=$("<tr>");html.push(row)}clsName="";if(prevMonth.year()<year||prevMonth.year()==year&&prevMonth.month()<month){clsName+=" old"}else if(prevMonth.year()>year||prevMonth.year()==year&&prevMonth.month()>month){clsName+=" new"}if(prevMonth.isSame(pMoment({y:picker.date.year(),M:picker.date.month(),d:picker.date.date()}))){clsName+=" active"}if(pMoment(prevMonth).add(1,"d")<=picker.options.startDate||prevMonth>picker.options.endDate||isInDisableDates(prevMonth)){clsName+=" disabled"}row.append('<td class="day'+clsName+'">'+prevMonth.date()+"</td>");prevMonth.add(1,"d")}picker.widget.find(".datepicker-days tbody").empty().append(html);currentYear=pMoment().year(),months=picker.widget.find(".datepicker-months").find("th:eq(1)").text(year).end().find("span").removeClass("active");if(currentYear===year){months.eq(pMoment().month()).addClass("active")}if(currentYear-1<startYear){picker.widget.find(".datepicker-months th:eq(0)").addClass("disabled")}if(currentYear+1>endYear){picker.widget.find(".datepicker-months th:eq(2)").addClass("disabled")}for(i=0;i<12;i++){if(year==startYear&&startMonth>i||year<startYear){$(months[i]).addClass("disabled")}else if(year==endYear&&endMonth<i||year>endYear){$(months[i]).addClass("disabled")}}html="";year=parseInt(year/10,10)*10;yearCont=picker.widget.find(".datepicker-years").find("th:eq(1)").text(year+"-"+(year+9)).end().find("td");picker.widget.find(".datepicker-years").find("th").removeClass("disabled");if(startYear>year){picker.widget.find(".datepicker-years").find("th:eq(0)").addClass("disabled")}if(endYear<year+9){picker.widget.find(".datepicker-years").find("th:eq(2)").addClass("disabled")}year-=1;for(i=-1;i<11;i++){html+='<span class="year'+(i===-1||i===10?" old":"")+(currentYear===year?" active":"")+(year<startYear||year>endYear?" disabled":"")+'">'+year+"</span>";year+=1}yearCont.html(html)},fillHours=function(){pMoment.lang(picker.options.language);var table=picker.widget.find(".timepicker .timepicker-hours table"),html="",current,i,j;table.parent().hide();if(picker.use24hours){current=0;for(i=0;i<6;i+=1){html+="<tr>";for(j=0;j<4;j+=1){html+='<td class="hour">'+padLeft(current.toString())+"</td>";current++}html+="</tr>"}}else{current=1;for(i=0;i<3;i+=1){html+="<tr>";for(j=0;j<4;j+=1){html+='<td class="hour">'+padLeft(current.toString())+"</td>";current++}html+="</tr>"}}table.html(html)},fillMinutes=function(){var table=picker.widget.find(".timepicker .timepicker-minutes table"),html="",current=0,i,j;table.parent().hide();for(i=0;i<5;i++){html+="<tr>";for(j=0;j<4;j+=1){html+='<td class="minute">'+padLeft(current.toString())+"</td>";current+=3}html+="</tr>"}table.html(html)},fillTime=function(){if(!picker.date)return;var timeComponents=picker.widget.find(".timepicker span[data-time-component]"),hour=picker.date.hours(),period="AM";if(!picker.use24hours){if(hour>=12)period="PM";if(hour===0)hour=12;else if(hour!=12)hour=hour%12;picker.widget.find(".timepicker [data-action=togglePeriod]").text(period)}timeComponents.filter("[data-time-component=hours]").text(padLeft(hour));timeComponents.filter("[data-time-component=minutes]").text(padLeft(picker.date.minutes()))},click=function(e){e.stopPropagation();e.preventDefault();picker.unset=false;var target=$(e.target).closest("span, td, th"),month,year,step,day,oldDate=picker.date;if(target.length===1){if(!target.is(".disabled")){switch(target[0].nodeName.toLowerCase()){case"th":switch(target[0].className){case"switch":showMode(1);break;case"prev":case"next":step=dpGlobal.modes[picker.viewMode].navStep;if(target[0].className==="prev")step=step*-1;picker.viewDate.add(step,dpGlobal.modes[picker.viewMode].navFnc);fillDate();break}break;case"span":if(target.is(".month")){month=target.parent().find("span").index(target);picker.viewDate.month(month)}else{year=parseInt(target.text(),10)||0;picker.viewDate.year(year)}if(picker.viewMode!==0){picker.date=pMoment({y:picker.viewDate.year(),M:picker.viewDate.month(),d:picker.viewDate.date(),h:picker.date.hours(),m:picker.date.minutes()});notifyChange(oldDate)}showMode(-1);fillDate();break;case"td":if(target.is(".day")){day=parseInt(target.text(),10)||1;month=picker.viewDate.month();year=picker.viewDate.year();if(target.is(".old")){if(month===0){month=11;year-=1}else{month-=1}}else if(target.is(".new")){if(month==11){month=0;year+=1}else{month+=1}}picker.date=pMoment({y:year,M:month,d:day,h:picker.date.hours(),m:picker.date.minutes()});picker.viewDate=pMoment({y:year,M:month,d:Math.min(28,day)});fillDate();set();notifyChange(oldDate)}break}}}},actions={incrementHours:function(){checkDate("add","hours")},incrementMinutes:function(){checkDate("add","minutes")},decrementHours:function(){checkDate("subtract","hours")},decrementMinutes:function(){checkDate("subtract","minutes")},togglePeriod:function(){var hour=picker.date.hours();if(hour>=12)hour-=12;else hour+=12;picker.date.hours(hour)},showPicker:function(){picker.widget.find(".timepicker > div:not(.timepicker-picker)").hide();picker.widget.find(".timepicker .timepicker-picker").show()},showHours:function(){picker.widget.find(".timepicker .timepicker-picker").hide();picker.widget.find(".timepicker .timepicker-hours").show()},showMinutes:function(){picker.widget.find(".timepicker .timepicker-picker").hide();picker.widget.find(".timepicker .timepicker-minutes").show()},selectHour:function(e){picker.date.hours(parseInt($(e.target).text(),10));actions.showPicker.call(picker)},selectMinute:function(e){picker.date.minutes(parseInt($(e.target).text(),10));actions.showPicker.call(picker)}},doAction=function(e){var action=$(e.currentTarget).data("action"),rv=actions[action].apply(picker,arguments),oldDate=picker.date;stopEvent(e);if(!picker.date)picker.date=pMoment({y:1970});set();fillTime();notifyChange(oldDate);return rv},stopEvent=function(e){e.stopPropagation();e.preventDefault()},change=function(e){pMoment.lang(picker.options.language);var input=$(e.target),oldDate=picker.date,d=pMoment(input.val(),picker.format,picker.options.useStrict);if(d.isValid()){update();picker.setValue(d);notifyChange(oldDate);set()}else{picker.viewDate=oldDate;notifyChange(oldDate);notifyError(d);picker.unset=true;input.val("")}},showMode=function(dir){if(dir){picker.viewMode=Math.max(picker.minViewMode,Math.min(2,picker.viewMode+dir))}picker.widget.find(".datepicker > div").hide().filter(".datepicker-"+dpGlobal.modes[picker.viewMode].clsName).show()},attachDatePickerEvents=function(){var $this,$parent,expanded,closed,collapseData;picker.widget.on("click",".datepicker *",$.proxy(click,this));picker.widget.on("click","[data-action]",$.proxy(doAction,this));picker.widget.on("mousedown",$.proxy(stopEvent,this));if(picker.options.pickDate&&picker.options.pickTime){picker.widget.on("click.togglePicker",".accordion-toggle",function(e){e.stopPropagation();$this=$(this);$parent=$this.closest("ul");expanded=$parent.find(".in");closed=$parent.find(".collapse:not(.in)");if(expanded&&expanded.length){collapseData=expanded.data("collapse");if(collapseData&&collapseData.transitioning)return;expanded.collapse("hide");closed.collapse("show");$this.find("span").toggleClass(picker.options.icons.time+" "+picker.options.icons.date);picker.element.find(".input-group-addon span").toggleClass(picker.options.icons.time+" "+picker.options.icons.date)}})}if(picker.isInput){picker.element.on({focus:$.proxy(picker.show,this),change:$.proxy(change,this),blur:$.proxy(picker.hide,this)})}else{picker.element.on({change:$.proxy(change,this)},"input");if(picker.component){picker.component.on("click",$.proxy(picker.show,this))}else{picker.element.on("click",$.proxy(picker.show,this))}}},attachDatePickerGlobalEvents=function(){$(window).on("resize.datetimepicker"+picker.id,$.proxy(place,this));if(!picker.isInput){$(document).on("mousedown.datetimepicker"+picker.id,$.proxy(picker.hide,this))}},detachDatePickerEvents=function(){picker.widget.off("click",".datepicker *",picker.click);picker.widget.off("click","[data-action]");picker.widget.off("mousedown",picker.stopEvent);if(picker.options.pickDate&&picker.options.pickTime){picker.widget.off("click.togglePicker")}if(picker.isInput){picker.element.off({focus:picker.show,change:picker.change})}else{picker.element.off({change:picker.change},"input");if(picker.component){picker.component.off("click",picker.show)}else{picker.element.off("click",picker.show)}}},detachDatePickerGlobalEvents=function(){$(window).off("resize.datetimepicker"+picker.id);if(!picker.isInput){$(document).off("mousedown.datetimepicker"+picker.id)}},isInFixed=function(){if(picker.element){var parents=picker.element.parents(),inFixed=false,i;for(i=0;i<parents.length;i++){if($(parents[i]).css("position")=="fixed"){inFixed=true;break}}return inFixed}else{return false}},set=function(){pMoment.lang(picker.options.language);var formatted="",input;if(!picker.unset)formatted=pMoment(picker.date).format(picker.format);if(!picker.isInput){if(picker.component){input=picker.element.find("input");input.val(formatted)}picker.element.data("date",formatted)}else{picker.element.val(formatted)}if(!picker.options.pickTime)picker.hide()},checkDate=function(direction,unit){pMoment.lang(picker.options.language);var newDate;if(direction=="add"){newDate=pMoment(picker.date);if(newDate.hours()==23)newDate.add(1,unit);newDate.add(1,unit)}else{newDate=pMoment(picker.date).subtract(1,unit)}if(newDate.isAfter(picker.options.endDate)||newDate.subtract(1,unit).isBefore(picker.options.startDate)||isInDisableDates(newDate)){notifyError(newDate.format(picker.format));return}if(direction=="add"){picker.date.add(1,unit)}else{picker.date.subtract(1,unit)}},isInDisableDates=function(date){pMoment.lang(picker.options.language);var disabled=picker.options.disabledDates,i;for(i in disabled){if(disabled[i]==pMoment(date).format("L")){return true}}return false},padLeft=function(string){string=string.toString();if(string.length>=2)return string;else return"0"+string},getTemplate=function(pickDate,pickTime,collapse){if(pickDate&&pickTime){return'<div class="bootstrap-datetimepicker-widget dropdown-menu" style="z-index:9999 !important;">'+'<ul class="list-unstyled">'+"<li"+(collapse?' class="collapse in"':"")+">"+'<div class="datepicker">'+dpGlobal.template+"</div>"+"</li>"+'<li class="picker-switch accordion-toggle"><a class="btn" style="width:100%"><span class="'+picker.options.icons.time+'"></span></a></li>'+"<li"+(collapse?' class="collapse"':"")+">"+'<div class="timepicker">'+tpGlobal.getTemplate()+"</div>"+"</li>"+"</ul>"+"</div>"}else if(pickTime){return'<div class="bootstrap-datetimepicker-widget dropdown-menu">'+'<div class="timepicker">'+tpGlobal.getTemplate()+"</div>"+"</div>"}else{return'<div class="bootstrap-datetimepicker-widget dropdown-menu">'+'<div class="datepicker">'+dpGlobal.template+"</div>"+"</div>"}},dpGlobal={modes:[{clsName:"days",navFnc:"month",navStep:1},{clsName:"months",navFnc:"year",navStep:1},{clsName:"years",navFnc:"year",navStep:10}],headTemplate:"<thead>"+"<tr>"+'<th class="prev">&lsaquo;</th><th colspan="5" class="switch"></th><th class="next">&rsaquo;</th>'+"</tr>"+"</thead>",contTemplate:'<tbody><tr><td colspan="7"></td></tr></tbody>'},tpGlobal={hourTemplate:'<span data-action="showHours" data-time-component="hours" class="timepicker-hour"></span>',minuteTemplate:'<span data-action="showMinutes" data-time-component="minutes" class="timepicker-minute"></span>'};dpGlobal.template='<div class="datepicker-days">'+'<table class="table-condensed">'+dpGlobal.headTemplate+"<tbody></tbody></table>"+"</div>"+'<div class="datepicker-months">'+'<table class="table-condensed">'+dpGlobal.headTemplate+dpGlobal.contTemplate+"</table>"+"</div>"+'<div class="datepicker-years">'+'<table class="table-condensed">'+dpGlobal.headTemplate+dpGlobal.contTemplate+"</table>"+"</div>";tpGlobal.getTemplate=function(){return'<div class="timepicker-picker">'+'<table class="table-condensed">'+"<tr>"+'<td><a href="#" class="btn" data-action="incrementHours"><span class="'+picker.options.icons.up+'"></span></a></td>'+'<td class="separator"></td>'+'<td><a href="#" class="btn" data-action="incrementMinutes"><span class="'+picker.options.icons.up+'"></span></a></td>'+(!picker.use24hours?'<td class="separator"></td>':"")+"</tr>"+"<tr>"+"<td>"+tpGlobal.hourTemplate+"</td> "+'<td class="separator">:</td>'+"<td>"+tpGlobal.minuteTemplate+"</td> "+(!picker.use24hours?'<td class="separator"></td>'+'<td><button type="button" class="btn btn-primary" data-action="togglePeriod"></button></td>':"")+"</tr>"+"<tr>"+'<td><a href="#" class="btn" data-action="decrementHours"><span class="'+picker.options.icons.down+'"></span></a></td>'+'<td class="separator"></td>'+'<td><a href="#" class="btn" data-action="decrementMinutes"><span class="'+picker.options.icons.down+'"></span></a></td>'+(!picker.use24hours?'<td class="separator"></td>':"")+"</tr>"+"</table>"+"</div>"+'<div class="timepicker-hours" data-action="selectHour">'+'<table class="table-condensed"></table>'+"</div>"+'<div class="timepicker-minutes" data-action="selectMinute">'+'<table class="table-condensed"></table>'+"</div>"};picker.destroy=function(){detachDatePickerEvents();detachDatePickerGlobalEvents();picker.widget.remove();picker.element.removeData("DateTimePicker");if(picker.component)picker.component.removeData("DateTimePicker")};picker.show=function(e){picker.widget.show();picker.height=picker.component?picker.component.outerHeight():picker.element.outerHeight();place();picker.element.trigger({type:"show.dp",date:picker.date});attachDatePickerGlobalEvents();if(e){stopEvent(e)}},picker.disable=function(){picker.element.find("input").prop("disabled",true);detachDatePickerEvents()},picker.enable=function(){picker.element.find("input").prop("disabled",false);attachDatePickerEvents()},picker.hide=function(){var collapse=picker.widget.find(".collapse"),i,collapseData;for(i=0;i<collapse.length;i++){collapseData=collapse.eq(i).data("collapse");if(collapseData&&collapseData.transitioning)return}picker.widget.hide();picker.viewMode=picker.startViewMode;showMode();picker.element.trigger({type:"hide.dp",date:picker.date});detachDatePickerGlobalEvents()},picker.setValue=function(newDate){pMoment.lang(picker.options.language);if(!newDate){picker.unset=true}else{picker.unset=false}if(!pMoment.isMoment(newDate))newDate=pMoment(newDate);if(newDate.isValid()){picker.date=newDate;set();picker.viewDate=pMoment({y:picker.date.year(),M:picker.date.month()});fillDate();fillTime()}else{notifyError(newDate)}},picker.getDate=function(){if(picker.unset)return null;return picker.date},picker.setDate=function(date){if(!date)picker.setValue(null);else picker.setValue(date)},picker.setEndDate=function(date){picker.options.endDate=pMoment(date);if(!picker.options.endDate.isValid()){picker.options.endDate=pMoment().add(50,"y")}if(picker.viewDate)update()},picker.setStartDate=function(date){picker.options.startDate=pMoment(date);if(!picker.options.startDate.isValid()){picker.options.startDate=pMoment({y:1970})}if(picker.viewDate)update()};init()};$.fn.datetimepicker=function(options){return this.each(function(){var $this=$(this),data=$this.data("DateTimePicker");if(!data)$this.data("DateTimePicker",new DateTimePicker(this,options))})}})(jQuery); \ No newline at end of file
diff --git a/library/bootstrap-datetimepicker/js/moment.js b/library/bootstrap-datetimepicker/js/moment.js
deleted file mode 100644
index 0168748fa..000000000
--- a/library/bootstrap-datetimepicker/js/moment.js
+++ /dev/null
@@ -1,7063 +0,0 @@
-//! moment.js
-//! version : 2.4.0
-//! authors : Tim Wood, Iskren Chernev, Moment.js contributors
-//! license : MIT
-//! momentjs.com
-
-(function (undefined) {
-
- /************************************
- Constants
- ************************************/
-
- var moment,
- VERSION = "2.4.0",
- round = Math.round,
- i,
-
- YEAR = 0,
- MONTH = 1,
- DATE = 2,
- HOUR = 3,
- MINUTE = 4,
- SECOND = 5,
- MILLISECOND = 6,
-
- // internal storage for language config files
- languages = {},
-
- // check for nodeJS
- hasModule = (typeof module !== 'undefined' && module.exports),
-
- // ASP.NET json date format regex
- aspNetJsonRegex = /^\/?Date\((\-?\d+)/i,
- aspNetTimeSpanJsonRegex = /(\-)?(?:(\d*)\.)?(\d+)\:(\d+)(?:\:(\d+)\.?(\d{3})?)?/,
-
- // from http://docs.closure-library.googlecode.com/git/closure_goog_date_date.js.source.html
- // somewhat more in line with 4.4.3.2 2004 spec, but allows decimal anywhere
- isoDurationRegex = /^(-)?P(?:(?:([0-9,.]*)Y)?(?:([0-9,.]*)M)?(?:([0-9,.]*)D)?(?:T(?:([0-9,.]*)H)?(?:([0-9,.]*)M)?(?:([0-9,.]*)S)?)?|([0-9,.]*)W)$/,
-
- // format tokens
- formattingTokens = /(\[[^\[]*\])|(\\)?(Mo|MM?M?M?|Do|DDDo|DD?D?D?|ddd?d?|do?|w[o|w]?|W[o|W]?|YYYYY|YYYY|YY|gg(ggg?)?|GG(GGG?)?|e|E|a|A|hh?|HH?|mm?|ss?|S{1,4}|X|zz?|ZZ?|.)/g,
- localFormattingTokens = /(\[[^\[]*\])|(\\)?(LT|LL?L?L?|l{1,4})/g,
-
- // parsing token regexes
- parseTokenOneOrTwoDigits = /\d\d?/, // 0 - 99
- parseTokenOneToThreeDigits = /\d{1,3}/, // 0 - 999
- parseTokenThreeDigits = /\d{3}/, // 000 - 999
- parseTokenFourDigits = /\d{1,4}/, // 0 - 9999
- parseTokenSixDigits = /[+\-]?\d{1,6}/, // -999,999 - 999,999
- parseTokenDigits = /\d+/, // nonzero number of digits
- parseTokenWord = /[0-9]*['a-z\u00A0-\u05FF\u0700-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]+|[\u0600-\u06FF\/]+(\s*?[\u0600-\u06FF]+){1,2}/i, // any word (or two) characters or numbers including two/three word month in arabic.
- parseTokenTimezone = /Z|[\+\-]\d\d:?\d\d/i, // +00:00 -00:00 +0000 -0000 or Z
- parseTokenT = /T/i, // T (ISO seperator)
- parseTokenTimestampMs = /[\+\-]?\d+(\.\d{1,3})?/, // 123456789 123456789.123
-
- // preliminary iso regex
- // 0000-00-00 0000-W00 or 0000-W00-0 + T + 00 or 00:00 or 00:00:00 or 00:00:00.000 + +00:00 or +0000)
- isoRegex = /^\s*\d{4}-(?:(\d\d-\d\d)|(W\d\d$)|(W\d\d-\d)|(\d\d\d))((T| )(\d\d(:\d\d(:\d\d(\.\d+)?)?)?)?([\+\-]\d\d:?\d\d|Z)?)?$/,
-
- isoFormat = 'YYYY-MM-DDTHH:mm:ssZ',
-
- isoDates = [
- 'YYYY-MM-DD',
- 'GGGG-[W]WW',
- 'GGGG-[W]WW-E',
- 'YYYY-DDD'
- ],
-
- // iso time formats and regexes
- isoTimes = [
- ['HH:mm:ss.SSSS', /(T| )\d\d:\d\d:\d\d\.\d{1,3}/],
- ['HH:mm:ss', /(T| )\d\d:\d\d:\d\d/],
- ['HH:mm', /(T| )\d\d:\d\d/],
- ['HH', /(T| )\d\d/]
- ],
-
- // timezone chunker "+10:00" > ["10", "00"] or "-1530" > ["-15", "30"]
- parseTimezoneChunker = /([\+\-]|\d\d)/gi,
-
- // getter and setter names
- proxyGettersAndSetters = 'Date|Hours|Minutes|Seconds|Milliseconds'.split('|'),
- unitMillisecondFactors = {
- 'Milliseconds' : 1,
- 'Seconds' : 1e3,
- 'Minutes' : 6e4,
- 'Hours' : 36e5,
- 'Days' : 864e5,
- 'Months' : 2592e6,
- 'Years' : 31536e6
- },
-
- unitAliases = {
- ms : 'millisecond',
- s : 'second',
- m : 'minute',
- h : 'hour',
- d : 'day',
- D : 'date',
- w : 'week',
- W : 'isoWeek',
- M : 'month',
- y : 'year',
- DDD : 'dayOfYear',
- e : 'weekday',
- E : 'isoWeekday',
- gg: 'weekYear',
- GG: 'isoWeekYear'
- },
-
- camelFunctions = {
- dayofyear : 'dayOfYear',
- isoweekday : 'isoWeekday',
- isoweek : 'isoWeek',
- weekyear : 'weekYear',
- isoweekyear : 'isoWeekYear'
- },
-
- // format function strings
- formatFunctions = {},
-
- // tokens to ordinalize and pad
- ordinalizeTokens = 'DDD w W M D d'.split(' '),
- paddedTokens = 'M D H h m s w W'.split(' '),
-
- formatTokenFunctions = {
- M : function () {
- return this.month() + 1;
- },
- MMM : function (format) {
- return this.lang().monthsShort(this, format);
- },
- MMMM : function (format) {
- return this.lang().months(this, format);
- },
- D : function () {
- return this.date();
- },
- DDD : function () {
- return this.dayOfYear();
- },
- d : function () {
- return this.day();
- },
- dd : function (format) {
- return this.lang().weekdaysMin(this, format);
- },
- ddd : function (format) {
- return this.lang().weekdaysShort(this, format);
- },
- dddd : function (format) {
- return this.lang().weekdays(this, format);
- },
- w : function () {
- return this.week();
- },
- W : function () {
- return this.isoWeek();
- },
- YY : function () {
- return leftZeroFill(this.year() % 100, 2);
- },
- YYYY : function () {
- return leftZeroFill(this.year(), 4);
- },
- YYYYY : function () {
- return leftZeroFill(this.year(), 5);
- },
- gg : function () {
- return leftZeroFill(this.weekYear() % 100, 2);
- },
- gggg : function () {
- return this.weekYear();
- },
- ggggg : function () {
- return leftZeroFill(this.weekYear(), 5);
- },
- GG : function () {
- return leftZeroFill(this.isoWeekYear() % 100, 2);
- },
- GGGG : function () {
- return this.isoWeekYear();
- },
- GGGGG : function () {
- return leftZeroFill(this.isoWeekYear(), 5);
- },
- e : function () {
- return this.weekday();
- },
- E : function () {
- return this.isoWeekday();
- },
- a : function () {
- return this.lang().meridiem(this.hours(), this.minutes(), true);
- },
- A : function () {
- return this.lang().meridiem(this.hours(), this.minutes(), false);
- },
- H : function () {
- return this.hours();
- },
- h : function () {
- return this.hours() % 12 || 12;
- },
- m : function () {
- return this.minutes();
- },
- s : function () {
- return this.seconds();
- },
- S : function () {
- return toInt(this.milliseconds() / 100);
- },
- SS : function () {
- return leftZeroFill(toInt(this.milliseconds() / 10), 2);
- },
- SSS : function () {
- return leftZeroFill(this.milliseconds(), 3);
- },
- SSSS : function () {
- return leftZeroFill(this.milliseconds(), 3);
- },
- Z : function () {
- var a = -this.zone(),
- b = "+";
- if (a < 0) {
- a = -a;
- b = "-";
- }
- return b + leftZeroFill(toInt(a / 60), 2) + ":" + leftZeroFill(toInt(a) % 60, 2);
- },
- ZZ : function () {
- var a = -this.zone(),
- b = "+";
- if (a < 0) {
- a = -a;
- b = "-";
- }
- return b + leftZeroFill(toInt(10 * a / 6), 4);
- },
- z : function () {
- return this.zoneAbbr();
- },
- zz : function () {
- return this.zoneName();
- },
- X : function () {
- return this.unix();
- }
- },
-
- lists = ['months', 'monthsShort', 'weekdays', 'weekdaysShort', 'weekdaysMin'];
-
- function padToken(func, count) {
- return function (a) {
- return leftZeroFill(func.call(this, a), count);
- };
- }
- function ordinalizeToken(func, period) {
- return function (a) {
- return this.lang().ordinal(func.call(this, a), period);
- };
- }
-
- while (ordinalizeTokens.length) {
- i = ordinalizeTokens.pop();
- formatTokenFunctions[i + 'o'] = ordinalizeToken(formatTokenFunctions[i], i);
- }
- while (paddedTokens.length) {
- i = paddedTokens.pop();
- formatTokenFunctions[i + i] = padToken(formatTokenFunctions[i], 2);
- }
- formatTokenFunctions.DDDD = padToken(formatTokenFunctions.DDD, 3);
-
-
- /************************************
- Constructors
- ************************************/
-
- function Language() {
-
- }
-
- // Moment prototype object
- function Moment(config) {
- checkOverflow(config);
- extend(this, config);
- }
-
- // Duration Constructor
- function Duration(duration) {
- var normalizedInput = normalizeObjectUnits(duration),
- years = normalizedInput.year || 0,
- months = normalizedInput.month || 0,
- weeks = normalizedInput.week || 0,
- days = normalizedInput.day || 0,
- hours = normalizedInput.hour || 0,
- minutes = normalizedInput.minute || 0,
- seconds = normalizedInput.second || 0,
- milliseconds = normalizedInput.millisecond || 0;
-
- // store reference to input for deterministic cloning
- this._input = duration;
-
- // representation for dateAddRemove
- this._milliseconds = +milliseconds +
- seconds * 1e3 + // 1000
- minutes * 6e4 + // 1000 * 60
- hours * 36e5; // 1000 * 60 * 60
- // Because of dateAddRemove treats 24 hours as different from a
- // day when working around DST, we need to store them separately
- this._days = +days +
- weeks * 7;
- // It is impossible translate months into days without knowing
- // which months you are are talking about, so we have to store
- // it separately.
- this._months = +months +
- years * 12;
-
- this._data = {};
-
- this._bubble();
- }
-
- /************************************
- Helpers
- ************************************/
-
-
- function extend(a, b) {
- for (var i in b) {
- if (b.hasOwnProperty(i)) {
- a[i] = b[i];
- }
- }
-
- if (b.hasOwnProperty("toString")) {
- a.toString = b.toString;
- }
-
- if (b.hasOwnProperty("valueOf")) {
- a.valueOf = b.valueOf;
- }
-
- return a;
- }
-
- function absRound(number) {
- if (number < 0) {
- return Math.ceil(number);
- } else {
- return Math.floor(number);
- }
- }
-
- // left zero fill a number
- // see http://jsperf.com/left-zero-filling for performance comparison
- function leftZeroFill(number, targetLength) {
- var output = number + '';
- while (output.length < targetLength) {
- output = '0' + output;
- }
- return output;
- }
-
- // helper function for _.addTime and _.subtractTime
- function addOrSubtractDurationFromMoment(mom, duration, isAdding, ignoreUpdateOffset) {
- var milliseconds = duration._milliseconds,
- days = duration._days,
- months = duration._months,
- minutes,
- hours;
-
- if (milliseconds) {
- mom._d.setTime(+mom._d + milliseconds * isAdding);
- }
- // store the minutes and hours so we can restore them
- if (days || months) {
- minutes = mom.minute();
- hours = mom.hour();
- }
- if (days) {
- mom.date(mom.date() + days * isAdding);
- }
- if (months) {
- mom.month(mom.month() + months * isAdding);
- }
- if (milliseconds && !ignoreUpdateOffset) {
- moment.updateOffset(mom);
- }
- // restore the minutes and hours after possibly changing dst
- if (days || months) {
- mom.minute(minutes);
- mom.hour(hours);
- }
- }
-
- // check if is an array
- function isArray(input) {
- return Object.prototype.toString.call(input) === '[object Array]';
- }
-
- function isDate(input) {
- return Object.prototype.toString.call(input) === '[object Date]' ||
- input instanceof Date;
- }
-
- // compare two arrays, return the number of differences
- function compareArrays(array1, array2, dontConvert) {
- var len = Math.min(array1.length, array2.length),
- lengthDiff = Math.abs(array1.length - array2.length),
- diffs = 0,
- i;
- for (i = 0; i < len; i++) {
- if ((dontConvert && array1[i] !== array2[i]) ||
- (!dontConvert && toInt(array1[i]) !== toInt(array2[i]))) {
- diffs++;
- }
- }
- return diffs + lengthDiff;
- }
-
- function normalizeUnits(units) {
- if (units) {
- var lowered = units.toLowerCase().replace(/(.)s$/, '$1');
- units = unitAliases[units] || camelFunctions[lowered] || lowered;
- }
- return units;
- }
-
- function normalizeObjectUnits(inputObject) {
- var normalizedInput = {},
- normalizedProp,
- prop,
- index;
-
- for (prop in inputObject) {
- if (inputObject.hasOwnProperty(prop)) {
- normalizedProp = normalizeUnits(prop);
- if (normalizedProp) {
- normalizedInput[normalizedProp] = inputObject[prop];
- }
- }
- }
-
- return normalizedInput;
- }
-
- function makeList(field) {
- var count, setter;
-
- if (field.indexOf('week') === 0) {
- count = 7;
- setter = 'day';
- }
- else if (field.indexOf('month') === 0) {
- count = 12;
- setter = 'month';
- }
- else {
- return;
- }
-
- moment[field] = function (format, index) {
- var i, getter,
- method = moment.fn._lang[field],
- results = [];
-
- if (typeof format === 'number') {
- index = format;
- format = undefined;
- }
-
- getter = function (i) {
- var m = moment().utc().set(setter, i);
- return method.call(moment.fn._lang, m, format || '');
- };
-
- if (index != null) {
- return getter(index);
- }
- else {
- for (i = 0; i < count; i++) {
- results.push(getter(i));
- }
- return results;
- }
- };
- }
-
- function toInt(argumentForCoercion) {
- var coercedNumber = +argumentForCoercion,
- value = 0;
-
- if (coercedNumber !== 0 && isFinite(coercedNumber)) {
- if (coercedNumber >= 0) {
- value = Math.floor(coercedNumber);
- } else {
- value = Math.ceil(coercedNumber);
- }
- }
-
- return value;
- }
-
- function daysInMonth(year, month) {
- return new Date(Date.UTC(year, month + 1, 0)).getUTCDate();
- }
-
- function daysInYear(year) {
- return isLeapYear(year) ? 366 : 365;
- }
-
- function isLeapYear(year) {
- return (year % 4 === 0 && year % 100 !== 0) || year % 400 === 0;
- }
-
- function checkOverflow(m) {
- var overflow;
- if (m._a && m._pf.overflow === -2) {
- overflow =
- m._a[MONTH] < 0 || m._a[MONTH] > 11 ? MONTH :
- m._a[DATE] < 1 || m._a[DATE] > daysInMonth(m._a[YEAR], m._a[MONTH]) ? DATE :
- m._a[HOUR] < 0 || m._a[HOUR] > 23 ? HOUR :
- m._a[MINUTE] < 0 || m._a[MINUTE] > 59 ? MINUTE :
- m._a[SECOND] < 0 || m._a[SECOND] > 59 ? SECOND :
- m._a[MILLISECOND] < 0 || m._a[MILLISECOND] > 999 ? MILLISECOND :
- -1;
-
- if (m._pf._overflowDayOfYear && (overflow < YEAR || overflow > DATE)) {
- overflow = DATE;
- }
-
- m._pf.overflow = overflow;
- }
- }
-
- function initializeParsingFlags(config) {
- config._pf = {
- empty : false,
- unusedTokens : [],
- unusedInput : [],
- overflow : -2,
- charsLeftOver : 0,
- nullInput : false,
- invalidMonth : null,
- invalidFormat : false,
- userInvalidated : false,
- iso: false
- };
- }
-
- function isValid(m) {
- if (m._isValid == null) {
- m._isValid = !isNaN(m._d.getTime()) &&
- m._pf.overflow < 0 &&
- !m._pf.empty &&
- !m._pf.invalidMonth &&
- !m._pf.nullInput &&
- !m._pf.invalidFormat &&
- !m._pf.userInvalidated;
-
- if (m._strict) {
- m._isValid = m._isValid &&
- m._pf.charsLeftOver === 0 &&
- m._pf.unusedTokens.length === 0;
- }
- }
- return m._isValid;
- }
-
- function normalizeLanguage(key) {
- return key ? key.toLowerCase().replace('_', '-') : key;
- }
-
- /************************************
- Languages
- ************************************/
-
-
- extend(Language.prototype, {
-
- set : function (config) {
- var prop, i;
- for (i in config) {
- prop = config[i];
- if (typeof prop === 'function') {
- this[i] = prop;
- } else {
- this['_' + i] = prop;
- }
- }
- },
-
- _months : "January_February_March_April_May_June_July_August_September_October_November_December".split("_"),
- months : function (m) {
- return this._months[m.month()];
- },
-
- _monthsShort : "Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec".split("_"),
- monthsShort : function (m) {
- return this._monthsShort[m.month()];
- },
-
- monthsParse : function (monthName) {
- var i, mom, regex;
-
- if (!this._monthsParse) {
- this._monthsParse = [];
- }
-
- for (i = 0; i < 12; i++) {
- // make the regex if we don't have it already
- if (!this._monthsParse[i]) {
- mom = moment.utc([2000, i]);
- regex = '^' + this.months(mom, '') + '|^' + this.monthsShort(mom, '');
- this._monthsParse[i] = new RegExp(regex.replace('.', ''), 'i');
- }
- // test the regex
- if (this._monthsParse[i].test(monthName)) {
- return i;
- }
- }
- },
-
- _weekdays : "Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),
- weekdays : function (m) {
- return this._weekdays[m.day()];
- },
-
- _weekdaysShort : "Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"),
- weekdaysShort : function (m) {
- return this._weekdaysShort[m.day()];
- },
-
- _weekdaysMin : "Su_Mo_Tu_We_Th_Fr_Sa".split("_"),
- weekdaysMin : function (m) {
- return this._weekdaysMin[m.day()];
- },
-
- weekdaysParse : function (weekdayName) {
- var i, mom, regex;
-
- if (!this._weekdaysParse) {
- this._weekdaysParse = [];
- }
-
- for (i = 0; i < 7; i++) {
- // make the regex if we don't have it already
- if (!this._weekdaysParse[i]) {
- mom = moment([2000, 1]).day(i);
- regex = '^' + this.weekdays(mom, '') + '|^' + this.weekdaysShort(mom, '') + '|^' + this.weekdaysMin(mom, '');
- this._weekdaysParse[i] = new RegExp(regex.replace('.', ''), 'i');
- }
- // test the regex
- if (this._weekdaysParse[i].test(weekdayName)) {
- return i;
- }
- }
- },
-
- _longDateFormat : {
- LT : "h:mm A",
- L : "MM/DD/YYYY",
- LL : "MMMM D YYYY",
- LLL : "MMMM D YYYY LT",
- LLLL : "dddd, MMMM D YYYY LT"
- },
- longDateFormat : function (key) {
- var output = this._longDateFormat[key];
- if (!output && this._longDateFormat[key.toUpperCase()]) {
- output = this._longDateFormat[key.toUpperCase()].replace(/MMMM|MM|DD|dddd/g, function (val) {
- return val.slice(1);
- });
- this._longDateFormat[key] = output;
- }
- return output;
- },
-
- isPM : function (input) {
- // IE8 Quirks Mode & IE7 Standards Mode do not allow accessing strings like arrays
- // Using charAt should be more compatible.
- return ((input + '').toLowerCase().charAt(0) === 'p');
- },
-
- _meridiemParse : /[ap]\.?m?\.?/i,
- meridiem : function (hours, minutes, isLower) {
- if (hours > 11) {
- return isLower ? 'pm' : 'PM';
- } else {
- return isLower ? 'am' : 'AM';
- }
- },
-
- _calendar : {
- sameDay : '[Today at] LT',
- nextDay : '[Tomorrow at] LT',
- nextWeek : 'dddd [at] LT',
- lastDay : '[Yesterday at] LT',
- lastWeek : '[Last] dddd [at] LT',
- sameElse : 'L'
- },
- calendar : function (key, mom) {
- var output = this._calendar[key];
- return typeof output === 'function' ? output.apply(mom) : output;
- },
-
- _relativeTime : {
- future : "in %s",
- past : "%s ago",
- s : "a few 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"
- },
- relativeTime : function (number, withoutSuffix, string, isFuture) {
- var output = this._relativeTime[string];
- return (typeof output === 'function') ?
- output(number, withoutSuffix, string, isFuture) :
- output.replace(/%d/i, number);
- },
- pastFuture : function (diff, output) {
- var format = this._relativeTime[diff > 0 ? 'future' : 'past'];
- return typeof format === 'function' ? format(output) : format.replace(/%s/i, output);
- },
-
- ordinal : function (number) {
- return this._ordinal.replace("%d", number);
- },
- _ordinal : "%d",
-
- preparse : function (string) {
- return string;
- },
-
- postformat : function (string) {
- return string;
- },
-
- week : function (mom) {
- return weekOfYear(mom, this._week.dow, this._week.doy).week;
- },
-
- _week : {
- dow : 0, // Sunday is the first day of the week.
- doy : 6 // The week that contains Jan 1st is the first week of the year.
- },
-
- _invalidDate: 'Invalid date',
- invalidDate: function () {
- return this._invalidDate;
- }
- });
-
- // Loads a language definition into the `languages` cache. The function
- // takes a key and optionally values. If not in the browser and no values
- // are provided, it will load the language file module. As a convenience,
- // this function also returns the language values.
- function loadLang(key, values) {
- values.abbr = key;
- if (!languages[key]) {
- languages[key] = new Language();
- }
- languages[key].set(values);
- return languages[key];
- }
-
- // Remove a language from the `languages` cache. Mostly useful in tests.
- function unloadLang(key) {
- delete languages[key];
- }
-
- // Determines which language definition to use and returns it.
- //
- // With no parameters, it will return the global language. If you
- // pass in a language key, such as 'en', it will return the
- // definition for 'en', so long as 'en' has already been loaded using
- // moment.lang.
- function getLangDefinition(key) {
- var i = 0, j, lang, next, split,
- get = function (k) {
- if (!languages[k] && hasModule) {
- try {
- require('./lang/' + k);
- } catch (e) { }
- }
- return languages[k];
- };
-
- if (!key) {
- return moment.fn._lang;
- }
-
- if (!isArray(key)) {
- //short-circuit everything else
- lang = get(key);
- if (lang) {
- return lang;
- }
- key = [key];
- }
-
- //pick the language from the array
- //try ['en-au', 'en-gb'] as 'en-au', 'en-gb', 'en', as in move through the list trying each
- //substring from most specific to least, but move to the next array item if it's a more specific variant than the current root
- while (i < key.length) {
- split = normalizeLanguage(key[i]).split('-');
- j = split.length;
- next = normalizeLanguage(key[i + 1]);
- next = next ? next.split('-') : null;
- while (j > 0) {
- lang = get(split.slice(0, j).join('-'));
- if (lang) {
- return lang;
- }
- if (next && next.length >= j && compareArrays(split, next, true) >= j - 1) {
- //the next array item is better than a shallower substring of this one
- break;
- }
- j--;
- }
- i++;
- }
- return moment.fn._lang;
- }
-
- /************************************
- Formatting
- ************************************/
-
-
- function removeFormattingTokens(input) {
- if (input.match(/\[[\s\S]/)) {
- return input.replace(/^\[|\]$/g, "");
- }
- return input.replace(/\\/g, "");
- }
-
- function makeFormatFunction(format) {
- var array = format.match(formattingTokens), i, length;
-
- for (i = 0, length = array.length; i < length; i++) {
- if (formatTokenFunctions[array[i]]) {
- array[i] = formatTokenFunctions[array[i]];
- } else {
- array[i] = removeFormattingTokens(array[i]);
- }
- }
-
- return function (mom) {
- var output = "";
- for (i = 0; i < length; i++) {
- output += array[i] instanceof Function ? array[i].call(mom, format) : array[i];
- }
- return output;
- };
- }
-
- // format date using native date object
- function formatMoment(m, format) {
-
- if (!m.isValid()) {
- return m.lang().invalidDate();
- }
-
- format = expandFormat(format, m.lang());
-
- if (!formatFunctions[format]) {
- formatFunctions[format] = makeFormatFunction(format);
- }
-
- return formatFunctions[format](m);
- }
-
- function expandFormat(format, lang) {
- var i = 5;
-
- function replaceLongDateFormatTokens(input) {
- return lang.longDateFormat(input) || input;
- }
-
- localFormattingTokens.lastIndex = 0;
- while (i >= 0 && localFormattingTokens.test(format)) {
- format = format.replace(localFormattingTokens, replaceLongDateFormatTokens);
- localFormattingTokens.lastIndex = 0;
- i -= 1;
- }
-
- return format;
- }
-
-
- /************************************
- Parsing
- ************************************/
-
-
- // get the regex to find the next token
- function getParseRegexForToken(token, config) {
- var a;
- switch (token) {
- case 'DDDD':
- return parseTokenThreeDigits;
- case 'YYYY':
- case 'GGGG':
- case 'gggg':
- return parseTokenFourDigits;
- case 'YYYYY':
- case 'GGGGG':
- case 'ggggg':
- return parseTokenSixDigits;
- case 'S':
- case 'SS':
- case 'SSS':
- case 'DDD':
- return parseTokenOneToThreeDigits;
- case 'MMM':
- case 'MMMM':
- case 'dd':
- case 'ddd':
- case 'dddd':
- return parseTokenWord;
- case 'a':
- case 'A':
- return getLangDefinition(config._l)._meridiemParse;
- case 'X':
- return parseTokenTimestampMs;
- case 'Z':
- case 'ZZ':
- return parseTokenTimezone;
- case 'T':
- return parseTokenT;
- case 'SSSS':
- return parseTokenDigits;
- case 'MM':
- case 'DD':
- case 'YY':
- case 'GG':
- case 'gg':
- case 'HH':
- case 'hh':
- case 'mm':
- case 'ss':
- case 'M':
- case 'D':
- case 'd':
- case 'H':
- case 'h':
- case 'm':
- case 's':
- case 'w':
- case 'ww':
- case 'W':
- case 'WW':
- case 'e':
- case 'E':
- return parseTokenOneOrTwoDigits;
- default :
- a = new RegExp(regexpEscape(unescapeFormat(token.replace('\\', '')), "i"));
- return a;
- }
- }
-
- function timezoneMinutesFromString(string) {
- var tzchunk = (parseTokenTimezone.exec(string) || [])[0],
- parts = (tzchunk + '').match(parseTimezoneChunker) || ['-', 0, 0],
- minutes = +(parts[1] * 60) + toInt(parts[2]);
-
- return parts[0] === '+' ? -minutes : minutes;
- }
-
- // function to convert string input to date
- function addTimeToArrayFromToken(token, input, config) {
- var a, datePartArray = config._a;
-
- switch (token) {
- // MONTH
- case 'M' : // fall through to MM
- case 'MM' :
- if (input != null) {
- datePartArray[MONTH] = toInt(input) - 1;
- }
- break;
- case 'MMM' : // fall through to MMMM
- case 'MMMM' :
- a = getLangDefinition(config._l).monthsParse(input);
- // if we didn't find a month name, mark the date as invalid.
- if (a != null) {
- datePartArray[MONTH] = a;
- } else {
- config._pf.invalidMonth = input;
- }
- break;
- // DAY OF MONTH
- case 'D' : // fall through to DD
- case 'DD' :
- if (input != null) {
- datePartArray[DATE] = toInt(input);
- }
- break;
- // DAY OF YEAR
- case 'DDD' : // fall through to DDDD
- case 'DDDD' :
- if (input != null) {
- config._dayOfYear = toInt(input);
- }
-
- break;
- // YEAR
- case 'YY' :
- datePartArray[YEAR] = toInt(input) + (toInt(input) > 68 ? 1900 : 2000);
- break;
- case 'YYYY' :
- case 'YYYYY' :
- datePartArray[YEAR] = toInt(input);
- break;
- // AM / PM
- case 'a' : // fall through to A
- case 'A' :
- config._isPm = getLangDefinition(config._l).isPM(input);
- break;
- // 24 HOUR
- case 'H' : // fall through to hh
- case 'HH' : // fall through to hh
- case 'h' : // fall through to hh
- case 'hh' :
- datePartArray[HOUR] = toInt(input);
- break;
- // MINUTE
- case 'm' : // fall through to mm
- case 'mm' :
- datePartArray[MINUTE] = toInt(input);
- break;
- // SECOND
- case 's' : // fall through to ss
- case 'ss' :
- datePartArray[SECOND] = toInt(input);
- break;
- // MILLISECOND
- case 'S' :
- case 'SS' :
- case 'SSS' :
- case 'SSSS' :
- datePartArray[MILLISECOND] = toInt(('0.' + input) * 1000);
- break;
- // UNIX TIMESTAMP WITH MS
- case 'X':
- config._d = new Date(parseFloat(input) * 1000);
- break;
- // TIMEZONE
- case 'Z' : // fall through to ZZ
- case 'ZZ' :
- config._useUTC = true;
- config._tzm = timezoneMinutesFromString(input);
- break;
- case 'w':
- case 'ww':
- case 'W':
- case 'WW':
- case 'd':
- case 'dd':
- case 'ddd':
- case 'dddd':
- case 'e':
- case 'E':
- token = token.substr(0, 1);
- /* falls through */
- case 'gg':
- case 'gggg':
- case 'GG':
- case 'GGGG':
- case 'GGGGG':
- token = token.substr(0, 2);
- if (input) {
- config._w = config._w || {};
- config._w[token] = input;
- }
- break;
- }
- }
-
- // convert an array to a date.
- // the array should mirror the parameters below
- // note: all values past the year are optional and will default to the lowest possible value.
- // [year, month, day , hour, minute, second, millisecond]
- function dateFromConfig(config) {
- var i, date, input = [], currentDate,
- yearToUse, fixYear, w, temp, lang, weekday, week;
-
- if (config._d) {
- return;
- }
-
- currentDate = currentDateArray(config);
-
- //compute day of the year from weeks and weekdays
- if (config._w && config._a[DATE] == null && config._a[MONTH] == null) {
- fixYear = function (val) {
- return val ?
- (val.length < 3 ? (parseInt(val, 10) > 68 ? '19' + val : '20' + val) : val) :
- (config._a[YEAR] == null ? moment().weekYear() : config._a[YEAR]);
- };
-
- w = config._w;
- if (w.GG != null || w.W != null || w.E != null) {
- temp = dayOfYearFromWeeks(fixYear(w.GG), w.W || 1, w.E, 4, 1);
- }
- else {
- lang = getLangDefinition(config._l);
- weekday = w.d != null ? parseWeekday(w.d, lang) :
- (w.e != null ? parseInt(w.e, 10) + lang._week.dow : 0);
-
- week = parseInt(w.w, 10) || 1;
-
- //if we're parsing 'd', then the low day numbers may be next week
- if (w.d != null && weekday < lang._week.dow) {
- week++;
- }
-
- temp = dayOfYearFromWeeks(fixYear(w.gg), week, weekday, lang._week.doy, lang._week.dow);
- }
-
- config._a[YEAR] = temp.year;
- config._dayOfYear = temp.dayOfYear;
- }
-
- //if the day of the year is set, figure out what it is
- if (config._dayOfYear) {
- yearToUse = config._a[YEAR] == null ? currentDate[YEAR] : config._a[YEAR];
-
- if (config._dayOfYear > daysInYear(yearToUse)) {
- config._pf._overflowDayOfYear = true;
- }
-
- date = makeUTCDate(yearToUse, 0, config._dayOfYear);
- config._a[MONTH] = date.getUTCMonth();
- config._a[DATE] = date.getUTCDate();
- }
-
- // Default to current date.
- // * if no year, month, day of month are given, default to today
- // * if day of month is given, default month and year
- // * if month is given, default only year
- // * if year is given, don't default anything
- for (i = 0; i < 3 && config._a[i] == null; ++i) {
- config._a[i] = input[i] = currentDate[i];
- }
-
- // Zero out whatever was not defaulted, including time
- for (; i < 7; i++) {
- config._a[i] = input[i] = (config._a[i] == null) ? (i === 2 ? 1 : 0) : config._a[i];
- }
-
- // add the offsets to the time to be parsed so that we can have a clean array for checking isValid
- input[HOUR] += toInt((config._tzm || 0) / 60);
- input[MINUTE] += toInt((config._tzm || 0) % 60);
-
- config._d = (config._useUTC ? makeUTCDate : makeDate).apply(null, input);
- }
-
- function dateFromObject(config) {
- var normalizedInput;
-
- if (config._d) {
- return;
- }
-
- normalizedInput = normalizeObjectUnits(config._i);
- config._a = [
- normalizedInput.year,
- normalizedInput.month,
- normalizedInput.day,
- normalizedInput.hour,
- normalizedInput.minute,
- normalizedInput.second,
- normalizedInput.millisecond
- ];
-
- dateFromConfig(config);
- }
-
- function currentDateArray(config) {
- var now = new Date();
- if (config._useUTC) {
- return [
- now.getUTCFullYear(),
- now.getUTCMonth(),
- now.getUTCDate()
- ];
- } else {
- return [now.getFullYear(), now.getMonth(), now.getDate()];
- }
- }
-
- // date from string and format string
- function makeDateFromStringAndFormat(config) {
-
- config._a = [];
- config._pf.empty = true;
-
- // This array is used to make a Date, either with `new Date` or `Date.UTC`
- var lang = getLangDefinition(config._l),
- string = '' + config._i,
- i, parsedInput, tokens, token, skipped,
- stringLength = string.length,
- totalParsedInputLength = 0;
-
- tokens = expandFormat(config._f, lang).match(formattingTokens) || [];
-
- for (i = 0; i < tokens.length; i++) {
- token = tokens[i];
- parsedInput = (getParseRegexForToken(token, config).exec(string) || [])[0];
- if (parsedInput) {
- skipped = string.substr(0, string.indexOf(parsedInput));
- if (skipped.length > 0) {
- config._pf.unusedInput.push(skipped);
- }
- string = string.slice(string.indexOf(parsedInput) + parsedInput.length);
- totalParsedInputLength += parsedInput.length;
- }
- // don't parse if it's not a known token
- if (formatTokenFunctions[token]) {
- if (parsedInput) {
- config._pf.empty = false;
- }
- else {
- config._pf.unusedTokens.push(token);
- }
- addTimeToArrayFromToken(token, parsedInput, config);
- }
- else if (config._strict && !parsedInput) {
- config._pf.unusedTokens.push(token);
- }
- }
-
- // add remaining unparsed input length to the string
- config._pf.charsLeftOver = stringLength - totalParsedInputLength;
- if (string.length > 0) {
- config._pf.unusedInput.push(string);
- }
-
- // handle am pm
- if (config._isPm && config._a[HOUR] < 12) {
- config._a[HOUR] += 12;
- }
- // if is 12 am, change hours to 0
- if (config._isPm === false && config._a[HOUR] === 12) {
- config._a[HOUR] = 0;
- }
-
- dateFromConfig(config);
- checkOverflow(config);
- }
-
- function unescapeFormat(s) {
- return s.replace(/\\(\[)|\\(\])|\[([^\]\[]*)\]|\\(.)/g, function (matched, p1, p2, p3, p4) {
- return p1 || p2 || p3 || p4;
- });
- }
-
- // Code from http://stackoverflow.com/questions/3561493/is-there-a-regexp-escape-function-in-javascript
- function regexpEscape(s) {
- return s.replace(/[-\/\\^$*+?.()|[\]{}]/g, '\\$&');
- }
-
- // date from string and array of format strings
- function makeDateFromStringAndArray(config) {
- var tempConfig,
- bestMoment,
-
- scoreToBeat,
- i,
- currentScore;
-
- if (config._f.length === 0) {
- config._pf.invalidFormat = true;
- config._d = new Date(NaN);
- return;
- }
-
- for (i = 0; i < config._f.length; i++) {
- currentScore = 0;
- tempConfig = extend({}, config);
- initializeParsingFlags(tempConfig);
- tempConfig._f = config._f[i];
- makeDateFromStringAndFormat(tempConfig);
-
- if (!isValid(tempConfig)) {
- continue;
- }
-
- // if there is any input that was not parsed add a penalty for that format
- currentScore += tempConfig._pf.charsLeftOver;
-
- //or tokens
- currentScore += tempConfig._pf.unusedTokens.length * 10;
-
- tempConfig._pf.score = currentScore;
-
- if (scoreToBeat == null || currentScore < scoreToBeat) {
- scoreToBeat = currentScore;
- bestMoment = tempConfig;
- }
- }
-
- extend(config, bestMoment || tempConfig);
- }
-
- // date from iso format
- function makeDateFromString(config) {
- var i,
- string = config._i,
- match = isoRegex.exec(string);
-
- if (match) {
- config._pf.iso = true;
- for (i = 4; i > 0; i--) {
- if (match[i]) {
- // match[5] should be "T" or undefined
- config._f = isoDates[i - 1] + (match[6] || " ");
- break;
- }
- }
- for (i = 0; i < 4; i++) {
- if (isoTimes[i][1].exec(string)) {
- config._f += isoTimes[i][0];
- break;
- }
- }
- if (parseTokenTimezone.exec(string)) {
- config._f += "Z";
- }
- makeDateFromStringAndFormat(config);
- }
- else {
- config._d = new Date(string);
- }
- }
-
- function makeDateFromInput(config) {
- var input = config._i,
- matched = aspNetJsonRegex.exec(input);
-
- if (input === undefined) {
- config._d = new Date();
- } else if (matched) {
- config._d = new Date(+matched[1]);
- } else if (typeof input === 'string') {
- makeDateFromString(config);
- } else if (isArray(input)) {
- config._a = input.slice(0);
- dateFromConfig(config);
- } else if (isDate(input)) {
- config._d = new Date(+input);
- } else if (typeof(input) === 'object') {
- dateFromObject(config);
- } else {
- config._d = new Date(input);
- }
- }
-
- function makeDate(y, m, d, h, M, s, ms) {
- //can't just apply() to create a date:
- //http://stackoverflow.com/questions/181348/instantiating-a-javascript-object-by-calling-prototype-constructor-apply
- var date = new Date(y, m, d, h, M, s, ms);
-
- //the date constructor doesn't accept years < 1970
- if (y < 1970) {
- date.setFullYear(y);
- }
- return date;
- }
-
- function makeUTCDate(y) {
- var date = new Date(Date.UTC.apply(null, arguments));
- if (y < 1970) {
- date.setUTCFullYear(y);
- }
- return date;
- }
-
- function parseWeekday(input, language) {
- if (typeof input === 'string') {
- if (!isNaN(input)) {
- input = parseInt(input, 10);
- }
- else {
- input = language.weekdaysParse(input);
- if (typeof input !== 'number') {
- return null;
- }
- }
- }
- return input;
- }
-
- /************************************
- Relative Time
- ************************************/
-
-
- // helper function for moment.fn.from, moment.fn.fromNow, and moment.duration.fn.humanize
- function substituteTimeAgo(string, number, withoutSuffix, isFuture, lang) {
- return lang.relativeTime(number || 1, !!withoutSuffix, string, isFuture);
- }
-
- function relativeTime(milliseconds, withoutSuffix, lang) {
- var seconds = round(Math.abs(milliseconds) / 1000),
- minutes = round(seconds / 60),
- hours = round(minutes / 60),
- days = round(hours / 24),
- years = round(days / 365),
- args = seconds < 45 && ['s', seconds] ||
- minutes === 1 && ['m'] ||
- minutes < 45 && ['mm', minutes] ||
- hours === 1 && ['h'] ||
- hours < 22 && ['hh', hours] ||
- days === 1 && ['d'] ||
- days <= 25 && ['dd', days] ||
- days <= 45 && ['M'] ||
- days < 345 && ['MM', round(days / 30)] ||
- years === 1 && ['y'] || ['yy', years];
- args[2] = withoutSuffix;
- args[3] = milliseconds > 0;
- args[4] = lang;
- return substituteTimeAgo.apply({}, args);
- }
-
-
- /************************************
- Week of Year
- ************************************/
-
-
- // firstDayOfWeek 0 = sun, 6 = sat
- // the day of the week that starts the week
- // (usually sunday or monday)
- // firstDayOfWeekOfYear 0 = sun, 6 = sat
- // the first week is the week that contains the first
- // of this day of the week
- // (eg. ISO weeks use thursday (4))
- function weekOfYear(mom, firstDayOfWeek, firstDayOfWeekOfYear) {
- var end = firstDayOfWeekOfYear - firstDayOfWeek,
- daysToDayOfWeek = firstDayOfWeekOfYear - mom.day(),
- adjustedMoment;
-
-
- if (daysToDayOfWeek > end) {
- daysToDayOfWeek -= 7;
- }
-
- if (daysToDayOfWeek < end - 7) {
- daysToDayOfWeek += 7;
- }
-
- adjustedMoment = moment(mom).add('d', daysToDayOfWeek);
- return {
- week: Math.ceil(adjustedMoment.dayOfYear() / 7),
- year: adjustedMoment.year()
- };
- }
-
- //http://en.wikipedia.org/wiki/ISO_week_date#Calculating_a_date_given_the_year.2C_week_number_and_weekday
- function dayOfYearFromWeeks(year, week, weekday, firstDayOfWeekOfYear, firstDayOfWeek) {
- var d = new Date(Date.UTC(year, 0)).getUTCDay(),
- daysToAdd, dayOfYear;
-
- weekday = weekday != null ? weekday : firstDayOfWeek;
- daysToAdd = firstDayOfWeek - d + (d > firstDayOfWeekOfYear ? 7 : 0);
- dayOfYear = 7 * (week - 1) + (weekday - firstDayOfWeek) + daysToAdd + 1;
-
- return {
- year: dayOfYear > 0 ? year : year - 1,
- dayOfYear: dayOfYear > 0 ? dayOfYear : daysInYear(year - 1) + dayOfYear
- };
- }
-
- /************************************
- Top Level Functions
- ************************************/
-
- function makeMoment(config) {
- var input = config._i,
- format = config._f;
-
- if (typeof config._pf === 'undefined') {
- initializeParsingFlags(config);
- }
-
- if (input === null) {
- return moment.invalid({nullInput: true});
- }
-
- if (typeof input === 'string') {
- config._i = input = getLangDefinition().preparse(input);
- }
-
- if (moment.isMoment(input)) {
- config = extend({}, input);
-
- config._d = new Date(+input._d);
- } else if (format) {
- if (isArray(format)) {
- makeDateFromStringAndArray(config);
- } else {
- makeDateFromStringAndFormat(config);
- }
- } else {
- makeDateFromInput(config);
- }
-
- return new Moment(config);
- }
-
- moment = function (input, format, lang, strict) {
- if (typeof(lang) === "boolean") {
- strict = lang;
- lang = undefined;
- }
- return makeMoment({
- _i : input,
- _f : format,
- _l : lang,
- _strict : strict,
- _isUTC : false
- });
- };
-
- // creating with utc
- moment.utc = function (input, format, lang, strict) {
- var m;
-
- if (typeof(lang) === "boolean") {
- strict = lang;
- lang = undefined;
- }
- m = makeMoment({
- _useUTC : true,
- _isUTC : true,
- _l : lang,
- _i : input,
- _f : format,
- _strict : strict
- }).utc();
-
- return m;
- };
-
- // creating with unix timestamp (in seconds)
- moment.unix = function (input) {
- return moment(input * 1000);
- };
-
- // duration
- moment.duration = function (input, key) {
- var isDuration = moment.isDuration(input),
- isNumber = (typeof input === 'number'),
- duration = (isDuration ? input._input : (isNumber ? {} : input)),
- // matching against regexp is expensive, do it on demand
- match = null,
- sign,
- ret,
- parseIso,
- timeEmpty,
- dateTimeEmpty;
-
- if (isNumber) {
- if (key) {
- duration[key] = input;
- } else {
- duration.milliseconds = input;
- }
- } else if (!!(match = aspNetTimeSpanJsonRegex.exec(input))) {
- sign = (match[1] === "-") ? -1 : 1;
- duration = {
- y: 0,
- d: toInt(match[DATE]) * sign,
- h: toInt(match[HOUR]) * sign,
- m: toInt(match[MINUTE]) * sign,
- s: toInt(match[SECOND]) * sign,
- ms: toInt(match[MILLISECOND]) * sign
- };
- } else if (!!(match = isoDurationRegex.exec(input))) {
- sign = (match[1] === "-") ? -1 : 1;
- parseIso = function (inp) {
- // We'd normally use ~~inp for this, but unfortunately it also
- // converts floats to ints.
- // inp may be undefined, so careful calling replace on it.
- var res = inp && parseFloat(inp.replace(',', '.'));
- // apply sign while we're at it
- return (isNaN(res) ? 0 : res) * sign;
- };
- duration = {
- y: parseIso(match[2]),
- M: parseIso(match[3]),
- d: parseIso(match[4]),
- h: parseIso(match[5]),
- m: parseIso(match[6]),
- s: parseIso(match[7]),
- w: parseIso(match[8])
- };
- }
-
- ret = new Duration(duration);
-
- if (isDuration && input.hasOwnProperty('_lang')) {
- ret._lang = input._lang;
- }
-
- return ret;
- };
-
- // version number
- moment.version = VERSION;
-
- // default format
- moment.defaultFormat = isoFormat;
-
- // This function will be called whenever a moment is mutated.
- // It is intended to keep the offset in sync with the timezone.
- moment.updateOffset = function () {};
-
- // This function will load languages and then set the global language. If
- // no arguments are passed in, it will simply return the current global
- // language key.
- moment.lang = function (key, values) {
- var r;
- if (!key) {
- return moment.fn._lang._abbr;
- }
- if (values) {
- loadLang(normalizeLanguage(key), values);
- } else if (values === null) {
- unloadLang(key);
- key = 'en';
- } else if (!languages[key]) {
- getLangDefinition(key);
- }
- r = moment.duration.fn._lang = moment.fn._lang = getLangDefinition(key);
- return r._abbr;
- };
-
- // returns language data
- moment.langData = function (key) {
- if (key && key._lang && key._lang._abbr) {
- key = key._lang._abbr;
- }
- return getLangDefinition(key);
- };
-
- // compare moment object
- moment.isMoment = function (obj) {
- return obj instanceof Moment;
- };
-
- // for typechecking Duration objects
- moment.isDuration = function (obj) {
- return obj instanceof Duration;
- };
-
- for (i = lists.length - 1; i >= 0; --i) {
- makeList(lists[i]);
- }
-
- moment.normalizeUnits = function (units) {
- return normalizeUnits(units);
- };
-
- moment.invalid = function (flags) {
- var m = moment.utc(NaN);
- if (flags != null) {
- extend(m._pf, flags);
- }
- else {
- m._pf.userInvalidated = true;
- }
-
- return m;
- };
-
- moment.parseZone = function (input) {
- return moment(input).parseZone();
- };
-
- /************************************
- Moment Prototype
- ************************************/
-
-
- extend(moment.fn = Moment.prototype, {
-
- clone : function () {
- return moment(this);
- },
-
- valueOf : function () {
- return +this._d + ((this._offset || 0) * 60000);
- },
-
- unix : function () {
- return Math.floor(+this / 1000);
- },
-
- toString : function () {
- return this.clone().lang('en').format("ddd MMM DD YYYY HH:mm:ss [GMT]ZZ");
- },
-
- toDate : function () {
- return this._offset ? new Date(+this) : this._d;
- },
-
- toISOString : function () {
- return formatMoment(moment(this).utc(), 'YYYY-MM-DD[T]HH:mm:ss.SSS[Z]');
- },
-
- toArray : function () {
- var m = this;
- return [
- m.year(),
- m.month(),
- m.date(),
- m.hours(),
- m.minutes(),
- m.seconds(),
- m.milliseconds()
- ];
- },
-
- isValid : function () {
- return isValid(this);
- },
-
- isDSTShifted : function () {
-
- if (this._a) {
- return this.isValid() && compareArrays(this._a, (this._isUTC ? moment.utc(this._a) : moment(this._a)).toArray()) > 0;
- }
-
- return false;
- },
-
- parsingFlags : function () {
- return extend({}, this._pf);
- },
-
- invalidAt: function () {
- return this._pf.overflow;
- },
-
- utc : function () {
- return this.zone(0);
- },
-
- local : function () {
- this.zone(0);
- this._isUTC = false;
- return this;
- },
-
- format : function (inputString) {
- var output = formatMoment(this, inputString || moment.defaultFormat);
- return this.lang().postformat(output);
- },
-
- add : function (input, val) {
- var dur;
- // switch args to support add('s', 1) and add(1, 's')
- if (typeof input === 'string') {
- dur = moment.duration(+val, input);
- } else {
- dur = moment.duration(input, val);
- }
- addOrSubtractDurationFromMoment(this, dur, 1);
- return this;
- },
-
- subtract : function (input, val) {
- var dur;
- // switch args to support subtract('s', 1) and subtract(1, 's')
- if (typeof input === 'string') {
- dur = moment.duration(+val, input);
- } else {
- dur = moment.duration(input, val);
- }
- addOrSubtractDurationFromMoment(this, dur, -1);
- return this;
- },
-
- diff : function (input, units, asFloat) {
- var that = this._isUTC ? moment(input).zone(this._offset || 0) : moment(input).local(),
- zoneDiff = (this.zone() - that.zone()) * 6e4,
- diff, output;
-
- units = normalizeUnits(units);
-
- if (units === 'year' || units === 'month') {
- // average number of days in the months in the given dates
- diff = (this.daysInMonth() + that.daysInMonth()) * 432e5; // 24 * 60 * 60 * 1000 / 2
- // difference in months
- output = ((this.year() - that.year()) * 12) + (this.month() - that.month());
- // adjust by taking difference in days, average number of days
- // and dst in the given months.
- output += ((this - moment(this).startOf('month')) -
- (that - moment(that).startOf('month'))) / diff;
- // same as above but with zones, to negate all dst
- output -= ((this.zone() - moment(this).startOf('month').zone()) -
- (that.zone() - moment(that).startOf('month').zone())) * 6e4 / diff;
- if (units === 'year') {
- output = output / 12;
- }
- } else {
- diff = (this - that);
- output = units === 'second' ? diff / 1e3 : // 1000
- units === 'minute' ? diff / 6e4 : // 1000 * 60
- units === 'hour' ? diff / 36e5 : // 1000 * 60 * 60
- units === 'day' ? (diff - zoneDiff) / 864e5 : // 1000 * 60 * 60 * 24, negate dst
- units === 'week' ? (diff - zoneDiff) / 6048e5 : // 1000 * 60 * 60 * 24 * 7, negate dst
- diff;
- }
- return asFloat ? output : absRound(output);
- },
-
- from : function (time, withoutSuffix) {
- return moment.duration(this.diff(time)).lang(this.lang()._abbr).humanize(!withoutSuffix);
- },
-
- fromNow : function (withoutSuffix) {
- return this.from(moment(), withoutSuffix);
- },
-
- calendar : function () {
- var diff = this.diff(moment().zone(this.zone()).startOf('day'), 'days', true),
- format = diff < -6 ? 'sameElse' :
- diff < -1 ? 'lastWeek' :
- diff < 0 ? 'lastDay' :
- diff < 1 ? 'sameDay' :
- diff < 2 ? 'nextDay' :
- diff < 7 ? 'nextWeek' : 'sameElse';
- return this.format(this.lang().calendar(format, this));
- },
-
- isLeapYear : function () {
- return isLeapYear(this.year());
- },
-
- isDST : function () {
- return (this.zone() < this.clone().month(0).zone() ||
- this.zone() < this.clone().month(5).zone());
- },
-
- day : function (input) {
- var day = this._isUTC ? this._d.getUTCDay() : this._d.getDay();
- if (input != null) {
- input = parseWeekday(input, this.lang());
- return this.add({ d : input - day });
- } else {
- return day;
- }
- },
-
- month : function (input) {
- var utc = this._isUTC ? 'UTC' : '',
- dayOfMonth;
-
- if (input != null) {
- if (typeof input === 'string') {
- input = this.lang().monthsParse(input);
- if (typeof input !== 'number') {
- return this;
- }
- }
-
- dayOfMonth = this.date();
- this.date(1);
- this._d['set' + utc + 'Month'](input);
- this.date(Math.min(dayOfMonth, this.daysInMonth()));
-
- moment.updateOffset(this);
- return this;
- } else {
- return this._d['get' + utc + 'Month']();
- }
- },
-
- startOf: function (units) {
- units = normalizeUnits(units);
- // the following switch intentionally omits break keywords
- // to utilize falling through the cases.
- switch (units) {
- case 'year':
- this.month(0);
- /* falls through */
- case 'month':
- this.date(1);
- /* falls through */
- case 'week':
- case 'isoWeek':
- case 'day':
- this.hours(0);
- /* falls through */
- case 'hour':
- this.minutes(0);
- /* falls through */
- case 'minute':
- this.seconds(0);
- /* falls through */
- case 'second':
- this.milliseconds(0);
- /* falls through */
- }
-
- // weeks are a special case
- if (units === 'week') {
- this.weekday(0);
- } else if (units === 'isoWeek') {
- this.isoWeekday(1);
- }
-
- return this;
- },
-
- endOf: function (units) {
- units = normalizeUnits(units);
- return this.startOf(units).add((units === 'isoWeek' ? 'week' : units), 1).subtract('ms', 1);
- },
-
- isAfter: function (input, units) {
- units = typeof units !== 'undefined' ? units : 'millisecond';
- return +this.clone().startOf(units) > +moment(input).startOf(units);
- },
-
- isBefore: function (input, units) {
- units = typeof units !== 'undefined' ? units : 'millisecond';
- return +this.clone().startOf(units) < +moment(input).startOf(units);
- },
-
- isSame: function (input, units) {
- units = typeof units !== 'undefined' ? units : 'millisecond';
- return +this.clone().startOf(units) === +moment(input).startOf(units);
- },
-
- min: function (other) {
- other = moment.apply(null, arguments);
- return other < this ? this : other;
- },
-
- max: function (other) {
- other = moment.apply(null, arguments);
- return other > this ? this : other;
- },
-
- zone : function (input) {
- var offset = this._offset || 0;
- if (input != null) {
- if (typeof input === "string") {
- input = timezoneMinutesFromString(input);
- }
- if (Math.abs(input) < 16) {
- input = input * 60;
- }
- this._offset = input;
- this._isUTC = true;
- if (offset !== input) {
- addOrSubtractDurationFromMoment(this, moment.duration(offset - input, 'm'), 1, true);
- }
- } else {
- return this._isUTC ? offset : this._d.getTimezoneOffset();
- }
- return this;
- },
-
- zoneAbbr : function () {
- return this._isUTC ? "UTC" : "";
- },
-
- zoneName : function () {
- return this._isUTC ? "Coordinated Universal Time" : "";
- },
-
- parseZone : function () {
- if (typeof this._i === 'string') {
- this.zone(this._i);
- }
- return this;
- },
-
- hasAlignedHourOffset : function (input) {
- if (!input) {
- input = 0;
- }
- else {
- input = moment(input).zone();
- }
-
- return (this.zone() - input) % 60 === 0;
- },
-
- daysInMonth : function () {
- return daysInMonth(this.year(), this.month());
- },
-
- dayOfYear : function (input) {
- var dayOfYear = round((moment(this).startOf('day') - moment(this).startOf('year')) / 864e5) + 1;
- return input == null ? dayOfYear : this.add("d", (input - dayOfYear));
- },
-
- weekYear : function (input) {
- var year = weekOfYear(this, this.lang()._week.dow, this.lang()._week.doy).year;
- return input == null ? year : this.add("y", (input - year));
- },
-
- isoWeekYear : function (input) {
- var year = weekOfYear(this, 1, 4).year;
- return input == null ? year : this.add("y", (input - year));
- },
-
- week : function (input) {
- var week = this.lang().week(this);
- return input == null ? week : this.add("d", (input - week) * 7);
- },
-
- isoWeek : function (input) {
- var week = weekOfYear(this, 1, 4).week;
- return input == null ? week : this.add("d", (input - week) * 7);
- },
-
- weekday : function (input) {
- var weekday = (this.day() + 7 - this.lang()._week.dow) % 7;
- return input == null ? weekday : this.add("d", input - weekday);
- },
-
- isoWeekday : function (input) {
- // behaves the same as moment#day except
- // as a getter, returns 7 instead of 0 (1-7 range instead of 0-6)
- // as a setter, sunday should belong to the previous week.
- return input == null ? this.day() || 7 : this.day(this.day() % 7 ? input : input - 7);
- },
-
- get : function (units) {
- units = normalizeUnits(units);
- return this[units]();
- },
-
- set : function (units, value) {
- units = normalizeUnits(units);
- if (typeof this[units] === 'function') {
- this[units](value);
- }
- return this;
- },
-
- // If passed a language key, it will set the language for this
- // instance. Otherwise, it will return the language configuration
- // variables for this instance.
- lang : function (key) {
- if (key === undefined) {
- return this._lang;
- } else {
- this._lang = getLangDefinition(key);
- return this;
- }
- }
- });
-
- // helper for adding shortcuts
- function makeGetterAndSetter(name, key) {
- moment.fn[name] = moment.fn[name + 's'] = function (input) {
- var utc = this._isUTC ? 'UTC' : '';
- if (input != null) {
- this._d['set' + utc + key](input);
- moment.updateOffset(this);
- return this;
- } else {
- return this._d['get' + utc + key]();
- }
- };
- }
-
- // loop through and add shortcuts (Month, Date, Hours, Minutes, Seconds, Milliseconds)
- for (i = 0; i < proxyGettersAndSetters.length; i ++) {
- makeGetterAndSetter(proxyGettersAndSetters[i].toLowerCase().replace(/s$/, ''), proxyGettersAndSetters[i]);
- }
-
- // add shortcut for year (uses different syntax than the getter/setter 'year' == 'FullYear')
- makeGetterAndSetter('year', 'FullYear');
-
- // add plural methods
- moment.fn.days = moment.fn.day;
- moment.fn.months = moment.fn.month;
- moment.fn.weeks = moment.fn.week;
- moment.fn.isoWeeks = moment.fn.isoWeek;
-
- // add aliased format methods
- moment.fn.toJSON = moment.fn.toISOString;
-
- /************************************
- Duration Prototype
- ************************************/
-
-
- extend(moment.duration.fn = Duration.prototype, {
-
- _bubble : function () {
- var milliseconds = this._milliseconds,
- days = this._days,
- months = this._months,
- data = this._data,
- seconds, minutes, hours, years;
-
- // The following code bubbles up values, see the tests for
- // examples of what that means.
- data.milliseconds = milliseconds % 1000;
-
- seconds = absRound(milliseconds / 1000);
- data.seconds = seconds % 60;
-
- minutes = absRound(seconds / 60);
- data.minutes = minutes % 60;
-
- hours = absRound(minutes / 60);
- data.hours = hours % 24;
-
- days += absRound(hours / 24);
- data.days = days % 30;
-
- months += absRound(days / 30);
- data.months = months % 12;
-
- years = absRound(months / 12);
- data.years = years;
- },
-
- weeks : function () {
- return absRound(this.days() / 7);
- },
-
- valueOf : function () {
- return this._milliseconds +
- this._days * 864e5 +
- (this._months % 12) * 2592e6 +
- toInt(this._months / 12) * 31536e6;
- },
-
- humanize : function (withSuffix) {
- var difference = +this,
- output = relativeTime(difference, !withSuffix, this.lang());
-
- if (withSuffix) {
- output = this.lang().pastFuture(difference, output);
- }
-
- return this.lang().postformat(output);
- },
-
- add : function (input, val) {
- // supports only 2.0-style add(1, 's') or add(moment)
- var dur = moment.duration(input, val);
-
- this._milliseconds += dur._milliseconds;
- this._days += dur._days;
- this._months += dur._months;
-
- this._bubble();
-
- return this;
- },
-
- subtract : function (input, val) {
- var dur = moment.duration(input, val);
-
- this._milliseconds -= dur._milliseconds;
- this._days -= dur._days;
- this._months -= dur._months;
-
- this._bubble();
-
- return this;
- },
-
- get : function (units) {
- units = normalizeUnits(units);
- return this[units.toLowerCase() + 's']();
- },
-
- as : function (units) {
- units = normalizeUnits(units);
- return this['as' + units.charAt(0).toUpperCase() + units.slice(1) + 's']();
- },
-
- lang : moment.fn.lang,
-
- toIsoString : function () {
- // inspired by https://github.com/dordille/moment-isoduration/blob/master/moment.isoduration.js
- var years = Math.abs(this.years()),
- months = Math.abs(this.months()),
- days = Math.abs(this.days()),
- hours = Math.abs(this.hours()),
- minutes = Math.abs(this.minutes()),
- seconds = Math.abs(this.seconds() + this.milliseconds() / 1000);
-
- if (!this.asSeconds()) {
- // this is the same as C#'s (Noda) and python (isodate)...
- // but not other JS (goog.date)
- return 'P0D';
- }
-
- return (this.asSeconds() < 0 ? '-' : '') +
- 'P' +
- (years ? years + 'Y' : '') +
- (months ? months + 'M' : '') +
- (days ? days + 'D' : '') +
- ((hours || minutes || seconds) ? 'T' : '') +
- (hours ? hours + 'H' : '') +
- (minutes ? minutes + 'M' : '') +
- (seconds ? seconds + 'S' : '');
- }
- });
-
- function makeDurationGetter(name) {
- moment.duration.fn[name] = function () {
- return this._data[name];
- };
- }
-
- function makeDurationAsGetter(name, factor) {
- moment.duration.fn['as' + name] = function () {
- return +this / factor;
- };
- }
-
- for (i in unitMillisecondFactors) {
- if (unitMillisecondFactors.hasOwnProperty(i)) {
- makeDurationAsGetter(i, unitMillisecondFactors[i]);
- makeDurationGetter(i.toLowerCase());
- }
- }
-
- makeDurationAsGetter('Weeks', 6048e5);
- moment.duration.fn.asMonths = function () {
- return (+this - this.years() * 31536e6) / 2592e6 + this.years() * 12;
- };
-
-
- /************************************
- Default Lang
- ************************************/
-
-
- // Set default language, other languages will inherit from English.
- moment.lang('en', {
- ordinal : function (number) {
- var b = number % 10,
- output = (toInt(number % 100 / 10) === 1) ? 'th' :
- (b === 1) ? 'st' :
- (b === 2) ? 'nd' :
- (b === 3) ? 'rd' : 'th';
- return number + output;
- }
- });
-
- // moment.js language configuration
-// language : Moroccan Arabic (ar-ma)
-// author : ElFadili Yassine : https://github.com/ElFadiliY
-// author : Abdel Said : https://github.com/abdelsaid
-
-(function (factory) {
- factory(moment);
-}(function (moment) {
- return moment.lang('ar-ma', {
- months : "يناير_Ùبراير_مارس_أبريل_ماي_يونيو_يوليوز_غشت_شتنبر_أكتوبر_نونبر_دجنبر".split("_"),
- monthsShort : "يناير_Ùبراير_مارس_أبريل_ماي_يونيو_يوليوز_غشت_شتنبر_أكتوبر_نونبر_دجنبر".split("_"),
- weekdays : "الأحد_الإتنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت".split("_"),
- weekdaysShort : "احد_اتنين_ثلاثاء_اربعاء_خميس_جمعة_سبت".split("_"),
- weekdaysMin : "ح_ن_ث_ر_خ_ج_س".split("_"),
- longDateFormat : {
- LT : "HH:mm",
- L : "DD/MM/YYYY",
- LL : "D MMMM YYYY",
- LLL : "D MMMM YYYY LT",
- LLLL : "dddd D MMMM YYYY LT"
- },
- calendar : {
- sameDay: "[اليوم على الساعة] LT",
- nextDay: '[غدا على الساعة] LT',
- nextWeek: 'dddd [على الساعة] LT',
- lastDay: '[أمس على الساعة] LT',
- lastWeek: 'dddd [على الساعة] LT',
- sameElse: 'L'
- },
- relativeTime : {
- future : "ÙÙŠ %s",
- past : "منذ %s",
- s : "ثوان",
- m : "دقيقة",
- mm : "%d دقائق",
- h : "ساعة",
- hh : "%d ساعات",
- d : "يوم",
- dd : "%d أيام",
- M : "شهر",
- MM : "%d أشهر",
- y : "سنة",
- yy : "%d سنوات"
- },
- week : {
- dow : 6, // Saturday is the first day of the week.
- doy : 12 // The week that contains Jan 1st is the first week of the year.
- }
- });
-}));
-// moment.js language configuration
-// language : Arabic (ar)
-// author : Abdel Said : https://github.com/abdelsaid
-// changes in months, weekdays : Ahmed Elkhatib
-
-(function (factory) {
- factory(moment);
-}(function (moment) {
- return moment.lang('ar', {
- months : "يناير/ كانون الثاني_Ùبراير/ شباط_مارس/ آذار_أبريل/ نيسان_مايو/ أيار_يونيو/ حزيران_يوليو/ تموز_أغسطس/ آب_سبتمبر/ أيلول_أكتوبر/ تشرين الأول_نوÙمبر/ تشرين الثاني_ديسمبر/ كانون الأول".split("_"),
- monthsShort : "يناير/ كانون الثاني_Ùبراير/ شباط_مارس/ آذار_أبريل/ نيسان_مايو/ أيار_يونيو/ حزيران_يوليو/ تموز_أغسطس/ آب_سبتمبر/ أيلول_أكتوبر/ تشرين الأول_نوÙمبر/ تشرين الثاني_ديسمبر/ كانون الأول".split("_"),
- weekdays : "الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت".split("_"),
- weekdaysShort : "الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت".split("_"),
- weekdaysMin : "ح_ن_ث_ر_خ_ج_س".split("_"),
- longDateFormat : {
- LT : "HH:mm",
- L : "DD/MM/YYYY",
- LL : "D MMMM YYYY",
- LLL : "D MMMM YYYY LT",
- LLLL : "dddd D MMMM YYYY LT"
- },
- calendar : {
- sameDay: "[اليوم على الساعة] LT",
- nextDay: '[غدا على الساعة] LT',
- nextWeek: 'dddd [على الساعة] LT',
- lastDay: '[أمس على الساعة] LT',
- lastWeek: 'dddd [على الساعة] LT',
- sameElse: 'L'
- },
- relativeTime : {
- future : "ÙÙŠ %s",
- past : "منذ %s",
- s : "ثوان",
- m : "دقيقة",
- mm : "%d دقائق",
- h : "ساعة",
- hh : "%d ساعات",
- d : "يوم",
- dd : "%d أيام",
- M : "شهر",
- MM : "%d أشهر",
- y : "سنة",
- yy : "%d سنوات"
- },
- week : {
- dow : 6, // Saturday is the first day of the week.
- doy : 12 // The week that contains Jan 1st is the first week of the year.
- }
- });
-}));
-// moment.js language configuration
-// language : bulgarian (bg)
-// author : Krasen Borisov : https://github.com/kraz
-
-(function (factory) {
- factory(moment);
-}(function (moment) {
- return moment.lang('bg', {
- months : "Ñнуари_февруари_март_април_май_юни_юли_авгуÑÑ‚_Ñептември_октомври_ноември_декември".split("_"),
- monthsShort : "Ñнр_фев_мар_апр_май_юни_юли_авг_Ñеп_окт_ное_дек".split("_"),
- weekdays : "неделÑ_понеделник_вторник_ÑÑ€Ñда_четвъртък_петък_Ñъбота".split("_"),
- weekdaysShort : "нед_пон_вто_ÑÑ€Ñ_чет_пет_Ñъб".split("_"),
- weekdaysMin : "нд_пн_вт_ÑÑ€_чт_пт_Ñб".split("_"),
- longDateFormat : {
- LT : "H:mm",
- L : "D.MM.YYYY",
- LL : "D MMMM YYYY",
- LLL : "D MMMM YYYY LT",
- LLLL : "dddd, D MMMM YYYY LT"
- },
- calendar : {
- sameDay : '[Ð”Ð½ÐµÑ Ð²] LT',
- nextDay : '[Утре в] LT',
- nextWeek : 'dddd [в] LT',
- lastDay : '[Вчера в] LT',
- lastWeek : function () {
- switch (this.day()) {
- case 0:
- case 3:
- case 6:
- return '[В изминалата] dddd [в] LT';
- case 1:
- case 2:
- case 4:
- case 5:
- return '[Ð’ изминалиÑ] dddd [в] LT';
- }
- },
- sameElse : 'L'
- },
- relativeTime : {
- future : "Ñлед %s",
- past : "преди %s",
- s : "нÑколко Ñекунди",
- m : "минута",
- mm : "%d минути",
- h : "чаÑ",
- hh : "%d чаÑа",
- d : "ден",
- dd : "%d дни",
- M : "меÑец",
- MM : "%d меÑеца",
- y : "година",
- yy : "%d години"
- },
- ordinal : function (number) {
- var lastDigit = number % 10,
- last2Digits = number % 100;
- if (number === 0) {
- return number + '-ев';
- } else if (last2Digits === 0) {
- return number + '-ен';
- } else if (last2Digits > 10 && last2Digits < 20) {
- return number + '-ти';
- } else if (lastDigit === 1) {
- return number + '-ви';
- } else if (lastDigit === 2) {
- return number + '-ри';
- } else if (lastDigit === 7 || lastDigit === 8) {
- return number + '-ми';
- } else {
- return number + '-ти';
- }
- },
- week : {
- dow : 1, // Monday is the first day of the week.
- doy : 7 // The week that contains Jan 1st is the first week of the year.
- }
- });
-}));
-// moment.js language configuration
-// language : breton (br)
-// author : Jean-Baptiste Le Duigou : https://github.com/jbleduigou
-
-(function (factory) {
- factory(moment);
-}(function (moment) {
- function relativeTimeWithMutation(number, withoutSuffix, key) {
- var format = {
- 'mm': "munutenn",
- 'MM': "miz",
- 'dd': "devezh"
- };
- return number + ' ' + mutation(format[key], number);
- }
-
- function specialMutationForYears(number) {
- switch (lastNumber(number)) {
- case 1:
- case 3:
- case 4:
- case 5:
- case 9:
- return number + ' bloaz';
- default:
- return number + ' vloaz';
- }
- }
-
- function lastNumber(number) {
- if (number > 9) {
- return lastNumber(number % 10);
- }
- return number;
- }
-
- function mutation(text, number) {
- if (number === 2) {
- return softMutation(text);
- }
- return text;
- }
-
- function softMutation(text) {
- var mutationTable = {
- 'm': 'v',
- 'b': 'v',
- 'd': 'z'
- };
- if (mutationTable[text.charAt(0)] === undefined) {
- return text;
- }
- return mutationTable[text.charAt(0)] + text.substring(1);
- }
-
- return moment.lang('br', {
- months : "Genver_C'hwevrer_Meurzh_Ebrel_Mae_Mezheven_Gouere_Eost_Gwengolo_Here_Du_Kerzu".split("_"),
- monthsShort : "Gen_C'hwe_Meu_Ebr_Mae_Eve_Gou_Eos_Gwe_Her_Du_Ker".split("_"),
- weekdays : "Sul_Lun_Meurzh_Merc'her_Yaou_Gwener_Sadorn".split("_"),
- weekdaysShort : "Sul_Lun_Meu_Mer_Yao_Gwe_Sad".split("_"),
- weekdaysMin : "Su_Lu_Me_Mer_Ya_Gw_Sa".split("_"),
- longDateFormat : {
- LT : "h[e]mm A",
- L : "DD/MM/YYYY",
- LL : "D [a viz] MMMM YYYY",
- LLL : "D [a viz] MMMM YYYY LT",
- LLLL : "dddd, D [a viz] MMMM YYYY LT"
- },
- calendar : {
- sameDay : '[Hiziv da] LT',
- nextDay : '[Warc\'hoazh da] LT',
- nextWeek : 'dddd [da] LT',
- lastDay : '[Dec\'h da] LT',
- lastWeek : 'dddd [paset da] LT',
- sameElse : 'L'
- },
- relativeTime : {
- future : "a-benn %s",
- past : "%s 'zo",
- s : "un nebeud segondennoù",
- m : "ur vunutenn",
- mm : relativeTimeWithMutation,
- h : "un eur",
- hh : "%d eur",
- d : "un devezh",
- dd : relativeTimeWithMutation,
- M : "ur miz",
- MM : relativeTimeWithMutation,
- y : "ur bloaz",
- yy : specialMutationForYears
- },
- ordinal : function (number) {
- var output = (number === 1) ? 'añ' : 'vet';
- return number + output;
- },
- week : {
- dow : 1, // Monday is the first day of the week.
- doy : 4 // The week that contains Jan 4th is the first week of the year.
- }
- });
-}));
-// moment.js language configuration
-// language : bosnian (bs)
-// author : Nedim Cholich : https://github.com/frontyard
-// based on (hr) translation by Bojan Marković
-
-(function (factory) {
- factory(moment);
-}(function (moment) {
-
- function translate(number, withoutSuffix, key) {
- var result = number + " ";
- switch (key) {
- case 'm':
- return withoutSuffix ? 'jedna minuta' : 'jedne minute';
- case 'mm':
- if (number === 1) {
- result += 'minuta';
- } else if (number === 2 || number === 3 || number === 4) {
- result += 'minute';
- } else {
- result += 'minuta';
- }
- return result;
- case 'h':
- return withoutSuffix ? 'jedan sat' : 'jednog sata';
- case 'hh':
- if (number === 1) {
- result += 'sat';
- } else if (number === 2 || number === 3 || number === 4) {
- result += 'sata';
- } else {
- result += 'sati';
- }
- return result;
- case 'dd':
- if (number === 1) {
- result += 'dan';
- } else {
- result += 'dana';
- }
- return result;
- case 'MM':
- if (number === 1) {
- result += 'mjesec';
- } else if (number === 2 || number === 3 || number === 4) {
- result += 'mjeseca';
- } else {
- result += 'mjeseci';
- }
- return result;
- case 'yy':
- if (number === 1) {
- result += 'godina';
- } else if (number === 2 || number === 3 || number === 4) {
- result += 'godine';
- } else {
- result += 'godina';
- }
- return result;
- }
- }
-
- return moment.lang('bs', {
- months : "januar_februar_mart_april_maj_juni_juli_avgust_septembar_oktobar_novembar_decembar".split("_"),
- monthsShort : "jan._feb._mar._apr._maj._jun._jul._avg._sep._okt._nov._dec.".split("_"),
- weekdays : "nedjelja_ponedjeljak_utorak_srijeda_Äetvrtak_petak_subota".split("_"),
- weekdaysShort : "ned._pon._uto._sri._Äet._pet._sub.".split("_"),
- weekdaysMin : "ne_po_ut_sr_Äe_pe_su".split("_"),
- longDateFormat : {
- LT : "H:mm",
- L : "DD. MM. YYYY",
- LL : "D. MMMM YYYY",
- LLL : "D. MMMM YYYY LT",
- LLLL : "dddd, D. MMMM YYYY LT"
- },
- calendar : {
- sameDay : '[danas u] LT',
- nextDay : '[sutra u] LT',
-
- nextWeek : function () {
- switch (this.day()) {
- case 0:
- return '[u] [nedjelju] [u] LT';
- case 3:
- return '[u] [srijedu] [u] LT';
- case 6:
- return '[u] [subotu] [u] LT';
- case 1:
- case 2:
- case 4:
- case 5:
- return '[u] dddd [u] LT';
- }
- },
- lastDay : '[juÄer u] LT',
- lastWeek : function () {
- switch (this.day()) {
- case 0:
- case 3:
- return '[prošlu] dddd [u] LT';
- case 6:
- return '[prošle] [subote] [u] LT';
- case 1:
- case 2:
- case 4:
- case 5:
- return '[prošli] dddd [u] LT';
- }
- },
- sameElse : 'L'
- },
- relativeTime : {
- future : "za %s",
- past : "prije %s",
- s : "par sekundi",
- m : translate,
- mm : translate,
- h : translate,
- hh : translate,
- d : "dan",
- dd : translate,
- M : "mjesec",
- MM : translate,
- y : "godinu",
- yy : translate
- },
- ordinal : '%d.',
- week : {
- dow : 1, // Monday is the first day of the week.
- doy : 7 // The week that contains Jan 1st is the first week of the year.
- }
- });
-}));
-// moment.js language configuration
-// language : catalan (ca)
-// author : Juan G. Hurtado : https://github.com/juanghurtado
-
-(function (factory) {
- factory(moment);
-}(function (moment) {
- return moment.lang('ca', {
- months : "Gener_Febrer_Març_Abril_Maig_Juny_Juliol_Agost_Setembre_Octubre_Novembre_Desembre".split("_"),
- monthsShort : "Gen._Febr._Mar._Abr._Mai._Jun._Jul._Ag._Set._Oct._Nov._Des.".split("_"),
- weekdays : "Diumenge_Dilluns_Dimarts_Dimecres_Dijous_Divendres_Dissabte".split("_"),
- weekdaysShort : "Dg._Dl._Dt._Dc._Dj._Dv._Ds.".split("_"),
- weekdaysMin : "Dg_Dl_Dt_Dc_Dj_Dv_Ds".split("_"),
- longDateFormat : {
- LT : "H:mm",
- L : "DD/MM/YYYY",
- LL : "D MMMM YYYY",
- LLL : "D MMMM YYYY LT",
- LLLL : "dddd D MMMM YYYY LT"
- },
- calendar : {
- sameDay : function () {
- return '[avui a ' + ((this.hours() !== 1) ? 'les' : 'la') + '] LT';
- },
- nextDay : function () {
- return '[demà a ' + ((this.hours() !== 1) ? 'les' : 'la') + '] LT';
- },
- nextWeek : function () {
- return 'dddd [a ' + ((this.hours() !== 1) ? 'les' : 'la') + '] LT';
- },
- lastDay : function () {
- return '[ahir a ' + ((this.hours() !== 1) ? 'les' : 'la') + '] LT';
- },
- lastWeek : function () {
- return '[el] dddd [passat a ' + ((this.hours() !== 1) ? 'les' : 'la') + '] LT';
- },
- sameElse : 'L'
- },
- relativeTime : {
- future : "en %s",
- past : "fa %s",
- s : "uns segons",
- m : "un minut",
- mm : "%d minuts",
- h : "una hora",
- hh : "%d hores",
- d : "un dia",
- dd : "%d dies",
- M : "un mes",
- MM : "%d mesos",
- y : "un any",
- yy : "%d anys"
- },
- ordinal : '%dº',
- week : {
- dow : 1, // Monday is the first day of the week.
- doy : 4 // The week that contains Jan 4th is the first week of the year.
- }
- });
-}));
-// moment.js language configuration
-// language : czech (cs)
-// author : petrbela : https://github.com/petrbela
-
-(function (factory) {
- factory(moment);
-}(function (moment) {
- var months = "leden_únor_bÅ™ezen_duben_kvÄ›ten_Äerven_Äervenec_srpen_září_říjen_listopad_prosinec".split("_"),
- monthsShort = "led_úno_bÅ™e_dub_kvÄ›_Ävn_Ävc_srp_zář_říj_lis_pro".split("_");
-
- function plural(n) {
- return (n > 1) && (n < 5) && (~~(n / 10) !== 1);
- }
-
- function translate(number, withoutSuffix, key, isFuture) {
- var result = number + " ";
- switch (key) {
- case 's': // a few seconds / in a few seconds / a few seconds ago
- return (withoutSuffix || isFuture) ? 'pár vteřin' : 'pár vteřinami';
- case 'm': // a minute / in a minute / a minute ago
- return withoutSuffix ? 'minuta' : (isFuture ? 'minutu' : 'minutou');
- case 'mm': // 9 minutes / in 9 minutes / 9 minutes ago
- if (withoutSuffix || isFuture) {
- return result + (plural(number) ? 'minuty' : 'minut');
- } else {
- return result + 'minutami';
- }
- break;
- case 'h': // an hour / in an hour / an hour ago
- return withoutSuffix ? 'hodina' : (isFuture ? 'hodinu' : 'hodinou');
- case 'hh': // 9 hours / in 9 hours / 9 hours ago
- if (withoutSuffix || isFuture) {
- return result + (plural(number) ? 'hodiny' : 'hodin');
- } else {
- return result + 'hodinami';
- }
- break;
- case 'd': // a day / in a day / a day ago
- return (withoutSuffix || isFuture) ? 'den' : 'dnem';
- case 'dd': // 9 days / in 9 days / 9 days ago
- if (withoutSuffix || isFuture) {
- return result + (plural(number) ? 'dny' : 'dní');
- } else {
- return result + 'dny';
- }
- break;
- case 'M': // a month / in a month / a month ago
- return (withoutSuffix || isFuture) ? 'měsíc' : 'měsícem';
- case 'MM': // 9 months / in 9 months / 9 months ago
- if (withoutSuffix || isFuture) {
- return result + (plural(number) ? 'měsíce' : 'měsíců');
- } else {
- return result + 'měsíci';
- }
- break;
- case 'y': // a year / in a year / a year ago
- return (withoutSuffix || isFuture) ? 'rok' : 'rokem';
- case 'yy': // 9 years / in 9 years / 9 years ago
- if (withoutSuffix || isFuture) {
- return result + (plural(number) ? 'roky' : 'let');
- } else {
- return result + 'lety';
- }
- break;
- }
- }
-
- return moment.lang('cs', {
- months : months,
- monthsShort : monthsShort,
- monthsParse : (function (months, monthsShort) {
- var i, _monthsParse = [];
- for (i = 0; i < 12; i++) {
- // use custom parser to solve problem with July (Äervenec)
- _monthsParse[i] = new RegExp('^' + months[i] + '$|^' + monthsShort[i] + '$', 'i');
- }
- return _monthsParse;
- }(months, monthsShort)),
- weekdays : "nedÄ›le_pondÄ›lí_úterý_stÅ™eda_Ätvrtek_pátek_sobota".split("_"),
- weekdaysShort : "ne_po_út_st_Ät_pá_so".split("_"),
- weekdaysMin : "ne_po_út_st_Ät_pá_so".split("_"),
- longDateFormat : {
- LT: "H:mm",
- L : "DD.MM.YYYY",
- LL : "D. MMMM YYYY",
- LLL : "D. MMMM YYYY LT",
- LLLL : "dddd D. MMMM YYYY LT"
- },
- calendar : {
- sameDay: "[dnes v] LT",
- nextDay: '[zítra v] LT',
- nextWeek: function () {
- switch (this.day()) {
- case 0:
- return '[v neděli v] LT';
- case 1:
- case 2:
- return '[v] dddd [v] LT';
- case 3:
- return '[ve středu v] LT';
- case 4:
- return '[ve Ätvrtek v] LT';
- case 5:
- return '[v pátek v] LT';
- case 6:
- return '[v sobotu v] LT';
- }
- },
- lastDay: '[vÄera v] LT',
- lastWeek: function () {
- switch (this.day()) {
- case 0:
- return '[minulou neděli v] LT';
- case 1:
- case 2:
- return '[minulé] dddd [v] LT';
- case 3:
- return '[minulou středu v] LT';
- case 4:
- case 5:
- return '[minulý] dddd [v] LT';
- case 6:
- return '[minulou sobotu v] LT';
- }
- },
- sameElse: "L"
- },
- relativeTime : {
- future : "za %s",
- past : "před %s",
- s : translate,
- m : translate,
- mm : translate,
- h : translate,
- hh : translate,
- d : translate,
- dd : translate,
- M : translate,
- MM : translate,
- y : translate,
- yy : translate
- },
- ordinal : '%d.',
- week : {
- dow : 1, // Monday is the first day of the week.
- doy : 4 // The week that contains Jan 4th is the first week of the year.
- }
- });
-}));
-// moment.js language configuration
-// language : chuvash (cv)
-// author : Anatoly Mironov : https://github.com/mirontoli
-
-(function (factory) {
- factory(moment);
-}(function (moment) {
- return moment.lang('cv', {
- months : "кăрлач_нарăÑ_пуш_ака_май_çĕртме_утă_çурла_авăн_юпа_чӳк_раштав".split("_"),
- monthsShort : "кăр_нар_пуш_ака_май_çĕр_утă_çур_ав_юпа_чӳк_раш".split("_"),
- weekdays : "вырÑарникун_тунтикун_ытларикун_юнкун_кĕçнерникун_Ñрнекун_шăматкун".split("_"),
- weekdaysShort : "выр_тун_ытл_юн_кĕç_Ñрн_шăм".split("_"),
- weekdaysMin : "вр_тн_Ñ‹Ñ‚_юн_кç_ÑÑ€_шм".split("_"),
- longDateFormat : {
- LT : "HH:mm",
- L : "DD-MM-YYYY",
- LL : "YYYY [çулхи] MMMM [уйăхĕн] D[-мĕшĕ]",
- LLL : "YYYY [çулхи] MMMM [уйăхĕн] D[-мĕшĕ], LT",
- LLLL : "dddd, YYYY [çулхи] MMMM [уйăхĕн] D[-мĕшĕ], LT"
- },
- calendar : {
- sameDay: '[ПаÑн] LT [Ñехетре]',
- nextDay: '[Ыран] LT [Ñехетре]',
- lastDay: '[Ĕнер] LT [Ñехетре]',
- nextWeek: '[ÇитеÑ] dddd LT [Ñехетре]',
- lastWeek: '[Иртнĕ] dddd LT [Ñехетре]',
- sameElse: 'L'
- },
- relativeTime : {
- future : function (output) {
- var affix = /Ñехет$/i.exec(output) ? "рен" : /çул$/i.exec(output) ? "тан" : "ран";
- return output + affix;
- },
- past : "%s каÑлла",
- s : "пĕр-ик çеккунт",
- m : "пĕр минут",
- mm : "%d минут",
- h : "пĕр Ñехет",
- hh : "%d Ñехет",
- d : "пĕр кун",
- dd : "%d кун",
- M : "пĕр уйăх",
- MM : "%d уйăх",
- y : "пĕр çул",
- yy : "%d çул"
- },
- ordinal : '%d-мĕш',
- week : {
- dow : 1, // Monday is the first day of the week.
- doy : 7 // The week that contains Jan 1st is the first week of the year.
- }
- });
-}));
-// moment.js language configuration
-// language : Welsh (cy)
-// author : Robert Allen
-
-(function (factory) {
- factory(moment);
-}(function (moment) {
- return moment.lang("cy", {
- months: "Ionawr_Chwefror_Mawrth_Ebrill_Mai_Mehefin_Gorffennaf_Awst_Medi_Hydref_Tachwedd_Rhagfyr".split("_"),
- monthsShort: "Ion_Chwe_Maw_Ebr_Mai_Meh_Gor_Aws_Med_Hyd_Tach_Rhag".split("_"),
- weekdays: "Dydd Sul_Dydd Llun_Dydd Mawrth_Dydd Mercher_Dydd Iau_Dydd Gwener_Dydd Sadwrn".split("_"),
- weekdaysShort: "Sul_Llun_Maw_Mer_Iau_Gwe_Sad".split("_"),
- weekdaysMin: "Su_Ll_Ma_Me_Ia_Gw_Sa".split("_"),
- // time formats are the same as en-gb
- longDateFormat: {
- LT: "HH:mm",
- L: "DD/MM/YYYY",
- LL: "D MMMM YYYY",
- LLL: "D MMMM YYYY LT",
- LLLL: "dddd, D MMMM YYYY LT"
- },
- calendar: {
- sameDay: '[Heddiw am] LT',
- nextDay: '[Yfory am] LT',
- nextWeek: 'dddd [am] LT',
- lastDay: '[Ddoe am] LT',
- lastWeek: 'dddd [diwethaf am] LT',
- sameElse: 'L'
- },
- relativeTime: {
- future: "mewn %s",
- past: "%s yn &#244;l",
- s: "ychydig eiliadau",
- m: "munud",
- mm: "%d munud",
- h: "awr",
- hh: "%d awr",
- d: "diwrnod",
- dd: "%d diwrnod",
- M: "mis",
- MM: "%d mis",
- y: "blwyddyn",
- yy: "%d flynedd"
- },
- // traditional ordinal numbers above 31 are not commonly used in colloquial Welsh
- ordinal: function (number) {
- var b = number,
- output = '',
- lookup = [
- '', 'af', 'il', 'ydd', 'ydd', 'ed', 'ed', 'ed', 'fed', 'fed', 'fed', // 1af to 10fed
- 'eg', 'fed', 'eg', 'eg', 'fed', 'eg', 'eg', 'fed', 'eg', 'fed' // 11eg to 20fed
- ];
-
- if (b > 20) {
- if (b === 40 || b === 50 || b === 60 || b === 80 || b === 100) {
- output = 'fed'; // not 30ain, 70ain or 90ain
- } else {
- output = 'ain';
- }
- } else if (b > 0) {
- output = lookup[b];
- }
-
- return number + output;
- },
- week : {
- dow : 1, // Monday is the first day of the week.
- doy : 4 // The week that contains Jan 4th is the first week of the year.
- }
- });
-}));
-// moment.js language configuration
-// language : danish (da)
-// author : Ulrik Nielsen : https://github.com/mrbase
-
-(function (factory) {
- factory(moment);
-}(function (moment) {
- return moment.lang('da', {
- months : "januar_februar_marts_april_maj_juni_juli_august_september_oktober_november_december".split("_"),
- monthsShort : "jan_feb_mar_apr_maj_jun_jul_aug_sep_okt_nov_dec".split("_"),
- weekdays : "søndag_mandag_tirsdag_onsdag_torsdag_fredag_lørdag".split("_"),
- weekdaysShort : "søn_man_tir_ons_tor_fre_lør".split("_"),
- weekdaysMin : "sø_ma_ti_on_to_fr_lø".split("_"),
- longDateFormat : {
- LT : "HH:mm",
- L : "DD/MM/YYYY",
- LL : "D MMMM YYYY",
- LLL : "D MMMM YYYY LT",
- LLLL : "dddd D. MMMM, YYYY LT"
- },
- calendar : {
- sameDay : '[I dag kl.] LT',
- nextDay : '[I morgen kl.] LT',
- nextWeek : 'dddd [kl.] LT',
- lastDay : '[I går kl.] LT',
- lastWeek : '[sidste] dddd [kl] LT',
- sameElse : 'L'
- },
- relativeTime : {
- future : "om %s",
- past : "%s siden",
- s : "få sekunder",
- m : "et minut",
- mm : "%d minutter",
- h : "en time",
- hh : "%d timer",
- d : "en dag",
- dd : "%d dage",
- M : "en måned",
- MM : "%d måneder",
- y : "et år",
- yy : "%d år"
- },
- ordinal : '%d.',
- week : {
- dow : 1, // Monday is the first day of the week.
- doy : 4 // The week that contains Jan 4th is the first week of the year.
- }
- });
-}));
-// moment.js language configuration
-// language : german (de)
-// author : lluchs : https://github.com/lluchs
-// author: Menelion Elensúle: https://github.com/Oire
-
-(function (factory) {
- factory(moment);
-}(function (moment) {
- function processRelativeTime(number, withoutSuffix, key, isFuture) {
- var format = {
- 'm': ['eine Minute', 'einer Minute'],
- 'h': ['eine Stunde', 'einer Stunde'],
- 'd': ['ein Tag', 'einem Tag'],
- 'dd': [number + ' Tage', number + ' Tagen'],
- 'M': ['ein Monat', 'einem Monat'],
- 'MM': [number + ' Monate', number + ' Monaten'],
- 'y': ['ein Jahr', 'einem Jahr'],
- 'yy': [number + ' Jahre', number + ' Jahren']
- };
- return withoutSuffix ? format[key][0] : format[key][1];
- }
-
- return moment.lang('de', {
- months : "Januar_Februar_März_April_Mai_Juni_Juli_August_September_Oktober_November_Dezember".split("_"),
- monthsShort : "Jan._Febr._Mrz._Apr._Mai_Jun._Jul._Aug._Sept._Okt._Nov._Dez.".split("_"),
- weekdays : "Sonntag_Montag_Dienstag_Mittwoch_Donnerstag_Freitag_Samstag".split("_"),
- weekdaysShort : "So._Mo._Di._Mi._Do._Fr._Sa.".split("_"),
- weekdaysMin : "So_Mo_Di_Mi_Do_Fr_Sa".split("_"),
- longDateFormat : {
- LT: "H:mm [Uhr]",
- L : "DD.MM.YYYY",
- LL : "D. MMMM YYYY",
- LLL : "D. MMMM YYYY LT",
- LLLL : "dddd, D. MMMM YYYY LT"
- },
- calendar : {
- sameDay: "[Heute um] LT",
- sameElse: "L",
- nextDay: '[Morgen um] LT',
- nextWeek: 'dddd [um] LT',
- lastDay: '[Gestern um] LT',
- lastWeek: '[letzten] dddd [um] LT'
- },
- relativeTime : {
- future : "in %s",
- past : "vor %s",
- s : "ein paar Sekunden",
- m : processRelativeTime,
- mm : "%d Minuten",
- h : processRelativeTime,
- hh : "%d Stunden",
- d : processRelativeTime,
- dd : processRelativeTime,
- M : processRelativeTime,
- MM : processRelativeTime,
- y : processRelativeTime,
- yy : processRelativeTime
- },
- ordinal : '%d.',
- week : {
- dow : 1, // Monday is the first day of the week.
- doy : 4 // The week that contains Jan 4th is the first week of the year.
- }
- });
-}));
-// moment.js language configuration
-// language : modern greek (el)
-// author : Aggelos Karalias : https://github.com/mehiel
-
-(function (factory) {
- factory(moment);
-}(function (moment) {
- return moment.lang('el', {
- monthsNominativeEl : "ΙανουάÏιος_ΦεβÏουάÏιος_ΜάÏτιος_ΑπÏίλιος_Μάιος_ΙοÏνιος_ΙοÏλιος_ΑÏγουστος_ΣεπτέμβÏιος_ΟκτώβÏιος_ÎοέμβÏιος_ΔεκέμβÏιος".split("_"),
- monthsGenitiveEl : "ΙανουαÏίου_ΦεβÏουαÏίου_ΜαÏτίου_ΑπÏιλίου_ΜαÎου_Ιουνίου_Ιουλίου_ΑυγοÏστου_ΣεπτεμβÏίου_ΟκτωβÏίου_ÎοεμβÏίου_ΔεκεμβÏίου".split("_"),
- months : function (momentToFormat, format) {
- if (/D/.test(format.substring(0, format.indexOf("MMMM")))) { // if there is a day number before 'MMMM'
- return this._monthsGenitiveEl[momentToFormat.month()];
- } else {
- return this._monthsNominativeEl[momentToFormat.month()];
- }
- },
- monthsShort : "Ιαν_Φεβ_ΜαÏ_ΑπÏ_Μαϊ_Ιουν_Ιουλ_Αυγ_Σεπ_Οκτ_Îοε_Δεκ".split("_"),
- weekdays : "ΚυÏιακή_ΔευτέÏα_ΤÏίτη_ΤετάÏτη_Πέμπτη_ΠαÏασκευή_Σάββατο".split("_"),
- weekdaysShort : "ΚυÏ_Δευ_ΤÏι_Τετ_Πεμ_ΠαÏ_Σαβ".split("_"),
- weekdaysMin : "Κυ_Δε_ΤÏ_Τε_Πε_Πα_Σα".split("_"),
- meridiem : function (hours, minutes, isLower) {
- if (hours > 11) {
- return isLower ? 'μμ' : 'ΜΜ';
- } else {
- return isLower ? 'πμ' : 'ΠΜ';
- }
- },
- longDateFormat : {
- LT : "h:mm A",
- L : "DD/MM/YYYY",
- LL : "D MMMM YYYY",
- LLL : "D MMMM YYYY LT",
- LLLL : "dddd, D MMMM YYYY LT"
- },
- calendarEl : {
- sameDay : '[ΣήμεÏα {}] LT',
- nextDay : '[ΑÏÏιο {}] LT',
- nextWeek : 'dddd [{}] LT',
- lastDay : '[Χθες {}] LT',
- lastWeek : '[την Ï€ÏοηγοÏμενη] dddd [{}] LT',
- sameElse : 'L'
- },
- calendar : function (key, mom) {
- var output = this._calendarEl[key],
- hours = mom && mom.hours();
-
- return output.replace("{}", (hours % 12 === 1 ? "στη" : "στις"));
- },
- relativeTime : {
- future : "σε %s",
- past : "%s Ï€Ïιν",
- s : "δευτεÏόλεπτα",
- m : "ένα λεπτό",
- mm : "%d λεπτά",
- h : "μία ÏŽÏα",
- hh : "%d ÏŽÏες",
- d : "μία μέÏα",
- dd : "%d μέÏες",
- M : "ένας μήνας",
- MM : "%d μήνες",
- y : "ένας χÏόνος",
- yy : "%d χÏόνια"
- },
- ordinal : function (number) {
- return number + 'η';
- },
- week : {
- dow : 1, // Monday is the first day of the week.
- doy : 4 // The week that contains Jan 4st is the first week of the year.
- }
- });
-}));
-// moment.js language configuration
-// language : australian english (en-au)
-
-(function (factory) {
- factory(moment);
-}(function (moment) {
- return moment.lang('en-au', {
- months : "January_February_March_April_May_June_July_August_September_October_November_December".split("_"),
- monthsShort : "Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec".split("_"),
- weekdays : "Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),
- weekdaysShort : "Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"),
- weekdaysMin : "Su_Mo_Tu_We_Th_Fr_Sa".split("_"),
- longDateFormat : {
- LT : "h:mm A",
- L : "DD/MM/YYYY",
- LL : "D MMMM YYYY",
- LLL : "D MMMM YYYY LT",
- LLLL : "dddd, D MMMM YYYY LT"
- },
- calendar : {
- sameDay : '[Today at] LT',
- nextDay : '[Tomorrow at] LT',
- nextWeek : 'dddd [at] LT',
- lastDay : '[Yesterday at] LT',
- lastWeek : '[Last] dddd [at] LT',
- sameElse : 'L'
- },
- relativeTime : {
- future : "in %s",
- past : "%s ago",
- s : "a few 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"
- },
- ordinal : function (number) {
- var b = number % 10,
- output = (~~ (number % 100 / 10) === 1) ? 'th' :
- (b === 1) ? 'st' :
- (b === 2) ? 'nd' :
- (b === 3) ? 'rd' : 'th';
- return number + output;
- },
- week : {
- dow : 1, // Monday is the first day of the week.
- doy : 4 // The week that contains Jan 4th is the first week of the year.
- }
- });
-}));
-// moment.js language configuration
-// language : canadian english (en-ca)
-// author : Jonathan Abourbih : https://github.com/jonbca
-
-(function (factory) {
- factory(moment);
-}(function (moment) {
- return moment.lang('en-ca', {
- months : "January_February_March_April_May_June_July_August_September_October_November_December".split("_"),
- monthsShort : "Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec".split("_"),
- weekdays : "Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),
- weekdaysShort : "Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"),
- weekdaysMin : "Su_Mo_Tu_We_Th_Fr_Sa".split("_"),
- longDateFormat : {
- LT : "h:mm A",
- L : "YYYY-MM-DD",
- LL : "D MMMM, YYYY",
- LLL : "D MMMM, YYYY LT",
- LLLL : "dddd, D MMMM, YYYY LT"
- },
- calendar : {
- sameDay : '[Today at] LT',
- nextDay : '[Tomorrow at] LT',
- nextWeek : 'dddd [at] LT',
- lastDay : '[Yesterday at] LT',
- lastWeek : '[Last] dddd [at] LT',
- sameElse : 'L'
- },
- relativeTime : {
- future : "in %s",
- past : "%s ago",
- s : "a few 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"
- },
- ordinal : function (number) {
- var b = number % 10,
- output = (~~ (number % 100 / 10) === 1) ? 'th' :
- (b === 1) ? 'st' :
- (b === 2) ? 'nd' :
- (b === 3) ? 'rd' : 'th';
- return number + output;
- }
- });
-}));
-// moment.js language configuration
-// language : great britain english (en-gb)
-// author : Chris Gedrim : https://github.com/chrisgedrim
-
-(function (factory) {
- factory(moment);
-}(function (moment) {
- return moment.lang('en-gb', {
- months : "January_February_March_April_May_June_July_August_September_October_November_December".split("_"),
- monthsShort : "Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec".split("_"),
- weekdays : "Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),
- weekdaysShort : "Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"),
- weekdaysMin : "Su_Mo_Tu_We_Th_Fr_Sa".split("_"),
- longDateFormat : {
- LT : "HH:mm",
- L : "DD/MM/YYYY",
- LL : "D MMMM YYYY",
- LLL : "D MMMM YYYY LT",
- LLLL : "dddd, D MMMM YYYY LT"
- },
- calendar : {
- sameDay : '[Today at] LT',
- nextDay : '[Tomorrow at] LT',
- nextWeek : 'dddd [at] LT',
- lastDay : '[Yesterday at] LT',
- lastWeek : '[Last] dddd [at] LT',
- sameElse : 'L'
- },
- relativeTime : {
- future : "in %s",
- past : "%s ago",
- s : "a few 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"
- },
- ordinal : function (number) {
- var b = number % 10,
- output = (~~ (number % 100 / 10) === 1) ? 'th' :
- (b === 1) ? 'st' :
- (b === 2) ? 'nd' :
- (b === 3) ? 'rd' : 'th';
- return number + output;
- },
- week : {
- dow : 1, // Monday is the first day of the week.
- doy : 4 // The week that contains Jan 4th is the first week of the year.
- }
- });
-}));
-// moment.js language configuration
-// language : esperanto (eo)
-// author : Colin Dean : https://github.com/colindean
-// komento: Mi estas malcerta se mi korekte traktis akuzativojn en tiu traduko.
-// Se ne, bonvolu korekti kaj avizi min por ke mi povas lerni!
-
-(function (factory) {
- factory(moment);
-}(function (moment) {
- return moment.lang('eo', {
- months : "januaro_februaro_marto_aprilo_majo_junio_julio_aÅ­gusto_septembro_oktobro_novembro_decembro".split("_"),
- monthsShort : "jan_feb_mar_apr_maj_jun_jul_aÅ­g_sep_okt_nov_dec".split("_"),
- weekdays : "Dimanĉo_Lundo_Mardo_Merkredo_Ĵaŭdo_Vendredo_Sabato".split("_"),
- weekdaysShort : "Dim_Lun_Mard_Merk_Ä´aÅ­_Ven_Sab".split("_"),
- weekdaysMin : "Di_Lu_Ma_Me_Ä´a_Ve_Sa".split("_"),
- longDateFormat : {
- LT : "HH:mm",
- L : "YYYY-MM-DD",
- LL : "D[-an de] MMMM, YYYY",
- LLL : "D[-an de] MMMM, YYYY LT",
- LLLL : "dddd, [la] D[-an de] MMMM, YYYY LT"
- },
- meridiem : function (hours, minutes, isLower) {
- if (hours > 11) {
- return isLower ? 'p.t.m.' : 'P.T.M.';
- } else {
- return isLower ? 'a.t.m.' : 'A.T.M.';
- }
- },
- calendar : {
- sameDay : '[HodiaÅ­ je] LT',
- nextDay : '[MorgaÅ­ je] LT',
- nextWeek : 'dddd [je] LT',
- lastDay : '[HieraÅ­ je] LT',
- lastWeek : '[pasinta] dddd [je] LT',
- sameElse : 'L'
- },
- relativeTime : {
- future : "je %s",
- past : "antaÅ­ %s",
- s : "sekundoj",
- m : "minuto",
- mm : "%d minutoj",
- h : "horo",
- hh : "%d horoj",
- d : "tago",//ne 'diurno', ĉar estas uzita por proksimumo
- dd : "%d tagoj",
- M : "monato",
- MM : "%d monatoj",
- y : "jaro",
- yy : "%d jaroj"
- },
- ordinal : "%da",
- week : {
- dow : 1, // Monday is the first day of the week.
- doy : 7 // The week that contains Jan 1st is the first week of the year.
- }
- });
-}));
-// moment.js language configuration
-// language : spanish (es)
-// author : Julio Napurí : https://github.com/julionc
-
-(function (factory) {
- factory(moment);
-}(function (moment) {
- return moment.lang('es', {
- months : "enero_febrero_marzo_abril_mayo_junio_julio_agosto_septiembre_octubre_noviembre_diciembre".split("_"),
- monthsShort : "ene._feb._mar._abr._may._jun._jul._ago._sep._oct._nov._dic.".split("_"),
- weekdays : "domingo_lunes_martes_miércoles_jueves_viernes_sábado".split("_"),
- weekdaysShort : "dom._lun._mar._mié._jue._vie._sáb.".split("_"),
- weekdaysMin : "Do_Lu_Ma_Mi_Ju_Vi_Sá".split("_"),
- longDateFormat : {
- LT : "H:mm",
- L : "DD/MM/YYYY",
- LL : "D [de] MMMM [de] YYYY",
- LLL : "D [de] MMMM [de] YYYY LT",
- LLLL : "dddd, D [de] MMMM [de] YYYY LT"
- },
- calendar : {
- sameDay : function () {
- return '[hoy a la' + ((this.hours() !== 1) ? 's' : '') + '] LT';
- },
- nextDay : function () {
- return '[mañana a la' + ((this.hours() !== 1) ? 's' : '') + '] LT';
- },
- nextWeek : function () {
- return 'dddd [a la' + ((this.hours() !== 1) ? 's' : '') + '] LT';
- },
- lastDay : function () {
- return '[ayer a la' + ((this.hours() !== 1) ? 's' : '') + '] LT';
- },
- lastWeek : function () {
- return '[el] dddd [pasado a la' + ((this.hours() !== 1) ? 's' : '') + '] LT';
- },
- sameElse : 'L'
- },
- relativeTime : {
- future : "en %s",
- past : "hace %s",
- s : "unos segundos",
- m : "un minuto",
- mm : "%d minutos",
- h : "una hora",
- hh : "%d horas",
- d : "un día",
- dd : "%d días",
- M : "un mes",
- MM : "%d meses",
- y : "un año",
- yy : "%d años"
- },
- ordinal : '%dº',
- week : {
- dow : 1, // Monday is the first day of the week.
- doy : 4 // The week that contains Jan 4th is the first week of the year.
- }
- });
-}));
-// moment.js language configuration
-// language : estonian (et)
-// author : Henry Kehlmann : https://github.com/madhenry
-
-(function (factory) {
- factory(moment);
-}(function (moment) {
- function translateSeconds(number, withoutSuffix, key, isFuture) {
- return (isFuture || withoutSuffix) ? 'paari sekundi' : 'paar sekundit';
- }
-
- return moment.lang('et', {
- months : "jaanuar_veebruar_märts_aprill_mai_juuni_juuli_august_september_oktoober_november_detsember".split("_"),
- monthsShort : "jaan_veebr_märts_apr_mai_juuni_juuli_aug_sept_okt_nov_dets".split("_"),
- weekdays : "pühapäev_esmaspäev_teisipäev_kolmapäev_neljapäev_reede_laupäev".split("_"),
- weekdaysShort : "P_E_T_K_N_R_L".split("_"),
- weekdaysMin : "P_E_T_K_N_R_L".split("_"),
- longDateFormat : {
- LT : "H:mm",
- L : "DD.MM.YYYY",
- LL : "D. MMMM YYYY",
- LLL : "D. MMMM YYYY LT",
- LLLL : "dddd, D. MMMM YYYY LT"
- },
- calendar : {
- sameDay : '[Täna,] LT',
- nextDay : '[Homme,] LT',
- nextWeek : '[Järgmine] dddd LT',
- lastDay : '[Eile,] LT',
- lastWeek : '[Eelmine] dddd LT',
- sameElse : 'L'
- },
- relativeTime : {
- future : "%s pärast",
- past : "%s tagasi",
- s : translateSeconds,
- m : "minut",
- mm : "%d minutit",
- h : "tund",
- hh : "%d tundi",
- d : "päev",
- dd : "%d päeva",
- M : "kuu",
- MM : "%d kuud",
- y : "aasta",
- yy : "%d aastat"
- },
- ordinal : '%d.',
- week : {
- dow : 1, // Monday is the first day of the week.
- doy : 4 // The week that contains Jan 4th is the first week of the year.
- }
- });
-}));
-// moment.js language configuration
-// language : euskara (eu)
-// author : Eneko Illarramendi : https://github.com/eillarra
-
-(function (factory) {
- factory(moment);
-}(function (moment) {
- return moment.lang('eu', {
- months : "urtarrila_otsaila_martxoa_apirila_maiatza_ekaina_uztaila_abuztua_iraila_urria_azaroa_abendua".split("_"),
- monthsShort : "urt._ots._mar._api._mai._eka._uzt._abu._ira._urr._aza._abe.".split("_"),
- weekdays : "igandea_astelehena_asteartea_asteazkena_osteguna_ostirala_larunbata".split("_"),
- weekdaysShort : "ig._al._ar._az._og._ol._lr.".split("_"),
- weekdaysMin : "ig_al_ar_az_og_ol_lr".split("_"),
- longDateFormat : {
- LT : "HH:mm",
- L : "YYYY-MM-DD",
- LL : "YYYY[ko] MMMM[ren] D[a]",
- LLL : "YYYY[ko] MMMM[ren] D[a] LT",
- LLLL : "dddd, YYYY[ko] MMMM[ren] D[a] LT",
- l : "YYYY-M-D",
- ll : "YYYY[ko] MMM D[a]",
- lll : "YYYY[ko] MMM D[a] LT",
- llll : "ddd, YYYY[ko] MMM D[a] LT"
- },
- calendar : {
- sameDay : '[gaur] LT[etan]',
- nextDay : '[bihar] LT[etan]',
- nextWeek : 'dddd LT[etan]',
- lastDay : '[atzo] LT[etan]',
- lastWeek : '[aurreko] dddd LT[etan]',
- sameElse : 'L'
- },
- relativeTime : {
- future : "%s barru",
- past : "duela %s",
- s : "segundo batzuk",
- m : "minutu bat",
- mm : "%d minutu",
- h : "ordu bat",
- hh : "%d ordu",
- d : "egun bat",
- dd : "%d egun",
- M : "hilabete bat",
- MM : "%d hilabete",
- y : "urte bat",
- yy : "%d urte"
- },
- ordinal : '%d.',
- week : {
- dow : 1, // Monday is the first day of the week.
- doy : 7 // The week that contains Jan 1st is the first week of the year.
- }
- });
-}));
-// moment.js language configuration
-// language : Persian Language
-// author : Ebrahim Byagowi : https://github.com/ebraminio
-
-(function (factory) {
- factory(moment);
-}(function (moment) {
- var symbolMap = {
- '1': 'Û±',
- '2': 'Û²',
- '3': 'Û³',
- '4': 'Û´',
- '5': 'Ûµ',
- '6': 'Û¶',
- '7': 'Û·',
- '8': 'Û¸',
- '9': 'Û¹',
- '0': 'Û°'
- }, numberMap = {
- 'Û±': '1',
- 'Û²': '2',
- 'Û³': '3',
- 'Û´': '4',
- 'Ûµ': '5',
- 'Û¶': '6',
- 'Û·': '7',
- 'Û¸': '8',
- 'Û¹': '9',
- 'Û°': '0'
- };
-
- return moment.lang('fa', {
- months : 'ژانویه_Ùوریه_مارس_آوریل_مه_ژوئن_ژوئیه_اوت_سپتامبر_اکتبر_نوامبر_دسامبر'.split('_'),
- monthsShort : 'ژانویه_Ùوریه_مارس_آوریل_مه_ژوئن_ژوئیه_اوت_سپتامبر_اکتبر_نوامبر_دسامبر'.split('_'),
- weekdays : 'یک\u200cشنبه_دوشنبه_سه\u200cشنبه_چهارشنبه_پنج\u200cشنبه_جمعه_شنبه'.split('_'),
- weekdaysShort : 'یک\u200cشنبه_دوشنبه_سه\u200cشنبه_چهارشنبه_پنج\u200cشنبه_جمعه_شنبه'.split('_'),
- weekdaysMin : 'ی_د_س_چ_پ_ج_ش'.split('_'),
- longDateFormat : {
- LT : 'HH:mm',
- L : 'DD/MM/YYYY',
- LL : 'D MMMM YYYY',
- LLL : 'D MMMM YYYY LT',
- LLLL : 'dddd, D MMMM YYYY LT'
- },
- meridiem : function (hour, minute, isLower) {
- if (hour < 12) {
- return "قبل از ظهر";
- } else {
- return "بعد از ظهر";
- }
- },
- calendar : {
- sameDay : '[امروز ساعت] LT',
- nextDay : '[Ùردا ساعت] LT',
- nextWeek : 'dddd [ساعت] LT',
- lastDay : '[دیروز ساعت] LT',
- lastWeek : 'dddd [پیش] [ساعت] LT',
- sameElse : 'L'
- },
- relativeTime : {
- future : 'در %s',
- past : '%s پیش',
- s : 'چندین ثانیه',
- m : 'یک دقیقه',
- mm : '%d دقیقه',
- h : 'یک ساعت',
- hh : '%d ساعت',
- d : 'یک روز',
- dd : '%d روز',
- M : 'یک ماه',
- MM : '%d ماه',
- y : 'یک سال',
- yy : '%d سال'
- },
- preparse: function (string) {
- return string.replace(/[Û°-Û¹]/g, function (match) {
- return numberMap[match];
- }).replace(/،/g, ',');
- },
- postformat: function (string) {
- return string.replace(/\d/g, function (match) {
- return symbolMap[match];
- }).replace(/,/g, '،');
- },
- ordinal : '%dÙ…',
- week : {
- dow : 6, // Saturday is the first day of the week.
- doy : 12 // The week that contains Jan 1st is the first week of the year.
- }
- });
-}));
-// moment.js language configuration
-// language : finnish (fi)
-// author : Tarmo Aidantausta : https://github.com/bleadof
-
-(function (factory) {
- factory(moment);
-}(function (moment) {
- var numbers_past = 'nolla yksi kaksi kolme neljä viisi kuusi seitsemän kahdeksan yhdeksän'.split(' '),
- numbers_future = ['nolla', 'yhden', 'kahden', 'kolmen', 'neljän', 'viiden', 'kuuden',
- numbers_past[7], numbers_past[8], numbers_past[9]];
-
- function translate(number, withoutSuffix, key, isFuture) {
- var result = "";
- switch (key) {
- case 's':
- return isFuture ? 'muutaman sekunnin' : 'muutama sekunti';
- case 'm':
- return isFuture ? 'minuutin' : 'minuutti';
- case 'mm':
- result = isFuture ? 'minuutin' : 'minuuttia';
- break;
- case 'h':
- return isFuture ? 'tunnin' : 'tunti';
- case 'hh':
- result = isFuture ? 'tunnin' : 'tuntia';
- break;
- case 'd':
- return isFuture ? 'päivän' : 'päivä';
- case 'dd':
- result = isFuture ? 'päivän' : 'päivää';
- break;
- case 'M':
- return isFuture ? 'kuukauden' : 'kuukausi';
- case 'MM':
- result = isFuture ? 'kuukauden' : 'kuukautta';
- break;
- case 'y':
- return isFuture ? 'vuoden' : 'vuosi';
- case 'yy':
- result = isFuture ? 'vuoden' : 'vuotta';
- break;
- }
- result = verbal_number(number, isFuture) + " " + result;
- return result;
- }
-
- function verbal_number(number, isFuture) {
- return number < 10 ? (isFuture ? numbers_future[number] : numbers_past[number]) : number;
- }
-
- return moment.lang('fi', {
- months : "tammikuu_helmikuu_maaliskuu_huhtikuu_toukokuu_kesäkuu_heinäkuu_elokuu_syyskuu_lokakuu_marraskuu_joulukuu".split("_"),
- monthsShort : "tammi_helmi_maalis_huhti_touko_kesä_heinä_elo_syys_loka_marras_joulu".split("_"),
- weekdays : "sunnuntai_maanantai_tiistai_keskiviikko_torstai_perjantai_lauantai".split("_"),
- weekdaysShort : "su_ma_ti_ke_to_pe_la".split("_"),
- weekdaysMin : "su_ma_ti_ke_to_pe_la".split("_"),
- longDateFormat : {
- LT : "HH.mm",
- L : "DD.MM.YYYY",
- LL : "Do MMMM[ta] YYYY",
- LLL : "Do MMMM[ta] YYYY, [klo] LT",
- LLLL : "dddd, Do MMMM[ta] YYYY, [klo] LT",
- l : "D.M.YYYY",
- ll : "Do MMM YYYY",
- lll : "Do MMM YYYY, [klo] LT",
- llll : "ddd, Do MMM YYYY, [klo] LT"
- },
- calendar : {
- sameDay : '[tänään] [klo] LT',
- nextDay : '[huomenna] [klo] LT',
- nextWeek : 'dddd [klo] LT',
- lastDay : '[eilen] [klo] LT',
- lastWeek : '[viime] dddd[na] [klo] LT',
- sameElse : 'L'
- },
- relativeTime : {
- future : "%s päästä",
- past : "%s sitten",
- s : translate,
- m : translate,
- mm : translate,
- h : translate,
- hh : translate,
- d : translate,
- dd : translate,
- M : translate,
- MM : translate,
- y : translate,
- yy : translate
- },
- ordinal : "%d.",
- week : {
- dow : 1, // Monday is the first day of the week.
- doy : 4 // The week that contains Jan 4th is the first week of the year.
- }
- });
-}));
-// moment.js language configuration
-// language : faroese (fo)
-// author : Ragnar Johannesen : https://github.com/ragnar123
-
-(function (factory) {
- factory(moment);
-}(function (moment) {
- return moment.lang('fo', {
- months : "januar_februar_mars_apríl_mai_juni_juli_august_september_oktober_november_desember".split("_"),
- monthsShort : "jan_feb_mar_apr_mai_jun_jul_aug_sep_okt_nov_des".split("_"),
- weekdays : "sunnudagur_mánadagur_týsdagur_mikudagur_hósdagur_fríggjadagur_leygardagur".split("_"),
- weekdaysShort : "sun_mán_týs_mik_hós_frí_ley".split("_"),
- weekdaysMin : "su_má_tý_mi_hó_fr_le".split("_"),
- longDateFormat : {
- LT : "HH:mm",
- L : "DD/MM/YYYY",
- LL : "D MMMM YYYY",
- LLL : "D MMMM YYYY LT",
- LLLL : "dddd D. MMMM, YYYY LT"
- },
- calendar : {
- sameDay : '[Ã dag kl.] LT',
- nextDay : '[Ã morgin kl.] LT',
- nextWeek : 'dddd [kl.] LT',
- lastDay : '[à gjár kl.] LT',
- lastWeek : '[síðstu] dddd [kl] LT',
- sameElse : 'L'
- },
- relativeTime : {
- future : "um %s",
- past : "%s síðani",
- s : "fá sekund",
- m : "ein minutt",
- mm : "%d minuttir",
- h : "ein tími",
- hh : "%d tímar",
- d : "ein dagur",
- dd : "%d dagar",
- M : "ein mánaði",
- MM : "%d mánaðir",
- y : "eitt ár",
- yy : "%d ár"
- },
- ordinal : '%d.',
- week : {
- dow : 1, // Monday is the first day of the week.
- doy : 4 // The week that contains Jan 4th is the first week of the year.
- }
- });
-}));
-// moment.js language configuration
-// language : canadian french (fr-ca)
-// author : Jonathan Abourbih : https://github.com/jonbca
-
-(function (factory) {
- factory(moment);
-}(function (moment) {
- return moment.lang('fr-ca', {
- months : "janvier_février_mars_avril_mai_juin_juillet_août_septembre_octobre_novembre_décembre".split("_"),
- monthsShort : "janv._févr._mars_avr._mai_juin_juil._août_sept._oct._nov._déc.".split("_"),
- weekdays : "dimanche_lundi_mardi_mercredi_jeudi_vendredi_samedi".split("_"),
- weekdaysShort : "dim._lun._mar._mer._jeu._ven._sam.".split("_"),
- weekdaysMin : "Di_Lu_Ma_Me_Je_Ve_Sa".split("_"),
- longDateFormat : {
- LT : "HH:mm",
- L : "YYYY-MM-DD",
- LL : "D MMMM YYYY",
- LLL : "D MMMM YYYY LT",
- LLLL : "dddd D MMMM YYYY LT"
- },
- calendar : {
- sameDay: "[Aujourd'hui à] LT",
- nextDay: '[Demain à] LT',
- nextWeek: 'dddd [à] LT',
- lastDay: '[Hier à] LT',
- lastWeek: 'dddd [dernier à] LT',
- sameElse: 'L'
- },
- relativeTime : {
- future : "dans %s",
- past : "il y a %s",
- s : "quelques secondes",
- m : "une minute",
- mm : "%d minutes",
- h : "une heure",
- hh : "%d heures",
- d : "un jour",
- dd : "%d jours",
- M : "un mois",
- MM : "%d mois",
- y : "un an",
- yy : "%d ans"
- },
- ordinal : function (number) {
- return number + (number === 1 ? 'er' : '');
- }
- });
-}));
-// moment.js language configuration
-// language : french (fr)
-// author : John Fischer : https://github.com/jfroffice
-
-(function (factory) {
- factory(moment);
-}(function (moment) {
- return moment.lang('fr', {
- months : "janvier_février_mars_avril_mai_juin_juillet_août_septembre_octobre_novembre_décembre".split("_"),
- monthsShort : "janv._févr._mars_avr._mai_juin_juil._août_sept._oct._nov._déc.".split("_"),
- weekdays : "dimanche_lundi_mardi_mercredi_jeudi_vendredi_samedi".split("_"),
- weekdaysShort : "dim._lun._mar._mer._jeu._ven._sam.".split("_"),
- weekdaysMin : "Di_Lu_Ma_Me_Je_Ve_Sa".split("_"),
- longDateFormat : {
- LT : "HH:mm",
- L : "DD/MM/YYYY",
- LL : "D MMMM YYYY",
- LLL : "D MMMM YYYY LT",
- LLLL : "dddd D MMMM YYYY LT"
- },
- calendar : {
- sameDay: "[Aujourd'hui à] LT",
- nextDay: '[Demain à] LT',
- nextWeek: 'dddd [à] LT',
- lastDay: '[Hier à] LT',
- lastWeek: 'dddd [dernier à] LT',
- sameElse: 'L'
- },
- relativeTime : {
- future : "dans %s",
- past : "il y a %s",
- s : "quelques secondes",
- m : "une minute",
- mm : "%d minutes",
- h : "une heure",
- hh : "%d heures",
- d : "un jour",
- dd : "%d jours",
- M : "un mois",
- MM : "%d mois",
- y : "un an",
- yy : "%d ans"
- },
- ordinal : function (number) {
- return number + (number === 1 ? 'er' : '');
- },
- week : {
- dow : 1, // Monday is the first day of the week.
- doy : 4 // The week that contains Jan 4th is the first week of the year.
- }
- });
-}));
-// moment.js language configuration
-// language : galician (gl)
-// author : Juan G. Hurtado : https://github.com/juanghurtado
-
-(function (factory) {
- factory(moment);
-}(function (moment) {
- return moment.lang('gl', {
- months : "Xaneiro_Febreiro_Marzo_Abril_Maio_Xuño_Xullo_Agosto_Setembro_Outubro_Novembro_Decembro".split("_"),
- monthsShort : "Xan._Feb._Mar._Abr._Mai._Xuñ._Xul._Ago._Set._Out._Nov._Dec.".split("_"),
- weekdays : "Domingo_Luns_Martes_Mércores_Xoves_Venres_Sábado".split("_"),
- weekdaysShort : "Dom._Lun._Mar._Mér._Xov._Ven._Sáb.".split("_"),
- weekdaysMin : "Do_Lu_Ma_Mé_Xo_Ve_Sá".split("_"),
- longDateFormat : {
- LT : "H:mm",
- L : "DD/MM/YYYY",
- LL : "D MMMM YYYY",
- LLL : "D MMMM YYYY LT",
- LLLL : "dddd D MMMM YYYY LT"
- },
- calendar : {
- sameDay : function () {
- return '[hoxe ' + ((this.hours() !== 1) ? 'ás' : 'á') + '] LT';
- },
- nextDay : function () {
- return '[mañá ' + ((this.hours() !== 1) ? 'ás' : 'á') + '] LT';
- },
- nextWeek : function () {
- return 'dddd [' + ((this.hours() !== 1) ? 'ás' : 'a') + '] LT';
- },
- lastDay : function () {
- return '[onte ' + ((this.hours() !== 1) ? 'á' : 'a') + '] LT';
- },
- lastWeek : function () {
- return '[o] dddd [pasado ' + ((this.hours() !== 1) ? 'ás' : 'a') + '] LT';
- },
- sameElse : 'L'
- },
- relativeTime : {
- future : function (str) {
- if (str === "uns segundos") {
- return "nuns segundos";
- }
- return "en " + str;
- },
- past : "hai %s",
- s : "uns segundos",
- m : "un minuto",
- mm : "%d minutos",
- h : "unha hora",
- hh : "%d horas",
- d : "un día",
- dd : "%d días",
- M : "un mes",
- MM : "%d meses",
- y : "un ano",
- yy : "%d anos"
- },
- ordinal : '%dº',
- week : {
- dow : 1, // Monday is the first day of the week.
- doy : 7 // The week that contains Jan 1st is the first week of the year.
- }
- });
-}));
-// moment.js language configuration
-// language : Hebrew (he)
-// author : Tomer Cohen : https://github.com/tomer
-// author : Moshe Simantov : https://github.com/DevelopmentIL
-// author : Tal Ater : https://github.com/TalAter
-
-(function (factory) {
- factory(moment);
-}(function (moment) {
- return moment.lang('he', {
- months : "ינו×ר_פברו×ר_מרץ_×פריל_מ××™_יוני_יולי_×וגוסט_ספטמבר_×וקטובר_נובמבר_דצמבר".split("_"),
- monthsShort : "ינו׳_פבר׳_מרץ_×פר׳_מ××™_יוני_יולי_×וג׳_ספט׳_×וק׳_נוב׳_דצמ׳".split("_"),
- weekdays : "ר×שון_שני_שלישי_רביעי_חמישי_שישי_שבת".split("_"),
- weekdaysShort : "×׳_ב׳_ג׳_ד׳_ה׳_ו׳_ש׳".split("_"),
- weekdaysMin : "×_ב_×’_ד_×”_ו_ש".split("_"),
- longDateFormat : {
- LT : "HH:mm",
- L : "DD/MM/YYYY",
- LL : "D [ב]MMMM YYYY",
- LLL : "D [ב]MMMM YYYY LT",
- LLLL : "dddd, D [ב]MMMM YYYY LT",
- l : "D/M/YYYY",
- ll : "D MMM YYYY",
- lll : "D MMM YYYY LT",
- llll : "ddd, D MMM YYYY LT"
- },
- calendar : {
- sameDay : '[×”×™×•× ×‘Ö¾]LT',
- nextDay : '[מחר ב־]LT',
- nextWeek : 'dddd [בשעה] LT',
- lastDay : '[×תמול ב־]LT',
- lastWeek : '[ביו×] dddd [×”×חרון בשעה] LT',
- sameElse : 'L'
- },
- relativeTime : {
- future : "בעוד %s",
- past : "לפני %s",
- s : "מספר שניות",
- m : "דקה",
- mm : "%d דקות",
- h : "שעה",
- hh : function (number) {
- if (number === 2) {
- return "שעתיי×";
- }
- return number + " שעות";
- },
- d : "יו×",
- dd : function (number) {
- if (number === 2) {
- return "יומיי×";
- }
- return number + " ימי×";
- },
- M : "חודש",
- MM : function (number) {
- if (number === 2) {
- return "חודשיי×";
- }
- return number + " חודשי×";
- },
- y : "שנה",
- yy : function (number) {
- if (number === 2) {
- return "שנתיי×";
- }
- return number + " שני×";
- }
- }
- });
-}));
-// moment.js language configuration
-// language : hindi (hi)
-// author : Mayank Singhal : https://github.com/mayanksinghal
-
-(function (factory) {
- factory(moment);
-}(function (moment) {
- var symbolMap = {
- '1': '१',
- '2': '२',
- '3': '३',
- '4': '४',
- '5': '५',
- '6': '६',
- '7': '७',
- '8': '८',
- '9': '९',
- '0': '०'
- },
- numberMap = {
- '१': '1',
- '२': '2',
- '३': '3',
- '४': '4',
- '५': '5',
- '६': '6',
- '७': '7',
- '८': '8',
- '९': '9',
- '०': '0'
- };
-
- return moment.lang('hi', {
- months : 'जनवरी_फ़रवरी_मारà¥à¤š_अपà¥à¤°à¥ˆà¤²_मई_जून_जà¥à¤²à¤¾à¤ˆ_अगसà¥à¤¤_सितमà¥à¤¬à¤°_अकà¥à¤Ÿà¥‚बर_नवमà¥à¤¬à¤°_दिसमà¥à¤¬à¤°'.split("_"),
- monthsShort : 'जन._फ़र._मारà¥à¤š_अपà¥à¤°à¥ˆ._मई_जून_जà¥à¤²._अग._सित._अकà¥à¤Ÿà¥‚._नव._दिस.'.split("_"),
- weekdays : 'रविवार_सोमवार_मंगलवार_बà¥à¤§à¤µà¤¾à¤°_गà¥à¤°à¥‚वार_शà¥à¤•à¥à¤°à¤µà¤¾à¤°_शनिवार'.split("_"),
- weekdaysShort : 'रवि_सोम_मंगल_बà¥à¤§_गà¥à¤°à¥‚_शà¥à¤•à¥à¤°_शनि'.split("_"),
- weekdaysMin : 'र_सो_मं_बà¥_गà¥_शà¥_श'.split("_"),
- longDateFormat : {
- LT : "A h:mm बजे",
- L : "DD/MM/YYYY",
- LL : "D MMMM YYYY",
- LLL : "D MMMM YYYY, LT",
- LLLL : "dddd, D MMMM YYYY, LT"
- },
- calendar : {
- sameDay : '[आज] LT',
- nextDay : '[कल] LT',
- nextWeek : 'dddd, LT',
- lastDay : '[कल] LT',
- lastWeek : '[पिछले] dddd, LT',
- sameElse : 'L'
- },
- relativeTime : {
- future : "%s में",
- past : "%s पहले",
- s : "कà¥à¤› ही कà¥à¤·à¤£",
- m : "à¤à¤• मिनट",
- mm : "%d मिनट",
- h : "à¤à¤• घंटा",
- hh : "%d घंटे",
- d : "à¤à¤• दिन",
- dd : "%d दिन",
- M : "à¤à¤• महीने",
- MM : "%d महीने",
- y : "à¤à¤• वरà¥à¤·",
- yy : "%d वरà¥à¤·"
- },
- preparse: function (string) {
- return string.replace(/[१२३४५६७८९०]/g, function (match) {
- return numberMap[match];
- });
- },
- postformat: function (string) {
- return string.replace(/\d/g, function (match) {
- return symbolMap[match];
- });
- },
- // Hindi notation for meridiems are quite fuzzy in practice. While there exists
- // a rigid notion of a 'Pahar' it is not used as rigidly in modern Hindi.
- meridiem : function (hour, minute, isLower) {
- if (hour < 4) {
- return "रात";
- } else if (hour < 10) {
- return "सà¥à¤¬à¤¹";
- } else if (hour < 17) {
- return "दोपहर";
- } else if (hour < 20) {
- return "शाम";
- } else {
- return "रात";
- }
- },
- week : {
- dow : 0, // Sunday is the first day of the week.
- doy : 6 // The week that contains Jan 1st is the first week of the year.
- }
- });
-}));
-// moment.js language configuration
-// language : hrvatski (hr)
-// author : Bojan Marković : https://github.com/bmarkovic
-
-// based on (sl) translation by Robert Sedovšek
-
-(function (factory) {
- factory(moment);
-}(function (moment) {
-
- function translate(number, withoutSuffix, key) {
- var result = number + " ";
- switch (key) {
- case 'm':
- return withoutSuffix ? 'jedna minuta' : 'jedne minute';
- case 'mm':
- if (number === 1) {
- result += 'minuta';
- } else if (number === 2 || number === 3 || number === 4) {
- result += 'minute';
- } else {
- result += 'minuta';
- }
- return result;
- case 'h':
- return withoutSuffix ? 'jedan sat' : 'jednog sata';
- case 'hh':
- if (number === 1) {
- result += 'sat';
- } else if (number === 2 || number === 3 || number === 4) {
- result += 'sata';
- } else {
- result += 'sati';
- }
- return result;
- case 'dd':
- if (number === 1) {
- result += 'dan';
- } else {
- result += 'dana';
- }
- return result;
- case 'MM':
- if (number === 1) {
- result += 'mjesec';
- } else if (number === 2 || number === 3 || number === 4) {
- result += 'mjeseca';
- } else {
- result += 'mjeseci';
- }
- return result;
- case 'yy':
- if (number === 1) {
- result += 'godina';
- } else if (number === 2 || number === 3 || number === 4) {
- result += 'godine';
- } else {
- result += 'godina';
- }
- return result;
- }
- }
-
- return moment.lang('hr', {
- months : "sjeÄanj_veljaÄa_ožujak_travanj_svibanj_lipanj_srpanj_kolovoz_rujan_listopad_studeni_prosinac".split("_"),
- monthsShort : "sje._vel._ožu._tra._svi._lip._srp._kol._ruj._lis._stu._pro.".split("_"),
- weekdays : "nedjelja_ponedjeljak_utorak_srijeda_Äetvrtak_petak_subota".split("_"),
- weekdaysShort : "ned._pon._uto._sri._Äet._pet._sub.".split("_"),
- weekdaysMin : "ne_po_ut_sr_Äe_pe_su".split("_"),
- longDateFormat : {
- LT : "H:mm",
- L : "DD. MM. YYYY",
- LL : "D. MMMM YYYY",
- LLL : "D. MMMM YYYY LT",
- LLLL : "dddd, D. MMMM YYYY LT"
- },
- calendar : {
- sameDay : '[danas u] LT',
- nextDay : '[sutra u] LT',
-
- nextWeek : function () {
- switch (this.day()) {
- case 0:
- return '[u] [nedjelju] [u] LT';
- case 3:
- return '[u] [srijedu] [u] LT';
- case 6:
- return '[u] [subotu] [u] LT';
- case 1:
- case 2:
- case 4:
- case 5:
- return '[u] dddd [u] LT';
- }
- },
- lastDay : '[juÄer u] LT',
- lastWeek : function () {
- switch (this.day()) {
- case 0:
- case 3:
- return '[prošlu] dddd [u] LT';
- case 6:
- return '[prošle] [subote] [u] LT';
- case 1:
- case 2:
- case 4:
- case 5:
- return '[prošli] dddd [u] LT';
- }
- },
- sameElse : 'L'
- },
- relativeTime : {
- future : "za %s",
- past : "prije %s",
- s : "par sekundi",
- m : translate,
- mm : translate,
- h : translate,
- hh : translate,
- d : "dan",
- dd : translate,
- M : "mjesec",
- MM : translate,
- y : "godinu",
- yy : translate
- },
- ordinal : '%d.',
- week : {
- dow : 1, // Monday is the first day of the week.
- doy : 7 // The week that contains Jan 1st is the first week of the year.
- }
- });
-}));
-// moment.js language configuration
-// language : hungarian (hu)
-// author : Adam Brunner : https://github.com/adambrunner
-
-(function (factory) {
- factory(moment);
-}(function (moment) {
- var weekEndings = 'vasárnap hétfőn kedden szerdán csütörtökön pénteken szombaton'.split(' ');
-
- function translate(number, withoutSuffix, key, isFuture) {
- var num = number,
- suffix;
-
- switch (key) {
- case 's':
- return (isFuture || withoutSuffix) ? 'néhány másodperc' : 'néhány másodperce';
- case 'm':
- return 'egy' + (isFuture || withoutSuffix ? ' perc' : ' perce');
- case 'mm':
- return num + (isFuture || withoutSuffix ? ' perc' : ' perce');
- case 'h':
- return 'egy' + (isFuture || withoutSuffix ? ' óra' : ' órája');
- case 'hh':
- return num + (isFuture || withoutSuffix ? ' óra' : ' órája');
- case 'd':
- return 'egy' + (isFuture || withoutSuffix ? ' nap' : ' napja');
- case 'dd':
- return num + (isFuture || withoutSuffix ? ' nap' : ' napja');
- case 'M':
- return 'egy' + (isFuture || withoutSuffix ? ' hónap' : ' hónapja');
- case 'MM':
- return num + (isFuture || withoutSuffix ? ' hónap' : ' hónapja');
- case 'y':
- return 'egy' + (isFuture || withoutSuffix ? ' év' : ' éve');
- case 'yy':
- return num + (isFuture || withoutSuffix ? ' év' : ' éve');
- }
-
- return '';
- }
-
- function week(isFuture) {
- return (isFuture ? '' : '[múlt] ') + '[' + weekEndings[this.day()] + '] LT[-kor]';
- }
-
- return moment.lang('hu', {
- months : "január_február_március_április_május_június_július_augusztus_szeptember_október_november_december".split("_"),
- monthsShort : "jan_feb_márc_ápr_máj_jún_júl_aug_szept_okt_nov_dec".split("_"),
- weekdays : "vasárnap_hétfő_kedd_szerda_csütörtök_péntek_szombat".split("_"),
- weekdaysShort : "vas_hét_kedd_sze_csüt_pén_szo".split("_"),
- weekdaysMin : "v_h_k_sze_cs_p_szo".split("_"),
- longDateFormat : {
- LT : "H:mm",
- L : "YYYY.MM.DD.",
- LL : "YYYY. MMMM D.",
- LLL : "YYYY. MMMM D., LT",
- LLLL : "YYYY. MMMM D., dddd LT"
- },
- calendar : {
- sameDay : '[ma] LT[-kor]',
- nextDay : '[holnap] LT[-kor]',
- nextWeek : function () {
- return week.call(this, true);
- },
- lastDay : '[tegnap] LT[-kor]',
- lastWeek : function () {
- return week.call(this, false);
- },
- sameElse : 'L'
- },
- relativeTime : {
- future : "%s múlva",
- past : "%s",
- s : translate,
- m : translate,
- mm : translate,
- h : translate,
- hh : translate,
- d : translate,
- dd : translate,
- M : translate,
- MM : translate,
- y : translate,
- yy : translate
- },
- ordinal : '%d.',
- week : {
- dow : 1, // Monday is the first day of the week.
- doy : 7 // The week that contains Jan 1st is the first week of the year.
- }
- });
-}));
-// moment.js language configuration
-// language : Bahasa Indonesia (id)
-// author : Mohammad Satrio Utomo : https://github.com/tyok
-// reference: http://id.wikisource.org/wiki/Pedoman_Umum_Ejaan_Bahasa_Indonesia_yang_Disempurnakan
-
-(function (factory) {
- factory(moment);
-}(function (moment) {
- return moment.lang('id', {
- months : "Januari_Februari_Maret_April_Mei_Juni_Juli_Agustus_September_Oktober_November_Desember".split("_"),
- monthsShort : "Jan_Feb_Mar_Apr_Mei_Jun_Jul_Ags_Sep_Okt_Nov_Des".split("_"),
- weekdays : "Minggu_Senin_Selasa_Rabu_Kamis_Jumat_Sabtu".split("_"),
- weekdaysShort : "Min_Sen_Sel_Rab_Kam_Jum_Sab".split("_"),
- weekdaysMin : "Mg_Sn_Sl_Rb_Km_Jm_Sb".split("_"),
- longDateFormat : {
- LT : "HH.mm",
- L : "DD/MM/YYYY",
- LL : "D MMMM YYYY",
- LLL : "D MMMM YYYY [pukul] LT",
- LLLL : "dddd, D MMMM YYYY [pukul] LT"
- },
- meridiem : function (hours, minutes, isLower) {
- if (hours < 11) {
- return 'pagi';
- } else if (hours < 15) {
- return 'siang';
- } else if (hours < 19) {
- return 'sore';
- } else {
- return 'malam';
- }
- },
- calendar : {
- sameDay : '[Hari ini pukul] LT',
- nextDay : '[Besok pukul] LT',
- nextWeek : 'dddd [pukul] LT',
- lastDay : '[Kemarin pukul] LT',
- lastWeek : 'dddd [lalu pukul] LT',
- sameElse : 'L'
- },
- relativeTime : {
- future : "dalam %s",
- past : "%s yang lalu",
- s : "beberapa detik",
- m : "semenit",
- mm : "%d menit",
- h : "sejam",
- hh : "%d jam",
- d : "sehari",
- dd : "%d hari",
- M : "sebulan",
- MM : "%d bulan",
- y : "setahun",
- yy : "%d tahun"
- },
- week : {
- dow : 1, // Monday is the first day of the week.
- doy : 7 // The week that contains Jan 1st is the first week of the year.
- }
- });
-}));
-// moment.js language configuration
-// language : icelandic (is)
-// author : Hinrik Örn Sigurðsson : https://github.com/hinrik
-
-(function (factory) {
- factory(moment);
-}(function (moment) {
- function plural(n) {
- if (n % 100 === 11) {
- return true;
- } else if (n % 10 === 1) {
- return false;
- }
- return true;
- }
-
- function translate(number, withoutSuffix, key, isFuture) {
- var result = number + " ";
- switch (key) {
- case 's':
- return withoutSuffix || isFuture ? 'nokkrar sekúndur' : 'nokkrum sekúndum';
- case 'm':
- return withoutSuffix ? 'mínúta' : 'mínútu';
- case 'mm':
- if (plural(number)) {
- return result + (withoutSuffix || isFuture ? 'mínútur' : 'mínútum');
- } else if (withoutSuffix) {
- return result + 'mínúta';
- }
- return result + 'mínútu';
- case 'hh':
- if (plural(number)) {
- return result + (withoutSuffix || isFuture ? 'klukkustundir' : 'klukkustundum');
- }
- return result + 'klukkustund';
- case 'd':
- if (withoutSuffix) {
- return 'dagur';
- }
- return isFuture ? 'dag' : 'degi';
- case 'dd':
- if (plural(number)) {
- if (withoutSuffix) {
- return result + 'dagar';
- }
- return result + (isFuture ? 'daga' : 'dögum');
- } else if (withoutSuffix) {
- return result + 'dagur';
- }
- return result + (isFuture ? 'dag' : 'degi');
- case 'M':
- if (withoutSuffix) {
- return 'mánuður';
- }
- return isFuture ? 'mánuð' : 'mánuði';
- case 'MM':
- if (plural(number)) {
- if (withoutSuffix) {
- return result + 'mánuðir';
- }
- return result + (isFuture ? 'mánuði' : 'mánuðum');
- } else if (withoutSuffix) {
- return result + 'mánuður';
- }
- return result + (isFuture ? 'mánuð' : 'mánuði');
- case 'y':
- return withoutSuffix || isFuture ? 'ár' : 'ári';
- case 'yy':
- if (plural(number)) {
- return result + (withoutSuffix || isFuture ? 'ár' : 'árum');
- }
- return result + (withoutSuffix || isFuture ? 'ár' : 'ári');
- }
- }
-
- return moment.lang('is', {
- months : "janúar_febrúar_mars_apríl_maí_júní_júlí_ágúst_september_október_nóvember_desember".split("_"),
- monthsShort : "jan_feb_mar_apr_maí_jún_júl_ágú_sep_okt_nóv_des".split("_"),
- weekdays : "sunnudagur_mánudagur_þriðjudagur_miðvikudagur_fimmtudagur_föstudagur_laugardagur".split("_"),
- weekdaysShort : "sun_mán_þri_mið_fim_fös_lau".split("_"),
- weekdaysMin : "Su_Má_Þr_Mi_Fi_Fö_La".split("_"),
- longDateFormat : {
- LT : "H:mm",
- L : "DD/MM/YYYY",
- LL : "D. MMMM YYYY",
- LLL : "D. MMMM YYYY [kl.] LT",
- LLLL : "dddd, D. MMMM YYYY [kl.] LT"
- },
- calendar : {
- sameDay : '[í dag kl.] LT',
- nextDay : '[á morgun kl.] LT',
- nextWeek : 'dddd [kl.] LT',
- lastDay : '[í gær kl.] LT',
- lastWeek : '[síðasta] dddd [kl.] LT',
- sameElse : 'L'
- },
- relativeTime : {
- future : "eftir %s",
- past : "fyrir %s síðan",
- s : translate,
- m : translate,
- mm : translate,
- h : "klukkustund",
- hh : translate,
- d : translate,
- dd : translate,
- M : translate,
- MM : translate,
- y : translate,
- yy : translate
- },
- ordinal : '%d.',
- week : {
- dow : 1, // Monday is the first day of the week.
- doy : 4 // The week that contains Jan 4th is the first week of the year.
- }
- });
-}));
-// moment.js language configuration
-// language : italian (it)
-// author : Lorenzo : https://github.com/aliem
-// author: Mattia Larentis: https://github.com/nostalgiaz
-
-(function (factory) {
- factory(moment);
-}(function (moment) {
- return moment.lang('it', {
- months : "Gennaio_Febbraio_Marzo_Aprile_Maggio_Giugno_Luglio_Agosto_Settembre_Ottobre_Novembre_Dicembre".split("_"),
- monthsShort : "Gen_Feb_Mar_Apr_Mag_Giu_Lug_Ago_Set_Ott_Nov_Dic".split("_"),
- weekdays : "Domenica_Lunedì_Martedì_Mercoledì_Giovedì_Venerdì_Sabato".split("_"),
- weekdaysShort : "Dom_Lun_Mar_Mer_Gio_Ven_Sab".split("_"),
- weekdaysMin : "D_L_Ma_Me_G_V_S".split("_"),
- longDateFormat : {
- LT : "HH:mm",
- L : "DD/MM/YYYY",
- LL : "D MMMM YYYY",
- LLL : "D MMMM YYYY LT",
- LLLL : "dddd, D MMMM YYYY LT"
- },
- calendar : {
- sameDay: '[Oggi alle] LT',
- nextDay: '[Domani alle] LT',
- nextWeek: 'dddd [alle] LT',
- lastDay: '[Ieri alle] LT',
- lastWeek: '[lo scorso] dddd [alle] LT',
- sameElse: 'L'
- },
- relativeTime : {
- future : function (s) {
- return ((/^[0-9].+$/).test(s) ? "tra" : "in") + " " + s;
- },
- past : "%s fa",
- s : "secondi",
- m : "un minuto",
- mm : "%d minuti",
- h : "un'ora",
- hh : "%d ore",
- d : "un giorno",
- dd : "%d giorni",
- M : "un mese",
- MM : "%d mesi",
- y : "un anno",
- yy : "%d anni"
- },
- ordinal: '%dº',
- week : {
- dow : 1, // Monday is the first day of the week.
- doy : 4 // The week that contains Jan 4th is the first week of the year.
- }
- });
-}));
-// moment.js language configuration
-// language : japanese (ja)
-// author : LI Long : https://github.com/baryon
-
-(function (factory) {
- factory(moment);
-}(function (moment) {
- return moment.lang('ja', {
- months : "1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月".split("_"),
- monthsShort : "1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月".split("_"),
- weekdays : "日曜日_月曜日_ç«æ›œæ—¥_水曜日_木曜日_金曜日_土曜日".split("_"),
- weekdaysShort : "æ—¥_月_ç«_æ°´_木_金_土".split("_"),
- weekdaysMin : "æ—¥_月_ç«_æ°´_木_金_土".split("_"),
- longDateFormat : {
- LT : "Ah時m分",
- L : "YYYY/MM/DD",
- LL : "YYYY年M月D日",
- LLL : "YYYY年M月D日LT",
- LLLL : "YYYY年M月D日LT dddd"
- },
- meridiem : function (hour, minute, isLower) {
- if (hour < 12) {
- return "åˆå‰";
- } else {
- return "åˆå¾Œ";
- }
- },
- calendar : {
- sameDay : '[今日] LT',
- nextDay : '[明日] LT',
- nextWeek : '[æ¥é€±]dddd LT',
- lastDay : '[昨日] LT',
- lastWeek : '[å‰é€±]dddd LT',
- sameElse : 'L'
- },
- relativeTime : {
- future : "%s後",
- past : "%så‰",
- s : "数秒",
- m : "1分",
- mm : "%d分",
- h : "1時間",
- hh : "%d時間",
- d : "1æ—¥",
- dd : "%dæ—¥",
- M : "1ヶ月",
- MM : "%dヶ月",
- y : "1å¹´",
- yy : "%då¹´"
- }
- });
-}));
-// moment.js language configuration
-// language : Georgian (ka)
-// author : Irakli Janiashvili : https://github.com/irakli-janiashvili
-
-(function (factory) {
- factory(moment);
-}(function (moment) {
-
- function monthsCaseReplace(m, format) {
- var months = {
- 'nominative': 'იáƒáƒœáƒ•áƒáƒ áƒ˜_თებერვáƒáƒšáƒ˜_მáƒáƒ áƒ¢áƒ˜_áƒáƒžáƒ áƒ˜áƒšáƒ˜_მáƒáƒ˜áƒ¡áƒ˜_ივნისი_ივლისი_áƒáƒ’ვისტáƒ_სექტემბერი_áƒáƒ¥áƒ¢áƒáƒ›áƒ‘ერი_ნáƒáƒ”მბერი_დეკემბერი'.split('_'),
- 'accusative': 'იáƒáƒœáƒ•áƒáƒ áƒ¡_თებერვáƒáƒšáƒ¡_მáƒáƒ áƒ¢áƒ¡_áƒáƒžáƒ áƒ˜áƒšáƒ˜áƒ¡_მáƒáƒ˜áƒ¡áƒ¡_ივნისს_ივლისს_áƒáƒ’ვისტს_სექტემბერს_áƒáƒ¥áƒ¢áƒáƒ›áƒ‘ერს_ნáƒáƒ”მბერს_დეკემბერს'.split('_')
- },
-
- nounCase = (/D[oD] *MMMM?/).test(format) ?
- 'accusative' :
- 'nominative';
-
- return months[nounCase][m.month()];
- }
-
- function weekdaysCaseReplace(m, format) {
- var weekdays = {
- 'nominative': 'კვირáƒ_áƒáƒ áƒ¨áƒáƒ‘áƒáƒ—ი_სáƒáƒ›áƒ¨áƒáƒ‘áƒáƒ—ი_áƒáƒ—ხშáƒáƒ‘áƒáƒ—ი_ხუთშáƒáƒ‘áƒáƒ—ი_პáƒáƒ áƒáƒ¡áƒ™áƒ”ვი_შáƒáƒ‘áƒáƒ—ი'.split('_'),
- 'accusative': 'კვირáƒáƒ¡_áƒáƒ áƒ¨áƒáƒ‘áƒáƒ—ს_სáƒáƒ›áƒ¨áƒáƒ‘áƒáƒ—ს_áƒáƒ—ხშáƒáƒ‘áƒáƒ—ს_ხუთშáƒáƒ‘áƒáƒ—ს_პáƒáƒ áƒáƒ¡áƒ™áƒ”ვს_შáƒáƒ‘áƒáƒ—ს'.split('_')
- },
-
- nounCase = (/(წინáƒ|შემდეგ)/).test(format) ?
- 'accusative' :
- 'nominative';
-
- return weekdays[nounCase][m.day()];
- }
-
- return moment.lang('ka', {
- months : monthsCaseReplace,
- monthsShort : "იáƒáƒœ_თებ_მáƒáƒ _áƒáƒžáƒ _მáƒáƒ˜_ივნ_ივლ_áƒáƒ’ვ_სექ_áƒáƒ¥áƒ¢_ნáƒáƒ”_დეკ".split("_"),
- weekdays : weekdaysCaseReplace,
- weekdaysShort : "კვი_áƒáƒ áƒ¨_სáƒáƒ›_áƒáƒ—ხ_ხუთ_პáƒáƒ _შáƒáƒ‘".split("_"),
- weekdaysMin : "კვ_áƒáƒ _სáƒ_áƒáƒ—_ხუ_პáƒ_შáƒ".split("_"),
- longDateFormat : {
- LT : "h:mm A",
- L : "DD/MM/YYYY",
- LL : "D MMMM YYYY",
- LLL : "D MMMM YYYY LT",
- LLLL : "dddd, D MMMM YYYY LT"
- },
- calendar : {
- sameDay : '[დღეს] LT[-ზე]',
- nextDay : '[ხვáƒáƒš] LT[-ზე]',
- lastDay : '[გუშინ] LT[-ზე]',
- nextWeek : '[შემდეგ] dddd LT[-ზე]',
- lastWeek : '[წინáƒ] dddd LT-ზე',
- sameElse : 'L'
- },
- relativeTime : {
- future : function (s) {
- return (/(წáƒáƒ›áƒ˜|წუთი|სáƒáƒáƒ—ი|წელი)/).test(s) ?
- s.replace(/ი$/, "ში") :
- s + "ში";
- },
- past : function (s) {
- if ((/(წáƒáƒ›áƒ˜|წუთი|სáƒáƒáƒ—ი|დღე|თვე)/).test(s)) {
- return s.replace(/(ი|ე)$/, "ის წინ");
- }
- if ((/წელი/).test(s)) {
- return s.replace(/წელი$/, "წლის წინ");
- }
- },
- s : "რáƒáƒ›áƒ“ენიმე წáƒáƒ›áƒ˜",
- m : "წუთი",
- mm : "%d წუთი",
- h : "სáƒáƒáƒ—ი",
- hh : "%d სáƒáƒáƒ—ი",
- d : "დღე",
- dd : "%d დღე",
- M : "თვე",
- MM : "%d თვე",
- y : "წელი",
- yy : "%d წელი"
- },
- ordinal : function (number) {
- if (number === 0) {
- return number;
- }
-
- if (number === 1) {
- return number + "-ლი";
- }
-
- if ((number < 20) || (number <= 100 && (number % 20 === 0)) || (number % 100 === 0)) {
- return "მე-" + number;
- }
-
- return number + "-ე";
- },
- week : {
- dow : 1,
- doy : 7
- }
- });
-}));
-// moment.js language configuration
-// language : korean (ko)
-// author : Kyungwook, Park : https://github.com/kyungw00k
-
-(function (factory) {
- factory(moment);
-}(function (moment) {
- return moment.lang('ko', {
- months : "1ì›”_2ì›”_3ì›”_4ì›”_5ì›”_6ì›”_7ì›”_8ì›”_9ì›”_10ì›”_11ì›”_12ì›”".split("_"),
- monthsShort : "1ì›”_2ì›”_3ì›”_4ì›”_5ì›”_6ì›”_7ì›”_8ì›”_9ì›”_10ì›”_11ì›”_12ì›”".split("_"),
- weekdays : "ì¼ìš”ì¼_월요ì¼_화요ì¼_수요ì¼_목요ì¼_금요ì¼_토요ì¼".split("_"),
- weekdaysShort : "ì¼_ì›”_í™”_수_목_금_토".split("_"),
- weekdaysMin : "ì¼_ì›”_í™”_수_목_금_토".split("_"),
- longDateFormat : {
- LT : "A h시 mm분",
- L : "YYYY.MM.DD",
- LL : "YYYYë…„ MMMM Dì¼",
- LLL : "YYYYë…„ MMMM Dì¼ LT",
- LLLL : "YYYYë…„ MMMM Dì¼ dddd LT"
- },
- meridiem : function (hour, minute, isUpper) {
- return hour < 12 ? '오전' : '오후';
- },
- calendar : {
- sameDay : '오늘 LT',
- nextDay : 'ë‚´ì¼ LT',
- nextWeek : 'dddd LT',
- lastDay : '어제 LT',
- lastWeek : '지난주 dddd LT',
- sameElse : 'L'
- },
- relativeTime : {
- future : "%s 후",
- past : "%s ì „",
- s : "몇초",
- ss : "%dì´ˆ",
- m : "ì¼ë¶„",
- mm : "%d분",
- h : "한시간",
- hh : "%d시간",
- d : "하루",
- dd : "%dì¼",
- M : "한달",
- MM : "%d달",
- y : "ì¼ë…„",
- yy : "%dë…„"
- },
- ordinal : '%dì¼'
- });
-}));
-// moment.js language configuration
-// language : Lithuanian (lt)
-// author : Mindaugas Mozūras : https://github.com/mmozuras
-
-(function (factory) {
- factory(moment);
-}(function (moment) {
- var units = {
- "m" : "minutÄ—_minutÄ—s_minutÄ™",
- "mm": "minutÄ—s_minuÄių_minutes",
- "h" : "valanda_valandos_valandÄ…",
- "hh": "valandos_valandų_valandas",
- "d" : "diena_dienos_dienÄ…",
- "dd": "dienos_dienų_dienas",
- "M" : "mėnuo_mėnesio_mėnesį",
- "MM": "mėnesiai_mėnesių_mėnesius",
- "y" : "metai_metų_metus",
- "yy": "metai_metų_metus"
- },
- weekDays = "pirmadienis_antradienis_treÄiadienis_ketvirtadienis_penktadienis_Å¡eÅ¡tadienis_sekmadienis".split("_");
-
- function translateSeconds(number, withoutSuffix, key, isFuture) {
- if (withoutSuffix) {
- return "kelios sekundÄ—s";
- } else {
- return isFuture ? "kelių sekundžių" : "kelias sekundes";
- }
- }
-
- function translateSingular(number, withoutSuffix, key, isFuture) {
- return withoutSuffix ? forms(key)[0] : (isFuture ? forms(key)[1] : forms(key)[2]);
- }
-
- function special(number) {
- return number % 10 === 0 || (number > 10 && number < 20);
- }
-
- function forms(key) {
- return units[key].split("_");
- }
-
- function translate(number, withoutSuffix, key, isFuture) {
- var result = number + " ";
- if (number === 1) {
- return result + translateSingular(number, withoutSuffix, key[0], isFuture);
- } else if (withoutSuffix) {
- return result + (special(number) ? forms(key)[1] : forms(key)[0]);
- } else {
- if (isFuture) {
- return result + forms(key)[1];
- } else {
- return result + (special(number) ? forms(key)[1] : forms(key)[2]);
- }
- }
- }
-
- function relativeWeekDay(moment, format) {
- var nominative = format.indexOf('dddd LT') === -1,
- weekDay = weekDays[moment.weekday()];
-
- return nominative ? weekDay : weekDay.substring(0, weekDay.length - 2) + "į";
- }
-
- return moment.lang("lt", {
- months : "sausio_vasario_kovo_balandžio_gegužės_biržėlio_liepos_rugpjÅ«Äio_rugsÄ—jo_spalio_lapkriÄio_gruodžio".split("_"),
- monthsShort : "sau_vas_kov_bal_geg_bir_lie_rgp_rgs_spa_lap_grd".split("_"),
- weekdays : relativeWeekDay,
- weekdaysShort : "Sek_Pir_Ant_Tre_Ket_Pen_Šeš".split("_"),
- weekdaysMin : "S_P_A_T_K_Pn_Å ".split("_"),
- longDateFormat : {
- LT : "HH:mm",
- L : "YYYY-MM-DD",
- LL : "YYYY [m.] MMMM D [d.]",
- LLL : "YYYY [m.] MMMM D [d.], LT [val.]",
- LLLL : "YYYY [m.] MMMM D [d.], dddd, LT [val.]",
- l : "YYYY-MM-DD",
- ll : "YYYY [m.] MMMM D [d.]",
- lll : "YYYY [m.] MMMM D [d.], LT [val.]",
- llll : "YYYY [m.] MMMM D [d.], ddd, LT [val.]"
- },
- calendar : {
- sameDay : "[Å iandien] LT",
- nextDay : "[Rytoj] LT",
- nextWeek : "dddd LT",
- lastDay : "[Vakar] LT",
- lastWeek : "[Praėjusį] dddd LT",
- sameElse : "L"
- },
- relativeTime : {
- future : "po %s",
- past : "prieš %s",
- s : translateSeconds,
- m : translateSingular,
- mm : translate,
- h : translateSingular,
- hh : translate,
- d : translateSingular,
- dd : translate,
- M : translateSingular,
- MM : translate,
- y : translateSingular,
- yy : translate
- },
- ordinal : function (number) {
- return number + '-oji';
- },
- week : {
- dow : 1, // Monday is the first day of the week.
- doy : 4 // The week that contains Jan 4th is the first week of the year.
- }
- });
-}));
-// moment.js language configuration
-// language : latvian (lv)
-// author : Kristaps Karlsons : https://github.com/skakri
-
-(function (factory) {
- factory(moment);
-}(function (moment) {
- var units = {
- 'mm': 'minūti_minūtes_minūte_minūtes',
- 'hh': 'stundu_stundas_stunda_stundas',
- 'dd': 'dienu_dienas_diena_dienas',
- 'MM': 'mēnesi_mēnešus_mēnesis_mēneši',
- 'yy': 'gadu_gadus_gads_gadi'
- };
-
- function format(word, number, withoutSuffix) {
- var forms = word.split('_');
- if (withoutSuffix) {
- return number % 10 === 1 && number !== 11 ? forms[2] : forms[3];
- } else {
- return number % 10 === 1 && number !== 11 ? forms[0] : forms[1];
- }
- }
-
- function relativeTimeWithPlural(number, withoutSuffix, key) {
- return number + ' ' + format(units[key], number, withoutSuffix);
- }
-
- return moment.lang('lv', {
- months : "janvÄris_februÄris_marts_aprÄ«lis_maijs_jÅ«nijs_jÅ«lijs_augusts_septembris_oktobris_novembris_decembris".split("_"),
- monthsShort : "jan_feb_mar_apr_mai_jūn_jūl_aug_sep_okt_nov_dec".split("_"),
- weekdays : "svētdiena_pirmdiena_otrdiena_trešdiena_ceturtdiena_piektdiena_sestdiena".split("_"),
- weekdaysShort : "Sv_P_O_T_C_Pk_S".split("_"),
- weekdaysMin : "Sv_P_O_T_C_Pk_S".split("_"),
- longDateFormat : {
- LT : "HH:mm",
- L : "DD.MM.YYYY",
- LL : "YYYY. [gada] D. MMMM",
- LLL : "YYYY. [gada] D. MMMM, LT",
- LLLL : "YYYY. [gada] D. MMMM, dddd, LT"
- },
- calendar : {
- sameDay : '[Å odien pulksten] LT',
- nextDay : '[RÄ«t pulksten] LT',
- nextWeek : 'dddd [pulksten] LT',
- lastDay : '[Vakar pulksten] LT',
- lastWeek : '[PagÄjuÅ¡Ä] dddd [pulksten] LT',
- sameElse : 'L'
- },
- relativeTime : {
- future : "%s vÄ“lÄk",
- past : "%s agrÄk",
- s : "dažas sekundes",
- m : "minūti",
- mm : relativeTimeWithPlural,
- h : "stundu",
- hh : relativeTimeWithPlural,
- d : "dienu",
- dd : relativeTimeWithPlural,
- M : "mēnesi",
- MM : relativeTimeWithPlural,
- y : "gadu",
- yy : relativeTimeWithPlural
- },
- ordinal : '%d.',
- week : {
- dow : 1, // Monday is the first day of the week.
- doy : 4 // The week that contains Jan 4th is the first week of the year.
- }
- });
-}));
-// moment.js language configuration
-// language : malayalam (ml)
-// author : Floyd Pink : https://github.com/floydpink
-
-(function (factory) {
- factory(moment);
-}(function (moment) {
- return moment.lang('ml', {
- months : 'ജനàµà´µà´°à´¿_ഫെബàµà´°àµà´µà´°à´¿_മാർചàµà´šàµ_à´à´ªàµà´°à´¿àµ½_മേയàµ_ജൂൺ_ജൂലൈ_à´“à´—à´¸àµà´±àµà´±àµ_സെപàµà´±àµà´±à´‚ബർ_à´’à´•àµà´Ÿàµ‹à´¬àµ¼_നവംബർ_ഡിസംബർ'.split("_"),
- monthsShort : 'ജനàµ._ഫെബàµà´°àµ._മാർ._à´à´ªàµà´°à´¿._മേയàµ_ജൂൺ_ജൂലൈ._à´“à´—._സെപàµà´±àµà´±._à´’à´•àµà´Ÿàµ‹._നവം._ഡിസം.'.split("_"),
- weekdays : 'ഞായറാഴàµà´š_തിങàµà´•à´³à´¾à´´àµà´š_ചൊവàµà´µà´¾à´´àµà´š_à´¬àµà´§à´¨à´¾à´´àµà´š_à´µàµà´¯à´¾à´´à´¾à´´àµà´š_വെളàµà´³à´¿à´¯à´¾à´´àµà´š_ശനിയാഴàµà´š'.split("_"),
- weekdaysShort : 'ഞായർ_തിങàµà´•àµ¾_ചൊവàµà´µ_à´¬àµà´§àµ»_à´µàµà´¯à´¾à´´à´‚_വെളàµà´³à´¿_ശനി'.split("_"),
- weekdaysMin : 'à´žà´¾_തി_ചൊ_à´¬àµ_à´µàµà´¯à´¾_വെ_à´¶'.split("_"),
- longDateFormat : {
- LT : "A h:mm -à´¨àµ",
- L : "DD/MM/YYYY",
- LL : "D MMMM YYYY",
- LLL : "D MMMM YYYY, LT",
- LLLL : "dddd, D MMMM YYYY, LT"
- },
- calendar : {
- sameDay : '[ഇനàµà´¨àµ] LT',
- nextDay : '[നാളെ] LT',
- nextWeek : 'dddd, LT',
- lastDay : '[ഇനàµà´¨à´²àµ†] LT',
- lastWeek : '[à´•à´´à´¿à´žàµà´ž] dddd, LT',
- sameElse : 'L'
- },
- relativeTime : {
- future : "%s à´•à´´à´¿à´žàµà´žàµ",
- past : "%s à´®àµàµ»à´ªàµ",
- s : "അൽപ നിമിഷങàµà´™àµ¾",
- m : "ഒരൠമിനിറàµà´±àµ",
- mm : "%d മിനിറàµà´±àµ",
- h : "ഒരൠമണികàµà´•àµ‚ർ",
- hh : "%d മണികàµà´•àµ‚ർ",
- d : "ഒരൠദിവസം",
- dd : "%d ദിവസം",
- M : "ഒരൠമാസം",
- MM : "%d മാസം",
- y : "ഒരൠവർഷം",
- yy : "%d വർഷം"
- },
- meridiem : function (hour, minute, isLower) {
- if (hour < 4) {
- return "രാതàµà´°à´¿";
- } else if (hour < 12) {
- return "രാവിലെ";
- } else if (hour < 17) {
- return "ഉചàµà´š à´•à´´à´¿à´žàµà´žàµ";
- } else if (hour < 20) {
- return "വൈകàµà´¨àµà´¨àµ‡à´°à´‚";
- } else {
- return "രാതàµà´°à´¿";
- }
- }
- });
-}));
-// moment.js language configuration
-// language : Marathi (mr)
-// author : Harshad Kale : https://github.com/kalehv
-
-(function (factory) {
- factory(moment);
-}(function (moment) {
- var symbolMap = {
- '1': '१',
- '2': '२',
- '3': '३',
- '4': '४',
- '5': '५',
- '6': '६',
- '7': '७',
- '8': '८',
- '9': '९',
- '0': '०'
- },
- numberMap = {
- '१': '1',
- '२': '2',
- '३': '3',
- '४': '4',
- '५': '5',
- '६': '6',
- '७': '7',
- '८': '8',
- '९': '9',
- '०': '0'
- };
-
- return moment.lang('mr', {
- months : 'जानेवारी_फेबà¥à¤°à¥à¤µà¤¾à¤°à¥€_मारà¥à¤š_à¤à¤ªà¥à¤°à¤¿à¤²_मे_जून_जà¥à¤²à¥ˆ_ऑगसà¥à¤Ÿ_सपà¥à¤Ÿà¥‡à¤‚बर_ऑकà¥à¤Ÿà¥‹à¤¬à¤°_नोवà¥à¤¹à¥‡à¤‚बर_डिसेंबर'.split("_"),
- monthsShort: 'जाने._फेबà¥à¤°à¥._मारà¥à¤š._à¤à¤ªà¥à¤°à¤¿._मे._जून._जà¥à¤²à¥ˆ._ऑग._सपà¥à¤Ÿà¥‡à¤‚._ऑकà¥à¤Ÿà¥‹._नोवà¥à¤¹à¥‡à¤‚._डिसें.'.split("_"),
- weekdays : 'रविवार_सोमवार_मंगळवार_बà¥à¤§à¤µà¤¾à¤°_गà¥à¤°à¥‚वार_शà¥à¤•à¥à¤°à¤µà¤¾à¤°_शनिवार'.split("_"),
- weekdaysShort : 'रवि_सोम_मंगळ_बà¥à¤§_गà¥à¤°à¥‚_शà¥à¤•à¥à¤°_शनि'.split("_"),
- weekdaysMin : 'र_सो_मं_बà¥_गà¥_शà¥_श'.split("_"),
- longDateFormat : {
- LT : "A h:mm वाजता",
- L : "DD/MM/YYYY",
- LL : "D MMMM YYYY",
- LLL : "D MMMM YYYY, LT",
- LLLL : "dddd, D MMMM YYYY, LT"
- },
- calendar : {
- sameDay : '[आज] LT',
- nextDay : '[उदà¥à¤¯à¤¾] LT',
- nextWeek : 'dddd, LT',
- lastDay : '[काल] LT',
- lastWeek: '[मागील] dddd, LT',
- sameElse : 'L'
- },
- relativeTime : {
- future : "%s नंतर",
- past : "%s पूरà¥à¤µà¥€",
- s : "सेकंद",
- m: "à¤à¤• मिनिट",
- mm: "%d मिनिटे",
- h : "à¤à¤• तास",
- hh : "%d तास",
- d : "à¤à¤• दिवस",
- dd : "%d दिवस",
- M : "à¤à¤• महिना",
- MM : "%d महिने",
- y : "à¤à¤• वरà¥à¤·",
- yy : "%d वरà¥à¤·à¥‡"
- },
- preparse: function (string) {
- return string.replace(/[१२३४५६७८९०]/g, function (match) {
- return numberMap[match];
- });
- },
- postformat: function (string) {
- return string.replace(/\d/g, function (match) {
- return symbolMap[match];
- });
- },
- meridiem: function (hour, minute, isLower)
- {
- if (hour < 4) {
- return "रातà¥à¤°à¥€";
- } else if (hour < 10) {
- return "सकाळी";
- } else if (hour < 17) {
- return "दà¥à¤ªà¤¾à¤°à¥€";
- } else if (hour < 20) {
- return "सायंकाळी";
- } else {
- return "रातà¥à¤°à¥€";
- }
- },
- week : {
- dow : 0, // Sunday is the first day of the week.
- doy : 6 // The week that contains Jan 1st is the first week of the year.
- }
- });
-}));
-// moment.js language configuration
-// language : Bahasa Malaysia (ms-MY)
-// author : Weldan Jamili : https://github.com/weldan
-
-(function (factory) {
- factory(moment);
-}(function (moment) {
- return moment.lang('ms-my', {
- months : "Januari_Februari_Mac_April_Mei_Jun_Julai_Ogos_September_Oktober_November_Disember".split("_"),
- monthsShort : "Jan_Feb_Mac_Apr_Mei_Jun_Jul_Ogs_Sep_Okt_Nov_Dis".split("_"),
- weekdays : "Ahad_Isnin_Selasa_Rabu_Khamis_Jumaat_Sabtu".split("_"),
- weekdaysShort : "Ahd_Isn_Sel_Rab_Kha_Jum_Sab".split("_"),
- weekdaysMin : "Ah_Is_Sl_Rb_Km_Jm_Sb".split("_"),
- longDateFormat : {
- LT : "HH.mm",
- L : "DD/MM/YYYY",
- LL : "D MMMM YYYY",
- LLL : "D MMMM YYYY [pukul] LT",
- LLLL : "dddd, D MMMM YYYY [pukul] LT"
- },
- meridiem : function (hours, minutes, isLower) {
- if (hours < 11) {
- return 'pagi';
- } else if (hours < 15) {
- return 'tengahari';
- } else if (hours < 19) {
- return 'petang';
- } else {
- return 'malam';
- }
- },
- calendar : {
- sameDay : '[Hari ini pukul] LT',
- nextDay : '[Esok pukul] LT',
- nextWeek : 'dddd [pukul] LT',
- lastDay : '[Kelmarin pukul] LT',
- lastWeek : 'dddd [lepas pukul] LT',
- sameElse : 'L'
- },
- relativeTime : {
- future : "dalam %s",
- past : "%s yang lepas",
- s : "beberapa saat",
- m : "seminit",
- mm : "%d minit",
- h : "sejam",
- hh : "%d jam",
- d : "sehari",
- dd : "%d hari",
- M : "sebulan",
- MM : "%d bulan",
- y : "setahun",
- yy : "%d tahun"
- },
- week : {
- dow : 1, // Monday is the first day of the week.
- doy : 7 // The week that contains Jan 1st is the first week of the year.
- }
- });
-}));
-// moment.js language configuration
-// language : norwegian bokmål (nb)
-// authors : Espen Hovlandsdal : https://github.com/rexxars
-// Sigurd Gartmann : https://github.com/sigurdga
-
-(function (factory) {
- factory(moment);
-}(function (moment) {
- return moment.lang('nb', {
- months : "januar_februar_mars_april_mai_juni_juli_august_september_oktober_november_desember".split("_"),
- monthsShort : "jan._feb._mars_april_mai_juni_juli_aug._sep._okt._nov._des.".split("_"),
- weekdays : "søndag_mandag_tirsdag_onsdag_torsdag_fredag_lørdag".split("_"),
- weekdaysShort : "sø._ma._ti._on._to._fr._lø.".split("_"),
- weekdaysMin : "sø_ma_ti_on_to_fr_lø".split("_"),
- longDateFormat : {
- LT : "H.mm",
- L : "DD.MM.YYYY",
- LL : "D. MMMM YYYY",
- LLL : "D. MMMM YYYY [kl.] LT",
- LLLL : "dddd D. MMMM YYYY [kl.] LT"
- },
- calendar : {
- sameDay: '[i dag kl.] LT',
- nextDay: '[i morgen kl.] LT',
- nextWeek: 'dddd [kl.] LT',
- lastDay: '[i går kl.] LT',
- lastWeek: '[forrige] dddd [kl.] LT',
- sameElse: 'L'
- },
- relativeTime : {
- future : "om %s",
- past : "for %s siden",
- s : "noen sekunder",
- m : "ett minutt",
- mm : "%d minutter",
- h : "en time",
- hh : "%d timer",
- d : "en dag",
- dd : "%d dager",
- M : "en måned",
- MM : "%d måneder",
- y : "ett år",
- yy : "%d år"
- },
- ordinal : '%d.',
- week : {
- dow : 1, // Monday is the first day of the week.
- doy : 4 // The week that contains Jan 4th is the first week of the year.
- }
- });
-}));
-// moment.js language configuration
-// language : nepali/nepalese
-// author : suvash : https://github.com/suvash
-
-(function (factory) {
- factory(moment);
-}(function (moment) {
- var symbolMap = {
- '1': '१',
- '2': '२',
- '3': '३',
- '4': '४',
- '5': '५',
- '6': '६',
- '7': '७',
- '8': '८',
- '9': '९',
- '0': '०'
- },
- numberMap = {
- '१': '1',
- '२': '2',
- '३': '3',
- '४': '4',
- '५': '5',
- '६': '6',
- '७': '7',
- '८': '8',
- '९': '9',
- '०': '0'
- };
-
- return moment.lang('ne', {
- months : 'जनवरी_फेबà¥à¤°à¥à¤µà¤°à¥€_मारà¥à¤š_अपà¥à¤°à¤¿à¤²_मई_जà¥à¤¨_जà¥à¤²à¤¾à¤ˆ_अगषà¥à¤Ÿ_सेपà¥à¤Ÿà¥‡à¤®à¥à¤¬à¤°_अकà¥à¤Ÿà¥‹à¤¬à¤°_नोभेमà¥à¤¬à¤°_डिसेमà¥à¤¬à¤°'.split("_"),
- monthsShort : 'जन._फेबà¥à¤°à¥._मारà¥à¤š_अपà¥à¤°à¤¿._मई_जà¥à¤¨_जà¥à¤²à¤¾à¤ˆ._अग._सेपà¥à¤Ÿ._अकà¥à¤Ÿà¥‹._नोभे._डिसे.'.split("_"),
- weekdays : 'आइतबार_सोमबार_मङà¥à¤—लबार_बà¥à¤§à¤¬à¤¾à¤°_बिहिबार_शà¥à¤•à¥à¤°à¤¬à¤¾à¤°_शनिबार'.split("_"),
- weekdaysShort : 'आइत._सोम._मङà¥à¤—ल._बà¥à¤§._बिहि._शà¥à¤•à¥à¤°._शनि.'.split("_"),
- weekdaysMin : 'आइ._सो._मङà¥_बà¥._बि._शà¥._श.'.split("_"),
- longDateFormat : {
- LT : "Aको h:mm बजे",
- L : "DD/MM/YYYY",
- LL : "D MMMM YYYY",
- LLL : "D MMMM YYYY, LT",
- LLLL : "dddd, D MMMM YYYY, LT"
- },
- preparse: function (string) {
- return string.replace(/[१२३४५६७८९०]/g, function (match) {
- return numberMap[match];
- });
- },
- postformat: function (string) {
- return string.replace(/\d/g, function (match) {
- return symbolMap[match];
- });
- },
- meridiem : function (hour, minute, isLower) {
- if (hour < 3) {
- return "राती";
- } else if (hour < 10) {
- return "बिहान";
- } else if (hour < 15) {
- return "दिउà¤à¤¸à¥‹";
- } else if (hour < 18) {
- return "बेलà¥à¤•à¤¾";
- } else if (hour < 20) {
- return "साà¤à¤";
- } else {
- return "राती";
- }
- },
- calendar : {
- sameDay : '[आज] LT',
- nextDay : '[भोली] LT',
- nextWeek : '[आउà¤à¤¦à¥‹] dddd[,] LT',
- lastDay : '[हिजो] LT',
- lastWeek : '[गà¤à¤•à¥‹] dddd[,] LT',
- sameElse : 'L'
- },
- relativeTime : {
- future : "%sमा",
- past : "%s अगाडी",
- s : "केही समय",
- m : "à¤à¤• मिनेट",
- mm : "%d मिनेट",
- h : "à¤à¤• घणà¥à¤Ÿà¤¾",
- hh : "%d घणà¥à¤Ÿà¤¾",
- d : "à¤à¤• दिन",
- dd : "%d दिन",
- M : "à¤à¤• महिना",
- MM : "%d महिना",
- y : "à¤à¤• बरà¥à¤·",
- yy : "%d बरà¥à¤·"
- },
- week : {
- dow : 1, // Monday is the first day of the week.
- doy : 7 // The week that contains Jan 1st is the first week of the year.
- }
- });
-}));
-// moment.js language configuration
-// language : dutch (nl)
-// author : Joris Röling : https://github.com/jjupiter
-
-(function (factory) {
- factory(moment);
-}(function (moment) {
- var monthsShortWithDots = "jan._feb._mrt._apr._mei_jun._jul._aug._sep._okt._nov._dec.".split("_"),
- monthsShortWithoutDots = "jan_feb_mrt_apr_mei_jun_jul_aug_sep_okt_nov_dec".split("_");
-
- return moment.lang('nl', {
- months : "januari_februari_maart_april_mei_juni_juli_augustus_september_oktober_november_december".split("_"),
- monthsShort : function (m, format) {
- if (/-MMM-/.test(format)) {
- return monthsShortWithoutDots[m.month()];
- } else {
- return monthsShortWithDots[m.month()];
- }
- },
- weekdays : "zondag_maandag_dinsdag_woensdag_donderdag_vrijdag_zaterdag".split("_"),
- weekdaysShort : "zo._ma._di._wo._do._vr._za.".split("_"),
- weekdaysMin : "Zo_Ma_Di_Wo_Do_Vr_Za".split("_"),
- longDateFormat : {
- LT : "HH:mm",
- L : "DD-MM-YYYY",
- LL : "D MMMM YYYY",
- LLL : "D MMMM YYYY LT",
- LLLL : "dddd D MMMM YYYY LT"
- },
- calendar : {
- sameDay: '[vandaag om] LT',
- nextDay: '[morgen om] LT',
- nextWeek: 'dddd [om] LT',
- lastDay: '[gisteren om] LT',
- lastWeek: '[afgelopen] dddd [om] LT',
- sameElse: 'L'
- },
- relativeTime : {
- future : "over %s",
- past : "%s geleden",
- s : "een paar seconden",
- m : "één minuut",
- mm : "%d minuten",
- h : "één uur",
- hh : "%d uur",
- d : "één dag",
- dd : "%d dagen",
- M : "één maand",
- MM : "%d maanden",
- y : "één jaar",
- yy : "%d jaar"
- },
- ordinal : function (number) {
- return number + ((number === 1 || number === 8 || number >= 20) ? 'ste' : 'de');
- },
- week : {
- dow : 1, // Monday is the first day of the week.
- doy : 4 // The week that contains Jan 4th is the first week of the year.
- }
- });
-}));
-// moment.js language configuration
-// language : norwegian nynorsk (nn)
-// author : https://github.com/mechuwind
-
-(function (factory) {
- factory(moment);
-}(function (moment) {
- return moment.lang('nn', {
- months : "januar_februar_mars_april_mai_juni_juli_august_september_oktober_november_desember".split("_"),
- monthsShort : "jan_feb_mar_apr_mai_jun_jul_aug_sep_okt_nov_des".split("_"),
- weekdays : "sundag_måndag_tysdag_onsdag_torsdag_fredag_laurdag".split("_"),
- weekdaysShort : "sun_mån_tys_ons_tor_fre_lau".split("_"),
- weekdaysMin : "su_må_ty_on_to_fr_lø".split("_"),
- longDateFormat : {
- LT : "HH:mm",
- L : "DD.MM.YYYY",
- LL : "D MMMM YYYY",
- LLL : "D MMMM YYYY LT",
- LLLL : "dddd D MMMM YYYY LT"
- },
- calendar : {
- sameDay: '[I dag klokka] LT',
- nextDay: '[I morgon klokka] LT',
- nextWeek: 'dddd [klokka] LT',
- lastDay: '[I går klokka] LT',
- lastWeek: '[Føregående] dddd [klokka] LT',
- sameElse: 'L'
- },
- relativeTime : {
- future : "om %s",
- past : "for %s siden",
- s : "noen sekund",
- m : "ett minutt",
- mm : "%d minutt",
- h : "en time",
- hh : "%d timar",
- d : "en dag",
- dd : "%d dagar",
- M : "en månad",
- MM : "%d månader",
- y : "ett år",
- yy : "%d år"
- },
- ordinal : '%d.',
- week : {
- dow : 1, // Monday is the first day of the week.
- doy : 4 // The week that contains Jan 4th is the first week of the year.
- }
- });
-}));
-// moment.js language configuration
-// language : polish (pl)
-// author : Rafal Hirsz : https://github.com/evoL
-
-(function (factory) {
- factory(moment);
-}(function (moment) {
- var monthsNominative = "styczeń_luty_marzec_kwiecień_maj_czerwiec_lipiec_sierpień_wrzesień_październik_listopad_grudzień".split("_"),
- monthsSubjective = "stycznia_lutego_marca_kwietnia_maja_czerwca_lipca_sierpnia_września_października_listopada_grudnia".split("_");
-
- function plural(n) {
- return (n % 10 < 5) && (n % 10 > 1) && (~~(n / 10) !== 1);
- }
-
- function translate(number, withoutSuffix, key) {
- var result = number + " ";
- switch (key) {
- case 'm':
- return withoutSuffix ? 'minuta' : 'minutÄ™';
- case 'mm':
- return result + (plural(number) ? 'minuty' : 'minut');
- case 'h':
- return withoutSuffix ? 'godzina' : 'godzinÄ™';
- case 'hh':
- return result + (plural(number) ? 'godziny' : 'godzin');
- case 'MM':
- return result + (plural(number) ? 'miesiące' : 'miesięcy');
- case 'yy':
- return result + (plural(number) ? 'lata' : 'lat');
- }
- }
-
- return moment.lang('pl', {
- months : function (momentToFormat, format) {
- if (/D MMMM/.test(format)) {
- return monthsSubjective[momentToFormat.month()];
- } else {
- return monthsNominative[momentToFormat.month()];
- }
- },
- monthsShort : "sty_lut_mar_kwi_maj_cze_lip_sie_wrz_paź_lis_gru".split("_"),
- weekdays : "niedziela_poniedziałek_wtorek_środa_czwartek_piątek_sobota".split("_"),
- weekdaysShort : "nie_pon_wt_śr_czw_pt_sb".split("_"),
- weekdaysMin : "N_Pn_Wt_Åšr_Cz_Pt_So".split("_"),
- longDateFormat : {
- LT : "HH:mm",
- L : "DD.MM.YYYY",
- LL : "D MMMM YYYY",
- LLL : "D MMMM YYYY LT",
- LLLL : "dddd, D MMMM YYYY LT"
- },
- calendar : {
- sameDay: '[DziÅ› o] LT',
- nextDay: '[Jutro o] LT',
- nextWeek: '[W] dddd [o] LT',
- lastDay: '[Wczoraj o] LT',
- lastWeek: function () {
- switch (this.day()) {
- case 0:
- return '[W zeszłą niedzielę o] LT';
- case 3:
- return '[W zeszłą środę o] LT';
- case 6:
- return '[W zeszłą sobotę o] LT';
- default:
- return '[W zeszły] dddd [o] LT';
- }
- },
- sameElse: 'L'
- },
- relativeTime : {
- future : "za %s",
- past : "%s temu",
- s : "kilka sekund",
- m : translate,
- mm : translate,
- h : translate,
- hh : translate,
- d : "1 dzień",
- dd : '%d dni',
- M : "miesiÄ…c",
- MM : translate,
- y : "rok",
- yy : translate
- },
- ordinal : '%d.',
- week : {
- dow : 1, // Monday is the first day of the week.
- doy : 4 // The week that contains Jan 4th is the first week of the year.
- }
- });
-}));
-// moment.js language configuration
-// language : brazilian portuguese (pt-br)
-// author : Caio Ribeiro Pereira : https://github.com/caio-ribeiro-pereira
-
-(function (factory) {
- factory(moment);
-}(function (moment) {
- return moment.lang('pt-br', {
- months : "Janeiro_Fevereiro_Março_Abril_Maio_Junho_Julho_Agosto_Setembro_Outubro_Novembro_Dezembro".split("_"),
- monthsShort : "Jan_Fev_Mar_Abr_Mai_Jun_Jul_Ago_Set_Out_Nov_Dez".split("_"),
- weekdays : "Domingo_Segunda-feira_Terça-feira_Quarta-feira_Quinta-feira_Sexta-feira_Sábado".split("_"),
- weekdaysShort : "Dom_Seg_Ter_Qua_Qui_Sex_Sáb".split("_"),
- weekdaysMin : "Dom_2ª_3ª_4ª_5ª_6ª_Sáb".split("_"),
- longDateFormat : {
- LT : "HH:mm",
- L : "DD/MM/YYYY",
- LL : "D [de] MMMM [de] YYYY",
- LLL : "D [de] MMMM [de] YYYY LT",
- LLLL : "dddd, D [de] MMMM [de] YYYY LT"
- },
- calendar : {
- sameDay: '[Hoje às] LT',
- nextDay: '[Amanhã às] LT',
- nextWeek: 'dddd [às] LT',
- lastDay: '[Ontem às] LT',
- lastWeek: function () {
- return (this.day() === 0 || this.day() === 6) ?
- '[Último] dddd [às] LT' : // Saturday + Sunday
- '[Última] dddd [às] LT'; // Monday - Friday
- },
- sameElse: 'L'
- },
- relativeTime : {
- future : "em %s",
- past : "%s atrás",
- s : "segundos",
- m : "um minuto",
- mm : "%d minutos",
- h : "uma hora",
- hh : "%d horas",
- d : "um dia",
- dd : "%d dias",
- M : "um mês",
- MM : "%d meses",
- y : "um ano",
- yy : "%d anos"
- },
- ordinal : '%dº'
- });
-}));
-// moment.js language configuration
-// language : portuguese (pt)
-// author : Jefferson : https://github.com/jalex79
-
-(function (factory) {
- factory(moment);
-}(function (moment) {
- return moment.lang('pt', {
- months : "Janeiro_Fevereiro_Março_Abril_Maio_Junho_Julho_Agosto_Setembro_Outubro_Novembro_Dezembro".split("_"),
- monthsShort : "Jan_Fev_Mar_Abr_Mai_Jun_Jul_Ago_Set_Out_Nov_Dez".split("_"),
- weekdays : "Domingo_Segunda-feira_Terça-feira_Quarta-feira_Quinta-feira_Sexta-feira_Sábado".split("_"),
- weekdaysShort : "Dom_Seg_Ter_Qua_Qui_Sex_Sáb".split("_"),
- weekdaysMin : "Dom_2ª_3ª_4ª_5ª_6ª_Sáb".split("_"),
- longDateFormat : {
- LT : "HH:mm",
- L : "DD/MM/YYYY",
- LL : "D [de] MMMM [de] YYYY",
- LLL : "D [de] MMMM [de] YYYY LT",
- LLLL : "dddd, D [de] MMMM [de] YYYY LT"
- },
- calendar : {
- sameDay: '[Hoje às] LT',
- nextDay: '[Amanhã às] LT',
- nextWeek: 'dddd [às] LT',
- lastDay: '[Ontem às] LT',
- lastWeek: function () {
- return (this.day() === 0 || this.day() === 6) ?
- '[Último] dddd [às] LT' : // Saturday + Sunday
- '[Última] dddd [às] LT'; // Monday - Friday
- },
- sameElse: 'L'
- },
- relativeTime : {
- future : "em %s",
- past : "%s atrás",
- s : "segundos",
- m : "um minuto",
- mm : "%d minutos",
- h : "uma hora",
- hh : "%d horas",
- d : "um dia",
- dd : "%d dias",
- M : "um mês",
- MM : "%d meses",
- y : "um ano",
- yy : "%d anos"
- },
- ordinal : '%dº',
- week : {
- dow : 1, // Monday is the first day of the week.
- doy : 4 // The week that contains Jan 4th is the first week of the year.
- }
- });
-}));
-// moment.js language configuration
-// language : romanian (ro)
-// author : Vlad Gurdiga : https://github.com/gurdiga
-// author : Valentin Agachi : https://github.com/avaly
-
-(function (factory) {
- factory(moment);
-}(function (moment) {
- return moment.lang('ro', {
- months : "Ianuarie_Februarie_Martie_Aprilie_Mai_Iunie_Iulie_August_Septembrie_Octombrie_Noiembrie_Decembrie".split("_"),
- monthsShort : "Ian_Feb_Mar_Apr_Mai_Iun_Iul_Aug_Sep_Oct_Noi_Dec".split("_"),
- weekdays : "Duminică_Luni_Marţi_Miercuri_Joi_Vineri_Sâmbătă".split("_"),
- weekdaysShort : "Dum_Lun_Mar_Mie_Joi_Vin_Sâm".split("_"),
- weekdaysMin : "Du_Lu_Ma_Mi_Jo_Vi_Sâ".split("_"),
- longDateFormat : {
- LT : "H:mm",
- L : "DD/MM/YYYY",
- LL : "D MMMM YYYY",
- LLL : "D MMMM YYYY H:mm",
- LLLL : "dddd, D MMMM YYYY H:mm"
- },
- calendar : {
- sameDay: "[azi la] LT",
- nextDay: '[mâine la] LT',
- nextWeek: 'dddd [la] LT',
- lastDay: '[ieri la] LT',
- lastWeek: '[fosta] dddd [la] LT',
- sameElse: 'L'
- },
- relativeTime : {
- future : "peste %s",
- past : "%s în urmă",
- s : "câteva secunde",
- m : "un minut",
- mm : "%d minute",
- h : "o oră",
- hh : "%d ore",
- d : "o zi",
- dd : "%d zile",
- M : "o lună",
- MM : "%d luni",
- y : "un an",
- yy : "%d ani"
- },
- week : {
- dow : 1, // Monday is the first day of the week.
- doy : 7 // The week that contains Jan 1st is the first week of the year.
- }
- });
-}));
-// moment.js language configuration
-// language : russian (ru)
-// author : Viktorminator : https://github.com/Viktorminator
-// Author : Menelion Elensúle : https://github.com/Oire
-
-(function (factory) {
- factory(moment);
-}(function (moment) {
- function plural(word, num) {
- var forms = word.split('_');
- return num % 10 === 1 && num % 100 !== 11 ? forms[0] : (num % 10 >= 2 && num % 10 <= 4 && (num % 100 < 10 || num % 100 >= 20) ? forms[1] : forms[2]);
- }
-
- function relativeTimeWithPlural(number, withoutSuffix, key) {
- var format = {
- 'mm': 'минута_минуты_минут',
- 'hh': 'чаÑ_чаÑа_чаÑов',
- 'dd': 'день_днÑ_дней',
- 'MM': 'меÑÑц_меÑÑца_меÑÑцев',
- 'yy': 'год_года_лет'
- };
- if (key === 'm') {
- return withoutSuffix ? 'минута' : 'минуту';
- }
- else {
- return number + ' ' + plural(format[key], +number);
- }
- }
-
- function monthsCaseReplace(m, format) {
- var months = {
- 'nominative': 'Ñнварь_февраль_март_апрель_май_июнь_июль_авгуÑÑ‚_ÑентÑбрь_октÑбрь_ноÑбрь_декабрь'.split('_'),
- 'accusative': 'ÑнварÑ_февралÑ_марта_апрелÑ_маÑ_июнÑ_июлÑ_авгуÑта_ÑентÑбрÑ_октÑбрÑ_ноÑбрÑ_декабрÑ'.split('_')
- },
-
- nounCase = (/D[oD]?(\[[^\[\]]*\]|\s+)+MMMM?/).test(format) ?
- 'accusative' :
- 'nominative';
-
- return months[nounCase][m.month()];
- }
-
- function monthsShortCaseReplace(m, format) {
- var monthsShort = {
- 'nominative': 'Ñнв_фев_мар_апр_май_июнь_июль_авг_Ñен_окт_ноÑ_дек'.split('_'),
- 'accusative': 'Ñнв_фев_мар_апр_маÑ_июнÑ_июлÑ_авг_Ñен_окт_ноÑ_дек'.split('_')
- },
-
- nounCase = (/D[oD]?(\[[^\[\]]*\]|\s+)+MMMM?/).test(format) ?
- 'accusative' :
- 'nominative';
-
- return monthsShort[nounCase][m.month()];
- }
-
- function weekdaysCaseReplace(m, format) {
- var weekdays = {
- 'nominative': 'воÑкреÑенье_понедельник_вторник_Ñреда_четверг_пÑтница_Ñуббота'.split('_'),
- 'accusative': 'воÑкреÑенье_понедельник_вторник_Ñреду_четверг_пÑтницу_Ñубботу'.split('_')
- },
-
- nounCase = (/\[ ?[Вв] ?(?:прошлую|Ñледующую)? ?\] ?dddd/).test(format) ?
- 'accusative' :
- 'nominative';
-
- return weekdays[nounCase][m.day()];
- }
-
- return moment.lang('ru', {
- months : monthsCaseReplace,
- monthsShort : monthsShortCaseReplace,
- weekdays : weekdaysCaseReplace,
- weekdaysShort : "вÑ_пн_вт_ÑÑ€_чт_пт_Ñб".split("_"),
- weekdaysMin : "вÑ_пн_вт_ÑÑ€_чт_пт_Ñб".split("_"),
- monthsParse : [/^Ñнв/i, /^фев/i, /^мар/i, /^апр/i, /^ма[й|Ñ]/i, /^июн/i, /^июл/i, /^авг/i, /^Ñен/i, /^окт/i, /^ноÑ/i, /^дек/i],
- longDateFormat : {
- LT : "HH:mm",
- L : "DD.MM.YYYY",
- LL : "D MMMM YYYY г.",
- LLL : "D MMMM YYYY г., LT",
- LLLL : "dddd, D MMMM YYYY г., LT"
- },
- calendar : {
- sameDay: '[Ð¡ÐµÐ³Ð¾Ð´Ð½Ñ Ð²] LT',
- nextDay: '[Завтра в] LT',
- lastDay: '[Вчера в] LT',
- nextWeek: function () {
- return this.day() === 2 ? '[Во] dddd [в] LT' : '[В] dddd [в] LT';
- },
- lastWeek: function () {
- switch (this.day()) {
- case 0:
- return '[В прошлое] dddd [в] LT';
- case 1:
- case 2:
- case 4:
- return '[В прошлый] dddd [в] LT';
- case 3:
- case 5:
- case 6:
- return '[В прошлую] dddd [в] LT';
- }
- },
- sameElse: 'L'
- },
- relativeTime : {
- future : "через %s",
- past : "%s назад",
- s : "неÑколько Ñекунд",
- m : relativeTimeWithPlural,
- mm : relativeTimeWithPlural,
- h : "чаÑ",
- hh : relativeTimeWithPlural,
- d : "день",
- dd : relativeTimeWithPlural,
- M : "меÑÑц",
- MM : relativeTimeWithPlural,
- y : "год",
- yy : relativeTimeWithPlural
- },
-
- // M. E.: those two are virtually unused but a user might want to implement them for his/her website for some reason
-
- meridiem : function (hour, minute, isLower) {
- if (hour < 4) {
- return "ночи";
- } else if (hour < 12) {
- return "утра";
- } else if (hour < 17) {
- return "днÑ";
- } else {
- return "вечера";
- }
- },
-
- ordinal: function (number, period) {
- switch (period) {
- case 'M':
- case 'd':
- case 'DDD':
- return number + '-й';
- case 'D':
- return number + '-го';
- case 'w':
- case 'W':
- return number + '-Ñ';
- default:
- return number;
- }
- },
-
- week : {
- dow : 1, // Monday is the first day of the week.
- doy : 7 // The week that contains Jan 1st is the first week of the year.
- }
- });
-}));
-// moment.js language configuration
-// language : slovak (sk)
-// author : Martin Minka : https://github.com/k2s
-// based on work of petrbela : https://github.com/petrbela
-
-(function (factory) {
- factory(moment);
-}(function (moment) {
- var months = "január_február_marec_apríl_máj_jún_júl_august_september_október_november_december".split("_"),
- monthsShort = "jan_feb_mar_apr_máj_jún_júl_aug_sep_okt_nov_dec".split("_");
-
- function plural(n) {
- return (n > 1) && (n < 5);
- }
-
- function translate(number, withoutSuffix, key, isFuture) {
- var result = number + " ";
- switch (key) {
- case 's': // a few seconds / in a few seconds / a few seconds ago
- return (withoutSuffix || isFuture) ? 'pár sekúnd' : 'pár sekundami';
- case 'm': // a minute / in a minute / a minute ago
- return withoutSuffix ? 'minúta' : (isFuture ? 'minútu' : 'minútou');
- case 'mm': // 9 minutes / in 9 minutes / 9 minutes ago
- if (withoutSuffix || isFuture) {
- return result + (plural(number) ? 'minúty' : 'minút');
- } else {
- return result + 'minútami';
- }
- break;
- case 'h': // an hour / in an hour / an hour ago
- return withoutSuffix ? 'hodina' : (isFuture ? 'hodinu' : 'hodinou');
- case 'hh': // 9 hours / in 9 hours / 9 hours ago
- if (withoutSuffix || isFuture) {
- return result + (plural(number) ? 'hodiny' : 'hodín');
- } else {
- return result + 'hodinami';
- }
- break;
- case 'd': // a day / in a day / a day ago
- return (withoutSuffix || isFuture) ? 'deň' : 'dňom';
- case 'dd': // 9 days / in 9 days / 9 days ago
- if (withoutSuffix || isFuture) {
- return result + (plural(number) ? 'dni' : 'dní');
- } else {
- return result + 'dňami';
- }
- break;
- case 'M': // a month / in a month / a month ago
- return (withoutSuffix || isFuture) ? 'mesiac' : 'mesiacom';
- case 'MM': // 9 months / in 9 months / 9 months ago
- if (withoutSuffix || isFuture) {
- return result + (plural(number) ? 'mesiace' : 'mesiacov');
- } else {
- return result + 'mesiacmi';
- }
- break;
- case 'y': // a year / in a year / a year ago
- return (withoutSuffix || isFuture) ? 'rok' : 'rokom';
- case 'yy': // 9 years / in 9 years / 9 years ago
- if (withoutSuffix || isFuture) {
- return result + (plural(number) ? 'roky' : 'rokov');
- } else {
- return result + 'rokmi';
- }
- break;
- }
- }
-
- return moment.lang('sk', {
- months : months,
- monthsShort : monthsShort,
- monthsParse : (function (months, monthsShort) {
- var i, _monthsParse = [];
- for (i = 0; i < 12; i++) {
- // use custom parser to solve problem with July (Äervenec)
- _monthsParse[i] = new RegExp('^' + months[i] + '$|^' + monthsShort[i] + '$', 'i');
- }
- return _monthsParse;
- }(months, monthsShort)),
- weekdays : "nedeľa_pondelok_utorok_streda_štvrtok_piatok_sobota".split("_"),
- weekdaysShort : "ne_po_ut_st_Å¡t_pi_so".split("_"),
- weekdaysMin : "ne_po_ut_st_Å¡t_pi_so".split("_"),
- longDateFormat : {
- LT: "H:mm",
- L : "DD.MM.YYYY",
- LL : "D. MMMM YYYY",
- LLL : "D. MMMM YYYY LT",
- LLLL : "dddd D. MMMM YYYY LT"
- },
- calendar : {
- sameDay: "[dnes o] LT",
- nextDay: '[zajtra o] LT',
- nextWeek: function () {
- switch (this.day()) {
- case 0:
- return '[v nedeľu o] LT';
- case 1:
- case 2:
- return '[v] dddd [o] LT';
- case 3:
- return '[v stredu o] LT';
- case 4:
- return '[vo Å¡tvrtok o] LT';
- case 5:
- return '[v piatok o] LT';
- case 6:
- return '[v sobotu o] LT';
- }
- },
- lastDay: '[vÄera o] LT',
- lastWeek: function () {
- switch (this.day()) {
- case 0:
- return '[minulú nedeľu o] LT';
- case 1:
- case 2:
- return '[minulý] dddd [o] LT';
- case 3:
- return '[minulú stredu o] LT';
- case 4:
- case 5:
- return '[minulý] dddd [o] LT';
- case 6:
- return '[minulú sobotu o] LT';
- }
- },
- sameElse: "L"
- },
- relativeTime : {
- future : "za %s",
- past : "pred %s",
- s : translate,
- m : translate,
- mm : translate,
- h : translate,
- hh : translate,
- d : translate,
- dd : translate,
- M : translate,
- MM : translate,
- y : translate,
- yy : translate
- },
- ordinal : '%d.',
- week : {
- dow : 1, // Monday is the first day of the week.
- doy : 4 // The week that contains Jan 4th is the first week of the year.
- }
- });
-}));
-// moment.js language configuration
-// language : slovenian (sl)
-// author : Robert Sedovšek : https://github.com/sedovsek
-
-(function (factory) {
- factory(moment);
-}(function (moment) {
- function translate(number, withoutSuffix, key) {
- var result = number + " ";
- switch (key) {
- case 'm':
- return withoutSuffix ? 'ena minuta' : 'eno minuto';
- case 'mm':
- if (number === 1) {
- result += 'minuta';
- } else if (number === 2) {
- result += 'minuti';
- } else if (number === 3 || number === 4) {
- result += 'minute';
- } else {
- result += 'minut';
- }
- return result;
- case 'h':
- return withoutSuffix ? 'ena ura' : 'eno uro';
- case 'hh':
- if (number === 1) {
- result += 'ura';
- } else if (number === 2) {
- result += 'uri';
- } else if (number === 3 || number === 4) {
- result += 'ure';
- } else {
- result += 'ur';
- }
- return result;
- case 'dd':
- if (number === 1) {
- result += 'dan';
- } else {
- result += 'dni';
- }
- return result;
- case 'MM':
- if (number === 1) {
- result += 'mesec';
- } else if (number === 2) {
- result += 'meseca';
- } else if (number === 3 || number === 4) {
- result += 'mesece';
- } else {
- result += 'mesecev';
- }
- return result;
- case 'yy':
- if (number === 1) {
- result += 'leto';
- } else if (number === 2) {
- result += 'leti';
- } else if (number === 3 || number === 4) {
- result += 'leta';
- } else {
- result += 'let';
- }
- return result;
- }
- }
-
- return moment.lang('sl', {
- months : "januar_februar_marec_april_maj_junij_julij_avgust_september_oktober_november_december".split("_"),
- monthsShort : "jan._feb._mar._apr._maj._jun._jul._avg._sep._okt._nov._dec.".split("_"),
- weekdays : "nedelja_ponedeljek_torek_sreda_Äetrtek_petek_sobota".split("_"),
- weekdaysShort : "ned._pon._tor._sre._Äet._pet._sob.".split("_"),
- weekdaysMin : "ne_po_to_sr_Äe_pe_so".split("_"),
- longDateFormat : {
- LT : "H:mm",
- L : "DD. MM. YYYY",
- LL : "D. MMMM YYYY",
- LLL : "D. MMMM YYYY LT",
- LLLL : "dddd, D. MMMM YYYY LT"
- },
- calendar : {
- sameDay : '[danes ob] LT',
- nextDay : '[jutri ob] LT',
-
- nextWeek : function () {
- switch (this.day()) {
- case 0:
- return '[v] [nedeljo] [ob] LT';
- case 3:
- return '[v] [sredo] [ob] LT';
- case 6:
- return '[v] [soboto] [ob] LT';
- case 1:
- case 2:
- case 4:
- case 5:
- return '[v] dddd [ob] LT';
- }
- },
- lastDay : '[vÄeraj ob] LT',
- lastWeek : function () {
- switch (this.day()) {
- case 0:
- case 3:
- case 6:
- return '[prejšnja] dddd [ob] LT';
- case 1:
- case 2:
- case 4:
- case 5:
- return '[prejšnji] dddd [ob] LT';
- }
- },
- sameElse : 'L'
- },
- relativeTime : {
- future : "Äez %s",
- past : "%s nazaj",
- s : "nekaj sekund",
- m : translate,
- mm : translate,
- h : translate,
- hh : translate,
- d : "en dan",
- dd : translate,
- M : "en mesec",
- MM : translate,
- y : "eno leto",
- yy : translate
- },
- ordinal : '%d.',
- week : {
- dow : 1, // Monday is the first day of the week.
- doy : 7 // The week that contains Jan 1st is the first week of the year.
- }
- });
-}));
-// moment.js language configuration
-// language : Albanian (sq)
-// author : Flakërim Ismani : https://github.com/flakerimi
-// author: Menelion Elensúle: https://github.com/Oire (tests)
-
-(function (factory) {
- factory(moment);
-}(function (moment) {
- return moment.lang('sq', {
- months : "Janar_Shkurt_Mars_Prill_Maj_Qershor_Korrik_Gusht_Shtator_Tetor_Nëntor_Dhjetor".split("_"),
- monthsShort : "Jan_Shk_Mar_Pri_Maj_Qer_Kor_Gus_Sht_Tet_Nën_Dhj".split("_"),
- weekdays : "E Diel_E Hënë_E Marte_E Mërkure_E Enjte_E Premte_E Shtunë".split("_"),
- weekdaysShort : "Die_Hën_Mar_Mër_Enj_Pre_Sht".split("_"),
- weekdaysMin : "D_H_Ma_Më_E_P_Sh".split("_"),
- longDateFormat : {
- LT : "HH:mm",
- L : "DD/MM/YYYY",
- LL : "D MMMM YYYY",
- LLL : "D MMMM YYYY LT",
- LLLL : "dddd, D MMMM YYYY LT"
- },
- calendar : {
- sameDay : '[Sot në] LT',
- nextDay : '[Neser në] LT',
- nextWeek : 'dddd [në] LT',
- lastDay : '[Dje në] LT',
- lastWeek : 'dddd [e kaluar në] LT',
- sameElse : 'L'
- },
- relativeTime : {
- future : "në %s",
- past : "%s me parë",
- s : "disa seconda",
- m : "një minut",
- mm : "%d minutea",
- h : "një orë",
- hh : "%d orë",
- d : "një ditë",
- dd : "%d ditë",
- M : "një muaj",
- MM : "%d muaj",
- y : "një vit",
- yy : "%d vite"
- },
- ordinal : '%d.',
- week : {
- dow : 1, // Monday is the first day of the week.
- doy : 4 // The week that contains Jan 4th is the first week of the year.
- }
- });
-}));
-// moment.js language configuration
-// language : swedish (sv)
-// author : Jens Alm : https://github.com/ulmus
-
-(function (factory) {
- factory(moment);
-}(function (moment) {
- return moment.lang('sv', {
- months : "januari_februari_mars_april_maj_juni_juli_augusti_september_oktober_november_december".split("_"),
- monthsShort : "jan_feb_mar_apr_maj_jun_jul_aug_sep_okt_nov_dec".split("_"),
- weekdays : "söndag_måndag_tisdag_onsdag_torsdag_fredag_lördag".split("_"),
- weekdaysShort : "sön_mån_tis_ons_tor_fre_lör".split("_"),
- weekdaysMin : "sö_må_ti_on_to_fr_lö".split("_"),
- longDateFormat : {
- LT : "HH:mm",
- L : "YYYY-MM-DD",
- LL : "D MMMM YYYY",
- LLL : "D MMMM YYYY LT",
- LLLL : "dddd D MMMM YYYY LT"
- },
- calendar : {
- sameDay: '[Idag] LT',
- nextDay: '[Imorgon] LT',
- lastDay: '[Igår] LT',
- nextWeek: 'dddd LT',
- lastWeek: '[Förra] dddd[en] LT',
- sameElse: 'L'
- },
- relativeTime : {
- future : "om %s",
- past : "för %s sedan",
- s : "några sekunder",
- m : "en minut",
- mm : "%d minuter",
- h : "en timme",
- hh : "%d timmar",
- d : "en dag",
- dd : "%d dagar",
- M : "en månad",
- MM : "%d månader",
- y : "ett år",
- yy : "%d år"
- },
- ordinal : function (number) {
- var b = number % 10,
- output = (~~ (number % 100 / 10) === 1) ? 'e' :
- (b === 1) ? 'a' :
- (b === 2) ? 'a' :
- (b === 3) ? 'e' : 'e';
- return number + output;
- },
- week : {
- dow : 1, // Monday is the first day of the week.
- doy : 4 // The week that contains Jan 4th is the first week of the year.
- }
- });
-}));
-// moment.js language configuration
-// language : thai (th)
-// author : Kridsada Thanabulpong : https://github.com/sirn
-
-(function (factory) {
- factory(moment);
-}(function (moment) {
- return moment.lang('th', {
- months : "มà¸à¸£à¸²à¸„ม_à¸à¸¸à¸¡à¸ à¸²à¸žà¸±à¸™à¸˜à¹Œ_มีนาคม_เมษายน_พฤษภาคม_มิถุนายน_à¸à¸£à¸à¸Žà¸²à¸„ม_สิงหาคม_à¸à¸±à¸™à¸¢à¸²à¸¢à¸™_ตุลาคม_พฤศจิà¸à¸²à¸¢à¸™_ธันวาคม".split("_"),
- monthsShort : "มà¸à¸£à¸²_à¸à¸¸à¸¡à¸ à¸²_มีนา_เมษา_พฤษภา_มิถุนา_à¸à¸£à¸à¸Žà¸²_สิงหา_à¸à¸±à¸™à¸¢à¸²_ตุลา_พฤศจิà¸à¸²_ธันวา".split("_"),
- weekdays : "อาทิตย์_จันทร์_อังคาร_พุธ_พฤหัสบดี_ศุà¸à¸£à¹Œ_เสาร์".split("_"),
- weekdaysShort : "อาทิตย์_จันทร์_อังคาร_พุธ_พฤหัส_ศุà¸à¸£à¹Œ_เสาร์".split("_"), // yes, three characters difference
- weekdaysMin : "อา._จ._อ._พ._พฤ._ศ._ส.".split("_"),
- longDateFormat : {
- LT : "H นาฬิà¸à¸² m นาที",
- L : "YYYY/MM/DD",
- LL : "D MMMM YYYY",
- LLL : "D MMMM YYYY เวลา LT",
- LLLL : "วันddddที่ D MMMM YYYY เวลา LT"
- },
- meridiem : function (hour, minute, isLower) {
- if (hour < 12) {
- return "à¸à¹ˆà¸­à¸™à¹€à¸—ี่ยง";
- } else {
- return "หลังเที่ยง";
- }
- },
- calendar : {
- sameDay : '[วันนี้ เวลา] LT',
- nextDay : '[พรุ่งนี้ เวลา] LT',
- nextWeek : 'dddd[หน้า เวลา] LT',
- lastDay : '[เมื่อวานนี้ เวลา] LT',
- lastWeek : '[วัน]dddd[ที่à¹à¸¥à¹‰à¸§ เวลา] LT',
- sameElse : 'L'
- },
- relativeTime : {
- future : "อีภ%s",
- past : "%sที่à¹à¸¥à¹‰à¸§",
- s : "ไม่à¸à¸µà¹ˆà¸§à¸´à¸™à¸²à¸—ี",
- m : "1 นาที",
- mm : "%d นาที",
- h : "1 ชั่วโมง",
- hh : "%d ชั่วโมง",
- d : "1 วัน",
- dd : "%d วัน",
- M : "1 เดือน",
- MM : "%d เดือน",
- y : "1 ปี",
- yy : "%d ปี"
- }
- });
-}));
-// moment.js language configuration
-// language : Tagalog/Filipino (tl-ph)
-// author : Dan Hagman
-
-(function (factory) {
- factory(moment);
-}(function (moment) {
- return moment.lang('tl-ph', {
- months : "Enero_Pebrero_Marso_Abril_Mayo_Hunyo_Hulyo_Agosto_Setyembre_Oktubre_Nobyembre_Disyembre".split("_"),
- monthsShort : "Ene_Peb_Mar_Abr_May_Hun_Hul_Ago_Set_Okt_Nob_Dis".split("_"),
- weekdays : "Linggo_Lunes_Martes_Miyerkules_Huwebes_Biyernes_Sabado".split("_"),
- weekdaysShort : "Lin_Lun_Mar_Miy_Huw_Biy_Sab".split("_"),
- weekdaysMin : "Li_Lu_Ma_Mi_Hu_Bi_Sab".split("_"),
- longDateFormat : {
- LT : "HH:mm",
- L : "MM/D/YYYY",
- LL : "MMMM D, YYYY",
- LLL : "MMMM D, YYYY LT",
- LLLL : "dddd, MMMM DD, YYYY LT"
- },
- calendar : {
- sameDay: "[Ngayon sa] LT",
- nextDay: '[Bukas sa] LT',
- nextWeek: 'dddd [sa] LT',
- lastDay: '[Kahapon sa] LT',
- lastWeek: 'dddd [huling linggo] LT',
- sameElse: 'L'
- },
- relativeTime : {
- future : "sa loob ng %s",
- past : "%s ang nakalipas",
- s : "ilang segundo",
- m : "isang minuto",
- mm : "%d minuto",
- h : "isang oras",
- hh : "%d oras",
- d : "isang araw",
- dd : "%d araw",
- M : "isang buwan",
- MM : "%d buwan",
- y : "isang taon",
- yy : "%d taon"
- },
- ordinal : function (number) {
- return number;
- },
- week : {
- dow : 1, // Monday is the first day of the week.
- doy : 4 // The week that contains Jan 4th is the first week of the year.
- }
- });
-}));
-// moment.js language configuration
-// language : turkish (tr)
-// authors : Erhan Gundogan : https://github.com/erhangundogan,
-// Burak YiÄŸit Kaya: https://github.com/BYK
-
-(function (factory) {
- factory(moment);
-}(function (moment) {
-
- var suffixes = {
- 1: "'inci",
- 5: "'inci",
- 8: "'inci",
- 70: "'inci",
- 80: "'inci",
-
- 2: "'nci",
- 7: "'nci",
- 20: "'nci",
- 50: "'nci",
-
- 3: "'üncü",
- 4: "'üncü",
- 100: "'üncü",
-
- 6: "'ncı",
-
- 9: "'uncu",
- 10: "'uncu",
- 30: "'uncu",
-
- 60: "'ıncı",
- 90: "'ıncı"
- };
-
- return moment.lang('tr', {
- months : "Ocak_Şubat_Mart_Nisan_Mayıs_Haziran_Temmuz_Ağustos_Eylül_Ekim_Kasım_Aralık".split("_"),
- monthsShort : "Oca_Åžub_Mar_Nis_May_Haz_Tem_AÄŸu_Eyl_Eki_Kas_Ara".split("_"),
- weekdays : "Pazar_Pazartesi_Salı_Çarşamba_Perşembe_Cuma_Cumartesi".split("_"),
- weekdaysShort : "Paz_Pts_Sal_Çar_Per_Cum_Cts".split("_"),
- weekdaysMin : "Pz_Pt_Sa_Ça_Pe_Cu_Ct".split("_"),
- longDateFormat : {
- LT : "HH:mm",
- L : "DD.MM.YYYY",
- LL : "D MMMM YYYY",
- LLL : "D MMMM YYYY LT",
- LLLL : "dddd, D MMMM YYYY LT"
- },
- calendar : {
- sameDay : '[bugün saat] LT',
- nextDay : '[yarın saat] LT',
- nextWeek : '[haftaya] dddd [saat] LT',
- lastDay : '[dün] LT',
- lastWeek : '[geçen hafta] dddd [saat] LT',
- sameElse : 'L'
- },
- relativeTime : {
- future : "%s sonra",
- past : "%s önce",
- s : "birkaç saniye",
- m : "bir dakika",
- mm : "%d dakika",
- h : "bir saat",
- hh : "%d saat",
- d : "bir gün",
- dd : "%d gün",
- M : "bir ay",
- MM : "%d ay",
- y : "bir yıl",
- yy : "%d yıl"
- },
- ordinal : function (number) {
- if (number === 0) { // special case for zero
- return number + "'ıncı";
- }
- var a = number % 10,
- b = number % 100 - a,
- c = number >= 100 ? 100 : null;
-
- return number + (suffixes[a] || suffixes[b] || suffixes[c]);
- },
- week : {
- dow : 1, // Monday is the first day of the week.
- doy : 7 // The week that contains Jan 1st is the first week of the year.
- }
- });
-}));
-// moment.js language configuration
-// language : Morocco Central Atlas Tamaziɣt in Latin (tzm-la)
-// author : Abdel Said : https://github.com/abdelsaid
-
-(function (factory) {
- factory(moment);
-}(function (moment) {
- return moment.lang('tzm-la', {
- months : "innayr_brˤayrˤ_marˤsˤ_ibrir_mayyw_ywnyw_ywlywz_ɣwšt_šwtanbir_ktˤwbrˤ_nwwanbir_dwjnbir".split("_"),
- monthsShort : "innayr_brˤayrˤ_marˤsˤ_ibrir_mayyw_ywnyw_ywlywz_ɣwšt_šwtanbir_ktˤwbrˤ_nwwanbir_dwjnbir".split("_"),
- weekdays : "asamas_aynas_asinas_akras_akwas_asimwas_asiá¸yas".split("_"),
- weekdaysShort : "asamas_aynas_asinas_akras_akwas_asimwas_asiá¸yas".split("_"),
- weekdaysMin : "asamas_aynas_asinas_akras_akwas_asimwas_asiá¸yas".split("_"),
- longDateFormat : {
- LT : "HH:mm",
- L : "DD/MM/YYYY",
- LL : "D MMMM YYYY",
- LLL : "D MMMM YYYY LT",
- LLLL : "dddd D MMMM YYYY LT"
- },
- calendar : {
- sameDay: "[asdkh g] LT",
- nextDay: '[aska g] LT',
- nextWeek: 'dddd [g] LT',
- lastDay: '[assant g] LT',
- lastWeek: 'dddd [g] LT',
- sameElse: 'L'
- },
- relativeTime : {
- future : "dadkh s yan %s",
- past : "yan %s",
- s : "imik",
- m : "minuá¸",
- mm : "%d minuá¸",
- h : "saɛa",
- hh : "%d tassaɛin",
- d : "ass",
- dd : "%d ossan",
- M : "ayowr",
- MM : "%d iyyirn",
- y : "asgas",
- yy : "%d isgasn"
- },
- week : {
- dow : 6, // Saturday is the first day of the week.
- doy : 12 // The week that contains Jan 1st is the first week of the year.
- }
- });
-}));
-// moment.js language configuration
-// language : Morocco Central Atlas Tamaziɣt (tzm)
-// author : Abdel Said : https://github.com/abdelsaid
-
-(function (factory) {
- factory(moment);
-}(function (moment) {
- return moment.lang('tzm', {
- months : "ⵉâµâµâ´°âµ¢âµ”_ⴱⵕⴰⵢⵕ_ⵎⴰⵕⵚ_ⵉⴱⵔⵉⵔ_ⵎⴰⵢⵢⵓ_ⵢⵓâµâµ¢âµ“_ⵢⵓâµâµ¢âµ“âµ£_ⵖⵓⵛⵜ_ⵛⵓⵜⴰâµâ´±âµ‰âµ”_ⴽⵟⵓⴱⵕ_âµâµ“ⵡⴰâµâ´±âµ‰âµ”_ⴷⵓⵊâµâ´±âµ‰âµ”".split("_"),
- monthsShort : "ⵉâµâµâ´°âµ¢âµ”_ⴱⵕⴰⵢⵕ_ⵎⴰⵕⵚ_ⵉⴱⵔⵉⵔ_ⵎⴰⵢⵢⵓ_ⵢⵓâµâµ¢âµ“_ⵢⵓâµâµ¢âµ“âµ£_ⵖⵓⵛⵜ_ⵛⵓⵜⴰâµâ´±âµ‰âµ”_ⴽⵟⵓⴱⵕ_âµâµ“ⵡⴰâµâ´±âµ‰âµ”_ⴷⵓⵊâµâ´±âµ‰âµ”".split("_"),
- weekdays : "ⴰⵙⴰⵎⴰⵙ_â´°âµ¢âµâ´°âµ™_ⴰⵙⵉâµâ´°âµ™_ⴰⴽⵔⴰⵙ_ⴰⴽⵡⴰⵙ_ⴰⵙⵉⵎⵡⴰⵙ_ⴰⵙⵉⴹⵢⴰⵙ".split("_"),
- weekdaysShort : "ⴰⵙⴰⵎⴰⵙ_â´°âµ¢âµâ´°âµ™_ⴰⵙⵉâµâ´°âµ™_ⴰⴽⵔⴰⵙ_ⴰⴽⵡⴰⵙ_ⴰⵙⵉⵎⵡⴰⵙ_ⴰⵙⵉⴹⵢⴰⵙ".split("_"),
- weekdaysMin : "ⴰⵙⴰⵎⴰⵙ_â´°âµ¢âµâ´°âµ™_ⴰⵙⵉâµâ´°âµ™_ⴰⴽⵔⴰⵙ_ⴰⴽⵡⴰⵙ_ⴰⵙⵉⵎⵡⴰⵙ_ⴰⵙⵉⴹⵢⴰⵙ".split("_"),
- longDateFormat : {
- LT : "HH:mm",
- L : "DD/MM/YYYY",
- LL : "D MMMM YYYY",
- LLL : "D MMMM YYYY LT",
- LLLL : "dddd D MMMM YYYY LT"
- },
- calendar : {
- sameDay: "[ⴰⵙⴷⵅ ⴴ] LT",
- nextDay: '[ⴰⵙⴽⴰ ⴴ] LT',
- nextWeek: 'dddd [â´´] LT',
- lastDay: '[ⴰⵚⴰâµâµœ â´´] LT',
- lastWeek: 'dddd [â´´] LT',
- sameElse: 'L'
- },
- relativeTime : {
- future : "ⴷⴰⴷⵅ ⵙ ⵢⴰⵠ%s",
- past : "ⵢⴰⵠ%s",
- s : "ⵉⵎⵉⴽ",
- m : "ⵎⵉâµâµ“â´º",
- mm : "%d ⵎⵉâµâµ“â´º",
- h : "ⵙⴰⵄⴰ",
- hh : "%d ⵜⴰⵙⵙⴰⵄⵉâµ",
- d : "ⴰⵙⵙ",
- dd : "%d oⵙⵙⴰâµ",
- M : "ⴰⵢoⵓⵔ",
- MM : "%d ⵉⵢⵢⵉⵔâµ",
- y : "ⴰⵙⴳⴰⵙ",
- yy : "%d ⵉⵙⴳⴰⵙâµ"
- },
- week : {
- dow : 6, // Saturday is the first day of the week.
- doy : 12 // The week that contains Jan 1st is the first week of the year.
- }
- });
-}));
-// moment.js language configuration
-// language : ukrainian (uk)
-// author : zemlanin : https://github.com/zemlanin
-// Author : Menelion Elensúle : https://github.com/Oire
-
-(function (factory) {
- factory(moment);
-}(function (moment) {
- function plural(word, num) {
- var forms = word.split('_');
- return num % 10 === 1 && num % 100 !== 11 ? forms[0] : (num % 10 >= 2 && num % 10 <= 4 && (num % 100 < 10 || num % 100 >= 20) ? forms[1] : forms[2]);
- }
-
- function relativeTimeWithPlural(number, withoutSuffix, key) {
- var format = {
- 'mm': 'хвилина_хвилини_хвилин',
- 'hh': 'година_години_годин',
- 'dd': 'день_дні_днів',
- 'MM': 'міÑÑць_міÑÑці_міÑÑців',
- 'yy': 'рік_роки_років'
- };
- if (key === 'm') {
- return withoutSuffix ? 'хвилина' : 'хвилину';
- }
- else if (key === 'h') {
- return withoutSuffix ? 'година' : 'годину';
- }
- else {
- return number + ' ' + plural(format[key], +number);
- }
- }
-
- function monthsCaseReplace(m, format) {
- var months = {
- 'nominative': 'Ñічень_лютий_березень_квітень_травень_червень_липень_Ñерпень_вереÑень_жовтень_лиÑтопад_грудень'.split('_'),
- 'accusative': 'ÑічнÑ_лютого_березнÑ_квітнÑ_травнÑ_червнÑ_липнÑ_ÑерпнÑ_вереÑнÑ_жовтнÑ_лиÑтопада_груднÑ'.split('_')
- },
-
- nounCase = (/D[oD]? *MMMM?/).test(format) ?
- 'accusative' :
- 'nominative';
-
- return months[nounCase][m.month()];
- }
-
- function weekdaysCaseReplace(m, format) {
- var weekdays = {
- 'nominative': 'неділÑ_понеділок_вівторок_Ñереда_четвер_п’ÑтницÑ_Ñубота'.split('_'),
- 'accusative': 'неділю_понеділок_вівторок_Ñереду_четвер_п’Ñтницю_Ñуботу'.split('_'),
- 'genitive': 'неділі_понеділка_вівторка_Ñереди_четверга_п’Ñтниці_Ñуботи'.split('_')
- },
-
- nounCase = (/(\[[ВвУу]\]) ?dddd/).test(format) ?
- 'accusative' :
- ((/\[?(?:минулої|наÑтупної)? ?\] ?dddd/).test(format) ?
- 'genitive' :
- 'nominative');
-
- return weekdays[nounCase][m.day()];
- }
-
- function processHoursFunction(str) {
- return function () {
- return str + 'о' + (this.hours() === 11 ? 'б' : '') + '] LT';
- };
- }
-
- return moment.lang('uk', {
- months : monthsCaseReplace,
- monthsShort : "Ñіч_лют_бер_квіт_трав_черв_лип_Ñерп_вер_жовт_лиÑÑ‚_груд".split("_"),
- weekdays : weekdaysCaseReplace,
- weekdaysShort : "нд_пн_вт_ÑÑ€_чт_пт_Ñб".split("_"),
- weekdaysMin : "нд_пн_вт_ÑÑ€_чт_пт_Ñб".split("_"),
- longDateFormat : {
- LT : "HH:mm",
- L : "DD.MM.YYYY",
- LL : "D MMMM YYYY р.",
- LLL : "D MMMM YYYY р., LT",
- LLLL : "dddd, D MMMM YYYY р., LT"
- },
- calendar : {
- sameDay: processHoursFunction('[Сьогодні '),
- nextDay: processHoursFunction('[Завтра '),
- lastDay: processHoursFunction('[Вчора '),
- nextWeek: processHoursFunction('[У] dddd ['),
- lastWeek: function () {
- switch (this.day()) {
- case 0:
- case 3:
- case 5:
- case 6:
- return processHoursFunction('[Минулої] dddd [').call(this);
- case 1:
- case 2:
- case 4:
- return processHoursFunction('[Минулого] dddd [').call(this);
- }
- },
- sameElse: 'L'
- },
- relativeTime : {
- future : "за %s",
- past : "%s тому",
- s : "декілька Ñекунд",
- m : relativeTimeWithPlural,
- mm : relativeTimeWithPlural,
- h : "годину",
- hh : relativeTimeWithPlural,
- d : "день",
- dd : relativeTimeWithPlural,
- M : "міÑÑць",
- MM : relativeTimeWithPlural,
- y : "рік",
- yy : relativeTimeWithPlural
- },
-
- // M. E.: those two are virtually unused but a user might want to implement them for his/her website for some reason
-
- meridiem : function (hour, minute, isLower) {
- if (hour < 4) {
- return "ночі";
- } else if (hour < 12) {
- return "ранку";
- } else if (hour < 17) {
- return "днÑ";
- } else {
- return "вечора";
- }
- },
-
- ordinal: function (number, period) {
- switch (period) {
- case 'M':
- case 'd':
- case 'DDD':
- case 'w':
- case 'W':
- return number + '-й';
- case 'D':
- return number + '-го';
- default:
- return number;
- }
- },
-
- week : {
- dow : 1, // Monday is the first day of the week.
- doy : 7 // The week that contains Jan 1st is the first week of the year.
- }
- });
-}));
-// moment.js language configuration
-// language : uzbek
-// author : Sardor Muminov : https://github.com/muminoff
-
-(function (factory) {
- factory(moment);
-}(function (moment) {
- return moment.lang('uz', {
- months : "Ñнварь_февраль_март_апрель_май_июнь_июль_авгуÑÑ‚_ÑентÑбрь_октÑбрь_ноÑбрь_декабрь".split("_"),
- monthsShort : "Ñнв_фев_мар_апр_май_июн_июл_авг_Ñен_окт_ноÑ_дек".split("_"),
- weekdays : "Якшанба_Душанба_Сешанба_Чоршанба_Пайшанба_Жума_Шанба".split("_"),
- weekdaysShort : "Якш_Душ_Сеш_Чор_Пай_Жум_Шан".split("_"),
- weekdaysMin : "Як_Ду_Се_Чо_Па_Жу_Ша".split("_"),
- longDateFormat : {
- LT : "HH:mm",
- L : "DD/MM/YYYY",
- LL : "D MMMM YYYY",
- LLL : "D MMMM YYYY LT",
- LLLL : "D MMMM YYYY, dddd LT"
- },
- calendar : {
- sameDay : '[Бугун Ñоат] LT [да]',
- nextDay : '[Эртага] LT [да]',
- nextWeek : 'dddd [куни Ñоат] LT [да]',
- lastDay : '[Кеча Ñоат] LT [да]',
- lastWeek : '[Утган] dddd [куни Ñоат] LT [да]',
- sameElse : 'L'
- },
- relativeTime : {
- future : "Якин %s ичида",
- past : "Бир неча %s олдин",
- s : "фурÑат",
- m : "бир дакика",
- mm : "%d дакика",
- h : "бир Ñоат",
- hh : "%d Ñоат",
- d : "бир кун",
- dd : "%d кун",
- M : "бир ой",
- MM : "%d ой",
- y : "бир йил",
- yy : "%d йил"
- },
- week : {
- dow : 1, // Monday is the first day of the week.
- doy : 7 // The week that contains Jan 4th is the first week of the year.
- }
- });
-}));
-// moment.js language configuration
-// language : vietnamese (vn)
-// author : Bang Nguyen : https://github.com/bangnk
-
-(function (factory) {
- factory(moment);
-}(function (moment) {
- return moment.lang('vn', {
- months : "tháng 1_tháng 2_tháng 3_tháng 4_tháng 5_tháng 6_tháng 7_tháng 8_tháng 9_tháng 10_tháng 11_tháng 12".split("_"),
- monthsShort : "Th01_Th02_Th03_Th04_Th05_Th06_Th07_Th08_Th09_Th10_Th11_Th12".split("_"),
- weekdays : "chủ nhật_thứ hai_thứ ba_thứ tư_thứ năm_thứ sáu_thứ bảy".split("_"),
- weekdaysShort : "CN_T2_T3_T4_T5_T6_T7".split("_"),
- weekdaysMin : "CN_T2_T3_T4_T5_T6_T7".split("_"),
- longDateFormat : {
- LT : "HH:mm",
- L : "DD/MM/YYYY",
- LL : "D MMMM [năm] YYYY",
- LLL : "D MMMM [năm] YYYY LT",
- LLLL : "dddd, D MMMM [năm] YYYY LT",
- l : "DD/M/YYYY",
- ll : "D MMM YYYY",
- lll : "D MMM YYYY LT",
- llll : "ddd, D MMM YYYY LT"
- },
- calendar : {
- sameDay: "[Hôm nay lúc] LT",
- nextDay: '[Ngày mai lúc] LT',
- nextWeek: 'dddd [tuần tới lúc] LT',
- lastDay: '[Hôm qua lúc] LT',
- lastWeek: 'dddd [tuần rồi lúc] LT',
- sameElse: 'L'
- },
- relativeTime : {
- future : "%s tá»›i",
- past : "%s trÆ°á»›c",
- s : "vài giây",
- m : "một phút",
- mm : "%d phút",
- h : "má»™t giá»",
- hh : "%d giá»",
- d : "một ngày",
- dd : "%d ngày",
- M : "một tháng",
- MM : "%d tháng",
- y : "một năm",
- yy : "%d năm"
- },
- ordinal : function (number) {
- return number;
- },
- week : {
- dow : 1, // Monday is the first day of the week.
- doy : 4 // The week that contains Jan 4th is the first week of the year.
- }
- });
-}));
-// moment.js language configuration
-// language : chinese
-// author : suupic : https://github.com/suupic
-// author : Zeno Zeng : https://github.com/zenozeng
-
-(function (factory) {
- factory(moment);
-}(function (moment) {
- return moment.lang('zh-cn', {
- months : "一月_二月_三月_四月_五月_六月_七月_八月_ä¹æœˆ_å月_å一月_å二月".split("_"),
- monthsShort : "1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月".split("_"),
- weekdays : "星期日_星期一_星期二_星期三_星期四_星期五_星期六".split("_"),
- weekdaysShort : "周日_周一_周二_周三_周四_周五_周六".split("_"),
- weekdaysMin : "日_一_二_三_四_五_六".split("_"),
- longDateFormat : {
- LT : "Ah点mm",
- L : "YYYYå¹´MMMDæ—¥",
- LL : "YYYYå¹´MMMDæ—¥",
- LLL : "YYYYå¹´MMMDæ—¥LT",
- LLLL : "YYYYå¹´MMMDæ—¥ddddLT",
- l : "YYYYå¹´MMMDæ—¥",
- ll : "YYYYå¹´MMMDæ—¥",
- lll : "YYYYå¹´MMMDæ—¥LT",
- llll : "YYYYå¹´MMMDæ—¥ddddLT"
- },
- meridiem : function (hour, minute, isLower) {
- var hm = hour * 100 + minute;
- if (hm < 600) {
- return "凌晨";
- } else if (hm < 900) {
- return "早上";
- } else if (hm < 1130) {
- return "上åˆ";
- } else if (hm < 1230) {
- return "中åˆ";
- } else if (hm < 1800) {
- return "下åˆ";
- } else {
- return "晚上";
- }
- },
- calendar : {
- sameDay : function () {
- return this.minutes() === 0 ? "[今天]Ah[点整]" : "[今天]LT";
- },
- nextDay : function () {
- return this.minutes() === 0 ? "[明天]Ah[点整]" : "[明天]LT";
- },
- lastDay : function () {
- return this.minutes() === 0 ? "[昨天]Ah[点整]" : "[昨天]LT";
- },
- nextWeek : function () {
- var startOfWeek, prefix;
- startOfWeek = moment().startOf('week');
- prefix = this.unix() - startOfWeek.unix() >= 7 * 24 * 3600 ? '[下]' : '[本]';
- return this.minutes() === 0 ? prefix + "dddAh点整" : prefix + "dddAh点mm";
- },
- lastWeek : function () {
- var startOfWeek, prefix;
- startOfWeek = moment().startOf('week');
- prefix = this.unix() < startOfWeek.unix() ? '[上]' : '[本]';
- return this.minutes() === 0 ? prefix + "dddAh点整" : prefix + "dddAh点mm";
- },
- sameElse : 'L'
- },
- ordinal : function (number, period) {
- switch (period) {
- case "d":
- case "D":
- case "DDD":
- return number + "æ—¥";
- case "M":
- return number + "月";
- case "w":
- case "W":
- return number + "周";
- default:
- return number;
- }
- },
- relativeTime : {
- future : "%s内",
- past : "%så‰",
- s : "几秒",
- m : "1分钟",
- mm : "%d分钟",
- h : "1å°æ—¶",
- hh : "%då°æ—¶",
- d : "1天",
- dd : "%d天",
- M : "1个月",
- MM : "%d个月",
- y : "1å¹´",
- yy : "%då¹´"
- },
- week : {
- // GB/T 7408-1994《数æ®å…ƒå’Œäº¤æ¢æ ¼å¼Â·ä¿¡æ¯äº¤æ¢Â·æ—¥æœŸå’Œæ—¶é—´è¡¨ç¤ºæ³•ã€‹ä¸ŽISO 8601:1988等效
- dow : 1, // Monday is the first day of the week.
- doy : 4 // The week that contains Jan 4th is the first week of the year.
- }
- });
-}));
-// moment.js language configuration
-// language : traditional chinese (zh-tw)
-// author : Ben : https://github.com/ben-lin
-
-(function (factory) {
- factory(moment);
-}(function (moment) {
- return moment.lang('zh-tw', {
- months : "一月_二月_三月_四月_五月_六月_七月_八月_ä¹æœˆ_å月_å一月_å二月".split("_"),
- monthsShort : "1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月".split("_"),
- weekdays : "星期日_星期一_星期二_星期三_星期四_星期五_星期六".split("_"),
- weekdaysShort : "週日_週一_週二_週三_週四_週五_週六".split("_"),
- weekdaysMin : "日_一_二_三_四_五_六".split("_"),
- longDateFormat : {
- LT : "Ah點mm",
- L : "YYYYå¹´MMMDæ—¥",
- LL : "YYYYå¹´MMMDæ—¥",
- LLL : "YYYYå¹´MMMDæ—¥LT",
- LLLL : "YYYYå¹´MMMDæ—¥ddddLT",
- l : "YYYYå¹´MMMDæ—¥",
- ll : "YYYYå¹´MMMDæ—¥",
- lll : "YYYYå¹´MMMDæ—¥LT",
- llll : "YYYYå¹´MMMDæ—¥ddddLT"
- },
- meridiem : function (hour, minute, isLower) {
- var hm = hour * 100 + minute;
- if (hm < 900) {
- return "早上";
- } else if (hm < 1130) {
- return "上åˆ";
- } else if (hm < 1230) {
- return "中åˆ";
- } else if (hm < 1800) {
- return "下åˆ";
- } else {
- return "晚上";
- }
- },
- calendar : {
- sameDay : '[今天]LT',
- nextDay : '[明天]LT',
- nextWeek : '[下]ddddLT',
- lastDay : '[昨天]LT',
- lastWeek : '[上]ddddLT',
- sameElse : 'L'
- },
- ordinal : function (number, period) {
- switch (period) {
- case "d" :
- case "D" :
- case "DDD" :
- return number + "æ—¥";
- case "M" :
- return number + "月";
- case "w" :
- case "W" :
- return number + "週";
- default :
- return number;
- }
- },
- relativeTime : {
- future : "%så…§",
- past : "%så‰",
- s : "幾秒",
- m : "一分é˜",
- mm : "%d分é˜",
- h : "一å°æ™‚",
- hh : "%då°æ™‚",
- d : "一天",
- dd : "%d天",
- M : "一個月",
- MM : "%d個月",
- y : "一年",
- yy : "%då¹´"
- }
- });
-}));
-
- moment.lang('en');
-
-
- /************************************
- Exposing Moment
- ************************************/
-
- function makeGlobal(deprecate) {
- var warned = false, local_moment = moment;
- /*global ender:false */
- if (typeof ender !== 'undefined') {
- return;
- }
- // here, `this` means `window` in the browser, or `global` on the server
- // add `moment` as a global object via a string identifier,
- // for Closure Compiler "advanced" mode
- if (deprecate) {
- this.moment = function () {
- if (!warned && console && console.warn) {
- warned = true;
- console.warn(
- "Accessing Moment through the global scope is " +
- "deprecated, and will be removed in an upcoming " +
- "release.");
- }
- return local_moment.apply(null, arguments);
- };
- } else {
- this['moment'] = moment;
- }
- }
-
- // CommonJS module is defined
- if (hasModule) {
- module.exports = moment;
- makeGlobal(true);
- } else if (typeof define === "function" && define.amd) {
- define("moment", function (require, exports, module) {
- if (module.config().noGlobal !== true) {
- // If user provided noGlobal, he is aware of global
- makeGlobal(module.config().noGlobal === undefined);
- }
-
- return moment;
- });
- } else {
- makeGlobal();
- }
-}).call(this);
diff --git a/library/bootstrap-tagsinput/LICENSE b/library/bootstrap-tagsinput/LICENSE
new file mode 100644
index 000000000..58bc985ba
--- /dev/null
+++ b/library/bootstrap-tagsinput/LICENSE
@@ -0,0 +1,20 @@
+The MIT License (MIT)
+
+Copyright (c) 2013 Tim Schlechter
+
+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/library/bootstrap-tagsinput/README b/library/bootstrap-tagsinput/README
new file mode 100644
index 000000000..a7c96d53a
--- /dev/null
+++ b/library/bootstrap-tagsinput/README
@@ -0,0 +1 @@
+Taken from https://github.com/gdibble/bootstrap-tagsinput/tree/traditionalPlaceholderEffect which has proper support for placeholders
diff --git a/library/bootstrap-tagsinput/README.md b/library/bootstrap-tagsinput/README.md
new file mode 100644
index 000000000..363c0d50b
--- /dev/null
+++ b/library/bootstrap-tagsinput/README.md
@@ -0,0 +1,879 @@
+
+
+
+
+<!DOCTYPE html>
+<html lang="en" class="">
+ <head prefix="og: http://ogp.me/ns# fb: http://ogp.me/ns/fb# object: http://ogp.me/ns/object# article: http://ogp.me/ns/article# profile: http://ogp.me/ns/profile#">
+ <meta charset='utf-8'>
+ <meta http-equiv="X-UA-Compatible" content="IE=edge">
+ <meta http-equiv="Content-Language" content="en">
+
+
+ <title>bootstrap-tagsinput/README.md at master · TimSchlechter/bootstrap-tagsinput · GitHub</title>
+ <link rel="search" type="application/opensearchdescription+xml" href="/opensearch.xml" title="GitHub">
+ <link rel="fluid-icon" href="https://github.com/fluidicon.png" title="GitHub">
+ <link rel="apple-touch-icon" sizes="57x57" href="/apple-touch-icon-114.png">
+ <link rel="apple-touch-icon" sizes="114x114" href="/apple-touch-icon-114.png">
+ <link rel="apple-touch-icon" sizes="72x72" href="/apple-touch-icon-144.png">
+ <link rel="apple-touch-icon" sizes="144x144" href="/apple-touch-icon-144.png">
+ <meta property="fb:app_id" content="1401488693436528">
+
+ <meta content="@github" name="twitter:site" /><meta content="summary" name="twitter:card" /><meta content="TimSchlechter/bootstrap-tagsinput" name="twitter:title" /><meta content="bootstrap-tagsinput - jQuery tags input plugin based on Twitter Bootstrap." name="twitter:description" /><meta content="https://avatars1.githubusercontent.com/u/2721613?v=3&amp;s=400" name="twitter:image:src" />
+<meta content="GitHub" property="og:site_name" /><meta content="object" property="og:type" /><meta content="https://avatars1.githubusercontent.com/u/2721613?v=3&amp;s=400" property="og:image" /><meta content="TimSchlechter/bootstrap-tagsinput" property="og:title" /><meta content="https://github.com/TimSchlechter/bootstrap-tagsinput" property="og:url" /><meta content="bootstrap-tagsinput - jQuery tags input plugin based on Twitter Bootstrap." property="og:description" />
+
+ <meta name="browser-stats-url" content="/_stats">
+ <link rel="assets" href="https://assets-cdn.github.com/">
+ <link rel="conduit-xhr" href="https://ghconduit.com:25035">
+
+ <meta name="pjax-timeout" content="1000">
+
+
+ <meta name="msapplication-TileImage" content="/windows-tile.png">
+ <meta name="msapplication-TileColor" content="#ffffff">
+ <meta name="selected-link" value="repo_source" data-pjax-transient>
+ <meta name="google-analytics" content="UA-3769691-2">
+
+ <meta content="collector.githubapp.com" name="octolytics-host" /><meta content="collector-cdn.github.com" name="octolytics-script-host" /><meta content="github" name="octolytics-app-id" /><meta content="05C412F3:5EFA:620CC:54968B9C" name="octolytics-dimension-request_id" />
+
+ <meta content="Rails, view, blob#show" name="analytics-event" />
+
+
+
+ <link rel="icon" type="image/x-icon" href="https://assets-cdn.github.com/favicon.ico">
+
+
+ <meta content="authenticity_token" name="csrf-param" />
+<meta content="pq46YRAN8EIxwiqw1PBmOS18o8ukCrBKyIwYs6EhhTJPiGbEXhKdJxdkbRWl+VYne3E3iSUijxSIsYnZnQddlg==" name="csrf-token" />
+
+ <link href="https://assets-cdn.github.com/assets/github-9bcf5def7eb44e2a101b20aaecf3707f4b0a10ab8f4d6eebec29371f821c4b29.css" media="all" rel="stylesheet" type="text/css" />
+ <link href="https://assets-cdn.github.com/assets/github2-47bc67324d463c7cecb5ee4c009628c91db85b0e9288a9e663f2d06ff9e03088.css" media="all" rel="stylesheet" type="text/css" />
+
+
+
+
+ <meta http-equiv="x-pjax-version" content="cffc32e08a29062b908cc3ddb47285af">
+
+
+ <meta name="description" content="bootstrap-tagsinput - jQuery tags input plugin based on Twitter Bootstrap.">
+ <meta name="go-import" content="github.com/TimSchlechter/bootstrap-tagsinput git https://github.com/TimSchlechter/bootstrap-tagsinput.git">
+
+ <meta content="2721613" name="octolytics-dimension-user_id" /><meta content="TimSchlechter" name="octolytics-dimension-user_login" /><meta content="11534941" name="octolytics-dimension-repository_id" /><meta content="TimSchlechter/bootstrap-tagsinput" name="octolytics-dimension-repository_nwo" /><meta content="true" name="octolytics-dimension-repository_public" /><meta content="false" name="octolytics-dimension-repository_is_fork" /><meta content="11534941" name="octolytics-dimension-repository_network_root_id" /><meta content="TimSchlechter/bootstrap-tagsinput" name="octolytics-dimension-repository_network_root_nwo" />
+ <link href="https://github.com/TimSchlechter/bootstrap-tagsinput/commits/master.atom" rel="alternate" title="Recent Commits to bootstrap-tagsinput:master" type="application/atom+xml">
+
+ </head>
+
+
+ <body class="logged_out env-production vis-public page-blob">
+ <a href="#start-of-content" tabindex="1" class="accessibility-aid js-skip-to-content">Skip to content</a>
+ <div class="wrapper">
+
+
+
+
+
+
+
+ <div class="header header-logged-out" role="banner">
+ <div class="container clearfix">
+
+ <a class="header-logo-wordmark" href="https://github.com/" ga-data-click="(Logged out) Header, go to homepage, icon:logo-wordmark">
+ <span class="mega-octicon octicon-logo-github"></span>
+ </a>
+
+ <div class="header-actions" role="navigation">
+ <a class="button primary" href="/join" data-ga-click="(Logged out) Header, clicked Sign up, text:sign-up">Sign up</a>
+ <a class="button" href="/login?return_to=%2FTimSchlechter%2Fbootstrap-tagsinput%2Fblob%2Fmaster%2FREADME.md" data-ga-click="(Logged out) Header, clicked Sign in, text:sign-in">Sign in</a>
+ </div>
+
+ <div class="site-search repo-scope js-site-search" role="search">
+ <form accept-charset="UTF-8" action="/TimSchlechter/bootstrap-tagsinput/search" class="js-site-search-form" data-global-search-url="/search" data-repo-search-url="/TimSchlechter/bootstrap-tagsinput/search" method="get"><div style="margin:0;padding:0;display:inline"><input name="utf8" type="hidden" value="&#x2713;" /></div>
+ <input type="text"
+ class="js-site-search-field is-clearable"
+ data-hotkey="s"
+ name="q"
+ placeholder="Search"
+ data-global-scope-placeholder="Search GitHub"
+ data-repo-scope-placeholder="Search"
+ tabindex="1"
+ autocapitalize="off">
+ <div class="scope-badge">This repository</div>
+</form>
+ </div>
+
+ <ul class="header-nav left" role="navigation">
+ <li class="header-nav-item">
+ <a class="header-nav-link" href="/explore" data-ga-click="(Logged out) Header, go to explore, text:explore">Explore</a>
+ </li>
+ <li class="header-nav-item">
+ <a class="header-nav-link" href="/features" data-ga-click="(Logged out) Header, go to features, text:features">Features</a>
+ </li>
+ <li class="header-nav-item">
+ <a class="header-nav-link" href="https://enterprise.github.com/" data-ga-click="(Logged out) Header, go to enterprise, text:enterprise">Enterprise</a>
+ </li>
+ <li class="header-nav-item">
+ <a class="header-nav-link" href="/blog" data-ga-click="(Logged out) Header, go to blog, text:blog">Blog</a>
+ </li>
+ </ul>
+
+ </div>
+</div>
+
+
+
+ <div id="start-of-content" class="accessibility-aid"></div>
+ <div class="site" itemscope itemtype="http://schema.org/WebPage">
+ <div id="js-flash-container">
+
+ </div>
+ <div class="pagehead repohead instapaper_ignore readability-menu">
+ <div class="container">
+
+<ul class="pagehead-actions">
+
+
+ <li>
+ <a href="/login?return_to=%2FTimSchlechter%2Fbootstrap-tagsinput"
+ class="minibutton with-count star-button tooltipped tooltipped-n"
+ aria-label="You must be signed in to star a repository" rel="nofollow">
+ <span class="octicon octicon-star"></span>
+ Star
+ </a>
+
+ <a class="social-count js-social-count" href="/TimSchlechter/bootstrap-tagsinput/stargazers">
+ 755
+ </a>
+
+ </li>
+
+ <li>
+ <a href="/login?return_to=%2FTimSchlechter%2Fbootstrap-tagsinput"
+ class="minibutton with-count js-toggler-target fork-button tooltipped tooltipped-n"
+ aria-label="You must be signed in to fork a repository" rel="nofollow">
+ <span class="octicon octicon-repo-forked"></span>
+ Fork
+ </a>
+ <a href="/TimSchlechter/bootstrap-tagsinput/network" class="social-count">
+ 307
+ </a>
+ </li>
+</ul>
+
+ <h1 itemscope itemtype="http://data-vocabulary.org/Breadcrumb" class="entry-title public">
+ <span class="mega-octicon octicon-repo"></span>
+ <span class="author"><a href="/TimSchlechter" class="url fn" itemprop="url" rel="author"><span itemprop="title">TimSchlechter</span></a></span><!--
+ --><span class="path-divider">/</span><!--
+ --><strong><a href="/TimSchlechter/bootstrap-tagsinput" class="js-current-repository" data-pjax="#js-repo-pjax-container">bootstrap-tagsinput</a></strong>
+
+ <span class="page-context-loader">
+ <img alt="" height="16" src="https://assets-cdn.github.com/images/spinners/octocat-spinner-32.gif" width="16" />
+ </span>
+
+ </h1>
+ </div><!-- /.container -->
+ </div><!-- /.repohead -->
+
+ <div class="container">
+ <div class="repository-with-sidebar repo-container new-discussion-timeline ">
+ <div class="repository-sidebar clearfix">
+
+<nav class="sunken-menu repo-nav js-repo-nav js-sidenav-container-pjax js-octicon-loaders"
+ role="navigation"
+ data-pjax="#js-repo-pjax-container"
+ data-issue-count-url="/TimSchlechter/bootstrap-tagsinput/issues/counts">
+ <ul class="sunken-menu-group">
+ <li class="tooltipped tooltipped-w" aria-label="Code">
+ <a href="/TimSchlechter/bootstrap-tagsinput" aria-label="Code" class="selected js-selected-navigation-item sunken-menu-item" data-hotkey="g c" data-selected-links="repo_source repo_downloads repo_commits repo_releases repo_tags repo_branches /TimSchlechter/bootstrap-tagsinput">
+ <span class="octicon octicon-code"></span> <span class="full-word">Code</span>
+ <img alt="" class="mini-loader" height="16" src="https://assets-cdn.github.com/images/spinners/octocat-spinner-32.gif" width="16" />
+</a> </li>
+
+ <li class="tooltipped tooltipped-w" aria-label="Issues">
+ <a href="/TimSchlechter/bootstrap-tagsinput/issues" aria-label="Issues" class="js-selected-navigation-item sunken-menu-item" data-hotkey="g i" data-selected-links="repo_issues repo_labels repo_milestones /TimSchlechter/bootstrap-tagsinput/issues">
+ <span class="octicon octicon-issue-opened"></span> <span class="full-word">Issues</span>
+ <span class="js-issue-replace-counter"></span>
+ <img alt="" class="mini-loader" height="16" src="https://assets-cdn.github.com/images/spinners/octocat-spinner-32.gif" width="16" />
+</a> </li>
+
+ <li class="tooltipped tooltipped-w" aria-label="Pull Requests">
+ <a href="/TimSchlechter/bootstrap-tagsinput/pulls" aria-label="Pull Requests" class="js-selected-navigation-item sunken-menu-item" data-hotkey="g p" data-selected-links="repo_pulls /TimSchlechter/bootstrap-tagsinput/pulls">
+ <span class="octicon octicon-git-pull-request"></span> <span class="full-word">Pull Requests</span>
+ <span class="js-pull-replace-counter"></span>
+ <img alt="" class="mini-loader" height="16" src="https://assets-cdn.github.com/images/spinners/octocat-spinner-32.gif" width="16" />
+</a> </li>
+
+
+ </ul>
+ <div class="sunken-menu-separator"></div>
+ <ul class="sunken-menu-group">
+
+ <li class="tooltipped tooltipped-w" aria-label="Pulse">
+ <a href="/TimSchlechter/bootstrap-tagsinput/pulse" aria-label="Pulse" class="js-selected-navigation-item sunken-menu-item" data-selected-links="pulse /TimSchlechter/bootstrap-tagsinput/pulse">
+ <span class="octicon octicon-pulse"></span> <span class="full-word">Pulse</span>
+ <img alt="" class="mini-loader" height="16" src="https://assets-cdn.github.com/images/spinners/octocat-spinner-32.gif" width="16" />
+</a> </li>
+
+ <li class="tooltipped tooltipped-w" aria-label="Graphs">
+ <a href="/TimSchlechter/bootstrap-tagsinput/graphs" aria-label="Graphs" class="js-selected-navigation-item sunken-menu-item" data-selected-links="repo_graphs repo_contributors /TimSchlechter/bootstrap-tagsinput/graphs">
+ <span class="octicon octicon-graph"></span> <span class="full-word">Graphs</span>
+ <img alt="" class="mini-loader" height="16" src="https://assets-cdn.github.com/images/spinners/octocat-spinner-32.gif" width="16" />
+</a> </li>
+ </ul>
+
+
+</nav>
+
+ <div class="only-with-full-nav">
+
+
+<div class="clone-url open"
+ data-protocol-type="http"
+ data-url="/users/set_protocol?protocol_selector=http&amp;protocol_type=clone">
+ <h3><span class="text-emphasized">HTTPS</span> clone URL</h3>
+ <div class="input-group js-zeroclipboard-container">
+ <input type="text" class="input-mini input-monospace js-url-field js-zeroclipboard-target"
+ value="https://github.com/TimSchlechter/bootstrap-tagsinput.git" readonly="readonly">
+ <span class="input-group-button">
+ <button aria-label="Copy to clipboard" class="js-zeroclipboard minibutton zeroclipboard-button" data-copied-hint="Copied!" type="button"><span class="octicon octicon-clippy"></span></button>
+ </span>
+ </div>
+</div>
+
+
+<div class="clone-url "
+ data-protocol-type="subversion"
+ data-url="/users/set_protocol?protocol_selector=subversion&amp;protocol_type=clone">
+ <h3><span class="text-emphasized">Subversion</span> checkout URL</h3>
+ <div class="input-group js-zeroclipboard-container">
+ <input type="text" class="input-mini input-monospace js-url-field js-zeroclipboard-target"
+ value="https://github.com/TimSchlechter/bootstrap-tagsinput" readonly="readonly">
+ <span class="input-group-button">
+ <button aria-label="Copy to clipboard" class="js-zeroclipboard minibutton zeroclipboard-button" data-copied-hint="Copied!" type="button"><span class="octicon octicon-clippy"></span></button>
+ </span>
+ </div>
+</div>
+
+
+
+<p class="clone-options">You can clone with
+ <a href="#" class="js-clone-selector" data-protocol="http">HTTPS</a> or <a href="#" class="js-clone-selector" data-protocol="subversion">Subversion</a>.
+ <a href="https://help.github.com/articles/which-remote-url-should-i-use" class="help tooltipped tooltipped-n" aria-label="Get help on which URL is right for you.">
+ <span class="octicon octicon-question"></span>
+ </a>
+</p>
+
+
+
+ <a href="/TimSchlechter/bootstrap-tagsinput/archive/master.zip"
+ class="minibutton sidebar-button"
+ aria-label="Download the contents of TimSchlechter/bootstrap-tagsinput as a zip file"
+ title="Download the contents of TimSchlechter/bootstrap-tagsinput as a zip file"
+ rel="nofollow">
+ <span class="octicon octicon-cloud-download"></span>
+ Download ZIP
+ </a>
+ </div>
+ </div><!-- /.repository-sidebar -->
+
+ <div id="js-repo-pjax-container" class="repository-content context-loader-container" data-pjax-container>
+
+
+<a href="/TimSchlechter/bootstrap-tagsinput/blob/a4657365808a224fe8aa950c14b96ecfce58b290/README.md" class="hidden js-permalink-shortcut" data-hotkey="y">Permalink</a>
+
+<!-- blob contrib key: blob_contributors:v21:002463f2fb860593a8410f2c5c54cd3a -->
+
+<div class="file-navigation js-zeroclipboard-container">
+
+<div class="select-menu js-menu-container js-select-menu left">
+ <span class="minibutton select-menu-button js-menu-target css-truncate" data-hotkey="w"
+ data-master-branch="master"
+ data-ref="master"
+ title="master"
+ role="button" aria-label="Switch branches or tags" tabindex="0" aria-haspopup="true">
+ <span class="octicon octicon-git-branch"></span>
+ <i>branch:</i>
+ <span class="js-select-button css-truncate-target">master</span>
+ </span>
+
+ <div class="select-menu-modal-holder js-menu-content js-navigation-container" data-pjax aria-hidden="true">
+
+ <div class="select-menu-modal">
+ <div class="select-menu-header">
+ <span class="select-menu-title">Switch branches/tags</span>
+ <span class="octicon octicon-x js-menu-close" role="button" aria-label="Close"></span>
+ </div> <!-- /.select-menu-header -->
+
+ <div class="select-menu-filters">
+ <div class="select-menu-text-filter">
+ <input type="text" aria-label="Filter branches/tags" id="context-commitish-filter-field" class="js-filterable-field js-navigation-enable" placeholder="Filter branches/tags">
+ </div>
+ <div class="select-menu-tabs">
+ <ul>
+ <li class="select-menu-tab">
+ <a href="#" data-tab-filter="branches" class="js-select-menu-tab">Branches</a>
+ </li>
+ <li class="select-menu-tab">
+ <a href="#" data-tab-filter="tags" class="js-select-menu-tab">Tags</a>
+ </li>
+ </ul>
+ </div><!-- /.select-menu-tabs -->
+ </div><!-- /.select-menu-filters -->
+
+ <div class="select-menu-list select-menu-tab-bucket js-select-menu-tab-bucket" data-tab-filter="branches">
+
+ <div data-filterable-for="context-commitish-filter-field" data-filterable-type="substring">
+
+
+ <div class="select-menu-item js-navigation-item ">
+ <span class="select-menu-item-icon octicon octicon-check"></span>
+ <a href="/TimSchlechter/bootstrap-tagsinput/blob/gh-pages/README.md"
+ data-name="gh-pages"
+ data-skip-pjax="true"
+ rel="nofollow"
+ class="js-navigation-open select-menu-item-text css-truncate-target"
+ title="gh-pages">gh-pages</a>
+ </div> <!-- /.select-menu-item -->
+ <div class="select-menu-item js-navigation-item selected">
+ <span class="select-menu-item-icon octicon octicon-check"></span>
+ <a href="/TimSchlechter/bootstrap-tagsinput/blob/master/README.md"
+ data-name="master"
+ data-skip-pjax="true"
+ rel="nofollow"
+ class="js-navigation-open select-menu-item-text css-truncate-target"
+ title="master">master</a>
+ </div> <!-- /.select-menu-item -->
+ </div>
+
+ <div class="select-menu-no-results">Nothing to show</div>
+ </div> <!-- /.select-menu-list -->
+
+ <div class="select-menu-list select-menu-tab-bucket js-select-menu-tab-bucket" data-tab-filter="tags">
+ <div data-filterable-for="context-commitish-filter-field" data-filterable-type="substring">
+
+
+ <div class="select-menu-item js-navigation-item ">
+ <span class="select-menu-item-icon octicon octicon-check"></span>
+ <a href="/TimSchlechter/bootstrap-tagsinput/tree/0.4.2/README.md"
+ data-name="0.4.2"
+ data-skip-pjax="true"
+ rel="nofollow"
+ class="js-navigation-open select-menu-item-text css-truncate-target"
+ title="0.4.2">0.4.2</a>
+ </div> <!-- /.select-menu-item -->
+ <div class="select-menu-item js-navigation-item ">
+ <span class="select-menu-item-icon octicon octicon-check"></span>
+ <a href="/TimSchlechter/bootstrap-tagsinput/tree/0.4.1/README.md"
+ data-name="0.4.1"
+ data-skip-pjax="true"
+ rel="nofollow"
+ class="js-navigation-open select-menu-item-text css-truncate-target"
+ title="0.4.1">0.4.1</a>
+ </div> <!-- /.select-menu-item -->
+ <div class="select-menu-item js-navigation-item ">
+ <span class="select-menu-item-icon octicon octicon-check"></span>
+ <a href="/TimSchlechter/bootstrap-tagsinput/tree/0.4/README.md"
+ data-name="0.4"
+ data-skip-pjax="true"
+ rel="nofollow"
+ class="js-navigation-open select-menu-item-text css-truncate-target"
+ title="0.4">0.4</a>
+ </div> <!-- /.select-menu-item -->
+ <div class="select-menu-item js-navigation-item ">
+ <span class="select-menu-item-icon octicon octicon-check"></span>
+ <a href="/TimSchlechter/bootstrap-tagsinput/tree/0.3.14/README.md"
+ data-name="0.3.14"
+ data-skip-pjax="true"
+ rel="nofollow"
+ class="js-navigation-open select-menu-item-text css-truncate-target"
+ title="0.3.14">0.3.14</a>
+ </div> <!-- /.select-menu-item -->
+ <div class="select-menu-item js-navigation-item ">
+ <span class="select-menu-item-icon octicon octicon-check"></span>
+ <a href="/TimSchlechter/bootstrap-tagsinput/tree/0.3.13/README.md"
+ data-name="0.3.13"
+ data-skip-pjax="true"
+ rel="nofollow"
+ class="js-navigation-open select-menu-item-text css-truncate-target"
+ title="0.3.13">0.3.13</a>
+ </div> <!-- /.select-menu-item -->
+ <div class="select-menu-item js-navigation-item ">
+ <span class="select-menu-item-icon octicon octicon-check"></span>
+ <a href="/TimSchlechter/bootstrap-tagsinput/tree/0.3.12/README.md"
+ data-name="0.3.12"
+ data-skip-pjax="true"
+ rel="nofollow"
+ class="js-navigation-open select-menu-item-text css-truncate-target"
+ title="0.3.12">0.3.12</a>
+ </div> <!-- /.select-menu-item -->
+ <div class="select-menu-item js-navigation-item ">
+ <span class="select-menu-item-icon octicon octicon-check"></span>
+ <a href="/TimSchlechter/bootstrap-tagsinput/tree/0.3.11/README.md"
+ data-name="0.3.11"
+ data-skip-pjax="true"
+ rel="nofollow"
+ class="js-navigation-open select-menu-item-text css-truncate-target"
+ title="0.3.11">0.3.11</a>
+ </div> <!-- /.select-menu-item -->
+ <div class="select-menu-item js-navigation-item ">
+ <span class="select-menu-item-icon octicon octicon-check"></span>
+ <a href="/TimSchlechter/bootstrap-tagsinput/tree/0.3.10/README.md"
+ data-name="0.3.10"
+ data-skip-pjax="true"
+ rel="nofollow"
+ class="js-navigation-open select-menu-item-text css-truncate-target"
+ title="0.3.10">0.3.10</a>
+ </div> <!-- /.select-menu-item -->
+ <div class="select-menu-item js-navigation-item ">
+ <span class="select-menu-item-icon octicon octicon-check"></span>
+ <a href="/TimSchlechter/bootstrap-tagsinput/tree/0.3.9/README.md"
+ data-name="0.3.9"
+ data-skip-pjax="true"
+ rel="nofollow"
+ class="js-navigation-open select-menu-item-text css-truncate-target"
+ title="0.3.9">0.3.9</a>
+ </div> <!-- /.select-menu-item -->
+ <div class="select-menu-item js-navigation-item ">
+ <span class="select-menu-item-icon octicon octicon-check"></span>
+ <a href="/TimSchlechter/bootstrap-tagsinput/tree/0.3.8/README.md"
+ data-name="0.3.8"
+ data-skip-pjax="true"
+ rel="nofollow"
+ class="js-navigation-open select-menu-item-text css-truncate-target"
+ title="0.3.8">0.3.8</a>
+ </div> <!-- /.select-menu-item -->
+ <div class="select-menu-item js-navigation-item ">
+ <span class="select-menu-item-icon octicon octicon-check"></span>
+ <a href="/TimSchlechter/bootstrap-tagsinput/tree/0.3.7/README.md"
+ data-name="0.3.7"
+ data-skip-pjax="true"
+ rel="nofollow"
+ class="js-navigation-open select-menu-item-text css-truncate-target"
+ title="0.3.7">0.3.7</a>
+ </div> <!-- /.select-menu-item -->
+ <div class="select-menu-item js-navigation-item ">
+ <span class="select-menu-item-icon octicon octicon-check"></span>
+ <a href="/TimSchlechter/bootstrap-tagsinput/tree/0.3.6/README.md"
+ data-name="0.3.6"
+ data-skip-pjax="true"
+ rel="nofollow"
+ class="js-navigation-open select-menu-item-text css-truncate-target"
+ title="0.3.6">0.3.6</a>
+ </div> <!-- /.select-menu-item -->
+ <div class="select-menu-item js-navigation-item ">
+ <span class="select-menu-item-icon octicon octicon-check"></span>
+ <a href="/TimSchlechter/bootstrap-tagsinput/tree/0.3.5/README.md"
+ data-name="0.3.5"
+ data-skip-pjax="true"
+ rel="nofollow"
+ class="js-navigation-open select-menu-item-text css-truncate-target"
+ title="0.3.5">0.3.5</a>
+ </div> <!-- /.select-menu-item -->
+ <div class="select-menu-item js-navigation-item ">
+ <span class="select-menu-item-icon octicon octicon-check"></span>
+ <a href="/TimSchlechter/bootstrap-tagsinput/tree/0.3.4/README.md"
+ data-name="0.3.4"
+ data-skip-pjax="true"
+ rel="nofollow"
+ class="js-navigation-open select-menu-item-text css-truncate-target"
+ title="0.3.4">0.3.4</a>
+ </div> <!-- /.select-menu-item -->
+ <div class="select-menu-item js-navigation-item ">
+ <span class="select-menu-item-icon octicon octicon-check"></span>
+ <a href="/TimSchlechter/bootstrap-tagsinput/tree/0.3.3/README.md"
+ data-name="0.3.3"
+ data-skip-pjax="true"
+ rel="nofollow"
+ class="js-navigation-open select-menu-item-text css-truncate-target"
+ title="0.3.3">0.3.3</a>
+ </div> <!-- /.select-menu-item -->
+ <div class="select-menu-item js-navigation-item ">
+ <span class="select-menu-item-icon octicon octicon-check"></span>
+ <a href="/TimSchlechter/bootstrap-tagsinput/tree/0.3.2/README.md"
+ data-name="0.3.2"
+ data-skip-pjax="true"
+ rel="nofollow"
+ class="js-navigation-open select-menu-item-text css-truncate-target"
+ title="0.3.2">0.3.2</a>
+ </div> <!-- /.select-menu-item -->
+ <div class="select-menu-item js-navigation-item ">
+ <span class="select-menu-item-icon octicon octicon-check"></span>
+ <a href="/TimSchlechter/bootstrap-tagsinput/tree/0.3.1/README.md"
+ data-name="0.3.1"
+ data-skip-pjax="true"
+ rel="nofollow"
+ class="js-navigation-open select-menu-item-text css-truncate-target"
+ title="0.3.1">0.3.1</a>
+ </div> <!-- /.select-menu-item -->
+ <div class="select-menu-item js-navigation-item ">
+ <span class="select-menu-item-icon octicon octicon-check"></span>
+ <a href="/TimSchlechter/bootstrap-tagsinput/tree/0.3.0/README.md"
+ data-name="0.3.0"
+ data-skip-pjax="true"
+ rel="nofollow"
+ class="js-navigation-open select-menu-item-text css-truncate-target"
+ title="0.3.0">0.3.0</a>
+ </div> <!-- /.select-menu-item -->
+ <div class="select-menu-item js-navigation-item ">
+ <span class="select-menu-item-icon octicon octicon-check"></span>
+ <a href="/TimSchlechter/bootstrap-tagsinput/tree/0.2.3/README.md"
+ data-name="0.2.3"
+ data-skip-pjax="true"
+ rel="nofollow"
+ class="js-navigation-open select-menu-item-text css-truncate-target"
+ title="0.2.3">0.2.3</a>
+ </div> <!-- /.select-menu-item -->
+ <div class="select-menu-item js-navigation-item ">
+ <span class="select-menu-item-icon octicon octicon-check"></span>
+ <a href="/TimSchlechter/bootstrap-tagsinput/tree/0.2.2/README.md"
+ data-name="0.2.2"
+ data-skip-pjax="true"
+ rel="nofollow"
+ class="js-navigation-open select-menu-item-text css-truncate-target"
+ title="0.2.2">0.2.2</a>
+ </div> <!-- /.select-menu-item -->
+ <div class="select-menu-item js-navigation-item ">
+ <span class="select-menu-item-icon octicon octicon-check"></span>
+ <a href="/TimSchlechter/bootstrap-tagsinput/tree/0.2.1/README.md"
+ data-name="0.2.1"
+ data-skip-pjax="true"
+ rel="nofollow"
+ class="js-navigation-open select-menu-item-text css-truncate-target"
+ title="0.2.1">0.2.1</a>
+ </div> <!-- /.select-menu-item -->
+ <div class="select-menu-item js-navigation-item ">
+ <span class="select-menu-item-icon octicon octicon-check"></span>
+ <a href="/TimSchlechter/bootstrap-tagsinput/tree/0.2.0/README.md"
+ data-name="0.2.0"
+ data-skip-pjax="true"
+ rel="nofollow"
+ class="js-navigation-open select-menu-item-text css-truncate-target"
+ title="0.2.0">0.2.0</a>
+ </div> <!-- /.select-menu-item -->
+ <div class="select-menu-item js-navigation-item ">
+ <span class="select-menu-item-icon octicon octicon-check"></span>
+ <a href="/TimSchlechter/bootstrap-tagsinput/tree/0.1.1/README.md"
+ data-name="0.1.1"
+ data-skip-pjax="true"
+ rel="nofollow"
+ class="js-navigation-open select-menu-item-text css-truncate-target"
+ title="0.1.1">0.1.1</a>
+ </div> <!-- /.select-menu-item -->
+ <div class="select-menu-item js-navigation-item ">
+ <span class="select-menu-item-icon octicon octicon-check"></span>
+ <a href="/TimSchlechter/bootstrap-tagsinput/tree/0.1.0/README.md"
+ data-name="0.1.0"
+ data-skip-pjax="true"
+ rel="nofollow"
+ class="js-navigation-open select-menu-item-text css-truncate-target"
+ title="0.1.0">0.1.0</a>
+ </div> <!-- /.select-menu-item -->
+ </div>
+
+ <div class="select-menu-no-results">Nothing to show</div>
+ </div> <!-- /.select-menu-list -->
+
+ </div> <!-- /.select-menu-modal -->
+ </div> <!-- /.select-menu-modal-holder -->
+</div> <!-- /.select-menu -->
+
+ <div class="button-group right">
+ <a href="/TimSchlechter/bootstrap-tagsinput/find/master"
+ class="js-show-file-finder minibutton empty-icon tooltipped tooltipped-s"
+ data-pjax
+ data-hotkey="t"
+ aria-label="Quickly jump between files">
+ <span class="octicon octicon-list-unordered"></span>
+ </a>
+ <button aria-label="Copy file path to clipboard" class="js-zeroclipboard minibutton zeroclipboard-button" data-copied-hint="Copied!" type="button"><span class="octicon octicon-clippy"></span></button>
+ </div>
+
+ <div class="breadcrumb js-zeroclipboard-target">
+ <span class='repo-root js-repo-root'><span itemscope="" itemtype="http://data-vocabulary.org/Breadcrumb"><a href="/TimSchlechter/bootstrap-tagsinput" class="" data-branch="master" data-direction="back" data-pjax="true" itemscope="url"><span itemprop="title">bootstrap-tagsinput</span></a></span></span><span class="separator">/</span><strong class="final-path">README.md</strong>
+ </div>
+</div>
+
+
+ <div class="commit file-history-tease">
+ <div class="file-history-tease-header">
+ <img alt="Tim Schlechter" class="avatar" data-user="2721613" height="24" src="https://avatars3.githubusercontent.com/u/2721613?v=3&amp;s=48" width="24" />
+ <span class="author"><a href="/TimSchlechter" rel="author">TimSchlechter</a></span>
+ <time datetime="2014-07-30T18:40:53Z" is="relative-time">Jul 30, 2014</time>
+ <div class="commit-title">
+ <a href="/TimSchlechter/bootstrap-tagsinput/commit/a64536d346d252a6fb5d013a53ff0b6a6a991ba8" class="message" data-pjax="true" title="Release build 0.4">Release build 0.4</a>
+ </div>
+ </div>
+
+ <div class="participation">
+ <p class="quickstat">
+ <a href="#blob_contributors_box" rel="facebox">
+ <strong>1</strong>
+ contributor
+ </a>
+ </p>
+
+ </div>
+ <div id="blob_contributors_box" style="display:none">
+ <h2 class="facebox-header">Users who have contributed to this file</h2>
+ <ul class="facebox-user-list">
+ <li class="facebox-user-list-item">
+ <img alt="Tim Schlechter" data-user="2721613" height="24" src="https://avatars3.githubusercontent.com/u/2721613?v=3&amp;s=48" width="24" />
+ <a href="/TimSchlechter">TimSchlechter</a>
+ </li>
+ </ul>
+ </div>
+ </div>
+
+<div class="file-box">
+ <div class="file">
+ <div class="meta clearfix">
+ <div class="info file-name">
+ <span>70 lines (61 sloc)</span>
+ <span class="meta-divider"></span>
+ <span>3.157 kb</span>
+ </div>
+ <div class="actions">
+ <div class="button-group">
+ <a href="/TimSchlechter/bootstrap-tagsinput/raw/master/README.md" class="minibutton " id="raw-url">Raw</a>
+ <a href="/TimSchlechter/bootstrap-tagsinput/blame/master/README.md" class="minibutton js-update-url-with-hash">Blame</a>
+ <a href="/TimSchlechter/bootstrap-tagsinput/commits/master/README.md" class="minibutton " rel="nofollow">History</a>
+ </div><!-- /.button-group -->
+
+
+ <a class="octicon-button disabled tooltipped tooltipped-w" href="#"
+ aria-label="You must be signed in to make or propose changes"><span class="octicon octicon-pencil"></span></a>
+
+ <a class="octicon-button danger disabled tooltipped tooltipped-w" href="#"
+ aria-label="You must be signed in to make or propose changes">
+ <span class="octicon octicon-trashcan"></span>
+ </a>
+ </div><!-- /.actions -->
+ </div>
+
+ <div id="readme" class="blob instapaper_body">
+ <article class="markdown-body entry-content" itemprop="mainContentOfPage"><h1>
+<a id="user-content-bootstrap-tags-input-" class="anchor" href="#bootstrap-tags-input-" aria-hidden="true"><span class="octicon octicon-link"></span></a>Bootstrap Tags Input <a href="https://travis-ci.org/TimSchlechter/bootstrap-tagsinput"><img src="https://camo.githubusercontent.com/2d02546931244241329b98071825212a0d77dd4e/68747470733a2f2f7472617669732d63692e6f72672f54696d5363686c6563687465722f626f6f7473747261702d74616773696e7075742e7376673f6272616e63683d6d6173746572" alt="Build Status" data-canonical-src="https://travis-ci.org/TimSchlechter/bootstrap-tagsinput.svg?branch=master" style="max-width:100%;"></a>
+</h1>
+
+<p>Bootstrap Tags Input is a jQuery plugin providing a Twitter Bootstrap user interface for managing tags.</p>
+
+<h2>
+<a id="user-content-usage" class="anchor" href="#usage" aria-hidden="true"><span class="octicon octicon-link"></span></a>Usage</h2>
+
+<p>Examples can be found <a href="http://timschlechter.github.com/bootstrap-tagsinput/examples/">here</a>.</p>
+
+<h2>
+<a id="user-content-features" class="anchor" href="#features" aria-hidden="true"><span class="octicon octicon-link"></span></a>Features</h2>
+
+<ul class="task-list">
+<li>Objects as tags</li>
+<li>True multi value</li>
+<li>Typeahead</li>
+<li>Designed for Bootstrap 2.3.2 and 3</li>
+</ul>
+
+<h3>
+<a id="user-content-objects-as-tags" class="anchor" href="#objects-as-tags" aria-hidden="true"><span class="octicon octicon-link"></span></a>Objects as tags</h3>
+
+<p>Not just support for using strings! This means you can use different values
+for a tag's label and value. Each tag also holds a reference to the object
+by which it was created, so by calling <code>tagsinput('items')</code> an
+array of the original items is returned.</p>
+
+<h3>
+<a id="user-content-true-multi-value-support" class="anchor" href="#true-multi-value-support" aria-hidden="true"><span class="octicon octicon-link"></span></a>True multi value support</h3>
+
+<p>Other implementations just concatenate the values to a comma separated string.
+This results in <code>val()</code> returning just this string, and when
+submitting the form, only one big, concatenated value is sent in the request.</p>
+
+<p>Bootstrap Tags Input provides true multivalue support. Just use a
+<code>&lt;select multiple /&gt;</code> as your input element, and
+<code>val()</code> will return an array of the tag values. When submitting the
+form, an array of values will be sent with the request.</p>
+
+<h3>
+<a id="user-content-typeahead-support" class="anchor" href="#typeahead-support" aria-hidden="true"><span class="octicon octicon-link"></span></a>Typeahead support</h3>
+
+<p>Integrates with Twitter Bootstraps' 2.3.2 typeahead, or use custom typeahead when using Bootstrap 3.</p>
+
+<h2>
+<a id="user-content-development" class="anchor" href="#development" aria-hidden="true"><span class="octicon octicon-link"></span></a>Development</h2>
+
+<p>Install dependencies:</p>
+
+<pre>
+npm install
+bower install
+</pre>
+
+<p>Test:</p>
+
+<pre>
+grunt test
+</pre>
+
+<p>Build:</p>
+
+<pre>
+grunt build
+</pre>
+
+<h2>
+<a id="user-content-history" class="anchor" href="#history" aria-hidden="true"><span class="octicon octicon-link"></span></a>History</h2>
+
+<ul class="task-list">
+<li>0.4
+
+<ul class="task-list">
+<li><a href="https://github.com/TimSchlechter/bootstrap-tagsinput/pull/73">Fix typeahead when using Bootstrap 3</a></li>
+</ul>
+</li>
+<li>0.3.13
+
+<ul class="task-list">
+<li> <a href="https://github.com/TimSchlechter/bootstrap-tagsinput/issues/5">#5: Trigger events on original input/select</a>
+</li>
+<li> Loads of fixes merged with help of @janvt, @rlidwka and @kuraga: thanks for helping me out!</li>
+</ul>
+</li>
+<li>0.3.9
+
+<ul class="task-list">
+<li> <a href="https://github.com/TimSchlechter/bootstrap-tagsinput/issues/48">#48: Type ahead stops when entering second character</a>
+</li>
+</ul>
+</li>
+<li>0.3.8
+
+<ul class="task-list">
+<li> <a href="https://github.com/TimSchlechter/bootstrap-tagsinput/pull/43">#43: Add support for placeholder</a>
+</li>
+<li> <a href="https://github.com/TimSchlechter/bootstrap-tagsinput/pull/46">#46: ie 8 compatibility, replace indexOf method</a>
+</li>
+</ul>
+</li>
+<li>0.3.7
+
+<ul class="task-list">
+<li> <a href="https://github.com/TimSchlechter/bootstrap-tagsinput/issues/39">#39: flash when duplicate is entered</a>
+</li>
+</ul>
+</li>
+<li>0.3.6
+
+<ul class="task-list">
+<li> <a href="https://github.com/TimSchlechter/bootstrap-tagsinput/issues/34">#34: Error in ReloadPage</a>
+</li>
+</ul>
+</li>
+<li>0.3.5
+
+<ul class="task-list">
+<li> <a href="https://github.com/TimSchlechter/bootstrap-tagsinput/issues/10">#10: confirmKeys option</a>
+</li>
+</ul>
+</li>
+<li>0.3.4
+
+<ul class="task-list">
+<li> <a href="https://github.com/TimSchlechter/bootstrap-tagsinput/pull/24">#24: Add bsTagsInput angular directive &amp; example for bootstrap3 with typeahea...</a>
+</li>
+<li> <a href="https://github.com/TimSchlechter/bootstrap-tagsinput/pull/28">#28: Limit number of tags, enable/disable input</a>
+</li>
+<li> <a href="https://github.com/TimSchlechter/bootstrap-tagsinput/pull/33">#33: Avoid conflict with other selects when checking for value presence</a>
+</li>
+</ul>
+</li>
+</ul>
+
+<h2>
+<a id="user-content-license" class="anchor" href="#license" aria-hidden="true"><span class="octicon octicon-link"></span></a>License</h2>
+
+<p>This project is licensed under <a href="https://raw.github.com/TimSchlechter/bootstrap-tagsinput/master/LICENSE" title="Read more about the MIT license">MIT</a>.</p>
+</article>
+ </div>
+
+ </div>
+</div>
+
+<a href="#jump-to-line" rel="facebox[.linejump]" data-hotkey="l" style="display:none">Jump to Line</a>
+<div id="jump-to-line" style="display:none">
+ <form accept-charset="UTF-8" class="js-jump-to-line-form">
+ <input class="linejump-input js-jump-to-line-field" type="text" placeholder="Jump to line&hellip;" autofocus>
+ <button type="submit" class="button">Go</button>
+ </form>
+</div>
+
+ </div>
+
+ </div><!-- /.repo-container -->
+ <div class="modal-backdrop"></div>
+ </div><!-- /.container -->
+ </div><!-- /.site -->
+
+
+ </div><!-- /.wrapper -->
+
+ <div class="container">
+ <div class="site-footer" role="contentinfo">
+ <ul class="site-footer-links right">
+ <li><a href="https://status.github.com/">Status</a></li>
+ <li><a href="https://developer.github.com">API</a></li>
+ <li><a href="http://training.github.com">Training</a></li>
+ <li><a href="http://shop.github.com">Shop</a></li>
+ <li><a href="/blog">Blog</a></li>
+ <li><a href="/about">About</a></li>
+
+ </ul>
+
+ <a href="/" aria-label="Homepage">
+ <span class="mega-octicon octicon-mark-github" title="GitHub"></span>
+ </a>
+
+ <ul class="site-footer-links">
+ <li>&copy; 2014 <span title="0.02664s from github-fe122-cp1-prd.iad.github.net">GitHub</span>, Inc.</li>
+ <li><a href="/site/terms">Terms</a></li>
+ <li><a href="/site/privacy">Privacy</a></li>
+ <li><a href="/security">Security</a></li>
+ <li><a href="/contact">Contact</a></li>
+ </ul>
+ </div><!-- /.site-footer -->
+</div><!-- /.container -->
+
+
+ <div class="fullscreen-overlay js-fullscreen-overlay" id="fullscreen_overlay">
+ <div class="fullscreen-container js-suggester-container">
+ <div class="textarea-wrap">
+ <textarea name="fullscreen-contents" id="fullscreen-contents" class="fullscreen-contents js-fullscreen-contents" placeholder=""></textarea>
+ <div class="suggester-container">
+ <div class="suggester fullscreen-suggester js-suggester js-navigation-container"></div>
+ </div>
+ </div>
+ </div>
+ <div class="fullscreen-sidebar">
+ <a href="#" class="exit-fullscreen js-exit-fullscreen tooltipped tooltipped-w" aria-label="Exit Zen Mode">
+ <span class="mega-octicon octicon-screen-normal"></span>
+ </a>
+ <a href="#" class="theme-switcher js-theme-switcher tooltipped tooltipped-w"
+ aria-label="Switch themes">
+ <span class="octicon octicon-color-mode"></span>
+ </a>
+ </div>
+</div>
+
+
+
+ <div id="ajax-error-message" class="flash flash-error">
+ <span class="octicon octicon-alert"></span>
+ <a href="#" class="octicon octicon-x flash-close js-ajax-error-dismiss" aria-label="Dismiss error"></a>
+ Something went wrong with that request. Please try again.
+ </div>
+
+
+ <script crossorigin="anonymous" src="https://assets-cdn.github.com/assets/frameworks-fc447938e306b7b2c26a33cfee9dfda9052aeb1aa6ad84b72f1b35fd008efe9e.js" type="text/javascript"></script>
+ <script async="async" crossorigin="anonymous" src="https://assets-cdn.github.com/assets/github-56c56f7fe2ed90ca50b9eefebccd56f3b9729a85d7ba17f0f9c9ebd02f20a7e3.js" type="text/javascript"></script>
+
+
+ </body>
+</html>
+
diff --git a/library/bootstrap-tagsinput/bootstrap-tagsinput.css b/library/bootstrap-tagsinput/bootstrap-tagsinput.css
new file mode 100644
index 000000000..55f7c09df
--- /dev/null
+++ b/library/bootstrap-tagsinput/bootstrap-tagsinput.css
@@ -0,0 +1,46 @@
+.bootstrap-tagsinput {
+ background-color: #fff;
+ border: 1px solid #ccc;
+ box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
+ display: inline-block;
+ padding: 4px 6px;
+ margin-bottom: 10px;
+ color: #555;
+ vertical-align: middle;
+ border-radius: 4px;
+ max-width: 100%;
+ line-height: 22px;
+ cursor: text;
+}
+.bootstrap-tagsinput input {
+ border: none;
+ box-shadow: none;
+ outline: none;
+ background-color: transparent;
+ padding: 0;
+ margin: 0;
+ width: auto !important;
+ max-width: inherit;
+}
+.bootstrap-tagsinput input:focus {
+ border: none;
+ box-shadow: none;
+}
+.bootstrap-tagsinput .tag {
+ margin-right: 2px;
+ color: white;
+}
+.bootstrap-tagsinput .tag [data-role="remove"] {
+ margin-left: 8px;
+ cursor: pointer;
+}
+.bootstrap-tagsinput .tag [data-role="remove"]:after {
+ content: "x";
+ padding: 0px 2px;
+}
+.bootstrap-tagsinput .tag [data-role="remove"]:hover {
+ box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.2), 0 1px 2px rgba(0, 0, 0, 0.05);
+}
+.bootstrap-tagsinput .tag [data-role="remove"]:hover:active {
+ box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);
+}
diff --git a/library/bootstrap-tagsinput/bootstrap-tagsinput.js b/library/bootstrap-tagsinput/bootstrap-tagsinput.js
new file mode 100644
index 000000000..89cc3b5a4
--- /dev/null
+++ b/library/bootstrap-tagsinput/bootstrap-tagsinput.js
@@ -0,0 +1,643 @@
+(function ($) {
+ "use strict";
+
+ var defaultOptions = {
+ tagClass: function(item) {
+ return 'label label-info';
+ },
+ itemValue: function(item) {
+ return item ? item.toString() : item;
+ },
+ itemText: function(item) {
+ return this.itemValue(item);
+ },
+ freeInput: true,
+ addOnBlur: true,
+ maxTags: undefined,
+ maxChars: undefined,
+ confirmKeys: [13, 44],
+ onTagExists: function(item, $tag) {
+ $tag.hide().fadeIn();
+ },
+ trimValue: false,
+ allowDuplicates: false
+ };
+
+ /**
+ * Constructor function
+ */
+ function TagsInput(element, options) {
+ this.itemsArray = [];
+
+ this.$element = $(element);
+ this.$element.hide();
+
+ this.isSelect = (element.tagName === 'SELECT');
+ this.multiple = (this.isSelect && element.hasAttribute('multiple'));
+ this.objectItems = options && options.itemValue;
+ this.placeholderText = element.hasAttribute('placeholder') ? this.$element.attr('placeholder') : '';
+ this.inputSize = Math.max(1, this.placeholderText.length);
+
+ this.$container = $('<div class="bootstrap-tagsinput"></div>');
+ this.$input = $('<input type="text" placeholder="' + this.placeholderText + '"/>').appendTo(this.$container);
+
+ this.$element.after(this.$container);
+
+ var inputWidth = (this.inputSize < 3 ? 3 : this.inputSize) + "em";
+ this.$input.get(0).style.cssText = "width: " + inputWidth + " !important;";
+ this.build(options);
+ }
+
+ TagsInput.prototype = {
+ constructor: TagsInput,
+
+ /**
+ * Adds the given item as a new tag. Pass true to dontPushVal to prevent
+ * updating the elements val()
+ */
+ add: function(item, dontPushVal) {
+ var self = this;
+
+ if (self.options.maxTags && self.itemsArray.length >= self.options.maxTags)
+ return;
+
+ // Ignore falsey values, except false
+ if (item !== false && !item)
+ return;
+
+ // Trim value
+ if (typeof item === "string" && self.options.trimValue) {
+ item = $.trim(item);
+ }
+
+ // Throw an error when trying to add an object while the itemValue option was not set
+ if (typeof item === "object" && !self.objectItems)
+ throw("Can't add objects when itemValue option is not set");
+
+ // Ignore strings only containg whitespace
+ if (item.toString().match(/^\s*$/))
+ return;
+
+ // If SELECT but not multiple, remove current tag
+ if (self.isSelect && !self.multiple && self.itemsArray.length > 0)
+ self.remove(self.itemsArray[0]);
+
+ if (typeof item === "string" && this.$element[0].tagName === 'INPUT') {
+ var items = item.split(',');
+ if (items.length > 1) {
+ for (var i = 0; i < items.length; i++) {
+ this.add(items[i], true);
+ }
+
+ if (!dontPushVal)
+ self.pushVal();
+ return;
+ }
+ }
+
+ // raise beforeItemAdd arg
+ var beforeItemAddEvent = $.Event('beforeItemAdd', { item: item, cancel: false });
+ self.$element.trigger(beforeItemAddEvent);
+ if (beforeItemAddEvent.cancel)
+ return;
+
+ item = beforeItemAddEvent.item
+
+ var itemValue = self.options.itemValue(item),
+ itemText = self.options.itemText(item),
+ tagClass = self.options.tagClass(item);
+
+ // Ignore items allready added
+ var existing = $.grep(self.itemsArray, function(item) { return self.options.itemValue(item) === itemValue; } )[0];
+ if (existing && !self.options.allowDuplicates) {
+ // Invoke onTagExists
+ if (self.options.onTagExists) {
+ var $existingTag = $(".tag", self.$container).filter(function() { return $(this).data("item") === existing; });
+ self.options.onTagExists(item, $existingTag);
+ }
+ return;
+ }
+
+ // if length greater than limit
+ if (self.items().toString().length + item.length + 1 > self.options.maxInputLength)
+ return;
+
+ // register item in internal array and map
+ self.itemsArray.push(item);
+
+ //remove placeholder if there is an item, restore if no item(s)
+ if (self.itemsArray.length)
+ self.$input.attr('placeholder', '');
+ else
+ self.$input.attr('placeholder', self.placeholderText);
+
+ // add a tag element
+ var $tag = $('<span class="tag ' + htmlEncode(tagClass) + '">' + htmlEncode(itemText) + '<span data-role="remove"></span></span>');
+ $tag.data('item', item);
+ self.findInputWrapper().before($tag);
+ $tag.after(' ');
+
+ // add <option /> if item represents a value not present in one of the <select />'s options
+ if (self.isSelect && !$('option[value="' + encodeURIComponent(itemValue) + '"]',self.$element)[0]) {
+ var $option = $('<option selected>' + htmlEncode(itemText) + '</option>');
+ $option.data('item', item);
+ $option.attr('value', itemValue);
+ self.$element.append($option);
+ }
+
+ //remove placeholder if there is an item, restore if no item(s)
+ if (self.itemsArray.length)
+ self.$input.attr('placeholder', '');
+ else
+ self.$input.attr('placeholder', self.placeholderText);
+
+ if (!dontPushVal)
+ self.pushVal();
+
+ // Add class when reached maxTags
+ if (self.options.maxTags === self.itemsArray.length || self.items().toString().length === self.options.maxInputLength)
+ self.$container.addClass('bootstrap-tagsinput-max');
+
+ self.$element.trigger($.Event('itemAdded', { item: item }));
+ },
+
+ /**
+ * Removes the given item. Pass true to dontPushVal to prevent updating the
+ * elements val()
+ */
+ remove: function(item, dontPushVal) {
+ var self = this;
+
+ if (self.objectItems) {
+ if (typeof item === "object")
+ item = $.grep(self.itemsArray, function(other) { return self.options.itemValue(other) == self.options.itemValue(item); } );
+ else
+ item = $.grep(self.itemsArray, function(other) { return self.options.itemValue(other) == item; } );
+
+ item = item[item.length-1];
+ }
+
+ if (item) {
+ var beforeItemRemoveEvent = $.Event('beforeItemRemove', { item: item, cancel: false });
+ self.$element.trigger(beforeItemRemoveEvent);
+ if (beforeItemRemoveEvent.cancel)
+ return;
+
+ $('.tag', self.$container).filter(function() { return $(this).data('item') === item; }).remove();
+ $('option', self.$element).filter(function() { return $(this).data('item') === item; }).remove();
+ if($.inArray(item, self.itemsArray) !== -1)
+ self.itemsArray.splice($.inArray(item, self.itemsArray), 1);
+ }
+
+ //remove placeholder if there is an item, restore if no item(s)
+ if (self.itemsArray.length)
+ self.$input.attr('placeholder', '');
+ else
+ self.$input.attr('placeholder', self.placeholderText);
+
+ if (!dontPushVal)
+ self.pushVal();
+
+ // Remove class when reached maxTags
+ if (self.options.maxTags > self.itemsArray.length)
+ self.$container.removeClass('bootstrap-tagsinput-max');
+
+ self.$element.trigger($.Event('itemRemoved', { item: item }));
+ },
+
+ /**
+ * Removes all items
+ */
+ removeAll: function() {
+ var self = this;
+
+ $('.tag', self.$container).remove();
+ $('option', self.$element).remove();
+
+ while(self.itemsArray.length > 0)
+ self.itemsArray.pop();
+
+ //remove placeholder if there is an item, restore if no item(s)
+ if (self.itemsArray.length)
+ self.$input.attr('placeholder', '');
+ else
+ self.$input.attr('placeholder', self.placeholderText);
+
+ self.pushVal();
+ },
+
+ /**
+ * Refreshes the tags so they match the text/value of their corresponding
+ * item.
+ */
+ refresh: function() {
+ var self = this;
+ $('.tag', self.$container).each(function() {
+ var $tag = $(this),
+ item = $tag.data('item'),
+ itemValue = self.options.itemValue(item),
+ itemText = self.options.itemText(item),
+ tagClass = self.options.tagClass(item);
+
+ // Update tag's class and inner text
+ $tag.attr('class', null);
+ $tag.addClass('tag ' + htmlEncode(tagClass));
+ $tag.contents().filter(function() {
+ return this.nodeType == 3;
+ })[0].nodeValue = htmlEncode(itemText);
+
+ if (self.isSelect) {
+ var option = $('option', self.$element).filter(function() { return $(this).data('item') === item; });
+ option.attr('value', itemValue);
+ }
+ });
+ },
+
+ /**
+ * Returns the items added as tags
+ */
+ items: function() {
+ return this.itemsArray;
+ },
+
+ /**
+ * Assembly value by retrieving the value of each item, and set it on the
+ * element.
+ */
+ pushVal: function() {
+ var self = this,
+ val = $.map(self.items(), function(item) {
+ return self.options.itemValue(item).toString();
+ });
+
+ self.$element.val(val, true).trigger('change');
+ },
+
+ /**
+ * Initializes the tags input behaviour on the element
+ */
+ build: function(options) {
+ var self = this;
+
+ self.options = $.extend({}, defaultOptions, options);
+ // When itemValue is set, freeInput should always be false
+ if (self.objectItems)
+ self.options.freeInput = false;
+
+ makeOptionItemFunction(self.options, 'itemValue');
+ makeOptionItemFunction(self.options, 'itemText');
+ makeOptionFunction(self.options, 'tagClass');
+
+ // Typeahead Bootstrap version 2.3.2
+ if (self.options.typeahead) {
+ var typeahead = self.options.typeahead || {};
+
+ makeOptionFunction(typeahead, 'source');
+
+ self.$input.typeahead($.extend({}, typeahead, {
+ source: function (query, process) {
+ function processItems(items) {
+ var texts = [];
+
+ for (var i = 0; i < items.length; i++) {
+ var text = self.options.itemText(items[i]);
+ map[text] = items[i];
+ texts.push(text);
+ }
+ process(texts);
+ }
+
+ this.map = {};
+ var map = this.map,
+ data = typeahead.source(query);
+
+ if ($.isFunction(data.success)) {
+ // support for Angular callbacks
+ data.success(processItems);
+ } else if ($.isFunction(data.then)) {
+ // support for Angular promises
+ data.then(processItems);
+ } else {
+ // support for functions and jquery promises
+ $.when(data)
+ .then(processItems);
+ }
+ },
+ updater: function (text) {
+ self.add(this.map[text]);
+ },
+ matcher: function (text) {
+ return (text.toLowerCase().indexOf(this.query.trim().toLowerCase()) !== -1);
+ },
+ sorter: function (texts) {
+ return texts.sort();
+ },
+ highlighter: function (text) {
+ var regex = new RegExp( '(' + this.query + ')', 'gi' );
+ return text.replace( regex, "<strong>$1</strong>" );
+ }
+ }));
+ }
+
+ // typeahead.js
+ if (self.options.typeaheadjs) {
+ var typeaheadjs = self.options.typeaheadjs || {};
+
+ self.$input.typeahead(null, typeaheadjs).on('typeahead:selected', $.proxy(function (obj, datum) {
+ if (typeaheadjs.valueKey)
+ self.add(datum[typeaheadjs.valueKey]);
+ else
+ self.add(datum);
+ self.$input.typeahead('val', '');
+ }, self));
+ }
+
+ self.$container.on('click', $.proxy(function(event) {
+ if (! self.$element.attr('disabled')) {
+ self.$input.removeAttr('disabled');
+ }
+ self.$input.focus();
+ }, self));
+
+ if (self.options.addOnBlur && self.options.freeInput) {
+ self.$input.on('focusout', $.proxy(function(event) {
+ // HACK: only process on focusout when no typeahead opened, to
+ // avoid adding the typeahead text as tag
+ if ($('.typeahead, .twitter-typeahead', self.$container).length === 0) {
+ self.add(self.$input.val());
+ self.$input.val('');
+ }
+ }, self));
+ }
+
+
+ self.$container.on('keydown', 'input', $.proxy(function(event) {
+ var $input = $(event.target),
+ $inputWrapper = self.findInputWrapper();
+
+ if (self.$element.attr('disabled')) {
+ self.$input.attr('disabled', 'disabled');
+ return;
+ }
+
+ switch (event.which) {
+ // BACKSPACE
+ case 8:
+ if (doGetCaretPosition($input[0]) === 0) {
+ var prev = $inputWrapper.prev();
+ if (prev) {
+ self.remove(prev.data('item'));
+ }
+ }
+ break;
+
+ // DELETE
+ case 46:
+ if (doGetCaretPosition($input[0]) === 0) {
+ var next = $inputWrapper.next();
+ if (next) {
+ self.remove(next.data('item'));
+ }
+ }
+ break;
+
+ // LEFT ARROW
+ case 37:
+ // Try to move the input before the previous tag
+ var $prevTag = $inputWrapper.prev();
+ if ($input.val().length === 0 && $prevTag[0]) {
+ $prevTag.before($inputWrapper);
+ $input.focus();
+ }
+ break;
+ // RIGHT ARROW
+ case 39:
+ // Try to move the input after the next tag
+ var $nextTag = $inputWrapper.next();
+ if ($input.val().length === 0 && $nextTag[0]) {
+ $nextTag.after($inputWrapper);
+ $input.focus();
+ }
+ break;
+ default:
+ // ignore
+ }
+
+ // Reset internal input's size
+ var textLength = $input.val().length,
+ wordSpace = Math.ceil(textLength / 5),
+ size = textLength + wordSpace + 1;
+ $input.attr('size', Math.max(this.inputSize, $input.val().length));
+ }, self));
+
+ self.$container.on('keypress', 'input', $.proxy(function(event) {
+ var $input = $(event.target);
+
+ if (self.$element.attr('disabled')) {
+ self.$input.attr('disabled', 'disabled');
+ return;
+ }
+
+ var text = $input.val(),
+ maxLengthReached = self.options.maxChars && text.length >= self.options.maxChars;
+ if (self.options.freeInput && (keyCombinationInList(event, self.options.confirmKeys) || maxLengthReached)) {
+ self.add(maxLengthReached ? text.substr(0, self.options.maxChars) : text);
+ $input.val('');
+ event.preventDefault();
+ }
+
+ // Reset internal input's size
+ var textLength = $input.val().length,
+ wordSpace = Math.ceil(textLength / 5),
+ size = textLength + wordSpace + 1;
+ $input.attr('size', Math.max(this.inputSize, $input.val().length));
+ }, self));
+
+ // Remove icon clicked
+ self.$container.on('click', '[data-role=remove]', $.proxy(function(event) {
+ if (self.$element.attr('disabled')) {
+ return;
+ }
+ self.remove($(event.target).closest('.tag').data('item'));
+ }, self));
+
+ // Only add existing value as tags when using strings as tags
+ if (self.options.itemValue === defaultOptions.itemValue) {
+ if (self.$element[0].tagName === 'INPUT') {
+ self.add(self.$element.val());
+ } else {
+ $('option', self.$element).each(function() {
+ self.add($(this).attr('value'), true);
+ });
+ }
+ }
+ },
+
+ /**
+ * Removes all tagsinput behaviour and unregsiter all event handlers
+ */
+ destroy: function() {
+ var self = this;
+
+ // Unbind events
+ self.$container.off('keypress', 'input');
+ self.$container.off('click', '[role=remove]');
+
+ self.$container.remove();
+ self.$element.removeData('tagsinput');
+ self.$element.show();
+ },
+
+ /**
+ * Sets focus on the tagsinput
+ */
+ focus: function() {
+ this.$input.focus();
+ },
+
+ /**
+ * Returns the internal input element
+ */
+ input: function() {
+ return this.$input;
+ },
+
+ /**
+ * Returns the element which is wrapped around the internal input. This
+ * is normally the $container, but typeahead.js moves the $input element.
+ */
+ findInputWrapper: function() {
+ var elt = this.$input[0],
+ container = this.$container[0];
+ while(elt && elt.parentNode !== container)
+ elt = elt.parentNode;
+
+ return $(elt);
+ }
+ };
+
+ /**
+ * Register JQuery plugin
+ */
+ $.fn.tagsinput = function(arg1, arg2) {
+ var results = [];
+
+ this.each(function() {
+ var tagsinput = $(this).data('tagsinput');
+ // Initialize a new tags input
+ if (!tagsinput) {
+ tagsinput = new TagsInput(this, arg1);
+ $(this).data('tagsinput', tagsinput);
+ results.push(tagsinput);
+
+ if (this.tagName === 'SELECT') {
+ $('option', $(this)).attr('selected', 'selected');
+ }
+
+ // Init tags from $(this).val()
+ $(this).val($(this).val());
+ } else if (!arg1 && !arg2) {
+ // tagsinput already exists
+ // no function, trying to init
+ results.push(tagsinput);
+ } else if(tagsinput[arg1] !== undefined) {
+ // Invoke function on existing tags input
+ var retVal = tagsinput[arg1](arg2);
+ if (retVal !== undefined)
+ results.push(retVal);
+ }
+ });
+
+ if ( typeof arg1 == 'string') {
+ // Return the results from the invoked function calls
+ return results.length > 1 ? results : results[0];
+ } else {
+ return results;
+ }
+ };
+
+ $.fn.tagsinput.Constructor = TagsInput;
+
+ /**
+ * Most options support both a string or number as well as a function as
+ * option value. This function makes sure that the option with the given
+ * key in the given options is wrapped in a function
+ */
+ function makeOptionItemFunction(options, key) {
+ if (typeof options[key] !== 'function') {
+ var propertyName = options[key];
+ options[key] = function(item) { return item[propertyName]; };
+ }
+ }
+ function makeOptionFunction(options, key) {
+ if (typeof options[key] !== 'function') {
+ var value = options[key];
+ options[key] = function() { return value; };
+ }
+ }
+ /**
+ * HtmlEncodes the given value
+ */
+ var htmlEncodeContainer = $('<div />');
+ function htmlEncode(value) {
+ if (value) {
+ return htmlEncodeContainer.text(value).html();
+ } else {
+ return '';
+ }
+ }
+
+ /**
+ * Returns the position of the caret in the given input field
+ * http://flightschool.acylt.com/devnotes/caret-position-woes/
+ */
+ function doGetCaretPosition(oField) {
+ var iCaretPos = 0;
+ if (document.selection) {
+ oField.focus ();
+ var oSel = document.selection.createRange();
+ oSel.moveStart ('character', -oField.value.length);
+ iCaretPos = oSel.text.length;
+ } else if (oField.selectionStart || oField.selectionStart == '0') {
+ iCaretPos = oField.selectionStart;
+ }
+ return (iCaretPos);
+ }
+
+ /**
+ * Returns boolean indicates whether user has pressed an expected key combination.
+ * @param object keyPressEvent: JavaScript event object, refer
+ * http://www.w3.org/TR/2003/WD-DOM-Level-3-Events-20030331/ecma-script-binding.html
+ * @param object lookupList: expected key combinations, as in:
+ * [13, {which: 188, shiftKey: true}]
+ */
+ function keyCombinationInList(keyPressEvent, lookupList) {
+ var found = false;
+ $.each(lookupList, function (index, keyCombination) {
+ if (typeof (keyCombination) === 'number' && keyPressEvent.which === keyCombination) {
+ found = true;
+ return false;
+ }
+
+ if (keyPressEvent.which === keyCombination.which) {
+ var alt = !keyCombination.hasOwnProperty('altKey') || keyPressEvent.altKey === keyCombination.altKey,
+ shift = !keyCombination.hasOwnProperty('shiftKey') || keyPressEvent.shiftKey === keyCombination.shiftKey,
+ ctrl = !keyCombination.hasOwnProperty('ctrlKey') || keyPressEvent.ctrlKey === keyCombination.ctrlKey;
+ if (alt && shift && ctrl) {
+ found = true;
+ return false;
+ }
+ }
+ });
+
+ return found;
+ }
+
+ /**
+ * Initialize tagsinput behaviour on inputs and selects which have
+ * data-role=tagsinput
+ */
+ $(function() {
+ $("input[data-role=tagsinput], select[multiple][data-role=tagsinput]").tagsinput();
+ });
+})(window.jQuery);
diff --git a/library/bootstrap/css/bootstrap-theme.css b/library/bootstrap/css/bootstrap-theme.css
index a4069929b..c4cadf15e 100644
--- a/library/bootstrap/css/bootstrap-theme.css
+++ b/library/bootstrap/css/bootstrap-theme.css
@@ -1,5 +1,5 @@
/*!
- * Bootstrap v3.1.1 (http://getbootstrap.com)
+ * Bootstrap v3.3.1 (http://getbootstrap.com)
* Copyright 2011-2014 Twitter, Inc.
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
*/
@@ -29,6 +29,14 @@
-webkit-box-shadow: inset 0 3px 5px rgba(0, 0, 0, .125);
box-shadow: inset 0 3px 5px rgba(0, 0, 0, .125);
}
+.btn-default .badge,
+.btn-primary .badge,
+.btn-success .badge,
+.btn-info .badge,
+.btn-warning .badge,
+.btn-danger .badge {
+ text-shadow: none;
+}
.btn:active,
.btn.active {
background-image: none;
@@ -36,6 +44,8 @@
.btn-default {
text-shadow: 0 1px 0 #fff;
background-image: -webkit-linear-gradient(top, #fff 0%, #e0e0e0 100%);
+ background-image: -o-linear-gradient(top, #fff 0%, #e0e0e0 100%);
+ background-image: -webkit-gradient(linear, left top, left bottom, from(#fff), to(#e0e0e0));
background-image: linear-gradient(to bottom, #fff 0%, #e0e0e0 100%);
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffffff', endColorstr='#ffe0e0e0', GradientType=0);
filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);
@@ -53,26 +63,40 @@
background-color: #e0e0e0;
border-color: #dbdbdb;
}
+.btn-default:disabled,
+.btn-default[disabled] {
+ background-color: #e0e0e0;
+ background-image: none;
+}
.btn-primary {
- background-image: -webkit-linear-gradient(top, #428bca 0%, #2d6ca2 100%);
- background-image: linear-gradient(to bottom, #428bca 0%, #2d6ca2 100%);
- filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff428bca', endColorstr='#ff2d6ca2', GradientType=0);
+ background-image: -webkit-linear-gradient(top, #337ab7 0%, #265a88 100%);
+ background-image: -o-linear-gradient(top, #337ab7 0%, #265a88 100%);
+ background-image: -webkit-gradient(linear, left top, left bottom, from(#337ab7), to(#265a88));
+ background-image: linear-gradient(to bottom, #337ab7 0%, #265a88 100%);
+ filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff337ab7', endColorstr='#ff265a88', GradientType=0);
filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);
background-repeat: repeat-x;
- border-color: #2b669a;
+ border-color: #245580;
}
.btn-primary:hover,
.btn-primary:focus {
- background-color: #2d6ca2;
+ background-color: #265a88;
background-position: 0 -15px;
}
.btn-primary:active,
.btn-primary.active {
- background-color: #2d6ca2;
- border-color: #2b669a;
+ background-color: #265a88;
+ border-color: #245580;
+}
+.btn-primary:disabled,
+.btn-primary[disabled] {
+ background-color: #265a88;
+ background-image: none;
}
.btn-success {
background-image: -webkit-linear-gradient(top, #5cb85c 0%, #419641 100%);
+ background-image: -o-linear-gradient(top, #5cb85c 0%, #419641 100%);
+ background-image: -webkit-gradient(linear, left top, left bottom, from(#5cb85c), to(#419641));
background-image: linear-gradient(to bottom, #5cb85c 0%, #419641 100%);
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5cb85c', endColorstr='#ff419641', GradientType=0);
filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);
@@ -89,8 +113,15 @@
background-color: #419641;
border-color: #3e8f3e;
}
+.btn-success:disabled,
+.btn-success[disabled] {
+ background-color: #419641;
+ background-image: none;
+}
.btn-info {
background-image: -webkit-linear-gradient(top, #5bc0de 0%, #2aabd2 100%);
+ background-image: -o-linear-gradient(top, #5bc0de 0%, #2aabd2 100%);
+ background-image: -webkit-gradient(linear, left top, left bottom, from(#5bc0de), to(#2aabd2));
background-image: linear-gradient(to bottom, #5bc0de 0%, #2aabd2 100%);
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5bc0de', endColorstr='#ff2aabd2', GradientType=0);
filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);
@@ -107,8 +138,15 @@
background-color: #2aabd2;
border-color: #28a4c9;
}
+.btn-info:disabled,
+.btn-info[disabled] {
+ background-color: #2aabd2;
+ background-image: none;
+}
.btn-warning {
background-image: -webkit-linear-gradient(top, #f0ad4e 0%, #eb9316 100%);
+ background-image: -o-linear-gradient(top, #f0ad4e 0%, #eb9316 100%);
+ background-image: -webkit-gradient(linear, left top, left bottom, from(#f0ad4e), to(#eb9316));
background-image: linear-gradient(to bottom, #f0ad4e 0%, #eb9316 100%);
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff0ad4e', endColorstr='#ffeb9316', GradientType=0);
filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);
@@ -125,8 +163,15 @@
background-color: #eb9316;
border-color: #e38d13;
}
+.btn-warning:disabled,
+.btn-warning[disabled] {
+ background-color: #eb9316;
+ background-image: none;
+}
.btn-danger {
background-image: -webkit-linear-gradient(top, #d9534f 0%, #c12e2a 100%);
+ background-image: -o-linear-gradient(top, #d9534f 0%, #c12e2a 100%);
+ background-image: -webkit-gradient(linear, left top, left bottom, from(#d9534f), to(#c12e2a));
background-image: linear-gradient(to bottom, #d9534f 0%, #c12e2a 100%);
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd9534f', endColorstr='#ffc12e2a', GradientType=0);
filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);
@@ -143,6 +188,11 @@
background-color: #c12e2a;
border-color: #b92c28;
}
+.btn-danger:disabled,
+.btn-danger[disabled] {
+ background-color: #c12e2a;
+ background-image: none;
+}
.thumbnail,
.img-thumbnail {
-webkit-box-shadow: 0 1px 2px rgba(0, 0, 0, .075);
@@ -152,6 +202,8 @@
.dropdown-menu > li > a:focus {
background-color: #e8e8e8;
background-image: -webkit-linear-gradient(top, #f5f5f5 0%, #e8e8e8 100%);
+ background-image: -o-linear-gradient(top, #f5f5f5 0%, #e8e8e8 100%);
+ background-image: -webkit-gradient(linear, left top, left bottom, from(#f5f5f5), to(#e8e8e8));
background-image: linear-gradient(to bottom, #f5f5f5 0%, #e8e8e8 100%);
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff5f5f5', endColorstr='#ffe8e8e8', GradientType=0);
background-repeat: repeat-x;
@@ -159,14 +211,18 @@
.dropdown-menu > .active > a,
.dropdown-menu > .active > a:hover,
.dropdown-menu > .active > a:focus {
- background-color: #357ebd;
- background-image: -webkit-linear-gradient(top, #428bca 0%, #357ebd 100%);
- background-image: linear-gradient(to bottom, #428bca 0%, #357ebd 100%);
- filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff428bca', endColorstr='#ff357ebd', GradientType=0);
+ background-color: #2e6da4;
+ background-image: -webkit-linear-gradient(top, #337ab7 0%, #2e6da4 100%);
+ background-image: -o-linear-gradient(top, #337ab7 0%, #2e6da4 100%);
+ background-image: -webkit-gradient(linear, left top, left bottom, from(#337ab7), to(#2e6da4));
+ background-image: linear-gradient(to bottom, #337ab7 0%, #2e6da4 100%);
+ filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff337ab7', endColorstr='#ff2e6da4', GradientType=0);
background-repeat: repeat-x;
}
.navbar-default {
background-image: -webkit-linear-gradient(top, #fff 0%, #f8f8f8 100%);
+ background-image: -o-linear-gradient(top, #fff 0%, #f8f8f8 100%);
+ background-image: -webkit-gradient(linear, left top, left bottom, from(#fff), to(#f8f8f8));
background-image: linear-gradient(to bottom, #fff 0%, #f8f8f8 100%);
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffffff', endColorstr='#fff8f8f8', GradientType=0);
filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);
@@ -175,10 +231,13 @@
-webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, .15), 0 1px 5px rgba(0, 0, 0, .075);
box-shadow: inset 0 1px 0 rgba(255, 255, 255, .15), 0 1px 5px rgba(0, 0, 0, .075);
}
+.navbar-default .navbar-nav > .open > a,
.navbar-default .navbar-nav > .active > a {
- background-image: -webkit-linear-gradient(top, #ebebeb 0%, #f3f3f3 100%);
- background-image: linear-gradient(to bottom, #ebebeb 0%, #f3f3f3 100%);
- filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffebebeb', endColorstr='#fff3f3f3', GradientType=0);
+ background-image: -webkit-linear-gradient(top, #dbdbdb 0%, #e2e2e2 100%);
+ background-image: -o-linear-gradient(top, #dbdbdb 0%, #e2e2e2 100%);
+ background-image: -webkit-gradient(linear, left top, left bottom, from(#dbdbdb), to(#e2e2e2));
+ background-image: linear-gradient(to bottom, #dbdbdb 0%, #e2e2e2 100%);
+ filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffdbdbdb', endColorstr='#ffe2e2e2', GradientType=0);
background-repeat: repeat-x;
-webkit-box-shadow: inset 0 3px 9px rgba(0, 0, 0, .075);
box-shadow: inset 0 3px 9px rgba(0, 0, 0, .075);
@@ -189,15 +248,20 @@
}
.navbar-inverse {
background-image: -webkit-linear-gradient(top, #3c3c3c 0%, #222 100%);
+ background-image: -o-linear-gradient(top, #3c3c3c 0%, #222 100%);
+ background-image: -webkit-gradient(linear, left top, left bottom, from(#3c3c3c), to(#222));
background-image: linear-gradient(to bottom, #3c3c3c 0%, #222 100%);
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff3c3c3c', endColorstr='#ff222222', GradientType=0);
filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);
background-repeat: repeat-x;
}
+.navbar-inverse .navbar-nav > .open > a,
.navbar-inverse .navbar-nav > .active > a {
- background-image: -webkit-linear-gradient(top, #222 0%, #282828 100%);
- background-image: linear-gradient(to bottom, #222 0%, #282828 100%);
- filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff222222', endColorstr='#ff282828', GradientType=0);
+ background-image: -webkit-linear-gradient(top, #080808 0%, #0f0f0f 100%);
+ background-image: -o-linear-gradient(top, #080808 0%, #0f0f0f 100%);
+ background-image: -webkit-gradient(linear, left top, left bottom, from(#080808), to(#0f0f0f));
+ background-image: linear-gradient(to bottom, #080808 0%, #0f0f0f 100%);
+ filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff080808', endColorstr='#ff0f0f0f', GradientType=0);
background-repeat: repeat-x;
-webkit-box-shadow: inset 0 3px 9px rgba(0, 0, 0, .25);
box-shadow: inset 0 3px 9px rgba(0, 0, 0, .25);
@@ -211,6 +275,19 @@
.navbar-fixed-bottom {
border-radius: 0;
}
+@media (max-width: 767px) {
+ .navbar .navbar-nav .open .dropdown-menu > .active > a,
+ .navbar .navbar-nav .open .dropdown-menu > .active > a:hover,
+ .navbar .navbar-nav .open .dropdown-menu > .active > a:focus {
+ color: #fff;
+ background-image: -webkit-linear-gradient(top, #337ab7 0%, #2e6da4 100%);
+ background-image: -o-linear-gradient(top, #337ab7 0%, #2e6da4 100%);
+ background-image: -webkit-gradient(linear, left top, left bottom, from(#337ab7), to(#2e6da4));
+ background-image: linear-gradient(to bottom, #337ab7 0%, #2e6da4 100%);
+ filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff337ab7', endColorstr='#ff2e6da4', GradientType=0);
+ background-repeat: repeat-x;
+ }
+}
.alert {
text-shadow: 0 1px 0 rgba(255, 255, 255, .2);
-webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, .25), 0 1px 2px rgba(0, 0, 0, .05);
@@ -218,6 +295,8 @@
}
.alert-success {
background-image: -webkit-linear-gradient(top, #dff0d8 0%, #c8e5bc 100%);
+ background-image: -o-linear-gradient(top, #dff0d8 0%, #c8e5bc 100%);
+ background-image: -webkit-gradient(linear, left top, left bottom, from(#dff0d8), to(#c8e5bc));
background-image: linear-gradient(to bottom, #dff0d8 0%, #c8e5bc 100%);
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffdff0d8', endColorstr='#ffc8e5bc', GradientType=0);
background-repeat: repeat-x;
@@ -225,6 +304,8 @@
}
.alert-info {
background-image: -webkit-linear-gradient(top, #d9edf7 0%, #b9def0 100%);
+ background-image: -o-linear-gradient(top, #d9edf7 0%, #b9def0 100%);
+ background-image: -webkit-gradient(linear, left top, left bottom, from(#d9edf7), to(#b9def0));
background-image: linear-gradient(to bottom, #d9edf7 0%, #b9def0 100%);
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd9edf7', endColorstr='#ffb9def0', GradientType=0);
background-repeat: repeat-x;
@@ -232,6 +313,8 @@
}
.alert-warning {
background-image: -webkit-linear-gradient(top, #fcf8e3 0%, #f8efc0 100%);
+ background-image: -o-linear-gradient(top, #fcf8e3 0%, #f8efc0 100%);
+ background-image: -webkit-gradient(linear, left top, left bottom, from(#fcf8e3), to(#f8efc0));
background-image: linear-gradient(to bottom, #fcf8e3 0%, #f8efc0 100%);
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffcf8e3', endColorstr='#fff8efc0', GradientType=0);
background-repeat: repeat-x;
@@ -239,6 +322,8 @@
}
.alert-danger {
background-image: -webkit-linear-gradient(top, #f2dede 0%, #e7c3c3 100%);
+ background-image: -o-linear-gradient(top, #f2dede 0%, #e7c3c3 100%);
+ background-image: -webkit-gradient(linear, left top, left bottom, from(#f2dede), to(#e7c3c3));
background-image: linear-gradient(to bottom, #f2dede 0%, #e7c3c3 100%);
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff2dede', endColorstr='#ffe7c3c3', GradientType=0);
background-repeat: repeat-x;
@@ -246,40 +331,57 @@
}
.progress {
background-image: -webkit-linear-gradient(top, #ebebeb 0%, #f5f5f5 100%);
+ background-image: -o-linear-gradient(top, #ebebeb 0%, #f5f5f5 100%);
+ background-image: -webkit-gradient(linear, left top, left bottom, from(#ebebeb), to(#f5f5f5));
background-image: linear-gradient(to bottom, #ebebeb 0%, #f5f5f5 100%);
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffebebeb', endColorstr='#fff5f5f5', GradientType=0);
background-repeat: repeat-x;
}
.progress-bar {
- background-image: -webkit-linear-gradient(top, #428bca 0%, #3071a9 100%);
- background-image: linear-gradient(to bottom, #428bca 0%, #3071a9 100%);
- filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff428bca', endColorstr='#ff3071a9', GradientType=0);
+ background-image: -webkit-linear-gradient(top, #337ab7 0%, #286090 100%);
+ background-image: -o-linear-gradient(top, #337ab7 0%, #286090 100%);
+ background-image: -webkit-gradient(linear, left top, left bottom, from(#337ab7), to(#286090));
+ background-image: linear-gradient(to bottom, #337ab7 0%, #286090 100%);
+ filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff337ab7', endColorstr='#ff286090', GradientType=0);
background-repeat: repeat-x;
}
.progress-bar-success {
background-image: -webkit-linear-gradient(top, #5cb85c 0%, #449d44 100%);
+ background-image: -o-linear-gradient(top, #5cb85c 0%, #449d44 100%);
+ background-image: -webkit-gradient(linear, left top, left bottom, from(#5cb85c), to(#449d44));
background-image: linear-gradient(to bottom, #5cb85c 0%, #449d44 100%);
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5cb85c', endColorstr='#ff449d44', GradientType=0);
background-repeat: repeat-x;
}
.progress-bar-info {
background-image: -webkit-linear-gradient(top, #5bc0de 0%, #31b0d5 100%);
+ background-image: -o-linear-gradient(top, #5bc0de 0%, #31b0d5 100%);
+ background-image: -webkit-gradient(linear, left top, left bottom, from(#5bc0de), to(#31b0d5));
background-image: linear-gradient(to bottom, #5bc0de 0%, #31b0d5 100%);
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5bc0de', endColorstr='#ff31b0d5', GradientType=0);
background-repeat: repeat-x;
}
.progress-bar-warning {
background-image: -webkit-linear-gradient(top, #f0ad4e 0%, #ec971f 100%);
+ background-image: -o-linear-gradient(top, #f0ad4e 0%, #ec971f 100%);
+ background-image: -webkit-gradient(linear, left top, left bottom, from(#f0ad4e), to(#ec971f));
background-image: linear-gradient(to bottom, #f0ad4e 0%, #ec971f 100%);
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff0ad4e', endColorstr='#ffec971f', GradientType=0);
background-repeat: repeat-x;
}
.progress-bar-danger {
background-image: -webkit-linear-gradient(top, #d9534f 0%, #c9302c 100%);
+ background-image: -o-linear-gradient(top, #d9534f 0%, #c9302c 100%);
+ background-image: -webkit-gradient(linear, left top, left bottom, from(#d9534f), to(#c9302c));
background-image: linear-gradient(to bottom, #d9534f 0%, #c9302c 100%);
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd9534f', endColorstr='#ffc9302c', GradientType=0);
background-repeat: repeat-x;
}
+.progress-bar-striped {
+ background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent);
+ background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent);
+ background-image: linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent);
+}
.list-group {
border-radius: 4px;
-webkit-box-shadow: 0 1px 2px rgba(0, 0, 0, .075);
@@ -288,12 +390,19 @@
.list-group-item.active,
.list-group-item.active:hover,
.list-group-item.active:focus {
- text-shadow: 0 -1px 0 #3071a9;
- background-image: -webkit-linear-gradient(top, #428bca 0%, #3278b3 100%);
- background-image: linear-gradient(to bottom, #428bca 0%, #3278b3 100%);
- filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff428bca', endColorstr='#ff3278b3', GradientType=0);
+ text-shadow: 0 -1px 0 #286090;
+ background-image: -webkit-linear-gradient(top, #337ab7 0%, #2b669a 100%);
+ background-image: -o-linear-gradient(top, #337ab7 0%, #2b669a 100%);
+ background-image: -webkit-gradient(linear, left top, left bottom, from(#337ab7), to(#2b669a));
+ background-image: linear-gradient(to bottom, #337ab7 0%, #2b669a 100%);
+ filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff337ab7', endColorstr='#ff2b669a', GradientType=0);
background-repeat: repeat-x;
- border-color: #3278b3;
+ border-color: #2b669a;
+}
+.list-group-item.active .badge,
+.list-group-item.active:hover .badge,
+.list-group-item.active:focus .badge {
+ text-shadow: none;
}
.panel {
-webkit-box-shadow: 0 1px 2px rgba(0, 0, 0, .05);
@@ -301,42 +410,56 @@
}
.panel-default > .panel-heading {
background-image: -webkit-linear-gradient(top, #f5f5f5 0%, #e8e8e8 100%);
+ background-image: -o-linear-gradient(top, #f5f5f5 0%, #e8e8e8 100%);
+ background-image: -webkit-gradient(linear, left top, left bottom, from(#f5f5f5), to(#e8e8e8));
background-image: linear-gradient(to bottom, #f5f5f5 0%, #e8e8e8 100%);
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff5f5f5', endColorstr='#ffe8e8e8', GradientType=0);
background-repeat: repeat-x;
}
.panel-primary > .panel-heading {
- background-image: -webkit-linear-gradient(top, #428bca 0%, #357ebd 100%);
- background-image: linear-gradient(to bottom, #428bca 0%, #357ebd 100%);
- filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff428bca', endColorstr='#ff357ebd', GradientType=0);
+ background-image: -webkit-linear-gradient(top, #337ab7 0%, #2e6da4 100%);
+ background-image: -o-linear-gradient(top, #337ab7 0%, #2e6da4 100%);
+ background-image: -webkit-gradient(linear, left top, left bottom, from(#337ab7), to(#2e6da4));
+ background-image: linear-gradient(to bottom, #337ab7 0%, #2e6da4 100%);
+ filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff337ab7', endColorstr='#ff2e6da4', GradientType=0);
background-repeat: repeat-x;
}
.panel-success > .panel-heading {
background-image: -webkit-linear-gradient(top, #dff0d8 0%, #d0e9c6 100%);
+ background-image: -o-linear-gradient(top, #dff0d8 0%, #d0e9c6 100%);
+ background-image: -webkit-gradient(linear, left top, left bottom, from(#dff0d8), to(#d0e9c6));
background-image: linear-gradient(to bottom, #dff0d8 0%, #d0e9c6 100%);
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffdff0d8', endColorstr='#ffd0e9c6', GradientType=0);
background-repeat: repeat-x;
}
.panel-info > .panel-heading {
background-image: -webkit-linear-gradient(top, #d9edf7 0%, #c4e3f3 100%);
+ background-image: -o-linear-gradient(top, #d9edf7 0%, #c4e3f3 100%);
+ background-image: -webkit-gradient(linear, left top, left bottom, from(#d9edf7), to(#c4e3f3));
background-image: linear-gradient(to bottom, #d9edf7 0%, #c4e3f3 100%);
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd9edf7', endColorstr='#ffc4e3f3', GradientType=0);
background-repeat: repeat-x;
}
.panel-warning > .panel-heading {
background-image: -webkit-linear-gradient(top, #fcf8e3 0%, #faf2cc 100%);
+ background-image: -o-linear-gradient(top, #fcf8e3 0%, #faf2cc 100%);
+ background-image: -webkit-gradient(linear, left top, left bottom, from(#fcf8e3), to(#faf2cc));
background-image: linear-gradient(to bottom, #fcf8e3 0%, #faf2cc 100%);
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffcf8e3', endColorstr='#fffaf2cc', GradientType=0);
background-repeat: repeat-x;
}
.panel-danger > .panel-heading {
background-image: -webkit-linear-gradient(top, #f2dede 0%, #ebcccc 100%);
+ background-image: -o-linear-gradient(top, #f2dede 0%, #ebcccc 100%);
+ background-image: -webkit-gradient(linear, left top, left bottom, from(#f2dede), to(#ebcccc));
background-image: linear-gradient(to bottom, #f2dede 0%, #ebcccc 100%);
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff2dede', endColorstr='#ffebcccc', GradientType=0);
background-repeat: repeat-x;
}
.well {
background-image: -webkit-linear-gradient(top, #e8e8e8 0%, #f5f5f5 100%);
+ background-image: -o-linear-gradient(top, #e8e8e8 0%, #f5f5f5 100%);
+ background-image: -webkit-gradient(linear, left top, left bottom, from(#e8e8e8), to(#f5f5f5));
background-image: linear-gradient(to bottom, #e8e8e8 0%, #f5f5f5 100%);
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffe8e8e8', endColorstr='#fff5f5f5', GradientType=0);
background-repeat: repeat-x;
diff --git a/library/bootstrap/css/bootstrap-theme.min.css b/library/bootstrap/css/bootstrap-theme.min.css
index ba4bd28ae..4c3e7bad7 100644
--- a/library/bootstrap/css/bootstrap-theme.min.css
+++ b/library/bootstrap/css/bootstrap-theme.min.css
@@ -1,7 +1,5 @@
/*!
- * Bootstrap v3.1.1 (http://getbootstrap.com)
+ * Bootstrap v3.3.1 (http://getbootstrap.com)
* Copyright 2011-2014 Twitter, Inc.
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
- */
-
-.btn-default,.btn-primary,.btn-success,.btn-info,.btn-warning,.btn-danger{text-shadow:0 -1px 0 rgba(0,0,0,.2);-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,.15),0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 0 rgba(255,255,255,.15),0 1px 1px rgba(0,0,0,.075)}.btn-default:active,.btn-primary:active,.btn-success:active,.btn-info:active,.btn-warning:active,.btn-danger:active,.btn-default.active,.btn-primary.active,.btn-success.active,.btn-info.active,.btn-warning.active,.btn-danger.active{-webkit-box-shadow:inset 0 3px 5px rgba(0,0,0,.125);box-shadow:inset 0 3px 5px rgba(0,0,0,.125)}.btn:active,.btn.active{background-image:none}.btn-default{background-image:-webkit-linear-gradient(top,#fff 0,#e0e0e0 100%);background-image:linear-gradient(to bottom,#fff 0,#e0e0e0 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffffff', endColorstr='#ffe0e0e0', GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false);background-repeat:repeat-x;border-color:#dbdbdb;text-shadow:0 1px 0 #fff;border-color:#ccc}.btn-default:hover,.btn-default:focus{background-color:#e0e0e0;background-position:0 -15px}.btn-default:active,.btn-default.active{background-color:#e0e0e0;border-color:#dbdbdb}.btn-primary{background-image:-webkit-linear-gradient(top,#428bca 0,#2d6ca2 100%);background-image:linear-gradient(to bottom,#428bca 0,#2d6ca2 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff428bca', endColorstr='#ff2d6ca2', GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false);background-repeat:repeat-x;border-color:#2b669a}.btn-primary:hover,.btn-primary:focus{background-color:#2d6ca2;background-position:0 -15px}.btn-primary:active,.btn-primary.active{background-color:#2d6ca2;border-color:#2b669a}.btn-success{background-image:-webkit-linear-gradient(top,#5cb85c 0,#419641 100%);background-image:linear-gradient(to bottom,#5cb85c 0,#419641 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5cb85c', endColorstr='#ff419641', GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false);background-repeat:repeat-x;border-color:#3e8f3e}.btn-success:hover,.btn-success:focus{background-color:#419641;background-position:0 -15px}.btn-success:active,.btn-success.active{background-color:#419641;border-color:#3e8f3e}.btn-info{background-image:-webkit-linear-gradient(top,#5bc0de 0,#2aabd2 100%);background-image:linear-gradient(to bottom,#5bc0de 0,#2aabd2 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5bc0de', endColorstr='#ff2aabd2', GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false);background-repeat:repeat-x;border-color:#28a4c9}.btn-info:hover,.btn-info:focus{background-color:#2aabd2;background-position:0 -15px}.btn-info:active,.btn-info.active{background-color:#2aabd2;border-color:#28a4c9}.btn-warning{background-image:-webkit-linear-gradient(top,#f0ad4e 0,#eb9316 100%);background-image:linear-gradient(to bottom,#f0ad4e 0,#eb9316 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff0ad4e', endColorstr='#ffeb9316', GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false);background-repeat:repeat-x;border-color:#e38d13}.btn-warning:hover,.btn-warning:focus{background-color:#eb9316;background-position:0 -15px}.btn-warning:active,.btn-warning.active{background-color:#eb9316;border-color:#e38d13}.btn-danger{background-image:-webkit-linear-gradient(top,#d9534f 0,#c12e2a 100%);background-image:linear-gradient(to bottom,#d9534f 0,#c12e2a 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd9534f', endColorstr='#ffc12e2a', GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false);background-repeat:repeat-x;border-color:#b92c28}.btn-danger:hover,.btn-danger:focus{background-color:#c12e2a;background-position:0 -15px}.btn-danger:active,.btn-danger.active{background-color:#c12e2a;border-color:#b92c28}.thumbnail,.img-thumbnail{-webkit-box-shadow:0 1px 2px rgba(0,0,0,.075);box-shadow:0 1px 2px rgba(0,0,0,.075)}.dropdown-menu>li>a:hover,.dropdown-menu>li>a:focus{background-image:-webkit-linear-gradient(top,#f5f5f5 0,#e8e8e8 100%);background-image:linear-gradient(to bottom,#f5f5f5 0,#e8e8e8 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff5f5f5', endColorstr='#ffe8e8e8', GradientType=0);background-color:#e8e8e8}.dropdown-menu>.active>a,.dropdown-menu>.active>a:hover,.dropdown-menu>.active>a:focus{background-image:-webkit-linear-gradient(top,#428bca 0,#357ebd 100%);background-image:linear-gradient(to bottom,#428bca 0,#357ebd 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff428bca', endColorstr='#ff357ebd', GradientType=0);background-color:#357ebd}.navbar-default{background-image:-webkit-linear-gradient(top,#fff 0,#f8f8f8 100%);background-image:linear-gradient(to bottom,#fff 0,#f8f8f8 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffffff', endColorstr='#fff8f8f8', GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false);border-radius:4px;-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,.15),0 1px 5px rgba(0,0,0,.075);box-shadow:inset 0 1px 0 rgba(255,255,255,.15),0 1px 5px rgba(0,0,0,.075)}.navbar-default .navbar-nav>.active>a{background-image:-webkit-linear-gradient(top,#ebebeb 0,#f3f3f3 100%);background-image:linear-gradient(to bottom,#ebebeb 0,#f3f3f3 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffebebeb', endColorstr='#fff3f3f3', GradientType=0);-webkit-box-shadow:inset 0 3px 9px rgba(0,0,0,.075);box-shadow:inset 0 3px 9px rgba(0,0,0,.075)}.navbar-brand,.navbar-nav>li>a{text-shadow:0 1px 0 rgba(255,255,255,.25)}.navbar-inverse{background-image:-webkit-linear-gradient(top,#3c3c3c 0,#222 100%);background-image:linear-gradient(to bottom,#3c3c3c 0,#222 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff3c3c3c', endColorstr='#ff222222', GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false)}.navbar-inverse .navbar-nav>.active>a{background-image:-webkit-linear-gradient(top,#222 0,#282828 100%);background-image:linear-gradient(to bottom,#222 0,#282828 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff222222', endColorstr='#ff282828', GradientType=0);-webkit-box-shadow:inset 0 3px 9px rgba(0,0,0,.25);box-shadow:inset 0 3px 9px rgba(0,0,0,.25)}.navbar-inverse .navbar-brand,.navbar-inverse .navbar-nav>li>a{text-shadow:0 -1px 0 rgba(0,0,0,.25)}.navbar-static-top,.navbar-fixed-top,.navbar-fixed-bottom{border-radius:0}.alert{text-shadow:0 1px 0 rgba(255,255,255,.2);-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,.25),0 1px 2px rgba(0,0,0,.05);box-shadow:inset 0 1px 0 rgba(255,255,255,.25),0 1px 2px rgba(0,0,0,.05)}.alert-success{background-image:-webkit-linear-gradient(top,#dff0d8 0,#c8e5bc 100%);background-image:linear-gradient(to bottom,#dff0d8 0,#c8e5bc 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffdff0d8', endColorstr='#ffc8e5bc', GradientType=0);border-color:#b2dba1}.alert-info{background-image:-webkit-linear-gradient(top,#d9edf7 0,#b9def0 100%);background-image:linear-gradient(to bottom,#d9edf7 0,#b9def0 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd9edf7', endColorstr='#ffb9def0', GradientType=0);border-color:#9acfea}.alert-warning{background-image:-webkit-linear-gradient(top,#fcf8e3 0,#f8efc0 100%);background-image:linear-gradient(to bottom,#fcf8e3 0,#f8efc0 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffcf8e3', endColorstr='#fff8efc0', GradientType=0);border-color:#f5e79e}.alert-danger{background-image:-webkit-linear-gradient(top,#f2dede 0,#e7c3c3 100%);background-image:linear-gradient(to bottom,#f2dede 0,#e7c3c3 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff2dede', endColorstr='#ffe7c3c3', GradientType=0);border-color:#dca7a7}.progress{background-image:-webkit-linear-gradient(top,#ebebeb 0,#f5f5f5 100%);background-image:linear-gradient(to bottom,#ebebeb 0,#f5f5f5 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffebebeb', endColorstr='#fff5f5f5', GradientType=0)}.progress-bar{background-image:-webkit-linear-gradient(top,#428bca 0,#3071a9 100%);background-image:linear-gradient(to bottom,#428bca 0,#3071a9 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff428bca', endColorstr='#ff3071a9', GradientType=0)}.progress-bar-success{background-image:-webkit-linear-gradient(top,#5cb85c 0,#449d44 100%);background-image:linear-gradient(to bottom,#5cb85c 0,#449d44 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5cb85c', endColorstr='#ff449d44', GradientType=0)}.progress-bar-info{background-image:-webkit-linear-gradient(top,#5bc0de 0,#31b0d5 100%);background-image:linear-gradient(to bottom,#5bc0de 0,#31b0d5 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5bc0de', endColorstr='#ff31b0d5', GradientType=0)}.progress-bar-warning{background-image:-webkit-linear-gradient(top,#f0ad4e 0,#ec971f 100%);background-image:linear-gradient(to bottom,#f0ad4e 0,#ec971f 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff0ad4e', endColorstr='#ffec971f', GradientType=0)}.progress-bar-danger{background-image:-webkit-linear-gradient(top,#d9534f 0,#c9302c 100%);background-image:linear-gradient(to bottom,#d9534f 0,#c9302c 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd9534f', endColorstr='#ffc9302c', GradientType=0)}.list-group{border-radius:4px;-webkit-box-shadow:0 1px 2px rgba(0,0,0,.075);box-shadow:0 1px 2px rgba(0,0,0,.075)}.list-group-item.active,.list-group-item.active:hover,.list-group-item.active:focus{text-shadow:0 -1px 0 #3071a9;background-image:-webkit-linear-gradient(top,#428bca 0,#3278b3 100%);background-image:linear-gradient(to bottom,#428bca 0,#3278b3 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff428bca', endColorstr='#ff3278b3', GradientType=0);border-color:#3278b3}.panel{-webkit-box-shadow:0 1px 2px rgba(0,0,0,.05);box-shadow:0 1px 2px rgba(0,0,0,.05)}.panel-default>.panel-heading{background-image:-webkit-linear-gradient(top,#f5f5f5 0,#e8e8e8 100%);background-image:linear-gradient(to bottom,#f5f5f5 0,#e8e8e8 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff5f5f5', endColorstr='#ffe8e8e8', GradientType=0)}.panel-primary>.panel-heading{background-image:-webkit-linear-gradient(top,#428bca 0,#357ebd 100%);background-image:linear-gradient(to bottom,#428bca 0,#357ebd 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff428bca', endColorstr='#ff357ebd', GradientType=0)}.panel-success>.panel-heading{background-image:-webkit-linear-gradient(top,#dff0d8 0,#d0e9c6 100%);background-image:linear-gradient(to bottom,#dff0d8 0,#d0e9c6 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffdff0d8', endColorstr='#ffd0e9c6', GradientType=0)}.panel-info>.panel-heading{background-image:-webkit-linear-gradient(top,#d9edf7 0,#c4e3f3 100%);background-image:linear-gradient(to bottom,#d9edf7 0,#c4e3f3 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd9edf7', endColorstr='#ffc4e3f3', GradientType=0)}.panel-warning>.panel-heading{background-image:-webkit-linear-gradient(top,#fcf8e3 0,#faf2cc 100%);background-image:linear-gradient(to bottom,#fcf8e3 0,#faf2cc 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffcf8e3', endColorstr='#fffaf2cc', GradientType=0)}.panel-danger>.panel-heading{background-image:-webkit-linear-gradient(top,#f2dede 0,#ebcccc 100%);background-image:linear-gradient(to bottom,#f2dede 0,#ebcccc 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff2dede', endColorstr='#ffebcccc', GradientType=0)}.well{background-image:-webkit-linear-gradient(top,#e8e8e8 0,#f5f5f5 100%);background-image:linear-gradient(to bottom,#e8e8e8 0,#f5f5f5 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffe8e8e8', endColorstr='#fff5f5f5', GradientType=0);border-color:#dcdcdc;-webkit-box-shadow:inset 0 1px 3px rgba(0,0,0,.05),0 1px 0 rgba(255,255,255,.1);box-shadow:inset 0 1px 3px rgba(0,0,0,.05),0 1px 0 rgba(255,255,255,.1)} \ No newline at end of file
+ */.btn-default,.btn-primary,.btn-success,.btn-info,.btn-warning,.btn-danger{text-shadow:0 -1px 0 rgba(0,0,0,.2);-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,.15),0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 0 rgba(255,255,255,.15),0 1px 1px rgba(0,0,0,.075)}.btn-default:active,.btn-primary:active,.btn-success:active,.btn-info:active,.btn-warning:active,.btn-danger:active,.btn-default.active,.btn-primary.active,.btn-success.active,.btn-info.active,.btn-warning.active,.btn-danger.active{-webkit-box-shadow:inset 0 3px 5px rgba(0,0,0,.125);box-shadow:inset 0 3px 5px rgba(0,0,0,.125)}.btn-default .badge,.btn-primary .badge,.btn-success .badge,.btn-info .badge,.btn-warning .badge,.btn-danger .badge{text-shadow:none}.btn:active,.btn.active{background-image:none}.btn-default{text-shadow:0 1px 0 #fff;background-image:-webkit-linear-gradient(top,#fff 0,#e0e0e0 100%);background-image:-o-linear-gradient(top,#fff 0,#e0e0e0 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#fff),to(#e0e0e0));background-image:linear-gradient(to bottom,#fff 0,#e0e0e0 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffffff', endColorstr='#ffe0e0e0', GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false);background-repeat:repeat-x;border-color:#dbdbdb;border-color:#ccc}.btn-default:hover,.btn-default:focus{background-color:#e0e0e0;background-position:0 -15px}.btn-default:active,.btn-default.active{background-color:#e0e0e0;border-color:#dbdbdb}.btn-default:disabled,.btn-default[disabled]{background-color:#e0e0e0;background-image:none}.btn-primary{background-image:-webkit-linear-gradient(top,#337ab7 0,#265a88 100%);background-image:-o-linear-gradient(top,#337ab7 0,#265a88 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#337ab7),to(#265a88));background-image:linear-gradient(to bottom,#337ab7 0,#265a88 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff337ab7', endColorstr='#ff265a88', GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false);background-repeat:repeat-x;border-color:#245580}.btn-primary:hover,.btn-primary:focus{background-color:#265a88;background-position:0 -15px}.btn-primary:active,.btn-primary.active{background-color:#265a88;border-color:#245580}.btn-primary:disabled,.btn-primary[disabled]{background-color:#265a88;background-image:none}.btn-success{background-image:-webkit-linear-gradient(top,#5cb85c 0,#419641 100%);background-image:-o-linear-gradient(top,#5cb85c 0,#419641 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#5cb85c),to(#419641));background-image:linear-gradient(to bottom,#5cb85c 0,#419641 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5cb85c', endColorstr='#ff419641', GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false);background-repeat:repeat-x;border-color:#3e8f3e}.btn-success:hover,.btn-success:focus{background-color:#419641;background-position:0 -15px}.btn-success:active,.btn-success.active{background-color:#419641;border-color:#3e8f3e}.btn-success:disabled,.btn-success[disabled]{background-color:#419641;background-image:none}.btn-info{background-image:-webkit-linear-gradient(top,#5bc0de 0,#2aabd2 100%);background-image:-o-linear-gradient(top,#5bc0de 0,#2aabd2 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#5bc0de),to(#2aabd2));background-image:linear-gradient(to bottom,#5bc0de 0,#2aabd2 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5bc0de', endColorstr='#ff2aabd2', GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false);background-repeat:repeat-x;border-color:#28a4c9}.btn-info:hover,.btn-info:focus{background-color:#2aabd2;background-position:0 -15px}.btn-info:active,.btn-info.active{background-color:#2aabd2;border-color:#28a4c9}.btn-info:disabled,.btn-info[disabled]{background-color:#2aabd2;background-image:none}.btn-warning{background-image:-webkit-linear-gradient(top,#f0ad4e 0,#eb9316 100%);background-image:-o-linear-gradient(top,#f0ad4e 0,#eb9316 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#f0ad4e),to(#eb9316));background-image:linear-gradient(to bottom,#f0ad4e 0,#eb9316 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff0ad4e', endColorstr='#ffeb9316', GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false);background-repeat:repeat-x;border-color:#e38d13}.btn-warning:hover,.btn-warning:focus{background-color:#eb9316;background-position:0 -15px}.btn-warning:active,.btn-warning.active{background-color:#eb9316;border-color:#e38d13}.btn-warning:disabled,.btn-warning[disabled]{background-color:#eb9316;background-image:none}.btn-danger{background-image:-webkit-linear-gradient(top,#d9534f 0,#c12e2a 100%);background-image:-o-linear-gradient(top,#d9534f 0,#c12e2a 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#d9534f),to(#c12e2a));background-image:linear-gradient(to bottom,#d9534f 0,#c12e2a 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd9534f', endColorstr='#ffc12e2a', GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false);background-repeat:repeat-x;border-color:#b92c28}.btn-danger:hover,.btn-danger:focus{background-color:#c12e2a;background-position:0 -15px}.btn-danger:active,.btn-danger.active{background-color:#c12e2a;border-color:#b92c28}.btn-danger:disabled,.btn-danger[disabled]{background-color:#c12e2a;background-image:none}.thumbnail,.img-thumbnail{-webkit-box-shadow:0 1px 2px rgba(0,0,0,.075);box-shadow:0 1px 2px rgba(0,0,0,.075)}.dropdown-menu>li>a:hover,.dropdown-menu>li>a:focus{background-color:#e8e8e8;background-image:-webkit-linear-gradient(top,#f5f5f5 0,#e8e8e8 100%);background-image:-o-linear-gradient(top,#f5f5f5 0,#e8e8e8 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#f5f5f5),to(#e8e8e8));background-image:linear-gradient(to bottom,#f5f5f5 0,#e8e8e8 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff5f5f5', endColorstr='#ffe8e8e8', GradientType=0);background-repeat:repeat-x}.dropdown-menu>.active>a,.dropdown-menu>.active>a:hover,.dropdown-menu>.active>a:focus{background-color:#2e6da4;background-image:-webkit-linear-gradient(top,#337ab7 0,#2e6da4 100%);background-image:-o-linear-gradient(top,#337ab7 0,#2e6da4 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#337ab7),to(#2e6da4));background-image:linear-gradient(to bottom,#337ab7 0,#2e6da4 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff337ab7', endColorstr='#ff2e6da4', GradientType=0);background-repeat:repeat-x}.navbar-default{background-image:-webkit-linear-gradient(top,#fff 0,#f8f8f8 100%);background-image:-o-linear-gradient(top,#fff 0,#f8f8f8 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#fff),to(#f8f8f8));background-image:linear-gradient(to bottom,#fff 0,#f8f8f8 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffffff', endColorstr='#fff8f8f8', GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false);background-repeat:repeat-x;border-radius:4px;-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,.15),0 1px 5px rgba(0,0,0,.075);box-shadow:inset 0 1px 0 rgba(255,255,255,.15),0 1px 5px rgba(0,0,0,.075)}.navbar-default .navbar-nav>.open>a,.navbar-default .navbar-nav>.active>a{background-image:-webkit-linear-gradient(top,#dbdbdb 0,#e2e2e2 100%);background-image:-o-linear-gradient(top,#dbdbdb 0,#e2e2e2 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#dbdbdb),to(#e2e2e2));background-image:linear-gradient(to bottom,#dbdbdb 0,#e2e2e2 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffdbdbdb', endColorstr='#ffe2e2e2', GradientType=0);background-repeat:repeat-x;-webkit-box-shadow:inset 0 3px 9px rgba(0,0,0,.075);box-shadow:inset 0 3px 9px rgba(0,0,0,.075)}.navbar-brand,.navbar-nav>li>a{text-shadow:0 1px 0 rgba(255,255,255,.25)}.navbar-inverse{background-image:-webkit-linear-gradient(top,#3c3c3c 0,#222 100%);background-image:-o-linear-gradient(top,#3c3c3c 0,#222 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#3c3c3c),to(#222));background-image:linear-gradient(to bottom,#3c3c3c 0,#222 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff3c3c3c', endColorstr='#ff222222', GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false);background-repeat:repeat-x}.navbar-inverse .navbar-nav>.open>a,.navbar-inverse .navbar-nav>.active>a{background-image:-webkit-linear-gradient(top,#080808 0,#0f0f0f 100%);background-image:-o-linear-gradient(top,#080808 0,#0f0f0f 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#080808),to(#0f0f0f));background-image:linear-gradient(to bottom,#080808 0,#0f0f0f 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff080808', endColorstr='#ff0f0f0f', GradientType=0);background-repeat:repeat-x;-webkit-box-shadow:inset 0 3px 9px rgba(0,0,0,.25);box-shadow:inset 0 3px 9px rgba(0,0,0,.25)}.navbar-inverse .navbar-brand,.navbar-inverse .navbar-nav>li>a{text-shadow:0 -1px 0 rgba(0,0,0,.25)}.navbar-static-top,.navbar-fixed-top,.navbar-fixed-bottom{border-radius:0}@media (max-width:767px){.navbar .navbar-nav .open .dropdown-menu>.active>a,.navbar .navbar-nav .open .dropdown-menu>.active>a:hover,.navbar .navbar-nav .open .dropdown-menu>.active>a:focus{color:#fff;background-image:-webkit-linear-gradient(top,#337ab7 0,#2e6da4 100%);background-image:-o-linear-gradient(top,#337ab7 0,#2e6da4 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#337ab7),to(#2e6da4));background-image:linear-gradient(to bottom,#337ab7 0,#2e6da4 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff337ab7', endColorstr='#ff2e6da4', GradientType=0);background-repeat:repeat-x}}.alert{text-shadow:0 1px 0 rgba(255,255,255,.2);-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,.25),0 1px 2px rgba(0,0,0,.05);box-shadow:inset 0 1px 0 rgba(255,255,255,.25),0 1px 2px rgba(0,0,0,.05)}.alert-success{background-image:-webkit-linear-gradient(top,#dff0d8 0,#c8e5bc 100%);background-image:-o-linear-gradient(top,#dff0d8 0,#c8e5bc 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#dff0d8),to(#c8e5bc));background-image:linear-gradient(to bottom,#dff0d8 0,#c8e5bc 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffdff0d8', endColorstr='#ffc8e5bc', GradientType=0);background-repeat:repeat-x;border-color:#b2dba1}.alert-info{background-image:-webkit-linear-gradient(top,#d9edf7 0,#b9def0 100%);background-image:-o-linear-gradient(top,#d9edf7 0,#b9def0 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#d9edf7),to(#b9def0));background-image:linear-gradient(to bottom,#d9edf7 0,#b9def0 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd9edf7', endColorstr='#ffb9def0', GradientType=0);background-repeat:repeat-x;border-color:#9acfea}.alert-warning{background-image:-webkit-linear-gradient(top,#fcf8e3 0,#f8efc0 100%);background-image:-o-linear-gradient(top,#fcf8e3 0,#f8efc0 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#fcf8e3),to(#f8efc0));background-image:linear-gradient(to bottom,#fcf8e3 0,#f8efc0 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffcf8e3', endColorstr='#fff8efc0', GradientType=0);background-repeat:repeat-x;border-color:#f5e79e}.alert-danger{background-image:-webkit-linear-gradient(top,#f2dede 0,#e7c3c3 100%);background-image:-o-linear-gradient(top,#f2dede 0,#e7c3c3 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#f2dede),to(#e7c3c3));background-image:linear-gradient(to bottom,#f2dede 0,#e7c3c3 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff2dede', endColorstr='#ffe7c3c3', GradientType=0);background-repeat:repeat-x;border-color:#dca7a7}.progress{background-image:-webkit-linear-gradient(top,#ebebeb 0,#f5f5f5 100%);background-image:-o-linear-gradient(top,#ebebeb 0,#f5f5f5 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#ebebeb),to(#f5f5f5));background-image:linear-gradient(to bottom,#ebebeb 0,#f5f5f5 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffebebeb', endColorstr='#fff5f5f5', GradientType=0);background-repeat:repeat-x}.progress-bar{background-image:-webkit-linear-gradient(top,#337ab7 0,#286090 100%);background-image:-o-linear-gradient(top,#337ab7 0,#286090 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#337ab7),to(#286090));background-image:linear-gradient(to bottom,#337ab7 0,#286090 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff337ab7', endColorstr='#ff286090', GradientType=0);background-repeat:repeat-x}.progress-bar-success{background-image:-webkit-linear-gradient(top,#5cb85c 0,#449d44 100%);background-image:-o-linear-gradient(top,#5cb85c 0,#449d44 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#5cb85c),to(#449d44));background-image:linear-gradient(to bottom,#5cb85c 0,#449d44 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5cb85c', endColorstr='#ff449d44', GradientType=0);background-repeat:repeat-x}.progress-bar-info{background-image:-webkit-linear-gradient(top,#5bc0de 0,#31b0d5 100%);background-image:-o-linear-gradient(top,#5bc0de 0,#31b0d5 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#5bc0de),to(#31b0d5));background-image:linear-gradient(to bottom,#5bc0de 0,#31b0d5 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5bc0de', endColorstr='#ff31b0d5', GradientType=0);background-repeat:repeat-x}.progress-bar-warning{background-image:-webkit-linear-gradient(top,#f0ad4e 0,#ec971f 100%);background-image:-o-linear-gradient(top,#f0ad4e 0,#ec971f 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#f0ad4e),to(#ec971f));background-image:linear-gradient(to bottom,#f0ad4e 0,#ec971f 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff0ad4e', endColorstr='#ffec971f', GradientType=0);background-repeat:repeat-x}.progress-bar-danger{background-image:-webkit-linear-gradient(top,#d9534f 0,#c9302c 100%);background-image:-o-linear-gradient(top,#d9534f 0,#c9302c 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#d9534f),to(#c9302c));background-image:linear-gradient(to bottom,#d9534f 0,#c9302c 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd9534f', endColorstr='#ffc9302c', GradientType=0);background-repeat:repeat-x}.progress-bar-striped{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent)}.list-group{border-radius:4px;-webkit-box-shadow:0 1px 2px rgba(0,0,0,.075);box-shadow:0 1px 2px rgba(0,0,0,.075)}.list-group-item.active,.list-group-item.active:hover,.list-group-item.active:focus{text-shadow:0 -1px 0 #286090;background-image:-webkit-linear-gradient(top,#337ab7 0,#2b669a 100%);background-image:-o-linear-gradient(top,#337ab7 0,#2b669a 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#337ab7),to(#2b669a));background-image:linear-gradient(to bottom,#337ab7 0,#2b669a 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff337ab7', endColorstr='#ff2b669a', GradientType=0);background-repeat:repeat-x;border-color:#2b669a}.list-group-item.active .badge,.list-group-item.active:hover .badge,.list-group-item.active:focus .badge{text-shadow:none}.panel{-webkit-box-shadow:0 1px 2px rgba(0,0,0,.05);box-shadow:0 1px 2px rgba(0,0,0,.05)}.panel-default>.panel-heading{background-image:-webkit-linear-gradient(top,#f5f5f5 0,#e8e8e8 100%);background-image:-o-linear-gradient(top,#f5f5f5 0,#e8e8e8 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#f5f5f5),to(#e8e8e8));background-image:linear-gradient(to bottom,#f5f5f5 0,#e8e8e8 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff5f5f5', endColorstr='#ffe8e8e8', GradientType=0);background-repeat:repeat-x}.panel-primary>.panel-heading{background-image:-webkit-linear-gradient(top,#337ab7 0,#2e6da4 100%);background-image:-o-linear-gradient(top,#337ab7 0,#2e6da4 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#337ab7),to(#2e6da4));background-image:linear-gradient(to bottom,#337ab7 0,#2e6da4 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff337ab7', endColorstr='#ff2e6da4', GradientType=0);background-repeat:repeat-x}.panel-success>.panel-heading{background-image:-webkit-linear-gradient(top,#dff0d8 0,#d0e9c6 100%);background-image:-o-linear-gradient(top,#dff0d8 0,#d0e9c6 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#dff0d8),to(#d0e9c6));background-image:linear-gradient(to bottom,#dff0d8 0,#d0e9c6 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffdff0d8', endColorstr='#ffd0e9c6', GradientType=0);background-repeat:repeat-x}.panel-info>.panel-heading{background-image:-webkit-linear-gradient(top,#d9edf7 0,#c4e3f3 100%);background-image:-o-linear-gradient(top,#d9edf7 0,#c4e3f3 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#d9edf7),to(#c4e3f3));background-image:linear-gradient(to bottom,#d9edf7 0,#c4e3f3 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd9edf7', endColorstr='#ffc4e3f3', GradientType=0);background-repeat:repeat-x}.panel-warning>.panel-heading{background-image:-webkit-linear-gradient(top,#fcf8e3 0,#faf2cc 100%);background-image:-o-linear-gradient(top,#fcf8e3 0,#faf2cc 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#fcf8e3),to(#faf2cc));background-image:linear-gradient(to bottom,#fcf8e3 0,#faf2cc 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffcf8e3', endColorstr='#fffaf2cc', GradientType=0);background-repeat:repeat-x}.panel-danger>.panel-heading{background-image:-webkit-linear-gradient(top,#f2dede 0,#ebcccc 100%);background-image:-o-linear-gradient(top,#f2dede 0,#ebcccc 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#f2dede),to(#ebcccc));background-image:linear-gradient(to bottom,#f2dede 0,#ebcccc 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff2dede', endColorstr='#ffebcccc', GradientType=0);background-repeat:repeat-x}.well{background-image:-webkit-linear-gradient(top,#e8e8e8 0,#f5f5f5 100%);background-image:-o-linear-gradient(top,#e8e8e8 0,#f5f5f5 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#e8e8e8),to(#f5f5f5));background-image:linear-gradient(to bottom,#e8e8e8 0,#f5f5f5 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffe8e8e8', endColorstr='#fff5f5f5', GradientType=0);background-repeat:repeat-x;border-color:#dcdcdc;-webkit-box-shadow:inset 0 1px 3px rgba(0,0,0,.05),0 1px 0 rgba(255,255,255,.1);box-shadow:inset 0 1px 3px rgba(0,0,0,.05),0 1px 0 rgba(255,255,255,.1)} \ No newline at end of file
diff --git a/library/bootstrap/css/bootstrap.css b/library/bootstrap/css/bootstrap.css
index 7f3665196..c6f3d2106 100644
--- a/library/bootstrap/css/bootstrap.css
+++ b/library/bootstrap/css/bootstrap.css
@@ -1,10 +1,10 @@
/*!
- * Bootstrap v3.1.1 (http://getbootstrap.com)
+ * Bootstrap v3.3.1 (http://getbootstrap.com)
* Copyright 2011-2014 Twitter, Inc.
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
*/
-/*! normalize.css v3.0.0 | MIT License | git.io/normalize */
+/*! normalize.css v3.0.2 | MIT License | git.io/normalize */
html {
font-family: sans-serif;
-webkit-text-size-adjust: 100%;
@@ -22,6 +22,7 @@ footer,
header,
hgroup,
main,
+menu,
nav,
section,
summary {
@@ -43,7 +44,7 @@ template {
display: none;
}
a {
- background: transparent;
+ background-color: transparent;
}
a:active,
a:hover {
@@ -94,8 +95,9 @@ figure {
}
hr {
height: 0;
- -moz-box-sizing: content-box;
- box-sizing: content-box;
+ -webkit-box-sizing: content-box;
+ -moz-box-sizing: content-box;
+ box-sizing: content-box;
}
pre {
overflow: auto;
@@ -144,7 +146,9 @@ input {
}
input[type="checkbox"],
input[type="radio"] {
- box-sizing: border-box;
+ -webkit-box-sizing: border-box;
+ -moz-box-sizing: border-box;
+ box-sizing: border-box;
padding: 0;
}
input[type="number"]::-webkit-inner-spin-button,
@@ -184,12 +188,16 @@ td,
th {
padding: 0;
}
+/*! Source: https://github.com/h5bp/html5-boilerplate/blob/master/src/css/main.css */
@media print {
- * {
+ *,
+ *:before,
+ *:after {
color: #000 !important;
text-shadow: none !important;
background: transparent !important;
- box-shadow: none !important;
+ -webkit-box-shadow: none !important;
+ box-shadow: none !important;
}
a,
a:visited {
@@ -201,8 +209,8 @@ th {
abbr[title]:after {
content: " (" attr(title) ")";
}
- a[href^="javascript:"]:after,
- a[href^="#"]:after {
+ a[href^="#"]:after,
+ a[href^="javascript:"]:after {
content: "";
}
pre,
@@ -237,10 +245,6 @@ th {
.navbar {
display: none;
}
- .table td,
- .table th {
- background-color: #fff !important;
- }
.btn > .caret,
.dropup > .btn > .caret {
border-top-color: #000 !important;
@@ -251,11 +255,634 @@ th {
.table {
border-collapse: collapse !important;
}
+ .table td,
+ .table th {
+ background-color: #fff !important;
+ }
.table-bordered th,
.table-bordered td {
border: 1px solid #ddd !important;
}
}
+@font-face {
+ font-family: 'Glyphicons Halflings';
+
+ src: url('../fonts/glyphicons-halflings-regular.eot');
+ src: url('../fonts/glyphicons-halflings-regular.eot?#iefix') format('embedded-opentype'), url('../fonts/glyphicons-halflings-regular.woff') format('woff'), url('../fonts/glyphicons-halflings-regular.ttf') format('truetype'), url('../fonts/glyphicons-halflings-regular.svg#glyphicons_halflingsregular') format('svg');
+}
+.glyphicon {
+ position: relative;
+ top: 1px;
+ display: inline-block;
+ font-family: 'Glyphicons Halflings';
+ font-style: normal;
+ font-weight: normal;
+ line-height: 1;
+
+ -webkit-font-smoothing: antialiased;
+ -moz-osx-font-smoothing: grayscale;
+}
+.glyphicon-asterisk:before {
+ content: "\2a";
+}
+.glyphicon-plus:before {
+ content: "\2b";
+}
+.glyphicon-euro:before,
+.glyphicon-eur:before {
+ content: "\20ac";
+}
+.glyphicon-minus:before {
+ content: "\2212";
+}
+.glyphicon-cloud:before {
+ content: "\2601";
+}
+.glyphicon-envelope:before {
+ content: "\2709";
+}
+.glyphicon-pencil:before {
+ content: "\270f";
+}
+.glyphicon-glass:before {
+ content: "\e001";
+}
+.glyphicon-music:before {
+ content: "\e002";
+}
+.glyphicon-search:before {
+ content: "\e003";
+}
+.glyphicon-heart:before {
+ content: "\e005";
+}
+.glyphicon-star:before {
+ content: "\e006";
+}
+.glyphicon-star-empty:before {
+ content: "\e007";
+}
+.glyphicon-user:before {
+ content: "\e008";
+}
+.glyphicon-film:before {
+ content: "\e009";
+}
+.glyphicon-th-large:before {
+ content: "\e010";
+}
+.glyphicon-th:before {
+ content: "\e011";
+}
+.glyphicon-th-list:before {
+ content: "\e012";
+}
+.glyphicon-ok:before {
+ content: "\e013";
+}
+.glyphicon-remove:before {
+ content: "\e014";
+}
+.glyphicon-zoom-in:before {
+ content: "\e015";
+}
+.glyphicon-zoom-out:before {
+ content: "\e016";
+}
+.glyphicon-off:before {
+ content: "\e017";
+}
+.glyphicon-signal:before {
+ content: "\e018";
+}
+.glyphicon-cog:before {
+ content: "\e019";
+}
+.glyphicon-trash:before {
+ content: "\e020";
+}
+.glyphicon-home:before {
+ content: "\e021";
+}
+.glyphicon-file:before {
+ content: "\e022";
+}
+.glyphicon-time:before {
+ content: "\e023";
+}
+.glyphicon-road:before {
+ content: "\e024";
+}
+.glyphicon-download-alt:before {
+ content: "\e025";
+}
+.glyphicon-download:before {
+ content: "\e026";
+}
+.glyphicon-upload:before {
+ content: "\e027";
+}
+.glyphicon-inbox:before {
+ content: "\e028";
+}
+.glyphicon-play-circle:before {
+ content: "\e029";
+}
+.glyphicon-repeat:before {
+ content: "\e030";
+}
+.glyphicon-refresh:before {
+ content: "\e031";
+}
+.glyphicon-list-alt:before {
+ content: "\e032";
+}
+.glyphicon-lock:before {
+ content: "\e033";
+}
+.glyphicon-flag:before {
+ content: "\e034";
+}
+.glyphicon-headphones:before {
+ content: "\e035";
+}
+.glyphicon-volume-off:before {
+ content: "\e036";
+}
+.glyphicon-volume-down:before {
+ content: "\e037";
+}
+.glyphicon-volume-up:before {
+ content: "\e038";
+}
+.glyphicon-qrcode:before {
+ content: "\e039";
+}
+.glyphicon-barcode:before {
+ content: "\e040";
+}
+.glyphicon-tag:before {
+ content: "\e041";
+}
+.glyphicon-tags:before {
+ content: "\e042";
+}
+.glyphicon-book:before {
+ content: "\e043";
+}
+.glyphicon-bookmark:before {
+ content: "\e044";
+}
+.glyphicon-print:before {
+ content: "\e045";
+}
+.glyphicon-camera:before {
+ content: "\e046";
+}
+.glyphicon-font:before {
+ content: "\e047";
+}
+.glyphicon-bold:before {
+ content: "\e048";
+}
+.glyphicon-italic:before {
+ content: "\e049";
+}
+.glyphicon-text-height:before {
+ content: "\e050";
+}
+.glyphicon-text-width:before {
+ content: "\e051";
+}
+.glyphicon-align-left:before {
+ content: "\e052";
+}
+.glyphicon-align-center:before {
+ content: "\e053";
+}
+.glyphicon-align-right:before {
+ content: "\e054";
+}
+.glyphicon-align-justify:before {
+ content: "\e055";
+}
+.glyphicon-list:before {
+ content: "\e056";
+}
+.glyphicon-indent-left:before {
+ content: "\e057";
+}
+.glyphicon-indent-right:before {
+ content: "\e058";
+}
+.glyphicon-facetime-video:before {
+ content: "\e059";
+}
+.glyphicon-picture:before {
+ content: "\e060";
+}
+.glyphicon-map-marker:before {
+ content: "\e062";
+}
+.glyphicon-adjust:before {
+ content: "\e063";
+}
+.glyphicon-tint:before {
+ content: "\e064";
+}
+.glyphicon-edit:before {
+ content: "\e065";
+}
+.glyphicon-share:before {
+ content: "\e066";
+}
+.glyphicon-check:before {
+ content: "\e067";
+}
+.glyphicon-move:before {
+ content: "\e068";
+}
+.glyphicon-step-backward:before {
+ content: "\e069";
+}
+.glyphicon-fast-backward:before {
+ content: "\e070";
+}
+.glyphicon-backward:before {
+ content: "\e071";
+}
+.glyphicon-play:before {
+ content: "\e072";
+}
+.glyphicon-pause:before {
+ content: "\e073";
+}
+.glyphicon-stop:before {
+ content: "\e074";
+}
+.glyphicon-forward:before {
+ content: "\e075";
+}
+.glyphicon-fast-forward:before {
+ content: "\e076";
+}
+.glyphicon-step-forward:before {
+ content: "\e077";
+}
+.glyphicon-eject:before {
+ content: "\e078";
+}
+.glyphicon-chevron-left:before {
+ content: "\e079";
+}
+.glyphicon-chevron-right:before {
+ content: "\e080";
+}
+.glyphicon-plus-sign:before {
+ content: "\e081";
+}
+.glyphicon-minus-sign:before {
+ content: "\e082";
+}
+.glyphicon-remove-sign:before {
+ content: "\e083";
+}
+.glyphicon-ok-sign:before {
+ content: "\e084";
+}
+.glyphicon-question-sign:before {
+ content: "\e085";
+}
+.glyphicon-info-sign:before {
+ content: "\e086";
+}
+.glyphicon-screenshot:before {
+ content: "\e087";
+}
+.glyphicon-remove-circle:before {
+ content: "\e088";
+}
+.glyphicon-ok-circle:before {
+ content: "\e089";
+}
+.glyphicon-ban-circle:before {
+ content: "\e090";
+}
+.glyphicon-arrow-left:before {
+ content: "\e091";
+}
+.glyphicon-arrow-right:before {
+ content: "\e092";
+}
+.glyphicon-arrow-up:before {
+ content: "\e093";
+}
+.glyphicon-arrow-down:before {
+ content: "\e094";
+}
+.glyphicon-share-alt:before {
+ content: "\e095";
+}
+.glyphicon-resize-full:before {
+ content: "\e096";
+}
+.glyphicon-resize-small:before {
+ content: "\e097";
+}
+.glyphicon-exclamation-sign:before {
+ content: "\e101";
+}
+.glyphicon-gift:before {
+ content: "\e102";
+}
+.glyphicon-leaf:before {
+ content: "\e103";
+}
+.glyphicon-fire:before {
+ content: "\e104";
+}
+.glyphicon-eye-open:before {
+ content: "\e105";
+}
+.glyphicon-eye-close:before {
+ content: "\e106";
+}
+.glyphicon-warning-sign:before {
+ content: "\e107";
+}
+.glyphicon-plane:before {
+ content: "\e108";
+}
+.glyphicon-calendar:before {
+ content: "\e109";
+}
+.glyphicon-random:before {
+ content: "\e110";
+}
+.glyphicon-comment:before {
+ content: "\e111";
+}
+.glyphicon-magnet:before {
+ content: "\e112";
+}
+.glyphicon-chevron-up:before {
+ content: "\e113";
+}
+.glyphicon-chevron-down:before {
+ content: "\e114";
+}
+.glyphicon-retweet:before {
+ content: "\e115";
+}
+.glyphicon-shopping-cart:before {
+ content: "\e116";
+}
+.glyphicon-folder-close:before {
+ content: "\e117";
+}
+.glyphicon-folder-open:before {
+ content: "\e118";
+}
+.glyphicon-resize-vertical:before {
+ content: "\e119";
+}
+.glyphicon-resize-horizontal:before {
+ content: "\e120";
+}
+.glyphicon-hdd:before {
+ content: "\e121";
+}
+.glyphicon-bullhorn:before {
+ content: "\e122";
+}
+.glyphicon-bell:before {
+ content: "\e123";
+}
+.glyphicon-certificate:before {
+ content: "\e124";
+}
+.glyphicon-thumbs-up:before {
+ content: "\e125";
+}
+.glyphicon-thumbs-down:before {
+ content: "\e126";
+}
+.glyphicon-hand-right:before {
+ content: "\e127";
+}
+.glyphicon-hand-left:before {
+ content: "\e128";
+}
+.glyphicon-hand-up:before {
+ content: "\e129";
+}
+.glyphicon-hand-down:before {
+ content: "\e130";
+}
+.glyphicon-circle-arrow-right:before {
+ content: "\e131";
+}
+.glyphicon-circle-arrow-left:before {
+ content: "\e132";
+}
+.glyphicon-circle-arrow-up:before {
+ content: "\e133";
+}
+.glyphicon-circle-arrow-down:before {
+ content: "\e134";
+}
+.glyphicon-globe:before {
+ content: "\e135";
+}
+.glyphicon-wrench:before {
+ content: "\e136";
+}
+.glyphicon-tasks:before {
+ content: "\e137";
+}
+.glyphicon-filter:before {
+ content: "\e138";
+}
+.glyphicon-briefcase:before {
+ content: "\e139";
+}
+.glyphicon-fullscreen:before {
+ content: "\e140";
+}
+.glyphicon-dashboard:before {
+ content: "\e141";
+}
+.glyphicon-paperclip:before {
+ content: "\e142";
+}
+.glyphicon-heart-empty:before {
+ content: "\e143";
+}
+.glyphicon-link:before {
+ content: "\e144";
+}
+.glyphicon-phone:before {
+ content: "\e145";
+}
+.glyphicon-pushpin:before {
+ content: "\e146";
+}
+.glyphicon-usd:before {
+ content: "\e148";
+}
+.glyphicon-gbp:before {
+ content: "\e149";
+}
+.glyphicon-sort:before {
+ content: "\e150";
+}
+.glyphicon-sort-by-alphabet:before {
+ content: "\e151";
+}
+.glyphicon-sort-by-alphabet-alt:before {
+ content: "\e152";
+}
+.glyphicon-sort-by-order:before {
+ content: "\e153";
+}
+.glyphicon-sort-by-order-alt:before {
+ content: "\e154";
+}
+.glyphicon-sort-by-attributes:before {
+ content: "\e155";
+}
+.glyphicon-sort-by-attributes-alt:before {
+ content: "\e156";
+}
+.glyphicon-unchecked:before {
+ content: "\e157";
+}
+.glyphicon-expand:before {
+ content: "\e158";
+}
+.glyphicon-collapse-down:before {
+ content: "\e159";
+}
+.glyphicon-collapse-up:before {
+ content: "\e160";
+}
+.glyphicon-log-in:before {
+ content: "\e161";
+}
+.glyphicon-flash:before {
+ content: "\e162";
+}
+.glyphicon-log-out:before {
+ content: "\e163";
+}
+.glyphicon-new-window:before {
+ content: "\e164";
+}
+.glyphicon-record:before {
+ content: "\e165";
+}
+.glyphicon-save:before {
+ content: "\e166";
+}
+.glyphicon-open:before {
+ content: "\e167";
+}
+.glyphicon-saved:before {
+ content: "\e168";
+}
+.glyphicon-import:before {
+ content: "\e169";
+}
+.glyphicon-export:before {
+ content: "\e170";
+}
+.glyphicon-send:before {
+ content: "\e171";
+}
+.glyphicon-floppy-disk:before {
+ content: "\e172";
+}
+.glyphicon-floppy-saved:before {
+ content: "\e173";
+}
+.glyphicon-floppy-remove:before {
+ content: "\e174";
+}
+.glyphicon-floppy-save:before {
+ content: "\e175";
+}
+.glyphicon-floppy-open:before {
+ content: "\e176";
+}
+.glyphicon-credit-card:before {
+ content: "\e177";
+}
+.glyphicon-transfer:before {
+ content: "\e178";
+}
+.glyphicon-cutlery:before {
+ content: "\e179";
+}
+.glyphicon-header:before {
+ content: "\e180";
+}
+.glyphicon-compressed:before {
+ content: "\e181";
+}
+.glyphicon-earphone:before {
+ content: "\e182";
+}
+.glyphicon-phone-alt:before {
+ content: "\e183";
+}
+.glyphicon-tower:before {
+ content: "\e184";
+}
+.glyphicon-stats:before {
+ content: "\e185";
+}
+.glyphicon-sd-video:before {
+ content: "\e186";
+}
+.glyphicon-hd-video:before {
+ content: "\e187";
+}
+.glyphicon-subtitles:before {
+ content: "\e188";
+}
+.glyphicon-sound-stereo:before {
+ content: "\e189";
+}
+.glyphicon-sound-dolby:before {
+ content: "\e190";
+}
+.glyphicon-sound-5-1:before {
+ content: "\e191";
+}
+.glyphicon-sound-6-1:before {
+ content: "\e192";
+}
+.glyphicon-sound-7-1:before {
+ content: "\e193";
+}
+.glyphicon-copyright-mark:before {
+ content: "\e194";
+}
+.glyphicon-registration-mark:before {
+ content: "\e195";
+}
+.glyphicon-cloud-download:before {
+ content: "\e197";
+}
+.glyphicon-cloud-upload:before {
+ content: "\e198";
+}
+.glyphicon-tree-conifer:before {
+ content: "\e199";
+}
+.glyphicon-tree-deciduous:before {
+ content: "\e200";
+}
* {
-webkit-box-sizing: border-box;
-moz-box-sizing: border-box;
@@ -268,7 +895,7 @@ th {
box-sizing: border-box;
}
html {
- font-size: 62.5%;
+ font-size: 10px;
-webkit-tap-highlight-color: rgba(0, 0, 0, 0);
}
@@ -288,12 +915,12 @@ textarea {
line-height: inherit;
}
a {
- color: #428bca;
+ color: #337ab7;
text-decoration: none;
}
a:hover,
a:focus {
- color: #2a6496;
+ color: #23527c;
text-decoration: underline;
}
a:focus {
@@ -329,6 +956,7 @@ img {
border: 1px solid #ddd;
border-radius: 4px;
-webkit-transition: all .2s ease-in-out;
+ -o-transition: all .2s ease-in-out;
transition: all .2s ease-in-out;
}
.img-circle {
@@ -350,6 +978,15 @@ hr {
clip: rect(0, 0, 0, 0);
border: 0;
}
+.sr-only-focusable:active,
+.sr-only-focusable:focus {
+ position: static;
+ width: auto;
+ height: auto;
+ margin: 0;
+ overflow: visible;
+ clip: auto;
+}
h1,
h2,
h3,
@@ -393,7 +1030,7 @@ h6 .small,
.h6 .small {
font-weight: normal;
line-height: 1;
- color: #999;
+ color: #777;
}
h1,
.h1,
@@ -471,7 +1108,7 @@ p {
.lead {
margin-bottom: 20px;
font-size: 16px;
- font-weight: 200;
+ font-weight: 300;
line-height: 1.4;
}
@media (min-width: 768px) {
@@ -483,8 +1120,10 @@ small,
.small {
font-size: 85%;
}
-cite {
- font-style: normal;
+mark,
+.mark {
+ padding: .2em;
+ background-color: #fcf8e3;
}
.text-left {
text-align: left;
@@ -498,14 +1137,26 @@ cite {
.text-justify {
text-align: justify;
}
+.text-nowrap {
+ white-space: nowrap;
+}
+.text-lowercase {
+ text-transform: lowercase;
+}
+.text-uppercase {
+ text-transform: uppercase;
+}
+.text-capitalize {
+ text-transform: capitalize;
+}
.text-muted {
- color: #999;
+ color: #777;
}
.text-primary {
- color: #428bca;
+ color: #337ab7;
}
a.text-primary:hover {
- color: #3071a9;
+ color: #286090;
}
.text-success {
color: #3c763d;
@@ -533,10 +1184,10 @@ a.text-danger:hover {
}
.bg-primary {
color: #fff;
- background-color: #428bca;
+ background-color: #337ab7;
}
a.bg-primary:hover {
- background-color: #3071a9;
+ background-color: #286090;
}
.bg-success {
background-color: #dff0d8;
@@ -623,7 +1274,7 @@ dd {
abbr[title],
abbr[data-original-title] {
cursor: help;
- border-bottom: 1px dotted #999;
+ border-bottom: 1px dotted #777;
}
.initialism {
font-size: 90%;
@@ -646,7 +1297,7 @@ blockquote .small {
display: block;
font-size: 80%;
line-height: 1.42857143;
- color: #999;
+ color: #777;
}
blockquote footer:before,
blockquote small:before,
@@ -677,10 +1328,6 @@ blockquote.pull-right small:after,
blockquote.pull-right .small:after {
content: '\00A0 \2014';
}
-blockquote:before,
-blockquote:after {
- content: "";
-}
address {
margin-bottom: 20px;
font-style: normal;
@@ -696,7 +1343,6 @@ code {
padding: 2px 4px;
font-size: 90%;
color: #c7254e;
- white-space: nowrap;
background-color: #f9f2f4;
border-radius: 4px;
}
@@ -706,7 +1352,15 @@ kbd {
color: #fff;
background-color: #333;
border-radius: 3px;
- box-shadow: inset 0 -1px 0 rgba(0, 0, 0, .25);
+ -webkit-box-shadow: inset 0 -1px 0 rgba(0, 0, 0, .25);
+ box-shadow: inset 0 -1px 0 rgba(0, 0, 0, .25);
+}
+kbd kbd {
+ padding: 0;
+ font-size: 100%;
+ font-weight: bold;
+ -webkit-box-shadow: none;
+ box-shadow: none;
}
pre {
display: block;
@@ -846,7 +1500,7 @@ pre code {
right: 8.33333333%;
}
.col-xs-pull-0 {
- right: 0;
+ right: auto;
}
.col-xs-push-12 {
left: 100%;
@@ -885,7 +1539,7 @@ pre code {
left: 8.33333333%;
}
.col-xs-push-0 {
- left: 0;
+ left: auto;
}
.col-xs-offset-12 {
margin-left: 100%;
@@ -1003,7 +1657,7 @@ pre code {
right: 8.33333333%;
}
.col-sm-pull-0 {
- right: 0;
+ right: auto;
}
.col-sm-push-12 {
left: 100%;
@@ -1042,7 +1696,7 @@ pre code {
left: 8.33333333%;
}
.col-sm-push-0 {
- left: 0;
+ left: auto;
}
.col-sm-offset-12 {
margin-left: 100%;
@@ -1161,7 +1815,7 @@ pre code {
right: 8.33333333%;
}
.col-md-pull-0 {
- right: 0;
+ right: auto;
}
.col-md-push-12 {
left: 100%;
@@ -1200,7 +1854,7 @@ pre code {
left: 8.33333333%;
}
.col-md-push-0 {
- left: 0;
+ left: auto;
}
.col-md-offset-12 {
margin-left: 100%;
@@ -1319,7 +1973,7 @@ pre code {
right: 8.33333333%;
}
.col-lg-pull-0 {
- right: 0;
+ right: auto;
}
.col-lg-push-12 {
left: 100%;
@@ -1358,7 +2012,7 @@ pre code {
left: 8.33333333%;
}
.col-lg-push-0 {
- left: 0;
+ left: auto;
}
.col-lg-offset-12 {
margin-left: 100%;
@@ -1401,14 +2055,20 @@ pre code {
}
}
table {
- max-width: 100%;
background-color: transparent;
}
+caption {
+ padding-top: 8px;
+ padding-bottom: 8px;
+ color: #777;
+ text-align: left;
+}
th {
text-align: left;
}
.table {
width: 100%;
+ max-width: 100%;
margin-bottom: 20px;
}
.table > thead > tr > th,
@@ -1463,12 +2123,10 @@ th {
.table-bordered > thead > tr > td {
border-bottom-width: 2px;
}
-.table-striped > tbody > tr:nth-child(odd) > td,
-.table-striped > tbody > tr:nth-child(odd) > th {
+.table-striped > tbody > tr:nth-child(odd) {
background-color: #f9f9f9;
}
-.table-hover > tbody > tr:hover > td,
-.table-hover > tbody > tr:hover > th {
+.table-hover > tbody > tr:hover {
background-color: #f5f5f5;
}
table col[class*="col-"] {
@@ -1499,6 +2157,7 @@ table th[class*="col-"] {
.table-hover > tbody > tr > td.active:hover,
.table-hover > tbody > tr > th.active:hover,
.table-hover > tbody > tr.active:hover > td,
+.table-hover > tbody > tr:hover > .active,
.table-hover > tbody > tr.active:hover > th {
background-color: #e8e8e8;
}
@@ -1519,6 +2178,7 @@ table th[class*="col-"] {
.table-hover > tbody > tr > td.success:hover,
.table-hover > tbody > tr > th.success:hover,
.table-hover > tbody > tr.success:hover > td,
+.table-hover > tbody > tr:hover > .success,
.table-hover > tbody > tr.success:hover > th {
background-color: #d0e9c6;
}
@@ -1539,6 +2199,7 @@ table th[class*="col-"] {
.table-hover > tbody > tr > td.info:hover,
.table-hover > tbody > tr > th.info:hover,
.table-hover > tbody > tr.info:hover > td,
+.table-hover > tbody > tr:hover > .info,
.table-hover > tbody > tr.info:hover > th {
background-color: #c4e3f3;
}
@@ -1559,6 +2220,7 @@ table th[class*="col-"] {
.table-hover > tbody > tr > td.warning:hover,
.table-hover > tbody > tr > th.warning:hover,
.table-hover > tbody > tr.warning:hover > td,
+.table-hover > tbody > tr:hover > .warning,
.table-hover > tbody > tr.warning:hover > th {
background-color: #faf2cc;
}
@@ -1579,16 +2241,19 @@ table th[class*="col-"] {
.table-hover > tbody > tr > td.danger:hover,
.table-hover > tbody > tr > th.danger:hover,
.table-hover > tbody > tr.danger:hover > td,
+.table-hover > tbody > tr:hover > .danger,
.table-hover > tbody > tr.danger:hover > th {
background-color: #ebcccc;
}
-@media (max-width: 767px) {
+.table-responsive {
+ min-height: .01%;
+ overflow-x: auto;
+}
+@media screen and (max-width: 767px) {
.table-responsive {
width: 100%;
margin-bottom: 15px;
- overflow-x: scroll;
overflow-y: hidden;
- -webkit-overflow-scrolling: touch;
-ms-overflow-style: -ms-autohiding-scrollbar;
border: 1px solid #ddd;
}
@@ -1648,6 +2313,7 @@ legend {
}
label {
display: inline-block;
+ max-width: 100%;
margin-bottom: 5px;
font-weight: bold;
}
@@ -1660,7 +2326,6 @@ input[type="radio"],
input[type="checkbox"] {
margin: 4px 0 0;
margin-top: 1px \9;
- /* IE8-9 */
line-height: normal;
}
input[type="file"] {
@@ -1702,7 +2367,8 @@ output {
border-radius: 4px;
-webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075);
box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075);
- -webkit-transition: border-color ease-in-out .15s, box-shadow ease-in-out .15s;
+ -webkit-transition: border-color ease-in-out .15s, -webkit-box-shadow ease-in-out .15s;
+ -o-transition: border-color ease-in-out .15s, box-shadow ease-in-out .15s;
transition: border-color ease-in-out .15s, box-shadow ease-in-out .15s;
}
.form-control:focus {
@@ -1734,23 +2400,41 @@ textarea.form-control {
input[type="search"] {
-webkit-appearance: none;
}
-input[type="date"] {
- line-height: 34px;
+@media screen and (-webkit-min-device-pixel-ratio: 0) {
+ input[type="date"],
+ input[type="time"],
+ input[type="datetime-local"],
+ input[type="month"] {
+ line-height: 34px;
+ }
+ input[type="date"].input-sm,
+ input[type="time"].input-sm,
+ input[type="datetime-local"].input-sm,
+ input[type="month"].input-sm {
+ line-height: 30px;
+ }
+ input[type="date"].input-lg,
+ input[type="time"].input-lg,
+ input[type="datetime-local"].input-lg,
+ input[type="month"].input-lg {
+ line-height: 46px;
+ }
}
.form-group {
margin-bottom: 15px;
}
.radio,
.checkbox {
+ position: relative;
display: block;
- min-height: 20px;
- padding-left: 20px;
margin-top: 10px;
margin-bottom: 10px;
}
.radio label,
.checkbox label {
- display: inline;
+ min-height: 20px;
+ padding-left: 20px;
+ margin-bottom: 0;
font-weight: normal;
cursor: pointer;
}
@@ -1758,7 +2442,8 @@ input[type="date"] {
.radio-inline input[type="radio"],
.checkbox input[type="checkbox"],
.checkbox-inline input[type="checkbox"] {
- float: left;
+ position: absolute;
+ margin-top: 4px \9;
margin-left: -20px;
}
.radio + .radio,
@@ -1781,46 +2466,70 @@ input[type="date"] {
}
input[type="radio"][disabled],
input[type="checkbox"][disabled],
-.radio[disabled],
-.radio-inline[disabled],
-.checkbox[disabled],
-.checkbox-inline[disabled],
+input[type="radio"].disabled,
+input[type="checkbox"].disabled,
fieldset[disabled] input[type="radio"],
-fieldset[disabled] input[type="checkbox"],
-fieldset[disabled] .radio,
+fieldset[disabled] input[type="checkbox"] {
+ cursor: not-allowed;
+}
+.radio-inline.disabled,
+.checkbox-inline.disabled,
fieldset[disabled] .radio-inline,
-fieldset[disabled] .checkbox,
fieldset[disabled] .checkbox-inline {
cursor: not-allowed;
}
-.input-sm {
+.radio.disabled label,
+.checkbox.disabled label,
+fieldset[disabled] .radio label,
+fieldset[disabled] .checkbox label {
+ cursor: not-allowed;
+}
+.form-control-static {
+ padding-top: 7px;
+ padding-bottom: 7px;
+ margin-bottom: 0;
+}
+.form-control-static.input-lg,
+.form-control-static.input-sm {
+ padding-right: 0;
+ padding-left: 0;
+}
+.input-sm,
+.form-group-sm .form-control {
height: 30px;
padding: 5px 10px;
font-size: 12px;
line-height: 1.5;
border-radius: 3px;
}
-select.input-sm {
+select.input-sm,
+select.form-group-sm .form-control {
height: 30px;
line-height: 30px;
}
textarea.input-sm,
-select[multiple].input-sm {
+textarea.form-group-sm .form-control,
+select[multiple].input-sm,
+select[multiple].form-group-sm .form-control {
height: auto;
}
-.input-lg {
+.input-lg,
+.form-group-lg .form-control {
height: 46px;
padding: 10px 16px;
font-size: 18px;
line-height: 1.33;
border-radius: 6px;
}
-select.input-lg {
+select.input-lg,
+select.form-group-lg .form-control {
height: 46px;
line-height: 46px;
}
textarea.input-lg,
-select[multiple].input-lg {
+textarea.form-group-lg .form-control,
+select[multiple].input-lg,
+select[multiple].form-group-lg .form-control {
height: auto;
}
.has-feedback {
@@ -1829,22 +2538,38 @@ select[multiple].input-lg {
.has-feedback .form-control {
padding-right: 42.5px;
}
-.has-feedback .form-control-feedback {
+.form-control-feedback {
position: absolute;
- top: 25px;
+ top: 0;
right: 0;
+ z-index: 2;
display: block;
width: 34px;
height: 34px;
line-height: 34px;
text-align: center;
+ pointer-events: none;
+}
+.input-lg + .form-control-feedback {
+ width: 46px;
+ height: 46px;
+ line-height: 46px;
+}
+.input-sm + .form-control-feedback {
+ width: 30px;
+ height: 30px;
+ line-height: 30px;
}
.has-success .help-block,
.has-success .control-label,
.has-success .radio,
.has-success .checkbox,
.has-success .radio-inline,
-.has-success .checkbox-inline {
+.has-success .checkbox-inline,
+.has-success.radio label,
+.has-success.checkbox label,
+.has-success.radio-inline label,
+.has-success.checkbox-inline label {
color: #3c763d;
}
.has-success .form-control {
@@ -1870,7 +2595,11 @@ select[multiple].input-lg {
.has-warning .radio,
.has-warning .checkbox,
.has-warning .radio-inline,
-.has-warning .checkbox-inline {
+.has-warning .checkbox-inline,
+.has-warning.radio label,
+.has-warning.checkbox label,
+.has-warning.radio-inline label,
+.has-warning.checkbox-inline label {
color: #8a6d3b;
}
.has-warning .form-control {
@@ -1896,7 +2625,11 @@ select[multiple].input-lg {
.has-error .radio,
.has-error .checkbox,
.has-error .radio-inline,
-.has-error .checkbox-inline {
+.has-error .checkbox-inline,
+.has-error.radio label,
+.has-error.checkbox label,
+.has-error.radio-inline label,
+.has-error.checkbox-inline label {
color: #a94442;
}
.has-error .form-control {
@@ -1917,8 +2650,11 @@ select[multiple].input-lg {
.has-error .form-control-feedback {
color: #a94442;
}
-.form-control-static {
- margin-bottom: 0;
+.has-feedback label ~ .form-control-feedback {
+ top: 25px;
+}
+.has-feedback label.sr-only ~ .form-control-feedback {
+ top: 0;
}
.help-block {
display: block;
@@ -1937,6 +2673,18 @@ select[multiple].input-lg {
width: auto;
vertical-align: middle;
}
+ .form-inline .form-control-static {
+ display: inline-block;
+ }
+ .form-inline .input-group {
+ display: inline-table;
+ vertical-align: middle;
+ }
+ .form-inline .input-group .input-group-addon,
+ .form-inline .input-group .input-group-btn,
+ .form-inline .input-group .form-control {
+ width: auto;
+ }
.form-inline .input-group > .form-control {
width: 100%;
}
@@ -1947,21 +2695,23 @@ select[multiple].input-lg {
.form-inline .radio,
.form-inline .checkbox {
display: inline-block;
- padding-left: 0;
margin-top: 0;
margin-bottom: 0;
vertical-align: middle;
}
+ .form-inline .radio label,
+ .form-inline .checkbox label {
+ padding-left: 0;
+ }
.form-inline .radio input[type="radio"],
.form-inline .checkbox input[type="checkbox"] {
- float: none;
+ position: relative;
margin-left: 0;
}
.form-inline .has-feedback .form-control-feedback {
top: 0;
}
}
-.form-horizontal .control-label,
.form-horizontal .radio,
.form-horizontal .checkbox,
.form-horizontal .radio-inline,
@@ -1978,18 +2728,26 @@ select[multiple].input-lg {
margin-right: -15px;
margin-left: -15px;
}
-.form-horizontal .form-control-static {
- padding-top: 7px;
-}
@media (min-width: 768px) {
.form-horizontal .control-label {
+ padding-top: 7px;
+ margin-bottom: 0;
text-align: right;
}
}
.form-horizontal .has-feedback .form-control-feedback {
- top: 0;
right: 15px;
}
+@media (min-width: 768px) {
+ .form-horizontal .form-group-lg .control-label {
+ padding-top: 14.3px;
+ }
+}
+@media (min-width: 768px) {
+ .form-horizontal .form-group-sm .control-label {
+ padding-top: 6px;
+ }
+}
.btn {
display: inline-block;
padding: 6px 12px;
@@ -2000,6 +2758,8 @@ select[multiple].input-lg {
text-align: center;
white-space: nowrap;
vertical-align: middle;
+ -ms-touch-action: manipulation;
+ touch-action: manipulation;
cursor: pointer;
-webkit-user-select: none;
-moz-user-select: none;
@@ -2011,13 +2771,17 @@ select[multiple].input-lg {
}
.btn:focus,
.btn:active:focus,
-.btn.active:focus {
+.btn.active:focus,
+.btn.focus,
+.btn:active.focus,
+.btn.active.focus {
outline: thin dotted;
outline: 5px auto -webkit-focus-ring-color;
outline-offset: -2px;
}
.btn:hover,
-.btn:focus {
+.btn:focus,
+.btn.focus {
color: #333;
text-decoration: none;
}
@@ -2045,16 +2809,17 @@ fieldset[disabled] .btn {
}
.btn-default:hover,
.btn-default:focus,
+.btn-default.focus,
.btn-default:active,
.btn-default.active,
-.open .dropdown-toggle.btn-default {
+.open > .dropdown-toggle.btn-default {
color: #333;
- background-color: #ebebeb;
+ background-color: #e6e6e6;
border-color: #adadad;
}
.btn-default:active,
.btn-default.active,
-.open .dropdown-toggle.btn-default {
+.open > .dropdown-toggle.btn-default {
background-image: none;
}
.btn-default.disabled,
@@ -2066,6 +2831,9 @@ fieldset[disabled] .btn-default:hover,
.btn-default.disabled:focus,
.btn-default[disabled]:focus,
fieldset[disabled] .btn-default:focus,
+.btn-default.disabled.focus,
+.btn-default[disabled].focus,
+fieldset[disabled] .btn-default.focus,
.btn-default.disabled:active,
.btn-default[disabled]:active,
fieldset[disabled] .btn-default:active,
@@ -2081,21 +2849,22 @@ fieldset[disabled] .btn-default.active {
}
.btn-primary {
color: #fff;
- background-color: #428bca;
- border-color: #357ebd;
+ background-color: #337ab7;
+ border-color: #2e6da4;
}
.btn-primary:hover,
.btn-primary:focus,
+.btn-primary.focus,
.btn-primary:active,
.btn-primary.active,
-.open .dropdown-toggle.btn-primary {
+.open > .dropdown-toggle.btn-primary {
color: #fff;
- background-color: #3276b1;
- border-color: #285e8e;
+ background-color: #286090;
+ border-color: #204d74;
}
.btn-primary:active,
.btn-primary.active,
-.open .dropdown-toggle.btn-primary {
+.open > .dropdown-toggle.btn-primary {
background-image: none;
}
.btn-primary.disabled,
@@ -2107,17 +2876,20 @@ fieldset[disabled] .btn-primary:hover,
.btn-primary.disabled:focus,
.btn-primary[disabled]:focus,
fieldset[disabled] .btn-primary:focus,
+.btn-primary.disabled.focus,
+.btn-primary[disabled].focus,
+fieldset[disabled] .btn-primary.focus,
.btn-primary.disabled:active,
.btn-primary[disabled]:active,
fieldset[disabled] .btn-primary:active,
.btn-primary.disabled.active,
.btn-primary[disabled].active,
fieldset[disabled] .btn-primary.active {
- background-color: #428bca;
- border-color: #357ebd;
+ background-color: #337ab7;
+ border-color: #2e6da4;
}
.btn-primary .badge {
- color: #428bca;
+ color: #337ab7;
background-color: #fff;
}
.btn-success {
@@ -2127,16 +2899,17 @@ fieldset[disabled] .btn-primary.active {
}
.btn-success:hover,
.btn-success:focus,
+.btn-success.focus,
.btn-success:active,
.btn-success.active,
-.open .dropdown-toggle.btn-success {
+.open > .dropdown-toggle.btn-success {
color: #fff;
- background-color: #47a447;
+ background-color: #449d44;
border-color: #398439;
}
.btn-success:active,
.btn-success.active,
-.open .dropdown-toggle.btn-success {
+.open > .dropdown-toggle.btn-success {
background-image: none;
}
.btn-success.disabled,
@@ -2148,6 +2921,9 @@ fieldset[disabled] .btn-success:hover,
.btn-success.disabled:focus,
.btn-success[disabled]:focus,
fieldset[disabled] .btn-success:focus,
+.btn-success.disabled.focus,
+.btn-success[disabled].focus,
+fieldset[disabled] .btn-success.focus,
.btn-success.disabled:active,
.btn-success[disabled]:active,
fieldset[disabled] .btn-success:active,
@@ -2168,16 +2944,17 @@ fieldset[disabled] .btn-success.active {
}
.btn-info:hover,
.btn-info:focus,
+.btn-info.focus,
.btn-info:active,
.btn-info.active,
-.open .dropdown-toggle.btn-info {
+.open > .dropdown-toggle.btn-info {
color: #fff;
- background-color: #39b3d7;
+ background-color: #31b0d5;
border-color: #269abc;
}
.btn-info:active,
.btn-info.active,
-.open .dropdown-toggle.btn-info {
+.open > .dropdown-toggle.btn-info {
background-image: none;
}
.btn-info.disabled,
@@ -2189,6 +2966,9 @@ fieldset[disabled] .btn-info:hover,
.btn-info.disabled:focus,
.btn-info[disabled]:focus,
fieldset[disabled] .btn-info:focus,
+.btn-info.disabled.focus,
+.btn-info[disabled].focus,
+fieldset[disabled] .btn-info.focus,
.btn-info.disabled:active,
.btn-info[disabled]:active,
fieldset[disabled] .btn-info:active,
@@ -2209,16 +2989,17 @@ fieldset[disabled] .btn-info.active {
}
.btn-warning:hover,
.btn-warning:focus,
+.btn-warning.focus,
.btn-warning:active,
.btn-warning.active,
-.open .dropdown-toggle.btn-warning {
+.open > .dropdown-toggle.btn-warning {
color: #fff;
- background-color: #ed9c28;
+ background-color: #ec971f;
border-color: #d58512;
}
.btn-warning:active,
.btn-warning.active,
-.open .dropdown-toggle.btn-warning {
+.open > .dropdown-toggle.btn-warning {
background-image: none;
}
.btn-warning.disabled,
@@ -2230,6 +3011,9 @@ fieldset[disabled] .btn-warning:hover,
.btn-warning.disabled:focus,
.btn-warning[disabled]:focus,
fieldset[disabled] .btn-warning:focus,
+.btn-warning.disabled.focus,
+.btn-warning[disabled].focus,
+fieldset[disabled] .btn-warning.focus,
.btn-warning.disabled:active,
.btn-warning[disabled]:active,
fieldset[disabled] .btn-warning:active,
@@ -2250,16 +3034,17 @@ fieldset[disabled] .btn-warning.active {
}
.btn-danger:hover,
.btn-danger:focus,
+.btn-danger.focus,
.btn-danger:active,
.btn-danger.active,
-.open .dropdown-toggle.btn-danger {
+.open > .dropdown-toggle.btn-danger {
color: #fff;
- background-color: #d2322d;
+ background-color: #c9302c;
border-color: #ac2925;
}
.btn-danger:active,
.btn-danger.active,
-.open .dropdown-toggle.btn-danger {
+.open > .dropdown-toggle.btn-danger {
background-image: none;
}
.btn-danger.disabled,
@@ -2271,6 +3056,9 @@ fieldset[disabled] .btn-danger:hover,
.btn-danger.disabled:focus,
.btn-danger[disabled]:focus,
fieldset[disabled] .btn-danger:focus,
+.btn-danger.disabled.focus,
+.btn-danger[disabled].focus,
+fieldset[disabled] .btn-danger.focus,
.btn-danger.disabled:active,
.btn-danger[disabled]:active,
fieldset[disabled] .btn-danger:active,
@@ -2286,12 +3074,12 @@ fieldset[disabled] .btn-danger.active {
}
.btn-link {
font-weight: normal;
- color: #428bca;
- cursor: pointer;
+ color: #337ab7;
border-radius: 0;
}
.btn-link,
.btn-link:active,
+.btn-link.active,
.btn-link[disabled],
fieldset[disabled] .btn-link {
background-color: transparent;
@@ -2306,7 +3094,7 @@ fieldset[disabled] .btn-link {
}
.btn-link:hover,
.btn-link:focus {
- color: #2a6496;
+ color: #23527c;
text-decoration: underline;
background-color: transparent;
}
@@ -2314,7 +3102,7 @@ fieldset[disabled] .btn-link {
fieldset[disabled] .btn-link:hover,
.btn-link[disabled]:focus,
fieldset[disabled] .btn-link:focus {
- color: #999;
+ color: #777;
text-decoration: none;
}
.btn-lg,
@@ -2341,8 +3129,6 @@ fieldset[disabled] .btn-link:focus {
.btn-block {
display: block;
width: 100%;
- padding-right: 0;
- padding-left: 0;
}
.btn-block + .btn-block {
margin-top: 5px;
@@ -2355,6 +3141,7 @@ input[type="button"].btn-block {
.fade {
opacity: 0;
-webkit-transition: opacity .15s linear;
+ -o-transition: opacity .15s linear;
transition: opacity .15s linear;
}
.fade.in {
@@ -2362,634 +3149,31 @@ input[type="button"].btn-block {
}
.collapse {
display: none;
+ visibility: hidden;
}
.collapse.in {
display: block;
+ visibility: visible;
+}
+tr.collapse.in {
+ display: table-row;
+}
+tbody.collapse.in {
+ display: table-row-group;
}
.collapsing {
position: relative;
height: 0;
overflow: hidden;
- -webkit-transition: height .35s ease;
- transition: height .35s ease;
-}
-@font-face {
- font-family: 'Glyphicons Halflings';
-
- src: url('../fonts/glyphicons-halflings-regular.eot');
- src: url('../fonts/glyphicons-halflings-regular.eot?#iefix') format('embedded-opentype'), url('../fonts/glyphicons-halflings-regular.woff') format('woff'), url('../fonts/glyphicons-halflings-regular.ttf') format('truetype'), url('../fonts/glyphicons-halflings-regular.svg#glyphicons_halflingsregular') format('svg');
-}
-.glyphicon {
- position: relative;
- top: 1px;
- display: inline-block;
- font-family: 'Glyphicons Halflings';
- font-style: normal;
- font-weight: normal;
- line-height: 1;
-
- -webkit-font-smoothing: antialiased;
- -moz-osx-font-smoothing: grayscale;
-}
-.glyphicon-asterisk:before {
- content: "\2a";
-}
-.glyphicon-plus:before {
- content: "\2b";
-}
-.glyphicon-euro:before {
- content: "\20ac";
-}
-.glyphicon-minus:before {
- content: "\2212";
-}
-.glyphicon-cloud:before {
- content: "\2601";
-}
-.glyphicon-envelope:before {
- content: "\2709";
-}
-.glyphicon-pencil:before {
- content: "\270f";
-}
-.glyphicon-glass:before {
- content: "\e001";
-}
-.glyphicon-music:before {
- content: "\e002";
-}
-.glyphicon-search:before {
- content: "\e003";
-}
-.glyphicon-heart:before {
- content: "\e005";
-}
-.glyphicon-star:before {
- content: "\e006";
-}
-.glyphicon-star-empty:before {
- content: "\e007";
-}
-.glyphicon-user:before {
- content: "\e008";
-}
-.glyphicon-film:before {
- content: "\e009";
-}
-.glyphicon-th-large:before {
- content: "\e010";
-}
-.glyphicon-th:before {
- content: "\e011";
-}
-.glyphicon-th-list:before {
- content: "\e012";
-}
-.glyphicon-ok:before {
- content: "\e013";
-}
-.glyphicon-remove:before {
- content: "\e014";
-}
-.glyphicon-zoom-in:before {
- content: "\e015";
-}
-.glyphicon-zoom-out:before {
- content: "\e016";
-}
-.glyphicon-off:before {
- content: "\e017";
-}
-.glyphicon-signal:before {
- content: "\e018";
-}
-.glyphicon-cog:before {
- content: "\e019";
-}
-.glyphicon-trash:before {
- content: "\e020";
-}
-.glyphicon-home:before {
- content: "\e021";
-}
-.glyphicon-file:before {
- content: "\e022";
-}
-.glyphicon-time:before {
- content: "\e023";
-}
-.glyphicon-road:before {
- content: "\e024";
-}
-.glyphicon-download-alt:before {
- content: "\e025";
-}
-.glyphicon-download:before {
- content: "\e026";
-}
-.glyphicon-upload:before {
- content: "\e027";
-}
-.glyphicon-inbox:before {
- content: "\e028";
-}
-.glyphicon-play-circle:before {
- content: "\e029";
-}
-.glyphicon-repeat:before {
- content: "\e030";
-}
-.glyphicon-refresh:before {
- content: "\e031";
-}
-.glyphicon-list-alt:before {
- content: "\e032";
-}
-.glyphicon-lock:before {
- content: "\e033";
-}
-.glyphicon-flag:before {
- content: "\e034";
-}
-.glyphicon-headphones:before {
- content: "\e035";
-}
-.glyphicon-volume-off:before {
- content: "\e036";
-}
-.glyphicon-volume-down:before {
- content: "\e037";
-}
-.glyphicon-volume-up:before {
- content: "\e038";
-}
-.glyphicon-qrcode:before {
- content: "\e039";
-}
-.glyphicon-barcode:before {
- content: "\e040";
-}
-.glyphicon-tag:before {
- content: "\e041";
-}
-.glyphicon-tags:before {
- content: "\e042";
-}
-.glyphicon-book:before {
- content: "\e043";
-}
-.glyphicon-bookmark:before {
- content: "\e044";
-}
-.glyphicon-print:before {
- content: "\e045";
-}
-.glyphicon-camera:before {
- content: "\e046";
-}
-.glyphicon-font:before {
- content: "\e047";
-}
-.glyphicon-bold:before {
- content: "\e048";
-}
-.glyphicon-italic:before {
- content: "\e049";
-}
-.glyphicon-text-height:before {
- content: "\e050";
-}
-.glyphicon-text-width:before {
- content: "\e051";
-}
-.glyphicon-align-left:before {
- content: "\e052";
-}
-.glyphicon-align-center:before {
- content: "\e053";
-}
-.glyphicon-align-right:before {
- content: "\e054";
-}
-.glyphicon-align-justify:before {
- content: "\e055";
-}
-.glyphicon-list:before {
- content: "\e056";
-}
-.glyphicon-indent-left:before {
- content: "\e057";
-}
-.glyphicon-indent-right:before {
- content: "\e058";
-}
-.glyphicon-facetime-video:before {
- content: "\e059";
-}
-.glyphicon-picture:before {
- content: "\e060";
-}
-.glyphicon-map-marker:before {
- content: "\e062";
-}
-.glyphicon-adjust:before {
- content: "\e063";
-}
-.glyphicon-tint:before {
- content: "\e064";
-}
-.glyphicon-edit:before {
- content: "\e065";
-}
-.glyphicon-share:before {
- content: "\e066";
-}
-.glyphicon-check:before {
- content: "\e067";
-}
-.glyphicon-move:before {
- content: "\e068";
-}
-.glyphicon-step-backward:before {
- content: "\e069";
-}
-.glyphicon-fast-backward:before {
- content: "\e070";
-}
-.glyphicon-backward:before {
- content: "\e071";
-}
-.glyphicon-play:before {
- content: "\e072";
-}
-.glyphicon-pause:before {
- content: "\e073";
-}
-.glyphicon-stop:before {
- content: "\e074";
-}
-.glyphicon-forward:before {
- content: "\e075";
-}
-.glyphicon-fast-forward:before {
- content: "\e076";
-}
-.glyphicon-step-forward:before {
- content: "\e077";
-}
-.glyphicon-eject:before {
- content: "\e078";
-}
-.glyphicon-chevron-left:before {
- content: "\e079";
-}
-.glyphicon-chevron-right:before {
- content: "\e080";
-}
-.glyphicon-plus-sign:before {
- content: "\e081";
-}
-.glyphicon-minus-sign:before {
- content: "\e082";
-}
-.glyphicon-remove-sign:before {
- content: "\e083";
-}
-.glyphicon-ok-sign:before {
- content: "\e084";
-}
-.glyphicon-question-sign:before {
- content: "\e085";
-}
-.glyphicon-info-sign:before {
- content: "\e086";
-}
-.glyphicon-screenshot:before {
- content: "\e087";
-}
-.glyphicon-remove-circle:before {
- content: "\e088";
-}
-.glyphicon-ok-circle:before {
- content: "\e089";
-}
-.glyphicon-ban-circle:before {
- content: "\e090";
-}
-.glyphicon-arrow-left:before {
- content: "\e091";
-}
-.glyphicon-arrow-right:before {
- content: "\e092";
-}
-.glyphicon-arrow-up:before {
- content: "\e093";
-}
-.glyphicon-arrow-down:before {
- content: "\e094";
-}
-.glyphicon-share-alt:before {
- content: "\e095";
-}
-.glyphicon-resize-full:before {
- content: "\e096";
-}
-.glyphicon-resize-small:before {
- content: "\e097";
-}
-.glyphicon-exclamation-sign:before {
- content: "\e101";
-}
-.glyphicon-gift:before {
- content: "\e102";
-}
-.glyphicon-leaf:before {
- content: "\e103";
-}
-.glyphicon-fire:before {
- content: "\e104";
-}
-.glyphicon-eye-open:before {
- content: "\e105";
-}
-.glyphicon-eye-close:before {
- content: "\e106";
-}
-.glyphicon-warning-sign:before {
- content: "\e107";
-}
-.glyphicon-plane:before {
- content: "\e108";
-}
-.glyphicon-calendar:before {
- content: "\e109";
-}
-.glyphicon-random:before {
- content: "\e110";
-}
-.glyphicon-comment:before {
- content: "\e111";
-}
-.glyphicon-magnet:before {
- content: "\e112";
-}
-.glyphicon-chevron-up:before {
- content: "\e113";
-}
-.glyphicon-chevron-down:before {
- content: "\e114";
-}
-.glyphicon-retweet:before {
- content: "\e115";
-}
-.glyphicon-shopping-cart:before {
- content: "\e116";
-}
-.glyphicon-folder-close:before {
- content: "\e117";
-}
-.glyphicon-folder-open:before {
- content: "\e118";
-}
-.glyphicon-resize-vertical:before {
- content: "\e119";
-}
-.glyphicon-resize-horizontal:before {
- content: "\e120";
-}
-.glyphicon-hdd:before {
- content: "\e121";
-}
-.glyphicon-bullhorn:before {
- content: "\e122";
-}
-.glyphicon-bell:before {
- content: "\e123";
-}
-.glyphicon-certificate:before {
- content: "\e124";
-}
-.glyphicon-thumbs-up:before {
- content: "\e125";
-}
-.glyphicon-thumbs-down:before {
- content: "\e126";
-}
-.glyphicon-hand-right:before {
- content: "\e127";
-}
-.glyphicon-hand-left:before {
- content: "\e128";
-}
-.glyphicon-hand-up:before {
- content: "\e129";
-}
-.glyphicon-hand-down:before {
- content: "\e130";
-}
-.glyphicon-circle-arrow-right:before {
- content: "\e131";
-}
-.glyphicon-circle-arrow-left:before {
- content: "\e132";
-}
-.glyphicon-circle-arrow-up:before {
- content: "\e133";
-}
-.glyphicon-circle-arrow-down:before {
- content: "\e134";
-}
-.glyphicon-globe:before {
- content: "\e135";
-}
-.glyphicon-wrench:before {
- content: "\e136";
-}
-.glyphicon-tasks:before {
- content: "\e137";
-}
-.glyphicon-filter:before {
- content: "\e138";
-}
-.glyphicon-briefcase:before {
- content: "\e139";
-}
-.glyphicon-fullscreen:before {
- content: "\e140";
-}
-.glyphicon-dashboard:before {
- content: "\e141";
-}
-.glyphicon-paperclip:before {
- content: "\e142";
-}
-.glyphicon-heart-empty:before {
- content: "\e143";
-}
-.glyphicon-link:before {
- content: "\e144";
-}
-.glyphicon-phone:before {
- content: "\e145";
-}
-.glyphicon-pushpin:before {
- content: "\e146";
-}
-.glyphicon-usd:before {
- content: "\e148";
-}
-.glyphicon-gbp:before {
- content: "\e149";
-}
-.glyphicon-sort:before {
- content: "\e150";
-}
-.glyphicon-sort-by-alphabet:before {
- content: "\e151";
-}
-.glyphicon-sort-by-alphabet-alt:before {
- content: "\e152";
-}
-.glyphicon-sort-by-order:before {
- content: "\e153";
-}
-.glyphicon-sort-by-order-alt:before {
- content: "\e154";
-}
-.glyphicon-sort-by-attributes:before {
- content: "\e155";
-}
-.glyphicon-sort-by-attributes-alt:before {
- content: "\e156";
-}
-.glyphicon-unchecked:before {
- content: "\e157";
-}
-.glyphicon-expand:before {
- content: "\e158";
-}
-.glyphicon-collapse-down:before {
- content: "\e159";
-}
-.glyphicon-collapse-up:before {
- content: "\e160";
-}
-.glyphicon-log-in:before {
- content: "\e161";
-}
-.glyphicon-flash:before {
- content: "\e162";
-}
-.glyphicon-log-out:before {
- content: "\e163";
-}
-.glyphicon-new-window:before {
- content: "\e164";
-}
-.glyphicon-record:before {
- content: "\e165";
-}
-.glyphicon-save:before {
- content: "\e166";
-}
-.glyphicon-open:before {
- content: "\e167";
-}
-.glyphicon-saved:before {
- content: "\e168";
-}
-.glyphicon-import:before {
- content: "\e169";
-}
-.glyphicon-export:before {
- content: "\e170";
-}
-.glyphicon-send:before {
- content: "\e171";
-}
-.glyphicon-floppy-disk:before {
- content: "\e172";
-}
-.glyphicon-floppy-saved:before {
- content: "\e173";
-}
-.glyphicon-floppy-remove:before {
- content: "\e174";
-}
-.glyphicon-floppy-save:before {
- content: "\e175";
-}
-.glyphicon-floppy-open:before {
- content: "\e176";
-}
-.glyphicon-credit-card:before {
- content: "\e177";
-}
-.glyphicon-transfer:before {
- content: "\e178";
-}
-.glyphicon-cutlery:before {
- content: "\e179";
-}
-.glyphicon-header:before {
- content: "\e180";
-}
-.glyphicon-compressed:before {
- content: "\e181";
-}
-.glyphicon-earphone:before {
- content: "\e182";
-}
-.glyphicon-phone-alt:before {
- content: "\e183";
-}
-.glyphicon-tower:before {
- content: "\e184";
-}
-.glyphicon-stats:before {
- content: "\e185";
-}
-.glyphicon-sd-video:before {
- content: "\e186";
-}
-.glyphicon-hd-video:before {
- content: "\e187";
-}
-.glyphicon-subtitles:before {
- content: "\e188";
-}
-.glyphicon-sound-stereo:before {
- content: "\e189";
-}
-.glyphicon-sound-dolby:before {
- content: "\e190";
-}
-.glyphicon-sound-5-1:before {
- content: "\e191";
-}
-.glyphicon-sound-6-1:before {
- content: "\e192";
-}
-.glyphicon-sound-7-1:before {
- content: "\e193";
-}
-.glyphicon-copyright-mark:before {
- content: "\e194";
-}
-.glyphicon-registration-mark:before {
- content: "\e195";
-}
-.glyphicon-cloud-download:before {
- content: "\e197";
-}
-.glyphicon-cloud-upload:before {
- content: "\e198";
-}
-.glyphicon-tree-conifer:before {
- content: "\e199";
-}
-.glyphicon-tree-deciduous:before {
- content: "\e200";
+ -webkit-transition-timing-function: ease;
+ -o-transition-timing-function: ease;
+ transition-timing-function: ease;
+ -webkit-transition-duration: .35s;
+ -o-transition-duration: .35s;
+ transition-duration: .35s;
+ -webkit-transition-property: height, visibility;
+ -o-transition-property: height, visibility;
+ transition-property: height, visibility;
}
.caret {
display: inline-block;
@@ -3018,9 +3202,11 @@ input[type="button"].btn-block {
padding: 5px 0;
margin: 2px 0 0;
font-size: 14px;
+ text-align: left;
list-style: none;
background-color: #fff;
- background-clip: padding-box;
+ -webkit-background-clip: padding-box;
+ background-clip: padding-box;
border: 1px solid #ccc;
border: 1px solid rgba(0, 0, 0, .15);
border-radius: 4px;
@@ -3057,13 +3243,13 @@ input[type="button"].btn-block {
.dropdown-menu > .active > a:focus {
color: #fff;
text-decoration: none;
- background-color: #428bca;
+ background-color: #337ab7;
outline: 0;
}
.dropdown-menu > .disabled > a,
.dropdown-menu > .disabled > a:hover,
.dropdown-menu > .disabled > a:focus {
- color: #999;
+ color: #777;
}
.dropdown-menu > .disabled > a:hover,
.dropdown-menu > .disabled > a:focus {
@@ -3092,7 +3278,8 @@ input[type="button"].btn-block {
padding: 3px 20px;
font-size: 12px;
line-height: 1.42857143;
- color: #999;
+ color: #777;
+ white-space: nowrap;
}
.dropdown-backdrop {
position: fixed;
@@ -3149,10 +3336,6 @@ input[type="button"].btn-block {
.btn-group-vertical > .btn.active {
z-index: 2;
}
-.btn-group > .btn:focus,
-.btn-group-vertical > .btn:focus {
- outline: none;
-}
.btn-group .btn + .btn,
.btn-group .btn + .btn-group,
.btn-group .btn-group + .btn,
@@ -3289,9 +3472,16 @@ input[type="button"].btn-block {
.btn-group-justified > .btn-group .btn {
width: 100%;
}
-[data-toggle="buttons"] > .btn > input[type="radio"],
-[data-toggle="buttons"] > .btn > input[type="checkbox"] {
- display: none;
+.btn-group-justified > .btn-group .dropdown-menu {
+ left: auto;
+}
+[data-toggle="buttons"] > .btn input[type="radio"],
+[data-toggle="buttons"] > .btn-group > .btn input[type="radio"],
+[data-toggle="buttons"] > .btn input[type="checkbox"],
+[data-toggle="buttons"] > .btn-group > .btn input[type="checkbox"] {
+ position: absolute;
+ clip: rect(0, 0, 0, 0);
+ pointer-events: none;
}
.input-group {
position: relative;
@@ -3467,11 +3657,11 @@ select[multiple].input-group-sm > .input-group-btn > .btn {
background-color: #eee;
}
.nav > li.disabled > a {
- color: #999;
+ color: #777;
}
.nav > li.disabled > a:hover,
.nav > li.disabled > a:focus {
- color: #999;
+ color: #777;
text-decoration: none;
cursor: not-allowed;
background-color: transparent;
@@ -3480,7 +3670,7 @@ select[multiple].input-group-sm > .input-group-btn > .btn {
.nav .open > a:hover,
.nav .open > a:focus {
background-color: #eee;
- border-color: #428bca;
+ border-color: #337ab7;
}
.nav .nav-divider {
height: 1px;
@@ -3573,7 +3763,7 @@ select[multiple].input-group-sm > .input-group-btn > .btn {
.nav-pills > li.active > a:hover,
.nav-pills > li.active > a:focus {
color: #fff;
- background-color: #428bca;
+ background-color: #337ab7;
}
.nav-stacked > li {
float: none;
@@ -3630,9 +3820,11 @@ select[multiple].input-group-sm > .input-group-btn > .btn {
}
.tab-content > .tab-pane {
display: none;
+ visibility: hidden;
}
.tab-content > .active {
display: block;
+ visibility: visible;
}
.nav-tabs .dropdown-menu {
margin-top: -1px;
@@ -3656,13 +3848,13 @@ select[multiple].input-group-sm > .input-group-btn > .btn {
}
}
.navbar-collapse {
- max-height: 340px;
padding-right: 15px;
padding-left: 15px;
overflow-x: visible;
-webkit-overflow-scrolling: touch;
border-top: 1px solid transparent;
- box-shadow: inset 0 1px 0 rgba(255, 255, 255, .1);
+ -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, .1);
+ box-shadow: inset 0 1px 0 rgba(255, 255, 255, .1);
}
.navbar-collapse.in {
overflow-y: auto;
@@ -3671,13 +3863,15 @@ select[multiple].input-group-sm > .input-group-btn > .btn {
.navbar-collapse {
width: auto;
border-top: 0;
- box-shadow: none;
+ -webkit-box-shadow: none;
+ box-shadow: none;
}
.navbar-collapse.collapse {
display: block !important;
height: auto !important;
padding-bottom: 0;
overflow: visible !important;
+ visibility: visible !important;
}
.navbar-collapse.in {
overflow-y: visible;
@@ -3689,6 +3883,16 @@ select[multiple].input-group-sm > .input-group-btn > .btn {
padding-left: 0;
}
}
+.navbar-fixed-top .navbar-collapse,
+.navbar-fixed-bottom .navbar-collapse {
+ max-height: 340px;
+}
+@media (max-device-width: 480px) and (orientation: landscape) {
+ .navbar-fixed-top .navbar-collapse,
+ .navbar-fixed-bottom .navbar-collapse {
+ max-height: 200px;
+ }
+}
.container > .navbar-header,
.container-fluid > .navbar-header,
.container > .navbar-collapse,
@@ -3747,6 +3951,9 @@ select[multiple].input-group-sm > .input-group-btn > .btn {
.navbar-brand:focus {
text-decoration: none;
}
+.navbar-brand > img {
+ display: block;
+}
@media (min-width: 768px) {
.navbar > .container .navbar-brand,
.navbar > .container-fluid .navbar-brand {
@@ -3766,7 +3973,7 @@ select[multiple].input-group-sm > .input-group-btn > .btn {
border-radius: 4px;
}
.navbar-toggle:focus {
- outline: none;
+ outline: 0;
}
.navbar-toggle .icon-bar {
display: block;
@@ -3798,7 +4005,8 @@ select[multiple].input-group-sm > .input-group-btn > .btn {
margin-top: 0;
background-color: transparent;
border: 0;
- box-shadow: none;
+ -webkit-box-shadow: none;
+ box-shadow: none;
}
.navbar-nav .open .dropdown-menu > li > a,
.navbar-nav .open .dropdown-menu .dropdown-header {
@@ -3824,17 +4032,6 @@ select[multiple].input-group-sm > .input-group-btn > .btn {
padding-top: 15px;
padding-bottom: 15px;
}
- .navbar-nav.navbar-right:last-child {
- margin-right: -15px;
- }
-}
-@media (min-width: 768px) {
- .navbar-left {
- float: left !important;
- }
- .navbar-right {
- float: right !important;
- }
}
.navbar-form {
padding: 10px 15px;
@@ -3858,6 +4055,18 @@ select[multiple].input-group-sm > .input-group-btn > .btn {
width: auto;
vertical-align: middle;
}
+ .navbar-form .form-control-static {
+ display: inline-block;
+ }
+ .navbar-form .input-group {
+ display: inline-table;
+ vertical-align: middle;
+ }
+ .navbar-form .input-group .input-group-addon,
+ .navbar-form .input-group .input-group-btn,
+ .navbar-form .input-group .form-control {
+ width: auto;
+ }
.navbar-form .input-group > .form-control {
width: 100%;
}
@@ -3868,14 +4077,17 @@ select[multiple].input-group-sm > .input-group-btn > .btn {
.navbar-form .radio,
.navbar-form .checkbox {
display: inline-block;
- padding-left: 0;
margin-top: 0;
margin-bottom: 0;
vertical-align: middle;
}
+ .navbar-form .radio label,
+ .navbar-form .checkbox label {
+ padding-left: 0;
+ }
.navbar-form .radio input[type="radio"],
.navbar-form .checkbox input[type="checkbox"] {
- float: none;
+ position: relative;
margin-left: 0;
}
.navbar-form .has-feedback .form-control-feedback {
@@ -3886,6 +4098,9 @@ select[multiple].input-group-sm > .input-group-btn > .btn {
.navbar-form .form-group {
margin-bottom: 5px;
}
+ .navbar-form .form-group:last-child {
+ margin-bottom: 0;
+ }
}
@media (min-width: 768px) {
.navbar-form {
@@ -3898,9 +4113,6 @@ select[multiple].input-group-sm > .input-group-btn > .btn {
-webkit-box-shadow: none;
box-shadow: none;
}
- .navbar-form.navbar-right:last-child {
- margin-right: -15px;
- }
}
.navbar-nav > li > .dropdown-menu {
margin-top: 0;
@@ -3908,6 +4120,8 @@ select[multiple].input-group-sm > .input-group-btn > .btn {
border-top-right-radius: 0;
}
.navbar-fixed-bottom .navbar-nav > li > .dropdown-menu {
+ border-top-left-radius: 4px;
+ border-top-right-radius: 4px;
border-bottom-right-radius: 0;
border-bottom-left-radius: 0;
}
@@ -3933,7 +4147,16 @@ select[multiple].input-group-sm > .input-group-btn > .btn {
margin-right: 15px;
margin-left: 15px;
}
- .navbar-text.navbar-right:last-child {
+}
+@media (min-width: 768px) {
+ .navbar-left {
+ float: left !important;
+ }
+ .navbar-right {
+ float: right !important;
+ margin-right: -15px;
+ }
+ .navbar-right ~ .navbar-right {
margin-right: 0;
}
}
@@ -4020,12 +4243,25 @@ select[multiple].input-group-sm > .input-group-btn > .btn {
.navbar-default .navbar-link:hover {
color: #333;
}
+.navbar-default .btn-link {
+ color: #777;
+}
+.navbar-default .btn-link:hover,
+.navbar-default .btn-link:focus {
+ color: #333;
+}
+.navbar-default .btn-link[disabled]:hover,
+fieldset[disabled] .navbar-default .btn-link:hover,
+.navbar-default .btn-link[disabled]:focus,
+fieldset[disabled] .navbar-default .btn-link:focus {
+ color: #ccc;
+}
.navbar-inverse {
background-color: #222;
border-color: #080808;
}
.navbar-inverse .navbar-brand {
- color: #999;
+ color: #9d9d9d;
}
.navbar-inverse .navbar-brand:hover,
.navbar-inverse .navbar-brand:focus {
@@ -4033,10 +4269,10 @@ select[multiple].input-group-sm > .input-group-btn > .btn {
background-color: transparent;
}
.navbar-inverse .navbar-text {
- color: #999;
+ color: #9d9d9d;
}
.navbar-inverse .navbar-nav > li > a {
- color: #999;
+ color: #9d9d9d;
}
.navbar-inverse .navbar-nav > li > a:hover,
.navbar-inverse .navbar-nav > li > a:focus {
@@ -4083,7 +4319,7 @@ select[multiple].input-group-sm > .input-group-btn > .btn {
background-color: #080808;
}
.navbar-inverse .navbar-nav .open .dropdown-menu > li > a {
- color: #999;
+ color: #9d9d9d;
}
.navbar-inverse .navbar-nav .open .dropdown-menu > li > a:hover,
.navbar-inverse .navbar-nav .open .dropdown-menu > li > a:focus {
@@ -4104,11 +4340,24 @@ select[multiple].input-group-sm > .input-group-btn > .btn {
}
}
.navbar-inverse .navbar-link {
- color: #999;
+ color: #9d9d9d;
}
.navbar-inverse .navbar-link:hover {
color: #fff;
}
+.navbar-inverse .btn-link {
+ color: #9d9d9d;
+}
+.navbar-inverse .btn-link:hover,
+.navbar-inverse .btn-link:focus {
+ color: #fff;
+}
+.navbar-inverse .btn-link[disabled]:hover,
+fieldset[disabled] .navbar-inverse .btn-link:hover,
+.navbar-inverse .btn-link[disabled]:focus,
+fieldset[disabled] .navbar-inverse .btn-link:focus {
+ color: #444;
+}
.breadcrumb {
padding: 8px 15px;
margin-bottom: 20px;
@@ -4125,7 +4374,7 @@ select[multiple].input-group-sm > .input-group-btn > .btn {
content: "/\00a0";
}
.breadcrumb > .active {
- color: #999;
+ color: #777;
}
.pagination {
display: inline-block;
@@ -4143,7 +4392,7 @@ select[multiple].input-group-sm > .input-group-btn > .btn {
padding: 6px 12px;
margin-left: -1px;
line-height: 1.42857143;
- color: #428bca;
+ color: #337ab7;
text-decoration: none;
background-color: #fff;
border: 1px solid #ddd;
@@ -4163,7 +4412,7 @@ select[multiple].input-group-sm > .input-group-btn > .btn {
.pagination > li > span:hover,
.pagination > li > a:focus,
.pagination > li > span:focus {
- color: #2a6496;
+ color: #23527c;
background-color: #eee;
border-color: #ddd;
}
@@ -4176,8 +4425,8 @@ select[multiple].input-group-sm > .input-group-btn > .btn {
z-index: 2;
color: #fff;
cursor: default;
- background-color: #428bca;
- border-color: #428bca;
+ background-color: #337ab7;
+ border-color: #337ab7;
}
.pagination > .disabled > span,
.pagination > .disabled > span:hover,
@@ -4185,7 +4434,7 @@ select[multiple].input-group-sm > .input-group-btn > .btn {
.pagination > .disabled > a,
.pagination > .disabled > a:hover,
.pagination > .disabled > a:focus {
- color: #999;
+ color: #777;
cursor: not-allowed;
background-color: #fff;
border-color: #ddd;
@@ -4254,7 +4503,7 @@ select[multiple].input-group-sm > .input-group-btn > .btn {
.pager .disabled > a:hover,
.pager .disabled > a:focus,
.pager .disabled > span {
- color: #999;
+ color: #777;
cursor: not-allowed;
background-color: #fff;
}
@@ -4270,8 +4519,8 @@ select[multiple].input-group-sm > .input-group-btn > .btn {
vertical-align: baseline;
border-radius: .25em;
}
-.label[href]:hover,
-.label[href]:focus {
+a.label:hover,
+a.label:focus {
color: #fff;
text-decoration: none;
cursor: pointer;
@@ -4284,18 +4533,18 @@ select[multiple].input-group-sm > .input-group-btn > .btn {
top: -1px;
}
.label-default {
- background-color: #999;
+ background-color: #777;
}
.label-default[href]:hover,
.label-default[href]:focus {
- background-color: #808080;
+ background-color: #5e5e5e;
}
.label-primary {
- background-color: #428bca;
+ background-color: #337ab7;
}
.label-primary[href]:hover,
.label-primary[href]:focus {
- background-color: #3071a9;
+ background-color: #286090;
}
.label-success {
background-color: #5cb85c;
@@ -4336,7 +4585,7 @@ select[multiple].input-group-sm > .input-group-btn > .btn {
text-align: center;
white-space: nowrap;
vertical-align: baseline;
- background-color: #999;
+ background-color: #777;
border-radius: 10px;
}
.badge:empty {
@@ -4356,16 +4605,22 @@ a.badge:focus {
text-decoration: none;
cursor: pointer;
}
-a.list-group-item.active > .badge,
+.list-group-item.active > .badge,
.nav-pills > .active > a > .badge {
- color: #428bca;
+ color: #337ab7;
background-color: #fff;
}
+.list-group-item > .badge {
+ float: right;
+}
+.list-group-item > .badge + .badge {
+ margin-right: 5px;
+}
.nav-pills > li > a > .badge {
margin-left: 3px;
}
.jumbotron {
- padding: 30px;
+ padding: 30px 15px;
margin-bottom: 30px;
color: inherit;
background-color: #eee;
@@ -4379,7 +4634,11 @@ a.list-group-item.active > .badge,
font-size: 21px;
font-weight: 200;
}
-.container .jumbotron {
+.jumbotron > hr {
+ border-top-color: #d5d5d5;
+}
+.container .jumbotron,
+.container-fluid .jumbotron {
border-radius: 6px;
}
.jumbotron .container {
@@ -4387,10 +4646,10 @@ a.list-group-item.active > .badge,
}
@media screen and (min-width: 768px) {
.jumbotron {
- padding-top: 48px;
- padding-bottom: 48px;
+ padding: 48px 0;
}
- .container .jumbotron {
+ .container .jumbotron,
+ .container-fluid .jumbotron {
padding-right: 60px;
padding-left: 60px;
}
@@ -4407,8 +4666,9 @@ a.list-group-item.active > .badge,
background-color: #fff;
border: 1px solid #ddd;
border-radius: 4px;
- -webkit-transition: all .2s ease-in-out;
- transition: all .2s ease-in-out;
+ -webkit-transition: border .2s ease-in-out;
+ -o-transition: border .2s ease-in-out;
+ transition: border .2s ease-in-out;
}
.thumbnail > img,
.thumbnail a > img {
@@ -4418,7 +4678,7 @@ a.list-group-item.active > .badge,
a.thumbnail:hover,
a.thumbnail:focus,
a.thumbnail.active {
- border-color: #428bca;
+ border-color: #337ab7;
}
.thumbnail .caption {
padding: 9px;
@@ -4444,10 +4704,12 @@ a.thumbnail.active {
.alert > p + p {
margin-top: 5px;
}
-.alert-dismissable {
+.alert-dismissable,
+.alert-dismissible {
padding-right: 35px;
}
-.alert-dismissable .close {
+.alert-dismissable .close,
+.alert-dismissible .close {
position: relative;
top: -2px;
right: -21px;
@@ -4505,6 +4767,14 @@ a.thumbnail.active {
background-position: 0 0;
}
}
+@-o-keyframes progress-bar-stripes {
+ from {
+ background-position: 40px 0;
+ }
+ to {
+ background-position: 0 0;
+ }
+}
@keyframes progress-bar-stripes {
from {
background-position: 40px 0;
@@ -4530,19 +4800,25 @@ a.thumbnail.active {
line-height: 20px;
color: #fff;
text-align: center;
- background-color: #428bca;
+ background-color: #337ab7;
-webkit-box-shadow: inset 0 -1px 0 rgba(0, 0, 0, .15);
box-shadow: inset 0 -1px 0 rgba(0, 0, 0, .15);
-webkit-transition: width .6s ease;
+ -o-transition: width .6s ease;
transition: width .6s ease;
}
-.progress-striped .progress-bar {
+.progress-striped .progress-bar,
+.progress-bar-striped {
background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent);
+ background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent);
background-image: linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent);
- background-size: 40px 40px;
+ -webkit-background-size: 40px 40px;
+ background-size: 40px 40px;
}
-.progress.active .progress-bar {
+.progress.active .progress-bar,
+.progress-bar.active {
-webkit-animation: progress-bar-stripes 2s linear infinite;
+ -o-animation: progress-bar-stripes 2s linear infinite;
animation: progress-bar-stripes 2s linear infinite;
}
.progress-bar-success {
@@ -4550,6 +4826,7 @@ a.thumbnail.active {
}
.progress-striped .progress-bar-success {
background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent);
+ background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent);
background-image: linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent);
}
.progress-bar-info {
@@ -4557,6 +4834,7 @@ a.thumbnail.active {
}
.progress-striped .progress-bar-info {
background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent);
+ background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent);
background-image: linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent);
}
.progress-bar-warning {
@@ -4564,6 +4842,7 @@ a.thumbnail.active {
}
.progress-striped .progress-bar-warning {
background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent);
+ background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent);
background-image: linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent);
}
.progress-bar-danger {
@@ -4571,31 +4850,38 @@ a.thumbnail.active {
}
.progress-striped .progress-bar-danger {
background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent);
+ background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent);
background-image: linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent);
}
-.media,
-.media-body {
- overflow: hidden;
- zoom: 1;
-}
-.media,
-.media .media {
+.media {
margin-top: 15px;
}
.media:first-child {
margin-top: 0;
}
-.media-object {
- display: block;
-}
-.media-heading {
- margin: 0 0 5px;
+.media-right,
+.media > .pull-right {
+ padding-left: 10px;
}
+.media-left,
.media > .pull-left {
- margin-right: 10px;
+ padding-right: 10px;
}
-.media > .pull-right {
- margin-left: 10px;
+.media-left,
+.media-right,
+.media-body {
+ display: table-cell;
+ vertical-align: top;
+}
+.media-middle {
+ vertical-align: middle;
+}
+.media-bottom {
+ vertical-align: bottom;
+}
+.media-heading {
+ margin-top: 0;
+ margin-bottom: 5px;
}
.media-list {
padding-left: 0;
@@ -4622,12 +4908,6 @@ a.thumbnail.active {
border-bottom-right-radius: 4px;
border-bottom-left-radius: 4px;
}
-.list-group-item > .badge {
- float: right;
-}
-.list-group-item > .badge + .badge {
- margin-right: 5px;
-}
a.list-group-item {
color: #555;
}
@@ -4636,26 +4916,50 @@ a.list-group-item .list-group-item-heading {
}
a.list-group-item:hover,
a.list-group-item:focus {
+ color: #555;
text-decoration: none;
background-color: #f5f5f5;
}
-a.list-group-item.active,
-a.list-group-item.active:hover,
-a.list-group-item.active:focus {
+.list-group-item.disabled,
+.list-group-item.disabled:hover,
+.list-group-item.disabled:focus {
+ color: #777;
+ cursor: not-allowed;
+ background-color: #eee;
+}
+.list-group-item.disabled .list-group-item-heading,
+.list-group-item.disabled:hover .list-group-item-heading,
+.list-group-item.disabled:focus .list-group-item-heading {
+ color: inherit;
+}
+.list-group-item.disabled .list-group-item-text,
+.list-group-item.disabled:hover .list-group-item-text,
+.list-group-item.disabled:focus .list-group-item-text {
+ color: #777;
+}
+.list-group-item.active,
+.list-group-item.active:hover,
+.list-group-item.active:focus {
z-index: 2;
color: #fff;
- background-color: #428bca;
- border-color: #428bca;
-}
-a.list-group-item.active .list-group-item-heading,
-a.list-group-item.active:hover .list-group-item-heading,
-a.list-group-item.active:focus .list-group-item-heading {
+ background-color: #337ab7;
+ border-color: #337ab7;
+}
+.list-group-item.active .list-group-item-heading,
+.list-group-item.active:hover .list-group-item-heading,
+.list-group-item.active:focus .list-group-item-heading,
+.list-group-item.active .list-group-item-heading > small,
+.list-group-item.active:hover .list-group-item-heading > small,
+.list-group-item.active:focus .list-group-item-heading > small,
+.list-group-item.active .list-group-item-heading > .small,
+.list-group-item.active:hover .list-group-item-heading > .small,
+.list-group-item.active:focus .list-group-item-heading > .small {
color: inherit;
}
-a.list-group-item.active .list-group-item-text,
-a.list-group-item.active:hover .list-group-item-text,
-a.list-group-item.active:focus .list-group-item-text {
- color: #e1edf7;
+.list-group-item.active .list-group-item-text,
+.list-group-item.active:hover .list-group-item-text,
+.list-group-item.active:focus .list-group-item-text {
+ color: #c7ddef;
}
.list-group-item-success {
color: #3c763d;
@@ -4789,19 +5093,23 @@ a.list-group-item-danger.active:focus {
border-bottom-right-radius: 3px;
border-bottom-left-radius: 3px;
}
-.panel > .list-group {
+.panel > .list-group,
+.panel > .panel-collapse > .list-group {
margin-bottom: 0;
}
-.panel > .list-group .list-group-item {
+.panel > .list-group .list-group-item,
+.panel > .panel-collapse > .list-group .list-group-item {
border-width: 1px 0;
border-radius: 0;
}
-.panel > .list-group:first-child .list-group-item:first-child {
+.panel > .list-group:first-child .list-group-item:first-child,
+.panel > .panel-collapse > .list-group:first-child .list-group-item:first-child {
border-top: 0;
border-top-left-radius: 3px;
border-top-right-radius: 3px;
}
-.panel > .list-group:last-child .list-group-item:last-child {
+.panel > .list-group:last-child .list-group-item:last-child,
+.panel > .panel-collapse > .list-group:last-child .list-group-item:last-child {
border-bottom: 0;
border-bottom-right-radius: 3px;
border-bottom-left-radius: 3px;
@@ -4809,15 +5117,32 @@ a.list-group-item-danger.active:focus {
.panel-heading + .list-group .list-group-item:first-child {
border-top-width: 0;
}
+.list-group + .panel-footer {
+ border-top-width: 0;
+}
.panel > .table,
-.panel > .table-responsive > .table {
+.panel > .table-responsive > .table,
+.panel > .panel-collapse > .table {
margin-bottom: 0;
}
+.panel > .table caption,
+.panel > .table-responsive > .table caption,
+.panel > .panel-collapse > .table caption {
+ padding-right: 15px;
+ padding-left: 15px;
+}
.panel > .table:first-child,
.panel > .table-responsive:first-child > .table:first-child {
border-top-left-radius: 3px;
border-top-right-radius: 3px;
}
+.panel > .table:first-child > thead:first-child > tr:first-child,
+.panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child,
+.panel > .table:first-child > tbody:first-child > tr:first-child,
+.panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child {
+ border-top-left-radius: 3px;
+ border-top-right-radius: 3px;
+}
.panel > .table:first-child > thead:first-child > tr:first-child td:first-child,
.panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child td:first-child,
.panel > .table:first-child > tbody:first-child > tr:first-child td:first-child,
@@ -4843,6 +5168,13 @@ a.list-group-item-danger.active:focus {
border-bottom-right-radius: 3px;
border-bottom-left-radius: 3px;
}
+.panel > .table:last-child > tbody:last-child > tr:last-child,
+.panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child,
+.panel > .table:last-child > tfoot:last-child > tr:last-child,
+.panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child {
+ border-bottom-right-radius: 3px;
+ border-bottom-left-radius: 3px;
+}
.panel > .table:last-child > tbody:last-child > tr:last-child td:first-child,
.panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child td:first-child,
.panel > .table:last-child > tfoot:last-child > tr:last-child td:first-child,
@@ -4864,7 +5196,9 @@ a.list-group-item-danger.active:focus {
border-bottom-right-radius: 3px;
}
.panel > .panel-body + .table,
-.panel > .panel-body + .table-responsive {
+.panel > .panel-body + .table-responsive,
+.panel > .table + .panel-body,
+.panel > .table-responsive + .panel-body {
border-top: 1px solid #ddd;
}
.panel > .table > tbody:first-child > tr:first-child th,
@@ -4932,7 +5266,6 @@ a.list-group-item-danger.active:focus {
}
.panel-group .panel {
margin-bottom: 0;
- overflow: hidden;
border-radius: 4px;
}
.panel-group .panel + .panel {
@@ -4941,7 +5274,8 @@ a.list-group-item-danger.active:focus {
.panel-group .panel-heading {
border-bottom: 0;
}
-.panel-group .panel-heading + .panel-collapse .panel-body {
+.panel-group .panel-heading + .panel-collapse > .panel-body,
+.panel-group .panel-heading + .panel-collapse > .list-group {
border-top: 1px solid #ddd;
}
.panel-group .panel-footer {
@@ -4958,25 +5292,33 @@ a.list-group-item-danger.active:focus {
background-color: #f5f5f5;
border-color: #ddd;
}
-.panel-default > .panel-heading + .panel-collapse .panel-body {
+.panel-default > .panel-heading + .panel-collapse > .panel-body {
border-top-color: #ddd;
}
-.panel-default > .panel-footer + .panel-collapse .panel-body {
+.panel-default > .panel-heading .badge {
+ color: #f5f5f5;
+ background-color: #333;
+}
+.panel-default > .panel-footer + .panel-collapse > .panel-body {
border-bottom-color: #ddd;
}
.panel-primary {
- border-color: #428bca;
+ border-color: #337ab7;
}
.panel-primary > .panel-heading {
color: #fff;
- background-color: #428bca;
- border-color: #428bca;
+ background-color: #337ab7;
+ border-color: #337ab7;
}
-.panel-primary > .panel-heading + .panel-collapse .panel-body {
- border-top-color: #428bca;
+.panel-primary > .panel-heading + .panel-collapse > .panel-body {
+ border-top-color: #337ab7;
}
-.panel-primary > .panel-footer + .panel-collapse .panel-body {
- border-bottom-color: #428bca;
+.panel-primary > .panel-heading .badge {
+ color: #337ab7;
+ background-color: #fff;
+}
+.panel-primary > .panel-footer + .panel-collapse > .panel-body {
+ border-bottom-color: #337ab7;
}
.panel-success {
border-color: #d6e9c6;
@@ -4986,10 +5328,14 @@ a.list-group-item-danger.active:focus {
background-color: #dff0d8;
border-color: #d6e9c6;
}
-.panel-success > .panel-heading + .panel-collapse .panel-body {
+.panel-success > .panel-heading + .panel-collapse > .panel-body {
border-top-color: #d6e9c6;
}
-.panel-success > .panel-footer + .panel-collapse .panel-body {
+.panel-success > .panel-heading .badge {
+ color: #dff0d8;
+ background-color: #3c763d;
+}
+.panel-success > .panel-footer + .panel-collapse > .panel-body {
border-bottom-color: #d6e9c6;
}
.panel-info {
@@ -5000,10 +5346,14 @@ a.list-group-item-danger.active:focus {
background-color: #d9edf7;
border-color: #bce8f1;
}
-.panel-info > .panel-heading + .panel-collapse .panel-body {
+.panel-info > .panel-heading + .panel-collapse > .panel-body {
border-top-color: #bce8f1;
}
-.panel-info > .panel-footer + .panel-collapse .panel-body {
+.panel-info > .panel-heading .badge {
+ color: #d9edf7;
+ background-color: #31708f;
+}
+.panel-info > .panel-footer + .panel-collapse > .panel-body {
border-bottom-color: #bce8f1;
}
.panel-warning {
@@ -5014,10 +5364,14 @@ a.list-group-item-danger.active:focus {
background-color: #fcf8e3;
border-color: #faebcc;
}
-.panel-warning > .panel-heading + .panel-collapse .panel-body {
+.panel-warning > .panel-heading + .panel-collapse > .panel-body {
border-top-color: #faebcc;
}
-.panel-warning > .panel-footer + .panel-collapse .panel-body {
+.panel-warning > .panel-heading .badge {
+ color: #fcf8e3;
+ background-color: #8a6d3b;
+}
+.panel-warning > .panel-footer + .panel-collapse > .panel-body {
border-bottom-color: #faebcc;
}
.panel-danger {
@@ -5028,12 +5382,42 @@ a.list-group-item-danger.active:focus {
background-color: #f2dede;
border-color: #ebccd1;
}
-.panel-danger > .panel-heading + .panel-collapse .panel-body {
+.panel-danger > .panel-heading + .panel-collapse > .panel-body {
border-top-color: #ebccd1;
}
-.panel-danger > .panel-footer + .panel-collapse .panel-body {
+.panel-danger > .panel-heading .badge {
+ color: #f2dede;
+ background-color: #a94442;
+}
+.panel-danger > .panel-footer + .panel-collapse > .panel-body {
border-bottom-color: #ebccd1;
}
+.embed-responsive {
+ position: relative;
+ display: block;
+ height: 0;
+ padding: 0;
+ overflow: hidden;
+}
+.embed-responsive .embed-responsive-item,
+.embed-responsive iframe,
+.embed-responsive embed,
+.embed-responsive object,
+.embed-responsive video {
+ position: absolute;
+ top: 0;
+ bottom: 0;
+ left: 0;
+ width: 100%;
+ height: 100%;
+ border: 0;
+}
+.embed-responsive.embed-responsive-16by9 {
+ padding-bottom: 56.25%;
+}
+.embed-responsive.embed-responsive-4by3 {
+ padding-bottom: 75%;
+}
.well {
min-height: 20px;
padding: 19px;
@@ -5090,27 +5474,31 @@ button.close {
right: 0;
bottom: 0;
left: 0;
- z-index: 1050;
+ z-index: 1040;
display: none;
- overflow: auto;
- overflow-y: scroll;
+ overflow: hidden;
-webkit-overflow-scrolling: touch;
outline: 0;
}
.modal.fade .modal-dialog {
-webkit-transition: -webkit-transform .3s ease-out;
- -moz-transition: -moz-transform .3s ease-out;
-o-transition: -o-transform .3s ease-out;
transition: transform .3s ease-out;
-webkit-transform: translate(0, -25%);
-ms-transform: translate(0, -25%);
+ -o-transform: translate(0, -25%);
transform: translate(0, -25%);
}
.modal.in .modal-dialog {
-webkit-transform: translate(0, 0);
-ms-transform: translate(0, 0);
+ -o-transform: translate(0, 0);
transform: translate(0, 0);
}
+.modal-open .modal {
+ overflow-x: hidden;
+ overflow-y: auto;
+}
.modal-dialog {
position: relative;
width: auto;
@@ -5119,21 +5507,20 @@ button.close {
.modal-content {
position: relative;
background-color: #fff;
- background-clip: padding-box;
+ -webkit-background-clip: padding-box;
+ background-clip: padding-box;
border: 1px solid #999;
border: 1px solid rgba(0, 0, 0, .2);
border-radius: 6px;
- outline: none;
+ outline: 0;
-webkit-box-shadow: 0 3px 9px rgba(0, 0, 0, .5);
box-shadow: 0 3px 9px rgba(0, 0, 0, .5);
}
.modal-backdrop {
- position: fixed;
+ position: absolute;
top: 0;
right: 0;
- bottom: 0;
left: 0;
- z-index: 1040;
background-color: #000;
}
.modal-backdrop.fade {
@@ -5158,11 +5545,10 @@ button.close {
}
.modal-body {
position: relative;
- padding: 20px;
+ padding: 15px;
}
.modal-footer {
- padding: 19px 20px 20px;
- margin-top: 15px;
+ padding: 15px;
text-align: right;
border-top: 1px solid #e5e5e5;
}
@@ -5176,6 +5562,13 @@ button.close {
.modal-footer .btn-block + .btn-block {
margin-left: 0;
}
+.modal-scrollbar-measure {
+ position: absolute;
+ top: -9999px;
+ width: 50px;
+ height: 50px;
+ overflow: scroll;
+}
@media (min-width: 768px) {
.modal-dialog {
width: 600px;
@@ -5196,9 +5589,11 @@ button.close {
}
.tooltip {
position: absolute;
- z-index: 1030;
+ z-index: 1070;
display: block;
+ font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
font-size: 12px;
+ font-weight: normal;
line-height: 1.4;
visibility: visible;
filter: alpha(opacity=0);
@@ -5248,14 +5643,16 @@ button.close {
border-top-color: #000;
}
.tooltip.top-left .tooltip-arrow {
+ right: 5px;
bottom: 0;
- left: 5px;
+ margin-bottom: -5px;
border-width: 5px 5px 0;
border-top-color: #000;
}
.tooltip.top-right .tooltip-arrow {
- right: 5px;
bottom: 0;
+ left: 5px;
+ margin-bottom: -5px;
border-width: 5px 5px 0;
border-top-color: #000;
}
@@ -5282,13 +5679,15 @@ button.close {
}
.tooltip.bottom-left .tooltip-arrow {
top: 0;
- left: 5px;
+ right: 5px;
+ margin-top: -5px;
border-width: 0 5px 5px;
border-bottom-color: #000;
}
.tooltip.bottom-right .tooltip-arrow {
top: 0;
- right: 5px;
+ left: 5px;
+ margin-top: -5px;
border-width: 0 5px 5px;
border-bottom-color: #000;
}
@@ -5296,14 +5695,19 @@ button.close {
position: absolute;
top: 0;
left: 0;
- z-index: 1010;
+ z-index: 1060;
display: none;
max-width: 276px;
padding: 1px;
+ font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
+ font-size: 14px;
+ font-weight: normal;
+ line-height: 1.42857143;
text-align: left;
white-space: normal;
background-color: #fff;
- background-clip: padding-box;
+ -webkit-background-clip: padding-box;
+ background-clip: padding-box;
border: 1px solid #ccc;
border: 1px solid rgba(0, 0, 0, .2);
border-radius: 6px;
@@ -5326,8 +5730,6 @@ button.close {
padding: 8px 14px;
margin: 0;
font-size: 14px;
- font-weight: normal;
- line-height: 18px;
background-color: #f7f7f7;
border-bottom: 1px solid #ebebeb;
border-radius: 5px 5px 0 0;
@@ -5423,12 +5825,44 @@ button.close {
position: relative;
display: none;
-webkit-transition: .6s ease-in-out left;
+ -o-transition: .6s ease-in-out left;
transition: .6s ease-in-out left;
}
.carousel-inner > .item > img,
.carousel-inner > .item > a > img {
line-height: 1;
}
+@media all and (transform-3d), (-webkit-transform-3d) {
+ .carousel-inner > .item {
+ -webkit-transition: -webkit-transform .6s ease-in-out;
+ -o-transition: -o-transform .6s ease-in-out;
+ transition: transform .6s ease-in-out;
+
+ -webkit-backface-visibility: hidden;
+ backface-visibility: hidden;
+ -webkit-perspective: 1000;
+ perspective: 1000;
+ }
+ .carousel-inner > .item.next,
+ .carousel-inner > .item.active.right {
+ left: 0;
+ -webkit-transform: translate3d(100%, 0, 0);
+ transform: translate3d(100%, 0, 0);
+ }
+ .carousel-inner > .item.prev,
+ .carousel-inner > .item.active.left {
+ left: 0;
+ -webkit-transform: translate3d(-100%, 0, 0);
+ transform: translate3d(-100%, 0, 0);
+ }
+ .carousel-inner > .item.next.left,
+ .carousel-inner > .item.prev.right,
+ .carousel-inner > .item.active {
+ left: 0;
+ -webkit-transform: translate3d(0, 0, 0);
+ transform: translate3d(0, 0, 0);
+ }
+}
.carousel-inner > .active,
.carousel-inner > .next,
.carousel-inner > .prev {
@@ -5473,7 +5907,9 @@ button.close {
opacity: .5;
}
.carousel-control.left {
- background-image: -webkit-linear-gradient(left, color-stop(rgba(0, 0, 0, .5) 0%), color-stop(rgba(0, 0, 0, .0001) 100%));
+ background-image: -webkit-linear-gradient(left, rgba(0, 0, 0, .5) 0%, rgba(0, 0, 0, .0001) 100%);
+ background-image: -o-linear-gradient(left, rgba(0, 0, 0, .5) 0%, rgba(0, 0, 0, .0001) 100%);
+ background-image: -webkit-gradient(linear, left top, right top, from(rgba(0, 0, 0, .5)), to(rgba(0, 0, 0, .0001)));
background-image: linear-gradient(to right, rgba(0, 0, 0, .5) 0%, rgba(0, 0, 0, .0001) 100%);
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#80000000', endColorstr='#00000000', GradientType=1);
background-repeat: repeat-x;
@@ -5481,7 +5917,9 @@ button.close {
.carousel-control.right {
right: 0;
left: auto;
- background-image: -webkit-linear-gradient(left, color-stop(rgba(0, 0, 0, .0001) 0%), color-stop(rgba(0, 0, 0, .5) 100%));
+ background-image: -webkit-linear-gradient(left, rgba(0, 0, 0, .0001) 0%, rgba(0, 0, 0, .5) 100%);
+ background-image: -o-linear-gradient(left, rgba(0, 0, 0, .0001) 0%, rgba(0, 0, 0, .5) 100%);
+ background-image: -webkit-gradient(linear, left top, right top, from(rgba(0, 0, 0, .0001)), to(rgba(0, 0, 0, .5)));
background-image: linear-gradient(to right, rgba(0, 0, 0, .0001) 0%, rgba(0, 0, 0, .5) 100%);
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#00000000', endColorstr='#80000000', GradientType=1);
background-repeat: repeat-x;
@@ -5491,7 +5929,7 @@ button.close {
color: #fff;
text-decoration: none;
filter: alpha(opacity=90);
- outline: none;
+ outline: 0;
opacity: .9;
}
.carousel-control .icon-prev,
@@ -5506,17 +5944,18 @@ button.close {
.carousel-control .icon-prev,
.carousel-control .glyphicon-chevron-left {
left: 50%;
+ margin-left: -10px;
}
.carousel-control .icon-next,
.carousel-control .glyphicon-chevron-right {
right: 50%;
+ margin-right: -10px;
}
.carousel-control .icon-prev,
.carousel-control .icon-next {
width: 20px;
height: 20px;
margin-top: -10px;
- margin-left: -10px;
font-family: serif;
}
.carousel-control .icon-prev:before {
@@ -5577,9 +6016,16 @@ button.close {
width: 30px;
height: 30px;
margin-top: -15px;
- margin-left: -15px;
font-size: 30px;
}
+ .carousel-control .glyphicon-chevron-left,
+ .carousel-control .icon-prev {
+ margin-left: -15px;
+ }
+ .carousel-control .glyphicon-chevron-right,
+ .carousel-control .icon-next {
+ margin-right: -15px;
+ }
.carousel-caption {
right: 20%;
left: 20%;
@@ -5591,6 +6037,8 @@ button.close {
}
.clearfix:before,
.clearfix:after,
+.dl-horizontal dd:before,
+.dl-horizontal dd:after,
.container:before,
.container:after,
.container-fluid:before,
@@ -5621,6 +6069,7 @@ button.close {
content: " ";
}
.clearfix:after,
+.dl-horizontal dd:after,
.container:after,
.container-fluid:after,
.row:after,
@@ -5679,6 +6128,20 @@ button.close {
.visible-lg {
display: none !important;
}
+.visible-xs-block,
+.visible-xs-inline,
+.visible-xs-inline-block,
+.visible-sm-block,
+.visible-sm-inline,
+.visible-sm-inline-block,
+.visible-md-block,
+.visible-md-inline,
+.visible-md-inline-block,
+.visible-lg-block,
+.visible-lg-inline,
+.visible-lg-inline-block {
+ display: none !important;
+}
@media (max-width: 767px) {
.visible-xs {
display: block !important;
@@ -5694,6 +6157,21 @@ button.close {
display: table-cell !important;
}
}
+@media (max-width: 767px) {
+ .visible-xs-block {
+ display: block !important;
+ }
+}
+@media (max-width: 767px) {
+ .visible-xs-inline {
+ display: inline !important;
+ }
+}
+@media (max-width: 767px) {
+ .visible-xs-inline-block {
+ display: inline-block !important;
+ }
+}
@media (min-width: 768px) and (max-width: 991px) {
.visible-sm {
display: block !important;
@@ -5709,6 +6187,21 @@ button.close {
display: table-cell !important;
}
}
+@media (min-width: 768px) and (max-width: 991px) {
+ .visible-sm-block {
+ display: block !important;
+ }
+}
+@media (min-width: 768px) and (max-width: 991px) {
+ .visible-sm-inline {
+ display: inline !important;
+ }
+}
+@media (min-width: 768px) and (max-width: 991px) {
+ .visible-sm-inline-block {
+ display: inline-block !important;
+ }
+}
@media (min-width: 992px) and (max-width: 1199px) {
.visible-md {
display: block !important;
@@ -5724,6 +6217,21 @@ button.close {
display: table-cell !important;
}
}
+@media (min-width: 992px) and (max-width: 1199px) {
+ .visible-md-block {
+ display: block !important;
+ }
+}
+@media (min-width: 992px) and (max-width: 1199px) {
+ .visible-md-inline {
+ display: inline !important;
+ }
+}
+@media (min-width: 992px) and (max-width: 1199px) {
+ .visible-md-inline-block {
+ display: inline-block !important;
+ }
+}
@media (min-width: 1200px) {
.visible-lg {
display: block !important;
@@ -5739,6 +6247,21 @@ button.close {
display: table-cell !important;
}
}
+@media (min-width: 1200px) {
+ .visible-lg-block {
+ display: block !important;
+ }
+}
+@media (min-width: 1200px) {
+ .visible-lg-inline {
+ display: inline !important;
+ }
+}
+@media (min-width: 1200px) {
+ .visible-lg-inline-block {
+ display: inline-block !important;
+ }
+}
@media (max-width: 767px) {
.hidden-xs {
display: none !important;
@@ -5777,6 +6300,30 @@ button.close {
display: table-cell !important;
}
}
+.visible-print-block {
+ display: none !important;
+}
+@media print {
+ .visible-print-block {
+ display: block !important;
+ }
+}
+.visible-print-inline {
+ display: none !important;
+}
+@media print {
+ .visible-print-inline {
+ display: inline !important;
+ }
+}
+.visible-print-inline-block {
+ display: none !important;
+}
+@media print {
+ .visible-print-inline-block {
+ display: inline-block !important;
+ }
+}
@media print {
.hidden-print {
display: none !important;
diff --git a/library/bootstrap/css/bootstrap.min.css b/library/bootstrap/css/bootstrap.min.css
index 679272d25..b6fe4e0fb 100644
--- a/library/bootstrap/css/bootstrap.min.css
+++ b/library/bootstrap/css/bootstrap.min.css
@@ -1,7 +1,5 @@
/*!
- * Bootstrap v3.1.1 (http://getbootstrap.com)
+ * Bootstrap v3.3.1 (http://getbootstrap.com)
* Copyright 2011-2014 Twitter, Inc.
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
- */
-
-/*! normalize.css v3.0.0 | MIT License | git.io/normalize */html{font-family:sans-serif;-ms-text-size-adjust:100%;-webkit-text-size-adjust:100%}body{margin:0}article,aside,details,figcaption,figure,footer,header,hgroup,main,nav,section,summary{display:block}audio,canvas,progress,video{display:inline-block;vertical-align:baseline}audio:not([controls]){display:none;height:0}[hidden],template{display:none}a{background:0 0}a:active,a:hover{outline:0}abbr[title]{border-bottom:1px dotted}b,strong{font-weight:700}dfn{font-style:italic}h1{font-size:2em;margin:.67em 0}mark{background:#ff0;color:#000}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sup{top:-.5em}sub{bottom:-.25em}img{border:0}svg:not(:root){overflow:hidden}figure{margin:1em 40px}hr{-moz-box-sizing:content-box;box-sizing:content-box;height:0}pre{overflow:auto}code,kbd,pre,samp{font-family:monospace,monospace;font-size:1em}button,input,optgroup,select,textarea{color:inherit;font:inherit;margin:0}button{overflow:visible}button,select{text-transform:none}button,html input[type=button],input[type=reset],input[type=submit]{-webkit-appearance:button;cursor:pointer}button[disabled],html input[disabled]{cursor:default}button::-moz-focus-inner,input::-moz-focus-inner{border:0;padding:0}input{line-height:normal}input[type=checkbox],input[type=radio]{box-sizing:border-box;padding:0}input[type=number]::-webkit-inner-spin-button,input[type=number]::-webkit-outer-spin-button{height:auto}input[type=search]{-webkit-appearance:textfield;-moz-box-sizing:content-box;-webkit-box-sizing:content-box;box-sizing:content-box}input[type=search]::-webkit-search-cancel-button,input[type=search]::-webkit-search-decoration{-webkit-appearance:none}fieldset{border:1px solid silver;margin:0 2px;padding:.35em .625em .75em}legend{border:0;padding:0}textarea{overflow:auto}optgroup{font-weight:700}table{border-collapse:collapse;border-spacing:0}td,th{padding:0}@media print{*{text-shadow:none!important;color:#000!important;background:transparent!important;box-shadow:none!important}a,a:visited{text-decoration:underline}a[href]:after{content:" (" attr(href) ")"}abbr[title]:after{content:" (" attr(title) ")"}a[href^="javascript:"]:after,a[href^="#"]:after{content:""}pre,blockquote{border:1px solid #999;page-break-inside:avoid}thead{display:table-header-group}tr,img{page-break-inside:avoid}img{max-width:100%!important}p,h2,h3{orphans:3;widows:3}h2,h3{page-break-after:avoid}select{background:#fff!important}.navbar{display:none}.table td,.table th{background-color:#fff!important}.btn>.caret,.dropup>.btn>.caret{border-top-color:#000!important}.label{border:1px solid #000}.table{border-collapse:collapse!important}.table-bordered th,.table-bordered td{border:1px solid #ddd!important}}*{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}:before,:after{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}html{font-size:62.5%;-webkit-tap-highlight-color:rgba(0,0,0,0)}body{font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:14px;line-height:1.42857143;color:#333;background-color:#fff}input,button,select,textarea{font-family:inherit;font-size:inherit;line-height:inherit}a{color:#428bca;text-decoration:none}a:hover,a:focus{color:#2a6496;text-decoration:underline}a:focus{outline:thin dotted;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}figure{margin:0}img{vertical-align:middle}.img-responsive,.thumbnail>img,.thumbnail a>img,.carousel-inner>.item>img,.carousel-inner>.item>a>img{display:block;max-width:100%;height:auto}.img-rounded{border-radius:6px}.img-thumbnail{padding:4px;line-height:1.42857143;background-color:#fff;border:1px solid #ddd;border-radius:4px;-webkit-transition:all .2s ease-in-out;transition:all .2s ease-in-out;display:inline-block;max-width:100%;height:auto}.img-circle{border-radius:50%}hr{margin-top:20px;margin-bottom:20px;border:0;border-top:1px solid #eee}.sr-only{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);border:0}h1,h2,h3,h4,h5,h6,.h1,.h2,.h3,.h4,.h5,.h6{font-family:inherit;font-weight:500;line-height:1.1;color:inherit}h1 small,h2 small,h3 small,h4 small,h5 small,h6 small,.h1 small,.h2 small,.h3 small,.h4 small,.h5 small,.h6 small,h1 .small,h2 .small,h3 .small,h4 .small,h5 .small,h6 .small,.h1 .small,.h2 .small,.h3 .small,.h4 .small,.h5 .small,.h6 .small{font-weight:400;line-height:1;color:#999}h1,.h1,h2,.h2,h3,.h3{margin-top:20px;margin-bottom:10px}h1 small,.h1 small,h2 small,.h2 small,h3 small,.h3 small,h1 .small,.h1 .small,h2 .small,.h2 .small,h3 .small,.h3 .small{font-size:65%}h4,.h4,h5,.h5,h6,.h6{margin-top:10px;margin-bottom:10px}h4 small,.h4 small,h5 small,.h5 small,h6 small,.h6 small,h4 .small,.h4 .small,h5 .small,.h5 .small,h6 .small,.h6 .small{font-size:75%}h1,.h1{font-size:36px}h2,.h2{font-size:30px}h3,.h3{font-size:24px}h4,.h4{font-size:18px}h5,.h5{font-size:14px}h6,.h6{font-size:12px}p{margin:0 0 10px}.lead{margin-bottom:20px;font-size:16px;font-weight:200;line-height:1.4}@media (min-width:768px){.lead{font-size:21px}}small,.small{font-size:85%}cite{font-style:normal}.text-left{text-align:left}.text-right{text-align:right}.text-center{text-align:center}.text-justify{text-align:justify}.text-muted{color:#999}.text-primary{color:#428bca}a.text-primary:hover{color:#3071a9}.text-success{color:#3c763d}a.text-success:hover{color:#2b542c}.text-info{color:#31708f}a.text-info:hover{color:#245269}.text-warning{color:#8a6d3b}a.text-warning:hover{color:#66512c}.text-danger{color:#a94442}a.text-danger:hover{color:#843534}.bg-primary{color:#fff;background-color:#428bca}a.bg-primary:hover{background-color:#3071a9}.bg-success{background-color:#dff0d8}a.bg-success:hover{background-color:#c1e2b3}.bg-info{background-color:#d9edf7}a.bg-info:hover{background-color:#afd9ee}.bg-warning{background-color:#fcf8e3}a.bg-warning:hover{background-color:#f7ecb5}.bg-danger{background-color:#f2dede}a.bg-danger:hover{background-color:#e4b9b9}.page-header{padding-bottom:9px;margin:40px 0 20px;border-bottom:1px solid #eee}ul,ol{margin-top:0;margin-bottom:10px}ul ul,ol ul,ul ol,ol ol{margin-bottom:0}.list-unstyled{padding-left:0;list-style:none}.list-inline{padding-left:0;list-style:none;margin-left:-5px}.list-inline>li{display:inline-block;padding-left:5px;padding-right:5px}dl{margin-top:0;margin-bottom:20px}dt,dd{line-height:1.42857143}dt{font-weight:700}dd{margin-left:0}@media (min-width:768px){.dl-horizontal dt{float:left;width:160px;clear:left;text-align:right;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.dl-horizontal dd{margin-left:180px}}abbr[title],abbr[data-original-title]{cursor:help;border-bottom:1px dotted #999}.initialism{font-size:90%;text-transform:uppercase}blockquote{padding:10px 20px;margin:0 0 20px;font-size:17.5px;border-left:5px solid #eee}blockquote p:last-child,blockquote ul:last-child,blockquote ol:last-child{margin-bottom:0}blockquote footer,blockquote small,blockquote .small{display:block;font-size:80%;line-height:1.42857143;color:#999}blockquote footer:before,blockquote small:before,blockquote .small:before{content:'\2014 \00A0'}.blockquote-reverse,blockquote.pull-right{padding-right:15px;padding-left:0;border-right:5px solid #eee;border-left:0;text-align:right}.blockquote-reverse footer:before,blockquote.pull-right footer:before,.blockquote-reverse small:before,blockquote.pull-right small:before,.blockquote-reverse .small:before,blockquote.pull-right .small:before{content:''}.blockquote-reverse footer:after,blockquote.pull-right footer:after,.blockquote-reverse small:after,blockquote.pull-right small:after,.blockquote-reverse .small:after,blockquote.pull-right .small:after{content:'\00A0 \2014'}blockquote:before,blockquote:after{content:""}address{margin-bottom:20px;font-style:normal;line-height:1.42857143}code,kbd,pre,samp{font-family:Menlo,Monaco,Consolas,"Courier New",monospace}code{padding:2px 4px;font-size:90%;color:#c7254e;background-color:#f9f2f4;white-space:nowrap;border-radius:4px}kbd{padding:2px 4px;font-size:90%;color:#fff;background-color:#333;border-radius:3px;box-shadow:inset 0 -1px 0 rgba(0,0,0,.25)}pre{display:block;padding:9.5px;margin:0 0 10px;font-size:13px;line-height:1.42857143;word-break:break-all;word-wrap:break-word;color:#333;background-color:#f5f5f5;border:1px solid #ccc;border-radius:4px}pre code{padding:0;font-size:inherit;color:inherit;white-space:pre-wrap;background-color:transparent;border-radius:0}.pre-scrollable{max-height:340px;overflow-y:scroll}.container{margin-right:auto;margin-left:auto;padding-left:15px;padding-right:15px}@media (min-width:768px){.container{width:750px}}@media (min-width:992px){.container{width:970px}}@media (min-width:1200px){.container{width:1170px}}.container-fluid{margin-right:auto;margin-left:auto;padding-left:15px;padding-right:15px}.row{margin-left:-15px;margin-right:-15px}.col-xs-1,.col-sm-1,.col-md-1,.col-lg-1,.col-xs-2,.col-sm-2,.col-md-2,.col-lg-2,.col-xs-3,.col-sm-3,.col-md-3,.col-lg-3,.col-xs-4,.col-sm-4,.col-md-4,.col-lg-4,.col-xs-5,.col-sm-5,.col-md-5,.col-lg-5,.col-xs-6,.col-sm-6,.col-md-6,.col-lg-6,.col-xs-7,.col-sm-7,.col-md-7,.col-lg-7,.col-xs-8,.col-sm-8,.col-md-8,.col-lg-8,.col-xs-9,.col-sm-9,.col-md-9,.col-lg-9,.col-xs-10,.col-sm-10,.col-md-10,.col-lg-10,.col-xs-11,.col-sm-11,.col-md-11,.col-lg-11,.col-xs-12,.col-sm-12,.col-md-12,.col-lg-12{position:relative;min-height:1px;padding-left:15px;padding-right:15px}.col-xs-1,.col-xs-2,.col-xs-3,.col-xs-4,.col-xs-5,.col-xs-6,.col-xs-7,.col-xs-8,.col-xs-9,.col-xs-10,.col-xs-11,.col-xs-12{float:left}.col-xs-12{width:100%}.col-xs-11{width:91.66666667%}.col-xs-10{width:83.33333333%}.col-xs-9{width:75%}.col-xs-8{width:66.66666667%}.col-xs-7{width:58.33333333%}.col-xs-6{width:50%}.col-xs-5{width:41.66666667%}.col-xs-4{width:33.33333333%}.col-xs-3{width:25%}.col-xs-2{width:16.66666667%}.col-xs-1{width:8.33333333%}.col-xs-pull-12{right:100%}.col-xs-pull-11{right:91.66666667%}.col-xs-pull-10{right:83.33333333%}.col-xs-pull-9{right:75%}.col-xs-pull-8{right:66.66666667%}.col-xs-pull-7{right:58.33333333%}.col-xs-pull-6{right:50%}.col-xs-pull-5{right:41.66666667%}.col-xs-pull-4{right:33.33333333%}.col-xs-pull-3{right:25%}.col-xs-pull-2{right:16.66666667%}.col-xs-pull-1{right:8.33333333%}.col-xs-pull-0{right:0}.col-xs-push-12{left:100%}.col-xs-push-11{left:91.66666667%}.col-xs-push-10{left:83.33333333%}.col-xs-push-9{left:75%}.col-xs-push-8{left:66.66666667%}.col-xs-push-7{left:58.33333333%}.col-xs-push-6{left:50%}.col-xs-push-5{left:41.66666667%}.col-xs-push-4{left:33.33333333%}.col-xs-push-3{left:25%}.col-xs-push-2{left:16.66666667%}.col-xs-push-1{left:8.33333333%}.col-xs-push-0{left:0}.col-xs-offset-12{margin-left:100%}.col-xs-offset-11{margin-left:91.66666667%}.col-xs-offset-10{margin-left:83.33333333%}.col-xs-offset-9{margin-left:75%}.col-xs-offset-8{margin-left:66.66666667%}.col-xs-offset-7{margin-left:58.33333333%}.col-xs-offset-6{margin-left:50%}.col-xs-offset-5{margin-left:41.66666667%}.col-xs-offset-4{margin-left:33.33333333%}.col-xs-offset-3{margin-left:25%}.col-xs-offset-2{margin-left:16.66666667%}.col-xs-offset-1{margin-left:8.33333333%}.col-xs-offset-0{margin-left:0}@media (min-width:768px){.col-sm-1,.col-sm-2,.col-sm-3,.col-sm-4,.col-sm-5,.col-sm-6,.col-sm-7,.col-sm-8,.col-sm-9,.col-sm-10,.col-sm-11,.col-sm-12{float:left}.col-sm-12{width:100%}.col-sm-11{width:91.66666667%}.col-sm-10{width:83.33333333%}.col-sm-9{width:75%}.col-sm-8{width:66.66666667%}.col-sm-7{width:58.33333333%}.col-sm-6{width:50%}.col-sm-5{width:41.66666667%}.col-sm-4{width:33.33333333%}.col-sm-3{width:25%}.col-sm-2{width:16.66666667%}.col-sm-1{width:8.33333333%}.col-sm-pull-12{right:100%}.col-sm-pull-11{right:91.66666667%}.col-sm-pull-10{right:83.33333333%}.col-sm-pull-9{right:75%}.col-sm-pull-8{right:66.66666667%}.col-sm-pull-7{right:58.33333333%}.col-sm-pull-6{right:50%}.col-sm-pull-5{right:41.66666667%}.col-sm-pull-4{right:33.33333333%}.col-sm-pull-3{right:25%}.col-sm-pull-2{right:16.66666667%}.col-sm-pull-1{right:8.33333333%}.col-sm-pull-0{right:0}.col-sm-push-12{left:100%}.col-sm-push-11{left:91.66666667%}.col-sm-push-10{left:83.33333333%}.col-sm-push-9{left:75%}.col-sm-push-8{left:66.66666667%}.col-sm-push-7{left:58.33333333%}.col-sm-push-6{left:50%}.col-sm-push-5{left:41.66666667%}.col-sm-push-4{left:33.33333333%}.col-sm-push-3{left:25%}.col-sm-push-2{left:16.66666667%}.col-sm-push-1{left:8.33333333%}.col-sm-push-0{left:0}.col-sm-offset-12{margin-left:100%}.col-sm-offset-11{margin-left:91.66666667%}.col-sm-offset-10{margin-left:83.33333333%}.col-sm-offset-9{margin-left:75%}.col-sm-offset-8{margin-left:66.66666667%}.col-sm-offset-7{margin-left:58.33333333%}.col-sm-offset-6{margin-left:50%}.col-sm-offset-5{margin-left:41.66666667%}.col-sm-offset-4{margin-left:33.33333333%}.col-sm-offset-3{margin-left:25%}.col-sm-offset-2{margin-left:16.66666667%}.col-sm-offset-1{margin-left:8.33333333%}.col-sm-offset-0{margin-left:0}}@media (min-width:992px){.col-md-1,.col-md-2,.col-md-3,.col-md-4,.col-md-5,.col-md-6,.col-md-7,.col-md-8,.col-md-9,.col-md-10,.col-md-11,.col-md-12{float:left}.col-md-12{width:100%}.col-md-11{width:91.66666667%}.col-md-10{width:83.33333333%}.col-md-9{width:75%}.col-md-8{width:66.66666667%}.col-md-7{width:58.33333333%}.col-md-6{width:50%}.col-md-5{width:41.66666667%}.col-md-4{width:33.33333333%}.col-md-3{width:25%}.col-md-2{width:16.66666667%}.col-md-1{width:8.33333333%}.col-md-pull-12{right:100%}.col-md-pull-11{right:91.66666667%}.col-md-pull-10{right:83.33333333%}.col-md-pull-9{right:75%}.col-md-pull-8{right:66.66666667%}.col-md-pull-7{right:58.33333333%}.col-md-pull-6{right:50%}.col-md-pull-5{right:41.66666667%}.col-md-pull-4{right:33.33333333%}.col-md-pull-3{right:25%}.col-md-pull-2{right:16.66666667%}.col-md-pull-1{right:8.33333333%}.col-md-pull-0{right:0}.col-md-push-12{left:100%}.col-md-push-11{left:91.66666667%}.col-md-push-10{left:83.33333333%}.col-md-push-9{left:75%}.col-md-push-8{left:66.66666667%}.col-md-push-7{left:58.33333333%}.col-md-push-6{left:50%}.col-md-push-5{left:41.66666667%}.col-md-push-4{left:33.33333333%}.col-md-push-3{left:25%}.col-md-push-2{left:16.66666667%}.col-md-push-1{left:8.33333333%}.col-md-push-0{left:0}.col-md-offset-12{margin-left:100%}.col-md-offset-11{margin-left:91.66666667%}.col-md-offset-10{margin-left:83.33333333%}.col-md-offset-9{margin-left:75%}.col-md-offset-8{margin-left:66.66666667%}.col-md-offset-7{margin-left:58.33333333%}.col-md-offset-6{margin-left:50%}.col-md-offset-5{margin-left:41.66666667%}.col-md-offset-4{margin-left:33.33333333%}.col-md-offset-3{margin-left:25%}.col-md-offset-2{margin-left:16.66666667%}.col-md-offset-1{margin-left:8.33333333%}.col-md-offset-0{margin-left:0}}@media (min-width:1200px){.col-lg-1,.col-lg-2,.col-lg-3,.col-lg-4,.col-lg-5,.col-lg-6,.col-lg-7,.col-lg-8,.col-lg-9,.col-lg-10,.col-lg-11,.col-lg-12{float:left}.col-lg-12{width:100%}.col-lg-11{width:91.66666667%}.col-lg-10{width:83.33333333%}.col-lg-9{width:75%}.col-lg-8{width:66.66666667%}.col-lg-7{width:58.33333333%}.col-lg-6{width:50%}.col-lg-5{width:41.66666667%}.col-lg-4{width:33.33333333%}.col-lg-3{width:25%}.col-lg-2{width:16.66666667%}.col-lg-1{width:8.33333333%}.col-lg-pull-12{right:100%}.col-lg-pull-11{right:91.66666667%}.col-lg-pull-10{right:83.33333333%}.col-lg-pull-9{right:75%}.col-lg-pull-8{right:66.66666667%}.col-lg-pull-7{right:58.33333333%}.col-lg-pull-6{right:50%}.col-lg-pull-5{right:41.66666667%}.col-lg-pull-4{right:33.33333333%}.col-lg-pull-3{right:25%}.col-lg-pull-2{right:16.66666667%}.col-lg-pull-1{right:8.33333333%}.col-lg-pull-0{right:0}.col-lg-push-12{left:100%}.col-lg-push-11{left:91.66666667%}.col-lg-push-10{left:83.33333333%}.col-lg-push-9{left:75%}.col-lg-push-8{left:66.66666667%}.col-lg-push-7{left:58.33333333%}.col-lg-push-6{left:50%}.col-lg-push-5{left:41.66666667%}.col-lg-push-4{left:33.33333333%}.col-lg-push-3{left:25%}.col-lg-push-2{left:16.66666667%}.col-lg-push-1{left:8.33333333%}.col-lg-push-0{left:0}.col-lg-offset-12{margin-left:100%}.col-lg-offset-11{margin-left:91.66666667%}.col-lg-offset-10{margin-left:83.33333333%}.col-lg-offset-9{margin-left:75%}.col-lg-offset-8{margin-left:66.66666667%}.col-lg-offset-7{margin-left:58.33333333%}.col-lg-offset-6{margin-left:50%}.col-lg-offset-5{margin-left:41.66666667%}.col-lg-offset-4{margin-left:33.33333333%}.col-lg-offset-3{margin-left:25%}.col-lg-offset-2{margin-left:16.66666667%}.col-lg-offset-1{margin-left:8.33333333%}.col-lg-offset-0{margin-left:0}}table{max-width:100%;background-color:transparent}th{text-align:left}.table{width:100%;margin-bottom:20px}.table>thead>tr>th,.table>tbody>tr>th,.table>tfoot>tr>th,.table>thead>tr>td,.table>tbody>tr>td,.table>tfoot>tr>td{padding:8px;line-height:1.42857143;vertical-align:top;border-top:1px solid #ddd}.table>thead>tr>th{vertical-align:bottom;border-bottom:2px solid #ddd}.table>caption+thead>tr:first-child>th,.table>colgroup+thead>tr:first-child>th,.table>thead:first-child>tr:first-child>th,.table>caption+thead>tr:first-child>td,.table>colgroup+thead>tr:first-child>td,.table>thead:first-child>tr:first-child>td{border-top:0}.table>tbody+tbody{border-top:2px solid #ddd}.table .table{background-color:#fff}.table-condensed>thead>tr>th,.table-condensed>tbody>tr>th,.table-condensed>tfoot>tr>th,.table-condensed>thead>tr>td,.table-condensed>tbody>tr>td,.table-condensed>tfoot>tr>td{padding:5px}.table-bordered{border:1px solid #ddd}.table-bordered>thead>tr>th,.table-bordered>tbody>tr>th,.table-bordered>tfoot>tr>th,.table-bordered>thead>tr>td,.table-bordered>tbody>tr>td,.table-bordered>tfoot>tr>td{border:1px solid #ddd}.table-bordered>thead>tr>th,.table-bordered>thead>tr>td{border-bottom-width:2px}.table-striped>tbody>tr:nth-child(odd)>td,.table-striped>tbody>tr:nth-child(odd)>th{background-color:#f9f9f9}.table-hover>tbody>tr:hover>td,.table-hover>tbody>tr:hover>th{background-color:#f5f5f5}table col[class*=col-]{position:static;float:none;display:table-column}table td[class*=col-],table th[class*=col-]{position:static;float:none;display:table-cell}.table>thead>tr>td.active,.table>tbody>tr>td.active,.table>tfoot>tr>td.active,.table>thead>tr>th.active,.table>tbody>tr>th.active,.table>tfoot>tr>th.active,.table>thead>tr.active>td,.table>tbody>tr.active>td,.table>tfoot>tr.active>td,.table>thead>tr.active>th,.table>tbody>tr.active>th,.table>tfoot>tr.active>th{background-color:#f5f5f5}.table-hover>tbody>tr>td.active:hover,.table-hover>tbody>tr>th.active:hover,.table-hover>tbody>tr.active:hover>td,.table-hover>tbody>tr.active:hover>th{background-color:#e8e8e8}.table>thead>tr>td.success,.table>tbody>tr>td.success,.table>tfoot>tr>td.success,.table>thead>tr>th.success,.table>tbody>tr>th.success,.table>tfoot>tr>th.success,.table>thead>tr.success>td,.table>tbody>tr.success>td,.table>tfoot>tr.success>td,.table>thead>tr.success>th,.table>tbody>tr.success>th,.table>tfoot>tr.success>th{background-color:#dff0d8}.table-hover>tbody>tr>td.success:hover,.table-hover>tbody>tr>th.success:hover,.table-hover>tbody>tr.success:hover>td,.table-hover>tbody>tr.success:hover>th{background-color:#d0e9c6}.table>thead>tr>td.info,.table>tbody>tr>td.info,.table>tfoot>tr>td.info,.table>thead>tr>th.info,.table>tbody>tr>th.info,.table>tfoot>tr>th.info,.table>thead>tr.info>td,.table>tbody>tr.info>td,.table>tfoot>tr.info>td,.table>thead>tr.info>th,.table>tbody>tr.info>th,.table>tfoot>tr.info>th{background-color:#d9edf7}.table-hover>tbody>tr>td.info:hover,.table-hover>tbody>tr>th.info:hover,.table-hover>tbody>tr.info:hover>td,.table-hover>tbody>tr.info:hover>th{background-color:#c4e3f3}.table>thead>tr>td.warning,.table>tbody>tr>td.warning,.table>tfoot>tr>td.warning,.table>thead>tr>th.warning,.table>tbody>tr>th.warning,.table>tfoot>tr>th.warning,.table>thead>tr.warning>td,.table>tbody>tr.warning>td,.table>tfoot>tr.warning>td,.table>thead>tr.warning>th,.table>tbody>tr.warning>th,.table>tfoot>tr.warning>th{background-color:#fcf8e3}.table-hover>tbody>tr>td.warning:hover,.table-hover>tbody>tr>th.warning:hover,.table-hover>tbody>tr.warning:hover>td,.table-hover>tbody>tr.warning:hover>th{background-color:#faf2cc}.table>thead>tr>td.danger,.table>tbody>tr>td.danger,.table>tfoot>tr>td.danger,.table>thead>tr>th.danger,.table>tbody>tr>th.danger,.table>tfoot>tr>th.danger,.table>thead>tr.danger>td,.table>tbody>tr.danger>td,.table>tfoot>tr.danger>td,.table>thead>tr.danger>th,.table>tbody>tr.danger>th,.table>tfoot>tr.danger>th{background-color:#f2dede}.table-hover>tbody>tr>td.danger:hover,.table-hover>tbody>tr>th.danger:hover,.table-hover>tbody>tr.danger:hover>td,.table-hover>tbody>tr.danger:hover>th{background-color:#ebcccc}@media (max-width:767px){.table-responsive{width:100%;margin-bottom:15px;overflow-y:hidden;overflow-x:scroll;-ms-overflow-style:-ms-autohiding-scrollbar;border:1px solid #ddd;-webkit-overflow-scrolling:touch}.table-responsive>.table{margin-bottom:0}.table-responsive>.table>thead>tr>th,.table-responsive>.table>tbody>tr>th,.table-responsive>.table>tfoot>tr>th,.table-responsive>.table>thead>tr>td,.table-responsive>.table>tbody>tr>td,.table-responsive>.table>tfoot>tr>td{white-space:nowrap}.table-responsive>.table-bordered{border:0}.table-responsive>.table-bordered>thead>tr>th:first-child,.table-responsive>.table-bordered>tbody>tr>th:first-child,.table-responsive>.table-bordered>tfoot>tr>th:first-child,.table-responsive>.table-bordered>thead>tr>td:first-child,.table-responsive>.table-bordered>tbody>tr>td:first-child,.table-responsive>.table-bordered>tfoot>tr>td:first-child{border-left:0}.table-responsive>.table-bordered>thead>tr>th:last-child,.table-responsive>.table-bordered>tbody>tr>th:last-child,.table-responsive>.table-bordered>tfoot>tr>th:last-child,.table-responsive>.table-bordered>thead>tr>td:last-child,.table-responsive>.table-bordered>tbody>tr>td:last-child,.table-responsive>.table-bordered>tfoot>tr>td:last-child{border-right:0}.table-responsive>.table-bordered>tbody>tr:last-child>th,.table-responsive>.table-bordered>tfoot>tr:last-child>th,.table-responsive>.table-bordered>tbody>tr:last-child>td,.table-responsive>.table-bordered>tfoot>tr:last-child>td{border-bottom:0}}fieldset{padding:0;margin:0;border:0;min-width:0}legend{display:block;width:100%;padding:0;margin-bottom:20px;font-size:21px;line-height:inherit;color:#333;border:0;border-bottom:1px solid #e5e5e5}label{display:inline-block;margin-bottom:5px;font-weight:700}input[type=search]{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}input[type=radio],input[type=checkbox]{margin:4px 0 0;margin-top:1px \9;line-height:normal}input[type=file]{display:block}input[type=range]{display:block;width:100%}select[multiple],select[size]{height:auto}input[type=file]:focus,input[type=radio]:focus,input[type=checkbox]:focus{outline:thin dotted;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}output{display:block;padding-top:7px;font-size:14px;line-height:1.42857143;color:#555}.form-control{display:block;width:100%;height:34px;padding:6px 12px;font-size:14px;line-height:1.42857143;color:#555;background-color:#fff;background-image:none;border:1px solid #ccc;border-radius:4px;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 1px rgba(0,0,0,.075);-webkit-transition:border-color ease-in-out .15s,box-shadow ease-in-out .15s;transition:border-color ease-in-out .15s,box-shadow ease-in-out .15s}.form-control:focus{border-color:#66afe9;outline:0;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(102,175,233,.6);box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(102,175,233,.6)}.form-control::-moz-placeholder{color:#999;opacity:1}.form-control:-ms-input-placeholder{color:#999}.form-control::-webkit-input-placeholder{color:#999}.form-control[disabled],.form-control[readonly],fieldset[disabled] .form-control{cursor:not-allowed;background-color:#eee;opacity:1}textarea.form-control{height:auto}input[type=search]{-webkit-appearance:none}input[type=date]{line-height:34px}.form-group{margin-bottom:15px}.radio,.checkbox{display:block;min-height:20px;margin-top:10px;margin-bottom:10px;padding-left:20px}.radio label,.checkbox label{display:inline;font-weight:400;cursor:pointer}.radio input[type=radio],.radio-inline input[type=radio],.checkbox input[type=checkbox],.checkbox-inline input[type=checkbox]{float:left;margin-left:-20px}.radio+.radio,.checkbox+.checkbox{margin-top:-5px}.radio-inline,.checkbox-inline{display:inline-block;padding-left:20px;margin-bottom:0;vertical-align:middle;font-weight:400;cursor:pointer}.radio-inline+.radio-inline,.checkbox-inline+.checkbox-inline{margin-top:0;margin-left:10px}input[type=radio][disabled],input[type=checkbox][disabled],.radio[disabled],.radio-inline[disabled],.checkbox[disabled],.checkbox-inline[disabled],fieldset[disabled] input[type=radio],fieldset[disabled] input[type=checkbox],fieldset[disabled] .radio,fieldset[disabled] .radio-inline,fieldset[disabled] .checkbox,fieldset[disabled] .checkbox-inline{cursor:not-allowed}.input-sm{height:30px;padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}select.input-sm{height:30px;line-height:30px}textarea.input-sm,select[multiple].input-sm{height:auto}.input-lg{height:46px;padding:10px 16px;font-size:18px;line-height:1.33;border-radius:6px}select.input-lg{height:46px;line-height:46px}textarea.input-lg,select[multiple].input-lg{height:auto}.has-feedback{position:relative}.has-feedback .form-control{padding-right:42.5px}.has-feedback .form-control-feedback{position:absolute;top:25px;right:0;display:block;width:34px;height:34px;line-height:34px;text-align:center}.has-success .help-block,.has-success .control-label,.has-success .radio,.has-success .checkbox,.has-success .radio-inline,.has-success .checkbox-inline{color:#3c763d}.has-success .form-control{border-color:#3c763d;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 1px rgba(0,0,0,.075)}.has-success .form-control:focus{border-color:#2b542c;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #67b168;box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #67b168}.has-success .input-group-addon{color:#3c763d;border-color:#3c763d;background-color:#dff0d8}.has-success .form-control-feedback{color:#3c763d}.has-warning .help-block,.has-warning .control-label,.has-warning .radio,.has-warning .checkbox,.has-warning .radio-inline,.has-warning .checkbox-inline{color:#8a6d3b}.has-warning .form-control{border-color:#8a6d3b;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 1px rgba(0,0,0,.075)}.has-warning .form-control:focus{border-color:#66512c;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #c0a16b;box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #c0a16b}.has-warning .input-group-addon{color:#8a6d3b;border-color:#8a6d3b;background-color:#fcf8e3}.has-warning .form-control-feedback{color:#8a6d3b}.has-error .help-block,.has-error .control-label,.has-error .radio,.has-error .checkbox,.has-error .radio-inline,.has-error .checkbox-inline{color:#a94442}.has-error .form-control{border-color:#a94442;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 1px rgba(0,0,0,.075)}.has-error .form-control:focus{border-color:#843534;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #ce8483;box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #ce8483}.has-error .input-group-addon{color:#a94442;border-color:#a94442;background-color:#f2dede}.has-error .form-control-feedback{color:#a94442}.form-control-static{margin-bottom:0}.help-block{display:block;margin-top:5px;margin-bottom:10px;color:#737373}@media (min-width:768px){.form-inline .form-group{display:inline-block;margin-bottom:0;vertical-align:middle}.form-inline .form-control{display:inline-block;width:auto;vertical-align:middle}.form-inline .input-group>.form-control{width:100%}.form-inline .control-label{margin-bottom:0;vertical-align:middle}.form-inline .radio,.form-inline .checkbox{display:inline-block;margin-top:0;margin-bottom:0;padding-left:0;vertical-align:middle}.form-inline .radio input[type=radio],.form-inline .checkbox input[type=checkbox]{float:none;margin-left:0}.form-inline .has-feedback .form-control-feedback{top:0}}.form-horizontal .control-label,.form-horizontal .radio,.form-horizontal .checkbox,.form-horizontal .radio-inline,.form-horizontal .checkbox-inline{margin-top:0;margin-bottom:0;padding-top:7px}.form-horizontal .radio,.form-horizontal .checkbox{min-height:27px}.form-horizontal .form-group{margin-left:-15px;margin-right:-15px}.form-horizontal .form-control-static{padding-top:7px}@media (min-width:768px){.form-horizontal .control-label{text-align:right}}.form-horizontal .has-feedback .form-control-feedback{top:0;right:15px}.btn{display:inline-block;margin-bottom:0;font-weight:400;text-align:center;vertical-align:middle;cursor:pointer;background-image:none;border:1px solid transparent;white-space:nowrap;padding:6px 12px;font-size:14px;line-height:1.42857143;border-radius:4px;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.btn:focus,.btn:active:focus,.btn.active:focus{outline:thin dotted;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}.btn:hover,.btn:focus{color:#333;text-decoration:none}.btn:active,.btn.active{outline:0;background-image:none;-webkit-box-shadow:inset 0 3px 5px rgba(0,0,0,.125);box-shadow:inset 0 3px 5px rgba(0,0,0,.125)}.btn.disabled,.btn[disabled],fieldset[disabled] .btn{cursor:not-allowed;pointer-events:none;opacity:.65;filter:alpha(opacity=65);-webkit-box-shadow:none;box-shadow:none}.btn-default{color:#333;background-color:#fff;border-color:#ccc}.btn-default:hover,.btn-default:focus,.btn-default:active,.btn-default.active,.open .dropdown-toggle.btn-default{color:#333;background-color:#ebebeb;border-color:#adadad}.btn-default:active,.btn-default.active,.open .dropdown-toggle.btn-default{background-image:none}.btn-default.disabled,.btn-default[disabled],fieldset[disabled] .btn-default,.btn-default.disabled:hover,.btn-default[disabled]:hover,fieldset[disabled] .btn-default:hover,.btn-default.disabled:focus,.btn-default[disabled]:focus,fieldset[disabled] .btn-default:focus,.btn-default.disabled:active,.btn-default[disabled]:active,fieldset[disabled] .btn-default:active,.btn-default.disabled.active,.btn-default[disabled].active,fieldset[disabled] .btn-default.active{background-color:#fff;border-color:#ccc}.btn-default .badge{color:#fff;background-color:#333}.btn-primary{color:#fff;background-color:#428bca;border-color:#357ebd}.btn-primary:hover,.btn-primary:focus,.btn-primary:active,.btn-primary.active,.open .dropdown-toggle.btn-primary{color:#fff;background-color:#3276b1;border-color:#285e8e}.btn-primary:active,.btn-primary.active,.open .dropdown-toggle.btn-primary{background-image:none}.btn-primary.disabled,.btn-primary[disabled],fieldset[disabled] .btn-primary,.btn-primary.disabled:hover,.btn-primary[disabled]:hover,fieldset[disabled] .btn-primary:hover,.btn-primary.disabled:focus,.btn-primary[disabled]:focus,fieldset[disabled] .btn-primary:focus,.btn-primary.disabled:active,.btn-primary[disabled]:active,fieldset[disabled] .btn-primary:active,.btn-primary.disabled.active,.btn-primary[disabled].active,fieldset[disabled] .btn-primary.active{background-color:#428bca;border-color:#357ebd}.btn-primary .badge{color:#428bca;background-color:#fff}.btn-success{color:#fff;background-color:#5cb85c;border-color:#4cae4c}.btn-success:hover,.btn-success:focus,.btn-success:active,.btn-success.active,.open .dropdown-toggle.btn-success{color:#fff;background-color:#47a447;border-color:#398439}.btn-success:active,.btn-success.active,.open .dropdown-toggle.btn-success{background-image:none}.btn-success.disabled,.btn-success[disabled],fieldset[disabled] .btn-success,.btn-success.disabled:hover,.btn-success[disabled]:hover,fieldset[disabled] .btn-success:hover,.btn-success.disabled:focus,.btn-success[disabled]:focus,fieldset[disabled] .btn-success:focus,.btn-success.disabled:active,.btn-success[disabled]:active,fieldset[disabled] .btn-success:active,.btn-success.disabled.active,.btn-success[disabled].active,fieldset[disabled] .btn-success.active{background-color:#5cb85c;border-color:#4cae4c}.btn-success .badge{color:#5cb85c;background-color:#fff}.btn-info{color:#fff;background-color:#5bc0de;border-color:#46b8da}.btn-info:hover,.btn-info:focus,.btn-info:active,.btn-info.active,.open .dropdown-toggle.btn-info{color:#fff;background-color:#39b3d7;border-color:#269abc}.btn-info:active,.btn-info.active,.open .dropdown-toggle.btn-info{background-image:none}.btn-info.disabled,.btn-info[disabled],fieldset[disabled] .btn-info,.btn-info.disabled:hover,.btn-info[disabled]:hover,fieldset[disabled] .btn-info:hover,.btn-info.disabled:focus,.btn-info[disabled]:focus,fieldset[disabled] .btn-info:focus,.btn-info.disabled:active,.btn-info[disabled]:active,fieldset[disabled] .btn-info:active,.btn-info.disabled.active,.btn-info[disabled].active,fieldset[disabled] .btn-info.active{background-color:#5bc0de;border-color:#46b8da}.btn-info .badge{color:#5bc0de;background-color:#fff}.btn-warning{color:#fff;background-color:#f0ad4e;border-color:#eea236}.btn-warning:hover,.btn-warning:focus,.btn-warning:active,.btn-warning.active,.open .dropdown-toggle.btn-warning{color:#fff;background-color:#ed9c28;border-color:#d58512}.btn-warning:active,.btn-warning.active,.open .dropdown-toggle.btn-warning{background-image:none}.btn-warning.disabled,.btn-warning[disabled],fieldset[disabled] .btn-warning,.btn-warning.disabled:hover,.btn-warning[disabled]:hover,fieldset[disabled] .btn-warning:hover,.btn-warning.disabled:focus,.btn-warning[disabled]:focus,fieldset[disabled] .btn-warning:focus,.btn-warning.disabled:active,.btn-warning[disabled]:active,fieldset[disabled] .btn-warning:active,.btn-warning.disabled.active,.btn-warning[disabled].active,fieldset[disabled] .btn-warning.active{background-color:#f0ad4e;border-color:#eea236}.btn-warning .badge{color:#f0ad4e;background-color:#fff}.btn-danger{color:#fff;background-color:#d9534f;border-color:#d43f3a}.btn-danger:hover,.btn-danger:focus,.btn-danger:active,.btn-danger.active,.open .dropdown-toggle.btn-danger{color:#fff;background-color:#d2322d;border-color:#ac2925}.btn-danger:active,.btn-danger.active,.open .dropdown-toggle.btn-danger{background-image:none}.btn-danger.disabled,.btn-danger[disabled],fieldset[disabled] .btn-danger,.btn-danger.disabled:hover,.btn-danger[disabled]:hover,fieldset[disabled] .btn-danger:hover,.btn-danger.disabled:focus,.btn-danger[disabled]:focus,fieldset[disabled] .btn-danger:focus,.btn-danger.disabled:active,.btn-danger[disabled]:active,fieldset[disabled] .btn-danger:active,.btn-danger.disabled.active,.btn-danger[disabled].active,fieldset[disabled] .btn-danger.active{background-color:#d9534f;border-color:#d43f3a}.btn-danger .badge{color:#d9534f;background-color:#fff}.btn-link{color:#428bca;font-weight:400;cursor:pointer;border-radius:0}.btn-link,.btn-link:active,.btn-link[disabled],fieldset[disabled] .btn-link{background-color:transparent;-webkit-box-shadow:none;box-shadow:none}.btn-link,.btn-link:hover,.btn-link:focus,.btn-link:active{border-color:transparent}.btn-link:hover,.btn-link:focus{color:#2a6496;text-decoration:underline;background-color:transparent}.btn-link[disabled]:hover,fieldset[disabled] .btn-link:hover,.btn-link[disabled]:focus,fieldset[disabled] .btn-link:focus{color:#999;text-decoration:none}.btn-lg,.btn-group-lg>.btn{padding:10px 16px;font-size:18px;line-height:1.33;border-radius:6px}.btn-sm,.btn-group-sm>.btn{padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}.btn-xs,.btn-group-xs>.btn{padding:1px 5px;font-size:12px;line-height:1.5;border-radius:3px}.btn-block{display:block;width:100%;padding-left:0;padding-right:0}.btn-block+.btn-block{margin-top:5px}input[type=submit].btn-block,input[type=reset].btn-block,input[type=button].btn-block{width:100%}.fade{opacity:0;-webkit-transition:opacity .15s linear;transition:opacity .15s linear}.fade.in{opacity:1}.collapse{display:none}.collapse.in{display:block}.collapsing{position:relative;height:0;overflow:hidden;-webkit-transition:height .35s ease;transition:height .35s ease}@font-face{font-family:'Glyphicons Halflings';src:url(../fonts/glyphicons-halflings-regular.eot);src:url(../fonts/glyphicons-halflings-regular.eot?#iefix) format('embedded-opentype'),url(../fonts/glyphicons-halflings-regular.woff) format('woff'),url(../fonts/glyphicons-halflings-regular.ttf) format('truetype'),url(../fonts/glyphicons-halflings-regular.svg#glyphicons_halflingsregular) format('svg')}.glyphicon{position:relative;top:1px;display:inline-block;font-family:'Glyphicons Halflings';font-style:normal;font-weight:400;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.glyphicon-asterisk:before{content:"\2a"}.glyphicon-plus:before{content:"\2b"}.glyphicon-euro:before{content:"\20ac"}.glyphicon-minus:before{content:"\2212"}.glyphicon-cloud:before{content:"\2601"}.glyphicon-envelope:before{content:"\2709"}.glyphicon-pencil:before{content:"\270f"}.glyphicon-glass:before{content:"\e001"}.glyphicon-music:before{content:"\e002"}.glyphicon-search:before{content:"\e003"}.glyphicon-heart:before{content:"\e005"}.glyphicon-star:before{content:"\e006"}.glyphicon-star-empty:before{content:"\e007"}.glyphicon-user:before{content:"\e008"}.glyphicon-film:before{content:"\e009"}.glyphicon-th-large:before{content:"\e010"}.glyphicon-th:before{content:"\e011"}.glyphicon-th-list:before{content:"\e012"}.glyphicon-ok:before{content:"\e013"}.glyphicon-remove:before{content:"\e014"}.glyphicon-zoom-in:before{content:"\e015"}.glyphicon-zoom-out:before{content:"\e016"}.glyphicon-off:before{content:"\e017"}.glyphicon-signal:before{content:"\e018"}.glyphicon-cog:before{content:"\e019"}.glyphicon-trash:before{content:"\e020"}.glyphicon-home:before{content:"\e021"}.glyphicon-file:before{content:"\e022"}.glyphicon-time:before{content:"\e023"}.glyphicon-road:before{content:"\e024"}.glyphicon-download-alt:before{content:"\e025"}.glyphicon-download:before{content:"\e026"}.glyphicon-upload:before{content:"\e027"}.glyphicon-inbox:before{content:"\e028"}.glyphicon-play-circle:before{content:"\e029"}.glyphicon-repeat:before{content:"\e030"}.glyphicon-refresh:before{content:"\e031"}.glyphicon-list-alt:before{content:"\e032"}.glyphicon-lock:before{content:"\e033"}.glyphicon-flag:before{content:"\e034"}.glyphicon-headphones:before{content:"\e035"}.glyphicon-volume-off:before{content:"\e036"}.glyphicon-volume-down:before{content:"\e037"}.glyphicon-volume-up:before{content:"\e038"}.glyphicon-qrcode:before{content:"\e039"}.glyphicon-barcode:before{content:"\e040"}.glyphicon-tag:before{content:"\e041"}.glyphicon-tags:before{content:"\e042"}.glyphicon-book:before{content:"\e043"}.glyphicon-bookmark:before{content:"\e044"}.glyphicon-print:before{content:"\e045"}.glyphicon-camera:before{content:"\e046"}.glyphicon-font:before{content:"\e047"}.glyphicon-bold:before{content:"\e048"}.glyphicon-italic:before{content:"\e049"}.glyphicon-text-height:before{content:"\e050"}.glyphicon-text-width:before{content:"\e051"}.glyphicon-align-left:before{content:"\e052"}.glyphicon-align-center:before{content:"\e053"}.glyphicon-align-right:before{content:"\e054"}.glyphicon-align-justify:before{content:"\e055"}.glyphicon-list:before{content:"\e056"}.glyphicon-indent-left:before{content:"\e057"}.glyphicon-indent-right:before{content:"\e058"}.glyphicon-facetime-video:before{content:"\e059"}.glyphicon-picture:before{content:"\e060"}.glyphicon-map-marker:before{content:"\e062"}.glyphicon-adjust:before{content:"\e063"}.glyphicon-tint:before{content:"\e064"}.glyphicon-edit:before{content:"\e065"}.glyphicon-share:before{content:"\e066"}.glyphicon-check:before{content:"\e067"}.glyphicon-move:before{content:"\e068"}.glyphicon-step-backward:before{content:"\e069"}.glyphicon-fast-backward:before{content:"\e070"}.glyphicon-backward:before{content:"\e071"}.glyphicon-play:before{content:"\e072"}.glyphicon-pause:before{content:"\e073"}.glyphicon-stop:before{content:"\e074"}.glyphicon-forward:before{content:"\e075"}.glyphicon-fast-forward:before{content:"\e076"}.glyphicon-step-forward:before{content:"\e077"}.glyphicon-eject:before{content:"\e078"}.glyphicon-chevron-left:before{content:"\e079"}.glyphicon-chevron-right:before{content:"\e080"}.glyphicon-plus-sign:before{content:"\e081"}.glyphicon-minus-sign:before{content:"\e082"}.glyphicon-remove-sign:before{content:"\e083"}.glyphicon-ok-sign:before{content:"\e084"}.glyphicon-question-sign:before{content:"\e085"}.glyphicon-info-sign:before{content:"\e086"}.glyphicon-screenshot:before{content:"\e087"}.glyphicon-remove-circle:before{content:"\e088"}.glyphicon-ok-circle:before{content:"\e089"}.glyphicon-ban-circle:before{content:"\e090"}.glyphicon-arrow-left:before{content:"\e091"}.glyphicon-arrow-right:before{content:"\e092"}.glyphicon-arrow-up:before{content:"\e093"}.glyphicon-arrow-down:before{content:"\e094"}.glyphicon-share-alt:before{content:"\e095"}.glyphicon-resize-full:before{content:"\e096"}.glyphicon-resize-small:before{content:"\e097"}.glyphicon-exclamation-sign:before{content:"\e101"}.glyphicon-gift:before{content:"\e102"}.glyphicon-leaf:before{content:"\e103"}.glyphicon-fire:before{content:"\e104"}.glyphicon-eye-open:before{content:"\e105"}.glyphicon-eye-close:before{content:"\e106"}.glyphicon-warning-sign:before{content:"\e107"}.glyphicon-plane:before{content:"\e108"}.glyphicon-calendar:before{content:"\e109"}.glyphicon-random:before{content:"\e110"}.glyphicon-comment:before{content:"\e111"}.glyphicon-magnet:before{content:"\e112"}.glyphicon-chevron-up:before{content:"\e113"}.glyphicon-chevron-down:before{content:"\e114"}.glyphicon-retweet:before{content:"\e115"}.glyphicon-shopping-cart:before{content:"\e116"}.glyphicon-folder-close:before{content:"\e117"}.glyphicon-folder-open:before{content:"\e118"}.glyphicon-resize-vertical:before{content:"\e119"}.glyphicon-resize-horizontal:before{content:"\e120"}.glyphicon-hdd:before{content:"\e121"}.glyphicon-bullhorn:before{content:"\e122"}.glyphicon-bell:before{content:"\e123"}.glyphicon-certificate:before{content:"\e124"}.glyphicon-thumbs-up:before{content:"\e125"}.glyphicon-thumbs-down:before{content:"\e126"}.glyphicon-hand-right:before{content:"\e127"}.glyphicon-hand-left:before{content:"\e128"}.glyphicon-hand-up:before{content:"\e129"}.glyphicon-hand-down:before{content:"\e130"}.glyphicon-circle-arrow-right:before{content:"\e131"}.glyphicon-circle-arrow-left:before{content:"\e132"}.glyphicon-circle-arrow-up:before{content:"\e133"}.glyphicon-circle-arrow-down:before{content:"\e134"}.glyphicon-globe:before{content:"\e135"}.glyphicon-wrench:before{content:"\e136"}.glyphicon-tasks:before{content:"\e137"}.glyphicon-filter:before{content:"\e138"}.glyphicon-briefcase:before{content:"\e139"}.glyphicon-fullscreen:before{content:"\e140"}.glyphicon-dashboard:before{content:"\e141"}.glyphicon-paperclip:before{content:"\e142"}.glyphicon-heart-empty:before{content:"\e143"}.glyphicon-link:before{content:"\e144"}.glyphicon-phone:before{content:"\e145"}.glyphicon-pushpin:before{content:"\e146"}.glyphicon-usd:before{content:"\e148"}.glyphicon-gbp:before{content:"\e149"}.glyphicon-sort:before{content:"\e150"}.glyphicon-sort-by-alphabet:before{content:"\e151"}.glyphicon-sort-by-alphabet-alt:before{content:"\e152"}.glyphicon-sort-by-order:before{content:"\e153"}.glyphicon-sort-by-order-alt:before{content:"\e154"}.glyphicon-sort-by-attributes:before{content:"\e155"}.glyphicon-sort-by-attributes-alt:before{content:"\e156"}.glyphicon-unchecked:before{content:"\e157"}.glyphicon-expand:before{content:"\e158"}.glyphicon-collapse-down:before{content:"\e159"}.glyphicon-collapse-up:before{content:"\e160"}.glyphicon-log-in:before{content:"\e161"}.glyphicon-flash:before{content:"\e162"}.glyphicon-log-out:before{content:"\e163"}.glyphicon-new-window:before{content:"\e164"}.glyphicon-record:before{content:"\e165"}.glyphicon-save:before{content:"\e166"}.glyphicon-open:before{content:"\e167"}.glyphicon-saved:before{content:"\e168"}.glyphicon-import:before{content:"\e169"}.glyphicon-export:before{content:"\e170"}.glyphicon-send:before{content:"\e171"}.glyphicon-floppy-disk:before{content:"\e172"}.glyphicon-floppy-saved:before{content:"\e173"}.glyphicon-floppy-remove:before{content:"\e174"}.glyphicon-floppy-save:before{content:"\e175"}.glyphicon-floppy-open:before{content:"\e176"}.glyphicon-credit-card:before{content:"\e177"}.glyphicon-transfer:before{content:"\e178"}.glyphicon-cutlery:before{content:"\e179"}.glyphicon-header:before{content:"\e180"}.glyphicon-compressed:before{content:"\e181"}.glyphicon-earphone:before{content:"\e182"}.glyphicon-phone-alt:before{content:"\e183"}.glyphicon-tower:before{content:"\e184"}.glyphicon-stats:before{content:"\e185"}.glyphicon-sd-video:before{content:"\e186"}.glyphicon-hd-video:before{content:"\e187"}.glyphicon-subtitles:before{content:"\e188"}.glyphicon-sound-stereo:before{content:"\e189"}.glyphicon-sound-dolby:before{content:"\e190"}.glyphicon-sound-5-1:before{content:"\e191"}.glyphicon-sound-6-1:before{content:"\e192"}.glyphicon-sound-7-1:before{content:"\e193"}.glyphicon-copyright-mark:before{content:"\e194"}.glyphicon-registration-mark:before{content:"\e195"}.glyphicon-cloud-download:before{content:"\e197"}.glyphicon-cloud-upload:before{content:"\e198"}.glyphicon-tree-conifer:before{content:"\e199"}.glyphicon-tree-deciduous:before{content:"\e200"}.caret{display:inline-block;width:0;height:0;margin-left:2px;vertical-align:middle;border-top:4px solid;border-right:4px solid transparent;border-left:4px solid transparent}.dropdown{position:relative}.dropdown-toggle:focus{outline:0}.dropdown-menu{position:absolute;top:100%;left:0;z-index:1000;display:none;float:left;min-width:160px;padding:5px 0;margin:2px 0 0;list-style:none;font-size:14px;background-color:#fff;border:1px solid #ccc;border:1px solid rgba(0,0,0,.15);border-radius:4px;-webkit-box-shadow:0 6px 12px rgba(0,0,0,.175);box-shadow:0 6px 12px rgba(0,0,0,.175);background-clip:padding-box}.dropdown-menu.pull-right{right:0;left:auto}.dropdown-menu .divider{height:1px;margin:9px 0;overflow:hidden;background-color:#e5e5e5}.dropdown-menu>li>a{display:block;padding:3px 20px;clear:both;font-weight:400;line-height:1.42857143;color:#333;white-space:nowrap}.dropdown-menu>li>a:hover,.dropdown-menu>li>a:focus{text-decoration:none;color:#262626;background-color:#f5f5f5}.dropdown-menu>.active>a,.dropdown-menu>.active>a:hover,.dropdown-menu>.active>a:focus{color:#fff;text-decoration:none;outline:0;background-color:#428bca}.dropdown-menu>.disabled>a,.dropdown-menu>.disabled>a:hover,.dropdown-menu>.disabled>a:focus{color:#999}.dropdown-menu>.disabled>a:hover,.dropdown-menu>.disabled>a:focus{text-decoration:none;background-color:transparent;background-image:none;filter:progid:DXImageTransform.Microsoft.gradient(enabled=false);cursor:not-allowed}.open>.dropdown-menu{display:block}.open>a{outline:0}.dropdown-menu-right{left:auto;right:0}.dropdown-menu-left{left:0;right:auto}.dropdown-header{display:block;padding:3px 20px;font-size:12px;line-height:1.42857143;color:#999}.dropdown-backdrop{position:fixed;left:0;right:0;bottom:0;top:0;z-index:990}.pull-right>.dropdown-menu{right:0;left:auto}.dropup .caret,.navbar-fixed-bottom .dropdown .caret{border-top:0;border-bottom:4px solid;content:""}.dropup .dropdown-menu,.navbar-fixed-bottom .dropdown .dropdown-menu{top:auto;bottom:100%;margin-bottom:1px}@media (min-width:768px){.navbar-right .dropdown-menu{left:auto;right:0}.navbar-right .dropdown-menu-left{left:0;right:auto}}.btn-group,.btn-group-vertical{position:relative;display:inline-block;vertical-align:middle}.btn-group>.btn,.btn-group-vertical>.btn{position:relative;float:left}.btn-group>.btn:hover,.btn-group-vertical>.btn:hover,.btn-group>.btn:focus,.btn-group-vertical>.btn:focus,.btn-group>.btn:active,.btn-group-vertical>.btn:active,.btn-group>.btn.active,.btn-group-vertical>.btn.active{z-index:2}.btn-group>.btn:focus,.btn-group-vertical>.btn:focus{outline:0}.btn-group .btn+.btn,.btn-group .btn+.btn-group,.btn-group .btn-group+.btn,.btn-group .btn-group+.btn-group{margin-left:-1px}.btn-toolbar{margin-left:-5px}.btn-toolbar .btn-group,.btn-toolbar .input-group{float:left}.btn-toolbar>.btn,.btn-toolbar>.btn-group,.btn-toolbar>.input-group{margin-left:5px}.btn-group>.btn:not(:first-child):not(:last-child):not(.dropdown-toggle){border-radius:0}.btn-group>.btn:first-child{margin-left:0}.btn-group>.btn:first-child:not(:last-child):not(.dropdown-toggle){border-bottom-right-radius:0;border-top-right-radius:0}.btn-group>.btn:last-child:not(:first-child),.btn-group>.dropdown-toggle:not(:first-child){border-bottom-left-radius:0;border-top-left-radius:0}.btn-group>.btn-group{float:left}.btn-group>.btn-group:not(:first-child):not(:last-child)>.btn{border-radius:0}.btn-group>.btn-group:first-child>.btn:last-child,.btn-group>.btn-group:first-child>.dropdown-toggle{border-bottom-right-radius:0;border-top-right-radius:0}.btn-group>.btn-group:last-child>.btn:first-child{border-bottom-left-radius:0;border-top-left-radius:0}.btn-group .dropdown-toggle:active,.btn-group.open .dropdown-toggle{outline:0}.btn-group>.btn+.dropdown-toggle{padding-left:8px;padding-right:8px}.btn-group>.btn-lg+.dropdown-toggle{padding-left:12px;padding-right:12px}.btn-group.open .dropdown-toggle{-webkit-box-shadow:inset 0 3px 5px rgba(0,0,0,.125);box-shadow:inset 0 3px 5px rgba(0,0,0,.125)}.btn-group.open .dropdown-toggle.btn-link{-webkit-box-shadow:none;box-shadow:none}.btn .caret{margin-left:0}.btn-lg .caret{border-width:5px 5px 0;border-bottom-width:0}.dropup .btn-lg .caret{border-width:0 5px 5px}.btn-group-vertical>.btn,.btn-group-vertical>.btn-group,.btn-group-vertical>.btn-group>.btn{display:block;float:none;width:100%;max-width:100%}.btn-group-vertical>.btn-group>.btn{float:none}.btn-group-vertical>.btn+.btn,.btn-group-vertical>.btn+.btn-group,.btn-group-vertical>.btn-group+.btn,.btn-group-vertical>.btn-group+.btn-group{margin-top:-1px;margin-left:0}.btn-group-vertical>.btn:not(:first-child):not(:last-child){border-radius:0}.btn-group-vertical>.btn:first-child:not(:last-child){border-top-right-radius:4px;border-bottom-right-radius:0;border-bottom-left-radius:0}.btn-group-vertical>.btn:last-child:not(:first-child){border-bottom-left-radius:4px;border-top-right-radius:0;border-top-left-radius:0}.btn-group-vertical>.btn-group:not(:first-child):not(:last-child)>.btn{border-radius:0}.btn-group-vertical>.btn-group:first-child:not(:last-child)>.btn:last-child,.btn-group-vertical>.btn-group:first-child:not(:last-child)>.dropdown-toggle{border-bottom-right-radius:0;border-bottom-left-radius:0}.btn-group-vertical>.btn-group:last-child:not(:first-child)>.btn:first-child{border-top-right-radius:0;border-top-left-radius:0}.btn-group-justified{display:table;width:100%;table-layout:fixed;border-collapse:separate}.btn-group-justified>.btn,.btn-group-justified>.btn-group{float:none;display:table-cell;width:1%}.btn-group-justified>.btn-group .btn{width:100%}[data-toggle=buttons]>.btn>input[type=radio],[data-toggle=buttons]>.btn>input[type=checkbox]{display:none}.input-group{position:relative;display:table;border-collapse:separate}.input-group[class*=col-]{float:none;padding-left:0;padding-right:0}.input-group .form-control{position:relative;z-index:2;float:left;width:100%;margin-bottom:0}.input-group-lg>.form-control,.input-group-lg>.input-group-addon,.input-group-lg>.input-group-btn>.btn{height:46px;padding:10px 16px;font-size:18px;line-height:1.33;border-radius:6px}select.input-group-lg>.form-control,select.input-group-lg>.input-group-addon,select.input-group-lg>.input-group-btn>.btn{height:46px;line-height:46px}textarea.input-group-lg>.form-control,textarea.input-group-lg>.input-group-addon,textarea.input-group-lg>.input-group-btn>.btn,select[multiple].input-group-lg>.form-control,select[multiple].input-group-lg>.input-group-addon,select[multiple].input-group-lg>.input-group-btn>.btn{height:auto}.input-group-sm>.form-control,.input-group-sm>.input-group-addon,.input-group-sm>.input-group-btn>.btn{height:30px;padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}select.input-group-sm>.form-control,select.input-group-sm>.input-group-addon,select.input-group-sm>.input-group-btn>.btn{height:30px;line-height:30px}textarea.input-group-sm>.form-control,textarea.input-group-sm>.input-group-addon,textarea.input-group-sm>.input-group-btn>.btn,select[multiple].input-group-sm>.form-control,select[multiple].input-group-sm>.input-group-addon,select[multiple].input-group-sm>.input-group-btn>.btn{height:auto}.input-group-addon,.input-group-btn,.input-group .form-control{display:table-cell}.input-group-addon:not(:first-child):not(:last-child),.input-group-btn:not(:first-child):not(:last-child),.input-group .form-control:not(:first-child):not(:last-child){border-radius:0}.input-group-addon,.input-group-btn{width:1%;white-space:nowrap;vertical-align:middle}.input-group-addon{padding:6px 12px;font-size:14px;font-weight:400;line-height:1;color:#555;text-align:center;background-color:#eee;border:1px solid #ccc;border-radius:4px}.input-group-addon.input-sm{padding:5px 10px;font-size:12px;border-radius:3px}.input-group-addon.input-lg{padding:10px 16px;font-size:18px;border-radius:6px}.input-group-addon input[type=radio],.input-group-addon input[type=checkbox]{margin-top:0}.input-group .form-control:first-child,.input-group-addon:first-child,.input-group-btn:first-child>.btn,.input-group-btn:first-child>.btn-group>.btn,.input-group-btn:first-child>.dropdown-toggle,.input-group-btn:last-child>.btn:not(:last-child):not(.dropdown-toggle),.input-group-btn:last-child>.btn-group:not(:last-child)>.btn{border-bottom-right-radius:0;border-top-right-radius:0}.input-group-addon:first-child{border-right:0}.input-group .form-control:last-child,.input-group-addon:last-child,.input-group-btn:last-child>.btn,.input-group-btn:last-child>.btn-group>.btn,.input-group-btn:last-child>.dropdown-toggle,.input-group-btn:first-child>.btn:not(:first-child),.input-group-btn:first-child>.btn-group:not(:first-child)>.btn{border-bottom-left-radius:0;border-top-left-radius:0}.input-group-addon:last-child{border-left:0}.input-group-btn{position:relative;font-size:0;white-space:nowrap}.input-group-btn>.btn{position:relative}.input-group-btn>.btn+.btn{margin-left:-1px}.input-group-btn>.btn:hover,.input-group-btn>.btn:focus,.input-group-btn>.btn:active{z-index:2}.input-group-btn:first-child>.btn,.input-group-btn:first-child>.btn-group{margin-right:-1px}.input-group-btn:last-child>.btn,.input-group-btn:last-child>.btn-group{margin-left:-1px}.nav{margin-bottom:0;padding-left:0;list-style:none}.nav>li{position:relative;display:block}.nav>li>a{position:relative;display:block;padding:10px 15px}.nav>li>a:hover,.nav>li>a:focus{text-decoration:none;background-color:#eee}.nav>li.disabled>a{color:#999}.nav>li.disabled>a:hover,.nav>li.disabled>a:focus{color:#999;text-decoration:none;background-color:transparent;cursor:not-allowed}.nav .open>a,.nav .open>a:hover,.nav .open>a:focus{background-color:#eee;border-color:#428bca}.nav .nav-divider{height:1px;margin:9px 0;overflow:hidden;background-color:#e5e5e5}.nav>li>a>img{max-width:none}.nav-tabs{border-bottom:1px solid #ddd}.nav-tabs>li{float:left;margin-bottom:-1px}.nav-tabs>li>a{margin-right:2px;line-height:1.42857143;border:1px solid transparent;border-radius:4px 4px 0 0}.nav-tabs>li>a:hover{border-color:#eee #eee #ddd}.nav-tabs>li.active>a,.nav-tabs>li.active>a:hover,.nav-tabs>li.active>a:focus{color:#555;background-color:#fff;border:1px solid #ddd;border-bottom-color:transparent;cursor:default}.nav-tabs.nav-justified{width:100%;border-bottom:0}.nav-tabs.nav-justified>li{float:none}.nav-tabs.nav-justified>li>a{text-align:center;margin-bottom:5px}.nav-tabs.nav-justified>.dropdown .dropdown-menu{top:auto;left:auto}@media (min-width:768px){.nav-tabs.nav-justified>li{display:table-cell;width:1%}.nav-tabs.nav-justified>li>a{margin-bottom:0}}.nav-tabs.nav-justified>li>a{margin-right:0;border-radius:4px}.nav-tabs.nav-justified>.active>a,.nav-tabs.nav-justified>.active>a:hover,.nav-tabs.nav-justified>.active>a:focus{border:1px solid #ddd}@media (min-width:768px){.nav-tabs.nav-justified>li>a{border-bottom:1px solid #ddd;border-radius:4px 4px 0 0}.nav-tabs.nav-justified>.active>a,.nav-tabs.nav-justified>.active>a:hover,.nav-tabs.nav-justified>.active>a:focus{border-bottom-color:#fff}}.nav-pills>li{float:left}.nav-pills>li>a{border-radius:4px}.nav-pills>li+li{margin-left:2px}.nav-pills>li.active>a,.nav-pills>li.active>a:hover,.nav-pills>li.active>a:focus{color:#fff;background-color:#428bca}.nav-stacked>li{float:none}.nav-stacked>li+li{margin-top:2px;margin-left:0}.nav-justified{width:100%}.nav-justified>li{float:none}.nav-justified>li>a{text-align:center;margin-bottom:5px}.nav-justified>.dropdown .dropdown-menu{top:auto;left:auto}@media (min-width:768px){.nav-justified>li{display:table-cell;width:1%}.nav-justified>li>a{margin-bottom:0}}.nav-tabs-justified{border-bottom:0}.nav-tabs-justified>li>a{margin-right:0;border-radius:4px}.nav-tabs-justified>.active>a,.nav-tabs-justified>.active>a:hover,.nav-tabs-justified>.active>a:focus{border:1px solid #ddd}@media (min-width:768px){.nav-tabs-justified>li>a{border-bottom:1px solid #ddd;border-radius:4px 4px 0 0}.nav-tabs-justified>.active>a,.nav-tabs-justified>.active>a:hover,.nav-tabs-justified>.active>a:focus{border-bottom-color:#fff}}.tab-content>.tab-pane{display:none}.tab-content>.active{display:block}.nav-tabs .dropdown-menu{margin-top:-1px;border-top-right-radius:0;border-top-left-radius:0}.navbar{position:relative;min-height:50px;margin-bottom:20px;border:1px solid transparent}@media (min-width:768px){.navbar{border-radius:4px}}@media (min-width:768px){.navbar-header{float:left}}.navbar-collapse{max-height:340px;overflow-x:visible;padding-right:15px;padding-left:15px;border-top:1px solid transparent;box-shadow:inset 0 1px 0 rgba(255,255,255,.1);-webkit-overflow-scrolling:touch}.navbar-collapse.in{overflow-y:auto}@media (min-width:768px){.navbar-collapse{width:auto;border-top:0;box-shadow:none}.navbar-collapse.collapse{display:block!important;height:auto!important;padding-bottom:0;overflow:visible!important}.navbar-collapse.in{overflow-y:visible}.navbar-fixed-top .navbar-collapse,.navbar-static-top .navbar-collapse,.navbar-fixed-bottom .navbar-collapse{padding-left:0;padding-right:0}}.container>.navbar-header,.container-fluid>.navbar-header,.container>.navbar-collapse,.container-fluid>.navbar-collapse{margin-right:-15px;margin-left:-15px}@media (min-width:768px){.container>.navbar-header,.container-fluid>.navbar-header,.container>.navbar-collapse,.container-fluid>.navbar-collapse{margin-right:0;margin-left:0}}.navbar-static-top{z-index:1000;border-width:0 0 1px}@media (min-width:768px){.navbar-static-top{border-radius:0}}.navbar-fixed-top,.navbar-fixed-bottom{position:fixed;right:0;left:0;z-index:1030}@media (min-width:768px){.navbar-fixed-top,.navbar-fixed-bottom{border-radius:0}}.navbar-fixed-top{top:0;border-width:0 0 1px}.navbar-fixed-bottom{bottom:0;margin-bottom:0;border-width:1px 0 0}.navbar-brand{float:left;padding:15px;font-size:18px;line-height:20px;height:50px}.navbar-brand:hover,.navbar-brand:focus{text-decoration:none}@media (min-width:768px){.navbar>.container .navbar-brand,.navbar>.container-fluid .navbar-brand{margin-left:-15px}}.navbar-toggle{position:relative;float:right;margin-right:15px;padding:9px 10px;margin-top:8px;margin-bottom:8px;background-color:transparent;background-image:none;border:1px solid transparent;border-radius:4px}.navbar-toggle:focus{outline:0}.navbar-toggle .icon-bar{display:block;width:22px;height:2px;border-radius:1px}.navbar-toggle .icon-bar+.icon-bar{margin-top:4px}@media (min-width:768px){.navbar-toggle{display:none}}.navbar-nav{margin:7.5px -15px}.navbar-nav>li>a{padding-top:10px;padding-bottom:10px;line-height:20px}@media (max-width:767px){.navbar-nav .open .dropdown-menu{position:static;float:none;width:auto;margin-top:0;background-color:transparent;border:0;box-shadow:none}.navbar-nav .open .dropdown-menu>li>a,.navbar-nav .open .dropdown-menu .dropdown-header{padding:5px 15px 5px 25px}.navbar-nav .open .dropdown-menu>li>a{line-height:20px}.navbar-nav .open .dropdown-menu>li>a:hover,.navbar-nav .open .dropdown-menu>li>a:focus{background-image:none}}@media (min-width:768px){.navbar-nav{float:left;margin:0}.navbar-nav>li{float:left}.navbar-nav>li>a{padding-top:15px;padding-bottom:15px}.navbar-nav.navbar-right:last-child{margin-right:-15px}}@media (min-width:768px){.navbar-left{float:left!important}.navbar-right{float:right!important}}.navbar-form{margin-left:-15px;margin-right:-15px;padding:10px 15px;border-top:1px solid transparent;border-bottom:1px solid transparent;-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,.1),0 1px 0 rgba(255,255,255,.1);box-shadow:inset 0 1px 0 rgba(255,255,255,.1),0 1px 0 rgba(255,255,255,.1);margin-top:8px;margin-bottom:8px}@media (min-width:768px){.navbar-form .form-group{display:inline-block;margin-bottom:0;vertical-align:middle}.navbar-form .form-control{display:inline-block;width:auto;vertical-align:middle}.navbar-form .input-group>.form-control{width:100%}.navbar-form .control-label{margin-bottom:0;vertical-align:middle}.navbar-form .radio,.navbar-form .checkbox{display:inline-block;margin-top:0;margin-bottom:0;padding-left:0;vertical-align:middle}.navbar-form .radio input[type=radio],.navbar-form .checkbox input[type=checkbox]{float:none;margin-left:0}.navbar-form .has-feedback .form-control-feedback{top:0}}@media (max-width:767px){.navbar-form .form-group{margin-bottom:5px}}@media (min-width:768px){.navbar-form{width:auto;border:0;margin-left:0;margin-right:0;padding-top:0;padding-bottom:0;-webkit-box-shadow:none;box-shadow:none}.navbar-form.navbar-right:last-child{margin-right:-15px}}.navbar-nav>li>.dropdown-menu{margin-top:0;border-top-right-radius:0;border-top-left-radius:0}.navbar-fixed-bottom .navbar-nav>li>.dropdown-menu{border-bottom-right-radius:0;border-bottom-left-radius:0}.navbar-btn{margin-top:8px;margin-bottom:8px}.navbar-btn.btn-sm{margin-top:10px;margin-bottom:10px}.navbar-btn.btn-xs{margin-top:14px;margin-bottom:14px}.navbar-text{margin-top:15px;margin-bottom:15px}@media (min-width:768px){.navbar-text{float:left;margin-left:15px;margin-right:15px}.navbar-text.navbar-right:last-child{margin-right:0}}.navbar-default{background-color:#f8f8f8;border-color:#e7e7e7}.navbar-default .navbar-brand{color:#777}.navbar-default .navbar-brand:hover,.navbar-default .navbar-brand:focus{color:#5e5e5e;background-color:transparent}.navbar-default .navbar-text{color:#777}.navbar-default .navbar-nav>li>a{color:#777}.navbar-default .navbar-nav>li>a:hover,.navbar-default .navbar-nav>li>a:focus{color:#333;background-color:transparent}.navbar-default .navbar-nav>.active>a,.navbar-default .navbar-nav>.active>a:hover,.navbar-default .navbar-nav>.active>a:focus{color:#555;background-color:#e7e7e7}.navbar-default .navbar-nav>.disabled>a,.navbar-default .navbar-nav>.disabled>a:hover,.navbar-default .navbar-nav>.disabled>a:focus{color:#ccc;background-color:transparent}.navbar-default .navbar-toggle{border-color:#ddd}.navbar-default .navbar-toggle:hover,.navbar-default .navbar-toggle:focus{background-color:#ddd}.navbar-default .navbar-toggle .icon-bar{background-color:#888}.navbar-default .navbar-collapse,.navbar-default .navbar-form{border-color:#e7e7e7}.navbar-default .navbar-nav>.open>a,.navbar-default .navbar-nav>.open>a:hover,.navbar-default .navbar-nav>.open>a:focus{background-color:#e7e7e7;color:#555}@media (max-width:767px){.navbar-default .navbar-nav .open .dropdown-menu>li>a{color:#777}.navbar-default .navbar-nav .open .dropdown-menu>li>a:hover,.navbar-default .navbar-nav .open .dropdown-menu>li>a:focus{color:#333;background-color:transparent}.navbar-default .navbar-nav .open .dropdown-menu>.active>a,.navbar-default .navbar-nav .open .dropdown-menu>.active>a:hover,.navbar-default .navbar-nav .open .dropdown-menu>.active>a:focus{color:#555;background-color:#e7e7e7}.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a,.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a:hover,.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a:focus{color:#ccc;background-color:transparent}}.navbar-default .navbar-link{color:#777}.navbar-default .navbar-link:hover{color:#333}.navbar-inverse{background-color:#222;border-color:#080808}.navbar-inverse .navbar-brand{color:#999}.navbar-inverse .navbar-brand:hover,.navbar-inverse .navbar-brand:focus{color:#fff;background-color:transparent}.navbar-inverse .navbar-text{color:#999}.navbar-inverse .navbar-nav>li>a{color:#999}.navbar-inverse .navbar-nav>li>a:hover,.navbar-inverse .navbar-nav>li>a:focus{color:#fff;background-color:transparent}.navbar-inverse .navbar-nav>.active>a,.navbar-inverse .navbar-nav>.active>a:hover,.navbar-inverse .navbar-nav>.active>a:focus{color:#fff;background-color:#080808}.navbar-inverse .navbar-nav>.disabled>a,.navbar-inverse .navbar-nav>.disabled>a:hover,.navbar-inverse .navbar-nav>.disabled>a:focus{color:#444;background-color:transparent}.navbar-inverse .navbar-toggle{border-color:#333}.navbar-inverse .navbar-toggle:hover,.navbar-inverse .navbar-toggle:focus{background-color:#333}.navbar-inverse .navbar-toggle .icon-bar{background-color:#fff}.navbar-inverse .navbar-collapse,.navbar-inverse .navbar-form{border-color:#101010}.navbar-inverse .navbar-nav>.open>a,.navbar-inverse .navbar-nav>.open>a:hover,.navbar-inverse .navbar-nav>.open>a:focus{background-color:#080808;color:#fff}@media (max-width:767px){.navbar-inverse .navbar-nav .open .dropdown-menu>.dropdown-header{border-color:#080808}.navbar-inverse .navbar-nav .open .dropdown-menu .divider{background-color:#080808}.navbar-inverse .navbar-nav .open .dropdown-menu>li>a{color:#999}.navbar-inverse .navbar-nav .open .dropdown-menu>li>a:hover,.navbar-inverse .navbar-nav .open .dropdown-menu>li>a:focus{color:#fff;background-color:transparent}.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a,.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a:hover,.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a:focus{color:#fff;background-color:#080808}.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a,.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a:hover,.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a:focus{color:#444;background-color:transparent}}.navbar-inverse .navbar-link{color:#999}.navbar-inverse .navbar-link:hover{color:#fff}.breadcrumb{padding:8px 15px;margin-bottom:20px;list-style:none;background-color:#f5f5f5;border-radius:4px}.breadcrumb>li{display:inline-block}.breadcrumb>li+li:before{content:"/\00a0";padding:0 5px;color:#ccc}.breadcrumb>.active{color:#999}.pagination{display:inline-block;padding-left:0;margin:20px 0;border-radius:4px}.pagination>li{display:inline}.pagination>li>a,.pagination>li>span{position:relative;float:left;padding:6px 12px;line-height:1.42857143;text-decoration:none;color:#428bca;background-color:#fff;border:1px solid #ddd;margin-left:-1px}.pagination>li:first-child>a,.pagination>li:first-child>span{margin-left:0;border-bottom-left-radius:4px;border-top-left-radius:4px}.pagination>li:last-child>a,.pagination>li:last-child>span{border-bottom-right-radius:4px;border-top-right-radius:4px}.pagination>li>a:hover,.pagination>li>span:hover,.pagination>li>a:focus,.pagination>li>span:focus{color:#2a6496;background-color:#eee;border-color:#ddd}.pagination>.active>a,.pagination>.active>span,.pagination>.active>a:hover,.pagination>.active>span:hover,.pagination>.active>a:focus,.pagination>.active>span:focus{z-index:2;color:#fff;background-color:#428bca;border-color:#428bca;cursor:default}.pagination>.disabled>span,.pagination>.disabled>span:hover,.pagination>.disabled>span:focus,.pagination>.disabled>a,.pagination>.disabled>a:hover,.pagination>.disabled>a:focus{color:#999;background-color:#fff;border-color:#ddd;cursor:not-allowed}.pagination-lg>li>a,.pagination-lg>li>span{padding:10px 16px;font-size:18px}.pagination-lg>li:first-child>a,.pagination-lg>li:first-child>span{border-bottom-left-radius:6px;border-top-left-radius:6px}.pagination-lg>li:last-child>a,.pagination-lg>li:last-child>span{border-bottom-right-radius:6px;border-top-right-radius:6px}.pagination-sm>li>a,.pagination-sm>li>span{padding:5px 10px;font-size:12px}.pagination-sm>li:first-child>a,.pagination-sm>li:first-child>span{border-bottom-left-radius:3px;border-top-left-radius:3px}.pagination-sm>li:last-child>a,.pagination-sm>li:last-child>span{border-bottom-right-radius:3px;border-top-right-radius:3px}.pager{padding-left:0;margin:20px 0;list-style:none;text-align:center}.pager li{display:inline}.pager li>a,.pager li>span{display:inline-block;padding:5px 14px;background-color:#fff;border:1px solid #ddd;border-radius:15px}.pager li>a:hover,.pager li>a:focus{text-decoration:none;background-color:#eee}.pager .next>a,.pager .next>span{float:right}.pager .previous>a,.pager .previous>span{float:left}.pager .disabled>a,.pager .disabled>a:hover,.pager .disabled>a:focus,.pager .disabled>span{color:#999;background-color:#fff;cursor:not-allowed}.label{display:inline;padding:.2em .6em .3em;font-size:75%;font-weight:700;line-height:1;color:#fff;text-align:center;white-space:nowrap;vertical-align:baseline;border-radius:.25em}.label[href]:hover,.label[href]:focus{color:#fff;text-decoration:none;cursor:pointer}.label:empty{display:none}.btn .label{position:relative;top:-1px}.label-default{background-color:#999}.label-default[href]:hover,.label-default[href]:focus{background-color:gray}.label-primary{background-color:#428bca}.label-primary[href]:hover,.label-primary[href]:focus{background-color:#3071a9}.label-success{background-color:#5cb85c}.label-success[href]:hover,.label-success[href]:focus{background-color:#449d44}.label-info{background-color:#5bc0de}.label-info[href]:hover,.label-info[href]:focus{background-color:#31b0d5}.label-warning{background-color:#f0ad4e}.label-warning[href]:hover,.label-warning[href]:focus{background-color:#ec971f}.label-danger{background-color:#d9534f}.label-danger[href]:hover,.label-danger[href]:focus{background-color:#c9302c}.badge{display:inline-block;min-width:10px;padding:3px 7px;font-size:12px;font-weight:700;color:#fff;line-height:1;vertical-align:baseline;white-space:nowrap;text-align:center;background-color:#999;border-radius:10px}.badge:empty{display:none}.btn .badge{position:relative;top:-1px}.btn-xs .badge{top:0;padding:1px 5px}a.badge:hover,a.badge:focus{color:#fff;text-decoration:none;cursor:pointer}a.list-group-item.active>.badge,.nav-pills>.active>a>.badge{color:#428bca;background-color:#fff}.nav-pills>li>a>.badge{margin-left:3px}.jumbotron{padding:30px;margin-bottom:30px;color:inherit;background-color:#eee}.jumbotron h1,.jumbotron .h1{color:inherit}.jumbotron p{margin-bottom:15px;font-size:21px;font-weight:200}.container .jumbotron{border-radius:6px}.jumbotron .container{max-width:100%}@media screen and (min-width:768px){.jumbotron{padding-top:48px;padding-bottom:48px}.container .jumbotron{padding-left:60px;padding-right:60px}.jumbotron h1,.jumbotron .h1{font-size:63px}}.thumbnail{display:block;padding:4px;margin-bottom:20px;line-height:1.42857143;background-color:#fff;border:1px solid #ddd;border-radius:4px;-webkit-transition:all .2s ease-in-out;transition:all .2s ease-in-out}.thumbnail>img,.thumbnail a>img{margin-left:auto;margin-right:auto}a.thumbnail:hover,a.thumbnail:focus,a.thumbnail.active{border-color:#428bca}.thumbnail .caption{padding:9px;color:#333}.alert{padding:15px;margin-bottom:20px;border:1px solid transparent;border-radius:4px}.alert h4{margin-top:0;color:inherit}.alert .alert-link{font-weight:700}.alert>p,.alert>ul{margin-bottom:0}.alert>p+p{margin-top:5px}.alert-dismissable{padding-right:35px}.alert-dismissable .close{position:relative;top:-2px;right:-21px;color:inherit}.alert-success{background-color:#dff0d8;border-color:#d6e9c6;color:#3c763d}.alert-success hr{border-top-color:#c9e2b3}.alert-success .alert-link{color:#2b542c}.alert-info{background-color:#d9edf7;border-color:#bce8f1;color:#31708f}.alert-info hr{border-top-color:#a6e1ec}.alert-info .alert-link{color:#245269}.alert-warning{background-color:#fcf8e3;border-color:#faebcc;color:#8a6d3b}.alert-warning hr{border-top-color:#f7e1b5}.alert-warning .alert-link{color:#66512c}.alert-danger{background-color:#f2dede;border-color:#ebccd1;color:#a94442}.alert-danger hr{border-top-color:#e4b9c0}.alert-danger .alert-link{color:#843534}@-webkit-keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}@keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}.progress{overflow:hidden;height:20px;margin-bottom:20px;background-color:#f5f5f5;border-radius:4px;-webkit-box-shadow:inset 0 1px 2px rgba(0,0,0,.1);box-shadow:inset 0 1px 2px rgba(0,0,0,.1)}.progress-bar{float:left;width:0;height:100%;font-size:12px;line-height:20px;color:#fff;text-align:center;background-color:#428bca;-webkit-box-shadow:inset 0 -1px 0 rgba(0,0,0,.15);box-shadow:inset 0 -1px 0 rgba(0,0,0,.15);-webkit-transition:width .6s ease;transition:width .6s ease}.progress-striped .progress-bar{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-size:40px 40px}.progress.active .progress-bar{-webkit-animation:progress-bar-stripes 2s linear infinite;animation:progress-bar-stripes 2s linear infinite}.progress-bar-success{background-color:#5cb85c}.progress-striped .progress-bar-success{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent)}.progress-bar-info{background-color:#5bc0de}.progress-striped .progress-bar-info{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent)}.progress-bar-warning{background-color:#f0ad4e}.progress-striped .progress-bar-warning{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent)}.progress-bar-danger{background-color:#d9534f}.progress-striped .progress-bar-danger{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent)}.media,.media-body{overflow:hidden;zoom:1}.media,.media .media{margin-top:15px}.media:first-child{margin-top:0}.media-object{display:block}.media-heading{margin:0 0 5px}.media>.pull-left{margin-right:10px}.media>.pull-right{margin-left:10px}.media-list{padding-left:0;list-style:none}.list-group{margin-bottom:20px;padding-left:0}.list-group-item{position:relative;display:block;padding:10px 15px;margin-bottom:-1px;background-color:#fff;border:1px solid #ddd}.list-group-item:first-child{border-top-right-radius:4px;border-top-left-radius:4px}.list-group-item:last-child{margin-bottom:0;border-bottom-right-radius:4px;border-bottom-left-radius:4px}.list-group-item>.badge{float:right}.list-group-item>.badge+.badge{margin-right:5px}a.list-group-item{color:#555}a.list-group-item .list-group-item-heading{color:#333}a.list-group-item:hover,a.list-group-item:focus{text-decoration:none;background-color:#f5f5f5}a.list-group-item.active,a.list-group-item.active:hover,a.list-group-item.active:focus{z-index:2;color:#fff;background-color:#428bca;border-color:#428bca}a.list-group-item.active .list-group-item-heading,a.list-group-item.active:hover .list-group-item-heading,a.list-group-item.active:focus .list-group-item-heading{color:inherit}a.list-group-item.active .list-group-item-text,a.list-group-item.active:hover .list-group-item-text,a.list-group-item.active:focus .list-group-item-text{color:#e1edf7}.list-group-item-success{color:#3c763d;background-color:#dff0d8}a.list-group-item-success{color:#3c763d}a.list-group-item-success .list-group-item-heading{color:inherit}a.list-group-item-success:hover,a.list-group-item-success:focus{color:#3c763d;background-color:#d0e9c6}a.list-group-item-success.active,a.list-group-item-success.active:hover,a.list-group-item-success.active:focus{color:#fff;background-color:#3c763d;border-color:#3c763d}.list-group-item-info{color:#31708f;background-color:#d9edf7}a.list-group-item-info{color:#31708f}a.list-group-item-info .list-group-item-heading{color:inherit}a.list-group-item-info:hover,a.list-group-item-info:focus{color:#31708f;background-color:#c4e3f3}a.list-group-item-info.active,a.list-group-item-info.active:hover,a.list-group-item-info.active:focus{color:#fff;background-color:#31708f;border-color:#31708f}.list-group-item-warning{color:#8a6d3b;background-color:#fcf8e3}a.list-group-item-warning{color:#8a6d3b}a.list-group-item-warning .list-group-item-heading{color:inherit}a.list-group-item-warning:hover,a.list-group-item-warning:focus{color:#8a6d3b;background-color:#faf2cc}a.list-group-item-warning.active,a.list-group-item-warning.active:hover,a.list-group-item-warning.active:focus{color:#fff;background-color:#8a6d3b;border-color:#8a6d3b}.list-group-item-danger{color:#a94442;background-color:#f2dede}a.list-group-item-danger{color:#a94442}a.list-group-item-danger .list-group-item-heading{color:inherit}a.list-group-item-danger:hover,a.list-group-item-danger:focus{color:#a94442;background-color:#ebcccc}a.list-group-item-danger.active,a.list-group-item-danger.active:hover,a.list-group-item-danger.active:focus{color:#fff;background-color:#a94442;border-color:#a94442}.list-group-item-heading{margin-top:0;margin-bottom:5px}.list-group-item-text{margin-bottom:0;line-height:1.3}.panel{margin-bottom:20px;background-color:#fff;border:1px solid transparent;border-radius:4px;-webkit-box-shadow:0 1px 1px rgba(0,0,0,.05);box-shadow:0 1px 1px rgba(0,0,0,.05)}.panel-body{padding:15px}.panel-heading{padding:10px 15px;border-bottom:1px solid transparent;border-top-right-radius:3px;border-top-left-radius:3px}.panel-heading>.dropdown .dropdown-toggle{color:inherit}.panel-title{margin-top:0;margin-bottom:0;font-size:16px;color:inherit}.panel-title>a{color:inherit}.panel-footer{padding:10px 15px;background-color:#f5f5f5;border-top:1px solid #ddd;border-bottom-right-radius:3px;border-bottom-left-radius:3px}.panel>.list-group{margin-bottom:0}.panel>.list-group .list-group-item{border-width:1px 0;border-radius:0}.panel>.list-group:first-child .list-group-item:first-child{border-top:0;border-top-right-radius:3px;border-top-left-radius:3px}.panel>.list-group:last-child .list-group-item:last-child{border-bottom:0;border-bottom-right-radius:3px;border-bottom-left-radius:3px}.panel-heading+.list-group .list-group-item:first-child{border-top-width:0}.panel>.table,.panel>.table-responsive>.table{margin-bottom:0}.panel>.table:first-child,.panel>.table-responsive:first-child>.table:first-child{border-top-right-radius:3px;border-top-left-radius:3px}.panel>.table:first-child>thead:first-child>tr:first-child td:first-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child td:first-child,.panel>.table:first-child>tbody:first-child>tr:first-child td:first-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child td:first-child,.panel>.table:first-child>thead:first-child>tr:first-child th:first-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child th:first-child,.panel>.table:first-child>tbody:first-child>tr:first-child th:first-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child th:first-child{border-top-left-radius:3px}.panel>.table:first-child>thead:first-child>tr:first-child td:last-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child td:last-child,.panel>.table:first-child>tbody:first-child>tr:first-child td:last-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child td:last-child,.panel>.table:first-child>thead:first-child>tr:first-child th:last-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child th:last-child,.panel>.table:first-child>tbody:first-child>tr:first-child th:last-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child th:last-child{border-top-right-radius:3px}.panel>.table:last-child,.panel>.table-responsive:last-child>.table:last-child{border-bottom-right-radius:3px;border-bottom-left-radius:3px}.panel>.table:last-child>tbody:last-child>tr:last-child td:first-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child td:first-child,.panel>.table:last-child>tfoot:last-child>tr:last-child td:first-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child td:first-child,.panel>.table:last-child>tbody:last-child>tr:last-child th:first-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child th:first-child,.panel>.table:last-child>tfoot:last-child>tr:last-child th:first-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child th:first-child{border-bottom-left-radius:3px}.panel>.table:last-child>tbody:last-child>tr:last-child td:last-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child td:last-child,.panel>.table:last-child>tfoot:last-child>tr:last-child td:last-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child td:last-child,.panel>.table:last-child>tbody:last-child>tr:last-child th:last-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child th:last-child,.panel>.table:last-child>tfoot:last-child>tr:last-child th:last-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child th:last-child{border-bottom-right-radius:3px}.panel>.panel-body+.table,.panel>.panel-body+.table-responsive{border-top:1px solid #ddd}.panel>.table>tbody:first-child>tr:first-child th,.panel>.table>tbody:first-child>tr:first-child td{border-top:0}.panel>.table-bordered,.panel>.table-responsive>.table-bordered{border:0}.panel>.table-bordered>thead>tr>th:first-child,.panel>.table-responsive>.table-bordered>thead>tr>th:first-child,.panel>.table-bordered>tbody>tr>th:first-child,.panel>.table-responsive>.table-bordered>tbody>tr>th:first-child,.panel>.table-bordered>tfoot>tr>th:first-child,.panel>.table-responsive>.table-bordered>tfoot>tr>th:first-child,.panel>.table-bordered>thead>tr>td:first-child,.panel>.table-responsive>.table-bordered>thead>tr>td:first-child,.panel>.table-bordered>tbody>tr>td:first-child,.panel>.table-responsive>.table-bordered>tbody>tr>td:first-child,.panel>.table-bordered>tfoot>tr>td:first-child,.panel>.table-responsive>.table-bordered>tfoot>tr>td:first-child{border-left:0}.panel>.table-bordered>thead>tr>th:last-child,.panel>.table-responsive>.table-bordered>thead>tr>th:last-child,.panel>.table-bordered>tbody>tr>th:last-child,.panel>.table-responsive>.table-bordered>tbody>tr>th:last-child,.panel>.table-bordered>tfoot>tr>th:last-child,.panel>.table-responsive>.table-bordered>tfoot>tr>th:last-child,.panel>.table-bordered>thead>tr>td:last-child,.panel>.table-responsive>.table-bordered>thead>tr>td:last-child,.panel>.table-bordered>tbody>tr>td:last-child,.panel>.table-responsive>.table-bordered>tbody>tr>td:last-child,.panel>.table-bordered>tfoot>tr>td:last-child,.panel>.table-responsive>.table-bordered>tfoot>tr>td:last-child{border-right:0}.panel>.table-bordered>thead>tr:first-child>td,.panel>.table-responsive>.table-bordered>thead>tr:first-child>td,.panel>.table-bordered>tbody>tr:first-child>td,.panel>.table-responsive>.table-bordered>tbody>tr:first-child>td,.panel>.table-bordered>thead>tr:first-child>th,.panel>.table-responsive>.table-bordered>thead>tr:first-child>th,.panel>.table-bordered>tbody>tr:first-child>th,.panel>.table-responsive>.table-bordered>tbody>tr:first-child>th{border-bottom:0}.panel>.table-bordered>tbody>tr:last-child>td,.panel>.table-responsive>.table-bordered>tbody>tr:last-child>td,.panel>.table-bordered>tfoot>tr:last-child>td,.panel>.table-responsive>.table-bordered>tfoot>tr:last-child>td,.panel>.table-bordered>tbody>tr:last-child>th,.panel>.table-responsive>.table-bordered>tbody>tr:last-child>th,.panel>.table-bordered>tfoot>tr:last-child>th,.panel>.table-responsive>.table-bordered>tfoot>tr:last-child>th{border-bottom:0}.panel>.table-responsive{border:0;margin-bottom:0}.panel-group{margin-bottom:20px}.panel-group .panel{margin-bottom:0;border-radius:4px;overflow:hidden}.panel-group .panel+.panel{margin-top:5px}.panel-group .panel-heading{border-bottom:0}.panel-group .panel-heading+.panel-collapse .panel-body{border-top:1px solid #ddd}.panel-group .panel-footer{border-top:0}.panel-group .panel-footer+.panel-collapse .panel-body{border-bottom:1px solid #ddd}.panel-default{border-color:#ddd}.panel-default>.panel-heading{color:#333;background-color:#f5f5f5;border-color:#ddd}.panel-default>.panel-heading+.panel-collapse .panel-body{border-top-color:#ddd}.panel-default>.panel-footer+.panel-collapse .panel-body{border-bottom-color:#ddd}.panel-primary{border-color:#428bca}.panel-primary>.panel-heading{color:#fff;background-color:#428bca;border-color:#428bca}.panel-primary>.panel-heading+.panel-collapse .panel-body{border-top-color:#428bca}.panel-primary>.panel-footer+.panel-collapse .panel-body{border-bottom-color:#428bca}.panel-success{border-color:#d6e9c6}.panel-success>.panel-heading{color:#3c763d;background-color:#dff0d8;border-color:#d6e9c6}.panel-success>.panel-heading+.panel-collapse .panel-body{border-top-color:#d6e9c6}.panel-success>.panel-footer+.panel-collapse .panel-body{border-bottom-color:#d6e9c6}.panel-info{border-color:#bce8f1}.panel-info>.panel-heading{color:#31708f;background-color:#d9edf7;border-color:#bce8f1}.panel-info>.panel-heading+.panel-collapse .panel-body{border-top-color:#bce8f1}.panel-info>.panel-footer+.panel-collapse .panel-body{border-bottom-color:#bce8f1}.panel-warning{border-color:#faebcc}.panel-warning>.panel-heading{color:#8a6d3b;background-color:#fcf8e3;border-color:#faebcc}.panel-warning>.panel-heading+.panel-collapse .panel-body{border-top-color:#faebcc}.panel-warning>.panel-footer+.panel-collapse .panel-body{border-bottom-color:#faebcc}.panel-danger{border-color:#ebccd1}.panel-danger>.panel-heading{color:#a94442;background-color:#f2dede;border-color:#ebccd1}.panel-danger>.panel-heading+.panel-collapse .panel-body{border-top-color:#ebccd1}.panel-danger>.panel-footer+.panel-collapse .panel-body{border-bottom-color:#ebccd1}.well{min-height:20px;padding:19px;margin-bottom:20px;background-color:#f5f5f5;border:1px solid #e3e3e3;border-radius:4px;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.05);box-shadow:inset 0 1px 1px rgba(0,0,0,.05)}.well blockquote{border-color:#ddd;border-color:rgba(0,0,0,.15)}.well-lg{padding:24px;border-radius:6px}.well-sm{padding:9px;border-radius:3px}.close{float:right;font-size:21px;font-weight:700;line-height:1;color:#000;text-shadow:0 1px 0 #fff;opacity:.2;filter:alpha(opacity=20)}.close:hover,.close:focus{color:#000;text-decoration:none;cursor:pointer;opacity:.5;filter:alpha(opacity=50)}button.close{padding:0;cursor:pointer;background:0 0;border:0;-webkit-appearance:none}.modal-open{overflow:hidden}.modal{display:none;overflow:auto;overflow-y:scroll;position:fixed;top:0;right:0;bottom:0;left:0;z-index:1050;-webkit-overflow-scrolling:touch;outline:0}.modal.fade .modal-dialog{-webkit-transform:translate(0,-25%);-ms-transform:translate(0,-25%);transform:translate(0,-25%);-webkit-transition:-webkit-transform .3s ease-out;-moz-transition:-moz-transform .3s ease-out;-o-transition:-o-transform .3s ease-out;transition:transform .3s ease-out}.modal.in .modal-dialog{-webkit-transform:translate(0,0);-ms-transform:translate(0,0);transform:translate(0,0)}.modal-dialog{position:relative;width:auto;margin:10px}.modal-content{position:relative;background-color:#fff;border:1px solid #999;border:1px solid rgba(0,0,0,.2);border-radius:6px;-webkit-box-shadow:0 3px 9px rgba(0,0,0,.5);box-shadow:0 3px 9px rgba(0,0,0,.5);background-clip:padding-box;outline:0}.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1040;background-color:#000}.modal-backdrop.fade{opacity:0;filter:alpha(opacity=0)}.modal-backdrop.in{opacity:.5;filter:alpha(opacity=50)}.modal-header{padding:15px;border-bottom:1px solid #e5e5e5;min-height:16.42857143px}.modal-header .close{margin-top:-2px}.modal-title{margin:0;line-height:1.42857143}.modal-body{position:relative;padding:20px}.modal-footer{margin-top:15px;padding:19px 20px 20px;text-align:right;border-top:1px solid #e5e5e5}.modal-footer .btn+.btn{margin-left:5px;margin-bottom:0}.modal-footer .btn-group .btn+.btn{margin-left:-1px}.modal-footer .btn-block+.btn-block{margin-left:0}@media (min-width:768px){.modal-dialog{width:600px;margin:30px auto}.modal-content{-webkit-box-shadow:0 5px 15px rgba(0,0,0,.5);box-shadow:0 5px 15px rgba(0,0,0,.5)}.modal-sm{width:300px}}@media (min-width:992px){.modal-lg{width:900px}}.tooltip{position:absolute;z-index:1030;display:block;visibility:visible;font-size:12px;line-height:1.4;opacity:0;filter:alpha(opacity=0)}.tooltip.in{opacity:.9;filter:alpha(opacity=90)}.tooltip.top{margin-top:-3px;padding:5px 0}.tooltip.right{margin-left:3px;padding:0 5px}.tooltip.bottom{margin-top:3px;padding:5px 0}.tooltip.left{margin-left:-3px;padding:0 5px}.tooltip-inner{max-width:200px;padding:3px 8px;color:#fff;text-align:center;text-decoration:none;background-color:#000;border-radius:4px}.tooltip-arrow{position:absolute;width:0;height:0;border-color:transparent;border-style:solid}.tooltip.top .tooltip-arrow{bottom:0;left:50%;margin-left:-5px;border-width:5px 5px 0;border-top-color:#000}.tooltip.top-left .tooltip-arrow{bottom:0;left:5px;border-width:5px 5px 0;border-top-color:#000}.tooltip.top-right .tooltip-arrow{bottom:0;right:5px;border-width:5px 5px 0;border-top-color:#000}.tooltip.right .tooltip-arrow{top:50%;left:0;margin-top:-5px;border-width:5px 5px 5px 0;border-right-color:#000}.tooltip.left .tooltip-arrow{top:50%;right:0;margin-top:-5px;border-width:5px 0 5px 5px;border-left-color:#000}.tooltip.bottom .tooltip-arrow{top:0;left:50%;margin-left:-5px;border-width:0 5px 5px;border-bottom-color:#000}.tooltip.bottom-left .tooltip-arrow{top:0;left:5px;border-width:0 5px 5px;border-bottom-color:#000}.tooltip.bottom-right .tooltip-arrow{top:0;right:5px;border-width:0 5px 5px;border-bottom-color:#000}.popover{position:absolute;top:0;left:0;z-index:1010;display:none;max-width:276px;padding:1px;text-align:left;background-color:#fff;background-clip:padding-box;border:1px solid #ccc;border:1px solid rgba(0,0,0,.2);border-radius:6px;-webkit-box-shadow:0 5px 10px rgba(0,0,0,.2);box-shadow:0 5px 10px rgba(0,0,0,.2);white-space:normal}.popover.top{margin-top:-10px}.popover.right{margin-left:10px}.popover.bottom{margin-top:10px}.popover.left{margin-left:-10px}.popover-title{margin:0;padding:8px 14px;font-size:14px;font-weight:400;line-height:18px;background-color:#f7f7f7;border-bottom:1px solid #ebebeb;border-radius:5px 5px 0 0}.popover-content{padding:9px 14px}.popover>.arrow,.popover>.arrow:after{position:absolute;display:block;width:0;height:0;border-color:transparent;border-style:solid}.popover>.arrow{border-width:11px}.popover>.arrow:after{border-width:10px;content:""}.popover.top>.arrow{left:50%;margin-left:-11px;border-bottom-width:0;border-top-color:#999;border-top-color:rgba(0,0,0,.25);bottom:-11px}.popover.top>.arrow:after{content:" ";bottom:1px;margin-left:-10px;border-bottom-width:0;border-top-color:#fff}.popover.right>.arrow{top:50%;left:-11px;margin-top:-11px;border-left-width:0;border-right-color:#999;border-right-color:rgba(0,0,0,.25)}.popover.right>.arrow:after{content:" ";left:1px;bottom:-10px;border-left-width:0;border-right-color:#fff}.popover.bottom>.arrow{left:50%;margin-left:-11px;border-top-width:0;border-bottom-color:#999;border-bottom-color:rgba(0,0,0,.25);top:-11px}.popover.bottom>.arrow:after{content:" ";top:1px;margin-left:-10px;border-top-width:0;border-bottom-color:#fff}.popover.left>.arrow{top:50%;right:-11px;margin-top:-11px;border-right-width:0;border-left-color:#999;border-left-color:rgba(0,0,0,.25)}.popover.left>.arrow:after{content:" ";right:1px;border-right-width:0;border-left-color:#fff;bottom:-10px}.carousel{position:relative}.carousel-inner{position:relative;overflow:hidden;width:100%}.carousel-inner>.item{display:none;position:relative;-webkit-transition:.6s ease-in-out left;transition:.6s ease-in-out left}.carousel-inner>.item>img,.carousel-inner>.item>a>img{line-height:1}.carousel-inner>.active,.carousel-inner>.next,.carousel-inner>.prev{display:block}.carousel-inner>.active{left:0}.carousel-inner>.next,.carousel-inner>.prev{position:absolute;top:0;width:100%}.carousel-inner>.next{left:100%}.carousel-inner>.prev{left:-100%}.carousel-inner>.next.left,.carousel-inner>.prev.right{left:0}.carousel-inner>.active.left{left:-100%}.carousel-inner>.active.right{left:100%}.carousel-control{position:absolute;top:0;left:0;bottom:0;width:15%;opacity:.5;filter:alpha(opacity=50);font-size:20px;color:#fff;text-align:center;text-shadow:0 1px 2px rgba(0,0,0,.6)}.carousel-control.left{background-image:-webkit-linear-gradient(left,color-stop(rgba(0,0,0,.5) 0),color-stop(rgba(0,0,0,.0001) 100%));background-image:linear-gradient(to right,rgba(0,0,0,.5) 0,rgba(0,0,0,.0001) 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#80000000', endColorstr='#00000000', GradientType=1)}.carousel-control.right{left:auto;right:0;background-image:-webkit-linear-gradient(left,color-stop(rgba(0,0,0,.0001) 0),color-stop(rgba(0,0,0,.5) 100%));background-image:linear-gradient(to right,rgba(0,0,0,.0001) 0,rgba(0,0,0,.5) 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#00000000', endColorstr='#80000000', GradientType=1)}.carousel-control:hover,.carousel-control:focus{outline:0;color:#fff;text-decoration:none;opacity:.9;filter:alpha(opacity=90)}.carousel-control .icon-prev,.carousel-control .icon-next,.carousel-control .glyphicon-chevron-left,.carousel-control .glyphicon-chevron-right{position:absolute;top:50%;z-index:5;display:inline-block}.carousel-control .icon-prev,.carousel-control .glyphicon-chevron-left{left:50%}.carousel-control .icon-next,.carousel-control .glyphicon-chevron-right{right:50%}.carousel-control .icon-prev,.carousel-control .icon-next{width:20px;height:20px;margin-top:-10px;margin-left:-10px;font-family:serif}.carousel-control .icon-prev:before{content:'\2039'}.carousel-control .icon-next:before{content:'\203a'}.carousel-indicators{position:absolute;bottom:10px;left:50%;z-index:15;width:60%;margin-left:-30%;padding-left:0;list-style:none;text-align:center}.carousel-indicators li{display:inline-block;width:10px;height:10px;margin:1px;text-indent:-999px;border:1px solid #fff;border-radius:10px;cursor:pointer;background-color:#000 \9;background-color:rgba(0,0,0,0)}.carousel-indicators .active{margin:0;width:12px;height:12px;background-color:#fff}.carousel-caption{position:absolute;left:15%;right:15%;bottom:20px;z-index:10;padding-top:20px;padding-bottom:20px;color:#fff;text-align:center;text-shadow:0 1px 2px rgba(0,0,0,.6)}.carousel-caption .btn{text-shadow:none}@media screen and (min-width:768px){.carousel-control .glyphicon-chevron-left,.carousel-control .glyphicon-chevron-right,.carousel-control .icon-prev,.carousel-control .icon-next{width:30px;height:30px;margin-top:-15px;margin-left:-15px;font-size:30px}.carousel-caption{left:20%;right:20%;padding-bottom:30px}.carousel-indicators{bottom:20px}}.clearfix:before,.clearfix:after,.container:before,.container:after,.container-fluid:before,.container-fluid:after,.row:before,.row:after,.form-horizontal .form-group:before,.form-horizontal .form-group:after,.btn-toolbar:before,.btn-toolbar:after,.btn-group-vertical>.btn-group:before,.btn-group-vertical>.btn-group:after,.nav:before,.nav:after,.navbar:before,.navbar:after,.navbar-header:before,.navbar-header:after,.navbar-collapse:before,.navbar-collapse:after,.pager:before,.pager:after,.panel-body:before,.panel-body:after,.modal-footer:before,.modal-footer:after{content:" ";display:table}.clearfix:after,.container:after,.container-fluid:after,.row:after,.form-horizontal .form-group:after,.btn-toolbar:after,.btn-group-vertical>.btn-group:after,.nav:after,.navbar:after,.navbar-header:after,.navbar-collapse:after,.pager:after,.panel-body:after,.modal-footer:after{clear:both}.center-block{display:block;margin-left:auto;margin-right:auto}.pull-right{float:right!important}.pull-left{float:left!important}.hide{display:none!important}.show{display:block!important}.invisible{visibility:hidden}.text-hide{font:0/0 a;color:transparent;text-shadow:none;background-color:transparent;border:0}.hidden{display:none!important;visibility:hidden!important}.affix{position:fixed}@-ms-viewport{width:device-width}.visible-xs,.visible-sm,.visible-md,.visible-lg{display:none!important}@media (max-width:767px){.visible-xs{display:block!important}table.visible-xs{display:table}tr.visible-xs{display:table-row!important}th.visible-xs,td.visible-xs{display:table-cell!important}}@media (min-width:768px) and (max-width:991px){.visible-sm{display:block!important}table.visible-sm{display:table}tr.visible-sm{display:table-row!important}th.visible-sm,td.visible-sm{display:table-cell!important}}@media (min-width:992px) and (max-width:1199px){.visible-md{display:block!important}table.visible-md{display:table}tr.visible-md{display:table-row!important}th.visible-md,td.visible-md{display:table-cell!important}}@media (min-width:1200px){.visible-lg{display:block!important}table.visible-lg{display:table}tr.visible-lg{display:table-row!important}th.visible-lg,td.visible-lg{display:table-cell!important}}@media (max-width:767px){.hidden-xs{display:none!important}}@media (min-width:768px) and (max-width:991px){.hidden-sm{display:none!important}}@media (min-width:992px) and (max-width:1199px){.hidden-md{display:none!important}}@media (min-width:1200px){.hidden-lg{display:none!important}}.visible-print{display:none!important}@media print{.visible-print{display:block!important}table.visible-print{display:table}tr.visible-print{display:table-row!important}th.visible-print,td.visible-print{display:table-cell!important}}@media print{.hidden-print{display:none!important}} \ No newline at end of file
+ *//*! normalize.css v3.0.2 | MIT License | git.io/normalize */html{font-family:sans-serif;-webkit-text-size-adjust:100%;-ms-text-size-adjust:100%}body{margin:0}article,aside,details,figcaption,figure,footer,header,hgroup,main,menu,nav,section,summary{display:block}audio,canvas,progress,video{display:inline-block;vertical-align:baseline}audio:not([controls]){display:none;height:0}[hidden],template{display:none}a{background-color:transparent}a:active,a:hover{outline:0}abbr[title]{border-bottom:1px dotted}b,strong{font-weight:700}dfn{font-style:italic}h1{margin:.67em 0;font-size:2em}mark{color:#000;background:#ff0}small{font-size:80%}sub,sup{position:relative;font-size:75%;line-height:0;vertical-align:baseline}sup{top:-.5em}sub{bottom:-.25em}img{border:0}svg:not(:root){overflow:hidden}figure{margin:1em 40px}hr{height:0;-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box}pre{overflow:auto}code,kbd,pre,samp{font-family:monospace,monospace;font-size:1em}button,input,optgroup,select,textarea{margin:0;font:inherit;color:inherit}button{overflow:visible}button,select{text-transform:none}button,html input[type=button],input[type=reset],input[type=submit]{-webkit-appearance:button;cursor:pointer}button[disabled],html input[disabled]{cursor:default}button::-moz-focus-inner,input::-moz-focus-inner{padding:0;border:0}input{line-height:normal}input[type=checkbox],input[type=radio]{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;padding:0}input[type=number]::-webkit-inner-spin-button,input[type=number]::-webkit-outer-spin-button{height:auto}input[type=search]{-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box;-webkit-appearance:textfield}input[type=search]::-webkit-search-cancel-button,input[type=search]::-webkit-search-decoration{-webkit-appearance:none}fieldset{padding:.35em .625em .75em;margin:0 2px;border:1px solid silver}legend{padding:0;border:0}textarea{overflow:auto}optgroup{font-weight:700}table{border-spacing:0;border-collapse:collapse}td,th{padding:0}/*! Source: https://github.com/h5bp/html5-boilerplate/blob/master/src/css/main.css */@media print{*,:before,:after{color:#000!important;text-shadow:none!important;background:transparent!important;-webkit-box-shadow:none!important;box-shadow:none!important}a,a:visited{text-decoration:underline}a[href]:after{content:" (" attr(href) ")"}abbr[title]:after{content:" (" attr(title) ")"}a[href^="#"]:after,a[href^="javascript:"]:after{content:""}pre,blockquote{border:1px solid #999;page-break-inside:avoid}thead{display:table-header-group}tr,img{page-break-inside:avoid}img{max-width:100%!important}p,h2,h3{orphans:3;widows:3}h2,h3{page-break-after:avoid}select{background:#fff!important}.navbar{display:none}.btn>.caret,.dropup>.btn>.caret{border-top-color:#000!important}.label{border:1px solid #000}.table{border-collapse:collapse!important}.table td,.table th{background-color:#fff!important}.table-bordered th,.table-bordered td{border:1px solid #ddd!important}}@font-face{font-family:'Glyphicons Halflings';src:url(../fonts/glyphicons-halflings-regular.eot);src:url(../fonts/glyphicons-halflings-regular.eot?#iefix) format('embedded-opentype'),url(../fonts/glyphicons-halflings-regular.woff) format('woff'),url(../fonts/glyphicons-halflings-regular.ttf) format('truetype'),url(../fonts/glyphicons-halflings-regular.svg#glyphicons_halflingsregular) format('svg')}.glyphicon{position:relative;top:1px;display:inline-block;font-family:'Glyphicons Halflings';font-style:normal;font-weight:400;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.glyphicon-asterisk:before{content:"\2a"}.glyphicon-plus:before{content:"\2b"}.glyphicon-euro:before,.glyphicon-eur:before{content:"\20ac"}.glyphicon-minus:before{content:"\2212"}.glyphicon-cloud:before{content:"\2601"}.glyphicon-envelope:before{content:"\2709"}.glyphicon-pencil:before{content:"\270f"}.glyphicon-glass:before{content:"\e001"}.glyphicon-music:before{content:"\e002"}.glyphicon-search:before{content:"\e003"}.glyphicon-heart:before{content:"\e005"}.glyphicon-star:before{content:"\e006"}.glyphicon-star-empty:before{content:"\e007"}.glyphicon-user:before{content:"\e008"}.glyphicon-film:before{content:"\e009"}.glyphicon-th-large:before{content:"\e010"}.glyphicon-th:before{content:"\e011"}.glyphicon-th-list:before{content:"\e012"}.glyphicon-ok:before{content:"\e013"}.glyphicon-remove:before{content:"\e014"}.glyphicon-zoom-in:before{content:"\e015"}.glyphicon-zoom-out:before{content:"\e016"}.glyphicon-off:before{content:"\e017"}.glyphicon-signal:before{content:"\e018"}.glyphicon-cog:before{content:"\e019"}.glyphicon-trash:before{content:"\e020"}.glyphicon-home:before{content:"\e021"}.glyphicon-file:before{content:"\e022"}.glyphicon-time:before{content:"\e023"}.glyphicon-road:before{content:"\e024"}.glyphicon-download-alt:before{content:"\e025"}.glyphicon-download:before{content:"\e026"}.glyphicon-upload:before{content:"\e027"}.glyphicon-inbox:before{content:"\e028"}.glyphicon-play-circle:before{content:"\e029"}.glyphicon-repeat:before{content:"\e030"}.glyphicon-refresh:before{content:"\e031"}.glyphicon-list-alt:before{content:"\e032"}.glyphicon-lock:before{content:"\e033"}.glyphicon-flag:before{content:"\e034"}.glyphicon-headphones:before{content:"\e035"}.glyphicon-volume-off:before{content:"\e036"}.glyphicon-volume-down:before{content:"\e037"}.glyphicon-volume-up:before{content:"\e038"}.glyphicon-qrcode:before{content:"\e039"}.glyphicon-barcode:before{content:"\e040"}.glyphicon-tag:before{content:"\e041"}.glyphicon-tags:before{content:"\e042"}.glyphicon-book:before{content:"\e043"}.glyphicon-bookmark:before{content:"\e044"}.glyphicon-print:before{content:"\e045"}.glyphicon-camera:before{content:"\e046"}.glyphicon-font:before{content:"\e047"}.glyphicon-bold:before{content:"\e048"}.glyphicon-italic:before{content:"\e049"}.glyphicon-text-height:before{content:"\e050"}.glyphicon-text-width:before{content:"\e051"}.glyphicon-align-left:before{content:"\e052"}.glyphicon-align-center:before{content:"\e053"}.glyphicon-align-right:before{content:"\e054"}.glyphicon-align-justify:before{content:"\e055"}.glyphicon-list:before{content:"\e056"}.glyphicon-indent-left:before{content:"\e057"}.glyphicon-indent-right:before{content:"\e058"}.glyphicon-facetime-video:before{content:"\e059"}.glyphicon-picture:before{content:"\e060"}.glyphicon-map-marker:before{content:"\e062"}.glyphicon-adjust:before{content:"\e063"}.glyphicon-tint:before{content:"\e064"}.glyphicon-edit:before{content:"\e065"}.glyphicon-share:before{content:"\e066"}.glyphicon-check:before{content:"\e067"}.glyphicon-move:before{content:"\e068"}.glyphicon-step-backward:before{content:"\e069"}.glyphicon-fast-backward:before{content:"\e070"}.glyphicon-backward:before{content:"\e071"}.glyphicon-play:before{content:"\e072"}.glyphicon-pause:before{content:"\e073"}.glyphicon-stop:before{content:"\e074"}.glyphicon-forward:before{content:"\e075"}.glyphicon-fast-forward:before{content:"\e076"}.glyphicon-step-forward:before{content:"\e077"}.glyphicon-eject:before{content:"\e078"}.glyphicon-chevron-left:before{content:"\e079"}.glyphicon-chevron-right:before{content:"\e080"}.glyphicon-plus-sign:before{content:"\e081"}.glyphicon-minus-sign:before{content:"\e082"}.glyphicon-remove-sign:before{content:"\e083"}.glyphicon-ok-sign:before{content:"\e084"}.glyphicon-question-sign:before{content:"\e085"}.glyphicon-info-sign:before{content:"\e086"}.glyphicon-screenshot:before{content:"\e087"}.glyphicon-remove-circle:before{content:"\e088"}.glyphicon-ok-circle:before{content:"\e089"}.glyphicon-ban-circle:before{content:"\e090"}.glyphicon-arrow-left:before{content:"\e091"}.glyphicon-arrow-right:before{content:"\e092"}.glyphicon-arrow-up:before{content:"\e093"}.glyphicon-arrow-down:before{content:"\e094"}.glyphicon-share-alt:before{content:"\e095"}.glyphicon-resize-full:before{content:"\e096"}.glyphicon-resize-small:before{content:"\e097"}.glyphicon-exclamation-sign:before{content:"\e101"}.glyphicon-gift:before{content:"\e102"}.glyphicon-leaf:before{content:"\e103"}.glyphicon-fire:before{content:"\e104"}.glyphicon-eye-open:before{content:"\e105"}.glyphicon-eye-close:before{content:"\e106"}.glyphicon-warning-sign:before{content:"\e107"}.glyphicon-plane:before{content:"\e108"}.glyphicon-calendar:before{content:"\e109"}.glyphicon-random:before{content:"\e110"}.glyphicon-comment:before{content:"\e111"}.glyphicon-magnet:before{content:"\e112"}.glyphicon-chevron-up:before{content:"\e113"}.glyphicon-chevron-down:before{content:"\e114"}.glyphicon-retweet:before{content:"\e115"}.glyphicon-shopping-cart:before{content:"\e116"}.glyphicon-folder-close:before{content:"\e117"}.glyphicon-folder-open:before{content:"\e118"}.glyphicon-resize-vertical:before{content:"\e119"}.glyphicon-resize-horizontal:before{content:"\e120"}.glyphicon-hdd:before{content:"\e121"}.glyphicon-bullhorn:before{content:"\e122"}.glyphicon-bell:before{content:"\e123"}.glyphicon-certificate:before{content:"\e124"}.glyphicon-thumbs-up:before{content:"\e125"}.glyphicon-thumbs-down:before{content:"\e126"}.glyphicon-hand-right:before{content:"\e127"}.glyphicon-hand-left:before{content:"\e128"}.glyphicon-hand-up:before{content:"\e129"}.glyphicon-hand-down:before{content:"\e130"}.glyphicon-circle-arrow-right:before{content:"\e131"}.glyphicon-circle-arrow-left:before{content:"\e132"}.glyphicon-circle-arrow-up:before{content:"\e133"}.glyphicon-circle-arrow-down:before{content:"\e134"}.glyphicon-globe:before{content:"\e135"}.glyphicon-wrench:before{content:"\e136"}.glyphicon-tasks:before{content:"\e137"}.glyphicon-filter:before{content:"\e138"}.glyphicon-briefcase:before{content:"\e139"}.glyphicon-fullscreen:before{content:"\e140"}.glyphicon-dashboard:before{content:"\e141"}.glyphicon-paperclip:before{content:"\e142"}.glyphicon-heart-empty:before{content:"\e143"}.glyphicon-link:before{content:"\e144"}.glyphicon-phone:before{content:"\e145"}.glyphicon-pushpin:before{content:"\e146"}.glyphicon-usd:before{content:"\e148"}.glyphicon-gbp:before{content:"\e149"}.glyphicon-sort:before{content:"\e150"}.glyphicon-sort-by-alphabet:before{content:"\e151"}.glyphicon-sort-by-alphabet-alt:before{content:"\e152"}.glyphicon-sort-by-order:before{content:"\e153"}.glyphicon-sort-by-order-alt:before{content:"\e154"}.glyphicon-sort-by-attributes:before{content:"\e155"}.glyphicon-sort-by-attributes-alt:before{content:"\e156"}.glyphicon-unchecked:before{content:"\e157"}.glyphicon-expand:before{content:"\e158"}.glyphicon-collapse-down:before{content:"\e159"}.glyphicon-collapse-up:before{content:"\e160"}.glyphicon-log-in:before{content:"\e161"}.glyphicon-flash:before{content:"\e162"}.glyphicon-log-out:before{content:"\e163"}.glyphicon-new-window:before{content:"\e164"}.glyphicon-record:before{content:"\e165"}.glyphicon-save:before{content:"\e166"}.glyphicon-open:before{content:"\e167"}.glyphicon-saved:before{content:"\e168"}.glyphicon-import:before{content:"\e169"}.glyphicon-export:before{content:"\e170"}.glyphicon-send:before{content:"\e171"}.glyphicon-floppy-disk:before{content:"\e172"}.glyphicon-floppy-saved:before{content:"\e173"}.glyphicon-floppy-remove:before{content:"\e174"}.glyphicon-floppy-save:before{content:"\e175"}.glyphicon-floppy-open:before{content:"\e176"}.glyphicon-credit-card:before{content:"\e177"}.glyphicon-transfer:before{content:"\e178"}.glyphicon-cutlery:before{content:"\e179"}.glyphicon-header:before{content:"\e180"}.glyphicon-compressed:before{content:"\e181"}.glyphicon-earphone:before{content:"\e182"}.glyphicon-phone-alt:before{content:"\e183"}.glyphicon-tower:before{content:"\e184"}.glyphicon-stats:before{content:"\e185"}.glyphicon-sd-video:before{content:"\e186"}.glyphicon-hd-video:before{content:"\e187"}.glyphicon-subtitles:before{content:"\e188"}.glyphicon-sound-stereo:before{content:"\e189"}.glyphicon-sound-dolby:before{content:"\e190"}.glyphicon-sound-5-1:before{content:"\e191"}.glyphicon-sound-6-1:before{content:"\e192"}.glyphicon-sound-7-1:before{content:"\e193"}.glyphicon-copyright-mark:before{content:"\e194"}.glyphicon-registration-mark:before{content:"\e195"}.glyphicon-cloud-download:before{content:"\e197"}.glyphicon-cloud-upload:before{content:"\e198"}.glyphicon-tree-conifer:before{content:"\e199"}.glyphicon-tree-deciduous:before{content:"\e200"}*{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}:before,:after{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}html{font-size:10px;-webkit-tap-highlight-color:rgba(0,0,0,0)}body{font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:14px;line-height:1.42857143;color:#333;background-color:#fff}input,button,select,textarea{font-family:inherit;font-size:inherit;line-height:inherit}a{color:#337ab7;text-decoration:none}a:hover,a:focus{color:#23527c;text-decoration:underline}a:focus{outline:thin dotted;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}figure{margin:0}img{vertical-align:middle}.img-responsive,.thumbnail>img,.thumbnail a>img,.carousel-inner>.item>img,.carousel-inner>.item>a>img{display:block;max-width:100%;height:auto}.img-rounded{border-radius:6px}.img-thumbnail{display:inline-block;max-width:100%;height:auto;padding:4px;line-height:1.42857143;background-color:#fff;border:1px solid #ddd;border-radius:4px;-webkit-transition:all .2s ease-in-out;-o-transition:all .2s ease-in-out;transition:all .2s ease-in-out}.img-circle{border-radius:50%}hr{margin-top:20px;margin-bottom:20px;border:0;border-top:1px solid #eee}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);border:0}.sr-only-focusable:active,.sr-only-focusable:focus{position:static;width:auto;height:auto;margin:0;overflow:visible;clip:auto}h1,h2,h3,h4,h5,h6,.h1,.h2,.h3,.h4,.h5,.h6{font-family:inherit;font-weight:500;line-height:1.1;color:inherit}h1 small,h2 small,h3 small,h4 small,h5 small,h6 small,.h1 small,.h2 small,.h3 small,.h4 small,.h5 small,.h6 small,h1 .small,h2 .small,h3 .small,h4 .small,h5 .small,h6 .small,.h1 .small,.h2 .small,.h3 .small,.h4 .small,.h5 .small,.h6 .small{font-weight:400;line-height:1;color:#777}h1,.h1,h2,.h2,h3,.h3{margin-top:20px;margin-bottom:10px}h1 small,.h1 small,h2 small,.h2 small,h3 small,.h3 small,h1 .small,.h1 .small,h2 .small,.h2 .small,h3 .small,.h3 .small{font-size:65%}h4,.h4,h5,.h5,h6,.h6{margin-top:10px;margin-bottom:10px}h4 small,.h4 small,h5 small,.h5 small,h6 small,.h6 small,h4 .small,.h4 .small,h5 .small,.h5 .small,h6 .small,.h6 .small{font-size:75%}h1,.h1{font-size:36px}h2,.h2{font-size:30px}h3,.h3{font-size:24px}h4,.h4{font-size:18px}h5,.h5{font-size:14px}h6,.h6{font-size:12px}p{margin:0 0 10px}.lead{margin-bottom:20px;font-size:16px;font-weight:300;line-height:1.4}@media (min-width:768px){.lead{font-size:21px}}small,.small{font-size:85%}mark,.mark{padding:.2em;background-color:#fcf8e3}.text-left{text-align:left}.text-right{text-align:right}.text-center{text-align:center}.text-justify{text-align:justify}.text-nowrap{white-space:nowrap}.text-lowercase{text-transform:lowercase}.text-uppercase{text-transform:uppercase}.text-capitalize{text-transform:capitalize}.text-muted{color:#777}.text-primary{color:#337ab7}a.text-primary:hover{color:#286090}.text-success{color:#3c763d}a.text-success:hover{color:#2b542c}.text-info{color:#31708f}a.text-info:hover{color:#245269}.text-warning{color:#8a6d3b}a.text-warning:hover{color:#66512c}.text-danger{color:#a94442}a.text-danger:hover{color:#843534}.bg-primary{color:#fff;background-color:#337ab7}a.bg-primary:hover{background-color:#286090}.bg-success{background-color:#dff0d8}a.bg-success:hover{background-color:#c1e2b3}.bg-info{background-color:#d9edf7}a.bg-info:hover{background-color:#afd9ee}.bg-warning{background-color:#fcf8e3}a.bg-warning:hover{background-color:#f7ecb5}.bg-danger{background-color:#f2dede}a.bg-danger:hover{background-color:#e4b9b9}.page-header{padding-bottom:9px;margin:40px 0 20px;border-bottom:1px solid #eee}ul,ol{margin-top:0;margin-bottom:10px}ul ul,ol ul,ul ol,ol ol{margin-bottom:0}.list-unstyled{padding-left:0;list-style:none}.list-inline{padding-left:0;margin-left:-5px;list-style:none}.list-inline>li{display:inline-block;padding-right:5px;padding-left:5px}dl{margin-top:0;margin-bottom:20px}dt,dd{line-height:1.42857143}dt{font-weight:700}dd{margin-left:0}@media (min-width:768px){.dl-horizontal dt{float:left;width:160px;overflow:hidden;clear:left;text-align:right;text-overflow:ellipsis;white-space:nowrap}.dl-horizontal dd{margin-left:180px}}abbr[title],abbr[data-original-title]{cursor:help;border-bottom:1px dotted #777}.initialism{font-size:90%;text-transform:uppercase}blockquote{padding:10px 20px;margin:0 0 20px;font-size:17.5px;border-left:5px solid #eee}blockquote p:last-child,blockquote ul:last-child,blockquote ol:last-child{margin-bottom:0}blockquote footer,blockquote small,blockquote .small{display:block;font-size:80%;line-height:1.42857143;color:#777}blockquote footer:before,blockquote small:before,blockquote .small:before{content:'\2014 \00A0'}.blockquote-reverse,blockquote.pull-right{padding-right:15px;padding-left:0;text-align:right;border-right:5px solid #eee;border-left:0}.blockquote-reverse footer:before,blockquote.pull-right footer:before,.blockquote-reverse small:before,blockquote.pull-right small:before,.blockquote-reverse .small:before,blockquote.pull-right .small:before{content:''}.blockquote-reverse footer:after,blockquote.pull-right footer:after,.blockquote-reverse small:after,blockquote.pull-right small:after,.blockquote-reverse .small:after,blockquote.pull-right .small:after{content:'\00A0 \2014'}address{margin-bottom:20px;font-style:normal;line-height:1.42857143}code,kbd,pre,samp{font-family:Menlo,Monaco,Consolas,"Courier New",monospace}code{padding:2px 4px;font-size:90%;color:#c7254e;background-color:#f9f2f4;border-radius:4px}kbd{padding:2px 4px;font-size:90%;color:#fff;background-color:#333;border-radius:3px;-webkit-box-shadow:inset 0 -1px 0 rgba(0,0,0,.25);box-shadow:inset 0 -1px 0 rgba(0,0,0,.25)}kbd kbd{padding:0;font-size:100%;font-weight:700;-webkit-box-shadow:none;box-shadow:none}pre{display:block;padding:9.5px;margin:0 0 10px;font-size:13px;line-height:1.42857143;color:#333;word-break:break-all;word-wrap:break-word;background-color:#f5f5f5;border:1px solid #ccc;border-radius:4px}pre code{padding:0;font-size:inherit;color:inherit;white-space:pre-wrap;background-color:transparent;border-radius:0}.pre-scrollable{max-height:340px;overflow-y:scroll}.container{padding-right:15px;padding-left:15px;margin-right:auto;margin-left:auto}@media (min-width:768px){.container{width:750px}}@media (min-width:992px){.container{width:970px}}@media (min-width:1200px){.container{width:1170px}}.container-fluid{padding-right:15px;padding-left:15px;margin-right:auto;margin-left:auto}.row{margin-right:-15px;margin-left:-15px}.col-xs-1,.col-sm-1,.col-md-1,.col-lg-1,.col-xs-2,.col-sm-2,.col-md-2,.col-lg-2,.col-xs-3,.col-sm-3,.col-md-3,.col-lg-3,.col-xs-4,.col-sm-4,.col-md-4,.col-lg-4,.col-xs-5,.col-sm-5,.col-md-5,.col-lg-5,.col-xs-6,.col-sm-6,.col-md-6,.col-lg-6,.col-xs-7,.col-sm-7,.col-md-7,.col-lg-7,.col-xs-8,.col-sm-8,.col-md-8,.col-lg-8,.col-xs-9,.col-sm-9,.col-md-9,.col-lg-9,.col-xs-10,.col-sm-10,.col-md-10,.col-lg-10,.col-xs-11,.col-sm-11,.col-md-11,.col-lg-11,.col-xs-12,.col-sm-12,.col-md-12,.col-lg-12{position:relative;min-height:1px;padding-right:15px;padding-left:15px}.col-xs-1,.col-xs-2,.col-xs-3,.col-xs-4,.col-xs-5,.col-xs-6,.col-xs-7,.col-xs-8,.col-xs-9,.col-xs-10,.col-xs-11,.col-xs-12{float:left}.col-xs-12{width:100%}.col-xs-11{width:91.66666667%}.col-xs-10{width:83.33333333%}.col-xs-9{width:75%}.col-xs-8{width:66.66666667%}.col-xs-7{width:58.33333333%}.col-xs-6{width:50%}.col-xs-5{width:41.66666667%}.col-xs-4{width:33.33333333%}.col-xs-3{width:25%}.col-xs-2{width:16.66666667%}.col-xs-1{width:8.33333333%}.col-xs-pull-12{right:100%}.col-xs-pull-11{right:91.66666667%}.col-xs-pull-10{right:83.33333333%}.col-xs-pull-9{right:75%}.col-xs-pull-8{right:66.66666667%}.col-xs-pull-7{right:58.33333333%}.col-xs-pull-6{right:50%}.col-xs-pull-5{right:41.66666667%}.col-xs-pull-4{right:33.33333333%}.col-xs-pull-3{right:25%}.col-xs-pull-2{right:16.66666667%}.col-xs-pull-1{right:8.33333333%}.col-xs-pull-0{right:auto}.col-xs-push-12{left:100%}.col-xs-push-11{left:91.66666667%}.col-xs-push-10{left:83.33333333%}.col-xs-push-9{left:75%}.col-xs-push-8{left:66.66666667%}.col-xs-push-7{left:58.33333333%}.col-xs-push-6{left:50%}.col-xs-push-5{left:41.66666667%}.col-xs-push-4{left:33.33333333%}.col-xs-push-3{left:25%}.col-xs-push-2{left:16.66666667%}.col-xs-push-1{left:8.33333333%}.col-xs-push-0{left:auto}.col-xs-offset-12{margin-left:100%}.col-xs-offset-11{margin-left:91.66666667%}.col-xs-offset-10{margin-left:83.33333333%}.col-xs-offset-9{margin-left:75%}.col-xs-offset-8{margin-left:66.66666667%}.col-xs-offset-7{margin-left:58.33333333%}.col-xs-offset-6{margin-left:50%}.col-xs-offset-5{margin-left:41.66666667%}.col-xs-offset-4{margin-left:33.33333333%}.col-xs-offset-3{margin-left:25%}.col-xs-offset-2{margin-left:16.66666667%}.col-xs-offset-1{margin-left:8.33333333%}.col-xs-offset-0{margin-left:0}@media (min-width:768px){.col-sm-1,.col-sm-2,.col-sm-3,.col-sm-4,.col-sm-5,.col-sm-6,.col-sm-7,.col-sm-8,.col-sm-9,.col-sm-10,.col-sm-11,.col-sm-12{float:left}.col-sm-12{width:100%}.col-sm-11{width:91.66666667%}.col-sm-10{width:83.33333333%}.col-sm-9{width:75%}.col-sm-8{width:66.66666667%}.col-sm-7{width:58.33333333%}.col-sm-6{width:50%}.col-sm-5{width:41.66666667%}.col-sm-4{width:33.33333333%}.col-sm-3{width:25%}.col-sm-2{width:16.66666667%}.col-sm-1{width:8.33333333%}.col-sm-pull-12{right:100%}.col-sm-pull-11{right:91.66666667%}.col-sm-pull-10{right:83.33333333%}.col-sm-pull-9{right:75%}.col-sm-pull-8{right:66.66666667%}.col-sm-pull-7{right:58.33333333%}.col-sm-pull-6{right:50%}.col-sm-pull-5{right:41.66666667%}.col-sm-pull-4{right:33.33333333%}.col-sm-pull-3{right:25%}.col-sm-pull-2{right:16.66666667%}.col-sm-pull-1{right:8.33333333%}.col-sm-pull-0{right:auto}.col-sm-push-12{left:100%}.col-sm-push-11{left:91.66666667%}.col-sm-push-10{left:83.33333333%}.col-sm-push-9{left:75%}.col-sm-push-8{left:66.66666667%}.col-sm-push-7{left:58.33333333%}.col-sm-push-6{left:50%}.col-sm-push-5{left:41.66666667%}.col-sm-push-4{left:33.33333333%}.col-sm-push-3{left:25%}.col-sm-push-2{left:16.66666667%}.col-sm-push-1{left:8.33333333%}.col-sm-push-0{left:auto}.col-sm-offset-12{margin-left:100%}.col-sm-offset-11{margin-left:91.66666667%}.col-sm-offset-10{margin-left:83.33333333%}.col-sm-offset-9{margin-left:75%}.col-sm-offset-8{margin-left:66.66666667%}.col-sm-offset-7{margin-left:58.33333333%}.col-sm-offset-6{margin-left:50%}.col-sm-offset-5{margin-left:41.66666667%}.col-sm-offset-4{margin-left:33.33333333%}.col-sm-offset-3{margin-left:25%}.col-sm-offset-2{margin-left:16.66666667%}.col-sm-offset-1{margin-left:8.33333333%}.col-sm-offset-0{margin-left:0}}@media (min-width:992px){.col-md-1,.col-md-2,.col-md-3,.col-md-4,.col-md-5,.col-md-6,.col-md-7,.col-md-8,.col-md-9,.col-md-10,.col-md-11,.col-md-12{float:left}.col-md-12{width:100%}.col-md-11{width:91.66666667%}.col-md-10{width:83.33333333%}.col-md-9{width:75%}.col-md-8{width:66.66666667%}.col-md-7{width:58.33333333%}.col-md-6{width:50%}.col-md-5{width:41.66666667%}.col-md-4{width:33.33333333%}.col-md-3{width:25%}.col-md-2{width:16.66666667%}.col-md-1{width:8.33333333%}.col-md-pull-12{right:100%}.col-md-pull-11{right:91.66666667%}.col-md-pull-10{right:83.33333333%}.col-md-pull-9{right:75%}.col-md-pull-8{right:66.66666667%}.col-md-pull-7{right:58.33333333%}.col-md-pull-6{right:50%}.col-md-pull-5{right:41.66666667%}.col-md-pull-4{right:33.33333333%}.col-md-pull-3{right:25%}.col-md-pull-2{right:16.66666667%}.col-md-pull-1{right:8.33333333%}.col-md-pull-0{right:auto}.col-md-push-12{left:100%}.col-md-push-11{left:91.66666667%}.col-md-push-10{left:83.33333333%}.col-md-push-9{left:75%}.col-md-push-8{left:66.66666667%}.col-md-push-7{left:58.33333333%}.col-md-push-6{left:50%}.col-md-push-5{left:41.66666667%}.col-md-push-4{left:33.33333333%}.col-md-push-3{left:25%}.col-md-push-2{left:16.66666667%}.col-md-push-1{left:8.33333333%}.col-md-push-0{left:auto}.col-md-offset-12{margin-left:100%}.col-md-offset-11{margin-left:91.66666667%}.col-md-offset-10{margin-left:83.33333333%}.col-md-offset-9{margin-left:75%}.col-md-offset-8{margin-left:66.66666667%}.col-md-offset-7{margin-left:58.33333333%}.col-md-offset-6{margin-left:50%}.col-md-offset-5{margin-left:41.66666667%}.col-md-offset-4{margin-left:33.33333333%}.col-md-offset-3{margin-left:25%}.col-md-offset-2{margin-left:16.66666667%}.col-md-offset-1{margin-left:8.33333333%}.col-md-offset-0{margin-left:0}}@media (min-width:1200px){.col-lg-1,.col-lg-2,.col-lg-3,.col-lg-4,.col-lg-5,.col-lg-6,.col-lg-7,.col-lg-8,.col-lg-9,.col-lg-10,.col-lg-11,.col-lg-12{float:left}.col-lg-12{width:100%}.col-lg-11{width:91.66666667%}.col-lg-10{width:83.33333333%}.col-lg-9{width:75%}.col-lg-8{width:66.66666667%}.col-lg-7{width:58.33333333%}.col-lg-6{width:50%}.col-lg-5{width:41.66666667%}.col-lg-4{width:33.33333333%}.col-lg-3{width:25%}.col-lg-2{width:16.66666667%}.col-lg-1{width:8.33333333%}.col-lg-pull-12{right:100%}.col-lg-pull-11{right:91.66666667%}.col-lg-pull-10{right:83.33333333%}.col-lg-pull-9{right:75%}.col-lg-pull-8{right:66.66666667%}.col-lg-pull-7{right:58.33333333%}.col-lg-pull-6{right:50%}.col-lg-pull-5{right:41.66666667%}.col-lg-pull-4{right:33.33333333%}.col-lg-pull-3{right:25%}.col-lg-pull-2{right:16.66666667%}.col-lg-pull-1{right:8.33333333%}.col-lg-pull-0{right:auto}.col-lg-push-12{left:100%}.col-lg-push-11{left:91.66666667%}.col-lg-push-10{left:83.33333333%}.col-lg-push-9{left:75%}.col-lg-push-8{left:66.66666667%}.col-lg-push-7{left:58.33333333%}.col-lg-push-6{left:50%}.col-lg-push-5{left:41.66666667%}.col-lg-push-4{left:33.33333333%}.col-lg-push-3{left:25%}.col-lg-push-2{left:16.66666667%}.col-lg-push-1{left:8.33333333%}.col-lg-push-0{left:auto}.col-lg-offset-12{margin-left:100%}.col-lg-offset-11{margin-left:91.66666667%}.col-lg-offset-10{margin-left:83.33333333%}.col-lg-offset-9{margin-left:75%}.col-lg-offset-8{margin-left:66.66666667%}.col-lg-offset-7{margin-left:58.33333333%}.col-lg-offset-6{margin-left:50%}.col-lg-offset-5{margin-left:41.66666667%}.col-lg-offset-4{margin-left:33.33333333%}.col-lg-offset-3{margin-left:25%}.col-lg-offset-2{margin-left:16.66666667%}.col-lg-offset-1{margin-left:8.33333333%}.col-lg-offset-0{margin-left:0}}table{background-color:transparent}caption{padding-top:8px;padding-bottom:8px;color:#777;text-align:left}th{text-align:left}.table{width:100%;max-width:100%;margin-bottom:20px}.table>thead>tr>th,.table>tbody>tr>th,.table>tfoot>tr>th,.table>thead>tr>td,.table>tbody>tr>td,.table>tfoot>tr>td{padding:8px;line-height:1.42857143;vertical-align:top;border-top:1px solid #ddd}.table>thead>tr>th{vertical-align:bottom;border-bottom:2px solid #ddd}.table>caption+thead>tr:first-child>th,.table>colgroup+thead>tr:first-child>th,.table>thead:first-child>tr:first-child>th,.table>caption+thead>tr:first-child>td,.table>colgroup+thead>tr:first-child>td,.table>thead:first-child>tr:first-child>td{border-top:0}.table>tbody+tbody{border-top:2px solid #ddd}.table .table{background-color:#fff}.table-condensed>thead>tr>th,.table-condensed>tbody>tr>th,.table-condensed>tfoot>tr>th,.table-condensed>thead>tr>td,.table-condensed>tbody>tr>td,.table-condensed>tfoot>tr>td{padding:5px}.table-bordered{border:1px solid #ddd}.table-bordered>thead>tr>th,.table-bordered>tbody>tr>th,.table-bordered>tfoot>tr>th,.table-bordered>thead>tr>td,.table-bordered>tbody>tr>td,.table-bordered>tfoot>tr>td{border:1px solid #ddd}.table-bordered>thead>tr>th,.table-bordered>thead>tr>td{border-bottom-width:2px}.table-striped>tbody>tr:nth-child(odd){background-color:#f9f9f9}.table-hover>tbody>tr:hover{background-color:#f5f5f5}table col[class*=col-]{position:static;display:table-column;float:none}table td[class*=col-],table th[class*=col-]{position:static;display:table-cell;float:none}.table>thead>tr>td.active,.table>tbody>tr>td.active,.table>tfoot>tr>td.active,.table>thead>tr>th.active,.table>tbody>tr>th.active,.table>tfoot>tr>th.active,.table>thead>tr.active>td,.table>tbody>tr.active>td,.table>tfoot>tr.active>td,.table>thead>tr.active>th,.table>tbody>tr.active>th,.table>tfoot>tr.active>th{background-color:#f5f5f5}.table-hover>tbody>tr>td.active:hover,.table-hover>tbody>tr>th.active:hover,.table-hover>tbody>tr.active:hover>td,.table-hover>tbody>tr:hover>.active,.table-hover>tbody>tr.active:hover>th{background-color:#e8e8e8}.table>thead>tr>td.success,.table>tbody>tr>td.success,.table>tfoot>tr>td.success,.table>thead>tr>th.success,.table>tbody>tr>th.success,.table>tfoot>tr>th.success,.table>thead>tr.success>td,.table>tbody>tr.success>td,.table>tfoot>tr.success>td,.table>thead>tr.success>th,.table>tbody>tr.success>th,.table>tfoot>tr.success>th{background-color:#dff0d8}.table-hover>tbody>tr>td.success:hover,.table-hover>tbody>tr>th.success:hover,.table-hover>tbody>tr.success:hover>td,.table-hover>tbody>tr:hover>.success,.table-hover>tbody>tr.success:hover>th{background-color:#d0e9c6}.table>thead>tr>td.info,.table>tbody>tr>td.info,.table>tfoot>tr>td.info,.table>thead>tr>th.info,.table>tbody>tr>th.info,.table>tfoot>tr>th.info,.table>thead>tr.info>td,.table>tbody>tr.info>td,.table>tfoot>tr.info>td,.table>thead>tr.info>th,.table>tbody>tr.info>th,.table>tfoot>tr.info>th{background-color:#d9edf7}.table-hover>tbody>tr>td.info:hover,.table-hover>tbody>tr>th.info:hover,.table-hover>tbody>tr.info:hover>td,.table-hover>tbody>tr:hover>.info,.table-hover>tbody>tr.info:hover>th{background-color:#c4e3f3}.table>thead>tr>td.warning,.table>tbody>tr>td.warning,.table>tfoot>tr>td.warning,.table>thead>tr>th.warning,.table>tbody>tr>th.warning,.table>tfoot>tr>th.warning,.table>thead>tr.warning>td,.table>tbody>tr.warning>td,.table>tfoot>tr.warning>td,.table>thead>tr.warning>th,.table>tbody>tr.warning>th,.table>tfoot>tr.warning>th{background-color:#fcf8e3}.table-hover>tbody>tr>td.warning:hover,.table-hover>tbody>tr>th.warning:hover,.table-hover>tbody>tr.warning:hover>td,.table-hover>tbody>tr:hover>.warning,.table-hover>tbody>tr.warning:hover>th{background-color:#faf2cc}.table>thead>tr>td.danger,.table>tbody>tr>td.danger,.table>tfoot>tr>td.danger,.table>thead>tr>th.danger,.table>tbody>tr>th.danger,.table>tfoot>tr>th.danger,.table>thead>tr.danger>td,.table>tbody>tr.danger>td,.table>tfoot>tr.danger>td,.table>thead>tr.danger>th,.table>tbody>tr.danger>th,.table>tfoot>tr.danger>th{background-color:#f2dede}.table-hover>tbody>tr>td.danger:hover,.table-hover>tbody>tr>th.danger:hover,.table-hover>tbody>tr.danger:hover>td,.table-hover>tbody>tr:hover>.danger,.table-hover>tbody>tr.danger:hover>th{background-color:#ebcccc}.table-responsive{min-height:.01%;overflow-x:auto}@media screen and (max-width:767px){.table-responsive{width:100%;margin-bottom:15px;overflow-y:hidden;-ms-overflow-style:-ms-autohiding-scrollbar;border:1px solid #ddd}.table-responsive>.table{margin-bottom:0}.table-responsive>.table>thead>tr>th,.table-responsive>.table>tbody>tr>th,.table-responsive>.table>tfoot>tr>th,.table-responsive>.table>thead>tr>td,.table-responsive>.table>tbody>tr>td,.table-responsive>.table>tfoot>tr>td{white-space:nowrap}.table-responsive>.table-bordered{border:0}.table-responsive>.table-bordered>thead>tr>th:first-child,.table-responsive>.table-bordered>tbody>tr>th:first-child,.table-responsive>.table-bordered>tfoot>tr>th:first-child,.table-responsive>.table-bordered>thead>tr>td:first-child,.table-responsive>.table-bordered>tbody>tr>td:first-child,.table-responsive>.table-bordered>tfoot>tr>td:first-child{border-left:0}.table-responsive>.table-bordered>thead>tr>th:last-child,.table-responsive>.table-bordered>tbody>tr>th:last-child,.table-responsive>.table-bordered>tfoot>tr>th:last-child,.table-responsive>.table-bordered>thead>tr>td:last-child,.table-responsive>.table-bordered>tbody>tr>td:last-child,.table-responsive>.table-bordered>tfoot>tr>td:last-child{border-right:0}.table-responsive>.table-bordered>tbody>tr:last-child>th,.table-responsive>.table-bordered>tfoot>tr:last-child>th,.table-responsive>.table-bordered>tbody>tr:last-child>td,.table-responsive>.table-bordered>tfoot>tr:last-child>td{border-bottom:0}}fieldset{min-width:0;padding:0;margin:0;border:0}legend{display:block;width:100%;padding:0;margin-bottom:20px;font-size:21px;line-height:inherit;color:#333;border:0;border-bottom:1px solid #e5e5e5}label{display:inline-block;max-width:100%;margin-bottom:5px;font-weight:700}input[type=search]{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}input[type=radio],input[type=checkbox]{margin:4px 0 0;margin-top:1px \9;line-height:normal}input[type=file]{display:block}input[type=range]{display:block;width:100%}select[multiple],select[size]{height:auto}input[type=file]:focus,input[type=radio]:focus,input[type=checkbox]:focus{outline:thin dotted;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}output{display:block;padding-top:7px;font-size:14px;line-height:1.42857143;color:#555}.form-control{display:block;width:100%;height:34px;padding:6px 12px;font-size:14px;line-height:1.42857143;color:#555;background-color:#fff;background-image:none;border:1px solid #ccc;border-radius:4px;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 1px rgba(0,0,0,.075);-webkit-transition:border-color ease-in-out .15s,-webkit-box-shadow ease-in-out .15s;-o-transition:border-color ease-in-out .15s,box-shadow ease-in-out .15s;transition:border-color ease-in-out .15s,box-shadow ease-in-out .15s}.form-control:focus{border-color:#66afe9;outline:0;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(102,175,233,.6);box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(102,175,233,.6)}.form-control::-moz-placeholder{color:#999;opacity:1}.form-control:-ms-input-placeholder{color:#999}.form-control::-webkit-input-placeholder{color:#999}.form-control[disabled],.form-control[readonly],fieldset[disabled] .form-control{cursor:not-allowed;background-color:#eee;opacity:1}textarea.form-control{height:auto}input[type=search]{-webkit-appearance:none}@media screen and (-webkit-min-device-pixel-ratio:0){input[type=date],input[type=time],input[type=datetime-local],input[type=month]{line-height:34px}input[type=date].input-sm,input[type=time].input-sm,input[type=datetime-local].input-sm,input[type=month].input-sm{line-height:30px}input[type=date].input-lg,input[type=time].input-lg,input[type=datetime-local].input-lg,input[type=month].input-lg{line-height:46px}}.form-group{margin-bottom:15px}.radio,.checkbox{position:relative;display:block;margin-top:10px;margin-bottom:10px}.radio label,.checkbox label{min-height:20px;padding-left:20px;margin-bottom:0;font-weight:400;cursor:pointer}.radio input[type=radio],.radio-inline input[type=radio],.checkbox input[type=checkbox],.checkbox-inline input[type=checkbox]{position:absolute;margin-top:4px \9;margin-left:-20px}.radio+.radio,.checkbox+.checkbox{margin-top:-5px}.radio-inline,.checkbox-inline{display:inline-block;padding-left:20px;margin-bottom:0;font-weight:400;vertical-align:middle;cursor:pointer}.radio-inline+.radio-inline,.checkbox-inline+.checkbox-inline{margin-top:0;margin-left:10px}input[type=radio][disabled],input[type=checkbox][disabled],input[type=radio].disabled,input[type=checkbox].disabled,fieldset[disabled] input[type=radio],fieldset[disabled] input[type=checkbox]{cursor:not-allowed}.radio-inline.disabled,.checkbox-inline.disabled,fieldset[disabled] .radio-inline,fieldset[disabled] .checkbox-inline{cursor:not-allowed}.radio.disabled label,.checkbox.disabled label,fieldset[disabled] .radio label,fieldset[disabled] .checkbox label{cursor:not-allowed}.form-control-static{padding-top:7px;padding-bottom:7px;margin-bottom:0}.form-control-static.input-lg,.form-control-static.input-sm{padding-right:0;padding-left:0}.input-sm,.form-group-sm .form-control{height:30px;padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}select.input-sm,select.form-group-sm .form-control{height:30px;line-height:30px}textarea.input-sm,textarea.form-group-sm .form-control,select[multiple].input-sm,select[multiple].form-group-sm .form-control{height:auto}.input-lg,.form-group-lg .form-control{height:46px;padding:10px 16px;font-size:18px;line-height:1.33;border-radius:6px}select.input-lg,select.form-group-lg .form-control{height:46px;line-height:46px}textarea.input-lg,textarea.form-group-lg .form-control,select[multiple].input-lg,select[multiple].form-group-lg .form-control{height:auto}.has-feedback{position:relative}.has-feedback .form-control{padding-right:42.5px}.form-control-feedback{position:absolute;top:0;right:0;z-index:2;display:block;width:34px;height:34px;line-height:34px;text-align:center;pointer-events:none}.input-lg+.form-control-feedback{width:46px;height:46px;line-height:46px}.input-sm+.form-control-feedback{width:30px;height:30px;line-height:30px}.has-success .help-block,.has-success .control-label,.has-success .radio,.has-success .checkbox,.has-success .radio-inline,.has-success .checkbox-inline,.has-success.radio label,.has-success.checkbox label,.has-success.radio-inline label,.has-success.checkbox-inline label{color:#3c763d}.has-success .form-control{border-color:#3c763d;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 1px rgba(0,0,0,.075)}.has-success .form-control:focus{border-color:#2b542c;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #67b168;box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #67b168}.has-success .input-group-addon{color:#3c763d;background-color:#dff0d8;border-color:#3c763d}.has-success .form-control-feedback{color:#3c763d}.has-warning .help-block,.has-warning .control-label,.has-warning .radio,.has-warning .checkbox,.has-warning .radio-inline,.has-warning .checkbox-inline,.has-warning.radio label,.has-warning.checkbox label,.has-warning.radio-inline label,.has-warning.checkbox-inline label{color:#8a6d3b}.has-warning .form-control{border-color:#8a6d3b;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 1px rgba(0,0,0,.075)}.has-warning .form-control:focus{border-color:#66512c;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #c0a16b;box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #c0a16b}.has-warning .input-group-addon{color:#8a6d3b;background-color:#fcf8e3;border-color:#8a6d3b}.has-warning .form-control-feedback{color:#8a6d3b}.has-error .help-block,.has-error .control-label,.has-error .radio,.has-error .checkbox,.has-error .radio-inline,.has-error .checkbox-inline,.has-error.radio label,.has-error.checkbox label,.has-error.radio-inline label,.has-error.checkbox-inline label{color:#a94442}.has-error .form-control{border-color:#a94442;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 1px rgba(0,0,0,.075)}.has-error .form-control:focus{border-color:#843534;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #ce8483;box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #ce8483}.has-error .input-group-addon{color:#a94442;background-color:#f2dede;border-color:#a94442}.has-error .form-control-feedback{color:#a94442}.has-feedback label~.form-control-feedback{top:25px}.has-feedback label.sr-only~.form-control-feedback{top:0}.help-block{display:block;margin-top:5px;margin-bottom:10px;color:#737373}@media (min-width:768px){.form-inline .form-group{display:inline-block;margin-bottom:0;vertical-align:middle}.form-inline .form-control{display:inline-block;width:auto;vertical-align:middle}.form-inline .form-control-static{display:inline-block}.form-inline .input-group{display:inline-table;vertical-align:middle}.form-inline .input-group .input-group-addon,.form-inline .input-group .input-group-btn,.form-inline .input-group .form-control{width:auto}.form-inline .input-group>.form-control{width:100%}.form-inline .control-label{margin-bottom:0;vertical-align:middle}.form-inline .radio,.form-inline .checkbox{display:inline-block;margin-top:0;margin-bottom:0;vertical-align:middle}.form-inline .radio label,.form-inline .checkbox label{padding-left:0}.form-inline .radio input[type=radio],.form-inline .checkbox input[type=checkbox]{position:relative;margin-left:0}.form-inline .has-feedback .form-control-feedback{top:0}}.form-horizontal .radio,.form-horizontal .checkbox,.form-horizontal .radio-inline,.form-horizontal .checkbox-inline{padding-top:7px;margin-top:0;margin-bottom:0}.form-horizontal .radio,.form-horizontal .checkbox{min-height:27px}.form-horizontal .form-group{margin-right:-15px;margin-left:-15px}@media (min-width:768px){.form-horizontal .control-label{padding-top:7px;margin-bottom:0;text-align:right}}.form-horizontal .has-feedback .form-control-feedback{right:15px}@media (min-width:768px){.form-horizontal .form-group-lg .control-label{padding-top:14.3px}}@media (min-width:768px){.form-horizontal .form-group-sm .control-label{padding-top:6px}}.btn{display:inline-block;padding:6px 12px;margin-bottom:0;font-size:14px;font-weight:400;line-height:1.42857143;text-align:center;white-space:nowrap;vertical-align:middle;-ms-touch-action:manipulation;touch-action:manipulation;cursor:pointer;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;background-image:none;border:1px solid transparent;border-radius:4px}.btn:focus,.btn:active:focus,.btn.active:focus,.btn.focus,.btn:active.focus,.btn.active.focus{outline:thin dotted;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}.btn:hover,.btn:focus,.btn.focus{color:#333;text-decoration:none}.btn:active,.btn.active{background-image:none;outline:0;-webkit-box-shadow:inset 0 3px 5px rgba(0,0,0,.125);box-shadow:inset 0 3px 5px rgba(0,0,0,.125)}.btn.disabled,.btn[disabled],fieldset[disabled] .btn{pointer-events:none;cursor:not-allowed;filter:alpha(opacity=65);-webkit-box-shadow:none;box-shadow:none;opacity:.65}.btn-default{color:#333;background-color:#fff;border-color:#ccc}.btn-default:hover,.btn-default:focus,.btn-default.focus,.btn-default:active,.btn-default.active,.open>.dropdown-toggle.btn-default{color:#333;background-color:#e6e6e6;border-color:#adadad}.btn-default:active,.btn-default.active,.open>.dropdown-toggle.btn-default{background-image:none}.btn-default.disabled,.btn-default[disabled],fieldset[disabled] .btn-default,.btn-default.disabled:hover,.btn-default[disabled]:hover,fieldset[disabled] .btn-default:hover,.btn-default.disabled:focus,.btn-default[disabled]:focus,fieldset[disabled] .btn-default:focus,.btn-default.disabled.focus,.btn-default[disabled].focus,fieldset[disabled] .btn-default.focus,.btn-default.disabled:active,.btn-default[disabled]:active,fieldset[disabled] .btn-default:active,.btn-default.disabled.active,.btn-default[disabled].active,fieldset[disabled] .btn-default.active{background-color:#fff;border-color:#ccc}.btn-default .badge{color:#fff;background-color:#333}.btn-primary{color:#fff;background-color:#337ab7;border-color:#2e6da4}.btn-primary:hover,.btn-primary:focus,.btn-primary.focus,.btn-primary:active,.btn-primary.active,.open>.dropdown-toggle.btn-primary{color:#fff;background-color:#286090;border-color:#204d74}.btn-primary:active,.btn-primary.active,.open>.dropdown-toggle.btn-primary{background-image:none}.btn-primary.disabled,.btn-primary[disabled],fieldset[disabled] .btn-primary,.btn-primary.disabled:hover,.btn-primary[disabled]:hover,fieldset[disabled] .btn-primary:hover,.btn-primary.disabled:focus,.btn-primary[disabled]:focus,fieldset[disabled] .btn-primary:focus,.btn-primary.disabled.focus,.btn-primary[disabled].focus,fieldset[disabled] .btn-primary.focus,.btn-primary.disabled:active,.btn-primary[disabled]:active,fieldset[disabled] .btn-primary:active,.btn-primary.disabled.active,.btn-primary[disabled].active,fieldset[disabled] .btn-primary.active{background-color:#337ab7;border-color:#2e6da4}.btn-primary .badge{color:#337ab7;background-color:#fff}.btn-success{color:#fff;background-color:#5cb85c;border-color:#4cae4c}.btn-success:hover,.btn-success:focus,.btn-success.focus,.btn-success:active,.btn-success.active,.open>.dropdown-toggle.btn-success{color:#fff;background-color:#449d44;border-color:#398439}.btn-success:active,.btn-success.active,.open>.dropdown-toggle.btn-success{background-image:none}.btn-success.disabled,.btn-success[disabled],fieldset[disabled] .btn-success,.btn-success.disabled:hover,.btn-success[disabled]:hover,fieldset[disabled] .btn-success:hover,.btn-success.disabled:focus,.btn-success[disabled]:focus,fieldset[disabled] .btn-success:focus,.btn-success.disabled.focus,.btn-success[disabled].focus,fieldset[disabled] .btn-success.focus,.btn-success.disabled:active,.btn-success[disabled]:active,fieldset[disabled] .btn-success:active,.btn-success.disabled.active,.btn-success[disabled].active,fieldset[disabled] .btn-success.active{background-color:#5cb85c;border-color:#4cae4c}.btn-success .badge{color:#5cb85c;background-color:#fff}.btn-info{color:#fff;background-color:#5bc0de;border-color:#46b8da}.btn-info:hover,.btn-info:focus,.btn-info.focus,.btn-info:active,.btn-info.active,.open>.dropdown-toggle.btn-info{color:#fff;background-color:#31b0d5;border-color:#269abc}.btn-info:active,.btn-info.active,.open>.dropdown-toggle.btn-info{background-image:none}.btn-info.disabled,.btn-info[disabled],fieldset[disabled] .btn-info,.btn-info.disabled:hover,.btn-info[disabled]:hover,fieldset[disabled] .btn-info:hover,.btn-info.disabled:focus,.btn-info[disabled]:focus,fieldset[disabled] .btn-info:focus,.btn-info.disabled.focus,.btn-info[disabled].focus,fieldset[disabled] .btn-info.focus,.btn-info.disabled:active,.btn-info[disabled]:active,fieldset[disabled] .btn-info:active,.btn-info.disabled.active,.btn-info[disabled].active,fieldset[disabled] .btn-info.active{background-color:#5bc0de;border-color:#46b8da}.btn-info .badge{color:#5bc0de;background-color:#fff}.btn-warning{color:#fff;background-color:#f0ad4e;border-color:#eea236}.btn-warning:hover,.btn-warning:focus,.btn-warning.focus,.btn-warning:active,.btn-warning.active,.open>.dropdown-toggle.btn-warning{color:#fff;background-color:#ec971f;border-color:#d58512}.btn-warning:active,.btn-warning.active,.open>.dropdown-toggle.btn-warning{background-image:none}.btn-warning.disabled,.btn-warning[disabled],fieldset[disabled] .btn-warning,.btn-warning.disabled:hover,.btn-warning[disabled]:hover,fieldset[disabled] .btn-warning:hover,.btn-warning.disabled:focus,.btn-warning[disabled]:focus,fieldset[disabled] .btn-warning:focus,.btn-warning.disabled.focus,.btn-warning[disabled].focus,fieldset[disabled] .btn-warning.focus,.btn-warning.disabled:active,.btn-warning[disabled]:active,fieldset[disabled] .btn-warning:active,.btn-warning.disabled.active,.btn-warning[disabled].active,fieldset[disabled] .btn-warning.active{background-color:#f0ad4e;border-color:#eea236}.btn-warning .badge{color:#f0ad4e;background-color:#fff}.btn-danger{color:#fff;background-color:#d9534f;border-color:#d43f3a}.btn-danger:hover,.btn-danger:focus,.btn-danger.focus,.btn-danger:active,.btn-danger.active,.open>.dropdown-toggle.btn-danger{color:#fff;background-color:#c9302c;border-color:#ac2925}.btn-danger:active,.btn-danger.active,.open>.dropdown-toggle.btn-danger{background-image:none}.btn-danger.disabled,.btn-danger[disabled],fieldset[disabled] .btn-danger,.btn-danger.disabled:hover,.btn-danger[disabled]:hover,fieldset[disabled] .btn-danger:hover,.btn-danger.disabled:focus,.btn-danger[disabled]:focus,fieldset[disabled] .btn-danger:focus,.btn-danger.disabled.focus,.btn-danger[disabled].focus,fieldset[disabled] .btn-danger.focus,.btn-danger.disabled:active,.btn-danger[disabled]:active,fieldset[disabled] .btn-danger:active,.btn-danger.disabled.active,.btn-danger[disabled].active,fieldset[disabled] .btn-danger.active{background-color:#d9534f;border-color:#d43f3a}.btn-danger .badge{color:#d9534f;background-color:#fff}.btn-link{font-weight:400;color:#337ab7;border-radius:0}.btn-link,.btn-link:active,.btn-link.active,.btn-link[disabled],fieldset[disabled] .btn-link{background-color:transparent;-webkit-box-shadow:none;box-shadow:none}.btn-link,.btn-link:hover,.btn-link:focus,.btn-link:active{border-color:transparent}.btn-link:hover,.btn-link:focus{color:#23527c;text-decoration:underline;background-color:transparent}.btn-link[disabled]:hover,fieldset[disabled] .btn-link:hover,.btn-link[disabled]:focus,fieldset[disabled] .btn-link:focus{color:#777;text-decoration:none}.btn-lg,.btn-group-lg>.btn{padding:10px 16px;font-size:18px;line-height:1.33;border-radius:6px}.btn-sm,.btn-group-sm>.btn{padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}.btn-xs,.btn-group-xs>.btn{padding:1px 5px;font-size:12px;line-height:1.5;border-radius:3px}.btn-block{display:block;width:100%}.btn-block+.btn-block{margin-top:5px}input[type=submit].btn-block,input[type=reset].btn-block,input[type=button].btn-block{width:100%}.fade{opacity:0;-webkit-transition:opacity .15s linear;-o-transition:opacity .15s linear;transition:opacity .15s linear}.fade.in{opacity:1}.collapse{display:none;visibility:hidden}.collapse.in{display:block;visibility:visible}tr.collapse.in{display:table-row}tbody.collapse.in{display:table-row-group}.collapsing{position:relative;height:0;overflow:hidden;-webkit-transition-timing-function:ease;-o-transition-timing-function:ease;transition-timing-function:ease;-webkit-transition-duration:.35s;-o-transition-duration:.35s;transition-duration:.35s;-webkit-transition-property:height,visibility;-o-transition-property:height,visibility;transition-property:height,visibility}.caret{display:inline-block;width:0;height:0;margin-left:2px;vertical-align:middle;border-top:4px solid;border-right:4px solid transparent;border-left:4px solid transparent}.dropdown{position:relative}.dropdown-toggle:focus{outline:0}.dropdown-menu{position:absolute;top:100%;left:0;z-index:1000;display:none;float:left;min-width:160px;padding:5px 0;margin:2px 0 0;font-size:14px;text-align:left;list-style:none;background-color:#fff;-webkit-background-clip:padding-box;background-clip:padding-box;border:1px solid #ccc;border:1px solid rgba(0,0,0,.15);border-radius:4px;-webkit-box-shadow:0 6px 12px rgba(0,0,0,.175);box-shadow:0 6px 12px rgba(0,0,0,.175)}.dropdown-menu.pull-right{right:0;left:auto}.dropdown-menu .divider{height:1px;margin:9px 0;overflow:hidden;background-color:#e5e5e5}.dropdown-menu>li>a{display:block;padding:3px 20px;clear:both;font-weight:400;line-height:1.42857143;color:#333;white-space:nowrap}.dropdown-menu>li>a:hover,.dropdown-menu>li>a:focus{color:#262626;text-decoration:none;background-color:#f5f5f5}.dropdown-menu>.active>a,.dropdown-menu>.active>a:hover,.dropdown-menu>.active>a:focus{color:#fff;text-decoration:none;background-color:#337ab7;outline:0}.dropdown-menu>.disabled>a,.dropdown-menu>.disabled>a:hover,.dropdown-menu>.disabled>a:focus{color:#777}.dropdown-menu>.disabled>a:hover,.dropdown-menu>.disabled>a:focus{text-decoration:none;cursor:not-allowed;background-color:transparent;background-image:none;filter:progid:DXImageTransform.Microsoft.gradient(enabled=false)}.open>.dropdown-menu{display:block}.open>a{outline:0}.dropdown-menu-right{right:0;left:auto}.dropdown-menu-left{right:auto;left:0}.dropdown-header{display:block;padding:3px 20px;font-size:12px;line-height:1.42857143;color:#777;white-space:nowrap}.dropdown-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:990}.pull-right>.dropdown-menu{right:0;left:auto}.dropup .caret,.navbar-fixed-bottom .dropdown .caret{content:"";border-top:0;border-bottom:4px solid}.dropup .dropdown-menu,.navbar-fixed-bottom .dropdown .dropdown-menu{top:auto;bottom:100%;margin-bottom:1px}@media (min-width:768px){.navbar-right .dropdown-menu{right:0;left:auto}.navbar-right .dropdown-menu-left{right:auto;left:0}}.btn-group,.btn-group-vertical{position:relative;display:inline-block;vertical-align:middle}.btn-group>.btn,.btn-group-vertical>.btn{position:relative;float:left}.btn-group>.btn:hover,.btn-group-vertical>.btn:hover,.btn-group>.btn:focus,.btn-group-vertical>.btn:focus,.btn-group>.btn:active,.btn-group-vertical>.btn:active,.btn-group>.btn.active,.btn-group-vertical>.btn.active{z-index:2}.btn-group .btn+.btn,.btn-group .btn+.btn-group,.btn-group .btn-group+.btn,.btn-group .btn-group+.btn-group{margin-left:-1px}.btn-toolbar{margin-left:-5px}.btn-toolbar .btn-group,.btn-toolbar .input-group{float:left}.btn-toolbar>.btn,.btn-toolbar>.btn-group,.btn-toolbar>.input-group{margin-left:5px}.btn-group>.btn:not(:first-child):not(:last-child):not(.dropdown-toggle){border-radius:0}.btn-group>.btn:first-child{margin-left:0}.btn-group>.btn:first-child:not(:last-child):not(.dropdown-toggle){border-top-right-radius:0;border-bottom-right-radius:0}.btn-group>.btn:last-child:not(:first-child),.btn-group>.dropdown-toggle:not(:first-child){border-top-left-radius:0;border-bottom-left-radius:0}.btn-group>.btn-group{float:left}.btn-group>.btn-group:not(:first-child):not(:last-child)>.btn{border-radius:0}.btn-group>.btn-group:first-child>.btn:last-child,.btn-group>.btn-group:first-child>.dropdown-toggle{border-top-right-radius:0;border-bottom-right-radius:0}.btn-group>.btn-group:last-child>.btn:first-child{border-top-left-radius:0;border-bottom-left-radius:0}.btn-group .dropdown-toggle:active,.btn-group.open .dropdown-toggle{outline:0}.btn-group>.btn+.dropdown-toggle{padding-right:8px;padding-left:8px}.btn-group>.btn-lg+.dropdown-toggle{padding-right:12px;padding-left:12px}.btn-group.open .dropdown-toggle{-webkit-box-shadow:inset 0 3px 5px rgba(0,0,0,.125);box-shadow:inset 0 3px 5px rgba(0,0,0,.125)}.btn-group.open .dropdown-toggle.btn-link{-webkit-box-shadow:none;box-shadow:none}.btn .caret{margin-left:0}.btn-lg .caret{border-width:5px 5px 0;border-bottom-width:0}.dropup .btn-lg .caret{border-width:0 5px 5px}.btn-group-vertical>.btn,.btn-group-vertical>.btn-group,.btn-group-vertical>.btn-group>.btn{display:block;float:none;width:100%;max-width:100%}.btn-group-vertical>.btn-group>.btn{float:none}.btn-group-vertical>.btn+.btn,.btn-group-vertical>.btn+.btn-group,.btn-group-vertical>.btn-group+.btn,.btn-group-vertical>.btn-group+.btn-group{margin-top:-1px;margin-left:0}.btn-group-vertical>.btn:not(:first-child):not(:last-child){border-radius:0}.btn-group-vertical>.btn:first-child:not(:last-child){border-top-right-radius:4px;border-bottom-right-radius:0;border-bottom-left-radius:0}.btn-group-vertical>.btn:last-child:not(:first-child){border-top-left-radius:0;border-top-right-radius:0;border-bottom-left-radius:4px}.btn-group-vertical>.btn-group:not(:first-child):not(:last-child)>.btn{border-radius:0}.btn-group-vertical>.btn-group:first-child:not(:last-child)>.btn:last-child,.btn-group-vertical>.btn-group:first-child:not(:last-child)>.dropdown-toggle{border-bottom-right-radius:0;border-bottom-left-radius:0}.btn-group-vertical>.btn-group:last-child:not(:first-child)>.btn:first-child{border-top-left-radius:0;border-top-right-radius:0}.btn-group-justified{display:table;width:100%;table-layout:fixed;border-collapse:separate}.btn-group-justified>.btn,.btn-group-justified>.btn-group{display:table-cell;float:none;width:1%}.btn-group-justified>.btn-group .btn{width:100%}.btn-group-justified>.btn-group .dropdown-menu{left:auto}[data-toggle=buttons]>.btn input[type=radio],[data-toggle=buttons]>.btn-group>.btn input[type=radio],[data-toggle=buttons]>.btn input[type=checkbox],[data-toggle=buttons]>.btn-group>.btn input[type=checkbox]{position:absolute;clip:rect(0,0,0,0);pointer-events:none}.input-group{position:relative;display:table;border-collapse:separate}.input-group[class*=col-]{float:none;padding-right:0;padding-left:0}.input-group .form-control{position:relative;z-index:2;float:left;width:100%;margin-bottom:0}.input-group-lg>.form-control,.input-group-lg>.input-group-addon,.input-group-lg>.input-group-btn>.btn{height:46px;padding:10px 16px;font-size:18px;line-height:1.33;border-radius:6px}select.input-group-lg>.form-control,select.input-group-lg>.input-group-addon,select.input-group-lg>.input-group-btn>.btn{height:46px;line-height:46px}textarea.input-group-lg>.form-control,textarea.input-group-lg>.input-group-addon,textarea.input-group-lg>.input-group-btn>.btn,select[multiple].input-group-lg>.form-control,select[multiple].input-group-lg>.input-group-addon,select[multiple].input-group-lg>.input-group-btn>.btn{height:auto}.input-group-sm>.form-control,.input-group-sm>.input-group-addon,.input-group-sm>.input-group-btn>.btn{height:30px;padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}select.input-group-sm>.form-control,select.input-group-sm>.input-group-addon,select.input-group-sm>.input-group-btn>.btn{height:30px;line-height:30px}textarea.input-group-sm>.form-control,textarea.input-group-sm>.input-group-addon,textarea.input-group-sm>.input-group-btn>.btn,select[multiple].input-group-sm>.form-control,select[multiple].input-group-sm>.input-group-addon,select[multiple].input-group-sm>.input-group-btn>.btn{height:auto}.input-group-addon,.input-group-btn,.input-group .form-control{display:table-cell}.input-group-addon:not(:first-child):not(:last-child),.input-group-btn:not(:first-child):not(:last-child),.input-group .form-control:not(:first-child):not(:last-child){border-radius:0}.input-group-addon,.input-group-btn{width:1%;white-space:nowrap;vertical-align:middle}.input-group-addon{padding:6px 12px;font-size:14px;font-weight:400;line-height:1;color:#555;text-align:center;background-color:#eee;border:1px solid #ccc;border-radius:4px}.input-group-addon.input-sm{padding:5px 10px;font-size:12px;border-radius:3px}.input-group-addon.input-lg{padding:10px 16px;font-size:18px;border-radius:6px}.input-group-addon input[type=radio],.input-group-addon input[type=checkbox]{margin-top:0}.input-group .form-control:first-child,.input-group-addon:first-child,.input-group-btn:first-child>.btn,.input-group-btn:first-child>.btn-group>.btn,.input-group-btn:first-child>.dropdown-toggle,.input-group-btn:last-child>.btn:not(:last-child):not(.dropdown-toggle),.input-group-btn:last-child>.btn-group:not(:last-child)>.btn{border-top-right-radius:0;border-bottom-right-radius:0}.input-group-addon:first-child{border-right:0}.input-group .form-control:last-child,.input-group-addon:last-child,.input-group-btn:last-child>.btn,.input-group-btn:last-child>.btn-group>.btn,.input-group-btn:last-child>.dropdown-toggle,.input-group-btn:first-child>.btn:not(:first-child),.input-group-btn:first-child>.btn-group:not(:first-child)>.btn{border-top-left-radius:0;border-bottom-left-radius:0}.input-group-addon:last-child{border-left:0}.input-group-btn{position:relative;font-size:0;white-space:nowrap}.input-group-btn>.btn{position:relative}.input-group-btn>.btn+.btn{margin-left:-1px}.input-group-btn>.btn:hover,.input-group-btn>.btn:focus,.input-group-btn>.btn:active{z-index:2}.input-group-btn:first-child>.btn,.input-group-btn:first-child>.btn-group{margin-right:-1px}.input-group-btn:last-child>.btn,.input-group-btn:last-child>.btn-group{margin-left:-1px}.nav{padding-left:0;margin-bottom:0;list-style:none}.nav>li{position:relative;display:block}.nav>li>a{position:relative;display:block;padding:10px 15px}.nav>li>a:hover,.nav>li>a:focus{text-decoration:none;background-color:#eee}.nav>li.disabled>a{color:#777}.nav>li.disabled>a:hover,.nav>li.disabled>a:focus{color:#777;text-decoration:none;cursor:not-allowed;background-color:transparent}.nav .open>a,.nav .open>a:hover,.nav .open>a:focus{background-color:#eee;border-color:#337ab7}.nav .nav-divider{height:1px;margin:9px 0;overflow:hidden;background-color:#e5e5e5}.nav>li>a>img{max-width:none}.nav-tabs{border-bottom:1px solid #ddd}.nav-tabs>li{float:left;margin-bottom:-1px}.nav-tabs>li>a{margin-right:2px;line-height:1.42857143;border:1px solid transparent;border-radius:4px 4px 0 0}.nav-tabs>li>a:hover{border-color:#eee #eee #ddd}.nav-tabs>li.active>a,.nav-tabs>li.active>a:hover,.nav-tabs>li.active>a:focus{color:#555;cursor:default;background-color:#fff;border:1px solid #ddd;border-bottom-color:transparent}.nav-tabs.nav-justified{width:100%;border-bottom:0}.nav-tabs.nav-justified>li{float:none}.nav-tabs.nav-justified>li>a{margin-bottom:5px;text-align:center}.nav-tabs.nav-justified>.dropdown .dropdown-menu{top:auto;left:auto}@media (min-width:768px){.nav-tabs.nav-justified>li{display:table-cell;width:1%}.nav-tabs.nav-justified>li>a{margin-bottom:0}}.nav-tabs.nav-justified>li>a{margin-right:0;border-radius:4px}.nav-tabs.nav-justified>.active>a,.nav-tabs.nav-justified>.active>a:hover,.nav-tabs.nav-justified>.active>a:focus{border:1px solid #ddd}@media (min-width:768px){.nav-tabs.nav-justified>li>a{border-bottom:1px solid #ddd;border-radius:4px 4px 0 0}.nav-tabs.nav-justified>.active>a,.nav-tabs.nav-justified>.active>a:hover,.nav-tabs.nav-justified>.active>a:focus{border-bottom-color:#fff}}.nav-pills>li{float:left}.nav-pills>li>a{border-radius:4px}.nav-pills>li+li{margin-left:2px}.nav-pills>li.active>a,.nav-pills>li.active>a:hover,.nav-pills>li.active>a:focus{color:#fff;background-color:#337ab7}.nav-stacked>li{float:none}.nav-stacked>li+li{margin-top:2px;margin-left:0}.nav-justified{width:100%}.nav-justified>li{float:none}.nav-justified>li>a{margin-bottom:5px;text-align:center}.nav-justified>.dropdown .dropdown-menu{top:auto;left:auto}@media (min-width:768px){.nav-justified>li{display:table-cell;width:1%}.nav-justified>li>a{margin-bottom:0}}.nav-tabs-justified{border-bottom:0}.nav-tabs-justified>li>a{margin-right:0;border-radius:4px}.nav-tabs-justified>.active>a,.nav-tabs-justified>.active>a:hover,.nav-tabs-justified>.active>a:focus{border:1px solid #ddd}@media (min-width:768px){.nav-tabs-justified>li>a{border-bottom:1px solid #ddd;border-radius:4px 4px 0 0}.nav-tabs-justified>.active>a,.nav-tabs-justified>.active>a:hover,.nav-tabs-justified>.active>a:focus{border-bottom-color:#fff}}.tab-content>.tab-pane{display:none;visibility:hidden}.tab-content>.active{display:block;visibility:visible}.nav-tabs .dropdown-menu{margin-top:-1px;border-top-left-radius:0;border-top-right-radius:0}.navbar{position:relative;min-height:50px;margin-bottom:20px;border:1px solid transparent}@media (min-width:768px){.navbar{border-radius:4px}}@media (min-width:768px){.navbar-header{float:left}}.navbar-collapse{padding-right:15px;padding-left:15px;overflow-x:visible;-webkit-overflow-scrolling:touch;border-top:1px solid transparent;-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,.1);box-shadow:inset 0 1px 0 rgba(255,255,255,.1)}.navbar-collapse.in{overflow-y:auto}@media (min-width:768px){.navbar-collapse{width:auto;border-top:0;-webkit-box-shadow:none;box-shadow:none}.navbar-collapse.collapse{display:block!important;height:auto!important;padding-bottom:0;overflow:visible!important;visibility:visible!important}.navbar-collapse.in{overflow-y:visible}.navbar-fixed-top .navbar-collapse,.navbar-static-top .navbar-collapse,.navbar-fixed-bottom .navbar-collapse{padding-right:0;padding-left:0}}.navbar-fixed-top .navbar-collapse,.navbar-fixed-bottom .navbar-collapse{max-height:340px}@media (max-device-width:480px) and (orientation:landscape){.navbar-fixed-top .navbar-collapse,.navbar-fixed-bottom .navbar-collapse{max-height:200px}}.container>.navbar-header,.container-fluid>.navbar-header,.container>.navbar-collapse,.container-fluid>.navbar-collapse{margin-right:-15px;margin-left:-15px}@media (min-width:768px){.container>.navbar-header,.container-fluid>.navbar-header,.container>.navbar-collapse,.container-fluid>.navbar-collapse{margin-right:0;margin-left:0}}.navbar-static-top{z-index:1000;border-width:0 0 1px}@media (min-width:768px){.navbar-static-top{border-radius:0}}.navbar-fixed-top,.navbar-fixed-bottom{position:fixed;right:0;left:0;z-index:1030}@media (min-width:768px){.navbar-fixed-top,.navbar-fixed-bottom{border-radius:0}}.navbar-fixed-top{top:0;border-width:0 0 1px}.navbar-fixed-bottom{bottom:0;margin-bottom:0;border-width:1px 0 0}.navbar-brand{float:left;height:50px;padding:15px 15px;font-size:18px;line-height:20px}.navbar-brand:hover,.navbar-brand:focus{text-decoration:none}.navbar-brand>img{display:block}@media (min-width:768px){.navbar>.container .navbar-brand,.navbar>.container-fluid .navbar-brand{margin-left:-15px}}.navbar-toggle{position:relative;float:right;padding:9px 10px;margin-top:8px;margin-right:15px;margin-bottom:8px;background-color:transparent;background-image:none;border:1px solid transparent;border-radius:4px}.navbar-toggle:focus{outline:0}.navbar-toggle .icon-bar{display:block;width:22px;height:2px;border-radius:1px}.navbar-toggle .icon-bar+.icon-bar{margin-top:4px}@media (min-width:768px){.navbar-toggle{display:none}}.navbar-nav{margin:7.5px -15px}.navbar-nav>li>a{padding-top:10px;padding-bottom:10px;line-height:20px}@media (max-width:767px){.navbar-nav .open .dropdown-menu{position:static;float:none;width:auto;margin-top:0;background-color:transparent;border:0;-webkit-box-shadow:none;box-shadow:none}.navbar-nav .open .dropdown-menu>li>a,.navbar-nav .open .dropdown-menu .dropdown-header{padding:5px 15px 5px 25px}.navbar-nav .open .dropdown-menu>li>a{line-height:20px}.navbar-nav .open .dropdown-menu>li>a:hover,.navbar-nav .open .dropdown-menu>li>a:focus{background-image:none}}@media (min-width:768px){.navbar-nav{float:left;margin:0}.navbar-nav>li{float:left}.navbar-nav>li>a{padding-top:15px;padding-bottom:15px}}.navbar-form{padding:10px 15px;margin-top:8px;margin-right:-15px;margin-bottom:8px;margin-left:-15px;border-top:1px solid transparent;border-bottom:1px solid transparent;-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,.1),0 1px 0 rgba(255,255,255,.1);box-shadow:inset 0 1px 0 rgba(255,255,255,.1),0 1px 0 rgba(255,255,255,.1)}@media (min-width:768px){.navbar-form .form-group{display:inline-block;margin-bottom:0;vertical-align:middle}.navbar-form .form-control{display:inline-block;width:auto;vertical-align:middle}.navbar-form .form-control-static{display:inline-block}.navbar-form .input-group{display:inline-table;vertical-align:middle}.navbar-form .input-group .input-group-addon,.navbar-form .input-group .input-group-btn,.navbar-form .input-group .form-control{width:auto}.navbar-form .input-group>.form-control{width:100%}.navbar-form .control-label{margin-bottom:0;vertical-align:middle}.navbar-form .radio,.navbar-form .checkbox{display:inline-block;margin-top:0;margin-bottom:0;vertical-align:middle}.navbar-form .radio label,.navbar-form .checkbox label{padding-left:0}.navbar-form .radio input[type=radio],.navbar-form .checkbox input[type=checkbox]{position:relative;margin-left:0}.navbar-form .has-feedback .form-control-feedback{top:0}}@media (max-width:767px){.navbar-form .form-group{margin-bottom:5px}.navbar-form .form-group:last-child{margin-bottom:0}}@media (min-width:768px){.navbar-form{width:auto;padding-top:0;padding-bottom:0;margin-right:0;margin-left:0;border:0;-webkit-box-shadow:none;box-shadow:none}}.navbar-nav>li>.dropdown-menu{margin-top:0;border-top-left-radius:0;border-top-right-radius:0}.navbar-fixed-bottom .navbar-nav>li>.dropdown-menu{border-top-left-radius:4px;border-top-right-radius:4px;border-bottom-right-radius:0;border-bottom-left-radius:0}.navbar-btn{margin-top:8px;margin-bottom:8px}.navbar-btn.btn-sm{margin-top:10px;margin-bottom:10px}.navbar-btn.btn-xs{margin-top:14px;margin-bottom:14px}.navbar-text{margin-top:15px;margin-bottom:15px}@media (min-width:768px){.navbar-text{float:left;margin-right:15px;margin-left:15px}}@media (min-width:768px){.navbar-left{float:left!important}.navbar-right{float:right!important;margin-right:-15px}.navbar-right~.navbar-right{margin-right:0}}.navbar-default{background-color:#f8f8f8;border-color:#e7e7e7}.navbar-default .navbar-brand{color:#777}.navbar-default .navbar-brand:hover,.navbar-default .navbar-brand:focus{color:#5e5e5e;background-color:transparent}.navbar-default .navbar-text{color:#777}.navbar-default .navbar-nav>li>a{color:#777}.navbar-default .navbar-nav>li>a:hover,.navbar-default .navbar-nav>li>a:focus{color:#333;background-color:transparent}.navbar-default .navbar-nav>.active>a,.navbar-default .navbar-nav>.active>a:hover,.navbar-default .navbar-nav>.active>a:focus{color:#555;background-color:#e7e7e7}.navbar-default .navbar-nav>.disabled>a,.navbar-default .navbar-nav>.disabled>a:hover,.navbar-default .navbar-nav>.disabled>a:focus{color:#ccc;background-color:transparent}.navbar-default .navbar-toggle{border-color:#ddd}.navbar-default .navbar-toggle:hover,.navbar-default .navbar-toggle:focus{background-color:#ddd}.navbar-default .navbar-toggle .icon-bar{background-color:#888}.navbar-default .navbar-collapse,.navbar-default .navbar-form{border-color:#e7e7e7}.navbar-default .navbar-nav>.open>a,.navbar-default .navbar-nav>.open>a:hover,.navbar-default .navbar-nav>.open>a:focus{color:#555;background-color:#e7e7e7}@media (max-width:767px){.navbar-default .navbar-nav .open .dropdown-menu>li>a{color:#777}.navbar-default .navbar-nav .open .dropdown-menu>li>a:hover,.navbar-default .navbar-nav .open .dropdown-menu>li>a:focus{color:#333;background-color:transparent}.navbar-default .navbar-nav .open .dropdown-menu>.active>a,.navbar-default .navbar-nav .open .dropdown-menu>.active>a:hover,.navbar-default .navbar-nav .open .dropdown-menu>.active>a:focus{color:#555;background-color:#e7e7e7}.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a,.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a:hover,.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a:focus{color:#ccc;background-color:transparent}}.navbar-default .navbar-link{color:#777}.navbar-default .navbar-link:hover{color:#333}.navbar-default .btn-link{color:#777}.navbar-default .btn-link:hover,.navbar-default .btn-link:focus{color:#333}.navbar-default .btn-link[disabled]:hover,fieldset[disabled] .navbar-default .btn-link:hover,.navbar-default .btn-link[disabled]:focus,fieldset[disabled] .navbar-default .btn-link:focus{color:#ccc}.navbar-inverse{background-color:#222;border-color:#080808}.navbar-inverse .navbar-brand{color:#9d9d9d}.navbar-inverse .navbar-brand:hover,.navbar-inverse .navbar-brand:focus{color:#fff;background-color:transparent}.navbar-inverse .navbar-text{color:#9d9d9d}.navbar-inverse .navbar-nav>li>a{color:#9d9d9d}.navbar-inverse .navbar-nav>li>a:hover,.navbar-inverse .navbar-nav>li>a:focus{color:#fff;background-color:transparent}.navbar-inverse .navbar-nav>.active>a,.navbar-inverse .navbar-nav>.active>a:hover,.navbar-inverse .navbar-nav>.active>a:focus{color:#fff;background-color:#080808}.navbar-inverse .navbar-nav>.disabled>a,.navbar-inverse .navbar-nav>.disabled>a:hover,.navbar-inverse .navbar-nav>.disabled>a:focus{color:#444;background-color:transparent}.navbar-inverse .navbar-toggle{border-color:#333}.navbar-inverse .navbar-toggle:hover,.navbar-inverse .navbar-toggle:focus{background-color:#333}.navbar-inverse .navbar-toggle .icon-bar{background-color:#fff}.navbar-inverse .navbar-collapse,.navbar-inverse .navbar-form{border-color:#101010}.navbar-inverse .navbar-nav>.open>a,.navbar-inverse .navbar-nav>.open>a:hover,.navbar-inverse .navbar-nav>.open>a:focus{color:#fff;background-color:#080808}@media (max-width:767px){.navbar-inverse .navbar-nav .open .dropdown-menu>.dropdown-header{border-color:#080808}.navbar-inverse .navbar-nav .open .dropdown-menu .divider{background-color:#080808}.navbar-inverse .navbar-nav .open .dropdown-menu>li>a{color:#9d9d9d}.navbar-inverse .navbar-nav .open .dropdown-menu>li>a:hover,.navbar-inverse .navbar-nav .open .dropdown-menu>li>a:focus{color:#fff;background-color:transparent}.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a,.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a:hover,.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a:focus{color:#fff;background-color:#080808}.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a,.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a:hover,.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a:focus{color:#444;background-color:transparent}}.navbar-inverse .navbar-link{color:#9d9d9d}.navbar-inverse .navbar-link:hover{color:#fff}.navbar-inverse .btn-link{color:#9d9d9d}.navbar-inverse .btn-link:hover,.navbar-inverse .btn-link:focus{color:#fff}.navbar-inverse .btn-link[disabled]:hover,fieldset[disabled] .navbar-inverse .btn-link:hover,.navbar-inverse .btn-link[disabled]:focus,fieldset[disabled] .navbar-inverse .btn-link:focus{color:#444}.breadcrumb{padding:8px 15px;margin-bottom:20px;list-style:none;background-color:#f5f5f5;border-radius:4px}.breadcrumb>li{display:inline-block}.breadcrumb>li+li:before{padding:0 5px;color:#ccc;content:"/\00a0"}.breadcrumb>.active{color:#777}.pagination{display:inline-block;padding-left:0;margin:20px 0;border-radius:4px}.pagination>li{display:inline}.pagination>li>a,.pagination>li>span{position:relative;float:left;padding:6px 12px;margin-left:-1px;line-height:1.42857143;color:#337ab7;text-decoration:none;background-color:#fff;border:1px solid #ddd}.pagination>li:first-child>a,.pagination>li:first-child>span{margin-left:0;border-top-left-radius:4px;border-bottom-left-radius:4px}.pagination>li:last-child>a,.pagination>li:last-child>span{border-top-right-radius:4px;border-bottom-right-radius:4px}.pagination>li>a:hover,.pagination>li>span:hover,.pagination>li>a:focus,.pagination>li>span:focus{color:#23527c;background-color:#eee;border-color:#ddd}.pagination>.active>a,.pagination>.active>span,.pagination>.active>a:hover,.pagination>.active>span:hover,.pagination>.active>a:focus,.pagination>.active>span:focus{z-index:2;color:#fff;cursor:default;background-color:#337ab7;border-color:#337ab7}.pagination>.disabled>span,.pagination>.disabled>span:hover,.pagination>.disabled>span:focus,.pagination>.disabled>a,.pagination>.disabled>a:hover,.pagination>.disabled>a:focus{color:#777;cursor:not-allowed;background-color:#fff;border-color:#ddd}.pagination-lg>li>a,.pagination-lg>li>span{padding:10px 16px;font-size:18px}.pagination-lg>li:first-child>a,.pagination-lg>li:first-child>span{border-top-left-radius:6px;border-bottom-left-radius:6px}.pagination-lg>li:last-child>a,.pagination-lg>li:last-child>span{border-top-right-radius:6px;border-bottom-right-radius:6px}.pagination-sm>li>a,.pagination-sm>li>span{padding:5px 10px;font-size:12px}.pagination-sm>li:first-child>a,.pagination-sm>li:first-child>span{border-top-left-radius:3px;border-bottom-left-radius:3px}.pagination-sm>li:last-child>a,.pagination-sm>li:last-child>span{border-top-right-radius:3px;border-bottom-right-radius:3px}.pager{padding-left:0;margin:20px 0;text-align:center;list-style:none}.pager li{display:inline}.pager li>a,.pager li>span{display:inline-block;padding:5px 14px;background-color:#fff;border:1px solid #ddd;border-radius:15px}.pager li>a:hover,.pager li>a:focus{text-decoration:none;background-color:#eee}.pager .next>a,.pager .next>span{float:right}.pager .previous>a,.pager .previous>span{float:left}.pager .disabled>a,.pager .disabled>a:hover,.pager .disabled>a:focus,.pager .disabled>span{color:#777;cursor:not-allowed;background-color:#fff}.label{display:inline;padding:.2em .6em .3em;font-size:75%;font-weight:700;line-height:1;color:#fff;text-align:center;white-space:nowrap;vertical-align:baseline;border-radius:.25em}a.label:hover,a.label:focus{color:#fff;text-decoration:none;cursor:pointer}.label:empty{display:none}.btn .label{position:relative;top:-1px}.label-default{background-color:#777}.label-default[href]:hover,.label-default[href]:focus{background-color:#5e5e5e}.label-primary{background-color:#337ab7}.label-primary[href]:hover,.label-primary[href]:focus{background-color:#286090}.label-success{background-color:#5cb85c}.label-success[href]:hover,.label-success[href]:focus{background-color:#449d44}.label-info{background-color:#5bc0de}.label-info[href]:hover,.label-info[href]:focus{background-color:#31b0d5}.label-warning{background-color:#f0ad4e}.label-warning[href]:hover,.label-warning[href]:focus{background-color:#ec971f}.label-danger{background-color:#d9534f}.label-danger[href]:hover,.label-danger[href]:focus{background-color:#c9302c}.badge{display:inline-block;min-width:10px;padding:3px 7px;font-size:12px;font-weight:700;line-height:1;color:#fff;text-align:center;white-space:nowrap;vertical-align:baseline;background-color:#777;border-radius:10px}.badge:empty{display:none}.btn .badge{position:relative;top:-1px}.btn-xs .badge{top:0;padding:1px 5px}a.badge:hover,a.badge:focus{color:#fff;text-decoration:none;cursor:pointer}.list-group-item.active>.badge,.nav-pills>.active>a>.badge{color:#337ab7;background-color:#fff}.list-group-item>.badge{float:right}.list-group-item>.badge+.badge{margin-right:5px}.nav-pills>li>a>.badge{margin-left:3px}.jumbotron{padding:30px 15px;margin-bottom:30px;color:inherit;background-color:#eee}.jumbotron h1,.jumbotron .h1{color:inherit}.jumbotron p{margin-bottom:15px;font-size:21px;font-weight:200}.jumbotron>hr{border-top-color:#d5d5d5}.container .jumbotron,.container-fluid .jumbotron{border-radius:6px}.jumbotron .container{max-width:100%}@media screen and (min-width:768px){.jumbotron{padding:48px 0}.container .jumbotron,.container-fluid .jumbotron{padding-right:60px;padding-left:60px}.jumbotron h1,.jumbotron .h1{font-size:63px}}.thumbnail{display:block;padding:4px;margin-bottom:20px;line-height:1.42857143;background-color:#fff;border:1px solid #ddd;border-radius:4px;-webkit-transition:border .2s ease-in-out;-o-transition:border .2s ease-in-out;transition:border .2s ease-in-out}.thumbnail>img,.thumbnail a>img{margin-right:auto;margin-left:auto}a.thumbnail:hover,a.thumbnail:focus,a.thumbnail.active{border-color:#337ab7}.thumbnail .caption{padding:9px;color:#333}.alert{padding:15px;margin-bottom:20px;border:1px solid transparent;border-radius:4px}.alert h4{margin-top:0;color:inherit}.alert .alert-link{font-weight:700}.alert>p,.alert>ul{margin-bottom:0}.alert>p+p{margin-top:5px}.alert-dismissable,.alert-dismissible{padding-right:35px}.alert-dismissable .close,.alert-dismissible .close{position:relative;top:-2px;right:-21px;color:inherit}.alert-success{color:#3c763d;background-color:#dff0d8;border-color:#d6e9c6}.alert-success hr{border-top-color:#c9e2b3}.alert-success .alert-link{color:#2b542c}.alert-info{color:#31708f;background-color:#d9edf7;border-color:#bce8f1}.alert-info hr{border-top-color:#a6e1ec}.alert-info .alert-link{color:#245269}.alert-warning{color:#8a6d3b;background-color:#fcf8e3;border-color:#faebcc}.alert-warning hr{border-top-color:#f7e1b5}.alert-warning .alert-link{color:#66512c}.alert-danger{color:#a94442;background-color:#f2dede;border-color:#ebccd1}.alert-danger hr{border-top-color:#e4b9c0}.alert-danger .alert-link{color:#843534}@-webkit-keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}@-o-keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}@keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}.progress{height:20px;margin-bottom:20px;overflow:hidden;background-color:#f5f5f5;border-radius:4px;-webkit-box-shadow:inset 0 1px 2px rgba(0,0,0,.1);box-shadow:inset 0 1px 2px rgba(0,0,0,.1)}.progress-bar{float:left;width:0;height:100%;font-size:12px;line-height:20px;color:#fff;text-align:center;background-color:#337ab7;-webkit-box-shadow:inset 0 -1px 0 rgba(0,0,0,.15);box-shadow:inset 0 -1px 0 rgba(0,0,0,.15);-webkit-transition:width .6s ease;-o-transition:width .6s ease;transition:width .6s ease}.progress-striped .progress-bar,.progress-bar-striped{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);-webkit-background-size:40px 40px;background-size:40px 40px}.progress.active .progress-bar,.progress-bar.active{-webkit-animation:progress-bar-stripes 2s linear infinite;-o-animation:progress-bar-stripes 2s linear infinite;animation:progress-bar-stripes 2s linear infinite}.progress-bar-success{background-color:#5cb85c}.progress-striped .progress-bar-success{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent)}.progress-bar-info{background-color:#5bc0de}.progress-striped .progress-bar-info{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent)}.progress-bar-warning{background-color:#f0ad4e}.progress-striped .progress-bar-warning{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent)}.progress-bar-danger{background-color:#d9534f}.progress-striped .progress-bar-danger{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent)}.media{margin-top:15px}.media:first-child{margin-top:0}.media-right,.media>.pull-right{padding-left:10px}.media-left,.media>.pull-left{padding-right:10px}.media-left,.media-right,.media-body{display:table-cell;vertical-align:top}.media-middle{vertical-align:middle}.media-bottom{vertical-align:bottom}.media-heading{margin-top:0;margin-bottom:5px}.media-list{padding-left:0;list-style:none}.list-group{padding-left:0;margin-bottom:20px}.list-group-item{position:relative;display:block;padding:10px 15px;margin-bottom:-1px;background-color:#fff;border:1px solid #ddd}.list-group-item:first-child{border-top-left-radius:4px;border-top-right-radius:4px}.list-group-item:last-child{margin-bottom:0;border-bottom-right-radius:4px;border-bottom-left-radius:4px}a.list-group-item{color:#555}a.list-group-item .list-group-item-heading{color:#333}a.list-group-item:hover,a.list-group-item:focus{color:#555;text-decoration:none;background-color:#f5f5f5}.list-group-item.disabled,.list-group-item.disabled:hover,.list-group-item.disabled:focus{color:#777;cursor:not-allowed;background-color:#eee}.list-group-item.disabled .list-group-item-heading,.list-group-item.disabled:hover .list-group-item-heading,.list-group-item.disabled:focus .list-group-item-heading{color:inherit}.list-group-item.disabled .list-group-item-text,.list-group-item.disabled:hover .list-group-item-text,.list-group-item.disabled:focus .list-group-item-text{color:#777}.list-group-item.active,.list-group-item.active:hover,.list-group-item.active:focus{z-index:2;color:#fff;background-color:#337ab7;border-color:#337ab7}.list-group-item.active .list-group-item-heading,.list-group-item.active:hover .list-group-item-heading,.list-group-item.active:focus .list-group-item-heading,.list-group-item.active .list-group-item-heading>small,.list-group-item.active:hover .list-group-item-heading>small,.list-group-item.active:focus .list-group-item-heading>small,.list-group-item.active .list-group-item-heading>.small,.list-group-item.active:hover .list-group-item-heading>.small,.list-group-item.active:focus .list-group-item-heading>.small{color:inherit}.list-group-item.active .list-group-item-text,.list-group-item.active:hover .list-group-item-text,.list-group-item.active:focus .list-group-item-text{color:#c7ddef}.list-group-item-success{color:#3c763d;background-color:#dff0d8}a.list-group-item-success{color:#3c763d}a.list-group-item-success .list-group-item-heading{color:inherit}a.list-group-item-success:hover,a.list-group-item-success:focus{color:#3c763d;background-color:#d0e9c6}a.list-group-item-success.active,a.list-group-item-success.active:hover,a.list-group-item-success.active:focus{color:#fff;background-color:#3c763d;border-color:#3c763d}.list-group-item-info{color:#31708f;background-color:#d9edf7}a.list-group-item-info{color:#31708f}a.list-group-item-info .list-group-item-heading{color:inherit}a.list-group-item-info:hover,a.list-group-item-info:focus{color:#31708f;background-color:#c4e3f3}a.list-group-item-info.active,a.list-group-item-info.active:hover,a.list-group-item-info.active:focus{color:#fff;background-color:#31708f;border-color:#31708f}.list-group-item-warning{color:#8a6d3b;background-color:#fcf8e3}a.list-group-item-warning{color:#8a6d3b}a.list-group-item-warning .list-group-item-heading{color:inherit}a.list-group-item-warning:hover,a.list-group-item-warning:focus{color:#8a6d3b;background-color:#faf2cc}a.list-group-item-warning.active,a.list-group-item-warning.active:hover,a.list-group-item-warning.active:focus{color:#fff;background-color:#8a6d3b;border-color:#8a6d3b}.list-group-item-danger{color:#a94442;background-color:#f2dede}a.list-group-item-danger{color:#a94442}a.list-group-item-danger .list-group-item-heading{color:inherit}a.list-group-item-danger:hover,a.list-group-item-danger:focus{color:#a94442;background-color:#ebcccc}a.list-group-item-danger.active,a.list-group-item-danger.active:hover,a.list-group-item-danger.active:focus{color:#fff;background-color:#a94442;border-color:#a94442}.list-group-item-heading{margin-top:0;margin-bottom:5px}.list-group-item-text{margin-bottom:0;line-height:1.3}.panel{margin-bottom:20px;background-color:#fff;border:1px solid transparent;border-radius:4px;-webkit-box-shadow:0 1px 1px rgba(0,0,0,.05);box-shadow:0 1px 1px rgba(0,0,0,.05)}.panel-body{padding:15px}.panel-heading{padding:10px 15px;border-bottom:1px solid transparent;border-top-left-radius:3px;border-top-right-radius:3px}.panel-heading>.dropdown .dropdown-toggle{color:inherit}.panel-title{margin-top:0;margin-bottom:0;font-size:16px;color:inherit}.panel-title>a{color:inherit}.panel-footer{padding:10px 15px;background-color:#f5f5f5;border-top:1px solid #ddd;border-bottom-right-radius:3px;border-bottom-left-radius:3px}.panel>.list-group,.panel>.panel-collapse>.list-group{margin-bottom:0}.panel>.list-group .list-group-item,.panel>.panel-collapse>.list-group .list-group-item{border-width:1px 0;border-radius:0}.panel>.list-group:first-child .list-group-item:first-child,.panel>.panel-collapse>.list-group:first-child .list-group-item:first-child{border-top:0;border-top-left-radius:3px;border-top-right-radius:3px}.panel>.list-group:last-child .list-group-item:last-child,.panel>.panel-collapse>.list-group:last-child .list-group-item:last-child{border-bottom:0;border-bottom-right-radius:3px;border-bottom-left-radius:3px}.panel-heading+.list-group .list-group-item:first-child{border-top-width:0}.list-group+.panel-footer{border-top-width:0}.panel>.table,.panel>.table-responsive>.table,.panel>.panel-collapse>.table{margin-bottom:0}.panel>.table caption,.panel>.table-responsive>.table caption,.panel>.panel-collapse>.table caption{padding-right:15px;padding-left:15px}.panel>.table:first-child,.panel>.table-responsive:first-child>.table:first-child{border-top-left-radius:3px;border-top-right-radius:3px}.panel>.table:first-child>thead:first-child>tr:first-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child,.panel>.table:first-child>tbody:first-child>tr:first-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child{border-top-left-radius:3px;border-top-right-radius:3px}.panel>.table:first-child>thead:first-child>tr:first-child td:first-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child td:first-child,.panel>.table:first-child>tbody:first-child>tr:first-child td:first-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child td:first-child,.panel>.table:first-child>thead:first-child>tr:first-child th:first-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child th:first-child,.panel>.table:first-child>tbody:first-child>tr:first-child th:first-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child th:first-child{border-top-left-radius:3px}.panel>.table:first-child>thead:first-child>tr:first-child td:last-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child td:last-child,.panel>.table:first-child>tbody:first-child>tr:first-child td:last-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child td:last-child,.panel>.table:first-child>thead:first-child>tr:first-child th:last-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child th:last-child,.panel>.table:first-child>tbody:first-child>tr:first-child th:last-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child th:last-child{border-top-right-radius:3px}.panel>.table:last-child,.panel>.table-responsive:last-child>.table:last-child{border-bottom-right-radius:3px;border-bottom-left-radius:3px}.panel>.table:last-child>tbody:last-child>tr:last-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child,.panel>.table:last-child>tfoot:last-child>tr:last-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child{border-bottom-right-radius:3px;border-bottom-left-radius:3px}.panel>.table:last-child>tbody:last-child>tr:last-child td:first-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child td:first-child,.panel>.table:last-child>tfoot:last-child>tr:last-child td:first-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child td:first-child,.panel>.table:last-child>tbody:last-child>tr:last-child th:first-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child th:first-child,.panel>.table:last-child>tfoot:last-child>tr:last-child th:first-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child th:first-child{border-bottom-left-radius:3px}.panel>.table:last-child>tbody:last-child>tr:last-child td:last-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child td:last-child,.panel>.table:last-child>tfoot:last-child>tr:last-child td:last-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child td:last-child,.panel>.table:last-child>tbody:last-child>tr:last-child th:last-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child th:last-child,.panel>.table:last-child>tfoot:last-child>tr:last-child th:last-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child th:last-child{border-bottom-right-radius:3px}.panel>.panel-body+.table,.panel>.panel-body+.table-responsive,.panel>.table+.panel-body,.panel>.table-responsive+.panel-body{border-top:1px solid #ddd}.panel>.table>tbody:first-child>tr:first-child th,.panel>.table>tbody:first-child>tr:first-child td{border-top:0}.panel>.table-bordered,.panel>.table-responsive>.table-bordered{border:0}.panel>.table-bordered>thead>tr>th:first-child,.panel>.table-responsive>.table-bordered>thead>tr>th:first-child,.panel>.table-bordered>tbody>tr>th:first-child,.panel>.table-responsive>.table-bordered>tbody>tr>th:first-child,.panel>.table-bordered>tfoot>tr>th:first-child,.panel>.table-responsive>.table-bordered>tfoot>tr>th:first-child,.panel>.table-bordered>thead>tr>td:first-child,.panel>.table-responsive>.table-bordered>thead>tr>td:first-child,.panel>.table-bordered>tbody>tr>td:first-child,.panel>.table-responsive>.table-bordered>tbody>tr>td:first-child,.panel>.table-bordered>tfoot>tr>td:first-child,.panel>.table-responsive>.table-bordered>tfoot>tr>td:first-child{border-left:0}.panel>.table-bordered>thead>tr>th:last-child,.panel>.table-responsive>.table-bordered>thead>tr>th:last-child,.panel>.table-bordered>tbody>tr>th:last-child,.panel>.table-responsive>.table-bordered>tbody>tr>th:last-child,.panel>.table-bordered>tfoot>tr>th:last-child,.panel>.table-responsive>.table-bordered>tfoot>tr>th:last-child,.panel>.table-bordered>thead>tr>td:last-child,.panel>.table-responsive>.table-bordered>thead>tr>td:last-child,.panel>.table-bordered>tbody>tr>td:last-child,.panel>.table-responsive>.table-bordered>tbody>tr>td:last-child,.panel>.table-bordered>tfoot>tr>td:last-child,.panel>.table-responsive>.table-bordered>tfoot>tr>td:last-child{border-right:0}.panel>.table-bordered>thead>tr:first-child>td,.panel>.table-responsive>.table-bordered>thead>tr:first-child>td,.panel>.table-bordered>tbody>tr:first-child>td,.panel>.table-responsive>.table-bordered>tbody>tr:first-child>td,.panel>.table-bordered>thead>tr:first-child>th,.panel>.table-responsive>.table-bordered>thead>tr:first-child>th,.panel>.table-bordered>tbody>tr:first-child>th,.panel>.table-responsive>.table-bordered>tbody>tr:first-child>th{border-bottom:0}.panel>.table-bordered>tbody>tr:last-child>td,.panel>.table-responsive>.table-bordered>tbody>tr:last-child>td,.panel>.table-bordered>tfoot>tr:last-child>td,.panel>.table-responsive>.table-bordered>tfoot>tr:last-child>td,.panel>.table-bordered>tbody>tr:last-child>th,.panel>.table-responsive>.table-bordered>tbody>tr:last-child>th,.panel>.table-bordered>tfoot>tr:last-child>th,.panel>.table-responsive>.table-bordered>tfoot>tr:last-child>th{border-bottom:0}.panel>.table-responsive{margin-bottom:0;border:0}.panel-group{margin-bottom:20px}.panel-group .panel{margin-bottom:0;border-radius:4px}.panel-group .panel+.panel{margin-top:5px}.panel-group .panel-heading{border-bottom:0}.panel-group .panel-heading+.panel-collapse>.panel-body,.panel-group .panel-heading+.panel-collapse>.list-group{border-top:1px solid #ddd}.panel-group .panel-footer{border-top:0}.panel-group .panel-footer+.panel-collapse .panel-body{border-bottom:1px solid #ddd}.panel-default{border-color:#ddd}.panel-default>.panel-heading{color:#333;background-color:#f5f5f5;border-color:#ddd}.panel-default>.panel-heading+.panel-collapse>.panel-body{border-top-color:#ddd}.panel-default>.panel-heading .badge{color:#f5f5f5;background-color:#333}.panel-default>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#ddd}.panel-primary{border-color:#337ab7}.panel-primary>.panel-heading{color:#fff;background-color:#337ab7;border-color:#337ab7}.panel-primary>.panel-heading+.panel-collapse>.panel-body{border-top-color:#337ab7}.panel-primary>.panel-heading .badge{color:#337ab7;background-color:#fff}.panel-primary>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#337ab7}.panel-success{border-color:#d6e9c6}.panel-success>.panel-heading{color:#3c763d;background-color:#dff0d8;border-color:#d6e9c6}.panel-success>.panel-heading+.panel-collapse>.panel-body{border-top-color:#d6e9c6}.panel-success>.panel-heading .badge{color:#dff0d8;background-color:#3c763d}.panel-success>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#d6e9c6}.panel-info{border-color:#bce8f1}.panel-info>.panel-heading{color:#31708f;background-color:#d9edf7;border-color:#bce8f1}.panel-info>.panel-heading+.panel-collapse>.panel-body{border-top-color:#bce8f1}.panel-info>.panel-heading .badge{color:#d9edf7;background-color:#31708f}.panel-info>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#bce8f1}.panel-warning{border-color:#faebcc}.panel-warning>.panel-heading{color:#8a6d3b;background-color:#fcf8e3;border-color:#faebcc}.panel-warning>.panel-heading+.panel-collapse>.panel-body{border-top-color:#faebcc}.panel-warning>.panel-heading .badge{color:#fcf8e3;background-color:#8a6d3b}.panel-warning>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#faebcc}.panel-danger{border-color:#ebccd1}.panel-danger>.panel-heading{color:#a94442;background-color:#f2dede;border-color:#ebccd1}.panel-danger>.panel-heading+.panel-collapse>.panel-body{border-top-color:#ebccd1}.panel-danger>.panel-heading .badge{color:#f2dede;background-color:#a94442}.panel-danger>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#ebccd1}.embed-responsive{position:relative;display:block;height:0;padding:0;overflow:hidden}.embed-responsive .embed-responsive-item,.embed-responsive iframe,.embed-responsive embed,.embed-responsive object,.embed-responsive video{position:absolute;top:0;bottom:0;left:0;width:100%;height:100%;border:0}.embed-responsive.embed-responsive-16by9{padding-bottom:56.25%}.embed-responsive.embed-responsive-4by3{padding-bottom:75%}.well{min-height:20px;padding:19px;margin-bottom:20px;background-color:#f5f5f5;border:1px solid #e3e3e3;border-radius:4px;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.05);box-shadow:inset 0 1px 1px rgba(0,0,0,.05)}.well blockquote{border-color:#ddd;border-color:rgba(0,0,0,.15)}.well-lg{padding:24px;border-radius:6px}.well-sm{padding:9px;border-radius:3px}.close{float:right;font-size:21px;font-weight:700;line-height:1;color:#000;text-shadow:0 1px 0 #fff;filter:alpha(opacity=20);opacity:.2}.close:hover,.close:focus{color:#000;text-decoration:none;cursor:pointer;filter:alpha(opacity=50);opacity:.5}button.close{-webkit-appearance:none;padding:0;cursor:pointer;background:0 0;border:0}.modal-open{overflow:hidden}.modal{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1040;display:none;overflow:hidden;-webkit-overflow-scrolling:touch;outline:0}.modal.fade .modal-dialog{-webkit-transition:-webkit-transform .3s ease-out;-o-transition:-o-transform .3s ease-out;transition:transform .3s ease-out;-webkit-transform:translate(0,-25%);-ms-transform:translate(0,-25%);-o-transform:translate(0,-25%);transform:translate(0,-25%)}.modal.in .modal-dialog{-webkit-transform:translate(0,0);-ms-transform:translate(0,0);-o-transform:translate(0,0);transform:translate(0,0)}.modal-open .modal{overflow-x:hidden;overflow-y:auto}.modal-dialog{position:relative;width:auto;margin:10px}.modal-content{position:relative;background-color:#fff;-webkit-background-clip:padding-box;background-clip:padding-box;border:1px solid #999;border:1px solid rgba(0,0,0,.2);border-radius:6px;outline:0;-webkit-box-shadow:0 3px 9px rgba(0,0,0,.5);box-shadow:0 3px 9px rgba(0,0,0,.5)}.modal-backdrop{position:absolute;top:0;right:0;left:0;background-color:#000}.modal-backdrop.fade{filter:alpha(opacity=0);opacity:0}.modal-backdrop.in{filter:alpha(opacity=50);opacity:.5}.modal-header{min-height:16.43px;padding:15px;border-bottom:1px solid #e5e5e5}.modal-header .close{margin-top:-2px}.modal-title{margin:0;line-height:1.42857143}.modal-body{position:relative;padding:15px}.modal-footer{padding:15px;text-align:right;border-top:1px solid #e5e5e5}.modal-footer .btn+.btn{margin-bottom:0;margin-left:5px}.modal-footer .btn-group .btn+.btn{margin-left:-1px}.modal-footer .btn-block+.btn-block{margin-left:0}.modal-scrollbar-measure{position:absolute;top:-9999px;width:50px;height:50px;overflow:scroll}@media (min-width:768px){.modal-dialog{width:600px;margin:30px auto}.modal-content{-webkit-box-shadow:0 5px 15px rgba(0,0,0,.5);box-shadow:0 5px 15px rgba(0,0,0,.5)}.modal-sm{width:300px}}@media (min-width:992px){.modal-lg{width:900px}}.tooltip{position:absolute;z-index:1070;display:block;font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:12px;font-weight:400;line-height:1.4;visibility:visible;filter:alpha(opacity=0);opacity:0}.tooltip.in{filter:alpha(opacity=90);opacity:.9}.tooltip.top{padding:5px 0;margin-top:-3px}.tooltip.right{padding:0 5px;margin-left:3px}.tooltip.bottom{padding:5px 0;margin-top:3px}.tooltip.left{padding:0 5px;margin-left:-3px}.tooltip-inner{max-width:200px;padding:3px 8px;color:#fff;text-align:center;text-decoration:none;background-color:#000;border-radius:4px}.tooltip-arrow{position:absolute;width:0;height:0;border-color:transparent;border-style:solid}.tooltip.top .tooltip-arrow{bottom:0;left:50%;margin-left:-5px;border-width:5px 5px 0;border-top-color:#000}.tooltip.top-left .tooltip-arrow{right:5px;bottom:0;margin-bottom:-5px;border-width:5px 5px 0;border-top-color:#000}.tooltip.top-right .tooltip-arrow{bottom:0;left:5px;margin-bottom:-5px;border-width:5px 5px 0;border-top-color:#000}.tooltip.right .tooltip-arrow{top:50%;left:0;margin-top:-5px;border-width:5px 5px 5px 0;border-right-color:#000}.tooltip.left .tooltip-arrow{top:50%;right:0;margin-top:-5px;border-width:5px 0 5px 5px;border-left-color:#000}.tooltip.bottom .tooltip-arrow{top:0;left:50%;margin-left:-5px;border-width:0 5px 5px;border-bottom-color:#000}.tooltip.bottom-left .tooltip-arrow{top:0;right:5px;margin-top:-5px;border-width:0 5px 5px;border-bottom-color:#000}.tooltip.bottom-right .tooltip-arrow{top:0;left:5px;margin-top:-5px;border-width:0 5px 5px;border-bottom-color:#000}.popover{position:absolute;top:0;left:0;z-index:1060;display:none;max-width:276px;padding:1px;font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:14px;font-weight:400;line-height:1.42857143;text-align:left;white-space:normal;background-color:#fff;-webkit-background-clip:padding-box;background-clip:padding-box;border:1px solid #ccc;border:1px solid rgba(0,0,0,.2);border-radius:6px;-webkit-box-shadow:0 5px 10px rgba(0,0,0,.2);box-shadow:0 5px 10px rgba(0,0,0,.2)}.popover.top{margin-top:-10px}.popover.right{margin-left:10px}.popover.bottom{margin-top:10px}.popover.left{margin-left:-10px}.popover-title{padding:8px 14px;margin:0;font-size:14px;background-color:#f7f7f7;border-bottom:1px solid #ebebeb;border-radius:5px 5px 0 0}.popover-content{padding:9px 14px}.popover>.arrow,.popover>.arrow:after{position:absolute;display:block;width:0;height:0;border-color:transparent;border-style:solid}.popover>.arrow{border-width:11px}.popover>.arrow:after{content:"";border-width:10px}.popover.top>.arrow{bottom:-11px;left:50%;margin-left:-11px;border-top-color:#999;border-top-color:rgba(0,0,0,.25);border-bottom-width:0}.popover.top>.arrow:after{bottom:1px;margin-left:-10px;content:" ";border-top-color:#fff;border-bottom-width:0}.popover.right>.arrow{top:50%;left:-11px;margin-top:-11px;border-right-color:#999;border-right-color:rgba(0,0,0,.25);border-left-width:0}.popover.right>.arrow:after{bottom:-10px;left:1px;content:" ";border-right-color:#fff;border-left-width:0}.popover.bottom>.arrow{top:-11px;left:50%;margin-left:-11px;border-top-width:0;border-bottom-color:#999;border-bottom-color:rgba(0,0,0,.25)}.popover.bottom>.arrow:after{top:1px;margin-left:-10px;content:" ";border-top-width:0;border-bottom-color:#fff}.popover.left>.arrow{top:50%;right:-11px;margin-top:-11px;border-right-width:0;border-left-color:#999;border-left-color:rgba(0,0,0,.25)}.popover.left>.arrow:after{right:1px;bottom:-10px;content:" ";border-right-width:0;border-left-color:#fff}.carousel{position:relative}.carousel-inner{position:relative;width:100%;overflow:hidden}.carousel-inner>.item{position:relative;display:none;-webkit-transition:.6s ease-in-out left;-o-transition:.6s ease-in-out left;transition:.6s ease-in-out left}.carousel-inner>.item>img,.carousel-inner>.item>a>img{line-height:1}@media all and (transform-3d),(-webkit-transform-3d){.carousel-inner>.item{-webkit-transition:-webkit-transform .6s ease-in-out;-o-transition:-o-transform .6s ease-in-out;transition:transform .6s ease-in-out;-webkit-backface-visibility:hidden;backface-visibility:hidden;-webkit-perspective:1000;perspective:1000}.carousel-inner>.item.next,.carousel-inner>.item.active.right{left:0;-webkit-transform:translate3d(100%,0,0);transform:translate3d(100%,0,0)}.carousel-inner>.item.prev,.carousel-inner>.item.active.left{left:0;-webkit-transform:translate3d(-100%,0,0);transform:translate3d(-100%,0,0)}.carousel-inner>.item.next.left,.carousel-inner>.item.prev.right,.carousel-inner>.item.active{left:0;-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}}.carousel-inner>.active,.carousel-inner>.next,.carousel-inner>.prev{display:block}.carousel-inner>.active{left:0}.carousel-inner>.next,.carousel-inner>.prev{position:absolute;top:0;width:100%}.carousel-inner>.next{left:100%}.carousel-inner>.prev{left:-100%}.carousel-inner>.next.left,.carousel-inner>.prev.right{left:0}.carousel-inner>.active.left{left:-100%}.carousel-inner>.active.right{left:100%}.carousel-control{position:absolute;top:0;bottom:0;left:0;width:15%;font-size:20px;color:#fff;text-align:center;text-shadow:0 1px 2px rgba(0,0,0,.6);filter:alpha(opacity=50);opacity:.5}.carousel-control.left{background-image:-webkit-linear-gradient(left,rgba(0,0,0,.5) 0,rgba(0,0,0,.0001) 100%);background-image:-o-linear-gradient(left,rgba(0,0,0,.5) 0,rgba(0,0,0,.0001) 100%);background-image:-webkit-gradient(linear,left top,right top,from(rgba(0,0,0,.5)),to(rgba(0,0,0,.0001)));background-image:linear-gradient(to right,rgba(0,0,0,.5) 0,rgba(0,0,0,.0001) 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#80000000', endColorstr='#00000000', GradientType=1);background-repeat:repeat-x}.carousel-control.right{right:0;left:auto;background-image:-webkit-linear-gradient(left,rgba(0,0,0,.0001) 0,rgba(0,0,0,.5) 100%);background-image:-o-linear-gradient(left,rgba(0,0,0,.0001) 0,rgba(0,0,0,.5) 100%);background-image:-webkit-gradient(linear,left top,right top,from(rgba(0,0,0,.0001)),to(rgba(0,0,0,.5)));background-image:linear-gradient(to right,rgba(0,0,0,.0001) 0,rgba(0,0,0,.5) 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#00000000', endColorstr='#80000000', GradientType=1);background-repeat:repeat-x}.carousel-control:hover,.carousel-control:focus{color:#fff;text-decoration:none;filter:alpha(opacity=90);outline:0;opacity:.9}.carousel-control .icon-prev,.carousel-control .icon-next,.carousel-control .glyphicon-chevron-left,.carousel-control .glyphicon-chevron-right{position:absolute;top:50%;z-index:5;display:inline-block}.carousel-control .icon-prev,.carousel-control .glyphicon-chevron-left{left:50%;margin-left:-10px}.carousel-control .icon-next,.carousel-control .glyphicon-chevron-right{right:50%;margin-right:-10px}.carousel-control .icon-prev,.carousel-control .icon-next{width:20px;height:20px;margin-top:-10px;font-family:serif}.carousel-control .icon-prev:before{content:'\2039'}.carousel-control .icon-next:before{content:'\203a'}.carousel-indicators{position:absolute;bottom:10px;left:50%;z-index:15;width:60%;padding-left:0;margin-left:-30%;text-align:center;list-style:none}.carousel-indicators li{display:inline-block;width:10px;height:10px;margin:1px;text-indent:-999px;cursor:pointer;background-color:#000 \9;background-color:rgba(0,0,0,0);border:1px solid #fff;border-radius:10px}.carousel-indicators .active{width:12px;height:12px;margin:0;background-color:#fff}.carousel-caption{position:absolute;right:15%;bottom:20px;left:15%;z-index:10;padding-top:20px;padding-bottom:20px;color:#fff;text-align:center;text-shadow:0 1px 2px rgba(0,0,0,.6)}.carousel-caption .btn{text-shadow:none}@media screen and (min-width:768px){.carousel-control .glyphicon-chevron-left,.carousel-control .glyphicon-chevron-right,.carousel-control .icon-prev,.carousel-control .icon-next{width:30px;height:30px;margin-top:-15px;font-size:30px}.carousel-control .glyphicon-chevron-left,.carousel-control .icon-prev{margin-left:-15px}.carousel-control .glyphicon-chevron-right,.carousel-control .icon-next{margin-right:-15px}.carousel-caption{right:20%;left:20%;padding-bottom:30px}.carousel-indicators{bottom:20px}}.clearfix:before,.clearfix:after,.dl-horizontal dd:before,.dl-horizontal dd:after,.container:before,.container:after,.container-fluid:before,.container-fluid:after,.row:before,.row:after,.form-horizontal .form-group:before,.form-horizontal .form-group:after,.btn-toolbar:before,.btn-toolbar:after,.btn-group-vertical>.btn-group:before,.btn-group-vertical>.btn-group:after,.nav:before,.nav:after,.navbar:before,.navbar:after,.navbar-header:before,.navbar-header:after,.navbar-collapse:before,.navbar-collapse:after,.pager:before,.pager:after,.panel-body:before,.panel-body:after,.modal-footer:before,.modal-footer:after{display:table;content:" "}.clearfix:after,.dl-horizontal dd:after,.container:after,.container-fluid:after,.row:after,.form-horizontal .form-group:after,.btn-toolbar:after,.btn-group-vertical>.btn-group:after,.nav:after,.navbar:after,.navbar-header:after,.navbar-collapse:after,.pager:after,.panel-body:after,.modal-footer:after{clear:both}.center-block{display:block;margin-right:auto;margin-left:auto}.pull-right{float:right!important}.pull-left{float:left!important}.hide{display:none!important}.show{display:block!important}.invisible{visibility:hidden}.text-hide{font:0/0 a;color:transparent;text-shadow:none;background-color:transparent;border:0}.hidden{display:none!important;visibility:hidden!important}.affix{position:fixed}@-ms-viewport{width:device-width}.visible-xs,.visible-sm,.visible-md,.visible-lg{display:none!important}.visible-xs-block,.visible-xs-inline,.visible-xs-inline-block,.visible-sm-block,.visible-sm-inline,.visible-sm-inline-block,.visible-md-block,.visible-md-inline,.visible-md-inline-block,.visible-lg-block,.visible-lg-inline,.visible-lg-inline-block{display:none!important}@media (max-width:767px){.visible-xs{display:block!important}table.visible-xs{display:table}tr.visible-xs{display:table-row!important}th.visible-xs,td.visible-xs{display:table-cell!important}}@media (max-width:767px){.visible-xs-block{display:block!important}}@media (max-width:767px){.visible-xs-inline{display:inline!important}}@media (max-width:767px){.visible-xs-inline-block{display:inline-block!important}}@media (min-width:768px) and (max-width:991px){.visible-sm{display:block!important}table.visible-sm{display:table}tr.visible-sm{display:table-row!important}th.visible-sm,td.visible-sm{display:table-cell!important}}@media (min-width:768px) and (max-width:991px){.visible-sm-block{display:block!important}}@media (min-width:768px) and (max-width:991px){.visible-sm-inline{display:inline!important}}@media (min-width:768px) and (max-width:991px){.visible-sm-inline-block{display:inline-block!important}}@media (min-width:992px) and (max-width:1199px){.visible-md{display:block!important}table.visible-md{display:table}tr.visible-md{display:table-row!important}th.visible-md,td.visible-md{display:table-cell!important}}@media (min-width:992px) and (max-width:1199px){.visible-md-block{display:block!important}}@media (min-width:992px) and (max-width:1199px){.visible-md-inline{display:inline!important}}@media (min-width:992px) and (max-width:1199px){.visible-md-inline-block{display:inline-block!important}}@media (min-width:1200px){.visible-lg{display:block!important}table.visible-lg{display:table}tr.visible-lg{display:table-row!important}th.visible-lg,td.visible-lg{display:table-cell!important}}@media (min-width:1200px){.visible-lg-block{display:block!important}}@media (min-width:1200px){.visible-lg-inline{display:inline!important}}@media (min-width:1200px){.visible-lg-inline-block{display:inline-block!important}}@media (max-width:767px){.hidden-xs{display:none!important}}@media (min-width:768px) and (max-width:991px){.hidden-sm{display:none!important}}@media (min-width:992px) and (max-width:1199px){.hidden-md{display:none!important}}@media (min-width:1200px){.hidden-lg{display:none!important}}.visible-print{display:none!important}@media print{.visible-print{display:block!important}table.visible-print{display:table}tr.visible-print{display:table-row!important}th.visible-print,td.visible-print{display:table-cell!important}}.visible-print-block{display:none!important}@media print{.visible-print-block{display:block!important}}.visible-print-inline{display:none!important}@media print{.visible-print-inline{display:inline!important}}.visible-print-inline-block{display:none!important}@media print{.visible-print-inline-block{display:inline-block!important}}@media print{.hidden-print{display:none!important}} \ No newline at end of file
diff --git a/library/bootstrap/fonts/glyphicons-halflings-regular.svg b/library/bootstrap/fonts/glyphicons-halflings-regular.svg
index e3e2dc739..25691af8f 100644
--- a/library/bootstrap/fonts/glyphicons-halflings-regular.svg
+++ b/library/bootstrap/fonts/glyphicons-halflings-regular.svg
@@ -226,4 +226,4 @@
<glyph unicode="&#xe199;" d="M100 200h400v-155l-75 -45h350l-75 45v155h400l-270 300h170l-270 300h170l-300 333l-300 -333h170l-270 -300h170z" />
<glyph unicode="&#xe200;" d="M121 700q0 -53 28.5 -97t75.5 -65q-4 -16 -4 -38q0 -74 52.5 -126.5t126.5 -52.5q56 0 100 30v-306l-75 -45h350l-75 45v306q46 -30 100 -30q74 0 126.5 52.5t52.5 126.5q0 24 -9 55q50 32 79.5 83t29.5 112q0 90 -61.5 155.5t-150.5 71.5q-26 89 -99.5 145.5 t-167.5 56.5q-116 0 -197.5 -81.5t-81.5 -197.5q0 -4 1 -11.5t1 -11.5q-14 2 -23 2q-74 0 -126.5 -52.5t-52.5 -126.5z" />
</font>
-</defs></svg> \ No newline at end of file
+</defs></svg> \ No newline at end of file
diff --git a/library/bootstrap/js/bootbox.js b/library/bootstrap/js/bootbox.js
new file mode 100644
index 000000000..a002e4a35
--- /dev/null
+++ b/library/bootstrap/js/bootbox.js
@@ -0,0 +1,894 @@
+/**
+ * bootbox.js [v4.3.0]
+ *
+ * http://bootboxjs.com/license.txt
+ */
+
+// @see https://github.com/makeusabrew/bootbox/issues/180
+// @see https://github.com/makeusabrew/bootbox/issues/186
+(function (root, factory) {
+
+ "use strict";
+ if (typeof define === "function" && define.amd) {
+ // AMD. Register as an anonymous module.
+ define(["jquery"], factory);
+ } else if (typeof exports === "object") {
+ // Node. Does not work with strict CommonJS, but
+ // only CommonJS-like environments that support module.exports,
+ // like Node.
+ module.exports = factory(require("jquery"));
+ } else {
+ // Browser globals (root is window)
+ root.bootbox = factory(root.jQuery);
+ }
+
+}(this, function init($, undefined) {
+
+ "use strict";
+
+ // the base DOM structure needed to create a modal
+ var templates = {
+ dialog:
+ "<div class='bootbox modal' tabindex='-1' role='dialog'>" +
+ "<div class='modal-dialog'>" +
+ "<div class='modal-content'>" +
+ "<div class='modal-body'><div class='bootbox-body'></div></div>" +
+ "</div>" +
+ "</div>" +
+ "</div>",
+ header:
+ "<div class='modal-header'>" +
+ "<h4 class='modal-title'></h4>" +
+ "</div>",
+ footer:
+ "<div class='modal-footer'></div>",
+ closeButton:
+ "<button type='button' class='bootbox-close-button close' data-dismiss='modal' aria-hidden='true'>&times;</button>",
+ form:
+ "<form class='bootbox-form'></form>",
+ inputs: {
+ text:
+ "<input class='bootbox-input bootbox-input-text form-control' autocomplete=off type=text />",
+ textarea:
+ "<textarea class='bootbox-input bootbox-input-textarea form-control'></textarea>",
+ email:
+ "<input class='bootbox-input bootbox-input-email form-control' autocomplete='off' type='email' />",
+ select:
+ "<select class='bootbox-input bootbox-input-select form-control'></select>",
+ checkbox:
+ "<div class='checkbox'><label><input class='bootbox-input bootbox-input-checkbox' type='checkbox' /></label></div>",
+ date:
+ "<input class='bootbox-input bootbox-input-date form-control' autocomplete=off type='date' />",
+ time:
+ "<input class='bootbox-input bootbox-input-time form-control' autocomplete=off type='time' />",
+ number:
+ "<input class='bootbox-input bootbox-input-number form-control' autocomplete=off type='number' />",
+ password:
+ "<input class='bootbox-input bootbox-input-password form-control' autocomplete='off' type='password' />"
+ }
+ };
+
+ var defaults = {
+ // default language
+ locale: "en",
+ // show backdrop or not
+ backdrop: true,
+ // animate the modal in/out
+ animate: true,
+ // additional class string applied to the top level dialog
+ className: null,
+ // whether or not to include a close button
+ closeButton: true,
+ // show the dialog immediately by default
+ show: true,
+ // dialog container
+ container: "body"
+ };
+
+ // our public object; augmented after our private API
+ var exports = {};
+
+ /**
+ * @private
+ */
+ function _t(key) {
+ var locale = locales[defaults.locale];
+ return locale ? locale[key] : locales.en[key];
+ }
+
+ function processCallback(e, dialog, callback) {
+ e.stopPropagation();
+ e.preventDefault();
+
+ // by default we assume a callback will get rid of the dialog,
+ // although it is given the opportunity to override this
+
+ // so, if the callback can be invoked and it *explicitly returns false*
+ // then we'll set a flag to keep the dialog active...
+ var preserveDialog = $.isFunction(callback) && callback(e) === false;
+
+ // ... otherwise we'll bin it
+ if (!preserveDialog) {
+ dialog.modal("hide");
+ }
+ }
+
+ function getKeyLength(obj) {
+ // @TODO defer to Object.keys(x).length if available?
+ var k, t = 0;
+ for (k in obj) {
+ t ++;
+ }
+ return t;
+ }
+
+ function each(collection, iterator) {
+ var index = 0;
+ $.each(collection, function(key, value) {
+ iterator(key, value, index++);
+ });
+ }
+
+ function sanitize(options) {
+ var buttons;
+ var total;
+
+ if (typeof options !== "object") {
+ throw new Error("Please supply an object of options");
+ }
+
+ if (!options.message) {
+ throw new Error("Please specify a message");
+ }
+
+ // make sure any supplied options take precedence over defaults
+ options = $.extend({}, defaults, options);
+
+ if (!options.buttons) {
+ options.buttons = {};
+ }
+
+ // we only support Bootstrap's "static" and false backdrop args
+ // supporting true would mean you could dismiss the dialog without
+ // explicitly interacting with it
+ options.backdrop = options.backdrop ? "static" : false;
+
+ buttons = options.buttons;
+
+ total = getKeyLength(buttons);
+
+ each(buttons, function(key, button, index) {
+
+ if ($.isFunction(button)) {
+ // short form, assume value is our callback. Since button
+ // isn't an object it isn't a reference either so re-assign it
+ button = buttons[key] = {
+ callback: button
+ };
+ }
+
+ // before any further checks make sure by now button is the correct type
+ if ($.type(button) !== "object") {
+ throw new Error("button with key " + key + " must be an object");
+ }
+
+ if (!button.label) {
+ // the lack of an explicit label means we'll assume the key is good enough
+ button.label = key;
+ }
+
+ if (!button.className) {
+ if (total <= 2 && index === total-1) {
+ // always add a primary to the main option in a two-button dialog
+ button.className = "btn-primary";
+ } else {
+ button.className = "btn-default";
+ }
+ }
+ });
+
+ return options;
+ }
+
+ /**
+ * map a flexible set of arguments into a single returned object
+ * if args.length is already one just return it, otherwise
+ * use the properties argument to map the unnamed args to
+ * object properties
+ * so in the latter case:
+ * mapArguments(["foo", $.noop], ["message", "callback"])
+ * -> { message: "foo", callback: $.noop }
+ */
+ function mapArguments(args, properties) {
+ var argn = args.length;
+ var options = {};
+
+ if (argn < 1 || argn > 2) {
+ throw new Error("Invalid argument length");
+ }
+
+ if (argn === 2 || typeof args[0] === "string") {
+ options[properties[0]] = args[0];
+ options[properties[1]] = args[1];
+ } else {
+ options = args[0];
+ }
+
+ return options;
+ }
+
+ /**
+ * merge a set of default dialog options with user supplied arguments
+ */
+ function mergeArguments(defaults, args, properties) {
+ return $.extend(
+ // deep merge
+ true,
+ // ensure the target is an empty, unreferenced object
+ {},
+ // the base options object for this type of dialog (often just buttons)
+ defaults,
+ // args could be an object or array; if it's an array properties will
+ // map it to a proper options object
+ mapArguments(
+ args,
+ properties
+ )
+ );
+ }
+
+ /**
+ * this entry-level method makes heavy use of composition to take a simple
+ * range of inputs and return valid options suitable for passing to bootbox.dialog
+ */
+ function mergeDialogOptions(className, labels, properties, args) {
+ // build up a base set of dialog properties
+ var baseOptions = {
+ className: "bootbox-" + className,
+ buttons: createLabels.apply(null, labels)
+ };
+
+ // ensure the buttons properties generated, *after* merging
+ // with user args are still valid against the supplied labels
+ return validateButtons(
+ // merge the generated base properties with user supplied arguments
+ mergeArguments(
+ baseOptions,
+ args,
+ // if args.length > 1, properties specify how each arg maps to an object key
+ properties
+ ),
+ labels
+ );
+ }
+
+ /**
+ * from a given list of arguments return a suitable object of button labels
+ * all this does is normalise the given labels and translate them where possible
+ * e.g. "ok", "confirm" -> { ok: "OK, cancel: "Annuleren" }
+ */
+ function createLabels() {
+ var buttons = {};
+
+ for (var i = 0, j = arguments.length; i < j; i++) {
+ var argument = arguments[i];
+ var key = argument.toLowerCase();
+ var value = argument.toUpperCase();
+
+ buttons[key] = {
+ label: _t(value)
+ };
+ }
+
+ return buttons;
+ }
+
+ function validateButtons(options, buttons) {
+ var allowedButtons = {};
+ each(buttons, function(key, value) {
+ allowedButtons[value] = true;
+ });
+
+ each(options.buttons, function(key) {
+ if (allowedButtons[key] === undefined) {
+ throw new Error("button key " + key + " is not allowed (options are " + buttons.join("\n") + ")");
+ }
+ });
+
+ return options;
+ }
+
+ exports.alert = function() {
+ var options;
+
+ options = mergeDialogOptions("alert", ["ok"], ["message", "callback"], arguments);
+
+ if (options.callback && !$.isFunction(options.callback)) {
+ throw new Error("alert requires callback property to be a function when provided");
+ }
+
+ /**
+ * overrides
+ */
+ options.buttons.ok.callback = options.onEscape = function() {
+ if ($.isFunction(options.callback)) {
+ return options.callback();
+ }
+ return true;
+ };
+
+ return exports.dialog(options);
+ };
+
+ exports.confirm = function() {
+ var options;
+
+ options = mergeDialogOptions("confirm", ["cancel", "confirm"], ["message", "callback"], arguments);
+
+ /**
+ * overrides; undo anything the user tried to set they shouldn't have
+ */
+ options.buttons.cancel.callback = options.onEscape = function() {
+ return options.callback(false);
+ };
+
+ options.buttons.confirm.callback = function() {
+ return options.callback(true);
+ };
+
+ // confirm specific validation
+ if (!$.isFunction(options.callback)) {
+ throw new Error("confirm requires a callback");
+ }
+
+ return exports.dialog(options);
+ };
+
+ exports.prompt = function() {
+ var options;
+ var defaults;
+ var dialog;
+ var form;
+ var input;
+ var shouldShow;
+ var inputOptions;
+
+ // we have to create our form first otherwise
+ // its value is undefined when gearing up our options
+ // @TODO this could be solved by allowing message to
+ // be a function instead...
+ form = $(templates.form);
+
+ // prompt defaults are more complex than others in that
+ // users can override more defaults
+ // @TODO I don't like that prompt has to do a lot of heavy
+ // lifting which mergeDialogOptions can *almost* support already
+ // just because of 'value' and 'inputType' - can we refactor?
+ defaults = {
+ className: "bootbox-prompt",
+ buttons: createLabels("cancel", "confirm"),
+ value: "",
+ inputType: "text"
+ };
+
+ options = validateButtons(
+ mergeArguments(defaults, arguments, ["title", "callback"]),
+ ["cancel", "confirm"]
+ );
+
+ // capture the user's show value; we always set this to false before
+ // spawning the dialog to give us a chance to attach some handlers to
+ // it, but we need to make sure we respect a preference not to show it
+ shouldShow = (options.show === undefined) ? true : options.show;
+
+ /**
+ * overrides; undo anything the user tried to set they shouldn't have
+ */
+ options.message = form;
+
+ options.buttons.cancel.callback = options.onEscape = function() {
+ return options.callback(null);
+ };
+
+ options.buttons.confirm.callback = function() {
+ var value;
+
+ switch (options.inputType) {
+ case "text":
+ case "textarea":
+ case "email":
+ case "select":
+ case "date":
+ case "time":
+ case "number":
+ case "password":
+ value = input.val();
+ break;
+
+ case "checkbox":
+ var checkedItems = input.find("input:checked");
+
+ // we assume that checkboxes are always multiple,
+ // hence we default to an empty array
+ value = [];
+
+ each(checkedItems, function(_, item) {
+ value.push($(item).val());
+ });
+ break;
+ }
+
+ return options.callback(value);
+ };
+
+ options.show = false;
+
+ // prompt specific validation
+ if (!options.title) {
+ throw new Error("prompt requires a title");
+ }
+
+ if (!$.isFunction(options.callback)) {
+ throw new Error("prompt requires a callback");
+ }
+
+ if (!templates.inputs[options.inputType]) {
+ throw new Error("invalid prompt type");
+ }
+
+ // create the input based on the supplied type
+ input = $(templates.inputs[options.inputType]);
+
+ switch (options.inputType) {
+ case "text":
+ case "textarea":
+ case "email":
+ case "date":
+ case "time":
+ case "number":
+ case "password":
+ input.val(options.value);
+ break;
+
+ case "select":
+ var groups = {};
+ inputOptions = options.inputOptions || [];
+
+ if (!inputOptions.length) {
+ throw new Error("prompt with select requires options");
+ }
+
+ each(inputOptions, function(_, option) {
+
+ // assume the element to attach to is the input...
+ var elem = input;
+
+ if (option.value === undefined || option.text === undefined) {
+ throw new Error("given options in wrong format");
+ }
+
+
+ // ... but override that element if this option sits in a group
+
+ if (option.group) {
+ // initialise group if necessary
+ if (!groups[option.group]) {
+ groups[option.group] = $("<optgroup/>").attr("label", option.group);
+ }
+
+ elem = groups[option.group];
+ }
+
+ elem.append("<option value='" + option.value + "'>" + option.text + "</option>");
+ });
+
+ each(groups, function(_, group) {
+ input.append(group);
+ });
+
+ // safe to set a select's value as per a normal input
+ input.val(options.value);
+ break;
+
+ case "checkbox":
+ var values = $.isArray(options.value) ? options.value : [options.value];
+ inputOptions = options.inputOptions || [];
+
+ if (!inputOptions.length) {
+ throw new Error("prompt with checkbox requires options");
+ }
+
+ if (!inputOptions[0].value || !inputOptions[0].text) {
+ throw new Error("given options in wrong format");
+ }
+
+ // checkboxes have to nest within a containing element, so
+ // they break the rules a bit and we end up re-assigning
+ // our 'input' element to this container instead
+ input = $("<div/>");
+
+ each(inputOptions, function(_, option) {
+ var checkbox = $(templates.inputs[options.inputType]);
+
+ checkbox.find("input").attr("value", option.value);
+ checkbox.find("label").append(option.text);
+
+ // we've ensured values is an array so we can always iterate over it
+ each(values, function(_, value) {
+ if (value === option.value) {
+ checkbox.find("input").prop("checked", true);
+ }
+ });
+
+ input.append(checkbox);
+ });
+ break;
+ }
+
+ if (options.placeholder) {
+ input.attr("placeholder", options.placeholder);
+ }
+
+ if(options.pattern){
+ input.attr("pattern", options.pattern);
+ }
+
+ // now place it in our form
+ form.append(input);
+
+ form.on("submit", function(e) {
+ e.preventDefault();
+ // Fix for SammyJS (or similar JS routing library) hijacking the form post.
+ e.stopPropagation();
+ // @TODO can we actually click *the* button object instead?
+ // e.g. buttons.confirm.click() or similar
+ dialog.find(".btn-primary").click();
+ });
+
+ dialog = exports.dialog(options);
+
+ // clear the existing handler focusing the submit button...
+ dialog.off("shown.bs.modal");
+
+ // ...and replace it with one focusing our input, if possible
+ dialog.on("shown.bs.modal", function() {
+ input.focus();
+ });
+
+ if (shouldShow === true) {
+ dialog.modal("show");
+ }
+
+ return dialog;
+ };
+
+ exports.dialog = function(options) {
+ options = sanitize(options);
+
+ var dialog = $(templates.dialog);
+ var innerDialog = dialog.find(".modal-dialog");
+ var body = dialog.find(".modal-body");
+ var buttons = options.buttons;
+ var buttonStr = "";
+ var callbacks = {
+ onEscape: options.onEscape
+ };
+
+ each(buttons, function(key, button) {
+
+ // @TODO I don't like this string appending to itself; bit dirty. Needs reworking
+ // can we just build up button elements instead? slower but neater. Then button
+ // can just become a template too
+ buttonStr += "<button data-bb-handler='" + key + "' type='button' class='btn " + button.className + "'>" + button.label + "</button>";
+ callbacks[key] = button.callback;
+ });
+
+ body.find(".bootbox-body").html(options.message);
+
+ if (options.animate === true) {
+ dialog.addClass("fade");
+ }
+
+ if (options.className) {
+ dialog.addClass(options.className);
+ }
+
+ if (options.size === "large") {
+ innerDialog.addClass("modal-lg");
+ }
+
+ if (options.size === "small") {
+ innerDialog.addClass("modal-sm");
+ }
+
+ if (options.title) {
+ body.before(templates.header);
+ }
+
+ if (options.closeButton) {
+ var closeButton = $(templates.closeButton);
+
+ if (options.title) {
+ dialog.find(".modal-header").prepend(closeButton);
+ } else {
+ closeButton.css("margin-top", "-10px").prependTo(body);
+ }
+ }
+
+ if (options.title) {
+ dialog.find(".modal-title").html(options.title);
+ }
+
+ if (buttonStr.length) {
+ body.after(templates.footer);
+ dialog.find(".modal-footer").html(buttonStr);
+ }
+
+
+ /**
+ * Bootstrap event listeners; used handle extra
+ * setup & teardown required after the underlying
+ * modal has performed certain actions
+ */
+
+ dialog.on("hidden.bs.modal", function(e) {
+ // ensure we don't accidentally intercept hidden events triggered
+ // by children of the current dialog. We shouldn't anymore now BS
+ // namespaces its events; but still worth doing
+ if (e.target === this) {
+ dialog.remove();
+ }
+ });
+
+ /*
+ dialog.on("show.bs.modal", function() {
+ // sadly this doesn't work; show is called *just* before
+ // the backdrop is added so we'd need a setTimeout hack or
+ // otherwise... leaving in as would be nice
+ if (options.backdrop) {
+ dialog.next(".modal-backdrop").addClass("bootbox-backdrop");
+ }
+ });
+ */
+
+ dialog.on("shown.bs.modal", function() {
+ dialog.find(".btn-primary:first").focus();
+ });
+
+ /**
+ * Bootbox event listeners; experimental and may not last
+ * just an attempt to decouple some behaviours from their
+ * respective triggers
+ */
+
+ dialog.on("escape.close.bb", function(e) {
+ if (callbacks.onEscape) {
+ processCallback(e, dialog, callbacks.onEscape);
+ }
+ });
+
+ /**
+ * Standard jQuery event listeners; used to handle user
+ * interaction with our dialog
+ */
+
+ dialog.on("click", ".modal-footer button", function(e) {
+ var callbackKey = $(this).data("bb-handler");
+
+ processCallback(e, dialog, callbacks[callbackKey]);
+
+ });
+
+ dialog.on("click", ".bootbox-close-button", function(e) {
+ // onEscape might be falsy but that's fine; the fact is
+ // if the user has managed to click the close button we
+ // have to close the dialog, callback or not
+ processCallback(e, dialog, callbacks.onEscape);
+ });
+
+ dialog.on("keyup", function(e) {
+ if (e.which === 27) {
+ dialog.trigger("escape.close.bb");
+ }
+ });
+
+ // the remainder of this method simply deals with adding our
+ // dialogent to the DOM, augmenting it with Bootstrap's modal
+ // functionality and then giving the resulting object back
+ // to our caller
+
+ $(options.container).append(dialog);
+
+ dialog.modal({
+ backdrop: options.backdrop,
+ keyboard: false,
+ show: false
+ });
+
+ if (options.show) {
+ dialog.modal("show");
+ }
+
+ // @TODO should we return the raw element here or should
+ // we wrap it in an object on which we can expose some neater
+ // methods, e.g. var d = bootbox.alert(); d.hide(); instead
+ // of d.modal("hide");
+
+ /*
+ function BBDialog(elem) {
+ this.elem = elem;
+ }
+
+ BBDialog.prototype = {
+ hide: function() {
+ return this.elem.modal("hide");
+ },
+ show: function() {
+ return this.elem.modal("show");
+ }
+ };
+ */
+
+ return dialog;
+
+ };
+
+ exports.setDefaults = function() {
+ var values = {};
+
+ if (arguments.length === 2) {
+ // allow passing of single key/value...
+ values[arguments[0]] = arguments[1];
+ } else {
+ // ... and as an object too
+ values = arguments[0];
+ }
+
+ $.extend(defaults, values);
+ };
+
+ exports.hideAll = function() {
+ $(".bootbox").modal("hide");
+
+ return exports;
+ };
+
+
+ /**
+ * standard locales. Please add more according to ISO 639-1 standard. Multiple language variants are
+ * unlikely to be required. If this gets too large it can be split out into separate JS files.
+ */
+ var locales = {
+ br : {
+ OK : "OK",
+ CANCEL : "Cancelar",
+ CONFIRM : "Sim"
+ },
+ cs : {
+ OK : "OK",
+ CANCEL : "Zrušit",
+ CONFIRM : "Potvrdit"
+ },
+ da : {
+ OK : "OK",
+ CANCEL : "Annuller",
+ CONFIRM : "Accepter"
+ },
+ de : {
+ OK : "OK",
+ CANCEL : "Abbrechen",
+ CONFIRM : "Akzeptieren"
+ },
+ el : {
+ OK : "Εντάξει",
+ CANCEL : "ΑκÏÏωση",
+ CONFIRM : "Επιβεβαίωση"
+ },
+ en : {
+ OK : "OK",
+ CANCEL : "Cancel",
+ CONFIRM : "OK"
+ },
+ es : {
+ OK : "OK",
+ CANCEL : "Cancelar",
+ CONFIRM : "Aceptar"
+ },
+ et : {
+ OK : "OK",
+ CANCEL : "Katkesta",
+ CONFIRM : "OK"
+ },
+ fi : {
+ OK : "OK",
+ CANCEL : "Peruuta",
+ CONFIRM : "OK"
+ },
+ fr : {
+ OK : "OK",
+ CANCEL : "Annuler",
+ CONFIRM : "D'accord"
+ },
+ he : {
+ OK : "×ישור",
+ CANCEL : "ביטול",
+ CONFIRM : "×ישור"
+ },
+ id : {
+ OK : "OK",
+ CANCEL : "Batal",
+ CONFIRM : "OK"
+ },
+ it : {
+ OK : "OK",
+ CANCEL : "Annulla",
+ CONFIRM : "Conferma"
+ },
+ ja : {
+ OK : "OK",
+ CANCEL : "キャンセル",
+ CONFIRM : "確èª"
+ },
+ lt : {
+ OK : "Gerai",
+ CANCEL : "Atšaukti",
+ CONFIRM : "Patvirtinti"
+ },
+ lv : {
+ OK : "Labi",
+ CANCEL : "Atcelt",
+ CONFIRM : "ApstiprinÄt"
+ },
+ nl : {
+ OK : "OK",
+ CANCEL : "Annuleren",
+ CONFIRM : "Accepteren"
+ },
+ no : {
+ OK : "OK",
+ CANCEL : "Avbryt",
+ CONFIRM : "OK"
+ },
+ pl : {
+ OK : "OK",
+ CANCEL : "Anuluj",
+ CONFIRM : "Potwierdź"
+ },
+ pt : {
+ OK : "OK",
+ CANCEL : "Cancelar",
+ CONFIRM : "Confirmar"
+ },
+ ru : {
+ OK : "OK",
+ CANCEL : "Отмена",
+ CONFIRM : "Применить"
+ },
+ sv : {
+ OK : "OK",
+ CANCEL : "Avbryt",
+ CONFIRM : "OK"
+ },
+ tr : {
+ OK : "Tamam",
+ CANCEL : "Ä°ptal",
+ CONFIRM : "Onayla"
+ },
+ zh_CN : {
+ OK : "OK",
+ CANCEL : "å–消",
+ CONFIRM : "确认"
+ },
+ zh_TW : {
+ OK : "OK",
+ CANCEL : "å–消",
+ CONFIRM : "確èª"
+ }
+ };
+
+ exports.init = function(_$) {
+ return init(_$ || $);
+ };
+
+ return exports;
+}));
diff --git a/library/bootstrap/js/bootbox.min.js b/library/bootstrap/js/bootbox.min.js
index 4ea792f3a..a7ea24fe7 100644
--- a/library/bootstrap/js/bootbox.min.js
+++ b/library/bootstrap/js/bootbox.min.js
@@ -1,6 +1,6 @@
/**
- * bootbox.js v4.1.0
+ * bootbox.js v4.3.0
*
* http://bootboxjs.com/license.txt
*/
-window.bootbox=window.bootbox||function a(b,c){"use strict";function d(a){var b=r[p.locale];return b?b[a]:r.en[a]}function e(a,c,d){a.preventDefault();var e=b.isFunction(d)&&d(a)===!1;e||c.modal("hide")}function f(a){var b,c=0;for(b in a)c++;return c}function g(a,c){var d=0;b.each(a,function(a,b){c(a,b,d++)})}function h(a){var c,d;if("object"!=typeof a)throw new Error("Please supply an object of options");if(!a.message)throw new Error("Please specify a message");return a=b.extend({},p,a),a.buttons||(a.buttons={}),a.backdrop=a.backdrop?"static":!1,c=a.buttons,d=f(c),g(c,function(a,e,f){if(b.isFunction(e)&&(e=c[a]={callback:e}),"object"!==b.type(e))throw new Error("button with key "+a+" must be an object");e.label||(e.label=a),e.className||(e.className=2>=d&&f===d-1?"btn-primary":"btn-default")}),a}function i(a,b){var c=a.length,d={};if(1>c||c>2)throw new Error("Invalid argument length");return 2===c||"string"==typeof a[0]?(d[b[0]]=a[0],d[b[1]]=a[1]):d=a[0],d}function j(a,c,d){return b.extend(!0,{},a,i(c,d))}function k(a,b,c,d){var e={className:"bootbox-"+a,buttons:l.apply(null,b)};return m(j(e,d,c),b)}function l(){for(var a={},b=0,c=arguments.length;c>b;b++){var e=arguments[b],f=e.toLowerCase(),g=e.toUpperCase();a[f]={label:d(g)}}return a}function m(a,b){var d={};return g(b,function(a,b){d[b]=!0}),g(a.buttons,function(a){if(d[a]===c)throw new Error("button key "+a+" is not allowed (options are "+b.join("\n")+")")}),a}var n={dialog:"<div class='bootbox modal' tabindex='-1' role='dialog'><div class='modal-dialog'><div class='modal-content'><div class='modal-body'><div class='bootbox-body'></div></div></div></div></div>",header:"<div class='modal-header'><h4 class='modal-title'></h4></div>",footer:"<div class='modal-footer'></div>",closeButton:"<button type='button' class='bootbox-close-button close'>&times;</button>",form:"<form class='bootbox-form'></form>",inputs:{text:"<input class='bootbox-input bootbox-input-text form-control' autocomplete=off type=text />",email:"<input class='bootbox-input bootbox-input-email form-control' autocomplete='off' type='email' />",select:"<select class='bootbox-input bootbox-input-select form-control'></select>",checkbox:"<div class='checkbox'><label><input class='bootbox-input bootbox-input-checkbox' type='checkbox' /></label></div>"}},o=b("body"),p={locale:"en",backdrop:!0,animate:!0,className:null,closeButton:!0,show:!0},q={};q.alert=function(){var a;if(a=k("alert",["ok"],["message","callback"],arguments),a.callback&&!b.isFunction(a.callback))throw new Error("alert requires callback property to be a function when provided");return a.buttons.ok.callback=a.onEscape=function(){return b.isFunction(a.callback)?a.callback():!0},q.dialog(a)},q.confirm=function(){var a;if(a=k("confirm",["cancel","confirm"],["message","callback"],arguments),a.buttons.cancel.callback=a.onEscape=function(){return a.callback(!1)},a.buttons.confirm.callback=function(){return a.callback(!0)},!b.isFunction(a.callback))throw new Error("confirm requires a callback");return q.dialog(a)},q.prompt=function(){var a,d,e,f,h,i,k;if(f=b(n.form),d={className:"bootbox-prompt",buttons:l("cancel","confirm"),value:"",inputType:"text"},a=m(j(d,arguments,["title","callback"]),["cancel","confirm"]),i=a.show===c?!0:a.show,a.message=f,a.buttons.cancel.callback=a.onEscape=function(){return a.callback(null)},a.buttons.confirm.callback=function(){var c;switch(a.inputType){case"text":case"email":case"select":c=h.val();break;case"checkbox":var d=h.find("input:checked");c=[],g(d,function(a,d){c.push(b(d).val())})}return a.callback(c)},a.show=!1,!a.title)throw new Error("prompt requires a title");if(!b.isFunction(a.callback))throw new Error("prompt requires a callback");if(!n.inputs[a.inputType])throw new Error("invalid prompt type");switch(h=b(n.inputs[a.inputType]),a.inputType){case"text":case"email":h.val(a.value);break;case"select":var o={};if(k=a.inputOptions||[],!k.length)throw new Error("prompt with select requires options");g(k,function(a,d){var e=h;if(d.value===c||d.text===c)throw new Error("given options in wrong format");d.group&&(o[d.group]||(o[d.group]=b("<optgroup/>").attr("label",d.group)),e=o[d.group]),e.append("<option value='"+d.value+"'>"+d.text+"</option>")}),g(o,function(a,b){h.append(b)}),h.val(a.value);break;case"checkbox":var p=b.isArray(a.value)?a.value:[a.value];if(k=a.inputOptions||[],!k.length)throw new Error("prompt with checkbox requires options");if(!k[0].value||!k[0].text)throw new Error("given options in wrong format");h=b("<div/>"),g(k,function(c,d){var e=b(n.inputs[a.inputType]);e.find("input").attr("value",d.value),e.find("label").append(d.text),g(p,function(a,b){b===d.value&&e.find("input").prop("checked",!0)}),h.append(e)})}return a.placeholder&&h.attr("placeholder",a.placeholder),f.append(h),f.on("submit",function(a){a.preventDefault(),e.find(".btn-primary").click()}),e=q.dialog(a),e.off("shown.bs.modal"),e.on("shown.bs.modal",function(){h.focus()}),i===!0&&e.modal("show"),e},q.dialog=function(a){a=h(a);var c=b(n.dialog),d=c.find(".modal-body"),f=a.buttons,i="",j={onEscape:a.onEscape};if(g(f,function(a,b){i+="<button data-bb-handler='"+a+"' type='button' class='btn "+b.className+"'>"+b.label+"</button>",j[a]=b.callback}),d.find(".bootbox-body").html(a.message),a.animate===!0&&c.addClass("fade"),a.className&&c.addClass(a.className),a.title&&d.before(n.header),a.closeButton){var k=b(n.closeButton);a.title?c.find(".modal-header").prepend(k):k.css("margin-top","-10px").prependTo(d)}return a.title&&c.find(".modal-title").html(a.title),i.length&&(d.after(n.footer),c.find(".modal-footer").html(i)),c.on("hidden.bs.modal",function(a){a.target===this&&c.remove()}),c.on("shown.bs.modal",function(){c.find(".btn-primary:first").focus()}),c.on("escape.close.bb",function(a){j.onEscape&&e(a,c,j.onEscape)}),c.on("click",".modal-footer button",function(a){var d=b(this).data("bb-handler");e(a,c,j[d])}),c.on("click",".bootbox-close-button",function(a){e(a,c,j.onEscape)}),c.on("keyup",function(a){27===a.which&&c.trigger("escape.close.bb")}),o.append(c),c.modal({backdrop:a.backdrop,keyboard:!1,show:!1}),a.show&&c.modal("show"),c},q.setDefaults=function(){var a={};2===arguments.length?a[arguments[0]]=arguments[1]:a=arguments[0],b.extend(p,a)},q.hideAll=function(){b(".bootbox").modal("hide")};var r={br:{OK:"OK",CANCEL:"Cancelar",CONFIRM:"Sim"},da:{OK:"OK",CANCEL:"Annuller",CONFIRM:"Accepter"},de:{OK:"OK",CANCEL:"Abbrechen",CONFIRM:"Akzeptieren"},en:{OK:"OK",CANCEL:"Cancel",CONFIRM:"OK"},es:{OK:"OK",CANCEL:"Cancelar",CONFIRM:"Aceptar"},fi:{OK:"OK",CANCEL:"Peruuta",CONFIRM:"OK"},fr:{OK:"OK",CANCEL:"Annuler",CONFIRM:"D'accord"},it:{OK:"OK",CANCEL:"Annulla",CONFIRM:"Conferma"},nl:{OK:"OK",CANCEL:"Annuleren",CONFIRM:"Accepteren"},no:{OK:"OK",CANCEL:"Avbryt",CONFIRM:"OK"},pl:{OK:"OK",CANCEL:"Anuluj",CONFIRM:"Potwierdź"},ru:{OK:"OK",CANCEL:"Отмена",CONFIRM:"Применить"},zh_CN:{OK:"OK",CANCEL:"å–消",CONFIRM:"确认"},zh_TW:{OK:"OK",CANCEL:"å–消",CONFIRM:"確èª"}};return q.init=function(c){window.bootbox=a(c||b)},q}(window.jQuery); \ No newline at end of file
+!function(a,b){"use strict";"function"==typeof define&&define.amd?define(["jquery"],b):"object"==typeof exports?module.exports=b(require("jquery")):a.bootbox=b(a.jQuery)}(this,function a(b,c){"use strict";function d(a){var b=q[o.locale];return b?b[a]:q.en[a]}function e(a,c,d){a.stopPropagation(),a.preventDefault();var e=b.isFunction(d)&&d(a)===!1;e||c.modal("hide")}function f(a){var b,c=0;for(b in a)c++;return c}function g(a,c){var d=0;b.each(a,function(a,b){c(a,b,d++)})}function h(a){var c,d;if("object"!=typeof a)throw new Error("Please supply an object of options");if(!a.message)throw new Error("Please specify a message");return a=b.extend({},o,a),a.buttons||(a.buttons={}),a.backdrop=a.backdrop?"static":!1,c=a.buttons,d=f(c),g(c,function(a,e,f){if(b.isFunction(e)&&(e=c[a]={callback:e}),"object"!==b.type(e))throw new Error("button with key "+a+" must be an object");e.label||(e.label=a),e.className||(e.className=2>=d&&f===d-1?"btn-primary":"btn-default")}),a}function i(a,b){var c=a.length,d={};if(1>c||c>2)throw new Error("Invalid argument length");return 2===c||"string"==typeof a[0]?(d[b[0]]=a[0],d[b[1]]=a[1]):d=a[0],d}function j(a,c,d){return b.extend(!0,{},a,i(c,d))}function k(a,b,c,d){var e={className:"bootbox-"+a,buttons:l.apply(null,b)};return m(j(e,d,c),b)}function l(){for(var a={},b=0,c=arguments.length;c>b;b++){var e=arguments[b],f=e.toLowerCase(),g=e.toUpperCase();a[f]={label:d(g)}}return a}function m(a,b){var d={};return g(b,function(a,b){d[b]=!0}),g(a.buttons,function(a){if(d[a]===c)throw new Error("button key "+a+" is not allowed (options are "+b.join("\n")+")")}),a}var n={dialog:"<div class='bootbox modal' tabindex='-1' role='dialog'><div class='modal-dialog'><div class='modal-content'><div class='modal-body'><div class='bootbox-body'></div></div></div></div></div>",header:"<div class='modal-header'><h4 class='modal-title'></h4></div>",footer:"<div class='modal-footer'></div>",closeButton:"<button type='button' class='bootbox-close-button close' data-dismiss='modal' aria-hidden='true'>&times;</button>",form:"<form class='bootbox-form'></form>",inputs:{text:"<input class='bootbox-input bootbox-input-text form-control' autocomplete=off type=text />",textarea:"<textarea class='bootbox-input bootbox-input-textarea form-control'></textarea>",email:"<input class='bootbox-input bootbox-input-email form-control' autocomplete='off' type='email' />",select:"<select class='bootbox-input bootbox-input-select form-control'></select>",checkbox:"<div class='checkbox'><label><input class='bootbox-input bootbox-input-checkbox' type='checkbox' /></label></div>",date:"<input class='bootbox-input bootbox-input-date form-control' autocomplete=off type='date' />",time:"<input class='bootbox-input bootbox-input-time form-control' autocomplete=off type='time' />",number:"<input class='bootbox-input bootbox-input-number form-control' autocomplete=off type='number' />",password:"<input class='bootbox-input bootbox-input-password form-control' autocomplete='off' type='password' />"}},o={locale:"en",backdrop:!0,animate:!0,className:null,closeButton:!0,show:!0,container:"body"},p={};p.alert=function(){var a;if(a=k("alert",["ok"],["message","callback"],arguments),a.callback&&!b.isFunction(a.callback))throw new Error("alert requires callback property to be a function when provided");return a.buttons.ok.callback=a.onEscape=function(){return b.isFunction(a.callback)?a.callback():!0},p.dialog(a)},p.confirm=function(){var a;if(a=k("confirm",["cancel","confirm"],["message","callback"],arguments),a.buttons.cancel.callback=a.onEscape=function(){return a.callback(!1)},a.buttons.confirm.callback=function(){return a.callback(!0)},!b.isFunction(a.callback))throw new Error("confirm requires a callback");return p.dialog(a)},p.prompt=function(){var a,d,e,f,h,i,k;if(f=b(n.form),d={className:"bootbox-prompt",buttons:l("cancel","confirm"),value:"",inputType:"text"},a=m(j(d,arguments,["title","callback"]),["cancel","confirm"]),i=a.show===c?!0:a.show,a.message=f,a.buttons.cancel.callback=a.onEscape=function(){return a.callback(null)},a.buttons.confirm.callback=function(){var c;switch(a.inputType){case"text":case"textarea":case"email":case"select":case"date":case"time":case"number":case"password":c=h.val();break;case"checkbox":var d=h.find("input:checked");c=[],g(d,function(a,d){c.push(b(d).val())})}return a.callback(c)},a.show=!1,!a.title)throw new Error("prompt requires a title");if(!b.isFunction(a.callback))throw new Error("prompt requires a callback");if(!n.inputs[a.inputType])throw new Error("invalid prompt type");switch(h=b(n.inputs[a.inputType]),a.inputType){case"text":case"textarea":case"email":case"date":case"time":case"number":case"password":h.val(a.value);break;case"select":var o={};if(k=a.inputOptions||[],!k.length)throw new Error("prompt with select requires options");g(k,function(a,d){var e=h;if(d.value===c||d.text===c)throw new Error("given options in wrong format");d.group&&(o[d.group]||(o[d.group]=b("<optgroup/>").attr("label",d.group)),e=o[d.group]),e.append("<option value='"+d.value+"'>"+d.text+"</option>")}),g(o,function(a,b){h.append(b)}),h.val(a.value);break;case"checkbox":var q=b.isArray(a.value)?a.value:[a.value];if(k=a.inputOptions||[],!k.length)throw new Error("prompt with checkbox requires options");if(!k[0].value||!k[0].text)throw new Error("given options in wrong format");h=b("<div/>"),g(k,function(c,d){var e=b(n.inputs[a.inputType]);e.find("input").attr("value",d.value),e.find("label").append(d.text),g(q,function(a,b){b===d.value&&e.find("input").prop("checked",!0)}),h.append(e)})}return a.placeholder&&h.attr("placeholder",a.placeholder),a.pattern&&h.attr("pattern",a.pattern),f.append(h),f.on("submit",function(a){a.preventDefault(),a.stopPropagation(),e.find(".btn-primary").click()}),e=p.dialog(a),e.off("shown.bs.modal"),e.on("shown.bs.modal",function(){h.focus()}),i===!0&&e.modal("show"),e},p.dialog=function(a){a=h(a);var c=b(n.dialog),d=c.find(".modal-dialog"),f=c.find(".modal-body"),i=a.buttons,j="",k={onEscape:a.onEscape};if(g(i,function(a,b){j+="<button data-bb-handler='"+a+"' type='button' class='btn "+b.className+"'>"+b.label+"</button>",k[a]=b.callback}),f.find(".bootbox-body").html(a.message),a.animate===!0&&c.addClass("fade"),a.className&&c.addClass(a.className),"large"===a.size&&d.addClass("modal-lg"),"small"===a.size&&d.addClass("modal-sm"),a.title&&f.before(n.header),a.closeButton){var l=b(n.closeButton);a.title?c.find(".modal-header").prepend(l):l.css("margin-top","-10px").prependTo(f)}return a.title&&c.find(".modal-title").html(a.title),j.length&&(f.after(n.footer),c.find(".modal-footer").html(j)),c.on("hidden.bs.modal",function(a){a.target===this&&c.remove()}),c.on("shown.bs.modal",function(){c.find(".btn-primary:first").focus()}),c.on("escape.close.bb",function(a){k.onEscape&&e(a,c,k.onEscape)}),c.on("click",".modal-footer button",function(a){var d=b(this).data("bb-handler");e(a,c,k[d])}),c.on("click",".bootbox-close-button",function(a){e(a,c,k.onEscape)}),c.on("keyup",function(a){27===a.which&&c.trigger("escape.close.bb")}),b(a.container).append(c),c.modal({backdrop:a.backdrop,keyboard:!1,show:!1}),a.show&&c.modal("show"),c},p.setDefaults=function(){var a={};2===arguments.length?a[arguments[0]]=arguments[1]:a=arguments[0],b.extend(o,a)},p.hideAll=function(){return b(".bootbox").modal("hide"),p};var q={br:{OK:"OK",CANCEL:"Cancelar",CONFIRM:"Sim"},cs:{OK:"OK",CANCEL:"ZruÅ¡it",CONFIRM:"Potvrdit"},da:{OK:"OK",CANCEL:"Annuller",CONFIRM:"Accepter"},de:{OK:"OK",CANCEL:"Abbrechen",CONFIRM:"Akzeptieren"},el:{OK:"Εντάξει",CANCEL:"ΑκÏÏωση",CONFIRM:"Επιβεβαίωση"},en:{OK:"OK",CANCEL:"Cancel",CONFIRM:"OK"},es:{OK:"OK",CANCEL:"Cancelar",CONFIRM:"Aceptar"},et:{OK:"OK",CANCEL:"Katkesta",CONFIRM:"OK"},fi:{OK:"OK",CANCEL:"Peruuta",CONFIRM:"OK"},fr:{OK:"OK",CANCEL:"Annuler",CONFIRM:"D'accord"},he:{OK:"×ישור",CANCEL:"ביטול",CONFIRM:"×ישור"},id:{OK:"OK",CANCEL:"Batal",CONFIRM:"OK"},it:{OK:"OK",CANCEL:"Annulla",CONFIRM:"Conferma"},ja:{OK:"OK",CANCEL:"キャンセル",CONFIRM:"確èª"},lt:{OK:"Gerai",CANCEL:"AtÅ¡aukti",CONFIRM:"Patvirtinti"},lv:{OK:"Labi",CANCEL:"Atcelt",CONFIRM:"ApstiprinÄt"},nl:{OK:"OK",CANCEL:"Annuleren",CONFIRM:"Accepteren"},no:{OK:"OK",CANCEL:"Avbryt",CONFIRM:"OK"},pl:{OK:"OK",CANCEL:"Anuluj",CONFIRM:"Potwierdź"},pt:{OK:"OK",CANCEL:"Cancelar",CONFIRM:"Confirmar"},ru:{OK:"OK",CANCEL:"Отмена",CONFIRM:"Применить"},sv:{OK:"OK",CANCEL:"Avbryt",CONFIRM:"OK"},tr:{OK:"Tamam",CANCEL:"Ä°ptal",CONFIRM:"Onayla"},zh_CN:{OK:"OK",CANCEL:"å–消",CONFIRM:"确认"},zh_TW:{OK:"OK",CANCEL:"å–消",CONFIRM:"確èª"}};return p.init=function(c){return a(c||b)},p}); \ No newline at end of file
diff --git a/library/bootstrap/js/bootstrap.js b/library/bootstrap/js/bootstrap.js
index 8ae571b6d..b6ac8d990 100644
--- a/library/bootstrap/js/bootstrap.js
+++ b/library/bootstrap/js/bootstrap.js
@@ -1,13 +1,22 @@
/*!
- * Bootstrap v3.1.1 (http://getbootstrap.com)
+ * Bootstrap v3.3.1 (http://getbootstrap.com)
* Copyright 2011-2014 Twitter, Inc.
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
*/
-if (typeof jQuery === 'undefined') { throw new Error('Bootstrap\'s JavaScript requires jQuery') }
+if (typeof jQuery === 'undefined') {
+ throw new Error('Bootstrap\'s JavaScript requires jQuery')
+}
+
++function ($) {
+ var version = $.fn.jquery.split(' ')[0].split('.')
+ if ((version[0] < 2 && version[1] < 9) || (version[0] == 1 && version[1] == 9 && version[2] < 1)) {
+ throw new Error('Bootstrap\'s JavaScript requires jQuery version 1.9.1 or higher')
+ }
+}(jQuery);
/* ========================================================================
- * Bootstrap: transition.js v3.1.1
+ * Bootstrap: transition.js v3.3.1
* http://getbootstrap.com/javascript/#transitions
* ========================================================================
* Copyright 2011-2014 Twitter, Inc.
@@ -25,10 +34,10 @@ if (typeof jQuery === 'undefined') { throw new Error('Bootstrap\'s JavaScript re
var el = document.createElement('bootstrap')
var transEndEventNames = {
- 'WebkitTransition' : 'webkitTransitionEnd',
- 'MozTransition' : 'transitionend',
- 'OTransition' : 'oTransitionEnd otransitionend',
- 'transition' : 'transitionend'
+ WebkitTransition : 'webkitTransitionEnd',
+ MozTransition : 'transitionend',
+ OTransition : 'oTransitionEnd otransitionend',
+ transition : 'transitionend'
}
for (var name in transEndEventNames) {
@@ -42,8 +51,9 @@ if (typeof jQuery === 'undefined') { throw new Error('Bootstrap\'s JavaScript re
// http://blog.alexmaccaw.com/css-transitions
$.fn.emulateTransitionEnd = function (duration) {
- var called = false, $el = this
- $(this).one($.support.transition.end, function () { called = true })
+ var called = false
+ var $el = this
+ $(this).one('bsTransitionEnd', function () { called = true })
var callback = function () { if (!called) $($el).trigger($.support.transition.end) }
setTimeout(callback, duration)
return this
@@ -51,12 +61,22 @@ if (typeof jQuery === 'undefined') { throw new Error('Bootstrap\'s JavaScript re
$(function () {
$.support.transition = transitionEnd()
+
+ if (!$.support.transition) return
+
+ $.event.special.bsTransitionEnd = {
+ bindType: $.support.transition.end,
+ delegateType: $.support.transition.end,
+ handle: function (e) {
+ if ($(e.target).is(this)) return e.handleObj.handler.apply(this, arguments)
+ }
+ }
})
}(jQuery);
/* ========================================================================
- * Bootstrap: alert.js v3.1.1
+ * Bootstrap: alert.js v3.3.1
* http://getbootstrap.com/javascript/#alerts
* ========================================================================
* Copyright 2011-2014 Twitter, Inc.
@@ -75,6 +95,10 @@ if (typeof jQuery === 'undefined') { throw new Error('Bootstrap\'s JavaScript re
$(el).on('click', dismiss, this.close)
}
+ Alert.VERSION = '3.3.1'
+
+ Alert.TRANSITION_DURATION = 150
+
Alert.prototype.close = function (e) {
var $this = $(this)
var selector = $this.attr('data-target')
@@ -89,7 +113,7 @@ if (typeof jQuery === 'undefined') { throw new Error('Bootstrap\'s JavaScript re
if (e) e.preventDefault()
if (!$parent.length) {
- $parent = $this.hasClass('alert') ? $this : $this.parent()
+ $parent = $this.closest('.alert')
}
$parent.trigger(e = $.Event('close.bs.alert'))
@@ -99,13 +123,14 @@ if (typeof jQuery === 'undefined') { throw new Error('Bootstrap\'s JavaScript re
$parent.removeClass('in')
function removeElement() {
- $parent.trigger('closed.bs.alert').remove()
+ // detach from parent, fire event then clean up data
+ $parent.detach().trigger('closed.bs.alert').remove()
}
$.support.transition && $parent.hasClass('fade') ?
$parent
- .one($.support.transition.end, removeElement)
- .emulateTransitionEnd(150) :
+ .one('bsTransitionEnd', removeElement)
+ .emulateTransitionEnd(Alert.TRANSITION_DURATION) :
removeElement()
}
@@ -113,9 +138,7 @@ if (typeof jQuery === 'undefined') { throw new Error('Bootstrap\'s JavaScript re
// ALERT PLUGIN DEFINITION
// =======================
- var old = $.fn.alert
-
- $.fn.alert = function (option) {
+ function Plugin(option) {
return this.each(function () {
var $this = $(this)
var data = $this.data('bs.alert')
@@ -125,6 +148,9 @@ if (typeof jQuery === 'undefined') { throw new Error('Bootstrap\'s JavaScript re
})
}
+ var old = $.fn.alert
+
+ $.fn.alert = Plugin
$.fn.alert.Constructor = Alert
@@ -145,7 +171,7 @@ if (typeof jQuery === 'undefined') { throw new Error('Bootstrap\'s JavaScript re
}(jQuery);
/* ========================================================================
- * Bootstrap: button.js v3.1.1
+ * Bootstrap: button.js v3.3.1
* http://getbootstrap.com/javascript/#buttons
* ========================================================================
* Copyright 2011-2014 Twitter, Inc.
@@ -165,6 +191,8 @@ if (typeof jQuery === 'undefined') { throw new Error('Bootstrap\'s JavaScript re
this.isLoading = false
}
+ Button.VERSION = '3.3.1'
+
Button.DEFAULTS = {
loadingText: 'loading...'
}
@@ -177,12 +205,12 @@ if (typeof jQuery === 'undefined') { throw new Error('Bootstrap\'s JavaScript re
state = state + 'Text'
- if (!data.resetText) $el.data('resetText', $el[val]())
-
- $el[val](data[state] || this.options[state])
+ if (data.resetText == null) $el.data('resetText', $el[val]())
// push to event loop to allow forms to submit
setTimeout($.proxy(function () {
+ $el[val](data[state] == null ? this.options[state] : data[state])
+
if (state == 'loadingText') {
this.isLoading = true
$el.addClass(d).attr(d, d)
@@ -204,6 +232,8 @@ if (typeof jQuery === 'undefined') { throw new Error('Bootstrap\'s JavaScript re
else $parent.find('.active').removeClass('active')
}
if (changed) $input.prop('checked', !this.$element.hasClass('active')).trigger('change')
+ } else {
+ this.$element.attr('aria-pressed', !this.$element.hasClass('active'))
}
if (changed) this.$element.toggleClass('active')
@@ -213,9 +243,7 @@ if (typeof jQuery === 'undefined') { throw new Error('Bootstrap\'s JavaScript re
// BUTTON PLUGIN DEFINITION
// ========================
- var old = $.fn.button
-
- $.fn.button = function (option) {
+ function Plugin(option) {
return this.each(function () {
var $this = $(this)
var data = $this.data('bs.button')
@@ -228,6 +256,9 @@ if (typeof jQuery === 'undefined') { throw new Error('Bootstrap\'s JavaScript re
})
}
+ var old = $.fn.button
+
+ $.fn.button = Plugin
$.fn.button.Constructor = Button
@@ -243,17 +274,21 @@ if (typeof jQuery === 'undefined') { throw new Error('Bootstrap\'s JavaScript re
// BUTTON DATA-API
// ===============
- $(document).on('click.bs.button.data-api', '[data-toggle^=button]', function (e) {
- var $btn = $(e.target)
- if (!$btn.hasClass('btn')) $btn = $btn.closest('.btn')
- $btn.button('toggle')
- e.preventDefault()
- })
+ $(document)
+ .on('click.bs.button.data-api', '[data-toggle^="button"]', function (e) {
+ var $btn = $(e.target)
+ if (!$btn.hasClass('btn')) $btn = $btn.closest('.btn')
+ Plugin.call($btn, 'toggle')
+ e.preventDefault()
+ })
+ .on('focus.bs.button.data-api blur.bs.button.data-api', '[data-toggle^="button"]', function (e) {
+ $(e.target).closest('.btn').toggleClass('focus', /^focus(in)?$/.test(e.type))
+ })
}(jQuery);
/* ========================================================================
- * Bootstrap: carousel.js v3.1.1
+ * Bootstrap: carousel.js v3.3.1
* http://getbootstrap.com/javascript/#carousel
* ========================================================================
* Copyright 2011-2014 Twitter, Inc.
@@ -277,18 +312,36 @@ if (typeof jQuery === 'undefined') { throw new Error('Bootstrap\'s JavaScript re
this.$active =
this.$items = null
- this.options.pause == 'hover' && this.$element
- .on('mouseenter', $.proxy(this.pause, this))
- .on('mouseleave', $.proxy(this.cycle, this))
+ this.options.keyboard && this.$element.on('keydown.bs.carousel', $.proxy(this.keydown, this))
+
+ this.options.pause == 'hover' && !('ontouchstart' in document.documentElement) && this.$element
+ .on('mouseenter.bs.carousel', $.proxy(this.pause, this))
+ .on('mouseleave.bs.carousel', $.proxy(this.cycle, this))
}
+ Carousel.VERSION = '3.3.1'
+
+ Carousel.TRANSITION_DURATION = 600
+
Carousel.DEFAULTS = {
interval: 5000,
pause: 'hover',
- wrap: true
+ wrap: true,
+ keyboard: true
+ }
+
+ Carousel.prototype.keydown = function (e) {
+ if (/input|textarea/i.test(e.target.tagName)) return
+ switch (e.which) {
+ case 37: this.prev(); break
+ case 39: this.next(); break
+ default: return
+ }
+
+ e.preventDefault()
}
- Carousel.prototype.cycle = function (e) {
+ Carousel.prototype.cycle = function (e) {
e || (this.paused = false)
this.interval && clearInterval(this.interval)
@@ -300,23 +353,28 @@ if (typeof jQuery === 'undefined') { throw new Error('Bootstrap\'s JavaScript re
return this
}
- Carousel.prototype.getActiveIndex = function () {
- this.$active = this.$element.find('.item.active')
- this.$items = this.$active.parent().children()
+ Carousel.prototype.getItemIndex = function (item) {
+ this.$items = item.parent().children('.item')
+ return this.$items.index(item || this.$active)
+ }
- return this.$items.index(this.$active)
+ Carousel.prototype.getItemForDirection = function (direction, active) {
+ var delta = direction == 'prev' ? -1 : 1
+ var activeIndex = this.getItemIndex(active)
+ var itemIndex = (activeIndex + delta) % this.$items.length
+ return this.$items.eq(itemIndex)
}
Carousel.prototype.to = function (pos) {
var that = this
- var activeIndex = this.getActiveIndex()
+ var activeIndex = this.getItemIndex(this.$active = this.$element.find('.item.active'))
if (pos > (this.$items.length - 1) || pos < 0) return
- if (this.sliding) return this.$element.one('slid.bs.carousel', function () { that.to(pos) })
+ if (this.sliding) return this.$element.one('slid.bs.carousel', function () { that.to(pos) }) // yes, "slid"
if (activeIndex == pos) return this.pause().cycle()
- return this.slide(pos > activeIndex ? 'next' : 'prev', $(this.$items[pos]))
+ return this.slide(pos > activeIndex ? 'next' : 'prev', this.$items.eq(pos))
}
Carousel.prototype.pause = function (e) {
@@ -344,7 +402,7 @@ if (typeof jQuery === 'undefined') { throw new Error('Bootstrap\'s JavaScript re
Carousel.prototype.slide = function (type, next) {
var $active = this.$element.find('.item.active')
- var $next = next || $active[type]()
+ var $next = next || this.getItemForDirection(type, $active)
var isCycling = this.interval
var direction = type == 'next' ? 'left' : 'right'
var fallback = type == 'next' ? 'first' : 'last'
@@ -355,11 +413,15 @@ if (typeof jQuery === 'undefined') { throw new Error('Bootstrap\'s JavaScript re
$next = this.$element.find('.item')[fallback]()
}
- if ($next.hasClass('active')) return this.sliding = false
+ if ($next.hasClass('active')) return (this.sliding = false)
- var e = $.Event('slide.bs.carousel', { relatedTarget: $next[0], direction: direction })
- this.$element.trigger(e)
- if (e.isDefaultPrevented()) return
+ var relatedTarget = $next[0]
+ var slideEvent = $.Event('slide.bs.carousel', {
+ relatedTarget: relatedTarget,
+ direction: direction
+ })
+ this.$element.trigger(slideEvent)
+ if (slideEvent.isDefaultPrevented()) return
this.sliding = true
@@ -367,30 +429,31 @@ if (typeof jQuery === 'undefined') { throw new Error('Bootstrap\'s JavaScript re
if (this.$indicators.length) {
this.$indicators.find('.active').removeClass('active')
- this.$element.one('slid.bs.carousel', function () {
- var $nextIndicator = $(that.$indicators.children()[that.getActiveIndex()])
- $nextIndicator && $nextIndicator.addClass('active')
- })
+ var $nextIndicator = $(this.$indicators.children()[this.getItemIndex($next)])
+ $nextIndicator && $nextIndicator.addClass('active')
}
+ var slidEvent = $.Event('slid.bs.carousel', { relatedTarget: relatedTarget, direction: direction }) // yes, "slid"
if ($.support.transition && this.$element.hasClass('slide')) {
$next.addClass(type)
$next[0].offsetWidth // force reflow
$active.addClass(direction)
$next.addClass(direction)
$active
- .one($.support.transition.end, function () {
+ .one('bsTransitionEnd', function () {
$next.removeClass([type, direction].join(' ')).addClass('active')
$active.removeClass(['active', direction].join(' '))
that.sliding = false
- setTimeout(function () { that.$element.trigger('slid.bs.carousel') }, 0)
+ setTimeout(function () {
+ that.$element.trigger(slidEvent)
+ }, 0)
})
- .emulateTransitionEnd($active.css('transition-duration').slice(0, -1) * 1000)
+ .emulateTransitionEnd(Carousel.TRANSITION_DURATION)
} else {
$active.removeClass('active')
$next.addClass('active')
this.sliding = false
- this.$element.trigger('slid.bs.carousel')
+ this.$element.trigger(slidEvent)
}
isCycling && this.cycle()
@@ -402,9 +465,7 @@ if (typeof jQuery === 'undefined') { throw new Error('Bootstrap\'s JavaScript re
// CAROUSEL PLUGIN DEFINITION
// ==========================
- var old = $.fn.carousel
-
- $.fn.carousel = function (option) {
+ function Plugin(option) {
return this.each(function () {
var $this = $(this)
var data = $this.data('bs.carousel')
@@ -418,6 +479,9 @@ if (typeof jQuery === 'undefined') { throw new Error('Bootstrap\'s JavaScript re
})
}
+ var old = $.fn.carousel
+
+ $.fn.carousel = Plugin
$.fn.carousel.Constructor = Carousel
@@ -433,33 +497,39 @@ if (typeof jQuery === 'undefined') { throw new Error('Bootstrap\'s JavaScript re
// CAROUSEL DATA-API
// =================
- $(document).on('click.bs.carousel.data-api', '[data-slide], [data-slide-to]', function (e) {
- var $this = $(this), href
- var $target = $($this.attr('data-target') || (href = $this.attr('href')) && href.replace(/.*(?=#[^\s]+$)/, '')) //strip for ie7
+ var clickHandler = function (e) {
+ var href
+ var $this = $(this)
+ var $target = $($this.attr('data-target') || (href = $this.attr('href')) && href.replace(/.*(?=#[^\s]+$)/, '')) // strip for ie7
+ if (!$target.hasClass('carousel')) return
var options = $.extend({}, $target.data(), $this.data())
var slideIndex = $this.attr('data-slide-to')
if (slideIndex) options.interval = false
- $target.carousel(options)
+ Plugin.call($target, options)
- if (slideIndex = $this.attr('data-slide-to')) {
+ if (slideIndex) {
$target.data('bs.carousel').to(slideIndex)
}
e.preventDefault()
- })
+ }
+
+ $(document)
+ .on('click.bs.carousel.data-api', '[data-slide]', clickHandler)
+ .on('click.bs.carousel.data-api', '[data-slide-to]', clickHandler)
$(window).on('load', function () {
$('[data-ride="carousel"]').each(function () {
var $carousel = $(this)
- $carousel.carousel($carousel.data())
+ Plugin.call($carousel, $carousel.data())
})
})
}(jQuery);
/* ========================================================================
- * Bootstrap: collapse.js v3.1.1
+ * Bootstrap: collapse.js v3.3.1
* http://getbootstrap.com/javascript/#collapse
* ========================================================================
* Copyright 2011-2014 Twitter, Inc.
@@ -476,14 +546,25 @@ if (typeof jQuery === 'undefined') { throw new Error('Bootstrap\'s JavaScript re
var Collapse = function (element, options) {
this.$element = $(element)
this.options = $.extend({}, Collapse.DEFAULTS, options)
+ this.$trigger = $(this.options.trigger).filter('[href="#' + element.id + '"], [data-target="#' + element.id + '"]')
this.transitioning = null
- if (this.options.parent) this.$parent = $(this.options.parent)
+ if (this.options.parent) {
+ this.$parent = this.getParent()
+ } else {
+ this.addAriaAndCollapsedClass(this.$element, this.$trigger)
+ }
+
if (this.options.toggle) this.toggle()
}
+ Collapse.VERSION = '3.3.1'
+
+ Collapse.TRANSITION_DURATION = 350
+
Collapse.DEFAULTS = {
- toggle: true
+ toggle: true,
+ trigger: '[data-toggle="collapse"]'
}
Collapse.prototype.dimension = function () {
@@ -494,35 +575,43 @@ if (typeof jQuery === 'undefined') { throw new Error('Bootstrap\'s JavaScript re
Collapse.prototype.show = function () {
if (this.transitioning || this.$element.hasClass('in')) return
+ var activesData
+ var actives = this.$parent && this.$parent.find('> .panel').children('.in, .collapsing')
+
+ if (actives && actives.length) {
+ activesData = actives.data('bs.collapse')
+ if (activesData && activesData.transitioning) return
+ }
+
var startEvent = $.Event('show.bs.collapse')
this.$element.trigger(startEvent)
if (startEvent.isDefaultPrevented()) return
- var actives = this.$parent && this.$parent.find('> .panel > .in')
-
if (actives && actives.length) {
- var hasData = actives.data('bs.collapse')
- if (hasData && hasData.transitioning) return
- actives.collapse('hide')
- hasData || actives.data('bs.collapse', null)
+ Plugin.call(actives, 'hide')
+ activesData || actives.data('bs.collapse', null)
}
var dimension = this.dimension()
this.$element
.removeClass('collapse')
- .addClass('collapsing')
- [dimension](0)
+ .addClass('collapsing')[dimension](0)
+ .attr('aria-expanded', true)
+
+ this.$trigger
+ .removeClass('collapsed')
+ .attr('aria-expanded', true)
this.transitioning = 1
var complete = function () {
this.$element
.removeClass('collapsing')
- .addClass('collapse in')
- [dimension]('auto')
+ .addClass('collapse in')[dimension]('')
this.transitioning = 0
- this.$element.trigger('shown.bs.collapse')
+ this.$element
+ .trigger('shown.bs.collapse')
}
if (!$.support.transition) return complete.call(this)
@@ -530,9 +619,8 @@ if (typeof jQuery === 'undefined') { throw new Error('Bootstrap\'s JavaScript re
var scrollSize = $.camelCase(['scroll', dimension].join('-'))
this.$element
- .one($.support.transition.end, $.proxy(complete, this))
- .emulateTransitionEnd(350)
- [dimension](this.$element[0][scrollSize])
+ .one('bsTransitionEnd', $.proxy(complete, this))
+ .emulateTransitionEnd(Collapse.TRANSITION_DURATION)[dimension](this.$element[0][scrollSize])
}
Collapse.prototype.hide = function () {
@@ -544,55 +632,85 @@ if (typeof jQuery === 'undefined') { throw new Error('Bootstrap\'s JavaScript re
var dimension = this.dimension()
- this.$element
- [dimension](this.$element[dimension]())
- [0].offsetHeight
+ this.$element[dimension](this.$element[dimension]())[0].offsetHeight
this.$element
.addClass('collapsing')
- .removeClass('collapse')
- .removeClass('in')
+ .removeClass('collapse in')
+ .attr('aria-expanded', false)
+
+ this.$trigger
+ .addClass('collapsed')
+ .attr('aria-expanded', false)
this.transitioning = 1
var complete = function () {
this.transitioning = 0
this.$element
- .trigger('hidden.bs.collapse')
.removeClass('collapsing')
.addClass('collapse')
+ .trigger('hidden.bs.collapse')
}
if (!$.support.transition) return complete.call(this)
this.$element
[dimension](0)
- .one($.support.transition.end, $.proxy(complete, this))
- .emulateTransitionEnd(350)
+ .one('bsTransitionEnd', $.proxy(complete, this))
+ .emulateTransitionEnd(Collapse.TRANSITION_DURATION)
}
Collapse.prototype.toggle = function () {
this[this.$element.hasClass('in') ? 'hide' : 'show']()
}
+ Collapse.prototype.getParent = function () {
+ return $(this.options.parent)
+ .find('[data-toggle="collapse"][data-parent="' + this.options.parent + '"]')
+ .each($.proxy(function (i, element) {
+ var $element = $(element)
+ this.addAriaAndCollapsedClass(getTargetFromTrigger($element), $element)
+ }, this))
+ .end()
+ }
+
+ Collapse.prototype.addAriaAndCollapsedClass = function ($element, $trigger) {
+ var isOpen = $element.hasClass('in')
+
+ $element.attr('aria-expanded', isOpen)
+ $trigger
+ .toggleClass('collapsed', !isOpen)
+ .attr('aria-expanded', isOpen)
+ }
+
+ function getTargetFromTrigger($trigger) {
+ var href
+ var target = $trigger.attr('data-target')
+ || (href = $trigger.attr('href')) && href.replace(/.*(?=#[^\s]+$)/, '') // strip for ie7
+
+ return $(target)
+ }
+
// COLLAPSE PLUGIN DEFINITION
// ==========================
- var old = $.fn.collapse
-
- $.fn.collapse = function (option) {
+ function Plugin(option) {
return this.each(function () {
var $this = $(this)
var data = $this.data('bs.collapse')
var options = $.extend({}, Collapse.DEFAULTS, $this.data(), typeof option == 'object' && option)
- if (!data && options.toggle && option == 'show') option = !option
+ if (!data && options.toggle && option == 'show') options.toggle = false
if (!data) $this.data('bs.collapse', (data = new Collapse(this, options)))
if (typeof option == 'string') data[option]()
})
}
+ var old = $.fn.collapse
+
+ $.fn.collapse = Plugin
$.fn.collapse.Constructor = Collapse
@@ -608,29 +726,22 @@ if (typeof jQuery === 'undefined') { throw new Error('Bootstrap\'s JavaScript re
// COLLAPSE DATA-API
// =================
- $(document).on('click.bs.collapse.data-api', '[data-toggle=collapse]', function (e) {
- var $this = $(this), href
- var target = $this.attr('data-target')
- || e.preventDefault()
- || (href = $this.attr('href')) && href.replace(/.*(?=#[^\s]+$)/, '') //strip for ie7
- var $target = $(target)
- var data = $target.data('bs.collapse')
- var option = data ? 'toggle' : $this.data()
- var parent = $this.attr('data-parent')
- var $parent = parent && $(parent)
+ $(document).on('click.bs.collapse.data-api', '[data-toggle="collapse"]', function (e) {
+ var $this = $(this)
- if (!data || !data.transitioning) {
- if ($parent) $parent.find('[data-toggle=collapse][data-parent="' + parent + '"]').not($this).addClass('collapsed')
- $this[$target.hasClass('in') ? 'addClass' : 'removeClass']('collapsed')
- }
+ if (!$this.attr('data-target')) e.preventDefault()
- $target.collapse(option)
+ var $target = getTargetFromTrigger($this)
+ var data = $target.data('bs.collapse')
+ var option = data ? 'toggle' : $.extend({}, $this.data(), { trigger: this })
+
+ Plugin.call($target, option)
})
}(jQuery);
/* ========================================================================
- * Bootstrap: dropdown.js v3.1.1
+ * Bootstrap: dropdown.js v3.3.1
* http://getbootstrap.com/javascript/#dropdowns
* ========================================================================
* Copyright 2011-2014 Twitter, Inc.
@@ -645,11 +756,13 @@ if (typeof jQuery === 'undefined') { throw new Error('Bootstrap\'s JavaScript re
// =========================
var backdrop = '.dropdown-backdrop'
- var toggle = '[data-toggle=dropdown]'
+ var toggle = '[data-toggle="dropdown"]'
var Dropdown = function (element) {
$(element).on('click.bs.dropdown', this.toggle)
}
+ Dropdown.VERSION = '3.3.1'
+
Dropdown.prototype.toggle = function (e) {
var $this = $(this)
@@ -671,18 +784,20 @@ if (typeof jQuery === 'undefined') { throw new Error('Bootstrap\'s JavaScript re
if (e.isDefaultPrevented()) return
+ $this
+ .trigger('focus')
+ .attr('aria-expanded', 'true')
+
$parent
.toggleClass('open')
.trigger('shown.bs.dropdown', relatedTarget)
-
- $this.focus()
}
return false
}
Dropdown.prototype.keydown = function (e) {
- if (!/(38|40|27)/.test(e.keyCode)) return
+ if (!/(38|40|27|32)/.test(e.which) || /input|textarea/i.test(e.target.tagName)) return
var $this = $(this)
@@ -694,33 +809,40 @@ if (typeof jQuery === 'undefined') { throw new Error('Bootstrap\'s JavaScript re
var $parent = getParent($this)
var isActive = $parent.hasClass('open')
- if (!isActive || (isActive && e.keyCode == 27)) {
- if (e.which == 27) $parent.find(toggle).focus()
- return $this.click()
+ if ((!isActive && e.which != 27) || (isActive && e.which == 27)) {
+ if (e.which == 27) $parent.find(toggle).trigger('focus')
+ return $this.trigger('click')
}
var desc = ' li:not(.divider):visible a'
- var $items = $parent.find('[role=menu]' + desc + ', [role=listbox]' + desc)
+ var $items = $parent.find('[role="menu"]' + desc + ', [role="listbox"]' + desc)
if (!$items.length) return
- var index = $items.index($items.filter(':focus'))
+ var index = $items.index(e.target)
- if (e.keyCode == 38 && index > 0) index-- // up
- if (e.keyCode == 40 && index < $items.length - 1) index++ // down
+ if (e.which == 38 && index > 0) index-- // up
+ if (e.which == 40 && index < $items.length - 1) index++ // down
if (!~index) index = 0
- $items.eq(index).focus()
+ $items.eq(index).trigger('focus')
}
function clearMenus(e) {
+ if (e && e.which === 3) return
$(backdrop).remove()
$(toggle).each(function () {
- var $parent = getParent($(this))
+ var $this = $(this)
+ var $parent = getParent($this)
var relatedTarget = { relatedTarget: this }
+
if (!$parent.hasClass('open')) return
+
$parent.trigger(e = $.Event('hide.bs.dropdown', relatedTarget))
+
if (e.isDefaultPrevented()) return
+
+ $this.attr('aria-expanded', 'false')
$parent.removeClass('open').trigger('hidden.bs.dropdown', relatedTarget)
})
}
@@ -730,7 +852,7 @@ if (typeof jQuery === 'undefined') { throw new Error('Bootstrap\'s JavaScript re
if (!selector) {
selector = $this.attr('href')
- selector = selector && /#[A-Za-z]/.test(selector) && selector.replace(/.*(?=#[^\s]*$)/, '') //strip for ie7
+ selector = selector && /#[A-Za-z]/.test(selector) && selector.replace(/.*(?=#[^\s]*$)/, '') // strip for ie7
}
var $parent = selector && $(selector)
@@ -742,9 +864,7 @@ if (typeof jQuery === 'undefined') { throw new Error('Bootstrap\'s JavaScript re
// DROPDOWN PLUGIN DEFINITION
// ==========================
- var old = $.fn.dropdown
-
- $.fn.dropdown = function (option) {
+ function Plugin(option) {
return this.each(function () {
var $this = $(this)
var data = $this.data('bs.dropdown')
@@ -754,6 +874,9 @@ if (typeof jQuery === 'undefined') { throw new Error('Bootstrap\'s JavaScript re
})
}
+ var old = $.fn.dropdown
+
+ $.fn.dropdown = Plugin
$.fn.dropdown.Constructor = Dropdown
@@ -773,12 +896,14 @@ if (typeof jQuery === 'undefined') { throw new Error('Bootstrap\'s JavaScript re
.on('click.bs.dropdown.data-api', clearMenus)
.on('click.bs.dropdown.data-api', '.dropdown form', function (e) { e.stopPropagation() })
.on('click.bs.dropdown.data-api', toggle, Dropdown.prototype.toggle)
- .on('keydown.bs.dropdown.data-api', toggle + ', [role=menu], [role=listbox]', Dropdown.prototype.keydown)
+ .on('keydown.bs.dropdown.data-api', toggle, Dropdown.prototype.keydown)
+ .on('keydown.bs.dropdown.data-api', '[role="menu"]', Dropdown.prototype.keydown)
+ .on('keydown.bs.dropdown.data-api', '[role="listbox"]', Dropdown.prototype.keydown)
}(jQuery);
/* ========================================================================
- * Bootstrap: modal.js v3.1.1
+ * Bootstrap: modal.js v3.3.1
* http://getbootstrap.com/javascript/#modals
* ========================================================================
* Copyright 2011-2014 Twitter, Inc.
@@ -793,10 +918,12 @@ if (typeof jQuery === 'undefined') { throw new Error('Bootstrap\'s JavaScript re
// ======================
var Modal = function (element, options) {
- this.options = options
- this.$element = $(element)
- this.$backdrop =
- this.isShown = null
+ this.options = options
+ this.$body = $(document.body)
+ this.$element = $(element)
+ this.$backdrop =
+ this.isShown = null
+ this.scrollbarWidth = 0
if (this.options.remote) {
this.$element
@@ -807,6 +934,11 @@ if (typeof jQuery === 'undefined') { throw new Error('Bootstrap\'s JavaScript re
}
}
+ Modal.VERSION = '3.3.1'
+
+ Modal.TRANSITION_DURATION = 300
+ Modal.BACKDROP_TRANSITION_DURATION = 150
+
Modal.DEFAULTS = {
backdrop: true,
keyboard: true,
@@ -814,7 +946,7 @@ if (typeof jQuery === 'undefined') { throw new Error('Bootstrap\'s JavaScript re
}
Modal.prototype.toggle = function (_relatedTarget) {
- return this[!this.isShown ? 'show' : 'hide'](_relatedTarget)
+ return this.isShown ? this.hide() : this.show(_relatedTarget)
}
Modal.prototype.show = function (_relatedTarget) {
@@ -827,7 +959,12 @@ if (typeof jQuery === 'undefined') { throw new Error('Bootstrap\'s JavaScript re
this.isShown = true
+ this.checkScrollbar()
+ this.setScrollbar()
+ this.$body.addClass('modal-open')
+
this.escape()
+ this.resize()
this.$element.on('click.dismiss.bs.modal', '[data-dismiss="modal"]', $.proxy(this.hide, this))
@@ -835,13 +972,16 @@ if (typeof jQuery === 'undefined') { throw new Error('Bootstrap\'s JavaScript re
var transition = $.support.transition && that.$element.hasClass('fade')
if (!that.$element.parent().length) {
- that.$element.appendTo(document.body) // don't move modals dom position
+ that.$element.appendTo(that.$body) // don't move modals dom position
}
that.$element
.show()
.scrollTop(0)
+ if (that.options.backdrop) that.adjustBackdrop()
+ that.adjustDialog()
+
if (transition) {
that.$element[0].offsetWidth // force reflow
}
@@ -856,11 +996,11 @@ if (typeof jQuery === 'undefined') { throw new Error('Bootstrap\'s JavaScript re
transition ?
that.$element.find('.modal-dialog') // wait for modal to slide in
- .one($.support.transition.end, function () {
- that.$element.focus().trigger(e)
+ .one('bsTransitionEnd', function () {
+ that.$element.trigger('focus').trigger(e)
})
- .emulateTransitionEnd(300) :
- that.$element.focus().trigger(e)
+ .emulateTransitionEnd(Modal.TRANSITION_DURATION) :
+ that.$element.trigger('focus').trigger(e)
})
}
@@ -876,6 +1016,7 @@ if (typeof jQuery === 'undefined') { throw new Error('Bootstrap\'s JavaScript re
this.isShown = false
this.escape()
+ this.resize()
$(document).off('focusin.bs.modal')
@@ -886,8 +1027,8 @@ if (typeof jQuery === 'undefined') { throw new Error('Bootstrap\'s JavaScript re
$.support.transition && this.$element.hasClass('fade') ?
this.$element
- .one($.support.transition.end, $.proxy(this.hideModal, this))
- .emulateTransitionEnd(300) :
+ .one('bsTransitionEnd', $.proxy(this.hideModal, this))
+ .emulateTransitionEnd(Modal.TRANSITION_DURATION) :
this.hideModal()
}
@@ -896,18 +1037,26 @@ if (typeof jQuery === 'undefined') { throw new Error('Bootstrap\'s JavaScript re
.off('focusin.bs.modal') // guard against infinite focus loop
.on('focusin.bs.modal', $.proxy(function (e) {
if (this.$element[0] !== e.target && !this.$element.has(e.target).length) {
- this.$element.focus()
+ this.$element.trigger('focus')
}
}, this))
}
Modal.prototype.escape = function () {
if (this.isShown && this.options.keyboard) {
- this.$element.on('keyup.dismiss.bs.modal', $.proxy(function (e) {
+ this.$element.on('keydown.dismiss.bs.modal', $.proxy(function (e) {
e.which == 27 && this.hide()
}, this))
} else if (!this.isShown) {
- this.$element.off('keyup.dismiss.bs.modal')
+ this.$element.off('keydown.dismiss.bs.modal')
+ }
+ }
+
+ Modal.prototype.resize = function () {
+ if (this.isShown) {
+ $(window).on('resize.bs.modal', $.proxy(this.handleUpdate, this))
+ } else {
+ $(window).off('resize.bs.modal')
}
}
@@ -915,7 +1064,9 @@ if (typeof jQuery === 'undefined') { throw new Error('Bootstrap\'s JavaScript re
var that = this
this.$element.hide()
this.backdrop(function () {
- that.removeBackdrop()
+ that.$body.removeClass('modal-open')
+ that.resetAdjustments()
+ that.resetScrollbar()
that.$element.trigger('hidden.bs.modal')
})
}
@@ -926,20 +1077,20 @@ if (typeof jQuery === 'undefined') { throw new Error('Bootstrap\'s JavaScript re
}
Modal.prototype.backdrop = function (callback) {
+ var that = this
var animate = this.$element.hasClass('fade') ? 'fade' : ''
if (this.isShown && this.options.backdrop) {
var doAnimate = $.support.transition && animate
this.$backdrop = $('<div class="modal-backdrop ' + animate + '" />')
- .appendTo(document.body)
-
- this.$element.on('click.dismiss.bs.modal', $.proxy(function (e) {
- if (e.target !== e.currentTarget) return
- this.options.backdrop == 'static'
- ? this.$element[0].focus.call(this.$element[0])
- : this.hide.call(this)
- }, this))
+ .prependTo(this.$element)
+ .on('click.dismiss.bs.modal', $.proxy(function (e) {
+ if (e.target !== e.currentTarget) return
+ this.options.backdrop == 'static'
+ ? this.$element[0].focus.call(this.$element[0])
+ : this.hide.call(this)
+ }, this))
if (doAnimate) this.$backdrop[0].offsetWidth // force reflow
@@ -949,31 +1100,85 @@ if (typeof jQuery === 'undefined') { throw new Error('Bootstrap\'s JavaScript re
doAnimate ?
this.$backdrop
- .one($.support.transition.end, callback)
- .emulateTransitionEnd(150) :
+ .one('bsTransitionEnd', callback)
+ .emulateTransitionEnd(Modal.BACKDROP_TRANSITION_DURATION) :
callback()
} else if (!this.isShown && this.$backdrop) {
this.$backdrop.removeClass('in')
+ var callbackRemove = function () {
+ that.removeBackdrop()
+ callback && callback()
+ }
$.support.transition && this.$element.hasClass('fade') ?
this.$backdrop
- .one($.support.transition.end, callback)
- .emulateTransitionEnd(150) :
- callback()
+ .one('bsTransitionEnd', callbackRemove)
+ .emulateTransitionEnd(Modal.BACKDROP_TRANSITION_DURATION) :
+ callbackRemove()
} else if (callback) {
callback()
}
}
+ // these following methods are used to handle overflowing modals
+
+ Modal.prototype.handleUpdate = function () {
+ if (this.options.backdrop) this.adjustBackdrop()
+ this.adjustDialog()
+ }
+
+ Modal.prototype.adjustBackdrop = function () {
+ this.$backdrop
+ .css('height', 0)
+ .css('height', this.$element[0].scrollHeight)
+ }
+
+ Modal.prototype.adjustDialog = function () {
+ var modalIsOverflowing = this.$element[0].scrollHeight > document.documentElement.clientHeight
+
+ this.$element.css({
+ paddingLeft: !this.bodyIsOverflowing && modalIsOverflowing ? this.scrollbarWidth : '',
+ paddingRight: this.bodyIsOverflowing && !modalIsOverflowing ? this.scrollbarWidth : ''
+ })
+ }
+
+ Modal.prototype.resetAdjustments = function () {
+ this.$element.css({
+ paddingLeft: '',
+ paddingRight: ''
+ })
+ }
+
+ Modal.prototype.checkScrollbar = function () {
+ this.bodyIsOverflowing = document.body.scrollHeight > document.documentElement.clientHeight
+ this.scrollbarWidth = this.measureScrollbar()
+ }
+
+ Modal.prototype.setScrollbar = function () {
+ var bodyPad = parseInt((this.$body.css('padding-right') || 0), 10)
+ if (this.bodyIsOverflowing) this.$body.css('padding-right', bodyPad + this.scrollbarWidth)
+ }
+
+ Modal.prototype.resetScrollbar = function () {
+ this.$body.css('padding-right', '')
+ }
+
+ Modal.prototype.measureScrollbar = function () { // thx walsh
+ var scrollDiv = document.createElement('div')
+ scrollDiv.className = 'modal-scrollbar-measure'
+ this.$body.append(scrollDiv)
+ var scrollbarWidth = scrollDiv.offsetWidth - scrollDiv.clientWidth
+ this.$body[0].removeChild(scrollDiv)
+ return scrollbarWidth
+ }
+
// MODAL PLUGIN DEFINITION
// =======================
- var old = $.fn.modal
-
- $.fn.modal = function (option, _relatedTarget) {
+ function Plugin(option, _relatedTarget) {
return this.each(function () {
var $this = $(this)
var data = $this.data('bs.modal')
@@ -985,6 +1190,9 @@ if (typeof jQuery === 'undefined') { throw new Error('Bootstrap\'s JavaScript re
})
}
+ var old = $.fn.modal
+
+ $.fn.modal = Plugin
$.fn.modal.Constructor = Modal
@@ -1003,26 +1211,24 @@ if (typeof jQuery === 'undefined') { throw new Error('Bootstrap\'s JavaScript re
$(document).on('click.bs.modal.data-api', '[data-toggle="modal"]', function (e) {
var $this = $(this)
var href = $this.attr('href')
- var $target = $($this.attr('data-target') || (href && href.replace(/.*(?=#[^\s]+$)/, ''))) //strip for ie7
+ var $target = $($this.attr('data-target') || (href && href.replace(/.*(?=#[^\s]+$)/, ''))) // strip for ie7
var option = $target.data('bs.modal') ? 'toggle' : $.extend({ remote: !/#/.test(href) && href }, $target.data(), $this.data())
if ($this.is('a')) e.preventDefault()
- $target
- .modal(option, this)
- .one('hide', function () {
- $this.is(':visible') && $this.focus()
+ $target.one('show.bs.modal', function (showEvent) {
+ if (showEvent.isDefaultPrevented()) return // only register focus restorer if modal will actually get shown
+ $target.one('hidden.bs.modal', function () {
+ $this.is(':visible') && $this.trigger('focus')
})
+ })
+ Plugin.call($target, option, this)
})
- $(document)
- .on('show.bs.modal', '.modal', function () { $(document.body).addClass('modal-open') })
- .on('hidden.bs.modal', '.modal', function () { $(document.body).removeClass('modal-open') })
-
}(jQuery);
/* ========================================================================
- * Bootstrap: tooltip.js v3.1.1
+ * Bootstrap: tooltip.js v3.3.1
* http://getbootstrap.com/javascript/#tooltip
* Inspired by the original jQuery.tipsy by Jason Frame
* ========================================================================
@@ -1048,23 +1254,32 @@ if (typeof jQuery === 'undefined') { throw new Error('Bootstrap\'s JavaScript re
this.init('tooltip', element, options)
}
+ Tooltip.VERSION = '3.3.1'
+
+ Tooltip.TRANSITION_DURATION = 150
+
Tooltip.DEFAULTS = {
animation: true,
placement: 'top',
selector: false,
- template: '<div class="tooltip"><div class="tooltip-arrow"></div><div class="tooltip-inner"></div></div>',
+ template: '<div class="tooltip" role="tooltip"><div class="tooltip-arrow"></div><div class="tooltip-inner"></div></div>',
trigger: 'hover focus',
title: '',
delay: 0,
html: false,
- container: false
+ container: false,
+ viewport: {
+ selector: 'body',
+ padding: 0
+ }
}
Tooltip.prototype.init = function (type, element, options) {
- this.enabled = true
- this.type = type
- this.$element = $(element)
- this.options = this.getOptions(options)
+ this.enabled = true
+ this.type = type
+ this.$element = $(element)
+ this.options = this.getOptions(options)
+ this.$viewport = this.options.viewport && $(this.options.viewport.selector || this.options.viewport)
var triggers = this.options.trigger.split(' ')
@@ -1117,7 +1332,17 @@ if (typeof jQuery === 'undefined') { throw new Error('Bootstrap\'s JavaScript re
Tooltip.prototype.enter = function (obj) {
var self = obj instanceof this.constructor ?
- obj : $(obj.currentTarget)[this.type](this.getDelegateOptions()).data('bs.' + this.type)
+ obj : $(obj.currentTarget).data('bs.' + this.type)
+
+ if (self && self.$tip && self.$tip.is(':visible')) {
+ self.hoverState = 'in'
+ return
+ }
+
+ if (!self) {
+ self = new this.constructor(obj.currentTarget, this.getDelegateOptions())
+ $(obj.currentTarget).data('bs.' + this.type, self)
+ }
clearTimeout(self.timeout)
@@ -1132,7 +1357,12 @@ if (typeof jQuery === 'undefined') { throw new Error('Bootstrap\'s JavaScript re
Tooltip.prototype.leave = function (obj) {
var self = obj instanceof this.constructor ?
- obj : $(obj.currentTarget)[this.type](this.getDelegateOptions()).data('bs.' + this.type)
+ obj : $(obj.currentTarget).data('bs.' + this.type)
+
+ if (!self) {
+ self = new this.constructor(obj.currentTarget, this.getDelegateOptions())
+ $(obj.currentTarget).data('bs.' + this.type, self)
+ }
clearTimeout(self.timeout)
@@ -1151,12 +1381,17 @@ if (typeof jQuery === 'undefined') { throw new Error('Bootstrap\'s JavaScript re
if (this.hasContent() && this.enabled) {
this.$element.trigger(e)
- if (e.isDefaultPrevented()) return
- var that = this;
+ var inDom = $.contains(this.$element[0].ownerDocument.documentElement, this.$element[0])
+ if (e.isDefaultPrevented() || !inDom) return
+ var that = this
var $tip = this.tip()
+ var tipId = this.getUID(this.type)
+
this.setContent()
+ $tip.attr('id', tipId)
+ this.$element.attr('aria-describedby', tipId)
if (this.options.animation) $tip.addClass('fade')
@@ -1172,6 +1407,7 @@ if (typeof jQuery === 'undefined') { throw new Error('Bootstrap\'s JavaScript re
.detach()
.css({ top: 0, left: 0, display: 'block' })
.addClass(placement)
+ .data('bs.' + this.type, this)
this.options.container ? $tip.appendTo(this.options.container) : $tip.insertAfter(this.$element)
@@ -1180,18 +1416,14 @@ if (typeof jQuery === 'undefined') { throw new Error('Bootstrap\'s JavaScript re
var actualHeight = $tip[0].offsetHeight
if (autoPlace) {
- var $parent = this.$element.parent()
-
var orgPlacement = placement
- var docScroll = document.documentElement.scrollTop || document.body.scrollTop
- var parentWidth = this.options.container == 'body' ? window.innerWidth : $parent.outerWidth()
- var parentHeight = this.options.container == 'body' ? window.innerHeight : $parent.outerHeight()
- var parentLeft = this.options.container == 'body' ? 0 : $parent.offset().left
-
- placement = placement == 'bottom' && pos.top + pos.height + actualHeight - docScroll > parentHeight ? 'top' :
- placement == 'top' && pos.top - docScroll - actualHeight < 0 ? 'bottom' :
- placement == 'right' && pos.right + actualWidth > parentWidth ? 'left' :
- placement == 'left' && pos.left - actualWidth < parentLeft ? 'right' :
+ var $container = this.options.container ? $(this.options.container) : this.$element.parent()
+ var containerDim = this.getPosition($container)
+
+ placement = placement == 'bottom' && pos.bottom + actualHeight > containerDim.bottom ? 'top' :
+ placement == 'top' && pos.top - actualHeight < containerDim.top ? 'bottom' :
+ placement == 'right' && pos.right + actualWidth > containerDim.width ? 'left' :
+ placement == 'left' && pos.left - actualWidth < containerDim.left ? 'right' :
placement
$tip
@@ -1202,22 +1434,24 @@ if (typeof jQuery === 'undefined') { throw new Error('Bootstrap\'s JavaScript re
var calculatedOffset = this.getCalculatedOffset(placement, pos, actualWidth, actualHeight)
this.applyPlacement(calculatedOffset, placement)
- this.hoverState = null
- var complete = function() {
+ var complete = function () {
+ var prevHoverState = that.hoverState
that.$element.trigger('shown.bs.' + that.type)
+ that.hoverState = null
+
+ if (prevHoverState == 'out') that.leave(that)
}
$.support.transition && this.$tip.hasClass('fade') ?
$tip
- .one($.support.transition.end, complete)
- .emulateTransitionEnd(150) :
+ .one('bsTransitionEnd', complete)
+ .emulateTransitionEnd(Tooltip.TRANSITION_DURATION) :
complete()
}
}
Tooltip.prototype.applyPlacement = function (offset, placement) {
- var replace
var $tip = this.tip()
var width = $tip[0].offsetWidth
var height = $tip[0].offsetHeight
@@ -1251,33 +1485,26 @@ if (typeof jQuery === 'undefined') { throw new Error('Bootstrap\'s JavaScript re
var actualHeight = $tip[0].offsetHeight
if (placement == 'top' && actualHeight != height) {
- replace = true
offset.top = offset.top + height - actualHeight
}
- if (/bottom|top/.test(placement)) {
- var delta = 0
+ var delta = this.getViewportAdjustedDelta(placement, offset, actualWidth, actualHeight)
- if (offset.left < 0) {
- delta = offset.left * -2
- offset.left = 0
+ if (delta.left) offset.left += delta.left
+ else offset.top += delta.top
- $tip.offset(offset)
+ var isVertical = /top|bottom/.test(placement)
+ var arrowDelta = isVertical ? delta.left * 2 - width + actualWidth : delta.top * 2 - height + actualHeight
+ var arrowOffsetPosition = isVertical ? 'offsetWidth' : 'offsetHeight'
- actualWidth = $tip[0].offsetWidth
- actualHeight = $tip[0].offsetHeight
- }
-
- this.replaceArrow(delta - width + actualWidth, actualWidth, 'left')
- } else {
- this.replaceArrow(actualHeight - height, actualHeight, 'top')
- }
-
- if (replace) $tip.offset(offset)
+ $tip.offset(offset)
+ this.replaceArrow(arrowDelta, $tip[0][arrowOffsetPosition], isVertical)
}
- Tooltip.prototype.replaceArrow = function (delta, dimension, position) {
- this.arrow().css(position, delta ? (50 * (1 - delta / dimension) + '%') : '')
+ Tooltip.prototype.replaceArrow = function (delta, dimension, isHorizontal) {
+ this.arrow()
+ .css(isHorizontal ? 'left' : 'top', 50 * (1 - delta / dimension) + '%')
+ .css(isHorizontal ? 'top' : 'left', '')
}
Tooltip.prototype.setContent = function () {
@@ -1288,14 +1515,17 @@ if (typeof jQuery === 'undefined') { throw new Error('Bootstrap\'s JavaScript re
$tip.removeClass('fade in top bottom left right')
}
- Tooltip.prototype.hide = function () {
+ Tooltip.prototype.hide = function (callback) {
var that = this
var $tip = this.tip()
var e = $.Event('hide.bs.' + this.type)
function complete() {
if (that.hoverState != 'in') $tip.detach()
- that.$element.trigger('hidden.bs.' + that.type)
+ that.$element
+ .removeAttr('aria-describedby')
+ .trigger('hidden.bs.' + that.type)
+ callback && callback()
}
this.$element.trigger(e)
@@ -1306,8 +1536,8 @@ if (typeof jQuery === 'undefined') { throw new Error('Bootstrap\'s JavaScript re
$.support.transition && this.$tip.hasClass('fade') ?
$tip
- .one($.support.transition.end, complete)
- .emulateTransitionEnd(150) :
+ .one('bsTransitionEnd', complete)
+ .emulateTransitionEnd(Tooltip.TRANSITION_DURATION) :
complete()
this.hoverState = null
@@ -1317,7 +1547,7 @@ if (typeof jQuery === 'undefined') { throw new Error('Bootstrap\'s JavaScript re
Tooltip.prototype.fixTitle = function () {
var $e = this.$element
- if ($e.attr('title') || typeof($e.attr('data-original-title')) != 'string') {
+ if ($e.attr('title') || typeof ($e.attr('data-original-title')) != 'string') {
$e.attr('data-original-title', $e.attr('title') || '').attr('title', '')
}
}
@@ -1326,12 +1556,22 @@ if (typeof jQuery === 'undefined') { throw new Error('Bootstrap\'s JavaScript re
return this.getTitle()
}
- Tooltip.prototype.getPosition = function () {
- var el = this.$element[0]
- return $.extend({}, (typeof el.getBoundingClientRect == 'function') ? el.getBoundingClientRect() : {
- width: el.offsetWidth,
- height: el.offsetHeight
- }, this.$element.offset())
+ Tooltip.prototype.getPosition = function ($element) {
+ $element = $element || this.$element
+
+ var el = $element[0]
+ var isBody = el.tagName == 'BODY'
+
+ var elRect = el.getBoundingClientRect()
+ if (elRect.width == null) {
+ // width and height are missing in IE8, so compute them manually; see https://github.com/twbs/bootstrap/issues/14093
+ elRect = $.extend({}, elRect, { width: elRect.right - elRect.left, height: elRect.bottom - elRect.top })
+ }
+ var elOffset = isBody ? { top: 0, left: 0 } : $element.offset()
+ var scroll = { scroll: isBody ? document.documentElement.scrollTop || document.body.scrollTop : $element.scrollTop() }
+ var outerDims = isBody ? { width: $(window).width(), height: $(window).height() } : null
+
+ return $.extend({}, elRect, scroll, outerDims, elOffset)
}
Tooltip.prototype.getCalculatedOffset = function (placement, pos, actualWidth, actualHeight) {
@@ -1339,6 +1579,35 @@ if (typeof jQuery === 'undefined') { throw new Error('Bootstrap\'s JavaScript re
placement == 'top' ? { top: pos.top - actualHeight, left: pos.left + pos.width / 2 - actualWidth / 2 } :
placement == 'left' ? { top: pos.top + pos.height / 2 - actualHeight / 2, left: pos.left - actualWidth } :
/* placement == 'right' */ { top: pos.top + pos.height / 2 - actualHeight / 2, left: pos.left + pos.width }
+
+ }
+
+ Tooltip.prototype.getViewportAdjustedDelta = function (placement, pos, actualWidth, actualHeight) {
+ var delta = { top: 0, left: 0 }
+ if (!this.$viewport) return delta
+
+ var viewportPadding = this.options.viewport && this.options.viewport.padding || 0
+ var viewportDimensions = this.getPosition(this.$viewport)
+
+ if (/right|left/.test(placement)) {
+ var topEdgeOffset = pos.top - viewportPadding - viewportDimensions.scroll
+ var bottomEdgeOffset = pos.top + viewportPadding - viewportDimensions.scroll + actualHeight
+ if (topEdgeOffset < viewportDimensions.top) { // top overflow
+ delta.top = viewportDimensions.top - topEdgeOffset
+ } else if (bottomEdgeOffset > viewportDimensions.top + viewportDimensions.height) { // bottom overflow
+ delta.top = viewportDimensions.top + viewportDimensions.height - bottomEdgeOffset
+ }
+ } else {
+ var leftEdgeOffset = pos.left - viewportPadding
+ var rightEdgeOffset = pos.left + viewportPadding + actualWidth
+ if (leftEdgeOffset < viewportDimensions.left) { // left overflow
+ delta.left = viewportDimensions.left - leftEdgeOffset
+ } else if (rightEdgeOffset > viewportDimensions.width) { // right overflow
+ delta.left = viewportDimensions.left + viewportDimensions.width - rightEdgeOffset
+ }
+ }
+
+ return delta
}
Tooltip.prototype.getTitle = function () {
@@ -1352,20 +1621,18 @@ if (typeof jQuery === 'undefined') { throw new Error('Bootstrap\'s JavaScript re
return title
}
- Tooltip.prototype.tip = function () {
- return this.$tip = this.$tip || $(this.options.template)
+ Tooltip.prototype.getUID = function (prefix) {
+ do prefix += ~~(Math.random() * 1000000)
+ while (document.getElementById(prefix))
+ return prefix
}
- Tooltip.prototype.arrow = function () {
- return this.$arrow = this.$arrow || this.tip().find('.tooltip-arrow')
+ Tooltip.prototype.tip = function () {
+ return (this.$tip = this.$tip || $(this.options.template))
}
- Tooltip.prototype.validate = function () {
- if (!this.$element[0].parentNode) {
- this.hide()
- this.$element = null
- this.options = null
- }
+ Tooltip.prototype.arrow = function () {
+ return (this.$arrow = this.$arrow || this.tip().find('.tooltip-arrow'))
}
Tooltip.prototype.enable = function () {
@@ -1381,33 +1648,51 @@ if (typeof jQuery === 'undefined') { throw new Error('Bootstrap\'s JavaScript re
}
Tooltip.prototype.toggle = function (e) {
- var self = e ? $(e.currentTarget)[this.type](this.getDelegateOptions()).data('bs.' + this.type) : this
+ var self = this
+ if (e) {
+ self = $(e.currentTarget).data('bs.' + this.type)
+ if (!self) {
+ self = new this.constructor(e.currentTarget, this.getDelegateOptions())
+ $(e.currentTarget).data('bs.' + this.type, self)
+ }
+ }
+
self.tip().hasClass('in') ? self.leave(self) : self.enter(self)
}
Tooltip.prototype.destroy = function () {
+ var that = this
clearTimeout(this.timeout)
- this.hide().$element.off('.' + this.type).removeData('bs.' + this.type)
+ this.hide(function () {
+ that.$element.off('.' + that.type).removeData('bs.' + that.type)
+ })
}
// TOOLTIP PLUGIN DEFINITION
// =========================
- var old = $.fn.tooltip
-
- $.fn.tooltip = function (option) {
+ function Plugin(option) {
return this.each(function () {
- var $this = $(this)
- var data = $this.data('bs.tooltip')
- var options = typeof option == 'object' && option
+ var $this = $(this)
+ var data = $this.data('bs.tooltip')
+ var options = typeof option == 'object' && option
+ var selector = options && options.selector
if (!data && option == 'destroy') return
- if (!data) $this.data('bs.tooltip', (data = new Tooltip(this, options)))
+ if (selector) {
+ if (!data) $this.data('bs.tooltip', (data = {}))
+ if (!data[selector]) data[selector] = new Tooltip(this, options)
+ } else {
+ if (!data) $this.data('bs.tooltip', (data = new Tooltip(this, options)))
+ }
if (typeof option == 'string') data[option]()
})
}
+ var old = $.fn.tooltip
+
+ $.fn.tooltip = Plugin
$.fn.tooltip.Constructor = Tooltip
@@ -1422,7 +1707,7 @@ if (typeof jQuery === 'undefined') { throw new Error('Bootstrap\'s JavaScript re
}(jQuery);
/* ========================================================================
- * Bootstrap: popover.js v3.1.1
+ * Bootstrap: popover.js v3.3.1
* http://getbootstrap.com/javascript/#popovers
* ========================================================================
* Copyright 2011-2014 Twitter, Inc.
@@ -1442,11 +1727,13 @@ if (typeof jQuery === 'undefined') { throw new Error('Bootstrap\'s JavaScript re
if (!$.fn.tooltip) throw new Error('Popover requires tooltip.js')
+ Popover.VERSION = '3.3.1'
+
Popover.DEFAULTS = $.extend({}, $.fn.tooltip.Constructor.DEFAULTS, {
placement: 'right',
trigger: 'click',
content: '',
- template: '<div class="popover"><div class="arrow"></div><h3 class="popover-title"></h3><div class="popover-content"></div></div>'
+ template: '<div class="popover" role="tooltip"><div class="arrow"></div><h3 class="popover-title"></h3><div class="popover-content"></div></div>'
})
@@ -1467,7 +1754,7 @@ if (typeof jQuery === 'undefined') { throw new Error('Bootstrap\'s JavaScript re
var content = this.getContent()
$tip.find('.popover-title')[this.options.html ? 'html' : 'text'](title)
- $tip.find('.popover-content')[ // we use append for html objects to maintain js events
+ $tip.find('.popover-content').children().detach().end()[ // we use append for html objects to maintain js events
this.options.html ? (typeof content == 'string' ? 'html' : 'append') : 'text'
](content)
@@ -1493,7 +1780,7 @@ if (typeof jQuery === 'undefined') { throw new Error('Bootstrap\'s JavaScript re
}
Popover.prototype.arrow = function () {
- return this.$arrow = this.$arrow || this.tip().find('.arrow')
+ return (this.$arrow = this.$arrow || this.tip().find('.arrow'))
}
Popover.prototype.tip = function () {
@@ -1505,20 +1792,27 @@ if (typeof jQuery === 'undefined') { throw new Error('Bootstrap\'s JavaScript re
// POPOVER PLUGIN DEFINITION
// =========================
- var old = $.fn.popover
-
- $.fn.popover = function (option) {
+ function Plugin(option) {
return this.each(function () {
- var $this = $(this)
- var data = $this.data('bs.popover')
- var options = typeof option == 'object' && option
+ var $this = $(this)
+ var data = $this.data('bs.popover')
+ var options = typeof option == 'object' && option
+ var selector = options && options.selector
if (!data && option == 'destroy') return
- if (!data) $this.data('bs.popover', (data = new Popover(this, options)))
+ if (selector) {
+ if (!data) $this.data('bs.popover', (data = {}))
+ if (!data[selector]) data[selector] = new Popover(this, options)
+ } else {
+ if (!data) $this.data('bs.popover', (data = new Popover(this, options)))
+ }
if (typeof option == 'string') data[option]()
})
}
+ var old = $.fn.popover
+
+ $.fn.popover = Plugin
$.fn.popover.Constructor = Popover
@@ -1533,7 +1827,7 @@ if (typeof jQuery === 'undefined') { throw new Error('Bootstrap\'s JavaScript re
}(jQuery);
/* ========================================================================
- * Bootstrap: scrollspy.js v3.1.1
+ * Bootstrap: scrollspy.js v3.3.1
* http://getbootstrap.com/javascript/#scrollspy
* ========================================================================
* Copyright 2011-2014 Twitter, Inc.
@@ -1548,36 +1842,48 @@ if (typeof jQuery === 'undefined') { throw new Error('Bootstrap\'s JavaScript re
// ==========================
function ScrollSpy(element, options) {
- var href
var process = $.proxy(this.process, this)
- this.$element = $(element).is('body') ? $(window) : $(element)
this.$body = $('body')
- this.$scrollElement = this.$element.on('scroll.bs.scroll-spy.data-api', process)
+ this.$scrollElement = $(element).is('body') ? $(window) : $(element)
this.options = $.extend({}, ScrollSpy.DEFAULTS, options)
- this.selector = (this.options.target
- || ((href = $(element).attr('href')) && href.replace(/.*(?=#[^\s]+$)/, '')) //strip for ie7
- || '') + ' .nav li > a'
- this.offsets = $([])
- this.targets = $([])
+ this.selector = (this.options.target || '') + ' .nav li > a'
+ this.offsets = []
+ this.targets = []
this.activeTarget = null
+ this.scrollHeight = 0
+ this.$scrollElement.on('scroll.bs.scrollspy', process)
this.refresh()
this.process()
}
+ ScrollSpy.VERSION = '3.3.1'
+
ScrollSpy.DEFAULTS = {
offset: 10
}
+ ScrollSpy.prototype.getScrollHeight = function () {
+ return this.$scrollElement[0].scrollHeight || Math.max(this.$body[0].scrollHeight, document.documentElement.scrollHeight)
+ }
+
ScrollSpy.prototype.refresh = function () {
- var offsetMethod = this.$element[0] == window ? 'offset' : 'position'
+ var offsetMethod = 'offset'
+ var offsetBase = 0
+
+ if (!$.isWindow(this.$scrollElement[0])) {
+ offsetMethod = 'position'
+ offsetBase = this.$scrollElement.scrollTop()
+ }
- this.offsets = $([])
- this.targets = $([])
+ this.offsets = []
+ this.targets = []
+ this.scrollHeight = this.getScrollHeight()
var self = this
- var $targets = this.$body
+
+ this.$body
.find(this.selector)
.map(function () {
var $el = $(this)
@@ -1587,7 +1893,7 @@ if (typeof jQuery === 'undefined') { throw new Error('Bootstrap\'s JavaScript re
return ($href
&& $href.length
&& $href.is(':visible')
- && [[ $href[offsetMethod]().top + (!$.isWindow(self.$scrollElement.get(0)) && self.$scrollElement.scrollTop()), href ]]) || null
+ && [[$href[offsetMethod]().top + offsetBase, href]]) || null
})
.sort(function (a, b) { return a[0] - b[0] })
.each(function () {
@@ -1598,35 +1904,38 @@ if (typeof jQuery === 'undefined') { throw new Error('Bootstrap\'s JavaScript re
ScrollSpy.prototype.process = function () {
var scrollTop = this.$scrollElement.scrollTop() + this.options.offset
- var scrollHeight = this.$scrollElement[0].scrollHeight || this.$body[0].scrollHeight
- var maxScroll = scrollHeight - this.$scrollElement.height()
+ var scrollHeight = this.getScrollHeight()
+ var maxScroll = this.options.offset + scrollHeight - this.$scrollElement.height()
var offsets = this.offsets
var targets = this.targets
var activeTarget = this.activeTarget
var i
+ if (this.scrollHeight != scrollHeight) {
+ this.refresh()
+ }
+
if (scrollTop >= maxScroll) {
- return activeTarget != (i = targets.last()[0]) && this.activate(i)
+ return activeTarget != (i = targets[targets.length - 1]) && this.activate(i)
}
- if (activeTarget && scrollTop <= offsets[0]) {
- return activeTarget != (i = targets[0]) && this.activate(i)
+ if (activeTarget && scrollTop < offsets[0]) {
+ this.activeTarget = null
+ return this.clear()
}
for (i = offsets.length; i--;) {
activeTarget != targets[i]
&& scrollTop >= offsets[i]
&& (!offsets[i + 1] || scrollTop <= offsets[i + 1])
- && this.activate( targets[i] )
+ && this.activate(targets[i])
}
}
ScrollSpy.prototype.activate = function (target) {
this.activeTarget = target
- $(this.selector)
- .parentsUntil(this.options.target, '.active')
- .removeClass('active')
+ this.clear()
var selector = this.selector +
'[data-target="' + target + '"],' +
@@ -1645,13 +1954,17 @@ if (typeof jQuery === 'undefined') { throw new Error('Bootstrap\'s JavaScript re
active.trigger('activate.bs.scrollspy')
}
+ ScrollSpy.prototype.clear = function () {
+ $(this.selector)
+ .parentsUntil(this.options.target, '.active')
+ .removeClass('active')
+ }
+
// SCROLLSPY PLUGIN DEFINITION
// ===========================
- var old = $.fn.scrollspy
-
- $.fn.scrollspy = function (option) {
+ function Plugin(option) {
return this.each(function () {
var $this = $(this)
var data = $this.data('bs.scrollspy')
@@ -1662,6 +1975,9 @@ if (typeof jQuery === 'undefined') { throw new Error('Bootstrap\'s JavaScript re
})
}
+ var old = $.fn.scrollspy
+
+ $.fn.scrollspy = Plugin
$.fn.scrollspy.Constructor = ScrollSpy
@@ -1677,17 +1993,17 @@ if (typeof jQuery === 'undefined') { throw new Error('Bootstrap\'s JavaScript re
// SCROLLSPY DATA-API
// ==================
- $(window).on('load', function () {
+ $(window).on('load.bs.scrollspy.data-api', function () {
$('[data-spy="scroll"]').each(function () {
var $spy = $(this)
- $spy.scrollspy($spy.data())
+ Plugin.call($spy, $spy.data())
})
})
}(jQuery);
/* ========================================================================
- * Bootstrap: tab.js v3.1.1
+ * Bootstrap: tab.js v3.3.1
* http://getbootstrap.com/javascript/#tabs
* ========================================================================
* Copyright 2011-2014 Twitter, Inc.
@@ -1705,6 +2021,10 @@ if (typeof jQuery === 'undefined') { throw new Error('Bootstrap\'s JavaScript re
this.element = $(element)
}
+ Tab.VERSION = '3.3.1'
+
+ Tab.TRANSITION_DURATION = 150
+
Tab.prototype.show = function () {
var $this = this.element
var $ul = $this.closest('ul:not(.dropdown-menu)')
@@ -1712,27 +2032,35 @@ if (typeof jQuery === 'undefined') { throw new Error('Bootstrap\'s JavaScript re
if (!selector) {
selector = $this.attr('href')
- selector = selector && selector.replace(/.*(?=#[^\s]*$)/, '') //strip for ie7
+ selector = selector && selector.replace(/.*(?=#[^\s]*$)/, '') // strip for ie7
}
if ($this.parent('li').hasClass('active')) return
- var previous = $ul.find('.active:last a')[0]
- var e = $.Event('show.bs.tab', {
- relatedTarget: previous
+ var $previous = $ul.find('.active:last a')
+ var hideEvent = $.Event('hide.bs.tab', {
+ relatedTarget: $this[0]
+ })
+ var showEvent = $.Event('show.bs.tab', {
+ relatedTarget: $previous[0]
})
- $this.trigger(e)
+ $previous.trigger(hideEvent)
+ $this.trigger(showEvent)
- if (e.isDefaultPrevented()) return
+ if (showEvent.isDefaultPrevented() || hideEvent.isDefaultPrevented()) return
var $target = $(selector)
- this.activate($this.parent('li'), $ul)
+ this.activate($this.closest('li'), $ul)
this.activate($target, $target.parent(), function () {
+ $previous.trigger({
+ type: 'hidden.bs.tab',
+ relatedTarget: $this[0]
+ })
$this.trigger({
type: 'shown.bs.tab',
- relatedTarget: previous
+ relatedTarget: $previous[0]
})
})
}
@@ -1741,15 +2069,21 @@ if (typeof jQuery === 'undefined') { throw new Error('Bootstrap\'s JavaScript re
var $active = container.find('> .active')
var transition = callback
&& $.support.transition
- && $active.hasClass('fade')
+ && (($active.length && $active.hasClass('fade')) || !!container.find('> .fade').length)
function next() {
$active
.removeClass('active')
.find('> .dropdown-menu > .active')
- .removeClass('active')
+ .removeClass('active')
+ .end()
+ .find('[data-toggle="tab"]')
+ .attr('aria-expanded', false)
- element.addClass('active')
+ element
+ .addClass('active')
+ .find('[data-toggle="tab"]')
+ .attr('aria-expanded', true)
if (transition) {
element[0].offsetWidth // reflow for transition
@@ -1759,16 +2093,21 @@ if (typeof jQuery === 'undefined') { throw new Error('Bootstrap\'s JavaScript re
}
if (element.parent('.dropdown-menu')) {
- element.closest('li.dropdown').addClass('active')
+ element
+ .closest('li.dropdown')
+ .addClass('active')
+ .end()
+ .find('[data-toggle="tab"]')
+ .attr('aria-expanded', true)
}
callback && callback()
}
- transition ?
+ $active.length && transition ?
$active
- .one($.support.transition.end, next)
- .emulateTransitionEnd(150) :
+ .one('bsTransitionEnd', next)
+ .emulateTransitionEnd(Tab.TRANSITION_DURATION) :
next()
$active.removeClass('in')
@@ -1778,9 +2117,7 @@ if (typeof jQuery === 'undefined') { throw new Error('Bootstrap\'s JavaScript re
// TAB PLUGIN DEFINITION
// =====================
- var old = $.fn.tab
-
- $.fn.tab = function ( option ) {
+ function Plugin(option) {
return this.each(function () {
var $this = $(this)
var data = $this.data('bs.tab')
@@ -1790,6 +2127,9 @@ if (typeof jQuery === 'undefined') { throw new Error('Bootstrap\'s JavaScript re
})
}
+ var old = $.fn.tab
+
+ $.fn.tab = Plugin
$.fn.tab.Constructor = Tab
@@ -1805,15 +2145,19 @@ if (typeof jQuery === 'undefined') { throw new Error('Bootstrap\'s JavaScript re
// TAB DATA-API
// ============
- $(document).on('click.bs.tab.data-api', '[data-toggle="tab"], [data-toggle="pill"]', function (e) {
+ var clickHandler = function (e) {
e.preventDefault()
- $(this).tab('show')
- })
+ Plugin.call($(this), 'show')
+ }
+
+ $(document)
+ .on('click.bs.tab.data-api', '[data-toggle="tab"]', clickHandler)
+ .on('click.bs.tab.data-api', '[data-toggle="pill"]', clickHandler)
}(jQuery);
/* ========================================================================
- * Bootstrap: affix.js v3.1.1
+ * Bootstrap: affix.js v3.3.1
* http://getbootstrap.com/javascript/#affix
* ========================================================================
* Copyright 2011-2014 Twitter, Inc.
@@ -1829,7 +2173,8 @@ if (typeof jQuery === 'undefined') { throw new Error('Bootstrap\'s JavaScript re
var Affix = function (element, options) {
this.options = $.extend({}, Affix.DEFAULTS, options)
- this.$window = $(window)
+
+ this.$target = $(this.options.target)
.on('scroll.bs.affix.data-api', $.proxy(this.checkPosition, this))
.on('click.bs.affix.data-api', $.proxy(this.checkPositionWithEventLoop, this))
@@ -1841,16 +2186,41 @@ if (typeof jQuery === 'undefined') { throw new Error('Bootstrap\'s JavaScript re
this.checkPosition()
}
- Affix.RESET = 'affix affix-top affix-bottom'
+ Affix.VERSION = '3.3.1'
+
+ Affix.RESET = 'affix affix-top affix-bottom'
Affix.DEFAULTS = {
- offset: 0
+ offset: 0,
+ target: window
+ }
+
+ Affix.prototype.getState = function (scrollHeight, height, offsetTop, offsetBottom) {
+ var scrollTop = this.$target.scrollTop()
+ var position = this.$element.offset()
+ var targetHeight = this.$target.height()
+
+ if (offsetTop != null && this.affixed == 'top') return scrollTop < offsetTop ? 'top' : false
+
+ if (this.affixed == 'bottom') {
+ if (offsetTop != null) return (scrollTop + this.unpin <= position.top) ? false : 'bottom'
+ return (scrollTop + targetHeight <= scrollHeight - offsetBottom) ? false : 'bottom'
+ }
+
+ var initializing = this.affixed == null
+ var colliderTop = initializing ? scrollTop : position.top
+ var colliderHeight = initializing ? targetHeight : height
+
+ if (offsetTop != null && colliderTop <= offsetTop) return 'top'
+ if (offsetBottom != null && (colliderTop + colliderHeight >= scrollHeight - offsetBottom)) return 'bottom'
+
+ return false
}
Affix.prototype.getPinnedOffset = function () {
if (this.pinnedOffset) return this.pinnedOffset
this.$element.removeClass(Affix.RESET).addClass('affix')
- var scrollTop = this.$window.scrollTop()
+ var scrollTop = this.$target.scrollTop()
var position = this.$element.offset()
return (this.pinnedOffset = position.top - scrollTop)
}
@@ -1862,43 +2232,41 @@ if (typeof jQuery === 'undefined') { throw new Error('Bootstrap\'s JavaScript re
Affix.prototype.checkPosition = function () {
if (!this.$element.is(':visible')) return
- var scrollHeight = $(document).height()
- var scrollTop = this.$window.scrollTop()
- var position = this.$element.offset()
+ var height = this.$element.height()
var offset = this.options.offset
var offsetTop = offset.top
var offsetBottom = offset.bottom
-
- if (this.affixed == 'top') position.top += scrollTop
+ var scrollHeight = $('body').height()
if (typeof offset != 'object') offsetBottom = offsetTop = offset
if (typeof offsetTop == 'function') offsetTop = offset.top(this.$element)
if (typeof offsetBottom == 'function') offsetBottom = offset.bottom(this.$element)
- var affix = this.unpin != null && (scrollTop + this.unpin <= position.top) ? false :
- offsetBottom != null && (position.top + this.$element.height() >= scrollHeight - offsetBottom) ? 'bottom' :
- offsetTop != null && (scrollTop <= offsetTop) ? 'top' : false
+ var affix = this.getState(scrollHeight, height, offsetTop, offsetBottom)
- if (this.affixed === affix) return
- if (this.unpin) this.$element.css('top', '')
+ if (this.affixed != affix) {
+ if (this.unpin != null) this.$element.css('top', '')
- var affixType = 'affix' + (affix ? '-' + affix : '')
- var e = $.Event(affixType + '.bs.affix')
+ var affixType = 'affix' + (affix ? '-' + affix : '')
+ var e = $.Event(affixType + '.bs.affix')
- this.$element.trigger(e)
+ this.$element.trigger(e)
- if (e.isDefaultPrevented()) return
+ if (e.isDefaultPrevented()) return
- this.affixed = affix
- this.unpin = affix == 'bottom' ? this.getPinnedOffset() : null
+ this.affixed = affix
+ this.unpin = affix == 'bottom' ? this.getPinnedOffset() : null
- this.$element
- .removeClass(Affix.RESET)
- .addClass(affixType)
- .trigger($.Event(affixType.replace('affix', 'affixed')))
+ this.$element
+ .removeClass(Affix.RESET)
+ .addClass(affixType)
+ .trigger(affixType.replace('affix', 'affixed') + '.bs.affix')
+ }
if (affix == 'bottom') {
- this.$element.offset({ top: scrollHeight - offsetBottom - this.$element.height() })
+ this.$element.offset({
+ top: scrollHeight - height - offsetBottom
+ })
}
}
@@ -1906,9 +2274,7 @@ if (typeof jQuery === 'undefined') { throw new Error('Bootstrap\'s JavaScript re
// AFFIX PLUGIN DEFINITION
// =======================
- var old = $.fn.affix
-
- $.fn.affix = function (option) {
+ function Plugin(option) {
return this.each(function () {
var $this = $(this)
var data = $this.data('bs.affix')
@@ -1919,6 +2285,9 @@ if (typeof jQuery === 'undefined') { throw new Error('Bootstrap\'s JavaScript re
})
}
+ var old = $.fn.affix
+
+ $.fn.affix = Plugin
$.fn.affix.Constructor = Affix
@@ -1941,10 +2310,10 @@ if (typeof jQuery === 'undefined') { throw new Error('Bootstrap\'s JavaScript re
data.offset = data.offset || {}
- if (data.offsetBottom) data.offset.bottom = data.offsetBottom
- if (data.offsetTop) data.offset.top = data.offsetTop
+ if (data.offsetBottom != null) data.offset.bottom = data.offsetBottom
+ if (data.offsetTop != null) data.offset.top = data.offsetTop
- $spy.affix(data)
+ Plugin.call($spy, data)
})
})
diff --git a/library/bootstrap/js/bootstrap.min.js b/library/bootstrap/js/bootstrap.min.js
index b04a0e82f..d83986590 100644
--- a/library/bootstrap/js/bootstrap.min.js
+++ b/library/bootstrap/js/bootstrap.min.js
@@ -1,6 +1,7 @@
/*!
- * Bootstrap v3.1.1 (http://getbootstrap.com)
+ * Bootstrap v3.3.1 (http://getbootstrap.com)
* Copyright 2011-2014 Twitter, Inc.
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
*/
-if("undefined"==typeof jQuery)throw new Error("Bootstrap's JavaScript requires jQuery");+function(a){"use strict";function b(){var a=document.createElement("bootstrap"),b={WebkitTransition:"webkitTransitionEnd",MozTransition:"transitionend",OTransition:"oTransitionEnd otransitionend",transition:"transitionend"};for(var c in b)if(void 0!==a.style[c])return{end:b[c]};return!1}a.fn.emulateTransitionEnd=function(b){var c=!1,d=this;a(this).one(a.support.transition.end,function(){c=!0});var e=function(){c||a(d).trigger(a.support.transition.end)};return setTimeout(e,b),this},a(function(){a.support.transition=b()})}(jQuery),+function(a){"use strict";var b='[data-dismiss="alert"]',c=function(c){a(c).on("click",b,this.close)};c.prototype.close=function(b){function c(){f.trigger("closed.bs.alert").remove()}var d=a(this),e=d.attr("data-target");e||(e=d.attr("href"),e=e&&e.replace(/.*(?=#[^\s]*$)/,""));var f=a(e);b&&b.preventDefault(),f.length||(f=d.hasClass("alert")?d:d.parent()),f.trigger(b=a.Event("close.bs.alert")),b.isDefaultPrevented()||(f.removeClass("in"),a.support.transition&&f.hasClass("fade")?f.one(a.support.transition.end,c).emulateTransitionEnd(150):c())};var d=a.fn.alert;a.fn.alert=function(b){return this.each(function(){var d=a(this),e=d.data("bs.alert");e||d.data("bs.alert",e=new c(this)),"string"==typeof b&&e[b].call(d)})},a.fn.alert.Constructor=c,a.fn.alert.noConflict=function(){return a.fn.alert=d,this},a(document).on("click.bs.alert.data-api",b,c.prototype.close)}(jQuery),+function(a){"use strict";var b=function(c,d){this.$element=a(c),this.options=a.extend({},b.DEFAULTS,d),this.isLoading=!1};b.DEFAULTS={loadingText:"loading..."},b.prototype.setState=function(b){var c="disabled",d=this.$element,e=d.is("input")?"val":"html",f=d.data();b+="Text",f.resetText||d.data("resetText",d[e]()),d[e](f[b]||this.options[b]),setTimeout(a.proxy(function(){"loadingText"==b?(this.isLoading=!0,d.addClass(c).attr(c,c)):this.isLoading&&(this.isLoading=!1,d.removeClass(c).removeAttr(c))},this),0)},b.prototype.toggle=function(){var a=!0,b=this.$element.closest('[data-toggle="buttons"]');if(b.length){var c=this.$element.find("input");"radio"==c.prop("type")&&(c.prop("checked")&&this.$element.hasClass("active")?a=!1:b.find(".active").removeClass("active")),a&&c.prop("checked",!this.$element.hasClass("active")).trigger("change")}a&&this.$element.toggleClass("active")};var c=a.fn.button;a.fn.button=function(c){return this.each(function(){var d=a(this),e=d.data("bs.button"),f="object"==typeof c&&c;e||d.data("bs.button",e=new b(this,f)),"toggle"==c?e.toggle():c&&e.setState(c)})},a.fn.button.Constructor=b,a.fn.button.noConflict=function(){return a.fn.button=c,this},a(document).on("click.bs.button.data-api","[data-toggle^=button]",function(b){var c=a(b.target);c.hasClass("btn")||(c=c.closest(".btn")),c.button("toggle"),b.preventDefault()})}(jQuery),+function(a){"use strict";var b=function(b,c){this.$element=a(b),this.$indicators=this.$element.find(".carousel-indicators"),this.options=c,this.paused=this.sliding=this.interval=this.$active=this.$items=null,"hover"==this.options.pause&&this.$element.on("mouseenter",a.proxy(this.pause,this)).on("mouseleave",a.proxy(this.cycle,this))};b.DEFAULTS={interval:5e3,pause:"hover",wrap:!0},b.prototype.cycle=function(b){return b||(this.paused=!1),this.interval&&clearInterval(this.interval),this.options.interval&&!this.paused&&(this.interval=setInterval(a.proxy(this.next,this),this.options.interval)),this},b.prototype.getActiveIndex=function(){return this.$active=this.$element.find(".item.active"),this.$items=this.$active.parent().children(),this.$items.index(this.$active)},b.prototype.to=function(b){var c=this,d=this.getActiveIndex();return b>this.$items.length-1||0>b?void 0:this.sliding?this.$element.one("slid.bs.carousel",function(){c.to(b)}):d==b?this.pause().cycle():this.slide(b>d?"next":"prev",a(this.$items[b]))},b.prototype.pause=function(b){return b||(this.paused=!0),this.$element.find(".next, .prev").length&&a.support.transition&&(this.$element.trigger(a.support.transition.end),this.cycle(!0)),this.interval=clearInterval(this.interval),this},b.prototype.next=function(){return this.sliding?void 0:this.slide("next")},b.prototype.prev=function(){return this.sliding?void 0:this.slide("prev")},b.prototype.slide=function(b,c){var d=this.$element.find(".item.active"),e=c||d[b](),f=this.interval,g="next"==b?"left":"right",h="next"==b?"first":"last",i=this;if(!e.length){if(!this.options.wrap)return;e=this.$element.find(".item")[h]()}if(e.hasClass("active"))return this.sliding=!1;var j=a.Event("slide.bs.carousel",{relatedTarget:e[0],direction:g});return this.$element.trigger(j),j.isDefaultPrevented()?void 0:(this.sliding=!0,f&&this.pause(),this.$indicators.length&&(this.$indicators.find(".active").removeClass("active"),this.$element.one("slid.bs.carousel",function(){var b=a(i.$indicators.children()[i.getActiveIndex()]);b&&b.addClass("active")})),a.support.transition&&this.$element.hasClass("slide")?(e.addClass(b),e[0].offsetWidth,d.addClass(g),e.addClass(g),d.one(a.support.transition.end,function(){e.removeClass([b,g].join(" ")).addClass("active"),d.removeClass(["active",g].join(" ")),i.sliding=!1,setTimeout(function(){i.$element.trigger("slid.bs.carousel")},0)}).emulateTransitionEnd(1e3*d.css("transition-duration").slice(0,-1))):(d.removeClass("active"),e.addClass("active"),this.sliding=!1,this.$element.trigger("slid.bs.carousel")),f&&this.cycle(),this)};var c=a.fn.carousel;a.fn.carousel=function(c){return this.each(function(){var d=a(this),e=d.data("bs.carousel"),f=a.extend({},b.DEFAULTS,d.data(),"object"==typeof c&&c),g="string"==typeof c?c:f.slide;e||d.data("bs.carousel",e=new b(this,f)),"number"==typeof c?e.to(c):g?e[g]():f.interval&&e.pause().cycle()})},a.fn.carousel.Constructor=b,a.fn.carousel.noConflict=function(){return a.fn.carousel=c,this},a(document).on("click.bs.carousel.data-api","[data-slide], [data-slide-to]",function(b){var c,d=a(this),e=a(d.attr("data-target")||(c=d.attr("href"))&&c.replace(/.*(?=#[^\s]+$)/,"")),f=a.extend({},e.data(),d.data()),g=d.attr("data-slide-to");g&&(f.interval=!1),e.carousel(f),(g=d.attr("data-slide-to"))&&e.data("bs.carousel").to(g),b.preventDefault()}),a(window).on("load",function(){a('[data-ride="carousel"]').each(function(){var b=a(this);b.carousel(b.data())})})}(jQuery),+function(a){"use strict";var b=function(c,d){this.$element=a(c),this.options=a.extend({},b.DEFAULTS,d),this.transitioning=null,this.options.parent&&(this.$parent=a(this.options.parent)),this.options.toggle&&this.toggle()};b.DEFAULTS={toggle:!0},b.prototype.dimension=function(){var a=this.$element.hasClass("width");return a?"width":"height"},b.prototype.show=function(){if(!this.transitioning&&!this.$element.hasClass("in")){var b=a.Event("show.bs.collapse");if(this.$element.trigger(b),!b.isDefaultPrevented()){var c=this.$parent&&this.$parent.find("> .panel > .in");if(c&&c.length){var d=c.data("bs.collapse");if(d&&d.transitioning)return;c.collapse("hide"),d||c.data("bs.collapse",null)}var e=this.dimension();this.$element.removeClass("collapse").addClass("collapsing")[e](0),this.transitioning=1;var f=function(){this.$element.removeClass("collapsing").addClass("collapse in")[e]("auto"),this.transitioning=0,this.$element.trigger("shown.bs.collapse")};if(!a.support.transition)return f.call(this);var g=a.camelCase(["scroll",e].join("-"));this.$element.one(a.support.transition.end,a.proxy(f,this)).emulateTransitionEnd(350)[e](this.$element[0][g])}}},b.prototype.hide=function(){if(!this.transitioning&&this.$element.hasClass("in")){var b=a.Event("hide.bs.collapse");if(this.$element.trigger(b),!b.isDefaultPrevented()){var c=this.dimension();this.$element[c](this.$element[c]())[0].offsetHeight,this.$element.addClass("collapsing").removeClass("collapse").removeClass("in"),this.transitioning=1;var d=function(){this.transitioning=0,this.$element.trigger("hidden.bs.collapse").removeClass("collapsing").addClass("collapse")};return a.support.transition?void this.$element[c](0).one(a.support.transition.end,a.proxy(d,this)).emulateTransitionEnd(350):d.call(this)}}},b.prototype.toggle=function(){this[this.$element.hasClass("in")?"hide":"show"]()};var c=a.fn.collapse;a.fn.collapse=function(c){return this.each(function(){var d=a(this),e=d.data("bs.collapse"),f=a.extend({},b.DEFAULTS,d.data(),"object"==typeof c&&c);!e&&f.toggle&&"show"==c&&(c=!c),e||d.data("bs.collapse",e=new b(this,f)),"string"==typeof c&&e[c]()})},a.fn.collapse.Constructor=b,a.fn.collapse.noConflict=function(){return a.fn.collapse=c,this},a(document).on("click.bs.collapse.data-api","[data-toggle=collapse]",function(b){var c,d=a(this),e=d.attr("data-target")||b.preventDefault()||(c=d.attr("href"))&&c.replace(/.*(?=#[^\s]+$)/,""),f=a(e),g=f.data("bs.collapse"),h=g?"toggle":d.data(),i=d.attr("data-parent"),j=i&&a(i);g&&g.transitioning||(j&&j.find('[data-toggle=collapse][data-parent="'+i+'"]').not(d).addClass("collapsed"),d[f.hasClass("in")?"addClass":"removeClass"]("collapsed")),f.collapse(h)})}(jQuery),+function(a){"use strict";function b(b){a(d).remove(),a(e).each(function(){var d=c(a(this)),e={relatedTarget:this};d.hasClass("open")&&(d.trigger(b=a.Event("hide.bs.dropdown",e)),b.isDefaultPrevented()||d.removeClass("open").trigger("hidden.bs.dropdown",e))})}function c(b){var c=b.attr("data-target");c||(c=b.attr("href"),c=c&&/#[A-Za-z]/.test(c)&&c.replace(/.*(?=#[^\s]*$)/,""));var d=c&&a(c);return d&&d.length?d:b.parent()}var d=".dropdown-backdrop",e="[data-toggle=dropdown]",f=function(b){a(b).on("click.bs.dropdown",this.toggle)};f.prototype.toggle=function(d){var e=a(this);if(!e.is(".disabled, :disabled")){var f=c(e),g=f.hasClass("open");if(b(),!g){"ontouchstart"in document.documentElement&&!f.closest(".navbar-nav").length&&a('<div class="dropdown-backdrop"/>').insertAfter(a(this)).on("click",b);var h={relatedTarget:this};if(f.trigger(d=a.Event("show.bs.dropdown",h)),d.isDefaultPrevented())return;f.toggleClass("open").trigger("shown.bs.dropdown",h),e.focus()}return!1}},f.prototype.keydown=function(b){if(/(38|40|27)/.test(b.keyCode)){var d=a(this);if(b.preventDefault(),b.stopPropagation(),!d.is(".disabled, :disabled")){var f=c(d),g=f.hasClass("open");if(!g||g&&27==b.keyCode)return 27==b.which&&f.find(e).focus(),d.click();var h=" li:not(.divider):visible a",i=f.find("[role=menu]"+h+", [role=listbox]"+h);if(i.length){var j=i.index(i.filter(":focus"));38==b.keyCode&&j>0&&j--,40==b.keyCode&&j<i.length-1&&j++,~j||(j=0),i.eq(j).focus()}}}};var g=a.fn.dropdown;a.fn.dropdown=function(b){return this.each(function(){var c=a(this),d=c.data("bs.dropdown");d||c.data("bs.dropdown",d=new f(this)),"string"==typeof b&&d[b].call(c)})},a.fn.dropdown.Constructor=f,a.fn.dropdown.noConflict=function(){return a.fn.dropdown=g,this},a(document).on("click.bs.dropdown.data-api",b).on("click.bs.dropdown.data-api",".dropdown form",function(a){a.stopPropagation()}).on("click.bs.dropdown.data-api",e,f.prototype.toggle).on("keydown.bs.dropdown.data-api",e+", [role=menu], [role=listbox]",f.prototype.keydown)}(jQuery),+function(a){"use strict";var b=function(b,c){this.options=c,this.$element=a(b),this.$backdrop=this.isShown=null,this.options.remote&&this.$element.find(".modal-content").load(this.options.remote,a.proxy(function(){this.$element.trigger("loaded.bs.modal")},this))};b.DEFAULTS={backdrop:!0,keyboard:!0,show:!0},b.prototype.toggle=function(a){return this[this.isShown?"hide":"show"](a)},b.prototype.show=function(b){var c=this,d=a.Event("show.bs.modal",{relatedTarget:b});this.$element.trigger(d),this.isShown||d.isDefaultPrevented()||(this.isShown=!0,this.escape(),this.$element.on("click.dismiss.bs.modal",'[data-dismiss="modal"]',a.proxy(this.hide,this)),this.backdrop(function(){var d=a.support.transition&&c.$element.hasClass("fade");c.$element.parent().length||c.$element.appendTo(document.body),c.$element.show().scrollTop(0),d&&c.$element[0].offsetWidth,c.$element.addClass("in").attr("aria-hidden",!1),c.enforceFocus();var e=a.Event("shown.bs.modal",{relatedTarget:b});d?c.$element.find(".modal-dialog").one(a.support.transition.end,function(){c.$element.focus().trigger(e)}).emulateTransitionEnd(300):c.$element.focus().trigger(e)}))},b.prototype.hide=function(b){b&&b.preventDefault(),b=a.Event("hide.bs.modal"),this.$element.trigger(b),this.isShown&&!b.isDefaultPrevented()&&(this.isShown=!1,this.escape(),a(document).off("focusin.bs.modal"),this.$element.removeClass("in").attr("aria-hidden",!0).off("click.dismiss.bs.modal"),a.support.transition&&this.$element.hasClass("fade")?this.$element.one(a.support.transition.end,a.proxy(this.hideModal,this)).emulateTransitionEnd(300):this.hideModal())},b.prototype.enforceFocus=function(){a(document).off("focusin.bs.modal").on("focusin.bs.modal",a.proxy(function(a){this.$element[0]===a.target||this.$element.has(a.target).length||this.$element.focus()},this))},b.prototype.escape=function(){this.isShown&&this.options.keyboard?this.$element.on("keyup.dismiss.bs.modal",a.proxy(function(a){27==a.which&&this.hide()},this)):this.isShown||this.$element.off("keyup.dismiss.bs.modal")},b.prototype.hideModal=function(){var a=this;this.$element.hide(),this.backdrop(function(){a.removeBackdrop(),a.$element.trigger("hidden.bs.modal")})},b.prototype.removeBackdrop=function(){this.$backdrop&&this.$backdrop.remove(),this.$backdrop=null},b.prototype.backdrop=function(b){var c=this.$element.hasClass("fade")?"fade":"";if(this.isShown&&this.options.backdrop){var d=a.support.transition&&c;if(this.$backdrop=a('<div class="modal-backdrop '+c+'" />').appendTo(document.body),this.$element.on("click.dismiss.bs.modal",a.proxy(function(a){a.target===a.currentTarget&&("static"==this.options.backdrop?this.$element[0].focus.call(this.$element[0]):this.hide.call(this))},this)),d&&this.$backdrop[0].offsetWidth,this.$backdrop.addClass("in"),!b)return;d?this.$backdrop.one(a.support.transition.end,b).emulateTransitionEnd(150):b()}else!this.isShown&&this.$backdrop?(this.$backdrop.removeClass("in"),a.support.transition&&this.$element.hasClass("fade")?this.$backdrop.one(a.support.transition.end,b).emulateTransitionEnd(150):b()):b&&b()};var c=a.fn.modal;a.fn.modal=function(c,d){return this.each(function(){var e=a(this),f=e.data("bs.modal"),g=a.extend({},b.DEFAULTS,e.data(),"object"==typeof c&&c);f||e.data("bs.modal",f=new b(this,g)),"string"==typeof c?f[c](d):g.show&&f.show(d)})},a.fn.modal.Constructor=b,a.fn.modal.noConflict=function(){return a.fn.modal=c,this},a(document).on("click.bs.modal.data-api",'[data-toggle="modal"]',function(b){var c=a(this),d=c.attr("href"),e=a(c.attr("data-target")||d&&d.replace(/.*(?=#[^\s]+$)/,"")),f=e.data("bs.modal")?"toggle":a.extend({remote:!/#/.test(d)&&d},e.data(),c.data());c.is("a")&&b.preventDefault(),e.modal(f,this).one("hide",function(){c.is(":visible")&&c.focus()})}),a(document).on("show.bs.modal",".modal",function(){a(document.body).addClass("modal-open")}).on("hidden.bs.modal",".modal",function(){a(document.body).removeClass("modal-open")})}(jQuery),+function(a){"use strict";var b=function(a,b){this.type=this.options=this.enabled=this.timeout=this.hoverState=this.$element=null,this.init("tooltip",a,b)};b.DEFAULTS={animation:!0,placement:"top",selector:!1,template:'<div class="tooltip"><div class="tooltip-arrow"></div><div class="tooltip-inner"></div></div>',trigger:"hover focus",title:"",delay:0,html:!1,container:!1},b.prototype.init=function(b,c,d){this.enabled=!0,this.type=b,this.$element=a(c),this.options=this.getOptions(d);for(var e=this.options.trigger.split(" "),f=e.length;f--;){var g=e[f];if("click"==g)this.$element.on("click."+this.type,this.options.selector,a.proxy(this.toggle,this));else if("manual"!=g){var h="hover"==g?"mouseenter":"focusin",i="hover"==g?"mouseleave":"focusout";this.$element.on(h+"."+this.type,this.options.selector,a.proxy(this.enter,this)),this.$element.on(i+"."+this.type,this.options.selector,a.proxy(this.leave,this))}}this.options.selector?this._options=a.extend({},this.options,{trigger:"manual",selector:""}):this.fixTitle()},b.prototype.getDefaults=function(){return b.DEFAULTS},b.prototype.getOptions=function(b){return b=a.extend({},this.getDefaults(),this.$element.data(),b),b.delay&&"number"==typeof b.delay&&(b.delay={show:b.delay,hide:b.delay}),b},b.prototype.getDelegateOptions=function(){var b={},c=this.getDefaults();return this._options&&a.each(this._options,function(a,d){c[a]!=d&&(b[a]=d)}),b},b.prototype.enter=function(b){var c=b instanceof this.constructor?b:a(b.currentTarget)[this.type](this.getDelegateOptions()).data("bs."+this.type);return clearTimeout(c.timeout),c.hoverState="in",c.options.delay&&c.options.delay.show?void(c.timeout=setTimeout(function(){"in"==c.hoverState&&c.show()},c.options.delay.show)):c.show()},b.prototype.leave=function(b){var c=b instanceof this.constructor?b:a(b.currentTarget)[this.type](this.getDelegateOptions()).data("bs."+this.type);return clearTimeout(c.timeout),c.hoverState="out",c.options.delay&&c.options.delay.hide?void(c.timeout=setTimeout(function(){"out"==c.hoverState&&c.hide()},c.options.delay.hide)):c.hide()},b.prototype.show=function(){var b=a.Event("show.bs."+this.type);if(this.hasContent()&&this.enabled){if(this.$element.trigger(b),b.isDefaultPrevented())return;var c=this,d=this.tip();this.setContent(),this.options.animation&&d.addClass("fade");var e="function"==typeof this.options.placement?this.options.placement.call(this,d[0],this.$element[0]):this.options.placement,f=/\s?auto?\s?/i,g=f.test(e);g&&(e=e.replace(f,"")||"top"),d.detach().css({top:0,left:0,display:"block"}).addClass(e),this.options.container?d.appendTo(this.options.container):d.insertAfter(this.$element);var h=this.getPosition(),i=d[0].offsetWidth,j=d[0].offsetHeight;if(g){var k=this.$element.parent(),l=e,m=document.documentElement.scrollTop||document.body.scrollTop,n="body"==this.options.container?window.innerWidth:k.outerWidth(),o="body"==this.options.container?window.innerHeight:k.outerHeight(),p="body"==this.options.container?0:k.offset().left;e="bottom"==e&&h.top+h.height+j-m>o?"top":"top"==e&&h.top-m-j<0?"bottom":"right"==e&&h.right+i>n?"left":"left"==e&&h.left-i<p?"right":e,d.removeClass(l).addClass(e)}var q=this.getCalculatedOffset(e,h,i,j);this.applyPlacement(q,e),this.hoverState=null;var r=function(){c.$element.trigger("shown.bs."+c.type)};a.support.transition&&this.$tip.hasClass("fade")?d.one(a.support.transition.end,r).emulateTransitionEnd(150):r()}},b.prototype.applyPlacement=function(b,c){var d,e=this.tip(),f=e[0].offsetWidth,g=e[0].offsetHeight,h=parseInt(e.css("margin-top"),10),i=parseInt(e.css("margin-left"),10);isNaN(h)&&(h=0),isNaN(i)&&(i=0),b.top=b.top+h,b.left=b.left+i,a.offset.setOffset(e[0],a.extend({using:function(a){e.css({top:Math.round(a.top),left:Math.round(a.left)})}},b),0),e.addClass("in");var j=e[0].offsetWidth,k=e[0].offsetHeight;if("top"==c&&k!=g&&(d=!0,b.top=b.top+g-k),/bottom|top/.test(c)){var l=0;b.left<0&&(l=-2*b.left,b.left=0,e.offset(b),j=e[0].offsetWidth,k=e[0].offsetHeight),this.replaceArrow(l-f+j,j,"left")}else this.replaceArrow(k-g,k,"top");d&&e.offset(b)},b.prototype.replaceArrow=function(a,b,c){this.arrow().css(c,a?50*(1-a/b)+"%":"")},b.prototype.setContent=function(){var a=this.tip(),b=this.getTitle();a.find(".tooltip-inner")[this.options.html?"html":"text"](b),a.removeClass("fade in top bottom left right")},b.prototype.hide=function(){function b(){"in"!=c.hoverState&&d.detach(),c.$element.trigger("hidden.bs."+c.type)}var c=this,d=this.tip(),e=a.Event("hide.bs."+this.type);return this.$element.trigger(e),e.isDefaultPrevented()?void 0:(d.removeClass("in"),a.support.transition&&this.$tip.hasClass("fade")?d.one(a.support.transition.end,b).emulateTransitionEnd(150):b(),this.hoverState=null,this)},b.prototype.fixTitle=function(){var a=this.$element;(a.attr("title")||"string"!=typeof a.attr("data-original-title"))&&a.attr("data-original-title",a.attr("title")||"").attr("title","")},b.prototype.hasContent=function(){return this.getTitle()},b.prototype.getPosition=function(){var b=this.$element[0];return a.extend({},"function"==typeof b.getBoundingClientRect?b.getBoundingClientRect():{width:b.offsetWidth,height:b.offsetHeight},this.$element.offset())},b.prototype.getCalculatedOffset=function(a,b,c,d){return"bottom"==a?{top:b.top+b.height,left:b.left+b.width/2-c/2}:"top"==a?{top:b.top-d,left:b.left+b.width/2-c/2}:"left"==a?{top:b.top+b.height/2-d/2,left:b.left-c}:{top:b.top+b.height/2-d/2,left:b.left+b.width}},b.prototype.getTitle=function(){var a,b=this.$element,c=this.options;return a=b.attr("data-original-title")||("function"==typeof c.title?c.title.call(b[0]):c.title)},b.prototype.tip=function(){return this.$tip=this.$tip||a(this.options.template)},b.prototype.arrow=function(){return this.$arrow=this.$arrow||this.tip().find(".tooltip-arrow")},b.prototype.validate=function(){this.$element[0].parentNode||(this.hide(),this.$element=null,this.options=null)},b.prototype.enable=function(){this.enabled=!0},b.prototype.disable=function(){this.enabled=!1},b.prototype.toggleEnabled=function(){this.enabled=!this.enabled},b.prototype.toggle=function(b){var c=b?a(b.currentTarget)[this.type](this.getDelegateOptions()).data("bs."+this.type):this;c.tip().hasClass("in")?c.leave(c):c.enter(c)},b.prototype.destroy=function(){clearTimeout(this.timeout),this.hide().$element.off("."+this.type).removeData("bs."+this.type)};var c=a.fn.tooltip;a.fn.tooltip=function(c){return this.each(function(){var d=a(this),e=d.data("bs.tooltip"),f="object"==typeof c&&c;(e||"destroy"!=c)&&(e||d.data("bs.tooltip",e=new b(this,f)),"string"==typeof c&&e[c]())})},a.fn.tooltip.Constructor=b,a.fn.tooltip.noConflict=function(){return a.fn.tooltip=c,this}}(jQuery),+function(a){"use strict";var b=function(a,b){this.init("popover",a,b)};if(!a.fn.tooltip)throw new Error("Popover requires tooltip.js");b.DEFAULTS=a.extend({},a.fn.tooltip.Constructor.DEFAULTS,{placement:"right",trigger:"click",content:"",template:'<div class="popover"><div class="arrow"></div><h3 class="popover-title"></h3><div class="popover-content"></div></div>'}),b.prototype=a.extend({},a.fn.tooltip.Constructor.prototype),b.prototype.constructor=b,b.prototype.getDefaults=function(){return b.DEFAULTS},b.prototype.setContent=function(){var a=this.tip(),b=this.getTitle(),c=this.getContent();a.find(".popover-title")[this.options.html?"html":"text"](b),a.find(".popover-content")[this.options.html?"string"==typeof c?"html":"append":"text"](c),a.removeClass("fade top bottom left right in"),a.find(".popover-title").html()||a.find(".popover-title").hide()},b.prototype.hasContent=function(){return this.getTitle()||this.getContent()},b.prototype.getContent=function(){var a=this.$element,b=this.options;return a.attr("data-content")||("function"==typeof b.content?b.content.call(a[0]):b.content)},b.prototype.arrow=function(){return this.$arrow=this.$arrow||this.tip().find(".arrow")},b.prototype.tip=function(){return this.$tip||(this.$tip=a(this.options.template)),this.$tip};var c=a.fn.popover;a.fn.popover=function(c){return this.each(function(){var d=a(this),e=d.data("bs.popover"),f="object"==typeof c&&c;(e||"destroy"!=c)&&(e||d.data("bs.popover",e=new b(this,f)),"string"==typeof c&&e[c]())})},a.fn.popover.Constructor=b,a.fn.popover.noConflict=function(){return a.fn.popover=c,this}}(jQuery),+function(a){"use strict";function b(c,d){var e,f=a.proxy(this.process,this);this.$element=a(a(c).is("body")?window:c),this.$body=a("body"),this.$scrollElement=this.$element.on("scroll.bs.scroll-spy.data-api",f),this.options=a.extend({},b.DEFAULTS,d),this.selector=(this.options.target||(e=a(c).attr("href"))&&e.replace(/.*(?=#[^\s]+$)/,"")||"")+" .nav li > a",this.offsets=a([]),this.targets=a([]),this.activeTarget=null,this.refresh(),this.process()}b.DEFAULTS={offset:10},b.prototype.refresh=function(){var b=this.$element[0]==window?"offset":"position";this.offsets=a([]),this.targets=a([]);{var c=this;this.$body.find(this.selector).map(function(){var d=a(this),e=d.data("target")||d.attr("href"),f=/^#./.test(e)&&a(e);return f&&f.length&&f.is(":visible")&&[[f[b]().top+(!a.isWindow(c.$scrollElement.get(0))&&c.$scrollElement.scrollTop()),e]]||null}).sort(function(a,b){return a[0]-b[0]}).each(function(){c.offsets.push(this[0]),c.targets.push(this[1])})}},b.prototype.process=function(){var a,b=this.$scrollElement.scrollTop()+this.options.offset,c=this.$scrollElement[0].scrollHeight||this.$body[0].scrollHeight,d=c-this.$scrollElement.height(),e=this.offsets,f=this.targets,g=this.activeTarget;if(b>=d)return g!=(a=f.last()[0])&&this.activate(a);if(g&&b<=e[0])return g!=(a=f[0])&&this.activate(a);for(a=e.length;a--;)g!=f[a]&&b>=e[a]&&(!e[a+1]||b<=e[a+1])&&this.activate(f[a])},b.prototype.activate=function(b){this.activeTarget=b,a(this.selector).parentsUntil(this.options.target,".active").removeClass("active");var c=this.selector+'[data-target="'+b+'"],'+this.selector+'[href="'+b+'"]',d=a(c).parents("li").addClass("active");d.parent(".dropdown-menu").length&&(d=d.closest("li.dropdown").addClass("active")),d.trigger("activate.bs.scrollspy")};var c=a.fn.scrollspy;a.fn.scrollspy=function(c){return this.each(function(){var d=a(this),e=d.data("bs.scrollspy"),f="object"==typeof c&&c;e||d.data("bs.scrollspy",e=new b(this,f)),"string"==typeof c&&e[c]()})},a.fn.scrollspy.Constructor=b,a.fn.scrollspy.noConflict=function(){return a.fn.scrollspy=c,this},a(window).on("load",function(){a('[data-spy="scroll"]').each(function(){var b=a(this);b.scrollspy(b.data())})})}(jQuery),+function(a){"use strict";var b=function(b){this.element=a(b)};b.prototype.show=function(){var b=this.element,c=b.closest("ul:not(.dropdown-menu)"),d=b.data("target");if(d||(d=b.attr("href"),d=d&&d.replace(/.*(?=#[^\s]*$)/,"")),!b.parent("li").hasClass("active")){var e=c.find(".active:last a")[0],f=a.Event("show.bs.tab",{relatedTarget:e});if(b.trigger(f),!f.isDefaultPrevented()){var g=a(d);this.activate(b.parent("li"),c),this.activate(g,g.parent(),function(){b.trigger({type:"shown.bs.tab",relatedTarget:e})})}}},b.prototype.activate=function(b,c,d){function e(){f.removeClass("active").find("> .dropdown-menu > .active").removeClass("active"),b.addClass("active"),g?(b[0].offsetWidth,b.addClass("in")):b.removeClass("fade"),b.parent(".dropdown-menu")&&b.closest("li.dropdown").addClass("active"),d&&d()}var f=c.find("> .active"),g=d&&a.support.transition&&f.hasClass("fade");g?f.one(a.support.transition.end,e).emulateTransitionEnd(150):e(),f.removeClass("in")};var c=a.fn.tab;a.fn.tab=function(c){return this.each(function(){var d=a(this),e=d.data("bs.tab");e||d.data("bs.tab",e=new b(this)),"string"==typeof c&&e[c]()})},a.fn.tab.Constructor=b,a.fn.tab.noConflict=function(){return a.fn.tab=c,this},a(document).on("click.bs.tab.data-api",'[data-toggle="tab"], [data-toggle="pill"]',function(b){b.preventDefault(),a(this).tab("show")})}(jQuery),+function(a){"use strict";var b=function(c,d){this.options=a.extend({},b.DEFAULTS,d),this.$window=a(window).on("scroll.bs.affix.data-api",a.proxy(this.checkPosition,this)).on("click.bs.affix.data-api",a.proxy(this.checkPositionWithEventLoop,this)),this.$element=a(c),this.affixed=this.unpin=this.pinnedOffset=null,this.checkPosition()};b.RESET="affix affix-top affix-bottom",b.DEFAULTS={offset:0},b.prototype.getPinnedOffset=function(){if(this.pinnedOffset)return this.pinnedOffset;this.$element.removeClass(b.RESET).addClass("affix");var a=this.$window.scrollTop(),c=this.$element.offset();return this.pinnedOffset=c.top-a},b.prototype.checkPositionWithEventLoop=function(){setTimeout(a.proxy(this.checkPosition,this),1)},b.prototype.checkPosition=function(){if(this.$element.is(":visible")){var c=a(document).height(),d=this.$window.scrollTop(),e=this.$element.offset(),f=this.options.offset,g=f.top,h=f.bottom;"top"==this.affixed&&(e.top+=d),"object"!=typeof f&&(h=g=f),"function"==typeof g&&(g=f.top(this.$element)),"function"==typeof h&&(h=f.bottom(this.$element));var i=null!=this.unpin&&d+this.unpin<=e.top?!1:null!=h&&e.top+this.$element.height()>=c-h?"bottom":null!=g&&g>=d?"top":!1;if(this.affixed!==i){this.unpin&&this.$element.css("top","");var j="affix"+(i?"-"+i:""),k=a.Event(j+".bs.affix");this.$element.trigger(k),k.isDefaultPrevented()||(this.affixed=i,this.unpin="bottom"==i?this.getPinnedOffset():null,this.$element.removeClass(b.RESET).addClass(j).trigger(a.Event(j.replace("affix","affixed"))),"bottom"==i&&this.$element.offset({top:c-h-this.$element.height()}))}}};var c=a.fn.affix;a.fn.affix=function(c){return this.each(function(){var d=a(this),e=d.data("bs.affix"),f="object"==typeof c&&c;e||d.data("bs.affix",e=new b(this,f)),"string"==typeof c&&e[c]()})},a.fn.affix.Constructor=b,a.fn.affix.noConflict=function(){return a.fn.affix=c,this},a(window).on("load",function(){a('[data-spy="affix"]').each(function(){var b=a(this),c=b.data();c.offset=c.offset||{},c.offsetBottom&&(c.offset.bottom=c.offsetBottom),c.offsetTop&&(c.offset.top=c.offsetTop),b.affix(c)})})}(jQuery); \ No newline at end of file
+if("undefined"==typeof jQuery)throw new Error("Bootstrap's JavaScript requires jQuery");+function(a){var b=a.fn.jquery.split(" ")[0].split(".");if(b[0]<2&&b[1]<9||1==b[0]&&9==b[1]&&b[2]<1)throw new Error("Bootstrap's JavaScript requires jQuery version 1.9.1 or higher")}(jQuery),+function(a){"use strict";function b(){var a=document.createElement("bootstrap"),b={WebkitTransition:"webkitTransitionEnd",MozTransition:"transitionend",OTransition:"oTransitionEnd otransitionend",transition:"transitionend"};for(var c in b)if(void 0!==a.style[c])return{end:b[c]};return!1}a.fn.emulateTransitionEnd=function(b){var c=!1,d=this;a(this).one("bsTransitionEnd",function(){c=!0});var e=function(){c||a(d).trigger(a.support.transition.end)};return setTimeout(e,b),this},a(function(){a.support.transition=b(),a.support.transition&&(a.event.special.bsTransitionEnd={bindType:a.support.transition.end,delegateType:a.support.transition.end,handle:function(b){return a(b.target).is(this)?b.handleObj.handler.apply(this,arguments):void 0}})})}(jQuery),+function(a){"use strict";function b(b){return this.each(function(){var c=a(this),e=c.data("bs.alert");e||c.data("bs.alert",e=new d(this)),"string"==typeof b&&e[b].call(c)})}var c='[data-dismiss="alert"]',d=function(b){a(b).on("click",c,this.close)};d.VERSION="3.3.1",d.TRANSITION_DURATION=150,d.prototype.close=function(b){function c(){g.detach().trigger("closed.bs.alert").remove()}var e=a(this),f=e.attr("data-target");f||(f=e.attr("href"),f=f&&f.replace(/.*(?=#[^\s]*$)/,""));var g=a(f);b&&b.preventDefault(),g.length||(g=e.closest(".alert")),g.trigger(b=a.Event("close.bs.alert")),b.isDefaultPrevented()||(g.removeClass("in"),a.support.transition&&g.hasClass("fade")?g.one("bsTransitionEnd",c).emulateTransitionEnd(d.TRANSITION_DURATION):c())};var e=a.fn.alert;a.fn.alert=b,a.fn.alert.Constructor=d,a.fn.alert.noConflict=function(){return a.fn.alert=e,this},a(document).on("click.bs.alert.data-api",c,d.prototype.close)}(jQuery),+function(a){"use strict";function b(b){return this.each(function(){var d=a(this),e=d.data("bs.button"),f="object"==typeof b&&b;e||d.data("bs.button",e=new c(this,f)),"toggle"==b?e.toggle():b&&e.setState(b)})}var c=function(b,d){this.$element=a(b),this.options=a.extend({},c.DEFAULTS,d),this.isLoading=!1};c.VERSION="3.3.1",c.DEFAULTS={loadingText:"loading..."},c.prototype.setState=function(b){var c="disabled",d=this.$element,e=d.is("input")?"val":"html",f=d.data();b+="Text",null==f.resetText&&d.data("resetText",d[e]()),setTimeout(a.proxy(function(){d[e](null==f[b]?this.options[b]:f[b]),"loadingText"==b?(this.isLoading=!0,d.addClass(c).attr(c,c)):this.isLoading&&(this.isLoading=!1,d.removeClass(c).removeAttr(c))},this),0)},c.prototype.toggle=function(){var a=!0,b=this.$element.closest('[data-toggle="buttons"]');if(b.length){var c=this.$element.find("input");"radio"==c.prop("type")&&(c.prop("checked")&&this.$element.hasClass("active")?a=!1:b.find(".active").removeClass("active")),a&&c.prop("checked",!this.$element.hasClass("active")).trigger("change")}else this.$element.attr("aria-pressed",!this.$element.hasClass("active"));a&&this.$element.toggleClass("active")};var d=a.fn.button;a.fn.button=b,a.fn.button.Constructor=c,a.fn.button.noConflict=function(){return a.fn.button=d,this},a(document).on("click.bs.button.data-api",'[data-toggle^="button"]',function(c){var d=a(c.target);d.hasClass("btn")||(d=d.closest(".btn")),b.call(d,"toggle"),c.preventDefault()}).on("focus.bs.button.data-api blur.bs.button.data-api",'[data-toggle^="button"]',function(b){a(b.target).closest(".btn").toggleClass("focus",/^focus(in)?$/.test(b.type))})}(jQuery),+function(a){"use strict";function b(b){return this.each(function(){var d=a(this),e=d.data("bs.carousel"),f=a.extend({},c.DEFAULTS,d.data(),"object"==typeof b&&b),g="string"==typeof b?b:f.slide;e||d.data("bs.carousel",e=new c(this,f)),"number"==typeof b?e.to(b):g?e[g]():f.interval&&e.pause().cycle()})}var c=function(b,c){this.$element=a(b),this.$indicators=this.$element.find(".carousel-indicators"),this.options=c,this.paused=this.sliding=this.interval=this.$active=this.$items=null,this.options.keyboard&&this.$element.on("keydown.bs.carousel",a.proxy(this.keydown,this)),"hover"==this.options.pause&&!("ontouchstart"in document.documentElement)&&this.$element.on("mouseenter.bs.carousel",a.proxy(this.pause,this)).on("mouseleave.bs.carousel",a.proxy(this.cycle,this))};c.VERSION="3.3.1",c.TRANSITION_DURATION=600,c.DEFAULTS={interval:5e3,pause:"hover",wrap:!0,keyboard:!0},c.prototype.keydown=function(a){if(!/input|textarea/i.test(a.target.tagName)){switch(a.which){case 37:this.prev();break;case 39:this.next();break;default:return}a.preventDefault()}},c.prototype.cycle=function(b){return b||(this.paused=!1),this.interval&&clearInterval(this.interval),this.options.interval&&!this.paused&&(this.interval=setInterval(a.proxy(this.next,this),this.options.interval)),this},c.prototype.getItemIndex=function(a){return this.$items=a.parent().children(".item"),this.$items.index(a||this.$active)},c.prototype.getItemForDirection=function(a,b){var c="prev"==a?-1:1,d=this.getItemIndex(b),e=(d+c)%this.$items.length;return this.$items.eq(e)},c.prototype.to=function(a){var b=this,c=this.getItemIndex(this.$active=this.$element.find(".item.active"));return a>this.$items.length-1||0>a?void 0:this.sliding?this.$element.one("slid.bs.carousel",function(){b.to(a)}):c==a?this.pause().cycle():this.slide(a>c?"next":"prev",this.$items.eq(a))},c.prototype.pause=function(b){return b||(this.paused=!0),this.$element.find(".next, .prev").length&&a.support.transition&&(this.$element.trigger(a.support.transition.end),this.cycle(!0)),this.interval=clearInterval(this.interval),this},c.prototype.next=function(){return this.sliding?void 0:this.slide("next")},c.prototype.prev=function(){return this.sliding?void 0:this.slide("prev")},c.prototype.slide=function(b,d){var e=this.$element.find(".item.active"),f=d||this.getItemForDirection(b,e),g=this.interval,h="next"==b?"left":"right",i="next"==b?"first":"last",j=this;if(!f.length){if(!this.options.wrap)return;f=this.$element.find(".item")[i]()}if(f.hasClass("active"))return this.sliding=!1;var k=f[0],l=a.Event("slide.bs.carousel",{relatedTarget:k,direction:h});if(this.$element.trigger(l),!l.isDefaultPrevented()){if(this.sliding=!0,g&&this.pause(),this.$indicators.length){this.$indicators.find(".active").removeClass("active");var m=a(this.$indicators.children()[this.getItemIndex(f)]);m&&m.addClass("active")}var n=a.Event("slid.bs.carousel",{relatedTarget:k,direction:h});return a.support.transition&&this.$element.hasClass("slide")?(f.addClass(b),f[0].offsetWidth,e.addClass(h),f.addClass(h),e.one("bsTransitionEnd",function(){f.removeClass([b,h].join(" ")).addClass("active"),e.removeClass(["active",h].join(" ")),j.sliding=!1,setTimeout(function(){j.$element.trigger(n)},0)}).emulateTransitionEnd(c.TRANSITION_DURATION)):(e.removeClass("active"),f.addClass("active"),this.sliding=!1,this.$element.trigger(n)),g&&this.cycle(),this}};var d=a.fn.carousel;a.fn.carousel=b,a.fn.carousel.Constructor=c,a.fn.carousel.noConflict=function(){return a.fn.carousel=d,this};var e=function(c){var d,e=a(this),f=a(e.attr("data-target")||(d=e.attr("href"))&&d.replace(/.*(?=#[^\s]+$)/,""));if(f.hasClass("carousel")){var g=a.extend({},f.data(),e.data()),h=e.attr("data-slide-to");h&&(g.interval=!1),b.call(f,g),h&&f.data("bs.carousel").to(h),c.preventDefault()}};a(document).on("click.bs.carousel.data-api","[data-slide]",e).on("click.bs.carousel.data-api","[data-slide-to]",e),a(window).on("load",function(){a('[data-ride="carousel"]').each(function(){var c=a(this);b.call(c,c.data())})})}(jQuery),+function(a){"use strict";function b(b){var c,d=b.attr("data-target")||(c=b.attr("href"))&&c.replace(/.*(?=#[^\s]+$)/,"");return a(d)}function c(b){return this.each(function(){var c=a(this),e=c.data("bs.collapse"),f=a.extend({},d.DEFAULTS,c.data(),"object"==typeof b&&b);!e&&f.toggle&&"show"==b&&(f.toggle=!1),e||c.data("bs.collapse",e=new d(this,f)),"string"==typeof b&&e[b]()})}var d=function(b,c){this.$element=a(b),this.options=a.extend({},d.DEFAULTS,c),this.$trigger=a(this.options.trigger).filter('[href="#'+b.id+'"], [data-target="#'+b.id+'"]'),this.transitioning=null,this.options.parent?this.$parent=this.getParent():this.addAriaAndCollapsedClass(this.$element,this.$trigger),this.options.toggle&&this.toggle()};d.VERSION="3.3.1",d.TRANSITION_DURATION=350,d.DEFAULTS={toggle:!0,trigger:'[data-toggle="collapse"]'},d.prototype.dimension=function(){var a=this.$element.hasClass("width");return a?"width":"height"},d.prototype.show=function(){if(!this.transitioning&&!this.$element.hasClass("in")){var b,e=this.$parent&&this.$parent.find("> .panel").children(".in, .collapsing");if(!(e&&e.length&&(b=e.data("bs.collapse"),b&&b.transitioning))){var f=a.Event("show.bs.collapse");if(this.$element.trigger(f),!f.isDefaultPrevented()){e&&e.length&&(c.call(e,"hide"),b||e.data("bs.collapse",null));var g=this.dimension();this.$element.removeClass("collapse").addClass("collapsing")[g](0).attr("aria-expanded",!0),this.$trigger.removeClass("collapsed").attr("aria-expanded",!0),this.transitioning=1;var h=function(){this.$element.removeClass("collapsing").addClass("collapse in")[g](""),this.transitioning=0,this.$element.trigger("shown.bs.collapse")};if(!a.support.transition)return h.call(this);var i=a.camelCase(["scroll",g].join("-"));this.$element.one("bsTransitionEnd",a.proxy(h,this)).emulateTransitionEnd(d.TRANSITION_DURATION)[g](this.$element[0][i])}}}},d.prototype.hide=function(){if(!this.transitioning&&this.$element.hasClass("in")){var b=a.Event("hide.bs.collapse");if(this.$element.trigger(b),!b.isDefaultPrevented()){var c=this.dimension();this.$element[c](this.$element[c]())[0].offsetHeight,this.$element.addClass("collapsing").removeClass("collapse in").attr("aria-expanded",!1),this.$trigger.addClass("collapsed").attr("aria-expanded",!1),this.transitioning=1;var e=function(){this.transitioning=0,this.$element.removeClass("collapsing").addClass("collapse").trigger("hidden.bs.collapse")};return a.support.transition?void this.$element[c](0).one("bsTransitionEnd",a.proxy(e,this)).emulateTransitionEnd(d.TRANSITION_DURATION):e.call(this)}}},d.prototype.toggle=function(){this[this.$element.hasClass("in")?"hide":"show"]()},d.prototype.getParent=function(){return a(this.options.parent).find('[data-toggle="collapse"][data-parent="'+this.options.parent+'"]').each(a.proxy(function(c,d){var e=a(d);this.addAriaAndCollapsedClass(b(e),e)},this)).end()},d.prototype.addAriaAndCollapsedClass=function(a,b){var c=a.hasClass("in");a.attr("aria-expanded",c),b.toggleClass("collapsed",!c).attr("aria-expanded",c)};var e=a.fn.collapse;a.fn.collapse=c,a.fn.collapse.Constructor=d,a.fn.collapse.noConflict=function(){return a.fn.collapse=e,this},a(document).on("click.bs.collapse.data-api",'[data-toggle="collapse"]',function(d){var e=a(this);e.attr("data-target")||d.preventDefault();var f=b(e),g=f.data("bs.collapse"),h=g?"toggle":a.extend({},e.data(),{trigger:this});c.call(f,h)})}(jQuery),+function(a){"use strict";function b(b){b&&3===b.which||(a(e).remove(),a(f).each(function(){var d=a(this),e=c(d),f={relatedTarget:this};e.hasClass("open")&&(e.trigger(b=a.Event("hide.bs.dropdown",f)),b.isDefaultPrevented()||(d.attr("aria-expanded","false"),e.removeClass("open").trigger("hidden.bs.dropdown",f)))}))}function c(b){var c=b.attr("data-target");c||(c=b.attr("href"),c=c&&/#[A-Za-z]/.test(c)&&c.replace(/.*(?=#[^\s]*$)/,""));var d=c&&a(c);return d&&d.length?d:b.parent()}function d(b){return this.each(function(){var c=a(this),d=c.data("bs.dropdown");d||c.data("bs.dropdown",d=new g(this)),"string"==typeof b&&d[b].call(c)})}var e=".dropdown-backdrop",f='[data-toggle="dropdown"]',g=function(b){a(b).on("click.bs.dropdown",this.toggle)};g.VERSION="3.3.1",g.prototype.toggle=function(d){var e=a(this);if(!e.is(".disabled, :disabled")){var f=c(e),g=f.hasClass("open");if(b(),!g){"ontouchstart"in document.documentElement&&!f.closest(".navbar-nav").length&&a('<div class="dropdown-backdrop"/>').insertAfter(a(this)).on("click",b);var h={relatedTarget:this};if(f.trigger(d=a.Event("show.bs.dropdown",h)),d.isDefaultPrevented())return;e.trigger("focus").attr("aria-expanded","true"),f.toggleClass("open").trigger("shown.bs.dropdown",h)}return!1}},g.prototype.keydown=function(b){if(/(38|40|27|32)/.test(b.which)&&!/input|textarea/i.test(b.target.tagName)){var d=a(this);if(b.preventDefault(),b.stopPropagation(),!d.is(".disabled, :disabled")){var e=c(d),g=e.hasClass("open");if(!g&&27!=b.which||g&&27==b.which)return 27==b.which&&e.find(f).trigger("focus"),d.trigger("click");var h=" li:not(.divider):visible a",i=e.find('[role="menu"]'+h+', [role="listbox"]'+h);if(i.length){var j=i.index(b.target);38==b.which&&j>0&&j--,40==b.which&&j<i.length-1&&j++,~j||(j=0),i.eq(j).trigger("focus")}}}};var h=a.fn.dropdown;a.fn.dropdown=d,a.fn.dropdown.Constructor=g,a.fn.dropdown.noConflict=function(){return a.fn.dropdown=h,this},a(document).on("click.bs.dropdown.data-api",b).on("click.bs.dropdown.data-api",".dropdown form",function(a){a.stopPropagation()}).on("click.bs.dropdown.data-api",f,g.prototype.toggle).on("keydown.bs.dropdown.data-api",f,g.prototype.keydown).on("keydown.bs.dropdown.data-api",'[role="menu"]',g.prototype.keydown).on("keydown.bs.dropdown.data-api",'[role="listbox"]',g.prototype.keydown)}(jQuery),+function(a){"use strict";function b(b,d){return this.each(function(){var e=a(this),f=e.data("bs.modal"),g=a.extend({},c.DEFAULTS,e.data(),"object"==typeof b&&b);f||e.data("bs.modal",f=new c(this,g)),"string"==typeof b?f[b](d):g.show&&f.show(d)})}var c=function(b,c){this.options=c,this.$body=a(document.body),this.$element=a(b),this.$backdrop=this.isShown=null,this.scrollbarWidth=0,this.options.remote&&this.$element.find(".modal-content").load(this.options.remote,a.proxy(function(){this.$element.trigger("loaded.bs.modal")},this))};c.VERSION="3.3.1",c.TRANSITION_DURATION=300,c.BACKDROP_TRANSITION_DURATION=150,c.DEFAULTS={backdrop:!0,keyboard:!0,show:!0},c.prototype.toggle=function(a){return this.isShown?this.hide():this.show(a)},c.prototype.show=function(b){var d=this,e=a.Event("show.bs.modal",{relatedTarget:b});this.$element.trigger(e),this.isShown||e.isDefaultPrevented()||(this.isShown=!0,this.checkScrollbar(),this.setScrollbar(),this.$body.addClass("modal-open"),this.escape(),this.resize(),this.$element.on("click.dismiss.bs.modal",'[data-dismiss="modal"]',a.proxy(this.hide,this)),this.backdrop(function(){var e=a.support.transition&&d.$element.hasClass("fade");d.$element.parent().length||d.$element.appendTo(d.$body),d.$element.show().scrollTop(0),d.options.backdrop&&d.adjustBackdrop(),d.adjustDialog(),e&&d.$element[0].offsetWidth,d.$element.addClass("in").attr("aria-hidden",!1),d.enforceFocus();var f=a.Event("shown.bs.modal",{relatedTarget:b});e?d.$element.find(".modal-dialog").one("bsTransitionEnd",function(){d.$element.trigger("focus").trigger(f)}).emulateTransitionEnd(c.TRANSITION_DURATION):d.$element.trigger("focus").trigger(f)}))},c.prototype.hide=function(b){b&&b.preventDefault(),b=a.Event("hide.bs.modal"),this.$element.trigger(b),this.isShown&&!b.isDefaultPrevented()&&(this.isShown=!1,this.escape(),this.resize(),a(document).off("focusin.bs.modal"),this.$element.removeClass("in").attr("aria-hidden",!0).off("click.dismiss.bs.modal"),a.support.transition&&this.$element.hasClass("fade")?this.$element.one("bsTransitionEnd",a.proxy(this.hideModal,this)).emulateTransitionEnd(c.TRANSITION_DURATION):this.hideModal())},c.prototype.enforceFocus=function(){a(document).off("focusin.bs.modal").on("focusin.bs.modal",a.proxy(function(a){this.$element[0]===a.target||this.$element.has(a.target).length||this.$element.trigger("focus")},this))},c.prototype.escape=function(){this.isShown&&this.options.keyboard?this.$element.on("keydown.dismiss.bs.modal",a.proxy(function(a){27==a.which&&this.hide()},this)):this.isShown||this.$element.off("keydown.dismiss.bs.modal")},c.prototype.resize=function(){this.isShown?a(window).on("resize.bs.modal",a.proxy(this.handleUpdate,this)):a(window).off("resize.bs.modal")},c.prototype.hideModal=function(){var a=this;this.$element.hide(),this.backdrop(function(){a.$body.removeClass("modal-open"),a.resetAdjustments(),a.resetScrollbar(),a.$element.trigger("hidden.bs.modal")})},c.prototype.removeBackdrop=function(){this.$backdrop&&this.$backdrop.remove(),this.$backdrop=null},c.prototype.backdrop=function(b){var d=this,e=this.$element.hasClass("fade")?"fade":"";if(this.isShown&&this.options.backdrop){var f=a.support.transition&&e;if(this.$backdrop=a('<div class="modal-backdrop '+e+'" />').prependTo(this.$element).on("click.dismiss.bs.modal",a.proxy(function(a){a.target===a.currentTarget&&("static"==this.options.backdrop?this.$element[0].focus.call(this.$element[0]):this.hide.call(this))},this)),f&&this.$backdrop[0].offsetWidth,this.$backdrop.addClass("in"),!b)return;f?this.$backdrop.one("bsTransitionEnd",b).emulateTransitionEnd(c.BACKDROP_TRANSITION_DURATION):b()}else if(!this.isShown&&this.$backdrop){this.$backdrop.removeClass("in");var g=function(){d.removeBackdrop(),b&&b()};a.support.transition&&this.$element.hasClass("fade")?this.$backdrop.one("bsTransitionEnd",g).emulateTransitionEnd(c.BACKDROP_TRANSITION_DURATION):g()}else b&&b()},c.prototype.handleUpdate=function(){this.options.backdrop&&this.adjustBackdrop(),this.adjustDialog()},c.prototype.adjustBackdrop=function(){this.$backdrop.css("height",0).css("height",this.$element[0].scrollHeight)},c.prototype.adjustDialog=function(){var a=this.$element[0].scrollHeight>document.documentElement.clientHeight;this.$element.css({paddingLeft:!this.bodyIsOverflowing&&a?this.scrollbarWidth:"",paddingRight:this.bodyIsOverflowing&&!a?this.scrollbarWidth:""})},c.prototype.resetAdjustments=function(){this.$element.css({paddingLeft:"",paddingRight:""})},c.prototype.checkScrollbar=function(){this.bodyIsOverflowing=document.body.scrollHeight>document.documentElement.clientHeight,this.scrollbarWidth=this.measureScrollbar()},c.prototype.setScrollbar=function(){var a=parseInt(this.$body.css("padding-right")||0,10);this.bodyIsOverflowing&&this.$body.css("padding-right",a+this.scrollbarWidth)},c.prototype.resetScrollbar=function(){this.$body.css("padding-right","")},c.prototype.measureScrollbar=function(){var a=document.createElement("div");a.className="modal-scrollbar-measure",this.$body.append(a);var b=a.offsetWidth-a.clientWidth;return this.$body[0].removeChild(a),b};var d=a.fn.modal;a.fn.modal=b,a.fn.modal.Constructor=c,a.fn.modal.noConflict=function(){return a.fn.modal=d,this},a(document).on("click.bs.modal.data-api",'[data-toggle="modal"]',function(c){var d=a(this),e=d.attr("href"),f=a(d.attr("data-target")||e&&e.replace(/.*(?=#[^\s]+$)/,"")),g=f.data("bs.modal")?"toggle":a.extend({remote:!/#/.test(e)&&e},f.data(),d.data());d.is("a")&&c.preventDefault(),f.one("show.bs.modal",function(a){a.isDefaultPrevented()||f.one("hidden.bs.modal",function(){d.is(":visible")&&d.trigger("focus")})}),b.call(f,g,this)})}(jQuery),+function(a){"use strict";function b(b){return this.each(function(){var d=a(this),e=d.data("bs.tooltip"),f="object"==typeof b&&b,g=f&&f.selector;(e||"destroy"!=b)&&(g?(e||d.data("bs.tooltip",e={}),e[g]||(e[g]=new c(this,f))):e||d.data("bs.tooltip",e=new c(this,f)),"string"==typeof b&&e[b]())})}var c=function(a,b){this.type=this.options=this.enabled=this.timeout=this.hoverState=this.$element=null,this.init("tooltip",a,b)};c.VERSION="3.3.1",c.TRANSITION_DURATION=150,c.DEFAULTS={animation:!0,placement:"top",selector:!1,template:'<div class="tooltip" role="tooltip"><div class="tooltip-arrow"></div><div class="tooltip-inner"></div></div>',trigger:"hover focus",title:"",delay:0,html:!1,container:!1,viewport:{selector:"body",padding:0}},c.prototype.init=function(b,c,d){this.enabled=!0,this.type=b,this.$element=a(c),this.options=this.getOptions(d),this.$viewport=this.options.viewport&&a(this.options.viewport.selector||this.options.viewport);for(var e=this.options.trigger.split(" "),f=e.length;f--;){var g=e[f];if("click"==g)this.$element.on("click."+this.type,this.options.selector,a.proxy(this.toggle,this));else if("manual"!=g){var h="hover"==g?"mouseenter":"focusin",i="hover"==g?"mouseleave":"focusout";this.$element.on(h+"."+this.type,this.options.selector,a.proxy(this.enter,this)),this.$element.on(i+"."+this.type,this.options.selector,a.proxy(this.leave,this))}}this.options.selector?this._options=a.extend({},this.options,{trigger:"manual",selector:""}):this.fixTitle()},c.prototype.getDefaults=function(){return c.DEFAULTS},c.prototype.getOptions=function(b){return b=a.extend({},this.getDefaults(),this.$element.data(),b),b.delay&&"number"==typeof b.delay&&(b.delay={show:b.delay,hide:b.delay}),b},c.prototype.getDelegateOptions=function(){var b={},c=this.getDefaults();return this._options&&a.each(this._options,function(a,d){c[a]!=d&&(b[a]=d)}),b},c.prototype.enter=function(b){var c=b instanceof this.constructor?b:a(b.currentTarget).data("bs."+this.type);return c&&c.$tip&&c.$tip.is(":visible")?void(c.hoverState="in"):(c||(c=new this.constructor(b.currentTarget,this.getDelegateOptions()),a(b.currentTarget).data("bs."+this.type,c)),clearTimeout(c.timeout),c.hoverState="in",c.options.delay&&c.options.delay.show?void(c.timeout=setTimeout(function(){"in"==c.hoverState&&c.show()},c.options.delay.show)):c.show())},c.prototype.leave=function(b){var c=b instanceof this.constructor?b:a(b.currentTarget).data("bs."+this.type);return c||(c=new this.constructor(b.currentTarget,this.getDelegateOptions()),a(b.currentTarget).data("bs."+this.type,c)),clearTimeout(c.timeout),c.hoverState="out",c.options.delay&&c.options.delay.hide?void(c.timeout=setTimeout(function(){"out"==c.hoverState&&c.hide()},c.options.delay.hide)):c.hide()},c.prototype.show=function(){var b=a.Event("show.bs."+this.type);if(this.hasContent()&&this.enabled){this.$element.trigger(b);var d=a.contains(this.$element[0].ownerDocument.documentElement,this.$element[0]);if(b.isDefaultPrevented()||!d)return;var e=this,f=this.tip(),g=this.getUID(this.type);this.setContent(),f.attr("id",g),this.$element.attr("aria-describedby",g),this.options.animation&&f.addClass("fade");var h="function"==typeof this.options.placement?this.options.placement.call(this,f[0],this.$element[0]):this.options.placement,i=/\s?auto?\s?/i,j=i.test(h);j&&(h=h.replace(i,"")||"top"),f.detach().css({top:0,left:0,display:"block"}).addClass(h).data("bs."+this.type,this),this.options.container?f.appendTo(this.options.container):f.insertAfter(this.$element);var k=this.getPosition(),l=f[0].offsetWidth,m=f[0].offsetHeight;if(j){var n=h,o=this.options.container?a(this.options.container):this.$element.parent(),p=this.getPosition(o);h="bottom"==h&&k.bottom+m>p.bottom?"top":"top"==h&&k.top-m<p.top?"bottom":"right"==h&&k.right+l>p.width?"left":"left"==h&&k.left-l<p.left?"right":h,f.removeClass(n).addClass(h)}var q=this.getCalculatedOffset(h,k,l,m);this.applyPlacement(q,h);var r=function(){var a=e.hoverState;e.$element.trigger("shown.bs."+e.type),e.hoverState=null,"out"==a&&e.leave(e)};a.support.transition&&this.$tip.hasClass("fade")?f.one("bsTransitionEnd",r).emulateTransitionEnd(c.TRANSITION_DURATION):r()}},c.prototype.applyPlacement=function(b,c){var d=this.tip(),e=d[0].offsetWidth,f=d[0].offsetHeight,g=parseInt(d.css("margin-top"),10),h=parseInt(d.css("margin-left"),10);isNaN(g)&&(g=0),isNaN(h)&&(h=0),b.top=b.top+g,b.left=b.left+h,a.offset.setOffset(d[0],a.extend({using:function(a){d.css({top:Math.round(a.top),left:Math.round(a.left)})}},b),0),d.addClass("in");var i=d[0].offsetWidth,j=d[0].offsetHeight;"top"==c&&j!=f&&(b.top=b.top+f-j);var k=this.getViewportAdjustedDelta(c,b,i,j);k.left?b.left+=k.left:b.top+=k.top;var l=/top|bottom/.test(c),m=l?2*k.left-e+i:2*k.top-f+j,n=l?"offsetWidth":"offsetHeight";d.offset(b),this.replaceArrow(m,d[0][n],l)},c.prototype.replaceArrow=function(a,b,c){this.arrow().css(c?"left":"top",50*(1-a/b)+"%").css(c?"top":"left","")},c.prototype.setContent=function(){var a=this.tip(),b=this.getTitle();a.find(".tooltip-inner")[this.options.html?"html":"text"](b),a.removeClass("fade in top bottom left right")},c.prototype.hide=function(b){function d(){"in"!=e.hoverState&&f.detach(),e.$element.removeAttr("aria-describedby").trigger("hidden.bs."+e.type),b&&b()}var e=this,f=this.tip(),g=a.Event("hide.bs."+this.type);return this.$element.trigger(g),g.isDefaultPrevented()?void 0:(f.removeClass("in"),a.support.transition&&this.$tip.hasClass("fade")?f.one("bsTransitionEnd",d).emulateTransitionEnd(c.TRANSITION_DURATION):d(),this.hoverState=null,this)},c.prototype.fixTitle=function(){var a=this.$element;(a.attr("title")||"string"!=typeof a.attr("data-original-title"))&&a.attr("data-original-title",a.attr("title")||"").attr("title","")},c.prototype.hasContent=function(){return this.getTitle()},c.prototype.getPosition=function(b){b=b||this.$element;var c=b[0],d="BODY"==c.tagName,e=c.getBoundingClientRect();null==e.width&&(e=a.extend({},e,{width:e.right-e.left,height:e.bottom-e.top}));var f=d?{top:0,left:0}:b.offset(),g={scroll:d?document.documentElement.scrollTop||document.body.scrollTop:b.scrollTop()},h=d?{width:a(window).width(),height:a(window).height()}:null;return a.extend({},e,g,h,f)},c.prototype.getCalculatedOffset=function(a,b,c,d){return"bottom"==a?{top:b.top+b.height,left:b.left+b.width/2-c/2}:"top"==a?{top:b.top-d,left:b.left+b.width/2-c/2}:"left"==a?{top:b.top+b.height/2-d/2,left:b.left-c}:{top:b.top+b.height/2-d/2,left:b.left+b.width}},c.prototype.getViewportAdjustedDelta=function(a,b,c,d){var e={top:0,left:0};if(!this.$viewport)return e;var f=this.options.viewport&&this.options.viewport.padding||0,g=this.getPosition(this.$viewport);if(/right|left/.test(a)){var h=b.top-f-g.scroll,i=b.top+f-g.scroll+d;h<g.top?e.top=g.top-h:i>g.top+g.height&&(e.top=g.top+g.height-i)}else{var j=b.left-f,k=b.left+f+c;j<g.left?e.left=g.left-j:k>g.width&&(e.left=g.left+g.width-k)}return e},c.prototype.getTitle=function(){var a,b=this.$element,c=this.options;return a=b.attr("data-original-title")||("function"==typeof c.title?c.title.call(b[0]):c.title)},c.prototype.getUID=function(a){do a+=~~(1e6*Math.random());while(document.getElementById(a));return a},c.prototype.tip=function(){return this.$tip=this.$tip||a(this.options.template)},c.prototype.arrow=function(){return this.$arrow=this.$arrow||this.tip().find(".tooltip-arrow")},c.prototype.enable=function(){this.enabled=!0},c.prototype.disable=function(){this.enabled=!1},c.prototype.toggleEnabled=function(){this.enabled=!this.enabled},c.prototype.toggle=function(b){var c=this;b&&(c=a(b.currentTarget).data("bs."+this.type),c||(c=new this.constructor(b.currentTarget,this.getDelegateOptions()),a(b.currentTarget).data("bs."+this.type,c))),c.tip().hasClass("in")?c.leave(c):c.enter(c)},c.prototype.destroy=function(){var a=this;clearTimeout(this.timeout),this.hide(function(){a.$element.off("."+a.type).removeData("bs."+a.type)})};var d=a.fn.tooltip;a.fn.tooltip=b,a.fn.tooltip.Constructor=c,a.fn.tooltip.noConflict=function(){return a.fn.tooltip=d,this}}(jQuery),+function(a){"use strict";function b(b){return this.each(function(){var d=a(this),e=d.data("bs.popover"),f="object"==typeof b&&b,g=f&&f.selector;(e||"destroy"!=b)&&(g?(e||d.data("bs.popover",e={}),e[g]||(e[g]=new c(this,f))):e||d.data("bs.popover",e=new c(this,f)),"string"==typeof b&&e[b]())})}var c=function(a,b){this.init("popover",a,b)};if(!a.fn.tooltip)throw new Error("Popover requires tooltip.js");c.VERSION="3.3.1",c.DEFAULTS=a.extend({},a.fn.tooltip.Constructor.DEFAULTS,{placement:"right",trigger:"click",content:"",template:'<div class="popover" role="tooltip"><div class="arrow"></div><h3 class="popover-title"></h3><div class="popover-content"></div></div>'}),c.prototype=a.extend({},a.fn.tooltip.Constructor.prototype),c.prototype.constructor=c,c.prototype.getDefaults=function(){return c.DEFAULTS},c.prototype.setContent=function(){var a=this.tip(),b=this.getTitle(),c=this.getContent();a.find(".popover-title")[this.options.html?"html":"text"](b),a.find(".popover-content").children().detach().end()[this.options.html?"string"==typeof c?"html":"append":"text"](c),a.removeClass("fade top bottom left right in"),a.find(".popover-title").html()||a.find(".popover-title").hide()},c.prototype.hasContent=function(){return this.getTitle()||this.getContent()},c.prototype.getContent=function(){var a=this.$element,b=this.options;return a.attr("data-content")||("function"==typeof b.content?b.content.call(a[0]):b.content)},c.prototype.arrow=function(){return this.$arrow=this.$arrow||this.tip().find(".arrow")},c.prototype.tip=function(){return this.$tip||(this.$tip=a(this.options.template)),this.$tip};var d=a.fn.popover;a.fn.popover=b,a.fn.popover.Constructor=c,a.fn.popover.noConflict=function(){return a.fn.popover=d,this}}(jQuery),+function(a){"use strict";function b(c,d){var e=a.proxy(this.process,this);this.$body=a("body"),this.$scrollElement=a(a(c).is("body")?window:c),this.options=a.extend({},b.DEFAULTS,d),this.selector=(this.options.target||"")+" .nav li > a",this.offsets=[],this.targets=[],this.activeTarget=null,this.scrollHeight=0,this.$scrollElement.on("scroll.bs.scrollspy",e),this.refresh(),this.process()}function c(c){return this.each(function(){var d=a(this),e=d.data("bs.scrollspy"),f="object"==typeof c&&c;e||d.data("bs.scrollspy",e=new b(this,f)),"string"==typeof c&&e[c]()})}b.VERSION="3.3.1",b.DEFAULTS={offset:10},b.prototype.getScrollHeight=function(){return this.$scrollElement[0].scrollHeight||Math.max(this.$body[0].scrollHeight,document.documentElement.scrollHeight)},b.prototype.refresh=function(){var b="offset",c=0;a.isWindow(this.$scrollElement[0])||(b="position",c=this.$scrollElement.scrollTop()),this.offsets=[],this.targets=[],this.scrollHeight=this.getScrollHeight();var d=this;this.$body.find(this.selector).map(function(){var d=a(this),e=d.data("target")||d.attr("href"),f=/^#./.test(e)&&a(e);return f&&f.length&&f.is(":visible")&&[[f[b]().top+c,e]]||null}).sort(function(a,b){return a[0]-b[0]}).each(function(){d.offsets.push(this[0]),d.targets.push(this[1])})},b.prototype.process=function(){var a,b=this.$scrollElement.scrollTop()+this.options.offset,c=this.getScrollHeight(),d=this.options.offset+c-this.$scrollElement.height(),e=this.offsets,f=this.targets,g=this.activeTarget;if(this.scrollHeight!=c&&this.refresh(),b>=d)return g!=(a=f[f.length-1])&&this.activate(a);if(g&&b<e[0])return this.activeTarget=null,this.clear();for(a=e.length;a--;)g!=f[a]&&b>=e[a]&&(!e[a+1]||b<=e[a+1])&&this.activate(f[a])},b.prototype.activate=function(b){this.activeTarget=b,this.clear();var c=this.selector+'[data-target="'+b+'"],'+this.selector+'[href="'+b+'"]',d=a(c).parents("li").addClass("active");d.parent(".dropdown-menu").length&&(d=d.closest("li.dropdown").addClass("active")),d.trigger("activate.bs.scrollspy")},b.prototype.clear=function(){a(this.selector).parentsUntil(this.options.target,".active").removeClass("active")};var d=a.fn.scrollspy;a.fn.scrollspy=c,a.fn.scrollspy.Constructor=b,a.fn.scrollspy.noConflict=function(){return a.fn.scrollspy=d,this},a(window).on("load.bs.scrollspy.data-api",function(){a('[data-spy="scroll"]').each(function(){var b=a(this);c.call(b,b.data())})})}(jQuery),+function(a){"use strict";function b(b){return this.each(function(){var d=a(this),e=d.data("bs.tab");e||d.data("bs.tab",e=new c(this)),"string"==typeof b&&e[b]()})}var c=function(b){this.element=a(b)};c.VERSION="3.3.1",c.TRANSITION_DURATION=150,c.prototype.show=function(){var b=this.element,c=b.closest("ul:not(.dropdown-menu)"),d=b.data("target");if(d||(d=b.attr("href"),d=d&&d.replace(/.*(?=#[^\s]*$)/,"")),!b.parent("li").hasClass("active")){var e=c.find(".active:last a"),f=a.Event("hide.bs.tab",{relatedTarget:b[0]}),g=a.Event("show.bs.tab",{relatedTarget:e[0]});if(e.trigger(f),b.trigger(g),!g.isDefaultPrevented()&&!f.isDefaultPrevented()){var h=a(d);this.activate(b.closest("li"),c),this.activate(h,h.parent(),function(){e.trigger({type:"hidden.bs.tab",relatedTarget:b[0]}),b.trigger({type:"shown.bs.tab",relatedTarget:e[0]})
+})}}},c.prototype.activate=function(b,d,e){function f(){g.removeClass("active").find("> .dropdown-menu > .active").removeClass("active").end().find('[data-toggle="tab"]').attr("aria-expanded",!1),b.addClass("active").find('[data-toggle="tab"]').attr("aria-expanded",!0),h?(b[0].offsetWidth,b.addClass("in")):b.removeClass("fade"),b.parent(".dropdown-menu")&&b.closest("li.dropdown").addClass("active").end().find('[data-toggle="tab"]').attr("aria-expanded",!0),e&&e()}var g=d.find("> .active"),h=e&&a.support.transition&&(g.length&&g.hasClass("fade")||!!d.find("> .fade").length);g.length&&h?g.one("bsTransitionEnd",f).emulateTransitionEnd(c.TRANSITION_DURATION):f(),g.removeClass("in")};var d=a.fn.tab;a.fn.tab=b,a.fn.tab.Constructor=c,a.fn.tab.noConflict=function(){return a.fn.tab=d,this};var e=function(c){c.preventDefault(),b.call(a(this),"show")};a(document).on("click.bs.tab.data-api",'[data-toggle="tab"]',e).on("click.bs.tab.data-api",'[data-toggle="pill"]',e)}(jQuery),+function(a){"use strict";function b(b){return this.each(function(){var d=a(this),e=d.data("bs.affix"),f="object"==typeof b&&b;e||d.data("bs.affix",e=new c(this,f)),"string"==typeof b&&e[b]()})}var c=function(b,d){this.options=a.extend({},c.DEFAULTS,d),this.$target=a(this.options.target).on("scroll.bs.affix.data-api",a.proxy(this.checkPosition,this)).on("click.bs.affix.data-api",a.proxy(this.checkPositionWithEventLoop,this)),this.$element=a(b),this.affixed=this.unpin=this.pinnedOffset=null,this.checkPosition()};c.VERSION="3.3.1",c.RESET="affix affix-top affix-bottom",c.DEFAULTS={offset:0,target:window},c.prototype.getState=function(a,b,c,d){var e=this.$target.scrollTop(),f=this.$element.offset(),g=this.$target.height();if(null!=c&&"top"==this.affixed)return c>e?"top":!1;if("bottom"==this.affixed)return null!=c?e+this.unpin<=f.top?!1:"bottom":a-d>=e+g?!1:"bottom";var h=null==this.affixed,i=h?e:f.top,j=h?g:b;return null!=c&&c>=i?"top":null!=d&&i+j>=a-d?"bottom":!1},c.prototype.getPinnedOffset=function(){if(this.pinnedOffset)return this.pinnedOffset;this.$element.removeClass(c.RESET).addClass("affix");var a=this.$target.scrollTop(),b=this.$element.offset();return this.pinnedOffset=b.top-a},c.prototype.checkPositionWithEventLoop=function(){setTimeout(a.proxy(this.checkPosition,this),1)},c.prototype.checkPosition=function(){if(this.$element.is(":visible")){var b=this.$element.height(),d=this.options.offset,e=d.top,f=d.bottom,g=a("body").height();"object"!=typeof d&&(f=e=d),"function"==typeof e&&(e=d.top(this.$element)),"function"==typeof f&&(f=d.bottom(this.$element));var h=this.getState(g,b,e,f);if(this.affixed!=h){null!=this.unpin&&this.$element.css("top","");var i="affix"+(h?"-"+h:""),j=a.Event(i+".bs.affix");if(this.$element.trigger(j),j.isDefaultPrevented())return;this.affixed=h,this.unpin="bottom"==h?this.getPinnedOffset():null,this.$element.removeClass(c.RESET).addClass(i).trigger(i.replace("affix","affixed")+".bs.affix")}"bottom"==h&&this.$element.offset({top:g-b-f})}};var d=a.fn.affix;a.fn.affix=b,a.fn.affix.Constructor=c,a.fn.affix.noConflict=function(){return a.fn.affix=d,this},a(window).on("load",function(){a('[data-spy="affix"]').each(function(){var c=a(this),d=c.data();d.offset=d.offset||{},null!=d.offsetBottom&&(d.offset.bottom=d.offsetBottom),null!=d.offsetTop&&(d.offset.top=d.offsetTop),b.call(c,d)})})}(jQuery); \ No newline at end of file
diff --git a/library/cacert.pem b/library/cacert.pem
index 67f696abc..633005921 100644
--- a/library/cacert.pem
+++ b/library/cacert.pem
@@ -1,18 +1,21 @@
##
-## ca-bundle.crt -- Bundle of CA Root Certificates
+## Bundle of CA Root Certificates
##
-## Certificate data from Mozilla as of: Tue Jan 28 09:38:07 2014
+## Certificate data from Mozilla downloaded on: Wed Sep 3 03:12:03 2014
##
## 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:
-## http://mxr.mozilla.org/mozilla-release/source/security/nss/lib/ckfw/builtins/certdata.txt?raw=1
+## http://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 verison 1.22.
+## SHA1: c4540021427a6fa29e5f50db9f12d48c97d33889
+##
GTE CyberTrust Global Root
@@ -90,22 +93,6 @@ BIZCe/zuf6IWUrVnZ9NA2zsmWLIodz2uFHdh1voqZiegDfqnc1zqcPGUIWVEX/r87yloqaKHee95
70+sB3c4
-----END CERTIFICATE-----
-Verisign Class 3 Public Primary Certification Authority
-=======================================================
------BEGIN CERTIFICATE-----
-MIICPDCCAaUCEHC65B0Q2Sk0tjjKewPMur8wDQYJKoZIhvcNAQECBQAwXzELMAkGA1UEBhMCVVMx
-FzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMTcwNQYDVQQLEy5DbGFzcyAzIFB1YmxpYyBQcmltYXJ5
-IENlcnRpZmljYXRpb24gQXV0aG9yaXR5MB4XDTk2MDEyOTAwMDAwMFoXDTI4MDgwMTIzNTk1OVow
-XzELMAkGA1UEBhMCVVMxFzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMTcwNQYDVQQLEy5DbGFzcyAz
-IFB1YmxpYyBQcmltYXJ5IENlcnRpZmljYXRpb24gQXV0aG9yaXR5MIGfMA0GCSqGSIb3DQEBAQUA
-A4GNADCBiQKBgQDJXFme8huKARS0EN8EQNvjV69qRUCPhAwL0TPZ2RHP7gJYHyX3KqhEBarsAx94
-f56TuZoAqiN91qyFomNFx3InzPRMxnVx0jnvT0Lwdd8KkMaOIG+YD/isI19wKTakyYbnsZogy1Ol
-hec9vn2a/iRFM9x2Fe0PonFkTGUugWhFpwIDAQABMA0GCSqGSIb3DQEBAgUAA4GBALtMEivPLCYA
-TxQT3ab7/AoRhIzzKBxnki98tsX63/Dolbwdj2wsqFHMc9ikwFPwTtYmwHYBV4GSXiHx0bH/59Ah
-WM1pF+NEHJwZRDmJXNycAA9WjQKZ7aKQRUzkuxCkPfAyAw7xzvjoyVGM5mKf5p/AfbdynMk2Omuf
-Tqj/ZA1k
------END CERTIFICATE-----
-
Verisign Class 3 Public Primary Certification Authority - G2
============================================================
-----BEGIN CERTIFICATE-----
@@ -168,63 +155,6 @@ BgkqhkiG9w0BAQUFAAOCAQEAmYFThxxol4aR7OBKuEQLq4GsJ0/WwbgcQ3izDJr86iw8bmEbTUsp
TBj0/VLZjmmx6BEP3ojY+x1J96relc8geMJgEtslQIxq/H5COEBkEveegeGTLg==
-----END CERTIFICATE-----
-ValiCert Class 1 VA
-===================
------BEGIN CERTIFICATE-----
-MIIC5zCCAlACAQEwDQYJKoZIhvcNAQEFBQAwgbsxJDAiBgNVBAcTG1ZhbGlDZXJ0IFZhbGlkYXRp
-b24gTmV0d29yazEXMBUGA1UEChMOVmFsaUNlcnQsIEluYy4xNTAzBgNVBAsTLFZhbGlDZXJ0IENs
-YXNzIDEgUG9saWN5IFZhbGlkYXRpb24gQXV0aG9yaXR5MSEwHwYDVQQDExhodHRwOi8vd3d3LnZh
-bGljZXJ0LmNvbS8xIDAeBgkqhkiG9w0BCQEWEWluZm9AdmFsaWNlcnQuY29tMB4XDTk5MDYyNTIy
-MjM0OFoXDTE5MDYyNTIyMjM0OFowgbsxJDAiBgNVBAcTG1ZhbGlDZXJ0IFZhbGlkYXRpb24gTmV0
-d29yazEXMBUGA1UEChMOVmFsaUNlcnQsIEluYy4xNTAzBgNVBAsTLFZhbGlDZXJ0IENsYXNzIDEg
-UG9saWN5IFZhbGlkYXRpb24gQXV0aG9yaXR5MSEwHwYDVQQDExhodHRwOi8vd3d3LnZhbGljZXJ0
-LmNvbS8xIDAeBgkqhkiG9w0BCQEWEWluZm9AdmFsaWNlcnQuY29tMIGfMA0GCSqGSIb3DQEBAQUA
-A4GNADCBiQKBgQDYWYJ6ibiWuqYvaG9YLqdUHAZu9OqNSLwxlBfw8068srg1knaw0KWlAdcAAxIi
-GQj4/xEjm84H9b9pGib+TunRf50sQB1ZaG6m+FiwnRqP0z/x3BkGgagO4DrdyFNFCQbmD3DD+kCm
-DuJWBQ8YTfwggtFzVXSNdnKgHZ0dwN0/cQIDAQABMA0GCSqGSIb3DQEBBQUAA4GBAFBoPUn0LBwG
-lN+VYH+Wexf+T3GtZMjdd9LvWVXoP+iOBSoh8gfStadS/pyxtuJbdxdA6nLWI8sogTLDAHkY7FkX
-icnGah5xyf23dKUlRWnFSKsZ4UWKJWsZ7uW7EvV/96aNUcPwnXS3qT6gpf+2SQMT2iLM7XGCK5nP
-Orf1LXLI
------END CERTIFICATE-----
-
-ValiCert Class 2 VA
-===================
------BEGIN CERTIFICATE-----
-MIIC5zCCAlACAQEwDQYJKoZIhvcNAQEFBQAwgbsxJDAiBgNVBAcTG1ZhbGlDZXJ0IFZhbGlkYXRp
-b24gTmV0d29yazEXMBUGA1UEChMOVmFsaUNlcnQsIEluYy4xNTAzBgNVBAsTLFZhbGlDZXJ0IENs
-YXNzIDIgUG9saWN5IFZhbGlkYXRpb24gQXV0aG9yaXR5MSEwHwYDVQQDExhodHRwOi8vd3d3LnZh
-bGljZXJ0LmNvbS8xIDAeBgkqhkiG9w0BCQEWEWluZm9AdmFsaWNlcnQuY29tMB4XDTk5MDYyNjAw
-MTk1NFoXDTE5MDYyNjAwMTk1NFowgbsxJDAiBgNVBAcTG1ZhbGlDZXJ0IFZhbGlkYXRpb24gTmV0
-d29yazEXMBUGA1UEChMOVmFsaUNlcnQsIEluYy4xNTAzBgNVBAsTLFZhbGlDZXJ0IENsYXNzIDIg
-UG9saWN5IFZhbGlkYXRpb24gQXV0aG9yaXR5MSEwHwYDVQQDExhodHRwOi8vd3d3LnZhbGljZXJ0
-LmNvbS8xIDAeBgkqhkiG9w0BCQEWEWluZm9AdmFsaWNlcnQuY29tMIGfMA0GCSqGSIb3DQEBAQUA
-A4GNADCBiQKBgQDOOnHK5avIWZJV16vYdA757tn2VUdZZUcOBVXc65g2PFxTXdMwzzjsvUGJ7SVC
-CSRrCl6zfN1SLUzm1NZ9WlmpZdRJEy0kTRxQb7XBhVQ7/nHk01xC+YDgkRoKWzk2Z/M/VXwbP7Rf
-ZHM047QSv4dk+NoS/zcnwbNDu+97bi5p9wIDAQABMA0GCSqGSIb3DQEBBQUAA4GBADt/UG9vUJSZ
-SWI4OB9L+KXIPqeCgfYrx+jFzug6EILLGACOTb2oWH+heQC1u+mNr0HZDzTuIYEZoDJJKPTEjlbV
-UjP9UNV+mWwD5MlM/Mtsq2azSiGM5bUMMj4QssxsodyamEwCW/POuZ6lcg5Ktz885hZo+L7tdEy8
-W9ViH0Pd
------END CERTIFICATE-----
-
-RSA Root Certificate 1
-======================
------BEGIN CERTIFICATE-----
-MIIC5zCCAlACAQEwDQYJKoZIhvcNAQEFBQAwgbsxJDAiBgNVBAcTG1ZhbGlDZXJ0IFZhbGlkYXRp
-b24gTmV0d29yazEXMBUGA1UEChMOVmFsaUNlcnQsIEluYy4xNTAzBgNVBAsTLFZhbGlDZXJ0IENs
-YXNzIDMgUG9saWN5IFZhbGlkYXRpb24gQXV0aG9yaXR5MSEwHwYDVQQDExhodHRwOi8vd3d3LnZh
-bGljZXJ0LmNvbS8xIDAeBgkqhkiG9w0BCQEWEWluZm9AdmFsaWNlcnQuY29tMB4XDTk5MDYyNjAw
-MjIzM1oXDTE5MDYyNjAwMjIzM1owgbsxJDAiBgNVBAcTG1ZhbGlDZXJ0IFZhbGlkYXRpb24gTmV0
-d29yazEXMBUGA1UEChMOVmFsaUNlcnQsIEluYy4xNTAzBgNVBAsTLFZhbGlDZXJ0IENsYXNzIDMg
-UG9saWN5IFZhbGlkYXRpb24gQXV0aG9yaXR5MSEwHwYDVQQDExhodHRwOi8vd3d3LnZhbGljZXJ0
-LmNvbS8xIDAeBgkqhkiG9w0BCQEWEWluZm9AdmFsaWNlcnQuY29tMIGfMA0GCSqGSIb3DQEBAQUA
-A4GNADCBiQKBgQDjmFGWHOjVsQaBalfDcnWTq8+epvzzFlLWLU2fNUSoLgRNB0mKOCn1dzfnt6td
-3zZxFJmP3MKS8edgkpfs2Ejcv8ECIMYkpChMMFp2bbFc893enhBxoYjHW5tBbcqwuI4V7q0zK89H
-BFx1cQqYJJgpp0lZpd34t0NiYfPT4tBVPwIDAQABMA0GCSqGSIb3DQEBBQUAA4GBAFa7AliEZwgs
-3x/be0kz9dNnnfS0ChCzycUs4pJqcXgn8nCDQtM+z6lU9PHYkhaM0QTLS6vJn0WuPIqpsHEzXcjF
-V9+vqDWzf4mH6eglkrh/hXqu1rweN1gqZ8mRzyqBPu3GOd/APhmcGcwTTYJBtYze4D1gCCAPRX5r
-on+jjBXu
------END CERTIFICATE-----
-
Verisign Class 3 Public Primary Certification Authority - G3
============================================================
-----BEGIN CERTIFICATE-----
@@ -273,33 +203,6 @@ RTjDOPP8hS6DRkiy1yBfkjaP53kPmF6Z6PDQpLv1U70qzlmwr25/bLvSHgCwIe34QWKCudiyxLtG
UPMxxY8BqHTr9Xgn2uf3ZkPznoM+IKrDNWCRzg==
-----END CERTIFICATE-----
-Entrust.net Secure Server CA
-============================
------BEGIN CERTIFICATE-----
-MIIE2DCCBEGgAwIBAgIEN0rSQzANBgkqhkiG9w0BAQUFADCBwzELMAkGA1UEBhMCVVMxFDASBgNV
-BAoTC0VudHJ1c3QubmV0MTswOQYDVQQLEzJ3d3cuZW50cnVzdC5uZXQvQ1BTIGluY29ycC4gYnkg
-cmVmLiAobGltaXRzIGxpYWIuKTElMCMGA1UECxMcKGMpIDE5OTkgRW50cnVzdC5uZXQgTGltaXRl
-ZDE6MDgGA1UEAxMxRW50cnVzdC5uZXQgU2VjdXJlIFNlcnZlciBDZXJ0aWZpY2F0aW9uIEF1dGhv
-cml0eTAeFw05OTA1MjUxNjA5NDBaFw0xOTA1MjUxNjM5NDBaMIHDMQswCQYDVQQGEwJVUzEUMBIG
-A1UEChMLRW50cnVzdC5uZXQxOzA5BgNVBAsTMnd3dy5lbnRydXN0Lm5ldC9DUFMgaW5jb3JwLiBi
-eSByZWYuIChsaW1pdHMgbGlhYi4pMSUwIwYDVQQLExwoYykgMTk5OSBFbnRydXN0Lm5ldCBMaW1p
-dGVkMTowOAYDVQQDEzFFbnRydXN0Lm5ldCBTZWN1cmUgU2VydmVyIENlcnRpZmljYXRpb24gQXV0
-aG9yaXR5MIGdMA0GCSqGSIb3DQEBAQUAA4GLADCBhwKBgQDNKIM0VBuJ8w+vN5Ex/68xYMmo6LIQ
-aO2f55M28Qpku0f1BBc/I0dNxScZgSYMVHINiC3ZH5oSn7yzcdOAGT9HZnuMNSjSuQrfJNqc1lB5
-gXpa0zf3wkrYKZImZNHkmGw6AIr1NJtl+O3jEP/9uElY3KDegjlrgbEWGWG5VLbmQwIBA6OCAdcw
-ggHTMBEGCWCGSAGG+EIBAQQEAwIABzCCARkGA1UdHwSCARAwggEMMIHeoIHboIHYpIHVMIHSMQsw
-CQYDVQQGEwJVUzEUMBIGA1UEChMLRW50cnVzdC5uZXQxOzA5BgNVBAsTMnd3dy5lbnRydXN0Lm5l
-dC9DUFMgaW5jb3JwLiBieSByZWYuIChsaW1pdHMgbGlhYi4pMSUwIwYDVQQLExwoYykgMTk5OSBF
-bnRydXN0Lm5ldCBMaW1pdGVkMTowOAYDVQQDEzFFbnRydXN0Lm5ldCBTZWN1cmUgU2VydmVyIENl
-cnRpZmljYXRpb24gQXV0aG9yaXR5MQ0wCwYDVQQDEwRDUkwxMCmgJ6AlhiNodHRwOi8vd3d3LmVu
-dHJ1c3QubmV0L0NSTC9uZXQxLmNybDArBgNVHRAEJDAigA8xOTk5MDUyNTE2MDk0MFqBDzIwMTkw
-NTI1MTYwOTQwWjALBgNVHQ8EBAMCAQYwHwYDVR0jBBgwFoAU8BdiE1U9s/8KAGv7UISX8+1i0Bow
-HQYDVR0OBBYEFPAXYhNVPbP/CgBr+1CEl/PtYtAaMAwGA1UdEwQFMAMBAf8wGQYJKoZIhvZ9B0EA
-BAwwChsEVjQuMAMCBJAwDQYJKoZIhvcNAQEFBQADgYEAkNwwAvpkdMKnCqV8IY00F6j7Rw7/JXyN
-Ewr75Ji174z4xRAN95K+8cPV1ZVqBLssziY2ZcgxxufuP+NXdYR6Ee9GTxj005i7qIcyunL2POI9
-n9cd2cNgQ4xYDiKWL2KjLB+6rQXvqzJ4h6BUcxm1XAX5Uj5tLUUL9wqT6u0G+bI=
------END CERTIFICATE-----
-
Entrust.net Premium 2048 Secure Server CA
=========================================
-----BEGIN CERTIFICATE-----
@@ -953,30 +856,6 @@ nGQI0DvDKcWy7ZAEwbEpkcUwb8GpcjPM/l0WFywRaed+/sWDCN+83CI6LiBpIzlWYGeQiy52OfsR
iJf2fL1LuCAWZwWN4jvBcj+UlTfHXbme2JOhF4//DGYVwSR8MnwDHTuhWEUykw==
-----END CERTIFICATE-----
-TDC Internet Root CA
-====================
------BEGIN CERTIFICATE-----
-MIIEKzCCAxOgAwIBAgIEOsylTDANBgkqhkiG9w0BAQUFADBDMQswCQYDVQQGEwJESzEVMBMGA1UE
-ChMMVERDIEludGVybmV0MR0wGwYDVQQLExRUREMgSW50ZXJuZXQgUm9vdCBDQTAeFw0wMTA0MDUx
-NjMzMTdaFw0yMTA0MDUxNzAzMTdaMEMxCzAJBgNVBAYTAkRLMRUwEwYDVQQKEwxUREMgSW50ZXJu
-ZXQxHTAbBgNVBAsTFFREQyBJbnRlcm5ldCBSb290IENBMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8A
-MIIBCgKCAQEAxLhAvJHVYx/XmaCLDEAedLdInUaMArLgJF/wGROnN4NrXceO+YQwzho7+vvOi20j
-xsNuZp+Jpd/gQlBn+h9sHvTQBda/ytZO5GhgbEaqHF1j4QeGDmUApy6mcca8uYGoOn0a0vnRrEvL
-znWv3Hv6gXPU/Lq9QYjUdLP5Xjg6PEOo0pVOd20TDJ2PeAG3WiAfAzc14izbSysseLlJ28TQx5yc
-5IogCSEWVmb/Bexb4/DPqyQkXsN/cHoSxNK1EKC2IeGNeGlVRGn1ypYcNIUXJXfi9i8nmHj9eQY6
-otZaQ8H/7AQ77hPv01ha/5Lr7K7a8jcDR0G2l8ktCkEiu7vmpwIDAQABo4IBJTCCASEwEQYJYIZI
-AYb4QgEBBAQDAgAHMGUGA1UdHwReMFwwWqBYoFakVDBSMQswCQYDVQQGEwJESzEVMBMGA1UEChMM
-VERDIEludGVybmV0MR0wGwYDVQQLExRUREMgSW50ZXJuZXQgUm9vdCBDQTENMAsGA1UEAxMEQ1JM
-MTArBgNVHRAEJDAigA8yMDAxMDQwNTE2MzMxN1qBDzIwMjEwNDA1MTcwMzE3WjALBgNVHQ8EBAMC
-AQYwHwYDVR0jBBgwFoAUbGQBx/2FbazI2p5QCIUItTxWqFAwHQYDVR0OBBYEFGxkAcf9hW2syNqe
-UAiFCLU8VqhQMAwGA1UdEwQFMAMBAf8wHQYJKoZIhvZ9B0EABBAwDhsIVjUuMDo0LjADAgSQMA0G
-CSqGSIb3DQEBBQUAA4IBAQBOQ8zR3R0QGwZ/t6T609lN+yOfI1Rb5osvBCiLtSdtiaHsmGnc540m
-gwV5dOy0uaOXwTUA/RXaOYE6lTGQ3pfphqiZdwzlWqCE/xIWrG64jcN7ksKsLtB9KOy282A4aW8+
-2ARVPp7MVdK6/rtHBNcK2RYKNCn1WBPVT8+PVkuzHu7TmHnaCB4Mb7j4Fifvwm899qNLPg7kbWzb
-O0ESm70NRyN/PErQr8Cv9u8btRXE64PECV90i9kR+8JWsTz4cMo0jUNAE4z9mQNUecYu6oah9jrU
-Cbz0vGbMPVjQV0kK7iXiQe4T+Zs4NNEA9X7nlB38aQNiuJkFBT1reBK9sG9l
------END CERTIFICATE-----
-
UTN DATACorp SGC Root CA
========================
-----BEGIN CERTIFICATE-----
@@ -1117,64 +996,6 @@ KuZoPL9coAob4Q566eKAw+np9v1sEZ7Q5SgnK1QyQhSCdeZK8CtmdWOMovsEPoMOmzbwGOQmIMOM
8CgHrTwXZoi1/baI
-----END CERTIFICATE-----
-NetLock Business (Class B) Root
-===============================
------BEGIN CERTIFICATE-----
-MIIFSzCCBLSgAwIBAgIBaTANBgkqhkiG9w0BAQQFADCBmTELMAkGA1UEBhMCSFUxETAPBgNVBAcT
-CEJ1ZGFwZXN0MScwJQYDVQQKEx5OZXRMb2NrIEhhbG96YXRiaXp0b25zYWdpIEtmdC4xGjAYBgNV
-BAsTEVRhbnVzaXR2YW55a2lhZG9rMTIwMAYDVQQDEylOZXRMb2NrIFV6bGV0aSAoQ2xhc3MgQikg
-VGFudXNpdHZhbnlraWFkbzAeFw05OTAyMjUxNDEwMjJaFw0xOTAyMjAxNDEwMjJaMIGZMQswCQYD
-VQQGEwJIVTERMA8GA1UEBxMIQnVkYXBlc3QxJzAlBgNVBAoTHk5ldExvY2sgSGFsb3phdGJpenRv
-bnNhZ2kgS2Z0LjEaMBgGA1UECxMRVGFudXNpdHZhbnlraWFkb2sxMjAwBgNVBAMTKU5ldExvY2sg
-VXpsZXRpIChDbGFzcyBCKSBUYW51c2l0dmFueWtpYWRvMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCB
-iQKBgQCx6gTsIKAjwo84YM/HRrPVG/77uZmeBNwcf4xKgZjupNTKihe5In+DCnVMm8Bp2GQ5o+2S
-o/1bXHQawEfKOml2mrriRBf8TKPV/riXiK+IA4kfpPIEPsgHC+b5sy96YhQJRhTKZPWLgLViqNhr
-1nGTLbO/CVRY7QbrqHvcQ7GhaQIDAQABo4ICnzCCApswEgYDVR0TAQH/BAgwBgEB/wIBBDAOBgNV
-HQ8BAf8EBAMCAAYwEQYJYIZIAYb4QgEBBAQDAgAHMIICYAYJYIZIAYb4QgENBIICURaCAk1GSUdZ
-RUxFTSEgRXplbiB0YW51c2l0dmFueSBhIE5ldExvY2sgS2Z0LiBBbHRhbGFub3MgU3pvbGdhbHRh
-dGFzaSBGZWx0ZXRlbGVpYmVuIGxlaXJ0IGVsamFyYXNvayBhbGFwamFuIGtlc3p1bHQuIEEgaGl0
-ZWxlc2l0ZXMgZm9seWFtYXRhdCBhIE5ldExvY2sgS2Z0LiB0ZXJtZWtmZWxlbG9zc2VnLWJpenRv
-c2l0YXNhIHZlZGkuIEEgZGlnaXRhbGlzIGFsYWlyYXMgZWxmb2dhZGFzYW5hayBmZWx0ZXRlbGUg
-YXogZWxvaXJ0IGVsbGVub3J6ZXNpIGVsamFyYXMgbWVndGV0ZWxlLiBBeiBlbGphcmFzIGxlaXJh
-c2EgbWVndGFsYWxoYXRvIGEgTmV0TG9jayBLZnQuIEludGVybmV0IGhvbmxhcGphbiBhIGh0dHBz
-Oi8vd3d3Lm5ldGxvY2submV0L2RvY3MgY2ltZW4gdmFneSBrZXJoZXRvIGF6IGVsbGVub3J6ZXNA
-bmV0bG9jay5uZXQgZS1tYWlsIGNpbWVuLiBJTVBPUlRBTlQhIFRoZSBpc3N1YW5jZSBhbmQgdGhl
-IHVzZSBvZiB0aGlzIGNlcnRpZmljYXRlIGlzIHN1YmplY3QgdG8gdGhlIE5ldExvY2sgQ1BTIGF2
-YWlsYWJsZSBhdCBodHRwczovL3d3dy5uZXRsb2NrLm5ldC9kb2NzIG9yIGJ5IGUtbWFpbCBhdCBj
-cHNAbmV0bG9jay5uZXQuMA0GCSqGSIb3DQEBBAUAA4GBAATbrowXr/gOkDFOzT4JwG06sPgzTEdM
-43WIEJessDgVkcYplswhwG08pXTP2IKlOcNl40JwuyKQ433bNXbhoLXan3BukxowOR0w2y7jfLKR
-stE3Kfq51hdcR0/jHTjrn9V7lagonhVK0dHQKwCXoOKSNitjrFgBazMpUIaD8QFI
------END CERTIFICATE-----
-
-NetLock Express (Class C) Root
-==============================
------BEGIN CERTIFICATE-----
-MIIFTzCCBLigAwIBAgIBaDANBgkqhkiG9w0BAQQFADCBmzELMAkGA1UEBhMCSFUxETAPBgNVBAcT
-CEJ1ZGFwZXN0MScwJQYDVQQKEx5OZXRMb2NrIEhhbG96YXRiaXp0b25zYWdpIEtmdC4xGjAYBgNV
-BAsTEVRhbnVzaXR2YW55a2lhZG9rMTQwMgYDVQQDEytOZXRMb2NrIEV4cHJlc3N6IChDbGFzcyBD
-KSBUYW51c2l0dmFueWtpYWRvMB4XDTk5MDIyNTE0MDgxMVoXDTE5MDIyMDE0MDgxMVowgZsxCzAJ
-BgNVBAYTAkhVMREwDwYDVQQHEwhCdWRhcGVzdDEnMCUGA1UEChMeTmV0TG9jayBIYWxvemF0Yml6
-dG9uc2FnaSBLZnQuMRowGAYDVQQLExFUYW51c2l0dmFueWtpYWRvazE0MDIGA1UEAxMrTmV0TG9j
-ayBFeHByZXNzeiAoQ2xhc3MgQykgVGFudXNpdHZhbnlraWFkbzCBnzANBgkqhkiG9w0BAQEFAAOB
-jQAwgYkCgYEA6+ywbGGKIyWvYCDj2Z/8kwvbXY2wobNAOoLO/XXgeDIDhlqGlZHtU/qdQPzm6N3Z
-W3oDvV3zOwzDUXmbrVWg6dADEK8KuhRC2VImESLH0iDMgqSaqf64gXadarfSNnU+sYYJ9m5tfk63
-euyucYT2BDMIJTLrdKwWRMbkQJMdf60CAwEAAaOCAp8wggKbMBIGA1UdEwEB/wQIMAYBAf8CAQQw
-DgYDVR0PAQH/BAQDAgAGMBEGCWCGSAGG+EIBAQQEAwIABzCCAmAGCWCGSAGG+EIBDQSCAlEWggJN
-RklHWUVMRU0hIEV6ZW4gdGFudXNpdHZhbnkgYSBOZXRMb2NrIEtmdC4gQWx0YWxhbm9zIFN6b2xn
-YWx0YXRhc2kgRmVsdGV0ZWxlaWJlbiBsZWlydCBlbGphcmFzb2sgYWxhcGphbiBrZXN6dWx0LiBB
-IGhpdGVsZXNpdGVzIGZvbHlhbWF0YXQgYSBOZXRMb2NrIEtmdC4gdGVybWVrZmVsZWxvc3NlZy1i
-aXp0b3NpdGFzYSB2ZWRpLiBBIGRpZ2l0YWxpcyBhbGFpcmFzIGVsZm9nYWRhc2FuYWsgZmVsdGV0
-ZWxlIGF6IGVsb2lydCBlbGxlbm9yemVzaSBlbGphcmFzIG1lZ3RldGVsZS4gQXogZWxqYXJhcyBs
-ZWlyYXNhIG1lZ3RhbGFsaGF0byBhIE5ldExvY2sgS2Z0LiBJbnRlcm5ldCBob25sYXBqYW4gYSBo
-dHRwczovL3d3dy5uZXRsb2NrLm5ldC9kb2NzIGNpbWVuIHZhZ3kga2VyaGV0byBheiBlbGxlbm9y
-emVzQG5ldGxvY2submV0IGUtbWFpbCBjaW1lbi4gSU1QT1JUQU5UISBUaGUgaXNzdWFuY2UgYW5k
-IHRoZSB1c2Ugb2YgdGhpcyBjZXJ0aWZpY2F0ZSBpcyBzdWJqZWN0IHRvIHRoZSBOZXRMb2NrIENQ
-UyBhdmFpbGFibGUgYXQgaHR0cHM6Ly93d3cubmV0bG9jay5uZXQvZG9jcyBvciBieSBlLW1haWwg
-YXQgY3BzQG5ldGxvY2submV0LjANBgkqhkiG9w0BAQQFAAOBgQAQrX/XDDKACtiG8XmYta3UzbM2
-xJZIwVzNmtkFLp++UOv0JhQQLdRmF/iewSf98e3ke0ugbLWrmldwpu2gpO0u9f38vf5NNwgMvOOW
-gyL1SRt/Syu0VMGAfJlOHdCM7tCs5ZL6dVb+ZKATj7i4Fp1hBWeAyNDYpQcCNJgEjTME1A==
------END CERTIFICATE-----
-
XRamp Global CA Root
====================
-----BEGIN CERTIFICATE-----
@@ -1318,31 +1139,6 @@ CZBUkQM8R+XVyWXgt0t97EfTsws+rZ7QdAAO671RrcDeLMDDav7v3Aun+kbfYNucpllQdSNpc5Oy
+fwC00fmcc4QAu4njIT/rEUNE1yDMuAlpYYsfPQS
-----END CERTIFICATE-----
-Firmaprofesional Root CA
-========================
------BEGIN CERTIFICATE-----
-MIIEVzCCAz+gAwIBAgIBATANBgkqhkiG9w0BAQUFADCBnTELMAkGA1UEBhMCRVMxIjAgBgNVBAcT
-GUMvIE11bnRhbmVyIDI0NCBCYXJjZWxvbmExQjBABgNVBAMTOUF1dG9yaWRhZCBkZSBDZXJ0aWZp
-Y2FjaW9uIEZpcm1hcHJvZmVzaW9uYWwgQ0lGIEE2MjYzNDA2ODEmMCQGCSqGSIb3DQEJARYXY2FA
-ZmlybWFwcm9mZXNpb25hbC5jb20wHhcNMDExMDI0MjIwMDAwWhcNMTMxMDI0MjIwMDAwWjCBnTEL
-MAkGA1UEBhMCRVMxIjAgBgNVBAcTGUMvIE11bnRhbmVyIDI0NCBCYXJjZWxvbmExQjBABgNVBAMT
-OUF1dG9yaWRhZCBkZSBDZXJ0aWZpY2FjaW9uIEZpcm1hcHJvZmVzaW9uYWwgQ0lGIEE2MjYzNDA2
-ODEmMCQGCSqGSIb3DQEJARYXY2FAZmlybWFwcm9mZXNpb25hbC5jb20wggEiMA0GCSqGSIb3DQEB
-AQUAA4IBDwAwggEKAoIBAQDnIwNvbyOlXnjOlSztlB5uCp4Bx+ow0Syd3Tfom5h5VtP8c9/Qit5V
-j1H5WuretXDE7aTt/6MNbg9kUDGvASdYrv5sp0ovFy3Tc9UTHI9ZpTQsHVQERc1ouKDAA6XPhUJH
-lShbz++AbOCQl4oBPB3zhxAwJkh91/zpnZFx/0GaqUC1N5wpIE8fUuOgfRNtVLcK3ulqTgesrBlf
-3H5idPayBQC6haD9HThuy1q7hryUZzM1gywfI834yJFxzJeL764P3CkDG8A563DtwW4O2GcLiam8
-NeTvtjS0pbbELaW+0MOUJEjb35bTALVmGotmBQ/dPz/LP6pemkr4tErvlTcbAgMBAAGjgZ8wgZww
-KgYDVR0RBCMwIYYfaHR0cDovL3d3dy5maXJtYXByb2Zlc2lvbmFsLmNvbTASBgNVHRMBAf8ECDAG
-AQH/AgEBMCsGA1UdEAQkMCKADzIwMDExMDI0MjIwMDAwWoEPMjAxMzEwMjQyMjAwMDBaMA4GA1Ud
-DwEB/wQEAwIBBjAdBgNVHQ4EFgQUMwugZtHq2s7eYpMEKFK1FH84aLcwDQYJKoZIhvcNAQEFBQAD
-ggEBAEdz/o0nVPD11HecJ3lXV7cVVuzH2Fi3AQL0M+2TUIiefEaxvT8Ub/GzR0iLjJcG1+p+o1wq
-u00vR+L4OQbJnC4xGgN49Lw4xiKLMzHwFgQEffl25EvXwOaD7FnMP97/T2u3Z36mhoEyIwOdyPdf
-wUpgpZKpsaSgYMN4h7Mi8yrrW6ntBas3D7Hi05V2Y1Z0jFhyGzflZKG+TQyTmAyX9odtsz/ny4Cm
-7YjHX1BiAuiZdBbQ5rQ58SfLyEDW44YQqSMSkuBpQWOnryULwMWSyx6Yo1q6xTMPoJcB3X/ge9YG
-VM+h4k0460tQtcsm9MracEpqoeJ5quGnM/b9Sh/22WA=
------END CERTIFICATE-----
-
Swisscom Root CA 1
==================
-----BEGIN CERTIFICATE-----
@@ -1954,40 +1750,6 @@ PBS1xp81HlDQwY9qcEQCYsuuHWhBp6pX6FOqB9IG9tUUBguRA3UsbHK1YZWaDYu5Def131TN3ubY
WyH8EZE0vkHve52Xdf+XlcCWWC/qu0bXu+TZLg==
-----END CERTIFICATE-----
-AC Ra\xC3\xADz Certic\xC3\xA1mara S.A.
-======================================
------BEGIN CERTIFICATE-----
-MIIGZjCCBE6gAwIBAgIPB35Sk3vgFeNX8GmMy+wMMA0GCSqGSIb3DQEBBQUAMHsxCzAJBgNVBAYT
-AkNPMUcwRQYDVQQKDD5Tb2NpZWRhZCBDYW1lcmFsIGRlIENlcnRpZmljYWNpw7NuIERpZ2l0YWwg
-LSBDZXJ0aWPDoW1hcmEgUy5BLjEjMCEGA1UEAwwaQUMgUmHDrXogQ2VydGljw6FtYXJhIFMuQS4w
-HhcNMDYxMTI3MjA0NjI5WhcNMzAwNDAyMjE0MjAyWjB7MQswCQYDVQQGEwJDTzFHMEUGA1UECgw+
-U29jaWVkYWQgQ2FtZXJhbCBkZSBDZXJ0aWZpY2FjacOzbiBEaWdpdGFsIC0gQ2VydGljw6FtYXJh
-IFMuQS4xIzAhBgNVBAMMGkFDIFJhw616IENlcnRpY8OhbWFyYSBTLkEuMIICIjANBgkqhkiG9w0B
-AQEFAAOCAg8AMIICCgKCAgEAq2uJo1PMSCMI+8PPUZYILrgIem08kBeGqentLhM0R7LQcNzJPNCN
-yu5LF6vQhbCnIwTLqKL85XXbQMpiiY9QngE9JlsYhBzLfDe3fezTf3MZsGqy2IiKLUV0qPezuMDU
-2s0iiXRNWhU5cxh0T7XrmafBHoi0wpOQY5fzp6cSsgkiBzPZkc0OnB8OIMfuuzONj8LSWKdf/WU3
-4ojC2I+GdV75LaeHM/J4Ny+LvB2GNzmxlPLYvEqcgxhaBvzz1NS6jBUJJfD5to0EfhcSM2tXSExP
-2yYe68yQ54v5aHxwD6Mq0Do43zeX4lvegGHTgNiRg0JaTASJaBE8rF9ogEHMYELODVoqDA+bMMCm
-8Ibbq0nXl21Ii/kDwFJnmxL3wvIumGVC2daa49AZMQyth9VXAnow6IYm+48jilSH5L887uvDdUhf
-HjlvgWJsxS3EF1QZtzeNnDeRyPYL1epjb4OsOMLzP96a++EjYfDIJss2yKHzMI+ko6Kh3VOz3vCa
-Mh+DkXkwwakfU5tTohVTP92dsxA7SH2JD/ztA/X7JWR1DhcZDY8AFmd5ekD8LVkH2ZD6mq093ICK
-5lw1omdMEWux+IBkAC1vImHFrEsm5VoQgpukg3s0956JkSCXjrdCx2bD0Omk1vUgjcTDlaxECp1b
-czwmPS9KvqfJpxAe+59QafMCAwEAAaOB5jCB4zAPBgNVHRMBAf8EBTADAQH/MA4GA1UdDwEB/wQE
-AwIBBjAdBgNVHQ4EFgQU0QnQ6dfOeXRU+Tows/RtLAMDG2gwgaAGA1UdIASBmDCBlTCBkgYEVR0g
-ADCBiTArBggrBgEFBQcCARYfaHR0cDovL3d3dy5jZXJ0aWNhbWFyYS5jb20vZHBjLzBaBggrBgEF
-BQcCAjBOGkxMaW1pdGFjaW9uZXMgZGUgZ2FyYW507WFzIGRlIGVzdGUgY2VydGlmaWNhZG8gc2Ug
-cHVlZGVuIGVuY29udHJhciBlbiBsYSBEUEMuMA0GCSqGSIb3DQEBBQUAA4ICAQBclLW4RZFNjmEf
-AygPU3zmpFmps4p6xbD/CHwso3EcIRNnoZUSQDWDg4902zNc8El2CoFS3UnUmjIz75uny3XlesuX
-EpBcunvFm9+7OSPI/5jOCk0iAUgHforA1SBClETvv3eiiWdIG0ADBaGJ7M9i4z0ldma/Jre7Ir5v
-/zlXdLp6yQGVwZVR6Kss+LGGIOk/yzVb0hfpKv6DExdA7ohiZVvVO2Dpezy4ydV/NgIlqmjCMRW3
-MGXrfx1IebHPOeJCgBbT9ZMj/EyXyVo3bHwi2ErN0o42gzmRkBDI8ck1fj+404HGIGQatlDCIaR4
-3NAvO2STdPCWkPHv+wlaNECW8DYSwaN0jJN+Qd53i+yG2dIPPy3RzECiiWZIHiCznCNZc6lEc7wk
-eZBWN7PGKX6jD/EpOe9+XCgycDWs2rjIdWb8m0w5R44bb5tNAlQiM+9hup4phO9OSzNHdpdqy35f
-/RWmnkJDW2ZaiogN9xa5P1FlK2Zqi9E4UqLWRhH6/JocdJ6PlwsCT2TG9WjTSy3/pDceiz+/RL5h
-RqGEPQgnTIEgd4kI6mdAXmwIUV80WoyWaM3X94nCHNMyAK9Sy9NgWyo6R35rMDOhYil/SrnhLecU
-Iw4OGEfhefwVVdCx/CVxY3UzHCMrr1zZ7Ud3YA47Dx7SwNxkBYn8eNZcLCZDqQ==
------END CERTIFICATE-----
-
TC TrustCenter Class 2 CA II
============================
-----BEGIN CERTIFICATE-----
@@ -2635,22 +2397,6 @@ MCwXEGCSn1WHElkQwg9naRHMTh5+Spqtr0CodaxWkHS4oJyleW/c6RrIaQXpuvoDs3zk4E7Czp3o
tkYNbn5XOmeUwssfnHdKZ05phkOTOPu220+DkdRgfks+KzgHVZhepA==
-----END CERTIFICATE-----
-Verisign Class 3 Public Primary Certification Authority
-=======================================================
------BEGIN CERTIFICATE-----
-MIICPDCCAaUCEDyRMcsf9tAbDpq40ES/Er4wDQYJKoZIhvcNAQEFBQAwXzELMAkGA1UEBhMCVVMx
-FzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMTcwNQYDVQQLEy5DbGFzcyAzIFB1YmxpYyBQcmltYXJ5
-IENlcnRpZmljYXRpb24gQXV0aG9yaXR5MB4XDTk2MDEyOTAwMDAwMFoXDTI4MDgwMjIzNTk1OVow
-XzELMAkGA1UEBhMCVVMxFzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMTcwNQYDVQQLEy5DbGFzcyAz
-IFB1YmxpYyBQcmltYXJ5IENlcnRpZmljYXRpb24gQXV0aG9yaXR5MIGfMA0GCSqGSIb3DQEBAQUA
-A4GNADCBiQKBgQDJXFme8huKARS0EN8EQNvjV69qRUCPhAwL0TPZ2RHP7gJYHyX3KqhEBarsAx94
-f56TuZoAqiN91qyFomNFx3InzPRMxnVx0jnvT0Lwdd8KkMaOIG+YD/isI19wKTakyYbnsZogy1Ol
-hec9vn2a/iRFM9x2Fe0PonFkTGUugWhFpwIDAQABMA0GCSqGSIb3DQEBBQUAA4GBABByUqkFFBky
-CEHwxWsKzH4PIRnN5GfcX6kb5sroc50i2JhucwNhkcV8sEVAbkSdjbCxlnRhLQ2pRdKkkirWmnWX
-bj9T/UWZYB2oK0z5XqcJ2HUw19JlYD1n1khVdWk/kfVIC0dpImmClr7JyDiGSnoscxlIaU5rfGW/
-D/xwzoiQ
------END CERTIFICATE-----
-
Microsec e-Szigno Root CA 2009
==============================
-----BEGIN CERTIFICATE-----
@@ -3783,3 +3529,458 @@ 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-----
+
+WoSign
+======
+-----BEGIN CERTIFICATE-----
+MIIFdjCCA16gAwIBAgIQXmjWEXGUY1BWAGjzPsnFkTANBgkqhkiG9w0BAQUFADBVMQswCQYDVQQG
+EwJDTjEaMBgGA1UEChMRV29TaWduIENBIExpbWl0ZWQxKjAoBgNVBAMTIUNlcnRpZmljYXRpb24g
+QXV0aG9yaXR5IG9mIFdvU2lnbjAeFw0wOTA4MDgwMTAwMDFaFw0zOTA4MDgwMTAwMDFaMFUxCzAJ
+BgNVBAYTAkNOMRowGAYDVQQKExFXb1NpZ24gQ0EgTGltaXRlZDEqMCgGA1UEAxMhQ2VydGlmaWNh
+dGlvbiBBdXRob3JpdHkgb2YgV29TaWduMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEA
+vcqNrLiRFVaXe2tcesLea9mhsMMQI/qnobLMMfo+2aYpbxY94Gv4uEBf2zmoAHqLoE1UfcIiePyO
+CbiohdfMlZdLdNiefvAA5A6JrkkoRBoQmTIPJYhTpA2zDxIIFgsDcSccf+Hb0v1naMQFXQoOXXDX
+2JegvFNBmpGN9J42Znp+VsGQX+axaCA2pIwkLCxHC1l2ZjC1vt7tj/id07sBMOby8w7gLJKA84X5
+KIq0VC6a7fd2/BVoFutKbOsuEo/Uz/4Mx1wdC34FMr5esAkqQtXJTpCzWQ27en7N1QhatH/YHGkR
++ScPewavVIMYe+HdVHpRaG53/Ma/UkpmRqGyZxq7o093oL5d//xWC0Nyd5DKnvnyOfUNqfTq1+ez
+EC8wQjchzDBwyYaYD8xYTYO7feUapTeNtqwylwA6Y3EkHp43xP901DfA4v6IRmAR3Qg/UDaruHqk
+lWJqbrDKaiFaafPz+x1wOZXzp26mgYmhiMU7ccqjUu6Du/2gd/Tkb+dC221KmYo0SLwX3OSACCK2
+8jHAPwQ+658geda4BmRkAjHXqc1S+4RFaQkAKtxVi8QGRkvASh0JWzko/amrzgD5LkhLJuYwTKVY
+yrREgk/nkR4zw7CT/xH8gdLKH3Ep3XZPkiWvHYG3Dy+MwwbMLyejSuQOmbp8HkUff6oZRZb9/D0C
+AwEAAaNCMEAwDgYDVR0PAQH/BAQDAgEGMA8GA1UdEwEB/wQFMAMBAf8wHQYDVR0OBBYEFOFmzw7R
+8bNLtwYgFP6HEtX2/vs+MA0GCSqGSIb3DQEBBQUAA4ICAQCoy3JAsnbBfnv8rWTjMnvMPLZdRtP1
+LOJwXcgu2AZ9mNELIaCJWSQBnfmvCX0KI4I01fx8cpm5o9dU9OpScA7F9dY74ToJMuYhOZO9sxXq
+T2r09Ys/L3yNWC7F4TmgPsc9SnOeQHrAK2GpZ8nzJLmzbVUsWh2eJXLOC62qx1ViC777Y7NhRCOj
+y+EaDveaBk3e1CNOIZZbOVtXHS9dCF4Jef98l7VNg64N1uajeeAz0JmWAjCnPv/So0M/BVoG6kQC
+2nz4SNAzqfkHx5Xh9T71XXG68pWpdIhhWeO/yloTunK0jF02h+mmxTwTv97QRCbut+wucPrXnbes
+5cVAWubXbHssw1abR80LzvobtCHXt2a49CUwi1wNuepnsvRtrtWhnk/Yn+knArAdBtaP4/tIEp9/
+EaEQPkxROpaw0RPxx9gmrjrKkcRpnd8BKWRRb2jaFOwIQZeQjdCygPLPwj2/kWjFgGcexGATVdVh
+mVd8upUPYUk6ynW8yQqTP2cOEvIo4jEbwFcW3wh8GcF+Dx+FHgo2fFt+J7x6v+Db9NpSvd4MVHAx
+kUOVyLzwPt0JfjBkUO1/AaQzZ01oT74V77D2AhGiGxMlOtzCWfHjXEa7ZywCRuoeSKbmW9m1vFGi
+kpbbqsY3Iqb+zCB0oy2pLmvLwIIRIbWTee5Ehr7XHuQe+w==
+-----END CERTIFICATE-----
+
+WoSign China
+============
+-----BEGIN CERTIFICATE-----
+MIIFWDCCA0CgAwIBAgIQUHBrzdgT/BtOOzNy0hFIjTANBgkqhkiG9w0BAQsFADBGMQswCQYDVQQG
+EwJDTjEaMBgGA1UEChMRV29TaWduIENBIExpbWl0ZWQxGzAZBgNVBAMMEkNBIOayg+mAmuagueiv
+geS5pjAeFw0wOTA4MDgwMTAwMDFaFw0zOTA4MDgwMTAwMDFaMEYxCzAJBgNVBAYTAkNOMRowGAYD
+VQQKExFXb1NpZ24gQ0EgTGltaXRlZDEbMBkGA1UEAwwSQ0Eg5rKD6YCa5qC56K+B5LmmMIICIjAN
+BgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEA0EkhHiX8h8EqwqzbdoYGTufQdDTc7WU1/FDWiD+k
+8H/rD195L4mx/bxjWDeTmzj4t1up+thxx7S8gJeNbEvxUNUqKaqoGXqW5pWOdO2XCld19AXbbQs5
+uQF/qvbW2mzmBeCkTVL829B0txGMe41P/4eDrv8FAxNXUDf+jJZSEExfv5RxadmWPgxDT74wwJ85
+dE8GRV2j1lY5aAfMh09Qd5Nx2UQIsYo06Yms25tO4dnkUkWMLhQfkWsZHWgpLFbE4h4TV2TwYeO5
+Ed+w4VegG63XX9Gv2ystP9Bojg/qnw+LNVgbExz03jWhCl3W6t8Sb8D7aQdGctyB9gQjF+BNdeFy
+b7Ao65vh4YOhn0pdr8yb+gIgthhid5E7o9Vlrdx8kHccREGkSovrlXLp9glk3Kgtn3R46MGiCWOc
+76DbT52VqyBPt7D3h1ymoOQ3OMdc4zUPLK2jgKLsLl3Az+2LBcLmc272idX10kaO6m1jGx6KyX2m
++Jzr5dVjhU1zZmkR/sgO9MHHZklTfuQZa/HpelmjbX7FF+Ynxu8b22/8DU0GAbQOXDBGVWCvOGU6
+yke6rCzMRh+yRpY/8+0mBe53oWprfi1tWFxK1I5nuPHa1UaKJ/kR8slC/k7e3x9cxKSGhxYzoacX
+GKUN5AXlK8IrC6KVkLn9YDxOiT7nnO4fuwECAwEAAaNCMEAwDgYDVR0PAQH/BAQDAgEGMA8GA1Ud
+EwEB/wQFMAMBAf8wHQYDVR0OBBYEFOBNv9ybQV0T6GTwp+kVpOGBwboxMA0GCSqGSIb3DQEBCwUA
+A4ICAQBqinA4WbbaixjIvirTthnVZil6Xc1bL3McJk6jfW+rtylNpumlEYOnOXOvEESS5iVdT2H6
+yAa+Tkvv/vMx/sZ8cApBWNromUuWyXi8mHwCKe0JgOYKOoICKuLJL8hWGSbueBwj/feTZU7n85iY
+r83d2Z5AiDEoOqsuC7CsDCT6eiaY8xJhEPRdF/d+4niXVOKM6Cm6jBAyvd0zaziGfjk9DgNyp115
+j0WKWa5bIW4xRtVZjc8VX90xJc/bYNaBRHIpAlf2ltTW/+op2znFuCyKGo3Oy+dCMYYFaA6eFN0A
+kLppRQjbbpCBhqcqBT/mhDn4t/lXX0ykeVoQDF7Va/81XwVRHmyjdanPUIPTfPRm94KNPQx96N97
+qA4bLJyuQHCH2u2nFoJavjVsIE4iYdm8UXrNemHcSxH5/mc0zy4EZmFcV5cjjPOGG0jfKq+nwf/Y
+jj4Du9gqsPoUJbJRa4ZDhS4HIxaAjUz7tGM7zMN07RujHv41D198HRaG9Q7DlfEvr10lO1Hm13ZB
+ONFLAzkopR6RctR9q5czxNM+4Gm2KHmgCY0c0f9BckgG/Jou5yD5m6Leie2uPAmvylezkolwQOQv
+T8Jwg0DXJCxr5wkf09XHwQj02w47HAcLQxGEIYbpgNR12KvxAmLBsX5VYc8T1yaw15zLKYs4SgsO
+kI26oQ==
+-----END CERTIFICATE-----
+-----BEGIN CERTIFICATE-----
+MIIGCDCCA/CgAwIBAgIQKy5u6tl1NmwUim7bo3yMBzANBgkqhkiG9w0BAQwFADCB
+hTELMAkGA1UEBhMCR0IxGzAZBgNVBAgTEkdyZWF0ZXIgTWFuY2hlc3RlcjEQMA4G
+A1UEBxMHU2FsZm9yZDEaMBgGA1UEChMRQ09NT0RPIENBIExpbWl0ZWQxKzApBgNV
+BAMTIkNPTU9ETyBSU0EgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkwHhcNMTQwMjEy
+MDAwMDAwWhcNMjkwMjExMjM1OTU5WjCBkDELMAkGA1UEBhMCR0IxGzAZBgNVBAgT
+EkdyZWF0ZXIgTWFuY2hlc3RlcjEQMA4GA1UEBxMHU2FsZm9yZDEaMBgGA1UEChMR
+Q09NT0RPIENBIExpbWl0ZWQxNjA0BgNVBAMTLUNPTU9ETyBSU0EgRG9tYWluIFZh
+bGlkYXRpb24gU2VjdXJlIFNlcnZlciBDQTCCASIwDQYJKoZIhvcNAQEBBQADggEP
+ADCCAQoCggEBAI7CAhnhoFmk6zg1jSz9AdDTScBkxwtiBUUWOqigwAwCfx3M28Sh
+bXcDow+G+eMGnD4LgYqbSRutA776S9uMIO3Vzl5ljj4Nr0zCsLdFXlIvNN5IJGS0
+Qa4Al/e+Z96e0HqnU4A7fK31llVvl0cKfIWLIpeNs4TgllfQcBhglo/uLQeTnaG6
+ytHNe+nEKpooIZFNb5JPJaXyejXdJtxGpdCsWTWM/06RQ1A/WZMebFEh7lgUq/51
+UHg+TLAchhP6a5i84DuUHoVS3AOTJBhuyydRReZw3iVDpA3hSqXttn7IzW3uLh0n
+c13cRTCAquOyQQuvvUSH2rnlG51/ruWFgqUCAwEAAaOCAWUwggFhMB8GA1UdIwQY
+MBaAFLuvfgI9+qbxPISOre44mOzZMjLUMB0GA1UdDgQWBBSQr2o6lFoL2JDqElZz
+30O0Oija5zAOBgNVHQ8BAf8EBAMCAYYwEgYDVR0TAQH/BAgwBgEB/wIBADAdBgNV
+HSUEFjAUBggrBgEFBQcDAQYIKwYBBQUHAwIwGwYDVR0gBBQwEjAGBgRVHSAAMAgG
+BmeBDAECATBMBgNVHR8ERTBDMEGgP6A9hjtodHRwOi8vY3JsLmNvbW9kb2NhLmNv
+bS9DT01PRE9SU0FDZXJ0aWZpY2F0aW9uQXV0aG9yaXR5LmNybDBxBggrBgEFBQcB
+AQRlMGMwOwYIKwYBBQUHMAKGL2h0dHA6Ly9jcnQuY29tb2RvY2EuY29tL0NPTU9E
+T1JTQUFkZFRydXN0Q0EuY3J0MCQGCCsGAQUFBzABhhhodHRwOi8vb2NzcC5jb21v
+ZG9jYS5jb20wDQYJKoZIhvcNAQEMBQADggIBAE4rdk+SHGI2ibp3wScF9BzWRJ2p
+mj6q1WZmAT7qSeaiNbz69t2Vjpk1mA42GHWx3d1Qcnyu3HeIzg/3kCDKo2cuH1Z/
+e+FE6kKVxF0NAVBGFfKBiVlsit2M8RKhjTpCipj4SzR7JzsItG8kO3KdY3RYPBps
+P0/HEZrIqPW1N+8QRcZs2eBelSaz662jue5/DJpmNXMyYE7l3YphLG5SEXdoltMY
+dVEVABt0iN3hxzgEQyjpFv3ZBdRdRydg1vs4O2xyopT4Qhrf7W8GjEXCBgCq5Ojc
+2bXhc3js9iPc0d1sjhqPpepUfJa3w/5Vjo1JXvxku88+vZbrac2/4EjxYoIQ5QxG
+V/Iz2tDIY+3GH5QFlkoakdH368+PUq4NCNk+qKBR6cGHdNXJ93SrLlP7u3r7l+L4
+HyaPs9Kg4DdbKDsx5Q5XLVq4rXmsXiBmGqW5prU5wfWYQ//u+aen/e7KJD2AFsQX
+j4rBYKEMrltDR5FL1ZoXX/nUh8HCjLfn4g8wGTeGrODcQgPmlKidrv0PJFGUzpII
+0fxQ8ANAe4hZ7Q7drNJ3gjTcBpUC2JD5Leo31Rpg0Gcg19hCC0Wvgmje3WYkN5Ap
+lBlGGSW4gNfL1IYoakRwJiNiqZ+Gb7+6kHDSVneFeO/qJakXzlByjAA6quPbYzSf
++AZxAeKCINT+b72x
+-----END CERTIFICATE-----
+-----BEGIN CERTIFICATE-----
+MIIFdDCCBFygAwIBAgIQJ2buVutJ846r13Ci/ITeIjANBgkqhkiG9w0BAQwFADBv
+MQswCQYDVQQGEwJTRTEUMBIGA1UEChMLQWRkVHJ1c3QgQUIxJjAkBgNVBAsTHUFk
+ZFRydXN0IEV4dGVybmFsIFRUUCBOZXR3b3JrMSIwIAYDVQQDExlBZGRUcnVzdCBF
+eHRlcm5hbCBDQSBSb290MB4XDTAwMDUzMDEwNDgzOFoXDTIwMDUzMDEwNDgzOFow
+gYUxCzAJBgNVBAYTAkdCMRswGQYDVQQIExJHcmVhdGVyIE1hbmNoZXN0ZXIxEDAO
+BgNVBAcTB1NhbGZvcmQxGjAYBgNVBAoTEUNPTU9ETyBDQSBMaW1pdGVkMSswKQYD
+VQQDEyJDT01PRE8gUlNBIENlcnRpZmljYXRpb24gQXV0aG9yaXR5MIICIjANBgkq
+hkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAkehUktIKVrGsDSTdxc9EZ3SZKzejfSNw
+AHG8U9/E+ioSj0t/EFa9n3Byt2F/yUsPF6c947AEYe7/EZfH9IY+Cvo+XPmT5jR6
+2RRr55yzhaCCenavcZDX7P0N+pxs+t+wgvQUfvm+xKYvT3+Zf7X8Z0NyvQwA1onr
+ayzT7Y+YHBSrfuXjbvzYqOSSJNpDa2K4Vf3qwbxstovzDo2a5JtsaZn4eEgwRdWt
+4Q08RWD8MpZRJ7xnw8outmvqRsfHIKCxH2XeSAi6pE6p8oNGN4Tr6MyBSENnTnIq
+m1y9TBsoilwie7SrmNnu4FGDwwlGTm0+mfqVF9p8M1dBPI1R7Qu2XK8sYxrfV8g/
+vOldxJuvRZnio1oktLqpVj3Pb6r/SVi+8Kj/9Lit6Tf7urj0Czr56ENCHonYhMsT
+8dm74YlguIwoVqwUHZwK53Hrzw7dPamWoUi9PPevtQ0iTMARgexWO/bTouJbt7IE
+IlKVgJNp6I5MZfGRAy1wdALqi2cVKWlSArvX31BqVUa/oKMoYX9w0MOiqiwhqkfO
+KJwGRXa/ghgntNWutMtQ5mv0TIZxMOmm3xaG4Nj/QN370EKIf6MzOi5cHkERgWPO
+GHFrK+ymircxXDpqR+DDeVnWIBqv8mqYqnK8V0rSS527EPywTEHl7R09XiidnMy/
+s1Hap0flhFMCAwEAAaOB9DCB8TAfBgNVHSMEGDAWgBStvZh6NLQm9/rEJlTvA73g
+JMtUGjAdBgNVHQ4EFgQUu69+Aj36pvE8hI6t7jiY7NkyMtQwDgYDVR0PAQH/BAQD
+AgGGMA8GA1UdEwEB/wQFMAMBAf8wEQYDVR0gBAowCDAGBgRVHSAAMEQGA1UdHwQ9
+MDswOaA3oDWGM2h0dHA6Ly9jcmwudXNlcnRydXN0LmNvbS9BZGRUcnVzdEV4dGVy
+bmFsQ0FSb290LmNybDA1BggrBgEFBQcBAQQpMCcwJQYIKwYBBQUHMAGGGWh0dHA6
+Ly9vY3NwLnVzZXJ0cnVzdC5jb20wDQYJKoZIhvcNAQEMBQADggEBAGS/g/FfmoXQ
+zbihKVcN6Fr30ek+8nYEbvFScLsePP9NDXRqzIGCJdPDoCpdTPW6i6FtxFQJdcfj
+Jw5dhHk3QBN39bSsHNA7qxcS1u80GH4r6XnTq1dFDK8o+tDb5VCViLvfhVdpfZLY
+Uspzgb8c8+a4bmYRBbMelC1/kZWSWfFMzqORcUx8Rww7Cxn2obFshj5cqsQugsv5
+B5a6SE2Q8pTIqXOi6wZ7I53eovNNVZ96YUWYGGjHXkBrI/V5eu+MtWuLt29G9Hvx
+PUsE2JOAWVrgQSQdso8VYFhH2+9uRv0V9dlfmrPb2LjkQLPNlzmuhbsdjrzch5vR
+pu/xO28QOG8=
+-----END CERTIFICATE-----
+-----BEGIN CERTIFICATE-----
+MIIENjCCAx6gAwIBAgIBATANBgkqhkiG9w0BAQUFADBvMQswCQYDVQQGEwJTRTEU
+MBIGA1UEChMLQWRkVHJ1c3QgQUIxJjAkBgNVBAsTHUFkZFRydXN0IEV4dGVybmFs
+IFRUUCBOZXR3b3JrMSIwIAYDVQQDExlBZGRUcnVzdCBFeHRlcm5hbCBDQSBSb290
+MB4XDTAwMDUzMDEwNDgzOFoXDTIwMDUzMDEwNDgzOFowbzELMAkGA1UEBhMCU0Ux
+FDASBgNVBAoTC0FkZFRydXN0IEFCMSYwJAYDVQQLEx1BZGRUcnVzdCBFeHRlcm5h
+bCBUVFAgTmV0d29yazEiMCAGA1UEAxMZQWRkVHJ1c3QgRXh0ZXJuYWwgQ0EgUm9v
+dDCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALf3GjPm8gAELTngTlvt
+H7xsD821+iO2zt6bETOXpClMfZOfvUq8k+0DGuOPz+VtUFrWlymUWoCwSXrbLpX9
+uMq/NzgtHj6RQa1wVsfwTz/oMp50ysiQVOnGXw94nZpAPA6sYapeFI+eh6FqUNzX
+mk6vBbOmcZSccbNQYArHE504B4YCqOmoaSYYkKtMsE8jqzpPhNjfzp/haW+710LX
+a0Tkx63ubUFfclpxCDezeWWkWaCUN/cALw3CknLa0Dhy2xSoRcRdKn23tNbE7qzN
+E0S3ySvdQwAl+mG5aWpYIxG3pzOPVnVZ9c0p10a3CitlttNCbxWyuHv77+ldU9U0
+WicCAwEAAaOB3DCB2TAdBgNVHQ4EFgQUrb2YejS0Jvf6xCZU7wO94CTLVBowCwYD
+VR0PBAQDAgEGMA8GA1UdEwEB/wQFMAMBAf8wgZkGA1UdIwSBkTCBjoAUrb2YejS0
+Jvf6xCZU7wO94CTLVBqhc6RxMG8xCzAJBgNVBAYTAlNFMRQwEgYDVQQKEwtBZGRU
+cnVzdCBBQjEmMCQGA1UECxMdQWRkVHJ1c3QgRXh0ZXJuYWwgVFRQIE5ldHdvcmsx
+IjAgBgNVBAMTGUFkZFRydXN0IEV4dGVybmFsIENBIFJvb3SCAQEwDQYJKoZIhvcN
+AQEFBQADggEBALCb4IUlwtYj4g+WBpKdQZic2YR5gdkeWxQHIzZlj7DYd7usQWxH
+YINRsPkyPef89iYTx4AWpb9a/IfPeHmJIZriTAcKhjW88t5RxNKWt9x+Tu5w/Rw5
+6wwCURQtjr0W4MHfRnXnJK3s9EK0hZNwEGe6nQY1ShjTK3rMUUKhemPR5ruhxSvC
+Nr4TDea9Y355e6cJDUCrat2PisP29owaQgVR1EX1n6diIWgVIEM8med8vSTYqZEX
+c4g/VhsxOBi0cQ+azcgOno4uG+GMmIPLHzHxREzGBHNJdmAPx/i9F4BrLunMTA5a
+mnkPIAou1Z5jJh5VkpTYghdae9C8x49OhgQ=
+-----END CERTIFICATE-----
diff --git a/library/certs/README.md b/library/certs/README.md
new file mode 100644
index 000000000..9a2ca7eca
--- /dev/null
+++ b/library/certs/README.md
@@ -0,0 +1 @@
+This directory contains *browser valid* certs for use with redmatrix when using curl (server to server communication). The cacert.pem file in this directory is downloaded (when necessary) from the curl repository and tracks the Mozilla built-in certs. Additionally we've discovered we occasionally require intermediate certs from some cert providers which Mozilla and other browsers obtain automatically but curl does not. You may add these here if required. All these files are concatenated to create the library/cacert.pem file which we will use. \ No newline at end of file
diff --git a/library/certs/cacert.pem b/library/certs/cacert.pem
new file mode 100644
index 000000000..fa9df81f7
--- /dev/null
+++ b/library/certs/cacert.pem
@@ -0,0 +1,3894 @@
+##
+## Bundle of CA Root Certificates
+##
+## Certificate data from Mozilla downloaded on: Wed Sep 3 03:12:03 2014
+##
+## 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:
+## http://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 verison 1.22.
+## SHA1: c4540021427a6fa29e5f50db9f12d48c97d33889
+##
+
+
+GTE CyberTrust Global Root
+==========================
+-----BEGIN CERTIFICATE-----
+MIICWjCCAcMCAgGlMA0GCSqGSIb3DQEBBAUAMHUxCzAJBgNVBAYTAlVTMRgwFgYDVQQKEw9HVEUg
+Q29ycG9yYXRpb24xJzAlBgNVBAsTHkdURSBDeWJlclRydXN0IFNvbHV0aW9ucywgSW5jLjEjMCEG
+A1UEAxMaR1RFIEN5YmVyVHJ1c3QgR2xvYmFsIFJvb3QwHhcNOTgwODEzMDAyOTAwWhcNMTgwODEz
+MjM1OTAwWjB1MQswCQYDVQQGEwJVUzEYMBYGA1UEChMPR1RFIENvcnBvcmF0aW9uMScwJQYDVQQL
+Ex5HVEUgQ3liZXJUcnVzdCBTb2x1dGlvbnMsIEluYy4xIzAhBgNVBAMTGkdURSBDeWJlclRydXN0
+IEdsb2JhbCBSb290MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCVD6C28FCc6HrHiM3dFw4u
+sJTQGz0O9pTAipTHBsiQl8i4ZBp6fmw8U+E3KHNgf7KXUwefU/ltWJTSr41tiGeA5u2ylc9yMcql
+HHK6XALnZELn+aks1joNrI1CqiQBOeacPwGFVw1Yh0X404Wqk2kmhXBIgD8SFcd5tB8FLztimQID
+AQABMA0GCSqGSIb3DQEBBAUAA4GBAG3rGwnpXtlR22ciYaQqPEh346B8pt5zohQDhT37qw4wxYMW
+M4ETCJ57NE7fQMh017l93PR2VX2bY1QY6fDq81yx2YtCHrnAlU66+tXifPVoYb+O7AWXX1uw16OF
+NMQkpw0PlZPvy5TYnh+dXIVtx6quTx8itc2VrbqnzPmrC3p/
+-----END CERTIFICATE-----
+
+Thawte Server CA
+================
+-----BEGIN CERTIFICATE-----
+MIIDEzCCAnygAwIBAgIBATANBgkqhkiG9w0BAQQFADCBxDELMAkGA1UEBhMCWkExFTATBgNVBAgT
+DFdlc3Rlcm4gQ2FwZTESMBAGA1UEBxMJQ2FwZSBUb3duMR0wGwYDVQQKExRUaGF3dGUgQ29uc3Vs
+dGluZyBjYzEoMCYGA1UECxMfQ2VydGlmaWNhdGlvbiBTZXJ2aWNlcyBEaXZpc2lvbjEZMBcGA1UE
+AxMQVGhhd3RlIFNlcnZlciBDQTEmMCQGCSqGSIb3DQEJARYXc2VydmVyLWNlcnRzQHRoYXd0ZS5j
+b20wHhcNOTYwODAxMDAwMDAwWhcNMjAxMjMxMjM1OTU5WjCBxDELMAkGA1UEBhMCWkExFTATBgNV
+BAgTDFdlc3Rlcm4gQ2FwZTESMBAGA1UEBxMJQ2FwZSBUb3duMR0wGwYDVQQKExRUaGF3dGUgQ29u
+c3VsdGluZyBjYzEoMCYGA1UECxMfQ2VydGlmaWNhdGlvbiBTZXJ2aWNlcyBEaXZpc2lvbjEZMBcG
+A1UEAxMQVGhhd3RlIFNlcnZlciBDQTEmMCQGCSqGSIb3DQEJARYXc2VydmVyLWNlcnRzQHRoYXd0
+ZS5jb20wgZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJAoGBANOkUG7I/1Zr5s9dtuoMaHVHoqrC2oQl
+/Kj0R1HahbUgdJSGHg91yekIYfUGbTBuFRkC6VLAYttNmZ7iagxEOM3+vuNkCXDF/rFrKbYvScg7
+1CcEJRCXL+eQbcAoQpnXTEPew/UhbVSfXcNY4cDk2VuwuNy0e982OsK1ZiIS1ocNAgMBAAGjEzAR
+MA8GA1UdEwEB/wQFMAMBAf8wDQYJKoZIhvcNAQEEBQADgYEAB/pMaVz7lcxG7oWDTSEwjsrZqG9J
+GubaUeNgcGyEYRGhGshIPllDfU+VPaGLtwtimHp1it2ITk6eQNuozDJ0uW8NxuOzRAvZim+aKZuZ
+GCg70eNAKJpaPNW15yAbi8qkq43pUdniTCxZqdq5snUb9kLy78fyGPmJvKP/iiMucEc=
+-----END CERTIFICATE-----
+
+Thawte Premium Server CA
+========================
+-----BEGIN CERTIFICATE-----
+MIIDJzCCApCgAwIBAgIBATANBgkqhkiG9w0BAQQFADCBzjELMAkGA1UEBhMCWkExFTATBgNVBAgT
+DFdlc3Rlcm4gQ2FwZTESMBAGA1UEBxMJQ2FwZSBUb3duMR0wGwYDVQQKExRUaGF3dGUgQ29uc3Vs
+dGluZyBjYzEoMCYGA1UECxMfQ2VydGlmaWNhdGlvbiBTZXJ2aWNlcyBEaXZpc2lvbjEhMB8GA1UE
+AxMYVGhhd3RlIFByZW1pdW0gU2VydmVyIENBMSgwJgYJKoZIhvcNAQkBFhlwcmVtaXVtLXNlcnZl
+ckB0aGF3dGUuY29tMB4XDTk2MDgwMTAwMDAwMFoXDTIwMTIzMTIzNTk1OVowgc4xCzAJBgNVBAYT
+AlpBMRUwEwYDVQQIEwxXZXN0ZXJuIENhcGUxEjAQBgNVBAcTCUNhcGUgVG93bjEdMBsGA1UEChMU
+VGhhd3RlIENvbnN1bHRpbmcgY2MxKDAmBgNVBAsTH0NlcnRpZmljYXRpb24gU2VydmljZXMgRGl2
+aXNpb24xITAfBgNVBAMTGFRoYXd0ZSBQcmVtaXVtIFNlcnZlciBDQTEoMCYGCSqGSIb3DQEJARYZ
+cHJlbWl1bS1zZXJ2ZXJAdGhhd3RlLmNvbTCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEA0jY2
+aovXwlue2oFBYo847kkEVdbQ7xwblRZH7xhINTpS9CtqBo87L+pW46+GjZ4X9560ZXUCTe/LCaIh
+Udib0GfQug2SBhRz1JPLlyoAnFxODLz6FVL88kRu2hFKbgifLy3j+ao6hnO2RlNYyIkFvYMRuHM/
+qgeN9EJN50CdHDcCAwEAAaMTMBEwDwYDVR0TAQH/BAUwAwEB/zANBgkqhkiG9w0BAQQFAAOBgQAm
+SCwWwlj66BZ0DKqqX1Q/8tfJeGBeXm43YyJ3Nn6yF8Q0ufUIhfzJATj/Tb7yFkJD57taRvvBxhEf
+8UqwKEbJw8RCfbz6q1lu1bdRiBHjpIUZa4JMpAwSremkrj/xw0llmozFyD4lt5SZu5IycQfwhl7t
+UCemDaYj+bvLpgcUQg==
+-----END CERTIFICATE-----
+
+Equifax Secure CA
+=================
+-----BEGIN CERTIFICATE-----
+MIIDIDCCAomgAwIBAgIENd70zzANBgkqhkiG9w0BAQUFADBOMQswCQYDVQQGEwJVUzEQMA4GA1UE
+ChMHRXF1aWZheDEtMCsGA1UECxMkRXF1aWZheCBTZWN1cmUgQ2VydGlmaWNhdGUgQXV0aG9yaXR5
+MB4XDTk4MDgyMjE2NDE1MVoXDTE4MDgyMjE2NDE1MVowTjELMAkGA1UEBhMCVVMxEDAOBgNVBAoT
+B0VxdWlmYXgxLTArBgNVBAsTJEVxdWlmYXggU2VjdXJlIENlcnRpZmljYXRlIEF1dGhvcml0eTCB
+nzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEAwV2xWGcIYu6gmi0fCG2RFGiYCh7+2gRvE4RiIcPR
+fM6fBeC4AfBONOziipUEZKzxa1NfBbPLZ4C/QgKO/t0BCezhABRP/PvwDN1Dulsr4R+AcJkVV5MW
+8Q+XarfCaCMczE1ZMKxRHjuvK9buY0V7xdlfUNLjUA86iOe/FP3gx7kCAwEAAaOCAQkwggEFMHAG
+A1UdHwRpMGcwZaBjoGGkXzBdMQswCQYDVQQGEwJVUzEQMA4GA1UEChMHRXF1aWZheDEtMCsGA1UE
+CxMkRXF1aWZheCBTZWN1cmUgQ2VydGlmaWNhdGUgQXV0aG9yaXR5MQ0wCwYDVQQDEwRDUkwxMBoG
+A1UdEAQTMBGBDzIwMTgwODIyMTY0MTUxWjALBgNVHQ8EBAMCAQYwHwYDVR0jBBgwFoAUSOZo+SvS
+spXXR9gjIBBPM5iQn9QwHQYDVR0OBBYEFEjmaPkr0rKV10fYIyAQTzOYkJ/UMAwGA1UdEwQFMAMB
+Af8wGgYJKoZIhvZ9B0EABA0wCxsFVjMuMGMDAgbAMA0GCSqGSIb3DQEBBQUAA4GBAFjOKer89961
+zgK5F7WF0bnj4JXMJTENAKaSbn+2kmOeUJXRmm/kEd5jhW6Y7qj/WsjTVbJmcVfewCHrPSqnI0kB
+BIZCe/zuf6IWUrVnZ9NA2zsmWLIodz2uFHdh1voqZiegDfqnc1zqcPGUIWVEX/r87yloqaKHee95
+70+sB3c4
+-----END CERTIFICATE-----
+
+Verisign Class 3 Public Primary Certification Authority - G2
+============================================================
+-----BEGIN CERTIFICATE-----
+MIIDAjCCAmsCEH3Z/gfPqB63EHln+6eJNMYwDQYJKoZIhvcNAQEFBQAwgcExCzAJBgNVBAYTAlVT
+MRcwFQYDVQQKEw5WZXJpU2lnbiwgSW5jLjE8MDoGA1UECxMzQ2xhc3MgMyBQdWJsaWMgUHJpbWFy
+eSBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eSAtIEcyMTowOAYDVQQLEzEoYykgMTk5OCBWZXJpU2ln
+biwgSW5jLiAtIEZvciBhdXRob3JpemVkIHVzZSBvbmx5MR8wHQYDVQQLExZWZXJpU2lnbiBUcnVz
+dCBOZXR3b3JrMB4XDTk4MDUxODAwMDAwMFoXDTI4MDgwMTIzNTk1OVowgcExCzAJBgNVBAYTAlVT
+MRcwFQYDVQQKEw5WZXJpU2lnbiwgSW5jLjE8MDoGA1UECxMzQ2xhc3MgMyBQdWJsaWMgUHJpbWFy
+eSBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eSAtIEcyMTowOAYDVQQLEzEoYykgMTk5OCBWZXJpU2ln
+biwgSW5jLiAtIEZvciBhdXRob3JpemVkIHVzZSBvbmx5MR8wHQYDVQQLExZWZXJpU2lnbiBUcnVz
+dCBOZXR3b3JrMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDMXtERXVxp0KvTuWpMmR9ZmDCO
+FoUgRm1HP9SFIIThbbP4pO0M8RcPO/mn+SXXwc+EY/J8Y8+iR/LGWzOOZEAEaMGAuWQcRXfH2G71
+lSk8UOg013gfqLptQ5GVj0VXXn7F+8qkBOvqlzdUMG+7AUcyM83cV5tkaWH4mx0ciU9cZwIDAQAB
+MA0GCSqGSIb3DQEBBQUAA4GBAFFNzb5cy5gZnBWyATl4Lk0PZ3BwmcYQWpSkU01UbSuvDV1Ai2TT
+1+7eVmGSX6bEHRBhNtMsJzzoKQm5EWR0zLVznxxIqbxhAe7iF6YM40AIOw7n60RzKprxaZLvcRTD
+Oaxxp5EJb+RxBrO6WVcmeQD2+A2iMzAo1KpYoJ2daZH9
+-----END CERTIFICATE-----
+
+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-----
+
+Verisign Class 4 Public Primary Certification Authority - G3
+============================================================
+-----BEGIN CERTIFICATE-----
+MIIEGjCCAwICEQDsoKeLbnVqAc/EfMwvlF7XMA0GCSqGSIb3DQEBBQUAMIHKMQswCQYDVQQGEwJV
+UzEXMBUGA1UEChMOVmVyaVNpZ24sIEluYy4xHzAdBgNVBAsTFlZlcmlTaWduIFRydXN0IE5ldHdv
+cmsxOjA4BgNVBAsTMShjKSAxOTk5IFZlcmlTaWduLCBJbmMuIC0gRm9yIGF1dGhvcml6ZWQgdXNl
+IG9ubHkxRTBDBgNVBAMTPFZlcmlTaWduIENsYXNzIDQgUHVibGljIFByaW1hcnkgQ2VydGlmaWNh
+dGlvbiBBdXRob3JpdHkgLSBHMzAeFw05OTEwMDEwMDAwMDBaFw0zNjA3MTYyMzU5NTlaMIHKMQsw
+CQYDVQQGEwJVUzEXMBUGA1UEChMOVmVyaVNpZ24sIEluYy4xHzAdBgNVBAsTFlZlcmlTaWduIFRy
+dXN0IE5ldHdvcmsxOjA4BgNVBAsTMShjKSAxOTk5IFZlcmlTaWduLCBJbmMuIC0gRm9yIGF1dGhv
+cml6ZWQgdXNlIG9ubHkxRTBDBgNVBAMTPFZlcmlTaWduIENsYXNzIDQgUHVibGljIFByaW1hcnkg
+Q2VydGlmaWNhdGlvbiBBdXRob3JpdHkgLSBHMzCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoC
+ggEBAK3LpRFpxlmr8Y+1GQ9Wzsy1HyDkniYlS+BzZYlZ3tCD5PUPtbut8XzoIfzk6AzufEUiGXaS
+tBO3IFsJ+mGuqPKljYXCKtbeZjbSmwL0qJJgfJxptI8kHtCGUvYynEFYHiK9zUVilQhu0GbdU6LM
+8BDcVHOLBKFGMzNcF0C5nk3T875Vg+ixiY5afJqWIpA7iCXy0lOIAgwLePLmNxdLMEYH5IBtptiW
+Lugs+BGzOA1mppvqySNb247i8xOOGlktqgLw7KSHZtzBP/XYufTsgsbSPZUd5cBPhMnZo0QoBmrX
+Razwa2rvTl/4EYIeOGM0ZlDUPpNz+jDDZq3/ky2X7wMCAwEAATANBgkqhkiG9w0BAQUFAAOCAQEA
+j/ola09b5KROJ1WrIhVZPMq1CtRK26vdoV9TxaBXOcLORyu+OshWv8LZJxA6sQU8wHcxuzrTBXtt
+mhwwjIDLk5Mqg6sFUYICABFna/OIYUdfA5PVWw3g8dShMjWFsjrbsIKr0csKvE+MW8VLADsfKoKm
+fjaF3H48ZwC15DtS4KjrXRX5xm3wrR0OhbepmnMUWluPQSjA1egtTaRezarZ7c7c2NU8Qh0XwRJd
+RTjDOPP8hS6DRkiy1yBfkjaP53kPmF6Z6PDQpLv1U70qzlmwr25/bLvSHgCwIe34QWKCudiyxLtG
+UPMxxY8BqHTr9Xgn2uf3ZkPznoM+IKrDNWCRzg==
+-----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-----
+
+Equifax Secure Global eBusiness CA
+==================================
+-----BEGIN CERTIFICATE-----
+MIICkDCCAfmgAwIBAgIBATANBgkqhkiG9w0BAQQFADBaMQswCQYDVQQGEwJVUzEcMBoGA1UEChMT
+RXF1aWZheCBTZWN1cmUgSW5jLjEtMCsGA1UEAxMkRXF1aWZheCBTZWN1cmUgR2xvYmFsIGVCdXNp
+bmVzcyBDQS0xMB4XDTk5MDYyMTA0MDAwMFoXDTIwMDYyMTA0MDAwMFowWjELMAkGA1UEBhMCVVMx
+HDAaBgNVBAoTE0VxdWlmYXggU2VjdXJlIEluYy4xLTArBgNVBAMTJEVxdWlmYXggU2VjdXJlIEds
+b2JhbCBlQnVzaW5lc3MgQ0EtMTCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEAuucXkAJlsTRV
+PEnCUdXfp9E3j9HngXNBUmCbnaEXJnitx7HoJpQytd4zjTov2/KaelpzmKNc6fuKcxtc58O/gGzN
+qfTWK8D3+ZmqY6KxRwIP1ORROhI8bIpaVIRw28HFkM9yRcuoWcDNM50/o5brhTMhHD4ePmBudpxn
+hcXIw2ECAwEAAaNmMGQwEQYJYIZIAYb4QgEBBAQDAgAHMA8GA1UdEwEB/wQFMAMBAf8wHwYDVR0j
+BBgwFoAUvqigdHJQa0S3ySPY+6j/s1draGwwHQYDVR0OBBYEFL6ooHRyUGtEt8kj2Puo/7NXa2hs
+MA0GCSqGSIb3DQEBBAUAA4GBADDiAVGqx+pf2rnQZQ8w1j7aDRRJbpGTJxQx78T3LUX47Me/okEN
+I7SS+RkAZ70Br83gcfxaz2TE4JaY0KNA4gGK7ycH8WUBikQtBmV1UsCGECAhX2xrD2yuCRyv8qIY
+NMR1pHMc8Y3c7635s3a0kr/clRAevsvIO1qEYBlWlKlV
+-----END CERTIFICATE-----
+
+Equifax Secure eBusiness CA 1
+=============================
+-----BEGIN CERTIFICATE-----
+MIICgjCCAeugAwIBAgIBBDANBgkqhkiG9w0BAQQFADBTMQswCQYDVQQGEwJVUzEcMBoGA1UEChMT
+RXF1aWZheCBTZWN1cmUgSW5jLjEmMCQGA1UEAxMdRXF1aWZheCBTZWN1cmUgZUJ1c2luZXNzIENB
+LTEwHhcNOTkwNjIxMDQwMDAwWhcNMjAwNjIxMDQwMDAwWjBTMQswCQYDVQQGEwJVUzEcMBoGA1UE
+ChMTRXF1aWZheCBTZWN1cmUgSW5jLjEmMCQGA1UEAxMdRXF1aWZheCBTZWN1cmUgZUJ1c2luZXNz
+IENBLTEwgZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJAoGBAM4vGbwXt3fek6lfWg0XTzQaDJj0ItlZ
+1MRoRvC0NcWFAyDGr0WlIVFFQesWWDYyb+JQYmT5/VGcqiTZ9J2DKocKIdMSODRsjQBuWqDZQu4a
+IZX5UkxVWsUPOE9G+m34LjXWHXzr4vCwdYDIqROsvojvOm6rXyo4YgKwEnv+j6YDAgMBAAGjZjBk
+MBEGCWCGSAGG+EIBAQQEAwIABzAPBgNVHRMBAf8EBTADAQH/MB8GA1UdIwQYMBaAFEp4MlIR21kW
+Nl7fwRQ2QGpHfEyhMB0GA1UdDgQWBBRKeDJSEdtZFjZe38EUNkBqR3xMoTANBgkqhkiG9w0BAQQF
+AAOBgQB1W6ibAxHm6VZMzfmpTMANmvPMZWnmJXbMWbfWVMMdzZmsGd20hdXgPfxiIKeES1hl8eL5
+lSE/9dR+WB5Hh1Q+WKG1tfgq73HnvMP2sUlG4tega+VWeponmHxGYhTnyfxuAxJ5gDgdSIKN/Bf+
+KpYrtWKmpj29f5JZzVoqgrI3eQ==
+-----END CERTIFICATE-----
+
+AddTrust Low-Value Services Root
+================================
+-----BEGIN CERTIFICATE-----
+MIIEGDCCAwCgAwIBAgIBATANBgkqhkiG9w0BAQUFADBlMQswCQYDVQQGEwJTRTEUMBIGA1UEChML
+QWRkVHJ1c3QgQUIxHTAbBgNVBAsTFEFkZFRydXN0IFRUUCBOZXR3b3JrMSEwHwYDVQQDExhBZGRU
+cnVzdCBDbGFzcyAxIENBIFJvb3QwHhcNMDAwNTMwMTAzODMxWhcNMjAwNTMwMTAzODMxWjBlMQsw
+CQYDVQQGEwJTRTEUMBIGA1UEChMLQWRkVHJ1c3QgQUIxHTAbBgNVBAsTFEFkZFRydXN0IFRUUCBO
+ZXR3b3JrMSEwHwYDVQQDExhBZGRUcnVzdCBDbGFzcyAxIENBIFJvb3QwggEiMA0GCSqGSIb3DQEB
+AQUAA4IBDwAwggEKAoIBAQCWltQhSWDia+hBBwzexODcEyPNwTXH+9ZOEQpnXvUGW2ulCDtbKRY6
+54eyNAbFvAWlA3yCyykQruGIgb3WntP+LVbBFc7jJp0VLhD7Bo8wBN6ntGO0/7Gcrjyvd7ZWxbWr
+oulpOj0OM3kyP3CCkplhbY0wCI9xP6ZIVxn4JdxLZlyldI+Yrsj5wAYi56xz36Uu+1LcsRVlIPo1
+Zmne3yzxbrww2ywkEtvrNTVokMsAsJchPXQhI2U0K7t4WaPW4XY5mqRJjox0r26kmqPZm9I4XJui
+GMx1I4S+6+JNM3GOGvDC+Mcdoq0Dlyz4zyXG9rgkMbFjXZJ/Y/AlyVMuH79NAgMBAAGjgdIwgc8w
+HQYDVR0OBBYEFJWxtPCUtr3H2tERCSG+wa9J/RB7MAsGA1UdDwQEAwIBBjAPBgNVHRMBAf8EBTAD
+AQH/MIGPBgNVHSMEgYcwgYSAFJWxtPCUtr3H2tERCSG+wa9J/RB7oWmkZzBlMQswCQYDVQQGEwJT
+RTEUMBIGA1UEChMLQWRkVHJ1c3QgQUIxHTAbBgNVBAsTFEFkZFRydXN0IFRUUCBOZXR3b3JrMSEw
+HwYDVQQDExhBZGRUcnVzdCBDbGFzcyAxIENBIFJvb3SCAQEwDQYJKoZIhvcNAQEFBQADggEBACxt
+ZBsfzQ3duQH6lmM0MkhHma6X7f1yFqZzR1r0693p9db7RcwpiURdv0Y5PejuvE1Uhh4dbOMXJ0Ph
+iVYrqW9yTkkz43J8KiOavD7/KCrto/8cI7pDVwlnTUtiBi34/2ydYB7YHEt9tTEv2dB8Xfjea4MY
+eDdXL+gzB2ffHsdrKpV2ro9Xo/D0UrSpUwjP4E/TelOL/bscVjby/rK25Xa71SJlpz/+0WatC7xr
+mYbvP33zGDLKe8bjq2RGlfgmadlVg3sslgf/WSxEo8bl6ancoWOAWiFeIc9TVPC6b4nbqKqVz4vj
+ccweGyBECMB6tkD9xOQ14R0WHNC8K47Wcdk=
+-----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-----
+
+AddTrust Public Services Root
+=============================
+-----BEGIN CERTIFICATE-----
+MIIEFTCCAv2gAwIBAgIBATANBgkqhkiG9w0BAQUFADBkMQswCQYDVQQGEwJTRTEUMBIGA1UEChML
+QWRkVHJ1c3QgQUIxHTAbBgNVBAsTFEFkZFRydXN0IFRUUCBOZXR3b3JrMSAwHgYDVQQDExdBZGRU
+cnVzdCBQdWJsaWMgQ0EgUm9vdDAeFw0wMDA1MzAxMDQxNTBaFw0yMDA1MzAxMDQxNTBaMGQxCzAJ
+BgNVBAYTAlNFMRQwEgYDVQQKEwtBZGRUcnVzdCBBQjEdMBsGA1UECxMUQWRkVHJ1c3QgVFRQIE5l
+dHdvcmsxIDAeBgNVBAMTF0FkZFRydXN0IFB1YmxpYyBDQSBSb290MIIBIjANBgkqhkiG9w0BAQEF
+AAOCAQ8AMIIBCgKCAQEA6Rowj4OIFMEg2Dybjxt+A3S72mnTRqX4jsIMEZBRpS9mVEBV6tsfSlbu
+nyNu9DnLoblv8n75XYcmYZ4c+OLspoH4IcUkzBEMP9smcnrHAZcHF/nXGCwwfQ56HmIexkvA/X1i
+d9NEHif2P0tEs7c42TkfYNVRknMDtABp4/MUTu7R3AnPdzRGULD4EfL+OHn3Bzn+UZKXC1sIXzSG
+Aa2Il+tmzV7R/9x98oTaunet3IAIx6eH1lWfl2royBFkuucZKT8Rs3iQhCBSWxHveNCD9tVIkNAw
+HM+A+WD+eeSI8t0A65RF62WUaUC6wNW0uLp9BBGo6zEFlpROWCGOn9Bg/QIDAQABo4HRMIHOMB0G
+A1UdDgQWBBSBPjfYkrAfd59ctKtzquf2NGAv+jALBgNVHQ8EBAMCAQYwDwYDVR0TAQH/BAUwAwEB
+/zCBjgYDVR0jBIGGMIGDgBSBPjfYkrAfd59ctKtzquf2NGAv+qFopGYwZDELMAkGA1UEBhMCU0Ux
+FDASBgNVBAoTC0FkZFRydXN0IEFCMR0wGwYDVQQLExRBZGRUcnVzdCBUVFAgTmV0d29yazEgMB4G
+A1UEAxMXQWRkVHJ1c3QgUHVibGljIENBIFJvb3SCAQEwDQYJKoZIhvcNAQEFBQADggEBAAP3FUr4
+JNojVhaTdt02KLmuG7jD8WS6IBh4lSknVwW8fCr0uVFV2ocC3g8WFzH4qnkuCRO7r7IgGRLlk/lL
++YPoRNWyQSW/iHVv/xD8SlTQX/D67zZzfRs2RcYhbbQVuE7PnFylPVoAjgbjPGsye/Kf8Lb93/Ao
+GEjwxrzQvzSAlsJKsW2Ox5BF3i9nrEUEo3rcVZLJR2bYGozH7ZxOmuASu7VqTITh4SINhwBk/ox9
+Yjllpu9CtoAlEmEBqCQTcAARJl/6NVDFSMwGR+gn2HCNX2TmoUQmXiLsks3/QppEIW1cxeMiHV9H
+EufOX1362KqxMy3ZdvJOOjMMK7MtkAY=
+-----END CERTIFICATE-----
+
+AddTrust Qualified Certificates Root
+====================================
+-----BEGIN CERTIFICATE-----
+MIIEHjCCAwagAwIBAgIBATANBgkqhkiG9w0BAQUFADBnMQswCQYDVQQGEwJTRTEUMBIGA1UEChML
+QWRkVHJ1c3QgQUIxHTAbBgNVBAsTFEFkZFRydXN0IFRUUCBOZXR3b3JrMSMwIQYDVQQDExpBZGRU
+cnVzdCBRdWFsaWZpZWQgQ0EgUm9vdDAeFw0wMDA1MzAxMDQ0NTBaFw0yMDA1MzAxMDQ0NTBaMGcx
+CzAJBgNVBAYTAlNFMRQwEgYDVQQKEwtBZGRUcnVzdCBBQjEdMBsGA1UECxMUQWRkVHJ1c3QgVFRQ
+IE5ldHdvcmsxIzAhBgNVBAMTGkFkZFRydXN0IFF1YWxpZmllZCBDQSBSb290MIIBIjANBgkqhkiG
+9w0BAQEFAAOCAQ8AMIIBCgKCAQEA5B6a/twJWoekn0e+EV+vhDTbYjx5eLfpMLXsDBwqxBb/4Oxx
+64r1EW7tTw2R0hIYLUkVAcKkIhPHEWT/IhKauY5cLwjPcWqzZwFZ8V1G87B4pfYOQnrjfxvM0PC3
+KP0q6p6zsLkEqv32x7SxuCqg+1jxGaBvcCV+PmlKfw8i2O+tCBGaKZnhqkRFmhJePp1tUvznoD1o
+L/BLcHwTOK28FSXx1s6rosAx1i+f4P8UWfyEk9mHfExUE+uf0S0R+Bg6Ot4l2ffTQO2kBhLEO+GR
+wVY18BTcZTYJbqukB8c10cIDMzZbdSZtQvESa0NvS3GU+jQd7RNuyoB/mC9suWXY6QIDAQABo4HU
+MIHRMB0GA1UdDgQWBBQ5lYtii1zJ1IC6WA+XPxUIQ8yYpzALBgNVHQ8EBAMCAQYwDwYDVR0TAQH/
+BAUwAwEB/zCBkQYDVR0jBIGJMIGGgBQ5lYtii1zJ1IC6WA+XPxUIQ8yYp6FrpGkwZzELMAkGA1UE
+BhMCU0UxFDASBgNVBAoTC0FkZFRydXN0IEFCMR0wGwYDVQQLExRBZGRUcnVzdCBUVFAgTmV0d29y
+azEjMCEGA1UEAxMaQWRkVHJ1c3QgUXVhbGlmaWVkIENBIFJvb3SCAQEwDQYJKoZIhvcNAQEFBQAD
+ggEBABmrder4i2VhlRO6aQTvhsoToMeqT2QbPxj2qC0sVY8FtzDqQmodwCVRLae/DLPt7wh/bDxG
+GuoYQ992zPlmhpwsaPXpF/gxsxjE1kh9I0xowX67ARRvxdlu3rsEQmr49lx95dr6h+sNNVJn0J6X
+dgWTP5XHAeZpVTh/EGGZyeNfpso+gmNIquIISD6q8rKFYqa0p9m9N5xotS1WfbC3P6CxB9bpT9ze
+RXEwMn8bLgn5v1Kh7sKAPgZcLlVAwRv1cEWw3F369nJad9Jjzc9YiQBCYz95OdBEsIJuQRno3eDB
+iFrRHnGTHyQwdOUeqN48Jzd/g66ed8/wMLH/S5noxqE=
+-----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-----
+
+RSA Security 2048 v3
+====================
+-----BEGIN CERTIFICATE-----
+MIIDYTCCAkmgAwIBAgIQCgEBAQAAAnwAAAAKAAAAAjANBgkqhkiG9w0BAQUFADA6MRkwFwYDVQQK
+ExBSU0EgU2VjdXJpdHkgSW5jMR0wGwYDVQQLExRSU0EgU2VjdXJpdHkgMjA0OCBWMzAeFw0wMTAy
+MjIyMDM5MjNaFw0yNjAyMjIyMDM5MjNaMDoxGTAXBgNVBAoTEFJTQSBTZWN1cml0eSBJbmMxHTAb
+BgNVBAsTFFJTQSBTZWN1cml0eSAyMDQ4IFYzMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKC
+AQEAt49VcdKA3XtpeafwGFAyPGJn9gqVB93mG/Oe2dJBVGutn3y+Gc37RqtBaB4Y6lXIL5F4iSj7
+Jylg/9+PjDvJSZu1pJTOAeo+tWN7fyb9Gd3AIb2E0S1PRsNO3Ng3OTsor8udGuorryGlwSMiuLgb
+WhOHV4PR8CDn6E8jQrAApX2J6elhc5SYcSa8LWrg903w8bYqODGBDSnhAMFRD0xS+ARaqn1y07iH
+KrtjEAMqs6FPDVpeRrc9DvV07Jmf+T0kgYim3WBU6JU2PcYJk5qjEoAAVZkZR73QpXzDuvsf9/UP
++Ky5tfQ3mBMY3oVbtwyCO4dvlTlYMNpuAWgXIszACwIDAQABo2MwYTAPBgNVHRMBAf8EBTADAQH/
+MA4GA1UdDwEB/wQEAwIBBjAfBgNVHSMEGDAWgBQHw1EwpKrpRa41JPr/JCwz0LGdjDAdBgNVHQ4E
+FgQUB8NRMKSq6UWuNST6/yQsM9CxnYwwDQYJKoZIhvcNAQEFBQADggEBAF8+hnZuuDU8TjYcHnmY
+v/3VEhF5Ug7uMYm83X/50cYVIeiKAVQNOvtUudZj1LGqlk2iQk3UUx+LEN5/Zb5gEydxiKRz44Rj
+0aRV4VCT5hsOedBnvEbIvz8XDZXmxpBp3ue0L96VfdASPz0+f00/FGj1EVDVwfSQpQgdMWD/YIwj
+VAqv/qFuxdF6Kmh4zx6CCiC0H63lhbJqaHVOrSU3lIW+vaHU6rcMSzyd6BIA8F+sDeGscGNz9395
+nzIlQnQFgCi/vcEkllgVsRch6YlL2weIZ/QVrXA+L02FO8K32/6YaCOJ4XQP3vTFhGMpG8zLB8kA
+pKnXwiJPZ9d37CAFYd4=
+-----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 Global CA 2
+====================
+-----BEGIN CERTIFICATE-----
+MIIDZjCCAk6gAwIBAgIBATANBgkqhkiG9w0BAQUFADBEMQswCQYDVQQGEwJVUzEWMBQGA1UEChMN
+R2VvVHJ1c3QgSW5jLjEdMBsGA1UEAxMUR2VvVHJ1c3QgR2xvYmFsIENBIDIwHhcNMDQwMzA0MDUw
+MDAwWhcNMTkwMzA0MDUwMDAwWjBEMQswCQYDVQQGEwJVUzEWMBQGA1UEChMNR2VvVHJ1c3QgSW5j
+LjEdMBsGA1UEAxMUR2VvVHJ1c3QgR2xvYmFsIENBIDIwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAw
+ggEKAoIBAQDvPE1APRDfO1MA4Wf+lGAVPoWI8YkNkMgoI5kF6CsgncbzYEbYwbLVjDHZ3CB5JIG/
+NTL8Y2nbsSpr7iFY8gjpeMtvy/wWUsiRxP89c96xPqfCfWbB9X5SJBri1WeR0IIQ13hLTytCOb1k
+LUCgsBDTOEhGiKEMuzozKmKY+wCdE1l/bztyqu6mD4b5BWHqZ38MN5aL5mkWRxHCJ1kDs6ZgwiFA
+Vvqgx306E+PsV8ez1q6diYD3Aecs9pYrEw15LNnA5IZ7S4wMcoKK+xfNAGw6EzywhIdLFnopsk/b
+HdQL82Y3vdj2V7teJHq4PIu5+pIaGoSe2HSPqht/XvT+RSIhAgMBAAGjYzBhMA8GA1UdEwEB/wQF
+MAMBAf8wHQYDVR0OBBYEFHE4NvICMVNHK266ZUapEBVYIAUJMB8GA1UdIwQYMBaAFHE4NvICMVNH
+K266ZUapEBVYIAUJMA4GA1UdDwEB/wQEAwIBhjANBgkqhkiG9w0BAQUFAAOCAQEAA/e1K6tdEPx7
+srJerJsOflN4WT5CBP51o62sgU7XAotexC3IUnbHLB/8gTKY0UvGkpMzNTEv/NgdRN3ggX+d6Yvh
+ZJFiCzkIjKx0nVnZellSlxG5FntvRdOW2TF9AjYPnDtuzywNA0ZF66D0f0hExghAzN4bcLUprbqL
+OzRldRtxIR0sFAqwlpW41uryZfspuk/qkZN0abby/+Ea0AzRdoXLiiW9l14sbxWZJue2Kf8i7MkC
+x1YAzUm5s2x7UwQa4qjJqhIFI8LO57sEAszAR6LkxCkvW0VXiVHuPOtSCP8HNR6fNWpHSlaY0VqF
+H4z1Ir+rzoPz4iIprn2DQKi6bA==
+-----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-----
+
+America Online Root Certification Authority 1
+=============================================
+-----BEGIN CERTIFICATE-----
+MIIDpDCCAoygAwIBAgIBATANBgkqhkiG9w0BAQUFADBjMQswCQYDVQQGEwJVUzEcMBoGA1UEChMT
+QW1lcmljYSBPbmxpbmUgSW5jLjE2MDQGA1UEAxMtQW1lcmljYSBPbmxpbmUgUm9vdCBDZXJ0aWZp
+Y2F0aW9uIEF1dGhvcml0eSAxMB4XDTAyMDUyODA2MDAwMFoXDTM3MTExOTIwNDMwMFowYzELMAkG
+A1UEBhMCVVMxHDAaBgNVBAoTE0FtZXJpY2EgT25saW5lIEluYy4xNjA0BgNVBAMTLUFtZXJpY2Eg
+T25saW5lIFJvb3QgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkgMTCCASIwDQYJKoZIhvcNAQEBBQAD
+ggEPADCCAQoCggEBAKgv6KRpBgNHw+kqmP8ZonCaxlCyfqXfaE0bfA+2l2h9LaaLl+lkhsmj76CG
+v2BlnEtUiMJIxUo5vxTjWVXlGbR0yLQFOVwWpeKVBeASrlmLojNoWBym1BW32J/X3HGrfpq/m44z
+DyL9Hy7nBzbvYjnF3cu6JRQj3gzGPTzOggjmZj7aUTsWOqMFf6Dch9Wc/HKpoH145LcxVR5lu9Rh
+sCFg7RAycsWSJR74kEoYeEfffjA3PlAb2xzTa5qGUwew76wGePiEmf4hjUyAtgyC9mZweRrTT6PP
+8c9GsEsPPt2IYriMqQkoO3rHl+Ee5fSfwMCuJKDIodkP1nsmgmkyPacCAwEAAaNjMGEwDwYDVR0T
+AQH/BAUwAwEB/zAdBgNVHQ4EFgQUAK3Zo/Z59m50qX8zPYEX10zPM94wHwYDVR0jBBgwFoAUAK3Z
+o/Z59m50qX8zPYEX10zPM94wDgYDVR0PAQH/BAQDAgGGMA0GCSqGSIb3DQEBBQUAA4IBAQB8itEf
+GDeC4Liwo+1WlchiYZwFos3CYiZhzRAW18y0ZTTQEYqtqKkFZu90821fnZmv9ov761KyBZiibyrF
+VL0lvV+uyIbqRizBs73B6UlwGBaXCBOMIOAbLjpHyx7kADCVW/RFo8AasAFOq73AI25jP4BKxQft
+3OJvx8Fi8eNy1gTIdGcL+oiroQHIb/AUr9KZzVGTfu0uOMe9zkZQPXLjeSWdm4grECDdpbgyn43g
+Kd8hdIaC2y+CMMbHNYaz+ZZfRtsMRf3zUMNvxsNIrUam4SdHCh0Om7bCd39j8uB9Gr784N/Xx6ds
+sPmuujz9dLQR6FgNgLzTqIA6me11zEZ7
+-----END CERTIFICATE-----
+
+America Online Root Certification Authority 2
+=============================================
+-----BEGIN CERTIFICATE-----
+MIIFpDCCA4ygAwIBAgIBATANBgkqhkiG9w0BAQUFADBjMQswCQYDVQQGEwJVUzEcMBoGA1UEChMT
+QW1lcmljYSBPbmxpbmUgSW5jLjE2MDQGA1UEAxMtQW1lcmljYSBPbmxpbmUgUm9vdCBDZXJ0aWZp
+Y2F0aW9uIEF1dGhvcml0eSAyMB4XDTAyMDUyODA2MDAwMFoXDTM3MDkyOTE0MDgwMFowYzELMAkG
+A1UEBhMCVVMxHDAaBgNVBAoTE0FtZXJpY2EgT25saW5lIEluYy4xNjA0BgNVBAMTLUFtZXJpY2Eg
+T25saW5lIFJvb3QgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkgMjCCAiIwDQYJKoZIhvcNAQEBBQAD
+ggIPADCCAgoCggIBAMxBRR3pPU0Q9oyxQcngXssNt79Hc9PwVU3dxgz6sWYFas14tNwC206B89en
+fHG8dWOgXeMHDEjsJcQDIPT/DjsS/5uN4cbVG7RtIuOx238hZK+GvFciKtZHgVdEglZTvYYUAQv8
+f3SkWq7xuhG1m1hagLQ3eAkzfDJHA1zEpYNI9FdWboE2JxhP7JsowtS013wMPgwr38oE18aO6lhO
+qKSlGBxsRZijQdEt0sdtjRnxrXm3gT+9BoInLRBYBbV4Bbkv2wxrkJB+FFk4u5QkE+XRnRTf04JN
+RvCAOVIyD+OEsnpD8l7eXz8d3eOyG6ChKiMDbi4BFYdcpnV1x5dhvt6G3NRI270qv0pV2uh9UPu0
+gBe4lL8BPeraunzgWGcXuVjgiIZGZ2ydEEdYMtA1fHkqkKJaEBEjNa0vzORKW6fIJ/KD3l67Xnfn
+6KVuY8INXWHQjNJsWiEOyiijzirplcdIz5ZvHZIlyMbGwcEMBawmxNJ10uEqZ8A9W6Wa6897Gqid
+FEXlD6CaZd4vKL3Ob5Rmg0gp2OpljK+T2WSfVVcmv2/LNzGZo2C7HK2JNDJiuEMhBnIMoVxtRsX6
+Kc8w3onccVvdtjc+31D1uAclJuW8tf48ArO3+L5DwYcRlJ4jbBeKuIonDFRH8KmzwICMoCfrHRnj
+B453cMor9H124HhnAgMBAAGjYzBhMA8GA1UdEwEB/wQFMAMBAf8wHQYDVR0OBBYEFE1FwWg4u3Op
+aaEg5+31IqEjFNeeMB8GA1UdIwQYMBaAFE1FwWg4u3OpaaEg5+31IqEjFNeeMA4GA1UdDwEB/wQE
+AwIBhjANBgkqhkiG9w0BAQUFAAOCAgEAZ2sGuV9FOypLM7PmG2tZTiLMubekJcmnxPBUlgtk87FY
+T15R/LKXeydlwuXK5w0MJXti4/qftIe3RUavg6WXSIylvfEWK5t2LHo1YGwRgJfMqZJS5ivmae2p
++DYtLHe/YUjRYwu5W1LtGLBDQiKmsXeu3mnFzcccobGlHBD7GL4acN3Bkku+KVqdPzW+5X1R+FXg
+JXUjhx5c3LqdsKyzadsXg8n33gy8CNyRnqjQ1xU3c6U1uPx+xURABsPr+CKAXEfOAuMRn0T//Zoy
+zH1kUQ7rVyZ2OuMeIjzCpjbdGe+n/BLzJsBZMYVMnNjP36TMzCmT/5RtdlwTCJfy7aULTd3oyWgO
+ZtMADjMSW7yV5TKQqLPGbIOtd+6Lfn6xqavT4fG2wLHqiMDn05DpKJKUe2h7lyoKZy2FAjgQ5ANh
+1NolNscIWC2hp1GvMApJ9aZphwctREZ2jirlmjvXGKL8nDgQzMY70rUXOm/9riW99XJZZLF0Kjhf
+GEzfz3EEWjbUvy+ZnOjZurGV5gJLIaFb1cFPj65pbVPbAZO1XB4Y3WRayhgoPmMEEf0cjQAPuDff
+Z4qdZqkCapH/E8ovXYO8h5Ns3CRRFgQlZvqz2cK6Kb6aSDiCmfS/O0oxGfm/jiEzFMpPVF/7zvuP
+cX/9XhmgD0uRuMRUvAawRY8mkaKO/qk=
+-----END CERTIFICATE-----
+
+Visa eCommerce Root
+===================
+-----BEGIN CERTIFICATE-----
+MIIDojCCAoqgAwIBAgIQE4Y1TR0/BvLB+WUF1ZAcYjANBgkqhkiG9w0BAQUFADBrMQswCQYDVQQG
+EwJVUzENMAsGA1UEChMEVklTQTEvMC0GA1UECxMmVmlzYSBJbnRlcm5hdGlvbmFsIFNlcnZpY2Ug
+QXNzb2NpYXRpb24xHDAaBgNVBAMTE1Zpc2EgZUNvbW1lcmNlIFJvb3QwHhcNMDIwNjI2MDIxODM2
+WhcNMjIwNjI0MDAxNjEyWjBrMQswCQYDVQQGEwJVUzENMAsGA1UEChMEVklTQTEvMC0GA1UECxMm
+VmlzYSBJbnRlcm5hdGlvbmFsIFNlcnZpY2UgQXNzb2NpYXRpb24xHDAaBgNVBAMTE1Zpc2EgZUNv
+bW1lcmNlIFJvb3QwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCvV95WHm6h2mCxlCfL
+F9sHP4CFT8icttD0b0/Pmdjh28JIXDqsOTPHH2qLJj0rNfVIsZHBAk4ElpF7sDPwsRROEW+1QK8b
+RaVK7362rPKgH1g/EkZgPI2h4H3PVz4zHvtH8aoVlwdVZqW1LS7YgFmypw23RuwhY/81q6UCzyr0
+TP579ZRdhE2o8mCP2w4lPJ9zcc+U30rq299yOIzzlr3xF7zSujtFWsan9sYXiwGd/BmoKoMWuDpI
+/k4+oKsGGelT84ATB+0tvz8KPFUgOSwsAGl0lUq8ILKpeeUYiZGo3BxN77t+Nwtd/jmliFKMAGzs
+GHxBvfaLdXe6YJ2E5/4tAgMBAAGjQjBAMA8GA1UdEwEB/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgEG
+MB0GA1UdDgQWBBQVOIMPPyw/cDMezUb+B4wg4NfDtzANBgkqhkiG9w0BAQUFAAOCAQEAX/FBfXxc
+CLkr4NWSR/pnXKUTwwMhmytMiUbPWU3J/qVAtmPN3XEolWcRzCSs00Rsca4BIGsDoo8Ytyk6feUW
+YFN4PMCvFYP3j1IzJL1kk5fui/fbGKhtcbP3LBfQdCVp9/5rPJS+TUtBjE7ic9DjkCJzQ83z7+pz
+zkWKsKZJ/0x9nXGIxHYdkFsd7v3M9+79YKWxehZx0RbQfBI8bGmX265fOZpwLwU8GUYEmSA20GBu
+YQa7FkKMcPcw++DbZqMAAb3mLNqRX6BGi01qnD093QVG/na/oAo85ADmJ7f/hC3euiInlhBx6yLt
+398znM/jra6O1I7mT1GvFpLgXPYHDw==
+-----END CERTIFICATE-----
+
+Certum Root CA
+==============
+-----BEGIN CERTIFICATE-----
+MIIDDDCCAfSgAwIBAgIDAQAgMA0GCSqGSIb3DQEBBQUAMD4xCzAJBgNVBAYTAlBMMRswGQYDVQQK
+ExJVbml6ZXRvIFNwLiB6IG8uby4xEjAQBgNVBAMTCUNlcnR1bSBDQTAeFw0wMjA2MTExMDQ2Mzla
+Fw0yNzA2MTExMDQ2MzlaMD4xCzAJBgNVBAYTAlBMMRswGQYDVQQKExJVbml6ZXRvIFNwLiB6IG8u
+by4xEjAQBgNVBAMTCUNlcnR1bSBDQTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAM6x
+wS7TT3zNJc4YPk/EjG+AanPIW1H4m9LcuwBcsaD8dQPugfCI7iNS6eYVM42sLQnFdvkrOYCJ5JdL
+kKWoePhzQ3ukYbDYWMzhbGZ+nPMJXlVjhNWo7/OxLjBos8Q82KxujZlakE403Daaj4GIULdtlkIJ
+89eVgw1BS7Bqa/j8D35in2fE7SZfECYPCE/wpFcozo+47UX2bu4lXapuOb7kky/ZR6By6/qmW6/K
+Uz/iDsaWVhFu9+lmqSbYf5VT7QqFiLpPKaVCjF62/IUgAKpoC6EahQGcxEZjgoi2IrHu/qpGWX7P
+NSzVttpd90gzFFS269lvzs2I1qsb2pY7HVkCAwEAAaMTMBEwDwYDVR0TAQH/BAUwAwEB/zANBgkq
+hkiG9w0BAQUFAAOCAQEAuI3O7+cUus/usESSbLQ5PqKEbq24IXfS1HeCh+YgQYHu4vgRt2PRFze+
+GXYkHAQaTOs9qmdvLdTN/mUxcMUbpgIKumB7bVjCmkn+YzILa+M6wKyrO7Do0wlRjBCDxjTgxSvg
+GrZgFCdsMneMvLJymM/NzD+5yCRCFNZX/OYmQ6kd5YCQzgNUKD73P9P4Te1qCjqTE5s7FCMTY5w/
+0YcneeVMUeMBrYVdGjux1XMQpNPyvG5k9VpWkKjHDkx0Dy5xO/fIR/RpbxXyEV6DHpx8Uq79AtoS
+qFlnGNu8cN2bsWntgM6JQEhqDjXKKWYVIZQs6GAqm4VKQPNriiTsBhYscw==
+-----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-----
+
+Comodo Secure Services root
+===========================
+-----BEGIN CERTIFICATE-----
+MIIEPzCCAyegAwIBAgIBATANBgkqhkiG9w0BAQUFADB+MQswCQYDVQQGEwJHQjEbMBkGA1UECAwS
+R3JlYXRlciBNYW5jaGVzdGVyMRAwDgYDVQQHDAdTYWxmb3JkMRowGAYDVQQKDBFDb21vZG8gQ0Eg
+TGltaXRlZDEkMCIGA1UEAwwbU2VjdXJlIENlcnRpZmljYXRlIFNlcnZpY2VzMB4XDTA0MDEwMTAw
+MDAwMFoXDTI4MTIzMTIzNTk1OVowfjELMAkGA1UEBhMCR0IxGzAZBgNVBAgMEkdyZWF0ZXIgTWFu
+Y2hlc3RlcjEQMA4GA1UEBwwHU2FsZm9yZDEaMBgGA1UECgwRQ29tb2RvIENBIExpbWl0ZWQxJDAi
+BgNVBAMMG1NlY3VyZSBDZXJ0aWZpY2F0ZSBTZXJ2aWNlczCCASIwDQYJKoZIhvcNAQEBBQADggEP
+ADCCAQoCggEBAMBxM4KK0HDrc4eCQNUd5MvJDkKQ+d40uaG6EfQlhfPMcm3ye5drswfxdySRXyWP
+9nQ95IDC+DwN879A6vfIUtFyb+/Iq0G4bi4XKpVpDM3SHpR7LZQdqnXXs5jLrLxkU0C8j6ysNstc
+rbvd4JQX7NFc0L/vpZXJkMWwrPsbQ996CF23uPJAGysnnlDOXmWCiIxe004MeuoIkbY2qitC++rC
+oznl2yY4rYsK7hljxxwk3wN42ubqwUcaCwtGCd0C/N7Lh1/XMGNooa7cMqG6vv5Eq2i2pRcV/b3V
+p6ea5EQz6YiO/O1R65NxTq0B50SOqy3LqP4BSUjwwN3HaNiS/j0CAwEAAaOBxzCBxDAdBgNVHQ4E
+FgQUPNiTiMLAggnMAZkGkyDpnnAJY08wDgYDVR0PAQH/BAQDAgEGMA8GA1UdEwEB/wQFMAMBAf8w
+gYEGA1UdHwR6MHgwO6A5oDeGNWh0dHA6Ly9jcmwuY29tb2RvY2EuY29tL1NlY3VyZUNlcnRpZmlj
+YXRlU2VydmljZXMuY3JsMDmgN6A1hjNodHRwOi8vY3JsLmNvbW9kby5uZXQvU2VjdXJlQ2VydGlm
+aWNhdGVTZXJ2aWNlcy5jcmwwDQYJKoZIhvcNAQEFBQADggEBAIcBbSMdflsXfcFhMs+P5/OKlFlm
+4J4oqF7Tt/Q05qo5spcWxYJvMqTpjOev/e/C6LlLqqP05tqNZSH7uoDrJiiFGv45jN5bBAS0VPmj
+Z55B+glSzAVIqMk/IQQezkhr/IXownuvf7fM+F86/TXGDe+X3EyrEeFryzHRbPtIgKvcnDe4IRRL
+DXE97IMzbtFuMhbsmMcWi1mmNKsFVy2T96oTy9IT4rcuO81rUBcJaD61JlfutuC23bkpgHl9j6Pw
+pCikFcSF9CfUa7/lXORlAnZUtOM3ZiTTGWHIUhDlizeauan5Hb/qmZJhlv8BzaFfDbxxvA6sCx1H
+RR3B7Hzs/Sk=
+-----END CERTIFICATE-----
+
+Comodo Trusted Services root
+============================
+-----BEGIN CERTIFICATE-----
+MIIEQzCCAyugAwIBAgIBATANBgkqhkiG9w0BAQUFADB/MQswCQYDVQQGEwJHQjEbMBkGA1UECAwS
+R3JlYXRlciBNYW5jaGVzdGVyMRAwDgYDVQQHDAdTYWxmb3JkMRowGAYDVQQKDBFDb21vZG8gQ0Eg
+TGltaXRlZDElMCMGA1UEAwwcVHJ1c3RlZCBDZXJ0aWZpY2F0ZSBTZXJ2aWNlczAeFw0wNDAxMDEw
+MDAwMDBaFw0yODEyMzEyMzU5NTlaMH8xCzAJBgNVBAYTAkdCMRswGQYDVQQIDBJHcmVhdGVyIE1h
+bmNoZXN0ZXIxEDAOBgNVBAcMB1NhbGZvcmQxGjAYBgNVBAoMEUNvbW9kbyBDQSBMaW1pdGVkMSUw
+IwYDVQQDDBxUcnVzdGVkIENlcnRpZmljYXRlIFNlcnZpY2VzMIIBIjANBgkqhkiG9w0BAQEFAAOC
+AQ8AMIIBCgKCAQEA33FvNlhTWvI2VFeAxHQIIO0Yfyod5jWaHiWsnOWWfnJSoBVC21ndZHoa0Lh7
+3TkVvFVIxO06AOoxEbrycXQaZ7jPM8yoMa+j49d/vzMtTGo87IvDktJTdyR0nAducPy9C1t2ul/y
+/9c3S0pgePfw+spwtOpZqqPOSC+pw7ILfhdyFgymBwwbOM/JYrc/oJOlh0Hyt3BAd9i+FHzjqMB6
+juljatEPmsbS9Is6FARW1O24zG71++IsWL1/T2sr92AkWCTOJu80kTrV44HQsvAEAtdbtz6SrGsS
+ivnkBbA7kUlcsutT6vifR4buv5XAwAaf0lteERv0xwQ1KdJVXOTt6wIDAQABo4HJMIHGMB0GA1Ud
+DgQWBBTFe1i97doladL3WRaoszLAeydb9DAOBgNVHQ8BAf8EBAMCAQYwDwYDVR0TAQH/BAUwAwEB
+/zCBgwYDVR0fBHwwejA8oDqgOIY2aHR0cDovL2NybC5jb21vZG9jYS5jb20vVHJ1c3RlZENlcnRp
+ZmljYXRlU2VydmljZXMuY3JsMDqgOKA2hjRodHRwOi8vY3JsLmNvbW9kby5uZXQvVHJ1c3RlZENl
+cnRpZmljYXRlU2VydmljZXMuY3JsMA0GCSqGSIb3DQEBBQUAA4IBAQDIk4E7ibSvuIQSTI3S8Ntw
+uleGFTQQuS9/HrCoiWChisJ3DFBKmwCL2Iv0QeLQg4pKHBQGsKNoBXAxMKdTmw7pSqBYaWcOrp32
+pSxBvzwGa+RZzG0Q8ZZvH9/0BAKkn0U+yNj6NkZEUD+Cl5EfKNsYEYwq5GWDVxISjBc/lDb+XbDA
+BHcTuPQV1T84zJQ6VdCsmPW6AF/ghhmBeC8owH7TzEIK9a5QoNE+xqFx7D+gIIxmOom0jtTYsU0l
+R+4viMi14QVFwL4Ucd56/Y57fU0IlqUSc/AtyjcndBInTMu2l+nZrghtWjlA3QVHdWpaIbOjGM9O
+9y5Xt5hwXsjEeLBi
+-----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-----
+MIIFtzCCA5+gAwIBAgICBQkwDQYJKoZIhvcNAQEFBQAwRTELMAkGA1UEBhMCQk0xGTAXBgNVBAoT
+EFF1b1ZhZGlzIExpbWl0ZWQxGzAZBgNVBAMTElF1b1ZhZGlzIFJvb3QgQ0EgMjAeFw0wNjExMjQx
+ODI3MDBaFw0zMTExMjQxODIzMzNaMEUxCzAJBgNVBAYTAkJNMRkwFwYDVQQKExBRdW9WYWRpcyBM
+aW1pdGVkMRswGQYDVQQDExJRdW9WYWRpcyBSb290IENBIDIwggIiMA0GCSqGSIb3DQEBAQUAA4IC
+DwAwggIKAoICAQCaGMpLlA0ALa8DKYrwD4HIrkwZhR0In6spRIXzL4GtMh6QRr+jhiYaHv5+HBg6
+XJxgFyo6dIMzMH1hVBHL7avg5tKifvVrbxi3Cgst/ek+7wrGsxDp3MJGF/hd/aTa/55JWpzmM+Yk
+lvc/ulsrHHo1wtZn/qtmUIttKGAr79dgw8eTvI02kfN/+NsRE8Scd3bBrrcCaoF6qUWD4gXmuVbB
+lDePSHFjIuwXZQeVikvfj8ZaCuWw419eaxGrDPmF60Tp+ARz8un+XJiM9XOva7R+zdRcAitMOeGy
+lZUtQofX1bOQQ7dsE/He3fbE+Ik/0XX1ksOR1YqI0JDs3G3eicJlcZaLDQP9nL9bFqyS2+r+eXyt
+66/3FsvbzSUr5R/7mp/iUcw6UwxI5g69ybR2BlLmEROFcmMDBOAENisgGQLodKcftslWZvB1Jdxn
+wQ5hYIizPtGo/KPaHbDRsSNU30R2be1B2MGyIrZTHN81Hdyhdyox5C315eXbyOD/5YDXC2Og/zOh
+D7osFRXql7PSorW+8oyWHhqPHWykYTe5hnMz15eWniN9gqRMgeKh0bpnX5UHoycR7hYQe7xFSkyy
+BNKr79X9DFHOUGoIMfmR2gyPZFwDwzqLID9ujWc9Otb+fVuIyV77zGHcizN300QyNQliBJIWENie
+J0f7OyHj+OsdWwIDAQABo4GwMIGtMA8GA1UdEwEB/wQFMAMBAf8wCwYDVR0PBAQDAgEGMB0GA1Ud
+DgQWBBQahGK8SEwzJQTU7tD2A8QZRtGUazBuBgNVHSMEZzBlgBQahGK8SEwzJQTU7tD2A8QZRtGU
+a6FJpEcwRTELMAkGA1UEBhMCQk0xGTAXBgNVBAoTEFF1b1ZhZGlzIExpbWl0ZWQxGzAZBgNVBAMT
+ElF1b1ZhZGlzIFJvb3QgQ0EgMoICBQkwDQYJKoZIhvcNAQEFBQADggIBAD4KFk2fBluornFdLwUv
+Z+YTRYPENvbzwCYMDbVHZF34tHLJRqUDGCdViXh9duqWNIAXINzng/iN/Ae42l9NLmeyhP3ZRPx3
+UIHmfLTJDQtyU/h2BwdBR5YM++CCJpNVjP4iH2BlfF/nJrP3MpCYUNQ3cVX2kiF495V5+vgtJodm
+VjB3pjd4M1IQWK4/YY7yarHvGH5KWWPKjaJW1acvvFYfzznB4vsKqBUsfU16Y8Zsl0Q80m/DShcK
++JDSV6IZUaUtl0HaB0+pUNqQjZRG4T7wlP0QADj1O+hA4bRuVhogzG9Yje0uRY/W6ZM/57Es3zrW
+IozchLsib9D45MY56QSIPMO661V6bYCZJPVsAfv4l7CUW+v90m/xd2gNNWQjrLhVoQPRTUIZ3Ph1
+WVaj+ahJefivDrkRoHy3au000LYmYjgahwz46P0u05B/B5EqHdZ+XIWDmbA4CD/pXvk1B+TJYm5X
+f6dQlfe6yJvmjqIBxdZmv3lh8zwc4bmCXF2gw+nYSL0ZohEUGW6yhhtoPkg3Goi3XZZenMfvJ2II
+4pEZXNLxId26F0KCl3GBUzGpn/Z9Yr9y4aOTHcyKJloJONDO1w2AFrR4pTqHTI2KpdVGl/IsELm8
+VCLAAVBpQ570su9t+Oza8eOx79+Rj1QqCyXBJhnEUhAFZdWCEOrCMc0u
+-----END CERTIFICATE-----
+
+QuoVadis Root CA 3
+==================
+-----BEGIN CERTIFICATE-----
+MIIGnTCCBIWgAwIBAgICBcYwDQYJKoZIhvcNAQEFBQAwRTELMAkGA1UEBhMCQk0xGTAXBgNVBAoT
+EFF1b1ZhZGlzIExpbWl0ZWQxGzAZBgNVBAMTElF1b1ZhZGlzIFJvb3QgQ0EgMzAeFw0wNjExMjQx
+OTExMjNaFw0zMTExMjQxOTA2NDRaMEUxCzAJBgNVBAYTAkJNMRkwFwYDVQQKExBRdW9WYWRpcyBM
+aW1pdGVkMRswGQYDVQQDExJRdW9WYWRpcyBSb290IENBIDMwggIiMA0GCSqGSIb3DQEBAQUAA4IC
+DwAwggIKAoICAQDMV0IWVJzmmNPTTe7+7cefQzlKZbPoFog02w1ZkXTPkrgEQK0CSzGrvI2RaNgg
+DhoB4hp7Thdd4oq3P5kazethq8Jlph+3t723j/z9cI8LoGe+AaJZz3HmDyl2/7FWeUUrH556VOij
+KTVopAFPD6QuN+8bv+OPEKhyq1hX51SGyMnzW9os2l2ObjyjPtr7guXd8lyyBTNvijbO0BNO/79K
+DDRMpsMhvVAEVeuxu537RR5kFd5VAYwCdrXLoT9CabwvvWhDFlaJKjdhkf2mrk7AyxRllDdLkgbv
+BNDInIjbC3uBr7E9KsRlOni27tyAsdLTmZw67mtaa7ONt9XOnMK+pUsvFrGeaDsGb659n/je7Mwp
+p5ijJUMv7/FfJuGITfhebtfZFG4ZM2mnO4SJk8RTVROhUXhA+LjJou57ulJCg54U7QVSWllWp5f8
+nT8KKdjcT5EOE7zelaTfi5m+rJsziO+1ga8bxiJTyPbH7pcUsMV8eFLI8M5ud2CEpukqdiDtWAEX
+MJPpGovgc2PZapKUSU60rUqFxKMiMPwJ7Wgic6aIDFUhWMXhOp8q3crhkODZc6tsgLjoC2SToJyM
+Gf+z0gzskSaHirOi4XCPLArlzW1oUevaPwV/izLmE1xr/l9A4iLItLRkT9a6fUg+qGkM17uGcclz
+uD87nSVL2v9A6wIDAQABo4IBlTCCAZEwDwYDVR0TAQH/BAUwAwEB/zCB4QYDVR0gBIHZMIHWMIHT
+BgkrBgEEAb5YAAMwgcUwgZMGCCsGAQUFBwICMIGGGoGDQW55IHVzZSBvZiB0aGlzIENlcnRpZmlj
+YXRlIGNvbnN0aXR1dGVzIGFjY2VwdGFuY2Ugb2YgdGhlIFF1b1ZhZGlzIFJvb3QgQ0EgMyBDZXJ0
+aWZpY2F0ZSBQb2xpY3kgLyBDZXJ0aWZpY2F0aW9uIFByYWN0aWNlIFN0YXRlbWVudC4wLQYIKwYB
+BQUHAgEWIWh0dHA6Ly93d3cucXVvdmFkaXNnbG9iYWwuY29tL2NwczALBgNVHQ8EBAMCAQYwHQYD
+VR0OBBYEFPLAE+CCQz777i9nMpY1XNu4ywLQMG4GA1UdIwRnMGWAFPLAE+CCQz777i9nMpY1XNu4
+ywLQoUmkRzBFMQswCQYDVQQGEwJCTTEZMBcGA1UEChMQUXVvVmFkaXMgTGltaXRlZDEbMBkGA1UE
+AxMSUXVvVmFkaXMgUm9vdCBDQSAzggIFxjANBgkqhkiG9w0BAQUFAAOCAgEAT62gLEz6wPJv92ZV
+qyM07ucp2sNbtrCD2dDQ4iH782CnO11gUyeim/YIIirnv6By5ZwkajGxkHon24QRiSemd1o417+s
+hvzuXYO8BsbRd2sPbSQvS3pspweWyuOEn62Iix2rFo1bZhfZFvSLgNLd+LJ2w/w4E6oM3kJpK27z
+POuAJ9v1pkQNn1pVWQvVDVJIxa6f8i+AxeoyUDUSly7B4f/xI4hROJ/yZlZ25w9Rl6VSDE1JUZU2
+Pb+iSwwQHYaZTKrzchGT5Or2m9qoXadNt54CrnMAyNojA+j56hl0YgCUyyIgvpSnWbWCar6ZeXqp
+8kokUvd0/bpO5qgdAm6xDYBEwa7TIzdfu4V8K5Iu6H6li92Z4b8nby1dqnuH/grdS/yO9SbkbnBC
+bjPsMZ57k8HkyWkaPcBrTiJt7qtYTcbQQcEr6k8Sh17rRdhs9ZgC06DYVYoGmRmioHfRMJ6szHXu
+g/WwYjnPbFfiTNKRCw51KBuav/0aQ/HKd/s7j2G4aSgWQgRecCocIdiP4b0jWy10QJLZYxkNc91p
+vGJHvOB0K7Lrfb5BG7XARsWhIstfTsEokt4YutUqKLsRixeTmJlglFwjz1onl14LBQaTNx47aTbr
+qZ5hHY8y2o4M1nQ+ewkk2gF3R8Q7zTSMmfXK4SVhM7JZG+Ju1zdXtg2pEto=
+-----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-----
+
+Staat der Nederlanden Root CA
+=============================
+-----BEGIN CERTIFICATE-----
+MIIDujCCAqKgAwIBAgIEAJiWijANBgkqhkiG9w0BAQUFADBVMQswCQYDVQQGEwJOTDEeMBwGA1UE
+ChMVU3RhYXQgZGVyIE5lZGVybGFuZGVuMSYwJAYDVQQDEx1TdGFhdCBkZXIgTmVkZXJsYW5kZW4g
+Um9vdCBDQTAeFw0wMjEyMTcwOTIzNDlaFw0xNTEyMTYwOTE1MzhaMFUxCzAJBgNVBAYTAk5MMR4w
+HAYDVQQKExVTdGFhdCBkZXIgTmVkZXJsYW5kZW4xJjAkBgNVBAMTHVN0YWF0IGRlciBOZWRlcmxh
+bmRlbiBSb290IENBMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAmNK1URF6gaYUmHFt
+vsznExvWJw56s2oYHLZhWtVhCb/ekBPHZ+7d89rFDBKeNVU+LCeIQGv33N0iYfXCxw719tV2U02P
+jLwYdjeFnejKScfST5gTCaI+Ioicf9byEGW07l8Y1Rfj+MX94p2i71MOhXeiD+EwR+4A5zN9RGca
+C1Hoi6CeUJhoNFIfLm0B8mBF8jHrqTFoKbt6QZ7GGX+UtFE5A3+y3qcym7RHjm+0Sq7lr7HcsBth
+vJly3uSJt3omXdozSVtSnA71iq3DuD3oBmrC1SoLbHuEvVYFy4ZlkuxEK7COudxwC0barbxjiDn6
+22r+I/q85Ej0ZytqERAhSQIDAQABo4GRMIGOMAwGA1UdEwQFMAMBAf8wTwYDVR0gBEgwRjBEBgRV
+HSAAMDwwOgYIKwYBBQUHAgEWLmh0dHA6Ly93d3cucGtpb3ZlcmhlaWQubmwvcG9saWNpZXMvcm9v
+dC1wb2xpY3kwDgYDVR0PAQH/BAQDAgEGMB0GA1UdDgQWBBSofeu8Y6R0E3QA7Jbg0zTBLL9s+DAN
+BgkqhkiG9w0BAQUFAAOCAQEABYSHVXQ2YcG70dTGFagTtJ+k/rvuFbQvBgwp8qiSpGEN/KtcCFtR
+EytNwiphyPgJWPwtArI5fZlmgb9uXJVFIGzmeafR2Bwp/MIgJ1HI8XxdNGdphREwxgDS1/PTfLbw
+MVcoEoJz6TMvplW0C5GUR5z6u3pCMuiufi3IvKwUv9kP2Vv8wfl6leF9fpb8cbDCTMjfRTTJzg3y
+nGQI0DvDKcWy7ZAEwbEpkcUwb8GpcjPM/l0WFywRaed+/sWDCN+83CI6LiBpIzlWYGeQiy52OfsR
+iJf2fL1LuCAWZwWN4jvBcj+UlTfHXbme2JOhF4//DGYVwSR8MnwDHTuhWEUykw==
+-----END CERTIFICATE-----
+
+UTN DATACorp SGC Root CA
+========================
+-----BEGIN CERTIFICATE-----
+MIIEXjCCA0agAwIBAgIQRL4Mi1AAIbQR0ypoBqmtaTANBgkqhkiG9w0BAQUFADCBkzELMAkGA1UE
+BhMCVVMxCzAJBgNVBAgTAlVUMRcwFQYDVQQHEw5TYWx0IExha2UgQ2l0eTEeMBwGA1UEChMVVGhl
+IFVTRVJUUlVTVCBOZXR3b3JrMSEwHwYDVQQLExhodHRwOi8vd3d3LnVzZXJ0cnVzdC5jb20xGzAZ
+BgNVBAMTElVUTiAtIERBVEFDb3JwIFNHQzAeFw05OTA2MjQxODU3MjFaFw0xOTA2MjQxOTA2MzBa
+MIGTMQswCQYDVQQGEwJVUzELMAkGA1UECBMCVVQxFzAVBgNVBAcTDlNhbHQgTGFrZSBDaXR5MR4w
+HAYDVQQKExVUaGUgVVNFUlRSVVNUIE5ldHdvcmsxITAfBgNVBAsTGGh0dHA6Ly93d3cudXNlcnRy
+dXN0LmNvbTEbMBkGA1UEAxMSVVROIC0gREFUQUNvcnAgU0dDMIIBIjANBgkqhkiG9w0BAQEFAAOC
+AQ8AMIIBCgKCAQEA3+5YEKIrblXEjr8uRgnn4AgPLit6E5Qbvfa2gI5lBZMAHryv4g+OGQ0SR+ys
+raP6LnD43m77VkIVni5c7yPeIbkFdicZD0/Ww5y0vpQZY/KmEQrrU0icvvIpOxboGqBMpsn0GFlo
+wHDyUwDAXlCCpVZvNvlK4ESGoE1O1kduSUrLZ9emxAW5jh70/P/N5zbgnAVssjMiFdC04MwXwLLA
+9P4yPykqlXvY8qdOD1R8oQ2AswkDwf9c3V6aPryuvEeKaq5xyh+xKrhfQgUL7EYw0XILyulWbfXv
+33i+Ybqypa4ETLyorGkVl73v67SMvzX41MPRKA5cOp9wGDMgd8SirwIDAQABo4GrMIGoMAsGA1Ud
+DwQEAwIBxjAPBgNVHRMBAf8EBTADAQH/MB0GA1UdDgQWBBRTMtGzz3/64PGgXYVOktKeRR20TzA9
+BgNVHR8ENjA0MDKgMKAuhixodHRwOi8vY3JsLnVzZXJ0cnVzdC5jb20vVVROLURBVEFDb3JwU0dD
+LmNybDAqBgNVHSUEIzAhBggrBgEFBQcDAQYKKwYBBAGCNwoDAwYJYIZIAYb4QgQBMA0GCSqGSIb3
+DQEBBQUAA4IBAQAnNZcAiosovcYzMB4p/OL31ZjUQLtgyr+rFywJNn9Q+kHcrpY6CiM+iVnJowft
+Gzet/Hy+UUla3joKVAgWRcKZsYfNjGjgaQPpxE6YsjuMFrMOoAyYUJuTqXAJyCyjj98C5OBxOvG0
+I3KgqgHf35g+FFCgMSa9KOlaMCZ1+XtgHI3zzVAmbQQnmt/VDUVHKWss5nbZqSl9Mt3JNjy9rjXx
+EZ4du5A/EkdOjtd+D2JzHVImOBwYSf0wdJrE5SIv2MCN7ZF6TACPcn9d2t0bi0Vr591pl6jFVkwP
+DPafepE39peC4N1xaf92P2BNPM/3mfnGV/TJVTl4uix5yaaIK/QI
+-----END CERTIFICATE-----
+
+UTN USERFirst Hardware Root CA
+==============================
+-----BEGIN CERTIFICATE-----
+MIIEdDCCA1ygAwIBAgIQRL4Mi1AAJLQR0zYq/mUK/TANBgkqhkiG9w0BAQUFADCBlzELMAkGA1UE
+BhMCVVMxCzAJBgNVBAgTAlVUMRcwFQYDVQQHEw5TYWx0IExha2UgQ2l0eTEeMBwGA1UEChMVVGhl
+IFVTRVJUUlVTVCBOZXR3b3JrMSEwHwYDVQQLExhodHRwOi8vd3d3LnVzZXJ0cnVzdC5jb20xHzAd
+BgNVBAMTFlVUTi1VU0VSRmlyc3QtSGFyZHdhcmUwHhcNOTkwNzA5MTgxMDQyWhcNMTkwNzA5MTgx
+OTIyWjCBlzELMAkGA1UEBhMCVVMxCzAJBgNVBAgTAlVUMRcwFQYDVQQHEw5TYWx0IExha2UgQ2l0
+eTEeMBwGA1UEChMVVGhlIFVTRVJUUlVTVCBOZXR3b3JrMSEwHwYDVQQLExhodHRwOi8vd3d3LnVz
+ZXJ0cnVzdC5jb20xHzAdBgNVBAMTFlVUTi1VU0VSRmlyc3QtSGFyZHdhcmUwggEiMA0GCSqGSIb3
+DQEBAQUAA4IBDwAwggEKAoIBAQCx98M4P7Sof885glFn0G2f0v9Y8+efK+wNiVSZuTiZFvfgIXlI
+wrthdBKWHTxqctU8EGc6Oe0rE81m65UJM6Rsl7HoxuzBdXmcRl6Nq9Bq/bkqVRcQVLMZ8Jr28bFd
+tqdt++BxF2uiiPsA3/4aMXcMmgF6sTLjKwEHOG7DpV4jvEWbe1DByTCP2+UretNb+zNAHqDVmBe8
+i4fDidNdoI6yqqr2jmmIBsX6iSHzCJ1pLgkzmykNRg+MzEk0sGlRvfkGzWitZky8PqxhvQqIDsjf
+Pe58BEydCl5rkdbux+0ojatNh4lz0G6k0B4WixThdkQDf2Os5M1JnMWS9KsyoUhbAgMBAAGjgbkw
+gbYwCwYDVR0PBAQDAgHGMA8GA1UdEwEB/wQFMAMBAf8wHQYDVR0OBBYEFKFyXyYbKJhDlV0HN9WF
+lp1L0sNFMEQGA1UdHwQ9MDswOaA3oDWGM2h0dHA6Ly9jcmwudXNlcnRydXN0LmNvbS9VVE4tVVNF
+UkZpcnN0LUhhcmR3YXJlLmNybDAxBgNVHSUEKjAoBggrBgEFBQcDAQYIKwYBBQUHAwUGCCsGAQUF
+BwMGBggrBgEFBQcDBzANBgkqhkiG9w0BAQUFAAOCAQEARxkP3nTGmZev/K0oXnWO6y1n7k57K9cM
+//bey1WiCuFMVGWTYGufEpytXoMs61quwOQt9ABjHbjAbPLPSbtNk28GpgoiskliCE7/yMgUsogW
+XecB5BKV5UU0s4tpvc+0hY91UZ59Ojg6FEgSxvunOxqNDYJAB+gECJChicsZUN/KHAG8HQQZexB2
+lzvukJDKxA4fFm517zP4029bHpbj4HR3dHuKom4t3XbWOTCC8KucUvIqx69JXn7HaOWCgchqJ/kn
+iCrVWFCVH/A7HFe7fRQ5YiuayZSSKqMiDP+JJn1fIytH1xUdqWqeUQ0qUZ6B+dQ7XnASfxAynB67
+nfhmqA==
+-----END CERTIFICATE-----
+
+Camerfirma Chambers of Commerce Root
+====================================
+-----BEGIN CERTIFICATE-----
+MIIEvTCCA6WgAwIBAgIBADANBgkqhkiG9w0BAQUFADB/MQswCQYDVQQGEwJFVTEnMCUGA1UEChMe
+QUMgQ2FtZXJmaXJtYSBTQSBDSUYgQTgyNzQzMjg3MSMwIQYDVQQLExpodHRwOi8vd3d3LmNoYW1i
+ZXJzaWduLm9yZzEiMCAGA1UEAxMZQ2hhbWJlcnMgb2YgQ29tbWVyY2UgUm9vdDAeFw0wMzA5MzAx
+NjEzNDNaFw0zNzA5MzAxNjEzNDRaMH8xCzAJBgNVBAYTAkVVMScwJQYDVQQKEx5BQyBDYW1lcmZp
+cm1hIFNBIENJRiBBODI3NDMyODcxIzAhBgNVBAsTGmh0dHA6Ly93d3cuY2hhbWJlcnNpZ24ub3Jn
+MSIwIAYDVQQDExlDaGFtYmVycyBvZiBDb21tZXJjZSBSb290MIIBIDANBgkqhkiG9w0BAQEFAAOC
+AQ0AMIIBCAKCAQEAtzZV5aVdGDDg2olUkfzIx1L4L1DZ77F1c2VHfRtbunXF/KGIJPov7coISjlU
+xFF6tdpg6jg8gbLL8bvZkSM/SAFwdakFKq0fcfPJVD0dBmpAPrMMhe5cG3nCYsS4No41XQEMIwRH
+NaqbYE6gZj3LJgqcQKH0XZi/caulAGgq7YN6D6IUtdQis4CwPAxaUWktWBiP7Zme8a7ileb2R6jW
+DA+wWFjbw2Y3npuRVDM30pQcakjJyfKl2qUMI/cjDpwyVV5xnIQFUZot/eZOKjRa3spAN2cMVCFV
+d9oKDMyXroDclDZK9D7ONhMeU+SsTjoF7Nuucpw4i9A5O4kKPnf+dQIBA6OCAUQwggFAMBIGA1Ud
+EwEB/wQIMAYBAf8CAQwwPAYDVR0fBDUwMzAxoC+gLYYraHR0cDovL2NybC5jaGFtYmVyc2lnbi5v
+cmcvY2hhbWJlcnNyb290LmNybDAdBgNVHQ4EFgQU45T1sU3p26EpW1eLTXYGduHRooowDgYDVR0P
+AQH/BAQDAgEGMBEGCWCGSAGG+EIBAQQEAwIABzAnBgNVHREEIDAegRxjaGFtYmVyc3Jvb3RAY2hh
+bWJlcnNpZ24ub3JnMCcGA1UdEgQgMB6BHGNoYW1iZXJzcm9vdEBjaGFtYmVyc2lnbi5vcmcwWAYD
+VR0gBFEwTzBNBgsrBgEEAYGHLgoDATA+MDwGCCsGAQUFBwIBFjBodHRwOi8vY3BzLmNoYW1iZXJz
+aWduLm9yZy9jcHMvY2hhbWJlcnNyb290Lmh0bWwwDQYJKoZIhvcNAQEFBQADggEBAAxBl8IahsAi
+fJ/7kPMa0QOx7xP5IV8EnNrJpY0nbJaHkb5BkAFyk+cefV/2icZdp0AJPaxJRUXcLo0waLIJuvvD
+L8y6C98/d3tGfToSJI6WjzwFCm/SlCgdbQzALogi1djPHRPH8EjX1wWnz8dHnjs8NMiAT9QUu/wN
+UPf6s+xCX6ndbcj0dc97wXImsQEcXCz9ek60AcUFV7nnPKoF2YjpB0ZBzu9Bga5Y34OirsrXdx/n
+ADydb47kMgkdTXg0eDQ8lJsm7U9xxhl6vSAiSFr+S30Dt+dYvsYyTnQeaN2oaFuzPu5ifdmA6Ap1
+erfutGWaIZDgqtCYvDi1czyL+Nw=
+-----END CERTIFICATE-----
+
+Camerfirma Global Chambersign Root
+==================================
+-----BEGIN CERTIFICATE-----
+MIIExTCCA62gAwIBAgIBADANBgkqhkiG9w0BAQUFADB9MQswCQYDVQQGEwJFVTEnMCUGA1UEChMe
+QUMgQ2FtZXJmaXJtYSBTQSBDSUYgQTgyNzQzMjg3MSMwIQYDVQQLExpodHRwOi8vd3d3LmNoYW1i
+ZXJzaWduLm9yZzEgMB4GA1UEAxMXR2xvYmFsIENoYW1iZXJzaWduIFJvb3QwHhcNMDMwOTMwMTYx
+NDE4WhcNMzcwOTMwMTYxNDE4WjB9MQswCQYDVQQGEwJFVTEnMCUGA1UEChMeQUMgQ2FtZXJmaXJt
+YSBTQSBDSUYgQTgyNzQzMjg3MSMwIQYDVQQLExpodHRwOi8vd3d3LmNoYW1iZXJzaWduLm9yZzEg
+MB4GA1UEAxMXR2xvYmFsIENoYW1iZXJzaWduIFJvb3QwggEgMA0GCSqGSIb3DQEBAQUAA4IBDQAw
+ggEIAoIBAQCicKLQn0KuWxfH2H3PFIP8T8mhtxOviteePgQKkotgVvq0Mi+ITaFgCPS3CU6gSS9J
+1tPfnZdan5QEcOw/Wdm3zGaLmFIoCQLfxS+EjXqXd7/sQJ0lcqu1PzKY+7e3/HKE5TWH+VX6ox8O
+by4o3Wmg2UIQxvi1RMLQQ3/bvOSiPGpVeAp3qdjqGTK3L/5cPxvusZjsyq16aUXjlg9V9ubtdepl
+6DJWk0aJqCWKZQbua795B9Dxt6/tLE2Su8CoX6dnfQTyFQhwrJLWfQTSM/tMtgsL+xrJxI0DqX5c
+8lCrEqWhz0hQpe/SyBoT+rB/sYIcd2oPX9wLlY/vQ37mRQklAgEDo4IBUDCCAUwwEgYDVR0TAQH/
+BAgwBgEB/wIBDDA/BgNVHR8EODA2MDSgMqAwhi5odHRwOi8vY3JsLmNoYW1iZXJzaWduLm9yZy9j
+aGFtYmVyc2lnbnJvb3QuY3JsMB0GA1UdDgQWBBRDnDafsJ4wTcbOX60Qq+UDpfqpFDAOBgNVHQ8B
+Af8EBAMCAQYwEQYJYIZIAYb4QgEBBAQDAgAHMCoGA1UdEQQjMCGBH2NoYW1iZXJzaWducm9vdEBj
+aGFtYmVyc2lnbi5vcmcwKgYDVR0SBCMwIYEfY2hhbWJlcnNpZ25yb290QGNoYW1iZXJzaWduLm9y
+ZzBbBgNVHSAEVDBSMFAGCysGAQQBgYcuCgEBMEEwPwYIKwYBBQUHAgEWM2h0dHA6Ly9jcHMuY2hh
+bWJlcnNpZ24ub3JnL2Nwcy9jaGFtYmVyc2lnbnJvb3QuaHRtbDANBgkqhkiG9w0BAQUFAAOCAQEA
+PDtwkfkEVCeR4e3t/mh/YV3lQWVPMvEYBZRqHN4fcNs+ezICNLUMbKGKfKX0j//U2K0X1S0E0T9Y
+gOKBWYi+wONGkyT+kL0mojAt6JcmVzWJdJYY9hXiryQZVgICsroPFOrGimbBhkVVi76SvpykBMdJ
+PJ7oKXqJ1/6v/2j1pReQvayZzKWGVwlnRtvWFsJG8eSpUPWP0ZIV018+xgBJOm5YstHRJw0lyDL4
+IBHNfTIzSJRUTN3cecQwn+uOuFW114hcxWokPbLTBQNRxgfvzBRydD1ucs4YKIxKoHflCStFREes
+t2d/AYoFWpO+ocH/+OcOZ6RHSXZddZAa9SaP8A==
+-----END CERTIFICATE-----
+
+NetLock Notary (Class A) Root
+=============================
+-----BEGIN CERTIFICATE-----
+MIIGfTCCBWWgAwIBAgICAQMwDQYJKoZIhvcNAQEEBQAwga8xCzAJBgNVBAYTAkhVMRAwDgYDVQQI
+EwdIdW5nYXJ5MREwDwYDVQQHEwhCdWRhcGVzdDEnMCUGA1UEChMeTmV0TG9jayBIYWxvemF0Yml6
+dG9uc2FnaSBLZnQuMRowGAYDVQQLExFUYW51c2l0dmFueWtpYWRvazE2MDQGA1UEAxMtTmV0TG9j
+ayBLb3pqZWd5em9pIChDbGFzcyBBKSBUYW51c2l0dmFueWtpYWRvMB4XDTk5MDIyNDIzMTQ0N1oX
+DTE5MDIxOTIzMTQ0N1owga8xCzAJBgNVBAYTAkhVMRAwDgYDVQQIEwdIdW5nYXJ5MREwDwYDVQQH
+EwhCdWRhcGVzdDEnMCUGA1UEChMeTmV0TG9jayBIYWxvemF0Yml6dG9uc2FnaSBLZnQuMRowGAYD
+VQQLExFUYW51c2l0dmFueWtpYWRvazE2MDQGA1UEAxMtTmV0TG9jayBLb3pqZWd5em9pIChDbGFz
+cyBBKSBUYW51c2l0dmFueWtpYWRvMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAvHSM
+D7tM9DceqQWC2ObhbHDqeLVu0ThEDaiDzl3S1tWBxdRL51uUcCbbO51qTGL3cfNk1mE7PetzozfZ
+z+qMkjvN9wfcZnSX9EUi3fRc4L9t875lM+QVOr/bmJBVOMTtplVjC7B4BPTjbsE/jvxReB+SnoPC
+/tmwqcm8WgD/qaiYdPv2LD4VOQ22BFWoDpggQrOxJa1+mm9dU7GrDPzr4PN6s6iz/0b2Y6LYOph7
+tqyF/7AlT3Rj5xMHpQqPBffAZG9+pyeAlt7ULoZgx2srXnN7F+eRP2QM2EsiNCubMvJIH5+hCoR6
+4sKtlz2O1cH5VqNQ6ca0+pii7pXmKgOM3wIDAQABo4ICnzCCApswDgYDVR0PAQH/BAQDAgAGMBIG
+A1UdEwEB/wQIMAYBAf8CAQQwEQYJYIZIAYb4QgEBBAQDAgAHMIICYAYJYIZIAYb4QgENBIICURaC
+Ak1GSUdZRUxFTSEgRXplbiB0YW51c2l0dmFueSBhIE5ldExvY2sgS2Z0LiBBbHRhbGFub3MgU3pv
+bGdhbHRhdGFzaSBGZWx0ZXRlbGVpYmVuIGxlaXJ0IGVsamFyYXNvayBhbGFwamFuIGtlc3p1bHQu
+IEEgaGl0ZWxlc2l0ZXMgZm9seWFtYXRhdCBhIE5ldExvY2sgS2Z0LiB0ZXJtZWtmZWxlbG9zc2Vn
+LWJpenRvc2l0YXNhIHZlZGkuIEEgZGlnaXRhbGlzIGFsYWlyYXMgZWxmb2dhZGFzYW5hayBmZWx0
+ZXRlbGUgYXogZWxvaXJ0IGVsbGVub3J6ZXNpIGVsamFyYXMgbWVndGV0ZWxlLiBBeiBlbGphcmFz
+IGxlaXJhc2EgbWVndGFsYWxoYXRvIGEgTmV0TG9jayBLZnQuIEludGVybmV0IGhvbmxhcGphbiBh
+IGh0dHBzOi8vd3d3Lm5ldGxvY2submV0L2RvY3MgY2ltZW4gdmFneSBrZXJoZXRvIGF6IGVsbGVu
+b3J6ZXNAbmV0bG9jay5uZXQgZS1tYWlsIGNpbWVuLiBJTVBPUlRBTlQhIFRoZSBpc3N1YW5jZSBh
+bmQgdGhlIHVzZSBvZiB0aGlzIGNlcnRpZmljYXRlIGlzIHN1YmplY3QgdG8gdGhlIE5ldExvY2sg
+Q1BTIGF2YWlsYWJsZSBhdCBodHRwczovL3d3dy5uZXRsb2NrLm5ldC9kb2NzIG9yIGJ5IGUtbWFp
+bCBhdCBjcHNAbmV0bG9jay5uZXQuMA0GCSqGSIb3DQEBBAUAA4IBAQBIJEb3ulZv+sgoA0BO5TE5
+ayZrU3/b39/zcT0mwBQOxmd7I6gMc90Bu8bKbjc5VdXHjFYgDigKDtIqpLBJUsY4B/6+CgmM0ZjP
+ytoUMaFP0jn8DxEsQ8Pdq5PHVT5HfBgaANzze9jyf1JsIPQLX2lS9O74silg6+NJMSEN1rUQQeJB
+CWziGppWS3cC9qCbmieH6FUpccKQn0V4GuEVZD3QDtigdp+uxdAu6tYPVuxkf1qbFFgBJ34TUMdr
+KuZoPL9coAob4Q566eKAw+np9v1sEZ7Q5SgnK1QyQhSCdeZK8CtmdWOMovsEPoMOmzbwGOQmIMOM
+8CgHrTwXZoi1/baI
+-----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-----
+
+StartCom Certification Authority
+================================
+-----BEGIN CERTIFICATE-----
+MIIHyTCCBbGgAwIBAgIBATANBgkqhkiG9w0BAQUFADB9MQswCQYDVQQGEwJJTDEWMBQGA1UEChMN
+U3RhcnRDb20gTHRkLjErMCkGA1UECxMiU2VjdXJlIERpZ2l0YWwgQ2VydGlmaWNhdGUgU2lnbmlu
+ZzEpMCcGA1UEAxMgU3RhcnRDb20gQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkwHhcNMDYwOTE3MTk0
+NjM2WhcNMzYwOTE3MTk0NjM2WjB9MQswCQYDVQQGEwJJTDEWMBQGA1UEChMNU3RhcnRDb20gTHRk
+LjErMCkGA1UECxMiU2VjdXJlIERpZ2l0YWwgQ2VydGlmaWNhdGUgU2lnbmluZzEpMCcGA1UEAxMg
+U3RhcnRDb20gQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAw
+ggIKAoICAQDBiNsJvGxGfHiflXu1M5DycmLWwTYgIiRezul38kMKogZkpMyONvg45iPwbm2xPN1y
+o4UcodM9tDMr0y+v/uqwQVlntsQGfQqedIXWeUyAN3rfOQVSWff0G0ZDpNKFhdLDcfN1YjS6LIp/
+Ho/u7TTQEceWzVI9ujPW3U3eCztKS5/CJi/6tRYccjV3yjxd5srhJosaNnZcAdt0FCX+7bWgiA/d
+eMotHweXMAEtcnn6RtYTKqi5pquDSR3l8u/d5AGOGAqPY1MWhWKpDhk6zLVmpsJrdAfkK+F2PrRt
+2PZE4XNiHzvEvqBTViVsUQn3qqvKv3b9bZvzndu/PWa8DFaqr5hIlTpL36dYUNk4dalb6kMMAv+Z
+6+hsTXBbKWWc3apdzK8BMewM69KN6Oqce+Zu9ydmDBpI125C4z/eIT574Q1w+2OqqGwaVLRcJXrJ
+osmLFqa7LH4XXgVNWG4SHQHuEhANxjJ/GP/89PrNbpHoNkm+Gkhpi8KWTRoSsmkXwQqQ1vp5Iki/
+untp+HDH+no32NgN0nZPV/+Qt+OR0t3vwmC3Zzrd/qqc8NSLf3Iizsafl7b4r4qgEKjZ+xjGtrVc
+UjyJthkqcwEKDwOzEmDyei+B26Nu/yYwl/WL3YlXtq09s68rxbd2AvCl1iuahhQqcvbjM4xdCUsT
+37uMdBNSSwIDAQABo4ICUjCCAk4wDAYDVR0TBAUwAwEB/zALBgNVHQ8EBAMCAa4wHQYDVR0OBBYE
+FE4L7xqkQFulF2mHMMo0aEPQQa7yMGQGA1UdHwRdMFswLKAqoCiGJmh0dHA6Ly9jZXJ0LnN0YXJ0
+Y29tLm9yZy9zZnNjYS1jcmwuY3JsMCugKaAnhiVodHRwOi8vY3JsLnN0YXJ0Y29tLm9yZy9zZnNj
+YS1jcmwuY3JsMIIBXQYDVR0gBIIBVDCCAVAwggFMBgsrBgEEAYG1NwEBATCCATswLwYIKwYBBQUH
+AgEWI2h0dHA6Ly9jZXJ0LnN0YXJ0Y29tLm9yZy9wb2xpY3kucGRmMDUGCCsGAQUFBwIBFilodHRw
+Oi8vY2VydC5zdGFydGNvbS5vcmcvaW50ZXJtZWRpYXRlLnBkZjCB0AYIKwYBBQUHAgIwgcMwJxYg
+U3RhcnQgQ29tbWVyY2lhbCAoU3RhcnRDb20pIEx0ZC4wAwIBARqBl0xpbWl0ZWQgTGlhYmlsaXR5
+LCByZWFkIHRoZSBzZWN0aW9uICpMZWdhbCBMaW1pdGF0aW9ucyogb2YgdGhlIFN0YXJ0Q29tIENl
+cnRpZmljYXRpb24gQXV0aG9yaXR5IFBvbGljeSBhdmFpbGFibGUgYXQgaHR0cDovL2NlcnQuc3Rh
+cnRjb20ub3JnL3BvbGljeS5wZGYwEQYJYIZIAYb4QgEBBAQDAgAHMDgGCWCGSAGG+EIBDQQrFilT
+dGFydENvbSBGcmVlIFNTTCBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTANBgkqhkiG9w0BAQUFAAOC
+AgEAFmyZ9GYMNPXQhV59CuzaEE44HF7fpiUFS5Eyweg78T3dRAlbB0mKKctmArexmvclmAk8jhvh
+3TaHK0u7aNM5Zj2gJsfyOZEdUauCe37Vzlrk4gNXcGmXCPleWKYK34wGmkUWFjgKXlf2Ysd6AgXm
+vB618p70qSmD+LIU424oh0TDkBreOKk8rENNZEXO3SipXPJzewT4F+irsfMuXGRuczE6Eri8sxHk
+fY+BUZo7jYn0TZNmezwD7dOaHZrzZVD1oNB1ny+v8OqCQ5j4aZyJecRDjkZy42Q2Eq/3JR44iZB3
+fsNrarnDy0RLrHiQi+fHLB5LEUTINFInzQpdn4XBidUaePKVEFMy3YCEZnXZtWgo+2EuvoSoOMCZ
+EoalHmdkrQYuL6lwhceWD3yJZfWOQ1QOq92lgDmUYMA0yZZwLKMS9R9Ie70cfmu3nZD0Ijuu+Pwq
+yvqCUqDvr0tVk+vBtfAii6w0TiYiBKGHLHVKt+V9E9e4DGTANtLJL4YSjCMJwRuCO3NJo2pXh5Tl
+1njFmUNj403gdy3hZZlyaQQaRwnmDwFWJPsfvw55qVguucQJAX6Vum0ABj6y6koQOdjQK/W/7HW/
+lwLFCRsI3FU34oH7N4RDYiDK51ZLZer+bMEkkyShNOsF/5oirpt9P/FlUQqmMGqz9IgcgA38coro
+g14=
+-----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-----
+
+Swisscom Root CA 1
+==================
+-----BEGIN CERTIFICATE-----
+MIIF2TCCA8GgAwIBAgIQXAuFXAvnWUHfV8w/f52oNjANBgkqhkiG9w0BAQUFADBkMQswCQYDVQQG
+EwJjaDERMA8GA1UEChMIU3dpc3Njb20xJTAjBgNVBAsTHERpZ2l0YWwgQ2VydGlmaWNhdGUgU2Vy
+dmljZXMxGzAZBgNVBAMTElN3aXNzY29tIFJvb3QgQ0EgMTAeFw0wNTA4MTgxMjA2MjBaFw0yNTA4
+MTgyMjA2MjBaMGQxCzAJBgNVBAYTAmNoMREwDwYDVQQKEwhTd2lzc2NvbTElMCMGA1UECxMcRGln
+aXRhbCBDZXJ0aWZpY2F0ZSBTZXJ2aWNlczEbMBkGA1UEAxMSU3dpc3Njb20gUm9vdCBDQSAxMIIC
+IjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEA0LmwqAzZuz8h+BvVM5OAFmUgdbI9m2BtRsiM
+MW8Xw/qabFbtPMWRV8PNq5ZJkCoZSx6jbVfd8StiKHVFXqrWW/oLJdihFvkcxC7mlSpnzNApbjyF
+NDhhSbEAn9Y6cV9Nbc5fuankiX9qUvrKm/LcqfmdmUc/TilftKaNXXsLmREDA/7n29uj/x2lzZAe
+AR81sH8A25Bvxn570e56eqeqDFdvpG3FEzuwpdntMhy0XmeLVNxzh+XTF3xmUHJd1BpYwdnP2IkC
+b6dJtDZd0KTeByy2dbcokdaXvij1mB7qWybJvbCXc9qukSbraMH5ORXWZ0sKbU/Lz7DkQnGMU3nn
+7uHbHaBuHYwadzVcFh4rUx80i9Fs/PJnB3r1re3WmquhsUvhzDdf/X/NTa64H5xD+SpYVUNFvJbN
+cA78yeNmuk6NO4HLFWR7uZToXTNShXEuT46iBhFRyePLoW4xCGQMwtI89Tbo19AOeCMgkckkKmUp
+WyL3Ic6DXqTz3kvTaI9GdVyDCW4pa8RwjPWd1yAv/0bSKzjCL3UcPX7ape8eYIVpQtPM+GP+HkM5
+haa2Y0EQs3MevNP6yn0WR+Kn1dCjigoIlmJWbjTb2QK5MHXjBNLnj8KwEUAKrNVxAmKLMb7dxiNY
+MUJDLXT5xp6mig/p/r+D5kNXJLrvRjSq1xIBOO0CAwEAAaOBhjCBgzAOBgNVHQ8BAf8EBAMCAYYw
+HQYDVR0hBBYwFDASBgdghXQBUwABBgdghXQBUwABMBIGA1UdEwEB/wQIMAYBAf8CAQcwHwYDVR0j
+BBgwFoAUAyUv3m+CATpcLNwroWm1Z9SM0/0wHQYDVR0OBBYEFAMlL95vggE6XCzcK6FptWfUjNP9
+MA0GCSqGSIb3DQEBBQUAA4ICAQA1EMvspgQNDQ/NwNurqPKIlwzfky9NfEBWMXrrpA9gzXrzvsMn
+jgM+pN0S734edAY8PzHyHHuRMSG08NBsl9Tpl7IkVh5WwzW9iAUPWxAaZOHHgjD5Mq2eUCzneAXQ
+MbFamIp1TpBcahQq4FJHgmDmHtqBsfsUC1rxn9KVuj7QG9YVHaO+htXbD8BJZLsuUBlL0iT43R4H
+VtA4oJVwIHaM190e3p9xxCPvgxNcoyQVTSlAPGrEqdi3pkSlDfTgnXceQHAm/NrZNuR55LU/vJtl
+vrsRls/bxig5OgjOR1tTWsWZ/l2p3e9M1MalrQLmjAcSHm8D0W+go/MpvRLHUKKwf4ipmXeascCl
+OS5cfGniLLDqN2qk4Vrh9VDlg++luyqI54zb/W1elxmofmZ1a3Hqv7HHb6D0jqTsNFFbjCYDcKF3
+1QESVwA12yPeDooomf2xEG9L/zgtYE4snOtnta1J7ksfrK/7DZBaZmBwXarNeNQk7shBoJMBkpxq
+nvy5JMWzFYJ+vq6VK+uxwNrjAWALXmmshFZhvnEX/h0TD/7Gh0Xp/jKgGg0TpJRVcaUWi7rKibCy
+x/yP2FS1k2Kdzs9Z+z0YzirLNRWCXf9UIltxUvu3yf5gmwBBZPCqKuy2QkPOiWaByIufOVQDJdMW
+NY6E0F/6MBr1mmz0DlP5OlvRHA==
+-----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-----
+
+DST ACES CA X6
+==============
+-----BEGIN CERTIFICATE-----
+MIIECTCCAvGgAwIBAgIQDV6ZCtadt3js2AdWO4YV2TANBgkqhkiG9w0BAQUFADBbMQswCQYDVQQG
+EwJVUzEgMB4GA1UEChMXRGlnaXRhbCBTaWduYXR1cmUgVHJ1c3QxETAPBgNVBAsTCERTVCBBQ0VT
+MRcwFQYDVQQDEw5EU1QgQUNFUyBDQSBYNjAeFw0wMzExMjAyMTE5NThaFw0xNzExMjAyMTE5NTha
+MFsxCzAJBgNVBAYTAlVTMSAwHgYDVQQKExdEaWdpdGFsIFNpZ25hdHVyZSBUcnVzdDERMA8GA1UE
+CxMIRFNUIEFDRVMxFzAVBgNVBAMTDkRTVCBBQ0VTIENBIFg2MIIBIjANBgkqhkiG9w0BAQEFAAOC
+AQ8AMIIBCgKCAQEAuT31LMmU3HWKlV1j6IR3dma5WZFcRt2SPp/5DgO0PWGSvSMmtWPuktKe1jzI
+DZBfZIGxqAgNTNj50wUoUrQBJcWVHAx+PhCEdc/BGZFjz+iokYi5Q1K7gLFViYsx+tC3dr5BPTCa
+pCIlF3PoHuLTrCq9Wzgh1SpL11V94zpVvddtawJXa+ZHfAjIgrrep4c9oW24MFbCswKBXy314pow
+GCi4ZtPLAZZv6opFVdbgnf9nKxcCpk4aahELfrd755jWjHZvwTvbUJN+5dCOHze4vbrGn2zpfDPy
+MjwmR/onJALJfh1biEITajV8fTXpLmaRcpPVMibEdPVTo7NdmvYJywIDAQABo4HIMIHFMA8GA1Ud
+EwEB/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgHGMB8GA1UdEQQYMBaBFHBraS1vcHNAdHJ1c3Rkc3Qu
+Y29tMGIGA1UdIARbMFkwVwYKYIZIAWUDAgEBATBJMEcGCCsGAQUFBwIBFjtodHRwOi8vd3d3LnRy
+dXN0ZHN0LmNvbS9jZXJ0aWZpY2F0ZXMvcG9saWN5L0FDRVMtaW5kZXguaHRtbDAdBgNVHQ4EFgQU
+CXIGThhDD+XWzMNqizF7eI+og7gwDQYJKoZIhvcNAQEFBQADggEBAKPYjtay284F5zLNAdMEA+V2
+5FYrnJmQ6AgwbN99Pe7lv7UkQIRJ4dEorsTCOlMwiPH1d25Ryvr/ma8kXxug/fKshMrfqfBfBC6t
+Fr8hlxCBPeP/h40y3JTlR4peahPJlJU90u7INJXQgNStMgiAVDzgvVJT11J8smk/f3rPanTK+gQq
+nExaBqXpIK1FZg9p8d2/6eMyi/rgwYZNcjwu2JN4Cir42NInPRmJX1p7ijvMDNpRrscL9yuwNwXs
+vFcj4jjSm2jzVhKIT0J8uDHEtdvkyCE06UgRNe76x5JXxZ805Mf29w4LTJxoeHtxMcfrHuBnQfO3
+oKfN5XozNmr6mis=
+-----END CERTIFICATE-----
+
+TURKTRUST Certificate Services Provider Root 1
+==============================================
+-----BEGIN CERTIFICATE-----
+MIID+zCCAuOgAwIBAgIBATANBgkqhkiG9w0BAQUFADCBtzE/MD0GA1UEAww2VMOcUktUUlVTVCBF
+bGVrdHJvbmlrIFNlcnRpZmlrYSBIaXptZXQgU2HEn2xhecSxY8Sxc8SxMQswCQYDVQQGDAJUUjEP
+MA0GA1UEBwwGQU5LQVJBMVYwVAYDVQQKDE0oYykgMjAwNSBUw5xSS1RSVVNUIEJpbGdpIMSwbGV0
+acWfaW0gdmUgQmlsacWfaW0gR8O8dmVubGnEn2kgSGl6bWV0bGVyaSBBLsWeLjAeFw0wNTA1MTMx
+MDI3MTdaFw0xNTAzMjIxMDI3MTdaMIG3MT8wPQYDVQQDDDZUw5xSS1RSVVNUIEVsZWt0cm9uaWsg
+U2VydGlmaWthIEhpem1ldCBTYcSfbGF5xLFjxLFzxLExCzAJBgNVBAYMAlRSMQ8wDQYDVQQHDAZB
+TktBUkExVjBUBgNVBAoMTShjKSAyMDA1IFTDnFJLVFJVU1QgQmlsZ2kgxLBsZXRpxZ9pbSB2ZSBC
+aWxpxZ9pbSBHw7x2ZW5sacSfaSBIaXptZXRsZXJpIEEuxZ4uMIIBIjANBgkqhkiG9w0BAQEFAAOC
+AQ8AMIIBCgKCAQEAylIF1mMD2Bxf3dJ7XfIMYGFbazt0K3gNfUW9InTojAPBxhEqPZW8qZSwu5GX
+yGl8hMW0kWxsE2qkVa2kheiVfrMArwDCBRj1cJ02i67L5BuBf5OI+2pVu32Fks66WJ/bMsW9Xe8i
+Si9BB35JYbOG7E6mQW6EvAPs9TscyB/C7qju6hJKjRTP8wrgUDn5CDX4EVmt5yLqS8oUBt5CurKZ
+8y1UiBAG6uEaPj1nH/vO+3yC6BFdSsG5FOpU2WabfIl9BJpiyelSPJ6c79L1JuTm5Rh8i27fbMx4
+W09ysstcP4wFjdFMjK2Sx+F4f2VsSQZQLJ4ywtdKxnWKWU51b0dewQIDAQABoxAwDjAMBgNVHRME
+BTADAQH/MA0GCSqGSIb3DQEBBQUAA4IBAQAV9VX/N5aAWSGk/KEVTCD21F/aAyT8z5Aa9CEKmu46
+sWrv7/hg0Uw2ZkUd82YCdAR7kjCo3gp2D++Vbr3JN+YaDayJSFvMgzbC9UZcWYJWtNX+I7TYVBxE
+q8Sn5RTOPEFhfEPmzcSBCYsk+1Ql1haolgxnB2+zUEfjHCQo3SqYpGH+2+oSN7wBGjSFvW5P55Fy
+B0SFHljKVETd96y5y4khctuPwGkplyqjrhgjlxxBKot8KsF8kOipKMDTkcatKIdAaLX/7KfS0zgY
+nNN9aV3wxqUeJBujR/xpB2jn5Jq07Q+hh4cCzofSSE7hvP/L8XKSRGQDJereW26fyfJOrN3H
+-----END CERTIFICATE-----
+
+TURKTRUST Certificate Services Provider Root 2
+==============================================
+-----BEGIN CERTIFICATE-----
+MIIEPDCCAySgAwIBAgIBATANBgkqhkiG9w0BAQUFADCBvjE/MD0GA1UEAww2VMOcUktUUlVTVCBF
+bGVrdHJvbmlrIFNlcnRpZmlrYSBIaXptZXQgU2HEn2xhecSxY8Sxc8SxMQswCQYDVQQGEwJUUjEP
+MA0GA1UEBwwGQW5rYXJhMV0wWwYDVQQKDFRUw5xSS1RSVVNUIEJpbGdpIMSwbGV0acWfaW0gdmUg
+QmlsacWfaW0gR8O8dmVubGnEn2kgSGl6bWV0bGVyaSBBLsWeLiAoYykgS2FzxLFtIDIwMDUwHhcN
+MDUxMTA3MTAwNzU3WhcNMTUwOTE2MTAwNzU3WjCBvjE/MD0GA1UEAww2VMOcUktUUlVTVCBFbGVr
+dHJvbmlrIFNlcnRpZmlrYSBIaXptZXQgU2HEn2xhecSxY8Sxc8SxMQswCQYDVQQGEwJUUjEPMA0G
+A1UEBwwGQW5rYXJhMV0wWwYDVQQKDFRUw5xSS1RSVVNUIEJpbGdpIMSwbGV0acWfaW0gdmUgQmls
+acWfaW0gR8O8dmVubGnEn2kgSGl6bWV0bGVyaSBBLsWeLiAoYykgS2FzxLFtIDIwMDUwggEiMA0G
+CSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCpNn7DkUNMwxmYCMjHWHtPFoylzkkBH3MOrHUTpvqe
+LCDe2JAOCtFp0if7qnefJ1Il4std2NiDUBd9irWCPwSOtNXwSadktx4uXyCcUHVPr+G1QRT0mJKI
+x+XlZEdhR3n9wFHxwZnn3M5q+6+1ATDcRhzviuyV79z/rxAc653YsKpqhRgNF8k+v/Gb0AmJQv2g
+QrSdiVFVKc8bcLyEVK3BEx+Y9C52YItdP5qtygy/p1Zbj3e41Z55SZI/4PGXJHpsmxcPbe9TmJEr
+5A++WXkHeLuXlfSfadRYhwqp48y2WBmfJiGxxFmNskF1wK1pzpwACPI2/z7woQ8arBT9pmAPAgMB
+AAGjQzBBMB0GA1UdDgQWBBTZN7NOBf3Zz58SFq62iS/rJTqIHDAPBgNVHQ8BAf8EBQMDBwYAMA8G
+A1UdEwEB/wQFMAMBAf8wDQYJKoZIhvcNAQEFBQADggEBAHJglrfJ3NgpXiOFX7KzLXb7iNcX/ntt
+Rbj2hWyfIvwqECLsqrkw9qtY1jkQMZkpAL2JZkH7dN6RwRgLn7Vhy506vvWolKMiVW4XSf/SKfE4
+Jl3vpao6+XF75tpYHdN0wgH6PmlYX63LaL4ULptswLbcoCb6dxriJNoaN+BnrdFzgw2lGh1uEpJ+
+hGIAF728JRhX8tepb1mIvDS3LoV4nZbcFMMsilKbloxSZj2GFotHuFEJjOp9zYhys2AzsfAKRO8P
+9Qk3iCQOLGsgOqL6EfJANZxEaGM7rDNvY7wsu/LSy3Z9fYjYHcgFHW68lKlmjHdxx/qR+i9Rnuk5
+UrbnBEI=
+-----END CERTIFICATE-----
+
+SwissSign Gold CA - G2
+======================
+-----BEGIN CERTIFICATE-----
+MIIFujCCA6KgAwIBAgIJALtAHEP1Xk+wMA0GCSqGSIb3DQEBBQUAMEUxCzAJBgNVBAYTAkNIMRUw
+EwYDVQQKEwxTd2lzc1NpZ24gQUcxHzAdBgNVBAMTFlN3aXNzU2lnbiBHb2xkIENBIC0gRzIwHhcN
+MDYxMDI1MDgzMDM1WhcNMzYxMDI1MDgzMDM1WjBFMQswCQYDVQQGEwJDSDEVMBMGA1UEChMMU3dp
+c3NTaWduIEFHMR8wHQYDVQQDExZTd2lzc1NpZ24gR29sZCBDQSAtIEcyMIICIjANBgkqhkiG9w0B
+AQEFAAOCAg8AMIICCgKCAgEAr+TufoskDhJuqVAtFkQ7kpJcyrhdhJJCEyq8ZVeCQD5XJM1QiyUq
+t2/876LQwB8CJEoTlo8jE+YoWACjR8cGp4QjK7u9lit/VcyLwVcfDmJlD909Vopz2q5+bbqBHH5C
+jCA12UNNhPqE21Is8w4ndwtrvxEvcnifLtg+5hg3Wipy+dpikJKVyh+c6bM8K8vzARO/Ws/BtQpg
+vd21mWRTuKCWs2/iJneRjOBiEAKfNA+k1ZIzUd6+jbqEemA8atufK+ze3gE/bk3lUIbLtK/tREDF
+ylqM2tIrfKjuvqblCqoOpd8FUrdVxyJdMmqXl2MT28nbeTZ7hTpKxVKJ+STnnXepgv9VHKVxaSvR
+AiTysybUa9oEVeXBCsdtMDeQKuSeFDNeFhdVxVu1yzSJkvGdJo+hB9TGsnhQ2wwMC3wLjEHXuend
+jIj3o02yMszYF9rNt85mndT9Xv+9lz4pded+p2JYryU0pUHHPbwNUMoDAw8IWh+Vc3hiv69yFGkO
+peUDDniOJihC8AcLYiAQZzlG+qkDzAQ4embvIIO1jEpWjpEA/I5cgt6IoMPiaG59je883WX0XaxR
+7ySArqpWl2/5rX3aYT+YdzylkbYcjCbaZaIJbcHiVOO5ykxMgI93e2CaHt+28kgeDrpOVG2Y4OGi
+GqJ3UM/EY5LsRxmd6+ZrzsECAwEAAaOBrDCBqTAOBgNVHQ8BAf8EBAMCAQYwDwYDVR0TAQH/BAUw
+AwEB/zAdBgNVHQ4EFgQUWyV7lqRlUX64OfPAeGZe6Drn8O4wHwYDVR0jBBgwFoAUWyV7lqRlUX64
+OfPAeGZe6Drn8O4wRgYDVR0gBD8wPTA7BglghXQBWQECAQEwLjAsBggrBgEFBQcCARYgaHR0cDov
+L3JlcG9zaXRvcnkuc3dpc3NzaWduLmNvbS8wDQYJKoZIhvcNAQEFBQADggIBACe645R88a7A3hfm
+5djV9VSwg/S7zV4Fe0+fdWavPOhWfvxyeDgD2StiGwC5+OlgzczOUYrHUDFu4Up+GC9pWbY9ZIEr
+44OE5iKHjn3g7gKZYbge9LgriBIWhMIxkziWMaa5O1M/wySTVltpkuzFwbs4AOPsF6m43Md8AYOf
+Mke6UiI0HTJ6CVanfCU2qT1L2sCCbwq7EsiHSycR+R4tx5M/nttfJmtS2S6K8RTGRI0Vqbe/vd6m
+Gu6uLftIdxf+u+yvGPUqUfA5hJeVbG4bwyvEdGB5JbAKJ9/fXtI5z0V9QkvfsywexcZdylU6oJxp
+mo/a77KwPJ+HbBIrZXAVUjEaJM9vMSNQH4xPjyPDdEFjHFWoFN0+4FFQz/EbMFYOkrCChdiDyyJk
+vC24JdVUorgG6q2SpCSgwYa1ShNqR88uC1aVVMvOmttqtKay20EIhid392qgQmwLOM7XdVAyksLf
+KzAiSNDVQTglXaTpXZ/GlHXQRf0wl0OPkKsKx4ZzYEppLd6leNcG2mqeSz53OiATIgHQv2ieY2Br
+NU0LbbqhPcCT4H8js1WtciVORvnSFu+wZMEBnunKoGqYDs/YYPIvSbjkQuE4NRb0yG5P94FW6Lqj
+viOvrv1vA+ACOzB2+httQc8Bsem4yWb02ybzOqR08kkkW8mw0FfB+j564ZfJ
+-----END CERTIFICATE-----
+
+SwissSign Silver CA - G2
+========================
+-----BEGIN CERTIFICATE-----
+MIIFvTCCA6WgAwIBAgIITxvUL1S7L0swDQYJKoZIhvcNAQEFBQAwRzELMAkGA1UEBhMCQ0gxFTAT
+BgNVBAoTDFN3aXNzU2lnbiBBRzEhMB8GA1UEAxMYU3dpc3NTaWduIFNpbHZlciBDQSAtIEcyMB4X
+DTA2MTAyNTA4MzI0NloXDTM2MTAyNTA4MzI0NlowRzELMAkGA1UEBhMCQ0gxFTATBgNVBAoTDFN3
+aXNzU2lnbiBBRzEhMB8GA1UEAxMYU3dpc3NTaWduIFNpbHZlciBDQSAtIEcyMIICIjANBgkqhkiG
+9w0BAQEFAAOCAg8AMIICCgKCAgEAxPGHf9N4Mfc4yfjDmUO8x/e8N+dOcbpLj6VzHVxumK4DV644
+N0MvFz0fyM5oEMF4rhkDKxD6LHmD9ui5aLlV8gREpzn5/ASLHvGiTSf5YXu6t+WiE7brYT7QbNHm
++/pe7R20nqA1W6GSy/BJkv6FCgU+5tkL4k+73JU3/JHpMjUi0R86TieFnbAVlDLaYQ1HTWBCrpJH
+6INaUFjpiou5XaHc3ZlKHzZnu0jkg7Y360g6rw9njxcH6ATK72oxh9TAtvmUcXtnZLi2kUpCe2Uu
+MGoM9ZDulebyzYLs2aFK7PayS+VFheZteJMELpyCbTapxDFkH4aDCyr0NQp4yVXPQbBH6TCfmb5h
+qAaEuSh6XzjZG6k4sIN/c8HDO0gqgg8hm7jMqDXDhBuDsz6+pJVpATqJAHgE2cn0mRmrVn5bi4Y5
+FZGkECwJMoBgs5PAKrYYC51+jUnyEEp/+dVGLxmSo5mnJqy7jDzmDrxHB9xzUfFwZC8I+bRHHTBs
+ROopN4WSaGa8gzj+ezku01DwH/teYLappvonQfGbGHLy9YR0SslnxFSuSGTfjNFusB3hB48IHpmc
+celM2KX3RxIfdNFRnobzwqIjQAtz20um53MGjMGg6cFZrEb65i/4z3GcRm25xBWNOHkDRUjvxF3X
+CO6HOSKGsg0PWEP3calILv3q1h8CAwEAAaOBrDCBqTAOBgNVHQ8BAf8EBAMCAQYwDwYDVR0TAQH/
+BAUwAwEB/zAdBgNVHQ4EFgQUF6DNweRBtjpbO8tFnb0cwpj6hlgwHwYDVR0jBBgwFoAUF6DNweRB
+tjpbO8tFnb0cwpj6hlgwRgYDVR0gBD8wPTA7BglghXQBWQEDAQEwLjAsBggrBgEFBQcCARYgaHR0
+cDovL3JlcG9zaXRvcnkuc3dpc3NzaWduLmNvbS8wDQYJKoZIhvcNAQEFBQADggIBAHPGgeAn0i0P
+4JUw4ppBf1AsX19iYamGamkYDHRJ1l2E6kFSGG9YrVBWIGrGvShpWJHckRE1qTodvBqlYJ7YH39F
+kWnZfrt4csEGDyrOj4VwYaygzQu4OSlWhDJOhrs9xCrZ1x9y7v5RoSJBsXECYxqCsGKrXlcSH9/L
+3XWgwF15kIwb4FDm3jH+mHtwX6WQ2K34ArZv02DdQEsixT2tOnqfGhpHkXkzuoLcMmkDlm4fS/Bx
+/uNncqCxv1yL5PqZIseEuRuNI5c/7SXgz2W79WEE790eslpBIlqhn10s6FvJbakMDHiqYMZWjwFa
+DGi8aRl5xB9+lwW/xekkUV7U1UtT7dkjWjYDZaPBA61BMPNGG4WQr2W11bHkFlt4dR2Xem1ZqSqP
+e97Dh4kQmUlzeMg9vVE1dCrV8X5pGyq7O70luJpaPXJhkGaH7gzWTdQRdAtq/gsD/KNVV4n+Ssuu
+WxcFyPKNIzFTONItaj+CuY0IavdeQXRuwxF+B6wpYJE/OMpXEA29MC/HpeZBoNquBYeaoKRlbEwJ
+DIm6uNO5wJOKMPqN5ZprFQFOZ6raYlY+hAhm0sQ2fac+EPyI4NSA5QC9qvNOBqN6avlicuMJT+ub
+DgEj8Z+7fNzcbBGXJbLytGMU0gYqZ4yD9c7qB9iaah7s5Aq7KkzrCWA5zspi2C5u
+-----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-----
+
+WellsSecure Public Root Certificate Authority
+=============================================
+-----BEGIN CERTIFICATE-----
+MIIEvTCCA6WgAwIBAgIBATANBgkqhkiG9w0BAQUFADCBhTELMAkGA1UEBhMCVVMxIDAeBgNVBAoM
+F1dlbGxzIEZhcmdvIFdlbGxzU2VjdXJlMRwwGgYDVQQLDBNXZWxscyBGYXJnbyBCYW5rIE5BMTYw
+NAYDVQQDDC1XZWxsc1NlY3VyZSBQdWJsaWMgUm9vdCBDZXJ0aWZpY2F0ZSBBdXRob3JpdHkwHhcN
+MDcxMjEzMTcwNzU0WhcNMjIxMjE0MDAwNzU0WjCBhTELMAkGA1UEBhMCVVMxIDAeBgNVBAoMF1dl
+bGxzIEZhcmdvIFdlbGxzU2VjdXJlMRwwGgYDVQQLDBNXZWxscyBGYXJnbyBCYW5rIE5BMTYwNAYD
+VQQDDC1XZWxsc1NlY3VyZSBQdWJsaWMgUm9vdCBDZXJ0aWZpY2F0ZSBBdXRob3JpdHkwggEiMA0G
+CSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDub7S9eeKPCCGeOARBJe+rWxxTkqxtnt3CxC5FlAM1
+iGd0V+PfjLindo8796jE2yljDpFoNoqXjopxaAkH5OjUDk/41itMpBb570OYj7OeUt9tkTmPOL13
+i0Nj67eT/DBMHAGTthP796EfvyXhdDcsHqRePGj4S78NuR4uNuip5Kf4D8uCdXw1LSLWwr8L87T8
+bJVhHlfXBIEyg1J55oNjz7fLY4sR4r1e6/aN7ZVyKLSsEmLpSjPmgzKuBXWVvYSV2ypcm44uDLiB
+K0HmOFafSZtsdvqKXfcBeYF8wYNABf5x/Qw/zE5gCQ5lRxAvAcAFP4/4s0HvWkJ+We/SlwxlAgMB
+AAGjggE0MIIBMDAPBgNVHRMBAf8EBTADAQH/MDkGA1UdHwQyMDAwLqAsoCqGKGh0dHA6Ly9jcmwu
+cGtpLndlbGxzZmFyZ28uY29tL3dzcHJjYS5jcmwwDgYDVR0PAQH/BAQDAgHGMB0GA1UdDgQWBBQm
+lRkQ2eihl5H/3BnZtQQ+0nMKajCBsgYDVR0jBIGqMIGngBQmlRkQ2eihl5H/3BnZtQQ+0nMKaqGB
+i6SBiDCBhTELMAkGA1UEBhMCVVMxIDAeBgNVBAoMF1dlbGxzIEZhcmdvIFdlbGxzU2VjdXJlMRww
+GgYDVQQLDBNXZWxscyBGYXJnbyBCYW5rIE5BMTYwNAYDVQQDDC1XZWxsc1NlY3VyZSBQdWJsaWMg
+Um9vdCBDZXJ0aWZpY2F0ZSBBdXRob3JpdHmCAQEwDQYJKoZIhvcNAQEFBQADggEBALkVsUSRzCPI
+K0134/iaeycNzXK7mQDKfGYZUMbVmO2rvwNa5U3lHshPcZeG1eMd/ZDJPHV3V3p9+N701NX3leZ0
+bh08rnyd2wIDBSxxSyU+B+NemvVmFymIGjifz6pBA4SXa5M4esowRBskRDPQ5NHcKDj0E0M1NSlj
+qHyita04pO2t/caaH/+Xc/77szWnk4bGdpEA5qxRFsQnMlzbc9qlk1eOPm01JghZ1edE13YgY+es
+E2fDbbFwRnzVlhE9iW9dqKHrjQrawx0zbKPqZxmamX9LPYNRKh3KL4YMon4QLSvUFpULB6ouFJJJ
+tylv2G0xffX8oRAHh84vWdw+WNs=
+-----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-----
+
+IGC/A
+=====
+-----BEGIN CERTIFICATE-----
+MIIEAjCCAuqgAwIBAgIFORFFEJQwDQYJKoZIhvcNAQEFBQAwgYUxCzAJBgNVBAYTAkZSMQ8wDQYD
+VQQIEwZGcmFuY2UxDjAMBgNVBAcTBVBhcmlzMRAwDgYDVQQKEwdQTS9TR0ROMQ4wDAYDVQQLEwVE
+Q1NTSTEOMAwGA1UEAxMFSUdDL0ExIzAhBgkqhkiG9w0BCQEWFGlnY2FAc2dkbi5wbS5nb3V2LmZy
+MB4XDTAyMTIxMzE0MjkyM1oXDTIwMTAxNzE0MjkyMlowgYUxCzAJBgNVBAYTAkZSMQ8wDQYDVQQI
+EwZGcmFuY2UxDjAMBgNVBAcTBVBhcmlzMRAwDgYDVQQKEwdQTS9TR0ROMQ4wDAYDVQQLEwVEQ1NT
+STEOMAwGA1UEAxMFSUdDL0ExIzAhBgkqhkiG9w0BCQEWFGlnY2FAc2dkbi5wbS5nb3V2LmZyMIIB
+IjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAsh/R0GLFMzvABIaIs9z4iPf930Pfeo2aSVz2
+TqrMHLmh6yeJ8kbpO0px1R2OLc/mratjUMdUC24SyZA2xtgv2pGqaMVy/hcKshd+ebUyiHDKcMCW
+So7kVc0dJ5S/znIq7Fz5cyD+vfcuiWe4u0dzEvfRNWk68gq5rv9GQkaiv6GFGvm/5P9JhfejcIYy
+HF2fYPepraX/z9E0+X1bF8bc1g4oa8Ld8fUzaJ1O/Id8NhLWo4DoQw1VYZTqZDdH6nfK0LJYBcNd
+frGoRpAxVs5wKpayMLh35nnAvSk7/ZR3TL0gzUEl4C7HG7vupARB0l2tEmqKm0f7yd1GQOGdPDPQ
+tQIDAQABo3cwdTAPBgNVHRMBAf8EBTADAQH/MAsGA1UdDwQEAwIBRjAVBgNVHSAEDjAMMAoGCCqB
+egF5AQEBMB0GA1UdDgQWBBSjBS8YYFDCiQrdKyFP/45OqDAxNjAfBgNVHSMEGDAWgBSjBS8YYFDC
+iQrdKyFP/45OqDAxNjANBgkqhkiG9w0BAQUFAAOCAQEABdwm2Pp3FURo/C9mOnTgXeQp/wYHE4RK
+q89toB9RlPhJy3Q2FLwV3duJL92PoF189RLrn544pEfMs5bZvpwlqwN+Mw+VgQ39FuCIvjfwbF3Q
+MZsyK10XZZOYYLxuj7GoPB7ZHPOpJkL5ZB3C55L29B5aqhlSXa/oovdgoPaN8In1buAKBQGVyYsg
+Crpa/JosPL3Dt8ldeCUFP1YUmwza+zpI/pdpXsoQhvdOlgQITeywvl3cO45Pwf2aNjSaTFR+FwNI
+lQgRHAdvhQh+XU3Endv7rs6y0bO4g2wdsrN58dhwmX7wEwLOXt1R0982gaEbeC9xs/FZTEYYKKuF
+0mBWWg==
+-----END CERTIFICATE-----
+
+Security Communication EV RootCA1
+=================================
+-----BEGIN CERTIFICATE-----
+MIIDfTCCAmWgAwIBAgIBADANBgkqhkiG9w0BAQUFADBgMQswCQYDVQQGEwJKUDElMCMGA1UEChMc
+U0VDT00gVHJ1c3QgU3lzdGVtcyBDTy4sTFRELjEqMCgGA1UECxMhU2VjdXJpdHkgQ29tbXVuaWNh
+dGlvbiBFViBSb290Q0ExMB4XDTA3MDYwNjAyMTIzMloXDTM3MDYwNjAyMTIzMlowYDELMAkGA1UE
+BhMCSlAxJTAjBgNVBAoTHFNFQ09NIFRydXN0IFN5c3RlbXMgQ08uLExURC4xKjAoBgNVBAsTIVNl
+Y3VyaXR5IENvbW11bmljYXRpb24gRVYgUm9vdENBMTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCC
+AQoCggEBALx/7FebJOD+nLpCeamIivqA4PUHKUPqjgo0No0c+qe1OXj/l3X3L+SqawSERMqm4miO
+/VVQYg+kcQ7OBzgtQoVQrTyWb4vVog7P3kmJPdZkLjjlHmy1V4qe70gOzXppFodEtZDkBp2uoQSX
+WHnvIEqCa4wiv+wfD+mEce3xDuS4GBPMVjZd0ZoeUWs5bmB2iDQL87PRsJ3KYeJkHcFGB7hj3R4z
+ZbOOCVVSPbW9/wfrrWFVGCypaZhKqkDFMxRldAD5kd6vA0jFQFTcD4SQaCDFkpbcLuUCRarAX1T4
+bepJz11sS6/vmsJWXMY1VkJqMF/Cq/biPT+zyRGPMUzXn0kCAwEAAaNCMEAwHQYDVR0OBBYEFDVK
+9U2vP9eCOKyrcWUXdYydVZPmMA4GA1UdDwEB/wQEAwIBBjAPBgNVHRMBAf8EBTADAQH/MA0GCSqG
+SIb3DQEBBQUAA4IBAQCoh+ns+EBnXcPBZsdAS5f8hxOQWsTvoMpfi7ent/HWtWS3irO4G8za+6xm
+iEHO6Pzk2x6Ipu0nUBsCMCRGef4Eh3CXQHPRwMFXGZpppSeZq51ihPZRwSzJIxXYKLerJRO1RuGG
+Av8mjMSIkh1W/hln8lXkgKNrnKt34VFxDSDbEJrbvXZ5B3eZKK2aXtqxT0QsNY6llsf9g/BYxnnW
+mHyojf6GPgcWkuF75x3sM3Z+Qi5KhfmRiWiEA4Glm5q+4zfFVKtWOxgtQaQM+ELbmaDgcm+7XeEW
+T1MKZPlO9L9OVL14bIjqv5wTJMJwaaJ/D8g8rQjJsJhAoyrniIPtd490
+-----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-----
+
+Microsec e-Szigno Root CA
+=========================
+-----BEGIN CERTIFICATE-----
+MIIHqDCCBpCgAwIBAgIRAMy4579OKRr9otxmpRwsDxEwDQYJKoZIhvcNAQEFBQAwcjELMAkGA1UE
+BhMCSFUxETAPBgNVBAcTCEJ1ZGFwZXN0MRYwFAYDVQQKEw1NaWNyb3NlYyBMdGQuMRQwEgYDVQQL
+EwtlLVN6aWdubyBDQTEiMCAGA1UEAxMZTWljcm9zZWMgZS1Temlnbm8gUm9vdCBDQTAeFw0wNTA0
+MDYxMjI4NDRaFw0xNzA0MDYxMjI4NDRaMHIxCzAJBgNVBAYTAkhVMREwDwYDVQQHEwhCdWRhcGVz
+dDEWMBQGA1UEChMNTWljcm9zZWMgTHRkLjEUMBIGA1UECxMLZS1Temlnbm8gQ0ExIjAgBgNVBAMT
+GU1pY3Jvc2VjIGUtU3ppZ25vIFJvb3QgQ0EwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIB
+AQDtyADVgXvNOABHzNuEwSFpLHSQDCHZU4ftPkNEU6+r+ICbPHiN1I2uuO/TEdyB5s87lozWbxXG
+d36hL+BfkrYn13aaHUM86tnsL+4582pnS4uCzyL4ZVX+LMsvfUh6PXX5qqAnu3jCBspRwn5mS6/N
+oqdNAoI/gqyFxuEPkEeZlApxcpMqyabAvjxWTHOSJ/FrtfX9/DAFYJLG65Z+AZHCabEeHXtTRbjc
+QR/Ji3HWVBTji1R4P770Yjtb9aPs1ZJ04nQw7wHb4dSrmZsqa/i9phyGI0Jf7Enemotb9HI6QMVJ
+PqW+jqpx62z69Rrkav17fVVA71hu5tnVvCSrwe+3AgMBAAGjggQ3MIIEMzBnBggrBgEFBQcBAQRb
+MFkwKAYIKwYBBQUHMAGGHGh0dHBzOi8vcmNhLmUtc3ppZ25vLmh1L29jc3AwLQYIKwYBBQUHMAKG
+IWh0dHA6Ly93d3cuZS1zemlnbm8uaHUvUm9vdENBLmNydDAPBgNVHRMBAf8EBTADAQH/MIIBcwYD
+VR0gBIIBajCCAWYwggFiBgwrBgEEAYGoGAIBAQEwggFQMCgGCCsGAQUFBwIBFhxodHRwOi8vd3d3
+LmUtc3ppZ25vLmh1L1NaU1ovMIIBIgYIKwYBBQUHAgIwggEUHoIBEABBACAAdABhAG4A+gBzAO0A
+dAB2AOEAbgB5ACAA6QByAHQAZQBsAG0AZQB6AOkAcwDpAGgAZQB6ACAA6QBzACAAZQBsAGYAbwBn
+AGEAZADhAHMA4QBoAG8AegAgAGEAIABTAHoAbwBsAGcA4QBsAHQAYQB0APMAIABTAHoAbwBsAGcA
+4QBsAHQAYQB0AOEAcwBpACAAUwB6AGEAYgDhAGwAeQB6AGEAdABhACAAcwB6AGUAcgBpAG4AdAAg
+AGsAZQBsAGwAIABlAGwAagDhAHIAbgBpADoAIABoAHQAdABwADoALwAvAHcAdwB3AC4AZQAtAHMA
+egBpAGcAbgBvAC4AaAB1AC8AUwBaAFMAWgAvMIHIBgNVHR8EgcAwgb0wgbqggbeggbSGIWh0dHA6
+Ly93d3cuZS1zemlnbm8uaHUvUm9vdENBLmNybIaBjmxkYXA6Ly9sZGFwLmUtc3ppZ25vLmh1L0NO
+PU1pY3Jvc2VjJTIwZS1Temlnbm8lMjBSb290JTIwQ0EsT1U9ZS1Temlnbm8lMjBDQSxPPU1pY3Jv
+c2VjJTIwTHRkLixMPUJ1ZGFwZXN0LEM9SFU/Y2VydGlmaWNhdGVSZXZvY2F0aW9uTGlzdDtiaW5h
+cnkwDgYDVR0PAQH/BAQDAgEGMIGWBgNVHREEgY4wgYuBEGluZm9AZS1zemlnbm8uaHWkdzB1MSMw
+IQYDVQQDDBpNaWNyb3NlYyBlLVN6aWduw7MgUm9vdCBDQTEWMBQGA1UECwwNZS1TemlnbsOzIEhT
+WjEWMBQGA1UEChMNTWljcm9zZWMgS2Z0LjERMA8GA1UEBxMIQnVkYXBlc3QxCzAJBgNVBAYTAkhV
+MIGsBgNVHSMEgaQwgaGAFMegSXUWYYTbMUuE0vE3QJDvTtz3oXakdDByMQswCQYDVQQGEwJIVTER
+MA8GA1UEBxMIQnVkYXBlc3QxFjAUBgNVBAoTDU1pY3Jvc2VjIEx0ZC4xFDASBgNVBAsTC2UtU3pp
+Z25vIENBMSIwIAYDVQQDExlNaWNyb3NlYyBlLVN6aWdubyBSb290IENBghEAzLjnv04pGv2i3Gal
+HCwPETAdBgNVHQ4EFgQUx6BJdRZhhNsxS4TS8TdAkO9O3PcwDQYJKoZIhvcNAQEFBQADggEBANMT
+nGZjWS7KXHAM/IO8VbH0jgdsZifOwTsgqRy7RlRw7lrMoHfqaEQn6/Ip3Xep1fvj1KcExJW4C+FE
+aGAHQzAxQmHl7tnlJNUb3+FKG6qfx1/4ehHqE5MAyopYse7tDk2016g2JnzgOsHVV4Lxdbb9iV/a
+86g4nzUGCM4ilb7N1fy+W955a9x6qWVmvrElWl/tftOsRm1M9DKHtCAE4Gx4sHfRhUZLphK3dehK
+yVZs15KrnfVJONJPU+NVkBHbmJbGSfI+9J8b4PeI3CVimUTYc78/MPMMNz7UwiiAc7EBt51alhQB
+S6kRnSlqLtBdgcDPsiBDxwPgN05dCtxZICU=
+-----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-----
+
+TC TrustCenter Class 2 CA II
+============================
+-----BEGIN CERTIFICATE-----
+MIIEqjCCA5KgAwIBAgIOLmoAAQACH9dSISwRXDswDQYJKoZIhvcNAQEFBQAwdjELMAkGA1UEBhMC
+REUxHDAaBgNVBAoTE1RDIFRydXN0Q2VudGVyIEdtYkgxIjAgBgNVBAsTGVRDIFRydXN0Q2VudGVy
+IENsYXNzIDIgQ0ExJTAjBgNVBAMTHFRDIFRydXN0Q2VudGVyIENsYXNzIDIgQ0EgSUkwHhcNMDYw
+MTEyMTQzODQzWhcNMjUxMjMxMjI1OTU5WjB2MQswCQYDVQQGEwJERTEcMBoGA1UEChMTVEMgVHJ1
+c3RDZW50ZXIgR21iSDEiMCAGA1UECxMZVEMgVHJ1c3RDZW50ZXIgQ2xhc3MgMiBDQTElMCMGA1UE
+AxMcVEMgVHJ1c3RDZW50ZXIgQ2xhc3MgMiBDQSBJSTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCC
+AQoCggEBAKuAh5uO8MN8h9foJIIRszzdQ2Lu+MNF2ujhoF/RKrLqk2jftMjWQ+nEdVl//OEd+DFw
+IxuInie5e/060smp6RQvkL4DUsFJzfb95AhmC1eKokKguNV/aVyQMrKXDcpK3EY+AlWJU+MaWss2
+xgdW94zPEfRMuzBwBJWl9jmM/XOBCH2JXjIeIqkiRUuwZi4wzJ9l/fzLganx4Duvo4bRierERXlQ
+Xa7pIXSSTYtZgo+U4+lK8edJsBTj9WLL1XK9H7nSn6DNqPoByNkN39r8R52zyFTfSUrxIan+GE7u
+SNQZu+995OKdy1u2bv/jzVrndIIFuoAlOMvkaZ6vQaoahPUCAwEAAaOCATQwggEwMA8GA1UdEwEB
+/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgEGMB0GA1UdDgQWBBTjq1RMgKHbVkO3kUrL84J6E1wIqzCB
+7QYDVR0fBIHlMIHiMIHfoIHcoIHZhjVodHRwOi8vd3d3LnRydXN0Y2VudGVyLmRlL2NybC92Mi90
+Y19jbGFzc18yX2NhX0lJLmNybIaBn2xkYXA6Ly93d3cudHJ1c3RjZW50ZXIuZGUvQ049VEMlMjBU
+cnVzdENlbnRlciUyMENsYXNzJTIwMiUyMENBJTIwSUksTz1UQyUyMFRydXN0Q2VudGVyJTIwR21i
+SCxPVT1yb290Y2VydHMsREM9dHJ1c3RjZW50ZXIsREM9ZGU/Y2VydGlmaWNhdGVSZXZvY2F0aW9u
+TGlzdD9iYXNlPzANBgkqhkiG9w0BAQUFAAOCAQEAjNfffu4bgBCzg/XbEeprS6iSGNn3Bzn1LL4G
+dXpoUxUc6krtXvwjshOg0wn/9vYua0Fxec3ibf2uWWuFHbhOIprtZjluS5TmVfwLG4t3wVMTZonZ
+KNaL80VKY7f9ewthXbhtvsPcW3nS7Yblok2+XnR8au0WOB9/WIFaGusyiC2y8zl3gK9etmF1Kdsj
+TYjKUCjLhdLTEKJZbtOTVAB6okaVhgWcqRmY5TFyDADiZ9lA4CQze28suVyrZZ0srHbqNZn1l7kP
+JOzHdiEoZa5X6AeIdUpWoNIFOqTmjZKILPPy4cHGYdtBxceb9w4aUUXCYWvcZCcXjFq32nQozZfk
+vQ==
+-----END CERTIFICATE-----
+
+TC TrustCenter Class 3 CA II
+============================
+-----BEGIN CERTIFICATE-----
+MIIEqjCCA5KgAwIBAgIOSkcAAQAC5aBd1j8AUb8wDQYJKoZIhvcNAQEFBQAwdjELMAkGA1UEBhMC
+REUxHDAaBgNVBAoTE1RDIFRydXN0Q2VudGVyIEdtYkgxIjAgBgNVBAsTGVRDIFRydXN0Q2VudGVy
+IENsYXNzIDMgQ0ExJTAjBgNVBAMTHFRDIFRydXN0Q2VudGVyIENsYXNzIDMgQ0EgSUkwHhcNMDYw
+MTEyMTQ0MTU3WhcNMjUxMjMxMjI1OTU5WjB2MQswCQYDVQQGEwJERTEcMBoGA1UEChMTVEMgVHJ1
+c3RDZW50ZXIgR21iSDEiMCAGA1UECxMZVEMgVHJ1c3RDZW50ZXIgQ2xhc3MgMyBDQTElMCMGA1UE
+AxMcVEMgVHJ1c3RDZW50ZXIgQ2xhc3MgMyBDQSBJSTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCC
+AQoCggEBALTgu1G7OVyLBMVMeRwjhjEQY0NVJz/GRcekPewJDRoeIMJWHt4bNwcwIi9v8Qbxq63W
+yKthoy9DxLCyLfzDlml7forkzMA5EpBCYMnMNWju2l+QVl/NHE1bWEnrDgFPZPosPIlY2C8u4rBo
+6SI7dYnWRBpl8huXJh0obazovVkdKyT21oQDZogkAHhg8fir/gKya/si+zXmFtGt9i4S5Po1auUZ
+uV3bOx4a+9P/FRQI2AlqukWdFHlgfa9Aigdzs5OW03Q0jTo3Kd5c7PXuLjHCINy+8U9/I1LZW+Jk
+2ZyqBwi1Rb3R0DHBq1SfqdLDYmAD8bs5SpJKPQq5ncWg/jcCAwEAAaOCATQwggEwMA8GA1UdEwEB
+/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgEGMB0GA1UdDgQWBBTUovyfs8PYA9NXXAek0CSnwPIA1DCB
+7QYDVR0fBIHlMIHiMIHfoIHcoIHZhjVodHRwOi8vd3d3LnRydXN0Y2VudGVyLmRlL2NybC92Mi90
+Y19jbGFzc18zX2NhX0lJLmNybIaBn2xkYXA6Ly93d3cudHJ1c3RjZW50ZXIuZGUvQ049VEMlMjBU
+cnVzdENlbnRlciUyMENsYXNzJTIwMyUyMENBJTIwSUksTz1UQyUyMFRydXN0Q2VudGVyJTIwR21i
+SCxPVT1yb290Y2VydHMsREM9dHJ1c3RjZW50ZXIsREM9ZGU/Y2VydGlmaWNhdGVSZXZvY2F0aW9u
+TGlzdD9iYXNlPzANBgkqhkiG9w0BAQUFAAOCAQEANmDkcPcGIEPZIxpC8vijsrlNirTzwppVMXzE
+O2eatN9NDoqTSheLG43KieHPOh6sHfGcMrSOWXaiQYUlN6AT0PV8TtXqluJucsG7Kv5sbviRmEb8
+yRtXW+rIGjs/sFGYPAfaLFkB2otE6OF0/ado3VS6g0bsyEa1+K+XwDsJHI/OcpY9M1ZwvJbL2NV9
+IJqDnxrcOfHFcqMRA/07QlIp2+gB95tejNaNhk4Z+rwcvsUhpYeeeC422wlxo3I0+GzjBgnyXlal
+092Y+tTmBvTwtiBjS+opvaqCZh77gaqnN60TGOaSw4HBM7uIHqHn4rS9MWwOUT1v+5ZWgOI2F9Hc
+5A==
+-----END CERTIFICATE-----
+
+TC TrustCenter Universal CA I
+=============================
+-----BEGIN CERTIFICATE-----
+MIID3TCCAsWgAwIBAgIOHaIAAQAC7LdggHiNtgYwDQYJKoZIhvcNAQEFBQAweTELMAkGA1UEBhMC
+REUxHDAaBgNVBAoTE1RDIFRydXN0Q2VudGVyIEdtYkgxJDAiBgNVBAsTG1RDIFRydXN0Q2VudGVy
+IFVuaXZlcnNhbCBDQTEmMCQGA1UEAxMdVEMgVHJ1c3RDZW50ZXIgVW5pdmVyc2FsIENBIEkwHhcN
+MDYwMzIyMTU1NDI4WhcNMjUxMjMxMjI1OTU5WjB5MQswCQYDVQQGEwJERTEcMBoGA1UEChMTVEMg
+VHJ1c3RDZW50ZXIgR21iSDEkMCIGA1UECxMbVEMgVHJ1c3RDZW50ZXIgVW5pdmVyc2FsIENBMSYw
+JAYDVQQDEx1UQyBUcnVzdENlbnRlciBVbml2ZXJzYWwgQ0EgSTCCASIwDQYJKoZIhvcNAQEBBQAD
+ggEPADCCAQoCggEBAKR3I5ZEr5D0MacQ9CaHnPM42Q9e3s9B6DGtxnSRJJZ4Hgmgm5qVSkr1YnwC
+qMqs+1oEdjneX/H5s7/zA1hV0qq34wQi0fiU2iIIAI3TfCZdzHd55yx4Oagmcw6iXSVphU9VDprv
+xrlE4Vc93x9UIuVvZaozhDrzznq+VZeujRIPFDPiUHDDSYcTvFHe15gSWu86gzOSBnWLknwSaHtw
+ag+1m7Z3W0hZneTvWq3zwZ7U10VOylY0Ibw+F1tvdwxIAUMpsN0/lm7mlaoMwCC2/T42J5zjXM9O
+gdwZu5GQfezmlwQek8wiSdeXhrYTCjxDI3d+8NzmzSQfO4ObNDqDNOMCAwEAAaNjMGEwHwYDVR0j
+BBgwFoAUkqR1LKSevoFE63n8isWVpesQdXMwDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMC
+AYYwHQYDVR0OBBYEFJKkdSyknr6BROt5/IrFlaXrEHVzMA0GCSqGSIb3DQEBBQUAA4IBAQAo0uCG
+1eb4e/CX3CJrO5UUVg8RMKWaTzqwOuAGy2X17caXJ/4l8lfmXpWMPmRgFVp/Lw0BxbFg/UU1z/Cy
+vwbZ71q+s2IhtNerNXxTPqYn8aEt2hojnczd7Dwtnic0XQ/CNnm8yUpiLe1r2X1BQ3y2qsrtYbE3
+ghUJGooWMNjsydZHcnhLEEYUjl8Or+zHL6sQ17bxbuyGssLoDZJz3KL0Dzq/YSMQiZxIQG5wALPT
+ujdEWBF6AmqI8Dc08BnprNRlc/ZpjGSUOnmFKbAWKwyCPwacx/0QK54PLLae4xW/2TYcuiUaUj0a
+7CIMHOCkoj3w6DnPgcB77V0fb8XQC9eY
+-----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-----
+
+ComSign Secured CA
+==================
+-----BEGIN CERTIFICATE-----
+MIIDqzCCApOgAwIBAgIRAMcoRwmzuGxFjB36JPU2TukwDQYJKoZIhvcNAQEFBQAwPDEbMBkGA1UE
+AxMSQ29tU2lnbiBTZWN1cmVkIENBMRAwDgYDVQQKEwdDb21TaWduMQswCQYDVQQGEwJJTDAeFw0w
+NDAzMjQxMTM3MjBaFw0yOTAzMTYxNTA0NTZaMDwxGzAZBgNVBAMTEkNvbVNpZ24gU2VjdXJlZCBD
+QTEQMA4GA1UEChMHQ29tU2lnbjELMAkGA1UEBhMCSUwwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAw
+ggEKAoIBAQDGtWhfHZQVw6QIVS3joFd67+l0Kru5fFdJGhFeTymHDEjWaueP1H5XJLkGieQcPOqs
+49ohgHMhCu95mGwfCP+hUH3ymBvJVG8+pSjsIQQPRbsHPaHA+iqYHU4Gk/v1iDurX8sWv+bznkqH
+7Rnqwp9D5PGBpX8QTz7RSmKtUxvLg/8HZaWSLWapW7ha9B20IZFKF3ueMv5WJDmyVIRD9YTC2LxB
+kMyd1mja6YJQqTtoz7VdApRgFrFD2UNd3V2Hbuq7s8lr9gOUCXDeFhF6K+h2j0kQmHe5Y1yLM5d1
+9guMsqtb3nQgJT/j8xH5h2iGNXHDHYwt6+UarA9z1YJZQIDTAgMBAAGjgacwgaQwDAYDVR0TBAUw
+AwEB/zBEBgNVHR8EPTA7MDmgN6A1hjNodHRwOi8vZmVkaXIuY29tc2lnbi5jby5pbC9jcmwvQ29t
+U2lnblNlY3VyZWRDQS5jcmwwDgYDVR0PAQH/BAQDAgGGMB8GA1UdIwQYMBaAFMFL7XC29z58ADsA
+j8c+DkWfHl3sMB0GA1UdDgQWBBTBS+1wtvc+fAA7AI/HPg5Fnx5d7DANBgkqhkiG9w0BAQUFAAOC
+AQEAFs/ukhNQq3sUnjO2QiBq1BW9Cav8cujvR3qQrFHBZE7piL1DRYHjZiM/EoZNGeQFsOY3wo3a
+BijJD4mkU6l1P7CW+6tMM1X5eCZGbxs2mPtCdsGCuY7e+0X5YxtiOzkGynd6qDwJz2w2PQ8KRUtp
+FhpFfTMDZflScZAmlaxMDPWLkz/MdXSFmLr/YnpNH4n+rr2UAJm/EaXc4HnFFgt9AmEd6oX5AhVP
+51qJThRv4zdLhfXBPGHg/QVBspJ/wx2g0K5SZGBrGMYmnNj1ZOQ2GmKfig8+/21OGVZOIJFsnzQz
+OjRXUDpvgV4GxvU+fE6OK85lBi5d0ipTdF7Tbieejw==
+-----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-----
+
+T\xc3\x9c\x42\xC4\xB0TAK UEKAE K\xC3\xB6k Sertifika Hizmet Sa\xC4\x9Flay\xc4\xb1\x63\xc4\xb1s\xc4\xb1 - S\xC3\xBCr\xC3\xBCm 3
+=============================================================================================================================
+-----BEGIN CERTIFICATE-----
+MIIFFzCCA/+gAwIBAgIBETANBgkqhkiG9w0BAQUFADCCASsxCzAJBgNVBAYTAlRSMRgwFgYDVQQH
+DA9HZWJ6ZSAtIEtvY2FlbGkxRzBFBgNVBAoMPlTDvHJraXllIEJpbGltc2VsIHZlIFRla25vbG9q
+aWsgQXJhxZ90xLFybWEgS3VydW11IC0gVMOcQsSwVEFLMUgwRgYDVQQLDD9VbHVzYWwgRWxla3Ry
+b25payB2ZSBLcmlwdG9sb2ppIEFyYcWfdMSxcm1hIEVuc3RpdMO8c8O8IC0gVUVLQUUxIzAhBgNV
+BAsMGkthbXUgU2VydGlmaWthc3lvbiBNZXJrZXppMUowSAYDVQQDDEFUw5xCxLBUQUsgVUVLQUUg
+S8O2ayBTZXJ0aWZpa2EgSGl6bWV0IFNhxJ9sYXnEsWPEsXPEsSAtIFPDvHLDvG0gMzAeFw0wNzA4
+MjQxMTM3MDdaFw0xNzA4MjExMTM3MDdaMIIBKzELMAkGA1UEBhMCVFIxGDAWBgNVBAcMD0dlYnpl
+IC0gS29jYWVsaTFHMEUGA1UECgw+VMO8cmtpeWUgQmlsaW1zZWwgdmUgVGVrbm9sb2ppayBBcmHF
+n3TEsXJtYSBLdXJ1bXUgLSBUw5xCxLBUQUsxSDBGBgNVBAsMP1VsdXNhbCBFbGVrdHJvbmlrIHZl
+IEtyaXB0b2xvamkgQXJhxZ90xLFybWEgRW5zdGl0w7xzw7wgLSBVRUtBRTEjMCEGA1UECwwaS2Ft
+dSBTZXJ0aWZpa2FzeW9uIE1lcmtlemkxSjBIBgNVBAMMQVTDnELEsFRBSyBVRUtBRSBLw7ZrIFNl
+cnRpZmlrYSBIaXptZXQgU2HEn2xhecSxY8Sxc8SxIC0gU8O8csO8bSAzMIIBIjANBgkqhkiG9w0B
+AQEFAAOCAQ8AMIIBCgKCAQEAim1L/xCIOsP2fpTo6iBkcK4hgb46ezzb8R1Sf1n68yJMlaCQvEhO
+Eav7t7WNeoMojCZG2E6VQIdhn8WebYGHV2yKO7Rm6sxA/OOqbLLLAdsyv9Lrhc+hDVXDWzhXcLh1
+xnnRFDDtG1hba+818qEhTsXOfJlfbLm4IpNQp81McGq+agV/E5wrHur+R84EpW+sky58K5+eeROR
+6Oqeyjh1jmKwlZMq5d/pXpduIF9fhHpEORlAHLpVK/swsoHvhOPc7Jg4OQOFCKlUAwUp8MmPi+oL
+hmUZEdPpCSPeaJMDyTYcIW7OjGbxmTDY17PDHfiBLqi9ggtm/oLL4eAagsNAgQIDAQABo0IwQDAd
+BgNVHQ4EFgQUvYiHyY/2pAoLquvF/pEjnatKijIwDgYDVR0PAQH/BAQDAgEGMA8GA1UdEwEB/wQF
+MAMBAf8wDQYJKoZIhvcNAQEFBQADggEBAB18+kmPNOm3JpIWmgV050vQbTlswyb2zrgxvMTfvCr4
+N5EY3ATIZJkrGG2AA1nJrvhY0D7twyOfaTyGOBye79oneNGEN3GKPEs5z35FBtYt2IpNeBLWrcLT
+y9LQQfMmNkqblWwM7uXRQydmwYj3erMgbOqwaSvHIOgMA8RBBZniP+Rr+KCGgceExh/VS4ESshYh
+LBOhgLJeDEoTniDYYkCrkOpkSi+sDQESeUWoL4cZaMjihccwsnX5OD+ywJO0a+IDRM5noN+J1q2M
+dqMTw5RhK2vZbMEHCiIHhWyFJEapvj+LeISCfiQMnf2BN+MlqO02TpUsyZyQ2uypQjyttgI=
+-----END CERTIFICATE-----
+
+Buypass Class 2 CA 1
+====================
+-----BEGIN CERTIFICATE-----
+MIIDUzCCAjugAwIBAgIBATANBgkqhkiG9w0BAQUFADBLMQswCQYDVQQGEwJOTzEdMBsGA1UECgwU
+QnV5cGFzcyBBUy05ODMxNjMzMjcxHTAbBgNVBAMMFEJ1eXBhc3MgQ2xhc3MgMiBDQSAxMB4XDTA2
+MTAxMzEwMjUwOVoXDTE2MTAxMzEwMjUwOVowSzELMAkGA1UEBhMCTk8xHTAbBgNVBAoMFEJ1eXBh
+c3MgQVMtOTgzMTYzMzI3MR0wGwYDVQQDDBRCdXlwYXNzIENsYXNzIDIgQ0EgMTCCASIwDQYJKoZI
+hvcNAQEBBQADggEPADCCAQoCggEBAIs8B0XY9t/mx8q6jUPFR42wWsE425KEHK8T1A9vNkYgxC7M
+cXA0ojTTNy7Y3Tp3L8DrKehc0rWpkTSHIln+zNvnma+WwajHQN2lFYxuyHyXA8vmIPLXl18xoS83
+0r7uvqmtqEyeIWZDO6i88wmjONVZJMHCR3axiFyCO7srpgTXjAePzdVBHfCuuCkslFJgNJQ72uA4
+0Z0zPhX0kzLFANq1KWYOOngPIVJfAuWSeyXTkh4vFZ2B5J2O6O+JzhRMVB0cgRJNcKi+EAUXfh/R
+uFdV7c27UsKwHnjCTTZoy1YmwVLBvXb3WNVyfh9EdrsAiR0WnVE1703CVu9r4Iw7DekCAwEAAaNC
+MEAwDwYDVR0TAQH/BAUwAwEB/zAdBgNVHQ4EFgQUP42aWYv8e3uco684sDntkHGA1sgwDgYDVR0P
+AQH/BAQDAgEGMA0GCSqGSIb3DQEBBQUAA4IBAQAVGn4TirnoB6NLJzKyQJHyIdFkhb5jatLPgcIV
+1Xp+DCmsNx4cfHZSldq1fyOhKXdlyTKdqC5Wq2B2zha0jX94wNWZUYN/Xtm+DKhQ7SLHrQVMdvvt
+7h5HZPb3J31cKA9FxVxiXqaakZG3Uxcu3K1gnZZkOb1naLKuBctN518fV4bVIJwo+28TOPX2EZL2
+fZleHwzoq0QkKXJAPTZSr4xYkHPB7GEseaHsh7U/2k3ZIQAw3pDaDtMaSKk+hQsUi4y8QZ5q9w5w
+wDX3OaJdZtB7WZ+oRxKaJyOkLY4ng5IgodcVf/EuGO70SH8vf/GhGLWhC5SgYiAynB321O+/TIho
+-----END CERTIFICATE-----
+
+Buypass Class 3 CA 1
+====================
+-----BEGIN CERTIFICATE-----
+MIIDUzCCAjugAwIBAgIBAjANBgkqhkiG9w0BAQUFADBLMQswCQYDVQQGEwJOTzEdMBsGA1UECgwU
+QnV5cGFzcyBBUy05ODMxNjMzMjcxHTAbBgNVBAMMFEJ1eXBhc3MgQ2xhc3MgMyBDQSAxMB4XDTA1
+MDUwOTE0MTMwM1oXDTE1MDUwOTE0MTMwM1owSzELMAkGA1UEBhMCTk8xHTAbBgNVBAoMFEJ1eXBh
+c3MgQVMtOTgzMTYzMzI3MR0wGwYDVQQDDBRCdXlwYXNzIENsYXNzIDMgQ0EgMTCCASIwDQYJKoZI
+hvcNAQEBBQADggEPADCCAQoCggEBAKSO13TZKWTeXx+HgJHqTjnmGcZEC4DVC69TB4sSveZn8AKx
+ifZgisRbsELRwCGoy+Gb72RRtqfPFfV0gGgEkKBYouZ0plNTVUhjP5JW3SROjvi6K//zNIqeKNc0
+n6wv1g/xpC+9UrJJhW05NfBEMJNGJPO251P7vGGvqaMU+8IXF4Rs4HyI+MkcVyzwPX6UvCWThOia
+AJpFBUJXgPROztmuOfbIUxAMZTpHe2DC1vqRycZxbL2RhzyRhkmr8w+gbCZ2Xhysm3HljbybIR6c
+1jh+JIAVMYKWsUnTYjdbiAwKYjT+p0h+mbEwi5A3lRyoH6UsjfRVyNvdWQrCrXig9IsCAwEAAaNC
+MEAwDwYDVR0TAQH/BAUwAwEB/zAdBgNVHQ4EFgQUOBTmyPCppAP0Tj4io1vy1uCtQHQwDgYDVR0P
+AQH/BAQDAgEGMA0GCSqGSIb3DQEBBQUAA4IBAQABZ6OMySU9E2NdFm/soT4JXJEVKirZgCFPBdy7
+pYmrEzMqnji3jG8CcmPHc3ceCQa6Oyh7pEfJYWsICCD8igWKH7y6xsL+z27sEzNxZy5p+qksP2bA
+EllNC1QCkoS72xLvg3BweMhT+t/Gxv/ciC8HwEmdMldg0/L2mSlf56oBzKwzqBwKu5HEA6BvtjT5
+htOzdlSY9EqBs1OdTUDs5XcTRa9bqh/YL0yCe/4qxFi7T/ye/QNlGioOw6UgFpRreaaiErS7GqQj
+el/wroQk5PMr+4okoyeYZdowdXb8GZHo2+ubPzK/QJcHJrrM85SFSnonk8+QQtS4Wxam58tAA915
+-----END CERTIFICATE-----
+
+EBG Elektronik Sertifika Hizmet Sa\xC4\x9Flay\xc4\xb1\x63\xc4\xb1s\xc4\xb1
+==========================================================================
+-----BEGIN CERTIFICATE-----
+MIIF5zCCA8+gAwIBAgIITK9zQhyOdAIwDQYJKoZIhvcNAQEFBQAwgYAxODA2BgNVBAMML0VCRyBF
+bGVrdHJvbmlrIFNlcnRpZmlrYSBIaXptZXQgU2HEn2xhecSxY8Sxc8SxMTcwNQYDVQQKDC5FQkcg
+QmlsacWfaW0gVGVrbm9sb2ppbGVyaSB2ZSBIaXptZXRsZXJpIEEuxZ4uMQswCQYDVQQGEwJUUjAe
+Fw0wNjA4MTcwMDIxMDlaFw0xNjA4MTQwMDMxMDlaMIGAMTgwNgYDVQQDDC9FQkcgRWxla3Ryb25p
+ayBTZXJ0aWZpa2EgSGl6bWV0IFNhxJ9sYXnEsWPEsXPEsTE3MDUGA1UECgwuRUJHIEJpbGnFn2lt
+IFRla25vbG9qaWxlcmkgdmUgSGl6bWV0bGVyaSBBLsWeLjELMAkGA1UEBhMCVFIwggIiMA0GCSqG
+SIb3DQEBAQUAA4ICDwAwggIKAoICAQDuoIRh0DpqZhAy2DE4f6en5f2h4fuXd7hxlugTlkaDT7by
+X3JWbhNgpQGR4lvFzVcfd2NR/y8927k/qqk153nQ9dAktiHq6yOU/im/+4mRDGSaBUorzAzu8T2b
+gmmkTPiab+ci2hC6X5L8GCcKqKpE+i4stPtGmggDg3KriORqcsnlZR9uKg+ds+g75AxuetpX/dfr
+eYteIAbTdgtsApWjluTLdlHRKJ2hGvxEok3MenaoDT2/F08iiFD9rrbskFBKW5+VQarKD7JK/oCZ
+TqNGFav4c0JqwmZ2sQomFd2TkuzbqV9UIlKRcF0T6kjsbgNs2d1s/OsNA/+mgxKb8amTD8UmTDGy
+Y5lhcucqZJnSuOl14nypqZoaqsNW2xCaPINStnuWt6yHd6i58mcLlEOzrz5z+kI2sSXFCjEmN1Zn
+uqMLfdb3ic1nobc6HmZP9qBVFCVMLDMNpkGMvQQxahByCp0OLna9XvNRiYuoP1Vzv9s6xiQFlpJI
+qkuNKgPlV5EQ9GooFW5Hd4RcUXSfGenmHmMWOeMRFeNYGkS9y8RsZteEBt8w9DeiQyJ50hBs37vm
+ExH8nYQKE3vwO9D8owrXieqWfo1IhR5kX9tUoqzVegJ5a9KK8GfaZXINFHDk6Y54jzJ0fFfy1tb0
+Nokb+Clsi7n2l9GkLqq+CxnCRelwXQIDAJ3Zo2MwYTAPBgNVHRMBAf8EBTADAQH/MA4GA1UdDwEB
+/wQEAwIBBjAdBgNVHQ4EFgQU587GT/wWZ5b6SqMHwQSny2re2kcwHwYDVR0jBBgwFoAU587GT/wW
+Z5b6SqMHwQSny2re2kcwDQYJKoZIhvcNAQEFBQADggIBAJuYml2+8ygjdsZs93/mQJ7ANtyVDR2t
+FcU22NU57/IeIl6zgrRdu0waypIN30ckHrMk2pGI6YNw3ZPX6bqz3xZaPt7gyPvT/Wwp+BVGoGgm
+zJNSroIBk5DKd8pNSe/iWtkqvTDOTLKBtjDOWU/aWR1qeqRFsIImgYZ29fUQALjuswnoT4cCB64k
+XPBfrAowzIpAoHMEwfuJJPaaHFy3PApnNgUIMbOv2AFoKuB4j3TeuFGkjGwgPaL7s9QJ/XvCgKqT
+bCmYIai7FvOpEl90tYeY8pUm3zTvilORiF0alKM/fCL414i6poyWqD1SNGKfAB5UVUJnxk1Gj7sU
+RT0KlhaOEKGXmdXTMIXM3rRyt7yKPBgpaP3ccQfuJDlq+u2lrDgv+R4QDgZxGhBM/nV+/x5XOULK
+1+EVoVZVWRvRo68R2E7DpSvvkL/A7IITW43WciyTTo9qKd+FPNMN4KIYEsxVL0e3p5sC/kH2iExt
+2qkBR4NkJ2IQgtYSe14DHzSpyZH+r11thie3I6p1GMog57AP14kOpmciY/SDQSsGS7tY1dHXt7kQ
+Y9iJSrSq3RZj9W6+YKH47ejWkE8axsWgKdOnIaj1Wjz3x0miIZpKlVIglnKaZsv30oZDfCK+lvm9
+AahH3eU7QPl1K5srRmSGjR70j/sHd9DqSaIcjVIUpgqT
+-----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-----
+
+CNNIC ROOT
+==========
+-----BEGIN CERTIFICATE-----
+MIIDVTCCAj2gAwIBAgIESTMAATANBgkqhkiG9w0BAQUFADAyMQswCQYDVQQGEwJDTjEOMAwGA1UE
+ChMFQ05OSUMxEzARBgNVBAMTCkNOTklDIFJPT1QwHhcNMDcwNDE2MDcwOTE0WhcNMjcwNDE2MDcw
+OTE0WjAyMQswCQYDVQQGEwJDTjEOMAwGA1UEChMFQ05OSUMxEzARBgNVBAMTCkNOTklDIFJPT1Qw
+ggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDTNfc/c3et6FtzF8LRb+1VvG7q6KR5smzD
+o+/hn7E7SIX1mlwhIhAsxYLO2uOabjfhhyzcuQxauohV3/2q2x8x6gHx3zkBwRP9SFIhxFXf2tiz
+VHa6dLG3fdfA6PZZxU3Iva0fFNrfWEQlMhkqx35+jq44sDB7R3IJMfAw28Mbdim7aXZOV/kbZKKT
+VrdvmW7bCgScEeOAH8tjlBAKqeFkgjH5jCftppkA9nCTGPihNIaj3XrCGHn2emU1z5DrvTOTn1Or
+czvmmzQgLx3vqR1jGqCA2wMv+SYahtKNu6m+UjqHZ0gNv7Sg2Ca+I19zN38m5pIEo3/PIKe38zrK
+y5nLAgMBAAGjczBxMBEGCWCGSAGG+EIBAQQEAwIABzAfBgNVHSMEGDAWgBRl8jGtKvf33VKWCscC
+wQ7vptU7ETAPBgNVHRMBAf8EBTADAQH/MAsGA1UdDwQEAwIB/jAdBgNVHQ4EFgQUZfIxrSr3991S
+lgrHAsEO76bVOxEwDQYJKoZIhvcNAQEFBQADggEBAEs17szkrr/Dbq2flTtLP1se31cpolnKOOK5
+Gv+e5m4y3R6u6jW39ZORTtpC4cMXYFDy0VwmuYK36m3knITnA3kXr5g9lNvHugDnuL8BV8F3RTIM
+O/G0HAiw/VGgod2aHRM2mm23xzy54cXZF/qD1T0VoDy7HgviyJA/qIYM/PmLXoXLT1tLYhFHxUV8
+BS9BsZ4QaRuZluBVeftOhpm4lNqGOGqTo+fLbuXf6iFViZx9fX+Y9QCJ7uOEwFyWtcVG6kbghVW2
+G8kS1sHNzYDzAgE8yGnLRUhj2JTQ7IUOO04RZfSCjKY9ri4ilAnIXOo8gV0WKgOXFlUJ24pBgp5m
+mxE=
+-----END CERTIFICATE-----
+
+ApplicationCA - Japanese Government
+===================================
+-----BEGIN CERTIFICATE-----
+MIIDoDCCAoigAwIBAgIBMTANBgkqhkiG9w0BAQUFADBDMQswCQYDVQQGEwJKUDEcMBoGA1UEChMT
+SmFwYW5lc2UgR292ZXJubWVudDEWMBQGA1UECxMNQXBwbGljYXRpb25DQTAeFw0wNzEyMTIxNTAw
+MDBaFw0xNzEyMTIxNTAwMDBaMEMxCzAJBgNVBAYTAkpQMRwwGgYDVQQKExNKYXBhbmVzZSBHb3Zl
+cm5tZW50MRYwFAYDVQQLEw1BcHBsaWNhdGlvbkNBMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIB
+CgKCAQEAp23gdE6Hj6UG3mii24aZS2QNcfAKBZuOquHMLtJqO8F6tJdhjYq+xpqcBrSGUeQ3DnR4
+fl+Kf5Sk10cI/VBaVuRorChzoHvpfxiSQE8tnfWuREhzNgaeZCw7NCPbXCbkcXmP1G55IrmTwcrN
+wVbtiGrXoDkhBFcsovW8R0FPXjQilbUfKW1eSvNNcr5BViCH/OlQR9cwFO5cjFW6WY2H/CPek9AE
+jP3vbb3QesmlOmpyM8ZKDQUXKi17safY1vC+9D/qDihtQWEjdnjDuGWk81quzMKq2edY3rZ+nYVu
+nyoKb58DKTCXKB28t89UKU5RMfkntigm/qJj5kEW8DOYRwIDAQABo4GeMIGbMB0GA1UdDgQWBBRU
+WssmP3HMlEYNllPqa0jQk/5CdTAOBgNVHQ8BAf8EBAMCAQYwWQYDVR0RBFIwUKROMEwxCzAJBgNV
+BAYTAkpQMRgwFgYDVQQKDA/ml6XmnKzlm73mlL/lupwxIzAhBgNVBAsMGuOCouODl+ODquOCseOD
+vOOCt+ODp+ODs0NBMA8GA1UdEwEB/wQFMAMBAf8wDQYJKoZIhvcNAQEFBQADggEBADlqRHZ3ODrs
+o2dGD/mLBqj7apAxzn7s2tGJfHrrLgy9mTLnsCTWw//1sogJhyzjVOGjprIIC8CFqMjSnHH2HZ9g
+/DgzE+Ge3Atf2hZQKXsvcJEPmbo0NI2VdMV+eKlmXb3KIXdCEKxmJj3ekav9FfBv7WxfEPjzFvYD
+io+nEhEMy/0/ecGc/WLuo89UDNErXxc+4z6/wCs+CZv+iKZ+tJIX/COUgb1up8WMwusRRdv4QcmW
+dupwX3kSa+SjB1oF7ydJzyGfikwJcGapJsErEU4z0g781mzSDjJkaP+tBXhfAx2o45CsJOAPQKdL
+rosot4LKGAfmt1t06SAZf7IbiVQ=
+-----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-----
+MIIFyjCCA7KgAwIBAgIEAJiWjDANBgkqhkiG9w0BAQsFADBaMQswCQYDVQQGEwJOTDEeMBwGA1UE
+CgwVU3RhYXQgZGVyIE5lZGVybGFuZGVuMSswKQYDVQQDDCJTdGFhdCBkZXIgTmVkZXJsYW5kZW4g
+Um9vdCBDQSAtIEcyMB4XDTA4MDMyNjExMTgxN1oXDTIwMDMyNTExMDMxMFowWjELMAkGA1UEBhMC
+TkwxHjAcBgNVBAoMFVN0YWF0IGRlciBOZWRlcmxhbmRlbjErMCkGA1UEAwwiU3RhYXQgZGVyIE5l
+ZGVybGFuZGVuIFJvb3QgQ0EgLSBHMjCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBAMVZ
+5291qj5LnLW4rJ4L5PnZyqtdj7U5EILXr1HgO+EASGrP2uEGQxGZqhQlEq0i6ABtQ8SpuOUfiUtn
+vWFI7/3S4GCI5bkYYCjDdyutsDeqN95kWSpGV+RLufg3fNU254DBtvPUZ5uW6M7XxgpT0GtJlvOj
+CwV3SPcl5XCsMBQgJeN/dVrlSPhOewMHBPqCYYdu8DvEpMfQ9XQ+pV0aCPKbJdL2rAQmPlU6Yiil
+e7Iwr/g3wtG61jj99O9JMDeZJiFIhQGp5Rbn3JBV3w/oOM2ZNyFPXfUib2rFEhZgF1XyZWampzCR
+OME4HYYEhLoaJXhena/MUGDWE4dS7WMfbWV9whUYdMrhfmQpjHLYFhN9C0lK8SgbIHRrxT3dsKpI
+CT0ugpTNGmXZK4iambwYfp/ufWZ8Pr2UuIHOzZgweMFvZ9C+X+Bo7d7iscksWXiSqt8rYGPy5V65
+48r6f1CGPqI0GAwJaCgRHOThuVw+R7oyPxjMW4T182t0xHJ04eOLoEq9jWYv6q012iDTiIJh8BIi
+trzQ1aTsr1SIJSQ8p22xcik/Plemf1WvbibG/ufMQFxRRIEKeN5KzlW/HdXZt1bv8Hb/C3m1r737
+qWmRRpdogBQ2HbN/uymYNqUg+oJgYjOk7Na6B6duxc8UpufWkjTYgfX8HV2qXB72o007uPc5AgMB
+AAGjgZcwgZQwDwYDVR0TAQH/BAUwAwEB/zBSBgNVHSAESzBJMEcGBFUdIAAwPzA9BggrBgEFBQcC
+ARYxaHR0cDovL3d3dy5wa2lvdmVyaGVpZC5ubC9wb2xpY2llcy9yb290LXBvbGljeS1HMjAOBgNV
+HQ8BAf8EBAMCAQYwHQYDVR0OBBYEFJFoMocVHYnitfGsNig0jQt8YojrMA0GCSqGSIb3DQEBCwUA
+A4ICAQCoQUpnKpKBglBu4dfYszk78wIVCVBR7y29JHuIhjv5tLySCZa59sCrI2AGeYwRTlHSeYAz
++51IvuxBQ4EffkdAHOV6CMqqi3WtFMTC6GY8ggen5ieCWxjmD27ZUD6KQhgpxrRW/FYQoAUXvQwj
+f/ST7ZwaUb7dRUG/kSS0H4zpX897IZmflZ85OkYcbPnNe5yQzSipx6lVu6xiNGI1E0sUOlWDuYaN
+kqbG9AclVMwWVxJKgnjIFNkXgiYtXSAfea7+1HAWFpWD2DU5/1JddRwWxRNVz0fMdWVSSt7wsKfk
+CpYL+63C4iWEst3kvX5ZbJvw8NjnyvLplzh+ib7M+zkXYT9y2zqR2GUBGR2tUKRXCnxLvJxxcypF
+URmFzI79R6d0lR2o0a9OF7FpJsKqeFdbxU2n5Z4FF5TKsl+gSRiNNOkmbEgeqmiSBeGCc1qb3Adb
+CG19ndeNIdn8FCCqwkXfP+cAslHkwvgFuXkajDTznlvkN1trSt8sV4pAWja63XVECDdCcAz+3F4h
+oKOKwJCcaNpQ5kUQR3i2TtJlycM33+FCY7BXN0Ute4qcvwXqZVUz9zkQxSgqIXobisQk+T8VyJoV
+IPVVYpbtbZNQvOSqeK3Zywplh6ZmwcSBo3c6WB4L7oOLnR7SUqTMHW+wmG2UMbX4cQrcufx9MmDm
+66+KAQ==
+-----END CERTIFICATE-----
+
+CA Disig
+========
+-----BEGIN CERTIFICATE-----
+MIIEDzCCAvegAwIBAgIBATANBgkqhkiG9w0BAQUFADBKMQswCQYDVQQGEwJTSzETMBEGA1UEBxMK
+QnJhdGlzbGF2YTETMBEGA1UEChMKRGlzaWcgYS5zLjERMA8GA1UEAxMIQ0EgRGlzaWcwHhcNMDYw
+MzIyMDEzOTM0WhcNMTYwMzIyMDEzOTM0WjBKMQswCQYDVQQGEwJTSzETMBEGA1UEBxMKQnJhdGlz
+bGF2YTETMBEGA1UEChMKRGlzaWcgYS5zLjERMA8GA1UEAxMIQ0EgRGlzaWcwggEiMA0GCSqGSIb3
+DQEBAQUAA4IBDwAwggEKAoIBAQCS9jHBfYj9mQGp2HvycXXxMcbzdWb6UShGhJd4NLxs/LxFWYgm
+GErENx+hSkS943EE9UQX4j/8SFhvXJ56CbpRNyIjZkMhsDxkovhqFQ4/61HhVKndBpnXmjxUizkD
+Pw/Fzsbrg3ICqB9x8y34dQjbYkzo+s7552oftms1grrijxaSfQUMbEYDXcDtab86wYqg6I7ZuUUo
+hwjstMoVvoLdtUSLLa2GDGhibYVW8qwUYzrG0ZmsNHhWS8+2rT+MitcE5eN4TPWGqvWP+j1scaMt
+ymfraHtuM6kMgiioTGohQBUgDCZbg8KpFhXAJIJdKxatymP2dACw30PEEGBWZ2NFAgMBAAGjgf8w
+gfwwDwYDVR0TAQH/BAUwAwEB/zAdBgNVHQ4EFgQUjbJJaJ1yCCW5wCf1UJNWSEZx+Y8wDgYDVR0P
+AQH/BAQDAgEGMDYGA1UdEQQvMC2BE2Nhb3BlcmF0b3JAZGlzaWcuc2uGFmh0dHA6Ly93d3cuZGlz
+aWcuc2svY2EwZgYDVR0fBF8wXTAtoCugKYYnaHR0cDovL3d3dy5kaXNpZy5zay9jYS9jcmwvY2Ff
+ZGlzaWcuY3JsMCygKqAohiZodHRwOi8vY2EuZGlzaWcuc2svY2EvY3JsL2NhX2Rpc2lnLmNybDAa
+BgNVHSAEEzARMA8GDSuBHpGT5goAAAABAQEwDQYJKoZIhvcNAQEFBQADggEBAF00dGFMrzvY/59t
+WDYcPQuBDRIrRhCA/ec8J9B6yKm2fnQwM6M6int0wHl5QpNt/7EpFIKrIYwvF/k/Ji/1WcbvgAa3
+mkkp7M5+cTxqEEHA9tOasnxakZzArFvITV734VP/Q3f8nktnbNfzg9Gg4H8l37iYC5oyOGwwoPP/
+CBUz91BKez6jPiCp3C9WgArtQVCwyfTssuMmRAAOb54GvCKWU3BlxFAKRmukLyeBEicTXxChds6K
+ezfqwzlhA5WYOudsiCUI/HloDYd9Yvi0X/vF2Ey9WLw/Q1vUHgFNPGO+I++MzVpQuGhU+QqZMxEA
+4Z7CRneC9VkGjCFMhwnN5ag=
+-----END CERTIFICATE-----
+
+Juur-SK
+=======
+-----BEGIN CERTIFICATE-----
+MIIE5jCCA86gAwIBAgIEO45L/DANBgkqhkiG9w0BAQUFADBdMRgwFgYJKoZIhvcNAQkBFglwa2lA
+c2suZWUxCzAJBgNVBAYTAkVFMSIwIAYDVQQKExlBUyBTZXJ0aWZpdHNlZXJpbWlza2Vza3VzMRAw
+DgYDVQQDEwdKdXVyLVNLMB4XDTAxMDgzMDE0MjMwMVoXDTE2MDgyNjE0MjMwMVowXTEYMBYGCSqG
+SIb3DQEJARYJcGtpQHNrLmVlMQswCQYDVQQGEwJFRTEiMCAGA1UEChMZQVMgU2VydGlmaXRzZWVy
+aW1pc2tlc2t1czEQMA4GA1UEAxMHSnV1ci1TSzCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoC
+ggEBAIFxNj4zB9bjMI0TfncyRsvPGbJgMUaXhvSYRqTCZUXP00B841oiqBB4M8yIsdOBSvZiF3tf
+TQou0M+LI+5PAk676w7KvRhj6IAcjeEcjT3g/1tf6mTll+g/mX8MCgkzABpTpyHhOEvWgxutr2TC
++Rx6jGZITWYfGAriPrsfB2WThbkasLnE+w0R9vXW+RvHLCu3GFH+4Hv2qEivbDtPL+/40UceJlfw
+UR0zlv/vWT3aTdEVNMfqPxZIe5EcgEMPPbgFPtGzlc3Yyg/CQ2fbt5PgIoIuvvVoKIO5wTtpeyDa
+Tpxt4brNj3pssAki14sL2xzVWiZbDcDq5WDQn/413z8CAwEAAaOCAawwggGoMA8GA1UdEwEB/wQF
+MAMBAf8wggEWBgNVHSAEggENMIIBCTCCAQUGCisGAQQBzh8BAQEwgfYwgdAGCCsGAQUFBwICMIHD
+HoHAAFMAZQBlACAAcwBlAHIAdABpAGYAaQBrAGEAYQB0ACAAbwBuACAAdgDkAGwAagBhAHMAdABh
+AHQAdQBkACAAQQBTAC0AaQBzACAAUwBlAHIAdABpAGYAaQB0AHMAZQBlAHIAaQBtAGkAcwBrAGUA
+cwBrAHUAcwAgAGEAbABhAG0ALQBTAEsAIABzAGUAcgB0AGkAZgBpAGsAYQBhAHQAaQBkAGUAIABr
+AGkAbgBuAGkAdABhAG0AaQBzAGUAawBzMCEGCCsGAQUFBwIBFhVodHRwOi8vd3d3LnNrLmVlL2Nw
+cy8wKwYDVR0fBCQwIjAgoB6gHIYaaHR0cDovL3d3dy5zay5lZS9qdXVyL2NybC8wHQYDVR0OBBYE
+FASqekej5ImvGs8KQKcYP2/v6X2+MB8GA1UdIwQYMBaAFASqekej5ImvGs8KQKcYP2/v6X2+MA4G
+A1UdDwEB/wQEAwIB5jANBgkqhkiG9w0BAQUFAAOCAQEAe8EYlFOiCfP+JmeaUOTDBS8rNXiRTHyo
+ERF5TElZrMj3hWVcRrs7EKACr81Ptcw2Kuxd/u+gkcm2k298gFTsxwhwDY77guwqYHhpNjbRxZyL
+abVAyJRld/JXIWY7zoVAtjNjGr95HvxcHdMdkxuLDF2FvZkwMhgJkVLpfKG6/2SSmuz+Ne6ML678
+IIbsSt4beDI3poHSna9aEhbKmVv8b20OxaAehsmR0FyYgl9jDIpaq9iVpszLita/ZEuOyoqysOkh
+Mp6qqIWYNIE5ITuoOlIyPfZrN4YGWhWY3PARZv40ILcD9EEQfTmEeZZyY7aWAuVrua0ZTbvGRNs2
+yyqcjg==
+-----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-----
+
+ACEDICOM Root
+=============
+-----BEGIN CERTIFICATE-----
+MIIFtTCCA52gAwIBAgIIYY3HhjsBggUwDQYJKoZIhvcNAQEFBQAwRDEWMBQGA1UEAwwNQUNFRElD
+T00gUm9vdDEMMAoGA1UECwwDUEtJMQ8wDQYDVQQKDAZFRElDT00xCzAJBgNVBAYTAkVTMB4XDTA4
+MDQxODE2MjQyMloXDTI4MDQxMzE2MjQyMlowRDEWMBQGA1UEAwwNQUNFRElDT00gUm9vdDEMMAoG
+A1UECwwDUEtJMQ8wDQYDVQQKDAZFRElDT00xCzAJBgNVBAYTAkVTMIICIjANBgkqhkiG9w0BAQEF
+AAOCAg8AMIICCgKCAgEA/5KV4WgGdrQsyFhIyv2AVClVYyT/kGWbEHV7w2rbYgIB8hiGtXxaOLHk
+WLn709gtn70yN78sFW2+tfQh0hOR2QetAQXW8713zl9CgQr5auODAKgrLlUTY4HKRxx7XBZXehuD
+YAQ6PmXDzQHe3qTWDLqO3tkE7hdWIpuPY/1NFgu3e3eM+SW10W2ZEi5PGrjm6gSSrj0RuVFCPYew
+MYWveVqc/udOXpJPQ/yrOq2lEiZmueIM15jO1FillUAKt0SdE3QrwqXrIhWYENiLxQSfHY9g5QYb
+m8+5eaA9oiM/Qj9r+hwDezCNzmzAv+YbX79nuIQZ1RXve8uQNjFiybwCq0Zfm/4aaJQ0PZCOrfbk
+HQl/Sog4P75n/TSW9R28MHTLOO7VbKvU/PQAtwBbhTIWdjPp2KOZnQUAqhbm84F9b32qhm2tFXTT
+xKJxqvQUfecyuB+81fFOvW8XAjnXDpVCOscAPukmYxHqC9FK/xidstd7LzrZlvvoHpKuE1XI2Sf2
+3EgbsCTBheN3nZqk8wwRHQ3ItBTutYJXCb8gWH8vIiPYcMt5bMlL8qkqyPyHK9caUPgn6C9D4zq9
+2Fdx/c6mUlv53U3t5fZvie27k5x2IXXwkkwp9y+cAS7+UEaeZAwUswdbxcJzbPEHXEUkFDWug/Fq
+TYl6+rPYLWbwNof1K1MCAwEAAaOBqjCBpzAPBgNVHRMBAf8EBTADAQH/MB8GA1UdIwQYMBaAFKaz
+4SsrSbbXc6GqlPUB53NlTKxQMA4GA1UdDwEB/wQEAwIBhjAdBgNVHQ4EFgQUprPhKytJttdzoaqU
+9QHnc2VMrFAwRAYDVR0gBD0wOzA5BgRVHSAAMDEwLwYIKwYBBQUHAgEWI2h0dHA6Ly9hY2VkaWNv
+bS5lZGljb21ncm91cC5jb20vZG9jMA0GCSqGSIb3DQEBBQUAA4ICAQDOLAtSUWImfQwng4/F9tqg
+aHtPkl7qpHMyEVNEskTLnewPeUKzEKbHDZ3Ltvo/Onzqv4hTGzz3gvoFNTPhNahXwOf9jU8/kzJP
+eGYDdwdY6ZXIfj7QeQCM8htRM5u8lOk6e25SLTKeI6RF+7YuE7CLGLHdztUdp0J/Vb77W7tH1Pwk
+zQSulgUV1qzOMPPKC8W64iLgpq0i5ALudBF/TP94HTXa5gI06xgSYXcGCRZj6hitoocf8seACQl1
+ThCojz2GuHURwCRiipZ7SkXp7FnFvmuD5uHorLUwHv4FB4D54SMNUI8FmP8sX+g7tq3PgbUhh8oI
+KiMnMCArz+2UW6yyetLHKKGKC5tNSixthT8Jcjxn4tncB7rrZXtaAWPWkFtPF2Y9fwsZo5NjEFIq
+nxQWWOLcpfShFosOkYuByptZ+thrkQdlVV9SH686+5DdaaVbnG0OLLb6zqylfDJKZ0DcMDQj3dcE
+I2bw/FWAp/tmGYI1Z2JwOV5vx+qQQEQIHriy1tvuWacNGHk0vFQYXlPKNFHtRQrmjseCNj6nOGOp
+MCwXEGCSn1WHElkQwg9naRHMTh5+Spqtr0CodaxWkHS4oJyleW/c6RrIaQXpuvoDs3zk4E7Czp3o
+tkYNbn5XOmeUwssfnHdKZ05phkOTOPu220+DkdRgfks+KzgHVZhepA==
+-----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-----
+
+E-Guven Kok Elektronik Sertifika Hizmet Saglayicisi
+===================================================
+-----BEGIN CERTIFICATE-----
+MIIDtjCCAp6gAwIBAgIQRJmNPMADJ72cdpW56tustTANBgkqhkiG9w0BAQUFADB1MQswCQYDVQQG
+EwJUUjEoMCYGA1UEChMfRWxla3Ryb25payBCaWxnaSBHdXZlbmxpZ2kgQS5TLjE8MDoGA1UEAxMz
+ZS1HdXZlbiBLb2sgRWxla3Ryb25payBTZXJ0aWZpa2EgSGl6bWV0IFNhZ2xheWljaXNpMB4XDTA3
+MDEwNDExMzI0OFoXDTE3MDEwNDExMzI0OFowdTELMAkGA1UEBhMCVFIxKDAmBgNVBAoTH0VsZWt0
+cm9uaWsgQmlsZ2kgR3V2ZW5saWdpIEEuUy4xPDA6BgNVBAMTM2UtR3V2ZW4gS29rIEVsZWt0cm9u
+aWsgU2VydGlmaWthIEhpem1ldCBTYWdsYXlpY2lzaTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCC
+AQoCggEBAMMSIJ6wXgBljU5Gu4Bc6SwGl9XzcslwuedLZYDBS75+PNdUMZTe1RK6UxYC6lhj71vY
+8+0qGqpxSKPcEC1fX+tcS5yWCEIlKBHMilpiAVDV6wlTL/jDj/6z/P2douNffb7tC+Bg62nsM+3Y
+jfsSSYMAyYuXjDtzKjKzEve5TfL0TW3H5tYmNwjy2f1rXKPlSFxYvEK+A1qBuhw1DADT9SN+cTAI
+JjjcJRFHLfO6IxClv7wC90Nex/6wN1CZew+TzuZDLMN+DfIcQ2Zgy2ExR4ejT669VmxMvLz4Bcpk
+9Ok0oSy1c+HCPujIyTQlCFzz7abHlJ+tiEMl1+E5YP6sOVkCAwEAAaNCMEAwDgYDVR0PAQH/BAQD
+AgEGMA8GA1UdEwEB/wQFMAMBAf8wHQYDVR0OBBYEFJ/uRLOU1fqRTy7ZVZoEVtstxNulMA0GCSqG
+SIb3DQEBBQUAA4IBAQB/X7lTW2M9dTLn+sR0GstG30ZpHFLPqk/CaOv/gKlR6D1id4k9CnU58W5d
+F4dvaAXBlGzZXd/aslnLpRCKysw5zZ/rTt5S/wzw9JKp8mxTq5vSR6AfdPebmvEvFZ96ZDAYBzwq
+D2fK/A+JYZ1lpTzlvBNbCNvj/+27BrtqBrF6T2XGgv0enIu1De5Iu7i9qgi0+6N8y5/NkHZchpZ4
+Vwpm+Vganf2XKWDeEaaQHBkc7gGWIjQ0LpH5t8Qn0Xvmv/uARFoW5evg1Ao4vOSR49XrXMGs3xtq
+fJ7lddK2l4fbzIcrQzqECK+rPNv3PGYxhrCdU3nt+CPeQuMtgvEP5fqX
+-----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-----
+MIIF8TCCA9mgAwIBAgIQALC3WhZIX7/hy/WL1xnmfTANBgkqhkiG9w0BAQsFADA4MQswCQYDVQQG
+EwJFUzEUMBIGA1UECgwLSVpFTlBFIFMuQS4xEzARBgNVBAMMCkl6ZW5wZS5jb20wHhcNMDcxMjEz
+MTMwODI4WhcNMzcxMjEzMDgyNzI1WjA4MQswCQYDVQQGEwJFUzEUMBIGA1UECgwLSVpFTlBFIFMu
+QS4xEzARBgNVBAMMCkl6ZW5wZS5jb20wggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQDJ
+03rKDx6sp4boFmVqscIbRTJxldn+EFvMr+eleQGPicPK8lVx93e+d5TzcqQsRNiekpsUOqHnJJAK
+ClaOxdgmlOHZSOEtPtoKct2jmRXagaKH9HtuJneJWK3W6wyyQXpzbm3benhB6QiIEn6HLmYRY2xU
++zydcsC8Lv/Ct90NduM61/e0aL6i9eOBbsFGb12N4E3GVFWJGjMxCrFXuaOKmMPsOzTFlUFpfnXC
+PCDFYbpRR6AgkJOhkEvzTnyFRVSa0QUmQbC1TR0zvsQDyCV8wXDbO/QJLVQnSKwv4cSsPsjLkkxT
+OTcj7NMB+eAJRE1NZMDhDVqHIrytG6P+JrUV86f8hBnp7KGItERphIPzidF0BqnMC9bC3ieFUCbK
+F7jJeodWLBoBHmy+E60QrLUk9TiRodZL2vG70t5HtfG8gfZZa88ZU+mNFctKy6lvROUbQc/hhqfK
+0GqfvEyNBjNaooXlkDWgYlwWTvDjovoDGrQscbNYLN57C9saD+veIR8GdwYDsMnvmfzAuU8Lhij+
+0rnq49qlw0dpEuDb8PYZi+17cNcC1u2HGCgsBCRMd+RIihrGO5rUD8r6ddIBQFqNeb+Lz0vPqhbB
+leStTIo+F5HUsWLlguWABKQDfo2/2n+iD5dPDNMN+9fR5XJ+HMh3/1uaD7euBUbl8agW7EekFwID
+AQABo4H2MIHzMIGwBgNVHREEgagwgaWBD2luZm9AaXplbnBlLmNvbaSBkTCBjjFHMEUGA1UECgw+
+SVpFTlBFIFMuQS4gLSBDSUYgQTAxMzM3MjYwLVJNZXJjLlZpdG9yaWEtR2FzdGVpeiBUMTA1NSBG
+NjIgUzgxQzBBBgNVBAkMOkF2ZGEgZGVsIE1lZGl0ZXJyYW5lbyBFdG9yYmlkZWEgMTQgLSAwMTAx
+MCBWaXRvcmlhLUdhc3RlaXowDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAQYwHQYDVR0O
+BBYEFB0cZQ6o8iV7tJHP5LGx5r1VdGwFMA0GCSqGSIb3DQEBCwUAA4ICAQB4pgwWSp9MiDrAyw6l
+Fn2fuUhfGI8NYjb2zRlrrKvV9pF9rnHzP7MOeIWblaQnIUdCSnxIOvVFfLMMjlF4rJUT3sb9fbga
+kEyrkgPH7UIBzg/YsfqikuFgba56awmqxinuaElnMIAkejEWOVt+8Rwu3WwJrfIxwYJOubv5vr8q
+hT/AQKM6WfxZSzwoJNu0FXWuDYi6LnPAvViH5ULy617uHjAimcs30cQhbIHsvm0m5hzkQiCeR7Cs
+g1lwLDXWrzY0tM07+DKo7+N4ifuNRSzanLh+QBxh5z6ikixL8s36mLYp//Pye6kfLqCTVyvehQP5
+aTfLnnhqBbTFMXiJ7HqnheG5ezzevh55hM6fcA5ZwjUukCox2eRFekGkLhObNA5me0mrZJfQRsN5
+nXJQY6aYWwa9SG3YOYNw6DXwBdGqvOPbyALqfP2C2sJbUjWumDqtujWTI6cfSN01RpiyEGjkpTHC
+ClguGYEQyVB1/OpaFs4R1+7vUIgtYf8/QnMFlEPVjjxOAToZpR9GTnfQXeWBIiGH/pR9hNiTrdZo
+Q0iy2+tzJOeRf1SktoA+naM8THLCV8Sg1Mw4J87VBp6iSNnpn86CcDaTmjvfliHjWbcM2pE38P1Z
+WrOZyGlsQyYBNWNgVYkDOnXYukrZVP/u3oDYLdE41V4tC5h9Pmzb/CaIxw==
+-----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-----
+
+Certinomis - Autorité Racine
+=============================
+-----BEGIN CERTIFICATE-----
+MIIFnDCCA4SgAwIBAgIBATANBgkqhkiG9w0BAQUFADBjMQswCQYDVQQGEwJGUjETMBEGA1UEChMK
+Q2VydGlub21pczEXMBUGA1UECxMOMDAwMiA0MzM5OTg5MDMxJjAkBgNVBAMMHUNlcnRpbm9taXMg
+LSBBdXRvcml0w6kgUmFjaW5lMB4XDTA4MDkxNzA4Mjg1OVoXDTI4MDkxNzA4Mjg1OVowYzELMAkG
+A1UEBhMCRlIxEzARBgNVBAoTCkNlcnRpbm9taXMxFzAVBgNVBAsTDjAwMDIgNDMzOTk4OTAzMSYw
+JAYDVQQDDB1DZXJ0aW5vbWlzIC0gQXV0b3JpdMOpIFJhY2luZTCCAiIwDQYJKoZIhvcNAQEBBQAD
+ggIPADCCAgoCggIBAJ2Fn4bT46/HsmtuM+Cet0I0VZ35gb5j2CN2DpdUzZlMGvE5x4jYF1AMnmHa
+wE5V3udauHpOd4cN5bjr+p5eex7Ezyh0x5P1FMYiKAT5kcOrJ3NqDi5N8y4oH3DfVS9O7cdxbwly
+Lu3VMpfQ8Vh30WC8Tl7bmoT2R2FFK/ZQpn9qcSdIhDWerP5pqZ56XjUl+rSnSTV3lqc2W+HN3yNw
+2F1MpQiD8aYkOBOo7C+ooWfHpi2GR+6K/OybDnT0K0kCe5B1jPyZOQE51kqJ5Z52qz6WKDgmi92N
+jMD2AR5vpTESOH2VwnHu7XSu5DaiQ3XV8QCb4uTXzEIDS3h65X27uK4uIJPT5GHfceF2Z5c/tt9q
+c1pkIuVC28+BA5PY9OMQ4HL2AHCs8MF6DwV/zzRpRbWT5BnbUhYjBYkOjUjkJW+zeL9i9Qf6lSTC
+lrLooyPCXQP8w9PlfMl1I9f09bze5N/NgL+RiH2nE7Q5uiy6vdFrzPOlKO1Enn1So2+WLhl+HPNb
+xxaOu2B9d2ZHVIIAEWBsMsGoOBvrbpgT1u449fCfDu/+MYHB0iSVL1N6aaLwD4ZFjliCK0wi1F6g
+530mJ0jfJUaNSih8hp75mxpZuWW/Bd22Ql095gBIgl4g9xGC3srYn+Y3RyYe63j3YcNBZFgCQfna
+4NH4+ej9Uji29YnfAgMBAAGjWzBZMA8GA1UdEwEB/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgEGMB0G
+A1UdDgQWBBQNjLZh2kS40RR9w759XkjwzspqsDAXBgNVHSAEEDAOMAwGCiqBegFWAgIAAQEwDQYJ
+KoZIhvcNAQEFBQADggIBACQ+YAZ+He86PtvqrxyaLAEL9MW12Ukx9F1BjYkMTv9sov3/4gbIOZ/x
+WqndIlgVqIrTseYyCYIDbNc/CMf4uboAbbnW/FIyXaR/pDGUu7ZMOH8oMDX/nyNTt7buFHAAQCva
+R6s0fl6nVjBhK4tDrP22iCj1a7Y+YEq6QpA0Z43q619FVDsXrIvkxmUP7tCMXWY5zjKn2BCXwH40
+nJ+U8/aGH88bc62UeYdocMMzpXDn2NU4lG9jeeu/Cg4I58UvD0KgKxRA/yHgBcUn4YQRE7rWhh1B
+CxMjidPJC+iKunqjo3M3NYB9Ergzd0A4wPpeMNLytqOx1qKVl4GbUu1pTP+A5FPbVFsDbVRfsbjv
+JL1vnxHDx2TCDyhihWZeGnuyt++uNckZM6i4J9szVb9o4XVIRFb7zdNIu0eJOqxp9YDG5ERQL1TE
+qkPFMTFYvZbF6nVsmnWxTfj3l/+WFvKXTej28xH5On2KOG4Ey+HTRRWqpdEdnV1j6CTmNhTih60b
+WfVEm/vXd3wfAXBioSAaosUaKPQhA+4u2cGA6rnZgtZbdsLLO7XSAPCjDuGtbkD326C00EauFddE
+wk01+dIL8hf2rGbVJLJP0RyZwG71fet0BLj5TXcJ17TPBzAJ8bgAVtkXFhYKK4bfjwEZGuW7gmP/
+vgt2Fl43N+bYdJeimUV5
+-----END CERTIFICATE-----
+
+Root CA Generalitat Valenciana
+==============================
+-----BEGIN CERTIFICATE-----
+MIIGizCCBXOgAwIBAgIEO0XlaDANBgkqhkiG9w0BAQUFADBoMQswCQYDVQQGEwJFUzEfMB0GA1UE
+ChMWR2VuZXJhbGl0YXQgVmFsZW5jaWFuYTEPMA0GA1UECxMGUEtJR1ZBMScwJQYDVQQDEx5Sb290
+IENBIEdlbmVyYWxpdGF0IFZhbGVuY2lhbmEwHhcNMDEwNzA2MTYyMjQ3WhcNMjEwNzAxMTUyMjQ3
+WjBoMQswCQYDVQQGEwJFUzEfMB0GA1UEChMWR2VuZXJhbGl0YXQgVmFsZW5jaWFuYTEPMA0GA1UE
+CxMGUEtJR1ZBMScwJQYDVQQDEx5Sb290IENBIEdlbmVyYWxpdGF0IFZhbGVuY2lhbmEwggEiMA0G
+CSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDGKqtXETcvIorKA3Qdyu0togu8M1JAJke+WmmmO3I2
+F0zo37i7L3bhQEZ0ZQKQUgi0/6iMweDHiVYQOTPvaLRfX9ptI6GJXiKjSgbwJ/BXufjpTjJ3Cj9B
+ZPPrZe52/lSqfR0grvPXdMIKX/UIKFIIzFVd0g/bmoGlu6GzwZTNVOAydTGRGmKy3nXiz0+J2ZGQ
+D0EbtFpKd71ng+CT516nDOeB0/RSrFOyA8dEJvt55cs0YFAQexvba9dHq198aMpunUEDEO5rmXte
+JajCq+TA81yc477OMUxkHl6AovWDfgzWyoxVjr7gvkkHD6MkQXpYHYTqWBLI4bft75PelAgxAgMB
+AAGjggM7MIIDNzAyBggrBgEFBQcBAQQmMCQwIgYIKwYBBQUHMAGGFmh0dHA6Ly9vY3NwLnBraS5n
+dmEuZXMwEgYDVR0TAQH/BAgwBgEB/wIBAjCCAjQGA1UdIASCAiswggInMIICIwYKKwYBBAG/VQIB
+ADCCAhMwggHoBggrBgEFBQcCAjCCAdoeggHWAEEAdQB0AG8AcgBpAGQAYQBkACAAZABlACAAQwBl
+AHIAdABpAGYAaQBjAGEAYwBpAPMAbgAgAFIAYQDtAHoAIABkAGUAIABsAGEAIABHAGUAbgBlAHIA
+YQBsAGkAdABhAHQAIABWAGEAbABlAG4AYwBpAGEAbgBhAC4ADQAKAEwAYQAgAEQAZQBjAGwAYQBy
+AGEAYwBpAPMAbgAgAGQAZQAgAFAAcgDhAGMAdABpAGMAYQBzACAAZABlACAAQwBlAHIAdABpAGYA
+aQBjAGEAYwBpAPMAbgAgAHEAdQBlACAAcgBpAGcAZQAgAGUAbAAgAGYAdQBuAGMAaQBvAG4AYQBt
+AGkAZQBuAHQAbwAgAGQAZQAgAGwAYQAgAHAAcgBlAHMAZQBuAHQAZQAgAEEAdQB0AG8AcgBpAGQA
+YQBkACAAZABlACAAQwBlAHIAdABpAGYAaQBjAGEAYwBpAPMAbgAgAHMAZQAgAGUAbgBjAHUAZQBu
+AHQAcgBhACAAZQBuACAAbABhACAAZABpAHIAZQBjAGMAaQDzAG4AIAB3AGUAYgAgAGgAdAB0AHAA
+OgAvAC8AdwB3AHcALgBwAGsAaQAuAGcAdgBhAC4AZQBzAC8AYwBwAHMwJQYIKwYBBQUHAgEWGWh0
+dHA6Ly93d3cucGtpLmd2YS5lcy9jcHMwHQYDVR0OBBYEFHs100DSHHgZZu90ECjcPk+yeAT8MIGV
+BgNVHSMEgY0wgYqAFHs100DSHHgZZu90ECjcPk+yeAT8oWykajBoMQswCQYDVQQGEwJFUzEfMB0G
+A1UEChMWR2VuZXJhbGl0YXQgVmFsZW5jaWFuYTEPMA0GA1UECxMGUEtJR1ZBMScwJQYDVQQDEx5S
+b290IENBIEdlbmVyYWxpdGF0IFZhbGVuY2lhbmGCBDtF5WgwDQYJKoZIhvcNAQEFBQADggEBACRh
+TvW1yEICKrNcda3FbcrnlD+laJWIwVTAEGmiEi8YPyVQqHxK6sYJ2fR1xkDar1CdPaUWu20xxsdz
+Ckj+IHLtb8zog2EWRpABlUt9jppSCS/2bxzkoXHPjCpaF3ODR00PNvsETUlR4hTJZGH71BTg9J63
+NI8KJr2XXPR5OkowGcytT6CYirQxlyric21+eLj4iIlPsSKRZEv1UN4D2+XFducTZnV+ZfsBn5OH
+iJ35Rld8TWCvmHMTI6QgkYH60GFmuH3Rr9ZvHmw96RH9qfmCIoaZM3Fa6hlXPZHNqcCjbgcTpsnt
++GijnsNacgmHKNHEc8RzGF9QdRYxn7fofMM=
+-----END CERTIFICATE-----
+
+A-Trust-nQual-03
+================
+-----BEGIN CERTIFICATE-----
+MIIDzzCCAregAwIBAgIDAWweMA0GCSqGSIb3DQEBBQUAMIGNMQswCQYDVQQGEwJBVDFIMEYGA1UE
+Cgw/QS1UcnVzdCBHZXMuIGYuIFNpY2hlcmhlaXRzc3lzdGVtZSBpbSBlbGVrdHIuIERhdGVudmVy
+a2VociBHbWJIMRkwFwYDVQQLDBBBLVRydXN0LW5RdWFsLTAzMRkwFwYDVQQDDBBBLVRydXN0LW5R
+dWFsLTAzMB4XDTA1MDgxNzIyMDAwMFoXDTE1MDgxNzIyMDAwMFowgY0xCzAJBgNVBAYTAkFUMUgw
+RgYDVQQKDD9BLVRydXN0IEdlcy4gZi4gU2ljaGVyaGVpdHNzeXN0ZW1lIGltIGVsZWt0ci4gRGF0
+ZW52ZXJrZWhyIEdtYkgxGTAXBgNVBAsMEEEtVHJ1c3QtblF1YWwtMDMxGTAXBgNVBAMMEEEtVHJ1
+c3QtblF1YWwtMDMwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCtPWFuA/OQO8BBC4SA
+zewqo51ru27CQoT3URThoKgtUaNR8t4j8DRE/5TrzAUjlUC5B3ilJfYKvUWG6Nm9wASOhURh73+n
+yfrBJcyFLGM/BWBzSQXgYHiVEEvc+RFZznF/QJuKqiTfC0Li21a8StKlDJu3Qz7dg9MmEALP6iPE
+SU7l0+m0iKsMrmKS1GWH2WrX9IWf5DMiJaXlyDO6w8dB3F/GaswADm0yqLaHNgBid5seHzTLkDx4
+iHQF63n1k3Flyp3HaxgtPVxO59X4PzF9j4fsCiIvI+n+u33J4PTs63zEsMMtYrWacdaxaujs2e3V
+cuy+VwHOBVWf3tFgiBCzAgMBAAGjNjA0MA8GA1UdEwEB/wQFMAMBAf8wEQYDVR0OBAoECERqlWdV
+eRFPMA4GA1UdDwEB/wQEAwIBBjANBgkqhkiG9w0BAQUFAAOCAQEAVdRU0VlIXLOThaq/Yy/kgM40
+ozRiPvbY7meIMQQDbwvUB/tOdQ/TLtPAF8fGKOwGDREkDg6lXb+MshOWcdzUzg4NCmgybLlBMRmr
+sQd7TZjTXLDR8KdCoLXEjq/+8T/0709GAHbrAvv5ndJAlseIOrifEXnzgGWovR/TeIGgUUw3tKZd
+JXDRZslo+S4RFGjxVJgIrCaSD96JntT6s3kr0qN51OyLrIdTaEJMUVF0HhsnLuP1Hyl0Te2v9+GS
+mYHovjrHF1D2t8b8m7CKa9aIA5GPBnc6hQLdmNVDeD/GMBWsm2vLV7eJUYs66MmEDNuxUCAKGkq6
+ahq97BvIxYSazQ==
+-----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-----
+MIIFuzCCA6OgAwIBAgIIVwoRl0LE48wwDQYJKoZIhvcNAQELBQAwazELMAkGA1UEBhMCSVQxDjAM
+BgNVBAcMBU1pbGFuMSMwIQYDVQQKDBpBY3RhbGlzIFMucC5BLi8wMzM1ODUyMDk2NzEnMCUGA1UE
+AwweQWN0YWxpcyBBdXRoZW50aWNhdGlvbiBSb290IENBMB4XDTExMDkyMjExMjIwMloXDTMwMDky
+MjExMjIwMlowazELMAkGA1UEBhMCSVQxDjAMBgNVBAcMBU1pbGFuMSMwIQYDVQQKDBpBY3RhbGlz
+IFMucC5BLi8wMzM1ODUyMDk2NzEnMCUGA1UEAwweQWN0YWxpcyBBdXRoZW50aWNhdGlvbiBSb290
+IENBMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAp8bEpSmkLO/lGMWwUKNvUTufClrJ
+wkg4CsIcoBh/kbWHuUA/3R1oHwiD1S0eiKD4j1aPbZkCkpAW1V8IbInX4ay8IMKx4INRimlNAJZa
+by/ARH6jDuSRzVju3PvHHkVH3Se5CAGfpiEd9UEtL0z9KK3giq0itFZljoZUj5NDKd45RnijMCO6
+zfB9E1fAXdKDa0hMxKufgFpbOr3JpyI/gCczWw63igxdBzcIy2zSekciRDXFzMwujt0q7bd9Zg1f
+YVEiVRvjRuPjPdA1YprbrxTIW6HMiRvhMCb8oJsfgadHHwTrozmSBp+Z07/T6k9QnBn+locePGX2
+oxgkg4YQ51Q+qDp2JE+BIcXjDwL4k5RHILv+1A7TaLndxHqEguNTVHnd25zS8gebLra8Pu2Fbe8l
+EfKXGkJh90qX6IuxEAf6ZYGyojnP9zz/GPvG8VqLWeICrHuS0E4UT1lF9gxeKF+w6D9Fz8+vm2/7
+hNN3WpVvrJSEnu68wEqPSpP4RCHiMUVhUE4Q2OM1fEwZtN4Fv6MGn8i1zeQf1xcGDXqVdFUNaBr8
+EBtiZJ1t4JWgw5QHVw0U5r0F+7if5t+L4sbnfpb2U8WANFAoWPASUHEXMLrmeGO89LKtmyuy/uE5
+jF66CyCU3nuDuP/jVo23Eek7jPKxwV2dpAtMK9myGPW1n0sCAwEAAaNjMGEwHQYDVR0OBBYEFFLY
+iDrIn3hm7YnzezhwlMkCAjbQMA8GA1UdEwEB/wQFMAMBAf8wHwYDVR0jBBgwFoAUUtiIOsifeGbt
+ifN7OHCUyQICNtAwDgYDVR0PAQH/BAQDAgEGMA0GCSqGSIb3DQEBCwUAA4ICAQALe3KHwGCmSUyI
+WOYdiPcUZEim2FgKDk8TNd81HdTtBjHIgT5q1d07GjLukD0R0i70jsNjLiNmsGe+b7bAEzlgqqI0
+JZN1Ut6nna0Oh4lScWoWPBkdg/iaKWW+9D+a2fDzWochcYBNy+A4mz+7+uAwTc+G02UQGRjRlwKx
+K3JCaKygvU5a2hi/a5iB0P2avl4VSM0RFbnAKVy06Ij3Pjaut2L9HmLecHgQHEhb2rykOLpn7VU+
+Xlff1ANATIGk0k9jpwlCCRT8AKnCgHNPLsBA2RF7SOp6AsDT6ygBJlh0wcBzIm2Tlf05fbsq4/aC
+4yyXX04fkZT6/iyj2HYauE2yOE+b+h1IYHkm4vP9qdCa6HCPSXrW5b0KDtst842/6+OkfcvHlXHo
+2qN8xcL4dJIEG4aspCJTQLas/kx2z/uUMsA1n3Y/buWQbqCmJqK4LL7RK4X9p2jIugErsWx0Hbhz
+lefut8cl8ABMALJ+tguLHPPAUJ4lueAI3jZm/zel0btUZCzJJ7VLkn5l/9Mt4blOvH+kQSGQQXem
+OR/qnuOf0GZvBeyqdn6/axag67XH/JJULysRJyU3eExRarDzzFhdFPFqSBX/wge2sY0PjlxQRrM9
+vwGYT7JZVEc+NHt4bVaTLnPqZih4zR0Uv6CPLy64Lo7yFIrM6bV8+2ydDKXhlg==
+-----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-----
+
+StartCom Certification Authority
+================================
+-----BEGIN CERTIFICATE-----
+MIIHhzCCBW+gAwIBAgIBLTANBgkqhkiG9w0BAQsFADB9MQswCQYDVQQGEwJJTDEWMBQGA1UEChMN
+U3RhcnRDb20gTHRkLjErMCkGA1UECxMiU2VjdXJlIERpZ2l0YWwgQ2VydGlmaWNhdGUgU2lnbmlu
+ZzEpMCcGA1UEAxMgU3RhcnRDb20gQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkwHhcNMDYwOTE3MTk0
+NjM3WhcNMzYwOTE3MTk0NjM2WjB9MQswCQYDVQQGEwJJTDEWMBQGA1UEChMNU3RhcnRDb20gTHRk
+LjErMCkGA1UECxMiU2VjdXJlIERpZ2l0YWwgQ2VydGlmaWNhdGUgU2lnbmluZzEpMCcGA1UEAxMg
+U3RhcnRDb20gQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAw
+ggIKAoICAQDBiNsJvGxGfHiflXu1M5DycmLWwTYgIiRezul38kMKogZkpMyONvg45iPwbm2xPN1y
+o4UcodM9tDMr0y+v/uqwQVlntsQGfQqedIXWeUyAN3rfOQVSWff0G0ZDpNKFhdLDcfN1YjS6LIp/
+Ho/u7TTQEceWzVI9ujPW3U3eCztKS5/CJi/6tRYccjV3yjxd5srhJosaNnZcAdt0FCX+7bWgiA/d
+eMotHweXMAEtcnn6RtYTKqi5pquDSR3l8u/d5AGOGAqPY1MWhWKpDhk6zLVmpsJrdAfkK+F2PrRt
+2PZE4XNiHzvEvqBTViVsUQn3qqvKv3b9bZvzndu/PWa8DFaqr5hIlTpL36dYUNk4dalb6kMMAv+Z
+6+hsTXBbKWWc3apdzK8BMewM69KN6Oqce+Zu9ydmDBpI125C4z/eIT574Q1w+2OqqGwaVLRcJXrJ
+osmLFqa7LH4XXgVNWG4SHQHuEhANxjJ/GP/89PrNbpHoNkm+Gkhpi8KWTRoSsmkXwQqQ1vp5Iki/
+untp+HDH+no32NgN0nZPV/+Qt+OR0t3vwmC3Zzrd/qqc8NSLf3Iizsafl7b4r4qgEKjZ+xjGtrVc
+UjyJthkqcwEKDwOzEmDyei+B26Nu/yYwl/WL3YlXtq09s68rxbd2AvCl1iuahhQqcvbjM4xdCUsT
+37uMdBNSSwIDAQABo4ICEDCCAgwwDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAQYwHQYD
+VR0OBBYEFE4L7xqkQFulF2mHMMo0aEPQQa7yMB8GA1UdIwQYMBaAFE4L7xqkQFulF2mHMMo0aEPQ
+Qa7yMIIBWgYDVR0gBIIBUTCCAU0wggFJBgsrBgEEAYG1NwEBATCCATgwLgYIKwYBBQUHAgEWImh0
+dHA6Ly93d3cuc3RhcnRzc2wuY29tL3BvbGljeS5wZGYwNAYIKwYBBQUHAgEWKGh0dHA6Ly93d3cu
+c3RhcnRzc2wuY29tL2ludGVybWVkaWF0ZS5wZGYwgc8GCCsGAQUFBwICMIHCMCcWIFN0YXJ0IENv
+bW1lcmNpYWwgKFN0YXJ0Q29tKSBMdGQuMAMCAQEagZZMaW1pdGVkIExpYWJpbGl0eSwgcmVhZCB0
+aGUgc2VjdGlvbiAqTGVnYWwgTGltaXRhdGlvbnMqIG9mIHRoZSBTdGFydENvbSBDZXJ0aWZpY2F0
+aW9uIEF1dGhvcml0eSBQb2xpY3kgYXZhaWxhYmxlIGF0IGh0dHA6Ly93d3cuc3RhcnRzc2wuY29t
+L3BvbGljeS5wZGYwEQYJYIZIAYb4QgEBBAQDAgAHMDgGCWCGSAGG+EIBDQQrFilTdGFydENvbSBG
+cmVlIFNTTCBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTANBgkqhkiG9w0BAQsFAAOCAgEAjo/n3JR5
+fPGFf59Jb2vKXfuM/gTFwWLRfUKKvFO3lANmMD+x5wqnUCBVJX92ehQN6wQOQOY+2IirByeDqXWm
+N3PH/UvSTa0XQMhGvjt/UfzDtgUx3M2FIk5xt/JxXrAaxrqTi3iSSoX4eA+D/i+tLPfkpLst0OcN
+Org+zvZ49q5HJMqjNTbOx8aHmNrs++myziebiMMEofYLWWivydsQD032ZGNcpRJvkrKTlMeIFw6T
+tn5ii5B/q06f/ON1FE8qMt9bDeD1e5MNq6HPh+GlBEXoPBKlCcWw0bdT82AUuoVpaiF8H3VhFyAX
+e2w7QSlc4axa0c2Mm+tgHRns9+Ww2vl5GKVFP0lDV9LdJNUso/2RjSe15esUBppMeyG7Oq0wBhjA
+2MFrLH9ZXF2RsXAiV+uKa0hK1Q8p7MZAwC+ITGgBF3f0JBlPvfrhsiAhS90a2Cl9qrjeVOwhVYBs
+HvUwyKMQ5bLmKhQxw4UtjJixhlpPiVktucf3HMiKf8CdBUrmQk9io20ppB+Fq9vlgcitKj1MXVuE
+JnHEhV5xJMqlG2zYYdMa4FTbzrqpMrUi9nNBCV24F10OD5mQ1kfabwo6YigUZ4LZ8dCAWZvLMdib
+D4x3TrVoivJs9iQOLWxwxXPR3hTQcY+203sC9uO41Alua551hDnmfyWl8kgAwKQB2j8=
+-----END CERTIFICATE-----
+
+StartCom Certification Authority G2
+===================================
+-----BEGIN CERTIFICATE-----
+MIIFYzCCA0ugAwIBAgIBOzANBgkqhkiG9w0BAQsFADBTMQswCQYDVQQGEwJJTDEWMBQGA1UEChMN
+U3RhcnRDb20gTHRkLjEsMCoGA1UEAxMjU3RhcnRDb20gQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkg
+RzIwHhcNMTAwMTAxMDEwMDAxWhcNMzkxMjMxMjM1OTAxWjBTMQswCQYDVQQGEwJJTDEWMBQGA1UE
+ChMNU3RhcnRDb20gTHRkLjEsMCoGA1UEAxMjU3RhcnRDb20gQ2VydGlmaWNhdGlvbiBBdXRob3Jp
+dHkgRzIwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQC2iTZbB7cgNr2Cu+EWIAOVeq8O
+o1XJJZlKxdBWQYeQTSFgpBSHO839sj60ZwNq7eEPS8CRhXBF4EKe3ikj1AENoBB5uNsDvfOpL9HG
+4A/LnooUCri99lZi8cVytjIl2bLzvWXFDSxu1ZJvGIsAQRSCb0AgJnooD/Uefyf3lLE3PbfHkffi
+Aez9lInhzG7TNtYKGXmu1zSCZf98Qru23QumNK9LYP5/Q0kGi4xDuFby2X8hQxfqp0iVAXV16iul
+Q5XqFYSdCI0mblWbq9zSOdIxHWDirMxWRST1HFSr7obdljKF+ExP6JV2tgXdNiNnvP8V4so75qbs
+O+wmETRIjfaAKxojAuuKHDp2KntWFhxyKrOq42ClAJ8Em+JvHhRYW6Vsi1g8w7pOOlz34ZYrPu8H
+vKTlXcxNnw3h3Kq74W4a7I/htkxNeXJdFzULHdfBR9qWJODQcqhaX2YtENwvKhOuJv4KHBnM0D4L
+nMgJLvlblnpHnOl68wVQdJVznjAJ85eCXuaPOQgeWeU1FEIT/wCc976qUM/iUUjXuG+v+E5+M5iS
+FGI6dWPPe/regjupuznixL0sAA7IF6wT700ljtizkC+p2il9Ha90OrInwMEePnWjFqmveiJdnxMa
+z6eg6+OGCtP95paV1yPIN93EfKo2rJgaErHgTuixO/XWb/Ew1wIDAQABo0IwQDAPBgNVHRMBAf8E
+BTADAQH/MA4GA1UdDwEB/wQEAwIBBjAdBgNVHQ4EFgQUS8W0QGutHLOlHGVuRjaJhwUMDrYwDQYJ
+KoZIhvcNAQELBQADggIBAHNXPyzVlTJ+N9uWkusZXn5T50HsEbZH77Xe7XRcxfGOSeD8bpkTzZ+K
+2s06Ctg6Wgk/XzTQLwPSZh0avZyQN8gMjgdalEVGKua+etqhqaRpEpKwfTbURIfXUfEpY9Z1zRbk
+J4kd+MIySP3bmdCPX1R0zKxnNBFi2QwKN4fRoxdIjtIXHfbX/dtl6/2o1PXWT6RbdejF0mCy2wl+
+JYt7ulKSnj7oxXehPOBKc2thz4bcQ///If4jXSRK9dNtD2IEBVeC2m6kMyV5Sy5UGYvMLD0w6dEG
+/+gyRr61M3Z3qAFdlsHB1b6uJcDJHgoJIIihDsnzb02CVAAgp9KP5DlUFy6NHrgbuxu9mk47EDTc
+nIhT76IxW1hPkWLIwpqazRVdOKnWvvgTtZ8SafJQYqz7Fzf07rh1Z2AQ+4NQ+US1dZxAF7L+/Xld
+blhYXzD8AK6vM8EOTmy6p6ahfzLbOOCxchcKK5HsamMm7YnUeMx0HgX4a/6ManY5Ka5lIxKVCCIc
+l85bBu4M4ru8H0ST9tg4RQUh7eStqxK2A6RCLi3ECToDZ2mEmuFZkIoohdVddLHRDiBYmxOlsGOm
+7XtH/UVVMKTumtTm4ofvmMkyghEpIrwACjFeLQ/Ajulrso8uBtjRkcfGEvRM/TAXw8HaOFvjqerm
+obp573PYtlNXLfbQ4ddI
+-----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-----
+
+TURKTRUST Certificate Services Provider Root 2007
+=================================================
+-----BEGIN CERTIFICATE-----
+MIIEPTCCAyWgAwIBAgIBATANBgkqhkiG9w0BAQUFADCBvzE/MD0GA1UEAww2VMOcUktUUlVTVCBF
+bGVrdHJvbmlrIFNlcnRpZmlrYSBIaXptZXQgU2HEn2xhecSxY8Sxc8SxMQswCQYDVQQGEwJUUjEP
+MA0GA1UEBwwGQW5rYXJhMV4wXAYDVQQKDFVUw5xSS1RSVVNUIEJpbGdpIMSwbGV0acWfaW0gdmUg
+QmlsacWfaW0gR8O8dmVubGnEn2kgSGl6bWV0bGVyaSBBLsWeLiAoYykgQXJhbMSxayAyMDA3MB4X
+DTA3MTIyNTE4MzcxOVoXDTE3MTIyMjE4MzcxOVowgb8xPzA9BgNVBAMMNlTDnFJLVFJVU1QgRWxl
+a3Ryb25payBTZXJ0aWZpa2EgSGl6bWV0IFNhxJ9sYXnEsWPEsXPEsTELMAkGA1UEBhMCVFIxDzAN
+BgNVBAcMBkFua2FyYTFeMFwGA1UECgxVVMOcUktUUlVTVCBCaWxnaSDEsGxldGnFn2ltIHZlIEJp
+bGnFn2ltIEfDvHZlbmxpxJ9pIEhpem1ldGxlcmkgQS7Fni4gKGMpIEFyYWzEsWsgMjAwNzCCASIw
+DQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAKu3PgqMyKVYFeaK7yc9SrToJdPNM8Ig3BnuiD9N
+YvDdE3ePYakqtdTyuTFYKTsvP2qcb3N2Je40IIDu6rfwxArNK4aUyeNgsURSsloptJGXg9i3phQv
+KUmi8wUG+7RP2qFsmmaf8EMJyupyj+sA1zU511YXRxcw9L6/P8JorzZAwan0qafoEGsIiveGHtya
+KhUG9qPw9ODHFNRRf8+0222vR5YXm3dx2KdxnSQM9pQ/hTEST7ruToK4uT6PIzdezKKqdfcYbwnT
+rqdUKDT74eA7YH2gvnmJhsifLfkKS8RQouf9eRbHegsYz85M733WB2+Y8a+xwXrXgTW4qhe04MsC
+AwEAAaNCMEAwHQYDVR0OBBYEFCnFkKslrxHkYb+j/4hhkeYO/pyBMA4GA1UdDwEB/wQEAwIBBjAP
+BgNVHRMBAf8EBTADAQH/MA0GCSqGSIb3DQEBBQUAA4IBAQAQDdr4Ouwo0RSVgrESLFF6QSU2TJ/s
+Px+EnWVUXKgWAkD6bho3hO9ynYYKVZ1WKKxmLNA6VpM0ByWtCLCPyA8JWcqdmBzlVPi5RX9ql2+I
+aE1KBiY3iAIOtsbWcpnOa3faYjGkVh+uX4132l32iPwa2Z61gfAyuOOI0JzzaqC5mxRZNTZPz/OO
+Xl0XrRWV2N2y1RVuAE6zS89mlOTgzbUF2mNXi+WzqtvALhyQRNsaXRik7r4EW5nVcV9VZWRi1aKb
+BFmGyGJ353yCRWo9F7/snXUMrqNvWtMvmDb08PUZqxFdyKbjKlhqQgnDvZImZjINXQhVdP+MmNAK
+poRq0Tl9
+-----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-----
+
+PSCProcert
+==========
+-----BEGIN CERTIFICATE-----
+MIIJhjCCB26gAwIBAgIBCzANBgkqhkiG9w0BAQsFADCCAR4xPjA8BgNVBAMTNUF1dG9yaWRhZCBk
+ZSBDZXJ0aWZpY2FjaW9uIFJhaXogZGVsIEVzdGFkbyBWZW5lem9sYW5vMQswCQYDVQQGEwJWRTEQ
+MA4GA1UEBxMHQ2FyYWNhczEZMBcGA1UECBMQRGlzdHJpdG8gQ2FwaXRhbDE2MDQGA1UEChMtU2lz
+dGVtYSBOYWNpb25hbCBkZSBDZXJ0aWZpY2FjaW9uIEVsZWN0cm9uaWNhMUMwQQYDVQQLEzpTdXBl
+cmludGVuZGVuY2lhIGRlIFNlcnZpY2lvcyBkZSBDZXJ0aWZpY2FjaW9uIEVsZWN0cm9uaWNhMSUw
+IwYJKoZIhvcNAQkBFhZhY3JhaXpAc3VzY2VydGUuZ29iLnZlMB4XDTEwMTIyODE2NTEwMFoXDTIw
+MTIyNTIzNTk1OVowgdExJjAkBgkqhkiG9w0BCQEWF2NvbnRhY3RvQHByb2NlcnQubmV0LnZlMQ8w
+DQYDVQQHEwZDaGFjYW8xEDAOBgNVBAgTB01pcmFuZGExKjAoBgNVBAsTIVByb3ZlZWRvciBkZSBD
+ZXJ0aWZpY2Fkb3MgUFJPQ0VSVDE2MDQGA1UEChMtU2lzdGVtYSBOYWNpb25hbCBkZSBDZXJ0aWZp
+Y2FjaW9uIEVsZWN0cm9uaWNhMQswCQYDVQQGEwJWRTETMBEGA1UEAxMKUFNDUHJvY2VydDCCAiIw
+DQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBANW39KOUM6FGqVVhSQ2oh3NekS1wwQYalNo97BVC
+wfWMrmoX8Yqt/ICV6oNEolt6Vc5Pp6XVurgfoCfAUFM+jbnADrgV3NZs+J74BCXfgI8Qhd19L3uA
+3VcAZCP4bsm+lU/hdezgfl6VzbHvvnpC2Mks0+saGiKLt38GieU89RLAu9MLmV+QfI4tL3czkkoh
+RqipCKzx9hEC2ZUWno0vluYC3XXCFCpa1sl9JcLB/KpnheLsvtF8PPqv1W7/U0HU9TI4seJfxPmO
+EO8GqQKJ/+MMbpfg353bIdD0PghpbNjU5Db4g7ayNo+c7zo3Fn2/omnXO1ty0K+qP1xmk6wKImG2
+0qCZyFSTXai20b1dCl53lKItwIKOvMoDKjSuc/HUtQy9vmebVOvh+qBa7Dh+PsHMosdEMXXqP+UH
+0quhJZb25uSgXTcYOWEAM11G1ADEtMo88aKjPvM6/2kwLkDd9p+cJsmWN63nOaK/6mnbVSKVUyqU
+td+tFjiBdWbjxywbk5yqjKPK2Ww8F22c3HxT4CAnQzb5EuE8XL1mv6JpIzi4mWCZDlZTOpx+FIyw
+Bm/xhnaQr/2v/pDGj59/i5IjnOcVdo/Vi5QTcmn7K2FjiO/mpF7moxdqWEfLcU8UC17IAggmosvp
+r2uKGcfLFFb14dq12fy/czja+eevbqQ34gcnAgMBAAGjggMXMIIDEzASBgNVHRMBAf8ECDAGAQH/
+AgEBMDcGA1UdEgQwMC6CD3N1c2NlcnRlLmdvYi52ZaAbBgVghl4CAqASDBBSSUYtRy0yMDAwNDAz
+Ni0wMB0GA1UdDgQWBBRBDxk4qpl/Qguk1yeYVKIXTC1RVDCCAVAGA1UdIwSCAUcwggFDgBStuyId
+xuDSAaj9dlBSk+2YwU2u06GCASakggEiMIIBHjE+MDwGA1UEAxM1QXV0b3JpZGFkIGRlIENlcnRp
+ZmljYWNpb24gUmFpeiBkZWwgRXN0YWRvIFZlbmV6b2xhbm8xCzAJBgNVBAYTAlZFMRAwDgYDVQQH
+EwdDYXJhY2FzMRkwFwYDVQQIExBEaXN0cml0byBDYXBpdGFsMTYwNAYDVQQKEy1TaXN0ZW1hIE5h
+Y2lvbmFsIGRlIENlcnRpZmljYWNpb24gRWxlY3Ryb25pY2ExQzBBBgNVBAsTOlN1cGVyaW50ZW5k
+ZW5jaWEgZGUgU2VydmljaW9zIGRlIENlcnRpZmljYWNpb24gRWxlY3Ryb25pY2ExJTAjBgkqhkiG
+9w0BCQEWFmFjcmFpekBzdXNjZXJ0ZS5nb2IudmWCAQowDgYDVR0PAQH/BAQDAgEGME0GA1UdEQRG
+MESCDnByb2NlcnQubmV0LnZloBUGBWCGXgIBoAwMClBTQy0wMDAwMDKgGwYFYIZeAgKgEgwQUklG
+LUotMzE2MzUzNzMtNzB2BgNVHR8EbzBtMEagRKBChkBodHRwOi8vd3d3LnN1c2NlcnRlLmdvYi52
+ZS9sY3IvQ0VSVElGSUNBRE8tUkFJWi1TSEEzODRDUkxERVIuY3JsMCOgIaAfhh1sZGFwOi8vYWNy
+YWl6LnN1c2NlcnRlLmdvYi52ZTA3BggrBgEFBQcBAQQrMCkwJwYIKwYBBQUHMAGGG2h0dHA6Ly9v
+Y3NwLnN1c2NlcnRlLmdvYi52ZTBBBgNVHSAEOjA4MDYGBmCGXgMBAjAsMCoGCCsGAQUFBwIBFh5o
+dHRwOi8vd3d3LnN1c2NlcnRlLmdvYi52ZS9kcGMwDQYJKoZIhvcNAQELBQADggIBACtZ6yKZu4Sq
+T96QxtGGcSOeSwORR3C7wJJg7ODU523G0+1ng3dS1fLld6c2suNUvtm7CpsR72H0xpkzmfWvADmN
+g7+mvTV+LFwxNG9s2/NkAZiqlCxB3RWGymspThbASfzXg0gTB1GEMVKIu4YXx2sviiCtxQuPcD4q
+uxtxj7mkoP3YldmvWb8lK5jpY5MvYB7Eqvh39YtsL+1+LrVPQA3uvFd359m21D+VJzog1eWuq2w1
+n8GhHVnchIHuTQfiSLaeS5UtQbHh6N5+LwUeaO6/u5BlOsju6rEYNxxik6SgMexxbJHmpHmJWhSn
+FFAFTKQAVzAswbVhltw+HoSvOULP5dAssSS830DD7X9jSr3hTxJkhpXzsOfIt+FTvZLm8wyWuevo
+5pLtp4EJFAv8lXrPj9Y0TzYS3F7RNHXGRoAvlQSMx4bEqCaJqD8Zm4G7UaRKhqsLEQ+xrmNTbSjq
+3TNWOByyrYDT13K9mmyZY+gAu0F2BbdbmRiKw7gSXFbPVgx96OLP7bx0R/vu0xdOIk9W/1DzLuY5
+poLWccret9W6aAjtmcz9opLLabid+Qqkpj5PkygqYWwHJgD/ll9ohri4zspV4KuxPX+Y1zMOWj3Y
+eMLEYC/HYvBhkdI4sPaeVdtAgAUSM84dkpvRabP/v/GSCmE1P93+hvS84Bpxs2Km
+-----END CERTIFICATE-----
+
+China Internet Network Information Center EV Certificates Root
+==============================================================
+-----BEGIN CERTIFICATE-----
+MIID9zCCAt+gAwIBAgIESJ8AATANBgkqhkiG9w0BAQUFADCBijELMAkGA1UEBhMCQ04xMjAwBgNV
+BAoMKUNoaW5hIEludGVybmV0IE5ldHdvcmsgSW5mb3JtYXRpb24gQ2VudGVyMUcwRQYDVQQDDD5D
+aGluYSBJbnRlcm5ldCBOZXR3b3JrIEluZm9ybWF0aW9uIENlbnRlciBFViBDZXJ0aWZpY2F0ZXMg
+Um9vdDAeFw0xMDA4MzEwNzExMjVaFw0zMDA4MzEwNzExMjVaMIGKMQswCQYDVQQGEwJDTjEyMDAG
+A1UECgwpQ2hpbmEgSW50ZXJuZXQgTmV0d29yayBJbmZvcm1hdGlvbiBDZW50ZXIxRzBFBgNVBAMM
+PkNoaW5hIEludGVybmV0IE5ldHdvcmsgSW5mb3JtYXRpb24gQ2VudGVyIEVWIENlcnRpZmljYXRl
+cyBSb290MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAm35z7r07eKpkQ0H1UN+U8i6y
+jUqORlTSIRLIOTJCBumD1Z9S7eVnAztUwYyZmczpwA//DdmEEbK40ctb3B75aDFk4Zv6dOtouSCV
+98YPjUesWgbdYavi7NifFy2cyjw1l1VxzUOFsUcW9SxTgHbP0wBkvUCZ3czY28Sf1hNfQYOL+Q2H
+klY0bBoQCxfVWhyXWIQ8hBouXJE0bhlffxdpxWXvayHG1VA6v2G5BY3vbzQ6sm8UY78WO5upKv23
+KzhmBsUs4qpnHkWnjQRmQvaPK++IIGmPMowUc9orhpFjIpryp9vOiYurXccUwVswah+xt54ugQEC
+7c+WXmPbqOY4twIDAQABo2MwYTAfBgNVHSMEGDAWgBR8cks5x8DbYqVPm6oYNJKiyoOCWTAPBgNV
+HRMBAf8EBTADAQH/MA4GA1UdDwEB/wQEAwIBBjAdBgNVHQ4EFgQUfHJLOcfA22KlT5uqGDSSosqD
+glkwDQYJKoZIhvcNAQEFBQADggEBACrDx0M3j92tpLIM7twUbY8opJhJywyA6vPtI2Z1fcXTIWd5
+0XPFtQO3WKwMVC/GVhMPMdoG52U7HW8228gd+f2ABsqjPWYWqJ1MFn3AlUa1UeTiH9fqBk1jjZaM
+7+czV0I664zBechNdn3e9rG3geCg+aF4RhcaVpjwTj2rHO3sOdwHSPdj/gauwqRcalsyiMXHM4Ws
+ZkJHwlgkmeHlPuV1LI5D1l08eB6olYIpUNHRFrrvwb562bTYzB5MRuF3sTGrvSrIzo9uoV1/A3U0
+5K2JRVRevq4opbs/eHnrc7MKDf2+yfdWrPa37S+bISnHOLaVxATywy39FCqQmbkHzJ8=
+-----END CERTIFICATE-----
+
+Swisscom Root CA 2
+==================
+-----BEGIN CERTIFICATE-----
+MIIF2TCCA8GgAwIBAgIQHp4o6Ejy5e/DfEoeWhhntjANBgkqhkiG9w0BAQsFADBkMQswCQYDVQQG
+EwJjaDERMA8GA1UEChMIU3dpc3Njb20xJTAjBgNVBAsTHERpZ2l0YWwgQ2VydGlmaWNhdGUgU2Vy
+dmljZXMxGzAZBgNVBAMTElN3aXNzY29tIFJvb3QgQ0EgMjAeFw0xMTA2MjQwODM4MTRaFw0zMTA2
+MjUwNzM4MTRaMGQxCzAJBgNVBAYTAmNoMREwDwYDVQQKEwhTd2lzc2NvbTElMCMGA1UECxMcRGln
+aXRhbCBDZXJ0aWZpY2F0ZSBTZXJ2aWNlczEbMBkGA1UEAxMSU3dpc3Njb20gUm9vdCBDQSAyMIIC
+IjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAlUJOhJ1R5tMJ6HJaI2nbeHCOFvErjw0DzpPM
+LgAIe6szjPTpQOYXTKueuEcUMncy3SgM3hhLX3af+Dk7/E6J2HzFZ++r0rk0X2s682Q2zsKwzxNo
+ysjL67XiPS4h3+os1OD5cJZM/2pYmLcX5BtS5X4HAB1f2uY+lQS3aYg5oUFgJWFLlTloYhyxCwWJ
+wDaCFCE/rtuh/bxvHGCGtlOUSbkrRsVPACu/obvLP+DHVxxX6NZp+MEkUp2IVd3Chy50I9AU/SpH
+Wrumnf2U5NGKpV+GY3aFy6//SSj8gO1MedK75MDvAe5QQQg1I3ArqRa0jG6F6bYRzzHdUyYb3y1a
+SgJA/MTAtukxGggo5WDDH8SQjhBiYEQN7Aq+VRhxLKX0srwVYv8c474d2h5Xszx+zYIdkeNL6yxS
+NLCK/RJOlrDrcH+eOfdmQrGrrFLadkBXeyq96G4DsguAhYidDMfCd7Camlf0uPoTXGiTOmekl9Ab
+mbeGMktg2M7v0Ax/lZ9vh0+Hio5fCHyqW/xavqGRn1V9TrALacywlKinh/LTSlDcX3KwFnUey7QY
+Ypqwpzmqm59m2I2mbJYV4+by+PGDYmy7Velhk6M99bFXi08jsJvllGov34zflVEpYKELKeRcVVi3
+qPyZ7iVNTA6z00yPhOgpD/0QVAKFyPnlw4vP5w8CAwEAAaOBhjCBgzAOBgNVHQ8BAf8EBAMCAYYw
+HQYDVR0hBBYwFDASBgdghXQBUwIBBgdghXQBUwIBMBIGA1UdEwEB/wQIMAYBAf8CAQcwHQYDVR0O
+BBYEFE0mICKJS9PVpAqhb97iEoHF8TwuMB8GA1UdIwQYMBaAFE0mICKJS9PVpAqhb97iEoHF8Twu
+MA0GCSqGSIb3DQEBCwUAA4ICAQAyCrKkG8t9voJXiblqf/P0wS4RfbgZPnm3qKhyN2abGu2sEzsO
+v2LwnN+ee6FTSA5BesogpxcbtnjsQJHzQq0Qw1zv/2BZf82Fo4s9SBwlAjxnffUy6S8w5X2lejjQ
+82YqZh6NM4OKb3xuqFp1mrjX2lhIREeoTPpMSQpKwhI3qEAMw8jh0FcNlzKVxzqfl9NX+Ave5XLz
+o9v/tdhZsnPdTSpxsrpJ9csc1fV5yJmz/MFMdOO0vSk3FQQoHt5FRnDsr7p4DooqzgB53MBfGWcs
+a0vvaGgLQ+OswWIJ76bdZWGgr4RVSJFSHMYlkSrQwSIjYVmvRRGFHQEkNI/Ps/8XciATwoCqISxx
+OQ7Qj1zB09GOInJGTB2Wrk9xseEFKZZZ9LuedT3PDTcNYtsmjGOpI99nBjx8Oto0QuFmtEYE3saW
+mA9LSHokMnWRn6z3aOkquVVlzl1h0ydw2Df+n7mvoC5Wt6NlUe07qxS/TFED6F+KBZvuim6c779o
++sjaC+NCydAXFJy3SuCvkychVSa1ZC+N8f+mQAWFBVzKBxlcCxMoTFh/wqXvRdpg065lYZ1Tg3TC
+rvJcwhbtkj6EPnNgiLx29CzP0H1907he0ZESEOnN3col49XtmS++dYFLJPlFRpTJKSFTnCZFqhMX
+5OfNeOI5wSsSnqaeG8XmDtkx2Q==
+-----END CERTIFICATE-----
+
+Swisscom Root EV CA 2
+=====================
+-----BEGIN CERTIFICATE-----
+MIIF4DCCA8igAwIBAgIRAPL6ZOJ0Y9ON/RAdBB92ylgwDQYJKoZIhvcNAQELBQAwZzELMAkGA1UE
+BhMCY2gxETAPBgNVBAoTCFN3aXNzY29tMSUwIwYDVQQLExxEaWdpdGFsIENlcnRpZmljYXRlIFNl
+cnZpY2VzMR4wHAYDVQQDExVTd2lzc2NvbSBSb290IEVWIENBIDIwHhcNMTEwNjI0MDk0NTA4WhcN
+MzEwNjI1MDg0NTA4WjBnMQswCQYDVQQGEwJjaDERMA8GA1UEChMIU3dpc3Njb20xJTAjBgNVBAsT
+HERpZ2l0YWwgQ2VydGlmaWNhdGUgU2VydmljZXMxHjAcBgNVBAMTFVN3aXNzY29tIFJvb3QgRVYg
+Q0EgMjCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBAMT3HS9X6lds93BdY7BxUglgRCgz
+o3pOCvrY6myLURYaVa5UJsTMRQdBTxB5f3HSek4/OE6zAMaVylvNwSqD1ycfMQ4jFrclyxy0uYAy
+Xhqdk/HoPGAsp15XGVhRXrwsVgu42O+LgrQ8uMIkqBPHoCE2G3pXKSinLr9xJZDzRINpUKTk4Rti
+GZQJo/PDvO/0vezbE53PnUgJUmfANykRHvvSEaeFGHR55E+FFOtSN+KxRdjMDUN/rhPSays/p8Li
+qG12W0OfvrSdsyaGOx9/5fLoZigWJdBLlzin5M8J0TbDC77aO0RYjb7xnglrPvMyxyuHxuxenPaH
+Za0zKcQvidm5y8kDnftslFGXEBuGCxobP/YCfnvUxVFkKJ3106yDgYjTdLRZncHrYTNaRdHLOdAG
+alNgHa/2+2m8atwBz735j9m9W8E6X47aD0upm50qKGsaCnw8qyIL5XctcfaCNYGu+HuB5ur+rPQa
+m3Rc6I8k9l2dRsQs0h4rIWqDJ2dVSqTjyDKXZpBy2uPUZC5f46Fq9mDU5zXNysRojddxyNMkM3Ox
+bPlq4SjbX8Y96L5V5jcb7STZDxmPX2MYWFCBUWVv8p9+agTnNCRxunZLWB4ZvRVgRaoMEkABnRDi
+xzgHcgplwLa7JSnaFp6LNYth7eVxV4O1PHGf40+/fh6Bn0GXAgMBAAGjgYYwgYMwDgYDVR0PAQH/
+BAQDAgGGMB0GA1UdIQQWMBQwEgYHYIV0AVMCAgYHYIV0AVMCAjASBgNVHRMBAf8ECDAGAQH/AgED
+MB0GA1UdDgQWBBRF2aWBbj2ITY1x0kbBbkUe88SAnTAfBgNVHSMEGDAWgBRF2aWBbj2ITY1x0kbB
+bkUe88SAnTANBgkqhkiG9w0BAQsFAAOCAgEAlDpzBp9SSzBc1P6xXCX5145v9Ydkn+0UjrgEjihL
+j6p7jjm02Vj2e6E1CqGdivdj5eu9OYLU43otb98TPLr+flaYC/NUn81ETm484T4VvwYmneTwkLbU
+wp4wLh/vx3rEUMfqe9pQy3omywC0Wqu1kx+AiYQElY2NfwmTv9SoqORjbdlk5LgpWgi/UOGED1V7
+XwgiG/W9mR4U9s70WBCCswo9GcG/W6uqmdjyMb3lOGbcWAXH7WMaLgqXfIeTK7KK4/HsGOV1timH
+59yLGn602MnTihdsfSlEvoqq9X46Lmgxk7lq2prg2+kupYTNHAq4Sgj5nPFhJpiTt3tm7JFe3VE/
+23MPrQRYCd0EApUKPtN236YQHoA96M2kZNEzx5LH4k5E4wnJTsJdhw4Snr8PyQUQ3nqjsTzyP6Wq
+J3mtMX0f/fwZacXduT98zca0wjAefm6S139hdlqP65VNvBFuIXxZN5nQBrz5Bm0yFqXZaajh3DyA
+HmBR3NdUIR7KYndP+tiPsys6DXhyyWhBWkdKwqPrGtcKqzwyVcgKEZzfdNbwQBUdyLmPtTbFr/gi
+uMod89a2GQ+fYWVq6nTIfI/DT11lgh/ZDYnadXL77/FHZxOzyNEZiCcmmpl5fx7kLD977vHeTYuW
+l8PVP3wbI+2ksx0WckNLIOFZfsLorSa/ovc=
+-----END CERTIFICATE-----
+
+CA Disig Root R1
+================
+-----BEGIN CERTIFICATE-----
+MIIFaTCCA1GgAwIBAgIJAMMDmu5QkG4oMA0GCSqGSIb3DQEBBQUAMFIxCzAJBgNVBAYTAlNLMRMw
+EQYDVQQHEwpCcmF0aXNsYXZhMRMwEQYDVQQKEwpEaXNpZyBhLnMuMRkwFwYDVQQDExBDQSBEaXNp
+ZyBSb290IFIxMB4XDTEyMDcxOTA5MDY1NloXDTQyMDcxOTA5MDY1NlowUjELMAkGA1UEBhMCU0sx
+EzARBgNVBAcTCkJyYXRpc2xhdmExEzARBgNVBAoTCkRpc2lnIGEucy4xGTAXBgNVBAMTEENBIERp
+c2lnIFJvb3QgUjEwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQCqw3j33Jijp1pedxiy
+3QRkD2P9m5YJgNXoqqXinCaUOuiZc4yd39ffg/N4T0Dhf9Kn0uXKE5Pn7cZ3Xza1lK/oOI7bm+V8
+u8yN63Vz4STN5qctGS7Y1oprFOsIYgrY3LMATcMjfF9DCCMyEtztDK3AfQ+lekLZWnDZv6fXARz2
+m6uOt0qGeKAeVjGu74IKgEH3G8muqzIm1Cxr7X1r5OJeIgpFy4QxTaz+29FHuvlglzmxZcfe+5nk
+CiKxLU3lSCZpq+Kq8/v8kiky6bM+TR8noc2OuRf7JT7JbvN32g0S9l3HuzYQ1VTW8+DiR0jm3hTa
+YVKvJrT1cU/J19IG32PK/yHoWQbgCNWEFVP3Q+V8xaCJmGtzxmjOZd69fwX3se72V6FglcXM6pM6
+vpmumwKjrckWtc7dXpl4fho5frLABaTAgqWjR56M6ly2vGfb5ipN0gTco65F97yLnByn1tUD3AjL
+LhbKXEAz6GfDLuemROoRRRw1ZS0eRWEkG4IupZ0zXWX4Qfkuy5Q/H6MMMSRE7cderVC6xkGbrPAX
+ZcD4XW9boAo0PO7X6oifmPmvTiT6l7Jkdtqr9O3jw2Dv1fkCyC2fg69naQanMVXVz0tv/wQFx1is
+XxYb5dKj6zHbHzMVTdDypVP1y+E9Tmgt2BLdqvLmTZtJ5cUoobqwWsagtQIDAQABo0IwQDAPBgNV
+HRMBAf8EBTADAQH/MA4GA1UdDwEB/wQEAwIBBjAdBgNVHQ4EFgQUiQq0OJMa5qvum5EY+fU8PjXQ
+04IwDQYJKoZIhvcNAQEFBQADggIBADKL9p1Kyb4U5YysOMo6CdQbzoaz3evUuii+Eq5FLAR0rBNR
+xVgYZk2C2tXck8An4b58n1KeElb21Zyp9HWc+jcSjxyT7Ff+Bw+r1RL3D65hXlaASfX8MPWbTx9B
+LxyE04nH4toCdu0Jz2zBuByDHBb6lM19oMgY0sidbvW9adRtPTXoHqJPYNcHKfyyo6SdbhWSVhlM
+CrDpfNIZTUJG7L399ldb3Zh+pE3McgODWF3vkzpBemOqfDqo9ayk0d2iLbYq/J8BjuIQscTK5Gfb
+VSUZP/3oNn6z4eGBrxEWi1CXYBmCAMBrTXO40RMHPuq2MU/wQppt4hF05ZSsjYSVPCGvxdpHyN85
+YmLLW1AL14FABZyb7bq2ix4Eb5YgOe2kfSnbSM6C3NQCjR0EMVrHS/BsYVLXtFHCgWzN4funodKS
+ds+xDzdYpPJScWc/DIh4gInByLUfkmO+p3qKViwaqKactV2zY9ATIKHrkWzQjX2v3wvkF7mGnjix
+lAxYjOBVqjtjbZqJYLhkKpLGN/R+Q0O3c+gB53+XD9fyexn9GtePyfqFa3qdnom2piiZk4hA9z7N
+UaPK6u95RyG1/jLix8NRb76AdPCkwzryT+lf3xkK8jsTQ6wxpLPn6/wY1gGp8yqPNg7rtLG8t0zJ
+a7+h89n07eLw4+1knj0vllJPgFOL
+-----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-----
+
+WoSign
+======
+-----BEGIN CERTIFICATE-----
+MIIFdjCCA16gAwIBAgIQXmjWEXGUY1BWAGjzPsnFkTANBgkqhkiG9w0BAQUFADBVMQswCQYDVQQG
+EwJDTjEaMBgGA1UEChMRV29TaWduIENBIExpbWl0ZWQxKjAoBgNVBAMTIUNlcnRpZmljYXRpb24g
+QXV0aG9yaXR5IG9mIFdvU2lnbjAeFw0wOTA4MDgwMTAwMDFaFw0zOTA4MDgwMTAwMDFaMFUxCzAJ
+BgNVBAYTAkNOMRowGAYDVQQKExFXb1NpZ24gQ0EgTGltaXRlZDEqMCgGA1UEAxMhQ2VydGlmaWNh
+dGlvbiBBdXRob3JpdHkgb2YgV29TaWduMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEA
+vcqNrLiRFVaXe2tcesLea9mhsMMQI/qnobLMMfo+2aYpbxY94Gv4uEBf2zmoAHqLoE1UfcIiePyO
+CbiohdfMlZdLdNiefvAA5A6JrkkoRBoQmTIPJYhTpA2zDxIIFgsDcSccf+Hb0v1naMQFXQoOXXDX
+2JegvFNBmpGN9J42Znp+VsGQX+axaCA2pIwkLCxHC1l2ZjC1vt7tj/id07sBMOby8w7gLJKA84X5
+KIq0VC6a7fd2/BVoFutKbOsuEo/Uz/4Mx1wdC34FMr5esAkqQtXJTpCzWQ27en7N1QhatH/YHGkR
++ScPewavVIMYe+HdVHpRaG53/Ma/UkpmRqGyZxq7o093oL5d//xWC0Nyd5DKnvnyOfUNqfTq1+ez
+EC8wQjchzDBwyYaYD8xYTYO7feUapTeNtqwylwA6Y3EkHp43xP901DfA4v6IRmAR3Qg/UDaruHqk
+lWJqbrDKaiFaafPz+x1wOZXzp26mgYmhiMU7ccqjUu6Du/2gd/Tkb+dC221KmYo0SLwX3OSACCK2
+8jHAPwQ+658geda4BmRkAjHXqc1S+4RFaQkAKtxVi8QGRkvASh0JWzko/amrzgD5LkhLJuYwTKVY
+yrREgk/nkR4zw7CT/xH8gdLKH3Ep3XZPkiWvHYG3Dy+MwwbMLyejSuQOmbp8HkUff6oZRZb9/D0C
+AwEAAaNCMEAwDgYDVR0PAQH/BAQDAgEGMA8GA1UdEwEB/wQFMAMBAf8wHQYDVR0OBBYEFOFmzw7R
+8bNLtwYgFP6HEtX2/vs+MA0GCSqGSIb3DQEBBQUAA4ICAQCoy3JAsnbBfnv8rWTjMnvMPLZdRtP1
+LOJwXcgu2AZ9mNELIaCJWSQBnfmvCX0KI4I01fx8cpm5o9dU9OpScA7F9dY74ToJMuYhOZO9sxXq
+T2r09Ys/L3yNWC7F4TmgPsc9SnOeQHrAK2GpZ8nzJLmzbVUsWh2eJXLOC62qx1ViC777Y7NhRCOj
+y+EaDveaBk3e1CNOIZZbOVtXHS9dCF4Jef98l7VNg64N1uajeeAz0JmWAjCnPv/So0M/BVoG6kQC
+2nz4SNAzqfkHx5Xh9T71XXG68pWpdIhhWeO/yloTunK0jF02h+mmxTwTv97QRCbut+wucPrXnbes
+5cVAWubXbHssw1abR80LzvobtCHXt2a49CUwi1wNuepnsvRtrtWhnk/Yn+knArAdBtaP4/tIEp9/
+EaEQPkxROpaw0RPxx9gmrjrKkcRpnd8BKWRRb2jaFOwIQZeQjdCygPLPwj2/kWjFgGcexGATVdVh
+mVd8upUPYUk6ynW8yQqTP2cOEvIo4jEbwFcW3wh8GcF+Dx+FHgo2fFt+J7x6v+Db9NpSvd4MVHAx
+kUOVyLzwPt0JfjBkUO1/AaQzZ01oT74V77D2AhGiGxMlOtzCWfHjXEa7ZywCRuoeSKbmW9m1vFGi
+kpbbqsY3Iqb+zCB0oy2pLmvLwIIRIbWTee5Ehr7XHuQe+w==
+-----END CERTIFICATE-----
+
+WoSign China
+============
+-----BEGIN CERTIFICATE-----
+MIIFWDCCA0CgAwIBAgIQUHBrzdgT/BtOOzNy0hFIjTANBgkqhkiG9w0BAQsFADBGMQswCQYDVQQG
+EwJDTjEaMBgGA1UEChMRV29TaWduIENBIExpbWl0ZWQxGzAZBgNVBAMMEkNBIOayg+mAmuagueiv
+geS5pjAeFw0wOTA4MDgwMTAwMDFaFw0zOTA4MDgwMTAwMDFaMEYxCzAJBgNVBAYTAkNOMRowGAYD
+VQQKExFXb1NpZ24gQ0EgTGltaXRlZDEbMBkGA1UEAwwSQ0Eg5rKD6YCa5qC56K+B5LmmMIICIjAN
+BgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEA0EkhHiX8h8EqwqzbdoYGTufQdDTc7WU1/FDWiD+k
+8H/rD195L4mx/bxjWDeTmzj4t1up+thxx7S8gJeNbEvxUNUqKaqoGXqW5pWOdO2XCld19AXbbQs5
+uQF/qvbW2mzmBeCkTVL829B0txGMe41P/4eDrv8FAxNXUDf+jJZSEExfv5RxadmWPgxDT74wwJ85
+dE8GRV2j1lY5aAfMh09Qd5Nx2UQIsYo06Yms25tO4dnkUkWMLhQfkWsZHWgpLFbE4h4TV2TwYeO5
+Ed+w4VegG63XX9Gv2ystP9Bojg/qnw+LNVgbExz03jWhCl3W6t8Sb8D7aQdGctyB9gQjF+BNdeFy
+b7Ao65vh4YOhn0pdr8yb+gIgthhid5E7o9Vlrdx8kHccREGkSovrlXLp9glk3Kgtn3R46MGiCWOc
+76DbT52VqyBPt7D3h1ymoOQ3OMdc4zUPLK2jgKLsLl3Az+2LBcLmc272idX10kaO6m1jGx6KyX2m
++Jzr5dVjhU1zZmkR/sgO9MHHZklTfuQZa/HpelmjbX7FF+Ynxu8b22/8DU0GAbQOXDBGVWCvOGU6
+yke6rCzMRh+yRpY/8+0mBe53oWprfi1tWFxK1I5nuPHa1UaKJ/kR8slC/k7e3x9cxKSGhxYzoacX
+GKUN5AXlK8IrC6KVkLn9YDxOiT7nnO4fuwECAwEAAaNCMEAwDgYDVR0PAQH/BAQDAgEGMA8GA1Ud
+EwEB/wQFMAMBAf8wHQYDVR0OBBYEFOBNv9ybQV0T6GTwp+kVpOGBwboxMA0GCSqGSIb3DQEBCwUA
+A4ICAQBqinA4WbbaixjIvirTthnVZil6Xc1bL3McJk6jfW+rtylNpumlEYOnOXOvEESS5iVdT2H6
+yAa+Tkvv/vMx/sZ8cApBWNromUuWyXi8mHwCKe0JgOYKOoICKuLJL8hWGSbueBwj/feTZU7n85iY
+r83d2Z5AiDEoOqsuC7CsDCT6eiaY8xJhEPRdF/d+4niXVOKM6Cm6jBAyvd0zaziGfjk9DgNyp115
+j0WKWa5bIW4xRtVZjc8VX90xJc/bYNaBRHIpAlf2ltTW/+op2znFuCyKGo3Oy+dCMYYFaA6eFN0A
+kLppRQjbbpCBhqcqBT/mhDn4t/lXX0ykeVoQDF7Va/81XwVRHmyjdanPUIPTfPRm94KNPQx96N97
+qA4bLJyuQHCH2u2nFoJavjVsIE4iYdm8UXrNemHcSxH5/mc0zy4EZmFcV5cjjPOGG0jfKq+nwf/Y
+jj4Du9gqsPoUJbJRa4ZDhS4HIxaAjUz7tGM7zMN07RujHv41D198HRaG9Q7DlfEvr10lO1Hm13ZB
+ONFLAzkopR6RctR9q5czxNM+4Gm2KHmgCY0c0f9BckgG/Jou5yD5m6Leie2uPAmvylezkolwQOQv
+T8Jwg0DXJCxr5wkf09XHwQj02w47HAcLQxGEIYbpgNR12KvxAmLBsX5VYc8T1yaw15zLKYs4SgsO
+kI26oQ==
+-----END CERTIFICATE-----
diff --git a/library/certs/comodo.pem b/library/certs/comodo.pem
new file mode 100644
index 000000000..67de1292c
--- /dev/null
+++ b/library/certs/comodo.pem
@@ -0,0 +1,92 @@
+-----BEGIN CERTIFICATE-----
+MIIGCDCCA/CgAwIBAgIQKy5u6tl1NmwUim7bo3yMBzANBgkqhkiG9w0BAQwFADCB
+hTELMAkGA1UEBhMCR0IxGzAZBgNVBAgTEkdyZWF0ZXIgTWFuY2hlc3RlcjEQMA4G
+A1UEBxMHU2FsZm9yZDEaMBgGA1UEChMRQ09NT0RPIENBIExpbWl0ZWQxKzApBgNV
+BAMTIkNPTU9ETyBSU0EgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkwHhcNMTQwMjEy
+MDAwMDAwWhcNMjkwMjExMjM1OTU5WjCBkDELMAkGA1UEBhMCR0IxGzAZBgNVBAgT
+EkdyZWF0ZXIgTWFuY2hlc3RlcjEQMA4GA1UEBxMHU2FsZm9yZDEaMBgGA1UEChMR
+Q09NT0RPIENBIExpbWl0ZWQxNjA0BgNVBAMTLUNPTU9ETyBSU0EgRG9tYWluIFZh
+bGlkYXRpb24gU2VjdXJlIFNlcnZlciBDQTCCASIwDQYJKoZIhvcNAQEBBQADggEP
+ADCCAQoCggEBAI7CAhnhoFmk6zg1jSz9AdDTScBkxwtiBUUWOqigwAwCfx3M28Sh
+bXcDow+G+eMGnD4LgYqbSRutA776S9uMIO3Vzl5ljj4Nr0zCsLdFXlIvNN5IJGS0
+Qa4Al/e+Z96e0HqnU4A7fK31llVvl0cKfIWLIpeNs4TgllfQcBhglo/uLQeTnaG6
+ytHNe+nEKpooIZFNb5JPJaXyejXdJtxGpdCsWTWM/06RQ1A/WZMebFEh7lgUq/51
+UHg+TLAchhP6a5i84DuUHoVS3AOTJBhuyydRReZw3iVDpA3hSqXttn7IzW3uLh0n
+c13cRTCAquOyQQuvvUSH2rnlG51/ruWFgqUCAwEAAaOCAWUwggFhMB8GA1UdIwQY
+MBaAFLuvfgI9+qbxPISOre44mOzZMjLUMB0GA1UdDgQWBBSQr2o6lFoL2JDqElZz
+30O0Oija5zAOBgNVHQ8BAf8EBAMCAYYwEgYDVR0TAQH/BAgwBgEB/wIBADAdBgNV
+HSUEFjAUBggrBgEFBQcDAQYIKwYBBQUHAwIwGwYDVR0gBBQwEjAGBgRVHSAAMAgG
+BmeBDAECATBMBgNVHR8ERTBDMEGgP6A9hjtodHRwOi8vY3JsLmNvbW9kb2NhLmNv
+bS9DT01PRE9SU0FDZXJ0aWZpY2F0aW9uQXV0aG9yaXR5LmNybDBxBggrBgEFBQcB
+AQRlMGMwOwYIKwYBBQUHMAKGL2h0dHA6Ly9jcnQuY29tb2RvY2EuY29tL0NPTU9E
+T1JTQUFkZFRydXN0Q0EuY3J0MCQGCCsGAQUFBzABhhhodHRwOi8vb2NzcC5jb21v
+ZG9jYS5jb20wDQYJKoZIhvcNAQEMBQADggIBAE4rdk+SHGI2ibp3wScF9BzWRJ2p
+mj6q1WZmAT7qSeaiNbz69t2Vjpk1mA42GHWx3d1Qcnyu3HeIzg/3kCDKo2cuH1Z/
+e+FE6kKVxF0NAVBGFfKBiVlsit2M8RKhjTpCipj4SzR7JzsItG8kO3KdY3RYPBps
+P0/HEZrIqPW1N+8QRcZs2eBelSaz662jue5/DJpmNXMyYE7l3YphLG5SEXdoltMY
+dVEVABt0iN3hxzgEQyjpFv3ZBdRdRydg1vs4O2xyopT4Qhrf7W8GjEXCBgCq5Ojc
+2bXhc3js9iPc0d1sjhqPpepUfJa3w/5Vjo1JXvxku88+vZbrac2/4EjxYoIQ5QxG
+V/Iz2tDIY+3GH5QFlkoakdH368+PUq4NCNk+qKBR6cGHdNXJ93SrLlP7u3r7l+L4
+HyaPs9Kg4DdbKDsx5Q5XLVq4rXmsXiBmGqW5prU5wfWYQ//u+aen/e7KJD2AFsQX
+j4rBYKEMrltDR5FL1ZoXX/nUh8HCjLfn4g8wGTeGrODcQgPmlKidrv0PJFGUzpII
+0fxQ8ANAe4hZ7Q7drNJ3gjTcBpUC2JD5Leo31Rpg0Gcg19hCC0Wvgmje3WYkN5Ap
+lBlGGSW4gNfL1IYoakRwJiNiqZ+Gb7+6kHDSVneFeO/qJakXzlByjAA6quPbYzSf
++AZxAeKCINT+b72x
+-----END CERTIFICATE-----
+-----BEGIN CERTIFICATE-----
+MIIFdDCCBFygAwIBAgIQJ2buVutJ846r13Ci/ITeIjANBgkqhkiG9w0BAQwFADBv
+MQswCQYDVQQGEwJTRTEUMBIGA1UEChMLQWRkVHJ1c3QgQUIxJjAkBgNVBAsTHUFk
+ZFRydXN0IEV4dGVybmFsIFRUUCBOZXR3b3JrMSIwIAYDVQQDExlBZGRUcnVzdCBF
+eHRlcm5hbCBDQSBSb290MB4XDTAwMDUzMDEwNDgzOFoXDTIwMDUzMDEwNDgzOFow
+gYUxCzAJBgNVBAYTAkdCMRswGQYDVQQIExJHcmVhdGVyIE1hbmNoZXN0ZXIxEDAO
+BgNVBAcTB1NhbGZvcmQxGjAYBgNVBAoTEUNPTU9ETyBDQSBMaW1pdGVkMSswKQYD
+VQQDEyJDT01PRE8gUlNBIENlcnRpZmljYXRpb24gQXV0aG9yaXR5MIICIjANBgkq
+hkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAkehUktIKVrGsDSTdxc9EZ3SZKzejfSNw
+AHG8U9/E+ioSj0t/EFa9n3Byt2F/yUsPF6c947AEYe7/EZfH9IY+Cvo+XPmT5jR6
+2RRr55yzhaCCenavcZDX7P0N+pxs+t+wgvQUfvm+xKYvT3+Zf7X8Z0NyvQwA1onr
+ayzT7Y+YHBSrfuXjbvzYqOSSJNpDa2K4Vf3qwbxstovzDo2a5JtsaZn4eEgwRdWt
+4Q08RWD8MpZRJ7xnw8outmvqRsfHIKCxH2XeSAi6pE6p8oNGN4Tr6MyBSENnTnIq
+m1y9TBsoilwie7SrmNnu4FGDwwlGTm0+mfqVF9p8M1dBPI1R7Qu2XK8sYxrfV8g/
+vOldxJuvRZnio1oktLqpVj3Pb6r/SVi+8Kj/9Lit6Tf7urj0Czr56ENCHonYhMsT
+8dm74YlguIwoVqwUHZwK53Hrzw7dPamWoUi9PPevtQ0iTMARgexWO/bTouJbt7IE
+IlKVgJNp6I5MZfGRAy1wdALqi2cVKWlSArvX31BqVUa/oKMoYX9w0MOiqiwhqkfO
+KJwGRXa/ghgntNWutMtQ5mv0TIZxMOmm3xaG4Nj/QN370EKIf6MzOi5cHkERgWPO
+GHFrK+ymircxXDpqR+DDeVnWIBqv8mqYqnK8V0rSS527EPywTEHl7R09XiidnMy/
+s1Hap0flhFMCAwEAAaOB9DCB8TAfBgNVHSMEGDAWgBStvZh6NLQm9/rEJlTvA73g
+JMtUGjAdBgNVHQ4EFgQUu69+Aj36pvE8hI6t7jiY7NkyMtQwDgYDVR0PAQH/BAQD
+AgGGMA8GA1UdEwEB/wQFMAMBAf8wEQYDVR0gBAowCDAGBgRVHSAAMEQGA1UdHwQ9
+MDswOaA3oDWGM2h0dHA6Ly9jcmwudXNlcnRydXN0LmNvbS9BZGRUcnVzdEV4dGVy
+bmFsQ0FSb290LmNybDA1BggrBgEFBQcBAQQpMCcwJQYIKwYBBQUHMAGGGWh0dHA6
+Ly9vY3NwLnVzZXJ0cnVzdC5jb20wDQYJKoZIhvcNAQEMBQADggEBAGS/g/FfmoXQ
+zbihKVcN6Fr30ek+8nYEbvFScLsePP9NDXRqzIGCJdPDoCpdTPW6i6FtxFQJdcfj
+Jw5dhHk3QBN39bSsHNA7qxcS1u80GH4r6XnTq1dFDK8o+tDb5VCViLvfhVdpfZLY
+Uspzgb8c8+a4bmYRBbMelC1/kZWSWfFMzqORcUx8Rww7Cxn2obFshj5cqsQugsv5
+B5a6SE2Q8pTIqXOi6wZ7I53eovNNVZ96YUWYGGjHXkBrI/V5eu+MtWuLt29G9Hvx
+PUsE2JOAWVrgQSQdso8VYFhH2+9uRv0V9dlfmrPb2LjkQLPNlzmuhbsdjrzch5vR
+pu/xO28QOG8=
+-----END CERTIFICATE-----
+-----BEGIN CERTIFICATE-----
+MIIENjCCAx6gAwIBAgIBATANBgkqhkiG9w0BAQUFADBvMQswCQYDVQQGEwJTRTEU
+MBIGA1UEChMLQWRkVHJ1c3QgQUIxJjAkBgNVBAsTHUFkZFRydXN0IEV4dGVybmFs
+IFRUUCBOZXR3b3JrMSIwIAYDVQQDExlBZGRUcnVzdCBFeHRlcm5hbCBDQSBSb290
+MB4XDTAwMDUzMDEwNDgzOFoXDTIwMDUzMDEwNDgzOFowbzELMAkGA1UEBhMCU0Ux
+FDASBgNVBAoTC0FkZFRydXN0IEFCMSYwJAYDVQQLEx1BZGRUcnVzdCBFeHRlcm5h
+bCBUVFAgTmV0d29yazEiMCAGA1UEAxMZQWRkVHJ1c3QgRXh0ZXJuYWwgQ0EgUm9v
+dDCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALf3GjPm8gAELTngTlvt
+H7xsD821+iO2zt6bETOXpClMfZOfvUq8k+0DGuOPz+VtUFrWlymUWoCwSXrbLpX9
+uMq/NzgtHj6RQa1wVsfwTz/oMp50ysiQVOnGXw94nZpAPA6sYapeFI+eh6FqUNzX
+mk6vBbOmcZSccbNQYArHE504B4YCqOmoaSYYkKtMsE8jqzpPhNjfzp/haW+710LX
+a0Tkx63ubUFfclpxCDezeWWkWaCUN/cALw3CknLa0Dhy2xSoRcRdKn23tNbE7qzN
+E0S3ySvdQwAl+mG5aWpYIxG3pzOPVnVZ9c0p10a3CitlttNCbxWyuHv77+ldU9U0
+WicCAwEAAaOB3DCB2TAdBgNVHQ4EFgQUrb2YejS0Jvf6xCZU7wO94CTLVBowCwYD
+VR0PBAQDAgEGMA8GA1UdEwEB/wQFMAMBAf8wgZkGA1UdIwSBkTCBjoAUrb2YejS0
+Jvf6xCZU7wO94CTLVBqhc6RxMG8xCzAJBgNVBAYTAlNFMRQwEgYDVQQKEwtBZGRU
+cnVzdCBBQjEmMCQGA1UECxMdQWRkVHJ1c3QgRXh0ZXJuYWwgVFRQIE5ldHdvcmsx
+IjAgBgNVBAMTGUFkZFRydXN0IEV4dGVybmFsIENBIFJvb3SCAQEwDQYJKoZIhvcN
+AQEFBQADggEBALCb4IUlwtYj4g+WBpKdQZic2YR5gdkeWxQHIzZlj7DYd7usQWxH
+YINRsPkyPef89iYTx4AWpb9a/IfPeHmJIZriTAcKhjW88t5RxNKWt9x+Tu5w/Rw5
+6wwCURQtjr0W4MHfRnXnJK3s9EK0hZNwEGe6nQY1ShjTK3rMUUKhemPR5ruhxSvC
+Nr4TDea9Y355e6cJDUCrat2PisP29owaQgVR1EX1n6diIWgVIEM8med8vSTYqZEX
+c4g/VhsxOBi0cQ+azcgOno4uG+GMmIPLHzHxREzGBHNJdmAPx/i9F4BrLunMTA5a
+mnkPIAou1Z5jJh5VkpTYghdae9C8x49OhgQ=
+-----END CERTIFICATE-----
diff --git a/library/colorbox/README.md b/library/colorbox/README.md
index bc002381e..5e7c1a379 100644
--- a/library/colorbox/README.md
+++ b/library/colorbox/README.md
@@ -1,11 +1,231 @@
-## About ColorBox:
+## About Colorbox:
A customizable lightbox plugin for jQuery. See the [project page](http://jacklmoore.com/colorbox/) for documentation and a demonstration, and the [FAQ](http://jacklmoore.com/colorbox/faq/) for solutions and examples to common issues. Released under the [MIT license](http://www.opensource.org/licenses/mit-license.php).
-## Translations Welcome
-Send me your language configuration files. See /i18n/jquery.colorbox-de.js as an example.
-
## Changelog:
+### Version 1.5.14 - 2014/9/9
+
+* When opening, append Colorbox to the DOM if it was detached for whatever reason. Fixes #645.
+
+### Version 1.5.13 - 2014/8/4
+
+* Fixed regression introduced with v1.5.12 with legacy versions of jQuery (1.3x-1.6x). References #628.
+
+### Version 1.5.12 - 2014/7/31
+
+* Allowed setting the overlay opacity via CSS, by setting Colorbox's opacity property to false. References #628.
+
+### Version 1.5.11 - 2014/7/31
+
+* Fixed bug where setting opacity to 0 was ignored. Fixes #628.
+
+### Version 1.5.10 - 2014/6/26
+
+* Minor misc. tweaks (merging pull requests #611, #612, #615, #619, #620).
+
+### Version 1.5.9 - 2014/4/25
+
+* Fixed inline content bug when using child selectors. Fixes #599
+
+### Version 1.5.8 - 2014/4/15
+
+* Fixed accidental leak of global variable. References #591
+* Enabled strict mode. Fixes #597
+
+### Version 1.5.7 - 2014/4/15
+
+* Fix potential error when calling Colorbox directly. References #591
+* Potentially worked around browser limitation of reporting that an image height and width is 0 immediately after onload. Fixes #535
+
+### Version 1.5.6 - 2014/4/4
+
+* Applied maxWidth and maxHeight to the initialWidth and initialHeight. Fixes #391
+
+### Version 1.5.5 - 2014/3/13
+
+* Allow setting the overlay opacity through CSS, rather than having to use Colorbox's opacity property. Fixes #580
+
+### Version 1.5.4 - 2014/3/7
+
+* Fixed potential issue where IE9+ wouldn't close the modal when clicking on the overlay. Fixes #576
+
+### Version 1.5.3 - 2014/3/4
+
+* Added access to settings object in callbacks.
+
+### Version 1.5.2 - 2014/2/28
+
+* Added svg to image types regex.
+
+### Version 1.5.1 - 2014/2/27
+
+* Fixed regression that broke direct calls to Colorbox, ie. $.colorbox(…)
+
+### Version 1.5.0 - 2014/2/27
+
+* Changed when the className is applied: immediately on open, but only updated immediately prior to transition. Fixes #565
+* Fixed potential style flash if #cboxLoadedContent is given a background. Fixes #567
+* Misc. code cleanup
+
+### Version 1.4.37 - 2014/2/11
+
+* Fixed potential error when resizing. Fixes #254
+* Added Microsoft's JPEG XR to photo detection regex.
+
+### Version 1.4.33 - 2013/10/31
+
+* Fixed an issue where private events propagated to the document in versions of jQuery prior to 1.7. Fixes #525, Fixes #526
+
+### Version 1.4.32 - 2013/10/16
+
+* Updated stylesheets to avoid issue with using `div {max-width:100%}` (Fixes #520)
+
+### Version 1.4.31 - 2013/9/25
+
+* Used setAttribute to set londesc, so that the value is accessible via DOM Node longDesc property #508
+
+### Version 1.4.30 - 2013/9/24
+
+* Added longdesc and aria-describedby attributes to photos. Fixes #508
+
+### Version 1.4.29 - 2013/9/10
+
+* Fixed a slideshow regression from 1.4.27
+* Fixed a potential issue with the starting size of #cboxLoadedContent
+
+### Version 1.4.28 - 2013/9/4
+
+* Fixed a potential issue with using the open property with mixed slideshow and non-slideshow groups
+
+### Version 1.4.27 - 2013/7/16
+
+* Fixed a width calculation issue relating to using margin:auto on #cboxLoadedContent.
+
+### Version 1.4.26 - 2013/6/30
+
+* Fixed a regression in IE7 and IE8 that was causing an error.
+
+### Version 1.4.25 - 2013/6/28
+
+* Use an animation speed of zero between same-sized content (fixed).
+* Removed temporary fix for jQuery UI 1.8
+
+### Version 1.4.24 - 2013/6/24
+
+* Added closeButton option. Set to false to remove the close button.
+
+### Version 1.4.23 - 2013/6/23
+
+* Bugfix loading overlay/graphic append order
+
+### Version 1.4.22 - 2013/6/19
+
+* Updated manifest files for the jQuery plugin repository and Bower (no changes to plugin)
+
+### Version 1.4.21 - 2013/6/6
+
+* Replaced new Image() with document.createElement('img') to avoid a potential bug in Chrome 27.
+
+### Version 1.4.20 - 2013/6/5
+
+* Fixing bug/typo from last update.
+
+### Version 1.4.19 - 2013/6/3
+
+* Fixed bug where Colorbox was capturing ctrl+click on assigned links on windows browsers with jQuery 1.7+, rather than ignoring.
+
+### Version 1.4.18 - 2013/5/30
+
+* Fixed a scroll position issue when using $.colorbox.resize()
+
+### Version 1.4.17 - 2013/5/23
+
+* Possible fix for a Chrome 27 issue (https://github.com/jackmoore/colorbox/pull/438#issuecomment-18334804)
+
+### Version 1.4.16 - 2013/5/20
+
+* Added trapFocus setting to allow disabling of focus trapping
+
+### Version 1.4.15 - 2013/4/22
+
+* Added .webp to list of recognized image extensions
+
+### Version 1.4.14 - 2013/4/16
+
+* Added fadeOut property to control the closing fadeOut speed.
+* Removed longdesc attribute for now.
+
+### Version 1.4.13 - 2013/4/11
+
+* Fixed an error involving IE7/IE8 and legacy versions of jQuery
+
+### Version 1.4.12 - 2013/4/9
+
+* Fixed a potential conflict with Twitter Bootstrap default img styles.
+
+### Version 1.4.11 - 2013/4/9
+
+* Added `type='button'` to buttons to prevent accidental form submission
+* Added alt and longdesc attributes to photo content if they are present on the calling element.
+
+### Version 1.4.10 - 2013/4/2
+
+* Better 'old IE' feature detection that fixes an error with jQuery 2.0.0pre.
+
+### Version 1.4.9 - 2013/4/2
+
+* Fixes bug introduced in previous version.
+
+### Version 1.4.8 - 2013/4/2
+
+* Dropped IE6 support.
+* Fixed other issues with $.colorbox.remove.
+
+### Version 1.4.7 - 2013/4/1
+
+* Prevented an error if $.colorbox.remove is called during the transition.
+
+### Version 1.4.6 - 2013/3/19
+
+* Minor change to work around a jQuery 1.4.2 bug for legacy users.
+
+### Version 1.4.5 - 2013/3/10
+
+* Minor change to apply the close and className properties sooner.
+
+### Version 1.4.4 - 2013/3/10
+
+* Fixed an issue with percent-based heights in iOS
+* Fixed an issue with ajax requests being applied at the wrong time.
+
+### Version 1.4.3 - 2013/2/18
+
+* Made image preloading aware of retina settings.
+
+### Version 1.4.2 - 2013/2/18
+
+* Removed $.contains for compatibility with jQuery 1.3.x
+
+### Version 1.4.1 - 2013/2/14
+
+* Ignored left and right arrow keypresses if combined with the alt key.
+
+### Version 1.4.0 - 2013/2/12
+
+* Better accessibility:
+ * Replaced div controls with buttons
+ * Tabbed navigation confined to modal window
+ * Added aria role
+
+### Version 1.3.34 - 2013/2/4
+
+* Updated manifest for plugins.jquery.com
+
+### Version 1.3.33 - 2013/2/4
+
+* Added retina display properties: retinaImage, retinaUrl, retinaSuffix
+* Fixed iframe scrolling on iOS devices.
+
### Version 1.3.32 - 2013/1/31
* Improved internal event subscribing & fixed event bug introduced in v1.3.21
@@ -16,7 +236,7 @@ Send me your language configuration files. See /i18n/jquery.colorbox-de.js as a
### Version 1.3.30 - 2013/1/25
-* Delayed border-width calculations until after opening, to avoid a bug in FF when using ColorBox in a hidden iframe.
+* Delayed border-width calculations until after opening, to avoid a bug in FF when using Colorbox in a hidden iframe.
### Version 1.3.29 - 2013/1/24
@@ -44,7 +264,7 @@ Send me your language configuration files. See /i18n/jquery.colorbox-de.js as a
### Version 1.3.23 - 2013/1/18
-* Minor bugfix for calling ColorBox on empty jQuery collections without a selector.
+* Minor bugfix for calling Colorbox on empty jQuery collections without a selector.
### Version 1.3.22 - 2013/1/17
@@ -53,7 +273,7 @@ Send me your language configuration files. See /i18n/jquery.colorbox-de.js as a
### Version 1.3.21 - 2013/1/15
Files Changed: *.js
-* Fixed compatability issues with jQuery 1.9
+* Fixed compatibility issues with jQuery 1.9
### Version 1.3.20 - August 15 2012
Files Changed:jquery.colorbox.js
@@ -72,8 +292,8 @@ Files Changed:jquery.colorbox.js, colorbox.css (all)
### Version 1.3.18 - October 07 2011
Files Changed:jquery.colorbox.js/jquery.colorbox-min.js, colorbox.css (all) and example 1's controls.png
-* Fixed a regression where Flash content displayed in ColorBox would be reloaded if the browser window was resized.
-* Added safety check to make sure that ColorBox's markup is only added to the DOM a single time, even if $.colorbox.init() is called multiple times. This will allow site owners to manually initialize ColorBox if they need it before the DOM has finished loading.
+* Fixed a regression where Flash content displayed in Colorbox would be reloaded if the browser window was resized.
+* Added safety check to make sure that Colorbox's markup is only added to the DOM a single time, even if $.colorbox.init() is called multiple times. This will allow site owners to manually initialize Colorbox if they need it before the DOM has finished loading.
* Updated the example index.html files to be HTML5 compliant.
* Changed the slideshow behavior so that it immediately moves to the next slide when the slideshow is started.
* Minor regex bugfix to allow automatic detection of image URLs that include fragments.
@@ -82,8 +302,8 @@ Files Changed:jquery.colorbox.js/jquery.colorbox-min.js, colorbox.css (all) and
Files Changed:jquery.colorbox.js/jquery.colorbox-min.js
* Added properties "top", "bottom", "left" and "right" to specify a position relative to the viewport, rather than using the default centering.
-* Added property "data" to specify GET or POST data when using Ajax. ColorBox's ajax functionality is handled by jQuery's .load() method, so the data property works the same way as it does with .load().
-* Added property "fixed" which can provide fixed positioning for ColorBox, rather than absolute positioning. This will allow ColorBox to remain in a fixed position within the visitors viewport, despite scrolling. IE6 support for this was not added, it will continue to use the default absolute positioning.
+* Added property "data" to specify GET or POST data when using Ajax. Colorbox's ajax functionality is handled by jQuery's .load() method, so the data property works the same way as it does with .load().
+* Added property "fixed" which can provide fixed positioning for Colorbox, rather than absolute positioning. This will allow Colorbox to remain in a fixed position within the visitors viewport, despite scrolling. IE6 support for this was not added, it will continue to use the default absolute positioning.
* Fixed ClearType problem with IE7.
* Minor fixes.
@@ -109,7 +329,7 @@ Files Changed: jquery.colorbox.js/jquery.colorbox-min.js
Files Changed: jquery.colorbox.js/jquery.colorbox-min.js
* Changed the index.html example files to use YouTube's new embedded link format.
-* By default, ColorBox returns focus to the element it was launched from once it closes. This can now be disabled by setting the 'returnFocus' property to false. Focus was causing problems for some users who had their anchor elements inside animated containers.
+* By default, Colorbox returns focus to the element it was launched from once it closes. This can now be disabled by setting the 'returnFocus' property to false. Focus was causing problems for some users who had their anchor elements inside animated containers.
* Minor bug fix involved in using a combination of slideshow and non-slideshow content.
### Version 1.3.12 - October 20 2010
@@ -129,8 +349,8 @@ Files Changed: jquery.colorbox.js/jquery.colorbox-min.js
* Fixed compatibility with jQuery 1.4.3
* The 'open' property now accepts a function as a value, like all of the other properties.
* Preloading now loads the correct href for images when using a dynamic (function) value for the href property.
-* Fixed bug in Safari 3 for Win where ColorBox centered on the document, rather than the visitor's viewport.
-* May have fixed an issue in Opera 10.6+ where ColorBox would rarely/randomly freeze up while switching between photos in a group.
+* Fixed bug in Safari 3 for Win where Colorbox centered on the document, rather than the visitor's viewport.
+* May have fixed an issue in Opera 10.6+ where Colorbox would rarely/randomly freeze up while switching between photos in a group.
* Some functionality better encapsulated & minor performance improvements.
### Version 1.3.9 - July 7 2010
@@ -145,7 +365,7 @@ Files Changed: jquery.colorbox.js/jquery.colorbox-min.js
* Fixed a bug in Chrome where it would sometimes render photos at 0 by 0 width and height (behavior introduced in recent update to Chrome).
* Fixed a bug where the onClosed callback would fire twice (only affected 1.3.7).
-* Fixed a bug in IE7 that existed with some iframed websites that use JS to reposition the viewport caused ColorBox to move out of position.
+* Fixed a bug in IE7 that existed with some iframed websites that use JS to reposition the viewport caused Colorbox to move out of position.
* Abstracted the identifiers (HTML ids & classes, and JS plugin name, method, and events) so that the plugin can be easily rebranded.
* Small changes to improve either code readability or compression.
@@ -156,7 +376,7 @@ Files Changed: jquery.colorbox.js/jquery.colorbox-min.js/index.html
* Resize now accepts 'width', 'innerWidth', 'height' and 'innerHeight'. Example: $.colorbox.resize({width:"100%"})
* Added option (loop:false) to disable looping in a group.
* Added options (escKey:false, arrowKey:false) to disable esc-key and arrow-key bindings.
-* Added method for removing ColorBox from a document: $.colorbox.remove();
+* Added method for removing Colorbox from a document: $.colorbox.remove();
* Fixed a bug where iframed URLs would be truncated if they contained an unencoded apostrophe.
* Now uses the exact href specified on an anchor, rather than the version returned by 'this.href'. This was causing "#example" to be normalized to "http://domain/#example" which interfered with how some users were setting up links to inline content.
* Changed example documents over to HTML5.
@@ -164,7 +384,7 @@ Files Changed: jquery.colorbox.js/jquery.colorbox-min.js/index.html
### Version 1.3.6 - Jan 13 2010
Files Changed: jquery.colorbox.js/jquery.colorbox-min.js
-* Small change to make ColorBox compatible with jQuery 1.4
+* Small change to make Colorbox compatible with jQuery 1.4
### Version 1.3.5 - December 15 2009
Files Changed: jquery.colorbox.js/jquery.colorbox-min.js
@@ -176,27 +396,27 @@ Files Changed: jquery.colorbox.js/jquery.colorbox-min.js
### Version 1.3.4 - December 5 2009
Files Changed: jquery.colorbox.js/jquery.colorbox-min.js
-* Event delegation is now used for elements that ColorBox is assigned to, rather than individual click events.
-* Additional callbacks have been added to represent other stages of ColorBox's lifecycle. Available callbacks, in order of their execution: onOpen, onLoad, onComplete, onCleanup, onClosed These take place at the same time as the event hooks, but will be better suited than the hooks for targeting specific instances of ColorBox.
+* Event delegation is now used for elements that Colorbox is assigned to, rather than individual click events.
+* Additional callbacks have been added to represent other stages of Colorbox's lifecycle. Available callbacks, in order of their execution: onOpen, onLoad, onComplete, onCleanup, onClosed These take place at the same time as the event hooks, but will be better suited than the hooks for targeting specific instances of Colorbox.
* Ajax content is now immediately added to the DOM to be more compatible if that content contains script tags.
* Focus is now returned to the calling element on closing.
* Fixed a bug where maxHeight and maxWidth did not work for non-photo content.
-* Direct calls no longer need 'open:true', it is assumed. Example: `$.fn.colorbox({html:'<p>Hi</p>'});`
+* Direct calls no longer need 'open:true', it is assumed. Example: `$.colorbox({html:'<p>Hi</p>'});`
### Version 1.3.3 - November 7 2009
Files Changed: jquery.colorbox.js/jquery.colorbox-min.js
-* Changed $.fn.colorbox.element() to return a jQuery object rather the DOM element.
+* Changed $.colorbox.element() to return a jQuery object rather the DOM element.
* jQuery.colorbox-min.js is compressed with Google's Closure Compiler rather than YUI Compressor.
### Version 1.3.2 - October 27 2009
Files Changed: jquery.colorbox.js/jquery.colorbox-min.js
-* Added 'innerWidth' and 'innerHeight' options to allow people to easily set the size dimensions for ColorBox, without having to anticipate the size of the borders and buttons.
+* Added 'innerWidth' and 'innerHeight' options to allow people to easily set the size dimensions for Colorbox, without having to anticipate the size of the borders and buttons.
* Renamed 'scrollbars' option to 'scrolling' to be in keeping with the existing HTML attribute. The option now also applies to iframes.
* Bug fix: In Safari, positioning occassionally incorrect when using '100%' dimensions.
* Bug fix: In IE6, the background overlay is briefly not full size when first viewing.
-* Bug fix: In Firefox, opening ColorBox causes a split second shift with a small minority of webpage layouts.
+* Bug fix: In Firefox, opening Colorbox causes a split second shift with a small minority of webpage layouts.
* Simplified code in a few areas.
### Version 1.3.1 - September 16 2009
@@ -208,11 +428,11 @@ Files Changed: jquery.colorbox.js/jquery.colorbox-min.js/colorbox.css/colorbox-i
### Version 1.3.0 - September 15 2009
Files Changed: jquery.colorbox.js/jquery.colorbox-min.js/colorbox.css
-* Added $.fn.colorbox.resize() method to allow ColorBox to resize it's height if it's contents change.
+* Added $.colorbox.resize() method to allow Colorbox to resize it's height if it's contents change.
* Added 'scrollbars' option to allow users to turn off scrollbars when using the resize() method.
* Renamed the 'resize' option to be less ambiguous. It's now 'scalePhotos'.
* Renamed the 'cbox_close' event to be less ambiguous. It's now 'cbox_cleanup'. It is the first thing to happen in the close method while the 'cbox_closed' event is the last to happen.
-* Fixed a bug with the slideshow mouseover graphics that appeared after ColorBox is opened a 2nd time.
+* Fixed a bug with the slideshow mouseover graphics that appeared after Colorbox is opened a 2nd time.
* Fixed a bug where ClearType may not work in IE6&7 if using the fade transition.
* Minor code optimizations to increase compression.
@@ -233,12 +453,12 @@ Files Changed: jquery.colorbox.js/jquery.colorbox-min.js
Files Changed: jquery.colorbox.js/jquery.colorbox-min.js, example stylesheets and background images (core styles have not changed and the updates will not affect existing user themes / old example themes)
* Code cleanup and reduction, better organization and documentation in the full source.
-* Added ability to use functions in place of static values for ColorBox's options (thanks Ken!).
-* Added an option for straight HTML. Example: `$.fn.colorbox({html:'<p>Howdy</p>', open:true})`
-* Added an event for the beginning of the closing process. This is in addition to the event that already existed for when ColorBox had completely closed. 'cbox_close' and 'cbox_closed' respectively.
-* Fixed a minor bug in IE6 that would cause a brief content shift in the parent document when opening ColorBox.
-* Fixed a minor bug in IE6 that would reveal select elements that had a hidden visibility after closing ColorBox.
-* The 'esc' key is unbound now when ColorBox is not open, to avoid any potential conflicts.
+* Added ability to use functions in place of static values for Colorbox's options (thanks Ken!).
+* Added an option for straight HTML. Example: `$.colorbox({html:'<p>Howdy</p>', open:true})`
+* Added an event for the beginning of the closing process. This is in addition to the event that already existed for when Colorbox had completely closed. 'cbox_close' and 'cbox_closed' respectively.
+* Fixed a minor bug in IE6 that would cause a brief content shift in the parent document when opening Colorbox.
+* Fixed a minor bug in IE6 that would reveal select elements that had a hidden visibility after closing Colorbox.
+* The 'esc' key is unbound now when Colorbox is not open, to avoid any potential conflicts.
* Used background sprites for examples 1 & 4. Put IE-only (non-sprite) background images in a separate folder.
* Example themes 1, 3, & 4 received slight visual tweaks.
* Optimized pngs for smaller file size.
@@ -248,8 +468,8 @@ Files Changed: jquery.colorbox.js/jquery.colorbox-min.js, example stylesheets an
Files Changed: jquery.colorbox.js/jquery.colorbox-min.js
* Fixed a bug with fixed width/height images in Opera 9.64.
-* Fixed a bug with trying to set a value for rel during a direct call to ColorBox. Example: `$.fn.colorbox({rel:'foo', open:true});`
-* Changed how href/rel/title settings are determined to avoid users having to manually update ColorBox settings if they use JavaScript to update any of those attributes, after ColorBox has been defined.
+* Fixed a bug with trying to set a value for rel during a direct call to Colorbox. Example: `$.colorbox({rel:'foo', open:true});`
+* Changed how href/rel/title settings are determined to avoid users having to manually update Colorbox settings if they use JavaScript to update any of those attributes, after Colorbox has been defined.
* Fixed a FF3 bug where the back button was disabled after closing an iframe.
### Version 1.2.5 - June 23 2009
@@ -261,13 +481,13 @@ Files Changed: jquery.colorbox.js/jquery.colorbox-min.js
### Version 1.2.4 - June 9 2009
Files Changed: jquery.colorbox.js, jquery.colorbox-min.js
-* Fixed an issue where ColorBox may not close completely if it is closed during a transition animation.
+* Fixed an issue where Colorbox may not close completely if it is closed during a transition animation.
* Minor code reduction.
### Version 1.2.3 - June 4 2009
* Fixed a png transparency stacking issue in IE.
* More accurate Ajax auto-sizing if the user was depending on the #cboxLoadedContent ID for CSS styling.
-* Added a public function for returning the current html element that ColorBox is associated with. Example use: var that = $.fn.colorbox.element();
+* Added a public function for returning the current html element that Colorbox is associated with. Example use: var that = $.colorbox.element();
* Added bicubic scaling for resized images in the original IE7.
* Removed the IE6 stylesheet and png files from Example 3. It now uses the same png file for the controls that the rest of the browsers use (an alpha transparency PNG8). This example now only has 2 graphics files and 1 stylesheet.
@@ -277,19 +497,19 @@ Files Changed: jquery.colorbox.js, jquery.colorbox-min.js
### Version 1.2.1 - May 28 2009
* Note: If you are upgrading, update your jquery.colorbox.js and colorbox.css files.
* Added photo resizing.
-* Added a maximum width and maximum height. Example: {height:800, maxHeight:'100%'}, would allow the box to be a maximum potential height of 800px, instead of a fixed height of 800px. With maxHeight of 100% the height of ColorBox cannot exceed the height of the browser window.
-* Added 'rel' setting to add the ability to set an alternative rel for any ColorBox call. This allows the user to group any combination of elements together for a gallery, or to override an existing rel. attribute so those element are not grouped together, without having to alter their rel in the HTML.
-* Added a 'photo' setting to force ColorBox to display a link as a photo. Use this when automatic photo detection fails (such as using a url like 'photo.php' instead of 'photo.jpg', 'photo.jpg#1', or 'photo.jpg?pic=1')
-* Removed the need to ever create disposable elements to call colorbox on. ColorBox can now be called directly, without being associated with any existing element, by using the following format:
- `$.fn.colorbox({open:true, href:'yourLink.xxx'});`
-* ColorBox settings are now persistent and unique for each element. This allows for extremely flexible options for individual elements. You could use this to create a gallery in which each page in the gallery has different settings. One could be a photo with a fade transition, next could be an inline element with an elastic transition with a set width and height, etc.
+* Added a maximum width and maximum height. Example: {height:800, maxHeight:'100%'}, would allow the box to be a maximum potential height of 800px, instead of a fixed height of 800px. With maxHeight of 100% the height of Colorbox cannot exceed the height of the browser window.
+* Added 'rel' setting to add the ability to set an alternative rel for any Colorbox call. This allows the user to group any combination of elements together for a gallery, or to override an existing rel. attribute so those element are not grouped together, without having to alter their rel in the HTML.
+* Added a 'photo' setting to force Colorbox to display a link as a photo. Use this when automatic photo detection fails (such as using a url like 'photo.php' instead of 'photo.jpg', 'photo.jpg#1', or 'photo.jpg?pic=1')
+* Removed the need to ever create disposable elements to call colorbox on. Colorbox can now be called directly, without being associated with any existing element, by using the following format:
+ `$.colorbox({open:true, href:'yourLink.xxx'});`
+* Colorbox settings are now persistent and unique for each element. This allows for extremely flexible options for individual elements. You could use this to create a gallery in which each page in the gallery has different settings. One could be a photo with a fade transition, next could be an inline element with an elastic transition with a set width and height, etc.
* For user callbacks, 'this' now refers to the element colorbox was opened from.
* Fixed a minor grouping issue with IE6, when transition type is set to 'none'.
* Added an Adobe Illustrator file that contains the borders and buttons used in the various examples.
### Version 1.2 - May 13 2009
* Added a slideshow feature.
-* Added re-positioning on browser resize. If the browser is resized, ColorBox will recenter itself onscreen.
+* Added re-positioning on browser resize. If the browser is resized, Colorbox will recenter itself onscreen.
* Added hooks for key events: cbox_open, cbox_load, cbox_complete, cbox_closed.
* Fixed an IE transparency-stacking problem, where transparent PNGs would show through to the background overlay.
* Fixed an IE iframe issue where the ifame might shift up and to the left under certain circumstances.
@@ -299,54 +519,54 @@ Files Changed: jquery.colorbox.js, jquery.colorbox-min.js
* Changed how the JS is structured to be better organized and increase compression. Increased documentation.
* Changed CSS :hover states to a .hover class. This sidesteps a minor IE8 bug with css hover states and allows easier access to hover state user styles from the JavaScript.
* Changed: elements added to the DOM have new ID's. The naming is more consistent and less likely to cause conflicts with existing website stylesheets. All stylesheets have been updated.
-* Changed the behavior for prev/next links so that ColorBox does not get hung up on broken links. A visitor can now skip through broken or long-loading links by clicking prev/next buttons.
+* Changed the behavior for prev/next links so that Colorbox does not get hung up on broken links. A visitor can now skip through broken or long-loading links by clicking prev/next buttons.
* Changed the naming of variables in the parameter map to be more concise and intuitive.
* Removed colorbox.css. Combined the colorbox.css styles with jquery.colorbox.js: the css file was not large enough to warrant being a separate file.
### Version 1.1.6 - April 28 2009
* Prevented the default action of the next & previous anchors and the left and right keys for gallery mode.
-* Fixed a bug where the title element was being added back to the DOM when closing ColorBox while using inline content.
+* Fixed a bug where the title element was being added back to the DOM when closing Colorbox while using inline content.
* Fixed a bug where IE7 would crash for example 2.
* Smaller filesize: removed a small amount of unused code and rewrote the HTML injection with less syntax.
-* Added a public method for closing ColorBox: $.fn.colorbox.close(). This will allow iframe users to add an event to close ColorBox without having to create an additional function.
+* Added a public method for closing Colorbox: $.colorbox.close(). This will allow iframe users to add an event to close Colorbox without having to create an additional function.
### Version 1.1.5 - April 11 2009
-* Fixed minor issues with exiting ColorBox.
+* Fixed minor issues with exiting Colorbox.
### Version 1.1.4 - April 08 2009
-* Fixed a bug in the fade transition where ColorBox not close completely if instructed to close during the fade-in portion of the transition.
+* Fixed a bug in the fade transition where Colorbox not close completely if instructed to close during the fade-in portion of the transition.
### Version 1.1.3 - April 06 2009
-* Fixed an IE6&7 issue with using ColorBox to display animated GIFs.
+* Fixed an IE6&7 issue with using Colorbox to display animated GIFs.
### Version 1.1.2 - April 05 2009
-* Added ability to change content when ColorBox is already open.
+* Added ability to change content when Colorbox is already open.
* Added vertical photo centering now works for all browsers (this feature previously excluded IE6&7).
* Added namespacing to the esc-key keydown event for people who want to disable it: "keydown.colorClose"
-* Added 'title' setting to add the ability to set an alternative title for any ColorBox call.
+* Added 'title' setting to add the ability to set an alternative title for any Colorbox call.
* Fixed rollover navigation issue with IE8. (Added JS-based rollover state due to a browser-bug.)
* Fixed an overflow issue for when the fixed width/height is smaller than the size of a photo.
-* Fixed a bug in the fade transition where the border would still come up if ColorBox was closed mid-transition.
+* Fixed a bug in the fade transition where the border would still come up if Colorbox was closed mid-transition.
* Switch from JSMin to Yui Compressor for minification. Minified code now under 7KB.
### Version 1.1.1 - March 31 2009
* More robust image detection regex. Now detects image file types with url fragments and/or query strings.
* Added 'nofollow' exception to rel grouping.
-* Changed how images are loaded into the DOM to prevent premature size calculation by ColorBox.
+* Changed how images are loaded into the DOM to prevent premature size calculation by Colorbox.
* Added timestamp to iframe name to prevent caching - this was a problem in some browsers if the user had multiple iframes and the visitor left the page and came back, or if they refreshed the page.
### Version 1.1.0 - March 21 2009
* Animation is now much smoother and less resource intensive.
* Added support for % sizing.
* Callback option added.
-* Inline content now preserves JavaScript events, and changes made while ColorBox is open are also preserved.
-* Added 'href' setting to add the ability to set an alternative href for any anchor, or to assign the ColorBox event to non-anchors.
+* Inline content now preserves JavaScript events, and changes made while Colorbox is open are also preserved.
+* Added 'href' setting to add the ability to set an alternative href for any anchor, or to assign the Colorbox event to non-anchors.
Example: $('button').colorbox({'href':'process.php'})
Example: $('a[href='http://msn.com']).colorbox({'href':'http://google.com', iframe:true});
* Photos are now horizontally centered if they are smaller than the lightbox size. Also vertically centered for browsers newer than IE7.
* Buttons in the examples are now included in the 'protected zone'. The lightbox will never expand it's borders or buttons beyond an accessible area of the screen.
* Keypress events don't queue up by holding down the arrow keys.
-* Added option to close ColorBox by clicking on the background overlay.
+* Added option to close Colorbox by clicking on the background overlay.
* Added 'none' transition setting.
* Changed 'contentIframe' and 'contentInline' to 'inline' and 'iframe'. Removed 'contentAjax' because it is automatically assumed for non-image file types.
* Changed 'contentWidth' and 'contentHeight' to 'fixedWidth' and 'fixedHeight'. These sizes now reflect the total size of the lightbox, not just the inner content. This is so users can accurately anticipate % sizes without fear of creating scrollbars.
diff --git a/library/colorbox/bower.json b/library/colorbox/bower.json
new file mode 100644
index 000000000..6cdfb9bab
--- /dev/null
+++ b/library/colorbox/bower.json
@@ -0,0 +1,42 @@
+{
+ "name": "jquery-colorbox",
+ "description": "jQuery lightbox and modal window plugin",
+ "version": "1.5.14",
+ "dependencies": {
+ "jquery": ">=1.3.2"
+ },
+ "keywords": [
+ "modal",
+ "lightbox",
+ "window",
+ "popup",
+ "ui",
+ "jQuery",
+ "jquery-plugin"
+ ],
+ "authors": [
+ {
+ "name": "Jack Moore",
+ "url": "http://www.jacklmoore.com",
+ "email": "hello@jacklmoore.com"
+ }
+ ],
+ "licenses": [
+ {
+ "type": "MIT",
+ "url": "http://www.opensource.org/licenses/mit-license.php"
+ }
+ ],
+ "homepage": "http://www.jacklmoore.com/colorbox",
+ "main": "jquery.colorbox.js",
+ "ignore": [
+ "colorbox.jquery.json",
+ "colorbox.ai",
+ "content",
+ "example1/index.html",
+ "example2/index.html",
+ "example3/index.html",
+ "example4/index.html",
+ "example5/index.html"
+ ]
+} \ No newline at end of file
diff --git a/library/colorbox/colorbox.css b/library/colorbox/colorbox.css
deleted file mode 100644
index 544a76f3b..000000000
--- a/library/colorbox/colorbox.css
+++ /dev/null
@@ -1,52 +0,0 @@
-/*
- ColorBox Core Style:
- The following CSS is consistent between example themes and should not be altered.
-*/
-#colorbox, #cboxOverlay, #cboxWrapper{position:absolute; top:0; left:0; z-index:9999; overflow:hidden;}
-#cboxOverlay{position:fixed; width:100%; height:100%;}
-#cboxMiddleLeft, #cboxBottomLeft{clear:left;}
-#cboxContent{position:relative;}
-#cboxLoadedContent{overflow:auto;}
-#cboxTitle{margin:0;}
-#cboxLoadingOverlay, #cboxLoadingGraphic{position:absolute; top:0; left:0; width:100%; height:100%;}
-#cboxPrevious, #cboxNext, #cboxClose, #cboxSlideshow{cursor:pointer;}
-.cboxPhoto{float:left; margin:auto; border:0; display:block; max-width:none;}
-.cboxIframe{width:100%; height:100%; display:block; border:0;}
-#colorbox, #cboxContent, #cboxLoadedContent{box-sizing:content-box; -moz-box-sizing:content-box; -webkit-box-sizing:content-box;}
-
-/*
- User Style:
- Change the following styles to modify the appearance of ColorBox. They are
- ordered & tabbed in a way that represents the nesting of the generated HTML.
-*/
-#cboxOverlay{background:#000;}
-#colorbox{}
- #cboxTopLeft{width:14px; height:14px; background:url(images/controls.png) no-repeat 0 0;}
- #cboxTopCenter{height:14px; background:url(images/border.png) repeat-x top left;}
- #cboxTopRight{width:14px; height:14px; background:url(images/controls.png) no-repeat -36px 0;}
- #cboxBottomLeft{width:14px; height:43px; background:url(images/controls.png) no-repeat 0 -32px;}
- #cboxBottomCenter{height:43px; background:url(images/border.png) repeat-x bottom left;}
- #cboxBottomRight{width:14px; height:43px; background:url(images/controls.png) no-repeat -36px -32px;}
- #cboxMiddleLeft{width:14px; background:url(images/controls.png) repeat-y -175px 0;}
- #cboxMiddleRight{width:14px; background:url(images/controls.png) repeat-y -211px 0;}
- #cboxContent{background:#fff; overflow:visible;}
- .cboxIframe{background:#fff;}
- #cboxError{padding:50px; border:1px solid #ccc;}
- #cboxLoadedContent{margin-bottom:5px;}
- #cboxLoadingOverlay{background:url(images/loading_background.png) no-repeat center center;}
- #cboxLoadingGraphic{background:url(images/loading.gif) no-repeat center center;}
- #cboxTitle{position:absolute; bottom:-25px; left:0; text-align:center; width:100%; font-weight:bold; color:#7C7C7C;}
- #cboxCurrent{position:absolute; bottom:-25px; left:58px; font-weight:bold; color:#7C7C7C;}
-
- #cboxPrevious, #cboxNext, #cboxClose, #cboxSlideshow{position:absolute; bottom:-29px; background:url(images/controls.png) no-repeat 0px 0px; width:23px; height:23px; text-indent:-9999px;}
- #cboxPrevious{left:0px; background-position: -51px -25px;}
- #cboxPrevious:hover{background-position:-51px 0px;}
- #cboxNext{left:27px; background-position:-75px -25px;}
- #cboxNext:hover{background-position:-75px 0px;}
- #cboxClose{right:0; background-position:-100px -25px;}
- #cboxClose:hover{background-position:-100px 0px;}
-
- .cboxSlideshow_on #cboxSlideshow{background-position:-125px 0px; right:27px;}
- .cboxSlideshow_on #cboxSlideshow:hover{background-position:-150px 0px;}
- .cboxSlideshow_off #cboxSlideshow{background-position:-150px -25px; right:27px;}
- .cboxSlideshow_off #cboxSlideshow:hover{background-position:-125px 0px;} \ No newline at end of file
diff --git a/library/colorbox/colorbox.jquery.json b/library/colorbox/colorbox.jquery.json
deleted file mode 100644
index dd517a5f4..000000000
--- a/library/colorbox/colorbox.jquery.json
+++ /dev/null
@@ -1,30 +0,0 @@
-{
- "name": "colorbox",
- "title": "ColorBox",
- "description": "A lightweight customizable lightbox plugin",
- "keywords": [
- "modal",
- "lightbox",
- "window",
- "popup",
- "ui"
- ],
- "version": "1.3.32",
- "author": {
- "name": "Jack Moore",
- "url": "http://www.jacklmoore.com",
- "email": "jack@colorpowered.com"
- },
- "licenses": [
- {
- "type": "MIT",
- "url": "http://www.opensource.org/licenses/mit-license.php"
- }
- ],
- "homepage": "http://jacklmoore.com/colorbox",
- "demo": "http://jacklmoore.com/colorbox",
- "download": "http://jacklmoore.com/colorbox/colorbox.zip",
- "dependencies": {
- "jquery": ">=1.3.2"
- }
-} \ No newline at end of file
diff --git a/library/colorbox/component.json b/library/colorbox/component.json
deleted file mode 100644
index 171764fbf..000000000
--- a/library/colorbox/component.json
+++ /dev/null
@@ -1,8 +0,0 @@
-{
- "name": "jquery-autosize",
- "version": "1.3.32",
- "main": "./jquery.autosize.js",
- "dependencies": {
- "jquery": ">=1.3.2"
- }
-} \ No newline at end of file
diff --git a/library/colorbox/content/daisy.jpg b/library/colorbox/content/daisy.jpg
new file mode 100644
index 000000000..16da6bdb0
--- /dev/null
+++ b/library/colorbox/content/daisy.jpg
Binary files differ
diff --git a/library/colorbox/content/daisy@2x.jpg b/library/colorbox/content/daisy@2x.jpg
new file mode 100644
index 000000000..f2e688dc2
--- /dev/null
+++ b/library/colorbox/content/daisy@2x.jpg
Binary files differ
diff --git a/library/colorbox/content/homer.jpg b/library/colorbox/content/homer.jpg
index 87ec76c99..864c17a9f 100644
--- a/library/colorbox/content/homer.jpg
+++ b/library/colorbox/content/homer.jpg
Binary files differ
diff --git a/library/colorbox/content/marylou.jpg b/library/colorbox/content/marylou.jpg
index 4c717d276..f113fbf6c 100644
--- a/library/colorbox/content/marylou.jpg
+++ b/library/colorbox/content/marylou.jpg
Binary files differ
diff --git a/library/colorbox/content/ohoopee1.jpg b/library/colorbox/content/ohoopee1.jpg
index aae19a3e6..007fa58a8 100644
--- a/library/colorbox/content/ohoopee1.jpg
+++ b/library/colorbox/content/ohoopee1.jpg
Binary files differ
diff --git a/library/colorbox/content/ohoopee2.jpg b/library/colorbox/content/ohoopee2.jpg
index 206894489..e56bb0f32 100644
--- a/library/colorbox/content/ohoopee2.jpg
+++ b/library/colorbox/content/ohoopee2.jpg
Binary files differ
diff --git a/library/colorbox/content/ohoopee3.jpg b/library/colorbox/content/ohoopee3.jpg
index 4d64d2400..7cc1c7f97 100644
--- a/library/colorbox/content/ohoopee3.jpg
+++ b/library/colorbox/content/ohoopee3.jpg
Binary files differ
diff --git a/library/colorbox/example1/colorbox.css b/library/colorbox/example1/colorbox.css
index 5ee3feba9..8a4ff998c 100644
--- a/library/colorbox/example1/colorbox.css
+++ b/library/colorbox/example1/colorbox.css
@@ -1,26 +1,27 @@
/*
- ColorBox Core Style:
+ Colorbox Core Style:
The following CSS is consistent between example themes and should not be altered.
*/
#colorbox, #cboxOverlay, #cboxWrapper{position:absolute; top:0; left:0; z-index:9999; overflow:hidden;}
+#cboxWrapper {max-width:none;}
#cboxOverlay{position:fixed; width:100%; height:100%;}
#cboxMiddleLeft, #cboxBottomLeft{clear:left;}
#cboxContent{position:relative;}
-#cboxLoadedContent{overflow:auto;}
+#cboxLoadedContent{overflow:auto; -webkit-overflow-scrolling: touch;}
#cboxTitle{margin:0;}
#cboxLoadingOverlay, #cboxLoadingGraphic{position:absolute; top:0; left:0; width:100%; height:100%;}
#cboxPrevious, #cboxNext, #cboxClose, #cboxSlideshow{cursor:pointer;}
-.cboxPhoto{float:left; margin:auto; border:0; display:block; max-width:none;}
-.cboxIframe{width:100%; height:100%; display:block; border:0;}
+.cboxPhoto{float:left; margin:auto; border:0; display:block; max-width:none; -ms-interpolation-mode:bicubic;}
+.cboxIframe{width:100%; height:100%; display:block; border:0; padding:0; margin:0;}
#colorbox, #cboxContent, #cboxLoadedContent{box-sizing:content-box; -moz-box-sizing:content-box; -webkit-box-sizing:content-box;}
/*
User Style:
- Change the following styles to modify the appearance of ColorBox. They are
+ Change the following styles to modify the appearance of Colorbox. They are
ordered & tabbed in a way that represents the nesting of the generated HTML.
*/
-#cboxOverlay{background:url(images/overlay.png) repeat 0 0;}
-#colorbox{}
+#cboxOverlay{background:url(images/overlay.png) repeat 0 0; opacity: 0.9; filter: alpha(opacity = 90);}
+#colorbox{outline:0;}
#cboxTopLeft{width:21px; height:21px; background:url(images/controls.png) no-repeat -101px 0;}
#cboxTopRight{width:21px; height:21px; background:url(images/controls.png) no-repeat -130px 0;}
#cboxBottomLeft{width:21px; height:21px; background:url(images/controls.png) no-repeat -101px -29px;}
@@ -35,13 +36,20 @@
#cboxLoadedContent{margin-bottom:28px;}
#cboxTitle{position:absolute; bottom:4px; left:0; text-align:center; width:100%; color:#949494;}
#cboxCurrent{position:absolute; bottom:4px; left:58px; color:#949494;}
+ #cboxLoadingOverlay{background:url(images/loading_background.png) no-repeat center center;}
+ #cboxLoadingGraphic{background:url(images/loading.gif) no-repeat center center;}
+
+ /* these elements are buttons, and may need to have additional styles reset to avoid unwanted base styles */
+ #cboxPrevious, #cboxNext, #cboxSlideshow, #cboxClose {border:0; padding:0; margin:0; overflow:visible; width:auto; background:none; }
+
+ /* avoid outlines on :active (mouseclick), but preserve outlines on :focus (tabbed navigating) */
+ #cboxPrevious:active, #cboxNext:active, #cboxSlideshow:active, #cboxClose:active {outline:0;}
+
#cboxSlideshow{position:absolute; bottom:4px; right:30px; color:#0092ef;}
#cboxPrevious{position:absolute; bottom:0; left:0; background:url(images/controls.png) no-repeat -75px 0; width:25px; height:25px; text-indent:-9999px;}
#cboxPrevious:hover{background-position:-75px -25px;}
#cboxNext{position:absolute; bottom:0; left:27px; background:url(images/controls.png) no-repeat -50px 0; width:25px; height:25px; text-indent:-9999px;}
#cboxNext:hover{background-position:-50px -25px;}
- #cboxLoadingOverlay{background:url(images/loading_background.png) no-repeat center center;}
- #cboxLoadingGraphic{background:url(images/loading.gif) no-repeat center center;}
#cboxClose{position:absolute; bottom:0; right:0; background:url(images/controls.png) no-repeat -25px 0; width:25px; height:25px; text-indent:-9999px;}
#cboxClose:hover{background-position:-25px -25px;}
@@ -59,28 +67,4 @@
.cboxIE #cboxMiddleLeft,
.cboxIE #cboxMiddleRight {
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#00FFFFFF,endColorstr=#00FFFFFF);
-}
-
-/*
- The following provides PNG transparency support for IE6
- Feel free to remove this and the /ie6/ directory if you have dropped IE6 support.
-*/
-.cboxIE6 #cboxTopLeft{background:url(images/ie6/borderTopLeft.png);}
-.cboxIE6 #cboxTopCenter{background:url(images/ie6/borderTopCenter.png);}
-.cboxIE6 #cboxTopRight{background:url(images/ie6/borderTopRight.png);}
-.cboxIE6 #cboxBottomLeft{background:url(images/ie6/borderBottomLeft.png);}
-.cboxIE6 #cboxBottomCenter{background:url(images/ie6/borderBottomCenter.png);}
-.cboxIE6 #cboxBottomRight{background:url(images/ie6/borderBottomRight.png);}
-.cboxIE6 #cboxMiddleLeft{background:url(images/ie6/borderMiddleLeft.png);}
-.cboxIE6 #cboxMiddleRight{background:url(images/ie6/borderMiddleRight.png);}
-
-.cboxIE6 #cboxTopLeft,
-.cboxIE6 #cboxTopCenter,
-.cboxIE6 #cboxTopRight,
-.cboxIE6 #cboxBottomLeft,
-.cboxIE6 #cboxBottomCenter,
-.cboxIE6 #cboxBottomRight,
-.cboxIE6 #cboxMiddleLeft,
-.cboxIE6 #cboxMiddleRight {
- _behavior: expression(this.src = this.src ? this.src : this.currentStyle.backgroundImage.split('"')[1], this.style.background = "none", this.style.filter = "progid:DXImageTransform.Microsoft.AlphaImageLoader(src=" + this.src + ", sizingMethod='scale')");
-}
+} \ No newline at end of file
diff --git a/library/colorbox/example1/images/border.png b/library/colorbox/example1/images/border.png
index f463a10d8..9386f3504 100644
--- a/library/colorbox/example1/images/border.png
+++ b/library/colorbox/example1/images/border.png
Binary files differ
diff --git a/library/colorbox/example1/images/controls.png b/library/colorbox/example1/images/controls.png
index dcfd6fb9f..1ec3cb1c8 100644
--- a/library/colorbox/example1/images/controls.png
+++ b/library/colorbox/example1/images/controls.png
Binary files differ
diff --git a/library/colorbox/example1/images/ie6/borderBottomCenter.png b/library/colorbox/example1/images/ie6/borderBottomCenter.png
deleted file mode 100644
index 0d4475edf..000000000
--- a/library/colorbox/example1/images/ie6/borderBottomCenter.png
+++ /dev/null
Binary files differ
diff --git a/library/colorbox/example1/images/ie6/borderBottomLeft.png b/library/colorbox/example1/images/ie6/borderBottomLeft.png
deleted file mode 100644
index 2775eba89..000000000
--- a/library/colorbox/example1/images/ie6/borderBottomLeft.png
+++ /dev/null
Binary files differ
diff --git a/library/colorbox/example1/images/ie6/borderBottomRight.png b/library/colorbox/example1/images/ie6/borderBottomRight.png
deleted file mode 100644
index f7f51379c..000000000
--- a/library/colorbox/example1/images/ie6/borderBottomRight.png
+++ /dev/null
Binary files differ
diff --git a/library/colorbox/example1/images/ie6/borderMiddleLeft.png b/library/colorbox/example1/images/ie6/borderMiddleLeft.png
deleted file mode 100644
index a2d63d156..000000000
--- a/library/colorbox/example1/images/ie6/borderMiddleLeft.png
+++ /dev/null
Binary files differ
diff --git a/library/colorbox/example1/images/ie6/borderMiddleRight.png b/library/colorbox/example1/images/ie6/borderMiddleRight.png
deleted file mode 100644
index fd7c3e849..000000000
--- a/library/colorbox/example1/images/ie6/borderMiddleRight.png
+++ /dev/null
Binary files differ
diff --git a/library/colorbox/example1/images/ie6/borderTopCenter.png b/library/colorbox/example1/images/ie6/borderTopCenter.png
deleted file mode 100644
index 2937a9cf9..000000000
--- a/library/colorbox/example1/images/ie6/borderTopCenter.png
+++ /dev/null
Binary files differ
diff --git a/library/colorbox/example1/images/ie6/borderTopLeft.png b/library/colorbox/example1/images/ie6/borderTopLeft.png
deleted file mode 100644
index f9d458b5b..000000000
--- a/library/colorbox/example1/images/ie6/borderTopLeft.png
+++ /dev/null
Binary files differ
diff --git a/library/colorbox/example1/images/ie6/borderTopRight.png b/library/colorbox/example1/images/ie6/borderTopRight.png
deleted file mode 100644
index 74b8583cf..000000000
--- a/library/colorbox/example1/images/ie6/borderTopRight.png
+++ /dev/null
Binary files differ
diff --git a/library/colorbox/example1/images/loading.gif b/library/colorbox/example1/images/loading.gif
index b4695d811..0325c8dbf 100644
--- a/library/colorbox/example1/images/loading.gif
+++ b/library/colorbox/example1/images/loading.gif
Binary files differ
diff --git a/library/colorbox/example1/images/loading_background.png b/library/colorbox/example1/images/loading_background.png
index 6ae83e697..23a336b39 100644
--- a/library/colorbox/example1/images/loading_background.png
+++ b/library/colorbox/example1/images/loading_background.png
Binary files differ
diff --git a/library/colorbox/example1/images/overlay.png b/library/colorbox/example1/images/overlay.png
index 53ea98f70..10362a423 100644
--- a/library/colorbox/example1/images/overlay.png
+++ b/library/colorbox/example1/images/overlay.png
Binary files differ
diff --git a/library/colorbox/example1/index.html b/library/colorbox/example1/index.html
index 727fe78d7..8f10b9306 100644
--- a/library/colorbox/example1/index.html
+++ b/library/colorbox/example1/index.html
@@ -2,24 +2,24 @@
<html>
<head>
<meta charset='utf-8'/>
- <title>ColorBox Examples</title>
+ <title>Colorbox Examples</title>
<style>
body{font:12px/1.2 Verdana, sans-serif; padding:0 10px;}
a:link, a:visited{text-decoration:none; color:#416CE5; border-bottom:1px solid #416CE5;}
h2{font-size:13px; margin:15px 0 0 0;}
</style>
<link rel="stylesheet" href="colorbox.css" />
- <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.9.0/jquery.min.js"></script>
+ <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js"></script>
<script src="../jquery.colorbox.js"></script>
<script>
$(document).ready(function(){
- //Examples of how to assign the ColorBox event to elements
+ //Examples of how to assign the Colorbox event to elements
$(".group1").colorbox({rel:'group1'});
$(".group2").colorbox({rel:'group2', transition:"fade"});
$(".group3").colorbox({rel:'group3', transition:"none", width:"75%", height:"75%"});
$(".group4").colorbox({rel:'group4', slideshow:true});
$(".ajax").colorbox();
- $(".youtube").colorbox({iframe:true, innerWidth:425, innerHeight:344});
+ $(".youtube").colorbox({iframe:true, innerWidth:640, innerHeight:390});
$(".vimeo").colorbox({iframe:true, innerWidth:500, innerHeight:409});
$(".iframe").colorbox({iframe:true, width:"80%", height:"80%"});
$(".inline").colorbox({inline:true, width:"50%"});
@@ -30,6 +30,9 @@
onCleanup:function(){ alert('onCleanup: colorbox has begun the close process'); },
onClosed:function(){ alert('onClosed: colorbox has completely closed'); }
});
+
+ $('.non-retina').colorbox({rel:'group5', transition:'none'})
+ $('.retina').colorbox({rel:'group5', transition:'none', retinaImage:true, retinaUrl:true});
//Example of preserving a JavaScript event for inline calls.
$("#click").click(function(){
@@ -40,7 +43,7 @@
</script>
</head>
<body>
- <h1>ColorBox Demonstration</h1>
+ <h1>Colorbox Demonstration</h1>
<h2>Elastic Transition</h2>
<p><a class="group1" href="../content/ohoopee1.jpg" title="Me and my grandfather on the Ohoopee.">Grouped Photo 1</a></p>
<p><a class="group1" href="../content/ohoopee2.jpg" title="On the Ohoopee as a child">Grouped Photo 2</a></p>
@@ -63,7 +66,7 @@
<h2>Other Content Types</h2>
<p><a class='ajax' href="../content/ajax.html" title="Homer Defined">Outside HTML (Ajax)</a></p>
- <p><a class='youtube' href="http://www.youtube.com/embed/617ANIA5Rqs?rel=0&amp;wmode=transparent" title="The Knife: We Share Our Mother's Health">Flash / Video (Iframe/Direct Link To YouTube)</a></p>
+ <p><a class='youtube' href="http://www.youtube.com/embed/VOJyrQa_WR4?rel=0&amp;wmode=transparent">Flash / Video (Iframe/Direct Link To YouTube)</a></p>
<p><a class='vimeo' href="http://player.vimeo.com/video/2285902" title="R&ouml;yksopp: Remind Me">Flash / Video (Iframe/Direct Link To Vimeo)</a></p>
<p><a class='iframe' href="http://wikipedia.com">Outside Webpage (Iframe)</a></p>
<p><a class='inline' href="#inline_content">Inline HTML</a></p>
@@ -71,6 +74,11 @@
<h2>Demonstration of using callbacks</h2>
<p><a class='callbacks' href="../content/marylou.jpg" title="Marylou on Cumberland Island">Example with alerts</a>. Callbacks and event-hooks allow users to extend functionality without having to rewrite parts of the plugin.</p>
+
+ <h2>Retina Images</h2>
+ <p><a class="retina" href="../content/daisy.jpg" title="Retina">Retina</a></p>
+ <p><a class="non-retina" href="../content/daisy.jpg" title="Non-Retina">Non-Retina</a></p>
+
<!-- This contains the hidden content for inline calls -->
<div style='display:none'>
<div id='inline_content' style='padding:10px; background:#fff;'>
@@ -78,7 +86,7 @@
<p>The inline option preserves bound JavaScript events and changes, and it puts the content back where it came from when it is closed.</p>
<p><a id="click" href="#" style='padding:5px; background:#ccc;'>Click me, it will be preserved!</a></p>
- <p><strong>If you try to open a new ColorBox while it is already open, it will update itself with the new content.</strong></p>
+ <p><strong>If you try to open a new Colorbox while it is already open, it will update itself with the new content.</strong></p>
<p>Updating Content Example:<br />
<a class="ajax" href="../content/ajax.html">Click here to load new content</a></p>
</div>
diff --git a/library/colorbox/example2/colorbox.css b/library/colorbox/example2/colorbox.css
index 3bb3d8121..0a6710404 100644
--- a/library/colorbox/example2/colorbox.css
+++ b/library/colorbox/example2/colorbox.css
@@ -1,27 +1,28 @@
/*
- ColorBox Core Style:
+ Colorbox Core Style:
The following CSS is consistent between example themes and should not be altered.
*/
#colorbox, #cboxOverlay, #cboxWrapper{position:absolute; top:0; left:0; z-index:9999; overflow:hidden;}
+#cboxWrapper {max-width:none;}
#cboxOverlay{position:fixed; width:100%; height:100%;}
#cboxMiddleLeft, #cboxBottomLeft{clear:left;}
#cboxContent{position:relative;}
-#cboxLoadedContent{overflow:auto;}
+#cboxLoadedContent{overflow:auto; -webkit-overflow-scrolling: touch;}
#cboxTitle{margin:0;}
#cboxLoadingOverlay, #cboxLoadingGraphic{position:absolute; top:0; left:0; width:100%; height:100%;}
#cboxPrevious, #cboxNext, #cboxClose, #cboxSlideshow{cursor:pointer;}
-.cboxPhoto{float:left; margin:auto; border:0; display:block; max-width:none;}
-.cboxIframe{width:100%; height:100%; display:block; border:0;}
+.cboxPhoto{float:left; margin:auto; border:0; display:block; max-width:none; -ms-interpolation-mode:bicubic;}
+.cboxIframe{width:100%; height:100%; display:block; border:0; padding:0; margin:0;}
#colorbox, #cboxContent, #cboxLoadedContent{box-sizing:content-box; -moz-box-sizing:content-box; -webkit-box-sizing:content-box;}
/*
User Style:
- Change the following styles to modify the appearance of ColorBox. They are
+ Change the following styles to modify the appearance of Colorbox. They are
ordered & tabbed in a way that represents the nesting of the generated HTML.
*/
-#cboxOverlay{background:#fff;}
-#colorbox{}
- #cboxContent{margin-top:32px; overflow:visible;}
+#cboxOverlay{background:#fff; opacity: 0.9; filter: alpha(opacity = 90);}
+#colorbox{outline:0;}
+ #cboxContent{margin-top:32px; overflow:visible; background:#000;}
.cboxIframe{background:#fff;}
#cboxError{padding:50px; border:1px solid #ccc;}
#cboxLoadedContent{background:#000; padding:1px;}
@@ -29,7 +30,13 @@
#cboxLoadingOverlay{background:#000;}
#cboxTitle{position:absolute; top:-22px; left:0; color:#000;}
#cboxCurrent{position:absolute; top:-22px; right:205px; text-indent:-9999px;}
- #cboxSlideshow, #cboxPrevious, #cboxNext, #cboxClose{text-indent:-9999px; width:20px; height:20px; position:absolute; top:-20px; background:url(images/controls.png) no-repeat 0 0;}
+
+ /* these elements are buttons, and may need to have additional styles reset to avoid unwanted base styles */
+ #cboxPrevious, #cboxNext, #cboxSlideshow, #cboxClose {border:0; padding:0; margin:0; overflow:visible; text-indent:-9999px; width:20px; height:20px; position:absolute; top:-20px; background:url(images/controls.png) no-repeat 0 0;}
+
+ /* avoid outlines on :active (mouseclick), but preserve outlines on :focus (tabbed navigating) */
+ #cboxPrevious:active, #cboxNext:active, #cboxSlideshow:active, #cboxClose:active {outline:0;}
+
#cboxPrevious{background-position:0px 0px; right:44px;}
#cboxPrevious:hover{background-position:0px -25px;}
#cboxNext{background-position:-25px 0px; right:22px;}
diff --git a/library/colorbox/example2/images/controls.png b/library/colorbox/example2/images/controls.png
index 8569b57f1..36f526992 100644
--- a/library/colorbox/example2/images/controls.png
+++ b/library/colorbox/example2/images/controls.png
Binary files differ
diff --git a/library/colorbox/example2/images/loading.gif b/library/colorbox/example2/images/loading.gif
index 19c67bbd0..a32df5c08 100644
--- a/library/colorbox/example2/images/loading.gif
+++ b/library/colorbox/example2/images/loading.gif
Binary files differ
diff --git a/library/colorbox/example2/index.html b/library/colorbox/example2/index.html
index 727fe78d7..8f10b9306 100644
--- a/library/colorbox/example2/index.html
+++ b/library/colorbox/example2/index.html
@@ -2,24 +2,24 @@
<html>
<head>
<meta charset='utf-8'/>
- <title>ColorBox Examples</title>
+ <title>Colorbox Examples</title>
<style>
body{font:12px/1.2 Verdana, sans-serif; padding:0 10px;}
a:link, a:visited{text-decoration:none; color:#416CE5; border-bottom:1px solid #416CE5;}
h2{font-size:13px; margin:15px 0 0 0;}
</style>
<link rel="stylesheet" href="colorbox.css" />
- <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.9.0/jquery.min.js"></script>
+ <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js"></script>
<script src="../jquery.colorbox.js"></script>
<script>
$(document).ready(function(){
- //Examples of how to assign the ColorBox event to elements
+ //Examples of how to assign the Colorbox event to elements
$(".group1").colorbox({rel:'group1'});
$(".group2").colorbox({rel:'group2', transition:"fade"});
$(".group3").colorbox({rel:'group3', transition:"none", width:"75%", height:"75%"});
$(".group4").colorbox({rel:'group4', slideshow:true});
$(".ajax").colorbox();
- $(".youtube").colorbox({iframe:true, innerWidth:425, innerHeight:344});
+ $(".youtube").colorbox({iframe:true, innerWidth:640, innerHeight:390});
$(".vimeo").colorbox({iframe:true, innerWidth:500, innerHeight:409});
$(".iframe").colorbox({iframe:true, width:"80%", height:"80%"});
$(".inline").colorbox({inline:true, width:"50%"});
@@ -30,6 +30,9 @@
onCleanup:function(){ alert('onCleanup: colorbox has begun the close process'); },
onClosed:function(){ alert('onClosed: colorbox has completely closed'); }
});
+
+ $('.non-retina').colorbox({rel:'group5', transition:'none'})
+ $('.retina').colorbox({rel:'group5', transition:'none', retinaImage:true, retinaUrl:true});
//Example of preserving a JavaScript event for inline calls.
$("#click").click(function(){
@@ -40,7 +43,7 @@
</script>
</head>
<body>
- <h1>ColorBox Demonstration</h1>
+ <h1>Colorbox Demonstration</h1>
<h2>Elastic Transition</h2>
<p><a class="group1" href="../content/ohoopee1.jpg" title="Me and my grandfather on the Ohoopee.">Grouped Photo 1</a></p>
<p><a class="group1" href="../content/ohoopee2.jpg" title="On the Ohoopee as a child">Grouped Photo 2</a></p>
@@ -63,7 +66,7 @@
<h2>Other Content Types</h2>
<p><a class='ajax' href="../content/ajax.html" title="Homer Defined">Outside HTML (Ajax)</a></p>
- <p><a class='youtube' href="http://www.youtube.com/embed/617ANIA5Rqs?rel=0&amp;wmode=transparent" title="The Knife: We Share Our Mother's Health">Flash / Video (Iframe/Direct Link To YouTube)</a></p>
+ <p><a class='youtube' href="http://www.youtube.com/embed/VOJyrQa_WR4?rel=0&amp;wmode=transparent">Flash / Video (Iframe/Direct Link To YouTube)</a></p>
<p><a class='vimeo' href="http://player.vimeo.com/video/2285902" title="R&ouml;yksopp: Remind Me">Flash / Video (Iframe/Direct Link To Vimeo)</a></p>
<p><a class='iframe' href="http://wikipedia.com">Outside Webpage (Iframe)</a></p>
<p><a class='inline' href="#inline_content">Inline HTML</a></p>
@@ -71,6 +74,11 @@
<h2>Demonstration of using callbacks</h2>
<p><a class='callbacks' href="../content/marylou.jpg" title="Marylou on Cumberland Island">Example with alerts</a>. Callbacks and event-hooks allow users to extend functionality without having to rewrite parts of the plugin.</p>
+
+ <h2>Retina Images</h2>
+ <p><a class="retina" href="../content/daisy.jpg" title="Retina">Retina</a></p>
+ <p><a class="non-retina" href="../content/daisy.jpg" title="Non-Retina">Non-Retina</a></p>
+
<!-- This contains the hidden content for inline calls -->
<div style='display:none'>
<div id='inline_content' style='padding:10px; background:#fff;'>
@@ -78,7 +86,7 @@
<p>The inline option preserves bound JavaScript events and changes, and it puts the content back where it came from when it is closed.</p>
<p><a id="click" href="#" style='padding:5px; background:#ccc;'>Click me, it will be preserved!</a></p>
- <p><strong>If you try to open a new ColorBox while it is already open, it will update itself with the new content.</strong></p>
+ <p><strong>If you try to open a new Colorbox while it is already open, it will update itself with the new content.</strong></p>
<p>Updating Content Example:<br />
<a class="ajax" href="../content/ajax.html">Click here to load new content</a></p>
</div>
diff --git a/library/colorbox/example3/colorbox.css b/library/colorbox/example3/colorbox.css
index 153e32e6f..1cebdffd6 100644
--- a/library/colorbox/example3/colorbox.css
+++ b/library/colorbox/example3/colorbox.css
@@ -1,38 +1,45 @@
/*
- ColorBox Core Style:
+ Colorbox Core Style:
The following CSS is consistent between example themes and should not be altered.
*/
#colorbox, #cboxOverlay, #cboxWrapper{position:absolute; top:0; left:0; z-index:9999; overflow:hidden;}
+#cboxWrapper {max-width:none;}
#cboxOverlay{position:fixed; width:100%; height:100%;}
#cboxMiddleLeft, #cboxBottomLeft{clear:left;}
#cboxContent{position:relative;}
-#cboxLoadedContent{overflow:auto;}
+#cboxLoadedContent{overflow:auto; -webkit-overflow-scrolling: touch;}
#cboxTitle{margin:0;}
#cboxLoadingOverlay, #cboxLoadingGraphic{position:absolute; top:0; left:0; width:100%; height:100%;}
#cboxPrevious, #cboxNext, #cboxClose, #cboxSlideshow{cursor:pointer;}
-.cboxPhoto{float:left; margin:auto; border:0; display:block; max-width:none;}
-.cboxIframe{width:100%; height:100%; display:block; border:0;}
+.cboxPhoto{float:left; margin:auto; border:0; display:block; max-width:none; -ms-interpolation-mode:bicubic;}
+.cboxIframe{width:100%; height:100%; display:block; border:0; padding:0; margin:0;}
#colorbox, #cboxContent, #cboxLoadedContent{box-sizing:content-box; -moz-box-sizing:content-box; -webkit-box-sizing:content-box;}
/*
User Style:
- Change the following styles to modify the appearance of ColorBox. They are
+ Change the following styles to modify the appearance of Colorbox. They are
ordered & tabbed in a way that represents the nesting of the generated HTML.
*/
-#cboxOverlay{background:#000;}
-#colorbox{}
- #cboxContent{margin-top:20px;}
+#cboxOverlay{background:#000; opacity: 0.9; filter: alpha(opacity = 90);}
+#colorbox{outline:0;}
+ #cboxContent{margin-top:20px;background:#000;}
.cboxIframe{background:#fff;}
#cboxError{padding:50px; border:1px solid #ccc;}
#cboxLoadedContent{border:5px solid #000; background:#fff;}
#cboxTitle{position:absolute; top:-20px; left:0; color:#ccc;}
#cboxCurrent{position:absolute; top:-20px; right:0px; color:#ccc;}
+ #cboxLoadingGraphic{background:url(images/loading.gif) no-repeat center center;}
+
+ /* these elements are buttons, and may need to have additional styles reset to avoid unwanted base styles */
+ #cboxPrevious, #cboxNext, #cboxSlideshow, #cboxClose {border:0; padding:0; margin:0; overflow:visible; width:auto; background:none; }
+
+ /* avoid outlines on :active (mouseclick), but preserve outlines on :focus (tabbed navigating) */
+ #cboxPrevious:active, #cboxNext:active, #cboxSlideshow:active, #cboxClose:active {outline:0;}
+
#cboxSlideshow{position:absolute; top:-20px; right:90px; color:#fff;}
#cboxPrevious{position:absolute; top:50%; left:5px; margin-top:-32px; background:url(images/controls.png) no-repeat top left; width:28px; height:65px; text-indent:-9999px;}
#cboxPrevious:hover{background-position:bottom left;}
#cboxNext{position:absolute; top:50%; right:5px; margin-top:-32px; background:url(images/controls.png) no-repeat top right; width:28px; height:65px; text-indent:-9999px;}
#cboxNext:hover{background-position:bottom right;}
- #cboxLoadingOverlay{background:#000;}
- #cboxLoadingGraphic{background:url(images/loading.gif) no-repeat center center;}
#cboxClose{position:absolute; top:5px; right:5px; display:block; background:url(images/controls.png) no-repeat top center; width:38px; height:19px; text-indent:-9999px;}
- #cboxClose:hover{background-position:bottom center;} \ No newline at end of file
+ #cboxClose:hover{background-position:bottom center;}
diff --git a/library/colorbox/example3/images/loading.gif b/library/colorbox/example3/images/loading.gif
index 19c67bbd0..a32df5c08 100644
--- a/library/colorbox/example3/images/loading.gif
+++ b/library/colorbox/example3/images/loading.gif
Binary files differ
diff --git a/library/colorbox/example3/index.html b/library/colorbox/example3/index.html
index 727fe78d7..8f10b9306 100644
--- a/library/colorbox/example3/index.html
+++ b/library/colorbox/example3/index.html
@@ -2,24 +2,24 @@
<html>
<head>
<meta charset='utf-8'/>
- <title>ColorBox Examples</title>
+ <title>Colorbox Examples</title>
<style>
body{font:12px/1.2 Verdana, sans-serif; padding:0 10px;}
a:link, a:visited{text-decoration:none; color:#416CE5; border-bottom:1px solid #416CE5;}
h2{font-size:13px; margin:15px 0 0 0;}
</style>
<link rel="stylesheet" href="colorbox.css" />
- <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.9.0/jquery.min.js"></script>
+ <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js"></script>
<script src="../jquery.colorbox.js"></script>
<script>
$(document).ready(function(){
- //Examples of how to assign the ColorBox event to elements
+ //Examples of how to assign the Colorbox event to elements
$(".group1").colorbox({rel:'group1'});
$(".group2").colorbox({rel:'group2', transition:"fade"});
$(".group3").colorbox({rel:'group3', transition:"none", width:"75%", height:"75%"});
$(".group4").colorbox({rel:'group4', slideshow:true});
$(".ajax").colorbox();
- $(".youtube").colorbox({iframe:true, innerWidth:425, innerHeight:344});
+ $(".youtube").colorbox({iframe:true, innerWidth:640, innerHeight:390});
$(".vimeo").colorbox({iframe:true, innerWidth:500, innerHeight:409});
$(".iframe").colorbox({iframe:true, width:"80%", height:"80%"});
$(".inline").colorbox({inline:true, width:"50%"});
@@ -30,6 +30,9 @@
onCleanup:function(){ alert('onCleanup: colorbox has begun the close process'); },
onClosed:function(){ alert('onClosed: colorbox has completely closed'); }
});
+
+ $('.non-retina').colorbox({rel:'group5', transition:'none'})
+ $('.retina').colorbox({rel:'group5', transition:'none', retinaImage:true, retinaUrl:true});
//Example of preserving a JavaScript event for inline calls.
$("#click").click(function(){
@@ -40,7 +43,7 @@
</script>
</head>
<body>
- <h1>ColorBox Demonstration</h1>
+ <h1>Colorbox Demonstration</h1>
<h2>Elastic Transition</h2>
<p><a class="group1" href="../content/ohoopee1.jpg" title="Me and my grandfather on the Ohoopee.">Grouped Photo 1</a></p>
<p><a class="group1" href="../content/ohoopee2.jpg" title="On the Ohoopee as a child">Grouped Photo 2</a></p>
@@ -63,7 +66,7 @@
<h2>Other Content Types</h2>
<p><a class='ajax' href="../content/ajax.html" title="Homer Defined">Outside HTML (Ajax)</a></p>
- <p><a class='youtube' href="http://www.youtube.com/embed/617ANIA5Rqs?rel=0&amp;wmode=transparent" title="The Knife: We Share Our Mother's Health">Flash / Video (Iframe/Direct Link To YouTube)</a></p>
+ <p><a class='youtube' href="http://www.youtube.com/embed/VOJyrQa_WR4?rel=0&amp;wmode=transparent">Flash / Video (Iframe/Direct Link To YouTube)</a></p>
<p><a class='vimeo' href="http://player.vimeo.com/video/2285902" title="R&ouml;yksopp: Remind Me">Flash / Video (Iframe/Direct Link To Vimeo)</a></p>
<p><a class='iframe' href="http://wikipedia.com">Outside Webpage (Iframe)</a></p>
<p><a class='inline' href="#inline_content">Inline HTML</a></p>
@@ -71,6 +74,11 @@
<h2>Demonstration of using callbacks</h2>
<p><a class='callbacks' href="../content/marylou.jpg" title="Marylou on Cumberland Island">Example with alerts</a>. Callbacks and event-hooks allow users to extend functionality without having to rewrite parts of the plugin.</p>
+
+ <h2>Retina Images</h2>
+ <p><a class="retina" href="../content/daisy.jpg" title="Retina">Retina</a></p>
+ <p><a class="non-retina" href="../content/daisy.jpg" title="Non-Retina">Non-Retina</a></p>
+
<!-- This contains the hidden content for inline calls -->
<div style='display:none'>
<div id='inline_content' style='padding:10px; background:#fff;'>
@@ -78,7 +86,7 @@
<p>The inline option preserves bound JavaScript events and changes, and it puts the content back where it came from when it is closed.</p>
<p><a id="click" href="#" style='padding:5px; background:#ccc;'>Click me, it will be preserved!</a></p>
- <p><strong>If you try to open a new ColorBox while it is already open, it will update itself with the new content.</strong></p>
+ <p><strong>If you try to open a new Colorbox while it is already open, it will update itself with the new content.</strong></p>
<p>Updating Content Example:<br />
<a class="ajax" href="../content/ajax.html">Click here to load new content</a></p>
</div>
diff --git a/library/colorbox/example4/colorbox.css b/library/colorbox/example4/colorbox.css
index 54560688a..d475a343a 100644
--- a/library/colorbox/example4/colorbox.css
+++ b/library/colorbox/example4/colorbox.css
@@ -1,26 +1,27 @@
/*
- ColorBox Core Style:
+ Colorbox Core Style:
The following CSS is consistent between example themes and should not be altered.
*/
#colorbox, #cboxOverlay, #cboxWrapper{position:absolute; top:0; left:0; z-index:9999; overflow:hidden;}
+#cboxWrapper {max-width:none;}
#cboxOverlay{position:fixed; width:100%; height:100%;}
#cboxMiddleLeft, #cboxBottomLeft{clear:left;}
#cboxContent{position:relative;}
-#cboxLoadedContent{overflow:auto;}
+#cboxLoadedContent{overflow:auto; -webkit-overflow-scrolling: touch;}
#cboxTitle{margin:0;}
#cboxLoadingOverlay, #cboxLoadingGraphic{position:absolute; top:0; left:0; width:100%; height:100%;}
#cboxPrevious, #cboxNext, #cboxClose, #cboxSlideshow{cursor:pointer;}
-.cboxPhoto{float:left; margin:auto; border:0; display:block; max-width:none;}
-.cboxIframe{width:100%; height:100%; display:block; border:0;}
+.cboxPhoto{float:left; margin:auto; border:0; display:block; max-width:none; -ms-interpolation-mode:bicubic;}
+.cboxIframe{width:100%; height:100%; display:block; border:0; padding:0; margin:0;}
#colorbox, #cboxContent, #cboxLoadedContent{box-sizing:content-box; -moz-box-sizing:content-box; -webkit-box-sizing:content-box;}
/*
User Style:
- Change the following styles to modify the appearance of ColorBox. They are
+ Change the following styles to modify the appearance of Colorbox. They are
ordered & tabbed in a way that represents the nesting of the generated HTML.
*/
-#cboxOverlay{background:#fff;}
-#colorbox{}
+#cboxOverlay{background:#fff; opacity: 0.9; filter: alpha(opacity = 90);}
+#colorbox{outline:0;}
#cboxTopLeft{width:25px; height:25px; background:url(images/border1.png) no-repeat 0 0;}
#cboxTopCenter{height:25px; background:url(images/border1.png) repeat-x 0 -50px;}
#cboxTopRight{width:25px; height:25px; background:url(images/border1.png) no-repeat -25px 0;}
@@ -35,10 +36,17 @@
#cboxLoadedContent{margin-bottom:20px;}
#cboxTitle{position:absolute; bottom:0px; left:0; text-align:center; width:100%; color:#999;}
#cboxCurrent{position:absolute; bottom:0px; left:100px; color:#999;}
+ #cboxLoadingOverlay{background:#fff url(images/loading.gif) no-repeat 5px 5px;}
+
+ /* these elements are buttons, and may need to have additional styles reset to avoid unwanted base styles */
+ #cboxPrevious, #cboxNext, #cboxSlideshow, #cboxClose {border:0; padding:0; margin:0; overflow:visible; width:auto; background:none; }
+
+ /* avoid outlines on :active (mouseclick), but preserve outlines on :focus (tabbed navigating) */
+ #cboxPrevious:active, #cboxNext:active, #cboxSlideshow:active, #cboxClose:active {outline:0;}
+
#cboxSlideshow{position:absolute; bottom:0px; right:42px; color:#444;}
#cboxPrevious{position:absolute; bottom:0px; left:0; color:#444;}
#cboxNext{position:absolute; bottom:0px; left:63px; color:#444;}
- #cboxLoadingOverlay{background:#fff url(images/loading.gif) no-repeat 5px 5px;}
#cboxClose{position:absolute; bottom:0; right:0; display:block; color:#444;}
/*
@@ -55,28 +63,4 @@
.cboxIE #cboxMiddleLeft,
.cboxIE #cboxMiddleRight {
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#00FFFFFF,endColorstr=#00FFFFFF);
-}
-
-/*
- The following provides PNG transparency support for IE6
- Feel free to remove this and the /ie6/ directory if you have dropped IE6 support.
-*/
-.cboxIE6 #cboxTopLeft{background:url(images/ie6/borderTopLeft.png);}
-.cboxIE6 #cboxTopCenter{background:url(images/ie6/borderTopCenter.png);}
-.cboxIE6 #cboxTopRight{background:url(images/ie6/borderTopRight.png);}
-.cboxIE6 #cboxBottomLeft{background:url(images/ie6/borderBottomLeft.png);}
-.cboxIE6 #cboxBottomCenter{background:url(images/ie6/borderBottomCenter.png);}
-.cboxIE6 #cboxBottomRight{background:url(images/ie6/borderBottomRight.png);}
-.cboxIE6 #cboxMiddleLeft{background:url(images/ie6/borderMiddleLeft.png);}
-.cboxIE6 #cboxMiddleRight{background:url(images/ie6/borderMiddleRight.png);}
-
-.cboxIE6 #cboxTopLeft,
-.cboxIE6 #cboxTopCenter,
-.cboxIE6 #cboxTopRight,
-.cboxIE6 #cboxBottomLeft,
-.cboxIE6 #cboxBottomCenter,
-.cboxIE6 #cboxBottomRight,
-.cboxIE6 #cboxMiddleLeft,
-.cboxIE6 #cboxMiddleRight {
- _behavior: expression(this.src = this.src ? this.src : this.currentStyle.backgroundImage.split('"')[1], this.style.background = "none", this.style.filter = "progid:DXImageTransform.Microsoft.AlphaImageLoader(src=" + this.src + ", sizingMethod='scale')");
-}
+} \ No newline at end of file
diff --git a/library/colorbox/example4/images/border1.png b/library/colorbox/example4/images/border1.png
index 0ddc70405..ea73e1592 100644
--- a/library/colorbox/example4/images/border1.png
+++ b/library/colorbox/example4/images/border1.png
Binary files differ
diff --git a/library/colorbox/example4/images/border2.png b/library/colorbox/example4/images/border2.png
index aa62a0b72..72cad44ce 100644
--- a/library/colorbox/example4/images/border2.png
+++ b/library/colorbox/example4/images/border2.png
Binary files differ
diff --git a/library/colorbox/example4/images/ie6/borderBottomCenter.png b/library/colorbox/example4/images/ie6/borderBottomCenter.png
deleted file mode 100644
index 12e0e9ac0..000000000
--- a/library/colorbox/example4/images/ie6/borderBottomCenter.png
+++ /dev/null
Binary files differ
diff --git a/library/colorbox/example4/images/ie6/borderBottomLeft.png b/library/colorbox/example4/images/ie6/borderBottomLeft.png
deleted file mode 100644
index b7a474ae0..000000000
--- a/library/colorbox/example4/images/ie6/borderBottomLeft.png
+++ /dev/null
Binary files differ
diff --git a/library/colorbox/example4/images/ie6/borderBottomRight.png b/library/colorbox/example4/images/ie6/borderBottomRight.png
deleted file mode 100644
index 6b6cb159b..000000000
--- a/library/colorbox/example4/images/ie6/borderBottomRight.png
+++ /dev/null
Binary files differ
diff --git a/library/colorbox/example4/images/ie6/borderMiddleLeft.png b/library/colorbox/example4/images/ie6/borderMiddleLeft.png
deleted file mode 100644
index 8d0eb739d..000000000
--- a/library/colorbox/example4/images/ie6/borderMiddleLeft.png
+++ /dev/null
Binary files differ
diff --git a/library/colorbox/example4/images/ie6/borderMiddleRight.png b/library/colorbox/example4/images/ie6/borderMiddleRight.png
deleted file mode 100644
index d65509e30..000000000
--- a/library/colorbox/example4/images/ie6/borderMiddleRight.png
+++ /dev/null
Binary files differ
diff --git a/library/colorbox/example4/images/ie6/borderTopCenter.png b/library/colorbox/example4/images/ie6/borderTopCenter.png
deleted file mode 100644
index 35d8da2d0..000000000
--- a/library/colorbox/example4/images/ie6/borderTopCenter.png
+++ /dev/null
Binary files differ
diff --git a/library/colorbox/example4/images/ie6/borderTopLeft.png b/library/colorbox/example4/images/ie6/borderTopLeft.png
deleted file mode 100644
index ae9bda040..000000000
--- a/library/colorbox/example4/images/ie6/borderTopLeft.png
+++ /dev/null
Binary files differ
diff --git a/library/colorbox/example4/images/ie6/borderTopRight.png b/library/colorbox/example4/images/ie6/borderTopRight.png
deleted file mode 100644
index 0d8868399..000000000
--- a/library/colorbox/example4/images/ie6/borderTopRight.png
+++ /dev/null
Binary files differ
diff --git a/library/colorbox/example4/images/loading.gif b/library/colorbox/example4/images/loading.gif
index 602ce3c3a..1f3a2c0ab 100644
--- a/library/colorbox/example4/images/loading.gif
+++ b/library/colorbox/example4/images/loading.gif
Binary files differ
diff --git a/library/colorbox/example4/index.html b/library/colorbox/example4/index.html
index 727fe78d7..8f10b9306 100644
--- a/library/colorbox/example4/index.html
+++ b/library/colorbox/example4/index.html
@@ -2,24 +2,24 @@
<html>
<head>
<meta charset='utf-8'/>
- <title>ColorBox Examples</title>
+ <title>Colorbox Examples</title>
<style>
body{font:12px/1.2 Verdana, sans-serif; padding:0 10px;}
a:link, a:visited{text-decoration:none; color:#416CE5; border-bottom:1px solid #416CE5;}
h2{font-size:13px; margin:15px 0 0 0;}
</style>
<link rel="stylesheet" href="colorbox.css" />
- <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.9.0/jquery.min.js"></script>
+ <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js"></script>
<script src="../jquery.colorbox.js"></script>
<script>
$(document).ready(function(){
- //Examples of how to assign the ColorBox event to elements
+ //Examples of how to assign the Colorbox event to elements
$(".group1").colorbox({rel:'group1'});
$(".group2").colorbox({rel:'group2', transition:"fade"});
$(".group3").colorbox({rel:'group3', transition:"none", width:"75%", height:"75%"});
$(".group4").colorbox({rel:'group4', slideshow:true});
$(".ajax").colorbox();
- $(".youtube").colorbox({iframe:true, innerWidth:425, innerHeight:344});
+ $(".youtube").colorbox({iframe:true, innerWidth:640, innerHeight:390});
$(".vimeo").colorbox({iframe:true, innerWidth:500, innerHeight:409});
$(".iframe").colorbox({iframe:true, width:"80%", height:"80%"});
$(".inline").colorbox({inline:true, width:"50%"});
@@ -30,6 +30,9 @@
onCleanup:function(){ alert('onCleanup: colorbox has begun the close process'); },
onClosed:function(){ alert('onClosed: colorbox has completely closed'); }
});
+
+ $('.non-retina').colorbox({rel:'group5', transition:'none'})
+ $('.retina').colorbox({rel:'group5', transition:'none', retinaImage:true, retinaUrl:true});
//Example of preserving a JavaScript event for inline calls.
$("#click").click(function(){
@@ -40,7 +43,7 @@
</script>
</head>
<body>
- <h1>ColorBox Demonstration</h1>
+ <h1>Colorbox Demonstration</h1>
<h2>Elastic Transition</h2>
<p><a class="group1" href="../content/ohoopee1.jpg" title="Me and my grandfather on the Ohoopee.">Grouped Photo 1</a></p>
<p><a class="group1" href="../content/ohoopee2.jpg" title="On the Ohoopee as a child">Grouped Photo 2</a></p>
@@ -63,7 +66,7 @@
<h2>Other Content Types</h2>
<p><a class='ajax' href="../content/ajax.html" title="Homer Defined">Outside HTML (Ajax)</a></p>
- <p><a class='youtube' href="http://www.youtube.com/embed/617ANIA5Rqs?rel=0&amp;wmode=transparent" title="The Knife: We Share Our Mother's Health">Flash / Video (Iframe/Direct Link To YouTube)</a></p>
+ <p><a class='youtube' href="http://www.youtube.com/embed/VOJyrQa_WR4?rel=0&amp;wmode=transparent">Flash / Video (Iframe/Direct Link To YouTube)</a></p>
<p><a class='vimeo' href="http://player.vimeo.com/video/2285902" title="R&ouml;yksopp: Remind Me">Flash / Video (Iframe/Direct Link To Vimeo)</a></p>
<p><a class='iframe' href="http://wikipedia.com">Outside Webpage (Iframe)</a></p>
<p><a class='inline' href="#inline_content">Inline HTML</a></p>
@@ -71,6 +74,11 @@
<h2>Demonstration of using callbacks</h2>
<p><a class='callbacks' href="../content/marylou.jpg" title="Marylou on Cumberland Island">Example with alerts</a>. Callbacks and event-hooks allow users to extend functionality without having to rewrite parts of the plugin.</p>
+
+ <h2>Retina Images</h2>
+ <p><a class="retina" href="../content/daisy.jpg" title="Retina">Retina</a></p>
+ <p><a class="non-retina" href="../content/daisy.jpg" title="Non-Retina">Non-Retina</a></p>
+
<!-- This contains the hidden content for inline calls -->
<div style='display:none'>
<div id='inline_content' style='padding:10px; background:#fff;'>
@@ -78,7 +86,7 @@
<p>The inline option preserves bound JavaScript events and changes, and it puts the content back where it came from when it is closed.</p>
<p><a id="click" href="#" style='padding:5px; background:#ccc;'>Click me, it will be preserved!</a></p>
- <p><strong>If you try to open a new ColorBox while it is already open, it will update itself with the new content.</strong></p>
+ <p><strong>If you try to open a new Colorbox while it is already open, it will update itself with the new content.</strong></p>
<p>Updating Content Example:<br />
<a class="ajax" href="../content/ajax.html">Click here to load new content</a></p>
</div>
diff --git a/library/colorbox/example5/colorbox.css b/library/colorbox/example5/colorbox.css
index 544a76f3b..889f20fea 100644
--- a/library/colorbox/example5/colorbox.css
+++ b/library/colorbox/example5/colorbox.css
@@ -1,26 +1,27 @@
/*
- ColorBox Core Style:
+ Colorbox Core Style:
The following CSS is consistent between example themes and should not be altered.
*/
#colorbox, #cboxOverlay, #cboxWrapper{position:absolute; top:0; left:0; z-index:9999; overflow:hidden;}
+#cboxWrapper {max-width:none;}
#cboxOverlay{position:fixed; width:100%; height:100%;}
#cboxMiddleLeft, #cboxBottomLeft{clear:left;}
#cboxContent{position:relative;}
-#cboxLoadedContent{overflow:auto;}
+#cboxLoadedContent{overflow:auto; -webkit-overflow-scrolling: touch;}
#cboxTitle{margin:0;}
#cboxLoadingOverlay, #cboxLoadingGraphic{position:absolute; top:0; left:0; width:100%; height:100%;}
#cboxPrevious, #cboxNext, #cboxClose, #cboxSlideshow{cursor:pointer;}
-.cboxPhoto{float:left; margin:auto; border:0; display:block; max-width:none;}
-.cboxIframe{width:100%; height:100%; display:block; border:0;}
+.cboxPhoto{float:left; margin:auto; border:0; display:block; max-width:none; -ms-interpolation-mode:bicubic;}
+.cboxIframe{width:100%; height:100%; display:block; border:0; padding:0; margin:0;}
#colorbox, #cboxContent, #cboxLoadedContent{box-sizing:content-box; -moz-box-sizing:content-box; -webkit-box-sizing:content-box;}
/*
User Style:
- Change the following styles to modify the appearance of ColorBox. They are
+ Change the following styles to modify the appearance of Colorbox. They are
ordered & tabbed in a way that represents the nesting of the generated HTML.
*/
-#cboxOverlay{background:#000;}
-#colorbox{}
+#cboxOverlay{background:#000; opacity: 0.9; filter: alpha(opacity = 90);}
+#colorbox{outline:0;}
#cboxTopLeft{width:14px; height:14px; background:url(images/controls.png) no-repeat 0 0;}
#cboxTopCenter{height:14px; background:url(images/border.png) repeat-x top left;}
#cboxTopRight{width:14px; height:14px; background:url(images/controls.png) no-repeat -36px 0;}
@@ -38,7 +39,12 @@
#cboxTitle{position:absolute; bottom:-25px; left:0; text-align:center; width:100%; font-weight:bold; color:#7C7C7C;}
#cboxCurrent{position:absolute; bottom:-25px; left:58px; font-weight:bold; color:#7C7C7C;}
- #cboxPrevious, #cboxNext, #cboxClose, #cboxSlideshow{position:absolute; bottom:-29px; background:url(images/controls.png) no-repeat 0px 0px; width:23px; height:23px; text-indent:-9999px;}
+ /* these elements are buttons, and may need to have additional styles reset to avoid unwanted base styles */
+ #cboxPrevious, #cboxNext, #cboxSlideshow, #cboxClose {border:0; padding:0; margin:0; overflow:visible; position:absolute; bottom:-29px; background:url(images/controls.png) no-repeat 0px 0px; width:23px; height:23px; text-indent:-9999px;}
+
+ /* avoid outlines on :active (mouseclick), but preserve outlines on :focus (tabbed navigating) */
+ #cboxPrevious:active, #cboxNext:active, #cboxSlideshow:active, #cboxClose:active {outline:0;}
+
#cboxPrevious{left:0px; background-position: -51px -25px;}
#cboxPrevious:hover{background-position:-51px 0px;}
#cboxNext{left:27px; background-position:-75px -25px;}
diff --git a/library/colorbox/example5/images/border.png b/library/colorbox/example5/images/border.png
index df13bb6da..c1cd1a2a4 100644
--- a/library/colorbox/example5/images/border.png
+++ b/library/colorbox/example5/images/border.png
Binary files differ
diff --git a/library/colorbox/example5/images/controls.png b/library/colorbox/example5/images/controls.png
index 65cfd1dc9..259130cd5 100644
--- a/library/colorbox/example5/images/controls.png
+++ b/library/colorbox/example5/images/controls.png
Binary files differ
diff --git a/library/colorbox/example5/images/loading.gif b/library/colorbox/example5/images/loading.gif
index b4695d811..dba33c816 100644
--- a/library/colorbox/example5/images/loading.gif
+++ b/library/colorbox/example5/images/loading.gif
Binary files differ
diff --git a/library/colorbox/example5/images/loading_background.png b/library/colorbox/example5/images/loading_background.png
index 9de11f467..23a336b39 100644
--- a/library/colorbox/example5/images/loading_background.png
+++ b/library/colorbox/example5/images/loading_background.png
Binary files differ
diff --git a/library/colorbox/example5/index.html b/library/colorbox/example5/index.html
index 727fe78d7..8f10b9306 100644
--- a/library/colorbox/example5/index.html
+++ b/library/colorbox/example5/index.html
@@ -2,24 +2,24 @@
<html>
<head>
<meta charset='utf-8'/>
- <title>ColorBox Examples</title>
+ <title>Colorbox Examples</title>
<style>
body{font:12px/1.2 Verdana, sans-serif; padding:0 10px;}
a:link, a:visited{text-decoration:none; color:#416CE5; border-bottom:1px solid #416CE5;}
h2{font-size:13px; margin:15px 0 0 0;}
</style>
<link rel="stylesheet" href="colorbox.css" />
- <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.9.0/jquery.min.js"></script>
+ <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js"></script>
<script src="../jquery.colorbox.js"></script>
<script>
$(document).ready(function(){
- //Examples of how to assign the ColorBox event to elements
+ //Examples of how to assign the Colorbox event to elements
$(".group1").colorbox({rel:'group1'});
$(".group2").colorbox({rel:'group2', transition:"fade"});
$(".group3").colorbox({rel:'group3', transition:"none", width:"75%", height:"75%"});
$(".group4").colorbox({rel:'group4', slideshow:true});
$(".ajax").colorbox();
- $(".youtube").colorbox({iframe:true, innerWidth:425, innerHeight:344});
+ $(".youtube").colorbox({iframe:true, innerWidth:640, innerHeight:390});
$(".vimeo").colorbox({iframe:true, innerWidth:500, innerHeight:409});
$(".iframe").colorbox({iframe:true, width:"80%", height:"80%"});
$(".inline").colorbox({inline:true, width:"50%"});
@@ -30,6 +30,9 @@
onCleanup:function(){ alert('onCleanup: colorbox has begun the close process'); },
onClosed:function(){ alert('onClosed: colorbox has completely closed'); }
});
+
+ $('.non-retina').colorbox({rel:'group5', transition:'none'})
+ $('.retina').colorbox({rel:'group5', transition:'none', retinaImage:true, retinaUrl:true});
//Example of preserving a JavaScript event for inline calls.
$("#click").click(function(){
@@ -40,7 +43,7 @@
</script>
</head>
<body>
- <h1>ColorBox Demonstration</h1>
+ <h1>Colorbox Demonstration</h1>
<h2>Elastic Transition</h2>
<p><a class="group1" href="../content/ohoopee1.jpg" title="Me and my grandfather on the Ohoopee.">Grouped Photo 1</a></p>
<p><a class="group1" href="../content/ohoopee2.jpg" title="On the Ohoopee as a child">Grouped Photo 2</a></p>
@@ -63,7 +66,7 @@
<h2>Other Content Types</h2>
<p><a class='ajax' href="../content/ajax.html" title="Homer Defined">Outside HTML (Ajax)</a></p>
- <p><a class='youtube' href="http://www.youtube.com/embed/617ANIA5Rqs?rel=0&amp;wmode=transparent" title="The Knife: We Share Our Mother's Health">Flash / Video (Iframe/Direct Link To YouTube)</a></p>
+ <p><a class='youtube' href="http://www.youtube.com/embed/VOJyrQa_WR4?rel=0&amp;wmode=transparent">Flash / Video (Iframe/Direct Link To YouTube)</a></p>
<p><a class='vimeo' href="http://player.vimeo.com/video/2285902" title="R&ouml;yksopp: Remind Me">Flash / Video (Iframe/Direct Link To Vimeo)</a></p>
<p><a class='iframe' href="http://wikipedia.com">Outside Webpage (Iframe)</a></p>
<p><a class='inline' href="#inline_content">Inline HTML</a></p>
@@ -71,6 +74,11 @@
<h2>Demonstration of using callbacks</h2>
<p><a class='callbacks' href="../content/marylou.jpg" title="Marylou on Cumberland Island">Example with alerts</a>. Callbacks and event-hooks allow users to extend functionality without having to rewrite parts of the plugin.</p>
+
+ <h2>Retina Images</h2>
+ <p><a class="retina" href="../content/daisy.jpg" title="Retina">Retina</a></p>
+ <p><a class="non-retina" href="../content/daisy.jpg" title="Non-Retina">Non-Retina</a></p>
+
<!-- This contains the hidden content for inline calls -->
<div style='display:none'>
<div id='inline_content' style='padding:10px; background:#fff;'>
@@ -78,7 +86,7 @@
<p>The inline option preserves bound JavaScript events and changes, and it puts the content back where it came from when it is closed.</p>
<p><a id="click" href="#" style='padding:5px; background:#ccc;'>Click me, it will be preserved!</a></p>
- <p><strong>If you try to open a new ColorBox while it is already open, it will update itself with the new content.</strong></p>
+ <p><strong>If you try to open a new Colorbox while it is already open, it will update itself with the new content.</strong></p>
<p>Updating Content Example:<br />
<a class="ajax" href="../content/ajax.html">Click here to load new content</a></p>
</div>
diff --git a/library/colorbox/i18n/jquery.colorbox-ar.js b/library/colorbox/i18n/jquery.colorbox-ar.js
new file mode 100644
index 000000000..6c4228cd1
--- /dev/null
+++ b/library/colorbox/i18n/jquery.colorbox-ar.js
@@ -0,0 +1,15 @@
+/*
+ jQuery Colorbox language configuration
+ language: Arabic (ar)
+ translated by: A.Rhman Sayes
+*/
+jQuery.extend(jQuery.colorbox.settings, {
+ current: "الصورة {current} من {total}",
+ previous: "السابق",
+ next: "التالي",
+ close: "إغلاق",
+ xhrError: "حدث خطأ أثناء تحميل المحتوى.",
+ imgError: "حدث خطأ أثناء تحميل الصورة.",
+ slideshowStart: "تشغيل العرض",
+ slideshowStop: "إيقا٠العرض"
+});
diff --git a/library/colorbox/i18n/jquery.colorbox-bg.js b/library/colorbox/i18n/jquery.colorbox-bg.js
new file mode 100644
index 000000000..de7e4a1d0
--- /dev/null
+++ b/library/colorbox/i18n/jquery.colorbox-bg.js
@@ -0,0 +1,16 @@
+/*
+ jQuery Colorbox language configuration
+ language: Bulgarian (bg)
+ translated by: Marian M.Bida
+ site: webmax.bg
+*/
+jQuery.extend(jQuery.colorbox.settings, {
+ current: "изображение {current} от {total}",
+ previous: "предишна",
+ next: "Ñледваща",
+ close: "затвори",
+ xhrError: "ÐеуÑпешно зареждане на Ñъдържанието.",
+ imgError: "ÐеуÑпешно зареждане на изображението.",
+ slideshowStart: "пуÑни Ñлайд-шоу",
+ slideshowStop: "Ñпри Ñлайд-шоу"
+});
diff --git a/library/colorbox/i18n/jquery.colorbox-bn.js b/library/colorbox/i18n/jquery.colorbox-bn.js
new file mode 100644
index 000000000..946229d4c
--- /dev/null
+++ b/library/colorbox/i18n/jquery.colorbox-bn.js
@@ -0,0 +1,16 @@
+/*
+jQuery Colorbox language configuration
+language: Bengali (bn)
+translated by: Arkaprava Majumder
+http://github.com/arkaindas
+*/
+jQuery.extend(jQuery.colorbox.settings, {
+current: "ছবি {current} à¦à¦° {total}",
+previous: "আগে",
+next: "পরে",
+close: "বনà§à¦§",
+xhrError: "à¦à¦‡ কনà§à¦Ÿà§‡à¦¨à§à¦Ÿ লোড করা যায়নি.",
+imgError: "à¦à¦‡ ছবিটি লোড করা যায়নি.",
+slideshowStart: "সà§à¦²à¦¾à¦‡à¦¡à¦¶à§‹ শà§à¦°à§",
+slideshowStop: "সà§à¦²à¦¾à¦‡à¦¡à¦¶à§‹ বনà§à¦§"
+});
diff --git a/library/colorbox/i18n/jquery.colorbox-ca.js b/library/colorbox/i18n/jquery.colorbox-ca.js
new file mode 100644
index 000000000..173c05fdf
--- /dev/null
+++ b/library/colorbox/i18n/jquery.colorbox-ca.js
@@ -0,0 +1,13 @@
+/*
+ jQuery Colorbox language configuration
+ language: Catala (ca)
+ translated by: eduard salla
+*/
+jQuery.extend(jQuery.colorbox.settings, {
+ current: "Imatge {current} de {total}",
+ previous: "Anterior",
+ next: "Següent",
+ close: "Tancar",
+ xhrError: "Error en la càrrega del contingut.",
+ imgError: "Error en la càrrega de la imatge."
+});
diff --git a/library/colorbox/i18n/jquery.colorbox-cs.js b/library/colorbox/i18n/jquery.colorbox-cs.js
index 42114c0a7..9649fd455 100644
--- a/library/colorbox/i18n/jquery.colorbox-cs.js
+++ b/library/colorbox/i18n/jquery.colorbox-cs.js
@@ -1,5 +1,5 @@
/*
- jQuery ColorBox language configuration
+ jQuery Colorbox language configuration
language: Czech (cs)
translated by: Filip Novak
site: mame.napilno.cz/filip-novak
@@ -10,5 +10,7 @@ jQuery.extend(jQuery.colorbox.settings, {
next: "Následující",
close: "Zavřít",
xhrError: "Obsah se nepodaÅ™ilo naÄíst.",
- imgError: "Obrázek se nepodaÅ™ilo naÄíst."
+ imgError: "Obrázek se nepodaÅ™ilo naÄíst.",
+ slideshowStart: "Spustit slideshow",
+ slideshowStop: "Zastavit slideshow"
}); \ No newline at end of file
diff --git a/library/colorbox/i18n/jquery.colorbox-da.js b/library/colorbox/i18n/jquery.colorbox-da.js
index 66bfb6cd0..676fffed2 100644
--- a/library/colorbox/i18n/jquery.colorbox-da.js
+++ b/library/colorbox/i18n/jquery.colorbox-da.js
@@ -1,5 +1,5 @@
/*
- jQuery ColorBox language configuration
+ jQuery Colorbox language configuration
language: Danish (da)
translated by: danieljuhl
site: danieljuhl.dk
@@ -10,5 +10,7 @@ jQuery.extend(jQuery.colorbox.settings, {
next: "Næste",
close: "Luk",
xhrError: "Indholdet fejlede i indlæsningen.",
- imgError: "Billedet fejlede i indlæsningen."
+ imgError: "Billedet fejlede i indlæsningen.",
+ slideshowStart: "Start slideshow",
+ slideshowStop: "Stop slideshow"
});
diff --git a/library/colorbox/i18n/jquery.colorbox-de.js b/library/colorbox/i18n/jquery.colorbox-de.js
index 3d6e2e147..d489379bc 100644
--- a/library/colorbox/i18n/jquery.colorbox-de.js
+++ b/library/colorbox/i18n/jquery.colorbox-de.js
@@ -1,5 +1,5 @@
/*
- jQuery ColorBox language configuration
+ jQuery Colorbox language configuration
language: German (de)
translated by: wallenium
*/
@@ -9,5 +9,7 @@ jQuery.extend(jQuery.colorbox.settings, {
next: "Vor",
close: "Schließen",
xhrError: "Dieser Inhalt konnte nicht geladen werden.",
- imgError: "Dieses Bild konnte nicht geladen werden."
+ imgError: "Dieses Bild konnte nicht geladen werden.",
+ slideshowStart: "Slideshow starten",
+ slideshowStop: "Slideshow anhalten"
}); \ No newline at end of file
diff --git a/library/colorbox/i18n/jquery.colorbox-es.js b/library/colorbox/i18n/jquery.colorbox-es.js
index 6449c66f8..11296fc94 100644
--- a/library/colorbox/i18n/jquery.colorbox-es.js
+++ b/library/colorbox/i18n/jquery.colorbox-es.js
@@ -1,5 +1,5 @@
/*
- jQuery ColorBox language configuration
+ jQuery Colorbox language configuration
language: Spanish (es)
translated by: migolo
*/
diff --git a/library/colorbox/i18n/jquery.colorbox-et.js b/library/colorbox/i18n/jquery.colorbox-et.js
new file mode 100644
index 000000000..60a4e888e
--- /dev/null
+++ b/library/colorbox/i18n/jquery.colorbox-et.js
@@ -0,0 +1,15 @@
+/*
+ jQuery Colorbox language configuration
+ language: Estonian (et)
+ translated by: keevitaja
+*/
+jQuery.extend(jQuery.colorbox.settings, {
+ current: "{current}/{total}",
+ previous: "eelmine",
+ next: "järgmine",
+ close: "sulge",
+ xhrError: "Sisu ei õnnestunud laadida.",
+ imgError: "Pilti ei õnnestunud laadida.",
+ slideshowStart: "Käivita slaidid",
+ slideshowStop: "Peata slaidid"
+}); \ No newline at end of file
diff --git a/library/colorbox/i18n/jquery.colorbox-fa.js b/library/colorbox/i18n/jquery.colorbox-fa.js
new file mode 100644
index 000000000..32869a4c8
--- /dev/null
+++ b/library/colorbox/i18n/jquery.colorbox-fa.js
@@ -0,0 +1,18 @@
+/*
+ jQuery Colorbox language configuration
+ language: Persian (Farsi)
+ translated by: Mahdi Jaberzadeh Ansari (MJZSoft)
+ site: www.mjzsoft.ir
+ email: mahdijaberzadehansari (at) yahoo.co.uk
+ Please note : Persian language is right to left like arabic.
+*/
+jQuery.extend(jQuery.colorbox.settings, {
+ current: "تصویر {current} از {total}",
+ previous: "قبلی",
+ next: "بعدی",
+ close: "بستن",
+ xhrError: "متاسÙانه محتویات مورد نظر قابل نمایش نیست.",
+ imgError: "متاسÙانه بارگذاری این عکس با مشکل مواجه شده است.",
+ slideshowStart: "آغاز نمایش خودکار",
+ slideshowStop: "توق٠نمایش خودکار"
+});
diff --git a/library/colorbox/i18n/jquery.colorbox-fi.js b/library/colorbox/i18n/jquery.colorbox-fi.js
new file mode 100644
index 000000000..ac03fe021
--- /dev/null
+++ b/library/colorbox/i18n/jquery.colorbox-fi.js
@@ -0,0 +1,15 @@
+/*
+ jQuery Colorbox language configuration
+ language: Finnish (fi)
+ translated by: Mikko
+*/
+jQuery.extend(jQuery.colorbox.settings, {
+ current: "Kuva {current} / {total}",
+ previous: "Edellinen",
+ next: "Seuraava",
+ close: "Sulje",
+ xhrError: "Sisällön lataaminen epäonnistui.",
+ imgError: "Kuvan lataaminen epäonnistui.",
+ slideshowStart: "Aloita kuvaesitys.",
+ slideshowStop: "Lopeta kuvaesitys."
+});
diff --git a/library/colorbox/i18n/jquery.colorbox-fr.js b/library/colorbox/i18n/jquery.colorbox-fr.js
index f6afe3fd4..f76352bd4 100644
--- a/library/colorbox/i18n/jquery.colorbox-fr.js
+++ b/library/colorbox/i18n/jquery.colorbox-fr.js
@@ -1,14 +1,15 @@
/*
- jQuery ColorBox language configuration
+ jQuery Colorbox language configuration
language: French (fr)
translated by: oaubert
*/
jQuery.extend(jQuery.colorbox.settings, {
-current: "image {current} sur {total}",
-previous: "pr&eacute;c&eacute;dente",
-next: "suivante",
-close: "fermer",
-xhrError: "Impossible de charger ce contenu.",
-imgError: "Impossible de charger cette image."
+ current: "image {current} sur {total}",
+ previous: "pr&eacute;c&eacute;dente",
+ next: "suivante",
+ close: "fermer",
+ xhrError: "Impossible de charger ce contenu.",
+ imgError: "Impossible de charger cette image.",
+ slideshowStart: "d&eacute;marrer la pr&eacute;sentation",
+ slideshowStop: "arr&ecirc;ter la pr&eacute;sentation"
});
-
diff --git a/library/colorbox/i18n/jquery.colorbox-gl.js b/library/colorbox/i18n/jquery.colorbox-gl.js
new file mode 100644
index 000000000..3641b51b1
--- /dev/null
+++ b/library/colorbox/i18n/jquery.colorbox-gl.js
@@ -0,0 +1,13 @@
+/*
+ jQuery Colorbox language configuration
+ language: Galician (gl)
+ translated by: donatorouco
+*/
+jQuery.extend(jQuery.colorbox.settings, {
+ current: "Imaxe {current} de {total}",
+ previous: "Anterior",
+ next: "Seguinte",
+ close: "Pechar",
+ xhrError: "Erro na carga do contido.",
+ imgError: "Erro na carga da imaxe."
+});
diff --git a/library/colorbox/i18n/jquery.colorbox-gr.js b/library/colorbox/i18n/jquery.colorbox-gr.js
new file mode 100644
index 000000000..0d2c1bb76
--- /dev/null
+++ b/library/colorbox/i18n/jquery.colorbox-gr.js
@@ -0,0 +1,16 @@
+/*
+ jQuery Colorbox language configuration
+ language: Greek (gr)
+ translated by: S.Demirtzoglou
+ site: webiq.gr
+*/
+jQuery.extend(jQuery.colorbox.settings, {
+ current: "Εικόνα {current} από {total}",
+ previous: "ΠÏοηγοÏμενη",
+ next: "Επόμενη",
+ close: "ΑπόκÏυψη",
+ xhrError: "Το πεÏιεχόμενο δεν μπόÏεσε να φοÏτωθεί.",
+ imgError: "Απέτυχε η φόÏτωση της εικόνας.",
+ slideshowStart: "ΈναÏξη παÏουσίασης",
+ slideshowStop: "ΠαÏση παÏουσίασης"
+});
diff --git a/library/colorbox/i18n/jquery.colorbox-he.js b/library/colorbox/i18n/jquery.colorbox-he.js
new file mode 100644
index 000000000..78908e39f
--- /dev/null
+++ b/library/colorbox/i18n/jquery.colorbox-he.js
@@ -0,0 +1,16 @@
+/*
+ jQuery Colorbox language configuration
+ language: Hebrew (he)
+ translated by: DavidCo
+ site: DavidCo.me
+*/
+jQuery.extend(jQuery.colorbox.settings, {
+ current: "תמונה {current} מתוך {total}",
+ previous: "הקוד×",
+ next: "הב×",
+ close: "סגור",
+ xhrError: "שגי××” בטעינת התוכן.",
+ imgError: "שגי××” בטעינת התמונה.",
+ slideshowStart: "התחל מצגת",
+ slideshowStop: "עצור מצגת"
+});
diff --git a/library/colorbox/i18n/jquery.colorbox-hr.js b/library/colorbox/i18n/jquery.colorbox-hr.js
new file mode 100644
index 000000000..7eb62becd
--- /dev/null
+++ b/library/colorbox/i18n/jquery.colorbox-hr.js
@@ -0,0 +1,15 @@
+/*
+ jQuery Colorbox language configuration
+ language: Croatian (hr)
+ translated by: Mladen Bicanic (base.hr)
+*/
+jQuery.extend(jQuery.colorbox.settings, {
+ current: "Slika {current} od {total}",
+ previous: "Prethodna",
+ next: "Sljedeća",
+ close: "Zatvori",
+ xhrError: "NeuspjeÅ¡no uÄitavanje sadržaja.",
+ imgError: "NeuspjeÅ¡no uÄitavanje slike.",
+ slideshowStart: "Pokreni slideshow",
+ slideshowStop: "Zaustavi slideshow"
+}); \ No newline at end of file
diff --git a/library/colorbox/i18n/jquery.colorbox-hu.js b/library/colorbox/i18n/jquery.colorbox-hu.js
new file mode 100644
index 000000000..72e9d36b1
--- /dev/null
+++ b/library/colorbox/i18n/jquery.colorbox-hu.js
@@ -0,0 +1,15 @@
+/*
+ jQuery Colorbox language configuration
+ language: Hungarian (hu)
+ translated by: kovadani
+*/
+jQuery.extend(jQuery.colorbox.settings, {
+ current: "{current}/{total} kép",
+ previous: "Előző",
+ next: "Következő",
+ close: "Bezár",
+ xhrError: "A tartalmat nem sikerült betölteni.",
+ imgError: "A képet nem sikerült betölteni.",
+ slideshowStart: "Diavetítés indítása",
+ slideshowStop: "Diavetítés leállítása"
+}); \ No newline at end of file
diff --git a/library/colorbox/i18n/jquery.colorbox-id.js b/library/colorbox/i18n/jquery.colorbox-id.js
new file mode 100644
index 000000000..81a62df34
--- /dev/null
+++ b/library/colorbox/i18n/jquery.colorbox-id.js
@@ -0,0 +1,15 @@
+/*
+ jQuery Colorbox language configuration
+ language: Indonesian (id)
+ translated by: sarwasunda
+*/
+jQuery.extend(jQuery.colorbox.settings, {
+ current: "ke {current} dari {total}",
+ previous: "Sebelumnya",
+ next: "Berikutnya",
+ close: "Tutup",
+ xhrError: "Konten ini tidak dapat dimuat.",
+ imgError: "Gambar ini tidak dapat dimuat.",
+ slideshowStart: "Putar",
+ slideshowStop: "Berhenti"
+});
diff --git a/library/colorbox/i18n/jquery.colorbox-it.js b/library/colorbox/i18n/jquery.colorbox-it.js
index d67d76cf7..2a4af6453 100644
--- a/library/colorbox/i18n/jquery.colorbox-it.js
+++ b/library/colorbox/i18n/jquery.colorbox-it.js
@@ -1,5 +1,5 @@
/*
- jQuery ColorBox language configuration
+ jQuery Colorbox language configuration
language: Italian (it)
translated by: maur8ino
*/
@@ -9,5 +9,7 @@ jQuery.extend(jQuery.colorbox.settings, {
next: "Successiva",
close: "Chiudi",
xhrError: "Errore nel caricamento del contenuto.",
- imgError: "Errore nel caricamento dell'immagine."
+ imgError: "Errore nel caricamento dell'immagine.",
+ slideshowStart: "Inizia la presentazione",
+ slideshowStop: "Termina la presentazione"
});
diff --git a/library/colorbox/i18n/jquery.colorbox-ja.js b/library/colorbox/i18n/jquery.colorbox-ja.js
new file mode 100644
index 000000000..5480de336
--- /dev/null
+++ b/library/colorbox/i18n/jquery.colorbox-ja.js
@@ -0,0 +1,15 @@
+/*
+ jQuery Colorbox language configuration
+ language: Japanaese (ja)
+ translated by: Hajime Fujimoto
+*/
+jQuery.extend(jQuery.colorbox.settings, {
+ current: "{total}枚中{current}枚目",
+ previous: "å‰",
+ next: "次",
+ close: "é–‰ã˜ã‚‹",
+ xhrError: "コンテンツã®èª­ã¿è¾¼ã¿ã«å¤±æ•—ã—ã¾ã—ãŸ",
+ imgError: "ç”»åƒã®èª­ã¿è¾¼ã¿ã«å¤±æ•—ã—ã¾ã—ãŸ",
+ slideshowStart: "スライドショー開始",
+ slideshowStop: "スライドショー終了"
+});
diff --git a/library/colorbox/i18n/jquery.colorbox-kr.js b/library/colorbox/i18n/jquery.colorbox-kr.js
new file mode 100644
index 000000000..b95702bc0
--- /dev/null
+++ b/library/colorbox/i18n/jquery.colorbox-kr.js
@@ -0,0 +1,15 @@
+/*
+ jQuery Colorbox language configuration
+ language: Korean (kr)
+ translated by: lunareffect
+*/
+jQuery.extend(jQuery.colorbox.settings, {
+ current: "ì´ {total} 중 {current}",
+ previous: "ì´ì „",
+ next: "다ìŒ",
+ close: "닫기",
+ xhrError: "컨í…츠를 불러오는 ë° ì‹¤íŒ¨í–ˆìŠµë‹ˆë‹¤.",
+ imgError: "ì´ë¯¸ì§€ë¥¼ 불러오는 ë° ì‹¤íŒ¨í–ˆìŠµë‹ˆë‹¤.",
+ slideshowStart: "슬ë¼ì´ë“œì‡¼ 시작",
+ slideshowStop: "슬ë¼ì´ë“œì‡¼ 중지"
+});
diff --git a/library/colorbox/i18n/jquery.colorbox-lt.js b/library/colorbox/i18n/jquery.colorbox-lt.js
new file mode 100644
index 000000000..a513fcf62
--- /dev/null
+++ b/library/colorbox/i18n/jquery.colorbox-lt.js
@@ -0,0 +1,15 @@
+/*
+ jQuery Colorbox language configuration
+ language: Lithuanian (lt)
+ translated by: Tomas Norkūnas
+*/
+jQuery.extend(jQuery.colorbox.settings, {
+ current: "Nuotrauka {current} iš {total}",
+ previous: "Atgal",
+ next: "Pirmyn",
+ close: "Uždaryti",
+ xhrError: "Nepavyko užkrauti turinio.",
+ imgError: "Nepavyko užkrauti nuotraukos.",
+ slideshowStart: "Pradėti automatinę peržiūrą",
+ slideshowStop: "Sustabdyti automatinę peržiūrą"
+}); \ No newline at end of file
diff --git a/library/colorbox/i18n/jquery.colorbox-lv.js b/library/colorbox/i18n/jquery.colorbox-lv.js
new file mode 100644
index 000000000..e376366b9
--- /dev/null
+++ b/library/colorbox/i18n/jquery.colorbox-lv.js
@@ -0,0 +1,16 @@
+/*
+ jQuery Colorbox language configuration
+ language: Latvian (lv)
+ translated by: Matiss Roberts Treinis
+ site: x0.lv
+*/
+jQuery.extend(jQuery.colorbox.settings, {
+ current: "attēls {current} no {total}",
+ previous: "iepriekšējais",
+ next: "nÄkamais",
+ close: "aizvērt",
+ xhrError: "NeizdevÄs ielÄdÄ“t saturu.",
+ imgError: "NeizdevÄs ielÄdÄ“t attÄ“lu.",
+ slideshowStart: "sÄkt slaidrÄdi",
+ slideshowStop: "apturÄ“t slaidrÄdi"
+});
diff --git a/library/colorbox/i18n/jquery.colorbox-my.js b/library/colorbox/i18n/jquery.colorbox-my.js
new file mode 100644
index 000000000..216e252cc
--- /dev/null
+++ b/library/colorbox/i18n/jquery.colorbox-my.js
@@ -0,0 +1,15 @@
+/*
+ jQuery Colorbox language configuration
+ language: Myanmar (my)
+ translated by: Yan Naing
+*/
+jQuery.extend(jQuery.colorbox.settings, {
+ current: "ပုံ {total} မှာ {current} မြောက်ပုံ",
+ previous: "ရှေ့သို့",
+ next: "နောက်သို့",
+ close: "ပိá€á€ºá€™á€Šá€º",
+ xhrError: "ပါá€á€„်သော အကြောင်းအရာများ ဖော်ပြရာá€á€½á€„် အနည်းငယ် á€á€»á€­á€¯á€·á€šá€½á€„်းမှုရှိနေပါသည်",
+ imgError: "ပုံပြသရာá€á€½á€„် အနည်းငယ် á€á€»á€­á€¯á€·á€šá€½á€„်းá€á€»á€€á€º ရှိနေပါသည်",
+ slideshowStart: "ပုံများ စá€á€„်ပြသမည်",
+ slideshowStop: "ပုံပြသá€á€¼á€„်း ရပ်ဆိုင်မည်"
+});
diff --git a/library/colorbox/i18n/jquery.colorbox-nl.js b/library/colorbox/i18n/jquery.colorbox-nl.js
new file mode 100644
index 000000000..dfc658ec9
--- /dev/null
+++ b/library/colorbox/i18n/jquery.colorbox-nl.js
@@ -0,0 +1,15 @@
+/*
+ jQuery Colorbox language configuration
+ language: Dutch (nl)
+ translated by: barryvdh
+*/
+jQuery.extend(jQuery.colorbox.settings, {
+ current: "Afbeelding {current} van {total}",
+ previous: "Vorige",
+ next: "Volgende",
+ close: "Sluiten",
+ xhrError: "Deze inhoud kan niet geladen worden.",
+ imgError: "Deze afbeelding kan niet geladen worden.",
+ slideshowStart: "Diashow starten",
+ slideshowStop: "Diashow stoppen"
+}); \ No newline at end of file
diff --git a/library/colorbox/i18n/jquery.colorbox-no.js b/library/colorbox/i18n/jquery.colorbox-no.js
new file mode 100644
index 000000000..277c5d3f9
--- /dev/null
+++ b/library/colorbox/i18n/jquery.colorbox-no.js
@@ -0,0 +1,16 @@
+/*
+ jQuery Colorbox language configuration
+ language: Norwegian (no)
+ translated by: lars-erik
+ site: markedspartner.no
+*/
+jQuery.extend(jQuery.colorbox.settings, {
+ current: "Bilde {current} av {total}",
+ previous: "Forrige",
+ next: "Neste",
+ close: "Lukk",
+ xhrError: "Feil ved lasting av innhold.",
+ imgError: "Feil ved lasting av bilde.",
+ slideshowStart: "Start lysbildefremvisning",
+ slideshowStop: "Stopp lysbildefremvisning"
+});
diff --git a/library/colorbox/i18n/jquery.colorbox-pl.js b/library/colorbox/i18n/jquery.colorbox-pl.js
new file mode 100644
index 000000000..1c04dae18
--- /dev/null
+++ b/library/colorbox/i18n/jquery.colorbox-pl.js
@@ -0,0 +1,16 @@
+/*
+ jQuery Colorbox language configuration
+ language: Polski (pl)
+ translated by: Tomasz Wasiński
+ site: 2bevisible.pl
+*/
+jQuery.extend(jQuery.colorbox.settings, {
+ current: "{current}. obrazek z {total}",
+ previous: "Poprzedni",
+ next: "Następny",
+ close: "Zamknij",
+ xhrError: "Nie udało się załadować treści.",
+ imgError: "Nie udało się załadować obrazka.",
+ slideshowStart: "rozpocznij pokaz slajdów",
+ slideshowStop: "zatrzymaj pokaz slajdów"
+}); \ No newline at end of file
diff --git a/library/colorbox/i18n/jquery.colorbox-pt-BR.js b/library/colorbox/i18n/jquery.colorbox-pt-BR.js
new file mode 100644
index 000000000..a405d93df
--- /dev/null
+++ b/library/colorbox/i18n/jquery.colorbox-pt-BR.js
@@ -0,0 +1,15 @@
+/*
+ jQuery Colorbox language configuration
+ language: Brazilian Portuguese (pt-BR)
+ translated by: ReinaldoMT
+*/
+jQuery.extend(jQuery.colorbox.settings, {
+ current: "Imagem {current} de {total}",
+ previous: "Anterior",
+ next: "Próxima",
+ close: "Fechar",
+ slideshowStart: "iniciar apresentação de slides",
+ slideshowStop: "parar apresentação de slides",
+ xhrError: "Erro ao carregar o conteúdo.",
+ imgError: "Erro ao carregar a imagem."
+}); \ No newline at end of file
diff --git a/library/colorbox/i18n/jquery.colorbox-ro.js b/library/colorbox/i18n/jquery.colorbox-ro.js
new file mode 100644
index 000000000..0a461e28a
--- /dev/null
+++ b/library/colorbox/i18n/jquery.colorbox-ro.js
@@ -0,0 +1,15 @@
+/*
+ jQuery Colorbox language configuration
+ language: Romanian (ro)
+ translated by: shurub3l
+*/
+jQuery.extend(jQuery.colorbox.settings, {
+ current: "imagine {current} din {total}",
+ previous: "precedenta",
+ next: "următoarea",
+ close: "închideți",
+ xhrError: "Acest conținut nu poate fi încărcat.",
+ imgError: "Această imagine nu poate fi încărcată",
+ slideshowStart: "începeți prezentarea (slideshow)",
+ slideshowStop: "opriți prezentarea (slideshow)"
+}); \ No newline at end of file
diff --git a/library/colorbox/i18n/jquery.colorbox-ru.js b/library/colorbox/i18n/jquery.colorbox-ru.js
index c9c220068..1d88b8cda 100644
--- a/library/colorbox/i18n/jquery.colorbox-ru.js
+++ b/library/colorbox/i18n/jquery.colorbox-ru.js
@@ -1,14 +1,16 @@
/*
- jQuery ColorBox language configuration
+ jQuery Colorbox language configuration
language: Russian (ru)
translated by: Marfa
- site: themarfa.name
+ site: themarfa.name
*/
jQuery.extend(jQuery.colorbox.settings, {
current: "изображение {current} из {total}",
- previous: "предыдущее",
- next: "Ñледующее",
+ previous: "назад",
+ next: "вперёд",
close: "закрыть",
xhrError: "Ðе удалоÑÑŒ загрузить Ñодержимое.",
- imgError: "Ðе удалоÑÑŒ загрузить изображение."
+ imgError: "Ðе удалоÑÑŒ загрузить изображение.",
+ slideshowStart: "начать Ñлайд-шоу",
+ slideshowStop: "оÑтановить Ñлайд-шоу"
}); \ No newline at end of file
diff --git a/library/colorbox/i18n/jquery.colorbox-si.js b/library/colorbox/i18n/jquery.colorbox-si.js
new file mode 100644
index 000000000..034b5b3c4
--- /dev/null
+++ b/library/colorbox/i18n/jquery.colorbox-si.js
@@ -0,0 +1,15 @@
+/*
+ jQuery Colorbox language configuration
+ language: Slovenian (si)
+ translated by: Boštjan Pišler (pisler.si)
+*/
+jQuery.extend(jQuery.colorbox.settings, {
+ current: "Slika {current} od {total}",
+ previous: "Prejšnja",
+ next: "Naslednja",
+ close: "Zapri",
+ xhrError: "Vsebine ni bilo mogoÄe naložiti.",
+ imgError: "Slike ni bilo mogoÄe naložiti.",
+ slideshowStart: "Zaženi prezentacijo",
+ slideshowStop: "Zaustavi prezentacijo"
+}); \ No newline at end of file
diff --git a/library/colorbox/i18n/jquery.colorbox-sk.js b/library/colorbox/i18n/jquery.colorbox-sk.js
new file mode 100644
index 000000000..faa9291cb
--- /dev/null
+++ b/library/colorbox/i18n/jquery.colorbox-sk.js
@@ -0,0 +1,15 @@
+/*
+ jQuery Colorbox language configuration
+ language: Slovak (sk)
+ translated by: Jaroslav Kostal
+*/
+jQuery.extend(jQuery.colorbox.settings, {
+ current: "{current}. obrázok z {total}",
+ previous: "Predchádzajúci",
+ next: "Následujúci",
+ close: "Zatvoriť",
+ xhrError: "Obsah sa nepodarilo naÄítaÅ¥.",
+ imgError: "Obrázok sa nepodarilo naÄítaÅ¥.",
+ slideshowStart: "Spustiť slideshow",
+ slideshowStop: "zastaviť slideshow"
+}); \ No newline at end of file
diff --git a/library/colorbox/i18n/jquery.colorbox-sr.js b/library/colorbox/i18n/jquery.colorbox-sr.js
new file mode 100644
index 000000000..618e73c4a
--- /dev/null
+++ b/library/colorbox/i18n/jquery.colorbox-sr.js
@@ -0,0 +1,15 @@
+/*
+ jQuery Colorbox language configuration
+ language: Serbian (sr)
+ translated by: Sasa Stefanovic (baguje.com)
+*/
+jQuery.extend(jQuery.colorbox.settings, {
+ current: "Slika {current} od {total}",
+ previous: "Prethodna",
+ next: "Sledeća",
+ close: "Zatvori",
+ xhrError: "NeuspeÅ¡no uÄitavanje sadržaja.",
+ imgError: "NeuspeÅ¡no uÄitavanje slike.",
+ slideshowStart: "Pokreni slideshow",
+ slideshowStop: "Zaustavi slideshow"
+});
diff --git a/library/colorbox/i18n/jquery.colorbox-sv.js b/library/colorbox/i18n/jquery.colorbox-sv.js
new file mode 100644
index 000000000..01bb1d8c6
--- /dev/null
+++ b/library/colorbox/i18n/jquery.colorbox-sv.js
@@ -0,0 +1,15 @@
+/*
+ jQuery Colorbox language configuration
+ language: Swedish (sv)
+ translated by: Mattias Reichel
+*/
+jQuery.extend(jQuery.colorbox.settings, {
+ current: "Bild {current} av {total}",
+ previous: "Föregående",
+ next: "Nästa",
+ close: "Stäng",
+ xhrError: "Innehållet kunde inte laddas.",
+ imgError: "Den här bilden kunde inte laddas.",
+ slideshowStart: "Starta bildspel",
+ slideshowStop: "Stoppa bildspel"
+}); \ No newline at end of file
diff --git a/library/colorbox/i18n/jquery.colorbox-tr.js b/library/colorbox/i18n/jquery.colorbox-tr.js
new file mode 100644
index 000000000..d467c2ef1
--- /dev/null
+++ b/library/colorbox/i18n/jquery.colorbox-tr.js
@@ -0,0 +1,19 @@
+/*
+ jQuery Colorbox language configuration
+ language: Turkish (tr)
+ translated by: Caner ÖNCEL
+ site: egonomik.com
+
+ edited by: Sinan Eldem
+ www.sinaneldem.com.tr
+*/
+jQuery.extend(jQuery.colorbox.settings, {
+ current: "Görsel {current} / {total}",
+ previous: "Önceki",
+ next: "Sonraki",
+ close: "Kapat",
+ xhrError: "İçerik yüklenirken hata meydana geldi.",
+ imgError: "Resim yüklenirken hata meydana geldi.",
+ slideshowStart: "Slaytı Başlat",
+ slideshowStop: "Slaytı Durdur"
+});
diff --git a/library/colorbox/i18n/jquery.colorbox-uk.js b/library/colorbox/i18n/jquery.colorbox-uk.js
new file mode 100644
index 000000000..3f786d3f4
--- /dev/null
+++ b/library/colorbox/i18n/jquery.colorbox-uk.js
@@ -0,0 +1,16 @@
+/*
+ jQuery ColorBox language configuration
+ language: Ukrainian (uk)
+ translated by: Andrew
+ http://acisoftware.com.ua
+*/
+jQuery.extend(jQuery.colorbox.settings, {
+ current: "Ð·Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð½Ñ {current} з {total}",
+ previous: "попереднє",
+ next: "наÑтупне",
+ close: "закрити",
+ xhrError: "Ðе вдалоÑÑ Ð·Ð°Ð²Ð°Ð½Ñ‚Ð°Ð¶Ð¸Ñ‚Ð¸ вміÑÑ‚.",
+ imgError: "Ðе вдалоÑÑ Ð·Ð°Ð²Ð°Ð½Ñ‚Ð°Ð¶Ð¸Ñ‚Ð¸ зображеннÑ.",
+ slideshowStart: "почати Ñлайд-шоу",
+ slideshowStop: "зупинити Ñлайд-шоу"
+}); \ No newline at end of file
diff --git a/library/colorbox/i18n/jquery.colorbox-zh-CN.js b/library/colorbox/i18n/jquery.colorbox-zh-CN.js
new file mode 100644
index 000000000..770d8eacf
--- /dev/null
+++ b/library/colorbox/i18n/jquery.colorbox-zh-CN.js
@@ -0,0 +1,15 @@
+/*
+ jQuery Colorbox language configuration
+ language: Chinese Simplified (zh-CN)
+ translated by: zhao weiming
+*/
+jQuery.extend(jQuery.colorbox.settings, {
+ current: "当å‰å›¾åƒ {current} 总共 {total}",
+ previous: "å‰ä¸€é¡µ",
+ next: "åŽä¸€é¡µ",
+ close: "关闭",
+ xhrError: "此内容无法加载",
+ imgError: "此图片无法加载",
+ slideshowStart: "开始播放幻ç¯ç‰‡",
+ slideshowStop: "åœæ­¢æ’­æ”¾å¹»ç¯ç‰‡"
+}); \ No newline at end of file
diff --git a/library/colorbox/i18n/jquery.colorbox-zh-TW.js b/library/colorbox/i18n/jquery.colorbox-zh-TW.js
new file mode 100644
index 000000000..b0c4f123d
--- /dev/null
+++ b/library/colorbox/i18n/jquery.colorbox-zh-TW.js
@@ -0,0 +1,15 @@
+/*
+ jQuery Colorbox language configuration
+ language: Chinese Traditional (zh-TW)
+ translated by: Atans Chiu
+*/
+jQuery.extend(jQuery.colorbox.settings, {
+ current: "圖片 {current} 總共 {total}",
+ previous: "上一é ",
+ next: "下一é ",
+ close: "關閉",
+ xhrError: "此內容加載失敗.",
+ imgError: "此圖片加載失敗.",
+ slideshowStart: "開始幻燈片",
+ slideshowStop: "çµæŸå¹»ç‡ˆç‰‡"
+}); \ No newline at end of file
diff --git a/library/colorbox/images/border.png b/library/colorbox/images/border.png
deleted file mode 100644
index df13bb6da..000000000
--- a/library/colorbox/images/border.png
+++ /dev/null
Binary files differ
diff --git a/library/colorbox/images/controls.png b/library/colorbox/images/controls.png
deleted file mode 100644
index 65cfd1dc9..000000000
--- a/library/colorbox/images/controls.png
+++ /dev/null
Binary files differ
diff --git a/library/colorbox/images/loading.gif b/library/colorbox/images/loading.gif
deleted file mode 100644
index b4695d811..000000000
--- a/library/colorbox/images/loading.gif
+++ /dev/null
Binary files differ
diff --git a/library/colorbox/images/loading_background.png b/library/colorbox/images/loading_background.png
deleted file mode 100644
index 9de11f467..000000000
--- a/library/colorbox/images/loading_background.png
+++ /dev/null
Binary files differ
diff --git a/library/colorbox/jquery.colorbox-min.js b/library/colorbox/jquery.colorbox-min.js
index 969064042..c0cbe5cb7 100644
--- a/library/colorbox/jquery.colorbox-min.js
+++ b/library/colorbox/jquery.colorbox-min.js
@@ -1 +1,6 @@
-(function($,document,window){var defaults={transition:"elastic",speed:300,width:false,initialWidth:"600",innerWidth:false,maxWidth:false,height:false,initialHeight:"450",innerHeight:false,maxHeight:false,scalePhotos:true,scrolling:true,inline:false,html:false,iframe:false,fastIframe:true,photo:false,href:false,title:false,rel:false,opacity:.9,preloading:true,className:false,current:"image {current} of {total}",previous:"previous",next:"next",close:"close",xhrError:"This content failed to load.",imgError:"This image failed to load.",open:false,returnFocus:true,reposition:true,loop:true,slideshow:false,slideshowAuto:true,slideshowSpeed:2500,slideshowStart:"start slideshow",slideshowStop:"stop slideshow",onOpen:false,onLoad:false,onComplete:false,onCleanup:false,onClosed:false,overlayClose:true,escKey:true,arrowKey:true,top:false,bottom:false,left:false,right:false,fixed:false,data:undefined},colorbox="colorbox",prefix="cbox",boxElement=prefix+"Element",event_open=prefix+"_open",event_load=prefix+"_load",event_complete=prefix+"_complete",event_cleanup=prefix+"_cleanup",event_closed=prefix+"_closed",event_purge=prefix+"_purge",isIE=!$.support.leadingWhitespace,isIE6=isIE&&!window.XMLHttpRequest,event_ie6=prefix+"_IE6",$overlay,$box,$wrap,$content,$topBorder,$leftBorder,$rightBorder,$bottomBorder,$related,$window,$loaded,$loadingBay,$loadingOverlay,$title,$current,$slideshow,$next,$prev,$close,$groupControls,$events=$({}),settings,interfaceHeight,interfaceWidth,loadedHeight,loadedWidth,element,index,photo,open,active,closing,loadingTimer,publicMethod,div="div",className,init;function $tag(tag,id,css){var element=document.createElement(tag);if(id){element.id=prefix+id}if(css){element.style.cssText=css}return $(element)}function getIndex(increment){var max=$related.length,newIndex=(index+increment)%max;return newIndex<0?max+newIndex:newIndex}function setSize(size,dimension){return Math.round((/%/.test(size)?(dimension==="x"?$window.width():$window.height())/100:1)*parseInt(size,10))}function isImage(url){return settings.photo||/\.(gif|png|jp(e|g|eg)|bmp|ico)((#|\?).*)?$/i.test(url)}function makeSettings(){var i,data=$.data(element,colorbox);if(data==null){settings=$.extend({},defaults);if(console&&console.log){console.log("Error: cboxElement missing settings object")}}else{settings=$.extend({},data)}for(i in settings){if($.isFunction(settings[i])&&i.slice(0,2)!=="on"){settings[i]=settings[i].call(element)}}settings.rel=settings.rel||element.rel||$(element).data("rel")||"nofollow";settings.href=settings.href||$(element).attr("href");settings.title=settings.title||element.title;if(typeof settings.href==="string"){settings.href=$.trim(settings.href)}}function trigger(event,callback){$(document).trigger(event);$events.trigger(event);if($.isFunction(callback)){callback.call(element)}}function slideshow(){var timeOut,className=prefix+"Slideshow_",click="click."+prefix,clear,set,start,stop;if(settings.slideshow&&$related[1]){clear=function(){clearTimeout(timeOut)};set=function(){if(settings.loop||$related[index+1]){timeOut=setTimeout(publicMethod.next,settings.slideshowSpeed)}};start=function(){$slideshow.html(settings.slideshowStop).unbind(click).one(click,stop);$events.bind(event_complete,set).bind(event_load,clear).bind(event_cleanup,stop);$box.removeClass(className+"off").addClass(className+"on")};stop=function(){clear();$events.unbind(event_complete,set).unbind(event_load,clear).unbind(event_cleanup,stop);$slideshow.html(settings.slideshowStart).unbind(click).one(click,function(){publicMethod.next();start()});$box.removeClass(className+"on").addClass(className+"off")};if(settings.slideshowAuto){start()}else{stop()}}else{$box.removeClass(className+"off "+className+"on")}}function launch(target){if(!closing){element=target;makeSettings();$related=$(element);index=0;if(settings.rel!=="nofollow"){$related=$("."+boxElement).filter(function(){var data=$.data(this,colorbox),relRelated;if(data){relRelated=$(this).data("rel")||data.rel||this.rel}return relRelated===settings.rel});index=$related.index(element);if(index===-1){$related=$related.add(element);index=$related.length-1}}if(!open){open=active=true;$box.css({visibility:"hidden",display:"block"});$loaded=$tag(div,"LoadedContent","width:0; height:0; overflow:hidden").appendTo($content);interfaceHeight=$topBorder.height()+$bottomBorder.height()+$content.outerHeight(true)-$content.height();interfaceWidth=$leftBorder.width()+$rightBorder.width()+$content.outerWidth(true)-$content.width();loadedHeight=$loaded.outerHeight(true);loadedWidth=$loaded.outerWidth(true);if(settings.returnFocus){$(element).blur();$events.one(event_closed,function(){$(element).focus()})}$overlay.css({opacity:parseFloat(settings.opacity),cursor:settings.overlayClose?"pointer":"auto",visibility:"visible"}).show();settings.w=setSize(settings.initialWidth,"x");settings.h=setSize(settings.initialHeight,"y");publicMethod.position();if(isIE6){$window.bind("resize."+event_ie6+" scroll."+event_ie6,function(){$overlay.css({width:$window.width(),height:$window.height(),top:$window.scrollTop(),left:$window.scrollLeft()})}).trigger("resize."+event_ie6)}slideshow();trigger(event_open,settings.onOpen);$groupControls.add($title).hide();$close.html(settings.close).show()}publicMethod.load(true)}}function appendHTML(){if(!$box&&document.body){init=false;$window=$(window);$box=$tag(div).attr({id:colorbox,"class":isIE?prefix+(isIE6?"IE6":"IE"):""}).hide();$overlay=$tag(div,"Overlay",isIE6?"position:absolute":"").hide();$loadingOverlay=$tag(div,"LoadingOverlay").add($tag(div,"LoadingGraphic"));$wrap=$tag(div,"Wrapper");$content=$tag(div,"Content").append($title=$tag(div,"Title"),$current=$tag(div,"Current"),$next=$tag(div,"Next"),$prev=$tag(div,"Previous"),$slideshow=$tag(div,"Slideshow"),$close=$tag(div,"Close"));$wrap.append($tag(div).append($tag(div,"TopLeft"),$topBorder=$tag(div,"TopCenter"),$tag(div,"TopRight")),$tag(div,false,"clear:left").append($leftBorder=$tag(div,"MiddleLeft"),$content,$rightBorder=$tag(div,"MiddleRight")),$tag(div,false,"clear:left").append($tag(div,"BottomLeft"),$bottomBorder=$tag(div,"BottomCenter"),$tag(div,"BottomRight"))).find("div div").css({"float":"left"});$loadingBay=$tag(div,false,"position:absolute; width:9999px; visibility:hidden; display:none");$groupControls=$next.add($prev).add($current).add($slideshow);$(document.body).append($overlay,$box.append($wrap,$loadingBay))}}function addBindings(){function clickHandler(e){if(!(e.which>1||e.shiftKey||e.altKey||e.metaKey)){e.preventDefault();launch(this)}}if($box){if(!init){init=true;$next.click(function(){publicMethod.next()});$prev.click(function(){publicMethod.prev()});$close.click(function(){publicMethod.close()});$overlay.click(function(){if(settings.overlayClose){publicMethod.close()}});$(document).bind("keydown."+prefix,function(e){var key=e.keyCode;if(open&&settings.escKey&&key===27){e.preventDefault();publicMethod.close()}if(open&&settings.arrowKey&&$related[1]){if(key===37){e.preventDefault();$prev.click()}else if(key===39){e.preventDefault();$next.click()}}});if($.isFunction($.fn.on)){$(document).on("click."+prefix,"."+boxElement,clickHandler)}else{$("."+boxElement).live("click."+prefix,clickHandler)}}return true}return false}if($.colorbox){return}$(appendHTML);publicMethod=$.fn[colorbox]=$[colorbox]=function(options,callback){var $this=this;options=options||{};appendHTML();if(addBindings()){if($.isFunction($this)){$this=$("<a/>");options.open=true}else if(!$this[0]){return $this}if(callback){options.onComplete=callback}$this.each(function(){$.data(this,colorbox,$.extend({},$.data(this,colorbox)||defaults,options))}).addClass(boxElement);if($.isFunction(options.open)&&options.open.call($this)||options.open){launch($this[0])}}return $this};publicMethod.position=function(speed,loadedCallback){var css,top=0,left=0,offset=$box.offset(),scrollTop,scrollLeft;$window.unbind("resize."+prefix);$box.css({top:-9e4,left:-9e4});scrollTop=$window.scrollTop();scrollLeft=$window.scrollLeft();if(settings.fixed&&!isIE6){offset.top-=scrollTop;offset.left-=scrollLeft;$box.css({position:"fixed"})}else{top=scrollTop;left=scrollLeft;$box.css({position:"absolute"})}if(settings.right!==false){left+=Math.max($window.width()-settings.w-loadedWidth-interfaceWidth-setSize(settings.right,"x"),0)}else if(settings.left!==false){left+=setSize(settings.left,"x")}else{left+=Math.round(Math.max($window.width()-settings.w-loadedWidth-interfaceWidth,0)/2)}if(settings.bottom!==false){top+=Math.max($window.height()-settings.h-loadedHeight-interfaceHeight-setSize(settings.bottom,"y"),0)}else if(settings.top!==false){top+=setSize(settings.top,"y")}else{top+=Math.round(Math.max($window.height()-settings.h-loadedHeight-interfaceHeight,0)/2)}$box.css({top:offset.top,left:offset.left,visibility:"visible"});speed=$box.width()===settings.w+loadedWidth&&$box.height()===settings.h+loadedHeight?0:speed||0;$wrap[0].style.width=$wrap[0].style.height="9999px";function modalDimensions(that){$topBorder[0].style.width=$bottomBorder[0].style.width=$content[0].style.width=parseInt(that.style.width,10)-interfaceWidth+"px";$content[0].style.height=$leftBorder[0].style.height=$rightBorder[0].style.height=parseInt(that.style.height,10)-interfaceHeight+"px"}css={width:settings.w+loadedWidth+interfaceWidth,height:settings.h+loadedHeight+interfaceHeight,top:top,left:left};if(speed===0){$box.css(css)}$box.dequeue().animate(css,{duration:speed,complete:function(){modalDimensions(this);active=false;$wrap[0].style.width=settings.w+loadedWidth+interfaceWidth+"px";$wrap[0].style.height=settings.h+loadedHeight+interfaceHeight+"px";if(settings.reposition){setTimeout(function(){$window.bind("resize."+prefix,publicMethod.position)},1)}if(loadedCallback){loadedCallback()}},step:function(){modalDimensions(this)}})};publicMethod.resize=function(options){if(open){options=options||{};if(options.width){settings.w=setSize(options.width,"x")-loadedWidth-interfaceWidth}if(options.innerWidth){settings.w=setSize(options.innerWidth,"x")}$loaded.css({width:settings.w});if(options.height){settings.h=setSize(options.height,"y")-loadedHeight-interfaceHeight}if(options.innerHeight){settings.h=setSize(options.innerHeight,"y")}if(!options.innerHeight&&!options.height){$loaded.css({height:"auto"});settings.h=$loaded.height()}$loaded.css({height:settings.h});publicMethod.position(settings.transition==="none"?0:settings.speed)}};publicMethod.prep=function(object){if(!open){return}var callback,speed=settings.transition==="none"?0:settings.speed;$loaded.empty().remove();$loaded=$tag(div,"LoadedContent").append(object);function getWidth(){settings.w=settings.w||$loaded.width();settings.w=settings.mw&&settings.mw<settings.w?settings.mw:settings.w;return settings.w}function getHeight(){settings.h=settings.h||$loaded.height();settings.h=settings.mh&&settings.mh<settings.h?settings.mh:settings.h;return settings.h}$loaded.hide().appendTo($loadingBay.show()).css({width:getWidth(),overflow:settings.scrolling?"auto":"hidden"}).css({height:getHeight()}).prependTo($content);$loadingBay.hide();$(photo).css({"float":"none"});callback=function(){var total=$related.length,iframe,frameBorder="frameBorder",allowTransparency="allowTransparency",complete;if(!open){return}function removeFilter(){if(isIE){$box[0].style.removeAttribute("filter")}}complete=function(){clearTimeout(loadingTimer);$loadingOverlay.remove();trigger(event_complete,settings.onComplete)};if(isIE){if(photo){$loaded.fadeIn(100)}}$title.html(settings.title).add($loaded).show();if(total>1){if(typeof settings.current==="string"){$current.html(settings.current.replace("{current}",index+1).replace("{total}",total)).show()}$next[settings.loop||index<total-1?"show":"hide"]().html(settings.next);$prev[settings.loop||index?"show":"hide"]().html(settings.previous);if(settings.slideshow){$slideshow.show()}if(settings.preloading){$.each([getIndex(-1),getIndex(1)],function(){var src,img,i=$related[this],data=$.data(i,colorbox);if(data&&data.href){src=data.href;if($.isFunction(src)){src=src.call(i)}}else{src=$(i).attr("href")}if(src&&(isImage(src)||data.photo)){img=new Image;img.src=src}})}}else{$groupControls.hide()}if(settings.iframe){iframe=$tag("iframe")[0];if(frameBorder in iframe){iframe[frameBorder]=0}if(allowTransparency in iframe){iframe[allowTransparency]="true"}if(!settings.scrolling){iframe.scrolling="no"}$(iframe).attr({src:settings.href,name:(new Date).getTime(),"class":prefix+"Iframe",allowFullScreen:true,webkitAllowFullScreen:true,mozallowfullscreen:true}).one("load",complete).appendTo($loaded);$events.one(event_purge,function(){iframe.src="//about:blank"});if(settings.fastIframe){$(iframe).trigger("load")}}else{complete()}if(settings.transition==="fade"){$box.fadeTo(speed,1,removeFilter)}else{removeFilter()}};if(settings.transition==="fade"){$box.fadeTo(speed,0,function(){publicMethod.position(0,callback)})}else{publicMethod.position(speed,callback)}};publicMethod.load=function(launched){var href,setResize,prep=publicMethod.prep,$inline;active=true;photo=false;element=$related[index];if(!launched){makeSettings()}if(className){$box.add($overlay).removeClass(className)}if(settings.className){$box.add($overlay).addClass(settings.className)}className=settings.className;trigger(event_purge);trigger(event_load,settings.onLoad);settings.h=settings.height?setSize(settings.height,"y")-loadedHeight-interfaceHeight:settings.innerHeight&&setSize(settings.innerHeight,"y");settings.w=settings.width?setSize(settings.width,"x")-loadedWidth-interfaceWidth:settings.innerWidth&&setSize(settings.innerWidth,"x");settings.mw=settings.w;settings.mh=settings.h;if(settings.maxWidth){settings.mw=setSize(settings.maxWidth,"x")-loadedWidth-interfaceWidth;settings.mw=settings.w&&settings.w<settings.mw?settings.w:settings.mw}if(settings.maxHeight){settings.mh=setSize(settings.maxHeight,"y")-loadedHeight-interfaceHeight;settings.mh=settings.h&&settings.h<settings.mh?settings.h:settings.mh}href=settings.href;loadingTimer=setTimeout(function(){$loadingOverlay.appendTo($content)},100);if(settings.inline){$inline=$tag(div).hide().insertBefore($(href)[0]);$events.one(event_purge,function(){$inline.replaceWith($loaded.children())});prep($(href))}else if(settings.iframe){prep(" ")}else if(settings.html){prep(settings.html)}else if(isImage(href)){$(photo=new Image).addClass(prefix+"Photo").bind("error",function(){settings.title=false;prep($tag(div,"Error").html(settings.imgError))}).one("load",function(){var percent;if(settings.scalePhotos){setResize=function(){photo.height-=photo.height*percent;photo.width-=photo.width*percent};if(settings.mw&&photo.width>settings.mw){percent=(photo.width-settings.mw)/photo.width;setResize()}if(settings.mh&&photo.height>settings.mh){percent=(photo.height-settings.mh)/photo.height;setResize()}}if(settings.h){photo.style.marginTop=Math.max(settings.mh-photo.height,0)/2+"px"}if($related[1]&&(settings.loop||$related[index+1])){photo.style.cursor="pointer";photo.onclick=function(){publicMethod.next()}}if(isIE){photo.style.msInterpolationMode="bicubic"}setTimeout(function(){prep(photo)},1)});setTimeout(function(){photo.src=href},1)}else if(href){$loadingBay.load(href,settings.data,function(data,status){prep(status==="error"?$tag(div,"Error").html(settings.xhrError):$(this).contents())})}};publicMethod.next=function(){if(!active&&$related[1]&&(settings.loop||$related[index+1])){index=getIndex(1);publicMethod.load()}};publicMethod.prev=function(){if(!active&&$related[1]&&(settings.loop||index)){index=getIndex(-1);publicMethod.load()}};publicMethod.close=function(){if(open&&!closing){closing=true;open=false;trigger(event_cleanup,settings.onCleanup);$window.unbind("."+prefix+" ."+event_ie6);$overlay.fadeTo(200,0);$box.stop().fadeTo(300,0,function(){$box.add($overlay).css({opacity:1,cursor:"auto"}).hide();trigger(event_purge);$loaded.empty().remove();setTimeout(function(){closing=false;trigger(event_closed,settings.onClosed)},1)})}};publicMethod.remove=function(){$([]).add($box).add($overlay).remove();$box=null;$("."+boxElement).removeData(colorbox).removeClass(boxElement);$(document).unbind("click."+prefix)};publicMethod.element=function(){return $(element)};publicMethod.settings=defaults})(jQuery,document,window); \ No newline at end of file
+/*!
+ Colorbox 1.5.14
+ license: MIT
+ http://www.jacklmoore.com/colorbox
+*/
+(function(t,e,i){function n(i,n,o){var r=e.createElement(i);return n&&(r.id=Z+n),o&&(r.style.cssText=o),t(r)}function o(){return i.innerHeight?i.innerHeight:t(i).height()}function r(e,i){i!==Object(i)&&(i={}),this.cache={},this.el=e,this.value=function(e){var n;return void 0===this.cache[e]&&(n=t(this.el).attr("data-cbox-"+e),void 0!==n?this.cache[e]=n:void 0!==i[e]?this.cache[e]=i[e]:void 0!==X[e]&&(this.cache[e]=X[e])),this.cache[e]},this.get=function(e){var i=this.value(e);return t.isFunction(i)?i.call(this.el,this):i}}function h(t){var e=W.length,i=(z+t)%e;return 0>i?e+i:i}function a(t,e){return Math.round((/%/.test(t)?("x"===e?E.width():o())/100:1)*parseInt(t,10))}function s(t,e){return t.get("photo")||t.get("photoRegex").test(e)}function l(t,e){return t.get("retinaUrl")&&i.devicePixelRatio>1?e.replace(t.get("photoRegex"),t.get("retinaSuffix")):e}function d(t){"contains"in y[0]&&!y[0].contains(t.target)&&t.target!==v[0]&&(t.stopPropagation(),y.focus())}function c(t){c.str!==t&&(y.add(v).removeClass(c.str).addClass(t),c.str=t)}function g(e){z=0,e&&e!==!1&&"nofollow"!==e?(W=t("."+te).filter(function(){var i=t.data(this,Y),n=new r(this,i);return n.get("rel")===e}),z=W.index(_.el),-1===z&&(W=W.add(_.el),z=W.length-1)):W=t(_.el)}function u(i){t(e).trigger(i),ae.triggerHandler(i)}function f(i){var o;if(!G){if(o=t(i).data(Y),_=new r(i,o),g(_.get("rel")),!$){$=q=!0,c(_.get("className")),y.css({visibility:"hidden",display:"block",opacity:""}),L=n(se,"LoadedContent","width:0; height:0; overflow:hidden; visibility:hidden"),b.css({width:"",height:""}).append(L),D=T.height()+k.height()+b.outerHeight(!0)-b.height(),j=C.width()+H.width()+b.outerWidth(!0)-b.width(),A=L.outerHeight(!0),N=L.outerWidth(!0);var h=a(_.get("initialWidth"),"x"),s=a(_.get("initialHeight"),"y"),l=_.get("maxWidth"),f=_.get("maxHeight");_.w=(l!==!1?Math.min(h,a(l,"x")):h)-N-j,_.h=(f!==!1?Math.min(s,a(f,"y")):s)-A-D,L.css({width:"",height:_.h}),J.position(),u(ee),_.get("onOpen"),O.add(F).hide(),y.focus(),_.get("trapFocus")&&e.addEventListener&&(e.addEventListener("focus",d,!0),ae.one(re,function(){e.removeEventListener("focus",d,!0)})),_.get("returnFocus")&&ae.one(re,function(){t(_.el).focus()})}var p=parseFloat(_.get("opacity"));v.css({opacity:p===p?p:"",cursor:_.get("overlayClose")?"pointer":"",visibility:"visible"}).show(),_.get("closeButton")?B.html(_.get("close")).appendTo(b):B.appendTo("<div/>"),w()}}function p(){y||(V=!1,E=t(i),y=n(se).attr({id:Y,"class":t.support.opacity===!1?Z+"IE":"",role:"dialog",tabindex:"-1"}).hide(),v=n(se,"Overlay").hide(),S=t([n(se,"LoadingOverlay")[0],n(se,"LoadingGraphic")[0]]),x=n(se,"Wrapper"),b=n(se,"Content").append(F=n(se,"Title"),I=n(se,"Current"),P=t('<button type="button"/>').attr({id:Z+"Previous"}),K=t('<button type="button"/>').attr({id:Z+"Next"}),R=n("button","Slideshow"),S),B=t('<button type="button"/>').attr({id:Z+"Close"}),x.append(n(se).append(n(se,"TopLeft"),T=n(se,"TopCenter"),n(se,"TopRight")),n(se,!1,"clear:left").append(C=n(se,"MiddleLeft"),b,H=n(se,"MiddleRight")),n(se,!1,"clear:left").append(n(se,"BottomLeft"),k=n(se,"BottomCenter"),n(se,"BottomRight"))).find("div div").css({"float":"left"}),M=n(se,!1,"position:absolute; width:9999px; visibility:hidden; display:none; max-width:none;"),O=K.add(P).add(I).add(R)),e.body&&!y.parent().length&&t(e.body).append(v,y.append(x,M))}function m(){function i(t){t.which>1||t.shiftKey||t.altKey||t.metaKey||t.ctrlKey||(t.preventDefault(),f(this))}return y?(V||(V=!0,K.click(function(){J.next()}),P.click(function(){J.prev()}),B.click(function(){J.close()}),v.click(function(){_.get("overlayClose")&&J.close()}),t(e).bind("keydown."+Z,function(t){var e=t.keyCode;$&&_.get("escKey")&&27===e&&(t.preventDefault(),J.close()),$&&_.get("arrowKey")&&W[1]&&!t.altKey&&(37===e?(t.preventDefault(),P.click()):39===e&&(t.preventDefault(),K.click()))}),t.isFunction(t.fn.on)?t(e).on("click."+Z,"."+te,i):t("."+te).live("click."+Z,i)),!0):!1}function w(){var e,o,r,h=J.prep,d=++le;if(q=!0,U=!1,u(he),u(ie),_.get("onLoad"),_.h=_.get("height")?a(_.get("height"),"y")-A-D:_.get("innerHeight")&&a(_.get("innerHeight"),"y"),_.w=_.get("width")?a(_.get("width"),"x")-N-j:_.get("innerWidth")&&a(_.get("innerWidth"),"x"),_.mw=_.w,_.mh=_.h,_.get("maxWidth")&&(_.mw=a(_.get("maxWidth"),"x")-N-j,_.mw=_.w&&_.w<_.mw?_.w:_.mw),_.get("maxHeight")&&(_.mh=a(_.get("maxHeight"),"y")-A-D,_.mh=_.h&&_.h<_.mh?_.h:_.mh),e=_.get("href"),Q=setTimeout(function(){S.show()},100),_.get("inline")){var c=t(e);r=t("<div>").hide().insertBefore(c),ae.one(he,function(){r.replaceWith(c)}),h(c)}else _.get("iframe")?h(" "):_.get("html")?h(_.get("html")):s(_,e)?(e=l(_,e),U=new Image,t(U).addClass(Z+"Photo").bind("error",function(){h(n(se,"Error").html(_.get("imgError")))}).one("load",function(){d===le&&setTimeout(function(){var e;t.each(["alt","longdesc","aria-describedby"],function(e,i){var n=t(_.el).attr(i)||t(_.el).attr("data-"+i);n&&U.setAttribute(i,n)}),_.get("retinaImage")&&i.devicePixelRatio>1&&(U.height=U.height/i.devicePixelRatio,U.width=U.width/i.devicePixelRatio),_.get("scalePhotos")&&(o=function(){U.height-=U.height*e,U.width-=U.width*e},_.mw&&U.width>_.mw&&(e=(U.width-_.mw)/U.width,o()),_.mh&&U.height>_.mh&&(e=(U.height-_.mh)/U.height,o())),_.h&&(U.style.marginTop=Math.max(_.mh-U.height,0)/2+"px"),W[1]&&(_.get("loop")||W[z+1])&&(U.style.cursor="pointer",U.onclick=function(){J.next()}),U.style.width=U.width+"px",U.style.height=U.height+"px",h(U)},1)}),U.src=e):e&&M.load(e,_.get("data"),function(e,i){d===le&&h("error"===i?n(se,"Error").html(_.get("xhrError")):t(this).contents())})}var v,y,x,b,T,C,H,k,W,E,L,M,S,F,I,R,K,P,B,O,_,D,j,A,N,z,U,$,q,G,Q,J,V,X={html:!1,photo:!1,iframe:!1,inline:!1,transition:"elastic",speed:300,fadeOut:300,width:!1,initialWidth:"600",innerWidth:!1,maxWidth:!1,height:!1,initialHeight:"450",innerHeight:!1,maxHeight:!1,scalePhotos:!0,scrolling:!0,opacity:.9,preloading:!0,className:!1,overlayClose:!0,escKey:!0,arrowKey:!0,top:!1,bottom:!1,left:!1,right:!1,fixed:!1,data:void 0,closeButton:!0,fastIframe:!0,open:!1,reposition:!0,loop:!0,slideshow:!1,slideshowAuto:!0,slideshowSpeed:2500,slideshowStart:"start slideshow",slideshowStop:"stop slideshow",photoRegex:/\.(gif|png|jp(e|g|eg)|bmp|ico|webp|jxr|svg)((#|\?).*)?$/i,retinaImage:!1,retinaUrl:!1,retinaSuffix:"@2x.$1",current:"image {current} of {total}",previous:"previous",next:"next",close:"close",xhrError:"This content failed to load.",imgError:"This image failed to load.",returnFocus:!0,trapFocus:!0,onOpen:!1,onLoad:!1,onComplete:!1,onCleanup:!1,onClosed:!1,rel:function(){return this.rel},href:function(){return t(this).attr("href")},title:function(){return this.title}},Y="colorbox",Z="cbox",te=Z+"Element",ee=Z+"_open",ie=Z+"_load",ne=Z+"_complete",oe=Z+"_cleanup",re=Z+"_closed",he=Z+"_purge",ae=t("<a/>"),se="div",le=0,de={},ce=function(){function t(){clearTimeout(h)}function e(){(_.get("loop")||W[z+1])&&(t(),h=setTimeout(J.next,_.get("slideshowSpeed")))}function i(){R.html(_.get("slideshowStop")).unbind(s).one(s,n),ae.bind(ne,e).bind(ie,t),y.removeClass(a+"off").addClass(a+"on")}function n(){t(),ae.unbind(ne,e).unbind(ie,t),R.html(_.get("slideshowStart")).unbind(s).one(s,function(){J.next(),i()}),y.removeClass(a+"on").addClass(a+"off")}function o(){r=!1,R.hide(),t(),ae.unbind(ne,e).unbind(ie,t),y.removeClass(a+"off "+a+"on")}var r,h,a=Z+"Slideshow_",s="click."+Z;return function(){r?_.get("slideshow")||(ae.unbind(oe,o),o()):_.get("slideshow")&&W[1]&&(r=!0,ae.one(oe,o),_.get("slideshowAuto")?i():n(),R.show())}}();t[Y]||(t(p),J=t.fn[Y]=t[Y]=function(e,i){var n,o=this;if(e=e||{},t.isFunction(o))o=t("<a/>"),e.open=!0;else if(!o[0])return o;return o[0]?(p(),m()&&(i&&(e.onComplete=i),o.each(function(){var i=t.data(this,Y)||{};t.data(this,Y,t.extend(i,e))}).addClass(te),n=new r(o[0],e),n.get("open")&&f(o[0])),o):o},J.position=function(e,i){function n(){T[0].style.width=k[0].style.width=b[0].style.width=parseInt(y[0].style.width,10)-j+"px",b[0].style.height=C[0].style.height=H[0].style.height=parseInt(y[0].style.height,10)-D+"px"}var r,h,s,l=0,d=0,c=y.offset();if(E.unbind("resize."+Z),y.css({top:-9e4,left:-9e4}),h=E.scrollTop(),s=E.scrollLeft(),_.get("fixed")?(c.top-=h,c.left-=s,y.css({position:"fixed"})):(l=h,d=s,y.css({position:"absolute"})),d+=_.get("right")!==!1?Math.max(E.width()-_.w-N-j-a(_.get("right"),"x"),0):_.get("left")!==!1?a(_.get("left"),"x"):Math.round(Math.max(E.width()-_.w-N-j,0)/2),l+=_.get("bottom")!==!1?Math.max(o()-_.h-A-D-a(_.get("bottom"),"y"),0):_.get("top")!==!1?a(_.get("top"),"y"):Math.round(Math.max(o()-_.h-A-D,0)/2),y.css({top:c.top,left:c.left,visibility:"visible"}),x[0].style.width=x[0].style.height="9999px",r={width:_.w+N+j,height:_.h+A+D,top:l,left:d},e){var g=0;t.each(r,function(t){return r[t]!==de[t]?(g=e,void 0):void 0}),e=g}de=r,e||y.css(r),y.dequeue().animate(r,{duration:e||0,complete:function(){n(),q=!1,x[0].style.width=_.w+N+j+"px",x[0].style.height=_.h+A+D+"px",_.get("reposition")&&setTimeout(function(){E.bind("resize."+Z,J.position)},1),t.isFunction(i)&&i()},step:n})},J.resize=function(t){var e;$&&(t=t||{},t.width&&(_.w=a(t.width,"x")-N-j),t.innerWidth&&(_.w=a(t.innerWidth,"x")),L.css({width:_.w}),t.height&&(_.h=a(t.height,"y")-A-D),t.innerHeight&&(_.h=a(t.innerHeight,"y")),t.innerHeight||t.height||(e=L.scrollTop(),L.css({height:"auto"}),_.h=L.height()),L.css({height:_.h}),e&&L.scrollTop(e),J.position("none"===_.get("transition")?0:_.get("speed")))},J.prep=function(i){function o(){return _.w=_.w||L.width(),_.w=_.mw&&_.mw<_.w?_.mw:_.w,_.w}function a(){return _.h=_.h||L.height(),_.h=_.mh&&_.mh<_.h?_.mh:_.h,_.h}if($){var d,g="none"===_.get("transition")?0:_.get("speed");L.remove(),L=n(se,"LoadedContent").append(i),L.hide().appendTo(M.show()).css({width:o(),overflow:_.get("scrolling")?"auto":"hidden"}).css({height:a()}).prependTo(b),M.hide(),t(U).css({"float":"none"}),c(_.get("className")),d=function(){function i(){t.support.opacity===!1&&y[0].style.removeAttribute("filter")}var n,o,a=W.length;$&&(o=function(){clearTimeout(Q),S.hide(),u(ne),_.get("onComplete")},F.html(_.get("title")).show(),L.show(),a>1?("string"==typeof _.get("current")&&I.html(_.get("current").replace("{current}",z+1).replace("{total}",a)).show(),K[_.get("loop")||a-1>z?"show":"hide"]().html(_.get("next")),P[_.get("loop")||z?"show":"hide"]().html(_.get("previous")),ce(),_.get("preloading")&&t.each([h(-1),h(1)],function(){var i,n=W[this],o=new r(n,t.data(n,Y)),h=o.get("href");h&&s(o,h)&&(h=l(o,h),i=e.createElement("img"),i.src=h)})):O.hide(),_.get("iframe")?(n=e.createElement("iframe"),"frameBorder"in n&&(n.frameBorder=0),"allowTransparency"in n&&(n.allowTransparency="true"),_.get("scrolling")||(n.scrolling="no"),t(n).attr({src:_.get("href"),name:(new Date).getTime(),"class":Z+"Iframe",allowFullScreen:!0}).one("load",o).appendTo(L),ae.one(he,function(){n.src="//about:blank"}),_.get("fastIframe")&&t(n).trigger("load")):o(),"fade"===_.get("transition")?y.fadeTo(g,1,i):i())},"fade"===_.get("transition")?y.fadeTo(g,0,function(){J.position(0,d)}):J.position(g,d)}},J.next=function(){!q&&W[1]&&(_.get("loop")||W[z+1])&&(z=h(1),f(W[z]))},J.prev=function(){!q&&W[1]&&(_.get("loop")||z)&&(z=h(-1),f(W[z]))},J.close=function(){$&&!G&&(G=!0,$=!1,u(oe),_.get("onCleanup"),E.unbind("."+Z),v.fadeTo(_.get("fadeOut")||0,0),y.stop().fadeTo(_.get("fadeOut")||0,0,function(){y.hide(),v.hide(),u(he),L.remove(),setTimeout(function(){G=!1,u(re),_.get("onClosed")},1)}))},J.remove=function(){y&&(y.stop(),t[Y].close(),y.stop(!1,!0).remove(),v.remove(),G=!1,y=null,t("."+te).removeData(Y).removeClass(te),t(e).unbind("click."+Z).unbind("keydown."+Z))},J.element=function(){return t(_.el)},J.settings=X)})(jQuery,document,window); \ No newline at end of file
diff --git a/library/colorbox/jquery.colorbox.js b/library/colorbox/jquery.colorbox.js
index 5b9aecdc2..c0348849e 100644
--- a/library/colorbox/jquery.colorbox.js
+++ b/library/colorbox/jquery.colorbox.js
@@ -1,15 +1,23 @@
-/*
- jQuery ColorBox v1.3.32 - 2013-01-31
- (c) 2013 Jack Moore - jacklmoore.com/colorbox
- license: http://www.opensource.org/licenses/mit-license.php
+/*!
+ Colorbox 1.5.14
+ license: MIT
+ http://www.jacklmoore.com/colorbox
*/
(function ($, document, window) {
var
// Default settings object.
// See http://jacklmoore.com/colorbox for details.
defaults = {
+ // data sources
+ html: false,
+ photo: false,
+ iframe: false,
+ inline: false,
+
+ // behavior and appearance
transition: "elastic",
speed: 300,
+ fadeOut: 300,
width: false,
initialWidth: "600",
innerWidth: false,
@@ -20,18 +28,36 @@
maxHeight: false,
scalePhotos: true,
scrolling: true,
- inline: false,
- html: false,
- iframe: false,
- fastIframe: true,
- photo: false,
- href: false,
- title: false,
- rel: false,
opacity: 0.9,
preloading: true,
className: false,
+ overlayClose: true,
+ escKey: true,
+ arrowKey: true,
+ top: false,
+ bottom: false,
+ left: false,
+ right: false,
+ fixed: false,
+ data: undefined,
+ closeButton: true,
+ fastIframe: true,
+ open: false,
+ reposition: true,
+ loop: true,
+ slideshow: false,
+ slideshowAuto: true,
+ slideshowSpeed: 2500,
+ slideshowStart: "start slideshow",
+ slideshowStop: "stop slideshow",
+ photoRegex: /\.(gif|png|jp(e|g|eg)|bmp|ico|webp|jxr|svg)((#|\?).*)?$/i,
+
+ // alternate image paths for high-res displays
+ retinaImage: false,
+ retinaUrl: false,
+ retinaSuffix: '@2x.$1',
+ // internationalization
current: "image {current} of {total}",
previous: "previous",
next: "next",
@@ -39,31 +65,29 @@
xhrError: "This content failed to load.",
imgError: "This image failed to load.",
- open: false,
+ // accessbility
returnFocus: true,
- reposition: true,
- loop: true,
- slideshow: false,
- slideshowAuto: true,
- slideshowSpeed: 2500,
- slideshowStart: "start slideshow",
- slideshowStop: "stop slideshow",
+ trapFocus: true,
+
+ // callbacks
onOpen: false,
onLoad: false,
onComplete: false,
onCleanup: false,
onClosed: false,
- overlayClose: true,
- escKey: true,
- arrowKey: true,
- top: false,
- bottom: false,
- left: false,
- right: false,
- fixed: false,
- data: undefined
+
+ rel: function() {
+ return this.rel;
+ },
+ href: function() {
+ // using this.href would give the absolute url, when the href may have been inteded as a selector (e.g. '#container')
+ return $(this).attr('href');
+ },
+ title: function() {
+ return this.title;
+ }
},
-
+
// Abstracting the HTML and event identifiers for easy rebranding
colorbox = 'colorbox',
prefix = 'cbox',
@@ -76,11 +100,6 @@
event_cleanup = prefix + '_cleanup',
event_closed = prefix + '_closed',
event_purge = prefix + '_purge',
-
- // Special Handling for IE
- isIE = !$.support.leadingWhitespace, // IE6 to IE8
- isIE6 = isIE && !window.XMLHttpRequest, // IE6
- event_ie6 = prefix + '_IE6',
// Cached jQuery Object Variables
$overlay,
@@ -103,7 +122,7 @@
$prev,
$close,
$groupControls,
- $events = $({}),
+ $events = $('<a/>'), // $({}) would be prefered, but there is an issue with jQuery 1.4.2
// Variables for cached values or use across multiple functions
settings,
@@ -111,7 +130,6 @@
interfaceWidth,
loadedHeight,
loadedWidth,
- element,
index,
photo,
open,
@@ -120,14 +138,15 @@
loadingTimer,
publicMethod,
div = "div",
- className,
+ requests = 0,
+ previousCSS = {},
init;
// ****************
// HELPER FUNCTIONS
// ****************
- // Convience function for creating new jQuery objects
+ // Convenience function for creating new jQuery objects
function $tag(tag, id, css) {
var element = document.createElement(tag);
@@ -141,6 +160,44 @@
return $(element);
}
+
+ // Get the window height using innerHeight when available to avoid an issue with iOS
+ // http://bugs.jquery.com/ticket/6724
+ function winheight() {
+ return window.innerHeight ? window.innerHeight : $(window).height();
+ }
+
+ function Settings(element, options) {
+ if (options !== Object(options)) {
+ options = {};
+ }
+
+ this.cache = {};
+ this.el = element;
+
+ this.value = function(key) {
+ var dataAttr;
+
+ if (this.cache[key] === undefined) {
+ dataAttr = $(this.el).attr('data-cbox-'+key);
+
+ if (dataAttr !== undefined) {
+ this.cache[key] = dataAttr;
+ } else if (options[key] !== undefined) {
+ this.cache[key] = options[key];
+ } else if (defaults[key] !== undefined) {
+ this.cache[key] = defaults[key];
+ }
+ }
+
+ return this.cache[key];
+ };
+
+ this.get = function(key) {
+ var value = this.value(key);
+ return $.isFunction(value) ? value.call(this.el, this) : value;
+ };
+ }
// Determine the next and previous members in a group.
function getIndex(increment) {
@@ -153,224 +210,254 @@
// Convert '%' and 'px' values to integers
function setSize(size, dimension) {
- return Math.round((/%/.test(size) ? ((dimension === 'x' ? $window.width() : $window.height()) / 100) : 1) * parseInt(size, 10));
+ return Math.round((/%/.test(size) ? ((dimension === 'x' ? $window.width() : winheight()) / 100) : 1) * parseInt(size, 10));
}
// Checks an href to see if it is a photo.
- // There is a force photo option (photo: true) for hrefs that cannot be matched by this regex.
- function isImage(url) {
- return settings.photo || /\.(gif|png|jp(e|g|eg)|bmp|ico)((#|\?).*)?$/i.test(url);
+ // There is a force photo option (photo: true) for hrefs that cannot be matched by the regex.
+ function isImage(settings, url) {
+ return settings.get('photo') || settings.get('photoRegex').test(url);
}
- // Assigns function results to their respective properties
- function makeSettings() {
- var i,
- data = $.data(element, colorbox);
-
- if (data == null) {
- settings = $.extend({}, defaults);
- if (console && console.log) {
- console.log('Error: cboxElement missing settings object');
- }
- } else {
- settings = $.extend({}, data);
+ function retinaUrl(settings, url) {
+ return settings.get('retinaUrl') && window.devicePixelRatio > 1 ? url.replace(settings.get('photoRegex'), settings.get('retinaSuffix')) : url;
+ }
+
+ function trapFocus(e) {
+ if ('contains' in $box[0] && !$box[0].contains(e.target) && e.target !== $overlay[0]) {
+ e.stopPropagation();
+ $box.focus();
}
-
- for (i in settings) {
- if ($.isFunction(settings[i]) && i.slice(0, 2) !== 'on') { // checks to make sure the function isn't one of the callbacks, they will be handled at the appropriate time.
- settings[i] = settings[i].call(element);
- }
+ }
+
+ function setClass(str) {
+ if (setClass.str !== str) {
+ $box.add($overlay).removeClass(setClass.str).addClass(str);
+ setClass.str = str;
}
+ }
+
+ function getRelated(rel) {
+ index = 0;
- settings.rel = settings.rel || element.rel || $(element).data('rel') || 'nofollow';
- settings.href = settings.href || $(element).attr('href');
- settings.title = settings.title || element.title;
-
- if (typeof settings.href === "string") {
- settings.href = $.trim(settings.href);
+ if (rel && rel !== false && rel !== 'nofollow') {
+ $related = $('.' + boxElement).filter(function () {
+ var options = $.data(this, colorbox);
+ var settings = new Settings(this, options);
+ return (settings.get('rel') === rel);
+ });
+ index = $related.index(settings.el);
+
+ // Check direct calls to Colorbox.
+ if (index === -1) {
+ $related = $related.add(settings.el);
+ index = $related.length - 1;
+ }
+ } else {
+ $related = $(settings.el);
}
}
- function trigger(event, callback) {
+ function trigger(event) {
// for external use
$(document).trigger(event);
-
// for internal use
- $events.trigger(event);
+ $events.triggerHandler(event);
+ }
+
+ var slideshow = (function(){
+ var active,
+ className = prefix + "Slideshow_",
+ click = "click." + prefix,
+ timeOut;
- if ($.isFunction(callback)) {
- callback.call(element);
+ function clear () {
+ clearTimeout(timeOut);
}
- }
- // Slideshow functionality
- function slideshow() {
- var
- timeOut,
- className = prefix + "Slideshow_",
- click = "click." + prefix,
- clear,
- set,
- start,
- stop;
-
- if (settings.slideshow && $related[1]) {
- clear = function () {
- clearTimeout(timeOut);
- };
+ function set() {
+ if (settings.get('loop') || $related[index + 1]) {
+ clear();
+ timeOut = setTimeout(publicMethod.next, settings.get('slideshowSpeed'));
+ }
+ }
- set = function () {
- if (settings.loop || $related[index + 1]) {
- timeOut = setTimeout(publicMethod.next, settings.slideshowSpeed);
- }
- };
+ function start() {
+ $slideshow
+ .html(settings.get('slideshowStop'))
+ .unbind(click)
+ .one(click, stop);
- start = function () {
- $slideshow
- .html(settings.slideshowStop)
- .unbind(click)
- .one(click, stop);
+ $events
+ .bind(event_complete, set)
+ .bind(event_load, clear);
- $events
- .bind(event_complete, set)
- .bind(event_load, clear)
- .bind(event_cleanup, stop);
+ $box.removeClass(className + "off").addClass(className + "on");
+ }
- $box.removeClass(className + "off").addClass(className + "on");
- };
+ function stop() {
+ clear();
- stop = function () {
- clear();
-
- $events
- .unbind(event_complete, set)
- .unbind(event_load, clear)
- .unbind(event_cleanup, stop);
-
- $slideshow
- .html(settings.slideshowStart)
- .unbind(click)
- .one(click, function () {
- publicMethod.next();
- start();
- });
+ $events
+ .unbind(event_complete, set)
+ .unbind(event_load, clear);
+
+ $slideshow
+ .html(settings.get('slideshowStart'))
+ .unbind(click)
+ .one(click, function () {
+ publicMethod.next();
+ start();
+ });
- $box.removeClass(className + "on").addClass(className + "off");
- };
-
- if (settings.slideshowAuto) {
- start();
- } else {
- stop();
- }
- } else {
- $box.removeClass(className + "off " + className + "on");
+ $box.removeClass(className + "on").addClass(className + "off");
}
- }
- function launch(target) {
- if (!closing) {
-
- element = target;
-
- makeSettings();
-
- $related = $(element);
-
- index = 0;
-
- if (settings.rel !== 'nofollow') {
- $related = $('.' + boxElement).filter(function () {
- var data = $.data(this, colorbox),
- relRelated;
+ function reset() {
+ active = false;
+ $slideshow.hide();
+ clear();
+ $events
+ .unbind(event_complete, set)
+ .unbind(event_load, clear);
+ $box.removeClass(className + "off " + className + "on");
+ }
- if (data) {
- relRelated = $(this).data('rel') || data.rel || this.rel;
+ return function(){
+ if (active) {
+ if (!settings.get('slideshow')) {
+ $events.unbind(event_cleanup, reset);
+ reset();
+ }
+ } else {
+ if (settings.get('slideshow') && $related[1]) {
+ active = true;
+ $events.one(event_cleanup, reset);
+ if (settings.get('slideshowAuto')) {
+ start();
+ } else {
+ stop();
}
-
- return (relRelated === settings.rel);
- });
- index = $related.index(element);
-
- // Check direct calls to ColorBox.
- if (index === -1) {
- $related = $related.add(element);
- index = $related.length - 1;
+ $slideshow.show();
}
}
+ };
+
+ }());
+
+
+ function launch(element) {
+ var options;
+
+ if (!closing) {
+
+ options = $(element).data(colorbox);
+
+ settings = new Settings(element, options);
+ getRelated(settings.get('rel'));
+
if (!open) {
open = active = true; // Prevents the page-change action from queuing up if the visitor holds down the left or right keys.
+
+ setClass(settings.get('className'));
// Show colorbox so the sizes can be calculated in older versions of jQuery
- $box.css({visibility:'hidden', display:'block'});
+ $box.css({visibility:'hidden', display:'block', opacity:''});
- $loaded = $tag(div, 'LoadedContent', 'width:0; height:0; overflow:hidden').appendTo($content);
+ $loaded = $tag(div, 'LoadedContent', 'width:0; height:0; overflow:hidden; visibility:hidden');
+ $content.css({width:'', height:''}).append($loaded);
// Cache values needed for size calculations
- interfaceHeight = $topBorder.height() + $bottomBorder.height() + $content.outerHeight(true) - $content.height();//Subtraction needed for IE6
+ interfaceHeight = $topBorder.height() + $bottomBorder.height() + $content.outerHeight(true) - $content.height();
interfaceWidth = $leftBorder.width() + $rightBorder.width() + $content.outerWidth(true) - $content.width();
loadedHeight = $loaded.outerHeight(true);
loadedWidth = $loaded.outerWidth(true);
- if (settings.returnFocus) {
- $(element).blur();
- $events.one(event_closed, function () {
- $(element).focus();
- });
- }
-
- $overlay.css({
- opacity: parseFloat(settings.opacity),
- cursor: settings.overlayClose ? "pointer" : "auto",
- visibility: 'visible'
- }).show();
-
- // Opens inital empty ColorBox prior to content being loaded.
- settings.w = setSize(settings.initialWidth, 'x');
- settings.h = setSize(settings.initialHeight, 'y');
+ // Opens inital empty Colorbox prior to content being loaded.
+ var initialWidth = setSize(settings.get('initialWidth'), 'x');
+ var initialHeight = setSize(settings.get('initialHeight'), 'y');
+ var maxWidth = settings.get('maxWidth');
+ var maxHeight = settings.get('maxHeight');
+
+ settings.w = (maxWidth !== false ? Math.min(initialWidth, setSize(maxWidth, 'x')) : initialWidth) - loadedWidth - interfaceWidth;
+ settings.h = (maxHeight !== false ? Math.min(initialHeight, setSize(maxHeight, 'y')) : initialHeight) - loadedHeight - interfaceHeight;
+
+ $loaded.css({width:'', height:settings.h});
publicMethod.position();
- if (isIE6) {
- $window.bind('resize.' + event_ie6 + ' scroll.' + event_ie6, function () {
- $overlay.css({width: $window.width(), height: $window.height(), top: $window.scrollTop(), left: $window.scrollLeft()});
- }).trigger('resize.' + event_ie6);
- }
-
- slideshow();
+ trigger(event_open);
+ settings.get('onOpen');
- trigger(event_open, settings.onOpen);
-
$groupControls.add($title).hide();
+
+ $box.focus();
- $close.html(settings.close).show();
+ if (settings.get('trapFocus')) {
+ // Confine focus to the modal
+ // Uses event capturing that is not supported in IE8-
+ if (document.addEventListener) {
+
+ document.addEventListener('focus', trapFocus, true);
+
+ $events.one(event_closed, function () {
+ document.removeEventListener('focus', trapFocus, true);
+ });
+ }
+ }
+
+ // Return focus on closing
+ if (settings.get('returnFocus')) {
+ $events.one(event_closed, function () {
+ $(settings.el).focus();
+ });
+ }
}
+
+ var opacity = parseFloat(settings.get('opacity'));
+ $overlay.css({
+ opacity: opacity === opacity ? opacity : '',
+ cursor: settings.get('overlayClose') ? 'pointer' : '',
+ visibility: 'visible'
+ }).show();
- publicMethod.load(true);
+ if (settings.get('closeButton')) {
+ $close.html(settings.get('close')).appendTo($content);
+ } else {
+ $close.appendTo('<div/>'); // replace with .detach() when dropping jQuery < 1.4
+ }
+
+ load();
}
}
- // ColorBox's markup needs to be added to the DOM prior to being called
+ // Colorbox's markup needs to be added to the DOM prior to being called
// so that the browser will go ahead and load the CSS background images.
function appendHTML() {
- if (!$box && document.body) {
+ if (!$box) {
init = false;
-
$window = $(window);
- $box = $tag(div).attr({id: colorbox, 'class': isIE ? prefix + (isIE6 ? 'IE6' : 'IE') : ''}).hide();
- $overlay = $tag(div, "Overlay", isIE6 ? 'position:absolute' : '').hide();
- $loadingOverlay = $tag(div, "LoadingOverlay").add($tag(div, "LoadingGraphic"));
+ $box = $tag(div).attr({
+ id: colorbox,
+ 'class': $.support.opacity === false ? prefix + 'IE' : '', // class for optional IE8 & lower targeted CSS.
+ role: 'dialog',
+ tabindex: '-1'
+ }).hide();
+ $overlay = $tag(div, "Overlay").hide();
+ $loadingOverlay = $([$tag(div, "LoadingOverlay")[0],$tag(div, "LoadingGraphic")[0]]);
$wrap = $tag(div, "Wrapper");
$content = $tag(div, "Content").append(
$title = $tag(div, "Title"),
$current = $tag(div, "Current"),
- $next = $tag(div, "Next"),
- $prev = $tag(div, "Previous"),
- $slideshow = $tag(div, "Slideshow"),
- $close = $tag(div, "Close")
+ $prev = $('<button type="button"/>').attr({id:prefix+'Previous'}),
+ $next = $('<button type="button"/>').attr({id:prefix+'Next'}),
+ $slideshow = $tag('button', "Slideshow"),
+ $loadingOverlay
);
+
+ $close = $('<button type="button"/>').attr({id:prefix+'Close'});
- $wrap.append( // The 3x3 Grid that makes up ColorBox
+ $wrap.append( // The 3x3 Grid that makes up Colorbox
$tag(div).append(
$tag(div, "TopLeft"),
$topBorder = $tag(div, "TopCenter"),
@@ -388,20 +475,21 @@
)
).find('div div').css({'float': 'left'});
- $loadingBay = $tag(div, false, 'position:absolute; width:9999px; visibility:hidden; display:none');
+ $loadingBay = $tag(div, false, 'position:absolute; width:9999px; visibility:hidden; display:none; max-width:none;');
$groupControls = $next.add($prev).add($current).add($slideshow);
-
+ }
+ if (document.body && !$box.parent().length) {
$(document.body).append($overlay, $box.append($wrap, $loadingBay));
}
}
- // Add ColorBox's event bindings
+ // Add Colorbox's event bindings
function addBindings() {
function clickHandler(e) {
// ignore non-left-mouse-clicks and clicks modified with ctrl / command, shift, or alt.
// See: http://jacklmoore.com/notes/click-events/
- if (!(e.which > 1 || e.shiftKey || e.altKey || e.metaKey)) {
+ if (!(e.which > 1 || e.shiftKey || e.altKey || e.metaKey || e.ctrlKey)) {
e.preventDefault();
launch(this);
}
@@ -422,7 +510,7 @@
publicMethod.close();
});
$overlay.click(function () {
- if (settings.overlayClose) {
+ if (settings.get('overlayClose')) {
publicMethod.close();
}
});
@@ -430,11 +518,11 @@
// Key Bindings
$(document).bind('keydown.' + prefix, function (e) {
var key = e.keyCode;
- if (open && settings.escKey && key === 27) {
+ if (open && settings.get('escKey') && key === 27) {
e.preventDefault();
publicMethod.close();
}
- if (open && settings.arrowKey && $related[1]) {
+ if (open && settings.get('arrowKey') && $related[1] && !e.altKey) {
if (key === 37) {
e.preventDefault();
$prev.click();
@@ -446,8 +534,12 @@
});
if ($.isFunction($.fn.on)) {
+ // For jQuery 1.7+
$(document).on('click.'+prefix, '.'+boxElement, clickHandler);
- } else { // For jQuery 1.3.x -> 1.6.x
+ } else {
+ // For jQuery 1.3.x -> 1.6.x
+ // This code is never reached in jQuery 1.9, so do not contact me about 'live' being removed.
+ // This is not here for jQuery 1.9, it's here for legacy users.
$('.'+boxElement).live('click.'+prefix, clickHandler);
}
}
@@ -456,8 +548,8 @@
return false;
}
- // Don't do anything if ColorBox already exists.
- if ($.colorbox) {
+ // Don't do anything if Colorbox already exists.
+ if ($[colorbox]) {
return;
}
@@ -467,39 +559,49 @@
// ****************
// PUBLIC FUNCTIONS
- // Usage format: $.fn.colorbox.close();
- // Usage from within an iframe: parent.$.fn.colorbox.close();
+ // Usage format: $.colorbox.close();
+ // Usage from within an iframe: parent.jQuery.colorbox.close();
// ****************
publicMethod = $.fn[colorbox] = $[colorbox] = function (options, callback) {
- var $this = this;
-
+ var settings;
+ var $obj = this;
+
options = options || {};
+
+ if ($.isFunction($obj)) { // assume a call to $.colorbox
+ $obj = $('<a/>');
+ options.open = true;
+ } else if (!$obj[0]) { // colorbox being applied to empty collection
+ return $obj;
+ }
+
+
+ if (!$obj[0]) { // colorbox being applied to empty collection
+ return $obj;
+ }
appendHTML();
if (addBindings()) {
- if ($.isFunction($this)) { // assume a call to $.colorbox
- $this = $('<a/>');
- options.open = true;
- } else if (!$this[0]) { // colorbox being applied to empty collection
- return $this;
- }
-
+
if (callback) {
options.onComplete = callback;
}
-
- $this.each(function () {
- $.data(this, colorbox, $.extend({}, $.data(this, colorbox) || defaults, options));
+
+ $obj.each(function () {
+ var old = $.data(this, colorbox) || {};
+ $.data(this, colorbox, $.extend(old, options));
}).addClass(boxElement);
+
+ settings = new Settings($obj[0], options);
- if (($.isFunction(options.open) && options.open.call($this)) || options.open) {
- launch($this[0]);
+ if (settings.get('open')) {
+ launch($obj[0]);
}
}
- return $this;
+ return $obj;
};
publicMethod.position = function (speed, loadedCallback) {
@@ -519,7 +621,7 @@
scrollTop = $window.scrollTop();
scrollLeft = $window.scrollLeft();
- if (settings.fixed && !isIE6) {
+ if (settings.get('fixed')) {
offset.top -= scrollTop;
offset.left -= scrollLeft;
$box.css({position: 'fixed'});
@@ -530,46 +632,58 @@
}
// keeps the top and left positions within the browser's viewport.
- if (settings.right !== false) {
- left += Math.max($window.width() - settings.w - loadedWidth - interfaceWidth - setSize(settings.right, 'x'), 0);
- } else if (settings.left !== false) {
- left += setSize(settings.left, 'x');
+ if (settings.get('right') !== false) {
+ left += Math.max($window.width() - settings.w - loadedWidth - interfaceWidth - setSize(settings.get('right'), 'x'), 0);
+ } else if (settings.get('left') !== false) {
+ left += setSize(settings.get('left'), 'x');
} else {
left += Math.round(Math.max($window.width() - settings.w - loadedWidth - interfaceWidth, 0) / 2);
}
- if (settings.bottom !== false) {
- top += Math.max($window.height() - settings.h - loadedHeight - interfaceHeight - setSize(settings.bottom, 'y'), 0);
- } else if (settings.top !== false) {
- top += setSize(settings.top, 'y');
+ if (settings.get('bottom') !== false) {
+ top += Math.max(winheight() - settings.h - loadedHeight - interfaceHeight - setSize(settings.get('bottom'), 'y'), 0);
+ } else if (settings.get('top') !== false) {
+ top += setSize(settings.get('top'), 'y');
} else {
- top += Math.round(Math.max($window.height() - settings.h - loadedHeight - interfaceHeight, 0) / 2);
+ top += Math.round(Math.max(winheight() - settings.h - loadedHeight - interfaceHeight, 0) / 2);
}
$box.css({top: offset.top, left: offset.left, visibility:'visible'});
-
- // setting the speed to 0 to reduce the delay between same-sized content.
- speed = ($box.width() === settings.w + loadedWidth && $box.height() === settings.h + loadedHeight) ? 0 : speed || 0;
// this gives the wrapper plenty of breathing room so it's floated contents can move around smoothly,
// but it has to be shrank down around the size of div#colorbox when it's done. If not,
// it can invoke an obscure IE bug when using iframes.
$wrap[0].style.width = $wrap[0].style.height = "9999px";
- function modalDimensions(that) {
- $topBorder[0].style.width = $bottomBorder[0].style.width = $content[0].style.width = (parseInt(that.style.width,10) - interfaceWidth)+'px';
- $content[0].style.height = $leftBorder[0].style.height = $rightBorder[0].style.height = (parseInt(that.style.height,10) - interfaceHeight)+'px';
+ function modalDimensions() {
+ $topBorder[0].style.width = $bottomBorder[0].style.width = $content[0].style.width = (parseInt($box[0].style.width,10) - interfaceWidth)+'px';
+ $content[0].style.height = $leftBorder[0].style.height = $rightBorder[0].style.height = (parseInt($box[0].style.height,10) - interfaceHeight)+'px';
}
css = {width: settings.w + loadedWidth + interfaceWidth, height: settings.h + loadedHeight + interfaceHeight, top: top, left: left};
- if(speed===0){ // temporary workaround to side-step jQuery-UI 1.8 bug (http://bugs.jquery.com/ticket/12273)
+ // setting the speed to 0 if the content hasn't changed size or position
+ if (speed) {
+ var tempSpeed = 0;
+ $.each(css, function(i){
+ if (css[i] !== previousCSS[i]) {
+ tempSpeed = speed;
+ return;
+ }
+ });
+ speed = tempSpeed;
+ }
+
+ previousCSS = css;
+
+ if (!speed) {
$box.css(css);
}
+
$box.dequeue().animate(css, {
- duration: speed,
+ duration: speed || 0,
complete: function () {
- modalDimensions(this);
+ modalDimensions();
active = false;
@@ -577,47 +691,57 @@
$wrap[0].style.width = (settings.w + loadedWidth + interfaceWidth) + "px";
$wrap[0].style.height = (settings.h + loadedHeight + interfaceHeight) + "px";
- if (settings.reposition) {
+ if (settings.get('reposition')) {
setTimeout(function () { // small delay before binding onresize due to an IE8 bug.
$window.bind('resize.' + prefix, publicMethod.position);
}, 1);
}
- if (loadedCallback) {
+ if ($.isFunction(loadedCallback)) {
loadedCallback();
}
},
- step: function () {
- modalDimensions(this);
- }
+ step: modalDimensions
});
};
publicMethod.resize = function (options) {
+ var scrolltop;
+
if (open) {
options = options || {};
if (options.width) {
settings.w = setSize(options.width, 'x') - loadedWidth - interfaceWidth;
}
+
if (options.innerWidth) {
settings.w = setSize(options.innerWidth, 'x');
}
+
$loaded.css({width: settings.w});
if (options.height) {
settings.h = setSize(options.height, 'y') - loadedHeight - interfaceHeight;
}
+
if (options.innerHeight) {
settings.h = setSize(options.innerHeight, 'y');
}
+
if (!options.innerHeight && !options.height) {
+ scrolltop = $loaded.scrollTop();
$loaded.css({height: "auto"});
settings.h = $loaded.height();
}
+
$loaded.css({height: settings.h});
+
+ if(scrolltop) {
+ $loaded.scrollTop(scrolltop);
+ }
- publicMethod.position(settings.transition === "none" ? 0 : settings.speed);
+ publicMethod.position(settings.get('transition') === "none" ? 0 : settings.get('speed'));
}
};
@@ -626,9 +750,9 @@
return;
}
- var callback, speed = settings.transition === "none" ? 0 : settings.speed;
-
- $loaded.empty().remove(); // Using empty first may prevent some IE7 issues.
+ var callback, speed = settings.get('transition') === "none" ? 0 : settings.get('speed');
+
+ $loaded.remove();
$loaded = $tag(div, 'LoadedContent').append(object);
@@ -645,81 +769,65 @@
$loaded.hide()
.appendTo($loadingBay.show())// content has to be appended to the DOM for accurate size calculations.
- .css({width: getWidth(), overflow: settings.scrolling ? 'auto' : 'hidden'})
+ .css({width: getWidth(), overflow: settings.get('scrolling') ? 'auto' : 'hidden'})
.css({height: getHeight()})// sets the height independently from the width in case the new width influences the value of height.
.prependTo($content);
$loadingBay.hide();
// floating the IMG removes the bottom line-height and fixed a problem where IE miscalculates the width of the parent element as 100% of the document width.
- //$(photo).css({'float': 'none', marginLeft: 'auto', marginRight: 'auto'});
$(photo).css({'float': 'none'});
-
+ setClass(settings.get('className'));
+
callback = function () {
var total = $related.length,
iframe,
- frameBorder = 'frameBorder',
- allowTransparency = 'allowTransparency',
complete;
if (!open) {
return;
}
- function removeFilter() {
- if (isIE) {
+ function removeFilter() { // Needed for IE8 in versions of jQuery prior to 1.7.2
+ if ($.support.opacity === false) {
$box[0].style.removeAttribute('filter');
}
}
complete = function () {
clearTimeout(loadingTimer);
- $loadingOverlay.remove();
- trigger(event_complete, settings.onComplete);
+ $loadingOverlay.hide();
+ trigger(event_complete);
+ settings.get('onComplete');
};
+
- if (isIE) {
- //This fadeIn helps the bicubic resampling to kick-in.
- if (photo) {
- $loaded.fadeIn(100);
- }
- }
-
- $title.html(settings.title).add($loaded).show();
+ $title.html(settings.get('title')).show();
+ $loaded.show();
if (total > 1) { // handle grouping
- if (typeof settings.current === "string") {
- $current.html(settings.current.replace('{current}', index + 1).replace('{total}', total)).show();
+ if (typeof settings.get('current') === "string") {
+ $current.html(settings.get('current').replace('{current}', index + 1).replace('{total}', total)).show();
}
- $next[(settings.loop || index < total - 1) ? "show" : "hide"]().html(settings.next);
- $prev[(settings.loop || index) ? "show" : "hide"]().html(settings.previous);
+ $next[(settings.get('loop') || index < total - 1) ? "show" : "hide"]().html(settings.get('next'));
+ $prev[(settings.get('loop') || index) ? "show" : "hide"]().html(settings.get('previous'));
- if (settings.slideshow) {
- $slideshow.show();
- }
+ slideshow();
// Preloads images within a rel group
- if (settings.preloading) {
+ if (settings.get('preloading')) {
$.each([getIndex(-1), getIndex(1)], function(){
- var src,
- img,
+ var img,
i = $related[this],
- data = $.data(i, colorbox);
-
- if (data && data.href) {
- src = data.href;
- if ($.isFunction(src)) {
- src = src.call(i);
- }
- } else {
- src = $(i).attr('href');
- }
+ settings = new Settings(i, $.data(i, colorbox)),
+ src = settings.get('href');
- if (src && (isImage(src) || data.photo)) {
- img = new Image();
+ if (src && isImage(settings, src)) {
+ src = retinaUrl(settings, src);
+ img = document.createElement('img');
img.src = src;
}
});
@@ -728,29 +836,27 @@
$groupControls.hide();
}
- if (settings.iframe) {
- iframe = $tag('iframe')[0];
+ if (settings.get('iframe')) {
+ iframe = document.createElement('iframe');
- if (frameBorder in iframe) {
- iframe[frameBorder] = 0;
+ if ('frameBorder' in iframe) {
+ iframe.frameBorder = 0;
}
- if (allowTransparency in iframe) {
- iframe[allowTransparency] = "true";
+ if ('allowTransparency' in iframe) {
+ iframe.allowTransparency = "true";
}
- if (!settings.scrolling) {
+ if (!settings.get('scrolling')) {
iframe.scrolling = "no";
}
$(iframe)
.attr({
- src: settings.href,
+ src: settings.get('href'),
name: (new Date()).getTime(), // give the iframe a unique name to prevent caching
'class': prefix + 'Iframe',
- allowFullScreen : true, // allow HTML5 video to go fullscreen
- webkitAllowFullScreen : true,
- mozallowfullscreen : true
+ allowFullScreen : true // allow HTML5 video to go fullscreen
})
.one('load', complete)
.appendTo($loaded);
@@ -759,21 +865,21 @@
iframe.src = "//about:blank";
});
- if (settings.fastIframe) {
+ if (settings.get('fastIframe')) {
$(iframe).trigger('load');
}
} else {
complete();
}
- if (settings.transition === 'fade') {
+ if (settings.get('transition') === 'fade') {
$box.fadeTo(speed, 1, removeFilter);
} else {
removeFilter();
}
};
- if (settings.transition === 'fade') {
+ if (settings.get('transition') === 'fade') {
$box.fadeTo(speed, 0, function () {
publicMethod.position(0, callback);
});
@@ -782,38 +888,24 @@
}
};
- publicMethod.load = function (launched) {
- var href, setResize, prep = publicMethod.prep, $inline;
+ function load () {
+ var href, setResize, prep = publicMethod.prep, $inline, request = ++requests;
active = true;
photo = false;
- element = $related[index];
-
- if (!launched) {
- makeSettings();
- }
-
- if (className) {
- $box.add($overlay).removeClass(className);
- }
- if (settings.className) {
- $box.add($overlay).addClass(settings.className);
- }
- className = settings.className;
-
trigger(event_purge);
+ trigger(event_load);
+ settings.get('onLoad');
- trigger(event_load, settings.onLoad);
+ settings.h = settings.get('height') ?
+ setSize(settings.get('height'), 'y') - loadedHeight - interfaceHeight :
+ settings.get('innerHeight') && setSize(settings.get('innerHeight'), 'y');
- settings.h = settings.height ?
- setSize(settings.height, 'y') - loadedHeight - interfaceHeight :
- settings.innerHeight && setSize(settings.innerHeight, 'y');
-
- settings.w = settings.width ?
- setSize(settings.width, 'x') - loadedWidth - interfaceWidth :
- settings.innerWidth && setSize(settings.innerWidth, 'x');
+ settings.w = settings.get('width') ?
+ setSize(settings.get('width'), 'x') - loadedWidth - interfaceWidth :
+ settings.get('innerWidth') && setSize(settings.get('innerWidth'), 'x');
// Sets the minimum dimensions for use in image scaling
settings.mw = settings.w;
@@ -821,153 +913,176 @@
// Re-evaluate the minimum width and height based on maxWidth and maxHeight values.
// If the width or height exceed the maxWidth or maxHeight, use the maximum values instead.
- if (settings.maxWidth) {
- settings.mw = setSize(settings.maxWidth, 'x') - loadedWidth - interfaceWidth;
+ if (settings.get('maxWidth')) {
+ settings.mw = setSize(settings.get('maxWidth'), 'x') - loadedWidth - interfaceWidth;
settings.mw = settings.w && settings.w < settings.mw ? settings.w : settings.mw;
}
- if (settings.maxHeight) {
- settings.mh = setSize(settings.maxHeight, 'y') - loadedHeight - interfaceHeight;
+ if (settings.get('maxHeight')) {
+ settings.mh = setSize(settings.get('maxHeight'), 'y') - loadedHeight - interfaceHeight;
settings.mh = settings.h && settings.h < settings.mh ? settings.h : settings.mh;
}
- href = settings.href;
+ href = settings.get('href');
loadingTimer = setTimeout(function () {
- $loadingOverlay.appendTo($content);
+ $loadingOverlay.show();
}, 100);
- if (settings.inline) {
+ if (settings.get('inline')) {
+ var $target = $(href);
// Inserts an empty placeholder where inline content is being pulled from.
- // An event is bound to put inline content back when ColorBox closes or loads new content.
- $inline = $tag(div).hide().insertBefore($(href)[0]);
+ // An event is bound to put inline content back when Colorbox closes or loads new content.
+ $inline = $('<div>').hide().insertBefore($target);
$events.one(event_purge, function () {
- $inline.replaceWith($loaded.children());
+ $inline.replaceWith($target);
});
- prep($(href));
- } else if (settings.iframe) {
+ prep($target);
+ } else if (settings.get('iframe')) {
// IFrame element won't be added to the DOM until it is ready to be displayed,
// to avoid problems with DOM-ready JS that might be trying to run in that iframe.
prep(" ");
- } else if (settings.html) {
- prep(settings.html);
- } else if (isImage(href)) {
- $(photo = new Image())
+ } else if (settings.get('html')) {
+ prep(settings.get('html'));
+ } else if (isImage(settings, href)) {
+
+ href = retinaUrl(settings, href);
+
+ photo = new Image();
+
+ $(photo)
.addClass(prefix + 'Photo')
.bind('error',function () {
- settings.title = false;
- prep($tag(div, 'Error').html(settings.imgError));
+ prep($tag(div, 'Error').html(settings.get('imgError')));
})
.one('load', function () {
- var percent;
-
- if (settings.scalePhotos) {
- setResize = function () {
- photo.height -= photo.height * percent;
- photo.width -= photo.width * percent;
- };
- if (settings.mw && photo.width > settings.mw) {
- percent = (photo.width - settings.mw) / photo.width;
- setResize();
+ if (request !== requests) {
+ return;
+ }
+
+ // A small pause because some browsers will occassionaly report a
+ // img.width and img.height of zero immediately after the img.onload fires
+ setTimeout(function(){
+ var percent;
+
+ $.each(['alt', 'longdesc', 'aria-describedby'], function(i,val){
+ var attr = $(settings.el).attr(val) || $(settings.el).attr('data-'+val);
+ if (attr) {
+ photo.setAttribute(val, attr);
+ }
+ });
+
+ if (settings.get('retinaImage') && window.devicePixelRatio > 1) {
+ photo.height = photo.height / window.devicePixelRatio;
+ photo.width = photo.width / window.devicePixelRatio;
}
- if (settings.mh && photo.height > settings.mh) {
- percent = (photo.height - settings.mh) / photo.height;
- setResize();
+
+ if (settings.get('scalePhotos')) {
+ setResize = function () {
+ photo.height -= photo.height * percent;
+ photo.width -= photo.width * percent;
+ };
+ if (settings.mw && photo.width > settings.mw) {
+ percent = (photo.width - settings.mw) / photo.width;
+ setResize();
+ }
+ if (settings.mh && photo.height > settings.mh) {
+ percent = (photo.height - settings.mh) / photo.height;
+ setResize();
+ }
}
- }
-
- if (settings.h) {
- photo.style.marginTop = Math.max(settings.mh - photo.height, 0) / 2 + 'px';
- }
-
- if ($related[1] && (settings.loop || $related[index + 1])) {
- photo.style.cursor = 'pointer';
- photo.onclick = function () {
- publicMethod.next();
- };
- }
-
- if (isIE) {
- photo.style.msInterpolationMode = 'bicubic';
- }
-
- setTimeout(function () { // A pause because Chrome will sometimes report a 0 by 0 size otherwise.
+
+ if (settings.h) {
+ photo.style.marginTop = Math.max(settings.mh - photo.height, 0) / 2 + 'px';
+ }
+
+ if ($related[1] && (settings.get('loop') || $related[index + 1])) {
+ photo.style.cursor = 'pointer';
+ photo.onclick = function () {
+ publicMethod.next();
+ };
+ }
+
+ photo.style.width = photo.width + 'px';
+ photo.style.height = photo.height + 'px';
prep(photo);
}, 1);
});
- setTimeout(function () { // A pause because Opera 10.6+ will sometimes not run the onload function otherwise.
- photo.src = href;
- }, 1);
+ photo.src = href;
+
} else if (href) {
- $loadingBay.load(href, settings.data, function (data, status) {
- prep(status === 'error' ? $tag(div, 'Error').html(settings.xhrError) : $(this).contents());
+ $loadingBay.load(href, settings.get('data'), function (data, status) {
+ if (request === requests) {
+ prep(status === 'error' ? $tag(div, 'Error').html(settings.get('xhrError')) : $(this).contents());
+ }
});
}
- };
+ }
// Navigates to the next page/image in a set.
publicMethod.next = function () {
- if (!active && $related[1] && (settings.loop || $related[index + 1])) {
+ if (!active && $related[1] && (settings.get('loop') || $related[index + 1])) {
index = getIndex(1);
- publicMethod.load();
+ launch($related[index]);
}
};
publicMethod.prev = function () {
- if (!active && $related[1] && (settings.loop || index)) {
+ if (!active && $related[1] && (settings.get('loop') || index)) {
index = getIndex(-1);
- publicMethod.load();
+ launch($related[index]);
}
};
- // Note: to use this within an iframe use the following format: parent.$.fn.colorbox.close();
+ // Note: to use this within an iframe use the following format: parent.jQuery.colorbox.close();
publicMethod.close = function () {
if (open && !closing) {
closing = true;
-
open = false;
+ trigger(event_cleanup);
+ settings.get('onCleanup');
+ $window.unbind('.' + prefix);
+ $overlay.fadeTo(settings.get('fadeOut') || 0, 0);
- trigger(event_cleanup, settings.onCleanup);
-
- $window.unbind('.' + prefix + ' .' + event_ie6);
-
- $overlay.fadeTo(200, 0);
-
- $box.stop().fadeTo(300, 0, function () {
-
- $box.add($overlay).css({'opacity': 1, cursor: 'auto'}).hide();
-
+ $box.stop().fadeTo(settings.get('fadeOut') || 0, 0, function () {
+ $box.hide();
+ $overlay.hide();
trigger(event_purge);
-
- $loaded.empty().remove(); // Using empty first may prevent some IE7 issues.
+ $loaded.remove();
setTimeout(function () {
closing = false;
- trigger(event_closed, settings.onClosed);
+ trigger(event_closed);
+ settings.get('onClosed');
}, 1);
});
}
};
- // Removes changes ColorBox made to the document, but does not remove the plugin
- // from jQuery.
+ // Removes changes Colorbox made to the document, but does not remove the plugin.
publicMethod.remove = function () {
- $([]).add($box).add($overlay).remove();
+ if (!$box) { return; }
+
+ $box.stop();
+ $[colorbox].close();
+ $box.stop(false, true).remove();
+ $overlay.remove();
+ closing = false;
$box = null;
$('.' + boxElement)
.removeData(colorbox)
.removeClass(boxElement);
- $(document).unbind('click.'+prefix);
+ $(document).unbind('click.'+prefix).unbind('keydown.'+prefix);
};
- // A method for fetching the current element ColorBox is referencing.
+ // A method for fetching the current element Colorbox is referencing.
// returns a jQuery object.
publicMethod.element = function () {
- return $(element);
+ return $(settings.el);
};
publicMethod.settings = defaults;
diff --git a/library/colorpicker/css/colorpicker.css b/library/colorpicker/css/colorpicker.css
deleted file mode 100644
index 05b02b485..000000000
--- a/library/colorpicker/css/colorpicker.css
+++ /dev/null
@@ -1,161 +0,0 @@
-.colorpicker {
- width: 356px;
- height: 176px;
- overflow: hidden;
- position: absolute;
- background: url(../images/colorpicker_background.png);
- font-family: Arial, Helvetica, sans-serif;
- display: none;
-}
-.colorpicker_color {
- width: 150px;
- height: 150px;
- left: 14px;
- top: 13px;
- position: absolute;
- background: #f00;
- overflow: hidden;
- cursor: crosshair;
-}
-.colorpicker_color div {
- position: absolute;
- top: 0;
- left: 0;
- width: 150px;
- height: 150px;
- background: url(../images/colorpicker_overlay.png);
-}
-.colorpicker_color div div {
- position: absolute;
- top: 0;
- left: 0;
- width: 11px;
- height: 11px;
- overflow: hidden;
- background: url(../images/colorpicker_select.gif);
- margin: -5px 0 0 -5px;
-}
-.colorpicker_hue {
- position: absolute;
- top: 13px;
- left: 171px;
- width: 35px;
- height: 150px;
- cursor: n-resize;
-}
-.colorpicker_hue div {
- position: absolute;
- width: 35px;
- height: 9px;
- overflow: hidden;
- background: url(../images/colorpicker_indic.gif) left top;
- margin: -4px 0 0 0;
- left: 0px;
-}
-.colorpicker_new_color {
- position: absolute;
- width: 60px;
- height: 30px;
- left: 213px;
- top: 13px;
- background: #f00;
-}
-.colorpicker_current_color {
- position: absolute;
- width: 60px;
- height: 30px;
- left: 283px;
- top: 13px;
- background: #f00;
-}
-.colorpicker input {
- background-color: transparent;
- border: 1px solid transparent;
- position: absolute;
- font-size: 10px;
- font-family: Arial, Helvetica, sans-serif;
- color: #898989;
- top: 4px;
- right: 11px;
- text-align: right;
- margin: 0;
- padding: 0;
- height: 11px;
-}
-.colorpicker_hex {
- position: absolute;
- width: 72px;
- height: 22px;
- background: url(../images/colorpicker_hex.png) top;
- left: 212px;
- top: 142px;
-}
-.colorpicker_hex input {
- right: 6px;
-}
-.colorpicker_field {
- height: 22px;
- width: 62px;
- background-position: top;
- position: absolute;
-}
-.colorpicker_field span {
- position: absolute;
- width: 12px;
- height: 22px;
- overflow: hidden;
- top: 0;
- right: 0;
- cursor: n-resize;
-}
-.colorpicker_rgb_r {
- background-image: url(../images/colorpicker_rgb_r.png);
- top: 52px;
- left: 212px;
-}
-.colorpicker_rgb_g {
- background-image: url(../images/colorpicker_rgb_g.png);
- top: 82px;
- left: 212px;
-}
-.colorpicker_rgb_b {
- background-image: url(../images/colorpicker_rgb_b.png);
- top: 112px;
- left: 212px;
-}
-.colorpicker_hsb_h {
- background-image: url(../images/colorpicker_hsb_h.png);
- top: 52px;
- left: 282px;
-}
-.colorpicker_hsb_s {
- background-image: url(../images/colorpicker_hsb_s.png);
- top: 82px;
- left: 282px;
-}
-.colorpicker_hsb_b {
- background-image: url(../images/colorpicker_hsb_b.png);
- top: 112px;
- left: 282px;
-}
-.colorpicker_submit {
- position: absolute;
- width: 22px;
- height: 22px;
- background: url(../images/colorpicker_submit.png) top;
- left: 322px;
- top: 142px;
- overflow: hidden;
-}
-.colorpicker_focus {
- background-position: center;
-}
-.colorpicker_hex.colorpicker_focus {
- background-position: bottom;
-}
-.colorpicker_submit.colorpicker_focus {
- background-position: bottom;
-}
-.colorpicker_slider {
- background-position: bottom;
-}
diff --git a/library/colorpicker/css/layout.css b/library/colorpicker/css/layout.css
deleted file mode 100644
index 8b3f00ff3..000000000
--- a/library/colorpicker/css/layout.css
+++ /dev/null
@@ -1,218 +0,0 @@
-body,div,dl,dt,dd,ul,ol,li,h1,h2,h3,h4,h5,h6,pre,form,fieldset,input,textarea,p,blockquote,th,td {
- margin:0;
- padding:0;
-}
-table {
- border-collapse:collapse;
- border-spacing:0;
-}
-fieldset,img {
- border:0;
-}
-address,caption,cite,code,dfn,em,strong,th,var {
- font-style:normal;
- font-weight:normal;
-}
-ol,ul {
- list-style:none;
-}
-caption,th {
- text-align:left;
-}
-h1,h2,h3,h4,h5,h6 {
- font-size:100%;
- font-weight:normal;
-}
-q:before,q:after {
- content:'';
-}
-abbr,acronym { border:0;
-}
-html, body {
- background-color: #fff;
- font-family: Arial, Helvetica, sans-serif;
- font-size: 12px;
- line-height: 18px;
- color: #52697E;
-}
-body {
- text-align: center;
- overflow: auto;
-}
-.wrapper {
- width: 700px;
- margin: 0 auto;
- text-align: left;
-}
-h1 {
- font-size: 21px;
- height: 47px;
- line-height: 47px;
- text-transform: uppercase;
-}
-.navigationTabs {
- height: 23px;
- line-height: 23px;
- border-bottom: 1px solid #ccc;
-}
-.navigationTabs li {
- float: left;
- height: 23px;
- line-height: 23px;
- padding-right: 3px;
-}
-.navigationTabs li a{
- float: left;
- dispaly: block;
- height: 23px;
- line-height: 23px;
- padding: 0 10px;
- overflow: hidden;
- color: #52697E;
- background-color: #eee;
- position: relative;
- text-decoration: none;
-}
-.navigationTabs li a:hover {
- background-color: #f0f0f0;
-}
-.navigationTabs li a.active {
- background-color: #fff;
- border: 1px solid #ccc;
- border-bottom: 0px solid;
-}
-.tabsContent {
- border: 1px solid #ccc;
- border-top: 0px solid;
- width: 698px;
- overflow: hidden;
-}
-.tab {
- padding: 16px;
- display: none;
-}
-.tab h2 {
- font-weight: bold;
- font-size: 16px;
-}
-.tab h3 {
- font-weight: bold;
- font-size: 14px;
- margin-top: 20px;
-}
-.tab p {
- margin-top: 16px;
- clear: both;
-}
-.tab ul {
- margin-top: 16px;
- list-style: disc;
-}
-.tab li {
- margin: 10px 0 0 35px;
-}
-.tab a {
- color: #8FB0CF;
-}
-.tab strong {
- font-weight: bold;
-}
-.tab pre {
- font-size: 11px;
- margin-top: 20px;
- width: 668px;
- overflow: auto;
- clear: both;
-}
-.tab table {
- width: 100%;
-}
-.tab table td {
- padding: 6px 10px 6px 0;
- vertical-align: top;
-}
-.tab dt {
- margin-top: 16px;
-}
-
-#colorSelector {
- position: relative;
- width: 36px;
- height: 36px;
- background: url(../images/select.png);
-}
-#colorSelector div {
- position: absolute;
- top: 3px;
- left: 3px;
- width: 30px;
- height: 30px;
- background: url(../images/select.png) center;
-}
-#colorSelector2 {
- position: absolute;
- top: 0;
- left: 0;
- width: 36px;
- height: 36px;
- background: url(../images/select2.png);
-}
-#colorSelector2 div {
- position: absolute;
- top: 4px;
- left: 4px;
- width: 28px;
- height: 28px;
- background: url(../images/select2.png) center;
-}
-#colorpickerHolder2 {
- top: 32px;
- left: 0;
- width: 356px;
- height: 0;
- overflow: hidden;
- position: absolute;
-}
-#colorpickerHolder2 .colorpicker {
- background-image: url(../images/custom_background.png);
- position: absolute;
- bottom: 0;
- left: 0;
-}
-#colorpickerHolder2 .colorpicker_hue div {
- background-image: url(../images/custom_indic.gif);
-}
-#colorpickerHolder2 .colorpicker_hex {
- background-image: url(../images/custom_hex.png);
-}
-#colorpickerHolder2 .colorpicker_rgb_r {
- background-image: url(../images/custom_rgb_r.png);
-}
-#colorpickerHolder2 .colorpicker_rgb_g {
- background-image: url(../images/custom_rgb_g.png);
-}
-#colorpickerHolder2 .colorpicker_rgb_b {
- background-image: url(../images/custom_rgb_b.png);
-}
-#colorpickerHolder2 .colorpicker_hsb_s {
- background-image: url(../images/custom_hsb_s.png);
- display: none;
-}
-#colorpickerHolder2 .colorpicker_hsb_h {
- background-image: url(../images/custom_hsb_h.png);
- display: none;
-}
-#colorpickerHolder2 .colorpicker_hsb_b {
- background-image: url(../images/custom_hsb_b.png);
- display: none;
-}
-#colorpickerHolder2 .colorpicker_submit {
- background-image: url(../images/custom_submit.png);
-}
-#colorpickerHolder2 .colorpicker input {
- color: #778398;
-}
-#customWidget {
- position: relative;
- height: 36px;
-}
diff --git a/library/colorpicker/images/blank.gif b/library/colorpicker/images/blank.gif
deleted file mode 100644
index 75b945d25..000000000
--- a/library/colorpicker/images/blank.gif
+++ /dev/null
Binary files differ
diff --git a/library/colorpicker/images/colorpicker_background.png b/library/colorpicker/images/colorpicker_background.png
deleted file mode 100644
index 8401572f1..000000000
--- a/library/colorpicker/images/colorpicker_background.png
+++ /dev/null
Binary files differ
diff --git a/library/colorpicker/images/colorpicker_hex.png b/library/colorpicker/images/colorpicker_hex.png
deleted file mode 100644
index 4e532d7c6..000000000
--- a/library/colorpicker/images/colorpicker_hex.png
+++ /dev/null
Binary files differ
diff --git a/library/colorpicker/images/colorpicker_hsb_b.png b/library/colorpicker/images/colorpicker_hsb_b.png
deleted file mode 100644
index dfac595d0..000000000
--- a/library/colorpicker/images/colorpicker_hsb_b.png
+++ /dev/null
Binary files differ
diff --git a/library/colorpicker/images/colorpicker_hsb_h.png b/library/colorpicker/images/colorpicker_hsb_h.png
deleted file mode 100644
index 3977ed9f2..000000000
--- a/library/colorpicker/images/colorpicker_hsb_h.png
+++ /dev/null
Binary files differ
diff --git a/library/colorpicker/images/colorpicker_hsb_s.png b/library/colorpicker/images/colorpicker_hsb_s.png
deleted file mode 100644
index a2a699736..000000000
--- a/library/colorpicker/images/colorpicker_hsb_s.png
+++ /dev/null
Binary files differ
diff --git a/library/colorpicker/images/colorpicker_indic.gif b/library/colorpicker/images/colorpicker_indic.gif
deleted file mode 100644
index f9fa95e28..000000000
--- a/library/colorpicker/images/colorpicker_indic.gif
+++ /dev/null
Binary files differ
diff --git a/library/colorpicker/images/colorpicker_overlay.png b/library/colorpicker/images/colorpicker_overlay.png
deleted file mode 100644
index 561cdd9c5..000000000
--- a/library/colorpicker/images/colorpicker_overlay.png
+++ /dev/null
Binary files differ
diff --git a/library/colorpicker/images/colorpicker_rgb_b.png b/library/colorpicker/images/colorpicker_rgb_b.png
deleted file mode 100644
index dfac595d0..000000000
--- a/library/colorpicker/images/colorpicker_rgb_b.png
+++ /dev/null
Binary files differ
diff --git a/library/colorpicker/images/colorpicker_rgb_g.png b/library/colorpicker/images/colorpicker_rgb_g.png
deleted file mode 100644
index 72b32760a..000000000
--- a/library/colorpicker/images/colorpicker_rgb_g.png
+++ /dev/null
Binary files differ
diff --git a/library/colorpicker/images/colorpicker_rgb_r.png b/library/colorpicker/images/colorpicker_rgb_r.png
deleted file mode 100644
index 4855fe03f..000000000
--- a/library/colorpicker/images/colorpicker_rgb_r.png
+++ /dev/null
Binary files differ
diff --git a/library/colorpicker/images/colorpicker_select.gif b/library/colorpicker/images/colorpicker_select.gif
deleted file mode 100644
index 599f7f13a..000000000
--- a/library/colorpicker/images/colorpicker_select.gif
+++ /dev/null
Binary files differ
diff --git a/library/colorpicker/images/colorpicker_submit.png b/library/colorpicker/images/colorpicker_submit.png
deleted file mode 100644
index 7f4c0825f..000000000
--- a/library/colorpicker/images/colorpicker_submit.png
+++ /dev/null
Binary files differ
diff --git a/library/colorpicker/images/custom_background.png b/library/colorpicker/images/custom_background.png
deleted file mode 100644
index cf55ffdd6..000000000
--- a/library/colorpicker/images/custom_background.png
+++ /dev/null
Binary files differ
diff --git a/library/colorpicker/images/custom_hex.png b/library/colorpicker/images/custom_hex.png
deleted file mode 100644
index 888f44449..000000000
--- a/library/colorpicker/images/custom_hex.png
+++ /dev/null
Binary files differ
diff --git a/library/colorpicker/images/custom_hsb_b.png b/library/colorpicker/images/custom_hsb_b.png
deleted file mode 100644
index 2f99dae8e..000000000
--- a/library/colorpicker/images/custom_hsb_b.png
+++ /dev/null
Binary files differ
diff --git a/library/colorpicker/images/custom_hsb_h.png b/library/colorpicker/images/custom_hsb_h.png
deleted file mode 100644
index a217e9218..000000000
--- a/library/colorpicker/images/custom_hsb_h.png
+++ /dev/null
Binary files differ
diff --git a/library/colorpicker/images/custom_hsb_s.png b/library/colorpicker/images/custom_hsb_s.png
deleted file mode 100644
index 7826b4150..000000000
--- a/library/colorpicker/images/custom_hsb_s.png
+++ /dev/null
Binary files differ
diff --git a/library/colorpicker/images/custom_indic.gif b/library/colorpicker/images/custom_indic.gif
deleted file mode 100644
index 222fb94cf..000000000
--- a/library/colorpicker/images/custom_indic.gif
+++ /dev/null
Binary files differ
diff --git a/library/colorpicker/images/custom_rgb_b.png b/library/colorpicker/images/custom_rgb_b.png
deleted file mode 100644
index 80764e5d6..000000000
--- a/library/colorpicker/images/custom_rgb_b.png
+++ /dev/null
Binary files differ
diff --git a/library/colorpicker/images/custom_rgb_g.png b/library/colorpicker/images/custom_rgb_g.png
deleted file mode 100644
index fc9778be1..000000000
--- a/library/colorpicker/images/custom_rgb_g.png
+++ /dev/null
Binary files differ
diff --git a/library/colorpicker/images/custom_rgb_r.png b/library/colorpicker/images/custom_rgb_r.png
deleted file mode 100644
index 91b0cd4c5..000000000
--- a/library/colorpicker/images/custom_rgb_r.png
+++ /dev/null
Binary files differ
diff --git a/library/colorpicker/images/custom_submit.png b/library/colorpicker/images/custom_submit.png
deleted file mode 100644
index cd202cd93..000000000
--- a/library/colorpicker/images/custom_submit.png
+++ /dev/null
Binary files differ
diff --git a/library/colorpicker/images/select.png b/library/colorpicker/images/select.png
deleted file mode 100644
index 21213bfd5..000000000
--- a/library/colorpicker/images/select.png
+++ /dev/null
Binary files differ
diff --git a/library/colorpicker/images/select2.png b/library/colorpicker/images/select2.png
deleted file mode 100644
index 2cd2cabeb..000000000
--- a/library/colorpicker/images/select2.png
+++ /dev/null
Binary files differ
diff --git a/library/colorpicker/images/slider.png b/library/colorpicker/images/slider.png
deleted file mode 100644
index 8b03da96e..000000000
--- a/library/colorpicker/images/slider.png
+++ /dev/null
Binary files differ
diff --git a/library/colorpicker/index.html b/library/colorpicker/index.html
deleted file mode 100644
index e1ad5782d..000000000
--- a/library/colorpicker/index.html
+++ /dev/null
@@ -1,184 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
-<head>
- <link rel="stylesheet" href="css/colorpicker.css" type="text/css" />
- <link rel="stylesheet" media="screen" type="text/css" href="css/layout.css" />
- <title>ColorPicker - jQuery plugin</title>
- <script type="text/javascript" src="js/jquery.js"></script>
- <script type="text/javascript" src="js/colorpicker.js"></script>
- <script type="text/javascript" src="js/eye.js"></script>
- <script type="text/javascript" src="js/utils.js"></script>
- <script type="text/javascript" src="js/layout.js?ver=1.0.2"></script>
-</head>
-<body>
- <div class="wrapper">
- <h1>Color Picker - jQuery plugin</h1>
- <ul class="navigationTabs">
- <li><a href="#about" rel="about">About</a></li>
- <li><a href="#download" rel="download">Download</a></li>
- <li><a href="#implement" rel="implement">Implement</a></li>
- </ul>
- <div class="tabsContent">
- <div class="tab">
- <h2>About</h2>
- <p>A simple component to select color in the same way you select color in Adobe Photoshop</p>
- <h3>Last update</h3>
- <p>23.05.2009 - Check Download tab</p>
- <h3>Features</h3>
- <ul>
- <li>Flat mode - as element in page</li>
- <li>Powerful controls for color selection</li>
- <li>Easy to customize the look by changing some images</li>
- <li>Fits into the viewport</li>
- </ul>
- <h3>License</h3>
- <p>Dual licensed under the MIT and GPL licenses.</p>
- <h3>Examples</h3>
- <p>Flat mode.</p>
- <p id="colorpickerHolder">
- </p>
- <pre>
-$('#colorpickerHolder').ColorPicker({flat: true});
- </pre>
- <p>Custom skin and using flat mode to display the color picker in a custom widget.</p>
- <div id="customWidget">
- <div id="colorSelector2"><div style="background-color: #00ff00"></div></div>
- <div id="colorpickerHolder2">
- </div>
- </div>
-
- <p>Attached to an text field and using callback functions to update the color with field's value and set the value back in the field by submiting the color.</p>
- <p><input type="text" maxlength="6" size="6" id="colorpickerField1" value="00ff00" /></p>
- <p><input type="text" maxlength="6" size="6" id="colorpickerField3" value="0000ff" /></p>
- <p><input type="text" maxlength="6" size="6" id="colorpickerField2" value="ff0000" /></p>
- <pre>$('#colorpickerField1, #colorpickerField2, #colorpickerField3').ColorPicker({
- onSubmit: function(hsb, hex, rgb, el) {
- $(el).val(hex);
- $(el).ColorPickerHide();
- },
- onBeforeShow: function () {
- $(this).ColorPickerSetColor(this.value);
- }
-})
-.bind('keyup', function(){
- $(this).ColorPickerSetColor(this.value);
-});
-</pre>
- <p>Attached to DOMElement and using callbacks to live preview the color and adding animation.</p>
- <p>
- <div id="colorSelector"><div style="background-color: #0000ff"></div></div>
- </p>
- <pre>
-$('#colorSelector').ColorPicker({
- color: '#0000ff',
- onShow: function (colpkr) {
- $(colpkr).fadeIn(500);
- return false;
- },
- onHide: function (colpkr) {
- $(colpkr).fadeOut(500);
- return false;
- },
- onChange: function (hsb, hex, rgb) {
- $('#colorSelector div').css('backgroundColor', '#' + hex);
- }
-});
-</pre>
- </div>
- <div class="tab">
- <h2>Download</h2>
- <p><a href="colorpicker.zip">colorpicker.zip (73 kb)</a>: jQuery, Javscript files, CSS files, images, examples and instructions.</p>
- <h3>Changelog</h3>
- <dl>
- <dt>23.05.2009</dt>
- <dd>Added: close on color selection example</dd>
- <dd>Added: restore original color option</dd>
- <dd>Changed: color update on key up event</dd>
- <dd>Fixed: colorpicker hide and show methods</dd>
- <dd>Fixed: reference to options. Multiple fields with colorpickers is possible now.</dd>
- <dd>Fixed: RGB to HSB convertion</dd>
- <dt>22.08.2008</dt>
- <dd>Fixed bug: where some events were not canceled right on Safari</dd>
- <dd>Fixed bug: where teh view port was not detected right on Safari</dd>
- <dt>16-07-2008</dt>
- <dd>Fixed bug where the letter 'F' could not be typed in the Hex field</dd>
- <dd>Fixed bug where the changes on Hex field where not parsed</dd>
- <dd>Added new option 'livePreview'</dd>
- <dt>08-07-2008</dt>
- <dd>Fixed typo in the code, both JavaScript and CSS</dd>
- <dd>Changed the cursor for some elements</dd>
- <dd>Added new demo explaining how to implement custom skin</dd>
- <dt>07.07.2008</dt>
- <dd>The first release.</dd>
- </dl>
- </div>
- <div class="tab">
- <h2>Implement</h2>
- <p>Attach the Javascript and CSS files to your document. Edit CSS file and fix the paths to images and change colors to fit your site theme.</p>
- <pre>
-&lt;link rel="stylesheet" media="screen" type="text/css" href="css/colorpicker.css" /&gt;
-&lt;script type="text/javascript" src="js/colorpicker.js"&gt;&lt;/script&gt;
- </pre>
- <h3>Invocation code</h3>
- <p>All you have to do is to select the elements in a jQuery way and call the plugin.</p>
- <pre>
- $('input').ColorPicker(options);
- </pre>
- <h3>Options</h3>
- <p>A hash of parameters. All parameters are optional.</p>
- <table>
- <tr>
- <td><strong>eventName</strong></td>
- <td>string</td>
- <td>The desired event to trigger the colorpicker. Default: 'click'</td>
- </tr>
- <tr>
- <td><strong>color</strong></td>
- <td>string or hash</td>
- <td>The default color. String for hex color or hash for RGB and HSB ({r:255, r:0, b:0}) . Default: 'ff0000'</td>
- </tr>
- <tr>
- <td><strong>flat</strong></td>
- <td>boolean</td>
- <td>Whatever if the color picker is appended to the element or triggered by an event. Default false</td>
- </tr>
- <tr>
- <td><strong>livePreview</strong></td>
- <td>boolean</td>
- <td>Whatever if the color values are filled in the fields while changing values on selector or a field. If false it may improve speed. Default true</td>
- </tr>
- <tr>
- <td><strong>onShow</strong></td>
- <td>function</td>
- <td>Callback function triggered when the color picker is shown</td>
- </tr>
- <tr>
- <td><strong>onBeforeShow</strong></td>
- <td>function</td>
- <td>Callback function triggered before the color picker is shown</td>
- </tr>
- <tr>
- <td><strong>onHide</strong></td>
- <td>function</td>
- <td>Callback function triggered when the color picker is hidden</td>
- </tr>
- <tr>
- <td><strong>onChange</strong></td>
- <td>function</td>
- <td>Callback function triggered when the color is changed</td>
- </tr>
- <tr>
- <td><strong>onSubmit</strong></td>
- <td>function</td>
- <td>Callback function triggered when the color it is chosen</td>
- </tr>
- </table>
- <h3>Set color</h3>
- <p>If you want to set a new color.</p>
- <pre>$('input').ColorPickerSetColor(color);</pre>
- <p>The 'color' argument is the same format as the option color, string for hex color or hash for RGB and HSB ({r:255, r:0, b:0}).</p>
- </div>
- </div>
- </div>
-</body>
-</html>
diff --git a/library/colorpicker/js/colorpicker.js b/library/colorpicker/js/colorpicker.js
deleted file mode 100644
index 10a2b2244..000000000
--- a/library/colorpicker/js/colorpicker.js
+++ /dev/null
@@ -1,484 +0,0 @@
-/**
- *
- * Color picker
- * Author: Stefan Petre www.eyecon.ro
- *
- * Dual licensed under the MIT and GPL licenses
- *
- */
-(function ($) {
- var ColorPicker = function () {
- var
- ids = {},
- inAction,
- charMin = 65,
- visible,
- tpl = '<div class="colorpicker"><div class="colorpicker_color"><div><div></div></div></div><div class="colorpicker_hue"><div></div></div><div class="colorpicker_new_color"></div><div class="colorpicker_current_color"></div><div class="colorpicker_hex"><input type="text" maxlength="6" size="6" /></div><div class="colorpicker_rgb_r colorpicker_field"><input type="text" maxlength="3" size="3" /><span></span></div><div class="colorpicker_rgb_g colorpicker_field"><input type="text" maxlength="3" size="3" /><span></span></div><div class="colorpicker_rgb_b colorpicker_field"><input type="text" maxlength="3" size="3" /><span></span></div><div class="colorpicker_hsb_h colorpicker_field"><input type="text" maxlength="3" size="3" /><span></span></div><div class="colorpicker_hsb_s colorpicker_field"><input type="text" maxlength="3" size="3" /><span></span></div><div class="colorpicker_hsb_b colorpicker_field"><input type="text" maxlength="3" size="3" /><span></span></div><div class="colorpicker_submit"></div></div>',
- defaults = {
- eventName: 'click',
- onShow: function () {},
- onBeforeShow: function(){},
- onHide: function () {},
- onChange: function () {},
- onSubmit: function () {},
- color: 'ff0000',
- livePreview: true,
- flat: false
- },
- fillRGBFields = function (hsb, cal) {
- var rgb = HSBToRGB(hsb);
- $(cal).data('colorpicker').fields
- .eq(1).val(rgb.r).end()
- .eq(2).val(rgb.g).end()
- .eq(3).val(rgb.b).end();
- },
- fillHSBFields = function (hsb, cal) {
- $(cal).data('colorpicker').fields
- .eq(4).val(hsb.h).end()
- .eq(5).val(hsb.s).end()
- .eq(6).val(hsb.b).end();
- },
- fillHexFields = function (hsb, cal) {
- $(cal).data('colorpicker').fields
- .eq(0).val(HSBToHex(hsb)).end();
- },
- setSelector = function (hsb, cal) {
- $(cal).data('colorpicker').selector.css('backgroundColor', '#' + HSBToHex({h: hsb.h, s: 100, b: 100}));
- $(cal).data('colorpicker').selectorIndic.css({
- left: parseInt(150 * hsb.s/100, 10),
- top: parseInt(150 * (100-hsb.b)/100, 10)
- });
- },
- setHue = function (hsb, cal) {
- $(cal).data('colorpicker').hue.css('top', parseInt(150 - 150 * hsb.h/360, 10));
- },
- setCurrentColor = function (hsb, cal) {
- $(cal).data('colorpicker').currentColor.css('backgroundColor', '#' + HSBToHex(hsb));
- },
- setNewColor = function (hsb, cal) {
- $(cal).data('colorpicker').newColor.css('backgroundColor', '#' + HSBToHex(hsb));
- },
- keyDown = function (ev) {
- var pressedKey = ev.charCode || ev.keyCode || -1;
- if ((pressedKey > charMin && pressedKey <= 90) || pressedKey == 32) {
- return false;
- }
- var cal = $(this).parent().parent();
- if (cal.data('colorpicker').livePreview === true) {
- change.apply(this);
- }
- },
- change = function (ev) {
- var cal = $(this).parent().parent(), col;
- if (this.parentNode.className.indexOf('_hex') > 0) {
- cal.data('colorpicker').color = col = HexToHSB(fixHex(this.value));
- } else if (this.parentNode.className.indexOf('_hsb') > 0) {
- cal.data('colorpicker').color = col = fixHSB({
- h: parseInt(cal.data('colorpicker').fields.eq(4).val(), 10),
- s: parseInt(cal.data('colorpicker').fields.eq(5).val(), 10),
- b: parseInt(cal.data('colorpicker').fields.eq(6).val(), 10)
- });
- } else {
- cal.data('colorpicker').color = col = RGBToHSB(fixRGB({
- r: parseInt(cal.data('colorpicker').fields.eq(1).val(), 10),
- g: parseInt(cal.data('colorpicker').fields.eq(2).val(), 10),
- b: parseInt(cal.data('colorpicker').fields.eq(3).val(), 10)
- }));
- }
- if (ev) {
- fillRGBFields(col, cal.get(0));
- fillHexFields(col, cal.get(0));
- fillHSBFields(col, cal.get(0));
- }
- setSelector(col, cal.get(0));
- setHue(col, cal.get(0));
- setNewColor(col, cal.get(0));
- cal.data('colorpicker').onChange.apply(cal, [col, HSBToHex(col), HSBToRGB(col)]);
- },
- blur = function (ev) {
- var cal = $(this).parent().parent();
- cal.data('colorpicker').fields.parent().removeClass('colorpicker_focus');
- },
- focus = function () {
- charMin = this.parentNode.className.indexOf('_hex') > 0 ? 70 : 65;
- $(this).parent().parent().data('colorpicker').fields.parent().removeClass('colorpicker_focus');
- $(this).parent().addClass('colorpicker_focus');
- },
- downIncrement = function (ev) {
- var field = $(this).parent().find('input').focus();
- var current = {
- el: $(this).parent().addClass('colorpicker_slider'),
- max: this.parentNode.className.indexOf('_hsb_h') > 0 ? 360 : (this.parentNode.className.indexOf('_hsb') > 0 ? 100 : 255),
- y: ev.pageY,
- field: field,
- val: parseInt(field.val(), 10),
- preview: $(this).parent().parent().data('colorpicker').livePreview
- };
- $(document).bind('mouseup', current, upIncrement);
- $(document).bind('mousemove', current, moveIncrement);
- },
- moveIncrement = function (ev) {
- ev.data.field.val(Math.max(0, Math.min(ev.data.max, parseInt(ev.data.val + ev.pageY - ev.data.y, 10))));
- if (ev.data.preview) {
- change.apply(ev.data.field.get(0), [true]);
- }
- return false;
- },
- upIncrement = function (ev) {
- change.apply(ev.data.field.get(0), [true]);
- ev.data.el.removeClass('colorpicker_slider').find('input').focus();
- $(document).unbind('mouseup', upIncrement);
- $(document).unbind('mousemove', moveIncrement);
- return false;
- },
- downHue = function (ev) {
- var current = {
- cal: $(this).parent(),
- y: $(this).offset().top
- };
- current.preview = current.cal.data('colorpicker').livePreview;
- $(document).bind('mouseup', current, upHue);
- $(document).bind('mousemove', current, moveHue);
- },
- moveHue = function (ev) {
- change.apply(
- ev.data.cal.data('colorpicker')
- .fields
- .eq(4)
- .val(parseInt(360*(150 - Math.max(0,Math.min(150,(ev.pageY - ev.data.y))))/150, 10))
- .get(0),
- [ev.data.preview]
- );
- return false;
- },
- upHue = function (ev) {
- fillRGBFields(ev.data.cal.data('colorpicker').color, ev.data.cal.get(0));
- fillHexFields(ev.data.cal.data('colorpicker').color, ev.data.cal.get(0));
- $(document).unbind('mouseup', upHue);
- $(document).unbind('mousemove', moveHue);
- return false;
- },
- downSelector = function (ev) {
- var current = {
- cal: $(this).parent(),
- pos: $(this).offset()
- };
- current.preview = current.cal.data('colorpicker').livePreview;
- $(document).bind('mouseup', current, upSelector);
- $(document).bind('mousemove', current, moveSelector);
- },
- moveSelector = function (ev) {
- change.apply(
- ev.data.cal.data('colorpicker')
- .fields
- .eq(6)
- .val(parseInt(100*(150 - Math.max(0,Math.min(150,(ev.pageY - ev.data.pos.top))))/150, 10))
- .end()
- .eq(5)
- .val(parseInt(100*(Math.max(0,Math.min(150,(ev.pageX - ev.data.pos.left))))/150, 10))
- .get(0),
- [ev.data.preview]
- );
- return false;
- },
- upSelector = function (ev) {
- fillRGBFields(ev.data.cal.data('colorpicker').color, ev.data.cal.get(0));
- fillHexFields(ev.data.cal.data('colorpicker').color, ev.data.cal.get(0));
- $(document).unbind('mouseup', upSelector);
- $(document).unbind('mousemove', moveSelector);
- return false;
- },
- enterSubmit = function (ev) {
- $(this).addClass('colorpicker_focus');
- },
- leaveSubmit = function (ev) {
- $(this).removeClass('colorpicker_focus');
- },
- clickSubmit = function (ev) {
- var cal = $(this).parent();
- var col = cal.data('colorpicker').color;
- cal.data('colorpicker').origColor = col;
- setCurrentColor(col, cal.get(0));
- cal.data('colorpicker').onSubmit(col, HSBToHex(col), HSBToRGB(col), cal.data('colorpicker').el);
- },
- show = function (ev) {
- var cal = $('#' + $(this).data('colorpickerId'));
- cal.data('colorpicker').onBeforeShow.apply(this, [cal.get(0)]);
- var pos = $(this).offset();
- var viewPort = getViewport();
- var top = pos.top + this.offsetHeight;
- var left = pos.left;
- if (top + 176 > viewPort.t + viewPort.h) {
- top -= this.offsetHeight + 176;
- }
- if (left + 356 > viewPort.l + viewPort.w) {
- left -= 356;
- }
- cal.css({left: left + 'px', top: top + 'px'});
- if (cal.data('colorpicker').onShow.apply(this, [cal.get(0)]) != false) {
- cal.show();
- }
- $(document).bind('mousedown', {cal: cal}, hide);
- return false;
- },
- hide = function (ev) {
- if (!isChildOf(ev.data.cal.get(0), ev.target, ev.data.cal.get(0))) {
- if (ev.data.cal.data('colorpicker').onHide.apply(this, [ev.data.cal.get(0)]) != false) {
- ev.data.cal.hide();
- }
- $(document).unbind('mousedown', hide);
- }
- },
- isChildOf = function(parentEl, el, container) {
- if (parentEl == el) {
- return true;
- }
- if (parentEl.contains) {
- return parentEl.contains(el);
- }
- if ( parentEl.compareDocumentPosition ) {
- return !!(parentEl.compareDocumentPosition(el) & 16);
- }
- var prEl = el.parentNode;
- while(prEl && prEl != container) {
- if (prEl == parentEl)
- return true;
- prEl = prEl.parentNode;
- }
- return false;
- },
- getViewport = function () {
- var m = document.compatMode == 'CSS1Compat';
- return {
- l : window.pageXOffset || (m ? document.documentElement.scrollLeft : document.body.scrollLeft),
- t : window.pageYOffset || (m ? document.documentElement.scrollTop : document.body.scrollTop),
- w : window.innerWidth || (m ? document.documentElement.clientWidth : document.body.clientWidth),
- h : window.innerHeight || (m ? document.documentElement.clientHeight : document.body.clientHeight)
- };
- },
- fixHSB = function (hsb) {
- return {
- h: Math.min(360, Math.max(0, hsb.h)),
- s: Math.min(100, Math.max(0, hsb.s)),
- b: Math.min(100, Math.max(0, hsb.b))
- };
- },
- fixRGB = function (rgb) {
- return {
- r: Math.min(255, Math.max(0, rgb.r)),
- g: Math.min(255, Math.max(0, rgb.g)),
- b: Math.min(255, Math.max(0, rgb.b))
- };
- },
- fixHex = function (hex) {
- var len = 6 - hex.length;
- if (len > 0) {
- var o = [];
- for (var i=0; i<len; i++) {
- o.push('0');
- }
- o.push(hex);
- hex = o.join('');
- }
- return hex;
- },
- HexToRGB = function (hex) {
- var hex = parseInt(((hex.indexOf('#') > -1) ? hex.substring(1) : hex), 16);
- return {r: hex >> 16, g: (hex & 0x00FF00) >> 8, b: (hex & 0x0000FF)};
- },
- HexToHSB = function (hex) {
- return RGBToHSB(HexToRGB(hex));
- },
- RGBToHSB = function (rgb) {
- var hsb = {
- h: 0,
- s: 0,
- b: 0
- };
- var min = Math.min(rgb.r, rgb.g, rgb.b);
- var max = Math.max(rgb.r, rgb.g, rgb.b);
- var delta = max - min;
- hsb.b = max;
- if (max != 0) {
-
- }
- hsb.s = max != 0 ? 255 * delta / max : 0;
- if (hsb.s != 0) {
- if (rgb.r == max) {
- hsb.h = (rgb.g - rgb.b) / delta;
- } else if (rgb.g == max) {
- hsb.h = 2 + (rgb.b - rgb.r) / delta;
- } else {
- hsb.h = 4 + (rgb.r - rgb.g) / delta;
- }
- } else {
- hsb.h = -1;
- }
- hsb.h *= 60;
- if (hsb.h < 0) {
- hsb.h += 360;
- }
- hsb.s *= 100/255;
- hsb.b *= 100/255;
- return hsb;
- },
- HSBToRGB = function (hsb) {
- var rgb = {};
- var h = Math.round(hsb.h);
- var s = Math.round(hsb.s*255/100);
- var v = Math.round(hsb.b*255/100);
- if(s == 0) {
- rgb.r = rgb.g = rgb.b = v;
- } else {
- var t1 = v;
- var t2 = (255-s)*v/255;
- var t3 = (t1-t2)*(h%60)/60;
- if(h==360) h = 0;
- if(h<60) {rgb.r=t1; rgb.b=t2; rgb.g=t2+t3}
- else if(h<120) {rgb.g=t1; rgb.b=t2; rgb.r=t1-t3}
- else if(h<180) {rgb.g=t1; rgb.r=t2; rgb.b=t2+t3}
- else if(h<240) {rgb.b=t1; rgb.r=t2; rgb.g=t1-t3}
- else if(h<300) {rgb.b=t1; rgb.g=t2; rgb.r=t2+t3}
- else if(h<360) {rgb.r=t1; rgb.g=t2; rgb.b=t1-t3}
- else {rgb.r=0; rgb.g=0; rgb.b=0}
- }
- return {r:Math.round(rgb.r), g:Math.round(rgb.g), b:Math.round(rgb.b)};
- },
- RGBToHex = function (rgb) {
- var hex = [
- rgb.r.toString(16),
- rgb.g.toString(16),
- rgb.b.toString(16)
- ];
- $.each(hex, function (nr, val) {
- if (val.length == 1) {
- hex[nr] = '0' + val;
- }
- });
- return hex.join('');
- },
- HSBToHex = function (hsb) {
- return RGBToHex(HSBToRGB(hsb));
- },
- restoreOriginal = function () {
- var cal = $(this).parent();
- var col = cal.data('colorpicker').origColor;
- cal.data('colorpicker').color = col;
- fillRGBFields(col, cal.get(0));
- fillHexFields(col, cal.get(0));
- fillHSBFields(col, cal.get(0));
- setSelector(col, cal.get(0));
- setHue(col, cal.get(0));
- setNewColor(col, cal.get(0));
- };
- return {
- init: function (opt) {
- opt = $.extend({}, defaults, opt||{});
- if (typeof opt.color == 'string') {
- opt.color = HexToHSB(opt.color);
- } else if (opt.color.r != undefined && opt.color.g != undefined && opt.color.b != undefined) {
- opt.color = RGBToHSB(opt.color);
- } else if (opt.color.h != undefined && opt.color.s != undefined && opt.color.b != undefined) {
- opt.color = fixHSB(opt.color);
- } else {
- return this;
- }
- return this.each(function () {
- if (!$(this).data('colorpickerId')) {
- var options = $.extend({}, opt);
- options.origColor = opt.color;
- var id = 'collorpicker_' + parseInt(Math.random() * 1000);
- $(this).data('colorpickerId', id);
- var cal = $(tpl).attr('id', id);
- if (options.flat) {
- cal.appendTo(this).show();
- } else {
- cal.appendTo(document.body);
- }
- options.fields = cal
- .find('input')
- .bind('keyup', keyDown)
- .bind('change', change)
- .bind('blur', blur)
- .bind('focus', focus);
- cal
- .find('span').bind('mousedown', downIncrement).end()
- .find('>div.colorpicker_current_color').bind('click', restoreOriginal);
- options.selector = cal.find('div.colorpicker_color').bind('mousedown', downSelector);
- options.selectorIndic = options.selector.find('div div');
- options.el = this;
- options.hue = cal.find('div.colorpicker_hue div');
- cal.find('div.colorpicker_hue').bind('mousedown', downHue);
- options.newColor = cal.find('div.colorpicker_new_color');
- options.currentColor = cal.find('div.colorpicker_current_color');
- cal.data('colorpicker', options);
- cal.find('div.colorpicker_submit')
- .bind('mouseenter', enterSubmit)
- .bind('mouseleave', leaveSubmit)
- .bind('click', clickSubmit);
- fillRGBFields(options.color, cal.get(0));
- fillHSBFields(options.color, cal.get(0));
- fillHexFields(options.color, cal.get(0));
- setHue(options.color, cal.get(0));
- setSelector(options.color, cal.get(0));
- setCurrentColor(options.color, cal.get(0));
- setNewColor(options.color, cal.get(0));
- if (options.flat) {
- cal.css({
- position: 'relative',
- display: 'block'
- });
- } else {
- $(this).bind(options.eventName, show);
- }
- }
- });
- },
- showPicker: function() {
- return this.each( function () {
- if ($(this).data('colorpickerId')) {
- show.apply(this);
- }
- });
- },
- hidePicker: function() {
- return this.each( function () {
- if ($(this).data('colorpickerId')) {
- $('#' + $(this).data('colorpickerId')).hide();
- }
- });
- },
- setColor: function(col) {
- if (typeof col == 'string') {
- col = HexToHSB(col);
- } else if (col.r != undefined && col.g != undefined && col.b != undefined) {
- col = RGBToHSB(col);
- } else if (col.h != undefined && col.s != undefined && col.b != undefined) {
- col = fixHSB(col);
- } else {
- return this;
- }
- return this.each(function(){
- if ($(this).data('colorpickerId')) {
- var cal = $('#' + $(this).data('colorpickerId'));
- cal.data('colorpicker').color = col;
- cal.data('colorpicker').origColor = col;
- fillRGBFields(col, cal.get(0));
- fillHSBFields(col, cal.get(0));
- fillHexFields(col, cal.get(0));
- setHue(col, cal.get(0));
- setSelector(col, cal.get(0));
- setCurrentColor(col, cal.get(0));
- setNewColor(col, cal.get(0));
- }
- });
- }
- };
- }();
- $.fn.extend({
- ColorPicker: ColorPicker.init,
- ColorPickerHide: ColorPicker.hidePicker,
- ColorPickerShow: ColorPicker.showPicker,
- ColorPickerSetColor: ColorPicker.setColor
- });
-})(jQuery) \ No newline at end of file
diff --git a/library/colorpicker/js/eye.js b/library/colorpicker/js/eye.js
deleted file mode 100644
index ea70e643f..000000000
--- a/library/colorpicker/js/eye.js
+++ /dev/null
@@ -1,34 +0,0 @@
-/**
- *
- * Zoomimage
- * Author: Stefan Petre www.eyecon.ro
- *
- */
-(function($){
- var EYE = window.EYE = function() {
- var _registered = {
- init: []
- };
- return {
- init: function() {
- $.each(_registered.init, function(nr, fn){
- fn.call();
- });
- },
- extend: function(prop) {
- for (var i in prop) {
- if (prop[i] != undefined) {
- this[i] = prop[i];
- }
- }
- },
- register: function(fn, type) {
- if (!_registered[type]) {
- _registered[type] = [];
- }
- _registered[type].push(fn);
- }
- };
- }();
- $(EYE.init);
-})(jQuery);
diff --git a/library/colorpicker/js/layout.js b/library/colorpicker/js/layout.js
deleted file mode 100644
index e0dfb8f33..000000000
--- a/library/colorpicker/js/layout.js
+++ /dev/null
@@ -1,67 +0,0 @@
-(function($){
- var initLayout = function() {
- var hash = window.location.hash.replace('#', '');
- var currentTab = $('ul.navigationTabs a')
- .bind('click', showTab)
- .filter('a[rel=' + hash + ']');
- if (currentTab.size() == 0) {
- currentTab = $('ul.navigationTabs a:first');
- }
- showTab.apply(currentTab.get(0));
- $('#colorpickerHolder').ColorPicker({flat: true});
- $('#colorpickerHolder2').ColorPicker({
- flat: true,
- color: '#00ff00',
- onSubmit: function(hsb, hex, rgb) {
- $('#colorSelector2 div').css('backgroundColor', '#' + hex);
- }
- });
- $('#colorpickerHolder2>div').css('position', 'absolute');
- var widt = false;
- $('#colorSelector2').bind('click', function() {
- $('#colorpickerHolder2').stop().animate({height: widt ? 0 : 173}, 500);
- widt = !widt;
- });
- $('#colorpickerField1, #colorpickerField2, #colorpickerField3').ColorPicker({
- onSubmit: function(hsb, hex, rgb, el) {
- $(el).val(hex);
- $(el).ColorPickerHide();
- },
- onBeforeShow: function () {
- $(this).ColorPickerSetColor(this.value);
- }
- })
- .bind('keyup', function(){
- $(this).ColorPickerSetColor(this.value);
- });
- $('#colorSelector').ColorPicker({
- color: '#0000ff',
- onShow: function (colpkr) {
- $(colpkr).fadeIn(500);
- return false;
- },
- onHide: function (colpkr) {
- $(colpkr).fadeOut(500);
- return false;
- },
- onChange: function (hsb, hex, rgb) {
- $('#colorSelector div').css('backgroundColor', '#' + hex);
- }
- });
- };
-
- var showTab = function(e) {
- var tabIndex = $('ul.navigationTabs a')
- .removeClass('active')
- .index(this);
- $(this)
- .addClass('active')
- .blur();
- $('div.tab')
- .hide()
- .eq(tabIndex)
- .show();
- };
-
- EYE.register(initLayout, 'init');
-})(jQuery) \ No newline at end of file
diff --git a/library/colorpicker/js/utils.js b/library/colorpicker/js/utils.js
deleted file mode 100644
index cc7ce14ec..000000000
--- a/library/colorpicker/js/utils.js
+++ /dev/null
@@ -1,252 +0,0 @@
-/**
- *
- * Utilities
- * Author: Stefan Petre www.eyecon.ro
- *
- */
-(function($) {
-EYE.extend({
- getPosition : function(e, forceIt)
- {
- var x = 0;
- var y = 0;
- var es = e.style;
- var restoreStyles = false;
- if (forceIt && jQuery.curCSS(e,'display') == 'none') {
- var oldVisibility = es.visibility;
- var oldPosition = es.position;
- restoreStyles = true;
- es.visibility = 'hidden';
- es.display = 'block';
- es.position = 'absolute';
- }
- var el = e;
- if (el.getBoundingClientRect) { // IE
- var box = el.getBoundingClientRect();
- x = box.left + Math.max(document.documentElement.scrollLeft, document.body.scrollLeft) - 2;
- y = box.top + Math.max(document.documentElement.scrollTop, document.body.scrollTop) - 2;
- } else {
- x = el.offsetLeft;
- y = el.offsetTop;
- el = el.offsetParent;
- if (e != el) {
- while (el) {
- x += el.offsetLeft;
- y += el.offsetTop;
- el = el.offsetParent;
- }
- }
- if (jQuery.browser.safari && jQuery.curCSS(e, 'position') == 'absolute' ) {
- x -= document.body.offsetLeft;
- y -= document.body.offsetTop;
- }
- el = e.parentNode;
- while (el && el.tagName.toUpperCase() != 'BODY' && el.tagName.toUpperCase() != 'HTML')
- {
- if (jQuery.curCSS(el, 'display') != 'inline') {
- x -= el.scrollLeft;
- y -= el.scrollTop;
- }
- el = el.parentNode;
- }
- }
- if (restoreStyles == true) {
- es.display = 'none';
- es.position = oldPosition;
- es.visibility = oldVisibility;
- }
- return {x:x, y:y};
- },
- getSize : function(e)
- {
- var w = parseInt(jQuery.curCSS(e,'width'), 10);
- var h = parseInt(jQuery.curCSS(e,'height'), 10);
- var wb = 0;
- var hb = 0;
- if (jQuery.curCSS(e, 'display') != 'none') {
- wb = e.offsetWidth;
- hb = e.offsetHeight;
- } else {
- var es = e.style;
- var oldVisibility = es.visibility;
- var oldPosition = es.position;
- es.visibility = 'hidden';
- es.display = 'block';
- es.position = 'absolute';
- wb = e.offsetWidth;
- hb = e.offsetHeight;
- es.display = 'none';
- es.position = oldPosition;
- es.visibility = oldVisibility;
- }
- return {w:w, h:h, wb:wb, hb:hb};
- },
- getClient : function(e)
- {
- var h, w;
- if (e) {
- w = e.clientWidth;
- h = e.clientHeight;
- } else {
- var de = document.documentElement;
- w = window.innerWidth || self.innerWidth || (de&&de.clientWidth) || document.body.clientWidth;
- h = window.innerHeight || self.innerHeight || (de&&de.clientHeight) || document.body.clientHeight;
- }
- return {w:w,h:h};
- },
- getScroll : function (e)
- {
- var t=0, l=0, w=0, h=0, iw=0, ih=0;
- if (e && e.nodeName.toLowerCase() != 'body') {
- t = e.scrollTop;
- l = e.scrollLeft;
- w = e.scrollWidth;
- h = e.scrollHeight;
- } else {
- if (document.documentElement) {
- t = document.documentElement.scrollTop;
- l = document.documentElement.scrollLeft;
- w = document.documentElement.scrollWidth;
- h = document.documentElement.scrollHeight;
- } else if (document.body) {
- t = document.body.scrollTop;
- l = document.body.scrollLeft;
- w = document.body.scrollWidth;
- h = document.body.scrollHeight;
- }
- if (typeof pageYOffset != 'undefined') {
- t = pageYOffset;
- l = pageXOffset;
- }
- iw = self.innerWidth||document.documentElement.clientWidth||document.body.clientWidth||0;
- ih = self.innerHeight||document.documentElement.clientHeight||document.body.clientHeight||0;
- }
- return { t: t, l: l, w: w, h: h, iw: iw, ih: ih };
- },
- getMargins : function(e, toInteger)
- {
- var t = jQuery.curCSS(e,'marginTop') || '';
- var r = jQuery.curCSS(e,'marginRight') || '';
- var b = jQuery.curCSS(e,'marginBottom') || '';
- var l = jQuery.curCSS(e,'marginLeft') || '';
- if (toInteger)
- return {
- t: parseInt(t, 10)||0,
- r: parseInt(r, 10)||0,
- b: parseInt(b, 10)||0,
- l: parseInt(l, 10)
- };
- else
- return {t: t, r: r, b: b, l: l};
- },
- getPadding : function(e, toInteger)
- {
- var t = jQuery.curCSS(e,'paddingTop') || '';
- var r = jQuery.curCSS(e,'paddingRight') || '';
- var b = jQuery.curCSS(e,'paddingBottom') || '';
- var l = jQuery.curCSS(e,'paddingLeft') || '';
- if (toInteger)
- return {
- t: parseInt(t, 10)||0,
- r: parseInt(r, 10)||0,
- b: parseInt(b, 10)||0,
- l: parseInt(l, 10)
- };
- else
- return {t: t, r: r, b: b, l: l};
- },
- getBorder : function(e, toInteger)
- {
- var t = jQuery.curCSS(e,'borderTopWidth') || '';
- var r = jQuery.curCSS(e,'borderRightWidth') || '';
- var b = jQuery.curCSS(e,'borderBottomWidth') || '';
- var l = jQuery.curCSS(e,'borderLeftWidth') || '';
- if (toInteger)
- return {
- t: parseInt(t, 10)||0,
- r: parseInt(r, 10)||0,
- b: parseInt(b, 10)||0,
- l: parseInt(l, 10)||0
- };
- else
- return {t: t, r: r, b: b, l: l};
- },
- traverseDOM : function(nodeEl, func)
- {
- func(nodeEl);
- nodeEl = nodeEl.firstChild;
- while(nodeEl){
- EYE.traverseDOM(nodeEl, func);
- nodeEl = nodeEl.nextSibling;
- }
- },
- getInnerWidth : function(el, scroll) {
- var offsetW = el.offsetWidth;
- return scroll ? Math.max(el.scrollWidth,offsetW) - offsetW + el.clientWidth:el.clientWidth;
- },
- getInnerHeight : function(el, scroll) {
- var offsetH = el.offsetHeight;
- return scroll ? Math.max(el.scrollHeight,offsetH) - offsetH + el.clientHeight:el.clientHeight;
- },
- getExtraWidth : function(el) {
- if($.boxModel)
- return (parseInt($.curCSS(el, 'paddingLeft'))||0)
- + (parseInt($.curCSS(el, 'paddingRight'))||0)
- + (parseInt($.curCSS(el, 'borderLeftWidth'))||0)
- + (parseInt($.curCSS(el, 'borderRightWidth'))||0);
- return 0;
- },
- getExtraHeight : function(el) {
- if($.boxModel)
- return (parseInt($.curCSS(el, 'paddingTop'))||0)
- + (parseInt($.curCSS(el, 'paddingBottom'))||0)
- + (parseInt($.curCSS(el, 'borderTopWidth'))||0)
- + (parseInt($.curCSS(el, 'borderBottomWidth'))||0);
- return 0;
- },
- isChildOf: function(parentEl, el, container) {
- if (parentEl == el) {
- return true;
- }
- if (!el || !el.nodeType || el.nodeType != 1) {
- return false;
- }
- if (parentEl.contains && !$.browser.safari) {
- return parentEl.contains(el);
- }
- if ( parentEl.compareDocumentPosition ) {
- return !!(parentEl.compareDocumentPosition(el) & 16);
- }
- var prEl = el.parentNode;
- while(prEl && prEl != container) {
- if (prEl == parentEl)
- return true;
- prEl = prEl.parentNode;
- }
- return false;
- },
- centerEl : function(el, axis)
- {
- var clientScroll = EYE.getScroll();
- var size = EYE.getSize(el);
- if (!axis || axis == 'vertically')
- $(el).css(
- {
- top: clientScroll.t + ((Math.min(clientScroll.h,clientScroll.ih) - size.hb)/2) + 'px'
- }
- );
- if (!axis || axis == 'horizontally')
- $(el).css(
- {
- left: clientScroll.l + ((Math.min(clientScroll.w,clientScroll.iw) - size.wb)/2) + 'px'
- }
- );
- }
-});
-if (!$.easing.easeout) {
- $.easing.easeout = function(p, n, firstNum, delta, duration) {
- return -delta * ((n=n/duration-1)*n*n*n - 1) + firstNum;
- };
-}
-
-})(jQuery); \ No newline at end of file
diff --git a/library/datetimepicker/.gitignore b/library/datetimepicker/.gitignore
new file mode 100644
index 000000000..0012f7d23
--- /dev/null
+++ b/library/datetimepicker/.gitignore
@@ -0,0 +1 @@
+index.php \ No newline at end of file
diff --git a/library/datetimepicker/MIT-LICENSE.txt b/library/datetimepicker/MIT-LICENSE.txt
new file mode 100644
index 000000000..2e68e7d6a
--- /dev/null
+++ b/library/datetimepicker/MIT-LICENSE.txt
@@ -0,0 +1,19 @@
+Copyright (c) 2013 http://xdsoft.net
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+THE SOFTWARE. \ No newline at end of file
diff --git a/library/datetimepicker/README.md b/library/datetimepicker/README.md
new file mode 100644
index 000000000..f0d3f40e3
--- /dev/null
+++ b/library/datetimepicker/README.md
@@ -0,0 +1,20 @@
+datetimepicker
+==============
+[Documentation][doc]
+
+
+jQuery Plugin Date and Time Picker
+
+DateTimePicker
+
+![ScreenShot](https://raw2.github.com/xdan/datetimepicker/master/screen/1.png)
+
+DatePicker
+
+![ScreenShot](https://raw2.github.com/xdan/datetimepicker/master/screen/2.png)
+
+TimePicker
+
+![ScreenShot](https://raw2.github.com/xdan/datetimepicker/master/screen/3.png)
+
+[doc]: http://xdsoft.net/jqplugins/datetimepicker/
diff --git a/library/datetimepicker/jquery.datetimepicker.css b/library/datetimepicker/jquery.datetimepicker.css
new file mode 100644
index 000000000..acf674af7
--- /dev/null
+++ b/library/datetimepicker/jquery.datetimepicker.css
@@ -0,0 +1,418 @@
+.xdsoft_datetimepicker{
+ box-shadow: 0px 5px 15px -5px rgba(0, 0, 0, 0.506);
+ background: #FFFFFF;
+ border-bottom: 1px solid #BBBBBB;
+ border-left: 1px solid #CCCCCC;
+ border-right: 1px solid #CCCCCC;
+ border-top: 1px solid #CCCCCC;
+ color: #333333;
+ font-family: "Helvetica Neue", "Helvetica", "Arial", sans-serif;
+ padding: 8px;
+ padding-left: 0px;
+ padding-top: 2px;
+ position: absolute;
+ z-index: 9999;
+ -moz-box-sizing: border-box;
+ box-sizing: border-box;
+ display:none;
+}
+
+.xdsoft_datetimepicker iframe {
+ position: absolute;
+ left: 0;
+ top: 0;
+ width: 75px;
+ height: 210px;
+ background: transparent;
+ border:none;
+}
+/*For IE8 or lower*/
+.xdsoft_datetimepicker button {
+ border:none !important;
+}
+
+.xdsoft_noselect{
+ -webkit-touch-callout: none;
+ -webkit-user-select: none;
+ -khtml-user-select: none;
+ -moz-user-select: none;
+ -ms-user-select: none;
+ -o-user-select: none;
+ user-select: none;
+}
+.xdsoft_noselect::selection { background: transparent; }
+.xdsoft_noselect::-moz-selection { background: transparent; }
+.xdsoft_datetimepicker.xdsoft_inline{
+ display: inline-block;
+ position: static;
+ box-shadow: none;
+}
+.xdsoft_datetimepicker *{
+ -moz-box-sizing: border-box;
+ box-sizing: border-box;
+ padding:0px;
+ margin:0px;
+}
+.xdsoft_datetimepicker .xdsoft_datepicker, .xdsoft_datetimepicker .xdsoft_timepicker{
+ display:none;
+}
+.xdsoft_datetimepicker .xdsoft_datepicker.active, .xdsoft_datetimepicker .xdsoft_timepicker.active{
+ display:block;
+}
+.xdsoft_datetimepicker .xdsoft_datepicker{
+ width: 224px;
+ float:left;
+ margin-left:8px;
+}
+.xdsoft_datetimepicker.xdsoft_showweeks .xdsoft_datepicker{
+ width: 256px;
+}
+.xdsoft_datetimepicker .xdsoft_timepicker{
+ width: 58px;
+ float:left;
+ text-align:center;
+ margin-left:8px;
+ margin-top:0px;
+}
+.xdsoft_datetimepicker .xdsoft_datepicker.active+.xdsoft_timepicker{
+ margin-top:8px;
+ margin-bottom:3px
+}
+.xdsoft_datetimepicker .xdsoft_mounthpicker{
+ position: relative;
+ text-align: center;
+}
+
+.xdsoft_datetimepicker .xdsoft_label i,
+.xdsoft_datetimepicker .xdsoft_prev,
+.xdsoft_datetimepicker .xdsoft_next,
+.xdsoft_datetimepicker .xdsoft_today_button{
+ background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAGQAAAAeCAYAAADaW7vzAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyJpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoV2luZG93cykiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6Q0NBRjI1NjM0M0UwMTFFNDk4NkFGMzJFQkQzQjEwRUIiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6Q0NBRjI1NjQ0M0UwMTFFNDk4NkFGMzJFQkQzQjEwRUIiPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDpDQ0FGMjU2MTQzRTAxMUU0OTg2QUYzMkVCRDNCMTBFQiIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDpDQ0FGMjU2MjQzRTAxMUU0OTg2QUYzMkVCRDNCMTBFQiIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/PoNEP54AAAIOSURBVHja7Jq9TsMwEMcxrZD4WpBYeKUCe+kTMCACHZh4BFfHO/AAIHZGFhYkBBsSEqxsLCAgXKhbXYOTxh9pfJVP+qutnZ5s/5Lz2Y5I03QhWji2GIcgAokWgfCxNvcOCCGKqiSqhUp0laHOne05vdEyGMfkdxJDVjgwDlEQgYQBgx+ULJaWSXXS6r/ER5FBVR8VfGftTKcITNs+a1XpcFoExREIDF14AVIFxgQUS+h520cdud6wNkC0UBw6BCO/HoCYwBhD8QCkQ/x1mwDyD4plh4D6DDV0TAGyo4HcawLIBBSLDkHeH0Mg2yVP3l4TQMZQDDsEOl/MgHQqhMNuE0D+oBh0CIr8MAKyazBH9WyBuKxDWgbXfjNf32TZ1KWm/Ap1oSk/R53UtQ5xTh3LUlMmT8gt6g51Q9p+SobxgJQ/qmsfZhWywGFSl0yBjCLJCMgXail3b7+rumdVJ2YRss4cN+r6qAHDkPWjPjdJCF4n9RmAD/V9A/Wp4NQassDjwlB6XBiCxcJQWmZZb8THFilfy/lfrTvLghq2TqTHrRMTKNJ0sIhdo15RT+RpyWwFdY96UZ/LdQKBGjcXpcc1AlSFEfLmouD+1knuxBDUVrvOBmoOC/rEcN7OQxKVeJTCiAdUzUJhA2Oez9QTkp72OTVcxDcXY8iKNkxGAJXmJCOQwOa6dhyXsOa6XwEGAKdeb5ET3rQdAAAAAElFTkSuQmCC);
+}
+
+.xdsoft_datetimepicker .xdsoft_label i{
+ opacity:0.5;
+ background-position:-92px -19px;
+ display: inline-block;
+ width: 9px;
+ height: 20px;
+ vertical-align: middle;
+}
+
+.xdsoft_datetimepicker .xdsoft_prev{
+ float: left;
+ background-position:-20px 0px;
+}
+.xdsoft_datetimepicker .xdsoft_today_button{
+ float: left;
+ background-position:-70px 0px;
+ margin-left:5px;
+}
+
+.xdsoft_datetimepicker .xdsoft_next{
+ float: right;
+ background-position:0px 0px;
+}
+
+.xdsoft_datetimepicker .xdsoft_next,
+.xdsoft_datetimepicker .xdsoft_prev ,
+.xdsoft_datetimepicker .xdsoft_today_button{
+ background-color: transparent;
+ background-repeat: no-repeat;
+ border: 0px none currentColor;
+ cursor: pointer;
+ display: block;
+ height: 30px;
+ opacity: 0.5;
+ -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=50)";
+ outline: medium none currentColor;
+ overflow: hidden;
+ padding: 0px;
+ position: relative;
+ text-indent: 100%;
+ white-space: nowrap;
+ width: 20px;
+}
+.xdsoft_datetimepicker .xdsoft_timepicker .xdsoft_prev,
+.xdsoft_datetimepicker .xdsoft_timepicker .xdsoft_next{
+ float:none;
+ background-position:-40px -15px;
+ height: 15px;
+ width: 30px;
+ display: block;
+ margin-left:14px;
+ margin-top:7px;
+}
+.xdsoft_datetimepicker .xdsoft_timepicker .xdsoft_prev{
+ background-position:-40px 0px;
+ margin-bottom:7px;
+ margin-top:0px;
+}
+.xdsoft_datetimepicker .xdsoft_timepicker .xdsoft_time_box{
+ height:151px;
+ overflow:hidden;
+ border-bottom:1px solid #DDDDDD;
+}
+.xdsoft_datetimepicker .xdsoft_timepicker .xdsoft_time_box >div >div{
+ background: #F5F5F5;
+ border-top:1px solid #DDDDDD;
+ color: #666666;
+ font-size: 12px;
+ text-align: center;
+ border-collapse:collapse;
+ cursor:pointer;
+ border-bottom-width:0px;
+ height:25px;
+ line-height:25px;
+}
+
+.xdsoft_datetimepicker .xdsoft_timepicker .xdsoft_time_box >div > div:first-child{
+ border-top-width:0px;
+}
+.xdsoft_datetimepicker .xdsoft_today_button:hover,
+.xdsoft_datetimepicker .xdsoft_next:hover,
+.xdsoft_datetimepicker .xdsoft_prev:hover {
+ opacity: 1;
+ -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=100)";
+}
+.xdsoft_datetimepicker .xdsoft_label{
+ display: inline;
+ position: relative;
+ z-index: 9999;
+ margin: 0;
+ padding: 5px 3px;
+ font-size: 14px;
+ line-height: 20px;
+ font-weight: bold;
+ background-color: #fff;
+ float:left;
+ width:182px;
+ text-align:center;
+ cursor:pointer;
+}
+.xdsoft_datetimepicker .xdsoft_label:hover>span{
+ text-decoration:underline;
+}
+.xdsoft_datetimepicker .xdsoft_label:hover i{
+ opacity:1.0;
+}
+.xdsoft_datetimepicker .xdsoft_label > .xdsoft_select{
+ border:1px solid #ccc;
+ position:absolute;
+ right:0px;
+ top:30px;
+ z-index:101;
+ display:none;
+ background:#fff;
+ max-height:160px;
+ overflow-y:hidden;
+}
+.xdsoft_datetimepicker .xdsoft_label > .xdsoft_select.xdsoft_monthselect{right:-7px;}
+.xdsoft_datetimepicker .xdsoft_label > .xdsoft_select.xdsoft_yearselect{right:2px;}
+.xdsoft_datetimepicker .xdsoft_label > .xdsoft_select > div > .xdsoft_option:hover{
+ color: #fff;
+ background: #ff8000;
+}
+.xdsoft_datetimepicker .xdsoft_label > .xdsoft_select > div > .xdsoft_option{
+ padding:2px 10px 2px 5px;
+ text-decoration:none !important;
+}
+.xdsoft_datetimepicker .xdsoft_label > .xdsoft_select > div > .xdsoft_option.xdsoft_current{
+ background: #33AAFF;
+ box-shadow: #178FE5 0px 1px 3px 0px inset;
+ color:#fff;
+ font-weight: 700;
+}
+.xdsoft_datetimepicker .xdsoft_month{
+ width:100px;
+ text-align:right;
+}
+.xdsoft_datetimepicker .xdsoft_calendar{
+ clear:both;
+}
+.xdsoft_datetimepicker .xdsoft_year{
+ width: 48px;
+ margin-left: 5px;
+}
+.xdsoft_datetimepicker .xdsoft_calendar table{
+ border-collapse:collapse;
+ width:100%;
+
+}
+.xdsoft_datetimepicker .xdsoft_calendar td > div{
+ padding-right:5px;
+}
+.xdsoft_datetimepicker .xdsoft_calendar th{
+ height: 25px;
+}
+.xdsoft_datetimepicker .xdsoft_calendar td,.xdsoft_datetimepicker .xdsoft_calendar th{
+ width:14.2857142%;
+ background: #F5F5F5;
+ border:1px solid #DDDDDD;
+ color: #666666;
+ font-size: 12px;
+ text-align: right;
+ vertical-align: middle;
+ padding:0px;
+ border-collapse:collapse;
+ cursor:pointer;
+ height: 25px;
+}
+.xdsoft_datetimepicker.xdsoft_showweeks .xdsoft_calendar td,.xdsoft_datetimepicker.xdsoft_showweeks .xdsoft_calendar th{
+ width:12.5%;
+}
+.xdsoft_datetimepicker .xdsoft_calendar th{
+ background: #F1F1F1;
+}
+.xdsoft_datetimepicker .xdsoft_calendar td.xdsoft_today{
+ color:#33AAFF;
+}
+.xdsoft_datetimepicker .xdsoft_calendar td.xdsoft_default,
+.xdsoft_datetimepicker .xdsoft_calendar td.xdsoft_current,
+.xdsoft_datetimepicker .xdsoft_timepicker .xdsoft_time_box >div >div.xdsoft_current{
+ background: #33AAFF;
+ box-shadow: #178FE5 0px 1px 3px 0px inset;
+ color:#fff;
+ font-weight: 700;
+}
+.xdsoft_datetimepicker .xdsoft_calendar td.xdsoft_other_month,
+.xdsoft_datetimepicker .xdsoft_calendar td.xdsoft_disabled,
+.xdsoft_datetimepicker .xdsoft_time_box >div >div.xdsoft_disabled{
+ opacity:0.5;
+ -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=50)";
+}
+.xdsoft_datetimepicker .xdsoft_calendar td.xdsoft_other_month.xdsoft_disabled{
+ opacity:0.2;
+ -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=20)";
+}
+.xdsoft_datetimepicker .xdsoft_calendar td:hover,
+.xdsoft_datetimepicker .xdsoft_timepicker .xdsoft_time_box >div >div:hover{
+ color: #fff !important;
+ background: #ff8000 !important;
+ box-shadow: none !important;
+}
+.xdsoft_datetimepicker .xdsoft_calendar td.xdsoft_disabled:hover,
+.xdsoft_datetimepicker .xdsoft_timepicker .xdsoft_time_box >div >div.xdsoft_disabled:hover{
+ color: inherit !important;
+ background: inherit !important;
+ box-shadow: inherit !important;
+}
+.xdsoft_datetimepicker .xdsoft_calendar th{
+ font-weight: 700;
+ text-align: center;
+ color: #999;
+ cursor:default;
+}
+.xdsoft_datetimepicker .xdsoft_copyright{ color:#ccc !important; font-size:10px;clear:both;float:none;margin-left:8px;}
+.xdsoft_datetimepicker .xdsoft_copyright a{ color:#eee !important;}
+.xdsoft_datetimepicker .xdsoft_copyright a:hover{ color:#aaa !important;}
+
+
+.xdsoft_time_box{
+ position:relative;
+ border:1px solid #ccc;
+}
+.xdsoft_scrollbar >.xdsoft_scroller{
+ background:#ccc !important;
+ height:20px;
+ border-radius:3px;
+}
+.xdsoft_scrollbar{
+ position:absolute;
+ width:7px;
+ right:0px;
+ top:0px;
+ bottom:0px;
+ cursor:pointer;
+}
+.xdsoft_scroller_box{
+position:relative;
+}
+
+
+.xdsoft_datetimepicker.xdsoft_dark{
+ box-shadow: 0px 5px 15px -5px rgba(255, 255, 255, 0.506);
+ background: #000000;
+ border-bottom: 1px solid #444444;
+ border-left: 1px solid #333333;
+ border-right: 1px solid #333333;
+ border-top: 1px solid #333333;
+ color: #cccccc;
+}
+
+.xdsoft_datetimepicker.xdsoft_dark .xdsoft_timepicker .xdsoft_time_box{
+ border-bottom:1px solid #222222;
+}
+.xdsoft_datetimepicker.xdsoft_dark .xdsoft_timepicker .xdsoft_time_box >div >div{
+ background: #0a0a0a;
+ border-top:1px solid #222222;
+ color: #999999;
+}
+
+.xdsoft_datetimepicker.xdsoft_dark .xdsoft_label{
+ background-color: #000;
+}
+.xdsoft_datetimepicker.xdsoft_dark .xdsoft_label > .xdsoft_select{
+ border:1px solid #333;
+ background:#000;
+}
+
+.xdsoft_datetimepicker.xdsoft_dark .xdsoft_label > .xdsoft_select > div > .xdsoft_option:hover{
+ color: #000;
+ background: #007fff;
+}
+
+.xdsoft_datetimepicker.xdsoft_dark .xdsoft_label > .xdsoft_select > div > .xdsoft_option.xdsoft_current{
+ background: #cc5500;
+ box-shadow: #b03e00 0px 1px 3px 0px inset;
+ color:#000;
+}
+
+.xdsoft_datetimepicker.xdsoft_dark .xdsoft_label i,
+.xdsoft_datetimepicker.xdsoft_dark .xdsoft_prev,
+.xdsoft_datetimepicker.xdsoft_dark .xdsoft_next,
+.xdsoft_datetimepicker.xdsoft_dark .xdsoft_today_button{
+ background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAGQAAAAeCAYAAADaW7vzAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyJpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoV2luZG93cykiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6QUExQUUzOTA0M0UyMTFFNDlBM0FFQTJENTExRDVBODYiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6QUExQUUzOTE0M0UyMTFFNDlBM0FFQTJENTExRDVBODYiPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDpBQTFBRTM4RTQzRTIxMUU0OUEzQUVBMkQ1MTFENUE4NiIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDpBQTFBRTM4RjQzRTIxMUU0OUEzQUVBMkQ1MTFENUE4NiIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/Pp0VxGEAAAIASURBVHja7JrNSgMxEMebtgh+3MSLr1T1Xn2CHoSKB08+QmR8Bx9A8e7RixdB9CKCoNdexIugxFlJa7rNZneTbLIpM/CnNLsdMvNjM8l0mRCiQ9Ye61IKCAgZAUnH+mU3MMZaHYChBnJUDzWOFZdVfc5+ZFLbrWDeXPwbxIqrLLfaeS0hEBVGIRQCEiZoHQwtlGSByCCdYBl8g8egTTAWoKQMRBRBcZxYlhzhKegqMOageErsCHVkk3hXIFooDgHB1KkHIHVgzKB4ADJQ/A1jAFmAYhkQqA5TOBtocrKrgXwQA8gcFIuAIO8sQSA7hidvPwaQGZSaAYHOUWJABhWWw2EMIH9QagQERU4SArJXo0ZZL18uvaxejXt/Em8xjVBXmvFr1KVm/AJ10tRe2XnraNqaJvKE3KHuUbfK1E+VHB0q40/y3sdQSxY4FHWeKJCunP8UyDdqJZenT3ntVV5jIYCAh20vT7ioP8tpf6E2lfEMwERe+whV1MHjwZB7PBiCxcGQWwKZKD62lfGNnP/1poFAA60T7rF1UgcKd2id3KDeUS+oLWV8DfWAepOfq00CgQabi9zjcgJVYVD7PVzQUAUGAQkbNJTBICDhgwYTjDYD6XeW08ZKh+A4pYkzenOxXUbvZcWz7E8ykRMnIHGX1XPl+1m2vPYpL+2qdb8CDAARlKFEz/ZVkAAAAABJRU5ErkJggg==);
+}
+
+.xdsoft_datetimepicker.xdsoft_dark .xdsoft_calendar td,
+.xdsoft_datetimepicker.xdsoft_dark .xdsoft_calendar th{
+ background: #0a0a0a;
+ border:1px solid #222222;
+ color: #999999;
+}
+
+.xdsoft_datetimepicker.xdsoft_dark .xdsoft_calendar th{
+ background: #0e0e0e;
+}
+.xdsoft_datetimepicker.xdsoft_dark .xdsoft_calendar td.xdsoft_today{
+ color:#cc5500;
+}
+.xdsoft_datetimepicker.xdsoft_dark .xdsoft_calendar td.xdsoft_default,
+.xdsoft_datetimepicker.xdsoft_dark .xdsoft_calendar td.xdsoft_current,
+.xdsoft_datetimepicker.xdsoft_dark .xdsoft_timepicker .xdsoft_time_box >div >div.xdsoft_current{
+ background: #cc5500;
+ box-shadow: #b03e00 0px 1px 3px 0px inset;
+ color:#000;
+}
+
+.xdsoft_datetimepicker.xdsoft_dark .xdsoft_calendar td:hover,
+.xdsoft_datetimepicker.xdsoft_dark .xdsoft_timepicker .xdsoft_time_box >div >div:hover{
+ color: #000 !important;
+ background: #007fff !important;
+}
+
+.xdsoft_datetimepicker.xdsoft_dark .xdsoft_calendar th{
+ color: #666;
+}
+.xdsoft_datetimepicker.xdsoft_dark .xdsoft_copyright{ color:#333 !important;}
+.xdsoft_datetimepicker.xdsoft_dark .xdsoft_copyright a{ color:#111 !important;}
+.xdsoft_datetimepicker.xdsoft_dark .xdsoft_copyright a:hover{ color:#555 !important;}
+
+
+.xdsoft_dark .xdsoft_time_box{
+ border:1px solid #333;
+}
+.xdsoft_dark .xdsoft_scrollbar >.xdsoft_scroller{
+ background:#333 !important;
+}
diff --git a/library/datetimepicker/jquery.datetimepicker.js b/library/datetimepicker/jquery.datetimepicker.js
new file mode 100644
index 000000000..d4e93dd13
--- /dev/null
+++ b/library/datetimepicker/jquery.datetimepicker.js
@@ -0,0 +1,1661 @@
+/**
+ * @preserve jQuery DateTimePicker plugin v2.4.0
+ * @homepage http://xdsoft.net/jqplugins/datetimepicker/
+ * (c) 2014, Chupurnov Valeriy.
+ */
+/*global document,window,jQuery,setTimeout,clearTimeout*/
+(function ($) {
+ 'use strict';
+ var default_options = {
+ i18n: {
+ ar: { // Arabic
+ months: [
+ "كانون الثاني", "شباط", "آذار", "نيسان", "مايو", "حزيران", "تموز", "آب", "أيلول", "تشرين الأول", "تشرين الثاني", "كانون الأول"
+ ],
+ dayOfWeek: [
+ "ن", "ث", "ع", "خ", "ج", "س", "ح"
+ ]
+ },
+ ro: { // Romanian
+ months: [
+ "ianuarie", "februarie", "martie", "aprilie", "mai", "iunie", "iulie", "august", "septembrie", "octombrie", "noiembrie", "decembrie"
+ ],
+ dayOfWeek: [
+ "l", "ma", "mi", "j", "v", "s", "d"
+ ]
+ },
+ id: { // Indonesian
+ months: [
+ "Januari", "Februari", "Maret", "April", "Mei", "Juni", "Juli", "Agustus", "September", "Oktober", "November", "Desember"
+ ],
+ dayOfWeek: [
+ "Sen", "Sel", "Rab", "Kam", "Jum", "Sab", "Min"
+ ]
+ },
+ bg: { // Bulgarian
+ months: [
+ "Януари", "Февруари", "Март", "Ðприл", "Май", "Юни", "Юли", "ÐвгуÑÑ‚", "Септември", "Октомври", "Ðоември", "Декември"
+ ],
+ dayOfWeek: [
+ "Ðд", "Пн", "Ð’Ñ‚", "Ср", "Чт", "Пт", "Сб"
+ ]
+ },
+ fa: { // Persian/Farsi
+ months: [
+ 'Ùروردین', 'اردیبهشت', 'خرداد', 'تیر', 'مرداد', 'شهریور', 'مهر', 'آبان', 'آذر', 'دی', 'بهمن', 'اسÙند'
+ ],
+ dayOfWeek: [
+ 'یکشنبه', 'دوشنبه', 'سه شنبه', 'چهارشنبه', 'پنجشنبه', 'جمعه', 'شنبه'
+ ]
+ },
+ ru: { // Russian
+ months: [
+ 'Январь', 'Февраль', 'Март', 'Ðпрель', 'Май', 'Июнь', 'Июль', 'ÐвгуÑÑ‚', 'СентÑбрь', 'ОктÑбрь', 'ÐоÑбрь', 'Декабрь'
+ ],
+ dayOfWeek: [
+ "Ð’Ñк", "Пн", "Ð’Ñ‚", "Ср", "Чт", "Пт", "Сб"
+ ]
+ },
+ uk: { // Ukrainian
+ months: [
+ 'Січень', 'Лютий', 'Березень', 'Квітень', 'Травень', 'Червень', 'Липень', 'Серпень', 'ВереÑень', 'Жовтень', 'ЛиÑтопад', 'Грудень'
+ ],
+ dayOfWeek: [
+ "Ðдл", "Пнд", "Ð’Ñ‚Ñ€", "Срд", "Чтв", "Птн", "Сбт"
+ ]
+ },
+ en: { // English
+ months: [
+ "January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"
+ ],
+ dayOfWeek: [
+ "Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"
+ ]
+ },
+ el: { // Ελληνικά
+ months: [
+ "ΙανουάÏιος", "ΦεβÏουάÏιος", "ΜάÏτιος", "ΑπÏίλιος", "Μάιος", "ΙοÏνιος", "ΙοÏλιος", "ΑÏγουστος", "ΣεπτέμβÏιος", "ΟκτώβÏιος", "ÎοέμβÏιος", "ΔεκέμβÏιος"
+ ],
+ dayOfWeek: [
+ "ΚυÏ", "Δευ", "ΤÏι", "Τετ", "Πεμ", "ΠαÏ", "Σαβ"
+ ]
+ },
+ de: { // German
+ months: [
+ 'Januar', 'Februar', 'März', 'April', 'Mai', 'Juni', 'Juli', 'August', 'September', 'Oktober', 'November', 'Dezember'
+ ],
+ dayOfWeek: [
+ "So", "Mo", "Di", "Mi", "Do", "Fr", "Sa"
+ ]
+ },
+ nl: { // Dutch
+ months: [
+ "januari", "februari", "maart", "april", "mei", "juni", "juli", "augustus", "september", "oktober", "november", "december"
+ ],
+ dayOfWeek: [
+ "zo", "ma", "di", "wo", "do", "vr", "za"
+ ]
+ },
+ tr: { // Turkish
+ months: [
+ "Ocak", "Şubat", "Mart", "Nisan", "Mayıs", "Haziran", "Temmuz", "Ağustos", "Eylül", "Ekim", "Kasım", "Aralık"
+ ],
+ dayOfWeek: [
+ "Paz", "Pts", "Sal", "Çar", "Per", "Cum", "Cts"
+ ]
+ },
+ fr: { //French
+ months: [
+ "Janvier", "Février", "Mars", "Avril", "Mai", "Juin", "Juillet", "Août", "Septembre", "Octobre", "Novembre", "Décembre"
+ ],
+ dayOfWeek: [
+ "Dim", "Lun", "Mar", "Mer", "Jeu", "Ven", "Sam"
+ ]
+ },
+ es: { // Spanish
+ months: [
+ "Enero", "Febrero", "Marzo", "Abril", "Mayo", "Junio", "Julio", "Agosto", "Septiembre", "Octubre", "Noviembre", "Diciembre"
+ ],
+ dayOfWeek: [
+ "Dom", "Lun", "Mar", "Mié", "Jue", "Vie", "Sáb"
+ ]
+ },
+ th: { // Thai
+ months: [
+ 'มà¸à¸£à¸²à¸„ม', 'à¸à¸¸à¸¡à¸ à¸²à¸žà¸±à¸™à¸˜à¹Œ', 'มีนาคม', 'เมษายน', 'พฤษภาคม', 'มิถุนายน', 'à¸à¸£à¸à¸Žà¸²à¸„ม', 'สิงหาคม', 'à¸à¸±à¸™à¸¢à¸²à¸¢à¸™', 'ตุลาคม', 'พฤศจิà¸à¸²à¸¢à¸™', 'ธันวาคม'
+ ],
+ dayOfWeek: [
+ 'อา.', 'จ.', 'อ.', 'พ.', 'พฤ.', 'ศ.', 'ส.'
+ ]
+ },
+ pl: { // Polish
+ months: [
+ "styczeń", "luty", "marzec", "kwiecień", "maj", "czerwiec", "lipiec", "sierpień", "wrzesień", "październik", "listopad", "grudzień"
+ ],
+ dayOfWeek: [
+ "nd", "pn", "wt", "śr", "cz", "pt", "sb"
+ ]
+ },
+ pt: { // Portuguese
+ months: [
+ "Janeiro", "Fevereiro", "Março", "Abril", "Maio", "Junho", "Julho", "Agosto", "Setembro", "Outubro", "Novembro", "Dezembro"
+ ],
+ dayOfWeek: [
+ "Dom", "Seg", "Ter", "Qua", "Qui", "Sex", "Sab"
+ ]
+ },
+ ch: { // Simplified Chinese
+ months: [
+ "一月", "二月", "三月", "四月", "五月", "六月", "七月", "八月", "ä¹æœˆ", "å月", "å一月", "å二月"
+ ],
+ dayOfWeek: [
+ "日", "一", "二", "三", "四", "五", "六"
+ ]
+ },
+ se: { // Swedish
+ months: [
+ "Januari", "Februari", "Mars", "April", "Maj", "Juni", "Juli", "Augusti", "September", "Oktober", "November", "December"
+ ],
+ dayOfWeek: [
+ "Sön", "Mån", "Tis", "Ons", "Tor", "Fre", "Lör"
+ ]
+ },
+ kr: { // Korean
+ months: [
+ "1ì›”", "2ì›”", "3ì›”", "4ì›”", "5ì›”", "6ì›”", "7ì›”", "8ì›”", "9ì›”", "10ì›”", "11ì›”", "12ì›”"
+ ],
+ dayOfWeek: [
+ "ì¼", "ì›”", "í™”", "수", "목", "금", "토"
+ ]
+ },
+ it: { // Italian
+ months: [
+ "Gennaio", "Febbraio", "Marzo", "Aprile", "Maggio", "Giugno", "Luglio", "Agosto", "Settembre", "Ottobre", "Novembre", "Dicembre"
+ ],
+ dayOfWeek: [
+ "Dom", "Lun", "Mar", "Mer", "Gio", "Ven", "Sab"
+ ]
+ },
+ da: { // Dansk
+ months: [
+ "January", "Februar", "Marts", "April", "Maj", "Juni", "July", "August", "September", "Oktober", "November", "December"
+ ],
+ dayOfWeek: [
+ "Søn", "Man", "Tir", "Ons", "Tor", "Fre", "Lør"
+ ]
+ },
+ no: { // Norwegian
+ months: [
+ "Januar", "Februar", "Mars", "April", "Mai", "Juni", "Juli", "August", "September", "Oktober", "November", "Desember"
+ ],
+ dayOfWeek: [
+ "Søn", "Man", "Tir", "Ons", "Tor", "Fre", "Lør"
+ ]
+ },
+ ja: { // Japanese
+ months: [
+ "1月", "2月", "3月", "4月", "5月", "6月", "7月", "8月", "9月", "10月", "11月", "12月"
+ ],
+ dayOfWeek: [
+ "æ—¥", "月", "ç«", "æ°´", "木", "金", "土"
+ ]
+ },
+ vi: { // Vietnamese
+ months: [
+ "Tháng 1", "Tháng 2", "Tháng 3", "Tháng 4", "Tháng 5", "Tháng 6", "Tháng 7", "Tháng 8", "Tháng 9", "Tháng 10", "Tháng 11", "Tháng 12"
+ ],
+ dayOfWeek: [
+ "CN", "T2", "T3", "T4", "T5", "T6", "T7"
+ ]
+ },
+ sl: { // SlovenÅ¡Äina
+ months: [
+ "Januar", "Februar", "Marec", "April", "Maj", "Junij", "Julij", "Avgust", "September", "Oktober", "November", "December"
+ ],
+ dayOfWeek: [
+ "Ned", "Pon", "Tor", "Sre", "ÄŒet", "Pet", "Sob"
+ ]
+ },
+ cs: { // Čeština
+ months: [
+ "Leden", "Únor", "Březen", "Duben", "Květen", "Červen", "Červenec", "Srpen", "Září", "Říjen", "Listopad", "Prosinec"
+ ],
+ dayOfWeek: [
+ "Ne", "Po", "Út", "St", "Čt", "Pá", "So"
+ ]
+ },
+ hu: { // Hungarian
+ months: [
+ "Január", "Február", "Március", "Ãprilis", "Május", "Június", "Július", "Augusztus", "Szeptember", "Október", "November", "December"
+ ],
+ dayOfWeek: [
+ "Va", "Hé", "Ke", "Sze", "Cs", "Pé", "Szo"
+ ]
+ }
+ },
+ value: '',
+ lang: 'en',
+
+ format: 'Y/m/d H:i',
+ formatTime: 'H:i',
+ formatDate: 'Y/m/d',
+
+ startDate: false, // new Date(), '1986/12/08', '-1970/01/05','-1970/01/05',
+ step: 60,
+ monthChangeSpinner: true,
+
+ closeOnDateSelect: false,
+ closeOnWithoutClick: true,
+ closeOnInputClick: true,
+
+ timepicker: true,
+ datepicker: true,
+ weeks: false,
+
+ defaultTime: false, // use formatTime format (ex. '10:00' for formatTime: 'H:i')
+ defaultDate: false, // use formatDate format (ex new Date() or '1986/12/08' or '-1970/01/05' or '-1970/01/05')
+
+ minDate: false,
+ maxDate: false,
+ minTime: false,
+ maxTime: false,
+
+ allowTimes: [],
+ opened: false,
+ initTime: true,
+ inline: false,
+ theme: '',
+
+ onSelectDate: function () {},
+ onSelectTime: function () {},
+ onChangeMonth: function () {},
+ onChangeYear: function () {},
+ onChangeDateTime: function () {},
+ onShow: function () {},
+ onClose: function () {},
+ onGenerate: function () {},
+
+ withoutCopyright: true,
+ inverseButton: false,
+ hours12: false,
+ next: 'xdsoft_next',
+ prev : 'xdsoft_prev',
+ dayOfWeekStart: 0,
+ parentID: 'body',
+ timeHeightInTimePicker: 25,
+ timepickerScrollbar: true,
+ todayButton: true,
+ defaultSelect: true,
+
+ scrollMonth: true,
+ scrollTime: true,
+ scrollInput: true,
+
+ lazyInit: false,
+ mask: false,
+ validateOnBlur: true,
+ allowBlank: true,
+ yearStart: 1950,
+ yearEnd: 2050,
+ style: '',
+ id: '',
+ fixed: false,
+ roundTime: 'round', // ceil, floor
+ className: '',
+ weekends: [],
+ disabledDates : [],
+ yearOffset: 0,
+ beforeShowDay: null,
+
+ enterLikeTab: true
+ };
+ // fix for ie8
+ if (!Array.prototype.indexOf) {
+ Array.prototype.indexOf = function (obj, start) {
+ var i, j;
+ for (i = (start || 0), j = this.length; i < j; i += 1) {
+ if (this[i] === obj) { return i; }
+ }
+ return -1;
+ };
+ }
+ Date.prototype.countDaysInMonth = function () {
+ return new Date(this.getFullYear(), this.getMonth() + 1, 0).getDate();
+ };
+ $.fn.xdsoftScroller = function (percent) {
+ return this.each(function () {
+ var timeboxparent = $(this),
+ pointerEventToXY = function (e) {
+ var out = {x: 0, y: 0},
+ touch;
+ if (e.type === 'touchstart' || e.type === 'touchmove' || e.type === 'touchend' || e.type === 'touchcancel') {
+ touch = e.originalEvent.touches[0] || e.originalEvent.changedTouches[0];
+ out.x = touch.clientX;
+ out.y = touch.clientY;
+ } else if (e.type === 'mousedown' || e.type === 'mouseup' || e.type === 'mousemove' || e.type === 'mouseover' || e.type === 'mouseout' || e.type === 'mouseenter' || e.type === 'mouseleave') {
+ out.x = e.clientX;
+ out.y = e.clientY;
+ }
+ return out;
+ },
+ move = 0,
+ timebox,
+ parentHeight,
+ height,
+ scrollbar,
+ scroller,
+ maximumOffset = 100,
+ start = false,
+ startY = 0,
+ startTop = 0,
+ h1 = 0,
+ touchStart = false,
+ startTopScroll = 0,
+ calcOffset = function () {};
+ if (percent === 'hide') {
+ timeboxparent.find('.xdsoft_scrollbar').hide();
+ return;
+ }
+ if (!$(this).hasClass('xdsoft_scroller_box')) {
+ timebox = timeboxparent.children().eq(0);
+ parentHeight = timeboxparent[0].clientHeight;
+ height = timebox[0].offsetHeight;
+ scrollbar = $('<div class="xdsoft_scrollbar"></div>');
+ scroller = $('<div class="xdsoft_scroller"></div>');
+ scrollbar.append(scroller);
+
+ timeboxparent.addClass('xdsoft_scroller_box').append(scrollbar);
+ calcOffset = function calcOffset(event) {
+ var offset = pointerEventToXY(event).y - startY + startTopScroll;
+ if (offset < 0) {
+ offset = 0;
+ }
+ if (offset + scroller[0].offsetHeight > h1) {
+ offset = h1 - scroller[0].offsetHeight;
+ }
+ timeboxparent.trigger('scroll_element.xdsoft_scroller', [maximumOffset ? offset / maximumOffset : 0]);
+ };
+
+ scroller
+ .on('touchstart.xdsoft_scroller mousedown.xdsoft_scroller', function (event) {
+ if (!parentHeight) {
+ timeboxparent.trigger('resize_scroll.xdsoft_scroller', [percent]);
+ }
+
+ startY = pointerEventToXY(event).y;
+ startTopScroll = parseInt(scroller.css('margin-top'), 10);
+ h1 = scrollbar[0].offsetHeight;
+
+ if (event.type === 'mousedown') {
+ if (document) {
+ $(document.body).addClass('xdsoft_noselect');
+ }
+ $([document.body, window]).on('mouseup.xdsoft_scroller', function arguments_callee() {
+ $([document.body, window]).off('mouseup.xdsoft_scroller', arguments_callee)
+ .off('mousemove.xdsoft_scroller', calcOffset)
+ .removeClass('xdsoft_noselect');
+ });
+ $(document.body).on('mousemove.xdsoft_scroller', calcOffset);
+ } else {
+ touchStart = true;
+ event.stopPropagation();
+ event.preventDefault();
+ }
+ })
+ .on('touchmove', function (event) {
+ if (touchStart) {
+ event.preventDefault();
+ calcOffset(event);
+ }
+ })
+ .on('touchend touchcancel', function (event) {
+ touchStart = false;
+ startTopScroll = 0;
+ });
+
+ timeboxparent
+ .on('scroll_element.xdsoft_scroller', function (event, percentage) {
+ if (!parentHeight) {
+ timeboxparent.trigger('resize_scroll.xdsoft_scroller', [percentage, true]);
+ }
+ percentage = percentage > 1 ? 1 : (percentage < 0 || isNaN(percentage)) ? 0 : percentage;
+
+ scroller.css('margin-top', maximumOffset * percentage);
+
+ setTimeout(function () {
+ timebox.css('marginTop', -parseInt((timebox[0].offsetHeight - parentHeight) * percentage, 10));
+ }, 10);
+ })
+ .on('resize_scroll.xdsoft_scroller', function (event, percentage, noTriggerScroll) {
+ var percent, sh;
+ parentHeight = timeboxparent[0].clientHeight;
+ height = timebox[0].offsetHeight;
+ percent = parentHeight / height;
+ sh = percent * scrollbar[0].offsetHeight;
+ if (percent > 1) {
+ scroller.hide();
+ } else {
+ scroller.show();
+ scroller.css('height', parseInt(sh > 10 ? sh : 10, 10));
+ maximumOffset = scrollbar[0].offsetHeight - scroller[0].offsetHeight;
+ if (noTriggerScroll !== true) {
+ timeboxparent.trigger('scroll_element.xdsoft_scroller', [percentage || Math.abs(parseInt(timebox.css('marginTop'), 10)) / (height - parentHeight)]);
+ }
+ }
+ });
+
+ timeboxparent.on('mousewheel', function (event) {
+ var top = Math.abs(parseInt(timebox.css('marginTop'), 10));
+
+ top = top - (event.deltaY * 20);
+ if (top < 0) {
+ top = 0;
+ }
+
+ timeboxparent.trigger('scroll_element.xdsoft_scroller', [top / (height - parentHeight)]);
+ event.stopPropagation();
+ return false;
+ });
+
+ timeboxparent.on('touchstart', function (event) {
+ start = pointerEventToXY(event);
+ startTop = Math.abs(parseInt(timebox.css('marginTop'), 10));
+ });
+
+ timeboxparent.on('touchmove', function (event) {
+ if (start) {
+ event.preventDefault();
+ var coord = pointerEventToXY(event);
+ timeboxparent.trigger('scroll_element.xdsoft_scroller', [(startTop - (coord.y - start.y)) / (height - parentHeight)]);
+ }
+ });
+
+ timeboxparent.on('touchend touchcancel', function (event) {
+ start = false;
+ startTop = 0;
+ });
+ }
+ timeboxparent.trigger('resize_scroll.xdsoft_scroller', [percent]);
+ });
+ };
+
+ $.fn.datetimepicker = function (opt) {
+ var KEY0 = 48,
+ KEY9 = 57,
+ _KEY0 = 96,
+ _KEY9 = 105,
+ CTRLKEY = 17,
+ DEL = 46,
+ ENTER = 13,
+ ESC = 27,
+ BACKSPACE = 8,
+ ARROWLEFT = 37,
+ ARROWUP = 38,
+ ARROWRIGHT = 39,
+ ARROWDOWN = 40,
+ TAB = 9,
+ F5 = 116,
+ AKEY = 65,
+ CKEY = 67,
+ VKEY = 86,
+ ZKEY = 90,
+ YKEY = 89,
+ ctrlDown = false,
+ options = ($.isPlainObject(opt) || !opt) ? $.extend(true, {}, default_options, opt) : $.extend(true, {}, default_options),
+
+ lazyInitTimer = 0,
+ createDateTimePicker,
+ destroyDateTimePicker,
+ _xdsoft_datetime,
+
+ lazyInit = function (input) {
+ input
+ .on('open.xdsoft focusin.xdsoft mousedown.xdsoft', function initOnActionCallback(event) {
+ if (input.is(':disabled') || input.is(':hidden') || !input.is(':visible') || input.data('xdsoft_datetimepicker')) {
+ return;
+ }
+ clearTimeout(lazyInitTimer);
+ lazyInitTimer = setTimeout(function () {
+
+ if (!input.data('xdsoft_datetimepicker')) {
+ createDateTimePicker(input);
+ }
+ input
+ .off('open.xdsoft focusin.xdsoft mousedown.xdsoft', initOnActionCallback)
+ .trigger('open.xdsoft');
+ }, 100);
+ });
+ };
+
+ createDateTimePicker = function (input) {
+ var datetimepicker = $('<div ' + (options.id ? 'id="' + options.id + '"' : '') + ' ' + (options.style ? 'style="' + options.style + '"' : '') + ' class="xdsoft_datetimepicker xdsoft_' + options.theme + ' xdsoft_noselect ' + (options.weeks ? ' xdsoft_showweeks' : '') + options.className + '"></div>'),
+ xdsoft_copyright = $('<div class="xdsoft_copyright"><a target="_blank" href="http://xdsoft.net/jqplugins/datetimepicker/">xdsoft.net</a></div>'),
+ datepicker = $('<div class="xdsoft_datepicker active"></div>'),
+ mounth_picker = $('<div class="xdsoft_mounthpicker"><button type="button" class="xdsoft_prev"></button><button type="button" class="xdsoft_today_button"></button>' +
+ '<div class="xdsoft_label xdsoft_month"><span></span><i></i></div>' +
+ '<div class="xdsoft_label xdsoft_year"><span></span><i></i></div>' +
+ '<button type="button" class="xdsoft_next"></button></div>'),
+ calendar = $('<div class="xdsoft_calendar"></div>'),
+ timepicker = $('<div class="xdsoft_timepicker active"><button type="button" class="xdsoft_prev"></button><div class="xdsoft_time_box"></div><button type="button" class="xdsoft_next"></button></div>'),
+ timeboxparent = timepicker.find('.xdsoft_time_box').eq(0),
+ timebox = $('<div class="xdsoft_time_variant"></div>'),
+ /*scrollbar = $('<div class="xdsoft_scrollbar"></div>'),
+ scroller = $('<div class="xdsoft_scroller"></div>'),*/
+ monthselect = $('<div class="xdsoft_select xdsoft_monthselect"><div></div></div>'),
+ yearselect = $('<div class="xdsoft_select xdsoft_yearselect"><div></div></div>'),
+ triggerAfterOpen = false,
+ XDSoft_datetime,
+ //scroll_element,
+ xchangeTimer,
+ timerclick,
+ current_time_index,
+ setPos,
+ timer = 0,
+ timer1 = 0;
+
+ mounth_picker
+ .find('.xdsoft_month span')
+ .after(monthselect);
+ mounth_picker
+ .find('.xdsoft_year span')
+ .after(yearselect);
+
+ mounth_picker
+ .find('.xdsoft_month,.xdsoft_year')
+ .on('mousedown.xdsoft', function (event) {
+ var select = $(this).find('.xdsoft_select').eq(0),
+ val = 0,
+ top = 0,
+ visible = select.is(':visible'),
+ items,
+ i;
+
+ mounth_picker
+ .find('.xdsoft_select')
+ .hide();
+ if (_xdsoft_datetime.currentTime) {
+ val = _xdsoft_datetime.currentTime[$(this).hasClass('xdsoft_month') ? 'getMonth' : 'getFullYear']();
+ }
+
+ select[visible ? 'hide' : 'show']();
+ for (items = select.find('div.xdsoft_option'), i = 0; i < items.length; i += 1) {
+ if (items.eq(i).data('value') === val) {
+ break;
+ } else {
+ top += items[0].offsetHeight;
+ }
+ }
+
+ select.xdsoftScroller(top / (select.children()[0].offsetHeight - (select[0].clientHeight)));
+ event.stopPropagation();
+ return false;
+ });
+
+ mounth_picker
+ .find('.xdsoft_select')
+ .xdsoftScroller()
+ .on('mousedown.xdsoft', function (event) {
+ event.stopPropagation();
+ event.preventDefault();
+ })
+ .on('mousedown.xdsoft', '.xdsoft_option', function (event) {
+ var year = _xdsoft_datetime.currentTime.getFullYear();
+ if (_xdsoft_datetime && _xdsoft_datetime.currentTime) {
+ _xdsoft_datetime.currentTime[$(this).parent().parent().hasClass('xdsoft_monthselect') ? 'setMonth' : 'setFullYear']($(this).data('value'));
+ }
+
+ $(this).parent().parent().hide();
+
+ datetimepicker.trigger('xchange.xdsoft');
+ if (options.onChangeMonth && $.isFunction(options.onChangeMonth)) {
+ options.onChangeMonth.call(datetimepicker, _xdsoft_datetime.currentTime, datetimepicker.data('input'));
+ }
+
+ if (year !== _xdsoft_datetime.currentTime.getFullYear() && $.isFunction(options.onChangeYear)) {
+ options.onChangeYear.call(datetimepicker, _xdsoft_datetime.currentTime, datetimepicker.data('input'));
+ }
+ });
+
+ datetimepicker.setOptions = function (_options) {
+ options = $.extend(true, {}, options, _options);
+
+ if (_options.allowTimes && $.isArray(_options.allowTimes) && _options.allowTimes.length) {
+ options.allowTimes = $.extend(true, [], _options.allowTimes);
+ }
+
+ if (_options.weekends && $.isArray(_options.weekends) && _options.weekends.length) {
+ options.weekends = $.extend(true, [], _options.weekends);
+ }
+
+ if (_options.disabledDates && $.isArray(_options.disabledDates) && _options.disabledDates.length) {
+ options.disabledDates = $.extend(true, [], _options.disabledDates);
+ }
+
+ if ((options.open || options.opened) && (!options.inline)) {
+ input.trigger('open.xdsoft');
+ }
+
+ if (options.inline) {
+ triggerAfterOpen = true;
+ datetimepicker.addClass('xdsoft_inline');
+ input.after(datetimepicker).hide();
+ }
+
+ if (options.inverseButton) {
+ options.next = 'xdsoft_prev';
+ options.prev = 'xdsoft_next';
+ }
+
+ if (options.datepicker) {
+ datepicker.addClass('active');
+ } else {
+ datepicker.removeClass('active');
+ }
+
+ if (options.timepicker) {
+ timepicker.addClass('active');
+ } else {
+ timepicker.removeClass('active');
+ }
+
+ if (options.value) {
+ if (input && input.val) {
+ input.val(options.value);
+ }
+ _xdsoft_datetime.setCurrentTime(options.value);
+ }
+
+ if (isNaN(options.dayOfWeekStart)) {
+ options.dayOfWeekStart = 0;
+ } else {
+ options.dayOfWeekStart = parseInt(options.dayOfWeekStart, 10) % 7;
+ }
+
+ if (!options.timepickerScrollbar) {
+ timeboxparent.xdsoftScroller('hide');
+ }
+
+ if (options.minDate && /^-(.*)$/.test(options.minDate)) {
+ options.minDate = _xdsoft_datetime.strToDateTime(options.minDate).dateFormat(options.formatDate);
+ }
+
+ if (options.maxDate && /^\+(.*)$/.test(options.maxDate)) {
+ options.maxDate = _xdsoft_datetime.strToDateTime(options.maxDate).dateFormat(options.formatDate);
+ }
+
+ mounth_picker
+ .find('.xdsoft_today_button')
+ .css('visibility', !options.todayButton ? 'hidden' : 'visible');
+
+ if (options.mask) {
+ var e,
+ getCaretPos = function (input) {
+ try {
+ if (document.selection && document.selection.createRange) {
+ var range = document.selection.createRange();
+ return range.getBookmark().charCodeAt(2) - 2;
+ }
+ if (input.setSelectionRange) {
+ return input.selectionStart;
+ }
+ } catch (e) {
+ return 0;
+ }
+ },
+ setCaretPos = function (node, pos) {
+ node = (typeof node === "string" || node instanceof String) ? document.getElementById(node) : node;
+ if (!node) {
+ return false;
+ }
+ if (node.createTextRange) {
+ var textRange = node.createTextRange();
+ textRange.collapse(true);
+ textRange.moveEnd('character', pos);
+ textRange.moveStart('character', pos);
+ textRange.select();
+ return true;
+ }
+ if (node.setSelectionRange) {
+ node.setSelectionRange(pos, pos);
+ return true;
+ }
+ return false;
+ },
+ isValidValue = function (mask, value) {
+ var reg = mask
+ .replace(/([\[\]\/\{\}\(\)\-\.\+]{1})/g, '\\$1')
+ .replace(/_/g, '{digit+}')
+ .replace(/([0-9]{1})/g, '{digit$1}')
+ .replace(/\{digit([0-9]{1})\}/g, '[0-$1_]{1}')
+ .replace(/\{digit[\+]\}/g, '[0-9_]{1}');
+ return (new RegExp(reg)).test(value);
+ };
+ input.off('keydown.xdsoft');
+
+ if (options.mask === true) {
+ options.mask = options.format
+ .replace(/Y/g, '9999')
+ .replace(/F/g, '9999')
+ .replace(/m/g, '19')
+ .replace(/d/g, '39')
+ .replace(/H/g, '29')
+ .replace(/i/g, '59')
+ .replace(/s/g, '59');
+ }
+
+ if ($.type(options.mask) === 'string') {
+ if (!isValidValue(options.mask, input.val())) {
+ input.val(options.mask.replace(/[0-9]/g, '_'));
+ }
+
+ input.on('keydown.xdsoft', function (event) {
+ var val = this.value,
+ key = event.which,
+ pos,
+ digit;
+
+ if (((key >= KEY0 && key <= KEY9) || (key >= _KEY0 && key <= _KEY9)) || (key === BACKSPACE || key === DEL)) {
+ pos = getCaretPos(this);
+ digit = (key !== BACKSPACE && key !== DEL) ? String.fromCharCode((_KEY0 <= key && key <= _KEY9) ? key - KEY0 : key) : '_';
+
+ if ((key === BACKSPACE || key === DEL) && pos) {
+ pos -= 1;
+ digit = '_';
+ }
+
+ while (/[^0-9_]/.test(options.mask.substr(pos, 1)) && pos < options.mask.length && pos > 0) {
+ pos += (key === BACKSPACE || key === DEL) ? -1 : 1;
+ }
+
+ val = val.substr(0, pos) + digit + val.substr(pos + 1);
+ if ($.trim(val) === '') {
+ val = options.mask.replace(/[0-9]/g, '_');
+ } else {
+ if (pos === options.mask.length) {
+ event.preventDefault();
+ return false;
+ }
+ }
+
+ pos += (key === BACKSPACE || key === DEL) ? 0 : 1;
+ while (/[^0-9_]/.test(options.mask.substr(pos, 1)) && pos < options.mask.length && pos > 0) {
+ pos += (key === BACKSPACE || key === DEL) ? -1 : 1;
+ }
+
+ if (isValidValue(options.mask, val)) {
+ this.value = val;
+ setCaretPos(this, pos);
+ } else if ($.trim(val) === '') {
+ this.value = options.mask.replace(/[0-9]/g, '_');
+ } else {
+ input.trigger('error_input.xdsoft');
+ }
+ } else {
+ if (([AKEY, CKEY, VKEY, ZKEY, YKEY].indexOf(key) !== -1 && ctrlDown) || [ESC, ARROWUP, ARROWDOWN, ARROWLEFT, ARROWRIGHT, F5, CTRLKEY, TAB, ENTER].indexOf(key) !== -1) {
+ return true;
+ }
+ }
+
+ event.preventDefault();
+ return false;
+ });
+ }
+ }
+ if (options.validateOnBlur) {
+ input
+ .off('blur.xdsoft')
+ .on('blur.xdsoft', function () {
+ if (options.allowBlank && !$.trim($(this).val()).length) {
+ $(this).val(null);
+ datetimepicker.data('xdsoft_datetime').empty();
+ } else if (!Date.parseDate($(this).val(), options.format)) {
+ $(this).val((_xdsoft_datetime.now()).dateFormat(options.format));
+ datetimepicker.data('xdsoft_datetime').setCurrentTime($(this).val());
+ } else {
+ datetimepicker.data('xdsoft_datetime').setCurrentTime($(this).val());
+ }
+ datetimepicker.trigger('changedatetime.xdsoft');
+ });
+ }
+ options.dayOfWeekStartPrev = (options.dayOfWeekStart === 0) ? 6 : options.dayOfWeekStart - 1;
+
+ datetimepicker
+ .trigger('xchange.xdsoft')
+ .trigger('afterOpen.xdsoft');
+ };
+
+ datetimepicker
+ .data('options', options)
+ .on('mousedown.xdsoft', function (event) {
+ event.stopPropagation();
+ event.preventDefault();
+ yearselect.hide();
+ monthselect.hide();
+ return false;
+ });
+
+ //scroll_element = timepicker.find('.xdsoft_time_box');
+ timeboxparent.append(timebox);
+ timeboxparent.xdsoftScroller();
+
+ datetimepicker.on('afterOpen.xdsoft', function () {
+ timeboxparent.xdsoftScroller();
+ });
+
+ datetimepicker
+ .append(datepicker)
+ .append(timepicker);
+
+ if (options.withoutCopyright !== true) {
+ datetimepicker
+ .append(xdsoft_copyright);
+ }
+
+ datepicker
+ .append(mounth_picker)
+ .append(calendar);
+
+ $(options.parentID)
+ .append(datetimepicker);
+
+ XDSoft_datetime = function () {
+ var _this = this;
+ _this.now = function (norecursion) {
+ var d = new Date(),
+ date,
+ time;
+
+ if (!norecursion && options.defaultDate) {
+ date = _this.strToDate(options.defaultDate);
+ d.setFullYear(date.getFullYear());
+ d.setMonth(date.getMonth());
+ d.setDate(date.getDate());
+ }
+
+ if (options.yearOffset) {
+ d.setFullYear(d.getFullYear() + options.yearOffset);
+ }
+
+ if (!norecursion && options.defaultTime) {
+ time = _this.strtotime(options.defaultTime);
+ d.setHours(time.getHours());
+ d.setMinutes(time.getMinutes());
+ }
+
+ return d;
+ };
+
+ _this.isValidDate = function (d) {
+ if (Object.prototype.toString.call(d) !== "[object Date]") {
+ return false;
+ }
+ return !isNaN(d.getTime());
+ };
+
+ _this.setCurrentTime = function (dTime) {
+ _this.currentTime = (typeof dTime === 'string') ? _this.strToDateTime(dTime) : _this.isValidDate(dTime) ? dTime : _this.now();
+ datetimepicker.trigger('xchange.xdsoft');
+ };
+
+ _this.empty = function () {
+ _this.currentTime = null;
+ };
+
+ _this.getCurrentTime = function (dTime) {
+ return _this.currentTime;
+ };
+
+ _this.nextMonth = function () {
+ var month = _this.currentTime.getMonth() + 1,
+ year;
+ if (month === 12) {
+ _this.currentTime.setFullYear(_this.currentTime.getFullYear() + 1);
+ month = 0;
+ }
+
+ year = _this.currentTime.getFullYear();
+
+ _this.currentTime.setDate(
+ Math.min(
+ new Date(_this.currentTime.getFullYear(), month + 1, 0).getDate(),
+ _this.currentTime.getDate()
+ )
+ );
+ _this.currentTime.setMonth(month);
+
+ if (options.onChangeMonth && $.isFunction(options.onChangeMonth)) {
+ options.onChangeMonth.call(datetimepicker, _xdsoft_datetime.currentTime, datetimepicker.data('input'));
+ }
+
+ if (year !== _this.currentTime.getFullYear() && $.isFunction(options.onChangeYear)) {
+ options.onChangeYear.call(datetimepicker, _xdsoft_datetime.currentTime, datetimepicker.data('input'));
+ }
+
+ datetimepicker.trigger('xchange.xdsoft');
+ return month;
+ };
+
+ _this.prevMonth = function () {
+ var month = _this.currentTime.getMonth() - 1;
+ if (month === -1) {
+ _this.currentTime.setFullYear(_this.currentTime.getFullYear() - 1);
+ month = 11;
+ }
+ _this.currentTime.setDate(
+ Math.min(
+ new Date(_this.currentTime.getFullYear(), month + 1, 0).getDate(),
+ _this.currentTime.getDate()
+ )
+ );
+ _this.currentTime.setMonth(month);
+ if (options.onChangeMonth && $.isFunction(options.onChangeMonth)) {
+ options.onChangeMonth.call(datetimepicker, _xdsoft_datetime.currentTime, datetimepicker.data('input'));
+ }
+ datetimepicker.trigger('xchange.xdsoft');
+ return month;
+ };
+
+ _this.getWeekOfYear = function (datetime) {
+ var onejan = new Date(datetime.getFullYear(), 0, 1);
+ return Math.ceil((((datetime - onejan) / 86400000) + onejan.getDay() + 1) / 7);
+ };
+
+ _this.strToDateTime = function (sDateTime) {
+ var tmpDate = [], timeOffset, currentTime;
+
+ if (sDateTime && sDateTime instanceof Date && _this.isValidDate(sDateTime)) {
+ return sDateTime;
+ }
+
+ tmpDate = /^(\+|\-)(.*)$/.exec(sDateTime);
+ if (tmpDate) {
+ tmpDate[2] = Date.parseDate(tmpDate[2], options.formatDate);
+ }
+ if (tmpDate && tmpDate[2]) {
+ timeOffset = tmpDate[2].getTime() - (tmpDate[2].getTimezoneOffset()) * 60000;
+ currentTime = new Date((_xdsoft_datetime.now()).getTime() + parseInt(tmpDate[1] + '1', 10) * timeOffset);
+ } else {
+ currentTime = sDateTime ? Date.parseDate(sDateTime, options.format) : _this.now();
+ }
+
+ if (!_this.isValidDate(currentTime)) {
+ currentTime = _this.now();
+ }
+
+ return currentTime;
+ };
+
+ _this.strToDate = function (sDate) {
+ if (sDate && sDate instanceof Date && _this.isValidDate(sDate)) {
+ return sDate;
+ }
+
+ var currentTime = sDate ? Date.parseDate(sDate, options.formatDate) : _this.now(true);
+ if (!_this.isValidDate(currentTime)) {
+ currentTime = _this.now(true);
+ }
+ return currentTime;
+ };
+
+ _this.strtotime = function (sTime) {
+ if (sTime && sTime instanceof Date && _this.isValidDate(sTime)) {
+ return sTime;
+ }
+ var currentTime = sTime ? Date.parseDate(sTime, options.formatTime) : _this.now(true);
+ if (!_this.isValidDate(currentTime)) {
+ currentTime = _this.now(true);
+ }
+ return currentTime;
+ };
+
+ _this.str = function () {
+ return _this.currentTime.dateFormat(options.format);
+ };
+ _this.currentTime = this.now();
+ };
+
+ _xdsoft_datetime = new XDSoft_datetime();
+
+ mounth_picker
+ .find('.xdsoft_today_button')
+ .on('mousedown.xdsoft', function () {
+ datetimepicker.data('changed', true);
+ _xdsoft_datetime.setCurrentTime(0);
+ datetimepicker.trigger('afterOpen.xdsoft');
+ }).on('dblclick.xdsoft', function () {
+ input.val(_xdsoft_datetime.str());
+ datetimepicker.trigger('close.xdsoft');
+ });
+ mounth_picker
+ .find('.xdsoft_prev,.xdsoft_next')
+ .on('mousedown.xdsoft', function () {
+ var $this = $(this),
+ timer = 0,
+ stop = false;
+
+ (function arguments_callee1(v) {
+ var month = _xdsoft_datetime.currentTime.getMonth();
+ if ($this.hasClass(options.next)) {
+ _xdsoft_datetime.nextMonth();
+ } else if ($this.hasClass(options.prev)) {
+ _xdsoft_datetime.prevMonth();
+ }
+ if (options.monthChangeSpinner) {
+ if (!stop) {
+ timer = setTimeout(arguments_callee1, v || 100);
+ }
+ }
+ }(500));
+
+ $([document.body, window]).on('mouseup.xdsoft', function arguments_callee2() {
+ clearTimeout(timer);
+ stop = true;
+ $([document.body, window]).off('mouseup.xdsoft', arguments_callee2);
+ });
+ });
+
+ timepicker
+ .find('.xdsoft_prev,.xdsoft_next')
+ .on('mousedown.xdsoft', function () {
+ var $this = $(this),
+ timer = 0,
+ stop = false,
+ period = 110;
+ (function arguments_callee4(v) {
+ var pheight = timeboxparent[0].clientHeight,
+ height = timebox[0].offsetHeight,
+ top = Math.abs(parseInt(timebox.css('marginTop'), 10));
+ if ($this.hasClass(options.next) && (height - pheight) - options.timeHeightInTimePicker >= top) {
+ timebox.css('marginTop', '-' + (top + options.timeHeightInTimePicker) + 'px');
+ } else if ($this.hasClass(options.prev) && top - options.timeHeightInTimePicker >= 0) {
+ timebox.css('marginTop', '-' + (top - options.timeHeightInTimePicker) + 'px');
+ }
+ timeboxparent.trigger('scroll_element.xdsoft_scroller', [Math.abs(parseInt(timebox.css('marginTop'), 10) / (height - pheight))]);
+ period = (period > 10) ? 10 : period - 10;
+ if (!stop) {
+ timer = setTimeout(arguments_callee4, v || period);
+ }
+ }(500));
+ $([document.body, window]).on('mouseup.xdsoft', function arguments_callee5() {
+ clearTimeout(timer);
+ stop = true;
+ $([document.body, window])
+ .off('mouseup.xdsoft', arguments_callee5);
+ });
+ });
+
+ xchangeTimer = 0;
+ // base handler - generating a calendar and timepicker
+ datetimepicker
+ .on('xchange.xdsoft', function (event) {
+ clearTimeout(xchangeTimer);
+ xchangeTimer = setTimeout(function () {
+ var table = '',
+ start = new Date(_xdsoft_datetime.currentTime.getFullYear(), _xdsoft_datetime.currentTime.getMonth(), 1, 12, 0, 0),
+ i = 0,
+ j,
+ today = _xdsoft_datetime.now(),
+ maxDate = false,
+ minDate = false,
+ d,
+ y,
+ m,
+ w,
+ classes = [],
+ customDateSettings,
+ newRow = true,
+ time = '',
+ h = '',
+ line_time;
+
+ while (start.getDay() !== options.dayOfWeekStart) {
+ start.setDate(start.getDate() - 1);
+ }
+
+ table += '<table><thead><tr>';
+
+ if (options.weeks) {
+ table += '<th></th>';
+ }
+
+ for (j = 0; j < 7; j += 1) {
+ table += '<th>' + options.i18n[options.lang].dayOfWeek[(j + options.dayOfWeekStart) % 7] + '</th>';
+ }
+
+ table += '</tr></thead>';
+ table += '<tbody>';
+
+ if (options.maxDate !== false) {
+ maxDate = _xdsoft_datetime.strToDate(options.maxDate);
+ maxDate = new Date(maxDate.getFullYear(), maxDate.getMonth(), maxDate.getDate(), 23, 59, 59, 999);
+ }
+
+ if (options.minDate !== false) {
+ minDate = _xdsoft_datetime.strToDate(options.minDate);
+ minDate = new Date(minDate.getFullYear(), minDate.getMonth(), minDate.getDate());
+ }
+
+ while (i < _xdsoft_datetime.currentTime.countDaysInMonth() || start.getDay() !== options.dayOfWeekStart || _xdsoft_datetime.currentTime.getMonth() === start.getMonth()) {
+ classes = [];
+ i += 1;
+
+ d = start.getDate();
+ y = start.getFullYear();
+ m = start.getMonth();
+ w = _xdsoft_datetime.getWeekOfYear(start);
+
+ classes.push('xdsoft_date');
+
+ if (options.beforeShowDay && $.isFunction(options.beforeShowDay.call)) {
+ customDateSettings = options.beforeShowDay.call(datetimepicker, start);
+ } else {
+ customDateSettings = null;
+ }
+
+ if ((maxDate !== false && start > maxDate) || (minDate !== false && start < minDate) || (customDateSettings && customDateSettings[0] === false)) {
+ classes.push('xdsoft_disabled');
+ } else if (options.disabledDates.indexOf(start.dateFormat(options.formatDate)) !== -1) {
+ classes.push('xdsoft_disabled');
+ }
+
+ if (customDateSettings && customDateSettings[1] !== "") {
+ classes.push(customDateSettings[1]);
+ }
+
+ if (_xdsoft_datetime.currentTime.getMonth() !== m) {
+ classes.push('xdsoft_other_month');
+ }
+
+ if ((options.defaultSelect || datetimepicker.data('changed')) && _xdsoft_datetime.currentTime.dateFormat(options.formatDate) === start.dateFormat(options.formatDate)) {
+ classes.push('xdsoft_current');
+ }
+
+ if (today.dateFormat(options.formatDate) === start.dateFormat(options.formatDate)) {
+ classes.push('xdsoft_today');
+ }
+
+ if (start.getDay() === 0 || start.getDay() === 6 || options.weekends.indexOf(start.dateFormat(options.formatDate)) === -1) {
+ classes.push('xdsoft_weekend');
+ }
+
+ if (options.beforeShowDay && $.isFunction(options.beforeShowDay)) {
+ classes.push(options.beforeShowDay(start));
+ }
+
+ if (newRow) {
+ table += '<tr>';
+ newRow = false;
+ if (options.weeks) {
+ table += '<th>' + w + '</th>';
+ }
+ }
+
+ table += '<td data-date="' + d + '" data-month="' + m + '" data-year="' + y + '"' + ' class="xdsoft_date xdsoft_day_of_week' + start.getDay() + ' ' + classes.join(' ') + '">' +
+ '<div>' + d + '</div>' +
+ '</td>';
+
+ if (start.getDay() === options.dayOfWeekStartPrev) {
+ table += '</tr>';
+ newRow = true;
+ }
+
+ start.setDate(d + 1);
+ }
+ table += '</tbody></table>';
+
+ calendar.html(table);
+
+ mounth_picker.find('.xdsoft_label span').eq(0).text(options.i18n[options.lang].months[_xdsoft_datetime.currentTime.getMonth()]);
+ mounth_picker.find('.xdsoft_label span').eq(1).text(_xdsoft_datetime.currentTime.getFullYear());
+
+ // generate timebox
+ time = '';
+ h = '';
+ m = '';
+ line_time = function line_time(h, m) {
+ var now = _xdsoft_datetime.now();
+ now.setHours(h);
+ h = parseInt(now.getHours(), 10);
+ now.setMinutes(m);
+ m = parseInt(now.getMinutes(), 10);
+
+ classes = [];
+ if ((options.maxTime !== false && _xdsoft_datetime.strtotime(options.maxTime).getTime() < now.getTime()) || (options.minTime !== false && _xdsoft_datetime.strtotime(options.minTime).getTime() > now.getTime())) {
+ classes.push('xdsoft_disabled');
+ }
+ if ((options.initTime || options.defaultSelect || datetimepicker.data('changed')) && parseInt(_xdsoft_datetime.currentTime.getHours(), 10) === parseInt(h, 10) && (options.step > 59 || Math[options.roundTime](_xdsoft_datetime.currentTime.getMinutes() / options.step) * options.step === parseInt(m, 10))) {
+ if (options.defaultSelect || datetimepicker.data('changed')) {
+ classes.push('xdsoft_current');
+ } else if (options.initTime) {
+ classes.push('xdsoft_init_time');
+ }
+ }
+ if (parseInt(today.getHours(), 10) === parseInt(h, 10) && parseInt(today.getMinutes(), 10) === parseInt(m, 10)) {
+ classes.push('xdsoft_today');
+ }
+ time += '<div class="xdsoft_time ' + classes.join(' ') + '" data-hour="' + h + '" data-minute="' + m + '">' + now.dateFormat(options.formatTime) + '</div>';
+ };
+
+ if (!options.allowTimes || !$.isArray(options.allowTimes) || !options.allowTimes.length) {
+ for (i = 0, j = 0; i < (options.hours12 ? 12 : 24); i += 1) {
+ for (j = 0; j < 60; j += options.step) {
+ h = (i < 10 ? '0' : '') + i;
+ m = (j < 10 ? '0' : '') + j;
+ line_time(h, m);
+ }
+ }
+ } else {
+ for (i = 0; i < options.allowTimes.length; i += 1) {
+ h = _xdsoft_datetime.strtotime(options.allowTimes[i]).getHours();
+ m = _xdsoft_datetime.strtotime(options.allowTimes[i]).getMinutes();
+ line_time(h, m);
+ }
+ }
+
+ timebox.html(time);
+
+ opt = '';
+ i = 0;
+
+ for (i = parseInt(options.yearStart, 10) + options.yearOffset; i <= parseInt(options.yearEnd, 10) + options.yearOffset; i += 1) {
+ opt += '<div class="xdsoft_option ' + (_xdsoft_datetime.currentTime.getFullYear() === i ? 'xdsoft_current' : '') + '" data-value="' + i + '">' + i + '</div>';
+ }
+ yearselect.children().eq(0)
+ .html(opt);
+
+ for (i = 0, opt = ''; i <= 11; i += 1) {
+ opt += '<div class="xdsoft_option ' + (_xdsoft_datetime.currentTime.getMonth() === i ? 'xdsoft_current' : '') + '" data-value="' + i + '">' + options.i18n[options.lang].months[i] + '</div>';
+ }
+ monthselect.children().eq(0).html(opt);
+ $(datetimepicker)
+ .trigger('generate.xdsoft');
+ }, 10);
+ event.stopPropagation();
+ })
+ .on('afterOpen.xdsoft', function () {
+ if (options.timepicker) {
+ var classType, pheight, height, top;
+ if (timebox.find('.xdsoft_current').length) {
+ classType = '.xdsoft_current';
+ } else if (timebox.find('.xdsoft_init_time').length) {
+ classType = '.xdsoft_init_time';
+ }
+ if (classType) {
+ pheight = timeboxparent[0].clientHeight;
+ height = timebox[0].offsetHeight;
+ top = timebox.find(classType).index() * options.timeHeightInTimePicker + 1;
+ if ((height - pheight) < top) {
+ top = height - pheight;
+ }
+ timeboxparent.trigger('scroll_element.xdsoft_scroller', [parseInt(top, 10) / (height - pheight)]);
+ } else {
+ timeboxparent.trigger('scroll_element.xdsoft_scroller', [0]);
+ }
+ }
+ });
+
+ timerclick = 0;
+ calendar
+ .on('click.xdsoft', 'td', function (xdevent) {
+ xdevent.stopPropagation(); // Prevents closing of Pop-ups, Modals and Flyouts in Bootstrap
+ timerclick += 1;
+ var $this = $(this),
+ currentTime = _xdsoft_datetime.currentTime;
+
+ if (currentTime === undefined || currentTime === null) {
+ _xdsoft_datetime.currentTime = _xdsoft_datetime.now();
+ currentTime = _xdsoft_datetime.currentTime;
+ }
+
+ if ($this.hasClass('xdsoft_disabled')) {
+ return false;
+ }
+
+ currentTime.setDate(1);
+ currentTime.setFullYear($this.data('year'));
+ currentTime.setMonth($this.data('month'));
+ currentTime.setDate($this.data('date'));
+
+ datetimepicker.trigger('select.xdsoft', [currentTime]);
+
+ input.val(_xdsoft_datetime.str());
+ if ((timerclick > 1 || (options.closeOnDateSelect === true || (options.closeOnDateSelect === 0 && !options.timepicker))) && !options.inline) {
+ datetimepicker.trigger('close.xdsoft');
+ }
+
+ if (options.onSelectDate && $.isFunction(options.onSelectDate)) {
+ options.onSelectDate.call(datetimepicker, _xdsoft_datetime.currentTime, datetimepicker.data('input'), xdevent);
+ }
+
+ datetimepicker.data('changed', true);
+ datetimepicker.trigger('xchange.xdsoft');
+ datetimepicker.trigger('changedatetime.xdsoft');
+ setTimeout(function () {
+ timerclick = 0;
+ }, 200);
+ });
+
+ timebox
+ .on('click.xdsoft', 'div', function (xdevent) {
+ xdevent.stopPropagation();
+ var $this = $(this),
+ currentTime = _xdsoft_datetime.currentTime;
+
+ if (currentTime === undefined || currentTime === null) {
+ _xdsoft_datetime.currentTime = _xdsoft_datetime.now();
+ currentTime = _xdsoft_datetime.currentTime;
+ }
+
+ if ($this.hasClass('xdsoft_disabled')) {
+ return false;
+ }
+ currentTime.setHours($this.data('hour'));
+ currentTime.setMinutes($this.data('minute'));
+ datetimepicker.trigger('select.xdsoft', [currentTime]);
+
+ datetimepicker.data('input').val(_xdsoft_datetime.str());
+ if (!options.inline) {
+ datetimepicker.trigger('close.xdsoft');
+ }
+
+ if (options.onSelectTime && $.isFunction(options.onSelectTime)) {
+ options.onSelectTime.call(datetimepicker, _xdsoft_datetime.currentTime, datetimepicker.data('input'), xdevent);
+ }
+ datetimepicker.data('changed', true);
+ datetimepicker.trigger('xchange.xdsoft');
+ datetimepicker.trigger('changedatetime.xdsoft');
+ });
+
+
+ datepicker
+ .on('mousewheel.xdsoft', function (event) {
+ if (!options.scrollMonth) {
+ return true;
+ }
+ if (event.deltaY < 0) {
+ _xdsoft_datetime.nextMonth();
+ } else {
+ _xdsoft_datetime.prevMonth();
+ }
+ return false;
+ });
+
+ input
+ .on('mousewheel.xdsoft', function (event) {
+ if (!options.scrollInput) {
+ return true;
+ }
+ if (!options.datepicker && options.timepicker) {
+ current_time_index = timebox.find('.xdsoft_current').length ? timebox.find('.xdsoft_current').eq(0).index() : 0;
+ if (current_time_index + event.deltaY >= 0 && current_time_index + event.deltaY < timebox.children().length) {
+ current_time_index += event.deltaY;
+ }
+ if (timebox.children().eq(current_time_index).length) {
+ timebox.children().eq(current_time_index).trigger('mousedown');
+ }
+ return false;
+ }
+ if (options.datepicker && !options.timepicker) {
+ datepicker.trigger(event, [event.deltaY, event.deltaX, event.deltaY]);
+ if (input.val) {
+ input.val(_xdsoft_datetime.str());
+ }
+ datetimepicker.trigger('changedatetime.xdsoft');
+ return false;
+ }
+ });
+
+ datetimepicker
+ .on('changedatetime.xdsoft', function (event) {
+ if (options.onChangeDateTime && $.isFunction(options.onChangeDateTime)) {
+ var $input = datetimepicker.data('input');
+ options.onChangeDateTime.call(datetimepicker, _xdsoft_datetime.currentTime, $input, event);
+ delete options.value;
+ $input.trigger('change');
+ }
+ })
+ .on('generate.xdsoft', function () {
+ if (options.onGenerate && $.isFunction(options.onGenerate)) {
+ options.onGenerate.call(datetimepicker, _xdsoft_datetime.currentTime, datetimepicker.data('input'));
+ }
+ if (triggerAfterOpen) {
+ datetimepicker.trigger('afterOpen.xdsoft');
+ triggerAfterOpen = false;
+ }
+ })
+ .on('click.xdsoft', function (xdevent) {
+ xdevent.stopPropagation();
+ });
+
+ current_time_index = 0;
+
+ setPos = function () {
+ var offset = datetimepicker.data('input').offset(), top = offset.top + datetimepicker.data('input')[0].offsetHeight - 1, left = offset.left, position = "absolute";
+ if (options.fixed) {
+ top -= $(window).scrollTop();
+ left -= $(window).scrollLeft();
+ position = "fixed";
+ } else {
+ if (top + datetimepicker[0].offsetHeight > $(window).height() + $(window).scrollTop()) {
+ top = offset.top - datetimepicker[0].offsetHeight + 1;
+ }
+ if (top < 0) {
+ top = 0;
+ }
+ if (left + datetimepicker[0].offsetWidth > $(window).width()) {
+ left = $(window).width() - datetimepicker[0].offsetWidth;
+ }
+ }
+ datetimepicker.css({
+ left: left,
+ top: top,
+ position: position
+ });
+ };
+ datetimepicker
+ .on('open.xdsoft', function (event) {
+ var onShow = true;
+ if (options.onShow && $.isFunction(options.onShow)) {
+ onShow = options.onShow.call(datetimepicker, _xdsoft_datetime.currentTime, datetimepicker.data('input'), event);
+ }
+ if (onShow !== false) {
+ datetimepicker.show();
+ setPos();
+ $(window)
+ .off('resize.xdsoft', setPos)
+ .on('resize.xdsoft', setPos);
+
+ if (options.closeOnWithoutClick) {
+ $([document.body, window]).on('mousedown.xdsoft', function arguments_callee6() {
+ datetimepicker.trigger('close.xdsoft');
+ $([document.body, window]).off('mousedown.xdsoft', arguments_callee6);
+ });
+ }
+ }
+ })
+ .on('close.xdsoft', function (event) {
+ var onClose = true;
+ mounth_picker
+ .find('.xdsoft_month,.xdsoft_year')
+ .find('.xdsoft_select')
+ .hide();
+ if (options.onClose && $.isFunction(options.onClose)) {
+ onClose = options.onClose.call(datetimepicker, _xdsoft_datetime.currentTime, datetimepicker.data('input'), event);
+ }
+ if (onClose !== false && !options.opened && !options.inline) {
+ datetimepicker.hide();
+ }
+ event.stopPropagation();
+ })
+ .on('toggle.xdsoft', function (event) {
+ datetimepicker.is(':visible') ? datetimepicker.trigger('close.xdsoft') : datetimepicker.trigger('open.xdsoft');
+ })
+ .data('input', input);
+
+ timer = 0;
+ timer1 = 0;
+
+ datetimepicker.data('xdsoft_datetime', _xdsoft_datetime);
+ datetimepicker.setOptions(options);
+
+ function getCurrentValue() {
+
+ var ct = false, time;
+
+ if (options.startDate) {
+ ct = _xdsoft_datetime.strToDate(options.startDate);
+ } else {
+ ct = options.value || ((input && input.val && input.val()) ? input.val() : '');
+ if (ct) {
+ ct = _xdsoft_datetime.strToDateTime(ct);
+ } else if (options.defaultDate) {
+ ct = _xdsoft_datetime.strToDate(options.defaultDate);
+ if (options.defaultTime) {
+ time = _xdsoft_datetime.strtotime(options.defaultTime);
+ ct.setHours(time.getHours());
+ ct.setMinutes(time.getMinutes());
+ }
+ }
+ }
+
+ if (ct && _xdsoft_datetime.isValidDate(ct)) {
+ datetimepicker.data('changed', true);
+ } else {
+ ct = '';
+ }
+
+ return ct || 0;
+ }
+
+ _xdsoft_datetime.setCurrentTime(getCurrentValue());
+
+ input
+ .data('xdsoft_datetimepicker', datetimepicker)
+ .on('open.xdsoft focusin.xdsoft mousedown.xdsoft', function (event) {
+ if (input.is(':disabled') || input.is(':hidden') || !input.is(':visible') || (input.data('xdsoft_datetimepicker').is(':visible') && options.closeOnInputClick)) {
+ return;
+ }
+ clearTimeout(timer);
+ timer = setTimeout(function () {
+ if (input.is(':disabled') || input.is(':hidden') || !input.is(':visible')) {
+ return;
+ }
+
+ triggerAfterOpen = true;
+ _xdsoft_datetime.setCurrentTime(getCurrentValue());
+
+ datetimepicker.trigger('open.xdsoft');
+ }, 100);
+ })
+ .on('keydown.xdsoft', function (event) {
+ var val = this.value, elementSelector,
+ key = event.which;
+ if ([ENTER].indexOf(key) !== -1 && options.enterLikeTab) {
+ elementSelector = $("input:visible,textarea:visible");
+ datetimepicker.trigger('close.xdsoft');
+ elementSelector.eq(elementSelector.index(this) + 1).focus();
+ return false;
+ }
+ if ([TAB].indexOf(key) !== -1) {
+ datetimepicker.trigger('close.xdsoft');
+ return true;
+ }
+ });
+ };
+ destroyDateTimePicker = function (input) {
+ var datetimepicker = input.data('xdsoft_datetimepicker');
+ if (datetimepicker) {
+ datetimepicker.data('xdsoft_datetime', null);
+ datetimepicker.remove();
+ input
+ .data('xdsoft_datetimepicker', null)
+ .off('.xdsoft');
+ $(window).off('resize.xdsoft');
+ $([window, document.body]).off('mousedown.xdsoft');
+ if (input.unmousewheel) {
+ input.unmousewheel();
+ }
+ }
+ };
+ $(document)
+ .off('keydown.xdsoftctrl keyup.xdsoftctrl')
+ .on('keydown.xdsoftctrl', function (e) {
+ if (e.keyCode === CTRLKEY) {
+ ctrlDown = true;
+ }
+ })
+ .on('keyup.xdsoftctrl', function (e) {
+ if (e.keyCode === CTRLKEY) {
+ ctrlDown = false;
+ }
+ });
+ return this.each(function () {
+ var datetimepicker = $(this).data('xdsoft_datetimepicker');
+ if (datetimepicker) {
+ if ($.type(opt) === 'string') {
+ switch (opt) {
+ case 'show':
+ $(this).select().focus();
+ datetimepicker.trigger('open.xdsoft');
+ break;
+ case 'hide':
+ datetimepicker.trigger('close.xdsoft');
+ break;
+ case 'toggle':
+ datetimepicker.trigger('toggle.xdsoft');
+ break;
+ case 'destroy':
+ destroyDateTimePicker($(this));
+ break;
+ case 'reset':
+ this.value = this.defaultValue;
+ if (!this.value || !datetimepicker.data('xdsoft_datetime').isValidDate(Date.parseDate(this.value, options.format))) {
+ datetimepicker.data('changed', false);
+ }
+ datetimepicker.data('xdsoft_datetime').setCurrentTime(this.value);
+ break;
+ }
+ } else {
+ datetimepicker
+ .setOptions(opt);
+ }
+ return 0;
+ }
+ if ($.type(opt) !== 'string') {
+ if (!options.lazyInit || options.open || options.inline) {
+ createDateTimePicker($(this));
+ } else {
+ lazyInit($(this));
+ }
+ }
+ });
+ };
+ $.fn.datetimepicker.defaults = default_options;
+}(jQuery));
+(function () {
+
+/*! Copyright (c) 2013 Brandon Aaron (http://brandon.aaron.sh)
+ * Licensed under the MIT License (LICENSE.txt).
+ *
+ * Version: 3.1.12
+ *
+ * Requires: jQuery 1.2.2+
+ */
+!function(a){"function"==typeof define&&define.amd?define(["jquery"],a):"object"==typeof exports?module.exports=a:a(jQuery)}(function(a){function b(b){var g=b||window.event,h=i.call(arguments,1),j=0,l=0,m=0,n=0,o=0,p=0;if(b=a.event.fix(g),b.type="mousewheel","detail"in g&&(m=-1*g.detail),"wheelDelta"in g&&(m=g.wheelDelta),"wheelDeltaY"in g&&(m=g.wheelDeltaY),"wheelDeltaX"in g&&(l=-1*g.wheelDeltaX),"axis"in g&&g.axis===g.HORIZONTAL_AXIS&&(l=-1*m,m=0),j=0===m?l:m,"deltaY"in g&&(m=-1*g.deltaY,j=m),"deltaX"in g&&(l=g.deltaX,0===m&&(j=-1*l)),0!==m||0!==l){if(1===g.deltaMode){var q=a.data(this,"mousewheel-line-height");j*=q,m*=q,l*=q}else if(2===g.deltaMode){var r=a.data(this,"mousewheel-page-height");j*=r,m*=r,l*=r}if(n=Math.max(Math.abs(m),Math.abs(l)),(!f||f>n)&&(f=n,d(g,n)&&(f/=40)),d(g,n)&&(j/=40,l/=40,m/=40),j=Math[j>=1?"floor":"ceil"](j/f),l=Math[l>=1?"floor":"ceil"](l/f),m=Math[m>=1?"floor":"ceil"](m/f),k.settings.normalizeOffset&&this.getBoundingClientRect){var s=this.getBoundingClientRect();o=b.clientX-s.left,p=b.clientY-s.top}return b.deltaX=l,b.deltaY=m,b.deltaFactor=f,b.offsetX=o,b.offsetY=p,b.deltaMode=0,h.unshift(b,j,l,m),e&&clearTimeout(e),e=setTimeout(c,200),(a.event.dispatch||a.event.handle).apply(this,h)}}function c(){f=null}function d(a,b){return k.settings.adjustOldDeltas&&"mousewheel"===a.type&&b%120===0}var e,f,g=["wheel","mousewheel","DOMMouseScroll","MozMousePixelScroll"],h="onwheel"in document||document.documentMode>=9?["wheel"]:["mousewheel","DomMouseScroll","MozMousePixelScroll"],i=Array.prototype.slice;if(a.event.fixHooks)for(var j=g.length;j;)a.event.fixHooks[g[--j]]=a.event.mouseHooks;var k=a.event.special.mousewheel={version:"3.1.12",setup:function(){if(this.addEventListener)for(var c=h.length;c;)this.addEventListener(h[--c],b,!1);else this.onmousewheel=b;a.data(this,"mousewheel-line-height",k.getLineHeight(this)),a.data(this,"mousewheel-page-height",k.getPageHeight(this))},teardown:function(){if(this.removeEventListener)for(var c=h.length;c;)this.removeEventListener(h[--c],b,!1);else this.onmousewheel=null;a.removeData(this,"mousewheel-line-height"),a.removeData(this,"mousewheel-page-height")},getLineHeight:function(b){var c=a(b),d=c["offsetParent"in a.fn?"offsetParent":"parent"]();return d.length||(d=a("body")),parseInt(d.css("fontSize"),10)||parseInt(c.css("fontSize"),10)||16},getPageHeight:function(b){return a(b).height()},settings:{adjustOldDeltas:!0,normalizeOffset:!0}};a.fn.extend({mousewheel:function(a){return a?this.bind("mousewheel",a):this.trigger("mousewheel")},unmousewheel:function(a){return this.unbind("mousewheel",a)}})});
+
+// Parse and Format Library
+//http://www.xaprb.com/blog/2005/12/12/javascript-closures-for-runtime-efficiency/
+/*
+ * Copyright (C) 2004 Baron Schwartz <baron at sequent dot org>
+ *
+ * This program is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as published by the
+ * Free Software Foundation, version 2.1.
+ *
+ * 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 Lesser General Public License for more
+ * details.
+ */
+Date.parseFunctions={count:0};Date.parseRegexes=[];Date.formatFunctions={count:0};Date.prototype.dateFormat=function(b){if(b=="unixtime"){return parseInt(this.getTime()/1000);}if(Date.formatFunctions[b]==null){Date.createNewFormat(b);}var a=Date.formatFunctions[b];return this[a]();};Date.createNewFormat=function(format){var funcName="format"+Date.formatFunctions.count++;Date.formatFunctions[format]=funcName;var code="Date.prototype."+funcName+" = function() {return ";var special=false;var ch="";for(var i=0;i<format.length;++i){ch=format.charAt(i);if(!special&&ch=="\\"){special=true;}else{if(special){special=false;code+="'"+String.escape(ch)+"' + ";}else{code+=Date.getFormatCode(ch);}}}eval(code.substring(0,code.length-3)+";}");};Date.getFormatCode=function(a){switch(a){case"d":return"String.leftPad(this.getDate(), 2, '0') + ";case"D":return"Date.dayNames[this.getDay()].substring(0, 3) + ";case"j":return"this.getDate() + ";case"l":return"Date.dayNames[this.getDay()] + ";case"S":return"this.getSuffix() + ";case"w":return"this.getDay() + ";case"z":return"this.getDayOfYear() + ";case"W":return"this.getWeekOfYear() + ";case"F":return"Date.monthNames[this.getMonth()] + ";case"m":return"String.leftPad(this.getMonth() + 1, 2, '0') + ";case"M":return"Date.monthNames[this.getMonth()].substring(0, 3) + ";case"n":return"(this.getMonth() + 1) + ";case"t":return"this.getDaysInMonth() + ";case"L":return"(this.isLeapYear() ? 1 : 0) + ";case"Y":return"this.getFullYear() + ";case"y":return"('' + this.getFullYear()).substring(2, 4) + ";case"a":return"(this.getHours() < 12 ? 'am' : 'pm') + ";case"A":return"(this.getHours() < 12 ? 'AM' : 'PM') + ";case"g":return"((this.getHours() %12) ? this.getHours() % 12 : 12) + ";case"G":return"this.getHours() + ";case"h":return"String.leftPad((this.getHours() %12) ? this.getHours() % 12 : 12, 2, '0') + ";case"H":return"String.leftPad(this.getHours(), 2, '0') + ";case"i":return"String.leftPad(this.getMinutes(), 2, '0') + ";case"s":return"String.leftPad(this.getSeconds(), 2, '0') + ";case"O":return"this.getGMTOffset() + ";case"T":return"this.getTimezone() + ";case"Z":return"(this.getTimezoneOffset() * -60) + ";default:return"'"+String.escape(a)+"' + ";}};Date.parseDate=function(a,c){if(c=="unixtime"){return new Date(!isNaN(parseInt(a))?parseInt(a)*1000:0);}if(Date.parseFunctions[c]==null){Date.createParser(c);}var b=Date.parseFunctions[c];return Date[b](a);};Date.createParser=function(format){var funcName="parse"+Date.parseFunctions.count++;var regexNum=Date.parseRegexes.length;var currentGroup=1;Date.parseFunctions[format]=funcName;var code="Date."+funcName+" = function(input) {\nvar y = -1, m = -1, d = -1, h = -1, i = -1, s = -1, z = -1;\nvar d = new Date();\ny = d.getFullYear();\nm = d.getMonth();\nd = d.getDate();\nvar results = input.match(Date.parseRegexes["+regexNum+"]);\nif (results && results.length > 0) {";var regex="";var special=false;var ch="";for(var i=0;i<format.length;++i){ch=format.charAt(i);if(!special&&ch=="\\"){special=true;}else{if(special){special=false;regex+=String.escape(ch);}else{obj=Date.formatCodeToRegex(ch,currentGroup);currentGroup+=obj.g;regex+=obj.s;if(obj.g&&obj.c){code+=obj.c;}}}}code+="if (y > 0 && z > 0){\nvar doyDate = new Date(y,0);\ndoyDate.setDate(z);\nm = doyDate.getMonth();\nd = doyDate.getDate();\n}";code+="if (y > 0 && m >= 0 && d > 0 && h >= 0 && i >= 0 && s >= 0)\n{return new Date(y, m, d, h, i, s);}\nelse if (y > 0 && m >= 0 && d > 0 && h >= 0 && i >= 0)\n{return new Date(y, m, d, h, i);}\nelse if (y > 0 && m >= 0 && d > 0 && h >= 0)\n{return new Date(y, m, d, h);}\nelse if (y > 0 && m >= 0 && d > 0)\n{return new Date(y, m, d);}\nelse if (y > 0 && m >= 0)\n{return new Date(y, m);}\nelse if (y > 0)\n{return new Date(y);}\n}return null;}";Date.parseRegexes[regexNum]=new RegExp("^"+regex+"$");eval(code);};Date.formatCodeToRegex=function(b,a){switch(b){case"D":return{g:0,c:null,s:"(?:Sun|Mon|Tue|Wed|Thu|Fri|Sat)"};case"j":case"d":return{g:1,c:"d = parseInt(results["+a+"], 10);\n",s:"(\\d{1,2})"};case"l":return{g:0,c:null,s:"(?:"+Date.dayNames.join("|")+")"};case"S":return{g:0,c:null,s:"(?:st|nd|rd|th)"};case"w":return{g:0,c:null,s:"\\d"};case"z":return{g:1,c:"z = parseInt(results["+a+"], 10);\n",s:"(\\d{1,3})"};case"W":return{g:0,c:null,s:"(?:\\d{2})"};case"F":return{g:1,c:"m = parseInt(Date.monthNumbers[results["+a+"].substring(0, 3)], 10);\n",s:"("+Date.monthNames.join("|")+")"};case"M":return{g:1,c:"m = parseInt(Date.monthNumbers[results["+a+"]], 10);\n",s:"(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)"};case"n":case"m":return{g:1,c:"m = parseInt(results["+a+"], 10) - 1;\n",s:"(\\d{1,2})"};case"t":return{g:0,c:null,s:"\\d{1,2}"};case"L":return{g:0,c:null,s:"(?:1|0)"};case"Y":return{g:1,c:"y = parseInt(results["+a+"], 10);\n",s:"(\\d{4})"};case"y":return{g:1,c:"var ty = parseInt(results["+a+"], 10);\ny = ty > Date.y2kYear ? 1900 + ty : 2000 + ty;\n",s:"(\\d{1,2})"};case"a":return{g:1,c:"if (results["+a+"] == 'am') {\nif (h == 12) { h = 0; }\n} else { if (h < 12) { h += 12; }}",s:"(am|pm)"};case"A":return{g:1,c:"if (results["+a+"] == 'AM') {\nif (h == 12) { h = 0; }\n} else { if (h < 12) { h += 12; }}",s:"(AM|PM)"};case"g":case"G":case"h":case"H":return{g:1,c:"h = parseInt(results["+a+"], 10);\n",s:"(\\d{1,2})"};case"i":return{g:1,c:"i = parseInt(results["+a+"], 10);\n",s:"(\\d{2})"};case"s":return{g:1,c:"s = parseInt(results["+a+"], 10);\n",s:"(\\d{2})"};case"O":return{g:0,c:null,s:"[+-]\\d{4}"};case"T":return{g:0,c:null,s:"[A-Z]{3}"};case"Z":return{g:0,c:null,s:"[+-]\\d{1,5}"};default:return{g:0,c:null,s:String.escape(b)};}};Date.prototype.getTimezone=function(){return this.toString().replace(/^.*? ([A-Z]{3}) [0-9]{4}.*$/,"$1").replace(/^.*?\(([A-Z])[a-z]+ ([A-Z])[a-z]+ ([A-Z])[a-z]+\)$/,"$1$2$3");};Date.prototype.getGMTOffset=function(){return(this.getTimezoneOffset()>0?"-":"+")+String.leftPad(Math.floor(Math.abs(this.getTimezoneOffset())/60),2,"0")+String.leftPad(Math.abs(this.getTimezoneOffset())%60,2,"0");};Date.prototype.getDayOfYear=function(){var a=0;Date.daysInMonth[1]=this.isLeapYear()?29:28;for(var b=0;b<this.getMonth();++b){a+=Date.daysInMonth[b];}return a+this.getDate();};Date.prototype.getWeekOfYear=function(){var b=this.getDayOfYear()+(4-this.getDay());var a=new Date(this.getFullYear(),0,1);var c=(7-a.getDay()+4);return String.leftPad(Math.ceil((b-c)/7)+1,2,"0");};Date.prototype.isLeapYear=function(){var a=this.getFullYear();return((a&3)==0&&(a%100||(a%400==0&&a)));};Date.prototype.getFirstDayOfMonth=function(){var a=(this.getDay()-(this.getDate()-1))%7;return(a<0)?(a+7):a;};Date.prototype.getLastDayOfMonth=function(){var a=(this.getDay()+(Date.daysInMonth[this.getMonth()]-this.getDate()))%7;return(a<0)?(a+7):a;};Date.prototype.getDaysInMonth=function(){Date.daysInMonth[1]=this.isLeapYear()?29:28;return Date.daysInMonth[this.getMonth()];};Date.prototype.getSuffix=function(){switch(this.getDate()){case 1:case 21:case 31:return"st";case 2:case 22:return"nd";case 3:case 23:return"rd";default:return"th";}};String.escape=function(a){return a.replace(/('|\\)/g,"\\$1");};String.leftPad=function(d,b,c){var a=new String(d);if(c==null){c=" ";}while(a.length<b){a=c+a;}return a;};Date.daysInMonth=[31,28,31,30,31,30,31,31,30,31,30,31];Date.monthNames=["January","February","March","April","May","June","July","August","September","October","November","December"];Date.dayNames=["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"];Date.y2kYear=50;Date.monthNumbers={Jan:0,Feb:1,Mar:2,Apr:3,May:4,Jun:5,Jul:6,Aug:7,Sep:8,Oct:9,Nov:10,Dec:11};Date.patterns={ISO8601LongPattern:"Y-m-d H:i:s",ISO8601ShortPattern:"Y-m-d",ShortDatePattern:"n/j/Y",LongDatePattern:"l, F d, Y",FullDateTimePattern:"l, F d, Y g:i:s A",MonthDayPattern:"F d",ShortTimePattern:"g:i A",LongTimePattern:"g:i:s A",SortableDateTimePattern:"Y-m-d\\TH:i:s",UniversalSortableDateTimePattern:"Y-m-d H:i:sO",YearMonthPattern:"F, Y"};
+}());
diff --git a/library/fancybox/blank.gif b/library/fancybox/blank.gif
deleted file mode 100644
index 35d42e808..000000000
--- a/library/fancybox/blank.gif
+++ /dev/null
Binary files differ
diff --git a/library/fancybox/fancy_close.png b/library/fancybox/fancy_close.png
deleted file mode 100644
index 07035307a..000000000
--- a/library/fancybox/fancy_close.png
+++ /dev/null
Binary files differ
diff --git a/library/fancybox/fancy_loading.png b/library/fancybox/fancy_loading.png
deleted file mode 100644
index 250301796..000000000
--- a/library/fancybox/fancy_loading.png
+++ /dev/null
Binary files differ
diff --git a/library/fancybox/fancy_nav_left.png b/library/fancybox/fancy_nav_left.png
deleted file mode 100644
index ebaa6a4fd..000000000
--- a/library/fancybox/fancy_nav_left.png
+++ /dev/null
Binary files differ
diff --git a/library/fancybox/fancy_nav_right.png b/library/fancybox/fancy_nav_right.png
deleted file mode 100644
index 873294e96..000000000
--- a/library/fancybox/fancy_nav_right.png
+++ /dev/null
Binary files differ
diff --git a/library/fancybox/fancy_shadow_e.png b/library/fancybox/fancy_shadow_e.png
deleted file mode 100644
index 2eda08936..000000000
--- a/library/fancybox/fancy_shadow_e.png
+++ /dev/null
Binary files differ
diff --git a/library/fancybox/fancy_shadow_n.png b/library/fancybox/fancy_shadow_n.png
deleted file mode 100644
index 69aa10e23..000000000
--- a/library/fancybox/fancy_shadow_n.png
+++ /dev/null
Binary files differ
diff --git a/library/fancybox/fancy_shadow_ne.png b/library/fancybox/fancy_shadow_ne.png
deleted file mode 100644
index 79f6980a3..000000000
--- a/library/fancybox/fancy_shadow_ne.png
+++ /dev/null
Binary files differ
diff --git a/library/fancybox/fancy_shadow_nw.png b/library/fancybox/fancy_shadow_nw.png
deleted file mode 100644
index 7182cd938..000000000
--- a/library/fancybox/fancy_shadow_nw.png
+++ /dev/null
Binary files differ
diff --git a/library/fancybox/fancy_shadow_s.png b/library/fancybox/fancy_shadow_s.png
deleted file mode 100644
index d8858bfb7..000000000
--- a/library/fancybox/fancy_shadow_s.png
+++ /dev/null
Binary files differ
diff --git a/library/fancybox/fancy_shadow_se.png b/library/fancybox/fancy_shadow_se.png
deleted file mode 100644
index 541e3ffd3..000000000
--- a/library/fancybox/fancy_shadow_se.png
+++ /dev/null
Binary files differ
diff --git a/library/fancybox/fancy_shadow_sw.png b/library/fancybox/fancy_shadow_sw.png
deleted file mode 100644
index b451689fa..000000000
--- a/library/fancybox/fancy_shadow_sw.png
+++ /dev/null
Binary files differ
diff --git a/library/fancybox/fancy_shadow_w.png b/library/fancybox/fancy_shadow_w.png
deleted file mode 100644
index 8a4e4a887..000000000
--- a/library/fancybox/fancy_shadow_w.png
+++ /dev/null
Binary files differ
diff --git a/library/fancybox/fancy_title_left.png b/library/fancybox/fancy_title_left.png
deleted file mode 100644
index 6049223d1..000000000
--- a/library/fancybox/fancy_title_left.png
+++ /dev/null
Binary files differ
diff --git a/library/fancybox/fancy_title_main.png b/library/fancybox/fancy_title_main.png
deleted file mode 100644
index 8044271f2..000000000
--- a/library/fancybox/fancy_title_main.png
+++ /dev/null
Binary files differ
diff --git a/library/fancybox/fancy_title_over.png b/library/fancybox/fancy_title_over.png
deleted file mode 100644
index d9f458f4b..000000000
--- a/library/fancybox/fancy_title_over.png
+++ /dev/null
Binary files differ
diff --git a/library/fancybox/fancy_title_right.png b/library/fancybox/fancy_title_right.png
deleted file mode 100644
index e36d9db2a..000000000
--- a/library/fancybox/fancy_title_right.png
+++ /dev/null
Binary files differ
diff --git a/library/fancybox/fancybox-x.png b/library/fancybox/fancybox-x.png
deleted file mode 100644
index c2130f869..000000000
--- a/library/fancybox/fancybox-x.png
+++ /dev/null
Binary files differ
diff --git a/library/fancybox/fancybox-y.png b/library/fancybox/fancybox-y.png
deleted file mode 100644
index 7ef399b99..000000000
--- a/library/fancybox/fancybox-y.png
+++ /dev/null
Binary files differ
diff --git a/library/fancybox/fancybox.png b/library/fancybox/fancybox.png
deleted file mode 100644
index 65e14f68f..000000000
--- a/library/fancybox/fancybox.png
+++ /dev/null
Binary files differ
diff --git a/library/fancybox/jquery.easing-1.3.pack.js b/library/fancybox/jquery.easing-1.3.pack.js
deleted file mode 100644
index 9028179e7..000000000
--- a/library/fancybox/jquery.easing-1.3.pack.js
+++ /dev/null
@@ -1,72 +0,0 @@
-/*
- * jQuery Easing v1.3 - http://gsgd.co.uk/sandbox/jquery/easing/
- *
- * Uses the built in easing capabilities added In jQuery 1.1
- * to offer multiple easing options
- *
- * TERMS OF USE - jQuery Easing
- *
- * Open source under the BSD License.
- *
- * Copyright © 2008 George McGinley Smith
- * 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 the author nor the names of 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 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.
- *
-*/
-
-// t: current time, b: begInnIng value, c: change In value, d: duration
-eval(function(p,a,c,k,e,r){e=function(c){return(c<a?'':e(parseInt(c/a)))+((c=c%a)>35?String.fromCharCode(c+29):c.toString(36))};if(!''.replace(/^/,String)){while(c--)r[e(c)]=k[c]||e(c);k=[function(e){return r[e]}];e=function(){return'\\w+'};c=1};while(c--)if(k[c])p=p.replace(new RegExp('\\b'+e(c)+'\\b','g'),k[c]);return p}('h.i[\'1a\']=h.i[\'z\'];h.O(h.i,{y:\'D\',z:9(x,t,b,c,d){6 h.i[h.i.y](x,t,b,c,d)},17:9(x,t,b,c,d){6 c*(t/=d)*t+b},D:9(x,t,b,c,d){6-c*(t/=d)*(t-2)+b},13:9(x,t,b,c,d){e((t/=d/2)<1)6 c/2*t*t+b;6-c/2*((--t)*(t-2)-1)+b},X:9(x,t,b,c,d){6 c*(t/=d)*t*t+b},U:9(x,t,b,c,d){6 c*((t=t/d-1)*t*t+1)+b},R:9(x,t,b,c,d){e((t/=d/2)<1)6 c/2*t*t*t+b;6 c/2*((t-=2)*t*t+2)+b},N:9(x,t,b,c,d){6 c*(t/=d)*t*t*t+b},M:9(x,t,b,c,d){6-c*((t=t/d-1)*t*t*t-1)+b},L:9(x,t,b,c,d){e((t/=d/2)<1)6 c/2*t*t*t*t+b;6-c/2*((t-=2)*t*t*t-2)+b},K:9(x,t,b,c,d){6 c*(t/=d)*t*t*t*t+b},J:9(x,t,b,c,d){6 c*((t=t/d-1)*t*t*t*t+1)+b},I:9(x,t,b,c,d){e((t/=d/2)<1)6 c/2*t*t*t*t*t+b;6 c/2*((t-=2)*t*t*t*t+2)+b},G:9(x,t,b,c,d){6-c*8.C(t/d*(8.g/2))+c+b},15:9(x,t,b,c,d){6 c*8.n(t/d*(8.g/2))+b},12:9(x,t,b,c,d){6-c/2*(8.C(8.g*t/d)-1)+b},Z:9(x,t,b,c,d){6(t==0)?b:c*8.j(2,10*(t/d-1))+b},Y:9(x,t,b,c,d){6(t==d)?b+c:c*(-8.j(2,-10*t/d)+1)+b},W:9(x,t,b,c,d){e(t==0)6 b;e(t==d)6 b+c;e((t/=d/2)<1)6 c/2*8.j(2,10*(t-1))+b;6 c/2*(-8.j(2,-10*--t)+2)+b},V:9(x,t,b,c,d){6-c*(8.o(1-(t/=d)*t)-1)+b},S:9(x,t,b,c,d){6 c*8.o(1-(t=t/d-1)*t)+b},Q:9(x,t,b,c,d){e((t/=d/2)<1)6-c/2*(8.o(1-t*t)-1)+b;6 c/2*(8.o(1-(t-=2)*t)+1)+b},P:9(x,t,b,c,d){f s=1.l;f p=0;f a=c;e(t==0)6 b;e((t/=d)==1)6 b+c;e(!p)p=d*.3;e(a<8.w(c)){a=c;f s=p/4}m f s=p/(2*8.g)*8.r(c/a);6-(a*8.j(2,10*(t-=1))*8.n((t*d-s)*(2*8.g)/p))+b},H:9(x,t,b,c,d){f s=1.l;f p=0;f a=c;e(t==0)6 b;e((t/=d)==1)6 b+c;e(!p)p=d*.3;e(a<8.w(c)){a=c;f s=p/4}m f s=p/(2*8.g)*8.r(c/a);6 a*8.j(2,-10*t)*8.n((t*d-s)*(2*8.g)/p)+c+b},T:9(x,t,b,c,d){f s=1.l;f p=0;f a=c;e(t==0)6 b;e((t/=d/2)==2)6 b+c;e(!p)p=d*(.3*1.5);e(a<8.w(c)){a=c;f s=p/4}m f s=p/(2*8.g)*8.r(c/a);e(t<1)6-.5*(a*8.j(2,10*(t-=1))*8.n((t*d-s)*(2*8.g)/p))+b;6 a*8.j(2,-10*(t-=1))*8.n((t*d-s)*(2*8.g)/p)*.5+c+b},F:9(x,t,b,c,d,s){e(s==u)s=1.l;6 c*(t/=d)*t*((s+1)*t-s)+b},E:9(x,t,b,c,d,s){e(s==u)s=1.l;6 c*((t=t/d-1)*t*((s+1)*t+s)+1)+b},16:9(x,t,b,c,d,s){e(s==u)s=1.l;e((t/=d/2)<1)6 c/2*(t*t*(((s*=(1.B))+1)*t-s))+b;6 c/2*((t-=2)*t*(((s*=(1.B))+1)*t+s)+2)+b},A:9(x,t,b,c,d){6 c-h.i.v(x,d-t,0,c,d)+b},v:9(x,t,b,c,d){e((t/=d)<(1/2.k)){6 c*(7.q*t*t)+b}m e(t<(2/2.k)){6 c*(7.q*(t-=(1.5/2.k))*t+.k)+b}m e(t<(2.5/2.k)){6 c*(7.q*(t-=(2.14/2.k))*t+.11)+b}m{6 c*(7.q*(t-=(2.18/2.k))*t+.19)+b}},1b:9(x,t,b,c,d){e(t<d/2)6 h.i.A(x,t*2,0,c,d)*.5+b;6 h.i.v(x,t*2-d,0,c,d)*.5+c*.5+b}});',62,74,'||||||return||Math|function|||||if|var|PI|jQuery|easing|pow|75|70158|else|sin|sqrt||5625|asin|||undefined|easeOutBounce|abs||def|swing|easeInBounce|525|cos|easeOutQuad|easeOutBack|easeInBack|easeInSine|easeOutElastic|easeInOutQuint|easeOutQuint|easeInQuint|easeInOutQuart|easeOutQuart|easeInQuart|extend|easeInElastic|easeInOutCirc|easeInOutCubic|easeOutCirc|easeInOutElastic|easeOutCubic|easeInCirc|easeInOutExpo|easeInCubic|easeOutExpo|easeInExpo||9375|easeInOutSine|easeInOutQuad|25|easeOutSine|easeInOutBack|easeInQuad|625|984375|jswing|easeInOutBounce'.split('|'),0,{}))
-
-/*
- *
- * TERMS OF USE - EASING EQUATIONS
- *
- * Open source under the BSD License.
- *
- * Copyright © 2001 Robert Penner
- * 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 the author nor the names of 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 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.
- *
- */
diff --git a/library/fancybox/jquery.fancybox-1.3.4.css b/library/fancybox/jquery.fancybox-1.3.4.css
deleted file mode 100644
index 6f53d8f4a..000000000
--- a/library/fancybox/jquery.fancybox-1.3.4.css
+++ /dev/null
@@ -1,359 +0,0 @@
-/*
- * FancyBox - jQuery Plugin
- * Simple and fancy lightbox alternative
- *
- * Examples and documentation at: http://fancybox.net
- *
- * Copyright (c) 2008 - 2010 Janis Skarnelis
- * That said, it is hardly a one-person project. Many people have submitted bugs, code, and offered their advice freely. Their support is greatly appreciated.
- *
- * Version: 1.3.4 (11/11/2010)
- * Requires: jQuery v1.3+
- *
- * Dual licensed under the MIT and GPL licenses:
- * http://www.opensource.org/licenses/mit-license.php
- * http://www.gnu.org/licenses/gpl.html
- */
-
-#fancybox-loading {
- position: fixed;
- top: 50%;
- left: 50%;
- width: 40px;
- height: 40px;
- margin-top: -20px;
- margin-left: -20px;
- cursor: pointer;
- overflow: hidden;
- z-index: 1104;
- display: none;
-}
-
-#fancybox-loading div {
- position: absolute;
- top: 0;
- left: 0;
- width: 40px;
- height: 480px;
- background-image: url('fancybox.png');
-}
-
-#fancybox-overlay {
- position: absolute;
- top: 0;
- left: 0;
- width: 100%;
- z-index: 1100;
- display: none;
-}
-
-#fancybox-tmp {
- padding: 0;
- margin: 0;
- border: 0;
- overflow: auto;
- display: none;
-}
-
-#fancybox-wrap {
- position: absolute;
- top: 0;
- left: 0;
- padding: 20px;
- z-index: 1101;
- outline: none;
- display: none;
-}
-
-#fancybox-outer {
- position: relative;
- width: 100%;
- height: 100%;
- background: #fff;
-}
-
-#fancybox-content {
- width: 0;
- height: 0;
- padding: 0;
- outline: none;
- position: relative;
- overflow: hidden;
- z-index: 1102;
- border: 0px solid #fff;
-}
-
-#fancybox-hide-sel-frame {
- position: absolute;
- top: 0;
- left: 0;
- width: 100%;
- height: 100%;
- background: transparent;
- z-index: 1101;
-}
-
-#fancybox-close {
- position: absolute;
- top: -15px;
- right: -15px;
- width: 30px;
- height: 30px;
- background: transparent url('fancybox.png') -40px 0px;
- cursor: pointer;
- z-index: 1103;
- display: none;
-}
-
-#fancybox-error {
- color: #444;
- font: normal 12px/20px Arial;
- padding: 14px;
- margin: 0;
-}
-
-#fancybox-img {
- width: 100%;
- height: 100%;
- padding: 0;
- margin: 0;
- border: none;
- outline: none;
- line-height: 0;
- vertical-align: top;
-}
-
-#fancybox-frame {
- width: 100%;
- height: 100%;
- border: none;
- display: block;
-}
-
-#fancybox-left, #fancybox-right {
- position: absolute;
- bottom: 0px;
- height: 100%;
- width: 35%;
- cursor: pointer;
- outline: none;
- background: transparent url('blank.gif');
- z-index: 1102;
- display: none;
-}
-
-#fancybox-left {
- left: 0px;
-}
-
-#fancybox-right {
- right: 0px;
-}
-
-#fancybox-left-ico, #fancybox-right-ico {
- position: absolute;
- top: 50%;
- left: -9999px;
- width: 30px;
- height: 30px;
- margin-top: -15px;
- cursor: pointer;
- z-index: 1102;
- display: block;
-}
-
-#fancybox-left-ico {
- background-image: url('fancybox.png');
- background-position: -40px -30px;
-}
-
-#fancybox-right-ico {
- background-image: url('fancybox.png');
- background-position: -40px -60px;
-}
-
-#fancybox-left:hover, #fancybox-right:hover {
- visibility: visible; /* IE6 */
-}
-
-#fancybox-left:hover span {
- left: 20px;
-}
-
-#fancybox-right:hover span {
- left: auto;
- right: 20px;
-}
-
-.fancybox-bg {
- position: absolute;
- padding: 0;
- margin: 0;
- border: 0;
- width: 20px;
- height: 20px;
- z-index: 1001;
-}
-
-#fancybox-bg-n {
- top: -20px;
- left: 0;
- width: 100%;
- background-image: url('fancybox-x.png');
-}
-
-#fancybox-bg-ne {
- top: -20px;
- right: -20px;
- background-image: url('fancybox.png');
- background-position: -40px -162px;
-}
-
-#fancybox-bg-e {
- top: 0;
- right: -20px;
- height: 100%;
- background-image: url('fancybox-y.png');
- background-position: -20px 0px;
-}
-
-#fancybox-bg-se {
- bottom: -20px;
- right: -20px;
- background-image: url('fancybox.png');
- background-position: -40px -182px;
-}
-
-#fancybox-bg-s {
- bottom: -20px;
- left: 0;
- width: 100%;
- background-image: url('fancybox-x.png');
- background-position: 0px -20px;
-}
-
-#fancybox-bg-sw {
- bottom: -20px;
- left: -20px;
- background-image: url('fancybox.png');
- background-position: -40px -142px;
-}
-
-#fancybox-bg-w {
- top: 0;
- left: -20px;
- height: 100%;
- background-image: url('fancybox-y.png');
-}
-
-#fancybox-bg-nw {
- top: -20px;
- left: -20px;
- background-image: url('fancybox.png');
- background-position: -40px -122px;
-}
-
-#fancybox-title {
- font-family: Helvetica;
- font-size: 12px;
- z-index: 1102;
-}
-
-.fancybox-title-inside {
- padding-bottom: 10px;
- text-align: center;
- color: #333;
- background: #fff;
- position: relative;
-}
-
-.fancybox-title-outside {
- padding-top: 10px;
- color: #fff;
-}
-
-.fancybox-title-over {
- position: absolute;
- bottom: 0;
- left: 0;
- color: #FFF;
- text-align: left;
-}
-
-#fancybox-title-over {
- padding: 10px;
- background-image: url('fancy_title_over.png');
- display: block;
-}
-
-.fancybox-title-float {
- position: absolute;
- left: 0;
- bottom: -20px;
- height: 32px;
-}
-
-#fancybox-title-float-wrap {
- border: none;
- border-collapse: collapse;
- width: auto;
-}
-
-#fancybox-title-float-wrap td {
- border: none;
- white-space: nowrap;
-}
-
-#fancybox-title-float-left {
- padding: 0 0 0 15px;
- background: url('fancybox.png') -40px -90px no-repeat;
-}
-
-#fancybox-title-float-main {
- color: #FFF;
- line-height: 29px;
- font-weight: bold;
- padding: 0 0 3px 0;
- background: url('fancybox-x.png') 0px -40px;
-}
-
-#fancybox-title-float-right {
- padding: 0 0 0 15px;
- background: url('fancybox.png') -55px -90px no-repeat;
-}
-
-/* IE6 */
-
-.fancybox-ie6 #fancybox-close { background: transparent; filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src='fancybox/fancy_close.png', sizingMethod='scale'); }
-
-.fancybox-ie6 #fancybox-left-ico { background: transparent; filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src='fancybox/fancy_nav_left.png', sizingMethod='scale'); }
-.fancybox-ie6 #fancybox-right-ico { background: transparent; filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src='fancybox/fancy_nav_right.png', sizingMethod='scale'); }
-
-.fancybox-ie6 #fancybox-title-over { background: transparent; filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src='fancybox/fancy_title_over.png', sizingMethod='scale'); zoom: 1; }
-.fancybox-ie6 #fancybox-title-float-left { background: transparent; filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src='fancybox/fancy_title_left.png', sizingMethod='scale'); }
-.fancybox-ie6 #fancybox-title-float-main { background: transparent; filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src='fancybox/fancy_title_main.png', sizingMethod='scale'); }
-.fancybox-ie6 #fancybox-title-float-right { background: transparent; filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src='fancybox/fancy_title_right.png', sizingMethod='scale'); }
-
-.fancybox-ie6 #fancybox-bg-w, .fancybox-ie6 #fancybox-bg-e, .fancybox-ie6 #fancybox-left, .fancybox-ie6 #fancybox-right, #fancybox-hide-sel-frame {
- height: expression(this.parentNode.clientHeight + "px");
-}
-
-#fancybox-loading.fancybox-ie6 {
- position: absolute; margin-top: 0;
- top: expression( (-20 + (document.documentElement.clientHeight ? document.documentElement.clientHeight/2 : document.body.clientHeight/2 ) + ( ignoreMe = document.documentElement.scrollTop ? document.documentElement.scrollTop : document.body.scrollTop )) + 'px');
-}
-
-#fancybox-loading.fancybox-ie6 div { background: transparent; filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src='fancybox/fancy_loading.png', sizingMethod='scale'); }
-
-/* IE6, IE7, IE8 */
-
-.fancybox-ie .fancybox-bg { background: transparent !important; }
-
-.fancybox-ie #fancybox-bg-n { filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src='fancybox/fancy_shadow_n.png', sizingMethod='scale'); }
-.fancybox-ie #fancybox-bg-ne { filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src='fancybox/fancy_shadow_ne.png', sizingMethod='scale'); }
-.fancybox-ie #fancybox-bg-e { filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src='fancybox/fancy_shadow_e.png', sizingMethod='scale'); }
-.fancybox-ie #fancybox-bg-se { filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src='fancybox/fancy_shadow_se.png', sizingMethod='scale'); }
-.fancybox-ie #fancybox-bg-s { filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src='fancybox/fancy_shadow_s.png', sizingMethod='scale'); }
-.fancybox-ie #fancybox-bg-sw { filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src='fancybox/fancy_shadow_sw.png', sizingMethod='scale'); }
-.fancybox-ie #fancybox-bg-w { filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src='fancybox/fancy_shadow_w.png', sizingMethod='scale'); }
-.fancybox-ie #fancybox-bg-nw { filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src='fancybox/fancy_shadow_nw.png', sizingMethod='scale'); } \ No newline at end of file
diff --git a/library/fancybox/jquery.fancybox-1.3.4.js b/library/fancybox/jquery.fancybox-1.3.4.js
deleted file mode 100644
index 43e2cd56b..000000000
--- a/library/fancybox/jquery.fancybox-1.3.4.js
+++ /dev/null
@@ -1,1157 +0,0 @@
-/*
- * FancyBox - jQuery Plugin
- * Simple and fancy lightbox alternative
- *
- * Examples and documentation at: http://fancybox.net
- *
- * Copyright (c) 2008 - 2010 Janis Skarnelis
- * That said, it is hardly a one-person project. Many people have submitted bugs, code, and offered their advice freely. Their support is greatly appreciated.
- *
- * Version: 1.3.4 (11/11/2010)
- * Requires: jQuery v1.3+
- *
- * Dual licensed under the MIT and GPL licenses:
- * http://www.opensource.org/licenses/mit-license.php
- * http://www.gnu.org/licenses/gpl.html
- */
-
-;(function($) {
- var tmp, loading, overlay, wrap, outer, content, close, title, nav_left, nav_right,
-
- selectedIndex = 0, selectedOpts = {}, selectedArray = [], currentIndex = 0, currentOpts = {}, currentArray = [],
-
- ajaxLoader = null, imgPreloader = new Image(), imgRegExp = /\.(jpg|gif|png|bmp|jpeg)(.*)?$/i, swfRegExp = /[^\.]\.(swf)\s*$/i,
-
- loadingTimer, loadingFrame = 1,
-
- titleHeight = 0, titleStr = '', start_pos, final_pos, busy = false, fx = $.extend($('<div/>')[0], { prop: 0 }),
-
- isIE6 = false,
-// $.browser.msie && $.browser.version < 7 && !window.XMLHttpRequest,
-
- /*
- * Private methods
- */
-
- _abort = function() {
- loading.hide();
-
- imgPreloader.onerror = imgPreloader.onload = null;
-
- if (ajaxLoader) {
- ajaxLoader.abort();
- }
-
- tmp.empty();
- },
-
- _error = function() {
- if (false === selectedOpts.onError(selectedArray, selectedIndex, selectedOpts)) {
- loading.hide();
- busy = false;
- return;
- }
-
- selectedOpts.titleShow = false;
-
- selectedOpts.width = 'auto';
- selectedOpts.height = 'auto';
-
- tmp.html( '<p id="fancybox-error">The requested content cannot be loaded.<br />Please try again later.</p>' );
-
- _process_inline();
- },
-
- _start = function() {
- var obj = selectedArray[ selectedIndex ],
- href,
- type,
- title,
- str,
- emb,
- ret;
-
- _abort();
-
- selectedOpts = $.extend({}, $.fn.fancybox.defaults, (typeof $(obj).data('fancybox') == 'undefined' ? selectedOpts : $(obj).data('fancybox')));
-
- ret = selectedOpts.onStart(selectedArray, selectedIndex, selectedOpts);
-
- if (ret === false) {
- busy = false;
- return;
- } else if (typeof ret == 'object') {
- selectedOpts = $.extend(selectedOpts, ret);
- }
-
- title = selectedOpts.title || (obj.nodeName ? $(obj).attr('title') : obj.title) || '';
-
- if (obj.nodeName && !selectedOpts.orig) {
- selectedOpts.orig = $(obj).children("img:first").length ? $(obj).children("img:first") : $(obj);
- }
-
- if (title === '' && selectedOpts.orig && selectedOpts.titleFromAlt) {
- title = selectedOpts.orig.attr('alt');
- }
-
- href = selectedOpts.href || (obj.nodeName ? $(obj).attr('href') : obj.href) || null;
-
- if ((/^(?:javascript)/i).test(href) || href == '#') {
- href = null;
- }
-
- if (selectedOpts.type) {
- type = selectedOpts.type;
-
- if (!href) {
- href = selectedOpts.content;
- }
-
- } else if (selectedOpts.content) {
- type = 'html';
-
- } else if (href) {
- if (href.match(imgRegExp)) {
- type = 'image';
-
- } else if (href.match(swfRegExp)) {
- type = 'swf';
-
- } else if ($(obj).hasClass("iframe")) {
- type = 'iframe';
-
- } else if (href.indexOf("#") === 0) {
- type = 'inline';
-
- } else {
- type = 'ajax';
- }
- }
-
- if (!type) {
- _error();
- return;
- }
-
- if (type == 'inline') {
- obj = href.substr(href.indexOf("#"));
- type = $(obj).length > 0 ? 'inline' : 'ajax';
- }
-
- selectedOpts.type = type;
- selectedOpts.href = href;
- selectedOpts.title = title;
-
- if (selectedOpts.autoDimensions) {
- if (selectedOpts.type == 'html' || selectedOpts.type == 'inline' || selectedOpts.type == 'ajax') {
- selectedOpts.width = 'auto';
- selectedOpts.height = 'auto';
- } else {
- selectedOpts.autoDimensions = false;
- }
- }
-
- if (selectedOpts.modal) {
- selectedOpts.overlayShow = true;
- selectedOpts.hideOnOverlayClick = false;
- selectedOpts.hideOnContentClick = false;
- selectedOpts.enableEscapeButton = false;
- selectedOpts.showCloseButton = false;
- }
-
- selectedOpts.padding = parseInt(selectedOpts.padding, 10);
- selectedOpts.margin = parseInt(selectedOpts.margin, 10);
-
- tmp.css('padding', (selectedOpts.padding + selectedOpts.margin));
-
- $('.fancybox-inline-tmp').unbind('fancybox-cancel').bind('fancybox-change', function() {
- $(this).replaceWith(content.children());
- });
-
- switch (type) {
- case 'html' :
- tmp.html( selectedOpts.content );
- _process_inline();
- break;
-
- case 'inline' :
- if ( $(obj).parent().is('#fancybox-content') === true) {
- busy = false;
- return;
- }
-
- $('<div class="fancybox-inline-tmp" />')
- .hide()
- .insertBefore( $(obj) )
- .bind('fancybox-cleanup', function() {
- $(this).replaceWith(content.children());
- }).bind('fancybox-cancel', function() {
- $(this).replaceWith(tmp.children());
- });
-
- $(obj).appendTo(tmp);
-
- _process_inline();
- break;
-
- case 'image':
- busy = false;
-
- $.fancybox.showActivity();
-
- imgPreloader = new Image();
-
- imgPreloader.onerror = function() {
- _error();
- };
-
- imgPreloader.onload = function() {
- busy = true;
-
- imgPreloader.onerror = imgPreloader.onload = null;
-
- _process_image();
- };
-
- imgPreloader.src = href;
- break;
-
- case 'swf':
- selectedOpts.scrolling = 'no';
-
- str = '<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" width="' + selectedOpts.width + '" height="' + selectedOpts.height + '"><param name="movie" value="' + href + '"></param>';
- emb = '';
-
- $.each(selectedOpts.swf, function(name, val) {
- str += '<param name="' + name + '" value="' + val + '"></param>';
- emb += ' ' + name + '="' + val + '"';
- });
-
- str += '<embed src="' + href + '" type="application/x-shockwave-flash" width="' + selectedOpts.width + '" height="' + selectedOpts.height + '"' + emb + '></embed></object>';
-
- tmp.html(str);
-
- _process_inline();
- break;
-
- case 'ajax':
- busy = false;
-
- $.fancybox.showActivity();
-
- selectedOpts.ajax.win = selectedOpts.ajax.success;
-
- ajaxLoader = $.ajax($.extend({}, selectedOpts.ajax, {
- url : href,
- data : selectedOpts.ajax.data || {},
- error : function(XMLHttpRequest, textStatus, errorThrown) {
- if ( XMLHttpRequest.status > 0 ) {
- _error();
- }
- },
- success : function(data, textStatus, XMLHttpRequest) {
- var o = typeof XMLHttpRequest == 'object' ? XMLHttpRequest : ajaxLoader;
- if (o.status == 200) {
- if ( typeof selectedOpts.ajax.win == 'function' ) {
- ret = selectedOpts.ajax.win(href, data, textStatus, XMLHttpRequest);
-
- if (ret === false) {
- loading.hide();
- return;
- } else if (typeof ret == 'string' || typeof ret == 'object') {
- data = ret;
- }
- }
-
- tmp.html( data );
- _process_inline();
- }
- }
- }));
-
- break;
-
- case 'iframe':
- _show();
- break;
- }
- },
-
- _process_inline = function() {
- var
- w = selectedOpts.width,
- h = selectedOpts.height;
-
- if (w.toString().indexOf('%') > -1) {
- w = parseInt( ($(window).width() - (selectedOpts.margin * 2)) * parseFloat(w) / 100, 10) + 'px';
-
- } else {
- w = w == 'auto' ? 'auto' : w + 'px';
- }
-
- if (h.toString().indexOf('%') > -1) {
- h = parseInt( ($(window).height() - (selectedOpts.margin * 2)) * parseFloat(h) / 100, 10) + 'px';
-
- } else {
- h = h == 'auto' ? 'auto' : h + 'px';
- }
-
- tmp.wrapInner('<div style="width:' + w + ';height:' + h + ';overflow: ' + (selectedOpts.scrolling == 'auto' ? 'auto' : (selectedOpts.scrolling == 'yes' ? 'scroll' : 'hidden')) + ';position:relative;"></div>');
-
- selectedOpts.width = tmp.width();
- selectedOpts.height = tmp.height();
-
- _show();
- },
-
- _process_image = function() {
- selectedOpts.width = imgPreloader.width;
- selectedOpts.height = imgPreloader.height;
-
- $("<img />").attr({
- 'id' : 'fancybox-img',
- 'src' : imgPreloader.src,
- 'alt' : selectedOpts.title
- }).appendTo( tmp );
-
- _show();
- },
-
- _show = function() {
- var pos, equal;
-
- loading.hide();
-
- if (wrap.is(":visible") && false === currentOpts.onCleanup(currentArray, currentIndex, currentOpts)) {
- $.event.trigger('fancybox-cancel');
-
- busy = false;
- return;
- }
-
- busy = true;
-
- $(content.add( overlay )).unbind();
-
- $(window).unbind("resize.fb scroll.fb");
- $(document).unbind('keydown.fb');
-
- if (wrap.is(":visible") && currentOpts.titlePosition !== 'outside') {
- wrap.css('height', wrap.height());
- }
-
- currentArray = selectedArray;
- currentIndex = selectedIndex;
- currentOpts = selectedOpts;
-
- if (currentOpts.overlayShow) {
- overlay.css({
- 'background-color' : currentOpts.overlayColor,
- 'opacity' : currentOpts.overlayOpacity,
- 'cursor' : currentOpts.hideOnOverlayClick ? 'pointer' : 'auto',
- 'height' : $(document).height()
- });
-
- if (!overlay.is(':visible')) {
- if (isIE6) {
- $('select:not(#fancybox-tmp select)').filter(function() {
- return this.style.visibility !== 'hidden';
- }).css({'visibility' : 'hidden'}).one('fancybox-cleanup', function() {
- this.style.visibility = 'inherit';
- });
- }
-
- overlay.show();
- }
- } else {
- overlay.hide();
- }
-
- final_pos = _get_zoom_to();
-
- _process_title();
-
- if (wrap.is(":visible")) {
- $( close.add( nav_left ).add( nav_right ) ).hide();
-
- pos = wrap.position(),
-
- start_pos = {
- top : pos.top,
- left : pos.left,
- width : wrap.width(),
- height : wrap.height()
- };
-
- equal = (start_pos.width == final_pos.width && start_pos.height == final_pos.height);
-
- content.fadeTo(currentOpts.changeFade, 0.3, function() {
- var finish_resizing = function() {
- content.html( tmp.contents() ).fadeTo(currentOpts.changeFade, 1, _finish);
- };
-
- $.event.trigger('fancybox-change');
-
- content
- .empty()
- .removeAttr('filter')
- .css({
- 'border-width' : currentOpts.padding,
- 'width' : final_pos.width - currentOpts.padding * 2,
- 'height' : selectedOpts.autoDimensions ? 'auto' : final_pos.height - titleHeight - currentOpts.padding * 2
- });
-
- if (equal) {
- finish_resizing();
-
- } else {
- fx.prop = 0;
-
- $(fx).animate({prop: 1}, {
- duration : currentOpts.changeSpeed,
- easing : currentOpts.easingChange,
- step : _draw,
- complete : finish_resizing
- });
- }
- });
-
- return;
- }
-
- wrap.removeAttr("style");
-
- content.css('border-width', currentOpts.padding);
-
- if (currentOpts.transitionIn == 'elastic') {
- start_pos = _get_zoom_from();
-
- content.html( tmp.contents() );
-
- wrap.show();
-
- if (currentOpts.opacity) {
- final_pos.opacity = 0;
- }
-
- fx.prop = 0;
-
- $(fx).animate({prop: 1}, {
- duration : currentOpts.speedIn,
- easing : currentOpts.easingIn,
- step : _draw,
- complete : _finish
- });
-
- return;
- }
-
- if (currentOpts.titlePosition == 'inside' && titleHeight > 0) {
- title.show();
- }
-
- content
- .css({
- 'width' : final_pos.width - currentOpts.padding * 2,
- 'height' : selectedOpts.autoDimensions ? 'auto' : final_pos.height - titleHeight - currentOpts.padding * 2
- })
- .html( tmp.contents() );
-
- wrap
- .css(final_pos)
- .fadeIn( currentOpts.transitionIn == 'none' ? 0 : currentOpts.speedIn, _finish );
- },
-
- _format_title = function(title) {
- if (title && title.length) {
- if (currentOpts.titlePosition == 'float') {
- return '<table id="fancybox-title-float-wrap" cellpadding="0" cellspacing="0"><tr><td id="fancybox-title-float-left"></td><td id="fancybox-title-float-main">' + title + '</td><td id="fancybox-title-float-right"></td></tr></table>';
- }
-
- return '<div id="fancybox-title-' + currentOpts.titlePosition + '">' + title + '</div>';
- }
-
- return false;
- },
-
- _process_title = function() {
- titleStr = currentOpts.title || '';
- titleHeight = 0;
-
- title
- .empty()
- .removeAttr('style')
- .removeClass();
-
- if (currentOpts.titleShow === false) {
- title.hide();
- return;
- }
-
- titleStr = $.isFunction(currentOpts.titleFormat) ? currentOpts.titleFormat(titleStr, currentArray, currentIndex, currentOpts) : _format_title(titleStr);
-
- if (!titleStr || titleStr === '') {
- title.hide();
- return;
- }
-
- title
- .addClass('fancybox-title-' + currentOpts.titlePosition)
- .html( titleStr )
- .appendTo( 'body' )
- .show();
-
- switch (currentOpts.titlePosition) {
- case 'inside':
- title
- .css({
- 'width' : final_pos.width - (currentOpts.padding * 2),
- 'marginLeft' : currentOpts.padding,
- 'marginRight' : currentOpts.padding
- });
-
- titleHeight = title.outerHeight(true);
-
- title.appendTo( outer );
-
- final_pos.height += titleHeight;
- break;
-
- case 'over':
- title
- .css({
- 'marginLeft' : currentOpts.padding,
- 'width' : final_pos.width - (currentOpts.padding * 2),
- 'bottom' : currentOpts.padding
- })
- .appendTo( outer );
- break;
-
- case 'float':
- title
- .css('left', parseInt((title.width() - final_pos.width - 40)/ 2, 10) * -1)
- .appendTo( wrap );
- break;
-
- default:
- title
- .css({
- 'width' : final_pos.width - (currentOpts.padding * 2),
- 'paddingLeft' : currentOpts.padding,
- 'paddingRight' : currentOpts.padding
- })
- .appendTo( wrap );
- break;
- }
-
- title.hide();
- },
-
- _set_navigation = function() {
- if (currentOpts.enableEscapeButton || currentOpts.enableKeyboardNav) {
- $(document).bind('keydown.fb', function(e) {
- if (e.keyCode == 27 && currentOpts.enableEscapeButton) {
- e.preventDefault();
- $.fancybox.close();
-
- } else if ((e.keyCode == 37 || e.keyCode == 39) && currentOpts.enableKeyboardNav && e.target.tagName !== 'INPUT' && e.target.tagName !== 'TEXTAREA' && e.target.tagName !== 'SELECT') {
- e.preventDefault();
- $.fancybox[ e.keyCode == 37 ? 'prev' : 'next']();
- }
- });
- }
-
- if (!currentOpts.showNavArrows) {
- nav_left.hide();
- nav_right.hide();
- return;
- }
-
- if ((currentOpts.cyclic && currentArray.length > 1) || currentIndex !== 0) {
- nav_left.show();
- }
-
- if ((currentOpts.cyclic && currentArray.length > 1) || currentIndex != (currentArray.length -1)) {
- nav_right.show();
- }
- },
-
- _finish = function () {
- if (!$.support.opacity) {
- content.get(0).style.removeAttribute('filter');
- wrap.get(0).style.removeAttribute('filter');
- }
-
- if (selectedOpts.autoDimensions) {
- content.css('height', 'auto');
- }
-
- wrap.css('height', 'auto');
-
- if (titleStr && titleStr.length) {
- title.show();
- }
-
- if (currentOpts.showCloseButton) {
- close.show();
- }
-
- _set_navigation();
-
- if (currentOpts.hideOnContentClick) {
- content.bind('click', $.fancybox.close);
- }
-
- if (currentOpts.hideOnOverlayClick) {
- overlay.bind('click', $.fancybox.close);
- }
-
- $(window).bind("resize.fb", $.fancybox.resize);
-
- if (currentOpts.centerOnScroll) {
- $(window).bind("scroll.fb", $.fancybox.center);
- }
-
- if (currentOpts.type == 'iframe') {
- $('<iframe id="fancybox-frame" name="fancybox-frame' + new Date().getTime() + '" frameborder="0" hspace="0" ' + ' scrolling="' + selectedOpts.scrolling + '" src="' + currentOpts.href + '"></iframe>').appendTo(content);
- }
-
- wrap.show();
-
- busy = false;
-
- $.fancybox.center();
-
- currentOpts.onComplete(currentArray, currentIndex, currentOpts);
-
- _preload_images();
- },
-
- _preload_images = function() {
- var href,
- objNext;
-
- if ((currentArray.length -1) > currentIndex) {
- href = currentArray[ currentIndex + 1 ].href;
-
- if (typeof href !== 'undefined' && href.match(imgRegExp)) {
- objNext = new Image();
- objNext.src = href;
- }
- }
-
- if (currentIndex > 0) {
- href = currentArray[ currentIndex - 1 ].href;
-
- if (typeof href !== 'undefined' && href.match(imgRegExp)) {
- objNext = new Image();
- objNext.src = href;
- }
- }
- },
-
- _draw = function(pos) {
- var dim = {
- width : parseInt(start_pos.width + (final_pos.width - start_pos.width) * pos, 10),
- height : parseInt(start_pos.height + (final_pos.height - start_pos.height) * pos, 10),
-
- top : parseInt(start_pos.top + (final_pos.top - start_pos.top) * pos, 10),
- left : parseInt(start_pos.left + (final_pos.left - start_pos.left) * pos, 10)
- };
-
- if (typeof final_pos.opacity !== 'undefined') {
- dim.opacity = pos < 0.5 ? 0.5 : pos;
- }
-
- wrap.css(dim);
-
- content.css({
- 'width' : dim.width - currentOpts.padding * 2,
- 'height' : dim.height - (titleHeight * pos) - currentOpts.padding * 2
- });
- },
-
- _get_viewport = function() {
- return [
- $(window).width() - (currentOpts.margin * 2),
- $(window).height() - (currentOpts.margin * 2),
- $(document).scrollLeft() + currentOpts.margin,
- $(document).scrollTop() + currentOpts.margin
- ];
- },
-
- _get_zoom_to = function () {
- var view = _get_viewport(),
- to = {},
- resize = currentOpts.autoScale,
- double_padding = currentOpts.padding * 2,
- ratio;
-
- if (currentOpts.width.toString().indexOf('%') > -1) {
- to.width = parseInt((view[0] * parseFloat(currentOpts.width)) / 100, 10);
- } else {
- to.width = currentOpts.width + double_padding;
- }
-
- if (currentOpts.height.toString().indexOf('%') > -1) {
- to.height = parseInt((view[1] * parseFloat(currentOpts.height)) / 100, 10);
- } else {
- to.height = currentOpts.height + double_padding;
- }
-
- if (resize && (to.width > view[0] || to.height > view[1])) {
- if (selectedOpts.type == 'image' || selectedOpts.type == 'swf') {
- ratio = (currentOpts.width ) / (currentOpts.height );
-
- if ((to.width ) > view[0]) {
- to.width = view[0];
- to.height = parseInt(((to.width - double_padding) / ratio) + double_padding, 10);
- }
-
- if ((to.height) > view[1]) {
- to.height = view[1];
- to.width = parseInt(((to.height - double_padding) * ratio) + double_padding, 10);
- }
-
- } else {
- to.width = Math.min(to.width, view[0]);
- to.height = Math.min(to.height, view[1]);
- }
- }
-
- to.top = parseInt(Math.max(view[3] - 20, view[3] + ((view[1] - to.height - 40) * 0.5)), 10);
- to.left = parseInt(Math.max(view[2] - 20, view[2] + ((view[0] - to.width - 40) * 0.5)), 10);
-
- return to;
- },
-
- _get_obj_pos = function(obj) {
- var pos = obj.offset();
-
- pos.top += parseInt( obj.css('paddingTop'), 10 ) || 0;
- pos.left += parseInt( obj.css('paddingLeft'), 10 ) || 0;
-
- pos.top += parseInt( obj.css('border-top-width'), 10 ) || 0;
- pos.left += parseInt( obj.css('border-left-width'), 10 ) || 0;
-
- pos.width = obj.width();
- pos.height = obj.height();
-
- return pos;
- },
-
- _get_zoom_from = function() {
- var orig = selectedOpts.orig ? $(selectedOpts.orig) : false,
- from = {},
- pos,
- view;
-
- if (orig && orig.length) {
- pos = _get_obj_pos(orig);
-
- from = {
- width : pos.width + (currentOpts.padding * 2),
- height : pos.height + (currentOpts.padding * 2),
- top : pos.top - currentOpts.padding - 20,
- left : pos.left - currentOpts.padding - 20
- };
-
- } else {
- view = _get_viewport();
-
- from = {
- width : currentOpts.padding * 2,
- height : currentOpts.padding * 2,
- top : parseInt(view[3] + view[1] * 0.5, 10),
- left : parseInt(view[2] + view[0] * 0.5, 10)
- };
- }
-
- return from;
- },
-
- _animate_loading = function() {
- if (!loading.is(':visible')){
- clearInterval(loadingTimer);
- return;
- }
-
- $('div', loading).css('top', (loadingFrame * -40) + 'px');
-
- loadingFrame = (loadingFrame + 1) % 12;
- };
-
- /*
- * Public methods
- */
-
- $.fn.fancybox = function(options) {
- if (!$(this).length) {
- return this;
- }
-
- $(this)
- .data('fancybox', $.extend({}, options, ($.metadata ? $(this).metadata() : {})))
- .unbind('click.fb')
- .bind('click.fb', function(e) {
- e.preventDefault();
-
- if (busy) {
- return;
- }
-
- busy = true;
-
- $(this).blur();
-
- selectedArray = [];
- selectedIndex = 0;
-
- var rel = $(this).attr('rel') || '';
-
- if (!rel || rel == '' || rel === 'nofollow') {
- selectedArray.push(this);
-
- } else {
- selectedArray = $("a[rel=" + rel + "], area[rel=" + rel + "]");
- selectedIndex = selectedArray.index( this );
- }
-
- _start();
-
- return;
- });
-
- return this;
- };
-
- $.fancybox = function(obj) {
- var opts;
-
- if (busy) {
- return;
- }
-
- busy = true;
- opts = typeof arguments[1] !== 'undefined' ? arguments[1] : {};
-
- selectedArray = [];
- selectedIndex = parseInt(opts.index, 10) || 0;
-
- if ($.isArray(obj)) {
- for (var i = 0, j = obj.length; i < j; i++) {
- if (typeof obj[i] == 'object') {
- $(obj[i]).data('fancybox', $.extend({}, opts, obj[i]));
- } else {
- obj[i] = $({}).data('fancybox', $.extend({content : obj[i]}, opts));
- }
- }
-
- selectedArray = jQuery.merge(selectedArray, obj);
-
- } else {
- if (typeof obj == 'object') {
- $(obj).data('fancybox', $.extend({}, opts, obj));
- } else {
- obj = $({}).data('fancybox', $.extend({content : obj}, opts));
- }
-
- selectedArray.push(obj);
- }
-
- if (selectedIndex > selectedArray.length || selectedIndex < 0) {
- selectedIndex = 0;
- }
-
- _start();
- };
-
- $.fancybox.showActivity = function() {
- clearInterval(loadingTimer);
-
- loading.show();
- loadingTimer = setInterval(_animate_loading, 66);
- };
-
- $.fancybox.hideActivity = function() {
- loading.hide();
- };
-
- $.fancybox.next = function() {
- return $.fancybox.pos( currentIndex + 1);
- };
-
- $.fancybox.prev = function() {
- return $.fancybox.pos( currentIndex - 1);
- };
-
- $.fancybox.pos = function(pos) {
- if (busy) {
- return;
- }
-
- pos = parseInt(pos);
-
- selectedArray = currentArray;
-
- if (pos > -1 && pos < currentArray.length) {
- selectedIndex = pos;
- _start();
-
- } else if (currentOpts.cyclic && currentArray.length > 1) {
- selectedIndex = pos >= currentArray.length ? 0 : currentArray.length - 1;
- _start();
- }
-
- return;
- };
-
- $.fancybox.cancel = function() {
- if (busy) {
- return;
- }
-
- busy = true;
-
- $.event.trigger('fancybox-cancel');
-
- _abort();
-
- selectedOpts.onCancel(selectedArray, selectedIndex, selectedOpts);
-
- busy = false;
- };
-
- // Note: within an iframe use - parent.$.fancybox.close();
- $.fancybox.close = function() {
- if (busy || wrap.is(':hidden')) {
- return;
- }
-
- busy = true;
-
- if (currentOpts && false === currentOpts.onCleanup(currentArray, currentIndex, currentOpts)) {
- busy = false;
- return;
- }
-
- _abort();
-
- $(close.add( nav_left ).add( nav_right )).hide();
-
- $(content.add( overlay )).unbind();
-
- $(window).unbind("resize.fb scroll.fb");
- $(document).unbind('keydown.fb');
-
- content.find('iframe').attr('src', isIE6 && /^https/i.test(window.location.href || '') ? 'javascript:void(false)' : 'about:blank');
-
- if (currentOpts.titlePosition !== 'inside') {
- title.empty();
- }
-
- wrap.stop();
-
- function _cleanup() {
- overlay.fadeOut('fast');
-
- title.empty().hide();
- wrap.hide();
-
- $.event.trigger('fancybox-cleanup');
-
- content.empty();
-
- currentOpts.onClosed(currentArray, currentIndex, currentOpts);
-
- currentArray = selectedOpts = [];
- currentIndex = selectedIndex = 0;
- currentOpts = selectedOpts = {};
-
- busy = false;
- }
-
- if (currentOpts.transitionOut == 'elastic') {
- start_pos = _get_zoom_from();
-
- var pos = wrap.position();
-
- final_pos = {
- top : pos.top ,
- left : pos.left,
- width : wrap.width(),
- height : wrap.height()
- };
-
- if (currentOpts.opacity) {
- final_pos.opacity = 1;
- }
-
- title.empty().hide();
-
- fx.prop = 1;
-
- $(fx).animate({ prop: 0 }, {
- duration : currentOpts.speedOut,
- easing : currentOpts.easingOut,
- step : _draw,
- complete : _cleanup
- });
-
- } else {
- wrap.fadeOut( currentOpts.transitionOut == 'none' ? 0 : currentOpts.speedOut, _cleanup);
- }
- };
-
- $.fancybox.resize = function() {
- if (overlay.is(':visible')) {
- overlay.css('height', $(document).height());
- }
-
- $.fancybox.center(true);
- };
-
- $.fancybox.center = function() {
- var view, align;
-
- if (busy) {
- return;
- }
-
- align = arguments[0] === true ? 1 : 0;
- view = _get_viewport();
-
- if (!align && (wrap.width() > view[0] || wrap.height() > view[1])) {
- return;
- }
-
- wrap
- .stop()
- .animate({
- 'top' : parseInt(Math.max(view[3] - 20, view[3] + ((view[1] - content.height() - 40) * 0.5) - currentOpts.padding)),
- 'left' : parseInt(Math.max(view[2] - 20, view[2] + ((view[0] - content.width() - 40) * 0.5) - currentOpts.padding))
- }, typeof arguments[0] == 'number' ? arguments[0] : 200);
- };
-
- $.fancybox.init = function() {
- if ($("#fancybox-wrap").length) {
- return;
- }
-
- $('body').append(
- tmp = $('<div id="fancybox-tmp"></div>'),
- loading = $('<div id="fancybox-loading"><div></div></div>'),
- overlay = $('<div id="fancybox-overlay"></div>'),
- wrap = $('<div id="fancybox-wrap"></div>')
- );
-
- outer = $('<div id="fancybox-outer"></div>')
- .append('<div class="fancybox-bg" id="fancybox-bg-n"></div><div class="fancybox-bg" id="fancybox-bg-ne"></div><div class="fancybox-bg" id="fancybox-bg-e"></div><div class="fancybox-bg" id="fancybox-bg-se"></div><div class="fancybox-bg" id="fancybox-bg-s"></div><div class="fancybox-bg" id="fancybox-bg-sw"></div><div class="fancybox-bg" id="fancybox-bg-w"></div><div class="fancybox-bg" id="fancybox-bg-nw"></div>')
- .appendTo( wrap );
-
- outer.append(
- content = $('<div id="fancybox-content"></div>'),
- close = $('<a id="fancybox-close"></a>'),
- title = $('<div id="fancybox-title"></div>'),
-
- nav_left = $('<a href="javascript:;" id="fancybox-left"><span class="fancy-ico" id="fancybox-left-ico"></span></a>'),
- nav_right = $('<a href="javascript:;" id="fancybox-right"><span class="fancy-ico" id="fancybox-right-ico"></span></a>')
- );
-
- close.click($.fancybox.close);
- loading.click($.fancybox.cancel);
-
- nav_left.click(function(e) {
- e.preventDefault();
- $.fancybox.prev();
- });
-
- nav_right.click(function(e) {
- e.preventDefault();
- $.fancybox.next();
- });
-
- if ($.fn.mousewheel) {
- wrap.bind('mousewheel.fb', function(e, delta) {
- if (busy) {
- e.preventDefault();
-
- } else if ($(e.target).get(0).clientHeight == 0 || $(e.target).get(0).scrollHeight === $(e.target).get(0).clientHeight) {
- e.preventDefault();
- $.fancybox[ delta > 0 ? 'prev' : 'next']();
- }
- });
- }
-
- if (!$.support.opacity) {
- wrap.addClass('fancybox-ie');
- }
-
- if (isIE6) {
- loading.addClass('fancybox-ie6');
- wrap.addClass('fancybox-ie6');
-
- $('<iframe id="fancybox-hide-sel-frame" src="' + (/^https/i.test(window.location.href || '') ? 'javascript:void(false)' : 'about:blank' ) + '" scrolling="no" border="0" frameborder="0" tabindex="-1"></iframe>').prependTo(outer);
- }
- };
-
- $.fn.fancybox.defaults = {
- padding : 10,
- margin : 40,
- opacity : false,
- modal : false,
- cyclic : false,
- scrolling : 'auto', // 'auto', 'yes' or 'no'
-
- width : 560,
- height : 340,
-
- autoScale : true,
- autoDimensions : true,
- centerOnScroll : false,
-
- ajax : {},
- swf : { wmode: 'transparent' },
-
- hideOnOverlayClick : true,
- hideOnContentClick : false,
-
- overlayShow : true,
- overlayOpacity : 0.7,
- overlayColor : '#777',
-
- titleShow : true,
- titlePosition : 'float', // 'float', 'outside', 'inside' or 'over'
- titleFormat : null,
- titleFromAlt : false,
-
- transitionIn : 'fade', // 'elastic', 'fade' or 'none'
- transitionOut : 'fade', // 'elastic', 'fade' or 'none'
-
- speedIn : 300,
- speedOut : 300,
-
- changeSpeed : 300,
- changeFade : 'fast',
-
- easingIn : 'swing',
- easingOut : 'swing',
-
- showCloseButton : true,
- showNavArrows : true,
- enableEscapeButton : true,
- enableKeyboardNav : true,
-
- onStart : function(){},
- onCancel : function(){},
- onComplete : function(){},
- onCleanup : function(){},
- onClosed : function(){},
- onError : function(){}
- };
-
- $(document).ready(function() {
- $.fancybox.init();
- });
-
-})(jQuery); \ No newline at end of file
diff --git a/library/fancybox/jquery.fancybox-1.3.4.pack.js b/library/fancybox/jquery.fancybox-1.3.4.pack.js
deleted file mode 100644
index 1373ed083..000000000
--- a/library/fancybox/jquery.fancybox-1.3.4.pack.js
+++ /dev/null
@@ -1,46 +0,0 @@
-/*
- * FancyBox - jQuery Plugin
- * Simple and fancy lightbox alternative
- *
- * Examples and documentation at: http://fancybox.net
- *
- * Copyright (c) 2008 - 2010 Janis Skarnelis
- * That said, it is hardly a one-person project. Many people have submitted bugs, code, and offered their advice freely. Their support is greatly appreciated.
- *
- * Version: 1.3.4 (11/11/2010)
- * Requires: jQuery v1.3+
- *
- * Dual licensed under the MIT and GPL licenses:
- * http://www.opensource.org/licenses/mit-license.php
- * http://www.gnu.org/licenses/gpl.html
- */
-
-;(function(b){var m,t,u,f,D,j,E,n,z,A,q=0,e={},o=[],p=0,d={},l=[],G=null,v=new Image,J=/\.(jpg|gif|png|bmp|jpeg)(.*)?$/i,W=/[^\.]\.(swf)\s*$/i,K,L=1,y=0,s="",r,i,h=false,B=b.extend(b("<div/>")[0],{prop:0}),M=b.browser.msie&&b.browser.version<7&&!window.XMLHttpRequest,N=function(){t.hide();v.onerror=v.onload=null;G&&G.abort();m.empty()},O=function(){if(false===e.onError(o,q,e)){t.hide();h=false}else{e.titleShow=false;e.width="auto";e.height="auto";m.html('<p id="fancybox-error">The requested content cannot be loaded.<br />Please try again later.</p>');
-F()}},I=function(){var a=o[q],c,g,k,C,P,w;N();e=b.extend({},b.fn.fancybox.defaults,typeof b(a).data("fancybox")=="undefined"?e:b(a).data("fancybox"));w=e.onStart(o,q,e);if(w===false)h=false;else{if(typeof w=="object")e=b.extend(e,w);k=e.title||(a.nodeName?b(a).attr("title"):a.title)||"";if(a.nodeName&&!e.orig)e.orig=b(a).children("img:first").length?b(a).children("img:first"):b(a);if(k===""&&e.orig&&e.titleFromAlt)k=e.orig.attr("alt");c=e.href||(a.nodeName?b(a).attr("href"):a.href)||null;if(/^(?:javascript)/i.test(c)||
-c=="#")c=null;if(e.type){g=e.type;if(!c)c=e.content}else if(e.content)g="html";else if(c)g=c.match(J)?"image":c.match(W)?"swf":b(a).hasClass("iframe")?"iframe":c.indexOf("#")===0?"inline":"ajax";if(g){if(g=="inline"){a=c.substr(c.indexOf("#"));g=b(a).length>0?"inline":"ajax"}e.type=g;e.href=c;e.title=k;if(e.autoDimensions)if(e.type=="html"||e.type=="inline"||e.type=="ajax"){e.width="auto";e.height="auto"}else e.autoDimensions=false;if(e.modal){e.overlayShow=true;e.hideOnOverlayClick=false;e.hideOnContentClick=
-false;e.enableEscapeButton=false;e.showCloseButton=false}e.padding=parseInt(e.padding,10);e.margin=parseInt(e.margin,10);m.css("padding",e.padding+e.margin);b(".fancybox-inline-tmp").unbind("fancybox-cancel").bind("fancybox-change",function(){b(this).replaceWith(j.children())});switch(g){case "html":m.html(e.content);F();break;case "inline":if(b(a).parent().is("#fancybox-content")===true){h=false;break}b('<div class="fancybox-inline-tmp" />').hide().insertBefore(b(a)).bind("fancybox-cleanup",function(){b(this).replaceWith(j.children())}).bind("fancybox-cancel",
-function(){b(this).replaceWith(m.children())});b(a).appendTo(m);F();break;case "image":h=false;b.fancybox.showActivity();v=new Image;v.onerror=function(){O()};v.onload=function(){h=true;v.onerror=v.onload=null;e.width=v.width;e.height=v.height;b("<img />").attr({id:"fancybox-img",src:v.src,alt:e.title}).appendTo(m);Q()};v.src=c;break;case "swf":e.scrolling="no";C='<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" width="'+e.width+'" height="'+e.height+'"><param name="movie" value="'+c+
-'"></param>';P="";b.each(e.swf,function(x,H){C+='<param name="'+x+'" value="'+H+'"></param>';P+=" "+x+'="'+H+'"'});C+='<embed src="'+c+'" type="application/x-shockwave-flash" width="'+e.width+'" height="'+e.height+'"'+P+"></embed></object>";m.html(C);F();break;case "ajax":h=false;b.fancybox.showActivity();e.ajax.win=e.ajax.success;G=b.ajax(b.extend({},e.ajax,{url:c,data:e.ajax.data||{},error:function(x){x.status>0&&O()},success:function(x,H,R){if((typeof R=="object"?R:G).status==200){if(typeof e.ajax.win==
-"function"){w=e.ajax.win(c,x,H,R);if(w===false){t.hide();return}else if(typeof w=="string"||typeof w=="object")x=w}m.html(x);F()}}}));break;case "iframe":Q()}}else O()}},F=function(){var a=e.width,c=e.height;a=a.toString().indexOf("%")>-1?parseInt((b(window).width()-e.margin*2)*parseFloat(a)/100,10)+"px":a=="auto"?"auto":a+"px";c=c.toString().indexOf("%")>-1?parseInt((b(window).height()-e.margin*2)*parseFloat(c)/100,10)+"px":c=="auto"?"auto":c+"px";m.wrapInner('<div style="width:'+a+";height:"+c+
-";overflow: "+(e.scrolling=="auto"?"auto":e.scrolling=="yes"?"scroll":"hidden")+';position:relative;"></div>');e.width=m.width();e.height=m.height();Q()},Q=function(){var a,c;t.hide();if(f.is(":visible")&&false===d.onCleanup(l,p,d)){b.event.trigger("fancybox-cancel");h=false}else{h=true;b(j.add(u)).unbind();b(window).unbind("resize.fb scroll.fb");b(document).unbind("keydown.fb");f.is(":visible")&&d.titlePosition!=="outside"&&f.css("height",f.height());l=o;p=q;d=e;if(d.overlayShow){u.css({"background-color":d.overlayColor,
-opacity:d.overlayOpacity,cursor:d.hideOnOverlayClick?"pointer":"auto",height:b(document).height()});if(!u.is(":visible")){M&&b("select:not(#fancybox-tmp select)").filter(function(){return this.style.visibility!=="hidden"}).css({visibility:"hidden"}).one("fancybox-cleanup",function(){this.style.visibility="inherit"});u.show()}}else u.hide();i=X();s=d.title||"";y=0;n.empty().removeAttr("style").removeClass();if(d.titleShow!==false){if(b.isFunction(d.titleFormat))a=d.titleFormat(s,l,p,d);else a=s&&s.length?
-d.titlePosition=="float"?'<table id="fancybox-title-float-wrap" cellpadding="0" cellspacing="0"><tr><td id="fancybox-title-float-left"></td><td id="fancybox-title-float-main">'+s+'</td><td id="fancybox-title-float-right"></td></tr></table>':'<div id="fancybox-title-'+d.titlePosition+'">'+s+"</div>":false;s=a;if(!(!s||s==="")){n.addClass("fancybox-title-"+d.titlePosition).html(s).appendTo("body").show();switch(d.titlePosition){case "inside":n.css({width:i.width-d.padding*2,marginLeft:d.padding,marginRight:d.padding});
-y=n.outerHeight(true);n.appendTo(D);i.height+=y;break;case "over":n.css({marginLeft:d.padding,width:i.width-d.padding*2,bottom:d.padding}).appendTo(D);break;case "float":n.css("left",parseInt((n.width()-i.width-40)/2,10)*-1).appendTo(f);break;default:n.css({width:i.width-d.padding*2,paddingLeft:d.padding,paddingRight:d.padding}).appendTo(f)}}}n.hide();if(f.is(":visible")){b(E.add(z).add(A)).hide();a=f.position();r={top:a.top,left:a.left,width:f.width(),height:f.height()};c=r.width==i.width&&r.height==
-i.height;j.fadeTo(d.changeFade,0.3,function(){var g=function(){j.html(m.contents()).fadeTo(d.changeFade,1,S)};b.event.trigger("fancybox-change");j.empty().removeAttr("filter").css({"border-width":d.padding,width:i.width-d.padding*2,height:e.autoDimensions?"auto":i.height-y-d.padding*2});if(c)g();else{B.prop=0;b(B).animate({prop:1},{duration:d.changeSpeed,easing:d.easingChange,step:T,complete:g})}})}else{f.removeAttr("style");j.css("border-width",d.padding);if(d.transitionIn=="elastic"){r=V();j.html(m.contents());
-f.show();if(d.opacity)i.opacity=0;B.prop=0;b(B).animate({prop:1},{duration:d.speedIn,easing:d.easingIn,step:T,complete:S})}else{d.titlePosition=="inside"&&y>0&&n.show();j.css({width:i.width-d.padding*2,height:e.autoDimensions?"auto":i.height-y-d.padding*2}).html(m.contents());f.css(i).fadeIn(d.transitionIn=="none"?0:d.speedIn,S)}}}},Y=function(){if(d.enableEscapeButton||d.enableKeyboardNav)b(document).bind("keydown.fb",function(a){if(a.keyCode==27&&d.enableEscapeButton){a.preventDefault();b.fancybox.close()}else if((a.keyCode==
-37||a.keyCode==39)&&d.enableKeyboardNav&&a.target.tagName!=="INPUT"&&a.target.tagName!=="TEXTAREA"&&a.target.tagName!=="SELECT"){a.preventDefault();b.fancybox[a.keyCode==37?"prev":"next"]()}});if(d.showNavArrows){if(d.cyclic&&l.length>1||p!==0)z.show();if(d.cyclic&&l.length>1||p!=l.length-1)A.show()}else{z.hide();A.hide()}},S=function(){if(!b.support.opacity){j.get(0).style.removeAttribute("filter");f.get(0).style.removeAttribute("filter")}e.autoDimensions&&j.css("height","auto");f.css("height","auto");
-s&&s.length&&n.show();d.showCloseButton&&E.show();Y();d.hideOnContentClick&&j.bind("click",b.fancybox.close);d.hideOnOverlayClick&&u.bind("click",b.fancybox.close);b(window).bind("resize.fb",b.fancybox.resize);d.centerOnScroll&&b(window).bind("scroll.fb",b.fancybox.center);if(d.type=="iframe")b('<iframe id="fancybox-frame" name="fancybox-frame'+(new Date).getTime()+'" frameborder="0" hspace="0" '+(b.browser.msie?'allowtransparency="true""':"")+' scrolling="'+e.scrolling+'" src="'+d.href+'"></iframe>').appendTo(j);
-f.show();h=false;b.fancybox.center();d.onComplete(l,p,d);var a,c;if(l.length-1>p){a=l[p+1].href;if(typeof a!=="undefined"&&a.match(J)){c=new Image;c.src=a}}if(p>0){a=l[p-1].href;if(typeof a!=="undefined"&&a.match(J)){c=new Image;c.src=a}}},T=function(a){var c={width:parseInt(r.width+(i.width-r.width)*a,10),height:parseInt(r.height+(i.height-r.height)*a,10),top:parseInt(r.top+(i.top-r.top)*a,10),left:parseInt(r.left+(i.left-r.left)*a,10)};if(typeof i.opacity!=="undefined")c.opacity=a<0.5?0.5:a;f.css(c);
-j.css({width:c.width-d.padding*2,height:c.height-y*a-d.padding*2})},U=function(){return[b(window).width()-d.margin*2,b(window).height()-d.margin*2,b(document).scrollLeft()+d.margin,b(document).scrollTop()+d.margin]},X=function(){var a=U(),c={},g=d.autoScale,k=d.padding*2;c.width=d.width.toString().indexOf("%")>-1?parseInt(a[0]*parseFloat(d.width)/100,10):d.width+k;c.height=d.height.toString().indexOf("%")>-1?parseInt(a[1]*parseFloat(d.height)/100,10):d.height+k;if(g&&(c.width>a[0]||c.height>a[1]))if(e.type==
-"image"||e.type=="swf"){g=d.width/d.height;if(c.width>a[0]){c.width=a[0];c.height=parseInt((c.width-k)/g+k,10)}if(c.height>a[1]){c.height=a[1];c.width=parseInt((c.height-k)*g+k,10)}}else{c.width=Math.min(c.width,a[0]);c.height=Math.min(c.height,a[1])}c.top=parseInt(Math.max(a[3]-20,a[3]+(a[1]-c.height-40)*0.5),10);c.left=parseInt(Math.max(a[2]-20,a[2]+(a[0]-c.width-40)*0.5),10);return c},V=function(){var a=e.orig?b(e.orig):false,c={};if(a&&a.length){c=a.offset();c.top+=parseInt(a.css("paddingTop"),
-10)||0;c.left+=parseInt(a.css("paddingLeft"),10)||0;c.top+=parseInt(a.css("border-top-width"),10)||0;c.left+=parseInt(a.css("border-left-width"),10)||0;c.width=a.width();c.height=a.height();c={width:c.width+d.padding*2,height:c.height+d.padding*2,top:c.top-d.padding-20,left:c.left-d.padding-20}}else{a=U();c={width:d.padding*2,height:d.padding*2,top:parseInt(a[3]+a[1]*0.5,10),left:parseInt(a[2]+a[0]*0.5,10)}}return c},Z=function(){if(t.is(":visible")){b("div",t).css("top",L*-40+"px");L=(L+1)%12}else clearInterval(K)};
-b.fn.fancybox=function(a){if(!b(this).length)return this;b(this).data("fancybox",b.extend({},a,b.metadata?b(this).metadata():{})).unbind("click.fb").bind("click.fb",function(c){c.preventDefault();if(!h){h=true;b(this).blur();o=[];q=0;c=b(this).attr("rel")||"";if(!c||c==""||c==="nofollow")o.push(this);else{o=b("a[rel="+c+"], area[rel="+c+"]");q=o.index(this)}I()}});return this};b.fancybox=function(a,c){var g;if(!h){h=true;g=typeof c!=="undefined"?c:{};o=[];q=parseInt(g.index,10)||0;if(b.isArray(a)){for(var k=
-0,C=a.length;k<C;k++)if(typeof a[k]=="object")b(a[k]).data("fancybox",b.extend({},g,a[k]));else a[k]=b({}).data("fancybox",b.extend({content:a[k]},g));o=jQuery.merge(o,a)}else{if(typeof a=="object")b(a).data("fancybox",b.extend({},g,a));else a=b({}).data("fancybox",b.extend({content:a},g));o.push(a)}if(q>o.length||q<0)q=0;I()}};b.fancybox.showActivity=function(){clearInterval(K);t.show();K=setInterval(Z,66)};b.fancybox.hideActivity=function(){t.hide()};b.fancybox.next=function(){return b.fancybox.pos(p+
-1)};b.fancybox.prev=function(){return b.fancybox.pos(p-1)};b.fancybox.pos=function(a){if(!h){a=parseInt(a);o=l;if(a>-1&&a<l.length){q=a;I()}else if(d.cyclic&&l.length>1){q=a>=l.length?0:l.length-1;I()}}};b.fancybox.cancel=function(){if(!h){h=true;b.event.trigger("fancybox-cancel");N();e.onCancel(o,q,e);h=false}};b.fancybox.close=function(){function a(){u.fadeOut("fast");n.empty().hide();f.hide();b.event.trigger("fancybox-cleanup");j.empty();d.onClosed(l,p,d);l=e=[];p=q=0;d=e={};h=false}if(!(h||f.is(":hidden"))){h=
-true;if(d&&false===d.onCleanup(l,p,d))h=false;else{N();b(E.add(z).add(A)).hide();b(j.add(u)).unbind();b(window).unbind("resize.fb scroll.fb");b(document).unbind("keydown.fb");j.find("iframe").attr("src",M&&/^https/i.test(window.location.href||"")?"javascript:void(false)":"about:blank");d.titlePosition!=="inside"&&n.empty();f.stop();if(d.transitionOut=="elastic"){r=V();var c=f.position();i={top:c.top,left:c.left,width:f.width(),height:f.height()};if(d.opacity)i.opacity=1;n.empty().hide();B.prop=1;
-b(B).animate({prop:0},{duration:d.speedOut,easing:d.easingOut,step:T,complete:a})}else f.fadeOut(d.transitionOut=="none"?0:d.speedOut,a)}}};b.fancybox.resize=function(){u.is(":visible")&&u.css("height",b(document).height());b.fancybox.center(true)};b.fancybox.center=function(a){var c,g;if(!h){g=a===true?1:0;c=U();!g&&(f.width()>c[0]||f.height()>c[1])||f.stop().animate({top:parseInt(Math.max(c[3]-20,c[3]+(c[1]-j.height()-40)*0.5-d.padding)),left:parseInt(Math.max(c[2]-20,c[2]+(c[0]-j.width()-40)*0.5-
-d.padding))},typeof a=="number"?a:200)}};b.fancybox.init=function(){if(!b("#fancybox-wrap").length){b("body").append(m=b('<div id="fancybox-tmp"></div>'),t=b('<div id="fancybox-loading"><div></div></div>'),u=b('<div id="fancybox-overlay"></div>'),f=b('<div id="fancybox-wrap"></div>'));D=b('<div id="fancybox-outer"></div>').append('<div class="fancybox-bg" id="fancybox-bg-n"></div><div class="fancybox-bg" id="fancybox-bg-ne"></div><div class="fancybox-bg" id="fancybox-bg-e"></div><div class="fancybox-bg" id="fancybox-bg-se"></div><div class="fancybox-bg" id="fancybox-bg-s"></div><div class="fancybox-bg" id="fancybox-bg-sw"></div><div class="fancybox-bg" id="fancybox-bg-w"></div><div class="fancybox-bg" id="fancybox-bg-nw"></div>').appendTo(f);
-D.append(j=b('<div id="fancybox-content"></div>'),E=b('<a id="fancybox-close"></a>'),n=b('<div id="fancybox-title"></div>'),z=b('<a href="javascript:;" id="fancybox-left"><span class="fancy-ico" id="fancybox-left-ico"></span></a>'),A=b('<a href="javascript:;" id="fancybox-right"><span class="fancy-ico" id="fancybox-right-ico"></span></a>'));E.click(b.fancybox.close);t.click(b.fancybox.cancel);z.click(function(a){a.preventDefault();b.fancybox.prev()});A.click(function(a){a.preventDefault();b.fancybox.next()});
-b.fn.mousewheel&&f.bind("mousewheel.fb",function(a,c){if(h)a.preventDefault();else if(b(a.target).get(0).clientHeight==0||b(a.target).get(0).scrollHeight===b(a.target).get(0).clientHeight){a.preventDefault();b.fancybox[c>0?"prev":"next"]()}});b.support.opacity||f.addClass("fancybox-ie");if(M){t.addClass("fancybox-ie6");f.addClass("fancybox-ie6");b('<iframe id="fancybox-hide-sel-frame" src="'+(/^https/i.test(window.location.href||"")?"javascript:void(false)":"about:blank")+'" scrolling="no" border="0" frameborder="0" tabindex="-1"></iframe>').prependTo(D)}}};
-b.fn.fancybox.defaults={padding:10,margin:40,opacity:false,modal:false,cyclic:false,scrolling:"auto",width:560,height:340,autoScale:true,autoDimensions:true,centerOnScroll:false,ajax:{},swf:{wmode:"transparent"},hideOnOverlayClick:true,hideOnContentClick:false,overlayShow:true,overlayOpacity:0.7,overlayColor:"#777",titleShow:true,titlePosition:"float",titleFormat:null,titleFromAlt:false,transitionIn:"fade",transitionOut:"fade",speedIn:300,speedOut:300,changeSpeed:300,changeFade:"fast",easingIn:"swing",
-easingOut:"swing",showCloseButton:true,showNavArrows:true,enableEscapeButton:true,enableKeyboardNav:true,onStart:function(){},onCancel:function(){},onComplete:function(){},onCleanup:function(){},onClosed:function(){},onError:function(){}};b(document).ready(function(){b.fancybox.init()})})(jQuery); \ No newline at end of file
diff --git a/library/fancybox/jquery.mousewheel-3.0.4.pack.js b/library/fancybox/jquery.mousewheel-3.0.4.pack.js
deleted file mode 100644
index cb66588e2..000000000
--- a/library/fancybox/jquery.mousewheel-3.0.4.pack.js
+++ /dev/null
@@ -1,14 +0,0 @@
-/*! Copyright (c) 2010 Brandon Aaron (http://brandonaaron.net)
-* Licensed under the MIT License (LICENSE.txt).
-*
-* Thanks to: http://adomas.org/javascript-mouse-wheel/ for some pointers.
-* Thanks to: Mathias Bank(http://www.mathias-bank.de) for a scope bug fix.
-* Thanks to: Seamus Leahy for adding deltaX and deltaY
-*
-* Version: 3.0.4
-*
-* Requires: 1.2.2+
-*/
-
-(function(d){function g(a){var b=a||window.event,i=[].slice.call(arguments,1),c=0,h=0,e=0;a=d.event.fix(b);a.type="mousewheel";if(a.wheelDelta)c=a.wheelDelta/120;if(a.detail)c=-a.detail/3;e=c;if(b.axis!==undefined&&b.axis===b.HORIZONTAL_AXIS){e=0;h=-1*c}if(b.wheelDeltaY!==undefined)e=b.wheelDeltaY/120;if(b.wheelDeltaX!==undefined)h=-1*b.wheelDeltaX/120;i.unshift(a,c,h,e);return d.event.handle.apply(this,i)}var f=["DOMMouseScroll","mousewheel"];d.event.special.mousewheel={setup:function(){if(this.addEventListener)for(var a=
-f.length;a;)this.addEventListener(f[--a],g,false);else this.onmousewheel=g},teardown:function(){if(this.removeEventListener)for(var a=f.length;a;)this.removeEventListener(f[--a],g,false);else this.onmousewheel=null}};d.fn.extend({mousewheel:function(a){return a?this.bind("mousewheel",a):this.trigger("mousewheel")},unmousewheel:function(a){return this.unbind("mousewheel",a)}})})(jQuery); \ No newline at end of file
diff --git a/library/ical.php b/library/ical.php
new file mode 100644
index 000000000..6bb26bad8
--- /dev/null
+++ b/library/ical.php
@@ -0,0 +1,379 @@
+<?php
+/**
+ * This PHP-Class should only read a iCal-File (*.ics), parse it and give an
+ * array with its content.
+ *
+ * PHP Version 5
+ *
+ * @category Parser
+ * @package Ics-parser
+ * @author Martin Thoma <info@martin-thoma.de>
+ * @license http://www.opensource.org/licenses/mit-license.php MIT License
+ * @version SVN: <svn_id>
+ * @link http://code.google.com/p/ics-parser/
+ * @example $ical = new ical('MyCal.ics');
+ * print_r( $ical->events() );
+ */
+
+/**
+ * This example demonstrates how the Ics-Parser should be used.
+ *
+ * PHP Version 5
+ *
+ * @category Example
+ * @package Ics-parser
+ * @author Martin Thoma <info@martin-thoma.de>
+ * @license http://www.opensource.org/licenses/mit-license.php MIT License
+ * @version SVN: <svn_id>
+ * @link http://code.google.com/p/ics-parser/
+ * @example $ical = new ical('MyCal.ics');
+ * print_r( $ical->get_event_array() );
+
+require 'class.iCalReader.php';
+
+$ical = new ICal('MyCal.ics');
+$events = $ical->events();
+
+$date = $events[0]['DTSTART'];
+echo "The ical date: ";
+echo $date;
+echo "<br/>";
+
+echo "The Unix timestamp: ";
+echo $ical->iCalDateToUnixTimestamp($date);
+echo "<br/>";
+
+echo "The number of events: ";
+echo $ical->event_count;
+echo "<br/>";
+
+echo "The number of todos: ";
+echo $ical->todo_count;
+echo "<br/>";
+echo "<hr/><hr/>";
+
+foreach ($events as $event) {
+ echo "SUMMARY: ".$event['SUMMARY']."<br/>";
+ echo "DTSTART: ".$event['DTSTART']." - UNIX-Time: ".$ical->iCalDateToUnixTimestamp($event['DTSTART'])."<br/>";
+ echo "DTEND: ".$event['DTEND']."<br/>";
+ echo "DTSTAMP: ".$event['DTSTAMP']."<br/>";
+ echo "UID: ".$event['UID']."<br/>";
+ echo "CREATED: ".$event['CREATED']."<br/>";
+ echo "DESCRIPTION: ".$event['DESCRIPTION']."<br/>";
+ echo "LAST-MODIFIED: ".$event['LAST-MODIFIED']."<br/>";
+ echo "LOCATION: ".$event['LOCATION']."<br/>";
+ echo "SEQUENCE: ".$event['SEQUENCE']."<br/>";
+ echo "STATUS: ".$event['STATUS']."<br/>";
+ echo "TRANSP: ".$event['TRANSP']."<br/>";
+ echo "<hr/>";
+}
+
+ (end example)
+ *
+ *
+ */
+
+// error_reporting(E_ALL);
+
+/**
+ * This is the iCal-class
+ *
+ * @category Parser
+ * @package Ics-parser
+ * @author Martin Thoma <info@martin-thoma.de>
+ * @license http://www.opensource.org/licenses/mit-license.php MIT License
+ * @link http://code.google.com/p/ics-parser/
+ *
+ * @param {string} filename The name of the file which should be parsed
+ * @constructor
+ */
+class ICal
+{
+ /* How many ToDos are in this ical? */
+ public /** @type {int} */ $todo_count = 0;
+
+ /* How many events are in this ical? */
+ public /** @type {int} */ $event_count = 0;
+
+ /* The parsed calendar */
+ public /** @type {Array} */ $cal;
+
+ /* Which keyword has been added to cal at last? */
+ private /** @type {string} */ $_lastKeyWord;
+
+ /**
+ * Creates the iCal-Object
+ *
+ * @param {string} $filename The path to the iCal-file
+ *
+ * @return Object The iCal-Object
+ */
+ public function __construct($filename)
+ {
+ if (!$filename) {
+ return false;
+ }
+
+ $lines = file($filename, FILE_IGNORE_NEW_LINES | FILE_SKIP_EMPTY_LINES);
+ if (stristr($lines[0], 'BEGIN:VCALENDAR') === false) {
+ return false;
+ } else {
+ // TODO: Fix multiline-description problem (see http://tools.ietf.org/html/rfc2445#section-4.8.1.5)
+ foreach ($lines as $line) {
+ $line = trim($line);
+ $add = $this->keyValueFromString($line);
+ if ($add === false) {
+ $this->addCalendarComponentWithKeyAndValue($type, false, $line);
+ continue;
+ }
+
+ list($keyword, $value) = $add;
+
+ switch ($line) {
+ // http://www.kanzaki.com/docs/ical/vtodo.html
+ case "BEGIN:VTODO":
+ $this->todo_count++;
+ $type = "VTODO";
+ break;
+
+ // http://www.kanzaki.com/docs/ical/vevent.html
+ case "BEGIN:VEVENT":
+ //echo "vevent gematcht";
+ $this->event_count++;
+ $type = "VEVENT";
+ break;
+
+ //all other special strings
+ case "BEGIN:VCALENDAR":
+ case "BEGIN:DAYLIGHT":
+ // http://www.kanzaki.com/docs/ical/vtimezone.html
+ case "BEGIN:VTIMEZONE":
+ case "BEGIN:STANDARD":
+ $type = $value;
+ break;
+ case "END:VTODO": // end special text - goto VCALENDAR key
+ case "END:VEVENT":
+ case "END:VCALENDAR":
+ case "END:DAYLIGHT":
+ case "END:VTIMEZONE":
+ case "END:STANDARD":
+ $type = "VCALENDAR";
+ break;
+ default:
+ $this->addCalendarComponentWithKeyAndValue($type,
+ $keyword,
+ $value);
+ break;
+ }
+ }
+ return $this->cal;
+ }
+ }
+
+ /**
+ * Add to $this->ical array one value and key.
+ *
+ * @param {string} $component This could be VTODO, VEVENT, VCALENDAR, ...
+ * @param {string} $keyword The keyword, for example DTSTART
+ * @param {string} $value The value, for example 20110105T090000Z
+ *
+ * @return {None}
+ */
+ public function addCalendarComponentWithKeyAndValue($component,
+ $keyword,
+ $value)
+ {
+ if ($keyword == false) {
+ $keyword = $this->last_keyword;
+ switch ($component) {
+ case 'VEVENT':
+ $value = $this->cal[$component][$this->event_count - 1]
+ [$keyword].$value;
+ break;
+ case 'VTODO' :
+ $value = $this->cal[$component][$this->todo_count - 1]
+ [$keyword].$value;
+ break;
+ }
+ }
+
+ if (stristr($keyword, "DTSTART") or stristr($keyword, "DTEND")) {
+ $keyword = explode(";", $keyword);
+ $keyword = $keyword[0];
+ }
+
+ switch ($component) {
+ case "VTODO":
+ $this->cal[$component][$this->todo_count - 1][$keyword] = $value;
+ //$this->cal[$component][$this->todo_count]['Unix'] = $unixtime;
+ break;
+ case "VEVENT":
+ $this->cal[$component][$this->event_count - 1][$keyword] = $value;
+ break;
+ default:
+ $this->cal[$component][$keyword] = $value;
+ break;
+ }
+ $this->last_keyword = $keyword;
+ }
+
+ /**
+ * Get a key-value pair of a string.
+ *
+ * @param {string} $text which is like "VCALENDAR:Begin" or "LOCATION:"
+ *
+ * @return {array} array("VCALENDAR", "Begin")
+ */
+ public function keyValueFromString($text)
+ {
+ preg_match("/([^:]+)[:]([\w\W]*)/", $text, $matches);
+ if (count($matches) == 0) {
+ return false;
+ }
+ $matches = array_splice($matches, 1, 2);
+ return $matches;
+ }
+
+ /**
+ * Return Unix timestamp from ical date time format
+ *
+ * @param {string} $icalDate A Date in the format YYYYMMDD[T]HHMMSS[Z] or
+ * YYYYMMDD[T]HHMMSS
+ *
+ * @return {int}
+ */
+ public function iCalDateToUnixTimestamp($icalDate)
+ {
+ $icalDate = str_replace('T', '', $icalDate);
+ $icalDate = str_replace('Z', '', $icalDate);
+
+ $pattern = '/([0-9]{4})'; // 1: YYYY
+ $pattern .= '([0-9]{2})'; // 2: MM
+ $pattern .= '([0-9]{2})'; // 3: DD
+ $pattern .= '([0-9]{0,2})'; // 4: HH
+ $pattern .= '([0-9]{0,2})'; // 5: MM
+ $pattern .= '([0-9]{0,2})/'; // 6: SS
+ preg_match($pattern, $icalDate, $date);
+
+ // Unix timestamp can't represent dates before 1970
+ if ($date[1] <= 1970) {
+ return false;
+ }
+ // Unix timestamps after 03:14:07 UTC 2038-01-19 might cause an overflow
+ // if 32 bit integers are used.
+ $timestamp = mktime((int)$date[4],
+ (int)$date[5],
+ (int)$date[6],
+ (int)$date[2],
+ (int)$date[3],
+ (int)$date[1]);
+ return $timestamp;
+ }
+
+ /**
+ * Returns an array of arrays with all events. Every event is an associative
+ * array and each property is an element it.
+ *
+ * @return {array}
+ */
+ public function events()
+ {
+ $array = $this->cal;
+ return $array['VEVENT'];
+ }
+
+ /**
+ * Returns a boolean value whether thr current calendar has events or not
+ *
+ * @return {boolean}
+ */
+ public function hasEvents()
+ {
+ return ( count($this->events()) > 0 ? true : false );
+ }
+
+ /**
+ * Returns false when the current calendar has no events in range, else the
+ * events.
+ *
+ * Note that this function makes use of a UNIX timestamp. This might be a
+ * problem on January the 29th, 2038.
+ * See http://en.wikipedia.org/wiki/Unix_time#Representing_the_number
+ *
+ * @param {boolean} $rangeStart Either true or false
+ * @param {boolean} $rangeEnd Either true or false
+ *
+ * @return {mixed}
+ */
+ public function eventsFromRange($rangeStart = false, $rangeEnd = false)
+ {
+ $events = $this->sortEventsWithOrder($this->events(), SORT_ASC);
+
+ if (!$events) {
+ return false;
+ }
+
+ $extendedEvents = array();
+
+ if ($rangeStart !== false) {
+ $rangeStart = new DateTime();
+ }
+
+ if ($rangeEnd !== false or $rangeEnd <= 0) {
+ $rangeEnd = new DateTime('2038/01/18');
+ } else {
+ $rangeEnd = new DateTime($rangeEnd);
+ }
+
+ $rangeStart = $rangeStart->format('U');
+ $rangeEnd = $rangeEnd->format('U');
+
+
+
+ // loop through all events by adding two new elements
+ foreach ($events as $anEvent) {
+ $timestamp = $this->iCalDateToUnixTimestamp($anEvent['DTSTART']);
+ if ($timestamp >= $rangeStart && $timestamp <= $rangeEnd) {
+ $extendedEvents[] = $anEvent;
+ }
+ }
+
+ return $extendedEvents;
+ }
+
+ /**
+ * Returns a boolean value whether thr current calendar has events or not
+ *
+ * @param {array} $events An array with events.
+ * @param {array} $sortOrder Either SORT_ASC, SORT_DESC, SORT_REGULAR,
+ * SORT_NUMERIC, SORT_STRING
+ *
+ * @return {boolean}
+ */
+ public function sortEventsWithOrder($events, $sortOrder = SORT_ASC)
+ {
+ $extendedEvents = array();
+
+ // loop through all events by adding two new elements
+ foreach ($events as $anEvent) {
+ if (!array_key_exists('UNIX_TIMESTAMP', $anEvent)) {
+ $anEvent['UNIX_TIMESTAMP'] =
+ $this->iCalDateToUnixTimestamp($anEvent['DTSTART']);
+ }
+
+ if (!array_key_exists('REAL_DATETIME', $anEvent)) {
+ $anEvent['REAL_DATETIME'] =
+ date("d.m.Y", $anEvent['UNIX_TIMESTAMP']);
+ }
+
+ $extendedEvents[] = $anEvent;
+ }
+
+ foreach ($extendedEvents as $key => $value) {
+ $timestamp[$key] = $value['UNIX_TIMESTAMP'];
+ }
+ array_multisort($timestamp, $sortOrder, $extendedEvents);
+
+ return $extendedEvents;
+ }
+}
diff --git a/library/intl/.gitignore b/library/intl/.gitignore
new file mode 100644
index 000000000..2659611c8
--- /dev/null
+++ b/library/intl/.gitignore
@@ -0,0 +1 @@
+composer.lock
diff --git a/library/intl/.travis.yml b/library/intl/.travis.yml
new file mode 100644
index 000000000..20bf1805d
--- /dev/null
+++ b/library/intl/.travis.yml
@@ -0,0 +1,14 @@
+language: php
+
+php:
+ - 5.4
+ - 5.5
+ - 5.6
+ - hhvm
+
+install:
+ - composer self-update
+ - composer install
+
+script:
+ - ./vendor/bin/phpunit -c ./phpunit.xml --coverage-text --strict
diff --git a/library/intl/LICENSE b/library/intl/LICENSE
new file mode 100644
index 000000000..e4ef21420
--- /dev/null
+++ b/library/intl/LICENSE
@@ -0,0 +1,21 @@
+The MIT License (MIT)
+
+Copyright (c) 2014 Commerce Guys
+
+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/library/intl/README.md b/library/intl/README.md
new file mode 100644
index 000000000..8de2de4d9
--- /dev/null
+++ b/library/intl/README.md
@@ -0,0 +1,163 @@
+intl
+=====
+
+[![Build Status](https://travis-ci.org/commerceguys/intl.svg?branch=master)](https://travis-ci.org/commerceguys/intl)
+
+A PHP 5.4+ internationalization library, powered by CLDR data.
+
+Features:
+- NumberFormatter, inspired by [intl](http://php.net/manual/en/class.numberformatter.php).
+- Currencies
+- Countries
+- Languages
+
+Coming soon: date formatting.
+
+Why not use the intl extension?
+-------------------------------
+The intl extension isn't present by default on PHP installs, requiring
+it can hurt software adoption.
+Behind the scenes the extension relies on libicu which includes the CLDR dataset,
+but depending on the OS/distribution used, could be several major CLDR releases behind.
+
+Since the CLDR dataset is freely available in JSON form, it is possible to
+reimplement the intl functionality in pure PHP code while ensuring that the
+dataset is always fresh.
+
+Having access to the CLDR dataset also makes it possible to offer additional APIs,
+such as listing all currencies.
+
+More backstory can be found in [this blog post](https://drupalcommerce.org/blog/15916/commerce-2x-stories-internationalization).
+
+Formatting numbers
+------------------
+Formats numbers (decimals, percents, currency amounts) using locale-specific rules.
+
+This ensures that the decimal and grouping separators, the position of the currency
+symbol, as well as the actual symbol used match what the user is expecting.
+
+The amounts passed for formatting should already be rounded, because the
+formatter doesn't do any rounding of its own.
+
+```php
+use CommerceGuys\Intl\Currency\CurrencyRepository;
+use CommerceGuys\Intl\NumberFormat\NumberFormatRepository;
+use CommerceGuys\Intl\Formatter\NumberFormatter;
+
+$currencyRepository = new CurrencyRepository;
+$numberFormatRepository = new NumberFormatRepository;
+
+$currency = $currencyRepository->get('USD');
+$numberFormat = $numberFormatRepository->get('en');
+
+$decimalFormatter = new NumberFormatter($numberFormat);
+echo $decimalFormatter->format('1234.99'); // 123,456.99
+
+$percentFormatter = new NumberFormatter($numberFormat, NumberFormatter::PERCENT);
+echo $percentFormatter->format('0.75'); // 75%
+
+$currencyFormatter = new NumberFormatter($numberFormat, NumberFormatter::CURRENCY);
+echo $currencyFormatter->formatCurrency('2.99', $currency); // $2.99
+
+// The accounting pattern shows negative numbers differently and is used
+// primarily for amounts shown on invoices.
+$invoiceCurrencyFormatter = new NumberFormatter($numberFormat, NumberFormatter::CURRENCY_ACCOUNTING);
+echo $invoiceCurrencyFormatter->formatCurrency('-2.99', $currency); // (2.99$)
+
+// Arabic, Arabic extended, Bengali, Devanagari digits are supported as expected.
+$currency = $currencyRepository->get('USD', 'ar');
+$numberFormat = $numberFormatRepository->get('ar');
+$currencyFormatter = new NumberFormatter($numberFormat, NumberFormatter::CURRENCY);
+echo $currencyFormatter->formatCurrency('1230.99', $currency); // US$ ١٬٢٣٠٫٩٩
+
+// Parse formatted values into numeric values.
+echo $currencyFormatter->parseCurrency('US$ ١٬٢٣٠٫٩٩', $currency); // 1230.99
+```
+
+Currencies
+----------
+```php
+use CommerceGuys\Intl\Currency\CurrencyRepository;
+
+// Reads the currency definitions from resources/currency.
+$currencyRepository = new CurrencyRepository;
+
+// Get the USD currency using the default locale (en).
+$currency = $currencyRepository->get('USD');
+echo $currency->getCurrencyCode(); // USD
+echo $currency->getNumericCode(); // 840
+echo $currency->getFractionDigits(); // 2
+echo $currency->getName(); // US Dollar
+echo $currency->getSymbol(); // $
+echo $currency->getLocale(); // en
+
+// Get the USD currency using the fr-FR locale.
+$currency = $currencyRepository->get('USD', 'fr-FR');
+echo $currency->getName(); // dollar des États-Unis
+echo $currency->getSymbol(); // $US
+echo $currency->getLocale(); // fr-FR
+
+$allCurrencies = $currencyRepository->getAll();
+```
+
+Countries
+---------
+```php
+use CommerceGuys\Intl\Country\CountryRepository;
+
+// Reads the country definitions from resources/country.
+$countryRepository = new CountryRepository;
+
+// Get the US country using the default locale (en).
+$country = $countryRepository->get('US');
+echo $country->getCountryCode(); // US
+echo $country->getTelephoneCode(); // 1
+echo $country->getName(); // United States
+
+// Get the US country using the fr-FR locale.
+$country = $countryRepository->get('US', 'fr-FR');
+echo $country->getName(); // États-Unis
+
+$allCountries = $countryRepository->getAll();
+```
+
+Languages
+---------
+```php
+use CommerceGuys\Intl\Language\LanguageRepository;
+
+// Reads the language definitions from resources/language.
+$languageRepository = new LanguageRepository;
+
+// Get the german language using the default locale (en).
+$language = $languageRepository->get('de');
+echo $language->getLanguageCode(); // de
+echo $language->getName(); // German
+
+// Get the german language using the fr-FR locale.
+$language = $languageRepository->get('de', 'fr-FR');
+echo $language->getName(); // allemand
+
+$allLanguages = $languageRepository->getAll();
+```
+
+Implementing the library
+------------------------
+While the library can be used as-is, most applications will want to store the
+relevant definitions (currencies, countries, etc) in the database.
+This allows for better performance while giving users the ability to modify and
+expand the data.
+
+Taking currencies as an example, a merchant frequently wants to be able to:
+
+- Define custom currencies.
+- Enable/disable existing currencies
+- Modify an existing currency (changing the default number of fraction digits, for example).
+
+This would be accomplished by using the CurrencyRepository to get all default currencies and
+insert them into the database. The doctrine entity (or any similar data object) would then implement
+the CurrencyInterface so that the NumberFormatter can continue to work.
+
+Related projects
+----------------
+[commerceguys/pricing](http://github.com/commerceguys/pricing) provides a Price object.
diff --git a/library/intl/phpunit.xml b/library/intl/phpunit.xml
new file mode 100644
index 000000000..82bf2b096
--- /dev/null
+++ b/library/intl/phpunit.xml
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<phpunit backupGlobals="false"
+ backupStaticAttributes="false"
+ colors="true"
+ convertErrorsToExceptions="true"
+ convertNoticesToExceptions="true"
+ convertWarningsToExceptions="true"
+ stopOnFailure="false"
+ bootstrap="vendor/autoload.php"
+>
+ <testsuites>
+ <testsuite name="CommerceGuys Intl Test Suite">
+ <directory>./tests/</directory>
+ </testsuite>
+ </testsuites>
+
+ <filter>
+ <whitelist>
+ <directory suffix=".php">./src/</directory>
+ </whitelist>
+ </filter>
+</phpunit>
diff --git a/library/intl/resources/country/af.json b/library/intl/resources/country/af.json
new file mode 100644
index 000000000..a12a35891
--- /dev/null
+++ b/library/intl/resources/country/af.json
@@ -0,0 +1,761 @@
+{
+ "AF": {
+ "name": "Afganistan"
+ },
+ "AX": {
+ "name": "Ã…landeilande"
+ },
+ "AL": {
+ "name": "Albanië"
+ },
+ "DZ": {
+ "name": "Algerië"
+ },
+ "AS": {
+ "name": "Amerikaans-Samoa"
+ },
+ "VI": {
+ "name": "Amerikaanse Maagde-eilande"
+ },
+ "AD": {
+ "name": "Andorra"
+ },
+ "AO": {
+ "name": "Angola"
+ },
+ "AI": {
+ "name": "Anguilla"
+ },
+ "AQ": {
+ "name": "Antarktika"
+ },
+ "AG": {
+ "name": "Antigua en Barbuda"
+ },
+ "AR": {
+ "name": "Argentinië"
+ },
+ "AM": {
+ "name": "Armenië"
+ },
+ "AW": {
+ "name": "Aruba"
+ },
+ "AC": {
+ "name": "Ascensioneiland"
+ },
+ "AU": {
+ "name": "Australië"
+ },
+ "AZ": {
+ "name": "Azerbeidjan"
+ },
+ "BS": {
+ "name": "Bahamas"
+ },
+ "BH": {
+ "name": "Bahrein"
+ },
+ "BD": {
+ "name": "Bangladesj"
+ },
+ "BB": {
+ "name": "Barbados"
+ },
+ "BY": {
+ "name": "Belarus"
+ },
+ "BE": {
+ "name": "België"
+ },
+ "BZ": {
+ "name": "Belize"
+ },
+ "BJ": {
+ "name": "Benin"
+ },
+ "BM": {
+ "name": "Bermuda"
+ },
+ "BT": {
+ "name": "Bhoetan"
+ },
+ "BO": {
+ "name": "Bolivië"
+ },
+ "BA": {
+ "name": "Bosnië en Herzegowina"
+ },
+ "BW": {
+ "name": "Botswana"
+ },
+ "BR": {
+ "name": "Brasilië"
+ },
+ "IO": {
+ "name": "Britse Indiese Oseaangebied"
+ },
+ "VG": {
+ "name": "Britse Maagde-eilande"
+ },
+ "BN": {
+ "name": "Broenei"
+ },
+ "BG": {
+ "name": "Bulgarye"
+ },
+ "BF": {
+ "name": "Burkina Faso"
+ },
+ "BI": {
+ "name": "Burundi"
+ },
+ "EA": {
+ "name": "Ceuta en Melilla"
+ },
+ "CL": {
+ "name": "Chili"
+ },
+ "CC": {
+ "name": "Cocos- (Keeling) eilande"
+ },
+ "CO": {
+ "name": "Colombië"
+ },
+ "KM": {
+ "name": "Comore"
+ },
+ "CK": {
+ "name": "Cookeilande"
+ },
+ "CR": {
+ "name": "Costa Rica"
+ },
+ "CW": {
+ "name": "Curaçao"
+ },
+ "CD": {
+ "name": "Demokratiese Republiek van die Kongo"
+ },
+ "DK": {
+ "name": "Denemarke"
+ },
+ "DG": {
+ "name": "Diego Garcia"
+ },
+ "DJ": {
+ "name": "Djiboeti"
+ },
+ "DM": {
+ "name": "Dominica"
+ },
+ "DO": {
+ "name": "Dominikaanse Republiek"
+ },
+ "DE": {
+ "name": "Duitsland"
+ },
+ "EC": {
+ "name": "Ecuador"
+ },
+ "EG": {
+ "name": "Egipte"
+ },
+ "IM": {
+ "name": "Eiland Man"
+ },
+ "GQ": {
+ "name": "Ekwatoriaal-Guinee"
+ },
+ "SV": {
+ "name": "El Salvador"
+ },
+ "ER": {
+ "name": "Eritrea"
+ },
+ "EE": {
+ "name": "Estland"
+ },
+ "ET": {
+ "name": "Ethiopië"
+ },
+ "FK": {
+ "name": "Falklandeilande"
+ },
+ "FO": {
+ "name": "Faroëreilande"
+ },
+ "FJ": {
+ "name": "Fidji"
+ },
+ "PH": {
+ "name": "Filippyne"
+ },
+ "FI": {
+ "name": "Finland"
+ },
+ "FR": {
+ "name": "Frankryk"
+ },
+ "GF": {
+ "name": "Frans-Guyana"
+ },
+ "PF": {
+ "name": "Frans-Polinesië"
+ },
+ "TF": {
+ "name": "Franse Suidelike Gebiede"
+ },
+ "GA": {
+ "name": "Gaboen"
+ },
+ "GM": {
+ "name": "Gambië"
+ },
+ "GE": {
+ "name": "Georgië"
+ },
+ "GH": {
+ "name": "Ghana"
+ },
+ "GI": {
+ "name": "Gibraltar"
+ },
+ "GD": {
+ "name": "Grenada"
+ },
+ "GR": {
+ "name": "Griekeland"
+ },
+ "GL": {
+ "name": "Groenland"
+ },
+ "GP": {
+ "name": "Guadeloupe"
+ },
+ "GU": {
+ "name": "Guam"
+ },
+ "GT": {
+ "name": "Guatemala"
+ },
+ "GG": {
+ "name": "Guernsey"
+ },
+ "GN": {
+ "name": "Guinee"
+ },
+ "GW": {
+ "name": "Guinee-Bissau"
+ },
+ "GY": {
+ "name": "Guyana"
+ },
+ "HT": {
+ "name": "Haïti"
+ },
+ "HN": {
+ "name": "Honduras"
+ },
+ "HU": {
+ "name": "Hongarye"
+ },
+ "HK": {
+ "name": "Hongkong SAS Sjina"
+ },
+ "IE": {
+ "name": "Ierland"
+ },
+ "IN": {
+ "name": "Indië"
+ },
+ "ID": {
+ "name": "Indonesië"
+ },
+ "IQ": {
+ "name": "Irak"
+ },
+ "IR": {
+ "name": "Iran"
+ },
+ "IL": {
+ "name": "Israel"
+ },
+ "IT": {
+ "name": "Italië"
+ },
+ "CI": {
+ "name": "Ivoorkus"
+ },
+ "JM": {
+ "name": "Jamaika"
+ },
+ "JP": {
+ "name": "Japan"
+ },
+ "YE": {
+ "name": "Jemen"
+ },
+ "JE": {
+ "name": "Jersey"
+ },
+ "JO": {
+ "name": "Jordanië"
+ },
+ "KY": {
+ "name": "Kaaimanseilande"
+ },
+ "CV": {
+ "name": "Kaap Verde"
+ },
+ "KH": {
+ "name": "Kambodja"
+ },
+ "CM": {
+ "name": "Kameroen"
+ },
+ "CA": {
+ "name": "Kanada"
+ },
+ "IC": {
+ "name": "Kanariese Eilande"
+ },
+ "BQ": {
+ "name": "Karibiese Nederland"
+ },
+ "QA": {
+ "name": "Katar"
+ },
+ "KZ": {
+ "name": "Kazakstan"
+ },
+ "KE": {
+ "name": "Kenia"
+ },
+ "CX": {
+ "name": "Kerseiland"
+ },
+ "KG": {
+ "name": "Kirgisië"
+ },
+ "KI": {
+ "name": "Kiribati"
+ },
+ "KW": {
+ "name": "Koeweit"
+ },
+ "XK": {
+ "name": "Kosovo"
+ },
+ "HR": {
+ "name": "Kroasië"
+ },
+ "CU": {
+ "name": "Kuba"
+ },
+ "LA": {
+ "name": "Laos"
+ },
+ "LS": {
+ "name": "Lesotho"
+ },
+ "LV": {
+ "name": "Letland"
+ },
+ "LB": {
+ "name": "Libanon"
+ },
+ "LR": {
+ "name": "Liberië"
+ },
+ "LY": {
+ "name": "Libië"
+ },
+ "LI": {
+ "name": "Liechtenstein"
+ },
+ "LT": {
+ "name": "Litaue"
+ },
+ "LU": {
+ "name": "Luxemburg"
+ },
+ "MO": {
+ "name": "Macau SAS Sjina"
+ },
+ "MK": {
+ "name": "Macedonië"
+ },
+ "MG": {
+ "name": "Madagaskar"
+ },
+ "MW": {
+ "name": "Malawi"
+ },
+ "MV": {
+ "name": "Maledive"
+ },
+ "MY": {
+ "name": "Maleisië"
+ },
+ "ML": {
+ "name": "Mali"
+ },
+ "MT": {
+ "name": "Malta"
+ },
+ "MA": {
+ "name": "Marokko"
+ },
+ "MH": {
+ "name": "Marshalleilande"
+ },
+ "MQ": {
+ "name": "Martinique"
+ },
+ "MR": {
+ "name": "Mauritanië"
+ },
+ "MU": {
+ "name": "Mauritius"
+ },
+ "YT": {
+ "name": "Mayotte"
+ },
+ "MX": {
+ "name": "Meksiko"
+ },
+ "MM": {
+ "name": "Mianmar (Birma)"
+ },
+ "FM": {
+ "name": "Mikronesië"
+ },
+ "MD": {
+ "name": "Moldowa"
+ },
+ "MC": {
+ "name": "Monaco"
+ },
+ "MN": {
+ "name": "Mongolië"
+ },
+ "ME": {
+ "name": "Montenegro"
+ },
+ "MS": {
+ "name": "Montserrat"
+ },
+ "MZ": {
+ "name": "Mosambiek"
+ },
+ "NA": {
+ "name": "Namibië"
+ },
+ "NR": {
+ "name": "Nauru"
+ },
+ "NL": {
+ "name": "Nederland"
+ },
+ "NP": {
+ "name": "Nepal"
+ },
+ "NI": {
+ "name": "Nicaragua"
+ },
+ "NC": {
+ "name": "Nieu-Kaledonië"
+ },
+ "NZ": {
+ "name": "Nieu-Seeland"
+ },
+ "NE": {
+ "name": "Niger"
+ },
+ "NG": {
+ "name": "Nigerië"
+ },
+ "NU": {
+ "name": "Niue"
+ },
+ "KP": {
+ "name": "Noord-Korea"
+ },
+ "MP": {
+ "name": "Noordelike Mariana-eilande"
+ },
+ "NO": {
+ "name": "Noorweë"
+ },
+ "NF": {
+ "name": "Norfolkeiland"
+ },
+ "UA": {
+ "name": "Oekraïne"
+ },
+ "UZ": {
+ "name": "Oesbekistan"
+ },
+ "OM": {
+ "name": "Oman"
+ },
+ "TL": {
+ "name": "Oos-Timor"
+ },
+ "AT": {
+ "name": "Oostenryk"
+ },
+ "PK": {
+ "name": "Pakistan"
+ },
+ "PW": {
+ "name": "Palau"
+ },
+ "PS": {
+ "name": "Palestynse gebiede"
+ },
+ "PA": {
+ "name": "Panama"
+ },
+ "PG": {
+ "name": "Papoea-Nieu-Guinee"
+ },
+ "PY": {
+ "name": "Paraguay"
+ },
+ "PE": {
+ "name": "Peru"
+ },
+ "PN": {
+ "name": "Pitcairneilande"
+ },
+ "PL": {
+ "name": "Pole"
+ },
+ "PT": {
+ "name": "Portugal"
+ },
+ "PR": {
+ "name": "Puerto Rico"
+ },
+ "CG": {
+ "name": "Republiek van die Kongo"
+ },
+ "RE": {
+ "name": "Réunion"
+ },
+ "RO": {
+ "name": "Roemenië"
+ },
+ "RU": {
+ "name": "Rusland"
+ },
+ "RW": {
+ "name": "Rwanda"
+ },
+ "WS": {
+ "name": "Samoa"
+ },
+ "SM": {
+ "name": "San Marino"
+ },
+ "ST": {
+ "name": "Sao Tome en Principe"
+ },
+ "SA": {
+ "name": "Saoedi-Arabië"
+ },
+ "SN": {
+ "name": "Senegal"
+ },
+ "CF": {
+ "name": "Sentraal-Afrikaanse Republiek"
+ },
+ "RS": {
+ "name": "Serwië"
+ },
+ "SC": {
+ "name": "Seychelle"
+ },
+ "SL": {
+ "name": "Sierra Leone"
+ },
+ "SG": {
+ "name": "Singapoer"
+ },
+ "BL": {
+ "name": "Sint Barthélemy"
+ },
+ "SH": {
+ "name": "Sint Helena"
+ },
+ "KN": {
+ "name": "Sint Kitts en Nevis"
+ },
+ "LC": {
+ "name": "Sint Lucia"
+ },
+ "SX": {
+ "name": "Sint Maarten"
+ },
+ "MF": {
+ "name": "Sint Martin"
+ },
+ "PM": {
+ "name": "Sint Pierre en Miquelon"
+ },
+ "VC": {
+ "name": "Sint Vincent en die Grenadine"
+ },
+ "CY": {
+ "name": "Siprus"
+ },
+ "SY": {
+ "name": "Sirië"
+ },
+ "CN": {
+ "name": "Sjina"
+ },
+ "SK": {
+ "name": "Slowakye"
+ },
+ "SI": {
+ "name": "Slowenië"
+ },
+ "SD": {
+ "name": "Soedan"
+ },
+ "SB": {
+ "name": "Solomoneilande"
+ },
+ "SO": {
+ "name": "Somalië"
+ },
+ "ES": {
+ "name": "Spanje"
+ },
+ "LK": {
+ "name": "Sri Lanka"
+ },
+ "ZA": {
+ "name": "Suid-Afrika"
+ },
+ "GS": {
+ "name": "Suid-Georgië en die Suidelike Sandwicheilande"
+ },
+ "KR": {
+ "name": "Suid-Korea"
+ },
+ "SS": {
+ "name": "Suid-Soedan"
+ },
+ "SR": {
+ "name": "Suriname"
+ },
+ "SJ": {
+ "name": "Svalbard en Jan Mayen"
+ },
+ "SZ": {
+ "name": "Swaziland"
+ },
+ "SE": {
+ "name": "Swede"
+ },
+ "CH": {
+ "name": "Switserland"
+ },
+ "TJ": {
+ "name": "Tadjikistan"
+ },
+ "TW": {
+ "name": "Taiwan"
+ },
+ "TZ": {
+ "name": "Tanzanië"
+ },
+ "TH": {
+ "name": "Thailand"
+ },
+ "CZ": {
+ "name": "Tjeggiese Republiek"
+ },
+ "TG": {
+ "name": "Togo"
+ },
+ "TK": {
+ "name": "Tokelau"
+ },
+ "TO": {
+ "name": "Tonga"
+ },
+ "TT": {
+ "name": "Trinidad en Tobago"
+ },
+ "TA": {
+ "name": "Tristan da Cunha"
+ },
+ "TD": {
+ "name": "Tsjad"
+ },
+ "TN": {
+ "name": "Tunisië"
+ },
+ "TM": {
+ "name": "Turkmenië"
+ },
+ "TC": {
+ "name": "Turks- en Caicoseilande"
+ },
+ "TR": {
+ "name": "Turkye"
+ },
+ "TV": {
+ "name": "Tuvalu"
+ },
+ "UG": {
+ "name": "Uganda"
+ },
+ "UY": {
+ "name": "Uruguay"
+ },
+ "VU": {
+ "name": "Vanuatu"
+ },
+ "VA": {
+ "name": "Vatikaanstad"
+ },
+ "VE": {
+ "name": "Venezuela"
+ },
+ "AE": {
+ "name": "Verenigde Arabiese Emirate"
+ },
+ "GB": {
+ "name": "Verenigde Koninkryk"
+ },
+ "US": {
+ "name": "Verenigde State van Amerika"
+ },
+ "VN": {
+ "name": "Viëtnam"
+ },
+ "UM": {
+ "name": "VS klein omliggende eilande"
+ },
+ "WF": {
+ "name": "Wallis en Futuna"
+ },
+ "EH": {
+ "name": "Wes-Sahara"
+ },
+ "IS": {
+ "name": "Ysland"
+ },
+ "ZM": {
+ "name": "Zambië"
+ },
+ "ZW": {
+ "name": "Zimbabwe"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/country/agq.json b/library/intl/resources/country/agq.json
new file mode 100644
index 000000000..b95e32c0b
--- /dev/null
+++ b/library/intl/resources/country/agq.json
@@ -0,0 +1,761 @@
+{
+ "AL": {
+ "name": "Àabɛnìa"
+ },
+ "DZ": {
+ "name": "Àadzɛlìa"
+ },
+ "AR": {
+ "name": "Àdzɛ̀ntinà"
+ },
+ "PS": {
+ "name": "AdzɨmÄ kɨ Å‹gùŋ kɨ PalÉ›sɨtɨnyia à kɨ Gazà kò"
+ },
+ "IE": {
+ "name": "Aelɨ̀lân"
+ },
+ "IS": {
+ "name": "Aesɨ̀lân"
+ },
+ "AF": {
+ "name": "Àfɨ̀ganìsɨ̀tân"
+ },
+ "ZA": {
+ "name": "Afɨlekà ghɨ Emàm ghò"
+ },
+ "AX": {
+ "name": "Ã…land Islands"
+ },
+ "AW": {
+ "name": "Àlubà"
+ },
+ "AS": {
+ "name": "Àmɛlekan Samwà"
+ },
+ "AM": {
+ "name": "Àmɛnyìa"
+ },
+ "AD": {
+ "name": "Àndolà"
+ },
+ "AQ": {
+ "name": "Antarctica"
+ },
+ "AG": {
+ "name": "Àntigwà à Bàbudà"
+ },
+ "AO": {
+ "name": "Àŋgolà"
+ },
+ "AI": {
+ "name": "Àŋgwilà"
+ },
+ "AC": {
+ "name": "Ascension Island"
+ },
+ "AZ": {
+ "name": "Àzɨbɛ̀dzân"
+ },
+ "BB": {
+ "name": "Bàbadòs"
+ },
+ "BS": {
+ "name": "Bàhamàs"
+ },
+ "BH": {
+ "name": "Bàlaen"
+ },
+ "BD": {
+ "name": "Baŋgɨ̀làdɛ̂"
+ },
+ "BE": {
+ "name": "Bɛɛdzwùm"
+ },
+ "BY": {
+ "name": "Bɛlàlûs"
+ },
+ "BZ": {
+ "name": "Bɛ̀lezɨ̀"
+ },
+ "BM": {
+ "name": "Bɛ̀mudà"
+ },
+ "BJ": {
+ "name": "Bɛ̀nɨ̂ŋ"
+ },
+ "BR": {
+ "name": "Bɨ̀làzîi"
+ },
+ "BN": {
+ "name": "Bɨ̀lunè"
+ },
+ "BO": {
+ "name": "Bòlevà"
+ },
+ "BA": {
+ "name": "Bosɨnyìa à Hɛ̀zɛ̀gòvinà"
+ },
+ "BW": {
+ "name": "Bòtɨ̀swǎnà"
+ },
+ "BF": {
+ "name": "Bùkinà Fasò"
+ },
+ "BI": {
+ "name": "Bùlundì"
+ },
+ "BG": {
+ "name": "Bùugɛlìa"
+ },
+ "IC": {
+ "name": "Canary Islands"
+ },
+ "BQ": {
+ "name": "Caribbean Netherlands"
+ },
+ "EA": {
+ "name": "Ceuta & Melilla"
+ },
+ "TD": {
+ "name": "Châ"
+ },
+ "CN": {
+ "name": "Chaenà"
+ },
+ "CZ": {
+ "name": "Chɛ̂ Lèkpubèlè"
+ },
+ "CL": {
+ "name": "Chilè"
+ },
+ "CX": {
+ "name": "Christmas Island"
+ },
+ "FK": {
+ "name": "Chwɨlà fɨ Fakɨlàn"
+ },
+ "MH": {
+ "name": "Chwɨlà fɨ Mashà"
+ },
+ "NF": {
+ "name": "Chwɨlà fɨ Nufòʔ"
+ },
+ "SB": {
+ "name": "Chwɨlà fɨ Solomwɨ̀n"
+ },
+ "MP": {
+ "name": "Chwɨlà mÌ€ MàlÇanà mɨ̀ Ekùw mò"
+ },
+ "VG": {
+ "name": "Chwɨlà m̀ Vidzinyìa m̀ Bɨ̀letì mò"
+ },
+ "TC": {
+ "name": "Chwɨla n Tɨtê à Kaekùs"
+ },
+ "KY": {
+ "name": "Chwɨlà ŋ̀ Kaemàn"
+ },
+ "CV": {
+ "name": "Chwɨla ŋ̀ Kɛ̀b Vɛ̂ɛ"
+ },
+ "CK": {
+ "name": "Chwɨla ŋ̀ Kûʔ"
+ },
+ "CC": {
+ "name": "Cocos (Keeling) Islands"
+ },
+ "CW": {
+ "name": "Curaçao"
+ },
+ "CD": {
+ "name": "Dɛ̀mùkàlatì Lèkpubèlè è Kuŋgù"
+ },
+ "DK": {
+ "name": "Dɛnɨmà"
+ },
+ "DG": {
+ "name": "Diego Garcia"
+ },
+ "IO": {
+ "name": "Dɨŋò kɨ dzughùnstòʔ kɨ Endìa kɨ Bɨ̀letì kò"
+ },
+ "DM": {
+ "name": "Dòmenekà"
+ },
+ "DO": {
+ "name": "Dòmenekà Lèkpubèlè"
+ },
+ "JP": {
+ "name": "Dzàkpân"
+ },
+ "DE": {
+ "name": "Dzamanè"
+ },
+ "JM": {
+ "name": "Dzàmɛkà"
+ },
+ "GI": {
+ "name": "Dzibɨ̀latà"
+ },
+ "DJ": {
+ "name": "Dzìbuwtì"
+ },
+ "JO": {
+ "name": "Dzodàn"
+ },
+ "GE": {
+ "name": "Dzɔɔdzìa"
+ },
+ "EG": {
+ "name": "Edzì"
+ },
+ "EC": {
+ "name": "Ekwadò"
+ },
+ "GQ": {
+ "name": "Èkwɛ̀tolia Ginè"
+ },
+ "IQ": {
+ "name": "Èlâkɨ̀"
+ },
+ "IR": {
+ "name": "Èlân"
+ },
+ "ER": {
+ "name": "Èletɨ̀là"
+ },
+ "IN": {
+ "name": "Endìa"
+ },
+ "ID": {
+ "name": "Èndòneshìa"
+ },
+ "TL": {
+ "name": "Ês Taemò"
+ },
+ "SV": {
+ "name": "Esàvadò"
+ },
+ "EE": {
+ "name": "Èsɨ̀tonyìa"
+ },
+ "IT": {
+ "name": "Etalè"
+ },
+ "ET": {
+ "name": "Ètyǒpìa"
+ },
+ "IL": {
+ "name": "Ezɨ̀lɛ̂"
+ },
+ "FR": {
+ "name": "Fàlâŋnsì"
+ },
+ "FO": {
+ "name": "Faroe Islands"
+ },
+ "PH": {
+ "name": "Felèkpî"
+ },
+ "FJ": {
+ "name": "Fidzi"
+ },
+ "FI": {
+ "name": "Fɨnlàn"
+ },
+ "TF": {
+ "name": "French Southern Territories"
+ },
+ "GH": {
+ "name": "Gaanà"
+ },
+ "GA": {
+ "name": "Gàbûn"
+ },
+ "GM": {
+ "name": "Gambìa"
+ },
+ "GF": {
+ "name": "Gàyanà è Fàlâŋnsì"
+ },
+ "GN": {
+ "name": "Ginè"
+ },
+ "GW": {
+ "name": "Ginè Bìsawù"
+ },
+ "NG": {
+ "name": "Gɨ̀anyɨ"
+ },
+ "GL": {
+ "name": "Gɨ̀lenlân"
+ },
+ "GR": {
+ "name": "Gɨ̀lês"
+ },
+ "GD": {
+ "name": "Gɨ̀lɛnadà"
+ },
+ "GG": {
+ "name": "Guernsey"
+ },
+ "GY": {
+ "name": "Gùyanà"
+ },
+ "GP": {
+ "name": "Gwadalukpɛ̀"
+ },
+ "GU": {
+ "name": "Gwam"
+ },
+ "GT": {
+ "name": "Gwàtɨ̀malà"
+ },
+ "HT": {
+ "name": "Hǎetì"
+ },
+ "HK": {
+ "name": "Hong Kong SAR China"
+ },
+ "HN": {
+ "name": "Hɔndulàs"
+ },
+ "HU": {
+ "name": "Hɔŋgàlè"
+ },
+ "IM": {
+ "name": "Isle of Man"
+ },
+ "JE": {
+ "name": "Jersey"
+ },
+ "NC": {
+ "name": "Kàlèdonyìa È fūghū"
+ },
+ "CM": {
+ "name": "Kàmàlûŋ"
+ },
+ "KH": {
+ "name": "Kàmbodìa"
+ },
+ "CA": {
+ "name": "Kanadà"
+ },
+ "QA": {
+ "name": "Katà"
+ },
+ "KZ": {
+ "name": "Kàzasɨ̀tân"
+ },
+ "KI": {
+ "name": "Kèlèbati"
+ },
+ "KG": {
+ "name": "Kìdzisɨ̀tân"
+ },
+ "KE": {
+ "name": "Kɨnyà"
+ },
+ "CO": {
+ "name": "Kòlombìa"
+ },
+ "KM": {
+ "name": "Komolòs"
+ },
+ "CR": {
+ "name": "Kòsɨ̀tà Lekà"
+ },
+ "XK": {
+ "name": "Kosovo"
+ },
+ "HR": {
+ "name": "Kòwɛshìa"
+ },
+ "PK": {
+ "name": "Kpakìsɨ̀tân"
+ },
+ "PG": {
+ "name": "Kpakpua Ginè È fūghū"
+ },
+ "PY": {
+ "name": "Kpalàgwɛ̂"
+ },
+ "PW": {
+ "name": "Kpàlawù"
+ },
+ "PA": {
+ "name": "Kpanàma"
+ },
+ "PE": {
+ "name": "Kpɛlû"
+ },
+ "PN": {
+ "name": "Kpitɨ̀kalè"
+ },
+ "PF": {
+ "name": "Kpoleneshìa è Fàlâŋnsì"
+ },
+ "PR": {
+ "name": "KpÇ’to Leko"
+ },
+ "PL": {
+ "name": "Kpulàn"
+ },
+ "PT": {
+ "name": "Kputuwgà"
+ },
+ "CI": {
+ "name": "Ku Dɨ̀vûa"
+ },
+ "CG": {
+ "name": "Kuŋgù"
+ },
+ "KP": {
+ "name": "Kùulîa, Ekùw"
+ },
+ "KR": {
+ "name": "Kùulîa, Emàm"
+ },
+ "CU": {
+ "name": "Kuuwbà"
+ },
+ "KW": {
+ "name": "Kùwɛ̂"
+ },
+ "LR": {
+ "name": "Làebɛlìa"
+ },
+ "LV": {
+ "name": "Làtɨva"
+ },
+ "LA": {
+ "name": "Làwos"
+ },
+ "LY": {
+ "name": "Lebìa"
+ },
+ "LI": {
+ "name": "Letɨnshɨ̀n"
+ },
+ "LT": {
+ "name": "Lètwǎnyìa"
+ },
+ "RE": {
+ "name": "Lèyunyɔ̀ŋ"
+ },
+ "LB": {
+ "name": "Lɛbanè"
+ },
+ "LS": {
+ "name": "Lɛ̀sotù"
+ },
+ "RU": {
+ "name": "Loshìa"
+ },
+ "RO": {
+ "name": "Lùmanyìa"
+ },
+ "RW": {
+ "name": "Lùwandà"
+ },
+ "LU": {
+ "name": "Luzɨmbùʔ"
+ },
+ "MT": {
+ "name": "Maatà"
+ },
+ "MO": {
+ "name": "Macau SAR China"
+ },
+ "MG": {
+ "name": "Màdàgasɨkà"
+ },
+ "MV": {
+ "name": "Màdivè"
+ },
+ "FM": {
+ "name": "Maekòlòneshìa"
+ },
+ "MW": {
+ "name": "Màlawì"
+ },
+ "ML": {
+ "name": "Malè"
+ },
+ "MY": {
+ "name": "Màlɛshìa"
+ },
+ "MQ": {
+ "name": "Màtìnekì"
+ },
+ "YT": {
+ "name": "Màyotì"
+ },
+ "BT": {
+ "name": "Mbutàn"
+ },
+ "MX": {
+ "name": "Mɛkɨzikù"
+ },
+ "MM": {
+ "name": "MÇanmà"
+ },
+ "MK": {
+ "name": "Mɨ̀sɨ̀donyìa"
+ },
+ "MA": {
+ "name": "Mòlokò"
+ },
+ "ME": {
+ "name": "Montenegro"
+ },
+ "MD": {
+ "name": "Mòodovà"
+ },
+ "MU": {
+ "name": "Mùleshwɨ̀s"
+ },
+ "MR": {
+ "name": "Mùlètanyìa"
+ },
+ "MC": {
+ "name": "Mùnaku"
+ },
+ "MN": {
+ "name": "Mùŋgolìa"
+ },
+ "MS": {
+ "name": "Mùŋtselà"
+ },
+ "MZ": {
+ "name": "Mùzàmbî"
+ },
+ "NE": {
+ "name": "Naedzà"
+ },
+ "NA": {
+ "name": "Nàmibìa"
+ },
+ "NR": {
+ "name": "Nàwulù"
+ },
+ "NL": {
+ "name": "Nedàlân"
+ },
+ "NP": {
+ "name": "Nɛkpâa"
+ },
+ "NI": {
+ "name": "Nikàlagwà"
+ },
+ "NU": {
+ "name": "Niyu"
+ },
+ "NO": {
+ "name": "Noowɛ̂ɛ"
+ },
+ "CY": {
+ "name": "Saekpùlù"
+ },
+ "WS": {
+ "name": "Sàmowà"
+ },
+ "SM": {
+ "name": "Sàn Màlenù"
+ },
+ "ST": {
+ "name": "Sawo Tɔ̀me à Kpèlènsikpɛ̀"
+ },
+ "SA": {
+ "name": "Sawudi Alabi"
+ },
+ "RS": {
+ "name": "Serbia"
+ },
+ "SC": {
+ "name": "Sɛchɛ̀lɛ̀s"
+ },
+ "SH": {
+ "name": "Sɛ̀n Èlenà"
+ },
+ "KN": {
+ "name": "Sɛ̀n Kî à Nevì"
+ },
+ "PM": {
+ "name": "Sɛ̀n Kpiyɛ̀ à Mikelɔŋ"
+ },
+ "LC": {
+ "name": "Sɛ̀n Lushìa"
+ },
+ "VC": {
+ "name": "Sɛ̀n Vinsɨ̀n à Gɨlenadi Ù tē"
+ },
+ "SN": {
+ "name": "Sɛ̀nɛ̀gâa"
+ },
+ "CF": {
+ "name": "Sɛnta Afɨlekan Lèkpobèlè"
+ },
+ "SZ": {
+ "name": "Shǔazìlân"
+ },
+ "SY": {
+ "name": "Silîa"
+ },
+ "SL": {
+ "name": "Silìa lûŋ"
+ },
+ "SX": {
+ "name": "Sint Maarten"
+ },
+ "SG": {
+ "name": "Siŋgàkpôo"
+ },
+ "ES": {
+ "name": "Sɨ̀kpɛ̂n"
+ },
+ "LK": {
+ "name": "Sɨ̀le Laŋkà"
+ },
+ "SK": {
+ "name": "Sɨ̀lòvɨkɨ̀a"
+ },
+ "SI": {
+ "name": "Sɨ̀lòvɨnyìa"
+ },
+ "SO": {
+ "name": "Sòmalìa"
+ },
+ "GS": {
+ "name": "South Georgia & South Sandwich Islands"
+ },
+ "SS": {
+ "name": "South Sudan"
+ },
+ "BL": {
+ "name": "St. Barthélemy"
+ },
+ "MF": {
+ "name": "St. Martin"
+ },
+ "SD": {
+ "name": "Sùdân"
+ },
+ "SE": {
+ "name": "Suedɨ̀n"
+ },
+ "CH": {
+ "name": "Suezàlân"
+ },
+ "SR": {
+ "name": "Sulènamè"
+ },
+ "SJ": {
+ "name": "Svalbard & Jan Mayen"
+ },
+ "TZ": {
+ "name": "Tàanzanyìa"
+ },
+ "TJ": {
+ "name": "Tàdzikìsɨ̀tân"
+ },
+ "TH": {
+ "name": "Taelàn"
+ },
+ "TW": {
+ "name": "Taewàn"
+ },
+ "TR": {
+ "name": "Teekì"
+ },
+ "TM": {
+ "name": "Tekɨmènèsɨ̀tân"
+ },
+ "TT": {
+ "name": "Tèlenedà à Tòbagù"
+ },
+ "TA": {
+ "name": "Tristan da Cunha"
+ },
+ "TG": {
+ "name": "Tugù"
+ },
+ "TN": {
+ "name": "Tùneshìa"
+ },
+ "TO": {
+ "name": "Tuŋgà"
+ },
+ "TK": {
+ "name": "Tuwkelawù"
+ },
+ "TV": {
+ "name": "Tuwvalùw"
+ },
+ "VI": {
+ "name": "U. S. Chwɨlà fɨ Mbuʔmbu"
+ },
+ "UM": {
+ "name": "U.S. Outlying Islands"
+ },
+ "OM": {
+ "name": "Umàn"
+ },
+ "US": {
+ "name": "USA"
+ },
+ "AU": {
+ "name": "Ùsɨ̀tɛ̀lɛlìa"
+ },
+ "AT": {
+ "name": "Usɨtɨ̀là"
+ },
+ "VU": {
+ "name": "Vànǔatùw"
+ },
+ "VA": {
+ "name": "Vatikàn Sɨ̀tɛ̂"
+ },
+ "VE": {
+ "name": "Vɛ̀nɛ̀zǔɛɛlà"
+ },
+ "VN": {
+ "name": "Vìyɛnàm"
+ },
+ "WF": {
+ "name": "Wales à Fùwtuwnà"
+ },
+ "EH": {
+ "name": "Western Sahara"
+ },
+ "YE": {
+ "name": "Yɛmɛ̀n"
+ },
+ "UG": {
+ "name": "Yùgandà"
+ },
+ "UA": {
+ "name": "Yùkɛ̀lɛ̂"
+ },
+ "UY": {
+ "name": "Yulùgwɛ̂"
+ },
+ "AE": {
+ "name": "Yùnaetɛ Alab ɛmelɛ̀"
+ },
+ "GB": {
+ "name": "Yùnaetɛ Kiŋdɔ̀m"
+ },
+ "UZ": {
+ "name": "Yùzɨ̀bɛkìsɨ̀tân"
+ },
+ "ZM": {
+ "name": "Zambìa"
+ },
+ "NZ": {
+ "name": "Zìlân È fūghū"
+ },
+ "ZW": {
+ "name": "Zìmbagbɛ̀"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/country/ak.json b/library/intl/resources/country/ak.json
new file mode 100644
index 000000000..92ccb39c3
--- /dev/null
+++ b/library/intl/resources/country/ak.json
@@ -0,0 +1,761 @@
+{
+ "AM": {
+ "name": "Aamenia"
+ },
+ "IE": {
+ "name": "Aereland"
+ },
+ "IS": {
+ "name": "Aesland"
+ },
+ "AF": {
+ "name": "Afganistan"
+ },
+ "ZA": {
+ "name": "Afrika Anaafo"
+ },
+ "CF": {
+ "name": "Afrika Finimfin Man"
+ },
+ "AR": {
+ "name": "Agyɛntina"
+ },
+ "GB": {
+ "name": "Ahendiman Nkabom"
+ },
+ "AX": {
+ "name": "Ã…land Islands"
+ },
+ "AL": {
+ "name": "Albenia"
+ },
+ "US": {
+ "name": "Amɛrika"
+ },
+ "AS": {
+ "name": "Amɛrika Samoa"
+ },
+ "VI": {
+ "name": "Amɛrika Virgin Islands"
+ },
+ "KR": {
+ "name": "Anaafo Koria"
+ },
+ "AD": {
+ "name": "Andora"
+ },
+ "AO": {
+ "name": "Angola"
+ },
+ "AI": {
+ "name": "Anguila"
+ },
+ "AQ": {
+ "name": "Antarctica"
+ },
+ "AG": {
+ "name": "Antigua ne Baabuda"
+ },
+ "AW": {
+ "name": "Aruba"
+ },
+ "AC": {
+ "name": "Ascension Island"
+ },
+ "AZ": {
+ "name": "Azebaegyan"
+ },
+ "BB": {
+ "name": "Baabados"
+ },
+ "BS": {
+ "name": "Bahama"
+ },
+ "BD": {
+ "name": "Bangladɛhye"
+ },
+ "BH": {
+ "name": "Baren"
+ },
+ "BZ": {
+ "name": "Beliz"
+ },
+ "BY": {
+ "name": "Bɛlarus"
+ },
+ "BE": {
+ "name": "Bɛlgyium"
+ },
+ "BM": {
+ "name": "Bɛmuda"
+ },
+ "BJ": {
+ "name": "Bɛnin"
+ },
+ "BO": {
+ "name": "Bolivia"
+ },
+ "BA": {
+ "name": "Bosnia ne Hɛzegovina"
+ },
+ "BF": {
+ "name": "Bɔkina Faso"
+ },
+ "BG": {
+ "name": "Bɔlgeria"
+ },
+ "BW": {
+ "name": "Bɔtswana"
+ },
+ "BR": {
+ "name": "Brazil"
+ },
+ "VG": {
+ "name": "Britainfo Virgin Islands"
+ },
+ "IO": {
+ "name": "Britenfo Hɔn Man Wɔ India Po No Mu"
+ },
+ "BN": {
+ "name": "Brunae"
+ },
+ "BI": {
+ "name": "Burundi"
+ },
+ "BT": {
+ "name": "Butan"
+ },
+ "IC": {
+ "name": "Canary Islands"
+ },
+ "BQ": {
+ "name": "Caribbean Netherlands"
+ },
+ "EA": {
+ "name": "Ceuta & Melilla"
+ },
+ "CX": {
+ "name": "Christmas Island"
+ },
+ "CC": {
+ "name": "Cocos (Keeling) Islands"
+ },
+ "CW": {
+ "name": "Curaçao"
+ },
+ "DK": {
+ "name": "Dɛnmak"
+ },
+ "DG": {
+ "name": "Diego Garcia"
+ },
+ "DM": {
+ "name": "Dɔmeneka"
+ },
+ "DO": {
+ "name": "Dɔmeneka Kurokɛse"
+ },
+ "KP": {
+ "name": "Etifi Koria"
+ },
+ "SV": {
+ "name": "Æl SalvadÉ”"
+ },
+ "ER": {
+ "name": "Æritrea"
+ },
+ "EE": {
+ "name": "Æstonia"
+ },
+ "FO": {
+ "name": "Faroe Islands"
+ },
+ "FJ": {
+ "name": "Figyi"
+ },
+ "FI": {
+ "name": "Finland"
+ },
+ "FK": {
+ "name": "Fɔlkman Aeland"
+ },
+ "TF": {
+ "name": "French Southern Territories"
+ },
+ "GF": {
+ "name": "Frɛnkye Gayana"
+ },
+ "PF": {
+ "name": "Frɛnkye Pɔlenehyia"
+ },
+ "FR": {
+ "name": "Frɛnkyeman"
+ },
+ "GH": {
+ "name": "Gaana"
+ },
+ "GA": {
+ "name": "Gabɔn"
+ },
+ "GM": {
+ "name": "Gambia"
+ },
+ "GY": {
+ "name": "Gayana"
+ },
+ "GN": {
+ "name": "Gini"
+ },
+ "GW": {
+ "name": "Gini Bisaw"
+ },
+ "GQ": {
+ "name": "Gini Ikuweta"
+ },
+ "GR": {
+ "name": "Greekman"
+ },
+ "GL": {
+ "name": "Greenman"
+ },
+ "GD": {
+ "name": "Grenada"
+ },
+ "GU": {
+ "name": "Guam"
+ },
+ "GG": {
+ "name": "Guernsey"
+ },
+ "GP": {
+ "name": "Guwadelup"
+ },
+ "GT": {
+ "name": "Guwatemala"
+ },
+ "DE": {
+ "name": "Gyaaman"
+ },
+ "JM": {
+ "name": "Gyameka"
+ },
+ "JP": {
+ "name": "Gyapan"
+ },
+ "GI": {
+ "name": "Gyebralta"
+ },
+ "DJ": {
+ "name": "Gyibuti"
+ },
+ "JO": {
+ "name": "Gyɔdan"
+ },
+ "GE": {
+ "name": "Gyɔgyea"
+ },
+ "HU": {
+ "name": "Hangari"
+ },
+ "HT": {
+ "name": "Heiti"
+ },
+ "HK": {
+ "name": "Hong Kong SAR China"
+ },
+ "HN": {
+ "name": "Hɔnduras"
+ },
+ "EC": {
+ "name": "IkuwadÉ”"
+ },
+ "IN": {
+ "name": "India"
+ },
+ "ID": {
+ "name": "Indɔnehyia"
+ },
+ "IQ": {
+ "name": "Irak"
+ },
+ "IR": {
+ "name": "Iran"
+ },
+ "IM": {
+ "name": "Isle of Man"
+ },
+ "IL": {
+ "name": "Israel"
+ },
+ "IT": {
+ "name": "Itali"
+ },
+ "ET": {
+ "name": "Ithiopia"
+ },
+ "JE": {
+ "name": "Jersey"
+ },
+ "NC": {
+ "name": "Kaledonia Foforo"
+ },
+ "KH": {
+ "name": "Kambodia"
+ },
+ "CM": {
+ "name": "Kamɛrun"
+ },
+ "CA": {
+ "name": "Kanada"
+ },
+ "QA": {
+ "name": "Kata"
+ },
+ "KZ": {
+ "name": "Kazakstan"
+ },
+ "KY": {
+ "name": "Kemanfo Islands"
+ },
+ "CV": {
+ "name": "Kepvɛdfo Islands"
+ },
+ "KG": {
+ "name": "Kɛɛgestan"
+ },
+ "KE": {
+ "name": "Kɛnya"
+ },
+ "KI": {
+ "name": "Kiribati"
+ },
+ "CO": {
+ "name": "Kolombia"
+ },
+ "CG": {
+ "name": "Kongo"
+ },
+ "CD": {
+ "name": "Kongo (Zair)"
+ },
+ "CK": {
+ "name": "Kook Nsupɔw"
+ },
+ "XK": {
+ "name": "Kosovo"
+ },
+ "KM": {
+ "name": "Kɔmɔrɔs"
+ },
+ "CR": {
+ "name": "Kɔsta Rika"
+ },
+ "HR": {
+ "name": "Krowehyia"
+ },
+ "CU": {
+ "name": "Kuba"
+ },
+ "KW": {
+ "name": "Kuwete"
+ },
+ "TD": {
+ "name": "Kyad"
+ },
+ "CN": {
+ "name": "Kyaena"
+ },
+ "CZ": {
+ "name": "Kyɛk Kurokɛse"
+ },
+ "CL": {
+ "name": "Kyili"
+ },
+ "CI": {
+ "name": "La Côte d’Ivoire"
+ },
+ "LR": {
+ "name": "Laeberia"
+ },
+ "LU": {
+ "name": "Laksembɛg"
+ },
+ "LA": {
+ "name": "Laos"
+ },
+ "LV": {
+ "name": "Latvia"
+ },
+ "LI": {
+ "name": "Lektenstaen"
+ },
+ "LB": {
+ "name": "Lɛbanɔn"
+ },
+ "LS": {
+ "name": "Lɛsutu"
+ },
+ "LY": {
+ "name": "Libya"
+ },
+ "LT": {
+ "name": "Lituwenia"
+ },
+ "MO": {
+ "name": "Macau SAR China"
+ },
+ "MG": {
+ "name": "Madagaska"
+ },
+ "FM": {
+ "name": "Maekronehyia"
+ },
+ "MW": {
+ "name": "Malawi"
+ },
+ "MV": {
+ "name": "Maldives"
+ },
+ "MY": {
+ "name": "Malehyia"
+ },
+ "ML": {
+ "name": "Mali"
+ },
+ "MS": {
+ "name": "Mantserat"
+ },
+ "MH": {
+ "name": "Marshall Islands"
+ },
+ "MK": {
+ "name": "Masedonia"
+ },
+ "MQ": {
+ "name": "Matinik"
+ },
+ "YT": {
+ "name": "Mayɔte"
+ },
+ "MX": {
+ "name": "Mɛksiko"
+ },
+ "MM": {
+ "name": "Miyanma"
+ },
+ "ME": {
+ "name": "Montenegro"
+ },
+ "MA": {
+ "name": "Moroko"
+ },
+ "MZ": {
+ "name": "Mozambik"
+ },
+ "MD": {
+ "name": "Mɔldova"
+ },
+ "MT": {
+ "name": "Mɔlta"
+ },
+ "MC": {
+ "name": "Mɔnako"
+ },
+ "MN": {
+ "name": "Mɔngolia"
+ },
+ "MU": {
+ "name": "Mɔrehyeɔs"
+ },
+ "MR": {
+ "name": "Mɔretenia"
+ },
+ "NG": {
+ "name": "Naegyeria"
+ },
+ "NA": {
+ "name": "Namibia"
+ },
+ "NR": {
+ "name": "Naworu"
+ },
+ "NI": {
+ "name": "Nekaraguwa"
+ },
+ "NL": {
+ "name": "Nɛdɛland"
+ },
+ "NP": {
+ "name": "Nɛpɔl"
+ },
+ "NE": {
+ "name": "NigyÉ›"
+ },
+ "EG": {
+ "name": "Nisrim"
+ },
+ "NU": {
+ "name": "Niyu"
+ },
+ "MP": {
+ "name": "Northern Mariana Islands"
+ },
+ "NF": {
+ "name": "Nɔfolk Aeland"
+ },
+ "NO": {
+ "name": "Nɔɔwe"
+ },
+ "OM": {
+ "name": "Oman"
+ },
+ "DZ": {
+ "name": "Ɔlgyeria"
+ },
+ "AU": {
+ "name": "Ɔstrelia"
+ },
+ "AT": {
+ "name": "Ɔstria"
+ },
+ "PK": {
+ "name": "Pakistan"
+ },
+ "PW": {
+ "name": "Palau"
+ },
+ "PS": {
+ "name": "Palestaen West Bank ne Gaza"
+ },
+ "PA": {
+ "name": "Panama"
+ },
+ "PG": {
+ "name": "Papua Guinea Foforo"
+ },
+ "PY": {
+ "name": "Paraguay"
+ },
+ "PE": {
+ "name": "Peru"
+ },
+ "PH": {
+ "name": "Philippines"
+ },
+ "PN": {
+ "name": "Pitcairn"
+ },
+ "PL": {
+ "name": "Poland"
+ },
+ "PT": {
+ "name": "Pɔtugal"
+ },
+ "PR": {
+ "name": "Puɛto Riko"
+ },
+ "RE": {
+ "name": "Reyuniɔn"
+ },
+ "RO": {
+ "name": "Romenia"
+ },
+ "RU": {
+ "name": "Rɔhyea"
+ },
+ "RW": {
+ "name": "Rwanda"
+ },
+ "CY": {
+ "name": "Saeprɔs"
+ },
+ "SH": {
+ "name": "Saint Helena"
+ },
+ "KN": {
+ "name": "Saint Kitts ne Nɛves"
+ },
+ "LC": {
+ "name": "Saint Lucia"
+ },
+ "PM": {
+ "name": "Saint Pierre ne Miquelon"
+ },
+ "VC": {
+ "name": "Saint Vincent ne Grenadines"
+ },
+ "WS": {
+ "name": "Samoa"
+ },
+ "SM": {
+ "name": "San Marino"
+ },
+ "ST": {
+ "name": "São Tomé and Príncipe"
+ },
+ "SA": {
+ "name": "Saudi Arabia"
+ },
+ "SN": {
+ "name": "Senegal"
+ },
+ "RS": {
+ "name": "Serbia"
+ },
+ "SC": {
+ "name": "Seyhyɛl"
+ },
+ "SL": {
+ "name": "Sierra Leone"
+ },
+ "SG": {
+ "name": "SingapÉ”"
+ },
+ "SX": {
+ "name": "Sint Maarten"
+ },
+ "SY": {
+ "name": "Siria"
+ },
+ "SK": {
+ "name": "Slovakia"
+ },
+ "SI": {
+ "name": "Slovinia"
+ },
+ "SB": {
+ "name": "Solomon Islands"
+ },
+ "SO": {
+ "name": "Somalia"
+ },
+ "GS": {
+ "name": "South Georgia & South Sandwich Islands"
+ },
+ "SS": {
+ "name": "South Sudan"
+ },
+ "ES": {
+ "name": "Spain"
+ },
+ "LK": {
+ "name": "Sri Lanka"
+ },
+ "BL": {
+ "name": "St. Barthélemy"
+ },
+ "MF": {
+ "name": "St. Martin"
+ },
+ "SD": {
+ "name": "Sudan"
+ },
+ "SR": {
+ "name": "Suriname"
+ },
+ "SJ": {
+ "name": "Svalbard & Jan Mayen"
+ },
+ "SZ": {
+ "name": "Swaziland"
+ },
+ "SE": {
+ "name": "Sweden"
+ },
+ "CH": {
+ "name": "Swetzaland"
+ },
+ "TH": {
+ "name": "Taeland"
+ },
+ "TW": {
+ "name": "Taiwan"
+ },
+ "TJ": {
+ "name": "Tajikistan"
+ },
+ "TZ": {
+ "name": "Tanzania"
+ },
+ "TR": {
+ "name": "Tɛɛki"
+ },
+ "TM": {
+ "name": "Tɛkmɛnistan"
+ },
+ "TL": {
+ "name": "TimÉ” Boka"
+ },
+ "TG": {
+ "name": "Togo"
+ },
+ "TK": {
+ "name": "Tokelau"
+ },
+ "TO": {
+ "name": "Tonga"
+ },
+ "TT": {
+ "name": "Trinidad ne Tobago"
+ },
+ "TA": {
+ "name": "Tristan da Cunha"
+ },
+ "TN": {
+ "name": "Tunihyia"
+ },
+ "TC": {
+ "name": "Turks ne Caicos Islands"
+ },
+ "TV": {
+ "name": "Tuvalu"
+ },
+ "UM": {
+ "name": "U.S. Outlying Islands"
+ },
+ "UG": {
+ "name": "Uganda"
+ },
+ "UA": {
+ "name": "Ukren"
+ },
+ "AE": {
+ "name": "United Arab Emirates"
+ },
+ "UZ": {
+ "name": "Uzbɛkistan"
+ },
+ "VU": {
+ "name": "Vanuatu"
+ },
+ "VA": {
+ "name": "Vatican Man"
+ },
+ "VE": {
+ "name": "Venezuela"
+ },
+ "VN": {
+ "name": "Viɛtnam"
+ },
+ "WF": {
+ "name": "Wallis ne Futuna"
+ },
+ "EH": {
+ "name": "Western Sahara"
+ },
+ "YE": {
+ "name": "Yɛmen"
+ },
+ "UY": {
+ "name": "Yurugwae"
+ },
+ "ZM": {
+ "name": "Zambia"
+ },
+ "ZW": {
+ "name": "Zembabwe"
+ },
+ "NZ": {
+ "name": "Ziland Foforo"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/country/am.json b/library/intl/resources/country/am.json
new file mode 100644
index 000000000..ea86c156d
--- /dev/null
+++ b/library/intl/resources/country/am.json
@@ -0,0 +1,761 @@
+{
+ "HU": {
+ "name": "ሀንጋሪ"
+ },
+ "HT": {
+ "name": "ሀይቲ"
+ },
+ "IN": {
+ "name": "ህንድ"
+ },
+ "HN": {
+ "name": "ሆንዱራስ"
+ },
+ "HK": {
+ "name": "ሆንጠኮንጠSAR ቻይና"
+ },
+ "LU": {
+ "name": "ሉክሰáˆá‰ áˆ­áŒ"
+ },
+ "LY": {
+ "name": "ሊቢያ"
+ },
+ "LB": {
+ "name": "ሊባኖስ"
+ },
+ "LT": {
+ "name": "ሊቱዌኒያ"
+ },
+ "LI": {
+ "name": "ሊችተንስታይን"
+ },
+ "LV": {
+ "name": "ላትቪያ"
+ },
+ "LA": {
+ "name": "ላኦስ"
+ },
+ "LR": {
+ "name": "ላይቤሪያ"
+ },
+ "LS": {
+ "name": "ሌሶቶ"
+ },
+ "MK": {
+ "name": "መቄዶንያ"
+ },
+ "FM": {
+ "name": "ሚክሮኔዢያ"
+ },
+ "ML": {
+ "name": "ማሊ"
+ },
+ "MW": {
+ "name": "ማላዊ"
+ },
+ "MY": {
+ "name": "ማሌዢያ"
+ },
+ "MT": {
+ "name": "ማáˆá‰³"
+ },
+ "MV": {
+ "name": "ማáˆá‹²á‰­áˆµ"
+ },
+ "MH": {
+ "name": "ማርሻሠአይላንድ"
+ },
+ "MQ": {
+ "name": "ማርቲኒክ"
+ },
+ "MO": {
+ "name": "ማካኡ áˆá‹© የአስተዳደር ክáˆáˆ ቻይና"
+ },
+ "MM": {
+ "name": "ማይናማር(በርማ)"
+ },
+ "MG": {
+ "name": "ማዳጋስካር"
+ },
+ "MX": {
+ "name": "ሜክሲኮ"
+ },
+ "YT": {
+ "name": "ሜይኦቴ"
+ },
+ "TL": {
+ "name": "áˆáˆµáˆ«á‰… ሌስት"
+ },
+ "EH": {
+ "name": "áˆá‹•áˆ«á‰£á‹Š ሳህራ"
+ },
+ "MD": {
+ "name": "ሞáˆá‹¶á‰«"
+ },
+ "MU": {
+ "name": "ሞሪሸስ"
+ },
+ "MR": {
+ "name": "ሞሪቴኒያ"
+ },
+ "MA": {
+ "name": "ሞሮኮ"
+ },
+ "MC": {
+ "name": "ሞናኮ"
+ },
+ "ME": {
+ "name": "ሞንተኔáŒáˆ®"
+ },
+ "MS": {
+ "name": "ሞንትሴራት"
+ },
+ "MN": {
+ "name": "ሞንጎሊያ"
+ },
+ "MZ": {
+ "name": "ሞዛáˆá‰¢áŠ­"
+ },
+ "RW": {
+ "name": "ሩዋንዳ"
+ },
+ "RE": {
+ "name": "ሪዩኒየን"
+ },
+ "RU": {
+ "name": "ራሺያ"
+ },
+ "RO": {
+ "name": "ሮሜኒያ"
+ },
+ "SB": {
+ "name": "ሰሎሞን ደሴት"
+ },
+ "KP": {
+ "name": "ሰሜን ኮሪያ"
+ },
+ "RS": {
+ "name": "ሰርብያ"
+ },
+ "SO": {
+ "name": "ሱማሌ"
+ },
+ "SR": {
+ "name": "ሱሪናáˆ"
+ },
+ "SZ": {
+ "name": "ሱዋዚላንድ"
+ },
+ "SD": {
+ "name": "ሱዳን"
+ },
+ "LK": {
+ "name": "ሲሪላንካ"
+ },
+ "SY": {
+ "name": "ሲሪያ"
+ },
+ "SC": {
+ "name": "ሲሼáˆáˆµ"
+ },
+ "SX": {
+ "name": "ሲንት ማርተን"
+ },
+ "SG": {
+ "name": "ሲንጋá–ር"
+ },
+ "WS": {
+ "name": "ሳሞአ"
+ },
+ "SM": {
+ "name": "ሳን ማሪኖ"
+ },
+ "ST": {
+ "name": "ሳኦ ቶሜ እና á•áˆªáŠ•áˆ²á”"
+ },
+ "SA": {
+ "name": "ሳá‹á‹µáŠ áˆ¨á‰¢á‹«"
+ },
+ "CY": {
+ "name": "ሳይá•áˆ¨áˆµ"
+ },
+ "SL": {
+ "name": "ሴራሊዮን"
+ },
+ "SN": {
+ "name": "ሴኔጋáˆ"
+ },
+ "SH": {
+ "name": "ሴንት ሄለና"
+ },
+ "LC": {
+ "name": "ሴንት ሉቺያ"
+ },
+ "MF": {
+ "name": "ሴንት ማርቲን"
+ },
+ "EA": {
+ "name": "ሴኡታና ሜሊላ"
+ },
+ "SK": {
+ "name": "ስሎቫኪያ"
+ },
+ "SI": {
+ "name": "ስሎቬኒያ"
+ },
+ "SJ": {
+ "name": "ስቫáˆá‰£áˆ­á‹µ እና ጃን ማየን"
+ },
+ "CH": {
+ "name": "ስዊዘርላንድ"
+ },
+ "SE": {
+ "name": "ስዊድን"
+ },
+ "ES": {
+ "name": "ስá”ን"
+ },
+ "BL": {
+ "name": "ቅዱስ በርቴሎሜ"
+ },
+ "VC": {
+ "name": "ቅዱስ ቪንሴንት እና áŒáˆ¬áŠ“ዲንስ"
+ },
+ "KN": {
+ "name": "ቅዱስ ኪትስ እና ኔቪስ"
+ },
+ "PM": {
+ "name": "ቅዱስ á’ዬር እና ሚኩኤሎን"
+ },
+ "BT": {
+ "name": "ቡህታን"
+ },
+ "BG": {
+ "name": "ቡáˆáŒŒáˆªá‹«"
+ },
+ "BF": {
+ "name": "ቡርኪና á‹áˆ¶"
+ },
+ "BS": {
+ "name": "ባሃማስ"
+ },
+ "BH": {
+ "name": "ባህሬን"
+ },
+ "BB": {
+ "name": "ባርቤዶስ"
+ },
+ "BD": {
+ "name": "ባንáŒáˆ‹á‹²áˆ½"
+ },
+ "BZ": {
+ "name": "ቤሊዘ"
+ },
+ "BY": {
+ "name": "ቤላሩስ"
+ },
+ "BE": {
+ "name": "ቤáˆáŒ„áˆ"
+ },
+ "BM": {
+ "name": "ቤርሙዳ"
+ },
+ "BJ": {
+ "name": "ቤኒን"
+ },
+ "BN": {
+ "name": "ብሩኒ"
+ },
+ "BI": {
+ "name": "ብሩንዲ"
+ },
+ "BR": {
+ "name": "ብራዚáˆ"
+ },
+ "BO": {
+ "name": "ቦሊቪያ"
+ },
+ "BA": {
+ "name": "ቦስኒያ እና ሄርዞጎቪኒያ"
+ },
+ "BW": {
+ "name": "ቦትስዋና"
+ },
+ "VA": {
+ "name": "ቫቲካን ከተማ"
+ },
+ "VU": {
+ "name": "ቫኑአቱ"
+ },
+ "VN": {
+ "name": "ቬትናáˆ"
+ },
+ "VE": {
+ "name": "ቬንዙዌላ"
+ },
+ "TR": {
+ "name": "ቱርክ"
+ },
+ "TM": {
+ "name": "ቱርክሜኒስታን"
+ },
+ "TV": {
+ "name": "ቱቫሉ"
+ },
+ "TN": {
+ "name": "ቱኒዚያ"
+ },
+ "TZ": {
+ "name": "ታንዛኒያ"
+ },
+ "TH": {
+ "name": "ታይላንድ"
+ },
+ "TW": {
+ "name": "ታይዋን"
+ },
+ "TJ": {
+ "name": "ታጃኪስታን"
+ },
+ "TA": {
+ "name": "ትሪስታን ዲ ኩንሃ"
+ },
+ "TT": {
+ "name": "ትሪናዳድ እና ቶቤጎ"
+ },
+ "TO": {
+ "name": "ቶንጋ"
+ },
+ "TK": {
+ "name": "ቶክላá‹"
+ },
+ "TG": {
+ "name": "ቶáŒ"
+ },
+ "CL": {
+ "name": "ቺሊ"
+ },
+ "CN": {
+ "name": "ቻይና"
+ },
+ "TD": {
+ "name": "ቻድ"
+ },
+ "CZ": {
+ "name": "ቼክ ሪá‘ብሊክ"
+ },
+ "NU": {
+ "name": "ኒኡይ"
+ },
+ "NI": {
+ "name": "ኒካራጓ"
+ },
+ "NC": {
+ "name": "ኒዠካሌዶኒያ"
+ },
+ "NZ": {
+ "name": "ኒዠዚላንድ"
+ },
+ "NE": {
+ "name": "ኒጀር"
+ },
+ "NA": {
+ "name": "ናሚቢያ"
+ },
+ "NR": {
+ "name": "ናኡሩ"
+ },
+ "NG": {
+ "name": "ናይጄሪያ"
+ },
+ "NL": {
+ "name": "ኔዘርላንድ"
+ },
+ "NP": {
+ "name": "ኔá“áˆ"
+ },
+ "NO": {
+ "name": "ኖርዌ"
+ },
+ "NF": {
+ "name": "ኖርáŽáˆáŠ­ ደሴት"
+ },
+ "AL": {
+ "name": "አáˆá‰£áŠ’á‹«"
+ },
+ "DZ": {
+ "name": "አáˆáŒ„ሪያ"
+ },
+ "AW": {
+ "name": "አሩባ"
+ },
+ "AM": {
+ "name": "አርሜኒያ"
+ },
+ "AR": {
+ "name": "አርጀንቲና"
+ },
+ "AC": {
+ "name": "አሴንሽን ደሴት"
+ },
+ "AG": {
+ "name": "አንቲጓ እና ባሩዳ"
+ },
+ "AQ": {
+ "name": "አንታርክቲካ"
+ },
+ "AD": {
+ "name": "አንዶራ"
+ },
+ "AI": {
+ "name": "አንጉኢላ"
+ },
+ "AO": {
+ "name": "አንáŒáˆ‹"
+ },
+ "AU": {
+ "name": "አá‹áˆµá‰µáˆ«áˆá‹«"
+ },
+ "AZ": {
+ "name": "አዘርባጃን"
+ },
+ "IE": {
+ "name": "አየርላንድ"
+ },
+ "IM": {
+ "name": "አይሠኦá ማን"
+ },
+ "IS": {
+ "name": "አይስላንድ"
+ },
+ "AF": {
+ "name": "አáጋኒስታን"
+ },
+ "UY": {
+ "name": "ኡራጓይ"
+ },
+ "UZ": {
+ "name": "ኡá‹á‰¤áŠªáˆµá‰³áŠ•"
+ },
+ "IQ": {
+ "name": "ኢራቅ"
+ },
+ "IR": {
+ "name": "ኢራን"
+ },
+ "ET": {
+ "name": "ኢትዮጵያ"
+ },
+ "ID": {
+ "name": "ኢንዶኔዢያ"
+ },
+ "GQ": {
+ "name": "ኢኳቶሪያሠጊኒ"
+ },
+ "EC": {
+ "name": "ኢኳዶር"
+ },
+ "SV": {
+ "name": "ኤሠሳáˆá‰«á‹¶áˆ­"
+ },
+ "ER": {
+ "name": "ኤርትራ"
+ },
+ "EE": {
+ "name": "ኤስቶኒያ"
+ },
+ "IL": {
+ "name": "እስራኤáˆ"
+ },
+ "GB": {
+ "name": "እንáŒáˆŠá‹"
+ },
+ "OM": {
+ "name": "ኦማን"
+ },
+ "AT": {
+ "name": "ኦስትሪያ"
+ },
+ "CW": {
+ "name": "ኩራሳዎ"
+ },
+ "CU": {
+ "name": "ኩባ"
+ },
+ "CK": {
+ "name": "ኩክ ደሴቶች"
+ },
+ "KI": {
+ "name": "ኪሪባቲ"
+ },
+ "KG": {
+ "name": "ኪርጊስታን"
+ },
+ "CM": {
+ "name": "ካሜሩን"
+ },
+ "KH": {
+ "name": "ካáˆá‰¦á‹²á‹«"
+ },
+ "CA": {
+ "name": "ካናዳ"
+ },
+ "KZ": {
+ "name": "ካዛኪስታን"
+ },
+ "KY": {
+ "name": "ካይማን ደሴቶች"
+ },
+ "KE": {
+ "name": "ኬንያ"
+ },
+ "CV": {
+ "name": "ኬᕠቬርዴ"
+ },
+ "HR": {
+ "name": "ክሮኤሽያ"
+ },
+ "KW": {
+ "name": "ክዌት"
+ },
+ "CO": {
+ "name": "ኮሎáˆá‰¢á‹«"
+ },
+ "KM": {
+ "name": "ኮሞሮስ"
+ },
+ "CR": {
+ "name": "ኮስታ ሪካ"
+ },
+ "XK": {
+ "name": "ኮሶቮ"
+ },
+ "CI": {
+ "name": "ኮት ዲቯር"
+ },
+ "CG": {
+ "name": "ኮንጎ ብራዛቪáˆ"
+ },
+ "CD": {
+ "name": "ኮንጎ-ኪንሻሳ"
+ },
+ "CC": {
+ "name": "ኮኮስ(ኬሊንáŒ) ደሴቶች"
+ },
+ "QA": {
+ "name": "ኳታር"
+ },
+ "WF": {
+ "name": "ዋሊስ እና á‰á‰±áŠ“ ደሴቶች"
+ },
+ "ZW": {
+ "name": "á‹šáˆá‰§á‰¤"
+ },
+ "ZM": {
+ "name": "á‹›áˆá‰¢á‹«"
+ },
+ "YE": {
+ "name": "የመን"
+ },
+ "CF": {
+ "name": "የመካከለኛዠአáሪካ ሪáብሊክ"
+ },
+ "MP": {
+ "name": "የሰሜናዊ ማሪያና ደሴቶች"
+ },
+ "IO": {
+ "name": "የብሪታኒያ ህንድ á‹á‰‚ያኖስ áŒá‹›á‰µ"
+ },
+ "AE": {
+ "name": "የተባበሩት አረብ ኤáˆáˆ¬á‰µáˆµ"
+ },
+ "TC": {
+ "name": "የቱርኮችና የካኢኮስ ደሴቶች"
+ },
+ "AX": {
+ "name": "የአላንድ ደሴቶች"
+ },
+ "AS": {
+ "name": "የአሜሪካ ሳሞአ"
+ },
+ "VI": {
+ "name": "የአሜሪካ ቨርጂን ደሴቶች"
+ },
+ "VG": {
+ "name": "የእንáŒáˆŠá‹ ቨርጂን ደሴቶች"
+ },
+ "BQ": {
+ "name": "የካሪቢያን ኔዘርላንድስ"
+ },
+ "IC": {
+ "name": "የካናሪ ደሴቶች"
+ },
+ "UM": {
+ "name": "የዩ ኤስ ጠረá ላይ ያሉ ደሴቶች"
+ },
+ "CX": {
+ "name": "የገና ደሴት"
+ },
+ "TF": {
+ "name": "የáˆáˆ¨áŠ•áˆ³á‹­ ደቡባዊ áŒá‹›á‰¶á‰½"
+ },
+ "GF": {
+ "name": "የáˆáˆ¨áŠ•áˆ³á‹­ ጉዊአና"
+ },
+ "PF": {
+ "name": "የáˆáˆ¨áŠ•áˆ³á‹­ á–ሊኔዢያ"
+ },
+ "FO": {
+ "name": "የá‹áˆ® ደሴቶች"
+ },
+ "PS": {
+ "name": "የááˆáˆµáŒ¤áˆ áŒá‹›á‰µ"
+ },
+ "FK": {
+ "name": "የáŽáŠ­áˆ‹áŠ•á‹µ ደሴቶች"
+ },
+ "US": {
+ "name": "ዩናይትድ ስቴትስ"
+ },
+ "UA": {
+ "name": "ዩክሬን"
+ },
+ "UG": {
+ "name": "ዩጋንዳ"
+ },
+ "SS": {
+ "name": "ደቡብ ሱዳን"
+ },
+ "ZA": {
+ "name": "ደቡብ አáሪካ"
+ },
+ "KR": {
+ "name": "ደቡብ ኮሪያ"
+ },
+ "GS": {
+ "name": "ደቡብ ጆርጂያ እና የደቡብ ሳንድዊች ደሴቶች"
+ },
+ "DG": {
+ "name": "ዲዬጎ ጋርሺያ"
+ },
+ "DK": {
+ "name": "ዴንማርክ"
+ },
+ "DM": {
+ "name": "ዶሚኒካ"
+ },
+ "DO": {
+ "name": "ዶሚኒክ ሪá‘ብሊክ"
+ },
+ "DE": {
+ "name": "ጀርመን"
+ },
+ "JE": {
+ "name": "ጀርሲ"
+ },
+ "DJ": {
+ "name": "ጂቡቲ"
+ },
+ "GI": {
+ "name": "ጂብራáˆá‰°áˆ­"
+ },
+ "JM": {
+ "name": "ጃማይካ"
+ },
+ "JP": {
+ "name": "ጃá“ን"
+ },
+ "JO": {
+ "name": "ጆርዳን"
+ },
+ "GE": {
+ "name": "ጆርጂያ"
+ },
+ "GG": {
+ "name": "ጉርáŠáˆ²"
+ },
+ "GU": {
+ "name": "ጉዋáˆ"
+ },
+ "GT": {
+ "name": "ጉዋቲማላ"
+ },
+ "GP": {
+ "name": "ጉዋደሉá•"
+ },
+ "GY": {
+ "name": "ጉያና"
+ },
+ "GN": {
+ "name": "ጊኒ"
+ },
+ "GW": {
+ "name": "ጊኒ ቢሳኦ"
+ },
+ "GM": {
+ "name": "ጋáˆá‰¢á‹«"
+ },
+ "GA": {
+ "name": "ጋቦን"
+ },
+ "GH": {
+ "name": "ጋና"
+ },
+ "GL": {
+ "name": "áŒáˆªáŠ•áˆ‹áŠ•á‹µ"
+ },
+ "GR": {
+ "name": "áŒáˆªáŠ­"
+ },
+ "GD": {
+ "name": "áŒáˆ¬áŠ“ዳ"
+ },
+ "EG": {
+ "name": "áŒá‰¥áŒ½"
+ },
+ "IT": {
+ "name": "ጣሊያን"
+ },
+ "FR": {
+ "name": "áˆáˆ¨áŠ•áˆ³á‹­"
+ },
+ "PH": {
+ "name": "áŠáˆŠá’ንስ"
+ },
+ "FI": {
+ "name": "áŠáŠ•áˆ‹áŠ•á‹µ"
+ },
+ "FJ": {
+ "name": "áŠáŒ‚"
+ },
+ "PN": {
+ "name": "á’ትካኢርን አይስላንድ"
+ },
+ "PW": {
+ "name": "á“ላá‹"
+ },
+ "PY": {
+ "name": "á“ራጓይ"
+ },
+ "PA": {
+ "name": "á“ናማ"
+ },
+ "PK": {
+ "name": "á“ኪስታን"
+ },
+ "PG": {
+ "name": "á“á‘á‹‹ ኒዠጊኒ"
+ },
+ "PE": {
+ "name": "á”ሩ"
+ },
+ "PL": {
+ "name": "á–ላንድ"
+ },
+ "PT": {
+ "name": "á–ርቱጋáˆ"
+ },
+ "PR": {
+ "name": "á–ርታ ሪኮ"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/country/ar.json b/library/intl/resources/country/ar.json
new file mode 100644
index 000000000..4c8763235
--- /dev/null
+++ b/library/intl/resources/country/ar.json
@@ -0,0 +1,761 @@
+{
+ "AW": {
+ "name": "آروبا"
+ },
+ "AZ": {
+ "name": "أذربيجان"
+ },
+ "AM": {
+ "name": "أرمينيا"
+ },
+ "ER": {
+ "name": "أريتريا"
+ },
+ "AU": {
+ "name": "أستراليا"
+ },
+ "EE": {
+ "name": "أستونيا"
+ },
+ "AF": {
+ "name": "Ø£Ùغانستان"
+ },
+ "AL": {
+ "name": "ألبانيا"
+ },
+ "DE": {
+ "name": "ألمانيا"
+ },
+ "AQ": {
+ "name": "أنتاركتيكا"
+ },
+ "AG": {
+ "name": "أنتيغوا وبربودا"
+ },
+ "AD": {
+ "name": "أندورا"
+ },
+ "ID": {
+ "name": "أندونيسيا"
+ },
+ "AO": {
+ "name": "أنغولا"
+ },
+ "AI": {
+ "name": "أنغويلا"
+ },
+ "UY": {
+ "name": "أورغواي"
+ },
+ "UZ": {
+ "name": "أوزبكستان"
+ },
+ "UG": {
+ "name": "أوغندا"
+ },
+ "UA": {
+ "name": "أوكرانيا"
+ },
+ "IE": {
+ "name": "أيرلندا"
+ },
+ "IS": {
+ "name": "أيسلندا"
+ },
+ "ET": {
+ "name": "إثيوبيا"
+ },
+ "ES": {
+ "name": "إسبانيا"
+ },
+ "IL": {
+ "name": "إسرائيل"
+ },
+ "IR": {
+ "name": "إيران"
+ },
+ "IT": {
+ "name": "إيطاليا"
+ },
+ "PS": {
+ "name": "الأراضي الÙلسطينية"
+ },
+ "AR": {
+ "name": "الأرجنتين"
+ },
+ "JO": {
+ "name": "الأردن"
+ },
+ "IO": {
+ "name": "الإقليم البريطاني ÙÙŠ المحيط الهندي"
+ },
+ "EC": {
+ "name": "الإكوادور"
+ },
+ "AE": {
+ "name": "الإمارات العربية المتحدة"
+ },
+ "BS": {
+ "name": "الباهاما"
+ },
+ "BH": {
+ "name": "البحرين"
+ },
+ "BR": {
+ "name": "البرازيل"
+ },
+ "PT": {
+ "name": "البرتغال"
+ },
+ "BA": {
+ "name": "البوسنة والهرسك"
+ },
+ "GA": {
+ "name": "الجابون"
+ },
+ "ME": {
+ "name": "الجبل الأسود"
+ },
+ "DZ": {
+ "name": "الجزائر"
+ },
+ "DK": {
+ "name": "الدانمرك"
+ },
+ "CV": {
+ "name": "الرأس الأخضر"
+ },
+ "SV": {
+ "name": "السلÙادور"
+ },
+ "SN": {
+ "name": "السنغال"
+ },
+ "SD": {
+ "name": "السودان"
+ },
+ "SE": {
+ "name": "السويد"
+ },
+ "EH": {
+ "name": "الصحراء الغربية"
+ },
+ "SO": {
+ "name": "الصومال"
+ },
+ "CN": {
+ "name": "الصين"
+ },
+ "IQ": {
+ "name": "العراق"
+ },
+ "VA": {
+ "name": "الÙاتيكان"
+ },
+ "PH": {
+ "name": "الÙلبين"
+ },
+ "CM": {
+ "name": "الكاميرون"
+ },
+ "CG": {
+ "name": "الكونغو - برازاÙيل"
+ },
+ "CD": {
+ "name": "الكونغو - كينشاسا"
+ },
+ "KW": {
+ "name": "الكويت"
+ },
+ "MA": {
+ "name": "المغرب"
+ },
+ "TF": {
+ "name": "المقاطعات الجنوبية الÙرنسية"
+ },
+ "MX": {
+ "name": "المكسيك"
+ },
+ "SA": {
+ "name": "المملكة العربية السعودية"
+ },
+ "GB": {
+ "name": "المملكة المتحدة"
+ },
+ "NO": {
+ "name": "النرويج"
+ },
+ "AT": {
+ "name": "النمسا"
+ },
+ "NE": {
+ "name": "النيجر"
+ },
+ "IN": {
+ "name": "الهند"
+ },
+ "US": {
+ "name": "الولايات المتحدة"
+ },
+ "JP": {
+ "name": "اليابان"
+ },
+ "YE": {
+ "name": "اليمن"
+ },
+ "GR": {
+ "name": "اليونان"
+ },
+ "PG": {
+ "name": "بابوا غينيا الجديدة"
+ },
+ "PY": {
+ "name": "باراغواي"
+ },
+ "PK": {
+ "name": "باكستان"
+ },
+ "PW": {
+ "name": "بالاو"
+ },
+ "BW": {
+ "name": "بتسوانا"
+ },
+ "BB": {
+ "name": "بربادوس"
+ },
+ "BM": {
+ "name": "برمودا"
+ },
+ "BN": {
+ "name": "بروناي"
+ },
+ "BE": {
+ "name": "بلجيكا"
+ },
+ "BG": {
+ "name": "بلغاريا"
+ },
+ "BZ": {
+ "name": "بليز"
+ },
+ "BD": {
+ "name": "بنجلاديش"
+ },
+ "PA": {
+ "name": "بنما"
+ },
+ "BJ": {
+ "name": "بنين"
+ },
+ "BT": {
+ "name": "بوتان"
+ },
+ "PR": {
+ "name": "بورتوريكو"
+ },
+ "BF": {
+ "name": "بوركينا Ùاسو"
+ },
+ "BI": {
+ "name": "بوروندي"
+ },
+ "PL": {
+ "name": "بولندا"
+ },
+ "BO": {
+ "name": "بوليÙيا"
+ },
+ "PF": {
+ "name": "بولينيزيا الÙرنسية"
+ },
+ "PE": {
+ "name": "بيرو"
+ },
+ "TZ": {
+ "name": "تانزانيا"
+ },
+ "TH": {
+ "name": "تايلاند"
+ },
+ "TW": {
+ "name": "تايوان"
+ },
+ "TM": {
+ "name": "تركمانستان"
+ },
+ "TR": {
+ "name": "تركيا"
+ },
+ "TA": {
+ "name": "تريستان دي كونها"
+ },
+ "TT": {
+ "name": "ترينيداد وتوباغو"
+ },
+ "TD": {
+ "name": "تشاد"
+ },
+ "TG": {
+ "name": "توجو"
+ },
+ "TV": {
+ "name": "توÙالو"
+ },
+ "TK": {
+ "name": "توكيلو"
+ },
+ "TN": {
+ "name": "تونس"
+ },
+ "TO": {
+ "name": "تونغا"
+ },
+ "TL": {
+ "name": "تيمور الشرقية"
+ },
+ "JM": {
+ "name": "جامايكا"
+ },
+ "GI": {
+ "name": "جبل طارق"
+ },
+ "AX": {
+ "name": "جزر آلاند"
+ },
+ "TC": {
+ "name": "جزر الترك وجايكوس"
+ },
+ "KM": {
+ "name": "جزر القمر"
+ },
+ "KY": {
+ "name": "جزر الكايمن"
+ },
+ "IC": {
+ "name": "جزر الكناري"
+ },
+ "MH": {
+ "name": "جزر المارشال"
+ },
+ "MV": {
+ "name": "جزر المالديÙ"
+ },
+ "UM": {
+ "name": "جزر الولايات المتحدة النائية"
+ },
+ "PN": {
+ "name": "جزر بيتكيرن"
+ },
+ "SB": {
+ "name": "جزر سليمان"
+ },
+ "FO": {
+ "name": "جزر Ùارو"
+ },
+ "VI": {
+ "name": "جزر Ùرجين الأمريكية"
+ },
+ "VG": {
+ "name": "جزر Ùرجين البريطانية"
+ },
+ "FK": {
+ "name": "جزر Ùوكلاند"
+ },
+ "CK": {
+ "name": "جزر كوك"
+ },
+ "CC": {
+ "name": "جزر كوكوس"
+ },
+ "MP": {
+ "name": "جزر ماريانا الشمالية"
+ },
+ "WF": {
+ "name": "جزر والس ÙˆÙوتونا"
+ },
+ "AC": {
+ "name": "جزيرة أسينشيون"
+ },
+ "CX": {
+ "name": "جزيرة الكريسماس"
+ },
+ "IM": {
+ "name": "جزيرة مان"
+ },
+ "NF": {
+ "name": "جزيرة نورÙوك"
+ },
+ "CF": {
+ "name": "جمهورية Ø£Ùريقيا الوسطى"
+ },
+ "CZ": {
+ "name": "جمهورية التشيك"
+ },
+ "DO": {
+ "name": "جمهورية الدومينيك"
+ },
+ "ZA": {
+ "name": "جنوب Ø£Ùريقيا"
+ },
+ "SS": {
+ "name": "جنوب السودان"
+ },
+ "GP": {
+ "name": "جوادلوب"
+ },
+ "GE": {
+ "name": "جورجيا"
+ },
+ "GS": {
+ "name": "جورجيا الجنوبية وجزر ساندويتش الجنوبية"
+ },
+ "DJ": {
+ "name": "جيبوتي"
+ },
+ "JE": {
+ "name": "جيرسي"
+ },
+ "DM": {
+ "name": "دومينيكا"
+ },
+ "DG": {
+ "name": "دييغو غارسيا"
+ },
+ "RW": {
+ "name": "رواندا"
+ },
+ "RU": {
+ "name": "روسيا"
+ },
+ "BY": {
+ "name": "روسيا البيضاء"
+ },
+ "RO": {
+ "name": "رومانيا"
+ },
+ "RE": {
+ "name": "روينيون"
+ },
+ "ZM": {
+ "name": "زامبيا"
+ },
+ "ZW": {
+ "name": "زيمبابوي"
+ },
+ "CI": {
+ "name": "ساحل العاج"
+ },
+ "WS": {
+ "name": "ساموا"
+ },
+ "AS": {
+ "name": "ساموا الأمريكية"
+ },
+ "BL": {
+ "name": "سان بارتليمي"
+ },
+ "SM": {
+ "name": "سان مارينو"
+ },
+ "PM": {
+ "name": "سانت بيير وميكولون"
+ },
+ "VC": {
+ "name": "سانت Ùنسنت وغرنادين"
+ },
+ "KN": {
+ "name": "سانت كيتس ونيÙيس"
+ },
+ "LC": {
+ "name": "سانت لوسيا"
+ },
+ "MF": {
+ "name": "سانت مارتن"
+ },
+ "SH": {
+ "name": "سانت هيلنا"
+ },
+ "ST": {
+ "name": "ساو تومي وبرينسيبي"
+ },
+ "LK": {
+ "name": "سريلانكا"
+ },
+ "SJ": {
+ "name": "سÙالبارد وجان مايان"
+ },
+ "SK": {
+ "name": "سلوÙاكيا"
+ },
+ "SI": {
+ "name": "سلوÙينيا"
+ },
+ "SG": {
+ "name": "سنغاÙورة"
+ },
+ "SZ": {
+ "name": "سوازيلاند"
+ },
+ "SY": {
+ "name": "سوريا"
+ },
+ "SR": {
+ "name": "سورينام"
+ },
+ "CH": {
+ "name": "سويسرا"
+ },
+ "SL": {
+ "name": "سيراليون"
+ },
+ "SC": {
+ "name": "سيشل"
+ },
+ "SX": {
+ "name": "سينت مارتن"
+ },
+ "EA": {
+ "name": "سيوتا وميليلا"
+ },
+ "CL": {
+ "name": "شيلي"
+ },
+ "RS": {
+ "name": "صربيا"
+ },
+ "TJ": {
+ "name": "طاجكستان"
+ },
+ "OM": {
+ "name": "عÙمان"
+ },
+ "GM": {
+ "name": "غامبيا"
+ },
+ "GH": {
+ "name": "غانا"
+ },
+ "GD": {
+ "name": "غرينادا"
+ },
+ "GL": {
+ "name": "غرينلاند"
+ },
+ "GT": {
+ "name": "غواتيمالا"
+ },
+ "GU": {
+ "name": "غوام"
+ },
+ "GF": {
+ "name": "غويانا الÙرنسية"
+ },
+ "GY": {
+ "name": "غيانا"
+ },
+ "GG": {
+ "name": "غيرنزي"
+ },
+ "GN": {
+ "name": "غينيا"
+ },
+ "GQ": {
+ "name": "غينيا الإستوائية"
+ },
+ "GW": {
+ "name": "غينيا بيساو"
+ },
+ "VU": {
+ "name": "Ùانواتو"
+ },
+ "FR": {
+ "name": "Ùرنسا"
+ },
+ "VE": {
+ "name": "Ùنزويلا"
+ },
+ "FI": {
+ "name": "Ùنلندا"
+ },
+ "VN": {
+ "name": "Ùيتنام"
+ },
+ "FJ": {
+ "name": "Ùيجي"
+ },
+ "CY": {
+ "name": "قبرص"
+ },
+ "KG": {
+ "name": "قرغيزستان"
+ },
+ "QA": {
+ "name": "قطر"
+ },
+ "KZ": {
+ "name": "كازاخستان"
+ },
+ "NC": {
+ "name": "كاليدونيا الجديدة"
+ },
+ "HR": {
+ "name": "كرواتيا"
+ },
+ "KH": {
+ "name": "كمبوديا"
+ },
+ "CA": {
+ "name": "كندا"
+ },
+ "CU": {
+ "name": "كوبا"
+ },
+ "CW": {
+ "name": "كوراساو"
+ },
+ "KR": {
+ "name": "كوريا الجنوبية"
+ },
+ "KP": {
+ "name": "كوريا الشمالية"
+ },
+ "CR": {
+ "name": "كوستاريكا"
+ },
+ "XK": {
+ "name": "كوسوÙÙˆ"
+ },
+ "CO": {
+ "name": "كولومبيا"
+ },
+ "KI": {
+ "name": "كيريباتي"
+ },
+ "KE": {
+ "name": "كينيا"
+ },
+ "LV": {
+ "name": "لاتÙيا"
+ },
+ "LA": {
+ "name": "لاوس"
+ },
+ "LB": {
+ "name": "لبنان"
+ },
+ "LU": {
+ "name": "لوكسمبورغ"
+ },
+ "LY": {
+ "name": "ليبيا"
+ },
+ "LR": {
+ "name": "ليبيريا"
+ },
+ "LT": {
+ "name": "ليتوانيا"
+ },
+ "LI": {
+ "name": "ليختنشتاين"
+ },
+ "LS": {
+ "name": "ليسوتو"
+ },
+ "MQ": {
+ "name": "مارتينيك"
+ },
+ "MT": {
+ "name": "مالطا"
+ },
+ "ML": {
+ "name": "مالي"
+ },
+ "MY": {
+ "name": "ماليزيا"
+ },
+ "YT": {
+ "name": "مايوت"
+ },
+ "MG": {
+ "name": "مدغشقر"
+ },
+ "EG": {
+ "name": "مصر"
+ },
+ "MK": {
+ "name": "مقدونيا"
+ },
+ "MO": {
+ "name": "مكاو الصينية (منطقة إدارية خاصة)"
+ },
+ "MW": {
+ "name": "ملاوي"
+ },
+ "MN": {
+ "name": "منغوليا"
+ },
+ "MR": {
+ "name": "موريتانيا"
+ },
+ "MU": {
+ "name": "موريشيوس"
+ },
+ "MZ": {
+ "name": "موزمبيق"
+ },
+ "MD": {
+ "name": "مولداÙيا"
+ },
+ "MC": {
+ "name": "موناكو"
+ },
+ "MS": {
+ "name": "مونتسرات"
+ },
+ "MM": {
+ "name": "ميانمار -بورما"
+ },
+ "FM": {
+ "name": "ميكرونيزيا"
+ },
+ "NA": {
+ "name": "ناميبيا"
+ },
+ "NR": {
+ "name": "ناورو"
+ },
+ "NP": {
+ "name": "نيبال"
+ },
+ "NG": {
+ "name": "نيجيريا"
+ },
+ "NI": {
+ "name": "نيكاراغوا"
+ },
+ "NZ": {
+ "name": "نيوزيلاندا"
+ },
+ "NU": {
+ "name": "نيوي"
+ },
+ "HT": {
+ "name": "هايتي"
+ },
+ "HN": {
+ "name": "هندوراس"
+ },
+ "HU": {
+ "name": "هنغاريا"
+ },
+ "NL": {
+ "name": "هولندا"
+ },
+ "BQ": {
+ "name": "هولندا الكاريبية"
+ },
+ "HK": {
+ "name": "هونغ كونغ الصينية"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/country/asa.json b/library/intl/resources/country/asa.json
new file mode 100644
index 000000000..ef6acc8aa
--- /dev/null
+++ b/library/intl/resources/country/asa.json
@@ -0,0 +1,761 @@
+{
+ "AZ": {
+ "name": "Adhabajani"
+ },
+ "ZA": {
+ "name": "Afrika Kuthini"
+ },
+ "AF": {
+ "name": "Afuganistani"
+ },
+ "IS": {
+ "name": "Aithlandi"
+ },
+ "AR": {
+ "name": "Ajentina"
+ },
+ "AX": {
+ "name": "Ã…land Islands"
+ },
+ "AL": {
+ "name": "Albania"
+ },
+ "DZ": {
+ "name": "Aljeria"
+ },
+ "AD": {
+ "name": "Andora"
+ },
+ "AO": {
+ "name": "Angola"
+ },
+ "AI": {
+ "name": "Anguilla"
+ },
+ "AQ": {
+ "name": "Antarctica"
+ },
+ "AG": {
+ "name": "Antigua na Barbuda"
+ },
+ "AM": {
+ "name": "Armenia"
+ },
+ "AW": {
+ "name": "Aruba"
+ },
+ "AC": {
+ "name": "Ascension Island"
+ },
+ "AU": {
+ "name": "Authtralia"
+ },
+ "AT": {
+ "name": "Authtria"
+ },
+ "IE": {
+ "name": "Ayalandi"
+ },
+ "BB": {
+ "name": "Babadothi"
+ },
+ "BS": {
+ "name": "Bahama"
+ },
+ "BH": {
+ "name": "Bahareni"
+ },
+ "BD": {
+ "name": "Bangladeshi"
+ },
+ "BY": {
+ "name": "Belaruthi"
+ },
+ "BZ": {
+ "name": "Belidhe"
+ },
+ "BJ": {
+ "name": "Benini"
+ },
+ "BM": {
+ "name": "Bermuda"
+ },
+ "BO": {
+ "name": "Bolivia"
+ },
+ "BA": {
+ "name": "Bothnia na Hedhegovina"
+ },
+ "BW": {
+ "name": "Botthwana"
+ },
+ "BR": {
+ "name": "Brazili"
+ },
+ "BN": {
+ "name": "Brunei"
+ },
+ "BF": {
+ "name": "Bukinafatho"
+ },
+ "MG": {
+ "name": "Bukini"
+ },
+ "BG": {
+ "name": "Bulgaria"
+ },
+ "BI": {
+ "name": "Burundi"
+ },
+ "BT": {
+ "name": "Butani"
+ },
+ "IC": {
+ "name": "Canary Islands"
+ },
+ "BQ": {
+ "name": "Caribbean Netherlands"
+ },
+ "EA": {
+ "name": "Ceuta & Melilla"
+ },
+ "TD": {
+ "name": "Chadi"
+ },
+ "CL": {
+ "name": "Chile"
+ },
+ "CN": {
+ "name": "China"
+ },
+ "CX": {
+ "name": "Christmas Island"
+ },
+ "CC": {
+ "name": "Cocos (Keeling) Islands"
+ },
+ "CW": {
+ "name": "Curaçao"
+ },
+ "DK": {
+ "name": "Denmaki"
+ },
+ "ZM": {
+ "name": "Dhambia"
+ },
+ "ZW": {
+ "name": "Dhimbabwe"
+ },
+ "DG": {
+ "name": "Diego Garcia"
+ },
+ "DM": {
+ "name": "Dominika"
+ },
+ "EC": {
+ "name": "Ekwado"
+ },
+ "SV": {
+ "name": "Elsavado"
+ },
+ "ER": {
+ "name": "Eritrea"
+ },
+ "EE": {
+ "name": "Ethtonia"
+ },
+ "AE": {
+ "name": "Falme dha Kiarabu"
+ },
+ "FO": {
+ "name": "Faroe Islands"
+ },
+ "FJ": {
+ "name": "Fiji"
+ },
+ "PH": {
+ "name": "Filipino"
+ },
+ "TF": {
+ "name": "French Southern Territories"
+ },
+ "GA": {
+ "name": "Gaboni"
+ },
+ "GM": {
+ "name": "Gambia"
+ },
+ "GH": {
+ "name": "Ghana"
+ },
+ "GN": {
+ "name": "Gine"
+ },
+ "GW": {
+ "name": "Ginebisau"
+ },
+ "GQ": {
+ "name": "Ginekweta"
+ },
+ "GD": {
+ "name": "Grenada"
+ },
+ "GL": {
+ "name": "Grinlandi"
+ },
+ "GG": {
+ "name": "Guernsey"
+ },
+ "GY": {
+ "name": "Guyana"
+ },
+ "GP": {
+ "name": "Gwadelupe"
+ },
+ "GU": {
+ "name": "Gwam"
+ },
+ "GT": {
+ "name": "Gwatemala"
+ },
+ "GF": {
+ "name": "Gwiyana ya Ufarantha"
+ },
+ "HT": {
+ "name": "Haiti"
+ },
+ "ES": {
+ "name": "Hithpania"
+ },
+ "HN": {
+ "name": "Hondurathi"
+ },
+ "HK": {
+ "name": "Hong Kong SAR China"
+ },
+ "HU": {
+ "name": "Hungaria"
+ },
+ "IO": {
+ "name": "Ieneo la Uingeredha katika Bahari Hindi"
+ },
+ "IN": {
+ "name": "India"
+ },
+ "ID": {
+ "name": "Indonethia"
+ },
+ "IQ": {
+ "name": "Iraki"
+ },
+ "IM": {
+ "name": "Isle of Man"
+ },
+ "IT": {
+ "name": "Italia"
+ },
+ "IL": {
+ "name": "Ithraeli"
+ },
+ "JM": {
+ "name": "Jamaika"
+ },
+ "CF": {
+ "name": "Jamhuri ya Afrika ya Kati"
+ },
+ "CZ": {
+ "name": "Jamhuri ya Cheki"
+ },
+ "DO": {
+ "name": "Jamhuri ya Dominika"
+ },
+ "CD": {
+ "name": "Jamhuri ya Kidemokrathia ya Kongo"
+ },
+ "JP": {
+ "name": "Japani"
+ },
+ "JE": {
+ "name": "Jersey"
+ },
+ "GI": {
+ "name": "Jibralta"
+ },
+ "DJ": {
+ "name": "Jibuti"
+ },
+ "GE": {
+ "name": "Jojia"
+ },
+ "KH": {
+ "name": "Kambodia"
+ },
+ "CM": {
+ "name": "Kameruni"
+ },
+ "CA": {
+ "name": "Kanada"
+ },
+ "QA": {
+ "name": "Katari"
+ },
+ "KZ": {
+ "name": "Kazakithtani"
+ },
+ "KE": {
+ "name": "Kenya"
+ },
+ "CV": {
+ "name": "Kepuvede"
+ },
+ "KI": {
+ "name": "Kiribati"
+ },
+ "KG": {
+ "name": "Kirigizithtani"
+ },
+ "NF": {
+ "name": "Kithiwa cha Norfok"
+ },
+ "CI": {
+ "name": "Kodivaa"
+ },
+ "CO": {
+ "name": "Kolombia"
+ },
+ "KM": {
+ "name": "Komoro"
+ },
+ "CG": {
+ "name": "Kongo"
+ },
+ "HR": {
+ "name": "Korathia"
+ },
+ "KP": {
+ "name": "Korea Kathkazini"
+ },
+ "KR": {
+ "name": "Korea Kuthini"
+ },
+ "XK": {
+ "name": "Kosovo"
+ },
+ "CR": {
+ "name": "Kothtarika"
+ },
+ "CU": {
+ "name": "Kuba"
+ },
+ "CY": {
+ "name": "Kuprothi"
+ },
+ "KW": {
+ "name": "Kuwaiti"
+ },
+ "LA": {
+ "name": "Laothi"
+ },
+ "LU": {
+ "name": "Lathembagi"
+ },
+ "LV": {
+ "name": "Lativia"
+ },
+ "LB": {
+ "name": "Lebanoni"
+ },
+ "LS": {
+ "name": "Lethoto"
+ },
+ "LR": {
+ "name": "Liberia"
+ },
+ "LY": {
+ "name": "Libya"
+ },
+ "LI": {
+ "name": "Lishenteni"
+ },
+ "LT": {
+ "name": "Litwania"
+ },
+ "MO": {
+ "name": "Macau SAR China"
+ },
+ "MW": {
+ "name": "Malawi"
+ },
+ "MY": {
+ "name": "Malethia"
+ },
+ "ML": {
+ "name": "Mali"
+ },
+ "MT": {
+ "name": "Malta"
+ },
+ "US": {
+ "name": "Marekani"
+ },
+ "MQ": {
+ "name": "Martiniki"
+ },
+ "MK": {
+ "name": "Mathedonia"
+ },
+ "YT": {
+ "name": "Mayotte"
+ },
+ "MX": {
+ "name": "Mekthiko"
+ },
+ "FM": {
+ "name": "Mikronethia"
+ },
+ "EG": {
+ "name": "Mithri"
+ },
+ "MV": {
+ "name": "Modivu"
+ },
+ "MD": {
+ "name": "Moldova"
+ },
+ "MC": {
+ "name": "Monako"
+ },
+ "MN": {
+ "name": "Mongolia"
+ },
+ "ME": {
+ "name": "Montenegro"
+ },
+ "MS": {
+ "name": "Monttherrati"
+ },
+ "MR": {
+ "name": "Moritania"
+ },
+ "MU": {
+ "name": "Morithi"
+ },
+ "MA": {
+ "name": "Moroko"
+ },
+ "MZ": {
+ "name": "Mthumbiji"
+ },
+ "MM": {
+ "name": "Myama"
+ },
+ "NA": {
+ "name": "Namibia"
+ },
+ "NR": {
+ "name": "Nauru"
+ },
+ "NP": {
+ "name": "Nepali"
+ },
+ "NE": {
+ "name": "Nijeri"
+ },
+ "NG": {
+ "name": "Nijeria"
+ },
+ "NI": {
+ "name": "Nikaragwa"
+ },
+ "NU": {
+ "name": "Niue"
+ },
+ "NO": {
+ "name": "Norwe"
+ },
+ "NZ": {
+ "name": "Nyudhilandi"
+ },
+ "NC": {
+ "name": "Nyukaledonia"
+ },
+ "OM": {
+ "name": "Omani"
+ },
+ "PK": {
+ "name": "Pakithtani"
+ },
+ "PW": {
+ "name": "Palau"
+ },
+ "PS": {
+ "name": "Palestina"
+ },
+ "PA": {
+ "name": "Panama"
+ },
+ "PG": {
+ "name": "Papua"
+ },
+ "PY": {
+ "name": "Paragwai"
+ },
+ "PE": {
+ "name": "Peru"
+ },
+ "PN": {
+ "name": "Pitkairni"
+ },
+ "PL": {
+ "name": "Polandi"
+ },
+ "PF": {
+ "name": "Polinesia ya Ufarantha"
+ },
+ "PR": {
+ "name": "Pwetoriko"
+ },
+ "RE": {
+ "name": "Riyunioni"
+ },
+ "RO": {
+ "name": "Romania"
+ },
+ "RW": {
+ "name": "Rwanda"
+ },
+ "RS": {
+ "name": "Serbia"
+ },
+ "SC": {
+ "name": "Shelisheli"
+ },
+ "SX": {
+ "name": "Sint Maarten"
+ },
+ "GS": {
+ "name": "South Georgia & South Sandwich Islands"
+ },
+ "SS": {
+ "name": "South Sudan"
+ },
+ "BL": {
+ "name": "St. Barthélemy"
+ },
+ "MF": {
+ "name": "St. Martin"
+ },
+ "SJ": {
+ "name": "Svalbard & Jan Mayen"
+ },
+ "TZ": {
+ "name": "Tadhania"
+ },
+ "TH": {
+ "name": "Tailandi"
+ },
+ "TW": {
+ "name": "Taiwani"
+ },
+ "TJ": {
+ "name": "Tajikithtani"
+ },
+ "SM": {
+ "name": "Thamarino"
+ },
+ "WS": {
+ "name": "Thamoa"
+ },
+ "AS": {
+ "name": "Thamoa ya Marekani"
+ },
+ "SH": {
+ "name": "Thantahelena"
+ },
+ "KN": {
+ "name": "Thantakitdhi na Nevith"
+ },
+ "LC": {
+ "name": "Thantaluthia"
+ },
+ "PM": {
+ "name": "Thantapieri na Mikeloni"
+ },
+ "VC": {
+ "name": "Thantavithenti na Grenadini"
+ },
+ "ST": {
+ "name": "Thao Tome na Principe"
+ },
+ "SA": {
+ "name": "Thaudi"
+ },
+ "SN": {
+ "name": "Thenegali"
+ },
+ "SL": {
+ "name": "Thiera Leoni"
+ },
+ "SG": {
+ "name": "Thingapoo"
+ },
+ "SY": {
+ "name": "Thiria"
+ },
+ "LK": {
+ "name": "Thirilanka"
+ },
+ "SI": {
+ "name": "Thlovenia"
+ },
+ "SK": {
+ "name": "Tholvakia"
+ },
+ "SO": {
+ "name": "Thomalia"
+ },
+ "SD": {
+ "name": "Thudani"
+ },
+ "SR": {
+ "name": "Thurinamu"
+ },
+ "TL": {
+ "name": "Timori ya Mashariki"
+ },
+ "TG": {
+ "name": "Togo"
+ },
+ "TK": {
+ "name": "Tokelau"
+ },
+ "TO": {
+ "name": "Tonga"
+ },
+ "TT": {
+ "name": "Trinidad na Tobago"
+ },
+ "TA": {
+ "name": "Tristan da Cunha"
+ },
+ "TN": {
+ "name": "Tunithia"
+ },
+ "TM": {
+ "name": "Turukimenithtani"
+ },
+ "TV": {
+ "name": "Tuvalu"
+ },
+ "UM": {
+ "name": "U.S. Outlying Islands"
+ },
+ "IR": {
+ "name": "Uajemi"
+ },
+ "BE": {
+ "name": "Ubelgiji"
+ },
+ "UZ": {
+ "name": "Udhibekithtani"
+ },
+ "FR": {
+ "name": "Ufarantha"
+ },
+ "FI": {
+ "name": "Ufini"
+ },
+ "UG": {
+ "name": "Uganda"
+ },
+ "GR": {
+ "name": "Ugiriki"
+ },
+ "ET": {
+ "name": "Uhabeshi"
+ },
+ "NL": {
+ "name": "Uholandhi"
+ },
+ "GB": {
+ "name": "Uingeredha"
+ },
+ "DE": {
+ "name": "Ujerumani"
+ },
+ "UA": {
+ "name": "Ukraine"
+ },
+ "PT": {
+ "name": "Ureno"
+ },
+ "UY": {
+ "name": "Urugwai"
+ },
+ "RU": {
+ "name": "Uruthi"
+ },
+ "SZ": {
+ "name": "Uthwadhi"
+ },
+ "SE": {
+ "name": "Uthwidi"
+ },
+ "CH": {
+ "name": "Uthwithi"
+ },
+ "TR": {
+ "name": "Uturuki"
+ },
+ "VU": {
+ "name": "Vanuatu"
+ },
+ "VA": {
+ "name": "Vatikani"
+ },
+ "VE": {
+ "name": "Venezuela"
+ },
+ "VN": {
+ "name": "Vietinamu"
+ },
+ "CK": {
+ "name": "Vithiwa vya Cook"
+ },
+ "FK": {
+ "name": "Vithiwa vya Falkland"
+ },
+ "KY": {
+ "name": "Vithiwa vya Kayman"
+ },
+ "MP": {
+ "name": "Vithiwa vya Mariana vya Kathkazini"
+ },
+ "MH": {
+ "name": "Vithiwa vya Marshal"
+ },
+ "SB": {
+ "name": "Vithiwa vya Tholomon"
+ },
+ "TC": {
+ "name": "Vithiwa vya Turki na Kaiko"
+ },
+ "VI": {
+ "name": "Vithiwa vya Virgin vya Marekani"
+ },
+ "VG": {
+ "name": "Vithiwa vya Virgin vya Uingeredha"
+ },
+ "WF": {
+ "name": "Walith na Futuna"
+ },
+ "EH": {
+ "name": "Western Sahara"
+ },
+ "YE": {
+ "name": "Yemeni"
+ },
+ "JO": {
+ "name": "Yordani"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/country/ast.json b/library/intl/resources/country/ast.json
new file mode 100644
index 000000000..ab9dc8b5d
--- /dev/null
+++ b/library/intl/resources/country/ast.json
@@ -0,0 +1,761 @@
+{
+ "AF": {
+ "name": "Afganistán"
+ },
+ "AL": {
+ "name": "Albania"
+ },
+ "DE": {
+ "name": "Alemania"
+ },
+ "AD": {
+ "name": "Andorra"
+ },
+ "AO": {
+ "name": "Angola"
+ },
+ "AI": {
+ "name": "Anguila"
+ },
+ "AG": {
+ "name": "Antigua y Barbuda"
+ },
+ "SA": {
+ "name": "Arabia Saudita"
+ },
+ "HK": {
+ "name": "ARE China de Ḥong Kong"
+ },
+ "MO": {
+ "name": "ARE China de Macáu"
+ },
+ "AM": {
+ "name": "Armenia"
+ },
+ "AW": {
+ "name": "Aruba"
+ },
+ "DZ": {
+ "name": "Arxelia"
+ },
+ "AR": {
+ "name": "Arxentina"
+ },
+ "AU": {
+ "name": "Australia"
+ },
+ "AT": {
+ "name": "Austria"
+ },
+ "AZ": {
+ "name": "Azerbaixán"
+ },
+ "BH": {
+ "name": "Baḥréin"
+ },
+ "BD": {
+ "name": "Bangladex"
+ },
+ "BB": {
+ "name": "Barbados"
+ },
+ "BZ": {
+ "name": "Belize"
+ },
+ "BE": {
+ "name": "Bélxica"
+ },
+ "BJ": {
+ "name": "Benín"
+ },
+ "BY": {
+ "name": "Bielorrusia"
+ },
+ "BO": {
+ "name": "Bolivia"
+ },
+ "BA": {
+ "name": "Bosnia y Herzegovina"
+ },
+ "BW": {
+ "name": "Botsuana"
+ },
+ "BR": {
+ "name": "Brasil"
+ },
+ "BN": {
+ "name": "Brunéi"
+ },
+ "BG": {
+ "name": "Bulgaria"
+ },
+ "BF": {
+ "name": "Burkina Faso"
+ },
+ "BI": {
+ "name": "Burundi"
+ },
+ "BT": {
+ "name": "Bután"
+ },
+ "CV": {
+ "name": "Cabu Verde"
+ },
+ "KH": {
+ "name": "Camboya"
+ },
+ "CM": {
+ "name": "Camerún"
+ },
+ "CA": {
+ "name": "Canadá"
+ },
+ "BQ": {
+ "name": "Caribe neerlandés"
+ },
+ "EA": {
+ "name": "Ceuta y Melilla"
+ },
+ "TD": {
+ "name": "Chad"
+ },
+ "CZ": {
+ "name": "Chequia"
+ },
+ "CL": {
+ "name": "Chile"
+ },
+ "CN": {
+ "name": "China"
+ },
+ "VA": {
+ "name": "Ciudá del Vaticanu"
+ },
+ "CO": {
+ "name": "Colombia"
+ },
+ "CG": {
+ "name": "Congo - Brazzaville"
+ },
+ "CD": {
+ "name": "Congo - Kinshasa"
+ },
+ "KP": {
+ "name": "Corea del Norte"
+ },
+ "KR": {
+ "name": "Corea del Sur"
+ },
+ "CI": {
+ "name": "Costa de Marfil"
+ },
+ "CR": {
+ "name": "Costa Rica"
+ },
+ "HR": {
+ "name": "Croacia"
+ },
+ "CU": {
+ "name": "Cuba"
+ },
+ "CW": {
+ "name": "Curaçao"
+ },
+ "DG": {
+ "name": "Diego Garcia"
+ },
+ "DK": {
+ "name": "Dinamarca"
+ },
+ "DJ": {
+ "name": "Djibouti"
+ },
+ "DM": {
+ "name": "Dominica"
+ },
+ "EC": {
+ "name": "Ecuador"
+ },
+ "NE": {
+ "name": "El Níxer"
+ },
+ "SV": {
+ "name": "El Salvador"
+ },
+ "AE": {
+ "name": "Emiratos Ãrabes Xuníos"
+ },
+ "ER": {
+ "name": "Eritrea"
+ },
+ "SK": {
+ "name": "Eslovaquia"
+ },
+ "SI": {
+ "name": "Eslovenia"
+ },
+ "ES": {
+ "name": "España"
+ },
+ "US": {
+ "name": "Estaos Xuníos"
+ },
+ "EE": {
+ "name": "Estonia"
+ },
+ "ET": {
+ "name": "Etiopía"
+ },
+ "EG": {
+ "name": "Exiptu"
+ },
+ "FK": {
+ "name": "Falkland Islands"
+ },
+ "PH": {
+ "name": "Filipines"
+ },
+ "FI": {
+ "name": "Finlandia"
+ },
+ "FR": {
+ "name": "Francia"
+ },
+ "GA": {
+ "name": "Gabón"
+ },
+ "GM": {
+ "name": "Gambia"
+ },
+ "GH": {
+ "name": "Ghana"
+ },
+ "GD": {
+ "name": "Granada"
+ },
+ "GR": {
+ "name": "Grecia"
+ },
+ "GL": {
+ "name": "Groenlandia"
+ },
+ "GP": {
+ "name": "Guadalupe"
+ },
+ "GU": {
+ "name": "Guam"
+ },
+ "GT": {
+ "name": "Guatemala"
+ },
+ "GG": {
+ "name": "Guernsey"
+ },
+ "GN": {
+ "name": "Guinea"
+ },
+ "GQ": {
+ "name": "Guinea Ecuatorial"
+ },
+ "GW": {
+ "name": "Guinea-Bisáu"
+ },
+ "GY": {
+ "name": "Guyana"
+ },
+ "GF": {
+ "name": "Guyana Francesa"
+ },
+ "HT": {
+ "name": "Haití"
+ },
+ "HN": {
+ "name": "Hondures"
+ },
+ "HU": {
+ "name": "Hungría"
+ },
+ "IN": {
+ "name": "India"
+ },
+ "ID": {
+ "name": "Indonesia"
+ },
+ "IR": {
+ "name": "Irán"
+ },
+ "IQ": {
+ "name": "Iraq"
+ },
+ "IE": {
+ "name": "Irlanda"
+ },
+ "IS": {
+ "name": "Islandia"
+ },
+ "AC": {
+ "name": "Islla Ascensión"
+ },
+ "CX": {
+ "name": "Islla Christmas"
+ },
+ "IM": {
+ "name": "Islla de Man"
+ },
+ "NF": {
+ "name": "Islla Norfolk"
+ },
+ "AX": {
+ "name": "Islles Aland"
+ },
+ "KY": {
+ "name": "Islles Caimán"
+ },
+ "IC": {
+ "name": "Islles Canaries"
+ },
+ "CC": {
+ "name": "Islles Cocos (Keeling)"
+ },
+ "CK": {
+ "name": "Islles Cook"
+ },
+ "FO": {
+ "name": "Islles Feroe"
+ },
+ "FJ": {
+ "name": "Islles Fixi"
+ },
+ "MP": {
+ "name": "Islles Marianes del Norte"
+ },
+ "MH": {
+ "name": "Islles Marshall"
+ },
+ "UM": {
+ "name": "Islles Perifériques Menores de los EE.XX."
+ },
+ "PN": {
+ "name": "Islles Pitcairn"
+ },
+ "SB": {
+ "name": "Islles Salomón"
+ },
+ "TC": {
+ "name": "Islles Turques y Caicos"
+ },
+ "VI": {
+ "name": "Islles Vírxenes Americanes"
+ },
+ "VG": {
+ "name": "Islles Vírxenes Britániques"
+ },
+ "GS": {
+ "name": "Islles Xeorxa del Sur y Sandwich del Sur"
+ },
+ "IL": {
+ "name": "Israel"
+ },
+ "IT": {
+ "name": "Italia"
+ },
+ "JE": {
+ "name": "Jersey"
+ },
+ "KZ": {
+ "name": "Kazakstán"
+ },
+ "KE": {
+ "name": "Kenia"
+ },
+ "KG": {
+ "name": "Kirguistán"
+ },
+ "KI": {
+ "name": "Kiribati"
+ },
+ "XK": {
+ "name": "Kosovo"
+ },
+ "KW": {
+ "name": "Kuwait"
+ },
+ "AQ": {
+ "name": "L’Antártida"
+ },
+ "MQ": {
+ "name": "La Martinica"
+ },
+ "LA": {
+ "name": "Laos"
+ },
+ "BS": {
+ "name": "Les Bahames"
+ },
+ "BM": {
+ "name": "Les Bermudes"
+ },
+ "KM": {
+ "name": "Les Comores"
+ },
+ "MV": {
+ "name": "Les Maldives"
+ },
+ "LS": {
+ "name": "Lesotho"
+ },
+ "LV": {
+ "name": "Letonia"
+ },
+ "LB": {
+ "name": "Líbanu"
+ },
+ "LR": {
+ "name": "Liberia"
+ },
+ "LY": {
+ "name": "Libia"
+ },
+ "LI": {
+ "name": "Liechtenstein"
+ },
+ "LT": {
+ "name": "Lituania"
+ },
+ "LU": {
+ "name": "Luxemburgu"
+ },
+ "MK": {
+ "name": "Macedonia"
+ },
+ "MG": {
+ "name": "Madagascar"
+ },
+ "MY": {
+ "name": "Malasia"
+ },
+ "MW": {
+ "name": "Malaui"
+ },
+ "ML": {
+ "name": "Malí"
+ },
+ "MT": {
+ "name": "Malta"
+ },
+ "MA": {
+ "name": "Marruecos"
+ },
+ "MU": {
+ "name": "Mauriciu"
+ },
+ "MR": {
+ "name": "Mauritania"
+ },
+ "YT": {
+ "name": "Mayotte"
+ },
+ "MX": {
+ "name": "Mexico"
+ },
+ "FM": {
+ "name": "Micronesia"
+ },
+ "MD": {
+ "name": "Moldavia"
+ },
+ "MC": {
+ "name": "Mónacu"
+ },
+ "MN": {
+ "name": "Mongolia"
+ },
+ "ME": {
+ "name": "Montenegru"
+ },
+ "MS": {
+ "name": "Montserrat"
+ },
+ "MZ": {
+ "name": "Mozambique"
+ },
+ "MM": {
+ "name": "Myanmar (Birmania)"
+ },
+ "NA": {
+ "name": "Namibia"
+ },
+ "NR": {
+ "name": "Nauru"
+ },
+ "NP": {
+ "name": "Nepal"
+ },
+ "NI": {
+ "name": "Nicaragua"
+ },
+ "NU": {
+ "name": "Niue"
+ },
+ "NG": {
+ "name": "Nixeria"
+ },
+ "NO": {
+ "name": "Noruega"
+ },
+ "NC": {
+ "name": "Nueva Caledonia"
+ },
+ "NZ": {
+ "name": "Nueva Zelanda"
+ },
+ "OM": {
+ "name": "Omán"
+ },
+ "NL": {
+ "name": "Países Baxos"
+ },
+ "PK": {
+ "name": "Pakistan"
+ },
+ "PW": {
+ "name": "Paláu"
+ },
+ "PS": {
+ "name": "Palestinian Territories"
+ },
+ "PA": {
+ "name": "Panamá"
+ },
+ "PG": {
+ "name": "Papúa Nueva Guinea"
+ },
+ "PY": {
+ "name": "Paraguay"
+ },
+ "PE": {
+ "name": "Perú"
+ },
+ "PF": {
+ "name": "Polinesia Francesa"
+ },
+ "PL": {
+ "name": "Polonia"
+ },
+ "PT": {
+ "name": "Portugal"
+ },
+ "PR": {
+ "name": "Puertu Ricu"
+ },
+ "QA": {
+ "name": "Qatar"
+ },
+ "GB": {
+ "name": "Reinu Xuníu"
+ },
+ "CF": {
+ "name": "República Centroafricana"
+ },
+ "DO": {
+ "name": "República Dominicana"
+ },
+ "RE": {
+ "name": "Reunión"
+ },
+ "RW": {
+ "name": "Ruanda"
+ },
+ "RO": {
+ "name": "Rumanía"
+ },
+ "RU": {
+ "name": "Rusia"
+ },
+ "EH": {
+ "name": "Sáḥara Occidental"
+ },
+ "KN": {
+ "name": "Saint Kitts y Nevis"
+ },
+ "MF": {
+ "name": "Saint Martin"
+ },
+ "PM": {
+ "name": "Saint Pierre y Miquelon"
+ },
+ "WS": {
+ "name": "Samoa"
+ },
+ "AS": {
+ "name": "Samoa Americana"
+ },
+ "BL": {
+ "name": "San Bartolomé"
+ },
+ "SM": {
+ "name": "San Marín"
+ },
+ "VC": {
+ "name": "San Vicente y Granadines"
+ },
+ "LC": {
+ "name": "Santa Llucía"
+ },
+ "ST": {
+ "name": "Santu Tomé y Príncipe"
+ },
+ "SN": {
+ "name": "Senegal"
+ },
+ "RS": {
+ "name": "Serbia"
+ },
+ "SC": {
+ "name": "Seychelles"
+ },
+ "SL": {
+ "name": "Sierra Leone"
+ },
+ "SG": {
+ "name": "Singapur"
+ },
+ "SX": {
+ "name": "Sint Maarten"
+ },
+ "SY": {
+ "name": "Siria"
+ },
+ "SO": {
+ "name": "Somalia"
+ },
+ "LK": {
+ "name": "Sri Lanka"
+ },
+ "SH": {
+ "name": "St. Helena"
+ },
+ "SZ": {
+ "name": "Suazilandia"
+ },
+ "ZA": {
+ "name": "Sudáfrica"
+ },
+ "SD": {
+ "name": "Sudán"
+ },
+ "SS": {
+ "name": "Sudán del Sur"
+ },
+ "SE": {
+ "name": "Suecia"
+ },
+ "CH": {
+ "name": "Suiza"
+ },
+ "SR": {
+ "name": "Surinam"
+ },
+ "SJ": {
+ "name": "Svalbard ya Islla Jan Mayen"
+ },
+ "TH": {
+ "name": "Tailandia"
+ },
+ "TW": {
+ "name": "Taiwán"
+ },
+ "TZ": {
+ "name": "Tanzania"
+ },
+ "TJ": {
+ "name": "Taxiquistán"
+ },
+ "IO": {
+ "name": "Territoriu Británicu del Océanu Ãndicu"
+ },
+ "TF": {
+ "name": "Tierres Australes Franceses"
+ },
+ "TL": {
+ "name": "Timor Oriental"
+ },
+ "TG": {
+ "name": "Togo"
+ },
+ "TK": {
+ "name": "Tokeláu"
+ },
+ "TO": {
+ "name": "Tonga"
+ },
+ "TT": {
+ "name": "Trinidá y Tobagu"
+ },
+ "TA": {
+ "name": "Tristán da Cunha"
+ },
+ "TN": {
+ "name": "Tunicia"
+ },
+ "TM": {
+ "name": "Turkmenistán"
+ },
+ "TR": {
+ "name": "Turquía"
+ },
+ "TV": {
+ "name": "Tuvalu"
+ },
+ "UA": {
+ "name": "Ucraína"
+ },
+ "UG": {
+ "name": "Uganda"
+ },
+ "UY": {
+ "name": "Uruguay"
+ },
+ "UZ": {
+ "name": "Uzbequistán"
+ },
+ "VU": {
+ "name": "Vanuatu"
+ },
+ "VE": {
+ "name": "Venezuela"
+ },
+ "VN": {
+ "name": "Vietnam"
+ },
+ "WF": {
+ "name": "Wallis y Futuna"
+ },
+ "JM": {
+ "name": "Xamaica"
+ },
+ "JP": {
+ "name": "Xapón"
+ },
+ "GE": {
+ "name": "Xeorxa"
+ },
+ "GI": {
+ "name": "Xibraltar"
+ },
+ "CY": {
+ "name": "Xipre"
+ },
+ "JO": {
+ "name": "Xordania"
+ },
+ "YE": {
+ "name": "Yemen"
+ },
+ "ZM": {
+ "name": "Zambia"
+ },
+ "ZW": {
+ "name": "Zimbabue"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/country/az.json b/library/intl/resources/country/az.json
new file mode 100644
index 000000000..98906a92a
--- /dev/null
+++ b/library/intl/resources/country/az.json
@@ -0,0 +1,761 @@
+{
+ "VI": {
+ "name": "ABŞ Vircin Adaları"
+ },
+ "AX": {
+ "name": "Aland Adaları"
+ },
+ "AL": {
+ "name": "Albaniya"
+ },
+ "DE": {
+ "name": "Almaniya"
+ },
+ "US": {
+ "name": "Amerika Birləşmiş Ştatları"
+ },
+ "AS": {
+ "name": "Amerika Samoası"
+ },
+ "AD": {
+ "name": "Andorra"
+ },
+ "AI": {
+ "name": "Angila"
+ },
+ "AO": {
+ "name": "Anqola"
+ },
+ "AQ": {
+ "name": "Antarktika"
+ },
+ "AG": {
+ "name": "Antiqua vÉ™ Barbuda"
+ },
+ "AR": {
+ "name": "Argentina"
+ },
+ "AW": {
+ "name": "Aruba"
+ },
+ "AU": {
+ "name": "Avstraliya"
+ },
+ "AT": {
+ "name": "Avstriya"
+ },
+ "AZ": {
+ "name": "Azərbaycan"
+ },
+ "BS": {
+ "name": "Baham Adaları"
+ },
+ "BD": {
+ "name": "BanqladeÅŸ"
+ },
+ "BB": {
+ "name": "Barbados"
+ },
+ "BY": {
+ "name": "Belarus"
+ },
+ "BE": {
+ "name": "Belçika"
+ },
+ "BZ": {
+ "name": "Beliz"
+ },
+ "BJ": {
+ "name": "Benin"
+ },
+ "BM": {
+ "name": "Bermuda"
+ },
+ "BH": {
+ "name": "Bəhreyn"
+ },
+ "AE": {
+ "name": "BirləşmiÅŸ ÆrÉ™b ÆmirliklÉ™ri"
+ },
+ "GB": {
+ "name": "Birləşmiş Krallıq"
+ },
+ "UM": {
+ "name": "Birləşmiş Ştatlar Uzaq Adalar"
+ },
+ "BO": {
+ "name": "Boliviya"
+ },
+ "BG": {
+ "name": "Bolqariya"
+ },
+ "BA": {
+ "name": "Bosniya vÉ™ Hersoqovina"
+ },
+ "BW": {
+ "name": "Botsvana"
+ },
+ "BR": {
+ "name": "Braziliya"
+ },
+ "IO": {
+ "name": "Britaniya Hind Okeanı Ærazisi"
+ },
+ "VG": {
+ "name": "Britaniya Vircin Adaları"
+ },
+ "BN": {
+ "name": "Bruney"
+ },
+ "BF": {
+ "name": "Burkina Faso"
+ },
+ "BI": {
+ "name": "Burundi"
+ },
+ "BT": {
+ "name": "Butan"
+ },
+ "JE": {
+ "name": "Cersi"
+ },
+ "ZA": {
+ "name": "Cənub Afrika"
+ },
+ "GS": {
+ "name": "Cənubi Corciya və Cənubi Sendviç Adaları"
+ },
+ "KR": {
+ "name": "Cənubi Koreya"
+ },
+ "SS": {
+ "name": "Cənubi Sudan"
+ },
+ "DJ": {
+ "name": "Cibuti"
+ },
+ "TD": {
+ "name": "Çad"
+ },
+ "CZ": {
+ "name": "Çexiya"
+ },
+ "CL": {
+ "name": "Çili"
+ },
+ "CN": {
+ "name": "Çin"
+ },
+ "DK": {
+ "name": "Danimarka"
+ },
+ "DG": {
+ "name": "Dieqo Qarsiya"
+ },
+ "DM": {
+ "name": "Dominika"
+ },
+ "DO": {
+ "name": "Dominikan Respublikası"
+ },
+ "ET": {
+ "name": "Efiopiya"
+ },
+ "EC": {
+ "name": "Ekvador"
+ },
+ "GQ": {
+ "name": "Ekvatorial Qvineya"
+ },
+ "ER": {
+ "name": "Eritreya"
+ },
+ "AM": {
+ "name": "Ermənistan"
+ },
+ "EE": {
+ "name": "Estoniya"
+ },
+ "AF": {
+ "name": "Æfqanıstan"
+ },
+ "DZ": {
+ "name": "ÆlcÉ™zair"
+ },
+ "FO": {
+ "name": "Farer Adaları"
+ },
+ "PS": {
+ "name": "FÉ™lÉ™stin ÆrazilÉ™ri"
+ },
+ "FJ": {
+ "name": "Fici"
+ },
+ "CI": {
+ "name": "Fil DiÅŸi Sahili"
+ },
+ "PH": {
+ "name": "Filippin"
+ },
+ "FI": {
+ "name": "Finlandiya"
+ },
+ "FK": {
+ "name": "Folklend Adaları"
+ },
+ "FR": {
+ "name": "Fransa"
+ },
+ "TF": {
+ "name": "Fransa CÉ™nub ÆrazilÉ™ri"
+ },
+ "GF": {
+ "name": "Fransız Qviyanası"
+ },
+ "PF": {
+ "name": "Fransız Polineziyası"
+ },
+ "GG": {
+ "name": "Gernsey"
+ },
+ "GI": {
+ "name": "Gibraltar"
+ },
+ "GE": {
+ "name": "Gürcüstan"
+ },
+ "HT": {
+ "name": "Haiti"
+ },
+ "IN": {
+ "name": "Hindistan"
+ },
+ "HN": {
+ "name": "Honduras"
+ },
+ "HK": {
+ "name": "Honq Konq Xüsusi Ä°nzibati Ærazi Çin"
+ },
+ "HR": {
+ "name": "Xorvatiya"
+ },
+ "ID": {
+ "name": "Ä°ndoneziya"
+ },
+ "JO": {
+ "name": "Ä°ordaniya"
+ },
+ "IQ": {
+ "name": "Ä°raq"
+ },
+ "IR": {
+ "name": "Ä°ran"
+ },
+ "IE": {
+ "name": "Ä°rlandiya"
+ },
+ "IS": {
+ "name": "Ä°slandiya"
+ },
+ "ES": {
+ "name": "Ä°spaniya"
+ },
+ "IL": {
+ "name": "Ä°srail"
+ },
+ "SE": {
+ "name": "İsveç"
+ },
+ "CH": {
+ "name": "İsveçrə"
+ },
+ "IT": {
+ "name": "Ä°taliya"
+ },
+ "KH": {
+ "name": "Kamboca"
+ },
+ "CM": {
+ "name": "Kamerun"
+ },
+ "CA": {
+ "name": "Kanada"
+ },
+ "IC": {
+ "name": "Kanar Adaları"
+ },
+ "CV": {
+ "name": "Kape Verde"
+ },
+ "BQ": {
+ "name": "Karib Niderlandı"
+ },
+ "KY": {
+ "name": "Kayman Adaları"
+ },
+ "KE": {
+ "name": "Keniya"
+ },
+ "CY": {
+ "name": "Kipr"
+ },
+ "KI": {
+ "name": "Kiribati"
+ },
+ "CC": {
+ "name": "Kokos Adaları"
+ },
+ "CO": {
+ "name": "Kolumbiya"
+ },
+ "KM": {
+ "name": "Komor Adaları"
+ },
+ "CG": {
+ "name": "Konqo - Brazzavil"
+ },
+ "CD": {
+ "name": "Konqo - KinÅŸasa"
+ },
+ "XK": {
+ "name": "Kosovo"
+ },
+ "CR": {
+ "name": "Kosta Rika"
+ },
+ "CU": {
+ "name": "Kuba"
+ },
+ "CK": {
+ "name": "Kuk Adaları"
+ },
+ "CW": {
+ "name": "Kurasao"
+ },
+ "KW": {
+ "name": "Küveyt"
+ },
+ "GA": {
+ "name": "Qabon"
+ },
+ "GM": {
+ "name": "Qambiya"
+ },
+ "GH": {
+ "name": "Qana"
+ },
+ "QA": {
+ "name": "Qatar"
+ },
+ "KZ": {
+ "name": "Qazaxıstan"
+ },
+ "EH": {
+ "name": "Qərbi Sahara"
+ },
+ "KG": {
+ "name": "Qırğızıstan"
+ },
+ "GD": {
+ "name": "Qrenada"
+ },
+ "GL": {
+ "name": "Qrenlandiya"
+ },
+ "GU": {
+ "name": "Quam"
+ },
+ "GP": {
+ "name": "Qvadelupa"
+ },
+ "GT": {
+ "name": "Qvatemala"
+ },
+ "GN": {
+ "name": "Qvineya"
+ },
+ "GW": {
+ "name": "Qvineya-Bisau"
+ },
+ "GY": {
+ "name": "Qviyana"
+ },
+ "LA": {
+ "name": "Laos"
+ },
+ "LV": {
+ "name": "Latviya"
+ },
+ "LS": {
+ "name": "Lesoto"
+ },
+ "LR": {
+ "name": "Liberiya"
+ },
+ "LI": {
+ "name": "LixtenÅŸteyn"
+ },
+ "LT": {
+ "name": "Litva"
+ },
+ "LB": {
+ "name": "Livan"
+ },
+ "LY": {
+ "name": "Liviya"
+ },
+ "LU": {
+ "name": "Lüksemburq"
+ },
+ "HU": {
+ "name": "Macarıstan"
+ },
+ "MG": {
+ "name": "Madaqaskar"
+ },
+ "MO": {
+ "name": "Makao Xüsusi Ä°nzibati Ærazi Çin"
+ },
+ "MK": {
+ "name": "Makedoniya"
+ },
+ "MW": {
+ "name": "Malavi"
+ },
+ "MY": {
+ "name": "Malayziya"
+ },
+ "MV": {
+ "name": "Maldiv Adaları"
+ },
+ "ML": {
+ "name": "Mali"
+ },
+ "MT": {
+ "name": "Malta"
+ },
+ "MH": {
+ "name": "Marşal Adaları"
+ },
+ "MQ": {
+ "name": "Martinik"
+ },
+ "MU": {
+ "name": "Mavriki"
+ },
+ "MR": {
+ "name": "Mavritaniya"
+ },
+ "YT": {
+ "name": "Mayot"
+ },
+ "MX": {
+ "name": "Meksika"
+ },
+ "IM": {
+ "name": "Men Adası"
+ },
+ "MA": {
+ "name": "Mərakeş"
+ },
+ "CF": {
+ "name": "Mərkəzi Afrika Respublikası"
+ },
+ "FM": {
+ "name": "Mikroneziya"
+ },
+ "CX": {
+ "name": "Milad Adası"
+ },
+ "EG": {
+ "name": "Misir"
+ },
+ "MD": {
+ "name": "Moldova"
+ },
+ "MC": {
+ "name": "Monako"
+ },
+ "MN": {
+ "name": "Monqoliya"
+ },
+ "MS": {
+ "name": "Monserat"
+ },
+ "ME": {
+ "name": "Monteneqro"
+ },
+ "MZ": {
+ "name": "Mozambik"
+ },
+ "SH": {
+ "name": "Müqəddəs Yelena"
+ },
+ "MM": {
+ "name": "Myanma"
+ },
+ "NA": {
+ "name": "Namibiya"
+ },
+ "NR": {
+ "name": "Nauru"
+ },
+ "NP": {
+ "name": "Nepal"
+ },
+ "NL": {
+ "name": "Niderland"
+ },
+ "NE": {
+ "name": "Niger"
+ },
+ "NG": {
+ "name": "Nigeriya"
+ },
+ "NI": {
+ "name": "Nikaraqua"
+ },
+ "NU": {
+ "name": "Niue"
+ },
+ "NF": {
+ "name": "Norfolk Adası"
+ },
+ "NO": {
+ "name": "Norveç"
+ },
+ "OM": {
+ "name": "Oman"
+ },
+ "UZ": {
+ "name": "Özbəkistan"
+ },
+ "PK": {
+ "name": "Pakistan"
+ },
+ "PW": {
+ "name": "Palau"
+ },
+ "PA": {
+ "name": "Panama"
+ },
+ "PG": {
+ "name": "Papua Yeni Qvineya"
+ },
+ "PY": {
+ "name": "Paraqvay"
+ },
+ "PE": {
+ "name": "Peru"
+ },
+ "PN": {
+ "name": "Pitkern Adaları"
+ },
+ "PL": {
+ "name": "PolÅŸa"
+ },
+ "PT": {
+ "name": "Portuqal"
+ },
+ "PR": {
+ "name": "Puerto Riko"
+ },
+ "RE": {
+ "name": "Reunion"
+ },
+ "RW": {
+ "name": "Ruanda"
+ },
+ "RO": {
+ "name": "Rumıniya"
+ },
+ "RU": {
+ "name": "Rusiya"
+ },
+ "SV": {
+ "name": "Salvador"
+ },
+ "WS": {
+ "name": "Samoa"
+ },
+ "BL": {
+ "name": "San Bartolomey"
+ },
+ "KN": {
+ "name": "San Kits vÉ™ Nevis"
+ },
+ "LC": {
+ "name": "San Lüsiya"
+ },
+ "SM": {
+ "name": "San Marino"
+ },
+ "MF": {
+ "name": "San Martin"
+ },
+ "PM": {
+ "name": "San Pier vÉ™ Mikelon"
+ },
+ "VC": {
+ "name": "San Vinsent vÉ™ Qrenada"
+ },
+ "ST": {
+ "name": "Sao Tome vÉ™ Prinsip"
+ },
+ "SN": {
+ "name": "Seneqal"
+ },
+ "RS": {
+ "name": "Serbiya"
+ },
+ "EA": {
+ "name": "Seuta vÉ™ Melilya"
+ },
+ "SC": {
+ "name": "Seyşel Adaları"
+ },
+ "SA": {
+ "name": "SÉ™udiyyÉ™ ÆrÉ™bistanı"
+ },
+ "SL": {
+ "name": "Siera Leon"
+ },
+ "SG": {
+ "name": "Sinqapur"
+ },
+ "SX": {
+ "name": "Sint Maarten"
+ },
+ "SK": {
+ "name": "Slovakiya"
+ },
+ "SI": {
+ "name": "Sloveniya"
+ },
+ "SB": {
+ "name": "Solomon Adaları"
+ },
+ "SO": {
+ "name": "Somali"
+ },
+ "SD": {
+ "name": "Sudan"
+ },
+ "SR": {
+ "name": "Surinam"
+ },
+ "SY": {
+ "name": "Suriya"
+ },
+ "SJ": {
+ "name": "Svalbard vÉ™ Yan Mayen"
+ },
+ "SZ": {
+ "name": "Svazilend"
+ },
+ "TL": {
+ "name": "Şərqi Timor"
+ },
+ "KP": {
+ "name": "Åžimali Koreya"
+ },
+ "MP": {
+ "name": "Şimali Mariana Adaları"
+ },
+ "LK": {
+ "name": "Åžri Lanka"
+ },
+ "TJ": {
+ "name": "Tacikistan"
+ },
+ "TZ": {
+ "name": "Tanzaniya"
+ },
+ "TH": {
+ "name": "Tayland"
+ },
+ "TW": {
+ "name": "Tayvan"
+ },
+ "TK": {
+ "name": "Tokelau"
+ },
+ "TG": {
+ "name": "Toqo"
+ },
+ "TO": {
+ "name": "Tonqa"
+ },
+ "TT": {
+ "name": "Trinidad vÉ™ Tobaqo"
+ },
+ "TA": {
+ "name": "Tristan da Kunya"
+ },
+ "TN": {
+ "name": "Tunis"
+ },
+ "TC": {
+ "name": "Turks və Kaikos Adaları"
+ },
+ "TV": {
+ "name": "Tuvalu"
+ },
+ "TR": {
+ "name": "Türkiya"
+ },
+ "TM": {
+ "name": "Türkmənistan"
+ },
+ "UA": {
+ "name": "Ukrayna"
+ },
+ "UG": {
+ "name": "Uqanda"
+ },
+ "WF": {
+ "name": "Uolis vÉ™ Futuna"
+ },
+ "UY": {
+ "name": "Uruqvay"
+ },
+ "VU": {
+ "name": "Vanuatu"
+ },
+ "VA": {
+ "name": "Vatikan"
+ },
+ "VE": {
+ "name": "Venesuela"
+ },
+ "VN": {
+ "name": "Vyetnam"
+ },
+ "JM": {
+ "name": "Yamayka"
+ },
+ "JP": {
+ "name": "Yaponiya"
+ },
+ "NC": {
+ "name": "Yeni Kaledoniya"
+ },
+ "NZ": {
+ "name": "Yeni Zelandiya"
+ },
+ "YE": {
+ "name": "Yəmən"
+ },
+ "GR": {
+ "name": "Yunanıstan"
+ },
+ "AC": {
+ "name": "Yüksəliş Adası"
+ },
+ "ZM": {
+ "name": "Zambiya"
+ },
+ "ZW": {
+ "name": "Zimbabve"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/country/bas.json b/library/intl/resources/country/bas.json
new file mode 100644
index 000000000..4c7ff3212
--- /dev/null
+++ b/library/intl/resources/country/bas.json
@@ -0,0 +1,761 @@
+{
+ "US": {
+ "name": "Àdnà i Bilɔ̀ŋ bi Amerkà"
+ },
+ "AE": {
+ "name": "Àdnà i Bilɔ̀ŋ bi ArÄbìà"
+ },
+ "GB": {
+ "name": "Àdnà i Lɔ̂ŋ"
+ },
+ "AF": {
+ "name": "Àfgànìstâŋ"
+ },
+ "ZA": {
+ "name": "ÀfrÇkà Sɔ̀"
+ },
+ "HT": {
+ "name": "Àitì"
+ },
+ "AX": {
+ "name": "Ã…land Islands"
+ },
+ "AL": {
+ "name": "Àlbanìà"
+ },
+ "DZ": {
+ "name": "Àlgerìà"
+ },
+ "AS": {
+ "name": "American Samoa"
+ },
+ "AQ": {
+ "name": "Antarctica"
+ },
+ "AD": {
+ "name": "Àŋdɔ̂r"
+ },
+ "AI": {
+ "name": "Àŋgiyà"
+ },
+ "AO": {
+ "name": "Àŋgolà"
+ },
+ "AG": {
+ "name": "Àŋtigà ɓɔ Bàrbudà"
+ },
+ "AR": {
+ "name": "Àrgàŋtinà"
+ },
+ "AM": {
+ "name": "Àrmenìà"
+ },
+ "AW": {
+ "name": "Àrubà"
+ },
+ "AC": {
+ "name": "Ascension Island"
+ },
+ "AZ": {
+ "name": "Àzɛ̀rbajàŋ"
+ },
+ "BS": {
+ "name": "Bàhamàs"
+ },
+ "BD": {
+ "name": "Bàŋglàdɛ̂s"
+ },
+ "BH": {
+ "name": "Bàraìn"
+ },
+ "BB": {
+ "name": "Bàrbadò"
+ },
+ "BY": {
+ "name": "Bèlarùs"
+ },
+ "BZ": {
+ "name": "Bèlîs"
+ },
+ "BJ": {
+ "name": "Bènɛ̂ŋ"
+ },
+ "BE": {
+ "name": "Bɛlgyùm"
+ },
+ "BM": {
+ "name": "Bɛ̀rmudà"
+ },
+ "FK": {
+ "name": "Bìòn bi Falkland"
+ },
+ "KY": {
+ "name": "Bìòn bi Kaymàn"
+ },
+ "CK": {
+ "name": "Bìòn bi Kook"
+ },
+ "VG": {
+ "name": "Bìòn bi kɔnji bi Ŋgisì"
+ },
+ "VI": {
+ "name": "Bìòn bi kɔnji bi U.S."
+ },
+ "MH": {
+ "name": "Bìòn bi Marcàl"
+ },
+ "MP": {
+ "name": "Bìòn bi Marìanà ŋ̀ɔmbɔk"
+ },
+ "SB": {
+ "name": "Bìòn bi SalÅmò"
+ },
+ "TC": {
+ "name": "Bìòn bi Tûrks nì Kalkòs"
+ },
+ "IO": {
+ "name": "Bìtèk bi Ŋgisì i Tūyɛ Īndìà"
+ },
+ "BW": {
+ "name": "Bòdsùanà"
+ },
+ "BA": {
+ "name": "Bòhnià Ærzègòvinà"
+ },
+ "BO": {
+ "name": "Bòlivìà"
+ },
+ "BR": {
+ "name": "Bràsîl"
+ },
+ "BN": {
+ "name": "Brunei"
+ },
+ "BG": {
+ "name": "Bùlgarìà"
+ },
+ "BF": {
+ "name": "Bùrkìnà Fasò"
+ },
+ "BI": {
+ "name": "Bùrundì"
+ },
+ "BT": {
+ "name": "Bùtân"
+ },
+ "TD": {
+ "name": "Câd"
+ },
+ "IC": {
+ "name": "Canary Islands"
+ },
+ "BQ": {
+ "name": "Caribbean Netherlands"
+ },
+ "EA": {
+ "name": "Ceuta & Melilla"
+ },
+ "CX": {
+ "name": "Christmas Island"
+ },
+ "CC": {
+ "name": "Cocos (Keeling) Islands"
+ },
+ "CW": {
+ "name": "Curaçao"
+ },
+ "CZ": {
+ "name": "Czech Republic"
+ },
+ "DK": {
+ "name": "Dànmârk"
+ },
+ "DG": {
+ "name": "Diego Garcia"
+ },
+ "DM": {
+ "name": "Dòmnîk"
+ },
+ "DO": {
+ "name": "Dòmnikà"
+ },
+ "EG": {
+ "name": "Ègîptò"
+ },
+ "EC": {
+ "name": "Èkwàtorìà"
+ },
+ "ER": {
+ "name": "Èrìtrěà"
+ },
+ "EE": {
+ "name": "Èstonìà"
+ },
+ "ET": {
+ "name": "Ètìopìà"
+ },
+ "FO": {
+ "name": "Faroe Islands"
+ },
+ "FJ": {
+ "name": "Fiji"
+ },
+ "PH": {
+ "name": "Fìlìpîn"
+ },
+ "FI": {
+ "name": "Fìnlând"
+ },
+ "TF": {
+ "name": "French Southern Territories"
+ },
+ "GA": {
+ "name": "Gàbɔ̂ŋ"
+ },
+ "GM": {
+ "name": "Gàmbià"
+ },
+ "GH": {
+ "name": "Ganà"
+ },
+ "GE": {
+ "name": "Gèɔrgìà"
+ },
+ "GI": {
+ "name": "Gìlbràtâr"
+ },
+ "GN": {
+ "name": "Gìnê"
+ },
+ "GW": {
+ "name": "Gìne Bìsàô"
+ },
+ "GQ": {
+ "name": "Gìne Èkwàtorìà"
+ },
+ "PG": {
+ "name": "Gìne ì Pàpu"
+ },
+ "GD": {
+ "name": "Grènadà"
+ },
+ "GR": {
+ "name": "GrÇkyà"
+ },
+ "GL": {
+ "name": "GrÇnlànd"
+ },
+ "GU": {
+ "name": "Gùâm"
+ },
+ "GG": {
+ "name": "Guernsey"
+ },
+ "GY": {
+ "name": "Gùyanà"
+ },
+ "GF": {
+ "name": "Gùyanà Pùlàsi"
+ },
+ "GP": {
+ "name": "Gwàdèlûp"
+ },
+ "GT": {
+ "name": "Gwàtèmalà"
+ },
+ "HK": {
+ "name": "Hong Kong SAR China"
+ },
+ "IN": {
+ "name": "Indìà"
+ },
+ "ID": {
+ "name": "Indònèsià"
+ },
+ "IQ": {
+ "name": "Ìrâk"
+ },
+ "IR": {
+ "name": "Ìrâŋ"
+ },
+ "IE": {
+ "name": "Ìrlând"
+ },
+ "IS": {
+ "name": "Ìslandìà"
+ },
+ "IM": {
+ "name": "Isle of Man"
+ },
+ "IL": {
+ "name": "Isràɛ̂l"
+ },
+ "IT": {
+ "name": "Ìtalìà"
+ },
+ "JM": {
+ "name": "Jàmàikà"
+ },
+ "DE": {
+ "name": "Jamân"
+ },
+ "JP": {
+ "name": "Japan"
+ },
+ "JE": {
+ "name": "Jersey"
+ },
+ "DJ": {
+ "name": "Jìbutì"
+ },
+ "CV": {
+ "name": "Kabwɛ᷆r"
+ },
+ "NC": {
+ "name": "Kàlèdonìà Yɔ̀ndɔ"
+ },
+ "KH": {
+ "name": "Kàmbodìà"
+ },
+ "CM": {
+ "name": "Kàmɛ̀rûn"
+ },
+ "CA": {
+ "name": "Kànadà"
+ },
+ "QA": {
+ "name": "Kàtâr"
+ },
+ "KZ": {
+ "name": "Kàzàkstâŋ"
+ },
+ "KE": {
+ "name": "Kenìà"
+ },
+ "CL": {
+ "name": "Kìlî"
+ },
+ "CN": {
+ "name": "Kinà"
+ },
+ "CY": {
+ "name": "Kiprò"
+ },
+ "KG": {
+ "name": "Kìrgìzìstàŋ"
+ },
+ "KI": {
+ "name": "Kìrìbatì"
+ },
+ "CG": {
+ "name": "Kòŋgo"
+ },
+ "CD": {
+ "name": "Kòŋgo ìkɛŋi"
+ },
+ "XK": {
+ "name": "Kosovo"
+ },
+ "CR": {
+ "name": "Kòstà Rikà"
+ },
+ "KW": {
+ "name": "Kòwêt"
+ },
+ "CO": {
+ "name": "Kɔ̀lɔmbìà"
+ },
+ "KM": {
+ "name": "Kɔ̀mɔ̂r"
+ },
+ "KP": {
+ "name": "Kɔ̀re ì Ŋ̀ɔmbɔk"
+ },
+ "KR": {
+ "name": "Kɔ̀re ì Ŋ̀wɛ̀lmbɔk"
+ },
+ "HR": {
+ "name": "Kròasìà"
+ },
+ "CU": {
+ "name": "Kubà"
+ },
+ "LV": {
+ "name": "Làdvià"
+ },
+ "LA": {
+ "name": "Làôs"
+ },
+ "LB": {
+ "name": "Lèbanòn"
+ },
+ "LS": {
+ "name": "Lesòtò"
+ },
+ "LR": {
+ "name": "Lìberìà"
+ },
+ "LY": {
+ "name": "Libìà"
+ },
+ "LI": {
+ "name": "Ligstɛntàn"
+ },
+ "LT": {
+ "name": "Lìtùanìà"
+ },
+ "LU": {
+ "name": "Lùgsàmbûr"
+ },
+ "MO": {
+ "name": "Macau SAR China"
+ },
+ "MG": {
+ "name": "Màdàgàskâr"
+ },
+ "MW": {
+ "name": "Màlàwi"
+ },
+ "MV": {
+ "name": "Màldîf"
+ },
+ "MY": {
+ "name": "Màlɛ̀sìà"
+ },
+ "ML": {
+ "name": "Màli"
+ },
+ "MT": {
+ "name": "Maltà"
+ },
+ "CI": {
+ "name": "Màŋ mi Njɔ̂k"
+ },
+ "MA": {
+ "name": "Màrokò"
+ },
+ "MQ": {
+ "name": "Màrtìnîk"
+ },
+ "MK": {
+ "name": "Màsèdonìà"
+ },
+ "YT": {
+ "name": "Màyɔ̂t"
+ },
+ "MX": {
+ "name": "Mɛ̀gsîk"
+ },
+ "FM": {
+ "name": "Mìkrònesìà"
+ },
+ "MD": {
+ "name": "Moldavìà"
+ },
+ "MC": {
+ "name": "Mònakò"
+ },
+ "ME": {
+ "name": "Montenegro"
+ },
+ "MN": {
+ "name": "Mòŋgolìà"
+ },
+ "MU": {
+ "name": "Mòrîs"
+ },
+ "MR": {
+ "name": "Mòrìtanìà"
+ },
+ "MZ": {
+ "name": "Mòsàmbîk"
+ },
+ "MS": {
+ "name": "Mɔ̀ŋseràt"
+ },
+ "MM": {
+ "name": "Myànmâr"
+ },
+ "NA": {
+ "name": "Nàmibìà"
+ },
+ "NP": {
+ "name": "Nèpâl"
+ },
+ "NR": {
+ "name": "Nerù"
+ },
+ "NG": {
+ "name": "Nìgerìà"
+ },
+ "NE": {
+ "name": "Nìjɛ̂r"
+ },
+ "NI": {
+ "name": "Nìkàragwà"
+ },
+ "NU": {
+ "name": "Nìuɛ̀"
+ },
+ "NL": {
+ "name": "Ǹlɛndi"
+ },
+ "NO": {
+ "name": "Nɔ̀rvegìà"
+ },
+ "SH": {
+ "name": "Nûmpubi ÆlÄ“nà"
+ },
+ "KN": {
+ "name": "Nûmpubi Kîts nì Nevìs"
+ },
+ "LC": {
+ "name": "Nûmpubi Lusì"
+ },
+ "SM": {
+ "name": "Nûmpubi MÄatìn"
+ },
+ "PM": {
+ "name": "Nûmpubi Petrò nì Mikèlôn"
+ },
+ "VC": {
+ "name": "Nûmpubi Vɛ̂ŋsâŋ nì grènàdîn"
+ },
+ "CF": {
+ "name": "Ŋ̀ɛm Afrīkà"
+ },
+ "OM": {
+ "name": "Òmân"
+ },
+ "NF": {
+ "name": "Òn i Nɔrfɔ̂k"
+ },
+ "AU": {
+ "name": "Òstralìà"
+ },
+ "AT": {
+ "name": "Ã’strÇk"
+ },
+ "HN": {
+ "name": "Ɔ̀ŋduràs"
+ },
+ "HU": {
+ "name": "Ɔ̀ŋgriì"
+ },
+ "PK": {
+ "name": "Pàkìstân"
+ },
+ "PW": {
+ "name": "Pàlaù"
+ },
+ "PS": {
+ "name": "Pàlɛ̀htinà Hyɔ̀ŋg nì Gazà"
+ },
+ "PA": {
+ "name": "Pànàma"
+ },
+ "ES": {
+ "name": "Pànya"
+ },
+ "PY": {
+ "name": "Pàràgwê"
+ },
+ "PE": {
+ "name": "Pèrû"
+ },
+ "PN": {
+ "name": "Pìdkaìrn"
+ },
+ "PL": {
+ "name": "Pòlànd"
+ },
+ "PF": {
+ "name": "Pòlìnesìà Pùlàsi"
+ },
+ "PR": {
+ "name": "Pɔ̀rtò Rikò"
+ },
+ "PT": {
+ "name": "Pɔ̀tɔkì"
+ },
+ "FR": {
+ "name": "Pùlàsi \/ Fɛ̀lɛ̀nsi \/"
+ },
+ "RE": {
+ "name": "Rèunyɔ̂ŋ"
+ },
+ "RW": {
+ "name": "Rùandà"
+ },
+ "RO": {
+ "name": "Rùmanìà"
+ },
+ "RU": {
+ "name": "Ruslànd"
+ },
+ "SV": {
+ "name": "Sàlvàdɔ̂r"
+ },
+ "WS": {
+ "name": "Sàmoà"
+ },
+ "ST": {
+ "name": "Sào Tòme ɓɔ Prɛ̀ŋcipè"
+ },
+ "SA": {
+ "name": "Sàudi Àrabìà"
+ },
+ "SN": {
+ "name": "Sènègâl"
+ },
+ "RS": {
+ "name": "Serbia"
+ },
+ "SC": {
+ "name": "Sèsɛ̂l"
+ },
+ "SL": {
+ "name": "Sièra Lèɔ̂n"
+ },
+ "NZ": {
+ "name": "Sìlând Yɔ̀ndɔ"
+ },
+ "SX": {
+ "name": "Sint Maarten"
+ },
+ "SG": {
+ "name": "Sìŋgàpûr"
+ },
+ "SY": {
+ "name": "Sirìà"
+ },
+ "SK": {
+ "name": "Slòvakìà"
+ },
+ "SI": {
+ "name": "Slòvanìà"
+ },
+ "SO": {
+ "name": "Sòmalìà"
+ },
+ "GS": {
+ "name": "South Georgia & South Sandwich Islands"
+ },
+ "SS": {
+ "name": "South Sudan"
+ },
+ "LK": {
+ "name": "Srìlaŋkà"
+ },
+ "BL": {
+ "name": "St. Barthélemy"
+ },
+ "MF": {
+ "name": "St. Martin"
+ },
+ "SD": {
+ "name": "Sùdâŋ"
+ },
+ "SR": {
+ "name": "Sùrinâm"
+ },
+ "CH": {
+ "name": "Sùwîs"
+ },
+ "SJ": {
+ "name": "Svalbard & Jan Mayen"
+ },
+ "SZ": {
+ "name": "Swàzìlând"
+ },
+ "SE": {
+ "name": "Swedɛ̀n"
+ },
+ "TJ": {
+ "name": "Tàjìkìstaŋ"
+ },
+ "TZ": {
+ "name": "Tànzànià"
+ },
+ "TH": {
+ "name": "Taylànd"
+ },
+ "TW": {
+ "name": "Tàywân"
+ },
+ "TL": {
+ "name": "Tìmɔ̂r lìkòl"
+ },
+ "TG": {
+ "name": "Tògo"
+ },
+ "TK": {
+ "name": "Tòkèlaò"
+ },
+ "TO": {
+ "name": "Tɔŋgà"
+ },
+ "TT": {
+ "name": "Trìnidàd ɓɔ Tòbagò"
+ },
+ "TA": {
+ "name": "Tristan da Cunha"
+ },
+ "TN": {
+ "name": "Tùnisìà"
+ },
+ "TM": {
+ "name": "Tùrgmènìstân"
+ },
+ "TR": {
+ "name": "Tùrkây"
+ },
+ "TV": {
+ "name": "Tùvàlù"
+ },
+ "UM": {
+ "name": "U.S. Outlying Islands"
+ },
+ "UG": {
+ "name": "Ùgandà"
+ },
+ "UA": {
+ "name": "Ùkrɛ̌n"
+ },
+ "UY": {
+ "name": "Ùrùgwêy"
+ },
+ "UZ": {
+ "name": "Ùzbèkìstân"
+ },
+ "VU": {
+ "name": "Vànùatù"
+ },
+ "VA": {
+ "name": "Vàtìkâŋ"
+ },
+ "VE": {
+ "name": "Vènèzùelà"
+ },
+ "VN": {
+ "name": "Vìɛ̀dnâm"
+ },
+ "WF": {
+ "name": "Wàlîs nì Fùtunà"
+ },
+ "EH": {
+ "name": "Western Sahara"
+ },
+ "YE": {
+ "name": "Yèmɛ̂n"
+ },
+ "JO": {
+ "name": "Yɔ̀rdanià"
+ },
+ "ZM": {
+ "name": "Zàmbià"
+ },
+ "ZW": {
+ "name": "Zìmbàbwê"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/country/base.json b/library/intl/resources/country/base.json
new file mode 100644
index 000000000..20100624b
--- /dev/null
+++ b/library/intl/resources/country/base.json
@@ -0,0 +1,1511 @@
+{
+ "AC": {
+ "code": "AC",
+ "three_letter_code": "ASC",
+ "telephone_code": "247"
+ },
+ "AD": {
+ "code": "AD",
+ "three_letter_code": "AND",
+ "numeric_code": "020",
+ "telephone_code": "376"
+ },
+ "AE": {
+ "code": "AE",
+ "three_letter_code": "ARE",
+ "numeric_code": "784",
+ "telephone_code": "971"
+ },
+ "AF": {
+ "code": "AF",
+ "three_letter_code": "AFG",
+ "numeric_code": "004",
+ "telephone_code": "93"
+ },
+ "AG": {
+ "code": "AG",
+ "three_letter_code": "ATG",
+ "numeric_code": "028",
+ "telephone_code": "1"
+ },
+ "AI": {
+ "code": "AI",
+ "three_letter_code": "AIA",
+ "numeric_code": "660",
+ "telephone_code": "1"
+ },
+ "AL": {
+ "code": "AL",
+ "three_letter_code": "ALB",
+ "numeric_code": "008",
+ "telephone_code": "355"
+ },
+ "AM": {
+ "code": "AM",
+ "three_letter_code": "ARM",
+ "numeric_code": "051",
+ "telephone_code": "374"
+ },
+ "AO": {
+ "code": "AO",
+ "three_letter_code": "AGO",
+ "numeric_code": "024",
+ "telephone_code": "244"
+ },
+ "AQ": {
+ "code": "AQ",
+ "three_letter_code": "ATA",
+ "numeric_code": "010",
+ "telephone_code": "672"
+ },
+ "AR": {
+ "code": "AR",
+ "three_letter_code": "ARG",
+ "numeric_code": "032",
+ "telephone_code": "54"
+ },
+ "AS": {
+ "code": "AS",
+ "three_letter_code": "ASM",
+ "numeric_code": "016",
+ "telephone_code": "1"
+ },
+ "AT": {
+ "code": "AT",
+ "three_letter_code": "AUT",
+ "numeric_code": "040",
+ "telephone_code": "43"
+ },
+ "AU": {
+ "code": "AU",
+ "three_letter_code": "AUS",
+ "numeric_code": "036",
+ "telephone_code": "61"
+ },
+ "AW": {
+ "code": "AW",
+ "three_letter_code": "ABW",
+ "numeric_code": "533",
+ "telephone_code": "297"
+ },
+ "AX": {
+ "code": "AX",
+ "three_letter_code": "ALA",
+ "numeric_code": "248",
+ "telephone_code": "358"
+ },
+ "AZ": {
+ "code": "AZ",
+ "three_letter_code": "AZE",
+ "numeric_code": "031",
+ "telephone_code": "994"
+ },
+ "BA": {
+ "code": "BA",
+ "three_letter_code": "BIH",
+ "numeric_code": "070",
+ "telephone_code": "387"
+ },
+ "BB": {
+ "code": "BB",
+ "three_letter_code": "BRB",
+ "numeric_code": "052",
+ "telephone_code": "1"
+ },
+ "BD": {
+ "code": "BD",
+ "three_letter_code": "BGD",
+ "numeric_code": "050",
+ "telephone_code": "880"
+ },
+ "BE": {
+ "code": "BE",
+ "three_letter_code": "BEL",
+ "numeric_code": "056",
+ "telephone_code": "32"
+ },
+ "BF": {
+ "code": "BF",
+ "three_letter_code": "BFA",
+ "numeric_code": "854",
+ "telephone_code": "226"
+ },
+ "BG": {
+ "code": "BG",
+ "three_letter_code": "BGR",
+ "numeric_code": "100",
+ "telephone_code": "359"
+ },
+ "BH": {
+ "code": "BH",
+ "three_letter_code": "BHR",
+ "numeric_code": "048",
+ "telephone_code": "973"
+ },
+ "BI": {
+ "code": "BI",
+ "three_letter_code": "BDI",
+ "numeric_code": "108",
+ "telephone_code": "257"
+ },
+ "BJ": {
+ "code": "BJ",
+ "three_letter_code": "BEN",
+ "numeric_code": "204",
+ "telephone_code": "229"
+ },
+ "BL": {
+ "code": "BL",
+ "three_letter_code": "BLM",
+ "numeric_code": "652",
+ "telephone_code": "590"
+ },
+ "BM": {
+ "code": "BM",
+ "three_letter_code": "BMU",
+ "numeric_code": "060",
+ "telephone_code": "1"
+ },
+ "BN": {
+ "code": "BN",
+ "three_letter_code": "BRN",
+ "numeric_code": "096",
+ "telephone_code": "673"
+ },
+ "BO": {
+ "code": "BO",
+ "three_letter_code": "BOL",
+ "numeric_code": "068",
+ "telephone_code": "591"
+ },
+ "BQ": {
+ "code": "BQ",
+ "three_letter_code": "BES",
+ "numeric_code": "535",
+ "telephone_code": "599"
+ },
+ "BR": {
+ "code": "BR",
+ "three_letter_code": "BRA",
+ "numeric_code": "076",
+ "telephone_code": "55"
+ },
+ "BS": {
+ "code": "BS",
+ "three_letter_code": "BHS",
+ "numeric_code": "044",
+ "telephone_code": "1"
+ },
+ "BT": {
+ "code": "BT",
+ "three_letter_code": "BTN",
+ "numeric_code": "064",
+ "telephone_code": "975"
+ },
+ "BW": {
+ "code": "BW",
+ "three_letter_code": "BWA",
+ "numeric_code": "072",
+ "telephone_code": "267"
+ },
+ "BY": {
+ "code": "BY",
+ "three_letter_code": "BLR",
+ "numeric_code": "112",
+ "telephone_code": "375"
+ },
+ "BZ": {
+ "code": "BZ",
+ "three_letter_code": "BLZ",
+ "numeric_code": "084",
+ "telephone_code": "501"
+ },
+ "CA": {
+ "code": "CA",
+ "three_letter_code": "CAN",
+ "numeric_code": "124",
+ "telephone_code": "1"
+ },
+ "CC": {
+ "code": "CC",
+ "three_letter_code": "CCK",
+ "numeric_code": "166",
+ "telephone_code": "61"
+ },
+ "CD": {
+ "code": "CD",
+ "three_letter_code": "COD",
+ "numeric_code": "180",
+ "telephone_code": "243"
+ },
+ "CF": {
+ "code": "CF",
+ "three_letter_code": "CAF",
+ "numeric_code": "140",
+ "telephone_code": "236"
+ },
+ "CG": {
+ "code": "CG",
+ "three_letter_code": "COG",
+ "numeric_code": "178",
+ "telephone_code": "242"
+ },
+ "CH": {
+ "code": "CH",
+ "three_letter_code": "CHE",
+ "numeric_code": "756",
+ "telephone_code": "41"
+ },
+ "CI": {
+ "code": "CI",
+ "three_letter_code": "CIV",
+ "numeric_code": "384",
+ "telephone_code": "225"
+ },
+ "CK": {
+ "code": "CK",
+ "three_letter_code": "COK",
+ "numeric_code": "184",
+ "telephone_code": "682"
+ },
+ "CL": {
+ "code": "CL",
+ "three_letter_code": "CHL",
+ "numeric_code": "152",
+ "telephone_code": "56"
+ },
+ "CM": {
+ "code": "CM",
+ "three_letter_code": "CMR",
+ "numeric_code": "120",
+ "telephone_code": "237"
+ },
+ "CN": {
+ "code": "CN",
+ "three_letter_code": "CHN",
+ "numeric_code": "156",
+ "telephone_code": "86"
+ },
+ "CO": {
+ "code": "CO",
+ "three_letter_code": "COL",
+ "numeric_code": "170",
+ "telephone_code": "57"
+ },
+ "CR": {
+ "code": "CR",
+ "three_letter_code": "CRI",
+ "numeric_code": "188",
+ "telephone_code": "506"
+ },
+ "CU": {
+ "code": "CU",
+ "three_letter_code": "CUB",
+ "numeric_code": "192",
+ "telephone_code": "53"
+ },
+ "CV": {
+ "code": "CV",
+ "three_letter_code": "CPV",
+ "numeric_code": "132",
+ "telephone_code": "238"
+ },
+ "CW": {
+ "code": "CW",
+ "three_letter_code": "CUW",
+ "numeric_code": "531",
+ "telephone_code": "599"
+ },
+ "CX": {
+ "code": "CX",
+ "three_letter_code": "CXR",
+ "numeric_code": "162",
+ "telephone_code": "61"
+ },
+ "CY": {
+ "code": "CY",
+ "three_letter_code": "CYP",
+ "numeric_code": "196",
+ "telephone_code": "357"
+ },
+ "CZ": {
+ "code": "CZ",
+ "three_letter_code": "CZE",
+ "numeric_code": "203",
+ "telephone_code": "420"
+ },
+ "DE": {
+ "code": "DE",
+ "three_letter_code": "DEU",
+ "numeric_code": "276",
+ "telephone_code": "49"
+ },
+ "DG": {
+ "code": "DG",
+ "three_letter_code": "DGA"
+ },
+ "DJ": {
+ "code": "DJ",
+ "three_letter_code": "DJI",
+ "numeric_code": "262",
+ "telephone_code": "253"
+ },
+ "DK": {
+ "code": "DK",
+ "three_letter_code": "DNK",
+ "numeric_code": "208",
+ "telephone_code": "45"
+ },
+ "DM": {
+ "code": "DM",
+ "three_letter_code": "DMA",
+ "numeric_code": "212",
+ "telephone_code": "1"
+ },
+ "DO": {
+ "code": "DO",
+ "three_letter_code": "DOM",
+ "numeric_code": "214",
+ "telephone_code": "1"
+ },
+ "DZ": {
+ "code": "DZ",
+ "three_letter_code": "DZA",
+ "numeric_code": "012",
+ "telephone_code": "213"
+ },
+ "EA": {
+ "code": "EA",
+ "telephone_code": "34"
+ },
+ "EC": {
+ "code": "EC",
+ "three_letter_code": "ECU",
+ "numeric_code": "218",
+ "telephone_code": "593"
+ },
+ "EE": {
+ "code": "EE",
+ "three_letter_code": "EST",
+ "numeric_code": "233",
+ "telephone_code": "372"
+ },
+ "EG": {
+ "code": "EG",
+ "three_letter_code": "EGY",
+ "numeric_code": "818",
+ "telephone_code": "20"
+ },
+ "EH": {
+ "code": "EH",
+ "three_letter_code": "ESH",
+ "numeric_code": "732",
+ "telephone_code": "212"
+ },
+ "ER": {
+ "code": "ER",
+ "three_letter_code": "ERI",
+ "numeric_code": "232",
+ "telephone_code": "291"
+ },
+ "ES": {
+ "code": "ES",
+ "three_letter_code": "ESP",
+ "numeric_code": "724",
+ "telephone_code": "34"
+ },
+ "ET": {
+ "code": "ET",
+ "three_letter_code": "ETH",
+ "numeric_code": "231",
+ "telephone_code": "251"
+ },
+ "FI": {
+ "code": "FI",
+ "three_letter_code": "FIN",
+ "numeric_code": "246",
+ "telephone_code": "358"
+ },
+ "FJ": {
+ "code": "FJ",
+ "three_letter_code": "FJI",
+ "numeric_code": "242",
+ "telephone_code": "679"
+ },
+ "FK": {
+ "code": "FK",
+ "three_letter_code": "FLK",
+ "numeric_code": "238",
+ "telephone_code": "500"
+ },
+ "FM": {
+ "code": "FM",
+ "three_letter_code": "FSM",
+ "numeric_code": "583",
+ "telephone_code": "691"
+ },
+ "FO": {
+ "code": "FO",
+ "three_letter_code": "FRO",
+ "numeric_code": "234",
+ "telephone_code": "298"
+ },
+ "FR": {
+ "code": "FR",
+ "three_letter_code": "FRA",
+ "numeric_code": "250",
+ "telephone_code": "33"
+ },
+ "GA": {
+ "code": "GA",
+ "three_letter_code": "GAB",
+ "numeric_code": "266",
+ "telephone_code": "241"
+ },
+ "GB": {
+ "code": "GB",
+ "three_letter_code": "GBR",
+ "numeric_code": "826",
+ "telephone_code": "44"
+ },
+ "GD": {
+ "code": "GD",
+ "three_letter_code": "GRD",
+ "numeric_code": "308",
+ "telephone_code": "1"
+ },
+ "GE": {
+ "code": "GE",
+ "three_letter_code": "GEO",
+ "numeric_code": "268",
+ "telephone_code": "995"
+ },
+ "GF": {
+ "code": "GF",
+ "three_letter_code": "GUF",
+ "numeric_code": "254",
+ "telephone_code": "594"
+ },
+ "GG": {
+ "code": "GG",
+ "three_letter_code": "GGY",
+ "numeric_code": "831",
+ "telephone_code": "44"
+ },
+ "GH": {
+ "code": "GH",
+ "three_letter_code": "GHA",
+ "numeric_code": "288",
+ "telephone_code": "233"
+ },
+ "GI": {
+ "code": "GI",
+ "three_letter_code": "GIB",
+ "numeric_code": "292",
+ "telephone_code": "350"
+ },
+ "GL": {
+ "code": "GL",
+ "three_letter_code": "GRL",
+ "numeric_code": "304",
+ "telephone_code": "299"
+ },
+ "GM": {
+ "code": "GM",
+ "three_letter_code": "GMB",
+ "numeric_code": "270",
+ "telephone_code": "220"
+ },
+ "GN": {
+ "code": "GN",
+ "three_letter_code": "GIN",
+ "numeric_code": "324",
+ "telephone_code": "224"
+ },
+ "GP": {
+ "code": "GP",
+ "three_letter_code": "GLP",
+ "numeric_code": "312",
+ "telephone_code": "590"
+ },
+ "GQ": {
+ "code": "GQ",
+ "three_letter_code": "GNQ",
+ "numeric_code": "226",
+ "telephone_code": "240"
+ },
+ "GR": {
+ "code": "GR",
+ "three_letter_code": "GRC",
+ "numeric_code": "300",
+ "telephone_code": "30"
+ },
+ "GS": {
+ "code": "GS",
+ "three_letter_code": "SGS",
+ "numeric_code": "239",
+ "telephone_code": "500"
+ },
+ "GT": {
+ "code": "GT",
+ "three_letter_code": "GTM",
+ "numeric_code": "320",
+ "telephone_code": "502"
+ },
+ "GU": {
+ "code": "GU",
+ "three_letter_code": "GUM",
+ "numeric_code": "316",
+ "telephone_code": "1"
+ },
+ "GW": {
+ "code": "GW",
+ "three_letter_code": "GNB",
+ "numeric_code": "624",
+ "telephone_code": "245"
+ },
+ "GY": {
+ "code": "GY",
+ "three_letter_code": "GUY",
+ "numeric_code": "328",
+ "telephone_code": "592"
+ },
+ "HK": {
+ "code": "HK",
+ "three_letter_code": "HKG",
+ "numeric_code": "344",
+ "telephone_code": "852"
+ },
+ "HN": {
+ "code": "HN",
+ "three_letter_code": "HND",
+ "numeric_code": "340",
+ "telephone_code": "504"
+ },
+ "HR": {
+ "code": "HR",
+ "three_letter_code": "HRV",
+ "numeric_code": "191",
+ "telephone_code": "385"
+ },
+ "HT": {
+ "code": "HT",
+ "three_letter_code": "HTI",
+ "numeric_code": "332",
+ "telephone_code": "509"
+ },
+ "HU": {
+ "code": "HU",
+ "three_letter_code": "HUN",
+ "numeric_code": "348",
+ "telephone_code": "36"
+ },
+ "IC": {
+ "code": "IC",
+ "telephone_code": "34"
+ },
+ "ID": {
+ "code": "ID",
+ "three_letter_code": "IDN",
+ "numeric_code": "360",
+ "telephone_code": "62"
+ },
+ "IE": {
+ "code": "IE",
+ "three_letter_code": "IRL",
+ "numeric_code": "372",
+ "telephone_code": "353"
+ },
+ "IL": {
+ "code": "IL",
+ "three_letter_code": "ISR",
+ "numeric_code": "376",
+ "telephone_code": "972"
+ },
+ "IM": {
+ "code": "IM",
+ "three_letter_code": "IMN",
+ "numeric_code": "833",
+ "telephone_code": "44"
+ },
+ "IN": {
+ "code": "IN",
+ "three_letter_code": "IND",
+ "numeric_code": "356",
+ "telephone_code": "91"
+ },
+ "IO": {
+ "code": "IO",
+ "three_letter_code": "IOT",
+ "numeric_code": "086",
+ "telephone_code": "246"
+ },
+ "IQ": {
+ "code": "IQ",
+ "three_letter_code": "IRQ",
+ "numeric_code": "368",
+ "telephone_code": "964"
+ },
+ "IR": {
+ "code": "IR",
+ "three_letter_code": "IRN",
+ "numeric_code": "364",
+ "telephone_code": "98"
+ },
+ "IS": {
+ "code": "IS",
+ "three_letter_code": "ISL",
+ "numeric_code": "352",
+ "telephone_code": "354"
+ },
+ "IT": {
+ "code": "IT",
+ "three_letter_code": "ITA",
+ "numeric_code": "380",
+ "telephone_code": "39"
+ },
+ "JE": {
+ "code": "JE",
+ "three_letter_code": "JEY",
+ "numeric_code": "832",
+ "telephone_code": "44"
+ },
+ "JM": {
+ "code": "JM",
+ "three_letter_code": "JAM",
+ "numeric_code": "388",
+ "telephone_code": "1"
+ },
+ "JO": {
+ "code": "JO",
+ "three_letter_code": "JOR",
+ "numeric_code": "400",
+ "telephone_code": "962"
+ },
+ "JP": {
+ "code": "JP",
+ "three_letter_code": "JPN",
+ "numeric_code": "392",
+ "telephone_code": "81"
+ },
+ "KE": {
+ "code": "KE",
+ "three_letter_code": "KEN",
+ "numeric_code": "404",
+ "telephone_code": "254"
+ },
+ "KG": {
+ "code": "KG",
+ "three_letter_code": "KGZ",
+ "numeric_code": "417",
+ "telephone_code": "996"
+ },
+ "KH": {
+ "code": "KH",
+ "three_letter_code": "KHM",
+ "numeric_code": "116",
+ "telephone_code": "855"
+ },
+ "KI": {
+ "code": "KI",
+ "three_letter_code": "KIR",
+ "numeric_code": "296",
+ "telephone_code": "686"
+ },
+ "KM": {
+ "code": "KM",
+ "three_letter_code": "COM",
+ "numeric_code": "174",
+ "telephone_code": "269"
+ },
+ "KN": {
+ "code": "KN",
+ "three_letter_code": "KNA",
+ "numeric_code": "659",
+ "telephone_code": "1"
+ },
+ "KP": {
+ "code": "KP",
+ "three_letter_code": "PRK",
+ "numeric_code": "408",
+ "telephone_code": "850"
+ },
+ "KR": {
+ "code": "KR",
+ "three_letter_code": "KOR",
+ "numeric_code": "410",
+ "telephone_code": "82"
+ },
+ "KW": {
+ "code": "KW",
+ "three_letter_code": "KWT",
+ "numeric_code": "414",
+ "telephone_code": "965"
+ },
+ "KY": {
+ "code": "KY",
+ "three_letter_code": "CYM",
+ "numeric_code": "136",
+ "telephone_code": "1"
+ },
+ "KZ": {
+ "code": "KZ",
+ "three_letter_code": "KAZ",
+ "numeric_code": "398",
+ "telephone_code": "7"
+ },
+ "LA": {
+ "code": "LA",
+ "three_letter_code": "LAO",
+ "numeric_code": "418",
+ "telephone_code": "856"
+ },
+ "LB": {
+ "code": "LB",
+ "three_letter_code": "LBN",
+ "numeric_code": "422",
+ "telephone_code": "961"
+ },
+ "LC": {
+ "code": "LC",
+ "three_letter_code": "LCA",
+ "numeric_code": "662",
+ "telephone_code": "1"
+ },
+ "LI": {
+ "code": "LI",
+ "three_letter_code": "LIE",
+ "numeric_code": "438",
+ "telephone_code": "423"
+ },
+ "LK": {
+ "code": "LK",
+ "three_letter_code": "LKA",
+ "numeric_code": "144",
+ "telephone_code": "94"
+ },
+ "LR": {
+ "code": "LR",
+ "three_letter_code": "LBR",
+ "numeric_code": "430",
+ "telephone_code": "231"
+ },
+ "LS": {
+ "code": "LS",
+ "three_letter_code": "LSO",
+ "numeric_code": "426",
+ "telephone_code": "266"
+ },
+ "LT": {
+ "code": "LT",
+ "three_letter_code": "LTU",
+ "numeric_code": "440",
+ "telephone_code": "370"
+ },
+ "LU": {
+ "code": "LU",
+ "three_letter_code": "LUX",
+ "numeric_code": "442",
+ "telephone_code": "352"
+ },
+ "LV": {
+ "code": "LV",
+ "three_letter_code": "LVA",
+ "numeric_code": "428",
+ "telephone_code": "371"
+ },
+ "LY": {
+ "code": "LY",
+ "three_letter_code": "LBY",
+ "numeric_code": "434",
+ "telephone_code": "218"
+ },
+ "MA": {
+ "code": "MA",
+ "three_letter_code": "MAR",
+ "numeric_code": "504",
+ "telephone_code": "212"
+ },
+ "MC": {
+ "code": "MC",
+ "three_letter_code": "MCO",
+ "numeric_code": "492",
+ "telephone_code": "377"
+ },
+ "MD": {
+ "code": "MD",
+ "three_letter_code": "MDA",
+ "numeric_code": "498",
+ "telephone_code": "373"
+ },
+ "ME": {
+ "code": "ME",
+ "three_letter_code": "MNE",
+ "numeric_code": "499",
+ "telephone_code": "382"
+ },
+ "MF": {
+ "code": "MF",
+ "three_letter_code": "MAF",
+ "numeric_code": "663",
+ "telephone_code": "590"
+ },
+ "MG": {
+ "code": "MG",
+ "three_letter_code": "MDG",
+ "numeric_code": "450",
+ "telephone_code": "261"
+ },
+ "MH": {
+ "code": "MH",
+ "three_letter_code": "MHL",
+ "numeric_code": "584",
+ "telephone_code": "692"
+ },
+ "MK": {
+ "code": "MK",
+ "three_letter_code": "MKD",
+ "numeric_code": "807",
+ "telephone_code": "389"
+ },
+ "ML": {
+ "code": "ML",
+ "three_letter_code": "MLI",
+ "numeric_code": "466",
+ "telephone_code": "223"
+ },
+ "MM": {
+ "code": "MM",
+ "three_letter_code": "MMR",
+ "numeric_code": "104",
+ "telephone_code": "95"
+ },
+ "MN": {
+ "code": "MN",
+ "three_letter_code": "MNG",
+ "numeric_code": "496",
+ "telephone_code": "976"
+ },
+ "MO": {
+ "code": "MO",
+ "three_letter_code": "MAC",
+ "numeric_code": "446",
+ "telephone_code": "853"
+ },
+ "MP": {
+ "code": "MP",
+ "three_letter_code": "MNP",
+ "numeric_code": "580",
+ "telephone_code": "1"
+ },
+ "MQ": {
+ "code": "MQ",
+ "three_letter_code": "MTQ",
+ "numeric_code": "474",
+ "telephone_code": "596"
+ },
+ "MR": {
+ "code": "MR",
+ "three_letter_code": "MRT",
+ "numeric_code": "478",
+ "telephone_code": "222"
+ },
+ "MS": {
+ "code": "MS",
+ "three_letter_code": "MSR",
+ "numeric_code": "500",
+ "telephone_code": "1"
+ },
+ "MT": {
+ "code": "MT",
+ "three_letter_code": "MLT",
+ "numeric_code": "470",
+ "telephone_code": "356"
+ },
+ "MU": {
+ "code": "MU",
+ "three_letter_code": "MUS",
+ "numeric_code": "480",
+ "telephone_code": "230"
+ },
+ "MV": {
+ "code": "MV",
+ "three_letter_code": "MDV",
+ "numeric_code": "462",
+ "telephone_code": "960"
+ },
+ "MW": {
+ "code": "MW",
+ "three_letter_code": "MWI",
+ "numeric_code": "454",
+ "telephone_code": "265"
+ },
+ "MX": {
+ "code": "MX",
+ "three_letter_code": "MEX",
+ "numeric_code": "484",
+ "telephone_code": "52"
+ },
+ "MY": {
+ "code": "MY",
+ "three_letter_code": "MYS",
+ "numeric_code": "458",
+ "telephone_code": "60"
+ },
+ "MZ": {
+ "code": "MZ",
+ "three_letter_code": "MOZ",
+ "numeric_code": "508",
+ "telephone_code": "258"
+ },
+ "NA": {
+ "code": "NA",
+ "three_letter_code": "NAM",
+ "numeric_code": "516",
+ "telephone_code": "264"
+ },
+ "NC": {
+ "code": "NC",
+ "three_letter_code": "NCL",
+ "numeric_code": "540",
+ "telephone_code": "687"
+ },
+ "NE": {
+ "code": "NE",
+ "three_letter_code": "NER",
+ "numeric_code": "562",
+ "telephone_code": "227"
+ },
+ "NF": {
+ "code": "NF",
+ "three_letter_code": "NFK",
+ "numeric_code": "574",
+ "telephone_code": "672"
+ },
+ "NG": {
+ "code": "NG",
+ "three_letter_code": "NGA",
+ "numeric_code": "566",
+ "telephone_code": "234"
+ },
+ "NI": {
+ "code": "NI",
+ "three_letter_code": "NIC",
+ "numeric_code": "558",
+ "telephone_code": "505"
+ },
+ "NL": {
+ "code": "NL",
+ "three_letter_code": "NLD",
+ "numeric_code": "528",
+ "telephone_code": "31"
+ },
+ "NO": {
+ "code": "NO",
+ "three_letter_code": "NOR",
+ "numeric_code": "578",
+ "telephone_code": "47"
+ },
+ "NP": {
+ "code": "NP",
+ "three_letter_code": "NPL",
+ "numeric_code": "524",
+ "telephone_code": "977"
+ },
+ "NR": {
+ "code": "NR",
+ "three_letter_code": "NRU",
+ "numeric_code": "520",
+ "telephone_code": "674"
+ },
+ "NU": {
+ "code": "NU",
+ "three_letter_code": "NIU",
+ "numeric_code": "570",
+ "telephone_code": "683"
+ },
+ "NZ": {
+ "code": "NZ",
+ "three_letter_code": "NZL",
+ "numeric_code": "554",
+ "telephone_code": "64"
+ },
+ "OM": {
+ "code": "OM",
+ "three_letter_code": "OMN",
+ "numeric_code": "512",
+ "telephone_code": "968"
+ },
+ "PA": {
+ "code": "PA",
+ "three_letter_code": "PAN",
+ "numeric_code": "591",
+ "telephone_code": "507"
+ },
+ "PE": {
+ "code": "PE",
+ "three_letter_code": "PER",
+ "numeric_code": "604",
+ "telephone_code": "51"
+ },
+ "PF": {
+ "code": "PF",
+ "three_letter_code": "PYF",
+ "numeric_code": "258",
+ "telephone_code": "689"
+ },
+ "PG": {
+ "code": "PG",
+ "three_letter_code": "PNG",
+ "numeric_code": "598",
+ "telephone_code": "675"
+ },
+ "PH": {
+ "code": "PH",
+ "three_letter_code": "PHL",
+ "numeric_code": "608",
+ "telephone_code": "63"
+ },
+ "PK": {
+ "code": "PK",
+ "three_letter_code": "PAK",
+ "numeric_code": "586",
+ "telephone_code": "92"
+ },
+ "PL": {
+ "code": "PL",
+ "three_letter_code": "POL",
+ "numeric_code": "616",
+ "telephone_code": "48"
+ },
+ "PM": {
+ "code": "PM",
+ "three_letter_code": "SPM",
+ "numeric_code": "666",
+ "telephone_code": "508"
+ },
+ "PN": {
+ "code": "PN",
+ "three_letter_code": "PCN",
+ "numeric_code": "612",
+ "telephone_code": "870"
+ },
+ "PR": {
+ "code": "PR",
+ "three_letter_code": "PRI",
+ "numeric_code": "630",
+ "telephone_code": "1"
+ },
+ "PS": {
+ "code": "PS",
+ "three_letter_code": "PSE",
+ "numeric_code": "275",
+ "telephone_code": "970"
+ },
+ "PT": {
+ "code": "PT",
+ "three_letter_code": "PRT",
+ "numeric_code": "620",
+ "telephone_code": "351"
+ },
+ "PW": {
+ "code": "PW",
+ "three_letter_code": "PLW",
+ "numeric_code": "585",
+ "telephone_code": "680"
+ },
+ "PY": {
+ "code": "PY",
+ "three_letter_code": "PRY",
+ "numeric_code": "600",
+ "telephone_code": "595"
+ },
+ "QA": {
+ "code": "QA",
+ "three_letter_code": "QAT",
+ "numeric_code": "634",
+ "telephone_code": "974"
+ },
+ "RE": {
+ "code": "RE",
+ "three_letter_code": "REU",
+ "numeric_code": "638",
+ "telephone_code": "262"
+ },
+ "RO": {
+ "code": "RO",
+ "three_letter_code": "ROU",
+ "numeric_code": "642",
+ "telephone_code": "40"
+ },
+ "RS": {
+ "code": "RS",
+ "three_letter_code": "SRB",
+ "numeric_code": "688",
+ "telephone_code": "381"
+ },
+ "RU": {
+ "code": "RU",
+ "three_letter_code": "RUS",
+ "numeric_code": "643",
+ "telephone_code": "7"
+ },
+ "RW": {
+ "code": "RW",
+ "three_letter_code": "RWA",
+ "numeric_code": "646",
+ "telephone_code": "250"
+ },
+ "SA": {
+ "code": "SA",
+ "three_letter_code": "SAU",
+ "numeric_code": "682",
+ "telephone_code": "966"
+ },
+ "SB": {
+ "code": "SB",
+ "three_letter_code": "SLB",
+ "numeric_code": "090",
+ "telephone_code": "677"
+ },
+ "SC": {
+ "code": "SC",
+ "three_letter_code": "SYC",
+ "numeric_code": "690",
+ "telephone_code": "248"
+ },
+ "SD": {
+ "code": "SD",
+ "three_letter_code": "SDN",
+ "numeric_code": "729",
+ "telephone_code": "249"
+ },
+ "SE": {
+ "code": "SE",
+ "three_letter_code": "SWE",
+ "numeric_code": "752",
+ "telephone_code": "46"
+ },
+ "SG": {
+ "code": "SG",
+ "three_letter_code": "SGP",
+ "numeric_code": "702",
+ "telephone_code": "65"
+ },
+ "SH": {
+ "code": "SH",
+ "three_letter_code": "SHN",
+ "numeric_code": "654",
+ "telephone_code": "290"
+ },
+ "SI": {
+ "code": "SI",
+ "three_letter_code": "SVN",
+ "numeric_code": "705",
+ "telephone_code": "386"
+ },
+ "SJ": {
+ "code": "SJ",
+ "three_letter_code": "SJM",
+ "numeric_code": "744",
+ "telephone_code": "47"
+ },
+ "SK": {
+ "code": "SK",
+ "three_letter_code": "SVK",
+ "numeric_code": "703",
+ "telephone_code": "421"
+ },
+ "SL": {
+ "code": "SL",
+ "three_letter_code": "SLE",
+ "numeric_code": "694",
+ "telephone_code": "232"
+ },
+ "SM": {
+ "code": "SM",
+ "three_letter_code": "SMR",
+ "numeric_code": "674",
+ "telephone_code": "378"
+ },
+ "SN": {
+ "code": "SN",
+ "three_letter_code": "SEN",
+ "numeric_code": "686",
+ "telephone_code": "221"
+ },
+ "SO": {
+ "code": "SO",
+ "three_letter_code": "SOM",
+ "numeric_code": "706",
+ "telephone_code": "252"
+ },
+ "SR": {
+ "code": "SR",
+ "three_letter_code": "SUR",
+ "numeric_code": "740",
+ "telephone_code": "597"
+ },
+ "SS": {
+ "code": "SS",
+ "three_letter_code": "SSD",
+ "numeric_code": "728",
+ "telephone_code": "211"
+ },
+ "ST": {
+ "code": "ST",
+ "three_letter_code": "STP",
+ "numeric_code": "678",
+ "telephone_code": "239"
+ },
+ "SV": {
+ "code": "SV",
+ "three_letter_code": "SLV",
+ "numeric_code": "222",
+ "telephone_code": "503"
+ },
+ "SX": {
+ "code": "SX",
+ "three_letter_code": "SXM",
+ "numeric_code": "534",
+ "telephone_code": "1"
+ },
+ "SY": {
+ "code": "SY",
+ "three_letter_code": "SYR",
+ "numeric_code": "760",
+ "telephone_code": "963"
+ },
+ "SZ": {
+ "code": "SZ",
+ "three_letter_code": "SWZ",
+ "numeric_code": "748",
+ "telephone_code": "268"
+ },
+ "TA": {
+ "code": "TA",
+ "three_letter_code": "TAA"
+ },
+ "TC": {
+ "code": "TC",
+ "three_letter_code": "TCA",
+ "numeric_code": "796",
+ "telephone_code": "1"
+ },
+ "TD": {
+ "code": "TD",
+ "three_letter_code": "TCD",
+ "numeric_code": "148",
+ "telephone_code": "235"
+ },
+ "TF": {
+ "code": "TF",
+ "three_letter_code": "ATF",
+ "numeric_code": "260",
+ "telephone_code": "262"
+ },
+ "TG": {
+ "code": "TG",
+ "three_letter_code": "TGO",
+ "numeric_code": "768",
+ "telephone_code": "228"
+ },
+ "TH": {
+ "code": "TH",
+ "three_letter_code": "THA",
+ "numeric_code": "764",
+ "telephone_code": "66"
+ },
+ "TJ": {
+ "code": "TJ",
+ "three_letter_code": "TJK",
+ "numeric_code": "762",
+ "telephone_code": "992"
+ },
+ "TK": {
+ "code": "TK",
+ "three_letter_code": "TKL",
+ "numeric_code": "772",
+ "telephone_code": "690"
+ },
+ "TL": {
+ "code": "TL",
+ "three_letter_code": "TLS",
+ "numeric_code": "626",
+ "telephone_code": "670"
+ },
+ "TM": {
+ "code": "TM",
+ "three_letter_code": "TKM",
+ "numeric_code": "795",
+ "telephone_code": "993"
+ },
+ "TN": {
+ "code": "TN",
+ "three_letter_code": "TUN",
+ "numeric_code": "788",
+ "telephone_code": "216"
+ },
+ "TO": {
+ "code": "TO",
+ "three_letter_code": "TON",
+ "numeric_code": "776",
+ "telephone_code": "676"
+ },
+ "TR": {
+ "code": "TR",
+ "three_letter_code": "TUR",
+ "numeric_code": "792",
+ "telephone_code": "90"
+ },
+ "TT": {
+ "code": "TT",
+ "three_letter_code": "TTO",
+ "numeric_code": "780",
+ "telephone_code": "1"
+ },
+ "TV": {
+ "code": "TV",
+ "three_letter_code": "TUV",
+ "numeric_code": "798",
+ "telephone_code": "688"
+ },
+ "TW": {
+ "code": "TW",
+ "three_letter_code": "TWN",
+ "numeric_code": "158",
+ "telephone_code": "886"
+ },
+ "TZ": {
+ "code": "TZ",
+ "three_letter_code": "TZA",
+ "numeric_code": "834",
+ "telephone_code": "255"
+ },
+ "UA": {
+ "code": "UA",
+ "three_letter_code": "UKR",
+ "numeric_code": "804",
+ "telephone_code": "380"
+ },
+ "UG": {
+ "code": "UG",
+ "three_letter_code": "UGA",
+ "numeric_code": "800",
+ "telephone_code": "256"
+ },
+ "UM": {
+ "code": "UM",
+ "three_letter_code": "UMI",
+ "numeric_code": "581",
+ "telephone_code": "1"
+ },
+ "US": {
+ "code": "US",
+ "three_letter_code": "USA",
+ "numeric_code": "840",
+ "telephone_code": "1"
+ },
+ "UY": {
+ "code": "UY",
+ "three_letter_code": "URY",
+ "numeric_code": "858",
+ "telephone_code": "598"
+ },
+ "UZ": {
+ "code": "UZ",
+ "three_letter_code": "UZB",
+ "numeric_code": "860",
+ "telephone_code": "998"
+ },
+ "VA": {
+ "code": "VA",
+ "three_letter_code": "VAT",
+ "numeric_code": "336",
+ "telephone_code": "39"
+ },
+ "VC": {
+ "code": "VC",
+ "three_letter_code": "VCT",
+ "numeric_code": "670",
+ "telephone_code": "1"
+ },
+ "VE": {
+ "code": "VE",
+ "three_letter_code": "VEN",
+ "numeric_code": "862",
+ "telephone_code": "58"
+ },
+ "VG": {
+ "code": "VG",
+ "three_letter_code": "VGB",
+ "numeric_code": "092",
+ "telephone_code": "1"
+ },
+ "VI": {
+ "code": "VI",
+ "three_letter_code": "VIR",
+ "numeric_code": "850",
+ "telephone_code": "1"
+ },
+ "VN": {
+ "code": "VN",
+ "three_letter_code": "VNM",
+ "numeric_code": "704",
+ "telephone_code": "84"
+ },
+ "VU": {
+ "code": "VU",
+ "three_letter_code": "VUT",
+ "numeric_code": "548",
+ "telephone_code": "678"
+ },
+ "WF": {
+ "code": "WF",
+ "three_letter_code": "WLF",
+ "numeric_code": "876",
+ "telephone_code": "681"
+ },
+ "WS": {
+ "code": "WS",
+ "three_letter_code": "WSM",
+ "numeric_code": "882",
+ "telephone_code": "685"
+ },
+ "XK": {
+ "code": "XK",
+ "three_letter_code": "XKK",
+ "numeric_code": "983",
+ "telephone_code": "381"
+ },
+ "YE": {
+ "code": "YE",
+ "three_letter_code": "YEM",
+ "numeric_code": "887",
+ "telephone_code": "967"
+ },
+ "YT": {
+ "code": "YT",
+ "three_letter_code": "MYT",
+ "numeric_code": "175",
+ "telephone_code": "262"
+ },
+ "ZA": {
+ "code": "ZA",
+ "three_letter_code": "ZAF",
+ "numeric_code": "710",
+ "telephone_code": "27"
+ },
+ "ZM": {
+ "code": "ZM",
+ "three_letter_code": "ZMB",
+ "numeric_code": "894",
+ "telephone_code": "260"
+ },
+ "ZW": {
+ "code": "ZW",
+ "three_letter_code": "ZWE",
+ "numeric_code": "716",
+ "telephone_code": "263"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/country/be.json b/library/intl/resources/country/be.json
new file mode 100644
index 000000000..ad9fe43c0
--- /dev/null
+++ b/library/intl/resources/country/be.json
@@ -0,0 +1,761 @@
+{
+ "AC": {
+ "name": "Ascension Island"
+ },
+ "IC": {
+ "name": "Canary Islands"
+ },
+ "BQ": {
+ "name": "Caribbean Netherlands"
+ },
+ "EA": {
+ "name": "Ceuta & Melilla"
+ },
+ "DG": {
+ "name": "Diego Garcia"
+ },
+ "XK": {
+ "name": "Kosovo"
+ },
+ "SX": {
+ "name": "Sint Maarten"
+ },
+ "MF": {
+ "name": "St. Martin"
+ },
+ "TA": {
+ "name": "Tristan da Cunha"
+ },
+ "UM": {
+ "name": "U.S. Outlying Islands"
+ },
+ "AE": {
+ "name": "Ðб’ÑÐ´Ð½Ð°Ð½Ñ‹Ñ ÐрабÑÐºÑ–Ñ Ð­Ð¼Ñ–Ñ€Ð°Ñ‚Ñ‹"
+ },
+ "AZ": {
+ "name": "Ðзербайджан"
+ },
+ "AX": {
+ "name": "ÐландÑÐºÑ–Ñ Ð°Ñтравы"
+ },
+ "AL": {
+ "name": "ÐлбаніÑ"
+ },
+ "DZ": {
+ "name": "Ðлжыр"
+ },
+ "OM": {
+ "name": "Ðман"
+ },
+ "AS": {
+ "name": "ÐмерыканÑкае Самоа"
+ },
+ "VI": {
+ "name": "ÐмерыканÑÐºÑ–Ñ Ð’Ñ–Ñ€Ð³Ñ–Ð½ÑÐºÑ–Ñ Ð°Ñтравы"
+ },
+ "AI": {
+ "name": "ÐнгільÑ"
+ },
+ "AO": {
+ "name": "Ðнгола"
+ },
+ "AD": {
+ "name": "Ðндора"
+ },
+ "AQ": {
+ "name": "Ðнтарктыка"
+ },
+ "AG": {
+ "name": "Ðнтыгуа Ñ– Барбуда"
+ },
+ "AR": {
+ "name": "Ðргенціна"
+ },
+ "AM": {
+ "name": "ÐрменіÑ"
+ },
+ "AW": {
+ "name": "Ðруба"
+ },
+ "CK": {
+ "name": "ÐÑтравы Кука"
+ },
+ "PN": {
+ "name": "ÐÑтравы ПіткÑрн"
+ },
+ "AU": {
+ "name": "ÐÑžÑтраліÑ"
+ },
+ "AT": {
+ "name": "ÐÑžÑтрыÑ"
+ },
+ "AF": {
+ "name": "ÐфганіÑтан"
+ },
+ "BS": {
+ "name": "Багамы"
+ },
+ "BG": {
+ "name": "БалгарыÑ"
+ },
+ "BO": {
+ "name": "БалівіÑ"
+ },
+ "BD": {
+ "name": "БангладÑш"
+ },
+ "BB": {
+ "name": "БарбадаÑ"
+ },
+ "BW": {
+ "name": "БатÑвана"
+ },
+ "BH": {
+ "name": "БахрÑйн"
+ },
+ "BY": {
+ "name": "БеларуÑÑŒ"
+ },
+ "BZ": {
+ "name": "Беліз"
+ },
+ "BE": {
+ "name": "БельгіÑ"
+ },
+ "BJ": {
+ "name": "Бенін"
+ },
+ "BM": {
+ "name": "БермудÑÐºÑ–Ñ Ð°Ñтравы"
+ },
+ "BA": {
+ "name": "БоÑÐ½Ñ–Ñ Ñ– Герцагавіна"
+ },
+ "BR": {
+ "name": "БразіліÑ"
+ },
+ "BN": {
+ "name": "Бруней"
+ },
+ "IO": {
+ "name": "БрытанÑÐºÐ°Ñ Ñ‚ÑÑ€Ñ‹Ñ‚Ð¾Ñ€Ñ‹Ñ Ñž ІндыйÑкім акіÑне"
+ },
+ "VG": {
+ "name": "БрытанÑÐºÑ–Ñ Ð’Ñ–Ñ€Ð³Ñ–Ð½ÑÐºÑ–Ñ Ð°Ñтравы"
+ },
+ "BF": {
+ "name": "Буркіна-ФаÑо"
+ },
+ "BI": {
+ "name": "Бурундзі"
+ },
+ "BT": {
+ "name": "Бутан"
+ },
+ "VN": {
+ "name": "В’етнам"
+ },
+ "VU": {
+ "name": "Вануату"
+ },
+ "VA": {
+ "name": "Ватыкан"
+ },
+ "HU": {
+ "name": "ВенгрыÑ"
+ },
+ "VE": {
+ "name": "ВенеÑуÑла"
+ },
+ "GG": {
+ "name": "ВоÑтраў ГернÑÑ–"
+ },
+ "JE": {
+ "name": "ВоÑтраў ДжÑÑ€ÑÑ–"
+ },
+ "CW": {
+ "name": "ВоÑтраў КюраÑаа"
+ },
+ "YT": {
+ "name": "ВоÑтраў Маёта"
+ },
+ "IM": {
+ "name": "ВоÑтраў ÐœÑн"
+ },
+ "NF": {
+ "name": "ВоÑтраў Ðорфалк"
+ },
+ "CX": {
+ "name": "ВоÑтраў РажÑтва"
+ },
+ "GB": {
+ "name": "Ð’ÑлікабрытаніÑ"
+ },
+ "GA": {
+ "name": "Габон"
+ },
+ "HT": {
+ "name": "Гаіці"
+ },
+ "GM": {
+ "name": "ГамбіÑ"
+ },
+ "GH": {
+ "name": "Гана"
+ },
+ "HN": {
+ "name": "ГандураÑ"
+ },
+ "GY": {
+ "name": "ГаÑна"
+ },
+ "GP": {
+ "name": "ГвадÑлупа"
+ },
+ "GT": {
+ "name": "ГватÑмала"
+ },
+ "GN": {
+ "name": "ГвінеÑ"
+ },
+ "GW": {
+ "name": "ГвінеÑ-БіÑау"
+ },
+ "DE": {
+ "name": "ГерманіÑ"
+ },
+ "GI": {
+ "name": "Гібралтар"
+ },
+ "HK": {
+ "name": "Гон-Конг, Кітай (СÐР)"
+ },
+ "GE": {
+ "name": "ГрузіÑ"
+ },
+ "GD": {
+ "name": "ГрÑнада"
+ },
+ "GL": {
+ "name": "ГрÑнландыÑ"
+ },
+ "GR": {
+ "name": "ГрÑцыÑ"
+ },
+ "GU": {
+ "name": "Гуам"
+ },
+ "DM": {
+ "name": "Дамініка"
+ },
+ "DO": {
+ "name": "ДамініканÑÐºÐ°Ñ Ð ÑÑпубліка"
+ },
+ "DK": {
+ "name": "ДаніÑ"
+ },
+ "DJ": {
+ "name": "Джыбуці"
+ },
+ "EG": {
+ "name": "Егіпет"
+ },
+ "YE": {
+ "name": "Емен"
+ },
+ "ZM": {
+ "name": "ЗамбіÑ"
+ },
+ "EH": {
+ "name": "ЗаходнÑÑ Ð¡Ð°Ñ…Ð°Ñ€Ð°"
+ },
+ "ZW": {
+ "name": "ЗімбабвÑ"
+ },
+ "US": {
+ "name": "Ð—Ð»ÑƒÑ‡Ð°Ð½Ñ‹Ñ Ð¨Ñ‚Ð°Ñ‚Ñ‹ Ðмерыкі"
+ },
+ "JO": {
+ "name": "ІарданіÑ"
+ },
+ "IL": {
+ "name": "Ізраіль"
+ },
+ "ID": {
+ "name": "ІнданезіÑ"
+ },
+ "IN": {
+ "name": "ІндыÑ"
+ },
+ "IQ": {
+ "name": "Ірак"
+ },
+ "IR": {
+ "name": "Іран"
+ },
+ "IE": {
+ "name": "ІрландыÑ"
+ },
+ "IS": {
+ "name": "ІÑландыÑ"
+ },
+ "ES": {
+ "name": "ІÑпаніÑ"
+ },
+ "IT": {
+ "name": "ІталіÑ"
+ },
+ "CV": {
+ "name": "Каба-ВердÑ"
+ },
+ "KZ": {
+ "name": "КазахÑтан"
+ },
+ "KY": {
+ "name": "Кайманавы аÑтравы"
+ },
+ "CC": {
+ "name": "КакоÑÐ°Ð²Ñ‹Ñ Ð°Ñтравы"
+ },
+ "CO": {
+ "name": "КалумбіÑ"
+ },
+ "KH": {
+ "name": "Камбоджа"
+ },
+ "CM": {
+ "name": "Камерун"
+ },
+ "KM": {
+ "name": "КаморÑÐºÑ–Ñ ÐÑтравы"
+ },
+ "CA": {
+ "name": "Канада"
+ },
+ "QA": {
+ "name": "Катар"
+ },
+ "KE": {
+ "name": "КеніÑ"
+ },
+ "CY": {
+ "name": "Кіпр"
+ },
+ "KI": {
+ "name": "Кірыбаці"
+ },
+ "CN": {
+ "name": "Кітай"
+ },
+ "CG": {
+ "name": "Конга"
+ },
+ "CD": {
+ "name": "Конга, ДÑÐ¼Ð°ÐºÑ€Ð°Ñ‚Ñ‹Ñ‡Ð½Ð°Ñ Ð ÑÑпубліка"
+ },
+ "CR": {
+ "name": "КоÑта-Рыка"
+ },
+ "CI": {
+ "name": "Кот-д’Івуар"
+ },
+ "CU": {
+ "name": "Куба"
+ },
+ "KW": {
+ "name": "Кувейт"
+ },
+ "KG": {
+ "name": "КыргызÑтан"
+ },
+ "LA": {
+ "name": "ЛаоÑ"
+ },
+ "LV": {
+ "name": "ЛатвіÑ"
+ },
+ "LS": {
+ "name": "ЛеÑота"
+ },
+ "LR": {
+ "name": "ЛіберыÑ"
+ },
+ "LB": {
+ "name": "Ліван"
+ },
+ "LY": {
+ "name": "ЛівіÑ"
+ },
+ "LT": {
+ "name": "Літва"
+ },
+ "LI": {
+ "name": "ЛіхтÑнштÑйн"
+ },
+ "LU": {
+ "name": "ЛюкÑембург"
+ },
+ "MM": {
+ "name": "М’Ñнма"
+ },
+ "MG": {
+ "name": "МадагаÑкар"
+ },
+ "MZ": {
+ "name": "Мазамбік"
+ },
+ "MO": {
+ "name": "Макао, Кітай (СÐР)"
+ },
+ "MK": {
+ "name": "МакедоніÑ, БЮР"
+ },
+ "MW": {
+ "name": "Малаві"
+ },
+ "MY": {
+ "name": "МалайзіÑ"
+ },
+ "MD": {
+ "name": "Малдова"
+ },
+ "ML": {
+ "name": "Малі"
+ },
+ "MV": {
+ "name": "Мальдывы"
+ },
+ "MT": {
+ "name": "Мальта"
+ },
+ "MC": {
+ "name": "Манака"
+ },
+ "MN": {
+ "name": "МанголіÑ"
+ },
+ "MS": {
+ "name": "МантÑерат"
+ },
+ "MA": {
+ "name": "Марока"
+ },
+ "MQ": {
+ "name": "Марцініка"
+ },
+ "MH": {
+ "name": "Маршалавы ÐÑтравы"
+ },
+ "MU": {
+ "name": "Маўрыкій"
+ },
+ "MR": {
+ "name": "МаўрытаніÑ"
+ },
+ "MX": {
+ "name": "МекÑіка"
+ },
+ "FM": {
+ "name": "МікранезіÑ"
+ },
+ "NA": {
+ "name": "ÐамібіÑ"
+ },
+ "NO": {
+ "name": "ÐарвегіÑ"
+ },
+ "NR": {
+ "name": "Ðауру"
+ },
+ "NP": {
+ "name": "Ðепал"
+ },
+ "NE": {
+ "name": "Ðігер"
+ },
+ "NG": {
+ "name": "ÐігерыÑ"
+ },
+ "NL": {
+ "name": "ÐідÑрланды"
+ },
+ "NI": {
+ "name": "Ðікарагуа"
+ },
+ "NU": {
+ "name": "ÐіуÑ"
+ },
+ "NZ": {
+ "name": "ÐÐ¾Ð²Ð°Ñ Ð—ÐµÐ»Ð°Ð½Ð´Ñ‹Ñ"
+ },
+ "NC": {
+ "name": "ÐÐ¾Ð²Ð°Ñ ÐšÐ°Ð»ÐµÐ´Ð¾Ð½Ñ–Ñ"
+ },
+ "PK": {
+ "name": "ПакіÑтан"
+ },
+ "PW": {
+ "name": "Палау"
+ },
+ "PS": {
+ "name": "ПалеÑтынÑÐºÑ–Ñ Ñ‚Ñрыторыі"
+ },
+ "PA": {
+ "name": "Панама"
+ },
+ "PG": {
+ "name": "Папуа — ÐÐ¾Ð²Ð°Ñ Ð“Ð²Ñ–Ð½ÐµÑ"
+ },
+ "PY": {
+ "name": "Парагвай"
+ },
+ "PT": {
+ "name": "ПартугаліÑ"
+ },
+ "ZA": {
+ "name": "Паўднёва-ÐфрыканÑÐºÐ°Ñ Ð ÑÑпубліка"
+ },
+ "GS": {
+ "name": "ÐŸÐ°ÑžÐ´Ð½Ñ‘Ð²Ð°Ñ Ð”Ð¶Ð¾Ñ€Ð´Ð¶Ñ‹Ñ Ñ– ÐŸÐ°ÑžÐ´Ð½Ñ‘Ð²Ñ‹Ñ Ð¡Ð°Ð½Ð´Ð²Ñ–Ñ‡Ð°Ð²Ñ‹ аÑтравы"
+ },
+ "KR": {
+ "name": "ÐŸÐ°ÑžÐ´Ð½Ñ‘Ð²Ð°Ñ ÐšÐ°Ñ€ÑÑ"
+ },
+ "SS": {
+ "name": "Паўднёвы Судан"
+ },
+ "KP": {
+ "name": "ÐŸÐ°ÑžÐ½Ð¾Ñ‡Ð½Ð°Ñ ÐšÐ°Ñ€ÑÑ"
+ },
+ "MP": {
+ "name": "ÐŸÐ°ÑžÐ½Ð¾Ñ‡Ð½Ñ‹Ñ ÐœÐ°Ñ€Ñ‹ÑнÑÐºÑ–Ñ Ð°Ñтравы"
+ },
+ "PE": {
+ "name": "Перу"
+ },
+ "PL": {
+ "name": "Польшча"
+ },
+ "PR": {
+ "name": "ПуÑрта-Рыка"
+ },
+ "RU": {
+ "name": "РаÑÑ–Ñ"
+ },
+ "RW": {
+ "name": "Руанда"
+ },
+ "RO": {
+ "name": "РумыніÑ"
+ },
+ "RE": {
+ "name": "РÑюньён"
+ },
+ "SB": {
+ "name": "Саламонавы ÐÑтравы"
+ },
+ "SV": {
+ "name": "Сальвадор"
+ },
+ "SO": {
+ "name": "Самалі"
+ },
+ "WS": {
+ "name": "Самоа"
+ },
+ "SM": {
+ "name": "Сан-Марына"
+ },
+ "ST": {
+ "name": "Сан-Ð¢Ð°Ð¼Ñ Ñ– ПрынÑіпі"
+ },
+ "SA": {
+ "name": "СаудаўÑÐºÐ°Ñ ÐравіÑ"
+ },
+ "SZ": {
+ "name": "Свазіленд"
+ },
+ "SJ": {
+ "name": "Свальбард (Паўночна-УÑходнÑÑ Ð—ÑмлÑ) Ñ– Ян-Маен"
+ },
+ "SH": {
+ "name": "СвÑтой Ðлены, ВоÑтраў"
+ },
+ "SC": {
+ "name": "СейшÑльÑÐºÑ–Ñ ÐÑтравы"
+ },
+ "BL": {
+ "name": "Сен-БартÑльмі"
+ },
+ "PM": {
+ "name": "Сен-П’ер і Мікелон"
+ },
+ "SN": {
+ "name": "Сенегал"
+ },
+ "VC": {
+ "name": "Сент-ВінÑент Ñ– ГрÑнадзіны"
+ },
+ "KN": {
+ "name": "Сент-ÐšÑ–Ñ‚Ñ Ñ– ÐевіÑ"
+ },
+ "LC": {
+ "name": "Сент-ЛюÑÑ–Ñ"
+ },
+ "RS": {
+ "name": "СербіÑ"
+ },
+ "SG": {
+ "name": "Сінгапур"
+ },
+ "SY": {
+ "name": "СірыÑ"
+ },
+ "SK": {
+ "name": "СлавакіÑ"
+ },
+ "SI": {
+ "name": "СлавеніÑ"
+ },
+ "SD": {
+ "name": "Судан"
+ },
+ "SR": {
+ "name": "Сурынам"
+ },
+ "SL": {
+ "name": "Сьера-ЛеонÑ"
+ },
+ "TJ": {
+ "name": "ТаджыкіÑтан"
+ },
+ "TW": {
+ "name": "Тайвань"
+ },
+ "TH": {
+ "name": "Тайланд"
+ },
+ "TK": {
+ "name": "Такелау"
+ },
+ "TZ": {
+ "name": "ТанзаніÑ"
+ },
+ "TG": {
+ "name": "Тога"
+ },
+ "TO": {
+ "name": "Тонга"
+ },
+ "TT": {
+ "name": "Трынідад і Табага"
+ },
+ "TV": {
+ "name": "Тувалу"
+ },
+ "TN": {
+ "name": "ТуніÑ"
+ },
+ "TM": {
+ "name": "ТуркменіÑтан"
+ },
+ "TR": {
+ "name": "ТурцыÑ"
+ },
+ "UG": {
+ "name": "Уганда"
+ },
+ "UZ": {
+ "name": "УзбекіÑтан"
+ },
+ "UA": {
+ "name": "Украіна"
+ },
+ "WF": {
+ "name": "Ð£Ð¾Ð»Ñ–Ñ Ñ– Футуна"
+ },
+ "UY": {
+ "name": "Уругвай"
+ },
+ "TL": {
+ "name": "УÑходні Тымор"
+ },
+ "FO": {
+ "name": "ФарÑÑ€ÑÐºÑ–Ñ Ð°Ñтравы"
+ },
+ "FJ": {
+ "name": "Фіджы"
+ },
+ "PH": {
+ "name": "Філіпіны"
+ },
+ "FI": {
+ "name": "ФінлÑндыÑ"
+ },
+ "FK": {
+ "name": "ФолклÑндÑÐºÑ–Ñ Ð°Ñтравы"
+ },
+ "GF": {
+ "name": "ФранцузÑÐºÐ°Ñ Ð“Ð²Ñ–Ñна"
+ },
+ "PF": {
+ "name": "ФранцузÑÐºÐ°Ñ ÐŸÐ°Ð»Ñ–Ð½ÐµÐ·Ñ–Ñ"
+ },
+ "TF": {
+ "name": "ФранцузÑÐºÑ–Ñ ÐŸÐ°ÑžÐ´Ð½Ñ‘Ð²Ñ‹Ñ Ñ‚Ñрыторыі"
+ },
+ "FR": {
+ "name": "ФранцыÑ"
+ },
+ "HR": {
+ "name": "ХарватыÑ"
+ },
+ "TC": {
+ "name": "Ð¦Ñ‘Ñ€ÐºÑ Ñ– КайкаÑ"
+ },
+ "CF": {
+ "name": "ЦÑнтральна-ÐфрыканÑÐºÐ°Ñ Ð ÑÑпубліка"
+ },
+ "TD": {
+ "name": "Чад"
+ },
+ "ME": {
+ "name": "ЧарнагорыÑ"
+ },
+ "CL": {
+ "name": "Чылі"
+ },
+ "CZ": {
+ "name": "ЧÑÑ…Ñ–Ñ"
+ },
+ "CH": {
+ "name": "ШвейцарыÑ"
+ },
+ "SE": {
+ "name": "ШвецыÑ"
+ },
+ "LK": {
+ "name": "Шры-Ланка"
+ },
+ "EC": {
+ "name": "Эквадор"
+ },
+ "GQ": {
+ "name": "ЭкватарыÑÐ»ÑŒÐ½Ð°Ñ Ð“Ð²Ñ–Ð½ÐµÑ"
+ },
+ "ER": {
+ "name": "ЭрытрÑÑ"
+ },
+ "EE": {
+ "name": "ЭÑтоніÑ"
+ },
+ "ET": {
+ "name": "ЭфіопіÑ"
+ },
+ "JM": {
+ "name": "Ямайка"
+ },
+ "JP": {
+ "name": "ЯпоніÑ"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/country/bez.json b/library/intl/resources/country/bez.json
new file mode 100644
index 000000000..202b446f6
--- /dev/null
+++ b/library/intl/resources/country/bez.json
@@ -0,0 +1,761 @@
+{
+ "AX": {
+ "name": "Ã…land Islands"
+ },
+ "AQ": {
+ "name": "Antarctica"
+ },
+ "AC": {
+ "name": "Ascension Island"
+ },
+ "IC": {
+ "name": "Canary Islands"
+ },
+ "BQ": {
+ "name": "Caribbean Netherlands"
+ },
+ "EA": {
+ "name": "Ceuta & Melilla"
+ },
+ "CX": {
+ "name": "Christmas Island"
+ },
+ "CC": {
+ "name": "Cocos (Keeling) Islands"
+ },
+ "CW": {
+ "name": "Curaçao"
+ },
+ "DG": {
+ "name": "Diego Garcia"
+ },
+ "FO": {
+ "name": "Faroe Islands"
+ },
+ "TF": {
+ "name": "French Southern Territories"
+ },
+ "GG": {
+ "name": "Guernsey"
+ },
+ "HK": {
+ "name": "Hong Kong SAR China"
+ },
+ "ZA": {
+ "name": "Huafrika iya Hukusini"
+ },
+ "AF": {
+ "name": "Huafuganistani"
+ },
+ "IS": {
+ "name": "Huaislandi"
+ },
+ "AR": {
+ "name": "Huajendina"
+ },
+ "AL": {
+ "name": "Hualbania"
+ },
+ "DZ": {
+ "name": "Hualjelia"
+ },
+ "AW": {
+ "name": "Hualuba"
+ },
+ "AM": {
+ "name": "Huamenia"
+ },
+ "AD": {
+ "name": "Huandola"
+ },
+ "AO": {
+ "name": "Huangola"
+ },
+ "AI": {
+ "name": "Huanguila"
+ },
+ "AG": {
+ "name": "Huantigua na Hubarubuda"
+ },
+ "AT": {
+ "name": "Huastlia"
+ },
+ "AU": {
+ "name": "Huaustlalia"
+ },
+ "IE": {
+ "name": "Huayalandi"
+ },
+ "AZ": {
+ "name": "Huazabajani"
+ },
+ "BB": {
+ "name": "Hubabadosi"
+ },
+ "BH": {
+ "name": "Hubahaleni"
+ },
+ "BS": {
+ "name": "Hubahama"
+ },
+ "BD": {
+ "name": "Hubangaladeshi"
+ },
+ "BY": {
+ "name": "Hubelalusi"
+ },
+ "BZ": {
+ "name": "Hubelize"
+ },
+ "BM": {
+ "name": "Hubelmuda"
+ },
+ "BJ": {
+ "name": "Hubenini"
+ },
+ "BR": {
+ "name": "Hublazili"
+ },
+ "BO": {
+ "name": "Hubolivia"
+ },
+ "BA": {
+ "name": "Hubosinia na Huhezegovina"
+ },
+ "BW": {
+ "name": "Hubotiswana"
+ },
+ "BN": {
+ "name": "Hubrunei"
+ },
+ "BF": {
+ "name": "Hubukinafaso"
+ },
+ "MG": {
+ "name": "Hubukini"
+ },
+ "BG": {
+ "name": "Hubulgaria"
+ },
+ "BI": {
+ "name": "Huburundi"
+ },
+ "BT": {
+ "name": "Hubutani"
+ },
+ "TD": {
+ "name": "Huchadi"
+ },
+ "CL": {
+ "name": "Huchile"
+ },
+ "CN": {
+ "name": "Huchina"
+ },
+ "DK": {
+ "name": "Hudenmaki"
+ },
+ "DM": {
+ "name": "Hudominika"
+ },
+ "EC": {
+ "name": "Huekwado"
+ },
+ "SV": {
+ "name": "Huelsavado"
+ },
+ "ER": {
+ "name": "Hueritrea"
+ },
+ "EE": {
+ "name": "Huestonia"
+ },
+ "AE": {
+ "name": "Hufalme dza Hihalabu"
+ },
+ "FJ": {
+ "name": "Hufiji"
+ },
+ "PH": {
+ "name": "Hufilipino"
+ },
+ "GA": {
+ "name": "Hugaboni"
+ },
+ "GM": {
+ "name": "Hugambia"
+ },
+ "GH": {
+ "name": "Hughana"
+ },
+ "GW": {
+ "name": "Huginebisau"
+ },
+ "GQ": {
+ "name": "Huginekweta"
+ },
+ "GD": {
+ "name": "Hugrenada"
+ },
+ "GY": {
+ "name": "Huguyana"
+ },
+ "GP": {
+ "name": "Hugwadelupe"
+ },
+ "GU": {
+ "name": "Hugwam"
+ },
+ "GT": {
+ "name": "Hugwatemala"
+ },
+ "GF": {
+ "name": "Hugwiyana ya Huufaransa"
+ },
+ "HT": {
+ "name": "Huhaiti"
+ },
+ "ES": {
+ "name": "Huhispania"
+ },
+ "HN": {
+ "name": "Huhondulasi"
+ },
+ "HU": {
+ "name": "Huhungalia"
+ },
+ "IQ": {
+ "name": "Huilaki"
+ },
+ "IN": {
+ "name": "Huindia"
+ },
+ "ID": {
+ "name": "Huindonesia"
+ },
+ "IL": {
+ "name": "Huislaheli"
+ },
+ "IT": {
+ "name": "Huitalia"
+ },
+ "JM": {
+ "name": "Hujamaika"
+ },
+ "JP": {
+ "name": "Hujapani"
+ },
+ "GI": {
+ "name": "Hujiblalta"
+ },
+ "DJ": {
+ "name": "Hujibuti"
+ },
+ "GN": {
+ "name": "Hujine"
+ },
+ "GL": {
+ "name": "Hujinlandi"
+ },
+ "GE": {
+ "name": "Hujojia"
+ },
+ "KH": {
+ "name": "Hukambodia"
+ },
+ "CM": {
+ "name": "Hukameruni"
+ },
+ "CA": {
+ "name": "Hukanada"
+ },
+ "QA": {
+ "name": "Hukatali"
+ },
+ "KZ": {
+ "name": "Hukazakistani"
+ },
+ "KE": {
+ "name": "Hukenya"
+ },
+ "CV": {
+ "name": "Hukepuvede"
+ },
+ "KI": {
+ "name": "Hukilibati"
+ },
+ "KG": {
+ "name": "Hukiligizistani"
+ },
+ "CI": {
+ "name": "Hukodivaa"
+ },
+ "KP": {
+ "name": "Hukolea Kaskazini"
+ },
+ "KR": {
+ "name": "Hukolea Kusini"
+ },
+ "CO": {
+ "name": "Hukolombia"
+ },
+ "KM": {
+ "name": "Hukomoro"
+ },
+ "CG": {
+ "name": "Hukongo"
+ },
+ "HR": {
+ "name": "Hukorasia"
+ },
+ "CR": {
+ "name": "Hukostarika"
+ },
+ "CU": {
+ "name": "Hukuba"
+ },
+ "CY": {
+ "name": "Hukuprosi"
+ },
+ "KW": {
+ "name": "Hukuwaiti"
+ },
+ "LA": {
+ "name": "Hulaosi"
+ },
+ "LU": {
+ "name": "Hulasembagi"
+ },
+ "LV": {
+ "name": "Hulativia"
+ },
+ "LB": {
+ "name": "Hulebanoni"
+ },
+ "LS": {
+ "name": "Hulesoto"
+ },
+ "LR": {
+ "name": "Hulibelia"
+ },
+ "LY": {
+ "name": "Hulibiya"
+ },
+ "LI": {
+ "name": "Hulishenteni"
+ },
+ "LT": {
+ "name": "Hulitwania"
+ },
+ "RE": {
+ "name": "Huliyunioni"
+ },
+ "RO": {
+ "name": "Hulomania"
+ },
+ "RW": {
+ "name": "Hulwanda"
+ },
+ "MW": {
+ "name": "Humalawi"
+ },
+ "US": {
+ "name": "Humalekani"
+ },
+ "MY": {
+ "name": "Humalesia"
+ },
+ "ML": {
+ "name": "Humali"
+ },
+ "MT": {
+ "name": "Humalta"
+ },
+ "MQ": {
+ "name": "Humartiniki"
+ },
+ "MK": {
+ "name": "Humasedonia"
+ },
+ "YT": {
+ "name": "Humayotte"
+ },
+ "MX": {
+ "name": "Humeksiko"
+ },
+ "FM": {
+ "name": "Humikronesia"
+ },
+ "EG": {
+ "name": "Humisri"
+ },
+ "MV": {
+ "name": "Humodivu"
+ },
+ "MD": {
+ "name": "Humoldova"
+ },
+ "MU": {
+ "name": "Humolisi"
+ },
+ "MR": {
+ "name": "Humolitania"
+ },
+ "MA": {
+ "name": "Humoloko"
+ },
+ "MC": {
+ "name": "Humonako"
+ },
+ "MN": {
+ "name": "Humongolia"
+ },
+ "MS": {
+ "name": "Humontserrati"
+ },
+ "MZ": {
+ "name": "Humusumbiji"
+ },
+ "MM": {
+ "name": "Humyama"
+ },
+ "NA": {
+ "name": "Hunamibia"
+ },
+ "NR": {
+ "name": "Hunauru"
+ },
+ "NP": {
+ "name": "Hunepali"
+ },
+ "NE": {
+ "name": "Hunijeli"
+ },
+ "NG": {
+ "name": "Hunijelia"
+ },
+ "NI": {
+ "name": "Hunikaragwa"
+ },
+ "NU": {
+ "name": "Huniue"
+ },
+ "NO": {
+ "name": "Hunolwe"
+ },
+ "NC": {
+ "name": "Hunyukaledonia"
+ },
+ "NZ": {
+ "name": "Hunyuzilandi"
+ },
+ "OM": {
+ "name": "Huomani"
+ },
+ "PK": {
+ "name": "Hupakistani"
+ },
+ "PY": {
+ "name": "Hupalagwai"
+ },
+ "PW": {
+ "name": "Hupalau"
+ },
+ "PA": {
+ "name": "Hupanama"
+ },
+ "PG": {
+ "name": "Hupapua"
+ },
+ "PE": {
+ "name": "Hupelu"
+ },
+ "PN": {
+ "name": "Hupitkaini"
+ },
+ "PL": {
+ "name": "Hupolandi"
+ },
+ "PF": {
+ "name": "Hupolinesia ya Huufaransa"
+ },
+ "PR": {
+ "name": "Hupwetoriko"
+ },
+ "SM": {
+ "name": "Husamalino"
+ },
+ "WS": {
+ "name": "Husamoa"
+ },
+ "AS": {
+ "name": "Husamoa ya Humalekani"
+ },
+ "SH": {
+ "name": "Husantahelena"
+ },
+ "KN": {
+ "name": "Husantakitzi na Hunevis"
+ },
+ "LC": {
+ "name": "Husantalusia"
+ },
+ "PM": {
+ "name": "Husantapieri na Humikeloni"
+ },
+ "VC": {
+ "name": "Husantavisenti na Hugrenadini"
+ },
+ "ST": {
+ "name": "Husaotome na Huprinsipe"
+ },
+ "SA": {
+ "name": "Husaudi"
+ },
+ "SN": {
+ "name": "Husenegali"
+ },
+ "SC": {
+ "name": "Hushelisheli"
+ },
+ "SL": {
+ "name": "Husiela Lioni"
+ },
+ "SY": {
+ "name": "Husilia"
+ },
+ "SG": {
+ "name": "Husingapoo"
+ },
+ "LK": {
+ "name": "Husirilanka"
+ },
+ "SK": {
+ "name": "Huslovakia"
+ },
+ "SI": {
+ "name": "Huslovenia"
+ },
+ "SO": {
+ "name": "Husomalia"
+ },
+ "SD": {
+ "name": "Husudani"
+ },
+ "SR": {
+ "name": "Husurinamu"
+ },
+ "TH": {
+ "name": "Hutailandi"
+ },
+ "TW": {
+ "name": "Hutaiwani"
+ },
+ "TJ": {
+ "name": "Hutajikistani"
+ },
+ "TZ": {
+ "name": "Hutanzania"
+ },
+ "TL": {
+ "name": "Hutimori ya Mashariki"
+ },
+ "TG": {
+ "name": "Hutogo"
+ },
+ "TK": {
+ "name": "Hutokelau"
+ },
+ "TO": {
+ "name": "Hutonga"
+ },
+ "TT": {
+ "name": "Hutrinad na Hutobago"
+ },
+ "TN": {
+ "name": "Hutunisia"
+ },
+ "TV": {
+ "name": "Hutuvalu"
+ },
+ "IR": {
+ "name": "Huuajemi"
+ },
+ "BE": {
+ "name": "Huubelgiji"
+ },
+ "FR": {
+ "name": "Huufaransa"
+ },
+ "FI": {
+ "name": "Huufini"
+ },
+ "UG": {
+ "name": "Huuganda"
+ },
+ "GR": {
+ "name": "Huugiliki"
+ },
+ "ET": {
+ "name": "Huuhabeshi"
+ },
+ "NL": {
+ "name": "Huuholanzi"
+ },
+ "GB": {
+ "name": "Huuingereza"
+ },
+ "DE": {
+ "name": "Huujerumani"
+ },
+ "UA": {
+ "name": "Huukraini"
+ },
+ "PT": {
+ "name": "Huuleno"
+ },
+ "UY": {
+ "name": "Huulugwai"
+ },
+ "RU": {
+ "name": "Huulusi"
+ },
+ "SZ": {
+ "name": "Huuswazi"
+ },
+ "SE": {
+ "name": "Huuswidi"
+ },
+ "CH": {
+ "name": "Huuswisi"
+ },
+ "TR": {
+ "name": "Huuturuki"
+ },
+ "TM": {
+ "name": "Huuturukimenistani"
+ },
+ "UZ": {
+ "name": "Huuzibekistani"
+ },
+ "VU": {
+ "name": "Huvanuatu"
+ },
+ "VA": {
+ "name": "Huvatikani"
+ },
+ "VE": {
+ "name": "Huvenezuela"
+ },
+ "VN": {
+ "name": "Huvietinamu"
+ },
+ "WF": {
+ "name": "Huwalis na Hufutuna"
+ },
+ "YE": {
+ "name": "Huyemeni"
+ },
+ "JO": {
+ "name": "Huyolodani"
+ },
+ "ZM": {
+ "name": "Huzambia"
+ },
+ "ZW": {
+ "name": "Huzimbabwe"
+ },
+ "FK": {
+ "name": "Ifisima fya Falkland"
+ },
+ "KY": {
+ "name": "Ifisima fya Kayman"
+ },
+ "CK": {
+ "name": "Ifisima fya Kook"
+ },
+ "MP": {
+ "name": "Ifisima fya Mariana fya Hukaskazini"
+ },
+ "MH": {
+ "name": "Ifisima fya Marshal"
+ },
+ "SB": {
+ "name": "Ifisima fya Solomon"
+ },
+ "TC": {
+ "name": "Ifisima fya Turki na Kaiko"
+ },
+ "VG": {
+ "name": "Ifisima fya Virgin fya Huingereza"
+ },
+ "VI": {
+ "name": "Ifisima fya Virgin fya Humelekani"
+ },
+ "NF": {
+ "name": "Ihisima sha Norfok"
+ },
+ "CF": {
+ "name": "Ijamhuri ya Afrika ya Pagati"
+ },
+ "CZ": {
+ "name": "Ijamhuri ya Cheki"
+ },
+ "CD": {
+ "name": "Ijamhuri ya Hidemokrasi ya Hukongo"
+ },
+ "DO": {
+ "name": "Ijamhuri ya Hudominika"
+ },
+ "IM": {
+ "name": "Isle of Man"
+ },
+ "JE": {
+ "name": "Jersey"
+ },
+ "XK": {
+ "name": "Kosovo"
+ },
+ "MO": {
+ "name": "Macau SAR China"
+ },
+ "ME": {
+ "name": "Montenegro"
+ },
+ "RS": {
+ "name": "Serbia"
+ },
+ "SX": {
+ "name": "Sint Maarten"
+ },
+ "GS": {
+ "name": "South Georgia & South Sandwich Islands"
+ },
+ "SS": {
+ "name": "South Sudan"
+ },
+ "BL": {
+ "name": "St. Barthélemy"
+ },
+ "MF": {
+ "name": "St. Martin"
+ },
+ "SJ": {
+ "name": "Svalbard & Jan Mayen"
+ },
+ "TA": {
+ "name": "Tristan da Cunha"
+ },
+ "UM": {
+ "name": "U.S. Outlying Islands"
+ },
+ "IO": {
+ "name": "Ulubali lwa Hubahari ya Hindi lwa Huingereza"
+ },
+ "PS": {
+ "name": "Ulubali lwa Magharibi nu Gaza wa Hupalestina"
+ },
+ "EH": {
+ "name": "Western Sahara"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/country/bg.json b/library/intl/resources/country/bg.json
new file mode 100644
index 000000000..121709871
--- /dev/null
+++ b/library/intl/resources/country/bg.json
@@ -0,0 +1,761 @@
+{
+ "AU": {
+ "name": "ÐвÑтралиÑ"
+ },
+ "AT": {
+ "name": "ÐвÑтриÑ"
+ },
+ "AZ": {
+ "name": "Ðзербайджан"
+ },
+ "AL": {
+ "name": "ÐлбаниÑ"
+ },
+ "DZ": {
+ "name": "Ðлжир"
+ },
+ "AS": {
+ "name": "ÐмериканÑка Самоа"
+ },
+ "VI": {
+ "name": "ÐмериканÑки ВирджинÑки оÑтрови"
+ },
+ "AO": {
+ "name": "Ðнгола"
+ },
+ "AI": {
+ "name": "Ðнгуила"
+ },
+ "AD": {
+ "name": "Ðндора"
+ },
+ "AQ": {
+ "name": "Ðнтарктика"
+ },
+ "AG": {
+ "name": "Ðнтигуа и Барбуда"
+ },
+ "AR": {
+ "name": "Ðржентина"
+ },
+ "AM": {
+ "name": "ÐрмениÑ"
+ },
+ "AW": {
+ "name": "Ðруба"
+ },
+ "AF": {
+ "name": "ÐфганиÑтан"
+ },
+ "BD": {
+ "name": "Бангладеш"
+ },
+ "BB": {
+ "name": "БарбадоÑ"
+ },
+ "BS": {
+ "name": "Бахами"
+ },
+ "BH": {
+ "name": "Бахрейн"
+ },
+ "BY": {
+ "name": "БеларуÑ"
+ },
+ "BE": {
+ "name": "БелгиÑ"
+ },
+ "BZ": {
+ "name": "Белиз"
+ },
+ "BJ": {
+ "name": "Бенин"
+ },
+ "BM": {
+ "name": "Бермуда"
+ },
+ "BO": {
+ "name": "БоливиÑ"
+ },
+ "BA": {
+ "name": "БоÑна и Херцеговина"
+ },
+ "BW": {
+ "name": "БотÑвана"
+ },
+ "BR": {
+ "name": "БразилиÑ"
+ },
+ "IO": {
+ "name": "БританÑка Ñ‚ÐµÑ€Ð¸Ñ‚Ð¾Ñ€Ð¸Ñ Ð² ИндийÑÐºÐ¸Ñ Ð¾ÐºÐµÐ°Ð½"
+ },
+ "VG": {
+ "name": "БританÑки ВирджинÑки оÑтрови"
+ },
+ "BN": {
+ "name": "Бруней ДаруÑалам"
+ },
+ "BF": {
+ "name": "Буркина ФаÑо"
+ },
+ "BI": {
+ "name": "Бурунди"
+ },
+ "BT": {
+ "name": "Бутан"
+ },
+ "BG": {
+ "name": "БългариÑ"
+ },
+ "VU": {
+ "name": "Вануату"
+ },
+ "VA": {
+ "name": "Ватикан"
+ },
+ "GB": {
+ "name": "ВеликобританиÑ"
+ },
+ "VE": {
+ "name": "Венецуела"
+ },
+ "VN": {
+ "name": "Виетнам"
+ },
+ "GA": {
+ "name": "Габон"
+ },
+ "GM": {
+ "name": "ГамбиÑ"
+ },
+ "GH": {
+ "name": "Гана"
+ },
+ "GY": {
+ "name": "ГаÑна"
+ },
+ "GP": {
+ "name": "Гваделупа"
+ },
+ "GT": {
+ "name": "Гватемала"
+ },
+ "GN": {
+ "name": "ГвинеÑ"
+ },
+ "GW": {
+ "name": "ГвинеÑ-БиÑау"
+ },
+ "DE": {
+ "name": "ГерманиÑ"
+ },
+ "GI": {
+ "name": "Гибралтар"
+ },
+ "GD": {
+ "name": "Гренада"
+ },
+ "GL": {
+ "name": "ГренландиÑ"
+ },
+ "GE": {
+ "name": "ГрузиÑ"
+ },
+ "GU": {
+ "name": "Гуам"
+ },
+ "GG": {
+ "name": "ГърнÑи"
+ },
+ "GR": {
+ "name": "ГърциÑ"
+ },
+ "DK": {
+ "name": "ДаниÑ"
+ },
+ "CD": {
+ "name": "Демократична република Конго"
+ },
+ "DJ": {
+ "name": "Джибути"
+ },
+ "JE": {
+ "name": "ДжърÑи"
+ },
+ "DG": {
+ "name": "Диего ГарÑиÑ"
+ },
+ "DM": {
+ "name": "Доминика"
+ },
+ "DO": {
+ "name": "ДоминиканÑка република"
+ },
+ "EG": {
+ "name": "Египет"
+ },
+ "EC": {
+ "name": "Еквадор"
+ },
+ "GQ": {
+ "name": "Екваториална ГвинеÑ"
+ },
+ "ER": {
+ "name": "ЕритреÑ"
+ },
+ "EE": {
+ "name": "ЕÑтониÑ"
+ },
+ "ET": {
+ "name": "ЕтиопиÑ"
+ },
+ "ZM": {
+ "name": "ЗамбиÑ"
+ },
+ "EH": {
+ "name": "Западна Сахара"
+ },
+ "ZW": {
+ "name": "Зимбабве"
+ },
+ "IL": {
+ "name": "Израел"
+ },
+ "TL": {
+ "name": "Източен Тимор"
+ },
+ "IN": {
+ "name": "ИндиÑ"
+ },
+ "ID": {
+ "name": "ИндонезиÑ"
+ },
+ "IQ": {
+ "name": "Ирак"
+ },
+ "IR": {
+ "name": "Иран"
+ },
+ "IE": {
+ "name": "ИрландиÑ"
+ },
+ "IS": {
+ "name": "ИÑландиÑ"
+ },
+ "ES": {
+ "name": "ИÑпаниÑ"
+ },
+ "IT": {
+ "name": "ИталиÑ"
+ },
+ "YE": {
+ "name": "Йемен"
+ },
+ "JO": {
+ "name": "ЙорданиÑ"
+ },
+ "CV": {
+ "name": "Кабо Верде"
+ },
+ "KZ": {
+ "name": "КазахÑтан"
+ },
+ "KY": {
+ "name": "Кайманови оÑтрови"
+ },
+ "KH": {
+ "name": "Камбоджа"
+ },
+ "CM": {
+ "name": "Камерун"
+ },
+ "CA": {
+ "name": "Канада"
+ },
+ "IC": {
+ "name": "КанарÑки оÑтрови"
+ },
+ "BQ": {
+ "name": "КарибÑка ÐидерландиÑ"
+ },
+ "QA": {
+ "name": "Катар"
+ },
+ "KE": {
+ "name": "КениÑ"
+ },
+ "CY": {
+ "name": "Кипър"
+ },
+ "KG": {
+ "name": "КиргизÑтан"
+ },
+ "KI": {
+ "name": "Кирибати"
+ },
+ "CN": {
+ "name": "Китай"
+ },
+ "CC": {
+ "name": "КокоÑови оÑтрови (оÑтрови Кийлинг)"
+ },
+ "CO": {
+ "name": "КолумбиÑ"
+ },
+ "KM": {
+ "name": "КоморÑки оÑтрови"
+ },
+ "CG": {
+ "name": "Конго"
+ },
+ "XK": {
+ "name": "КоÑово"
+ },
+ "CR": {
+ "name": "КоÑта Рика"
+ },
+ "CI": {
+ "name": "Кот д’Ивоар"
+ },
+ "CU": {
+ "name": "Куба"
+ },
+ "KW": {
+ "name": "Кувейт"
+ },
+ "CW": {
+ "name": "КюраÑао"
+ },
+ "LA": {
+ "name": "ЛаоÑ"
+ },
+ "LV": {
+ "name": "ЛатвиÑ"
+ },
+ "LS": {
+ "name": "ЛеÑото"
+ },
+ "LR": {
+ "name": "ЛибериÑ"
+ },
+ "LY": {
+ "name": "ЛибиÑ"
+ },
+ "LB": {
+ "name": "Ливан"
+ },
+ "LT": {
+ "name": "Литва"
+ },
+ "LI": {
+ "name": "Лихтенщайн"
+ },
+ "LU": {
+ "name": "ЛюкÑембург"
+ },
+ "MR": {
+ "name": "МавританиÑ"
+ },
+ "MU": {
+ "name": "Мавриций"
+ },
+ "MG": {
+ "name": "МадагаÑкар"
+ },
+ "YT": {
+ "name": "Майот"
+ },
+ "MO": {
+ "name": "Макао, СÐР на Китай"
+ },
+ "MK": {
+ "name": "МакедониÑ"
+ },
+ "MW": {
+ "name": "Малави"
+ },
+ "MY": {
+ "name": "МалайзиÑ"
+ },
+ "MV": {
+ "name": "Малдиви"
+ },
+ "ML": {
+ "name": "Мали"
+ },
+ "MT": {
+ "name": "Малта"
+ },
+ "MA": {
+ "name": "Мароко"
+ },
+ "MQ": {
+ "name": "Мартиника"
+ },
+ "MH": {
+ "name": "Маршалови оÑтрови"
+ },
+ "MX": {
+ "name": "МекÑико"
+ },
+ "MM": {
+ "name": "Мианмар (Бирма)"
+ },
+ "FM": {
+ "name": "МикронезиÑ"
+ },
+ "MZ": {
+ "name": "Мозамбик"
+ },
+ "MD": {
+ "name": "Молдова"
+ },
+ "MC": {
+ "name": "Монако"
+ },
+ "MN": {
+ "name": "МонголиÑ"
+ },
+ "MS": {
+ "name": "МонтÑерат"
+ },
+ "NA": {
+ "name": "ÐамибиÑ"
+ },
+ "NR": {
+ "name": "Ðауру"
+ },
+ "NP": {
+ "name": "Ðепал"
+ },
+ "NE": {
+ "name": "Ðигер"
+ },
+ "NG": {
+ "name": "ÐигериÑ"
+ },
+ "NL": {
+ "name": "ÐидерландиÑ"
+ },
+ "NI": {
+ "name": "Ðикарагуа"
+ },
+ "NU": {
+ "name": "Ðиуе"
+ },
+ "NZ": {
+ "name": "Ðова ЗеландиÑ"
+ },
+ "NC": {
+ "name": "Ðова КаледониÑ"
+ },
+ "NO": {
+ "name": "ÐорвегиÑ"
+ },
+ "AE": {
+ "name": "Обединени арабÑки емирÑтва"
+ },
+ "AX": {
+ "name": "ОландÑки оÑтрови"
+ },
+ "OM": {
+ "name": "Оман"
+ },
+ "AC": {
+ "name": "оÑтров ВъзнеÑение"
+ },
+ "IM": {
+ "name": "оÑтров Ман"
+ },
+ "NF": {
+ "name": "оÑтров Ðорфолк"
+ },
+ "CX": {
+ "name": "оÑтров РождеÑтво"
+ },
+ "CK": {
+ "name": "оÑтрови Кук"
+ },
+ "PN": {
+ "name": "ОÑтрови Питкерн"
+ },
+ "TC": {
+ "name": "оÑтрови Ð¢ÑŠÑ€ÐºÑ Ð¸ КайкоÑ"
+ },
+ "UM": {
+ "name": "Отдалечени оÑтрови на СÐЩ"
+ },
+ "PK": {
+ "name": "ПакиÑтан"
+ },
+ "PW": {
+ "name": "Палау"
+ },
+ "PS": {
+ "name": "ПалеÑтинÑки територии"
+ },
+ "PA": {
+ "name": "Панама"
+ },
+ "PG": {
+ "name": "Папуа Ðова ГвинеÑ"
+ },
+ "PY": {
+ "name": "Парагвай"
+ },
+ "PE": {
+ "name": "Перу"
+ },
+ "PL": {
+ "name": "Полша"
+ },
+ "PT": {
+ "name": "ПортугалиÑ"
+ },
+ "PR": {
+ "name": "Пуерто Рико"
+ },
+ "RE": {
+ "name": "Реюнион"
+ },
+ "RW": {
+ "name": "Руанда"
+ },
+ "RO": {
+ "name": "РумъниÑ"
+ },
+ "RU": {
+ "name": "РуÑиÑ"
+ },
+ "SV": {
+ "name": "Салвадор"
+ },
+ "WS": {
+ "name": "Самоа"
+ },
+ "SM": {
+ "name": "Сан Марино"
+ },
+ "ST": {
+ "name": "Сао Томе и ПринÑипи"
+ },
+ "SA": {
+ "name": "СаудитÑка ÐрабиÑ"
+ },
+ "SZ": {
+ "name": "Свазиленд"
+ },
+ "SJ": {
+ "name": "Свалбард и Ян Майен"
+ },
+ "SH": {
+ "name": "Света Елена"
+ },
+ "KP": {
+ "name": "Северна КореÑ"
+ },
+ "MP": {
+ "name": "Северни МарианÑки оÑтрови"
+ },
+ "VC": {
+ "name": "Сейнт ВинÑънт и Гренадини"
+ },
+ "KN": {
+ "name": "Сейнт ÐšÐ¸Ñ‚Ñ Ð¸ ÐевиÑ"
+ },
+ "LC": {
+ "name": "Сейнт ЛуÑиÑ"
+ },
+ "SC": {
+ "name": "Сейшели"
+ },
+ "BL": {
+ "name": "Сен Бартелеми"
+ },
+ "MF": {
+ "name": "Сен Мартен"
+ },
+ "PM": {
+ "name": "Сен Пиер и Микелон"
+ },
+ "SN": {
+ "name": "Сенегал"
+ },
+ "EA": {
+ "name": "Сеута и МелиÑ"
+ },
+ "SL": {
+ "name": "Сиера Леоне"
+ },
+ "SG": {
+ "name": "Сингапур"
+ },
+ "SX": {
+ "name": "Синт Мартен"
+ },
+ "SY": {
+ "name": "СириÑ"
+ },
+ "SK": {
+ "name": "СловакиÑ"
+ },
+ "SI": {
+ "name": "СловениÑ"
+ },
+ "SB": {
+ "name": "Соломонови оÑтрови"
+ },
+ "SO": {
+ "name": "СомалиÑ"
+ },
+ "SD": {
+ "name": "Судан"
+ },
+ "SR": {
+ "name": "Суринам"
+ },
+ "US": {
+ "name": "Съединени щати"
+ },
+ "RS": {
+ "name": "СърбиÑ"
+ },
+ "TJ": {
+ "name": "ТаджикиÑтан"
+ },
+ "TW": {
+ "name": "Тайван"
+ },
+ "TH": {
+ "name": "Тайланд"
+ },
+ "TZ": {
+ "name": "ТанзаниÑ"
+ },
+ "TG": {
+ "name": "Того"
+ },
+ "TK": {
+ "name": "Токелау"
+ },
+ "TO": {
+ "name": "Тонга"
+ },
+ "TT": {
+ "name": "Тринидад и Тобаго"
+ },
+ "TA": {
+ "name": "ТриÑтан да КунÑ"
+ },
+ "TV": {
+ "name": "Тувалу"
+ },
+ "TN": {
+ "name": "ТуниÑ"
+ },
+ "TM": {
+ "name": "ТуркмениÑтан"
+ },
+ "TR": {
+ "name": "ТурциÑ"
+ },
+ "UG": {
+ "name": "Уганда"
+ },
+ "UZ": {
+ "name": "УзбекиÑтан"
+ },
+ "UA": {
+ "name": "Украйна"
+ },
+ "HU": {
+ "name": "УнгариÑ"
+ },
+ "WF": {
+ "name": "Ð£Ð¾Ð»Ð¸Ñ Ð¸ Футуна"
+ },
+ "UY": {
+ "name": "Уругвай"
+ },
+ "FO": {
+ "name": "ФарьорÑки оÑтрови"
+ },
+ "FJ": {
+ "name": "Фиджи"
+ },
+ "PH": {
+ "name": "Филипини"
+ },
+ "FI": {
+ "name": "ФинландиÑ"
+ },
+ "FK": {
+ "name": "ФолклендÑки оÑтрови"
+ },
+ "FR": {
+ "name": "ФранциÑ"
+ },
+ "GF": {
+ "name": "ФренÑка Гвиана"
+ },
+ "PF": {
+ "name": "ФренÑка ПолинезиÑ"
+ },
+ "TF": {
+ "name": "ФренÑки южни територии"
+ },
+ "HT": {
+ "name": "Хаити"
+ },
+ "HN": {
+ "name": "ХондураÑ"
+ },
+ "HK": {
+ "name": "Хонконг, СÐР на Китай"
+ },
+ "HR": {
+ "name": "ХърватиÑ"
+ },
+ "CF": {
+ "name": "ЦентралноафриканÑка република"
+ },
+ "TD": {
+ "name": "Чад"
+ },
+ "ME": {
+ "name": "Черна гора"
+ },
+ "CZ": {
+ "name": "ЧехиÑ"
+ },
+ "CL": {
+ "name": "Чили"
+ },
+ "CH": {
+ "name": "ШвейцариÑ"
+ },
+ "SE": {
+ "name": "ШвециÑ"
+ },
+ "LK": {
+ "name": "Шри Ланка"
+ },
+ "SS": {
+ "name": "Южен Судан"
+ },
+ "ZA": {
+ "name": "Южна Ðфрика"
+ },
+ "GS": {
+ "name": "Южна Ð”Ð¶Ð¾Ñ€Ð´Ð¶Ð¸Ñ Ð¸ Южни Сандвичеви оÑтрови"
+ },
+ "KR": {
+ "name": "Южна КореÑ"
+ },
+ "JM": {
+ "name": "Ямайка"
+ },
+ "JP": {
+ "name": "ЯпониÑ"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/country/bm.json b/library/intl/resources/country/bm.json
new file mode 100644
index 000000000..9207ce667
--- /dev/null
+++ b/library/intl/resources/country/bm.json
@@ -0,0 +1,761 @@
+{
+ "AF": {
+ "name": "Afiganistaŋ"
+ },
+ "AX": {
+ "name": "Ã…land Islands"
+ },
+ "AL": {
+ "name": "Alibani"
+ },
+ "DE": {
+ "name": "Alimaɲi"
+ },
+ "DZ": {
+ "name": "Alizeri"
+ },
+ "US": {
+ "name": "Ameriki"
+ },
+ "VI": {
+ "name": "Ameriki ka Sungurunnin Gun"
+ },
+ "AD": {
+ "name": "Andɔr"
+ },
+ "IO": {
+ "name": "Angilɛ ka ɛndu dugukolo"
+ },
+ "VG": {
+ "name": "AngilÉ› ka Sungurunnin Gun"
+ },
+ "GB": {
+ "name": "Angilɛtɛri"
+ },
+ "AI": {
+ "name": "Angiya"
+ },
+ "AO": {
+ "name": "Angola"
+ },
+ "AQ": {
+ "name": "Antarctica"
+ },
+ "AG": {
+ "name": "Antiga-ni-Barbuda"
+ },
+ "SA": {
+ "name": "Arabiya Sawudiya"
+ },
+ "AE": {
+ "name": "Arabu mara kafoli"
+ },
+ "AM": {
+ "name": "Arimeni"
+ },
+ "AR": {
+ "name": "Arizantin"
+ },
+ "AW": {
+ "name": "Aruba"
+ },
+ "AC": {
+ "name": "Ascension Island"
+ },
+ "HT": {
+ "name": "Ayiti"
+ },
+ "AZ": {
+ "name": "Azɛrbayjaŋ"
+ },
+ "BS": {
+ "name": "Bahamasi"
+ },
+ "KY": {
+ "name": "Bama Gun"
+ },
+ "BB": {
+ "name": "Barbadi"
+ },
+ "BH": {
+ "name": "Bareyini"
+ },
+ "BY": {
+ "name": "Belarusi"
+ },
+ "BZ": {
+ "name": "Belizi"
+ },
+ "BJ": {
+ "name": "Benɛn"
+ },
+ "BR": {
+ "name": "Berezili"
+ },
+ "BM": {
+ "name": "Bermudi"
+ },
+ "BE": {
+ "name": "Bɛliziki"
+ },
+ "BD": {
+ "name": "Bɛngiladɛsi"
+ },
+ "BO": {
+ "name": "Bolivi"
+ },
+ "BA": {
+ "name": "Bozni-Ærizigovini"
+ },
+ "BW": {
+ "name": "Bɔtisiwana"
+ },
+ "BG": {
+ "name": "Buligari"
+ },
+ "BN": {
+ "name": "Burinɛyi"
+ },
+ "BF": {
+ "name": "Burukina Faso"
+ },
+ "BI": {
+ "name": "Burundi"
+ },
+ "BT": {
+ "name": "Butaŋ"
+ },
+ "TD": {
+ "name": "Cadi"
+ },
+ "IC": {
+ "name": "Canary Islands"
+ },
+ "CV": {
+ "name": "Capivɛrdi"
+ },
+ "BQ": {
+ "name": "Caribbean Netherlands"
+ },
+ "CZ": {
+ "name": "Ceki republiki"
+ },
+ "EA": {
+ "name": "Ceuta & Melilla"
+ },
+ "CX": {
+ "name": "Christmas Island"
+ },
+ "CY": {
+ "name": "Cipri"
+ },
+ "CC": {
+ "name": "Cocos (Keeling) Islands"
+ },
+ "CW": {
+ "name": "Curaçao"
+ },
+ "DK": {
+ "name": "Danemarki"
+ },
+ "DG": {
+ "name": "Diego Garcia"
+ },
+ "DO": {
+ "name": "Dɔmimiki republiki"
+ },
+ "DM": {
+ "name": "Dɔminiki"
+ },
+ "EC": {
+ "name": "Ekwatɔr"
+ },
+ "ER": {
+ "name": "Eritere"
+ },
+ "EE": {
+ "name": "Esetoni"
+ },
+ "ES": {
+ "name": "Esipaɲi"
+ },
+ "ET": {
+ "name": "Etiopi"
+ },
+ "EG": {
+ "name": "Eziputi"
+ },
+ "SH": {
+ "name": "ÆlÉ›ni Senu"
+ },
+ "ID": {
+ "name": "Ændonezi"
+ },
+ "IN": {
+ "name": "Ændujamana"
+ },
+ "FR": {
+ "name": "Faransi"
+ },
+ "GF": {
+ "name": "Faransi ka gwiyani"
+ },
+ "PF": {
+ "name": "Faransi ka polinezi"
+ },
+ "FO": {
+ "name": "Faroe Islands"
+ },
+ "FJ": {
+ "name": "Fiji"
+ },
+ "PH": {
+ "name": "Filipini"
+ },
+ "FI": {
+ "name": "Finilandi"
+ },
+ "TF": {
+ "name": "French Southern Territories"
+ },
+ "GA": {
+ "name": "Gabɔŋ"
+ },
+ "GH": {
+ "name": "Gana"
+ },
+ "GM": {
+ "name": "Ganbi"
+ },
+ "GR": {
+ "name": "Gɛrɛsi"
+ },
+ "GN": {
+ "name": "Gine"
+ },
+ "GW": {
+ "name": "Gine Bisawo"
+ },
+ "GQ": {
+ "name": "Gine ekwatɔri"
+ },
+ "GL": {
+ "name": "Gɔrɔhenelandi"
+ },
+ "GD": {
+ "name": "Granadi"
+ },
+ "GG": {
+ "name": "Guernsey"
+ },
+ "GP": {
+ "name": "Gwadelup"
+ },
+ "GU": {
+ "name": "Gwam"
+ },
+ "GT": {
+ "name": "Gwatemala"
+ },
+ "GY": {
+ "name": "Gwiyana"
+ },
+ "HK": {
+ "name": "Hong Kong SAR China"
+ },
+ "HN": {
+ "name": "Hɔndirasi"
+ },
+ "HU": {
+ "name": "Hɔngri"
+ },
+ "IQ": {
+ "name": "Iraki"
+ },
+ "IR": {
+ "name": "Iraŋ"
+ },
+ "IE": {
+ "name": "Irilandi"
+ },
+ "RU": {
+ "name": "Irisi"
+ },
+ "IS": {
+ "name": "Isilandi"
+ },
+ "IL": {
+ "name": "Isirayeli"
+ },
+ "IM": {
+ "name": "Isle of Man"
+ },
+ "IT": {
+ "name": "Itali"
+ },
+ "JE": {
+ "name": "Jersey"
+ },
+ "DJ": {
+ "name": "Jibuti"
+ },
+ "NC": {
+ "name": "Kaledoni Koura"
+ },
+ "KH": {
+ "name": "Kamboji"
+ },
+ "CM": {
+ "name": "Kameruni"
+ },
+ "CA": {
+ "name": "Kanada"
+ },
+ "QA": {
+ "name": "Katari"
+ },
+ "KZ": {
+ "name": "Kazakistaŋ"
+ },
+ "KE": {
+ "name": "Keniya"
+ },
+ "KP": {
+ "name": "Kɛɲɛka Kore"
+ },
+ "MP": {
+ "name": "Kɛɲɛka Mariyani Gun"
+ },
+ "KI": {
+ "name": "Kiribati"
+ },
+ "KG": {
+ "name": "Kirigizisitaŋ"
+ },
+ "CI": {
+ "name": "Kodiwari"
+ },
+ "CO": {
+ "name": "Kolombi"
+ },
+ "KM": {
+ "name": "Komɔri"
+ },
+ "CG": {
+ "name": "Kongo"
+ },
+ "CD": {
+ "name": "Kongo ka republiki demɔkratiki"
+ },
+ "XK": {
+ "name": "Kosovo"
+ },
+ "KW": {
+ "name": "Kowɛti"
+ },
+ "TL": {
+ "name": "Kɔrɔn Timɔr"
+ },
+ "CR": {
+ "name": "Kɔsitarika"
+ },
+ "KN": {
+ "name": "KristÉ”fo-Senu-ni-ÆevÉ›s"
+ },
+ "HR": {
+ "name": "Kroasi"
+ },
+ "CU": {
+ "name": "Kuba"
+ },
+ "CK": {
+ "name": "Kuki Gun"
+ },
+ "LA": {
+ "name": "Layosi"
+ },
+ "LS": {
+ "name": "Lesoto"
+ },
+ "LV": {
+ "name": "Letoni"
+ },
+ "LB": {
+ "name": "Libaŋ"
+ },
+ "LR": {
+ "name": "Liberiya"
+ },
+ "LY": {
+ "name": "Libi"
+ },
+ "LU": {
+ "name": "Likisanburu"
+ },
+ "LI": {
+ "name": "Lisɛnsitayini"
+ },
+ "LT": {
+ "name": "Lituyani"
+ },
+ "LC": {
+ "name": "Lusi-Senu"
+ },
+ "MO": {
+ "name": "Macau SAR China"
+ },
+ "MK": {
+ "name": "Macedɔni"
+ },
+ "MG": {
+ "name": "Madagasikari"
+ },
+ "MW": {
+ "name": "Malawi"
+ },
+ "MV": {
+ "name": "Maldivi"
+ },
+ "MY": {
+ "name": "Malɛzi"
+ },
+ "ML": {
+ "name": "Mali"
+ },
+ "MT": {
+ "name": "Malti"
+ },
+ "FK": {
+ "name": "Maluwini Gun"
+ },
+ "SM": {
+ "name": "Marini-Senu"
+ },
+ "MH": {
+ "name": "Marisali Gun"
+ },
+ "MQ": {
+ "name": "Maritiniki"
+ },
+ "MA": {
+ "name": "Marɔku"
+ },
+ "YT": {
+ "name": "Mayoti"
+ },
+ "MX": {
+ "name": "Meksiki"
+ },
+ "FM": {
+ "name": "Mikironesi"
+ },
+ "MD": {
+ "name": "Molidavi"
+ },
+ "MC": {
+ "name": "Monako"
+ },
+ "ME": {
+ "name": "Montenegro"
+ },
+ "MN": {
+ "name": "Moŋoli"
+ },
+ "MS": {
+ "name": "Moŋsera"
+ },
+ "MU": {
+ "name": "Morisi"
+ },
+ "MZ": {
+ "name": "Mozanbiki"
+ },
+ "MR": {
+ "name": "Mɔritani"
+ },
+ "MM": {
+ "name": "Myanimari"
+ },
+ "NA": {
+ "name": "Namibi"
+ },
+ "NR": {
+ "name": "Nawuru"
+ },
+ "NP": {
+ "name": "Nepali"
+ },
+ "NI": {
+ "name": "Nikaragwa"
+ },
+ "NG": {
+ "name": "Nizeriya"
+ },
+ "NE": {
+ "name": "Nizɛri"
+ },
+ "NO": {
+ "name": "Nɔriwɛzi"
+ },
+ "NF": {
+ "name": "Nɔrofoliki Gun"
+ },
+ "NU": {
+ "name": "Nyuwe"
+ },
+ "OM": {
+ "name": "Omaŋ"
+ },
+ "AU": {
+ "name": "Ositirali"
+ },
+ "AT": {
+ "name": "Otirisi"
+ },
+ "PK": {
+ "name": "Pakisitaŋ"
+ },
+ "PW": {
+ "name": "Palawu"
+ },
+ "PS": {
+ "name": "Palesitini"
+ },
+ "PA": {
+ "name": "Panama"
+ },
+ "PG": {
+ "name": "Papuwasi-Gine-Koura"
+ },
+ "PY": {
+ "name": "Paraguwayi"
+ },
+ "PE": {
+ "name": "Peru"
+ },
+ "NL": {
+ "name": "Peyiba"
+ },
+ "PN": {
+ "name": "Pitikarini"
+ },
+ "PM": {
+ "name": "Piyɛri-Senu-ni-Mikelɔŋ"
+ },
+ "PL": {
+ "name": "Poloɲi"
+ },
+ "PT": {
+ "name": "Pɔritigali"
+ },
+ "PR": {
+ "name": "Pɔrotoriko"
+ },
+ "RE": {
+ "name": "Reyuɲɔŋ"
+ },
+ "RO": {
+ "name": "Rumani"
+ },
+ "RW": {
+ "name": "Ruwanda"
+ },
+ "SV": {
+ "name": "Salivadɔr"
+ },
+ "SB": {
+ "name": "Salomo Gun"
+ },
+ "WS": {
+ "name": "Samowa"
+ },
+ "AS": {
+ "name": "Samowa amerikani"
+ },
+ "CF": {
+ "name": "Santarafiriki"
+ },
+ "ST": {
+ "name": "Sawo Tome-ni-Prinicipe"
+ },
+ "SN": {
+ "name": "Senegali"
+ },
+ "RS": {
+ "name": "Serbia"
+ },
+ "SC": {
+ "name": "Sesɛli"
+ },
+ "SG": {
+ "name": "Sɛngapuri"
+ },
+ "CL": {
+ "name": "Sili"
+ },
+ "CN": {
+ "name": "Siniwajamana"
+ },
+ "SX": {
+ "name": "Sint Maarten"
+ },
+ "SY": {
+ "name": "Siri"
+ },
+ "LK": {
+ "name": "Sirilanka"
+ },
+ "SL": {
+ "name": "Siyera Lewɔni"
+ },
+ "SI": {
+ "name": "Sloveni"
+ },
+ "SK": {
+ "name": "Slowaki"
+ },
+ "SO": {
+ "name": "Somali"
+ },
+ "GS": {
+ "name": "South Georgia & South Sandwich Islands"
+ },
+ "SS": {
+ "name": "South Sudan"
+ },
+ "BL": {
+ "name": "St. Barthélemy"
+ },
+ "MF": {
+ "name": "St. Martin"
+ },
+ "SD": {
+ "name": "Sudaŋ"
+ },
+ "SR": {
+ "name": "Surinami"
+ },
+ "SE": {
+ "name": "Suwɛdi"
+ },
+ "CH": {
+ "name": "Suwisi"
+ },
+ "SJ": {
+ "name": "Svalbard & Jan Mayen"
+ },
+ "SZ": {
+ "name": "Swazilandi"
+ },
+ "TJ": {
+ "name": "Tajikisitani"
+ },
+ "TZ": {
+ "name": "Tanzani"
+ },
+ "TH": {
+ "name": "Tayilandi"
+ },
+ "TW": {
+ "name": "Tayiwani"
+ },
+ "TG": {
+ "name": "Togo"
+ },
+ "TK": {
+ "name": "Tokelo"
+ },
+ "TO": {
+ "name": "Tonga"
+ },
+ "TT": {
+ "name": "Trinite-ni-Tobago"
+ },
+ "TA": {
+ "name": "Tristan da Cunha"
+ },
+ "TN": {
+ "name": "Tunizi"
+ },
+ "TR": {
+ "name": "Turiki"
+ },
+ "TC": {
+ "name": "Turiki Gun ni Kayiki"
+ },
+ "TM": {
+ "name": "Turikimenisitani"
+ },
+ "TV": {
+ "name": "Tuvalu"
+ },
+ "UM": {
+ "name": "U.S. Outlying Islands"
+ },
+ "UG": {
+ "name": "Uganda"
+ },
+ "UA": {
+ "name": "Ukɛrɛni"
+ },
+ "UY": {
+ "name": "Urugwayi"
+ },
+ "UZ": {
+ "name": "Uzebekisitani"
+ },
+ "VU": {
+ "name": "Vanuwatu"
+ },
+ "VA": {
+ "name": "Vatikaŋ"
+ },
+ "VE": {
+ "name": "Venezuwela"
+ },
+ "VC": {
+ "name": "Vinisɛn-Senu-ni-Grenadini"
+ },
+ "WF": {
+ "name": "Walisi-ni-Futuna"
+ },
+ "EH": {
+ "name": "Western Sahara"
+ },
+ "VN": {
+ "name": "Wiyɛtinamu"
+ },
+ "ZA": {
+ "name": "Worodugu Afriki"
+ },
+ "KR": {
+ "name": "Worodugu Kore"
+ },
+ "YE": {
+ "name": "Yemɛni"
+ },
+ "JM": {
+ "name": "Zamayiki"
+ },
+ "ZM": {
+ "name": "Zanbi"
+ },
+ "JP": {
+ "name": "Zapɔn"
+ },
+ "NZ": {
+ "name": "Zelandi Koura"
+ },
+ "GE": {
+ "name": "Zeyɔrzi"
+ },
+ "GI": {
+ "name": "Zibralitari"
+ },
+ "ZW": {
+ "name": "Zimbabuwe"
+ },
+ "JO": {
+ "name": "Zɔrdani"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/country/bn-IN.json b/library/intl/resources/country/bn-IN.json
new file mode 100644
index 000000000..f6aacc74d
--- /dev/null
+++ b/library/intl/resources/country/bn-IN.json
@@ -0,0 +1,761 @@
+{
+ "AT": {
+ "name": "অসà§à¦Ÿà§à¦°à¦¿à¦¯à¦¼à¦¾"
+ },
+ "AU": {
+ "name": "অসà§à¦Ÿà§à¦°à§‡à¦²à¦¿à¦¯à¦¼à¦¾"
+ },
+ "AO": {
+ "name": "অà§à¦¯à¦¾à¦™à§à¦—োলা"
+ },
+ "AQ": {
+ "name": "অà§à¦¯à¦¾à¦¨à§à¦Ÿà¦¾à¦°à§à¦•à¦Ÿà¦¿à¦•à¦¾"
+ },
+ "AC": {
+ "name": "অà§à¦¯à¦¾à¦¸à¦¸à§‡à¦¨à¦¶à¦¨ আইলà§à¦¯à¦¾à¦¨à§à¦¡"
+ },
+ "CI": {
+ "name": "আইভরি কোসà§à¦Ÿ"
+ },
+ "IM": {
+ "name": "আইল অফ মà§à¦¯à¦¾à¦¨"
+ },
+ "IS": {
+ "name": "আইসলà§à¦¯à¦¾à¦¨à§à¦¡"
+ },
+ "AZ": {
+ "name": "আজারবাইজান"
+ },
+ "AF": {
+ "name": "আফগানিসà§à¦¤à¦¾à¦¨"
+ },
+ "AS": {
+ "name": "আমেরিকান সামোয়া"
+ },
+ "IE": {
+ "name": "আয়ারলà§à¦¯à¦¾à¦¨à§à¦¡"
+ },
+ "AW": {
+ "name": "আরà§à¦¬à¦¾"
+ },
+ "AR": {
+ "name": "আরà§à¦œà§‡à¦¨à§à¦Ÿà¦¿à¦¨à¦¾"
+ },
+ "AM": {
+ "name": "আরà§à¦®à§‡à¦¨à¦¿à¦¯à¦¼à¦¾"
+ },
+ "DZ": {
+ "name": "আলজেরিয়া"
+ },
+ "AL": {
+ "name": "আলবà§à¦¯à¦¾à¦¨à¦¿à¦¯à¦¼à¦¾"
+ },
+ "AX": {
+ "name": "আলানà§à¦¡ দà§à¦¬à§€à¦ªà¦ªà§à¦žà§à¦œ"
+ },
+ "UA": {
+ "name": "ইউকà§à¦°à§‡à¦‡à¦¨"
+ },
+ "EC": {
+ "name": "ইকà§à¦¯à¦¼à§‡à¦¡à¦°"
+ },
+ "IT": {
+ "name": "ইতালী"
+ },
+ "ID": {
+ "name": "ইনà§à¦¦à§‹à¦¨à§‡à¦¶à¦¿à¦¯à¦¼à¦¾"
+ },
+ "ET": {
+ "name": "ইফিওপিয়া"
+ },
+ "YE": {
+ "name": "ইয়েমেন"
+ },
+ "IQ": {
+ "name": "ইরাক"
+ },
+ "IR": {
+ "name": "ইরান"
+ },
+ "ER": {
+ "name": "ইরিতà§à¦°à¦¿à¦¯à¦¼à¦¾"
+ },
+ "IL": {
+ "name": "ইসà§à¦°à¦¾à¦¯à¦¼à§‡à¦²"
+ },
+ "UG": {
+ "name": "উগানà§à¦¡à¦¾"
+ },
+ "UZ": {
+ "name": "উজবেকিসà§à¦¤à¦¾à¦¨"
+ },
+ "KP": {
+ "name": "উতà§à¦¤à¦° কোরিয়া"
+ },
+ "MP": {
+ "name": "উতà§à¦¤à¦°à¦¾à¦žà§à¦šà¦²à§€à¦¯à¦¼ মারিয়ানা দà§à¦¬à§€à¦ªà¦ªà§à¦žà§à¦œ"
+ },
+ "UY": {
+ "name": "উরà§à¦—à§à¦¯à¦¼à§‡"
+ },
+ "AG": {
+ "name": "à¦à¦¨à§à¦Ÿà¦¿à¦—à§à¦¯à¦¼à¦¾ ও বারবà§à¦¡à¦¾"
+ },
+ "SV": {
+ "name": "à¦à¦² সালভেদর"
+ },
+ "EE": {
+ "name": "à¦à¦¸à§à¦¤à§‹à¦¨à¦¿à¦¯à¦¼à¦¾"
+ },
+ "AI": {
+ "name": "à¦à§à¦¯à¦¾à¦™à§à¦—à§à¦‡à¦²à¦¾"
+ },
+ "AD": {
+ "name": "à¦à§à¦¯à¦¾à¦¨à§à¦¡à§‹à¦°à¦¾"
+ },
+ "OM": {
+ "name": "ওমান"
+ },
+ "WF": {
+ "name": "ওয়ালিস ও ফà§à¦Ÿà§à¦¨à¦¾"
+ },
+ "CG": {
+ "name": "কঙà§à¦—ো - বà§à¦°à¦¾à¦œà¦¾à¦­à¦¿à¦²"
+ },
+ "CD": {
+ "name": "কঙà§à¦—ো-কিনশাসা"
+ },
+ "KM": {
+ "name": "কমোরোস"
+ },
+ "KH": {
+ "name": "কমà§à¦¬à§‹à¦¡à¦¿à¦¯à¦¼à¦¾"
+ },
+ "XK": {
+ "name": "কসোভো"
+ },
+ "KZ": {
+ "name": "কাজাকসà§à¦¥à¦¾à¦¨"
+ },
+ "QA": {
+ "name": "কাতার"
+ },
+ "CA": {
+ "name": "কানাডা"
+ },
+ "CU": {
+ "name": "কিউবা"
+ },
+ "CW": {
+ "name": "কিউরাসাও"
+ },
+ "KI": {
+ "name": "কিরিবাতি"
+ },
+ "KG": {
+ "name": "কিরà§à¦—িজিয়া"
+ },
+ "EA": {
+ "name": "কà§à¦‰à¦Ÿà¦¾ à¦à¦¬à¦‚ মেলিলা"
+ },
+ "CK": {
+ "name": "কà§à¦• দà§à¦¬à§€à¦ªà¦ªà§à¦žà§à¦œ"
+ },
+ "KW": {
+ "name": "কà§à¦¯à¦¼à§‡à¦¤"
+ },
+ "KE": {
+ "name": "কেনিয়া"
+ },
+ "CV": {
+ "name": "কেপভারà§à¦¦à§‡"
+ },
+ "KY": {
+ "name": "কেমà§à¦¯à¦¾à¦¨ দà§à¦¬à§€à¦ªà¦ªà§à¦žà§à¦œ"
+ },
+ "CC": {
+ "name": "কোকোস (কিলিং)দà§à¦¬à§€à¦ªà¦ªà§à¦žà§à¦œ"
+ },
+ "CO": {
+ "name": "কোলোমà§à¦¬à¦¿à¦¯à¦¼à¦¾"
+ },
+ "CR": {
+ "name": "কোসà§à¦Ÿà¦¾à¦°à¦¿à¦•à¦¾"
+ },
+ "IC": {
+ "name": "কà§à¦¯à¦¾à¦¨à¦¾à¦°à¦¿ দà§à¦¬à§€à¦ªà¦ªà§à¦žà§à¦œ"
+ },
+ "CM": {
+ "name": "কà§à¦¯à¦¾à¦®à§‡à¦°à§à¦¨"
+ },
+ "BQ": {
+ "name": "কà§à¦¯à¦¾à¦°à¦¿à¦¬à¦¿à¦¯à¦¼à¦¾à¦¨ নেদারলà§à¦¯à¦¾à¦¨à§à¦¡à¦¸"
+ },
+ "CX": {
+ "name": "কà§à¦°à¦¿à¦¸à¦®à¦¾à¦¸ দà§à¦¬à§€à¦ª"
+ },
+ "HR": {
+ "name": "কà§à¦°à§‹à¦¯à¦¼à§‡à¦¶à¦¿à¦¯à¦¼à¦¾"
+ },
+ "GM": {
+ "name": "গামà§à¦¬à¦¿à¦¯à¦¼à¦¾"
+ },
+ "GN": {
+ "name": "গিনি"
+ },
+ "GW": {
+ "name": "গিনি-বিসাউ"
+ },
+ "GY": {
+ "name": "গিয়ানা"
+ },
+ "GP": {
+ "name": "গà§à¦¯à¦¼à¦¾à¦¦à§‡à¦²à§Œà¦ª"
+ },
+ "GU": {
+ "name": "গà§à¦¯à¦¼à¦¾à¦®"
+ },
+ "GT": {
+ "name": "গোয়াতেমালা"
+ },
+ "GA": {
+ "name": "গà§à¦¯à¦¾à¦¬à¦¨"
+ },
+ "GG": {
+ "name": "গà§à¦°à¦¾à¦žà§à¦œà¦¿"
+ },
+ "GL": {
+ "name": "গà§à¦°à§€à¦¨à¦²à§à¦¯à¦¾à¦¨à§à¦¡"
+ },
+ "GR": {
+ "name": "গà§à¦°à§€à¦¸"
+ },
+ "GD": {
+ "name": "গà§à¦°à§‡à¦¨à§‡à¦¡à¦¾"
+ },
+ "GH": {
+ "name": "ঘানা"
+ },
+ "TD": {
+ "name": "চাদ"
+ },
+ "CL": {
+ "name": "চিলি"
+ },
+ "CN": {
+ "name": "চীন"
+ },
+ "CZ": {
+ "name": "চেক পà§à¦°à¦œà¦¾à¦¤à¦¨à§à¦¤à§à¦°"
+ },
+ "GE": {
+ "name": "জরà§à¦œà¦¿à¦¯à¦¼à¦¾"
+ },
+ "JO": {
+ "name": "জরà§à¦¡à¦¨"
+ },
+ "JP": {
+ "name": "জাপান"
+ },
+ "JM": {
+ "name": "জামাইকা"
+ },
+ "ZM": {
+ "name": "জামà§à¦¬à¦¿à¦¯à¦¼à¦¾"
+ },
+ "DE": {
+ "name": "জারà§à¦®à¦¾à¦¨à¦¿"
+ },
+ "JE": {
+ "name": "জারà§à¦¸à¦¿"
+ },
+ "DJ": {
+ "name": "জিবà§à¦¤à¦¿"
+ },
+ "GI": {
+ "name": "জিবà§à¦°à¦¾à¦²à§à¦Ÿà¦¾à¦°"
+ },
+ "ZW": {
+ "name": "জিমà§à¦¬à¦¾à¦¬à§‹à¦¯à¦¼à§‡"
+ },
+ "TV": {
+ "name": "টà§à¦­à¦¾à¦²à§"
+ },
+ "TK": {
+ "name": "টোকেলাউ"
+ },
+ "TG": {
+ "name": "টোগো"
+ },
+ "TO": {
+ "name": "টোঙà§à¦—া"
+ },
+ "TA": {
+ "name": "টà§à¦°à¦¿à¦¸à§à¦Ÿà¦¾à¦¨ ডা কà§à¦¨à¦¹à¦¾"
+ },
+ "DK": {
+ "name": "ডেনমারà§à¦•"
+ },
+ "DM": {
+ "name": "ডোমিনিকা"
+ },
+ "DO": {
+ "name": "ডোমেনিকান পà§à¦°à¦œà¦¾à¦¤à¦¨à§à¦¤à§à¦°"
+ },
+ "TW": {
+ "name": "তাইওয়ান"
+ },
+ "TJ": {
+ "name": "তাজিকসà§à¦¥à¦¾à¦¨"
+ },
+ "TZ": {
+ "name": "তাঞà§à¦œà¦¾à¦¨à¦¿à¦¯à¦¼à¦¾"
+ },
+ "TN": {
+ "name": "তিউনিশিয়া"
+ },
+ "TL": {
+ "name": "তিমà§à¦°-লেসà§à¦¤à§‡"
+ },
+ "TR": {
+ "name": "তà§à¦°à¦¸à§à¦•"
+ },
+ "TM": {
+ "name": "তà§à¦°à§à¦•à¦®à§‡à¦¨à¦¿à¦¸à§à¦¤à¦¾à¦¨"
+ },
+ "TC": {
+ "name": "তà§à¦°à§à¦•à¦¸ ও কাইকোস দà§à¦¬à§€à¦ªà¦ªà§à¦žà§à¦œ"
+ },
+ "TT": {
+ "name": "তà§à¦°à¦¿à¦¨à¦¿à¦¨à¦¾à¦¦ ও টোবà§à¦¯à¦¾à¦—ো"
+ },
+ "TH": {
+ "name": "থাইলà§à¦¯à¦¾à¦¨à§à¦¡"
+ },
+ "ZA": {
+ "name": "দকà§à¦·à¦¿à¦£ আফà§à¦°à¦¿à¦•à¦¾"
+ },
+ "KR": {
+ "name": "দকà§à¦·à¦¿à¦£ কোরিয়া"
+ },
+ "GS": {
+ "name": "দকà§à¦·à¦¿à¦£ জরà§à¦œà¦¿à¦¯à¦¼à¦¾ ও দকà§à¦·à¦¿à¦£ সà§à¦¯à¦¾à¦¨à§à¦¡à¦‰à¦‡à¦š দà§à¦¬à§€à¦ªà¦ªà§à¦žà§à¦œ"
+ },
+ "SS": {
+ "name": "দকà§à¦·à¦¿à¦¨ সà§à¦¦à¦¾à¦¨"
+ },
+ "DG": {
+ "name": "দিয়েগো গারà§à¦¸à¦¿à¦¯à¦¼à¦¾"
+ },
+ "NO": {
+ "name": "নরওয়ে"
+ },
+ "NE": {
+ "name": "নাইজার"
+ },
+ "NG": {
+ "name": "নাইজেরিয়া"
+ },
+ "NR": {
+ "name": "নাউরà§"
+ },
+ "NA": {
+ "name": "নামিবিয়া"
+ },
+ "NC": {
+ "name": "নিউ কà§à¦¯à¦¾à¦²à§‡à¦¡à§‹à¦¨à¦¿à¦¯à¦¼à¦¾"
+ },
+ "NZ": {
+ "name": "নিউজিলà§à¦¯à¦¾à¦¨à§à¦¡"
+ },
+ "NU": {
+ "name": "নিউয়ে"
+ },
+ "NI": {
+ "name": "নিকারাগà§à¦¯à¦¼à¦¾"
+ },
+ "GQ": {
+ "name": "নিরকà§à¦·à§€à¦¯à¦¼ গিনি"
+ },
+ "NF": {
+ "name": "নিরফোক দà§à¦¬à§€à¦ª"
+ },
+ "NL": {
+ "name": "নেদারলà§à¦¯à¦¾à¦¨à§à¦¡à¦¸"
+ },
+ "NP": {
+ "name": "নেপাল"
+ },
+ "PT": {
+ "name": "পরà§à¦¤à§à¦—াল"
+ },
+ "EH": {
+ "name": "পশà§à¦šà¦¿à¦® সাহারা"
+ },
+ "PK": {
+ "name": "পাকিসà§à¦¤à¦¾à¦¨"
+ },
+ "PA": {
+ "name": "পানামা"
+ },
+ "PG": {
+ "name": "পাপà§à¦¯à¦¼à¦¾ নিউ গিনি"
+ },
+ "PW": {
+ "name": "পালাউ"
+ },
+ "PN": {
+ "name": "পিটকেয়ারà§à¦¨ দà§à¦¬à§€à¦ªà¦ªà§à¦žà§à¦œ"
+ },
+ "PE": {
+ "name": "পিরà§"
+ },
+ "PR": {
+ "name": "পà§à¦¯à¦¼à§‡à¦°à§à¦¤à§‹ রিকো"
+ },
+ "PL": {
+ "name": "পোলà§à¦¯à¦¾à¦¨à§à¦¡"
+ },
+ "PY": {
+ "name": "পà§à¦¯à¦¾à¦°à¦¾à¦—à§à¦¯à¦¼à§‡"
+ },
+ "FK": {
+ "name": "ফকলà§à¦¯à¦¾à¦¨à§à¦¡ দà§à¦¬à§€à¦ªà¦ªà§à¦žà§à¦œ"
+ },
+ "GF": {
+ "name": "ফরাসী গায়ানা"
+ },
+ "TF": {
+ "name": "ফরাসী দকà§à¦·à¦¿à¦£à¦¾à¦žà§à¦šà¦²"
+ },
+ "PF": {
+ "name": "ফরাসী পলিনেশিয়া"
+ },
+ "FJ": {
+ "name": "ফিজি"
+ },
+ "FI": {
+ "name": "ফিনলà§à¦¯à¦¾à¦¨à§à¦¡"
+ },
+ "PH": {
+ "name": "ফিলিপাইন"
+ },
+ "PS": {
+ "name": "ফিলিসà§à¦¤à¦¿à¦¨ অঞà§à¦šà¦²à¦¸à¦®à§‚হ"
+ },
+ "FO": {
+ "name": "ফà§à¦¯à¦¾à¦°à¦“ দà§à¦¬à§€à¦ªà¦ªà§à¦žà§à¦œ"
+ },
+ "FR": {
+ "name": "ফà§à¦°à¦¾à¦¨à§à¦¸"
+ },
+ "BW": {
+ "name": "বতসোয়ানা"
+ },
+ "BA": {
+ "name": "বসনিয়া ও হারà§à¦œà§‡à¦—োভিনা"
+ },
+ "BD": {
+ "name": "বাংলাদেশ"
+ },
+ "BB": {
+ "name": "বারবাদোস"
+ },
+ "BM": {
+ "name": "বারমà§à¦¡à¦¾"
+ },
+ "BH": {
+ "name": "বাহরাইন"
+ },
+ "BS": {
+ "name": "বাহামা দà§à¦¬à§€à¦ªà¦ªà§à¦žà§à¦œ"
+ },
+ "BF": {
+ "name": "বà§à¦°à¦•à¦¿à¦¨à¦¾ ফাসো"
+ },
+ "BI": {
+ "name": "বà§à¦°à§à¦¨à§à¦¡à¦¿"
+ },
+ "BG": {
+ "name": "বà§à¦²à¦—েরিয়া"
+ },
+ "BJ": {
+ "name": "বেনিন"
+ },
+ "BE": {
+ "name": "বেলজিয়াম"
+ },
+ "BZ": {
+ "name": "বেলিজ"
+ },
+ "BY": {
+ "name": "বেলোরà§à¦¶à¦¿à¦¯à¦¼à¦¾"
+ },
+ "BO": {
+ "name": "বোলিভিয়া"
+ },
+ "BR": {
+ "name": "বà§à¦°à¦¾à¦œà¦¿à¦²"
+ },
+ "IO": {
+ "name": "বà§à¦°à¦¿à¦Ÿà¦¿à¦¶ ভারত মহাসাগরীয় অঞà§à¦šà¦²"
+ },
+ "VG": {
+ "name": "বà§à¦°à¦¿à¦Ÿà¦¿à¦¶ ভারà§à¦œà¦¿à¦¨ দà§à¦¬à§€à¦ªà¦ªà§à¦žà§à¦œ"
+ },
+ "BN": {
+ "name": "বà§à¦°à§à¦¨à§‡à¦‡"
+ },
+ "VU": {
+ "name": "ভানà§à¦¯à¦¼à¦¾à¦Ÿà§"
+ },
+ "IN": {
+ "name": "ভারত"
+ },
+ "VN": {
+ "name": "ভিয়েতনাম"
+ },
+ "BT": {
+ "name": "ভà§à¦Ÿà¦¾à¦¨"
+ },
+ "VE": {
+ "name": "ভেনেজà§à¦¯à¦¼à§‡à¦²à¦¾"
+ },
+ "VA": {
+ "name": "ভà§à¦¯à¦¾à¦Ÿà¦¿à¦•à¦¾à¦¨ সিটি"
+ },
+ "MN": {
+ "name": "মঙà§à¦—োলিয়া"
+ },
+ "CF": {
+ "name": "মধà§à¦¯ আফà§à¦°à¦¿à¦•à¦¾à¦° পà§à¦°à¦œà¦¾à¦¤à¦¨à§à¦¤à§à¦°"
+ },
+ "MS": {
+ "name": "মনà§à¦Ÿà¦¸à§‡à¦°à¦¾à¦Ÿ"
+ },
+ "ME": {
+ "name": "মনà§à¦Ÿà¦¿à¦¨à¦¿à¦—à§à¦°à§‹"
+ },
+ "MR": {
+ "name": "মরিতানিয়া"
+ },
+ "MU": {
+ "name": "মরিশাস"
+ },
+ "FM": {
+ "name": "মাইকà§à¦°à§‹à¦¨à§‡à¦¶à¦¿à¦¯à¦¼à¦¾"
+ },
+ "MG": {
+ "name": "মাদাগাসà§à¦•à¦¾à¦°"
+ },
+ "MM": {
+ "name": "মায়ানমার (বারà§à¦®à¦¾)"
+ },
+ "YT": {
+ "name": "মায়োতà§à¦¤à§‡"
+ },
+ "VI": {
+ "name": "মারà§à¦•à¦¿à¦¨ ভারà§à¦œà¦¿à¦¨ দà§à¦¬à§€à¦ªà¦ªà§à¦žà§à¦œ"
+ },
+ "US": {
+ "name": "মারà§à¦•à¦¿à¦¨ যà§à¦•à§à¦¤à¦°à¦¾à¦·à§à¦Ÿà§à¦°"
+ },
+ "MQ": {
+ "name": "মারà§à¦Ÿà¦¿à¦¨à¦¿à¦•"
+ },
+ "MH": {
+ "name": "মারà§à¦¶à¦¾à¦² দà§à¦¬à§€à¦ªà¦ªà§à¦žà§à¦œ"
+ },
+ "MV": {
+ "name": "মালদà§à¦¬à§€à¦ª"
+ },
+ "MY": {
+ "name": "মালয়েশিয়া"
+ },
+ "MW": {
+ "name": "মালাউই"
+ },
+ "ML": {
+ "name": "মালি"
+ },
+ "MT": {
+ "name": "মালà§à¦Ÿà¦¾"
+ },
+ "EG": {
+ "name": "মিশর"
+ },
+ "MX": {
+ "name": "মেকà§à¦¸à¦¿à¦•à§‹"
+ },
+ "MZ": {
+ "name": "মোজামà§à¦¬à¦¿à¦•"
+ },
+ "MC": {
+ "name": "মোনাকো"
+ },
+ "MA": {
+ "name": "মোরকà§à¦•à§‹"
+ },
+ "MD": {
+ "name": "মোলà§à¦¦à¦¾à¦­à¦¿à¦¯à¦¼à¦¾"
+ },
+ "MO": {
+ "name": "মà§à¦¯à¦¾à¦•à¦¾à¦“ à¦à¦¸ ঠআর চায়না"
+ },
+ "MK": {
+ "name": "মà§à¦¯à¦¾à¦¸à¦¾à¦¡à§‹à¦¨à¦¿à¦¯à¦¼à¦¾"
+ },
+ "GB": {
+ "name": "যà§à¦•à§à¦¤à¦°à¦¾à¦œà§à¦¯"
+ },
+ "UM": {
+ "name": "যà§à¦•à§à¦¤à¦°à¦¾à¦·à§à¦Ÿà§à¦°à§‡à¦° পারà§à¦¶à§à¦¬à¦¬à¦°à§à¦¤à§€ দà§à¦¬à§€à¦ªà¦ªà§à¦žà§à¦œ"
+ },
+ "RU": {
+ "name": "রাশিয়া"
+ },
+ "RE": {
+ "name": "রিইউনিয়ন"
+ },
+ "RO": {
+ "name": "রà§à¦®à¦¾à¦¨à¦¿à¦¯à¦¼à¦¾"
+ },
+ "RW": {
+ "name": "রà§à¦¯à¦¼à¦¾à¦¨à§à¦¡à¦¾"
+ },
+ "LR": {
+ "name": "লাইবেরিয়া"
+ },
+ "LA": {
+ "name": "লাওস"
+ },
+ "LU": {
+ "name": "লাকà§à¦¸à§‡à¦®à¦¬à¦¾à¦°à§à¦—"
+ },
+ "LV": {
+ "name": "লাতà§à¦­à¦¿à¦¯à¦¼à¦¾"
+ },
+ "LI": {
+ "name": "লিচেনসà§à¦Ÿà§‡à¦‡à¦¨"
+ },
+ "LT": {
+ "name": "লিথà§à¦¯à¦¼à¦¾à¦¨à¦¿à¦¯à¦¼à¦¾"
+ },
+ "LY": {
+ "name": "লিবিয়া"
+ },
+ "LB": {
+ "name": "লেবানন"
+ },
+ "LS": {
+ "name": "লেসোথো"
+ },
+ "LK": {
+ "name": "শà§à¦°à§€à¦²à¦™à§à¦•à¦¾"
+ },
+ "SK": {
+ "name": "শà§à¦²à§‹à¦­à¦¾à¦•à¦¿à¦¯à¦¼à¦¾"
+ },
+ "AE": {
+ "name": "সংযà§à¦•à§à¦¤ আরব আমিরাত"
+ },
+ "SB": {
+ "name": "সলোমন দà§à¦¬à§€à¦ªà¦ªà§à¦žà§à¦œ"
+ },
+ "CY": {
+ "name": "সাইপà§à¦°à¦¾à¦¸"
+ },
+ "ST": {
+ "name": "সাওটোমা ও পà§à¦°à¦¿à¦¨à§à¦¸à¦¿à¦ªà¦¿"
+ },
+ "SM": {
+ "name": "সান মারিনো"
+ },
+ "WS": {
+ "name": "সামোয়া"
+ },
+ "RS": {
+ "name": "সারà§à¦¬à¦¿à¦¯à¦¼à¦¾"
+ },
+ "SG": {
+ "name": "সিঙà§à¦—াপà§à¦°"
+ },
+ "SX": {
+ "name": "সিনà§à¦Ÿ মারà§à¦Ÿà§‡à¦¨"
+ },
+ "SL": {
+ "name": "সিয়েরালিওন"
+ },
+ "SY": {
+ "name": "সিরিয়া"
+ },
+ "SC": {
+ "name": "সিসিলি"
+ },
+ "CH": {
+ "name": "সà§à¦‡à¦œà¦¾à¦°à¦²à§à¦¯à¦¾à¦¨à§à¦¡"
+ },
+ "SE": {
+ "name": "সà§à¦‡à¦¡à§‡à¦¨"
+ },
+ "SD": {
+ "name": "সà§à¦¦à¦¾à¦¨"
+ },
+ "SR": {
+ "name": "সà§à¦°à¦¿à¦¨à¦¾à¦®"
+ },
+ "SN": {
+ "name": "সেনেগাল"
+ },
+ "KN": {
+ "name": "সেনà§à¦Ÿ কিটস ও নেভিস"
+ },
+ "PM": {
+ "name": "সেনà§à¦Ÿ পিয়ের ও মিকà§à¦¯à¦¼à§‡à¦²à¦¨"
+ },
+ "BL": {
+ "name": "সেনà§à¦Ÿ বারথেলিমি"
+ },
+ "VC": {
+ "name": "সেনà§à¦Ÿ ভিনসেনà§à¦Ÿ ও দà§à¦¯à¦¾ গà§à¦°à§‡à¦¨à¦¾à¦¡à¦¿à¦¨à¦¸"
+ },
+ "MF": {
+ "name": "সেনà§à¦Ÿ মারà§à¦Ÿà¦¿à¦¨"
+ },
+ "LC": {
+ "name": "সেনà§à¦Ÿ লà§à¦¸à¦¿à¦¯à¦¼à¦¾"
+ },
+ "SH": {
+ "name": "সেনà§à¦Ÿ হেলেনা"
+ },
+ "SO": {
+ "name": "সোমালিয়া"
+ },
+ "SZ": {
+ "name": "সোয়াজিলà§à¦¯à¦¾à¦¨à§à¦¡"
+ },
+ "SA": {
+ "name": "সৌদি আরব"
+ },
+ "ES": {
+ "name": "সà§à¦ªà§‡à¦¨"
+ },
+ "SJ": {
+ "name": "সà§à¦¬à¦¾à¦²à¦¬à¦¾à¦°à§à¦¡ ও জান মেয়েন"
+ },
+ "SI": {
+ "name": "সà§à¦²à§‹à¦­à¦¾à¦¨à¦¿à¦¯à¦¼à¦¾"
+ },
+ "HK": {
+ "name": "হংকং à¦à¦¸à¦à¦†à¦° চীনা"
+ },
+ "HN": {
+ "name": "হণà§à¦¡à§à¦°à¦¾à¦¸"
+ },
+ "HT": {
+ "name": "হাইতি"
+ },
+ "HU": {
+ "name": "হাঙà§à¦—েরি"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/country/bn.json b/library/intl/resources/country/bn.json
new file mode 100644
index 000000000..b55778f7b
--- /dev/null
+++ b/library/intl/resources/country/bn.json
@@ -0,0 +1,761 @@
+{
+ "AT": {
+ "name": "অসà§à¦Ÿà§à¦°à¦¿à¦¯à¦¼à¦¾"
+ },
+ "AU": {
+ "name": "অসà§à¦Ÿà§à¦°à§‡à¦²à¦¿à¦¯à¦¼à¦¾"
+ },
+ "AO": {
+ "name": "অà§à¦¯à¦¾à¦™à§à¦—োলা"
+ },
+ "AQ": {
+ "name": "অà§à¦¯à¦¾à¦¨à§à¦Ÿà¦¾à¦°à§à¦•à¦Ÿà¦¿à¦•à¦¾"
+ },
+ "AC": {
+ "name": "অà§à¦¯à¦¾à¦¸à¦¸à§‡à¦¨à¦¶à¦¨ আইলà§à¦¯à¦¾à¦¨à§à¦¡"
+ },
+ "CI": {
+ "name": "আইভরি কোসà§à¦Ÿ"
+ },
+ "IM": {
+ "name": "আইল অফ মà§à¦¯à¦¾à¦¨"
+ },
+ "IS": {
+ "name": "আইসলà§à¦¯à¦¾à¦¨à§à¦¡"
+ },
+ "AZ": {
+ "name": "আজারবাইজান"
+ },
+ "AF": {
+ "name": "আফগানিসà§à¦¤à¦¾à¦¨"
+ },
+ "AS": {
+ "name": "আমেরিকান সামোয়া"
+ },
+ "IE": {
+ "name": "আয়ারলà§à¦¯à¦¾à¦¨à§à¦¡"
+ },
+ "AW": {
+ "name": "আরà§à¦¬à¦¾"
+ },
+ "AR": {
+ "name": "আরà§à¦œà§‡à¦¨à§à¦Ÿà¦¿à¦¨à¦¾"
+ },
+ "AM": {
+ "name": "আরà§à¦®à§‡à¦¨à¦¿à¦¯à¦¼à¦¾"
+ },
+ "DZ": {
+ "name": "আলজেরিয়া"
+ },
+ "AL": {
+ "name": "আলবà§à¦¯à¦¾à¦¨à¦¿à¦¯à¦¼à¦¾"
+ },
+ "AX": {
+ "name": "আলানà§à¦¡ দà§à¦¬à§€à¦ªà¦ªà§à¦žà§à¦œ"
+ },
+ "UA": {
+ "name": "ইউকà§à¦°à§‡à¦‡à¦¨"
+ },
+ "EC": {
+ "name": "ইকà§à¦¯à¦¼à§‡à¦¡à¦°"
+ },
+ "IT": {
+ "name": "ইতালী"
+ },
+ "ID": {
+ "name": "ইনà§à¦¦à§‹à¦¨à§‡à¦¶à¦¿à¦¯à¦¼à¦¾"
+ },
+ "ET": {
+ "name": "ইফিওপিয়া"
+ },
+ "YE": {
+ "name": "ইয়েমেন"
+ },
+ "IQ": {
+ "name": "ইরাক"
+ },
+ "IR": {
+ "name": "ইরান"
+ },
+ "ER": {
+ "name": "ইরিতà§à¦°à¦¿à¦¯à¦¼à¦¾"
+ },
+ "IL": {
+ "name": "ইসà§à¦°à¦¾à¦¯à¦¼à§‡à¦²"
+ },
+ "UG": {
+ "name": "উগানà§à¦¡à¦¾"
+ },
+ "UZ": {
+ "name": "উজবেকিসà§à¦¤à¦¾à¦¨"
+ },
+ "KP": {
+ "name": "উতà§à¦¤à¦° কোরিয়া"
+ },
+ "MP": {
+ "name": "উতà§à¦¤à¦°à¦¾à¦žà§à¦šà¦²à§€à¦¯à¦¼ মারিয়ানা দà§à¦¬à§€à¦ªà¦ªà§à¦žà§à¦œ"
+ },
+ "UY": {
+ "name": "উরà§à¦—à§à¦¯à¦¼à§‡"
+ },
+ "AG": {
+ "name": "à¦à¦¨à§à¦Ÿà¦¿à¦—à§à¦¯à¦¼à¦¾ ও বারবà§à¦¡à¦¾"
+ },
+ "SV": {
+ "name": "à¦à¦² সালভেদর"
+ },
+ "EE": {
+ "name": "à¦à¦¸à§à¦¤à§‹à¦¨à¦¿à¦¯à¦¼à¦¾"
+ },
+ "AI": {
+ "name": "à¦à§à¦¯à¦¾à¦™à§à¦—à§à¦‡à¦²à¦¾"
+ },
+ "AD": {
+ "name": "à¦à§à¦¯à¦¾à¦¨à§à¦¡à§‹à¦°à¦¾"
+ },
+ "OM": {
+ "name": "ওমান"
+ },
+ "WF": {
+ "name": "ওয়ালিস ও ফà§à¦Ÿà§à¦¨à¦¾"
+ },
+ "CG": {
+ "name": "কঙà§à¦—ো - বà§à¦°à¦¾à¦œà¦¾à¦­à¦¿à¦²"
+ },
+ "CD": {
+ "name": "কঙà§à¦—ো-কিনশাসা"
+ },
+ "KM": {
+ "name": "কমোরোস"
+ },
+ "KH": {
+ "name": "কমà§à¦¬à§‹à¦¡à¦¿à¦¯à¦¼à¦¾"
+ },
+ "XK": {
+ "name": "কসোভো"
+ },
+ "KZ": {
+ "name": "কাজাকসà§à¦¥à¦¾à¦¨"
+ },
+ "QA": {
+ "name": "কাতার"
+ },
+ "CA": {
+ "name": "কানাডা"
+ },
+ "CU": {
+ "name": "কিউবা"
+ },
+ "CW": {
+ "name": "কিউরাসাও"
+ },
+ "KI": {
+ "name": "কিরিবাতি"
+ },
+ "KG": {
+ "name": "কিরà§à¦—িজিয়া"
+ },
+ "EA": {
+ "name": "কà§à¦‰à¦Ÿà¦¾ à¦à¦¬à¦‚ মেলিলা"
+ },
+ "CK": {
+ "name": "কà§à¦• দà§à¦¬à§€à¦ªà¦ªà§à¦žà§à¦œ"
+ },
+ "KW": {
+ "name": "কà§à¦¯à¦¼à§‡à¦¤"
+ },
+ "KE": {
+ "name": "কেনিয়া"
+ },
+ "CV": {
+ "name": "কেপভারà§à¦¦à§‡"
+ },
+ "KY": {
+ "name": "কেমà§à¦¯à¦¾à¦¨ দà§à¦¬à§€à¦ªà¦ªà§à¦žà§à¦œ"
+ },
+ "CC": {
+ "name": "কোকোস (কিলিং)দà§à¦¬à§€à¦ªà¦ªà§à¦žà§à¦œ"
+ },
+ "CO": {
+ "name": "কোলোমà§à¦¬à¦¿à¦¯à¦¼à¦¾"
+ },
+ "CR": {
+ "name": "কোসà§à¦Ÿà¦¾à¦°à¦¿à¦•à¦¾"
+ },
+ "IC": {
+ "name": "কà§à¦¯à¦¾à¦¨à¦¾à¦°à¦¿ দà§à¦¬à§€à¦ªà¦ªà§à¦žà§à¦œ"
+ },
+ "CM": {
+ "name": "কà§à¦¯à¦¾à¦®à§‡à¦°à§à¦¨"
+ },
+ "BQ": {
+ "name": "কà§à¦¯à¦¾à¦°à¦¿à¦¬à¦¿à¦¯à¦¼à¦¾à¦¨ নেদারলà§à¦¯à¦¾à¦¨à§à¦¡à¦¸"
+ },
+ "CX": {
+ "name": "কà§à¦°à¦¿à¦¸à¦®à¦¾à¦¸ দà§à¦¬à§€à¦ª"
+ },
+ "HR": {
+ "name": "কà§à¦°à§‹à¦¯à¦¼à§‡à¦¶à¦¿à¦¯à¦¼à¦¾"
+ },
+ "GM": {
+ "name": "গামà§à¦¬à¦¿à¦¯à¦¼à¦¾"
+ },
+ "GN": {
+ "name": "গিনি"
+ },
+ "GW": {
+ "name": "গিনি-বিসাউ"
+ },
+ "GY": {
+ "name": "গিয়ানা"
+ },
+ "GP": {
+ "name": "গà§à¦¯à¦¼à¦¾à¦¦à§‡à¦²à§Œà¦ª"
+ },
+ "GU": {
+ "name": "গà§à¦¯à¦¼à¦¾à¦®"
+ },
+ "GT": {
+ "name": "গোয়াটিমালা"
+ },
+ "GA": {
+ "name": "গà§à¦¯à¦¾à¦¬à¦¨"
+ },
+ "GG": {
+ "name": "গà§à¦°à¦¾à¦žà§à¦œà¦¿"
+ },
+ "GL": {
+ "name": "গà§à¦°à§€à¦¨à¦²à§à¦¯à¦¾à¦¨à§à¦¡"
+ },
+ "GR": {
+ "name": "গà§à¦°à§€à¦¸"
+ },
+ "GD": {
+ "name": "গà§à¦°à§‡à¦¨à¦¾à¦¡à¦¾"
+ },
+ "GH": {
+ "name": "ঘানা"
+ },
+ "TD": {
+ "name": "চাদ"
+ },
+ "CL": {
+ "name": "চিলি"
+ },
+ "CN": {
+ "name": "চীন"
+ },
+ "CZ": {
+ "name": "চেক পà§à¦°à¦œà¦¾à¦¤à¦¨à§à¦¤à§à¦°"
+ },
+ "GE": {
+ "name": "জরà§à¦œà¦¿à¦¯à¦¼à¦¾"
+ },
+ "JO": {
+ "name": "জরà§à¦¡à¦¨"
+ },
+ "JP": {
+ "name": "জাপান"
+ },
+ "ZM": {
+ "name": "জামà§à¦¬à¦¿à¦¯à¦¼à¦¾"
+ },
+ "DE": {
+ "name": "জারà§à¦®à¦¾à¦¨à¦¿"
+ },
+ "JE": {
+ "name": "জারà§à¦¸à¦¿"
+ },
+ "DJ": {
+ "name": "জিবà§à¦¤à¦¿"
+ },
+ "GI": {
+ "name": "জিবà§à¦°à¦¾à¦²à§à¦Ÿà¦¾à¦°"
+ },
+ "ZW": {
+ "name": "জিমà§à¦¬à¦¾à¦¬à§‹à¦¯à¦¼à§‡"
+ },
+ "JM": {
+ "name": "জà§à¦¯à¦¾à¦®à¦¾à¦‡à¦•à¦¾"
+ },
+ "TV": {
+ "name": "টà§à¦­à¦¾à¦²à§"
+ },
+ "TK": {
+ "name": "টোকেলাউ"
+ },
+ "TG": {
+ "name": "টোগো"
+ },
+ "TO": {
+ "name": "টোঙà§à¦—া"
+ },
+ "TA": {
+ "name": "টà§à¦°à¦¿à¦¸à§à¦Ÿà¦¾à¦¨ ডা কà§à¦¨à¦¹à¦¾"
+ },
+ "DK": {
+ "name": "ডেনমারà§à¦•"
+ },
+ "DM": {
+ "name": "ডোমিনিকা"
+ },
+ "DO": {
+ "name": "ডোমেনিকান পà§à¦°à¦œà¦¾à¦¤à¦¨à§à¦¤à§à¦°"
+ },
+ "TW": {
+ "name": "তাইওয়ান"
+ },
+ "TJ": {
+ "name": "তাজিকসà§à¦¥à¦¾à¦¨"
+ },
+ "TZ": {
+ "name": "তাঞà§à¦œà¦¾à¦¨à¦¿à¦¯à¦¼à¦¾"
+ },
+ "TN": {
+ "name": "তিউনিশিয়া"
+ },
+ "TL": {
+ "name": "তিমà§à¦°-লেসà§à¦¤à§‡"
+ },
+ "TR": {
+ "name": "তà§à¦°à¦¸à§à¦•"
+ },
+ "TM": {
+ "name": "তà§à¦°à§à¦•à¦®à§‡à¦¨à¦¿à¦¸à§à¦¤à¦¾à¦¨"
+ },
+ "TC": {
+ "name": "তà§à¦°à§à¦•à¦¸ ও কাইকোস দà§à¦¬à§€à¦ªà¦ªà§à¦žà§à¦œ"
+ },
+ "TT": {
+ "name": "তà§à¦°à¦¿à¦¨à¦¿à¦¨à¦¾à¦¦ ও টোবà§à¦¯à¦¾à¦—ো"
+ },
+ "TH": {
+ "name": "থাইলà§à¦¯à¦¾à¦¨à§à¦¡"
+ },
+ "ZA": {
+ "name": "দকà§à¦·à¦¿à¦£ আফà§à¦°à¦¿à¦•à¦¾"
+ },
+ "KR": {
+ "name": "দকà§à¦·à¦¿à¦£ কোরিয়া"
+ },
+ "GS": {
+ "name": "দকà§à¦·à¦¿à¦£ জরà§à¦œà¦¿à¦¯à¦¼à¦¾ ও দকà§à¦·à¦¿à¦£ সà§à¦¯à¦¾à¦¨à§à¦¡à¦‰à¦‡à¦š দà§à¦¬à§€à¦ªà¦ªà§à¦žà§à¦œ"
+ },
+ "SS": {
+ "name": "দকà§à¦·à¦¿à¦¨ সà§à¦¦à¦¾à¦¨"
+ },
+ "DG": {
+ "name": "দিয়েগো গারà§à¦¸à¦¿à¦¯à¦¼à¦¾"
+ },
+ "NO": {
+ "name": "নরওয়ে"
+ },
+ "NE": {
+ "name": "নাইজার"
+ },
+ "NG": {
+ "name": "নাইজেরিয়া"
+ },
+ "NR": {
+ "name": "নাউরà§"
+ },
+ "NA": {
+ "name": "নামিবিয়া"
+ },
+ "NC": {
+ "name": "নিউ কà§à¦¯à¦¾à¦²à§‡à¦¡à§‹à¦¨à¦¿à¦¯à¦¼à¦¾"
+ },
+ "NZ": {
+ "name": "নিউজিলà§à¦¯à¦¾à¦¨à§à¦¡"
+ },
+ "NU": {
+ "name": "নিউয়ে"
+ },
+ "NI": {
+ "name": "নিকারাগà§à¦¯à¦¼à¦¾"
+ },
+ "GQ": {
+ "name": "নিরকà§à¦·à§€à¦¯à¦¼ গিনি"
+ },
+ "NF": {
+ "name": "নিরফোক দà§à¦¬à§€à¦ª"
+ },
+ "NL": {
+ "name": "নেদারলà§à¦¯à¦¾à¦¨à§à¦¡à¦¸"
+ },
+ "NP": {
+ "name": "নেপাল"
+ },
+ "PT": {
+ "name": "পরà§à¦¤à§à¦—াল"
+ },
+ "EH": {
+ "name": "পশà§à¦šà¦¿à¦® সাহারা"
+ },
+ "PK": {
+ "name": "পাকিসà§à¦¤à¦¾à¦¨"
+ },
+ "PA": {
+ "name": "পানামা"
+ },
+ "PG": {
+ "name": "পাপà§à¦¯à¦¼à¦¾ নিউ গিনি"
+ },
+ "PW": {
+ "name": "পালাউ"
+ },
+ "PN": {
+ "name": "পিটকেয়ারà§à¦¨ দà§à¦¬à§€à¦ªà¦ªà§à¦žà§à¦œ"
+ },
+ "PE": {
+ "name": "পিরà§"
+ },
+ "PR": {
+ "name": "পà§à¦¯à¦¼à§‡à¦°à§à¦¤à§‹ রিকো"
+ },
+ "PL": {
+ "name": "পোলà§à¦¯à¦¾à¦¨à§à¦¡"
+ },
+ "PY": {
+ "name": "পà§à¦¯à¦¾à¦°à¦¾à¦—à§à¦¯à¦¼à§‡"
+ },
+ "FK": {
+ "name": "ফকলà§à¦¯à¦¾à¦¨à§à¦¡ দà§à¦¬à§€à¦ªà¦ªà§à¦žà§à¦œ"
+ },
+ "GF": {
+ "name": "ফরাসী গায়ানা"
+ },
+ "TF": {
+ "name": "ফরাসী দকà§à¦·à¦¿à¦£à¦¾à¦žà§à¦šà¦²"
+ },
+ "PF": {
+ "name": "ফরাসী পলিনেশিয়া"
+ },
+ "FJ": {
+ "name": "ফিজি"
+ },
+ "FI": {
+ "name": "ফিনলà§à¦¯à¦¾à¦¨à§à¦¡"
+ },
+ "PH": {
+ "name": "ফিলিপাইন"
+ },
+ "PS": {
+ "name": "ফিলিসà§à¦¤à¦¿à¦¨ অঞà§à¦šà¦²à¦¸à¦®à§‚হ"
+ },
+ "FO": {
+ "name": "ফà§à¦¯à¦¾à¦°à¦“ দà§à¦¬à§€à¦ªà¦ªà§à¦žà§à¦œ"
+ },
+ "FR": {
+ "name": "ফà§à¦°à¦¾à¦¨à§à¦¸"
+ },
+ "BW": {
+ "name": "বতসোয়ানা"
+ },
+ "BA": {
+ "name": "বসনিয়া ও হারà§à¦œà§‡à¦—োভিনা"
+ },
+ "BD": {
+ "name": "বাংলাদেশ"
+ },
+ "BB": {
+ "name": "বারবাদোস"
+ },
+ "BM": {
+ "name": "বারমà§à¦¡à¦¾"
+ },
+ "BH": {
+ "name": "বাহরাইন"
+ },
+ "BS": {
+ "name": "বাহামা দà§à¦¬à§€à¦ªà¦ªà§à¦žà§à¦œ"
+ },
+ "BF": {
+ "name": "বà§à¦°à¦•à¦¿à¦¨à¦¾ ফাসো"
+ },
+ "BI": {
+ "name": "বà§à¦°à§à¦¨à§à¦¡à¦¿"
+ },
+ "BG": {
+ "name": "বà§à¦²à¦—েরিয়া"
+ },
+ "BJ": {
+ "name": "বেনিন"
+ },
+ "BE": {
+ "name": "বেলজিয়াম"
+ },
+ "BZ": {
+ "name": "বেলিজ"
+ },
+ "BY": {
+ "name": "বেলোরà§à¦¶à¦¿à¦¯à¦¼à¦¾"
+ },
+ "BO": {
+ "name": "বোলিভিয়া"
+ },
+ "BR": {
+ "name": "বà§à¦°à¦¾à¦œà¦¿à¦²"
+ },
+ "IO": {
+ "name": "বà§à¦°à¦¿à¦Ÿà¦¿à¦¶ ভারত মহাসাগরীয় অঞà§à¦šà¦²"
+ },
+ "VG": {
+ "name": "বà§à¦°à¦¿à¦Ÿà¦¿à¦¶ ভারà§à¦œà¦¿à¦¨ দà§à¦¬à§€à¦ªà¦ªà§à¦žà§à¦œ"
+ },
+ "BN": {
+ "name": "বà§à¦°à§à¦¨à§‡à¦‡"
+ },
+ "VU": {
+ "name": "ভানà§à¦¯à¦¼à¦¾à¦Ÿà§"
+ },
+ "IN": {
+ "name": "ভারত"
+ },
+ "VN": {
+ "name": "ভিয়েতনাম"
+ },
+ "BT": {
+ "name": "ভà§à¦Ÿà¦¾à¦¨"
+ },
+ "VE": {
+ "name": "ভেনেজà§à¦¯à¦¼à§‡à¦²à¦¾"
+ },
+ "VA": {
+ "name": "ভà§à¦¯à¦¾à¦Ÿà¦¿à¦•à¦¾à¦¨ সিটি"
+ },
+ "MN": {
+ "name": "মঙà§à¦—োলিয়া"
+ },
+ "CF": {
+ "name": "মধà§à¦¯ আফà§à¦°à¦¿à¦•à¦¾à¦° পà§à¦°à¦œà¦¾à¦¤à¦¨à§à¦¤à§à¦°"
+ },
+ "MS": {
+ "name": "মনà§à¦Ÿà¦¸à§‡à¦°à¦¾à¦Ÿ"
+ },
+ "ME": {
+ "name": "মনà§à¦Ÿà¦¿à¦¨à¦¿à¦—à§à¦°à§‹"
+ },
+ "MR": {
+ "name": "মরিতানিয়া"
+ },
+ "MU": {
+ "name": "মরিশাস"
+ },
+ "FM": {
+ "name": "মাইকà§à¦°à§‹à¦¨à§‡à¦¶à¦¿à¦¯à¦¼à¦¾"
+ },
+ "MG": {
+ "name": "মাদাগাসà§à¦•à¦¾à¦°"
+ },
+ "MM": {
+ "name": "মায়ানমার (বারà§à¦®à¦¾)"
+ },
+ "YT": {
+ "name": "মায়োতà§à¦¤à§‡"
+ },
+ "VI": {
+ "name": "মারà§à¦•à¦¿à¦¨ ভারà§à¦œà¦¿à¦¨ দà§à¦¬à§€à¦ªà¦ªà§à¦žà§à¦œ"
+ },
+ "US": {
+ "name": "মারà§à¦•à¦¿à¦¨ যà§à¦•à§à¦¤à¦°à¦¾à¦·à§à¦Ÿà§à¦°"
+ },
+ "MQ": {
+ "name": "মারà§à¦Ÿà¦¿à¦¨à¦¿à¦•"
+ },
+ "MH": {
+ "name": "মারà§à¦¶à¦¾à¦² দà§à¦¬à§€à¦ªà¦ªà§à¦žà§à¦œ"
+ },
+ "MV": {
+ "name": "মালদà§à¦¬à§€à¦ª"
+ },
+ "MY": {
+ "name": "মালয়েশিয়া"
+ },
+ "MW": {
+ "name": "মালাউই"
+ },
+ "ML": {
+ "name": "মালি"
+ },
+ "MT": {
+ "name": "মালà§à¦Ÿà¦¾"
+ },
+ "EG": {
+ "name": "মিশর"
+ },
+ "MX": {
+ "name": "মেকà§à¦¸à¦¿à¦•à§‹"
+ },
+ "MZ": {
+ "name": "মোজামà§à¦¬à¦¿à¦•"
+ },
+ "MC": {
+ "name": "মোনাকো"
+ },
+ "MA": {
+ "name": "মোরকà§à¦•à§‹"
+ },
+ "MD": {
+ "name": "মোলà§à¦¦à¦¾à¦­à¦¿à¦¯à¦¼à¦¾"
+ },
+ "MO": {
+ "name": "মà§à¦¯à¦¾à¦•à¦¾à¦“ à¦à¦¸ ঠআর চায়না"
+ },
+ "MK": {
+ "name": "মà§à¦¯à¦¾à¦¸à¦¾à¦¡à§‹à¦¨à¦¿à¦¯à¦¼à¦¾"
+ },
+ "GB": {
+ "name": "যà§à¦•à§à¦¤à¦°à¦¾à¦œà§à¦¯"
+ },
+ "UM": {
+ "name": "যà§à¦•à§à¦¤à¦°à¦¾à¦·à§à¦Ÿà§à¦°à§‡à¦° পারà§à¦¶à§à¦¬à¦¬à¦°à§à¦¤à§€ দà§à¦¬à§€à¦ªà¦ªà§à¦žà§à¦œ"
+ },
+ "RU": {
+ "name": "রাশিয়া"
+ },
+ "RE": {
+ "name": "রিইউনিয়ন"
+ },
+ "RO": {
+ "name": "রà§à¦®à¦¾à¦¨à¦¿à¦¯à¦¼à¦¾"
+ },
+ "RW": {
+ "name": "রà§à¦¯à¦¼à¦¾à¦¨à§à¦¡à¦¾"
+ },
+ "LR": {
+ "name": "লাইবেরিয়া"
+ },
+ "LA": {
+ "name": "লাওস"
+ },
+ "LU": {
+ "name": "লাকà§à¦¸à§‡à¦®à¦¬à¦¾à¦°à§à¦—"
+ },
+ "LV": {
+ "name": "লাতà§à¦­à¦¿à¦¯à¦¼à¦¾"
+ },
+ "LI": {
+ "name": "লিচেনসà§à¦Ÿà§‡à¦‡à¦¨"
+ },
+ "LT": {
+ "name": "লিথà§à¦¯à¦¼à¦¾à¦¨à¦¿à¦¯à¦¼à¦¾"
+ },
+ "LY": {
+ "name": "লিবিয়া"
+ },
+ "LB": {
+ "name": "লেবানন"
+ },
+ "LS": {
+ "name": "লেসোথো"
+ },
+ "LK": {
+ "name": "শà§à¦°à§€à¦²à¦™à§à¦•à¦¾"
+ },
+ "SK": {
+ "name": "শà§à¦²à§‹à¦­à¦¾à¦•à¦¿à¦¯à¦¼à¦¾"
+ },
+ "AE": {
+ "name": "সংযà§à¦•à§à¦¤ আরব আমিরাত"
+ },
+ "SB": {
+ "name": "সলোমন দà§à¦¬à§€à¦ªà¦ªà§à¦žà§à¦œ"
+ },
+ "CY": {
+ "name": "সাইপà§à¦°à¦¾à¦¸"
+ },
+ "ST": {
+ "name": "সাওটোমা ও পà§à¦°à¦¿à¦¨à§à¦¸à¦¿à¦ªà¦¿"
+ },
+ "SM": {
+ "name": "সান মারিনো"
+ },
+ "WS": {
+ "name": "সামোয়া"
+ },
+ "RS": {
+ "name": "সারà§à¦¬à¦¿à¦¯à¦¼à¦¾"
+ },
+ "SG": {
+ "name": "সিঙà§à¦—াপà§à¦°"
+ },
+ "SX": {
+ "name": "সিনà§à¦Ÿ মারà§à¦Ÿà§‡à¦¨"
+ },
+ "SL": {
+ "name": "সিয়েরালিওন"
+ },
+ "SY": {
+ "name": "সিরিয়া"
+ },
+ "SC": {
+ "name": "সিসিলি"
+ },
+ "CH": {
+ "name": "সà§à¦‡à¦œà¦¾à¦°à¦²à§à¦¯à¦¾à¦¨à§à¦¡"
+ },
+ "SE": {
+ "name": "সà§à¦‡à¦¡à§‡à¦¨"
+ },
+ "SD": {
+ "name": "সà§à¦¦à¦¾à¦¨"
+ },
+ "SR": {
+ "name": "সà§à¦°à¦¿à¦¨à¦¾à¦®"
+ },
+ "SN": {
+ "name": "সেনেগাল"
+ },
+ "KN": {
+ "name": "সেনà§à¦Ÿ কিটস ও নেভিস"
+ },
+ "PM": {
+ "name": "সেনà§à¦Ÿ পিয়ের ও মিকà§à¦¯à¦¼à§‡à¦²à¦¨"
+ },
+ "BL": {
+ "name": "সেনà§à¦Ÿ বারথেলিমি"
+ },
+ "VC": {
+ "name": "সেনà§à¦Ÿ ভিনসেনà§à¦Ÿ ও দà§à¦¯à¦¾ গà§à¦°à§‡à¦¨à¦¾à¦¡à¦¿à¦¨à¦¸"
+ },
+ "MF": {
+ "name": "সেনà§à¦Ÿ মারà§à¦Ÿà¦¿à¦¨"
+ },
+ "LC": {
+ "name": "সেনà§à¦Ÿ লà§à¦¸à¦¿à¦¯à¦¼à¦¾"
+ },
+ "SH": {
+ "name": "সেনà§à¦Ÿ হেলেনা"
+ },
+ "SO": {
+ "name": "সোমালিয়া"
+ },
+ "SZ": {
+ "name": "সোয়াজিলà§à¦¯à¦¾à¦¨à§à¦¡"
+ },
+ "SA": {
+ "name": "সৌদি আরব"
+ },
+ "ES": {
+ "name": "সà§à¦ªà§‡à¦¨"
+ },
+ "SJ": {
+ "name": "সà§à¦¬à¦¾à¦²à¦¬à¦¾à¦°à§à¦¡ ও জান মেয়েন"
+ },
+ "SI": {
+ "name": "সà§à¦²à§‹à¦­à¦¾à¦¨à¦¿à¦¯à¦¼à¦¾"
+ },
+ "HK": {
+ "name": "হংকং à¦à¦¸à¦à¦†à¦° চীনা"
+ },
+ "HN": {
+ "name": "হণà§à¦¡à§à¦°à¦¾à¦¸"
+ },
+ "HT": {
+ "name": "হাইতি"
+ },
+ "HU": {
+ "name": "হাঙà§à¦—েরি"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/country/bo.json b/library/intl/resources/country/bo.json
new file mode 100644
index 000000000..99d61cd20
--- /dev/null
+++ b/library/intl/resources/country/bo.json
@@ -0,0 +1,761 @@
+{
+ "AX": {
+ "name": "Ã…land Islands"
+ },
+ "AS": {
+ "name": "American Samoa"
+ },
+ "AC": {
+ "name": "Ascension Island"
+ },
+ "IO": {
+ "name": "British Indian Ocean Territory"
+ },
+ "VG": {
+ "name": "British Virgin Islands"
+ },
+ "IC": {
+ "name": "Canary Islands"
+ },
+ "CV": {
+ "name": "Cape Verde"
+ },
+ "BQ": {
+ "name": "Caribbean Netherlands"
+ },
+ "CF": {
+ "name": "Central African Republic"
+ },
+ "EA": {
+ "name": "Ceuta & Melilla"
+ },
+ "CX": {
+ "name": "Christmas Island"
+ },
+ "CC": {
+ "name": "Cocos (Keeling) Islands"
+ },
+ "KM": {
+ "name": "Comoros"
+ },
+ "CG": {
+ "name": "Congo - Brazzaville"
+ },
+ "CD": {
+ "name": "Congo - Kinshasa"
+ },
+ "CW": {
+ "name": "Curaçao"
+ },
+ "DG": {
+ "name": "Diego Garcia"
+ },
+ "GQ": {
+ "name": "Equatorial Guinea"
+ },
+ "FO": {
+ "name": "Faroe Islands"
+ },
+ "GF": {
+ "name": "French Guiana"
+ },
+ "PF": {
+ "name": "French Polynesia"
+ },
+ "TF": {
+ "name": "French Southern Territories"
+ },
+ "GL": {
+ "name": "Greenland"
+ },
+ "GP": {
+ "name": "Guadeloupe"
+ },
+ "GU": {
+ "name": "Guam"
+ },
+ "GG": {
+ "name": "Guernsey"
+ },
+ "HK": {
+ "name": "Hong Kong SAR China"
+ },
+ "IM": {
+ "name": "Isle of Man"
+ },
+ "JE": {
+ "name": "Jersey"
+ },
+ "XK": {
+ "name": "Kosovo"
+ },
+ "MO": {
+ "name": "Macau SAR China"
+ },
+ "MK": {
+ "name": "Macedonia"
+ },
+ "MQ": {
+ "name": "Martinique"
+ },
+ "YT": {
+ "name": "Mayotte"
+ },
+ "FM": {
+ "name": "Micronesia"
+ },
+ "MD": {
+ "name": "Moldova"
+ },
+ "ME": {
+ "name": "Montenegro"
+ },
+ "MS": {
+ "name": "Montserrat"
+ },
+ "NC": {
+ "name": "New Caledonia"
+ },
+ "NF": {
+ "name": "Norfolk Island"
+ },
+ "KP": {
+ "name": "North Korea"
+ },
+ "MP": {
+ "name": "Northern Mariana Islands"
+ },
+ "PS": {
+ "name": "Palestinian Territories"
+ },
+ "PN": {
+ "name": "Pitcairn Islands"
+ },
+ "PR": {
+ "name": "Puerto Rico"
+ },
+ "RE": {
+ "name": "Réunion"
+ },
+ "SX": {
+ "name": "Sint Maarten"
+ },
+ "GS": {
+ "name": "South Georgia & South Sandwich Islands"
+ },
+ "SS": {
+ "name": "South Sudan"
+ },
+ "BL": {
+ "name": "St. Barthélemy"
+ },
+ "MF": {
+ "name": "St. Martin"
+ },
+ "PM": {
+ "name": "St. Pierre & Miquelon"
+ },
+ "SJ": {
+ "name": "Svalbard & Jan Mayen"
+ },
+ "SZ": {
+ "name": "Swaziland"
+ },
+ "SY": {
+ "name": "Syria"
+ },
+ "TW": {
+ "name": "Taiwan"
+ },
+ "TJ": {
+ "name": "Tajikistan"
+ },
+ "TZ": {
+ "name": "Tanzania"
+ },
+ "TH": {
+ "name": "Thailand"
+ },
+ "TL": {
+ "name": "Timor-Leste"
+ },
+ "TG": {
+ "name": "Togo"
+ },
+ "TK": {
+ "name": "Tokelau"
+ },
+ "TO": {
+ "name": "Tonga"
+ },
+ "TT": {
+ "name": "Trinidad & Tobago"
+ },
+ "TA": {
+ "name": "Tristan da Cunha"
+ },
+ "TN": {
+ "name": "Tunisia"
+ },
+ "TM": {
+ "name": "Turkmenistan"
+ },
+ "TC": {
+ "name": "Turks & Caicos Islands"
+ },
+ "UM": {
+ "name": "U.S. Outlying Islands"
+ },
+ "VI": {
+ "name": "U.S. Virgin Islands"
+ },
+ "WF": {
+ "name": "Wallis & Futuna"
+ },
+ "EH": {
+ "name": "Western Sahara"
+ },
+ "QA": {
+ "name": "ཀ་à½à½±à½¢à¼"
+ },
+ "CM": {
+ "name": "ཀ་མེ་རུནà¼"
+ },
+ "KH": {
+ "name": "ཀམ་བོ་ཌི་ཡà¼"
+ },
+ "KI": {
+ "name": "ཀི་རི་བཱ་à½à½²à¼"
+ },
+ "KW": {
+ "name": "ཀུ་à½à½ºà½‘་རྒྱལ་à½à½–à¼"
+ },
+ "HR": {
+ "name": "ཀུརོ་ཤི་ཡà¼"
+ },
+ "CK": {
+ "name": "ཀཱུག གླིང་ཕྲེན་རྒྱལ་à½à½–à¼"
+ },
+ "CI": {
+ "name": "ཀོ་ཊེ་ཌི༠ཨི་à½à½¼à¼‹à½¢à½ºà¼"
+ },
+ "KR": {
+ "name": "ཀོ་རི་ཡ༠ལྷོ་མà¼"
+ },
+ "CO": {
+ "name": "ཀོ་ལོམ་བི་ཡà¼"
+ },
+ "CR": {
+ "name": "ཀོ་ས྄ཊ་རི་ཀà¼"
+ },
+ "KZ": {
+ "name": "à½à¼‹à½›à½±à½‚་སྟཱནà¼"
+ },
+ "CU": {
+ "name": "à½à¾±à½´à½ à½´à¼‹à½–à¼"
+ },
+ "KG": {
+ "name": "à½à½²à½¢à¼‹à½‚ིཛ་སྟཱནà¼"
+ },
+ "CA": {
+ "name": "à½à½ºà¼‹à½“་ཌà¼"
+ },
+ "KY": {
+ "name": "à½à½ºà¼‹à½˜à½ºà½“་གླིང་ཕྲནà¼"
+ },
+ "KE": {
+ "name": "à½à½ºà½“་ཉི་ཡà¼"
+ },
+ "GH": {
+ "name": "གྷ་ནà¼"
+ },
+ "GD": {
+ "name": "གྷ་རི་ན་ཌà¼"
+ },
+ "GM": {
+ "name": "གྷམ་བི་ཡà¼"
+ },
+ "GW": {
+ "name": "གྷི་ནི་ཡ་བིས྄་སོà¼"
+ },
+ "GN": {
+ "name": "གྷི་ནི་ཡà¼"
+ },
+ "GR": {
+ "name": "གྷི་རཱི་སིà¼"
+ },
+ "GY": {
+ "name": "གྷུ་ཡཱ་ནà¼"
+ },
+ "GT": {
+ "name": "གྷོ་ཊེ་མ་ལà¼"
+ },
+ "GA": {
+ "name": "གེ་བཽནà¼"
+ },
+ "CL": {
+ "name": "ཅི་ལིà¼"
+ },
+ "CZ": {
+ "name": "ཅཻག་སྤྱི་མà½à½´à½“་རྒྱལ་à½à½–à¼"
+ },
+ "TD": {
+ "name": "ཅཻཌà¼"
+ },
+ "GI": {
+ "name": "ཇིབ་རཱལ་ཊརà¼"
+ },
+ "GE": {
+ "name": "ཇོར་ཇི་ཡà¼"
+ },
+ "JO": {
+ "name": "ཇོར་ཌནà¼"
+ },
+ "DK": {
+ "name": "ཌེན་མཱརà¾à¼"
+ },
+ "DM": {
+ "name": "ཌོ་མིན་ནི་ཀà¼"
+ },
+ "DO": {
+ "name": "ཌོ་མིནནི་ཀན་སྤྱི་མà½à½´à½“་རྒྱལ་à½à½–à¼"
+ },
+ "TR": {
+ "name": "à½à½´à½¢à½€à½²à¼"
+ },
+ "TV": {
+ "name": "à½à½´à¼‹à½à¼‹à½£à½´à¼"
+ },
+ "GB": {
+ "name": "དབྱིན་ཇི་"
+ },
+ "NA": {
+ "name": "ན་མི་བི་ཡà¼"
+ },
+ "NE": {
+ "name": "ནའི་ཇརà¼"
+ },
+ "NG": {
+ "name": "ནཱའི་ཇི་རི་ཡà¼"
+ },
+ "NI": {
+ "name": "ནི་ཀ་ར་གུ་ཨà¼"
+ },
+ "NZ": {
+ "name": "ནིའུ་ཛི་ལན྄ཌà¼"
+ },
+ "NU": {
+ "name": "ནིའུ་à½à¼"
+ },
+ "WS": {
+ "name": "ནུ་བ་ས་མོ་འà¼"
+ },
+ "NO": {
+ "name": "ནོར་à½à½ºà¼"
+ },
+ "NR": {
+ "name": "ནཽ་རུà¼"
+ },
+ "PA": {
+ "name": "པ་ནཱ་མà¼"
+ },
+ "PG": {
+ "name": "པ་པུ་ཨ༠ནིའུ༠གྷི་ནིà¼"
+ },
+ "PW": {
+ "name": "པ་ལཽà¼"
+ },
+ "PK": {
+ "name": "པཀི་སྟཱནà¼"
+ },
+ "PY": {
+ "name": "པཱ་ར་གེà¼"
+ },
+ "PE": {
+ "name": "པེ་རུà¼"
+ },
+ "PL": {
+ "name": "པོ་ལནྜà¼"
+ },
+ "PT": {
+ "name": "པོར་à½à½´à¼‹à½‚ྷལà¼"
+ },
+ "FR": {
+ "name": "ཕ་རཱན་སིà¼"
+ },
+ "FK": {
+ "name": "ཕལà¾à¼‹à½£à½“ྜ་གླིང་ཕྲནà¼"
+ },
+ "FJ": {
+ "name": "ཕི་ཇིà¼"
+ },
+ "PH": {
+ "name": "ཕི་ལི་པིནས྄à¼"
+ },
+ "FI": {
+ "name": "ཕིན་ལན྄ཌà¼"
+ },
+ "BR": {
+ "name": "བ་རཱ་ཛིལà¼"
+ },
+ "BD": {
+ "name": "བངྒ་ལ་དེཤà¼"
+ },
+ "BM": {
+ "name": "བར་མུ་ཌà¼"
+ },
+ "NP": {
+ "name": "བར་ཡུལ་"
+ },
+ "BF": {
+ "name": "བརཀི་ན༠ཕསོà¼"
+ },
+ "BS": {
+ "name": "བྷཱ་མས྄à¼"
+ },
+ "BH": {
+ "name": "བྷཱ་རེནà¼"
+ },
+ "BB": {
+ "name": "བཱརྦ་ཌོས྄à¼"
+ },
+ "BJ": {
+ "name": "བཱེ་ནིནà¼"
+ },
+ "VN": {
+ "name": "བི་དི་ནམà¼"
+ },
+ "BN": {
+ "name": "བུ་རུ་ནེà¼"
+ },
+ "BI": {
+ "name": "བུ་རུན་ཌིà¼"
+ },
+ "BG": {
+ "name": "བུལ་ག་རི་ཡà¼"
+ },
+ "BZ": {
+ "name": "བེ་ལིཛà¼"
+ },
+ "BY": {
+ "name": "བེ་ལུ་རུ་སུà¼"
+ },
+ "BE": {
+ "name": "བེལ་ཇི་ཡམà¼"
+ },
+ "BO": {
+ "name": "བོ་ལི་à½à½²à½¡à¼"
+ },
+ "BW": {
+ "name": "བོཙ་à½à¼‹à½“à¼"
+ },
+ "BA": {
+ "name": "བོསྣི་ཡ་དང་ཧརྫོ་གོ་à½à½²à¼‹à½“à¼"
+ },
+ "MG": {
+ "name": "མ་དཱ་གྷསà¾à½±à½¢à¼"
+ },
+ "ML": {
+ "name": "མ་ལིà¼"
+ },
+ "MY": {
+ "name": "མ་ལེ་ཤི་ཡà¼"
+ },
+ "MT": {
+ "name": "མལ་ཊà¼"
+ },
+ "MV": {
+ "name": "མལ་དྭིབà¼"
+ },
+ "MW": {
+ "name": "མཱ་ལཱ་à½à½²à¼"
+ },
+ "MH": {
+ "name": "མཱར་ཤལ་གླིང་ཕྲེནà¼"
+ },
+ "MX": {
+ "name": "མེཀ་སི་ཀོà¼"
+ },
+ "MC": {
+ "name": "མོ་ན་ཀོà¼"
+ },
+ "MZ": {
+ "name": "མོ་ཛམ་བིགà¼"
+ },
+ "MA": {
+ "name": "མོ་རོ་ཀà¾à½¼à¼"
+ },
+ "MR": {
+ "name": "མཽ་རི་à½à¼‹à½“ི་ཡà¼"
+ },
+ "MU": {
+ "name": "མཽ་རིཤས྄à¼"
+ },
+ "JM": {
+ "name": "ཛ་མེ་ཀà¼"
+ },
+ "ZM": {
+ "name": "ཛམ་བི་ཡà¼"
+ },
+ "DJ": {
+ "name": "ཛི་བུ་à½à½²à¼"
+ },
+ "ZW": {
+ "name": "ཛིམ་བྷཱ་བེà¼"
+ },
+ "VU": {
+ "name": "à½à¼‹à½“ུ་ཨ་à½à½´à¼"
+ },
+ "VA": {
+ "name": "à½à½ºà¼‹à½Šà½²à¼‹à½€à½“à¼"
+ },
+ "VE": {
+ "name": "à½à½ºà¼‹à½“ི་ཛུའེ་ལà¼"
+ },
+ "DE": {
+ "name": "འཇར་མན་"
+ },
+ "MM": {
+ "name": "འབར་མà¼"
+ },
+ "BT": {
+ "name": "འབྲུག་ཡུལà¼"
+ },
+ "UA": {
+ "name": "ཡུ་ཀྲནà¼"
+ },
+ "UG": {
+ "name": "ཡུ་གན་ཌà¼"
+ },
+ "YE": {
+ "name": "ཡེ་མེནà¼"
+ },
+ "IN": {
+ "name": "རྒྱ་གར་"
+ },
+ "CN": {
+ "name": "རྒྱ་ནག"
+ },
+ "JP": {
+ "name": "རི་པིན་"
+ },
+ "RW": {
+ "name": "རུ་à½à½“་ཌà¼"
+ },
+ "RO": {
+ "name": "རོ་མཱ་ནིཡà¼"
+ },
+ "LU": {
+ "name": "ལཀ་ཛམ་བོརྒà¼"
+ },
+ "LV": {
+ "name": "ལà½à¼‹à½–ི་ཡà¼"
+ },
+ "ZA": {
+ "name": "ལྷོ་ ཨཕྲི་ཀà¼"
+ },
+ "AQ": {
+ "name": "ལྷོ་རྩེའི་མà½à½ à¼‹à½‚ླིང་à¼"
+ },
+ "LA": {
+ "name": "ལཱ་འོསà¼"
+ },
+ "LT": {
+ "name": "ལི་à½à½´à¼‹à½¨à½ºà¼‹à½“ི་ཡà¼"
+ },
+ "LY": {
+ "name": "ལི་བི་ཡà¼"
+ },
+ "LR": {
+ "name": "ལི་བེ་རི་ཡà¼"
+ },
+ "LS": {
+ "name": "ལེ་སོ་à½à½¼à¼"
+ },
+ "LI": {
+ "name": "ལེག་à½à½ºà½“་ཚིནà¼"
+ },
+ "LB": {
+ "name": "ལེབ་ནོནà¼"
+ },
+ "LK": {
+ "name": "ཤྲཱི་ལངà¾à¼‹à¼"
+ },
+ "ST": {
+ "name": "ས་འོ་à½à½¼à½‘་མད༠དང༌༠པ྄རིན་སི་པེà¼"
+ },
+ "SK": {
+ "name": "ས་ལཽ་à½à½€à¾±à¼"
+ },
+ "SI": {
+ "name": "ས་ལཽ་à½à½ºà¼‹à½“ི་ཡà¼"
+ },
+ "SM": {
+ "name": "སན་མེ་རི་ནོà¼"
+ },
+ "SC": {
+ "name": "སཱ་ཤཻལà¼"
+ },
+ "CY": {
+ "name": "སཱཡེ་པ་རས྄à¼"
+ },
+ "ES": {
+ "name": "སི་པནà¼"
+ },
+ "SG": {
+ "name": "སིངྒ་པུརà¼"
+ },
+ "SD": {
+ "name": "སུ་དཱནà¼"
+ },
+ "SR": {
+ "name": "སུ་རི་ནཱམà¼"
+ },
+ "SN": {
+ "name": "སེ་ནི་གྷལà¼"
+ },
+ "SL": {
+ "name": "སེ་ཡར་ར༠ལིའོནà¼"
+ },
+ "KN": {
+ "name": "སེནྚ༠ཀིཊྚས྄༠དང༌༠ནེ་བིས྄à¼"
+ },
+ "VC": {
+ "name": "སེནྚ༠à½à½²à½“་སན༠དང༌༠གྷིརིན་ཌིནà¼"
+ },
+ "LC": {
+ "name": "སེནྚ༠ལུ་ཤི་ཡà¼"
+ },
+ "SH": {
+ "name": "སེནྚ༠ཧེ་ལི་ནà¼"
+ },
+ "RS": {
+ "name": "སེར་བི་ཡà¼"
+ },
+ "SO": {
+ "name": "སོ་མཱལི་ཡà¼"
+ },
+ "SB": {
+ "name": "སོ་ལོ་མོན༠གླིང་ཕྲན་ཚོ་à½à½‚à¼"
+ },
+ "MN": {
+ "name": "སོག་ཡུལà¼"
+ },
+ "SA": {
+ "name": "སཽ་དྷི་ཨ་རཱ་བི་ཡà¼"
+ },
+ "HU": {
+ "name": "ཧངྒ་རིà¼"
+ },
+ "NL": {
+ "name": "ཧའོ་ལནà¼"
+ },
+ "CH": {
+ "name": "ཧྲུད་ཧྲིà¼"
+ },
+ "SE": {
+ "name": "ཧྲུའི་à½à½“à¼"
+ },
+ "HT": {
+ "name": "ཧེ་à½à½²à¼"
+ },
+ "HN": {
+ "name": "ཧོན་དུ་རས྄à¼"
+ },
+ "US": {
+ "name": "ཨ་མེ་རི་ཀà¼"
+ },
+ "IE": {
+ "name": "ཨ་ཡར་ལནཌà¼"
+ },
+ "AE": {
+ "name": "ཨ་རབ༠ཨི་མི་རཊ྄༠ཆིག་སྒྲིལ་རྒྱལ་à½à½–à¼"
+ },
+ "AW": {
+ "name": "ཨ་རུ་བà¼"
+ },
+ "IS": {
+ "name": "ཨ་ཨི་སི་ལནདà¼"
+ },
+ "AI": {
+ "name": "ཨང་གུའི་ལà¼"
+ },
+ "AO": {
+ "name": "ཨང་གཽ་ལà¼"
+ },
+ "AF": {
+ "name": "ཨཕ་ག་ནི་སྟཱནà¼"
+ },
+ "AZ": {
+ "name": "ཨཛར་བཡེ་ཇནà¼"
+ },
+ "AR": {
+ "name": "ཨར་ཇེན་ཊི་ནà¼"
+ },
+ "AM": {
+ "name": "ཨར་མེ་ནི་ཡà¼"
+ },
+ "DZ": {
+ "name": "ཨལ་ཇི་རི་ཡà¼"
+ },
+ "AL": {
+ "name": "ཨལ་བཱ་ནི་ཡà¼"
+ },
+ "AT": {
+ "name": "ཨསྟྲི་ཡà¼"
+ },
+ "AU": {
+ "name": "ཨསྟྲེ་ལི་ཡà¼"
+ },
+ "IT": {
+ "name": "ཨི་ཀྲར་ལི་"
+ },
+ "EC": {
+ "name": "ཨི་à½à¾­à¼‹à½Œà½¼à½¢à¼"
+ },
+ "EG": {
+ "name": "ཨི་ཇིབྚà¼"
+ },
+ "ET": {
+ "name": "ཨི་à½à½²à½ à½¼à¼‹à½”ི་ཡà¼"
+ },
+ "IL": {
+ "name": "ཨི་ཛ྄་རེལà¼"
+ },
+ "IQ": {
+ "name": "ཨི་རགà¼"
+ },
+ "IR": {
+ "name": "ཨི་རཱནà¼"
+ },
+ "ID": {
+ "name": "ཨིན་ཌོ་ནེ་ཤི་ཡà¼"
+ },
+ "EE": {
+ "name": "ཨིསྟོ་ནི་ཡà¼"
+ },
+ "UY": {
+ "name": "ཨུ་རུ་གྷེà¼"
+ },
+ "RU": {
+ "name": "ཨུ་རུ་སུ་"
+ },
+ "UZ": {
+ "name": "ཨུཛ་བེ་ཀིསྟཱནà¼"
+ },
+ "ER": {
+ "name": "ཨེ་རི་à½à¾²à½ºà¼‹à½¨à¼"
+ },
+ "AG": {
+ "name": "ཨེན་ཊི་གུ་དང་༠བྷར་བུ་ཌà¼"
+ },
+ "AD": {
+ "name": "ཨེན་ཌོ་རà¼"
+ },
+ "SV": {
+ "name": "ཨེལ༠སཱལ་à½à¼‹à½Œà½¼à½¢à¼"
+ },
+ "OM": {
+ "name": "ཨོ་མནà¼"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/country/br.json b/library/intl/resources/country/br.json
new file mode 100644
index 000000000..7bdcdbde5
--- /dev/null
+++ b/library/intl/resources/country/br.json
@@ -0,0 +1,761 @@
+{
+ "AF": {
+ "name": "Afghanistan"
+ },
+ "DE": {
+ "name": "Alamagn"
+ },
+ "AL": {
+ "name": "Albania"
+ },
+ "DZ": {
+ "name": "Aljeria"
+ },
+ "AD": {
+ "name": "Andorra"
+ },
+ "AO": {
+ "name": "Angola"
+ },
+ "AI": {
+ "name": "Anguilla"
+ },
+ "AQ": {
+ "name": "Antarktika"
+ },
+ "AG": {
+ "name": "Antigua ha Barbuda"
+ },
+ "CI": {
+ "name": "Aod an Olifant"
+ },
+ "AU": {
+ "name": "Aostralia"
+ },
+ "AT": {
+ "name": "Aostria"
+ },
+ "SA": {
+ "name": "Arabia Saoudat"
+ },
+ "AR": {
+ "name": "Arcʼhantina"
+ },
+ "AM": {
+ "name": "Armenia"
+ },
+ "AW": {
+ "name": "Aruba"
+ },
+ "AZ": {
+ "name": "Azerbaidjan"
+ },
+ "BS": {
+ "name": "Bahamas"
+ },
+ "BH": {
+ "name": "Bahrein"
+ },
+ "BD": {
+ "name": "Bangladesh"
+ },
+ "BB": {
+ "name": "Barbados"
+ },
+ "BY": {
+ "name": "Belarus"
+ },
+ "BE": {
+ "name": "Belgia"
+ },
+ "BZ": {
+ "name": "Belize"
+ },
+ "BJ": {
+ "name": "Benin"
+ },
+ "BM": {
+ "name": "Bermuda"
+ },
+ "BT": {
+ "name": "Bhoutan"
+ },
+ "BO": {
+ "name": "Bolivia"
+ },
+ "BA": {
+ "name": "Bosnia ha Herzegovina"
+ },
+ "BW": {
+ "name": "Botswana"
+ },
+ "BR": {
+ "name": "Brazil"
+ },
+ "BN": {
+ "name": "Brunei"
+ },
+ "BG": {
+ "name": "Bulgaria"
+ },
+ "BF": {
+ "name": "Burkina Faso"
+ },
+ "BI": {
+ "name": "Burundi"
+ },
+ "EA": {
+ "name": "Ceuta ha Melilla"
+ },
+ "CL": {
+ "name": "Chile"
+ },
+ "CR": {
+ "name": "Costa Rica"
+ },
+ "CW": {
+ "name": "Curaçao"
+ },
+ "DK": {
+ "name": "Danmark"
+ },
+ "DG": {
+ "name": "Diego Garcia"
+ },
+ "DJ": {
+ "name": "Djibouti"
+ },
+ "DM": {
+ "name": "Dominica"
+ },
+ "TF": {
+ "name": "Douaroù aostral Frañs"
+ },
+ "EC": {
+ "name": "Ecuador"
+ },
+ "EG": {
+ "name": "Egipt"
+ },
+ "AE": {
+ "name": "Emirelezhioù Arab Unanet"
+ },
+ "AC": {
+ "name": "Enez Ascension"
+ },
+ "CX": {
+ "name": "Enez Christmas"
+ },
+ "NF": {
+ "name": "Enez Norfolk"
+ },
+ "PN": {
+ "name": "Enez Pitcairn"
+ },
+ "IM": {
+ "name": "Enez Vanav"
+ },
+ "ER": {
+ "name": "Eritrea"
+ },
+ "EE": {
+ "name": "Estonia"
+ },
+ "ET": {
+ "name": "Etiopia"
+ },
+ "FJ": {
+ "name": "Fidji"
+ },
+ "PH": {
+ "name": "Filipinez"
+ },
+ "FI": {
+ "name": "Finland"
+ },
+ "FR": {
+ "name": "Frañs"
+ },
+ "GA": {
+ "name": "Gabon"
+ },
+ "GM": {
+ "name": "Gambia"
+ },
+ "GH": {
+ "name": "Ghana"
+ },
+ "GN": {
+ "name": "Ginea"
+ },
+ "GQ": {
+ "name": "Ginea ar Cʼheheder"
+ },
+ "GW": {
+ "name": "Ginea-Bissau"
+ },
+ "GD": {
+ "name": "Grenada"
+ },
+ "GR": {
+ "name": "Gres"
+ },
+ "GL": {
+ "name": "Greunland"
+ },
+ "GU": {
+ "name": "Guam"
+ },
+ "GT": {
+ "name": "Guatemala"
+ },
+ "GY": {
+ "name": "Guyana"
+ },
+ "GP": {
+ "name": "Gwadeloup"
+ },
+ "GG": {
+ "name": "Gwernenez"
+ },
+ "GF": {
+ "name": "Gwiana cʼhall"
+ },
+ "HT": {
+ "name": "Haiti"
+ },
+ "HN": {
+ "name": "Honduras"
+ },
+ "HK": {
+ "name": "Hong Kong RMD Sina"
+ },
+ "HU": {
+ "name": "Hungaria"
+ },
+ "IN": {
+ "name": "India"
+ },
+ "ID": {
+ "name": "Indonezia"
+ },
+ "AX": {
+ "name": "Inizi Ã…land"
+ },
+ "KY": {
+ "name": "Inizi Cayman"
+ },
+ "CK": {
+ "name": "Inizi Cook"
+ },
+ "UM": {
+ "name": "Inizi diabell ar Stadoù-Unanet"
+ },
+ "FO": {
+ "name": "Inizi Faero"
+ },
+ "FK": {
+ "name": "Inizi Falkland"
+ },
+ "GS": {
+ "name": "Inizi Georgia ar Su hag Inizi Sandwich ar Su"
+ },
+ "VI": {
+ "name": "Inizi Gwercʼh ar Stadoù-Unanet"
+ },
+ "VG": {
+ "name": "Inizi Gwercʼh Breizh-Veur"
+ },
+ "IC": {
+ "name": "Inizi Kanariez"
+ },
+ "CC": {
+ "name": "Inizi Kokoz"
+ },
+ "MP": {
+ "name": "Inizi Mariana an Norzh"
+ },
+ "MH": {
+ "name": "Inizi Marshall"
+ },
+ "TC": {
+ "name": "Inizi Turks ha Caicos"
+ },
+ "IR": {
+ "name": "Iran"
+ },
+ "IQ": {
+ "name": "Iraq"
+ },
+ "IS": {
+ "name": "Island"
+ },
+ "IL": {
+ "name": "Israel"
+ },
+ "IT": {
+ "name": "Italia"
+ },
+ "IE": {
+ "name": "Iwerzhon"
+ },
+ "NL": {
+ "name": "Izelvroioù"
+ },
+ "JM": {
+ "name": "Jamaika"
+ },
+ "JP": {
+ "name": "Japan"
+ },
+ "JE": {
+ "name": "Jerzenez"
+ },
+ "GI": {
+ "name": "Jibraltar"
+ },
+ "JO": {
+ "name": "Jordania"
+ },
+ "GE": {
+ "name": "Jorjia"
+ },
+ "CV": {
+ "name": "Kab Glas"
+ },
+ "NC": {
+ "name": "Kaledonia Nevez"
+ },
+ "KH": {
+ "name": "Kambodja"
+ },
+ "CM": {
+ "name": "Kameroun"
+ },
+ "CA": {
+ "name": "Kanada"
+ },
+ "KZ": {
+ "name": "Kazakstan"
+ },
+ "KE": {
+ "name": "Kenya"
+ },
+ "CY": {
+ "name": "Kiprenez"
+ },
+ "KI": {
+ "name": "Kiribati"
+ },
+ "CO": {
+ "name": "Kolombia"
+ },
+ "KM": {
+ "name": "Komorez"
+ },
+ "CG": {
+ "name": "Kongo - Brazzaville"
+ },
+ "CD": {
+ "name": "Kongo - Kinshasa"
+ },
+ "KP": {
+ "name": "Korea an Norzh"
+ },
+ "KR": {
+ "name": "Korea ar Su"
+ },
+ "XK": {
+ "name": "Kosovo"
+ },
+ "KW": {
+ "name": "Koweit"
+ },
+ "HR": {
+ "name": "Kroatia"
+ },
+ "CU": {
+ "name": "Kuba"
+ },
+ "KG": {
+ "name": "Kyrgyzstan"
+ },
+ "LA": {
+ "name": "Laos"
+ },
+ "LV": {
+ "name": "Latvia"
+ },
+ "LS": {
+ "name": "Lesotho"
+ },
+ "LB": {
+ "name": "Liban"
+ },
+ "LR": {
+ "name": "Liberia"
+ },
+ "LY": {
+ "name": "Libia"
+ },
+ "LI": {
+ "name": "Liechtenstein"
+ },
+ "LT": {
+ "name": "Lituania"
+ },
+ "LU": {
+ "name": "Luksembourg"
+ },
+ "MO": {
+ "name": "Macau RMD Sina"
+ },
+ "MG": {
+ "name": "Madagaskar"
+ },
+ "MK": {
+ "name": "Makedonia"
+ },
+ "MW": {
+ "name": "Malawi"
+ },
+ "MY": {
+ "name": "Malaysia"
+ },
+ "MV": {
+ "name": "Maldivez"
+ },
+ "ML": {
+ "name": "Mali"
+ },
+ "MT": {
+ "name": "Malta"
+ },
+ "MR": {
+ "name": "Maouritania"
+ },
+ "MA": {
+ "name": "Maroko"
+ },
+ "MQ": {
+ "name": "Martinik"
+ },
+ "YT": {
+ "name": "Mayotte"
+ },
+ "MX": {
+ "name": "Mecʼhiko"
+ },
+ "FM": {
+ "name": "Mikronezia"
+ },
+ "MD": {
+ "name": "Moldova"
+ },
+ "MC": {
+ "name": "Monaco"
+ },
+ "MN": {
+ "name": "Mongolia"
+ },
+ "ME": {
+ "name": "Montenegro"
+ },
+ "MS": {
+ "name": "Montserrat"
+ },
+ "MU": {
+ "name": "Moris"
+ },
+ "MZ": {
+ "name": "Mozambik"
+ },
+ "MM": {
+ "name": "Myanmar (Birmania)"
+ },
+ "NA": {
+ "name": "Namibia"
+ },
+ "NR": {
+ "name": "Nauru"
+ },
+ "BQ": {
+ "name": "Nederlandat Karib"
+ },
+ "NP": {
+ "name": "Nepal"
+ },
+ "NI": {
+ "name": "Nicaragua"
+ },
+ "NE": {
+ "name": "Niger"
+ },
+ "NG": {
+ "name": "Nigeria"
+ },
+ "NU": {
+ "name": "Niue"
+ },
+ "NO": {
+ "name": "Norvegia"
+ },
+ "OM": {
+ "name": "Oman"
+ },
+ "UG": {
+ "name": "Ouganda"
+ },
+ "UZ": {
+ "name": "Ouzbekistan"
+ },
+ "PK": {
+ "name": "Pakistan"
+ },
+ "PW": {
+ "name": "Palau"
+ },
+ "PA": {
+ "name": "Panamá"
+ },
+ "PG": {
+ "name": "Papoua Ginea-Nevez"
+ },
+ "PY": {
+ "name": "Paraguay"
+ },
+ "PE": {
+ "name": "Perou"
+ },
+ "PF": {
+ "name": "Polinezia Cʼhall"
+ },
+ "PL": {
+ "name": "Polonia"
+ },
+ "PT": {
+ "name": "Portugal"
+ },
+ "PR": {
+ "name": "Puerto Rico"
+ },
+ "QA": {
+ "name": "Qatar"
+ },
+ "DO": {
+ "name": "Republik Dominikan"
+ },
+ "CF": {
+ "name": "Republik Kreizafrikan"
+ },
+ "CZ": {
+ "name": "Republik Tchek"
+ },
+ "RE": {
+ "name": "Reünion"
+ },
+ "GB": {
+ "name": "Rouantelezh-Unanet"
+ },
+ "RO": {
+ "name": "Roumania"
+ },
+ "RU": {
+ "name": "Rusia"
+ },
+ "RW": {
+ "name": "Rwanda"
+ },
+ "EH": {
+ "name": "Sahara ar Cʼhornôg"
+ },
+ "BL": {
+ "name": "Saint Barthélemy"
+ },
+ "KN": {
+ "name": "Saint Kitts ha Nevis"
+ },
+ "LC": {
+ "name": "Saint Lucia"
+ },
+ "MF": {
+ "name": "Saint Martin"
+ },
+ "SH": {
+ "name": "Saint-Helena"
+ },
+ "SB": {
+ "name": "Salomon"
+ },
+ "SV": {
+ "name": "Salvador"
+ },
+ "WS": {
+ "name": "Samoa"
+ },
+ "AS": {
+ "name": "Samoa Amerikan"
+ },
+ "SM": {
+ "name": "San Marino"
+ },
+ "VC": {
+ "name": "Sant Visant hag ar Grenadinez"
+ },
+ "PM": {
+ "name": "Sant-Pêr-ha-Mikelon"
+ },
+ "ST": {
+ "name": "São Tomé ha Príncipe"
+ },
+ "SC": {
+ "name": "Sechelez"
+ },
+ "SN": {
+ "name": "Senegal"
+ },
+ "RS": {
+ "name": "Serbia"
+ },
+ "SL": {
+ "name": "Sierra Leone"
+ },
+ "CN": {
+ "name": "Sina"
+ },
+ "SG": {
+ "name": "Singapour"
+ },
+ "SX": {
+ "name": "Sint Maarten"
+ },
+ "SY": {
+ "name": "Siria"
+ },
+ "SK": {
+ "name": "Slovakia"
+ },
+ "SI": {
+ "name": "Slovenia"
+ },
+ "SO": {
+ "name": "Somalia"
+ },
+ "SD": {
+ "name": "Soudan"
+ },
+ "ES": {
+ "name": "Spagn"
+ },
+ "LK": {
+ "name": "Sri Lanka"
+ },
+ "US": {
+ "name": "Stadoù-Unanet"
+ },
+ "ZA": {
+ "name": "Suafrika"
+ },
+ "CH": {
+ "name": "Suis"
+ },
+ "SR": {
+ "name": "Surinam"
+ },
+ "SS": {
+ "name": "Susoudan"
+ },
+ "SJ": {
+ "name": "Svalbard"
+ },
+ "SE": {
+ "name": "Sveden"
+ },
+ "SZ": {
+ "name": "Swaziland"
+ },
+ "TJ": {
+ "name": "Tadjikistan"
+ },
+ "TW": {
+ "name": "Taiwan"
+ },
+ "TZ": {
+ "name": "Tanzania"
+ },
+ "TD": {
+ "name": "Tchad"
+ },
+ "TH": {
+ "name": "Thailand"
+ },
+ "TL": {
+ "name": "Timor-Leste"
+ },
+ "IO": {
+ "name": "Tiriad breizhveurat Meurvor Indez"
+ },
+ "PS": {
+ "name": "Tiriadoù Palestina"
+ },
+ "TG": {
+ "name": "Togo"
+ },
+ "TK": {
+ "name": "Tokelau"
+ },
+ "TO": {
+ "name": "Tonga"
+ },
+ "TT": {
+ "name": "Trinidad ha Tobago"
+ },
+ "TA": {
+ "name": "Tristan da Cunha"
+ },
+ "TN": {
+ "name": "Tunizia"
+ },
+ "TR": {
+ "name": "Turkia"
+ },
+ "TM": {
+ "name": "Turkmenistan"
+ },
+ "TV": {
+ "name": "Tuvalu"
+ },
+ "UA": {
+ "name": "Ukraina"
+ },
+ "UY": {
+ "name": "Uruguay"
+ },
+ "VU": {
+ "name": "Vanuatu"
+ },
+ "VA": {
+ "name": "Vatikan"
+ },
+ "VE": {
+ "name": "Venezuela"
+ },
+ "VN": {
+ "name": "Viêt Nam"
+ },
+ "WF": {
+ "name": "Wallis ha Futuna"
+ },
+ "YE": {
+ "name": "Yemen"
+ },
+ "ZM": {
+ "name": "Zambia"
+ },
+ "NZ": {
+ "name": "Zeland-Nevez"
+ },
+ "ZW": {
+ "name": "Zimbabwe"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/country/brx.json b/library/intl/resources/country/brx.json
new file mode 100644
index 000000000..772221ec7
--- /dev/null
+++ b/library/intl/resources/country/brx.json
@@ -0,0 +1,761 @@
+{
+ "AC": {
+ "name": "Ascension Island"
+ },
+ "IC": {
+ "name": "Canary Islands"
+ },
+ "BQ": {
+ "name": "Caribbean Netherlands"
+ },
+ "EA": {
+ "name": "Ceuta & Melilla"
+ },
+ "CW": {
+ "name": "Curaçao"
+ },
+ "DG": {
+ "name": "Diego Garcia"
+ },
+ "XK": {
+ "name": "Kosovo"
+ },
+ "SX": {
+ "name": "Sint Maarten"
+ },
+ "SS": {
+ "name": "South Sudan"
+ },
+ "TA": {
+ "name": "Tristan da Cunha"
+ },
+ "AO": {
+ "name": "अंगोला"
+ },
+ "AZ": {
+ "name": "अज़रबैजान"
+ },
+ "AQ": {
+ "name": "अंटारà¥à¤•à¤Ÿà¤¿à¤•à¤¾"
+ },
+ "AF": {
+ "name": "अफ़ग़ानिसà¥à¤¤à¤¾à¤¨"
+ },
+ "AS": {
+ "name": "अमरिकी समोआ"
+ },
+ "AW": {
+ "name": "अरूबा"
+ },
+ "AR": {
+ "name": "अरà¥à¤œà¥‡à¤£à¥à¤Ÿà¤¿à¤¨à¤¾"
+ },
+ "DZ": {
+ "name": "अलà¥à¤œà¥€à¤°à¤¿à¤¯à¤¾"
+ },
+ "AL": {
+ "name": "अलà¥à¤¬à¤¾à¤¨à¤¿à¤¯à¤¾"
+ },
+ "IS": {
+ "name": "आइसलैंड"
+ },
+ "IM": {
+ "name": "आईल ऑफ़ मैन"
+ },
+ "CI": {
+ "name": "आईवरी कोसà¥à¤Ÿ"
+ },
+ "IE": {
+ "name": "आयरलैंड"
+ },
+ "AM": {
+ "name": "आरà¥à¤®à¥‡à¤¨à¤¿à¤¯à¤¾"
+ },
+ "AX": {
+ "name": "आलाà¤à¤¡ दà¥à¤µà¥€à¤ª"
+ },
+ "GQ": {
+ "name": "इकà¥à¤µà¥‡à¤Ÿà¥‹à¤°à¤¿à¤¯à¤² गिनी"
+ },
+ "IT": {
+ "name": "इटली"
+ },
+ "ID": {
+ "name": "इंडोनेशिया"
+ },
+ "ET": {
+ "name": "इथिओपिया"
+ },
+ "IL": {
+ "name": "इसà¥à¤°à¤¾à¤‡à¤²"
+ },
+ "IQ": {
+ "name": "ईराक़"
+ },
+ "IR": {
+ "name": "ईरान"
+ },
+ "UZ": {
+ "name": "उज़बेकिसà¥à¤¤à¤¾à¤¨"
+ },
+ "KP": {
+ "name": "उतà¥à¤¤à¤° कोरिया"
+ },
+ "MP": {
+ "name": "उतà¥à¤¤à¤°à¥€ मारियाना दà¥à¤µà¥€à¤ª"
+ },
+ "AD": {
+ "name": "à¤à¤¨à¥à¤¡à¥‹à¤°à¤¾"
+ },
+ "SV": {
+ "name": "à¤à¤² सालà¥à¤µà¤¾à¤¡à¥‹à¤°"
+ },
+ "EC": {
+ "name": "à¤à¤•à¥à¤µà¤¾à¤¡à¥‹à¤°"
+ },
+ "AI": {
+ "name": "à¤à¤‚गीला"
+ },
+ "AG": {
+ "name": "à¤à¤¨à¥à¤Ÿà¤¿à¤—à¥à¤† à¤à¤µà¤‚ बारबूडा"
+ },
+ "ER": {
+ "name": "à¤à¤°à¤¿à¤Ÿà¥à¤°à¤¿à¤¯à¤¾"
+ },
+ "EE": {
+ "name": "à¤à¤¸à¥à¤Ÿà¥‹à¤¨à¤¿à¤¯à¤¾"
+ },
+ "AT": {
+ "name": "ऑसà¥à¤Ÿà¥à¤°à¤¿à¤¯à¤¾"
+ },
+ "AU": {
+ "name": "ऑसà¥à¤Ÿà¥à¤°à¥‡à¤²à¤¿à¤¯à¤¾"
+ },
+ "OM": {
+ "name": "ओमान"
+ },
+ "KZ": {
+ "name": "कज़ाखसà¥à¤¤à¤¾à¤¨"
+ },
+ "QA": {
+ "name": "क़तार"
+ },
+ "KH": {
+ "name": "कमà¥à¤¬à¥‹à¤¡à¤¿à¤¯à¤¾"
+ },
+ "KI": {
+ "name": "किरिबाती"
+ },
+ "KG": {
+ "name": "किरà¥à¤—िज़"
+ },
+ "CK": {
+ "name": "कà¥à¤• दà¥à¤µà¥€à¤ª"
+ },
+ "KW": {
+ "name": "कà¥à¤µà¥ˆà¤¤"
+ },
+ "KE": {
+ "name": "केनà¥à¤¯à¤¾"
+ },
+ "KY": {
+ "name": "केमैन दà¥à¤µà¥€à¤ª"
+ },
+ "CA": {
+ "name": "कैनाडा"
+ },
+ "CV": {
+ "name": "कैप वेरà¥à¤¦à¥‡"
+ },
+ "CD": {
+ "name": "कॉंगो किनशासा"
+ },
+ "CG": {
+ "name": "कॉंगो बà¥à¤°à¤¾à¤œà¤¼à¥à¤œà¤¼à¤¾à¤µà¥€à¤²"
+ },
+ "CC": {
+ "name": "कोकोस दà¥à¤µà¥€à¤ª"
+ },
+ "CM": {
+ "name": "कोमेरान"
+ },
+ "KM": {
+ "name": "कोमोरोज़"
+ },
+ "CO": {
+ "name": "कोलमà¥à¤¬à¤¿à¤¯à¤¾"
+ },
+ "CR": {
+ "name": "कोसà¥à¤Ÿà¤¾à¤°à¥€à¤•à¤¾"
+ },
+ "CU": {
+ "name": "कà¥à¤¯à¥‚बा"
+ },
+ "CX": {
+ "name": "कà¥à¤°à¤¿à¤¸à¥à¤®à¤¸ दà¥à¤µà¥€à¤ª"
+ },
+ "HR": {
+ "name": "कà¥à¤°à¥‹à¤à¤¶à¤¿à¤¯à¤¾"
+ },
+ "GM": {
+ "name": "गामà¥à¤¬à¤¿à¤¯à¤¾"
+ },
+ "GN": {
+ "name": "गिनी"
+ },
+ "GW": {
+ "name": "गीनी-बिसाउ"
+ },
+ "GU": {
+ "name": "गà¥à¤†à¤®"
+ },
+ "GY": {
+ "name": "गà¥à¤¯à¤¾à¤¨à¤¾"
+ },
+ "GG": {
+ "name": "गेरà¥à¤¨à¤¸à¥‡"
+ },
+ "GA": {
+ "name": "गैबॉन"
+ },
+ "GT": {
+ "name": "गोतेदाला"
+ },
+ "GL": {
+ "name": "गà¥à¤°à¥€à¤¨à¤²à¥ˆà¤£à¥à¤¡"
+ },
+ "GR": {
+ "name": "गà¥à¤°à¥€à¤¸"
+ },
+ "GD": {
+ "name": "गà¥à¤°à¥‡à¤¨à¤¡à¤¾"
+ },
+ "GP": {
+ "name": "गà¥à¤µà¤¾à¤¦à¤²à¥à¤ª"
+ },
+ "GH": {
+ "name": "घाना"
+ },
+ "TD": {
+ "name": "चाड"
+ },
+ "CL": {
+ "name": "चिली"
+ },
+ "CN": {
+ "name": "चीन"
+ },
+ "CZ": {
+ "name": "चेक गणराजà¥à¤¯"
+ },
+ "JM": {
+ "name": "जमाइका"
+ },
+ "DE": {
+ "name": "जरà¥à¤®à¤¨à¥€"
+ },
+ "JE": {
+ "name": "जरà¥à¤¸à¥€"
+ },
+ "JP": {
+ "name": "जापान"
+ },
+ "ZM": {
+ "name": "ज़ामà¥à¤¬à¤¿à¤¯à¤¾"
+ },
+ "GI": {
+ "name": "जिबà¥à¤°à¤¾à¤²à¥à¤Ÿà¤°"
+ },
+ "ZW": {
+ "name": "ज़ीमà¥à¤¬à¤¾à¤¬à¥à¤µà¥‡"
+ },
+ "GE": {
+ "name": "जॉरà¥à¤œà¤¿à¤¯à¤¾"
+ },
+ "JO": {
+ "name": "जॉरà¥à¤¡à¤¨"
+ },
+ "TO": {
+ "name": "टॉंगा"
+ },
+ "TK": {
+ "name": "टोकेलौ"
+ },
+ "TG": {
+ "name": "टोगो"
+ },
+ "TT": {
+ "name": "टà¥à¤°à¤¿à¤¨à¤¿à¤¡à¤¾à¤¡ à¤à¤µà¤‚ टोबैगो"
+ },
+ "DK": {
+ "name": "डेनमारà¥à¤•"
+ },
+ "DO": {
+ "name": "डोमिनिकन गणराजà¥à¤¯"
+ },
+ "DM": {
+ "name": "डोमिनिका"
+ },
+ "TZ": {
+ "name": "तंज़ानिया"
+ },
+ "TW": {
+ "name": "ताइवान"
+ },
+ "TJ": {
+ "name": "ताजिकिसà¥à¤¤à¤¾à¤¨"
+ },
+ "TM": {
+ "name": "तà¥à¤°à¥à¤•à¤®à¥‡à¤¨à¥€à¤¸à¥à¤¤à¤¾à¤¨"
+ },
+ "TR": {
+ "name": "तà¥à¤°à¥à¤•à¥€"
+ },
+ "TC": {
+ "name": "तà¥à¤°à¥à¤•à¥€ à¤à¤µà¤‚ कैकोज़ दà¥à¤µà¥€à¤ª"
+ },
+ "TV": {
+ "name": "तà¥à¤µà¤¾à¤²à¥"
+ },
+ "TN": {
+ "name": "तà¥à¤¯à¥à¤¨à¤¿à¤¶à¤¿à¤¯à¤¾"
+ },
+ "TH": {
+ "name": "थाइलैणà¥à¤¡"
+ },
+ "ZA": {
+ "name": "दकà¥à¤·à¤¿à¤£ अफà¥à¤°à¥€à¤•à¤¾"
+ },
+ "KR": {
+ "name": "दकà¥à¤·à¤¿à¤£ कोरिया"
+ },
+ "GS": {
+ "name": "दकà¥à¤·à¤¿à¤£ जोरà¥à¤œà¤¿à¤¯à¤¾ à¤à¤µà¤‚ दकà¥à¤·à¤¿à¤£ सैंडवीच दà¥à¤µà¥€à¤ª"
+ },
+ "DJ": {
+ "name": "दà¥à¤œà¤¿à¤¬à¥‚ती"
+ },
+ "NG": {
+ "name": "नाइजीरिया"
+ },
+ "NE": {
+ "name": "नाइजेर"
+ },
+ "NR": {
+ "name": "नाउरू"
+ },
+ "NA": {
+ "name": "नामीबिया"
+ },
+ "NI": {
+ "name": "निकारागà¥à¤†"
+ },
+ "NU": {
+ "name": "नीयूà¤"
+ },
+ "NL": {
+ "name": "नेदरलैणà¥à¤¡"
+ },
+ "NP": {
+ "name": "नेपाल"
+ },
+ "NF": {
+ "name": "नॉरफ़ॉक दà¥à¤µà¥€à¤ª"
+ },
+ "NO": {
+ "name": "नॉरà¥à¤µà¥‡"
+ },
+ "NC": {
+ "name": "नà¥à¤¯à¥‚ कैलेडोनिया"
+ },
+ "NZ": {
+ "name": "नà¥à¤¯à¥‚ज़ीलैंड"
+ },
+ "PA": {
+ "name": "पनामा"
+ },
+ "PW": {
+ "name": "पलाऊ"
+ },
+ "EH": {
+ "name": "पशà¥à¤šà¤¿à¤®à¥€ सहारा"
+ },
+ "PK": {
+ "name": "पाकिसà¥à¤¤à¤¾à¤¨"
+ },
+ "PG": {
+ "name": "पापà¥à¤† नà¥à¤¯à¥‚ गिनी"
+ },
+ "PY": {
+ "name": "पारागà¥à¤"
+ },
+ "PN": {
+ "name": "पिटकेरà¥à¤¨"
+ },
+ "PR": {
+ "name": "पà¥à¤à¤°à¥à¤Ÿà¥‹ रीको"
+ },
+ "PT": {
+ "name": "पà¥à¤°à¥à¤¤à¤—ाल"
+ },
+ "TL": {
+ "name": "पूरà¥à¤µà¥€ तिमोर"
+ },
+ "PE": {
+ "name": "पेरू"
+ },
+ "PL": {
+ "name": "पोलैणà¥à¤¡"
+ },
+ "FO": {
+ "name": "फरो दà¥à¤µà¥€à¤ª"
+ },
+ "FJ": {
+ "name": "फिजी"
+ },
+ "FI": {
+ "name": "फिनलैंड"
+ },
+ "PS": {
+ "name": "फ़िलिसà¥à¤¤à¥€à¤¨"
+ },
+ "PH": {
+ "name": "फिलीपिनà¥à¤¸"
+ },
+ "FK": {
+ "name": "फ़ॉलà¥à¤•à¤²à¥ˆà¤‚ड दà¥à¤µà¥€à¤ª"
+ },
+ "FR": {
+ "name": "फà¥à¤°à¤¾à¤à¤¸"
+ },
+ "TF": {
+ "name": "फà¥à¤°à¤¾à¤à¤¸à¥€à¤¸à¥€ उतà¥à¤¤à¤°à¥€ कà¥à¤·à¥‡à¤¤à¥à¤°à¥‹à¤‚"
+ },
+ "GF": {
+ "name": "फà¥à¤°à¤¾à¤à¤¸à¥€à¤¸à¥€ गिआना"
+ },
+ "PF": {
+ "name": "फà¥à¤°à¤¾à¤à¤¸à¥€à¤¸à¥€ पॉलिनीशिया"
+ },
+ "BD": {
+ "name": "बंगलादेश"
+ },
+ "BM": {
+ "name": "बरमूडा"
+ },
+ "BG": {
+ "name": "बलà¥à¤—ैरिया"
+ },
+ "BH": {
+ "name": "बहरैन"
+ },
+ "BS": {
+ "name": "बहामा"
+ },
+ "BB": {
+ "name": "बारबाडोस"
+ },
+ "BI": {
+ "name": "बà¥à¤°à¥à¤‚डी"
+ },
+ "BF": {
+ "name": "बà¥à¤°à¥à¤•à¤¿à¤¨à¤¾ फासो"
+ },
+ "BJ": {
+ "name": "बेनेà¤"
+ },
+ "BY": {
+ "name": "बेलारूस"
+ },
+ "BZ": {
+ "name": "बेलिज़"
+ },
+ "BE": {
+ "name": "बेलà¥à¤œà¤¿à¤¯à¤®"
+ },
+ "BW": {
+ "name": "बोतà¥à¤¸à¥à¤µà¤¾à¤¨à¤¾"
+ },
+ "BO": {
+ "name": "बोलीविया"
+ },
+ "BA": {
+ "name": "बोसनिया हरà¥à¤œà¤¼à¥‡à¤—ोविना"
+ },
+ "BR": {
+ "name": "बà¥à¤°à¤¾à¤œà¤¼à¥€à¤²"
+ },
+ "VG": {
+ "name": "बà¥à¤°à¤¿à¤Ÿà¤¿à¤¶ वरà¥à¤œà¥€à¤¨ आईलंडà¥à¤¸"
+ },
+ "IO": {
+ "name": "बà¥à¤°à¤¿à¤Ÿà¤¿à¤¶ हिंद महासागरिय कà¥à¤·à¥‡à¤¤à¥à¤°"
+ },
+ "GB": {
+ "name": "बà¥à¤°à¤¿à¤¤à¤¨"
+ },
+ "BN": {
+ "name": "बà¥à¤°à¥‚नइ"
+ },
+ "IN": {
+ "name": "भारत"
+ },
+ "BT": {
+ "name": "भूटान"
+ },
+ "MO": {
+ "name": "मकाओ विशेष पà¥à¤°à¤¶à¤¾à¤¸à¤¨à¤¿à¤• कà¥à¤·à¥‡à¤¤à¥à¤° (चीन)"
+ },
+ "MN": {
+ "name": "मंगोलिया"
+ },
+ "MG": {
+ "name": "मदागासà¥à¤•à¤°"
+ },
+ "MW": {
+ "name": "मलावी"
+ },
+ "MY": {
+ "name": "मलेशिया"
+ },
+ "FM": {
+ "name": "माइकà¥à¤°à¥‹à¤¨à¥‡à¤¶à¤¿à¤¯à¤¾"
+ },
+ "MQ": {
+ "name": "मारà¥à¤Ÿà¥€à¤¨à¤¿à¤•"
+ },
+ "MH": {
+ "name": "मारà¥à¤¶à¤² दà¥à¤µà¥€à¤ª"
+ },
+ "MV": {
+ "name": "मालदीव"
+ },
+ "ML": {
+ "name": "माली"
+ },
+ "MT": {
+ "name": "मालà¥à¤Ÿà¤¾"
+ },
+ "EG": {
+ "name": "मिसà¥à¤°"
+ },
+ "MX": {
+ "name": "मैकà¥à¤¸à¤¿à¤•à¥‹"
+ },
+ "YT": {
+ "name": "मैयौट"
+ },
+ "MK": {
+ "name": "मैसेडोनिया"
+ },
+ "MR": {
+ "name": "मॉरिटेनिया"
+ },
+ "MU": {
+ "name": "मॉरिस"
+ },
+ "MS": {
+ "name": "मॉंसेरा"
+ },
+ "MZ": {
+ "name": "मोज़ामà¥à¤¬à¤¿à¤•"
+ },
+ "ME": {
+ "name": "मोंटेनेगà¥à¤°à¥‹"
+ },
+ "MC": {
+ "name": "मोनाको"
+ },
+ "MA": {
+ "name": "मोरोकà¥à¤•à¥‹"
+ },
+ "MD": {
+ "name": "मोलà¥à¤¡à¥‡à¤µà¤¿à¤¯à¤¾"
+ },
+ "MM": {
+ "name": "मà¥à¤¯à¤¾à¤¨à¤®à¤¾à¤°"
+ },
+ "YE": {
+ "name": "यमन"
+ },
+ "VI": {
+ "name": "यà¥.à¤à¤¸. वरà¥à¤œà¥€à¤¨ आईलंडà¥à¤¸"
+ },
+ "UG": {
+ "name": "यà¥à¤—ाà¤à¤¡à¤¾"
+ },
+ "UM": {
+ "name": "यà¥à¤¨à¤¾à¤‡à¤Ÿà¥‡à¤¡ सà¥à¤Ÿà¥‡à¤Ÿà¥à¤¸ के छोटे बाहरिय दà¥à¤µà¥€à¤ª"
+ },
+ "UY": {
+ "name": "यà¥à¤°à¥‚गà¥à¤"
+ },
+ "UA": {
+ "name": "यूकà¥à¤°à¥‡à¤¨"
+ },
+ "RW": {
+ "name": "रूआणà¥à¤¡à¤¾"
+ },
+ "RU": {
+ "name": "रूस"
+ },
+ "RE": {
+ "name": "रेयूनियॉं"
+ },
+ "RO": {
+ "name": "रोमानिया"
+ },
+ "LU": {
+ "name": "लकà¥à¤¸à¤®à¤¬à¤°à¥à¤—"
+ },
+ "LS": {
+ "name": "लसोथो"
+ },
+ "LR": {
+ "name": "लाइबेरिया"
+ },
+ "LA": {
+ "name": "लाओस"
+ },
+ "LV": {
+ "name": "लाटà¥à¤µà¥€à¤¯à¤¾"
+ },
+ "LI": {
+ "name": "लिकà¥à¤Ÿà¥ˆà¤¨à¤¸à¥à¤Ÿà¤¾à¤ˆà¤¨"
+ },
+ "LT": {
+ "name": "लिथà¥à¤†à¤¨à¤¿à¤¯à¤¾"
+ },
+ "LY": {
+ "name": "लीबिया"
+ },
+ "LB": {
+ "name": "लेबनोन"
+ },
+ "VU": {
+ "name": "वानाऊटà¥"
+ },
+ "VN": {
+ "name": "वियतनाम"
+ },
+ "VE": {
+ "name": "वेनेज़à¥à¤à¤²à¤¾"
+ },
+ "VA": {
+ "name": "वैटिकन"
+ },
+ "WF": {
+ "name": "वॉलेस à¤à¤µà¤‚ फ़à¥à¤¯à¥‚चूना"
+ },
+ "LK": {
+ "name": "शà¥à¤°à¥€ लà¤à¤•à¤¾"
+ },
+ "SA": {
+ "name": "सऊदी अरब"
+ },
+ "WS": {
+ "name": "समोआ"
+ },
+ "AE": {
+ "name": "संयà¥à¤•à¥à¤¤ अरब अमीरात"
+ },
+ "US": {
+ "name": "संयà¥à¤•à¥à¤¤ राजà¥à¤¯ अमरिका"
+ },
+ "RS": {
+ "name": "सरà¥à¤¬à¤¿à¤¯à¤¾"
+ },
+ "CY": {
+ "name": "साइपà¥à¤°à¤¸"
+ },
+ "ST": {
+ "name": "साउà¤-तोमे à¤à¤µà¤‚ पà¥à¤°à¤¿à¤‚सिप"
+ },
+ "SG": {
+ "name": "सिंगापà¥à¤°"
+ },
+ "SL": {
+ "name": "सियेरा लेओन"
+ },
+ "SY": {
+ "name": "सीरिया"
+ },
+ "SR": {
+ "name": "सà¥à¤°à¤¿à¤¨à¤¾à¤®"
+ },
+ "SD": {
+ "name": "सूदान"
+ },
+ "PM": {
+ "name": "सेठपीà¤à¤° à¤à¤µà¤‚ मिâ€à¤•à¥‡à¤²à¥‰à¤‚"
+ },
+ "BL": {
+ "name": "सेठबारà¥à¤¥à¥‡à¤²à¥‡à¤®à¥€"
+ },
+ "MF": {
+ "name": "सेठमारà¥à¤Ÿà¥‡à¤"
+ },
+ "KN": {
+ "name": "सेंट किटà¥à¤¸ à¤à¤µà¤‚ नेविस"
+ },
+ "LC": {
+ "name": "सेंट लूसिया"
+ },
+ "VC": {
+ "name": "सेंट विंसंट à¤à¤µà¤‚ दी गà¥à¤°à¤¨à¤¾à¤¡à¥€à¤¨à¥à¤¸à¥"
+ },
+ "CF": {
+ "name": "सेंटà¥à¤°à¤² अफà¥à¤°à¥€à¤•à¤¨ रिपबà¥à¤²à¤¿à¤•"
+ },
+ "SH": {
+ "name": "सेणà¥â€à¤Ÿ हेलेना"
+ },
+ "SN": {
+ "name": "सेनेगाल"
+ },
+ "SC": {
+ "name": "सेशेलà¥à¤¸"
+ },
+ "SM": {
+ "name": "सैन मरीनो"
+ },
+ "SB": {
+ "name": "सॉलोमन दà¥à¤µà¥€à¤ª"
+ },
+ "SO": {
+ "name": "सोमालिया"
+ },
+ "ES": {
+ "name": "सà¥à¤ªà¥‡à¤¨"
+ },
+ "SK": {
+ "name": "सà¥à¤²à¥‹à¤µà¤¾à¤•à¤¿à¤¯à¤¾"
+ },
+ "SI": {
+ "name": "सà¥à¤²à¥‹à¤µà¥‡à¤¨à¤¿à¤¯à¤¾"
+ },
+ "SZ": {
+ "name": "सà¥à¤µà¤¾à¤œà¤¼à¥€à¤²à¥ˆà¤‚ड"
+ },
+ "SJ": {
+ "name": "सà¥à¤µà¤¾à¤²à¥à¤¬à¤¾à¤°à¥à¤¡ à¤à¤µà¤‚ यान मायेन"
+ },
+ "CH": {
+ "name": "सà¥à¤µà¤¿à¤¤à¥à¤œà¤¼à¤°à¤²à¥ˆà¤‚ड"
+ },
+ "SE": {
+ "name": "सà¥à¤µà¥€à¤¡à¤¨"
+ },
+ "HU": {
+ "name": "हंगरी"
+ },
+ "HT": {
+ "name": "हाइती"
+ },
+ "HK": {
+ "name": "हाà¤à¤—काà¤à¤— विशेष पà¥à¤°à¤¶à¤¾à¤¸à¤¨à¤¿à¤• कà¥à¤·à¥‡à¤¤à¥à¤° चीन"
+ },
+ "HN": {
+ "name": "हौणà¥à¤¡à¥‚रास"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/country/bs-Cyrl.json b/library/intl/resources/country/bs-Cyrl.json
new file mode 100644
index 000000000..70810fd3c
--- /dev/null
+++ b/library/intl/resources/country/bs-Cyrl.json
@@ -0,0 +1,761 @@
+{
+ "BQ": {
+ "name": "Caribbean Netherlands"
+ },
+ "CW": {
+ "name": "Curaçao"
+ },
+ "XK": {
+ "name": "Kosovo"
+ },
+ "SX": {
+ "name": "Sint Maarten"
+ },
+ "AF": {
+ "name": "ÐвганиÑтан"
+ },
+ "AZ": {
+ "name": "Ðзербејџан"
+ },
+ "AX": {
+ "name": "ÐландÑка оÑтрва"
+ },
+ "AL": {
+ "name": "Ðлбанија"
+ },
+ "DZ": {
+ "name": "Ðлжир"
+ },
+ "AS": {
+ "name": "Ðмеричка Самоа"
+ },
+ "AI": {
+ "name": "Ðнгвила"
+ },
+ "AO": {
+ "name": "Ðнгола"
+ },
+ "AD": {
+ "name": "Ðндора"
+ },
+ "AQ": {
+ "name": "Ðнтарктик"
+ },
+ "AG": {
+ "name": "Ðнтигве и Барбуда"
+ },
+ "AR": {
+ "name": "Ðргентина"
+ },
+ "AM": {
+ "name": "Ðрменија"
+ },
+ "AW": {
+ "name": "Ðруба"
+ },
+ "AU": {
+ "name": "ÐуÑтралија"
+ },
+ "AT": {
+ "name": "ÐуÑтрија"
+ },
+ "BD": {
+ "name": "Бангладеш"
+ },
+ "BB": {
+ "name": "БарбадоÑ"
+ },
+ "BS": {
+ "name": "Бахами"
+ },
+ "BH": {
+ "name": "Бахреин"
+ },
+ "BE": {
+ "name": "Белгија"
+ },
+ "BZ": {
+ "name": "Белизе"
+ },
+ "BY": {
+ "name": "БелоруÑија"
+ },
+ "BJ": {
+ "name": "Бенин"
+ },
+ "BM": {
+ "name": "Бермуда"
+ },
+ "CX": {
+ "name": "Божићна оÑтрва"
+ },
+ "BO": {
+ "name": "Боливија"
+ },
+ "BA": {
+ "name": "БоÑна и Херцеговина"
+ },
+ "BW": {
+ "name": "Боцвана"
+ },
+ "BR": {
+ "name": "Бразил"
+ },
+ "VG": {
+ "name": "БританÑка ДевичанÑка ОÑтрва"
+ },
+ "IO": {
+ "name": "БританÑка територија у ИндијÑком океану"
+ },
+ "BN": {
+ "name": "Брунеј"
+ },
+ "BG": {
+ "name": "БугарÑка"
+ },
+ "BF": {
+ "name": "Буркина ФаÑо"
+ },
+ "BI": {
+ "name": "Бурунди"
+ },
+ "BT": {
+ "name": "Бутан"
+ },
+ "WF": {
+ "name": "Ð’Ð°Ð»Ð¸Ñ Ð¸ Футуна ОÑтрва"
+ },
+ "VU": {
+ "name": "Вануату"
+ },
+ "VA": {
+ "name": "Ватикан"
+ },
+ "GB": {
+ "name": "Велика Британија"
+ },
+ "VE": {
+ "name": "Венецуела"
+ },
+ "VN": {
+ "name": "Вијетнам"
+ },
+ "GA": {
+ "name": "Габон"
+ },
+ "GM": {
+ "name": "Гамбија"
+ },
+ "GH": {
+ "name": "Гана"
+ },
+ "GP": {
+ "name": "Гваделупе"
+ },
+ "GY": {
+ "name": "Гвајана"
+ },
+ "GT": {
+ "name": "Гватемала"
+ },
+ "GN": {
+ "name": "Гвинеја"
+ },
+ "GW": {
+ "name": "Гвинеја-БиÑао"
+ },
+ "GI": {
+ "name": "Гибралтар"
+ },
+ "GD": {
+ "name": "Гренада"
+ },
+ "GL": {
+ "name": "Гренланд"
+ },
+ "GE": {
+ "name": "Грузија"
+ },
+ "GR": {
+ "name": "Грчка"
+ },
+ "GU": {
+ "name": "Гуам"
+ },
+ "GG": {
+ "name": "ГурнÑи"
+ },
+ "DK": {
+ "name": "ДанÑка"
+ },
+ "DG": {
+ "name": "Дијего ГарÑија"
+ },
+ "DM": {
+ "name": "Доминика"
+ },
+ "DO": {
+ "name": "ДоминиканÑка Република"
+ },
+ "EG": {
+ "name": "Египат"
+ },
+ "EC": {
+ "name": "Еквадор"
+ },
+ "GQ": {
+ "name": "Екваторијална Гвинеја"
+ },
+ "ER": {
+ "name": "Еритреја"
+ },
+ "EE": {
+ "name": "ЕÑтонија"
+ },
+ "ET": {
+ "name": "Етиопија"
+ },
+ "ZM": {
+ "name": "Замбија"
+ },
+ "EH": {
+ "name": "Западна Сахара"
+ },
+ "ZW": {
+ "name": "Зимбабве"
+ },
+ "IL": {
+ "name": "Израел"
+ },
+ "IN": {
+ "name": "Индија"
+ },
+ "ID": {
+ "name": "Индонезија"
+ },
+ "IQ": {
+ "name": "Ирак"
+ },
+ "IR": {
+ "name": "Иран"
+ },
+ "IE": {
+ "name": "ИрÑка"
+ },
+ "IS": {
+ "name": "ИÑланд"
+ },
+ "TL": {
+ "name": "ИÑточни Тимор"
+ },
+ "IT": {
+ "name": "Италија"
+ },
+ "JM": {
+ "name": "Јамајка"
+ },
+ "JP": {
+ "name": "Јапан"
+ },
+ "YE": {
+ "name": "Јемен"
+ },
+ "JO": {
+ "name": "Јордан"
+ },
+ "KR": {
+ "name": "Јужна Кореја"
+ },
+ "GS": {
+ "name": "Јужна Ðорџија и Јужна Сендвич ОÑтрва"
+ },
+ "SS": {
+ "name": "Јужни Судан"
+ },
+ "ZA": {
+ "name": "Јужноафричка Република"
+ },
+ "KZ": {
+ "name": "КазахÑтан"
+ },
+ "KY": {
+ "name": "КајманÑка ОÑтрва"
+ },
+ "KH": {
+ "name": "Камбоџа"
+ },
+ "CM": {
+ "name": "Камерун"
+ },
+ "CA": {
+ "name": "Канада"
+ },
+ "IC": {
+ "name": "КанарÑка оÑтрва"
+ },
+ "CV": {
+ "name": "Капе Верде"
+ },
+ "QA": {
+ "name": "Катар"
+ },
+ "KE": {
+ "name": "Кенија"
+ },
+ "CN": {
+ "name": "Кина"
+ },
+ "CY": {
+ "name": "Кипар"
+ },
+ "KG": {
+ "name": "КиргизÑтан"
+ },
+ "KI": {
+ "name": "Кирибати"
+ },
+ "CC": {
+ "name": "ÐšÐ¾ÐºÐ¾Ñ (Келинг) ОÑтрва"
+ },
+ "CO": {
+ "name": "Колумбија"
+ },
+ "KM": {
+ "name": "КоморÑка ОÑтрва"
+ },
+ "CG": {
+ "name": "Конго - Бразавил"
+ },
+ "CD": {
+ "name": "Конго - КиншаÑа"
+ },
+ "CR": {
+ "name": "КоÑтарика"
+ },
+ "CU": {
+ "name": "Куба"
+ },
+ "KW": {
+ "name": "Кувајт"
+ },
+ "CK": {
+ "name": "Кукова ОÑтрва"
+ },
+ "LA": {
+ "name": "ЛаоÑ"
+ },
+ "LS": {
+ "name": "ЛеÑото"
+ },
+ "LV": {
+ "name": "Летонија"
+ },
+ "LB": {
+ "name": "Либан"
+ },
+ "LR": {
+ "name": "Либерија"
+ },
+ "LY": {
+ "name": "Либија"
+ },
+ "LT": {
+ "name": "Литванија"
+ },
+ "LI": {
+ "name": "Лихтенштајн"
+ },
+ "LU": {
+ "name": "ЛукÑембург"
+ },
+ "MG": {
+ "name": "МадагаÑкар"
+ },
+ "HU": {
+ "name": "МађарÑка"
+ },
+ "YT": {
+ "name": "Мајоте"
+ },
+ "MO": {
+ "name": "Макао С. Ð. Р. Кина"
+ },
+ "MK": {
+ "name": "Македонија"
+ },
+ "MW": {
+ "name": "Малави"
+ },
+ "MV": {
+ "name": "Малдиви"
+ },
+ "MY": {
+ "name": "Малезија"
+ },
+ "ML": {
+ "name": "Мали"
+ },
+ "MT": {
+ "name": "Малта"
+ },
+ "UM": {
+ "name": "Мања удаљена оÑтрва СÐД"
+ },
+ "MA": {
+ "name": "Мароко"
+ },
+ "MQ": {
+ "name": "Мартиник"
+ },
+ "MH": {
+ "name": "МаршалÑка ОÑтрва"
+ },
+ "MR": {
+ "name": "Мауританија"
+ },
+ "MU": {
+ "name": "МаурицијуÑ"
+ },
+ "MX": {
+ "name": "МекÑико"
+ },
+ "MM": {
+ "name": "Мијанмар (Бурма)"
+ },
+ "FM": {
+ "name": "Микронезија"
+ },
+ "MZ": {
+ "name": "Мозамбик"
+ },
+ "MD": {
+ "name": "Молдавија"
+ },
+ "MC": {
+ "name": "Монако"
+ },
+ "MN": {
+ "name": "Монголија"
+ },
+ "MS": {
+ "name": "МонÑерат"
+ },
+ "NA": {
+ "name": "Ðамибија"
+ },
+ "NR": {
+ "name": "Ðауру"
+ },
+ "DE": {
+ "name": "Ðемачка"
+ },
+ "NP": {
+ "name": "Ðепал"
+ },
+ "NE": {
+ "name": "Ðигер"
+ },
+ "NG": {
+ "name": "Ðигерија"
+ },
+ "NI": {
+ "name": "Ðикарагва"
+ },
+ "NU": {
+ "name": "Ðиуе"
+ },
+ "NC": {
+ "name": "Ðова Каледонија"
+ },
+ "NZ": {
+ "name": "Ðови Зеланд"
+ },
+ "NO": {
+ "name": "Ðорвешка"
+ },
+ "NF": {
+ "name": "Ðорфолк ОÑтрво"
+ },
+ "CI": {
+ "name": "Обала Слоноваче"
+ },
+ "OM": {
+ "name": "Оман"
+ },
+ "AC": {
+ "name": "ОÑтрво ÐÑенÑион"
+ },
+ "IM": {
+ "name": "ОÑтрво Ман"
+ },
+ "PK": {
+ "name": "ПакиÑтан"
+ },
+ "PW": {
+ "name": "Палау"
+ },
+ "PS": {
+ "name": "ПалеÑтинÑке територије"
+ },
+ "PA": {
+ "name": "Панама"
+ },
+ "PG": {
+ "name": "Папуа Ðова Гвинеја"
+ },
+ "PY": {
+ "name": "Парагвај"
+ },
+ "PE": {
+ "name": "Перу"
+ },
+ "PN": {
+ "name": "Питкерн"
+ },
+ "PL": {
+ "name": "ПољÑка"
+ },
+ "PR": {
+ "name": "Порто Рико"
+ },
+ "PT": {
+ "name": "Португалија"
+ },
+ "RE": {
+ "name": "Реинион"
+ },
+ "RW": {
+ "name": "Руанда"
+ },
+ "RO": {
+ "name": "Румунија"
+ },
+ "RU": {
+ "name": "РуÑија"
+ },
+ "VI": {
+ "name": "С.Ð.Д. ДевичанÑка ОÑтрва"
+ },
+ "SV": {
+ "name": "Салвадор"
+ },
+ "WS": {
+ "name": "Самоа"
+ },
+ "SM": {
+ "name": "Сан Марино"
+ },
+ "ST": {
+ "name": "Сао Томе и Принципе"
+ },
+ "SA": {
+ "name": "СаудијÑка Ðрабија"
+ },
+ "SZ": {
+ "name": "Свазиленд"
+ },
+ "SJ": {
+ "name": "Свалбард и Јанмајен ОÑтрва"
+ },
+ "SH": {
+ "name": "Света Јелена"
+ },
+ "BL": {
+ "name": "Свети Бартоломеј"
+ },
+ "KP": {
+ "name": "Северна Кореја"
+ },
+ "MP": {
+ "name": "Северна МаријанÑка ОÑтрва"
+ },
+ "SC": {
+ "name": "Сејшели"
+ },
+ "PM": {
+ "name": "Сен Пјер и Микелон"
+ },
+ "SN": {
+ "name": "Сенегал"
+ },
+ "VC": {
+ "name": "Сент ВинÑент и Гренадини"
+ },
+ "KN": {
+ "name": "Сент ÐšÐ¸Ñ‚Ñ Ð¸ ÐевиÑ"
+ },
+ "LC": {
+ "name": "Сент Луција"
+ },
+ "MF": {
+ "name": "Сент Мартин"
+ },
+ "EA": {
+ "name": "Сеута и Мелиља"
+ },
+ "SL": {
+ "name": "Сијера Леоне"
+ },
+ "SG": {
+ "name": "Сингапур"
+ },
+ "SY": {
+ "name": "Сирија"
+ },
+ "US": {
+ "name": "Сједињене Ðмеричке Државе"
+ },
+ "SK": {
+ "name": "Словачка"
+ },
+ "SI": {
+ "name": "Словенија"
+ },
+ "SB": {
+ "name": "СоломонÑка ОÑтрва"
+ },
+ "SO": {
+ "name": "Сомалија"
+ },
+ "RS": {
+ "name": "Србија"
+ },
+ "SD": {
+ "name": "Судан"
+ },
+ "SR": {
+ "name": "Суринам"
+ },
+ "TW": {
+ "name": "Тајван"
+ },
+ "TH": {
+ "name": "Тајланд"
+ },
+ "TZ": {
+ "name": "Танзанија"
+ },
+ "TJ": {
+ "name": "ТаџикиÑтан"
+ },
+ "TG": {
+ "name": "Того"
+ },
+ "TK": {
+ "name": "Токелау"
+ },
+ "TO": {
+ "name": "Тонга"
+ },
+ "TT": {
+ "name": "Тринидад и Тобаго"
+ },
+ "TA": {
+ "name": "ТриÑтан да Куња"
+ },
+ "TV": {
+ "name": "Тувалу"
+ },
+ "TN": {
+ "name": "ТуниÑ"
+ },
+ "TM": {
+ "name": "ТуркмениÑтан"
+ },
+ "TC": {
+ "name": "Ð¢ÑƒÑ€ÐºÑ Ð¸ ÐšÐ°Ñ˜ÐºÐ¾Ñ ÐžÑтрва"
+ },
+ "TR": {
+ "name": "ТурÑка"
+ },
+ "UG": {
+ "name": "Уганда"
+ },
+ "UZ": {
+ "name": "УзбекиÑтан"
+ },
+ "AE": {
+ "name": "Уједињени ÐрапÑки Емирати"
+ },
+ "UA": {
+ "name": "Украјина"
+ },
+ "UY": {
+ "name": "Уругвај"
+ },
+ "FO": {
+ "name": "ФарÑка ОÑтрва"
+ },
+ "PH": {
+ "name": "Филипини"
+ },
+ "FI": {
+ "name": "ФинÑка"
+ },
+ "FJ": {
+ "name": "Фиџи"
+ },
+ "FK": {
+ "name": "ФокландÑка оÑтрва"
+ },
+ "FR": {
+ "name": "ФранцуÑка"
+ },
+ "GF": {
+ "name": "ФранцуÑка Гвајана"
+ },
+ "PF": {
+ "name": "ФранцуÑка Полинезија"
+ },
+ "TF": {
+ "name": "ФранцуÑке Јужне Територије"
+ },
+ "HT": {
+ "name": "Хаити"
+ },
+ "NL": {
+ "name": "Холандија"
+ },
+ "HK": {
+ "name": "Хонг Конг С. Ð. Р. Кина"
+ },
+ "HN": {
+ "name": "ХондураÑ"
+ },
+ "HR": {
+ "name": "ХрватÑка"
+ },
+ "CF": {
+ "name": "Централно Ðфричка Република"
+ },
+ "ME": {
+ "name": "Црна Гора"
+ },
+ "TD": {
+ "name": "Чад"
+ },
+ "CZ": {
+ "name": "Чешка"
+ },
+ "CL": {
+ "name": "Чиле"
+ },
+ "JE": {
+ "name": "ÐерÑи"
+ },
+ "DJ": {
+ "name": "Ðибути"
+ },
+ "CH": {
+ "name": "ШвајцарÑка"
+ },
+ "SE": {
+ "name": "ШведÑка"
+ },
+ "ES": {
+ "name": "Шпанија"
+ },
+ "LK": {
+ "name": "Шри Ланка"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/country/bs.json b/library/intl/resources/country/bs.json
new file mode 100644
index 000000000..7b76f80cc
--- /dev/null
+++ b/library/intl/resources/country/bs.json
@@ -0,0 +1,761 @@
+{
+ "AF": {
+ "name": "Afganistan"
+ },
+ "AX": {
+ "name": "Alandska Ostrva"
+ },
+ "AL": {
+ "name": "Albanija"
+ },
+ "DZ": {
+ "name": "Alžir"
+ },
+ "AS": {
+ "name": "AmeriÄka Samoa"
+ },
+ "AD": {
+ "name": "Andora"
+ },
+ "AO": {
+ "name": "Angola"
+ },
+ "AI": {
+ "name": "Angvila"
+ },
+ "AQ": {
+ "name": "Antarktika"
+ },
+ "AG": {
+ "name": "Antigva i Barbuda"
+ },
+ "AR": {
+ "name": "Argentina"
+ },
+ "AW": {
+ "name": "Aruba"
+ },
+ "AU": {
+ "name": "Australija"
+ },
+ "AT": {
+ "name": "Austrija"
+ },
+ "AZ": {
+ "name": "Azerbejdžan"
+ },
+ "BS": {
+ "name": "Bahami"
+ },
+ "BH": {
+ "name": "Bahrein"
+ },
+ "BD": {
+ "name": "Bangladeš"
+ },
+ "BB": {
+ "name": "Barbados"
+ },
+ "BE": {
+ "name": "Belgija"
+ },
+ "BZ": {
+ "name": "Belize"
+ },
+ "BJ": {
+ "name": "Benin"
+ },
+ "BM": {
+ "name": "Bermuda"
+ },
+ "BY": {
+ "name": "Bjelorusija"
+ },
+ "BW": {
+ "name": "Bocvana"
+ },
+ "BO": {
+ "name": "Bolivija"
+ },
+ "BA": {
+ "name": "Bosna i Hercegovina"
+ },
+ "CX": {
+ "name": "Božićna Ostrva"
+ },
+ "BR": {
+ "name": "Brazil"
+ },
+ "VG": {
+ "name": "Britanska DjeviÄanska Ostrva"
+ },
+ "IO": {
+ "name": "Britanska Territorija u Indijskom Okeanu"
+ },
+ "BN": {
+ "name": "Brunej"
+ },
+ "BG": {
+ "name": "Bugarska"
+ },
+ "BF": {
+ "name": "Burkina Faso"
+ },
+ "BI": {
+ "name": "Burundi"
+ },
+ "BT": {
+ "name": "Butan"
+ },
+ "CF": {
+ "name": "CentralnoafriÄka Republika"
+ },
+ "ME": {
+ "name": "Crna Gora"
+ },
+ "TD": {
+ "name": "ÄŒad"
+ },
+ "CZ": {
+ "name": "Češka"
+ },
+ "CL": {
+ "name": "ÄŒile"
+ },
+ "DK": {
+ "name": "Danska"
+ },
+ "CD": {
+ "name": "Demokratska Republika Kongo"
+ },
+ "DG": {
+ "name": "Dijego Garsija"
+ },
+ "VI": {
+ "name": "DjeviÄanska Ostrva SAD"
+ },
+ "DM": {
+ "name": "Dominika"
+ },
+ "DO": {
+ "name": "Dominikanska Republika"
+ },
+ "JE": {
+ "name": "Džersi"
+ },
+ "DJ": {
+ "name": "Džibuti"
+ },
+ "EG": {
+ "name": "Egipat"
+ },
+ "EC": {
+ "name": "Ekvador"
+ },
+ "GQ": {
+ "name": "Ekvatorijalna Gvineja"
+ },
+ "ER": {
+ "name": "Eritreja"
+ },
+ "EE": {
+ "name": "Estonija"
+ },
+ "ET": {
+ "name": "Etiopija"
+ },
+ "FO": {
+ "name": "Farska Ostrva"
+ },
+ "FJ": {
+ "name": "Fidži"
+ },
+ "PH": {
+ "name": "Filipini"
+ },
+ "FI": {
+ "name": "Finska"
+ },
+ "FK": {
+ "name": "Folklandska Ostrva"
+ },
+ "FR": {
+ "name": "Francuska"
+ },
+ "GF": {
+ "name": "Francuska Gvajana"
+ },
+ "PF": {
+ "name": "Francuska Polinezija"
+ },
+ "TF": {
+ "name": "Francuske Južne Teritorije"
+ },
+ "GA": {
+ "name": "Gabon"
+ },
+ "GM": {
+ "name": "Gambija"
+ },
+ "GH": {
+ "name": "Gana"
+ },
+ "GG": {
+ "name": "Gernzi"
+ },
+ "GI": {
+ "name": "Gibraltar"
+ },
+ "GR": {
+ "name": "GrÄka"
+ },
+ "GD": {
+ "name": "Grenada"
+ },
+ "GL": {
+ "name": "Grenland"
+ },
+ "GE": {
+ "name": "Gruzija"
+ },
+ "GU": {
+ "name": "Guam"
+ },
+ "GP": {
+ "name": "Gvadelupe"
+ },
+ "GY": {
+ "name": "Gvajana"
+ },
+ "GT": {
+ "name": "Gvatemala"
+ },
+ "GN": {
+ "name": "Gvineja"
+ },
+ "GW": {
+ "name": "Gvineja-Bisao"
+ },
+ "HT": {
+ "name": "Haiti"
+ },
+ "NL": {
+ "name": "Holandija"
+ },
+ "HN": {
+ "name": "Honduras"
+ },
+ "HK": {
+ "name": "Hong Kong (S. A. R. Kina)"
+ },
+ "HR": {
+ "name": "Hrvatska"
+ },
+ "IN": {
+ "name": "Indija"
+ },
+ "ID": {
+ "name": "Indonezija"
+ },
+ "IQ": {
+ "name": "Irak"
+ },
+ "IR": {
+ "name": "Iran"
+ },
+ "IE": {
+ "name": "Irska"
+ },
+ "IS": {
+ "name": "Island"
+ },
+ "IT": {
+ "name": "Italija"
+ },
+ "IL": {
+ "name": "Izrael"
+ },
+ "JM": {
+ "name": "Jamajka"
+ },
+ "JP": {
+ "name": "Japan"
+ },
+ "YE": {
+ "name": "Jemen"
+ },
+ "AM": {
+ "name": "Jermenija"
+ },
+ "JO": {
+ "name": "Jordan"
+ },
+ "GS": {
+ "name": "Južna Džordžija i Južna SendviÄ Ostrva"
+ },
+ "KR": {
+ "name": "Južna Koreja"
+ },
+ "SS": {
+ "name": "Južni Sudan"
+ },
+ "ZA": {
+ "name": "JužnoafriÄka Republika"
+ },
+ "KY": {
+ "name": "Kajmanska Ostrva"
+ },
+ "KH": {
+ "name": "Kambodža"
+ },
+ "CM": {
+ "name": "Kamerun"
+ },
+ "CA": {
+ "name": "Kanada"
+ },
+ "IC": {
+ "name": "Kanarska ostrva"
+ },
+ "CV": {
+ "name": "Kape Verde"
+ },
+ "BQ": {
+ "name": "Karipska Holandija"
+ },
+ "QA": {
+ "name": "Katar"
+ },
+ "KZ": {
+ "name": "Kazahstan"
+ },
+ "KE": {
+ "name": "Kenija"
+ },
+ "CN": {
+ "name": "Kina"
+ },
+ "CY": {
+ "name": "Kipar"
+ },
+ "KG": {
+ "name": "Kirgizstan"
+ },
+ "KI": {
+ "name": "Kiribati"
+ },
+ "CC": {
+ "name": "Kokos (Keling) Ostrva"
+ },
+ "CO": {
+ "name": "Kolumbija"
+ },
+ "KM": {
+ "name": "Komorska Ostrva"
+ },
+ "CG": {
+ "name": "Kongo"
+ },
+ "XK": {
+ "name": "Kosovo"
+ },
+ "CR": {
+ "name": "Kostarika"
+ },
+ "CU": {
+ "name": "Kuba"
+ },
+ "CK": {
+ "name": "Kukova Ostrva"
+ },
+ "CW": {
+ "name": "Kurasao"
+ },
+ "KW": {
+ "name": "Kuvajt"
+ },
+ "LA": {
+ "name": "Laos"
+ },
+ "LS": {
+ "name": "Lesoto"
+ },
+ "LV": {
+ "name": "Letonija"
+ },
+ "LB": {
+ "name": "Liban"
+ },
+ "LR": {
+ "name": "Liberija"
+ },
+ "LY": {
+ "name": "Libija"
+ },
+ "LI": {
+ "name": "Lihtenštajn"
+ },
+ "LT": {
+ "name": "Litvanija"
+ },
+ "LU": {
+ "name": "Luksemburg"
+ },
+ "MG": {
+ "name": "Madagaskar"
+ },
+ "HU": {
+ "name": "Mađarska"
+ },
+ "YT": {
+ "name": "Majote"
+ },
+ "MO": {
+ "name": "Makao (S. A. R. Kina)"
+ },
+ "MK": {
+ "name": "Makedonija"
+ },
+ "MW": {
+ "name": "Malavi"
+ },
+ "MV": {
+ "name": "Maldivi"
+ },
+ "MY": {
+ "name": "Malezija"
+ },
+ "ML": {
+ "name": "Mali"
+ },
+ "MT": {
+ "name": "Malta"
+ },
+ "UM": {
+ "name": "Manja Udaljena Ostrva SAD"
+ },
+ "MA": {
+ "name": "Maroko"
+ },
+ "MH": {
+ "name": "Maršalska Ostrva"
+ },
+ "MQ": {
+ "name": "Martinik"
+ },
+ "MU": {
+ "name": "Mauricius"
+ },
+ "MR": {
+ "name": "Mauritanija"
+ },
+ "MX": {
+ "name": "Meksiko"
+ },
+ "MM": {
+ "name": "Mijanmar"
+ },
+ "FM": {
+ "name": "Mikronezija"
+ },
+ "MD": {
+ "name": "Moldavija"
+ },
+ "MC": {
+ "name": "Monako"
+ },
+ "MN": {
+ "name": "Mongolija"
+ },
+ "MS": {
+ "name": "Monserat"
+ },
+ "MZ": {
+ "name": "Mozambik"
+ },
+ "NA": {
+ "name": "Namibija"
+ },
+ "NR": {
+ "name": "Nauru"
+ },
+ "NP": {
+ "name": "Nepal"
+ },
+ "NE": {
+ "name": "Niger"
+ },
+ "NG": {
+ "name": "Nigerija"
+ },
+ "NI": {
+ "name": "Nikaragva"
+ },
+ "NU": {
+ "name": "Niue"
+ },
+ "NF": {
+ "name": "Norfolk Ostrvo"
+ },
+ "NO": {
+ "name": "Norveška"
+ },
+ "NC": {
+ "name": "Nova Kaledonija"
+ },
+ "NZ": {
+ "name": "Novi Zeland"
+ },
+ "DE": {
+ "name": "NjemaÄka"
+ },
+ "CI": {
+ "name": "Obala SlonovaÄe"
+ },
+ "OM": {
+ "name": "Oman"
+ },
+ "AC": {
+ "name": "Ostrvo Asension"
+ },
+ "IM": {
+ "name": "Ostrvo Man"
+ },
+ "PK": {
+ "name": "Pakistan"
+ },
+ "PW": {
+ "name": "Palau"
+ },
+ "PS": {
+ "name": "Palestinska Teritorija"
+ },
+ "PA": {
+ "name": "Panama"
+ },
+ "PG": {
+ "name": "Papua Nova Gvineja"
+ },
+ "PY": {
+ "name": "Paragvaj"
+ },
+ "PE": {
+ "name": "Peru"
+ },
+ "PN": {
+ "name": "Pitkern"
+ },
+ "PL": {
+ "name": "Poljska"
+ },
+ "PR": {
+ "name": "Porto Riko"
+ },
+ "PT": {
+ "name": "Portugal"
+ },
+ "RE": {
+ "name": "Rejunion"
+ },
+ "RW": {
+ "name": "Ruanda"
+ },
+ "RO": {
+ "name": "Rumunija"
+ },
+ "RU": {
+ "name": "Rusija"
+ },
+ "SV": {
+ "name": "Salvador"
+ },
+ "WS": {
+ "name": "Samoa"
+ },
+ "SM": {
+ "name": "San Marino"
+ },
+ "ST": {
+ "name": "Sao Tome i Principe"
+ },
+ "SA": {
+ "name": "Saudijska Arabija"
+ },
+ "SC": {
+ "name": "Sejšeli"
+ },
+ "PM": {
+ "name": "Sen Pjer i Mikelon"
+ },
+ "SN": {
+ "name": "Senegal"
+ },
+ "KN": {
+ "name": "Sent Kits i Nevis"
+ },
+ "LC": {
+ "name": "Sent Lucija"
+ },
+ "VC": {
+ "name": "Sent Vinsent i Grenadini"
+ },
+ "EA": {
+ "name": "Seuta i Melilja"
+ },
+ "SL": {
+ "name": "Sijera Leone"
+ },
+ "SG": {
+ "name": "Singapur"
+ },
+ "SX": {
+ "name": "Sint Marten"
+ },
+ "SY": {
+ "name": "Sirija"
+ },
+ "US": {
+ "name": "Sjedinjene AmeriÄke Države"
+ },
+ "KP": {
+ "name": "Sjeverna Koreja"
+ },
+ "MP": {
+ "name": "Sjeverna Marijanska Ostrva"
+ },
+ "SK": {
+ "name": "SlovaÄka"
+ },
+ "SI": {
+ "name": "Slovenija"
+ },
+ "SB": {
+ "name": "Solomonska Ostrva"
+ },
+ "SO": {
+ "name": "Somalija"
+ },
+ "RS": {
+ "name": "Srbija"
+ },
+ "SD": {
+ "name": "Sudan"
+ },
+ "SR": {
+ "name": "Surinam"
+ },
+ "BL": {
+ "name": "Sv. Bartolomej"
+ },
+ "MF": {
+ "name": "Sv. Martin"
+ },
+ "SJ": {
+ "name": "Svalbard i Janmajen Ostrva"
+ },
+ "SZ": {
+ "name": "Svazilend"
+ },
+ "SH": {
+ "name": "Sveta Helena"
+ },
+ "ES": {
+ "name": "Å panija"
+ },
+ "LK": {
+ "name": "Å ri Lanka"
+ },
+ "SE": {
+ "name": "Å vedska"
+ },
+ "CH": {
+ "name": "Å vicarska"
+ },
+ "TJ": {
+ "name": "Tadžikistan"
+ },
+ "TH": {
+ "name": "Tajland"
+ },
+ "TW": {
+ "name": "Tajvan"
+ },
+ "TZ": {
+ "name": "Tanzanija"
+ },
+ "TL": {
+ "name": "Timor Leste"
+ },
+ "TG": {
+ "name": "Togo"
+ },
+ "TK": {
+ "name": "Tokelau"
+ },
+ "TO": {
+ "name": "Tonga"
+ },
+ "TT": {
+ "name": "Trinidad i Tobago"
+ },
+ "TA": {
+ "name": "Tristan da Kunja"
+ },
+ "TN": {
+ "name": "Tunis"
+ },
+ "TM": {
+ "name": "Turkmenistan"
+ },
+ "TC": {
+ "name": "Turks i Kajkos Ostrva"
+ },
+ "TR": {
+ "name": "Turska"
+ },
+ "TV": {
+ "name": "Tuvalu"
+ },
+ "UG": {
+ "name": "Uganda"
+ },
+ "AE": {
+ "name": "Ujedinjeni Arapski Emirati"
+ },
+ "UA": {
+ "name": "Ukrajina"
+ },
+ "UY": {
+ "name": "Urugvaj"
+ },
+ "UZ": {
+ "name": "Uzbekistan"
+ },
+ "WF": {
+ "name": "Valis i Futuna Ostrva"
+ },
+ "VU": {
+ "name": "Vanuatu"
+ },
+ "VA": {
+ "name": "Vatikan"
+ },
+ "GB": {
+ "name": "Velika Britanija"
+ },
+ "VE": {
+ "name": "Venecuela"
+ },
+ "VN": {
+ "name": "Vijetnam"
+ },
+ "ZM": {
+ "name": "Zambija"
+ },
+ "EH": {
+ "name": "Zapadna Sahara"
+ },
+ "ZW": {
+ "name": "Zimbabve"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/country/ca.json b/library/intl/resources/country/ca.json
new file mode 100644
index 000000000..862cc0125
--- /dev/null
+++ b/library/intl/resources/country/ca.json
@@ -0,0 +1,761 @@
+{
+ "AF": {
+ "name": "Afganistan"
+ },
+ "AL": {
+ "name": "Albània"
+ },
+ "DE": {
+ "name": "Alemanya"
+ },
+ "DZ": {
+ "name": "Algèria"
+ },
+ "AD": {
+ "name": "Andorra"
+ },
+ "AO": {
+ "name": "Angola"
+ },
+ "AI": {
+ "name": "Anguilla"
+ },
+ "AQ": {
+ "name": "Antàrtida"
+ },
+ "AG": {
+ "name": "Antigua i Barbuda"
+ },
+ "SA": {
+ "name": "Aràbia Saudita"
+ },
+ "AR": {
+ "name": "Argentina"
+ },
+ "AM": {
+ "name": "Armènia"
+ },
+ "AW": {
+ "name": "Aruba"
+ },
+ "AU": {
+ "name": "Austràlia"
+ },
+ "AT": {
+ "name": "Àustria"
+ },
+ "AZ": {
+ "name": "Azerbaidjan"
+ },
+ "BS": {
+ "name": "Bahames"
+ },
+ "BH": {
+ "name": "Bahrain"
+ },
+ "BD": {
+ "name": "Bangla Desh"
+ },
+ "BB": {
+ "name": "Barbados"
+ },
+ "BE": {
+ "name": "Bèlgica"
+ },
+ "BZ": {
+ "name": "Belize"
+ },
+ "BJ": {
+ "name": "Benín"
+ },
+ "BM": {
+ "name": "Bermudes"
+ },
+ "BT": {
+ "name": "Bhutan"
+ },
+ "BY": {
+ "name": "Bielorússia"
+ },
+ "BO": {
+ "name": "Bolívia"
+ },
+ "BA": {
+ "name": "Bòsnia i Hercegovina"
+ },
+ "BW": {
+ "name": "Botswana"
+ },
+ "BR": {
+ "name": "Brasil"
+ },
+ "BN": {
+ "name": "Brunei"
+ },
+ "BG": {
+ "name": "Bulgària"
+ },
+ "BF": {
+ "name": "Burkina Faso"
+ },
+ "BI": {
+ "name": "Burundi"
+ },
+ "KH": {
+ "name": "Cambodja"
+ },
+ "CM": {
+ "name": "Camerun"
+ },
+ "CA": {
+ "name": "Canadà"
+ },
+ "CV": {
+ "name": "Cap Verd"
+ },
+ "BQ": {
+ "name": "Carib Neerlandès"
+ },
+ "EA": {
+ "name": "Ceuta i Melilla"
+ },
+ "VA": {
+ "name": "Ciutat del Vaticà"
+ },
+ "CO": {
+ "name": "Colòmbia"
+ },
+ "KM": {
+ "name": "Comores"
+ },
+ "CG": {
+ "name": "Congo - Brazzaville"
+ },
+ "CD": {
+ "name": "Congo - Kinshasa"
+ },
+ "KP": {
+ "name": "Corea del Nord"
+ },
+ "KR": {
+ "name": "Corea del Sud"
+ },
+ "CI": {
+ "name": "Costa d’Ivori"
+ },
+ "CR": {
+ "name": "Costa Rica"
+ },
+ "HR": {
+ "name": "Croàcia"
+ },
+ "CU": {
+ "name": "Cuba"
+ },
+ "CW": {
+ "name": "Curaçao"
+ },
+ "DG": {
+ "name": "Diego Garcia"
+ },
+ "DK": {
+ "name": "Dinamarca"
+ },
+ "DJ": {
+ "name": "Djibouti"
+ },
+ "DM": {
+ "name": "Dominica"
+ },
+ "EG": {
+ "name": "Egipte"
+ },
+ "SV": {
+ "name": "El Salvador"
+ },
+ "AE": {
+ "name": "Emirats Àrabs Units"
+ },
+ "EC": {
+ "name": "Equador"
+ },
+ "ER": {
+ "name": "Eritrea"
+ },
+ "SK": {
+ "name": "Eslovàquia"
+ },
+ "SI": {
+ "name": "Eslovènia"
+ },
+ "ES": {
+ "name": "Espanya"
+ },
+ "US": {
+ "name": "Estats Units"
+ },
+ "EE": {
+ "name": "Estònia"
+ },
+ "ET": {
+ "name": "Etiòpia"
+ },
+ "FJ": {
+ "name": "Fiji"
+ },
+ "PH": {
+ "name": "Filipines"
+ },
+ "FI": {
+ "name": "Finlàndia"
+ },
+ "FR": {
+ "name": "França"
+ },
+ "GA": {
+ "name": "Gabon"
+ },
+ "GM": {
+ "name": "Gàmbia"
+ },
+ "GE": {
+ "name": "Geòrgia"
+ },
+ "GH": {
+ "name": "Ghana"
+ },
+ "GI": {
+ "name": "Gibraltar"
+ },
+ "GR": {
+ "name": "Grècia"
+ },
+ "GD": {
+ "name": "Grenada"
+ },
+ "GL": {
+ "name": "Grenlàndia"
+ },
+ "GP": {
+ "name": "Guadeloupe"
+ },
+ "GF": {
+ "name": "Guaiana Francesa"
+ },
+ "GU": {
+ "name": "Guam"
+ },
+ "GT": {
+ "name": "Guatemala"
+ },
+ "GG": {
+ "name": "Guernsey"
+ },
+ "GN": {
+ "name": "Guinea"
+ },
+ "GW": {
+ "name": "Guinea Bissau"
+ },
+ "GQ": {
+ "name": "Guinea Equatorial"
+ },
+ "GY": {
+ "name": "Guyana"
+ },
+ "HT": {
+ "name": "Haití"
+ },
+ "HN": {
+ "name": "Hondures"
+ },
+ "HK": {
+ "name": "Hong Kong (RAE Xina)"
+ },
+ "HU": {
+ "name": "Hongria"
+ },
+ "YE": {
+ "name": "Iemen"
+ },
+ "CX": {
+ "name": "illa Christmas"
+ },
+ "AC": {
+ "name": "illa de l’Ascensió"
+ },
+ "RE": {
+ "name": "Illa de la Reunió"
+ },
+ "IM": {
+ "name": "illa de Man"
+ },
+ "AX": {
+ "name": "illes Ã…land"
+ },
+ "KY": {
+ "name": "Illes Caiman"
+ },
+ "IC": {
+ "name": "illes Canàries"
+ },
+ "CC": {
+ "name": "illes Cocos"
+ },
+ "CK": {
+ "name": "illes Cook"
+ },
+ "FO": {
+ "name": "illes Fèroe"
+ },
+ "GS": {
+ "name": "illes Geòrgia del Sud i Sandwich del Sud"
+ },
+ "FK": {
+ "name": "Illes Malvines"
+ },
+ "MP": {
+ "name": "illes Mariannes del Nord"
+ },
+ "MH": {
+ "name": "illes Marshall"
+ },
+ "UM": {
+ "name": "illes Perifèriques Menors dels EUA"
+ },
+ "PN": {
+ "name": "illes Pitcairn"
+ },
+ "SB": {
+ "name": "illes Salomó"
+ },
+ "TC": {
+ "name": "Illes Turks i Caicos"
+ },
+ "VG": {
+ "name": "Illes Verges Britàniques"
+ },
+ "VI": {
+ "name": "Illes Verges Nord-americanes"
+ },
+ "IN": {
+ "name": "Ãndia"
+ },
+ "ID": {
+ "name": "Indonèsia"
+ },
+ "IR": {
+ "name": "Iran"
+ },
+ "IQ": {
+ "name": "Iraq"
+ },
+ "IE": {
+ "name": "Irlanda"
+ },
+ "IS": {
+ "name": "Islàndia"
+ },
+ "IL": {
+ "name": "Israel"
+ },
+ "IT": {
+ "name": "Itàlia"
+ },
+ "JM": {
+ "name": "Jamaica"
+ },
+ "JP": {
+ "name": "Japó"
+ },
+ "JE": {
+ "name": "Jersey"
+ },
+ "JO": {
+ "name": "Jordània"
+ },
+ "KZ": {
+ "name": "Kazakhstan"
+ },
+ "KE": {
+ "name": "Kenya"
+ },
+ "KG": {
+ "name": "Kirguizistan"
+ },
+ "KI": {
+ "name": "Kiribati"
+ },
+ "XK": {
+ "name": "Kosovo"
+ },
+ "KW": {
+ "name": "Kuwait"
+ },
+ "LA": {
+ "name": "Laos"
+ },
+ "LS": {
+ "name": "Lesotho"
+ },
+ "LV": {
+ "name": "Letònia"
+ },
+ "LB": {
+ "name": "Líban"
+ },
+ "LR": {
+ "name": "Libèria"
+ },
+ "LY": {
+ "name": "Líbia"
+ },
+ "LI": {
+ "name": "Liechtenstein"
+ },
+ "LT": {
+ "name": "Lituània"
+ },
+ "LU": {
+ "name": "Luxemburg"
+ },
+ "MO": {
+ "name": "Macau (RAE Xina)"
+ },
+ "MK": {
+ "name": "Macedònia"
+ },
+ "MG": {
+ "name": "Madagascar"
+ },
+ "MY": {
+ "name": "Malàisia"
+ },
+ "MW": {
+ "name": "Malawi"
+ },
+ "MV": {
+ "name": "Maldives"
+ },
+ "ML": {
+ "name": "Mali"
+ },
+ "MT": {
+ "name": "Malta"
+ },
+ "MA": {
+ "name": "Marroc"
+ },
+ "MQ": {
+ "name": "Martinica"
+ },
+ "MU": {
+ "name": "Maurici"
+ },
+ "MR": {
+ "name": "Mauritània"
+ },
+ "YT": {
+ "name": "Mayotte"
+ },
+ "MX": {
+ "name": "Mèxic"
+ },
+ "FM": {
+ "name": "Micronèsia"
+ },
+ "MZ": {
+ "name": "Moçambic"
+ },
+ "MD": {
+ "name": "Moldàvia"
+ },
+ "MC": {
+ "name": "Mònaco"
+ },
+ "MN": {
+ "name": "Mongòlia"
+ },
+ "ME": {
+ "name": "Montenegro"
+ },
+ "MS": {
+ "name": "Montserrat"
+ },
+ "MM": {
+ "name": "Myanmar (Birmània)"
+ },
+ "NA": {
+ "name": "Namíbia"
+ },
+ "NR": {
+ "name": "Nauru"
+ },
+ "NP": {
+ "name": "Nepal"
+ },
+ "NI": {
+ "name": "Nicaragua"
+ },
+ "NE": {
+ "name": "Níger"
+ },
+ "NG": {
+ "name": "Nigèria"
+ },
+ "NU": {
+ "name": "Niue"
+ },
+ "NF": {
+ "name": "Norfolk"
+ },
+ "NO": {
+ "name": "Noruega"
+ },
+ "NC": {
+ "name": "Nova Caledònia"
+ },
+ "NZ": {
+ "name": "Nova Zelanda"
+ },
+ "OM": {
+ "name": "Oman"
+ },
+ "NL": {
+ "name": "Països Baixos"
+ },
+ "PK": {
+ "name": "Pakistan"
+ },
+ "PW": {
+ "name": "Palau"
+ },
+ "PS": {
+ "name": "Palestina"
+ },
+ "PA": {
+ "name": "Panamà"
+ },
+ "PG": {
+ "name": "Papua Nova Guinea"
+ },
+ "PY": {
+ "name": "Paraguai"
+ },
+ "PE": {
+ "name": "Perú"
+ },
+ "PF": {
+ "name": "Polinèsia Francesa"
+ },
+ "PL": {
+ "name": "Polònia"
+ },
+ "PT": {
+ "name": "Portugal"
+ },
+ "PR": {
+ "name": "Puerto Rico"
+ },
+ "QA": {
+ "name": "Qatar"
+ },
+ "GB": {
+ "name": "Regne Unit"
+ },
+ "CF": {
+ "name": "República Centreafricana"
+ },
+ "ZA": {
+ "name": "República de Sud-àfrica"
+ },
+ "DO": {
+ "name": "República Dominicana"
+ },
+ "CZ": {
+ "name": "República Txeca"
+ },
+ "RO": {
+ "name": "Romania"
+ },
+ "RW": {
+ "name": "Ruanda"
+ },
+ "RU": {
+ "name": "Rússia"
+ },
+ "EH": {
+ "name": "Sàhara Occidental"
+ },
+ "BL": {
+ "name": "Saint Barthélemy"
+ },
+ "KN": {
+ "name": "Saint Christopher i Nevis"
+ },
+ "SH": {
+ "name": "Saint Helena"
+ },
+ "LC": {
+ "name": "Saint Lucia"
+ },
+ "MF": {
+ "name": "Saint Martin"
+ },
+ "VC": {
+ "name": "Saint Vincent i les Grenadines"
+ },
+ "PM": {
+ "name": "Saint-Pierre-et-Miquelon"
+ },
+ "WS": {
+ "name": "Samoa"
+ },
+ "AS": {
+ "name": "Samoa Nord-americana"
+ },
+ "SM": {
+ "name": "San Marino"
+ },
+ "ST": {
+ "name": "São Tomé i Príncipe"
+ },
+ "SN": {
+ "name": "Senegal"
+ },
+ "RS": {
+ "name": "Sèrbia"
+ },
+ "SC": {
+ "name": "Seychelles"
+ },
+ "SL": {
+ "name": "Sierra Leone"
+ },
+ "SG": {
+ "name": "Singapur"
+ },
+ "SX": {
+ "name": "Sint Maarten"
+ },
+ "SY": {
+ "name": "Síria"
+ },
+ "SO": {
+ "name": "Somàlia"
+ },
+ "LK": {
+ "name": "Sri Lanka"
+ },
+ "SD": {
+ "name": "Sudan"
+ },
+ "SS": {
+ "name": "Sudan del Sud"
+ },
+ "SE": {
+ "name": "Suècia"
+ },
+ "CH": {
+ "name": "Suïssa"
+ },
+ "SR": {
+ "name": "Surinam"
+ },
+ "SJ": {
+ "name": "Svalbard i Jan Mayen"
+ },
+ "SZ": {
+ "name": "Swazilàndia"
+ },
+ "TJ": {
+ "name": "Tadjikistan"
+ },
+ "TH": {
+ "name": "Tailàndia"
+ },
+ "TW": {
+ "name": "Taiwan"
+ },
+ "TZ": {
+ "name": "Tanzània"
+ },
+ "IO": {
+ "name": "Territori Britànic de l’Oceà Ãndic"
+ },
+ "TF": {
+ "name": "Territoris Francesos del Sud"
+ },
+ "TL": {
+ "name": "Timor Oriental"
+ },
+ "TG": {
+ "name": "Togo"
+ },
+ "TK": {
+ "name": "Tokelau"
+ },
+ "TO": {
+ "name": "Tonga"
+ },
+ "TT": {
+ "name": "Trinitat i Tobago"
+ },
+ "TA": {
+ "name": "Tristão da Cunha"
+ },
+ "TN": {
+ "name": "Tunísia"
+ },
+ "TM": {
+ "name": "Turkmenistan"
+ },
+ "TR": {
+ "name": "Turquia"
+ },
+ "TV": {
+ "name": "Tuvalu"
+ },
+ "TD": {
+ "name": "Txad"
+ },
+ "UA": {
+ "name": "Ucraïna"
+ },
+ "UG": {
+ "name": "Uganda"
+ },
+ "UY": {
+ "name": "Uruguai"
+ },
+ "UZ": {
+ "name": "Uzbekistan"
+ },
+ "VU": {
+ "name": "Vanuatu"
+ },
+ "VE": {
+ "name": "Veneçuela"
+ },
+ "VN": {
+ "name": "Vietnam"
+ },
+ "WF": {
+ "name": "Wallis i Futuna"
+ },
+ "CL": {
+ "name": "Xile"
+ },
+ "CN": {
+ "name": "Xina"
+ },
+ "CY": {
+ "name": "Xipre"
+ },
+ "ZM": {
+ "name": "Zàmbia"
+ },
+ "ZW": {
+ "name": "Zimbàbue"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/country/cgg.json b/library/intl/resources/country/cgg.json
new file mode 100644
index 000000000..7d1d151c7
--- /dev/null
+++ b/library/intl/resources/country/cgg.json
@@ -0,0 +1,761 @@
+{
+ "AF": {
+ "name": "Afuganistani"
+ },
+ "IS": {
+ "name": "Aisilandi"
+ },
+ "CI": {
+ "name": "Aivore Kositi"
+ },
+ "AX": {
+ "name": "Ã…land Islands"
+ },
+ "AE": {
+ "name": "Amahanga ga Buharabu ageeteereine"
+ },
+ "US": {
+ "name": "Amerika"
+ },
+ "AD": {
+ "name": "Andora"
+ },
+ "AG": {
+ "name": "Angiguwa na Babuda"
+ },
+ "AO": {
+ "name": "Angora"
+ },
+ "AI": {
+ "name": "Angwira"
+ },
+ "AQ": {
+ "name": "Antarctica"
+ },
+ "AR": {
+ "name": "Arigentina"
+ },
+ "DZ": {
+ "name": "Arigyeriya"
+ },
+ "AM": {
+ "name": "Arimeniya"
+ },
+ "AW": {
+ "name": "Aruba"
+ },
+ "AL": {
+ "name": "Arubania"
+ },
+ "AC": {
+ "name": "Ascension Island"
+ },
+ "AZ": {
+ "name": "Azabagyani"
+ },
+ "BB": {
+ "name": "Babadosi"
+ },
+ "BS": {
+ "name": "Bahama"
+ },
+ "BH": {
+ "name": "Bahareni"
+ },
+ "BD": {
+ "name": "Bangaradeshi"
+ },
+ "BY": {
+ "name": "Bararusi"
+ },
+ "BJ": {
+ "name": "Benini"
+ },
+ "BM": {
+ "name": "Berimuda"
+ },
+ "BZ": {
+ "name": "Berize"
+ },
+ "BF": {
+ "name": "Bokina Faso"
+ },
+ "BO": {
+ "name": "Boriiviya"
+ },
+ "BW": {
+ "name": "Botswana"
+ },
+ "BA": {
+ "name": "Boziniya na Hezegovina"
+ },
+ "IO": {
+ "name": "British Indian Ocean Territory"
+ },
+ "BE": {
+ "name": "Bubirigi"
+ },
+ "FR": {
+ "name": "Bufaransa"
+ },
+ "FI": {
+ "name": "Bufini"
+ },
+ "DE": {
+ "name": "Bugirimaani"
+ },
+ "GB": {
+ "name": "Bungyereza"
+ },
+ "BR": {
+ "name": "Buraziiri"
+ },
+ "BG": {
+ "name": "Burugariya"
+ },
+ "TL": {
+ "name": "Burugweizooba bwa Timori"
+ },
+ "BI": {
+ "name": "Burundi"
+ },
+ "BN": {
+ "name": "Burunei"
+ },
+ "BT": {
+ "name": "Butani"
+ },
+ "TR": {
+ "name": "Buturuki \/Take"
+ },
+ "IC": {
+ "name": "Canary Islands"
+ },
+ "BQ": {
+ "name": "Caribbean Netherlands"
+ },
+ "EA": {
+ "name": "Ceuta & Melilla"
+ },
+ "TD": {
+ "name": "Chadi"
+ },
+ "CL": {
+ "name": "Chile"
+ },
+ "CN": {
+ "name": "China"
+ },
+ "CX": {
+ "name": "Christmas Island"
+ },
+ "CC": {
+ "name": "Cocos (Keeling) Islands"
+ },
+ "CU": {
+ "name": "Cuba"
+ },
+ "CW": {
+ "name": "Curaçao"
+ },
+ "DK": {
+ "name": "Deenimaaka"
+ },
+ "CD": {
+ "name": "Demokoratika Ripaaburika ya Kongo"
+ },
+ "DG": {
+ "name": "Diego Garcia"
+ },
+ "DM": {
+ "name": "Dominika"
+ },
+ "MP": {
+ "name": "Ebizinga by’amatemba ga Mariana"
+ },
+ "TC": {
+ "name": "Ebizinga bya Buturuki na Kaiko"
+ },
+ "FK": {
+ "name": "Ebizinga bya Faakilanda"
+ },
+ "KY": {
+ "name": "Ebizinga bya Kayimani"
+ },
+ "CV": {
+ "name": "Ebizinga bya Kepuvade"
+ },
+ "CK": {
+ "name": "Ebizinga bya Kuuku"
+ },
+ "MH": {
+ "name": "Ebizinga bya Marshaa"
+ },
+ "SB": {
+ "name": "Ebizinga bya Surimaani"
+ },
+ "VI": {
+ "name": "Ebizinga bya Virigini ebya Amerika"
+ },
+ "VG": {
+ "name": "Ebizinga bya Virigini ebya Bungyereza"
+ },
+ "CF": {
+ "name": "Eihanga rya Rwagati ya Afirika"
+ },
+ "NF": {
+ "name": "Ekizinga Norifoko"
+ },
+ "SV": {
+ "name": "Eri Salivado"
+ },
+ "ER": {
+ "name": "Eriteriya"
+ },
+ "EE": {
+ "name": "Esitoniya"
+ },
+ "ET": {
+ "name": "Ethiyopiya"
+ },
+ "FO": {
+ "name": "Faroe Islands"
+ },
+ "FJ": {
+ "name": "Figyi"
+ },
+ "PH": {
+ "name": "Firipino"
+ },
+ "TF": {
+ "name": "French Southern Territories"
+ },
+ "GA": {
+ "name": "Gabooni"
+ },
+ "GM": {
+ "name": "Gambiya"
+ },
+ "GH": {
+ "name": "Gana"
+ },
+ "GI": {
+ "name": "Giburaata"
+ },
+ "GN": {
+ "name": "Gine"
+ },
+ "GW": {
+ "name": "Ginebisau"
+ },
+ "GG": {
+ "name": "Guernsey"
+ },
+ "GQ": {
+ "name": "Guni"
+ },
+ "GD": {
+ "name": "Gurenada"
+ },
+ "GL": {
+ "name": "Guriinirandi"
+ },
+ "GR": {
+ "name": "Guriisi"
+ },
+ "GY": {
+ "name": "Guyana"
+ },
+ "GF": {
+ "name": "Guyana ya Bufaransa"
+ },
+ "GP": {
+ "name": "Gwaderupe"
+ },
+ "GU": {
+ "name": "Gwamu"
+ },
+ "GT": {
+ "name": "Gwatemara"
+ },
+ "JM": {
+ "name": "Gyamaika"
+ },
+ "JP": {
+ "name": "Gyapaani"
+ },
+ "DJ": {
+ "name": "Gyibuti"
+ },
+ "GE": {
+ "name": "Gyogiya"
+ },
+ "HT": {
+ "name": "Haiti"
+ },
+ "HU": {
+ "name": "Hangare"
+ },
+ "HN": {
+ "name": "Hondurasi"
+ },
+ "HK": {
+ "name": "Hong Kong SAR China"
+ },
+ "NL": {
+ "name": "Hoorandi"
+ },
+ "EC": {
+ "name": "Ikweda"
+ },
+ "IN": {
+ "name": "Indiya"
+ },
+ "ID": {
+ "name": "Indoneeziya"
+ },
+ "IQ": {
+ "name": "Iraaka"
+ },
+ "IR": {
+ "name": "Iraani"
+ },
+ "IE": {
+ "name": "Irerandi"
+ },
+ "IL": {
+ "name": "Isirairi"
+ },
+ "IM": {
+ "name": "Isle of Man"
+ },
+ "IT": {
+ "name": "Itare"
+ },
+ "JE": {
+ "name": "Jersey"
+ },
+ "KH": {
+ "name": "Kambodiya"
+ },
+ "CM": {
+ "name": "Kameruuni"
+ },
+ "CA": {
+ "name": "Kanada"
+ },
+ "QA": {
+ "name": "Kata"
+ },
+ "KZ": {
+ "name": "Kazakisitani"
+ },
+ "KE": {
+ "name": "Kenya"
+ },
+ "KI": {
+ "name": "Kiribati"
+ },
+ "KG": {
+ "name": "Kirigizistani"
+ },
+ "CG": {
+ "name": "Kongo"
+ },
+ "HR": {
+ "name": "Korasiya"
+ },
+ "KR": {
+ "name": "Koreya Amashuuma"
+ },
+ "KP": {
+ "name": "Koreya Amatemba"
+ },
+ "CO": {
+ "name": "Korombiya"
+ },
+ "KM": {
+ "name": "Koromo"
+ },
+ "CR": {
+ "name": "Kositarika"
+ },
+ "XK": {
+ "name": "Kosovo"
+ },
+ "KW": {
+ "name": "Kuweiti"
+ },
+ "LU": {
+ "name": "Lakizembaaga"
+ },
+ "LV": {
+ "name": "Latviya"
+ },
+ "LA": {
+ "name": "Layosi"
+ },
+ "LB": {
+ "name": "Lebanoni"
+ },
+ "LS": {
+ "name": "Lesotho"
+ },
+ "LR": {
+ "name": "Liberiya"
+ },
+ "LY": {
+ "name": "Libya"
+ },
+ "LI": {
+ "name": "Lishenteni"
+ },
+ "LT": {
+ "name": "Lithuania"
+ },
+ "MO": {
+ "name": "Macau SAR China"
+ },
+ "MG": {
+ "name": "Madagasika"
+ },
+ "MW": {
+ "name": "Marawi"
+ },
+ "MY": {
+ "name": "marayizia"
+ },
+ "ML": {
+ "name": "Mari"
+ },
+ "MV": {
+ "name": "Maridives"
+ },
+ "MT": {
+ "name": "Marita"
+ },
+ "MQ": {
+ "name": "Martinique"
+ },
+ "MK": {
+ "name": "Masedoonia"
+ },
+ "MU": {
+ "name": "Maurishiasi"
+ },
+ "MR": {
+ "name": "Mauriteeniya"
+ },
+ "YT": {
+ "name": "Mayote"
+ },
+ "MX": {
+ "name": "Mexico"
+ },
+ "FM": {
+ "name": "Mikironesiya"
+ },
+ "EG": {
+ "name": "Misiri"
+ },
+ "MC": {
+ "name": "Monaco"
+ },
+ "MN": {
+ "name": "Mongoria"
+ },
+ "ME": {
+ "name": "Montenegro"
+ },
+ "MS": {
+ "name": "Montserrati"
+ },
+ "MD": {
+ "name": "Moridova"
+ },
+ "MA": {
+ "name": "Morocco"
+ },
+ "MZ": {
+ "name": "Mozambique"
+ },
+ "MM": {
+ "name": "Myanamar"
+ },
+ "NE": {
+ "name": "Naigya"
+ },
+ "NG": {
+ "name": "Naigyeriya"
+ },
+ "NA": {
+ "name": "Namibiya"
+ },
+ "NR": {
+ "name": "Nauru"
+ },
+ "NP": {
+ "name": "Nepo"
+ },
+ "NI": {
+ "name": "Nikaragwa"
+ },
+ "NU": {
+ "name": "Niue"
+ },
+ "NC": {
+ "name": "Niukaredonia"
+ },
+ "NZ": {
+ "name": "Niuzirandi"
+ },
+ "NO": {
+ "name": "Noorwe"
+ },
+ "OM": {
+ "name": "Omaani"
+ },
+ "AU": {
+ "name": "Ositureeriya"
+ },
+ "AT": {
+ "name": "Osituria"
+ },
+ "PK": {
+ "name": "Pakisitaani"
+ },
+ "PW": {
+ "name": "Palaawu"
+ },
+ "PS": {
+ "name": "Palestinian Territories"
+ },
+ "PA": {
+ "name": "Panama"
+ },
+ "PG": {
+ "name": "Papua"
+ },
+ "PY": {
+ "name": "Paragwai"
+ },
+ "PE": {
+ "name": "Peru"
+ },
+ "PN": {
+ "name": "Pitkaini"
+ },
+ "PT": {
+ "name": "Pocugo"
+ },
+ "PF": {
+ "name": "Polinesia ya Bufaransa"
+ },
+ "PL": {
+ "name": "Poorandi"
+ },
+ "PR": {
+ "name": "Pwetoriko"
+ },
+ "DO": {
+ "name": "Ripaaburika ya Dominica"
+ },
+ "CZ": {
+ "name": "Ripaaburika ya Zeeki"
+ },
+ "RE": {
+ "name": "Riyuniyoni"
+ },
+ "RO": {
+ "name": "Romaniya"
+ },
+ "RU": {
+ "name": "Rrasha"
+ },
+ "RW": {
+ "name": "Rwanda"
+ },
+ "CY": {
+ "name": "Saipurasi"
+ },
+ "SM": {
+ "name": "Samarino"
+ },
+ "WS": {
+ "name": "Samowa"
+ },
+ "AS": {
+ "name": "Samowa ya Ameerika"
+ },
+ "SA": {
+ "name": "Saudi Areebiya"
+ },
+ "ZA": {
+ "name": "Sausi Afirika"
+ },
+ "ST": {
+ "name": "Sawo Tome na Purinsipo"
+ },
+ "SN": {
+ "name": "Senego"
+ },
+ "SH": {
+ "name": "Senti Herena"
+ },
+ "KN": {
+ "name": "Senti Kittis na Nevisi"
+ },
+ "PM": {
+ "name": "Senti Piyerre na Mikweron"
+ },
+ "LC": {
+ "name": "Senti Rusiya"
+ },
+ "VC": {
+ "name": "Senti Vinsent na Gurenadini"
+ },
+ "RS": {
+ "name": "Serbia"
+ },
+ "SC": {
+ "name": "Shesheresi"
+ },
+ "SG": {
+ "name": "Singapo"
+ },
+ "SX": {
+ "name": "Sint Maarten"
+ },
+ "ES": {
+ "name": "Sipeyini"
+ },
+ "LK": {
+ "name": "Siriranka"
+ },
+ "SY": {
+ "name": "Siriya"
+ },
+ "SK": {
+ "name": "Sirovaakiya"
+ },
+ "SI": {
+ "name": "Sirovaaniya"
+ },
+ "SL": {
+ "name": "Sirra Riyooni"
+ },
+ "SO": {
+ "name": "Somaariya"
+ },
+ "GS": {
+ "name": "South Georgia & South Sandwich Islands"
+ },
+ "SS": {
+ "name": "South Sudan"
+ },
+ "BL": {
+ "name": "St. Barthélemy"
+ },
+ "MF": {
+ "name": "St. Martin"
+ },
+ "SD": {
+ "name": "Sudani"
+ },
+ "SR": {
+ "name": "Surinaamu"
+ },
+ "SJ": {
+ "name": "Svalbard & Jan Mayen"
+ },
+ "SZ": {
+ "name": "Swazirandi"
+ },
+ "SE": {
+ "name": "Swideni"
+ },
+ "CH": {
+ "name": "Swisi"
+ },
+ "TH": {
+ "name": "Tairandi"
+ },
+ "TJ": {
+ "name": "Tajikisitani"
+ },
+ "TZ": {
+ "name": "Tanzania"
+ },
+ "TW": {
+ "name": "Tayiwaani"
+ },
+ "TG": {
+ "name": "Togo"
+ },
+ "TK": {
+ "name": "Tokerawu"
+ },
+ "TO": {
+ "name": "Tonga"
+ },
+ "TA": {
+ "name": "Tristan da Cunha"
+ },
+ "TN": {
+ "name": "Tunizia"
+ },
+ "TT": {
+ "name": "Turinidad na Tobago"
+ },
+ "TM": {
+ "name": "Turukimenisitani"
+ },
+ "TV": {
+ "name": "Tuvaru"
+ },
+ "UM": {
+ "name": "U.S. Outlying Islands"
+ },
+ "UG": {
+ "name": "Uganda"
+ },
+ "UA": {
+ "name": "Ukureini"
+ },
+ "UY": {
+ "name": "Urugwai"
+ },
+ "UZ": {
+ "name": "Uzibekisitani"
+ },
+ "VU": {
+ "name": "Vanuatu"
+ },
+ "VA": {
+ "name": "Vatikani"
+ },
+ "VE": {
+ "name": "Venezuwera"
+ },
+ "VN": {
+ "name": "Viyetinaamu"
+ },
+ "WF": {
+ "name": "Warris na Futuna"
+ },
+ "EH": {
+ "name": "Western Sahara"
+ },
+ "YE": {
+ "name": "Yemeni"
+ },
+ "JO": {
+ "name": "Yorudaani"
+ },
+ "ZM": {
+ "name": "Zambia"
+ },
+ "ZW": {
+ "name": "Zimbabwe"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/country/chr.json b/library/intl/resources/country/chr.json
new file mode 100644
index 000000000..a42342766
--- /dev/null
+++ b/library/intl/resources/country/chr.json
@@ -0,0 +1,761 @@
+{
+ "AC": {
+ "name": "Ascension Island"
+ },
+ "VG": {
+ "name": "British Virgin Islands"
+ },
+ "IC": {
+ "name": "Canary Islands"
+ },
+ "BQ": {
+ "name": "Caribbean Netherlands"
+ },
+ "EA": {
+ "name": "Ceuta & Melilla"
+ },
+ "TD": {
+ "name": "Chad"
+ },
+ "DG": {
+ "name": "Diego Garcia"
+ },
+ "SV": {
+ "name": "El Salvador"
+ },
+ "ET": {
+ "name": "Ethiopia"
+ },
+ "TF": {
+ "name": "French Southern Territories"
+ },
+ "HN": {
+ "name": "Honduras"
+ },
+ "XK": {
+ "name": "Kosovo"
+ },
+ "YT": {
+ "name": "Mayotte"
+ },
+ "NE": {
+ "name": "Niger"
+ },
+ "RE": {
+ "name": "Réunion"
+ },
+ "WS": {
+ "name": "Samoa"
+ },
+ "SM": {
+ "name": "San Marino"
+ },
+ "ST": {
+ "name": "São Tomé & Príncipe"
+ },
+ "SN": {
+ "name": "Senegal"
+ },
+ "SX": {
+ "name": "Sint Maarten"
+ },
+ "SO": {
+ "name": "Somalia"
+ },
+ "ZA": {
+ "name": "South Africa"
+ },
+ "SS": {
+ "name": "South Sudan"
+ },
+ "LC": {
+ "name": "St. Lucia"
+ },
+ "VC": {
+ "name": "St. Vincent & Grenadines"
+ },
+ "SR": {
+ "name": "Suriname"
+ },
+ "SJ": {
+ "name": "Svalbard & Jan Mayen"
+ },
+ "SZ": {
+ "name": "Swaziland"
+ },
+ "SY": {
+ "name": "Syria"
+ },
+ "TW": {
+ "name": "Taiwan"
+ },
+ "TJ": {
+ "name": "Tajikistan"
+ },
+ "TZ": {
+ "name": "Tanzania"
+ },
+ "TH": {
+ "name": "Thailand"
+ },
+ "TL": {
+ "name": "Timor-Leste"
+ },
+ "TG": {
+ "name": "Togo"
+ },
+ "TK": {
+ "name": "Tokelau"
+ },
+ "TO": {
+ "name": "Tonga"
+ },
+ "TT": {
+ "name": "Trinidad & Tobago"
+ },
+ "TA": {
+ "name": "Tristan da Cunha"
+ },
+ "TN": {
+ "name": "Tunisia"
+ },
+ "TR": {
+ "name": "Turkey"
+ },
+ "TM": {
+ "name": "Turkmenistan"
+ },
+ "TC": {
+ "name": "Turks & Caicos Islands"
+ },
+ "TV": {
+ "name": "Tuvalu"
+ },
+ "UM": {
+ "name": "U.S. Outlying Islands"
+ },
+ "VI": {
+ "name": "U.S. Virgin Islands"
+ },
+ "UG": {
+ "name": "Uganda"
+ },
+ "UA": {
+ "name": "Ukraine"
+ },
+ "UY": {
+ "name": "Uruguay"
+ },
+ "UZ": {
+ "name": "Uzbekistan"
+ },
+ "VU": {
+ "name": "Vanuatu"
+ },
+ "VA": {
+ "name": "Vatican City"
+ },
+ "VE": {
+ "name": "Venezuela"
+ },
+ "VN": {
+ "name": "Vietnam"
+ },
+ "WF": {
+ "name": "Wallis & Futuna"
+ },
+ "EH": {
+ "name": "Western Sahara"
+ },
+ "YE": {
+ "name": "Yemen"
+ },
+ "ZM": {
+ "name": "Zambia"
+ },
+ "ZW": {
+ "name": "Zimbabwe"
+ },
+ "IE": {
+ "name": "ᎠᎢᎴá‚á—"
+ },
+ "AM": {
+ "name": "ᎠᎵᎻá‚Ꭰ"
+ },
+ "AL": {
+ "name": "ᎠᎵá‡á‚á¯"
+ },
+ "DZ": {
+ "name": "ᎠᎵá¥áŽµá¯"
+ },
+ "AW": {
+ "name": "ᎠᎷá†"
+ },
+ "US": {
+ "name": "ᎠᎹá°áŸ"
+ },
+ "AS": {
+ "name": "ᎠᎺᎵᎧ áŒáŽ¼áŽ "
+ },
+ "PF": {
+ "name": "Ꭰá‚ᎦᎸᣠá†áŽµá‚áᎠ"
+ },
+ "GF": {
+ "name": "Ꭰá‚ᎦᎸᥠᎩᎠ"
+ },
+ "AI": {
+ "name": "Ꭰá‚ᎩᎳ"
+ },
+ "AO": {
+ "name": "Ꭰá‚ᎪᎳ"
+ },
+ "PH": {
+ "name": "Ꭰá‚áˆáŽµáŽ©áƒ"
+ },
+ "ES": {
+ "name": "Ꭰá‚áá†á‚á±"
+ },
+ "AD": {
+ "name": "Ꭰá‚á™áŽ³"
+ },
+ "DE": {
+ "name": "Ꭰá‚á›á¥"
+ },
+ "AT": {
+ "name": "ᎠááŸá¯"
+ },
+ "AZ": {
+ "name": "ᎠáᎵá†áŒá‚"
+ },
+ "CK": {
+ "name": "Ꭰá“áá“á´áŽ²áᎩ ᎤᎦášá›"
+ },
+ "SH": {
+ "name": "Ꭰá¥áŽ¸á‰á— ᎮᎵᎾ"
+ },
+ "BL": {
+ "name": "Ꭰá¥áŽ¸á‰á— á†á•áŽ³áŽ»"
+ },
+ "MF": {
+ "name": "Ꭰá¥áŽ¸á‰á— á¡á¡"
+ },
+ "AR": {
+ "name": "Ꭰá¥á‚á˜á‚Ꭰ"
+ },
+ "AF": {
+ "name": "Ꭰá«áŽ¨á‚áá–á‚"
+ },
+ "KN": {
+ "name": "Ꭰá°áŸ ᎾᎿ Ꭸá¥áŽ¸á‰á— Ꭰá‚áªáŒ ᎠᎴ Ꭰá‚áá«á"
+ },
+ "FM": {
+ "name": "Ꭰá°áŸ á§áŽ¾áŽµáŽªáŽ¯ ᎾᎿ ᎹᎢá‰á‚áá¯"
+ },
+ "AU": {
+ "name": "ᎡᎳá—áœ"
+ },
+ "ER": {
+ "name": "ᎡᎵáŸá¯"
+ },
+ "EC": {
+ "name": "Ꭱá†á™áŽµ"
+ },
+ "GQ": {
+ "name": "Ꭱá†á™áŽµáŽ áŽµ ᎩᎢá‚"
+ },
+ "EE": {
+ "name": "Ꭱáá™á‚á¯"
+ },
+ "CV": {
+ "name": "ᎢᎬᎾá•áŽ¾ Ꭲá¤á³áá—"
+ },
+ "IQ": {
+ "name": "ᎢᎳᎩ"
+ },
+ "IR": {
+ "name": "ᎢᎴá‚"
+ },
+ "ID": {
+ "name": "Ꭲá‚á™á‚áá¯"
+ },
+ "IN": {
+ "name": "Ꭲá…á—Ꮎ"
+ },
+ "IL": {
+ "name": "ᎢáᎵá±"
+ },
+ "NC": {
+ "name": "ᎢᤠᎧᎵá™á‚Ꭰá‚"
+ },
+ "NZ": {
+ "name": "ᎢᤠáᎢᎴá‚á—"
+ },
+ "GL": {
+ "name": "Ꭲá¤áá›á±"
+ },
+ "EG": {
+ "name": "Ꭲá¥áˆáŽ¢"
+ },
+ "CI": {
+ "name": "Ꭲá¬áŽµ ᎾᎿ ᎠᎹá³áŽ¶á—"
+ },
+ "AX": {
+ "name": "ᎣᎴá…á“ ášáŽ¦ášá›"
+ },
+ "OM": {
+ "name": "ᎣᎺá‚"
+ },
+ "IM": {
+ "name": "ᎤáᗠᎤᎦášá› ᎾᎿ ᎠáᎦá¯"
+ },
+ "AG": {
+ "name": "Ꭴáªá˜ ᎠᎴ á†áŠá“"
+ },
+ "GH": {
+ "name": "ᎦᎠᎾ"
+ },
+ "FR": {
+ "name": "ᎦᎸá¥á±"
+ },
+ "GM": {
+ "name": "ᎦᎹáˆáŽ¢áŽ "
+ },
+ "GA": {
+ "name": "Ꭶá‰á‚"
+ },
+ "GY": {
+ "name": "Ꭶá¯áŽ¾"
+ },
+ "KI": {
+ "name": "ᎧᎵá†á˜"
+ },
+ "HR": {
+ "name": "ᎧᎶᎡáᎠ"
+ },
+ "CM": {
+ "name": "ᎧᎹᎷá‚"
+ },
+ "KH": {
+ "name": "ᎧᎹá‰á—Ꭰá‚"
+ },
+ "CD": {
+ "name": "Ꭷá‚Ꭺ"
+ },
+ "CG": {
+ "name": "Ꭷá‚Ꭺ (áᎦášáŽ©)"
+ },
+ "KZ": {
+ "name": "ᎧáŽáŽ§áá•á‚"
+ },
+ "QA": {
+ "name": "Ꭷá”Ꮅ"
+ },
+ "KY": {
+ "name": "ᎨᎢᎹႠášáŽ¦ášá›áŽ¢"
+ },
+ "CA": {
+ "name": "ᎨᎾá“"
+ },
+ "KE": {
+ "name": "Ꭸá‚á¯"
+ },
+ "GB": {
+ "name": "ᎩᎵáá²"
+ },
+ "KG": {
+ "name": "ᎩᎵá£áŽ¢á"
+ },
+ "GR": {
+ "name": "ᎪᎢᎯ"
+ },
+ "CC": {
+ "name": "ᎪᎪá (ᎩᎵá‚) ášáŽ¦ášá›"
+ },
+ "CO": {
+ "name": "ᎪᎸᎻáˆáŽ¢áŽ "
+ },
+ "KM": {
+ "name": "ᎪᎼᎳá"
+ },
+ "CR": {
+ "name": "ᎪáᓠᎵᎧ"
+ },
+ "CU": {
+ "name": "Ꭻá†"
+ },
+ "GN": {
+ "name": "Ꭻá‡"
+ },
+ "GW": {
+ "name": "Ꭻá‡-áˆáŒáŽ¤á«"
+ },
+ "KW": {
+ "name": "ᎫáªáŽ¢á˜"
+ },
+ "CF": {
+ "name": "ᎬᎿᎨáᛠᎠá°áŸ áᎦášáŽ©"
+ },
+ "GG": {
+ "name": "Ꭼá‚á"
+ },
+ "HT": {
+ "name": "ᎮᎢá˜"
+ },
+ "HK": {
+ "name": "Ꮀá‚Ꭹ Ꭺá‚Ꭹ"
+ },
+ "HU": {
+ "name": "Ꮂá‚ᎦᎵ"
+ },
+ "LR": {
+ "name": "ᎳáˆáŽµá¯"
+ },
+ "LV": {
+ "name": "Ꮃá˜á«áŽ "
+ },
+ "LA": {
+ "name": "ᎴᎣá"
+ },
+ "LB": {
+ "name": "Ꮄá†áŽ¾á‚"
+ },
+ "LS": {
+ "name": "Ꮄáá™"
+ },
+ "LI": {
+ "name": "ᎵᎦá—á‚áá“á‚"
+ },
+ "LY": {
+ "name": "Ꮅáˆá¯"
+ },
+ "LT": {
+ "name": "Ꮅá—áªá‚Ꭰ"
+ },
+ "RO": {
+ "name": "ᎶᎹá‚á¯"
+ },
+ "RW": {
+ "name": "Ꮆá©á‚á“"
+ },
+ "LU": {
+ "name": "ᎸᎧáŽá‹áŽ©"
+ },
+ "MO": {
+ "name": "ᎹᎧᎣ (Ꭴá“á¤áŽµá“ á§á‚Ꮈá«áá“áᗠᎢᎬᎾá•áŽ¾) á£áŽ¢"
+ },
+ "MW": {
+ "name": "ᎹᎳá«"
+ },
+ "MY": {
+ "name": "ᎹᎴáᎢᎠ"
+ },
+ "ML": {
+ "name": "ᎹᎵ"
+ },
+ "MT": {
+ "name": "ᎹᎵá”"
+ },
+ "MV": {
+ "name": "ᎹᎵá—á«á"
+ },
+ "MD": {
+ "name": "ᎹᎵá™á«áŽ "
+ },
+ "MC": {
+ "name": "ᎹᎾᎪ"
+ },
+ "MN": {
+ "name": "Ꮉá‚ᎪᎵᎠ"
+ },
+ "MS": {
+ "name": "Ꮉá‚á˜áŒáŽ³á—"
+ },
+ "MH": {
+ "name": "ᎹáŒáŽµ ášáŽªášá›"
+ },
+ "MK": {
+ "name": "Ꮉáá™á‚ᎢᎠ"
+ },
+ "MG": {
+ "name": "Ꮉá“ᎦáᎧᎵ"
+ },
+ "MR": {
+ "name": "Ꮉá˜áŽ¢á¯"
+ },
+ "MQ": {
+ "name": "Ꮉá˜á‚Ꭸ"
+ },
+ "MM": {
+ "name": "Ꮉá¯áŽ¹áŽµ"
+ },
+ "MU": {
+ "name": "ᎼᎵáᎥá"
+ },
+ "MA": {
+ "name": "ᎼᎶᎪ"
+ },
+ "ME": {
+ "name": "Ꮌá‚á”áᎦᎶ"
+ },
+ "MZ": {
+ "name": "ᎼáŽáŽ»á‡áŽ©"
+ },
+ "NA": {
+ "name": "ᎾᎻáˆáŽ¢á¯"
+ },
+ "MP": {
+ "name": "ᎾáᎩ Ꭴá´á¢ á—ᜠᎹᎵᎠᎾ ášáŽ¦ášá›"
+ },
+ "BS": {
+ "name": "ᎾáᎩ á†áŽ­áŽ¹á"
+ },
+ "NP": {
+ "name": "áá†áŽµ"
+ },
+ "NL": {
+ "name": "áá›áŽ³á‚"
+ },
+ "CW": {
+ "name": "á‚ᎦᓠᎤá‚Ꮂ ᎾᎿ ᎫᎳᎨᎣ"
+ },
+ "NI": {
+ "name": "á‚ᎧᎳá†"
+ },
+ "NG": {
+ "name": "á‚á¥áŽµá¯"
+ },
+ "NU": {
+ "name": "á‚á³"
+ },
+ "NR": {
+ "name": "áƒáŽ¤áŽ·"
+ },
+ "NF": {
+ "name": "áƒáŽµá¬áŽµáŽ© ᎤᎦášá›"
+ },
+ "NO": {
+ "name": "áƒáª"
+ },
+ "PK": {
+ "name": "á†áŽ©áá–á‚"
+ },
+ "BH": {
+ "name": "á†áŽ­áŽ´áŽ¢á‚"
+ },
+ "PY": {
+ "name": "á†áŽ³á‡áŽ¢á¯"
+ },
+ "PW": {
+ "name": "á†áŽ´áŽ á«"
+ },
+ "PS": {
+ "name": "á†áŽ´áá—á‚ᎠႠá„Ꭼá«á³áŒá•áŽ©"
+ },
+ "GU": {
+ "name": "á†áŽ»"
+ },
+ "PA": {
+ "name": "á†áŽ¾áŽ¹"
+ },
+ "BJ": {
+ "name": "á†á‚Ꭲá‚"
+ },
+ "BD": {
+ "name": "á†á‚ᎦᎵá•á"
+ },
+ "PG": {
+ "name": "á†á‡ ᎢᤠᎩá‚"
+ },
+ "BB": {
+ "name": "á†á‡á™á"
+ },
+ "BM": {
+ "name": "á†áŠá“"
+ },
+ "BR": {
+ "name": "á†áᎵᎢ"
+ },
+ "BW": {
+ "name": "á†á£á©áŽ¾"
+ },
+ "PR": {
+ "name": "á‡áŽ¡á™ ᎵᎢᎪ"
+ },
+ "BY": {
+ "name": "á‡áŽ³áŽ·á"
+ },
+ "BZ": {
+ "name": "á‡áŽµá"
+ },
+ "BE": {
+ "name": "á‡áŽµá¥áŽ¥áŽ»"
+ },
+ "PE": {
+ "name": "á‡áŽ·"
+ },
+ "PN": {
+ "name": "áˆáŽ§áŽµá‚ ᎤᎦášá›áŽ¢"
+ },
+ "IO": {
+ "name": "áˆá—á á´á«á¯ ᎠᎺበᎢᎬᎾá•á…"
+ },
+ "PL": {
+ "name": "á‰áŽ³á‚"
+ },
+ "BO": {
+ "name": "á‰áŽµá«áŽ "
+ },
+ "BA": {
+ "name": "á‰áá‚Ꭰ ᎠᎴ Ꮂá¤áŽªá«"
+ },
+ "PT": {
+ "name": "á‰á¥áŽ¦áŽ³"
+ },
+ "BG": {
+ "name": "áŠáŽµáŽ¨áŽµáŽ "
+ },
+ "BN": {
+ "name": "áŠáŽ¾áŽ¢"
+ },
+ "BT": {
+ "name": "áŠá”á‚"
+ },
+ "BF": {
+ "name": "á‹áŽ©áŽ¾ á©á"
+ },
+ "BI": {
+ "name": "á‹áŽ·á‚á—"
+ },
+ "GD": {
+ "name": "á‹áŽ¾á“"
+ },
+ "CY": {
+ "name": "áŒáŽ¢á†á"
+ },
+ "SA": {
+ "name": "áŒáŽ¤á— ᎡᎴáˆáŽ "
+ },
+ "AE": {
+ "name": "áŒáŠ Ꭲá³áŽ¾áŽµáá”á… áŽ¡áŽ³áˆ áŽ¢áŽ¹áŽµá˜á"
+ },
+ "LK": {
+ "name": "áᎵ Ꮃá‚Ꭷ"
+ },
+ "SK": {
+ "name": "áᎶá©áŽ©áŽ "
+ },
+ "SI": {
+ "name": "áᎶá«á‚Ꭰ"
+ },
+ "MX": {
+ "name": "áá†á‚á±"
+ },
+ "CH": {
+ "name": "áá«á"
+ },
+ "SE": {
+ "name": "áá«á•á‚"
+ },
+ "PM": {
+ "name": "áŽá‚ᘠáˆá“ ᎠᎴ Ꮋá‡áŽ¶á‚"
+ },
+ "SL": {
+ "name": "áᎡᎳ ᎴᎣá‚"
+ },
+ "SC": {
+ "name": "áᎡá¥áŽµá"
+ },
+ "SG": {
+ "name": "áá‚Ꭶá‰áŽµ"
+ },
+ "SB": {
+ "name": "áᎶᎹႠášáŽ¦ášá›"
+ },
+ "SD": {
+ "name": "á‘á•á‚"
+ },
+ "RS": {
+ "name": "á’áˆá¯"
+ },
+ "CN": {
+ "name": "á“Ꮆá‚Ꭸáá›"
+ },
+ "CX": {
+ "name": "á“á‚áá“á²áŽ¯áŽ² ᎤᎦášá›"
+ },
+ "DK": {
+ "name": "á—á‚ᎹᎦ"
+ },
+ "DM": {
+ "name": "á™áŽ»á‚Ꭷ"
+ },
+ "DO": {
+ "name": "á™áŽ»á‚ᎧႠáᎦášáŽ©"
+ },
+ "GE": {
+ "name": "á£áŽ á¥áŽ¢"
+ },
+ "JM": {
+ "name": "á£áŽºáŽ¢áŽ§"
+ },
+ "JP": {
+ "name": "á£á©á‚á"
+ },
+ "CZ": {
+ "name": "á¤áŽ© áᎦášáŽ©"
+ },
+ "CL": {
+ "name": "á¥áŽµ"
+ },
+ "GI": {
+ "name": "á¥á†áŽµá“"
+ },
+ "DJ": {
+ "name": "á¥áŠá—"
+ },
+ "JO": {
+ "name": "á¦á“á‚"
+ },
+ "KR": {
+ "name": "á§áŽ¦áƒá® ᎪᎵᎠ"
+ },
+ "GS": {
+ "name": "á§áŽ¦áƒá® á£á¥á± ᎠᎴ ᎾáᎩ á§áŽ¦áƒá® Ꭰáá›áŽ­áŸ ášáŽ¦ášá›"
+ },
+ "AQ": {
+ "name": "á§ááá“Ꮈ"
+ },
+ "IS": {
+ "name": "á§ááá“ᎸᎯ"
+ },
+ "KP": {
+ "name": "á§á´á¢ ᎪᎵᎠ"
+ },
+ "JE": {
+ "name": "á¨áŽµá"
+ },
+ "FK": {
+ "name": "á©áŽ© ᎤᎦášá›"
+ },
+ "GP": {
+ "name": "á©á“Ꮇá‡"
+ },
+ "GT": {
+ "name": "á©á”ᎹᎳ"
+ },
+ "FO": {
+ "name": "áªáŽ¶ ášáŽ¦ášá›"
+ },
+ "FI": {
+ "name": "á«á‚Ꭶá™áŽ¯"
+ },
+ "FJ": {
+ "name": "á«á¥"
+ },
+ "IT": {
+ "name": "á²áŽ¶"
+ },
+ "RU": {
+ "name": "á²á‚Ꭲ"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/country/cs.json b/library/intl/resources/country/cs.json
new file mode 100644
index 000000000..d7a21b6fa
--- /dev/null
+++ b/library/intl/resources/country/cs.json
@@ -0,0 +1,761 @@
+{
+ "AF": {
+ "name": "Afghánistán"
+ },
+ "AX": {
+ "name": "Ã…landy"
+ },
+ "AL": {
+ "name": "Albánie"
+ },
+ "DZ": {
+ "name": "Alžírsko"
+ },
+ "AS": {
+ "name": "Americká Samoa"
+ },
+ "VI": {
+ "name": "Americké Panenské ostrovy"
+ },
+ "AD": {
+ "name": "Andorra"
+ },
+ "AO": {
+ "name": "Angola"
+ },
+ "AI": {
+ "name": "Anguilla"
+ },
+ "AQ": {
+ "name": "Antarktida"
+ },
+ "AG": {
+ "name": "Antigua a Barbuda"
+ },
+ "AR": {
+ "name": "Argentina"
+ },
+ "AM": {
+ "name": "Arménie"
+ },
+ "AW": {
+ "name": "Aruba"
+ },
+ "AC": {
+ "name": "Ascension"
+ },
+ "AU": {
+ "name": "Austrálie"
+ },
+ "AZ": {
+ "name": "Ãzerbájdžán"
+ },
+ "BS": {
+ "name": "Bahamy"
+ },
+ "BH": {
+ "name": "Bahrajn"
+ },
+ "BD": {
+ "name": "Bangladéš"
+ },
+ "BB": {
+ "name": "Barbados"
+ },
+ "BE": {
+ "name": "Belgie"
+ },
+ "BZ": {
+ "name": "Belize"
+ },
+ "BY": {
+ "name": "Bělorusko"
+ },
+ "BJ": {
+ "name": "Benin"
+ },
+ "BM": {
+ "name": "Bermudy"
+ },
+ "BT": {
+ "name": "Bhútán"
+ },
+ "BO": {
+ "name": "Bolívie"
+ },
+ "BA": {
+ "name": "Bosna a Hercegovina"
+ },
+ "BW": {
+ "name": "Botswana"
+ },
+ "BR": {
+ "name": "Brazílie"
+ },
+ "IO": {
+ "name": "Britské indickooceánské území"
+ },
+ "VG": {
+ "name": "Britské Panenské ostrovy"
+ },
+ "BN": {
+ "name": "Brunej"
+ },
+ "BG": {
+ "name": "Bulharsko"
+ },
+ "BF": {
+ "name": "Burkina Faso"
+ },
+ "BI": {
+ "name": "Burundi"
+ },
+ "EA": {
+ "name": "Ceuta a Melilla"
+ },
+ "CK": {
+ "name": "Cookovy ostrovy"
+ },
+ "CW": {
+ "name": "Curaçao"
+ },
+ "TD": {
+ "name": "ÄŒad"
+ },
+ "ME": {
+ "name": "Černá Hora"
+ },
+ "CZ": {
+ "name": "Česká republika"
+ },
+ "CN": {
+ "name": "Čína"
+ },
+ "DK": {
+ "name": "Dánsko"
+ },
+ "DG": {
+ "name": "Diego García"
+ },
+ "DM": {
+ "name": "Dominika"
+ },
+ "DO": {
+ "name": "Dominikánská republika"
+ },
+ "DJ": {
+ "name": "Džibutsko"
+ },
+ "EG": {
+ "name": "Egypt"
+ },
+ "EC": {
+ "name": "Ekvádor"
+ },
+ "ER": {
+ "name": "Eritrea"
+ },
+ "EE": {
+ "name": "Estonsko"
+ },
+ "ET": {
+ "name": "Etiopie"
+ },
+ "FO": {
+ "name": "Faerské ostrovy"
+ },
+ "FK": {
+ "name": "Falklandské ostrovy"
+ },
+ "FJ": {
+ "name": "Fidži"
+ },
+ "PH": {
+ "name": "Filipíny"
+ },
+ "FI": {
+ "name": "Finsko"
+ },
+ "FR": {
+ "name": "Francie"
+ },
+ "GF": {
+ "name": "Francouzská Guyana"
+ },
+ "TF": {
+ "name": "Francouzská jižní území"
+ },
+ "PF": {
+ "name": "Francouzská Polynésie"
+ },
+ "GA": {
+ "name": "Gabon"
+ },
+ "GM": {
+ "name": "Gambie"
+ },
+ "GH": {
+ "name": "Ghana"
+ },
+ "GI": {
+ "name": "Gibraltar"
+ },
+ "GD": {
+ "name": "Grenada"
+ },
+ "GL": {
+ "name": "Grónsko"
+ },
+ "GE": {
+ "name": "Gruzie"
+ },
+ "GP": {
+ "name": "Guadeloupe"
+ },
+ "GU": {
+ "name": "Guam"
+ },
+ "GT": {
+ "name": "Guatemala"
+ },
+ "GG": {
+ "name": "Guernsey"
+ },
+ "GN": {
+ "name": "Guinea"
+ },
+ "GW": {
+ "name": "Guinea-Bissau"
+ },
+ "GY": {
+ "name": "Guyana"
+ },
+ "HT": {
+ "name": "Haiti"
+ },
+ "HN": {
+ "name": "Honduras"
+ },
+ "HK": {
+ "name": "Hongkong – ZAO Číny"
+ },
+ "CL": {
+ "name": "Chile"
+ },
+ "HR": {
+ "name": "Chorvatsko"
+ },
+ "IN": {
+ "name": "Indie"
+ },
+ "ID": {
+ "name": "Indonésie"
+ },
+ "IQ": {
+ "name": "Irák"
+ },
+ "IR": {
+ "name": "Ãrán"
+ },
+ "IE": {
+ "name": "Irsko"
+ },
+ "IS": {
+ "name": "Island"
+ },
+ "IT": {
+ "name": "Itálie"
+ },
+ "IL": {
+ "name": "Izrael"
+ },
+ "JM": {
+ "name": "Jamajka"
+ },
+ "JP": {
+ "name": "Japonsko"
+ },
+ "YE": {
+ "name": "Jemen"
+ },
+ "JE": {
+ "name": "Jersey"
+ },
+ "ZA": {
+ "name": "Jihoafrická republika"
+ },
+ "GS": {
+ "name": "Jižní Georgie a Jižní Sandwichovy ostrovy"
+ },
+ "KR": {
+ "name": "Jižní Korea"
+ },
+ "SS": {
+ "name": "Jižní Súdán"
+ },
+ "JO": {
+ "name": "Jordánsko"
+ },
+ "KY": {
+ "name": "Kajmanské ostrovy"
+ },
+ "KH": {
+ "name": "Kambodža"
+ },
+ "CM": {
+ "name": "Kamerun"
+ },
+ "CA": {
+ "name": "Kanada"
+ },
+ "IC": {
+ "name": "Kanárské ostrovy"
+ },
+ "CV": {
+ "name": "Kapverdy"
+ },
+ "BQ": {
+ "name": "Karibské Nizozemsko"
+ },
+ "QA": {
+ "name": "Katar"
+ },
+ "KZ": {
+ "name": "Kazachstán"
+ },
+ "KE": {
+ "name": "Keňa"
+ },
+ "KI": {
+ "name": "Kiribati"
+ },
+ "CC": {
+ "name": "Kokosové ostrovy"
+ },
+ "CO": {
+ "name": "Kolumbie"
+ },
+ "KM": {
+ "name": "Komory"
+ },
+ "CG": {
+ "name": "Kongo – Brazzaville"
+ },
+ "CD": {
+ "name": "Kongo – Kinshasa"
+ },
+ "XK": {
+ "name": "Kosovo"
+ },
+ "CR": {
+ "name": "Kostarika"
+ },
+ "CU": {
+ "name": "Kuba"
+ },
+ "KW": {
+ "name": "Kuvajt"
+ },
+ "CY": {
+ "name": "Kypr"
+ },
+ "KG": {
+ "name": "Kyrgyzstán"
+ },
+ "LA": {
+ "name": "Laos"
+ },
+ "LS": {
+ "name": "Lesotho"
+ },
+ "LB": {
+ "name": "Libanon"
+ },
+ "LR": {
+ "name": "Libérie"
+ },
+ "LY": {
+ "name": "Libye"
+ },
+ "LI": {
+ "name": "Lichtenštejnsko"
+ },
+ "LT": {
+ "name": "Litva"
+ },
+ "LV": {
+ "name": "Lotyšsko"
+ },
+ "LU": {
+ "name": "Lucembursko"
+ },
+ "MO": {
+ "name": "Macao – ZAO Číny"
+ },
+ "MG": {
+ "name": "Madagaskar"
+ },
+ "HU": {
+ "name": "MaÄarsko"
+ },
+ "MK": {
+ "name": "Makedonie"
+ },
+ "MY": {
+ "name": "Malajsie"
+ },
+ "MW": {
+ "name": "Malawi"
+ },
+ "MV": {
+ "name": "Maledivy"
+ },
+ "ML": {
+ "name": "Mali"
+ },
+ "MT": {
+ "name": "Malta"
+ },
+ "MA": {
+ "name": "Maroko"
+ },
+ "MH": {
+ "name": "Marshallovy ostrovy"
+ },
+ "MQ": {
+ "name": "Martinik"
+ },
+ "MU": {
+ "name": "Mauricius"
+ },
+ "MR": {
+ "name": "Mauritánie"
+ },
+ "YT": {
+ "name": "Mayotte"
+ },
+ "UM": {
+ "name": "Menší odlehlé ostrovy USA"
+ },
+ "MX": {
+ "name": "Mexiko"
+ },
+ "FM": {
+ "name": "Mikronésie"
+ },
+ "MD": {
+ "name": "Moldavsko"
+ },
+ "MC": {
+ "name": "Monako"
+ },
+ "MN": {
+ "name": "Mongolsko"
+ },
+ "MS": {
+ "name": "Montserrat"
+ },
+ "MZ": {
+ "name": "Mosambik"
+ },
+ "MM": {
+ "name": "Myanmar (Barma)"
+ },
+ "NA": {
+ "name": "Namibie"
+ },
+ "NR": {
+ "name": "Nauru"
+ },
+ "DE": {
+ "name": "Německo"
+ },
+ "NP": {
+ "name": "Nepál"
+ },
+ "NE": {
+ "name": "Niger"
+ },
+ "NG": {
+ "name": "Nigérie"
+ },
+ "NI": {
+ "name": "Nikaragua"
+ },
+ "NU": {
+ "name": "Niue"
+ },
+ "NL": {
+ "name": "Nizozemsko"
+ },
+ "NF": {
+ "name": "Norfolk"
+ },
+ "NO": {
+ "name": "Norsko"
+ },
+ "NC": {
+ "name": "Nová Kaledonie"
+ },
+ "NZ": {
+ "name": "Nový Zéland"
+ },
+ "OM": {
+ "name": "Omán"
+ },
+ "IM": {
+ "name": "Ostrov Man"
+ },
+ "PK": {
+ "name": "Pákistán"
+ },
+ "PW": {
+ "name": "Palau"
+ },
+ "PS": {
+ "name": "Palestinská území"
+ },
+ "PA": {
+ "name": "Panama"
+ },
+ "PG": {
+ "name": "Papua-Nová Guinea"
+ },
+ "PY": {
+ "name": "Paraguay"
+ },
+ "PE": {
+ "name": "Peru"
+ },
+ "PN": {
+ "name": "Pitcairnovy ostrovy"
+ },
+ "CI": {
+ "name": "Pobřeží slonoviny"
+ },
+ "PL": {
+ "name": "Polsko"
+ },
+ "PR": {
+ "name": "Portoriko"
+ },
+ "PT": {
+ "name": "Portugalsko"
+ },
+ "AT": {
+ "name": "Rakousko"
+ },
+ "RE": {
+ "name": "Réunion"
+ },
+ "GQ": {
+ "name": "Rovníková Guinea"
+ },
+ "RO": {
+ "name": "Rumunsko"
+ },
+ "RU": {
+ "name": "Rusko"
+ },
+ "RW": {
+ "name": "Rwanda"
+ },
+ "GR": {
+ "name": "Řecko"
+ },
+ "PM": {
+ "name": "Saint-Pierre a Miquelon"
+ },
+ "SV": {
+ "name": "Salvador"
+ },
+ "WS": {
+ "name": "Samoa"
+ },
+ "SM": {
+ "name": "San Marino"
+ },
+ "SA": {
+ "name": "Saúdská Arábie"
+ },
+ "SN": {
+ "name": "Senegal"
+ },
+ "KP": {
+ "name": "Severní Korea"
+ },
+ "MP": {
+ "name": "Severní Mariany"
+ },
+ "SC": {
+ "name": "Seychely"
+ },
+ "SL": {
+ "name": "Sierra Leone"
+ },
+ "SG": {
+ "name": "Singapur"
+ },
+ "SK": {
+ "name": "Slovensko"
+ },
+ "SI": {
+ "name": "Slovinsko"
+ },
+ "SO": {
+ "name": "Somálsko"
+ },
+ "AE": {
+ "name": "Spojené arabské emiráty"
+ },
+ "US": {
+ "name": "Spojené státy"
+ },
+ "RS": {
+ "name": "Srbsko"
+ },
+ "LK": {
+ "name": "Srí Lanka"
+ },
+ "CF": {
+ "name": "Středoafrická republika"
+ },
+ "SD": {
+ "name": "Súdán"
+ },
+ "SR": {
+ "name": "Surinam"
+ },
+ "SH": {
+ "name": "Svatá Helena"
+ },
+ "LC": {
+ "name": "Svatá Lucie"
+ },
+ "BL": {
+ "name": "Svatý Bartoloměj"
+ },
+ "KN": {
+ "name": "Svatý Kryštof a Nevis"
+ },
+ "MF": {
+ "name": "Svatý Martin (Francie)"
+ },
+ "SX": {
+ "name": "Svatý Martin (Nizozemsko)"
+ },
+ "ST": {
+ "name": "Svatý Tomáš a Princův ostrov"
+ },
+ "VC": {
+ "name": "Svatý Vincenc a Grenadiny"
+ },
+ "SZ": {
+ "name": "Svazijsko"
+ },
+ "SY": {
+ "name": "Sýrie"
+ },
+ "SB": {
+ "name": "Å alamounovy ostrovy"
+ },
+ "ES": {
+ "name": "Španělsko"
+ },
+ "SJ": {
+ "name": "Å picberky a Jan Mayen"
+ },
+ "SE": {
+ "name": "Švédsko"
+ },
+ "CH": {
+ "name": "Švýcarsko"
+ },
+ "TJ": {
+ "name": "Tádžikistán"
+ },
+ "TZ": {
+ "name": "Tanzanie"
+ },
+ "TH": {
+ "name": "Thajsko"
+ },
+ "TW": {
+ "name": "Tchaj-wan"
+ },
+ "TG": {
+ "name": "Togo"
+ },
+ "TK": {
+ "name": "Tokelau"
+ },
+ "TO": {
+ "name": "Tonga"
+ },
+ "TT": {
+ "name": "Trinidad a Tobago"
+ },
+ "TA": {
+ "name": "Tristan da Cunha"
+ },
+ "TN": {
+ "name": "Tunisko"
+ },
+ "TR": {
+ "name": "Turecko"
+ },
+ "TM": {
+ "name": "Turkmenistán"
+ },
+ "TC": {
+ "name": "Turks a Caicos"
+ },
+ "TV": {
+ "name": "Tuvalu"
+ },
+ "UG": {
+ "name": "Uganda"
+ },
+ "UA": {
+ "name": "Ukrajina"
+ },
+ "UY": {
+ "name": "Uruguay"
+ },
+ "UZ": {
+ "name": "Uzbekistán"
+ },
+ "CX": {
+ "name": "VánoÄní ostrov"
+ },
+ "VU": {
+ "name": "Vanuatu"
+ },
+ "VA": {
+ "name": "Vatikán"
+ },
+ "GB": {
+ "name": "Velká Británie"
+ },
+ "VE": {
+ "name": "Venezuela"
+ },
+ "VN": {
+ "name": "Vietnam"
+ },
+ "TL": {
+ "name": "Východní Timor"
+ },
+ "WF": {
+ "name": "Wallis a Futuna"
+ },
+ "ZM": {
+ "name": "Zambie"
+ },
+ "EH": {
+ "name": "Západní Sahara"
+ },
+ "ZW": {
+ "name": "Zimbabwe"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/country/cy.json b/library/intl/resources/country/cy.json
new file mode 100644
index 000000000..d89800008
--- /dev/null
+++ b/library/intl/resources/country/cy.json
@@ -0,0 +1,761 @@
+{
+ "AF": {
+ "name": "Afghanistan"
+ },
+ "AO": {
+ "name": "Angola"
+ },
+ "AI": {
+ "name": "Anguilla"
+ },
+ "AL": {
+ "name": "Albania"
+ },
+ "DZ": {
+ "name": "Algeria"
+ },
+ "AD": {
+ "name": "Andorra"
+ },
+ "AQ": {
+ "name": "Antarctica"
+ },
+ "AG": {
+ "name": "Antigua a Barbuda"
+ },
+ "BQ": {
+ "name": "Antilles yr Iseldiroedd"
+ },
+ "AM": {
+ "name": "Armenia"
+ },
+ "AW": {
+ "name": "Aruba"
+ },
+ "AU": {
+ "name": "Awstralia"
+ },
+ "AT": {
+ "name": "Awstria"
+ },
+ "AZ": {
+ "name": "Azerbaijan"
+ },
+ "BD": {
+ "name": "Bangladesh"
+ },
+ "BH": {
+ "name": "Bahrain"
+ },
+ "BB": {
+ "name": "Barbados"
+ },
+ "BY": {
+ "name": "Belarws"
+ },
+ "BZ": {
+ "name": "Belize"
+ },
+ "BJ": {
+ "name": "Benin"
+ },
+ "BM": {
+ "name": "Bermuda"
+ },
+ "BT": {
+ "name": "Bhutan"
+ },
+ "BO": {
+ "name": "Bolifia"
+ },
+ "BA": {
+ "name": "Bosnia a Hercegovina"
+ },
+ "BW": {
+ "name": "Botswana"
+ },
+ "BR": {
+ "name": "Brasil"
+ },
+ "BN": {
+ "name": "Brunei"
+ },
+ "BF": {
+ "name": "Burkina Faso"
+ },
+ "BI": {
+ "name": "Burundi"
+ },
+ "BG": {
+ "name": "Bwlgaria"
+ },
+ "CV": {
+ "name": "Cabo Verde"
+ },
+ "NC": {
+ "name": "Caledonia Newydd"
+ },
+ "KH": {
+ "name": "Cambodia"
+ },
+ "CM": {
+ "name": "Camerŵn"
+ },
+ "CA": {
+ "name": "Canada"
+ },
+ "EA": {
+ "name": "Ceuta a Melilla"
+ },
+ "CU": {
+ "name": "Ciwba"
+ },
+ "CO": {
+ "name": "Colombia"
+ },
+ "KM": {
+ "name": "Comoros"
+ },
+ "CR": {
+ "name": "Costa Rica"
+ },
+ "CI": {
+ "name": "Côte d’Ivoire"
+ },
+ "HR": {
+ "name": "Croatia"
+ },
+ "CW": {
+ "name": "Curaçao"
+ },
+ "CY": {
+ "name": "Cyprus"
+ },
+ "CL": {
+ "name": "Chile"
+ },
+ "ZA": {
+ "name": "De Affrica"
+ },
+ "GS": {
+ "name": "De Georgia ac Ynysoedd Sandwich y De"
+ },
+ "KR": {
+ "name": "De Korea"
+ },
+ "SS": {
+ "name": "De Swdan"
+ },
+ "DK": {
+ "name": "Denmarc"
+ },
+ "DG": {
+ "name": "Diego Garcia"
+ },
+ "DJ": {
+ "name": "Djibouti"
+ },
+ "DM": {
+ "name": "Dominica"
+ },
+ "EC": {
+ "name": "Ecuador"
+ },
+ "SV": {
+ "name": "El Salvador"
+ },
+ "AE": {
+ "name": "Emiradau Arabaidd Unedig"
+ },
+ "ER": {
+ "name": "Eritrea"
+ },
+ "EE": {
+ "name": "Estonia"
+ },
+ "ET": {
+ "name": "Ethiopia"
+ },
+ "VN": {
+ "name": "Fietnam"
+ },
+ "FJ": {
+ "name": "Fiji"
+ },
+ "FO": {
+ "name": "Føroyar"
+ },
+ "FR": {
+ "name": "Ffrainc"
+ },
+ "GA": {
+ "name": "Gabon"
+ },
+ "GM": {
+ "name": "Gambia"
+ },
+ "GE": {
+ "name": "Georgia"
+ },
+ "GH": {
+ "name": "Ghana"
+ },
+ "GI": {
+ "name": "Gibraltar"
+ },
+ "KP": {
+ "name": "Gogledd Korea"
+ },
+ "EH": {
+ "name": "Gorllewin Sahara"
+ },
+ "GD": {
+ "name": "Grenada"
+ },
+ "GP": {
+ "name": "Guadeloupe"
+ },
+ "GU": {
+ "name": "Guam"
+ },
+ "GT": {
+ "name": "Guatemala"
+ },
+ "GW": {
+ "name": "Guiné-Bissau"
+ },
+ "GQ": {
+ "name": "Guinea Gyhydeddol"
+ },
+ "GN": {
+ "name": "Guinée"
+ },
+ "GY": {
+ "name": "Guyana"
+ },
+ "GF": {
+ "name": "Guyane Ffrengig"
+ },
+ "CF": {
+ "name": "Gweriniaeth Canolbarth Affrica"
+ },
+ "DO": {
+ "name": "Gweriniaeth Dominica"
+ },
+ "CZ": {
+ "name": "Gweriniaeth Tsiec"
+ },
+ "BE": {
+ "name": "Gwlad Belg"
+ },
+ "GR": {
+ "name": "Gwlad Groeg"
+ },
+ "JO": {
+ "name": "Gwlad Iorddonen"
+ },
+ "PL": {
+ "name": "Gwlad Pwyl"
+ },
+ "SZ": {
+ "name": "Gwlad Swazi"
+ },
+ "TH": {
+ "name": "Gwlad Thai"
+ },
+ "IS": {
+ "name": "Gwlad yr Iâ"
+ },
+ "HT": {
+ "name": "Haiti"
+ },
+ "HK": {
+ "name": "Hong Kong RhGA Tsieina"
+ },
+ "HN": {
+ "name": "Honduras"
+ },
+ "HU": {
+ "name": "Hwngari"
+ },
+ "IN": {
+ "name": "India"
+ },
+ "ID": {
+ "name": "Indonesia"
+ },
+ "IQ": {
+ "name": "Irac"
+ },
+ "IR": {
+ "name": "Iran"
+ },
+ "IL": {
+ "name": "Israel"
+ },
+ "IE": {
+ "name": "Iwerddon"
+ },
+ "JM": {
+ "name": "Jamaica"
+ },
+ "JP": {
+ "name": "Japan"
+ },
+ "JE": {
+ "name": "Jersey"
+ },
+ "KZ": {
+ "name": "Kazakstan"
+ },
+ "KE": {
+ "name": "Kenya"
+ },
+ "KI": {
+ "name": "Kiribati"
+ },
+ "XK": {
+ "name": "Kosovo"
+ },
+ "KW": {
+ "name": "Kuwait"
+ },
+ "KG": {
+ "name": "Kyrgyzstan"
+ },
+ "LA": {
+ "name": "Laos"
+ },
+ "LV": {
+ "name": "Latfia"
+ },
+ "LS": {
+ "name": "Lesotho"
+ },
+ "LB": {
+ "name": "Libanus"
+ },
+ "LR": {
+ "name": "Liberia"
+ },
+ "LY": {
+ "name": "Libya"
+ },
+ "LI": {
+ "name": "Liechtenstein"
+ },
+ "LT": {
+ "name": "Lithuania"
+ },
+ "LU": {
+ "name": "Lwcsembwrg"
+ },
+ "MO": {
+ "name": "Macau RhGA Tsieina"
+ },
+ "MK": {
+ "name": "Macedonia"
+ },
+ "MG": {
+ "name": "Madagascar"
+ },
+ "MW": {
+ "name": "Malawi"
+ },
+ "MY": {
+ "name": "Malaysia"
+ },
+ "ML": {
+ "name": "Mali"
+ },
+ "MT": {
+ "name": "Malta"
+ },
+ "MQ": {
+ "name": "Martinique"
+ },
+ "MR": {
+ "name": "Mauritania"
+ },
+ "MU": {
+ "name": "Mauritius"
+ },
+ "YT": {
+ "name": "Mayotte"
+ },
+ "MX": {
+ "name": "Mecsico"
+ },
+ "FM": {
+ "name": "Micronesia"
+ },
+ "MN": {
+ "name": "Mongolia"
+ },
+ "MD": {
+ "name": "Moldofa"
+ },
+ "MC": {
+ "name": "Monaco"
+ },
+ "ME": {
+ "name": "Montenegro"
+ },
+ "MS": {
+ "name": "Montserrat"
+ },
+ "MA": {
+ "name": "Moroco"
+ },
+ "MZ": {
+ "name": "Mozambique"
+ },
+ "MM": {
+ "name": "Myanmar (Burma)"
+ },
+ "NA": {
+ "name": "Namibia"
+ },
+ "NR": {
+ "name": "Nauru"
+ },
+ "NP": {
+ "name": "Nepal"
+ },
+ "NI": {
+ "name": "Nicaragua"
+ },
+ "NE": {
+ "name": "Niger"
+ },
+ "NG": {
+ "name": "Nigeria"
+ },
+ "NU": {
+ "name": "Niue"
+ },
+ "NO": {
+ "name": "Norwy"
+ },
+ "OM": {
+ "name": "Oman"
+ },
+ "PK": {
+ "name": "Pakistan"
+ },
+ "PW": {
+ "name": "Palau"
+ },
+ "PA": {
+ "name": "Panama"
+ },
+ "PG": {
+ "name": "Papua Guinea Newydd"
+ },
+ "PY": {
+ "name": "Paraguay"
+ },
+ "PE": {
+ "name": "Periw"
+ },
+ "PH": {
+ "name": "Pilipinas"
+ },
+ "PF": {
+ "name": "Polynesia Ffrengig"
+ },
+ "PT": {
+ "name": "Portiwgal"
+ },
+ "PR": {
+ "name": "Puerto Rico"
+ },
+ "QA": {
+ "name": "Qatar"
+ },
+ "RE": {
+ "name": "Réunion"
+ },
+ "RW": {
+ "name": "Rwanda"
+ },
+ "RO": {
+ "name": "Rwmania"
+ },
+ "RU": {
+ "name": "Rwsia"
+ },
+ "BL": {
+ "name": "Saint Barthélemy"
+ },
+ "SH": {
+ "name": "Saint Helena"
+ },
+ "KN": {
+ "name": "Saint Kitts a Nevis"
+ },
+ "LC": {
+ "name": "Saint Lucia"
+ },
+ "MF": {
+ "name": "Saint Martin"
+ },
+ "VC": {
+ "name": "Saint Vincent a’r Grenadines"
+ },
+ "PM": {
+ "name": "Saint-Pierre-et-Miquelon"
+ },
+ "WS": {
+ "name": "Samoa"
+ },
+ "AS": {
+ "name": "Samoa America"
+ },
+ "SM": {
+ "name": "San Marino"
+ },
+ "ST": {
+ "name": "São Tomé a Príncipe"
+ },
+ "SA": {
+ "name": "Saudi Arabia"
+ },
+ "ES": {
+ "name": "Sbaen"
+ },
+ "NZ": {
+ "name": "Seland Newydd"
+ },
+ "SN": {
+ "name": "Sénégal"
+ },
+ "RS": {
+ "name": "Serbia"
+ },
+ "SC": {
+ "name": "Seychelles"
+ },
+ "SL": {
+ "name": "Sierra Leone"
+ },
+ "SG": {
+ "name": "Singapore"
+ },
+ "SX": {
+ "name": "Sint Maarten"
+ },
+ "SK": {
+ "name": "Slofacia"
+ },
+ "SI": {
+ "name": "Slofenia"
+ },
+ "SO": {
+ "name": "Somalia"
+ },
+ "LK": {
+ "name": "Sri Lanka"
+ },
+ "SR": {
+ "name": "Suriname"
+ },
+ "SJ": {
+ "name": "Svalbard a Jan Mayen"
+ },
+ "SD": {
+ "name": "Swdan"
+ },
+ "SE": {
+ "name": "Sweden"
+ },
+ "SY": {
+ "name": "Syria"
+ },
+ "TW": {
+ "name": "Taiwan"
+ },
+ "TJ": {
+ "name": "Tajikistan"
+ },
+ "TZ": {
+ "name": "Tanzania"
+ },
+ "TD": {
+ "name": "Tchad"
+ },
+ "TL": {
+ "name": "Timor-Leste"
+ },
+ "IO": {
+ "name": "Tiriogaeth Brydeinig Cefnfor India"
+ },
+ "PS": {
+ "name": "Tiriogaethau Palesteinaidd"
+ },
+ "TF": {
+ "name": "Tiroedd Deheuol ac Antarctig Ffrainc"
+ },
+ "TG": {
+ "name": "Togo"
+ },
+ "TO": {
+ "name": "Tonga"
+ },
+ "TK": {
+ "name": "Tokelau"
+ },
+ "TT": {
+ "name": "Trinidad a Tobago"
+ },
+ "TA": {
+ "name": "Tristan da Cunha"
+ },
+ "CN": {
+ "name": "Tsieina"
+ },
+ "TN": {
+ "name": "Tunisia"
+ },
+ "TM": {
+ "name": "Turkmenistan"
+ },
+ "TV": {
+ "name": "Tuvalu"
+ },
+ "TR": {
+ "name": "Twrci"
+ },
+ "UG": {
+ "name": "Uganda"
+ },
+ "UY": {
+ "name": "Uruguay"
+ },
+ "UZ": {
+ "name": "Uzbekistan"
+ },
+ "VU": {
+ "name": "Vanuatu"
+ },
+ "VE": {
+ "name": "Venezuela"
+ },
+ "WF": {
+ "name": "Wallis a Futuna"
+ },
+ "UA": {
+ "name": "Wcráin"
+ },
+ "BS": {
+ "name": "Y Bahamas"
+ },
+ "CG": {
+ "name": "Y Congo - Brazzaville"
+ },
+ "CD": {
+ "name": "Y Congo - Kinshasa"
+ },
+ "GB": {
+ "name": "Y Deyrnas Unedig"
+ },
+ "VA": {
+ "name": "Y Fatican"
+ },
+ "FI": {
+ "name": "Y Ffindir"
+ },
+ "MV": {
+ "name": "Y Maldives"
+ },
+ "CH": {
+ "name": "Y Swistir"
+ },
+ "YE": {
+ "name": "Yemen"
+ },
+ "AC": {
+ "name": "Ynys Ascension"
+ },
+ "IM": {
+ "name": "Ynys Manaw"
+ },
+ "NF": {
+ "name": "Ynys Norfolk"
+ },
+ "GG": {
+ "name": "Ynys y Garn"
+ },
+ "CX": {
+ "name": "Ynys y Nadolig"
+ },
+ "AX": {
+ "name": "Ynysoedd Ã…land"
+ },
+ "KY": {
+ "name": "Ynysoedd Cayman"
+ },
+ "CC": {
+ "name": "Ynysoedd Cocos (Keeling)"
+ },
+ "CK": {
+ "name": "Ynysoedd Cook"
+ },
+ "MP": {
+ "name": "Ynysoedd Gogledd Mariana"
+ },
+ "VG": {
+ "name": "Ynysoedd Gwyryf Prydain"
+ },
+ "VI": {
+ "name": "Ynysoedd Gwyryf yr Unol Daleithiau"
+ },
+ "MH": {
+ "name": "Ynysoedd Marshall"
+ },
+ "UM": {
+ "name": "Ynysoedd Pellennig UDA"
+ },
+ "PN": {
+ "name": "Ynysoedd Pitcairn"
+ },
+ "SB": {
+ "name": "Ynysoedd Solomon"
+ },
+ "TC": {
+ "name": "Ynysoedd Turks a Caicos"
+ },
+ "FK": {
+ "name": "Ynysoedd y Falkland\/Malvinas"
+ },
+ "EG": {
+ "name": "Yr Aifft"
+ },
+ "DE": {
+ "name": "Yr Almaen"
+ },
+ "AR": {
+ "name": "Yr Ariannin"
+ },
+ "IT": {
+ "name": "Yr Eidal"
+ },
+ "NL": {
+ "name": "Yr Iseldiroedd"
+ },
+ "US": {
+ "name": "Yr Unol Daleithiau"
+ },
+ "GL": {
+ "name": "Yr Ynys Las"
+ },
+ "IC": {
+ "name": "Yr Ynysoedd Dedwydd"
+ },
+ "ZM": {
+ "name": "Zambia"
+ },
+ "ZW": {
+ "name": "Zimbabwe"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/country/da.json b/library/intl/resources/country/da.json
new file mode 100644
index 000000000..252132661
--- /dev/null
+++ b/library/intl/resources/country/da.json
@@ -0,0 +1,761 @@
+{
+ "AF": {
+ "name": "Afghanistan"
+ },
+ "AL": {
+ "name": "Albanien"
+ },
+ "DZ": {
+ "name": "Algeriet"
+ },
+ "AS": {
+ "name": "Amerikansk Samoa"
+ },
+ "UM": {
+ "name": "Amerikanske oversøiske øer"
+ },
+ "AD": {
+ "name": "Andorra"
+ },
+ "AO": {
+ "name": "Angola"
+ },
+ "AI": {
+ "name": "Anguilla"
+ },
+ "AQ": {
+ "name": "Antarktis"
+ },
+ "AG": {
+ "name": "Antigua og Barbuda"
+ },
+ "AR": {
+ "name": "Argentina"
+ },
+ "AM": {
+ "name": "Armenien"
+ },
+ "AW": {
+ "name": "Aruba"
+ },
+ "AC": {
+ "name": "Ascensionøen"
+ },
+ "AZ": {
+ "name": "Aserbajdsjan"
+ },
+ "AU": {
+ "name": "Australien"
+ },
+ "BS": {
+ "name": "Bahamas"
+ },
+ "BH": {
+ "name": "Bahrain"
+ },
+ "BD": {
+ "name": "Bangladesh"
+ },
+ "BB": {
+ "name": "Barbados"
+ },
+ "BE": {
+ "name": "Belgien"
+ },
+ "BZ": {
+ "name": "Belize"
+ },
+ "BJ": {
+ "name": "Benin"
+ },
+ "BM": {
+ "name": "Bermuda"
+ },
+ "BT": {
+ "name": "Bhutan"
+ },
+ "BO": {
+ "name": "Bolivia"
+ },
+ "BA": {
+ "name": "Bosnien-Hercegovina"
+ },
+ "BW": {
+ "name": "Botswana"
+ },
+ "BR": {
+ "name": "Brasilien"
+ },
+ "BN": {
+ "name": "Brunei"
+ },
+ "BG": {
+ "name": "Bulgarien"
+ },
+ "BF": {
+ "name": "Burkina Faso"
+ },
+ "BI": {
+ "name": "Burundi"
+ },
+ "KH": {
+ "name": "Cambodja"
+ },
+ "CM": {
+ "name": "Cameroun"
+ },
+ "CA": {
+ "name": "Canada"
+ },
+ "KY": {
+ "name": "Caymanøerne"
+ },
+ "CF": {
+ "name": "Centralafrikanske Republik"
+ },
+ "EA": {
+ "name": "Ceuta og Melilla"
+ },
+ "CL": {
+ "name": "Chile"
+ },
+ "CC": {
+ "name": "Cocosøerne"
+ },
+ "CO": {
+ "name": "Colombia"
+ },
+ "KM": {
+ "name": "Comorerne"
+ },
+ "CG": {
+ "name": "Congo-Brazzaville"
+ },
+ "CD": {
+ "name": "Congo-Kinshasa"
+ },
+ "CK": {
+ "name": "Cookøerne"
+ },
+ "CR": {
+ "name": "Costa Rica"
+ },
+ "CU": {
+ "name": "Cuba"
+ },
+ "CW": {
+ "name": "Curaçao"
+ },
+ "CY": {
+ "name": "Cypern"
+ },
+ "DK": {
+ "name": "Danmark"
+ },
+ "VI": {
+ "name": "De Amerikanske Jomfruøer"
+ },
+ "VG": {
+ "name": "De Britiske Jomfruøer"
+ },
+ "TF": {
+ "name": "De franske besiddelser i Det Sydlige Indiske Ocean"
+ },
+ "PS": {
+ "name": "De palæstinensiske områder"
+ },
+ "DO": {
+ "name": "Den Dominikanske Republik"
+ },
+ "IO": {
+ "name": "Det britiske territorium i Det Indiske Ocean"
+ },
+ "DG": {
+ "name": "Diego Garcia"
+ },
+ "DJ": {
+ "name": "Djibouti"
+ },
+ "DM": {
+ "name": "Dominica"
+ },
+ "EC": {
+ "name": "Ecuador"
+ },
+ "EG": {
+ "name": "Egypten"
+ },
+ "SV": {
+ "name": "El Salvador"
+ },
+ "CI": {
+ "name": "Elfenbenskysten"
+ },
+ "ER": {
+ "name": "Eritrea"
+ },
+ "EE": {
+ "name": "Estland"
+ },
+ "ET": {
+ "name": "Etiopien"
+ },
+ "FK": {
+ "name": "Falklandsøerne"
+ },
+ "FJ": {
+ "name": "Fiji"
+ },
+ "PH": {
+ "name": "Filippinerne"
+ },
+ "FI": {
+ "name": "Finland"
+ },
+ "AE": {
+ "name": "Forenede Arabiske Emirater"
+ },
+ "FR": {
+ "name": "Frankrig"
+ },
+ "GF": {
+ "name": "Fransk Guyana"
+ },
+ "PF": {
+ "name": "Fransk Polynesien"
+ },
+ "FO": {
+ "name": "Færøerne"
+ },
+ "GA": {
+ "name": "Gabon"
+ },
+ "GM": {
+ "name": "Gambia"
+ },
+ "GE": {
+ "name": "Georgien"
+ },
+ "GH": {
+ "name": "Ghana"
+ },
+ "GI": {
+ "name": "Gibraltar"
+ },
+ "GD": {
+ "name": "Grenada"
+ },
+ "GR": {
+ "name": "Grækenland"
+ },
+ "GL": {
+ "name": "Grønland"
+ },
+ "GP": {
+ "name": "Guadeloupe"
+ },
+ "GU": {
+ "name": "Guam"
+ },
+ "GT": {
+ "name": "Guatemala"
+ },
+ "GG": {
+ "name": "Guernsey"
+ },
+ "GN": {
+ "name": "Guinea"
+ },
+ "GW": {
+ "name": "Guinea-Bissau"
+ },
+ "GY": {
+ "name": "Guyana"
+ },
+ "HT": {
+ "name": "Haiti"
+ },
+ "NL": {
+ "name": "Holland"
+ },
+ "HN": {
+ "name": "Honduras"
+ },
+ "HK": {
+ "name": "Hongkong SAR"
+ },
+ "BY": {
+ "name": "Hviderusland"
+ },
+ "IN": {
+ "name": "Indien"
+ },
+ "ID": {
+ "name": "Indonesien"
+ },
+ "IQ": {
+ "name": "Irak"
+ },
+ "IR": {
+ "name": "Iran"
+ },
+ "IE": {
+ "name": "Irland"
+ },
+ "IS": {
+ "name": "Island"
+ },
+ "IM": {
+ "name": "Isle of Man"
+ },
+ "IL": {
+ "name": "Israel"
+ },
+ "IT": {
+ "name": "Italien"
+ },
+ "JM": {
+ "name": "Jamaica"
+ },
+ "JP": {
+ "name": "Japan"
+ },
+ "JE": {
+ "name": "Jersey"
+ },
+ "JO": {
+ "name": "Jordan"
+ },
+ "CX": {
+ "name": "Juleøen"
+ },
+ "IC": {
+ "name": "Kanariske øer"
+ },
+ "CV": {
+ "name": "Kap Verde"
+ },
+ "KZ": {
+ "name": "Kasakhstan"
+ },
+ "KE": {
+ "name": "Kenya"
+ },
+ "CN": {
+ "name": "Kina"
+ },
+ "KG": {
+ "name": "Kirgisistan"
+ },
+ "KI": {
+ "name": "Kiribati"
+ },
+ "XK": {
+ "name": "Kosovo"
+ },
+ "HR": {
+ "name": "Kroatien"
+ },
+ "KW": {
+ "name": "Kuwait"
+ },
+ "LA": {
+ "name": "Laos"
+ },
+ "LS": {
+ "name": "Lesotho"
+ },
+ "LV": {
+ "name": "Letland"
+ },
+ "LB": {
+ "name": "Libanon"
+ },
+ "LR": {
+ "name": "Liberia"
+ },
+ "LY": {
+ "name": "Libyen"
+ },
+ "LI": {
+ "name": "Liechtenstein"
+ },
+ "LT": {
+ "name": "Litauen"
+ },
+ "LU": {
+ "name": "Luxembourg"
+ },
+ "MO": {
+ "name": "Macao SAR"
+ },
+ "MG": {
+ "name": "Madagaskar"
+ },
+ "MK": {
+ "name": "Makedonien"
+ },
+ "MW": {
+ "name": "Malawi"
+ },
+ "MY": {
+ "name": "Malaysia"
+ },
+ "MV": {
+ "name": "Maldiverne"
+ },
+ "ML": {
+ "name": "Mali"
+ },
+ "MT": {
+ "name": "Malta"
+ },
+ "MA": {
+ "name": "Marokko"
+ },
+ "MH": {
+ "name": "Marshalløerne"
+ },
+ "MQ": {
+ "name": "Martinique"
+ },
+ "MR": {
+ "name": "Mauretanien"
+ },
+ "MU": {
+ "name": "Mauritius"
+ },
+ "YT": {
+ "name": "Mayotte"
+ },
+ "MX": {
+ "name": "Mexico"
+ },
+ "FM": {
+ "name": "Mikronesiens Forenede Stater"
+ },
+ "MD": {
+ "name": "Moldova"
+ },
+ "MC": {
+ "name": "Monaco"
+ },
+ "MN": {
+ "name": "Mongoliet"
+ },
+ "ME": {
+ "name": "Montenegro"
+ },
+ "MS": {
+ "name": "Montserrat"
+ },
+ "MZ": {
+ "name": "Mozambique"
+ },
+ "MM": {
+ "name": "Myanmar (Burma)"
+ },
+ "NA": {
+ "name": "Namibia"
+ },
+ "NR": {
+ "name": "Nauru"
+ },
+ "BQ": {
+ "name": "Nederlandske antiller"
+ },
+ "NP": {
+ "name": "Nepal"
+ },
+ "NZ": {
+ "name": "New Zealand"
+ },
+ "NI": {
+ "name": "Nicaragua"
+ },
+ "NE": {
+ "name": "Niger"
+ },
+ "NG": {
+ "name": "Nigeria"
+ },
+ "NU": {
+ "name": "Niue"
+ },
+ "KP": {
+ "name": "Nordkorea"
+ },
+ "MP": {
+ "name": "Nordmarianerne"
+ },
+ "NF": {
+ "name": "Norfolkøen"
+ },
+ "NO": {
+ "name": "Norge"
+ },
+ "NC": {
+ "name": "Ny Caledonien"
+ },
+ "OM": {
+ "name": "Oman"
+ },
+ "PK": {
+ "name": "Pakistan"
+ },
+ "PW": {
+ "name": "Palau"
+ },
+ "PA": {
+ "name": "Panama"
+ },
+ "PG": {
+ "name": "Papua Ny Guinea"
+ },
+ "PY": {
+ "name": "Paraguay"
+ },
+ "PE": {
+ "name": "Peru"
+ },
+ "PN": {
+ "name": "Pitcairn"
+ },
+ "PL": {
+ "name": "Polen"
+ },
+ "PT": {
+ "name": "Portugal"
+ },
+ "PR": {
+ "name": "Puerto Rico"
+ },
+ "QA": {
+ "name": "Qatar"
+ },
+ "RE": {
+ "name": "Réunion"
+ },
+ "RO": {
+ "name": "Rumænien"
+ },
+ "RU": {
+ "name": "Rusland"
+ },
+ "RW": {
+ "name": "Rwanda"
+ },
+ "BL": {
+ "name": "Saint Barthélemy"
+ },
+ "KN": {
+ "name": "Saint Kitts og Nevis"
+ },
+ "LC": {
+ "name": "Saint Lucia"
+ },
+ "MF": {
+ "name": "Saint Martin"
+ },
+ "PM": {
+ "name": "Saint Pierre og Miquelon"
+ },
+ "VC": {
+ "name": "Saint Vincent og Grenadinerne"
+ },
+ "SB": {
+ "name": "Salomonøerne"
+ },
+ "WS": {
+ "name": "Samoa"
+ },
+ "SM": {
+ "name": "San Marino"
+ },
+ "ST": {
+ "name": "Sao Tome og Principe"
+ },
+ "SA": {
+ "name": "Saudi-Arabien"
+ },
+ "CH": {
+ "name": "Schweiz"
+ },
+ "SN": {
+ "name": "Senegal"
+ },
+ "RS": {
+ "name": "Serbien"
+ },
+ "SC": {
+ "name": "Seychellerne"
+ },
+ "SL": {
+ "name": "Sierra Leone"
+ },
+ "SG": {
+ "name": "Singapore"
+ },
+ "SX": {
+ "name": "Sint Maarten"
+ },
+ "SK": {
+ "name": "Slovakiet"
+ },
+ "SI": {
+ "name": "Slovenien"
+ },
+ "SO": {
+ "name": "Somalia"
+ },
+ "GS": {
+ "name": "South Georgia og South Sandwich Islands"
+ },
+ "ES": {
+ "name": "Spanien"
+ },
+ "LK": {
+ "name": "Sri Lanka"
+ },
+ "SH": {
+ "name": "St. Helena"
+ },
+ "GB": {
+ "name": "Storbritannien"
+ },
+ "SD": {
+ "name": "Sudan"
+ },
+ "SR": {
+ "name": "Surinam"
+ },
+ "SJ": {
+ "name": "Svalbard og Jan Mayen"
+ },
+ "SE": {
+ "name": "Sverige"
+ },
+ "SZ": {
+ "name": "Swaziland"
+ },
+ "ZA": {
+ "name": "Sydafrika"
+ },
+ "KR": {
+ "name": "Sydkorea"
+ },
+ "SS": {
+ "name": "Sydsudan"
+ },
+ "SY": {
+ "name": "Syrien"
+ },
+ "TJ": {
+ "name": "Tadsjikistan"
+ },
+ "TW": {
+ "name": "Taiwan"
+ },
+ "TZ": {
+ "name": "Tanzania"
+ },
+ "TD": {
+ "name": "Tchad"
+ },
+ "TH": {
+ "name": "Thailand"
+ },
+ "TL": {
+ "name": "Timor-Leste"
+ },
+ "CZ": {
+ "name": "Tjekkiet"
+ },
+ "TG": {
+ "name": "Togo"
+ },
+ "TK": {
+ "name": "Tokelau"
+ },
+ "TO": {
+ "name": "Tonga"
+ },
+ "TT": {
+ "name": "Trinidad og Tobago"
+ },
+ "TA": {
+ "name": "Tristan da Cunha"
+ },
+ "TN": {
+ "name": "Tunesien"
+ },
+ "TM": {
+ "name": "Turkmenistan"
+ },
+ "TC": {
+ "name": "Turks- og Caicosøerne"
+ },
+ "TV": {
+ "name": "Tuvalu"
+ },
+ "TR": {
+ "name": "Tyrkiet"
+ },
+ "DE": {
+ "name": "Tyskland"
+ },
+ "UG": {
+ "name": "Uganda"
+ },
+ "UA": {
+ "name": "Ukraine"
+ },
+ "HU": {
+ "name": "Ungarn"
+ },
+ "UY": {
+ "name": "Uruguay"
+ },
+ "US": {
+ "name": "USA"
+ },
+ "UZ": {
+ "name": "Usbekistan"
+ },
+ "VU": {
+ "name": "Vanuatu"
+ },
+ "VA": {
+ "name": "Vatikanstaten"
+ },
+ "VE": {
+ "name": "Venezuela"
+ },
+ "EH": {
+ "name": "Vestsahara"
+ },
+ "VN": {
+ "name": "Vietnam"
+ },
+ "WF": {
+ "name": "Wallis og Futuna"
+ },
+ "YE": {
+ "name": "Yemen"
+ },
+ "ZM": {
+ "name": "Zambia"
+ },
+ "ZW": {
+ "name": "Zimbabwe"
+ },
+ "GQ": {
+ "name": "Ækvatorialguinea"
+ },
+ "AT": {
+ "name": "Østrig"
+ },
+ "AX": {
+ "name": "Ålandsøerne"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/country/dav.json b/library/intl/resources/country/dav.json
new file mode 100644
index 000000000..e57db8007
--- /dev/null
+++ b/library/intl/resources/country/dav.json
@@ -0,0 +1,761 @@
+{
+ "ZA": {
+ "name": "Afrika Kusini"
+ },
+ "AF": {
+ "name": "Afuganistani"
+ },
+ "IS": {
+ "name": "Aislandi"
+ },
+ "AR": {
+ "name": "Ajentina"
+ },
+ "AX": {
+ "name": "Ã…land Islands"
+ },
+ "AL": {
+ "name": "Albania"
+ },
+ "DZ": {
+ "name": "Aljeria"
+ },
+ "AD": {
+ "name": "Andora"
+ },
+ "AO": {
+ "name": "Angola"
+ },
+ "AI": {
+ "name": "Anguilla"
+ },
+ "AQ": {
+ "name": "Antarctica"
+ },
+ "AG": {
+ "name": "Antigua na Barbuda"
+ },
+ "AM": {
+ "name": "Armenia"
+ },
+ "AW": {
+ "name": "Aruba"
+ },
+ "AC": {
+ "name": "Ascension Island"
+ },
+ "AU": {
+ "name": "Australia"
+ },
+ "AT": {
+ "name": "Austria"
+ },
+ "IE": {
+ "name": "Ayalandi"
+ },
+ "AZ": {
+ "name": "Azabajani"
+ },
+ "BB": {
+ "name": "Babadosi"
+ },
+ "BS": {
+ "name": "Bahama"
+ },
+ "BH": {
+ "name": "Bahareni"
+ },
+ "BD": {
+ "name": "Bangladeshi"
+ },
+ "BY": {
+ "name": "Belarusi"
+ },
+ "BZ": {
+ "name": "Belize"
+ },
+ "BJ": {
+ "name": "Benini"
+ },
+ "BM": {
+ "name": "Bermuda"
+ },
+ "BO": {
+ "name": "Bolivia"
+ },
+ "BA": {
+ "name": "Bosnia na Hezegovina"
+ },
+ "BW": {
+ "name": "Botswana"
+ },
+ "BR": {
+ "name": "Brazili"
+ },
+ "BN": {
+ "name": "Brunei"
+ },
+ "BF": {
+ "name": "Bukinafaso"
+ },
+ "MG": {
+ "name": "Bukini"
+ },
+ "BG": {
+ "name": "Bulgaria"
+ },
+ "BI": {
+ "name": "Burundi"
+ },
+ "BT": {
+ "name": "Butani"
+ },
+ "IC": {
+ "name": "Canary Islands"
+ },
+ "BQ": {
+ "name": "Caribbean Netherlands"
+ },
+ "EA": {
+ "name": "Ceuta & Melilla"
+ },
+ "TD": {
+ "name": "Chadi"
+ },
+ "CL": {
+ "name": "Chile"
+ },
+ "CN": {
+ "name": "China"
+ },
+ "CX": {
+ "name": "Christmas Island"
+ },
+ "CC": {
+ "name": "Cocos (Keeling) Islands"
+ },
+ "CW": {
+ "name": "Curaçao"
+ },
+ "DK": {
+ "name": "Denmaki"
+ },
+ "DG": {
+ "name": "Diego Garcia"
+ },
+ "DM": {
+ "name": "Dominika"
+ },
+ "EC": {
+ "name": "Ekwado"
+ },
+ "SV": {
+ "name": "Elsavado"
+ },
+ "IO": {
+ "name": "Eneo la Uingereza katika Bahari Hindi"
+ },
+ "ER": {
+ "name": "Eritrea"
+ },
+ "EE": {
+ "name": "Estonia"
+ },
+ "AE": {
+ "name": "Falme za Kiarabu"
+ },
+ "FO": {
+ "name": "Faroe Islands"
+ },
+ "FJ": {
+ "name": "Fiji"
+ },
+ "PH": {
+ "name": "Filipino"
+ },
+ "TF": {
+ "name": "French Southern Territories"
+ },
+ "GA": {
+ "name": "Gaboni"
+ },
+ "GM": {
+ "name": "Gambia"
+ },
+ "GH": {
+ "name": "Ghana"
+ },
+ "GN": {
+ "name": "Gine"
+ },
+ "GW": {
+ "name": "Ginebisau"
+ },
+ "GQ": {
+ "name": "Ginekweta"
+ },
+ "GD": {
+ "name": "Grenada"
+ },
+ "GL": {
+ "name": "Grinlandi"
+ },
+ "GG": {
+ "name": "Guernsey"
+ },
+ "GY": {
+ "name": "Guyana"
+ },
+ "GP": {
+ "name": "Gwadelupe"
+ },
+ "GU": {
+ "name": "Gwam"
+ },
+ "GT": {
+ "name": "Gwatemala"
+ },
+ "GF": {
+ "name": "Gwiyana ya Ufaransa"
+ },
+ "HT": {
+ "name": "Haiti"
+ },
+ "ES": {
+ "name": "Hispania"
+ },
+ "HN": {
+ "name": "Hondurasi"
+ },
+ "HK": {
+ "name": "Hong Kong SAR China"
+ },
+ "HU": {
+ "name": "Hungaria"
+ },
+ "IN": {
+ "name": "India"
+ },
+ "ID": {
+ "name": "Indonesia"
+ },
+ "IQ": {
+ "name": "Iraki"
+ },
+ "IM": {
+ "name": "Isle of Man"
+ },
+ "IL": {
+ "name": "Israeli"
+ },
+ "IT": {
+ "name": "Italia"
+ },
+ "JM": {
+ "name": "Jamaika"
+ },
+ "CF": {
+ "name": "Jamhuri ya Afrika ya Kati"
+ },
+ "CZ": {
+ "name": "Jamhuri ya Cheki"
+ },
+ "DO": {
+ "name": "Jamhuri ya Dominika"
+ },
+ "CD": {
+ "name": "Jamhuri ya Kidemokrasia ya Kongo"
+ },
+ "JP": {
+ "name": "Japani"
+ },
+ "JE": {
+ "name": "Jersey"
+ },
+ "GI": {
+ "name": "Jibralta"
+ },
+ "DJ": {
+ "name": "Jibuti"
+ },
+ "GE": {
+ "name": "Jojia"
+ },
+ "KH": {
+ "name": "Kambodia"
+ },
+ "CM": {
+ "name": "Kameruni"
+ },
+ "CA": {
+ "name": "Kanada"
+ },
+ "QA": {
+ "name": "Katari"
+ },
+ "KZ": {
+ "name": "Kazakistani"
+ },
+ "KE": {
+ "name": "Kenya"
+ },
+ "CV": {
+ "name": "Kepuvede"
+ },
+ "KI": {
+ "name": "Kiribati"
+ },
+ "KG": {
+ "name": "Kirigizistani"
+ },
+ "NF": {
+ "name": "Kisiwa cha Norfok"
+ },
+ "CI": {
+ "name": "Kodivaa"
+ },
+ "CO": {
+ "name": "Kolombia"
+ },
+ "KM": {
+ "name": "Komoro"
+ },
+ "CG": {
+ "name": "Kongo"
+ },
+ "HR": {
+ "name": "Korasia"
+ },
+ "KP": {
+ "name": "Korea Kaskazini"
+ },
+ "KR": {
+ "name": "Korea Kusini"
+ },
+ "XK": {
+ "name": "Kosovo"
+ },
+ "CR": {
+ "name": "Kostarika"
+ },
+ "CU": {
+ "name": "Kuba"
+ },
+ "CY": {
+ "name": "Kuprosi"
+ },
+ "KW": {
+ "name": "Kuwaiti"
+ },
+ "LA": {
+ "name": "Laosi"
+ },
+ "LU": {
+ "name": "Lasembagi"
+ },
+ "LV": {
+ "name": "Lativia"
+ },
+ "LB": {
+ "name": "Lebanoni"
+ },
+ "LS": {
+ "name": "Lesoto"
+ },
+ "LR": {
+ "name": "Liberia"
+ },
+ "LY": {
+ "name": "Libya"
+ },
+ "LI": {
+ "name": "Lishenteni"
+ },
+ "LT": {
+ "name": "Litwania"
+ },
+ "MO": {
+ "name": "Macau SAR China"
+ },
+ "MW": {
+ "name": "Malawi"
+ },
+ "MY": {
+ "name": "Malesia"
+ },
+ "ML": {
+ "name": "Mali"
+ },
+ "MT": {
+ "name": "Malta"
+ },
+ "US": {
+ "name": "Marekani"
+ },
+ "MQ": {
+ "name": "Martiniki"
+ },
+ "MK": {
+ "name": "Masedonia"
+ },
+ "YT": {
+ "name": "Mayotte"
+ },
+ "MX": {
+ "name": "Meksiko"
+ },
+ "FM": {
+ "name": "Mikronesia"
+ },
+ "EG": {
+ "name": "Misri"
+ },
+ "MV": {
+ "name": "Modivu"
+ },
+ "MD": {
+ "name": "Moldova"
+ },
+ "MC": {
+ "name": "Monako"
+ },
+ "MN": {
+ "name": "Mongolia"
+ },
+ "ME": {
+ "name": "Montenegro"
+ },
+ "MS": {
+ "name": "Montserrati"
+ },
+ "MU": {
+ "name": "Morisi"
+ },
+ "MR": {
+ "name": "Moritania"
+ },
+ "MA": {
+ "name": "Moroko"
+ },
+ "MZ": {
+ "name": "Msumbiji"
+ },
+ "MM": {
+ "name": "Myama"
+ },
+ "NA": {
+ "name": "Namibia"
+ },
+ "NR": {
+ "name": "Nauru"
+ },
+ "NP": {
+ "name": "Nepali"
+ },
+ "NE": {
+ "name": "Nijeri"
+ },
+ "NG": {
+ "name": "Nijeria"
+ },
+ "NI": {
+ "name": "Nikaragwa"
+ },
+ "NU": {
+ "name": "Niue"
+ },
+ "NO": {
+ "name": "Norwe"
+ },
+ "NC": {
+ "name": "Nyukaledonia"
+ },
+ "NZ": {
+ "name": "Nyuzilandi"
+ },
+ "OM": {
+ "name": "Omani"
+ },
+ "PK": {
+ "name": "Pakistani"
+ },
+ "PW": {
+ "name": "Palau"
+ },
+ "PA": {
+ "name": "Panama"
+ },
+ "PG": {
+ "name": "Papua"
+ },
+ "PY": {
+ "name": "Paragwai"
+ },
+ "PE": {
+ "name": "Peru"
+ },
+ "PN": {
+ "name": "Pitkairni"
+ },
+ "PL": {
+ "name": "Polandi"
+ },
+ "PF": {
+ "name": "Polinesia ya Ufaransa"
+ },
+ "PR": {
+ "name": "Pwetoriko"
+ },
+ "RE": {
+ "name": "Riyunioni"
+ },
+ "RO": {
+ "name": "Romania"
+ },
+ "RW": {
+ "name": "Rwanda"
+ },
+ "SM": {
+ "name": "Samarino"
+ },
+ "WS": {
+ "name": "Samoa"
+ },
+ "AS": {
+ "name": "Samoa ya Marekani"
+ },
+ "SH": {
+ "name": "Santahelena"
+ },
+ "KN": {
+ "name": "Santakitzi na Nevis"
+ },
+ "LC": {
+ "name": "Santalusia"
+ },
+ "PM": {
+ "name": "Santapieri na Mikeloni"
+ },
+ "VC": {
+ "name": "Santavisenti na Grenadini"
+ },
+ "ST": {
+ "name": "Sao Tome na Principe"
+ },
+ "SA": {
+ "name": "Saudi"
+ },
+ "SN": {
+ "name": "Senegali"
+ },
+ "RS": {
+ "name": "Serbia"
+ },
+ "SC": {
+ "name": "Shelisheli"
+ },
+ "SL": {
+ "name": "Siera Leoni"
+ },
+ "SG": {
+ "name": "Singapoo"
+ },
+ "SX": {
+ "name": "Sint Maarten"
+ },
+ "SY": {
+ "name": "Siria"
+ },
+ "LK": {
+ "name": "Sirilanka"
+ },
+ "SK": {
+ "name": "Slovakia"
+ },
+ "SI": {
+ "name": "Slovenia"
+ },
+ "SO": {
+ "name": "Somalia"
+ },
+ "GS": {
+ "name": "South Georgia & South Sandwich Islands"
+ },
+ "SS": {
+ "name": "South Sudan"
+ },
+ "BL": {
+ "name": "St. Barthélemy"
+ },
+ "MF": {
+ "name": "St. Martin"
+ },
+ "SD": {
+ "name": "Sudani"
+ },
+ "SR": {
+ "name": "Surinamu"
+ },
+ "SJ": {
+ "name": "Svalbard & Jan Mayen"
+ },
+ "TH": {
+ "name": "Tailandi"
+ },
+ "TW": {
+ "name": "Taiwani"
+ },
+ "TJ": {
+ "name": "Tajikistani"
+ },
+ "TZ": {
+ "name": "Tanzania"
+ },
+ "TL": {
+ "name": "Timori ya Mashariki"
+ },
+ "TG": {
+ "name": "Togo"
+ },
+ "TK": {
+ "name": "Tokelau"
+ },
+ "TO": {
+ "name": "Tonga"
+ },
+ "TT": {
+ "name": "Trinidad na Tobago"
+ },
+ "TA": {
+ "name": "Tristan da Cunha"
+ },
+ "TN": {
+ "name": "Tunisia"
+ },
+ "TM": {
+ "name": "Turukimenistani"
+ },
+ "TV": {
+ "name": "Tuvalu"
+ },
+ "UM": {
+ "name": "U.S. Outlying Islands"
+ },
+ "IR": {
+ "name": "Uajemi"
+ },
+ "BE": {
+ "name": "Ubelgiji"
+ },
+ "FR": {
+ "name": "Ufaransa"
+ },
+ "FI": {
+ "name": "Ufini"
+ },
+ "UG": {
+ "name": "Uganda"
+ },
+ "GR": {
+ "name": "Ugiriki"
+ },
+ "ET": {
+ "name": "Uhabeshi"
+ },
+ "NL": {
+ "name": "Uholanzi"
+ },
+ "GB": {
+ "name": "Uingereza"
+ },
+ "DE": {
+ "name": "Ujerumani"
+ },
+ "PS": {
+ "name": "Ukingo wa Magharibi na Ukanda wa Gaza wa Palestina"
+ },
+ "UA": {
+ "name": "Ukraini"
+ },
+ "PT": {
+ "name": "Ureno"
+ },
+ "UY": {
+ "name": "Urugwai"
+ },
+ "RU": {
+ "name": "Urusi"
+ },
+ "SZ": {
+ "name": "Uswazi"
+ },
+ "SE": {
+ "name": "Uswidi"
+ },
+ "CH": {
+ "name": "Uswisi"
+ },
+ "TR": {
+ "name": "Uturuki"
+ },
+ "UZ": {
+ "name": "Uzibekistani"
+ },
+ "VU": {
+ "name": "Vanuatu"
+ },
+ "VA": {
+ "name": "Vatikani"
+ },
+ "VE": {
+ "name": "Venezuela"
+ },
+ "VN": {
+ "name": "Vietinamu"
+ },
+ "CK": {
+ "name": "Visiwa vya Cook"
+ },
+ "FK": {
+ "name": "Visiwa vya Falkland"
+ },
+ "KY": {
+ "name": "Visiwa vya Kayman"
+ },
+ "MP": {
+ "name": "Visiwa vya Mariana vya Kaskazini"
+ },
+ "MH": {
+ "name": "Visiwa vya Marshal"
+ },
+ "SB": {
+ "name": "Visiwa vya Solomon"
+ },
+ "TC": {
+ "name": "Visiwa vya Turki na Kaiko"
+ },
+ "VI": {
+ "name": "Visiwa vya Virgin vya Marekani"
+ },
+ "VG": {
+ "name": "Visiwa vya Virgin vya Uingereza"
+ },
+ "WF": {
+ "name": "Walis na Futuna"
+ },
+ "EH": {
+ "name": "Western Sahara"
+ },
+ "YE": {
+ "name": "Yemeni"
+ },
+ "JO": {
+ "name": "Yordani"
+ },
+ "ZM": {
+ "name": "Zambia"
+ },
+ "ZW": {
+ "name": "Zimbabwe"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/country/de-CH.json b/library/intl/resources/country/de-CH.json
new file mode 100644
index 000000000..515874b31
--- /dev/null
+++ b/library/intl/resources/country/de-CH.json
@@ -0,0 +1,761 @@
+{
+ "AF": {
+ "name": "Afghanistan"
+ },
+ "EG": {
+ "name": "Ägypten"
+ },
+ "AX": {
+ "name": "Ã…land-Inseln"
+ },
+ "AL": {
+ "name": "Albanien"
+ },
+ "DZ": {
+ "name": "Algerien"
+ },
+ "UM": {
+ "name": "Amerikanisch-Ozeanien"
+ },
+ "AS": {
+ "name": "Amerikanisch-Samoa"
+ },
+ "VI": {
+ "name": "Amerikanische Jungferninseln"
+ },
+ "AD": {
+ "name": "Andorra"
+ },
+ "AO": {
+ "name": "Angola"
+ },
+ "AI": {
+ "name": "Anguilla"
+ },
+ "AQ": {
+ "name": "Antarktis"
+ },
+ "AG": {
+ "name": "Antigua und Barbuda"
+ },
+ "GQ": {
+ "name": "Äquatorialguinea"
+ },
+ "AR": {
+ "name": "Argentinien"
+ },
+ "AM": {
+ "name": "Armenien"
+ },
+ "AW": {
+ "name": "Aruba"
+ },
+ "AC": {
+ "name": "Ascension"
+ },
+ "AZ": {
+ "name": "Aserbaidschan"
+ },
+ "ET": {
+ "name": "Äthiopien"
+ },
+ "AU": {
+ "name": "Australien"
+ },
+ "BS": {
+ "name": "Bahamas"
+ },
+ "BH": {
+ "name": "Bahrain"
+ },
+ "BD": {
+ "name": "Bangladesh"
+ },
+ "BB": {
+ "name": "Barbados"
+ },
+ "BE": {
+ "name": "Belgien"
+ },
+ "BZ": {
+ "name": "Belize"
+ },
+ "BJ": {
+ "name": "Benin"
+ },
+ "BM": {
+ "name": "Bermuda"
+ },
+ "BT": {
+ "name": "Bhutan"
+ },
+ "BO": {
+ "name": "Bolivien"
+ },
+ "BA": {
+ "name": "Bosnien und Herzegowina"
+ },
+ "BW": {
+ "name": "Botswana"
+ },
+ "BR": {
+ "name": "Brasilien"
+ },
+ "VG": {
+ "name": "Britische Jungferninseln"
+ },
+ "IO": {
+ "name": "Britisches Territorium im Indischen Ozean"
+ },
+ "BN": {
+ "name": "Brunei"
+ },
+ "BG": {
+ "name": "Bulgarien"
+ },
+ "BF": {
+ "name": "Burkina Faso"
+ },
+ "BI": {
+ "name": "Burundi"
+ },
+ "EA": {
+ "name": "Ceuta und Melilla"
+ },
+ "CL": {
+ "name": "Chile"
+ },
+ "CN": {
+ "name": "China"
+ },
+ "CK": {
+ "name": "Cookinseln"
+ },
+ "CR": {
+ "name": "Costa Rica"
+ },
+ "CI": {
+ "name": "Côte d’Ivoire"
+ },
+ "CW": {
+ "name": "Curaçao"
+ },
+ "DK": {
+ "name": "Dänemark"
+ },
+ "KP": {
+ "name": "Demokratische Volksrepublik Korea"
+ },
+ "DE": {
+ "name": "Deutschland"
+ },
+ "DG": {
+ "name": "Diego Garcia"
+ },
+ "DJ": {
+ "name": "Djibouti"
+ },
+ "DM": {
+ "name": "Dominica"
+ },
+ "DO": {
+ "name": "Dominikanische Republik"
+ },
+ "EC": {
+ "name": "Ecuador"
+ },
+ "SV": {
+ "name": "El Salvador"
+ },
+ "ER": {
+ "name": "Eritrea"
+ },
+ "EE": {
+ "name": "Estland"
+ },
+ "FK": {
+ "name": "Falklandinseln"
+ },
+ "FO": {
+ "name": "Färöer"
+ },
+ "FJ": {
+ "name": "Fidschi"
+ },
+ "FI": {
+ "name": "Finnland"
+ },
+ "FR": {
+ "name": "Frankreich"
+ },
+ "GF": {
+ "name": "Französisch-Guayana"
+ },
+ "PF": {
+ "name": "Französisch-Polynesien"
+ },
+ "TF": {
+ "name": "Französische Süd- und Antarktisgebiete"
+ },
+ "GA": {
+ "name": "Gabun"
+ },
+ "GM": {
+ "name": "Gambia"
+ },
+ "GE": {
+ "name": "Georgien"
+ },
+ "GH": {
+ "name": "Ghana"
+ },
+ "GI": {
+ "name": "Gibraltar"
+ },
+ "GD": {
+ "name": "Grenada"
+ },
+ "GR": {
+ "name": "Griechenland"
+ },
+ "GL": {
+ "name": "Grönland"
+ },
+ "GB": {
+ "name": "Grossbritannien"
+ },
+ "GP": {
+ "name": "Guadeloupe"
+ },
+ "GU": {
+ "name": "Guam"
+ },
+ "GT": {
+ "name": "Guatemala"
+ },
+ "GG": {
+ "name": "Guernsey"
+ },
+ "GN": {
+ "name": "Guinea"
+ },
+ "GW": {
+ "name": "Guinea-Bissau"
+ },
+ "GY": {
+ "name": "Guyana"
+ },
+ "HT": {
+ "name": "Haiti"
+ },
+ "HN": {
+ "name": "Honduras"
+ },
+ "IN": {
+ "name": "Indien"
+ },
+ "ID": {
+ "name": "Indonesien"
+ },
+ "IQ": {
+ "name": "Irak"
+ },
+ "IR": {
+ "name": "Iran"
+ },
+ "IE": {
+ "name": "Irland"
+ },
+ "IS": {
+ "name": "Island"
+ },
+ "IM": {
+ "name": "Isle of Man"
+ },
+ "IL": {
+ "name": "Israel"
+ },
+ "IT": {
+ "name": "Italien"
+ },
+ "JM": {
+ "name": "Jamaika"
+ },
+ "JP": {
+ "name": "Japan"
+ },
+ "YE": {
+ "name": "Jemen"
+ },
+ "JE": {
+ "name": "Jersey"
+ },
+ "JO": {
+ "name": "Jordanien"
+ },
+ "KY": {
+ "name": "Kaimaninseln"
+ },
+ "KH": {
+ "name": "Kambodscha"
+ },
+ "CM": {
+ "name": "Kamerun"
+ },
+ "CA": {
+ "name": "Kanada"
+ },
+ "IC": {
+ "name": "Kanarische Inseln"
+ },
+ "CV": {
+ "name": "Kapverden"
+ },
+ "BQ": {
+ "name": "Karibische Niederlande"
+ },
+ "KZ": {
+ "name": "Kasachstan"
+ },
+ "QA": {
+ "name": "Katar"
+ },
+ "KE": {
+ "name": "Kenia"
+ },
+ "KG": {
+ "name": "Kirgisistan"
+ },
+ "KI": {
+ "name": "Kiribati"
+ },
+ "CC": {
+ "name": "Kokosinseln"
+ },
+ "CO": {
+ "name": "Kolumbien"
+ },
+ "KM": {
+ "name": "Komoren"
+ },
+ "CG": {
+ "name": "Kongo-Brazzaville"
+ },
+ "CD": {
+ "name": "Kongo-Kinshasa"
+ },
+ "XK": {
+ "name": "Kosovo"
+ },
+ "HR": {
+ "name": "Kroatien"
+ },
+ "CU": {
+ "name": "Kuba"
+ },
+ "KW": {
+ "name": "Kuwait"
+ },
+ "LA": {
+ "name": "Laos"
+ },
+ "LS": {
+ "name": "Lesotho"
+ },
+ "LV": {
+ "name": "Lettland"
+ },
+ "LB": {
+ "name": "Libanon"
+ },
+ "LR": {
+ "name": "Liberia"
+ },
+ "LY": {
+ "name": "Libyen"
+ },
+ "LI": {
+ "name": "Liechtenstein"
+ },
+ "LT": {
+ "name": "Litauen"
+ },
+ "LU": {
+ "name": "Luxemburg"
+ },
+ "MG": {
+ "name": "Madagaskar"
+ },
+ "MW": {
+ "name": "Malawi"
+ },
+ "MY": {
+ "name": "Malaysia"
+ },
+ "MV": {
+ "name": "Malediven"
+ },
+ "ML": {
+ "name": "Mali"
+ },
+ "MT": {
+ "name": "Malta"
+ },
+ "MA": {
+ "name": "Marokko"
+ },
+ "MH": {
+ "name": "Marshall-Inseln"
+ },
+ "MQ": {
+ "name": "Martinique"
+ },
+ "MR": {
+ "name": "Mauretanien"
+ },
+ "MU": {
+ "name": "Mauritius"
+ },
+ "YT": {
+ "name": "Mayotte"
+ },
+ "MK": {
+ "name": "Mazedonien"
+ },
+ "MX": {
+ "name": "Mexiko"
+ },
+ "FM": {
+ "name": "Mikronesien"
+ },
+ "MC": {
+ "name": "Monaco"
+ },
+ "MN": {
+ "name": "Mongolei"
+ },
+ "ME": {
+ "name": "Montenegro"
+ },
+ "MS": {
+ "name": "Montserrat"
+ },
+ "MZ": {
+ "name": "Mosambik"
+ },
+ "MM": {
+ "name": "Myanmar"
+ },
+ "NA": {
+ "name": "Namibia"
+ },
+ "NR": {
+ "name": "Nauru"
+ },
+ "NP": {
+ "name": "Nepal"
+ },
+ "NC": {
+ "name": "Neukaledonien"
+ },
+ "NZ": {
+ "name": "Neuseeland"
+ },
+ "NI": {
+ "name": "Nicaragua"
+ },
+ "NL": {
+ "name": "Niederlande"
+ },
+ "NE": {
+ "name": "Niger"
+ },
+ "NG": {
+ "name": "Nigeria"
+ },
+ "NU": {
+ "name": "Niue"
+ },
+ "MP": {
+ "name": "Nördliche Marianen"
+ },
+ "NF": {
+ "name": "Norfolkinsel"
+ },
+ "NO": {
+ "name": "Norwegen"
+ },
+ "OM": {
+ "name": "Oman"
+ },
+ "AT": {
+ "name": "Österreich"
+ },
+ "PK": {
+ "name": "Pakistan"
+ },
+ "PS": {
+ "name": "Palästinensische Autonomiegebiete"
+ },
+ "PW": {
+ "name": "Palau"
+ },
+ "PA": {
+ "name": "Panama"
+ },
+ "PG": {
+ "name": "Papua-Neuguinea"
+ },
+ "PY": {
+ "name": "Paraguay"
+ },
+ "PE": {
+ "name": "Peru"
+ },
+ "PH": {
+ "name": "Philippinen"
+ },
+ "PN": {
+ "name": "Pitcairninseln"
+ },
+ "PL": {
+ "name": "Polen"
+ },
+ "PT": {
+ "name": "Portugal"
+ },
+ "PR": {
+ "name": "Puerto Rico"
+ },
+ "KR": {
+ "name": "Republik Korea"
+ },
+ "MD": {
+ "name": "Republik Moldau"
+ },
+ "RE": {
+ "name": "Réunion"
+ },
+ "RO": {
+ "name": "Rumänien"
+ },
+ "RU": {
+ "name": "Russische Föderation"
+ },
+ "RW": {
+ "name": "Rwanda"
+ },
+ "SB": {
+ "name": "Salomon-Inseln"
+ },
+ "ZM": {
+ "name": "Sambia"
+ },
+ "WS": {
+ "name": "Samoa"
+ },
+ "SM": {
+ "name": "San Marino"
+ },
+ "ST": {
+ "name": "Sao Tomé und Principe"
+ },
+ "SA": {
+ "name": "Saudi-Arabien"
+ },
+ "SE": {
+ "name": "Schweden"
+ },
+ "CH": {
+ "name": "Schweiz"
+ },
+ "SN": {
+ "name": "Senegal"
+ },
+ "RS": {
+ "name": "Serbien"
+ },
+ "SC": {
+ "name": "Seychellen"
+ },
+ "SL": {
+ "name": "Sierra Leone"
+ },
+ "SG": {
+ "name": "Singapur"
+ },
+ "SX": {
+ "name": "Sint Maarten"
+ },
+ "SK": {
+ "name": "Slowakei"
+ },
+ "SI": {
+ "name": "Slowenien"
+ },
+ "SO": {
+ "name": "Somalia"
+ },
+ "MO": {
+ "name": "Sonderverwaltungsregion Macau"
+ },
+ "HK": {
+ "name": "Sonderverwaltungszone Hongkong"
+ },
+ "ES": {
+ "name": "Spanien"
+ },
+ "LK": {
+ "name": "Sri Lanka"
+ },
+ "BL": {
+ "name": "St. Barthélemy"
+ },
+ "SH": {
+ "name": "St. Helena"
+ },
+ "KN": {
+ "name": "St. Kitts und Nevis"
+ },
+ "LC": {
+ "name": "St. Lucia"
+ },
+ "MF": {
+ "name": "St. Martin"
+ },
+ "PM": {
+ "name": "St. Pierre und Miquelon"
+ },
+ "VC": {
+ "name": "St. Vincent und die Grenadinen"
+ },
+ "ZA": {
+ "name": "Südafrika"
+ },
+ "SD": {
+ "name": "Sudan"
+ },
+ "GS": {
+ "name": "Südgeorgien und die Südlichen Sandwichinseln"
+ },
+ "SS": {
+ "name": "Südsudan"
+ },
+ "SR": {
+ "name": "Suriname"
+ },
+ "SJ": {
+ "name": "Svalbard und Jan Mayen"
+ },
+ "SZ": {
+ "name": "Swasiland"
+ },
+ "SY": {
+ "name": "Syrien"
+ },
+ "TJ": {
+ "name": "Tadschikistan"
+ },
+ "TW": {
+ "name": "Taiwan"
+ },
+ "TZ": {
+ "name": "Tansania"
+ },
+ "TH": {
+ "name": "Thailand"
+ },
+ "TL": {
+ "name": "Timor-Leste"
+ },
+ "TG": {
+ "name": "Togo"
+ },
+ "TK": {
+ "name": "Tokelau"
+ },
+ "TO": {
+ "name": "Tonga"
+ },
+ "TT": {
+ "name": "Trinidad und Tobago"
+ },
+ "TA": {
+ "name": "Tristan da Cunha"
+ },
+ "TD": {
+ "name": "Tschad"
+ },
+ "CZ": {
+ "name": "Tschechische Republik"
+ },
+ "TN": {
+ "name": "Tunesien"
+ },
+ "TR": {
+ "name": "Türkei"
+ },
+ "TM": {
+ "name": "Turkmenistan"
+ },
+ "TC": {
+ "name": "Turks- und Caicosinseln"
+ },
+ "TV": {
+ "name": "Tuvalu"
+ },
+ "UG": {
+ "name": "Uganda"
+ },
+ "UA": {
+ "name": "Ukraine"
+ },
+ "HU": {
+ "name": "Ungarn"
+ },
+ "UY": {
+ "name": "Uruguay"
+ },
+ "UZ": {
+ "name": "Usbekistan"
+ },
+ "VU": {
+ "name": "Vanuatu"
+ },
+ "VA": {
+ "name": "Vatikanstadt"
+ },
+ "VE": {
+ "name": "Venezuela"
+ },
+ "AE": {
+ "name": "Vereinigte Arabische Emirate"
+ },
+ "US": {
+ "name": "Vereinigte Staaten"
+ },
+ "VN": {
+ "name": "Vietnam"
+ },
+ "WF": {
+ "name": "Wallis und Futuna"
+ },
+ "CX": {
+ "name": "Weihnachtsinsel"
+ },
+ "BY": {
+ "name": "Weissrussland"
+ },
+ "EH": {
+ "name": "Westsahara"
+ },
+ "CF": {
+ "name": "Zentralafrikanische Republik"
+ },
+ "ZW": {
+ "name": "Zimbabwe"
+ },
+ "CY": {
+ "name": "Zypern"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/country/de.json b/library/intl/resources/country/de.json
new file mode 100644
index 000000000..30777eaaf
--- /dev/null
+++ b/library/intl/resources/country/de.json
@@ -0,0 +1,761 @@
+{
+ "AF": {
+ "name": "Afghanistan"
+ },
+ "EG": {
+ "name": "Ägypten"
+ },
+ "AX": {
+ "name": "Ã…land-Inseln"
+ },
+ "AL": {
+ "name": "Albanien"
+ },
+ "DZ": {
+ "name": "Algerien"
+ },
+ "UM": {
+ "name": "Amerikanisch-Ozeanien"
+ },
+ "AS": {
+ "name": "Amerikanisch-Samoa"
+ },
+ "VI": {
+ "name": "Amerikanische Jungferninseln"
+ },
+ "AD": {
+ "name": "Andorra"
+ },
+ "AO": {
+ "name": "Angola"
+ },
+ "AI": {
+ "name": "Anguilla"
+ },
+ "AQ": {
+ "name": "Antarktis"
+ },
+ "AG": {
+ "name": "Antigua und Barbuda"
+ },
+ "GQ": {
+ "name": "Äquatorialguinea"
+ },
+ "AR": {
+ "name": "Argentinien"
+ },
+ "AM": {
+ "name": "Armenien"
+ },
+ "AW": {
+ "name": "Aruba"
+ },
+ "AC": {
+ "name": "Ascension"
+ },
+ "AZ": {
+ "name": "Aserbaidschan"
+ },
+ "ET": {
+ "name": "Äthiopien"
+ },
+ "AU": {
+ "name": "Australien"
+ },
+ "BS": {
+ "name": "Bahamas"
+ },
+ "BH": {
+ "name": "Bahrain"
+ },
+ "BD": {
+ "name": "Bangladesch"
+ },
+ "BB": {
+ "name": "Barbados"
+ },
+ "BY": {
+ "name": "Belarus"
+ },
+ "BE": {
+ "name": "Belgien"
+ },
+ "BZ": {
+ "name": "Belize"
+ },
+ "BJ": {
+ "name": "Benin"
+ },
+ "BM": {
+ "name": "Bermuda"
+ },
+ "BT": {
+ "name": "Bhutan"
+ },
+ "BO": {
+ "name": "Bolivien"
+ },
+ "BA": {
+ "name": "Bosnien und Herzegowina"
+ },
+ "BW": {
+ "name": "Botsuana"
+ },
+ "BR": {
+ "name": "Brasilien"
+ },
+ "VG": {
+ "name": "Britische Jungferninseln"
+ },
+ "IO": {
+ "name": "Britisches Territorium im Indischen Ozean"
+ },
+ "BN": {
+ "name": "Brunei Darussalam"
+ },
+ "BG": {
+ "name": "Bulgarien"
+ },
+ "BF": {
+ "name": "Burkina Faso"
+ },
+ "BI": {
+ "name": "Burundi"
+ },
+ "EA": {
+ "name": "Ceuta und Melilla"
+ },
+ "CL": {
+ "name": "Chile"
+ },
+ "CN": {
+ "name": "China"
+ },
+ "CK": {
+ "name": "Cookinseln"
+ },
+ "CR": {
+ "name": "Costa Rica"
+ },
+ "CI": {
+ "name": "Côte d’Ivoire"
+ },
+ "CW": {
+ "name": "Curaçao"
+ },
+ "DK": {
+ "name": "Dänemark"
+ },
+ "KP": {
+ "name": "Demokratische Volksrepublik Korea"
+ },
+ "DE": {
+ "name": "Deutschland"
+ },
+ "DG": {
+ "name": "Diego Garcia"
+ },
+ "DM": {
+ "name": "Dominica"
+ },
+ "DO": {
+ "name": "Dominikanische Republik"
+ },
+ "DJ": {
+ "name": "Dschibuti"
+ },
+ "EC": {
+ "name": "Ecuador"
+ },
+ "SV": {
+ "name": "El Salvador"
+ },
+ "ER": {
+ "name": "Eritrea"
+ },
+ "EE": {
+ "name": "Estland"
+ },
+ "FK": {
+ "name": "Falklandinseln"
+ },
+ "FO": {
+ "name": "Färöer"
+ },
+ "FJ": {
+ "name": "Fidschi"
+ },
+ "FI": {
+ "name": "Finnland"
+ },
+ "FR": {
+ "name": "Frankreich"
+ },
+ "GF": {
+ "name": "Französisch-Guayana"
+ },
+ "PF": {
+ "name": "Französisch-Polynesien"
+ },
+ "TF": {
+ "name": "Französische Süd- und Antarktisgebiete"
+ },
+ "GA": {
+ "name": "Gabun"
+ },
+ "GM": {
+ "name": "Gambia"
+ },
+ "GE": {
+ "name": "Georgien"
+ },
+ "GH": {
+ "name": "Ghana"
+ },
+ "GI": {
+ "name": "Gibraltar"
+ },
+ "GD": {
+ "name": "Grenada"
+ },
+ "GR": {
+ "name": "Griechenland"
+ },
+ "GL": {
+ "name": "Grönland"
+ },
+ "GP": {
+ "name": "Guadeloupe"
+ },
+ "GU": {
+ "name": "Guam"
+ },
+ "GT": {
+ "name": "Guatemala"
+ },
+ "GG": {
+ "name": "Guernsey"
+ },
+ "GN": {
+ "name": "Guinea"
+ },
+ "GW": {
+ "name": "Guinea-Bissau"
+ },
+ "GY": {
+ "name": "Guyana"
+ },
+ "HT": {
+ "name": "Haiti"
+ },
+ "HN": {
+ "name": "Honduras"
+ },
+ "IN": {
+ "name": "Indien"
+ },
+ "ID": {
+ "name": "Indonesien"
+ },
+ "IQ": {
+ "name": "Irak"
+ },
+ "IR": {
+ "name": "Iran"
+ },
+ "IE": {
+ "name": "Irland"
+ },
+ "IS": {
+ "name": "Island"
+ },
+ "IM": {
+ "name": "Isle of Man"
+ },
+ "IL": {
+ "name": "Israel"
+ },
+ "IT": {
+ "name": "Italien"
+ },
+ "JM": {
+ "name": "Jamaika"
+ },
+ "JP": {
+ "name": "Japan"
+ },
+ "YE": {
+ "name": "Jemen"
+ },
+ "JE": {
+ "name": "Jersey"
+ },
+ "JO": {
+ "name": "Jordanien"
+ },
+ "KY": {
+ "name": "Kaimaninseln"
+ },
+ "KH": {
+ "name": "Kambodscha"
+ },
+ "CM": {
+ "name": "Kamerun"
+ },
+ "CA": {
+ "name": "Kanada"
+ },
+ "IC": {
+ "name": "Kanarische Inseln"
+ },
+ "CV": {
+ "name": "Kap Verde"
+ },
+ "BQ": {
+ "name": "Karibische Niederlande"
+ },
+ "KZ": {
+ "name": "Kasachstan"
+ },
+ "QA": {
+ "name": "Katar"
+ },
+ "KE": {
+ "name": "Kenia"
+ },
+ "KG": {
+ "name": "Kirgisistan"
+ },
+ "KI": {
+ "name": "Kiribati"
+ },
+ "CC": {
+ "name": "Kokosinseln"
+ },
+ "CO": {
+ "name": "Kolumbien"
+ },
+ "KM": {
+ "name": "Komoren"
+ },
+ "CG": {
+ "name": "Kongo-Brazzaville"
+ },
+ "CD": {
+ "name": "Kongo-Kinshasa"
+ },
+ "XK": {
+ "name": "Kosovo"
+ },
+ "HR": {
+ "name": "Kroatien"
+ },
+ "CU": {
+ "name": "Kuba"
+ },
+ "KW": {
+ "name": "Kuwait"
+ },
+ "LA": {
+ "name": "Laos"
+ },
+ "LS": {
+ "name": "Lesotho"
+ },
+ "LV": {
+ "name": "Lettland"
+ },
+ "LB": {
+ "name": "Libanon"
+ },
+ "LR": {
+ "name": "Liberia"
+ },
+ "LY": {
+ "name": "Libyen"
+ },
+ "LI": {
+ "name": "Liechtenstein"
+ },
+ "LT": {
+ "name": "Litauen"
+ },
+ "LU": {
+ "name": "Luxemburg"
+ },
+ "MG": {
+ "name": "Madagaskar"
+ },
+ "MW": {
+ "name": "Malawi"
+ },
+ "MY": {
+ "name": "Malaysia"
+ },
+ "MV": {
+ "name": "Malediven"
+ },
+ "ML": {
+ "name": "Mali"
+ },
+ "MT": {
+ "name": "Malta"
+ },
+ "MA": {
+ "name": "Marokko"
+ },
+ "MH": {
+ "name": "Marshallinseln"
+ },
+ "MQ": {
+ "name": "Martinique"
+ },
+ "MR": {
+ "name": "Mauretanien"
+ },
+ "MU": {
+ "name": "Mauritius"
+ },
+ "YT": {
+ "name": "Mayotte"
+ },
+ "MK": {
+ "name": "Mazedonien"
+ },
+ "MX": {
+ "name": "Mexiko"
+ },
+ "FM": {
+ "name": "Mikronesien"
+ },
+ "MC": {
+ "name": "Monaco"
+ },
+ "MN": {
+ "name": "Mongolei"
+ },
+ "ME": {
+ "name": "Montenegro"
+ },
+ "MS": {
+ "name": "Montserrat"
+ },
+ "MZ": {
+ "name": "Mosambik"
+ },
+ "MM": {
+ "name": "Myanmar"
+ },
+ "NA": {
+ "name": "Namibia"
+ },
+ "NR": {
+ "name": "Nauru"
+ },
+ "NP": {
+ "name": "Nepal"
+ },
+ "NC": {
+ "name": "Neukaledonien"
+ },
+ "NZ": {
+ "name": "Neuseeland"
+ },
+ "NI": {
+ "name": "Nicaragua"
+ },
+ "NL": {
+ "name": "Niederlande"
+ },
+ "NE": {
+ "name": "Niger"
+ },
+ "NG": {
+ "name": "Nigeria"
+ },
+ "NU": {
+ "name": "Niue"
+ },
+ "MP": {
+ "name": "Nördliche Marianen"
+ },
+ "NF": {
+ "name": "Norfolkinsel"
+ },
+ "NO": {
+ "name": "Norwegen"
+ },
+ "OM": {
+ "name": "Oman"
+ },
+ "AT": {
+ "name": "Österreich"
+ },
+ "PK": {
+ "name": "Pakistan"
+ },
+ "PS": {
+ "name": "Palästinensische Autonomiegebiete"
+ },
+ "PW": {
+ "name": "Palau"
+ },
+ "PA": {
+ "name": "Panama"
+ },
+ "PG": {
+ "name": "Papua-Neuguinea"
+ },
+ "PY": {
+ "name": "Paraguay"
+ },
+ "PE": {
+ "name": "Peru"
+ },
+ "PH": {
+ "name": "Philippinen"
+ },
+ "PN": {
+ "name": "Pitcairninseln"
+ },
+ "PL": {
+ "name": "Polen"
+ },
+ "PT": {
+ "name": "Portugal"
+ },
+ "PR": {
+ "name": "Puerto Rico"
+ },
+ "KR": {
+ "name": "Republik Korea"
+ },
+ "MD": {
+ "name": "Republik Moldau"
+ },
+ "RE": {
+ "name": "Réunion"
+ },
+ "RW": {
+ "name": "Ruanda"
+ },
+ "RO": {
+ "name": "Rumänien"
+ },
+ "RU": {
+ "name": "Russische Föderation"
+ },
+ "SB": {
+ "name": "Salomonen"
+ },
+ "ZM": {
+ "name": "Sambia"
+ },
+ "WS": {
+ "name": "Samoa"
+ },
+ "SM": {
+ "name": "San Marino"
+ },
+ "ST": {
+ "name": "São Tomé und Príncipe"
+ },
+ "SA": {
+ "name": "Saudi-Arabien"
+ },
+ "SE": {
+ "name": "Schweden"
+ },
+ "CH": {
+ "name": "Schweiz"
+ },
+ "SN": {
+ "name": "Senegal"
+ },
+ "RS": {
+ "name": "Serbien"
+ },
+ "SC": {
+ "name": "Seychellen"
+ },
+ "SL": {
+ "name": "Sierra Leone"
+ },
+ "ZW": {
+ "name": "Simbabwe"
+ },
+ "SG": {
+ "name": "Singapur"
+ },
+ "SX": {
+ "name": "Sint Maarten"
+ },
+ "SK": {
+ "name": "Slowakei"
+ },
+ "SI": {
+ "name": "Slowenien"
+ },
+ "SO": {
+ "name": "Somalia"
+ },
+ "MO": {
+ "name": "Sonderverwaltungsregion Macau"
+ },
+ "HK": {
+ "name": "Sonderverwaltungszone Hongkong"
+ },
+ "ES": {
+ "name": "Spanien"
+ },
+ "LK": {
+ "name": "Sri Lanka"
+ },
+ "BL": {
+ "name": "St. Barthélemy"
+ },
+ "SH": {
+ "name": "St. Helena"
+ },
+ "KN": {
+ "name": "St. Kitts und Nevis"
+ },
+ "LC": {
+ "name": "St. Lucia"
+ },
+ "MF": {
+ "name": "St. Martin"
+ },
+ "PM": {
+ "name": "St. Pierre und Miquelon"
+ },
+ "VC": {
+ "name": "St. Vincent und die Grenadinen"
+ },
+ "ZA": {
+ "name": "Südafrika"
+ },
+ "SD": {
+ "name": "Sudan"
+ },
+ "GS": {
+ "name": "Südgeorgien und die Südlichen Sandwichinseln"
+ },
+ "SS": {
+ "name": "Südsudan"
+ },
+ "SR": {
+ "name": "Suriname"
+ },
+ "SJ": {
+ "name": "Svalbard und Jan Mayen"
+ },
+ "SZ": {
+ "name": "Swasiland"
+ },
+ "SY": {
+ "name": "Syrien"
+ },
+ "TJ": {
+ "name": "Tadschikistan"
+ },
+ "TW": {
+ "name": "Taiwan"
+ },
+ "TZ": {
+ "name": "Tansania"
+ },
+ "TH": {
+ "name": "Thailand"
+ },
+ "TL": {
+ "name": "Timor-Leste"
+ },
+ "TG": {
+ "name": "Togo"
+ },
+ "TK": {
+ "name": "Tokelau"
+ },
+ "TO": {
+ "name": "Tonga"
+ },
+ "TT": {
+ "name": "Trinidad und Tobago"
+ },
+ "TA": {
+ "name": "Tristan da Cunha"
+ },
+ "TD": {
+ "name": "Tschad"
+ },
+ "CZ": {
+ "name": "Tschechische Republik"
+ },
+ "TN": {
+ "name": "Tunesien"
+ },
+ "TR": {
+ "name": "Türkei"
+ },
+ "TM": {
+ "name": "Turkmenistan"
+ },
+ "TC": {
+ "name": "Turks- und Caicosinseln"
+ },
+ "TV": {
+ "name": "Tuvalu"
+ },
+ "UG": {
+ "name": "Uganda"
+ },
+ "UA": {
+ "name": "Ukraine"
+ },
+ "HU": {
+ "name": "Ungarn"
+ },
+ "UY": {
+ "name": "Uruguay"
+ },
+ "UZ": {
+ "name": "Usbekistan"
+ },
+ "VU": {
+ "name": "Vanuatu"
+ },
+ "VA": {
+ "name": "Vatikanstadt"
+ },
+ "VE": {
+ "name": "Venezuela"
+ },
+ "AE": {
+ "name": "Vereinigte Arabische Emirate"
+ },
+ "US": {
+ "name": "Vereinigte Staaten"
+ },
+ "GB": {
+ "name": "Vereinigtes Königreich"
+ },
+ "VN": {
+ "name": "Vietnam"
+ },
+ "WF": {
+ "name": "Wallis und Futuna"
+ },
+ "CX": {
+ "name": "Weihnachtsinsel"
+ },
+ "EH": {
+ "name": "Westsahara"
+ },
+ "CF": {
+ "name": "Zentralafrikanische Republik"
+ },
+ "CY": {
+ "name": "Zypern"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/country/dje.json b/library/intl/resources/country/dje.json
new file mode 100644
index 000000000..2610631cb
--- /dev/null
+++ b/library/intl/resources/country/dje.json
@@ -0,0 +1,761 @@
+{
+ "AF": {
+ "name": "Afgaanistan"
+ },
+ "AX": {
+ "name": "Ã…land Islands"
+ },
+ "AL": {
+ "name": "Albaani"
+ },
+ "GB": {
+ "name": "Albaasalaama Marganta"
+ },
+ "DE": {
+ "name": "Almaaɲe"
+ },
+ "DZ": {
+ "name": "Alžeeri"
+ },
+ "VI": {
+ "name": "Ameerik Virgin Gungey"
+ },
+ "US": {
+ "name": "Ameriki Laabu Margantey"
+ },
+ "AS": {
+ "name": "Ameriki Samoa"
+ },
+ "AD": {
+ "name": "Andoora"
+ },
+ "AI": {
+ "name": "Angiiya"
+ },
+ "AO": {
+ "name": "Angoola"
+ },
+ "AQ": {
+ "name": "Antarctica"
+ },
+ "AG": {
+ "name": "Antigua nda Barbuuda"
+ },
+ "AR": {
+ "name": "Argentine"
+ },
+ "AM": {
+ "name": "Armeeni"
+ },
+ "AW": {
+ "name": "Aruuba"
+ },
+ "AC": {
+ "name": "Ascension Island"
+ },
+ "IS": {
+ "name": "Ayseland"
+ },
+ "AZ": {
+ "name": "Azerbaayijaŋ"
+ },
+ "BS": {
+ "name": "Bahamas"
+ },
+ "BH": {
+ "name": "Bahareen"
+ },
+ "BD": {
+ "name": "Bangladeši"
+ },
+ "BB": {
+ "name": "Barbaados"
+ },
+ "BE": {
+ "name": "Belgiiki"
+ },
+ "BZ": {
+ "name": "Beliizi"
+ },
+ "BJ": {
+ "name": "Beniŋ"
+ },
+ "BM": {
+ "name": "Bermuda"
+ },
+ "BY": {
+ "name": "Biloriši"
+ },
+ "BO": {
+ "name": "Boolivi"
+ },
+ "BA": {
+ "name": "Bosni nda Herzegovine"
+ },
+ "BW": {
+ "name": "Botswaana"
+ },
+ "BR": {
+ "name": "Breezil"
+ },
+ "IO": {
+ "name": "Britiši Indu teekoo laama"
+ },
+ "VG": {
+ "name": "Britiši Virgin gungey"
+ },
+ "BN": {
+ "name": "Bruunee"
+ },
+ "BG": {
+ "name": "Bulgaari"
+ },
+ "BF": {
+ "name": "Burkina faso"
+ },
+ "BI": {
+ "name": "Burundi"
+ },
+ "BT": {
+ "name": "Buutaŋ"
+ },
+ "TD": {
+ "name": "Caadu"
+ },
+ "IC": {
+ "name": "Canary Islands"
+ },
+ "BQ": {
+ "name": "Caribbean Netherlands"
+ },
+ "CZ": {
+ "name": "Cek labo"
+ },
+ "CF": {
+ "name": "Centraafriki koyra"
+ },
+ "EA": {
+ "name": "Ceuta & Melilla"
+ },
+ "CX": {
+ "name": "Christmas Island"
+ },
+ "CC": {
+ "name": "Cocos (Keeling) Islands"
+ },
+ "CW": {
+ "name": "Curaçao"
+ },
+ "DK": {
+ "name": "Danemark"
+ },
+ "DG": {
+ "name": "Diego Garcia"
+ },
+ "DM": {
+ "name": "Dominica"
+ },
+ "DO": {
+ "name": "Doominiki laboo"
+ },
+ "ET": {
+ "name": "Ecioopi"
+ },
+ "EC": {
+ "name": "Ekwateer"
+ },
+ "ER": {
+ "name": "Eritree"
+ },
+ "ES": {
+ "name": "Espaaɲe"
+ },
+ "EE": {
+ "name": "Estooni"
+ },
+ "FR": {
+ "name": "Faransi"
+ },
+ "GF": {
+ "name": "Faransi Guyaan"
+ },
+ "PF": {
+ "name": "Faransi Polineezi"
+ },
+ "FO": {
+ "name": "Faroe Islands"
+ },
+ "FJ": {
+ "name": "Fiji"
+ },
+ "PH": {
+ "name": "Filipine"
+ },
+ "FI": {
+ "name": "Finlandu"
+ },
+ "TF": {
+ "name": "French Southern Territories"
+ },
+ "GA": {
+ "name": "Gaabon"
+ },
+ "GH": {
+ "name": "Gaana"
+ },
+ "GM": {
+ "name": "Gambi"
+ },
+ "GI": {
+ "name": "Gibraltar"
+ },
+ "GN": {
+ "name": "Gine"
+ },
+ "GW": {
+ "name": "Gine-Bisso"
+ },
+ "GQ": {
+ "name": "Ginee Ekwatorial"
+ },
+ "GE": {
+ "name": "Gorgi"
+ },
+ "GR": {
+ "name": "Greece"
+ },
+ "GD": {
+ "name": "Grenaada"
+ },
+ "GL": {
+ "name": "Grinland"
+ },
+ "GU": {
+ "name": "Guam"
+ },
+ "GG": {
+ "name": "Guernsey"
+ },
+ "KP": {
+ "name": "Gurma Kooree"
+ },
+ "GY": {
+ "name": "Guyaane"
+ },
+ "GP": {
+ "name": "Gwadeluup"
+ },
+ "GT": {
+ "name": "Gwatemaala"
+ },
+ "HT": {
+ "name": "Haiti"
+ },
+ "ZA": {
+ "name": "Hawsa Afriki Laboo"
+ },
+ "KR": {
+ "name": "Hawsa Kooree"
+ },
+ "NL": {
+ "name": "Hollandu"
+ },
+ "HN": {
+ "name": "Honduras"
+ },
+ "HK": {
+ "name": "Hong Kong SAR China"
+ },
+ "HU": {
+ "name": "Hungaari"
+ },
+ "ID": {
+ "name": "Indoneezi"
+ },
+ "IN": {
+ "name": "Indu laboo"
+ },
+ "IQ": {
+ "name": "Iraak"
+ },
+ "IR": {
+ "name": "Iraan"
+ },
+ "RU": {
+ "name": "Iriši laboo"
+ },
+ "IE": {
+ "name": "Irlandu"
+ },
+ "IM": {
+ "name": "Isle of Man"
+ },
+ "IL": {
+ "name": "Israyel"
+ },
+ "IT": {
+ "name": "Itaali"
+ },
+ "JP": {
+ "name": "Jaapoŋ"
+ },
+ "JM": {
+ "name": "Jamaayik"
+ },
+ "JE": {
+ "name": "Jersey"
+ },
+ "DJ": {
+ "name": "Jibuuti"
+ },
+ "NC": {
+ "name": "Kaaledooni Taagaa"
+ },
+ "KZ": {
+ "name": "Kaazakstan"
+ },
+ "FK": {
+ "name": "Kalkan gungey"
+ },
+ "KH": {
+ "name": "kamboogi"
+ },
+ "CM": {
+ "name": "Kameruun"
+ },
+ "CA": {
+ "name": "Kanaada"
+ },
+ "CV": {
+ "name": "Kapuver gungey"
+ },
+ "QA": {
+ "name": "Kataar"
+ },
+ "KY": {
+ "name": "Kayman gungey"
+ },
+ "KE": {
+ "name": "Keeniya"
+ },
+ "KI": {
+ "name": "Kiribaati"
+ },
+ "CO": {
+ "name": "Kolombi"
+ },
+ "KM": {
+ "name": "Komoor"
+ },
+ "CG": {
+ "name": "Kongoo"
+ },
+ "CD": {
+ "name": "Kongoo demookaratiki laboo"
+ },
+ "XK": {
+ "name": "Kosovo"
+ },
+ "CR": {
+ "name": "Kosta rika"
+ },
+ "HR": {
+ "name": "Krwaasi"
+ },
+ "CI": {
+ "name": "Kudwar"
+ },
+ "CU": {
+ "name": "Kuuba"
+ },
+ "CK": {
+ "name": "Kuuk gungey"
+ },
+ "KW": {
+ "name": "Kuweet"
+ },
+ "KG": {
+ "name": "Kyrgyzstan"
+ },
+ "AE": {
+ "name": "Laaraw Imaarawey Margantey"
+ },
+ "LA": {
+ "name": "Laawos"
+ },
+ "LS": {
+ "name": "Leesoto"
+ },
+ "LV": {
+ "name": "Letooni"
+ },
+ "LR": {
+ "name": "Liberia"
+ },
+ "LI": {
+ "name": "Liechtenstein"
+ },
+ "LY": {
+ "name": "Liibi"
+ },
+ "LT": {
+ "name": "Lituaani"
+ },
+ "LB": {
+ "name": "Lubnaan"
+ },
+ "LU": {
+ "name": "Luxembourg"
+ },
+ "MK": {
+ "name": "Maacedooni"
+ },
+ "ML": {
+ "name": "Maali"
+ },
+ "MA": {
+ "name": "Maarok"
+ },
+ "MO": {
+ "name": "Macau SAR China"
+ },
+ "MG": {
+ "name": "Madagascar"
+ },
+ "MW": {
+ "name": "Malaawi"
+ },
+ "MV": {
+ "name": "Maldiivu"
+ },
+ "MY": {
+ "name": "Maleezi"
+ },
+ "MT": {
+ "name": "Malta"
+ },
+ "MP": {
+ "name": "Mariana Gurma Gungey"
+ },
+ "MH": {
+ "name": "Maršal gungey"
+ },
+ "MQ": {
+ "name": "Martiniiki"
+ },
+ "MM": {
+ "name": "Maynamar"
+ },
+ "YT": {
+ "name": "Mayooti"
+ },
+ "MX": {
+ "name": "Mexiki"
+ },
+ "FM": {
+ "name": "Mikronezi"
+ },
+ "EG": {
+ "name": "Misra"
+ },
+ "MD": {
+ "name": "Moldovi"
+ },
+ "MC": {
+ "name": "Monako"
+ },
+ "MN": {
+ "name": "Mongooli"
+ },
+ "ME": {
+ "name": "Montenegro"
+ },
+ "MS": {
+ "name": "Montserrat"
+ },
+ "MU": {
+ "name": "Mooris gungey"
+ },
+ "MR": {
+ "name": "Mooritaani"
+ },
+ "MZ": {
+ "name": "Mozambik"
+ },
+ "NG": {
+ "name": "Naajiriia"
+ },
+ "NA": {
+ "name": "Naamibi"
+ },
+ "NR": {
+ "name": "Nauru"
+ },
+ "NP": {
+ "name": "Neepal"
+ },
+ "NI": {
+ "name": "Nikaragwa"
+ },
+ "NU": {
+ "name": "Niue"
+ },
+ "NE": {
+ "name": "Nižer"
+ },
+ "NF": {
+ "name": "Norfolk Gungoo"
+ },
+ "NO": {
+ "name": "Norveej"
+ },
+ "OM": {
+ "name": "Omaan"
+ },
+ "AU": {
+ "name": "Ostraali"
+ },
+ "AT": {
+ "name": "Otriši"
+ },
+ "PK": {
+ "name": "Paakistan"
+ },
+ "PS": {
+ "name": "Palestine Dangay nda Gaaza"
+ },
+ "PW": {
+ "name": "Palu"
+ },
+ "PA": {
+ "name": "Panama"
+ },
+ "PG": {
+ "name": "Papua Ginee Taaga"
+ },
+ "PY": {
+ "name": "Paraguwey"
+ },
+ "PE": {
+ "name": "Peeru"
+ },
+ "PN": {
+ "name": "Pitikarin"
+ },
+ "PL": {
+ "name": "Poloɲe"
+ },
+ "PR": {
+ "name": "Porto Riko"
+ },
+ "PT": {
+ "name": "Portugaal"
+ },
+ "RE": {
+ "name": "Reenioŋ"
+ },
+ "RO": {
+ "name": "Rumaani"
+ },
+ "RW": {
+ "name": "Rwanda"
+ },
+ "SV": {
+ "name": "Salvador laboo"
+ },
+ "WS": {
+ "name": "Samoa"
+ },
+ "SM": {
+ "name": "San Marino"
+ },
+ "ST": {
+ "name": "Sao Tome nda Prinsipe"
+ },
+ "SA": {
+ "name": "Saudiya"
+ },
+ "SL": {
+ "name": "Seera Leon"
+ },
+ "SC": {
+ "name": "Seešel"
+ },
+ "SN": {
+ "name": "Senegal"
+ },
+ "SH": {
+ "name": "Seŋ Helena"
+ },
+ "KN": {
+ "name": "Seŋ Kitts nda Nevis"
+ },
+ "LC": {
+ "name": "Seŋ Lussia"
+ },
+ "PM": {
+ "name": "Seŋ Piyer nda Mikelon"
+ },
+ "VC": {
+ "name": "Seŋvinsaŋ nda Grenadine"
+ },
+ "RS": {
+ "name": "Serbia"
+ },
+ "CL": {
+ "name": "Å iili"
+ },
+ "CN": {
+ "name": "Å iin"
+ },
+ "CY": {
+ "name": "Å iipur"
+ },
+ "SG": {
+ "name": "Singapur"
+ },
+ "SX": {
+ "name": "Sint Maarten"
+ },
+ "SK": {
+ "name": "Slovaaki"
+ },
+ "SI": {
+ "name": "Sloveeni"
+ },
+ "SB": {
+ "name": "Solomon Gungey"
+ },
+ "SO": {
+ "name": "Somaali"
+ },
+ "GS": {
+ "name": "South Georgia & South Sandwich Islands"
+ },
+ "SS": {
+ "name": "South Sudan"
+ },
+ "LK": {
+ "name": "Srilanka"
+ },
+ "BL": {
+ "name": "St. Barthélemy"
+ },
+ "MF": {
+ "name": "St. Martin"
+ },
+ "SR": {
+ "name": "Surinaam"
+ },
+ "SD": {
+ "name": "Suudaŋ"
+ },
+ "SY": {
+ "name": "Suuria"
+ },
+ "SJ": {
+ "name": "Svalbard & Jan Mayen"
+ },
+ "SZ": {
+ "name": "Swaziland"
+ },
+ "SE": {
+ "name": "Sweede"
+ },
+ "CH": {
+ "name": "Swisu"
+ },
+ "TH": {
+ "name": "Taayiland"
+ },
+ "TW": {
+ "name": "Taayiwan"
+ },
+ "TJ": {
+ "name": "Taažikistan"
+ },
+ "TZ": {
+ "name": "Tanzaani"
+ },
+ "TL": {
+ "name": "Timoor hawsa"
+ },
+ "TG": {
+ "name": "Togo"
+ },
+ "TK": {
+ "name": "Tokelau"
+ },
+ "TO": {
+ "name": "Tonga"
+ },
+ "TT": {
+ "name": "Trinidad nda Tobaago"
+ },
+ "TA": {
+ "name": "Tristan da Cunha"
+ },
+ "TN": {
+ "name": "Tunizi"
+ },
+ "TC": {
+ "name": "Turk nda Kayikos Gungey"
+ },
+ "TR": {
+ "name": "Turki"
+ },
+ "TM": {
+ "name": "Turkmenistaŋ"
+ },
+ "TV": {
+ "name": "Tuvalu"
+ },
+ "UM": {
+ "name": "U.S. Outlying Islands"
+ },
+ "UG": {
+ "name": "Uganda"
+ },
+ "UA": {
+ "name": "Ukreen"
+ },
+ "JO": {
+ "name": "Urdun"
+ },
+ "UY": {
+ "name": "Uruguwey"
+ },
+ "UZ": {
+ "name": "Uzbeekistan"
+ },
+ "VA": {
+ "name": "Vaatikan Laama"
+ },
+ "VU": {
+ "name": "Vanautu"
+ },
+ "VE": {
+ "name": "Veneezuyeela"
+ },
+ "VN": {
+ "name": "Vietnaam"
+ },
+ "WF": {
+ "name": "Wallis nda Futuna"
+ },
+ "EH": {
+ "name": "Western Sahara"
+ },
+ "YE": {
+ "name": "Yaman"
+ },
+ "ZM": {
+ "name": "Zambi"
+ },
+ "NZ": {
+ "name": "Zeelandu Taaga"
+ },
+ "ZW": {
+ "name": "Zimbabwe"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/country/dsb.json b/library/intl/resources/country/dsb.json
new file mode 100644
index 000000000..fadf1e4c7
--- /dev/null
+++ b/library/intl/resources/country/dsb.json
@@ -0,0 +1,761 @@
+{
+ "AF": {
+ "name": "Afghanistan"
+ },
+ "AX": {
+ "name": "Ã…land"
+ },
+ "AL": {
+ "name": "Albańska"
+ },
+ "DZ": {
+ "name": "Algeriska"
+ },
+ "UM": {
+ "name": "Ameriska Oceaniska"
+ },
+ "AS": {
+ "name": "Ameriska Samoa"
+ },
+ "VI": {
+ "name": "Ameriske kněžniske kupy"
+ },
+ "AD": {
+ "name": "Andorra"
+ },
+ "AO": {
+ "name": "Angola"
+ },
+ "AI": {
+ "name": "Anguilla"
+ },
+ "AQ": {
+ "name": "Antarktis"
+ },
+ "AG": {
+ "name": "Antigua a Barbuda"
+ },
+ "AR": {
+ "name": "Argentinska"
+ },
+ "AM": {
+ "name": "Armeńska"
+ },
+ "AW": {
+ "name": "Aruba"
+ },
+ "AC": {
+ "name": "Ascension"
+ },
+ "AU": {
+ "name": "Awstralska"
+ },
+ "AT": {
+ "name": "Awstriska"
+ },
+ "AZ": {
+ "name": "Azerbajdžan"
+ },
+ "BS": {
+ "name": "Bahamy"
+ },
+ "BH": {
+ "name": "Bahrain"
+ },
+ "BD": {
+ "name": "Bangladeš"
+ },
+ "BB": {
+ "name": "Barbados"
+ },
+ "BE": {
+ "name": "Belgiska"
+ },
+ "BZ": {
+ "name": "Belize"
+ },
+ "BY": {
+ "name": "Běłoruska"
+ },
+ "BJ": {
+ "name": "Benin"
+ },
+ "BM": {
+ "name": "Bermudy"
+ },
+ "BT": {
+ "name": "Bhutan"
+ },
+ "BO": {
+ "name": "Boliwiska"
+ },
+ "BA": {
+ "name": "Bosniska a Hercegowina"
+ },
+ "BW": {
+ "name": "Botswana"
+ },
+ "BR": {
+ "name": "Brazilska"
+ },
+ "VG": {
+ "name": "Britiske kněžniske kupy"
+ },
+ "IO": {
+ "name": "Britiski indiskooceaniski teritorium"
+ },
+ "BN": {
+ "name": "Brunei"
+ },
+ "BG": {
+ "name": "Bulgarska"
+ },
+ "BF": {
+ "name": "Burkina Faso"
+ },
+ "BI": {
+ "name": "Burundi"
+ },
+ "TD": {
+ "name": "ÄŒad"
+ },
+ "ME": {
+ "name": "Carna Góra"
+ },
+ "CF": {
+ "name": "Centralnoafriska republika"
+ },
+ "CZ": {
+ "name": "ÄŒeska republika"
+ },
+ "EA": {
+ "name": "Ceuta a Melilla"
+ },
+ "CL": {
+ "name": "Chilska"
+ },
+ "CN": {
+ "name": "China"
+ },
+ "HR": {
+ "name": "Chorwatska"
+ },
+ "CK": {
+ "name": "Cookowe kupy"
+ },
+ "CI": {
+ "name": "Côte d’Ivoire"
+ },
+ "CW": {
+ "name": "Curaçao"
+ },
+ "CY": {
+ "name": "Cypriska"
+ },
+ "DK": {
+ "name": "Dańska"
+ },
+ "DG": {
+ "name": "Diego Garcia"
+ },
+ "DM": {
+ "name": "Dominika"
+ },
+ "DO": {
+ "name": "Dominikańska republika"
+ },
+ "DJ": {
+ "name": "Džibuti"
+ },
+ "EG": {
+ "name": "Egyptojska"
+ },
+ "EC": {
+ "name": "Ekwador"
+ },
+ "GQ": {
+ "name": "Ekwatorialna Gineja"
+ },
+ "SV": {
+ "name": "El Salvador"
+ },
+ "ER": {
+ "name": "Eritreja"
+ },
+ "EE": {
+ "name": "Estniska"
+ },
+ "ET": {
+ "name": "Etiopiska"
+ },
+ "FK": {
+ "name": "Falklandske kupy"
+ },
+ "FO": {
+ "name": "Färöje"
+ },
+ "FJ": {
+ "name": "Fidži"
+ },
+ "PH": {
+ "name": "Filipiny"
+ },
+ "FI": {
+ "name": "Finska"
+ },
+ "FR": {
+ "name": "Francojska"
+ },
+ "GF": {
+ "name": "Francojska Guyana"
+ },
+ "PF": {
+ "name": "Francojska Polyneziska"
+ },
+ "TF": {
+ "name": "Francojski pódpołdnjowy a antarktiski teritorium"
+ },
+ "GA": {
+ "name": "Gabun"
+ },
+ "GM": {
+ "name": "Gambija"
+ },
+ "GE": {
+ "name": "Georgiska"
+ },
+ "GH": {
+ "name": "Ghana"
+ },
+ "GI": {
+ "name": "Gibraltar"
+ },
+ "GN": {
+ "name": "Gineja"
+ },
+ "GW": {
+ "name": "Gineja-Bissau"
+ },
+ "CX": {
+ "name": "Gódowne kupy"
+ },
+ "GD": {
+ "name": "Grenada"
+ },
+ "GR": {
+ "name": "Grichiska"
+ },
+ "GL": {
+ "name": "Grönlandska"
+ },
+ "GP": {
+ "name": "Guadeloupe"
+ },
+ "GU": {
+ "name": "Guam"
+ },
+ "GT": {
+ "name": "Guatemala"
+ },
+ "GG": {
+ "name": "Guernsey"
+ },
+ "GY": {
+ "name": "Guyana"
+ },
+ "HT": {
+ "name": "Haiti"
+ },
+ "HN": {
+ "name": "Honduras"
+ },
+ "HU": {
+ "name": "Hungorska"
+ },
+ "IN": {
+ "name": "Indiska"
+ },
+ "ID": {
+ "name": "Indoneziska"
+ },
+ "IQ": {
+ "name": "Irak"
+ },
+ "IR": {
+ "name": "Iran"
+ },
+ "IE": {
+ "name": "Irska"
+ },
+ "IS": {
+ "name": "Islandska"
+ },
+ "IL": {
+ "name": "Israel"
+ },
+ "IT": {
+ "name": "Italska"
+ },
+ "JM": {
+ "name": "Jamaika"
+ },
+ "JP": {
+ "name": "Japańska"
+ },
+ "YE": {
+ "name": "Jemen"
+ },
+ "JE": {
+ "name": "Jersey"
+ },
+ "JO": {
+ "name": "Jordaniska"
+ },
+ "KY": {
+ "name": "Kajmaniske kupy"
+ },
+ "KH": {
+ "name": "Kambodža"
+ },
+ "CM": {
+ "name": "Kamerun"
+ },
+ "CA": {
+ "name": "Kanada"
+ },
+ "IC": {
+ "name": "Kanariske kupy"
+ },
+ "CV": {
+ "name": "Kap Verde"
+ },
+ "BQ": {
+ "name": "Karibiska Nižozemska"
+ },
+ "QA": {
+ "name": "Katar"
+ },
+ "KZ": {
+ "name": "Kazachstan"
+ },
+ "KE": {
+ "name": "Kenia"
+ },
+ "KG": {
+ "name": "Kirgizistan"
+ },
+ "KI": {
+ "name": "Kiribati"
+ },
+ "CC": {
+ "name": "Kokosowe kupy"
+ },
+ "CO": {
+ "name": "Kolumbiska"
+ },
+ "KM": {
+ "name": "Komory"
+ },
+ "CG": {
+ "name": "Kongo-Brazzaville"
+ },
+ "CD": {
+ "name": "Kongo-Kinshasa"
+ },
+ "XK": {
+ "name": "Kosowo"
+ },
+ "CR": {
+ "name": "Kosta Rika"
+ },
+ "CU": {
+ "name": "Kuba"
+ },
+ "KW": {
+ "name": "Kuwait"
+ },
+ "LA": {
+ "name": "Laos"
+ },
+ "LS": {
+ "name": "Lesotho"
+ },
+ "LV": {
+ "name": "Letiska"
+ },
+ "LB": {
+ "name": "Libanon"
+ },
+ "LR": {
+ "name": "Liberija"
+ },
+ "LY": {
+ "name": "Libyska"
+ },
+ "LI": {
+ "name": "Liechtenstein"
+ },
+ "LT": {
+ "name": "Litawska"
+ },
+ "LU": {
+ "name": "Luxemburgska"
+ },
+ "MG": {
+ "name": "Madagaskar"
+ },
+ "MK": {
+ "name": "Makedońska"
+ },
+ "MY": {
+ "name": "Malajzija"
+ },
+ "MW": {
+ "name": "Malawi"
+ },
+ "MV": {
+ "name": "Malediwy"
+ },
+ "ML": {
+ "name": "Mali"
+ },
+ "MT": {
+ "name": "Malta"
+ },
+ "IM": {
+ "name": "Man"
+ },
+ "MA": {
+ "name": "Marokko"
+ },
+ "MH": {
+ "name": "Marshallowe kupy"
+ },
+ "MQ": {
+ "name": "Martinique"
+ },
+ "MU": {
+ "name": "Mauritius"
+ },
+ "MR": {
+ "name": "Mawretańska"
+ },
+ "YT": {
+ "name": "Mayotte"
+ },
+ "MX": {
+ "name": "Mexiko"
+ },
+ "FM": {
+ "name": "Mikroneziska"
+ },
+ "MD": {
+ "name": "Moldawska"
+ },
+ "MC": {
+ "name": "Monaco"
+ },
+ "MN": {
+ "name": "Mongolska"
+ },
+ "MS": {
+ "name": "Montserrat"
+ },
+ "MZ": {
+ "name": "Mosambik"
+ },
+ "MM": {
+ "name": "Myanmar"
+ },
+ "NA": {
+ "name": "Namibija"
+ },
+ "NR": {
+ "name": "Nauru"
+ },
+ "NP": {
+ "name": "Nepal"
+ },
+ "NE": {
+ "name": "Niger"
+ },
+ "NG": {
+ "name": "Nigerija"
+ },
+ "NI": {
+ "name": "Nikaragua"
+ },
+ "DE": {
+ "name": "Nimska"
+ },
+ "NU": {
+ "name": "Niue"
+ },
+ "NL": {
+ "name": "Nižozemska"
+ },
+ "NF": {
+ "name": "Norfolkowa kupa"
+ },
+ "NO": {
+ "name": "Norwegska"
+ },
+ "NC": {
+ "name": "Nowa Kaledoniska"
+ },
+ "NZ": {
+ "name": "Nowoseelandska"
+ },
+ "OM": {
+ "name": "Oman"
+ },
+ "PK": {
+ "name": "Pakistan"
+ },
+ "PW": {
+ "name": "Palau"
+ },
+ "PS": {
+ "name": "Palestinski awtonomny teritorium"
+ },
+ "PA": {
+ "name": "Panama"
+ },
+ "PG": {
+ "name": "Papua-Neuguinea"
+ },
+ "PY": {
+ "name": "Paraguay"
+ },
+ "PE": {
+ "name": "Peru"
+ },
+ "PN": {
+ "name": "Pitcairnowe kupy"
+ },
+ "ZA": {
+ "name": "Pódpołdnjowa Afrika (Republika)"
+ },
+ "GS": {
+ "name": "Pódpołdnjowa Georgiska a Pódpołdnjowe Sandwichowe kupy"
+ },
+ "KR": {
+ "name": "Pódpołdnjowa Koreja"
+ },
+ "SS": {
+ "name": "Pódpołdnjowy Sudan"
+ },
+ "KP": {
+ "name": "Pódpołnocna Koreja"
+ },
+ "MP": {
+ "name": "Pódpołnocne Mariany"
+ },
+ "EH": {
+ "name": "Pódwjacorna Sahara"
+ },
+ "PL": {
+ "name": "Pólska"
+ },
+ "PT": {
+ "name": "Portugalska"
+ },
+ "PR": {
+ "name": "Puerto Rico"
+ },
+ "RE": {
+ "name": "Réunion"
+ },
+ "RW": {
+ "name": "Ruanda"
+ },
+ "RO": {
+ "name": "Rumuńska"
+ },
+ "RU": {
+ "name": "Ruska"
+ },
+ "SB": {
+ "name": "Salomony"
+ },
+ "ZM": {
+ "name": "Sambija"
+ },
+ "WS": {
+ "name": "Samoa"
+ },
+ "SM": {
+ "name": "San Marino"
+ },
+ "ST": {
+ "name": "São Tomé a Príncipe"
+ },
+ "SA": {
+ "name": "Saudi-Arabiska"
+ },
+ "SN": {
+ "name": "Senegal"
+ },
+ "RS": {
+ "name": "Serbiska"
+ },
+ "SC": {
+ "name": "Seychelle"
+ },
+ "SL": {
+ "name": "Sierra Leone"
+ },
+ "ZW": {
+ "name": "Simbabwe"
+ },
+ "SG": {
+ "name": "Singapur"
+ },
+ "SX": {
+ "name": "Sint Maarten"
+ },
+ "SK": {
+ "name": "SÅ‚owakska"
+ },
+ "SI": {
+ "name": "Słowjeńska"
+ },
+ "SO": {
+ "name": "Somalija"
+ },
+ "ES": {
+ "name": "Špańska"
+ },
+ "LK": {
+ "name": "Sri Lanka"
+ },
+ "BL": {
+ "name": "St. Barthélemy"
+ },
+ "SH": {
+ "name": "St. Helena"
+ },
+ "KN": {
+ "name": "St. Kitts a Nevis"
+ },
+ "LC": {
+ "name": "St. Lucia"
+ },
+ "MF": {
+ "name": "St. Martin"
+ },
+ "PM": {
+ "name": "St. Pierre a Miquelon"
+ },
+ "VC": {
+ "name": "St. Vincent a Grenadiny"
+ },
+ "SD": {
+ "name": "Sudan"
+ },
+ "SR": {
+ "name": "Surinamska"
+ },
+ "SJ": {
+ "name": "Svalbard a Jan Mayen"
+ },
+ "SZ": {
+ "name": "Swasiska"
+ },
+ "SE": {
+ "name": "Å wedska"
+ },
+ "CH": {
+ "name": "Å wicarska"
+ },
+ "SY": {
+ "name": "Syriska"
+ },
+ "TJ": {
+ "name": "Tadźikistan"
+ },
+ "TW": {
+ "name": "Taiwan"
+ },
+ "TZ": {
+ "name": "Tansanija"
+ },
+ "TH": {
+ "name": "Thailandska"
+ },
+ "TL": {
+ "name": "Timor-Leste"
+ },
+ "TG": {
+ "name": "Togo"
+ },
+ "TK": {
+ "name": "Tokelau"
+ },
+ "TO": {
+ "name": "Tonga"
+ },
+ "TT": {
+ "name": "Trinidad a Tobago"
+ },
+ "TA": {
+ "name": "Tristan da Cunha"
+ },
+ "TN": {
+ "name": "Tuneziska"
+ },
+ "TM": {
+ "name": "Turkmeniska"
+ },
+ "TR": {
+ "name": "Turkojska"
+ },
+ "TC": {
+ "name": "Turks a Caicos kupy"
+ },
+ "TV": {
+ "name": "Tuvalu"
+ },
+ "UG": {
+ "name": "Uganda"
+ },
+ "UA": {
+ "name": "Ukraina"
+ },
+ "UY": {
+ "name": "Uruguay"
+ },
+ "UZ": {
+ "name": "Uzbekistan"
+ },
+ "VU": {
+ "name": "Vanuatu"
+ },
+ "VA": {
+ "name": "Vatikańske město"
+ },
+ "VE": {
+ "name": "Venezuela"
+ },
+ "VN": {
+ "name": "Vietnam"
+ },
+ "WF": {
+ "name": "Wallis a Futuna"
+ },
+ "HK": {
+ "name": "Wósebna zastojnstwowa cona Hongkong"
+ },
+ "MO": {
+ "name": "Wósebna zastojnstwowa cona Macao"
+ },
+ "AE": {
+ "name": "Zjadnośone arabiske emiraty"
+ },
+ "GB": {
+ "name": "Zjadnośone kralejstwo"
+ },
+ "US": {
+ "name": "Zjadnośone staty Ameriki"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/country/dyo.json b/library/intl/resources/country/dyo.json
new file mode 100644
index 000000000..f4352b339
--- /dev/null
+++ b/library/intl/resources/country/dyo.json
@@ -0,0 +1,761 @@
+{
+ "SA": {
+ "name": "Abari Saudi"
+ },
+ "AF": {
+ "name": "Afganistan"
+ },
+ "AX": {
+ "name": "Ã…land Islands"
+ },
+ "AL": {
+ "name": "Albani"
+ },
+ "DE": {
+ "name": "Almaañ"
+ },
+ "DZ": {
+ "name": "Alseri"
+ },
+ "AD": {
+ "name": "Andorra"
+ },
+ "AI": {
+ "name": "Angiiya"
+ },
+ "AO": {
+ "name": "Angola"
+ },
+ "AQ": {
+ "name": "Antarctica"
+ },
+ "AG": {
+ "name": "Antigua di Barbuda"
+ },
+ "AM": {
+ "name": "Armeni"
+ },
+ "AR": {
+ "name": "Arsantin"
+ },
+ "AW": {
+ "name": "Aruba"
+ },
+ "AC": {
+ "name": "Ascension Island"
+ },
+ "AZ": {
+ "name": "Aserbaysan"
+ },
+ "HT": {
+ "name": "Ayti"
+ },
+ "BS": {
+ "name": "Bahama"
+ },
+ "BH": {
+ "name": "Bahrayn"
+ },
+ "BD": {
+ "name": "Banglades"
+ },
+ "BB": {
+ "name": "Barbad"
+ },
+ "BY": {
+ "name": "Belarus"
+ },
+ "BZ": {
+ "name": "Beliis"
+ },
+ "BE": {
+ "name": "Belsik"
+ },
+ "BJ": {
+ "name": "Bene"
+ },
+ "BM": {
+ "name": "Bermud"
+ },
+ "BO": {
+ "name": "Boliivi"
+ },
+ "BA": {
+ "name": "Bosni di Hersegovin"
+ },
+ "BW": {
+ "name": "Boswana"
+ },
+ "BR": {
+ "name": "Bresil"
+ },
+ "IO": {
+ "name": "British Indian Ocean Territory"
+ },
+ "VG": {
+ "name": "British Virgin Islands"
+ },
+ "BG": {
+ "name": "Bulgari"
+ },
+ "BF": {
+ "name": "Burukiina Faso"
+ },
+ "BI": {
+ "name": "Burundi"
+ },
+ "BN": {
+ "name": "Buruney"
+ },
+ "BT": {
+ "name": "Butan"
+ },
+ "TD": {
+ "name": "Cad"
+ },
+ "IC": {
+ "name": "Canary Islands"
+ },
+ "BQ": {
+ "name": "Caribbean Netherlands"
+ },
+ "KY": {
+ "name": "Cayman Islands"
+ },
+ "CF": {
+ "name": "Central African Republic"
+ },
+ "EA": {
+ "name": "Ceuta & Melilla"
+ },
+ "CX": {
+ "name": "Christmas Island"
+ },
+ "CL": {
+ "name": "Cili"
+ },
+ "CC": {
+ "name": "Cocos (Keeling) Islands"
+ },
+ "CK": {
+ "name": "Cook Islands"
+ },
+ "CW": {
+ "name": "Curaçao"
+ },
+ "DK": {
+ "name": "Danmark"
+ },
+ "DG": {
+ "name": "Diego Garcia"
+ },
+ "DM": {
+ "name": "Dominika"
+ },
+ "NF": {
+ "name": "Ecinkey yati Noorfok"
+ },
+ "ET": {
+ "name": "Ecoopi"
+ },
+ "EC": {
+ "name": "Ekuador"
+ },
+ "IN": {
+ "name": "End"
+ },
+ "ID": {
+ "name": "Endonesi"
+ },
+ "GQ": {
+ "name": "Equatorial Guinea"
+ },
+ "ER": {
+ "name": "Eritree"
+ },
+ "EG": {
+ "name": "Esípt"
+ },
+ "ES": {
+ "name": "Espaañ"
+ },
+ "EE": {
+ "name": "Estoni"
+ },
+ "FK": {
+ "name": "Falkland Islands"
+ },
+ "FO": {
+ "name": "Faroe Islands"
+ },
+ "FJ": {
+ "name": "Fiji"
+ },
+ "FI": {
+ "name": "Finland"
+ },
+ "FR": {
+ "name": "Frans"
+ },
+ "GF": {
+ "name": "French Guiana"
+ },
+ "PF": {
+ "name": "French Polynesia"
+ },
+ "TF": {
+ "name": "French Southern Territories"
+ },
+ "GH": {
+ "name": "Gaana"
+ },
+ "GA": {
+ "name": "Gabon"
+ },
+ "GM": {
+ "name": "Gambi"
+ },
+ "GN": {
+ "name": "Giné"
+ },
+ "GW": {
+ "name": "Giné Bisaau"
+ },
+ "GY": {
+ "name": "Giyan"
+ },
+ "GL": {
+ "name": "Greenland"
+ },
+ "GD": {
+ "name": "Grenada"
+ },
+ "GR": {
+ "name": "Gres"
+ },
+ "GU": {
+ "name": "Guam"
+ },
+ "GT": {
+ "name": "Guatemala"
+ },
+ "GG": {
+ "name": "Guernsey"
+ },
+ "GP": {
+ "name": "Guwadalup"
+ },
+ "HK": {
+ "name": "Hong Kong SAR China"
+ },
+ "IS": {
+ "name": "Iisland"
+ },
+ "IQ": {
+ "name": "Irak"
+ },
+ "IR": {
+ "name": "Iran"
+ },
+ "IE": {
+ "name": "Irland"
+ },
+ "IM": {
+ "name": "Isle of Man"
+ },
+ "IL": {
+ "name": "Israel"
+ },
+ "IT": {
+ "name": "Itali"
+ },
+ "JE": {
+ "name": "Jersey"
+ },
+ "DJ": {
+ "name": "Jibuti"
+ },
+ "JO": {
+ "name": "Jordan"
+ },
+ "KH": {
+ "name": "Kamboj"
+ },
+ "CM": {
+ "name": "Kamerun"
+ },
+ "CA": {
+ "name": "Kanada"
+ },
+ "CV": {
+ "name": "Kap Ver"
+ },
+ "KZ": {
+ "name": "Kazakhstan"
+ },
+ "KE": {
+ "name": "Keniya"
+ },
+ "KI": {
+ "name": "Kiribati"
+ },
+ "CI": {
+ "name": "Koddiwar"
+ },
+ "CO": {
+ "name": "Kolombi"
+ },
+ "KM": {
+ "name": "Komor"
+ },
+ "CG": {
+ "name": "Kongo"
+ },
+ "XK": {
+ "name": "Kosovo"
+ },
+ "CR": {
+ "name": "Kosta Rika"
+ },
+ "HR": {
+ "name": "Kroasi"
+ },
+ "CU": {
+ "name": "Kuba"
+ },
+ "KW": {
+ "name": "Kuwait"
+ },
+ "KG": {
+ "name": "Kyrgyzstan"
+ },
+ "LA": {
+ "name": "Laos"
+ },
+ "LV": {
+ "name": "Latvia"
+ },
+ "LB": {
+ "name": "Lebanon"
+ },
+ "LS": {
+ "name": "Lesotho"
+ },
+ "LR": {
+ "name": "Liberia"
+ },
+ "LY": {
+ "name": "Libya"
+ },
+ "LI": {
+ "name": "Liechtenstein"
+ },
+ "LT": {
+ "name": "Lithuania"
+ },
+ "LU": {
+ "name": "Luxembourg"
+ },
+ "MO": {
+ "name": "Macau SAR China"
+ },
+ "MK": {
+ "name": "Macedonia"
+ },
+ "MG": {
+ "name": "Madagaskaar"
+ },
+ "MW": {
+ "name": "Malawi"
+ },
+ "MY": {
+ "name": "Malaysia"
+ },
+ "MV": {
+ "name": "Maldives"
+ },
+ "ML": {
+ "name": "Mali"
+ },
+ "MT": {
+ "name": "Malta"
+ },
+ "MH": {
+ "name": "Marshall Islands"
+ },
+ "MQ": {
+ "name": "Martinique"
+ },
+ "MR": {
+ "name": "Mauritania"
+ },
+ "MU": {
+ "name": "Mauritius"
+ },
+ "YT": {
+ "name": "Mayotte"
+ },
+ "MX": {
+ "name": "Mexico"
+ },
+ "FM": {
+ "name": "Micronesia"
+ },
+ "CD": {
+ "name": "Mofam demokratik mati Kongo"
+ },
+ "CZ": {
+ "name": "Mofam mati Cek"
+ },
+ "DO": {
+ "name": "Mofam mati Dominik"
+ },
+ "MD": {
+ "name": "Moldova"
+ },
+ "MC": {
+ "name": "Monaco"
+ },
+ "MN": {
+ "name": "Mongolia"
+ },
+ "ME": {
+ "name": "Montenegro"
+ },
+ "MS": {
+ "name": "Montserrat"
+ },
+ "MA": {
+ "name": "Morocco"
+ },
+ "MZ": {
+ "name": "Mozambique"
+ },
+ "MM": {
+ "name": "Myanmar (Burma)"
+ },
+ "NA": {
+ "name": "Namibia"
+ },
+ "NR": {
+ "name": "Nauru"
+ },
+ "NP": {
+ "name": "Nepal"
+ },
+ "NL": {
+ "name": "Netherlands"
+ },
+ "NC": {
+ "name": "New Caledonia"
+ },
+ "NZ": {
+ "name": "New Zealand"
+ },
+ "NI": {
+ "name": "Nicaragua"
+ },
+ "NE": {
+ "name": "Niger"
+ },
+ "NG": {
+ "name": "Nigeria"
+ },
+ "NU": {
+ "name": "Niue"
+ },
+ "KP": {
+ "name": "North Korea"
+ },
+ "MP": {
+ "name": "Northern Mariana Islands"
+ },
+ "NO": {
+ "name": "Norway"
+ },
+ "OM": {
+ "name": "Oman"
+ },
+ "HN": {
+ "name": "Onduras"
+ },
+ "HU": {
+ "name": "OÅ‹ri"
+ },
+ "AU": {
+ "name": "Ostraalia"
+ },
+ "AT": {
+ "name": "Otris"
+ },
+ "PK": {
+ "name": "Pakistan"
+ },
+ "PW": {
+ "name": "Palau"
+ },
+ "PS": {
+ "name": "Palestinian Territories"
+ },
+ "PA": {
+ "name": "Panama"
+ },
+ "PG": {
+ "name": "Papua New Guinea"
+ },
+ "PY": {
+ "name": "Paraguay"
+ },
+ "PE": {
+ "name": "Peru"
+ },
+ "PH": {
+ "name": "Philippines"
+ },
+ "PN": {
+ "name": "Pitcairn Islands"
+ },
+ "PL": {
+ "name": "Poland"
+ },
+ "PT": {
+ "name": "Portugal"
+ },
+ "PR": {
+ "name": "Puerto Rico"
+ },
+ "QA": {
+ "name": "Qatar"
+ },
+ "RE": {
+ "name": "Réunion"
+ },
+ "RO": {
+ "name": "Romania"
+ },
+ "RU": {
+ "name": "Russia"
+ },
+ "RW": {
+ "name": "Rwanda"
+ },
+ "SV": {
+ "name": "Salvadoor"
+ },
+ "JM": {
+ "name": "Samaik"
+ },
+ "WS": {
+ "name": "Samoa"
+ },
+ "AS": {
+ "name": "Samoa yati Amerik"
+ },
+ "SM": {
+ "name": "San Marino"
+ },
+ "LC": {
+ "name": "Saŋ Lusia"
+ },
+ "ST": {
+ "name": "São Tomé & Príncipe"
+ },
+ "JP": {
+ "name": "Sapoŋ"
+ },
+ "SN": {
+ "name": "Senegal"
+ },
+ "GE": {
+ "name": "Seorsi"
+ },
+ "RS": {
+ "name": "Serbia"
+ },
+ "SL": {
+ "name": "Serra Leon"
+ },
+ "SC": {
+ "name": "Seychelles"
+ },
+ "CN": {
+ "name": "Siin"
+ },
+ "CY": {
+ "name": "Siipr"
+ },
+ "SG": {
+ "name": "Singapur"
+ },
+ "SX": {
+ "name": "Sint Maarten"
+ },
+ "GI": {
+ "name": "Sipraltaar"
+ },
+ "LK": {
+ "name": "Siri Lanka"
+ },
+ "SK": {
+ "name": "Slovaki"
+ },
+ "SI": {
+ "name": "Sloveni"
+ },
+ "SB": {
+ "name": "Solomon Islands"
+ },
+ "SO": {
+ "name": "Somali"
+ },
+ "ZA": {
+ "name": "South Africa"
+ },
+ "GS": {
+ "name": "South Georgia & South Sandwich Islands"
+ },
+ "KR": {
+ "name": "South Korea"
+ },
+ "SS": {
+ "name": "South Sudan"
+ },
+ "BL": {
+ "name": "St. Barthélemy"
+ },
+ "SH": {
+ "name": "St. Helena"
+ },
+ "KN": {
+ "name": "St. Kitts & Nevis"
+ },
+ "MF": {
+ "name": "St. Martin"
+ },
+ "PM": {
+ "name": "St. Pierre & Miquelon"
+ },
+ "VC": {
+ "name": "St. Vincent & Grenadines"
+ },
+ "SD": {
+ "name": "Sudan"
+ },
+ "SR": {
+ "name": "Suriname"
+ },
+ "SJ": {
+ "name": "Svalbard & Jan Mayen"
+ },
+ "SZ": {
+ "name": "Swaziland"
+ },
+ "SE": {
+ "name": "Sweden"
+ },
+ "CH": {
+ "name": "Switzerland"
+ },
+ "SY": {
+ "name": "Syria"
+ },
+ "TH": {
+ "name": "Tailand"
+ },
+ "TW": {
+ "name": "Taiwan"
+ },
+ "TJ": {
+ "name": "Tajikistan"
+ },
+ "TZ": {
+ "name": "Tanzania"
+ },
+ "TL": {
+ "name": "Timor-Leste"
+ },
+ "TG": {
+ "name": "Togo"
+ },
+ "TK": {
+ "name": "Tokelau"
+ },
+ "TO": {
+ "name": "Tonga"
+ },
+ "TT": {
+ "name": "Trinidad & Tobago"
+ },
+ "TA": {
+ "name": "Tristan da Cunha"
+ },
+ "TN": {
+ "name": "Tunisia"
+ },
+ "TR": {
+ "name": "Turkey"
+ },
+ "TM": {
+ "name": "Turkmenistan"
+ },
+ "TC": {
+ "name": "Turks & Caicos Islands"
+ },
+ "TV": {
+ "name": "Tuvalu"
+ },
+ "UM": {
+ "name": "U.S. Outlying Islands"
+ },
+ "VI": {
+ "name": "U.S. Virgin Islands"
+ },
+ "UG": {
+ "name": "Uganda"
+ },
+ "UA": {
+ "name": "Ukraine"
+ },
+ "AE": {
+ "name": "United Arab Emirates"
+ },
+ "GB": {
+ "name": "United Kingdom"
+ },
+ "US": {
+ "name": "United States"
+ },
+ "UY": {
+ "name": "Uruguay"
+ },
+ "UZ": {
+ "name": "Uzbekistan"
+ },
+ "VU": {
+ "name": "Vanuatu"
+ },
+ "VA": {
+ "name": "Vatican City"
+ },
+ "VE": {
+ "name": "Venezuela"
+ },
+ "VN": {
+ "name": "Vietnam"
+ },
+ "WF": {
+ "name": "Wallis & Futuna"
+ },
+ "EH": {
+ "name": "Western Sahara"
+ },
+ "YE": {
+ "name": "Yemen"
+ },
+ "ZM": {
+ "name": "Zambia"
+ },
+ "ZW": {
+ "name": "Zimbabwe"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/country/dz.json b/library/intl/resources/country/dz.json
new file mode 100644
index 000000000..991766ec2
--- /dev/null
+++ b/library/intl/resources/country/dz.json
@@ -0,0 +1,761 @@
+{
+ "XK": {
+ "name": "Kosovo"
+ },
+ "QA": {
+ "name": "ཀ་ཊར"
+ },
+ "IC": {
+ "name": "ཀ་ནེ་རི་གླིང་ཚོམ"
+ },
+ "KZ": {
+ "name": "ཀ་ཛགས་སà½à½±à½“"
+ },
+ "KH": {
+ "name": "ཀམ་བྷོ་ཌི་ཡ"
+ },
+ "CW": {
+ "name": "ཀྱཱུར་ར་ཀོ"
+ },
+ "HR": {
+ "name": "ཀྲོ་ཨེ་ཤ"
+ },
+ "KI": {
+ "name": "ཀི་རི་བ་à½à½²à¼‹à½˜à½šà½¼à¼‹à½‚ླིང"
+ },
+ "CU": {
+ "name": "ཀིའུ་བྷ"
+ },
+ "KG": {
+ "name": "ཀིར་གིས་སà½à½±à½“"
+ },
+ "KW": {
+ "name": "ཀུ་à½à½ºà½Š"
+ },
+ "CK": {
+ "name": "ཀུག་གླིང་ཚོམ"
+ },
+ "CA": {
+ "name": "ཀེ་ན་ཌ"
+ },
+ "CM": {
+ "name": "ཀེ་མ་རུན"
+ },
+ "BQ": {
+ "name": "ཀེ་རི་བི་ཡེན་ནེ་དར་ལནཌས྄"
+ },
+ "KE": {
+ "name": "ཀེན་ཡ"
+ },
+ "CV": {
+ "name": "ཀེཔ་བཱཌ"
+ },
+ "CC": {
+ "name": "ཀོ་ཀོས་གླིང་ཚོམ"
+ },
+ "CI": {
+ "name": "ཀོ་ཊེ་ ཌི་ཨི་à½à½¼à¼‹à½¢à½º"
+ },
+ "KM": {
+ "name": "ཀོ་མོ་རོས"
+ },
+ "CO": {
+ "name": "ཀོ་ལོམ་བྷི་ཡ"
+ },
+ "CD": {
+ "name": "ཀོང་གྷོ ཀིན་ཤ་ས"
+ },
+ "CG": {
+ "name": "ཀོང་གྷོ བྷྲ་ཛ་བིལ"
+ },
+ "CR": {
+ "name": "ཀོས་ཊ་རི་ཀ"
+ },
+ "CX": {
+ "name": "à½à½²à¼‹à½¢à½²à½¦à¾Ÿà¼‹à½˜à½ºà½¦à¼‹à½˜à½šà½¼à¼‹à½‚ླིང"
+ },
+ "KY": {
+ "name": "à½à½ºà¼‹à½˜à½ºà½“་གླིང་ཚོམ"
+ },
+ "GH": {
+ "name": "གྷ་ན"
+ },
+ "GA": {
+ "name": "གྷ་བྷོན"
+ },
+ "GY": {
+ "name": "གྷ་ཡ་ན"
+ },
+ "GN": {
+ "name": "གྷི་ནི"
+ },
+ "GW": {
+ "name": "གྷི་ནི་ བྷི་སཱའུ"
+ },
+ "GM": {
+ "name": "གྷེམ་བི་ཡ"
+ },
+ "GT": {
+ "name": "གྷོ་ཊ་མ་ལ"
+ },
+ "GR": {
+ "name": "གིརིས྄"
+ },
+ "GL": {
+ "name": "གིརཱིན་ལནཌ྄"
+ },
+ "GU": {
+ "name": "གུ་འམ་ མཚོ་གླིང"
+ },
+ "GG": {
+ "name": "གུ་ཨེརྣ་སི"
+ },
+ "GF": {
+ "name": "གུའི་ཡ་ན་ ཕྲནས྄་མངའ་à½à½¼à½„ས"
+ },
+ "GD": {
+ "name": "གྲྀ་ན་ཌ"
+ },
+ "GP": {
+ "name": "གོ་ཌེ་ལུ་པེ"
+ },
+ "TD": {
+ "name": "ཅཱཌ"
+ },
+ "CL": {
+ "name": "ཅི་ལི"
+ },
+ "CZ": {
+ "name": "ཅེཀ་ རི་པབ་ལིཀ"
+ },
+ "JP": {
+ "name": "ཇ་པཱན"
+ },
+ "JM": {
+ "name": "ཇཱ་མཻ་ཀ"
+ },
+ "DE": {
+ "name": "ཇཱར་མ་ནི"
+ },
+ "DJ": {
+ "name": "ཇི་བྷུ་ཊི"
+ },
+ "GI": {
+ "name": "ཇིབ་རཱལ་ཊར"
+ },
+ "JE": {
+ "name": "ཇེར་སི"
+ },
+ "JO": {
+ "name": "ཇོར་ཌན"
+ },
+ "GE": {
+ "name": "ཇཽར་ཇཱ"
+ },
+ "TZ": {
+ "name": "ཊཱན་ཛཱ་ནི་ཡ"
+ },
+ "TW": {
+ "name": "ཊཱའི་à½à½±à½“"
+ },
+ "TR": {
+ "name": "ཊཱར་ཀི"
+ },
+ "TM": {
+ "name": "ཊཱརཀ་མེནའི་སà½à½±à½“"
+ },
+ "TT": {
+ "name": "ཊི་ནི་ཌཱཌ་ ཨེནཌ་ ཊོ་བྷེ་གྷོ"
+ },
+ "TN": {
+ "name": "ཊུ་ནི་ཤི་ཡ"
+ },
+ "TG": {
+ "name": "ཊོ་གྷོ"
+ },
+ "TO": {
+ "name": "ཊོང་གྷ"
+ },
+ "DG": {
+ "name": "ཌི་ཡེ་གོ་གར་སིའོ"
+ },
+ "DK": {
+ "name": "ཌེན་མཱཀ"
+ },
+ "DM": {
+ "name": "ཌོ་མི་ནི་ཀ"
+ },
+ "DO": {
+ "name": "ཌོ་མི་ནི་ཀཱན་ རི་པབ་ལིཀ"
+ },
+ "TJ": {
+ "name": "à½à¼‹à½‡à½²à½‚་གི་སà½à½±à½“"
+ },
+ "TA": {
+ "name": "à½à¾²à½²à½¦à¼‹à½à½“་ད་ཀུན་ཧ"
+ },
+ "TL": {
+ "name": "à½à½²à¼‹à¼‹à½˜à½¼à½¢à¼‹à½£à½ºà¼‹à½¨à½ºà½¦à½Š"
+ },
+ "TV": {
+ "name": "à½à½´à¼‹à½à¼‹à½£à½´"
+ },
+ "TC": {
+ "name": "à½à½´à½¢à¾à½¦à¾„་ ཨེནཌ་ ཀ་ཀོས་གླིང་ཚོམ"
+ },
+ "TK": {
+ "name": "à½à½¼à¼‹à½€à½ºà¼‹à½£à½ à½´à¼‹ མཚོ་གླིང"
+ },
+ "TH": {
+ "name": "à½à½±à½ à½²à¼‹à½£à½ºà½“ཌ"
+ },
+ "NA": {
+ "name": "ན་མི་བི་ཡ"
+ },
+ "NR": {
+ "name": "ནའུ་རུ་"
+ },
+ "NE": {
+ "name": "ནཱའི་ཇཱ"
+ },
+ "NG": {
+ "name": "ནཱའི་ཇི་རི་ཡ"
+ },
+ "NI": {
+ "name": "ནི་ཀྲ་à½à¼‹à½‚"
+ },
+ "NU": {
+ "name": "ནི་ཨུ་ཨཻ"
+ },
+ "NC": {
+ "name": "ནིའུ་ཀ་ལི་དོ་ནི་ཡ"
+ },
+ "NZ": {
+ "name": "ནིའུ་ཛི་ལེནཌ"
+ },
+ "EH": {
+ "name": "ནུབ་ཕྱོགས་ ས་ཧཱ་ར"
+ },
+ "NL": {
+ "name": "ནེ་དར་ལནཌས྄"
+ },
+ "NF": {
+ "name": "ནོར་ཕོལཀ་མཚོ་གླིང༌"
+ },
+ "NO": {
+ "name": "ནོར་à½à½º"
+ },
+ "PK": {
+ "name": "པ་ཀི་སà½à½±à½“"
+ },
+ "PA": {
+ "name": "པ་ན་མ"
+ },
+ "PG": {
+ "name": "པ་པུ་ ནིའུ་གི་ནི"
+ },
+ "PY": {
+ "name": "པ་ར་གུ་à½à½ à½²"
+ },
+ "PW": {
+ "name": "པ་ལའུ"
+ },
+ "PN": {
+ "name": "པིཊ་ཀེ་ཡེརན་གླིང་ཚོམ"
+ },
+ "PR": {
+ "name": "པུ་འེར་ཊོ་རི་à½à½¼"
+ },
+ "PE": {
+ "name": "པེ་རུ"
+ },
+ "PS": {
+ "name": "པེ་ལིསི་ཊི་ནི་ཡན་ཊེ་རི་à½à½¼à¼‹à½¢à½²"
+ },
+ "PL": {
+ "name": "པོ་ལེནཌ"
+ },
+ "PT": {
+ "name": "པོར་ཅུ་གཱལ"
+ },
+ "TF": {
+ "name": "ཕྲནཅ་གི་ལྷོ་ཕྱོགས་མངའ་à½à½¼à½„ས"
+ },
+ "FR": {
+ "name": "ཕྲཱནས"
+ },
+ "PF": {
+ "name": "ཕྲཱནས྄་ཀྱི་པོ་ལི་ནི་ཤི་ཡ"
+ },
+ "FK": {
+ "name": "ཕལà¾à¼‹à½£à½“ྜ་གླིང་ཚོམ"
+ },
+ "FO": {
+ "name": "ཕཱའེ་རོ་གླིང་ཚོམ"
+ },
+ "FJ": {
+ "name": "ཕི་ཇི"
+ },
+ "PH": {
+ "name": "ཕི་ལི་པིནས"
+ },
+ "FI": {
+ "name": "ཕིན་ལེནཌ"
+ },
+ "VA": {
+ "name": "བ་ཊི་ཀཱན་ སི་ཊི"
+ },
+ "BD": {
+ "name": "བངྒ་ལ་དེཤ"
+ },
+ "KP": {
+ "name": "བྱང་ ཀོ་རི་ཡ"
+ },
+ "MP": {
+ "name": "བྱང་ཕྱོགས་ཀྱི་མ་ར་ཡ་ན་གླིང་ཚོམ"
+ },
+ "BM": {
+ "name": "བར་མུ་ཌ"
+ },
+ "BR": {
+ "name": "བྲ་ཛིལ"
+ },
+ "IO": {
+ "name": "བྲི་ཊིཤ་རྒྱ་གར་གྱི་རྒྱ་མཚོ་ས་à½à½¼à½„ས"
+ },
+ "NP": {
+ "name": "བལ་ཡུལ"
+ },
+ "BH": {
+ "name": "བྷ་རེན"
+ },
+ "BS": {
+ "name": "བྷ་ཧ་མས྄"
+ },
+ "BF": {
+ "name": "བྷར་ཀི་ན་ ཕེ་སོ"
+ },
+ "BB": {
+ "name": "བྷར་བེ་ཌོས"
+ },
+ "BN": {
+ "name": "བྷྲུ་ནའི"
+ },
+ "BI": {
+ "name": "བྷུ་རུན་ཌི"
+ },
+ "BJ": {
+ "name": "བྷེ་ནིན"
+ },
+ "BO": {
+ "name": "བྷེ་ལི་བི་ཡ"
+ },
+ "BZ": {
+ "name": "བྷེ་ལིཛ"
+ },
+ "BE": {
+ "name": "བྷེལ་ཇམ"
+ },
+ "BW": {
+ "name": "བྷོཙ་à½à¼‹à½“"
+ },
+ "BA": {
+ "name": "བྷོས་ནི་ཡ་ ཨེནཌ་ ཧར་ཛི་གྷོ་བི་ན"
+ },
+ "BG": {
+ "name": "བུལ་ག་རི་ཡ"
+ },
+ "VE": {
+ "name": "བེ་ནི་ཛུ་à½à½ºà¼‹à½£"
+ },
+ "VN": {
+ "name": "བེཊ་ནཱམ"
+ },
+ "BY": {
+ "name": "བེལ་ཨ་རུ་སུ"
+ },
+ "MG": {
+ "name": "མ་དཱ་གེས་ཀར"
+ },
+ "MW": {
+ "name": "མ་ལ་à½à½²"
+ },
+ "MY": {
+ "name": "མ་ལེ་ཤི་ཡ"
+ },
+ "MK": {
+ "name": "མ་སེ་ཌོ་ནི་ཡ"
+ },
+ "MO": {
+ "name": "མཀ་ཨའུ་ཅཱའི་ན"
+ },
+ "FM": {
+ "name": "མའི་ཀྲོ་ནི་ཤི་ཡ"
+ },
+ "MH": {
+ "name": "མར་ཤེལ་གླིང་ཚོམ"
+ },
+ "ML": {
+ "name": "མཱ་ལི"
+ },
+ "MQ": {
+ "name": "མཱར་ཊི་ནིཀ"
+ },
+ "MT": {
+ "name": "མཱལ་ཊ"
+ },
+ "MV": {
+ "name": "མཱལ་དིབས"
+ },
+ "MM": {
+ "name": "མི་ཡཱན་མར་ (བྷར་མ)"
+ },
+ "YT": {
+ "name": "མེ་ཡོཊ"
+ },
+ "MX": {
+ "name": "མེཀ་སི་ཀོ"
+ },
+ "MC": {
+ "name": "མོ་ན་ཀོ"
+ },
+ "MZ": {
+ "name": "མོ་ཛམ་བྷིཀ"
+ },
+ "MR": {
+ "name": "མོ་རི་ཊེ་ནི་ཡ"
+ },
+ "MU": {
+ "name": "མོ་རི་ཤཱས"
+ },
+ "MA": {
+ "name": "མོ་རོ་ཀོ"
+ },
+ "ME": {
+ "name": "མོན་ཊི་ནེག་རོ"
+ },
+ "MS": {
+ "name": "མོན་ས་རཊ"
+ },
+ "MD": {
+ "name": "མོལ་དོ་བཱ"
+ },
+ "ZM": {
+ "name": "ཛམ་བྷི་ཡ"
+ },
+ "ZW": {
+ "name": "ཛིམ་བྷབ་à½à½º"
+ },
+ "VU": {
+ "name": "à½à¼‹à½“ུ་ཨ་à½à½´"
+ },
+ "VG": {
+ "name": "à½à½¢à½‡à½²à½“་གླིང་ཚོམ་ བྲཱི་ཊིཤ་མངའ་à½à½¼à½„ས"
+ },
+ "VI": {
+ "name": "à½à½¢à½‡à½²à½“་གླིང་ཚོམ་ ཡུ་ཨེས་ཨེ་མངའ་à½à½¼à½„ས"
+ },
+ "WF": {
+ "name": "à½à½£à¼‹à½£à½²à½¦à¾„་ ཨེནཌ་ ཕུ་à½à½´à¼‹à½“་"
+ },
+ "BT": {
+ "name": "འབྲུག"
+ },
+ "AQ": {
+ "name": "འཛམ་གླིང་ལྷོ་མà½à½ à½²à¼‹à½à¾±à½‚ས་གླིང"
+ },
+ "UA": {
+ "name": "ཡུ་ཀརེན"
+ },
+ "UG": {
+ "name": "ཡུ་གྷན་ཌ"
+ },
+ "GB": {
+ "name": "ཡུ་ནཱའི་ཊེཌ་ ཀིང་ཌམ"
+ },
+ "AE": {
+ "name": "ཡུ་ནཱའི་ཊེཌ་ ཨ་རབ་ ཨེ་མེ་རེཊས"
+ },
+ "UY": {
+ "name": "ཡུ་རུ་གུ་à½à½ à½²"
+ },
+ "UM": {
+ "name": "ཡུ་ཨེས་གྱི་མà½à½ à¼‹à½˜à½šà½˜à½¦à¼‹à½˜à½šà½¼à¼‹à½‚ླིང་"
+ },
+ "US": {
+ "name": "ཡུ་ཨེས་ཨེ"
+ },
+ "YE": {
+ "name": "ཡེ་མེན"
+ },
+ "IN": {
+ "name": "རྒྱ་གར"
+ },
+ "CN": {
+ "name": "རྒྱ་ནག"
+ },
+ "RW": {
+ "name": "རུ་à½à½“་ཌ"
+ },
+ "RE": {
+ "name": "རེ་ཡུ་ནི་ཡོན"
+ },
+ "RO": {
+ "name": "རོ་མེ་ནི་ཡ"
+ },
+ "LU": {
+ "name": "ལག་ཛམ་བོརྒ"
+ },
+ "LV": {
+ "name": "ལཊ་བི་ཡ"
+ },
+ "KR": {
+ "name": "ལྷོ་ ཀོ་རི་ཡ"
+ },
+ "LA": {
+ "name": "ལཱ་à½à½¼à½¦"
+ },
+ "LR": {
+ "name": "ལཱའི་བེ་རི་ཡ"
+ },
+ "LT": {
+ "name": "ལི་à½à½´à¼‹à½à½ºà¼‹à½“ི་ཡ"
+ },
+ "LY": {
+ "name": "ལི་བི་ཡ"
+ },
+ "LI": {
+ "name": "ལིཀ་à½à½“ས་à½à¼‹à½¡à½²à½“"
+ },
+ "LB": {
+ "name": "ལེ་བ་ནོན"
+ },
+ "LS": {
+ "name": "ལཻ་སོ་à½à½¼"
+ },
+ "LK": {
+ "name": "ཤྲཱི་ལང་ཀ"
+ },
+ "WS": {
+ "name": "ས་མོ་ཨ"
+ },
+ "AS": {
+ "name": "ས་མོ་ཨ་ཡུ་ཨེས་ཨེ་མངའ་à½à½¼à½„ས"
+ },
+ "ST": {
+ "name": "སà½à¼‹ ཊོ་མེ་ ཨེནཌ་ པྲྀན་སི་པེ"
+ },
+ "SJ": {
+ "name": "སྭཱལ་བྷརྡ་ ཨེནཌ་ ཇཱན་མ་ཡེན"
+ },
+ "SM": {
+ "name": "སཱན་མ་རི་ནོ"
+ },
+ "SA": {
+ "name": "སཱà½à¼‹à½‘ི་ ཨ་རེ་བྷི་ཡ"
+ },
+ "CY": {
+ "name": "སཱའི་པྲས"
+ },
+ "SS": {
+ "name": "སཱའུà½à¼‹ སུ་ཌཱན"
+ },
+ "ZA": {
+ "name": "སཱའུà½à¼‹ ཨཕ་རི་ཀ"
+ },
+ "GS": {
+ "name": "སཱའུà½à¼‹à½‡à½½à½¢à¼‹à½‡à½±à¼‹ དང་ སཱའུà½à¼‹à½¦à½ºà½“ཌ྄་à½à½²à½…་གླིང་ཚོམ"
+ },
+ "RS": {
+ "name": "སཱར་བྷི་ཡ"
+ },
+ "SL": {
+ "name": "སི་ར་ ལི་འོན"
+ },
+ "SY": {
+ "name": "སི་རི་ཡ"
+ },
+ "SG": {
+ "name": "སིང་ག་པོར"
+ },
+ "SX": {
+ "name": "སིནཊ་ མཱར་ཊེན"
+ },
+ "PM": {
+ "name": "སིནཊ་པི་ཡེར་ ཨེནཌ་ མིཀོ་ལེན"
+ },
+ "SD": {
+ "name": "སུ་ཌཱན"
+ },
+ "SZ": {
+ "name": "སུ་à½à¼‹à½›à½²à¼‹à½£à½ºà½“ཌ"
+ },
+ "CH": {
+ "name": "སུ་à½à½²à½Šà¼‹à½›à½¢à¼‹à½£à½ºà½“ཌ"
+ },
+ "SR": {
+ "name": "སུ་རི་ནཱམ"
+ },
+ "SK": {
+ "name": "སུ་ལོ་བཱ་ཀི་ཡ"
+ },
+ "SI": {
+ "name": "སུ་ལོ་བི་ནི་ཡ"
+ },
+ "SE": {
+ "name": "སུའི་ཌེན"
+ },
+ "SN": {
+ "name": "སེ་ནི་གྷལ"
+ },
+ "SC": {
+ "name": "སེ་ཤཱལས"
+ },
+ "EA": {
+ "name": "སེ་ཨུ་à½à¼‹ ཨེནཌ་ མེལ་ལི་ལ"
+ },
+ "CF": {
+ "name": "སེན་ཊལ་ ཨཕ་རི་ཀཱན་ རི་པབ་ལིཀ"
+ },
+ "KN": {
+ "name": "སེནཊ་ ཀིཊས་ དང་ ནེ་བིས"
+ },
+ "BL": {
+ "name": "སེནཊ་ བར་à½à½¼à¼‹à½£à½¼à½˜à¼‹à½˜à½²à½ à½´"
+ },
+ "MF": {
+ "name": "སེནཊ་ མཱར་ཊིན"
+ },
+ "LC": {
+ "name": "སེནཊ་ ལུ་སི་ཡ"
+ },
+ "SH": {
+ "name": "སེནཊ་ ཧེ་ལི་ན"
+ },
+ "VC": {
+ "name": "སེནཊ་à½à½²à½“་སེནཌ྄ ཨེནཌ་ གི་རེ་ན་དིནས྄"
+ },
+ "SO": {
+ "name": "སོ་མ་ལི་ཡ"
+ },
+ "SB": {
+ "name": "སོ་ལོ་མོན་ གླིང་ཚོམ"
+ },
+ "MN": {
+ "name": "སོག་པོ་ཡུལ"
+ },
+ "HU": {
+ "name": "ཧཱང་གྷ་རི"
+ },
+ "HN": {
+ "name": "ཧཱན་ཌུ་རཱས྄"
+ },
+ "HT": {
+ "name": "ཧེ་ཊི"
+ },
+ "HK": {
+ "name": "ཧོང་ཀོང་ཅཱའི་ན"
+ },
+ "AZ": {
+ "name": "ཨ་ཛར་བྷའི་ཇཱན"
+ },
+ "IM": {
+ "name": "ཨ་ཡུལ་ ཨོཕ་ མཱན"
+ },
+ "AW": {
+ "name": "ཨ་རུ་བཱ"
+ },
+ "AX": {
+ "name": "ཨ་ལནཌ་གླིང་ཚོམ"
+ },
+ "AO": {
+ "name": "ཨང་གྷོ་ལ"
+ },
+ "AI": {
+ "name": "ཨང་གི་ལ"
+ },
+ "AG": {
+ "name": "ཨན་ཊི་གུ་à½à¼‹ ཨེནཌ་ བྷར་བྷུ་ཌ"
+ },
+ "AF": {
+ "name": "ཨཕ་གྷ་ནི་སà½à½±à½“"
+ },
+ "AR": {
+ "name": "ཨར་ཇེན་ཊི་ན"
+ },
+ "AM": {
+ "name": "ཨར་མི་ནི་ཡ"
+ },
+ "IE": {
+ "name": "ཨཱ་ཡ་ལེནཌ"
+ },
+ "AD": {
+ "name": "ཨཱན་དོ་ར"
+ },
+ "IS": {
+ "name": "ཨཱའིས་ལེནཌ"
+ },
+ "DZ": {
+ "name": "ཨཱལ་ཇི་རི་ཡ"
+ },
+ "AL": {
+ "name": "ཨཱལ་བེ་ནི་ཡ"
+ },
+ "AT": {
+ "name": "ཨཱོས་ཊྲི་ཡ"
+ },
+ "AU": {
+ "name": "ཨཱོས་ཊྲེལ་ལི་ཡ"
+ },
+ "EG": {
+ "name": "ཨི་ཇིབཊ"
+ },
+ "IT": {
+ "name": "ཨི་ཊ་ལི"
+ },
+ "ET": {
+ "name": "ཨི་à½à½²à¼‹à½¡à½¼à¼‹à½”ི་ཡ"
+ },
+ "IQ": {
+ "name": "ཨི་རཱཀ"
+ },
+ "IR": {
+ "name": "ཨི་རཱན"
+ },
+ "ID": {
+ "name": "ཨིན་ཌོ་ནེ་ཤི་ཡ"
+ },
+ "ES": {
+ "name": "ཨིས་པེན"
+ },
+ "IL": {
+ "name": "ཨིས་ར་ཡེལ"
+ },
+ "RU": {
+ "name": "ཨུ་རུ་སུ"
+ },
+ "UZ": {
+ "name": "ཨུས་བེག་གི་སà½à½±à½“"
+ },
+ "GQ": {
+ "name": "ཨེ་ཀུ་ཊོ་རེལ་ གི་ནི"
+ },
+ "EC": {
+ "name": "ཨེ་à½à¾­à¼‹à½Œà½¼à½¢"
+ },
+ "ER": {
+ "name": "ཨེ་རི་ཊྲེ་ཡ"
+ },
+ "AC": {
+ "name": "ཨེ་སེན་ཤུན་ཚོ་གླིང༌"
+ },
+ "SV": {
+ "name": "ཨེལ་སལ་བ་ཌོར"
+ },
+ "EE": {
+ "name": "ཨེས་ཊོ་ནི་ཡ"
+ },
+ "OM": {
+ "name": "ཨོ་མཱན"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/country/ebu.json b/library/intl/resources/country/ebu.json
new file mode 100644
index 000000000..e57db8007
--- /dev/null
+++ b/library/intl/resources/country/ebu.json
@@ -0,0 +1,761 @@
+{
+ "ZA": {
+ "name": "Afrika Kusini"
+ },
+ "AF": {
+ "name": "Afuganistani"
+ },
+ "IS": {
+ "name": "Aislandi"
+ },
+ "AR": {
+ "name": "Ajentina"
+ },
+ "AX": {
+ "name": "Ã…land Islands"
+ },
+ "AL": {
+ "name": "Albania"
+ },
+ "DZ": {
+ "name": "Aljeria"
+ },
+ "AD": {
+ "name": "Andora"
+ },
+ "AO": {
+ "name": "Angola"
+ },
+ "AI": {
+ "name": "Anguilla"
+ },
+ "AQ": {
+ "name": "Antarctica"
+ },
+ "AG": {
+ "name": "Antigua na Barbuda"
+ },
+ "AM": {
+ "name": "Armenia"
+ },
+ "AW": {
+ "name": "Aruba"
+ },
+ "AC": {
+ "name": "Ascension Island"
+ },
+ "AU": {
+ "name": "Australia"
+ },
+ "AT": {
+ "name": "Austria"
+ },
+ "IE": {
+ "name": "Ayalandi"
+ },
+ "AZ": {
+ "name": "Azabajani"
+ },
+ "BB": {
+ "name": "Babadosi"
+ },
+ "BS": {
+ "name": "Bahama"
+ },
+ "BH": {
+ "name": "Bahareni"
+ },
+ "BD": {
+ "name": "Bangladeshi"
+ },
+ "BY": {
+ "name": "Belarusi"
+ },
+ "BZ": {
+ "name": "Belize"
+ },
+ "BJ": {
+ "name": "Benini"
+ },
+ "BM": {
+ "name": "Bermuda"
+ },
+ "BO": {
+ "name": "Bolivia"
+ },
+ "BA": {
+ "name": "Bosnia na Hezegovina"
+ },
+ "BW": {
+ "name": "Botswana"
+ },
+ "BR": {
+ "name": "Brazili"
+ },
+ "BN": {
+ "name": "Brunei"
+ },
+ "BF": {
+ "name": "Bukinafaso"
+ },
+ "MG": {
+ "name": "Bukini"
+ },
+ "BG": {
+ "name": "Bulgaria"
+ },
+ "BI": {
+ "name": "Burundi"
+ },
+ "BT": {
+ "name": "Butani"
+ },
+ "IC": {
+ "name": "Canary Islands"
+ },
+ "BQ": {
+ "name": "Caribbean Netherlands"
+ },
+ "EA": {
+ "name": "Ceuta & Melilla"
+ },
+ "TD": {
+ "name": "Chadi"
+ },
+ "CL": {
+ "name": "Chile"
+ },
+ "CN": {
+ "name": "China"
+ },
+ "CX": {
+ "name": "Christmas Island"
+ },
+ "CC": {
+ "name": "Cocos (Keeling) Islands"
+ },
+ "CW": {
+ "name": "Curaçao"
+ },
+ "DK": {
+ "name": "Denmaki"
+ },
+ "DG": {
+ "name": "Diego Garcia"
+ },
+ "DM": {
+ "name": "Dominika"
+ },
+ "EC": {
+ "name": "Ekwado"
+ },
+ "SV": {
+ "name": "Elsavado"
+ },
+ "IO": {
+ "name": "Eneo la Uingereza katika Bahari Hindi"
+ },
+ "ER": {
+ "name": "Eritrea"
+ },
+ "EE": {
+ "name": "Estonia"
+ },
+ "AE": {
+ "name": "Falme za Kiarabu"
+ },
+ "FO": {
+ "name": "Faroe Islands"
+ },
+ "FJ": {
+ "name": "Fiji"
+ },
+ "PH": {
+ "name": "Filipino"
+ },
+ "TF": {
+ "name": "French Southern Territories"
+ },
+ "GA": {
+ "name": "Gaboni"
+ },
+ "GM": {
+ "name": "Gambia"
+ },
+ "GH": {
+ "name": "Ghana"
+ },
+ "GN": {
+ "name": "Gine"
+ },
+ "GW": {
+ "name": "Ginebisau"
+ },
+ "GQ": {
+ "name": "Ginekweta"
+ },
+ "GD": {
+ "name": "Grenada"
+ },
+ "GL": {
+ "name": "Grinlandi"
+ },
+ "GG": {
+ "name": "Guernsey"
+ },
+ "GY": {
+ "name": "Guyana"
+ },
+ "GP": {
+ "name": "Gwadelupe"
+ },
+ "GU": {
+ "name": "Gwam"
+ },
+ "GT": {
+ "name": "Gwatemala"
+ },
+ "GF": {
+ "name": "Gwiyana ya Ufaransa"
+ },
+ "HT": {
+ "name": "Haiti"
+ },
+ "ES": {
+ "name": "Hispania"
+ },
+ "HN": {
+ "name": "Hondurasi"
+ },
+ "HK": {
+ "name": "Hong Kong SAR China"
+ },
+ "HU": {
+ "name": "Hungaria"
+ },
+ "IN": {
+ "name": "India"
+ },
+ "ID": {
+ "name": "Indonesia"
+ },
+ "IQ": {
+ "name": "Iraki"
+ },
+ "IM": {
+ "name": "Isle of Man"
+ },
+ "IL": {
+ "name": "Israeli"
+ },
+ "IT": {
+ "name": "Italia"
+ },
+ "JM": {
+ "name": "Jamaika"
+ },
+ "CF": {
+ "name": "Jamhuri ya Afrika ya Kati"
+ },
+ "CZ": {
+ "name": "Jamhuri ya Cheki"
+ },
+ "DO": {
+ "name": "Jamhuri ya Dominika"
+ },
+ "CD": {
+ "name": "Jamhuri ya Kidemokrasia ya Kongo"
+ },
+ "JP": {
+ "name": "Japani"
+ },
+ "JE": {
+ "name": "Jersey"
+ },
+ "GI": {
+ "name": "Jibralta"
+ },
+ "DJ": {
+ "name": "Jibuti"
+ },
+ "GE": {
+ "name": "Jojia"
+ },
+ "KH": {
+ "name": "Kambodia"
+ },
+ "CM": {
+ "name": "Kameruni"
+ },
+ "CA": {
+ "name": "Kanada"
+ },
+ "QA": {
+ "name": "Katari"
+ },
+ "KZ": {
+ "name": "Kazakistani"
+ },
+ "KE": {
+ "name": "Kenya"
+ },
+ "CV": {
+ "name": "Kepuvede"
+ },
+ "KI": {
+ "name": "Kiribati"
+ },
+ "KG": {
+ "name": "Kirigizistani"
+ },
+ "NF": {
+ "name": "Kisiwa cha Norfok"
+ },
+ "CI": {
+ "name": "Kodivaa"
+ },
+ "CO": {
+ "name": "Kolombia"
+ },
+ "KM": {
+ "name": "Komoro"
+ },
+ "CG": {
+ "name": "Kongo"
+ },
+ "HR": {
+ "name": "Korasia"
+ },
+ "KP": {
+ "name": "Korea Kaskazini"
+ },
+ "KR": {
+ "name": "Korea Kusini"
+ },
+ "XK": {
+ "name": "Kosovo"
+ },
+ "CR": {
+ "name": "Kostarika"
+ },
+ "CU": {
+ "name": "Kuba"
+ },
+ "CY": {
+ "name": "Kuprosi"
+ },
+ "KW": {
+ "name": "Kuwaiti"
+ },
+ "LA": {
+ "name": "Laosi"
+ },
+ "LU": {
+ "name": "Lasembagi"
+ },
+ "LV": {
+ "name": "Lativia"
+ },
+ "LB": {
+ "name": "Lebanoni"
+ },
+ "LS": {
+ "name": "Lesoto"
+ },
+ "LR": {
+ "name": "Liberia"
+ },
+ "LY": {
+ "name": "Libya"
+ },
+ "LI": {
+ "name": "Lishenteni"
+ },
+ "LT": {
+ "name": "Litwania"
+ },
+ "MO": {
+ "name": "Macau SAR China"
+ },
+ "MW": {
+ "name": "Malawi"
+ },
+ "MY": {
+ "name": "Malesia"
+ },
+ "ML": {
+ "name": "Mali"
+ },
+ "MT": {
+ "name": "Malta"
+ },
+ "US": {
+ "name": "Marekani"
+ },
+ "MQ": {
+ "name": "Martiniki"
+ },
+ "MK": {
+ "name": "Masedonia"
+ },
+ "YT": {
+ "name": "Mayotte"
+ },
+ "MX": {
+ "name": "Meksiko"
+ },
+ "FM": {
+ "name": "Mikronesia"
+ },
+ "EG": {
+ "name": "Misri"
+ },
+ "MV": {
+ "name": "Modivu"
+ },
+ "MD": {
+ "name": "Moldova"
+ },
+ "MC": {
+ "name": "Monako"
+ },
+ "MN": {
+ "name": "Mongolia"
+ },
+ "ME": {
+ "name": "Montenegro"
+ },
+ "MS": {
+ "name": "Montserrati"
+ },
+ "MU": {
+ "name": "Morisi"
+ },
+ "MR": {
+ "name": "Moritania"
+ },
+ "MA": {
+ "name": "Moroko"
+ },
+ "MZ": {
+ "name": "Msumbiji"
+ },
+ "MM": {
+ "name": "Myama"
+ },
+ "NA": {
+ "name": "Namibia"
+ },
+ "NR": {
+ "name": "Nauru"
+ },
+ "NP": {
+ "name": "Nepali"
+ },
+ "NE": {
+ "name": "Nijeri"
+ },
+ "NG": {
+ "name": "Nijeria"
+ },
+ "NI": {
+ "name": "Nikaragwa"
+ },
+ "NU": {
+ "name": "Niue"
+ },
+ "NO": {
+ "name": "Norwe"
+ },
+ "NC": {
+ "name": "Nyukaledonia"
+ },
+ "NZ": {
+ "name": "Nyuzilandi"
+ },
+ "OM": {
+ "name": "Omani"
+ },
+ "PK": {
+ "name": "Pakistani"
+ },
+ "PW": {
+ "name": "Palau"
+ },
+ "PA": {
+ "name": "Panama"
+ },
+ "PG": {
+ "name": "Papua"
+ },
+ "PY": {
+ "name": "Paragwai"
+ },
+ "PE": {
+ "name": "Peru"
+ },
+ "PN": {
+ "name": "Pitkairni"
+ },
+ "PL": {
+ "name": "Polandi"
+ },
+ "PF": {
+ "name": "Polinesia ya Ufaransa"
+ },
+ "PR": {
+ "name": "Pwetoriko"
+ },
+ "RE": {
+ "name": "Riyunioni"
+ },
+ "RO": {
+ "name": "Romania"
+ },
+ "RW": {
+ "name": "Rwanda"
+ },
+ "SM": {
+ "name": "Samarino"
+ },
+ "WS": {
+ "name": "Samoa"
+ },
+ "AS": {
+ "name": "Samoa ya Marekani"
+ },
+ "SH": {
+ "name": "Santahelena"
+ },
+ "KN": {
+ "name": "Santakitzi na Nevis"
+ },
+ "LC": {
+ "name": "Santalusia"
+ },
+ "PM": {
+ "name": "Santapieri na Mikeloni"
+ },
+ "VC": {
+ "name": "Santavisenti na Grenadini"
+ },
+ "ST": {
+ "name": "Sao Tome na Principe"
+ },
+ "SA": {
+ "name": "Saudi"
+ },
+ "SN": {
+ "name": "Senegali"
+ },
+ "RS": {
+ "name": "Serbia"
+ },
+ "SC": {
+ "name": "Shelisheli"
+ },
+ "SL": {
+ "name": "Siera Leoni"
+ },
+ "SG": {
+ "name": "Singapoo"
+ },
+ "SX": {
+ "name": "Sint Maarten"
+ },
+ "SY": {
+ "name": "Siria"
+ },
+ "LK": {
+ "name": "Sirilanka"
+ },
+ "SK": {
+ "name": "Slovakia"
+ },
+ "SI": {
+ "name": "Slovenia"
+ },
+ "SO": {
+ "name": "Somalia"
+ },
+ "GS": {
+ "name": "South Georgia & South Sandwich Islands"
+ },
+ "SS": {
+ "name": "South Sudan"
+ },
+ "BL": {
+ "name": "St. Barthélemy"
+ },
+ "MF": {
+ "name": "St. Martin"
+ },
+ "SD": {
+ "name": "Sudani"
+ },
+ "SR": {
+ "name": "Surinamu"
+ },
+ "SJ": {
+ "name": "Svalbard & Jan Mayen"
+ },
+ "TH": {
+ "name": "Tailandi"
+ },
+ "TW": {
+ "name": "Taiwani"
+ },
+ "TJ": {
+ "name": "Tajikistani"
+ },
+ "TZ": {
+ "name": "Tanzania"
+ },
+ "TL": {
+ "name": "Timori ya Mashariki"
+ },
+ "TG": {
+ "name": "Togo"
+ },
+ "TK": {
+ "name": "Tokelau"
+ },
+ "TO": {
+ "name": "Tonga"
+ },
+ "TT": {
+ "name": "Trinidad na Tobago"
+ },
+ "TA": {
+ "name": "Tristan da Cunha"
+ },
+ "TN": {
+ "name": "Tunisia"
+ },
+ "TM": {
+ "name": "Turukimenistani"
+ },
+ "TV": {
+ "name": "Tuvalu"
+ },
+ "UM": {
+ "name": "U.S. Outlying Islands"
+ },
+ "IR": {
+ "name": "Uajemi"
+ },
+ "BE": {
+ "name": "Ubelgiji"
+ },
+ "FR": {
+ "name": "Ufaransa"
+ },
+ "FI": {
+ "name": "Ufini"
+ },
+ "UG": {
+ "name": "Uganda"
+ },
+ "GR": {
+ "name": "Ugiriki"
+ },
+ "ET": {
+ "name": "Uhabeshi"
+ },
+ "NL": {
+ "name": "Uholanzi"
+ },
+ "GB": {
+ "name": "Uingereza"
+ },
+ "DE": {
+ "name": "Ujerumani"
+ },
+ "PS": {
+ "name": "Ukingo wa Magharibi na Ukanda wa Gaza wa Palestina"
+ },
+ "UA": {
+ "name": "Ukraini"
+ },
+ "PT": {
+ "name": "Ureno"
+ },
+ "UY": {
+ "name": "Urugwai"
+ },
+ "RU": {
+ "name": "Urusi"
+ },
+ "SZ": {
+ "name": "Uswazi"
+ },
+ "SE": {
+ "name": "Uswidi"
+ },
+ "CH": {
+ "name": "Uswisi"
+ },
+ "TR": {
+ "name": "Uturuki"
+ },
+ "UZ": {
+ "name": "Uzibekistani"
+ },
+ "VU": {
+ "name": "Vanuatu"
+ },
+ "VA": {
+ "name": "Vatikani"
+ },
+ "VE": {
+ "name": "Venezuela"
+ },
+ "VN": {
+ "name": "Vietinamu"
+ },
+ "CK": {
+ "name": "Visiwa vya Cook"
+ },
+ "FK": {
+ "name": "Visiwa vya Falkland"
+ },
+ "KY": {
+ "name": "Visiwa vya Kayman"
+ },
+ "MP": {
+ "name": "Visiwa vya Mariana vya Kaskazini"
+ },
+ "MH": {
+ "name": "Visiwa vya Marshal"
+ },
+ "SB": {
+ "name": "Visiwa vya Solomon"
+ },
+ "TC": {
+ "name": "Visiwa vya Turki na Kaiko"
+ },
+ "VI": {
+ "name": "Visiwa vya Virgin vya Marekani"
+ },
+ "VG": {
+ "name": "Visiwa vya Virgin vya Uingereza"
+ },
+ "WF": {
+ "name": "Walis na Futuna"
+ },
+ "EH": {
+ "name": "Western Sahara"
+ },
+ "YE": {
+ "name": "Yemeni"
+ },
+ "JO": {
+ "name": "Yordani"
+ },
+ "ZM": {
+ "name": "Zambia"
+ },
+ "ZW": {
+ "name": "Zimbabwe"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/country/ee.json b/library/intl/resources/country/ee.json
new file mode 100644
index 000000000..e9ef0a4a0
--- /dev/null
+++ b/library/intl/resources/country/ee.json
@@ -0,0 +1,761 @@
+{
+ "AF": {
+ "name": "Afghanistan nutome"
+ },
+ "IS": {
+ "name": "Aiseland nutome"
+ },
+ "IM": {
+ "name": "Aisle of Man nutome"
+ },
+ "AX": {
+ "name": "Ã…land Æ’udomekpo nutome"
+ },
+ "AL": {
+ "name": "Albania nutome"
+ },
+ "DZ": {
+ "name": "Algeria nutome"
+ },
+ "AS": {
+ "name": "Amerika Samoa nutome"
+ },
+ "AD": {
+ "name": "Andorra nutome"
+ },
+ "AO": {
+ "name": "Angola nutome"
+ },
+ "AI": {
+ "name": "Anguilla nutome"
+ },
+ "AQ": {
+ "name": "Antartica nutome"
+ },
+ "AG": {
+ "name": "ÌAntigua kple Barbuda nutome"
+ },
+ "ZA": {
+ "name": "Anyiehe Afrika nutome"
+ },
+ "TF": {
+ "name": "Anyiehe Franseme nutome"
+ },
+ "GS": {
+ "name": "Anyiehe Georgia kple Anyiehe Sandwich Æ’udomekpowo nutome"
+ },
+ "KR": {
+ "name": "Anyiehe Korea nutome"
+ },
+ "SS": {
+ "name": "Anyiehe Sudan nutome"
+ },
+ "AR": {
+ "name": "Argentina nutome"
+ },
+ "AM": {
+ "name": "Armenia nutome"
+ },
+ "AW": {
+ "name": "Aruba nutome"
+ },
+ "AC": {
+ "name": "Ascension Æ’udomekpo nutome"
+ },
+ "AU": {
+ "name": "Australia nutome"
+ },
+ "AT": {
+ "name": "Austria nutome"
+ },
+ "AZ": {
+ "name": "Azerbaijan nutome"
+ },
+ "BS": {
+ "name": "Bahamas nutome"
+ },
+ "BH": {
+ "name": "Bahrain nutome"
+ },
+ "BD": {
+ "name": "Bangladesh nutome"
+ },
+ "BB": {
+ "name": "Barbados nutome"
+ },
+ "BY": {
+ "name": "Belarus nutome"
+ },
+ "BE": {
+ "name": "Belgium nutome"
+ },
+ "BZ": {
+ "name": "Belize nutome"
+ },
+ "BJ": {
+ "name": "Benin nutome"
+ },
+ "BM": {
+ "name": "Bermuda nutome"
+ },
+ "BT": {
+ "name": "Bhutan nutome"
+ },
+ "BO": {
+ "name": "Bolivia nutome"
+ },
+ "BA": {
+ "name": "Bosnia kple Herzergovina nutome"
+ },
+ "BW": {
+ "name": "Botswana nutome"
+ },
+ "BR": {
+ "name": "Brazil nutome"
+ },
+ "IO": {
+ "name": "Britaintɔwo ƒe india ƒudome nutome"
+ },
+ "VG": {
+ "name": "Britaintɔwo ƒe Virgin ƒudomekpowo nutome"
+ },
+ "BN": {
+ "name": "Brunei nutome"
+ },
+ "BG": {
+ "name": "Bulgaria nutome"
+ },
+ "BF": {
+ "name": "Burkina Faso nutome"
+ },
+ "BI": {
+ "name": "Burundi nutome"
+ },
+ "DK": {
+ "name": "Denmark nutome"
+ },
+ "DG": {
+ "name": "Diego Garsia nutome"
+ },
+ "DM": {
+ "name": "Dominika nutome"
+ },
+ "DO": {
+ "name": "Dominika repɔblik nutome"
+ },
+ "JM": {
+ "name": "Dzamaika nutome"
+ },
+ "JP": {
+ "name": "Dzapan nutome"
+ },
+ "JE": {
+ "name": "Dzɛse nutome"
+ },
+ "DJ": {
+ "name": "Dzibuti nutome"
+ },
+ "KP": {
+ "name": "Dziehe Korea nutome"
+ },
+ "MP": {
+ "name": "Dziehe Marina Æ’udomekpowo nutome"
+ },
+ "EG": {
+ "name": "Egypte nutome"
+ },
+ "EC": {
+ "name": "EkuadÉ” nutome"
+ },
+ "GQ": {
+ "name": "Ekuatorial Guini nutome"
+ },
+ "SV": {
+ "name": "El SalvadÉ” nutome"
+ },
+ "ER": {
+ "name": "Eritrea nutome"
+ },
+ "EE": {
+ "name": "Estonia nutome"
+ },
+ "ET": {
+ "name": "Etiopia nutome"
+ },
+ "FK": {
+ "name": "Falkland Æ’udomekpowo nutome"
+ },
+ "FO": {
+ "name": "Faroe Æ’udomekpowo nutome"
+ },
+ "FJ": {
+ "name": "Fidzi nutome"
+ },
+ "PH": {
+ "name": "Filipini nutome"
+ },
+ "FI": {
+ "name": "Finland nutome"
+ },
+ "FR": {
+ "name": "Frans nutome"
+ },
+ "GF": {
+ "name": "Frentsi Gayana nutome"
+ },
+ "PF": {
+ "name": "Frentsi Pɔlinesia nutome"
+ },
+ "GA": {
+ "name": "Gabɔn nutome"
+ },
+ "GM": {
+ "name": "Gambia nutome"
+ },
+ "GE": {
+ "name": "Georgia nutome"
+ },
+ "DE": {
+ "name": "Germania nutome"
+ },
+ "GH": {
+ "name": "Ghana nutome"
+ },
+ "GI": {
+ "name": "Gibraltar nutome"
+ },
+ "GW": {
+ "name": "Gini-Bisao nutome"
+ },
+ "GD": {
+ "name": "Grenada nutome"
+ },
+ "GL": {
+ "name": "Grinland nutome"
+ },
+ "GR": {
+ "name": "Grisi nutome"
+ },
+ "GP": {
+ "name": "Guadelupe nutome"
+ },
+ "GU": {
+ "name": "Guam nutome"
+ },
+ "GT": {
+ "name": "Guatemala nutome"
+ },
+ "GG": {
+ "name": "Guernse nutome"
+ },
+ "GN": {
+ "name": "Guini nutome"
+ },
+ "GY": {
+ "name": "Guyanadu"
+ },
+ "EH": {
+ "name": "Ɣetoɖoƒe Sahara nutome"
+ },
+ "HT": {
+ "name": "Haiti nutome"
+ },
+ "HN": {
+ "name": "Hondurasdu"
+ },
+ "HK": {
+ "name": "Hɔng Kɔng SAR Tsaina nutome"
+ },
+ "HU": {
+ "name": "Hungari nutome"
+ },
+ "IN": {
+ "name": "India nutome"
+ },
+ "ID": {
+ "name": "Indonesia nutome"
+ },
+ "IR": {
+ "name": "Iran nutome"
+ },
+ "IQ": {
+ "name": "iraqdukÉ”"
+ },
+ "IE": {
+ "name": "Ireland nutome"
+ },
+ "IL": {
+ "name": "Israel nutome"
+ },
+ "IT": {
+ "name": "Italia nutome"
+ },
+ "KH": {
+ "name": "Kambodia nutome"
+ },
+ "CM": {
+ "name": "Kamerun nutome"
+ },
+ "CA": {
+ "name": "Kanada nutome"
+ },
+ "IC": {
+ "name": "Kanari Æ’udomekpowo nutome"
+ },
+ "CV": {
+ "name": "Kape Verde nutome"
+ },
+ "BQ": {
+ "name": "Karibbeatɔwo ƒe Nedalanɖs nutome"
+ },
+ "QA": {
+ "name": "Katar nutome"
+ },
+ "KY": {
+ "name": "Kayman Æ’udomekpowo nutome"
+ },
+ "KZ": {
+ "name": "Kazakstan nutome"
+ },
+ "KE": {
+ "name": "Kenya nutome"
+ },
+ "EA": {
+ "name": "Keuta and Melilla nutome"
+ },
+ "KG": {
+ "name": "Kirgizstan nutome"
+ },
+ "KI": {
+ "name": "Kiribati nutome"
+ },
+ "CC": {
+ "name": "Kokos (Kiling) fudomekpo nutome"
+ },
+ "CO": {
+ "name": "Kolombia nutome"
+ },
+ "KM": {
+ "name": "Komoros nutome"
+ },
+ "CG": {
+ "name": "Kongo Brazzaville nutome"
+ },
+ "CD": {
+ "name": "Kongo Kinshasa nutome"
+ },
+ "CK": {
+ "name": "Kook Æ’udomekpo nutome"
+ },
+ "XK": {
+ "name": "Kosovo"
+ },
+ "CR": {
+ "name": "Kosta Rika nutome"
+ },
+ "CI": {
+ "name": "Kote d’Ivoire nutome"
+ },
+ "CX": {
+ "name": "Kristmas Æ’udomekpo nutome"
+ },
+ "HR": {
+ "name": "Kroatsia nutome"
+ },
+ "CU": {
+ "name": "Kuba nutome"
+ },
+ "CW": {
+ "name": "Kurakao nutome"
+ },
+ "KW": {
+ "name": "Kuwait nutome"
+ },
+ "LA": {
+ "name": "Laos nutome"
+ },
+ "LV": {
+ "name": "Latvia nutome"
+ },
+ "LU": {
+ "name": "Lazembɔg nutome"
+ },
+ "LB": {
+ "name": "Lebanɔn nutome"
+ },
+ "LS": {
+ "name": "Lɛsoto nutome"
+ },
+ "LR": {
+ "name": "Liberia nutome"
+ },
+ "LY": {
+ "name": "Libya nutome"
+ },
+ "LI": {
+ "name": "Litsenstein nutome"
+ },
+ "LT": {
+ "name": "Lituania nutome"
+ },
+ "MO": {
+ "name": "Macau SAR Tsaina nutome"
+ },
+ "MG": {
+ "name": "Madagaska nutome"
+ },
+ "MK": {
+ "name": "Makedonia nutome"
+ },
+ "MW": {
+ "name": "Malawi nutome"
+ },
+ "MY": {
+ "name": "Malaysia nutome"
+ },
+ "MV": {
+ "name": "maldivesdukÉ”"
+ },
+ "ML": {
+ "name": "Mali nutome"
+ },
+ "MT": {
+ "name": "Malta nutome"
+ },
+ "MH": {
+ "name": "Marshal Æ’udomekpowo nutome"
+ },
+ "MQ": {
+ "name": "Martiniki nutome"
+ },
+ "MR": {
+ "name": "Mauritania nutome"
+ },
+ "MU": {
+ "name": "mauritiusdukÉ”"
+ },
+ "YT": {
+ "name": "Mayotte nutome"
+ },
+ "MX": {
+ "name": "Meksico nutome"
+ },
+ "FM": {
+ "name": "Mikronesia nutome"
+ },
+ "MD": {
+ "name": "Moldova nutome"
+ },
+ "MC": {
+ "name": "Monako nutome"
+ },
+ "MN": {
+ "name": "Mongolia nutome"
+ },
+ "ME": {
+ "name": "Montenegro nutome"
+ },
+ "MS": {
+ "name": "Montserrat nutome"
+ },
+ "MA": {
+ "name": "Moroko nutome"
+ },
+ "MZ": {
+ "name": "Mozambiki nutome"
+ },
+ "MM": {
+ "name": "Myanmar (Burma) nutome"
+ },
+ "NA": {
+ "name": "Namibia nutome"
+ },
+ "NR": {
+ "name": "Nauru nutome"
+ },
+ "NL": {
+ "name": "Nedalands nutome"
+ },
+ "NP": {
+ "name": "Nepal nutome"
+ },
+ "NC": {
+ "name": "New Kaledonia nutome"
+ },
+ "NZ": {
+ "name": "New Zealand nutome"
+ },
+ "NI": {
+ "name": "NicaraguadukÉ”"
+ },
+ "NE": {
+ "name": "Niger nutome"
+ },
+ "NG": {
+ "name": "Nigeria nutome"
+ },
+ "NU": {
+ "name": "Niue nutome"
+ },
+ "NF": {
+ "name": "Norfolk Æ’udomekpo nutome"
+ },
+ "NO": {
+ "name": "Norway nutome"
+ },
+ "OM": {
+ "name": "Oman nutome"
+ },
+ "PK": {
+ "name": "Pakistan nutome"
+ },
+ "PW": {
+ "name": "Palau nutome"
+ },
+ "PS": {
+ "name": "Palestinia nutome"
+ },
+ "PA": {
+ "name": "Panama nutome"
+ },
+ "PG": {
+ "name": "Papua New Gini nutome"
+ },
+ "PY": {
+ "name": "Paragua nutome"
+ },
+ "PE": {
+ "name": "Peru nutome"
+ },
+ "PN": {
+ "name": "Pitkairn Æ’udomekpo nutome"
+ },
+ "PL": {
+ "name": "Poland nutome"
+ },
+ "PT": {
+ "name": "Portugal nutome"
+ },
+ "PR": {
+ "name": "Puerto Riko nutome"
+ },
+ "RE": {
+ "name": "Réunion nutome"
+ },
+ "RO": {
+ "name": "Romania nutome"
+ },
+ "RU": {
+ "name": "Russia nutome"
+ },
+ "RW": {
+ "name": "Rwanda nutome"
+ },
+ "BL": {
+ "name": "Saint Barthélemy nutome"
+ },
+ "SH": {
+ "name": "Saint Helena nutome"
+ },
+ "KN": {
+ "name": "Saint Kitis kple Nevis nutome"
+ },
+ "LC": {
+ "name": "Saint Lusia nutome"
+ },
+ "MF": {
+ "name": "Saint Martin nutome"
+ },
+ "PM": {
+ "name": "Saint Pierre kple Mikelɔn nutome"
+ },
+ "VC": {
+ "name": "Saint Vincent kple Grenadine nutome"
+ },
+ "CY": {
+ "name": "Saiprus nutome"
+ },
+ "WS": {
+ "name": "Samoa nutome"
+ },
+ "SM": {
+ "name": "San Marino nutome"
+ },
+ "ST": {
+ "name": "São Tomé kple Príncipe nutome"
+ },
+ "SA": {
+ "name": "Saudi Arabia nutome"
+ },
+ "SN": {
+ "name": "Senegal nutome"
+ },
+ "RS": {
+ "name": "Serbia nutome"
+ },
+ "SC": {
+ "name": "Seshɛls nutome"
+ },
+ "SL": {
+ "name": "Sierra Leone nutome"
+ },
+ "SG": {
+ "name": "Singapɔr nutome"
+ },
+ "SX": {
+ "name": "Sint Maarten nutome"
+ },
+ "SY": {
+ "name": "Siria nutome"
+ },
+ "SK": {
+ "name": "Slovakia nutome"
+ },
+ "SI": {
+ "name": "Slovenia nutome"
+ },
+ "SB": {
+ "name": "Solomon Æ’udomekpowo nutome"
+ },
+ "SO": {
+ "name": "Somalia nutome"
+ },
+ "ES": {
+ "name": "Spania nutome"
+ },
+ "LK": {
+ "name": "Sri Lanka nutome"
+ },
+ "SD": {
+ "name": "Sudan nutome"
+ },
+ "SR": {
+ "name": "Suriname nutome"
+ },
+ "SJ": {
+ "name": "Svalbard kple Yan Mayen nutome"
+ },
+ "SZ": {
+ "name": "Swaziland nutome"
+ },
+ "SE": {
+ "name": "Sweden nutome"
+ },
+ "CH": {
+ "name": "Switzerland nutome"
+ },
+ "TH": {
+ "name": "Tailand nutome"
+ },
+ "TW": {
+ "name": "Taiwan nutome"
+ },
+ "TJ": {
+ "name": "Tajikistan nutome"
+ },
+ "TZ": {
+ "name": "Tanzania nutome"
+ },
+ "TR": {
+ "name": "Tɛki nutome"
+ },
+ "TM": {
+ "name": "Tɛkmenistan nutome"
+ },
+ "TC": {
+ "name": "Tɛks kple Kaikos ƒudomekpowo nutome"
+ },
+ "TL": {
+ "name": "Timor-Leste nutome"
+ },
+ "CF": {
+ "name": "Titina Afrika repɔblik nutome"
+ },
+ "TG": {
+ "name": "Togo nutome"
+ },
+ "TK": {
+ "name": "Tokelau nutome"
+ },
+ "TO": {
+ "name": "Tonga nutome"
+ },
+ "TT": {
+ "name": "Trinidad kple Tobago nutome"
+ },
+ "TA": {
+ "name": "Tristan da Kunha nutome"
+ },
+ "TD": {
+ "name": "Tsad nutome"
+ },
+ "CN": {
+ "name": "Tsaina nutome"
+ },
+ "CZ": {
+ "name": "Tsɛk repɔblik nutome"
+ },
+ "CL": {
+ "name": "Tsile nutome"
+ },
+ "TN": {
+ "name": "Tunisia nutome"
+ },
+ "TV": {
+ "name": "Tuvalu nutome"
+ },
+ "UM": {
+ "name": "U.S. Minor Outlaying Æ’udomekpowo nutome"
+ },
+ "VI": {
+ "name": "U.S. Vɛrgin ƒudomekpowo nutome"
+ },
+ "UG": {
+ "name": "Uganda nutome"
+ },
+ "UA": {
+ "name": "Ukraine nutome"
+ },
+ "AE": {
+ "name": "United Arab Emirates nutome"
+ },
+ "GB": {
+ "name": "United Kingdom nutome"
+ },
+ "UY": {
+ "name": "uruguaydukÉ”"
+ },
+ "US": {
+ "name": "USA nutome"
+ },
+ "UZ": {
+ "name": "Uzbekistan nutome"
+ },
+ "VU": {
+ "name": "Vanuatu nutome"
+ },
+ "VA": {
+ "name": "Vatikandu nutome"
+ },
+ "VE": {
+ "name": "Venezuela nutome"
+ },
+ "VN": {
+ "name": "Vietnam nutome"
+ },
+ "WF": {
+ "name": "Wallis kple Futuna nutome"
+ },
+ "YE": {
+ "name": "Yemen nutome"
+ },
+ "JO": {
+ "name": "Yordan nutome"
+ },
+ "ZM": {
+ "name": "Zambia nutome"
+ },
+ "ZW": {
+ "name": "Zimbabwe nutome"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/country/el.json b/library/intl/resources/country/el.json
new file mode 100644
index 000000000..807ae358d
--- /dev/null
+++ b/library/intl/resources/country/el.json
@@ -0,0 +1,761 @@
+{
+ "SH": {
+ "name": "Αγία Ελένη"
+ },
+ "LC": {
+ "name": "Αγία Λουκία"
+ },
+ "BL": {
+ "name": "Άγιος ΒαÏθολομαίος"
+ },
+ "VC": {
+ "name": "Άγιος Βικέντιος και ΓÏεναδίνες"
+ },
+ "SM": {
+ "name": "Άγιος ΜαÏίνος"
+ },
+ "MF": {
+ "name": "Άγιος ΜαÏτίνος (Γαλλικό τμήμα)"
+ },
+ "SX": {
+ "name": "Άγιος ΜαÏτίνος (Ολλανδικό τμήμα)"
+ },
+ "KN": {
+ "name": "Άγιος ΧÏιστόφοÏος και Îέβις"
+ },
+ "AZ": {
+ "name": "ΑζεÏμπαϊτζάν"
+ },
+ "EG": {
+ "name": "Αίγυπτος"
+ },
+ "ET": {
+ "name": "Αιθιοπία"
+ },
+ "HT": {
+ "name": "Αϊτή"
+ },
+ "CI": {
+ "name": "Ακτή ΕλεφαντοστοÏ"
+ },
+ "AL": {
+ "name": "Αλβανία"
+ },
+ "DZ": {
+ "name": "ΑλγεÏία"
+ },
+ "VI": {
+ "name": "ΑμεÏικανικές ΠαÏθένοι Îήσοι"
+ },
+ "AS": {
+ "name": "ΑμεÏικανική Σαμόα"
+ },
+ "AO": {
+ "name": "Ανγκόλα"
+ },
+ "AI": {
+ "name": "Ανγκουίλα"
+ },
+ "AD": {
+ "name": "ΑνδόÏα"
+ },
+ "AQ": {
+ "name": "ΑνταÏκτική"
+ },
+ "AG": {
+ "name": "Αντίγκουα και ΜπαÏμποÏντα"
+ },
+ "UM": {
+ "name": "ΑπομακÏυσμένες Îησίδες Η.Π.Α."
+ },
+ "AR": {
+ "name": "ΑÏγεντινή"
+ },
+ "AM": {
+ "name": "ΑÏμενία"
+ },
+ "AW": {
+ "name": "ΑÏοÏμπα"
+ },
+ "AU": {
+ "name": "ΑυστÏαλία"
+ },
+ "AT": {
+ "name": "ΑυστÏία"
+ },
+ "AF": {
+ "name": "Αφγανιστάν"
+ },
+ "VU": {
+ "name": "Βανουάτου"
+ },
+ "VA": {
+ "name": "Βατικανό"
+ },
+ "BE": {
+ "name": "Βέλγιο"
+ },
+ "VE": {
+ "name": "Βενεζουέλα"
+ },
+ "BM": {
+ "name": "ΒεÏμοÏδες"
+ },
+ "VN": {
+ "name": "Βιετνάμ"
+ },
+ "BO": {
+ "name": "Βολιβία"
+ },
+ "KP": {
+ "name": "Î’ÏŒÏεια ΚοÏέα"
+ },
+ "BA": {
+ "name": "Βοσνία - ΕÏζεγοβίνη"
+ },
+ "BG": {
+ "name": "ΒουλγαÏία"
+ },
+ "BR": {
+ "name": "Î’Ïαζιλία"
+ },
+ "IO": {
+ "name": "Î’Ïετανικά Εδάφη Î™Î½Î´Î¹ÎºÎ¿Ï Î©ÎºÎµÎ±Î½Î¿Ï"
+ },
+ "VG": {
+ "name": "Î’Ïετανικές ΠαÏθένοι Îήσοι"
+ },
+ "FR": {
+ "name": "Γαλλία"
+ },
+ "TF": {
+ "name": "Γαλλικές πεÏιοχές του νοτίου ημισφαιÏίου"
+ },
+ "GF": {
+ "name": "Γαλλική Γουιάνα"
+ },
+ "PF": {
+ "name": "Γαλλική Πολυνησία"
+ },
+ "DE": {
+ "name": "ΓεÏμανία"
+ },
+ "GE": {
+ "name": "ΓεωÏγία"
+ },
+ "GI": {
+ "name": "ΓιβÏαλτάÏ"
+ },
+ "GM": {
+ "name": "Γκάμπια"
+ },
+ "GA": {
+ "name": "Γκαμπόν"
+ },
+ "GH": {
+ "name": "Γκάνα"
+ },
+ "GG": {
+ "name": "ΓκέÏνζι"
+ },
+ "GU": {
+ "name": "Γκουάμ"
+ },
+ "GP": {
+ "name": "ΓουαδελοÏπη"
+ },
+ "GT": {
+ "name": "Γουατεμάλα"
+ },
+ "GY": {
+ "name": "Γουιάνα"
+ },
+ "GN": {
+ "name": "Γουινέα"
+ },
+ "GW": {
+ "name": "Γουινέα Μπισάου"
+ },
+ "GD": {
+ "name": "ΓÏενάδα"
+ },
+ "GL": {
+ "name": "ΓÏοιλανδία"
+ },
+ "DK": {
+ "name": "Δανία"
+ },
+ "DO": {
+ "name": "Δομινικανή ΔημοκÏατία"
+ },
+ "EH": {
+ "name": "Δυτική ΣαχάÏα"
+ },
+ "EC": {
+ "name": "ΕκουαδόÏ"
+ },
+ "SV": {
+ "name": "Ελ ΣαλβαδόÏ"
+ },
+ "CH": {
+ "name": "Ελβετία"
+ },
+ "GR": {
+ "name": "Ελλάδα"
+ },
+ "ER": {
+ "name": "ΕÏυθÏαία"
+ },
+ "EE": {
+ "name": "Εσθονία"
+ },
+ "ZM": {
+ "name": "Ζάμπια"
+ },
+ "ZW": {
+ "name": "Ζιμπάμπουε"
+ },
+ "AE": {
+ "name": "Ηνωμένα ΑÏαβικά ΕμιÏάτα"
+ },
+ "US": {
+ "name": "Ηνωμένες Πολιτείες"
+ },
+ "GB": {
+ "name": "Ηνωμένο Βασίλειο"
+ },
+ "EA": {
+ "name": "ΘεοÏτα και Μελίλα"
+ },
+ "JP": {
+ "name": "Ιαπωνία"
+ },
+ "IN": {
+ "name": "Ινδία"
+ },
+ "ID": {
+ "name": "Ινδονησία"
+ },
+ "JO": {
+ "name": "ΙοÏδανία"
+ },
+ "IQ": {
+ "name": "ΙÏάκ"
+ },
+ "IR": {
+ "name": "ΙÏάν"
+ },
+ "IE": {
+ "name": "ΙÏλανδία"
+ },
+ "GQ": {
+ "name": "ΙσημεÏινή Γουινέα"
+ },
+ "IS": {
+ "name": "Ισλανδία"
+ },
+ "ES": {
+ "name": "Ισπανία"
+ },
+ "IL": {
+ "name": "ΙσÏαήλ"
+ },
+ "IT": {
+ "name": "Ιταλία"
+ },
+ "KZ": {
+ "name": "Καζακστάν"
+ },
+ "CM": {
+ "name": "ΚαμεÏοÏν"
+ },
+ "KH": {
+ "name": "Καμπότζη"
+ },
+ "CA": {
+ "name": "Καναδάς"
+ },
+ "IC": {
+ "name": "ΚανάÏιοι Îήσοι"
+ },
+ "QA": {
+ "name": "ΚατάÏ"
+ },
+ "CF": {
+ "name": "ΚεντÏοαφÏικανική ΔημοκÏατία"
+ },
+ "KE": {
+ "name": "Κένυα"
+ },
+ "CN": {
+ "name": "Κίνα"
+ },
+ "KG": {
+ "name": "ΚιÏγιστάν"
+ },
+ "KI": {
+ "name": "ΚιÏιμπάτι"
+ },
+ "CO": {
+ "name": "Κολομβία"
+ },
+ "KM": {
+ "name": "ΚομόÏες"
+ },
+ "CD": {
+ "name": "Κονγκό - Κινσάσα"
+ },
+ "CG": {
+ "name": "Κονγκό - ΜπÏαζαβίλ"
+ },
+ "XK": {
+ "name": "Κόσοβο"
+ },
+ "CR": {
+ "name": "Κόστα Ρίκα"
+ },
+ "CU": {
+ "name": "ΚοÏβα"
+ },
+ "KW": {
+ "name": "Κουβέιτ"
+ },
+ "CW": {
+ "name": "ΚουÏασάο"
+ },
+ "HR": {
+ "name": "ΚÏοατία"
+ },
+ "CY": {
+ "name": "ΚÏÏ€Ïος"
+ },
+ "LA": {
+ "name": "Λάος"
+ },
+ "LS": {
+ "name": "Λεσότο"
+ },
+ "LV": {
+ "name": "Λετονία"
+ },
+ "BY": {
+ "name": "ΛευκοÏωσία"
+ },
+ "LB": {
+ "name": "Λίβανος"
+ },
+ "LR": {
+ "name": "ΛιβεÏία"
+ },
+ "LY": {
+ "name": "ΛιβÏη"
+ },
+ "LT": {
+ "name": "Λιθουανία"
+ },
+ "LI": {
+ "name": "Λιχτενστάιν"
+ },
+ "LU": {
+ "name": "ΛουξεμβοÏÏγο"
+ },
+ "YT": {
+ "name": "Μαγιότ"
+ },
+ "MG": {
+ "name": "ΜαδαγασκάÏη"
+ },
+ "MO": {
+ "name": "Μακάο ΕΔΠ Κίνας"
+ },
+ "MY": {
+ "name": "Μαλαισία"
+ },
+ "MW": {
+ "name": "Μαλάουι"
+ },
+ "MV": {
+ "name": "Μαλδίβες"
+ },
+ "ML": {
+ "name": "Μάλι"
+ },
+ "MT": {
+ "name": "Μάλτα"
+ },
+ "MA": {
+ "name": "ΜαÏόκο"
+ },
+ "MQ": {
+ "name": "ΜαÏτινίκα"
+ },
+ "MU": {
+ "name": "ΜαυÏίκιος"
+ },
+ "MR": {
+ "name": "ΜαυÏιτανία"
+ },
+ "ME": {
+ "name": "ΜαυÏοβοÏνιο"
+ },
+ "MX": {
+ "name": "Μεξικό"
+ },
+ "MM": {
+ "name": "ΜιανμάÏ\/ΒιÏμανία"
+ },
+ "FM": {
+ "name": "ΜικÏονησία"
+ },
+ "MN": {
+ "name": "Μογγολία"
+ },
+ "MZ": {
+ "name": "Μοζαμβίκη"
+ },
+ "MD": {
+ "name": "Μολδαβία"
+ },
+ "MC": {
+ "name": "Μονακό"
+ },
+ "MS": {
+ "name": "ΜονσεÏάτ"
+ },
+ "BD": {
+ "name": "Μπανγκλαντές"
+ },
+ "BB": {
+ "name": "ΜπαÏμπάντος"
+ },
+ "BS": {
+ "name": "Μπαχάμες"
+ },
+ "BH": {
+ "name": "ΜπαχÏέιν"
+ },
+ "BZ": {
+ "name": "Μπελίζ"
+ },
+ "BJ": {
+ "name": "Μπενίν"
+ },
+ "BW": {
+ "name": "Μποτσουάνα"
+ },
+ "BF": {
+ "name": "ΜπουÏκίνα Φάσο"
+ },
+ "BI": {
+ "name": "ΜπουÏοÏντι"
+ },
+ "BT": {
+ "name": "Μπουτάν"
+ },
+ "BN": {
+ "name": "ΜπÏουνέι"
+ },
+ "NA": {
+ "name": "Îαμίμπια"
+ },
+ "NR": {
+ "name": "ÎαουÏοÏ"
+ },
+ "NZ": {
+ "name": "Îέα Ζηλανδία"
+ },
+ "NC": {
+ "name": "Îέα Καληδονία"
+ },
+ "NP": {
+ "name": "Îεπάλ"
+ },
+ "MP": {
+ "name": "Îήσοι Î’ÏŒÏειες ΜαÏιάνες"
+ },
+ "KY": {
+ "name": "Îήσοι Κάιμαν"
+ },
+ "CC": {
+ "name": "Îήσοι Κόκος (Κίλινγκ)"
+ },
+ "CK": {
+ "name": "Îήσοι Κουκ"
+ },
+ "MH": {
+ "name": "Îήσοι ΜάÏσαλ"
+ },
+ "GS": {
+ "name": "Îήσοι Îότια ΓεωÏγία και Îότιες Σάντουιτς"
+ },
+ "AX": {
+ "name": "Îήσοι Όλαντ"
+ },
+ "PN": {
+ "name": "Îήσοι ΠίτκεÏν"
+ },
+ "SB": {
+ "name": "Îήσοι Σολομώντος"
+ },
+ "TC": {
+ "name": "Îήσοι ΤεÏκ και Κάικος"
+ },
+ "FO": {
+ "name": "Îήσοι ΦεÏόες"
+ },
+ "FK": {
+ "name": "Îήσοι Φόκλαντ"
+ },
+ "AC": {
+ "name": "Îήσος Ασενσιόν"
+ },
+ "IM": {
+ "name": "Îήσος Μαν"
+ },
+ "NF": {
+ "name": "Îήσος ÎÏŒÏφολκ"
+ },
+ "CX": {
+ "name": "Îήσος των ΧÏιστουγέννων"
+ },
+ "NE": {
+ "name": "ÎίγηÏας"
+ },
+ "NG": {
+ "name": "ÎιγηÏία"
+ },
+ "NI": {
+ "name": "ÎικαÏάγουα"
+ },
+ "NU": {
+ "name": "ÎιοÏε"
+ },
+ "NO": {
+ "name": "ÎοÏβηγία"
+ },
+ "ZA": {
+ "name": "Îότια ΑφÏική"
+ },
+ "KR": {
+ "name": "Îότια ΚοÏέα"
+ },
+ "SS": {
+ "name": "Îότιο Σουδάν"
+ },
+ "DG": {
+ "name": "Îτιέγκο ΓκαÏσία"
+ },
+ "DM": {
+ "name": "Îτομίνικα"
+ },
+ "NL": {
+ "name": "Ολλανδία"
+ },
+ "BQ": {
+ "name": "Ολλανδία ΚαÏαϊβικής"
+ },
+ "OM": {
+ "name": "Ομάν"
+ },
+ "HN": {
+ "name": "ΟνδοÏÏα"
+ },
+ "WF": {
+ "name": "Ουάλις και ΦουτοÏνα"
+ },
+ "HU": {
+ "name": "ΟυγγαÏία"
+ },
+ "UG": {
+ "name": "Ουγκάντα"
+ },
+ "UZ": {
+ "name": "Ουζμπεκιστάν"
+ },
+ "UA": {
+ "name": "ΟυκÏανία"
+ },
+ "UY": {
+ "name": "ΟυÏουγουάη"
+ },
+ "PK": {
+ "name": "Πακιστάν"
+ },
+ "PS": {
+ "name": "Παλαιστινιακά Εδάφη"
+ },
+ "PW": {
+ "name": "Παλάου"
+ },
+ "PA": {
+ "name": "Παναμάς"
+ },
+ "PG": {
+ "name": "ΠαποÏα Îέα Γουινέα"
+ },
+ "PY": {
+ "name": "ΠαÏαγουάη"
+ },
+ "PE": {
+ "name": "ΠεÏοÏ"
+ },
+ "PL": {
+ "name": "Πολωνία"
+ },
+ "PT": {
+ "name": "ΠοÏτογαλία"
+ },
+ "PR": {
+ "name": "ΠουέÏτο Ρίκο"
+ },
+ "CV": {
+ "name": "ΠÏάσινο ΑκÏωτήÏιο"
+ },
+ "MK": {
+ "name": "ΠÏώην Γιουγκοσλαβική ΔημοκÏατία της Μακεδονίας"
+ },
+ "RE": {
+ "name": "Ρεϊνιόν"
+ },
+ "RW": {
+ "name": "Ρουάντα"
+ },
+ "RO": {
+ "name": "Ρουμανία"
+ },
+ "RU": {
+ "name": "Ρωσία"
+ },
+ "WS": {
+ "name": "Σαμόα"
+ },
+ "ST": {
+ "name": "Σάο Τομέ και ΠÏίνσιπε"
+ },
+ "SA": {
+ "name": "Σαουδική ΑÏαβία"
+ },
+ "SJ": {
+ "name": "ΣβάλμπαÏντ και Γιαν Μαγιέν"
+ },
+ "PM": {
+ "name": "Σεν Î Î¹ÎµÏ ÎºÎ±Î¹ Μικελόν"
+ },
+ "SN": {
+ "name": "Σενεγάλη"
+ },
+ "RS": {
+ "name": "ΣεÏβία"
+ },
+ "SC": {
+ "name": "Σεϋχέλλες"
+ },
+ "SG": {
+ "name": "ΣιγκαποÏÏη"
+ },
+ "SL": {
+ "name": "ΣιέÏα Λεόνε"
+ },
+ "SK": {
+ "name": "Σλοβακία"
+ },
+ "SI": {
+ "name": "Σλοβενία"
+ },
+ "SO": {
+ "name": "Σομαλία"
+ },
+ "SZ": {
+ "name": "Σουαζιλάνδη"
+ },
+ "SD": {
+ "name": "Σουδάν"
+ },
+ "SE": {
+ "name": "Σουηδία"
+ },
+ "SR": {
+ "name": "ΣουÏινάμ"
+ },
+ "LK": {
+ "name": "ΣÏι Λάνκα"
+ },
+ "SY": {
+ "name": "ΣυÏία"
+ },
+ "TW": {
+ "name": "Ταϊβάν"
+ },
+ "TH": {
+ "name": "Ταϊλάνδη"
+ },
+ "TZ": {
+ "name": "Τανζανία"
+ },
+ "TJ": {
+ "name": "Τατζικιστάν"
+ },
+ "JM": {
+ "name": "Τζαμάικα"
+ },
+ "JE": {
+ "name": "ΤζέÏζι"
+ },
+ "DJ": {
+ "name": "Τζιμπουτί"
+ },
+ "TL": {
+ "name": "ΤιμόÏ-Λέστε"
+ },
+ "TG": {
+ "name": "Τόγκο"
+ },
+ "TK": {
+ "name": "Τοκελάου"
+ },
+ "TO": {
+ "name": "Τόνγκα"
+ },
+ "TV": {
+ "name": "ΤουβαλοÏ"
+ },
+ "TR": {
+ "name": "ΤουÏκία"
+ },
+ "TM": {
+ "name": "ΤουÏκμενιστάν"
+ },
+ "TT": {
+ "name": "ΤÏινιντάντ και Τομπάγκο"
+ },
+ "TA": {
+ "name": "ΤÏιστάν ντα ΚοÏνια"
+ },
+ "TD": {
+ "name": "Τσαντ"
+ },
+ "CZ": {
+ "name": "Τσεχική ΔημοκÏατία"
+ },
+ "TN": {
+ "name": "Τυνησία"
+ },
+ "YE": {
+ "name": "Υεμένη"
+ },
+ "PH": {
+ "name": "Φιλιππίνες"
+ },
+ "FI": {
+ "name": "Φινλανδία"
+ },
+ "FJ": {
+ "name": "Φίτζι"
+ },
+ "CL": {
+ "name": "Χιλή"
+ },
+ "HK": {
+ "name": "Χονγκ Κονγκ ΕΔΠ Κίνας"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/country/en-AU.json b/library/intl/resources/country/en-AU.json
new file mode 100644
index 000000000..b75648523
--- /dev/null
+++ b/library/intl/resources/country/en-AU.json
@@ -0,0 +1,761 @@
+{
+ "AF": {
+ "name": "Afghanistan"
+ },
+ "AX": {
+ "name": "Ã…land Islands"
+ },
+ "AL": {
+ "name": "Albania"
+ },
+ "DZ": {
+ "name": "Algeria"
+ },
+ "AS": {
+ "name": "American Samoa"
+ },
+ "AD": {
+ "name": "Andorra"
+ },
+ "AO": {
+ "name": "Angola"
+ },
+ "AI": {
+ "name": "Anguilla"
+ },
+ "AQ": {
+ "name": "Antarctica"
+ },
+ "AG": {
+ "name": "Antigua and Barbuda"
+ },
+ "AR": {
+ "name": "Argentina"
+ },
+ "AM": {
+ "name": "Armenia"
+ },
+ "AW": {
+ "name": "Aruba"
+ },
+ "AC": {
+ "name": "Ascension Island"
+ },
+ "AU": {
+ "name": "Australia"
+ },
+ "AT": {
+ "name": "Austria"
+ },
+ "AZ": {
+ "name": "Azerbaijan"
+ },
+ "BS": {
+ "name": "Bahamas"
+ },
+ "BH": {
+ "name": "Bahrain"
+ },
+ "BD": {
+ "name": "Bangladesh"
+ },
+ "BB": {
+ "name": "Barbados"
+ },
+ "BY": {
+ "name": "Belarus"
+ },
+ "BE": {
+ "name": "Belgium"
+ },
+ "BZ": {
+ "name": "Belize"
+ },
+ "BJ": {
+ "name": "Benin"
+ },
+ "BM": {
+ "name": "Bermuda"
+ },
+ "BT": {
+ "name": "Bhutan"
+ },
+ "BO": {
+ "name": "Bolivia"
+ },
+ "BA": {
+ "name": "Bosnia and Herzegovina"
+ },
+ "BW": {
+ "name": "Botswana"
+ },
+ "BR": {
+ "name": "Brazil"
+ },
+ "IO": {
+ "name": "British Indian Ocean Territory"
+ },
+ "VG": {
+ "name": "British Virgin Islands"
+ },
+ "BN": {
+ "name": "Brunei"
+ },
+ "BG": {
+ "name": "Bulgaria"
+ },
+ "BF": {
+ "name": "Burkina Faso"
+ },
+ "BI": {
+ "name": "Burundi"
+ },
+ "KH": {
+ "name": "Cambodia"
+ },
+ "CM": {
+ "name": "Cameroon"
+ },
+ "CA": {
+ "name": "Canada"
+ },
+ "IC": {
+ "name": "Canary Islands"
+ },
+ "CV": {
+ "name": "Cape Verde"
+ },
+ "BQ": {
+ "name": "Caribbean Netherlands"
+ },
+ "KY": {
+ "name": "Cayman Islands"
+ },
+ "CF": {
+ "name": "Central African Republic"
+ },
+ "EA": {
+ "name": "Ceuta and Melilla"
+ },
+ "TD": {
+ "name": "Chad"
+ },
+ "CL": {
+ "name": "Chile"
+ },
+ "CN": {
+ "name": "China"
+ },
+ "CX": {
+ "name": "Christmas Island"
+ },
+ "CC": {
+ "name": "Cocos (Keeling) Islands"
+ },
+ "CO": {
+ "name": "Colombia"
+ },
+ "KM": {
+ "name": "Comoros"
+ },
+ "CG": {
+ "name": "Congo - Brazzaville"
+ },
+ "CD": {
+ "name": "Congo - Kinshasa"
+ },
+ "CK": {
+ "name": "Cook Islands"
+ },
+ "CR": {
+ "name": "Costa Rica"
+ },
+ "CI": {
+ "name": "Côte d’Ivoire"
+ },
+ "HR": {
+ "name": "Croatia"
+ },
+ "CU": {
+ "name": "Cuba"
+ },
+ "CW": {
+ "name": "Curaçao"
+ },
+ "CY": {
+ "name": "Cyprus"
+ },
+ "CZ": {
+ "name": "Czech Republic"
+ },
+ "DK": {
+ "name": "Denmark"
+ },
+ "DG": {
+ "name": "Diego Garcia"
+ },
+ "DJ": {
+ "name": "Djibouti"
+ },
+ "DM": {
+ "name": "Dominica"
+ },
+ "DO": {
+ "name": "Dominican Republic"
+ },
+ "EC": {
+ "name": "Ecuador"
+ },
+ "EG": {
+ "name": "Egypt"
+ },
+ "SV": {
+ "name": "El Salvador"
+ },
+ "GQ": {
+ "name": "Equatorial Guinea"
+ },
+ "ER": {
+ "name": "Eritrea"
+ },
+ "EE": {
+ "name": "Estonia"
+ },
+ "ET": {
+ "name": "Ethiopia"
+ },
+ "FK": {
+ "name": "Falkland Islands"
+ },
+ "FO": {
+ "name": "Faroe Islands"
+ },
+ "FJ": {
+ "name": "Fiji"
+ },
+ "FI": {
+ "name": "Finland"
+ },
+ "FR": {
+ "name": "France"
+ },
+ "GF": {
+ "name": "French Guiana"
+ },
+ "PF": {
+ "name": "French Polynesia"
+ },
+ "TF": {
+ "name": "French Southern Territories"
+ },
+ "GA": {
+ "name": "Gabon"
+ },
+ "GM": {
+ "name": "Gambia"
+ },
+ "GE": {
+ "name": "Georgia"
+ },
+ "DE": {
+ "name": "Germany"
+ },
+ "GH": {
+ "name": "Ghana"
+ },
+ "GI": {
+ "name": "Gibraltar"
+ },
+ "GR": {
+ "name": "Greece"
+ },
+ "GL": {
+ "name": "Greenland"
+ },
+ "GD": {
+ "name": "Grenada"
+ },
+ "GP": {
+ "name": "Guadeloupe"
+ },
+ "GU": {
+ "name": "Guam"
+ },
+ "GT": {
+ "name": "Guatemala"
+ },
+ "GG": {
+ "name": "Guernsey"
+ },
+ "GN": {
+ "name": "Guinea"
+ },
+ "GW": {
+ "name": "Guinea-Bissau"
+ },
+ "GY": {
+ "name": "Guyana"
+ },
+ "HT": {
+ "name": "Haiti"
+ },
+ "HN": {
+ "name": "Honduras"
+ },
+ "HK": {
+ "name": "Hong Kong SAR China"
+ },
+ "HU": {
+ "name": "Hungary"
+ },
+ "IS": {
+ "name": "Iceland"
+ },
+ "IN": {
+ "name": "India"
+ },
+ "ID": {
+ "name": "Indonesia"
+ },
+ "IR": {
+ "name": "Iran"
+ },
+ "IQ": {
+ "name": "Iraq"
+ },
+ "IE": {
+ "name": "Ireland"
+ },
+ "IM": {
+ "name": "Isle of Man"
+ },
+ "IL": {
+ "name": "Israel"
+ },
+ "IT": {
+ "name": "Italy"
+ },
+ "JM": {
+ "name": "Jamaica"
+ },
+ "JP": {
+ "name": "Japan"
+ },
+ "JE": {
+ "name": "Jersey"
+ },
+ "JO": {
+ "name": "Jordan"
+ },
+ "KZ": {
+ "name": "Kazakhstan"
+ },
+ "KE": {
+ "name": "Kenya"
+ },
+ "KI": {
+ "name": "Kiribati"
+ },
+ "XK": {
+ "name": "Kosovo"
+ },
+ "KW": {
+ "name": "Kuwait"
+ },
+ "KG": {
+ "name": "Kyrgyzstan"
+ },
+ "LA": {
+ "name": "Laos"
+ },
+ "LV": {
+ "name": "Latvia"
+ },
+ "LB": {
+ "name": "Lebanon"
+ },
+ "LS": {
+ "name": "Lesotho"
+ },
+ "LR": {
+ "name": "Liberia"
+ },
+ "LY": {
+ "name": "Libya"
+ },
+ "LI": {
+ "name": "Liechtenstein"
+ },
+ "LT": {
+ "name": "Lithuania"
+ },
+ "LU": {
+ "name": "Luxembourg"
+ },
+ "MO": {
+ "name": "Macau SAR China"
+ },
+ "MK": {
+ "name": "Macedonia"
+ },
+ "MG": {
+ "name": "Madagascar"
+ },
+ "MW": {
+ "name": "Malawi"
+ },
+ "MY": {
+ "name": "Malaysia"
+ },
+ "MV": {
+ "name": "Maldives"
+ },
+ "ML": {
+ "name": "Mali"
+ },
+ "MT": {
+ "name": "Malta"
+ },
+ "MH": {
+ "name": "Marshall Islands"
+ },
+ "MQ": {
+ "name": "Martinique"
+ },
+ "MR": {
+ "name": "Mauritania"
+ },
+ "MU": {
+ "name": "Mauritius"
+ },
+ "YT": {
+ "name": "Mayotte"
+ },
+ "MX": {
+ "name": "Mexico"
+ },
+ "FM": {
+ "name": "Micronesia"
+ },
+ "MD": {
+ "name": "Moldova"
+ },
+ "MC": {
+ "name": "Monaco"
+ },
+ "MN": {
+ "name": "Mongolia"
+ },
+ "ME": {
+ "name": "Montenegro"
+ },
+ "MS": {
+ "name": "Montserrat"
+ },
+ "MA": {
+ "name": "Morocco"
+ },
+ "MZ": {
+ "name": "Mozambique"
+ },
+ "MM": {
+ "name": "Myanmar (Burma)"
+ },
+ "NA": {
+ "name": "Namibia"
+ },
+ "NR": {
+ "name": "Nauru"
+ },
+ "NP": {
+ "name": "Nepal"
+ },
+ "NL": {
+ "name": "Netherlands"
+ },
+ "NC": {
+ "name": "New Caledonia"
+ },
+ "NZ": {
+ "name": "New Zealand"
+ },
+ "NI": {
+ "name": "Nicaragua"
+ },
+ "NE": {
+ "name": "Niger"
+ },
+ "NG": {
+ "name": "Nigeria"
+ },
+ "NU": {
+ "name": "Niue"
+ },
+ "NF": {
+ "name": "Norfolk Island"
+ },
+ "KP": {
+ "name": "North Korea"
+ },
+ "MP": {
+ "name": "Northern Mariana Islands"
+ },
+ "NO": {
+ "name": "Norway"
+ },
+ "OM": {
+ "name": "Oman"
+ },
+ "PK": {
+ "name": "Pakistan"
+ },
+ "PW": {
+ "name": "Palau"
+ },
+ "PS": {
+ "name": "Palestinian Territories"
+ },
+ "PA": {
+ "name": "Panama"
+ },
+ "PG": {
+ "name": "Papua New Guinea"
+ },
+ "PY": {
+ "name": "Paraguay"
+ },
+ "PE": {
+ "name": "Peru"
+ },
+ "PH": {
+ "name": "Philippines"
+ },
+ "PN": {
+ "name": "Pitcairn Islands"
+ },
+ "PL": {
+ "name": "Poland"
+ },
+ "PT": {
+ "name": "Portugal"
+ },
+ "PR": {
+ "name": "Puerto Rico"
+ },
+ "QA": {
+ "name": "Qatar"
+ },
+ "RE": {
+ "name": "Réunion"
+ },
+ "RO": {
+ "name": "Romania"
+ },
+ "RU": {
+ "name": "Russia"
+ },
+ "RW": {
+ "name": "Rwanda"
+ },
+ "BL": {
+ "name": "Saint Barthélemy"
+ },
+ "SH": {
+ "name": "Saint Helena"
+ },
+ "KN": {
+ "name": "Saint Kitts and Nevis"
+ },
+ "LC": {
+ "name": "Saint Lucia"
+ },
+ "MF": {
+ "name": "Saint Martin"
+ },
+ "PM": {
+ "name": "Saint Pierre and Miquelon"
+ },
+ "VC": {
+ "name": "Saint Vincent and the Grenadines"
+ },
+ "WS": {
+ "name": "Samoa"
+ },
+ "SM": {
+ "name": "San Marino"
+ },
+ "ST": {
+ "name": "São Tomé and Príncipe"
+ },
+ "SA": {
+ "name": "Saudi Arabia"
+ },
+ "SN": {
+ "name": "Senegal"
+ },
+ "RS": {
+ "name": "Serbia"
+ },
+ "SC": {
+ "name": "Seychelles"
+ },
+ "SL": {
+ "name": "Sierra Leone"
+ },
+ "SG": {
+ "name": "Singapore"
+ },
+ "SX": {
+ "name": "Sint Maarten"
+ },
+ "SK": {
+ "name": "Slovakia"
+ },
+ "SI": {
+ "name": "Slovenia"
+ },
+ "SB": {
+ "name": "Solomon Islands"
+ },
+ "SO": {
+ "name": "Somalia"
+ },
+ "ZA": {
+ "name": "South Africa"
+ },
+ "GS": {
+ "name": "South Georgia and the South Sandwich Islands"
+ },
+ "KR": {
+ "name": "South Korea"
+ },
+ "SS": {
+ "name": "South Sudan"
+ },
+ "ES": {
+ "name": "Spain"
+ },
+ "LK": {
+ "name": "Sri Lanka"
+ },
+ "SD": {
+ "name": "Sudan"
+ },
+ "SR": {
+ "name": "Suriname"
+ },
+ "SJ": {
+ "name": "Svalbard and Jan Mayen"
+ },
+ "SZ": {
+ "name": "Swaziland"
+ },
+ "SE": {
+ "name": "Sweden"
+ },
+ "CH": {
+ "name": "Switzerland"
+ },
+ "SY": {
+ "name": "Syria"
+ },
+ "TW": {
+ "name": "Taiwan"
+ },
+ "TJ": {
+ "name": "Tajikistan"
+ },
+ "TZ": {
+ "name": "Tanzania"
+ },
+ "TH": {
+ "name": "Thailand"
+ },
+ "TL": {
+ "name": "Timor-Leste"
+ },
+ "TG": {
+ "name": "Togo"
+ },
+ "TK": {
+ "name": "Tokelau"
+ },
+ "TO": {
+ "name": "Tonga"
+ },
+ "TT": {
+ "name": "Trinidad and Tobago"
+ },
+ "TA": {
+ "name": "Tristan da Cunha"
+ },
+ "TN": {
+ "name": "Tunisia"
+ },
+ "TR": {
+ "name": "Turkey"
+ },
+ "TM": {
+ "name": "Turkmenistan"
+ },
+ "TC": {
+ "name": "Turks and Caicos Islands"
+ },
+ "TV": {
+ "name": "Tuvalu"
+ },
+ "UM": {
+ "name": "U.S. Minor Outlying Islands"
+ },
+ "VI": {
+ "name": "U.S. Virgin Islands"
+ },
+ "UG": {
+ "name": "Uganda"
+ },
+ "UA": {
+ "name": "Ukraine"
+ },
+ "AE": {
+ "name": "United Arab Emirates"
+ },
+ "GB": {
+ "name": "United Kingdom"
+ },
+ "US": {
+ "name": "United States"
+ },
+ "UY": {
+ "name": "Uruguay"
+ },
+ "UZ": {
+ "name": "Uzbekistan"
+ },
+ "VU": {
+ "name": "Vanuatu"
+ },
+ "VA": {
+ "name": "Vatican City"
+ },
+ "VE": {
+ "name": "Venezuela"
+ },
+ "VN": {
+ "name": "Vietnam"
+ },
+ "WF": {
+ "name": "Wallis and Futuna"
+ },
+ "EH": {
+ "name": "Western Sahara"
+ },
+ "YE": {
+ "name": "Yemen"
+ },
+ "ZM": {
+ "name": "Zambia"
+ },
+ "ZW": {
+ "name": "Zimbabwe"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/country/en-BE.json b/library/intl/resources/country/en-BE.json
new file mode 100644
index 000000000..081d5f4c0
--- /dev/null
+++ b/library/intl/resources/country/en-BE.json
@@ -0,0 +1,761 @@
+{
+ "AF": {
+ "name": "Afghanistan"
+ },
+ "AX": {
+ "name": "Ã…land Islands"
+ },
+ "AL": {
+ "name": "Albania"
+ },
+ "DZ": {
+ "name": "Algeria"
+ },
+ "AS": {
+ "name": "American Samoa"
+ },
+ "AD": {
+ "name": "Andorra"
+ },
+ "AO": {
+ "name": "Angola"
+ },
+ "AI": {
+ "name": "Anguilla"
+ },
+ "AQ": {
+ "name": "Antarctica"
+ },
+ "AG": {
+ "name": "Antigua and Barbuda"
+ },
+ "AR": {
+ "name": "Argentina"
+ },
+ "AM": {
+ "name": "Armenia"
+ },
+ "AW": {
+ "name": "Aruba"
+ },
+ "AC": {
+ "name": "Ascension Island"
+ },
+ "AU": {
+ "name": "Australia"
+ },
+ "AT": {
+ "name": "Austria"
+ },
+ "AZ": {
+ "name": "Azerbaijan"
+ },
+ "BS": {
+ "name": "Bahamas"
+ },
+ "BH": {
+ "name": "Bahrain"
+ },
+ "BD": {
+ "name": "Bangladesh"
+ },
+ "BB": {
+ "name": "Barbados"
+ },
+ "BY": {
+ "name": "Belarus"
+ },
+ "BE": {
+ "name": "Belgium"
+ },
+ "BZ": {
+ "name": "Belize"
+ },
+ "BJ": {
+ "name": "Benin"
+ },
+ "BM": {
+ "name": "Bermuda"
+ },
+ "BT": {
+ "name": "Bhutan"
+ },
+ "BO": {
+ "name": "Bolivia"
+ },
+ "BA": {
+ "name": "Bosnia and Herzegovina"
+ },
+ "BW": {
+ "name": "Botswana"
+ },
+ "BR": {
+ "name": "Brazil"
+ },
+ "IO": {
+ "name": "British Indian Ocean Territory"
+ },
+ "VG": {
+ "name": "British Virgin Islands"
+ },
+ "BN": {
+ "name": "Brunei"
+ },
+ "BG": {
+ "name": "Bulgaria"
+ },
+ "BF": {
+ "name": "Burkina Faso"
+ },
+ "BI": {
+ "name": "Burundi"
+ },
+ "KH": {
+ "name": "Cambodia"
+ },
+ "CM": {
+ "name": "Cameroon"
+ },
+ "CA": {
+ "name": "Canada"
+ },
+ "IC": {
+ "name": "Canary Islands"
+ },
+ "CV": {
+ "name": "Cape Verde"
+ },
+ "BQ": {
+ "name": "Caribbean Netherlands"
+ },
+ "KY": {
+ "name": "Cayman Islands"
+ },
+ "CF": {
+ "name": "Central African Republic"
+ },
+ "EA": {
+ "name": "Ceuta and Melilla"
+ },
+ "TD": {
+ "name": "Chad"
+ },
+ "CL": {
+ "name": "Chile"
+ },
+ "CN": {
+ "name": "China"
+ },
+ "CX": {
+ "name": "Christmas Island"
+ },
+ "CC": {
+ "name": "Cocos (Keeling) Islands"
+ },
+ "CO": {
+ "name": "Colombia"
+ },
+ "KM": {
+ "name": "Comoros"
+ },
+ "CG": {
+ "name": "Congo - Brazzaville"
+ },
+ "CD": {
+ "name": "Congo - Kinshasa"
+ },
+ "CK": {
+ "name": "Cook Islands"
+ },
+ "CR": {
+ "name": "Costa Rica"
+ },
+ "CI": {
+ "name": "Côte d’Ivoire"
+ },
+ "HR": {
+ "name": "Croatia"
+ },
+ "CU": {
+ "name": "Cuba"
+ },
+ "CW": {
+ "name": "Curaçao"
+ },
+ "CY": {
+ "name": "Cyprus"
+ },
+ "CZ": {
+ "name": "Czech Republic"
+ },
+ "DK": {
+ "name": "Denmark"
+ },
+ "DG": {
+ "name": "Diego Garcia"
+ },
+ "DJ": {
+ "name": "Djibouti"
+ },
+ "DM": {
+ "name": "Dominica"
+ },
+ "DO": {
+ "name": "Dominican Republic"
+ },
+ "EC": {
+ "name": "Ecuador"
+ },
+ "EG": {
+ "name": "Egypt"
+ },
+ "SV": {
+ "name": "El Salvador"
+ },
+ "GQ": {
+ "name": "Equatorial Guinea"
+ },
+ "ER": {
+ "name": "Eritrea"
+ },
+ "EE": {
+ "name": "Estonia"
+ },
+ "ET": {
+ "name": "Ethiopia"
+ },
+ "FK": {
+ "name": "Falkland Islands"
+ },
+ "FO": {
+ "name": "Faroe Islands"
+ },
+ "FJ": {
+ "name": "Fiji"
+ },
+ "FI": {
+ "name": "Finland"
+ },
+ "FR": {
+ "name": "France"
+ },
+ "GF": {
+ "name": "French Guiana"
+ },
+ "PF": {
+ "name": "French Polynesia"
+ },
+ "TF": {
+ "name": "French Southern Territories"
+ },
+ "GA": {
+ "name": "Gabon"
+ },
+ "GM": {
+ "name": "Gambia"
+ },
+ "GE": {
+ "name": "Georgia"
+ },
+ "DE": {
+ "name": "Germany"
+ },
+ "GH": {
+ "name": "Ghana"
+ },
+ "GI": {
+ "name": "Gibraltar"
+ },
+ "GR": {
+ "name": "Greece"
+ },
+ "GL": {
+ "name": "Greenland"
+ },
+ "GD": {
+ "name": "Grenada"
+ },
+ "GP": {
+ "name": "Guadeloupe"
+ },
+ "GU": {
+ "name": "Guam"
+ },
+ "GT": {
+ "name": "Guatemala"
+ },
+ "GG": {
+ "name": "Guernsey"
+ },
+ "GN": {
+ "name": "Guinea"
+ },
+ "GW": {
+ "name": "Guinea-Bissau"
+ },
+ "GY": {
+ "name": "Guyana"
+ },
+ "HT": {
+ "name": "Haiti"
+ },
+ "HN": {
+ "name": "Honduras"
+ },
+ "HK": {
+ "name": "Hong Kong SAR China"
+ },
+ "HU": {
+ "name": "Hungary"
+ },
+ "IS": {
+ "name": "Iceland"
+ },
+ "IN": {
+ "name": "India"
+ },
+ "ID": {
+ "name": "Indonesia"
+ },
+ "IR": {
+ "name": "Iran"
+ },
+ "IQ": {
+ "name": "Iraq"
+ },
+ "IE": {
+ "name": "Ireland"
+ },
+ "IM": {
+ "name": "Isle of Man"
+ },
+ "IL": {
+ "name": "Israel"
+ },
+ "IT": {
+ "name": "Italy"
+ },
+ "JM": {
+ "name": "Jamaica"
+ },
+ "JP": {
+ "name": "Japan"
+ },
+ "JE": {
+ "name": "Jersey"
+ },
+ "JO": {
+ "name": "Jordan"
+ },
+ "KZ": {
+ "name": "Kazakhstan"
+ },
+ "KE": {
+ "name": "Kenya"
+ },
+ "KI": {
+ "name": "Kiribati"
+ },
+ "XK": {
+ "name": "Kosovo"
+ },
+ "KW": {
+ "name": "Kuwait"
+ },
+ "KG": {
+ "name": "Kyrgyzstan"
+ },
+ "LA": {
+ "name": "Laos"
+ },
+ "LV": {
+ "name": "Latvia"
+ },
+ "LB": {
+ "name": "Lebanon"
+ },
+ "LS": {
+ "name": "Lesotho"
+ },
+ "LR": {
+ "name": "Liberia"
+ },
+ "LY": {
+ "name": "Libya"
+ },
+ "LI": {
+ "name": "Liechtenstein"
+ },
+ "LT": {
+ "name": "Lithuania"
+ },
+ "LU": {
+ "name": "Luxembourg"
+ },
+ "MO": {
+ "name": "Macau SAR China"
+ },
+ "MK": {
+ "name": "Macedonia"
+ },
+ "MG": {
+ "name": "Madagascar"
+ },
+ "MW": {
+ "name": "Malawi"
+ },
+ "MY": {
+ "name": "Malaysia"
+ },
+ "MV": {
+ "name": "Maldives"
+ },
+ "ML": {
+ "name": "Mali"
+ },
+ "MT": {
+ "name": "Malta"
+ },
+ "MH": {
+ "name": "Marshall Islands"
+ },
+ "MQ": {
+ "name": "Martinique"
+ },
+ "MR": {
+ "name": "Mauritania"
+ },
+ "MU": {
+ "name": "Mauritius"
+ },
+ "YT": {
+ "name": "Mayotte"
+ },
+ "MX": {
+ "name": "Mexico"
+ },
+ "FM": {
+ "name": "Micronesia"
+ },
+ "MD": {
+ "name": "Moldova"
+ },
+ "MC": {
+ "name": "Monaco"
+ },
+ "MN": {
+ "name": "Mongolia"
+ },
+ "ME": {
+ "name": "Montenegro"
+ },
+ "MS": {
+ "name": "Montserrat"
+ },
+ "MA": {
+ "name": "Morocco"
+ },
+ "MZ": {
+ "name": "Mozambique"
+ },
+ "MM": {
+ "name": "Myanmar (Burma)"
+ },
+ "NA": {
+ "name": "Namibia"
+ },
+ "NR": {
+ "name": "Nauru"
+ },
+ "NP": {
+ "name": "Nepal"
+ },
+ "NL": {
+ "name": "Netherlands"
+ },
+ "NC": {
+ "name": "New Caledonia"
+ },
+ "NZ": {
+ "name": "New Zealand"
+ },
+ "NI": {
+ "name": "Nicaragua"
+ },
+ "NE": {
+ "name": "Niger"
+ },
+ "NG": {
+ "name": "Nigeria"
+ },
+ "NU": {
+ "name": "Niue"
+ },
+ "NF": {
+ "name": "Norfolk Island"
+ },
+ "KP": {
+ "name": "North Korea"
+ },
+ "MP": {
+ "name": "Northern Mariana Islands"
+ },
+ "NO": {
+ "name": "Norway"
+ },
+ "OM": {
+ "name": "Oman"
+ },
+ "PK": {
+ "name": "Pakistan"
+ },
+ "PW": {
+ "name": "Palau"
+ },
+ "PS": {
+ "name": "Palestinian Territories"
+ },
+ "PA": {
+ "name": "Panama"
+ },
+ "PG": {
+ "name": "Papua New Guinea"
+ },
+ "PY": {
+ "name": "Paraguay"
+ },
+ "PE": {
+ "name": "Peru"
+ },
+ "PH": {
+ "name": "Philippines"
+ },
+ "PN": {
+ "name": "Pitcairn Islands"
+ },
+ "PL": {
+ "name": "Poland"
+ },
+ "PT": {
+ "name": "Portugal"
+ },
+ "PR": {
+ "name": "Puerto Rico"
+ },
+ "QA": {
+ "name": "Qatar"
+ },
+ "RE": {
+ "name": "Réunion"
+ },
+ "RO": {
+ "name": "Romania"
+ },
+ "RU": {
+ "name": "Russia"
+ },
+ "RW": {
+ "name": "Rwanda"
+ },
+ "BL": {
+ "name": "Saint Barthélemy"
+ },
+ "SH": {
+ "name": "Saint Helena"
+ },
+ "KN": {
+ "name": "Saint Kitts and Nevis"
+ },
+ "LC": {
+ "name": "Saint Lucia"
+ },
+ "MF": {
+ "name": "Saint Martin"
+ },
+ "PM": {
+ "name": "Saint Pierre and Miquelon"
+ },
+ "WS": {
+ "name": "Samoa"
+ },
+ "SM": {
+ "name": "San Marino"
+ },
+ "ST": {
+ "name": "São Tomé and Príncipe"
+ },
+ "SA": {
+ "name": "Saudi Arabia"
+ },
+ "SN": {
+ "name": "Senegal"
+ },
+ "RS": {
+ "name": "Serbia"
+ },
+ "SC": {
+ "name": "Seychelles"
+ },
+ "SL": {
+ "name": "Sierra Leone"
+ },
+ "SG": {
+ "name": "Singapore"
+ },
+ "SX": {
+ "name": "Sint Maarten"
+ },
+ "SK": {
+ "name": "Slovakia"
+ },
+ "SI": {
+ "name": "Slovenia"
+ },
+ "SB": {
+ "name": "Solomon Islands"
+ },
+ "SO": {
+ "name": "Somalia"
+ },
+ "ZA": {
+ "name": "South Africa"
+ },
+ "GS": {
+ "name": "South Georgia & South Sandwich Islands"
+ },
+ "KR": {
+ "name": "South Korea"
+ },
+ "SS": {
+ "name": "South Sudan"
+ },
+ "ES": {
+ "name": "Spain"
+ },
+ "LK": {
+ "name": "Sri Lanka"
+ },
+ "VC": {
+ "name": "St. Vincent & Grenadines"
+ },
+ "SD": {
+ "name": "Sudan"
+ },
+ "SR": {
+ "name": "Suriname"
+ },
+ "SJ": {
+ "name": "Svalbard and Jan Mayen"
+ },
+ "SZ": {
+ "name": "Swaziland"
+ },
+ "SE": {
+ "name": "Sweden"
+ },
+ "CH": {
+ "name": "Switzerland"
+ },
+ "SY": {
+ "name": "Syria"
+ },
+ "TW": {
+ "name": "Taiwan"
+ },
+ "TJ": {
+ "name": "Tajikistan"
+ },
+ "TZ": {
+ "name": "Tanzania"
+ },
+ "TH": {
+ "name": "Thailand"
+ },
+ "TL": {
+ "name": "Timor-Leste"
+ },
+ "TG": {
+ "name": "Togo"
+ },
+ "TK": {
+ "name": "Tokelau"
+ },
+ "TO": {
+ "name": "Tonga"
+ },
+ "TT": {
+ "name": "Trinidad and Tobago"
+ },
+ "TA": {
+ "name": "Tristan da Cunha"
+ },
+ "TN": {
+ "name": "Tunisia"
+ },
+ "TR": {
+ "name": "Turkey"
+ },
+ "TM": {
+ "name": "Turkmenistan"
+ },
+ "TC": {
+ "name": "Turks and Caicos Islands"
+ },
+ "TV": {
+ "name": "Tuvalu"
+ },
+ "UM": {
+ "name": "U.S. Outlying Islands"
+ },
+ "VI": {
+ "name": "U.S. Virgin Islands"
+ },
+ "UG": {
+ "name": "Uganda"
+ },
+ "UA": {
+ "name": "Ukraine"
+ },
+ "AE": {
+ "name": "United Arab Emirates"
+ },
+ "GB": {
+ "name": "United Kingdom"
+ },
+ "US": {
+ "name": "United States"
+ },
+ "UY": {
+ "name": "Uruguay"
+ },
+ "UZ": {
+ "name": "Uzbekistan"
+ },
+ "VU": {
+ "name": "Vanuatu"
+ },
+ "VA": {
+ "name": "Vatican City"
+ },
+ "VE": {
+ "name": "Venezuela"
+ },
+ "VN": {
+ "name": "Vietnam"
+ },
+ "WF": {
+ "name": "Wallis and Futuna"
+ },
+ "EH": {
+ "name": "Western Sahara"
+ },
+ "YE": {
+ "name": "Yemen"
+ },
+ "ZM": {
+ "name": "Zambia"
+ },
+ "ZW": {
+ "name": "Zimbabwe"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/country/en-DG.json b/library/intl/resources/country/en-DG.json
new file mode 100644
index 000000000..081d5f4c0
--- /dev/null
+++ b/library/intl/resources/country/en-DG.json
@@ -0,0 +1,761 @@
+{
+ "AF": {
+ "name": "Afghanistan"
+ },
+ "AX": {
+ "name": "Ã…land Islands"
+ },
+ "AL": {
+ "name": "Albania"
+ },
+ "DZ": {
+ "name": "Algeria"
+ },
+ "AS": {
+ "name": "American Samoa"
+ },
+ "AD": {
+ "name": "Andorra"
+ },
+ "AO": {
+ "name": "Angola"
+ },
+ "AI": {
+ "name": "Anguilla"
+ },
+ "AQ": {
+ "name": "Antarctica"
+ },
+ "AG": {
+ "name": "Antigua and Barbuda"
+ },
+ "AR": {
+ "name": "Argentina"
+ },
+ "AM": {
+ "name": "Armenia"
+ },
+ "AW": {
+ "name": "Aruba"
+ },
+ "AC": {
+ "name": "Ascension Island"
+ },
+ "AU": {
+ "name": "Australia"
+ },
+ "AT": {
+ "name": "Austria"
+ },
+ "AZ": {
+ "name": "Azerbaijan"
+ },
+ "BS": {
+ "name": "Bahamas"
+ },
+ "BH": {
+ "name": "Bahrain"
+ },
+ "BD": {
+ "name": "Bangladesh"
+ },
+ "BB": {
+ "name": "Barbados"
+ },
+ "BY": {
+ "name": "Belarus"
+ },
+ "BE": {
+ "name": "Belgium"
+ },
+ "BZ": {
+ "name": "Belize"
+ },
+ "BJ": {
+ "name": "Benin"
+ },
+ "BM": {
+ "name": "Bermuda"
+ },
+ "BT": {
+ "name": "Bhutan"
+ },
+ "BO": {
+ "name": "Bolivia"
+ },
+ "BA": {
+ "name": "Bosnia and Herzegovina"
+ },
+ "BW": {
+ "name": "Botswana"
+ },
+ "BR": {
+ "name": "Brazil"
+ },
+ "IO": {
+ "name": "British Indian Ocean Territory"
+ },
+ "VG": {
+ "name": "British Virgin Islands"
+ },
+ "BN": {
+ "name": "Brunei"
+ },
+ "BG": {
+ "name": "Bulgaria"
+ },
+ "BF": {
+ "name": "Burkina Faso"
+ },
+ "BI": {
+ "name": "Burundi"
+ },
+ "KH": {
+ "name": "Cambodia"
+ },
+ "CM": {
+ "name": "Cameroon"
+ },
+ "CA": {
+ "name": "Canada"
+ },
+ "IC": {
+ "name": "Canary Islands"
+ },
+ "CV": {
+ "name": "Cape Verde"
+ },
+ "BQ": {
+ "name": "Caribbean Netherlands"
+ },
+ "KY": {
+ "name": "Cayman Islands"
+ },
+ "CF": {
+ "name": "Central African Republic"
+ },
+ "EA": {
+ "name": "Ceuta and Melilla"
+ },
+ "TD": {
+ "name": "Chad"
+ },
+ "CL": {
+ "name": "Chile"
+ },
+ "CN": {
+ "name": "China"
+ },
+ "CX": {
+ "name": "Christmas Island"
+ },
+ "CC": {
+ "name": "Cocos (Keeling) Islands"
+ },
+ "CO": {
+ "name": "Colombia"
+ },
+ "KM": {
+ "name": "Comoros"
+ },
+ "CG": {
+ "name": "Congo - Brazzaville"
+ },
+ "CD": {
+ "name": "Congo - Kinshasa"
+ },
+ "CK": {
+ "name": "Cook Islands"
+ },
+ "CR": {
+ "name": "Costa Rica"
+ },
+ "CI": {
+ "name": "Côte d’Ivoire"
+ },
+ "HR": {
+ "name": "Croatia"
+ },
+ "CU": {
+ "name": "Cuba"
+ },
+ "CW": {
+ "name": "Curaçao"
+ },
+ "CY": {
+ "name": "Cyprus"
+ },
+ "CZ": {
+ "name": "Czech Republic"
+ },
+ "DK": {
+ "name": "Denmark"
+ },
+ "DG": {
+ "name": "Diego Garcia"
+ },
+ "DJ": {
+ "name": "Djibouti"
+ },
+ "DM": {
+ "name": "Dominica"
+ },
+ "DO": {
+ "name": "Dominican Republic"
+ },
+ "EC": {
+ "name": "Ecuador"
+ },
+ "EG": {
+ "name": "Egypt"
+ },
+ "SV": {
+ "name": "El Salvador"
+ },
+ "GQ": {
+ "name": "Equatorial Guinea"
+ },
+ "ER": {
+ "name": "Eritrea"
+ },
+ "EE": {
+ "name": "Estonia"
+ },
+ "ET": {
+ "name": "Ethiopia"
+ },
+ "FK": {
+ "name": "Falkland Islands"
+ },
+ "FO": {
+ "name": "Faroe Islands"
+ },
+ "FJ": {
+ "name": "Fiji"
+ },
+ "FI": {
+ "name": "Finland"
+ },
+ "FR": {
+ "name": "France"
+ },
+ "GF": {
+ "name": "French Guiana"
+ },
+ "PF": {
+ "name": "French Polynesia"
+ },
+ "TF": {
+ "name": "French Southern Territories"
+ },
+ "GA": {
+ "name": "Gabon"
+ },
+ "GM": {
+ "name": "Gambia"
+ },
+ "GE": {
+ "name": "Georgia"
+ },
+ "DE": {
+ "name": "Germany"
+ },
+ "GH": {
+ "name": "Ghana"
+ },
+ "GI": {
+ "name": "Gibraltar"
+ },
+ "GR": {
+ "name": "Greece"
+ },
+ "GL": {
+ "name": "Greenland"
+ },
+ "GD": {
+ "name": "Grenada"
+ },
+ "GP": {
+ "name": "Guadeloupe"
+ },
+ "GU": {
+ "name": "Guam"
+ },
+ "GT": {
+ "name": "Guatemala"
+ },
+ "GG": {
+ "name": "Guernsey"
+ },
+ "GN": {
+ "name": "Guinea"
+ },
+ "GW": {
+ "name": "Guinea-Bissau"
+ },
+ "GY": {
+ "name": "Guyana"
+ },
+ "HT": {
+ "name": "Haiti"
+ },
+ "HN": {
+ "name": "Honduras"
+ },
+ "HK": {
+ "name": "Hong Kong SAR China"
+ },
+ "HU": {
+ "name": "Hungary"
+ },
+ "IS": {
+ "name": "Iceland"
+ },
+ "IN": {
+ "name": "India"
+ },
+ "ID": {
+ "name": "Indonesia"
+ },
+ "IR": {
+ "name": "Iran"
+ },
+ "IQ": {
+ "name": "Iraq"
+ },
+ "IE": {
+ "name": "Ireland"
+ },
+ "IM": {
+ "name": "Isle of Man"
+ },
+ "IL": {
+ "name": "Israel"
+ },
+ "IT": {
+ "name": "Italy"
+ },
+ "JM": {
+ "name": "Jamaica"
+ },
+ "JP": {
+ "name": "Japan"
+ },
+ "JE": {
+ "name": "Jersey"
+ },
+ "JO": {
+ "name": "Jordan"
+ },
+ "KZ": {
+ "name": "Kazakhstan"
+ },
+ "KE": {
+ "name": "Kenya"
+ },
+ "KI": {
+ "name": "Kiribati"
+ },
+ "XK": {
+ "name": "Kosovo"
+ },
+ "KW": {
+ "name": "Kuwait"
+ },
+ "KG": {
+ "name": "Kyrgyzstan"
+ },
+ "LA": {
+ "name": "Laos"
+ },
+ "LV": {
+ "name": "Latvia"
+ },
+ "LB": {
+ "name": "Lebanon"
+ },
+ "LS": {
+ "name": "Lesotho"
+ },
+ "LR": {
+ "name": "Liberia"
+ },
+ "LY": {
+ "name": "Libya"
+ },
+ "LI": {
+ "name": "Liechtenstein"
+ },
+ "LT": {
+ "name": "Lithuania"
+ },
+ "LU": {
+ "name": "Luxembourg"
+ },
+ "MO": {
+ "name": "Macau SAR China"
+ },
+ "MK": {
+ "name": "Macedonia"
+ },
+ "MG": {
+ "name": "Madagascar"
+ },
+ "MW": {
+ "name": "Malawi"
+ },
+ "MY": {
+ "name": "Malaysia"
+ },
+ "MV": {
+ "name": "Maldives"
+ },
+ "ML": {
+ "name": "Mali"
+ },
+ "MT": {
+ "name": "Malta"
+ },
+ "MH": {
+ "name": "Marshall Islands"
+ },
+ "MQ": {
+ "name": "Martinique"
+ },
+ "MR": {
+ "name": "Mauritania"
+ },
+ "MU": {
+ "name": "Mauritius"
+ },
+ "YT": {
+ "name": "Mayotte"
+ },
+ "MX": {
+ "name": "Mexico"
+ },
+ "FM": {
+ "name": "Micronesia"
+ },
+ "MD": {
+ "name": "Moldova"
+ },
+ "MC": {
+ "name": "Monaco"
+ },
+ "MN": {
+ "name": "Mongolia"
+ },
+ "ME": {
+ "name": "Montenegro"
+ },
+ "MS": {
+ "name": "Montserrat"
+ },
+ "MA": {
+ "name": "Morocco"
+ },
+ "MZ": {
+ "name": "Mozambique"
+ },
+ "MM": {
+ "name": "Myanmar (Burma)"
+ },
+ "NA": {
+ "name": "Namibia"
+ },
+ "NR": {
+ "name": "Nauru"
+ },
+ "NP": {
+ "name": "Nepal"
+ },
+ "NL": {
+ "name": "Netherlands"
+ },
+ "NC": {
+ "name": "New Caledonia"
+ },
+ "NZ": {
+ "name": "New Zealand"
+ },
+ "NI": {
+ "name": "Nicaragua"
+ },
+ "NE": {
+ "name": "Niger"
+ },
+ "NG": {
+ "name": "Nigeria"
+ },
+ "NU": {
+ "name": "Niue"
+ },
+ "NF": {
+ "name": "Norfolk Island"
+ },
+ "KP": {
+ "name": "North Korea"
+ },
+ "MP": {
+ "name": "Northern Mariana Islands"
+ },
+ "NO": {
+ "name": "Norway"
+ },
+ "OM": {
+ "name": "Oman"
+ },
+ "PK": {
+ "name": "Pakistan"
+ },
+ "PW": {
+ "name": "Palau"
+ },
+ "PS": {
+ "name": "Palestinian Territories"
+ },
+ "PA": {
+ "name": "Panama"
+ },
+ "PG": {
+ "name": "Papua New Guinea"
+ },
+ "PY": {
+ "name": "Paraguay"
+ },
+ "PE": {
+ "name": "Peru"
+ },
+ "PH": {
+ "name": "Philippines"
+ },
+ "PN": {
+ "name": "Pitcairn Islands"
+ },
+ "PL": {
+ "name": "Poland"
+ },
+ "PT": {
+ "name": "Portugal"
+ },
+ "PR": {
+ "name": "Puerto Rico"
+ },
+ "QA": {
+ "name": "Qatar"
+ },
+ "RE": {
+ "name": "Réunion"
+ },
+ "RO": {
+ "name": "Romania"
+ },
+ "RU": {
+ "name": "Russia"
+ },
+ "RW": {
+ "name": "Rwanda"
+ },
+ "BL": {
+ "name": "Saint Barthélemy"
+ },
+ "SH": {
+ "name": "Saint Helena"
+ },
+ "KN": {
+ "name": "Saint Kitts and Nevis"
+ },
+ "LC": {
+ "name": "Saint Lucia"
+ },
+ "MF": {
+ "name": "Saint Martin"
+ },
+ "PM": {
+ "name": "Saint Pierre and Miquelon"
+ },
+ "WS": {
+ "name": "Samoa"
+ },
+ "SM": {
+ "name": "San Marino"
+ },
+ "ST": {
+ "name": "São Tomé and Príncipe"
+ },
+ "SA": {
+ "name": "Saudi Arabia"
+ },
+ "SN": {
+ "name": "Senegal"
+ },
+ "RS": {
+ "name": "Serbia"
+ },
+ "SC": {
+ "name": "Seychelles"
+ },
+ "SL": {
+ "name": "Sierra Leone"
+ },
+ "SG": {
+ "name": "Singapore"
+ },
+ "SX": {
+ "name": "Sint Maarten"
+ },
+ "SK": {
+ "name": "Slovakia"
+ },
+ "SI": {
+ "name": "Slovenia"
+ },
+ "SB": {
+ "name": "Solomon Islands"
+ },
+ "SO": {
+ "name": "Somalia"
+ },
+ "ZA": {
+ "name": "South Africa"
+ },
+ "GS": {
+ "name": "South Georgia & South Sandwich Islands"
+ },
+ "KR": {
+ "name": "South Korea"
+ },
+ "SS": {
+ "name": "South Sudan"
+ },
+ "ES": {
+ "name": "Spain"
+ },
+ "LK": {
+ "name": "Sri Lanka"
+ },
+ "VC": {
+ "name": "St. Vincent & Grenadines"
+ },
+ "SD": {
+ "name": "Sudan"
+ },
+ "SR": {
+ "name": "Suriname"
+ },
+ "SJ": {
+ "name": "Svalbard and Jan Mayen"
+ },
+ "SZ": {
+ "name": "Swaziland"
+ },
+ "SE": {
+ "name": "Sweden"
+ },
+ "CH": {
+ "name": "Switzerland"
+ },
+ "SY": {
+ "name": "Syria"
+ },
+ "TW": {
+ "name": "Taiwan"
+ },
+ "TJ": {
+ "name": "Tajikistan"
+ },
+ "TZ": {
+ "name": "Tanzania"
+ },
+ "TH": {
+ "name": "Thailand"
+ },
+ "TL": {
+ "name": "Timor-Leste"
+ },
+ "TG": {
+ "name": "Togo"
+ },
+ "TK": {
+ "name": "Tokelau"
+ },
+ "TO": {
+ "name": "Tonga"
+ },
+ "TT": {
+ "name": "Trinidad and Tobago"
+ },
+ "TA": {
+ "name": "Tristan da Cunha"
+ },
+ "TN": {
+ "name": "Tunisia"
+ },
+ "TR": {
+ "name": "Turkey"
+ },
+ "TM": {
+ "name": "Turkmenistan"
+ },
+ "TC": {
+ "name": "Turks and Caicos Islands"
+ },
+ "TV": {
+ "name": "Tuvalu"
+ },
+ "UM": {
+ "name": "U.S. Outlying Islands"
+ },
+ "VI": {
+ "name": "U.S. Virgin Islands"
+ },
+ "UG": {
+ "name": "Uganda"
+ },
+ "UA": {
+ "name": "Ukraine"
+ },
+ "AE": {
+ "name": "United Arab Emirates"
+ },
+ "GB": {
+ "name": "United Kingdom"
+ },
+ "US": {
+ "name": "United States"
+ },
+ "UY": {
+ "name": "Uruguay"
+ },
+ "UZ": {
+ "name": "Uzbekistan"
+ },
+ "VU": {
+ "name": "Vanuatu"
+ },
+ "VA": {
+ "name": "Vatican City"
+ },
+ "VE": {
+ "name": "Venezuela"
+ },
+ "VN": {
+ "name": "Vietnam"
+ },
+ "WF": {
+ "name": "Wallis and Futuna"
+ },
+ "EH": {
+ "name": "Western Sahara"
+ },
+ "YE": {
+ "name": "Yemen"
+ },
+ "ZM": {
+ "name": "Zambia"
+ },
+ "ZW": {
+ "name": "Zimbabwe"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/country/en-FK.json b/library/intl/resources/country/en-FK.json
new file mode 100644
index 000000000..081d5f4c0
--- /dev/null
+++ b/library/intl/resources/country/en-FK.json
@@ -0,0 +1,761 @@
+{
+ "AF": {
+ "name": "Afghanistan"
+ },
+ "AX": {
+ "name": "Ã…land Islands"
+ },
+ "AL": {
+ "name": "Albania"
+ },
+ "DZ": {
+ "name": "Algeria"
+ },
+ "AS": {
+ "name": "American Samoa"
+ },
+ "AD": {
+ "name": "Andorra"
+ },
+ "AO": {
+ "name": "Angola"
+ },
+ "AI": {
+ "name": "Anguilla"
+ },
+ "AQ": {
+ "name": "Antarctica"
+ },
+ "AG": {
+ "name": "Antigua and Barbuda"
+ },
+ "AR": {
+ "name": "Argentina"
+ },
+ "AM": {
+ "name": "Armenia"
+ },
+ "AW": {
+ "name": "Aruba"
+ },
+ "AC": {
+ "name": "Ascension Island"
+ },
+ "AU": {
+ "name": "Australia"
+ },
+ "AT": {
+ "name": "Austria"
+ },
+ "AZ": {
+ "name": "Azerbaijan"
+ },
+ "BS": {
+ "name": "Bahamas"
+ },
+ "BH": {
+ "name": "Bahrain"
+ },
+ "BD": {
+ "name": "Bangladesh"
+ },
+ "BB": {
+ "name": "Barbados"
+ },
+ "BY": {
+ "name": "Belarus"
+ },
+ "BE": {
+ "name": "Belgium"
+ },
+ "BZ": {
+ "name": "Belize"
+ },
+ "BJ": {
+ "name": "Benin"
+ },
+ "BM": {
+ "name": "Bermuda"
+ },
+ "BT": {
+ "name": "Bhutan"
+ },
+ "BO": {
+ "name": "Bolivia"
+ },
+ "BA": {
+ "name": "Bosnia and Herzegovina"
+ },
+ "BW": {
+ "name": "Botswana"
+ },
+ "BR": {
+ "name": "Brazil"
+ },
+ "IO": {
+ "name": "British Indian Ocean Territory"
+ },
+ "VG": {
+ "name": "British Virgin Islands"
+ },
+ "BN": {
+ "name": "Brunei"
+ },
+ "BG": {
+ "name": "Bulgaria"
+ },
+ "BF": {
+ "name": "Burkina Faso"
+ },
+ "BI": {
+ "name": "Burundi"
+ },
+ "KH": {
+ "name": "Cambodia"
+ },
+ "CM": {
+ "name": "Cameroon"
+ },
+ "CA": {
+ "name": "Canada"
+ },
+ "IC": {
+ "name": "Canary Islands"
+ },
+ "CV": {
+ "name": "Cape Verde"
+ },
+ "BQ": {
+ "name": "Caribbean Netherlands"
+ },
+ "KY": {
+ "name": "Cayman Islands"
+ },
+ "CF": {
+ "name": "Central African Republic"
+ },
+ "EA": {
+ "name": "Ceuta and Melilla"
+ },
+ "TD": {
+ "name": "Chad"
+ },
+ "CL": {
+ "name": "Chile"
+ },
+ "CN": {
+ "name": "China"
+ },
+ "CX": {
+ "name": "Christmas Island"
+ },
+ "CC": {
+ "name": "Cocos (Keeling) Islands"
+ },
+ "CO": {
+ "name": "Colombia"
+ },
+ "KM": {
+ "name": "Comoros"
+ },
+ "CG": {
+ "name": "Congo - Brazzaville"
+ },
+ "CD": {
+ "name": "Congo - Kinshasa"
+ },
+ "CK": {
+ "name": "Cook Islands"
+ },
+ "CR": {
+ "name": "Costa Rica"
+ },
+ "CI": {
+ "name": "Côte d’Ivoire"
+ },
+ "HR": {
+ "name": "Croatia"
+ },
+ "CU": {
+ "name": "Cuba"
+ },
+ "CW": {
+ "name": "Curaçao"
+ },
+ "CY": {
+ "name": "Cyprus"
+ },
+ "CZ": {
+ "name": "Czech Republic"
+ },
+ "DK": {
+ "name": "Denmark"
+ },
+ "DG": {
+ "name": "Diego Garcia"
+ },
+ "DJ": {
+ "name": "Djibouti"
+ },
+ "DM": {
+ "name": "Dominica"
+ },
+ "DO": {
+ "name": "Dominican Republic"
+ },
+ "EC": {
+ "name": "Ecuador"
+ },
+ "EG": {
+ "name": "Egypt"
+ },
+ "SV": {
+ "name": "El Salvador"
+ },
+ "GQ": {
+ "name": "Equatorial Guinea"
+ },
+ "ER": {
+ "name": "Eritrea"
+ },
+ "EE": {
+ "name": "Estonia"
+ },
+ "ET": {
+ "name": "Ethiopia"
+ },
+ "FK": {
+ "name": "Falkland Islands"
+ },
+ "FO": {
+ "name": "Faroe Islands"
+ },
+ "FJ": {
+ "name": "Fiji"
+ },
+ "FI": {
+ "name": "Finland"
+ },
+ "FR": {
+ "name": "France"
+ },
+ "GF": {
+ "name": "French Guiana"
+ },
+ "PF": {
+ "name": "French Polynesia"
+ },
+ "TF": {
+ "name": "French Southern Territories"
+ },
+ "GA": {
+ "name": "Gabon"
+ },
+ "GM": {
+ "name": "Gambia"
+ },
+ "GE": {
+ "name": "Georgia"
+ },
+ "DE": {
+ "name": "Germany"
+ },
+ "GH": {
+ "name": "Ghana"
+ },
+ "GI": {
+ "name": "Gibraltar"
+ },
+ "GR": {
+ "name": "Greece"
+ },
+ "GL": {
+ "name": "Greenland"
+ },
+ "GD": {
+ "name": "Grenada"
+ },
+ "GP": {
+ "name": "Guadeloupe"
+ },
+ "GU": {
+ "name": "Guam"
+ },
+ "GT": {
+ "name": "Guatemala"
+ },
+ "GG": {
+ "name": "Guernsey"
+ },
+ "GN": {
+ "name": "Guinea"
+ },
+ "GW": {
+ "name": "Guinea-Bissau"
+ },
+ "GY": {
+ "name": "Guyana"
+ },
+ "HT": {
+ "name": "Haiti"
+ },
+ "HN": {
+ "name": "Honduras"
+ },
+ "HK": {
+ "name": "Hong Kong SAR China"
+ },
+ "HU": {
+ "name": "Hungary"
+ },
+ "IS": {
+ "name": "Iceland"
+ },
+ "IN": {
+ "name": "India"
+ },
+ "ID": {
+ "name": "Indonesia"
+ },
+ "IR": {
+ "name": "Iran"
+ },
+ "IQ": {
+ "name": "Iraq"
+ },
+ "IE": {
+ "name": "Ireland"
+ },
+ "IM": {
+ "name": "Isle of Man"
+ },
+ "IL": {
+ "name": "Israel"
+ },
+ "IT": {
+ "name": "Italy"
+ },
+ "JM": {
+ "name": "Jamaica"
+ },
+ "JP": {
+ "name": "Japan"
+ },
+ "JE": {
+ "name": "Jersey"
+ },
+ "JO": {
+ "name": "Jordan"
+ },
+ "KZ": {
+ "name": "Kazakhstan"
+ },
+ "KE": {
+ "name": "Kenya"
+ },
+ "KI": {
+ "name": "Kiribati"
+ },
+ "XK": {
+ "name": "Kosovo"
+ },
+ "KW": {
+ "name": "Kuwait"
+ },
+ "KG": {
+ "name": "Kyrgyzstan"
+ },
+ "LA": {
+ "name": "Laos"
+ },
+ "LV": {
+ "name": "Latvia"
+ },
+ "LB": {
+ "name": "Lebanon"
+ },
+ "LS": {
+ "name": "Lesotho"
+ },
+ "LR": {
+ "name": "Liberia"
+ },
+ "LY": {
+ "name": "Libya"
+ },
+ "LI": {
+ "name": "Liechtenstein"
+ },
+ "LT": {
+ "name": "Lithuania"
+ },
+ "LU": {
+ "name": "Luxembourg"
+ },
+ "MO": {
+ "name": "Macau SAR China"
+ },
+ "MK": {
+ "name": "Macedonia"
+ },
+ "MG": {
+ "name": "Madagascar"
+ },
+ "MW": {
+ "name": "Malawi"
+ },
+ "MY": {
+ "name": "Malaysia"
+ },
+ "MV": {
+ "name": "Maldives"
+ },
+ "ML": {
+ "name": "Mali"
+ },
+ "MT": {
+ "name": "Malta"
+ },
+ "MH": {
+ "name": "Marshall Islands"
+ },
+ "MQ": {
+ "name": "Martinique"
+ },
+ "MR": {
+ "name": "Mauritania"
+ },
+ "MU": {
+ "name": "Mauritius"
+ },
+ "YT": {
+ "name": "Mayotte"
+ },
+ "MX": {
+ "name": "Mexico"
+ },
+ "FM": {
+ "name": "Micronesia"
+ },
+ "MD": {
+ "name": "Moldova"
+ },
+ "MC": {
+ "name": "Monaco"
+ },
+ "MN": {
+ "name": "Mongolia"
+ },
+ "ME": {
+ "name": "Montenegro"
+ },
+ "MS": {
+ "name": "Montserrat"
+ },
+ "MA": {
+ "name": "Morocco"
+ },
+ "MZ": {
+ "name": "Mozambique"
+ },
+ "MM": {
+ "name": "Myanmar (Burma)"
+ },
+ "NA": {
+ "name": "Namibia"
+ },
+ "NR": {
+ "name": "Nauru"
+ },
+ "NP": {
+ "name": "Nepal"
+ },
+ "NL": {
+ "name": "Netherlands"
+ },
+ "NC": {
+ "name": "New Caledonia"
+ },
+ "NZ": {
+ "name": "New Zealand"
+ },
+ "NI": {
+ "name": "Nicaragua"
+ },
+ "NE": {
+ "name": "Niger"
+ },
+ "NG": {
+ "name": "Nigeria"
+ },
+ "NU": {
+ "name": "Niue"
+ },
+ "NF": {
+ "name": "Norfolk Island"
+ },
+ "KP": {
+ "name": "North Korea"
+ },
+ "MP": {
+ "name": "Northern Mariana Islands"
+ },
+ "NO": {
+ "name": "Norway"
+ },
+ "OM": {
+ "name": "Oman"
+ },
+ "PK": {
+ "name": "Pakistan"
+ },
+ "PW": {
+ "name": "Palau"
+ },
+ "PS": {
+ "name": "Palestinian Territories"
+ },
+ "PA": {
+ "name": "Panama"
+ },
+ "PG": {
+ "name": "Papua New Guinea"
+ },
+ "PY": {
+ "name": "Paraguay"
+ },
+ "PE": {
+ "name": "Peru"
+ },
+ "PH": {
+ "name": "Philippines"
+ },
+ "PN": {
+ "name": "Pitcairn Islands"
+ },
+ "PL": {
+ "name": "Poland"
+ },
+ "PT": {
+ "name": "Portugal"
+ },
+ "PR": {
+ "name": "Puerto Rico"
+ },
+ "QA": {
+ "name": "Qatar"
+ },
+ "RE": {
+ "name": "Réunion"
+ },
+ "RO": {
+ "name": "Romania"
+ },
+ "RU": {
+ "name": "Russia"
+ },
+ "RW": {
+ "name": "Rwanda"
+ },
+ "BL": {
+ "name": "Saint Barthélemy"
+ },
+ "SH": {
+ "name": "Saint Helena"
+ },
+ "KN": {
+ "name": "Saint Kitts and Nevis"
+ },
+ "LC": {
+ "name": "Saint Lucia"
+ },
+ "MF": {
+ "name": "Saint Martin"
+ },
+ "PM": {
+ "name": "Saint Pierre and Miquelon"
+ },
+ "WS": {
+ "name": "Samoa"
+ },
+ "SM": {
+ "name": "San Marino"
+ },
+ "ST": {
+ "name": "São Tomé and Príncipe"
+ },
+ "SA": {
+ "name": "Saudi Arabia"
+ },
+ "SN": {
+ "name": "Senegal"
+ },
+ "RS": {
+ "name": "Serbia"
+ },
+ "SC": {
+ "name": "Seychelles"
+ },
+ "SL": {
+ "name": "Sierra Leone"
+ },
+ "SG": {
+ "name": "Singapore"
+ },
+ "SX": {
+ "name": "Sint Maarten"
+ },
+ "SK": {
+ "name": "Slovakia"
+ },
+ "SI": {
+ "name": "Slovenia"
+ },
+ "SB": {
+ "name": "Solomon Islands"
+ },
+ "SO": {
+ "name": "Somalia"
+ },
+ "ZA": {
+ "name": "South Africa"
+ },
+ "GS": {
+ "name": "South Georgia & South Sandwich Islands"
+ },
+ "KR": {
+ "name": "South Korea"
+ },
+ "SS": {
+ "name": "South Sudan"
+ },
+ "ES": {
+ "name": "Spain"
+ },
+ "LK": {
+ "name": "Sri Lanka"
+ },
+ "VC": {
+ "name": "St. Vincent & Grenadines"
+ },
+ "SD": {
+ "name": "Sudan"
+ },
+ "SR": {
+ "name": "Suriname"
+ },
+ "SJ": {
+ "name": "Svalbard and Jan Mayen"
+ },
+ "SZ": {
+ "name": "Swaziland"
+ },
+ "SE": {
+ "name": "Sweden"
+ },
+ "CH": {
+ "name": "Switzerland"
+ },
+ "SY": {
+ "name": "Syria"
+ },
+ "TW": {
+ "name": "Taiwan"
+ },
+ "TJ": {
+ "name": "Tajikistan"
+ },
+ "TZ": {
+ "name": "Tanzania"
+ },
+ "TH": {
+ "name": "Thailand"
+ },
+ "TL": {
+ "name": "Timor-Leste"
+ },
+ "TG": {
+ "name": "Togo"
+ },
+ "TK": {
+ "name": "Tokelau"
+ },
+ "TO": {
+ "name": "Tonga"
+ },
+ "TT": {
+ "name": "Trinidad and Tobago"
+ },
+ "TA": {
+ "name": "Tristan da Cunha"
+ },
+ "TN": {
+ "name": "Tunisia"
+ },
+ "TR": {
+ "name": "Turkey"
+ },
+ "TM": {
+ "name": "Turkmenistan"
+ },
+ "TC": {
+ "name": "Turks and Caicos Islands"
+ },
+ "TV": {
+ "name": "Tuvalu"
+ },
+ "UM": {
+ "name": "U.S. Outlying Islands"
+ },
+ "VI": {
+ "name": "U.S. Virgin Islands"
+ },
+ "UG": {
+ "name": "Uganda"
+ },
+ "UA": {
+ "name": "Ukraine"
+ },
+ "AE": {
+ "name": "United Arab Emirates"
+ },
+ "GB": {
+ "name": "United Kingdom"
+ },
+ "US": {
+ "name": "United States"
+ },
+ "UY": {
+ "name": "Uruguay"
+ },
+ "UZ": {
+ "name": "Uzbekistan"
+ },
+ "VU": {
+ "name": "Vanuatu"
+ },
+ "VA": {
+ "name": "Vatican City"
+ },
+ "VE": {
+ "name": "Venezuela"
+ },
+ "VN": {
+ "name": "Vietnam"
+ },
+ "WF": {
+ "name": "Wallis and Futuna"
+ },
+ "EH": {
+ "name": "Western Sahara"
+ },
+ "YE": {
+ "name": "Yemen"
+ },
+ "ZM": {
+ "name": "Zambia"
+ },
+ "ZW": {
+ "name": "Zimbabwe"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/country/en-GB.json b/library/intl/resources/country/en-GB.json
new file mode 100644
index 000000000..081d5f4c0
--- /dev/null
+++ b/library/intl/resources/country/en-GB.json
@@ -0,0 +1,761 @@
+{
+ "AF": {
+ "name": "Afghanistan"
+ },
+ "AX": {
+ "name": "Ã…land Islands"
+ },
+ "AL": {
+ "name": "Albania"
+ },
+ "DZ": {
+ "name": "Algeria"
+ },
+ "AS": {
+ "name": "American Samoa"
+ },
+ "AD": {
+ "name": "Andorra"
+ },
+ "AO": {
+ "name": "Angola"
+ },
+ "AI": {
+ "name": "Anguilla"
+ },
+ "AQ": {
+ "name": "Antarctica"
+ },
+ "AG": {
+ "name": "Antigua and Barbuda"
+ },
+ "AR": {
+ "name": "Argentina"
+ },
+ "AM": {
+ "name": "Armenia"
+ },
+ "AW": {
+ "name": "Aruba"
+ },
+ "AC": {
+ "name": "Ascension Island"
+ },
+ "AU": {
+ "name": "Australia"
+ },
+ "AT": {
+ "name": "Austria"
+ },
+ "AZ": {
+ "name": "Azerbaijan"
+ },
+ "BS": {
+ "name": "Bahamas"
+ },
+ "BH": {
+ "name": "Bahrain"
+ },
+ "BD": {
+ "name": "Bangladesh"
+ },
+ "BB": {
+ "name": "Barbados"
+ },
+ "BY": {
+ "name": "Belarus"
+ },
+ "BE": {
+ "name": "Belgium"
+ },
+ "BZ": {
+ "name": "Belize"
+ },
+ "BJ": {
+ "name": "Benin"
+ },
+ "BM": {
+ "name": "Bermuda"
+ },
+ "BT": {
+ "name": "Bhutan"
+ },
+ "BO": {
+ "name": "Bolivia"
+ },
+ "BA": {
+ "name": "Bosnia and Herzegovina"
+ },
+ "BW": {
+ "name": "Botswana"
+ },
+ "BR": {
+ "name": "Brazil"
+ },
+ "IO": {
+ "name": "British Indian Ocean Territory"
+ },
+ "VG": {
+ "name": "British Virgin Islands"
+ },
+ "BN": {
+ "name": "Brunei"
+ },
+ "BG": {
+ "name": "Bulgaria"
+ },
+ "BF": {
+ "name": "Burkina Faso"
+ },
+ "BI": {
+ "name": "Burundi"
+ },
+ "KH": {
+ "name": "Cambodia"
+ },
+ "CM": {
+ "name": "Cameroon"
+ },
+ "CA": {
+ "name": "Canada"
+ },
+ "IC": {
+ "name": "Canary Islands"
+ },
+ "CV": {
+ "name": "Cape Verde"
+ },
+ "BQ": {
+ "name": "Caribbean Netherlands"
+ },
+ "KY": {
+ "name": "Cayman Islands"
+ },
+ "CF": {
+ "name": "Central African Republic"
+ },
+ "EA": {
+ "name": "Ceuta and Melilla"
+ },
+ "TD": {
+ "name": "Chad"
+ },
+ "CL": {
+ "name": "Chile"
+ },
+ "CN": {
+ "name": "China"
+ },
+ "CX": {
+ "name": "Christmas Island"
+ },
+ "CC": {
+ "name": "Cocos (Keeling) Islands"
+ },
+ "CO": {
+ "name": "Colombia"
+ },
+ "KM": {
+ "name": "Comoros"
+ },
+ "CG": {
+ "name": "Congo - Brazzaville"
+ },
+ "CD": {
+ "name": "Congo - Kinshasa"
+ },
+ "CK": {
+ "name": "Cook Islands"
+ },
+ "CR": {
+ "name": "Costa Rica"
+ },
+ "CI": {
+ "name": "Côte d’Ivoire"
+ },
+ "HR": {
+ "name": "Croatia"
+ },
+ "CU": {
+ "name": "Cuba"
+ },
+ "CW": {
+ "name": "Curaçao"
+ },
+ "CY": {
+ "name": "Cyprus"
+ },
+ "CZ": {
+ "name": "Czech Republic"
+ },
+ "DK": {
+ "name": "Denmark"
+ },
+ "DG": {
+ "name": "Diego Garcia"
+ },
+ "DJ": {
+ "name": "Djibouti"
+ },
+ "DM": {
+ "name": "Dominica"
+ },
+ "DO": {
+ "name": "Dominican Republic"
+ },
+ "EC": {
+ "name": "Ecuador"
+ },
+ "EG": {
+ "name": "Egypt"
+ },
+ "SV": {
+ "name": "El Salvador"
+ },
+ "GQ": {
+ "name": "Equatorial Guinea"
+ },
+ "ER": {
+ "name": "Eritrea"
+ },
+ "EE": {
+ "name": "Estonia"
+ },
+ "ET": {
+ "name": "Ethiopia"
+ },
+ "FK": {
+ "name": "Falkland Islands"
+ },
+ "FO": {
+ "name": "Faroe Islands"
+ },
+ "FJ": {
+ "name": "Fiji"
+ },
+ "FI": {
+ "name": "Finland"
+ },
+ "FR": {
+ "name": "France"
+ },
+ "GF": {
+ "name": "French Guiana"
+ },
+ "PF": {
+ "name": "French Polynesia"
+ },
+ "TF": {
+ "name": "French Southern Territories"
+ },
+ "GA": {
+ "name": "Gabon"
+ },
+ "GM": {
+ "name": "Gambia"
+ },
+ "GE": {
+ "name": "Georgia"
+ },
+ "DE": {
+ "name": "Germany"
+ },
+ "GH": {
+ "name": "Ghana"
+ },
+ "GI": {
+ "name": "Gibraltar"
+ },
+ "GR": {
+ "name": "Greece"
+ },
+ "GL": {
+ "name": "Greenland"
+ },
+ "GD": {
+ "name": "Grenada"
+ },
+ "GP": {
+ "name": "Guadeloupe"
+ },
+ "GU": {
+ "name": "Guam"
+ },
+ "GT": {
+ "name": "Guatemala"
+ },
+ "GG": {
+ "name": "Guernsey"
+ },
+ "GN": {
+ "name": "Guinea"
+ },
+ "GW": {
+ "name": "Guinea-Bissau"
+ },
+ "GY": {
+ "name": "Guyana"
+ },
+ "HT": {
+ "name": "Haiti"
+ },
+ "HN": {
+ "name": "Honduras"
+ },
+ "HK": {
+ "name": "Hong Kong SAR China"
+ },
+ "HU": {
+ "name": "Hungary"
+ },
+ "IS": {
+ "name": "Iceland"
+ },
+ "IN": {
+ "name": "India"
+ },
+ "ID": {
+ "name": "Indonesia"
+ },
+ "IR": {
+ "name": "Iran"
+ },
+ "IQ": {
+ "name": "Iraq"
+ },
+ "IE": {
+ "name": "Ireland"
+ },
+ "IM": {
+ "name": "Isle of Man"
+ },
+ "IL": {
+ "name": "Israel"
+ },
+ "IT": {
+ "name": "Italy"
+ },
+ "JM": {
+ "name": "Jamaica"
+ },
+ "JP": {
+ "name": "Japan"
+ },
+ "JE": {
+ "name": "Jersey"
+ },
+ "JO": {
+ "name": "Jordan"
+ },
+ "KZ": {
+ "name": "Kazakhstan"
+ },
+ "KE": {
+ "name": "Kenya"
+ },
+ "KI": {
+ "name": "Kiribati"
+ },
+ "XK": {
+ "name": "Kosovo"
+ },
+ "KW": {
+ "name": "Kuwait"
+ },
+ "KG": {
+ "name": "Kyrgyzstan"
+ },
+ "LA": {
+ "name": "Laos"
+ },
+ "LV": {
+ "name": "Latvia"
+ },
+ "LB": {
+ "name": "Lebanon"
+ },
+ "LS": {
+ "name": "Lesotho"
+ },
+ "LR": {
+ "name": "Liberia"
+ },
+ "LY": {
+ "name": "Libya"
+ },
+ "LI": {
+ "name": "Liechtenstein"
+ },
+ "LT": {
+ "name": "Lithuania"
+ },
+ "LU": {
+ "name": "Luxembourg"
+ },
+ "MO": {
+ "name": "Macau SAR China"
+ },
+ "MK": {
+ "name": "Macedonia"
+ },
+ "MG": {
+ "name": "Madagascar"
+ },
+ "MW": {
+ "name": "Malawi"
+ },
+ "MY": {
+ "name": "Malaysia"
+ },
+ "MV": {
+ "name": "Maldives"
+ },
+ "ML": {
+ "name": "Mali"
+ },
+ "MT": {
+ "name": "Malta"
+ },
+ "MH": {
+ "name": "Marshall Islands"
+ },
+ "MQ": {
+ "name": "Martinique"
+ },
+ "MR": {
+ "name": "Mauritania"
+ },
+ "MU": {
+ "name": "Mauritius"
+ },
+ "YT": {
+ "name": "Mayotte"
+ },
+ "MX": {
+ "name": "Mexico"
+ },
+ "FM": {
+ "name": "Micronesia"
+ },
+ "MD": {
+ "name": "Moldova"
+ },
+ "MC": {
+ "name": "Monaco"
+ },
+ "MN": {
+ "name": "Mongolia"
+ },
+ "ME": {
+ "name": "Montenegro"
+ },
+ "MS": {
+ "name": "Montserrat"
+ },
+ "MA": {
+ "name": "Morocco"
+ },
+ "MZ": {
+ "name": "Mozambique"
+ },
+ "MM": {
+ "name": "Myanmar (Burma)"
+ },
+ "NA": {
+ "name": "Namibia"
+ },
+ "NR": {
+ "name": "Nauru"
+ },
+ "NP": {
+ "name": "Nepal"
+ },
+ "NL": {
+ "name": "Netherlands"
+ },
+ "NC": {
+ "name": "New Caledonia"
+ },
+ "NZ": {
+ "name": "New Zealand"
+ },
+ "NI": {
+ "name": "Nicaragua"
+ },
+ "NE": {
+ "name": "Niger"
+ },
+ "NG": {
+ "name": "Nigeria"
+ },
+ "NU": {
+ "name": "Niue"
+ },
+ "NF": {
+ "name": "Norfolk Island"
+ },
+ "KP": {
+ "name": "North Korea"
+ },
+ "MP": {
+ "name": "Northern Mariana Islands"
+ },
+ "NO": {
+ "name": "Norway"
+ },
+ "OM": {
+ "name": "Oman"
+ },
+ "PK": {
+ "name": "Pakistan"
+ },
+ "PW": {
+ "name": "Palau"
+ },
+ "PS": {
+ "name": "Palestinian Territories"
+ },
+ "PA": {
+ "name": "Panama"
+ },
+ "PG": {
+ "name": "Papua New Guinea"
+ },
+ "PY": {
+ "name": "Paraguay"
+ },
+ "PE": {
+ "name": "Peru"
+ },
+ "PH": {
+ "name": "Philippines"
+ },
+ "PN": {
+ "name": "Pitcairn Islands"
+ },
+ "PL": {
+ "name": "Poland"
+ },
+ "PT": {
+ "name": "Portugal"
+ },
+ "PR": {
+ "name": "Puerto Rico"
+ },
+ "QA": {
+ "name": "Qatar"
+ },
+ "RE": {
+ "name": "Réunion"
+ },
+ "RO": {
+ "name": "Romania"
+ },
+ "RU": {
+ "name": "Russia"
+ },
+ "RW": {
+ "name": "Rwanda"
+ },
+ "BL": {
+ "name": "Saint Barthélemy"
+ },
+ "SH": {
+ "name": "Saint Helena"
+ },
+ "KN": {
+ "name": "Saint Kitts and Nevis"
+ },
+ "LC": {
+ "name": "Saint Lucia"
+ },
+ "MF": {
+ "name": "Saint Martin"
+ },
+ "PM": {
+ "name": "Saint Pierre and Miquelon"
+ },
+ "WS": {
+ "name": "Samoa"
+ },
+ "SM": {
+ "name": "San Marino"
+ },
+ "ST": {
+ "name": "São Tomé and Príncipe"
+ },
+ "SA": {
+ "name": "Saudi Arabia"
+ },
+ "SN": {
+ "name": "Senegal"
+ },
+ "RS": {
+ "name": "Serbia"
+ },
+ "SC": {
+ "name": "Seychelles"
+ },
+ "SL": {
+ "name": "Sierra Leone"
+ },
+ "SG": {
+ "name": "Singapore"
+ },
+ "SX": {
+ "name": "Sint Maarten"
+ },
+ "SK": {
+ "name": "Slovakia"
+ },
+ "SI": {
+ "name": "Slovenia"
+ },
+ "SB": {
+ "name": "Solomon Islands"
+ },
+ "SO": {
+ "name": "Somalia"
+ },
+ "ZA": {
+ "name": "South Africa"
+ },
+ "GS": {
+ "name": "South Georgia & South Sandwich Islands"
+ },
+ "KR": {
+ "name": "South Korea"
+ },
+ "SS": {
+ "name": "South Sudan"
+ },
+ "ES": {
+ "name": "Spain"
+ },
+ "LK": {
+ "name": "Sri Lanka"
+ },
+ "VC": {
+ "name": "St. Vincent & Grenadines"
+ },
+ "SD": {
+ "name": "Sudan"
+ },
+ "SR": {
+ "name": "Suriname"
+ },
+ "SJ": {
+ "name": "Svalbard and Jan Mayen"
+ },
+ "SZ": {
+ "name": "Swaziland"
+ },
+ "SE": {
+ "name": "Sweden"
+ },
+ "CH": {
+ "name": "Switzerland"
+ },
+ "SY": {
+ "name": "Syria"
+ },
+ "TW": {
+ "name": "Taiwan"
+ },
+ "TJ": {
+ "name": "Tajikistan"
+ },
+ "TZ": {
+ "name": "Tanzania"
+ },
+ "TH": {
+ "name": "Thailand"
+ },
+ "TL": {
+ "name": "Timor-Leste"
+ },
+ "TG": {
+ "name": "Togo"
+ },
+ "TK": {
+ "name": "Tokelau"
+ },
+ "TO": {
+ "name": "Tonga"
+ },
+ "TT": {
+ "name": "Trinidad and Tobago"
+ },
+ "TA": {
+ "name": "Tristan da Cunha"
+ },
+ "TN": {
+ "name": "Tunisia"
+ },
+ "TR": {
+ "name": "Turkey"
+ },
+ "TM": {
+ "name": "Turkmenistan"
+ },
+ "TC": {
+ "name": "Turks and Caicos Islands"
+ },
+ "TV": {
+ "name": "Tuvalu"
+ },
+ "UM": {
+ "name": "U.S. Outlying Islands"
+ },
+ "VI": {
+ "name": "U.S. Virgin Islands"
+ },
+ "UG": {
+ "name": "Uganda"
+ },
+ "UA": {
+ "name": "Ukraine"
+ },
+ "AE": {
+ "name": "United Arab Emirates"
+ },
+ "GB": {
+ "name": "United Kingdom"
+ },
+ "US": {
+ "name": "United States"
+ },
+ "UY": {
+ "name": "Uruguay"
+ },
+ "UZ": {
+ "name": "Uzbekistan"
+ },
+ "VU": {
+ "name": "Vanuatu"
+ },
+ "VA": {
+ "name": "Vatican City"
+ },
+ "VE": {
+ "name": "Venezuela"
+ },
+ "VN": {
+ "name": "Vietnam"
+ },
+ "WF": {
+ "name": "Wallis and Futuna"
+ },
+ "EH": {
+ "name": "Western Sahara"
+ },
+ "YE": {
+ "name": "Yemen"
+ },
+ "ZM": {
+ "name": "Zambia"
+ },
+ "ZW": {
+ "name": "Zimbabwe"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/country/en-GG.json b/library/intl/resources/country/en-GG.json
new file mode 100644
index 000000000..081d5f4c0
--- /dev/null
+++ b/library/intl/resources/country/en-GG.json
@@ -0,0 +1,761 @@
+{
+ "AF": {
+ "name": "Afghanistan"
+ },
+ "AX": {
+ "name": "Ã…land Islands"
+ },
+ "AL": {
+ "name": "Albania"
+ },
+ "DZ": {
+ "name": "Algeria"
+ },
+ "AS": {
+ "name": "American Samoa"
+ },
+ "AD": {
+ "name": "Andorra"
+ },
+ "AO": {
+ "name": "Angola"
+ },
+ "AI": {
+ "name": "Anguilla"
+ },
+ "AQ": {
+ "name": "Antarctica"
+ },
+ "AG": {
+ "name": "Antigua and Barbuda"
+ },
+ "AR": {
+ "name": "Argentina"
+ },
+ "AM": {
+ "name": "Armenia"
+ },
+ "AW": {
+ "name": "Aruba"
+ },
+ "AC": {
+ "name": "Ascension Island"
+ },
+ "AU": {
+ "name": "Australia"
+ },
+ "AT": {
+ "name": "Austria"
+ },
+ "AZ": {
+ "name": "Azerbaijan"
+ },
+ "BS": {
+ "name": "Bahamas"
+ },
+ "BH": {
+ "name": "Bahrain"
+ },
+ "BD": {
+ "name": "Bangladesh"
+ },
+ "BB": {
+ "name": "Barbados"
+ },
+ "BY": {
+ "name": "Belarus"
+ },
+ "BE": {
+ "name": "Belgium"
+ },
+ "BZ": {
+ "name": "Belize"
+ },
+ "BJ": {
+ "name": "Benin"
+ },
+ "BM": {
+ "name": "Bermuda"
+ },
+ "BT": {
+ "name": "Bhutan"
+ },
+ "BO": {
+ "name": "Bolivia"
+ },
+ "BA": {
+ "name": "Bosnia and Herzegovina"
+ },
+ "BW": {
+ "name": "Botswana"
+ },
+ "BR": {
+ "name": "Brazil"
+ },
+ "IO": {
+ "name": "British Indian Ocean Territory"
+ },
+ "VG": {
+ "name": "British Virgin Islands"
+ },
+ "BN": {
+ "name": "Brunei"
+ },
+ "BG": {
+ "name": "Bulgaria"
+ },
+ "BF": {
+ "name": "Burkina Faso"
+ },
+ "BI": {
+ "name": "Burundi"
+ },
+ "KH": {
+ "name": "Cambodia"
+ },
+ "CM": {
+ "name": "Cameroon"
+ },
+ "CA": {
+ "name": "Canada"
+ },
+ "IC": {
+ "name": "Canary Islands"
+ },
+ "CV": {
+ "name": "Cape Verde"
+ },
+ "BQ": {
+ "name": "Caribbean Netherlands"
+ },
+ "KY": {
+ "name": "Cayman Islands"
+ },
+ "CF": {
+ "name": "Central African Republic"
+ },
+ "EA": {
+ "name": "Ceuta and Melilla"
+ },
+ "TD": {
+ "name": "Chad"
+ },
+ "CL": {
+ "name": "Chile"
+ },
+ "CN": {
+ "name": "China"
+ },
+ "CX": {
+ "name": "Christmas Island"
+ },
+ "CC": {
+ "name": "Cocos (Keeling) Islands"
+ },
+ "CO": {
+ "name": "Colombia"
+ },
+ "KM": {
+ "name": "Comoros"
+ },
+ "CG": {
+ "name": "Congo - Brazzaville"
+ },
+ "CD": {
+ "name": "Congo - Kinshasa"
+ },
+ "CK": {
+ "name": "Cook Islands"
+ },
+ "CR": {
+ "name": "Costa Rica"
+ },
+ "CI": {
+ "name": "Côte d’Ivoire"
+ },
+ "HR": {
+ "name": "Croatia"
+ },
+ "CU": {
+ "name": "Cuba"
+ },
+ "CW": {
+ "name": "Curaçao"
+ },
+ "CY": {
+ "name": "Cyprus"
+ },
+ "CZ": {
+ "name": "Czech Republic"
+ },
+ "DK": {
+ "name": "Denmark"
+ },
+ "DG": {
+ "name": "Diego Garcia"
+ },
+ "DJ": {
+ "name": "Djibouti"
+ },
+ "DM": {
+ "name": "Dominica"
+ },
+ "DO": {
+ "name": "Dominican Republic"
+ },
+ "EC": {
+ "name": "Ecuador"
+ },
+ "EG": {
+ "name": "Egypt"
+ },
+ "SV": {
+ "name": "El Salvador"
+ },
+ "GQ": {
+ "name": "Equatorial Guinea"
+ },
+ "ER": {
+ "name": "Eritrea"
+ },
+ "EE": {
+ "name": "Estonia"
+ },
+ "ET": {
+ "name": "Ethiopia"
+ },
+ "FK": {
+ "name": "Falkland Islands"
+ },
+ "FO": {
+ "name": "Faroe Islands"
+ },
+ "FJ": {
+ "name": "Fiji"
+ },
+ "FI": {
+ "name": "Finland"
+ },
+ "FR": {
+ "name": "France"
+ },
+ "GF": {
+ "name": "French Guiana"
+ },
+ "PF": {
+ "name": "French Polynesia"
+ },
+ "TF": {
+ "name": "French Southern Territories"
+ },
+ "GA": {
+ "name": "Gabon"
+ },
+ "GM": {
+ "name": "Gambia"
+ },
+ "GE": {
+ "name": "Georgia"
+ },
+ "DE": {
+ "name": "Germany"
+ },
+ "GH": {
+ "name": "Ghana"
+ },
+ "GI": {
+ "name": "Gibraltar"
+ },
+ "GR": {
+ "name": "Greece"
+ },
+ "GL": {
+ "name": "Greenland"
+ },
+ "GD": {
+ "name": "Grenada"
+ },
+ "GP": {
+ "name": "Guadeloupe"
+ },
+ "GU": {
+ "name": "Guam"
+ },
+ "GT": {
+ "name": "Guatemala"
+ },
+ "GG": {
+ "name": "Guernsey"
+ },
+ "GN": {
+ "name": "Guinea"
+ },
+ "GW": {
+ "name": "Guinea-Bissau"
+ },
+ "GY": {
+ "name": "Guyana"
+ },
+ "HT": {
+ "name": "Haiti"
+ },
+ "HN": {
+ "name": "Honduras"
+ },
+ "HK": {
+ "name": "Hong Kong SAR China"
+ },
+ "HU": {
+ "name": "Hungary"
+ },
+ "IS": {
+ "name": "Iceland"
+ },
+ "IN": {
+ "name": "India"
+ },
+ "ID": {
+ "name": "Indonesia"
+ },
+ "IR": {
+ "name": "Iran"
+ },
+ "IQ": {
+ "name": "Iraq"
+ },
+ "IE": {
+ "name": "Ireland"
+ },
+ "IM": {
+ "name": "Isle of Man"
+ },
+ "IL": {
+ "name": "Israel"
+ },
+ "IT": {
+ "name": "Italy"
+ },
+ "JM": {
+ "name": "Jamaica"
+ },
+ "JP": {
+ "name": "Japan"
+ },
+ "JE": {
+ "name": "Jersey"
+ },
+ "JO": {
+ "name": "Jordan"
+ },
+ "KZ": {
+ "name": "Kazakhstan"
+ },
+ "KE": {
+ "name": "Kenya"
+ },
+ "KI": {
+ "name": "Kiribati"
+ },
+ "XK": {
+ "name": "Kosovo"
+ },
+ "KW": {
+ "name": "Kuwait"
+ },
+ "KG": {
+ "name": "Kyrgyzstan"
+ },
+ "LA": {
+ "name": "Laos"
+ },
+ "LV": {
+ "name": "Latvia"
+ },
+ "LB": {
+ "name": "Lebanon"
+ },
+ "LS": {
+ "name": "Lesotho"
+ },
+ "LR": {
+ "name": "Liberia"
+ },
+ "LY": {
+ "name": "Libya"
+ },
+ "LI": {
+ "name": "Liechtenstein"
+ },
+ "LT": {
+ "name": "Lithuania"
+ },
+ "LU": {
+ "name": "Luxembourg"
+ },
+ "MO": {
+ "name": "Macau SAR China"
+ },
+ "MK": {
+ "name": "Macedonia"
+ },
+ "MG": {
+ "name": "Madagascar"
+ },
+ "MW": {
+ "name": "Malawi"
+ },
+ "MY": {
+ "name": "Malaysia"
+ },
+ "MV": {
+ "name": "Maldives"
+ },
+ "ML": {
+ "name": "Mali"
+ },
+ "MT": {
+ "name": "Malta"
+ },
+ "MH": {
+ "name": "Marshall Islands"
+ },
+ "MQ": {
+ "name": "Martinique"
+ },
+ "MR": {
+ "name": "Mauritania"
+ },
+ "MU": {
+ "name": "Mauritius"
+ },
+ "YT": {
+ "name": "Mayotte"
+ },
+ "MX": {
+ "name": "Mexico"
+ },
+ "FM": {
+ "name": "Micronesia"
+ },
+ "MD": {
+ "name": "Moldova"
+ },
+ "MC": {
+ "name": "Monaco"
+ },
+ "MN": {
+ "name": "Mongolia"
+ },
+ "ME": {
+ "name": "Montenegro"
+ },
+ "MS": {
+ "name": "Montserrat"
+ },
+ "MA": {
+ "name": "Morocco"
+ },
+ "MZ": {
+ "name": "Mozambique"
+ },
+ "MM": {
+ "name": "Myanmar (Burma)"
+ },
+ "NA": {
+ "name": "Namibia"
+ },
+ "NR": {
+ "name": "Nauru"
+ },
+ "NP": {
+ "name": "Nepal"
+ },
+ "NL": {
+ "name": "Netherlands"
+ },
+ "NC": {
+ "name": "New Caledonia"
+ },
+ "NZ": {
+ "name": "New Zealand"
+ },
+ "NI": {
+ "name": "Nicaragua"
+ },
+ "NE": {
+ "name": "Niger"
+ },
+ "NG": {
+ "name": "Nigeria"
+ },
+ "NU": {
+ "name": "Niue"
+ },
+ "NF": {
+ "name": "Norfolk Island"
+ },
+ "KP": {
+ "name": "North Korea"
+ },
+ "MP": {
+ "name": "Northern Mariana Islands"
+ },
+ "NO": {
+ "name": "Norway"
+ },
+ "OM": {
+ "name": "Oman"
+ },
+ "PK": {
+ "name": "Pakistan"
+ },
+ "PW": {
+ "name": "Palau"
+ },
+ "PS": {
+ "name": "Palestinian Territories"
+ },
+ "PA": {
+ "name": "Panama"
+ },
+ "PG": {
+ "name": "Papua New Guinea"
+ },
+ "PY": {
+ "name": "Paraguay"
+ },
+ "PE": {
+ "name": "Peru"
+ },
+ "PH": {
+ "name": "Philippines"
+ },
+ "PN": {
+ "name": "Pitcairn Islands"
+ },
+ "PL": {
+ "name": "Poland"
+ },
+ "PT": {
+ "name": "Portugal"
+ },
+ "PR": {
+ "name": "Puerto Rico"
+ },
+ "QA": {
+ "name": "Qatar"
+ },
+ "RE": {
+ "name": "Réunion"
+ },
+ "RO": {
+ "name": "Romania"
+ },
+ "RU": {
+ "name": "Russia"
+ },
+ "RW": {
+ "name": "Rwanda"
+ },
+ "BL": {
+ "name": "Saint Barthélemy"
+ },
+ "SH": {
+ "name": "Saint Helena"
+ },
+ "KN": {
+ "name": "Saint Kitts and Nevis"
+ },
+ "LC": {
+ "name": "Saint Lucia"
+ },
+ "MF": {
+ "name": "Saint Martin"
+ },
+ "PM": {
+ "name": "Saint Pierre and Miquelon"
+ },
+ "WS": {
+ "name": "Samoa"
+ },
+ "SM": {
+ "name": "San Marino"
+ },
+ "ST": {
+ "name": "São Tomé and Príncipe"
+ },
+ "SA": {
+ "name": "Saudi Arabia"
+ },
+ "SN": {
+ "name": "Senegal"
+ },
+ "RS": {
+ "name": "Serbia"
+ },
+ "SC": {
+ "name": "Seychelles"
+ },
+ "SL": {
+ "name": "Sierra Leone"
+ },
+ "SG": {
+ "name": "Singapore"
+ },
+ "SX": {
+ "name": "Sint Maarten"
+ },
+ "SK": {
+ "name": "Slovakia"
+ },
+ "SI": {
+ "name": "Slovenia"
+ },
+ "SB": {
+ "name": "Solomon Islands"
+ },
+ "SO": {
+ "name": "Somalia"
+ },
+ "ZA": {
+ "name": "South Africa"
+ },
+ "GS": {
+ "name": "South Georgia & South Sandwich Islands"
+ },
+ "KR": {
+ "name": "South Korea"
+ },
+ "SS": {
+ "name": "South Sudan"
+ },
+ "ES": {
+ "name": "Spain"
+ },
+ "LK": {
+ "name": "Sri Lanka"
+ },
+ "VC": {
+ "name": "St. Vincent & Grenadines"
+ },
+ "SD": {
+ "name": "Sudan"
+ },
+ "SR": {
+ "name": "Suriname"
+ },
+ "SJ": {
+ "name": "Svalbard and Jan Mayen"
+ },
+ "SZ": {
+ "name": "Swaziland"
+ },
+ "SE": {
+ "name": "Sweden"
+ },
+ "CH": {
+ "name": "Switzerland"
+ },
+ "SY": {
+ "name": "Syria"
+ },
+ "TW": {
+ "name": "Taiwan"
+ },
+ "TJ": {
+ "name": "Tajikistan"
+ },
+ "TZ": {
+ "name": "Tanzania"
+ },
+ "TH": {
+ "name": "Thailand"
+ },
+ "TL": {
+ "name": "Timor-Leste"
+ },
+ "TG": {
+ "name": "Togo"
+ },
+ "TK": {
+ "name": "Tokelau"
+ },
+ "TO": {
+ "name": "Tonga"
+ },
+ "TT": {
+ "name": "Trinidad and Tobago"
+ },
+ "TA": {
+ "name": "Tristan da Cunha"
+ },
+ "TN": {
+ "name": "Tunisia"
+ },
+ "TR": {
+ "name": "Turkey"
+ },
+ "TM": {
+ "name": "Turkmenistan"
+ },
+ "TC": {
+ "name": "Turks and Caicos Islands"
+ },
+ "TV": {
+ "name": "Tuvalu"
+ },
+ "UM": {
+ "name": "U.S. Outlying Islands"
+ },
+ "VI": {
+ "name": "U.S. Virgin Islands"
+ },
+ "UG": {
+ "name": "Uganda"
+ },
+ "UA": {
+ "name": "Ukraine"
+ },
+ "AE": {
+ "name": "United Arab Emirates"
+ },
+ "GB": {
+ "name": "United Kingdom"
+ },
+ "US": {
+ "name": "United States"
+ },
+ "UY": {
+ "name": "Uruguay"
+ },
+ "UZ": {
+ "name": "Uzbekistan"
+ },
+ "VU": {
+ "name": "Vanuatu"
+ },
+ "VA": {
+ "name": "Vatican City"
+ },
+ "VE": {
+ "name": "Venezuela"
+ },
+ "VN": {
+ "name": "Vietnam"
+ },
+ "WF": {
+ "name": "Wallis and Futuna"
+ },
+ "EH": {
+ "name": "Western Sahara"
+ },
+ "YE": {
+ "name": "Yemen"
+ },
+ "ZM": {
+ "name": "Zambia"
+ },
+ "ZW": {
+ "name": "Zimbabwe"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/country/en-GI.json b/library/intl/resources/country/en-GI.json
new file mode 100644
index 000000000..081d5f4c0
--- /dev/null
+++ b/library/intl/resources/country/en-GI.json
@@ -0,0 +1,761 @@
+{
+ "AF": {
+ "name": "Afghanistan"
+ },
+ "AX": {
+ "name": "Ã…land Islands"
+ },
+ "AL": {
+ "name": "Albania"
+ },
+ "DZ": {
+ "name": "Algeria"
+ },
+ "AS": {
+ "name": "American Samoa"
+ },
+ "AD": {
+ "name": "Andorra"
+ },
+ "AO": {
+ "name": "Angola"
+ },
+ "AI": {
+ "name": "Anguilla"
+ },
+ "AQ": {
+ "name": "Antarctica"
+ },
+ "AG": {
+ "name": "Antigua and Barbuda"
+ },
+ "AR": {
+ "name": "Argentina"
+ },
+ "AM": {
+ "name": "Armenia"
+ },
+ "AW": {
+ "name": "Aruba"
+ },
+ "AC": {
+ "name": "Ascension Island"
+ },
+ "AU": {
+ "name": "Australia"
+ },
+ "AT": {
+ "name": "Austria"
+ },
+ "AZ": {
+ "name": "Azerbaijan"
+ },
+ "BS": {
+ "name": "Bahamas"
+ },
+ "BH": {
+ "name": "Bahrain"
+ },
+ "BD": {
+ "name": "Bangladesh"
+ },
+ "BB": {
+ "name": "Barbados"
+ },
+ "BY": {
+ "name": "Belarus"
+ },
+ "BE": {
+ "name": "Belgium"
+ },
+ "BZ": {
+ "name": "Belize"
+ },
+ "BJ": {
+ "name": "Benin"
+ },
+ "BM": {
+ "name": "Bermuda"
+ },
+ "BT": {
+ "name": "Bhutan"
+ },
+ "BO": {
+ "name": "Bolivia"
+ },
+ "BA": {
+ "name": "Bosnia and Herzegovina"
+ },
+ "BW": {
+ "name": "Botswana"
+ },
+ "BR": {
+ "name": "Brazil"
+ },
+ "IO": {
+ "name": "British Indian Ocean Territory"
+ },
+ "VG": {
+ "name": "British Virgin Islands"
+ },
+ "BN": {
+ "name": "Brunei"
+ },
+ "BG": {
+ "name": "Bulgaria"
+ },
+ "BF": {
+ "name": "Burkina Faso"
+ },
+ "BI": {
+ "name": "Burundi"
+ },
+ "KH": {
+ "name": "Cambodia"
+ },
+ "CM": {
+ "name": "Cameroon"
+ },
+ "CA": {
+ "name": "Canada"
+ },
+ "IC": {
+ "name": "Canary Islands"
+ },
+ "CV": {
+ "name": "Cape Verde"
+ },
+ "BQ": {
+ "name": "Caribbean Netherlands"
+ },
+ "KY": {
+ "name": "Cayman Islands"
+ },
+ "CF": {
+ "name": "Central African Republic"
+ },
+ "EA": {
+ "name": "Ceuta and Melilla"
+ },
+ "TD": {
+ "name": "Chad"
+ },
+ "CL": {
+ "name": "Chile"
+ },
+ "CN": {
+ "name": "China"
+ },
+ "CX": {
+ "name": "Christmas Island"
+ },
+ "CC": {
+ "name": "Cocos (Keeling) Islands"
+ },
+ "CO": {
+ "name": "Colombia"
+ },
+ "KM": {
+ "name": "Comoros"
+ },
+ "CG": {
+ "name": "Congo - Brazzaville"
+ },
+ "CD": {
+ "name": "Congo - Kinshasa"
+ },
+ "CK": {
+ "name": "Cook Islands"
+ },
+ "CR": {
+ "name": "Costa Rica"
+ },
+ "CI": {
+ "name": "Côte d’Ivoire"
+ },
+ "HR": {
+ "name": "Croatia"
+ },
+ "CU": {
+ "name": "Cuba"
+ },
+ "CW": {
+ "name": "Curaçao"
+ },
+ "CY": {
+ "name": "Cyprus"
+ },
+ "CZ": {
+ "name": "Czech Republic"
+ },
+ "DK": {
+ "name": "Denmark"
+ },
+ "DG": {
+ "name": "Diego Garcia"
+ },
+ "DJ": {
+ "name": "Djibouti"
+ },
+ "DM": {
+ "name": "Dominica"
+ },
+ "DO": {
+ "name": "Dominican Republic"
+ },
+ "EC": {
+ "name": "Ecuador"
+ },
+ "EG": {
+ "name": "Egypt"
+ },
+ "SV": {
+ "name": "El Salvador"
+ },
+ "GQ": {
+ "name": "Equatorial Guinea"
+ },
+ "ER": {
+ "name": "Eritrea"
+ },
+ "EE": {
+ "name": "Estonia"
+ },
+ "ET": {
+ "name": "Ethiopia"
+ },
+ "FK": {
+ "name": "Falkland Islands"
+ },
+ "FO": {
+ "name": "Faroe Islands"
+ },
+ "FJ": {
+ "name": "Fiji"
+ },
+ "FI": {
+ "name": "Finland"
+ },
+ "FR": {
+ "name": "France"
+ },
+ "GF": {
+ "name": "French Guiana"
+ },
+ "PF": {
+ "name": "French Polynesia"
+ },
+ "TF": {
+ "name": "French Southern Territories"
+ },
+ "GA": {
+ "name": "Gabon"
+ },
+ "GM": {
+ "name": "Gambia"
+ },
+ "GE": {
+ "name": "Georgia"
+ },
+ "DE": {
+ "name": "Germany"
+ },
+ "GH": {
+ "name": "Ghana"
+ },
+ "GI": {
+ "name": "Gibraltar"
+ },
+ "GR": {
+ "name": "Greece"
+ },
+ "GL": {
+ "name": "Greenland"
+ },
+ "GD": {
+ "name": "Grenada"
+ },
+ "GP": {
+ "name": "Guadeloupe"
+ },
+ "GU": {
+ "name": "Guam"
+ },
+ "GT": {
+ "name": "Guatemala"
+ },
+ "GG": {
+ "name": "Guernsey"
+ },
+ "GN": {
+ "name": "Guinea"
+ },
+ "GW": {
+ "name": "Guinea-Bissau"
+ },
+ "GY": {
+ "name": "Guyana"
+ },
+ "HT": {
+ "name": "Haiti"
+ },
+ "HN": {
+ "name": "Honduras"
+ },
+ "HK": {
+ "name": "Hong Kong SAR China"
+ },
+ "HU": {
+ "name": "Hungary"
+ },
+ "IS": {
+ "name": "Iceland"
+ },
+ "IN": {
+ "name": "India"
+ },
+ "ID": {
+ "name": "Indonesia"
+ },
+ "IR": {
+ "name": "Iran"
+ },
+ "IQ": {
+ "name": "Iraq"
+ },
+ "IE": {
+ "name": "Ireland"
+ },
+ "IM": {
+ "name": "Isle of Man"
+ },
+ "IL": {
+ "name": "Israel"
+ },
+ "IT": {
+ "name": "Italy"
+ },
+ "JM": {
+ "name": "Jamaica"
+ },
+ "JP": {
+ "name": "Japan"
+ },
+ "JE": {
+ "name": "Jersey"
+ },
+ "JO": {
+ "name": "Jordan"
+ },
+ "KZ": {
+ "name": "Kazakhstan"
+ },
+ "KE": {
+ "name": "Kenya"
+ },
+ "KI": {
+ "name": "Kiribati"
+ },
+ "XK": {
+ "name": "Kosovo"
+ },
+ "KW": {
+ "name": "Kuwait"
+ },
+ "KG": {
+ "name": "Kyrgyzstan"
+ },
+ "LA": {
+ "name": "Laos"
+ },
+ "LV": {
+ "name": "Latvia"
+ },
+ "LB": {
+ "name": "Lebanon"
+ },
+ "LS": {
+ "name": "Lesotho"
+ },
+ "LR": {
+ "name": "Liberia"
+ },
+ "LY": {
+ "name": "Libya"
+ },
+ "LI": {
+ "name": "Liechtenstein"
+ },
+ "LT": {
+ "name": "Lithuania"
+ },
+ "LU": {
+ "name": "Luxembourg"
+ },
+ "MO": {
+ "name": "Macau SAR China"
+ },
+ "MK": {
+ "name": "Macedonia"
+ },
+ "MG": {
+ "name": "Madagascar"
+ },
+ "MW": {
+ "name": "Malawi"
+ },
+ "MY": {
+ "name": "Malaysia"
+ },
+ "MV": {
+ "name": "Maldives"
+ },
+ "ML": {
+ "name": "Mali"
+ },
+ "MT": {
+ "name": "Malta"
+ },
+ "MH": {
+ "name": "Marshall Islands"
+ },
+ "MQ": {
+ "name": "Martinique"
+ },
+ "MR": {
+ "name": "Mauritania"
+ },
+ "MU": {
+ "name": "Mauritius"
+ },
+ "YT": {
+ "name": "Mayotte"
+ },
+ "MX": {
+ "name": "Mexico"
+ },
+ "FM": {
+ "name": "Micronesia"
+ },
+ "MD": {
+ "name": "Moldova"
+ },
+ "MC": {
+ "name": "Monaco"
+ },
+ "MN": {
+ "name": "Mongolia"
+ },
+ "ME": {
+ "name": "Montenegro"
+ },
+ "MS": {
+ "name": "Montserrat"
+ },
+ "MA": {
+ "name": "Morocco"
+ },
+ "MZ": {
+ "name": "Mozambique"
+ },
+ "MM": {
+ "name": "Myanmar (Burma)"
+ },
+ "NA": {
+ "name": "Namibia"
+ },
+ "NR": {
+ "name": "Nauru"
+ },
+ "NP": {
+ "name": "Nepal"
+ },
+ "NL": {
+ "name": "Netherlands"
+ },
+ "NC": {
+ "name": "New Caledonia"
+ },
+ "NZ": {
+ "name": "New Zealand"
+ },
+ "NI": {
+ "name": "Nicaragua"
+ },
+ "NE": {
+ "name": "Niger"
+ },
+ "NG": {
+ "name": "Nigeria"
+ },
+ "NU": {
+ "name": "Niue"
+ },
+ "NF": {
+ "name": "Norfolk Island"
+ },
+ "KP": {
+ "name": "North Korea"
+ },
+ "MP": {
+ "name": "Northern Mariana Islands"
+ },
+ "NO": {
+ "name": "Norway"
+ },
+ "OM": {
+ "name": "Oman"
+ },
+ "PK": {
+ "name": "Pakistan"
+ },
+ "PW": {
+ "name": "Palau"
+ },
+ "PS": {
+ "name": "Palestinian Territories"
+ },
+ "PA": {
+ "name": "Panama"
+ },
+ "PG": {
+ "name": "Papua New Guinea"
+ },
+ "PY": {
+ "name": "Paraguay"
+ },
+ "PE": {
+ "name": "Peru"
+ },
+ "PH": {
+ "name": "Philippines"
+ },
+ "PN": {
+ "name": "Pitcairn Islands"
+ },
+ "PL": {
+ "name": "Poland"
+ },
+ "PT": {
+ "name": "Portugal"
+ },
+ "PR": {
+ "name": "Puerto Rico"
+ },
+ "QA": {
+ "name": "Qatar"
+ },
+ "RE": {
+ "name": "Réunion"
+ },
+ "RO": {
+ "name": "Romania"
+ },
+ "RU": {
+ "name": "Russia"
+ },
+ "RW": {
+ "name": "Rwanda"
+ },
+ "BL": {
+ "name": "Saint Barthélemy"
+ },
+ "SH": {
+ "name": "Saint Helena"
+ },
+ "KN": {
+ "name": "Saint Kitts and Nevis"
+ },
+ "LC": {
+ "name": "Saint Lucia"
+ },
+ "MF": {
+ "name": "Saint Martin"
+ },
+ "PM": {
+ "name": "Saint Pierre and Miquelon"
+ },
+ "WS": {
+ "name": "Samoa"
+ },
+ "SM": {
+ "name": "San Marino"
+ },
+ "ST": {
+ "name": "São Tomé and Príncipe"
+ },
+ "SA": {
+ "name": "Saudi Arabia"
+ },
+ "SN": {
+ "name": "Senegal"
+ },
+ "RS": {
+ "name": "Serbia"
+ },
+ "SC": {
+ "name": "Seychelles"
+ },
+ "SL": {
+ "name": "Sierra Leone"
+ },
+ "SG": {
+ "name": "Singapore"
+ },
+ "SX": {
+ "name": "Sint Maarten"
+ },
+ "SK": {
+ "name": "Slovakia"
+ },
+ "SI": {
+ "name": "Slovenia"
+ },
+ "SB": {
+ "name": "Solomon Islands"
+ },
+ "SO": {
+ "name": "Somalia"
+ },
+ "ZA": {
+ "name": "South Africa"
+ },
+ "GS": {
+ "name": "South Georgia & South Sandwich Islands"
+ },
+ "KR": {
+ "name": "South Korea"
+ },
+ "SS": {
+ "name": "South Sudan"
+ },
+ "ES": {
+ "name": "Spain"
+ },
+ "LK": {
+ "name": "Sri Lanka"
+ },
+ "VC": {
+ "name": "St. Vincent & Grenadines"
+ },
+ "SD": {
+ "name": "Sudan"
+ },
+ "SR": {
+ "name": "Suriname"
+ },
+ "SJ": {
+ "name": "Svalbard and Jan Mayen"
+ },
+ "SZ": {
+ "name": "Swaziland"
+ },
+ "SE": {
+ "name": "Sweden"
+ },
+ "CH": {
+ "name": "Switzerland"
+ },
+ "SY": {
+ "name": "Syria"
+ },
+ "TW": {
+ "name": "Taiwan"
+ },
+ "TJ": {
+ "name": "Tajikistan"
+ },
+ "TZ": {
+ "name": "Tanzania"
+ },
+ "TH": {
+ "name": "Thailand"
+ },
+ "TL": {
+ "name": "Timor-Leste"
+ },
+ "TG": {
+ "name": "Togo"
+ },
+ "TK": {
+ "name": "Tokelau"
+ },
+ "TO": {
+ "name": "Tonga"
+ },
+ "TT": {
+ "name": "Trinidad and Tobago"
+ },
+ "TA": {
+ "name": "Tristan da Cunha"
+ },
+ "TN": {
+ "name": "Tunisia"
+ },
+ "TR": {
+ "name": "Turkey"
+ },
+ "TM": {
+ "name": "Turkmenistan"
+ },
+ "TC": {
+ "name": "Turks and Caicos Islands"
+ },
+ "TV": {
+ "name": "Tuvalu"
+ },
+ "UM": {
+ "name": "U.S. Outlying Islands"
+ },
+ "VI": {
+ "name": "U.S. Virgin Islands"
+ },
+ "UG": {
+ "name": "Uganda"
+ },
+ "UA": {
+ "name": "Ukraine"
+ },
+ "AE": {
+ "name": "United Arab Emirates"
+ },
+ "GB": {
+ "name": "United Kingdom"
+ },
+ "US": {
+ "name": "United States"
+ },
+ "UY": {
+ "name": "Uruguay"
+ },
+ "UZ": {
+ "name": "Uzbekistan"
+ },
+ "VU": {
+ "name": "Vanuatu"
+ },
+ "VA": {
+ "name": "Vatican City"
+ },
+ "VE": {
+ "name": "Venezuela"
+ },
+ "VN": {
+ "name": "Vietnam"
+ },
+ "WF": {
+ "name": "Wallis and Futuna"
+ },
+ "EH": {
+ "name": "Western Sahara"
+ },
+ "YE": {
+ "name": "Yemen"
+ },
+ "ZM": {
+ "name": "Zambia"
+ },
+ "ZW": {
+ "name": "Zimbabwe"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/country/en-HK.json b/library/intl/resources/country/en-HK.json
new file mode 100644
index 000000000..081d5f4c0
--- /dev/null
+++ b/library/intl/resources/country/en-HK.json
@@ -0,0 +1,761 @@
+{
+ "AF": {
+ "name": "Afghanistan"
+ },
+ "AX": {
+ "name": "Ã…land Islands"
+ },
+ "AL": {
+ "name": "Albania"
+ },
+ "DZ": {
+ "name": "Algeria"
+ },
+ "AS": {
+ "name": "American Samoa"
+ },
+ "AD": {
+ "name": "Andorra"
+ },
+ "AO": {
+ "name": "Angola"
+ },
+ "AI": {
+ "name": "Anguilla"
+ },
+ "AQ": {
+ "name": "Antarctica"
+ },
+ "AG": {
+ "name": "Antigua and Barbuda"
+ },
+ "AR": {
+ "name": "Argentina"
+ },
+ "AM": {
+ "name": "Armenia"
+ },
+ "AW": {
+ "name": "Aruba"
+ },
+ "AC": {
+ "name": "Ascension Island"
+ },
+ "AU": {
+ "name": "Australia"
+ },
+ "AT": {
+ "name": "Austria"
+ },
+ "AZ": {
+ "name": "Azerbaijan"
+ },
+ "BS": {
+ "name": "Bahamas"
+ },
+ "BH": {
+ "name": "Bahrain"
+ },
+ "BD": {
+ "name": "Bangladesh"
+ },
+ "BB": {
+ "name": "Barbados"
+ },
+ "BY": {
+ "name": "Belarus"
+ },
+ "BE": {
+ "name": "Belgium"
+ },
+ "BZ": {
+ "name": "Belize"
+ },
+ "BJ": {
+ "name": "Benin"
+ },
+ "BM": {
+ "name": "Bermuda"
+ },
+ "BT": {
+ "name": "Bhutan"
+ },
+ "BO": {
+ "name": "Bolivia"
+ },
+ "BA": {
+ "name": "Bosnia and Herzegovina"
+ },
+ "BW": {
+ "name": "Botswana"
+ },
+ "BR": {
+ "name": "Brazil"
+ },
+ "IO": {
+ "name": "British Indian Ocean Territory"
+ },
+ "VG": {
+ "name": "British Virgin Islands"
+ },
+ "BN": {
+ "name": "Brunei"
+ },
+ "BG": {
+ "name": "Bulgaria"
+ },
+ "BF": {
+ "name": "Burkina Faso"
+ },
+ "BI": {
+ "name": "Burundi"
+ },
+ "KH": {
+ "name": "Cambodia"
+ },
+ "CM": {
+ "name": "Cameroon"
+ },
+ "CA": {
+ "name": "Canada"
+ },
+ "IC": {
+ "name": "Canary Islands"
+ },
+ "CV": {
+ "name": "Cape Verde"
+ },
+ "BQ": {
+ "name": "Caribbean Netherlands"
+ },
+ "KY": {
+ "name": "Cayman Islands"
+ },
+ "CF": {
+ "name": "Central African Republic"
+ },
+ "EA": {
+ "name": "Ceuta and Melilla"
+ },
+ "TD": {
+ "name": "Chad"
+ },
+ "CL": {
+ "name": "Chile"
+ },
+ "CN": {
+ "name": "China"
+ },
+ "CX": {
+ "name": "Christmas Island"
+ },
+ "CC": {
+ "name": "Cocos (Keeling) Islands"
+ },
+ "CO": {
+ "name": "Colombia"
+ },
+ "KM": {
+ "name": "Comoros"
+ },
+ "CG": {
+ "name": "Congo - Brazzaville"
+ },
+ "CD": {
+ "name": "Congo - Kinshasa"
+ },
+ "CK": {
+ "name": "Cook Islands"
+ },
+ "CR": {
+ "name": "Costa Rica"
+ },
+ "CI": {
+ "name": "Côte d’Ivoire"
+ },
+ "HR": {
+ "name": "Croatia"
+ },
+ "CU": {
+ "name": "Cuba"
+ },
+ "CW": {
+ "name": "Curaçao"
+ },
+ "CY": {
+ "name": "Cyprus"
+ },
+ "CZ": {
+ "name": "Czech Republic"
+ },
+ "DK": {
+ "name": "Denmark"
+ },
+ "DG": {
+ "name": "Diego Garcia"
+ },
+ "DJ": {
+ "name": "Djibouti"
+ },
+ "DM": {
+ "name": "Dominica"
+ },
+ "DO": {
+ "name": "Dominican Republic"
+ },
+ "EC": {
+ "name": "Ecuador"
+ },
+ "EG": {
+ "name": "Egypt"
+ },
+ "SV": {
+ "name": "El Salvador"
+ },
+ "GQ": {
+ "name": "Equatorial Guinea"
+ },
+ "ER": {
+ "name": "Eritrea"
+ },
+ "EE": {
+ "name": "Estonia"
+ },
+ "ET": {
+ "name": "Ethiopia"
+ },
+ "FK": {
+ "name": "Falkland Islands"
+ },
+ "FO": {
+ "name": "Faroe Islands"
+ },
+ "FJ": {
+ "name": "Fiji"
+ },
+ "FI": {
+ "name": "Finland"
+ },
+ "FR": {
+ "name": "France"
+ },
+ "GF": {
+ "name": "French Guiana"
+ },
+ "PF": {
+ "name": "French Polynesia"
+ },
+ "TF": {
+ "name": "French Southern Territories"
+ },
+ "GA": {
+ "name": "Gabon"
+ },
+ "GM": {
+ "name": "Gambia"
+ },
+ "GE": {
+ "name": "Georgia"
+ },
+ "DE": {
+ "name": "Germany"
+ },
+ "GH": {
+ "name": "Ghana"
+ },
+ "GI": {
+ "name": "Gibraltar"
+ },
+ "GR": {
+ "name": "Greece"
+ },
+ "GL": {
+ "name": "Greenland"
+ },
+ "GD": {
+ "name": "Grenada"
+ },
+ "GP": {
+ "name": "Guadeloupe"
+ },
+ "GU": {
+ "name": "Guam"
+ },
+ "GT": {
+ "name": "Guatemala"
+ },
+ "GG": {
+ "name": "Guernsey"
+ },
+ "GN": {
+ "name": "Guinea"
+ },
+ "GW": {
+ "name": "Guinea-Bissau"
+ },
+ "GY": {
+ "name": "Guyana"
+ },
+ "HT": {
+ "name": "Haiti"
+ },
+ "HN": {
+ "name": "Honduras"
+ },
+ "HK": {
+ "name": "Hong Kong SAR China"
+ },
+ "HU": {
+ "name": "Hungary"
+ },
+ "IS": {
+ "name": "Iceland"
+ },
+ "IN": {
+ "name": "India"
+ },
+ "ID": {
+ "name": "Indonesia"
+ },
+ "IR": {
+ "name": "Iran"
+ },
+ "IQ": {
+ "name": "Iraq"
+ },
+ "IE": {
+ "name": "Ireland"
+ },
+ "IM": {
+ "name": "Isle of Man"
+ },
+ "IL": {
+ "name": "Israel"
+ },
+ "IT": {
+ "name": "Italy"
+ },
+ "JM": {
+ "name": "Jamaica"
+ },
+ "JP": {
+ "name": "Japan"
+ },
+ "JE": {
+ "name": "Jersey"
+ },
+ "JO": {
+ "name": "Jordan"
+ },
+ "KZ": {
+ "name": "Kazakhstan"
+ },
+ "KE": {
+ "name": "Kenya"
+ },
+ "KI": {
+ "name": "Kiribati"
+ },
+ "XK": {
+ "name": "Kosovo"
+ },
+ "KW": {
+ "name": "Kuwait"
+ },
+ "KG": {
+ "name": "Kyrgyzstan"
+ },
+ "LA": {
+ "name": "Laos"
+ },
+ "LV": {
+ "name": "Latvia"
+ },
+ "LB": {
+ "name": "Lebanon"
+ },
+ "LS": {
+ "name": "Lesotho"
+ },
+ "LR": {
+ "name": "Liberia"
+ },
+ "LY": {
+ "name": "Libya"
+ },
+ "LI": {
+ "name": "Liechtenstein"
+ },
+ "LT": {
+ "name": "Lithuania"
+ },
+ "LU": {
+ "name": "Luxembourg"
+ },
+ "MO": {
+ "name": "Macau SAR China"
+ },
+ "MK": {
+ "name": "Macedonia"
+ },
+ "MG": {
+ "name": "Madagascar"
+ },
+ "MW": {
+ "name": "Malawi"
+ },
+ "MY": {
+ "name": "Malaysia"
+ },
+ "MV": {
+ "name": "Maldives"
+ },
+ "ML": {
+ "name": "Mali"
+ },
+ "MT": {
+ "name": "Malta"
+ },
+ "MH": {
+ "name": "Marshall Islands"
+ },
+ "MQ": {
+ "name": "Martinique"
+ },
+ "MR": {
+ "name": "Mauritania"
+ },
+ "MU": {
+ "name": "Mauritius"
+ },
+ "YT": {
+ "name": "Mayotte"
+ },
+ "MX": {
+ "name": "Mexico"
+ },
+ "FM": {
+ "name": "Micronesia"
+ },
+ "MD": {
+ "name": "Moldova"
+ },
+ "MC": {
+ "name": "Monaco"
+ },
+ "MN": {
+ "name": "Mongolia"
+ },
+ "ME": {
+ "name": "Montenegro"
+ },
+ "MS": {
+ "name": "Montserrat"
+ },
+ "MA": {
+ "name": "Morocco"
+ },
+ "MZ": {
+ "name": "Mozambique"
+ },
+ "MM": {
+ "name": "Myanmar (Burma)"
+ },
+ "NA": {
+ "name": "Namibia"
+ },
+ "NR": {
+ "name": "Nauru"
+ },
+ "NP": {
+ "name": "Nepal"
+ },
+ "NL": {
+ "name": "Netherlands"
+ },
+ "NC": {
+ "name": "New Caledonia"
+ },
+ "NZ": {
+ "name": "New Zealand"
+ },
+ "NI": {
+ "name": "Nicaragua"
+ },
+ "NE": {
+ "name": "Niger"
+ },
+ "NG": {
+ "name": "Nigeria"
+ },
+ "NU": {
+ "name": "Niue"
+ },
+ "NF": {
+ "name": "Norfolk Island"
+ },
+ "KP": {
+ "name": "North Korea"
+ },
+ "MP": {
+ "name": "Northern Mariana Islands"
+ },
+ "NO": {
+ "name": "Norway"
+ },
+ "OM": {
+ "name": "Oman"
+ },
+ "PK": {
+ "name": "Pakistan"
+ },
+ "PW": {
+ "name": "Palau"
+ },
+ "PS": {
+ "name": "Palestinian Territories"
+ },
+ "PA": {
+ "name": "Panama"
+ },
+ "PG": {
+ "name": "Papua New Guinea"
+ },
+ "PY": {
+ "name": "Paraguay"
+ },
+ "PE": {
+ "name": "Peru"
+ },
+ "PH": {
+ "name": "Philippines"
+ },
+ "PN": {
+ "name": "Pitcairn Islands"
+ },
+ "PL": {
+ "name": "Poland"
+ },
+ "PT": {
+ "name": "Portugal"
+ },
+ "PR": {
+ "name": "Puerto Rico"
+ },
+ "QA": {
+ "name": "Qatar"
+ },
+ "RE": {
+ "name": "Réunion"
+ },
+ "RO": {
+ "name": "Romania"
+ },
+ "RU": {
+ "name": "Russia"
+ },
+ "RW": {
+ "name": "Rwanda"
+ },
+ "BL": {
+ "name": "Saint Barthélemy"
+ },
+ "SH": {
+ "name": "Saint Helena"
+ },
+ "KN": {
+ "name": "Saint Kitts and Nevis"
+ },
+ "LC": {
+ "name": "Saint Lucia"
+ },
+ "MF": {
+ "name": "Saint Martin"
+ },
+ "PM": {
+ "name": "Saint Pierre and Miquelon"
+ },
+ "WS": {
+ "name": "Samoa"
+ },
+ "SM": {
+ "name": "San Marino"
+ },
+ "ST": {
+ "name": "São Tomé and Príncipe"
+ },
+ "SA": {
+ "name": "Saudi Arabia"
+ },
+ "SN": {
+ "name": "Senegal"
+ },
+ "RS": {
+ "name": "Serbia"
+ },
+ "SC": {
+ "name": "Seychelles"
+ },
+ "SL": {
+ "name": "Sierra Leone"
+ },
+ "SG": {
+ "name": "Singapore"
+ },
+ "SX": {
+ "name": "Sint Maarten"
+ },
+ "SK": {
+ "name": "Slovakia"
+ },
+ "SI": {
+ "name": "Slovenia"
+ },
+ "SB": {
+ "name": "Solomon Islands"
+ },
+ "SO": {
+ "name": "Somalia"
+ },
+ "ZA": {
+ "name": "South Africa"
+ },
+ "GS": {
+ "name": "South Georgia & South Sandwich Islands"
+ },
+ "KR": {
+ "name": "South Korea"
+ },
+ "SS": {
+ "name": "South Sudan"
+ },
+ "ES": {
+ "name": "Spain"
+ },
+ "LK": {
+ "name": "Sri Lanka"
+ },
+ "VC": {
+ "name": "St. Vincent & Grenadines"
+ },
+ "SD": {
+ "name": "Sudan"
+ },
+ "SR": {
+ "name": "Suriname"
+ },
+ "SJ": {
+ "name": "Svalbard and Jan Mayen"
+ },
+ "SZ": {
+ "name": "Swaziland"
+ },
+ "SE": {
+ "name": "Sweden"
+ },
+ "CH": {
+ "name": "Switzerland"
+ },
+ "SY": {
+ "name": "Syria"
+ },
+ "TW": {
+ "name": "Taiwan"
+ },
+ "TJ": {
+ "name": "Tajikistan"
+ },
+ "TZ": {
+ "name": "Tanzania"
+ },
+ "TH": {
+ "name": "Thailand"
+ },
+ "TL": {
+ "name": "Timor-Leste"
+ },
+ "TG": {
+ "name": "Togo"
+ },
+ "TK": {
+ "name": "Tokelau"
+ },
+ "TO": {
+ "name": "Tonga"
+ },
+ "TT": {
+ "name": "Trinidad and Tobago"
+ },
+ "TA": {
+ "name": "Tristan da Cunha"
+ },
+ "TN": {
+ "name": "Tunisia"
+ },
+ "TR": {
+ "name": "Turkey"
+ },
+ "TM": {
+ "name": "Turkmenistan"
+ },
+ "TC": {
+ "name": "Turks and Caicos Islands"
+ },
+ "TV": {
+ "name": "Tuvalu"
+ },
+ "UM": {
+ "name": "U.S. Outlying Islands"
+ },
+ "VI": {
+ "name": "U.S. Virgin Islands"
+ },
+ "UG": {
+ "name": "Uganda"
+ },
+ "UA": {
+ "name": "Ukraine"
+ },
+ "AE": {
+ "name": "United Arab Emirates"
+ },
+ "GB": {
+ "name": "United Kingdom"
+ },
+ "US": {
+ "name": "United States"
+ },
+ "UY": {
+ "name": "Uruguay"
+ },
+ "UZ": {
+ "name": "Uzbekistan"
+ },
+ "VU": {
+ "name": "Vanuatu"
+ },
+ "VA": {
+ "name": "Vatican City"
+ },
+ "VE": {
+ "name": "Venezuela"
+ },
+ "VN": {
+ "name": "Vietnam"
+ },
+ "WF": {
+ "name": "Wallis and Futuna"
+ },
+ "EH": {
+ "name": "Western Sahara"
+ },
+ "YE": {
+ "name": "Yemen"
+ },
+ "ZM": {
+ "name": "Zambia"
+ },
+ "ZW": {
+ "name": "Zimbabwe"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/country/en-IE.json b/library/intl/resources/country/en-IE.json
new file mode 100644
index 000000000..081d5f4c0
--- /dev/null
+++ b/library/intl/resources/country/en-IE.json
@@ -0,0 +1,761 @@
+{
+ "AF": {
+ "name": "Afghanistan"
+ },
+ "AX": {
+ "name": "Ã…land Islands"
+ },
+ "AL": {
+ "name": "Albania"
+ },
+ "DZ": {
+ "name": "Algeria"
+ },
+ "AS": {
+ "name": "American Samoa"
+ },
+ "AD": {
+ "name": "Andorra"
+ },
+ "AO": {
+ "name": "Angola"
+ },
+ "AI": {
+ "name": "Anguilla"
+ },
+ "AQ": {
+ "name": "Antarctica"
+ },
+ "AG": {
+ "name": "Antigua and Barbuda"
+ },
+ "AR": {
+ "name": "Argentina"
+ },
+ "AM": {
+ "name": "Armenia"
+ },
+ "AW": {
+ "name": "Aruba"
+ },
+ "AC": {
+ "name": "Ascension Island"
+ },
+ "AU": {
+ "name": "Australia"
+ },
+ "AT": {
+ "name": "Austria"
+ },
+ "AZ": {
+ "name": "Azerbaijan"
+ },
+ "BS": {
+ "name": "Bahamas"
+ },
+ "BH": {
+ "name": "Bahrain"
+ },
+ "BD": {
+ "name": "Bangladesh"
+ },
+ "BB": {
+ "name": "Barbados"
+ },
+ "BY": {
+ "name": "Belarus"
+ },
+ "BE": {
+ "name": "Belgium"
+ },
+ "BZ": {
+ "name": "Belize"
+ },
+ "BJ": {
+ "name": "Benin"
+ },
+ "BM": {
+ "name": "Bermuda"
+ },
+ "BT": {
+ "name": "Bhutan"
+ },
+ "BO": {
+ "name": "Bolivia"
+ },
+ "BA": {
+ "name": "Bosnia and Herzegovina"
+ },
+ "BW": {
+ "name": "Botswana"
+ },
+ "BR": {
+ "name": "Brazil"
+ },
+ "IO": {
+ "name": "British Indian Ocean Territory"
+ },
+ "VG": {
+ "name": "British Virgin Islands"
+ },
+ "BN": {
+ "name": "Brunei"
+ },
+ "BG": {
+ "name": "Bulgaria"
+ },
+ "BF": {
+ "name": "Burkina Faso"
+ },
+ "BI": {
+ "name": "Burundi"
+ },
+ "KH": {
+ "name": "Cambodia"
+ },
+ "CM": {
+ "name": "Cameroon"
+ },
+ "CA": {
+ "name": "Canada"
+ },
+ "IC": {
+ "name": "Canary Islands"
+ },
+ "CV": {
+ "name": "Cape Verde"
+ },
+ "BQ": {
+ "name": "Caribbean Netherlands"
+ },
+ "KY": {
+ "name": "Cayman Islands"
+ },
+ "CF": {
+ "name": "Central African Republic"
+ },
+ "EA": {
+ "name": "Ceuta and Melilla"
+ },
+ "TD": {
+ "name": "Chad"
+ },
+ "CL": {
+ "name": "Chile"
+ },
+ "CN": {
+ "name": "China"
+ },
+ "CX": {
+ "name": "Christmas Island"
+ },
+ "CC": {
+ "name": "Cocos (Keeling) Islands"
+ },
+ "CO": {
+ "name": "Colombia"
+ },
+ "KM": {
+ "name": "Comoros"
+ },
+ "CG": {
+ "name": "Congo - Brazzaville"
+ },
+ "CD": {
+ "name": "Congo - Kinshasa"
+ },
+ "CK": {
+ "name": "Cook Islands"
+ },
+ "CR": {
+ "name": "Costa Rica"
+ },
+ "CI": {
+ "name": "Côte d’Ivoire"
+ },
+ "HR": {
+ "name": "Croatia"
+ },
+ "CU": {
+ "name": "Cuba"
+ },
+ "CW": {
+ "name": "Curaçao"
+ },
+ "CY": {
+ "name": "Cyprus"
+ },
+ "CZ": {
+ "name": "Czech Republic"
+ },
+ "DK": {
+ "name": "Denmark"
+ },
+ "DG": {
+ "name": "Diego Garcia"
+ },
+ "DJ": {
+ "name": "Djibouti"
+ },
+ "DM": {
+ "name": "Dominica"
+ },
+ "DO": {
+ "name": "Dominican Republic"
+ },
+ "EC": {
+ "name": "Ecuador"
+ },
+ "EG": {
+ "name": "Egypt"
+ },
+ "SV": {
+ "name": "El Salvador"
+ },
+ "GQ": {
+ "name": "Equatorial Guinea"
+ },
+ "ER": {
+ "name": "Eritrea"
+ },
+ "EE": {
+ "name": "Estonia"
+ },
+ "ET": {
+ "name": "Ethiopia"
+ },
+ "FK": {
+ "name": "Falkland Islands"
+ },
+ "FO": {
+ "name": "Faroe Islands"
+ },
+ "FJ": {
+ "name": "Fiji"
+ },
+ "FI": {
+ "name": "Finland"
+ },
+ "FR": {
+ "name": "France"
+ },
+ "GF": {
+ "name": "French Guiana"
+ },
+ "PF": {
+ "name": "French Polynesia"
+ },
+ "TF": {
+ "name": "French Southern Territories"
+ },
+ "GA": {
+ "name": "Gabon"
+ },
+ "GM": {
+ "name": "Gambia"
+ },
+ "GE": {
+ "name": "Georgia"
+ },
+ "DE": {
+ "name": "Germany"
+ },
+ "GH": {
+ "name": "Ghana"
+ },
+ "GI": {
+ "name": "Gibraltar"
+ },
+ "GR": {
+ "name": "Greece"
+ },
+ "GL": {
+ "name": "Greenland"
+ },
+ "GD": {
+ "name": "Grenada"
+ },
+ "GP": {
+ "name": "Guadeloupe"
+ },
+ "GU": {
+ "name": "Guam"
+ },
+ "GT": {
+ "name": "Guatemala"
+ },
+ "GG": {
+ "name": "Guernsey"
+ },
+ "GN": {
+ "name": "Guinea"
+ },
+ "GW": {
+ "name": "Guinea-Bissau"
+ },
+ "GY": {
+ "name": "Guyana"
+ },
+ "HT": {
+ "name": "Haiti"
+ },
+ "HN": {
+ "name": "Honduras"
+ },
+ "HK": {
+ "name": "Hong Kong SAR China"
+ },
+ "HU": {
+ "name": "Hungary"
+ },
+ "IS": {
+ "name": "Iceland"
+ },
+ "IN": {
+ "name": "India"
+ },
+ "ID": {
+ "name": "Indonesia"
+ },
+ "IR": {
+ "name": "Iran"
+ },
+ "IQ": {
+ "name": "Iraq"
+ },
+ "IE": {
+ "name": "Ireland"
+ },
+ "IM": {
+ "name": "Isle of Man"
+ },
+ "IL": {
+ "name": "Israel"
+ },
+ "IT": {
+ "name": "Italy"
+ },
+ "JM": {
+ "name": "Jamaica"
+ },
+ "JP": {
+ "name": "Japan"
+ },
+ "JE": {
+ "name": "Jersey"
+ },
+ "JO": {
+ "name": "Jordan"
+ },
+ "KZ": {
+ "name": "Kazakhstan"
+ },
+ "KE": {
+ "name": "Kenya"
+ },
+ "KI": {
+ "name": "Kiribati"
+ },
+ "XK": {
+ "name": "Kosovo"
+ },
+ "KW": {
+ "name": "Kuwait"
+ },
+ "KG": {
+ "name": "Kyrgyzstan"
+ },
+ "LA": {
+ "name": "Laos"
+ },
+ "LV": {
+ "name": "Latvia"
+ },
+ "LB": {
+ "name": "Lebanon"
+ },
+ "LS": {
+ "name": "Lesotho"
+ },
+ "LR": {
+ "name": "Liberia"
+ },
+ "LY": {
+ "name": "Libya"
+ },
+ "LI": {
+ "name": "Liechtenstein"
+ },
+ "LT": {
+ "name": "Lithuania"
+ },
+ "LU": {
+ "name": "Luxembourg"
+ },
+ "MO": {
+ "name": "Macau SAR China"
+ },
+ "MK": {
+ "name": "Macedonia"
+ },
+ "MG": {
+ "name": "Madagascar"
+ },
+ "MW": {
+ "name": "Malawi"
+ },
+ "MY": {
+ "name": "Malaysia"
+ },
+ "MV": {
+ "name": "Maldives"
+ },
+ "ML": {
+ "name": "Mali"
+ },
+ "MT": {
+ "name": "Malta"
+ },
+ "MH": {
+ "name": "Marshall Islands"
+ },
+ "MQ": {
+ "name": "Martinique"
+ },
+ "MR": {
+ "name": "Mauritania"
+ },
+ "MU": {
+ "name": "Mauritius"
+ },
+ "YT": {
+ "name": "Mayotte"
+ },
+ "MX": {
+ "name": "Mexico"
+ },
+ "FM": {
+ "name": "Micronesia"
+ },
+ "MD": {
+ "name": "Moldova"
+ },
+ "MC": {
+ "name": "Monaco"
+ },
+ "MN": {
+ "name": "Mongolia"
+ },
+ "ME": {
+ "name": "Montenegro"
+ },
+ "MS": {
+ "name": "Montserrat"
+ },
+ "MA": {
+ "name": "Morocco"
+ },
+ "MZ": {
+ "name": "Mozambique"
+ },
+ "MM": {
+ "name": "Myanmar (Burma)"
+ },
+ "NA": {
+ "name": "Namibia"
+ },
+ "NR": {
+ "name": "Nauru"
+ },
+ "NP": {
+ "name": "Nepal"
+ },
+ "NL": {
+ "name": "Netherlands"
+ },
+ "NC": {
+ "name": "New Caledonia"
+ },
+ "NZ": {
+ "name": "New Zealand"
+ },
+ "NI": {
+ "name": "Nicaragua"
+ },
+ "NE": {
+ "name": "Niger"
+ },
+ "NG": {
+ "name": "Nigeria"
+ },
+ "NU": {
+ "name": "Niue"
+ },
+ "NF": {
+ "name": "Norfolk Island"
+ },
+ "KP": {
+ "name": "North Korea"
+ },
+ "MP": {
+ "name": "Northern Mariana Islands"
+ },
+ "NO": {
+ "name": "Norway"
+ },
+ "OM": {
+ "name": "Oman"
+ },
+ "PK": {
+ "name": "Pakistan"
+ },
+ "PW": {
+ "name": "Palau"
+ },
+ "PS": {
+ "name": "Palestinian Territories"
+ },
+ "PA": {
+ "name": "Panama"
+ },
+ "PG": {
+ "name": "Papua New Guinea"
+ },
+ "PY": {
+ "name": "Paraguay"
+ },
+ "PE": {
+ "name": "Peru"
+ },
+ "PH": {
+ "name": "Philippines"
+ },
+ "PN": {
+ "name": "Pitcairn Islands"
+ },
+ "PL": {
+ "name": "Poland"
+ },
+ "PT": {
+ "name": "Portugal"
+ },
+ "PR": {
+ "name": "Puerto Rico"
+ },
+ "QA": {
+ "name": "Qatar"
+ },
+ "RE": {
+ "name": "Réunion"
+ },
+ "RO": {
+ "name": "Romania"
+ },
+ "RU": {
+ "name": "Russia"
+ },
+ "RW": {
+ "name": "Rwanda"
+ },
+ "BL": {
+ "name": "Saint Barthélemy"
+ },
+ "SH": {
+ "name": "Saint Helena"
+ },
+ "KN": {
+ "name": "Saint Kitts and Nevis"
+ },
+ "LC": {
+ "name": "Saint Lucia"
+ },
+ "MF": {
+ "name": "Saint Martin"
+ },
+ "PM": {
+ "name": "Saint Pierre and Miquelon"
+ },
+ "WS": {
+ "name": "Samoa"
+ },
+ "SM": {
+ "name": "San Marino"
+ },
+ "ST": {
+ "name": "São Tomé and Príncipe"
+ },
+ "SA": {
+ "name": "Saudi Arabia"
+ },
+ "SN": {
+ "name": "Senegal"
+ },
+ "RS": {
+ "name": "Serbia"
+ },
+ "SC": {
+ "name": "Seychelles"
+ },
+ "SL": {
+ "name": "Sierra Leone"
+ },
+ "SG": {
+ "name": "Singapore"
+ },
+ "SX": {
+ "name": "Sint Maarten"
+ },
+ "SK": {
+ "name": "Slovakia"
+ },
+ "SI": {
+ "name": "Slovenia"
+ },
+ "SB": {
+ "name": "Solomon Islands"
+ },
+ "SO": {
+ "name": "Somalia"
+ },
+ "ZA": {
+ "name": "South Africa"
+ },
+ "GS": {
+ "name": "South Georgia & South Sandwich Islands"
+ },
+ "KR": {
+ "name": "South Korea"
+ },
+ "SS": {
+ "name": "South Sudan"
+ },
+ "ES": {
+ "name": "Spain"
+ },
+ "LK": {
+ "name": "Sri Lanka"
+ },
+ "VC": {
+ "name": "St. Vincent & Grenadines"
+ },
+ "SD": {
+ "name": "Sudan"
+ },
+ "SR": {
+ "name": "Suriname"
+ },
+ "SJ": {
+ "name": "Svalbard and Jan Mayen"
+ },
+ "SZ": {
+ "name": "Swaziland"
+ },
+ "SE": {
+ "name": "Sweden"
+ },
+ "CH": {
+ "name": "Switzerland"
+ },
+ "SY": {
+ "name": "Syria"
+ },
+ "TW": {
+ "name": "Taiwan"
+ },
+ "TJ": {
+ "name": "Tajikistan"
+ },
+ "TZ": {
+ "name": "Tanzania"
+ },
+ "TH": {
+ "name": "Thailand"
+ },
+ "TL": {
+ "name": "Timor-Leste"
+ },
+ "TG": {
+ "name": "Togo"
+ },
+ "TK": {
+ "name": "Tokelau"
+ },
+ "TO": {
+ "name": "Tonga"
+ },
+ "TT": {
+ "name": "Trinidad and Tobago"
+ },
+ "TA": {
+ "name": "Tristan da Cunha"
+ },
+ "TN": {
+ "name": "Tunisia"
+ },
+ "TR": {
+ "name": "Turkey"
+ },
+ "TM": {
+ "name": "Turkmenistan"
+ },
+ "TC": {
+ "name": "Turks and Caicos Islands"
+ },
+ "TV": {
+ "name": "Tuvalu"
+ },
+ "UM": {
+ "name": "U.S. Outlying Islands"
+ },
+ "VI": {
+ "name": "U.S. Virgin Islands"
+ },
+ "UG": {
+ "name": "Uganda"
+ },
+ "UA": {
+ "name": "Ukraine"
+ },
+ "AE": {
+ "name": "United Arab Emirates"
+ },
+ "GB": {
+ "name": "United Kingdom"
+ },
+ "US": {
+ "name": "United States"
+ },
+ "UY": {
+ "name": "Uruguay"
+ },
+ "UZ": {
+ "name": "Uzbekistan"
+ },
+ "VU": {
+ "name": "Vanuatu"
+ },
+ "VA": {
+ "name": "Vatican City"
+ },
+ "VE": {
+ "name": "Venezuela"
+ },
+ "VN": {
+ "name": "Vietnam"
+ },
+ "WF": {
+ "name": "Wallis and Futuna"
+ },
+ "EH": {
+ "name": "Western Sahara"
+ },
+ "YE": {
+ "name": "Yemen"
+ },
+ "ZM": {
+ "name": "Zambia"
+ },
+ "ZW": {
+ "name": "Zimbabwe"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/country/en-IM.json b/library/intl/resources/country/en-IM.json
new file mode 100644
index 000000000..081d5f4c0
--- /dev/null
+++ b/library/intl/resources/country/en-IM.json
@@ -0,0 +1,761 @@
+{
+ "AF": {
+ "name": "Afghanistan"
+ },
+ "AX": {
+ "name": "Ã…land Islands"
+ },
+ "AL": {
+ "name": "Albania"
+ },
+ "DZ": {
+ "name": "Algeria"
+ },
+ "AS": {
+ "name": "American Samoa"
+ },
+ "AD": {
+ "name": "Andorra"
+ },
+ "AO": {
+ "name": "Angola"
+ },
+ "AI": {
+ "name": "Anguilla"
+ },
+ "AQ": {
+ "name": "Antarctica"
+ },
+ "AG": {
+ "name": "Antigua and Barbuda"
+ },
+ "AR": {
+ "name": "Argentina"
+ },
+ "AM": {
+ "name": "Armenia"
+ },
+ "AW": {
+ "name": "Aruba"
+ },
+ "AC": {
+ "name": "Ascension Island"
+ },
+ "AU": {
+ "name": "Australia"
+ },
+ "AT": {
+ "name": "Austria"
+ },
+ "AZ": {
+ "name": "Azerbaijan"
+ },
+ "BS": {
+ "name": "Bahamas"
+ },
+ "BH": {
+ "name": "Bahrain"
+ },
+ "BD": {
+ "name": "Bangladesh"
+ },
+ "BB": {
+ "name": "Barbados"
+ },
+ "BY": {
+ "name": "Belarus"
+ },
+ "BE": {
+ "name": "Belgium"
+ },
+ "BZ": {
+ "name": "Belize"
+ },
+ "BJ": {
+ "name": "Benin"
+ },
+ "BM": {
+ "name": "Bermuda"
+ },
+ "BT": {
+ "name": "Bhutan"
+ },
+ "BO": {
+ "name": "Bolivia"
+ },
+ "BA": {
+ "name": "Bosnia and Herzegovina"
+ },
+ "BW": {
+ "name": "Botswana"
+ },
+ "BR": {
+ "name": "Brazil"
+ },
+ "IO": {
+ "name": "British Indian Ocean Territory"
+ },
+ "VG": {
+ "name": "British Virgin Islands"
+ },
+ "BN": {
+ "name": "Brunei"
+ },
+ "BG": {
+ "name": "Bulgaria"
+ },
+ "BF": {
+ "name": "Burkina Faso"
+ },
+ "BI": {
+ "name": "Burundi"
+ },
+ "KH": {
+ "name": "Cambodia"
+ },
+ "CM": {
+ "name": "Cameroon"
+ },
+ "CA": {
+ "name": "Canada"
+ },
+ "IC": {
+ "name": "Canary Islands"
+ },
+ "CV": {
+ "name": "Cape Verde"
+ },
+ "BQ": {
+ "name": "Caribbean Netherlands"
+ },
+ "KY": {
+ "name": "Cayman Islands"
+ },
+ "CF": {
+ "name": "Central African Republic"
+ },
+ "EA": {
+ "name": "Ceuta and Melilla"
+ },
+ "TD": {
+ "name": "Chad"
+ },
+ "CL": {
+ "name": "Chile"
+ },
+ "CN": {
+ "name": "China"
+ },
+ "CX": {
+ "name": "Christmas Island"
+ },
+ "CC": {
+ "name": "Cocos (Keeling) Islands"
+ },
+ "CO": {
+ "name": "Colombia"
+ },
+ "KM": {
+ "name": "Comoros"
+ },
+ "CG": {
+ "name": "Congo - Brazzaville"
+ },
+ "CD": {
+ "name": "Congo - Kinshasa"
+ },
+ "CK": {
+ "name": "Cook Islands"
+ },
+ "CR": {
+ "name": "Costa Rica"
+ },
+ "CI": {
+ "name": "Côte d’Ivoire"
+ },
+ "HR": {
+ "name": "Croatia"
+ },
+ "CU": {
+ "name": "Cuba"
+ },
+ "CW": {
+ "name": "Curaçao"
+ },
+ "CY": {
+ "name": "Cyprus"
+ },
+ "CZ": {
+ "name": "Czech Republic"
+ },
+ "DK": {
+ "name": "Denmark"
+ },
+ "DG": {
+ "name": "Diego Garcia"
+ },
+ "DJ": {
+ "name": "Djibouti"
+ },
+ "DM": {
+ "name": "Dominica"
+ },
+ "DO": {
+ "name": "Dominican Republic"
+ },
+ "EC": {
+ "name": "Ecuador"
+ },
+ "EG": {
+ "name": "Egypt"
+ },
+ "SV": {
+ "name": "El Salvador"
+ },
+ "GQ": {
+ "name": "Equatorial Guinea"
+ },
+ "ER": {
+ "name": "Eritrea"
+ },
+ "EE": {
+ "name": "Estonia"
+ },
+ "ET": {
+ "name": "Ethiopia"
+ },
+ "FK": {
+ "name": "Falkland Islands"
+ },
+ "FO": {
+ "name": "Faroe Islands"
+ },
+ "FJ": {
+ "name": "Fiji"
+ },
+ "FI": {
+ "name": "Finland"
+ },
+ "FR": {
+ "name": "France"
+ },
+ "GF": {
+ "name": "French Guiana"
+ },
+ "PF": {
+ "name": "French Polynesia"
+ },
+ "TF": {
+ "name": "French Southern Territories"
+ },
+ "GA": {
+ "name": "Gabon"
+ },
+ "GM": {
+ "name": "Gambia"
+ },
+ "GE": {
+ "name": "Georgia"
+ },
+ "DE": {
+ "name": "Germany"
+ },
+ "GH": {
+ "name": "Ghana"
+ },
+ "GI": {
+ "name": "Gibraltar"
+ },
+ "GR": {
+ "name": "Greece"
+ },
+ "GL": {
+ "name": "Greenland"
+ },
+ "GD": {
+ "name": "Grenada"
+ },
+ "GP": {
+ "name": "Guadeloupe"
+ },
+ "GU": {
+ "name": "Guam"
+ },
+ "GT": {
+ "name": "Guatemala"
+ },
+ "GG": {
+ "name": "Guernsey"
+ },
+ "GN": {
+ "name": "Guinea"
+ },
+ "GW": {
+ "name": "Guinea-Bissau"
+ },
+ "GY": {
+ "name": "Guyana"
+ },
+ "HT": {
+ "name": "Haiti"
+ },
+ "HN": {
+ "name": "Honduras"
+ },
+ "HK": {
+ "name": "Hong Kong SAR China"
+ },
+ "HU": {
+ "name": "Hungary"
+ },
+ "IS": {
+ "name": "Iceland"
+ },
+ "IN": {
+ "name": "India"
+ },
+ "ID": {
+ "name": "Indonesia"
+ },
+ "IR": {
+ "name": "Iran"
+ },
+ "IQ": {
+ "name": "Iraq"
+ },
+ "IE": {
+ "name": "Ireland"
+ },
+ "IM": {
+ "name": "Isle of Man"
+ },
+ "IL": {
+ "name": "Israel"
+ },
+ "IT": {
+ "name": "Italy"
+ },
+ "JM": {
+ "name": "Jamaica"
+ },
+ "JP": {
+ "name": "Japan"
+ },
+ "JE": {
+ "name": "Jersey"
+ },
+ "JO": {
+ "name": "Jordan"
+ },
+ "KZ": {
+ "name": "Kazakhstan"
+ },
+ "KE": {
+ "name": "Kenya"
+ },
+ "KI": {
+ "name": "Kiribati"
+ },
+ "XK": {
+ "name": "Kosovo"
+ },
+ "KW": {
+ "name": "Kuwait"
+ },
+ "KG": {
+ "name": "Kyrgyzstan"
+ },
+ "LA": {
+ "name": "Laos"
+ },
+ "LV": {
+ "name": "Latvia"
+ },
+ "LB": {
+ "name": "Lebanon"
+ },
+ "LS": {
+ "name": "Lesotho"
+ },
+ "LR": {
+ "name": "Liberia"
+ },
+ "LY": {
+ "name": "Libya"
+ },
+ "LI": {
+ "name": "Liechtenstein"
+ },
+ "LT": {
+ "name": "Lithuania"
+ },
+ "LU": {
+ "name": "Luxembourg"
+ },
+ "MO": {
+ "name": "Macau SAR China"
+ },
+ "MK": {
+ "name": "Macedonia"
+ },
+ "MG": {
+ "name": "Madagascar"
+ },
+ "MW": {
+ "name": "Malawi"
+ },
+ "MY": {
+ "name": "Malaysia"
+ },
+ "MV": {
+ "name": "Maldives"
+ },
+ "ML": {
+ "name": "Mali"
+ },
+ "MT": {
+ "name": "Malta"
+ },
+ "MH": {
+ "name": "Marshall Islands"
+ },
+ "MQ": {
+ "name": "Martinique"
+ },
+ "MR": {
+ "name": "Mauritania"
+ },
+ "MU": {
+ "name": "Mauritius"
+ },
+ "YT": {
+ "name": "Mayotte"
+ },
+ "MX": {
+ "name": "Mexico"
+ },
+ "FM": {
+ "name": "Micronesia"
+ },
+ "MD": {
+ "name": "Moldova"
+ },
+ "MC": {
+ "name": "Monaco"
+ },
+ "MN": {
+ "name": "Mongolia"
+ },
+ "ME": {
+ "name": "Montenegro"
+ },
+ "MS": {
+ "name": "Montserrat"
+ },
+ "MA": {
+ "name": "Morocco"
+ },
+ "MZ": {
+ "name": "Mozambique"
+ },
+ "MM": {
+ "name": "Myanmar (Burma)"
+ },
+ "NA": {
+ "name": "Namibia"
+ },
+ "NR": {
+ "name": "Nauru"
+ },
+ "NP": {
+ "name": "Nepal"
+ },
+ "NL": {
+ "name": "Netherlands"
+ },
+ "NC": {
+ "name": "New Caledonia"
+ },
+ "NZ": {
+ "name": "New Zealand"
+ },
+ "NI": {
+ "name": "Nicaragua"
+ },
+ "NE": {
+ "name": "Niger"
+ },
+ "NG": {
+ "name": "Nigeria"
+ },
+ "NU": {
+ "name": "Niue"
+ },
+ "NF": {
+ "name": "Norfolk Island"
+ },
+ "KP": {
+ "name": "North Korea"
+ },
+ "MP": {
+ "name": "Northern Mariana Islands"
+ },
+ "NO": {
+ "name": "Norway"
+ },
+ "OM": {
+ "name": "Oman"
+ },
+ "PK": {
+ "name": "Pakistan"
+ },
+ "PW": {
+ "name": "Palau"
+ },
+ "PS": {
+ "name": "Palestinian Territories"
+ },
+ "PA": {
+ "name": "Panama"
+ },
+ "PG": {
+ "name": "Papua New Guinea"
+ },
+ "PY": {
+ "name": "Paraguay"
+ },
+ "PE": {
+ "name": "Peru"
+ },
+ "PH": {
+ "name": "Philippines"
+ },
+ "PN": {
+ "name": "Pitcairn Islands"
+ },
+ "PL": {
+ "name": "Poland"
+ },
+ "PT": {
+ "name": "Portugal"
+ },
+ "PR": {
+ "name": "Puerto Rico"
+ },
+ "QA": {
+ "name": "Qatar"
+ },
+ "RE": {
+ "name": "Réunion"
+ },
+ "RO": {
+ "name": "Romania"
+ },
+ "RU": {
+ "name": "Russia"
+ },
+ "RW": {
+ "name": "Rwanda"
+ },
+ "BL": {
+ "name": "Saint Barthélemy"
+ },
+ "SH": {
+ "name": "Saint Helena"
+ },
+ "KN": {
+ "name": "Saint Kitts and Nevis"
+ },
+ "LC": {
+ "name": "Saint Lucia"
+ },
+ "MF": {
+ "name": "Saint Martin"
+ },
+ "PM": {
+ "name": "Saint Pierre and Miquelon"
+ },
+ "WS": {
+ "name": "Samoa"
+ },
+ "SM": {
+ "name": "San Marino"
+ },
+ "ST": {
+ "name": "São Tomé and Príncipe"
+ },
+ "SA": {
+ "name": "Saudi Arabia"
+ },
+ "SN": {
+ "name": "Senegal"
+ },
+ "RS": {
+ "name": "Serbia"
+ },
+ "SC": {
+ "name": "Seychelles"
+ },
+ "SL": {
+ "name": "Sierra Leone"
+ },
+ "SG": {
+ "name": "Singapore"
+ },
+ "SX": {
+ "name": "Sint Maarten"
+ },
+ "SK": {
+ "name": "Slovakia"
+ },
+ "SI": {
+ "name": "Slovenia"
+ },
+ "SB": {
+ "name": "Solomon Islands"
+ },
+ "SO": {
+ "name": "Somalia"
+ },
+ "ZA": {
+ "name": "South Africa"
+ },
+ "GS": {
+ "name": "South Georgia & South Sandwich Islands"
+ },
+ "KR": {
+ "name": "South Korea"
+ },
+ "SS": {
+ "name": "South Sudan"
+ },
+ "ES": {
+ "name": "Spain"
+ },
+ "LK": {
+ "name": "Sri Lanka"
+ },
+ "VC": {
+ "name": "St. Vincent & Grenadines"
+ },
+ "SD": {
+ "name": "Sudan"
+ },
+ "SR": {
+ "name": "Suriname"
+ },
+ "SJ": {
+ "name": "Svalbard and Jan Mayen"
+ },
+ "SZ": {
+ "name": "Swaziland"
+ },
+ "SE": {
+ "name": "Sweden"
+ },
+ "CH": {
+ "name": "Switzerland"
+ },
+ "SY": {
+ "name": "Syria"
+ },
+ "TW": {
+ "name": "Taiwan"
+ },
+ "TJ": {
+ "name": "Tajikistan"
+ },
+ "TZ": {
+ "name": "Tanzania"
+ },
+ "TH": {
+ "name": "Thailand"
+ },
+ "TL": {
+ "name": "Timor-Leste"
+ },
+ "TG": {
+ "name": "Togo"
+ },
+ "TK": {
+ "name": "Tokelau"
+ },
+ "TO": {
+ "name": "Tonga"
+ },
+ "TT": {
+ "name": "Trinidad and Tobago"
+ },
+ "TA": {
+ "name": "Tristan da Cunha"
+ },
+ "TN": {
+ "name": "Tunisia"
+ },
+ "TR": {
+ "name": "Turkey"
+ },
+ "TM": {
+ "name": "Turkmenistan"
+ },
+ "TC": {
+ "name": "Turks and Caicos Islands"
+ },
+ "TV": {
+ "name": "Tuvalu"
+ },
+ "UM": {
+ "name": "U.S. Outlying Islands"
+ },
+ "VI": {
+ "name": "U.S. Virgin Islands"
+ },
+ "UG": {
+ "name": "Uganda"
+ },
+ "UA": {
+ "name": "Ukraine"
+ },
+ "AE": {
+ "name": "United Arab Emirates"
+ },
+ "GB": {
+ "name": "United Kingdom"
+ },
+ "US": {
+ "name": "United States"
+ },
+ "UY": {
+ "name": "Uruguay"
+ },
+ "UZ": {
+ "name": "Uzbekistan"
+ },
+ "VU": {
+ "name": "Vanuatu"
+ },
+ "VA": {
+ "name": "Vatican City"
+ },
+ "VE": {
+ "name": "Venezuela"
+ },
+ "VN": {
+ "name": "Vietnam"
+ },
+ "WF": {
+ "name": "Wallis and Futuna"
+ },
+ "EH": {
+ "name": "Western Sahara"
+ },
+ "YE": {
+ "name": "Yemen"
+ },
+ "ZM": {
+ "name": "Zambia"
+ },
+ "ZW": {
+ "name": "Zimbabwe"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/country/en-IN.json b/library/intl/resources/country/en-IN.json
new file mode 100644
index 000000000..081d5f4c0
--- /dev/null
+++ b/library/intl/resources/country/en-IN.json
@@ -0,0 +1,761 @@
+{
+ "AF": {
+ "name": "Afghanistan"
+ },
+ "AX": {
+ "name": "Ã…land Islands"
+ },
+ "AL": {
+ "name": "Albania"
+ },
+ "DZ": {
+ "name": "Algeria"
+ },
+ "AS": {
+ "name": "American Samoa"
+ },
+ "AD": {
+ "name": "Andorra"
+ },
+ "AO": {
+ "name": "Angola"
+ },
+ "AI": {
+ "name": "Anguilla"
+ },
+ "AQ": {
+ "name": "Antarctica"
+ },
+ "AG": {
+ "name": "Antigua and Barbuda"
+ },
+ "AR": {
+ "name": "Argentina"
+ },
+ "AM": {
+ "name": "Armenia"
+ },
+ "AW": {
+ "name": "Aruba"
+ },
+ "AC": {
+ "name": "Ascension Island"
+ },
+ "AU": {
+ "name": "Australia"
+ },
+ "AT": {
+ "name": "Austria"
+ },
+ "AZ": {
+ "name": "Azerbaijan"
+ },
+ "BS": {
+ "name": "Bahamas"
+ },
+ "BH": {
+ "name": "Bahrain"
+ },
+ "BD": {
+ "name": "Bangladesh"
+ },
+ "BB": {
+ "name": "Barbados"
+ },
+ "BY": {
+ "name": "Belarus"
+ },
+ "BE": {
+ "name": "Belgium"
+ },
+ "BZ": {
+ "name": "Belize"
+ },
+ "BJ": {
+ "name": "Benin"
+ },
+ "BM": {
+ "name": "Bermuda"
+ },
+ "BT": {
+ "name": "Bhutan"
+ },
+ "BO": {
+ "name": "Bolivia"
+ },
+ "BA": {
+ "name": "Bosnia and Herzegovina"
+ },
+ "BW": {
+ "name": "Botswana"
+ },
+ "BR": {
+ "name": "Brazil"
+ },
+ "IO": {
+ "name": "British Indian Ocean Territory"
+ },
+ "VG": {
+ "name": "British Virgin Islands"
+ },
+ "BN": {
+ "name": "Brunei"
+ },
+ "BG": {
+ "name": "Bulgaria"
+ },
+ "BF": {
+ "name": "Burkina Faso"
+ },
+ "BI": {
+ "name": "Burundi"
+ },
+ "KH": {
+ "name": "Cambodia"
+ },
+ "CM": {
+ "name": "Cameroon"
+ },
+ "CA": {
+ "name": "Canada"
+ },
+ "IC": {
+ "name": "Canary Islands"
+ },
+ "CV": {
+ "name": "Cape Verde"
+ },
+ "BQ": {
+ "name": "Caribbean Netherlands"
+ },
+ "KY": {
+ "name": "Cayman Islands"
+ },
+ "CF": {
+ "name": "Central African Republic"
+ },
+ "EA": {
+ "name": "Ceuta and Melilla"
+ },
+ "TD": {
+ "name": "Chad"
+ },
+ "CL": {
+ "name": "Chile"
+ },
+ "CN": {
+ "name": "China"
+ },
+ "CX": {
+ "name": "Christmas Island"
+ },
+ "CC": {
+ "name": "Cocos (Keeling) Islands"
+ },
+ "CO": {
+ "name": "Colombia"
+ },
+ "KM": {
+ "name": "Comoros"
+ },
+ "CG": {
+ "name": "Congo - Brazzaville"
+ },
+ "CD": {
+ "name": "Congo - Kinshasa"
+ },
+ "CK": {
+ "name": "Cook Islands"
+ },
+ "CR": {
+ "name": "Costa Rica"
+ },
+ "CI": {
+ "name": "Côte d’Ivoire"
+ },
+ "HR": {
+ "name": "Croatia"
+ },
+ "CU": {
+ "name": "Cuba"
+ },
+ "CW": {
+ "name": "Curaçao"
+ },
+ "CY": {
+ "name": "Cyprus"
+ },
+ "CZ": {
+ "name": "Czech Republic"
+ },
+ "DK": {
+ "name": "Denmark"
+ },
+ "DG": {
+ "name": "Diego Garcia"
+ },
+ "DJ": {
+ "name": "Djibouti"
+ },
+ "DM": {
+ "name": "Dominica"
+ },
+ "DO": {
+ "name": "Dominican Republic"
+ },
+ "EC": {
+ "name": "Ecuador"
+ },
+ "EG": {
+ "name": "Egypt"
+ },
+ "SV": {
+ "name": "El Salvador"
+ },
+ "GQ": {
+ "name": "Equatorial Guinea"
+ },
+ "ER": {
+ "name": "Eritrea"
+ },
+ "EE": {
+ "name": "Estonia"
+ },
+ "ET": {
+ "name": "Ethiopia"
+ },
+ "FK": {
+ "name": "Falkland Islands"
+ },
+ "FO": {
+ "name": "Faroe Islands"
+ },
+ "FJ": {
+ "name": "Fiji"
+ },
+ "FI": {
+ "name": "Finland"
+ },
+ "FR": {
+ "name": "France"
+ },
+ "GF": {
+ "name": "French Guiana"
+ },
+ "PF": {
+ "name": "French Polynesia"
+ },
+ "TF": {
+ "name": "French Southern Territories"
+ },
+ "GA": {
+ "name": "Gabon"
+ },
+ "GM": {
+ "name": "Gambia"
+ },
+ "GE": {
+ "name": "Georgia"
+ },
+ "DE": {
+ "name": "Germany"
+ },
+ "GH": {
+ "name": "Ghana"
+ },
+ "GI": {
+ "name": "Gibraltar"
+ },
+ "GR": {
+ "name": "Greece"
+ },
+ "GL": {
+ "name": "Greenland"
+ },
+ "GD": {
+ "name": "Grenada"
+ },
+ "GP": {
+ "name": "Guadeloupe"
+ },
+ "GU": {
+ "name": "Guam"
+ },
+ "GT": {
+ "name": "Guatemala"
+ },
+ "GG": {
+ "name": "Guernsey"
+ },
+ "GN": {
+ "name": "Guinea"
+ },
+ "GW": {
+ "name": "Guinea-Bissau"
+ },
+ "GY": {
+ "name": "Guyana"
+ },
+ "HT": {
+ "name": "Haiti"
+ },
+ "HN": {
+ "name": "Honduras"
+ },
+ "HK": {
+ "name": "Hong Kong SAR China"
+ },
+ "HU": {
+ "name": "Hungary"
+ },
+ "IS": {
+ "name": "Iceland"
+ },
+ "IN": {
+ "name": "India"
+ },
+ "ID": {
+ "name": "Indonesia"
+ },
+ "IR": {
+ "name": "Iran"
+ },
+ "IQ": {
+ "name": "Iraq"
+ },
+ "IE": {
+ "name": "Ireland"
+ },
+ "IM": {
+ "name": "Isle of Man"
+ },
+ "IL": {
+ "name": "Israel"
+ },
+ "IT": {
+ "name": "Italy"
+ },
+ "JM": {
+ "name": "Jamaica"
+ },
+ "JP": {
+ "name": "Japan"
+ },
+ "JE": {
+ "name": "Jersey"
+ },
+ "JO": {
+ "name": "Jordan"
+ },
+ "KZ": {
+ "name": "Kazakhstan"
+ },
+ "KE": {
+ "name": "Kenya"
+ },
+ "KI": {
+ "name": "Kiribati"
+ },
+ "XK": {
+ "name": "Kosovo"
+ },
+ "KW": {
+ "name": "Kuwait"
+ },
+ "KG": {
+ "name": "Kyrgyzstan"
+ },
+ "LA": {
+ "name": "Laos"
+ },
+ "LV": {
+ "name": "Latvia"
+ },
+ "LB": {
+ "name": "Lebanon"
+ },
+ "LS": {
+ "name": "Lesotho"
+ },
+ "LR": {
+ "name": "Liberia"
+ },
+ "LY": {
+ "name": "Libya"
+ },
+ "LI": {
+ "name": "Liechtenstein"
+ },
+ "LT": {
+ "name": "Lithuania"
+ },
+ "LU": {
+ "name": "Luxembourg"
+ },
+ "MO": {
+ "name": "Macau SAR China"
+ },
+ "MK": {
+ "name": "Macedonia"
+ },
+ "MG": {
+ "name": "Madagascar"
+ },
+ "MW": {
+ "name": "Malawi"
+ },
+ "MY": {
+ "name": "Malaysia"
+ },
+ "MV": {
+ "name": "Maldives"
+ },
+ "ML": {
+ "name": "Mali"
+ },
+ "MT": {
+ "name": "Malta"
+ },
+ "MH": {
+ "name": "Marshall Islands"
+ },
+ "MQ": {
+ "name": "Martinique"
+ },
+ "MR": {
+ "name": "Mauritania"
+ },
+ "MU": {
+ "name": "Mauritius"
+ },
+ "YT": {
+ "name": "Mayotte"
+ },
+ "MX": {
+ "name": "Mexico"
+ },
+ "FM": {
+ "name": "Micronesia"
+ },
+ "MD": {
+ "name": "Moldova"
+ },
+ "MC": {
+ "name": "Monaco"
+ },
+ "MN": {
+ "name": "Mongolia"
+ },
+ "ME": {
+ "name": "Montenegro"
+ },
+ "MS": {
+ "name": "Montserrat"
+ },
+ "MA": {
+ "name": "Morocco"
+ },
+ "MZ": {
+ "name": "Mozambique"
+ },
+ "MM": {
+ "name": "Myanmar (Burma)"
+ },
+ "NA": {
+ "name": "Namibia"
+ },
+ "NR": {
+ "name": "Nauru"
+ },
+ "NP": {
+ "name": "Nepal"
+ },
+ "NL": {
+ "name": "Netherlands"
+ },
+ "NC": {
+ "name": "New Caledonia"
+ },
+ "NZ": {
+ "name": "New Zealand"
+ },
+ "NI": {
+ "name": "Nicaragua"
+ },
+ "NE": {
+ "name": "Niger"
+ },
+ "NG": {
+ "name": "Nigeria"
+ },
+ "NU": {
+ "name": "Niue"
+ },
+ "NF": {
+ "name": "Norfolk Island"
+ },
+ "KP": {
+ "name": "North Korea"
+ },
+ "MP": {
+ "name": "Northern Mariana Islands"
+ },
+ "NO": {
+ "name": "Norway"
+ },
+ "OM": {
+ "name": "Oman"
+ },
+ "PK": {
+ "name": "Pakistan"
+ },
+ "PW": {
+ "name": "Palau"
+ },
+ "PS": {
+ "name": "Palestinian Territories"
+ },
+ "PA": {
+ "name": "Panama"
+ },
+ "PG": {
+ "name": "Papua New Guinea"
+ },
+ "PY": {
+ "name": "Paraguay"
+ },
+ "PE": {
+ "name": "Peru"
+ },
+ "PH": {
+ "name": "Philippines"
+ },
+ "PN": {
+ "name": "Pitcairn Islands"
+ },
+ "PL": {
+ "name": "Poland"
+ },
+ "PT": {
+ "name": "Portugal"
+ },
+ "PR": {
+ "name": "Puerto Rico"
+ },
+ "QA": {
+ "name": "Qatar"
+ },
+ "RE": {
+ "name": "Réunion"
+ },
+ "RO": {
+ "name": "Romania"
+ },
+ "RU": {
+ "name": "Russia"
+ },
+ "RW": {
+ "name": "Rwanda"
+ },
+ "BL": {
+ "name": "Saint Barthélemy"
+ },
+ "SH": {
+ "name": "Saint Helena"
+ },
+ "KN": {
+ "name": "Saint Kitts and Nevis"
+ },
+ "LC": {
+ "name": "Saint Lucia"
+ },
+ "MF": {
+ "name": "Saint Martin"
+ },
+ "PM": {
+ "name": "Saint Pierre and Miquelon"
+ },
+ "WS": {
+ "name": "Samoa"
+ },
+ "SM": {
+ "name": "San Marino"
+ },
+ "ST": {
+ "name": "São Tomé and Príncipe"
+ },
+ "SA": {
+ "name": "Saudi Arabia"
+ },
+ "SN": {
+ "name": "Senegal"
+ },
+ "RS": {
+ "name": "Serbia"
+ },
+ "SC": {
+ "name": "Seychelles"
+ },
+ "SL": {
+ "name": "Sierra Leone"
+ },
+ "SG": {
+ "name": "Singapore"
+ },
+ "SX": {
+ "name": "Sint Maarten"
+ },
+ "SK": {
+ "name": "Slovakia"
+ },
+ "SI": {
+ "name": "Slovenia"
+ },
+ "SB": {
+ "name": "Solomon Islands"
+ },
+ "SO": {
+ "name": "Somalia"
+ },
+ "ZA": {
+ "name": "South Africa"
+ },
+ "GS": {
+ "name": "South Georgia & South Sandwich Islands"
+ },
+ "KR": {
+ "name": "South Korea"
+ },
+ "SS": {
+ "name": "South Sudan"
+ },
+ "ES": {
+ "name": "Spain"
+ },
+ "LK": {
+ "name": "Sri Lanka"
+ },
+ "VC": {
+ "name": "St. Vincent & Grenadines"
+ },
+ "SD": {
+ "name": "Sudan"
+ },
+ "SR": {
+ "name": "Suriname"
+ },
+ "SJ": {
+ "name": "Svalbard and Jan Mayen"
+ },
+ "SZ": {
+ "name": "Swaziland"
+ },
+ "SE": {
+ "name": "Sweden"
+ },
+ "CH": {
+ "name": "Switzerland"
+ },
+ "SY": {
+ "name": "Syria"
+ },
+ "TW": {
+ "name": "Taiwan"
+ },
+ "TJ": {
+ "name": "Tajikistan"
+ },
+ "TZ": {
+ "name": "Tanzania"
+ },
+ "TH": {
+ "name": "Thailand"
+ },
+ "TL": {
+ "name": "Timor-Leste"
+ },
+ "TG": {
+ "name": "Togo"
+ },
+ "TK": {
+ "name": "Tokelau"
+ },
+ "TO": {
+ "name": "Tonga"
+ },
+ "TT": {
+ "name": "Trinidad and Tobago"
+ },
+ "TA": {
+ "name": "Tristan da Cunha"
+ },
+ "TN": {
+ "name": "Tunisia"
+ },
+ "TR": {
+ "name": "Turkey"
+ },
+ "TM": {
+ "name": "Turkmenistan"
+ },
+ "TC": {
+ "name": "Turks and Caicos Islands"
+ },
+ "TV": {
+ "name": "Tuvalu"
+ },
+ "UM": {
+ "name": "U.S. Outlying Islands"
+ },
+ "VI": {
+ "name": "U.S. Virgin Islands"
+ },
+ "UG": {
+ "name": "Uganda"
+ },
+ "UA": {
+ "name": "Ukraine"
+ },
+ "AE": {
+ "name": "United Arab Emirates"
+ },
+ "GB": {
+ "name": "United Kingdom"
+ },
+ "US": {
+ "name": "United States"
+ },
+ "UY": {
+ "name": "Uruguay"
+ },
+ "UZ": {
+ "name": "Uzbekistan"
+ },
+ "VU": {
+ "name": "Vanuatu"
+ },
+ "VA": {
+ "name": "Vatican City"
+ },
+ "VE": {
+ "name": "Venezuela"
+ },
+ "VN": {
+ "name": "Vietnam"
+ },
+ "WF": {
+ "name": "Wallis and Futuna"
+ },
+ "EH": {
+ "name": "Western Sahara"
+ },
+ "YE": {
+ "name": "Yemen"
+ },
+ "ZM": {
+ "name": "Zambia"
+ },
+ "ZW": {
+ "name": "Zimbabwe"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/country/en-IO.json b/library/intl/resources/country/en-IO.json
new file mode 100644
index 000000000..081d5f4c0
--- /dev/null
+++ b/library/intl/resources/country/en-IO.json
@@ -0,0 +1,761 @@
+{
+ "AF": {
+ "name": "Afghanistan"
+ },
+ "AX": {
+ "name": "Ã…land Islands"
+ },
+ "AL": {
+ "name": "Albania"
+ },
+ "DZ": {
+ "name": "Algeria"
+ },
+ "AS": {
+ "name": "American Samoa"
+ },
+ "AD": {
+ "name": "Andorra"
+ },
+ "AO": {
+ "name": "Angola"
+ },
+ "AI": {
+ "name": "Anguilla"
+ },
+ "AQ": {
+ "name": "Antarctica"
+ },
+ "AG": {
+ "name": "Antigua and Barbuda"
+ },
+ "AR": {
+ "name": "Argentina"
+ },
+ "AM": {
+ "name": "Armenia"
+ },
+ "AW": {
+ "name": "Aruba"
+ },
+ "AC": {
+ "name": "Ascension Island"
+ },
+ "AU": {
+ "name": "Australia"
+ },
+ "AT": {
+ "name": "Austria"
+ },
+ "AZ": {
+ "name": "Azerbaijan"
+ },
+ "BS": {
+ "name": "Bahamas"
+ },
+ "BH": {
+ "name": "Bahrain"
+ },
+ "BD": {
+ "name": "Bangladesh"
+ },
+ "BB": {
+ "name": "Barbados"
+ },
+ "BY": {
+ "name": "Belarus"
+ },
+ "BE": {
+ "name": "Belgium"
+ },
+ "BZ": {
+ "name": "Belize"
+ },
+ "BJ": {
+ "name": "Benin"
+ },
+ "BM": {
+ "name": "Bermuda"
+ },
+ "BT": {
+ "name": "Bhutan"
+ },
+ "BO": {
+ "name": "Bolivia"
+ },
+ "BA": {
+ "name": "Bosnia and Herzegovina"
+ },
+ "BW": {
+ "name": "Botswana"
+ },
+ "BR": {
+ "name": "Brazil"
+ },
+ "IO": {
+ "name": "British Indian Ocean Territory"
+ },
+ "VG": {
+ "name": "British Virgin Islands"
+ },
+ "BN": {
+ "name": "Brunei"
+ },
+ "BG": {
+ "name": "Bulgaria"
+ },
+ "BF": {
+ "name": "Burkina Faso"
+ },
+ "BI": {
+ "name": "Burundi"
+ },
+ "KH": {
+ "name": "Cambodia"
+ },
+ "CM": {
+ "name": "Cameroon"
+ },
+ "CA": {
+ "name": "Canada"
+ },
+ "IC": {
+ "name": "Canary Islands"
+ },
+ "CV": {
+ "name": "Cape Verde"
+ },
+ "BQ": {
+ "name": "Caribbean Netherlands"
+ },
+ "KY": {
+ "name": "Cayman Islands"
+ },
+ "CF": {
+ "name": "Central African Republic"
+ },
+ "EA": {
+ "name": "Ceuta and Melilla"
+ },
+ "TD": {
+ "name": "Chad"
+ },
+ "CL": {
+ "name": "Chile"
+ },
+ "CN": {
+ "name": "China"
+ },
+ "CX": {
+ "name": "Christmas Island"
+ },
+ "CC": {
+ "name": "Cocos (Keeling) Islands"
+ },
+ "CO": {
+ "name": "Colombia"
+ },
+ "KM": {
+ "name": "Comoros"
+ },
+ "CG": {
+ "name": "Congo - Brazzaville"
+ },
+ "CD": {
+ "name": "Congo - Kinshasa"
+ },
+ "CK": {
+ "name": "Cook Islands"
+ },
+ "CR": {
+ "name": "Costa Rica"
+ },
+ "CI": {
+ "name": "Côte d’Ivoire"
+ },
+ "HR": {
+ "name": "Croatia"
+ },
+ "CU": {
+ "name": "Cuba"
+ },
+ "CW": {
+ "name": "Curaçao"
+ },
+ "CY": {
+ "name": "Cyprus"
+ },
+ "CZ": {
+ "name": "Czech Republic"
+ },
+ "DK": {
+ "name": "Denmark"
+ },
+ "DG": {
+ "name": "Diego Garcia"
+ },
+ "DJ": {
+ "name": "Djibouti"
+ },
+ "DM": {
+ "name": "Dominica"
+ },
+ "DO": {
+ "name": "Dominican Republic"
+ },
+ "EC": {
+ "name": "Ecuador"
+ },
+ "EG": {
+ "name": "Egypt"
+ },
+ "SV": {
+ "name": "El Salvador"
+ },
+ "GQ": {
+ "name": "Equatorial Guinea"
+ },
+ "ER": {
+ "name": "Eritrea"
+ },
+ "EE": {
+ "name": "Estonia"
+ },
+ "ET": {
+ "name": "Ethiopia"
+ },
+ "FK": {
+ "name": "Falkland Islands"
+ },
+ "FO": {
+ "name": "Faroe Islands"
+ },
+ "FJ": {
+ "name": "Fiji"
+ },
+ "FI": {
+ "name": "Finland"
+ },
+ "FR": {
+ "name": "France"
+ },
+ "GF": {
+ "name": "French Guiana"
+ },
+ "PF": {
+ "name": "French Polynesia"
+ },
+ "TF": {
+ "name": "French Southern Territories"
+ },
+ "GA": {
+ "name": "Gabon"
+ },
+ "GM": {
+ "name": "Gambia"
+ },
+ "GE": {
+ "name": "Georgia"
+ },
+ "DE": {
+ "name": "Germany"
+ },
+ "GH": {
+ "name": "Ghana"
+ },
+ "GI": {
+ "name": "Gibraltar"
+ },
+ "GR": {
+ "name": "Greece"
+ },
+ "GL": {
+ "name": "Greenland"
+ },
+ "GD": {
+ "name": "Grenada"
+ },
+ "GP": {
+ "name": "Guadeloupe"
+ },
+ "GU": {
+ "name": "Guam"
+ },
+ "GT": {
+ "name": "Guatemala"
+ },
+ "GG": {
+ "name": "Guernsey"
+ },
+ "GN": {
+ "name": "Guinea"
+ },
+ "GW": {
+ "name": "Guinea-Bissau"
+ },
+ "GY": {
+ "name": "Guyana"
+ },
+ "HT": {
+ "name": "Haiti"
+ },
+ "HN": {
+ "name": "Honduras"
+ },
+ "HK": {
+ "name": "Hong Kong SAR China"
+ },
+ "HU": {
+ "name": "Hungary"
+ },
+ "IS": {
+ "name": "Iceland"
+ },
+ "IN": {
+ "name": "India"
+ },
+ "ID": {
+ "name": "Indonesia"
+ },
+ "IR": {
+ "name": "Iran"
+ },
+ "IQ": {
+ "name": "Iraq"
+ },
+ "IE": {
+ "name": "Ireland"
+ },
+ "IM": {
+ "name": "Isle of Man"
+ },
+ "IL": {
+ "name": "Israel"
+ },
+ "IT": {
+ "name": "Italy"
+ },
+ "JM": {
+ "name": "Jamaica"
+ },
+ "JP": {
+ "name": "Japan"
+ },
+ "JE": {
+ "name": "Jersey"
+ },
+ "JO": {
+ "name": "Jordan"
+ },
+ "KZ": {
+ "name": "Kazakhstan"
+ },
+ "KE": {
+ "name": "Kenya"
+ },
+ "KI": {
+ "name": "Kiribati"
+ },
+ "XK": {
+ "name": "Kosovo"
+ },
+ "KW": {
+ "name": "Kuwait"
+ },
+ "KG": {
+ "name": "Kyrgyzstan"
+ },
+ "LA": {
+ "name": "Laos"
+ },
+ "LV": {
+ "name": "Latvia"
+ },
+ "LB": {
+ "name": "Lebanon"
+ },
+ "LS": {
+ "name": "Lesotho"
+ },
+ "LR": {
+ "name": "Liberia"
+ },
+ "LY": {
+ "name": "Libya"
+ },
+ "LI": {
+ "name": "Liechtenstein"
+ },
+ "LT": {
+ "name": "Lithuania"
+ },
+ "LU": {
+ "name": "Luxembourg"
+ },
+ "MO": {
+ "name": "Macau SAR China"
+ },
+ "MK": {
+ "name": "Macedonia"
+ },
+ "MG": {
+ "name": "Madagascar"
+ },
+ "MW": {
+ "name": "Malawi"
+ },
+ "MY": {
+ "name": "Malaysia"
+ },
+ "MV": {
+ "name": "Maldives"
+ },
+ "ML": {
+ "name": "Mali"
+ },
+ "MT": {
+ "name": "Malta"
+ },
+ "MH": {
+ "name": "Marshall Islands"
+ },
+ "MQ": {
+ "name": "Martinique"
+ },
+ "MR": {
+ "name": "Mauritania"
+ },
+ "MU": {
+ "name": "Mauritius"
+ },
+ "YT": {
+ "name": "Mayotte"
+ },
+ "MX": {
+ "name": "Mexico"
+ },
+ "FM": {
+ "name": "Micronesia"
+ },
+ "MD": {
+ "name": "Moldova"
+ },
+ "MC": {
+ "name": "Monaco"
+ },
+ "MN": {
+ "name": "Mongolia"
+ },
+ "ME": {
+ "name": "Montenegro"
+ },
+ "MS": {
+ "name": "Montserrat"
+ },
+ "MA": {
+ "name": "Morocco"
+ },
+ "MZ": {
+ "name": "Mozambique"
+ },
+ "MM": {
+ "name": "Myanmar (Burma)"
+ },
+ "NA": {
+ "name": "Namibia"
+ },
+ "NR": {
+ "name": "Nauru"
+ },
+ "NP": {
+ "name": "Nepal"
+ },
+ "NL": {
+ "name": "Netherlands"
+ },
+ "NC": {
+ "name": "New Caledonia"
+ },
+ "NZ": {
+ "name": "New Zealand"
+ },
+ "NI": {
+ "name": "Nicaragua"
+ },
+ "NE": {
+ "name": "Niger"
+ },
+ "NG": {
+ "name": "Nigeria"
+ },
+ "NU": {
+ "name": "Niue"
+ },
+ "NF": {
+ "name": "Norfolk Island"
+ },
+ "KP": {
+ "name": "North Korea"
+ },
+ "MP": {
+ "name": "Northern Mariana Islands"
+ },
+ "NO": {
+ "name": "Norway"
+ },
+ "OM": {
+ "name": "Oman"
+ },
+ "PK": {
+ "name": "Pakistan"
+ },
+ "PW": {
+ "name": "Palau"
+ },
+ "PS": {
+ "name": "Palestinian Territories"
+ },
+ "PA": {
+ "name": "Panama"
+ },
+ "PG": {
+ "name": "Papua New Guinea"
+ },
+ "PY": {
+ "name": "Paraguay"
+ },
+ "PE": {
+ "name": "Peru"
+ },
+ "PH": {
+ "name": "Philippines"
+ },
+ "PN": {
+ "name": "Pitcairn Islands"
+ },
+ "PL": {
+ "name": "Poland"
+ },
+ "PT": {
+ "name": "Portugal"
+ },
+ "PR": {
+ "name": "Puerto Rico"
+ },
+ "QA": {
+ "name": "Qatar"
+ },
+ "RE": {
+ "name": "Réunion"
+ },
+ "RO": {
+ "name": "Romania"
+ },
+ "RU": {
+ "name": "Russia"
+ },
+ "RW": {
+ "name": "Rwanda"
+ },
+ "BL": {
+ "name": "Saint Barthélemy"
+ },
+ "SH": {
+ "name": "Saint Helena"
+ },
+ "KN": {
+ "name": "Saint Kitts and Nevis"
+ },
+ "LC": {
+ "name": "Saint Lucia"
+ },
+ "MF": {
+ "name": "Saint Martin"
+ },
+ "PM": {
+ "name": "Saint Pierre and Miquelon"
+ },
+ "WS": {
+ "name": "Samoa"
+ },
+ "SM": {
+ "name": "San Marino"
+ },
+ "ST": {
+ "name": "São Tomé and Príncipe"
+ },
+ "SA": {
+ "name": "Saudi Arabia"
+ },
+ "SN": {
+ "name": "Senegal"
+ },
+ "RS": {
+ "name": "Serbia"
+ },
+ "SC": {
+ "name": "Seychelles"
+ },
+ "SL": {
+ "name": "Sierra Leone"
+ },
+ "SG": {
+ "name": "Singapore"
+ },
+ "SX": {
+ "name": "Sint Maarten"
+ },
+ "SK": {
+ "name": "Slovakia"
+ },
+ "SI": {
+ "name": "Slovenia"
+ },
+ "SB": {
+ "name": "Solomon Islands"
+ },
+ "SO": {
+ "name": "Somalia"
+ },
+ "ZA": {
+ "name": "South Africa"
+ },
+ "GS": {
+ "name": "South Georgia & South Sandwich Islands"
+ },
+ "KR": {
+ "name": "South Korea"
+ },
+ "SS": {
+ "name": "South Sudan"
+ },
+ "ES": {
+ "name": "Spain"
+ },
+ "LK": {
+ "name": "Sri Lanka"
+ },
+ "VC": {
+ "name": "St. Vincent & Grenadines"
+ },
+ "SD": {
+ "name": "Sudan"
+ },
+ "SR": {
+ "name": "Suriname"
+ },
+ "SJ": {
+ "name": "Svalbard and Jan Mayen"
+ },
+ "SZ": {
+ "name": "Swaziland"
+ },
+ "SE": {
+ "name": "Sweden"
+ },
+ "CH": {
+ "name": "Switzerland"
+ },
+ "SY": {
+ "name": "Syria"
+ },
+ "TW": {
+ "name": "Taiwan"
+ },
+ "TJ": {
+ "name": "Tajikistan"
+ },
+ "TZ": {
+ "name": "Tanzania"
+ },
+ "TH": {
+ "name": "Thailand"
+ },
+ "TL": {
+ "name": "Timor-Leste"
+ },
+ "TG": {
+ "name": "Togo"
+ },
+ "TK": {
+ "name": "Tokelau"
+ },
+ "TO": {
+ "name": "Tonga"
+ },
+ "TT": {
+ "name": "Trinidad and Tobago"
+ },
+ "TA": {
+ "name": "Tristan da Cunha"
+ },
+ "TN": {
+ "name": "Tunisia"
+ },
+ "TR": {
+ "name": "Turkey"
+ },
+ "TM": {
+ "name": "Turkmenistan"
+ },
+ "TC": {
+ "name": "Turks and Caicos Islands"
+ },
+ "TV": {
+ "name": "Tuvalu"
+ },
+ "UM": {
+ "name": "U.S. Outlying Islands"
+ },
+ "VI": {
+ "name": "U.S. Virgin Islands"
+ },
+ "UG": {
+ "name": "Uganda"
+ },
+ "UA": {
+ "name": "Ukraine"
+ },
+ "AE": {
+ "name": "United Arab Emirates"
+ },
+ "GB": {
+ "name": "United Kingdom"
+ },
+ "US": {
+ "name": "United States"
+ },
+ "UY": {
+ "name": "Uruguay"
+ },
+ "UZ": {
+ "name": "Uzbekistan"
+ },
+ "VU": {
+ "name": "Vanuatu"
+ },
+ "VA": {
+ "name": "Vatican City"
+ },
+ "VE": {
+ "name": "Venezuela"
+ },
+ "VN": {
+ "name": "Vietnam"
+ },
+ "WF": {
+ "name": "Wallis and Futuna"
+ },
+ "EH": {
+ "name": "Western Sahara"
+ },
+ "YE": {
+ "name": "Yemen"
+ },
+ "ZM": {
+ "name": "Zambia"
+ },
+ "ZW": {
+ "name": "Zimbabwe"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/country/en-JE.json b/library/intl/resources/country/en-JE.json
new file mode 100644
index 000000000..081d5f4c0
--- /dev/null
+++ b/library/intl/resources/country/en-JE.json
@@ -0,0 +1,761 @@
+{
+ "AF": {
+ "name": "Afghanistan"
+ },
+ "AX": {
+ "name": "Ã…land Islands"
+ },
+ "AL": {
+ "name": "Albania"
+ },
+ "DZ": {
+ "name": "Algeria"
+ },
+ "AS": {
+ "name": "American Samoa"
+ },
+ "AD": {
+ "name": "Andorra"
+ },
+ "AO": {
+ "name": "Angola"
+ },
+ "AI": {
+ "name": "Anguilla"
+ },
+ "AQ": {
+ "name": "Antarctica"
+ },
+ "AG": {
+ "name": "Antigua and Barbuda"
+ },
+ "AR": {
+ "name": "Argentina"
+ },
+ "AM": {
+ "name": "Armenia"
+ },
+ "AW": {
+ "name": "Aruba"
+ },
+ "AC": {
+ "name": "Ascension Island"
+ },
+ "AU": {
+ "name": "Australia"
+ },
+ "AT": {
+ "name": "Austria"
+ },
+ "AZ": {
+ "name": "Azerbaijan"
+ },
+ "BS": {
+ "name": "Bahamas"
+ },
+ "BH": {
+ "name": "Bahrain"
+ },
+ "BD": {
+ "name": "Bangladesh"
+ },
+ "BB": {
+ "name": "Barbados"
+ },
+ "BY": {
+ "name": "Belarus"
+ },
+ "BE": {
+ "name": "Belgium"
+ },
+ "BZ": {
+ "name": "Belize"
+ },
+ "BJ": {
+ "name": "Benin"
+ },
+ "BM": {
+ "name": "Bermuda"
+ },
+ "BT": {
+ "name": "Bhutan"
+ },
+ "BO": {
+ "name": "Bolivia"
+ },
+ "BA": {
+ "name": "Bosnia and Herzegovina"
+ },
+ "BW": {
+ "name": "Botswana"
+ },
+ "BR": {
+ "name": "Brazil"
+ },
+ "IO": {
+ "name": "British Indian Ocean Territory"
+ },
+ "VG": {
+ "name": "British Virgin Islands"
+ },
+ "BN": {
+ "name": "Brunei"
+ },
+ "BG": {
+ "name": "Bulgaria"
+ },
+ "BF": {
+ "name": "Burkina Faso"
+ },
+ "BI": {
+ "name": "Burundi"
+ },
+ "KH": {
+ "name": "Cambodia"
+ },
+ "CM": {
+ "name": "Cameroon"
+ },
+ "CA": {
+ "name": "Canada"
+ },
+ "IC": {
+ "name": "Canary Islands"
+ },
+ "CV": {
+ "name": "Cape Verde"
+ },
+ "BQ": {
+ "name": "Caribbean Netherlands"
+ },
+ "KY": {
+ "name": "Cayman Islands"
+ },
+ "CF": {
+ "name": "Central African Republic"
+ },
+ "EA": {
+ "name": "Ceuta and Melilla"
+ },
+ "TD": {
+ "name": "Chad"
+ },
+ "CL": {
+ "name": "Chile"
+ },
+ "CN": {
+ "name": "China"
+ },
+ "CX": {
+ "name": "Christmas Island"
+ },
+ "CC": {
+ "name": "Cocos (Keeling) Islands"
+ },
+ "CO": {
+ "name": "Colombia"
+ },
+ "KM": {
+ "name": "Comoros"
+ },
+ "CG": {
+ "name": "Congo - Brazzaville"
+ },
+ "CD": {
+ "name": "Congo - Kinshasa"
+ },
+ "CK": {
+ "name": "Cook Islands"
+ },
+ "CR": {
+ "name": "Costa Rica"
+ },
+ "CI": {
+ "name": "Côte d’Ivoire"
+ },
+ "HR": {
+ "name": "Croatia"
+ },
+ "CU": {
+ "name": "Cuba"
+ },
+ "CW": {
+ "name": "Curaçao"
+ },
+ "CY": {
+ "name": "Cyprus"
+ },
+ "CZ": {
+ "name": "Czech Republic"
+ },
+ "DK": {
+ "name": "Denmark"
+ },
+ "DG": {
+ "name": "Diego Garcia"
+ },
+ "DJ": {
+ "name": "Djibouti"
+ },
+ "DM": {
+ "name": "Dominica"
+ },
+ "DO": {
+ "name": "Dominican Republic"
+ },
+ "EC": {
+ "name": "Ecuador"
+ },
+ "EG": {
+ "name": "Egypt"
+ },
+ "SV": {
+ "name": "El Salvador"
+ },
+ "GQ": {
+ "name": "Equatorial Guinea"
+ },
+ "ER": {
+ "name": "Eritrea"
+ },
+ "EE": {
+ "name": "Estonia"
+ },
+ "ET": {
+ "name": "Ethiopia"
+ },
+ "FK": {
+ "name": "Falkland Islands"
+ },
+ "FO": {
+ "name": "Faroe Islands"
+ },
+ "FJ": {
+ "name": "Fiji"
+ },
+ "FI": {
+ "name": "Finland"
+ },
+ "FR": {
+ "name": "France"
+ },
+ "GF": {
+ "name": "French Guiana"
+ },
+ "PF": {
+ "name": "French Polynesia"
+ },
+ "TF": {
+ "name": "French Southern Territories"
+ },
+ "GA": {
+ "name": "Gabon"
+ },
+ "GM": {
+ "name": "Gambia"
+ },
+ "GE": {
+ "name": "Georgia"
+ },
+ "DE": {
+ "name": "Germany"
+ },
+ "GH": {
+ "name": "Ghana"
+ },
+ "GI": {
+ "name": "Gibraltar"
+ },
+ "GR": {
+ "name": "Greece"
+ },
+ "GL": {
+ "name": "Greenland"
+ },
+ "GD": {
+ "name": "Grenada"
+ },
+ "GP": {
+ "name": "Guadeloupe"
+ },
+ "GU": {
+ "name": "Guam"
+ },
+ "GT": {
+ "name": "Guatemala"
+ },
+ "GG": {
+ "name": "Guernsey"
+ },
+ "GN": {
+ "name": "Guinea"
+ },
+ "GW": {
+ "name": "Guinea-Bissau"
+ },
+ "GY": {
+ "name": "Guyana"
+ },
+ "HT": {
+ "name": "Haiti"
+ },
+ "HN": {
+ "name": "Honduras"
+ },
+ "HK": {
+ "name": "Hong Kong SAR China"
+ },
+ "HU": {
+ "name": "Hungary"
+ },
+ "IS": {
+ "name": "Iceland"
+ },
+ "IN": {
+ "name": "India"
+ },
+ "ID": {
+ "name": "Indonesia"
+ },
+ "IR": {
+ "name": "Iran"
+ },
+ "IQ": {
+ "name": "Iraq"
+ },
+ "IE": {
+ "name": "Ireland"
+ },
+ "IM": {
+ "name": "Isle of Man"
+ },
+ "IL": {
+ "name": "Israel"
+ },
+ "IT": {
+ "name": "Italy"
+ },
+ "JM": {
+ "name": "Jamaica"
+ },
+ "JP": {
+ "name": "Japan"
+ },
+ "JE": {
+ "name": "Jersey"
+ },
+ "JO": {
+ "name": "Jordan"
+ },
+ "KZ": {
+ "name": "Kazakhstan"
+ },
+ "KE": {
+ "name": "Kenya"
+ },
+ "KI": {
+ "name": "Kiribati"
+ },
+ "XK": {
+ "name": "Kosovo"
+ },
+ "KW": {
+ "name": "Kuwait"
+ },
+ "KG": {
+ "name": "Kyrgyzstan"
+ },
+ "LA": {
+ "name": "Laos"
+ },
+ "LV": {
+ "name": "Latvia"
+ },
+ "LB": {
+ "name": "Lebanon"
+ },
+ "LS": {
+ "name": "Lesotho"
+ },
+ "LR": {
+ "name": "Liberia"
+ },
+ "LY": {
+ "name": "Libya"
+ },
+ "LI": {
+ "name": "Liechtenstein"
+ },
+ "LT": {
+ "name": "Lithuania"
+ },
+ "LU": {
+ "name": "Luxembourg"
+ },
+ "MO": {
+ "name": "Macau SAR China"
+ },
+ "MK": {
+ "name": "Macedonia"
+ },
+ "MG": {
+ "name": "Madagascar"
+ },
+ "MW": {
+ "name": "Malawi"
+ },
+ "MY": {
+ "name": "Malaysia"
+ },
+ "MV": {
+ "name": "Maldives"
+ },
+ "ML": {
+ "name": "Mali"
+ },
+ "MT": {
+ "name": "Malta"
+ },
+ "MH": {
+ "name": "Marshall Islands"
+ },
+ "MQ": {
+ "name": "Martinique"
+ },
+ "MR": {
+ "name": "Mauritania"
+ },
+ "MU": {
+ "name": "Mauritius"
+ },
+ "YT": {
+ "name": "Mayotte"
+ },
+ "MX": {
+ "name": "Mexico"
+ },
+ "FM": {
+ "name": "Micronesia"
+ },
+ "MD": {
+ "name": "Moldova"
+ },
+ "MC": {
+ "name": "Monaco"
+ },
+ "MN": {
+ "name": "Mongolia"
+ },
+ "ME": {
+ "name": "Montenegro"
+ },
+ "MS": {
+ "name": "Montserrat"
+ },
+ "MA": {
+ "name": "Morocco"
+ },
+ "MZ": {
+ "name": "Mozambique"
+ },
+ "MM": {
+ "name": "Myanmar (Burma)"
+ },
+ "NA": {
+ "name": "Namibia"
+ },
+ "NR": {
+ "name": "Nauru"
+ },
+ "NP": {
+ "name": "Nepal"
+ },
+ "NL": {
+ "name": "Netherlands"
+ },
+ "NC": {
+ "name": "New Caledonia"
+ },
+ "NZ": {
+ "name": "New Zealand"
+ },
+ "NI": {
+ "name": "Nicaragua"
+ },
+ "NE": {
+ "name": "Niger"
+ },
+ "NG": {
+ "name": "Nigeria"
+ },
+ "NU": {
+ "name": "Niue"
+ },
+ "NF": {
+ "name": "Norfolk Island"
+ },
+ "KP": {
+ "name": "North Korea"
+ },
+ "MP": {
+ "name": "Northern Mariana Islands"
+ },
+ "NO": {
+ "name": "Norway"
+ },
+ "OM": {
+ "name": "Oman"
+ },
+ "PK": {
+ "name": "Pakistan"
+ },
+ "PW": {
+ "name": "Palau"
+ },
+ "PS": {
+ "name": "Palestinian Territories"
+ },
+ "PA": {
+ "name": "Panama"
+ },
+ "PG": {
+ "name": "Papua New Guinea"
+ },
+ "PY": {
+ "name": "Paraguay"
+ },
+ "PE": {
+ "name": "Peru"
+ },
+ "PH": {
+ "name": "Philippines"
+ },
+ "PN": {
+ "name": "Pitcairn Islands"
+ },
+ "PL": {
+ "name": "Poland"
+ },
+ "PT": {
+ "name": "Portugal"
+ },
+ "PR": {
+ "name": "Puerto Rico"
+ },
+ "QA": {
+ "name": "Qatar"
+ },
+ "RE": {
+ "name": "Réunion"
+ },
+ "RO": {
+ "name": "Romania"
+ },
+ "RU": {
+ "name": "Russia"
+ },
+ "RW": {
+ "name": "Rwanda"
+ },
+ "BL": {
+ "name": "Saint Barthélemy"
+ },
+ "SH": {
+ "name": "Saint Helena"
+ },
+ "KN": {
+ "name": "Saint Kitts and Nevis"
+ },
+ "LC": {
+ "name": "Saint Lucia"
+ },
+ "MF": {
+ "name": "Saint Martin"
+ },
+ "PM": {
+ "name": "Saint Pierre and Miquelon"
+ },
+ "WS": {
+ "name": "Samoa"
+ },
+ "SM": {
+ "name": "San Marino"
+ },
+ "ST": {
+ "name": "São Tomé and Príncipe"
+ },
+ "SA": {
+ "name": "Saudi Arabia"
+ },
+ "SN": {
+ "name": "Senegal"
+ },
+ "RS": {
+ "name": "Serbia"
+ },
+ "SC": {
+ "name": "Seychelles"
+ },
+ "SL": {
+ "name": "Sierra Leone"
+ },
+ "SG": {
+ "name": "Singapore"
+ },
+ "SX": {
+ "name": "Sint Maarten"
+ },
+ "SK": {
+ "name": "Slovakia"
+ },
+ "SI": {
+ "name": "Slovenia"
+ },
+ "SB": {
+ "name": "Solomon Islands"
+ },
+ "SO": {
+ "name": "Somalia"
+ },
+ "ZA": {
+ "name": "South Africa"
+ },
+ "GS": {
+ "name": "South Georgia & South Sandwich Islands"
+ },
+ "KR": {
+ "name": "South Korea"
+ },
+ "SS": {
+ "name": "South Sudan"
+ },
+ "ES": {
+ "name": "Spain"
+ },
+ "LK": {
+ "name": "Sri Lanka"
+ },
+ "VC": {
+ "name": "St. Vincent & Grenadines"
+ },
+ "SD": {
+ "name": "Sudan"
+ },
+ "SR": {
+ "name": "Suriname"
+ },
+ "SJ": {
+ "name": "Svalbard and Jan Mayen"
+ },
+ "SZ": {
+ "name": "Swaziland"
+ },
+ "SE": {
+ "name": "Sweden"
+ },
+ "CH": {
+ "name": "Switzerland"
+ },
+ "SY": {
+ "name": "Syria"
+ },
+ "TW": {
+ "name": "Taiwan"
+ },
+ "TJ": {
+ "name": "Tajikistan"
+ },
+ "TZ": {
+ "name": "Tanzania"
+ },
+ "TH": {
+ "name": "Thailand"
+ },
+ "TL": {
+ "name": "Timor-Leste"
+ },
+ "TG": {
+ "name": "Togo"
+ },
+ "TK": {
+ "name": "Tokelau"
+ },
+ "TO": {
+ "name": "Tonga"
+ },
+ "TT": {
+ "name": "Trinidad and Tobago"
+ },
+ "TA": {
+ "name": "Tristan da Cunha"
+ },
+ "TN": {
+ "name": "Tunisia"
+ },
+ "TR": {
+ "name": "Turkey"
+ },
+ "TM": {
+ "name": "Turkmenistan"
+ },
+ "TC": {
+ "name": "Turks and Caicos Islands"
+ },
+ "TV": {
+ "name": "Tuvalu"
+ },
+ "UM": {
+ "name": "U.S. Outlying Islands"
+ },
+ "VI": {
+ "name": "U.S. Virgin Islands"
+ },
+ "UG": {
+ "name": "Uganda"
+ },
+ "UA": {
+ "name": "Ukraine"
+ },
+ "AE": {
+ "name": "United Arab Emirates"
+ },
+ "GB": {
+ "name": "United Kingdom"
+ },
+ "US": {
+ "name": "United States"
+ },
+ "UY": {
+ "name": "Uruguay"
+ },
+ "UZ": {
+ "name": "Uzbekistan"
+ },
+ "VU": {
+ "name": "Vanuatu"
+ },
+ "VA": {
+ "name": "Vatican City"
+ },
+ "VE": {
+ "name": "Venezuela"
+ },
+ "VN": {
+ "name": "Vietnam"
+ },
+ "WF": {
+ "name": "Wallis and Futuna"
+ },
+ "EH": {
+ "name": "Western Sahara"
+ },
+ "YE": {
+ "name": "Yemen"
+ },
+ "ZM": {
+ "name": "Zambia"
+ },
+ "ZW": {
+ "name": "Zimbabwe"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/country/en-MO.json b/library/intl/resources/country/en-MO.json
new file mode 100644
index 000000000..081d5f4c0
--- /dev/null
+++ b/library/intl/resources/country/en-MO.json
@@ -0,0 +1,761 @@
+{
+ "AF": {
+ "name": "Afghanistan"
+ },
+ "AX": {
+ "name": "Ã…land Islands"
+ },
+ "AL": {
+ "name": "Albania"
+ },
+ "DZ": {
+ "name": "Algeria"
+ },
+ "AS": {
+ "name": "American Samoa"
+ },
+ "AD": {
+ "name": "Andorra"
+ },
+ "AO": {
+ "name": "Angola"
+ },
+ "AI": {
+ "name": "Anguilla"
+ },
+ "AQ": {
+ "name": "Antarctica"
+ },
+ "AG": {
+ "name": "Antigua and Barbuda"
+ },
+ "AR": {
+ "name": "Argentina"
+ },
+ "AM": {
+ "name": "Armenia"
+ },
+ "AW": {
+ "name": "Aruba"
+ },
+ "AC": {
+ "name": "Ascension Island"
+ },
+ "AU": {
+ "name": "Australia"
+ },
+ "AT": {
+ "name": "Austria"
+ },
+ "AZ": {
+ "name": "Azerbaijan"
+ },
+ "BS": {
+ "name": "Bahamas"
+ },
+ "BH": {
+ "name": "Bahrain"
+ },
+ "BD": {
+ "name": "Bangladesh"
+ },
+ "BB": {
+ "name": "Barbados"
+ },
+ "BY": {
+ "name": "Belarus"
+ },
+ "BE": {
+ "name": "Belgium"
+ },
+ "BZ": {
+ "name": "Belize"
+ },
+ "BJ": {
+ "name": "Benin"
+ },
+ "BM": {
+ "name": "Bermuda"
+ },
+ "BT": {
+ "name": "Bhutan"
+ },
+ "BO": {
+ "name": "Bolivia"
+ },
+ "BA": {
+ "name": "Bosnia and Herzegovina"
+ },
+ "BW": {
+ "name": "Botswana"
+ },
+ "BR": {
+ "name": "Brazil"
+ },
+ "IO": {
+ "name": "British Indian Ocean Territory"
+ },
+ "VG": {
+ "name": "British Virgin Islands"
+ },
+ "BN": {
+ "name": "Brunei"
+ },
+ "BG": {
+ "name": "Bulgaria"
+ },
+ "BF": {
+ "name": "Burkina Faso"
+ },
+ "BI": {
+ "name": "Burundi"
+ },
+ "KH": {
+ "name": "Cambodia"
+ },
+ "CM": {
+ "name": "Cameroon"
+ },
+ "CA": {
+ "name": "Canada"
+ },
+ "IC": {
+ "name": "Canary Islands"
+ },
+ "CV": {
+ "name": "Cape Verde"
+ },
+ "BQ": {
+ "name": "Caribbean Netherlands"
+ },
+ "KY": {
+ "name": "Cayman Islands"
+ },
+ "CF": {
+ "name": "Central African Republic"
+ },
+ "EA": {
+ "name": "Ceuta and Melilla"
+ },
+ "TD": {
+ "name": "Chad"
+ },
+ "CL": {
+ "name": "Chile"
+ },
+ "CN": {
+ "name": "China"
+ },
+ "CX": {
+ "name": "Christmas Island"
+ },
+ "CC": {
+ "name": "Cocos (Keeling) Islands"
+ },
+ "CO": {
+ "name": "Colombia"
+ },
+ "KM": {
+ "name": "Comoros"
+ },
+ "CG": {
+ "name": "Congo - Brazzaville"
+ },
+ "CD": {
+ "name": "Congo - Kinshasa"
+ },
+ "CK": {
+ "name": "Cook Islands"
+ },
+ "CR": {
+ "name": "Costa Rica"
+ },
+ "CI": {
+ "name": "Côte d’Ivoire"
+ },
+ "HR": {
+ "name": "Croatia"
+ },
+ "CU": {
+ "name": "Cuba"
+ },
+ "CW": {
+ "name": "Curaçao"
+ },
+ "CY": {
+ "name": "Cyprus"
+ },
+ "CZ": {
+ "name": "Czech Republic"
+ },
+ "DK": {
+ "name": "Denmark"
+ },
+ "DG": {
+ "name": "Diego Garcia"
+ },
+ "DJ": {
+ "name": "Djibouti"
+ },
+ "DM": {
+ "name": "Dominica"
+ },
+ "DO": {
+ "name": "Dominican Republic"
+ },
+ "EC": {
+ "name": "Ecuador"
+ },
+ "EG": {
+ "name": "Egypt"
+ },
+ "SV": {
+ "name": "El Salvador"
+ },
+ "GQ": {
+ "name": "Equatorial Guinea"
+ },
+ "ER": {
+ "name": "Eritrea"
+ },
+ "EE": {
+ "name": "Estonia"
+ },
+ "ET": {
+ "name": "Ethiopia"
+ },
+ "FK": {
+ "name": "Falkland Islands"
+ },
+ "FO": {
+ "name": "Faroe Islands"
+ },
+ "FJ": {
+ "name": "Fiji"
+ },
+ "FI": {
+ "name": "Finland"
+ },
+ "FR": {
+ "name": "France"
+ },
+ "GF": {
+ "name": "French Guiana"
+ },
+ "PF": {
+ "name": "French Polynesia"
+ },
+ "TF": {
+ "name": "French Southern Territories"
+ },
+ "GA": {
+ "name": "Gabon"
+ },
+ "GM": {
+ "name": "Gambia"
+ },
+ "GE": {
+ "name": "Georgia"
+ },
+ "DE": {
+ "name": "Germany"
+ },
+ "GH": {
+ "name": "Ghana"
+ },
+ "GI": {
+ "name": "Gibraltar"
+ },
+ "GR": {
+ "name": "Greece"
+ },
+ "GL": {
+ "name": "Greenland"
+ },
+ "GD": {
+ "name": "Grenada"
+ },
+ "GP": {
+ "name": "Guadeloupe"
+ },
+ "GU": {
+ "name": "Guam"
+ },
+ "GT": {
+ "name": "Guatemala"
+ },
+ "GG": {
+ "name": "Guernsey"
+ },
+ "GN": {
+ "name": "Guinea"
+ },
+ "GW": {
+ "name": "Guinea-Bissau"
+ },
+ "GY": {
+ "name": "Guyana"
+ },
+ "HT": {
+ "name": "Haiti"
+ },
+ "HN": {
+ "name": "Honduras"
+ },
+ "HK": {
+ "name": "Hong Kong SAR China"
+ },
+ "HU": {
+ "name": "Hungary"
+ },
+ "IS": {
+ "name": "Iceland"
+ },
+ "IN": {
+ "name": "India"
+ },
+ "ID": {
+ "name": "Indonesia"
+ },
+ "IR": {
+ "name": "Iran"
+ },
+ "IQ": {
+ "name": "Iraq"
+ },
+ "IE": {
+ "name": "Ireland"
+ },
+ "IM": {
+ "name": "Isle of Man"
+ },
+ "IL": {
+ "name": "Israel"
+ },
+ "IT": {
+ "name": "Italy"
+ },
+ "JM": {
+ "name": "Jamaica"
+ },
+ "JP": {
+ "name": "Japan"
+ },
+ "JE": {
+ "name": "Jersey"
+ },
+ "JO": {
+ "name": "Jordan"
+ },
+ "KZ": {
+ "name": "Kazakhstan"
+ },
+ "KE": {
+ "name": "Kenya"
+ },
+ "KI": {
+ "name": "Kiribati"
+ },
+ "XK": {
+ "name": "Kosovo"
+ },
+ "KW": {
+ "name": "Kuwait"
+ },
+ "KG": {
+ "name": "Kyrgyzstan"
+ },
+ "LA": {
+ "name": "Laos"
+ },
+ "LV": {
+ "name": "Latvia"
+ },
+ "LB": {
+ "name": "Lebanon"
+ },
+ "LS": {
+ "name": "Lesotho"
+ },
+ "LR": {
+ "name": "Liberia"
+ },
+ "LY": {
+ "name": "Libya"
+ },
+ "LI": {
+ "name": "Liechtenstein"
+ },
+ "LT": {
+ "name": "Lithuania"
+ },
+ "LU": {
+ "name": "Luxembourg"
+ },
+ "MO": {
+ "name": "Macau SAR China"
+ },
+ "MK": {
+ "name": "Macedonia"
+ },
+ "MG": {
+ "name": "Madagascar"
+ },
+ "MW": {
+ "name": "Malawi"
+ },
+ "MY": {
+ "name": "Malaysia"
+ },
+ "MV": {
+ "name": "Maldives"
+ },
+ "ML": {
+ "name": "Mali"
+ },
+ "MT": {
+ "name": "Malta"
+ },
+ "MH": {
+ "name": "Marshall Islands"
+ },
+ "MQ": {
+ "name": "Martinique"
+ },
+ "MR": {
+ "name": "Mauritania"
+ },
+ "MU": {
+ "name": "Mauritius"
+ },
+ "YT": {
+ "name": "Mayotte"
+ },
+ "MX": {
+ "name": "Mexico"
+ },
+ "FM": {
+ "name": "Micronesia"
+ },
+ "MD": {
+ "name": "Moldova"
+ },
+ "MC": {
+ "name": "Monaco"
+ },
+ "MN": {
+ "name": "Mongolia"
+ },
+ "ME": {
+ "name": "Montenegro"
+ },
+ "MS": {
+ "name": "Montserrat"
+ },
+ "MA": {
+ "name": "Morocco"
+ },
+ "MZ": {
+ "name": "Mozambique"
+ },
+ "MM": {
+ "name": "Myanmar (Burma)"
+ },
+ "NA": {
+ "name": "Namibia"
+ },
+ "NR": {
+ "name": "Nauru"
+ },
+ "NP": {
+ "name": "Nepal"
+ },
+ "NL": {
+ "name": "Netherlands"
+ },
+ "NC": {
+ "name": "New Caledonia"
+ },
+ "NZ": {
+ "name": "New Zealand"
+ },
+ "NI": {
+ "name": "Nicaragua"
+ },
+ "NE": {
+ "name": "Niger"
+ },
+ "NG": {
+ "name": "Nigeria"
+ },
+ "NU": {
+ "name": "Niue"
+ },
+ "NF": {
+ "name": "Norfolk Island"
+ },
+ "KP": {
+ "name": "North Korea"
+ },
+ "MP": {
+ "name": "Northern Mariana Islands"
+ },
+ "NO": {
+ "name": "Norway"
+ },
+ "OM": {
+ "name": "Oman"
+ },
+ "PK": {
+ "name": "Pakistan"
+ },
+ "PW": {
+ "name": "Palau"
+ },
+ "PS": {
+ "name": "Palestinian Territories"
+ },
+ "PA": {
+ "name": "Panama"
+ },
+ "PG": {
+ "name": "Papua New Guinea"
+ },
+ "PY": {
+ "name": "Paraguay"
+ },
+ "PE": {
+ "name": "Peru"
+ },
+ "PH": {
+ "name": "Philippines"
+ },
+ "PN": {
+ "name": "Pitcairn Islands"
+ },
+ "PL": {
+ "name": "Poland"
+ },
+ "PT": {
+ "name": "Portugal"
+ },
+ "PR": {
+ "name": "Puerto Rico"
+ },
+ "QA": {
+ "name": "Qatar"
+ },
+ "RE": {
+ "name": "Réunion"
+ },
+ "RO": {
+ "name": "Romania"
+ },
+ "RU": {
+ "name": "Russia"
+ },
+ "RW": {
+ "name": "Rwanda"
+ },
+ "BL": {
+ "name": "Saint Barthélemy"
+ },
+ "SH": {
+ "name": "Saint Helena"
+ },
+ "KN": {
+ "name": "Saint Kitts and Nevis"
+ },
+ "LC": {
+ "name": "Saint Lucia"
+ },
+ "MF": {
+ "name": "Saint Martin"
+ },
+ "PM": {
+ "name": "Saint Pierre and Miquelon"
+ },
+ "WS": {
+ "name": "Samoa"
+ },
+ "SM": {
+ "name": "San Marino"
+ },
+ "ST": {
+ "name": "São Tomé and Príncipe"
+ },
+ "SA": {
+ "name": "Saudi Arabia"
+ },
+ "SN": {
+ "name": "Senegal"
+ },
+ "RS": {
+ "name": "Serbia"
+ },
+ "SC": {
+ "name": "Seychelles"
+ },
+ "SL": {
+ "name": "Sierra Leone"
+ },
+ "SG": {
+ "name": "Singapore"
+ },
+ "SX": {
+ "name": "Sint Maarten"
+ },
+ "SK": {
+ "name": "Slovakia"
+ },
+ "SI": {
+ "name": "Slovenia"
+ },
+ "SB": {
+ "name": "Solomon Islands"
+ },
+ "SO": {
+ "name": "Somalia"
+ },
+ "ZA": {
+ "name": "South Africa"
+ },
+ "GS": {
+ "name": "South Georgia & South Sandwich Islands"
+ },
+ "KR": {
+ "name": "South Korea"
+ },
+ "SS": {
+ "name": "South Sudan"
+ },
+ "ES": {
+ "name": "Spain"
+ },
+ "LK": {
+ "name": "Sri Lanka"
+ },
+ "VC": {
+ "name": "St. Vincent & Grenadines"
+ },
+ "SD": {
+ "name": "Sudan"
+ },
+ "SR": {
+ "name": "Suriname"
+ },
+ "SJ": {
+ "name": "Svalbard and Jan Mayen"
+ },
+ "SZ": {
+ "name": "Swaziland"
+ },
+ "SE": {
+ "name": "Sweden"
+ },
+ "CH": {
+ "name": "Switzerland"
+ },
+ "SY": {
+ "name": "Syria"
+ },
+ "TW": {
+ "name": "Taiwan"
+ },
+ "TJ": {
+ "name": "Tajikistan"
+ },
+ "TZ": {
+ "name": "Tanzania"
+ },
+ "TH": {
+ "name": "Thailand"
+ },
+ "TL": {
+ "name": "Timor-Leste"
+ },
+ "TG": {
+ "name": "Togo"
+ },
+ "TK": {
+ "name": "Tokelau"
+ },
+ "TO": {
+ "name": "Tonga"
+ },
+ "TT": {
+ "name": "Trinidad and Tobago"
+ },
+ "TA": {
+ "name": "Tristan da Cunha"
+ },
+ "TN": {
+ "name": "Tunisia"
+ },
+ "TR": {
+ "name": "Turkey"
+ },
+ "TM": {
+ "name": "Turkmenistan"
+ },
+ "TC": {
+ "name": "Turks and Caicos Islands"
+ },
+ "TV": {
+ "name": "Tuvalu"
+ },
+ "UM": {
+ "name": "U.S. Outlying Islands"
+ },
+ "VI": {
+ "name": "U.S. Virgin Islands"
+ },
+ "UG": {
+ "name": "Uganda"
+ },
+ "UA": {
+ "name": "Ukraine"
+ },
+ "AE": {
+ "name": "United Arab Emirates"
+ },
+ "GB": {
+ "name": "United Kingdom"
+ },
+ "US": {
+ "name": "United States"
+ },
+ "UY": {
+ "name": "Uruguay"
+ },
+ "UZ": {
+ "name": "Uzbekistan"
+ },
+ "VU": {
+ "name": "Vanuatu"
+ },
+ "VA": {
+ "name": "Vatican City"
+ },
+ "VE": {
+ "name": "Venezuela"
+ },
+ "VN": {
+ "name": "Vietnam"
+ },
+ "WF": {
+ "name": "Wallis and Futuna"
+ },
+ "EH": {
+ "name": "Western Sahara"
+ },
+ "YE": {
+ "name": "Yemen"
+ },
+ "ZM": {
+ "name": "Zambia"
+ },
+ "ZW": {
+ "name": "Zimbabwe"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/country/en-MT.json b/library/intl/resources/country/en-MT.json
new file mode 100644
index 000000000..081d5f4c0
--- /dev/null
+++ b/library/intl/resources/country/en-MT.json
@@ -0,0 +1,761 @@
+{
+ "AF": {
+ "name": "Afghanistan"
+ },
+ "AX": {
+ "name": "Ã…land Islands"
+ },
+ "AL": {
+ "name": "Albania"
+ },
+ "DZ": {
+ "name": "Algeria"
+ },
+ "AS": {
+ "name": "American Samoa"
+ },
+ "AD": {
+ "name": "Andorra"
+ },
+ "AO": {
+ "name": "Angola"
+ },
+ "AI": {
+ "name": "Anguilla"
+ },
+ "AQ": {
+ "name": "Antarctica"
+ },
+ "AG": {
+ "name": "Antigua and Barbuda"
+ },
+ "AR": {
+ "name": "Argentina"
+ },
+ "AM": {
+ "name": "Armenia"
+ },
+ "AW": {
+ "name": "Aruba"
+ },
+ "AC": {
+ "name": "Ascension Island"
+ },
+ "AU": {
+ "name": "Australia"
+ },
+ "AT": {
+ "name": "Austria"
+ },
+ "AZ": {
+ "name": "Azerbaijan"
+ },
+ "BS": {
+ "name": "Bahamas"
+ },
+ "BH": {
+ "name": "Bahrain"
+ },
+ "BD": {
+ "name": "Bangladesh"
+ },
+ "BB": {
+ "name": "Barbados"
+ },
+ "BY": {
+ "name": "Belarus"
+ },
+ "BE": {
+ "name": "Belgium"
+ },
+ "BZ": {
+ "name": "Belize"
+ },
+ "BJ": {
+ "name": "Benin"
+ },
+ "BM": {
+ "name": "Bermuda"
+ },
+ "BT": {
+ "name": "Bhutan"
+ },
+ "BO": {
+ "name": "Bolivia"
+ },
+ "BA": {
+ "name": "Bosnia and Herzegovina"
+ },
+ "BW": {
+ "name": "Botswana"
+ },
+ "BR": {
+ "name": "Brazil"
+ },
+ "IO": {
+ "name": "British Indian Ocean Territory"
+ },
+ "VG": {
+ "name": "British Virgin Islands"
+ },
+ "BN": {
+ "name": "Brunei"
+ },
+ "BG": {
+ "name": "Bulgaria"
+ },
+ "BF": {
+ "name": "Burkina Faso"
+ },
+ "BI": {
+ "name": "Burundi"
+ },
+ "KH": {
+ "name": "Cambodia"
+ },
+ "CM": {
+ "name": "Cameroon"
+ },
+ "CA": {
+ "name": "Canada"
+ },
+ "IC": {
+ "name": "Canary Islands"
+ },
+ "CV": {
+ "name": "Cape Verde"
+ },
+ "BQ": {
+ "name": "Caribbean Netherlands"
+ },
+ "KY": {
+ "name": "Cayman Islands"
+ },
+ "CF": {
+ "name": "Central African Republic"
+ },
+ "EA": {
+ "name": "Ceuta and Melilla"
+ },
+ "TD": {
+ "name": "Chad"
+ },
+ "CL": {
+ "name": "Chile"
+ },
+ "CN": {
+ "name": "China"
+ },
+ "CX": {
+ "name": "Christmas Island"
+ },
+ "CC": {
+ "name": "Cocos (Keeling) Islands"
+ },
+ "CO": {
+ "name": "Colombia"
+ },
+ "KM": {
+ "name": "Comoros"
+ },
+ "CG": {
+ "name": "Congo - Brazzaville"
+ },
+ "CD": {
+ "name": "Congo - Kinshasa"
+ },
+ "CK": {
+ "name": "Cook Islands"
+ },
+ "CR": {
+ "name": "Costa Rica"
+ },
+ "CI": {
+ "name": "Côte d’Ivoire"
+ },
+ "HR": {
+ "name": "Croatia"
+ },
+ "CU": {
+ "name": "Cuba"
+ },
+ "CW": {
+ "name": "Curaçao"
+ },
+ "CY": {
+ "name": "Cyprus"
+ },
+ "CZ": {
+ "name": "Czech Republic"
+ },
+ "DK": {
+ "name": "Denmark"
+ },
+ "DG": {
+ "name": "Diego Garcia"
+ },
+ "DJ": {
+ "name": "Djibouti"
+ },
+ "DM": {
+ "name": "Dominica"
+ },
+ "DO": {
+ "name": "Dominican Republic"
+ },
+ "EC": {
+ "name": "Ecuador"
+ },
+ "EG": {
+ "name": "Egypt"
+ },
+ "SV": {
+ "name": "El Salvador"
+ },
+ "GQ": {
+ "name": "Equatorial Guinea"
+ },
+ "ER": {
+ "name": "Eritrea"
+ },
+ "EE": {
+ "name": "Estonia"
+ },
+ "ET": {
+ "name": "Ethiopia"
+ },
+ "FK": {
+ "name": "Falkland Islands"
+ },
+ "FO": {
+ "name": "Faroe Islands"
+ },
+ "FJ": {
+ "name": "Fiji"
+ },
+ "FI": {
+ "name": "Finland"
+ },
+ "FR": {
+ "name": "France"
+ },
+ "GF": {
+ "name": "French Guiana"
+ },
+ "PF": {
+ "name": "French Polynesia"
+ },
+ "TF": {
+ "name": "French Southern Territories"
+ },
+ "GA": {
+ "name": "Gabon"
+ },
+ "GM": {
+ "name": "Gambia"
+ },
+ "GE": {
+ "name": "Georgia"
+ },
+ "DE": {
+ "name": "Germany"
+ },
+ "GH": {
+ "name": "Ghana"
+ },
+ "GI": {
+ "name": "Gibraltar"
+ },
+ "GR": {
+ "name": "Greece"
+ },
+ "GL": {
+ "name": "Greenland"
+ },
+ "GD": {
+ "name": "Grenada"
+ },
+ "GP": {
+ "name": "Guadeloupe"
+ },
+ "GU": {
+ "name": "Guam"
+ },
+ "GT": {
+ "name": "Guatemala"
+ },
+ "GG": {
+ "name": "Guernsey"
+ },
+ "GN": {
+ "name": "Guinea"
+ },
+ "GW": {
+ "name": "Guinea-Bissau"
+ },
+ "GY": {
+ "name": "Guyana"
+ },
+ "HT": {
+ "name": "Haiti"
+ },
+ "HN": {
+ "name": "Honduras"
+ },
+ "HK": {
+ "name": "Hong Kong SAR China"
+ },
+ "HU": {
+ "name": "Hungary"
+ },
+ "IS": {
+ "name": "Iceland"
+ },
+ "IN": {
+ "name": "India"
+ },
+ "ID": {
+ "name": "Indonesia"
+ },
+ "IR": {
+ "name": "Iran"
+ },
+ "IQ": {
+ "name": "Iraq"
+ },
+ "IE": {
+ "name": "Ireland"
+ },
+ "IM": {
+ "name": "Isle of Man"
+ },
+ "IL": {
+ "name": "Israel"
+ },
+ "IT": {
+ "name": "Italy"
+ },
+ "JM": {
+ "name": "Jamaica"
+ },
+ "JP": {
+ "name": "Japan"
+ },
+ "JE": {
+ "name": "Jersey"
+ },
+ "JO": {
+ "name": "Jordan"
+ },
+ "KZ": {
+ "name": "Kazakhstan"
+ },
+ "KE": {
+ "name": "Kenya"
+ },
+ "KI": {
+ "name": "Kiribati"
+ },
+ "XK": {
+ "name": "Kosovo"
+ },
+ "KW": {
+ "name": "Kuwait"
+ },
+ "KG": {
+ "name": "Kyrgyzstan"
+ },
+ "LA": {
+ "name": "Laos"
+ },
+ "LV": {
+ "name": "Latvia"
+ },
+ "LB": {
+ "name": "Lebanon"
+ },
+ "LS": {
+ "name": "Lesotho"
+ },
+ "LR": {
+ "name": "Liberia"
+ },
+ "LY": {
+ "name": "Libya"
+ },
+ "LI": {
+ "name": "Liechtenstein"
+ },
+ "LT": {
+ "name": "Lithuania"
+ },
+ "LU": {
+ "name": "Luxembourg"
+ },
+ "MO": {
+ "name": "Macau SAR China"
+ },
+ "MK": {
+ "name": "Macedonia"
+ },
+ "MG": {
+ "name": "Madagascar"
+ },
+ "MW": {
+ "name": "Malawi"
+ },
+ "MY": {
+ "name": "Malaysia"
+ },
+ "MV": {
+ "name": "Maldives"
+ },
+ "ML": {
+ "name": "Mali"
+ },
+ "MT": {
+ "name": "Malta"
+ },
+ "MH": {
+ "name": "Marshall Islands"
+ },
+ "MQ": {
+ "name": "Martinique"
+ },
+ "MR": {
+ "name": "Mauritania"
+ },
+ "MU": {
+ "name": "Mauritius"
+ },
+ "YT": {
+ "name": "Mayotte"
+ },
+ "MX": {
+ "name": "Mexico"
+ },
+ "FM": {
+ "name": "Micronesia"
+ },
+ "MD": {
+ "name": "Moldova"
+ },
+ "MC": {
+ "name": "Monaco"
+ },
+ "MN": {
+ "name": "Mongolia"
+ },
+ "ME": {
+ "name": "Montenegro"
+ },
+ "MS": {
+ "name": "Montserrat"
+ },
+ "MA": {
+ "name": "Morocco"
+ },
+ "MZ": {
+ "name": "Mozambique"
+ },
+ "MM": {
+ "name": "Myanmar (Burma)"
+ },
+ "NA": {
+ "name": "Namibia"
+ },
+ "NR": {
+ "name": "Nauru"
+ },
+ "NP": {
+ "name": "Nepal"
+ },
+ "NL": {
+ "name": "Netherlands"
+ },
+ "NC": {
+ "name": "New Caledonia"
+ },
+ "NZ": {
+ "name": "New Zealand"
+ },
+ "NI": {
+ "name": "Nicaragua"
+ },
+ "NE": {
+ "name": "Niger"
+ },
+ "NG": {
+ "name": "Nigeria"
+ },
+ "NU": {
+ "name": "Niue"
+ },
+ "NF": {
+ "name": "Norfolk Island"
+ },
+ "KP": {
+ "name": "North Korea"
+ },
+ "MP": {
+ "name": "Northern Mariana Islands"
+ },
+ "NO": {
+ "name": "Norway"
+ },
+ "OM": {
+ "name": "Oman"
+ },
+ "PK": {
+ "name": "Pakistan"
+ },
+ "PW": {
+ "name": "Palau"
+ },
+ "PS": {
+ "name": "Palestinian Territories"
+ },
+ "PA": {
+ "name": "Panama"
+ },
+ "PG": {
+ "name": "Papua New Guinea"
+ },
+ "PY": {
+ "name": "Paraguay"
+ },
+ "PE": {
+ "name": "Peru"
+ },
+ "PH": {
+ "name": "Philippines"
+ },
+ "PN": {
+ "name": "Pitcairn Islands"
+ },
+ "PL": {
+ "name": "Poland"
+ },
+ "PT": {
+ "name": "Portugal"
+ },
+ "PR": {
+ "name": "Puerto Rico"
+ },
+ "QA": {
+ "name": "Qatar"
+ },
+ "RE": {
+ "name": "Réunion"
+ },
+ "RO": {
+ "name": "Romania"
+ },
+ "RU": {
+ "name": "Russia"
+ },
+ "RW": {
+ "name": "Rwanda"
+ },
+ "BL": {
+ "name": "Saint Barthélemy"
+ },
+ "SH": {
+ "name": "Saint Helena"
+ },
+ "KN": {
+ "name": "Saint Kitts and Nevis"
+ },
+ "LC": {
+ "name": "Saint Lucia"
+ },
+ "MF": {
+ "name": "Saint Martin"
+ },
+ "PM": {
+ "name": "Saint Pierre and Miquelon"
+ },
+ "WS": {
+ "name": "Samoa"
+ },
+ "SM": {
+ "name": "San Marino"
+ },
+ "ST": {
+ "name": "São Tomé and Príncipe"
+ },
+ "SA": {
+ "name": "Saudi Arabia"
+ },
+ "SN": {
+ "name": "Senegal"
+ },
+ "RS": {
+ "name": "Serbia"
+ },
+ "SC": {
+ "name": "Seychelles"
+ },
+ "SL": {
+ "name": "Sierra Leone"
+ },
+ "SG": {
+ "name": "Singapore"
+ },
+ "SX": {
+ "name": "Sint Maarten"
+ },
+ "SK": {
+ "name": "Slovakia"
+ },
+ "SI": {
+ "name": "Slovenia"
+ },
+ "SB": {
+ "name": "Solomon Islands"
+ },
+ "SO": {
+ "name": "Somalia"
+ },
+ "ZA": {
+ "name": "South Africa"
+ },
+ "GS": {
+ "name": "South Georgia & South Sandwich Islands"
+ },
+ "KR": {
+ "name": "South Korea"
+ },
+ "SS": {
+ "name": "South Sudan"
+ },
+ "ES": {
+ "name": "Spain"
+ },
+ "LK": {
+ "name": "Sri Lanka"
+ },
+ "VC": {
+ "name": "St. Vincent & Grenadines"
+ },
+ "SD": {
+ "name": "Sudan"
+ },
+ "SR": {
+ "name": "Suriname"
+ },
+ "SJ": {
+ "name": "Svalbard and Jan Mayen"
+ },
+ "SZ": {
+ "name": "Swaziland"
+ },
+ "SE": {
+ "name": "Sweden"
+ },
+ "CH": {
+ "name": "Switzerland"
+ },
+ "SY": {
+ "name": "Syria"
+ },
+ "TW": {
+ "name": "Taiwan"
+ },
+ "TJ": {
+ "name": "Tajikistan"
+ },
+ "TZ": {
+ "name": "Tanzania"
+ },
+ "TH": {
+ "name": "Thailand"
+ },
+ "TL": {
+ "name": "Timor-Leste"
+ },
+ "TG": {
+ "name": "Togo"
+ },
+ "TK": {
+ "name": "Tokelau"
+ },
+ "TO": {
+ "name": "Tonga"
+ },
+ "TT": {
+ "name": "Trinidad and Tobago"
+ },
+ "TA": {
+ "name": "Tristan da Cunha"
+ },
+ "TN": {
+ "name": "Tunisia"
+ },
+ "TR": {
+ "name": "Turkey"
+ },
+ "TM": {
+ "name": "Turkmenistan"
+ },
+ "TC": {
+ "name": "Turks and Caicos Islands"
+ },
+ "TV": {
+ "name": "Tuvalu"
+ },
+ "UM": {
+ "name": "U.S. Outlying Islands"
+ },
+ "VI": {
+ "name": "U.S. Virgin Islands"
+ },
+ "UG": {
+ "name": "Uganda"
+ },
+ "UA": {
+ "name": "Ukraine"
+ },
+ "AE": {
+ "name": "United Arab Emirates"
+ },
+ "GB": {
+ "name": "United Kingdom"
+ },
+ "US": {
+ "name": "United States"
+ },
+ "UY": {
+ "name": "Uruguay"
+ },
+ "UZ": {
+ "name": "Uzbekistan"
+ },
+ "VU": {
+ "name": "Vanuatu"
+ },
+ "VA": {
+ "name": "Vatican City"
+ },
+ "VE": {
+ "name": "Venezuela"
+ },
+ "VN": {
+ "name": "Vietnam"
+ },
+ "WF": {
+ "name": "Wallis and Futuna"
+ },
+ "EH": {
+ "name": "Western Sahara"
+ },
+ "YE": {
+ "name": "Yemen"
+ },
+ "ZM": {
+ "name": "Zambia"
+ },
+ "ZW": {
+ "name": "Zimbabwe"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/country/en-NZ.json b/library/intl/resources/country/en-NZ.json
new file mode 100644
index 000000000..081d5f4c0
--- /dev/null
+++ b/library/intl/resources/country/en-NZ.json
@@ -0,0 +1,761 @@
+{
+ "AF": {
+ "name": "Afghanistan"
+ },
+ "AX": {
+ "name": "Ã…land Islands"
+ },
+ "AL": {
+ "name": "Albania"
+ },
+ "DZ": {
+ "name": "Algeria"
+ },
+ "AS": {
+ "name": "American Samoa"
+ },
+ "AD": {
+ "name": "Andorra"
+ },
+ "AO": {
+ "name": "Angola"
+ },
+ "AI": {
+ "name": "Anguilla"
+ },
+ "AQ": {
+ "name": "Antarctica"
+ },
+ "AG": {
+ "name": "Antigua and Barbuda"
+ },
+ "AR": {
+ "name": "Argentina"
+ },
+ "AM": {
+ "name": "Armenia"
+ },
+ "AW": {
+ "name": "Aruba"
+ },
+ "AC": {
+ "name": "Ascension Island"
+ },
+ "AU": {
+ "name": "Australia"
+ },
+ "AT": {
+ "name": "Austria"
+ },
+ "AZ": {
+ "name": "Azerbaijan"
+ },
+ "BS": {
+ "name": "Bahamas"
+ },
+ "BH": {
+ "name": "Bahrain"
+ },
+ "BD": {
+ "name": "Bangladesh"
+ },
+ "BB": {
+ "name": "Barbados"
+ },
+ "BY": {
+ "name": "Belarus"
+ },
+ "BE": {
+ "name": "Belgium"
+ },
+ "BZ": {
+ "name": "Belize"
+ },
+ "BJ": {
+ "name": "Benin"
+ },
+ "BM": {
+ "name": "Bermuda"
+ },
+ "BT": {
+ "name": "Bhutan"
+ },
+ "BO": {
+ "name": "Bolivia"
+ },
+ "BA": {
+ "name": "Bosnia and Herzegovina"
+ },
+ "BW": {
+ "name": "Botswana"
+ },
+ "BR": {
+ "name": "Brazil"
+ },
+ "IO": {
+ "name": "British Indian Ocean Territory"
+ },
+ "VG": {
+ "name": "British Virgin Islands"
+ },
+ "BN": {
+ "name": "Brunei"
+ },
+ "BG": {
+ "name": "Bulgaria"
+ },
+ "BF": {
+ "name": "Burkina Faso"
+ },
+ "BI": {
+ "name": "Burundi"
+ },
+ "KH": {
+ "name": "Cambodia"
+ },
+ "CM": {
+ "name": "Cameroon"
+ },
+ "CA": {
+ "name": "Canada"
+ },
+ "IC": {
+ "name": "Canary Islands"
+ },
+ "CV": {
+ "name": "Cape Verde"
+ },
+ "BQ": {
+ "name": "Caribbean Netherlands"
+ },
+ "KY": {
+ "name": "Cayman Islands"
+ },
+ "CF": {
+ "name": "Central African Republic"
+ },
+ "EA": {
+ "name": "Ceuta and Melilla"
+ },
+ "TD": {
+ "name": "Chad"
+ },
+ "CL": {
+ "name": "Chile"
+ },
+ "CN": {
+ "name": "China"
+ },
+ "CX": {
+ "name": "Christmas Island"
+ },
+ "CC": {
+ "name": "Cocos (Keeling) Islands"
+ },
+ "CO": {
+ "name": "Colombia"
+ },
+ "KM": {
+ "name": "Comoros"
+ },
+ "CG": {
+ "name": "Congo - Brazzaville"
+ },
+ "CD": {
+ "name": "Congo - Kinshasa"
+ },
+ "CK": {
+ "name": "Cook Islands"
+ },
+ "CR": {
+ "name": "Costa Rica"
+ },
+ "CI": {
+ "name": "Côte d’Ivoire"
+ },
+ "HR": {
+ "name": "Croatia"
+ },
+ "CU": {
+ "name": "Cuba"
+ },
+ "CW": {
+ "name": "Curaçao"
+ },
+ "CY": {
+ "name": "Cyprus"
+ },
+ "CZ": {
+ "name": "Czech Republic"
+ },
+ "DK": {
+ "name": "Denmark"
+ },
+ "DG": {
+ "name": "Diego Garcia"
+ },
+ "DJ": {
+ "name": "Djibouti"
+ },
+ "DM": {
+ "name": "Dominica"
+ },
+ "DO": {
+ "name": "Dominican Republic"
+ },
+ "EC": {
+ "name": "Ecuador"
+ },
+ "EG": {
+ "name": "Egypt"
+ },
+ "SV": {
+ "name": "El Salvador"
+ },
+ "GQ": {
+ "name": "Equatorial Guinea"
+ },
+ "ER": {
+ "name": "Eritrea"
+ },
+ "EE": {
+ "name": "Estonia"
+ },
+ "ET": {
+ "name": "Ethiopia"
+ },
+ "FK": {
+ "name": "Falkland Islands"
+ },
+ "FO": {
+ "name": "Faroe Islands"
+ },
+ "FJ": {
+ "name": "Fiji"
+ },
+ "FI": {
+ "name": "Finland"
+ },
+ "FR": {
+ "name": "France"
+ },
+ "GF": {
+ "name": "French Guiana"
+ },
+ "PF": {
+ "name": "French Polynesia"
+ },
+ "TF": {
+ "name": "French Southern Territories"
+ },
+ "GA": {
+ "name": "Gabon"
+ },
+ "GM": {
+ "name": "Gambia"
+ },
+ "GE": {
+ "name": "Georgia"
+ },
+ "DE": {
+ "name": "Germany"
+ },
+ "GH": {
+ "name": "Ghana"
+ },
+ "GI": {
+ "name": "Gibraltar"
+ },
+ "GR": {
+ "name": "Greece"
+ },
+ "GL": {
+ "name": "Greenland"
+ },
+ "GD": {
+ "name": "Grenada"
+ },
+ "GP": {
+ "name": "Guadeloupe"
+ },
+ "GU": {
+ "name": "Guam"
+ },
+ "GT": {
+ "name": "Guatemala"
+ },
+ "GG": {
+ "name": "Guernsey"
+ },
+ "GN": {
+ "name": "Guinea"
+ },
+ "GW": {
+ "name": "Guinea-Bissau"
+ },
+ "GY": {
+ "name": "Guyana"
+ },
+ "HT": {
+ "name": "Haiti"
+ },
+ "HN": {
+ "name": "Honduras"
+ },
+ "HK": {
+ "name": "Hong Kong SAR China"
+ },
+ "HU": {
+ "name": "Hungary"
+ },
+ "IS": {
+ "name": "Iceland"
+ },
+ "IN": {
+ "name": "India"
+ },
+ "ID": {
+ "name": "Indonesia"
+ },
+ "IR": {
+ "name": "Iran"
+ },
+ "IQ": {
+ "name": "Iraq"
+ },
+ "IE": {
+ "name": "Ireland"
+ },
+ "IM": {
+ "name": "Isle of Man"
+ },
+ "IL": {
+ "name": "Israel"
+ },
+ "IT": {
+ "name": "Italy"
+ },
+ "JM": {
+ "name": "Jamaica"
+ },
+ "JP": {
+ "name": "Japan"
+ },
+ "JE": {
+ "name": "Jersey"
+ },
+ "JO": {
+ "name": "Jordan"
+ },
+ "KZ": {
+ "name": "Kazakhstan"
+ },
+ "KE": {
+ "name": "Kenya"
+ },
+ "KI": {
+ "name": "Kiribati"
+ },
+ "XK": {
+ "name": "Kosovo"
+ },
+ "KW": {
+ "name": "Kuwait"
+ },
+ "KG": {
+ "name": "Kyrgyzstan"
+ },
+ "LA": {
+ "name": "Laos"
+ },
+ "LV": {
+ "name": "Latvia"
+ },
+ "LB": {
+ "name": "Lebanon"
+ },
+ "LS": {
+ "name": "Lesotho"
+ },
+ "LR": {
+ "name": "Liberia"
+ },
+ "LY": {
+ "name": "Libya"
+ },
+ "LI": {
+ "name": "Liechtenstein"
+ },
+ "LT": {
+ "name": "Lithuania"
+ },
+ "LU": {
+ "name": "Luxembourg"
+ },
+ "MO": {
+ "name": "Macau SAR China"
+ },
+ "MK": {
+ "name": "Macedonia"
+ },
+ "MG": {
+ "name": "Madagascar"
+ },
+ "MW": {
+ "name": "Malawi"
+ },
+ "MY": {
+ "name": "Malaysia"
+ },
+ "MV": {
+ "name": "Maldives"
+ },
+ "ML": {
+ "name": "Mali"
+ },
+ "MT": {
+ "name": "Malta"
+ },
+ "MH": {
+ "name": "Marshall Islands"
+ },
+ "MQ": {
+ "name": "Martinique"
+ },
+ "MR": {
+ "name": "Mauritania"
+ },
+ "MU": {
+ "name": "Mauritius"
+ },
+ "YT": {
+ "name": "Mayotte"
+ },
+ "MX": {
+ "name": "Mexico"
+ },
+ "FM": {
+ "name": "Micronesia"
+ },
+ "MD": {
+ "name": "Moldova"
+ },
+ "MC": {
+ "name": "Monaco"
+ },
+ "MN": {
+ "name": "Mongolia"
+ },
+ "ME": {
+ "name": "Montenegro"
+ },
+ "MS": {
+ "name": "Montserrat"
+ },
+ "MA": {
+ "name": "Morocco"
+ },
+ "MZ": {
+ "name": "Mozambique"
+ },
+ "MM": {
+ "name": "Myanmar (Burma)"
+ },
+ "NA": {
+ "name": "Namibia"
+ },
+ "NR": {
+ "name": "Nauru"
+ },
+ "NP": {
+ "name": "Nepal"
+ },
+ "NL": {
+ "name": "Netherlands"
+ },
+ "NC": {
+ "name": "New Caledonia"
+ },
+ "NZ": {
+ "name": "New Zealand"
+ },
+ "NI": {
+ "name": "Nicaragua"
+ },
+ "NE": {
+ "name": "Niger"
+ },
+ "NG": {
+ "name": "Nigeria"
+ },
+ "NU": {
+ "name": "Niue"
+ },
+ "NF": {
+ "name": "Norfolk Island"
+ },
+ "KP": {
+ "name": "North Korea"
+ },
+ "MP": {
+ "name": "Northern Mariana Islands"
+ },
+ "NO": {
+ "name": "Norway"
+ },
+ "OM": {
+ "name": "Oman"
+ },
+ "PK": {
+ "name": "Pakistan"
+ },
+ "PW": {
+ "name": "Palau"
+ },
+ "PS": {
+ "name": "Palestinian Territories"
+ },
+ "PA": {
+ "name": "Panama"
+ },
+ "PG": {
+ "name": "Papua New Guinea"
+ },
+ "PY": {
+ "name": "Paraguay"
+ },
+ "PE": {
+ "name": "Peru"
+ },
+ "PH": {
+ "name": "Philippines"
+ },
+ "PN": {
+ "name": "Pitcairn Islands"
+ },
+ "PL": {
+ "name": "Poland"
+ },
+ "PT": {
+ "name": "Portugal"
+ },
+ "PR": {
+ "name": "Puerto Rico"
+ },
+ "QA": {
+ "name": "Qatar"
+ },
+ "RE": {
+ "name": "Réunion"
+ },
+ "RO": {
+ "name": "Romania"
+ },
+ "RU": {
+ "name": "Russia"
+ },
+ "RW": {
+ "name": "Rwanda"
+ },
+ "BL": {
+ "name": "Saint Barthélemy"
+ },
+ "SH": {
+ "name": "Saint Helena"
+ },
+ "KN": {
+ "name": "Saint Kitts and Nevis"
+ },
+ "LC": {
+ "name": "Saint Lucia"
+ },
+ "MF": {
+ "name": "Saint Martin"
+ },
+ "PM": {
+ "name": "Saint Pierre and Miquelon"
+ },
+ "WS": {
+ "name": "Samoa"
+ },
+ "SM": {
+ "name": "San Marino"
+ },
+ "ST": {
+ "name": "São Tomé and Príncipe"
+ },
+ "SA": {
+ "name": "Saudi Arabia"
+ },
+ "SN": {
+ "name": "Senegal"
+ },
+ "RS": {
+ "name": "Serbia"
+ },
+ "SC": {
+ "name": "Seychelles"
+ },
+ "SL": {
+ "name": "Sierra Leone"
+ },
+ "SG": {
+ "name": "Singapore"
+ },
+ "SX": {
+ "name": "Sint Maarten"
+ },
+ "SK": {
+ "name": "Slovakia"
+ },
+ "SI": {
+ "name": "Slovenia"
+ },
+ "SB": {
+ "name": "Solomon Islands"
+ },
+ "SO": {
+ "name": "Somalia"
+ },
+ "ZA": {
+ "name": "South Africa"
+ },
+ "GS": {
+ "name": "South Georgia & South Sandwich Islands"
+ },
+ "KR": {
+ "name": "South Korea"
+ },
+ "SS": {
+ "name": "South Sudan"
+ },
+ "ES": {
+ "name": "Spain"
+ },
+ "LK": {
+ "name": "Sri Lanka"
+ },
+ "VC": {
+ "name": "St. Vincent & Grenadines"
+ },
+ "SD": {
+ "name": "Sudan"
+ },
+ "SR": {
+ "name": "Suriname"
+ },
+ "SJ": {
+ "name": "Svalbard and Jan Mayen"
+ },
+ "SZ": {
+ "name": "Swaziland"
+ },
+ "SE": {
+ "name": "Sweden"
+ },
+ "CH": {
+ "name": "Switzerland"
+ },
+ "SY": {
+ "name": "Syria"
+ },
+ "TW": {
+ "name": "Taiwan"
+ },
+ "TJ": {
+ "name": "Tajikistan"
+ },
+ "TZ": {
+ "name": "Tanzania"
+ },
+ "TH": {
+ "name": "Thailand"
+ },
+ "TL": {
+ "name": "Timor-Leste"
+ },
+ "TG": {
+ "name": "Togo"
+ },
+ "TK": {
+ "name": "Tokelau"
+ },
+ "TO": {
+ "name": "Tonga"
+ },
+ "TT": {
+ "name": "Trinidad and Tobago"
+ },
+ "TA": {
+ "name": "Tristan da Cunha"
+ },
+ "TN": {
+ "name": "Tunisia"
+ },
+ "TR": {
+ "name": "Turkey"
+ },
+ "TM": {
+ "name": "Turkmenistan"
+ },
+ "TC": {
+ "name": "Turks and Caicos Islands"
+ },
+ "TV": {
+ "name": "Tuvalu"
+ },
+ "UM": {
+ "name": "U.S. Outlying Islands"
+ },
+ "VI": {
+ "name": "U.S. Virgin Islands"
+ },
+ "UG": {
+ "name": "Uganda"
+ },
+ "UA": {
+ "name": "Ukraine"
+ },
+ "AE": {
+ "name": "United Arab Emirates"
+ },
+ "GB": {
+ "name": "United Kingdom"
+ },
+ "US": {
+ "name": "United States"
+ },
+ "UY": {
+ "name": "Uruguay"
+ },
+ "UZ": {
+ "name": "Uzbekistan"
+ },
+ "VU": {
+ "name": "Vanuatu"
+ },
+ "VA": {
+ "name": "Vatican City"
+ },
+ "VE": {
+ "name": "Venezuela"
+ },
+ "VN": {
+ "name": "Vietnam"
+ },
+ "WF": {
+ "name": "Wallis and Futuna"
+ },
+ "EH": {
+ "name": "Western Sahara"
+ },
+ "YE": {
+ "name": "Yemen"
+ },
+ "ZM": {
+ "name": "Zambia"
+ },
+ "ZW": {
+ "name": "Zimbabwe"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/country/en-PK.json b/library/intl/resources/country/en-PK.json
new file mode 100644
index 000000000..081d5f4c0
--- /dev/null
+++ b/library/intl/resources/country/en-PK.json
@@ -0,0 +1,761 @@
+{
+ "AF": {
+ "name": "Afghanistan"
+ },
+ "AX": {
+ "name": "Ã…land Islands"
+ },
+ "AL": {
+ "name": "Albania"
+ },
+ "DZ": {
+ "name": "Algeria"
+ },
+ "AS": {
+ "name": "American Samoa"
+ },
+ "AD": {
+ "name": "Andorra"
+ },
+ "AO": {
+ "name": "Angola"
+ },
+ "AI": {
+ "name": "Anguilla"
+ },
+ "AQ": {
+ "name": "Antarctica"
+ },
+ "AG": {
+ "name": "Antigua and Barbuda"
+ },
+ "AR": {
+ "name": "Argentina"
+ },
+ "AM": {
+ "name": "Armenia"
+ },
+ "AW": {
+ "name": "Aruba"
+ },
+ "AC": {
+ "name": "Ascension Island"
+ },
+ "AU": {
+ "name": "Australia"
+ },
+ "AT": {
+ "name": "Austria"
+ },
+ "AZ": {
+ "name": "Azerbaijan"
+ },
+ "BS": {
+ "name": "Bahamas"
+ },
+ "BH": {
+ "name": "Bahrain"
+ },
+ "BD": {
+ "name": "Bangladesh"
+ },
+ "BB": {
+ "name": "Barbados"
+ },
+ "BY": {
+ "name": "Belarus"
+ },
+ "BE": {
+ "name": "Belgium"
+ },
+ "BZ": {
+ "name": "Belize"
+ },
+ "BJ": {
+ "name": "Benin"
+ },
+ "BM": {
+ "name": "Bermuda"
+ },
+ "BT": {
+ "name": "Bhutan"
+ },
+ "BO": {
+ "name": "Bolivia"
+ },
+ "BA": {
+ "name": "Bosnia and Herzegovina"
+ },
+ "BW": {
+ "name": "Botswana"
+ },
+ "BR": {
+ "name": "Brazil"
+ },
+ "IO": {
+ "name": "British Indian Ocean Territory"
+ },
+ "VG": {
+ "name": "British Virgin Islands"
+ },
+ "BN": {
+ "name": "Brunei"
+ },
+ "BG": {
+ "name": "Bulgaria"
+ },
+ "BF": {
+ "name": "Burkina Faso"
+ },
+ "BI": {
+ "name": "Burundi"
+ },
+ "KH": {
+ "name": "Cambodia"
+ },
+ "CM": {
+ "name": "Cameroon"
+ },
+ "CA": {
+ "name": "Canada"
+ },
+ "IC": {
+ "name": "Canary Islands"
+ },
+ "CV": {
+ "name": "Cape Verde"
+ },
+ "BQ": {
+ "name": "Caribbean Netherlands"
+ },
+ "KY": {
+ "name": "Cayman Islands"
+ },
+ "CF": {
+ "name": "Central African Republic"
+ },
+ "EA": {
+ "name": "Ceuta and Melilla"
+ },
+ "TD": {
+ "name": "Chad"
+ },
+ "CL": {
+ "name": "Chile"
+ },
+ "CN": {
+ "name": "China"
+ },
+ "CX": {
+ "name": "Christmas Island"
+ },
+ "CC": {
+ "name": "Cocos (Keeling) Islands"
+ },
+ "CO": {
+ "name": "Colombia"
+ },
+ "KM": {
+ "name": "Comoros"
+ },
+ "CG": {
+ "name": "Congo - Brazzaville"
+ },
+ "CD": {
+ "name": "Congo - Kinshasa"
+ },
+ "CK": {
+ "name": "Cook Islands"
+ },
+ "CR": {
+ "name": "Costa Rica"
+ },
+ "CI": {
+ "name": "Côte d’Ivoire"
+ },
+ "HR": {
+ "name": "Croatia"
+ },
+ "CU": {
+ "name": "Cuba"
+ },
+ "CW": {
+ "name": "Curaçao"
+ },
+ "CY": {
+ "name": "Cyprus"
+ },
+ "CZ": {
+ "name": "Czech Republic"
+ },
+ "DK": {
+ "name": "Denmark"
+ },
+ "DG": {
+ "name": "Diego Garcia"
+ },
+ "DJ": {
+ "name": "Djibouti"
+ },
+ "DM": {
+ "name": "Dominica"
+ },
+ "DO": {
+ "name": "Dominican Republic"
+ },
+ "EC": {
+ "name": "Ecuador"
+ },
+ "EG": {
+ "name": "Egypt"
+ },
+ "SV": {
+ "name": "El Salvador"
+ },
+ "GQ": {
+ "name": "Equatorial Guinea"
+ },
+ "ER": {
+ "name": "Eritrea"
+ },
+ "EE": {
+ "name": "Estonia"
+ },
+ "ET": {
+ "name": "Ethiopia"
+ },
+ "FK": {
+ "name": "Falkland Islands"
+ },
+ "FO": {
+ "name": "Faroe Islands"
+ },
+ "FJ": {
+ "name": "Fiji"
+ },
+ "FI": {
+ "name": "Finland"
+ },
+ "FR": {
+ "name": "France"
+ },
+ "GF": {
+ "name": "French Guiana"
+ },
+ "PF": {
+ "name": "French Polynesia"
+ },
+ "TF": {
+ "name": "French Southern Territories"
+ },
+ "GA": {
+ "name": "Gabon"
+ },
+ "GM": {
+ "name": "Gambia"
+ },
+ "GE": {
+ "name": "Georgia"
+ },
+ "DE": {
+ "name": "Germany"
+ },
+ "GH": {
+ "name": "Ghana"
+ },
+ "GI": {
+ "name": "Gibraltar"
+ },
+ "GR": {
+ "name": "Greece"
+ },
+ "GL": {
+ "name": "Greenland"
+ },
+ "GD": {
+ "name": "Grenada"
+ },
+ "GP": {
+ "name": "Guadeloupe"
+ },
+ "GU": {
+ "name": "Guam"
+ },
+ "GT": {
+ "name": "Guatemala"
+ },
+ "GG": {
+ "name": "Guernsey"
+ },
+ "GN": {
+ "name": "Guinea"
+ },
+ "GW": {
+ "name": "Guinea-Bissau"
+ },
+ "GY": {
+ "name": "Guyana"
+ },
+ "HT": {
+ "name": "Haiti"
+ },
+ "HN": {
+ "name": "Honduras"
+ },
+ "HK": {
+ "name": "Hong Kong SAR China"
+ },
+ "HU": {
+ "name": "Hungary"
+ },
+ "IS": {
+ "name": "Iceland"
+ },
+ "IN": {
+ "name": "India"
+ },
+ "ID": {
+ "name": "Indonesia"
+ },
+ "IR": {
+ "name": "Iran"
+ },
+ "IQ": {
+ "name": "Iraq"
+ },
+ "IE": {
+ "name": "Ireland"
+ },
+ "IM": {
+ "name": "Isle of Man"
+ },
+ "IL": {
+ "name": "Israel"
+ },
+ "IT": {
+ "name": "Italy"
+ },
+ "JM": {
+ "name": "Jamaica"
+ },
+ "JP": {
+ "name": "Japan"
+ },
+ "JE": {
+ "name": "Jersey"
+ },
+ "JO": {
+ "name": "Jordan"
+ },
+ "KZ": {
+ "name": "Kazakhstan"
+ },
+ "KE": {
+ "name": "Kenya"
+ },
+ "KI": {
+ "name": "Kiribati"
+ },
+ "XK": {
+ "name": "Kosovo"
+ },
+ "KW": {
+ "name": "Kuwait"
+ },
+ "KG": {
+ "name": "Kyrgyzstan"
+ },
+ "LA": {
+ "name": "Laos"
+ },
+ "LV": {
+ "name": "Latvia"
+ },
+ "LB": {
+ "name": "Lebanon"
+ },
+ "LS": {
+ "name": "Lesotho"
+ },
+ "LR": {
+ "name": "Liberia"
+ },
+ "LY": {
+ "name": "Libya"
+ },
+ "LI": {
+ "name": "Liechtenstein"
+ },
+ "LT": {
+ "name": "Lithuania"
+ },
+ "LU": {
+ "name": "Luxembourg"
+ },
+ "MO": {
+ "name": "Macau SAR China"
+ },
+ "MK": {
+ "name": "Macedonia"
+ },
+ "MG": {
+ "name": "Madagascar"
+ },
+ "MW": {
+ "name": "Malawi"
+ },
+ "MY": {
+ "name": "Malaysia"
+ },
+ "MV": {
+ "name": "Maldives"
+ },
+ "ML": {
+ "name": "Mali"
+ },
+ "MT": {
+ "name": "Malta"
+ },
+ "MH": {
+ "name": "Marshall Islands"
+ },
+ "MQ": {
+ "name": "Martinique"
+ },
+ "MR": {
+ "name": "Mauritania"
+ },
+ "MU": {
+ "name": "Mauritius"
+ },
+ "YT": {
+ "name": "Mayotte"
+ },
+ "MX": {
+ "name": "Mexico"
+ },
+ "FM": {
+ "name": "Micronesia"
+ },
+ "MD": {
+ "name": "Moldova"
+ },
+ "MC": {
+ "name": "Monaco"
+ },
+ "MN": {
+ "name": "Mongolia"
+ },
+ "ME": {
+ "name": "Montenegro"
+ },
+ "MS": {
+ "name": "Montserrat"
+ },
+ "MA": {
+ "name": "Morocco"
+ },
+ "MZ": {
+ "name": "Mozambique"
+ },
+ "MM": {
+ "name": "Myanmar (Burma)"
+ },
+ "NA": {
+ "name": "Namibia"
+ },
+ "NR": {
+ "name": "Nauru"
+ },
+ "NP": {
+ "name": "Nepal"
+ },
+ "NL": {
+ "name": "Netherlands"
+ },
+ "NC": {
+ "name": "New Caledonia"
+ },
+ "NZ": {
+ "name": "New Zealand"
+ },
+ "NI": {
+ "name": "Nicaragua"
+ },
+ "NE": {
+ "name": "Niger"
+ },
+ "NG": {
+ "name": "Nigeria"
+ },
+ "NU": {
+ "name": "Niue"
+ },
+ "NF": {
+ "name": "Norfolk Island"
+ },
+ "KP": {
+ "name": "North Korea"
+ },
+ "MP": {
+ "name": "Northern Mariana Islands"
+ },
+ "NO": {
+ "name": "Norway"
+ },
+ "OM": {
+ "name": "Oman"
+ },
+ "PK": {
+ "name": "Pakistan"
+ },
+ "PW": {
+ "name": "Palau"
+ },
+ "PS": {
+ "name": "Palestinian Territories"
+ },
+ "PA": {
+ "name": "Panama"
+ },
+ "PG": {
+ "name": "Papua New Guinea"
+ },
+ "PY": {
+ "name": "Paraguay"
+ },
+ "PE": {
+ "name": "Peru"
+ },
+ "PH": {
+ "name": "Philippines"
+ },
+ "PN": {
+ "name": "Pitcairn Islands"
+ },
+ "PL": {
+ "name": "Poland"
+ },
+ "PT": {
+ "name": "Portugal"
+ },
+ "PR": {
+ "name": "Puerto Rico"
+ },
+ "QA": {
+ "name": "Qatar"
+ },
+ "RE": {
+ "name": "Réunion"
+ },
+ "RO": {
+ "name": "Romania"
+ },
+ "RU": {
+ "name": "Russia"
+ },
+ "RW": {
+ "name": "Rwanda"
+ },
+ "BL": {
+ "name": "Saint Barthélemy"
+ },
+ "SH": {
+ "name": "Saint Helena"
+ },
+ "KN": {
+ "name": "Saint Kitts and Nevis"
+ },
+ "LC": {
+ "name": "Saint Lucia"
+ },
+ "MF": {
+ "name": "Saint Martin"
+ },
+ "PM": {
+ "name": "Saint Pierre and Miquelon"
+ },
+ "WS": {
+ "name": "Samoa"
+ },
+ "SM": {
+ "name": "San Marino"
+ },
+ "ST": {
+ "name": "São Tomé and Príncipe"
+ },
+ "SA": {
+ "name": "Saudi Arabia"
+ },
+ "SN": {
+ "name": "Senegal"
+ },
+ "RS": {
+ "name": "Serbia"
+ },
+ "SC": {
+ "name": "Seychelles"
+ },
+ "SL": {
+ "name": "Sierra Leone"
+ },
+ "SG": {
+ "name": "Singapore"
+ },
+ "SX": {
+ "name": "Sint Maarten"
+ },
+ "SK": {
+ "name": "Slovakia"
+ },
+ "SI": {
+ "name": "Slovenia"
+ },
+ "SB": {
+ "name": "Solomon Islands"
+ },
+ "SO": {
+ "name": "Somalia"
+ },
+ "ZA": {
+ "name": "South Africa"
+ },
+ "GS": {
+ "name": "South Georgia & South Sandwich Islands"
+ },
+ "KR": {
+ "name": "South Korea"
+ },
+ "SS": {
+ "name": "South Sudan"
+ },
+ "ES": {
+ "name": "Spain"
+ },
+ "LK": {
+ "name": "Sri Lanka"
+ },
+ "VC": {
+ "name": "St. Vincent & Grenadines"
+ },
+ "SD": {
+ "name": "Sudan"
+ },
+ "SR": {
+ "name": "Suriname"
+ },
+ "SJ": {
+ "name": "Svalbard and Jan Mayen"
+ },
+ "SZ": {
+ "name": "Swaziland"
+ },
+ "SE": {
+ "name": "Sweden"
+ },
+ "CH": {
+ "name": "Switzerland"
+ },
+ "SY": {
+ "name": "Syria"
+ },
+ "TW": {
+ "name": "Taiwan"
+ },
+ "TJ": {
+ "name": "Tajikistan"
+ },
+ "TZ": {
+ "name": "Tanzania"
+ },
+ "TH": {
+ "name": "Thailand"
+ },
+ "TL": {
+ "name": "Timor-Leste"
+ },
+ "TG": {
+ "name": "Togo"
+ },
+ "TK": {
+ "name": "Tokelau"
+ },
+ "TO": {
+ "name": "Tonga"
+ },
+ "TT": {
+ "name": "Trinidad and Tobago"
+ },
+ "TA": {
+ "name": "Tristan da Cunha"
+ },
+ "TN": {
+ "name": "Tunisia"
+ },
+ "TR": {
+ "name": "Turkey"
+ },
+ "TM": {
+ "name": "Turkmenistan"
+ },
+ "TC": {
+ "name": "Turks and Caicos Islands"
+ },
+ "TV": {
+ "name": "Tuvalu"
+ },
+ "UM": {
+ "name": "U.S. Outlying Islands"
+ },
+ "VI": {
+ "name": "U.S. Virgin Islands"
+ },
+ "UG": {
+ "name": "Uganda"
+ },
+ "UA": {
+ "name": "Ukraine"
+ },
+ "AE": {
+ "name": "United Arab Emirates"
+ },
+ "GB": {
+ "name": "United Kingdom"
+ },
+ "US": {
+ "name": "United States"
+ },
+ "UY": {
+ "name": "Uruguay"
+ },
+ "UZ": {
+ "name": "Uzbekistan"
+ },
+ "VU": {
+ "name": "Vanuatu"
+ },
+ "VA": {
+ "name": "Vatican City"
+ },
+ "VE": {
+ "name": "Venezuela"
+ },
+ "VN": {
+ "name": "Vietnam"
+ },
+ "WF": {
+ "name": "Wallis and Futuna"
+ },
+ "EH": {
+ "name": "Western Sahara"
+ },
+ "YE": {
+ "name": "Yemen"
+ },
+ "ZM": {
+ "name": "Zambia"
+ },
+ "ZW": {
+ "name": "Zimbabwe"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/country/en-SG.json b/library/intl/resources/country/en-SG.json
new file mode 100644
index 000000000..081d5f4c0
--- /dev/null
+++ b/library/intl/resources/country/en-SG.json
@@ -0,0 +1,761 @@
+{
+ "AF": {
+ "name": "Afghanistan"
+ },
+ "AX": {
+ "name": "Ã…land Islands"
+ },
+ "AL": {
+ "name": "Albania"
+ },
+ "DZ": {
+ "name": "Algeria"
+ },
+ "AS": {
+ "name": "American Samoa"
+ },
+ "AD": {
+ "name": "Andorra"
+ },
+ "AO": {
+ "name": "Angola"
+ },
+ "AI": {
+ "name": "Anguilla"
+ },
+ "AQ": {
+ "name": "Antarctica"
+ },
+ "AG": {
+ "name": "Antigua and Barbuda"
+ },
+ "AR": {
+ "name": "Argentina"
+ },
+ "AM": {
+ "name": "Armenia"
+ },
+ "AW": {
+ "name": "Aruba"
+ },
+ "AC": {
+ "name": "Ascension Island"
+ },
+ "AU": {
+ "name": "Australia"
+ },
+ "AT": {
+ "name": "Austria"
+ },
+ "AZ": {
+ "name": "Azerbaijan"
+ },
+ "BS": {
+ "name": "Bahamas"
+ },
+ "BH": {
+ "name": "Bahrain"
+ },
+ "BD": {
+ "name": "Bangladesh"
+ },
+ "BB": {
+ "name": "Barbados"
+ },
+ "BY": {
+ "name": "Belarus"
+ },
+ "BE": {
+ "name": "Belgium"
+ },
+ "BZ": {
+ "name": "Belize"
+ },
+ "BJ": {
+ "name": "Benin"
+ },
+ "BM": {
+ "name": "Bermuda"
+ },
+ "BT": {
+ "name": "Bhutan"
+ },
+ "BO": {
+ "name": "Bolivia"
+ },
+ "BA": {
+ "name": "Bosnia and Herzegovina"
+ },
+ "BW": {
+ "name": "Botswana"
+ },
+ "BR": {
+ "name": "Brazil"
+ },
+ "IO": {
+ "name": "British Indian Ocean Territory"
+ },
+ "VG": {
+ "name": "British Virgin Islands"
+ },
+ "BN": {
+ "name": "Brunei"
+ },
+ "BG": {
+ "name": "Bulgaria"
+ },
+ "BF": {
+ "name": "Burkina Faso"
+ },
+ "BI": {
+ "name": "Burundi"
+ },
+ "KH": {
+ "name": "Cambodia"
+ },
+ "CM": {
+ "name": "Cameroon"
+ },
+ "CA": {
+ "name": "Canada"
+ },
+ "IC": {
+ "name": "Canary Islands"
+ },
+ "CV": {
+ "name": "Cape Verde"
+ },
+ "BQ": {
+ "name": "Caribbean Netherlands"
+ },
+ "KY": {
+ "name": "Cayman Islands"
+ },
+ "CF": {
+ "name": "Central African Republic"
+ },
+ "EA": {
+ "name": "Ceuta and Melilla"
+ },
+ "TD": {
+ "name": "Chad"
+ },
+ "CL": {
+ "name": "Chile"
+ },
+ "CN": {
+ "name": "China"
+ },
+ "CX": {
+ "name": "Christmas Island"
+ },
+ "CC": {
+ "name": "Cocos (Keeling) Islands"
+ },
+ "CO": {
+ "name": "Colombia"
+ },
+ "KM": {
+ "name": "Comoros"
+ },
+ "CG": {
+ "name": "Congo - Brazzaville"
+ },
+ "CD": {
+ "name": "Congo - Kinshasa"
+ },
+ "CK": {
+ "name": "Cook Islands"
+ },
+ "CR": {
+ "name": "Costa Rica"
+ },
+ "CI": {
+ "name": "Côte d’Ivoire"
+ },
+ "HR": {
+ "name": "Croatia"
+ },
+ "CU": {
+ "name": "Cuba"
+ },
+ "CW": {
+ "name": "Curaçao"
+ },
+ "CY": {
+ "name": "Cyprus"
+ },
+ "CZ": {
+ "name": "Czech Republic"
+ },
+ "DK": {
+ "name": "Denmark"
+ },
+ "DG": {
+ "name": "Diego Garcia"
+ },
+ "DJ": {
+ "name": "Djibouti"
+ },
+ "DM": {
+ "name": "Dominica"
+ },
+ "DO": {
+ "name": "Dominican Republic"
+ },
+ "EC": {
+ "name": "Ecuador"
+ },
+ "EG": {
+ "name": "Egypt"
+ },
+ "SV": {
+ "name": "El Salvador"
+ },
+ "GQ": {
+ "name": "Equatorial Guinea"
+ },
+ "ER": {
+ "name": "Eritrea"
+ },
+ "EE": {
+ "name": "Estonia"
+ },
+ "ET": {
+ "name": "Ethiopia"
+ },
+ "FK": {
+ "name": "Falkland Islands"
+ },
+ "FO": {
+ "name": "Faroe Islands"
+ },
+ "FJ": {
+ "name": "Fiji"
+ },
+ "FI": {
+ "name": "Finland"
+ },
+ "FR": {
+ "name": "France"
+ },
+ "GF": {
+ "name": "French Guiana"
+ },
+ "PF": {
+ "name": "French Polynesia"
+ },
+ "TF": {
+ "name": "French Southern Territories"
+ },
+ "GA": {
+ "name": "Gabon"
+ },
+ "GM": {
+ "name": "Gambia"
+ },
+ "GE": {
+ "name": "Georgia"
+ },
+ "DE": {
+ "name": "Germany"
+ },
+ "GH": {
+ "name": "Ghana"
+ },
+ "GI": {
+ "name": "Gibraltar"
+ },
+ "GR": {
+ "name": "Greece"
+ },
+ "GL": {
+ "name": "Greenland"
+ },
+ "GD": {
+ "name": "Grenada"
+ },
+ "GP": {
+ "name": "Guadeloupe"
+ },
+ "GU": {
+ "name": "Guam"
+ },
+ "GT": {
+ "name": "Guatemala"
+ },
+ "GG": {
+ "name": "Guernsey"
+ },
+ "GN": {
+ "name": "Guinea"
+ },
+ "GW": {
+ "name": "Guinea-Bissau"
+ },
+ "GY": {
+ "name": "Guyana"
+ },
+ "HT": {
+ "name": "Haiti"
+ },
+ "HN": {
+ "name": "Honduras"
+ },
+ "HK": {
+ "name": "Hong Kong SAR China"
+ },
+ "HU": {
+ "name": "Hungary"
+ },
+ "IS": {
+ "name": "Iceland"
+ },
+ "IN": {
+ "name": "India"
+ },
+ "ID": {
+ "name": "Indonesia"
+ },
+ "IR": {
+ "name": "Iran"
+ },
+ "IQ": {
+ "name": "Iraq"
+ },
+ "IE": {
+ "name": "Ireland"
+ },
+ "IM": {
+ "name": "Isle of Man"
+ },
+ "IL": {
+ "name": "Israel"
+ },
+ "IT": {
+ "name": "Italy"
+ },
+ "JM": {
+ "name": "Jamaica"
+ },
+ "JP": {
+ "name": "Japan"
+ },
+ "JE": {
+ "name": "Jersey"
+ },
+ "JO": {
+ "name": "Jordan"
+ },
+ "KZ": {
+ "name": "Kazakhstan"
+ },
+ "KE": {
+ "name": "Kenya"
+ },
+ "KI": {
+ "name": "Kiribati"
+ },
+ "XK": {
+ "name": "Kosovo"
+ },
+ "KW": {
+ "name": "Kuwait"
+ },
+ "KG": {
+ "name": "Kyrgyzstan"
+ },
+ "LA": {
+ "name": "Laos"
+ },
+ "LV": {
+ "name": "Latvia"
+ },
+ "LB": {
+ "name": "Lebanon"
+ },
+ "LS": {
+ "name": "Lesotho"
+ },
+ "LR": {
+ "name": "Liberia"
+ },
+ "LY": {
+ "name": "Libya"
+ },
+ "LI": {
+ "name": "Liechtenstein"
+ },
+ "LT": {
+ "name": "Lithuania"
+ },
+ "LU": {
+ "name": "Luxembourg"
+ },
+ "MO": {
+ "name": "Macau SAR China"
+ },
+ "MK": {
+ "name": "Macedonia"
+ },
+ "MG": {
+ "name": "Madagascar"
+ },
+ "MW": {
+ "name": "Malawi"
+ },
+ "MY": {
+ "name": "Malaysia"
+ },
+ "MV": {
+ "name": "Maldives"
+ },
+ "ML": {
+ "name": "Mali"
+ },
+ "MT": {
+ "name": "Malta"
+ },
+ "MH": {
+ "name": "Marshall Islands"
+ },
+ "MQ": {
+ "name": "Martinique"
+ },
+ "MR": {
+ "name": "Mauritania"
+ },
+ "MU": {
+ "name": "Mauritius"
+ },
+ "YT": {
+ "name": "Mayotte"
+ },
+ "MX": {
+ "name": "Mexico"
+ },
+ "FM": {
+ "name": "Micronesia"
+ },
+ "MD": {
+ "name": "Moldova"
+ },
+ "MC": {
+ "name": "Monaco"
+ },
+ "MN": {
+ "name": "Mongolia"
+ },
+ "ME": {
+ "name": "Montenegro"
+ },
+ "MS": {
+ "name": "Montserrat"
+ },
+ "MA": {
+ "name": "Morocco"
+ },
+ "MZ": {
+ "name": "Mozambique"
+ },
+ "MM": {
+ "name": "Myanmar (Burma)"
+ },
+ "NA": {
+ "name": "Namibia"
+ },
+ "NR": {
+ "name": "Nauru"
+ },
+ "NP": {
+ "name": "Nepal"
+ },
+ "NL": {
+ "name": "Netherlands"
+ },
+ "NC": {
+ "name": "New Caledonia"
+ },
+ "NZ": {
+ "name": "New Zealand"
+ },
+ "NI": {
+ "name": "Nicaragua"
+ },
+ "NE": {
+ "name": "Niger"
+ },
+ "NG": {
+ "name": "Nigeria"
+ },
+ "NU": {
+ "name": "Niue"
+ },
+ "NF": {
+ "name": "Norfolk Island"
+ },
+ "KP": {
+ "name": "North Korea"
+ },
+ "MP": {
+ "name": "Northern Mariana Islands"
+ },
+ "NO": {
+ "name": "Norway"
+ },
+ "OM": {
+ "name": "Oman"
+ },
+ "PK": {
+ "name": "Pakistan"
+ },
+ "PW": {
+ "name": "Palau"
+ },
+ "PS": {
+ "name": "Palestinian Territories"
+ },
+ "PA": {
+ "name": "Panama"
+ },
+ "PG": {
+ "name": "Papua New Guinea"
+ },
+ "PY": {
+ "name": "Paraguay"
+ },
+ "PE": {
+ "name": "Peru"
+ },
+ "PH": {
+ "name": "Philippines"
+ },
+ "PN": {
+ "name": "Pitcairn Islands"
+ },
+ "PL": {
+ "name": "Poland"
+ },
+ "PT": {
+ "name": "Portugal"
+ },
+ "PR": {
+ "name": "Puerto Rico"
+ },
+ "QA": {
+ "name": "Qatar"
+ },
+ "RE": {
+ "name": "Réunion"
+ },
+ "RO": {
+ "name": "Romania"
+ },
+ "RU": {
+ "name": "Russia"
+ },
+ "RW": {
+ "name": "Rwanda"
+ },
+ "BL": {
+ "name": "Saint Barthélemy"
+ },
+ "SH": {
+ "name": "Saint Helena"
+ },
+ "KN": {
+ "name": "Saint Kitts and Nevis"
+ },
+ "LC": {
+ "name": "Saint Lucia"
+ },
+ "MF": {
+ "name": "Saint Martin"
+ },
+ "PM": {
+ "name": "Saint Pierre and Miquelon"
+ },
+ "WS": {
+ "name": "Samoa"
+ },
+ "SM": {
+ "name": "San Marino"
+ },
+ "ST": {
+ "name": "São Tomé and Príncipe"
+ },
+ "SA": {
+ "name": "Saudi Arabia"
+ },
+ "SN": {
+ "name": "Senegal"
+ },
+ "RS": {
+ "name": "Serbia"
+ },
+ "SC": {
+ "name": "Seychelles"
+ },
+ "SL": {
+ "name": "Sierra Leone"
+ },
+ "SG": {
+ "name": "Singapore"
+ },
+ "SX": {
+ "name": "Sint Maarten"
+ },
+ "SK": {
+ "name": "Slovakia"
+ },
+ "SI": {
+ "name": "Slovenia"
+ },
+ "SB": {
+ "name": "Solomon Islands"
+ },
+ "SO": {
+ "name": "Somalia"
+ },
+ "ZA": {
+ "name": "South Africa"
+ },
+ "GS": {
+ "name": "South Georgia & South Sandwich Islands"
+ },
+ "KR": {
+ "name": "South Korea"
+ },
+ "SS": {
+ "name": "South Sudan"
+ },
+ "ES": {
+ "name": "Spain"
+ },
+ "LK": {
+ "name": "Sri Lanka"
+ },
+ "VC": {
+ "name": "St. Vincent & Grenadines"
+ },
+ "SD": {
+ "name": "Sudan"
+ },
+ "SR": {
+ "name": "Suriname"
+ },
+ "SJ": {
+ "name": "Svalbard and Jan Mayen"
+ },
+ "SZ": {
+ "name": "Swaziland"
+ },
+ "SE": {
+ "name": "Sweden"
+ },
+ "CH": {
+ "name": "Switzerland"
+ },
+ "SY": {
+ "name": "Syria"
+ },
+ "TW": {
+ "name": "Taiwan"
+ },
+ "TJ": {
+ "name": "Tajikistan"
+ },
+ "TZ": {
+ "name": "Tanzania"
+ },
+ "TH": {
+ "name": "Thailand"
+ },
+ "TL": {
+ "name": "Timor-Leste"
+ },
+ "TG": {
+ "name": "Togo"
+ },
+ "TK": {
+ "name": "Tokelau"
+ },
+ "TO": {
+ "name": "Tonga"
+ },
+ "TT": {
+ "name": "Trinidad and Tobago"
+ },
+ "TA": {
+ "name": "Tristan da Cunha"
+ },
+ "TN": {
+ "name": "Tunisia"
+ },
+ "TR": {
+ "name": "Turkey"
+ },
+ "TM": {
+ "name": "Turkmenistan"
+ },
+ "TC": {
+ "name": "Turks and Caicos Islands"
+ },
+ "TV": {
+ "name": "Tuvalu"
+ },
+ "UM": {
+ "name": "U.S. Outlying Islands"
+ },
+ "VI": {
+ "name": "U.S. Virgin Islands"
+ },
+ "UG": {
+ "name": "Uganda"
+ },
+ "UA": {
+ "name": "Ukraine"
+ },
+ "AE": {
+ "name": "United Arab Emirates"
+ },
+ "GB": {
+ "name": "United Kingdom"
+ },
+ "US": {
+ "name": "United States"
+ },
+ "UY": {
+ "name": "Uruguay"
+ },
+ "UZ": {
+ "name": "Uzbekistan"
+ },
+ "VU": {
+ "name": "Vanuatu"
+ },
+ "VA": {
+ "name": "Vatican City"
+ },
+ "VE": {
+ "name": "Venezuela"
+ },
+ "VN": {
+ "name": "Vietnam"
+ },
+ "WF": {
+ "name": "Wallis and Futuna"
+ },
+ "EH": {
+ "name": "Western Sahara"
+ },
+ "YE": {
+ "name": "Yemen"
+ },
+ "ZM": {
+ "name": "Zambia"
+ },
+ "ZW": {
+ "name": "Zimbabwe"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/country/en-SH.json b/library/intl/resources/country/en-SH.json
new file mode 100644
index 000000000..081d5f4c0
--- /dev/null
+++ b/library/intl/resources/country/en-SH.json
@@ -0,0 +1,761 @@
+{
+ "AF": {
+ "name": "Afghanistan"
+ },
+ "AX": {
+ "name": "Ã…land Islands"
+ },
+ "AL": {
+ "name": "Albania"
+ },
+ "DZ": {
+ "name": "Algeria"
+ },
+ "AS": {
+ "name": "American Samoa"
+ },
+ "AD": {
+ "name": "Andorra"
+ },
+ "AO": {
+ "name": "Angola"
+ },
+ "AI": {
+ "name": "Anguilla"
+ },
+ "AQ": {
+ "name": "Antarctica"
+ },
+ "AG": {
+ "name": "Antigua and Barbuda"
+ },
+ "AR": {
+ "name": "Argentina"
+ },
+ "AM": {
+ "name": "Armenia"
+ },
+ "AW": {
+ "name": "Aruba"
+ },
+ "AC": {
+ "name": "Ascension Island"
+ },
+ "AU": {
+ "name": "Australia"
+ },
+ "AT": {
+ "name": "Austria"
+ },
+ "AZ": {
+ "name": "Azerbaijan"
+ },
+ "BS": {
+ "name": "Bahamas"
+ },
+ "BH": {
+ "name": "Bahrain"
+ },
+ "BD": {
+ "name": "Bangladesh"
+ },
+ "BB": {
+ "name": "Barbados"
+ },
+ "BY": {
+ "name": "Belarus"
+ },
+ "BE": {
+ "name": "Belgium"
+ },
+ "BZ": {
+ "name": "Belize"
+ },
+ "BJ": {
+ "name": "Benin"
+ },
+ "BM": {
+ "name": "Bermuda"
+ },
+ "BT": {
+ "name": "Bhutan"
+ },
+ "BO": {
+ "name": "Bolivia"
+ },
+ "BA": {
+ "name": "Bosnia and Herzegovina"
+ },
+ "BW": {
+ "name": "Botswana"
+ },
+ "BR": {
+ "name": "Brazil"
+ },
+ "IO": {
+ "name": "British Indian Ocean Territory"
+ },
+ "VG": {
+ "name": "British Virgin Islands"
+ },
+ "BN": {
+ "name": "Brunei"
+ },
+ "BG": {
+ "name": "Bulgaria"
+ },
+ "BF": {
+ "name": "Burkina Faso"
+ },
+ "BI": {
+ "name": "Burundi"
+ },
+ "KH": {
+ "name": "Cambodia"
+ },
+ "CM": {
+ "name": "Cameroon"
+ },
+ "CA": {
+ "name": "Canada"
+ },
+ "IC": {
+ "name": "Canary Islands"
+ },
+ "CV": {
+ "name": "Cape Verde"
+ },
+ "BQ": {
+ "name": "Caribbean Netherlands"
+ },
+ "KY": {
+ "name": "Cayman Islands"
+ },
+ "CF": {
+ "name": "Central African Republic"
+ },
+ "EA": {
+ "name": "Ceuta and Melilla"
+ },
+ "TD": {
+ "name": "Chad"
+ },
+ "CL": {
+ "name": "Chile"
+ },
+ "CN": {
+ "name": "China"
+ },
+ "CX": {
+ "name": "Christmas Island"
+ },
+ "CC": {
+ "name": "Cocos (Keeling) Islands"
+ },
+ "CO": {
+ "name": "Colombia"
+ },
+ "KM": {
+ "name": "Comoros"
+ },
+ "CG": {
+ "name": "Congo - Brazzaville"
+ },
+ "CD": {
+ "name": "Congo - Kinshasa"
+ },
+ "CK": {
+ "name": "Cook Islands"
+ },
+ "CR": {
+ "name": "Costa Rica"
+ },
+ "CI": {
+ "name": "Côte d’Ivoire"
+ },
+ "HR": {
+ "name": "Croatia"
+ },
+ "CU": {
+ "name": "Cuba"
+ },
+ "CW": {
+ "name": "Curaçao"
+ },
+ "CY": {
+ "name": "Cyprus"
+ },
+ "CZ": {
+ "name": "Czech Republic"
+ },
+ "DK": {
+ "name": "Denmark"
+ },
+ "DG": {
+ "name": "Diego Garcia"
+ },
+ "DJ": {
+ "name": "Djibouti"
+ },
+ "DM": {
+ "name": "Dominica"
+ },
+ "DO": {
+ "name": "Dominican Republic"
+ },
+ "EC": {
+ "name": "Ecuador"
+ },
+ "EG": {
+ "name": "Egypt"
+ },
+ "SV": {
+ "name": "El Salvador"
+ },
+ "GQ": {
+ "name": "Equatorial Guinea"
+ },
+ "ER": {
+ "name": "Eritrea"
+ },
+ "EE": {
+ "name": "Estonia"
+ },
+ "ET": {
+ "name": "Ethiopia"
+ },
+ "FK": {
+ "name": "Falkland Islands"
+ },
+ "FO": {
+ "name": "Faroe Islands"
+ },
+ "FJ": {
+ "name": "Fiji"
+ },
+ "FI": {
+ "name": "Finland"
+ },
+ "FR": {
+ "name": "France"
+ },
+ "GF": {
+ "name": "French Guiana"
+ },
+ "PF": {
+ "name": "French Polynesia"
+ },
+ "TF": {
+ "name": "French Southern Territories"
+ },
+ "GA": {
+ "name": "Gabon"
+ },
+ "GM": {
+ "name": "Gambia"
+ },
+ "GE": {
+ "name": "Georgia"
+ },
+ "DE": {
+ "name": "Germany"
+ },
+ "GH": {
+ "name": "Ghana"
+ },
+ "GI": {
+ "name": "Gibraltar"
+ },
+ "GR": {
+ "name": "Greece"
+ },
+ "GL": {
+ "name": "Greenland"
+ },
+ "GD": {
+ "name": "Grenada"
+ },
+ "GP": {
+ "name": "Guadeloupe"
+ },
+ "GU": {
+ "name": "Guam"
+ },
+ "GT": {
+ "name": "Guatemala"
+ },
+ "GG": {
+ "name": "Guernsey"
+ },
+ "GN": {
+ "name": "Guinea"
+ },
+ "GW": {
+ "name": "Guinea-Bissau"
+ },
+ "GY": {
+ "name": "Guyana"
+ },
+ "HT": {
+ "name": "Haiti"
+ },
+ "HN": {
+ "name": "Honduras"
+ },
+ "HK": {
+ "name": "Hong Kong SAR China"
+ },
+ "HU": {
+ "name": "Hungary"
+ },
+ "IS": {
+ "name": "Iceland"
+ },
+ "IN": {
+ "name": "India"
+ },
+ "ID": {
+ "name": "Indonesia"
+ },
+ "IR": {
+ "name": "Iran"
+ },
+ "IQ": {
+ "name": "Iraq"
+ },
+ "IE": {
+ "name": "Ireland"
+ },
+ "IM": {
+ "name": "Isle of Man"
+ },
+ "IL": {
+ "name": "Israel"
+ },
+ "IT": {
+ "name": "Italy"
+ },
+ "JM": {
+ "name": "Jamaica"
+ },
+ "JP": {
+ "name": "Japan"
+ },
+ "JE": {
+ "name": "Jersey"
+ },
+ "JO": {
+ "name": "Jordan"
+ },
+ "KZ": {
+ "name": "Kazakhstan"
+ },
+ "KE": {
+ "name": "Kenya"
+ },
+ "KI": {
+ "name": "Kiribati"
+ },
+ "XK": {
+ "name": "Kosovo"
+ },
+ "KW": {
+ "name": "Kuwait"
+ },
+ "KG": {
+ "name": "Kyrgyzstan"
+ },
+ "LA": {
+ "name": "Laos"
+ },
+ "LV": {
+ "name": "Latvia"
+ },
+ "LB": {
+ "name": "Lebanon"
+ },
+ "LS": {
+ "name": "Lesotho"
+ },
+ "LR": {
+ "name": "Liberia"
+ },
+ "LY": {
+ "name": "Libya"
+ },
+ "LI": {
+ "name": "Liechtenstein"
+ },
+ "LT": {
+ "name": "Lithuania"
+ },
+ "LU": {
+ "name": "Luxembourg"
+ },
+ "MO": {
+ "name": "Macau SAR China"
+ },
+ "MK": {
+ "name": "Macedonia"
+ },
+ "MG": {
+ "name": "Madagascar"
+ },
+ "MW": {
+ "name": "Malawi"
+ },
+ "MY": {
+ "name": "Malaysia"
+ },
+ "MV": {
+ "name": "Maldives"
+ },
+ "ML": {
+ "name": "Mali"
+ },
+ "MT": {
+ "name": "Malta"
+ },
+ "MH": {
+ "name": "Marshall Islands"
+ },
+ "MQ": {
+ "name": "Martinique"
+ },
+ "MR": {
+ "name": "Mauritania"
+ },
+ "MU": {
+ "name": "Mauritius"
+ },
+ "YT": {
+ "name": "Mayotte"
+ },
+ "MX": {
+ "name": "Mexico"
+ },
+ "FM": {
+ "name": "Micronesia"
+ },
+ "MD": {
+ "name": "Moldova"
+ },
+ "MC": {
+ "name": "Monaco"
+ },
+ "MN": {
+ "name": "Mongolia"
+ },
+ "ME": {
+ "name": "Montenegro"
+ },
+ "MS": {
+ "name": "Montserrat"
+ },
+ "MA": {
+ "name": "Morocco"
+ },
+ "MZ": {
+ "name": "Mozambique"
+ },
+ "MM": {
+ "name": "Myanmar (Burma)"
+ },
+ "NA": {
+ "name": "Namibia"
+ },
+ "NR": {
+ "name": "Nauru"
+ },
+ "NP": {
+ "name": "Nepal"
+ },
+ "NL": {
+ "name": "Netherlands"
+ },
+ "NC": {
+ "name": "New Caledonia"
+ },
+ "NZ": {
+ "name": "New Zealand"
+ },
+ "NI": {
+ "name": "Nicaragua"
+ },
+ "NE": {
+ "name": "Niger"
+ },
+ "NG": {
+ "name": "Nigeria"
+ },
+ "NU": {
+ "name": "Niue"
+ },
+ "NF": {
+ "name": "Norfolk Island"
+ },
+ "KP": {
+ "name": "North Korea"
+ },
+ "MP": {
+ "name": "Northern Mariana Islands"
+ },
+ "NO": {
+ "name": "Norway"
+ },
+ "OM": {
+ "name": "Oman"
+ },
+ "PK": {
+ "name": "Pakistan"
+ },
+ "PW": {
+ "name": "Palau"
+ },
+ "PS": {
+ "name": "Palestinian Territories"
+ },
+ "PA": {
+ "name": "Panama"
+ },
+ "PG": {
+ "name": "Papua New Guinea"
+ },
+ "PY": {
+ "name": "Paraguay"
+ },
+ "PE": {
+ "name": "Peru"
+ },
+ "PH": {
+ "name": "Philippines"
+ },
+ "PN": {
+ "name": "Pitcairn Islands"
+ },
+ "PL": {
+ "name": "Poland"
+ },
+ "PT": {
+ "name": "Portugal"
+ },
+ "PR": {
+ "name": "Puerto Rico"
+ },
+ "QA": {
+ "name": "Qatar"
+ },
+ "RE": {
+ "name": "Réunion"
+ },
+ "RO": {
+ "name": "Romania"
+ },
+ "RU": {
+ "name": "Russia"
+ },
+ "RW": {
+ "name": "Rwanda"
+ },
+ "BL": {
+ "name": "Saint Barthélemy"
+ },
+ "SH": {
+ "name": "Saint Helena"
+ },
+ "KN": {
+ "name": "Saint Kitts and Nevis"
+ },
+ "LC": {
+ "name": "Saint Lucia"
+ },
+ "MF": {
+ "name": "Saint Martin"
+ },
+ "PM": {
+ "name": "Saint Pierre and Miquelon"
+ },
+ "WS": {
+ "name": "Samoa"
+ },
+ "SM": {
+ "name": "San Marino"
+ },
+ "ST": {
+ "name": "São Tomé and Príncipe"
+ },
+ "SA": {
+ "name": "Saudi Arabia"
+ },
+ "SN": {
+ "name": "Senegal"
+ },
+ "RS": {
+ "name": "Serbia"
+ },
+ "SC": {
+ "name": "Seychelles"
+ },
+ "SL": {
+ "name": "Sierra Leone"
+ },
+ "SG": {
+ "name": "Singapore"
+ },
+ "SX": {
+ "name": "Sint Maarten"
+ },
+ "SK": {
+ "name": "Slovakia"
+ },
+ "SI": {
+ "name": "Slovenia"
+ },
+ "SB": {
+ "name": "Solomon Islands"
+ },
+ "SO": {
+ "name": "Somalia"
+ },
+ "ZA": {
+ "name": "South Africa"
+ },
+ "GS": {
+ "name": "South Georgia & South Sandwich Islands"
+ },
+ "KR": {
+ "name": "South Korea"
+ },
+ "SS": {
+ "name": "South Sudan"
+ },
+ "ES": {
+ "name": "Spain"
+ },
+ "LK": {
+ "name": "Sri Lanka"
+ },
+ "VC": {
+ "name": "St. Vincent & Grenadines"
+ },
+ "SD": {
+ "name": "Sudan"
+ },
+ "SR": {
+ "name": "Suriname"
+ },
+ "SJ": {
+ "name": "Svalbard and Jan Mayen"
+ },
+ "SZ": {
+ "name": "Swaziland"
+ },
+ "SE": {
+ "name": "Sweden"
+ },
+ "CH": {
+ "name": "Switzerland"
+ },
+ "SY": {
+ "name": "Syria"
+ },
+ "TW": {
+ "name": "Taiwan"
+ },
+ "TJ": {
+ "name": "Tajikistan"
+ },
+ "TZ": {
+ "name": "Tanzania"
+ },
+ "TH": {
+ "name": "Thailand"
+ },
+ "TL": {
+ "name": "Timor-Leste"
+ },
+ "TG": {
+ "name": "Togo"
+ },
+ "TK": {
+ "name": "Tokelau"
+ },
+ "TO": {
+ "name": "Tonga"
+ },
+ "TT": {
+ "name": "Trinidad and Tobago"
+ },
+ "TA": {
+ "name": "Tristan da Cunha"
+ },
+ "TN": {
+ "name": "Tunisia"
+ },
+ "TR": {
+ "name": "Turkey"
+ },
+ "TM": {
+ "name": "Turkmenistan"
+ },
+ "TC": {
+ "name": "Turks and Caicos Islands"
+ },
+ "TV": {
+ "name": "Tuvalu"
+ },
+ "UM": {
+ "name": "U.S. Outlying Islands"
+ },
+ "VI": {
+ "name": "U.S. Virgin Islands"
+ },
+ "UG": {
+ "name": "Uganda"
+ },
+ "UA": {
+ "name": "Ukraine"
+ },
+ "AE": {
+ "name": "United Arab Emirates"
+ },
+ "GB": {
+ "name": "United Kingdom"
+ },
+ "US": {
+ "name": "United States"
+ },
+ "UY": {
+ "name": "Uruguay"
+ },
+ "UZ": {
+ "name": "Uzbekistan"
+ },
+ "VU": {
+ "name": "Vanuatu"
+ },
+ "VA": {
+ "name": "Vatican City"
+ },
+ "VE": {
+ "name": "Venezuela"
+ },
+ "VN": {
+ "name": "Vietnam"
+ },
+ "WF": {
+ "name": "Wallis and Futuna"
+ },
+ "EH": {
+ "name": "Western Sahara"
+ },
+ "YE": {
+ "name": "Yemen"
+ },
+ "ZM": {
+ "name": "Zambia"
+ },
+ "ZW": {
+ "name": "Zimbabwe"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/country/en-VG.json b/library/intl/resources/country/en-VG.json
new file mode 100644
index 000000000..081d5f4c0
--- /dev/null
+++ b/library/intl/resources/country/en-VG.json
@@ -0,0 +1,761 @@
+{
+ "AF": {
+ "name": "Afghanistan"
+ },
+ "AX": {
+ "name": "Ã…land Islands"
+ },
+ "AL": {
+ "name": "Albania"
+ },
+ "DZ": {
+ "name": "Algeria"
+ },
+ "AS": {
+ "name": "American Samoa"
+ },
+ "AD": {
+ "name": "Andorra"
+ },
+ "AO": {
+ "name": "Angola"
+ },
+ "AI": {
+ "name": "Anguilla"
+ },
+ "AQ": {
+ "name": "Antarctica"
+ },
+ "AG": {
+ "name": "Antigua and Barbuda"
+ },
+ "AR": {
+ "name": "Argentina"
+ },
+ "AM": {
+ "name": "Armenia"
+ },
+ "AW": {
+ "name": "Aruba"
+ },
+ "AC": {
+ "name": "Ascension Island"
+ },
+ "AU": {
+ "name": "Australia"
+ },
+ "AT": {
+ "name": "Austria"
+ },
+ "AZ": {
+ "name": "Azerbaijan"
+ },
+ "BS": {
+ "name": "Bahamas"
+ },
+ "BH": {
+ "name": "Bahrain"
+ },
+ "BD": {
+ "name": "Bangladesh"
+ },
+ "BB": {
+ "name": "Barbados"
+ },
+ "BY": {
+ "name": "Belarus"
+ },
+ "BE": {
+ "name": "Belgium"
+ },
+ "BZ": {
+ "name": "Belize"
+ },
+ "BJ": {
+ "name": "Benin"
+ },
+ "BM": {
+ "name": "Bermuda"
+ },
+ "BT": {
+ "name": "Bhutan"
+ },
+ "BO": {
+ "name": "Bolivia"
+ },
+ "BA": {
+ "name": "Bosnia and Herzegovina"
+ },
+ "BW": {
+ "name": "Botswana"
+ },
+ "BR": {
+ "name": "Brazil"
+ },
+ "IO": {
+ "name": "British Indian Ocean Territory"
+ },
+ "VG": {
+ "name": "British Virgin Islands"
+ },
+ "BN": {
+ "name": "Brunei"
+ },
+ "BG": {
+ "name": "Bulgaria"
+ },
+ "BF": {
+ "name": "Burkina Faso"
+ },
+ "BI": {
+ "name": "Burundi"
+ },
+ "KH": {
+ "name": "Cambodia"
+ },
+ "CM": {
+ "name": "Cameroon"
+ },
+ "CA": {
+ "name": "Canada"
+ },
+ "IC": {
+ "name": "Canary Islands"
+ },
+ "CV": {
+ "name": "Cape Verde"
+ },
+ "BQ": {
+ "name": "Caribbean Netherlands"
+ },
+ "KY": {
+ "name": "Cayman Islands"
+ },
+ "CF": {
+ "name": "Central African Republic"
+ },
+ "EA": {
+ "name": "Ceuta and Melilla"
+ },
+ "TD": {
+ "name": "Chad"
+ },
+ "CL": {
+ "name": "Chile"
+ },
+ "CN": {
+ "name": "China"
+ },
+ "CX": {
+ "name": "Christmas Island"
+ },
+ "CC": {
+ "name": "Cocos (Keeling) Islands"
+ },
+ "CO": {
+ "name": "Colombia"
+ },
+ "KM": {
+ "name": "Comoros"
+ },
+ "CG": {
+ "name": "Congo - Brazzaville"
+ },
+ "CD": {
+ "name": "Congo - Kinshasa"
+ },
+ "CK": {
+ "name": "Cook Islands"
+ },
+ "CR": {
+ "name": "Costa Rica"
+ },
+ "CI": {
+ "name": "Côte d’Ivoire"
+ },
+ "HR": {
+ "name": "Croatia"
+ },
+ "CU": {
+ "name": "Cuba"
+ },
+ "CW": {
+ "name": "Curaçao"
+ },
+ "CY": {
+ "name": "Cyprus"
+ },
+ "CZ": {
+ "name": "Czech Republic"
+ },
+ "DK": {
+ "name": "Denmark"
+ },
+ "DG": {
+ "name": "Diego Garcia"
+ },
+ "DJ": {
+ "name": "Djibouti"
+ },
+ "DM": {
+ "name": "Dominica"
+ },
+ "DO": {
+ "name": "Dominican Republic"
+ },
+ "EC": {
+ "name": "Ecuador"
+ },
+ "EG": {
+ "name": "Egypt"
+ },
+ "SV": {
+ "name": "El Salvador"
+ },
+ "GQ": {
+ "name": "Equatorial Guinea"
+ },
+ "ER": {
+ "name": "Eritrea"
+ },
+ "EE": {
+ "name": "Estonia"
+ },
+ "ET": {
+ "name": "Ethiopia"
+ },
+ "FK": {
+ "name": "Falkland Islands"
+ },
+ "FO": {
+ "name": "Faroe Islands"
+ },
+ "FJ": {
+ "name": "Fiji"
+ },
+ "FI": {
+ "name": "Finland"
+ },
+ "FR": {
+ "name": "France"
+ },
+ "GF": {
+ "name": "French Guiana"
+ },
+ "PF": {
+ "name": "French Polynesia"
+ },
+ "TF": {
+ "name": "French Southern Territories"
+ },
+ "GA": {
+ "name": "Gabon"
+ },
+ "GM": {
+ "name": "Gambia"
+ },
+ "GE": {
+ "name": "Georgia"
+ },
+ "DE": {
+ "name": "Germany"
+ },
+ "GH": {
+ "name": "Ghana"
+ },
+ "GI": {
+ "name": "Gibraltar"
+ },
+ "GR": {
+ "name": "Greece"
+ },
+ "GL": {
+ "name": "Greenland"
+ },
+ "GD": {
+ "name": "Grenada"
+ },
+ "GP": {
+ "name": "Guadeloupe"
+ },
+ "GU": {
+ "name": "Guam"
+ },
+ "GT": {
+ "name": "Guatemala"
+ },
+ "GG": {
+ "name": "Guernsey"
+ },
+ "GN": {
+ "name": "Guinea"
+ },
+ "GW": {
+ "name": "Guinea-Bissau"
+ },
+ "GY": {
+ "name": "Guyana"
+ },
+ "HT": {
+ "name": "Haiti"
+ },
+ "HN": {
+ "name": "Honduras"
+ },
+ "HK": {
+ "name": "Hong Kong SAR China"
+ },
+ "HU": {
+ "name": "Hungary"
+ },
+ "IS": {
+ "name": "Iceland"
+ },
+ "IN": {
+ "name": "India"
+ },
+ "ID": {
+ "name": "Indonesia"
+ },
+ "IR": {
+ "name": "Iran"
+ },
+ "IQ": {
+ "name": "Iraq"
+ },
+ "IE": {
+ "name": "Ireland"
+ },
+ "IM": {
+ "name": "Isle of Man"
+ },
+ "IL": {
+ "name": "Israel"
+ },
+ "IT": {
+ "name": "Italy"
+ },
+ "JM": {
+ "name": "Jamaica"
+ },
+ "JP": {
+ "name": "Japan"
+ },
+ "JE": {
+ "name": "Jersey"
+ },
+ "JO": {
+ "name": "Jordan"
+ },
+ "KZ": {
+ "name": "Kazakhstan"
+ },
+ "KE": {
+ "name": "Kenya"
+ },
+ "KI": {
+ "name": "Kiribati"
+ },
+ "XK": {
+ "name": "Kosovo"
+ },
+ "KW": {
+ "name": "Kuwait"
+ },
+ "KG": {
+ "name": "Kyrgyzstan"
+ },
+ "LA": {
+ "name": "Laos"
+ },
+ "LV": {
+ "name": "Latvia"
+ },
+ "LB": {
+ "name": "Lebanon"
+ },
+ "LS": {
+ "name": "Lesotho"
+ },
+ "LR": {
+ "name": "Liberia"
+ },
+ "LY": {
+ "name": "Libya"
+ },
+ "LI": {
+ "name": "Liechtenstein"
+ },
+ "LT": {
+ "name": "Lithuania"
+ },
+ "LU": {
+ "name": "Luxembourg"
+ },
+ "MO": {
+ "name": "Macau SAR China"
+ },
+ "MK": {
+ "name": "Macedonia"
+ },
+ "MG": {
+ "name": "Madagascar"
+ },
+ "MW": {
+ "name": "Malawi"
+ },
+ "MY": {
+ "name": "Malaysia"
+ },
+ "MV": {
+ "name": "Maldives"
+ },
+ "ML": {
+ "name": "Mali"
+ },
+ "MT": {
+ "name": "Malta"
+ },
+ "MH": {
+ "name": "Marshall Islands"
+ },
+ "MQ": {
+ "name": "Martinique"
+ },
+ "MR": {
+ "name": "Mauritania"
+ },
+ "MU": {
+ "name": "Mauritius"
+ },
+ "YT": {
+ "name": "Mayotte"
+ },
+ "MX": {
+ "name": "Mexico"
+ },
+ "FM": {
+ "name": "Micronesia"
+ },
+ "MD": {
+ "name": "Moldova"
+ },
+ "MC": {
+ "name": "Monaco"
+ },
+ "MN": {
+ "name": "Mongolia"
+ },
+ "ME": {
+ "name": "Montenegro"
+ },
+ "MS": {
+ "name": "Montserrat"
+ },
+ "MA": {
+ "name": "Morocco"
+ },
+ "MZ": {
+ "name": "Mozambique"
+ },
+ "MM": {
+ "name": "Myanmar (Burma)"
+ },
+ "NA": {
+ "name": "Namibia"
+ },
+ "NR": {
+ "name": "Nauru"
+ },
+ "NP": {
+ "name": "Nepal"
+ },
+ "NL": {
+ "name": "Netherlands"
+ },
+ "NC": {
+ "name": "New Caledonia"
+ },
+ "NZ": {
+ "name": "New Zealand"
+ },
+ "NI": {
+ "name": "Nicaragua"
+ },
+ "NE": {
+ "name": "Niger"
+ },
+ "NG": {
+ "name": "Nigeria"
+ },
+ "NU": {
+ "name": "Niue"
+ },
+ "NF": {
+ "name": "Norfolk Island"
+ },
+ "KP": {
+ "name": "North Korea"
+ },
+ "MP": {
+ "name": "Northern Mariana Islands"
+ },
+ "NO": {
+ "name": "Norway"
+ },
+ "OM": {
+ "name": "Oman"
+ },
+ "PK": {
+ "name": "Pakistan"
+ },
+ "PW": {
+ "name": "Palau"
+ },
+ "PS": {
+ "name": "Palestinian Territories"
+ },
+ "PA": {
+ "name": "Panama"
+ },
+ "PG": {
+ "name": "Papua New Guinea"
+ },
+ "PY": {
+ "name": "Paraguay"
+ },
+ "PE": {
+ "name": "Peru"
+ },
+ "PH": {
+ "name": "Philippines"
+ },
+ "PN": {
+ "name": "Pitcairn Islands"
+ },
+ "PL": {
+ "name": "Poland"
+ },
+ "PT": {
+ "name": "Portugal"
+ },
+ "PR": {
+ "name": "Puerto Rico"
+ },
+ "QA": {
+ "name": "Qatar"
+ },
+ "RE": {
+ "name": "Réunion"
+ },
+ "RO": {
+ "name": "Romania"
+ },
+ "RU": {
+ "name": "Russia"
+ },
+ "RW": {
+ "name": "Rwanda"
+ },
+ "BL": {
+ "name": "Saint Barthélemy"
+ },
+ "SH": {
+ "name": "Saint Helena"
+ },
+ "KN": {
+ "name": "Saint Kitts and Nevis"
+ },
+ "LC": {
+ "name": "Saint Lucia"
+ },
+ "MF": {
+ "name": "Saint Martin"
+ },
+ "PM": {
+ "name": "Saint Pierre and Miquelon"
+ },
+ "WS": {
+ "name": "Samoa"
+ },
+ "SM": {
+ "name": "San Marino"
+ },
+ "ST": {
+ "name": "São Tomé and Príncipe"
+ },
+ "SA": {
+ "name": "Saudi Arabia"
+ },
+ "SN": {
+ "name": "Senegal"
+ },
+ "RS": {
+ "name": "Serbia"
+ },
+ "SC": {
+ "name": "Seychelles"
+ },
+ "SL": {
+ "name": "Sierra Leone"
+ },
+ "SG": {
+ "name": "Singapore"
+ },
+ "SX": {
+ "name": "Sint Maarten"
+ },
+ "SK": {
+ "name": "Slovakia"
+ },
+ "SI": {
+ "name": "Slovenia"
+ },
+ "SB": {
+ "name": "Solomon Islands"
+ },
+ "SO": {
+ "name": "Somalia"
+ },
+ "ZA": {
+ "name": "South Africa"
+ },
+ "GS": {
+ "name": "South Georgia & South Sandwich Islands"
+ },
+ "KR": {
+ "name": "South Korea"
+ },
+ "SS": {
+ "name": "South Sudan"
+ },
+ "ES": {
+ "name": "Spain"
+ },
+ "LK": {
+ "name": "Sri Lanka"
+ },
+ "VC": {
+ "name": "St. Vincent & Grenadines"
+ },
+ "SD": {
+ "name": "Sudan"
+ },
+ "SR": {
+ "name": "Suriname"
+ },
+ "SJ": {
+ "name": "Svalbard and Jan Mayen"
+ },
+ "SZ": {
+ "name": "Swaziland"
+ },
+ "SE": {
+ "name": "Sweden"
+ },
+ "CH": {
+ "name": "Switzerland"
+ },
+ "SY": {
+ "name": "Syria"
+ },
+ "TW": {
+ "name": "Taiwan"
+ },
+ "TJ": {
+ "name": "Tajikistan"
+ },
+ "TZ": {
+ "name": "Tanzania"
+ },
+ "TH": {
+ "name": "Thailand"
+ },
+ "TL": {
+ "name": "Timor-Leste"
+ },
+ "TG": {
+ "name": "Togo"
+ },
+ "TK": {
+ "name": "Tokelau"
+ },
+ "TO": {
+ "name": "Tonga"
+ },
+ "TT": {
+ "name": "Trinidad and Tobago"
+ },
+ "TA": {
+ "name": "Tristan da Cunha"
+ },
+ "TN": {
+ "name": "Tunisia"
+ },
+ "TR": {
+ "name": "Turkey"
+ },
+ "TM": {
+ "name": "Turkmenistan"
+ },
+ "TC": {
+ "name": "Turks and Caicos Islands"
+ },
+ "TV": {
+ "name": "Tuvalu"
+ },
+ "UM": {
+ "name": "U.S. Outlying Islands"
+ },
+ "VI": {
+ "name": "U.S. Virgin Islands"
+ },
+ "UG": {
+ "name": "Uganda"
+ },
+ "UA": {
+ "name": "Ukraine"
+ },
+ "AE": {
+ "name": "United Arab Emirates"
+ },
+ "GB": {
+ "name": "United Kingdom"
+ },
+ "US": {
+ "name": "United States"
+ },
+ "UY": {
+ "name": "Uruguay"
+ },
+ "UZ": {
+ "name": "Uzbekistan"
+ },
+ "VU": {
+ "name": "Vanuatu"
+ },
+ "VA": {
+ "name": "Vatican City"
+ },
+ "VE": {
+ "name": "Venezuela"
+ },
+ "VN": {
+ "name": "Vietnam"
+ },
+ "WF": {
+ "name": "Wallis and Futuna"
+ },
+ "EH": {
+ "name": "Western Sahara"
+ },
+ "YE": {
+ "name": "Yemen"
+ },
+ "ZM": {
+ "name": "Zambia"
+ },
+ "ZW": {
+ "name": "Zimbabwe"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/country/en.json b/library/intl/resources/country/en.json
new file mode 100644
index 000000000..ec4919eb8
--- /dev/null
+++ b/library/intl/resources/country/en.json
@@ -0,0 +1,761 @@
+{
+ "AF": {
+ "name": "Afghanistan"
+ },
+ "AX": {
+ "name": "Ã…land Islands"
+ },
+ "AL": {
+ "name": "Albania"
+ },
+ "DZ": {
+ "name": "Algeria"
+ },
+ "AS": {
+ "name": "American Samoa"
+ },
+ "AD": {
+ "name": "Andorra"
+ },
+ "AO": {
+ "name": "Angola"
+ },
+ "AI": {
+ "name": "Anguilla"
+ },
+ "AQ": {
+ "name": "Antarctica"
+ },
+ "AG": {
+ "name": "Antigua & Barbuda"
+ },
+ "AR": {
+ "name": "Argentina"
+ },
+ "AM": {
+ "name": "Armenia"
+ },
+ "AW": {
+ "name": "Aruba"
+ },
+ "AC": {
+ "name": "Ascension Island"
+ },
+ "AU": {
+ "name": "Australia"
+ },
+ "AT": {
+ "name": "Austria"
+ },
+ "AZ": {
+ "name": "Azerbaijan"
+ },
+ "BS": {
+ "name": "Bahamas"
+ },
+ "BH": {
+ "name": "Bahrain"
+ },
+ "BD": {
+ "name": "Bangladesh"
+ },
+ "BB": {
+ "name": "Barbados"
+ },
+ "BY": {
+ "name": "Belarus"
+ },
+ "BE": {
+ "name": "Belgium"
+ },
+ "BZ": {
+ "name": "Belize"
+ },
+ "BJ": {
+ "name": "Benin"
+ },
+ "BM": {
+ "name": "Bermuda"
+ },
+ "BT": {
+ "name": "Bhutan"
+ },
+ "BO": {
+ "name": "Bolivia"
+ },
+ "BA": {
+ "name": "Bosnia & Herzegovina"
+ },
+ "BW": {
+ "name": "Botswana"
+ },
+ "BR": {
+ "name": "Brazil"
+ },
+ "IO": {
+ "name": "British Indian Ocean Territory"
+ },
+ "VG": {
+ "name": "British Virgin Islands"
+ },
+ "BN": {
+ "name": "Brunei"
+ },
+ "BG": {
+ "name": "Bulgaria"
+ },
+ "BF": {
+ "name": "Burkina Faso"
+ },
+ "BI": {
+ "name": "Burundi"
+ },
+ "KH": {
+ "name": "Cambodia"
+ },
+ "CM": {
+ "name": "Cameroon"
+ },
+ "CA": {
+ "name": "Canada"
+ },
+ "IC": {
+ "name": "Canary Islands"
+ },
+ "CV": {
+ "name": "Cape Verde"
+ },
+ "BQ": {
+ "name": "Caribbean Netherlands"
+ },
+ "KY": {
+ "name": "Cayman Islands"
+ },
+ "CF": {
+ "name": "Central African Republic"
+ },
+ "EA": {
+ "name": "Ceuta & Melilla"
+ },
+ "TD": {
+ "name": "Chad"
+ },
+ "CL": {
+ "name": "Chile"
+ },
+ "CN": {
+ "name": "China"
+ },
+ "CX": {
+ "name": "Christmas Island"
+ },
+ "CC": {
+ "name": "Cocos (Keeling) Islands"
+ },
+ "CO": {
+ "name": "Colombia"
+ },
+ "KM": {
+ "name": "Comoros"
+ },
+ "CG": {
+ "name": "Congo - Brazzaville"
+ },
+ "CD": {
+ "name": "Congo - Kinshasa"
+ },
+ "CK": {
+ "name": "Cook Islands"
+ },
+ "CR": {
+ "name": "Costa Rica"
+ },
+ "CI": {
+ "name": "Côte d’Ivoire"
+ },
+ "HR": {
+ "name": "Croatia"
+ },
+ "CU": {
+ "name": "Cuba"
+ },
+ "CW": {
+ "name": "Curaçao"
+ },
+ "CY": {
+ "name": "Cyprus"
+ },
+ "CZ": {
+ "name": "Czech Republic"
+ },
+ "DK": {
+ "name": "Denmark"
+ },
+ "DG": {
+ "name": "Diego Garcia"
+ },
+ "DJ": {
+ "name": "Djibouti"
+ },
+ "DM": {
+ "name": "Dominica"
+ },
+ "DO": {
+ "name": "Dominican Republic"
+ },
+ "EC": {
+ "name": "Ecuador"
+ },
+ "EG": {
+ "name": "Egypt"
+ },
+ "SV": {
+ "name": "El Salvador"
+ },
+ "GQ": {
+ "name": "Equatorial Guinea"
+ },
+ "ER": {
+ "name": "Eritrea"
+ },
+ "EE": {
+ "name": "Estonia"
+ },
+ "ET": {
+ "name": "Ethiopia"
+ },
+ "FK": {
+ "name": "Falkland Islands"
+ },
+ "FO": {
+ "name": "Faroe Islands"
+ },
+ "FJ": {
+ "name": "Fiji"
+ },
+ "FI": {
+ "name": "Finland"
+ },
+ "FR": {
+ "name": "France"
+ },
+ "GF": {
+ "name": "French Guiana"
+ },
+ "PF": {
+ "name": "French Polynesia"
+ },
+ "TF": {
+ "name": "French Southern Territories"
+ },
+ "GA": {
+ "name": "Gabon"
+ },
+ "GM": {
+ "name": "Gambia"
+ },
+ "GE": {
+ "name": "Georgia"
+ },
+ "DE": {
+ "name": "Germany"
+ },
+ "GH": {
+ "name": "Ghana"
+ },
+ "GI": {
+ "name": "Gibraltar"
+ },
+ "GR": {
+ "name": "Greece"
+ },
+ "GL": {
+ "name": "Greenland"
+ },
+ "GD": {
+ "name": "Grenada"
+ },
+ "GP": {
+ "name": "Guadeloupe"
+ },
+ "GU": {
+ "name": "Guam"
+ },
+ "GT": {
+ "name": "Guatemala"
+ },
+ "GG": {
+ "name": "Guernsey"
+ },
+ "GN": {
+ "name": "Guinea"
+ },
+ "GW": {
+ "name": "Guinea-Bissau"
+ },
+ "GY": {
+ "name": "Guyana"
+ },
+ "HT": {
+ "name": "Haiti"
+ },
+ "HN": {
+ "name": "Honduras"
+ },
+ "HK": {
+ "name": "Hong Kong SAR China"
+ },
+ "HU": {
+ "name": "Hungary"
+ },
+ "IS": {
+ "name": "Iceland"
+ },
+ "IN": {
+ "name": "India"
+ },
+ "ID": {
+ "name": "Indonesia"
+ },
+ "IR": {
+ "name": "Iran"
+ },
+ "IQ": {
+ "name": "Iraq"
+ },
+ "IE": {
+ "name": "Ireland"
+ },
+ "IM": {
+ "name": "Isle of Man"
+ },
+ "IL": {
+ "name": "Israel"
+ },
+ "IT": {
+ "name": "Italy"
+ },
+ "JM": {
+ "name": "Jamaica"
+ },
+ "JP": {
+ "name": "Japan"
+ },
+ "JE": {
+ "name": "Jersey"
+ },
+ "JO": {
+ "name": "Jordan"
+ },
+ "KZ": {
+ "name": "Kazakhstan"
+ },
+ "KE": {
+ "name": "Kenya"
+ },
+ "KI": {
+ "name": "Kiribati"
+ },
+ "XK": {
+ "name": "Kosovo"
+ },
+ "KW": {
+ "name": "Kuwait"
+ },
+ "KG": {
+ "name": "Kyrgyzstan"
+ },
+ "LA": {
+ "name": "Laos"
+ },
+ "LV": {
+ "name": "Latvia"
+ },
+ "LB": {
+ "name": "Lebanon"
+ },
+ "LS": {
+ "name": "Lesotho"
+ },
+ "LR": {
+ "name": "Liberia"
+ },
+ "LY": {
+ "name": "Libya"
+ },
+ "LI": {
+ "name": "Liechtenstein"
+ },
+ "LT": {
+ "name": "Lithuania"
+ },
+ "LU": {
+ "name": "Luxembourg"
+ },
+ "MO": {
+ "name": "Macau SAR China"
+ },
+ "MK": {
+ "name": "Macedonia"
+ },
+ "MG": {
+ "name": "Madagascar"
+ },
+ "MW": {
+ "name": "Malawi"
+ },
+ "MY": {
+ "name": "Malaysia"
+ },
+ "MV": {
+ "name": "Maldives"
+ },
+ "ML": {
+ "name": "Mali"
+ },
+ "MT": {
+ "name": "Malta"
+ },
+ "MH": {
+ "name": "Marshall Islands"
+ },
+ "MQ": {
+ "name": "Martinique"
+ },
+ "MR": {
+ "name": "Mauritania"
+ },
+ "MU": {
+ "name": "Mauritius"
+ },
+ "YT": {
+ "name": "Mayotte"
+ },
+ "MX": {
+ "name": "Mexico"
+ },
+ "FM": {
+ "name": "Micronesia"
+ },
+ "MD": {
+ "name": "Moldova"
+ },
+ "MC": {
+ "name": "Monaco"
+ },
+ "MN": {
+ "name": "Mongolia"
+ },
+ "ME": {
+ "name": "Montenegro"
+ },
+ "MS": {
+ "name": "Montserrat"
+ },
+ "MA": {
+ "name": "Morocco"
+ },
+ "MZ": {
+ "name": "Mozambique"
+ },
+ "MM": {
+ "name": "Myanmar (Burma)"
+ },
+ "NA": {
+ "name": "Namibia"
+ },
+ "NR": {
+ "name": "Nauru"
+ },
+ "NP": {
+ "name": "Nepal"
+ },
+ "NL": {
+ "name": "Netherlands"
+ },
+ "NC": {
+ "name": "New Caledonia"
+ },
+ "NZ": {
+ "name": "New Zealand"
+ },
+ "NI": {
+ "name": "Nicaragua"
+ },
+ "NE": {
+ "name": "Niger"
+ },
+ "NG": {
+ "name": "Nigeria"
+ },
+ "NU": {
+ "name": "Niue"
+ },
+ "NF": {
+ "name": "Norfolk Island"
+ },
+ "KP": {
+ "name": "North Korea"
+ },
+ "MP": {
+ "name": "Northern Mariana Islands"
+ },
+ "NO": {
+ "name": "Norway"
+ },
+ "OM": {
+ "name": "Oman"
+ },
+ "PK": {
+ "name": "Pakistan"
+ },
+ "PW": {
+ "name": "Palau"
+ },
+ "PS": {
+ "name": "Palestinian Territories"
+ },
+ "PA": {
+ "name": "Panama"
+ },
+ "PG": {
+ "name": "Papua New Guinea"
+ },
+ "PY": {
+ "name": "Paraguay"
+ },
+ "PE": {
+ "name": "Peru"
+ },
+ "PH": {
+ "name": "Philippines"
+ },
+ "PN": {
+ "name": "Pitcairn Islands"
+ },
+ "PL": {
+ "name": "Poland"
+ },
+ "PT": {
+ "name": "Portugal"
+ },
+ "PR": {
+ "name": "Puerto Rico"
+ },
+ "QA": {
+ "name": "Qatar"
+ },
+ "RE": {
+ "name": "Réunion"
+ },
+ "RO": {
+ "name": "Romania"
+ },
+ "RU": {
+ "name": "Russia"
+ },
+ "RW": {
+ "name": "Rwanda"
+ },
+ "WS": {
+ "name": "Samoa"
+ },
+ "SM": {
+ "name": "San Marino"
+ },
+ "ST": {
+ "name": "São Tomé & Príncipe"
+ },
+ "SA": {
+ "name": "Saudi Arabia"
+ },
+ "SN": {
+ "name": "Senegal"
+ },
+ "RS": {
+ "name": "Serbia"
+ },
+ "SC": {
+ "name": "Seychelles"
+ },
+ "SL": {
+ "name": "Sierra Leone"
+ },
+ "SG": {
+ "name": "Singapore"
+ },
+ "SX": {
+ "name": "Sint Maarten"
+ },
+ "SK": {
+ "name": "Slovakia"
+ },
+ "SI": {
+ "name": "Slovenia"
+ },
+ "SB": {
+ "name": "Solomon Islands"
+ },
+ "SO": {
+ "name": "Somalia"
+ },
+ "ZA": {
+ "name": "South Africa"
+ },
+ "GS": {
+ "name": "South Georgia & South Sandwich Islands"
+ },
+ "KR": {
+ "name": "South Korea"
+ },
+ "SS": {
+ "name": "South Sudan"
+ },
+ "ES": {
+ "name": "Spain"
+ },
+ "LK": {
+ "name": "Sri Lanka"
+ },
+ "BL": {
+ "name": "St. Barthélemy"
+ },
+ "SH": {
+ "name": "St. Helena"
+ },
+ "KN": {
+ "name": "St. Kitts & Nevis"
+ },
+ "LC": {
+ "name": "St. Lucia"
+ },
+ "MF": {
+ "name": "St. Martin"
+ },
+ "PM": {
+ "name": "St. Pierre & Miquelon"
+ },
+ "VC": {
+ "name": "St. Vincent & Grenadines"
+ },
+ "SD": {
+ "name": "Sudan"
+ },
+ "SR": {
+ "name": "Suriname"
+ },
+ "SJ": {
+ "name": "Svalbard & Jan Mayen"
+ },
+ "SZ": {
+ "name": "Swaziland"
+ },
+ "SE": {
+ "name": "Sweden"
+ },
+ "CH": {
+ "name": "Switzerland"
+ },
+ "SY": {
+ "name": "Syria"
+ },
+ "TW": {
+ "name": "Taiwan"
+ },
+ "TJ": {
+ "name": "Tajikistan"
+ },
+ "TZ": {
+ "name": "Tanzania"
+ },
+ "TH": {
+ "name": "Thailand"
+ },
+ "TL": {
+ "name": "Timor-Leste"
+ },
+ "TG": {
+ "name": "Togo"
+ },
+ "TK": {
+ "name": "Tokelau"
+ },
+ "TO": {
+ "name": "Tonga"
+ },
+ "TT": {
+ "name": "Trinidad & Tobago"
+ },
+ "TA": {
+ "name": "Tristan da Cunha"
+ },
+ "TN": {
+ "name": "Tunisia"
+ },
+ "TR": {
+ "name": "Turkey"
+ },
+ "TM": {
+ "name": "Turkmenistan"
+ },
+ "TC": {
+ "name": "Turks & Caicos Islands"
+ },
+ "TV": {
+ "name": "Tuvalu"
+ },
+ "UM": {
+ "name": "U.S. Outlying Islands"
+ },
+ "VI": {
+ "name": "U.S. Virgin Islands"
+ },
+ "UG": {
+ "name": "Uganda"
+ },
+ "UA": {
+ "name": "Ukraine"
+ },
+ "AE": {
+ "name": "United Arab Emirates"
+ },
+ "GB": {
+ "name": "United Kingdom"
+ },
+ "US": {
+ "name": "United States"
+ },
+ "UY": {
+ "name": "Uruguay"
+ },
+ "UZ": {
+ "name": "Uzbekistan"
+ },
+ "VU": {
+ "name": "Vanuatu"
+ },
+ "VA": {
+ "name": "Vatican City"
+ },
+ "VE": {
+ "name": "Venezuela"
+ },
+ "VN": {
+ "name": "Vietnam"
+ },
+ "WF": {
+ "name": "Wallis & Futuna"
+ },
+ "EH": {
+ "name": "Western Sahara"
+ },
+ "YE": {
+ "name": "Yemen"
+ },
+ "ZM": {
+ "name": "Zambia"
+ },
+ "ZW": {
+ "name": "Zimbabwe"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/country/eo.json b/library/intl/resources/country/eo.json
new file mode 100644
index 000000000..8d760b59d
--- /dev/null
+++ b/library/intl/resources/country/eo.json
@@ -0,0 +1,761 @@
+{
+ "AF": {
+ "name": "Afganujo"
+ },
+ "AX": {
+ "name": "Ã…land Islands"
+ },
+ "AL": {
+ "name": "Albanujo"
+ },
+ "DZ": {
+ "name": "AlÄerio"
+ },
+ "AS": {
+ "name": "American Samoa"
+ },
+ "AD": {
+ "name": "Andoro"
+ },
+ "AO": {
+ "name": "Angolo"
+ },
+ "AI": {
+ "name": "Angvilo"
+ },
+ "AQ": {
+ "name": "Antarkto"
+ },
+ "AG": {
+ "name": "Antigvo-Barbudo"
+ },
+ "AR": {
+ "name": "Argentino"
+ },
+ "AM": {
+ "name": "Armenujo"
+ },
+ "AW": {
+ "name": "Arubo"
+ },
+ "AC": {
+ "name": "Ascension Island"
+ },
+ "AU": {
+ "name": "AÅ­stralio"
+ },
+ "AT": {
+ "name": "AÅ­strujo"
+ },
+ "AZ": {
+ "name": "AzerbajÄano"
+ },
+ "BS": {
+ "name": "Bahamoj"
+ },
+ "BD": {
+ "name": "BangladeÅo"
+ },
+ "BB": {
+ "name": "Barbado"
+ },
+ "BH": {
+ "name": "Barejno"
+ },
+ "PW": {
+ "name": "BelaÅ­o"
+ },
+ "BE": {
+ "name": "Belgujo"
+ },
+ "BZ": {
+ "name": "Belizo"
+ },
+ "BY": {
+ "name": "Belorusujo"
+ },
+ "BJ": {
+ "name": "Benino"
+ },
+ "BM": {
+ "name": "Bermudoj"
+ },
+ "BW": {
+ "name": "Bocvano"
+ },
+ "BO": {
+ "name": "Bolivio"
+ },
+ "BA": {
+ "name": "Bosnio-Hercegovino"
+ },
+ "BR": {
+ "name": "Brazilo"
+ },
+ "IO": {
+ "name": "Brita Hindoceana Teritorio"
+ },
+ "VG": {
+ "name": "Britaj Virgulininsuloj"
+ },
+ "BN": {
+ "name": "Brunejo"
+ },
+ "BG": {
+ "name": "Bulgarujo"
+ },
+ "BF": {
+ "name": "Burkino"
+ },
+ "BI": {
+ "name": "Burundo"
+ },
+ "BT": {
+ "name": "Butano"
+ },
+ "IC": {
+ "name": "Canary Islands"
+ },
+ "BQ": {
+ "name": "Caribbean Netherlands"
+ },
+ "CF": {
+ "name": "Centr-Afrika Respubliko"
+ },
+ "EA": {
+ "name": "Ceuta & Melilla"
+ },
+ "CX": {
+ "name": "Christmas Island"
+ },
+ "CC": {
+ "name": "Cocos (Keeling) Islands"
+ },
+ "CD": {
+ "name": "Congo - Kinshasa"
+ },
+ "CW": {
+ "name": "Curaçao"
+ },
+ "TD": {
+ "name": "Ĉado"
+ },
+ "CZ": {
+ "name": "Ĉeĥujo"
+ },
+ "CL": {
+ "name": "Ĉilio"
+ },
+ "CN": {
+ "name": "Ĉinujo"
+ },
+ "DK": {
+ "name": "Danujo"
+ },
+ "DG": {
+ "name": "Diego Garcia"
+ },
+ "DO": {
+ "name": "Domingo"
+ },
+ "DM": {
+ "name": "Dominiko"
+ },
+ "CI": {
+ "name": "Ebur-Bordo"
+ },
+ "EG": {
+ "name": "Egipto"
+ },
+ "EC": {
+ "name": "Ekvadoro"
+ },
+ "GQ": {
+ "name": "Ekvatora Gvineo"
+ },
+ "ER": {
+ "name": "Eritreo"
+ },
+ "EE": {
+ "name": "Estonujo"
+ },
+ "ET": {
+ "name": "Etiopujo"
+ },
+ "FK": {
+ "name": "Falkland Islands"
+ },
+ "FO": {
+ "name": "Ferooj"
+ },
+ "FJ": {
+ "name": "FiÄoj"
+ },
+ "PH": {
+ "name": "Filipinoj"
+ },
+ "FI": {
+ "name": "Finnlando"
+ },
+ "GF": {
+ "name": "Franca Gviano"
+ },
+ "PF": {
+ "name": "Franca Polinezio"
+ },
+ "FR": {
+ "name": "Francujo"
+ },
+ "TF": {
+ "name": "French Southern Territories"
+ },
+ "GA": {
+ "name": "Gabono"
+ },
+ "GM": {
+ "name": "Gambio"
+ },
+ "GH": {
+ "name": "Ganao"
+ },
+ "DE": {
+ "name": "Germanujo"
+ },
+ "GR": {
+ "name": "Grekujo"
+ },
+ "GD": {
+ "name": "Grenado"
+ },
+ "GL": {
+ "name": "Gronlando"
+ },
+ "GG": {
+ "name": "Guernsey"
+ },
+ "GY": {
+ "name": "Gujano"
+ },
+ "GP": {
+ "name": "Gvadelupo"
+ },
+ "GU": {
+ "name": "Gvamo"
+ },
+ "GT": {
+ "name": "Gvatemalo"
+ },
+ "GN": {
+ "name": "Gvineo"
+ },
+ "GW": {
+ "name": "Gvineo-BisaÅ­o"
+ },
+ "GI": {
+ "name": "Äœibraltaro"
+ },
+ "DJ": {
+ "name": "Äœibutio"
+ },
+ "HT": {
+ "name": "Haitio"
+ },
+ "IN": {
+ "name": "Hindujo"
+ },
+ "ES": {
+ "name": "Hispanujo"
+ },
+ "HN": {
+ "name": "Honduro"
+ },
+ "HK": {
+ "name": "Honkongo"
+ },
+ "HU": {
+ "name": "Hungarujo"
+ },
+ "ID": {
+ "name": "Indonezio"
+ },
+ "IQ": {
+ "name": "Irako"
+ },
+ "IR": {
+ "name": "Irano"
+ },
+ "IE": {
+ "name": "Irlando"
+ },
+ "IS": {
+ "name": "Islando"
+ },
+ "IM": {
+ "name": "Isle of Man"
+ },
+ "IL": {
+ "name": "Israelo"
+ },
+ "IT": {
+ "name": "Italujo"
+ },
+ "JM": {
+ "name": "Jamajko"
+ },
+ "JP": {
+ "name": "Japanujo"
+ },
+ "YE": {
+ "name": "Jemeno"
+ },
+ "JE": {
+ "name": "Jersey"
+ },
+ "JO": {
+ "name": "Jordanio"
+ },
+ "CV": {
+ "name": "Kabo-Verdo"
+ },
+ "KH": {
+ "name": "KamboÄo"
+ },
+ "CM": {
+ "name": "Kameruno"
+ },
+ "CA": {
+ "name": "Kanado"
+ },
+ "GE": {
+ "name": "Kartvelujo"
+ },
+ "QA": {
+ "name": "Kataro"
+ },
+ "KZ": {
+ "name": "Kazaĥstano"
+ },
+ "KY": {
+ "name": "Kejmanoj"
+ },
+ "KE": {
+ "name": "Kenjo"
+ },
+ "CY": {
+ "name": "Kipro"
+ },
+ "KG": {
+ "name": "Kirgizistano"
+ },
+ "KI": {
+ "name": "Kiribato"
+ },
+ "CO": {
+ "name": "Kolombio"
+ },
+ "KM": {
+ "name": "Komoroj"
+ },
+ "CG": {
+ "name": "Kongolo"
+ },
+ "XK": {
+ "name": "Kosovo"
+ },
+ "CR": {
+ "name": "Kostariko"
+ },
+ "HR": {
+ "name": "Kroatujo"
+ },
+ "CU": {
+ "name": "Kubo"
+ },
+ "CK": {
+ "name": "Kukinsuloj"
+ },
+ "KW": {
+ "name": "Kuvajto"
+ },
+ "LA": {
+ "name": "Laoso"
+ },
+ "LV": {
+ "name": "Latvujo"
+ },
+ "LS": {
+ "name": "Lesoto"
+ },
+ "LB": {
+ "name": "Libano"
+ },
+ "LR": {
+ "name": "Liberio"
+ },
+ "LY": {
+ "name": "Libio"
+ },
+ "LI": {
+ "name": "LiÄ¥tenÅtejno"
+ },
+ "LT": {
+ "name": "Litovujo"
+ },
+ "LU": {
+ "name": "Luksemburgo"
+ },
+ "MO": {
+ "name": "Macau SAR China"
+ },
+ "MG": {
+ "name": "Madagaskaro"
+ },
+ "YT": {
+ "name": "Majoto"
+ },
+ "MK": {
+ "name": "Makedonujo"
+ },
+ "MY": {
+ "name": "Malajzio"
+ },
+ "MW": {
+ "name": "Malavio"
+ },
+ "MV": {
+ "name": "Maldivoj"
+ },
+ "ML": {
+ "name": "Malio"
+ },
+ "MT": {
+ "name": "Malto"
+ },
+ "MA": {
+ "name": "Maroko"
+ },
+ "MH": {
+ "name": "MarÅaloj"
+ },
+ "MQ": {
+ "name": "Martiniko"
+ },
+ "MU": {
+ "name": "MaÅ­ricio"
+ },
+ "MR": {
+ "name": "MaÅ­ritanujo"
+ },
+ "MX": {
+ "name": "Meksiko"
+ },
+ "FM": {
+ "name": "Mikronezio"
+ },
+ "MM": {
+ "name": "Mjanmao"
+ },
+ "MD": {
+ "name": "Moldavujo"
+ },
+ "MC": {
+ "name": "Monako"
+ },
+ "MN": {
+ "name": "Mongolujo"
+ },
+ "ME": {
+ "name": "Montenegro"
+ },
+ "MS": {
+ "name": "Montserrat"
+ },
+ "MZ": {
+ "name": "Mozambiko"
+ },
+ "NA": {
+ "name": "Namibio"
+ },
+ "NR": {
+ "name": "Nauro"
+ },
+ "NL": {
+ "name": "Nederlando"
+ },
+ "NP": {
+ "name": "Nepalo"
+ },
+ "NG": {
+ "name": "NiÄerio"
+ },
+ "NE": {
+ "name": "NiÄero"
+ },
+ "NI": {
+ "name": "Nikaragvo"
+ },
+ "NU": {
+ "name": "Niuo"
+ },
+ "KP": {
+ "name": "Nord-Koreo"
+ },
+ "MP": {
+ "name": "Nord-Marianoj"
+ },
+ "NF": {
+ "name": "Norfolkinsulo"
+ },
+ "NO": {
+ "name": "Norvegujo"
+ },
+ "NC": {
+ "name": "Nov-Kaledonio"
+ },
+ "NZ": {
+ "name": "Nov-Zelando"
+ },
+ "EH": {
+ "name": "Okcidenta Saharo"
+ },
+ "OM": {
+ "name": "Omano"
+ },
+ "PK": {
+ "name": "Pakistano"
+ },
+ "PS": {
+ "name": "Palestinian Territories"
+ },
+ "PA": {
+ "name": "Panamo"
+ },
+ "PG": {
+ "name": "Papuo-Nov-Gvineo"
+ },
+ "PY": {
+ "name": "Paragvajo"
+ },
+ "PE": {
+ "name": "Peruo"
+ },
+ "PN": {
+ "name": "Pitkarna Insulo"
+ },
+ "PL": {
+ "name": "Pollando"
+ },
+ "PT": {
+ "name": "Portugalujo"
+ },
+ "PR": {
+ "name": "Puerto-Riko"
+ },
+ "RE": {
+ "name": "Reunio"
+ },
+ "RW": {
+ "name": "Ruando"
+ },
+ "RO": {
+ "name": "Rumanujo"
+ },
+ "RU": {
+ "name": "Rusujo"
+ },
+ "SB": {
+ "name": "Salomonoj"
+ },
+ "SV": {
+ "name": "Salvadoro"
+ },
+ "WS": {
+ "name": "Samoo"
+ },
+ "SM": {
+ "name": "San-Marino"
+ },
+ "ST": {
+ "name": "Sao-Tomeo kaj Principeo"
+ },
+ "SA": {
+ "name": "SaÅ­da Arabujo"
+ },
+ "SC": {
+ "name": "SejÅeloj"
+ },
+ "SN": {
+ "name": "Senegalo"
+ },
+ "SH": {
+ "name": "Sent-Heleno"
+ },
+ "KN": {
+ "name": "Sent-Kristofo kaj Neviso"
+ },
+ "LC": {
+ "name": "Sent-Lucio"
+ },
+ "PM": {
+ "name": "Sent-Piero kaj Mikelono"
+ },
+ "VC": {
+ "name": "Sent-Vincento kaj la Grenadinoj"
+ },
+ "RS": {
+ "name": "Serbia"
+ },
+ "SL": {
+ "name": "Siera-Leono"
+ },
+ "SG": {
+ "name": "Singapuro"
+ },
+ "SX": {
+ "name": "Sint Maarten"
+ },
+ "SY": {
+ "name": "Sirio"
+ },
+ "SK": {
+ "name": "Slovakujo"
+ },
+ "SI": {
+ "name": "Slovenujo"
+ },
+ "SO": {
+ "name": "Somalujo"
+ },
+ "LK": {
+ "name": "Sri-Lanko"
+ },
+ "BL": {
+ "name": "St. Barthélemy"
+ },
+ "MF": {
+ "name": "St. Martin"
+ },
+ "ZA": {
+ "name": "Sud-Afriko"
+ },
+ "GS": {
+ "name": "Sud-Georgio kaj Sud-Sandviĉinsuloj"
+ },
+ "KR": {
+ "name": "Sud-Koreo"
+ },
+ "SS": {
+ "name": "Sud-Sudano"
+ },
+ "SD": {
+ "name": "Sudano"
+ },
+ "SR": {
+ "name": "Surinamo"
+ },
+ "SJ": {
+ "name": "Svalbardo kaj Jan-Majen-insulo"
+ },
+ "SZ": {
+ "name": "Svazilando"
+ },
+ "SE": {
+ "name": "Svedujo"
+ },
+ "CH": {
+ "name": "Svisujo"
+ },
+ "TJ": {
+ "name": "TaÄikujo"
+ },
+ "TH": {
+ "name": "Tajlando"
+ },
+ "TW": {
+ "name": "Tajvano"
+ },
+ "TZ": {
+ "name": "Tanzanio"
+ },
+ "TL": {
+ "name": "Timor-Leste"
+ },
+ "TG": {
+ "name": "Togolo"
+ },
+ "TK": {
+ "name": "Tokelau"
+ },
+ "TO": {
+ "name": "Tongo"
+ },
+ "TT": {
+ "name": "Trinidado kaj Tobago"
+ },
+ "TA": {
+ "name": "Tristan da Cunha"
+ },
+ "TN": {
+ "name": "Tunizio"
+ },
+ "TM": {
+ "name": "Turkmenujo"
+ },
+ "TC": {
+ "name": "Turks & Caicos Islands"
+ },
+ "TR": {
+ "name": "Turkujo"
+ },
+ "TV": {
+ "name": "Tuvalo"
+ },
+ "UG": {
+ "name": "Ugando"
+ },
+ "UA": {
+ "name": "Ukrajno"
+ },
+ "GB": {
+ "name": "UnuiÄinta ReÄlando"
+ },
+ "AE": {
+ "name": "UnuiÄintaj Arabaj Emirlandos"
+ },
+ "UY": {
+ "name": "Urugvajo"
+ },
+ "UM": {
+ "name": "Usonaj malgrandaj insuloj"
+ },
+ "VI": {
+ "name": "Usonaj Virgulininsuloj"
+ },
+ "US": {
+ "name": "Usono"
+ },
+ "UZ": {
+ "name": "Uzbekujo"
+ },
+ "WF": {
+ "name": "Valiso kaj Futuno"
+ },
+ "VU": {
+ "name": "Vanuatuo"
+ },
+ "VA": {
+ "name": "Vatikano"
+ },
+ "VE": {
+ "name": "Venezuelo"
+ },
+ "VN": {
+ "name": "Vjetnamo"
+ },
+ "ZM": {
+ "name": "Zambio"
+ },
+ "ZW": {
+ "name": "Zimbabvo"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/country/es-AR.json b/library/intl/resources/country/es-AR.json
new file mode 100644
index 000000000..6a02f5aec
--- /dev/null
+++ b/library/intl/resources/country/es-AR.json
@@ -0,0 +1,761 @@
+{
+ "AF": {
+ "name": "Afganistán"
+ },
+ "AL": {
+ "name": "Albania"
+ },
+ "DE": {
+ "name": "Alemania"
+ },
+ "AD": {
+ "name": "Andorra"
+ },
+ "AO": {
+ "name": "Angola"
+ },
+ "AI": {
+ "name": "Anguila"
+ },
+ "AQ": {
+ "name": "Antártida"
+ },
+ "AG": {
+ "name": "Antigua y Barbuda"
+ },
+ "SA": {
+ "name": "Arabia Saudí"
+ },
+ "DZ": {
+ "name": "Argelia"
+ },
+ "AR": {
+ "name": "Argentina"
+ },
+ "AM": {
+ "name": "Armenia"
+ },
+ "AW": {
+ "name": "Aruba"
+ },
+ "AU": {
+ "name": "Australia"
+ },
+ "AT": {
+ "name": "Austria"
+ },
+ "AZ": {
+ "name": "Azerbaiyán"
+ },
+ "BS": {
+ "name": "Bahamas"
+ },
+ "BD": {
+ "name": "Bangladés"
+ },
+ "BB": {
+ "name": "Barbados"
+ },
+ "BH": {
+ "name": "Baréin"
+ },
+ "BE": {
+ "name": "Bélgica"
+ },
+ "BZ": {
+ "name": "Belice"
+ },
+ "BJ": {
+ "name": "Benín"
+ },
+ "BM": {
+ "name": "Bermudas"
+ },
+ "BY": {
+ "name": "Bielorrusia"
+ },
+ "BO": {
+ "name": "Bolivia"
+ },
+ "BA": {
+ "name": "Bosnia y Herzegovina"
+ },
+ "BW": {
+ "name": "Botsuana"
+ },
+ "BR": {
+ "name": "Brasil"
+ },
+ "BN": {
+ "name": "Brunéi"
+ },
+ "BG": {
+ "name": "Bulgaria"
+ },
+ "BF": {
+ "name": "Burkina Faso"
+ },
+ "BI": {
+ "name": "Burundi"
+ },
+ "BT": {
+ "name": "Bután"
+ },
+ "CV": {
+ "name": "Cabo Verde"
+ },
+ "KH": {
+ "name": "Camboya"
+ },
+ "CM": {
+ "name": "Camerún"
+ },
+ "CA": {
+ "name": "Canadá"
+ },
+ "BQ": {
+ "name": "Caribe neerlandés"
+ },
+ "QA": {
+ "name": "Catar"
+ },
+ "EA": {
+ "name": "Ceuta y Melilla"
+ },
+ "TD": {
+ "name": "Chad"
+ },
+ "CL": {
+ "name": "Chile"
+ },
+ "CN": {
+ "name": "China"
+ },
+ "CY": {
+ "name": "Chipre"
+ },
+ "VA": {
+ "name": "Ciudad del Vaticano"
+ },
+ "CO": {
+ "name": "Colombia"
+ },
+ "KM": {
+ "name": "Comoras"
+ },
+ "KP": {
+ "name": "Corea del Norte"
+ },
+ "KR": {
+ "name": "Corea del Sur"
+ },
+ "CI": {
+ "name": "Costa de Marfil"
+ },
+ "CR": {
+ "name": "Costa Rica"
+ },
+ "HR": {
+ "name": "Croacia"
+ },
+ "CU": {
+ "name": "Cuba"
+ },
+ "CW": {
+ "name": "Curazao"
+ },
+ "DG": {
+ "name": "Diego García"
+ },
+ "DK": {
+ "name": "Dinamarca"
+ },
+ "DM": {
+ "name": "Dominica"
+ },
+ "EC": {
+ "name": "Ecuador"
+ },
+ "EG": {
+ "name": "Egipto"
+ },
+ "SV": {
+ "name": "El Salvador"
+ },
+ "AE": {
+ "name": "Emiratos Ãrabes Unidos"
+ },
+ "ER": {
+ "name": "Eritrea"
+ },
+ "SK": {
+ "name": "Eslovaquia"
+ },
+ "SI": {
+ "name": "Eslovenia"
+ },
+ "ES": {
+ "name": "España"
+ },
+ "US": {
+ "name": "Estados Unidos"
+ },
+ "EE": {
+ "name": "Estonia"
+ },
+ "ET": {
+ "name": "Etiopía"
+ },
+ "PH": {
+ "name": "Filipinas"
+ },
+ "FI": {
+ "name": "Finlandia"
+ },
+ "FJ": {
+ "name": "Fiyi"
+ },
+ "FR": {
+ "name": "Francia"
+ },
+ "GA": {
+ "name": "Gabón"
+ },
+ "GM": {
+ "name": "Gambia"
+ },
+ "GE": {
+ "name": "Georgia"
+ },
+ "GH": {
+ "name": "Ghana"
+ },
+ "GI": {
+ "name": "Gibraltar"
+ },
+ "GD": {
+ "name": "Granada"
+ },
+ "GR": {
+ "name": "Grecia"
+ },
+ "GL": {
+ "name": "Groenlandia"
+ },
+ "GP": {
+ "name": "Guadalupe"
+ },
+ "GU": {
+ "name": "Guam"
+ },
+ "GT": {
+ "name": "Guatemala"
+ },
+ "GF": {
+ "name": "Guayana Francesa"
+ },
+ "GG": {
+ "name": "Guernesey"
+ },
+ "GN": {
+ "name": "Guinea"
+ },
+ "GQ": {
+ "name": "Guinea Ecuatorial"
+ },
+ "GW": {
+ "name": "Guinea-Bisáu"
+ },
+ "GY": {
+ "name": "Guyana"
+ },
+ "HT": {
+ "name": "Haití"
+ },
+ "HN": {
+ "name": "Honduras"
+ },
+ "HU": {
+ "name": "Hungría"
+ },
+ "IN": {
+ "name": "India"
+ },
+ "ID": {
+ "name": "Indonesia"
+ },
+ "IQ": {
+ "name": "Irak"
+ },
+ "IR": {
+ "name": "Irán"
+ },
+ "IE": {
+ "name": "Irlanda"
+ },
+ "AC": {
+ "name": "Isla Ascensión"
+ },
+ "CX": {
+ "name": "Isla Christmas"
+ },
+ "IM": {
+ "name": "Isla de Man"
+ },
+ "NF": {
+ "name": "Isla Norfolk"
+ },
+ "IS": {
+ "name": "Islandia"
+ },
+ "AX": {
+ "name": "Islas Ã…land"
+ },
+ "KY": {
+ "name": "Islas Caimán"
+ },
+ "IC": {
+ "name": "islas Canarias"
+ },
+ "CC": {
+ "name": "Islas Cocos"
+ },
+ "CK": {
+ "name": "Islas Cook"
+ },
+ "FO": {
+ "name": "Islas Feroe"
+ },
+ "GS": {
+ "name": "Islas Georgia del Sur y Sandwich del Sur"
+ },
+ "FK": {
+ "name": "Islas Malvinas"
+ },
+ "MP": {
+ "name": "Islas Marianas del Norte"
+ },
+ "MH": {
+ "name": "Islas Marshall"
+ },
+ "UM": {
+ "name": "Islas menores alejadas de EE. UU."
+ },
+ "PN": {
+ "name": "Islas Pitcairn"
+ },
+ "SB": {
+ "name": "Islas Salomón"
+ },
+ "TC": {
+ "name": "Islas Turcas y Caicos"
+ },
+ "VG": {
+ "name": "Islas Vírgenes Británicas"
+ },
+ "VI": {
+ "name": "Islas Vírgenes de EE. UU."
+ },
+ "IL": {
+ "name": "Israel"
+ },
+ "IT": {
+ "name": "Italia"
+ },
+ "JM": {
+ "name": "Jamaica"
+ },
+ "JP": {
+ "name": "Japón"
+ },
+ "JE": {
+ "name": "Jersey"
+ },
+ "JO": {
+ "name": "Jordania"
+ },
+ "KZ": {
+ "name": "Kazajistán"
+ },
+ "KE": {
+ "name": "Kenia"
+ },
+ "KG": {
+ "name": "Kirguistán"
+ },
+ "KI": {
+ "name": "Kiribati"
+ },
+ "XK": {
+ "name": "Kosovo"
+ },
+ "KW": {
+ "name": "Kuwait"
+ },
+ "LA": {
+ "name": "Laos"
+ },
+ "LS": {
+ "name": "Lesoto"
+ },
+ "LV": {
+ "name": "Letonia"
+ },
+ "LB": {
+ "name": "Líbano"
+ },
+ "LR": {
+ "name": "Liberia"
+ },
+ "LY": {
+ "name": "Libia"
+ },
+ "LI": {
+ "name": "Liechtenstein"
+ },
+ "LT": {
+ "name": "Lituania"
+ },
+ "LU": {
+ "name": "Luxemburgo"
+ },
+ "MK": {
+ "name": "Macedonia"
+ },
+ "MG": {
+ "name": "Madagascar"
+ },
+ "MY": {
+ "name": "Malasia"
+ },
+ "MW": {
+ "name": "Malaui"
+ },
+ "MV": {
+ "name": "Maldivas"
+ },
+ "ML": {
+ "name": "Mali"
+ },
+ "MT": {
+ "name": "Malta"
+ },
+ "MA": {
+ "name": "Marruecos"
+ },
+ "MQ": {
+ "name": "Martinica"
+ },
+ "MU": {
+ "name": "Mauricio"
+ },
+ "MR": {
+ "name": "Mauritania"
+ },
+ "YT": {
+ "name": "Mayotte"
+ },
+ "MX": {
+ "name": "México"
+ },
+ "FM": {
+ "name": "Micronesia"
+ },
+ "MD": {
+ "name": "Moldavia"
+ },
+ "MC": {
+ "name": "Mónaco"
+ },
+ "MN": {
+ "name": "Mongolia"
+ },
+ "ME": {
+ "name": "Montenegro"
+ },
+ "MS": {
+ "name": "Montserrat"
+ },
+ "MZ": {
+ "name": "Mozambique"
+ },
+ "MM": {
+ "name": "Myanmar (Birmania)"
+ },
+ "NA": {
+ "name": "Namibia"
+ },
+ "NR": {
+ "name": "Nauru"
+ },
+ "NP": {
+ "name": "Nepal"
+ },
+ "NI": {
+ "name": "Nicaragua"
+ },
+ "NE": {
+ "name": "Níger"
+ },
+ "NG": {
+ "name": "Nigeria"
+ },
+ "NU": {
+ "name": "Niue"
+ },
+ "NO": {
+ "name": "Noruega"
+ },
+ "NC": {
+ "name": "Nueva Caledonia"
+ },
+ "NZ": {
+ "name": "Nueva Zelanda"
+ },
+ "OM": {
+ "name": "Omán"
+ },
+ "NL": {
+ "name": "Países Bajos"
+ },
+ "PK": {
+ "name": "Pakistán"
+ },
+ "PW": {
+ "name": "Palau"
+ },
+ "PA": {
+ "name": "Panamá"
+ },
+ "PG": {
+ "name": "Papúa Nueva Guinea"
+ },
+ "PY": {
+ "name": "Paraguay"
+ },
+ "PE": {
+ "name": "Perú"
+ },
+ "PF": {
+ "name": "Polinesia Francesa"
+ },
+ "PL": {
+ "name": "Polonia"
+ },
+ "PT": {
+ "name": "Portugal"
+ },
+ "PR": {
+ "name": "Puerto Rico"
+ },
+ "HK": {
+ "name": "RAE de Hong Kong (China)"
+ },
+ "MO": {
+ "name": "RAE de Macao (China)"
+ },
+ "GB": {
+ "name": "Reino Unido"
+ },
+ "CF": {
+ "name": "República Centroafricana"
+ },
+ "CZ": {
+ "name": "República Checa"
+ },
+ "CG": {
+ "name": "República del Congo"
+ },
+ "CD": {
+ "name": "República Democrática del Congo"
+ },
+ "DO": {
+ "name": "República Dominicana"
+ },
+ "RE": {
+ "name": "Reunión"
+ },
+ "RW": {
+ "name": "Ruanda"
+ },
+ "RO": {
+ "name": "Rumanía"
+ },
+ "RU": {
+ "name": "Rusia"
+ },
+ "EH": {
+ "name": "Sáhara Occidental"
+ },
+ "WS": {
+ "name": "Samoa"
+ },
+ "AS": {
+ "name": "Samoa Americana"
+ },
+ "BL": {
+ "name": "San Bartolomé"
+ },
+ "KN": {
+ "name": "San Cristóbal y Nieves"
+ },
+ "SM": {
+ "name": "San Marino"
+ },
+ "MF": {
+ "name": "San Martín"
+ },
+ "PM": {
+ "name": "San Pedro y Miquelón"
+ },
+ "VC": {
+ "name": "San Vicente y las Granadinas"
+ },
+ "SH": {
+ "name": "Santa Elena"
+ },
+ "LC": {
+ "name": "Santa Lucía"
+ },
+ "ST": {
+ "name": "Santo Tomé y Príncipe"
+ },
+ "SN": {
+ "name": "Senegal"
+ },
+ "RS": {
+ "name": "Serbia"
+ },
+ "SC": {
+ "name": "Seychelles"
+ },
+ "SL": {
+ "name": "Sierra Leona"
+ },
+ "SG": {
+ "name": "Singapur"
+ },
+ "SX": {
+ "name": "Sint Maarten"
+ },
+ "SY": {
+ "name": "Siria"
+ },
+ "SO": {
+ "name": "Somalia"
+ },
+ "LK": {
+ "name": "Sri Lanka"
+ },
+ "SZ": {
+ "name": "Suazilandia"
+ },
+ "ZA": {
+ "name": "Sudáfrica"
+ },
+ "SD": {
+ "name": "Sudán"
+ },
+ "SS": {
+ "name": "Sudán del Sur"
+ },
+ "SE": {
+ "name": "Suecia"
+ },
+ "CH": {
+ "name": "Suiza"
+ },
+ "SR": {
+ "name": "Surinam"
+ },
+ "SJ": {
+ "name": "Svalbard y Jan Mayen"
+ },
+ "TH": {
+ "name": "Tailandia"
+ },
+ "TW": {
+ "name": "Taiwán"
+ },
+ "TZ": {
+ "name": "Tanzania"
+ },
+ "TJ": {
+ "name": "Tayikistán"
+ },
+ "IO": {
+ "name": "Territorio Británico del Océano Ãndico"
+ },
+ "TF": {
+ "name": "Territorios Australes Franceses"
+ },
+ "PS": {
+ "name": "Territorios Palestinos"
+ },
+ "TL": {
+ "name": "Timor Oriental"
+ },
+ "TG": {
+ "name": "Togo"
+ },
+ "TK": {
+ "name": "Tokelau"
+ },
+ "TO": {
+ "name": "Tonga"
+ },
+ "TT": {
+ "name": "Trinidad y Tobago"
+ },
+ "TA": {
+ "name": "Tristán da Cunha"
+ },
+ "TN": {
+ "name": "Túnez"
+ },
+ "TM": {
+ "name": "Turkmenistán"
+ },
+ "TR": {
+ "name": "Turquía"
+ },
+ "TV": {
+ "name": "Tuvalu"
+ },
+ "UA": {
+ "name": "Ucrania"
+ },
+ "UG": {
+ "name": "Uganda"
+ },
+ "UY": {
+ "name": "Uruguay"
+ },
+ "UZ": {
+ "name": "Uzbekistán"
+ },
+ "VU": {
+ "name": "Vanuatu"
+ },
+ "VE": {
+ "name": "Venezuela"
+ },
+ "VN": {
+ "name": "Vietnam"
+ },
+ "WF": {
+ "name": "Wallis y Futuna"
+ },
+ "YE": {
+ "name": "Yemen"
+ },
+ "DJ": {
+ "name": "Yibuti"
+ },
+ "ZM": {
+ "name": "Zambia"
+ },
+ "ZW": {
+ "name": "Zimbabue"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/country/es-BO.json b/library/intl/resources/country/es-BO.json
new file mode 100644
index 000000000..6a02f5aec
--- /dev/null
+++ b/library/intl/resources/country/es-BO.json
@@ -0,0 +1,761 @@
+{
+ "AF": {
+ "name": "Afganistán"
+ },
+ "AL": {
+ "name": "Albania"
+ },
+ "DE": {
+ "name": "Alemania"
+ },
+ "AD": {
+ "name": "Andorra"
+ },
+ "AO": {
+ "name": "Angola"
+ },
+ "AI": {
+ "name": "Anguila"
+ },
+ "AQ": {
+ "name": "Antártida"
+ },
+ "AG": {
+ "name": "Antigua y Barbuda"
+ },
+ "SA": {
+ "name": "Arabia Saudí"
+ },
+ "DZ": {
+ "name": "Argelia"
+ },
+ "AR": {
+ "name": "Argentina"
+ },
+ "AM": {
+ "name": "Armenia"
+ },
+ "AW": {
+ "name": "Aruba"
+ },
+ "AU": {
+ "name": "Australia"
+ },
+ "AT": {
+ "name": "Austria"
+ },
+ "AZ": {
+ "name": "Azerbaiyán"
+ },
+ "BS": {
+ "name": "Bahamas"
+ },
+ "BD": {
+ "name": "Bangladés"
+ },
+ "BB": {
+ "name": "Barbados"
+ },
+ "BH": {
+ "name": "Baréin"
+ },
+ "BE": {
+ "name": "Bélgica"
+ },
+ "BZ": {
+ "name": "Belice"
+ },
+ "BJ": {
+ "name": "Benín"
+ },
+ "BM": {
+ "name": "Bermudas"
+ },
+ "BY": {
+ "name": "Bielorrusia"
+ },
+ "BO": {
+ "name": "Bolivia"
+ },
+ "BA": {
+ "name": "Bosnia y Herzegovina"
+ },
+ "BW": {
+ "name": "Botsuana"
+ },
+ "BR": {
+ "name": "Brasil"
+ },
+ "BN": {
+ "name": "Brunéi"
+ },
+ "BG": {
+ "name": "Bulgaria"
+ },
+ "BF": {
+ "name": "Burkina Faso"
+ },
+ "BI": {
+ "name": "Burundi"
+ },
+ "BT": {
+ "name": "Bután"
+ },
+ "CV": {
+ "name": "Cabo Verde"
+ },
+ "KH": {
+ "name": "Camboya"
+ },
+ "CM": {
+ "name": "Camerún"
+ },
+ "CA": {
+ "name": "Canadá"
+ },
+ "BQ": {
+ "name": "Caribe neerlandés"
+ },
+ "QA": {
+ "name": "Catar"
+ },
+ "EA": {
+ "name": "Ceuta y Melilla"
+ },
+ "TD": {
+ "name": "Chad"
+ },
+ "CL": {
+ "name": "Chile"
+ },
+ "CN": {
+ "name": "China"
+ },
+ "CY": {
+ "name": "Chipre"
+ },
+ "VA": {
+ "name": "Ciudad del Vaticano"
+ },
+ "CO": {
+ "name": "Colombia"
+ },
+ "KM": {
+ "name": "Comoras"
+ },
+ "KP": {
+ "name": "Corea del Norte"
+ },
+ "KR": {
+ "name": "Corea del Sur"
+ },
+ "CI": {
+ "name": "Costa de Marfil"
+ },
+ "CR": {
+ "name": "Costa Rica"
+ },
+ "HR": {
+ "name": "Croacia"
+ },
+ "CU": {
+ "name": "Cuba"
+ },
+ "CW": {
+ "name": "Curazao"
+ },
+ "DG": {
+ "name": "Diego García"
+ },
+ "DK": {
+ "name": "Dinamarca"
+ },
+ "DM": {
+ "name": "Dominica"
+ },
+ "EC": {
+ "name": "Ecuador"
+ },
+ "EG": {
+ "name": "Egipto"
+ },
+ "SV": {
+ "name": "El Salvador"
+ },
+ "AE": {
+ "name": "Emiratos Ãrabes Unidos"
+ },
+ "ER": {
+ "name": "Eritrea"
+ },
+ "SK": {
+ "name": "Eslovaquia"
+ },
+ "SI": {
+ "name": "Eslovenia"
+ },
+ "ES": {
+ "name": "España"
+ },
+ "US": {
+ "name": "Estados Unidos"
+ },
+ "EE": {
+ "name": "Estonia"
+ },
+ "ET": {
+ "name": "Etiopía"
+ },
+ "PH": {
+ "name": "Filipinas"
+ },
+ "FI": {
+ "name": "Finlandia"
+ },
+ "FJ": {
+ "name": "Fiyi"
+ },
+ "FR": {
+ "name": "Francia"
+ },
+ "GA": {
+ "name": "Gabón"
+ },
+ "GM": {
+ "name": "Gambia"
+ },
+ "GE": {
+ "name": "Georgia"
+ },
+ "GH": {
+ "name": "Ghana"
+ },
+ "GI": {
+ "name": "Gibraltar"
+ },
+ "GD": {
+ "name": "Granada"
+ },
+ "GR": {
+ "name": "Grecia"
+ },
+ "GL": {
+ "name": "Groenlandia"
+ },
+ "GP": {
+ "name": "Guadalupe"
+ },
+ "GU": {
+ "name": "Guam"
+ },
+ "GT": {
+ "name": "Guatemala"
+ },
+ "GF": {
+ "name": "Guayana Francesa"
+ },
+ "GG": {
+ "name": "Guernesey"
+ },
+ "GN": {
+ "name": "Guinea"
+ },
+ "GQ": {
+ "name": "Guinea Ecuatorial"
+ },
+ "GW": {
+ "name": "Guinea-Bisáu"
+ },
+ "GY": {
+ "name": "Guyana"
+ },
+ "HT": {
+ "name": "Haití"
+ },
+ "HN": {
+ "name": "Honduras"
+ },
+ "HU": {
+ "name": "Hungría"
+ },
+ "IN": {
+ "name": "India"
+ },
+ "ID": {
+ "name": "Indonesia"
+ },
+ "IQ": {
+ "name": "Irak"
+ },
+ "IR": {
+ "name": "Irán"
+ },
+ "IE": {
+ "name": "Irlanda"
+ },
+ "AC": {
+ "name": "Isla Ascensión"
+ },
+ "CX": {
+ "name": "Isla Christmas"
+ },
+ "IM": {
+ "name": "Isla de Man"
+ },
+ "NF": {
+ "name": "Isla Norfolk"
+ },
+ "IS": {
+ "name": "Islandia"
+ },
+ "AX": {
+ "name": "Islas Ã…land"
+ },
+ "KY": {
+ "name": "Islas Caimán"
+ },
+ "IC": {
+ "name": "islas Canarias"
+ },
+ "CC": {
+ "name": "Islas Cocos"
+ },
+ "CK": {
+ "name": "Islas Cook"
+ },
+ "FO": {
+ "name": "Islas Feroe"
+ },
+ "GS": {
+ "name": "Islas Georgia del Sur y Sandwich del Sur"
+ },
+ "FK": {
+ "name": "Islas Malvinas"
+ },
+ "MP": {
+ "name": "Islas Marianas del Norte"
+ },
+ "MH": {
+ "name": "Islas Marshall"
+ },
+ "UM": {
+ "name": "Islas menores alejadas de EE. UU."
+ },
+ "PN": {
+ "name": "Islas Pitcairn"
+ },
+ "SB": {
+ "name": "Islas Salomón"
+ },
+ "TC": {
+ "name": "Islas Turcas y Caicos"
+ },
+ "VG": {
+ "name": "Islas Vírgenes Británicas"
+ },
+ "VI": {
+ "name": "Islas Vírgenes de EE. UU."
+ },
+ "IL": {
+ "name": "Israel"
+ },
+ "IT": {
+ "name": "Italia"
+ },
+ "JM": {
+ "name": "Jamaica"
+ },
+ "JP": {
+ "name": "Japón"
+ },
+ "JE": {
+ "name": "Jersey"
+ },
+ "JO": {
+ "name": "Jordania"
+ },
+ "KZ": {
+ "name": "Kazajistán"
+ },
+ "KE": {
+ "name": "Kenia"
+ },
+ "KG": {
+ "name": "Kirguistán"
+ },
+ "KI": {
+ "name": "Kiribati"
+ },
+ "XK": {
+ "name": "Kosovo"
+ },
+ "KW": {
+ "name": "Kuwait"
+ },
+ "LA": {
+ "name": "Laos"
+ },
+ "LS": {
+ "name": "Lesoto"
+ },
+ "LV": {
+ "name": "Letonia"
+ },
+ "LB": {
+ "name": "Líbano"
+ },
+ "LR": {
+ "name": "Liberia"
+ },
+ "LY": {
+ "name": "Libia"
+ },
+ "LI": {
+ "name": "Liechtenstein"
+ },
+ "LT": {
+ "name": "Lituania"
+ },
+ "LU": {
+ "name": "Luxemburgo"
+ },
+ "MK": {
+ "name": "Macedonia"
+ },
+ "MG": {
+ "name": "Madagascar"
+ },
+ "MY": {
+ "name": "Malasia"
+ },
+ "MW": {
+ "name": "Malaui"
+ },
+ "MV": {
+ "name": "Maldivas"
+ },
+ "ML": {
+ "name": "Mali"
+ },
+ "MT": {
+ "name": "Malta"
+ },
+ "MA": {
+ "name": "Marruecos"
+ },
+ "MQ": {
+ "name": "Martinica"
+ },
+ "MU": {
+ "name": "Mauricio"
+ },
+ "MR": {
+ "name": "Mauritania"
+ },
+ "YT": {
+ "name": "Mayotte"
+ },
+ "MX": {
+ "name": "México"
+ },
+ "FM": {
+ "name": "Micronesia"
+ },
+ "MD": {
+ "name": "Moldavia"
+ },
+ "MC": {
+ "name": "Mónaco"
+ },
+ "MN": {
+ "name": "Mongolia"
+ },
+ "ME": {
+ "name": "Montenegro"
+ },
+ "MS": {
+ "name": "Montserrat"
+ },
+ "MZ": {
+ "name": "Mozambique"
+ },
+ "MM": {
+ "name": "Myanmar (Birmania)"
+ },
+ "NA": {
+ "name": "Namibia"
+ },
+ "NR": {
+ "name": "Nauru"
+ },
+ "NP": {
+ "name": "Nepal"
+ },
+ "NI": {
+ "name": "Nicaragua"
+ },
+ "NE": {
+ "name": "Níger"
+ },
+ "NG": {
+ "name": "Nigeria"
+ },
+ "NU": {
+ "name": "Niue"
+ },
+ "NO": {
+ "name": "Noruega"
+ },
+ "NC": {
+ "name": "Nueva Caledonia"
+ },
+ "NZ": {
+ "name": "Nueva Zelanda"
+ },
+ "OM": {
+ "name": "Omán"
+ },
+ "NL": {
+ "name": "Países Bajos"
+ },
+ "PK": {
+ "name": "Pakistán"
+ },
+ "PW": {
+ "name": "Palau"
+ },
+ "PA": {
+ "name": "Panamá"
+ },
+ "PG": {
+ "name": "Papúa Nueva Guinea"
+ },
+ "PY": {
+ "name": "Paraguay"
+ },
+ "PE": {
+ "name": "Perú"
+ },
+ "PF": {
+ "name": "Polinesia Francesa"
+ },
+ "PL": {
+ "name": "Polonia"
+ },
+ "PT": {
+ "name": "Portugal"
+ },
+ "PR": {
+ "name": "Puerto Rico"
+ },
+ "HK": {
+ "name": "RAE de Hong Kong (China)"
+ },
+ "MO": {
+ "name": "RAE de Macao (China)"
+ },
+ "GB": {
+ "name": "Reino Unido"
+ },
+ "CF": {
+ "name": "República Centroafricana"
+ },
+ "CZ": {
+ "name": "República Checa"
+ },
+ "CG": {
+ "name": "República del Congo"
+ },
+ "CD": {
+ "name": "República Democrática del Congo"
+ },
+ "DO": {
+ "name": "República Dominicana"
+ },
+ "RE": {
+ "name": "Reunión"
+ },
+ "RW": {
+ "name": "Ruanda"
+ },
+ "RO": {
+ "name": "Rumanía"
+ },
+ "RU": {
+ "name": "Rusia"
+ },
+ "EH": {
+ "name": "Sáhara Occidental"
+ },
+ "WS": {
+ "name": "Samoa"
+ },
+ "AS": {
+ "name": "Samoa Americana"
+ },
+ "BL": {
+ "name": "San Bartolomé"
+ },
+ "KN": {
+ "name": "San Cristóbal y Nieves"
+ },
+ "SM": {
+ "name": "San Marino"
+ },
+ "MF": {
+ "name": "San Martín"
+ },
+ "PM": {
+ "name": "San Pedro y Miquelón"
+ },
+ "VC": {
+ "name": "San Vicente y las Granadinas"
+ },
+ "SH": {
+ "name": "Santa Elena"
+ },
+ "LC": {
+ "name": "Santa Lucía"
+ },
+ "ST": {
+ "name": "Santo Tomé y Príncipe"
+ },
+ "SN": {
+ "name": "Senegal"
+ },
+ "RS": {
+ "name": "Serbia"
+ },
+ "SC": {
+ "name": "Seychelles"
+ },
+ "SL": {
+ "name": "Sierra Leona"
+ },
+ "SG": {
+ "name": "Singapur"
+ },
+ "SX": {
+ "name": "Sint Maarten"
+ },
+ "SY": {
+ "name": "Siria"
+ },
+ "SO": {
+ "name": "Somalia"
+ },
+ "LK": {
+ "name": "Sri Lanka"
+ },
+ "SZ": {
+ "name": "Suazilandia"
+ },
+ "ZA": {
+ "name": "Sudáfrica"
+ },
+ "SD": {
+ "name": "Sudán"
+ },
+ "SS": {
+ "name": "Sudán del Sur"
+ },
+ "SE": {
+ "name": "Suecia"
+ },
+ "CH": {
+ "name": "Suiza"
+ },
+ "SR": {
+ "name": "Surinam"
+ },
+ "SJ": {
+ "name": "Svalbard y Jan Mayen"
+ },
+ "TH": {
+ "name": "Tailandia"
+ },
+ "TW": {
+ "name": "Taiwán"
+ },
+ "TZ": {
+ "name": "Tanzania"
+ },
+ "TJ": {
+ "name": "Tayikistán"
+ },
+ "IO": {
+ "name": "Territorio Británico del Océano Ãndico"
+ },
+ "TF": {
+ "name": "Territorios Australes Franceses"
+ },
+ "PS": {
+ "name": "Territorios Palestinos"
+ },
+ "TL": {
+ "name": "Timor Oriental"
+ },
+ "TG": {
+ "name": "Togo"
+ },
+ "TK": {
+ "name": "Tokelau"
+ },
+ "TO": {
+ "name": "Tonga"
+ },
+ "TT": {
+ "name": "Trinidad y Tobago"
+ },
+ "TA": {
+ "name": "Tristán da Cunha"
+ },
+ "TN": {
+ "name": "Túnez"
+ },
+ "TM": {
+ "name": "Turkmenistán"
+ },
+ "TR": {
+ "name": "Turquía"
+ },
+ "TV": {
+ "name": "Tuvalu"
+ },
+ "UA": {
+ "name": "Ucrania"
+ },
+ "UG": {
+ "name": "Uganda"
+ },
+ "UY": {
+ "name": "Uruguay"
+ },
+ "UZ": {
+ "name": "Uzbekistán"
+ },
+ "VU": {
+ "name": "Vanuatu"
+ },
+ "VE": {
+ "name": "Venezuela"
+ },
+ "VN": {
+ "name": "Vietnam"
+ },
+ "WF": {
+ "name": "Wallis y Futuna"
+ },
+ "YE": {
+ "name": "Yemen"
+ },
+ "DJ": {
+ "name": "Yibuti"
+ },
+ "ZM": {
+ "name": "Zambia"
+ },
+ "ZW": {
+ "name": "Zimbabue"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/country/es-CL.json b/library/intl/resources/country/es-CL.json
new file mode 100644
index 000000000..3d5e8080b
--- /dev/null
+++ b/library/intl/resources/country/es-CL.json
@@ -0,0 +1,761 @@
+{
+ "AF": {
+ "name": "Afganistán"
+ },
+ "AL": {
+ "name": "Albania"
+ },
+ "DE": {
+ "name": "Alemania"
+ },
+ "AD": {
+ "name": "Andorra"
+ },
+ "AO": {
+ "name": "Angola"
+ },
+ "AI": {
+ "name": "Anguila"
+ },
+ "AQ": {
+ "name": "Antártida"
+ },
+ "AG": {
+ "name": "Antigua y Barbuda"
+ },
+ "SA": {
+ "name": "Arabia Saudita"
+ },
+ "DZ": {
+ "name": "Argelia"
+ },
+ "AR": {
+ "name": "Argentina"
+ },
+ "AM": {
+ "name": "Armenia"
+ },
+ "AW": {
+ "name": "Aruba"
+ },
+ "AU": {
+ "name": "Australia"
+ },
+ "AT": {
+ "name": "Austria"
+ },
+ "AZ": {
+ "name": "Azerbayán"
+ },
+ "BS": {
+ "name": "Bahamas"
+ },
+ "BD": {
+ "name": "Bangladesh"
+ },
+ "BB": {
+ "name": "Barbados"
+ },
+ "BH": {
+ "name": "Baréin"
+ },
+ "BE": {
+ "name": "Bélgica"
+ },
+ "BZ": {
+ "name": "Belice"
+ },
+ "BJ": {
+ "name": "Benín"
+ },
+ "BM": {
+ "name": "Bermudas"
+ },
+ "BY": {
+ "name": "Bielorrusia"
+ },
+ "BO": {
+ "name": "Bolivia"
+ },
+ "BA": {
+ "name": "Bosnia y Herzegovina"
+ },
+ "BW": {
+ "name": "Botsuana"
+ },
+ "BR": {
+ "name": "Brasil"
+ },
+ "BN": {
+ "name": "Brunéi"
+ },
+ "BG": {
+ "name": "Bulgaria"
+ },
+ "BF": {
+ "name": "Burkina Faso"
+ },
+ "BI": {
+ "name": "Burundi"
+ },
+ "BT": {
+ "name": "Bután"
+ },
+ "CV": {
+ "name": "Cabo Verde"
+ },
+ "KH": {
+ "name": "Camboya"
+ },
+ "CM": {
+ "name": "Camerún"
+ },
+ "CA": {
+ "name": "Canadá"
+ },
+ "BQ": {
+ "name": "Caribe neerlandés"
+ },
+ "QA": {
+ "name": "Catar"
+ },
+ "EA": {
+ "name": "Ceuta y Melilla"
+ },
+ "TD": {
+ "name": "Chad"
+ },
+ "CL": {
+ "name": "Chile"
+ },
+ "CN": {
+ "name": "China"
+ },
+ "CY": {
+ "name": "Chipre"
+ },
+ "VA": {
+ "name": "Ciudad del Vaticano"
+ },
+ "CO": {
+ "name": "Colombia"
+ },
+ "KM": {
+ "name": "Comoras"
+ },
+ "KP": {
+ "name": "Corea del Norte"
+ },
+ "KR": {
+ "name": "Corea del Sur"
+ },
+ "CI": {
+ "name": "Costa de Marfil"
+ },
+ "CR": {
+ "name": "Costa Rica"
+ },
+ "HR": {
+ "name": "Croacia"
+ },
+ "CU": {
+ "name": "Cuba"
+ },
+ "CW": {
+ "name": "Curazao"
+ },
+ "DG": {
+ "name": "Diego García"
+ },
+ "DK": {
+ "name": "Dinamarca"
+ },
+ "DM": {
+ "name": "Dominica"
+ },
+ "EC": {
+ "name": "Ecuador"
+ },
+ "EG": {
+ "name": "Egipto"
+ },
+ "SV": {
+ "name": "El Salvador"
+ },
+ "AE": {
+ "name": "Emiratos Ãrabes Unidos"
+ },
+ "ER": {
+ "name": "Eritrea"
+ },
+ "SK": {
+ "name": "Eslovaquia"
+ },
+ "SI": {
+ "name": "Eslovenia"
+ },
+ "ES": {
+ "name": "España"
+ },
+ "US": {
+ "name": "Estados Unidos"
+ },
+ "EE": {
+ "name": "Estonia"
+ },
+ "ET": {
+ "name": "Etiopía"
+ },
+ "PH": {
+ "name": "Filipinas"
+ },
+ "FI": {
+ "name": "Finlandia"
+ },
+ "FJ": {
+ "name": "Fiyi"
+ },
+ "FR": {
+ "name": "Francia"
+ },
+ "GA": {
+ "name": "Gabón"
+ },
+ "GM": {
+ "name": "Gambia"
+ },
+ "GE": {
+ "name": "Georgia"
+ },
+ "GH": {
+ "name": "Ghana"
+ },
+ "GI": {
+ "name": "Gibraltar"
+ },
+ "GD": {
+ "name": "Granada"
+ },
+ "GR": {
+ "name": "Grecia"
+ },
+ "GL": {
+ "name": "Groenlandia"
+ },
+ "GP": {
+ "name": "Guadalupe"
+ },
+ "GU": {
+ "name": "Guam"
+ },
+ "GT": {
+ "name": "Guatemala"
+ },
+ "GF": {
+ "name": "Guayana Francesa"
+ },
+ "GG": {
+ "name": "Guernesey"
+ },
+ "GN": {
+ "name": "Guinea"
+ },
+ "GQ": {
+ "name": "Guinea Ecuatorial"
+ },
+ "GW": {
+ "name": "Guinea-Bisáu"
+ },
+ "GY": {
+ "name": "Guyana"
+ },
+ "HT": {
+ "name": "Haití"
+ },
+ "HN": {
+ "name": "Honduras"
+ },
+ "HU": {
+ "name": "Hungría"
+ },
+ "IN": {
+ "name": "India"
+ },
+ "ID": {
+ "name": "Indonesia"
+ },
+ "IQ": {
+ "name": "Irak"
+ },
+ "IR": {
+ "name": "Irán"
+ },
+ "IE": {
+ "name": "Irlanda"
+ },
+ "AC": {
+ "name": "Isla Ascensión"
+ },
+ "CX": {
+ "name": "Isla Christmas"
+ },
+ "IM": {
+ "name": "Isla de Man"
+ },
+ "NF": {
+ "name": "Isla Norfolk"
+ },
+ "IS": {
+ "name": "Islandia"
+ },
+ "AX": {
+ "name": "Islas Ã…land"
+ },
+ "KY": {
+ "name": "Islas Caimán"
+ },
+ "IC": {
+ "name": "islas Canarias"
+ },
+ "CC": {
+ "name": "Islas Cocos"
+ },
+ "CK": {
+ "name": "Islas Cook"
+ },
+ "FO": {
+ "name": "Islas Feroe"
+ },
+ "GS": {
+ "name": "Islas Georgia del Sur y Sandwich del Sur"
+ },
+ "FK": {
+ "name": "Islas Malvinas"
+ },
+ "MP": {
+ "name": "Islas Marianas del Norte"
+ },
+ "MH": {
+ "name": "Islas Marshall"
+ },
+ "UM": {
+ "name": "Islas menores alejadas de EE. UU."
+ },
+ "PN": {
+ "name": "Islas Pitcairn"
+ },
+ "SB": {
+ "name": "Islas Salomón"
+ },
+ "TC": {
+ "name": "Islas Turcas y Caicos"
+ },
+ "VG": {
+ "name": "Islas Vírgenes Británicas"
+ },
+ "VI": {
+ "name": "Islas Vírgenes de EE. UU."
+ },
+ "IL": {
+ "name": "Israel"
+ },
+ "IT": {
+ "name": "Italia"
+ },
+ "JM": {
+ "name": "Jamaica"
+ },
+ "JP": {
+ "name": "Japón"
+ },
+ "JE": {
+ "name": "Jersey"
+ },
+ "JO": {
+ "name": "Jordania"
+ },
+ "KZ": {
+ "name": "Kazajistán"
+ },
+ "KE": {
+ "name": "Kenia"
+ },
+ "KG": {
+ "name": "Kirguistán"
+ },
+ "KI": {
+ "name": "Kiribati"
+ },
+ "XK": {
+ "name": "Kosovo"
+ },
+ "KW": {
+ "name": "Kuwait"
+ },
+ "LA": {
+ "name": "Laos"
+ },
+ "LS": {
+ "name": "Lesoto"
+ },
+ "LV": {
+ "name": "Letonia"
+ },
+ "LB": {
+ "name": "Líbano"
+ },
+ "LR": {
+ "name": "Liberia"
+ },
+ "LY": {
+ "name": "Libia"
+ },
+ "LI": {
+ "name": "Liechtenstein"
+ },
+ "LT": {
+ "name": "Lituania"
+ },
+ "LU": {
+ "name": "Luxemburgo"
+ },
+ "MK": {
+ "name": "Macedonia"
+ },
+ "MG": {
+ "name": "Madagascar"
+ },
+ "MY": {
+ "name": "Malasia"
+ },
+ "MW": {
+ "name": "Malaui"
+ },
+ "MV": {
+ "name": "Maldivas"
+ },
+ "ML": {
+ "name": "Mali"
+ },
+ "MT": {
+ "name": "Malta"
+ },
+ "MA": {
+ "name": "Marruecos"
+ },
+ "MQ": {
+ "name": "Martinica"
+ },
+ "MU": {
+ "name": "Mauricio"
+ },
+ "MR": {
+ "name": "Mauritania"
+ },
+ "YT": {
+ "name": "Mayotte"
+ },
+ "MX": {
+ "name": "México"
+ },
+ "FM": {
+ "name": "Micronesia"
+ },
+ "MD": {
+ "name": "Moldavia"
+ },
+ "MC": {
+ "name": "Mónaco"
+ },
+ "MN": {
+ "name": "Mongolia"
+ },
+ "ME": {
+ "name": "Montenegro"
+ },
+ "MS": {
+ "name": "Montserrat"
+ },
+ "MZ": {
+ "name": "Mozambique"
+ },
+ "MM": {
+ "name": "Myanmar (Birmania)"
+ },
+ "NA": {
+ "name": "Namibia"
+ },
+ "NR": {
+ "name": "Nauru"
+ },
+ "NP": {
+ "name": "Nepal"
+ },
+ "NI": {
+ "name": "Nicaragua"
+ },
+ "NE": {
+ "name": "Níger"
+ },
+ "NG": {
+ "name": "Nigeria"
+ },
+ "NU": {
+ "name": "Niue"
+ },
+ "NO": {
+ "name": "Noruega"
+ },
+ "NC": {
+ "name": "Nueva Caledonia"
+ },
+ "NZ": {
+ "name": "Nueva Zelanda"
+ },
+ "OM": {
+ "name": "Omán"
+ },
+ "NL": {
+ "name": "Países Bajos"
+ },
+ "PK": {
+ "name": "Pakistán"
+ },
+ "PW": {
+ "name": "Palau"
+ },
+ "PA": {
+ "name": "Panamá"
+ },
+ "PG": {
+ "name": "Papúa Nueva Guinea"
+ },
+ "PY": {
+ "name": "Paraguay"
+ },
+ "PE": {
+ "name": "Perú"
+ },
+ "PF": {
+ "name": "Polinesia Francesa"
+ },
+ "PL": {
+ "name": "Polonia"
+ },
+ "PT": {
+ "name": "Portugal"
+ },
+ "PR": {
+ "name": "Puerto Rico"
+ },
+ "HK": {
+ "name": "RAE de Hong Kong (China)"
+ },
+ "MO": {
+ "name": "RAE de Macao (China)"
+ },
+ "GB": {
+ "name": "Reino Unido"
+ },
+ "CF": {
+ "name": "República Centroafricana"
+ },
+ "CZ": {
+ "name": "República Checa"
+ },
+ "CG": {
+ "name": "República del Congo"
+ },
+ "CD": {
+ "name": "República Democrática del Congo"
+ },
+ "DO": {
+ "name": "República Dominicana"
+ },
+ "RE": {
+ "name": "Reunión"
+ },
+ "RW": {
+ "name": "Ruanda"
+ },
+ "RO": {
+ "name": "Rumania"
+ },
+ "RU": {
+ "name": "Rusia"
+ },
+ "EH": {
+ "name": "Sahara Occidental"
+ },
+ "WS": {
+ "name": "Samoa"
+ },
+ "AS": {
+ "name": "Samoa Americana"
+ },
+ "BL": {
+ "name": "San Bartolomé"
+ },
+ "KN": {
+ "name": "San Cristóbal y Nieves"
+ },
+ "SM": {
+ "name": "San Marino"
+ },
+ "MF": {
+ "name": "San Martín"
+ },
+ "PM": {
+ "name": "San Pedro y Miquelón"
+ },
+ "VC": {
+ "name": "San Vicente y las Granadinas"
+ },
+ "SH": {
+ "name": "Santa Elena"
+ },
+ "LC": {
+ "name": "Santa Lucía"
+ },
+ "ST": {
+ "name": "Santo Tomé y Príncipe"
+ },
+ "SN": {
+ "name": "Senegal"
+ },
+ "RS": {
+ "name": "Serbia"
+ },
+ "SC": {
+ "name": "Seychelles"
+ },
+ "SL": {
+ "name": "Sierra Leona"
+ },
+ "SG": {
+ "name": "Singapur"
+ },
+ "SX": {
+ "name": "Sint Maarten"
+ },
+ "SY": {
+ "name": "Siria"
+ },
+ "SO": {
+ "name": "Somalia"
+ },
+ "LK": {
+ "name": "Sri Lanka"
+ },
+ "SZ": {
+ "name": "Suazilandia"
+ },
+ "ZA": {
+ "name": "Sudáfrica"
+ },
+ "SD": {
+ "name": "Sudán"
+ },
+ "SS": {
+ "name": "Sudán del Sur"
+ },
+ "SE": {
+ "name": "Suecia"
+ },
+ "CH": {
+ "name": "Suiza"
+ },
+ "SR": {
+ "name": "Surinam"
+ },
+ "SJ": {
+ "name": "Svalbard y Jan Mayen"
+ },
+ "TH": {
+ "name": "Tailandia"
+ },
+ "TW": {
+ "name": "Taiwán"
+ },
+ "TZ": {
+ "name": "Tanzania"
+ },
+ "TJ": {
+ "name": "Tayikistán"
+ },
+ "IO": {
+ "name": "Territorio Británico del Océano Ãndico"
+ },
+ "PS": {
+ "name": "Territorio Palestino"
+ },
+ "TF": {
+ "name": "Territorios Australes Franceses"
+ },
+ "TL": {
+ "name": "Timor Oriental"
+ },
+ "TG": {
+ "name": "Togo"
+ },
+ "TK": {
+ "name": "Tokelau"
+ },
+ "TO": {
+ "name": "Tonga"
+ },
+ "TT": {
+ "name": "Trinidad y Tobago"
+ },
+ "TA": {
+ "name": "Tristán da Cunha"
+ },
+ "TN": {
+ "name": "Túnez"
+ },
+ "TM": {
+ "name": "Turkmenistán"
+ },
+ "TR": {
+ "name": "Turquía"
+ },
+ "TV": {
+ "name": "Tuvalu"
+ },
+ "UA": {
+ "name": "Ucrania"
+ },
+ "UG": {
+ "name": "Uganda"
+ },
+ "UY": {
+ "name": "Uruguay"
+ },
+ "UZ": {
+ "name": "Uzbekistán"
+ },
+ "VU": {
+ "name": "Vanuatu"
+ },
+ "VE": {
+ "name": "Venezuela"
+ },
+ "VN": {
+ "name": "Vietnam"
+ },
+ "WF": {
+ "name": "Wallis y Futuna"
+ },
+ "YE": {
+ "name": "Yemen"
+ },
+ "DJ": {
+ "name": "Yibuti"
+ },
+ "ZM": {
+ "name": "Zambia"
+ },
+ "ZW": {
+ "name": "Zimbabue"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/country/es-CO.json b/library/intl/resources/country/es-CO.json
new file mode 100644
index 000000000..6a02f5aec
--- /dev/null
+++ b/library/intl/resources/country/es-CO.json
@@ -0,0 +1,761 @@
+{
+ "AF": {
+ "name": "Afganistán"
+ },
+ "AL": {
+ "name": "Albania"
+ },
+ "DE": {
+ "name": "Alemania"
+ },
+ "AD": {
+ "name": "Andorra"
+ },
+ "AO": {
+ "name": "Angola"
+ },
+ "AI": {
+ "name": "Anguila"
+ },
+ "AQ": {
+ "name": "Antártida"
+ },
+ "AG": {
+ "name": "Antigua y Barbuda"
+ },
+ "SA": {
+ "name": "Arabia Saudí"
+ },
+ "DZ": {
+ "name": "Argelia"
+ },
+ "AR": {
+ "name": "Argentina"
+ },
+ "AM": {
+ "name": "Armenia"
+ },
+ "AW": {
+ "name": "Aruba"
+ },
+ "AU": {
+ "name": "Australia"
+ },
+ "AT": {
+ "name": "Austria"
+ },
+ "AZ": {
+ "name": "Azerbaiyán"
+ },
+ "BS": {
+ "name": "Bahamas"
+ },
+ "BD": {
+ "name": "Bangladés"
+ },
+ "BB": {
+ "name": "Barbados"
+ },
+ "BH": {
+ "name": "Baréin"
+ },
+ "BE": {
+ "name": "Bélgica"
+ },
+ "BZ": {
+ "name": "Belice"
+ },
+ "BJ": {
+ "name": "Benín"
+ },
+ "BM": {
+ "name": "Bermudas"
+ },
+ "BY": {
+ "name": "Bielorrusia"
+ },
+ "BO": {
+ "name": "Bolivia"
+ },
+ "BA": {
+ "name": "Bosnia y Herzegovina"
+ },
+ "BW": {
+ "name": "Botsuana"
+ },
+ "BR": {
+ "name": "Brasil"
+ },
+ "BN": {
+ "name": "Brunéi"
+ },
+ "BG": {
+ "name": "Bulgaria"
+ },
+ "BF": {
+ "name": "Burkina Faso"
+ },
+ "BI": {
+ "name": "Burundi"
+ },
+ "BT": {
+ "name": "Bután"
+ },
+ "CV": {
+ "name": "Cabo Verde"
+ },
+ "KH": {
+ "name": "Camboya"
+ },
+ "CM": {
+ "name": "Camerún"
+ },
+ "CA": {
+ "name": "Canadá"
+ },
+ "BQ": {
+ "name": "Caribe neerlandés"
+ },
+ "QA": {
+ "name": "Catar"
+ },
+ "EA": {
+ "name": "Ceuta y Melilla"
+ },
+ "TD": {
+ "name": "Chad"
+ },
+ "CL": {
+ "name": "Chile"
+ },
+ "CN": {
+ "name": "China"
+ },
+ "CY": {
+ "name": "Chipre"
+ },
+ "VA": {
+ "name": "Ciudad del Vaticano"
+ },
+ "CO": {
+ "name": "Colombia"
+ },
+ "KM": {
+ "name": "Comoras"
+ },
+ "KP": {
+ "name": "Corea del Norte"
+ },
+ "KR": {
+ "name": "Corea del Sur"
+ },
+ "CI": {
+ "name": "Costa de Marfil"
+ },
+ "CR": {
+ "name": "Costa Rica"
+ },
+ "HR": {
+ "name": "Croacia"
+ },
+ "CU": {
+ "name": "Cuba"
+ },
+ "CW": {
+ "name": "Curazao"
+ },
+ "DG": {
+ "name": "Diego García"
+ },
+ "DK": {
+ "name": "Dinamarca"
+ },
+ "DM": {
+ "name": "Dominica"
+ },
+ "EC": {
+ "name": "Ecuador"
+ },
+ "EG": {
+ "name": "Egipto"
+ },
+ "SV": {
+ "name": "El Salvador"
+ },
+ "AE": {
+ "name": "Emiratos Ãrabes Unidos"
+ },
+ "ER": {
+ "name": "Eritrea"
+ },
+ "SK": {
+ "name": "Eslovaquia"
+ },
+ "SI": {
+ "name": "Eslovenia"
+ },
+ "ES": {
+ "name": "España"
+ },
+ "US": {
+ "name": "Estados Unidos"
+ },
+ "EE": {
+ "name": "Estonia"
+ },
+ "ET": {
+ "name": "Etiopía"
+ },
+ "PH": {
+ "name": "Filipinas"
+ },
+ "FI": {
+ "name": "Finlandia"
+ },
+ "FJ": {
+ "name": "Fiyi"
+ },
+ "FR": {
+ "name": "Francia"
+ },
+ "GA": {
+ "name": "Gabón"
+ },
+ "GM": {
+ "name": "Gambia"
+ },
+ "GE": {
+ "name": "Georgia"
+ },
+ "GH": {
+ "name": "Ghana"
+ },
+ "GI": {
+ "name": "Gibraltar"
+ },
+ "GD": {
+ "name": "Granada"
+ },
+ "GR": {
+ "name": "Grecia"
+ },
+ "GL": {
+ "name": "Groenlandia"
+ },
+ "GP": {
+ "name": "Guadalupe"
+ },
+ "GU": {
+ "name": "Guam"
+ },
+ "GT": {
+ "name": "Guatemala"
+ },
+ "GF": {
+ "name": "Guayana Francesa"
+ },
+ "GG": {
+ "name": "Guernesey"
+ },
+ "GN": {
+ "name": "Guinea"
+ },
+ "GQ": {
+ "name": "Guinea Ecuatorial"
+ },
+ "GW": {
+ "name": "Guinea-Bisáu"
+ },
+ "GY": {
+ "name": "Guyana"
+ },
+ "HT": {
+ "name": "Haití"
+ },
+ "HN": {
+ "name": "Honduras"
+ },
+ "HU": {
+ "name": "Hungría"
+ },
+ "IN": {
+ "name": "India"
+ },
+ "ID": {
+ "name": "Indonesia"
+ },
+ "IQ": {
+ "name": "Irak"
+ },
+ "IR": {
+ "name": "Irán"
+ },
+ "IE": {
+ "name": "Irlanda"
+ },
+ "AC": {
+ "name": "Isla Ascensión"
+ },
+ "CX": {
+ "name": "Isla Christmas"
+ },
+ "IM": {
+ "name": "Isla de Man"
+ },
+ "NF": {
+ "name": "Isla Norfolk"
+ },
+ "IS": {
+ "name": "Islandia"
+ },
+ "AX": {
+ "name": "Islas Ã…land"
+ },
+ "KY": {
+ "name": "Islas Caimán"
+ },
+ "IC": {
+ "name": "islas Canarias"
+ },
+ "CC": {
+ "name": "Islas Cocos"
+ },
+ "CK": {
+ "name": "Islas Cook"
+ },
+ "FO": {
+ "name": "Islas Feroe"
+ },
+ "GS": {
+ "name": "Islas Georgia del Sur y Sandwich del Sur"
+ },
+ "FK": {
+ "name": "Islas Malvinas"
+ },
+ "MP": {
+ "name": "Islas Marianas del Norte"
+ },
+ "MH": {
+ "name": "Islas Marshall"
+ },
+ "UM": {
+ "name": "Islas menores alejadas de EE. UU."
+ },
+ "PN": {
+ "name": "Islas Pitcairn"
+ },
+ "SB": {
+ "name": "Islas Salomón"
+ },
+ "TC": {
+ "name": "Islas Turcas y Caicos"
+ },
+ "VG": {
+ "name": "Islas Vírgenes Británicas"
+ },
+ "VI": {
+ "name": "Islas Vírgenes de EE. UU."
+ },
+ "IL": {
+ "name": "Israel"
+ },
+ "IT": {
+ "name": "Italia"
+ },
+ "JM": {
+ "name": "Jamaica"
+ },
+ "JP": {
+ "name": "Japón"
+ },
+ "JE": {
+ "name": "Jersey"
+ },
+ "JO": {
+ "name": "Jordania"
+ },
+ "KZ": {
+ "name": "Kazajistán"
+ },
+ "KE": {
+ "name": "Kenia"
+ },
+ "KG": {
+ "name": "Kirguistán"
+ },
+ "KI": {
+ "name": "Kiribati"
+ },
+ "XK": {
+ "name": "Kosovo"
+ },
+ "KW": {
+ "name": "Kuwait"
+ },
+ "LA": {
+ "name": "Laos"
+ },
+ "LS": {
+ "name": "Lesoto"
+ },
+ "LV": {
+ "name": "Letonia"
+ },
+ "LB": {
+ "name": "Líbano"
+ },
+ "LR": {
+ "name": "Liberia"
+ },
+ "LY": {
+ "name": "Libia"
+ },
+ "LI": {
+ "name": "Liechtenstein"
+ },
+ "LT": {
+ "name": "Lituania"
+ },
+ "LU": {
+ "name": "Luxemburgo"
+ },
+ "MK": {
+ "name": "Macedonia"
+ },
+ "MG": {
+ "name": "Madagascar"
+ },
+ "MY": {
+ "name": "Malasia"
+ },
+ "MW": {
+ "name": "Malaui"
+ },
+ "MV": {
+ "name": "Maldivas"
+ },
+ "ML": {
+ "name": "Mali"
+ },
+ "MT": {
+ "name": "Malta"
+ },
+ "MA": {
+ "name": "Marruecos"
+ },
+ "MQ": {
+ "name": "Martinica"
+ },
+ "MU": {
+ "name": "Mauricio"
+ },
+ "MR": {
+ "name": "Mauritania"
+ },
+ "YT": {
+ "name": "Mayotte"
+ },
+ "MX": {
+ "name": "México"
+ },
+ "FM": {
+ "name": "Micronesia"
+ },
+ "MD": {
+ "name": "Moldavia"
+ },
+ "MC": {
+ "name": "Mónaco"
+ },
+ "MN": {
+ "name": "Mongolia"
+ },
+ "ME": {
+ "name": "Montenegro"
+ },
+ "MS": {
+ "name": "Montserrat"
+ },
+ "MZ": {
+ "name": "Mozambique"
+ },
+ "MM": {
+ "name": "Myanmar (Birmania)"
+ },
+ "NA": {
+ "name": "Namibia"
+ },
+ "NR": {
+ "name": "Nauru"
+ },
+ "NP": {
+ "name": "Nepal"
+ },
+ "NI": {
+ "name": "Nicaragua"
+ },
+ "NE": {
+ "name": "Níger"
+ },
+ "NG": {
+ "name": "Nigeria"
+ },
+ "NU": {
+ "name": "Niue"
+ },
+ "NO": {
+ "name": "Noruega"
+ },
+ "NC": {
+ "name": "Nueva Caledonia"
+ },
+ "NZ": {
+ "name": "Nueva Zelanda"
+ },
+ "OM": {
+ "name": "Omán"
+ },
+ "NL": {
+ "name": "Países Bajos"
+ },
+ "PK": {
+ "name": "Pakistán"
+ },
+ "PW": {
+ "name": "Palau"
+ },
+ "PA": {
+ "name": "Panamá"
+ },
+ "PG": {
+ "name": "Papúa Nueva Guinea"
+ },
+ "PY": {
+ "name": "Paraguay"
+ },
+ "PE": {
+ "name": "Perú"
+ },
+ "PF": {
+ "name": "Polinesia Francesa"
+ },
+ "PL": {
+ "name": "Polonia"
+ },
+ "PT": {
+ "name": "Portugal"
+ },
+ "PR": {
+ "name": "Puerto Rico"
+ },
+ "HK": {
+ "name": "RAE de Hong Kong (China)"
+ },
+ "MO": {
+ "name": "RAE de Macao (China)"
+ },
+ "GB": {
+ "name": "Reino Unido"
+ },
+ "CF": {
+ "name": "República Centroafricana"
+ },
+ "CZ": {
+ "name": "República Checa"
+ },
+ "CG": {
+ "name": "República del Congo"
+ },
+ "CD": {
+ "name": "República Democrática del Congo"
+ },
+ "DO": {
+ "name": "República Dominicana"
+ },
+ "RE": {
+ "name": "Reunión"
+ },
+ "RW": {
+ "name": "Ruanda"
+ },
+ "RO": {
+ "name": "Rumanía"
+ },
+ "RU": {
+ "name": "Rusia"
+ },
+ "EH": {
+ "name": "Sáhara Occidental"
+ },
+ "WS": {
+ "name": "Samoa"
+ },
+ "AS": {
+ "name": "Samoa Americana"
+ },
+ "BL": {
+ "name": "San Bartolomé"
+ },
+ "KN": {
+ "name": "San Cristóbal y Nieves"
+ },
+ "SM": {
+ "name": "San Marino"
+ },
+ "MF": {
+ "name": "San Martín"
+ },
+ "PM": {
+ "name": "San Pedro y Miquelón"
+ },
+ "VC": {
+ "name": "San Vicente y las Granadinas"
+ },
+ "SH": {
+ "name": "Santa Elena"
+ },
+ "LC": {
+ "name": "Santa Lucía"
+ },
+ "ST": {
+ "name": "Santo Tomé y Príncipe"
+ },
+ "SN": {
+ "name": "Senegal"
+ },
+ "RS": {
+ "name": "Serbia"
+ },
+ "SC": {
+ "name": "Seychelles"
+ },
+ "SL": {
+ "name": "Sierra Leona"
+ },
+ "SG": {
+ "name": "Singapur"
+ },
+ "SX": {
+ "name": "Sint Maarten"
+ },
+ "SY": {
+ "name": "Siria"
+ },
+ "SO": {
+ "name": "Somalia"
+ },
+ "LK": {
+ "name": "Sri Lanka"
+ },
+ "SZ": {
+ "name": "Suazilandia"
+ },
+ "ZA": {
+ "name": "Sudáfrica"
+ },
+ "SD": {
+ "name": "Sudán"
+ },
+ "SS": {
+ "name": "Sudán del Sur"
+ },
+ "SE": {
+ "name": "Suecia"
+ },
+ "CH": {
+ "name": "Suiza"
+ },
+ "SR": {
+ "name": "Surinam"
+ },
+ "SJ": {
+ "name": "Svalbard y Jan Mayen"
+ },
+ "TH": {
+ "name": "Tailandia"
+ },
+ "TW": {
+ "name": "Taiwán"
+ },
+ "TZ": {
+ "name": "Tanzania"
+ },
+ "TJ": {
+ "name": "Tayikistán"
+ },
+ "IO": {
+ "name": "Territorio Británico del Océano Ãndico"
+ },
+ "TF": {
+ "name": "Territorios Australes Franceses"
+ },
+ "PS": {
+ "name": "Territorios Palestinos"
+ },
+ "TL": {
+ "name": "Timor Oriental"
+ },
+ "TG": {
+ "name": "Togo"
+ },
+ "TK": {
+ "name": "Tokelau"
+ },
+ "TO": {
+ "name": "Tonga"
+ },
+ "TT": {
+ "name": "Trinidad y Tobago"
+ },
+ "TA": {
+ "name": "Tristán da Cunha"
+ },
+ "TN": {
+ "name": "Túnez"
+ },
+ "TM": {
+ "name": "Turkmenistán"
+ },
+ "TR": {
+ "name": "Turquía"
+ },
+ "TV": {
+ "name": "Tuvalu"
+ },
+ "UA": {
+ "name": "Ucrania"
+ },
+ "UG": {
+ "name": "Uganda"
+ },
+ "UY": {
+ "name": "Uruguay"
+ },
+ "UZ": {
+ "name": "Uzbekistán"
+ },
+ "VU": {
+ "name": "Vanuatu"
+ },
+ "VE": {
+ "name": "Venezuela"
+ },
+ "VN": {
+ "name": "Vietnam"
+ },
+ "WF": {
+ "name": "Wallis y Futuna"
+ },
+ "YE": {
+ "name": "Yemen"
+ },
+ "DJ": {
+ "name": "Yibuti"
+ },
+ "ZM": {
+ "name": "Zambia"
+ },
+ "ZW": {
+ "name": "Zimbabue"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/country/es-CR.json b/library/intl/resources/country/es-CR.json
new file mode 100644
index 000000000..6a02f5aec
--- /dev/null
+++ b/library/intl/resources/country/es-CR.json
@@ -0,0 +1,761 @@
+{
+ "AF": {
+ "name": "Afganistán"
+ },
+ "AL": {
+ "name": "Albania"
+ },
+ "DE": {
+ "name": "Alemania"
+ },
+ "AD": {
+ "name": "Andorra"
+ },
+ "AO": {
+ "name": "Angola"
+ },
+ "AI": {
+ "name": "Anguila"
+ },
+ "AQ": {
+ "name": "Antártida"
+ },
+ "AG": {
+ "name": "Antigua y Barbuda"
+ },
+ "SA": {
+ "name": "Arabia Saudí"
+ },
+ "DZ": {
+ "name": "Argelia"
+ },
+ "AR": {
+ "name": "Argentina"
+ },
+ "AM": {
+ "name": "Armenia"
+ },
+ "AW": {
+ "name": "Aruba"
+ },
+ "AU": {
+ "name": "Australia"
+ },
+ "AT": {
+ "name": "Austria"
+ },
+ "AZ": {
+ "name": "Azerbaiyán"
+ },
+ "BS": {
+ "name": "Bahamas"
+ },
+ "BD": {
+ "name": "Bangladés"
+ },
+ "BB": {
+ "name": "Barbados"
+ },
+ "BH": {
+ "name": "Baréin"
+ },
+ "BE": {
+ "name": "Bélgica"
+ },
+ "BZ": {
+ "name": "Belice"
+ },
+ "BJ": {
+ "name": "Benín"
+ },
+ "BM": {
+ "name": "Bermudas"
+ },
+ "BY": {
+ "name": "Bielorrusia"
+ },
+ "BO": {
+ "name": "Bolivia"
+ },
+ "BA": {
+ "name": "Bosnia y Herzegovina"
+ },
+ "BW": {
+ "name": "Botsuana"
+ },
+ "BR": {
+ "name": "Brasil"
+ },
+ "BN": {
+ "name": "Brunéi"
+ },
+ "BG": {
+ "name": "Bulgaria"
+ },
+ "BF": {
+ "name": "Burkina Faso"
+ },
+ "BI": {
+ "name": "Burundi"
+ },
+ "BT": {
+ "name": "Bután"
+ },
+ "CV": {
+ "name": "Cabo Verde"
+ },
+ "KH": {
+ "name": "Camboya"
+ },
+ "CM": {
+ "name": "Camerún"
+ },
+ "CA": {
+ "name": "Canadá"
+ },
+ "BQ": {
+ "name": "Caribe neerlandés"
+ },
+ "QA": {
+ "name": "Catar"
+ },
+ "EA": {
+ "name": "Ceuta y Melilla"
+ },
+ "TD": {
+ "name": "Chad"
+ },
+ "CL": {
+ "name": "Chile"
+ },
+ "CN": {
+ "name": "China"
+ },
+ "CY": {
+ "name": "Chipre"
+ },
+ "VA": {
+ "name": "Ciudad del Vaticano"
+ },
+ "CO": {
+ "name": "Colombia"
+ },
+ "KM": {
+ "name": "Comoras"
+ },
+ "KP": {
+ "name": "Corea del Norte"
+ },
+ "KR": {
+ "name": "Corea del Sur"
+ },
+ "CI": {
+ "name": "Costa de Marfil"
+ },
+ "CR": {
+ "name": "Costa Rica"
+ },
+ "HR": {
+ "name": "Croacia"
+ },
+ "CU": {
+ "name": "Cuba"
+ },
+ "CW": {
+ "name": "Curazao"
+ },
+ "DG": {
+ "name": "Diego García"
+ },
+ "DK": {
+ "name": "Dinamarca"
+ },
+ "DM": {
+ "name": "Dominica"
+ },
+ "EC": {
+ "name": "Ecuador"
+ },
+ "EG": {
+ "name": "Egipto"
+ },
+ "SV": {
+ "name": "El Salvador"
+ },
+ "AE": {
+ "name": "Emiratos Ãrabes Unidos"
+ },
+ "ER": {
+ "name": "Eritrea"
+ },
+ "SK": {
+ "name": "Eslovaquia"
+ },
+ "SI": {
+ "name": "Eslovenia"
+ },
+ "ES": {
+ "name": "España"
+ },
+ "US": {
+ "name": "Estados Unidos"
+ },
+ "EE": {
+ "name": "Estonia"
+ },
+ "ET": {
+ "name": "Etiopía"
+ },
+ "PH": {
+ "name": "Filipinas"
+ },
+ "FI": {
+ "name": "Finlandia"
+ },
+ "FJ": {
+ "name": "Fiyi"
+ },
+ "FR": {
+ "name": "Francia"
+ },
+ "GA": {
+ "name": "Gabón"
+ },
+ "GM": {
+ "name": "Gambia"
+ },
+ "GE": {
+ "name": "Georgia"
+ },
+ "GH": {
+ "name": "Ghana"
+ },
+ "GI": {
+ "name": "Gibraltar"
+ },
+ "GD": {
+ "name": "Granada"
+ },
+ "GR": {
+ "name": "Grecia"
+ },
+ "GL": {
+ "name": "Groenlandia"
+ },
+ "GP": {
+ "name": "Guadalupe"
+ },
+ "GU": {
+ "name": "Guam"
+ },
+ "GT": {
+ "name": "Guatemala"
+ },
+ "GF": {
+ "name": "Guayana Francesa"
+ },
+ "GG": {
+ "name": "Guernesey"
+ },
+ "GN": {
+ "name": "Guinea"
+ },
+ "GQ": {
+ "name": "Guinea Ecuatorial"
+ },
+ "GW": {
+ "name": "Guinea-Bisáu"
+ },
+ "GY": {
+ "name": "Guyana"
+ },
+ "HT": {
+ "name": "Haití"
+ },
+ "HN": {
+ "name": "Honduras"
+ },
+ "HU": {
+ "name": "Hungría"
+ },
+ "IN": {
+ "name": "India"
+ },
+ "ID": {
+ "name": "Indonesia"
+ },
+ "IQ": {
+ "name": "Irak"
+ },
+ "IR": {
+ "name": "Irán"
+ },
+ "IE": {
+ "name": "Irlanda"
+ },
+ "AC": {
+ "name": "Isla Ascensión"
+ },
+ "CX": {
+ "name": "Isla Christmas"
+ },
+ "IM": {
+ "name": "Isla de Man"
+ },
+ "NF": {
+ "name": "Isla Norfolk"
+ },
+ "IS": {
+ "name": "Islandia"
+ },
+ "AX": {
+ "name": "Islas Ã…land"
+ },
+ "KY": {
+ "name": "Islas Caimán"
+ },
+ "IC": {
+ "name": "islas Canarias"
+ },
+ "CC": {
+ "name": "Islas Cocos"
+ },
+ "CK": {
+ "name": "Islas Cook"
+ },
+ "FO": {
+ "name": "Islas Feroe"
+ },
+ "GS": {
+ "name": "Islas Georgia del Sur y Sandwich del Sur"
+ },
+ "FK": {
+ "name": "Islas Malvinas"
+ },
+ "MP": {
+ "name": "Islas Marianas del Norte"
+ },
+ "MH": {
+ "name": "Islas Marshall"
+ },
+ "UM": {
+ "name": "Islas menores alejadas de EE. UU."
+ },
+ "PN": {
+ "name": "Islas Pitcairn"
+ },
+ "SB": {
+ "name": "Islas Salomón"
+ },
+ "TC": {
+ "name": "Islas Turcas y Caicos"
+ },
+ "VG": {
+ "name": "Islas Vírgenes Británicas"
+ },
+ "VI": {
+ "name": "Islas Vírgenes de EE. UU."
+ },
+ "IL": {
+ "name": "Israel"
+ },
+ "IT": {
+ "name": "Italia"
+ },
+ "JM": {
+ "name": "Jamaica"
+ },
+ "JP": {
+ "name": "Japón"
+ },
+ "JE": {
+ "name": "Jersey"
+ },
+ "JO": {
+ "name": "Jordania"
+ },
+ "KZ": {
+ "name": "Kazajistán"
+ },
+ "KE": {
+ "name": "Kenia"
+ },
+ "KG": {
+ "name": "Kirguistán"
+ },
+ "KI": {
+ "name": "Kiribati"
+ },
+ "XK": {
+ "name": "Kosovo"
+ },
+ "KW": {
+ "name": "Kuwait"
+ },
+ "LA": {
+ "name": "Laos"
+ },
+ "LS": {
+ "name": "Lesoto"
+ },
+ "LV": {
+ "name": "Letonia"
+ },
+ "LB": {
+ "name": "Líbano"
+ },
+ "LR": {
+ "name": "Liberia"
+ },
+ "LY": {
+ "name": "Libia"
+ },
+ "LI": {
+ "name": "Liechtenstein"
+ },
+ "LT": {
+ "name": "Lituania"
+ },
+ "LU": {
+ "name": "Luxemburgo"
+ },
+ "MK": {
+ "name": "Macedonia"
+ },
+ "MG": {
+ "name": "Madagascar"
+ },
+ "MY": {
+ "name": "Malasia"
+ },
+ "MW": {
+ "name": "Malaui"
+ },
+ "MV": {
+ "name": "Maldivas"
+ },
+ "ML": {
+ "name": "Mali"
+ },
+ "MT": {
+ "name": "Malta"
+ },
+ "MA": {
+ "name": "Marruecos"
+ },
+ "MQ": {
+ "name": "Martinica"
+ },
+ "MU": {
+ "name": "Mauricio"
+ },
+ "MR": {
+ "name": "Mauritania"
+ },
+ "YT": {
+ "name": "Mayotte"
+ },
+ "MX": {
+ "name": "México"
+ },
+ "FM": {
+ "name": "Micronesia"
+ },
+ "MD": {
+ "name": "Moldavia"
+ },
+ "MC": {
+ "name": "Mónaco"
+ },
+ "MN": {
+ "name": "Mongolia"
+ },
+ "ME": {
+ "name": "Montenegro"
+ },
+ "MS": {
+ "name": "Montserrat"
+ },
+ "MZ": {
+ "name": "Mozambique"
+ },
+ "MM": {
+ "name": "Myanmar (Birmania)"
+ },
+ "NA": {
+ "name": "Namibia"
+ },
+ "NR": {
+ "name": "Nauru"
+ },
+ "NP": {
+ "name": "Nepal"
+ },
+ "NI": {
+ "name": "Nicaragua"
+ },
+ "NE": {
+ "name": "Níger"
+ },
+ "NG": {
+ "name": "Nigeria"
+ },
+ "NU": {
+ "name": "Niue"
+ },
+ "NO": {
+ "name": "Noruega"
+ },
+ "NC": {
+ "name": "Nueva Caledonia"
+ },
+ "NZ": {
+ "name": "Nueva Zelanda"
+ },
+ "OM": {
+ "name": "Omán"
+ },
+ "NL": {
+ "name": "Países Bajos"
+ },
+ "PK": {
+ "name": "Pakistán"
+ },
+ "PW": {
+ "name": "Palau"
+ },
+ "PA": {
+ "name": "Panamá"
+ },
+ "PG": {
+ "name": "Papúa Nueva Guinea"
+ },
+ "PY": {
+ "name": "Paraguay"
+ },
+ "PE": {
+ "name": "Perú"
+ },
+ "PF": {
+ "name": "Polinesia Francesa"
+ },
+ "PL": {
+ "name": "Polonia"
+ },
+ "PT": {
+ "name": "Portugal"
+ },
+ "PR": {
+ "name": "Puerto Rico"
+ },
+ "HK": {
+ "name": "RAE de Hong Kong (China)"
+ },
+ "MO": {
+ "name": "RAE de Macao (China)"
+ },
+ "GB": {
+ "name": "Reino Unido"
+ },
+ "CF": {
+ "name": "República Centroafricana"
+ },
+ "CZ": {
+ "name": "República Checa"
+ },
+ "CG": {
+ "name": "República del Congo"
+ },
+ "CD": {
+ "name": "República Democrática del Congo"
+ },
+ "DO": {
+ "name": "República Dominicana"
+ },
+ "RE": {
+ "name": "Reunión"
+ },
+ "RW": {
+ "name": "Ruanda"
+ },
+ "RO": {
+ "name": "Rumanía"
+ },
+ "RU": {
+ "name": "Rusia"
+ },
+ "EH": {
+ "name": "Sáhara Occidental"
+ },
+ "WS": {
+ "name": "Samoa"
+ },
+ "AS": {
+ "name": "Samoa Americana"
+ },
+ "BL": {
+ "name": "San Bartolomé"
+ },
+ "KN": {
+ "name": "San Cristóbal y Nieves"
+ },
+ "SM": {
+ "name": "San Marino"
+ },
+ "MF": {
+ "name": "San Martín"
+ },
+ "PM": {
+ "name": "San Pedro y Miquelón"
+ },
+ "VC": {
+ "name": "San Vicente y las Granadinas"
+ },
+ "SH": {
+ "name": "Santa Elena"
+ },
+ "LC": {
+ "name": "Santa Lucía"
+ },
+ "ST": {
+ "name": "Santo Tomé y Príncipe"
+ },
+ "SN": {
+ "name": "Senegal"
+ },
+ "RS": {
+ "name": "Serbia"
+ },
+ "SC": {
+ "name": "Seychelles"
+ },
+ "SL": {
+ "name": "Sierra Leona"
+ },
+ "SG": {
+ "name": "Singapur"
+ },
+ "SX": {
+ "name": "Sint Maarten"
+ },
+ "SY": {
+ "name": "Siria"
+ },
+ "SO": {
+ "name": "Somalia"
+ },
+ "LK": {
+ "name": "Sri Lanka"
+ },
+ "SZ": {
+ "name": "Suazilandia"
+ },
+ "ZA": {
+ "name": "Sudáfrica"
+ },
+ "SD": {
+ "name": "Sudán"
+ },
+ "SS": {
+ "name": "Sudán del Sur"
+ },
+ "SE": {
+ "name": "Suecia"
+ },
+ "CH": {
+ "name": "Suiza"
+ },
+ "SR": {
+ "name": "Surinam"
+ },
+ "SJ": {
+ "name": "Svalbard y Jan Mayen"
+ },
+ "TH": {
+ "name": "Tailandia"
+ },
+ "TW": {
+ "name": "Taiwán"
+ },
+ "TZ": {
+ "name": "Tanzania"
+ },
+ "TJ": {
+ "name": "Tayikistán"
+ },
+ "IO": {
+ "name": "Territorio Británico del Océano Ãndico"
+ },
+ "TF": {
+ "name": "Territorios Australes Franceses"
+ },
+ "PS": {
+ "name": "Territorios Palestinos"
+ },
+ "TL": {
+ "name": "Timor Oriental"
+ },
+ "TG": {
+ "name": "Togo"
+ },
+ "TK": {
+ "name": "Tokelau"
+ },
+ "TO": {
+ "name": "Tonga"
+ },
+ "TT": {
+ "name": "Trinidad y Tobago"
+ },
+ "TA": {
+ "name": "Tristán da Cunha"
+ },
+ "TN": {
+ "name": "Túnez"
+ },
+ "TM": {
+ "name": "Turkmenistán"
+ },
+ "TR": {
+ "name": "Turquía"
+ },
+ "TV": {
+ "name": "Tuvalu"
+ },
+ "UA": {
+ "name": "Ucrania"
+ },
+ "UG": {
+ "name": "Uganda"
+ },
+ "UY": {
+ "name": "Uruguay"
+ },
+ "UZ": {
+ "name": "Uzbekistán"
+ },
+ "VU": {
+ "name": "Vanuatu"
+ },
+ "VE": {
+ "name": "Venezuela"
+ },
+ "VN": {
+ "name": "Vietnam"
+ },
+ "WF": {
+ "name": "Wallis y Futuna"
+ },
+ "YE": {
+ "name": "Yemen"
+ },
+ "DJ": {
+ "name": "Yibuti"
+ },
+ "ZM": {
+ "name": "Zambia"
+ },
+ "ZW": {
+ "name": "Zimbabue"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/country/es-CU.json b/library/intl/resources/country/es-CU.json
new file mode 100644
index 000000000..6a02f5aec
--- /dev/null
+++ b/library/intl/resources/country/es-CU.json
@@ -0,0 +1,761 @@
+{
+ "AF": {
+ "name": "Afganistán"
+ },
+ "AL": {
+ "name": "Albania"
+ },
+ "DE": {
+ "name": "Alemania"
+ },
+ "AD": {
+ "name": "Andorra"
+ },
+ "AO": {
+ "name": "Angola"
+ },
+ "AI": {
+ "name": "Anguila"
+ },
+ "AQ": {
+ "name": "Antártida"
+ },
+ "AG": {
+ "name": "Antigua y Barbuda"
+ },
+ "SA": {
+ "name": "Arabia Saudí"
+ },
+ "DZ": {
+ "name": "Argelia"
+ },
+ "AR": {
+ "name": "Argentina"
+ },
+ "AM": {
+ "name": "Armenia"
+ },
+ "AW": {
+ "name": "Aruba"
+ },
+ "AU": {
+ "name": "Australia"
+ },
+ "AT": {
+ "name": "Austria"
+ },
+ "AZ": {
+ "name": "Azerbaiyán"
+ },
+ "BS": {
+ "name": "Bahamas"
+ },
+ "BD": {
+ "name": "Bangladés"
+ },
+ "BB": {
+ "name": "Barbados"
+ },
+ "BH": {
+ "name": "Baréin"
+ },
+ "BE": {
+ "name": "Bélgica"
+ },
+ "BZ": {
+ "name": "Belice"
+ },
+ "BJ": {
+ "name": "Benín"
+ },
+ "BM": {
+ "name": "Bermudas"
+ },
+ "BY": {
+ "name": "Bielorrusia"
+ },
+ "BO": {
+ "name": "Bolivia"
+ },
+ "BA": {
+ "name": "Bosnia y Herzegovina"
+ },
+ "BW": {
+ "name": "Botsuana"
+ },
+ "BR": {
+ "name": "Brasil"
+ },
+ "BN": {
+ "name": "Brunéi"
+ },
+ "BG": {
+ "name": "Bulgaria"
+ },
+ "BF": {
+ "name": "Burkina Faso"
+ },
+ "BI": {
+ "name": "Burundi"
+ },
+ "BT": {
+ "name": "Bután"
+ },
+ "CV": {
+ "name": "Cabo Verde"
+ },
+ "KH": {
+ "name": "Camboya"
+ },
+ "CM": {
+ "name": "Camerún"
+ },
+ "CA": {
+ "name": "Canadá"
+ },
+ "BQ": {
+ "name": "Caribe neerlandés"
+ },
+ "QA": {
+ "name": "Catar"
+ },
+ "EA": {
+ "name": "Ceuta y Melilla"
+ },
+ "TD": {
+ "name": "Chad"
+ },
+ "CL": {
+ "name": "Chile"
+ },
+ "CN": {
+ "name": "China"
+ },
+ "CY": {
+ "name": "Chipre"
+ },
+ "VA": {
+ "name": "Ciudad del Vaticano"
+ },
+ "CO": {
+ "name": "Colombia"
+ },
+ "KM": {
+ "name": "Comoras"
+ },
+ "KP": {
+ "name": "Corea del Norte"
+ },
+ "KR": {
+ "name": "Corea del Sur"
+ },
+ "CI": {
+ "name": "Costa de Marfil"
+ },
+ "CR": {
+ "name": "Costa Rica"
+ },
+ "HR": {
+ "name": "Croacia"
+ },
+ "CU": {
+ "name": "Cuba"
+ },
+ "CW": {
+ "name": "Curazao"
+ },
+ "DG": {
+ "name": "Diego García"
+ },
+ "DK": {
+ "name": "Dinamarca"
+ },
+ "DM": {
+ "name": "Dominica"
+ },
+ "EC": {
+ "name": "Ecuador"
+ },
+ "EG": {
+ "name": "Egipto"
+ },
+ "SV": {
+ "name": "El Salvador"
+ },
+ "AE": {
+ "name": "Emiratos Ãrabes Unidos"
+ },
+ "ER": {
+ "name": "Eritrea"
+ },
+ "SK": {
+ "name": "Eslovaquia"
+ },
+ "SI": {
+ "name": "Eslovenia"
+ },
+ "ES": {
+ "name": "España"
+ },
+ "US": {
+ "name": "Estados Unidos"
+ },
+ "EE": {
+ "name": "Estonia"
+ },
+ "ET": {
+ "name": "Etiopía"
+ },
+ "PH": {
+ "name": "Filipinas"
+ },
+ "FI": {
+ "name": "Finlandia"
+ },
+ "FJ": {
+ "name": "Fiyi"
+ },
+ "FR": {
+ "name": "Francia"
+ },
+ "GA": {
+ "name": "Gabón"
+ },
+ "GM": {
+ "name": "Gambia"
+ },
+ "GE": {
+ "name": "Georgia"
+ },
+ "GH": {
+ "name": "Ghana"
+ },
+ "GI": {
+ "name": "Gibraltar"
+ },
+ "GD": {
+ "name": "Granada"
+ },
+ "GR": {
+ "name": "Grecia"
+ },
+ "GL": {
+ "name": "Groenlandia"
+ },
+ "GP": {
+ "name": "Guadalupe"
+ },
+ "GU": {
+ "name": "Guam"
+ },
+ "GT": {
+ "name": "Guatemala"
+ },
+ "GF": {
+ "name": "Guayana Francesa"
+ },
+ "GG": {
+ "name": "Guernesey"
+ },
+ "GN": {
+ "name": "Guinea"
+ },
+ "GQ": {
+ "name": "Guinea Ecuatorial"
+ },
+ "GW": {
+ "name": "Guinea-Bisáu"
+ },
+ "GY": {
+ "name": "Guyana"
+ },
+ "HT": {
+ "name": "Haití"
+ },
+ "HN": {
+ "name": "Honduras"
+ },
+ "HU": {
+ "name": "Hungría"
+ },
+ "IN": {
+ "name": "India"
+ },
+ "ID": {
+ "name": "Indonesia"
+ },
+ "IQ": {
+ "name": "Irak"
+ },
+ "IR": {
+ "name": "Irán"
+ },
+ "IE": {
+ "name": "Irlanda"
+ },
+ "AC": {
+ "name": "Isla Ascensión"
+ },
+ "CX": {
+ "name": "Isla Christmas"
+ },
+ "IM": {
+ "name": "Isla de Man"
+ },
+ "NF": {
+ "name": "Isla Norfolk"
+ },
+ "IS": {
+ "name": "Islandia"
+ },
+ "AX": {
+ "name": "Islas Ã…land"
+ },
+ "KY": {
+ "name": "Islas Caimán"
+ },
+ "IC": {
+ "name": "islas Canarias"
+ },
+ "CC": {
+ "name": "Islas Cocos"
+ },
+ "CK": {
+ "name": "Islas Cook"
+ },
+ "FO": {
+ "name": "Islas Feroe"
+ },
+ "GS": {
+ "name": "Islas Georgia del Sur y Sandwich del Sur"
+ },
+ "FK": {
+ "name": "Islas Malvinas"
+ },
+ "MP": {
+ "name": "Islas Marianas del Norte"
+ },
+ "MH": {
+ "name": "Islas Marshall"
+ },
+ "UM": {
+ "name": "Islas menores alejadas de EE. UU."
+ },
+ "PN": {
+ "name": "Islas Pitcairn"
+ },
+ "SB": {
+ "name": "Islas Salomón"
+ },
+ "TC": {
+ "name": "Islas Turcas y Caicos"
+ },
+ "VG": {
+ "name": "Islas Vírgenes Británicas"
+ },
+ "VI": {
+ "name": "Islas Vírgenes de EE. UU."
+ },
+ "IL": {
+ "name": "Israel"
+ },
+ "IT": {
+ "name": "Italia"
+ },
+ "JM": {
+ "name": "Jamaica"
+ },
+ "JP": {
+ "name": "Japón"
+ },
+ "JE": {
+ "name": "Jersey"
+ },
+ "JO": {
+ "name": "Jordania"
+ },
+ "KZ": {
+ "name": "Kazajistán"
+ },
+ "KE": {
+ "name": "Kenia"
+ },
+ "KG": {
+ "name": "Kirguistán"
+ },
+ "KI": {
+ "name": "Kiribati"
+ },
+ "XK": {
+ "name": "Kosovo"
+ },
+ "KW": {
+ "name": "Kuwait"
+ },
+ "LA": {
+ "name": "Laos"
+ },
+ "LS": {
+ "name": "Lesoto"
+ },
+ "LV": {
+ "name": "Letonia"
+ },
+ "LB": {
+ "name": "Líbano"
+ },
+ "LR": {
+ "name": "Liberia"
+ },
+ "LY": {
+ "name": "Libia"
+ },
+ "LI": {
+ "name": "Liechtenstein"
+ },
+ "LT": {
+ "name": "Lituania"
+ },
+ "LU": {
+ "name": "Luxemburgo"
+ },
+ "MK": {
+ "name": "Macedonia"
+ },
+ "MG": {
+ "name": "Madagascar"
+ },
+ "MY": {
+ "name": "Malasia"
+ },
+ "MW": {
+ "name": "Malaui"
+ },
+ "MV": {
+ "name": "Maldivas"
+ },
+ "ML": {
+ "name": "Mali"
+ },
+ "MT": {
+ "name": "Malta"
+ },
+ "MA": {
+ "name": "Marruecos"
+ },
+ "MQ": {
+ "name": "Martinica"
+ },
+ "MU": {
+ "name": "Mauricio"
+ },
+ "MR": {
+ "name": "Mauritania"
+ },
+ "YT": {
+ "name": "Mayotte"
+ },
+ "MX": {
+ "name": "México"
+ },
+ "FM": {
+ "name": "Micronesia"
+ },
+ "MD": {
+ "name": "Moldavia"
+ },
+ "MC": {
+ "name": "Mónaco"
+ },
+ "MN": {
+ "name": "Mongolia"
+ },
+ "ME": {
+ "name": "Montenegro"
+ },
+ "MS": {
+ "name": "Montserrat"
+ },
+ "MZ": {
+ "name": "Mozambique"
+ },
+ "MM": {
+ "name": "Myanmar (Birmania)"
+ },
+ "NA": {
+ "name": "Namibia"
+ },
+ "NR": {
+ "name": "Nauru"
+ },
+ "NP": {
+ "name": "Nepal"
+ },
+ "NI": {
+ "name": "Nicaragua"
+ },
+ "NE": {
+ "name": "Níger"
+ },
+ "NG": {
+ "name": "Nigeria"
+ },
+ "NU": {
+ "name": "Niue"
+ },
+ "NO": {
+ "name": "Noruega"
+ },
+ "NC": {
+ "name": "Nueva Caledonia"
+ },
+ "NZ": {
+ "name": "Nueva Zelanda"
+ },
+ "OM": {
+ "name": "Omán"
+ },
+ "NL": {
+ "name": "Países Bajos"
+ },
+ "PK": {
+ "name": "Pakistán"
+ },
+ "PW": {
+ "name": "Palau"
+ },
+ "PA": {
+ "name": "Panamá"
+ },
+ "PG": {
+ "name": "Papúa Nueva Guinea"
+ },
+ "PY": {
+ "name": "Paraguay"
+ },
+ "PE": {
+ "name": "Perú"
+ },
+ "PF": {
+ "name": "Polinesia Francesa"
+ },
+ "PL": {
+ "name": "Polonia"
+ },
+ "PT": {
+ "name": "Portugal"
+ },
+ "PR": {
+ "name": "Puerto Rico"
+ },
+ "HK": {
+ "name": "RAE de Hong Kong (China)"
+ },
+ "MO": {
+ "name": "RAE de Macao (China)"
+ },
+ "GB": {
+ "name": "Reino Unido"
+ },
+ "CF": {
+ "name": "República Centroafricana"
+ },
+ "CZ": {
+ "name": "República Checa"
+ },
+ "CG": {
+ "name": "República del Congo"
+ },
+ "CD": {
+ "name": "República Democrática del Congo"
+ },
+ "DO": {
+ "name": "República Dominicana"
+ },
+ "RE": {
+ "name": "Reunión"
+ },
+ "RW": {
+ "name": "Ruanda"
+ },
+ "RO": {
+ "name": "Rumanía"
+ },
+ "RU": {
+ "name": "Rusia"
+ },
+ "EH": {
+ "name": "Sáhara Occidental"
+ },
+ "WS": {
+ "name": "Samoa"
+ },
+ "AS": {
+ "name": "Samoa Americana"
+ },
+ "BL": {
+ "name": "San Bartolomé"
+ },
+ "KN": {
+ "name": "San Cristóbal y Nieves"
+ },
+ "SM": {
+ "name": "San Marino"
+ },
+ "MF": {
+ "name": "San Martín"
+ },
+ "PM": {
+ "name": "San Pedro y Miquelón"
+ },
+ "VC": {
+ "name": "San Vicente y las Granadinas"
+ },
+ "SH": {
+ "name": "Santa Elena"
+ },
+ "LC": {
+ "name": "Santa Lucía"
+ },
+ "ST": {
+ "name": "Santo Tomé y Príncipe"
+ },
+ "SN": {
+ "name": "Senegal"
+ },
+ "RS": {
+ "name": "Serbia"
+ },
+ "SC": {
+ "name": "Seychelles"
+ },
+ "SL": {
+ "name": "Sierra Leona"
+ },
+ "SG": {
+ "name": "Singapur"
+ },
+ "SX": {
+ "name": "Sint Maarten"
+ },
+ "SY": {
+ "name": "Siria"
+ },
+ "SO": {
+ "name": "Somalia"
+ },
+ "LK": {
+ "name": "Sri Lanka"
+ },
+ "SZ": {
+ "name": "Suazilandia"
+ },
+ "ZA": {
+ "name": "Sudáfrica"
+ },
+ "SD": {
+ "name": "Sudán"
+ },
+ "SS": {
+ "name": "Sudán del Sur"
+ },
+ "SE": {
+ "name": "Suecia"
+ },
+ "CH": {
+ "name": "Suiza"
+ },
+ "SR": {
+ "name": "Surinam"
+ },
+ "SJ": {
+ "name": "Svalbard y Jan Mayen"
+ },
+ "TH": {
+ "name": "Tailandia"
+ },
+ "TW": {
+ "name": "Taiwán"
+ },
+ "TZ": {
+ "name": "Tanzania"
+ },
+ "TJ": {
+ "name": "Tayikistán"
+ },
+ "IO": {
+ "name": "Territorio Británico del Océano Ãndico"
+ },
+ "TF": {
+ "name": "Territorios Australes Franceses"
+ },
+ "PS": {
+ "name": "Territorios Palestinos"
+ },
+ "TL": {
+ "name": "Timor Oriental"
+ },
+ "TG": {
+ "name": "Togo"
+ },
+ "TK": {
+ "name": "Tokelau"
+ },
+ "TO": {
+ "name": "Tonga"
+ },
+ "TT": {
+ "name": "Trinidad y Tobago"
+ },
+ "TA": {
+ "name": "Tristán da Cunha"
+ },
+ "TN": {
+ "name": "Túnez"
+ },
+ "TM": {
+ "name": "Turkmenistán"
+ },
+ "TR": {
+ "name": "Turquía"
+ },
+ "TV": {
+ "name": "Tuvalu"
+ },
+ "UA": {
+ "name": "Ucrania"
+ },
+ "UG": {
+ "name": "Uganda"
+ },
+ "UY": {
+ "name": "Uruguay"
+ },
+ "UZ": {
+ "name": "Uzbekistán"
+ },
+ "VU": {
+ "name": "Vanuatu"
+ },
+ "VE": {
+ "name": "Venezuela"
+ },
+ "VN": {
+ "name": "Vietnam"
+ },
+ "WF": {
+ "name": "Wallis y Futuna"
+ },
+ "YE": {
+ "name": "Yemen"
+ },
+ "DJ": {
+ "name": "Yibuti"
+ },
+ "ZM": {
+ "name": "Zambia"
+ },
+ "ZW": {
+ "name": "Zimbabue"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/country/es-DO.json b/library/intl/resources/country/es-DO.json
new file mode 100644
index 000000000..6a02f5aec
--- /dev/null
+++ b/library/intl/resources/country/es-DO.json
@@ -0,0 +1,761 @@
+{
+ "AF": {
+ "name": "Afganistán"
+ },
+ "AL": {
+ "name": "Albania"
+ },
+ "DE": {
+ "name": "Alemania"
+ },
+ "AD": {
+ "name": "Andorra"
+ },
+ "AO": {
+ "name": "Angola"
+ },
+ "AI": {
+ "name": "Anguila"
+ },
+ "AQ": {
+ "name": "Antártida"
+ },
+ "AG": {
+ "name": "Antigua y Barbuda"
+ },
+ "SA": {
+ "name": "Arabia Saudí"
+ },
+ "DZ": {
+ "name": "Argelia"
+ },
+ "AR": {
+ "name": "Argentina"
+ },
+ "AM": {
+ "name": "Armenia"
+ },
+ "AW": {
+ "name": "Aruba"
+ },
+ "AU": {
+ "name": "Australia"
+ },
+ "AT": {
+ "name": "Austria"
+ },
+ "AZ": {
+ "name": "Azerbaiyán"
+ },
+ "BS": {
+ "name": "Bahamas"
+ },
+ "BD": {
+ "name": "Bangladés"
+ },
+ "BB": {
+ "name": "Barbados"
+ },
+ "BH": {
+ "name": "Baréin"
+ },
+ "BE": {
+ "name": "Bélgica"
+ },
+ "BZ": {
+ "name": "Belice"
+ },
+ "BJ": {
+ "name": "Benín"
+ },
+ "BM": {
+ "name": "Bermudas"
+ },
+ "BY": {
+ "name": "Bielorrusia"
+ },
+ "BO": {
+ "name": "Bolivia"
+ },
+ "BA": {
+ "name": "Bosnia y Herzegovina"
+ },
+ "BW": {
+ "name": "Botsuana"
+ },
+ "BR": {
+ "name": "Brasil"
+ },
+ "BN": {
+ "name": "Brunéi"
+ },
+ "BG": {
+ "name": "Bulgaria"
+ },
+ "BF": {
+ "name": "Burkina Faso"
+ },
+ "BI": {
+ "name": "Burundi"
+ },
+ "BT": {
+ "name": "Bután"
+ },
+ "CV": {
+ "name": "Cabo Verde"
+ },
+ "KH": {
+ "name": "Camboya"
+ },
+ "CM": {
+ "name": "Camerún"
+ },
+ "CA": {
+ "name": "Canadá"
+ },
+ "BQ": {
+ "name": "Caribe neerlandés"
+ },
+ "QA": {
+ "name": "Catar"
+ },
+ "EA": {
+ "name": "Ceuta y Melilla"
+ },
+ "TD": {
+ "name": "Chad"
+ },
+ "CL": {
+ "name": "Chile"
+ },
+ "CN": {
+ "name": "China"
+ },
+ "CY": {
+ "name": "Chipre"
+ },
+ "VA": {
+ "name": "Ciudad del Vaticano"
+ },
+ "CO": {
+ "name": "Colombia"
+ },
+ "KM": {
+ "name": "Comoras"
+ },
+ "KP": {
+ "name": "Corea del Norte"
+ },
+ "KR": {
+ "name": "Corea del Sur"
+ },
+ "CI": {
+ "name": "Costa de Marfil"
+ },
+ "CR": {
+ "name": "Costa Rica"
+ },
+ "HR": {
+ "name": "Croacia"
+ },
+ "CU": {
+ "name": "Cuba"
+ },
+ "CW": {
+ "name": "Curazao"
+ },
+ "DG": {
+ "name": "Diego García"
+ },
+ "DK": {
+ "name": "Dinamarca"
+ },
+ "DM": {
+ "name": "Dominica"
+ },
+ "EC": {
+ "name": "Ecuador"
+ },
+ "EG": {
+ "name": "Egipto"
+ },
+ "SV": {
+ "name": "El Salvador"
+ },
+ "AE": {
+ "name": "Emiratos Ãrabes Unidos"
+ },
+ "ER": {
+ "name": "Eritrea"
+ },
+ "SK": {
+ "name": "Eslovaquia"
+ },
+ "SI": {
+ "name": "Eslovenia"
+ },
+ "ES": {
+ "name": "España"
+ },
+ "US": {
+ "name": "Estados Unidos"
+ },
+ "EE": {
+ "name": "Estonia"
+ },
+ "ET": {
+ "name": "Etiopía"
+ },
+ "PH": {
+ "name": "Filipinas"
+ },
+ "FI": {
+ "name": "Finlandia"
+ },
+ "FJ": {
+ "name": "Fiyi"
+ },
+ "FR": {
+ "name": "Francia"
+ },
+ "GA": {
+ "name": "Gabón"
+ },
+ "GM": {
+ "name": "Gambia"
+ },
+ "GE": {
+ "name": "Georgia"
+ },
+ "GH": {
+ "name": "Ghana"
+ },
+ "GI": {
+ "name": "Gibraltar"
+ },
+ "GD": {
+ "name": "Granada"
+ },
+ "GR": {
+ "name": "Grecia"
+ },
+ "GL": {
+ "name": "Groenlandia"
+ },
+ "GP": {
+ "name": "Guadalupe"
+ },
+ "GU": {
+ "name": "Guam"
+ },
+ "GT": {
+ "name": "Guatemala"
+ },
+ "GF": {
+ "name": "Guayana Francesa"
+ },
+ "GG": {
+ "name": "Guernesey"
+ },
+ "GN": {
+ "name": "Guinea"
+ },
+ "GQ": {
+ "name": "Guinea Ecuatorial"
+ },
+ "GW": {
+ "name": "Guinea-Bisáu"
+ },
+ "GY": {
+ "name": "Guyana"
+ },
+ "HT": {
+ "name": "Haití"
+ },
+ "HN": {
+ "name": "Honduras"
+ },
+ "HU": {
+ "name": "Hungría"
+ },
+ "IN": {
+ "name": "India"
+ },
+ "ID": {
+ "name": "Indonesia"
+ },
+ "IQ": {
+ "name": "Irak"
+ },
+ "IR": {
+ "name": "Irán"
+ },
+ "IE": {
+ "name": "Irlanda"
+ },
+ "AC": {
+ "name": "Isla Ascensión"
+ },
+ "CX": {
+ "name": "Isla Christmas"
+ },
+ "IM": {
+ "name": "Isla de Man"
+ },
+ "NF": {
+ "name": "Isla Norfolk"
+ },
+ "IS": {
+ "name": "Islandia"
+ },
+ "AX": {
+ "name": "Islas Ã…land"
+ },
+ "KY": {
+ "name": "Islas Caimán"
+ },
+ "IC": {
+ "name": "islas Canarias"
+ },
+ "CC": {
+ "name": "Islas Cocos"
+ },
+ "CK": {
+ "name": "Islas Cook"
+ },
+ "FO": {
+ "name": "Islas Feroe"
+ },
+ "GS": {
+ "name": "Islas Georgia del Sur y Sandwich del Sur"
+ },
+ "FK": {
+ "name": "Islas Malvinas"
+ },
+ "MP": {
+ "name": "Islas Marianas del Norte"
+ },
+ "MH": {
+ "name": "Islas Marshall"
+ },
+ "UM": {
+ "name": "Islas menores alejadas de EE. UU."
+ },
+ "PN": {
+ "name": "Islas Pitcairn"
+ },
+ "SB": {
+ "name": "Islas Salomón"
+ },
+ "TC": {
+ "name": "Islas Turcas y Caicos"
+ },
+ "VG": {
+ "name": "Islas Vírgenes Británicas"
+ },
+ "VI": {
+ "name": "Islas Vírgenes de EE. UU."
+ },
+ "IL": {
+ "name": "Israel"
+ },
+ "IT": {
+ "name": "Italia"
+ },
+ "JM": {
+ "name": "Jamaica"
+ },
+ "JP": {
+ "name": "Japón"
+ },
+ "JE": {
+ "name": "Jersey"
+ },
+ "JO": {
+ "name": "Jordania"
+ },
+ "KZ": {
+ "name": "Kazajistán"
+ },
+ "KE": {
+ "name": "Kenia"
+ },
+ "KG": {
+ "name": "Kirguistán"
+ },
+ "KI": {
+ "name": "Kiribati"
+ },
+ "XK": {
+ "name": "Kosovo"
+ },
+ "KW": {
+ "name": "Kuwait"
+ },
+ "LA": {
+ "name": "Laos"
+ },
+ "LS": {
+ "name": "Lesoto"
+ },
+ "LV": {
+ "name": "Letonia"
+ },
+ "LB": {
+ "name": "Líbano"
+ },
+ "LR": {
+ "name": "Liberia"
+ },
+ "LY": {
+ "name": "Libia"
+ },
+ "LI": {
+ "name": "Liechtenstein"
+ },
+ "LT": {
+ "name": "Lituania"
+ },
+ "LU": {
+ "name": "Luxemburgo"
+ },
+ "MK": {
+ "name": "Macedonia"
+ },
+ "MG": {
+ "name": "Madagascar"
+ },
+ "MY": {
+ "name": "Malasia"
+ },
+ "MW": {
+ "name": "Malaui"
+ },
+ "MV": {
+ "name": "Maldivas"
+ },
+ "ML": {
+ "name": "Mali"
+ },
+ "MT": {
+ "name": "Malta"
+ },
+ "MA": {
+ "name": "Marruecos"
+ },
+ "MQ": {
+ "name": "Martinica"
+ },
+ "MU": {
+ "name": "Mauricio"
+ },
+ "MR": {
+ "name": "Mauritania"
+ },
+ "YT": {
+ "name": "Mayotte"
+ },
+ "MX": {
+ "name": "México"
+ },
+ "FM": {
+ "name": "Micronesia"
+ },
+ "MD": {
+ "name": "Moldavia"
+ },
+ "MC": {
+ "name": "Mónaco"
+ },
+ "MN": {
+ "name": "Mongolia"
+ },
+ "ME": {
+ "name": "Montenegro"
+ },
+ "MS": {
+ "name": "Montserrat"
+ },
+ "MZ": {
+ "name": "Mozambique"
+ },
+ "MM": {
+ "name": "Myanmar (Birmania)"
+ },
+ "NA": {
+ "name": "Namibia"
+ },
+ "NR": {
+ "name": "Nauru"
+ },
+ "NP": {
+ "name": "Nepal"
+ },
+ "NI": {
+ "name": "Nicaragua"
+ },
+ "NE": {
+ "name": "Níger"
+ },
+ "NG": {
+ "name": "Nigeria"
+ },
+ "NU": {
+ "name": "Niue"
+ },
+ "NO": {
+ "name": "Noruega"
+ },
+ "NC": {
+ "name": "Nueva Caledonia"
+ },
+ "NZ": {
+ "name": "Nueva Zelanda"
+ },
+ "OM": {
+ "name": "Omán"
+ },
+ "NL": {
+ "name": "Países Bajos"
+ },
+ "PK": {
+ "name": "Pakistán"
+ },
+ "PW": {
+ "name": "Palau"
+ },
+ "PA": {
+ "name": "Panamá"
+ },
+ "PG": {
+ "name": "Papúa Nueva Guinea"
+ },
+ "PY": {
+ "name": "Paraguay"
+ },
+ "PE": {
+ "name": "Perú"
+ },
+ "PF": {
+ "name": "Polinesia Francesa"
+ },
+ "PL": {
+ "name": "Polonia"
+ },
+ "PT": {
+ "name": "Portugal"
+ },
+ "PR": {
+ "name": "Puerto Rico"
+ },
+ "HK": {
+ "name": "RAE de Hong Kong (China)"
+ },
+ "MO": {
+ "name": "RAE de Macao (China)"
+ },
+ "GB": {
+ "name": "Reino Unido"
+ },
+ "CF": {
+ "name": "República Centroafricana"
+ },
+ "CZ": {
+ "name": "República Checa"
+ },
+ "CG": {
+ "name": "República del Congo"
+ },
+ "CD": {
+ "name": "República Democrática del Congo"
+ },
+ "DO": {
+ "name": "República Dominicana"
+ },
+ "RE": {
+ "name": "Reunión"
+ },
+ "RW": {
+ "name": "Ruanda"
+ },
+ "RO": {
+ "name": "Rumanía"
+ },
+ "RU": {
+ "name": "Rusia"
+ },
+ "EH": {
+ "name": "Sáhara Occidental"
+ },
+ "WS": {
+ "name": "Samoa"
+ },
+ "AS": {
+ "name": "Samoa Americana"
+ },
+ "BL": {
+ "name": "San Bartolomé"
+ },
+ "KN": {
+ "name": "San Cristóbal y Nieves"
+ },
+ "SM": {
+ "name": "San Marino"
+ },
+ "MF": {
+ "name": "San Martín"
+ },
+ "PM": {
+ "name": "San Pedro y Miquelón"
+ },
+ "VC": {
+ "name": "San Vicente y las Granadinas"
+ },
+ "SH": {
+ "name": "Santa Elena"
+ },
+ "LC": {
+ "name": "Santa Lucía"
+ },
+ "ST": {
+ "name": "Santo Tomé y Príncipe"
+ },
+ "SN": {
+ "name": "Senegal"
+ },
+ "RS": {
+ "name": "Serbia"
+ },
+ "SC": {
+ "name": "Seychelles"
+ },
+ "SL": {
+ "name": "Sierra Leona"
+ },
+ "SG": {
+ "name": "Singapur"
+ },
+ "SX": {
+ "name": "Sint Maarten"
+ },
+ "SY": {
+ "name": "Siria"
+ },
+ "SO": {
+ "name": "Somalia"
+ },
+ "LK": {
+ "name": "Sri Lanka"
+ },
+ "SZ": {
+ "name": "Suazilandia"
+ },
+ "ZA": {
+ "name": "Sudáfrica"
+ },
+ "SD": {
+ "name": "Sudán"
+ },
+ "SS": {
+ "name": "Sudán del Sur"
+ },
+ "SE": {
+ "name": "Suecia"
+ },
+ "CH": {
+ "name": "Suiza"
+ },
+ "SR": {
+ "name": "Surinam"
+ },
+ "SJ": {
+ "name": "Svalbard y Jan Mayen"
+ },
+ "TH": {
+ "name": "Tailandia"
+ },
+ "TW": {
+ "name": "Taiwán"
+ },
+ "TZ": {
+ "name": "Tanzania"
+ },
+ "TJ": {
+ "name": "Tayikistán"
+ },
+ "IO": {
+ "name": "Territorio Británico del Océano Ãndico"
+ },
+ "TF": {
+ "name": "Territorios Australes Franceses"
+ },
+ "PS": {
+ "name": "Territorios Palestinos"
+ },
+ "TL": {
+ "name": "Timor Oriental"
+ },
+ "TG": {
+ "name": "Togo"
+ },
+ "TK": {
+ "name": "Tokelau"
+ },
+ "TO": {
+ "name": "Tonga"
+ },
+ "TT": {
+ "name": "Trinidad y Tobago"
+ },
+ "TA": {
+ "name": "Tristán da Cunha"
+ },
+ "TN": {
+ "name": "Túnez"
+ },
+ "TM": {
+ "name": "Turkmenistán"
+ },
+ "TR": {
+ "name": "Turquía"
+ },
+ "TV": {
+ "name": "Tuvalu"
+ },
+ "UA": {
+ "name": "Ucrania"
+ },
+ "UG": {
+ "name": "Uganda"
+ },
+ "UY": {
+ "name": "Uruguay"
+ },
+ "UZ": {
+ "name": "Uzbekistán"
+ },
+ "VU": {
+ "name": "Vanuatu"
+ },
+ "VE": {
+ "name": "Venezuela"
+ },
+ "VN": {
+ "name": "Vietnam"
+ },
+ "WF": {
+ "name": "Wallis y Futuna"
+ },
+ "YE": {
+ "name": "Yemen"
+ },
+ "DJ": {
+ "name": "Yibuti"
+ },
+ "ZM": {
+ "name": "Zambia"
+ },
+ "ZW": {
+ "name": "Zimbabue"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/country/es-EC.json b/library/intl/resources/country/es-EC.json
new file mode 100644
index 000000000..6a02f5aec
--- /dev/null
+++ b/library/intl/resources/country/es-EC.json
@@ -0,0 +1,761 @@
+{
+ "AF": {
+ "name": "Afganistán"
+ },
+ "AL": {
+ "name": "Albania"
+ },
+ "DE": {
+ "name": "Alemania"
+ },
+ "AD": {
+ "name": "Andorra"
+ },
+ "AO": {
+ "name": "Angola"
+ },
+ "AI": {
+ "name": "Anguila"
+ },
+ "AQ": {
+ "name": "Antártida"
+ },
+ "AG": {
+ "name": "Antigua y Barbuda"
+ },
+ "SA": {
+ "name": "Arabia Saudí"
+ },
+ "DZ": {
+ "name": "Argelia"
+ },
+ "AR": {
+ "name": "Argentina"
+ },
+ "AM": {
+ "name": "Armenia"
+ },
+ "AW": {
+ "name": "Aruba"
+ },
+ "AU": {
+ "name": "Australia"
+ },
+ "AT": {
+ "name": "Austria"
+ },
+ "AZ": {
+ "name": "Azerbaiyán"
+ },
+ "BS": {
+ "name": "Bahamas"
+ },
+ "BD": {
+ "name": "Bangladés"
+ },
+ "BB": {
+ "name": "Barbados"
+ },
+ "BH": {
+ "name": "Baréin"
+ },
+ "BE": {
+ "name": "Bélgica"
+ },
+ "BZ": {
+ "name": "Belice"
+ },
+ "BJ": {
+ "name": "Benín"
+ },
+ "BM": {
+ "name": "Bermudas"
+ },
+ "BY": {
+ "name": "Bielorrusia"
+ },
+ "BO": {
+ "name": "Bolivia"
+ },
+ "BA": {
+ "name": "Bosnia y Herzegovina"
+ },
+ "BW": {
+ "name": "Botsuana"
+ },
+ "BR": {
+ "name": "Brasil"
+ },
+ "BN": {
+ "name": "Brunéi"
+ },
+ "BG": {
+ "name": "Bulgaria"
+ },
+ "BF": {
+ "name": "Burkina Faso"
+ },
+ "BI": {
+ "name": "Burundi"
+ },
+ "BT": {
+ "name": "Bután"
+ },
+ "CV": {
+ "name": "Cabo Verde"
+ },
+ "KH": {
+ "name": "Camboya"
+ },
+ "CM": {
+ "name": "Camerún"
+ },
+ "CA": {
+ "name": "Canadá"
+ },
+ "BQ": {
+ "name": "Caribe neerlandés"
+ },
+ "QA": {
+ "name": "Catar"
+ },
+ "EA": {
+ "name": "Ceuta y Melilla"
+ },
+ "TD": {
+ "name": "Chad"
+ },
+ "CL": {
+ "name": "Chile"
+ },
+ "CN": {
+ "name": "China"
+ },
+ "CY": {
+ "name": "Chipre"
+ },
+ "VA": {
+ "name": "Ciudad del Vaticano"
+ },
+ "CO": {
+ "name": "Colombia"
+ },
+ "KM": {
+ "name": "Comoras"
+ },
+ "KP": {
+ "name": "Corea del Norte"
+ },
+ "KR": {
+ "name": "Corea del Sur"
+ },
+ "CI": {
+ "name": "Costa de Marfil"
+ },
+ "CR": {
+ "name": "Costa Rica"
+ },
+ "HR": {
+ "name": "Croacia"
+ },
+ "CU": {
+ "name": "Cuba"
+ },
+ "CW": {
+ "name": "Curazao"
+ },
+ "DG": {
+ "name": "Diego García"
+ },
+ "DK": {
+ "name": "Dinamarca"
+ },
+ "DM": {
+ "name": "Dominica"
+ },
+ "EC": {
+ "name": "Ecuador"
+ },
+ "EG": {
+ "name": "Egipto"
+ },
+ "SV": {
+ "name": "El Salvador"
+ },
+ "AE": {
+ "name": "Emiratos Ãrabes Unidos"
+ },
+ "ER": {
+ "name": "Eritrea"
+ },
+ "SK": {
+ "name": "Eslovaquia"
+ },
+ "SI": {
+ "name": "Eslovenia"
+ },
+ "ES": {
+ "name": "España"
+ },
+ "US": {
+ "name": "Estados Unidos"
+ },
+ "EE": {
+ "name": "Estonia"
+ },
+ "ET": {
+ "name": "Etiopía"
+ },
+ "PH": {
+ "name": "Filipinas"
+ },
+ "FI": {
+ "name": "Finlandia"
+ },
+ "FJ": {
+ "name": "Fiyi"
+ },
+ "FR": {
+ "name": "Francia"
+ },
+ "GA": {
+ "name": "Gabón"
+ },
+ "GM": {
+ "name": "Gambia"
+ },
+ "GE": {
+ "name": "Georgia"
+ },
+ "GH": {
+ "name": "Ghana"
+ },
+ "GI": {
+ "name": "Gibraltar"
+ },
+ "GD": {
+ "name": "Granada"
+ },
+ "GR": {
+ "name": "Grecia"
+ },
+ "GL": {
+ "name": "Groenlandia"
+ },
+ "GP": {
+ "name": "Guadalupe"
+ },
+ "GU": {
+ "name": "Guam"
+ },
+ "GT": {
+ "name": "Guatemala"
+ },
+ "GF": {
+ "name": "Guayana Francesa"
+ },
+ "GG": {
+ "name": "Guernesey"
+ },
+ "GN": {
+ "name": "Guinea"
+ },
+ "GQ": {
+ "name": "Guinea Ecuatorial"
+ },
+ "GW": {
+ "name": "Guinea-Bisáu"
+ },
+ "GY": {
+ "name": "Guyana"
+ },
+ "HT": {
+ "name": "Haití"
+ },
+ "HN": {
+ "name": "Honduras"
+ },
+ "HU": {
+ "name": "Hungría"
+ },
+ "IN": {
+ "name": "India"
+ },
+ "ID": {
+ "name": "Indonesia"
+ },
+ "IQ": {
+ "name": "Irak"
+ },
+ "IR": {
+ "name": "Irán"
+ },
+ "IE": {
+ "name": "Irlanda"
+ },
+ "AC": {
+ "name": "Isla Ascensión"
+ },
+ "CX": {
+ "name": "Isla Christmas"
+ },
+ "IM": {
+ "name": "Isla de Man"
+ },
+ "NF": {
+ "name": "Isla Norfolk"
+ },
+ "IS": {
+ "name": "Islandia"
+ },
+ "AX": {
+ "name": "Islas Ã…land"
+ },
+ "KY": {
+ "name": "Islas Caimán"
+ },
+ "IC": {
+ "name": "islas Canarias"
+ },
+ "CC": {
+ "name": "Islas Cocos"
+ },
+ "CK": {
+ "name": "Islas Cook"
+ },
+ "FO": {
+ "name": "Islas Feroe"
+ },
+ "GS": {
+ "name": "Islas Georgia del Sur y Sandwich del Sur"
+ },
+ "FK": {
+ "name": "Islas Malvinas"
+ },
+ "MP": {
+ "name": "Islas Marianas del Norte"
+ },
+ "MH": {
+ "name": "Islas Marshall"
+ },
+ "UM": {
+ "name": "Islas menores alejadas de EE. UU."
+ },
+ "PN": {
+ "name": "Islas Pitcairn"
+ },
+ "SB": {
+ "name": "Islas Salomón"
+ },
+ "TC": {
+ "name": "Islas Turcas y Caicos"
+ },
+ "VG": {
+ "name": "Islas Vírgenes Británicas"
+ },
+ "VI": {
+ "name": "Islas Vírgenes de EE. UU."
+ },
+ "IL": {
+ "name": "Israel"
+ },
+ "IT": {
+ "name": "Italia"
+ },
+ "JM": {
+ "name": "Jamaica"
+ },
+ "JP": {
+ "name": "Japón"
+ },
+ "JE": {
+ "name": "Jersey"
+ },
+ "JO": {
+ "name": "Jordania"
+ },
+ "KZ": {
+ "name": "Kazajistán"
+ },
+ "KE": {
+ "name": "Kenia"
+ },
+ "KG": {
+ "name": "Kirguistán"
+ },
+ "KI": {
+ "name": "Kiribati"
+ },
+ "XK": {
+ "name": "Kosovo"
+ },
+ "KW": {
+ "name": "Kuwait"
+ },
+ "LA": {
+ "name": "Laos"
+ },
+ "LS": {
+ "name": "Lesoto"
+ },
+ "LV": {
+ "name": "Letonia"
+ },
+ "LB": {
+ "name": "Líbano"
+ },
+ "LR": {
+ "name": "Liberia"
+ },
+ "LY": {
+ "name": "Libia"
+ },
+ "LI": {
+ "name": "Liechtenstein"
+ },
+ "LT": {
+ "name": "Lituania"
+ },
+ "LU": {
+ "name": "Luxemburgo"
+ },
+ "MK": {
+ "name": "Macedonia"
+ },
+ "MG": {
+ "name": "Madagascar"
+ },
+ "MY": {
+ "name": "Malasia"
+ },
+ "MW": {
+ "name": "Malaui"
+ },
+ "MV": {
+ "name": "Maldivas"
+ },
+ "ML": {
+ "name": "Mali"
+ },
+ "MT": {
+ "name": "Malta"
+ },
+ "MA": {
+ "name": "Marruecos"
+ },
+ "MQ": {
+ "name": "Martinica"
+ },
+ "MU": {
+ "name": "Mauricio"
+ },
+ "MR": {
+ "name": "Mauritania"
+ },
+ "YT": {
+ "name": "Mayotte"
+ },
+ "MX": {
+ "name": "México"
+ },
+ "FM": {
+ "name": "Micronesia"
+ },
+ "MD": {
+ "name": "Moldavia"
+ },
+ "MC": {
+ "name": "Mónaco"
+ },
+ "MN": {
+ "name": "Mongolia"
+ },
+ "ME": {
+ "name": "Montenegro"
+ },
+ "MS": {
+ "name": "Montserrat"
+ },
+ "MZ": {
+ "name": "Mozambique"
+ },
+ "MM": {
+ "name": "Myanmar (Birmania)"
+ },
+ "NA": {
+ "name": "Namibia"
+ },
+ "NR": {
+ "name": "Nauru"
+ },
+ "NP": {
+ "name": "Nepal"
+ },
+ "NI": {
+ "name": "Nicaragua"
+ },
+ "NE": {
+ "name": "Níger"
+ },
+ "NG": {
+ "name": "Nigeria"
+ },
+ "NU": {
+ "name": "Niue"
+ },
+ "NO": {
+ "name": "Noruega"
+ },
+ "NC": {
+ "name": "Nueva Caledonia"
+ },
+ "NZ": {
+ "name": "Nueva Zelanda"
+ },
+ "OM": {
+ "name": "Omán"
+ },
+ "NL": {
+ "name": "Países Bajos"
+ },
+ "PK": {
+ "name": "Pakistán"
+ },
+ "PW": {
+ "name": "Palau"
+ },
+ "PA": {
+ "name": "Panamá"
+ },
+ "PG": {
+ "name": "Papúa Nueva Guinea"
+ },
+ "PY": {
+ "name": "Paraguay"
+ },
+ "PE": {
+ "name": "Perú"
+ },
+ "PF": {
+ "name": "Polinesia Francesa"
+ },
+ "PL": {
+ "name": "Polonia"
+ },
+ "PT": {
+ "name": "Portugal"
+ },
+ "PR": {
+ "name": "Puerto Rico"
+ },
+ "HK": {
+ "name": "RAE de Hong Kong (China)"
+ },
+ "MO": {
+ "name": "RAE de Macao (China)"
+ },
+ "GB": {
+ "name": "Reino Unido"
+ },
+ "CF": {
+ "name": "República Centroafricana"
+ },
+ "CZ": {
+ "name": "República Checa"
+ },
+ "CG": {
+ "name": "República del Congo"
+ },
+ "CD": {
+ "name": "República Democrática del Congo"
+ },
+ "DO": {
+ "name": "República Dominicana"
+ },
+ "RE": {
+ "name": "Reunión"
+ },
+ "RW": {
+ "name": "Ruanda"
+ },
+ "RO": {
+ "name": "Rumanía"
+ },
+ "RU": {
+ "name": "Rusia"
+ },
+ "EH": {
+ "name": "Sáhara Occidental"
+ },
+ "WS": {
+ "name": "Samoa"
+ },
+ "AS": {
+ "name": "Samoa Americana"
+ },
+ "BL": {
+ "name": "San Bartolomé"
+ },
+ "KN": {
+ "name": "San Cristóbal y Nieves"
+ },
+ "SM": {
+ "name": "San Marino"
+ },
+ "MF": {
+ "name": "San Martín"
+ },
+ "PM": {
+ "name": "San Pedro y Miquelón"
+ },
+ "VC": {
+ "name": "San Vicente y las Granadinas"
+ },
+ "SH": {
+ "name": "Santa Elena"
+ },
+ "LC": {
+ "name": "Santa Lucía"
+ },
+ "ST": {
+ "name": "Santo Tomé y Príncipe"
+ },
+ "SN": {
+ "name": "Senegal"
+ },
+ "RS": {
+ "name": "Serbia"
+ },
+ "SC": {
+ "name": "Seychelles"
+ },
+ "SL": {
+ "name": "Sierra Leona"
+ },
+ "SG": {
+ "name": "Singapur"
+ },
+ "SX": {
+ "name": "Sint Maarten"
+ },
+ "SY": {
+ "name": "Siria"
+ },
+ "SO": {
+ "name": "Somalia"
+ },
+ "LK": {
+ "name": "Sri Lanka"
+ },
+ "SZ": {
+ "name": "Suazilandia"
+ },
+ "ZA": {
+ "name": "Sudáfrica"
+ },
+ "SD": {
+ "name": "Sudán"
+ },
+ "SS": {
+ "name": "Sudán del Sur"
+ },
+ "SE": {
+ "name": "Suecia"
+ },
+ "CH": {
+ "name": "Suiza"
+ },
+ "SR": {
+ "name": "Surinam"
+ },
+ "SJ": {
+ "name": "Svalbard y Jan Mayen"
+ },
+ "TH": {
+ "name": "Tailandia"
+ },
+ "TW": {
+ "name": "Taiwán"
+ },
+ "TZ": {
+ "name": "Tanzania"
+ },
+ "TJ": {
+ "name": "Tayikistán"
+ },
+ "IO": {
+ "name": "Territorio Británico del Océano Ãndico"
+ },
+ "TF": {
+ "name": "Territorios Australes Franceses"
+ },
+ "PS": {
+ "name": "Territorios Palestinos"
+ },
+ "TL": {
+ "name": "Timor Oriental"
+ },
+ "TG": {
+ "name": "Togo"
+ },
+ "TK": {
+ "name": "Tokelau"
+ },
+ "TO": {
+ "name": "Tonga"
+ },
+ "TT": {
+ "name": "Trinidad y Tobago"
+ },
+ "TA": {
+ "name": "Tristán da Cunha"
+ },
+ "TN": {
+ "name": "Túnez"
+ },
+ "TM": {
+ "name": "Turkmenistán"
+ },
+ "TR": {
+ "name": "Turquía"
+ },
+ "TV": {
+ "name": "Tuvalu"
+ },
+ "UA": {
+ "name": "Ucrania"
+ },
+ "UG": {
+ "name": "Uganda"
+ },
+ "UY": {
+ "name": "Uruguay"
+ },
+ "UZ": {
+ "name": "Uzbekistán"
+ },
+ "VU": {
+ "name": "Vanuatu"
+ },
+ "VE": {
+ "name": "Venezuela"
+ },
+ "VN": {
+ "name": "Vietnam"
+ },
+ "WF": {
+ "name": "Wallis y Futuna"
+ },
+ "YE": {
+ "name": "Yemen"
+ },
+ "DJ": {
+ "name": "Yibuti"
+ },
+ "ZM": {
+ "name": "Zambia"
+ },
+ "ZW": {
+ "name": "Zimbabue"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/country/es-GT.json b/library/intl/resources/country/es-GT.json
new file mode 100644
index 000000000..6a02f5aec
--- /dev/null
+++ b/library/intl/resources/country/es-GT.json
@@ -0,0 +1,761 @@
+{
+ "AF": {
+ "name": "Afganistán"
+ },
+ "AL": {
+ "name": "Albania"
+ },
+ "DE": {
+ "name": "Alemania"
+ },
+ "AD": {
+ "name": "Andorra"
+ },
+ "AO": {
+ "name": "Angola"
+ },
+ "AI": {
+ "name": "Anguila"
+ },
+ "AQ": {
+ "name": "Antártida"
+ },
+ "AG": {
+ "name": "Antigua y Barbuda"
+ },
+ "SA": {
+ "name": "Arabia Saudí"
+ },
+ "DZ": {
+ "name": "Argelia"
+ },
+ "AR": {
+ "name": "Argentina"
+ },
+ "AM": {
+ "name": "Armenia"
+ },
+ "AW": {
+ "name": "Aruba"
+ },
+ "AU": {
+ "name": "Australia"
+ },
+ "AT": {
+ "name": "Austria"
+ },
+ "AZ": {
+ "name": "Azerbaiyán"
+ },
+ "BS": {
+ "name": "Bahamas"
+ },
+ "BD": {
+ "name": "Bangladés"
+ },
+ "BB": {
+ "name": "Barbados"
+ },
+ "BH": {
+ "name": "Baréin"
+ },
+ "BE": {
+ "name": "Bélgica"
+ },
+ "BZ": {
+ "name": "Belice"
+ },
+ "BJ": {
+ "name": "Benín"
+ },
+ "BM": {
+ "name": "Bermudas"
+ },
+ "BY": {
+ "name": "Bielorrusia"
+ },
+ "BO": {
+ "name": "Bolivia"
+ },
+ "BA": {
+ "name": "Bosnia y Herzegovina"
+ },
+ "BW": {
+ "name": "Botsuana"
+ },
+ "BR": {
+ "name": "Brasil"
+ },
+ "BN": {
+ "name": "Brunéi"
+ },
+ "BG": {
+ "name": "Bulgaria"
+ },
+ "BF": {
+ "name": "Burkina Faso"
+ },
+ "BI": {
+ "name": "Burundi"
+ },
+ "BT": {
+ "name": "Bután"
+ },
+ "CV": {
+ "name": "Cabo Verde"
+ },
+ "KH": {
+ "name": "Camboya"
+ },
+ "CM": {
+ "name": "Camerún"
+ },
+ "CA": {
+ "name": "Canadá"
+ },
+ "BQ": {
+ "name": "Caribe neerlandés"
+ },
+ "QA": {
+ "name": "Catar"
+ },
+ "EA": {
+ "name": "Ceuta y Melilla"
+ },
+ "TD": {
+ "name": "Chad"
+ },
+ "CL": {
+ "name": "Chile"
+ },
+ "CN": {
+ "name": "China"
+ },
+ "CY": {
+ "name": "Chipre"
+ },
+ "VA": {
+ "name": "Ciudad del Vaticano"
+ },
+ "CO": {
+ "name": "Colombia"
+ },
+ "KM": {
+ "name": "Comoras"
+ },
+ "KP": {
+ "name": "Corea del Norte"
+ },
+ "KR": {
+ "name": "Corea del Sur"
+ },
+ "CI": {
+ "name": "Costa de Marfil"
+ },
+ "CR": {
+ "name": "Costa Rica"
+ },
+ "HR": {
+ "name": "Croacia"
+ },
+ "CU": {
+ "name": "Cuba"
+ },
+ "CW": {
+ "name": "Curazao"
+ },
+ "DG": {
+ "name": "Diego García"
+ },
+ "DK": {
+ "name": "Dinamarca"
+ },
+ "DM": {
+ "name": "Dominica"
+ },
+ "EC": {
+ "name": "Ecuador"
+ },
+ "EG": {
+ "name": "Egipto"
+ },
+ "SV": {
+ "name": "El Salvador"
+ },
+ "AE": {
+ "name": "Emiratos Ãrabes Unidos"
+ },
+ "ER": {
+ "name": "Eritrea"
+ },
+ "SK": {
+ "name": "Eslovaquia"
+ },
+ "SI": {
+ "name": "Eslovenia"
+ },
+ "ES": {
+ "name": "España"
+ },
+ "US": {
+ "name": "Estados Unidos"
+ },
+ "EE": {
+ "name": "Estonia"
+ },
+ "ET": {
+ "name": "Etiopía"
+ },
+ "PH": {
+ "name": "Filipinas"
+ },
+ "FI": {
+ "name": "Finlandia"
+ },
+ "FJ": {
+ "name": "Fiyi"
+ },
+ "FR": {
+ "name": "Francia"
+ },
+ "GA": {
+ "name": "Gabón"
+ },
+ "GM": {
+ "name": "Gambia"
+ },
+ "GE": {
+ "name": "Georgia"
+ },
+ "GH": {
+ "name": "Ghana"
+ },
+ "GI": {
+ "name": "Gibraltar"
+ },
+ "GD": {
+ "name": "Granada"
+ },
+ "GR": {
+ "name": "Grecia"
+ },
+ "GL": {
+ "name": "Groenlandia"
+ },
+ "GP": {
+ "name": "Guadalupe"
+ },
+ "GU": {
+ "name": "Guam"
+ },
+ "GT": {
+ "name": "Guatemala"
+ },
+ "GF": {
+ "name": "Guayana Francesa"
+ },
+ "GG": {
+ "name": "Guernesey"
+ },
+ "GN": {
+ "name": "Guinea"
+ },
+ "GQ": {
+ "name": "Guinea Ecuatorial"
+ },
+ "GW": {
+ "name": "Guinea-Bisáu"
+ },
+ "GY": {
+ "name": "Guyana"
+ },
+ "HT": {
+ "name": "Haití"
+ },
+ "HN": {
+ "name": "Honduras"
+ },
+ "HU": {
+ "name": "Hungría"
+ },
+ "IN": {
+ "name": "India"
+ },
+ "ID": {
+ "name": "Indonesia"
+ },
+ "IQ": {
+ "name": "Irak"
+ },
+ "IR": {
+ "name": "Irán"
+ },
+ "IE": {
+ "name": "Irlanda"
+ },
+ "AC": {
+ "name": "Isla Ascensión"
+ },
+ "CX": {
+ "name": "Isla Christmas"
+ },
+ "IM": {
+ "name": "Isla de Man"
+ },
+ "NF": {
+ "name": "Isla Norfolk"
+ },
+ "IS": {
+ "name": "Islandia"
+ },
+ "AX": {
+ "name": "Islas Ã…land"
+ },
+ "KY": {
+ "name": "Islas Caimán"
+ },
+ "IC": {
+ "name": "islas Canarias"
+ },
+ "CC": {
+ "name": "Islas Cocos"
+ },
+ "CK": {
+ "name": "Islas Cook"
+ },
+ "FO": {
+ "name": "Islas Feroe"
+ },
+ "GS": {
+ "name": "Islas Georgia del Sur y Sandwich del Sur"
+ },
+ "FK": {
+ "name": "Islas Malvinas"
+ },
+ "MP": {
+ "name": "Islas Marianas del Norte"
+ },
+ "MH": {
+ "name": "Islas Marshall"
+ },
+ "UM": {
+ "name": "Islas menores alejadas de EE. UU."
+ },
+ "PN": {
+ "name": "Islas Pitcairn"
+ },
+ "SB": {
+ "name": "Islas Salomón"
+ },
+ "TC": {
+ "name": "Islas Turcas y Caicos"
+ },
+ "VG": {
+ "name": "Islas Vírgenes Británicas"
+ },
+ "VI": {
+ "name": "Islas Vírgenes de EE. UU."
+ },
+ "IL": {
+ "name": "Israel"
+ },
+ "IT": {
+ "name": "Italia"
+ },
+ "JM": {
+ "name": "Jamaica"
+ },
+ "JP": {
+ "name": "Japón"
+ },
+ "JE": {
+ "name": "Jersey"
+ },
+ "JO": {
+ "name": "Jordania"
+ },
+ "KZ": {
+ "name": "Kazajistán"
+ },
+ "KE": {
+ "name": "Kenia"
+ },
+ "KG": {
+ "name": "Kirguistán"
+ },
+ "KI": {
+ "name": "Kiribati"
+ },
+ "XK": {
+ "name": "Kosovo"
+ },
+ "KW": {
+ "name": "Kuwait"
+ },
+ "LA": {
+ "name": "Laos"
+ },
+ "LS": {
+ "name": "Lesoto"
+ },
+ "LV": {
+ "name": "Letonia"
+ },
+ "LB": {
+ "name": "Líbano"
+ },
+ "LR": {
+ "name": "Liberia"
+ },
+ "LY": {
+ "name": "Libia"
+ },
+ "LI": {
+ "name": "Liechtenstein"
+ },
+ "LT": {
+ "name": "Lituania"
+ },
+ "LU": {
+ "name": "Luxemburgo"
+ },
+ "MK": {
+ "name": "Macedonia"
+ },
+ "MG": {
+ "name": "Madagascar"
+ },
+ "MY": {
+ "name": "Malasia"
+ },
+ "MW": {
+ "name": "Malaui"
+ },
+ "MV": {
+ "name": "Maldivas"
+ },
+ "ML": {
+ "name": "Mali"
+ },
+ "MT": {
+ "name": "Malta"
+ },
+ "MA": {
+ "name": "Marruecos"
+ },
+ "MQ": {
+ "name": "Martinica"
+ },
+ "MU": {
+ "name": "Mauricio"
+ },
+ "MR": {
+ "name": "Mauritania"
+ },
+ "YT": {
+ "name": "Mayotte"
+ },
+ "MX": {
+ "name": "México"
+ },
+ "FM": {
+ "name": "Micronesia"
+ },
+ "MD": {
+ "name": "Moldavia"
+ },
+ "MC": {
+ "name": "Mónaco"
+ },
+ "MN": {
+ "name": "Mongolia"
+ },
+ "ME": {
+ "name": "Montenegro"
+ },
+ "MS": {
+ "name": "Montserrat"
+ },
+ "MZ": {
+ "name": "Mozambique"
+ },
+ "MM": {
+ "name": "Myanmar (Birmania)"
+ },
+ "NA": {
+ "name": "Namibia"
+ },
+ "NR": {
+ "name": "Nauru"
+ },
+ "NP": {
+ "name": "Nepal"
+ },
+ "NI": {
+ "name": "Nicaragua"
+ },
+ "NE": {
+ "name": "Níger"
+ },
+ "NG": {
+ "name": "Nigeria"
+ },
+ "NU": {
+ "name": "Niue"
+ },
+ "NO": {
+ "name": "Noruega"
+ },
+ "NC": {
+ "name": "Nueva Caledonia"
+ },
+ "NZ": {
+ "name": "Nueva Zelanda"
+ },
+ "OM": {
+ "name": "Omán"
+ },
+ "NL": {
+ "name": "Países Bajos"
+ },
+ "PK": {
+ "name": "Pakistán"
+ },
+ "PW": {
+ "name": "Palau"
+ },
+ "PA": {
+ "name": "Panamá"
+ },
+ "PG": {
+ "name": "Papúa Nueva Guinea"
+ },
+ "PY": {
+ "name": "Paraguay"
+ },
+ "PE": {
+ "name": "Perú"
+ },
+ "PF": {
+ "name": "Polinesia Francesa"
+ },
+ "PL": {
+ "name": "Polonia"
+ },
+ "PT": {
+ "name": "Portugal"
+ },
+ "PR": {
+ "name": "Puerto Rico"
+ },
+ "HK": {
+ "name": "RAE de Hong Kong (China)"
+ },
+ "MO": {
+ "name": "RAE de Macao (China)"
+ },
+ "GB": {
+ "name": "Reino Unido"
+ },
+ "CF": {
+ "name": "República Centroafricana"
+ },
+ "CZ": {
+ "name": "República Checa"
+ },
+ "CG": {
+ "name": "República del Congo"
+ },
+ "CD": {
+ "name": "República Democrática del Congo"
+ },
+ "DO": {
+ "name": "República Dominicana"
+ },
+ "RE": {
+ "name": "Reunión"
+ },
+ "RW": {
+ "name": "Ruanda"
+ },
+ "RO": {
+ "name": "Rumanía"
+ },
+ "RU": {
+ "name": "Rusia"
+ },
+ "EH": {
+ "name": "Sáhara Occidental"
+ },
+ "WS": {
+ "name": "Samoa"
+ },
+ "AS": {
+ "name": "Samoa Americana"
+ },
+ "BL": {
+ "name": "San Bartolomé"
+ },
+ "KN": {
+ "name": "San Cristóbal y Nieves"
+ },
+ "SM": {
+ "name": "San Marino"
+ },
+ "MF": {
+ "name": "San Martín"
+ },
+ "PM": {
+ "name": "San Pedro y Miquelón"
+ },
+ "VC": {
+ "name": "San Vicente y las Granadinas"
+ },
+ "SH": {
+ "name": "Santa Elena"
+ },
+ "LC": {
+ "name": "Santa Lucía"
+ },
+ "ST": {
+ "name": "Santo Tomé y Príncipe"
+ },
+ "SN": {
+ "name": "Senegal"
+ },
+ "RS": {
+ "name": "Serbia"
+ },
+ "SC": {
+ "name": "Seychelles"
+ },
+ "SL": {
+ "name": "Sierra Leona"
+ },
+ "SG": {
+ "name": "Singapur"
+ },
+ "SX": {
+ "name": "Sint Maarten"
+ },
+ "SY": {
+ "name": "Siria"
+ },
+ "SO": {
+ "name": "Somalia"
+ },
+ "LK": {
+ "name": "Sri Lanka"
+ },
+ "SZ": {
+ "name": "Suazilandia"
+ },
+ "ZA": {
+ "name": "Sudáfrica"
+ },
+ "SD": {
+ "name": "Sudán"
+ },
+ "SS": {
+ "name": "Sudán del Sur"
+ },
+ "SE": {
+ "name": "Suecia"
+ },
+ "CH": {
+ "name": "Suiza"
+ },
+ "SR": {
+ "name": "Surinam"
+ },
+ "SJ": {
+ "name": "Svalbard y Jan Mayen"
+ },
+ "TH": {
+ "name": "Tailandia"
+ },
+ "TW": {
+ "name": "Taiwán"
+ },
+ "TZ": {
+ "name": "Tanzania"
+ },
+ "TJ": {
+ "name": "Tayikistán"
+ },
+ "IO": {
+ "name": "Territorio Británico del Océano Ãndico"
+ },
+ "TF": {
+ "name": "Territorios Australes Franceses"
+ },
+ "PS": {
+ "name": "Territorios Palestinos"
+ },
+ "TL": {
+ "name": "Timor Oriental"
+ },
+ "TG": {
+ "name": "Togo"
+ },
+ "TK": {
+ "name": "Tokelau"
+ },
+ "TO": {
+ "name": "Tonga"
+ },
+ "TT": {
+ "name": "Trinidad y Tobago"
+ },
+ "TA": {
+ "name": "Tristán da Cunha"
+ },
+ "TN": {
+ "name": "Túnez"
+ },
+ "TM": {
+ "name": "Turkmenistán"
+ },
+ "TR": {
+ "name": "Turquía"
+ },
+ "TV": {
+ "name": "Tuvalu"
+ },
+ "UA": {
+ "name": "Ucrania"
+ },
+ "UG": {
+ "name": "Uganda"
+ },
+ "UY": {
+ "name": "Uruguay"
+ },
+ "UZ": {
+ "name": "Uzbekistán"
+ },
+ "VU": {
+ "name": "Vanuatu"
+ },
+ "VE": {
+ "name": "Venezuela"
+ },
+ "VN": {
+ "name": "Vietnam"
+ },
+ "WF": {
+ "name": "Wallis y Futuna"
+ },
+ "YE": {
+ "name": "Yemen"
+ },
+ "DJ": {
+ "name": "Yibuti"
+ },
+ "ZM": {
+ "name": "Zambia"
+ },
+ "ZW": {
+ "name": "Zimbabue"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/country/es-HN.json b/library/intl/resources/country/es-HN.json
new file mode 100644
index 000000000..6a02f5aec
--- /dev/null
+++ b/library/intl/resources/country/es-HN.json
@@ -0,0 +1,761 @@
+{
+ "AF": {
+ "name": "Afganistán"
+ },
+ "AL": {
+ "name": "Albania"
+ },
+ "DE": {
+ "name": "Alemania"
+ },
+ "AD": {
+ "name": "Andorra"
+ },
+ "AO": {
+ "name": "Angola"
+ },
+ "AI": {
+ "name": "Anguila"
+ },
+ "AQ": {
+ "name": "Antártida"
+ },
+ "AG": {
+ "name": "Antigua y Barbuda"
+ },
+ "SA": {
+ "name": "Arabia Saudí"
+ },
+ "DZ": {
+ "name": "Argelia"
+ },
+ "AR": {
+ "name": "Argentina"
+ },
+ "AM": {
+ "name": "Armenia"
+ },
+ "AW": {
+ "name": "Aruba"
+ },
+ "AU": {
+ "name": "Australia"
+ },
+ "AT": {
+ "name": "Austria"
+ },
+ "AZ": {
+ "name": "Azerbaiyán"
+ },
+ "BS": {
+ "name": "Bahamas"
+ },
+ "BD": {
+ "name": "Bangladés"
+ },
+ "BB": {
+ "name": "Barbados"
+ },
+ "BH": {
+ "name": "Baréin"
+ },
+ "BE": {
+ "name": "Bélgica"
+ },
+ "BZ": {
+ "name": "Belice"
+ },
+ "BJ": {
+ "name": "Benín"
+ },
+ "BM": {
+ "name": "Bermudas"
+ },
+ "BY": {
+ "name": "Bielorrusia"
+ },
+ "BO": {
+ "name": "Bolivia"
+ },
+ "BA": {
+ "name": "Bosnia y Herzegovina"
+ },
+ "BW": {
+ "name": "Botsuana"
+ },
+ "BR": {
+ "name": "Brasil"
+ },
+ "BN": {
+ "name": "Brunéi"
+ },
+ "BG": {
+ "name": "Bulgaria"
+ },
+ "BF": {
+ "name": "Burkina Faso"
+ },
+ "BI": {
+ "name": "Burundi"
+ },
+ "BT": {
+ "name": "Bután"
+ },
+ "CV": {
+ "name": "Cabo Verde"
+ },
+ "KH": {
+ "name": "Camboya"
+ },
+ "CM": {
+ "name": "Camerún"
+ },
+ "CA": {
+ "name": "Canadá"
+ },
+ "BQ": {
+ "name": "Caribe neerlandés"
+ },
+ "QA": {
+ "name": "Catar"
+ },
+ "EA": {
+ "name": "Ceuta y Melilla"
+ },
+ "TD": {
+ "name": "Chad"
+ },
+ "CL": {
+ "name": "Chile"
+ },
+ "CN": {
+ "name": "China"
+ },
+ "CY": {
+ "name": "Chipre"
+ },
+ "VA": {
+ "name": "Ciudad del Vaticano"
+ },
+ "CO": {
+ "name": "Colombia"
+ },
+ "KM": {
+ "name": "Comoras"
+ },
+ "KP": {
+ "name": "Corea del Norte"
+ },
+ "KR": {
+ "name": "Corea del Sur"
+ },
+ "CI": {
+ "name": "Costa de Marfil"
+ },
+ "CR": {
+ "name": "Costa Rica"
+ },
+ "HR": {
+ "name": "Croacia"
+ },
+ "CU": {
+ "name": "Cuba"
+ },
+ "CW": {
+ "name": "Curazao"
+ },
+ "DG": {
+ "name": "Diego García"
+ },
+ "DK": {
+ "name": "Dinamarca"
+ },
+ "DM": {
+ "name": "Dominica"
+ },
+ "EC": {
+ "name": "Ecuador"
+ },
+ "EG": {
+ "name": "Egipto"
+ },
+ "SV": {
+ "name": "El Salvador"
+ },
+ "AE": {
+ "name": "Emiratos Ãrabes Unidos"
+ },
+ "ER": {
+ "name": "Eritrea"
+ },
+ "SK": {
+ "name": "Eslovaquia"
+ },
+ "SI": {
+ "name": "Eslovenia"
+ },
+ "ES": {
+ "name": "España"
+ },
+ "US": {
+ "name": "Estados Unidos"
+ },
+ "EE": {
+ "name": "Estonia"
+ },
+ "ET": {
+ "name": "Etiopía"
+ },
+ "PH": {
+ "name": "Filipinas"
+ },
+ "FI": {
+ "name": "Finlandia"
+ },
+ "FJ": {
+ "name": "Fiyi"
+ },
+ "FR": {
+ "name": "Francia"
+ },
+ "GA": {
+ "name": "Gabón"
+ },
+ "GM": {
+ "name": "Gambia"
+ },
+ "GE": {
+ "name": "Georgia"
+ },
+ "GH": {
+ "name": "Ghana"
+ },
+ "GI": {
+ "name": "Gibraltar"
+ },
+ "GD": {
+ "name": "Granada"
+ },
+ "GR": {
+ "name": "Grecia"
+ },
+ "GL": {
+ "name": "Groenlandia"
+ },
+ "GP": {
+ "name": "Guadalupe"
+ },
+ "GU": {
+ "name": "Guam"
+ },
+ "GT": {
+ "name": "Guatemala"
+ },
+ "GF": {
+ "name": "Guayana Francesa"
+ },
+ "GG": {
+ "name": "Guernesey"
+ },
+ "GN": {
+ "name": "Guinea"
+ },
+ "GQ": {
+ "name": "Guinea Ecuatorial"
+ },
+ "GW": {
+ "name": "Guinea-Bisáu"
+ },
+ "GY": {
+ "name": "Guyana"
+ },
+ "HT": {
+ "name": "Haití"
+ },
+ "HN": {
+ "name": "Honduras"
+ },
+ "HU": {
+ "name": "Hungría"
+ },
+ "IN": {
+ "name": "India"
+ },
+ "ID": {
+ "name": "Indonesia"
+ },
+ "IQ": {
+ "name": "Irak"
+ },
+ "IR": {
+ "name": "Irán"
+ },
+ "IE": {
+ "name": "Irlanda"
+ },
+ "AC": {
+ "name": "Isla Ascensión"
+ },
+ "CX": {
+ "name": "Isla Christmas"
+ },
+ "IM": {
+ "name": "Isla de Man"
+ },
+ "NF": {
+ "name": "Isla Norfolk"
+ },
+ "IS": {
+ "name": "Islandia"
+ },
+ "AX": {
+ "name": "Islas Ã…land"
+ },
+ "KY": {
+ "name": "Islas Caimán"
+ },
+ "IC": {
+ "name": "islas Canarias"
+ },
+ "CC": {
+ "name": "Islas Cocos"
+ },
+ "CK": {
+ "name": "Islas Cook"
+ },
+ "FO": {
+ "name": "Islas Feroe"
+ },
+ "GS": {
+ "name": "Islas Georgia del Sur y Sandwich del Sur"
+ },
+ "FK": {
+ "name": "Islas Malvinas"
+ },
+ "MP": {
+ "name": "Islas Marianas del Norte"
+ },
+ "MH": {
+ "name": "Islas Marshall"
+ },
+ "UM": {
+ "name": "Islas menores alejadas de EE. UU."
+ },
+ "PN": {
+ "name": "Islas Pitcairn"
+ },
+ "SB": {
+ "name": "Islas Salomón"
+ },
+ "TC": {
+ "name": "Islas Turcas y Caicos"
+ },
+ "VG": {
+ "name": "Islas Vírgenes Británicas"
+ },
+ "VI": {
+ "name": "Islas Vírgenes de EE. UU."
+ },
+ "IL": {
+ "name": "Israel"
+ },
+ "IT": {
+ "name": "Italia"
+ },
+ "JM": {
+ "name": "Jamaica"
+ },
+ "JP": {
+ "name": "Japón"
+ },
+ "JE": {
+ "name": "Jersey"
+ },
+ "JO": {
+ "name": "Jordania"
+ },
+ "KZ": {
+ "name": "Kazajistán"
+ },
+ "KE": {
+ "name": "Kenia"
+ },
+ "KG": {
+ "name": "Kirguistán"
+ },
+ "KI": {
+ "name": "Kiribati"
+ },
+ "XK": {
+ "name": "Kosovo"
+ },
+ "KW": {
+ "name": "Kuwait"
+ },
+ "LA": {
+ "name": "Laos"
+ },
+ "LS": {
+ "name": "Lesoto"
+ },
+ "LV": {
+ "name": "Letonia"
+ },
+ "LB": {
+ "name": "Líbano"
+ },
+ "LR": {
+ "name": "Liberia"
+ },
+ "LY": {
+ "name": "Libia"
+ },
+ "LI": {
+ "name": "Liechtenstein"
+ },
+ "LT": {
+ "name": "Lituania"
+ },
+ "LU": {
+ "name": "Luxemburgo"
+ },
+ "MK": {
+ "name": "Macedonia"
+ },
+ "MG": {
+ "name": "Madagascar"
+ },
+ "MY": {
+ "name": "Malasia"
+ },
+ "MW": {
+ "name": "Malaui"
+ },
+ "MV": {
+ "name": "Maldivas"
+ },
+ "ML": {
+ "name": "Mali"
+ },
+ "MT": {
+ "name": "Malta"
+ },
+ "MA": {
+ "name": "Marruecos"
+ },
+ "MQ": {
+ "name": "Martinica"
+ },
+ "MU": {
+ "name": "Mauricio"
+ },
+ "MR": {
+ "name": "Mauritania"
+ },
+ "YT": {
+ "name": "Mayotte"
+ },
+ "MX": {
+ "name": "México"
+ },
+ "FM": {
+ "name": "Micronesia"
+ },
+ "MD": {
+ "name": "Moldavia"
+ },
+ "MC": {
+ "name": "Mónaco"
+ },
+ "MN": {
+ "name": "Mongolia"
+ },
+ "ME": {
+ "name": "Montenegro"
+ },
+ "MS": {
+ "name": "Montserrat"
+ },
+ "MZ": {
+ "name": "Mozambique"
+ },
+ "MM": {
+ "name": "Myanmar (Birmania)"
+ },
+ "NA": {
+ "name": "Namibia"
+ },
+ "NR": {
+ "name": "Nauru"
+ },
+ "NP": {
+ "name": "Nepal"
+ },
+ "NI": {
+ "name": "Nicaragua"
+ },
+ "NE": {
+ "name": "Níger"
+ },
+ "NG": {
+ "name": "Nigeria"
+ },
+ "NU": {
+ "name": "Niue"
+ },
+ "NO": {
+ "name": "Noruega"
+ },
+ "NC": {
+ "name": "Nueva Caledonia"
+ },
+ "NZ": {
+ "name": "Nueva Zelanda"
+ },
+ "OM": {
+ "name": "Omán"
+ },
+ "NL": {
+ "name": "Países Bajos"
+ },
+ "PK": {
+ "name": "Pakistán"
+ },
+ "PW": {
+ "name": "Palau"
+ },
+ "PA": {
+ "name": "Panamá"
+ },
+ "PG": {
+ "name": "Papúa Nueva Guinea"
+ },
+ "PY": {
+ "name": "Paraguay"
+ },
+ "PE": {
+ "name": "Perú"
+ },
+ "PF": {
+ "name": "Polinesia Francesa"
+ },
+ "PL": {
+ "name": "Polonia"
+ },
+ "PT": {
+ "name": "Portugal"
+ },
+ "PR": {
+ "name": "Puerto Rico"
+ },
+ "HK": {
+ "name": "RAE de Hong Kong (China)"
+ },
+ "MO": {
+ "name": "RAE de Macao (China)"
+ },
+ "GB": {
+ "name": "Reino Unido"
+ },
+ "CF": {
+ "name": "República Centroafricana"
+ },
+ "CZ": {
+ "name": "República Checa"
+ },
+ "CG": {
+ "name": "República del Congo"
+ },
+ "CD": {
+ "name": "República Democrática del Congo"
+ },
+ "DO": {
+ "name": "República Dominicana"
+ },
+ "RE": {
+ "name": "Reunión"
+ },
+ "RW": {
+ "name": "Ruanda"
+ },
+ "RO": {
+ "name": "Rumanía"
+ },
+ "RU": {
+ "name": "Rusia"
+ },
+ "EH": {
+ "name": "Sáhara Occidental"
+ },
+ "WS": {
+ "name": "Samoa"
+ },
+ "AS": {
+ "name": "Samoa Americana"
+ },
+ "BL": {
+ "name": "San Bartolomé"
+ },
+ "KN": {
+ "name": "San Cristóbal y Nieves"
+ },
+ "SM": {
+ "name": "San Marino"
+ },
+ "MF": {
+ "name": "San Martín"
+ },
+ "PM": {
+ "name": "San Pedro y Miquelón"
+ },
+ "VC": {
+ "name": "San Vicente y las Granadinas"
+ },
+ "SH": {
+ "name": "Santa Elena"
+ },
+ "LC": {
+ "name": "Santa Lucía"
+ },
+ "ST": {
+ "name": "Santo Tomé y Príncipe"
+ },
+ "SN": {
+ "name": "Senegal"
+ },
+ "RS": {
+ "name": "Serbia"
+ },
+ "SC": {
+ "name": "Seychelles"
+ },
+ "SL": {
+ "name": "Sierra Leona"
+ },
+ "SG": {
+ "name": "Singapur"
+ },
+ "SX": {
+ "name": "Sint Maarten"
+ },
+ "SY": {
+ "name": "Siria"
+ },
+ "SO": {
+ "name": "Somalia"
+ },
+ "LK": {
+ "name": "Sri Lanka"
+ },
+ "SZ": {
+ "name": "Suazilandia"
+ },
+ "ZA": {
+ "name": "Sudáfrica"
+ },
+ "SD": {
+ "name": "Sudán"
+ },
+ "SS": {
+ "name": "Sudán del Sur"
+ },
+ "SE": {
+ "name": "Suecia"
+ },
+ "CH": {
+ "name": "Suiza"
+ },
+ "SR": {
+ "name": "Surinam"
+ },
+ "SJ": {
+ "name": "Svalbard y Jan Mayen"
+ },
+ "TH": {
+ "name": "Tailandia"
+ },
+ "TW": {
+ "name": "Taiwán"
+ },
+ "TZ": {
+ "name": "Tanzania"
+ },
+ "TJ": {
+ "name": "Tayikistán"
+ },
+ "IO": {
+ "name": "Territorio Británico del Océano Ãndico"
+ },
+ "TF": {
+ "name": "Territorios Australes Franceses"
+ },
+ "PS": {
+ "name": "Territorios Palestinos"
+ },
+ "TL": {
+ "name": "Timor Oriental"
+ },
+ "TG": {
+ "name": "Togo"
+ },
+ "TK": {
+ "name": "Tokelau"
+ },
+ "TO": {
+ "name": "Tonga"
+ },
+ "TT": {
+ "name": "Trinidad y Tobago"
+ },
+ "TA": {
+ "name": "Tristán da Cunha"
+ },
+ "TN": {
+ "name": "Túnez"
+ },
+ "TM": {
+ "name": "Turkmenistán"
+ },
+ "TR": {
+ "name": "Turquía"
+ },
+ "TV": {
+ "name": "Tuvalu"
+ },
+ "UA": {
+ "name": "Ucrania"
+ },
+ "UG": {
+ "name": "Uganda"
+ },
+ "UY": {
+ "name": "Uruguay"
+ },
+ "UZ": {
+ "name": "Uzbekistán"
+ },
+ "VU": {
+ "name": "Vanuatu"
+ },
+ "VE": {
+ "name": "Venezuela"
+ },
+ "VN": {
+ "name": "Vietnam"
+ },
+ "WF": {
+ "name": "Wallis y Futuna"
+ },
+ "YE": {
+ "name": "Yemen"
+ },
+ "DJ": {
+ "name": "Yibuti"
+ },
+ "ZM": {
+ "name": "Zambia"
+ },
+ "ZW": {
+ "name": "Zimbabue"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/country/es-MX.json b/library/intl/resources/country/es-MX.json
new file mode 100644
index 000000000..7d7df13bc
--- /dev/null
+++ b/library/intl/resources/country/es-MX.json
@@ -0,0 +1,761 @@
+{
+ "AF": {
+ "name": "Afganistán"
+ },
+ "AL": {
+ "name": "Albania"
+ },
+ "DE": {
+ "name": "Alemania"
+ },
+ "AD": {
+ "name": "Andorra"
+ },
+ "AO": {
+ "name": "Angola"
+ },
+ "AI": {
+ "name": "Anguila"
+ },
+ "AQ": {
+ "name": "Antártida"
+ },
+ "AG": {
+ "name": "Antigua y Barbuda"
+ },
+ "SA": {
+ "name": "Arabia Saudí"
+ },
+ "DZ": {
+ "name": "Argelia"
+ },
+ "AR": {
+ "name": "Argentina"
+ },
+ "AM": {
+ "name": "Armenia"
+ },
+ "AW": {
+ "name": "Aruba"
+ },
+ "AU": {
+ "name": "Australia"
+ },
+ "AT": {
+ "name": "Austria"
+ },
+ "AZ": {
+ "name": "Azerbaiyán"
+ },
+ "BS": {
+ "name": "Bahamas"
+ },
+ "BD": {
+ "name": "Bangladesh"
+ },
+ "BB": {
+ "name": "Barbados"
+ },
+ "BH": {
+ "name": "Baréin"
+ },
+ "BE": {
+ "name": "Bélgica"
+ },
+ "BZ": {
+ "name": "Belice"
+ },
+ "BJ": {
+ "name": "Benín"
+ },
+ "BM": {
+ "name": "Bermudas"
+ },
+ "BY": {
+ "name": "Bielorrusia"
+ },
+ "BO": {
+ "name": "Bolivia"
+ },
+ "BA": {
+ "name": "Bosnia-Herzegovina"
+ },
+ "BW": {
+ "name": "Botsuana"
+ },
+ "BR": {
+ "name": "Brasil"
+ },
+ "BN": {
+ "name": "Brunéi"
+ },
+ "BG": {
+ "name": "Bulgaria"
+ },
+ "BF": {
+ "name": "Burkina Faso"
+ },
+ "BI": {
+ "name": "Burundi"
+ },
+ "BT": {
+ "name": "Bután"
+ },
+ "CV": {
+ "name": "Cabo Verde"
+ },
+ "KH": {
+ "name": "Camboya"
+ },
+ "CM": {
+ "name": "Camerún"
+ },
+ "CA": {
+ "name": "Canadá"
+ },
+ "BQ": {
+ "name": "Caribe neerlandés"
+ },
+ "EA": {
+ "name": "Ceuta y Melilla"
+ },
+ "TD": {
+ "name": "Chad"
+ },
+ "CL": {
+ "name": "Chile"
+ },
+ "CN": {
+ "name": "China"
+ },
+ "CY": {
+ "name": "Chipre"
+ },
+ "VA": {
+ "name": "Ciudad del Vaticano"
+ },
+ "CO": {
+ "name": "Colombia"
+ },
+ "KM": {
+ "name": "Comoras"
+ },
+ "CG": {
+ "name": "Congo Brazzaville"
+ },
+ "KP": {
+ "name": "Corea del Norte"
+ },
+ "KR": {
+ "name": "Corea del Sur"
+ },
+ "CI": {
+ "name": "Costa de Marfil"
+ },
+ "CR": {
+ "name": "Costa Rica"
+ },
+ "HR": {
+ "name": "Croacia"
+ },
+ "CU": {
+ "name": "Cuba"
+ },
+ "CW": {
+ "name": "Curazao"
+ },
+ "DG": {
+ "name": "Diego García"
+ },
+ "DK": {
+ "name": "Dinamarca"
+ },
+ "DM": {
+ "name": "Dominica"
+ },
+ "EC": {
+ "name": "Ecuador"
+ },
+ "EG": {
+ "name": "Egipto"
+ },
+ "SV": {
+ "name": "El Salvador"
+ },
+ "AE": {
+ "name": "Emiratos Ãrabes Unidos"
+ },
+ "ER": {
+ "name": "Eritrea"
+ },
+ "SK": {
+ "name": "Eslovaquia"
+ },
+ "SI": {
+ "name": "Eslovenia"
+ },
+ "ES": {
+ "name": "España"
+ },
+ "US": {
+ "name": "Estados Unidos"
+ },
+ "EE": {
+ "name": "Estonia"
+ },
+ "ET": {
+ "name": "Etiopía"
+ },
+ "PH": {
+ "name": "Filipinas"
+ },
+ "FI": {
+ "name": "Finlandia"
+ },
+ "FJ": {
+ "name": "Fiyi"
+ },
+ "FR": {
+ "name": "Francia"
+ },
+ "GA": {
+ "name": "Gabón"
+ },
+ "GM": {
+ "name": "Gambia"
+ },
+ "GE": {
+ "name": "Georgia"
+ },
+ "GH": {
+ "name": "Ghana"
+ },
+ "GI": {
+ "name": "Gibraltar"
+ },
+ "GD": {
+ "name": "Granada"
+ },
+ "GR": {
+ "name": "Grecia"
+ },
+ "GL": {
+ "name": "Groenlandia"
+ },
+ "GP": {
+ "name": "Guadalupe"
+ },
+ "GU": {
+ "name": "Guam"
+ },
+ "GT": {
+ "name": "Guatemala"
+ },
+ "GF": {
+ "name": "Guayana Francesa"
+ },
+ "GG": {
+ "name": "Guernsey"
+ },
+ "GN": {
+ "name": "Guinea"
+ },
+ "GQ": {
+ "name": "Guinea Ecuatorial"
+ },
+ "GW": {
+ "name": "Guinea-Bissau"
+ },
+ "GY": {
+ "name": "Guyana"
+ },
+ "HT": {
+ "name": "Haití"
+ },
+ "HN": {
+ "name": "Honduras"
+ },
+ "HU": {
+ "name": "Hungría"
+ },
+ "IN": {
+ "name": "India"
+ },
+ "ID": {
+ "name": "Indonesia"
+ },
+ "IQ": {
+ "name": "Irak"
+ },
+ "IR": {
+ "name": "Irán"
+ },
+ "IE": {
+ "name": "Irlanda"
+ },
+ "AC": {
+ "name": "Isla Ascensión"
+ },
+ "IM": {
+ "name": "Isla de Man"
+ },
+ "CX": {
+ "name": "Isla de Navidad"
+ },
+ "NF": {
+ "name": "Isla Norfolk"
+ },
+ "IS": {
+ "name": "Islandia"
+ },
+ "AX": {
+ "name": "Islas Ã…land"
+ },
+ "KY": {
+ "name": "Islas Caimán"
+ },
+ "IC": {
+ "name": "Islas Canarias"
+ },
+ "CC": {
+ "name": "Islas Cocos (Keeling)"
+ },
+ "CK": {
+ "name": "Islas Cook"
+ },
+ "FO": {
+ "name": "Islas Feroe"
+ },
+ "GS": {
+ "name": "Islas Georgias del Sur y Sandwich del Sur"
+ },
+ "FK": {
+ "name": "Islas Malvinas"
+ },
+ "MP": {
+ "name": "Islas Marianas del Norte"
+ },
+ "MH": {
+ "name": "Islas Marshall"
+ },
+ "PN": {
+ "name": "Islas Pitcairn"
+ },
+ "SB": {
+ "name": "Islas Salomón"
+ },
+ "TC": {
+ "name": "Islas Turcas y Caicos"
+ },
+ "UM": {
+ "name": "Islas UltramarinasMenores de Estados Unidos"
+ },
+ "VG": {
+ "name": "Islas Vírgenes Británicas"
+ },
+ "VI": {
+ "name": "Islas Vírgenes de los Estados Unidos"
+ },
+ "IL": {
+ "name": "Israel"
+ },
+ "IT": {
+ "name": "Italia"
+ },
+ "JM": {
+ "name": "Jamaica"
+ },
+ "JP": {
+ "name": "Japón"
+ },
+ "JE": {
+ "name": "Jersey"
+ },
+ "JO": {
+ "name": "Jordania"
+ },
+ "KZ": {
+ "name": "Kazajistán"
+ },
+ "KE": {
+ "name": "Kenia"
+ },
+ "KG": {
+ "name": "Kirguistán"
+ },
+ "KI": {
+ "name": "Kiribati"
+ },
+ "XK": {
+ "name": "Kosovo"
+ },
+ "KW": {
+ "name": "Kuwait"
+ },
+ "LA": {
+ "name": "Laos"
+ },
+ "LS": {
+ "name": "Lesoto"
+ },
+ "LV": {
+ "name": "Letonia"
+ },
+ "LB": {
+ "name": "Líbano"
+ },
+ "LR": {
+ "name": "Liberia"
+ },
+ "LY": {
+ "name": "Libia"
+ },
+ "LI": {
+ "name": "Liechtenstein"
+ },
+ "LT": {
+ "name": "Lituania"
+ },
+ "LU": {
+ "name": "Luxemburgo"
+ },
+ "MK": {
+ "name": "Macedonia"
+ },
+ "MG": {
+ "name": "Madagascar"
+ },
+ "MY": {
+ "name": "Malasia"
+ },
+ "MW": {
+ "name": "Malaui"
+ },
+ "MV": {
+ "name": "Maldivas"
+ },
+ "ML": {
+ "name": "Mali"
+ },
+ "MT": {
+ "name": "Malta"
+ },
+ "MA": {
+ "name": "Marruecos"
+ },
+ "MQ": {
+ "name": "Martinica"
+ },
+ "MU": {
+ "name": "Mauricio"
+ },
+ "MR": {
+ "name": "Mauritania"
+ },
+ "YT": {
+ "name": "Mayotte"
+ },
+ "MX": {
+ "name": "México"
+ },
+ "FM": {
+ "name": "Micronesia"
+ },
+ "MD": {
+ "name": "Moldavia"
+ },
+ "MC": {
+ "name": "Mónaco"
+ },
+ "MN": {
+ "name": "Mongolia"
+ },
+ "ME": {
+ "name": "Montenegro"
+ },
+ "MS": {
+ "name": "Montserrat"
+ },
+ "MZ": {
+ "name": "Mozambique"
+ },
+ "MM": {
+ "name": "Myanmar (Birmania)"
+ },
+ "NA": {
+ "name": "Namibia"
+ },
+ "NR": {
+ "name": "Nauru"
+ },
+ "NP": {
+ "name": "Nepal"
+ },
+ "NI": {
+ "name": "Nicaragua"
+ },
+ "NE": {
+ "name": "Níger"
+ },
+ "NG": {
+ "name": "Nigeria"
+ },
+ "NU": {
+ "name": "Niue"
+ },
+ "NO": {
+ "name": "Noruega"
+ },
+ "NC": {
+ "name": "Nueva Caledonia"
+ },
+ "NZ": {
+ "name": "Nueva Zelanda"
+ },
+ "OM": {
+ "name": "Omán"
+ },
+ "NL": {
+ "name": "Países Bajos"
+ },
+ "PK": {
+ "name": "Pakistán"
+ },
+ "PW": {
+ "name": "Palaos"
+ },
+ "PA": {
+ "name": "Panamá"
+ },
+ "PG": {
+ "name": "Papúa Nueva Guinea"
+ },
+ "PY": {
+ "name": "Paraguay"
+ },
+ "PE": {
+ "name": "Perú"
+ },
+ "PF": {
+ "name": "Polinesia Francesa"
+ },
+ "PL": {
+ "name": "Polonia"
+ },
+ "PT": {
+ "name": "Portugal"
+ },
+ "PR": {
+ "name": "Puerto Rico"
+ },
+ "QA": {
+ "name": "Qatar"
+ },
+ "HK": {
+ "name": "Región Administrativa Especial de Hong Kong de la República Popular China"
+ },
+ "MO": {
+ "name": "Región Administrativa Especial de Macao de la República Popular China"
+ },
+ "GB": {
+ "name": "Reino Unido"
+ },
+ "CF": {
+ "name": "República Centroafricana"
+ },
+ "CZ": {
+ "name": "República Checa"
+ },
+ "CD": {
+ "name": "República Democrática del Congo"
+ },
+ "DO": {
+ "name": "República Dominicana"
+ },
+ "RE": {
+ "name": "Reunión"
+ },
+ "RW": {
+ "name": "Ruanda"
+ },
+ "RO": {
+ "name": "Rumanía"
+ },
+ "RU": {
+ "name": "Rusia"
+ },
+ "EH": {
+ "name": "Sáhara Occidental"
+ },
+ "WS": {
+ "name": "Samoa"
+ },
+ "AS": {
+ "name": "Samoa Americana"
+ },
+ "BL": {
+ "name": "San Bartolomé"
+ },
+ "KN": {
+ "name": "San Cristóbal y Nieves"
+ },
+ "SM": {
+ "name": "San Marino"
+ },
+ "MF": {
+ "name": "San Martín"
+ },
+ "PM": {
+ "name": "San Pedro y Miquelón"
+ },
+ "VC": {
+ "name": "San Vicente y las Granadinas"
+ },
+ "SH": {
+ "name": "Santa Elena"
+ },
+ "LC": {
+ "name": "Santa Lucía"
+ },
+ "ST": {
+ "name": "Santo Tomé y Príncipe"
+ },
+ "SN": {
+ "name": "Senegal"
+ },
+ "RS": {
+ "name": "Serbia"
+ },
+ "SC": {
+ "name": "Seychelles"
+ },
+ "SL": {
+ "name": "Sierra Leona"
+ },
+ "SG": {
+ "name": "Singapur"
+ },
+ "SX": {
+ "name": "Sint Maarten"
+ },
+ "SY": {
+ "name": "Siria"
+ },
+ "SO": {
+ "name": "Somalia"
+ },
+ "LK": {
+ "name": "Sri Lanka"
+ },
+ "SZ": {
+ "name": "Suazilandia"
+ },
+ "ZA": {
+ "name": "Sudáfrica"
+ },
+ "SD": {
+ "name": "Sudán"
+ },
+ "SS": {
+ "name": "Sudán del Sur"
+ },
+ "SE": {
+ "name": "Suecia"
+ },
+ "CH": {
+ "name": "Suiza"
+ },
+ "SR": {
+ "name": "Surinam"
+ },
+ "SJ": {
+ "name": "Svalbard y Jan Mayen"
+ },
+ "TH": {
+ "name": "Tailandia"
+ },
+ "TW": {
+ "name": "Taiwán"
+ },
+ "TZ": {
+ "name": "Tanzania"
+ },
+ "TJ": {
+ "name": "Tayikistán"
+ },
+ "IO": {
+ "name": "Territorio Británico del Océano Ãndico"
+ },
+ "TF": {
+ "name": "Territorios Australes Franceses"
+ },
+ "PS": {
+ "name": "Territorios Palestinos"
+ },
+ "TL": {
+ "name": "Timor Oriental"
+ },
+ "TG": {
+ "name": "Togo"
+ },
+ "TK": {
+ "name": "Tokelau"
+ },
+ "TO": {
+ "name": "Tonga"
+ },
+ "TT": {
+ "name": "Trinidad y Tobago"
+ },
+ "TA": {
+ "name": "Tristán de Acuña"
+ },
+ "TN": {
+ "name": "Túnez"
+ },
+ "TM": {
+ "name": "Turkmenistán"
+ },
+ "TR": {
+ "name": "Turquía"
+ },
+ "TV": {
+ "name": "Tuvalu"
+ },
+ "UA": {
+ "name": "Ucrania"
+ },
+ "UG": {
+ "name": "Uganda"
+ },
+ "UY": {
+ "name": "Uruguay"
+ },
+ "UZ": {
+ "name": "Uzbekistán"
+ },
+ "VU": {
+ "name": "Vanuatu"
+ },
+ "VE": {
+ "name": "Venezuela"
+ },
+ "VN": {
+ "name": "Vietnam"
+ },
+ "WF": {
+ "name": "Wallis y Futuna"
+ },
+ "YE": {
+ "name": "Yemen"
+ },
+ "DJ": {
+ "name": "Yibuti"
+ },
+ "ZM": {
+ "name": "Zambia"
+ },
+ "ZW": {
+ "name": "Zimbabue"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/country/es-NI.json b/library/intl/resources/country/es-NI.json
new file mode 100644
index 000000000..6a02f5aec
--- /dev/null
+++ b/library/intl/resources/country/es-NI.json
@@ -0,0 +1,761 @@
+{
+ "AF": {
+ "name": "Afganistán"
+ },
+ "AL": {
+ "name": "Albania"
+ },
+ "DE": {
+ "name": "Alemania"
+ },
+ "AD": {
+ "name": "Andorra"
+ },
+ "AO": {
+ "name": "Angola"
+ },
+ "AI": {
+ "name": "Anguila"
+ },
+ "AQ": {
+ "name": "Antártida"
+ },
+ "AG": {
+ "name": "Antigua y Barbuda"
+ },
+ "SA": {
+ "name": "Arabia Saudí"
+ },
+ "DZ": {
+ "name": "Argelia"
+ },
+ "AR": {
+ "name": "Argentina"
+ },
+ "AM": {
+ "name": "Armenia"
+ },
+ "AW": {
+ "name": "Aruba"
+ },
+ "AU": {
+ "name": "Australia"
+ },
+ "AT": {
+ "name": "Austria"
+ },
+ "AZ": {
+ "name": "Azerbaiyán"
+ },
+ "BS": {
+ "name": "Bahamas"
+ },
+ "BD": {
+ "name": "Bangladés"
+ },
+ "BB": {
+ "name": "Barbados"
+ },
+ "BH": {
+ "name": "Baréin"
+ },
+ "BE": {
+ "name": "Bélgica"
+ },
+ "BZ": {
+ "name": "Belice"
+ },
+ "BJ": {
+ "name": "Benín"
+ },
+ "BM": {
+ "name": "Bermudas"
+ },
+ "BY": {
+ "name": "Bielorrusia"
+ },
+ "BO": {
+ "name": "Bolivia"
+ },
+ "BA": {
+ "name": "Bosnia y Herzegovina"
+ },
+ "BW": {
+ "name": "Botsuana"
+ },
+ "BR": {
+ "name": "Brasil"
+ },
+ "BN": {
+ "name": "Brunéi"
+ },
+ "BG": {
+ "name": "Bulgaria"
+ },
+ "BF": {
+ "name": "Burkina Faso"
+ },
+ "BI": {
+ "name": "Burundi"
+ },
+ "BT": {
+ "name": "Bután"
+ },
+ "CV": {
+ "name": "Cabo Verde"
+ },
+ "KH": {
+ "name": "Camboya"
+ },
+ "CM": {
+ "name": "Camerún"
+ },
+ "CA": {
+ "name": "Canadá"
+ },
+ "BQ": {
+ "name": "Caribe neerlandés"
+ },
+ "QA": {
+ "name": "Catar"
+ },
+ "EA": {
+ "name": "Ceuta y Melilla"
+ },
+ "TD": {
+ "name": "Chad"
+ },
+ "CL": {
+ "name": "Chile"
+ },
+ "CN": {
+ "name": "China"
+ },
+ "CY": {
+ "name": "Chipre"
+ },
+ "VA": {
+ "name": "Ciudad del Vaticano"
+ },
+ "CO": {
+ "name": "Colombia"
+ },
+ "KM": {
+ "name": "Comoras"
+ },
+ "KP": {
+ "name": "Corea del Norte"
+ },
+ "KR": {
+ "name": "Corea del Sur"
+ },
+ "CI": {
+ "name": "Costa de Marfil"
+ },
+ "CR": {
+ "name": "Costa Rica"
+ },
+ "HR": {
+ "name": "Croacia"
+ },
+ "CU": {
+ "name": "Cuba"
+ },
+ "CW": {
+ "name": "Curazao"
+ },
+ "DG": {
+ "name": "Diego García"
+ },
+ "DK": {
+ "name": "Dinamarca"
+ },
+ "DM": {
+ "name": "Dominica"
+ },
+ "EC": {
+ "name": "Ecuador"
+ },
+ "EG": {
+ "name": "Egipto"
+ },
+ "SV": {
+ "name": "El Salvador"
+ },
+ "AE": {
+ "name": "Emiratos Ãrabes Unidos"
+ },
+ "ER": {
+ "name": "Eritrea"
+ },
+ "SK": {
+ "name": "Eslovaquia"
+ },
+ "SI": {
+ "name": "Eslovenia"
+ },
+ "ES": {
+ "name": "España"
+ },
+ "US": {
+ "name": "Estados Unidos"
+ },
+ "EE": {
+ "name": "Estonia"
+ },
+ "ET": {
+ "name": "Etiopía"
+ },
+ "PH": {
+ "name": "Filipinas"
+ },
+ "FI": {
+ "name": "Finlandia"
+ },
+ "FJ": {
+ "name": "Fiyi"
+ },
+ "FR": {
+ "name": "Francia"
+ },
+ "GA": {
+ "name": "Gabón"
+ },
+ "GM": {
+ "name": "Gambia"
+ },
+ "GE": {
+ "name": "Georgia"
+ },
+ "GH": {
+ "name": "Ghana"
+ },
+ "GI": {
+ "name": "Gibraltar"
+ },
+ "GD": {
+ "name": "Granada"
+ },
+ "GR": {
+ "name": "Grecia"
+ },
+ "GL": {
+ "name": "Groenlandia"
+ },
+ "GP": {
+ "name": "Guadalupe"
+ },
+ "GU": {
+ "name": "Guam"
+ },
+ "GT": {
+ "name": "Guatemala"
+ },
+ "GF": {
+ "name": "Guayana Francesa"
+ },
+ "GG": {
+ "name": "Guernesey"
+ },
+ "GN": {
+ "name": "Guinea"
+ },
+ "GQ": {
+ "name": "Guinea Ecuatorial"
+ },
+ "GW": {
+ "name": "Guinea-Bisáu"
+ },
+ "GY": {
+ "name": "Guyana"
+ },
+ "HT": {
+ "name": "Haití"
+ },
+ "HN": {
+ "name": "Honduras"
+ },
+ "HU": {
+ "name": "Hungría"
+ },
+ "IN": {
+ "name": "India"
+ },
+ "ID": {
+ "name": "Indonesia"
+ },
+ "IQ": {
+ "name": "Irak"
+ },
+ "IR": {
+ "name": "Irán"
+ },
+ "IE": {
+ "name": "Irlanda"
+ },
+ "AC": {
+ "name": "Isla Ascensión"
+ },
+ "CX": {
+ "name": "Isla Christmas"
+ },
+ "IM": {
+ "name": "Isla de Man"
+ },
+ "NF": {
+ "name": "Isla Norfolk"
+ },
+ "IS": {
+ "name": "Islandia"
+ },
+ "AX": {
+ "name": "Islas Ã…land"
+ },
+ "KY": {
+ "name": "Islas Caimán"
+ },
+ "IC": {
+ "name": "islas Canarias"
+ },
+ "CC": {
+ "name": "Islas Cocos"
+ },
+ "CK": {
+ "name": "Islas Cook"
+ },
+ "FO": {
+ "name": "Islas Feroe"
+ },
+ "GS": {
+ "name": "Islas Georgia del Sur y Sandwich del Sur"
+ },
+ "FK": {
+ "name": "Islas Malvinas"
+ },
+ "MP": {
+ "name": "Islas Marianas del Norte"
+ },
+ "MH": {
+ "name": "Islas Marshall"
+ },
+ "UM": {
+ "name": "Islas menores alejadas de EE. UU."
+ },
+ "PN": {
+ "name": "Islas Pitcairn"
+ },
+ "SB": {
+ "name": "Islas Salomón"
+ },
+ "TC": {
+ "name": "Islas Turcas y Caicos"
+ },
+ "VG": {
+ "name": "Islas Vírgenes Británicas"
+ },
+ "VI": {
+ "name": "Islas Vírgenes de EE. UU."
+ },
+ "IL": {
+ "name": "Israel"
+ },
+ "IT": {
+ "name": "Italia"
+ },
+ "JM": {
+ "name": "Jamaica"
+ },
+ "JP": {
+ "name": "Japón"
+ },
+ "JE": {
+ "name": "Jersey"
+ },
+ "JO": {
+ "name": "Jordania"
+ },
+ "KZ": {
+ "name": "Kazajistán"
+ },
+ "KE": {
+ "name": "Kenia"
+ },
+ "KG": {
+ "name": "Kirguistán"
+ },
+ "KI": {
+ "name": "Kiribati"
+ },
+ "XK": {
+ "name": "Kosovo"
+ },
+ "KW": {
+ "name": "Kuwait"
+ },
+ "LA": {
+ "name": "Laos"
+ },
+ "LS": {
+ "name": "Lesoto"
+ },
+ "LV": {
+ "name": "Letonia"
+ },
+ "LB": {
+ "name": "Líbano"
+ },
+ "LR": {
+ "name": "Liberia"
+ },
+ "LY": {
+ "name": "Libia"
+ },
+ "LI": {
+ "name": "Liechtenstein"
+ },
+ "LT": {
+ "name": "Lituania"
+ },
+ "LU": {
+ "name": "Luxemburgo"
+ },
+ "MK": {
+ "name": "Macedonia"
+ },
+ "MG": {
+ "name": "Madagascar"
+ },
+ "MY": {
+ "name": "Malasia"
+ },
+ "MW": {
+ "name": "Malaui"
+ },
+ "MV": {
+ "name": "Maldivas"
+ },
+ "ML": {
+ "name": "Mali"
+ },
+ "MT": {
+ "name": "Malta"
+ },
+ "MA": {
+ "name": "Marruecos"
+ },
+ "MQ": {
+ "name": "Martinica"
+ },
+ "MU": {
+ "name": "Mauricio"
+ },
+ "MR": {
+ "name": "Mauritania"
+ },
+ "YT": {
+ "name": "Mayotte"
+ },
+ "MX": {
+ "name": "México"
+ },
+ "FM": {
+ "name": "Micronesia"
+ },
+ "MD": {
+ "name": "Moldavia"
+ },
+ "MC": {
+ "name": "Mónaco"
+ },
+ "MN": {
+ "name": "Mongolia"
+ },
+ "ME": {
+ "name": "Montenegro"
+ },
+ "MS": {
+ "name": "Montserrat"
+ },
+ "MZ": {
+ "name": "Mozambique"
+ },
+ "MM": {
+ "name": "Myanmar (Birmania)"
+ },
+ "NA": {
+ "name": "Namibia"
+ },
+ "NR": {
+ "name": "Nauru"
+ },
+ "NP": {
+ "name": "Nepal"
+ },
+ "NI": {
+ "name": "Nicaragua"
+ },
+ "NE": {
+ "name": "Níger"
+ },
+ "NG": {
+ "name": "Nigeria"
+ },
+ "NU": {
+ "name": "Niue"
+ },
+ "NO": {
+ "name": "Noruega"
+ },
+ "NC": {
+ "name": "Nueva Caledonia"
+ },
+ "NZ": {
+ "name": "Nueva Zelanda"
+ },
+ "OM": {
+ "name": "Omán"
+ },
+ "NL": {
+ "name": "Países Bajos"
+ },
+ "PK": {
+ "name": "Pakistán"
+ },
+ "PW": {
+ "name": "Palau"
+ },
+ "PA": {
+ "name": "Panamá"
+ },
+ "PG": {
+ "name": "Papúa Nueva Guinea"
+ },
+ "PY": {
+ "name": "Paraguay"
+ },
+ "PE": {
+ "name": "Perú"
+ },
+ "PF": {
+ "name": "Polinesia Francesa"
+ },
+ "PL": {
+ "name": "Polonia"
+ },
+ "PT": {
+ "name": "Portugal"
+ },
+ "PR": {
+ "name": "Puerto Rico"
+ },
+ "HK": {
+ "name": "RAE de Hong Kong (China)"
+ },
+ "MO": {
+ "name": "RAE de Macao (China)"
+ },
+ "GB": {
+ "name": "Reino Unido"
+ },
+ "CF": {
+ "name": "República Centroafricana"
+ },
+ "CZ": {
+ "name": "República Checa"
+ },
+ "CG": {
+ "name": "República del Congo"
+ },
+ "CD": {
+ "name": "República Democrática del Congo"
+ },
+ "DO": {
+ "name": "República Dominicana"
+ },
+ "RE": {
+ "name": "Reunión"
+ },
+ "RW": {
+ "name": "Ruanda"
+ },
+ "RO": {
+ "name": "Rumanía"
+ },
+ "RU": {
+ "name": "Rusia"
+ },
+ "EH": {
+ "name": "Sáhara Occidental"
+ },
+ "WS": {
+ "name": "Samoa"
+ },
+ "AS": {
+ "name": "Samoa Americana"
+ },
+ "BL": {
+ "name": "San Bartolomé"
+ },
+ "KN": {
+ "name": "San Cristóbal y Nieves"
+ },
+ "SM": {
+ "name": "San Marino"
+ },
+ "MF": {
+ "name": "San Martín"
+ },
+ "PM": {
+ "name": "San Pedro y Miquelón"
+ },
+ "VC": {
+ "name": "San Vicente y las Granadinas"
+ },
+ "SH": {
+ "name": "Santa Elena"
+ },
+ "LC": {
+ "name": "Santa Lucía"
+ },
+ "ST": {
+ "name": "Santo Tomé y Príncipe"
+ },
+ "SN": {
+ "name": "Senegal"
+ },
+ "RS": {
+ "name": "Serbia"
+ },
+ "SC": {
+ "name": "Seychelles"
+ },
+ "SL": {
+ "name": "Sierra Leona"
+ },
+ "SG": {
+ "name": "Singapur"
+ },
+ "SX": {
+ "name": "Sint Maarten"
+ },
+ "SY": {
+ "name": "Siria"
+ },
+ "SO": {
+ "name": "Somalia"
+ },
+ "LK": {
+ "name": "Sri Lanka"
+ },
+ "SZ": {
+ "name": "Suazilandia"
+ },
+ "ZA": {
+ "name": "Sudáfrica"
+ },
+ "SD": {
+ "name": "Sudán"
+ },
+ "SS": {
+ "name": "Sudán del Sur"
+ },
+ "SE": {
+ "name": "Suecia"
+ },
+ "CH": {
+ "name": "Suiza"
+ },
+ "SR": {
+ "name": "Surinam"
+ },
+ "SJ": {
+ "name": "Svalbard y Jan Mayen"
+ },
+ "TH": {
+ "name": "Tailandia"
+ },
+ "TW": {
+ "name": "Taiwán"
+ },
+ "TZ": {
+ "name": "Tanzania"
+ },
+ "TJ": {
+ "name": "Tayikistán"
+ },
+ "IO": {
+ "name": "Territorio Británico del Océano Ãndico"
+ },
+ "TF": {
+ "name": "Territorios Australes Franceses"
+ },
+ "PS": {
+ "name": "Territorios Palestinos"
+ },
+ "TL": {
+ "name": "Timor Oriental"
+ },
+ "TG": {
+ "name": "Togo"
+ },
+ "TK": {
+ "name": "Tokelau"
+ },
+ "TO": {
+ "name": "Tonga"
+ },
+ "TT": {
+ "name": "Trinidad y Tobago"
+ },
+ "TA": {
+ "name": "Tristán da Cunha"
+ },
+ "TN": {
+ "name": "Túnez"
+ },
+ "TM": {
+ "name": "Turkmenistán"
+ },
+ "TR": {
+ "name": "Turquía"
+ },
+ "TV": {
+ "name": "Tuvalu"
+ },
+ "UA": {
+ "name": "Ucrania"
+ },
+ "UG": {
+ "name": "Uganda"
+ },
+ "UY": {
+ "name": "Uruguay"
+ },
+ "UZ": {
+ "name": "Uzbekistán"
+ },
+ "VU": {
+ "name": "Vanuatu"
+ },
+ "VE": {
+ "name": "Venezuela"
+ },
+ "VN": {
+ "name": "Vietnam"
+ },
+ "WF": {
+ "name": "Wallis y Futuna"
+ },
+ "YE": {
+ "name": "Yemen"
+ },
+ "DJ": {
+ "name": "Yibuti"
+ },
+ "ZM": {
+ "name": "Zambia"
+ },
+ "ZW": {
+ "name": "Zimbabue"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/country/es-PA.json b/library/intl/resources/country/es-PA.json
new file mode 100644
index 000000000..6a02f5aec
--- /dev/null
+++ b/library/intl/resources/country/es-PA.json
@@ -0,0 +1,761 @@
+{
+ "AF": {
+ "name": "Afganistán"
+ },
+ "AL": {
+ "name": "Albania"
+ },
+ "DE": {
+ "name": "Alemania"
+ },
+ "AD": {
+ "name": "Andorra"
+ },
+ "AO": {
+ "name": "Angola"
+ },
+ "AI": {
+ "name": "Anguila"
+ },
+ "AQ": {
+ "name": "Antártida"
+ },
+ "AG": {
+ "name": "Antigua y Barbuda"
+ },
+ "SA": {
+ "name": "Arabia Saudí"
+ },
+ "DZ": {
+ "name": "Argelia"
+ },
+ "AR": {
+ "name": "Argentina"
+ },
+ "AM": {
+ "name": "Armenia"
+ },
+ "AW": {
+ "name": "Aruba"
+ },
+ "AU": {
+ "name": "Australia"
+ },
+ "AT": {
+ "name": "Austria"
+ },
+ "AZ": {
+ "name": "Azerbaiyán"
+ },
+ "BS": {
+ "name": "Bahamas"
+ },
+ "BD": {
+ "name": "Bangladés"
+ },
+ "BB": {
+ "name": "Barbados"
+ },
+ "BH": {
+ "name": "Baréin"
+ },
+ "BE": {
+ "name": "Bélgica"
+ },
+ "BZ": {
+ "name": "Belice"
+ },
+ "BJ": {
+ "name": "Benín"
+ },
+ "BM": {
+ "name": "Bermudas"
+ },
+ "BY": {
+ "name": "Bielorrusia"
+ },
+ "BO": {
+ "name": "Bolivia"
+ },
+ "BA": {
+ "name": "Bosnia y Herzegovina"
+ },
+ "BW": {
+ "name": "Botsuana"
+ },
+ "BR": {
+ "name": "Brasil"
+ },
+ "BN": {
+ "name": "Brunéi"
+ },
+ "BG": {
+ "name": "Bulgaria"
+ },
+ "BF": {
+ "name": "Burkina Faso"
+ },
+ "BI": {
+ "name": "Burundi"
+ },
+ "BT": {
+ "name": "Bután"
+ },
+ "CV": {
+ "name": "Cabo Verde"
+ },
+ "KH": {
+ "name": "Camboya"
+ },
+ "CM": {
+ "name": "Camerún"
+ },
+ "CA": {
+ "name": "Canadá"
+ },
+ "BQ": {
+ "name": "Caribe neerlandés"
+ },
+ "QA": {
+ "name": "Catar"
+ },
+ "EA": {
+ "name": "Ceuta y Melilla"
+ },
+ "TD": {
+ "name": "Chad"
+ },
+ "CL": {
+ "name": "Chile"
+ },
+ "CN": {
+ "name": "China"
+ },
+ "CY": {
+ "name": "Chipre"
+ },
+ "VA": {
+ "name": "Ciudad del Vaticano"
+ },
+ "CO": {
+ "name": "Colombia"
+ },
+ "KM": {
+ "name": "Comoras"
+ },
+ "KP": {
+ "name": "Corea del Norte"
+ },
+ "KR": {
+ "name": "Corea del Sur"
+ },
+ "CI": {
+ "name": "Costa de Marfil"
+ },
+ "CR": {
+ "name": "Costa Rica"
+ },
+ "HR": {
+ "name": "Croacia"
+ },
+ "CU": {
+ "name": "Cuba"
+ },
+ "CW": {
+ "name": "Curazao"
+ },
+ "DG": {
+ "name": "Diego García"
+ },
+ "DK": {
+ "name": "Dinamarca"
+ },
+ "DM": {
+ "name": "Dominica"
+ },
+ "EC": {
+ "name": "Ecuador"
+ },
+ "EG": {
+ "name": "Egipto"
+ },
+ "SV": {
+ "name": "El Salvador"
+ },
+ "AE": {
+ "name": "Emiratos Ãrabes Unidos"
+ },
+ "ER": {
+ "name": "Eritrea"
+ },
+ "SK": {
+ "name": "Eslovaquia"
+ },
+ "SI": {
+ "name": "Eslovenia"
+ },
+ "ES": {
+ "name": "España"
+ },
+ "US": {
+ "name": "Estados Unidos"
+ },
+ "EE": {
+ "name": "Estonia"
+ },
+ "ET": {
+ "name": "Etiopía"
+ },
+ "PH": {
+ "name": "Filipinas"
+ },
+ "FI": {
+ "name": "Finlandia"
+ },
+ "FJ": {
+ "name": "Fiyi"
+ },
+ "FR": {
+ "name": "Francia"
+ },
+ "GA": {
+ "name": "Gabón"
+ },
+ "GM": {
+ "name": "Gambia"
+ },
+ "GE": {
+ "name": "Georgia"
+ },
+ "GH": {
+ "name": "Ghana"
+ },
+ "GI": {
+ "name": "Gibraltar"
+ },
+ "GD": {
+ "name": "Granada"
+ },
+ "GR": {
+ "name": "Grecia"
+ },
+ "GL": {
+ "name": "Groenlandia"
+ },
+ "GP": {
+ "name": "Guadalupe"
+ },
+ "GU": {
+ "name": "Guam"
+ },
+ "GT": {
+ "name": "Guatemala"
+ },
+ "GF": {
+ "name": "Guayana Francesa"
+ },
+ "GG": {
+ "name": "Guernesey"
+ },
+ "GN": {
+ "name": "Guinea"
+ },
+ "GQ": {
+ "name": "Guinea Ecuatorial"
+ },
+ "GW": {
+ "name": "Guinea-Bisáu"
+ },
+ "GY": {
+ "name": "Guyana"
+ },
+ "HT": {
+ "name": "Haití"
+ },
+ "HN": {
+ "name": "Honduras"
+ },
+ "HU": {
+ "name": "Hungría"
+ },
+ "IN": {
+ "name": "India"
+ },
+ "ID": {
+ "name": "Indonesia"
+ },
+ "IQ": {
+ "name": "Irak"
+ },
+ "IR": {
+ "name": "Irán"
+ },
+ "IE": {
+ "name": "Irlanda"
+ },
+ "AC": {
+ "name": "Isla Ascensión"
+ },
+ "CX": {
+ "name": "Isla Christmas"
+ },
+ "IM": {
+ "name": "Isla de Man"
+ },
+ "NF": {
+ "name": "Isla Norfolk"
+ },
+ "IS": {
+ "name": "Islandia"
+ },
+ "AX": {
+ "name": "Islas Ã…land"
+ },
+ "KY": {
+ "name": "Islas Caimán"
+ },
+ "IC": {
+ "name": "islas Canarias"
+ },
+ "CC": {
+ "name": "Islas Cocos"
+ },
+ "CK": {
+ "name": "Islas Cook"
+ },
+ "FO": {
+ "name": "Islas Feroe"
+ },
+ "GS": {
+ "name": "Islas Georgia del Sur y Sandwich del Sur"
+ },
+ "FK": {
+ "name": "Islas Malvinas"
+ },
+ "MP": {
+ "name": "Islas Marianas del Norte"
+ },
+ "MH": {
+ "name": "Islas Marshall"
+ },
+ "UM": {
+ "name": "Islas menores alejadas de EE. UU."
+ },
+ "PN": {
+ "name": "Islas Pitcairn"
+ },
+ "SB": {
+ "name": "Islas Salomón"
+ },
+ "TC": {
+ "name": "Islas Turcas y Caicos"
+ },
+ "VG": {
+ "name": "Islas Vírgenes Británicas"
+ },
+ "VI": {
+ "name": "Islas Vírgenes de EE. UU."
+ },
+ "IL": {
+ "name": "Israel"
+ },
+ "IT": {
+ "name": "Italia"
+ },
+ "JM": {
+ "name": "Jamaica"
+ },
+ "JP": {
+ "name": "Japón"
+ },
+ "JE": {
+ "name": "Jersey"
+ },
+ "JO": {
+ "name": "Jordania"
+ },
+ "KZ": {
+ "name": "Kazajistán"
+ },
+ "KE": {
+ "name": "Kenia"
+ },
+ "KG": {
+ "name": "Kirguistán"
+ },
+ "KI": {
+ "name": "Kiribati"
+ },
+ "XK": {
+ "name": "Kosovo"
+ },
+ "KW": {
+ "name": "Kuwait"
+ },
+ "LA": {
+ "name": "Laos"
+ },
+ "LS": {
+ "name": "Lesoto"
+ },
+ "LV": {
+ "name": "Letonia"
+ },
+ "LB": {
+ "name": "Líbano"
+ },
+ "LR": {
+ "name": "Liberia"
+ },
+ "LY": {
+ "name": "Libia"
+ },
+ "LI": {
+ "name": "Liechtenstein"
+ },
+ "LT": {
+ "name": "Lituania"
+ },
+ "LU": {
+ "name": "Luxemburgo"
+ },
+ "MK": {
+ "name": "Macedonia"
+ },
+ "MG": {
+ "name": "Madagascar"
+ },
+ "MY": {
+ "name": "Malasia"
+ },
+ "MW": {
+ "name": "Malaui"
+ },
+ "MV": {
+ "name": "Maldivas"
+ },
+ "ML": {
+ "name": "Mali"
+ },
+ "MT": {
+ "name": "Malta"
+ },
+ "MA": {
+ "name": "Marruecos"
+ },
+ "MQ": {
+ "name": "Martinica"
+ },
+ "MU": {
+ "name": "Mauricio"
+ },
+ "MR": {
+ "name": "Mauritania"
+ },
+ "YT": {
+ "name": "Mayotte"
+ },
+ "MX": {
+ "name": "México"
+ },
+ "FM": {
+ "name": "Micronesia"
+ },
+ "MD": {
+ "name": "Moldavia"
+ },
+ "MC": {
+ "name": "Mónaco"
+ },
+ "MN": {
+ "name": "Mongolia"
+ },
+ "ME": {
+ "name": "Montenegro"
+ },
+ "MS": {
+ "name": "Montserrat"
+ },
+ "MZ": {
+ "name": "Mozambique"
+ },
+ "MM": {
+ "name": "Myanmar (Birmania)"
+ },
+ "NA": {
+ "name": "Namibia"
+ },
+ "NR": {
+ "name": "Nauru"
+ },
+ "NP": {
+ "name": "Nepal"
+ },
+ "NI": {
+ "name": "Nicaragua"
+ },
+ "NE": {
+ "name": "Níger"
+ },
+ "NG": {
+ "name": "Nigeria"
+ },
+ "NU": {
+ "name": "Niue"
+ },
+ "NO": {
+ "name": "Noruega"
+ },
+ "NC": {
+ "name": "Nueva Caledonia"
+ },
+ "NZ": {
+ "name": "Nueva Zelanda"
+ },
+ "OM": {
+ "name": "Omán"
+ },
+ "NL": {
+ "name": "Países Bajos"
+ },
+ "PK": {
+ "name": "Pakistán"
+ },
+ "PW": {
+ "name": "Palau"
+ },
+ "PA": {
+ "name": "Panamá"
+ },
+ "PG": {
+ "name": "Papúa Nueva Guinea"
+ },
+ "PY": {
+ "name": "Paraguay"
+ },
+ "PE": {
+ "name": "Perú"
+ },
+ "PF": {
+ "name": "Polinesia Francesa"
+ },
+ "PL": {
+ "name": "Polonia"
+ },
+ "PT": {
+ "name": "Portugal"
+ },
+ "PR": {
+ "name": "Puerto Rico"
+ },
+ "HK": {
+ "name": "RAE de Hong Kong (China)"
+ },
+ "MO": {
+ "name": "RAE de Macao (China)"
+ },
+ "GB": {
+ "name": "Reino Unido"
+ },
+ "CF": {
+ "name": "República Centroafricana"
+ },
+ "CZ": {
+ "name": "República Checa"
+ },
+ "CG": {
+ "name": "República del Congo"
+ },
+ "CD": {
+ "name": "República Democrática del Congo"
+ },
+ "DO": {
+ "name": "República Dominicana"
+ },
+ "RE": {
+ "name": "Reunión"
+ },
+ "RW": {
+ "name": "Ruanda"
+ },
+ "RO": {
+ "name": "Rumanía"
+ },
+ "RU": {
+ "name": "Rusia"
+ },
+ "EH": {
+ "name": "Sáhara Occidental"
+ },
+ "WS": {
+ "name": "Samoa"
+ },
+ "AS": {
+ "name": "Samoa Americana"
+ },
+ "BL": {
+ "name": "San Bartolomé"
+ },
+ "KN": {
+ "name": "San Cristóbal y Nieves"
+ },
+ "SM": {
+ "name": "San Marino"
+ },
+ "MF": {
+ "name": "San Martín"
+ },
+ "PM": {
+ "name": "San Pedro y Miquelón"
+ },
+ "VC": {
+ "name": "San Vicente y las Granadinas"
+ },
+ "SH": {
+ "name": "Santa Elena"
+ },
+ "LC": {
+ "name": "Santa Lucía"
+ },
+ "ST": {
+ "name": "Santo Tomé y Príncipe"
+ },
+ "SN": {
+ "name": "Senegal"
+ },
+ "RS": {
+ "name": "Serbia"
+ },
+ "SC": {
+ "name": "Seychelles"
+ },
+ "SL": {
+ "name": "Sierra Leona"
+ },
+ "SG": {
+ "name": "Singapur"
+ },
+ "SX": {
+ "name": "Sint Maarten"
+ },
+ "SY": {
+ "name": "Siria"
+ },
+ "SO": {
+ "name": "Somalia"
+ },
+ "LK": {
+ "name": "Sri Lanka"
+ },
+ "SZ": {
+ "name": "Suazilandia"
+ },
+ "ZA": {
+ "name": "Sudáfrica"
+ },
+ "SD": {
+ "name": "Sudán"
+ },
+ "SS": {
+ "name": "Sudán del Sur"
+ },
+ "SE": {
+ "name": "Suecia"
+ },
+ "CH": {
+ "name": "Suiza"
+ },
+ "SR": {
+ "name": "Surinam"
+ },
+ "SJ": {
+ "name": "Svalbard y Jan Mayen"
+ },
+ "TH": {
+ "name": "Tailandia"
+ },
+ "TW": {
+ "name": "Taiwán"
+ },
+ "TZ": {
+ "name": "Tanzania"
+ },
+ "TJ": {
+ "name": "Tayikistán"
+ },
+ "IO": {
+ "name": "Territorio Británico del Océano Ãndico"
+ },
+ "TF": {
+ "name": "Territorios Australes Franceses"
+ },
+ "PS": {
+ "name": "Territorios Palestinos"
+ },
+ "TL": {
+ "name": "Timor Oriental"
+ },
+ "TG": {
+ "name": "Togo"
+ },
+ "TK": {
+ "name": "Tokelau"
+ },
+ "TO": {
+ "name": "Tonga"
+ },
+ "TT": {
+ "name": "Trinidad y Tobago"
+ },
+ "TA": {
+ "name": "Tristán da Cunha"
+ },
+ "TN": {
+ "name": "Túnez"
+ },
+ "TM": {
+ "name": "Turkmenistán"
+ },
+ "TR": {
+ "name": "Turquía"
+ },
+ "TV": {
+ "name": "Tuvalu"
+ },
+ "UA": {
+ "name": "Ucrania"
+ },
+ "UG": {
+ "name": "Uganda"
+ },
+ "UY": {
+ "name": "Uruguay"
+ },
+ "UZ": {
+ "name": "Uzbekistán"
+ },
+ "VU": {
+ "name": "Vanuatu"
+ },
+ "VE": {
+ "name": "Venezuela"
+ },
+ "VN": {
+ "name": "Vietnam"
+ },
+ "WF": {
+ "name": "Wallis y Futuna"
+ },
+ "YE": {
+ "name": "Yemen"
+ },
+ "DJ": {
+ "name": "Yibuti"
+ },
+ "ZM": {
+ "name": "Zambia"
+ },
+ "ZW": {
+ "name": "Zimbabue"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/country/es-PE.json b/library/intl/resources/country/es-PE.json
new file mode 100644
index 000000000..6a02f5aec
--- /dev/null
+++ b/library/intl/resources/country/es-PE.json
@@ -0,0 +1,761 @@
+{
+ "AF": {
+ "name": "Afganistán"
+ },
+ "AL": {
+ "name": "Albania"
+ },
+ "DE": {
+ "name": "Alemania"
+ },
+ "AD": {
+ "name": "Andorra"
+ },
+ "AO": {
+ "name": "Angola"
+ },
+ "AI": {
+ "name": "Anguila"
+ },
+ "AQ": {
+ "name": "Antártida"
+ },
+ "AG": {
+ "name": "Antigua y Barbuda"
+ },
+ "SA": {
+ "name": "Arabia Saudí"
+ },
+ "DZ": {
+ "name": "Argelia"
+ },
+ "AR": {
+ "name": "Argentina"
+ },
+ "AM": {
+ "name": "Armenia"
+ },
+ "AW": {
+ "name": "Aruba"
+ },
+ "AU": {
+ "name": "Australia"
+ },
+ "AT": {
+ "name": "Austria"
+ },
+ "AZ": {
+ "name": "Azerbaiyán"
+ },
+ "BS": {
+ "name": "Bahamas"
+ },
+ "BD": {
+ "name": "Bangladés"
+ },
+ "BB": {
+ "name": "Barbados"
+ },
+ "BH": {
+ "name": "Baréin"
+ },
+ "BE": {
+ "name": "Bélgica"
+ },
+ "BZ": {
+ "name": "Belice"
+ },
+ "BJ": {
+ "name": "Benín"
+ },
+ "BM": {
+ "name": "Bermudas"
+ },
+ "BY": {
+ "name": "Bielorrusia"
+ },
+ "BO": {
+ "name": "Bolivia"
+ },
+ "BA": {
+ "name": "Bosnia y Herzegovina"
+ },
+ "BW": {
+ "name": "Botsuana"
+ },
+ "BR": {
+ "name": "Brasil"
+ },
+ "BN": {
+ "name": "Brunéi"
+ },
+ "BG": {
+ "name": "Bulgaria"
+ },
+ "BF": {
+ "name": "Burkina Faso"
+ },
+ "BI": {
+ "name": "Burundi"
+ },
+ "BT": {
+ "name": "Bután"
+ },
+ "CV": {
+ "name": "Cabo Verde"
+ },
+ "KH": {
+ "name": "Camboya"
+ },
+ "CM": {
+ "name": "Camerún"
+ },
+ "CA": {
+ "name": "Canadá"
+ },
+ "BQ": {
+ "name": "Caribe neerlandés"
+ },
+ "QA": {
+ "name": "Catar"
+ },
+ "EA": {
+ "name": "Ceuta y Melilla"
+ },
+ "TD": {
+ "name": "Chad"
+ },
+ "CL": {
+ "name": "Chile"
+ },
+ "CN": {
+ "name": "China"
+ },
+ "CY": {
+ "name": "Chipre"
+ },
+ "VA": {
+ "name": "Ciudad del Vaticano"
+ },
+ "CO": {
+ "name": "Colombia"
+ },
+ "KM": {
+ "name": "Comoras"
+ },
+ "KP": {
+ "name": "Corea del Norte"
+ },
+ "KR": {
+ "name": "Corea del Sur"
+ },
+ "CI": {
+ "name": "Costa de Marfil"
+ },
+ "CR": {
+ "name": "Costa Rica"
+ },
+ "HR": {
+ "name": "Croacia"
+ },
+ "CU": {
+ "name": "Cuba"
+ },
+ "CW": {
+ "name": "Curazao"
+ },
+ "DG": {
+ "name": "Diego García"
+ },
+ "DK": {
+ "name": "Dinamarca"
+ },
+ "DM": {
+ "name": "Dominica"
+ },
+ "EC": {
+ "name": "Ecuador"
+ },
+ "EG": {
+ "name": "Egipto"
+ },
+ "SV": {
+ "name": "El Salvador"
+ },
+ "AE": {
+ "name": "Emiratos Ãrabes Unidos"
+ },
+ "ER": {
+ "name": "Eritrea"
+ },
+ "SK": {
+ "name": "Eslovaquia"
+ },
+ "SI": {
+ "name": "Eslovenia"
+ },
+ "ES": {
+ "name": "España"
+ },
+ "US": {
+ "name": "Estados Unidos"
+ },
+ "EE": {
+ "name": "Estonia"
+ },
+ "ET": {
+ "name": "Etiopía"
+ },
+ "PH": {
+ "name": "Filipinas"
+ },
+ "FI": {
+ "name": "Finlandia"
+ },
+ "FJ": {
+ "name": "Fiyi"
+ },
+ "FR": {
+ "name": "Francia"
+ },
+ "GA": {
+ "name": "Gabón"
+ },
+ "GM": {
+ "name": "Gambia"
+ },
+ "GE": {
+ "name": "Georgia"
+ },
+ "GH": {
+ "name": "Ghana"
+ },
+ "GI": {
+ "name": "Gibraltar"
+ },
+ "GD": {
+ "name": "Granada"
+ },
+ "GR": {
+ "name": "Grecia"
+ },
+ "GL": {
+ "name": "Groenlandia"
+ },
+ "GP": {
+ "name": "Guadalupe"
+ },
+ "GU": {
+ "name": "Guam"
+ },
+ "GT": {
+ "name": "Guatemala"
+ },
+ "GF": {
+ "name": "Guayana Francesa"
+ },
+ "GG": {
+ "name": "Guernesey"
+ },
+ "GN": {
+ "name": "Guinea"
+ },
+ "GQ": {
+ "name": "Guinea Ecuatorial"
+ },
+ "GW": {
+ "name": "Guinea-Bisáu"
+ },
+ "GY": {
+ "name": "Guyana"
+ },
+ "HT": {
+ "name": "Haití"
+ },
+ "HN": {
+ "name": "Honduras"
+ },
+ "HU": {
+ "name": "Hungría"
+ },
+ "IN": {
+ "name": "India"
+ },
+ "ID": {
+ "name": "Indonesia"
+ },
+ "IQ": {
+ "name": "Irak"
+ },
+ "IR": {
+ "name": "Irán"
+ },
+ "IE": {
+ "name": "Irlanda"
+ },
+ "AC": {
+ "name": "Isla Ascensión"
+ },
+ "CX": {
+ "name": "Isla Christmas"
+ },
+ "IM": {
+ "name": "Isla de Man"
+ },
+ "NF": {
+ "name": "Isla Norfolk"
+ },
+ "IS": {
+ "name": "Islandia"
+ },
+ "AX": {
+ "name": "Islas Ã…land"
+ },
+ "KY": {
+ "name": "Islas Caimán"
+ },
+ "IC": {
+ "name": "islas Canarias"
+ },
+ "CC": {
+ "name": "Islas Cocos"
+ },
+ "CK": {
+ "name": "Islas Cook"
+ },
+ "FO": {
+ "name": "Islas Feroe"
+ },
+ "GS": {
+ "name": "Islas Georgia del Sur y Sandwich del Sur"
+ },
+ "FK": {
+ "name": "Islas Malvinas"
+ },
+ "MP": {
+ "name": "Islas Marianas del Norte"
+ },
+ "MH": {
+ "name": "Islas Marshall"
+ },
+ "UM": {
+ "name": "Islas menores alejadas de EE. UU."
+ },
+ "PN": {
+ "name": "Islas Pitcairn"
+ },
+ "SB": {
+ "name": "Islas Salomón"
+ },
+ "TC": {
+ "name": "Islas Turcas y Caicos"
+ },
+ "VG": {
+ "name": "Islas Vírgenes Británicas"
+ },
+ "VI": {
+ "name": "Islas Vírgenes de EE. UU."
+ },
+ "IL": {
+ "name": "Israel"
+ },
+ "IT": {
+ "name": "Italia"
+ },
+ "JM": {
+ "name": "Jamaica"
+ },
+ "JP": {
+ "name": "Japón"
+ },
+ "JE": {
+ "name": "Jersey"
+ },
+ "JO": {
+ "name": "Jordania"
+ },
+ "KZ": {
+ "name": "Kazajistán"
+ },
+ "KE": {
+ "name": "Kenia"
+ },
+ "KG": {
+ "name": "Kirguistán"
+ },
+ "KI": {
+ "name": "Kiribati"
+ },
+ "XK": {
+ "name": "Kosovo"
+ },
+ "KW": {
+ "name": "Kuwait"
+ },
+ "LA": {
+ "name": "Laos"
+ },
+ "LS": {
+ "name": "Lesoto"
+ },
+ "LV": {
+ "name": "Letonia"
+ },
+ "LB": {
+ "name": "Líbano"
+ },
+ "LR": {
+ "name": "Liberia"
+ },
+ "LY": {
+ "name": "Libia"
+ },
+ "LI": {
+ "name": "Liechtenstein"
+ },
+ "LT": {
+ "name": "Lituania"
+ },
+ "LU": {
+ "name": "Luxemburgo"
+ },
+ "MK": {
+ "name": "Macedonia"
+ },
+ "MG": {
+ "name": "Madagascar"
+ },
+ "MY": {
+ "name": "Malasia"
+ },
+ "MW": {
+ "name": "Malaui"
+ },
+ "MV": {
+ "name": "Maldivas"
+ },
+ "ML": {
+ "name": "Mali"
+ },
+ "MT": {
+ "name": "Malta"
+ },
+ "MA": {
+ "name": "Marruecos"
+ },
+ "MQ": {
+ "name": "Martinica"
+ },
+ "MU": {
+ "name": "Mauricio"
+ },
+ "MR": {
+ "name": "Mauritania"
+ },
+ "YT": {
+ "name": "Mayotte"
+ },
+ "MX": {
+ "name": "México"
+ },
+ "FM": {
+ "name": "Micronesia"
+ },
+ "MD": {
+ "name": "Moldavia"
+ },
+ "MC": {
+ "name": "Mónaco"
+ },
+ "MN": {
+ "name": "Mongolia"
+ },
+ "ME": {
+ "name": "Montenegro"
+ },
+ "MS": {
+ "name": "Montserrat"
+ },
+ "MZ": {
+ "name": "Mozambique"
+ },
+ "MM": {
+ "name": "Myanmar (Birmania)"
+ },
+ "NA": {
+ "name": "Namibia"
+ },
+ "NR": {
+ "name": "Nauru"
+ },
+ "NP": {
+ "name": "Nepal"
+ },
+ "NI": {
+ "name": "Nicaragua"
+ },
+ "NE": {
+ "name": "Níger"
+ },
+ "NG": {
+ "name": "Nigeria"
+ },
+ "NU": {
+ "name": "Niue"
+ },
+ "NO": {
+ "name": "Noruega"
+ },
+ "NC": {
+ "name": "Nueva Caledonia"
+ },
+ "NZ": {
+ "name": "Nueva Zelanda"
+ },
+ "OM": {
+ "name": "Omán"
+ },
+ "NL": {
+ "name": "Países Bajos"
+ },
+ "PK": {
+ "name": "Pakistán"
+ },
+ "PW": {
+ "name": "Palau"
+ },
+ "PA": {
+ "name": "Panamá"
+ },
+ "PG": {
+ "name": "Papúa Nueva Guinea"
+ },
+ "PY": {
+ "name": "Paraguay"
+ },
+ "PE": {
+ "name": "Perú"
+ },
+ "PF": {
+ "name": "Polinesia Francesa"
+ },
+ "PL": {
+ "name": "Polonia"
+ },
+ "PT": {
+ "name": "Portugal"
+ },
+ "PR": {
+ "name": "Puerto Rico"
+ },
+ "HK": {
+ "name": "RAE de Hong Kong (China)"
+ },
+ "MO": {
+ "name": "RAE de Macao (China)"
+ },
+ "GB": {
+ "name": "Reino Unido"
+ },
+ "CF": {
+ "name": "República Centroafricana"
+ },
+ "CZ": {
+ "name": "República Checa"
+ },
+ "CG": {
+ "name": "República del Congo"
+ },
+ "CD": {
+ "name": "República Democrática del Congo"
+ },
+ "DO": {
+ "name": "República Dominicana"
+ },
+ "RE": {
+ "name": "Reunión"
+ },
+ "RW": {
+ "name": "Ruanda"
+ },
+ "RO": {
+ "name": "Rumanía"
+ },
+ "RU": {
+ "name": "Rusia"
+ },
+ "EH": {
+ "name": "Sáhara Occidental"
+ },
+ "WS": {
+ "name": "Samoa"
+ },
+ "AS": {
+ "name": "Samoa Americana"
+ },
+ "BL": {
+ "name": "San Bartolomé"
+ },
+ "KN": {
+ "name": "San Cristóbal y Nieves"
+ },
+ "SM": {
+ "name": "San Marino"
+ },
+ "MF": {
+ "name": "San Martín"
+ },
+ "PM": {
+ "name": "San Pedro y Miquelón"
+ },
+ "VC": {
+ "name": "San Vicente y las Granadinas"
+ },
+ "SH": {
+ "name": "Santa Elena"
+ },
+ "LC": {
+ "name": "Santa Lucía"
+ },
+ "ST": {
+ "name": "Santo Tomé y Príncipe"
+ },
+ "SN": {
+ "name": "Senegal"
+ },
+ "RS": {
+ "name": "Serbia"
+ },
+ "SC": {
+ "name": "Seychelles"
+ },
+ "SL": {
+ "name": "Sierra Leona"
+ },
+ "SG": {
+ "name": "Singapur"
+ },
+ "SX": {
+ "name": "Sint Maarten"
+ },
+ "SY": {
+ "name": "Siria"
+ },
+ "SO": {
+ "name": "Somalia"
+ },
+ "LK": {
+ "name": "Sri Lanka"
+ },
+ "SZ": {
+ "name": "Suazilandia"
+ },
+ "ZA": {
+ "name": "Sudáfrica"
+ },
+ "SD": {
+ "name": "Sudán"
+ },
+ "SS": {
+ "name": "Sudán del Sur"
+ },
+ "SE": {
+ "name": "Suecia"
+ },
+ "CH": {
+ "name": "Suiza"
+ },
+ "SR": {
+ "name": "Surinam"
+ },
+ "SJ": {
+ "name": "Svalbard y Jan Mayen"
+ },
+ "TH": {
+ "name": "Tailandia"
+ },
+ "TW": {
+ "name": "Taiwán"
+ },
+ "TZ": {
+ "name": "Tanzania"
+ },
+ "TJ": {
+ "name": "Tayikistán"
+ },
+ "IO": {
+ "name": "Territorio Británico del Océano Ãndico"
+ },
+ "TF": {
+ "name": "Territorios Australes Franceses"
+ },
+ "PS": {
+ "name": "Territorios Palestinos"
+ },
+ "TL": {
+ "name": "Timor Oriental"
+ },
+ "TG": {
+ "name": "Togo"
+ },
+ "TK": {
+ "name": "Tokelau"
+ },
+ "TO": {
+ "name": "Tonga"
+ },
+ "TT": {
+ "name": "Trinidad y Tobago"
+ },
+ "TA": {
+ "name": "Tristán da Cunha"
+ },
+ "TN": {
+ "name": "Túnez"
+ },
+ "TM": {
+ "name": "Turkmenistán"
+ },
+ "TR": {
+ "name": "Turquía"
+ },
+ "TV": {
+ "name": "Tuvalu"
+ },
+ "UA": {
+ "name": "Ucrania"
+ },
+ "UG": {
+ "name": "Uganda"
+ },
+ "UY": {
+ "name": "Uruguay"
+ },
+ "UZ": {
+ "name": "Uzbekistán"
+ },
+ "VU": {
+ "name": "Vanuatu"
+ },
+ "VE": {
+ "name": "Venezuela"
+ },
+ "VN": {
+ "name": "Vietnam"
+ },
+ "WF": {
+ "name": "Wallis y Futuna"
+ },
+ "YE": {
+ "name": "Yemen"
+ },
+ "DJ": {
+ "name": "Yibuti"
+ },
+ "ZM": {
+ "name": "Zambia"
+ },
+ "ZW": {
+ "name": "Zimbabue"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/country/es-PR.json b/library/intl/resources/country/es-PR.json
new file mode 100644
index 000000000..6a02f5aec
--- /dev/null
+++ b/library/intl/resources/country/es-PR.json
@@ -0,0 +1,761 @@
+{
+ "AF": {
+ "name": "Afganistán"
+ },
+ "AL": {
+ "name": "Albania"
+ },
+ "DE": {
+ "name": "Alemania"
+ },
+ "AD": {
+ "name": "Andorra"
+ },
+ "AO": {
+ "name": "Angola"
+ },
+ "AI": {
+ "name": "Anguila"
+ },
+ "AQ": {
+ "name": "Antártida"
+ },
+ "AG": {
+ "name": "Antigua y Barbuda"
+ },
+ "SA": {
+ "name": "Arabia Saudí"
+ },
+ "DZ": {
+ "name": "Argelia"
+ },
+ "AR": {
+ "name": "Argentina"
+ },
+ "AM": {
+ "name": "Armenia"
+ },
+ "AW": {
+ "name": "Aruba"
+ },
+ "AU": {
+ "name": "Australia"
+ },
+ "AT": {
+ "name": "Austria"
+ },
+ "AZ": {
+ "name": "Azerbaiyán"
+ },
+ "BS": {
+ "name": "Bahamas"
+ },
+ "BD": {
+ "name": "Bangladés"
+ },
+ "BB": {
+ "name": "Barbados"
+ },
+ "BH": {
+ "name": "Baréin"
+ },
+ "BE": {
+ "name": "Bélgica"
+ },
+ "BZ": {
+ "name": "Belice"
+ },
+ "BJ": {
+ "name": "Benín"
+ },
+ "BM": {
+ "name": "Bermudas"
+ },
+ "BY": {
+ "name": "Bielorrusia"
+ },
+ "BO": {
+ "name": "Bolivia"
+ },
+ "BA": {
+ "name": "Bosnia y Herzegovina"
+ },
+ "BW": {
+ "name": "Botsuana"
+ },
+ "BR": {
+ "name": "Brasil"
+ },
+ "BN": {
+ "name": "Brunéi"
+ },
+ "BG": {
+ "name": "Bulgaria"
+ },
+ "BF": {
+ "name": "Burkina Faso"
+ },
+ "BI": {
+ "name": "Burundi"
+ },
+ "BT": {
+ "name": "Bután"
+ },
+ "CV": {
+ "name": "Cabo Verde"
+ },
+ "KH": {
+ "name": "Camboya"
+ },
+ "CM": {
+ "name": "Camerún"
+ },
+ "CA": {
+ "name": "Canadá"
+ },
+ "BQ": {
+ "name": "Caribe neerlandés"
+ },
+ "QA": {
+ "name": "Catar"
+ },
+ "EA": {
+ "name": "Ceuta y Melilla"
+ },
+ "TD": {
+ "name": "Chad"
+ },
+ "CL": {
+ "name": "Chile"
+ },
+ "CN": {
+ "name": "China"
+ },
+ "CY": {
+ "name": "Chipre"
+ },
+ "VA": {
+ "name": "Ciudad del Vaticano"
+ },
+ "CO": {
+ "name": "Colombia"
+ },
+ "KM": {
+ "name": "Comoras"
+ },
+ "KP": {
+ "name": "Corea del Norte"
+ },
+ "KR": {
+ "name": "Corea del Sur"
+ },
+ "CI": {
+ "name": "Costa de Marfil"
+ },
+ "CR": {
+ "name": "Costa Rica"
+ },
+ "HR": {
+ "name": "Croacia"
+ },
+ "CU": {
+ "name": "Cuba"
+ },
+ "CW": {
+ "name": "Curazao"
+ },
+ "DG": {
+ "name": "Diego García"
+ },
+ "DK": {
+ "name": "Dinamarca"
+ },
+ "DM": {
+ "name": "Dominica"
+ },
+ "EC": {
+ "name": "Ecuador"
+ },
+ "EG": {
+ "name": "Egipto"
+ },
+ "SV": {
+ "name": "El Salvador"
+ },
+ "AE": {
+ "name": "Emiratos Ãrabes Unidos"
+ },
+ "ER": {
+ "name": "Eritrea"
+ },
+ "SK": {
+ "name": "Eslovaquia"
+ },
+ "SI": {
+ "name": "Eslovenia"
+ },
+ "ES": {
+ "name": "España"
+ },
+ "US": {
+ "name": "Estados Unidos"
+ },
+ "EE": {
+ "name": "Estonia"
+ },
+ "ET": {
+ "name": "Etiopía"
+ },
+ "PH": {
+ "name": "Filipinas"
+ },
+ "FI": {
+ "name": "Finlandia"
+ },
+ "FJ": {
+ "name": "Fiyi"
+ },
+ "FR": {
+ "name": "Francia"
+ },
+ "GA": {
+ "name": "Gabón"
+ },
+ "GM": {
+ "name": "Gambia"
+ },
+ "GE": {
+ "name": "Georgia"
+ },
+ "GH": {
+ "name": "Ghana"
+ },
+ "GI": {
+ "name": "Gibraltar"
+ },
+ "GD": {
+ "name": "Granada"
+ },
+ "GR": {
+ "name": "Grecia"
+ },
+ "GL": {
+ "name": "Groenlandia"
+ },
+ "GP": {
+ "name": "Guadalupe"
+ },
+ "GU": {
+ "name": "Guam"
+ },
+ "GT": {
+ "name": "Guatemala"
+ },
+ "GF": {
+ "name": "Guayana Francesa"
+ },
+ "GG": {
+ "name": "Guernesey"
+ },
+ "GN": {
+ "name": "Guinea"
+ },
+ "GQ": {
+ "name": "Guinea Ecuatorial"
+ },
+ "GW": {
+ "name": "Guinea-Bisáu"
+ },
+ "GY": {
+ "name": "Guyana"
+ },
+ "HT": {
+ "name": "Haití"
+ },
+ "HN": {
+ "name": "Honduras"
+ },
+ "HU": {
+ "name": "Hungría"
+ },
+ "IN": {
+ "name": "India"
+ },
+ "ID": {
+ "name": "Indonesia"
+ },
+ "IQ": {
+ "name": "Irak"
+ },
+ "IR": {
+ "name": "Irán"
+ },
+ "IE": {
+ "name": "Irlanda"
+ },
+ "AC": {
+ "name": "Isla Ascensión"
+ },
+ "CX": {
+ "name": "Isla Christmas"
+ },
+ "IM": {
+ "name": "Isla de Man"
+ },
+ "NF": {
+ "name": "Isla Norfolk"
+ },
+ "IS": {
+ "name": "Islandia"
+ },
+ "AX": {
+ "name": "Islas Ã…land"
+ },
+ "KY": {
+ "name": "Islas Caimán"
+ },
+ "IC": {
+ "name": "islas Canarias"
+ },
+ "CC": {
+ "name": "Islas Cocos"
+ },
+ "CK": {
+ "name": "Islas Cook"
+ },
+ "FO": {
+ "name": "Islas Feroe"
+ },
+ "GS": {
+ "name": "Islas Georgia del Sur y Sandwich del Sur"
+ },
+ "FK": {
+ "name": "Islas Malvinas"
+ },
+ "MP": {
+ "name": "Islas Marianas del Norte"
+ },
+ "MH": {
+ "name": "Islas Marshall"
+ },
+ "UM": {
+ "name": "Islas menores alejadas de EE. UU."
+ },
+ "PN": {
+ "name": "Islas Pitcairn"
+ },
+ "SB": {
+ "name": "Islas Salomón"
+ },
+ "TC": {
+ "name": "Islas Turcas y Caicos"
+ },
+ "VG": {
+ "name": "Islas Vírgenes Británicas"
+ },
+ "VI": {
+ "name": "Islas Vírgenes de EE. UU."
+ },
+ "IL": {
+ "name": "Israel"
+ },
+ "IT": {
+ "name": "Italia"
+ },
+ "JM": {
+ "name": "Jamaica"
+ },
+ "JP": {
+ "name": "Japón"
+ },
+ "JE": {
+ "name": "Jersey"
+ },
+ "JO": {
+ "name": "Jordania"
+ },
+ "KZ": {
+ "name": "Kazajistán"
+ },
+ "KE": {
+ "name": "Kenia"
+ },
+ "KG": {
+ "name": "Kirguistán"
+ },
+ "KI": {
+ "name": "Kiribati"
+ },
+ "XK": {
+ "name": "Kosovo"
+ },
+ "KW": {
+ "name": "Kuwait"
+ },
+ "LA": {
+ "name": "Laos"
+ },
+ "LS": {
+ "name": "Lesoto"
+ },
+ "LV": {
+ "name": "Letonia"
+ },
+ "LB": {
+ "name": "Líbano"
+ },
+ "LR": {
+ "name": "Liberia"
+ },
+ "LY": {
+ "name": "Libia"
+ },
+ "LI": {
+ "name": "Liechtenstein"
+ },
+ "LT": {
+ "name": "Lituania"
+ },
+ "LU": {
+ "name": "Luxemburgo"
+ },
+ "MK": {
+ "name": "Macedonia"
+ },
+ "MG": {
+ "name": "Madagascar"
+ },
+ "MY": {
+ "name": "Malasia"
+ },
+ "MW": {
+ "name": "Malaui"
+ },
+ "MV": {
+ "name": "Maldivas"
+ },
+ "ML": {
+ "name": "Mali"
+ },
+ "MT": {
+ "name": "Malta"
+ },
+ "MA": {
+ "name": "Marruecos"
+ },
+ "MQ": {
+ "name": "Martinica"
+ },
+ "MU": {
+ "name": "Mauricio"
+ },
+ "MR": {
+ "name": "Mauritania"
+ },
+ "YT": {
+ "name": "Mayotte"
+ },
+ "MX": {
+ "name": "México"
+ },
+ "FM": {
+ "name": "Micronesia"
+ },
+ "MD": {
+ "name": "Moldavia"
+ },
+ "MC": {
+ "name": "Mónaco"
+ },
+ "MN": {
+ "name": "Mongolia"
+ },
+ "ME": {
+ "name": "Montenegro"
+ },
+ "MS": {
+ "name": "Montserrat"
+ },
+ "MZ": {
+ "name": "Mozambique"
+ },
+ "MM": {
+ "name": "Myanmar (Birmania)"
+ },
+ "NA": {
+ "name": "Namibia"
+ },
+ "NR": {
+ "name": "Nauru"
+ },
+ "NP": {
+ "name": "Nepal"
+ },
+ "NI": {
+ "name": "Nicaragua"
+ },
+ "NE": {
+ "name": "Níger"
+ },
+ "NG": {
+ "name": "Nigeria"
+ },
+ "NU": {
+ "name": "Niue"
+ },
+ "NO": {
+ "name": "Noruega"
+ },
+ "NC": {
+ "name": "Nueva Caledonia"
+ },
+ "NZ": {
+ "name": "Nueva Zelanda"
+ },
+ "OM": {
+ "name": "Omán"
+ },
+ "NL": {
+ "name": "Países Bajos"
+ },
+ "PK": {
+ "name": "Pakistán"
+ },
+ "PW": {
+ "name": "Palau"
+ },
+ "PA": {
+ "name": "Panamá"
+ },
+ "PG": {
+ "name": "Papúa Nueva Guinea"
+ },
+ "PY": {
+ "name": "Paraguay"
+ },
+ "PE": {
+ "name": "Perú"
+ },
+ "PF": {
+ "name": "Polinesia Francesa"
+ },
+ "PL": {
+ "name": "Polonia"
+ },
+ "PT": {
+ "name": "Portugal"
+ },
+ "PR": {
+ "name": "Puerto Rico"
+ },
+ "HK": {
+ "name": "RAE de Hong Kong (China)"
+ },
+ "MO": {
+ "name": "RAE de Macao (China)"
+ },
+ "GB": {
+ "name": "Reino Unido"
+ },
+ "CF": {
+ "name": "República Centroafricana"
+ },
+ "CZ": {
+ "name": "República Checa"
+ },
+ "CG": {
+ "name": "República del Congo"
+ },
+ "CD": {
+ "name": "República Democrática del Congo"
+ },
+ "DO": {
+ "name": "República Dominicana"
+ },
+ "RE": {
+ "name": "Reunión"
+ },
+ "RW": {
+ "name": "Ruanda"
+ },
+ "RO": {
+ "name": "Rumanía"
+ },
+ "RU": {
+ "name": "Rusia"
+ },
+ "EH": {
+ "name": "Sáhara Occidental"
+ },
+ "WS": {
+ "name": "Samoa"
+ },
+ "AS": {
+ "name": "Samoa Americana"
+ },
+ "BL": {
+ "name": "San Bartolomé"
+ },
+ "KN": {
+ "name": "San Cristóbal y Nieves"
+ },
+ "SM": {
+ "name": "San Marino"
+ },
+ "MF": {
+ "name": "San Martín"
+ },
+ "PM": {
+ "name": "San Pedro y Miquelón"
+ },
+ "VC": {
+ "name": "San Vicente y las Granadinas"
+ },
+ "SH": {
+ "name": "Santa Elena"
+ },
+ "LC": {
+ "name": "Santa Lucía"
+ },
+ "ST": {
+ "name": "Santo Tomé y Príncipe"
+ },
+ "SN": {
+ "name": "Senegal"
+ },
+ "RS": {
+ "name": "Serbia"
+ },
+ "SC": {
+ "name": "Seychelles"
+ },
+ "SL": {
+ "name": "Sierra Leona"
+ },
+ "SG": {
+ "name": "Singapur"
+ },
+ "SX": {
+ "name": "Sint Maarten"
+ },
+ "SY": {
+ "name": "Siria"
+ },
+ "SO": {
+ "name": "Somalia"
+ },
+ "LK": {
+ "name": "Sri Lanka"
+ },
+ "SZ": {
+ "name": "Suazilandia"
+ },
+ "ZA": {
+ "name": "Sudáfrica"
+ },
+ "SD": {
+ "name": "Sudán"
+ },
+ "SS": {
+ "name": "Sudán del Sur"
+ },
+ "SE": {
+ "name": "Suecia"
+ },
+ "CH": {
+ "name": "Suiza"
+ },
+ "SR": {
+ "name": "Surinam"
+ },
+ "SJ": {
+ "name": "Svalbard y Jan Mayen"
+ },
+ "TH": {
+ "name": "Tailandia"
+ },
+ "TW": {
+ "name": "Taiwán"
+ },
+ "TZ": {
+ "name": "Tanzania"
+ },
+ "TJ": {
+ "name": "Tayikistán"
+ },
+ "IO": {
+ "name": "Territorio Británico del Océano Ãndico"
+ },
+ "TF": {
+ "name": "Territorios Australes Franceses"
+ },
+ "PS": {
+ "name": "Territorios Palestinos"
+ },
+ "TL": {
+ "name": "Timor Oriental"
+ },
+ "TG": {
+ "name": "Togo"
+ },
+ "TK": {
+ "name": "Tokelau"
+ },
+ "TO": {
+ "name": "Tonga"
+ },
+ "TT": {
+ "name": "Trinidad y Tobago"
+ },
+ "TA": {
+ "name": "Tristán da Cunha"
+ },
+ "TN": {
+ "name": "Túnez"
+ },
+ "TM": {
+ "name": "Turkmenistán"
+ },
+ "TR": {
+ "name": "Turquía"
+ },
+ "TV": {
+ "name": "Tuvalu"
+ },
+ "UA": {
+ "name": "Ucrania"
+ },
+ "UG": {
+ "name": "Uganda"
+ },
+ "UY": {
+ "name": "Uruguay"
+ },
+ "UZ": {
+ "name": "Uzbekistán"
+ },
+ "VU": {
+ "name": "Vanuatu"
+ },
+ "VE": {
+ "name": "Venezuela"
+ },
+ "VN": {
+ "name": "Vietnam"
+ },
+ "WF": {
+ "name": "Wallis y Futuna"
+ },
+ "YE": {
+ "name": "Yemen"
+ },
+ "DJ": {
+ "name": "Yibuti"
+ },
+ "ZM": {
+ "name": "Zambia"
+ },
+ "ZW": {
+ "name": "Zimbabue"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/country/es-PY.json b/library/intl/resources/country/es-PY.json
new file mode 100644
index 000000000..6a02f5aec
--- /dev/null
+++ b/library/intl/resources/country/es-PY.json
@@ -0,0 +1,761 @@
+{
+ "AF": {
+ "name": "Afganistán"
+ },
+ "AL": {
+ "name": "Albania"
+ },
+ "DE": {
+ "name": "Alemania"
+ },
+ "AD": {
+ "name": "Andorra"
+ },
+ "AO": {
+ "name": "Angola"
+ },
+ "AI": {
+ "name": "Anguila"
+ },
+ "AQ": {
+ "name": "Antártida"
+ },
+ "AG": {
+ "name": "Antigua y Barbuda"
+ },
+ "SA": {
+ "name": "Arabia Saudí"
+ },
+ "DZ": {
+ "name": "Argelia"
+ },
+ "AR": {
+ "name": "Argentina"
+ },
+ "AM": {
+ "name": "Armenia"
+ },
+ "AW": {
+ "name": "Aruba"
+ },
+ "AU": {
+ "name": "Australia"
+ },
+ "AT": {
+ "name": "Austria"
+ },
+ "AZ": {
+ "name": "Azerbaiyán"
+ },
+ "BS": {
+ "name": "Bahamas"
+ },
+ "BD": {
+ "name": "Bangladés"
+ },
+ "BB": {
+ "name": "Barbados"
+ },
+ "BH": {
+ "name": "Baréin"
+ },
+ "BE": {
+ "name": "Bélgica"
+ },
+ "BZ": {
+ "name": "Belice"
+ },
+ "BJ": {
+ "name": "Benín"
+ },
+ "BM": {
+ "name": "Bermudas"
+ },
+ "BY": {
+ "name": "Bielorrusia"
+ },
+ "BO": {
+ "name": "Bolivia"
+ },
+ "BA": {
+ "name": "Bosnia y Herzegovina"
+ },
+ "BW": {
+ "name": "Botsuana"
+ },
+ "BR": {
+ "name": "Brasil"
+ },
+ "BN": {
+ "name": "Brunéi"
+ },
+ "BG": {
+ "name": "Bulgaria"
+ },
+ "BF": {
+ "name": "Burkina Faso"
+ },
+ "BI": {
+ "name": "Burundi"
+ },
+ "BT": {
+ "name": "Bután"
+ },
+ "CV": {
+ "name": "Cabo Verde"
+ },
+ "KH": {
+ "name": "Camboya"
+ },
+ "CM": {
+ "name": "Camerún"
+ },
+ "CA": {
+ "name": "Canadá"
+ },
+ "BQ": {
+ "name": "Caribe neerlandés"
+ },
+ "QA": {
+ "name": "Catar"
+ },
+ "EA": {
+ "name": "Ceuta y Melilla"
+ },
+ "TD": {
+ "name": "Chad"
+ },
+ "CL": {
+ "name": "Chile"
+ },
+ "CN": {
+ "name": "China"
+ },
+ "CY": {
+ "name": "Chipre"
+ },
+ "VA": {
+ "name": "Ciudad del Vaticano"
+ },
+ "CO": {
+ "name": "Colombia"
+ },
+ "KM": {
+ "name": "Comoras"
+ },
+ "KP": {
+ "name": "Corea del Norte"
+ },
+ "KR": {
+ "name": "Corea del Sur"
+ },
+ "CI": {
+ "name": "Costa de Marfil"
+ },
+ "CR": {
+ "name": "Costa Rica"
+ },
+ "HR": {
+ "name": "Croacia"
+ },
+ "CU": {
+ "name": "Cuba"
+ },
+ "CW": {
+ "name": "Curazao"
+ },
+ "DG": {
+ "name": "Diego García"
+ },
+ "DK": {
+ "name": "Dinamarca"
+ },
+ "DM": {
+ "name": "Dominica"
+ },
+ "EC": {
+ "name": "Ecuador"
+ },
+ "EG": {
+ "name": "Egipto"
+ },
+ "SV": {
+ "name": "El Salvador"
+ },
+ "AE": {
+ "name": "Emiratos Ãrabes Unidos"
+ },
+ "ER": {
+ "name": "Eritrea"
+ },
+ "SK": {
+ "name": "Eslovaquia"
+ },
+ "SI": {
+ "name": "Eslovenia"
+ },
+ "ES": {
+ "name": "España"
+ },
+ "US": {
+ "name": "Estados Unidos"
+ },
+ "EE": {
+ "name": "Estonia"
+ },
+ "ET": {
+ "name": "Etiopía"
+ },
+ "PH": {
+ "name": "Filipinas"
+ },
+ "FI": {
+ "name": "Finlandia"
+ },
+ "FJ": {
+ "name": "Fiyi"
+ },
+ "FR": {
+ "name": "Francia"
+ },
+ "GA": {
+ "name": "Gabón"
+ },
+ "GM": {
+ "name": "Gambia"
+ },
+ "GE": {
+ "name": "Georgia"
+ },
+ "GH": {
+ "name": "Ghana"
+ },
+ "GI": {
+ "name": "Gibraltar"
+ },
+ "GD": {
+ "name": "Granada"
+ },
+ "GR": {
+ "name": "Grecia"
+ },
+ "GL": {
+ "name": "Groenlandia"
+ },
+ "GP": {
+ "name": "Guadalupe"
+ },
+ "GU": {
+ "name": "Guam"
+ },
+ "GT": {
+ "name": "Guatemala"
+ },
+ "GF": {
+ "name": "Guayana Francesa"
+ },
+ "GG": {
+ "name": "Guernesey"
+ },
+ "GN": {
+ "name": "Guinea"
+ },
+ "GQ": {
+ "name": "Guinea Ecuatorial"
+ },
+ "GW": {
+ "name": "Guinea-Bisáu"
+ },
+ "GY": {
+ "name": "Guyana"
+ },
+ "HT": {
+ "name": "Haití"
+ },
+ "HN": {
+ "name": "Honduras"
+ },
+ "HU": {
+ "name": "Hungría"
+ },
+ "IN": {
+ "name": "India"
+ },
+ "ID": {
+ "name": "Indonesia"
+ },
+ "IQ": {
+ "name": "Irak"
+ },
+ "IR": {
+ "name": "Irán"
+ },
+ "IE": {
+ "name": "Irlanda"
+ },
+ "AC": {
+ "name": "Isla Ascensión"
+ },
+ "CX": {
+ "name": "Isla Christmas"
+ },
+ "IM": {
+ "name": "Isla de Man"
+ },
+ "NF": {
+ "name": "Isla Norfolk"
+ },
+ "IS": {
+ "name": "Islandia"
+ },
+ "AX": {
+ "name": "Islas Ã…land"
+ },
+ "KY": {
+ "name": "Islas Caimán"
+ },
+ "IC": {
+ "name": "islas Canarias"
+ },
+ "CC": {
+ "name": "Islas Cocos"
+ },
+ "CK": {
+ "name": "Islas Cook"
+ },
+ "FO": {
+ "name": "Islas Feroe"
+ },
+ "GS": {
+ "name": "Islas Georgia del Sur y Sandwich del Sur"
+ },
+ "FK": {
+ "name": "Islas Malvinas"
+ },
+ "MP": {
+ "name": "Islas Marianas del Norte"
+ },
+ "MH": {
+ "name": "Islas Marshall"
+ },
+ "UM": {
+ "name": "Islas menores alejadas de EE. UU."
+ },
+ "PN": {
+ "name": "Islas Pitcairn"
+ },
+ "SB": {
+ "name": "Islas Salomón"
+ },
+ "TC": {
+ "name": "Islas Turcas y Caicos"
+ },
+ "VG": {
+ "name": "Islas Vírgenes Británicas"
+ },
+ "VI": {
+ "name": "Islas Vírgenes de EE. UU."
+ },
+ "IL": {
+ "name": "Israel"
+ },
+ "IT": {
+ "name": "Italia"
+ },
+ "JM": {
+ "name": "Jamaica"
+ },
+ "JP": {
+ "name": "Japón"
+ },
+ "JE": {
+ "name": "Jersey"
+ },
+ "JO": {
+ "name": "Jordania"
+ },
+ "KZ": {
+ "name": "Kazajistán"
+ },
+ "KE": {
+ "name": "Kenia"
+ },
+ "KG": {
+ "name": "Kirguistán"
+ },
+ "KI": {
+ "name": "Kiribati"
+ },
+ "XK": {
+ "name": "Kosovo"
+ },
+ "KW": {
+ "name": "Kuwait"
+ },
+ "LA": {
+ "name": "Laos"
+ },
+ "LS": {
+ "name": "Lesoto"
+ },
+ "LV": {
+ "name": "Letonia"
+ },
+ "LB": {
+ "name": "Líbano"
+ },
+ "LR": {
+ "name": "Liberia"
+ },
+ "LY": {
+ "name": "Libia"
+ },
+ "LI": {
+ "name": "Liechtenstein"
+ },
+ "LT": {
+ "name": "Lituania"
+ },
+ "LU": {
+ "name": "Luxemburgo"
+ },
+ "MK": {
+ "name": "Macedonia"
+ },
+ "MG": {
+ "name": "Madagascar"
+ },
+ "MY": {
+ "name": "Malasia"
+ },
+ "MW": {
+ "name": "Malaui"
+ },
+ "MV": {
+ "name": "Maldivas"
+ },
+ "ML": {
+ "name": "Mali"
+ },
+ "MT": {
+ "name": "Malta"
+ },
+ "MA": {
+ "name": "Marruecos"
+ },
+ "MQ": {
+ "name": "Martinica"
+ },
+ "MU": {
+ "name": "Mauricio"
+ },
+ "MR": {
+ "name": "Mauritania"
+ },
+ "YT": {
+ "name": "Mayotte"
+ },
+ "MX": {
+ "name": "México"
+ },
+ "FM": {
+ "name": "Micronesia"
+ },
+ "MD": {
+ "name": "Moldavia"
+ },
+ "MC": {
+ "name": "Mónaco"
+ },
+ "MN": {
+ "name": "Mongolia"
+ },
+ "ME": {
+ "name": "Montenegro"
+ },
+ "MS": {
+ "name": "Montserrat"
+ },
+ "MZ": {
+ "name": "Mozambique"
+ },
+ "MM": {
+ "name": "Myanmar (Birmania)"
+ },
+ "NA": {
+ "name": "Namibia"
+ },
+ "NR": {
+ "name": "Nauru"
+ },
+ "NP": {
+ "name": "Nepal"
+ },
+ "NI": {
+ "name": "Nicaragua"
+ },
+ "NE": {
+ "name": "Níger"
+ },
+ "NG": {
+ "name": "Nigeria"
+ },
+ "NU": {
+ "name": "Niue"
+ },
+ "NO": {
+ "name": "Noruega"
+ },
+ "NC": {
+ "name": "Nueva Caledonia"
+ },
+ "NZ": {
+ "name": "Nueva Zelanda"
+ },
+ "OM": {
+ "name": "Omán"
+ },
+ "NL": {
+ "name": "Países Bajos"
+ },
+ "PK": {
+ "name": "Pakistán"
+ },
+ "PW": {
+ "name": "Palau"
+ },
+ "PA": {
+ "name": "Panamá"
+ },
+ "PG": {
+ "name": "Papúa Nueva Guinea"
+ },
+ "PY": {
+ "name": "Paraguay"
+ },
+ "PE": {
+ "name": "Perú"
+ },
+ "PF": {
+ "name": "Polinesia Francesa"
+ },
+ "PL": {
+ "name": "Polonia"
+ },
+ "PT": {
+ "name": "Portugal"
+ },
+ "PR": {
+ "name": "Puerto Rico"
+ },
+ "HK": {
+ "name": "RAE de Hong Kong (China)"
+ },
+ "MO": {
+ "name": "RAE de Macao (China)"
+ },
+ "GB": {
+ "name": "Reino Unido"
+ },
+ "CF": {
+ "name": "República Centroafricana"
+ },
+ "CZ": {
+ "name": "República Checa"
+ },
+ "CG": {
+ "name": "República del Congo"
+ },
+ "CD": {
+ "name": "República Democrática del Congo"
+ },
+ "DO": {
+ "name": "República Dominicana"
+ },
+ "RE": {
+ "name": "Reunión"
+ },
+ "RW": {
+ "name": "Ruanda"
+ },
+ "RO": {
+ "name": "Rumanía"
+ },
+ "RU": {
+ "name": "Rusia"
+ },
+ "EH": {
+ "name": "Sáhara Occidental"
+ },
+ "WS": {
+ "name": "Samoa"
+ },
+ "AS": {
+ "name": "Samoa Americana"
+ },
+ "BL": {
+ "name": "San Bartolomé"
+ },
+ "KN": {
+ "name": "San Cristóbal y Nieves"
+ },
+ "SM": {
+ "name": "San Marino"
+ },
+ "MF": {
+ "name": "San Martín"
+ },
+ "PM": {
+ "name": "San Pedro y Miquelón"
+ },
+ "VC": {
+ "name": "San Vicente y las Granadinas"
+ },
+ "SH": {
+ "name": "Santa Elena"
+ },
+ "LC": {
+ "name": "Santa Lucía"
+ },
+ "ST": {
+ "name": "Santo Tomé y Príncipe"
+ },
+ "SN": {
+ "name": "Senegal"
+ },
+ "RS": {
+ "name": "Serbia"
+ },
+ "SC": {
+ "name": "Seychelles"
+ },
+ "SL": {
+ "name": "Sierra Leona"
+ },
+ "SG": {
+ "name": "Singapur"
+ },
+ "SX": {
+ "name": "Sint Maarten"
+ },
+ "SY": {
+ "name": "Siria"
+ },
+ "SO": {
+ "name": "Somalia"
+ },
+ "LK": {
+ "name": "Sri Lanka"
+ },
+ "SZ": {
+ "name": "Suazilandia"
+ },
+ "ZA": {
+ "name": "Sudáfrica"
+ },
+ "SD": {
+ "name": "Sudán"
+ },
+ "SS": {
+ "name": "Sudán del Sur"
+ },
+ "SE": {
+ "name": "Suecia"
+ },
+ "CH": {
+ "name": "Suiza"
+ },
+ "SR": {
+ "name": "Surinam"
+ },
+ "SJ": {
+ "name": "Svalbard y Jan Mayen"
+ },
+ "TH": {
+ "name": "Tailandia"
+ },
+ "TW": {
+ "name": "Taiwán"
+ },
+ "TZ": {
+ "name": "Tanzania"
+ },
+ "TJ": {
+ "name": "Tayikistán"
+ },
+ "IO": {
+ "name": "Territorio Británico del Océano Ãndico"
+ },
+ "TF": {
+ "name": "Territorios Australes Franceses"
+ },
+ "PS": {
+ "name": "Territorios Palestinos"
+ },
+ "TL": {
+ "name": "Timor Oriental"
+ },
+ "TG": {
+ "name": "Togo"
+ },
+ "TK": {
+ "name": "Tokelau"
+ },
+ "TO": {
+ "name": "Tonga"
+ },
+ "TT": {
+ "name": "Trinidad y Tobago"
+ },
+ "TA": {
+ "name": "Tristán da Cunha"
+ },
+ "TN": {
+ "name": "Túnez"
+ },
+ "TM": {
+ "name": "Turkmenistán"
+ },
+ "TR": {
+ "name": "Turquía"
+ },
+ "TV": {
+ "name": "Tuvalu"
+ },
+ "UA": {
+ "name": "Ucrania"
+ },
+ "UG": {
+ "name": "Uganda"
+ },
+ "UY": {
+ "name": "Uruguay"
+ },
+ "UZ": {
+ "name": "Uzbekistán"
+ },
+ "VU": {
+ "name": "Vanuatu"
+ },
+ "VE": {
+ "name": "Venezuela"
+ },
+ "VN": {
+ "name": "Vietnam"
+ },
+ "WF": {
+ "name": "Wallis y Futuna"
+ },
+ "YE": {
+ "name": "Yemen"
+ },
+ "DJ": {
+ "name": "Yibuti"
+ },
+ "ZM": {
+ "name": "Zambia"
+ },
+ "ZW": {
+ "name": "Zimbabue"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/country/es-SV.json b/library/intl/resources/country/es-SV.json
new file mode 100644
index 000000000..6a02f5aec
--- /dev/null
+++ b/library/intl/resources/country/es-SV.json
@@ -0,0 +1,761 @@
+{
+ "AF": {
+ "name": "Afganistán"
+ },
+ "AL": {
+ "name": "Albania"
+ },
+ "DE": {
+ "name": "Alemania"
+ },
+ "AD": {
+ "name": "Andorra"
+ },
+ "AO": {
+ "name": "Angola"
+ },
+ "AI": {
+ "name": "Anguila"
+ },
+ "AQ": {
+ "name": "Antártida"
+ },
+ "AG": {
+ "name": "Antigua y Barbuda"
+ },
+ "SA": {
+ "name": "Arabia Saudí"
+ },
+ "DZ": {
+ "name": "Argelia"
+ },
+ "AR": {
+ "name": "Argentina"
+ },
+ "AM": {
+ "name": "Armenia"
+ },
+ "AW": {
+ "name": "Aruba"
+ },
+ "AU": {
+ "name": "Australia"
+ },
+ "AT": {
+ "name": "Austria"
+ },
+ "AZ": {
+ "name": "Azerbaiyán"
+ },
+ "BS": {
+ "name": "Bahamas"
+ },
+ "BD": {
+ "name": "Bangladés"
+ },
+ "BB": {
+ "name": "Barbados"
+ },
+ "BH": {
+ "name": "Baréin"
+ },
+ "BE": {
+ "name": "Bélgica"
+ },
+ "BZ": {
+ "name": "Belice"
+ },
+ "BJ": {
+ "name": "Benín"
+ },
+ "BM": {
+ "name": "Bermudas"
+ },
+ "BY": {
+ "name": "Bielorrusia"
+ },
+ "BO": {
+ "name": "Bolivia"
+ },
+ "BA": {
+ "name": "Bosnia y Herzegovina"
+ },
+ "BW": {
+ "name": "Botsuana"
+ },
+ "BR": {
+ "name": "Brasil"
+ },
+ "BN": {
+ "name": "Brunéi"
+ },
+ "BG": {
+ "name": "Bulgaria"
+ },
+ "BF": {
+ "name": "Burkina Faso"
+ },
+ "BI": {
+ "name": "Burundi"
+ },
+ "BT": {
+ "name": "Bután"
+ },
+ "CV": {
+ "name": "Cabo Verde"
+ },
+ "KH": {
+ "name": "Camboya"
+ },
+ "CM": {
+ "name": "Camerún"
+ },
+ "CA": {
+ "name": "Canadá"
+ },
+ "BQ": {
+ "name": "Caribe neerlandés"
+ },
+ "QA": {
+ "name": "Catar"
+ },
+ "EA": {
+ "name": "Ceuta y Melilla"
+ },
+ "TD": {
+ "name": "Chad"
+ },
+ "CL": {
+ "name": "Chile"
+ },
+ "CN": {
+ "name": "China"
+ },
+ "CY": {
+ "name": "Chipre"
+ },
+ "VA": {
+ "name": "Ciudad del Vaticano"
+ },
+ "CO": {
+ "name": "Colombia"
+ },
+ "KM": {
+ "name": "Comoras"
+ },
+ "KP": {
+ "name": "Corea del Norte"
+ },
+ "KR": {
+ "name": "Corea del Sur"
+ },
+ "CI": {
+ "name": "Costa de Marfil"
+ },
+ "CR": {
+ "name": "Costa Rica"
+ },
+ "HR": {
+ "name": "Croacia"
+ },
+ "CU": {
+ "name": "Cuba"
+ },
+ "CW": {
+ "name": "Curazao"
+ },
+ "DG": {
+ "name": "Diego García"
+ },
+ "DK": {
+ "name": "Dinamarca"
+ },
+ "DM": {
+ "name": "Dominica"
+ },
+ "EC": {
+ "name": "Ecuador"
+ },
+ "EG": {
+ "name": "Egipto"
+ },
+ "SV": {
+ "name": "El Salvador"
+ },
+ "AE": {
+ "name": "Emiratos Ãrabes Unidos"
+ },
+ "ER": {
+ "name": "Eritrea"
+ },
+ "SK": {
+ "name": "Eslovaquia"
+ },
+ "SI": {
+ "name": "Eslovenia"
+ },
+ "ES": {
+ "name": "España"
+ },
+ "US": {
+ "name": "Estados Unidos"
+ },
+ "EE": {
+ "name": "Estonia"
+ },
+ "ET": {
+ "name": "Etiopía"
+ },
+ "PH": {
+ "name": "Filipinas"
+ },
+ "FI": {
+ "name": "Finlandia"
+ },
+ "FJ": {
+ "name": "Fiyi"
+ },
+ "FR": {
+ "name": "Francia"
+ },
+ "GA": {
+ "name": "Gabón"
+ },
+ "GM": {
+ "name": "Gambia"
+ },
+ "GE": {
+ "name": "Georgia"
+ },
+ "GH": {
+ "name": "Ghana"
+ },
+ "GI": {
+ "name": "Gibraltar"
+ },
+ "GD": {
+ "name": "Granada"
+ },
+ "GR": {
+ "name": "Grecia"
+ },
+ "GL": {
+ "name": "Groenlandia"
+ },
+ "GP": {
+ "name": "Guadalupe"
+ },
+ "GU": {
+ "name": "Guam"
+ },
+ "GT": {
+ "name": "Guatemala"
+ },
+ "GF": {
+ "name": "Guayana Francesa"
+ },
+ "GG": {
+ "name": "Guernesey"
+ },
+ "GN": {
+ "name": "Guinea"
+ },
+ "GQ": {
+ "name": "Guinea Ecuatorial"
+ },
+ "GW": {
+ "name": "Guinea-Bisáu"
+ },
+ "GY": {
+ "name": "Guyana"
+ },
+ "HT": {
+ "name": "Haití"
+ },
+ "HN": {
+ "name": "Honduras"
+ },
+ "HU": {
+ "name": "Hungría"
+ },
+ "IN": {
+ "name": "India"
+ },
+ "ID": {
+ "name": "Indonesia"
+ },
+ "IQ": {
+ "name": "Irak"
+ },
+ "IR": {
+ "name": "Irán"
+ },
+ "IE": {
+ "name": "Irlanda"
+ },
+ "AC": {
+ "name": "Isla Ascensión"
+ },
+ "CX": {
+ "name": "Isla Christmas"
+ },
+ "IM": {
+ "name": "Isla de Man"
+ },
+ "NF": {
+ "name": "Isla Norfolk"
+ },
+ "IS": {
+ "name": "Islandia"
+ },
+ "AX": {
+ "name": "Islas Ã…land"
+ },
+ "KY": {
+ "name": "Islas Caimán"
+ },
+ "IC": {
+ "name": "islas Canarias"
+ },
+ "CC": {
+ "name": "Islas Cocos"
+ },
+ "CK": {
+ "name": "Islas Cook"
+ },
+ "FO": {
+ "name": "Islas Feroe"
+ },
+ "GS": {
+ "name": "Islas Georgia del Sur y Sandwich del Sur"
+ },
+ "FK": {
+ "name": "Islas Malvinas"
+ },
+ "MP": {
+ "name": "Islas Marianas del Norte"
+ },
+ "MH": {
+ "name": "Islas Marshall"
+ },
+ "UM": {
+ "name": "Islas menores alejadas de EE. UU."
+ },
+ "PN": {
+ "name": "Islas Pitcairn"
+ },
+ "SB": {
+ "name": "Islas Salomón"
+ },
+ "TC": {
+ "name": "Islas Turcas y Caicos"
+ },
+ "VG": {
+ "name": "Islas Vírgenes Británicas"
+ },
+ "VI": {
+ "name": "Islas Vírgenes de EE. UU."
+ },
+ "IL": {
+ "name": "Israel"
+ },
+ "IT": {
+ "name": "Italia"
+ },
+ "JM": {
+ "name": "Jamaica"
+ },
+ "JP": {
+ "name": "Japón"
+ },
+ "JE": {
+ "name": "Jersey"
+ },
+ "JO": {
+ "name": "Jordania"
+ },
+ "KZ": {
+ "name": "Kazajistán"
+ },
+ "KE": {
+ "name": "Kenia"
+ },
+ "KG": {
+ "name": "Kirguistán"
+ },
+ "KI": {
+ "name": "Kiribati"
+ },
+ "XK": {
+ "name": "Kosovo"
+ },
+ "KW": {
+ "name": "Kuwait"
+ },
+ "LA": {
+ "name": "Laos"
+ },
+ "LS": {
+ "name": "Lesoto"
+ },
+ "LV": {
+ "name": "Letonia"
+ },
+ "LB": {
+ "name": "Líbano"
+ },
+ "LR": {
+ "name": "Liberia"
+ },
+ "LY": {
+ "name": "Libia"
+ },
+ "LI": {
+ "name": "Liechtenstein"
+ },
+ "LT": {
+ "name": "Lituania"
+ },
+ "LU": {
+ "name": "Luxemburgo"
+ },
+ "MK": {
+ "name": "Macedonia"
+ },
+ "MG": {
+ "name": "Madagascar"
+ },
+ "MY": {
+ "name": "Malasia"
+ },
+ "MW": {
+ "name": "Malaui"
+ },
+ "MV": {
+ "name": "Maldivas"
+ },
+ "ML": {
+ "name": "Mali"
+ },
+ "MT": {
+ "name": "Malta"
+ },
+ "MA": {
+ "name": "Marruecos"
+ },
+ "MQ": {
+ "name": "Martinica"
+ },
+ "MU": {
+ "name": "Mauricio"
+ },
+ "MR": {
+ "name": "Mauritania"
+ },
+ "YT": {
+ "name": "Mayotte"
+ },
+ "MX": {
+ "name": "México"
+ },
+ "FM": {
+ "name": "Micronesia"
+ },
+ "MD": {
+ "name": "Moldavia"
+ },
+ "MC": {
+ "name": "Mónaco"
+ },
+ "MN": {
+ "name": "Mongolia"
+ },
+ "ME": {
+ "name": "Montenegro"
+ },
+ "MS": {
+ "name": "Montserrat"
+ },
+ "MZ": {
+ "name": "Mozambique"
+ },
+ "MM": {
+ "name": "Myanmar (Birmania)"
+ },
+ "NA": {
+ "name": "Namibia"
+ },
+ "NR": {
+ "name": "Nauru"
+ },
+ "NP": {
+ "name": "Nepal"
+ },
+ "NI": {
+ "name": "Nicaragua"
+ },
+ "NE": {
+ "name": "Níger"
+ },
+ "NG": {
+ "name": "Nigeria"
+ },
+ "NU": {
+ "name": "Niue"
+ },
+ "NO": {
+ "name": "Noruega"
+ },
+ "NC": {
+ "name": "Nueva Caledonia"
+ },
+ "NZ": {
+ "name": "Nueva Zelanda"
+ },
+ "OM": {
+ "name": "Omán"
+ },
+ "NL": {
+ "name": "Países Bajos"
+ },
+ "PK": {
+ "name": "Pakistán"
+ },
+ "PW": {
+ "name": "Palau"
+ },
+ "PA": {
+ "name": "Panamá"
+ },
+ "PG": {
+ "name": "Papúa Nueva Guinea"
+ },
+ "PY": {
+ "name": "Paraguay"
+ },
+ "PE": {
+ "name": "Perú"
+ },
+ "PF": {
+ "name": "Polinesia Francesa"
+ },
+ "PL": {
+ "name": "Polonia"
+ },
+ "PT": {
+ "name": "Portugal"
+ },
+ "PR": {
+ "name": "Puerto Rico"
+ },
+ "HK": {
+ "name": "RAE de Hong Kong (China)"
+ },
+ "MO": {
+ "name": "RAE de Macao (China)"
+ },
+ "GB": {
+ "name": "Reino Unido"
+ },
+ "CF": {
+ "name": "República Centroafricana"
+ },
+ "CZ": {
+ "name": "República Checa"
+ },
+ "CG": {
+ "name": "República del Congo"
+ },
+ "CD": {
+ "name": "República Democrática del Congo"
+ },
+ "DO": {
+ "name": "República Dominicana"
+ },
+ "RE": {
+ "name": "Reunión"
+ },
+ "RW": {
+ "name": "Ruanda"
+ },
+ "RO": {
+ "name": "Rumanía"
+ },
+ "RU": {
+ "name": "Rusia"
+ },
+ "EH": {
+ "name": "Sáhara Occidental"
+ },
+ "WS": {
+ "name": "Samoa"
+ },
+ "AS": {
+ "name": "Samoa Americana"
+ },
+ "BL": {
+ "name": "San Bartolomé"
+ },
+ "KN": {
+ "name": "San Cristóbal y Nieves"
+ },
+ "SM": {
+ "name": "San Marino"
+ },
+ "MF": {
+ "name": "San Martín"
+ },
+ "PM": {
+ "name": "San Pedro y Miquelón"
+ },
+ "VC": {
+ "name": "San Vicente y las Granadinas"
+ },
+ "SH": {
+ "name": "Santa Elena"
+ },
+ "LC": {
+ "name": "Santa Lucía"
+ },
+ "ST": {
+ "name": "Santo Tomé y Príncipe"
+ },
+ "SN": {
+ "name": "Senegal"
+ },
+ "RS": {
+ "name": "Serbia"
+ },
+ "SC": {
+ "name": "Seychelles"
+ },
+ "SL": {
+ "name": "Sierra Leona"
+ },
+ "SG": {
+ "name": "Singapur"
+ },
+ "SX": {
+ "name": "Sint Maarten"
+ },
+ "SY": {
+ "name": "Siria"
+ },
+ "SO": {
+ "name": "Somalia"
+ },
+ "LK": {
+ "name": "Sri Lanka"
+ },
+ "SZ": {
+ "name": "Suazilandia"
+ },
+ "ZA": {
+ "name": "Sudáfrica"
+ },
+ "SD": {
+ "name": "Sudán"
+ },
+ "SS": {
+ "name": "Sudán del Sur"
+ },
+ "SE": {
+ "name": "Suecia"
+ },
+ "CH": {
+ "name": "Suiza"
+ },
+ "SR": {
+ "name": "Surinam"
+ },
+ "SJ": {
+ "name": "Svalbard y Jan Mayen"
+ },
+ "TH": {
+ "name": "Tailandia"
+ },
+ "TW": {
+ "name": "Taiwán"
+ },
+ "TZ": {
+ "name": "Tanzania"
+ },
+ "TJ": {
+ "name": "Tayikistán"
+ },
+ "IO": {
+ "name": "Territorio Británico del Océano Ãndico"
+ },
+ "TF": {
+ "name": "Territorios Australes Franceses"
+ },
+ "PS": {
+ "name": "Territorios Palestinos"
+ },
+ "TL": {
+ "name": "Timor Oriental"
+ },
+ "TG": {
+ "name": "Togo"
+ },
+ "TK": {
+ "name": "Tokelau"
+ },
+ "TO": {
+ "name": "Tonga"
+ },
+ "TT": {
+ "name": "Trinidad y Tobago"
+ },
+ "TA": {
+ "name": "Tristán da Cunha"
+ },
+ "TN": {
+ "name": "Túnez"
+ },
+ "TM": {
+ "name": "Turkmenistán"
+ },
+ "TR": {
+ "name": "Turquía"
+ },
+ "TV": {
+ "name": "Tuvalu"
+ },
+ "UA": {
+ "name": "Ucrania"
+ },
+ "UG": {
+ "name": "Uganda"
+ },
+ "UY": {
+ "name": "Uruguay"
+ },
+ "UZ": {
+ "name": "Uzbekistán"
+ },
+ "VU": {
+ "name": "Vanuatu"
+ },
+ "VE": {
+ "name": "Venezuela"
+ },
+ "VN": {
+ "name": "Vietnam"
+ },
+ "WF": {
+ "name": "Wallis y Futuna"
+ },
+ "YE": {
+ "name": "Yemen"
+ },
+ "DJ": {
+ "name": "Yibuti"
+ },
+ "ZM": {
+ "name": "Zambia"
+ },
+ "ZW": {
+ "name": "Zimbabue"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/country/es-US.json b/library/intl/resources/country/es-US.json
new file mode 100644
index 000000000..6a02f5aec
--- /dev/null
+++ b/library/intl/resources/country/es-US.json
@@ -0,0 +1,761 @@
+{
+ "AF": {
+ "name": "Afganistán"
+ },
+ "AL": {
+ "name": "Albania"
+ },
+ "DE": {
+ "name": "Alemania"
+ },
+ "AD": {
+ "name": "Andorra"
+ },
+ "AO": {
+ "name": "Angola"
+ },
+ "AI": {
+ "name": "Anguila"
+ },
+ "AQ": {
+ "name": "Antártida"
+ },
+ "AG": {
+ "name": "Antigua y Barbuda"
+ },
+ "SA": {
+ "name": "Arabia Saudí"
+ },
+ "DZ": {
+ "name": "Argelia"
+ },
+ "AR": {
+ "name": "Argentina"
+ },
+ "AM": {
+ "name": "Armenia"
+ },
+ "AW": {
+ "name": "Aruba"
+ },
+ "AU": {
+ "name": "Australia"
+ },
+ "AT": {
+ "name": "Austria"
+ },
+ "AZ": {
+ "name": "Azerbaiyán"
+ },
+ "BS": {
+ "name": "Bahamas"
+ },
+ "BD": {
+ "name": "Bangladés"
+ },
+ "BB": {
+ "name": "Barbados"
+ },
+ "BH": {
+ "name": "Baréin"
+ },
+ "BE": {
+ "name": "Bélgica"
+ },
+ "BZ": {
+ "name": "Belice"
+ },
+ "BJ": {
+ "name": "Benín"
+ },
+ "BM": {
+ "name": "Bermudas"
+ },
+ "BY": {
+ "name": "Bielorrusia"
+ },
+ "BO": {
+ "name": "Bolivia"
+ },
+ "BA": {
+ "name": "Bosnia y Herzegovina"
+ },
+ "BW": {
+ "name": "Botsuana"
+ },
+ "BR": {
+ "name": "Brasil"
+ },
+ "BN": {
+ "name": "Brunéi"
+ },
+ "BG": {
+ "name": "Bulgaria"
+ },
+ "BF": {
+ "name": "Burkina Faso"
+ },
+ "BI": {
+ "name": "Burundi"
+ },
+ "BT": {
+ "name": "Bután"
+ },
+ "CV": {
+ "name": "Cabo Verde"
+ },
+ "KH": {
+ "name": "Camboya"
+ },
+ "CM": {
+ "name": "Camerún"
+ },
+ "CA": {
+ "name": "Canadá"
+ },
+ "BQ": {
+ "name": "Caribe neerlandés"
+ },
+ "QA": {
+ "name": "Catar"
+ },
+ "EA": {
+ "name": "Ceuta y Melilla"
+ },
+ "TD": {
+ "name": "Chad"
+ },
+ "CL": {
+ "name": "Chile"
+ },
+ "CN": {
+ "name": "China"
+ },
+ "CY": {
+ "name": "Chipre"
+ },
+ "VA": {
+ "name": "Ciudad del Vaticano"
+ },
+ "CO": {
+ "name": "Colombia"
+ },
+ "KM": {
+ "name": "Comoras"
+ },
+ "KP": {
+ "name": "Corea del Norte"
+ },
+ "KR": {
+ "name": "Corea del Sur"
+ },
+ "CI": {
+ "name": "Costa de Marfil"
+ },
+ "CR": {
+ "name": "Costa Rica"
+ },
+ "HR": {
+ "name": "Croacia"
+ },
+ "CU": {
+ "name": "Cuba"
+ },
+ "CW": {
+ "name": "Curazao"
+ },
+ "DG": {
+ "name": "Diego García"
+ },
+ "DK": {
+ "name": "Dinamarca"
+ },
+ "DM": {
+ "name": "Dominica"
+ },
+ "EC": {
+ "name": "Ecuador"
+ },
+ "EG": {
+ "name": "Egipto"
+ },
+ "SV": {
+ "name": "El Salvador"
+ },
+ "AE": {
+ "name": "Emiratos Ãrabes Unidos"
+ },
+ "ER": {
+ "name": "Eritrea"
+ },
+ "SK": {
+ "name": "Eslovaquia"
+ },
+ "SI": {
+ "name": "Eslovenia"
+ },
+ "ES": {
+ "name": "España"
+ },
+ "US": {
+ "name": "Estados Unidos"
+ },
+ "EE": {
+ "name": "Estonia"
+ },
+ "ET": {
+ "name": "Etiopía"
+ },
+ "PH": {
+ "name": "Filipinas"
+ },
+ "FI": {
+ "name": "Finlandia"
+ },
+ "FJ": {
+ "name": "Fiyi"
+ },
+ "FR": {
+ "name": "Francia"
+ },
+ "GA": {
+ "name": "Gabón"
+ },
+ "GM": {
+ "name": "Gambia"
+ },
+ "GE": {
+ "name": "Georgia"
+ },
+ "GH": {
+ "name": "Ghana"
+ },
+ "GI": {
+ "name": "Gibraltar"
+ },
+ "GD": {
+ "name": "Granada"
+ },
+ "GR": {
+ "name": "Grecia"
+ },
+ "GL": {
+ "name": "Groenlandia"
+ },
+ "GP": {
+ "name": "Guadalupe"
+ },
+ "GU": {
+ "name": "Guam"
+ },
+ "GT": {
+ "name": "Guatemala"
+ },
+ "GF": {
+ "name": "Guayana Francesa"
+ },
+ "GG": {
+ "name": "Guernesey"
+ },
+ "GN": {
+ "name": "Guinea"
+ },
+ "GQ": {
+ "name": "Guinea Ecuatorial"
+ },
+ "GW": {
+ "name": "Guinea-Bisáu"
+ },
+ "GY": {
+ "name": "Guyana"
+ },
+ "HT": {
+ "name": "Haití"
+ },
+ "HN": {
+ "name": "Honduras"
+ },
+ "HU": {
+ "name": "Hungría"
+ },
+ "IN": {
+ "name": "India"
+ },
+ "ID": {
+ "name": "Indonesia"
+ },
+ "IQ": {
+ "name": "Irak"
+ },
+ "IR": {
+ "name": "Irán"
+ },
+ "IE": {
+ "name": "Irlanda"
+ },
+ "AC": {
+ "name": "Isla Ascensión"
+ },
+ "CX": {
+ "name": "Isla Christmas"
+ },
+ "IM": {
+ "name": "Isla de Man"
+ },
+ "NF": {
+ "name": "Isla Norfolk"
+ },
+ "IS": {
+ "name": "Islandia"
+ },
+ "AX": {
+ "name": "Islas Ã…land"
+ },
+ "KY": {
+ "name": "Islas Caimán"
+ },
+ "IC": {
+ "name": "islas Canarias"
+ },
+ "CC": {
+ "name": "Islas Cocos"
+ },
+ "CK": {
+ "name": "Islas Cook"
+ },
+ "FO": {
+ "name": "Islas Feroe"
+ },
+ "GS": {
+ "name": "Islas Georgia del Sur y Sandwich del Sur"
+ },
+ "FK": {
+ "name": "Islas Malvinas"
+ },
+ "MP": {
+ "name": "Islas Marianas del Norte"
+ },
+ "MH": {
+ "name": "Islas Marshall"
+ },
+ "UM": {
+ "name": "Islas menores alejadas de EE. UU."
+ },
+ "PN": {
+ "name": "Islas Pitcairn"
+ },
+ "SB": {
+ "name": "Islas Salomón"
+ },
+ "TC": {
+ "name": "Islas Turcas y Caicos"
+ },
+ "VG": {
+ "name": "Islas Vírgenes Británicas"
+ },
+ "VI": {
+ "name": "Islas Vírgenes de EE. UU."
+ },
+ "IL": {
+ "name": "Israel"
+ },
+ "IT": {
+ "name": "Italia"
+ },
+ "JM": {
+ "name": "Jamaica"
+ },
+ "JP": {
+ "name": "Japón"
+ },
+ "JE": {
+ "name": "Jersey"
+ },
+ "JO": {
+ "name": "Jordania"
+ },
+ "KZ": {
+ "name": "Kazajistán"
+ },
+ "KE": {
+ "name": "Kenia"
+ },
+ "KG": {
+ "name": "Kirguistán"
+ },
+ "KI": {
+ "name": "Kiribati"
+ },
+ "XK": {
+ "name": "Kosovo"
+ },
+ "KW": {
+ "name": "Kuwait"
+ },
+ "LA": {
+ "name": "Laos"
+ },
+ "LS": {
+ "name": "Lesoto"
+ },
+ "LV": {
+ "name": "Letonia"
+ },
+ "LB": {
+ "name": "Líbano"
+ },
+ "LR": {
+ "name": "Liberia"
+ },
+ "LY": {
+ "name": "Libia"
+ },
+ "LI": {
+ "name": "Liechtenstein"
+ },
+ "LT": {
+ "name": "Lituania"
+ },
+ "LU": {
+ "name": "Luxemburgo"
+ },
+ "MK": {
+ "name": "Macedonia"
+ },
+ "MG": {
+ "name": "Madagascar"
+ },
+ "MY": {
+ "name": "Malasia"
+ },
+ "MW": {
+ "name": "Malaui"
+ },
+ "MV": {
+ "name": "Maldivas"
+ },
+ "ML": {
+ "name": "Mali"
+ },
+ "MT": {
+ "name": "Malta"
+ },
+ "MA": {
+ "name": "Marruecos"
+ },
+ "MQ": {
+ "name": "Martinica"
+ },
+ "MU": {
+ "name": "Mauricio"
+ },
+ "MR": {
+ "name": "Mauritania"
+ },
+ "YT": {
+ "name": "Mayotte"
+ },
+ "MX": {
+ "name": "México"
+ },
+ "FM": {
+ "name": "Micronesia"
+ },
+ "MD": {
+ "name": "Moldavia"
+ },
+ "MC": {
+ "name": "Mónaco"
+ },
+ "MN": {
+ "name": "Mongolia"
+ },
+ "ME": {
+ "name": "Montenegro"
+ },
+ "MS": {
+ "name": "Montserrat"
+ },
+ "MZ": {
+ "name": "Mozambique"
+ },
+ "MM": {
+ "name": "Myanmar (Birmania)"
+ },
+ "NA": {
+ "name": "Namibia"
+ },
+ "NR": {
+ "name": "Nauru"
+ },
+ "NP": {
+ "name": "Nepal"
+ },
+ "NI": {
+ "name": "Nicaragua"
+ },
+ "NE": {
+ "name": "Níger"
+ },
+ "NG": {
+ "name": "Nigeria"
+ },
+ "NU": {
+ "name": "Niue"
+ },
+ "NO": {
+ "name": "Noruega"
+ },
+ "NC": {
+ "name": "Nueva Caledonia"
+ },
+ "NZ": {
+ "name": "Nueva Zelanda"
+ },
+ "OM": {
+ "name": "Omán"
+ },
+ "NL": {
+ "name": "Países Bajos"
+ },
+ "PK": {
+ "name": "Pakistán"
+ },
+ "PW": {
+ "name": "Palau"
+ },
+ "PA": {
+ "name": "Panamá"
+ },
+ "PG": {
+ "name": "Papúa Nueva Guinea"
+ },
+ "PY": {
+ "name": "Paraguay"
+ },
+ "PE": {
+ "name": "Perú"
+ },
+ "PF": {
+ "name": "Polinesia Francesa"
+ },
+ "PL": {
+ "name": "Polonia"
+ },
+ "PT": {
+ "name": "Portugal"
+ },
+ "PR": {
+ "name": "Puerto Rico"
+ },
+ "HK": {
+ "name": "RAE de Hong Kong (China)"
+ },
+ "MO": {
+ "name": "RAE de Macao (China)"
+ },
+ "GB": {
+ "name": "Reino Unido"
+ },
+ "CF": {
+ "name": "República Centroafricana"
+ },
+ "CZ": {
+ "name": "República Checa"
+ },
+ "CG": {
+ "name": "República del Congo"
+ },
+ "CD": {
+ "name": "República Democrática del Congo"
+ },
+ "DO": {
+ "name": "República Dominicana"
+ },
+ "RE": {
+ "name": "Reunión"
+ },
+ "RW": {
+ "name": "Ruanda"
+ },
+ "RO": {
+ "name": "Rumanía"
+ },
+ "RU": {
+ "name": "Rusia"
+ },
+ "EH": {
+ "name": "Sáhara Occidental"
+ },
+ "WS": {
+ "name": "Samoa"
+ },
+ "AS": {
+ "name": "Samoa Americana"
+ },
+ "BL": {
+ "name": "San Bartolomé"
+ },
+ "KN": {
+ "name": "San Cristóbal y Nieves"
+ },
+ "SM": {
+ "name": "San Marino"
+ },
+ "MF": {
+ "name": "San Martín"
+ },
+ "PM": {
+ "name": "San Pedro y Miquelón"
+ },
+ "VC": {
+ "name": "San Vicente y las Granadinas"
+ },
+ "SH": {
+ "name": "Santa Elena"
+ },
+ "LC": {
+ "name": "Santa Lucía"
+ },
+ "ST": {
+ "name": "Santo Tomé y Príncipe"
+ },
+ "SN": {
+ "name": "Senegal"
+ },
+ "RS": {
+ "name": "Serbia"
+ },
+ "SC": {
+ "name": "Seychelles"
+ },
+ "SL": {
+ "name": "Sierra Leona"
+ },
+ "SG": {
+ "name": "Singapur"
+ },
+ "SX": {
+ "name": "Sint Maarten"
+ },
+ "SY": {
+ "name": "Siria"
+ },
+ "SO": {
+ "name": "Somalia"
+ },
+ "LK": {
+ "name": "Sri Lanka"
+ },
+ "SZ": {
+ "name": "Suazilandia"
+ },
+ "ZA": {
+ "name": "Sudáfrica"
+ },
+ "SD": {
+ "name": "Sudán"
+ },
+ "SS": {
+ "name": "Sudán del Sur"
+ },
+ "SE": {
+ "name": "Suecia"
+ },
+ "CH": {
+ "name": "Suiza"
+ },
+ "SR": {
+ "name": "Surinam"
+ },
+ "SJ": {
+ "name": "Svalbard y Jan Mayen"
+ },
+ "TH": {
+ "name": "Tailandia"
+ },
+ "TW": {
+ "name": "Taiwán"
+ },
+ "TZ": {
+ "name": "Tanzania"
+ },
+ "TJ": {
+ "name": "Tayikistán"
+ },
+ "IO": {
+ "name": "Territorio Británico del Océano Ãndico"
+ },
+ "TF": {
+ "name": "Territorios Australes Franceses"
+ },
+ "PS": {
+ "name": "Territorios Palestinos"
+ },
+ "TL": {
+ "name": "Timor Oriental"
+ },
+ "TG": {
+ "name": "Togo"
+ },
+ "TK": {
+ "name": "Tokelau"
+ },
+ "TO": {
+ "name": "Tonga"
+ },
+ "TT": {
+ "name": "Trinidad y Tobago"
+ },
+ "TA": {
+ "name": "Tristán da Cunha"
+ },
+ "TN": {
+ "name": "Túnez"
+ },
+ "TM": {
+ "name": "Turkmenistán"
+ },
+ "TR": {
+ "name": "Turquía"
+ },
+ "TV": {
+ "name": "Tuvalu"
+ },
+ "UA": {
+ "name": "Ucrania"
+ },
+ "UG": {
+ "name": "Uganda"
+ },
+ "UY": {
+ "name": "Uruguay"
+ },
+ "UZ": {
+ "name": "Uzbekistán"
+ },
+ "VU": {
+ "name": "Vanuatu"
+ },
+ "VE": {
+ "name": "Venezuela"
+ },
+ "VN": {
+ "name": "Vietnam"
+ },
+ "WF": {
+ "name": "Wallis y Futuna"
+ },
+ "YE": {
+ "name": "Yemen"
+ },
+ "DJ": {
+ "name": "Yibuti"
+ },
+ "ZM": {
+ "name": "Zambia"
+ },
+ "ZW": {
+ "name": "Zimbabue"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/country/es-UY.json b/library/intl/resources/country/es-UY.json
new file mode 100644
index 000000000..6a02f5aec
--- /dev/null
+++ b/library/intl/resources/country/es-UY.json
@@ -0,0 +1,761 @@
+{
+ "AF": {
+ "name": "Afganistán"
+ },
+ "AL": {
+ "name": "Albania"
+ },
+ "DE": {
+ "name": "Alemania"
+ },
+ "AD": {
+ "name": "Andorra"
+ },
+ "AO": {
+ "name": "Angola"
+ },
+ "AI": {
+ "name": "Anguila"
+ },
+ "AQ": {
+ "name": "Antártida"
+ },
+ "AG": {
+ "name": "Antigua y Barbuda"
+ },
+ "SA": {
+ "name": "Arabia Saudí"
+ },
+ "DZ": {
+ "name": "Argelia"
+ },
+ "AR": {
+ "name": "Argentina"
+ },
+ "AM": {
+ "name": "Armenia"
+ },
+ "AW": {
+ "name": "Aruba"
+ },
+ "AU": {
+ "name": "Australia"
+ },
+ "AT": {
+ "name": "Austria"
+ },
+ "AZ": {
+ "name": "Azerbaiyán"
+ },
+ "BS": {
+ "name": "Bahamas"
+ },
+ "BD": {
+ "name": "Bangladés"
+ },
+ "BB": {
+ "name": "Barbados"
+ },
+ "BH": {
+ "name": "Baréin"
+ },
+ "BE": {
+ "name": "Bélgica"
+ },
+ "BZ": {
+ "name": "Belice"
+ },
+ "BJ": {
+ "name": "Benín"
+ },
+ "BM": {
+ "name": "Bermudas"
+ },
+ "BY": {
+ "name": "Bielorrusia"
+ },
+ "BO": {
+ "name": "Bolivia"
+ },
+ "BA": {
+ "name": "Bosnia y Herzegovina"
+ },
+ "BW": {
+ "name": "Botsuana"
+ },
+ "BR": {
+ "name": "Brasil"
+ },
+ "BN": {
+ "name": "Brunéi"
+ },
+ "BG": {
+ "name": "Bulgaria"
+ },
+ "BF": {
+ "name": "Burkina Faso"
+ },
+ "BI": {
+ "name": "Burundi"
+ },
+ "BT": {
+ "name": "Bután"
+ },
+ "CV": {
+ "name": "Cabo Verde"
+ },
+ "KH": {
+ "name": "Camboya"
+ },
+ "CM": {
+ "name": "Camerún"
+ },
+ "CA": {
+ "name": "Canadá"
+ },
+ "BQ": {
+ "name": "Caribe neerlandés"
+ },
+ "QA": {
+ "name": "Catar"
+ },
+ "EA": {
+ "name": "Ceuta y Melilla"
+ },
+ "TD": {
+ "name": "Chad"
+ },
+ "CL": {
+ "name": "Chile"
+ },
+ "CN": {
+ "name": "China"
+ },
+ "CY": {
+ "name": "Chipre"
+ },
+ "VA": {
+ "name": "Ciudad del Vaticano"
+ },
+ "CO": {
+ "name": "Colombia"
+ },
+ "KM": {
+ "name": "Comoras"
+ },
+ "KP": {
+ "name": "Corea del Norte"
+ },
+ "KR": {
+ "name": "Corea del Sur"
+ },
+ "CI": {
+ "name": "Costa de Marfil"
+ },
+ "CR": {
+ "name": "Costa Rica"
+ },
+ "HR": {
+ "name": "Croacia"
+ },
+ "CU": {
+ "name": "Cuba"
+ },
+ "CW": {
+ "name": "Curazao"
+ },
+ "DG": {
+ "name": "Diego García"
+ },
+ "DK": {
+ "name": "Dinamarca"
+ },
+ "DM": {
+ "name": "Dominica"
+ },
+ "EC": {
+ "name": "Ecuador"
+ },
+ "EG": {
+ "name": "Egipto"
+ },
+ "SV": {
+ "name": "El Salvador"
+ },
+ "AE": {
+ "name": "Emiratos Ãrabes Unidos"
+ },
+ "ER": {
+ "name": "Eritrea"
+ },
+ "SK": {
+ "name": "Eslovaquia"
+ },
+ "SI": {
+ "name": "Eslovenia"
+ },
+ "ES": {
+ "name": "España"
+ },
+ "US": {
+ "name": "Estados Unidos"
+ },
+ "EE": {
+ "name": "Estonia"
+ },
+ "ET": {
+ "name": "Etiopía"
+ },
+ "PH": {
+ "name": "Filipinas"
+ },
+ "FI": {
+ "name": "Finlandia"
+ },
+ "FJ": {
+ "name": "Fiyi"
+ },
+ "FR": {
+ "name": "Francia"
+ },
+ "GA": {
+ "name": "Gabón"
+ },
+ "GM": {
+ "name": "Gambia"
+ },
+ "GE": {
+ "name": "Georgia"
+ },
+ "GH": {
+ "name": "Ghana"
+ },
+ "GI": {
+ "name": "Gibraltar"
+ },
+ "GD": {
+ "name": "Granada"
+ },
+ "GR": {
+ "name": "Grecia"
+ },
+ "GL": {
+ "name": "Groenlandia"
+ },
+ "GP": {
+ "name": "Guadalupe"
+ },
+ "GU": {
+ "name": "Guam"
+ },
+ "GT": {
+ "name": "Guatemala"
+ },
+ "GF": {
+ "name": "Guayana Francesa"
+ },
+ "GG": {
+ "name": "Guernesey"
+ },
+ "GN": {
+ "name": "Guinea"
+ },
+ "GQ": {
+ "name": "Guinea Ecuatorial"
+ },
+ "GW": {
+ "name": "Guinea-Bisáu"
+ },
+ "GY": {
+ "name": "Guyana"
+ },
+ "HT": {
+ "name": "Haití"
+ },
+ "HN": {
+ "name": "Honduras"
+ },
+ "HU": {
+ "name": "Hungría"
+ },
+ "IN": {
+ "name": "India"
+ },
+ "ID": {
+ "name": "Indonesia"
+ },
+ "IQ": {
+ "name": "Irak"
+ },
+ "IR": {
+ "name": "Irán"
+ },
+ "IE": {
+ "name": "Irlanda"
+ },
+ "AC": {
+ "name": "Isla Ascensión"
+ },
+ "CX": {
+ "name": "Isla Christmas"
+ },
+ "IM": {
+ "name": "Isla de Man"
+ },
+ "NF": {
+ "name": "Isla Norfolk"
+ },
+ "IS": {
+ "name": "Islandia"
+ },
+ "AX": {
+ "name": "Islas Ã…land"
+ },
+ "KY": {
+ "name": "Islas Caimán"
+ },
+ "IC": {
+ "name": "islas Canarias"
+ },
+ "CC": {
+ "name": "Islas Cocos"
+ },
+ "CK": {
+ "name": "Islas Cook"
+ },
+ "FO": {
+ "name": "Islas Feroe"
+ },
+ "GS": {
+ "name": "Islas Georgia del Sur y Sandwich del Sur"
+ },
+ "FK": {
+ "name": "Islas Malvinas"
+ },
+ "MP": {
+ "name": "Islas Marianas del Norte"
+ },
+ "MH": {
+ "name": "Islas Marshall"
+ },
+ "UM": {
+ "name": "Islas menores alejadas de EE. UU."
+ },
+ "PN": {
+ "name": "Islas Pitcairn"
+ },
+ "SB": {
+ "name": "Islas Salomón"
+ },
+ "TC": {
+ "name": "Islas Turcas y Caicos"
+ },
+ "VG": {
+ "name": "Islas Vírgenes Británicas"
+ },
+ "VI": {
+ "name": "Islas Vírgenes de EE. UU."
+ },
+ "IL": {
+ "name": "Israel"
+ },
+ "IT": {
+ "name": "Italia"
+ },
+ "JM": {
+ "name": "Jamaica"
+ },
+ "JP": {
+ "name": "Japón"
+ },
+ "JE": {
+ "name": "Jersey"
+ },
+ "JO": {
+ "name": "Jordania"
+ },
+ "KZ": {
+ "name": "Kazajistán"
+ },
+ "KE": {
+ "name": "Kenia"
+ },
+ "KG": {
+ "name": "Kirguistán"
+ },
+ "KI": {
+ "name": "Kiribati"
+ },
+ "XK": {
+ "name": "Kosovo"
+ },
+ "KW": {
+ "name": "Kuwait"
+ },
+ "LA": {
+ "name": "Laos"
+ },
+ "LS": {
+ "name": "Lesoto"
+ },
+ "LV": {
+ "name": "Letonia"
+ },
+ "LB": {
+ "name": "Líbano"
+ },
+ "LR": {
+ "name": "Liberia"
+ },
+ "LY": {
+ "name": "Libia"
+ },
+ "LI": {
+ "name": "Liechtenstein"
+ },
+ "LT": {
+ "name": "Lituania"
+ },
+ "LU": {
+ "name": "Luxemburgo"
+ },
+ "MK": {
+ "name": "Macedonia"
+ },
+ "MG": {
+ "name": "Madagascar"
+ },
+ "MY": {
+ "name": "Malasia"
+ },
+ "MW": {
+ "name": "Malaui"
+ },
+ "MV": {
+ "name": "Maldivas"
+ },
+ "ML": {
+ "name": "Mali"
+ },
+ "MT": {
+ "name": "Malta"
+ },
+ "MA": {
+ "name": "Marruecos"
+ },
+ "MQ": {
+ "name": "Martinica"
+ },
+ "MU": {
+ "name": "Mauricio"
+ },
+ "MR": {
+ "name": "Mauritania"
+ },
+ "YT": {
+ "name": "Mayotte"
+ },
+ "MX": {
+ "name": "México"
+ },
+ "FM": {
+ "name": "Micronesia"
+ },
+ "MD": {
+ "name": "Moldavia"
+ },
+ "MC": {
+ "name": "Mónaco"
+ },
+ "MN": {
+ "name": "Mongolia"
+ },
+ "ME": {
+ "name": "Montenegro"
+ },
+ "MS": {
+ "name": "Montserrat"
+ },
+ "MZ": {
+ "name": "Mozambique"
+ },
+ "MM": {
+ "name": "Myanmar (Birmania)"
+ },
+ "NA": {
+ "name": "Namibia"
+ },
+ "NR": {
+ "name": "Nauru"
+ },
+ "NP": {
+ "name": "Nepal"
+ },
+ "NI": {
+ "name": "Nicaragua"
+ },
+ "NE": {
+ "name": "Níger"
+ },
+ "NG": {
+ "name": "Nigeria"
+ },
+ "NU": {
+ "name": "Niue"
+ },
+ "NO": {
+ "name": "Noruega"
+ },
+ "NC": {
+ "name": "Nueva Caledonia"
+ },
+ "NZ": {
+ "name": "Nueva Zelanda"
+ },
+ "OM": {
+ "name": "Omán"
+ },
+ "NL": {
+ "name": "Países Bajos"
+ },
+ "PK": {
+ "name": "Pakistán"
+ },
+ "PW": {
+ "name": "Palau"
+ },
+ "PA": {
+ "name": "Panamá"
+ },
+ "PG": {
+ "name": "Papúa Nueva Guinea"
+ },
+ "PY": {
+ "name": "Paraguay"
+ },
+ "PE": {
+ "name": "Perú"
+ },
+ "PF": {
+ "name": "Polinesia Francesa"
+ },
+ "PL": {
+ "name": "Polonia"
+ },
+ "PT": {
+ "name": "Portugal"
+ },
+ "PR": {
+ "name": "Puerto Rico"
+ },
+ "HK": {
+ "name": "RAE de Hong Kong (China)"
+ },
+ "MO": {
+ "name": "RAE de Macao (China)"
+ },
+ "GB": {
+ "name": "Reino Unido"
+ },
+ "CF": {
+ "name": "República Centroafricana"
+ },
+ "CZ": {
+ "name": "República Checa"
+ },
+ "CG": {
+ "name": "República del Congo"
+ },
+ "CD": {
+ "name": "República Democrática del Congo"
+ },
+ "DO": {
+ "name": "República Dominicana"
+ },
+ "RE": {
+ "name": "Reunión"
+ },
+ "RW": {
+ "name": "Ruanda"
+ },
+ "RO": {
+ "name": "Rumanía"
+ },
+ "RU": {
+ "name": "Rusia"
+ },
+ "EH": {
+ "name": "Sáhara Occidental"
+ },
+ "WS": {
+ "name": "Samoa"
+ },
+ "AS": {
+ "name": "Samoa Americana"
+ },
+ "BL": {
+ "name": "San Bartolomé"
+ },
+ "KN": {
+ "name": "San Cristóbal y Nieves"
+ },
+ "SM": {
+ "name": "San Marino"
+ },
+ "MF": {
+ "name": "San Martín"
+ },
+ "PM": {
+ "name": "San Pedro y Miquelón"
+ },
+ "VC": {
+ "name": "San Vicente y las Granadinas"
+ },
+ "SH": {
+ "name": "Santa Elena"
+ },
+ "LC": {
+ "name": "Santa Lucía"
+ },
+ "ST": {
+ "name": "Santo Tomé y Príncipe"
+ },
+ "SN": {
+ "name": "Senegal"
+ },
+ "RS": {
+ "name": "Serbia"
+ },
+ "SC": {
+ "name": "Seychelles"
+ },
+ "SL": {
+ "name": "Sierra Leona"
+ },
+ "SG": {
+ "name": "Singapur"
+ },
+ "SX": {
+ "name": "Sint Maarten"
+ },
+ "SY": {
+ "name": "Siria"
+ },
+ "SO": {
+ "name": "Somalia"
+ },
+ "LK": {
+ "name": "Sri Lanka"
+ },
+ "SZ": {
+ "name": "Suazilandia"
+ },
+ "ZA": {
+ "name": "Sudáfrica"
+ },
+ "SD": {
+ "name": "Sudán"
+ },
+ "SS": {
+ "name": "Sudán del Sur"
+ },
+ "SE": {
+ "name": "Suecia"
+ },
+ "CH": {
+ "name": "Suiza"
+ },
+ "SR": {
+ "name": "Surinam"
+ },
+ "SJ": {
+ "name": "Svalbard y Jan Mayen"
+ },
+ "TH": {
+ "name": "Tailandia"
+ },
+ "TW": {
+ "name": "Taiwán"
+ },
+ "TZ": {
+ "name": "Tanzania"
+ },
+ "TJ": {
+ "name": "Tayikistán"
+ },
+ "IO": {
+ "name": "Territorio Británico del Océano Ãndico"
+ },
+ "TF": {
+ "name": "Territorios Australes Franceses"
+ },
+ "PS": {
+ "name": "Territorios Palestinos"
+ },
+ "TL": {
+ "name": "Timor Oriental"
+ },
+ "TG": {
+ "name": "Togo"
+ },
+ "TK": {
+ "name": "Tokelau"
+ },
+ "TO": {
+ "name": "Tonga"
+ },
+ "TT": {
+ "name": "Trinidad y Tobago"
+ },
+ "TA": {
+ "name": "Tristán da Cunha"
+ },
+ "TN": {
+ "name": "Túnez"
+ },
+ "TM": {
+ "name": "Turkmenistán"
+ },
+ "TR": {
+ "name": "Turquía"
+ },
+ "TV": {
+ "name": "Tuvalu"
+ },
+ "UA": {
+ "name": "Ucrania"
+ },
+ "UG": {
+ "name": "Uganda"
+ },
+ "UY": {
+ "name": "Uruguay"
+ },
+ "UZ": {
+ "name": "Uzbekistán"
+ },
+ "VU": {
+ "name": "Vanuatu"
+ },
+ "VE": {
+ "name": "Venezuela"
+ },
+ "VN": {
+ "name": "Vietnam"
+ },
+ "WF": {
+ "name": "Wallis y Futuna"
+ },
+ "YE": {
+ "name": "Yemen"
+ },
+ "DJ": {
+ "name": "Yibuti"
+ },
+ "ZM": {
+ "name": "Zambia"
+ },
+ "ZW": {
+ "name": "Zimbabue"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/country/es-VE.json b/library/intl/resources/country/es-VE.json
new file mode 100644
index 000000000..6a02f5aec
--- /dev/null
+++ b/library/intl/resources/country/es-VE.json
@@ -0,0 +1,761 @@
+{
+ "AF": {
+ "name": "Afganistán"
+ },
+ "AL": {
+ "name": "Albania"
+ },
+ "DE": {
+ "name": "Alemania"
+ },
+ "AD": {
+ "name": "Andorra"
+ },
+ "AO": {
+ "name": "Angola"
+ },
+ "AI": {
+ "name": "Anguila"
+ },
+ "AQ": {
+ "name": "Antártida"
+ },
+ "AG": {
+ "name": "Antigua y Barbuda"
+ },
+ "SA": {
+ "name": "Arabia Saudí"
+ },
+ "DZ": {
+ "name": "Argelia"
+ },
+ "AR": {
+ "name": "Argentina"
+ },
+ "AM": {
+ "name": "Armenia"
+ },
+ "AW": {
+ "name": "Aruba"
+ },
+ "AU": {
+ "name": "Australia"
+ },
+ "AT": {
+ "name": "Austria"
+ },
+ "AZ": {
+ "name": "Azerbaiyán"
+ },
+ "BS": {
+ "name": "Bahamas"
+ },
+ "BD": {
+ "name": "Bangladés"
+ },
+ "BB": {
+ "name": "Barbados"
+ },
+ "BH": {
+ "name": "Baréin"
+ },
+ "BE": {
+ "name": "Bélgica"
+ },
+ "BZ": {
+ "name": "Belice"
+ },
+ "BJ": {
+ "name": "Benín"
+ },
+ "BM": {
+ "name": "Bermudas"
+ },
+ "BY": {
+ "name": "Bielorrusia"
+ },
+ "BO": {
+ "name": "Bolivia"
+ },
+ "BA": {
+ "name": "Bosnia y Herzegovina"
+ },
+ "BW": {
+ "name": "Botsuana"
+ },
+ "BR": {
+ "name": "Brasil"
+ },
+ "BN": {
+ "name": "Brunéi"
+ },
+ "BG": {
+ "name": "Bulgaria"
+ },
+ "BF": {
+ "name": "Burkina Faso"
+ },
+ "BI": {
+ "name": "Burundi"
+ },
+ "BT": {
+ "name": "Bután"
+ },
+ "CV": {
+ "name": "Cabo Verde"
+ },
+ "KH": {
+ "name": "Camboya"
+ },
+ "CM": {
+ "name": "Camerún"
+ },
+ "CA": {
+ "name": "Canadá"
+ },
+ "BQ": {
+ "name": "Caribe neerlandés"
+ },
+ "QA": {
+ "name": "Catar"
+ },
+ "EA": {
+ "name": "Ceuta y Melilla"
+ },
+ "TD": {
+ "name": "Chad"
+ },
+ "CL": {
+ "name": "Chile"
+ },
+ "CN": {
+ "name": "China"
+ },
+ "CY": {
+ "name": "Chipre"
+ },
+ "VA": {
+ "name": "Ciudad del Vaticano"
+ },
+ "CO": {
+ "name": "Colombia"
+ },
+ "KM": {
+ "name": "Comoras"
+ },
+ "KP": {
+ "name": "Corea del Norte"
+ },
+ "KR": {
+ "name": "Corea del Sur"
+ },
+ "CI": {
+ "name": "Costa de Marfil"
+ },
+ "CR": {
+ "name": "Costa Rica"
+ },
+ "HR": {
+ "name": "Croacia"
+ },
+ "CU": {
+ "name": "Cuba"
+ },
+ "CW": {
+ "name": "Curazao"
+ },
+ "DG": {
+ "name": "Diego García"
+ },
+ "DK": {
+ "name": "Dinamarca"
+ },
+ "DM": {
+ "name": "Dominica"
+ },
+ "EC": {
+ "name": "Ecuador"
+ },
+ "EG": {
+ "name": "Egipto"
+ },
+ "SV": {
+ "name": "El Salvador"
+ },
+ "AE": {
+ "name": "Emiratos Ãrabes Unidos"
+ },
+ "ER": {
+ "name": "Eritrea"
+ },
+ "SK": {
+ "name": "Eslovaquia"
+ },
+ "SI": {
+ "name": "Eslovenia"
+ },
+ "ES": {
+ "name": "España"
+ },
+ "US": {
+ "name": "Estados Unidos"
+ },
+ "EE": {
+ "name": "Estonia"
+ },
+ "ET": {
+ "name": "Etiopía"
+ },
+ "PH": {
+ "name": "Filipinas"
+ },
+ "FI": {
+ "name": "Finlandia"
+ },
+ "FJ": {
+ "name": "Fiyi"
+ },
+ "FR": {
+ "name": "Francia"
+ },
+ "GA": {
+ "name": "Gabón"
+ },
+ "GM": {
+ "name": "Gambia"
+ },
+ "GE": {
+ "name": "Georgia"
+ },
+ "GH": {
+ "name": "Ghana"
+ },
+ "GI": {
+ "name": "Gibraltar"
+ },
+ "GD": {
+ "name": "Granada"
+ },
+ "GR": {
+ "name": "Grecia"
+ },
+ "GL": {
+ "name": "Groenlandia"
+ },
+ "GP": {
+ "name": "Guadalupe"
+ },
+ "GU": {
+ "name": "Guam"
+ },
+ "GT": {
+ "name": "Guatemala"
+ },
+ "GF": {
+ "name": "Guayana Francesa"
+ },
+ "GG": {
+ "name": "Guernesey"
+ },
+ "GN": {
+ "name": "Guinea"
+ },
+ "GQ": {
+ "name": "Guinea Ecuatorial"
+ },
+ "GW": {
+ "name": "Guinea-Bisáu"
+ },
+ "GY": {
+ "name": "Guyana"
+ },
+ "HT": {
+ "name": "Haití"
+ },
+ "HN": {
+ "name": "Honduras"
+ },
+ "HU": {
+ "name": "Hungría"
+ },
+ "IN": {
+ "name": "India"
+ },
+ "ID": {
+ "name": "Indonesia"
+ },
+ "IQ": {
+ "name": "Irak"
+ },
+ "IR": {
+ "name": "Irán"
+ },
+ "IE": {
+ "name": "Irlanda"
+ },
+ "AC": {
+ "name": "Isla Ascensión"
+ },
+ "CX": {
+ "name": "Isla Christmas"
+ },
+ "IM": {
+ "name": "Isla de Man"
+ },
+ "NF": {
+ "name": "Isla Norfolk"
+ },
+ "IS": {
+ "name": "Islandia"
+ },
+ "AX": {
+ "name": "Islas Ã…land"
+ },
+ "KY": {
+ "name": "Islas Caimán"
+ },
+ "IC": {
+ "name": "islas Canarias"
+ },
+ "CC": {
+ "name": "Islas Cocos"
+ },
+ "CK": {
+ "name": "Islas Cook"
+ },
+ "FO": {
+ "name": "Islas Feroe"
+ },
+ "GS": {
+ "name": "Islas Georgia del Sur y Sandwich del Sur"
+ },
+ "FK": {
+ "name": "Islas Malvinas"
+ },
+ "MP": {
+ "name": "Islas Marianas del Norte"
+ },
+ "MH": {
+ "name": "Islas Marshall"
+ },
+ "UM": {
+ "name": "Islas menores alejadas de EE. UU."
+ },
+ "PN": {
+ "name": "Islas Pitcairn"
+ },
+ "SB": {
+ "name": "Islas Salomón"
+ },
+ "TC": {
+ "name": "Islas Turcas y Caicos"
+ },
+ "VG": {
+ "name": "Islas Vírgenes Británicas"
+ },
+ "VI": {
+ "name": "Islas Vírgenes de EE. UU."
+ },
+ "IL": {
+ "name": "Israel"
+ },
+ "IT": {
+ "name": "Italia"
+ },
+ "JM": {
+ "name": "Jamaica"
+ },
+ "JP": {
+ "name": "Japón"
+ },
+ "JE": {
+ "name": "Jersey"
+ },
+ "JO": {
+ "name": "Jordania"
+ },
+ "KZ": {
+ "name": "Kazajistán"
+ },
+ "KE": {
+ "name": "Kenia"
+ },
+ "KG": {
+ "name": "Kirguistán"
+ },
+ "KI": {
+ "name": "Kiribati"
+ },
+ "XK": {
+ "name": "Kosovo"
+ },
+ "KW": {
+ "name": "Kuwait"
+ },
+ "LA": {
+ "name": "Laos"
+ },
+ "LS": {
+ "name": "Lesoto"
+ },
+ "LV": {
+ "name": "Letonia"
+ },
+ "LB": {
+ "name": "Líbano"
+ },
+ "LR": {
+ "name": "Liberia"
+ },
+ "LY": {
+ "name": "Libia"
+ },
+ "LI": {
+ "name": "Liechtenstein"
+ },
+ "LT": {
+ "name": "Lituania"
+ },
+ "LU": {
+ "name": "Luxemburgo"
+ },
+ "MK": {
+ "name": "Macedonia"
+ },
+ "MG": {
+ "name": "Madagascar"
+ },
+ "MY": {
+ "name": "Malasia"
+ },
+ "MW": {
+ "name": "Malaui"
+ },
+ "MV": {
+ "name": "Maldivas"
+ },
+ "ML": {
+ "name": "Mali"
+ },
+ "MT": {
+ "name": "Malta"
+ },
+ "MA": {
+ "name": "Marruecos"
+ },
+ "MQ": {
+ "name": "Martinica"
+ },
+ "MU": {
+ "name": "Mauricio"
+ },
+ "MR": {
+ "name": "Mauritania"
+ },
+ "YT": {
+ "name": "Mayotte"
+ },
+ "MX": {
+ "name": "México"
+ },
+ "FM": {
+ "name": "Micronesia"
+ },
+ "MD": {
+ "name": "Moldavia"
+ },
+ "MC": {
+ "name": "Mónaco"
+ },
+ "MN": {
+ "name": "Mongolia"
+ },
+ "ME": {
+ "name": "Montenegro"
+ },
+ "MS": {
+ "name": "Montserrat"
+ },
+ "MZ": {
+ "name": "Mozambique"
+ },
+ "MM": {
+ "name": "Myanmar (Birmania)"
+ },
+ "NA": {
+ "name": "Namibia"
+ },
+ "NR": {
+ "name": "Nauru"
+ },
+ "NP": {
+ "name": "Nepal"
+ },
+ "NI": {
+ "name": "Nicaragua"
+ },
+ "NE": {
+ "name": "Níger"
+ },
+ "NG": {
+ "name": "Nigeria"
+ },
+ "NU": {
+ "name": "Niue"
+ },
+ "NO": {
+ "name": "Noruega"
+ },
+ "NC": {
+ "name": "Nueva Caledonia"
+ },
+ "NZ": {
+ "name": "Nueva Zelanda"
+ },
+ "OM": {
+ "name": "Omán"
+ },
+ "NL": {
+ "name": "Países Bajos"
+ },
+ "PK": {
+ "name": "Pakistán"
+ },
+ "PW": {
+ "name": "Palau"
+ },
+ "PA": {
+ "name": "Panamá"
+ },
+ "PG": {
+ "name": "Papúa Nueva Guinea"
+ },
+ "PY": {
+ "name": "Paraguay"
+ },
+ "PE": {
+ "name": "Perú"
+ },
+ "PF": {
+ "name": "Polinesia Francesa"
+ },
+ "PL": {
+ "name": "Polonia"
+ },
+ "PT": {
+ "name": "Portugal"
+ },
+ "PR": {
+ "name": "Puerto Rico"
+ },
+ "HK": {
+ "name": "RAE de Hong Kong (China)"
+ },
+ "MO": {
+ "name": "RAE de Macao (China)"
+ },
+ "GB": {
+ "name": "Reino Unido"
+ },
+ "CF": {
+ "name": "República Centroafricana"
+ },
+ "CZ": {
+ "name": "República Checa"
+ },
+ "CG": {
+ "name": "República del Congo"
+ },
+ "CD": {
+ "name": "República Democrática del Congo"
+ },
+ "DO": {
+ "name": "República Dominicana"
+ },
+ "RE": {
+ "name": "Reunión"
+ },
+ "RW": {
+ "name": "Ruanda"
+ },
+ "RO": {
+ "name": "Rumanía"
+ },
+ "RU": {
+ "name": "Rusia"
+ },
+ "EH": {
+ "name": "Sáhara Occidental"
+ },
+ "WS": {
+ "name": "Samoa"
+ },
+ "AS": {
+ "name": "Samoa Americana"
+ },
+ "BL": {
+ "name": "San Bartolomé"
+ },
+ "KN": {
+ "name": "San Cristóbal y Nieves"
+ },
+ "SM": {
+ "name": "San Marino"
+ },
+ "MF": {
+ "name": "San Martín"
+ },
+ "PM": {
+ "name": "San Pedro y Miquelón"
+ },
+ "VC": {
+ "name": "San Vicente y las Granadinas"
+ },
+ "SH": {
+ "name": "Santa Elena"
+ },
+ "LC": {
+ "name": "Santa Lucía"
+ },
+ "ST": {
+ "name": "Santo Tomé y Príncipe"
+ },
+ "SN": {
+ "name": "Senegal"
+ },
+ "RS": {
+ "name": "Serbia"
+ },
+ "SC": {
+ "name": "Seychelles"
+ },
+ "SL": {
+ "name": "Sierra Leona"
+ },
+ "SG": {
+ "name": "Singapur"
+ },
+ "SX": {
+ "name": "Sint Maarten"
+ },
+ "SY": {
+ "name": "Siria"
+ },
+ "SO": {
+ "name": "Somalia"
+ },
+ "LK": {
+ "name": "Sri Lanka"
+ },
+ "SZ": {
+ "name": "Suazilandia"
+ },
+ "ZA": {
+ "name": "Sudáfrica"
+ },
+ "SD": {
+ "name": "Sudán"
+ },
+ "SS": {
+ "name": "Sudán del Sur"
+ },
+ "SE": {
+ "name": "Suecia"
+ },
+ "CH": {
+ "name": "Suiza"
+ },
+ "SR": {
+ "name": "Surinam"
+ },
+ "SJ": {
+ "name": "Svalbard y Jan Mayen"
+ },
+ "TH": {
+ "name": "Tailandia"
+ },
+ "TW": {
+ "name": "Taiwán"
+ },
+ "TZ": {
+ "name": "Tanzania"
+ },
+ "TJ": {
+ "name": "Tayikistán"
+ },
+ "IO": {
+ "name": "Territorio Británico del Océano Ãndico"
+ },
+ "TF": {
+ "name": "Territorios Australes Franceses"
+ },
+ "PS": {
+ "name": "Territorios Palestinos"
+ },
+ "TL": {
+ "name": "Timor Oriental"
+ },
+ "TG": {
+ "name": "Togo"
+ },
+ "TK": {
+ "name": "Tokelau"
+ },
+ "TO": {
+ "name": "Tonga"
+ },
+ "TT": {
+ "name": "Trinidad y Tobago"
+ },
+ "TA": {
+ "name": "Tristán da Cunha"
+ },
+ "TN": {
+ "name": "Túnez"
+ },
+ "TM": {
+ "name": "Turkmenistán"
+ },
+ "TR": {
+ "name": "Turquía"
+ },
+ "TV": {
+ "name": "Tuvalu"
+ },
+ "UA": {
+ "name": "Ucrania"
+ },
+ "UG": {
+ "name": "Uganda"
+ },
+ "UY": {
+ "name": "Uruguay"
+ },
+ "UZ": {
+ "name": "Uzbekistán"
+ },
+ "VU": {
+ "name": "Vanuatu"
+ },
+ "VE": {
+ "name": "Venezuela"
+ },
+ "VN": {
+ "name": "Vietnam"
+ },
+ "WF": {
+ "name": "Wallis y Futuna"
+ },
+ "YE": {
+ "name": "Yemen"
+ },
+ "DJ": {
+ "name": "Yibuti"
+ },
+ "ZM": {
+ "name": "Zambia"
+ },
+ "ZW": {
+ "name": "Zimbabue"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/country/es.json b/library/intl/resources/country/es.json
new file mode 100644
index 000000000..12f040042
--- /dev/null
+++ b/library/intl/resources/country/es.json
@@ -0,0 +1,761 @@
+{
+ "AF": {
+ "name": "Afganistán"
+ },
+ "AL": {
+ "name": "Albania"
+ },
+ "DE": {
+ "name": "Alemania"
+ },
+ "AD": {
+ "name": "Andorra"
+ },
+ "AO": {
+ "name": "Angola"
+ },
+ "AI": {
+ "name": "Anguila"
+ },
+ "AQ": {
+ "name": "Antártida"
+ },
+ "AG": {
+ "name": "Antigua y Barbuda"
+ },
+ "SA": {
+ "name": "Arabia Saudí"
+ },
+ "DZ": {
+ "name": "Argelia"
+ },
+ "AR": {
+ "name": "Argentina"
+ },
+ "AM": {
+ "name": "Armenia"
+ },
+ "AW": {
+ "name": "Aruba"
+ },
+ "AU": {
+ "name": "Australia"
+ },
+ "AT": {
+ "name": "Austria"
+ },
+ "AZ": {
+ "name": "Azerbaiyán"
+ },
+ "BS": {
+ "name": "Bahamas"
+ },
+ "BD": {
+ "name": "Bangladés"
+ },
+ "BB": {
+ "name": "Barbados"
+ },
+ "BH": {
+ "name": "Baréin"
+ },
+ "BE": {
+ "name": "Bélgica"
+ },
+ "BZ": {
+ "name": "Belice"
+ },
+ "BJ": {
+ "name": "Benín"
+ },
+ "BM": {
+ "name": "Bermudas"
+ },
+ "BY": {
+ "name": "Bielorrusia"
+ },
+ "BO": {
+ "name": "Bolivia"
+ },
+ "BA": {
+ "name": "Bosnia-Herzegovina"
+ },
+ "BW": {
+ "name": "Botsuana"
+ },
+ "BR": {
+ "name": "Brasil"
+ },
+ "BN": {
+ "name": "Brunéi"
+ },
+ "BG": {
+ "name": "Bulgaria"
+ },
+ "BF": {
+ "name": "Burkina Faso"
+ },
+ "BI": {
+ "name": "Burundi"
+ },
+ "BT": {
+ "name": "Bután"
+ },
+ "CV": {
+ "name": "Cabo Verde"
+ },
+ "KH": {
+ "name": "Camboya"
+ },
+ "CM": {
+ "name": "Camerún"
+ },
+ "CA": {
+ "name": "Canadá"
+ },
+ "BQ": {
+ "name": "Caribe neerlandés"
+ },
+ "QA": {
+ "name": "Catar"
+ },
+ "EA": {
+ "name": "Ceuta y Melilla"
+ },
+ "TD": {
+ "name": "Chad"
+ },
+ "CL": {
+ "name": "Chile"
+ },
+ "CN": {
+ "name": "China"
+ },
+ "CY": {
+ "name": "Chipre"
+ },
+ "VA": {
+ "name": "Ciudad del Vaticano"
+ },
+ "CO": {
+ "name": "Colombia"
+ },
+ "KM": {
+ "name": "Comoras"
+ },
+ "KP": {
+ "name": "Corea del Norte"
+ },
+ "KR": {
+ "name": "Corea del Sur"
+ },
+ "CI": {
+ "name": "Costa de Marfil"
+ },
+ "CR": {
+ "name": "Costa Rica"
+ },
+ "HR": {
+ "name": "Croacia"
+ },
+ "CU": {
+ "name": "Cuba"
+ },
+ "CW": {
+ "name": "Curazao"
+ },
+ "DG": {
+ "name": "Diego García"
+ },
+ "DK": {
+ "name": "Dinamarca"
+ },
+ "DM": {
+ "name": "Dominica"
+ },
+ "EC": {
+ "name": "Ecuador"
+ },
+ "EG": {
+ "name": "Egipto"
+ },
+ "SV": {
+ "name": "El Salvador"
+ },
+ "AE": {
+ "name": "Emiratos Ãrabes Unidos"
+ },
+ "ER": {
+ "name": "Eritrea"
+ },
+ "SK": {
+ "name": "Eslovaquia"
+ },
+ "SI": {
+ "name": "Eslovenia"
+ },
+ "ES": {
+ "name": "España"
+ },
+ "US": {
+ "name": "Estados Unidos"
+ },
+ "EE": {
+ "name": "Estonia"
+ },
+ "ET": {
+ "name": "Etiopía"
+ },
+ "PH": {
+ "name": "Filipinas"
+ },
+ "FI": {
+ "name": "Finlandia"
+ },
+ "FJ": {
+ "name": "Fiyi"
+ },
+ "FR": {
+ "name": "Francia"
+ },
+ "GA": {
+ "name": "Gabón"
+ },
+ "GM": {
+ "name": "Gambia"
+ },
+ "GE": {
+ "name": "Georgia"
+ },
+ "GH": {
+ "name": "Ghana"
+ },
+ "GI": {
+ "name": "Gibraltar"
+ },
+ "GD": {
+ "name": "Granada"
+ },
+ "GR": {
+ "name": "Grecia"
+ },
+ "GL": {
+ "name": "Groenlandia"
+ },
+ "GP": {
+ "name": "Guadalupe"
+ },
+ "GU": {
+ "name": "Guam"
+ },
+ "GT": {
+ "name": "Guatemala"
+ },
+ "GF": {
+ "name": "Guayana Francesa"
+ },
+ "GG": {
+ "name": "Guernesey"
+ },
+ "GN": {
+ "name": "Guinea"
+ },
+ "GQ": {
+ "name": "Guinea Ecuatorial"
+ },
+ "GW": {
+ "name": "Guinea-Bisáu"
+ },
+ "GY": {
+ "name": "Guyana"
+ },
+ "HT": {
+ "name": "Haití"
+ },
+ "HN": {
+ "name": "Honduras"
+ },
+ "HU": {
+ "name": "Hungría"
+ },
+ "IN": {
+ "name": "India"
+ },
+ "ID": {
+ "name": "Indonesia"
+ },
+ "IR": {
+ "name": "Irán"
+ },
+ "IQ": {
+ "name": "Iraq"
+ },
+ "IE": {
+ "name": "Irlanda"
+ },
+ "CX": {
+ "name": "Isla Christmas"
+ },
+ "AC": {
+ "name": "Isla de la Ascensión"
+ },
+ "IM": {
+ "name": "Isla de Man"
+ },
+ "NU": {
+ "name": "Isla Niue"
+ },
+ "NF": {
+ "name": "Isla Norfolk"
+ },
+ "IS": {
+ "name": "Islandia"
+ },
+ "AX": {
+ "name": "Islas Ã…land"
+ },
+ "KY": {
+ "name": "Islas Caimán"
+ },
+ "IC": {
+ "name": "islas Canarias"
+ },
+ "CC": {
+ "name": "Islas Cocos"
+ },
+ "CK": {
+ "name": "Islas Cook"
+ },
+ "FO": {
+ "name": "Islas Feroe"
+ },
+ "GS": {
+ "name": "Islas Georgia del Sur y Sandwich del Sur"
+ },
+ "FK": {
+ "name": "Islas Malvinas"
+ },
+ "MP": {
+ "name": "Islas Marianas del Norte"
+ },
+ "MH": {
+ "name": "Islas Marshall"
+ },
+ "UM": {
+ "name": "Islas menores alejadas de EE. UU."
+ },
+ "PN": {
+ "name": "Islas Pitcairn"
+ },
+ "SB": {
+ "name": "Islas Salomón"
+ },
+ "TC": {
+ "name": "Islas Turcas y Caicos"
+ },
+ "VG": {
+ "name": "Islas Vírgenes Británicas"
+ },
+ "VI": {
+ "name": "Islas Vírgenes de EE. UU."
+ },
+ "IL": {
+ "name": "Israel"
+ },
+ "IT": {
+ "name": "Italia"
+ },
+ "JM": {
+ "name": "Jamaica"
+ },
+ "JP": {
+ "name": "Japón"
+ },
+ "JE": {
+ "name": "Jersey"
+ },
+ "JO": {
+ "name": "Jordania"
+ },
+ "KZ": {
+ "name": "Kazajistán"
+ },
+ "KE": {
+ "name": "Kenia"
+ },
+ "KG": {
+ "name": "Kirguistán"
+ },
+ "KI": {
+ "name": "Kiribati"
+ },
+ "XK": {
+ "name": "Kosovo"
+ },
+ "KW": {
+ "name": "Kuwait"
+ },
+ "LA": {
+ "name": "Laos"
+ },
+ "LS": {
+ "name": "Lesoto"
+ },
+ "LV": {
+ "name": "Letonia"
+ },
+ "LB": {
+ "name": "Líbano"
+ },
+ "LR": {
+ "name": "Liberia"
+ },
+ "LY": {
+ "name": "Libia"
+ },
+ "LI": {
+ "name": "Liechtenstein"
+ },
+ "LT": {
+ "name": "Lituania"
+ },
+ "LU": {
+ "name": "Luxemburgo"
+ },
+ "MK": {
+ "name": "Macedonia"
+ },
+ "MG": {
+ "name": "Madagascar"
+ },
+ "MY": {
+ "name": "Malasia"
+ },
+ "MW": {
+ "name": "Malaui"
+ },
+ "MV": {
+ "name": "Maldivas"
+ },
+ "ML": {
+ "name": "Mali"
+ },
+ "MT": {
+ "name": "Malta"
+ },
+ "MA": {
+ "name": "Marruecos"
+ },
+ "MQ": {
+ "name": "Martinica"
+ },
+ "MU": {
+ "name": "Mauricio"
+ },
+ "MR": {
+ "name": "Mauritania"
+ },
+ "YT": {
+ "name": "Mayotte"
+ },
+ "MX": {
+ "name": "México"
+ },
+ "FM": {
+ "name": "Micronesia"
+ },
+ "MD": {
+ "name": "Moldavia"
+ },
+ "MC": {
+ "name": "Mónaco"
+ },
+ "MN": {
+ "name": "Mongolia"
+ },
+ "ME": {
+ "name": "Montenegro"
+ },
+ "MS": {
+ "name": "Montserrat"
+ },
+ "MZ": {
+ "name": "Mozambique"
+ },
+ "MM": {
+ "name": "Myanmar (Birmania)"
+ },
+ "NA": {
+ "name": "Namibia"
+ },
+ "NR": {
+ "name": "Nauru"
+ },
+ "NP": {
+ "name": "Nepal"
+ },
+ "NI": {
+ "name": "Nicaragua"
+ },
+ "NE": {
+ "name": "Níger"
+ },
+ "NG": {
+ "name": "Nigeria"
+ },
+ "NO": {
+ "name": "Noruega"
+ },
+ "NC": {
+ "name": "Nueva Caledonia"
+ },
+ "NZ": {
+ "name": "Nueva Zelanda"
+ },
+ "OM": {
+ "name": "Omán"
+ },
+ "NL": {
+ "name": "Países Bajos"
+ },
+ "PK": {
+ "name": "Pakistán"
+ },
+ "PW": {
+ "name": "Palau"
+ },
+ "PA": {
+ "name": "Panamá"
+ },
+ "PG": {
+ "name": "Papúa Nueva Guinea"
+ },
+ "PY": {
+ "name": "Paraguay"
+ },
+ "PE": {
+ "name": "Perú"
+ },
+ "PF": {
+ "name": "Polinesia Francesa"
+ },
+ "PL": {
+ "name": "Polonia"
+ },
+ "PT": {
+ "name": "Portugal"
+ },
+ "PR": {
+ "name": "Puerto Rico"
+ },
+ "HK": {
+ "name": "RAE de Hong Kong (China)"
+ },
+ "MO": {
+ "name": "RAE de Macao (China)"
+ },
+ "GB": {
+ "name": "Reino Unido"
+ },
+ "CF": {
+ "name": "República Centroafricana"
+ },
+ "CZ": {
+ "name": "República Checa"
+ },
+ "CG": {
+ "name": "República del Congo"
+ },
+ "CD": {
+ "name": "República Democrática del Congo"
+ },
+ "DO": {
+ "name": "República Dominicana"
+ },
+ "RE": {
+ "name": "Reunión"
+ },
+ "RW": {
+ "name": "Ruanda"
+ },
+ "RO": {
+ "name": "Rumanía"
+ },
+ "RU": {
+ "name": "Rusia"
+ },
+ "EH": {
+ "name": "Sáhara Occidental"
+ },
+ "WS": {
+ "name": "Samoa"
+ },
+ "AS": {
+ "name": "Samoa Americana"
+ },
+ "BL": {
+ "name": "San Bartolomé"
+ },
+ "KN": {
+ "name": "San Cristóbal y Nieves"
+ },
+ "SM": {
+ "name": "San Marino"
+ },
+ "MF": {
+ "name": "San Martín"
+ },
+ "PM": {
+ "name": "San Pedro y Miquelón"
+ },
+ "VC": {
+ "name": "San Vicente y las Granadinas"
+ },
+ "SH": {
+ "name": "Santa Elena"
+ },
+ "LC": {
+ "name": "Santa Lucía"
+ },
+ "ST": {
+ "name": "Santo Tomé y Príncipe"
+ },
+ "SN": {
+ "name": "Senegal"
+ },
+ "RS": {
+ "name": "Serbia"
+ },
+ "SC": {
+ "name": "Seychelles"
+ },
+ "SL": {
+ "name": "Sierra Leona"
+ },
+ "SG": {
+ "name": "Singapur"
+ },
+ "SX": {
+ "name": "Sint Maarten"
+ },
+ "SY": {
+ "name": "Siria"
+ },
+ "SO": {
+ "name": "Somalia"
+ },
+ "LK": {
+ "name": "Sri Lanka"
+ },
+ "SZ": {
+ "name": "Suazilandia"
+ },
+ "ZA": {
+ "name": "Sudáfrica"
+ },
+ "SD": {
+ "name": "Sudán"
+ },
+ "SS": {
+ "name": "Sudán del Sur"
+ },
+ "SE": {
+ "name": "Suecia"
+ },
+ "CH": {
+ "name": "Suiza"
+ },
+ "SR": {
+ "name": "Surinam"
+ },
+ "SJ": {
+ "name": "Svalbard y Jan Mayen"
+ },
+ "TH": {
+ "name": "Tailandia"
+ },
+ "TW": {
+ "name": "Taiwán"
+ },
+ "TZ": {
+ "name": "Tanzania"
+ },
+ "TJ": {
+ "name": "Tayikistán"
+ },
+ "IO": {
+ "name": "Territorio Británico del Océano Ãndico"
+ },
+ "TF": {
+ "name": "Territorios Australes Franceses"
+ },
+ "PS": {
+ "name": "Territorios Palestinos"
+ },
+ "TL": {
+ "name": "Timor Oriental"
+ },
+ "TG": {
+ "name": "Togo"
+ },
+ "TK": {
+ "name": "Tokelau"
+ },
+ "TO": {
+ "name": "Tonga"
+ },
+ "TT": {
+ "name": "Trinidad y Tobago"
+ },
+ "TA": {
+ "name": "Tristán da Cunha"
+ },
+ "TN": {
+ "name": "Túnez"
+ },
+ "TM": {
+ "name": "Turkmenistán"
+ },
+ "TR": {
+ "name": "Turquía"
+ },
+ "TV": {
+ "name": "Tuvalu"
+ },
+ "UA": {
+ "name": "Ucrania"
+ },
+ "UG": {
+ "name": "Uganda"
+ },
+ "UY": {
+ "name": "Uruguay"
+ },
+ "UZ": {
+ "name": "Uzbekistán"
+ },
+ "VU": {
+ "name": "Vanuatu"
+ },
+ "VE": {
+ "name": "Venezuela"
+ },
+ "VN": {
+ "name": "Vietnam"
+ },
+ "WF": {
+ "name": "Wallis y Futuna"
+ },
+ "YE": {
+ "name": "Yemen"
+ },
+ "DJ": {
+ "name": "Yibuti"
+ },
+ "ZM": {
+ "name": "Zambia"
+ },
+ "ZW": {
+ "name": "Zimbabue"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/country/et.json b/library/intl/resources/country/et.json
new file mode 100644
index 000000000..85758bcff
--- /dev/null
+++ b/library/intl/resources/country/et.json
@@ -0,0 +1,761 @@
+{
+ "AF": {
+ "name": "Afganistan"
+ },
+ "AX": {
+ "name": "Ahvenamaa"
+ },
+ "AL": {
+ "name": "Albaania"
+ },
+ "DZ": {
+ "name": "Alžeeria"
+ },
+ "AS": {
+ "name": "Ameerika Samoa"
+ },
+ "US": {
+ "name": "Ameerika Ãœhendriigid"
+ },
+ "AD": {
+ "name": "Andorra"
+ },
+ "AO": {
+ "name": "Angola"
+ },
+ "AI": {
+ "name": "Anguilla"
+ },
+ "AQ": {
+ "name": "Antarktis"
+ },
+ "AG": {
+ "name": "Antigua ja Barbuda"
+ },
+ "AE": {
+ "name": "Araabia Ãœhendemiraadid"
+ },
+ "AR": {
+ "name": "Argentina"
+ },
+ "AM": {
+ "name": "Armeenia"
+ },
+ "AW": {
+ "name": "Aruba"
+ },
+ "AC": {
+ "name": "Ascensioni saar"
+ },
+ "AZ": {
+ "name": "Aserbaidžaan"
+ },
+ "AU": {
+ "name": "Austraalia"
+ },
+ "AT": {
+ "name": "Austria"
+ },
+ "BS": {
+ "name": "Bahama"
+ },
+ "BH": {
+ "name": "Bahrein"
+ },
+ "BD": {
+ "name": "Bangladesh"
+ },
+ "BB": {
+ "name": "Barbados"
+ },
+ "PW": {
+ "name": "Belau"
+ },
+ "BE": {
+ "name": "Belgia"
+ },
+ "BZ": {
+ "name": "Belize"
+ },
+ "BJ": {
+ "name": "Benin"
+ },
+ "BM": {
+ "name": "Bermuda"
+ },
+ "BT": {
+ "name": "Bhutan"
+ },
+ "BO": {
+ "name": "Boliivia"
+ },
+ "BA": {
+ "name": "Bosnia ja Hertsegoviina"
+ },
+ "BW": {
+ "name": "Botswana"
+ },
+ "BR": {
+ "name": "Brasiilia"
+ },
+ "IO": {
+ "name": "Briti India ookeani ala"
+ },
+ "VG": {
+ "name": "Briti Neitsisaared"
+ },
+ "BN": {
+ "name": "Brunei"
+ },
+ "BG": {
+ "name": "Bulgaaria"
+ },
+ "BF": {
+ "name": "Burkina Faso"
+ },
+ "BI": {
+ "name": "Burundi"
+ },
+ "EA": {
+ "name": "Ceuta ja Melilla"
+ },
+ "CO": {
+ "name": "Colombia"
+ },
+ "CK": {
+ "name": "Cooki saared"
+ },
+ "CR": {
+ "name": "Costa Rica"
+ },
+ "CI": {
+ "name": "Côte d’Ivoire"
+ },
+ "CW": {
+ "name": "Curaçao"
+ },
+ "DG": {
+ "name": "Diego Garcia"
+ },
+ "DJ": {
+ "name": "Djibouti"
+ },
+ "DM": {
+ "name": "Dominica"
+ },
+ "DO": {
+ "name": "Dominikaani Vabariik"
+ },
+ "EC": {
+ "name": "Ecuador"
+ },
+ "EE": {
+ "name": "Eesti"
+ },
+ "EG": {
+ "name": "Egiptus"
+ },
+ "GQ": {
+ "name": "Ekvatoriaal-Guinea"
+ },
+ "SV": {
+ "name": "El Salvador"
+ },
+ "ER": {
+ "name": "Eritrea"
+ },
+ "ET": {
+ "name": "Etioopia"
+ },
+ "FK": {
+ "name": "Falklandi saared"
+ },
+ "FJ": {
+ "name": "Fidži"
+ },
+ "PH": {
+ "name": "Filipiinid"
+ },
+ "FO": {
+ "name": "Fääri saared"
+ },
+ "GA": {
+ "name": "Gabon"
+ },
+ "GM": {
+ "name": "Gambia"
+ },
+ "GH": {
+ "name": "Ghana"
+ },
+ "GI": {
+ "name": "Gibraltar"
+ },
+ "GD": {
+ "name": "Grenada"
+ },
+ "GE": {
+ "name": "Gruusia"
+ },
+ "GL": {
+ "name": "Gröönimaa"
+ },
+ "GP": {
+ "name": "Guadeloupe"
+ },
+ "GU": {
+ "name": "Guam"
+ },
+ "GT": {
+ "name": "Guatemala"
+ },
+ "GG": {
+ "name": "Guernsey"
+ },
+ "GN": {
+ "name": "Guinea"
+ },
+ "GW": {
+ "name": "Guinea-Bissau"
+ },
+ "GY": {
+ "name": "Guyana"
+ },
+ "HT": {
+ "name": "Haiti"
+ },
+ "CN": {
+ "name": "Hiina"
+ },
+ "ES": {
+ "name": "Hispaania"
+ },
+ "NL": {
+ "name": "Holland"
+ },
+ "BQ": {
+ "name": "Hollandi Kariibi mere saared"
+ },
+ "HN": {
+ "name": "Honduras"
+ },
+ "HK": {
+ "name": "Hongkong - Hiina erihalduspiirkond"
+ },
+ "HR": {
+ "name": "Horvaatia"
+ },
+ "TL": {
+ "name": "Ida-Timor"
+ },
+ "IE": {
+ "name": "Iirimaa"
+ },
+ "IL": {
+ "name": "Iisrael"
+ },
+ "IN": {
+ "name": "India"
+ },
+ "ID": {
+ "name": "Indoneesia"
+ },
+ "IQ": {
+ "name": "Iraak"
+ },
+ "IR": {
+ "name": "Iraan"
+ },
+ "IS": {
+ "name": "Island"
+ },
+ "IT": {
+ "name": "Itaalia"
+ },
+ "JP": {
+ "name": "Jaapan"
+ },
+ "JM": {
+ "name": "Jamaica"
+ },
+ "YE": {
+ "name": "Jeemen"
+ },
+ "JE": {
+ "name": "Jersey"
+ },
+ "JO": {
+ "name": "Jordaania"
+ },
+ "CX": {
+ "name": "Jõulusaar"
+ },
+ "KY": {
+ "name": "Kaimanisaared"
+ },
+ "KH": {
+ "name": "Kambodža"
+ },
+ "CM": {
+ "name": "Kamerun"
+ },
+ "IC": {
+ "name": "Kanaari saared"
+ },
+ "CA": {
+ "name": "Kanada"
+ },
+ "KZ": {
+ "name": "Kasahstan"
+ },
+ "QA": {
+ "name": "Katar"
+ },
+ "KE": {
+ "name": "Kenya"
+ },
+ "CF": {
+ "name": "Kesk-Aafrika Vabariik"
+ },
+ "KI": {
+ "name": "Kiribati"
+ },
+ "KM": {
+ "name": "Komoorid"
+ },
+ "CD": {
+ "name": "Kongo DV"
+ },
+ "CG": {
+ "name": "Kongo-Brazzaville"
+ },
+ "CC": {
+ "name": "Kookossaared"
+ },
+ "XK": {
+ "name": "Kosovo"
+ },
+ "GR": {
+ "name": "Kreeka"
+ },
+ "CU": {
+ "name": "Kuuba"
+ },
+ "KW": {
+ "name": "Kuveit"
+ },
+ "KG": {
+ "name": "Kõrgõzstan"
+ },
+ "CY": {
+ "name": "Küpros"
+ },
+ "LA": {
+ "name": "Laos"
+ },
+ "LT": {
+ "name": "Leedu"
+ },
+ "LS": {
+ "name": "Lesotho"
+ },
+ "LR": {
+ "name": "Libeeria"
+ },
+ "LI": {
+ "name": "Liechtenstein"
+ },
+ "LB": {
+ "name": "Liibanon"
+ },
+ "LY": {
+ "name": "Liibüa"
+ },
+ "LU": {
+ "name": "Luksemburg"
+ },
+ "ZA": {
+ "name": "Lõuna-Aafrika Vabariik"
+ },
+ "GS": {
+ "name": "Lõuna-Georgia ja Lõuna-Sandwichi saared"
+ },
+ "KR": {
+ "name": "Lõuna-Korea"
+ },
+ "SS": {
+ "name": "Lõuna-Sudaan"
+ },
+ "LV": {
+ "name": "Läti"
+ },
+ "EH": {
+ "name": "Lääne-Sahara"
+ },
+ "MO": {
+ "name": "Macau - Hiina erihalduspiirkond"
+ },
+ "MG": {
+ "name": "Madagaskar"
+ },
+ "MK": {
+ "name": "Makedoonia"
+ },
+ "MY": {
+ "name": "Malaisia"
+ },
+ "MW": {
+ "name": "Malawi"
+ },
+ "MV": {
+ "name": "Maldiivid"
+ },
+ "ML": {
+ "name": "Mali"
+ },
+ "MT": {
+ "name": "Malta"
+ },
+ "IM": {
+ "name": "Mani saar"
+ },
+ "MA": {
+ "name": "Maroko"
+ },
+ "MH": {
+ "name": "Marshalli saared"
+ },
+ "MQ": {
+ "name": "Martinique"
+ },
+ "MR": {
+ "name": "Mauritaania"
+ },
+ "MU": {
+ "name": "Mauritius"
+ },
+ "YT": {
+ "name": "Mayotte"
+ },
+ "MX": {
+ "name": "Mehhiko"
+ },
+ "FM": {
+ "name": "Mikroneesia Liiduriigid"
+ },
+ "MD": {
+ "name": "Moldova"
+ },
+ "MC": {
+ "name": "Monaco"
+ },
+ "MN": {
+ "name": "Mongoolia"
+ },
+ "ME": {
+ "name": "Montenegro"
+ },
+ "MS": {
+ "name": "Montserrat"
+ },
+ "MZ": {
+ "name": "Mosambiik"
+ },
+ "MM": {
+ "name": "Myanmar (Birma)"
+ },
+ "NA": {
+ "name": "Namiibia"
+ },
+ "NR": {
+ "name": "Nauru"
+ },
+ "NP": {
+ "name": "Nepal"
+ },
+ "NI": {
+ "name": "Nicaragua"
+ },
+ "NG": {
+ "name": "Nigeeria"
+ },
+ "NE": {
+ "name": "Niger"
+ },
+ "NU": {
+ "name": "Niue"
+ },
+ "NF": {
+ "name": "Norfolk"
+ },
+ "NO": {
+ "name": "Norra"
+ },
+ "OM": {
+ "name": "Omaan"
+ },
+ "PG": {
+ "name": "Paapua Uus-Guinea"
+ },
+ "PK": {
+ "name": "Pakistan"
+ },
+ "PS": {
+ "name": "Palestiina alad"
+ },
+ "PA": {
+ "name": "Panama"
+ },
+ "PY": {
+ "name": "Paraguay"
+ },
+ "PE": {
+ "name": "Peruu"
+ },
+ "PN": {
+ "name": "Pitcairni saared"
+ },
+ "PL": {
+ "name": "Poola"
+ },
+ "PT": {
+ "name": "Portugal"
+ },
+ "GF": {
+ "name": "Prantsuse Guajaana"
+ },
+ "TF": {
+ "name": "Prantsuse Lõunaalad"
+ },
+ "PF": {
+ "name": "Prantsuse Polüneesia"
+ },
+ "FR": {
+ "name": "Prantsusmaa"
+ },
+ "PR": {
+ "name": "Puerto Rico"
+ },
+ "KP": {
+ "name": "Põhja-Korea"
+ },
+ "MP": {
+ "name": "Põhja-Mariaanid"
+ },
+ "RE": {
+ "name": "Réunion"
+ },
+ "CV": {
+ "name": "Roheneemesaared"
+ },
+ "SE": {
+ "name": "Rootsi"
+ },
+ "RO": {
+ "name": "Rumeenia"
+ },
+ "RW": {
+ "name": "Rwanda"
+ },
+ "SB": {
+ "name": "Saalomoni Saared"
+ },
+ "BL": {
+ "name": "Saint Barthélemy"
+ },
+ "SH": {
+ "name": "Saint Helena"
+ },
+ "KN": {
+ "name": "Saint Kitts ja Nevis"
+ },
+ "LC": {
+ "name": "Saint Lucia"
+ },
+ "MF": {
+ "name": "Saint Martin"
+ },
+ "PM": {
+ "name": "Saint Pierre ja Miquelon"
+ },
+ "VC": {
+ "name": "Saint Vincent ja Grenadiinid"
+ },
+ "DE": {
+ "name": "Saksamaa"
+ },
+ "ZM": {
+ "name": "Sambia"
+ },
+ "WS": {
+ "name": "Samoa"
+ },
+ "SM": {
+ "name": "San Marino"
+ },
+ "ST": {
+ "name": "São Tomé ja Príncipe"
+ },
+ "SA": {
+ "name": "Saudi Araabia"
+ },
+ "SC": {
+ "name": "Seišellid"
+ },
+ "SN": {
+ "name": "Senegal"
+ },
+ "RS": {
+ "name": "Serbia"
+ },
+ "SL": {
+ "name": "Sierra Leone"
+ },
+ "SG": {
+ "name": "Singapur"
+ },
+ "SX": {
+ "name": "Sint Maarten"
+ },
+ "SK": {
+ "name": "Slovakkia"
+ },
+ "SI": {
+ "name": "Sloveenia"
+ },
+ "SO": {
+ "name": "Somaalia"
+ },
+ "FI": {
+ "name": "Soome"
+ },
+ "LK": {
+ "name": "Sri Lanka"
+ },
+ "SD": {
+ "name": "Sudaan"
+ },
+ "SR": {
+ "name": "Suriname"
+ },
+ "GB": {
+ "name": "Suurbritannia"
+ },
+ "SZ": {
+ "name": "Svaasimaa"
+ },
+ "SJ": {
+ "name": "Svalbard ja Jan Mayen"
+ },
+ "SY": {
+ "name": "Süüria"
+ },
+ "CH": {
+ "name": "Å veits"
+ },
+ "ZW": {
+ "name": "Zimbabwe"
+ },
+ "DK": {
+ "name": "Taani"
+ },
+ "TJ": {
+ "name": "Tadžikistan"
+ },
+ "TH": {
+ "name": "Tai"
+ },
+ "TW": {
+ "name": "Taiwan"
+ },
+ "TZ": {
+ "name": "Tansaania"
+ },
+ "TG": {
+ "name": "Togo"
+ },
+ "TK": {
+ "name": "Tokelau"
+ },
+ "TO": {
+ "name": "Tonga"
+ },
+ "TT": {
+ "name": "Trinidad ja Tobago"
+ },
+ "TA": {
+ "name": "Tristan da Cunha"
+ },
+ "TD": {
+ "name": "TÅ¡aad"
+ },
+ "CZ": {
+ "name": "TÅ¡ehhi"
+ },
+ "CL": {
+ "name": "TÅ¡iili"
+ },
+ "TN": {
+ "name": "Tuneesia"
+ },
+ "TC": {
+ "name": "Turks ja Caicos"
+ },
+ "TV": {
+ "name": "Tuvalu"
+ },
+ "TR": {
+ "name": "Türgi"
+ },
+ "TM": {
+ "name": "Türkmenistan"
+ },
+ "UG": {
+ "name": "Uganda"
+ },
+ "UA": {
+ "name": "Ukraina"
+ },
+ "HU": {
+ "name": "Ungari"
+ },
+ "UY": {
+ "name": "Uruguay"
+ },
+ "VI": {
+ "name": "USA Neitsisaared"
+ },
+ "UZ": {
+ "name": "Usbekistan"
+ },
+ "NC": {
+ "name": "Uus-Kaledoonia"
+ },
+ "NZ": {
+ "name": "Uus-Meremaa"
+ },
+ "BY": {
+ "name": "Valgevene"
+ },
+ "WF": {
+ "name": "Wallis ja Futuna"
+ },
+ "VU": {
+ "name": "Vanuatu"
+ },
+ "VA": {
+ "name": "Vatikan"
+ },
+ "RU": {
+ "name": "Venemaa"
+ },
+ "VE": {
+ "name": "Venezuela"
+ },
+ "VN": {
+ "name": "Vietnam"
+ },
+ "UM": {
+ "name": "Ãœhendriikide hajasaared"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/country/eu.json b/library/intl/resources/country/eu.json
new file mode 100644
index 000000000..2e210783f
--- /dev/null
+++ b/library/intl/resources/country/eu.json
@@ -0,0 +1,761 @@
+{
+ "AF": {
+ "name": "Afganistan"
+ },
+ "CF": {
+ "name": "Afrika Erdiko Errepublika"
+ },
+ "AX": {
+ "name": "Aland uharteak"
+ },
+ "AL": {
+ "name": "Albania"
+ },
+ "DE": {
+ "name": "Alemania"
+ },
+ "DZ": {
+ "name": "Aljeria"
+ },
+ "AS": {
+ "name": "Amerikar Samoa"
+ },
+ "US": {
+ "name": "Ameriketako Estatu Batuak"
+ },
+ "UM": {
+ "name": "Ameriketako Estatu Batuetako Kanpoaldeko Uharte Txikiak"
+ },
+ "AD": {
+ "name": "Andorra"
+ },
+ "AI": {
+ "name": "Angila"
+ },
+ "AO": {
+ "name": "Angola"
+ },
+ "AQ": {
+ "name": "Antartika"
+ },
+ "AG": {
+ "name": "Antigua eta Barbuda"
+ },
+ "AE": {
+ "name": "Arabiar Emirrerri Batuak"
+ },
+ "AR": {
+ "name": "Argentina"
+ },
+ "AM": {
+ "name": "Armenia"
+ },
+ "AW": {
+ "name": "Aruba"
+ },
+ "AC": {
+ "name": "Ascension uhartea"
+ },
+ "AU": {
+ "name": "Australia"
+ },
+ "AT": {
+ "name": "Austria"
+ },
+ "AZ": {
+ "name": "Azerbaijan"
+ },
+ "BS": {
+ "name": "Bahamak"
+ },
+ "BH": {
+ "name": "Bahrain"
+ },
+ "BD": {
+ "name": "Bangladesh"
+ },
+ "BB": {
+ "name": "Barbados"
+ },
+ "BE": {
+ "name": "Belgika"
+ },
+ "BZ": {
+ "name": "Belize"
+ },
+ "BJ": {
+ "name": "Benin"
+ },
+ "BM": {
+ "name": "Bermuda"
+ },
+ "BT": {
+ "name": "Bhutan"
+ },
+ "BY": {
+ "name": "Bielorrusia"
+ },
+ "VI": {
+ "name": "Birjina uharte amerikarrak"
+ },
+ "VG": {
+ "name": "Birjina uharte britainiarrak"
+ },
+ "CI": {
+ "name": "Boli Kosta"
+ },
+ "BO": {
+ "name": "Bolivia"
+ },
+ "BA": {
+ "name": "Bosnia-Herzegovina"
+ },
+ "BW": {
+ "name": "Botswana"
+ },
+ "BR": {
+ "name": "Brasil"
+ },
+ "BN": {
+ "name": "Brunei"
+ },
+ "BG": {
+ "name": "Bulgaria"
+ },
+ "BF": {
+ "name": "Burkina Faso"
+ },
+ "BI": {
+ "name": "Burundi"
+ },
+ "CV": {
+ "name": "Cabo Verde"
+ },
+ "EA": {
+ "name": "Ceuta eta Melilla"
+ },
+ "CX": {
+ "name": "Christmas uhartea"
+ },
+ "CC": {
+ "name": "Cocos (Keeling) uharteak"
+ },
+ "CK": {
+ "name": "Cook uharteak"
+ },
+ "CR": {
+ "name": "Costa Rica"
+ },
+ "CW": {
+ "name": "Curaçao"
+ },
+ "DK": {
+ "name": "Danimarka"
+ },
+ "DG": {
+ "name": "Diego Garcia"
+ },
+ "DJ": {
+ "name": "Djibuti"
+ },
+ "DM": {
+ "name": "Dominika"
+ },
+ "DO": {
+ "name": "Dominikar Errepublika"
+ },
+ "EG": {
+ "name": "Egipto"
+ },
+ "TL": {
+ "name": "Ekialdeko Timor"
+ },
+ "EC": {
+ "name": "Ekuador"
+ },
+ "GQ": {
+ "name": "Ekuatore Ginea"
+ },
+ "SV": {
+ "name": "El Salvador"
+ },
+ "ER": {
+ "name": "Eritrea"
+ },
+ "GB": {
+ "name": "Erresuma Batua"
+ },
+ "RO": {
+ "name": "Errumania"
+ },
+ "RU": {
+ "name": "Errusia"
+ },
+ "SK": {
+ "name": "Eslovakia"
+ },
+ "SI": {
+ "name": "Eslovenia"
+ },
+ "ES": {
+ "name": "Espainia"
+ },
+ "EE": {
+ "name": "Estonia"
+ },
+ "ET": {
+ "name": "Etiopia"
+ },
+ "FO": {
+ "name": "Faroe uharteak"
+ },
+ "FJ": {
+ "name": "Fiji"
+ },
+ "PH": {
+ "name": "Filipinak"
+ },
+ "FI": {
+ "name": "Finlandia"
+ },
+ "FR": {
+ "name": "Frantzia"
+ },
+ "GA": {
+ "name": "Gabon"
+ },
+ "GM": {
+ "name": "Gambia"
+ },
+ "GE": {
+ "name": "Georgia"
+ },
+ "GH": {
+ "name": "Ghana"
+ },
+ "GI": {
+ "name": "Gibraltar"
+ },
+ "GN": {
+ "name": "Ginea"
+ },
+ "GW": {
+ "name": "Ginea-Bissau"
+ },
+ "GD": {
+ "name": "Grenada"
+ },
+ "GR": {
+ "name": "Grezia"
+ },
+ "GL": {
+ "name": "Groenlandia"
+ },
+ "GP": {
+ "name": "Guadalupe"
+ },
+ "GU": {
+ "name": "Guam"
+ },
+ "GT": {
+ "name": "Guatemala"
+ },
+ "GG": {
+ "name": "Guernsey"
+ },
+ "GY": {
+ "name": "Guyana"
+ },
+ "GF": {
+ "name": "Guyana Frantsesa"
+ },
+ "HT": {
+ "name": "Haiti"
+ },
+ "KR": {
+ "name": "Hego Korea"
+ },
+ "SS": {
+ "name": "Hego Sudan"
+ },
+ "ZA": {
+ "name": "Hegoafrika"
+ },
+ "GS": {
+ "name": "Hegoaldeko Georgia eta Hegoaldeko Sandwich uharteak"
+ },
+ "TF": {
+ "name": "Hegoaldeko lurralde frantsesak"
+ },
+ "NL": {
+ "name": "Herbehereak"
+ },
+ "HN": {
+ "name": "Honduras"
+ },
+ "HK": {
+ "name": "Hong Kong AEB Txina"
+ },
+ "HU": {
+ "name": "Hungaria"
+ },
+ "IN": {
+ "name": "India"
+ },
+ "IO": {
+ "name": "Indiako Ozeanoko lurralde britainiarra"
+ },
+ "ID": {
+ "name": "Indonesia"
+ },
+ "KP": {
+ "name": "Ipar Korea"
+ },
+ "MP": {
+ "name": "Iparraldeko Mariana uharteak"
+ },
+ "IQ": {
+ "name": "Irak"
+ },
+ "IR": {
+ "name": "Iran"
+ },
+ "IE": {
+ "name": "Irlanda"
+ },
+ "IS": {
+ "name": "Islandia"
+ },
+ "IL": {
+ "name": "Israel"
+ },
+ "IT": {
+ "name": "Italia"
+ },
+ "JM": {
+ "name": "Jamaika"
+ },
+ "JP": {
+ "name": "Japonia"
+ },
+ "JE": {
+ "name": "Jersey"
+ },
+ "JO": {
+ "name": "Jordania"
+ },
+ "KY": {
+ "name": "Kaiman uharteak"
+ },
+ "NC": {
+ "name": "Kaledonia Berria"
+ },
+ "CM": {
+ "name": "Kamerun"
+ },
+ "CA": {
+ "name": "Kanada"
+ },
+ "IC": {
+ "name": "Kanariak"
+ },
+ "KH": {
+ "name": "Kanbodia"
+ },
+ "BQ": {
+ "name": "Karibeko Herbehereak"
+ },
+ "KZ": {
+ "name": "Kazakhstan"
+ },
+ "KE": {
+ "name": "Kenya"
+ },
+ "KG": {
+ "name": "Kirgizistan"
+ },
+ "KI": {
+ "name": "Kiribati"
+ },
+ "CO": {
+ "name": "Kolonbia"
+ },
+ "KM": {
+ "name": "Komoreak"
+ },
+ "CG": {
+ "name": "Kongo (Brazzaville)"
+ },
+ "CD": {
+ "name": "Kongoko Errepublika Demokratikoa"
+ },
+ "XK": {
+ "name": "Kosovo"
+ },
+ "HR": {
+ "name": "Kroazia"
+ },
+ "CU": {
+ "name": "Kuba"
+ },
+ "KW": {
+ "name": "Kuwait"
+ },
+ "LA": {
+ "name": "Laos"
+ },
+ "LS": {
+ "name": "Lesotho"
+ },
+ "LV": {
+ "name": "Letonia"
+ },
+ "LB": {
+ "name": "Libano"
+ },
+ "LR": {
+ "name": "Liberia"
+ },
+ "LY": {
+ "name": "Libia"
+ },
+ "LI": {
+ "name": "Liechtenstein"
+ },
+ "LT": {
+ "name": "Lituania"
+ },
+ "LU": {
+ "name": "Luxenburgo"
+ },
+ "MO": {
+ "name": "Macau AEB Txina"
+ },
+ "MG": {
+ "name": "Madagaskar"
+ },
+ "MW": {
+ "name": "Malawi"
+ },
+ "MY": {
+ "name": "Malaysia"
+ },
+ "MV": {
+ "name": "Maldivak"
+ },
+ "ML": {
+ "name": "Mali"
+ },
+ "MT": {
+ "name": "Malta"
+ },
+ "FK": {
+ "name": "Malvinak"
+ },
+ "IM": {
+ "name": "Man uhartea"
+ },
+ "MA": {
+ "name": "Maroko"
+ },
+ "MH": {
+ "name": "Marshall uharteak"
+ },
+ "MQ": {
+ "name": "Martinika"
+ },
+ "MR": {
+ "name": "Mauritania"
+ },
+ "MU": {
+ "name": "Maurizio"
+ },
+ "YT": {
+ "name": "Mayotte"
+ },
+ "MK": {
+ "name": "Mazedonia"
+ },
+ "EH": {
+ "name": "Mendebaldeko Sahara"
+ },
+ "MX": {
+ "name": "Mexiko"
+ },
+ "FM": {
+ "name": "Mikronesia"
+ },
+ "MD": {
+ "name": "Moldavia"
+ },
+ "MC": {
+ "name": "Monako"
+ },
+ "MN": {
+ "name": "Mongolia"
+ },
+ "ME": {
+ "name": "Montenegro"
+ },
+ "MS": {
+ "name": "Montserrat"
+ },
+ "MZ": {
+ "name": "Mozambike"
+ },
+ "MM": {
+ "name": "Myanmar"
+ },
+ "NA": {
+ "name": "Namibia"
+ },
+ "NR": {
+ "name": "Nauru"
+ },
+ "NP": {
+ "name": "Nepal"
+ },
+ "NE": {
+ "name": "Niger"
+ },
+ "NG": {
+ "name": "Nigeria"
+ },
+ "NI": {
+ "name": "Nikaragua"
+ },
+ "NU": {
+ "name": "Niue"
+ },
+ "NF": {
+ "name": "Norfolk uhartea"
+ },
+ "NO": {
+ "name": "Norvegia"
+ },
+ "OM": {
+ "name": "Oman"
+ },
+ "PK": {
+ "name": "Pakistan"
+ },
+ "PW": {
+ "name": "Palau"
+ },
+ "PS": {
+ "name": "Palestinako Lurraldeak"
+ },
+ "PA": {
+ "name": "Panama"
+ },
+ "PG": {
+ "name": "Papua Ginea Berria"
+ },
+ "PY": {
+ "name": "Paraguai"
+ },
+ "PE": {
+ "name": "Peru"
+ },
+ "PN": {
+ "name": "Pitcairn uharteak"
+ },
+ "PF": {
+ "name": "Polinesia Frantsesa"
+ },
+ "PL": {
+ "name": "Polonia"
+ },
+ "PT": {
+ "name": "Portugal"
+ },
+ "PR": {
+ "name": "Puerto Rico"
+ },
+ "QA": {
+ "name": "Qatar"
+ },
+ "RE": {
+ "name": "Reunion"
+ },
+ "RW": {
+ "name": "Ruanda"
+ },
+ "SH": {
+ "name": "Saint Helena"
+ },
+ "KN": {
+ "name": "Saint Kitts eta Nevis"
+ },
+ "MF": {
+ "name": "Saint Martin"
+ },
+ "VC": {
+ "name": "Saint Vincent eta Grenadinak"
+ },
+ "PM": {
+ "name": "Saint-Pierre eta Mikelune"
+ },
+ "SB": {
+ "name": "Salomon uharteak"
+ },
+ "WS": {
+ "name": "Samoa"
+ },
+ "BL": {
+ "name": "San Bartolome"
+ },
+ "SM": {
+ "name": "San Marino"
+ },
+ "LC": {
+ "name": "Santa Luzia"
+ },
+ "ST": {
+ "name": "Sao Tome eta Principe"
+ },
+ "SA": {
+ "name": "Saudi Arabia"
+ },
+ "SN": {
+ "name": "Senegal"
+ },
+ "RS": {
+ "name": "Serbia"
+ },
+ "SC": {
+ "name": "Seychelleak"
+ },
+ "SL": {
+ "name": "Sierra Leona"
+ },
+ "SG": {
+ "name": "Singapur"
+ },
+ "SX": {
+ "name": "Sint Maarten"
+ },
+ "SY": {
+ "name": "Siria"
+ },
+ "SO": {
+ "name": "Somalia"
+ },
+ "LK": {
+ "name": "Sri Lanka"
+ },
+ "SD": {
+ "name": "Sudan"
+ },
+ "SE": {
+ "name": "Suedia"
+ },
+ "CH": {
+ "name": "Suitza"
+ },
+ "SR": {
+ "name": "Surinam"
+ },
+ "SJ": {
+ "name": "Svalbard eta Jan Mayen uharteak"
+ },
+ "SZ": {
+ "name": "Swazilandia"
+ },
+ "TJ": {
+ "name": "Tadjikistan"
+ },
+ "TW": {
+ "name": "Taiwan"
+ },
+ "TZ": {
+ "name": "Tanzania"
+ },
+ "TH": {
+ "name": "Thailandia"
+ },
+ "TG": {
+ "name": "Togo"
+ },
+ "TK": {
+ "name": "Tokelau"
+ },
+ "TO": {
+ "name": "Tonga"
+ },
+ "TT": {
+ "name": "Trinidad eta Tobago"
+ },
+ "TA": {
+ "name": "Tristan da Cunha"
+ },
+ "TN": {
+ "name": "Tunisia"
+ },
+ "TC": {
+ "name": "Turk eta Caicos uharteak"
+ },
+ "TR": {
+ "name": "Turkia"
+ },
+ "TM": {
+ "name": "Turkmenistan"
+ },
+ "TV": {
+ "name": "Tuvalu"
+ },
+ "TD": {
+ "name": "Txad"
+ },
+ "CZ": {
+ "name": "Txekiar Errepublika"
+ },
+ "CL": {
+ "name": "Txile"
+ },
+ "CN": {
+ "name": "Txina"
+ },
+ "UG": {
+ "name": "Uganda"
+ },
+ "UA": {
+ "name": "Ukraina"
+ },
+ "UY": {
+ "name": "Uruguai"
+ },
+ "UZ": {
+ "name": "Uzbekistan"
+ },
+ "VU": {
+ "name": "Vanuatu"
+ },
+ "VA": {
+ "name": "Vatikano Hiria"
+ },
+ "VE": {
+ "name": "Venezuela"
+ },
+ "VN": {
+ "name": "Vietnam"
+ },
+ "WF": {
+ "name": "Wallis eta Futuna"
+ },
+ "YE": {
+ "name": "Yemen"
+ },
+ "ZM": {
+ "name": "Zambia"
+ },
+ "NZ": {
+ "name": "Zeelanda Berria"
+ },
+ "ZW": {
+ "name": "Zimbabwe"
+ },
+ "CY": {
+ "name": "Zipre"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/country/ewo.json b/library/intl/resources/country/ewo.json
new file mode 100644
index 000000000..48ae55a50
--- /dev/null
+++ b/library/intl/resources/country/ewo.json
@@ -0,0 +1,761 @@
+{
+ "AF": {
+ "name": "Afəganisətán"
+ },
+ "ZA": {
+ "name": "Afiríka yá Súd"
+ },
+ "HT": {
+ "name": "Aití"
+ },
+ "AX": {
+ "name": "Ã…land Islands"
+ },
+ "AL": {
+ "name": "Aləbánia"
+ },
+ "DZ": {
+ "name": "Aləyéria"
+ },
+ "AD": {
+ "name": "Andór"
+ },
+ "AI": {
+ "name": "Angíyə"
+ },
+ "AO": {
+ "name": "Angolá"
+ },
+ "AQ": {
+ "name": "Antarctica"
+ },
+ "AG": {
+ "name": "Antígwa ai Barəbúda"
+ },
+ "SA": {
+ "name": "Arabí Saudí"
+ },
+ "AR": {
+ "name": "Arəhenətína"
+ },
+ "AM": {
+ "name": "Arəménia"
+ },
+ "AW": {
+ "name": "Arúba"
+ },
+ "AC": {
+ "name": "Ascension Island"
+ },
+ "AZ": {
+ "name": "Azɛrəbaidzáŋ"
+ },
+ "BS": {
+ "name": "Bahámas"
+ },
+ "BH": {
+ "name": "BahÉ™rÉ›Ìn"
+ },
+ "BD": {
+ "name": "BangaladÉ›Ìs"
+ },
+ "BB": {
+ "name": "Barəbád"
+ },
+ "AE": {
+ "name": "Bemirá yá Arábə uní"
+ },
+ "BY": {
+ "name": "Bəlarús"
+ },
+ "BR": {
+ "name": "Bəlazíl"
+ },
+ "BZ": {
+ "name": "Bəlís"
+ },
+ "BJ": {
+ "name": "Bəníŋ"
+ },
+ "AS": {
+ "name": "BÉ™samóa yá AmÉ™ÌrÉ™ka"
+ },
+ "BE": {
+ "name": "Bɛləhíg"
+ },
+ "BM": {
+ "name": "Bɛrəmúd"
+ },
+ "BO": {
+ "name": "Bolívia"
+ },
+ "BA": {
+ "name": "Bosəní ai ɛrəzegovín"
+ },
+ "BW": {
+ "name": "Botswaná"
+ },
+ "BG": {
+ "name": "Buləgarí"
+ },
+ "BF": {
+ "name": "Buləkiná Fasó"
+ },
+ "BN": {
+ "name": "Buluné"
+ },
+ "BI": {
+ "name": "Burundí"
+ },
+ "BT": {
+ "name": "Butáŋ"
+ },
+ "IC": {
+ "name": "Canary Islands"
+ },
+ "BQ": {
+ "name": "Caribbean Netherlands"
+ },
+ "EA": {
+ "name": "Ceuta & Melilla"
+ },
+ "CX": {
+ "name": "Christmas Island"
+ },
+ "CC": {
+ "name": "Cocos (Keeling) Islands"
+ },
+ "CW": {
+ "name": "Curaçao"
+ },
+ "DK": {
+ "name": "Danəmárəg"
+ },
+ "DG": {
+ "name": "Diego Garcia"
+ },
+ "DM": {
+ "name": "Dómənika"
+ },
+ "DJ": {
+ "name": "Dzibutí"
+ },
+ "EG": {
+ "name": "Ehíbətɛn"
+ },
+ "EC": {
+ "name": "Ekwatór"
+ },
+ "ER": {
+ "name": "Elitəlé"
+ },
+ "EE": {
+ "name": "Esetoní"
+ },
+ "ET": {
+ "name": "Etiopí"
+ },
+ "IN": {
+ "name": "É›ÌndÉ™"
+ },
+ "ID": {
+ "name": "ɛndonésia"
+ },
+ "FO": {
+ "name": "Faroe Islands"
+ },
+ "FJ": {
+ "name": "Fidzí"
+ },
+ "PH": {
+ "name": "Filipín"
+ },
+ "FI": {
+ "name": "Finəlán"
+ },
+ "PL": {
+ "name": "fólis"
+ },
+ "PT": {
+ "name": "fÉ”rÉ™tugÉ›Ìs"
+ },
+ "TF": {
+ "name": "French Southern Territories"
+ },
+ "FR": {
+ "name": "Fulɛnsí"
+ },
+ "GA": {
+ "name": "Gabóŋ"
+ },
+ "GM": {
+ "name": "Gambí"
+ },
+ "GH": {
+ "name": "Ganá"
+ },
+ "GD": {
+ "name": "Gələnádə"
+ },
+ "GR": {
+ "name": "GÉ™lÉ›Ìs"
+ },
+ "GN": {
+ "name": "Giné"
+ },
+ "GW": {
+ "name": "Giné Bisaó"
+ },
+ "GQ": {
+ "name": "Giné Ekwató"
+ },
+ "GL": {
+ "name": "Goelán"
+ },
+ "GP": {
+ "name": "Guadəlúb"
+ },
+ "GU": {
+ "name": "Guám"
+ },
+ "GT": {
+ "name": "Guatemalá"
+ },
+ "GG": {
+ "name": "Guernsey"
+ },
+ "GY": {
+ "name": "Guyán"
+ },
+ "GF": {
+ "name": "Guyán yá Fulɛnsí"
+ },
+ "JM": {
+ "name": "Hamaíka"
+ },
+ "JP": {
+ "name": "HapÉ”Ìn"
+ },
+ "HK": {
+ "name": "Hong Kong SAR China"
+ },
+ "JO": {
+ "name": "Horədaní"
+ },
+ "GE": {
+ "name": "HorÉ™Ìyia"
+ },
+ "IQ": {
+ "name": "Irág"
+ },
+ "IR": {
+ "name": "Irán"
+ },
+ "IE": {
+ "name": "Irəlándə"
+ },
+ "IS": {
+ "name": "Isəlándə"
+ },
+ "IL": {
+ "name": "IsÉ™raÉ›Ìl"
+ },
+ "IM": {
+ "name": "Isle of Man"
+ },
+ "IT": {
+ "name": "Itáliɛn"
+ },
+ "JE": {
+ "name": "Jersey"
+ },
+ "KH": {
+ "name": "kambodía"
+ },
+ "CM": {
+ "name": "Kamərún"
+ },
+ "CA": {
+ "name": "kanadá"
+ },
+ "QA": {
+ "name": "Katár"
+ },
+ "KZ": {
+ "name": "Kazakətáŋ"
+ },
+ "KE": {
+ "name": "Keniá"
+ },
+ "HR": {
+ "name": "Kəlowásia"
+ },
+ "KI": {
+ "name": "Kiribatí"
+ },
+ "KG": {
+ "name": "Kirigisətán"
+ },
+ "CI": {
+ "name": "Kód DivÉ”Ìr"
+ },
+ "CO": {
+ "name": "Kolɔmbí"
+ },
+ "KM": {
+ "name": "KomÉ”Ìr"
+ },
+ "CG": {
+ "name": "Kongó"
+ },
+ "KP": {
+ "name": "Koré yá Nór"
+ },
+ "KR": {
+ "name": "Koré yá Súd"
+ },
+ "XK": {
+ "name": "Kosovo"
+ },
+ "CR": {
+ "name": "Kosta Ríka"
+ },
+ "KW": {
+ "name": "KowÉ›Ìd"
+ },
+ "ES": {
+ "name": "Kpənyá"
+ },
+ "CU": {
+ "name": "Kubá"
+ },
+ "LA": {
+ "name": "Laós"
+ },
+ "LS": {
+ "name": "Ləsotó"
+ },
+ "LV": {
+ "name": "Lətoní"
+ },
+ "LB": {
+ "name": "Libáŋ"
+ },
+ "LR": {
+ "name": "Libéria"
+ },
+ "LY": {
+ "name": "Libí"
+ },
+ "LI": {
+ "name": "LísÉ™ÌsÉ™Ìtáin"
+ },
+ "LT": {
+ "name": "Lituaní"
+ },
+ "LU": {
+ "name": "Lukəzambúd"
+ },
+ "MO": {
+ "name": "Macau SAR China"
+ },
+ "MG": {
+ "name": "Madagasəkárə"
+ },
+ "MW": {
+ "name": "Malawí"
+ },
+ "MV": {
+ "name": "Malədívə"
+ },
+ "MT": {
+ "name": "Málətə"
+ },
+ "MY": {
+ "name": "MalÉ›Ìzia"
+ },
+ "ML": {
+ "name": "Malí"
+ },
+ "MQ": {
+ "name": "Marətiníg"
+ },
+ "MA": {
+ "name": "MarÉ”Ìg"
+ },
+ "MK": {
+ "name": "Masedónia"
+ },
+ "YT": {
+ "name": "MayÉ”Ìd"
+ },
+ "MX": {
+ "name": "Mɛkəsíg"
+ },
+ "MM": {
+ "name": "Mianəmár"
+ },
+ "FM": {
+ "name": "Mikoronésia"
+ },
+ "VI": {
+ "name": "Minlán Mi Amɛrəkə"
+ },
+ "FK": {
+ "name": "Minlán Mi Fóləkəlan"
+ },
+ "CV": {
+ "name": "Minlán Mí Káb Vɛr"
+ },
+ "KY": {
+ "name": "Minlán Mí Kalimáŋ"
+ },
+ "CK": {
+ "name": "Minlán Mí kúg"
+ },
+ "MH": {
+ "name": "Minlán Mí Maresál"
+ },
+ "MP": {
+ "name": "Minlán Mi Marián yá Nór"
+ },
+ "SB": {
+ "name": "Minlán Mí SolomÉ”Ìn"
+ },
+ "TC": {
+ "name": "Minlán Mí túrÉ™Ìg-ai-Kaíg"
+ },
+ "NF": {
+ "name": "Minlán NÉ”rÉ™fÉ”ÌlÉ™kÉ™"
+ },
+ "MD": {
+ "name": "Molədaví"
+ },
+ "ME": {
+ "name": "Montenegro"
+ },
+ "MU": {
+ "name": "Morís"
+ },
+ "MR": {
+ "name": "Moritaní"
+ },
+ "MZ": {
+ "name": "Mozambíg"
+ },
+ "MC": {
+ "name": "Mɔnakó"
+ },
+ "MN": {
+ "name": "MÉ”ngÉ”Ìlia"
+ },
+ "MS": {
+ "name": "MÉ”Ìntserád"
+ },
+ "NA": {
+ "name": "Namibí"
+ },
+ "NR": {
+ "name": "Naurú"
+ },
+ "DE": {
+ "name": "Ndzáman"
+ },
+ "NP": {
+ "name": "Nepál"
+ },
+ "SM": {
+ "name": "Ǹfúfúb Maríno"
+ },
+ "SH": {
+ "name": "Ǹfúfúb-ÆlÉ›Ìna"
+ },
+ "KN": {
+ "name": "Ǹfúfúb-Kilisətóv-ai-Nevis"
+ },
+ "LC": {
+ "name": "Ǹfúfúb-Lúsia"
+ },
+ "PM": {
+ "name": "Ǹfúfúb-Píɛr-ai-MikÉ™lÉ”ÌÅ‹"
+ },
+ "VC": {
+ "name": "Ǹfúfúb-Vɛngəsáŋ-ai-Bə Gələnadín"
+ },
+ "NG": {
+ "name": "Nihéria"
+ },
+ "NE": {
+ "name": "NihÉ›Ìr"
+ },
+ "NI": {
+ "name": "Nikarágua"
+ },
+ "NU": {
+ "name": "Niué"
+ },
+ "NC": {
+ "name": "Ǹkpámɛn Kaledónia"
+ },
+ "NZ": {
+ "name": "Ǹkpámɛn Zeláŋ"
+ },
+ "US": {
+ "name": "Ǹnam Amɛrəkə"
+ },
+ "GB": {
+ "name": "Ǹnam Engəlis"
+ },
+ "IO": {
+ "name": "ǹnam É›ngÉ™lís yá Máŋ mÉ™Ì É›ÌndÉ™"
+ },
+ "CD": {
+ "name": "ǹnam Kongó Demokəlatíg"
+ },
+ "VG": {
+ "name": "Å„nam Minlán É›ÌngÉ™lís"
+ },
+ "PS": {
+ "name": "Ǹnam Palɛsətín"
+ },
+ "CZ": {
+ "name": "Ǹnam TsÉ›Ìg"
+ },
+ "VA": {
+ "name": "Ǹnam Vatikán"
+ },
+ "CF": {
+ "name": "ǹnam Zǎŋ Afiriká"
+ },
+ "NO": {
+ "name": "NÉ”rÉ™vÉ›Ìs"
+ },
+ "OM": {
+ "name": "Omán"
+ },
+ "HN": {
+ "name": "Ondurás"
+ },
+ "HU": {
+ "name": "Ongirí"
+ },
+ "AU": {
+ "name": "Osətəlalí"
+ },
+ "AT": {
+ "name": "Osətəlía"
+ },
+ "PK": {
+ "name": "Pakisətán"
+ },
+ "PW": {
+ "name": "Palau"
+ },
+ "PA": {
+ "name": "Panamá"
+ },
+ "PG": {
+ "name": "Papwazi yá ǸkpámÉ›Ìn Giné"
+ },
+ "PY": {
+ "name": "Paragué"
+ },
+ "PE": {
+ "name": "Perú"
+ },
+ "NL": {
+ "name": "Pɛíbá"
+ },
+ "PN": {
+ "name": "PítÉ™ÌkÉ›ÌrÉ›nÉ™"
+ },
+ "PF": {
+ "name": "Polinesí yá Fulɛnsí"
+ },
+ "PR": {
+ "name": "Pwɛrəto Ríko"
+ },
+ "DO": {
+ "name": "République dominicaine"
+ },
+ "RE": {
+ "name": "ReuniÉ”ÌÅ‹"
+ },
+ "RO": {
+ "name": "Rumaní"
+ },
+ "RU": {
+ "name": "Rúsian"
+ },
+ "RW": {
+ "name": "Ruwandá"
+ },
+ "SV": {
+ "name": "Saləvadór"
+ },
+ "WS": {
+ "name": "Samoá"
+ },
+ "ST": {
+ "name": "Saó Tomé ai Pəlinəsípe"
+ },
+ "SN": {
+ "name": "Senegál"
+ },
+ "RS": {
+ "name": "Serbia"
+ },
+ "SK": {
+ "name": "Səlovakí"
+ },
+ "SI": {
+ "name": "Səlovénia"
+ },
+ "LK": {
+ "name": "Səri Laŋká"
+ },
+ "SC": {
+ "name": "SÉ›sÉ›Ìl"
+ },
+ "SL": {
+ "name": "Sierá-leónə"
+ },
+ "SG": {
+ "name": "Singapúr"
+ },
+ "SX": {
+ "name": "Sint Maarten"
+ },
+ "CY": {
+ "name": "Sipəlús"
+ },
+ "SY": {
+ "name": "Sirí"
+ },
+ "SO": {
+ "name": "Somália"
+ },
+ "GS": {
+ "name": "South Georgia & South Sandwich Islands"
+ },
+ "SS": {
+ "name": "South Sudan"
+ },
+ "BL": {
+ "name": "St. Barthélemy"
+ },
+ "MF": {
+ "name": "St. Martin"
+ },
+ "SD": {
+ "name": "Sudáŋ"
+ },
+ "CH": {
+ "name": "Suís"
+ },
+ "SR": {
+ "name": "Surinám"
+ },
+ "SE": {
+ "name": "SuwÉ›Ìd"
+ },
+ "SJ": {
+ "name": "Svalbard & Jan Mayen"
+ },
+ "SZ": {
+ "name": "Swazilándə"
+ },
+ "TJ": {
+ "name": "Tadzikisətáŋ"
+ },
+ "TH": {
+ "name": "Tailán"
+ },
+ "TW": {
+ "name": "Taiwán"
+ },
+ "TZ": {
+ "name": "Taŋəzaní"
+ },
+ "TT": {
+ "name": "Təlinité-ai-Tobágo"
+ },
+ "TL": {
+ "name": "Timôr"
+ },
+ "TG": {
+ "name": "Togó"
+ },
+ "TK": {
+ "name": "Tokeló"
+ },
+ "TO": {
+ "name": "Tɔngá"
+ },
+ "TA": {
+ "name": "Tristan da Cunha"
+ },
+ "TD": {
+ "name": "Tsád"
+ },
+ "CN": {
+ "name": "Tsáina"
+ },
+ "CL": {
+ "name": "Tsilí"
+ },
+ "TN": {
+ "name": "Tunisí"
+ },
+ "TM": {
+ "name": "Turəkəmənisətáŋ"
+ },
+ "TR": {
+ "name": "Turəkí"
+ },
+ "TV": {
+ "name": "Tuvalú"
+ },
+ "UM": {
+ "name": "U.S. Outlying Islands"
+ },
+ "UG": {
+ "name": "Ugandá"
+ },
+ "UA": {
+ "name": "UkÉ™rÉ›Ìn"
+ },
+ "UY": {
+ "name": "Urugué"
+ },
+ "UZ": {
+ "name": "Uzubekisətán"
+ },
+ "VU": {
+ "name": "Vanuátu"
+ },
+ "VE": {
+ "name": "Venezuéla"
+ },
+ "VN": {
+ "name": "Viɛdənám"
+ },
+ "WF": {
+ "name": "Walís-ai-Futúna"
+ },
+ "EH": {
+ "name": "Western Sahara"
+ },
+ "YE": {
+ "name": "YemÉ›Ìn"
+ },
+ "GI": {
+ "name": "Yiləbalatár"
+ },
+ "ZM": {
+ "name": "Zambí"
+ },
+ "ZW": {
+ "name": "Zimbabwé"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/country/fa-AF.json b/library/intl/resources/country/fa-AF.json
new file mode 100644
index 000000000..f85b42df4
--- /dev/null
+++ b/library/intl/resources/country/fa-AF.json
@@ -0,0 +1,761 @@
+{
+ "AW": {
+ "name": "آروبا"
+ },
+ "AU": {
+ "name": "آسترالیا"
+ },
+ "DE": {
+ "name": "آلمان"
+ },
+ "AI": {
+ "name": "آنگویلا"
+ },
+ "IE": {
+ "name": "آیرلند"
+ },
+ "IS": {
+ "name": "آیسلند"
+ },
+ "AT": {
+ "name": "اتریش"
+ },
+ "AR": {
+ "name": "ارجنتاین"
+ },
+ "JO": {
+ "name": "اردن"
+ },
+ "AM": {
+ "name": "ارمنستان"
+ },
+ "ER": {
+ "name": "اریتریا"
+ },
+ "UZ": {
+ "name": "ازبکستان"
+ },
+ "EE": {
+ "name": "استونیا"
+ },
+ "IL": {
+ "name": "اسرائیل"
+ },
+ "SJ": {
+ "name": "اسوالبارد و جان‌ماین"
+ },
+ "ZA": {
+ "name": "اÙریقای جنوبی"
+ },
+ "CF": {
+ "name": "اÙریقای مرکزی"
+ },
+ "AF": {
+ "name": "اÙغانستان"
+ },
+ "UA": {
+ "name": "اکراین"
+ },
+ "EC": {
+ "name": "اکوادور"
+ },
+ "AL": {
+ "name": "البانیا"
+ },
+ "DZ": {
+ "name": "الجزایر"
+ },
+ "SV": {
+ "name": "السلوادور"
+ },
+ "AE": {
+ "name": "امارات متحدهٔ عربی"
+ },
+ "AG": {
+ "name": "انتیگوا و باربودا"
+ },
+ "AD": {
+ "name": "اندورا"
+ },
+ "ID": {
+ "name": "اندونیزیا"
+ },
+ "AO": {
+ "name": "انگولا"
+ },
+ "UG": {
+ "name": "اوگاندا"
+ },
+ "US": {
+ "name": "ایالات متحدهٔ امریکا"
+ },
+ "IT": {
+ "name": "ایتالیا"
+ },
+ "ET": {
+ "name": "ایتوپیا"
+ },
+ "IR": {
+ "name": "ایران"
+ },
+ "BB": {
+ "name": "باربادوس"
+ },
+ "BH": {
+ "name": "بحرین"
+ },
+ "BR": {
+ "name": "برازیل"
+ },
+ "BM": {
+ "name": "برمودا"
+ },
+ "BN": {
+ "name": "برونی"
+ },
+ "GB": {
+ "name": "بریتانیا"
+ },
+ "BE": {
+ "name": "بلجیم"
+ },
+ "BG": {
+ "name": "بلغاریا"
+ },
+ "BZ": {
+ "name": "بلیز"
+ },
+ "BD": {
+ "name": "بنگله‌دیش"
+ },
+ "BJ": {
+ "name": "بنین"
+ },
+ "BS": {
+ "name": "بهاماس"
+ },
+ "BT": {
+ "name": "بوتان"
+ },
+ "BW": {
+ "name": "بوتسوانا"
+ },
+ "BF": {
+ "name": "بورکیناÙاسو"
+ },
+ "BI": {
+ "name": "بوروندی"
+ },
+ "BA": {
+ "name": "بوسنیا و هرزه‌گوینا"
+ },
+ "BO": {
+ "name": "بولیویا"
+ },
+ "PG": {
+ "name": "پاپوا نیو گینیا"
+ },
+ "PY": {
+ "name": "پاراگوای"
+ },
+ "PK": {
+ "name": "پاکستان"
+ },
+ "PW": {
+ "name": "پالائو"
+ },
+ "PA": {
+ "name": "پانامه"
+ },
+ "PT": {
+ "name": "پرتگال"
+ },
+ "PF": {
+ "name": "پلی‌نزی Ùرانسه"
+ },
+ "PR": {
+ "name": "پورتوریکو"
+ },
+ "PL": {
+ "name": "پولند"
+ },
+ "PE": {
+ "name": "پیرو"
+ },
+ "TJ": {
+ "name": "تاجکستان"
+ },
+ "TZ": {
+ "name": "تانزانیا"
+ },
+ "TH": {
+ "name": "تایلند"
+ },
+ "TW": {
+ "name": "تایوان"
+ },
+ "TM": {
+ "name": "ترکمنستان"
+ },
+ "TR": {
+ "name": "ترکیه"
+ },
+ "TA": {
+ "name": "تریستان دا کونا"
+ },
+ "TT": {
+ "name": "ترینیداد و توباگو"
+ },
+ "TK": {
+ "name": "توکلائو"
+ },
+ "TG": {
+ "name": "توگو"
+ },
+ "TN": {
+ "name": "تونس"
+ },
+ "TO": {
+ "name": "تونگا"
+ },
+ "TV": {
+ "name": "تووالو"
+ },
+ "TL": {
+ "name": "تیمور شرقی"
+ },
+ "JP": {
+ "name": "جاپان"
+ },
+ "JM": {
+ "name": "جامائیکا"
+ },
+ "GI": {
+ "name": "جبل‌الطارق"
+ },
+ "JE": {
+ "name": "جرزی"
+ },
+ "AC": {
+ "name": "جزایر آسنسیون"
+ },
+ "AX": {
+ "name": "جزایر اÙلند"
+ },
+ "PN": {
+ "name": "جزایر پیت‌کرن"
+ },
+ "TC": {
+ "name": "جزایر تورکس و کایکوس"
+ },
+ "GS": {
+ "name": "جزایر جورجیای جنوبی و ساندویچ جنوبی"
+ },
+ "UM": {
+ "name": "جزایر دوراÙتادهٔ ایالات متحده"
+ },
+ "SB": {
+ "name": "جزایر سلومون"
+ },
+ "FO": {
+ "name": "جزایر Ùارو"
+ },
+ "FK": {
+ "name": "جزایر Ùالکلند"
+ },
+ "IC": {
+ "name": "جزایر قناری"
+ },
+ "BQ": {
+ "name": "جزایر کارائیب هلند"
+ },
+ "CK": {
+ "name": "جزایر کوک"
+ },
+ "CC": {
+ "name": "جزایر کوکوس (کیلینگ)"
+ },
+ "KY": {
+ "name": "جزایر Ú©Ùیمن"
+ },
+ "MH": {
+ "name": "جزایر مارشال"
+ },
+ "MP": {
+ "name": "جزایر ماریانای شمالی"
+ },
+ "VI": {
+ "name": "جزایر ویرجین ایالات متحده"
+ },
+ "VG": {
+ "name": "جزایر ویرجین بریتانیا"
+ },
+ "CX": {
+ "name": "جزیرهٔ کریسمس"
+ },
+ "IM": {
+ "name": "جزیرهٔ من"
+ },
+ "NF": {
+ "name": "جزیره نورÙÚ©"
+ },
+ "AZ": {
+ "name": "جمهوری آذربایجان"
+ },
+ "CZ": {
+ "name": "جمهوری چک"
+ },
+ "CD": {
+ "name": "جمهوری دموکراتیک کانگو"
+ },
+ "DO": {
+ "name": "جمهوری دومینیکن"
+ },
+ "AQ": {
+ "name": "جنوبگان"
+ },
+ "DJ": {
+ "name": "جیبوتی"
+ },
+ "TD": {
+ "name": "چاد"
+ },
+ "CL": {
+ "name": "چلی"
+ },
+ "CN": {
+ "name": "چین"
+ },
+ "DK": {
+ "name": "دنمارک"
+ },
+ "DM": {
+ "name": "دومینیکا"
+ },
+ "DG": {
+ "name": "دیه‌گو گارسیا"
+ },
+ "RW": {
+ "name": "روآندا"
+ },
+ "RU": {
+ "name": "روسیه"
+ },
+ "BY": {
+ "name": "روسیهٔ سÙید"
+ },
+ "RO": {
+ "name": "رومانیا"
+ },
+ "RE": {
+ "name": "رئونیون"
+ },
+ "ZM": {
+ "name": "زامبیا"
+ },
+ "NZ": {
+ "name": "زیلاند جدید"
+ },
+ "ZW": {
+ "name": "زیمبابوی"
+ },
+ "CI": {
+ "name": "ساحل عاج"
+ },
+ "WS": {
+ "name": "ساموآ"
+ },
+ "AS": {
+ "name": "ساموآی آمریکا"
+ },
+ "ST": {
+ "name": "سائو تومه و پرینسیپ"
+ },
+ "EA": {
+ "name": "سبته و ملیله"
+ },
+ "PS": {
+ "name": "سرزمین‌های Ùلسطینی"
+ },
+ "LK": {
+ "name": "سریلانکا"
+ },
+ "SK": {
+ "name": "سلواکیا"
+ },
+ "SI": {
+ "name": "سلونیا"
+ },
+ "BL": {
+ "name": "سن بارتلمی"
+ },
+ "PM": {
+ "name": "سن پیر و میکلن"
+ },
+ "SM": {
+ "name": "سن مارینو"
+ },
+ "KN": {
+ "name": "سنت کیتس و نیویس"
+ },
+ "LC": {
+ "name": "سنت لوسیا"
+ },
+ "SX": {
+ "name": "سنت مارتن"
+ },
+ "MF": {
+ "name": "سنت مارتین"
+ },
+ "SH": {
+ "name": "سنت هلن"
+ },
+ "VC": {
+ "name": "سنت وینسنت و گرینادین"
+ },
+ "SZ": {
+ "name": "سوازیلند"
+ },
+ "SD": {
+ "name": "سودان"
+ },
+ "SS": {
+ "name": "سودان جنوبی"
+ },
+ "SR": {
+ "name": "سورینام"
+ },
+ "SY": {
+ "name": "سوریه"
+ },
+ "SO": {
+ "name": "سومالیه"
+ },
+ "SE": {
+ "name": "سویدن"
+ },
+ "CH": {
+ "name": "سویس"
+ },
+ "SL": {
+ "name": "سیرالیون"
+ },
+ "SC": {
+ "name": "سیشل"
+ },
+ "SG": {
+ "name": "سینگاپور"
+ },
+ "SN": {
+ "name": "سینیگال"
+ },
+ "EH": {
+ "name": "صحرای غربی"
+ },
+ "RS": {
+ "name": "صربستان"
+ },
+ "IQ": {
+ "name": "عراق"
+ },
+ "SA": {
+ "name": "عربستان سعودی"
+ },
+ "OM": {
+ "name": "عمان"
+ },
+ "GH": {
+ "name": "غنا"
+ },
+ "FR": {
+ "name": "Ùرانسه"
+ },
+ "FI": {
+ "name": "Ùنلند"
+ },
+ "FJ": {
+ "name": "Ùیجی"
+ },
+ "PH": {
+ "name": "Ùیلیپین"
+ },
+ "CY": {
+ "name": "قبرس"
+ },
+ "KG": {
+ "name": "قرغزستان"
+ },
+ "KZ": {
+ "name": "قزاقستان"
+ },
+ "QA": {
+ "name": "قطر"
+ },
+ "IO": {
+ "name": "قلمرو بریتانیا در اقیانوس هند"
+ },
+ "TF": {
+ "name": "قلمروهای جنوبی Ùرانسه"
+ },
+ "CR": {
+ "name": "کاستریکا"
+ },
+ "NC": {
+ "name": "کالدونیای جدید"
+ },
+ "CM": {
+ "name": "کامرون"
+ },
+ "CA": {
+ "name": "کانادا"
+ },
+ "CG": {
+ "name": "کانگو"
+ },
+ "HR": {
+ "name": "کروشیا"
+ },
+ "KH": {
+ "name": "کمپوچیا"
+ },
+ "CW": {
+ "name": "کوراسائو"
+ },
+ "KR": {
+ "name": "کوریای جنوبی"
+ },
+ "KP": {
+ "name": "کوریای شمالی"
+ },
+ "XK": {
+ "name": "کوزوو"
+ },
+ "CO": {
+ "name": "کولمبیا"
+ },
+ "KM": {
+ "name": "کومور"
+ },
+ "KW": {
+ "name": "کویت"
+ },
+ "CV": {
+ "name": "کیپ‌ورد"
+ },
+ "KI": {
+ "name": "کیریباتی"
+ },
+ "KE": {
+ "name": "کینیا"
+ },
+ "CU": {
+ "name": "کیوبا"
+ },
+ "GA": {
+ "name": "گابن"
+ },
+ "GM": {
+ "name": "گامبیا"
+ },
+ "GE": {
+ "name": "گرجستان"
+ },
+ "GG": {
+ "name": "گرنزی"
+ },
+ "GD": {
+ "name": "گرینادا"
+ },
+ "GL": {
+ "name": "گرینلند"
+ },
+ "GT": {
+ "name": "گواتیمالا"
+ },
+ "GP": {
+ "name": "گوادلوپ"
+ },
+ "GU": {
+ "name": "گوام"
+ },
+ "GF": {
+ "name": "گویان Ùرانسه"
+ },
+ "GY": {
+ "name": "گیانا"
+ },
+ "GN": {
+ "name": "گینیا"
+ },
+ "GQ": {
+ "name": "گینیا استوایی"
+ },
+ "GW": {
+ "name": "گینیا بیسائو"
+ },
+ "LV": {
+ "name": "لاتویا"
+ },
+ "LA": {
+ "name": "لائوس"
+ },
+ "LB": {
+ "name": "لبنان"
+ },
+ "LT": {
+ "name": "لتوانیا"
+ },
+ "LU": {
+ "name": "لوکزامبورگ"
+ },
+ "LR": {
+ "name": "لیبریا"
+ },
+ "LY": {
+ "name": "لیبیا"
+ },
+ "LI": {
+ "name": "لیختن‌اشتاین"
+ },
+ "LS": {
+ "name": "لیسوتو"
+ },
+ "MG": {
+ "name": "مادغاسکر"
+ },
+ "MQ": {
+ "name": "مارتینیک"
+ },
+ "MO": {
+ "name": "ماکائو، ناحیهٔ ویژهٔ حکومتی چین"
+ },
+ "MW": {
+ "name": "مالاوی"
+ },
+ "MT": {
+ "name": "مالتا"
+ },
+ "MV": {
+ "name": "مالدیو"
+ },
+ "ML": {
+ "name": "مالی"
+ },
+ "MY": {
+ "name": "مالیزیا"
+ },
+ "YT": {
+ "name": "مایوت"
+ },
+ "HU": {
+ "name": "مجارستان"
+ },
+ "MA": {
+ "name": "مراکش"
+ },
+ "EG": {
+ "name": "مصر"
+ },
+ "MK": {
+ "name": "مقدونیه"
+ },
+ "MX": {
+ "name": "مکسیکو"
+ },
+ "MN": {
+ "name": "منگولیا"
+ },
+ "MR": {
+ "name": "موریتانیا"
+ },
+ "MU": {
+ "name": "موریس"
+ },
+ "MZ": {
+ "name": "موزمبیق"
+ },
+ "MD": {
+ "name": "مولداوی"
+ },
+ "MC": {
+ "name": "موناکو"
+ },
+ "MS": {
+ "name": "مونت‌سرات"
+ },
+ "ME": {
+ "name": "مونته‌نگرو"
+ },
+ "MM": {
+ "name": "میانمار (برمه)"
+ },
+ "FM": {
+ "name": "میکرونزیا"
+ },
+ "NO": {
+ "name": "ناروی"
+ },
+ "NA": {
+ "name": "نامیبیا"
+ },
+ "NR": {
+ "name": "نائورو"
+ },
+ "NP": {
+ "name": "نیپال"
+ },
+ "NE": {
+ "name": "نیجر"
+ },
+ "NG": {
+ "name": "نیجریا"
+ },
+ "NI": {
+ "name": "نیکاراگوا"
+ },
+ "NU": {
+ "name": "نیوئه"
+ },
+ "NL": {
+ "name": "هالند"
+ },
+ "HN": {
+ "name": "هاندوراس"
+ },
+ "HT": {
+ "name": "هایتی"
+ },
+ "ES": {
+ "name": "هسپانیه"
+ },
+ "IN": {
+ "name": "هند"
+ },
+ "HK": {
+ "name": "هنگ‌کنگ، ناحیهٔ ویژهٔ حکومتی چین"
+ },
+ "VA": {
+ "name": "واتیکان"
+ },
+ "WF": {
+ "name": "والیس Ùˆ Ùوتونا"
+ },
+ "VU": {
+ "name": "وانواتو"
+ },
+ "VE": {
+ "name": "ونزویلا"
+ },
+ "VN": {
+ "name": "ویتنام"
+ },
+ "YE": {
+ "name": "یمن"
+ },
+ "UY": {
+ "name": "یوروگوای"
+ },
+ "GR": {
+ "name": "یونان"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/country/fa.json b/library/intl/resources/country/fa.json
new file mode 100644
index 000000000..e79fafbd8
--- /dev/null
+++ b/library/intl/resources/country/fa.json
@@ -0,0 +1,761 @@
+{
+ "AR": {
+ "name": "آرژانتین"
+ },
+ "AW": {
+ "name": "آروبا"
+ },
+ "AL": {
+ "name": "آلبانی"
+ },
+ "DE": {
+ "name": "آلمان"
+ },
+ "AG": {
+ "name": "آنتیگوا و باربودا"
+ },
+ "AD": {
+ "name": "آندورا"
+ },
+ "AO": {
+ "name": "آنگولا"
+ },
+ "AI": {
+ "name": "آنگویلا"
+ },
+ "AT": {
+ "name": "اتریش"
+ },
+ "ET": {
+ "name": "اتیوپی"
+ },
+ "JO": {
+ "name": "اردن"
+ },
+ "AM": {
+ "name": "ارمنستان"
+ },
+ "UY": {
+ "name": "اروگوئه"
+ },
+ "ER": {
+ "name": "اریتره"
+ },
+ "UZ": {
+ "name": "ازبکستان"
+ },
+ "ES": {
+ "name": "اسپانیا"
+ },
+ "AU": {
+ "name": "استرالیا"
+ },
+ "EE": {
+ "name": "استونی"
+ },
+ "IL": {
+ "name": "اسرائیل"
+ },
+ "SK": {
+ "name": "اسلواکی"
+ },
+ "SI": {
+ "name": "اسلوونی"
+ },
+ "SJ": {
+ "name": "اسوالبارد و جان‌ماین"
+ },
+ "ZA": {
+ "name": "اÙریقای جنوبی"
+ },
+ "AF": {
+ "name": "اÙغانستان"
+ },
+ "EC": {
+ "name": "اکوادور"
+ },
+ "DZ": {
+ "name": "الجزایر"
+ },
+ "SV": {
+ "name": "السالوادور"
+ },
+ "AE": {
+ "name": "امارات متحدهٔ عربی"
+ },
+ "ID": {
+ "name": "اندونزی"
+ },
+ "UA": {
+ "name": "اوکراین"
+ },
+ "UG": {
+ "name": "اوگاندا"
+ },
+ "US": {
+ "name": "ایالات متحدهٔ امریکا"
+ },
+ "IT": {
+ "name": "ایتالیا"
+ },
+ "IR": {
+ "name": "ایران"
+ },
+ "IE": {
+ "name": "ایرلند"
+ },
+ "IS": {
+ "name": "ایسلند"
+ },
+ "BB": {
+ "name": "باربادوس"
+ },
+ "BS": {
+ "name": "باهاما"
+ },
+ "BH": {
+ "name": "بحرین"
+ },
+ "BR": {
+ "name": "برزیل"
+ },
+ "BM": {
+ "name": "برمودا"
+ },
+ "BN": {
+ "name": "برونئی"
+ },
+ "GB": {
+ "name": "بریتانیا"
+ },
+ "BY": {
+ "name": "بلاروس"
+ },
+ "BE": {
+ "name": "بلژیک"
+ },
+ "BG": {
+ "name": "بلغارستان"
+ },
+ "BZ": {
+ "name": "بلیز"
+ },
+ "BD": {
+ "name": "بنگلادش"
+ },
+ "BJ": {
+ "name": "بنین"
+ },
+ "BT": {
+ "name": "بوتان"
+ },
+ "BW": {
+ "name": "بوتسوانا"
+ },
+ "BF": {
+ "name": "بورکیناÙاسو"
+ },
+ "BI": {
+ "name": "بوروندی"
+ },
+ "BA": {
+ "name": "بوسنی و هرزگوین"
+ },
+ "BO": {
+ "name": "بولیوی"
+ },
+ "PG": {
+ "name": "پاپوا گینهٔ نو"
+ },
+ "PY": {
+ "name": "پاراگوئه"
+ },
+ "PK": {
+ "name": "پاکستان"
+ },
+ "PW": {
+ "name": "پالائو"
+ },
+ "PA": {
+ "name": "پاناما"
+ },
+ "PT": {
+ "name": "پرتغال"
+ },
+ "PE": {
+ "name": "پرو"
+ },
+ "PF": {
+ "name": "پلی‌نزی Ùرانسه"
+ },
+ "PR": {
+ "name": "پورتوریکو"
+ },
+ "TJ": {
+ "name": "تاجیکستان"
+ },
+ "TZ": {
+ "name": "تانزانیا"
+ },
+ "TH": {
+ "name": "تایلند"
+ },
+ "TW": {
+ "name": "تایوان"
+ },
+ "TM": {
+ "name": "ترکمنستان"
+ },
+ "TR": {
+ "name": "ترکیه"
+ },
+ "TA": {
+ "name": "تریستان دا کونا"
+ },
+ "TT": {
+ "name": "ترینیداد و توباگو"
+ },
+ "TK": {
+ "name": "توکلائو"
+ },
+ "TG": {
+ "name": "توگو"
+ },
+ "TN": {
+ "name": "تونس"
+ },
+ "TO": {
+ "name": "تونگا"
+ },
+ "TV": {
+ "name": "تووالو"
+ },
+ "TL": {
+ "name": "تیمور شرقی"
+ },
+ "JM": {
+ "name": "جامائیکا"
+ },
+ "GI": {
+ "name": "جبل‌الطارق"
+ },
+ "JE": {
+ "name": "جرزی"
+ },
+ "AC": {
+ "name": "جزایر آسنسیون"
+ },
+ "AX": {
+ "name": "جزایر اÙلند"
+ },
+ "PN": {
+ "name": "جزایر پیت‌کرن"
+ },
+ "TC": {
+ "name": "جزایر تورکس و کایکوس"
+ },
+ "GS": {
+ "name": "جزایر جورجیای جنوبی و ساندویچ جنوبی"
+ },
+ "UM": {
+ "name": "جزایر دوراÙتادهٔ ایالات متحده"
+ },
+ "SB": {
+ "name": "جزایر سلیمان"
+ },
+ "FO": {
+ "name": "جزایر Ùارو"
+ },
+ "FK": {
+ "name": "جزایر Ùالکلند"
+ },
+ "IC": {
+ "name": "جزایر قناری"
+ },
+ "BQ": {
+ "name": "جزایر کارائیب هلند"
+ },
+ "CK": {
+ "name": "جزایر کوک"
+ },
+ "CC": {
+ "name": "جزایر کوکوس (کیلینگ)"
+ },
+ "KY": {
+ "name": "جزایر Ú©Ùیمن"
+ },
+ "MH": {
+ "name": "جزایر مارشال"
+ },
+ "MP": {
+ "name": "جزایر ماریانای شمالی"
+ },
+ "VI": {
+ "name": "جزایر ویرجین ایالات متحده"
+ },
+ "VG": {
+ "name": "جزایر ویرجین بریتانیا"
+ },
+ "CX": {
+ "name": "جزیرهٔ کریسمس"
+ },
+ "IM": {
+ "name": "جزیرهٔ من"
+ },
+ "NF": {
+ "name": "جزیره نورÙÚ©"
+ },
+ "AZ": {
+ "name": "جمهوری آذربایجان"
+ },
+ "CF": {
+ "name": "جمهوری اÙریقای مرکزی"
+ },
+ "CZ": {
+ "name": "جمهوری چک"
+ },
+ "DO": {
+ "name": "جمهوری دومینیکن"
+ },
+ "AQ": {
+ "name": "جنوبگان"
+ },
+ "DJ": {
+ "name": "جیبوتی"
+ },
+ "TD": {
+ "name": "چاد"
+ },
+ "CN": {
+ "name": "چین"
+ },
+ "DK": {
+ "name": "دانمارک"
+ },
+ "DM": {
+ "name": "دومینیکا"
+ },
+ "DG": {
+ "name": "دیه‌گو گارسیا"
+ },
+ "RE": {
+ "name": "رئونیون"
+ },
+ "RW": {
+ "name": "رواندا"
+ },
+ "RU": {
+ "name": "روسیه"
+ },
+ "RO": {
+ "name": "رومانی"
+ },
+ "ZM": {
+ "name": "زامبیا"
+ },
+ "NZ": {
+ "name": "زلاند نو"
+ },
+ "ZW": {
+ "name": "زیمبابوه"
+ },
+ "JP": {
+ "name": "ژاپن"
+ },
+ "ST": {
+ "name": "سائوتومه و پرینسیپ"
+ },
+ "CI": {
+ "name": "ساحل عاج"
+ },
+ "WS": {
+ "name": "ساموآ"
+ },
+ "AS": {
+ "name": "ساموآی آمریکا"
+ },
+ "EA": {
+ "name": "سبته و ملیله"
+ },
+ "PS": {
+ "name": "سرزمین‌های Ùلسطینی"
+ },
+ "LK": {
+ "name": "سری‌لانکا"
+ },
+ "BL": {
+ "name": "سن بارتلمی"
+ },
+ "PM": {
+ "name": "سن پیر و میکلن"
+ },
+ "SM": {
+ "name": "سن مارینو"
+ },
+ "KN": {
+ "name": "سنت کیتس و نویس"
+ },
+ "LC": {
+ "name": "سنت لوسیا"
+ },
+ "SX": {
+ "name": "سنت مارتن"
+ },
+ "MF": {
+ "name": "سنت مارتین"
+ },
+ "VC": {
+ "name": "سنت وینسنت و گرنادین‌ها"
+ },
+ "SH": {
+ "name": "سنت هلن"
+ },
+ "SG": {
+ "name": "سنگاپور"
+ },
+ "SN": {
+ "name": "سنگال"
+ },
+ "SZ": {
+ "name": "سوازیلند"
+ },
+ "SE": {
+ "name": "سوئد"
+ },
+ "CH": {
+ "name": "سوئیس"
+ },
+ "SD": {
+ "name": "سودان"
+ },
+ "SS": {
+ "name": "سودان جنوبی"
+ },
+ "SR": {
+ "name": "سورینام"
+ },
+ "SY": {
+ "name": "سوریه"
+ },
+ "SO": {
+ "name": "سومالی"
+ },
+ "SL": {
+ "name": "سیرالئون"
+ },
+ "SC": {
+ "name": "سیشل"
+ },
+ "CL": {
+ "name": "شیلی"
+ },
+ "EH": {
+ "name": "صحرای غربی"
+ },
+ "RS": {
+ "name": "صربستان"
+ },
+ "IQ": {
+ "name": "عراق"
+ },
+ "SA": {
+ "name": "عربستان سعودی"
+ },
+ "OM": {
+ "name": "عمان"
+ },
+ "GH": {
+ "name": "غنا"
+ },
+ "FR": {
+ "name": "Ùرانسه"
+ },
+ "FI": {
+ "name": "Ùنلاند"
+ },
+ "FJ": {
+ "name": "Ùیجی"
+ },
+ "PH": {
+ "name": "Ùیلیپین"
+ },
+ "CY": {
+ "name": "قبرس"
+ },
+ "KG": {
+ "name": "قرقیزستان"
+ },
+ "KZ": {
+ "name": "قزاقستان"
+ },
+ "QA": {
+ "name": "قطر"
+ },
+ "IO": {
+ "name": "قلمرو بریتانیا در اقیانوس هند"
+ },
+ "TF": {
+ "name": "قلمروهای جنوبی Ùرانسه"
+ },
+ "CR": {
+ "name": "کاستاریکا"
+ },
+ "NC": {
+ "name": "کالدونیای جدید"
+ },
+ "KH": {
+ "name": "کامبوج"
+ },
+ "CM": {
+ "name": "کامرون"
+ },
+ "CA": {
+ "name": "کانادا"
+ },
+ "HR": {
+ "name": "کرواسی"
+ },
+ "KR": {
+ "name": "کرهٔ جنوبی"
+ },
+ "KP": {
+ "name": "کرهٔ شمالی"
+ },
+ "CO": {
+ "name": "کلمبیا"
+ },
+ "CG": {
+ "name": "کنگو - برازویل"
+ },
+ "CD": {
+ "name": "کنگو - کینشاسا"
+ },
+ "KE": {
+ "name": "کنیا"
+ },
+ "CU": {
+ "name": "کوبا"
+ },
+ "CW": {
+ "name": "کوراسائو"
+ },
+ "XK": {
+ "name": "کوزوو"
+ },
+ "KM": {
+ "name": "کومور"
+ },
+ "KW": {
+ "name": "کویت"
+ },
+ "CV": {
+ "name": "کیپ‌ورد"
+ },
+ "KI": {
+ "name": "کیریباتی"
+ },
+ "GA": {
+ "name": "گابن"
+ },
+ "GM": {
+ "name": "گامبیا"
+ },
+ "GE": {
+ "name": "گرجستان"
+ },
+ "GD": {
+ "name": "گرنادا"
+ },
+ "GG": {
+ "name": "گرنزی"
+ },
+ "GL": {
+ "name": "گرینلند"
+ },
+ "GT": {
+ "name": "گواتمالا"
+ },
+ "GP": {
+ "name": "گوادلوپ"
+ },
+ "GU": {
+ "name": "گوام"
+ },
+ "GY": {
+ "name": "گویان"
+ },
+ "GF": {
+ "name": "گویان Ùرانسه"
+ },
+ "GN": {
+ "name": "گینه"
+ },
+ "GQ": {
+ "name": "گینهٔ استوایی"
+ },
+ "GW": {
+ "name": "گینهٔ بیسائو"
+ },
+ "LA": {
+ "name": "لائوس"
+ },
+ "LB": {
+ "name": "لبنان"
+ },
+ "LV": {
+ "name": "لتونی"
+ },
+ "LS": {
+ "name": "لسوتو"
+ },
+ "LU": {
+ "name": "لوکزامبورگ"
+ },
+ "PL": {
+ "name": "لهستان"
+ },
+ "LR": {
+ "name": "لیبریا"
+ },
+ "LY": {
+ "name": "لیبی"
+ },
+ "LT": {
+ "name": "لیتوانی"
+ },
+ "LI": {
+ "name": "لیختن‌اشتاین"
+ },
+ "MG": {
+ "name": "ماداگاسکار"
+ },
+ "MQ": {
+ "name": "مارتینیک"
+ },
+ "MO": {
+ "name": "ماکائو، ناحیهٔ ویژهٔ حکومتی چین"
+ },
+ "MW": {
+ "name": "مالاوی"
+ },
+ "MT": {
+ "name": "مالت"
+ },
+ "MV": {
+ "name": "مالدیو"
+ },
+ "MY": {
+ "name": "مالزی"
+ },
+ "ML": {
+ "name": "مالی"
+ },
+ "YT": {
+ "name": "مایوت"
+ },
+ "HU": {
+ "name": "مجارستان"
+ },
+ "MA": {
+ "name": "مراکش"
+ },
+ "EG": {
+ "name": "مصر"
+ },
+ "MN": {
+ "name": "مغولستان"
+ },
+ "MK": {
+ "name": "مقدونیه"
+ },
+ "MX": {
+ "name": "مکزیک"
+ },
+ "MR": {
+ "name": "موریتانی"
+ },
+ "MU": {
+ "name": "موریس"
+ },
+ "MZ": {
+ "name": "موزامبیک"
+ },
+ "MD": {
+ "name": "مولداوی"
+ },
+ "MC": {
+ "name": "موناکو"
+ },
+ "MS": {
+ "name": "مونت‌سرات"
+ },
+ "ME": {
+ "name": "مونته‌نگرو"
+ },
+ "MM": {
+ "name": "میانمار (برمه)"
+ },
+ "FM": {
+ "name": "میکرونزی"
+ },
+ "NR": {
+ "name": "نائورو"
+ },
+ "NA": {
+ "name": "نامیبیا"
+ },
+ "NP": {
+ "name": "نپال"
+ },
+ "NO": {
+ "name": "نروژ"
+ },
+ "NE": {
+ "name": "نیجر"
+ },
+ "NG": {
+ "name": "نیجریه"
+ },
+ "NI": {
+ "name": "نیکاراگوئه"
+ },
+ "NU": {
+ "name": "نیوئه"
+ },
+ "VA": {
+ "name": "واتیکان"
+ },
+ "WF": {
+ "name": "والیس Ùˆ Ùوتونا"
+ },
+ "VU": {
+ "name": "وانواتو"
+ },
+ "VE": {
+ "name": "ونزوئلا"
+ },
+ "VN": {
+ "name": "ویتنام"
+ },
+ "HT": {
+ "name": "هائیتی"
+ },
+ "NL": {
+ "name": "هلند"
+ },
+ "IN": {
+ "name": "هند"
+ },
+ "HN": {
+ "name": "هندوراس"
+ },
+ "HK": {
+ "name": "هنگ‌کنگ، ناحیهٔ ویژهٔ حکومتی چین"
+ },
+ "YE": {
+ "name": "یمن"
+ },
+ "GR": {
+ "name": "یونان"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/country/ff.json b/library/intl/resources/country/ff.json
new file mode 100644
index 000000000..28bb49c37
--- /dev/null
+++ b/library/intl/resources/country/ff.json
@@ -0,0 +1,761 @@
+{
+ "AF": {
+ "name": "Afganistaan"
+ },
+ "ZA": {
+ "name": "Afrik bŋ Worgo"
+ },
+ "AZ": {
+ "name": "Ajerbayjaan"
+ },
+ "AX": {
+ "name": "Ã…land Islands"
+ },
+ "DZ": {
+ "name": "Alaseri"
+ },
+ "AL": {
+ "name": "Albanii"
+ },
+ "DE": {
+ "name": "Almaañ"
+ },
+ "AD": {
+ "name": "Anndoora"
+ },
+ "AI": {
+ "name": "Anngiyaa"
+ },
+ "AO": {
+ "name": "Anngolaa"
+ },
+ "AQ": {
+ "name": "Antarctica"
+ },
+ "AG": {
+ "name": "Antiguwaa e Barbudaa"
+ },
+ "SA": {
+ "name": "Arabii Sawdit"
+ },
+ "AR": {
+ "name": "Arjantiin"
+ },
+ "AM": {
+ "name": "Armenii"
+ },
+ "AW": {
+ "name": "Aruuba"
+ },
+ "AC": {
+ "name": "Ascension Island"
+ },
+ "BS": {
+ "name": "Bahamaas"
+ },
+ "BH": {
+ "name": "Bahreyn"
+ },
+ "BD": {
+ "name": "Banglaadees"
+ },
+ "BB": {
+ "name": "Barbadoos"
+ },
+ "BY": {
+ "name": "Belaruus"
+ },
+ "BZ": {
+ "name": "Beliise"
+ },
+ "BE": {
+ "name": "Beljik"
+ },
+ "BJ": {
+ "name": "Benee"
+ },
+ "BR": {
+ "name": "Beresiil"
+ },
+ "BM": {
+ "name": "Bermudaa"
+ },
+ "BO": {
+ "name": "Boliwii"
+ },
+ "BA": {
+ "name": "Bosnii Hersegowiin"
+ },
+ "BW": {
+ "name": "Botswaana"
+ },
+ "BG": {
+ "name": "Bulgarii"
+ },
+ "BF": {
+ "name": "Burkibaa Faaso"
+ },
+ "BN": {
+ "name": "Burnaay"
+ },
+ "BI": {
+ "name": "Burunndi"
+ },
+ "BT": {
+ "name": "Butaan"
+ },
+ "TD": {
+ "name": "Caad"
+ },
+ "IC": {
+ "name": "Canary Islands"
+ },
+ "BQ": {
+ "name": "Caribbean Netherlands"
+ },
+ "EA": {
+ "name": "Ceuta & Melilla"
+ },
+ "CX": {
+ "name": "Christmas Island"
+ },
+ "CL": {
+ "name": "Cilii"
+ },
+ "CC": {
+ "name": "Cocos (Keeling) Islands"
+ },
+ "CW": {
+ "name": "Curaçao"
+ },
+ "DK": {
+ "name": "Danmark"
+ },
+ "DG": {
+ "name": "Diego Garcia"
+ },
+ "DM": {
+ "name": "Dominika"
+ },
+ "VA": {
+ "name": "Dowla Waticaan"
+ },
+ "US": {
+ "name": "Dowlaaji DentuÉ—i Amerik"
+ },
+ "FK": {
+ "name": "DuuÉ—e Falkland"
+ },
+ "CV": {
+ "name": "DuuÉ—e Kap Weer"
+ },
+ "KY": {
+ "name": "DuuÉ—e Kaymaa"
+ },
+ "VI": {
+ "name": "DuuÉ—e Kecce Amerik"
+ },
+ "VG": {
+ "name": "duuÉ—e kecce britanii"
+ },
+ "CK": {
+ "name": "DuuÉ—e Kuuk"
+ },
+ "MP": {
+ "name": "DuuÉ—e Mariyaana Rewo"
+ },
+ "MH": {
+ "name": "DuuÉ—e Marsaal"
+ },
+ "NF": {
+ "name": "DuuÉ—e Norfolk"
+ },
+ "SB": {
+ "name": "DuuÉ—e Solomon"
+ },
+ "TC": {
+ "name": "DuuÉ—e Turke e Keikoos"
+ },
+ "ET": {
+ "name": "Ecoppi"
+ },
+ "EG": {
+ "name": "Ejipt"
+ },
+ "EC": {
+ "name": "Ekuwatoor"
+ },
+ "SV": {
+ "name": "El Salwador"
+ },
+ "AE": {
+ "name": "Emiraat Araab DenntuÉ—e"
+ },
+ "IN": {
+ "name": "Enndo"
+ },
+ "ID": {
+ "name": "Enndonesii"
+ },
+ "ER": {
+ "name": "Eriteree"
+ },
+ "ES": {
+ "name": "Espaañ"
+ },
+ "EE": {
+ "name": "Estoni"
+ },
+ "FR": {
+ "name": "Farayse"
+ },
+ "FO": {
+ "name": "Faroe Islands"
+ },
+ "FI": {
+ "name": "Fenland"
+ },
+ "FJ": {
+ "name": "Fijji"
+ },
+ "PH": {
+ "name": "Filipiin"
+ },
+ "TF": {
+ "name": "French Southern Territories"
+ },
+ "GA": {
+ "name": "Gaboo"
+ },
+ "GM": {
+ "name": "Gammbi"
+ },
+ "GH": {
+ "name": "Ganaa"
+ },
+ "GD": {
+ "name": "Garnaad"
+ },
+ "GR": {
+ "name": "Gerees"
+ },
+ "GN": {
+ "name": "Gine"
+ },
+ "GW": {
+ "name": "Gine-Bisaawo"
+ },
+ "GQ": {
+ "name": "Ginee Ekuwaatoriyaal"
+ },
+ "GY": {
+ "name": "Giyaan"
+ },
+ "GF": {
+ "name": "Giyaan Farayse"
+ },
+ "GL": {
+ "name": "Gorwendland"
+ },
+ "GG": {
+ "name": "Guernsey"
+ },
+ "GU": {
+ "name": "Guwam"
+ },
+ "GP": {
+ "name": "Gwaadalup"
+ },
+ "GT": {
+ "name": "Gwaatemalaa"
+ },
+ "HT": {
+ "name": "Haytii"
+ },
+ "HK": {
+ "name": "Hong Kong SAR China"
+ },
+ "IQ": {
+ "name": "Iraak"
+ },
+ "IR": {
+ "name": "Iraan"
+ },
+ "IE": {
+ "name": "Irlannda"
+ },
+ "IS": {
+ "name": "Islannda"
+ },
+ "IM": {
+ "name": "Isle of Man"
+ },
+ "IL": {
+ "name": "Israa’iila"
+ },
+ "IT": {
+ "name": "Itali"
+ },
+ "JM": {
+ "name": "Jamayka"
+ },
+ "GE": {
+ "name": "Jeorgii"
+ },
+ "JE": {
+ "name": "Jersey"
+ },
+ "GI": {
+ "name": "Jibraltaar"
+ },
+ "DJ": {
+ "name": "Jibutii"
+ },
+ "JO": {
+ "name": "Jordani"
+ },
+ "KH": {
+ "name": "Kambodso"
+ },
+ "CM": {
+ "name": "Kameruun"
+ },
+ "CA": {
+ "name": "Kanadaa"
+ },
+ "KZ": {
+ "name": "Kasakstaan"
+ },
+ "QA": {
+ "name": "Kataar"
+ },
+ "IO": {
+ "name": "Keeriindi britaani to maayo enndo"
+ },
+ "KE": {
+ "name": "Keñaa"
+ },
+ "KG": {
+ "name": "Kirgistaan"
+ },
+ "KI": {
+ "name": "Kiribari"
+ },
+ "CI": {
+ "name": "Kodduwaar"
+ },
+ "CO": {
+ "name": "Kolombiya"
+ },
+ "KM": {
+ "name": "Komoor"
+ },
+ "CG": {
+ "name": "Konngo"
+ },
+ "KP": {
+ "name": "Koree Rewo"
+ },
+ "KR": {
+ "name": "Koree Worgo"
+ },
+ "HR": {
+ "name": "Korwasii"
+ },
+ "XK": {
+ "name": "Kosovo"
+ },
+ "CR": {
+ "name": "Kosta Rikaa"
+ },
+ "CU": {
+ "name": "Kubaa"
+ },
+ "KW": {
+ "name": "Kuweyti"
+ },
+ "GB": {
+ "name": "Laamateeri Rentundi"
+ },
+ "LA": {
+ "name": "Lawoos"
+ },
+ "LS": {
+ "name": "Lesoto"
+ },
+ "LV": {
+ "name": "Letonii"
+ },
+ "LB": {
+ "name": "Libaa"
+ },
+ "LR": {
+ "name": "Liberiyaa"
+ },
+ "LY": {
+ "name": "Libi"
+ },
+ "LU": {
+ "name": "Liksembuur"
+ },
+ "LI": {
+ "name": "Lincenstayn"
+ },
+ "LT": {
+ "name": "Lituaanii"
+ },
+ "ML": {
+ "name": "Maali"
+ },
+ "MO": {
+ "name": "Macau SAR China"
+ },
+ "MG": {
+ "name": "Madagaskaar"
+ },
+ "MW": {
+ "name": "Malaawi"
+ },
+ "MV": {
+ "name": "Maldiiwe"
+ },
+ "MY": {
+ "name": "Malesii"
+ },
+ "MT": {
+ "name": "Malte"
+ },
+ "MQ": {
+ "name": "Martinik"
+ },
+ "MA": {
+ "name": "Maruk"
+ },
+ "YT": {
+ "name": "Mayoot"
+ },
+ "MK": {
+ "name": "Meceduwaan"
+ },
+ "MX": {
+ "name": "Meksik"
+ },
+ "FM": {
+ "name": "Mikoronesii"
+ },
+ "MM": {
+ "name": "Miyamaar"
+ },
+ "MD": {
+ "name": "Moldawii"
+ },
+ "MC": {
+ "name": "Monaakoo"
+ },
+ "MN": {
+ "name": "Monngolii"
+ },
+ "MS": {
+ "name": "Monseraat"
+ },
+ "ME": {
+ "name": "Montenegro"
+ },
+ "MU": {
+ "name": "Moriis"
+ },
+ "MZ": {
+ "name": "Mosammbik"
+ },
+ "MR": {
+ "name": "Muritani"
+ },
+ "NA": {
+ "name": "Namibii"
+ },
+ "NR": {
+ "name": "Nawuru"
+ },
+ "CZ": {
+ "name": "Ndenndaandi Cek"
+ },
+ "CD": {
+ "name": "Ndenndaandi Demokaraasiire Konngo"
+ },
+ "CF": {
+ "name": "Ndenndaandi Santarafrik"
+ },
+ "DO": {
+ "name": "Ndenndanndi Dominika"
+ },
+ "NL": {
+ "name": "Nederlannda"
+ },
+ "NP": {
+ "name": "Nepaal"
+ },
+ "NE": {
+ "name": "Nijeer"
+ },
+ "NG": {
+ "name": "Nijeriyaa"
+ },
+ "NI": {
+ "name": "Nikaraguwaa"
+ },
+ "NU": {
+ "name": "Niuwe"
+ },
+ "NO": {
+ "name": "Norwees"
+ },
+ "NC": {
+ "name": "Nuwel Kaledonii"
+ },
+ "NZ": {
+ "name": "Nuwel Selannda"
+ },
+ "OM": {
+ "name": "Omaan"
+ },
+ "HN": {
+ "name": "Onnduraas"
+ },
+ "HU": {
+ "name": "Onngiri"
+ },
+ "AU": {
+ "name": "Ostaraalii"
+ },
+ "AT": {
+ "name": "Otiriis"
+ },
+ "PK": {
+ "name": "Pakistaan"
+ },
+ "PW": {
+ "name": "Palawu"
+ },
+ "PS": {
+ "name": "Palestiin Sisjordani e Gaasaa"
+ },
+ "PA": {
+ "name": "Panamaa"
+ },
+ "PG": {
+ "name": "Papuwaa Nuwel Gine"
+ },
+ "PY": {
+ "name": "Paraguwaay"
+ },
+ "PE": {
+ "name": "Peru"
+ },
+ "PN": {
+ "name": "Pitkern"
+ },
+ "PF": {
+ "name": "Polinesii Farayse"
+ },
+ "PL": {
+ "name": "Poloñ"
+ },
+ "PR": {
+ "name": "Porto Rikoo"
+ },
+ "PT": {
+ "name": "Purtugaal"
+ },
+ "RE": {
+ "name": "Rewiñoo"
+ },
+ "RU": {
+ "name": "Riisii"
+ },
+ "RO": {
+ "name": "Rumanii"
+ },
+ "RW": {
+ "name": "Ruwanndaa"
+ },
+ "ZM": {
+ "name": "Sammbi"
+ },
+ "AS": {
+ "name": "Samowa Amerik"
+ },
+ "WS": {
+ "name": "Samowaa"
+ },
+ "JP": {
+ "name": "Sapoo"
+ },
+ "ST": {
+ "name": "Sawo Tome e Perensipe"
+ },
+ "SM": {
+ "name": "See Maree"
+ },
+ "PM": {
+ "name": "See Piyeer e Mikeloo"
+ },
+ "VC": {
+ "name": "See Weesaa e Garnadiin"
+ },
+ "SN": {
+ "name": "Senegaal"
+ },
+ "SH": {
+ "name": "Sent Helen"
+ },
+ "KN": {
+ "name": "Sent Kits e Newis"
+ },
+ "LC": {
+ "name": "Sent Lusiyaa"
+ },
+ "SL": {
+ "name": "Seraa liyon"
+ },
+ "RS": {
+ "name": "Serbia"
+ },
+ "SC": {
+ "name": "Seysel"
+ },
+ "CN": {
+ "name": "Siin"
+ },
+ "CY": {
+ "name": "Siipar"
+ },
+ "ZW": {
+ "name": "Simbaabuwe"
+ },
+ "SG": {
+ "name": "Sinngapuur"
+ },
+ "SX": {
+ "name": "Sint Maarten"
+ },
+ "LK": {
+ "name": "Siri Lanka"
+ },
+ "SY": {
+ "name": "Sirii"
+ },
+ "SK": {
+ "name": "Slowakii"
+ },
+ "SI": {
+ "name": "Slowenii"
+ },
+ "SO": {
+ "name": "Somalii"
+ },
+ "GS": {
+ "name": "South Georgia & South Sandwich Islands"
+ },
+ "SS": {
+ "name": "South Sudan"
+ },
+ "BL": {
+ "name": "St. Barthélemy"
+ },
+ "MF": {
+ "name": "St. Martin"
+ },
+ "SD": {
+ "name": "Sudaan"
+ },
+ "SR": {
+ "name": "Surinaam"
+ },
+ "SE": {
+ "name": "Suweed"
+ },
+ "CH": {
+ "name": "Suwiis"
+ },
+ "SJ": {
+ "name": "Svalbard & Jan Mayen"
+ },
+ "SZ": {
+ "name": "Swaasilannda"
+ },
+ "TJ": {
+ "name": "Tajikistaan"
+ },
+ "TZ": {
+ "name": "Tansanii"
+ },
+ "TH": {
+ "name": "Taylannda"
+ },
+ "TW": {
+ "name": "Taywaan"
+ },
+ "TL": {
+ "name": "Timoor FuÉ—naange"
+ },
+ "TT": {
+ "name": "Tirnidaad e Tobaago"
+ },
+ "TG": {
+ "name": "Togoo"
+ },
+ "TK": {
+ "name": "Tokelaaw"
+ },
+ "TO": {
+ "name": "Tonngaa"
+ },
+ "TA": {
+ "name": "Tristan da Cunha"
+ },
+ "TN": {
+ "name": "Tunisii"
+ },
+ "TR": {
+ "name": "Turkii"
+ },
+ "TM": {
+ "name": "Turkmenistaan"
+ },
+ "TV": {
+ "name": "Tuwaluu"
+ },
+ "UM": {
+ "name": "U.S. Outlying Islands"
+ },
+ "UA": {
+ "name": "Ukereen"
+ },
+ "UG": {
+ "name": "Unganndaa"
+ },
+ "UY": {
+ "name": "Uruguwaay"
+ },
+ "UZ": {
+ "name": "Usbekistaan"
+ },
+ "WF": {
+ "name": "Walis e Futuna"
+ },
+ "VU": {
+ "name": "Wanuwaatuu"
+ },
+ "VE": {
+ "name": "Wenesuwelaa"
+ },
+ "EH": {
+ "name": "Western Sahara"
+ },
+ "VN": {
+ "name": "Wiyetnaam"
+ },
+ "YE": {
+ "name": "Yemen"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/country/fi.json b/library/intl/resources/country/fi.json
new file mode 100644
index 000000000..03f847ac1
--- /dev/null
+++ b/library/intl/resources/country/fi.json
@@ -0,0 +1,761 @@
+{
+ "AF": {
+ "name": "Afganistan"
+ },
+ "AX": {
+ "name": "Ahvenanmaa"
+ },
+ "NL": {
+ "name": "Alankomaat"
+ },
+ "AL": {
+ "name": "Albania"
+ },
+ "DZ": {
+ "name": "Algeria"
+ },
+ "AS": {
+ "name": "Amerikan Samoa"
+ },
+ "AD": {
+ "name": "Andorra"
+ },
+ "AO": {
+ "name": "Angola"
+ },
+ "AI": {
+ "name": "Anguilla"
+ },
+ "AQ": {
+ "name": "Antarktis"
+ },
+ "AG": {
+ "name": "Antigua ja Barbuda"
+ },
+ "AE": {
+ "name": "Arabiemiirikunnat"
+ },
+ "AR": {
+ "name": "Argentiina"
+ },
+ "AM": {
+ "name": "Armenia"
+ },
+ "AW": {
+ "name": "Aruba"
+ },
+ "AC": {
+ "name": "Ascension-saari"
+ },
+ "AU": {
+ "name": "Australia"
+ },
+ "AZ": {
+ "name": "Azerbaidžan"
+ },
+ "BS": {
+ "name": "Bahama"
+ },
+ "BH": {
+ "name": "Bahrain"
+ },
+ "BD": {
+ "name": "Bangladesh"
+ },
+ "BB": {
+ "name": "Barbados"
+ },
+ "BE": {
+ "name": "Belgia"
+ },
+ "BZ": {
+ "name": "Belize"
+ },
+ "BJ": {
+ "name": "Benin"
+ },
+ "BM": {
+ "name": "Bermuda"
+ },
+ "BT": {
+ "name": "Bhutan"
+ },
+ "BO": {
+ "name": "Bolivia"
+ },
+ "BA": {
+ "name": "Bosnia ja Hertsegovina"
+ },
+ "BW": {
+ "name": "Botswana"
+ },
+ "BR": {
+ "name": "Brasilia"
+ },
+ "IO": {
+ "name": "Brittiläinen Intian valtameren alue"
+ },
+ "VG": {
+ "name": "Brittiläiset Neitsytsaaret"
+ },
+ "BN": {
+ "name": "Brunei"
+ },
+ "BG": {
+ "name": "Bulgaria"
+ },
+ "BF": {
+ "name": "Burkina Faso"
+ },
+ "BI": {
+ "name": "Burundi"
+ },
+ "KY": {
+ "name": "Caymansaaret"
+ },
+ "EA": {
+ "name": "Ceuta ja Melilla"
+ },
+ "CL": {
+ "name": "Chile"
+ },
+ "CK": {
+ "name": "Cookinsaaret"
+ },
+ "CR": {
+ "name": "Costa Rica"
+ },
+ "CW": {
+ "name": "Curaçao"
+ },
+ "DG": {
+ "name": "Diego Garcia"
+ },
+ "DJ": {
+ "name": "Djibouti"
+ },
+ "DM": {
+ "name": "Dominica"
+ },
+ "DO": {
+ "name": "Dominikaaninen tasavalta"
+ },
+ "EC": {
+ "name": "Ecuador"
+ },
+ "EG": {
+ "name": "Egypti"
+ },
+ "SV": {
+ "name": "El Salvador"
+ },
+ "ER": {
+ "name": "Eritrea"
+ },
+ "ES": {
+ "name": "Espanja"
+ },
+ "ZA": {
+ "name": "Etelä-Afrikka"
+ },
+ "GS": {
+ "name": "Etelä-Georgia ja Eteläiset Sandwichsaaret"
+ },
+ "KR": {
+ "name": "Etelä-Korea"
+ },
+ "SS": {
+ "name": "Etelä-Sudan"
+ },
+ "ET": {
+ "name": "Etiopia"
+ },
+ "FK": {
+ "name": "Falklandinsaaret"
+ },
+ "FJ": {
+ "name": "Fidži"
+ },
+ "PH": {
+ "name": "Filippiinit"
+ },
+ "FO": {
+ "name": "Färsaaret"
+ },
+ "GA": {
+ "name": "Gabon"
+ },
+ "GM": {
+ "name": "Gambia"
+ },
+ "GE": {
+ "name": "Georgia"
+ },
+ "GH": {
+ "name": "Ghana"
+ },
+ "GI": {
+ "name": "Gibraltar"
+ },
+ "GD": {
+ "name": "Grenada"
+ },
+ "GL": {
+ "name": "Grönlanti"
+ },
+ "GP": {
+ "name": "Guadeloupe"
+ },
+ "GU": {
+ "name": "Guam"
+ },
+ "GT": {
+ "name": "Guatemala"
+ },
+ "GG": {
+ "name": "Guernsey"
+ },
+ "GN": {
+ "name": "Guinea"
+ },
+ "GW": {
+ "name": "Guinea-Bissau"
+ },
+ "GY": {
+ "name": "Guyana"
+ },
+ "HT": {
+ "name": "Haiti"
+ },
+ "HN": {
+ "name": "Honduras"
+ },
+ "HK": {
+ "name": "Hongkong – Kiinan e.h.a."
+ },
+ "SJ": {
+ "name": "Huippuvuoret ja Jan Mayen"
+ },
+ "ID": {
+ "name": "Indonesia"
+ },
+ "IN": {
+ "name": "Intia"
+ },
+ "IQ": {
+ "name": "Irak"
+ },
+ "IR": {
+ "name": "Iran"
+ },
+ "IE": {
+ "name": "Irlanti"
+ },
+ "IS": {
+ "name": "Islanti"
+ },
+ "IL": {
+ "name": "Israel"
+ },
+ "IT": {
+ "name": "Italia"
+ },
+ "TL": {
+ "name": "Itä-Timor"
+ },
+ "AT": {
+ "name": "Itävalta"
+ },
+ "JM": {
+ "name": "Jamaika"
+ },
+ "JP": {
+ "name": "Japani"
+ },
+ "YE": {
+ "name": "Jemen"
+ },
+ "JE": {
+ "name": "Jersey"
+ },
+ "JO": {
+ "name": "Jordania"
+ },
+ "CX": {
+ "name": "Joulusaari"
+ },
+ "KH": {
+ "name": "Kambodža"
+ },
+ "CM": {
+ "name": "Kamerun"
+ },
+ "CA": {
+ "name": "Kanada"
+ },
+ "IC": {
+ "name": "Kanariansaaret"
+ },
+ "CV": {
+ "name": "Kap Verde"
+ },
+ "BQ": {
+ "name": "Karibian Alankomaat"
+ },
+ "KZ": {
+ "name": "Kazakstan"
+ },
+ "KE": {
+ "name": "Kenia"
+ },
+ "CF": {
+ "name": "Keski-Afrikan tasavalta"
+ },
+ "CN": {
+ "name": "Kiina"
+ },
+ "KG": {
+ "name": "Kirgisia"
+ },
+ "KI": {
+ "name": "Kiribati"
+ },
+ "CO": {
+ "name": "Kolumbia"
+ },
+ "KM": {
+ "name": "Komorit"
+ },
+ "CD": {
+ "name": "Kongon demokraattinen tasavalta"
+ },
+ "CG": {
+ "name": "Kongon tasavalta"
+ },
+ "CC": {
+ "name": "Kookossaaret (Keelingsaaret)"
+ },
+ "XK": {
+ "name": "Kosovo"
+ },
+ "GR": {
+ "name": "Kreikka"
+ },
+ "HR": {
+ "name": "Kroatia"
+ },
+ "CU": {
+ "name": "Kuuba"
+ },
+ "KW": {
+ "name": "Kuwait"
+ },
+ "CY": {
+ "name": "Kypros"
+ },
+ "LA": {
+ "name": "Laos"
+ },
+ "LV": {
+ "name": "Latvia"
+ },
+ "LS": {
+ "name": "Lesotho"
+ },
+ "LB": {
+ "name": "Libanon"
+ },
+ "LR": {
+ "name": "Liberia"
+ },
+ "LY": {
+ "name": "Libya"
+ },
+ "LI": {
+ "name": "Liechtenstein"
+ },
+ "LT": {
+ "name": "Liettua"
+ },
+ "LU": {
+ "name": "Luxemburg"
+ },
+ "EH": {
+ "name": "Länsi-Sahara"
+ },
+ "MO": {
+ "name": "Macao – Kiinan e.h.a."
+ },
+ "MG": {
+ "name": "Madagaskar"
+ },
+ "MK": {
+ "name": "Makedonia"
+ },
+ "MW": {
+ "name": "Malawi"
+ },
+ "MV": {
+ "name": "Malediivit"
+ },
+ "MY": {
+ "name": "Malesia"
+ },
+ "ML": {
+ "name": "Mali"
+ },
+ "MT": {
+ "name": "Malta"
+ },
+ "IM": {
+ "name": "Mansaari"
+ },
+ "MA": {
+ "name": "Marokko"
+ },
+ "MH": {
+ "name": "Marshallinsaaret"
+ },
+ "MQ": {
+ "name": "Martinique"
+ },
+ "MR": {
+ "name": "Mauritania"
+ },
+ "MU": {
+ "name": "Mauritius"
+ },
+ "YT": {
+ "name": "Mayotte"
+ },
+ "MX": {
+ "name": "Meksiko"
+ },
+ "FM": {
+ "name": "Mikronesian liittovaltio"
+ },
+ "MD": {
+ "name": "Moldova"
+ },
+ "MC": {
+ "name": "Monaco"
+ },
+ "MN": {
+ "name": "Mongolia"
+ },
+ "ME": {
+ "name": "Montenegro"
+ },
+ "MS": {
+ "name": "Montserrat"
+ },
+ "MZ": {
+ "name": "Mosambik"
+ },
+ "MM": {
+ "name": "Myanmar (Burma)"
+ },
+ "NA": {
+ "name": "Namibia"
+ },
+ "NR": {
+ "name": "Nauru"
+ },
+ "NP": {
+ "name": "Nepal"
+ },
+ "NI": {
+ "name": "Nicaragua"
+ },
+ "NE": {
+ "name": "Niger"
+ },
+ "NG": {
+ "name": "Nigeria"
+ },
+ "NU": {
+ "name": "Niue"
+ },
+ "NF": {
+ "name": "Norfolkinsaari"
+ },
+ "NO": {
+ "name": "Norja"
+ },
+ "CI": {
+ "name": "Norsunluurannikko"
+ },
+ "OM": {
+ "name": "Oman"
+ },
+ "PK": {
+ "name": "Pakistan"
+ },
+ "PW": {
+ "name": "Palau"
+ },
+ "PS": {
+ "name": "Palestiinalaisalueet"
+ },
+ "PA": {
+ "name": "Panama"
+ },
+ "PG": {
+ "name": "Papua-Uusi-Guinea"
+ },
+ "PY": {
+ "name": "Paraguay"
+ },
+ "PE": {
+ "name": "Peru"
+ },
+ "PN": {
+ "name": "Pitcairn"
+ },
+ "KP": {
+ "name": "Pohjois-Korea"
+ },
+ "MP": {
+ "name": "Pohjois-Mariaanit"
+ },
+ "PT": {
+ "name": "Portugali"
+ },
+ "PR": {
+ "name": "Puerto Rico"
+ },
+ "PL": {
+ "name": "Puola"
+ },
+ "GQ": {
+ "name": "Päiväntasaajan Guinea"
+ },
+ "QA": {
+ "name": "Qatar"
+ },
+ "FR": {
+ "name": "Ranska"
+ },
+ "GF": {
+ "name": "Ranskan Guayana"
+ },
+ "PF": {
+ "name": "Ranskan Polynesia"
+ },
+ "TF": {
+ "name": "Ranskan ulkopuoliset eteläiset alueet"
+ },
+ "RE": {
+ "name": "Réunion"
+ },
+ "RO": {
+ "name": "Romania"
+ },
+ "RW": {
+ "name": "Ruanda"
+ },
+ "SE": {
+ "name": "Ruotsi"
+ },
+ "SH": {
+ "name": "Saint Helena"
+ },
+ "KN": {
+ "name": "Saint Kitts ja Nevis"
+ },
+ "LC": {
+ "name": "Saint Lucia"
+ },
+ "VC": {
+ "name": "Saint Vincent ja Grenadiinit"
+ },
+ "BL": {
+ "name": "Saint-Barthélemy"
+ },
+ "MF": {
+ "name": "Saint-Martin"
+ },
+ "PM": {
+ "name": "Saint-Pierre ja Miquelon"
+ },
+ "DE": {
+ "name": "Saksa"
+ },
+ "SB": {
+ "name": "Salomonsaaret"
+ },
+ "ZM": {
+ "name": "Sambia"
+ },
+ "WS": {
+ "name": "Samoa"
+ },
+ "SM": {
+ "name": "San Marino"
+ },
+ "ST": {
+ "name": "São Tomé ja Príncipe"
+ },
+ "SA": {
+ "name": "Saudi-Arabia"
+ },
+ "SN": {
+ "name": "Senegal"
+ },
+ "RS": {
+ "name": "Serbia"
+ },
+ "SC": {
+ "name": "Seychellit"
+ },
+ "SL": {
+ "name": "Sierra Leone"
+ },
+ "SG": {
+ "name": "Singapore"
+ },
+ "SX": {
+ "name": "Sint Maarten"
+ },
+ "SK": {
+ "name": "Slovakia"
+ },
+ "SI": {
+ "name": "Slovenia"
+ },
+ "SO": {
+ "name": "Somalia"
+ },
+ "LK": {
+ "name": "Sri Lanka"
+ },
+ "SD": {
+ "name": "Sudan"
+ },
+ "FI": {
+ "name": "Suomi"
+ },
+ "SR": {
+ "name": "Surinam"
+ },
+ "CH": {
+ "name": "Sveitsi"
+ },
+ "SZ": {
+ "name": "Swazimaa"
+ },
+ "SY": {
+ "name": "Syyria"
+ },
+ "TJ": {
+ "name": "Tadžikistan"
+ },
+ "TW": {
+ "name": "Taiwan"
+ },
+ "TZ": {
+ "name": "Tansania"
+ },
+ "DK": {
+ "name": "Tanska"
+ },
+ "TH": {
+ "name": "Thaimaa"
+ },
+ "TG": {
+ "name": "Togo"
+ },
+ "TK": {
+ "name": "Tokelau"
+ },
+ "TO": {
+ "name": "Tonga"
+ },
+ "TT": {
+ "name": "Trinidad ja Tobago"
+ },
+ "TA": {
+ "name": "Tristan da Cunha"
+ },
+ "TD": {
+ "name": "TÅ¡ad"
+ },
+ "CZ": {
+ "name": "TÅ¡ekki"
+ },
+ "TN": {
+ "name": "Tunisia"
+ },
+ "TR": {
+ "name": "Turkki"
+ },
+ "TM": {
+ "name": "Turkmenistan"
+ },
+ "TC": {
+ "name": "Turks- ja Caicossaaret"
+ },
+ "TV": {
+ "name": "Tuvalu"
+ },
+ "UG": {
+ "name": "Uganda"
+ },
+ "UA": {
+ "name": "Ukraina"
+ },
+ "HU": {
+ "name": "Unkari"
+ },
+ "UY": {
+ "name": "Uruguay"
+ },
+ "NC": {
+ "name": "Uusi-Kaledonia"
+ },
+ "NZ": {
+ "name": "Uusi-Seelanti"
+ },
+ "UZ": {
+ "name": "Uzbekistan"
+ },
+ "BY": {
+ "name": "Valko-Venäjä"
+ },
+ "VU": {
+ "name": "Vanuatu"
+ },
+ "VA": {
+ "name": "Vatikaani"
+ },
+ "VE": {
+ "name": "Venezuela"
+ },
+ "RU": {
+ "name": "Venäjä"
+ },
+ "VN": {
+ "name": "Vietnam"
+ },
+ "EE": {
+ "name": "Viro"
+ },
+ "WF": {
+ "name": "Wallis ja Futuna"
+ },
+ "GB": {
+ "name": "Yhdistynyt kuningaskunta"
+ },
+ "US": {
+ "name": "Yhdysvallat"
+ },
+ "UM": {
+ "name": "Yhdysvaltain erillissaaret"
+ },
+ "VI": {
+ "name": "Yhdysvaltain Neitsytsaaret"
+ },
+ "ZW": {
+ "name": "Zimbabwe"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/country/fil.json b/library/intl/resources/country/fil.json
new file mode 100644
index 000000000..1013ed4fb
--- /dev/null
+++ b/library/intl/resources/country/fil.json
@@ -0,0 +1,761 @@
+{
+ "AC": {
+ "name": "Acsencion island"
+ },
+ "AF": {
+ "name": "Afghanistan"
+ },
+ "AX": {
+ "name": "Ã…land Islands"
+ },
+ "AL": {
+ "name": "Albania"
+ },
+ "DZ": {
+ "name": "Algeria"
+ },
+ "AS": {
+ "name": "American Samoa"
+ },
+ "AD": {
+ "name": "Andorra"
+ },
+ "AQ": {
+ "name": "Antarctica"
+ },
+ "AG": {
+ "name": "Antigua and Barbuda"
+ },
+ "AO": {
+ "name": "Angola"
+ },
+ "AI": {
+ "name": "Anguilla"
+ },
+ "AR": {
+ "name": "Argentina"
+ },
+ "AM": {
+ "name": "Armenia"
+ },
+ "AW": {
+ "name": "Aruba"
+ },
+ "AU": {
+ "name": "Australia"
+ },
+ "AT": {
+ "name": "Austria"
+ },
+ "AZ": {
+ "name": "Azerbaijan"
+ },
+ "BS": {
+ "name": "Bahamas"
+ },
+ "BH": {
+ "name": "Bahrain"
+ },
+ "BD": {
+ "name": "Bangladesh"
+ },
+ "BB": {
+ "name": "Barbados"
+ },
+ "BY": {
+ "name": "Belarus"
+ },
+ "BE": {
+ "name": "Belgium"
+ },
+ "BZ": {
+ "name": "Belize"
+ },
+ "BJ": {
+ "name": "Benin"
+ },
+ "BM": {
+ "name": "Bermuda"
+ },
+ "BT": {
+ "name": "Bhutan"
+ },
+ "BO": {
+ "name": "Bolivia"
+ },
+ "BA": {
+ "name": "Bosnia and Herzegovina"
+ },
+ "BW": {
+ "name": "Botswana"
+ },
+ "BR": {
+ "name": "Brazil"
+ },
+ "IO": {
+ "name": "British Indian Ocean Territory"
+ },
+ "VG": {
+ "name": "British Virgin Islands"
+ },
+ "BN": {
+ "name": "Brunei"
+ },
+ "BG": {
+ "name": "Bulgaria"
+ },
+ "BF": {
+ "name": "Burkina Faso"
+ },
+ "BI": {
+ "name": "Burundi"
+ },
+ "KH": {
+ "name": "Cambodia"
+ },
+ "CM": {
+ "name": "Cameroon"
+ },
+ "CA": {
+ "name": "Canada"
+ },
+ "IC": {
+ "name": "Canary Island"
+ },
+ "CV": {
+ "name": "Cape Verde"
+ },
+ "BQ": {
+ "name": "Caribbean Netherlands"
+ },
+ "KY": {
+ "name": "Cayman Islands"
+ },
+ "CF": {
+ "name": "Central African Republic"
+ },
+ "EA": {
+ "name": "Ceuta and Melilla"
+ },
+ "TD": {
+ "name": "Chad"
+ },
+ "CL": {
+ "name": "Chile"
+ },
+ "CN": {
+ "name": "China"
+ },
+ "CX": {
+ "name": "Christmas Island"
+ },
+ "CC": {
+ "name": "Cocos (Keeling) Islands"
+ },
+ "CO": {
+ "name": "Colombia"
+ },
+ "KM": {
+ "name": "Comoros"
+ },
+ "CG": {
+ "name": "Congo - Brazzaville"
+ },
+ "CD": {
+ "name": "Congo - Kinshasa"
+ },
+ "CK": {
+ "name": "Cook Islands"
+ },
+ "CR": {
+ "name": "Costa Rica"
+ },
+ "CI": {
+ "name": "Côte d’Ivoire"
+ },
+ "HR": {
+ "name": "Croatia"
+ },
+ "CU": {
+ "name": "Cuba"
+ },
+ "CW": {
+ "name": "Curaçao"
+ },
+ "CY": {
+ "name": "Cyprus"
+ },
+ "CZ": {
+ "name": "Czech Republic"
+ },
+ "DK": {
+ "name": "Denmark"
+ },
+ "DG": {
+ "name": "Diego Garcia"
+ },
+ "DJ": {
+ "name": "Djibouti"
+ },
+ "DM": {
+ "name": "Dominica"
+ },
+ "DO": {
+ "name": "Dominican Republic"
+ },
+ "EC": {
+ "name": "Ecuador"
+ },
+ "EG": {
+ "name": "Egypt"
+ },
+ "SV": {
+ "name": "El Salvador"
+ },
+ "GQ": {
+ "name": "Equatorial Guinea"
+ },
+ "ER": {
+ "name": "Eritrea"
+ },
+ "US": {
+ "name": "Estados Unidos"
+ },
+ "EE": {
+ "name": "Estonia"
+ },
+ "ET": {
+ "name": "Ethiopia"
+ },
+ "FK": {
+ "name": "Falkland Islands"
+ },
+ "FO": {
+ "name": "Faroe Islands"
+ },
+ "FJ": {
+ "name": "Fiji"
+ },
+ "FI": {
+ "name": "Finland"
+ },
+ "FR": {
+ "name": "France"
+ },
+ "GF": {
+ "name": "French Guiana"
+ },
+ "PF": {
+ "name": "French Polynesia"
+ },
+ "TF": {
+ "name": "French Southern Territories"
+ },
+ "GA": {
+ "name": "Gabon"
+ },
+ "GM": {
+ "name": "Gambia"
+ },
+ "GE": {
+ "name": "Georgia"
+ },
+ "DE": {
+ "name": "Germany"
+ },
+ "GH": {
+ "name": "Ghana"
+ },
+ "GI": {
+ "name": "Gibraltar"
+ },
+ "GR": {
+ "name": "Greece"
+ },
+ "GL": {
+ "name": "Greenland"
+ },
+ "GD": {
+ "name": "Grenada"
+ },
+ "GP": {
+ "name": "Guadeloupe"
+ },
+ "GU": {
+ "name": "Guam"
+ },
+ "GT": {
+ "name": "Guatemala"
+ },
+ "GG": {
+ "name": "Guernsey"
+ },
+ "GN": {
+ "name": "Guinea"
+ },
+ "GW": {
+ "name": "Guinea-Bissau"
+ },
+ "GY": {
+ "name": "Guyana"
+ },
+ "HT": {
+ "name": "Haiti"
+ },
+ "HN": {
+ "name": "Honduras"
+ },
+ "HK": {
+ "name": "Hong Kong SAR China"
+ },
+ "HU": {
+ "name": "Hungary"
+ },
+ "IS": {
+ "name": "Iceland"
+ },
+ "IN": {
+ "name": "India"
+ },
+ "ID": {
+ "name": "Indonesia"
+ },
+ "IR": {
+ "name": "Iran"
+ },
+ "IQ": {
+ "name": "Iraq"
+ },
+ "IE": {
+ "name": "Ireland"
+ },
+ "IM": {
+ "name": "Isle of Man"
+ },
+ "IL": {
+ "name": "Israel"
+ },
+ "IT": {
+ "name": "Italy"
+ },
+ "JM": {
+ "name": "Jamaica"
+ },
+ "JP": {
+ "name": "Japan"
+ },
+ "JE": {
+ "name": "Jersey"
+ },
+ "JO": {
+ "name": "Jordan"
+ },
+ "EH": {
+ "name": "Kanlurang Sahara"
+ },
+ "KZ": {
+ "name": "Kazakhstan"
+ },
+ "KE": {
+ "name": "Kenya"
+ },
+ "KI": {
+ "name": "Kiribati"
+ },
+ "XK": {
+ "name": "Kosovo"
+ },
+ "KW": {
+ "name": "Kuwait"
+ },
+ "KG": {
+ "name": "Kyrgyzstan"
+ },
+ "LA": {
+ "name": "Laos"
+ },
+ "LV": {
+ "name": "Latvia"
+ },
+ "LB": {
+ "name": "Lebanon"
+ },
+ "LS": {
+ "name": "Lesotho"
+ },
+ "LR": {
+ "name": "Liberia"
+ },
+ "LY": {
+ "name": "Libya"
+ },
+ "LI": {
+ "name": "Liechtenstein"
+ },
+ "LT": {
+ "name": "Lithuania"
+ },
+ "LU": {
+ "name": "Luxembourg"
+ },
+ "MO": {
+ "name": "Macau SAR China"
+ },
+ "MK": {
+ "name": "Macedonia"
+ },
+ "MG": {
+ "name": "Madagascar"
+ },
+ "MW": {
+ "name": "Malawi"
+ },
+ "MY": {
+ "name": "Malaysia"
+ },
+ "MV": {
+ "name": "Maldives"
+ },
+ "ML": {
+ "name": "Mali"
+ },
+ "MT": {
+ "name": "Malta"
+ },
+ "MH": {
+ "name": "Marshall Islands"
+ },
+ "MQ": {
+ "name": "Martinique"
+ },
+ "MR": {
+ "name": "Mauritania"
+ },
+ "MU": {
+ "name": "Mauritius"
+ },
+ "YT": {
+ "name": "Mayotte"
+ },
+ "MX": {
+ "name": "Mexico"
+ },
+ "FM": {
+ "name": "Micronesia"
+ },
+ "MD": {
+ "name": "Moldova"
+ },
+ "MC": {
+ "name": "Monaco"
+ },
+ "ME": {
+ "name": "Montenegro"
+ },
+ "MS": {
+ "name": "Montserrat"
+ },
+ "MN": {
+ "name": "Mongolia"
+ },
+ "MA": {
+ "name": "Morocco"
+ },
+ "MZ": {
+ "name": "Mozambique"
+ },
+ "MM": {
+ "name": "Myanmar (Burma)"
+ },
+ "NA": {
+ "name": "Namibia"
+ },
+ "NR": {
+ "name": "Nauru"
+ },
+ "NP": {
+ "name": "Nepal"
+ },
+ "NL": {
+ "name": "Netherlands"
+ },
+ "NC": {
+ "name": "New Caledonia"
+ },
+ "NZ": {
+ "name": "New Zealand"
+ },
+ "NI": {
+ "name": "Nicaragua"
+ },
+ "NE": {
+ "name": "Niger"
+ },
+ "NG": {
+ "name": "Nigeria"
+ },
+ "NU": {
+ "name": "Niue"
+ },
+ "NF": {
+ "name": "Norfolk Island"
+ },
+ "KP": {
+ "name": "North Korea"
+ },
+ "MP": {
+ "name": "Northern Mariana Islands"
+ },
+ "NO": {
+ "name": "Norway"
+ },
+ "OM": {
+ "name": "Oman"
+ },
+ "PK": {
+ "name": "Pakistan"
+ },
+ "PW": {
+ "name": "Palau"
+ },
+ "PS": {
+ "name": "Palestinian Territories"
+ },
+ "PA": {
+ "name": "Panama"
+ },
+ "PG": {
+ "name": "Papua New Guinea"
+ },
+ "PY": {
+ "name": "Paraguay"
+ },
+ "PE": {
+ "name": "Peru"
+ },
+ "PH": {
+ "name": "Pilipinas"
+ },
+ "PN": {
+ "name": "Pitcairn Islands"
+ },
+ "PL": {
+ "name": "Poland"
+ },
+ "PT": {
+ "name": "Portugal"
+ },
+ "PR": {
+ "name": "Puerto Rico"
+ },
+ "QA": {
+ "name": "Qatar"
+ },
+ "RE": {
+ "name": "Réunion"
+ },
+ "RO": {
+ "name": "Romania"
+ },
+ "RU": {
+ "name": "Russia"
+ },
+ "RW": {
+ "name": "Rwanda"
+ },
+ "BL": {
+ "name": "Saint Barthélemy"
+ },
+ "SH": {
+ "name": "Saint Helena"
+ },
+ "KN": {
+ "name": "Saint Kitts and Nevis"
+ },
+ "LC": {
+ "name": "Saint Lucia"
+ },
+ "MF": {
+ "name": "Saint Martin"
+ },
+ "PM": {
+ "name": "Saint Pierre and Miquelon"
+ },
+ "VC": {
+ "name": "Saint Vincent and the Grenadines"
+ },
+ "WS": {
+ "name": "Samoa"
+ },
+ "SM": {
+ "name": "San Marino"
+ },
+ "ST": {
+ "name": "São Tomé and Príncipe"
+ },
+ "SA": {
+ "name": "Saudi Arabia"
+ },
+ "SN": {
+ "name": "Senegal"
+ },
+ "RS": {
+ "name": "Serbia"
+ },
+ "SC": {
+ "name": "Seychelles"
+ },
+ "SL": {
+ "name": "Sierra Leone"
+ },
+ "SX": {
+ "name": "Sint Maarten"
+ },
+ "SG": {
+ "name": "Singapore"
+ },
+ "SK": {
+ "name": "Slovakia"
+ },
+ "SI": {
+ "name": "Slovenia"
+ },
+ "SB": {
+ "name": "Solomon Islands"
+ },
+ "SO": {
+ "name": "Somalia"
+ },
+ "ZA": {
+ "name": "South Africa"
+ },
+ "GS": {
+ "name": "South Georgia and the South Sandwich Islands"
+ },
+ "KR": {
+ "name": "South Korea"
+ },
+ "ES": {
+ "name": "Spain"
+ },
+ "LK": {
+ "name": "Sri Lanka"
+ },
+ "SD": {
+ "name": "Sudan"
+ },
+ "SR": {
+ "name": "Suriname"
+ },
+ "SJ": {
+ "name": "Svalbard and Jan Mayen"
+ },
+ "SZ": {
+ "name": "Swaziland"
+ },
+ "SE": {
+ "name": "Sweden"
+ },
+ "CH": {
+ "name": "Switzerland"
+ },
+ "SY": {
+ "name": "Syria"
+ },
+ "TW": {
+ "name": "Taiwan"
+ },
+ "TJ": {
+ "name": "Tajikistan"
+ },
+ "TZ": {
+ "name": "Tanzania"
+ },
+ "TH": {
+ "name": "Thailand"
+ },
+ "SS": {
+ "name": "Timog Sudan"
+ },
+ "TL": {
+ "name": "Timor-Leste"
+ },
+ "TG": {
+ "name": "Togo"
+ },
+ "TK": {
+ "name": "Tokelau"
+ },
+ "TO": {
+ "name": "Tonga"
+ },
+ "TT": {
+ "name": "Trinidad and Tobago"
+ },
+ "TA": {
+ "name": "Tristan de Cunha"
+ },
+ "TN": {
+ "name": "Tunisia"
+ },
+ "TR": {
+ "name": "Turkey"
+ },
+ "TM": {
+ "name": "Turkmenistan"
+ },
+ "TC": {
+ "name": "Turks and Caicos Islands"
+ },
+ "TV": {
+ "name": "Tuvalu"
+ },
+ "UM": {
+ "name": "U.S. Outlying Islands"
+ },
+ "VI": {
+ "name": "U.S. Virgin Islands"
+ },
+ "UG": {
+ "name": "Uganda"
+ },
+ "UA": {
+ "name": "Ukraine"
+ },
+ "AE": {
+ "name": "United Arab Emirates"
+ },
+ "GB": {
+ "name": "United Kingdom"
+ },
+ "UY": {
+ "name": "Uruguay"
+ },
+ "UZ": {
+ "name": "Uzbekistan"
+ },
+ "VU": {
+ "name": "Vanuatu"
+ },
+ "VA": {
+ "name": "Vatican City"
+ },
+ "VE": {
+ "name": "Venezuela"
+ },
+ "VN": {
+ "name": "Vietnam"
+ },
+ "WF": {
+ "name": "Wallis and Futuna"
+ },
+ "YE": {
+ "name": "Yemen"
+ },
+ "ZM": {
+ "name": "Zambia"
+ },
+ "ZW": {
+ "name": "Zimbabwe"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/country/fo.json b/library/intl/resources/country/fo.json
new file mode 100644
index 000000000..d60f0301f
--- /dev/null
+++ b/library/intl/resources/country/fo.json
@@ -0,0 +1,761 @@
+{
+ "AF": {
+ "name": "Afganistan"
+ },
+ "AX": {
+ "name": "Ãland"
+ },
+ "AL": {
+ "name": "Albania"
+ },
+ "DZ": {
+ "name": "Algeria"
+ },
+ "AS": {
+ "name": "Amerikanska Sámoa"
+ },
+ "AD": {
+ "name": "Andorra"
+ },
+ "AO": {
+ "name": "Angola"
+ },
+ "AI": {
+ "name": "Anguilla"
+ },
+ "AQ": {
+ "name": "Antarktis"
+ },
+ "AG": {
+ "name": "Antigua og Barbuda"
+ },
+ "AR": {
+ "name": "Argentina"
+ },
+ "AM": {
+ "name": "Armenia"
+ },
+ "AW": {
+ "name": "Aruba"
+ },
+ "AC": {
+ "name": "Ascensionoyggjin"
+ },
+ "AZ": {
+ "name": "Aserbajdsjan"
+ },
+ "AU": {
+ "name": "Avstralia"
+ },
+ "BS": {
+ "name": "Bahamas"
+ },
+ "BH": {
+ "name": "Bahrain"
+ },
+ "BD": {
+ "name": "Bangladesj"
+ },
+ "BB": {
+ "name": "Barbados"
+ },
+ "BE": {
+ "name": "Belgia"
+ },
+ "BZ": {
+ "name": "Belis"
+ },
+ "BJ": {
+ "name": "Benin"
+ },
+ "BM": {
+ "name": "Bermuda"
+ },
+ "BO": {
+ "name": "Bolivia"
+ },
+ "BA": {
+ "name": "Bosnia-Hersegovina"
+ },
+ "BW": {
+ "name": "Botsvana"
+ },
+ "BR": {
+ "name": "Brasilia"
+ },
+ "IO": {
+ "name": "Bretsku Indiahavsoyggjarnar"
+ },
+ "BN": {
+ "name": "Brunei"
+ },
+ "BG": {
+ "name": "Bulgaria"
+ },
+ "BF": {
+ "name": "Burkina Faso"
+ },
+ "MM": {
+ "name": "Burma"
+ },
+ "BI": {
+ "name": "Burundi"
+ },
+ "BT": {
+ "name": "Butan"
+ },
+ "KY": {
+ "name": "Caymanoyggjarnar"
+ },
+ "EA": {
+ "name": "Ceuta og Melilla"
+ },
+ "CK": {
+ "name": "Cooksoyggjarnar"
+ },
+ "CW": {
+ "name": "Curaçao"
+ },
+ "DK": {
+ "name": "Danmørk"
+ },
+ "DG": {
+ "name": "Diego Garcia"
+ },
+ "DJ": {
+ "name": "Djibouti"
+ },
+ "DO": {
+ "name": "Domingo lýðveldið"
+ },
+ "DM": {
+ "name": "Dominika"
+ },
+ "EG": {
+ "name": "Egyptaland"
+ },
+ "EC": {
+ "name": "Ekvador"
+ },
+ "GQ": {
+ "name": "Ekvator Guinea"
+ },
+ "SV": {
+ "name": "El Salvador"
+ },
+ "ER": {
+ "name": "Eritrea"
+ },
+ "EE": {
+ "name": "Estland"
+ },
+ "ET": {
+ "name": "Etiopia"
+ },
+ "TL": {
+ "name": "Eystur-Timor"
+ },
+ "AT": {
+ "name": "Eysturríki"
+ },
+ "FK": {
+ "name": "Falklandsoyggjarnar"
+ },
+ "FJ": {
+ "name": "Fiji"
+ },
+ "CI": {
+ "name": "Fílabeinsstrondin"
+ },
+ "PH": {
+ "name": "Filipsoyggjar"
+ },
+ "FI": {
+ "name": "Finnland"
+ },
+ "FR": {
+ "name": "Frakland"
+ },
+ "GF": {
+ "name": "Fransk Gujana"
+ },
+ "MF": {
+ "name": "Fransk Saint Martin"
+ },
+ "PF": {
+ "name": "Franska Polynesia"
+ },
+ "TF": {
+ "name": "French Southern Territories"
+ },
+ "FO": {
+ "name": "Føroyar"
+ },
+ "GA": {
+ "name": "Gabon"
+ },
+ "GM": {
+ "name": "Gambia"
+ },
+ "GE": {
+ "name": "Georgia"
+ },
+ "GH": {
+ "name": "Ghana"
+ },
+ "GI": {
+ "name": "Gibraltar"
+ },
+ "GD": {
+ "name": "Grenada"
+ },
+ "GR": {
+ "name": "Grikkaland"
+ },
+ "CV": {
+ "name": "Grønhøvdaoyggjarnar"
+ },
+ "GL": {
+ "name": "Grønland"
+ },
+ "GP": {
+ "name": "Guadeloupe"
+ },
+ "GU": {
+ "name": "Guam"
+ },
+ "GT": {
+ "name": "Guatemala"
+ },
+ "GG": {
+ "name": "Guernsey"
+ },
+ "GN": {
+ "name": "Guinea"
+ },
+ "GW": {
+ "name": "Guinea Bissau"
+ },
+ "GY": {
+ "name": "Gujana"
+ },
+ "HT": {
+ "name": "Haiti"
+ },
+ "HN": {
+ "name": "Honduras"
+ },
+ "HK": {
+ "name": "Hongkong"
+ },
+ "BY": {
+ "name": "Hvítarussland"
+ },
+ "IN": {
+ "name": "India"
+ },
+ "ID": {
+ "name": "Indonesia"
+ },
+ "IQ": {
+ "name": "Irak"
+ },
+ "IR": {
+ "name": "Iran"
+ },
+ "IE": {
+ "name": "Ãrland"
+ },
+ "IS": {
+ "name": "Ãsland"
+ },
+ "IL": {
+ "name": "Ãsrael"
+ },
+ "IT": {
+ "name": "Italia"
+ },
+ "JM": {
+ "name": "Jameika"
+ },
+ "JP": {
+ "name": "Japan"
+ },
+ "YE": {
+ "name": "Jemen"
+ },
+ "JE": {
+ "name": "Jersey"
+ },
+ "CX": {
+ "name": "Jólaoyggjin"
+ },
+ "JO": {
+ "name": "Jordania"
+ },
+ "KH": {
+ "name": "Kambodja"
+ },
+ "CM": {
+ "name": "Kamerun"
+ },
+ "CA": {
+ "name": "Kanada"
+ },
+ "IC": {
+ "name": "Kanaríoyggjarnar"
+ },
+ "KZ": {
+ "name": "Kasakstan"
+ },
+ "QA": {
+ "name": "Katar"
+ },
+ "CZ": {
+ "name": "Kekkia"
+ },
+ "KE": {
+ "name": "Kenja"
+ },
+ "CL": {
+ "name": "Kili"
+ },
+ "CN": {
+ "name": "Kina"
+ },
+ "KG": {
+ "name": "Kirgisia"
+ },
+ "KI": {
+ "name": "Kiribati"
+ },
+ "TD": {
+ "name": "Kjad"
+ },
+ "CC": {
+ "name": "Kokosoyggjarnar"
+ },
+ "CO": {
+ "name": "Kolombia"
+ },
+ "KM": {
+ "name": "Komorooyggjarnar"
+ },
+ "CG": {
+ "name": "Kongo"
+ },
+ "CD": {
+ "name": "Kongo-Kinshasa"
+ },
+ "XK": {
+ "name": "Kosovo"
+ },
+ "CR": {
+ "name": "Kosta Rika"
+ },
+ "HR": {
+ "name": "Kroatia"
+ },
+ "CU": {
+ "name": "Kuba"
+ },
+ "KW": {
+ "name": "Kuvait"
+ },
+ "CY": {
+ "name": "Kýpros"
+ },
+ "LA": {
+ "name": "Laos"
+ },
+ "LS": {
+ "name": "Lesoto"
+ },
+ "LV": {
+ "name": "Lettland"
+ },
+ "LB": {
+ "name": "Libanon"
+ },
+ "LR": {
+ "name": "Liberia"
+ },
+ "LY": {
+ "name": "Libya"
+ },
+ "LI": {
+ "name": "Liktenstein"
+ },
+ "LT": {
+ "name": "Litava"
+ },
+ "LU": {
+ "name": "Luksemborg"
+ },
+ "MG": {
+ "name": "Madagaskar"
+ },
+ "MO": {
+ "name": "Makao"
+ },
+ "MK": {
+ "name": "Makedónia"
+ },
+ "MW": {
+ "name": "Malavi"
+ },
+ "MV": {
+ "name": "Maldivuoyggjarnar"
+ },
+ "MY": {
+ "name": "Maleisia"
+ },
+ "ML": {
+ "name": "Mali"
+ },
+ "MT": {
+ "name": "Malta"
+ },
+ "IM": {
+ "name": "Mann"
+ },
+ "MA": {
+ "name": "Marokko"
+ },
+ "MH": {
+ "name": "Marshalloyggjarnar"
+ },
+ "MQ": {
+ "name": "Martinique"
+ },
+ "YT": {
+ "name": "Mayotte"
+ },
+ "MX": {
+ "name": "Meksiko"
+ },
+ "CF": {
+ "name": "Miðafrikalýðveldið"
+ },
+ "FM": {
+ "name": "Mikronesia"
+ },
+ "MD": {
+ "name": "Moldova"
+ },
+ "MC": {
+ "name": "Monako"
+ },
+ "MN": {
+ "name": "Mongolia"
+ },
+ "ME": {
+ "name": "Montenegro"
+ },
+ "MS": {
+ "name": "Montserrat"
+ },
+ "MR": {
+ "name": "Móritania"
+ },
+ "MU": {
+ "name": "Móritius"
+ },
+ "MZ": {
+ "name": "Mosambik"
+ },
+ "NA": {
+ "name": "Namibia"
+ },
+ "NR": {
+ "name": "Nauru"
+ },
+ "NP": {
+ "name": "Nepal"
+ },
+ "NL": {
+ "name": "Niðurlond"
+ },
+ "BQ": {
+ "name": "Niðurlonds Karibia"
+ },
+ "SX": {
+ "name": "Niðurlonds Saint Martin"
+ },
+ "NE": {
+ "name": "Niger"
+ },
+ "NG": {
+ "name": "Nigeria"
+ },
+ "NI": {
+ "name": "Nikaragua"
+ },
+ "NU": {
+ "name": "Niue"
+ },
+ "KP": {
+ "name": "Norður-Korea"
+ },
+ "MP": {
+ "name": "Norðurmarianoyggjarnar"
+ },
+ "SD": {
+ "name": "Norðursudan"
+ },
+ "NO": {
+ "name": "Noreg"
+ },
+ "NF": {
+ "name": "Norfolkoyggjin"
+ },
+ "NZ": {
+ "name": "Ný Sæland"
+ },
+ "NC": {
+ "name": "Ný-Kaledonia"
+ },
+ "OM": {
+ "name": "Oman"
+ },
+ "PK": {
+ "name": "Pakistan"
+ },
+ "PW": {
+ "name": "Palau"
+ },
+ "PS": {
+ "name": "Palestinskt territorium"
+ },
+ "PA": {
+ "name": "Panama"
+ },
+ "PG": {
+ "name": "Papua Nýguinea"
+ },
+ "PY": {
+ "name": "Paraguei"
+ },
+ "PE": {
+ "name": "Perú"
+ },
+ "PN": {
+ "name": "Pitcairn"
+ },
+ "PL": {
+ "name": "Pólland"
+ },
+ "PT": {
+ "name": "Portugal"
+ },
+ "PR": {
+ "name": "Puerto Rico"
+ },
+ "RE": {
+ "name": "Réunion"
+ },
+ "RW": {
+ "name": "Ruanda"
+ },
+ "RO": {
+ "name": "Rumenia"
+ },
+ "RU": {
+ "name": "Russland"
+ },
+ "BL": {
+ "name": "Saint Barthélemy"
+ },
+ "SH": {
+ "name": "Saint Helena"
+ },
+ "KN": {
+ "name": "Saint Kitts og Nevis"
+ },
+ "LC": {
+ "name": "Saint Lusia"
+ },
+ "PM": {
+ "name": "Saint Pierre og Miquelon"
+ },
+ "VC": {
+ "name": "Saint Vinsent og Grenadinoyggjar"
+ },
+ "SB": {
+ "name": "Sálomonoyggjarnar"
+ },
+ "US": {
+ "name": "Sambandsríki Amerika"
+ },
+ "VI": {
+ "name": "Sambandsríki Amerikas Jómfrúoyggjarnar"
+ },
+ "ZM": {
+ "name": "Sambia"
+ },
+ "AE": {
+ "name": "Sameindu Emirríkini"
+ },
+ "WS": {
+ "name": "Sámoa"
+ },
+ "SM": {
+ "name": "San Marino"
+ },
+ "ST": {
+ "name": "Sao Tome og Prinsipi"
+ },
+ "SA": {
+ "name": "Saudi-Arábia"
+ },
+ "SN": {
+ "name": "Senegal"
+ },
+ "RS": {
+ "name": "Serbia"
+ },
+ "SC": {
+ "name": "Seyskelloyggjarnar"
+ },
+ "SL": {
+ "name": "Sierra Leone"
+ },
+ "ZW": {
+ "name": "Simbabvi"
+ },
+ "SG": {
+ "name": "Singapor"
+ },
+ "SK": {
+ "name": "Slovakia"
+ },
+ "SI": {
+ "name": "Slovenia"
+ },
+ "SO": {
+ "name": "Somalia"
+ },
+ "ES": {
+ "name": "Spania"
+ },
+ "LK": {
+ "name": "Sri Lanka"
+ },
+ "GB": {
+ "name": "Stóra Bretland"
+ },
+ "VG": {
+ "name": "Stóra Bretlands Jómfrúoyggjarnar"
+ },
+ "KR": {
+ "name": "Suður-Korea"
+ },
+ "ZA": {
+ "name": "Suðurafrikalýðveldið"
+ },
+ "GS": {
+ "name": "Suðurgeorgia"
+ },
+ "SS": {
+ "name": "Suðursudan"
+ },
+ "SR": {
+ "name": "Surinam"
+ },
+ "SJ": {
+ "name": "Svalbard og Jan Mayen"
+ },
+ "SZ": {
+ "name": "Svasiland"
+ },
+ "CH": {
+ "name": "Sveis"
+ },
+ "SE": {
+ "name": "Svøríki"
+ },
+ "SY": {
+ "name": "Syria"
+ },
+ "TJ": {
+ "name": "Tadsjikistan"
+ },
+ "TZ": {
+ "name": "Tansania"
+ },
+ "TH": {
+ "name": "Teiland"
+ },
+ "TW": {
+ "name": "Teivan"
+ },
+ "TG": {
+ "name": "Togo"
+ },
+ "TK": {
+ "name": "Tokelau"
+ },
+ "TO": {
+ "name": "Tonga"
+ },
+ "TT": {
+ "name": "Trinidad og Tobago"
+ },
+ "TA": {
+ "name": "Tristan da Cunha"
+ },
+ "TN": {
+ "name": "Tunesia"
+ },
+ "TR": {
+ "name": "Turkaland"
+ },
+ "TM": {
+ "name": "Turkmenistan"
+ },
+ "TC": {
+ "name": "Turks- og Caicosoyggjarnar"
+ },
+ "TV": {
+ "name": "Tuvalu"
+ },
+ "DE": {
+ "name": "Týskland"
+ },
+ "UM": {
+ "name": "U.S. Outlying Islands"
+ },
+ "UG": {
+ "name": "Uganda"
+ },
+ "UA": {
+ "name": "Ukreina"
+ },
+ "HU": {
+ "name": "Ungarn"
+ },
+ "UY": {
+ "name": "Uruguei"
+ },
+ "UZ": {
+ "name": "Usbekistan"
+ },
+ "VU": {
+ "name": "Vanuatu"
+ },
+ "VA": {
+ "name": "Vatikan"
+ },
+ "VE": {
+ "name": "Venesuela"
+ },
+ "EH": {
+ "name": "Vestursahara"
+ },
+ "VN": {
+ "name": "Vietnam"
+ },
+ "WF": {
+ "name": "Wallis og Futuna"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/country/fr-CA.json b/library/intl/resources/country/fr-CA.json
new file mode 100644
index 000000000..2b7ccbcf7
--- /dev/null
+++ b/library/intl/resources/country/fr-CA.json
@@ -0,0 +1,761 @@
+{
+ "AF": {
+ "name": "Afghanistan"
+ },
+ "ZA": {
+ "name": "Afrique du Sud"
+ },
+ "AL": {
+ "name": "Albanie"
+ },
+ "DZ": {
+ "name": "Algérie"
+ },
+ "DE": {
+ "name": "Allemagne"
+ },
+ "AD": {
+ "name": "Andorre"
+ },
+ "AO": {
+ "name": "Angola"
+ },
+ "AI": {
+ "name": "Anguilla"
+ },
+ "AQ": {
+ "name": "Antarctique"
+ },
+ "AG": {
+ "name": "Antigua-et-Barbuda"
+ },
+ "SA": {
+ "name": "Arabie saoudite"
+ },
+ "AR": {
+ "name": "Argentine"
+ },
+ "AM": {
+ "name": "Arménie"
+ },
+ "AW": {
+ "name": "Aruba"
+ },
+ "AU": {
+ "name": "Australie"
+ },
+ "AT": {
+ "name": "Autriche"
+ },
+ "AZ": {
+ "name": "Azerbaïdjan"
+ },
+ "BS": {
+ "name": "Bahamas"
+ },
+ "BH": {
+ "name": "Bahreïn"
+ },
+ "BD": {
+ "name": "Bangladesh"
+ },
+ "BB": {
+ "name": "Barbade"
+ },
+ "BY": {
+ "name": "Bélarus"
+ },
+ "BE": {
+ "name": "Belgique"
+ },
+ "BZ": {
+ "name": "Belize"
+ },
+ "BJ": {
+ "name": "Bénin"
+ },
+ "BM": {
+ "name": "Bermudes"
+ },
+ "BT": {
+ "name": "Bhoutan"
+ },
+ "BO": {
+ "name": "Bolivie"
+ },
+ "BA": {
+ "name": "Bosnie-Herzégovine"
+ },
+ "BW": {
+ "name": "Botswana"
+ },
+ "BR": {
+ "name": "Brésil"
+ },
+ "BN": {
+ "name": "Brunéi Darussalam"
+ },
+ "BG": {
+ "name": "Bulgarie"
+ },
+ "BF": {
+ "name": "Burkina Faso"
+ },
+ "BI": {
+ "name": "Burundi"
+ },
+ "KH": {
+ "name": "Cambodge"
+ },
+ "CM": {
+ "name": "Cameroun"
+ },
+ "CA": {
+ "name": "Canada"
+ },
+ "CV": {
+ "name": "Cap-Vert"
+ },
+ "EA": {
+ "name": "Ceuta et Melilla"
+ },
+ "CL": {
+ "name": "Chili"
+ },
+ "CN": {
+ "name": "Chine"
+ },
+ "CY": {
+ "name": "Chypre"
+ },
+ "CO": {
+ "name": "Colombie"
+ },
+ "KM": {
+ "name": "Comores"
+ },
+ "CG": {
+ "name": "Congo-Brazzaville"
+ },
+ "CD": {
+ "name": "Congo-Kinshasa"
+ },
+ "KP": {
+ "name": "Corée du Nord"
+ },
+ "KR": {
+ "name": "Corée du Sud"
+ },
+ "CR": {
+ "name": "Costa Rica"
+ },
+ "CI": {
+ "name": "Côte d’Ivoire"
+ },
+ "HR": {
+ "name": "Croatie"
+ },
+ "CU": {
+ "name": "Cuba"
+ },
+ "CW": {
+ "name": "Curaçao"
+ },
+ "DK": {
+ "name": "Danemark"
+ },
+ "DG": {
+ "name": "Diego Garcia"
+ },
+ "DJ": {
+ "name": "Djibouti"
+ },
+ "DM": {
+ "name": "Dominique"
+ },
+ "EG": {
+ "name": "Égypte"
+ },
+ "AE": {
+ "name": "Émirats arabes unis"
+ },
+ "EC": {
+ "name": "Équateur"
+ },
+ "ER": {
+ "name": "Érythrée"
+ },
+ "ES": {
+ "name": "Espagne"
+ },
+ "EE": {
+ "name": "Estonie"
+ },
+ "VA": {
+ "name": "État de la Cité du Vatican"
+ },
+ "US": {
+ "name": "États-Unis"
+ },
+ "ET": {
+ "name": "Éthiopie"
+ },
+ "FJ": {
+ "name": "Fidji"
+ },
+ "FI": {
+ "name": "Finlande"
+ },
+ "FR": {
+ "name": "France"
+ },
+ "GA": {
+ "name": "Gabon"
+ },
+ "GM": {
+ "name": "Gambie"
+ },
+ "GE": {
+ "name": "Géorgie"
+ },
+ "GS": {
+ "name": "Géorgie du Sud et les îles Sandwich du Sud"
+ },
+ "GH": {
+ "name": "Ghana"
+ },
+ "GI": {
+ "name": "Gibraltar"
+ },
+ "GR": {
+ "name": "Grèce"
+ },
+ "GD": {
+ "name": "Grenade"
+ },
+ "GL": {
+ "name": "Groenland"
+ },
+ "GP": {
+ "name": "Guadeloupe"
+ },
+ "GU": {
+ "name": "Guam"
+ },
+ "GT": {
+ "name": "Guatemala"
+ },
+ "GG": {
+ "name": "Guernesey"
+ },
+ "GN": {
+ "name": "Guinée"
+ },
+ "GQ": {
+ "name": "Guinée équatoriale"
+ },
+ "GW": {
+ "name": "Guinée-Bissau"
+ },
+ "GY": {
+ "name": "Guyana"
+ },
+ "GF": {
+ "name": "Guyane française"
+ },
+ "HT": {
+ "name": "Haïti"
+ },
+ "HN": {
+ "name": "Honduras"
+ },
+ "HU": {
+ "name": "Hongrie"
+ },
+ "CX": {
+ "name": "ÃŽle Christmas"
+ },
+ "AC": {
+ "name": "Île de l’Ascension"
+ },
+ "IM": {
+ "name": "ÃŽle de Man"
+ },
+ "NF": {
+ "name": "ÃŽle Norfolk"
+ },
+ "AX": {
+ "name": "ÃŽles Ã…land"
+ },
+ "KY": {
+ "name": "Îles Caïmans"
+ },
+ "IC": {
+ "name": "ÃŽles Canaries"
+ },
+ "CC": {
+ "name": "ÃŽles Cocos (Keeling)"
+ },
+ "CK": {
+ "name": "ÃŽles Cook"
+ },
+ "FO": {
+ "name": "Îles Féroé"
+ },
+ "FK": {
+ "name": "ÃŽles Malouines"
+ },
+ "MP": {
+ "name": "ÃŽles Mariannes du Nord"
+ },
+ "MH": {
+ "name": "ÃŽles Marshall"
+ },
+ "UM": {
+ "name": "Îles mineures éloignées des États-Unis"
+ },
+ "SB": {
+ "name": "ÃŽles Salomon"
+ },
+ "TC": {
+ "name": "Îles Turques-et-Caïques"
+ },
+ "VG": {
+ "name": "ÃŽles Vierges britanniques"
+ },
+ "VI": {
+ "name": "Îles Vierges des États-Unis"
+ },
+ "IN": {
+ "name": "Inde"
+ },
+ "ID": {
+ "name": "Indonésie"
+ },
+ "IQ": {
+ "name": "Irak"
+ },
+ "IR": {
+ "name": "Iran"
+ },
+ "IE": {
+ "name": "Irlande"
+ },
+ "IS": {
+ "name": "Islande"
+ },
+ "IL": {
+ "name": "Israël"
+ },
+ "IT": {
+ "name": "Italie"
+ },
+ "JM": {
+ "name": "Jamaïque"
+ },
+ "JP": {
+ "name": "Japon"
+ },
+ "JE": {
+ "name": "Jersey"
+ },
+ "JO": {
+ "name": "Jordanie"
+ },
+ "KZ": {
+ "name": "Kazakhstan"
+ },
+ "KE": {
+ "name": "Kenya"
+ },
+ "KG": {
+ "name": "Kirghizistan"
+ },
+ "KI": {
+ "name": "Kiribati"
+ },
+ "XK": {
+ "name": "Kosovo"
+ },
+ "KW": {
+ "name": "Koweït"
+ },
+ "RE": {
+ "name": "La Réunion"
+ },
+ "LA": {
+ "name": "Laos"
+ },
+ "LS": {
+ "name": "Lesotho"
+ },
+ "LV": {
+ "name": "Lettonie"
+ },
+ "LB": {
+ "name": "Liban"
+ },
+ "LR": {
+ "name": "Libéria"
+ },
+ "LY": {
+ "name": "Libye"
+ },
+ "LI": {
+ "name": "Liechtenstein"
+ },
+ "LT": {
+ "name": "Lituanie"
+ },
+ "LU": {
+ "name": "Luxembourg"
+ },
+ "MK": {
+ "name": "Macédoine"
+ },
+ "MG": {
+ "name": "Madagascar"
+ },
+ "MY": {
+ "name": "Malaisie"
+ },
+ "MW": {
+ "name": "Malawi"
+ },
+ "MV": {
+ "name": "Maldives"
+ },
+ "ML": {
+ "name": "Mali"
+ },
+ "MT": {
+ "name": "Malte"
+ },
+ "MA": {
+ "name": "Maroc"
+ },
+ "MQ": {
+ "name": "Martinique"
+ },
+ "MU": {
+ "name": "Maurice"
+ },
+ "MR": {
+ "name": "Mauritanie"
+ },
+ "YT": {
+ "name": "Mayotte"
+ },
+ "MX": {
+ "name": "Mexique"
+ },
+ "FM": {
+ "name": "Micronésie"
+ },
+ "MD": {
+ "name": "Moldavie"
+ },
+ "MC": {
+ "name": "Monaco"
+ },
+ "MN": {
+ "name": "Mongolie"
+ },
+ "ME": {
+ "name": "Monténégro"
+ },
+ "MS": {
+ "name": "Montserrat"
+ },
+ "MZ": {
+ "name": "Mozambique"
+ },
+ "MM": {
+ "name": "Myanmar"
+ },
+ "NA": {
+ "name": "Namibie"
+ },
+ "NR": {
+ "name": "Nauru"
+ },
+ "NP": {
+ "name": "Népal"
+ },
+ "NI": {
+ "name": "Nicaragua"
+ },
+ "NE": {
+ "name": "Niger"
+ },
+ "NG": {
+ "name": "Nigéria"
+ },
+ "NU": {
+ "name": "Niue"
+ },
+ "NO": {
+ "name": "Norvège"
+ },
+ "NC": {
+ "name": "Nouvelle-Calédonie"
+ },
+ "NZ": {
+ "name": "Nouvelle-Zélande"
+ },
+ "OM": {
+ "name": "Oman"
+ },
+ "UG": {
+ "name": "Ouganda"
+ },
+ "UZ": {
+ "name": "Ouzbékistan"
+ },
+ "PK": {
+ "name": "Pakistan"
+ },
+ "PW": {
+ "name": "Palaos"
+ },
+ "PA": {
+ "name": "Panama"
+ },
+ "PG": {
+ "name": "Papouasie-Nouvelle-Guinée"
+ },
+ "PY": {
+ "name": "Paraguay"
+ },
+ "NL": {
+ "name": "Pays-Bas"
+ },
+ "BQ": {
+ "name": "Pays-Bas caribéens"
+ },
+ "PE": {
+ "name": "Pérou"
+ },
+ "PH": {
+ "name": "Philippines"
+ },
+ "PN": {
+ "name": "Pitcairn"
+ },
+ "PL": {
+ "name": "Pologne"
+ },
+ "PF": {
+ "name": "Polynésie française"
+ },
+ "PR": {
+ "name": "Porto Rico"
+ },
+ "PT": {
+ "name": "Portugal"
+ },
+ "QA": {
+ "name": "Qatar"
+ },
+ "HK": {
+ "name": "R.A.S. chinoise de Hong Kong"
+ },
+ "MO": {
+ "name": "R.A.S. chinoise de Macao"
+ },
+ "CF": {
+ "name": "République centrafricaine"
+ },
+ "DO": {
+ "name": "République dominicaine"
+ },
+ "CZ": {
+ "name": "République tchèque"
+ },
+ "RO": {
+ "name": "Roumanie"
+ },
+ "GB": {
+ "name": "Royaume-Uni"
+ },
+ "RU": {
+ "name": "Russie"
+ },
+ "RW": {
+ "name": "Rwanda"
+ },
+ "EH": {
+ "name": "Sahara occidental"
+ },
+ "BL": {
+ "name": "Saint-Barthélemy"
+ },
+ "KN": {
+ "name": "Saint-Christophe-et-Niévès"
+ },
+ "SM": {
+ "name": "Saint-Marin"
+ },
+ "MF": {
+ "name": "Saint-Martin (France)"
+ },
+ "SX": {
+ "name": "Saint-Martin (Pays-Bas)"
+ },
+ "PM": {
+ "name": "Saint-Pierre-et-Miquelon"
+ },
+ "VC": {
+ "name": "Saint-Vincent-et-les Grenadines"
+ },
+ "SH": {
+ "name": "Sainte-Hélène"
+ },
+ "LC": {
+ "name": "Sainte-Lucie"
+ },
+ "SV": {
+ "name": "Salvador"
+ },
+ "WS": {
+ "name": "Samoa"
+ },
+ "AS": {
+ "name": "Samoa américaines"
+ },
+ "ST": {
+ "name": "Sao Tomé-et-Principe"
+ },
+ "SN": {
+ "name": "Sénégal"
+ },
+ "RS": {
+ "name": "Serbie"
+ },
+ "SC": {
+ "name": "Seychelles"
+ },
+ "SL": {
+ "name": "Sierra Leone"
+ },
+ "SG": {
+ "name": "Singapour"
+ },
+ "SK": {
+ "name": "Slovaquie"
+ },
+ "SI": {
+ "name": "Slovénie"
+ },
+ "SO": {
+ "name": "Somalie"
+ },
+ "SD": {
+ "name": "Soudan"
+ },
+ "SS": {
+ "name": "Soudan du Sud"
+ },
+ "LK": {
+ "name": "Sri Lanka"
+ },
+ "SE": {
+ "name": "Suède"
+ },
+ "CH": {
+ "name": "Suisse"
+ },
+ "SR": {
+ "name": "Suriname"
+ },
+ "SJ": {
+ "name": "Svalbard et Jan Mayen"
+ },
+ "SZ": {
+ "name": "Swaziland"
+ },
+ "SY": {
+ "name": "Syrie"
+ },
+ "TJ": {
+ "name": "Tadjikistan"
+ },
+ "TW": {
+ "name": "Taïwan"
+ },
+ "TZ": {
+ "name": "Tanzanie"
+ },
+ "TD": {
+ "name": "Tchad"
+ },
+ "TF": {
+ "name": "Terres australes françaises"
+ },
+ "IO": {
+ "name": "Territoire britannique de l’océan Indien"
+ },
+ "PS": {
+ "name": "Territoires palestiniens"
+ },
+ "TH": {
+ "name": "Thaïlande"
+ },
+ "TL": {
+ "name": "Timor oriental"
+ },
+ "TG": {
+ "name": "Togo"
+ },
+ "TK": {
+ "name": "Tokelau"
+ },
+ "TO": {
+ "name": "Tonga"
+ },
+ "TT": {
+ "name": "Trinité-et-Tobago"
+ },
+ "TA": {
+ "name": "Tristan da Cunha"
+ },
+ "TN": {
+ "name": "Tunisie"
+ },
+ "TM": {
+ "name": "Turkménistan"
+ },
+ "TR": {
+ "name": "Turquie"
+ },
+ "TV": {
+ "name": "Tuvalu"
+ },
+ "UA": {
+ "name": "Ukraine"
+ },
+ "UY": {
+ "name": "Uruguay"
+ },
+ "VU": {
+ "name": "Vanuatu"
+ },
+ "VE": {
+ "name": "Venezuela"
+ },
+ "VN": {
+ "name": "Vietnam"
+ },
+ "WF": {
+ "name": "Wallis-et-Futuna"
+ },
+ "YE": {
+ "name": "Yémen"
+ },
+ "ZM": {
+ "name": "Zambie"
+ },
+ "ZW": {
+ "name": "Zimbabwe"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/country/fr-CH.json b/library/intl/resources/country/fr-CH.json
new file mode 100644
index 000000000..d274eb795
--- /dev/null
+++ b/library/intl/resources/country/fr-CH.json
@@ -0,0 +1,761 @@
+{
+ "AF": {
+ "name": "Afghanistan"
+ },
+ "ZA": {
+ "name": "Afrique du Sud"
+ },
+ "AL": {
+ "name": "Albanie"
+ },
+ "DZ": {
+ "name": "Algérie"
+ },
+ "DE": {
+ "name": "Allemagne"
+ },
+ "AD": {
+ "name": "Andorre"
+ },
+ "AO": {
+ "name": "Angola"
+ },
+ "AI": {
+ "name": "Anguilla"
+ },
+ "AQ": {
+ "name": "Antarctique"
+ },
+ "AG": {
+ "name": "Antigua-et-Barbuda"
+ },
+ "SA": {
+ "name": "Arabie saoudite"
+ },
+ "AR": {
+ "name": "Argentine"
+ },
+ "AM": {
+ "name": "Arménie"
+ },
+ "AW": {
+ "name": "Aruba"
+ },
+ "AU": {
+ "name": "Australie"
+ },
+ "AT": {
+ "name": "Autriche"
+ },
+ "AZ": {
+ "name": "Azerbaïdjan"
+ },
+ "BS": {
+ "name": "Bahamas"
+ },
+ "BH": {
+ "name": "Bahreïn"
+ },
+ "BD": {
+ "name": "Bangladesh"
+ },
+ "BB": {
+ "name": "Barbade"
+ },
+ "BE": {
+ "name": "Belgique"
+ },
+ "BZ": {
+ "name": "Belize"
+ },
+ "BJ": {
+ "name": "Bénin"
+ },
+ "BM": {
+ "name": "Bermudes"
+ },
+ "BT": {
+ "name": "Bhoutan"
+ },
+ "BY": {
+ "name": "Biélorussie"
+ },
+ "BO": {
+ "name": "Bolivie"
+ },
+ "BA": {
+ "name": "Bosnie-Herzégovine"
+ },
+ "BW": {
+ "name": "Botswana"
+ },
+ "BR": {
+ "name": "Brésil"
+ },
+ "BN": {
+ "name": "Brunéi Darussalam"
+ },
+ "BG": {
+ "name": "Bulgarie"
+ },
+ "BF": {
+ "name": "Burkina Faso"
+ },
+ "BI": {
+ "name": "Burundi"
+ },
+ "KH": {
+ "name": "Cambodge"
+ },
+ "CM": {
+ "name": "Cameroun"
+ },
+ "CA": {
+ "name": "Canada"
+ },
+ "CV": {
+ "name": "Cap-Vert"
+ },
+ "EA": {
+ "name": "Ceuta et Melilla"
+ },
+ "CL": {
+ "name": "Chili"
+ },
+ "CN": {
+ "name": "Chine"
+ },
+ "CY": {
+ "name": "Chypre"
+ },
+ "CO": {
+ "name": "Colombie"
+ },
+ "KM": {
+ "name": "Comores"
+ },
+ "CG": {
+ "name": "Congo-Brazzaville"
+ },
+ "CD": {
+ "name": "Congo-Kinshasa"
+ },
+ "KP": {
+ "name": "Corée du Nord"
+ },
+ "KR": {
+ "name": "Corée du Sud"
+ },
+ "CR": {
+ "name": "Costa Rica"
+ },
+ "CI": {
+ "name": "Côte d’Ivoire"
+ },
+ "HR": {
+ "name": "Croatie"
+ },
+ "CU": {
+ "name": "Cuba"
+ },
+ "CW": {
+ "name": "Curaçao"
+ },
+ "DK": {
+ "name": "Danemark"
+ },
+ "DG": {
+ "name": "Diego Garcia"
+ },
+ "DJ": {
+ "name": "Djibouti"
+ },
+ "DM": {
+ "name": "Dominique"
+ },
+ "EG": {
+ "name": "Égypte"
+ },
+ "SV": {
+ "name": "El Salvador"
+ },
+ "AE": {
+ "name": "Émirats arabes unis"
+ },
+ "EC": {
+ "name": "Équateur"
+ },
+ "ER": {
+ "name": "Érythrée"
+ },
+ "ES": {
+ "name": "Espagne"
+ },
+ "EE": {
+ "name": "Estonie"
+ },
+ "VA": {
+ "name": "État de la Cité du Vatican"
+ },
+ "FM": {
+ "name": "États fédérés de Micronésie"
+ },
+ "US": {
+ "name": "États-Unis"
+ },
+ "ET": {
+ "name": "Éthiopie"
+ },
+ "FJ": {
+ "name": "Fidji"
+ },
+ "FI": {
+ "name": "Finlande"
+ },
+ "FR": {
+ "name": "France"
+ },
+ "GA": {
+ "name": "Gabon"
+ },
+ "GM": {
+ "name": "Gambie"
+ },
+ "GE": {
+ "name": "Géorgie"
+ },
+ "GH": {
+ "name": "Ghana"
+ },
+ "GI": {
+ "name": "Gibraltar"
+ },
+ "GR": {
+ "name": "Grèce"
+ },
+ "GD": {
+ "name": "Grenade"
+ },
+ "GL": {
+ "name": "Groenland"
+ },
+ "GP": {
+ "name": "Guadeloupe"
+ },
+ "GU": {
+ "name": "Guam"
+ },
+ "GT": {
+ "name": "Guatemala"
+ },
+ "GG": {
+ "name": "Guernesey"
+ },
+ "GN": {
+ "name": "Guinée"
+ },
+ "GQ": {
+ "name": "Guinée équatoriale"
+ },
+ "GW": {
+ "name": "Guinée-Bissau"
+ },
+ "GY": {
+ "name": "Guyana"
+ },
+ "GF": {
+ "name": "Guyane française"
+ },
+ "HT": {
+ "name": "Haïti"
+ },
+ "HN": {
+ "name": "Honduras"
+ },
+ "HU": {
+ "name": "Hongrie"
+ },
+ "CX": {
+ "name": "ÃŽle Christmas"
+ },
+ "AC": {
+ "name": "Île de l’Ascension"
+ },
+ "IM": {
+ "name": "ÃŽle de Man"
+ },
+ "NF": {
+ "name": "ÃŽle Norfolk"
+ },
+ "AX": {
+ "name": "ÃŽles Ã…land"
+ },
+ "KY": {
+ "name": "Îles Caïmans"
+ },
+ "IC": {
+ "name": "ÃŽles Canaries"
+ },
+ "CC": {
+ "name": "ÃŽles Cocos"
+ },
+ "CK": {
+ "name": "ÃŽles Cook"
+ },
+ "FO": {
+ "name": "Îles Féroé"
+ },
+ "GS": {
+ "name": "Îles Géorgie du Sud et Sandwich du Sud"
+ },
+ "FK": {
+ "name": "ÃŽles Malouines"
+ },
+ "MP": {
+ "name": "ÃŽles Mariannes du Nord"
+ },
+ "MH": {
+ "name": "ÃŽles Marshall"
+ },
+ "UM": {
+ "name": "Îles mineures éloignées des États-Unis"
+ },
+ "SB": {
+ "name": "ÃŽles Salomon"
+ },
+ "TC": {
+ "name": "Îles Turques-et-Caïques"
+ },
+ "VG": {
+ "name": "ÃŽles Vierges britanniques"
+ },
+ "VI": {
+ "name": "Îles Vierges des États-Unis"
+ },
+ "IN": {
+ "name": "Inde"
+ },
+ "ID": {
+ "name": "Indonésie"
+ },
+ "IQ": {
+ "name": "Irak"
+ },
+ "IR": {
+ "name": "Iran"
+ },
+ "IE": {
+ "name": "Irlande"
+ },
+ "IS": {
+ "name": "Islande"
+ },
+ "IL": {
+ "name": "Israël"
+ },
+ "IT": {
+ "name": "Italie"
+ },
+ "JM": {
+ "name": "Jamaïque"
+ },
+ "JP": {
+ "name": "Japon"
+ },
+ "JE": {
+ "name": "Jersey"
+ },
+ "JO": {
+ "name": "Jordanie"
+ },
+ "KZ": {
+ "name": "Kazakhstan"
+ },
+ "KE": {
+ "name": "Kenya"
+ },
+ "KG": {
+ "name": "Kirghizistan"
+ },
+ "KI": {
+ "name": "Kiribati"
+ },
+ "XK": {
+ "name": "Kosovo"
+ },
+ "KW": {
+ "name": "Koweït"
+ },
+ "RE": {
+ "name": "La Réunion"
+ },
+ "LA": {
+ "name": "Laos"
+ },
+ "LS": {
+ "name": "Lesotho"
+ },
+ "LV": {
+ "name": "Lettonie"
+ },
+ "LB": {
+ "name": "Liban"
+ },
+ "LR": {
+ "name": "Libéria"
+ },
+ "LY": {
+ "name": "Libye"
+ },
+ "LI": {
+ "name": "Liechtenstein"
+ },
+ "LT": {
+ "name": "Lituanie"
+ },
+ "LU": {
+ "name": "Luxembourg"
+ },
+ "MK": {
+ "name": "Macédoine"
+ },
+ "MG": {
+ "name": "Madagascar"
+ },
+ "MY": {
+ "name": "Malaisie"
+ },
+ "MW": {
+ "name": "Malawi"
+ },
+ "MV": {
+ "name": "Maldives"
+ },
+ "ML": {
+ "name": "Mali"
+ },
+ "MT": {
+ "name": "Malte"
+ },
+ "MA": {
+ "name": "Maroc"
+ },
+ "MQ": {
+ "name": "Martinique"
+ },
+ "MU": {
+ "name": "Maurice"
+ },
+ "MR": {
+ "name": "Mauritanie"
+ },
+ "YT": {
+ "name": "Mayotte"
+ },
+ "MX": {
+ "name": "Mexique"
+ },
+ "MD": {
+ "name": "Moldavie"
+ },
+ "MC": {
+ "name": "Monaco"
+ },
+ "MN": {
+ "name": "Mongolie"
+ },
+ "ME": {
+ "name": "Monténégro"
+ },
+ "MS": {
+ "name": "Montserrat"
+ },
+ "MZ": {
+ "name": "Mozambique"
+ },
+ "MM": {
+ "name": "Myanmar"
+ },
+ "NA": {
+ "name": "Namibie"
+ },
+ "NR": {
+ "name": "Nauru"
+ },
+ "NP": {
+ "name": "Népal"
+ },
+ "NI": {
+ "name": "Nicaragua"
+ },
+ "NE": {
+ "name": "Niger"
+ },
+ "NG": {
+ "name": "Nigéria"
+ },
+ "NU": {
+ "name": "Niue"
+ },
+ "NO": {
+ "name": "Norvège"
+ },
+ "NC": {
+ "name": "Nouvelle-Calédonie"
+ },
+ "NZ": {
+ "name": "Nouvelle-Zélande"
+ },
+ "OM": {
+ "name": "Oman"
+ },
+ "UG": {
+ "name": "Ouganda"
+ },
+ "UZ": {
+ "name": "Ouzbékistan"
+ },
+ "PK": {
+ "name": "Pakistan"
+ },
+ "PW": {
+ "name": "Palaos"
+ },
+ "PA": {
+ "name": "Panama"
+ },
+ "PG": {
+ "name": "Papouasie-Nouvelle-Guinée"
+ },
+ "PY": {
+ "name": "Paraguay"
+ },
+ "NL": {
+ "name": "Pays-Bas"
+ },
+ "BQ": {
+ "name": "Pays-Bas caribéens"
+ },
+ "PE": {
+ "name": "Pérou"
+ },
+ "PH": {
+ "name": "Philippines"
+ },
+ "PN": {
+ "name": "Pitcairn"
+ },
+ "PL": {
+ "name": "Pologne"
+ },
+ "PF": {
+ "name": "Polynésie française"
+ },
+ "PR": {
+ "name": "Porto Rico"
+ },
+ "PT": {
+ "name": "Portugal"
+ },
+ "QA": {
+ "name": "Qatar"
+ },
+ "HK": {
+ "name": "R.A.S. chinoise de Hong Kong"
+ },
+ "MO": {
+ "name": "R.A.S. chinoise de Macao"
+ },
+ "CF": {
+ "name": "République centrafricaine"
+ },
+ "DO": {
+ "name": "République dominicaine"
+ },
+ "CZ": {
+ "name": "République tchèque"
+ },
+ "RO": {
+ "name": "Roumanie"
+ },
+ "GB": {
+ "name": "Royaume-Uni"
+ },
+ "RU": {
+ "name": "Russie"
+ },
+ "RW": {
+ "name": "Rwanda"
+ },
+ "EH": {
+ "name": "Sahara occidental"
+ },
+ "BL": {
+ "name": "Saint-Barthélemy"
+ },
+ "KN": {
+ "name": "Saint-Christophe-et-Niévès"
+ },
+ "SM": {
+ "name": "Saint-Marin"
+ },
+ "MF": {
+ "name": "Saint-Martin (partie française)"
+ },
+ "PM": {
+ "name": "Saint-Pierre-et-Miquelon"
+ },
+ "VC": {
+ "name": "Saint-Vincent-et-les-Grenadines"
+ },
+ "SH": {
+ "name": "Sainte-Hélène"
+ },
+ "LC": {
+ "name": "Sainte-Lucie"
+ },
+ "WS": {
+ "name": "Samoa"
+ },
+ "AS": {
+ "name": "Samoa américaines"
+ },
+ "ST": {
+ "name": "Sao Tomé-et-Principe"
+ },
+ "SN": {
+ "name": "Sénégal"
+ },
+ "RS": {
+ "name": "Serbie"
+ },
+ "SC": {
+ "name": "Seychelles"
+ },
+ "SL": {
+ "name": "Sierra Leone"
+ },
+ "SG": {
+ "name": "Singapour"
+ },
+ "SX": {
+ "name": "Sint Maarten"
+ },
+ "SK": {
+ "name": "Slovaquie"
+ },
+ "SI": {
+ "name": "Slovénie"
+ },
+ "SO": {
+ "name": "Somalie"
+ },
+ "SD": {
+ "name": "Soudan"
+ },
+ "SS": {
+ "name": "Soudan du Sud"
+ },
+ "LK": {
+ "name": "Sri Lanka"
+ },
+ "SE": {
+ "name": "Suède"
+ },
+ "CH": {
+ "name": "Suisse"
+ },
+ "SR": {
+ "name": "Suriname"
+ },
+ "SJ": {
+ "name": "Svalbard et Jan Mayen"
+ },
+ "SZ": {
+ "name": "Swaziland"
+ },
+ "SY": {
+ "name": "Syrie"
+ },
+ "TJ": {
+ "name": "Tadjikistan"
+ },
+ "TW": {
+ "name": "Taïwan"
+ },
+ "TZ": {
+ "name": "Tanzanie"
+ },
+ "TD": {
+ "name": "Tchad"
+ },
+ "TF": {
+ "name": "Terres australes françaises"
+ },
+ "IO": {
+ "name": "Territoire britannique de l’océan Indien"
+ },
+ "PS": {
+ "name": "Territoires palestiniens"
+ },
+ "TH": {
+ "name": "Thaïlande"
+ },
+ "TL": {
+ "name": "Timor oriental"
+ },
+ "TG": {
+ "name": "Togo"
+ },
+ "TK": {
+ "name": "Tokelau"
+ },
+ "TO": {
+ "name": "Tonga"
+ },
+ "TT": {
+ "name": "Trinité-et-Tobago"
+ },
+ "TA": {
+ "name": "Tristan da Cunha"
+ },
+ "TN": {
+ "name": "Tunisie"
+ },
+ "TM": {
+ "name": "Turkménistan"
+ },
+ "TR": {
+ "name": "Turquie"
+ },
+ "TV": {
+ "name": "Tuvalu"
+ },
+ "UA": {
+ "name": "Ukraine"
+ },
+ "UY": {
+ "name": "Uruguay"
+ },
+ "VU": {
+ "name": "Vanuatu"
+ },
+ "VE": {
+ "name": "Venezuela"
+ },
+ "VN": {
+ "name": "Vietnam"
+ },
+ "WF": {
+ "name": "Wallis-et-Futuna"
+ },
+ "YE": {
+ "name": "Yémen"
+ },
+ "ZM": {
+ "name": "Zambie"
+ },
+ "ZW": {
+ "name": "Zimbabwe"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/country/fr.json b/library/intl/resources/country/fr.json
new file mode 100644
index 000000000..db6e0d8f2
--- /dev/null
+++ b/library/intl/resources/country/fr.json
@@ -0,0 +1,761 @@
+{
+ "AF": {
+ "name": "Afghanistan"
+ },
+ "ZA": {
+ "name": "Afrique du Sud"
+ },
+ "AL": {
+ "name": "Albanie"
+ },
+ "DZ": {
+ "name": "Algérie"
+ },
+ "DE": {
+ "name": "Allemagne"
+ },
+ "AD": {
+ "name": "Andorre"
+ },
+ "AO": {
+ "name": "Angola"
+ },
+ "AI": {
+ "name": "Anguilla"
+ },
+ "AQ": {
+ "name": "Antarctique"
+ },
+ "AG": {
+ "name": "Antigua-et-Barbuda"
+ },
+ "SA": {
+ "name": "Arabie saoudite"
+ },
+ "AR": {
+ "name": "Argentine"
+ },
+ "AM": {
+ "name": "Arménie"
+ },
+ "AW": {
+ "name": "Aruba"
+ },
+ "AU": {
+ "name": "Australie"
+ },
+ "AT": {
+ "name": "Autriche"
+ },
+ "AZ": {
+ "name": "Azerbaïdjan"
+ },
+ "BS": {
+ "name": "Bahamas"
+ },
+ "BH": {
+ "name": "Bahreïn"
+ },
+ "BD": {
+ "name": "Bangladesh"
+ },
+ "BB": {
+ "name": "Barbade"
+ },
+ "BE": {
+ "name": "Belgique"
+ },
+ "BZ": {
+ "name": "Belize"
+ },
+ "BJ": {
+ "name": "Bénin"
+ },
+ "BM": {
+ "name": "Bermudes"
+ },
+ "BT": {
+ "name": "Bhoutan"
+ },
+ "BY": {
+ "name": "Biélorussie"
+ },
+ "BO": {
+ "name": "Bolivie"
+ },
+ "BA": {
+ "name": "Bosnie-Herzégovine"
+ },
+ "BW": {
+ "name": "Botswana"
+ },
+ "BR": {
+ "name": "Brésil"
+ },
+ "BN": {
+ "name": "Brunéi Darussalam"
+ },
+ "BG": {
+ "name": "Bulgarie"
+ },
+ "BF": {
+ "name": "Burkina Faso"
+ },
+ "BI": {
+ "name": "Burundi"
+ },
+ "KH": {
+ "name": "Cambodge"
+ },
+ "CM": {
+ "name": "Cameroun"
+ },
+ "CA": {
+ "name": "Canada"
+ },
+ "CV": {
+ "name": "Cap-Vert"
+ },
+ "EA": {
+ "name": "Ceuta et Melilla"
+ },
+ "CL": {
+ "name": "Chili"
+ },
+ "CN": {
+ "name": "Chine"
+ },
+ "CY": {
+ "name": "Chypre"
+ },
+ "CO": {
+ "name": "Colombie"
+ },
+ "KM": {
+ "name": "Comores"
+ },
+ "CG": {
+ "name": "Congo-Brazzaville"
+ },
+ "CD": {
+ "name": "Congo-Kinshasa"
+ },
+ "KP": {
+ "name": "Corée du Nord"
+ },
+ "KR": {
+ "name": "Corée du Sud"
+ },
+ "CR": {
+ "name": "Costa Rica"
+ },
+ "CI": {
+ "name": "Côte d’Ivoire"
+ },
+ "HR": {
+ "name": "Croatie"
+ },
+ "CU": {
+ "name": "Cuba"
+ },
+ "CW": {
+ "name": "Curaçao"
+ },
+ "DK": {
+ "name": "Danemark"
+ },
+ "DG": {
+ "name": "Diego Garcia"
+ },
+ "DJ": {
+ "name": "Djibouti"
+ },
+ "DM": {
+ "name": "Dominique"
+ },
+ "EG": {
+ "name": "Égypte"
+ },
+ "SV": {
+ "name": "El Salvador"
+ },
+ "AE": {
+ "name": "Émirats arabes unis"
+ },
+ "EC": {
+ "name": "Équateur"
+ },
+ "ER": {
+ "name": "Érythrée"
+ },
+ "ES": {
+ "name": "Espagne"
+ },
+ "EE": {
+ "name": "Estonie"
+ },
+ "VA": {
+ "name": "État de la Cité du Vatican"
+ },
+ "FM": {
+ "name": "États fédérés de Micronésie"
+ },
+ "US": {
+ "name": "États-Unis"
+ },
+ "ET": {
+ "name": "Éthiopie"
+ },
+ "FJ": {
+ "name": "Fidji"
+ },
+ "FI": {
+ "name": "Finlande"
+ },
+ "FR": {
+ "name": "France"
+ },
+ "GA": {
+ "name": "Gabon"
+ },
+ "GM": {
+ "name": "Gambie"
+ },
+ "GE": {
+ "name": "Géorgie"
+ },
+ "GH": {
+ "name": "Ghana"
+ },
+ "GI": {
+ "name": "Gibraltar"
+ },
+ "GR": {
+ "name": "Grèce"
+ },
+ "GD": {
+ "name": "Grenade"
+ },
+ "GL": {
+ "name": "Groenland"
+ },
+ "GP": {
+ "name": "Guadeloupe"
+ },
+ "GU": {
+ "name": "Guam"
+ },
+ "GT": {
+ "name": "Guatemala"
+ },
+ "GG": {
+ "name": "Guernesey"
+ },
+ "GN": {
+ "name": "Guinée"
+ },
+ "GQ": {
+ "name": "Guinée équatoriale"
+ },
+ "GW": {
+ "name": "Guinée-Bissau"
+ },
+ "GY": {
+ "name": "Guyana"
+ },
+ "GF": {
+ "name": "Guyane française"
+ },
+ "HT": {
+ "name": "Haïti"
+ },
+ "HN": {
+ "name": "Honduras"
+ },
+ "HU": {
+ "name": "Hongrie"
+ },
+ "CX": {
+ "name": "ÃŽle Christmas"
+ },
+ "AC": {
+ "name": "Île de l’Ascension"
+ },
+ "IM": {
+ "name": "ÃŽle de Man"
+ },
+ "NF": {
+ "name": "ÃŽle Norfolk"
+ },
+ "AX": {
+ "name": "ÃŽles Ã…land"
+ },
+ "KY": {
+ "name": "Îles Caïmans"
+ },
+ "IC": {
+ "name": "ÃŽles Canaries"
+ },
+ "CC": {
+ "name": "ÃŽles Cocos"
+ },
+ "CK": {
+ "name": "ÃŽles Cook"
+ },
+ "FO": {
+ "name": "Îles Féroé"
+ },
+ "GS": {
+ "name": "Îles Géorgie du Sud et Sandwich du Sud"
+ },
+ "FK": {
+ "name": "ÃŽles Malouines"
+ },
+ "MP": {
+ "name": "ÃŽles Mariannes du Nord"
+ },
+ "MH": {
+ "name": "ÃŽles Marshall"
+ },
+ "UM": {
+ "name": "Îles mineures éloignées des États-Unis"
+ },
+ "SB": {
+ "name": "ÃŽles Salomon"
+ },
+ "TC": {
+ "name": "Îles Turques-et-Caïques"
+ },
+ "VG": {
+ "name": "ÃŽles Vierges britanniques"
+ },
+ "VI": {
+ "name": "Îles Vierges des États-Unis"
+ },
+ "IN": {
+ "name": "Inde"
+ },
+ "ID": {
+ "name": "Indonésie"
+ },
+ "IQ": {
+ "name": "Irak"
+ },
+ "IR": {
+ "name": "Iran"
+ },
+ "IE": {
+ "name": "Irlande"
+ },
+ "IS": {
+ "name": "Islande"
+ },
+ "IL": {
+ "name": "Israël"
+ },
+ "IT": {
+ "name": "Italie"
+ },
+ "JM": {
+ "name": "Jamaïque"
+ },
+ "JP": {
+ "name": "Japon"
+ },
+ "JE": {
+ "name": "Jersey"
+ },
+ "JO": {
+ "name": "Jordanie"
+ },
+ "KZ": {
+ "name": "Kazakhstan"
+ },
+ "KE": {
+ "name": "Kenya"
+ },
+ "KG": {
+ "name": "Kirghizistan"
+ },
+ "KI": {
+ "name": "Kiribati"
+ },
+ "XK": {
+ "name": "Kosovo"
+ },
+ "KW": {
+ "name": "Koweït"
+ },
+ "RE": {
+ "name": "La Réunion"
+ },
+ "LA": {
+ "name": "Laos"
+ },
+ "LS": {
+ "name": "Lesotho"
+ },
+ "LV": {
+ "name": "Lettonie"
+ },
+ "LB": {
+ "name": "Liban"
+ },
+ "LR": {
+ "name": "Libéria"
+ },
+ "LY": {
+ "name": "Libye"
+ },
+ "LI": {
+ "name": "Liechtenstein"
+ },
+ "LT": {
+ "name": "Lituanie"
+ },
+ "LU": {
+ "name": "Luxembourg"
+ },
+ "MK": {
+ "name": "Macédoine"
+ },
+ "MG": {
+ "name": "Madagascar"
+ },
+ "MY": {
+ "name": "Malaisie"
+ },
+ "MW": {
+ "name": "Malawi"
+ },
+ "MV": {
+ "name": "Maldives"
+ },
+ "ML": {
+ "name": "Mali"
+ },
+ "MT": {
+ "name": "Malte"
+ },
+ "MA": {
+ "name": "Maroc"
+ },
+ "MQ": {
+ "name": "Martinique"
+ },
+ "MU": {
+ "name": "Maurice"
+ },
+ "MR": {
+ "name": "Mauritanie"
+ },
+ "YT": {
+ "name": "Mayotte"
+ },
+ "MX": {
+ "name": "Mexique"
+ },
+ "MD": {
+ "name": "Moldavie"
+ },
+ "MC": {
+ "name": "Monaco"
+ },
+ "MN": {
+ "name": "Mongolie"
+ },
+ "ME": {
+ "name": "Monténégro"
+ },
+ "MS": {
+ "name": "Montserrat"
+ },
+ "MZ": {
+ "name": "Mozambique"
+ },
+ "MM": {
+ "name": "Myanmar"
+ },
+ "NA": {
+ "name": "Namibie"
+ },
+ "NR": {
+ "name": "Nauru"
+ },
+ "NP": {
+ "name": "Népal"
+ },
+ "NI": {
+ "name": "Nicaragua"
+ },
+ "NE": {
+ "name": "Niger"
+ },
+ "NG": {
+ "name": "Nigéria"
+ },
+ "NU": {
+ "name": "Niue"
+ },
+ "NO": {
+ "name": "Norvège"
+ },
+ "NC": {
+ "name": "Nouvelle-Calédonie"
+ },
+ "NZ": {
+ "name": "Nouvelle-Zélande"
+ },
+ "OM": {
+ "name": "Oman"
+ },
+ "UG": {
+ "name": "Ouganda"
+ },
+ "UZ": {
+ "name": "Ouzbékistan"
+ },
+ "PK": {
+ "name": "Pakistan"
+ },
+ "PW": {
+ "name": "Palaos"
+ },
+ "PA": {
+ "name": "Panama"
+ },
+ "PG": {
+ "name": "Papouasie-Nouvelle-Guinée"
+ },
+ "PY": {
+ "name": "Paraguay"
+ },
+ "NL": {
+ "name": "Pays-Bas"
+ },
+ "BQ": {
+ "name": "Pays-Bas caribéens"
+ },
+ "PE": {
+ "name": "Pérou"
+ },
+ "PH": {
+ "name": "Philippines"
+ },
+ "PN": {
+ "name": "Pitcairn"
+ },
+ "PL": {
+ "name": "Pologne"
+ },
+ "PF": {
+ "name": "Polynésie française"
+ },
+ "PR": {
+ "name": "Porto Rico"
+ },
+ "PT": {
+ "name": "Portugal"
+ },
+ "QA": {
+ "name": "Qatar"
+ },
+ "HK": {
+ "name": "R.A.S. chinoise de Hong Kong"
+ },
+ "MO": {
+ "name": "R.A.S. chinoise de Macao"
+ },
+ "CF": {
+ "name": "République centrafricaine"
+ },
+ "DO": {
+ "name": "République dominicaine"
+ },
+ "CZ": {
+ "name": "République tchèque"
+ },
+ "RO": {
+ "name": "Roumanie"
+ },
+ "GB": {
+ "name": "Royaume-Uni"
+ },
+ "RU": {
+ "name": "Russie"
+ },
+ "RW": {
+ "name": "Rwanda"
+ },
+ "EH": {
+ "name": "Sahara occidental"
+ },
+ "BL": {
+ "name": "Saint-Barthélemy"
+ },
+ "KN": {
+ "name": "Saint-Christophe-et-Niévès"
+ },
+ "SM": {
+ "name": "Saint-Marin"
+ },
+ "MF": {
+ "name": "Saint-Martin (partie française)"
+ },
+ "SX": {
+ "name": "Saint-Martin (partie néerlandaise)"
+ },
+ "PM": {
+ "name": "Saint-Pierre-et-Miquelon"
+ },
+ "VC": {
+ "name": "Saint-Vincent-et-les-Grenadines"
+ },
+ "SH": {
+ "name": "Sainte-Hélène"
+ },
+ "LC": {
+ "name": "Sainte-Lucie"
+ },
+ "WS": {
+ "name": "Samoa"
+ },
+ "AS": {
+ "name": "Samoa américaines"
+ },
+ "ST": {
+ "name": "Sao Tomé-et-Principe"
+ },
+ "SN": {
+ "name": "Sénégal"
+ },
+ "RS": {
+ "name": "Serbie"
+ },
+ "SC": {
+ "name": "Seychelles"
+ },
+ "SL": {
+ "name": "Sierra Leone"
+ },
+ "SG": {
+ "name": "Singapour"
+ },
+ "SK": {
+ "name": "Slovaquie"
+ },
+ "SI": {
+ "name": "Slovénie"
+ },
+ "SO": {
+ "name": "Somalie"
+ },
+ "SD": {
+ "name": "Soudan"
+ },
+ "SS": {
+ "name": "Soudan du Sud"
+ },
+ "LK": {
+ "name": "Sri Lanka"
+ },
+ "SE": {
+ "name": "Suède"
+ },
+ "CH": {
+ "name": "Suisse"
+ },
+ "SR": {
+ "name": "Suriname"
+ },
+ "SJ": {
+ "name": "Svalbard et Jan Mayen"
+ },
+ "SZ": {
+ "name": "Swaziland"
+ },
+ "SY": {
+ "name": "Syrie"
+ },
+ "TJ": {
+ "name": "Tadjikistan"
+ },
+ "TW": {
+ "name": "Taïwan"
+ },
+ "TZ": {
+ "name": "Tanzanie"
+ },
+ "TD": {
+ "name": "Tchad"
+ },
+ "TF": {
+ "name": "Terres australes françaises"
+ },
+ "IO": {
+ "name": "Territoire britannique de l’océan Indien"
+ },
+ "PS": {
+ "name": "Territoires palestiniens"
+ },
+ "TH": {
+ "name": "Thaïlande"
+ },
+ "TL": {
+ "name": "Timor oriental"
+ },
+ "TG": {
+ "name": "Togo"
+ },
+ "TK": {
+ "name": "Tokelau"
+ },
+ "TO": {
+ "name": "Tonga"
+ },
+ "TT": {
+ "name": "Trinité-et-Tobago"
+ },
+ "TA": {
+ "name": "Tristan da Cunha"
+ },
+ "TN": {
+ "name": "Tunisie"
+ },
+ "TM": {
+ "name": "Turkménistan"
+ },
+ "TR": {
+ "name": "Turquie"
+ },
+ "TV": {
+ "name": "Tuvalu"
+ },
+ "UA": {
+ "name": "Ukraine"
+ },
+ "UY": {
+ "name": "Uruguay"
+ },
+ "VU": {
+ "name": "Vanuatu"
+ },
+ "VE": {
+ "name": "Venezuela"
+ },
+ "VN": {
+ "name": "Vietnam"
+ },
+ "WF": {
+ "name": "Wallis-et-Futuna"
+ },
+ "YE": {
+ "name": "Yémen"
+ },
+ "ZM": {
+ "name": "Zambie"
+ },
+ "ZW": {
+ "name": "Zimbabwe"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/country/fur.json b/library/intl/resources/country/fur.json
new file mode 100644
index 000000000..44bce8a36
--- /dev/null
+++ b/library/intl/resources/country/fur.json
@@ -0,0 +1,761 @@
+{
+ "AF": {
+ "name": "Afghanistan"
+ },
+ "AL": {
+ "name": "Albanie"
+ },
+ "DZ": {
+ "name": "Alzerie"
+ },
+ "AD": {
+ "name": "Andorra"
+ },
+ "AO": {
+ "name": "Angola"
+ },
+ "AI": {
+ "name": "Anguilla"
+ },
+ "AQ": {
+ "name": "Antartic"
+ },
+ "AG": {
+ "name": "Antigua e Barbuda"
+ },
+ "SA": {
+ "name": "Arabie Saudide"
+ },
+ "AR": {
+ "name": "Argjentine"
+ },
+ "AM": {
+ "name": "Armenie"
+ },
+ "AW": {
+ "name": "Aruba"
+ },
+ "AC": {
+ "name": "Ascension Island"
+ },
+ "AU": {
+ "name": "Australie"
+ },
+ "AT": {
+ "name": "Austrie"
+ },
+ "AZ": {
+ "name": "Azerbaigian"
+ },
+ "BS": {
+ "name": "Bahamas"
+ },
+ "BH": {
+ "name": "Bahrain"
+ },
+ "BD": {
+ "name": "Bangladesh"
+ },
+ "BB": {
+ "name": "Barbados"
+ },
+ "BE": {
+ "name": "Belgjiche"
+ },
+ "BZ": {
+ "name": "Belize"
+ },
+ "BJ": {
+ "name": "Benin"
+ },
+ "BM": {
+ "name": "Bermuda"
+ },
+ "BT": {
+ "name": "Bhutan"
+ },
+ "BY": {
+ "name": "Bielorussie"
+ },
+ "MM": {
+ "name": "Birmanie"
+ },
+ "BO": {
+ "name": "Bolivie"
+ },
+ "BA": {
+ "name": "Bosnie e Ercegovine"
+ },
+ "BW": {
+ "name": "Botswana"
+ },
+ "BR": {
+ "name": "Brasîl"
+ },
+ "BN": {
+ "name": "Brunei"
+ },
+ "BG": {
+ "name": "Bulgarie"
+ },
+ "BF": {
+ "name": "Burkina Faso"
+ },
+ "BI": {
+ "name": "Burundi"
+ },
+ "TD": {
+ "name": "Çad"
+ },
+ "KH": {
+ "name": "Camboze"
+ },
+ "CM": {
+ "name": "Camerun"
+ },
+ "CA": {
+ "name": "Canade"
+ },
+ "BQ": {
+ "name": "Caribbean Netherlands"
+ },
+ "EA": {
+ "name": "Ceuta e Melilla"
+ },
+ "CL": {
+ "name": "Cile"
+ },
+ "CN": {
+ "name": "Cine"
+ },
+ "CY": {
+ "name": "Cipri"
+ },
+ "CV": {
+ "name": "Cjâf vert"
+ },
+ "CO": {
+ "name": "Colombie"
+ },
+ "KM": {
+ "name": "Comoris"
+ },
+ "CG": {
+ "name": "Congo - Brazzaville"
+ },
+ "KP": {
+ "name": "Coree dal nord"
+ },
+ "KR": {
+ "name": "Coree dal sud"
+ },
+ "CR": {
+ "name": "Costa Rica"
+ },
+ "HR": {
+ "name": "Cravuazie"
+ },
+ "CU": {
+ "name": "Cuba"
+ },
+ "CI": {
+ "name": "Cueste di Avoli"
+ },
+ "CW": {
+ "name": "Curaçao"
+ },
+ "DK": {
+ "name": "Danimarcje"
+ },
+ "DG": {
+ "name": "Diego Garcia"
+ },
+ "DM": {
+ "name": "Dominiche"
+ },
+ "EC": {
+ "name": "Ecuador"
+ },
+ "EG": {
+ "name": "Egjit"
+ },
+ "SV": {
+ "name": "El Salvador"
+ },
+ "AE": {
+ "name": "Emirâts araps unîts"
+ },
+ "ER": {
+ "name": "Eritree"
+ },
+ "EE": {
+ "name": "Estonie"
+ },
+ "ET": {
+ "name": "Etiopie"
+ },
+ "PH": {
+ "name": "Filipinis"
+ },
+ "FI": {
+ "name": "Finlandie"
+ },
+ "FJ": {
+ "name": "Fizi"
+ },
+ "FR": {
+ "name": "France"
+ },
+ "GA": {
+ "name": "Gabon"
+ },
+ "GM": {
+ "name": "Gambia"
+ },
+ "GS": {
+ "name": "Georgia dal Sud e Isulis Sandwich dal Sud"
+ },
+ "GH": {
+ "name": "Ghana"
+ },
+ "DJ": {
+ "name": "Gibuti"
+ },
+ "JM": {
+ "name": "Gjamaiche"
+ },
+ "JP": {
+ "name": "Gjapon"
+ },
+ "GE": {
+ "name": "Gjeorgjie"
+ },
+ "DE": {
+ "name": "Gjermanie"
+ },
+ "GI": {
+ "name": "Gjibraltar"
+ },
+ "NC": {
+ "name": "Gnove Caledonie"
+ },
+ "NZ": {
+ "name": "Gnove Zelande"
+ },
+ "GR": {
+ "name": "Grecie"
+ },
+ "GD": {
+ "name": "Grenada"
+ },
+ "GL": {
+ "name": "Groenlande"
+ },
+ "GP": {
+ "name": "Guadalupe"
+ },
+ "GU": {
+ "name": "Guam"
+ },
+ "GT": {
+ "name": "Guatemala"
+ },
+ "GG": {
+ "name": "Guernsey"
+ },
+ "GF": {
+ "name": "Guiana francês"
+ },
+ "GW": {
+ "name": "Guinea-Bissau"
+ },
+ "GN": {
+ "name": "Guinee"
+ },
+ "GQ": {
+ "name": "Guinee ecuatoriâl"
+ },
+ "GY": {
+ "name": "Guyana"
+ },
+ "HT": {
+ "name": "Haiti"
+ },
+ "HN": {
+ "name": "Honduras"
+ },
+ "IN": {
+ "name": "India"
+ },
+ "ID": {
+ "name": "Indonesie"
+ },
+ "IR": {
+ "name": "Iran"
+ },
+ "IQ": {
+ "name": "Iraq"
+ },
+ "IE": {
+ "name": "Irlande"
+ },
+ "IS": {
+ "name": "Islande"
+ },
+ "NF": {
+ "name": "Isole Norfolk"
+ },
+ "IL": {
+ "name": "Israêl"
+ },
+ "CX": {
+ "name": "Isule Christmas"
+ },
+ "IM": {
+ "name": "Isule di Man"
+ },
+ "AX": {
+ "name": "Isulis Aland"
+ },
+ "IC": {
+ "name": "Isulis Canariis"
+ },
+ "KY": {
+ "name": "Isulis Cayman"
+ },
+ "CC": {
+ "name": "Isulis Cocos"
+ },
+ "CK": {
+ "name": "Isulis Cook"
+ },
+ "FK": {
+ "name": "Isulis Falkland"
+ },
+ "FO": {
+ "name": "Isulis Faroe"
+ },
+ "MP": {
+ "name": "Isulis Mariana dal Nord"
+ },
+ "MH": {
+ "name": "Isulis Marshall"
+ },
+ "UM": {
+ "name": "Isulis periferichis minôrs dai Stâts Unîts"
+ },
+ "SB": {
+ "name": "Isulis Salomon"
+ },
+ "TC": {
+ "name": "Isulis Turks e Caicos"
+ },
+ "VI": {
+ "name": "Isulis vergjinis americanis"
+ },
+ "VG": {
+ "name": "Isulis vergjinis britanichis"
+ },
+ "IT": {
+ "name": "Italie"
+ },
+ "JE": {
+ "name": "Jersey"
+ },
+ "JO": {
+ "name": "Jordanie"
+ },
+ "KZ": {
+ "name": "Kazachistan"
+ },
+ "KE": {
+ "name": "Kenya"
+ },
+ "KG": {
+ "name": "Kirghizstan"
+ },
+ "KI": {
+ "name": "Kiribati"
+ },
+ "XK": {
+ "name": "Kosovo"
+ },
+ "KW": {
+ "name": "Kuwait"
+ },
+ "LA": {
+ "name": "Laos"
+ },
+ "LS": {
+ "name": "Lesotho"
+ },
+ "LV": {
+ "name": "Letonie"
+ },
+ "LB": {
+ "name": "Liban"
+ },
+ "LR": {
+ "name": "Liberie"
+ },
+ "LY": {
+ "name": "Libie"
+ },
+ "LI": {
+ "name": "Liechtenstein"
+ },
+ "LT": {
+ "name": "Lituanie"
+ },
+ "LU": {
+ "name": "Lussemburc"
+ },
+ "MK": {
+ "name": "Macedonie"
+ },
+ "MG": {
+ "name": "Madagascar"
+ },
+ "MW": {
+ "name": "Malawi"
+ },
+ "MY": {
+ "name": "Malaysia"
+ },
+ "MV": {
+ "name": "Maldivis"
+ },
+ "ML": {
+ "name": "Mali"
+ },
+ "MT": {
+ "name": "Malta"
+ },
+ "MA": {
+ "name": "Maroc"
+ },
+ "MQ": {
+ "name": "Martiniche"
+ },
+ "MR": {
+ "name": "Mauritanie"
+ },
+ "MU": {
+ "name": "Maurizi"
+ },
+ "YT": {
+ "name": "Mayotte"
+ },
+ "MX": {
+ "name": "Messic"
+ },
+ "FM": {
+ "name": "Micronesie"
+ },
+ "MD": {
+ "name": "Moldavie"
+ },
+ "MC": {
+ "name": "Monaco"
+ },
+ "MN": {
+ "name": "Mongolie"
+ },
+ "ME": {
+ "name": "Montenegro"
+ },
+ "MS": {
+ "name": "Montserrat"
+ },
+ "MZ": {
+ "name": "Mozambic"
+ },
+ "NA": {
+ "name": "Namibie"
+ },
+ "NR": {
+ "name": "Nauru"
+ },
+ "NP": {
+ "name": "Nepal"
+ },
+ "NI": {
+ "name": "Nicaragua"
+ },
+ "NE": {
+ "name": "Niger"
+ },
+ "NG": {
+ "name": "Nigerie"
+ },
+ "NU": {
+ "name": "Niue"
+ },
+ "NO": {
+ "name": "Norvegje"
+ },
+ "OM": {
+ "name": "Oman"
+ },
+ "HU": {
+ "name": "Ongjarie"
+ },
+ "NL": {
+ "name": "Paîs bas"
+ },
+ "PK": {
+ "name": "Pakistan"
+ },
+ "PW": {
+ "name": "Palau"
+ },
+ "PA": {
+ "name": "Panamà"
+ },
+ "PG": {
+ "name": "Papue Gnove Guinee"
+ },
+ "PY": {
+ "name": "Paraguay"
+ },
+ "PE": {
+ "name": "Perù"
+ },
+ "PN": {
+ "name": "Pitcairn"
+ },
+ "PF": {
+ "name": "Polinesie francês"
+ },
+ "PL": {
+ "name": "Polonie"
+ },
+ "PR": {
+ "name": "Porto Rico"
+ },
+ "PT": {
+ "name": "Portugal"
+ },
+ "QA": {
+ "name": "Qatar"
+ },
+ "GB": {
+ "name": "Ream unît"
+ },
+ "HK": {
+ "name": "Regjon aministrative speciâl de Cine di Hong Kong"
+ },
+ "MO": {
+ "name": "Regjon aministrative speciâl de Cine di Macao"
+ },
+ "CZ": {
+ "name": "Republiche ceche"
+ },
+ "CF": {
+ "name": "Republiche centri africane"
+ },
+ "CD": {
+ "name": "Republiche Democratiche dal Congo"
+ },
+ "DO": {
+ "name": "Republiche dominicane"
+ },
+ "RE": {
+ "name": "Reunion"
+ },
+ "RO": {
+ "name": "Romanie"
+ },
+ "RW": {
+ "name": "Ruande"
+ },
+ "RU": {
+ "name": "Russie"
+ },
+ "EH": {
+ "name": "Sahara ocidentâl"
+ },
+ "WS": {
+ "name": "Samoa"
+ },
+ "AS": {
+ "name": "Samoa merecanis"
+ },
+ "KN": {
+ "name": "San Kitts e Nevis"
+ },
+ "SM": {
+ "name": "San Marin"
+ },
+ "PM": {
+ "name": "San Pierre e Miquelon"
+ },
+ "VC": {
+ "name": "San Vincent e lis Grenadinis"
+ },
+ "BL": {
+ "name": "Sant Barthélemy"
+ },
+ "MF": {
+ "name": "Sant Martin"
+ },
+ "SH": {
+ "name": "Sante Eline"
+ },
+ "LC": {
+ "name": "Sante Lusie"
+ },
+ "ST": {
+ "name": "Sao Tomè e Principe"
+ },
+ "SN": {
+ "name": "Senegal"
+ },
+ "RS": {
+ "name": "Serbie"
+ },
+ "SC": {
+ "name": "Seychelles"
+ },
+ "SL": {
+ "name": "Sierra Leone"
+ },
+ "SG": {
+ "name": "Singapore"
+ },
+ "SX": {
+ "name": "Sint Maarten"
+ },
+ "SY": {
+ "name": "Sirie"
+ },
+ "SK": {
+ "name": "Slovachie"
+ },
+ "SI": {
+ "name": "Slovenie"
+ },
+ "SO": {
+ "name": "Somalie"
+ },
+ "SS": {
+ "name": "South Sudan"
+ },
+ "ES": {
+ "name": "Spagne"
+ },
+ "LK": {
+ "name": "Sri Lanka"
+ },
+ "US": {
+ "name": "Stâts Unîts"
+ },
+ "ZA": {
+ "name": "Sud Afriche"
+ },
+ "SD": {
+ "name": "Sudan"
+ },
+ "SR": {
+ "name": "Suriname"
+ },
+ "SJ": {
+ "name": "Svalbard e Jan Mayen"
+ },
+ "SE": {
+ "name": "Svezie"
+ },
+ "CH": {
+ "name": "Svuizare"
+ },
+ "SZ": {
+ "name": "Swaziland"
+ },
+ "TH": {
+ "name": "Tailandie"
+ },
+ "TW": {
+ "name": "Taiwan"
+ },
+ "TZ": {
+ "name": "Tanzanie"
+ },
+ "TJ": {
+ "name": "Tazikistan"
+ },
+ "IO": {
+ "name": "Teritori britanic dal Ocean Indian"
+ },
+ "TF": {
+ "name": "Teritoris meridionâi francês"
+ },
+ "PS": {
+ "name": "Teritoris palestinês"
+ },
+ "TL": {
+ "name": "Timor orientâl"
+ },
+ "TG": {
+ "name": "Togo"
+ },
+ "TK": {
+ "name": "Tokelau"
+ },
+ "TO": {
+ "name": "Tonga"
+ },
+ "TT": {
+ "name": "Trinidad e Tobago"
+ },
+ "TA": {
+ "name": "Tristan da Cunha"
+ },
+ "TN": {
+ "name": "Tunisie"
+ },
+ "TR": {
+ "name": "Turchie"
+ },
+ "TM": {
+ "name": "Turkmenistan"
+ },
+ "TV": {
+ "name": "Tuvalu"
+ },
+ "UA": {
+ "name": "Ucraine"
+ },
+ "UG": {
+ "name": "Uganda"
+ },
+ "UY": {
+ "name": "Uruguay"
+ },
+ "UZ": {
+ "name": "Uzbechistan"
+ },
+ "VU": {
+ "name": "Vanuatu"
+ },
+ "VA": {
+ "name": "Vatican"
+ },
+ "VE": {
+ "name": "Venezuela"
+ },
+ "VN": {
+ "name": "Vietnam"
+ },
+ "WF": {
+ "name": "Wallis e Futuna"
+ },
+ "YE": {
+ "name": "Yemen"
+ },
+ "ZM": {
+ "name": "Zambia"
+ },
+ "ZW": {
+ "name": "Zimbabwe"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/country/fy.json b/library/intl/resources/country/fy.json
new file mode 100644
index 000000000..ae3b71d81
--- /dev/null
+++ b/library/intl/resources/country/fy.json
@@ -0,0 +1,761 @@
+{
+ "AF": {
+ "name": "Afghanistan"
+ },
+ "AX": {
+ "name": "Ålân"
+ },
+ "AL": {
+ "name": "Albanië"
+ },
+ "DZ": {
+ "name": "Algerije"
+ },
+ "AS": {
+ "name": "Amerikaansk Samoa"
+ },
+ "VI": {
+ "name": "Amerikaanske Maagdeneilannen"
+ },
+ "AD": {
+ "name": "Andorra"
+ },
+ "AO": {
+ "name": "Angola"
+ },
+ "AI": {
+ "name": "Anguilla"
+ },
+ "AQ": {
+ "name": "Antarctica"
+ },
+ "AG": {
+ "name": "Antigua en Barbuda"
+ },
+ "AR": {
+ "name": "Argentinië"
+ },
+ "AM": {
+ "name": "Armenië"
+ },
+ "AW": {
+ "name": "Aruba"
+ },
+ "AC": {
+ "name": "Ascension"
+ },
+ "AU": {
+ "name": "Australië"
+ },
+ "AZ": {
+ "name": "Azerbeidzjan"
+ },
+ "BS": {
+ "name": "Bahama’s"
+ },
+ "BH": {
+ "name": "Bahrein"
+ },
+ "BD": {
+ "name": "Bangladesh"
+ },
+ "BB": {
+ "name": "Barbados"
+ },
+ "BE": {
+ "name": "België"
+ },
+ "BZ": {
+ "name": "Belize"
+ },
+ "BJ": {
+ "name": "Benin"
+ },
+ "BM": {
+ "name": "Bermuda"
+ },
+ "BT": {
+ "name": "Bhutan"
+ },
+ "BO": {
+ "name": "Bolivia"
+ },
+ "BA": {
+ "name": "Bosnië en Herzegovina"
+ },
+ "BW": {
+ "name": "Botswana"
+ },
+ "BR": {
+ "name": "Brazilië"
+ },
+ "IO": {
+ "name": "Britse Gebieden yn de Indyske Oseaan"
+ },
+ "VG": {
+ "name": "Britse Maagdeneilannen"
+ },
+ "BN": {
+ "name": "Brunei"
+ },
+ "BG": {
+ "name": "Bulgarije"
+ },
+ "BF": {
+ "name": "Burkina Faso"
+ },
+ "BI": {
+ "name": "Burundi"
+ },
+ "KH": {
+ "name": "Cambodja"
+ },
+ "CA": {
+ "name": "Canada"
+ },
+ "KY": {
+ "name": "Caymaneilannen"
+ },
+ "EA": {
+ "name": "Ceuta en Melilla"
+ },
+ "CL": {
+ "name": "Chili"
+ },
+ "KM": {
+ "name": "Comoren"
+ },
+ "CG": {
+ "name": "Congo-Brazzaville"
+ },
+ "CD": {
+ "name": "Congo-Kinshasa"
+ },
+ "CK": {
+ "name": "Cookeilannen"
+ },
+ "CR": {
+ "name": "Costa Rica"
+ },
+ "CW": {
+ "name": "Curaçao"
+ },
+ "DK": {
+ "name": "Denemarken"
+ },
+ "DG": {
+ "name": "Diego Garcia"
+ },
+ "DJ": {
+ "name": "Djibouti"
+ },
+ "DM": {
+ "name": "Dominika"
+ },
+ "DO": {
+ "name": "Dominikaanske Republyk"
+ },
+ "DE": {
+ "name": "Dútslân"
+ },
+ "TL": {
+ "name": "East-Timor"
+ },
+ "AT": {
+ "name": "Eastenryk"
+ },
+ "EC": {
+ "name": "Ecuador"
+ },
+ "EG": {
+ "name": "Egypte"
+ },
+ "SV": {
+ "name": "El Salvador"
+ },
+ "GQ": {
+ "name": "Equatoriaal-Guinea"
+ },
+ "ER": {
+ "name": "Eritrea"
+ },
+ "EE": {
+ "name": "Estlân"
+ },
+ "ET": {
+ "name": "Ethiopië"
+ },
+ "FO": {
+ "name": "Faeröer"
+ },
+ "FK": {
+ "name": "Falklâneilannen"
+ },
+ "US": {
+ "name": "Ferienigde Staten"
+ },
+ "FJ": {
+ "name": "Fiji"
+ },
+ "PH": {
+ "name": "Filipijnen"
+ },
+ "FI": {
+ "name": "Finlân"
+ },
+ "FR": {
+ "name": "Frankrijk"
+ },
+ "GF": {
+ "name": "Frans-Guyana"
+ },
+ "PF": {
+ "name": "Frans-Polynesië"
+ },
+ "TF": {
+ "name": "Franse Gebieden in de zuidelijke Indyske Oseaan"
+ },
+ "GA": {
+ "name": "Gabon"
+ },
+ "GM": {
+ "name": "Gambia"
+ },
+ "GE": {
+ "name": "Georgië"
+ },
+ "GH": {
+ "name": "Ghana"
+ },
+ "GI": {
+ "name": "Gibraltar"
+ },
+ "GD": {
+ "name": "Grenada"
+ },
+ "GL": {
+ "name": "Grienlân"
+ },
+ "GR": {
+ "name": "Grikelân"
+ },
+ "GP": {
+ "name": "Guadeloupe"
+ },
+ "GU": {
+ "name": "Guam"
+ },
+ "GT": {
+ "name": "Guatemala"
+ },
+ "GG": {
+ "name": "Guernsey"
+ },
+ "GN": {
+ "name": "Guinee"
+ },
+ "GW": {
+ "name": "Guinee-Bissau"
+ },
+ "GY": {
+ "name": "Guyana"
+ },
+ "HT": {
+ "name": "Haïti"
+ },
+ "HN": {
+ "name": "Honduras"
+ },
+ "HU": {
+ "name": "Hongarije"
+ },
+ "HK": {
+ "name": "Hongkong SAR van Sina"
+ },
+ "IE": {
+ "name": "Ierlân"
+ },
+ "IN": {
+ "name": "India"
+ },
+ "IQ": {
+ "name": "Irak"
+ },
+ "IR": {
+ "name": "Iran"
+ },
+ "IM": {
+ "name": "Isle of Man"
+ },
+ "IL": {
+ "name": "Israël"
+ },
+ "IT": {
+ "name": "Italië"
+ },
+ "CI": {
+ "name": "Ivoorkust"
+ },
+ "JM": {
+ "name": "Jamaica"
+ },
+ "JP": {
+ "name": "Japan"
+ },
+ "YE": {
+ "name": "Jemen"
+ },
+ "JE": {
+ "name": "Jersey"
+ },
+ "JO": {
+ "name": "Jordanië"
+ },
+ "CV": {
+ "name": "Kaapverdië"
+ },
+ "CM": {
+ "name": "Kameroen"
+ },
+ "IC": {
+ "name": "Kanaryske Eilânnen"
+ },
+ "BQ": {
+ "name": "Karibysk Nederlân"
+ },
+ "KZ": {
+ "name": "Kazachstan"
+ },
+ "KE": {
+ "name": "Kenia"
+ },
+ "KG": {
+ "name": "Kirgizië"
+ },
+ "KI": {
+ "name": "Kiribati"
+ },
+ "KW": {
+ "name": "Koeweit"
+ },
+ "CC": {
+ "name": "Kokosilanen"
+ },
+ "CO": {
+ "name": "Kolombia"
+ },
+ "XK": {
+ "name": "Kosovo"
+ },
+ "HR": {
+ "name": "Kroatië"
+ },
+ "CX": {
+ "name": "Krysteilan"
+ },
+ "CU": {
+ "name": "Kuba"
+ },
+ "LA": {
+ "name": "Laos"
+ },
+ "LS": {
+ "name": "Lesotho"
+ },
+ "LV": {
+ "name": "Letlân"
+ },
+ "LB": {
+ "name": "Libanon"
+ },
+ "LR": {
+ "name": "Liberia"
+ },
+ "LY": {
+ "name": "Libië"
+ },
+ "LI": {
+ "name": "Liechtenstein"
+ },
+ "LT": {
+ "name": "Litouwen"
+ },
+ "LU": {
+ "name": "Luxemburg"
+ },
+ "UM": {
+ "name": "Lyts ôflizzen eilannen fan de Ferienigde Staten"
+ },
+ "MO": {
+ "name": "Macao SAR van Sina"
+ },
+ "MK": {
+ "name": "Macedonië"
+ },
+ "MG": {
+ "name": "Madeiaskar"
+ },
+ "MW": {
+ "name": "Malawi"
+ },
+ "MV": {
+ "name": "Maldiven"
+ },
+ "MY": {
+ "name": "Maleisië"
+ },
+ "ML": {
+ "name": "Mali"
+ },
+ "MT": {
+ "name": "Malta"
+ },
+ "MA": {
+ "name": "Marokko"
+ },
+ "MH": {
+ "name": "Marshalleilannen"
+ },
+ "MQ": {
+ "name": "Martinique"
+ },
+ "MR": {
+ "name": "Mauritanië"
+ },
+ "MU": {
+ "name": "Mauritius"
+ },
+ "YT": {
+ "name": "Mayotte"
+ },
+ "MX": {
+ "name": "Mexico"
+ },
+ "FM": {
+ "name": "Micronesië"
+ },
+ "MD": {
+ "name": "Moldavië"
+ },
+ "MC": {
+ "name": "Monaco"
+ },
+ "MN": {
+ "name": "Mongolië"
+ },
+ "ME": {
+ "name": "Montenegro"
+ },
+ "MS": {
+ "name": "Montserrat"
+ },
+ "MZ": {
+ "name": "Mozambique"
+ },
+ "MM": {
+ "name": "Myanmar (Birma)"
+ },
+ "NA": {
+ "name": "Namibië"
+ },
+ "NR": {
+ "name": "Nauru"
+ },
+ "NL": {
+ "name": "Nederlân"
+ },
+ "NP": {
+ "name": "Nepal"
+ },
+ "NI": {
+ "name": "Nicaragua"
+ },
+ "NE": {
+ "name": "Niger"
+ },
+ "NG": {
+ "name": "Nigeria"
+ },
+ "NC": {
+ "name": "Nij-Caledonië"
+ },
+ "NZ": {
+ "name": "Nij-Seelân"
+ },
+ "NU": {
+ "name": "Niue"
+ },
+ "KP": {
+ "name": "Noard-Korea"
+ },
+ "MP": {
+ "name": "Noardlike Marianeneilannen"
+ },
+ "NO": {
+ "name": "Noarwegen"
+ },
+ "NF": {
+ "name": "Norfolkeilân"
+ },
+ "UG": {
+ "name": "Oeganda"
+ },
+ "UA": {
+ "name": "Oekraïne"
+ },
+ "UZ": {
+ "name": "Oezbekistan"
+ },
+ "OM": {
+ "name": "Oman"
+ },
+ "PK": {
+ "name": "Pakistan"
+ },
+ "PW": {
+ "name": "Palau"
+ },
+ "PS": {
+ "name": "Palestynske gebieten"
+ },
+ "PA": {
+ "name": "Panama"
+ },
+ "PG": {
+ "name": "Papoea-Nij-Guinea"
+ },
+ "PY": {
+ "name": "Paraguay"
+ },
+ "PE": {
+ "name": "Peru"
+ },
+ "PN": {
+ "name": "Pitcairneilannen"
+ },
+ "PL": {
+ "name": "Polen"
+ },
+ "PT": {
+ "name": "Portugal"
+ },
+ "PR": {
+ "name": "Puerto Rico"
+ },
+ "QA": {
+ "name": "Qatar"
+ },
+ "RE": {
+ "name": "Réunion"
+ },
+ "RO": {
+ "name": "Roemenië"
+ },
+ "RU": {
+ "name": "Ruslân"
+ },
+ "RW": {
+ "name": "Rwanda"
+ },
+ "BL": {
+ "name": "Saint Barthélemy"
+ },
+ "KN": {
+ "name": "Saint Kitts en Nevis"
+ },
+ "LC": {
+ "name": "Saint Lucia"
+ },
+ "VC": {
+ "name": "Saint Vincent en de Grenadines"
+ },
+ "MF": {
+ "name": "Saint-Martin"
+ },
+ "PM": {
+ "name": "Saint-Pierre en Miquelon"
+ },
+ "SB": {
+ "name": "Salomonseilannen"
+ },
+ "WS": {
+ "name": "Samoa"
+ },
+ "SM": {
+ "name": "San Marino"
+ },
+ "ST": {
+ "name": "Sao Tomé en Principe"
+ },
+ "SA": {
+ "name": "Saoedi-Arabië"
+ },
+ "SN": {
+ "name": "Senegal"
+ },
+ "RS": {
+ "name": "Servië"
+ },
+ "SC": {
+ "name": "Seychellen"
+ },
+ "SL": {
+ "name": "Sierra Leone"
+ },
+ "CN": {
+ "name": "Sina"
+ },
+ "SG": {
+ "name": "Singapore"
+ },
+ "SH": {
+ "name": "Sint-Helena"
+ },
+ "SX": {
+ "name": "Sint-Maarten"
+ },
+ "CF": {
+ "name": "Sintraal-Afrikaanske Republyk"
+ },
+ "SI": {
+ "name": "Slovenië"
+ },
+ "SK": {
+ "name": "Slowakije"
+ },
+ "SD": {
+ "name": "Soedan"
+ },
+ "SO": {
+ "name": "Somalië"
+ },
+ "ES": {
+ "name": "Spanje"
+ },
+ "SJ": {
+ "name": "Spitsbergen en Jan Mayen"
+ },
+ "LK": {
+ "name": "Sri Lanka"
+ },
+ "ZA": {
+ "name": "Sûd-Afrika"
+ },
+ "GS": {
+ "name": "Sûd-Georgia en Sûdlike Sandwicheilannen"
+ },
+ "KR": {
+ "name": "Sûd-Korea"
+ },
+ "SS": {
+ "name": "Sûd-Soedan"
+ },
+ "SR": {
+ "name": "Suriname"
+ },
+ "SZ": {
+ "name": "Swazilân"
+ },
+ "CH": {
+ "name": "Switserlân"
+ },
+ "CY": {
+ "name": "Syprus"
+ },
+ "SY": {
+ "name": "Syrië"
+ },
+ "TJ": {
+ "name": "Tadzjikistan"
+ },
+ "TW": {
+ "name": "Taiwan"
+ },
+ "TZ": {
+ "name": "Tanzania"
+ },
+ "TH": {
+ "name": "Thailân"
+ },
+ "TG": {
+ "name": "Togo"
+ },
+ "TK": {
+ "name": "Tokelau"
+ },
+ "TO": {
+ "name": "Tonga"
+ },
+ "TT": {
+ "name": "Trinidad en Tobago"
+ },
+ "TA": {
+ "name": "Tristan da Cunha"
+ },
+ "TD": {
+ "name": "Tsjaad"
+ },
+ "CZ": {
+ "name": "Tsjechje"
+ },
+ "TN": {
+ "name": "Tunesië"
+ },
+ "TR": {
+ "name": "Turkije"
+ },
+ "TM": {
+ "name": "Turkmenistan"
+ },
+ "TC": {
+ "name": "Turks- en Caicoseilannen"
+ },
+ "TV": {
+ "name": "Tuvalu"
+ },
+ "UY": {
+ "name": "Uruguay"
+ },
+ "VU": {
+ "name": "Vanuatu"
+ },
+ "VA": {
+ "name": "Vaticaanstêd"
+ },
+ "VE": {
+ "name": "Venezuela"
+ },
+ "GB": {
+ "name": "Verenigd Koninkrijk"
+ },
+ "AE": {
+ "name": "Verenigde Arabyske Emiraten"
+ },
+ "VN": {
+ "name": "Vietnam"
+ },
+ "WF": {
+ "name": "Wallis en Futuna"
+ },
+ "EH": {
+ "name": "Westelijke Sahara"
+ },
+ "BY": {
+ "name": "Wit-Ruslân"
+ },
+ "ID": {
+ "name": "Yndonesië"
+ },
+ "IS": {
+ "name": "Yslân"
+ },
+ "ZM": {
+ "name": "Zambia"
+ },
+ "ZW": {
+ "name": "Zimbabwe"
+ },
+ "SE": {
+ "name": "Zweden"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/country/ga.json b/library/intl/resources/country/ga.json
new file mode 100644
index 000000000..c43deae91
--- /dev/null
+++ b/library/intl/resources/country/ga.json
@@ -0,0 +1,761 @@
+{
+ "ET": {
+ "name": "An Aetóip"
+ },
+ "AF": {
+ "name": "An Afganastáin"
+ },
+ "ZA": {
+ "name": "An Afraic Theas"
+ },
+ "DZ": {
+ "name": "An Ailgéir"
+ },
+ "AR": {
+ "name": "An Airgintín"
+ },
+ "AM": {
+ "name": "An Airméin"
+ },
+ "AL": {
+ "name": "An Albáin"
+ },
+ "AQ": {
+ "name": "An Antartaice"
+ },
+ "SA": {
+ "name": "An Araib Shádach"
+ },
+ "AZ": {
+ "name": "An Asarbaiseáin"
+ },
+ "AU": {
+ "name": "An Astráil"
+ },
+ "BD": {
+ "name": "An Bhanglaidéis"
+ },
+ "BY": {
+ "name": "An Bhealarúis"
+ },
+ "BE": {
+ "name": "An Bheilg"
+ },
+ "BZ": {
+ "name": "An Bheilís"
+ },
+ "BA": {
+ "name": "An Bhoisnia agus An Heirseagaivéin"
+ },
+ "BO": {
+ "name": "An Bholaiv"
+ },
+ "BW": {
+ "name": "An Bhotsuáin"
+ },
+ "BR": {
+ "name": "An Bhrasaíl"
+ },
+ "BG": {
+ "name": "An Bhulgáir"
+ },
+ "BI": {
+ "name": "An Bhurúin"
+ },
+ "BT": {
+ "name": "An Bhútáin"
+ },
+ "KH": {
+ "name": "An Chambóid"
+ },
+ "KZ": {
+ "name": "An Chasacstáin"
+ },
+ "KE": {
+ "name": "An Chéinia"
+ },
+ "CY": {
+ "name": "An Chipir"
+ },
+ "KG": {
+ "name": "An Chirgeastáin"
+ },
+ "KR": {
+ "name": "An Chóiré Theas"
+ },
+ "KP": {
+ "name": "An Chóiré Thuaidh"
+ },
+ "CO": {
+ "name": "An Cholóim"
+ },
+ "XK": {
+ "name": "An Chosaiv"
+ },
+ "HR": {
+ "name": "An Chróit"
+ },
+ "CG": {
+ "name": "An Congó"
+ },
+ "CI": {
+ "name": "An Cósta Eabhair"
+ },
+ "DK": {
+ "name": "An Danmhairg"
+ },
+ "EE": {
+ "name": "An Eastóin"
+ },
+ "EG": {
+ "name": "An Éigipt"
+ },
+ "CH": {
+ "name": "An Eilvéis"
+ },
+ "ER": {
+ "name": "An Eiritré"
+ },
+ "FI": {
+ "name": "An Fhionlainn"
+ },
+ "FR": {
+ "name": "An Fhrainc"
+ },
+ "GA": {
+ "name": "An Ghabúin"
+ },
+ "GM": {
+ "name": "An Ghaimbia"
+ },
+ "DE": {
+ "name": "An Ghearmáin"
+ },
+ "GL": {
+ "name": "An Ghraonlainn"
+ },
+ "GR": {
+ "name": "An Ghréig"
+ },
+ "GY": {
+ "name": "An Ghuáin"
+ },
+ "GN": {
+ "name": "An Ghuine"
+ },
+ "GQ": {
+ "name": "An Ghuine Mheánchriosach"
+ },
+ "IQ": {
+ "name": "An Iaráic"
+ },
+ "IR": {
+ "name": "An Iaráin"
+ },
+ "IN": {
+ "name": "An India"
+ },
+ "ID": {
+ "name": "An Indinéis"
+ },
+ "IT": {
+ "name": "An Iodáil"
+ },
+ "JO": {
+ "name": "An Iordáin"
+ },
+ "NO": {
+ "name": "An Iorua"
+ },
+ "IS": {
+ "name": "An Ãoslainn"
+ },
+ "NL": {
+ "name": "An Ãsiltír"
+ },
+ "BQ": {
+ "name": "An Ãsiltír Chairibeach"
+ },
+ "LV": {
+ "name": "An Laitvia"
+ },
+ "LR": {
+ "name": "An Libéir"
+ },
+ "LY": {
+ "name": "An Libia"
+ },
+ "LB": {
+ "name": "An Liobáin"
+ },
+ "LT": {
+ "name": "An Liotuáin"
+ },
+ "MK": {
+ "name": "An Mhacadóin"
+ },
+ "MY": {
+ "name": "An Mhalaeisia"
+ },
+ "MW": {
+ "name": "An Mhaláiv"
+ },
+ "MR": {
+ "name": "An Mháratáin"
+ },
+ "FM": {
+ "name": "An Mhicrinéis"
+ },
+ "MD": {
+ "name": "An Mholdóiv"
+ },
+ "MN": {
+ "name": "An Mhongóil"
+ },
+ "NA": {
+ "name": "An Namaib"
+ },
+ "NG": {
+ "name": "An Nigéir"
+ },
+ "NE": {
+ "name": "An Nígir"
+ },
+ "NC": {
+ "name": "An Nua-Chaladóin"
+ },
+ "NZ": {
+ "name": "An Nua-Shéalainn"
+ },
+ "AT": {
+ "name": "An Ostair"
+ },
+ "PK": {
+ "name": "An Phacastáin"
+ },
+ "DO": {
+ "name": "An Phoblacht Dhoiminiceach"
+ },
+ "PL": {
+ "name": "An Pholainn"
+ },
+ "PT": {
+ "name": "An Phortaingéil"
+ },
+ "GB": {
+ "name": "An Ríocht Aontaithe"
+ },
+ "RO": {
+ "name": "An Rómáin"
+ },
+ "RU": {
+ "name": "An Rúis"
+ },
+ "EH": {
+ "name": "An Sahára Thiar"
+ },
+ "ES": {
+ "name": "An Spáinn"
+ },
+ "TJ": {
+ "name": "An Táidsíceastáin"
+ },
+ "TZ": {
+ "name": "An Tansáin"
+ },
+ "TH": {
+ "name": "An Téalainn"
+ },
+ "TW": {
+ "name": "An Téaváin"
+ },
+ "ZM": {
+ "name": "An tSaimbia"
+ },
+ "SV": {
+ "name": "An tSalvadóir"
+ },
+ "JP": {
+ "name": "An tSeapáin"
+ },
+ "SN": {
+ "name": "An tSeineagáil"
+ },
+ "RS": {
+ "name": "An tSeirbia"
+ },
+ "GE": {
+ "name": "An tSeoirsia"
+ },
+ "GS": {
+ "name": "An tSeoirsia Theas agus Oileáin Sandwich Theas"
+ },
+ "CL": {
+ "name": "An tSile"
+ },
+ "CN": {
+ "name": "An tSín"
+ },
+ "ZW": {
+ "name": "An tSiombáib"
+ },
+ "SY": {
+ "name": "An tSiria"
+ },
+ "SI": {
+ "name": "An tSlóivéin"
+ },
+ "SK": {
+ "name": "An tSlóvaic"
+ },
+ "SO": {
+ "name": "An tSomáil"
+ },
+ "SE": {
+ "name": "An tSualainn"
+ },
+ "SZ": {
+ "name": "An tSuasalainn"
+ },
+ "SD": {
+ "name": "An tSúdáin"
+ },
+ "SS": {
+ "name": "An tSúdáin Theas"
+ },
+ "TN": {
+ "name": "An Túinéis"
+ },
+ "TR": {
+ "name": "An Tuirc"
+ },
+ "TM": {
+ "name": "An Tuircméanastáin"
+ },
+ "UA": {
+ "name": "An Úcráin"
+ },
+ "UZ": {
+ "name": "An Úisbéiceastáin"
+ },
+ "HU": {
+ "name": "An Ungáir"
+ },
+ "VA": {
+ "name": "An Vatacáin"
+ },
+ "AD": {
+ "name": "Andóra"
+ },
+ "AI": {
+ "name": "Angaíle"
+ },
+ "AO": {
+ "name": "Angóla"
+ },
+ "AG": {
+ "name": "Antigua agus Barbúda"
+ },
+ "AE": {
+ "name": "Aontas na nÉimíríochtaí Arabacha"
+ },
+ "AW": {
+ "name": "Arúba"
+ },
+ "BH": {
+ "name": "Bairéin"
+ },
+ "BB": {
+ "name": "Barbadós"
+ },
+ "BJ": {
+ "name": "Beinin"
+ },
+ "BM": {
+ "name": "Beirmiúda"
+ },
+ "BN": {
+ "name": "Brúiné"
+ },
+ "BF": {
+ "name": "Buircíne Fasó"
+ },
+ "CM": {
+ "name": "Camarún"
+ },
+ "QA": {
+ "name": "Catar"
+ },
+ "CA": {
+ "name": "Ceanada"
+ },
+ "EA": {
+ "name": "Ceuta agus Melilla"
+ },
+ "KI": {
+ "name": "Cireabaití"
+ },
+ "CR": {
+ "name": "Cósta Ríce"
+ },
+ "IO": {
+ "name": "Críoch Aigéan Indiach na Breataine"
+ },
+ "TF": {
+ "name": "Críocha Francacha Dheisceart an Domhain"
+ },
+ "KW": {
+ "name": "Cuáit"
+ },
+ "CU": {
+ "name": "Cúba"
+ },
+ "CW": {
+ "name": "Curaçao"
+ },
+ "DG": {
+ "name": "Diego Garcia"
+ },
+ "DJ": {
+ "name": "Djibouti"
+ },
+ "DM": {
+ "name": "Doiminice"
+ },
+ "EC": {
+ "name": "Eacuadór"
+ },
+ "YE": {
+ "name": "Éimin"
+ },
+ "IE": {
+ "name": "Éire"
+ },
+ "FJ": {
+ "name": "Fidsí"
+ },
+ "GH": {
+ "name": "Gána"
+ },
+ "GG": {
+ "name": "Geansaí"
+ },
+ "JE": {
+ "name": "Geirsí"
+ },
+ "GI": {
+ "name": "Giobráltar"
+ },
+ "GD": {
+ "name": "Greanáda"
+ },
+ "GP": {
+ "name": "Guadalúip"
+ },
+ "GF": {
+ "name": "Guáin na Fraince"
+ },
+ "GU": {
+ "name": "Guam"
+ },
+ "GT": {
+ "name": "Guatamala"
+ },
+ "GW": {
+ "name": "Guine Bissau"
+ },
+ "HT": {
+ "name": "Háítí"
+ },
+ "HN": {
+ "name": "Hondúras"
+ },
+ "JM": {
+ "name": "Iamáice"
+ },
+ "IL": {
+ "name": "Iosrael"
+ },
+ "LA": {
+ "name": "Laos"
+ },
+ "LS": {
+ "name": "Leosóta"
+ },
+ "LI": {
+ "name": "Lichtinstéin"
+ },
+ "LU": {
+ "name": "Lucsamburg"
+ },
+ "MG": {
+ "name": "Madagascar"
+ },
+ "MM": {
+ "name": "Maenmar (Burma)"
+ },
+ "ML": {
+ "name": "Mailí"
+ },
+ "MT": {
+ "name": "Málta"
+ },
+ "MA": {
+ "name": "Maracó"
+ },
+ "MQ": {
+ "name": "Martinique"
+ },
+ "YT": {
+ "name": "Mayotte"
+ },
+ "MX": {
+ "name": "Meicsiceo"
+ },
+ "MC": {
+ "name": "Monacó"
+ },
+ "ME": {
+ "name": "Montainéagró"
+ },
+ "MS": {
+ "name": "Montsarat"
+ },
+ "MZ": {
+ "name": "Mósaimbíc"
+ },
+ "BS": {
+ "name": "Na Bahámaí"
+ },
+ "PS": {
+ "name": "Na Críocha Palaistíneacha"
+ },
+ "IC": {
+ "name": "Na hOileáin Chanáracha"
+ },
+ "PH": {
+ "name": "Na hOileáin Fhilipíneacha"
+ },
+ "MP": {
+ "name": "Na hOileáin Mháirianacha Thuaidh"
+ },
+ "SC": {
+ "name": "Na Séiséil"
+ },
+ "NR": {
+ "name": "Nárú"
+ },
+ "NP": {
+ "name": "Neipeal"
+ },
+ "NI": {
+ "name": "Nicearagua"
+ },
+ "NU": {
+ "name": "Niue"
+ },
+ "PG": {
+ "name": "Nua-Ghuine Phapua"
+ },
+ "AX": {
+ "name": "Oileáin Åland"
+ },
+ "VG": {
+ "name": "Oileáin Bhriotanacha na Maighdean"
+ },
+ "KY": {
+ "name": "Oileáin Cayman"
+ },
+ "KM": {
+ "name": "Oileáin Chomóra"
+ },
+ "CC": {
+ "name": "Oileáin Cocos (Keeling)"
+ },
+ "CK": {
+ "name": "Oileáin Cook"
+ },
+ "FK": {
+ "name": "Oileáin Fháclainne"
+ },
+ "FO": {
+ "name": "Oileáin Fharó"
+ },
+ "UM": {
+ "name": "Oileáin Imeallacha S.A.M."
+ },
+ "MH": {
+ "name": "Oileáin Marshall"
+ },
+ "MV": {
+ "name": "Oileáin Mhaildíve"
+ },
+ "VI": {
+ "name": "Oileáin Mheiriceánacha na Maighdean"
+ },
+ "TC": {
+ "name": "Oileáin na dTurcach agus Caicos"
+ },
+ "PN": {
+ "name": "Oileáin Pitcairn"
+ },
+ "SB": {
+ "name": "Oileáin Sholomón"
+ },
+ "IM": {
+ "name": "Oileán Mhanann"
+ },
+ "MU": {
+ "name": "Oileán Mhuirís"
+ },
+ "AC": {
+ "name": "Oileán na Deascabhála"
+ },
+ "CX": {
+ "name": "Oileán na Nollag"
+ },
+ "TT": {
+ "name": "Oileán na Tríonóide agus Tobága"
+ },
+ "NF": {
+ "name": "Oileán Norfolk"
+ },
+ "OM": {
+ "name": "Óman"
+ },
+ "PW": {
+ "name": "Palau"
+ },
+ "PA": {
+ "name": "Panama"
+ },
+ "PY": {
+ "name": "Paragua"
+ },
+ "PE": {
+ "name": "Peiriú"
+ },
+ "CD": {
+ "name": "Poblacht Dhaonlathach an Chongó"
+ },
+ "CF": {
+ "name": "Poblacht na hAfraice Láir"
+ },
+ "CZ": {
+ "name": "Poblacht na Seice"
+ },
+ "PF": {
+ "name": "Polainéis na Fraince"
+ },
+ "PR": {
+ "name": "Portó Ríce"
+ },
+ "RE": {
+ "name": "Réunion"
+ },
+ "CV": {
+ "name": "Rinn Verde"
+ },
+ "RW": {
+ "name": "Ruanda"
+ },
+ "HK": {
+ "name": "S.R.R. na Síne Hong Cong"
+ },
+ "MO": {
+ "name": "S.R.R. na Síne Macao"
+ },
+ "BL": {
+ "name": "Saint Barthélemy"
+ },
+ "LC": {
+ "name": "Saint Lucia"
+ },
+ "MF": {
+ "name": "Saint-Martin"
+ },
+ "PM": {
+ "name": "Saint-Pierre-et-Miquelon"
+ },
+ "WS": {
+ "name": "Samó"
+ },
+ "AS": {
+ "name": "Samó Meiriceánach"
+ },
+ "KN": {
+ "name": "San Críostóir-Nimheas"
+ },
+ "SH": {
+ "name": "San Héilin"
+ },
+ "SM": {
+ "name": "San Mairíne"
+ },
+ "VC": {
+ "name": "San Uinseann agus na Greanáidíní"
+ },
+ "ST": {
+ "name": "São Tomé agus Príncipe"
+ },
+ "TD": {
+ "name": "Sead"
+ },
+ "SL": {
+ "name": "Siarra Leon"
+ },
+ "SG": {
+ "name": "Singeapór"
+ },
+ "SX": {
+ "name": "Sint Maarten"
+ },
+ "LK": {
+ "name": "Srí Lanca"
+ },
+ "US": {
+ "name": "Stáit Aontaithe Mheiriceá"
+ },
+ "SR": {
+ "name": "Suranam"
+ },
+ "SJ": {
+ "name": "Svalbard agus Jan Mayen"
+ },
+ "TL": {
+ "name": "Tíomór Thoir"
+ },
+ "TK": {
+ "name": "Tócalá"
+ },
+ "TG": {
+ "name": "Tóga"
+ },
+ "TO": {
+ "name": "Tonga"
+ },
+ "TA": {
+ "name": "Tristan da Cunha"
+ },
+ "TV": {
+ "name": "Tuvalu"
+ },
+ "UG": {
+ "name": "Uganda"
+ },
+ "UY": {
+ "name": "Urugua"
+ },
+ "WF": {
+ "name": "Vailís agus Futúna"
+ },
+ "VU": {
+ "name": "Vanuatú"
+ },
+ "VE": {
+ "name": "Veiniséala"
+ },
+ "VN": {
+ "name": "Vítneam"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/country/gd.json b/library/intl/resources/country/gd.json
new file mode 100644
index 000000000..9c5898cea
--- /dev/null
+++ b/library/intl/resources/country/gd.json
@@ -0,0 +1,761 @@
+{
+ "BY": {
+ "name": "A’ Bhealaruis"
+ },
+ "BE": {
+ "name": "A’ Bheilg"
+ },
+ "BZ": {
+ "name": "A’ Bheilìs"
+ },
+ "VE": {
+ "name": "A’ Bheiniseala"
+ },
+ "BG": {
+ "name": "A’ Bhulgair"
+ },
+ "GE": {
+ "name": "A’ Chairtbheil"
+ },
+ "CG": {
+ "name": "A’ Chongo - Brazzaville"
+ },
+ "XK": {
+ "name": "A’ Chosobho"
+ },
+ "HR": {
+ "name": "A’ Chròthais"
+ },
+ "GM": {
+ "name": "A’ Ghaimbia"
+ },
+ "DE": {
+ "name": "A’ Ghearmailt"
+ },
+ "GL": {
+ "name": "A’ Ghraonlann"
+ },
+ "GR": {
+ "name": "A’ Ghreug"
+ },
+ "MK": {
+ "name": "A’ Mhasadon"
+ },
+ "MD": {
+ "name": "A’ Mholdobha"
+ },
+ "DO": {
+ "name": "A’ Phoblachd Dhoiminiceach"
+ },
+ "PL": {
+ "name": "A’ Phòlainn"
+ },
+ "PT": {
+ "name": "A’ Phortagail"
+ },
+ "AF": {
+ "name": "Afghanastàn"
+ },
+ "ZA": {
+ "name": "Afraga a Deas"
+ },
+ "DZ": {
+ "name": "Aildiria"
+ },
+ "AG": {
+ "name": "Aintìoga is Barbuda"
+ },
+ "AM": {
+ "name": "Airmeinia"
+ },
+ "AL": {
+ "name": "Albàinia"
+ },
+ "ME": {
+ "name": "Am Monadh Neagrach"
+ },
+ "AQ": {
+ "name": "An Antartaig"
+ },
+ "AR": {
+ "name": "An Argantain"
+ },
+ "CV": {
+ "name": "An Ceap Uaine"
+ },
+ "DK": {
+ "name": "An Danmhairg"
+ },
+ "IT": {
+ "name": "An Eadailt"
+ },
+ "YE": {
+ "name": "An Eaman"
+ },
+ "EE": {
+ "name": "An Eastoin"
+ },
+ "CH": {
+ "name": "An Eilbheis"
+ },
+ "EG": {
+ "name": "An Èiphit"
+ },
+ "FI": {
+ "name": "An Fhionnlann"
+ },
+ "FR": {
+ "name": "An Fhraing"
+ },
+ "ET": {
+ "name": "An Itiop"
+ },
+ "LV": {
+ "name": "An Laitbhe"
+ },
+ "LT": {
+ "name": "An Liotuain"
+ },
+ "NA": {
+ "name": "An Namaib"
+ },
+ "NO": {
+ "name": "An Nirribhidh"
+ },
+ "AT": {
+ "name": "An Ostair"
+ },
+ "GB": {
+ "name": "An Rìoghachd Aonaichte"
+ },
+ "RU": {
+ "name": "An Ruis"
+ },
+ "SV": {
+ "name": "An Salbhador"
+ },
+ "ES": {
+ "name": "An Spàinn"
+ },
+ "TD": {
+ "name": "An t-Seàd"
+ },
+ "JP": {
+ "name": "An t-Seapan"
+ },
+ "RS": {
+ "name": "An t-Sèirb"
+ },
+ "CL": {
+ "name": "An t-Sile"
+ },
+ "CN": {
+ "name": "An t-Sìn"
+ },
+ "ZW": {
+ "name": "An t-Sìombab"
+ },
+ "SK": {
+ "name": "An t-Slòbhac"
+ },
+ "SI": {
+ "name": "An t-Slòbhain"
+ },
+ "SE": {
+ "name": "An t-Suain"
+ },
+ "TZ": {
+ "name": "An Tansan"
+ },
+ "TR": {
+ "name": "An Tuirc"
+ },
+ "UA": {
+ "name": "An Ucràin"
+ },
+ "HU": {
+ "name": "An Ungair"
+ },
+ "AD": {
+ "name": "Andorra"
+ },
+ "AO": {
+ "name": "Angòla"
+ },
+ "AI": {
+ "name": "Anguilla"
+ },
+ "SA": {
+ "name": "Aràibia nan Sabhd"
+ },
+ "AW": {
+ "name": "Arùba"
+ },
+ "AZ": {
+ "name": "Asarbaideàn"
+ },
+ "AU": {
+ "name": "Astràilia"
+ },
+ "BH": {
+ "name": "Bachrain"
+ },
+ "BD": {
+ "name": "Bangladais"
+ },
+ "BB": {
+ "name": "Barbados"
+ },
+ "BM": {
+ "name": "Bearmùda"
+ },
+ "BJ": {
+ "name": "Beinin"
+ },
+ "VN": {
+ "name": "Bhiet-Nam"
+ },
+ "BO": {
+ "name": "Boilibhia"
+ },
+ "BA": {
+ "name": "Bosna agus Hearsagobhana"
+ },
+ "BW": {
+ "name": "Botsuana"
+ },
+ "BR": {
+ "name": "Braisil"
+ },
+ "BN": {
+ "name": "Brùnaigh"
+ },
+ "BF": {
+ "name": "Buirciona Faso"
+ },
+ "BI": {
+ "name": "Burundaidh"
+ },
+ "BT": {
+ "name": "Butàn"
+ },
+ "NC": {
+ "name": "Cailleann Nuadh"
+ },
+ "CM": {
+ "name": "Camarun"
+ },
+ "KH": {
+ "name": "Cambuidea"
+ },
+ "CA": {
+ "name": "Canada"
+ },
+ "KZ": {
+ "name": "Casachstàn"
+ },
+ "QA": {
+ "name": "Catar"
+ },
+ "VA": {
+ "name": "Cathair na Bhatacain"
+ },
+ "KE": {
+ "name": "Ceinia"
+ },
+ "EA": {
+ "name": "Ceuta agus Melilla"
+ },
+ "CY": {
+ "name": "Cìopras"
+ },
+ "KG": {
+ "name": "Cìorgastan"
+ },
+ "KI": {
+ "name": "Ciribeas"
+ },
+ "KR": {
+ "name": "Coirèa a Deas"
+ },
+ "KP": {
+ "name": "Coirèa a Tuath"
+ },
+ "CO": {
+ "name": "Coloimbia"
+ },
+ "KM": {
+ "name": "Comoros"
+ },
+ "CD": {
+ "name": "Congo - Kinshasa"
+ },
+ "CR": {
+ "name": "Costa Rìcea"
+ },
+ "CI": {
+ "name": "Côte d’Ivoire"
+ },
+ "CU": {
+ "name": "Cùba"
+ },
+ "KW": {
+ "name": "Cuibhèit"
+ },
+ "CW": {
+ "name": "Curaçao"
+ },
+ "JE": {
+ "name": "Deàrsaidh"
+ },
+ "JM": {
+ "name": "Diameuga"
+ },
+ "DG": {
+ "name": "Diego Garcia"
+ },
+ "GI": {
+ "name": "Diobraltar"
+ },
+ "DJ": {
+ "name": "Diobùtaidh"
+ },
+ "DM": {
+ "name": "Doiminicea"
+ },
+ "MN": {
+ "name": "Dùthaich nam Mongol"
+ },
+ "SZ": {
+ "name": "Dùthaich nan Suasaidh"
+ },
+ "TH": {
+ "name": "Dùthaich nan Tàidh"
+ },
+ "EC": {
+ "name": "Eacuador"
+ },
+ "ER": {
+ "name": "Eartra"
+ },
+ "IM": {
+ "name": "Eilean Mhanainn"
+ },
+ "AC": {
+ "name": "Eilean na Deasgabhalach"
+ },
+ "CX": {
+ "name": "Eilean na Nollaig"
+ },
+ "SH": {
+ "name": "Eilean Naomh Eilidh"
+ },
+ "NF": {
+ "name": "Eilean Norfolk"
+ },
+ "PN": {
+ "name": "Eilean Peit a’ Chàirn"
+ },
+ "VI": {
+ "name": "Eileanan Aimeireagach na Maighdinn"
+ },
+ "VG": {
+ "name": "Eileanan Breatannach na Maighdinn"
+ },
+ "CK": {
+ "name": "Eileanan Cook"
+ },
+ "MH": {
+ "name": "Eileanan Mharshall"
+ },
+ "SB": {
+ "name": "Eileanan Sholaimh"
+ },
+ "IE": {
+ "name": "Èirinn"
+ },
+ "FJ": {
+ "name": "Fìdi"
+ },
+ "GA": {
+ "name": "Gabon"
+ },
+ "GH": {
+ "name": "Gàna"
+ },
+ "GG": {
+ "name": "Geàrnsaidh"
+ },
+ "GN": {
+ "name": "Gini"
+ },
+ "GQ": {
+ "name": "Gini Mheadhan-Chriosach"
+ },
+ "PG": {
+ "name": "Gini Nuadh Phaputhach"
+ },
+ "GW": {
+ "name": "Gini-Bioso"
+ },
+ "GD": {
+ "name": "Greanàda"
+ },
+ "GP": {
+ "name": "Guadalup"
+ },
+ "GU": {
+ "name": "Guam"
+ },
+ "GT": {
+ "name": "Guatamala"
+ },
+ "GY": {
+ "name": "Guidheàna"
+ },
+ "GF": {
+ "name": "Guidheàna na Frainge"
+ },
+ "HT": {
+ "name": "Haidhti"
+ },
+ "HN": {
+ "name": "Hondùras"
+ },
+ "HK": {
+ "name": "Hong Kong SAR na Sìne"
+ },
+ "IS": {
+ "name": "Innis Tìle"
+ },
+ "IQ": {
+ "name": "Ioràc"
+ },
+ "IR": {
+ "name": "Ioràn"
+ },
+ "JO": {
+ "name": "Iòrdan"
+ },
+ "IL": {
+ "name": "Iosrael"
+ },
+ "LA": {
+ "name": "Làthos"
+ },
+ "LB": {
+ "name": "Leabanon"
+ },
+ "LS": {
+ "name": "Leasoto"
+ },
+ "LR": {
+ "name": "Libèir"
+ },
+ "LY": {
+ "name": "Libia"
+ },
+ "LI": {
+ "name": "Lichtenstein"
+ },
+ "LU": {
+ "name": "Lugsamburg"
+ },
+ "MO": {
+ "name": "Macàthu SAR na Sìne"
+ },
+ "MG": {
+ "name": "Madagasgar"
+ },
+ "ML": {
+ "name": "Màili"
+ },
+ "MQ": {
+ "name": "Mairtinic"
+ },
+ "MW": {
+ "name": "Malabhaidh"
+ },
+ "MY": {
+ "name": "Malaidhsea"
+ },
+ "MT": {
+ "name": "Malta"
+ },
+ "YT": {
+ "name": "Mayotte"
+ },
+ "MX": {
+ "name": "Meagsago"
+ },
+ "UM": {
+ "name": "Meanbh-Eileanan Iomallach nan Stàitean Aonaichte"
+ },
+ "MM": {
+ "name": "Miànmar (Burma)"
+ },
+ "MC": {
+ "name": "Monaco"
+ },
+ "MS": {
+ "name": "Montsarat"
+ },
+ "MR": {
+ "name": "Moratàinea"
+ },
+ "MA": {
+ "name": "Moroco"
+ },
+ "MZ": {
+ "name": "Mòsaimbic"
+ },
+ "AX": {
+ "name": "Na h-Eileanan Ã…land"
+ },
+ "BS": {
+ "name": "Na h-Eileanan Bhathama"
+ },
+ "KY": {
+ "name": "Na h-Eileanan Caimean"
+ },
+ "IC": {
+ "name": "Na h-Eileanan Canàrach"
+ },
+ "CC": {
+ "name": "Na h-Eileanan Cocos (Keeling)"
+ },
+ "FK": {
+ "name": "Na h-Eileanan Fàclannach"
+ },
+ "FO": {
+ "name": "Na h-Eileanan Fàro"
+ },
+ "PH": {
+ "name": "Na h-Eileanan Filipineach"
+ },
+ "MP": {
+ "name": "Na h-Eileanan Mairianach a Tuath"
+ },
+ "MV": {
+ "name": "Na h-Eileanan Mhaladaibh"
+ },
+ "MU": {
+ "name": "Na h-Eileanan Mhoiriseas"
+ },
+ "SC": {
+ "name": "Na h-Eileanan Sheiseall"
+ },
+ "TC": {
+ "name": "Na h-Eileanan Turcach is Caiceo"
+ },
+ "ID": {
+ "name": "Na h-Innd Innse"
+ },
+ "IN": {
+ "name": "Na h-Innseachan"
+ },
+ "AE": {
+ "name": "Na h-Iomaratan Arabach Aonaichte"
+ },
+ "FM": {
+ "name": "Na Meanbh-Eileanan"
+ },
+ "PS": {
+ "name": "Na Ranntairean Palastaineach"
+ },
+ "US": {
+ "name": "Na Stàitean Aonaichte"
+ },
+ "NL": {
+ "name": "Na Tìrean Ìsle"
+ },
+ "BQ": {
+ "name": "Na Tìrean Ìsle Caraibeach"
+ },
+ "NR": {
+ "name": "Nabhru"
+ },
+ "VC": {
+ "name": "Naomh Bhionsant agus Eileanan Greanadach"
+ },
+ "KN": {
+ "name": "Naomh Crìstean is Nibheis"
+ },
+ "LC": {
+ "name": "Naomh Lùisea"
+ },
+ "MF": {
+ "name": "Naomh Màrtainn"
+ },
+ "NP": {
+ "name": "Neapàl"
+ },
+ "NE": {
+ "name": "Nìgeir"
+ },
+ "NG": {
+ "name": "Nigèiria"
+ },
+ "NI": {
+ "name": "Niocaragua"
+ },
+ "NU": {
+ "name": "Niue"
+ },
+ "OM": {
+ "name": "Omàn"
+ },
+ "PK": {
+ "name": "Pagastàn"
+ },
+ "PW": {
+ "name": "Palabh"
+ },
+ "PA": {
+ "name": "Panama"
+ },
+ "PY": {
+ "name": "Paraguaidh"
+ },
+ "PE": {
+ "name": "Pearù"
+ },
+ "CF": {
+ "name": "Poblachd Meadhan Afraga"
+ },
+ "CZ": {
+ "name": "Poblachd na Seice"
+ },
+ "PF": {
+ "name": "Poilinèis na Frainge"
+ },
+ "PR": {
+ "name": "Porto Rìceo"
+ },
+ "IO": {
+ "name": "Ranntair Breatannach Cuan nan Innseachan"
+ },
+ "TF": {
+ "name": "Ranntairean a Deas na Frainge"
+ },
+ "RE": {
+ "name": "Réunion"
+ },
+ "RO": {
+ "name": "Romàinia"
+ },
+ "RW": {
+ "name": "Rubhanda"
+ },
+ "ZM": {
+ "name": "Sàimbia"
+ },
+ "BL": {
+ "name": "Saint Barthélemy"
+ },
+ "PM": {
+ "name": "Saint Pierre agus Miquelon"
+ },
+ "WS": {
+ "name": "Samotha"
+ },
+ "AS": {
+ "name": "Samotha na h-Aimeireaga"
+ },
+ "SM": {
+ "name": "San Marino"
+ },
+ "ST": {
+ "name": "São Tomé agus Príncipe"
+ },
+ "EH": {
+ "name": "Sathara an Iar"
+ },
+ "NZ": {
+ "name": "Sealainn Nuadh"
+ },
+ "SN": {
+ "name": "Seanagal"
+ },
+ "GS": {
+ "name": "Seòrsea a Deas is na h-Eileanan Sandwich a Deas"
+ },
+ "SL": {
+ "name": "Siarra Leòmhann"
+ },
+ "SG": {
+ "name": "Singeapòr"
+ },
+ "SX": {
+ "name": "Sint Maarten"
+ },
+ "SY": {
+ "name": "Siridhea"
+ },
+ "SO": {
+ "name": "Somàilia"
+ },
+ "LK": {
+ "name": "Sri Lanca"
+ },
+ "SD": {
+ "name": "Sudàn"
+ },
+ "SS": {
+ "name": "Sudàn a Deas"
+ },
+ "SR": {
+ "name": "Suranam"
+ },
+ "SJ": {
+ "name": "Svalbard agus Jan Mayen"
+ },
+ "TW": {
+ "name": "Taidh-Bhàn"
+ },
+ "TJ": {
+ "name": "Taidigeastàn"
+ },
+ "TL": {
+ "name": "Timor-Leste"
+ },
+ "TG": {
+ "name": "Togo"
+ },
+ "TK": {
+ "name": "Tokelau"
+ },
+ "TO": {
+ "name": "Tonga"
+ },
+ "TT": {
+ "name": "Trianaid agus Tobago"
+ },
+ "TA": {
+ "name": "Tristan da Cunha"
+ },
+ "TV": {
+ "name": "Tubhalu"
+ },
+ "TN": {
+ "name": "Tuinisea"
+ },
+ "TM": {
+ "name": "Turcmanastàn"
+ },
+ "WF": {
+ "name": "Uallas agus Futuna"
+ },
+ "UG": {
+ "name": "Uganda"
+ },
+ "UY": {
+ "name": "Uruguaidh"
+ },
+ "UZ": {
+ "name": "Usbagastàn"
+ },
+ "VU": {
+ "name": "Vanuatu"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/country/gl.json b/library/intl/resources/country/gl.json
new file mode 100644
index 000000000..f230e9d10
--- /dev/null
+++ b/library/intl/resources/country/gl.json
@@ -0,0 +1,761 @@
+{
+ "AZ": {
+ "name": "Acerbaixán"
+ },
+ "AF": {
+ "name": "Afganistán"
+ },
+ "AL": {
+ "name": "Albania"
+ },
+ "DE": {
+ "name": "Alemaña"
+ },
+ "AD": {
+ "name": "Andorra"
+ },
+ "AO": {
+ "name": "Angola"
+ },
+ "AI": {
+ "name": "Anguila"
+ },
+ "AQ": {
+ "name": "Antártida"
+ },
+ "AG": {
+ "name": "Antiga e Barbuda"
+ },
+ "SA": {
+ "name": "Arabia Saudita"
+ },
+ "AM": {
+ "name": "Armenia"
+ },
+ "AW": {
+ "name": "Aruba"
+ },
+ "DZ": {
+ "name": "Arxelia"
+ },
+ "AR": {
+ "name": "Arxentina"
+ },
+ "AU": {
+ "name": "Australia"
+ },
+ "AT": {
+ "name": "Austria"
+ },
+ "BS": {
+ "name": "Bahamas"
+ },
+ "BH": {
+ "name": "Bahrein"
+ },
+ "BD": {
+ "name": "Bangladesh"
+ },
+ "BB": {
+ "name": "Barbados"
+ },
+ "BZ": {
+ "name": "Belice"
+ },
+ "BE": {
+ "name": "Bélxica"
+ },
+ "BJ": {
+ "name": "Benin"
+ },
+ "BM": {
+ "name": "Bermudas"
+ },
+ "BY": {
+ "name": "Bielorrusia"
+ },
+ "BO": {
+ "name": "Bolivia"
+ },
+ "BA": {
+ "name": "Bosnia e Hercegovina"
+ },
+ "BW": {
+ "name": "Botsuana"
+ },
+ "BR": {
+ "name": "Brasil"
+ },
+ "BN": {
+ "name": "Brunei"
+ },
+ "BG": {
+ "name": "Bulgaria"
+ },
+ "BF": {
+ "name": "Burkina Faso"
+ },
+ "BI": {
+ "name": "Burundi"
+ },
+ "BT": {
+ "name": "Bután"
+ },
+ "CV": {
+ "name": "Cabo Verde"
+ },
+ "KH": {
+ "name": "Cambodia"
+ },
+ "CM": {
+ "name": "Camerún"
+ },
+ "CA": {
+ "name": "Canadá"
+ },
+ "BQ": {
+ "name": "Caribe neerlandés"
+ },
+ "EA": {
+ "name": "Ceuta e Melilla"
+ },
+ "TD": {
+ "name": "Chad"
+ },
+ "CL": {
+ "name": "Chile"
+ },
+ "CN": {
+ "name": "China"
+ },
+ "CY": {
+ "name": "Chipre"
+ },
+ "VA": {
+ "name": "Cidade do Vaticano"
+ },
+ "ZW": {
+ "name": "Cimbabue"
+ },
+ "CO": {
+ "name": "Colombia"
+ },
+ "KM": {
+ "name": "Comores"
+ },
+ "CG": {
+ "name": "Congo"
+ },
+ "KP": {
+ "name": "Corea do Norte"
+ },
+ "KR": {
+ "name": "Corea do Sur"
+ },
+ "CI": {
+ "name": "Costa de Marfil"
+ },
+ "CR": {
+ "name": "Costa Rica"
+ },
+ "HR": {
+ "name": "Croacia"
+ },
+ "CU": {
+ "name": "Cuba"
+ },
+ "CW": {
+ "name": "Curaçao"
+ },
+ "DG": {
+ "name": "Diego García"
+ },
+ "DK": {
+ "name": "Dinamarca"
+ },
+ "DM": {
+ "name": "Dominica"
+ },
+ "EC": {
+ "name": "Ecuador"
+ },
+ "SV": {
+ "name": "El Salvador"
+ },
+ "AE": {
+ "name": "Emiratos Ãrabes Unidos"
+ },
+ "ER": {
+ "name": "Eritrea"
+ },
+ "SK": {
+ "name": "Eslovaquia"
+ },
+ "SI": {
+ "name": "Eslovenia"
+ },
+ "ES": {
+ "name": "España"
+ },
+ "US": {
+ "name": "Estados Unidos de América"
+ },
+ "EE": {
+ "name": "Estonia"
+ },
+ "ET": {
+ "name": "Etiopía"
+ },
+ "EG": {
+ "name": "Exipto"
+ },
+ "PH": {
+ "name": "Filipinas"
+ },
+ "FI": {
+ "name": "Finlandia"
+ },
+ "FJ": {
+ "name": "Fixi"
+ },
+ "FR": {
+ "name": "Francia"
+ },
+ "GA": {
+ "name": "Gabón"
+ },
+ "GM": {
+ "name": "Gambia"
+ },
+ "GH": {
+ "name": "Gana"
+ },
+ "GD": {
+ "name": "Granada"
+ },
+ "GR": {
+ "name": "Grecia"
+ },
+ "GL": {
+ "name": "Grenlandia"
+ },
+ "GP": {
+ "name": "Guadalupe"
+ },
+ "GU": {
+ "name": "Guam"
+ },
+ "GT": {
+ "name": "Guatemala"
+ },
+ "GG": {
+ "name": "Guernsey"
+ },
+ "GY": {
+ "name": "Güiana"
+ },
+ "GF": {
+ "name": "Güiana Francesa"
+ },
+ "GN": {
+ "name": "Guinea"
+ },
+ "GQ": {
+ "name": "Guinea Ecuatorial"
+ },
+ "GW": {
+ "name": "Guinea-Bissau"
+ },
+ "HT": {
+ "name": "Haití"
+ },
+ "HN": {
+ "name": "Honduras"
+ },
+ "HK": {
+ "name": "Hong Kong RAE de China"
+ },
+ "HU": {
+ "name": "Hungría"
+ },
+ "YE": {
+ "name": "Iemen"
+ },
+ "CX": {
+ "name": "Illa Christmas"
+ },
+ "AC": {
+ "name": "Illa de Ascensión"
+ },
+ "IM": {
+ "name": "Illa de Man"
+ },
+ "NF": {
+ "name": "Illa Norfolk"
+ },
+ "AX": {
+ "name": "Illas Aland"
+ },
+ "KY": {
+ "name": "Illas Caimán"
+ },
+ "IC": {
+ "name": "Illas Canarias"
+ },
+ "CC": {
+ "name": "Illas Cocos (Keeling)"
+ },
+ "CK": {
+ "name": "Illas Cook"
+ },
+ "FO": {
+ "name": "Illas Feroe"
+ },
+ "FK": {
+ "name": "Illas Malvinas"
+ },
+ "MP": {
+ "name": "Illas Marianas do norte"
+ },
+ "MH": {
+ "name": "Illas Marshall"
+ },
+ "UM": {
+ "name": "Illas Menores Distantes dos EUA."
+ },
+ "PN": {
+ "name": "Illas Pitcairn"
+ },
+ "SB": {
+ "name": "Illas Salomón"
+ },
+ "TC": {
+ "name": "Illas Turks e Caicos"
+ },
+ "VG": {
+ "name": "Illas Virxes Británicas"
+ },
+ "VI": {
+ "name": "Illas Virxes Estadounidenses"
+ },
+ "IN": {
+ "name": "India"
+ },
+ "ID": {
+ "name": "Indonesia"
+ },
+ "IR": {
+ "name": "Irán"
+ },
+ "IQ": {
+ "name": "Iraq"
+ },
+ "IE": {
+ "name": "Irlanda"
+ },
+ "IS": {
+ "name": "Islandia"
+ },
+ "IL": {
+ "name": "Israel"
+ },
+ "IT": {
+ "name": "Italia"
+ },
+ "JE": {
+ "name": "Jersey"
+ },
+ "KZ": {
+ "name": "Kazakhstan"
+ },
+ "KI": {
+ "name": "Kiribati"
+ },
+ "XK": {
+ "name": "Kosovo"
+ },
+ "KW": {
+ "name": "Kuwait"
+ },
+ "LA": {
+ "name": "Laos"
+ },
+ "LS": {
+ "name": "Lesotho"
+ },
+ "LV": {
+ "name": "Letonia"
+ },
+ "LB": {
+ "name": "Líbano"
+ },
+ "LR": {
+ "name": "Liberia"
+ },
+ "LY": {
+ "name": "Libia"
+ },
+ "LI": {
+ "name": "Liechtenstein"
+ },
+ "LT": {
+ "name": "Lituania"
+ },
+ "LU": {
+ "name": "Luxemburgo"
+ },
+ "MO": {
+ "name": "Macau RAE de China"
+ },
+ "MK": {
+ "name": "Macedonia"
+ },
+ "MG": {
+ "name": "Madagascar"
+ },
+ "MY": {
+ "name": "Malaisia"
+ },
+ "MW": {
+ "name": "Malaui"
+ },
+ "MV": {
+ "name": "Maldivas"
+ },
+ "ML": {
+ "name": "Mali"
+ },
+ "MT": {
+ "name": "Malta"
+ },
+ "MA": {
+ "name": "Marrocos"
+ },
+ "MQ": {
+ "name": "Martinica"
+ },
+ "MU": {
+ "name": "Mauricio"
+ },
+ "MR": {
+ "name": "Mauritania"
+ },
+ "YT": {
+ "name": "Mayotte"
+ },
+ "MX": {
+ "name": "México"
+ },
+ "FM": {
+ "name": "Micronesia"
+ },
+ "MD": {
+ "name": "Moldova"
+ },
+ "MC": {
+ "name": "Mónaco"
+ },
+ "MN": {
+ "name": "Mongolia"
+ },
+ "ME": {
+ "name": "Montenegro"
+ },
+ "MS": {
+ "name": "Montserrat"
+ },
+ "MZ": {
+ "name": "Mozambique"
+ },
+ "MM": {
+ "name": "Myanmar (Birmania)"
+ },
+ "NA": {
+ "name": "Namibia"
+ },
+ "NR": {
+ "name": "Nauru"
+ },
+ "NP": {
+ "name": "Nepal"
+ },
+ "NI": {
+ "name": "Nicaragua"
+ },
+ "NU": {
+ "name": "Niue"
+ },
+ "NE": {
+ "name": "Níxer"
+ },
+ "NG": {
+ "name": "Nixeria"
+ },
+ "NO": {
+ "name": "Noruega"
+ },
+ "NC": {
+ "name": "Nova Caledonia"
+ },
+ "NZ": {
+ "name": "Nova Celandia"
+ },
+ "OM": {
+ "name": "Omán"
+ },
+ "NL": {
+ "name": "Países Baixos"
+ },
+ "PW": {
+ "name": "Palau"
+ },
+ "PA": {
+ "name": "Panamá"
+ },
+ "PG": {
+ "name": "Papúa Nova Guinea"
+ },
+ "PK": {
+ "name": "Paquistán"
+ },
+ "PY": {
+ "name": "Paraguai"
+ },
+ "PE": {
+ "name": "Perú"
+ },
+ "PF": {
+ "name": "Polinesia Francesa"
+ },
+ "PL": {
+ "name": "Polonia"
+ },
+ "PR": {
+ "name": "Porto Rico"
+ },
+ "PT": {
+ "name": "Portugal"
+ },
+ "QA": {
+ "name": "Qatar"
+ },
+ "KE": {
+ "name": "Quenia"
+ },
+ "KG": {
+ "name": "Quirguicistán"
+ },
+ "GB": {
+ "name": "Reino Unido"
+ },
+ "CF": {
+ "name": "República Africana Central"
+ },
+ "CZ": {
+ "name": "República Checa"
+ },
+ "CD": {
+ "name": "República Democrática do Congo"
+ },
+ "DO": {
+ "name": "República Dominicana"
+ },
+ "RE": {
+ "name": "Reunión"
+ },
+ "RO": {
+ "name": "Romanía"
+ },
+ "RW": {
+ "name": "Ruanda"
+ },
+ "RU": {
+ "name": "Rusia"
+ },
+ "EH": {
+ "name": "Sahara Occidental"
+ },
+ "WS": {
+ "name": "Samoa"
+ },
+ "AS": {
+ "name": "Samoa Americana"
+ },
+ "BL": {
+ "name": "San Bartolomé"
+ },
+ "KN": {
+ "name": "San Cristovo e Nevis"
+ },
+ "SM": {
+ "name": "San Marino"
+ },
+ "MF": {
+ "name": "San Martiño"
+ },
+ "PM": {
+ "name": "San Pedro e Miguelón"
+ },
+ "ST": {
+ "name": "San Tomé e Príncipe"
+ },
+ "VC": {
+ "name": "San Vicente e Granadinas"
+ },
+ "SH": {
+ "name": "Santa Helena"
+ },
+ "LC": {
+ "name": "Santa Lucía"
+ },
+ "SC": {
+ "name": "Seixeles"
+ },
+ "SN": {
+ "name": "Senegal"
+ },
+ "RS": {
+ "name": "Serbia"
+ },
+ "SL": {
+ "name": "Serra Leoa"
+ },
+ "SG": {
+ "name": "Singapur"
+ },
+ "SX": {
+ "name": "Sint Maarten"
+ },
+ "SY": {
+ "name": "Siria"
+ },
+ "SO": {
+ "name": "Somalia"
+ },
+ "LK": {
+ "name": "Sri Lanka"
+ },
+ "SZ": {
+ "name": "Suacilandia"
+ },
+ "ZA": {
+ "name": "Sudáfrica"
+ },
+ "SD": {
+ "name": "Sudán"
+ },
+ "SS": {
+ "name": "Sudán do sur"
+ },
+ "SE": {
+ "name": "Suecia"
+ },
+ "CH": {
+ "name": "Suíza"
+ },
+ "SR": {
+ "name": "Surinam"
+ },
+ "SJ": {
+ "name": "Svalbard e Jan Mayen"
+ },
+ "TH": {
+ "name": "Tailandia"
+ },
+ "TW": {
+ "name": "Taiwán"
+ },
+ "TZ": {
+ "name": "Tanzania"
+ },
+ "TJ": {
+ "name": "Taxiquistán"
+ },
+ "IO": {
+ "name": "Territorio Británico do Océano Ãndico"
+ },
+ "TF": {
+ "name": "Territorios Franceses do Sul"
+ },
+ "PS": {
+ "name": "Territorios palestinos"
+ },
+ "TL": {
+ "name": "Timor Leste"
+ },
+ "TG": {
+ "name": "Togo"
+ },
+ "TK": {
+ "name": "Tokelau"
+ },
+ "TO": {
+ "name": "Tonga"
+ },
+ "TT": {
+ "name": "Trindade e Tobago"
+ },
+ "TA": {
+ "name": "Tristán da Cunha"
+ },
+ "TN": {
+ "name": "Tunisia"
+ },
+ "TM": {
+ "name": "Turkmenistán"
+ },
+ "TR": {
+ "name": "Turquía"
+ },
+ "TV": {
+ "name": "Tuvalu"
+ },
+ "UA": {
+ "name": "Ucraína"
+ },
+ "UG": {
+ "name": "Uganda"
+ },
+ "UY": {
+ "name": "Uruguai"
+ },
+ "UZ": {
+ "name": "Uzbekistán"
+ },
+ "VU": {
+ "name": "Vanuatu"
+ },
+ "VE": {
+ "name": "Venezuela"
+ },
+ "VN": {
+ "name": "Vietnam"
+ },
+ "WF": {
+ "name": "Wallis e Futuna"
+ },
+ "JM": {
+ "name": "Xamaica"
+ },
+ "JP": {
+ "name": "Xapón"
+ },
+ "GE": {
+ "name": "Xeorxia"
+ },
+ "GS": {
+ "name": "Xeorxia do Sur e Illas Sandwich"
+ },
+ "GI": {
+ "name": "Xibraltar"
+ },
+ "DJ": {
+ "name": "Xibuti"
+ },
+ "JO": {
+ "name": "Xordania"
+ },
+ "ZM": {
+ "name": "Zambia"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/country/gsw.json b/library/intl/resources/country/gsw.json
new file mode 100644
index 000000000..719beca7b
--- /dev/null
+++ b/library/intl/resources/country/gsw.json
@@ -0,0 +1,761 @@
+{
+ "AX": {
+ "name": "Aaland-Insle"
+ },
+ "AF": {
+ "name": "Afganischtan"
+ },
+ "EG": {
+ "name": "Ägüpte"
+ },
+ "AL": {
+ "name": "Albaanie"
+ },
+ "DZ": {
+ "name": "Algeerie"
+ },
+ "AS": {
+ "name": "Amerikaanisch-Samoa"
+ },
+ "VI": {
+ "name": "Amerikaanischi Jungfere-Insle"
+ },
+ "UM": {
+ "name": "Amerikanisch-Ozeaanie"
+ },
+ "AD": {
+ "name": "Andorra"
+ },
+ "AO": {
+ "name": "Angoola"
+ },
+ "AI": {
+ "name": "Anguilla"
+ },
+ "AQ": {
+ "name": "Antarktis"
+ },
+ "AG": {
+ "name": "Antigua und Barbuda"
+ },
+ "GQ": {
+ "name": "Äquatoriaalgineea"
+ },
+ "AR": {
+ "name": "Argentiinie"
+ },
+ "ER": {
+ "name": "Äritreea"
+ },
+ "AM": {
+ "name": "Armeenie"
+ },
+ "AW": {
+ "name": "Aruba"
+ },
+ "AC": {
+ "name": "Ascension"
+ },
+ "AZ": {
+ "name": "Aserbäidschan"
+ },
+ "ET": {
+ "name": "Äthiopie"
+ },
+ "AU": {
+ "name": "Auschtraalie"
+ },
+ "BH": {
+ "name": "Bachräin"
+ },
+ "BS": {
+ "name": "Bahaamas"
+ },
+ "BD": {
+ "name": "Bangladesch"
+ },
+ "BB": {
+ "name": "Barbados"
+ },
+ "BE": {
+ "name": "Belgie"
+ },
+ "BZ": {
+ "name": "Belize"
+ },
+ "BJ": {
+ "name": "Benin"
+ },
+ "BM": {
+ "name": "Bermuuda"
+ },
+ "BT": {
+ "name": "Bhutan"
+ },
+ "BO": {
+ "name": "Boliivie"
+ },
+ "BA": {
+ "name": "Bosnie und Herzegowina"
+ },
+ "BW": {
+ "name": "Botswana"
+ },
+ "BR": {
+ "name": "Brasilie"
+ },
+ "VG": {
+ "name": "Britischi Jungfere-Insle"
+ },
+ "IO": {
+ "name": "Britischs Territoorium im Indische Oozean"
+ },
+ "BN": {
+ "name": "Brunäi Tarussalam"
+ },
+ "BG": {
+ "name": "Bulgaarie"
+ },
+ "BF": {
+ "name": "Burkina Faaso"
+ },
+ "BI": {
+ "name": "Burundi"
+ },
+ "IC": {
+ "name": "Canarische Eilanden"
+ },
+ "BQ": {
+ "name": "Caribbean Netherlands"
+ },
+ "EA": {
+ "name": "Ceuta und Melilla"
+ },
+ "CN": {
+ "name": "Chiina"
+ },
+ "CK": {
+ "name": "Cook-Insle"
+ },
+ "CR": {
+ "name": "Coschta Rica"
+ },
+ "CW": {
+ "name": "Curaçao"
+ },
+ "KP": {
+ "name": "Demokraatischi Volksrepublik Koreea"
+ },
+ "DG": {
+ "name": "Diego Garcia"
+ },
+ "JM": {
+ "name": "Dschamäika"
+ },
+ "JE": {
+ "name": "Dschörsi"
+ },
+ "EC": {
+ "name": "Ecuador"
+ },
+ "EE": {
+ "name": "Eestland"
+ },
+ "SV": {
+ "name": "El Salvador"
+ },
+ "CI": {
+ "name": "Elfebäiküschte"
+ },
+ "FK": {
+ "name": "Falkland-Insle"
+ },
+ "FO": {
+ "name": "Färöer"
+ },
+ "FI": {
+ "name": "Finnland"
+ },
+ "FJ": {
+ "name": "Fitschi"
+ },
+ "FR": {
+ "name": "Frankriich"
+ },
+ "GF": {
+ "name": "Französisch-Guäjaana"
+ },
+ "PF": {
+ "name": "Französisch-Polineesie"
+ },
+ "TF": {
+ "name": "Französischi Süüd- und Antarktisgebiet"
+ },
+ "GH": {
+ "name": "Gaana"
+ },
+ "GG": {
+ "name": "Gäärnsi"
+ },
+ "GA": {
+ "name": "Gabun"
+ },
+ "GM": {
+ "name": "Gambia"
+ },
+ "GE": {
+ "name": "Geoorgie"
+ },
+ "QA": {
+ "name": "Ggatar"
+ },
+ "GI": {
+ "name": "Gibraltar"
+ },
+ "GN": {
+ "name": "Gineea"
+ },
+ "GW": {
+ "name": "Gineea-Bissau"
+ },
+ "GD": {
+ "name": "Grenada"
+ },
+ "GR": {
+ "name": "Griecheland"
+ },
+ "GL": {
+ "name": "Gröönland"
+ },
+ "GP": {
+ "name": "Guadälup"
+ },
+ "GY": {
+ "name": "Guäjaana"
+ },
+ "GU": {
+ "name": "Guam"
+ },
+ "GT": {
+ "name": "Guatemaala"
+ },
+ "HT": {
+ "name": "Haiti"
+ },
+ "NL": {
+ "name": "Holland"
+ },
+ "HN": {
+ "name": "Honduras"
+ },
+ "IS": {
+ "name": "Iisland"
+ },
+ "IN": {
+ "name": "Indie"
+ },
+ "ID": {
+ "name": "Indoneesie"
+ },
+ "IM": {
+ "name": "Insle vo Män"
+ },
+ "IQ": {
+ "name": "Iraak"
+ },
+ "IR": {
+ "name": "Iraan"
+ },
+ "IE": {
+ "name": "Irland"
+ },
+ "IL": {
+ "name": "Israel"
+ },
+ "IT": {
+ "name": "Itaalie"
+ },
+ "JP": {
+ "name": "Japan"
+ },
+ "YE": {
+ "name": "Jeeme"
+ },
+ "JO": {
+ "name": "Jordaanie"
+ },
+ "KY": {
+ "name": "Käimän-Insle"
+ },
+ "KH": {
+ "name": "Kambodscha"
+ },
+ "CM": {
+ "name": "Kamerun"
+ },
+ "CA": {
+ "name": "Kanada"
+ },
+ "CV": {
+ "name": "Kap Verde"
+ },
+ "KZ": {
+ "name": "Kasachschtan"
+ },
+ "KE": {
+ "name": "Keenia"
+ },
+ "KG": {
+ "name": "Kirgiisischtan"
+ },
+ "KI": {
+ "name": "Kiribaati"
+ },
+ "CC": {
+ "name": "Kokos-Insle"
+ },
+ "CO": {
+ "name": "Kolumbie"
+ },
+ "KM": {
+ "name": "Komoore"
+ },
+ "CG": {
+ "name": "Kongo"
+ },
+ "XK": {
+ "name": "Kosovo"
+ },
+ "HR": {
+ "name": "Kroaazie"
+ },
+ "CU": {
+ "name": "Kuba"
+ },
+ "KW": {
+ "name": "Kuwäit"
+ },
+ "LA": {
+ "name": "Laaos"
+ },
+ "LS": {
+ "name": "Lesooto"
+ },
+ "LV": {
+ "name": "Lettland"
+ },
+ "LI": {
+ "name": "Liächteschtäi"
+ },
+ "LB": {
+ "name": "Libanon"
+ },
+ "LR": {
+ "name": "Libeeria"
+ },
+ "LT": {
+ "name": "Littaue"
+ },
+ "LY": {
+ "name": "Lüübie"
+ },
+ "LU": {
+ "name": "Luxemburg"
+ },
+ "ML": {
+ "name": "Maali"
+ },
+ "MG": {
+ "name": "Madagaschkar"
+ },
+ "YT": {
+ "name": "Majott"
+ },
+ "MW": {
+ "name": "Malaawi"
+ },
+ "MY": {
+ "name": "Maläisia"
+ },
+ "MV": {
+ "name": "Malediiwe"
+ },
+ "MT": {
+ "name": "Malta"
+ },
+ "MA": {
+ "name": "Marokko"
+ },
+ "MH": {
+ "name": "Marshallinsle"
+ },
+ "MQ": {
+ "name": "Martinigg"
+ },
+ "MR": {
+ "name": "Mauretaanie"
+ },
+ "MU": {
+ "name": "Mauriizius"
+ },
+ "MK": {
+ "name": "Mazedoonie"
+ },
+ "MX": {
+ "name": "Mexiko"
+ },
+ "FM": {
+ "name": "Mikroneesie"
+ },
+ "MC": {
+ "name": "Monaco"
+ },
+ "MN": {
+ "name": "Mongolei"
+ },
+ "ME": {
+ "name": "Monteneegro"
+ },
+ "MS": {
+ "name": "Moosörrat"
+ },
+ "MZ": {
+ "name": "Mosambik"
+ },
+ "MM": {
+ "name": "Myanmar (Burma)"
+ },
+ "NA": {
+ "name": "Namiibia"
+ },
+ "NR": {
+ "name": "Nauru"
+ },
+ "NP": {
+ "name": "Neepal"
+ },
+ "NI": {
+ "name": "Nicaraagua"
+ },
+ "NG": {
+ "name": "Nigeeria"
+ },
+ "NE": {
+ "name": "Niger"
+ },
+ "NU": {
+ "name": "Niue"
+ },
+ "NC": {
+ "name": "Nöikaledoonie"
+ },
+ "NZ": {
+ "name": "Nöiseeland"
+ },
+ "MP": {
+ "name": "Nördlichi Mariaane"
+ },
+ "NF": {
+ "name": "Norfolk-Insle"
+ },
+ "NO": {
+ "name": "Norweege"
+ },
+ "OM": {
+ "name": "Omaan"
+ },
+ "AT": {
+ "name": "Ööschtriich"
+ },
+ "TL": {
+ "name": "Oschttimor"
+ },
+ "PK": {
+ "name": "Pakischtan"
+ },
+ "PS": {
+ "name": "Paläschtinänsischi Gebiet"
+ },
+ "PW": {
+ "name": "Palau"
+ },
+ "PA": {
+ "name": "Panama"
+ },
+ "PG": {
+ "name": "Papua-Neuguinea"
+ },
+ "PY": {
+ "name": "Paraguai"
+ },
+ "PE": {
+ "name": "Peru"
+ },
+ "PH": {
+ "name": "Philippiine"
+ },
+ "PN": {
+ "name": "Pitggäärn"
+ },
+ "PL": {
+ "name": "Poole"
+ },
+ "PT": {
+ "name": "Portugal"
+ },
+ "PR": {
+ "name": "Puerto Riggo"
+ },
+ "KR": {
+ "name": "Republik Koreea"
+ },
+ "MD": {
+ "name": "Republik Moldau"
+ },
+ "RE": {
+ "name": "Reünioon"
+ },
+ "RW": {
+ "name": "Ruanda"
+ },
+ "RO": {
+ "name": "Rumäänie"
+ },
+ "RU": {
+ "name": "Russland"
+ },
+ "SB": {
+ "name": "Salomoone"
+ },
+ "ZM": {
+ "name": "Sambia"
+ },
+ "WS": {
+ "name": "Samooa"
+ },
+ "SM": {
+ "name": "San Mariino"
+ },
+ "ST": {
+ "name": "Sao Tome und Prinssipe"
+ },
+ "RS": {
+ "name": "Särbie"
+ },
+ "SA": {
+ "name": "Saudi-Araabie"
+ },
+ "ES": {
+ "name": "Schpanie"
+ },
+ "LK": {
+ "name": "Schri Lanka"
+ },
+ "SE": {
+ "name": "Schweede"
+ },
+ "CH": {
+ "name": "Schwiiz"
+ },
+ "SC": {
+ "name": "Seischälle"
+ },
+ "SN": {
+ "name": "Senegal"
+ },
+ "SL": {
+ "name": "Sierra Leoone"
+ },
+ "ZW": {
+ "name": "Simbabwe"
+ },
+ "SG": {
+ "name": "Singapuur"
+ },
+ "SX": {
+ "name": "Sint Maarten"
+ },
+ "SK": {
+ "name": "Slowakäi"
+ },
+ "SI": {
+ "name": "Sloweenie"
+ },
+ "SO": {
+ "name": "Somaalie"
+ },
+ "HK": {
+ "name": "Sonderverwaltigszone Hongkong"
+ },
+ "MO": {
+ "name": "Sonderverwaltigszone Macao"
+ },
+ "SS": {
+ "name": "South Sudan"
+ },
+ "BL": {
+ "name": "St. Barthelemi"
+ },
+ "SH": {
+ "name": "St. Helena"
+ },
+ "KN": {
+ "name": "St. Kitts und Niuwis"
+ },
+ "LC": {
+ "name": "St. Lutschiia"
+ },
+ "MF": {
+ "name": "St. Martin"
+ },
+ "PM": {
+ "name": "St. Pierr und Miggelo"
+ },
+ "VC": {
+ "name": "St. Vincent und d’Grönadiine"
+ },
+ "SD": {
+ "name": "Sudan"
+ },
+ "SR": {
+ "name": "Surinam"
+ },
+ "ZA": {
+ "name": "Süüdafrika"
+ },
+ "GS": {
+ "name": "Süüdgeorgie und d’süüdlichi Sändwitsch-Insle"
+ },
+ "SY": {
+ "name": "Süürie"
+ },
+ "SJ": {
+ "name": "Svalbard und Jaan Määie"
+ },
+ "SZ": {
+ "name": "Swasiland"
+ },
+ "TJ": {
+ "name": "Tadschikischtan"
+ },
+ "TW": {
+ "name": "Taiwan"
+ },
+ "DK": {
+ "name": "Tänemark"
+ },
+ "TZ": {
+ "name": "Tansaniia"
+ },
+ "CD": {
+ "name": "Temokraatischi Republik Kongo"
+ },
+ "TH": {
+ "name": "Thailand"
+ },
+ "TK": {
+ "name": "Tokelau"
+ },
+ "DM": {
+ "name": "Tominica"
+ },
+ "DO": {
+ "name": "Tominikaanischi Republik"
+ },
+ "TO": {
+ "name": "Tonga"
+ },
+ "TG": {
+ "name": "Toogo"
+ },
+ "TC": {
+ "name": "Törks- und Gaiggos-Insle"
+ },
+ "TT": {
+ "name": "Trinidad und Tobaago"
+ },
+ "TA": {
+ "name": "Tristan da Cunha"
+ },
+ "TD": {
+ "name": "Tschad"
+ },
+ "CZ": {
+ "name": "Tschechischi Republik"
+ },
+ "DJ": {
+ "name": "Tschibuuti"
+ },
+ "CL": {
+ "name": "Tschile"
+ },
+ "TN": {
+ "name": "Tuneesie"
+ },
+ "TR": {
+ "name": "Türggei"
+ },
+ "TM": {
+ "name": "Turkmeenischtan"
+ },
+ "DE": {
+ "name": "Tüütschland"
+ },
+ "TV": {
+ "name": "Tuvalu"
+ },
+ "UG": {
+ "name": "Uganda"
+ },
+ "UA": {
+ "name": "Ukraiine"
+ },
+ "HU": {
+ "name": "Ungarn"
+ },
+ "UY": {
+ "name": "Uruguay"
+ },
+ "UZ": {
+ "name": "Uschbeekischtan"
+ },
+ "VA": {
+ "name": "Vatikanstadt"
+ },
+ "VE": {
+ "name": "Venezueela"
+ },
+ "AE": {
+ "name": "Veräinigti Arabischi Emirate"
+ },
+ "US": {
+ "name": "Veräinigti Schtaate"
+ },
+ "GB": {
+ "name": "Veräinigts Chönigriich"
+ },
+ "WF": {
+ "name": "Wallis und Futuuna"
+ },
+ "VU": {
+ "name": "Wanuatu"
+ },
+ "EH": {
+ "name": "Weschtsahara"
+ },
+ "CX": {
+ "name": "Wienachts-Insle"
+ },
+ "VN": {
+ "name": "Wietnam"
+ },
+ "BY": {
+ "name": "Wiissrussland"
+ },
+ "CF": {
+ "name": "Zentraalafrikaanischi Republik"
+ },
+ "CY": {
+ "name": "Zypere"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/country/gu.json b/library/intl/resources/country/gu.json
new file mode 100644
index 000000000..00bbacc90
--- /dev/null
+++ b/library/intl/resources/country/gu.json
@@ -0,0 +1,761 @@
+{
+ "AO": {
+ "name": "અંગોલા"
+ },
+ "AZ": {
+ "name": "અàªàª°àª¬à«ˆàªœàª¾àª¨"
+ },
+ "AF": {
+ "name": "અફઘાનિસà«àª¤àª¾àª¨"
+ },
+ "AS": {
+ "name": "અમેરીકન સમોઆ"
+ },
+ "AW": {
+ "name": "અરà«àª¬àª¾"
+ },
+ "DZ": {
+ "name": "અલà«àªœà«€àª°àª¿àª¯àª¾"
+ },
+ "AL": {
+ "name": "અલà«àª¬à«‡àª¨àª¿àª¯àª¾"
+ },
+ "IS": {
+ "name": "આઇસલેનà«àª¡"
+ },
+ "IM": {
+ "name": "આઈલ ઓફ મૅન"
+ },
+ "IE": {
+ "name": "આયરà«àª²à«‡àª‚ડ"
+ },
+ "AR": {
+ "name": "આરà«àªœà«‡àª¨à«àªŸà«€àª¨àª¾"
+ },
+ "AM": {
+ "name": "આરà«àª®à«‡àª¨àª¿àª¯àª¾"
+ },
+ "GQ": {
+ "name": "ઇકà«àªµà«‡àªŸà«‹àª°àª¿àª¯àª² ગિની"
+ },
+ "EG": {
+ "name": "ઇજિપà«àª¤"
+ },
+ "IL": {
+ "name": "ઇàªàª°àª¾àª‡àª²"
+ },
+ "IT": {
+ "name": "ઇટાલી"
+ },
+ "ET": {
+ "name": "ઇથિઓપિયા"
+ },
+ "ID": {
+ "name": "ઇનà«àª¡à«‹àª¨à«‡àª¶àª¿àª¯àª¾"
+ },
+ "IQ": {
+ "name": "ઇરાક"
+ },
+ "IR": {
+ "name": "ઈરાન"
+ },
+ "UZ": {
+ "name": "ઉàªà«àª¬à«‡àª•àª¿àª¸à«àª¤àª¾àª¨"
+ },
+ "KP": {
+ "name": "ઉતà«àª¤àª° કોરિયા"
+ },
+ "MP": {
+ "name": "ઉતà«àª¤àª°à«€àª¯ મારિયાના આઇલેનà«àª¡à«àª¸"
+ },
+ "UY": {
+ "name": "ઉરà«àª—à«àªµà«‡"
+ },
+ "AI": {
+ "name": "àªàª‚ગà«àªµàª¿àª²àª¾"
+ },
+ "AD": {
+ "name": "àªàª‚ડોરા"
+ },
+ "EC": {
+ "name": "àªàª•à«àªµàª¾àª¡à«‹àª°"
+ },
+ "AQ": {
+ "name": "àªàª¨à«àªŸàª¾àª°à«àª•àªŸàª¿àª•àª¾"
+ },
+ "AG": {
+ "name": "àªàª¨à«àªŸà«€àª—à«àª† અને બરબà«àª¡àª¾"
+ },
+ "ER": {
+ "name": "àªàª°àª¿àªŸà«àª°àª¿àª¯àª¾"
+ },
+ "SV": {
+ "name": "àªàª² સેલà«àªµàª¾àª¡à«‹àª°"
+ },
+ "AX": {
+ "name": "àªàª²à«‡àª‚ડ આઇલેનà«àª¡à«àª¸"
+ },
+ "AC": {
+ "name": "àªàª¸à«‡àª¨à«àª¶àª¨ આઇલેનà«àª¡"
+ },
+ "EE": {
+ "name": "àªàª¸à«àªŸà«‹àª¨àª¿àª¯àª¾"
+ },
+ "AT": {
+ "name": "ઑસà«àªŸà«àª°àª¿àª¯àª¾"
+ },
+ "AU": {
+ "name": "ઑસà«àªŸà«àª°à«‡àª²àª¿àª¯àª¾"
+ },
+ "OM": {
+ "name": "ઓમાન"
+ },
+ "KH": {
+ "name": "કંબોડિયા"
+ },
+ "KZ": {
+ "name": "કàªàª¾àª•àª¿àª¸à«àª¤àª¾àª¨"
+ },
+ "QA": {
+ "name": "કતાર"
+ },
+ "KI": {
+ "name": "કિરિબાટી"
+ },
+ "KG": {
+ "name": "કિરà«àª—િàªà«àª¸à«àª¤àª¾àª¨"
+ },
+ "CK": {
+ "name": "કà«àª• આઇલેનà«àª¡à«àª¸"
+ },
+ "CW": {
+ "name": "કà«àª°àª¾àª•àª¾àª“"
+ },
+ "KW": {
+ "name": "કà«àªµà«ˆàª¤"
+ },
+ "IC": {
+ "name": "કૅનેરી આઇલેનà«àª¡à«àª¸"
+ },
+ "CV": {
+ "name": "કૅપ વરà«àª¡à«‡"
+ },
+ "CM": {
+ "name": "કૅમરૂન"
+ },
+ "CA": {
+ "name": "કેનેડા"
+ },
+ "KE": {
+ "name": "કેનà«àª¯àª¾"
+ },
+ "KY": {
+ "name": "કેયમેન આઇલેનà«àª¡à«àª¸"
+ },
+ "BQ": {
+ "name": "કેરેબિયન નેધરલેનà«àª¡à«àª"
+ },
+ "CD": {
+ "name": "કોંગો - કિંશાસા"
+ },
+ "CG": {
+ "name": "કોંગો - બà«àª°àª¾àªàª¾àªµàª¿àª²à«‡"
+ },
+ "CC": {
+ "name": "કોકોઠ(કીલીંગ) આઇલેનà«àª¡à«àª¸"
+ },
+ "CI": {
+ "name": "કોટ ડી આઇવરી"
+ },
+ "KM": {
+ "name": "કોમોરસ"
+ },
+ "CO": {
+ "name": "કોલમà«àª¬àª¿àª¯àª¾"
+ },
+ "XK": {
+ "name": "કોસોવો"
+ },
+ "CR": {
+ "name": "કોસà«àªŸàª¾ રિકા"
+ },
+ "CU": {
+ "name": "કà«àª¯à«àª¬àª¾"
+ },
+ "CX": {
+ "name": "કà«àª°àª¿àª¸àª®àª¸ આઇલેનà«àª¡"
+ },
+ "HR": {
+ "name": "કà«àª°à«‹àªàª¶àª¿àª¯àª¾"
+ },
+ "GY": {
+ "name": "ગયાના"
+ },
+ "GN": {
+ "name": "ગિની"
+ },
+ "GW": {
+ "name": "ગિની-બિસાઉ"
+ },
+ "GA": {
+ "name": "ગેબન"
+ },
+ "GM": {
+ "name": "ગેમà«àª¬àª¿àª¯àª¾"
+ },
+ "GL": {
+ "name": "ગà«àª°à«€àª¨àª²à«‡àª¨à«àª¡"
+ },
+ "GR": {
+ "name": "ગà«àª°à«€àª¸"
+ },
+ "GD": {
+ "name": "ગà«àª°à«‡àª¨à«‡àª¡àª¾"
+ },
+ "GT": {
+ "name": "ગà«àªµàª¾àªŸà«‡àª®àª¾àª²àª¾"
+ },
+ "GP": {
+ "name": "ગà«àªµàª¾àª¡à«‡àª²à«‹àªª"
+ },
+ "GU": {
+ "name": "ગà«àªµàª¾àª®"
+ },
+ "GG": {
+ "name": "ગà«àªµà«‡àª°à«àª¨àª¸à«‡"
+ },
+ "GH": {
+ "name": "ઘાના"
+ },
+ "TD": {
+ "name": "ચાડ"
+ },
+ "CL": {
+ "name": "ચિલી"
+ },
+ "CN": {
+ "name": "ચીન"
+ },
+ "CZ": {
+ "name": "ચેક રીપબà«àª²àª¿àª•"
+ },
+ "JM": {
+ "name": "જમૈકા"
+ },
+ "DE": {
+ "name": "જરà«àª®àª¨à«€"
+ },
+ "JE": {
+ "name": "જરà«àª¸à«€"
+ },
+ "JP": {
+ "name": "જાપાન"
+ },
+ "DJ": {
+ "name": "જીબૌટી"
+ },
+ "GI": {
+ "name": "જીબà«àª°àª¾àª²à«àªŸàª°"
+ },
+ "JO": {
+ "name": "જોરà«àª¡àª¨"
+ },
+ "GE": {
+ "name": "જà«àª¯à«‹àª°à«àªœà«€àª¯àª¾"
+ },
+ "ZM": {
+ "name": "àªàª¾àª®à«àª¬àª¿àª¯àª¾"
+ },
+ "ZW": {
+ "name": "àªàª¿àª®à«àª¬àª¾àª¬à«àªµà«‡"
+ },
+ "TC": {
+ "name": "ટરà«àª•à«àª¸ àªàª¨à«àª¡ કૈકોસ આઇલેનà«àª¡à«àª¸"
+ },
+ "TO": {
+ "name": "ટોંગા"
+ },
+ "TK": {
+ "name": "ટોકેલાઉ"
+ },
+ "TG": {
+ "name": "ટોગો"
+ },
+ "TN": {
+ "name": "ટà«àª¯à«àª¨àª¿àª¶àª¿àª¯àª¾"
+ },
+ "DG": {
+ "name": "ડિàªàª—à«‹ ગારસિઆ"
+ },
+ "DK": {
+ "name": "ડેનમારà«àª•"
+ },
+ "DO": {
+ "name": "ડોમિનિકન રીપબà«àª²àª¿àª•"
+ },
+ "DM": {
+ "name": "ડોમિનિકા"
+ },
+ "TZ": {
+ "name": "તાંàªàª¾àª¨àª¿àª¯àª¾"
+ },
+ "TW": {
+ "name": "તાઇવાન"
+ },
+ "TJ": {
+ "name": "તાજીકિસà«àª¤àª¾àª¨"
+ },
+ "TL": {
+ "name": "તિમોર-લેસà«àª¤à«‡"
+ },
+ "TM": {
+ "name": "તà«àª°à«àª•àª®à«‡àª¨àª¿àª¸à«àª¤àª¾àª¨"
+ },
+ "TR": {
+ "name": "તà«àª°à«àª•à«€"
+ },
+ "TV": {
+ "name": "તà«àªµàª¾àª²à«"
+ },
+ "TT": {
+ "name": "તà«àª°àª¿àª¨àª¿àª¦àª¾àª¦ અને ટોબેગો"
+ },
+ "TA": {
+ "name": "તà«àª°àª¿àª¸à«àª¤àª¾àª¨ દા કà«àª¨à«àª¹àª¾"
+ },
+ "TH": {
+ "name": "થાઇલેંડ"
+ },
+ "ZA": {
+ "name": "દકà«àª·àª¿àª£ આફà«àª°àª¿àª•àª¾"
+ },
+ "KR": {
+ "name": "દકà«àª·àª¿àª£ કોરિયા"
+ },
+ "GS": {
+ "name": "દકà«àª·àª¿àª£ જà«àª¯à«‹àª°à«àªœà«€àª¯àª¾ અને દકà«àª·àª¿àª£ સેનà«àª¡àªµàª¿àªš આઇલેનà«àª¡à«àª¸"
+ },
+ "SS": {
+ "name": "દકà«àª·àª¿àª£ સà«àª¦àª¾àª¨"
+ },
+ "NE": {
+ "name": "નાઇજર"
+ },
+ "NG": {
+ "name": "નાઇજીરીયા"
+ },
+ "NA": {
+ "name": "નામિબિયા"
+ },
+ "NI": {
+ "name": "નિકારાગà«àª†"
+ },
+ "NU": {
+ "name": "નીયà«"
+ },
+ "NL": {
+ "name": "નેધરલેનà«àª¡"
+ },
+ "NP": {
+ "name": "નેપાળ"
+ },
+ "NO": {
+ "name": "નૉરà«àªµà«‡"
+ },
+ "NF": {
+ "name": "નોરફૉક આઇલેનà«àª¡"
+ },
+ "NR": {
+ "name": "નૌરà«"
+ },
+ "NC": {
+ "name": "નà«àª¯à« સેલેડોનિયા"
+ },
+ "NZ": {
+ "name": "નà«àª¯à«àªà«€àª²à«‡àª¨à«àª¡"
+ },
+ "PA": {
+ "name": "પનામા"
+ },
+ "PW": {
+ "name": "પલાઉ"
+ },
+ "EH": {
+ "name": "પશà«àªšàª¿àª®à«€ સહારા"
+ },
+ "PK": {
+ "name": "પાકિસà«àª¤àª¾àª¨"
+ },
+ "PG": {
+ "name": "પાપà«àª† નà«àª¯à«‚ ગિની"
+ },
+ "PN": {
+ "name": "પીટકૈરà«àª¨ આઇલેનà«àª¡à«àª¸"
+ },
+ "PY": {
+ "name": "પેરાગà«àªµà«‡"
+ },
+ "PE": {
+ "name": "પેરà«"
+ },
+ "PS": {
+ "name": "પેલેસà«àªŸàª¿àª¨àª¿àª¯àª¨ ટેરિટરી"
+ },
+ "PT": {
+ "name": "પોરà«àªŸà«àª—લ"
+ },
+ "PL": {
+ "name": "પોલેંડ"
+ },
+ "PR": {
+ "name": "પà«àª¯à«àª…રà«àªŸà«‹ રિકો"
+ },
+ "FI": {
+ "name": "ફિનલેનà«àª¡"
+ },
+ "PH": {
+ "name": "ફિલીપાઇનà«àª¸"
+ },
+ "FJ": {
+ "name": "ફીજી"
+ },
+ "FO": {
+ "name": "ફૅરો આઇલેનà«àª¡à«àª¸"
+ },
+ "FK": {
+ "name": "ફૉકલેનà«àª¡ આઇલેનà«àª¡à«àª¸"
+ },
+ "FR": {
+ "name": "ફà«àª°àª¾àª‚સ"
+ },
+ "GF": {
+ "name": "ફà«àª°à«‡àª‚ચ ગયાના"
+ },
+ "PF": {
+ "name": "ફà«àª°à«‡àª‚ચ પોલિનેશિયા"
+ },
+ "TF": {
+ "name": "ફà«àª°à«‡àª‚ચ સદરà«àª¨ ટેરિટરીàª"
+ },
+ "BM": {
+ "name": "બરà«àª®à«àª¡àª¾"
+ },
+ "BG": {
+ "name": "બલà«àª—ેરિયા"
+ },
+ "BS": {
+ "name": "બહામાસ"
+ },
+ "BD": {
+ "name": "બાંગà«àª²àª¾àª¦à«‡àª¶"
+ },
+ "BB": {
+ "name": "બારà«àª¬àª¾àª¡à«‹àª¸"
+ },
+ "BI": {
+ "name": "બà«àª°à«àª‚ડી"
+ },
+ "BF": {
+ "name": "બà«àª°à«àª•àª¿àª¨àª¾ ફાસો"
+ },
+ "BJ": {
+ "name": "બેનિન"
+ },
+ "BY": {
+ "name": "બેલારà«àª¸"
+ },
+ "BZ": {
+ "name": "બેલીàª"
+ },
+ "BE": {
+ "name": "બેલà«àªœà«€àª¯àª®"
+ },
+ "BH": {
+ "name": "બેહરીન"
+ },
+ "BW": {
+ "name": "બોતà«àª¸à«àªµàª¾àª¨àª¾"
+ },
+ "BO": {
+ "name": "બોલિવિયા"
+ },
+ "BA": {
+ "name": "બોસà«àª¨àª¿àª¯àª¾ અને હરà«àªà«‡àª—ોવિના"
+ },
+ "BR": {
+ "name": "બà«àª°àª¾àªàª¿àª²"
+ },
+ "IO": {
+ "name": "બà«àª°àª¿àªŸàª¿àª¶ ઇનà«àª¡àª¿àª¯àª¨ ઓશન ટેરિટરી"
+ },
+ "VG": {
+ "name": "બà«àª°àª¿àªŸàª¿àª¶ વરà«àªœàª¿àª¨ આઇલેનà«àª¡à«àª¸"
+ },
+ "BN": {
+ "name": "બà«àª°à«àª¨à«‡àª‡"
+ },
+ "IN": {
+ "name": "ભારત"
+ },
+ "BT": {
+ "name": "ભૂટાન"
+ },
+ "MN": {
+ "name": "મંગોલિયા"
+ },
+ "MO": {
+ "name": "મકાઉ SAR ચીન"
+ },
+ "MY": {
+ "name": "મલેશિયા"
+ },
+ "FM": {
+ "name": "માઇકà«àª°à«‹àª¨à«‡àª¶àª¿àª¯àª¾"
+ },
+ "MQ": {
+ "name": "મારà«àªŸà«€àª¨à«€àª•"
+ },
+ "MH": {
+ "name": "મારà«àª¶àª² આઇલેનà«àª¡à«àª¸"
+ },
+ "MV": {
+ "name": "માલદિવà«àª¸"
+ },
+ "MW": {
+ "name": "માલાવી"
+ },
+ "ML": {
+ "name": "માલી"
+ },
+ "MT": {
+ "name": "માલà«àªŸàª¾"
+ },
+ "MX": {
+ "name": "મેકà«àª¸àª¿àª•à«‹"
+ },
+ "MG": {
+ "name": "મેડાગાસà«àª•àª°"
+ },
+ "YT": {
+ "name": "મેયોટ"
+ },
+ "MK": {
+ "name": "મેસેડોનિયા"
+ },
+ "ME": {
+ "name": "મૉનà«àªŸà«‡àª‚નેગà«àª°à«‹"
+ },
+ "MS": {
+ "name": "મોંટસેરાત"
+ },
+ "MZ": {
+ "name": "મોàªàª¾àª®à«àª¬àª¿àª•"
+ },
+ "MC": {
+ "name": "મોનાકો"
+ },
+ "MU": {
+ "name": "મોરિશિયસ"
+ },
+ "MA": {
+ "name": "મોરોકà«àª•à«‹"
+ },
+ "MD": {
+ "name": "મોલડોવા"
+ },
+ "MR": {
+ "name": "મૌરિટાનિયા"
+ },
+ "MM": {
+ "name": "મà«àª¯àª¾àª‚માર (બરà«àª®àª¾)"
+ },
+ "VI": {
+ "name": "યà«.àªàª¸ વરà«àªœàª¿àª¨ આઇલેનà«àª¡à«àª¸"
+ },
+ "UA": {
+ "name": "યà«àª•à«àª°à«‡àª¨"
+ },
+ "UG": {
+ "name": "યà«àª—ાંડા"
+ },
+ "AE": {
+ "name": "યà«àª¨àª¾àª‡àªŸà«‡àª¡ આરબ અમીરાત"
+ },
+ "GB": {
+ "name": "યà«àª¨àª¾àª‡àªŸà«‡àª¡ કિંગડમ"
+ },
+ "YE": {
+ "name": "યેમેન"
+ },
+ "RW": {
+ "name": "રવાંડા"
+ },
+ "RU": {
+ "name": "રશિયા"
+ },
+ "RE": {
+ "name": "રીયà«àª¨àª¿àª¯àª¨"
+ },
+ "RO": {
+ "name": "રોમાનિયા"
+ },
+ "LU": {
+ "name": "લકà«àªàª®àª¬àª°à«àª—"
+ },
+ "LR": {
+ "name": "લાઇબેરિયા"
+ },
+ "LA": {
+ "name": "લાઓસ"
+ },
+ "LV": {
+ "name": "લાતà«àªµàª¿àª¯àª¾"
+ },
+ "LT": {
+ "name": "લિથà«àª†àª¨àª¿àª¯àª¾"
+ },
+ "LY": {
+ "name": "લિબિયા"
+ },
+ "LB": {
+ "name": "લેબનોન"
+ },
+ "LS": {
+ "name": "લેસોથો"
+ },
+ "LI": {
+ "name": "લૈચટેંસà«àªŸà«‡àª‡àª¨"
+ },
+ "VU": {
+ "name": "વાનà«àª†àª¤à«"
+ },
+ "VN": {
+ "name": "વિયેતનામ"
+ },
+ "VA": {
+ "name": "વેટિકન સિટી"
+ },
+ "VE": {
+ "name": "વેનેàªà«àªàª²àª¾"
+ },
+ "WF": {
+ "name": "વૉલિસ àªàª‚ડ ફà«àª¯à«àªšà«àª¨àª¾"
+ },
+ "SC": {
+ "name": "શેશેલà«àª¸"
+ },
+ "LK": {
+ "name": "શà«àª°à«€àª²àª‚કા"
+ },
+ "US": {
+ "name": "સંયà«àª•àª¤ રાજà«àª¯ અમેરિકા"
+ },
+ "UM": {
+ "name": "સંયà«àª•à«àª¤ રાજà«àª¯ આઉટલાઇંગ આયલેનà«àª¡à«àª¸"
+ },
+ "WS": {
+ "name": "સમોઆ"
+ },
+ "RS": {
+ "name": "સરà«àª¬àª¿àª¯àª¾"
+ },
+ "SA": {
+ "name": "સાઉદી અરેબિયા"
+ },
+ "ST": {
+ "name": "સાઓ ટૉમ અને પà«àª°àª¿àª‚સિપે"
+ },
+ "CY": {
+ "name": "સાયપà«àª°àª¸"
+ },
+ "SG": {
+ "name": "સિંગાપà«àª°"
+ },
+ "SX": {
+ "name": "સિંટ મારà«àªŸà«‡àª¨"
+ },
+ "SL": {
+ "name": "સીàªàª°àª¾ લેઓન"
+ },
+ "SY": {
+ "name": "સીરિયા"
+ },
+ "SD": {
+ "name": "સà«àª¦àª¾àª¨"
+ },
+ "SR": {
+ "name": "સà«àª°à«€àª¨àª¾àª®"
+ },
+ "SM": {
+ "name": "સૅન મેરિનો"
+ },
+ "KN": {
+ "name": "સેંટ કિટà«àª¸ àªàª‚ડ નેવિસ"
+ },
+ "PM": {
+ "name": "સેંટ પીàªàª°à«‡ àªàª¨à«àª¡ મિકીલોન"
+ },
+ "BL": {
+ "name": "સેંટ બારà«àª¥àª²à«‡àª®à«€"
+ },
+ "MF": {
+ "name": "સેંટ મારà«àªŸàª¿àª¨"
+ },
+ "LC": {
+ "name": "સેંટ લà«àª¸àª¿àª¯àª¾"
+ },
+ "SH": {
+ "name": "સેંટ હેલેના"
+ },
+ "CF": {
+ "name": "સેંટà«àª°àª² આફà«àª°àª¿àª•àª¨ રીપબà«àª²àª¿àª•"
+ },
+ "SN": {
+ "name": "સેનેગલ"
+ },
+ "VC": {
+ "name": "સેનà«àªŸ વિનà«àª¸à«‡àª¨à«àªŸ àªàª¨à«àª¡ ગà«àª°à«‡àª¨à«‡àª¡à«€àª¨à«àª¸"
+ },
+ "SO": {
+ "name": "સોમાલિયા"
+ },
+ "SB": {
+ "name": "સોલોમન આઇલેનà«àª¡à«àª¸"
+ },
+ "ES": {
+ "name": "સà«àªªà«‡àª¨"
+ },
+ "EA": {
+ "name": "સà«àª¯à«àªŸàª¾ અને મેલિલા"
+ },
+ "SK": {
+ "name": "સà«àª²à«‹àªµà«‡àª•àª¿àª¯àª¾"
+ },
+ "SI": {
+ "name": "સà«àª²à«‹àªµà«‡àª¨àª¿àª¯àª¾"
+ },
+ "SZ": {
+ "name": "સà«àªµàª¾àªàª¿àª²à«‡àª¨à«àª¡"
+ },
+ "SJ": {
+ "name": "સà«àªµàª¾àª²àª¬àª°à«àª¡ àªàª¨à«àª¡ જેન મેયન"
+ },
+ "CH": {
+ "name": "સà«àªµàª¿àªŸà«àªàª°à«àª²à«…નà«àª¡"
+ },
+ "SE": {
+ "name": "સà«àªµà«€àª¡àª¨"
+ },
+ "HU": {
+ "name": "હંગેરી"
+ },
+ "HT": {
+ "name": "હૈતિ"
+ },
+ "HK": {
+ "name": "હોંગકોંગ SAR ચીન"
+ },
+ "HN": {
+ "name": "હોનà«àª¡à«àª°àª¸"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/country/guz.json b/library/intl/resources/country/guz.json
new file mode 100644
index 000000000..e57db8007
--- /dev/null
+++ b/library/intl/resources/country/guz.json
@@ -0,0 +1,761 @@
+{
+ "ZA": {
+ "name": "Afrika Kusini"
+ },
+ "AF": {
+ "name": "Afuganistani"
+ },
+ "IS": {
+ "name": "Aislandi"
+ },
+ "AR": {
+ "name": "Ajentina"
+ },
+ "AX": {
+ "name": "Ã…land Islands"
+ },
+ "AL": {
+ "name": "Albania"
+ },
+ "DZ": {
+ "name": "Aljeria"
+ },
+ "AD": {
+ "name": "Andora"
+ },
+ "AO": {
+ "name": "Angola"
+ },
+ "AI": {
+ "name": "Anguilla"
+ },
+ "AQ": {
+ "name": "Antarctica"
+ },
+ "AG": {
+ "name": "Antigua na Barbuda"
+ },
+ "AM": {
+ "name": "Armenia"
+ },
+ "AW": {
+ "name": "Aruba"
+ },
+ "AC": {
+ "name": "Ascension Island"
+ },
+ "AU": {
+ "name": "Australia"
+ },
+ "AT": {
+ "name": "Austria"
+ },
+ "IE": {
+ "name": "Ayalandi"
+ },
+ "AZ": {
+ "name": "Azabajani"
+ },
+ "BB": {
+ "name": "Babadosi"
+ },
+ "BS": {
+ "name": "Bahama"
+ },
+ "BH": {
+ "name": "Bahareni"
+ },
+ "BD": {
+ "name": "Bangladeshi"
+ },
+ "BY": {
+ "name": "Belarusi"
+ },
+ "BZ": {
+ "name": "Belize"
+ },
+ "BJ": {
+ "name": "Benini"
+ },
+ "BM": {
+ "name": "Bermuda"
+ },
+ "BO": {
+ "name": "Bolivia"
+ },
+ "BA": {
+ "name": "Bosnia na Hezegovina"
+ },
+ "BW": {
+ "name": "Botswana"
+ },
+ "BR": {
+ "name": "Brazili"
+ },
+ "BN": {
+ "name": "Brunei"
+ },
+ "BF": {
+ "name": "Bukinafaso"
+ },
+ "MG": {
+ "name": "Bukini"
+ },
+ "BG": {
+ "name": "Bulgaria"
+ },
+ "BI": {
+ "name": "Burundi"
+ },
+ "BT": {
+ "name": "Butani"
+ },
+ "IC": {
+ "name": "Canary Islands"
+ },
+ "BQ": {
+ "name": "Caribbean Netherlands"
+ },
+ "EA": {
+ "name": "Ceuta & Melilla"
+ },
+ "TD": {
+ "name": "Chadi"
+ },
+ "CL": {
+ "name": "Chile"
+ },
+ "CN": {
+ "name": "China"
+ },
+ "CX": {
+ "name": "Christmas Island"
+ },
+ "CC": {
+ "name": "Cocos (Keeling) Islands"
+ },
+ "CW": {
+ "name": "Curaçao"
+ },
+ "DK": {
+ "name": "Denmaki"
+ },
+ "DG": {
+ "name": "Diego Garcia"
+ },
+ "DM": {
+ "name": "Dominika"
+ },
+ "EC": {
+ "name": "Ekwado"
+ },
+ "SV": {
+ "name": "Elsavado"
+ },
+ "IO": {
+ "name": "Eneo la Uingereza katika Bahari Hindi"
+ },
+ "ER": {
+ "name": "Eritrea"
+ },
+ "EE": {
+ "name": "Estonia"
+ },
+ "AE": {
+ "name": "Falme za Kiarabu"
+ },
+ "FO": {
+ "name": "Faroe Islands"
+ },
+ "FJ": {
+ "name": "Fiji"
+ },
+ "PH": {
+ "name": "Filipino"
+ },
+ "TF": {
+ "name": "French Southern Territories"
+ },
+ "GA": {
+ "name": "Gaboni"
+ },
+ "GM": {
+ "name": "Gambia"
+ },
+ "GH": {
+ "name": "Ghana"
+ },
+ "GN": {
+ "name": "Gine"
+ },
+ "GW": {
+ "name": "Ginebisau"
+ },
+ "GQ": {
+ "name": "Ginekweta"
+ },
+ "GD": {
+ "name": "Grenada"
+ },
+ "GL": {
+ "name": "Grinlandi"
+ },
+ "GG": {
+ "name": "Guernsey"
+ },
+ "GY": {
+ "name": "Guyana"
+ },
+ "GP": {
+ "name": "Gwadelupe"
+ },
+ "GU": {
+ "name": "Gwam"
+ },
+ "GT": {
+ "name": "Gwatemala"
+ },
+ "GF": {
+ "name": "Gwiyana ya Ufaransa"
+ },
+ "HT": {
+ "name": "Haiti"
+ },
+ "ES": {
+ "name": "Hispania"
+ },
+ "HN": {
+ "name": "Hondurasi"
+ },
+ "HK": {
+ "name": "Hong Kong SAR China"
+ },
+ "HU": {
+ "name": "Hungaria"
+ },
+ "IN": {
+ "name": "India"
+ },
+ "ID": {
+ "name": "Indonesia"
+ },
+ "IQ": {
+ "name": "Iraki"
+ },
+ "IM": {
+ "name": "Isle of Man"
+ },
+ "IL": {
+ "name": "Israeli"
+ },
+ "IT": {
+ "name": "Italia"
+ },
+ "JM": {
+ "name": "Jamaika"
+ },
+ "CF": {
+ "name": "Jamhuri ya Afrika ya Kati"
+ },
+ "CZ": {
+ "name": "Jamhuri ya Cheki"
+ },
+ "DO": {
+ "name": "Jamhuri ya Dominika"
+ },
+ "CD": {
+ "name": "Jamhuri ya Kidemokrasia ya Kongo"
+ },
+ "JP": {
+ "name": "Japani"
+ },
+ "JE": {
+ "name": "Jersey"
+ },
+ "GI": {
+ "name": "Jibralta"
+ },
+ "DJ": {
+ "name": "Jibuti"
+ },
+ "GE": {
+ "name": "Jojia"
+ },
+ "KH": {
+ "name": "Kambodia"
+ },
+ "CM": {
+ "name": "Kameruni"
+ },
+ "CA": {
+ "name": "Kanada"
+ },
+ "QA": {
+ "name": "Katari"
+ },
+ "KZ": {
+ "name": "Kazakistani"
+ },
+ "KE": {
+ "name": "Kenya"
+ },
+ "CV": {
+ "name": "Kepuvede"
+ },
+ "KI": {
+ "name": "Kiribati"
+ },
+ "KG": {
+ "name": "Kirigizistani"
+ },
+ "NF": {
+ "name": "Kisiwa cha Norfok"
+ },
+ "CI": {
+ "name": "Kodivaa"
+ },
+ "CO": {
+ "name": "Kolombia"
+ },
+ "KM": {
+ "name": "Komoro"
+ },
+ "CG": {
+ "name": "Kongo"
+ },
+ "HR": {
+ "name": "Korasia"
+ },
+ "KP": {
+ "name": "Korea Kaskazini"
+ },
+ "KR": {
+ "name": "Korea Kusini"
+ },
+ "XK": {
+ "name": "Kosovo"
+ },
+ "CR": {
+ "name": "Kostarika"
+ },
+ "CU": {
+ "name": "Kuba"
+ },
+ "CY": {
+ "name": "Kuprosi"
+ },
+ "KW": {
+ "name": "Kuwaiti"
+ },
+ "LA": {
+ "name": "Laosi"
+ },
+ "LU": {
+ "name": "Lasembagi"
+ },
+ "LV": {
+ "name": "Lativia"
+ },
+ "LB": {
+ "name": "Lebanoni"
+ },
+ "LS": {
+ "name": "Lesoto"
+ },
+ "LR": {
+ "name": "Liberia"
+ },
+ "LY": {
+ "name": "Libya"
+ },
+ "LI": {
+ "name": "Lishenteni"
+ },
+ "LT": {
+ "name": "Litwania"
+ },
+ "MO": {
+ "name": "Macau SAR China"
+ },
+ "MW": {
+ "name": "Malawi"
+ },
+ "MY": {
+ "name": "Malesia"
+ },
+ "ML": {
+ "name": "Mali"
+ },
+ "MT": {
+ "name": "Malta"
+ },
+ "US": {
+ "name": "Marekani"
+ },
+ "MQ": {
+ "name": "Martiniki"
+ },
+ "MK": {
+ "name": "Masedonia"
+ },
+ "YT": {
+ "name": "Mayotte"
+ },
+ "MX": {
+ "name": "Meksiko"
+ },
+ "FM": {
+ "name": "Mikronesia"
+ },
+ "EG": {
+ "name": "Misri"
+ },
+ "MV": {
+ "name": "Modivu"
+ },
+ "MD": {
+ "name": "Moldova"
+ },
+ "MC": {
+ "name": "Monako"
+ },
+ "MN": {
+ "name": "Mongolia"
+ },
+ "ME": {
+ "name": "Montenegro"
+ },
+ "MS": {
+ "name": "Montserrati"
+ },
+ "MU": {
+ "name": "Morisi"
+ },
+ "MR": {
+ "name": "Moritania"
+ },
+ "MA": {
+ "name": "Moroko"
+ },
+ "MZ": {
+ "name": "Msumbiji"
+ },
+ "MM": {
+ "name": "Myama"
+ },
+ "NA": {
+ "name": "Namibia"
+ },
+ "NR": {
+ "name": "Nauru"
+ },
+ "NP": {
+ "name": "Nepali"
+ },
+ "NE": {
+ "name": "Nijeri"
+ },
+ "NG": {
+ "name": "Nijeria"
+ },
+ "NI": {
+ "name": "Nikaragwa"
+ },
+ "NU": {
+ "name": "Niue"
+ },
+ "NO": {
+ "name": "Norwe"
+ },
+ "NC": {
+ "name": "Nyukaledonia"
+ },
+ "NZ": {
+ "name": "Nyuzilandi"
+ },
+ "OM": {
+ "name": "Omani"
+ },
+ "PK": {
+ "name": "Pakistani"
+ },
+ "PW": {
+ "name": "Palau"
+ },
+ "PA": {
+ "name": "Panama"
+ },
+ "PG": {
+ "name": "Papua"
+ },
+ "PY": {
+ "name": "Paragwai"
+ },
+ "PE": {
+ "name": "Peru"
+ },
+ "PN": {
+ "name": "Pitkairni"
+ },
+ "PL": {
+ "name": "Polandi"
+ },
+ "PF": {
+ "name": "Polinesia ya Ufaransa"
+ },
+ "PR": {
+ "name": "Pwetoriko"
+ },
+ "RE": {
+ "name": "Riyunioni"
+ },
+ "RO": {
+ "name": "Romania"
+ },
+ "RW": {
+ "name": "Rwanda"
+ },
+ "SM": {
+ "name": "Samarino"
+ },
+ "WS": {
+ "name": "Samoa"
+ },
+ "AS": {
+ "name": "Samoa ya Marekani"
+ },
+ "SH": {
+ "name": "Santahelena"
+ },
+ "KN": {
+ "name": "Santakitzi na Nevis"
+ },
+ "LC": {
+ "name": "Santalusia"
+ },
+ "PM": {
+ "name": "Santapieri na Mikeloni"
+ },
+ "VC": {
+ "name": "Santavisenti na Grenadini"
+ },
+ "ST": {
+ "name": "Sao Tome na Principe"
+ },
+ "SA": {
+ "name": "Saudi"
+ },
+ "SN": {
+ "name": "Senegali"
+ },
+ "RS": {
+ "name": "Serbia"
+ },
+ "SC": {
+ "name": "Shelisheli"
+ },
+ "SL": {
+ "name": "Siera Leoni"
+ },
+ "SG": {
+ "name": "Singapoo"
+ },
+ "SX": {
+ "name": "Sint Maarten"
+ },
+ "SY": {
+ "name": "Siria"
+ },
+ "LK": {
+ "name": "Sirilanka"
+ },
+ "SK": {
+ "name": "Slovakia"
+ },
+ "SI": {
+ "name": "Slovenia"
+ },
+ "SO": {
+ "name": "Somalia"
+ },
+ "GS": {
+ "name": "South Georgia & South Sandwich Islands"
+ },
+ "SS": {
+ "name": "South Sudan"
+ },
+ "BL": {
+ "name": "St. Barthélemy"
+ },
+ "MF": {
+ "name": "St. Martin"
+ },
+ "SD": {
+ "name": "Sudani"
+ },
+ "SR": {
+ "name": "Surinamu"
+ },
+ "SJ": {
+ "name": "Svalbard & Jan Mayen"
+ },
+ "TH": {
+ "name": "Tailandi"
+ },
+ "TW": {
+ "name": "Taiwani"
+ },
+ "TJ": {
+ "name": "Tajikistani"
+ },
+ "TZ": {
+ "name": "Tanzania"
+ },
+ "TL": {
+ "name": "Timori ya Mashariki"
+ },
+ "TG": {
+ "name": "Togo"
+ },
+ "TK": {
+ "name": "Tokelau"
+ },
+ "TO": {
+ "name": "Tonga"
+ },
+ "TT": {
+ "name": "Trinidad na Tobago"
+ },
+ "TA": {
+ "name": "Tristan da Cunha"
+ },
+ "TN": {
+ "name": "Tunisia"
+ },
+ "TM": {
+ "name": "Turukimenistani"
+ },
+ "TV": {
+ "name": "Tuvalu"
+ },
+ "UM": {
+ "name": "U.S. Outlying Islands"
+ },
+ "IR": {
+ "name": "Uajemi"
+ },
+ "BE": {
+ "name": "Ubelgiji"
+ },
+ "FR": {
+ "name": "Ufaransa"
+ },
+ "FI": {
+ "name": "Ufini"
+ },
+ "UG": {
+ "name": "Uganda"
+ },
+ "GR": {
+ "name": "Ugiriki"
+ },
+ "ET": {
+ "name": "Uhabeshi"
+ },
+ "NL": {
+ "name": "Uholanzi"
+ },
+ "GB": {
+ "name": "Uingereza"
+ },
+ "DE": {
+ "name": "Ujerumani"
+ },
+ "PS": {
+ "name": "Ukingo wa Magharibi na Ukanda wa Gaza wa Palestina"
+ },
+ "UA": {
+ "name": "Ukraini"
+ },
+ "PT": {
+ "name": "Ureno"
+ },
+ "UY": {
+ "name": "Urugwai"
+ },
+ "RU": {
+ "name": "Urusi"
+ },
+ "SZ": {
+ "name": "Uswazi"
+ },
+ "SE": {
+ "name": "Uswidi"
+ },
+ "CH": {
+ "name": "Uswisi"
+ },
+ "TR": {
+ "name": "Uturuki"
+ },
+ "UZ": {
+ "name": "Uzibekistani"
+ },
+ "VU": {
+ "name": "Vanuatu"
+ },
+ "VA": {
+ "name": "Vatikani"
+ },
+ "VE": {
+ "name": "Venezuela"
+ },
+ "VN": {
+ "name": "Vietinamu"
+ },
+ "CK": {
+ "name": "Visiwa vya Cook"
+ },
+ "FK": {
+ "name": "Visiwa vya Falkland"
+ },
+ "KY": {
+ "name": "Visiwa vya Kayman"
+ },
+ "MP": {
+ "name": "Visiwa vya Mariana vya Kaskazini"
+ },
+ "MH": {
+ "name": "Visiwa vya Marshal"
+ },
+ "SB": {
+ "name": "Visiwa vya Solomon"
+ },
+ "TC": {
+ "name": "Visiwa vya Turki na Kaiko"
+ },
+ "VI": {
+ "name": "Visiwa vya Virgin vya Marekani"
+ },
+ "VG": {
+ "name": "Visiwa vya Virgin vya Uingereza"
+ },
+ "WF": {
+ "name": "Walis na Futuna"
+ },
+ "EH": {
+ "name": "Western Sahara"
+ },
+ "YE": {
+ "name": "Yemeni"
+ },
+ "JO": {
+ "name": "Yordani"
+ },
+ "ZM": {
+ "name": "Zambia"
+ },
+ "ZW": {
+ "name": "Zimbabwe"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/country/ha.json b/library/intl/resources/country/ha.json
new file mode 100644
index 000000000..0c4103141
--- /dev/null
+++ b/library/intl/resources/country/ha.json
@@ -0,0 +1,761 @@
+{
+ "AF": {
+ "name": "Afaganistan"
+ },
+ "ZA": {
+ "name": "Afirka Ta Kudu"
+ },
+ "CI": {
+ "name": "Aibari Kwas"
+ },
+ "IS": {
+ "name": "Aisalan"
+ },
+ "AX": {
+ "name": "Ã…land Islands"
+ },
+ "AL": {
+ "name": "Albaniya"
+ },
+ "DZ": {
+ "name": "Aljeriya"
+ },
+ "US": {
+ "name": "Amurka"
+ },
+ "AD": {
+ "name": "Andora"
+ },
+ "AI": {
+ "name": "Angila"
+ },
+ "AO": {
+ "name": "Angola"
+ },
+ "AQ": {
+ "name": "Antarctica"
+ },
+ "AG": {
+ "name": "Antigwa da Barbuba"
+ },
+ "AR": {
+ "name": "Arjantiniya"
+ },
+ "AM": {
+ "name": "Armeniya"
+ },
+ "AW": {
+ "name": "Aruba"
+ },
+ "AC": {
+ "name": "Ascension Island"
+ },
+ "IE": {
+ "name": "Ayalan"
+ },
+ "AZ": {
+ "name": "Azarbaijan"
+ },
+ "BS": {
+ "name": "Bahamas"
+ },
+ "BH": {
+ "name": "Baharan"
+ },
+ "BD": {
+ "name": "Bangiladas"
+ },
+ "VU": {
+ "name": "Banuwatu"
+ },
+ "BB": {
+ "name": "Barbadas"
+ },
+ "BM": {
+ "name": "Barmuda"
+ },
+ "BW": {
+ "name": "Baswana"
+ },
+ "VA": {
+ "name": "Batikan"
+ },
+ "BY": {
+ "name": "Belarus"
+ },
+ "BE": {
+ "name": "Belgiyom"
+ },
+ "BZ": {
+ "name": "Beliz"
+ },
+ "VE": {
+ "name": "Benezuwela"
+ },
+ "BJ": {
+ "name": "Binin"
+ },
+ "BR": {
+ "name": "Birazil"
+ },
+ "GB": {
+ "name": "Birtaniya"
+ },
+ "VN": {
+ "name": "Biyetinam"
+ },
+ "BO": {
+ "name": "Bolibiya"
+ },
+ "BA": {
+ "name": "Bosniya Harzagobina"
+ },
+ "BG": {
+ "name": "Bulgariya"
+ },
+ "BF": {
+ "name": "Burkina Faso"
+ },
+ "MM": {
+ "name": "Burma, Miyamar"
+ },
+ "BI": {
+ "name": "Burundi"
+ },
+ "BN": {
+ "name": "Burune"
+ },
+ "BT": {
+ "name": "Butan"
+ },
+ "TD": {
+ "name": "Cadi"
+ },
+ "CN": {
+ "name": "Caina, Sin"
+ },
+ "IC": {
+ "name": "Canary Islands"
+ },
+ "BQ": {
+ "name": "Caribbean Netherlands"
+ },
+ "CL": {
+ "name": "Cayile"
+ },
+ "EA": {
+ "name": "Ceuta & Melilla"
+ },
+ "CX": {
+ "name": "Christmas Island"
+ },
+ "CC": {
+ "name": "Cocos (Keeling) Islands"
+ },
+ "CW": {
+ "name": "Curaçao"
+ },
+ "DK": {
+ "name": "Danmark"
+ },
+ "DG": {
+ "name": "Diego Garcia"
+ },
+ "DM": {
+ "name": "Dominika"
+ },
+ "EC": {
+ "name": "Ekwador"
+ },
+ "SV": {
+ "name": "El Salbador"
+ },
+ "ER": {
+ "name": "Eritireya"
+ },
+ "EE": {
+ "name": "Estoniya"
+ },
+ "FR": {
+ "name": "Faransa"
+ },
+ "FO": {
+ "name": "Faroe Islands"
+ },
+ "FJ": {
+ "name": "Fiji"
+ },
+ "PH": {
+ "name": "Filipin"
+ },
+ "FI": {
+ "name": "Finlan"
+ },
+ "PF": {
+ "name": "Folinesiya Ta Faransa"
+ },
+ "TF": {
+ "name": "French Southern Territories"
+ },
+ "GA": {
+ "name": "Gabon"
+ },
+ "GM": {
+ "name": "Gambiya"
+ },
+ "GH": {
+ "name": "Gana"
+ },
+ "GN": {
+ "name": "Gini"
+ },
+ "GW": {
+ "name": "Gini Bisau"
+ },
+ "GF": {
+ "name": "Gini Ta Faransa"
+ },
+ "GQ": {
+ "name": "Gini Ta Ikwaita"
+ },
+ "GR": {
+ "name": "Girka"
+ },
+ "GD": {
+ "name": "Girnada"
+ },
+ "GL": {
+ "name": "Grinlan"
+ },
+ "GG": {
+ "name": "Guernsey"
+ },
+ "GY": {
+ "name": "Guyana"
+ },
+ "GP": {
+ "name": "Gwadaluf"
+ },
+ "GU": {
+ "name": "Gwam"
+ },
+ "GT": {
+ "name": "Gwatamala"
+ },
+ "ET": {
+ "name": "Habasha"
+ },
+ "AE": {
+ "name": "HaÉ—aÉ—É—iyar Daular Larabawa"
+ },
+ "HT": {
+ "name": "Haiti"
+ },
+ "NL": {
+ "name": "Holan"
+ },
+ "HN": {
+ "name": "Honduras"
+ },
+ "HK": {
+ "name": "Hong Kong SAR China"
+ },
+ "HU": {
+ "name": "Hungari"
+ },
+ "IN": {
+ "name": "Indiya"
+ },
+ "ID": {
+ "name": "Indunusiya"
+ },
+ "IQ": {
+ "name": "Iraƙi"
+ },
+ "IR": {
+ "name": "Iran"
+ },
+ "IM": {
+ "name": "Isle of Man"
+ },
+ "IT": {
+ "name": "Italiya"
+ },
+ "IL": {
+ "name": "Iziraʼila"
+ },
+ "JM": {
+ "name": "Jamaika"
+ },
+ "CF": {
+ "name": "Jamhuriyar Afirka Ta Tsakiya"
+ },
+ "CZ": {
+ "name": "Jamhuriyar Cak"
+ },
+ "CD": {
+ "name": "Jamhuriyar DimokuraÉ—iyyar Kongo"
+ },
+ "DO": {
+ "name": "Jamhuriyar Dominika"
+ },
+ "DE": {
+ "name": "Jamus"
+ },
+ "JP": {
+ "name": "Japan"
+ },
+ "JE": {
+ "name": "Jersey"
+ },
+ "GI": {
+ "name": "Jibaraltar"
+ },
+ "DJ": {
+ "name": "Jibuti"
+ },
+ "GE": {
+ "name": "Jiwarjiya"
+ },
+ "JO": {
+ "name": "Jordan"
+ },
+ "NC": {
+ "name": "Kaledoniya Sabuwa"
+ },
+ "CM": {
+ "name": "Kamaru"
+ },
+ "KH": {
+ "name": "Kambodiya"
+ },
+ "CA": {
+ "name": "Kanada"
+ },
+ "KZ": {
+ "name": "Kazakistan"
+ },
+ "KE": {
+ "name": "Kenya"
+ },
+ "KG": {
+ "name": "Kirgizistan"
+ },
+ "KI": {
+ "name": "Kiribati"
+ },
+ "CO": {
+ "name": "Kolambiya"
+ },
+ "CG": {
+ "name": "Kongo"
+ },
+ "KP": {
+ "name": "Koreya Ta Arewa"
+ },
+ "KR": {
+ "name": "Koreya Ta Kudu"
+ },
+ "XK": {
+ "name": "Kosovo"
+ },
+ "HR": {
+ "name": "Kurowaishiya"
+ },
+ "KM": {
+ "name": "Kwamoras"
+ },
+ "CR": {
+ "name": "Kwasta Rika"
+ },
+ "QA": {
+ "name": "Kwatar"
+ },
+ "KW": {
+ "name": "Kwiyat"
+ },
+ "CU": {
+ "name": "Kyuba"
+ },
+ "SA": {
+ "name": "Ƙasar Makka"
+ },
+ "LB": {
+ "name": "Labanan"
+ },
+ "LR": {
+ "name": "Laberiya"
+ },
+ "LV": {
+ "name": "latibiya"
+ },
+ "LA": {
+ "name": "Lawas"
+ },
+ "LS": {
+ "name": "Lesoto"
+ },
+ "LY": {
+ "name": "Libiya"
+ },
+ "LI": {
+ "name": "Licansitan"
+ },
+ "LT": {
+ "name": "Lituweniya"
+ },
+ "LU": {
+ "name": "Lukusambur"
+ },
+ "MO": {
+ "name": "Macau SAR China"
+ },
+ "MG": {
+ "name": "Madagaskar"
+ },
+ "MX": {
+ "name": "Makasiko"
+ },
+ "MY": {
+ "name": "Malaisiya"
+ },
+ "MW": {
+ "name": "Malawi"
+ },
+ "MV": {
+ "name": "Maldibi"
+ },
+ "MD": {
+ "name": "Maldoba"
+ },
+ "ML": {
+ "name": "Mali"
+ },
+ "MT": {
+ "name": "Malta"
+ },
+ "MN": {
+ "name": "Mangoliya"
+ },
+ "MS": {
+ "name": "Manserati"
+ },
+ "MA": {
+ "name": "Maroko"
+ },
+ "MQ": {
+ "name": "Martinik"
+ },
+ "EG": {
+ "name": "Masar, Misira"
+ },
+ "MK": {
+ "name": "Masedoniya"
+ },
+ "YT": {
+ "name": "Mayoti"
+ },
+ "FM": {
+ "name": "Mikuronesiya"
+ },
+ "MC": {
+ "name": "Monako"
+ },
+ "ME": {
+ "name": "Montenegro"
+ },
+ "MR": {
+ "name": "Moritaniya"
+ },
+ "MU": {
+ "name": "Moritus"
+ },
+ "MZ": {
+ "name": "Mozambik"
+ },
+ "NG": {
+ "name": "Najeriya"
+ },
+ "NA": {
+ "name": "Namibiya"
+ },
+ "NR": {
+ "name": "Nauru"
+ },
+ "NP": {
+ "name": "Nefal"
+ },
+ "NE": {
+ "name": "Nijar"
+ },
+ "NI": {
+ "name": "Nikaraguwa"
+ },
+ "NU": {
+ "name": "Niyu"
+ },
+ "NO": {
+ "name": "Norwe"
+ },
+ "NZ": {
+ "name": "Nuzilan"
+ },
+ "OM": {
+ "name": "Oman"
+ },
+ "AU": {
+ "name": "Ostareliya"
+ },
+ "AT": {
+ "name": "Ostiriya"
+ },
+ "PK": {
+ "name": "Pakistan"
+ },
+ "PS": {
+ "name": "PalasÉ—inu"
+ },
+ "PW": {
+ "name": "Palau"
+ },
+ "PA": {
+ "name": "Panama"
+ },
+ "PG": {
+ "name": "Papuwa Nugini"
+ },
+ "PY": {
+ "name": "Paragai"
+ },
+ "PE": {
+ "name": "Peru"
+ },
+ "PN": {
+ "name": "Pitakarin"
+ },
+ "PL": {
+ "name": "Polan"
+ },
+ "PR": {
+ "name": "Porto Riko"
+ },
+ "PT": {
+ "name": "Portugal"
+ },
+ "RU": {
+ "name": "Rasha"
+ },
+ "RE": {
+ "name": "Rawuniyan"
+ },
+ "RO": {
+ "name": "Romaniya"
+ },
+ "RW": {
+ "name": "Ruwanda"
+ },
+ "SC": {
+ "name": "Saishal"
+ },
+ "SL": {
+ "name": "Salewo"
+ },
+ "WS": {
+ "name": "Samowa"
+ },
+ "AS": {
+ "name": "Samowa Ta Amurka"
+ },
+ "VC": {
+ "name": "San Binsan Da Girnadin"
+ },
+ "SH": {
+ "name": "San Helena"
+ },
+ "KN": {
+ "name": "San Kiti Da Nebis"
+ },
+ "LC": {
+ "name": "San Lusiya"
+ },
+ "SM": {
+ "name": "San Marino"
+ },
+ "PM": {
+ "name": "San Piyar Da Mikelan"
+ },
+ "ST": {
+ "name": "Sawo Tome Da Paransip"
+ },
+ "RS": {
+ "name": "Serbia"
+ },
+ "CY": {
+ "name": "Sifurus"
+ },
+ "SG": {
+ "name": "Singapur"
+ },
+ "SN": {
+ "name": "Sinigal"
+ },
+ "SX": {
+ "name": "Sint Maarten"
+ },
+ "ES": {
+ "name": "Sipen"
+ },
+ "LK": {
+ "name": "Siri Lanka"
+ },
+ "SO": {
+ "name": "Somaliya"
+ },
+ "GS": {
+ "name": "South Georgia & South Sandwich Islands"
+ },
+ "SS": {
+ "name": "South Sudan"
+ },
+ "BL": {
+ "name": "St. Barthélemy"
+ },
+ "MF": {
+ "name": "St. Martin"
+ },
+ "SD": {
+ "name": "Sudan"
+ },
+ "SK": {
+ "name": "Sulobakiya"
+ },
+ "SI": {
+ "name": "Sulobeniya"
+ },
+ "SR": {
+ "name": "Suriname"
+ },
+ "SZ": {
+ "name": "Suwazilan"
+ },
+ "SE": {
+ "name": "Suwedan"
+ },
+ "CH": {
+ "name": "Suwizalan"
+ },
+ "SJ": {
+ "name": "Svalbard & Jan Mayen"
+ },
+ "SY": {
+ "name": "Sham, Siriya"
+ },
+ "TH": {
+ "name": "Tailan"
+ },
+ "TW": {
+ "name": "Taiwan"
+ },
+ "TJ": {
+ "name": "Tajikistan"
+ },
+ "TK": {
+ "name": "Takelau"
+ },
+ "TO": {
+ "name": "Tanga"
+ },
+ "TZ": {
+ "name": "Tanzaniya"
+ },
+ "TL": {
+ "name": "Timor Ta Gabas"
+ },
+ "TT": {
+ "name": "Tirinidad Da Tobago"
+ },
+ "TG": {
+ "name": "Togo"
+ },
+ "TA": {
+ "name": "Tristan da Cunha"
+ },
+ "TV": {
+ "name": "Tubalu"
+ },
+ "TN": {
+ "name": "Tunisiya"
+ },
+ "TC": {
+ "name": "Turkis Da Tsibiran Kaikwas"
+ },
+ "TR": {
+ "name": "Turkiyya"
+ },
+ "TM": {
+ "name": "Turkumenistan"
+ },
+ "VI": {
+ "name": "Tsibiran Birjin Ta Amurka"
+ },
+ "FK": {
+ "name": "Tsibiran Falkilan"
+ },
+ "KY": {
+ "name": "Tsibiran Kaiman"
+ },
+ "CV": {
+ "name": "Tsibiran Kap Barde"
+ },
+ "CK": {
+ "name": "Tsibiran Kuku"
+ },
+ "MP": {
+ "name": "Tsibiran Mariyana Na Arewa"
+ },
+ "MH": {
+ "name": "Tsibiran Marshal"
+ },
+ "SB": {
+ "name": "Tsibiran Salaman"
+ },
+ "VG": {
+ "name": "Tsibirin Birjin Na Birtaniya"
+ },
+ "NF": {
+ "name": "Tsibirin Narfalk"
+ },
+ "UM": {
+ "name": "U.S. Outlying Islands"
+ },
+ "UZ": {
+ "name": "Uzubekistan"
+ },
+ "WF": {
+ "name": "Walis Da Futuna"
+ },
+ "EH": {
+ "name": "Western Sahara"
+ },
+ "YE": {
+ "name": "Yamal"
+ },
+ "IO": {
+ "name": "Yankin Birtaniya Na Tekun Indiya"
+ },
+ "UG": {
+ "name": "Yuganda"
+ },
+ "UA": {
+ "name": "Yukaran"
+ },
+ "UY": {
+ "name": "Yurugai"
+ },
+ "ZM": {
+ "name": "Zambiya"
+ },
+ "ZW": {
+ "name": "Zimbabuwe"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/country/he.json b/library/intl/resources/country/he.json
new file mode 100644
index 000000000..bf9160592
--- /dev/null
+++ b/library/intl/resources/country/he.json
@@ -0,0 +1,761 @@
+{
+ "UG": {
+ "name": "×וגנדה"
+ },
+ "UZ": {
+ "name": "×וזבקיסטן"
+ },
+ "AT": {
+ "name": "×וסטריה"
+ },
+ "AU": {
+ "name": "×וסטרליה"
+ },
+ "UA": {
+ "name": "×וקר××™× ×”"
+ },
+ "UY": {
+ "name": "×ורוגוו××™"
+ },
+ "AZ": {
+ "name": "×זרבייג׳ן"
+ },
+ "CX": {
+ "name": "××™ ×—×’ המולד"
+ },
+ "AE": {
+ "name": "×יחוד ×”×מירויות הערביות"
+ },
+ "IT": {
+ "name": "×יטליה"
+ },
+ "AX": {
+ "name": "××™×™ ×ולנד"
+ },
+ "BS": {
+ "name": "××™×™ בה×מה"
+ },
+ "VI": {
+ "name": "××™×™ הבתולה ×”×מריקניי×"
+ },
+ "VG": {
+ "name": "××™×™ הבתולה הבריטיי×"
+ },
+ "WF": {
+ "name": "××™×™ ווליס ופוטונה"
+ },
+ "TC": {
+ "name": "××™×™ טורקס וק×יקוס"
+ },
+ "MP": {
+ "name": "××™×™ מרי×× ×” הצפוניי×"
+ },
+ "MH": {
+ "name": "××™×™ מרשל"
+ },
+ "NF": {
+ "name": "××™×™ נורפוק"
+ },
+ "SC": {
+ "name": "××™×™ סיישל"
+ },
+ "FO": {
+ "name": "××™×™ פ×רו"
+ },
+ "FK": {
+ "name": "××™×™ פוקלנד"
+ },
+ "PN": {
+ "name": "××™×™ פיטקרן"
+ },
+ "CK": {
+ "name": "××™×™ קוק"
+ },
+ "CC": {
+ "name": "××™×™ קוקוס (קילינג)"
+ },
+ "KY": {
+ "name": "××™×™ קיימן"
+ },
+ "SB": {
+ "name": "××™×™ שלמה"
+ },
+ "UM": {
+ "name": "××™×™× ×œ×—×•×£ ×רצות הברית"
+ },
+ "ID": {
+ "name": "×ינדונזיה"
+ },
+ "IS": {
+ "name": "×יסלנד"
+ },
+ "IR": {
+ "name": "×יר×ן"
+ },
+ "IE": {
+ "name": "×ירלנד"
+ },
+ "SV": {
+ "name": "×ל סלבדור"
+ },
+ "AL": {
+ "name": "×לבניה"
+ },
+ "DZ": {
+ "name": "×לג׳יריה"
+ },
+ "AO": {
+ "name": "×נגולה"
+ },
+ "AI": {
+ "name": "×נגילה"
+ },
+ "AD": {
+ "name": "×נדורה"
+ },
+ "AQ": {
+ "name": "×נט×רקטיקה"
+ },
+ "AG": {
+ "name": "×נטיגו××” וברבודה"
+ },
+ "EE": {
+ "name": "×סטוניה"
+ },
+ "AF": {
+ "name": "×פגניסטן"
+ },
+ "EC": {
+ "name": "×קוודור"
+ },
+ "AR": {
+ "name": "×רגנטינה"
+ },
+ "AW": {
+ "name": "×רובה"
+ },
+ "ER": {
+ "name": "×ריתרי××”"
+ },
+ "AM": {
+ "name": "×רמניה"
+ },
+ "US": {
+ "name": "×רצות הברית"
+ },
+ "ET": {
+ "name": "×תיופיה"
+ },
+ "BT": {
+ "name": "בהוטן"
+ },
+ "BW": {
+ "name": "בוטסוו×× ×”"
+ },
+ "BG": {
+ "name": "בולגריה"
+ },
+ "BO": {
+ "name": "בוליביה"
+ },
+ "BA": {
+ "name": "בוסניה והרצגובינה"
+ },
+ "BI": {
+ "name": "בורונדי"
+ },
+ "BF": {
+ "name": "בורקינה פ×סו"
+ },
+ "BH": {
+ "name": "בחריין"
+ },
+ "BY": {
+ "name": "בל×רוס"
+ },
+ "BE": {
+ "name": "בלגיה"
+ },
+ "BZ": {
+ "name": "בליז"
+ },
+ "BD": {
+ "name": "בנגלדש"
+ },
+ "BJ": {
+ "name": "בנין"
+ },
+ "BB": {
+ "name": "ברבדוס"
+ },
+ "BN": {
+ "name": "ברוניי"
+ },
+ "BR": {
+ "name": "ברזיל"
+ },
+ "BM": {
+ "name": "ברמודה"
+ },
+ "GS": {
+ "name": "ג׳ורג׳יה הדרומית ו××™×™ סנדוויץ׳ הדרומיי×"
+ },
+ "DJ": {
+ "name": "ג׳יבוטי"
+ },
+ "JM": {
+ "name": "ג׳מייקה"
+ },
+ "JE": {
+ "name": "ג׳רסי"
+ },
+ "GA": {
+ "name": "×’×בון"
+ },
+ "GE": {
+ "name": "×’×ורגיה"
+ },
+ "GH": {
+ "name": "×’×× ×”"
+ },
+ "GT": {
+ "name": "גו×טמלה"
+ },
+ "GU": {
+ "name": "גו××"
+ },
+ "GP": {
+ "name": "גוו×דלופ"
+ },
+ "GY": {
+ "name": "×’×™×× ×”"
+ },
+ "GF": {
+ "name": "×’×™×× ×” הצרפתית"
+ },
+ "GI": {
+ "name": "גיברלטר"
+ },
+ "GN": {
+ "name": "×’×™× ×™××”"
+ },
+ "GQ": {
+ "name": "×’×™× ×™××” המשוונית"
+ },
+ "GW": {
+ "name": "×’×™× ×™××”-ביס×ו"
+ },
+ "GM": {
+ "name": "גמביה"
+ },
+ "GL": {
+ "name": "גרינלנד"
+ },
+ "DE": {
+ "name": "גרמניה"
+ },
+ "GD": {
+ "name": "גרנדה"
+ },
+ "GG": {
+ "name": "גרנסי"
+ },
+ "DM": {
+ "name": "דומיניקה"
+ },
+ "DG": {
+ "name": "דייגו גרסיה"
+ },
+ "DK": {
+ "name": "דנמרק"
+ },
+ "ZA": {
+ "name": "×“×¨×•× ×פריקה"
+ },
+ "SS": {
+ "name": "×“×¨×•× ×¡×•×“×Ÿ"
+ },
+ "AC": {
+ "name": "×”××™ ×סנשן"
+ },
+ "IM": {
+ "name": "×”××™ מ×ן"
+ },
+ "HT": {
+ "name": "×”×יטי"
+ },
+ "MV": {
+ "name": "×”××™×™× ×”×ž×œ×“×™×‘×™×™×"
+ },
+ "IC": {
+ "name": "×”××™×™× ×”×§× ×¨×™×™×"
+ },
+ "BQ": {
+ "name": "×”××™×™× ×”×§×¨×™×‘×™×™× ×”×”×•×œ× ×“×™×™×"
+ },
+ "IN": {
+ "name": "הודו"
+ },
+ "VA": {
+ "name": "הוותיקן"
+ },
+ "NL": {
+ "name": "הולנד"
+ },
+ "HK": {
+ "name": "הונג קונג - מחוז מנהלי מיוחד של סין"
+ },
+ "HU": {
+ "name": "הונגריה"
+ },
+ "HN": {
+ "name": "הונדורס"
+ },
+ "GB": {
+ "name": "הממלכה המ×וחדת"
+ },
+ "DO": {
+ "name": "הרפובליקה הדומיניקנית"
+ },
+ "CF": {
+ "name": "הרפובליקה של מרכז ×פריקה"
+ },
+ "PS": {
+ "name": "×”×©×˜×—×™× ×”×¤×œ×¡×˜×™× ×™×™×"
+ },
+ "VN": {
+ "name": "וייטנ××"
+ },
+ "VU": {
+ "name": "ונו×טו"
+ },
+ "VE": {
+ "name": "ונצו×לה"
+ },
+ "ZW": {
+ "name": "זימב×בווה"
+ },
+ "ZM": {
+ "name": "זמביה"
+ },
+ "CI": {
+ "name": "חוף השנהב"
+ },
+ "TJ": {
+ "name": "טג׳יקיסטן"
+ },
+ "TV": {
+ "name": "טובלו"
+ },
+ "TG": {
+ "name": "טוגו"
+ },
+ "TO": {
+ "name": "טונגה"
+ },
+ "TK": {
+ "name": "טוקל×ו"
+ },
+ "TR": {
+ "name": "טורקיה"
+ },
+ "TM": {
+ "name": "טורקמניסטן"
+ },
+ "TW": {
+ "name": "טייוו×ן"
+ },
+ "TL": {
+ "name": "טימור לסטה"
+ },
+ "TZ": {
+ "name": "טנזניה"
+ },
+ "IO": {
+ "name": "טריטוריה בריטית ב×וקי×נוס ההודי"
+ },
+ "TF": {
+ "name": "טריטוריות דרומיות של צרפת"
+ },
+ "TT": {
+ "name": "טרינידד וטובגו"
+ },
+ "TA": {
+ "name": "טריסטן דה קונה"
+ },
+ "GR": {
+ "name": "יוון"
+ },
+ "JP": {
+ "name": "יפן"
+ },
+ "JO": {
+ "name": "ירדן"
+ },
+ "IL": {
+ "name": "ישר×ל"
+ },
+ "KW": {
+ "name": "כווית"
+ },
+ "CV": {
+ "name": "כף ורדה"
+ },
+ "LA": {
+ "name": "ל×וס"
+ },
+ "LB": {
+ "name": "לבנון"
+ },
+ "LY": {
+ "name": "לוב"
+ },
+ "LU": {
+ "name": "לוקסמבורג"
+ },
+ "LV": {
+ "name": "לטביה"
+ },
+ "LR": {
+ "name": "ליבריה"
+ },
+ "LT": {
+ "name": "ליט×"
+ },
+ "LI": {
+ "name": "ליכטנשטיין"
+ },
+ "LS": {
+ "name": "לסוטו"
+ },
+ "MR": {
+ "name": "מ×וריטניה"
+ },
+ "MU": {
+ "name": "מ×וריציוס"
+ },
+ "YT": {
+ "name": "מ×יוט"
+ },
+ "ML": {
+ "name": "מ×לי"
+ },
+ "MG": {
+ "name": "מדגסקר"
+ },
+ "MZ": {
+ "name": "מוזמביק"
+ },
+ "MD": {
+ "name": "מולדובה"
+ },
+ "MN": {
+ "name": "מונגוליה"
+ },
+ "ME": {
+ "name": "מונטנגרו"
+ },
+ "MS": {
+ "name": "מונסר×ט"
+ },
+ "MC": {
+ "name": "מונקו"
+ },
+ "MM": {
+ "name": "מי×נמ×ר (בורמה)‎"
+ },
+ "FM": {
+ "name": "מיקרונזיה"
+ },
+ "MW": {
+ "name": "מל×ווי"
+ },
+ "MY": {
+ "name": "מלזיה"
+ },
+ "MT": {
+ "name": "מלטה"
+ },
+ "EG": {
+ "name": "מצרי×"
+ },
+ "MO": {
+ "name": "מק×ו - מחוז מנהלי מיוחד של סין"
+ },
+ "MK": {
+ "name": "מקדוניה"
+ },
+ "MX": {
+ "name": "מקסיקו"
+ },
+ "MA": {
+ "name": "מרוקו"
+ },
+ "MQ": {
+ "name": "מרטיניק"
+ },
+ "NR": {
+ "name": "× ×ורו"
+ },
+ "NO": {
+ "name": "נורווגיה"
+ },
+ "NG": {
+ "name": "ניגריה"
+ },
+ "NZ": {
+ "name": "ניו זילנד"
+ },
+ "NU": {
+ "name": "ניווה"
+ },
+ "NE": {
+ "name": "ניז׳ר"
+ },
+ "NI": {
+ "name": "ניקרגו××”"
+ },
+ "NA": {
+ "name": "נמיביה"
+ },
+ "NP": {
+ "name": "נפ×ל"
+ },
+ "ST": {
+ "name": "ס×ו טומה ופרינסיפה"
+ },
+ "EA": {
+ "name": "ס×וטה ומלייה"
+ },
+ "EH": {
+ "name": "סהרה המערבית"
+ },
+ "SD": {
+ "name": "סודן"
+ },
+ "SZ": {
+ "name": "סווזילנד"
+ },
+ "SJ": {
+ "name": "סוולב×רד וי×ן מ×יין"
+ },
+ "SO": {
+ "name": "סומליה"
+ },
+ "SY": {
+ "name": "סוריה"
+ },
+ "SR": {
+ "name": "סורינ×"
+ },
+ "SL": {
+ "name": "סיירה ל×ונה"
+ },
+ "CN": {
+ "name": "סין"
+ },
+ "SG": {
+ "name": "סינגפור"
+ },
+ "SX": {
+ "name": "סינט מ×רטן"
+ },
+ "SI": {
+ "name": "סלובניה"
+ },
+ "SK": {
+ "name": "סלובקיה"
+ },
+ "WS": {
+ "name": "סמו××”"
+ },
+ "AS": {
+ "name": "סמו××” ×”×מריקנית"
+ },
+ "SM": {
+ "name": "סן מרינו"
+ },
+ "SN": {
+ "name": "סנגל"
+ },
+ "BL": {
+ "name": "סנט ברתולומי×ו"
+ },
+ "SH": {
+ "name": "סנט הלנה"
+ },
+ "VC": {
+ "name": "סנט וינסנט והגרנדיני×"
+ },
+ "LC": {
+ "name": "סנט לוסיה"
+ },
+ "MF": {
+ "name": "סנט מרטין"
+ },
+ "PM": {
+ "name": "סנט פייר ומיקלון"
+ },
+ "KN": {
+ "name": "סנט קיטס ונוויס"
+ },
+ "ES": {
+ "name": "ספרד"
+ },
+ "RS": {
+ "name": "סרביה"
+ },
+ "LK": {
+ "name": "סרי לנקה"
+ },
+ "OM": {
+ "name": "עומ×ן"
+ },
+ "IQ": {
+ "name": "עיר×ק"
+ },
+ "SA": {
+ "name": "ערב הסעודית"
+ },
+ "PW": {
+ "name": "פ×ל×ו"
+ },
+ "PL": {
+ "name": "פולין"
+ },
+ "PF": {
+ "name": "פולינזיה הצרפתית"
+ },
+ "PR": {
+ "name": "פורטו ריקו"
+ },
+ "PT": {
+ "name": "פורטוגל"
+ },
+ "FJ": {
+ "name": "פיג׳י"
+ },
+ "PH": {
+ "name": "פיליפיני×"
+ },
+ "FI": {
+ "name": "פינלנד"
+ },
+ "PA": {
+ "name": "פנמה"
+ },
+ "PG": {
+ "name": "פפו××” ×’×™× ×™××” החדשה"
+ },
+ "PK": {
+ "name": "פקיסטן"
+ },
+ "PY": {
+ "name": "פרגוו××™"
+ },
+ "PE": {
+ "name": "פרו"
+ },
+ "TD": {
+ "name": "צ׳×ד"
+ },
+ "CL": {
+ "name": "צ׳ילה"
+ },
+ "CZ": {
+ "name": "צ׳כיה"
+ },
+ "FR": {
+ "name": "צרפת"
+ },
+ "CU": {
+ "name": "קובה"
+ },
+ "CO": {
+ "name": "קולומביה"
+ },
+ "KM": {
+ "name": "קומורוס"
+ },
+ "CG": {
+ "name": "קונגו - ברז×ויל"
+ },
+ "CD": {
+ "name": "קונגו - קינש×סה"
+ },
+ "XK": {
+ "name": "קוסובו"
+ },
+ "CR": {
+ "name": "קוסטה ריקה"
+ },
+ "CW": {
+ "name": "קור×ס×ו"
+ },
+ "KR": {
+ "name": "קורי××” הדרומית"
+ },
+ "KP": {
+ "name": "קורי××” הצפונית"
+ },
+ "KZ": {
+ "name": "קזחסטן"
+ },
+ "QA": {
+ "name": "קט×ר"
+ },
+ "KG": {
+ "name": "קירגיזסטן"
+ },
+ "KI": {
+ "name": "קיריב×טי"
+ },
+ "NC": {
+ "name": "קלדוניה החדשה"
+ },
+ "KH": {
+ "name": "קמבודיה"
+ },
+ "CM": {
+ "name": "קמרון"
+ },
+ "CA": {
+ "name": "קנדה"
+ },
+ "KE": {
+ "name": "קניה"
+ },
+ "CY": {
+ "name": "קפריסין"
+ },
+ "HR": {
+ "name": "קרו×טיה"
+ },
+ "RE": {
+ "name": "ר×וניון"
+ },
+ "RW": {
+ "name": "רו×נדה"
+ },
+ "RO": {
+ "name": "רומניה"
+ },
+ "RU": {
+ "name": "רוסיה"
+ },
+ "SE": {
+ "name": "שוודיה"
+ },
+ "CH": {
+ "name": "שווייץ"
+ },
+ "TH": {
+ "name": "ת×ילנד"
+ },
+ "TN": {
+ "name": "תוניסיה"
+ },
+ "YE": {
+ "name": "תימן"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/country/hi.json b/library/intl/resources/country/hi.json
new file mode 100644
index 000000000..1e9ff1e75
--- /dev/null
+++ b/library/intl/resources/country/hi.json
@@ -0,0 +1,761 @@
+{
+ "AO": {
+ "name": "अंगोला"
+ },
+ "AQ": {
+ "name": "अंटारà¥à¤•à¤Ÿà¤¿à¤•à¤¾"
+ },
+ "AZ": {
+ "name": "अज़रबैजान"
+ },
+ "AF": {
+ "name": "अफ़गानिसà¥à¤¤à¤¾à¤¨"
+ },
+ "AS": {
+ "name": "अमेरिकी समोआ"
+ },
+ "AW": {
+ "name": "अरूबा"
+ },
+ "AR": {
+ "name": "अरà¥à¤œà¥‡à¤‚टीना"
+ },
+ "SV": {
+ "name": "अल सलà¥à¤µà¤¾à¤¡à¥‹à¤°"
+ },
+ "DZ": {
+ "name": "अलà¥à¤œà¥€à¤°à¤¿à¤¯à¤¾"
+ },
+ "AL": {
+ "name": "अलà¥à¤¬à¤¾à¤¨à¤¿à¤¯à¤¾"
+ },
+ "AC": {
+ "name": "असेंशन दà¥à¤µà¥€à¤ª"
+ },
+ "IM": {
+ "name": "आइल ऑफ़ मैन"
+ },
+ "IS": {
+ "name": "आइसलैंड"
+ },
+ "IE": {
+ "name": "आयरलैंड"
+ },
+ "AM": {
+ "name": "आरà¥à¤®à¥‡à¤¨à¤¿à¤¯à¤¾"
+ },
+ "ID": {
+ "name": "इंडोनेशिया"
+ },
+ "EC": {
+ "name": "इकà¥à¤µà¤¾à¤¡à¥‹à¤°"
+ },
+ "GQ": {
+ "name": "इकà¥à¤µà¥‡à¤Ÿà¥‹à¤°à¤¿à¤¯à¤² गिनी"
+ },
+ "IT": {
+ "name": "इटली"
+ },
+ "ET": {
+ "name": "इथियोपिया"
+ },
+ "IQ": {
+ "name": "इराक"
+ },
+ "ER": {
+ "name": "इरिटà¥à¤°à¤¿à¤¯à¤¾"
+ },
+ "IL": {
+ "name": "इसराइल"
+ },
+ "IR": {
+ "name": "ईरान"
+ },
+ "UZ": {
+ "name": "उज़à¥à¤¬à¥‡à¤•à¤¿à¤¸à¥à¤¤à¤¾à¤¨"
+ },
+ "KP": {
+ "name": "उतà¥à¤¤à¤° कोरिया"
+ },
+ "MP": {
+ "name": "उतà¥à¤¤à¤°à¥€ मारियाना दà¥à¤µà¥€à¤ªà¤¸à¤®à¥‚ह"
+ },
+ "UY": {
+ "name": "उरूगà¥à¤µà¥‡"
+ },
+ "AI": {
+ "name": "à¤à¤‚गà¥à¤µà¤¿à¤²à¤¾"
+ },
+ "AG": {
+ "name": "à¤à¤‚टिगà¥à¤† और बरबà¥à¤¡à¤¾"
+ },
+ "AD": {
+ "name": "à¤à¤‚डोरा"
+ },
+ "AX": {
+ "name": "à¤à¤²à¥ˆà¤‚ड दà¥à¤µà¥€à¤ªà¤¸à¤®à¥‚ह"
+ },
+ "EE": {
+ "name": "à¤à¤¸à¥à¤Ÿà¥‹à¤¨à¤¿à¤¯à¤¾"
+ },
+ "AT": {
+ "name": "ऑसà¥à¤Ÿà¥à¤°à¤¿à¤¯à¤¾"
+ },
+ "AU": {
+ "name": "ऑसà¥à¤Ÿà¥à¤°à¥‡à¤²à¤¿à¤¯à¤¾"
+ },
+ "OM": {
+ "name": "ओमान"
+ },
+ "KH": {
+ "name": "कंबोडिया"
+ },
+ "KZ": {
+ "name": "कज़ाखसà¥à¤¤à¤¾à¤¨"
+ },
+ "QA": {
+ "name": "क़तर"
+ },
+ "CA": {
+ "name": "कनाडा"
+ },
+ "CD": {
+ "name": "कांगो - किंशासा"
+ },
+ "CG": {
+ "name": "कांगो – बà¥à¤°à¤¾à¤œà¤¼à¤¾à¤µà¤¿à¤²"
+ },
+ "KI": {
+ "name": "किरिबाती"
+ },
+ "KG": {
+ "name": "किरà¥à¤—िज़सà¥à¤¤à¤¾à¤¨"
+ },
+ "CK": {
+ "name": "कà¥à¤• दà¥à¤µà¥€à¤ªà¤¸à¤®à¥‚ह"
+ },
+ "KW": {
+ "name": "कà¥à¤µà¥ˆà¤¤"
+ },
+ "KE": {
+ "name": "केनà¥à¤¯à¤¾"
+ },
+ "CV": {
+ "name": "केप वरà¥à¤¡"
+ },
+ "KY": {
+ "name": "केमैन दà¥à¤µà¥€à¤ªà¤¸à¤®à¥‚ह"
+ },
+ "IC": {
+ "name": "कैनेरी दà¥à¤µà¥€à¤ªà¤¸à¤®à¥‚ह"
+ },
+ "CM": {
+ "name": "कैमरून"
+ },
+ "BQ": {
+ "name": "कैरिबियन नीदरलैंड"
+ },
+ "CC": {
+ "name": "कोकोस (कीलिंग) दà¥à¤µà¥€à¤ªà¤¸à¤®à¥‚ह"
+ },
+ "CI": {
+ "name": "कोट डी आइवर"
+ },
+ "KM": {
+ "name": "कोमोरोस"
+ },
+ "CO": {
+ "name": "कोलंबिया"
+ },
+ "XK": {
+ "name": "कोसोवो"
+ },
+ "CR": {
+ "name": "कोसà¥à¤Ÿà¤¾à¤°à¤¿à¤•à¤¾"
+ },
+ "CU": {
+ "name": "कà¥à¤¯à¥‚बा"
+ },
+ "CW": {
+ "name": "कà¥à¤¯à¥‚रासाओ"
+ },
+ "CX": {
+ "name": "कà¥à¤°à¤¿à¤¸à¤®à¤¸ दà¥à¤µà¥€à¤ª"
+ },
+ "HR": {
+ "name": "कà¥à¤°à¥‹à¤à¤¶à¤¿à¤¯à¤¾"
+ },
+ "GY": {
+ "name": "गयाना"
+ },
+ "GG": {
+ "name": "गरà¥à¤¨à¤¸à¥€"
+ },
+ "GM": {
+ "name": "गामà¥à¤¬à¤¿à¤¯à¤¾"
+ },
+ "GN": {
+ "name": "गिनी"
+ },
+ "GW": {
+ "name": "गिनी-बिसाउ"
+ },
+ "GU": {
+ "name": "गà¥à¤†à¤®"
+ },
+ "GA": {
+ "name": "गैबॉन"
+ },
+ "GL": {
+ "name": "गà¥à¤°à¥€à¤¨à¤²à¥ˆà¤‚ड"
+ },
+ "GD": {
+ "name": "गà¥à¤°à¥‡à¤¨à¤¾à¤¡à¤¾"
+ },
+ "GT": {
+ "name": "गà¥à¤µà¤¾à¤Ÿà¥‡à¤®à¤¾à¤²à¤¾"
+ },
+ "GP": {
+ "name": "गà¥à¤µà¤¾à¤¡à¥‡à¤²à¥‚प"
+ },
+ "GH": {
+ "name": "घाना"
+ },
+ "TD": {
+ "name": "चाड"
+ },
+ "CL": {
+ "name": "चिली"
+ },
+ "CN": {
+ "name": "चीन"
+ },
+ "CZ": {
+ "name": "चेक गणराजà¥à¤¯"
+ },
+ "JM": {
+ "name": "जमैका"
+ },
+ "DE": {
+ "name": "जरà¥à¤®à¤¨à¥€"
+ },
+ "JE": {
+ "name": "जरà¥à¤¸à¥€"
+ },
+ "JP": {
+ "name": "जापान"
+ },
+ "ZM": {
+ "name": "ज़ामà¥à¤¬à¤¿à¤¯à¤¾"
+ },
+ "DJ": {
+ "name": "जिबूती"
+ },
+ "GI": {
+ "name": "जिबà¥à¤°à¤¾à¤²à¥à¤Ÿà¤°"
+ },
+ "ZW": {
+ "name": "ज़िमà¥à¤¬à¤¾à¤¬à¥à¤µà¥‡"
+ },
+ "GE": {
+ "name": "जॉरà¥à¤œà¤¿à¤¯à¤¾"
+ },
+ "JO": {
+ "name": "जॉरà¥à¤¡à¤¨"
+ },
+ "TO": {
+ "name": "टोंगा"
+ },
+ "TG": {
+ "name": "टोगो"
+ },
+ "TN": {
+ "name": "टà¥à¤¯à¥‚नीशिया"
+ },
+ "DG": {
+ "name": "डिà¤à¤—ो गारà¥à¤¸à¤¿à¤¯à¤¾"
+ },
+ "DK": {
+ "name": "डेनमारà¥à¤•"
+ },
+ "DO": {
+ "name": "डोमिनिकन गणराजà¥à¤¯"
+ },
+ "DM": {
+ "name": "डोमिनिका"
+ },
+ "TZ": {
+ "name": "तंज़ानिया"
+ },
+ "TW": {
+ "name": "ताइवान"
+ },
+ "TJ": {
+ "name": "ताजिकिसà¥à¤¤à¤¾à¤¨"
+ },
+ "TL": {
+ "name": "तिमोर-लेसà¥à¤¤"
+ },
+ "TC": {
+ "name": "तà¥à¤°à¥à¤• और कैकोज़ दà¥à¤µà¥€à¤ªà¤¸à¤®à¥‚ह"
+ },
+ "TM": {
+ "name": "तà¥à¤°à¥à¤•à¤®à¥‡à¤¨à¤¿à¤¸à¥à¤¤à¤¾à¤¨"
+ },
+ "TR": {
+ "name": "तà¥à¤°à¥à¤•à¥€"
+ },
+ "TV": {
+ "name": "तà¥à¤µà¤¾à¤²à¥‚"
+ },
+ "TK": {
+ "name": "तोकेलाउ"
+ },
+ "TT": {
+ "name": "तà¥à¤°à¤¿à¤¨à¤¿à¤¦à¤¾à¤¦ और टोबैगो"
+ },
+ "TA": {
+ "name": "तà¥à¤°à¤¿à¤¸à¥à¤Ÿà¤¾à¤¨ डा कà¥à¤¨à¤¾"
+ },
+ "TH": {
+ "name": "थाईलैंड"
+ },
+ "ZA": {
+ "name": "दकà¥à¤·à¤¿à¤£ अफ़à¥à¤°à¥€à¤•à¤¾"
+ },
+ "KR": {
+ "name": "दकà¥à¤·à¤¿à¤£ कोरिया"
+ },
+ "GS": {
+ "name": "दकà¥à¤·à¤¿à¤£ जॉरà¥à¤œà¤¿à¤¯à¤¾ और दकà¥à¤·à¤¿à¤£ सैंडविच दà¥à¤µà¥€à¤ªà¤¸à¤®à¥‚ह"
+ },
+ "SS": {
+ "name": "दकà¥à¤·à¤¿à¤£ सूडान"
+ },
+ "NE": {
+ "name": "नाइजर"
+ },
+ "NG": {
+ "name": "नाइजीरिया"
+ },
+ "NR": {
+ "name": "नाउरà¥"
+ },
+ "NA": {
+ "name": "नामीबिया"
+ },
+ "NI": {
+ "name": "निकारागà¥à¤†"
+ },
+ "NL": {
+ "name": "नीदरलैंड"
+ },
+ "NU": {
+ "name": "नीयू"
+ },
+ "NP": {
+ "name": "नेपाल"
+ },
+ "NF": {
+ "name": "नॉरफ़ॉक दà¥à¤µà¥€à¤ª"
+ },
+ "NO": {
+ "name": "नॉरà¥à¤µà¥‡"
+ },
+ "NC": {
+ "name": "नà¥à¤¯à¥‚ कैलेडोनिया"
+ },
+ "NZ": {
+ "name": "नà¥à¤¯à¥‚ज़ीलैंड"
+ },
+ "PA": {
+ "name": "पनामा"
+ },
+ "PW": {
+ "name": "पलाऊ"
+ },
+ "EH": {
+ "name": "पशà¥à¤šà¤¿à¤®à¥€ सहारा"
+ },
+ "PK": {
+ "name": "पाकिसà¥à¤¤à¤¾à¤¨"
+ },
+ "PG": {
+ "name": "पापà¥à¤† नà¥à¤¯à¥‚ गिनी"
+ },
+ "PN": {
+ "name": "पिटकैरà¥à¤¨ दà¥à¤µà¥€à¤ªà¤¸à¤®à¥‚ह"
+ },
+ "PT": {
+ "name": "पà¥à¤°à¥à¤¤à¤—ाल"
+ },
+ "PY": {
+ "name": "पेरागà¥à¤µà¥‡"
+ },
+ "PE": {
+ "name": "पेरू"
+ },
+ "PR": {
+ "name": "पोरà¥à¤Ÿà¥‹ रिको"
+ },
+ "PL": {
+ "name": "पोलैंड"
+ },
+ "FJ": {
+ "name": "फ़िजी"
+ },
+ "FI": {
+ "name": "फ़िनलैंड"
+ },
+ "PH": {
+ "name": "फ़िलिपींस"
+ },
+ "PS": {
+ "name": "फ़िलिसà¥à¤¤à¥€à¤¨à¥€ कà¥à¤·à¥‡à¤¤à¥à¤°"
+ },
+ "FO": {
+ "name": "फ़ेरो दà¥à¤µà¥€à¤ªà¤¸à¤®à¥‚ह"
+ },
+ "FK": {
+ "name": "फ़ॉकलैंड दà¥à¤µà¥€à¤ªà¤¸à¤®à¥‚ह"
+ },
+ "FR": {
+ "name": "फ़à¥à¤°à¤¾à¤‚स"
+ },
+ "TF": {
+ "name": "फ़à¥à¤°à¤¾à¤‚सीसी दकà¥à¤·à¤¿à¤£à¥€ कà¥à¤·à¥‡à¤¤à¥à¤°"
+ },
+ "GF": {
+ "name": "फ़à¥à¤°à¥‡à¤‚च गयाना"
+ },
+ "PF": {
+ "name": "फ़à¥à¤°à¥‡à¤‚च पोलिनेशिया"
+ },
+ "BM": {
+ "name": "बरमूडा"
+ },
+ "BH": {
+ "name": "बहरीन"
+ },
+ "BS": {
+ "name": "बहामास"
+ },
+ "BD": {
+ "name": "बांगà¥à¤²à¤¾à¤¦à¥‡à¤¶"
+ },
+ "BB": {
+ "name": "बारबाडोस"
+ },
+ "BI": {
+ "name": "बà¥à¤°à¥à¤‚डी"
+ },
+ "BF": {
+ "name": "बà¥à¤°à¥à¤•à¤¿à¤¨à¤¾ फ़ासो"
+ },
+ "BG": {
+ "name": "बà¥à¤²à¥à¤—ारिया"
+ },
+ "BJ": {
+ "name": "बेनिन"
+ },
+ "BY": {
+ "name": "बेलारूस"
+ },
+ "BZ": {
+ "name": "बेलीज़"
+ },
+ "BE": {
+ "name": "बेलà¥à¤œà¤¿à¤¯à¤®"
+ },
+ "BW": {
+ "name": "बोतà¥à¤¸à¥à¤µà¤¾à¤¨à¤¾"
+ },
+ "BO": {
+ "name": "बोलीविया"
+ },
+ "BA": {
+ "name": "बोसà¥à¤¨à¤¿à¤¯à¤¾ और हरà¥à¤œà¤¼à¥‡à¤—ोविना"
+ },
+ "BR": {
+ "name": "बà¥à¤°à¤¾à¤œà¤¼à¥€à¤²"
+ },
+ "VG": {
+ "name": "बà¥à¤°à¤¿à¤Ÿà¤¿à¤¶ वरà¥à¤œà¤¿à¤¨ दà¥à¤µà¥€à¤ªà¤¸à¤®à¥‚ह"
+ },
+ "IO": {
+ "name": "बà¥à¤°à¤¿à¤Ÿà¤¿à¤¶ हिंद महासागरीय कà¥à¤·à¥‡à¤¤à¥à¤°"
+ },
+ "BN": {
+ "name": "बà¥à¤°à¥‚नेई"
+ },
+ "IN": {
+ "name": "भारत"
+ },
+ "BT": {
+ "name": "भूटान"
+ },
+ "MN": {
+ "name": "मंगोलिया"
+ },
+ "MO": {
+ "name": "मकाऊ (विशेष पà¥à¤°à¤¶à¤¾à¤¸à¤¨à¤¿à¤• कà¥à¤·à¥‡à¤¤à¥à¤° चीन)"
+ },
+ "CF": {
+ "name": "मधà¥à¤¯ अफ़à¥à¤°à¥€à¤•à¥€ गणराजà¥à¤¯"
+ },
+ "MW": {
+ "name": "मलावी"
+ },
+ "MY": {
+ "name": "मलेशिया"
+ },
+ "FM": {
+ "name": "माइकà¥à¤°à¥‹à¤¨à¥‡à¤¶à¤¿à¤¯à¤¾"
+ },
+ "YT": {
+ "name": "मायोते"
+ },
+ "MQ": {
+ "name": "मारà¥à¤Ÿà¥€à¤¨à¤¿à¤•"
+ },
+ "MH": {
+ "name": "मारà¥à¤¶à¤² दà¥à¤µà¥€à¤ªà¤¸à¤®à¥‚ह"
+ },
+ "MV": {
+ "name": "मालदीव"
+ },
+ "ML": {
+ "name": "माली"
+ },
+ "MT": {
+ "name": "मालà¥à¤Ÿà¤¾"
+ },
+ "EG": {
+ "name": "मिसà¥à¤°"
+ },
+ "MG": {
+ "name": "मेडागासà¥à¤•à¤°"
+ },
+ "MX": {
+ "name": "मैकà¥à¤¸à¤¿à¤•à¥‹"
+ },
+ "MK": {
+ "name": "मैसिडोनिया"
+ },
+ "MR": {
+ "name": "मॉरिटानिया"
+ },
+ "MU": {
+ "name": "मॉरिशस"
+ },
+ "MD": {
+ "name": "मॉलà¥à¤¡à¥‹à¤µà¤¾"
+ },
+ "MS": {
+ "name": "मोंटसेरात"
+ },
+ "ME": {
+ "name": "मोंटेनेगà¥à¤°à¥‹"
+ },
+ "MZ": {
+ "name": "मोज़ांबिक"
+ },
+ "MC": {
+ "name": "मोनाको"
+ },
+ "MA": {
+ "name": "मोरकà¥à¤•à¥‹"
+ },
+ "MM": {
+ "name": "मà¥à¤¯à¤¾à¤‚मार (बरà¥à¤®à¤¾)"
+ },
+ "YE": {
+ "name": "यमन"
+ },
+ "UG": {
+ "name": "यà¥à¤—ांडा"
+ },
+ "UM": {
+ "name": "यू.à¤à¤¸. आउटलाइंग दà¥à¤µà¥€à¤ªà¤¸à¤®à¥‚ह"
+ },
+ "VI": {
+ "name": "यू.à¤à¤¸. वरà¥à¤œà¤¿à¤¨ दà¥à¤µà¥€à¤ªà¤¸à¤®à¥‚ह"
+ },
+ "UA": {
+ "name": "यूकà¥à¤°à¥‡à¤¨"
+ },
+ "GB": {
+ "name": "यूनाइटेड किंगडम"
+ },
+ "GR": {
+ "name": "यूनान"
+ },
+ "RW": {
+ "name": "रवांडा"
+ },
+ "RE": {
+ "name": "रियूनियन"
+ },
+ "RU": {
+ "name": "रूस"
+ },
+ "RO": {
+ "name": "रोमानिया"
+ },
+ "LU": {
+ "name": "लगà¥à¤œà¤¼à¤®à¤¬à¤°à¥à¤—"
+ },
+ "LR": {
+ "name": "लाइबेरिया"
+ },
+ "LA": {
+ "name": "लाओस"
+ },
+ "LV": {
+ "name": "लातविया"
+ },
+ "LI": {
+ "name": "लिचेंसà¥à¤Ÿà¥€à¤¨"
+ },
+ "LT": {
+ "name": "लिथà¥à¤†à¤¨à¤¿à¤¯à¤¾"
+ },
+ "LY": {
+ "name": "लीबिया"
+ },
+ "LB": {
+ "name": "लेबनान"
+ },
+ "LS": {
+ "name": "लेसोथो"
+ },
+ "VU": {
+ "name": "वनà¥à¤†à¤¤à¥‚"
+ },
+ "WF": {
+ "name": "वालिस और फ़à¥à¤¯à¥‚चूना"
+ },
+ "VN": {
+ "name": "वियतनाम"
+ },
+ "VA": {
+ "name": "वेटिकन सिटी"
+ },
+ "VE": {
+ "name": "वेनेज़à¥à¤à¤²à¤¾"
+ },
+ "LK": {
+ "name": "शà¥à¤°à¥€à¤²à¤‚का"
+ },
+ "AE": {
+ "name": "संयà¥à¤•à¥à¤¤ अरब अमीरात"
+ },
+ "US": {
+ "name": "संयà¥à¤•à¥à¤¤ राजà¥à¤¯"
+ },
+ "SA": {
+ "name": "सऊदी अरब"
+ },
+ "WS": {
+ "name": "समोआ"
+ },
+ "RS": {
+ "name": "सरà¥à¤¬à¤¿à¤¯à¤¾"
+ },
+ "CY": {
+ "name": "साइपà¥à¤°à¤¸"
+ },
+ "ST": {
+ "name": "साओ टोम और पà¥à¤°à¤¿à¤‚सिपे"
+ },
+ "SG": {
+ "name": "सिंगापà¥à¤°"
+ },
+ "SX": {
+ "name": "सिंट मारà¥à¤Ÿà¤¿à¤¨"
+ },
+ "SL": {
+ "name": "सिà¤à¤°à¤¾ लियोन"
+ },
+ "SY": {
+ "name": "सीरिया"
+ },
+ "SD": {
+ "name": "सूडान"
+ },
+ "SR": {
+ "name": "सूरीनाम"
+ },
+ "KN": {
+ "name": "सेंट किटà¥à¤¸ और नेविस"
+ },
+ "PM": {
+ "name": "सेंट पिà¤à¤°à¥‡ और मिकà¥à¤µà¥‡à¤²à¤¾à¤¨"
+ },
+ "BL": {
+ "name": "सेंट बारà¥à¤¥à¥‡à¤²à¥‡à¤®à¥€"
+ },
+ "MF": {
+ "name": "सेंट मारà¥à¤Ÿà¤¿à¤¨"
+ },
+ "LC": {
+ "name": "सेंट लूसिया"
+ },
+ "VC": {
+ "name": "सेंट विंसेंट और गà¥à¤°à¥‡à¤¨à¤¾à¤¡à¤¾à¤‡à¤‚स"
+ },
+ "SH": {
+ "name": "सेंट हेलेना"
+ },
+ "EA": {
+ "name": "सेउटा और मेलिला"
+ },
+ "SN": {
+ "name": "सेनेगल"
+ },
+ "SC": {
+ "name": "सेशेलà¥à¤¸"
+ },
+ "SM": {
+ "name": "सैन मेरीनो"
+ },
+ "SO": {
+ "name": "सोमालिया"
+ },
+ "SB": {
+ "name": "सोलोमन दà¥à¤µà¥€à¤ªà¤¸à¤®à¥‚ह"
+ },
+ "ES": {
+ "name": "सà¥à¤ªà¥‡à¤¨"
+ },
+ "SK": {
+ "name": "सà¥à¤²à¥‹à¤µà¤¾à¤•à¤¿à¤¯à¤¾"
+ },
+ "SI": {
+ "name": "सà¥à¤²à¥‹à¤µà¥‡à¤¨à¤¿à¤¯à¤¾"
+ },
+ "SZ": {
+ "name": "सà¥à¤µà¤¾à¤œà¤¼à¥€à¤²à¥ˆà¤‚ड"
+ },
+ "SJ": {
+ "name": "सà¥à¤µà¤¾à¤²à¤¬à¤¾à¤°à¥à¤¡ और जान मायेन"
+ },
+ "CH": {
+ "name": "सà¥à¤µà¤¿à¤Ÿà¥à¤œà¤¼à¤°à¤²à¥ˆà¤‚ड"
+ },
+ "SE": {
+ "name": "सà¥à¤µà¥€à¤¡à¤¨"
+ },
+ "HU": {
+ "name": "हंगरी"
+ },
+ "HK": {
+ "name": "हाà¤à¤— काà¤à¤— (चीन विशेष पà¥à¤°à¤¶à¤¾à¤¸à¤¨à¤¿à¤• कà¥à¤·à¥‡à¤¤à¥à¤°)"
+ },
+ "HT": {
+ "name": "हैती"
+ },
+ "HN": {
+ "name": "होंडूरास"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/country/hr.json b/library/intl/resources/country/hr.json
new file mode 100644
index 000000000..ce93f3fcf
--- /dev/null
+++ b/library/intl/resources/country/hr.json
@@ -0,0 +1,761 @@
+{
+ "AF": {
+ "name": "Afganistan"
+ },
+ "AL": {
+ "name": "Albanija"
+ },
+ "DZ": {
+ "name": "Alžir"
+ },
+ "AS": {
+ "name": "AmeriÄka Samoa"
+ },
+ "VI": {
+ "name": "AmeriÄki DjeviÄanski Otoci"
+ },
+ "AD": {
+ "name": "Andora"
+ },
+ "AO": {
+ "name": "Angola"
+ },
+ "AI": {
+ "name": "Angvila"
+ },
+ "AQ": {
+ "name": "Antarktika"
+ },
+ "AG": {
+ "name": "Antigua i Barbuda"
+ },
+ "AR": {
+ "name": "Argentina"
+ },
+ "AM": {
+ "name": "Armenija"
+ },
+ "AW": {
+ "name": "Aruba"
+ },
+ "AU": {
+ "name": "Australija"
+ },
+ "AT": {
+ "name": "Austrija"
+ },
+ "AZ": {
+ "name": "Azerbajdžan"
+ },
+ "BS": {
+ "name": "Bahami"
+ },
+ "BH": {
+ "name": "Bahrein"
+ },
+ "BD": {
+ "name": "Bangladeš"
+ },
+ "BB": {
+ "name": "Barbados"
+ },
+ "BE": {
+ "name": "Belgija"
+ },
+ "BZ": {
+ "name": "Belize"
+ },
+ "BJ": {
+ "name": "Benin"
+ },
+ "BM": {
+ "name": "Bermuda"
+ },
+ "BY": {
+ "name": "Bjelorusija"
+ },
+ "BW": {
+ "name": "Bocvana"
+ },
+ "BO": {
+ "name": "Bolivija"
+ },
+ "BA": {
+ "name": "Bosna i Hercegovina"
+ },
+ "CX": {
+ "name": "Božićni Otok"
+ },
+ "BR": {
+ "name": "Brazil"
+ },
+ "VG": {
+ "name": "Britanski DjeviÄanski Otoci"
+ },
+ "IO": {
+ "name": "Britanski Indijskooceanski Teritorij"
+ },
+ "BN": {
+ "name": "Brunej"
+ },
+ "BG": {
+ "name": "Bugarska"
+ },
+ "BF": {
+ "name": "Burkina Faso"
+ },
+ "BI": {
+ "name": "Burundi"
+ },
+ "BT": {
+ "name": "Butan"
+ },
+ "EA": {
+ "name": "Ceuta i Melilla"
+ },
+ "CY": {
+ "name": "Cipar"
+ },
+ "CK": {
+ "name": "Cookovi Otoci"
+ },
+ "ME": {
+ "name": "Crna Gora"
+ },
+ "CW": {
+ "name": "Curaçao"
+ },
+ "TD": {
+ "name": "ÄŒad"
+ },
+ "CZ": {
+ "name": "Češka Republika"
+ },
+ "CL": {
+ "name": "ÄŒile"
+ },
+ "DK": {
+ "name": "Danska"
+ },
+ "DG": {
+ "name": "Diego Garcia"
+ },
+ "DM": {
+ "name": "Dominika"
+ },
+ "DO": {
+ "name": "Dominikanska Republika"
+ },
+ "DJ": {
+ "name": "Džibuti"
+ },
+ "EG": {
+ "name": "Egipat"
+ },
+ "EC": {
+ "name": "Ekvador"
+ },
+ "GQ": {
+ "name": "Ekvatorska Gvineja"
+ },
+ "ER": {
+ "name": "Eritreja"
+ },
+ "EE": {
+ "name": "Estonija"
+ },
+ "ET": {
+ "name": "Etiopija"
+ },
+ "FK": {
+ "name": "Falklandski Otoci"
+ },
+ "FO": {
+ "name": "Farski Otoci"
+ },
+ "FJ": {
+ "name": "Fidži"
+ },
+ "PH": {
+ "name": "Filipini"
+ },
+ "FI": {
+ "name": "Finska"
+ },
+ "FR": {
+ "name": "Francuska"
+ },
+ "GF": {
+ "name": "Francuska Gvajana"
+ },
+ "PF": {
+ "name": "Francuska Polinezija"
+ },
+ "TF": {
+ "name": "Francuske Južne i AntarktiÄke Zemlje"
+ },
+ "GA": {
+ "name": "Gabon"
+ },
+ "GM": {
+ "name": "Gambija"
+ },
+ "GH": {
+ "name": "Gana"
+ },
+ "GI": {
+ "name": "Gibraltar"
+ },
+ "GR": {
+ "name": "GrÄka"
+ },
+ "GD": {
+ "name": "Grenada"
+ },
+ "GL": {
+ "name": "Grenland"
+ },
+ "GE": {
+ "name": "Gruzija"
+ },
+ "GP": {
+ "name": "Guadalupa"
+ },
+ "GU": {
+ "name": "Guam"
+ },
+ "GG": {
+ "name": "Guernsey"
+ },
+ "GY": {
+ "name": "Gvajana"
+ },
+ "GT": {
+ "name": "Gvatemala"
+ },
+ "GN": {
+ "name": "Gvineja"
+ },
+ "GW": {
+ "name": "Gvineja Bisau"
+ },
+ "HT": {
+ "name": "Haiti"
+ },
+ "HN": {
+ "name": "Honduras"
+ },
+ "HK": {
+ "name": "Hong Kong PUP Kina"
+ },
+ "HR": {
+ "name": "Hrvatska"
+ },
+ "IN": {
+ "name": "Indija"
+ },
+ "ID": {
+ "name": "Indonezija"
+ },
+ "IQ": {
+ "name": "Irak"
+ },
+ "IR": {
+ "name": "Iran"
+ },
+ "IE": {
+ "name": "Irska"
+ },
+ "IS": {
+ "name": "Island"
+ },
+ "TL": {
+ "name": "IstoÄni Timor"
+ },
+ "IT": {
+ "name": "Italija"
+ },
+ "IL": {
+ "name": "Izrael"
+ },
+ "JM": {
+ "name": "Jamajka"
+ },
+ "JP": {
+ "name": "Japan"
+ },
+ "YE": {
+ "name": "Jemen"
+ },
+ "JE": {
+ "name": "Jersey"
+ },
+ "JO": {
+ "name": "Jordan"
+ },
+ "GS": {
+ "name": "Južna Georgija i Južni SendviÄki Otoci"
+ },
+ "KR": {
+ "name": "Južna Koreja"
+ },
+ "SS": {
+ "name": "Južni Sudan"
+ },
+ "ZA": {
+ "name": "JužnoafriÄka Republika"
+ },
+ "KY": {
+ "name": "Kajmanski Otoci"
+ },
+ "KH": {
+ "name": "Kambodža"
+ },
+ "CM": {
+ "name": "Kamerun"
+ },
+ "CA": {
+ "name": "Kanada"
+ },
+ "IC": {
+ "name": "Kanarski Otoci"
+ },
+ "BQ": {
+ "name": "Karipski otoci Nizozemske"
+ },
+ "QA": {
+ "name": "Katar"
+ },
+ "KZ": {
+ "name": "Kazahstan"
+ },
+ "KE": {
+ "name": "Kenija"
+ },
+ "CN": {
+ "name": "Kina"
+ },
+ "KG": {
+ "name": "Kirgistan"
+ },
+ "KI": {
+ "name": "Kiribati"
+ },
+ "CC": {
+ "name": "Kokosovi (Keeling) Otoci"
+ },
+ "CO": {
+ "name": "Kolumbija"
+ },
+ "KM": {
+ "name": "Komori"
+ },
+ "CG": {
+ "name": "Kongo - Brazzaville"
+ },
+ "CD": {
+ "name": "Kongo - Kinshasa"
+ },
+ "XK": {
+ "name": "Kosovo"
+ },
+ "CR": {
+ "name": "Kostarika"
+ },
+ "CU": {
+ "name": "Kuba"
+ },
+ "KW": {
+ "name": "Kuvajt"
+ },
+ "LA": {
+ "name": "Laos"
+ },
+ "LV": {
+ "name": "Latvija"
+ },
+ "LS": {
+ "name": "Lesoto"
+ },
+ "LB": {
+ "name": "Libanon"
+ },
+ "LR": {
+ "name": "Liberija"
+ },
+ "LY": {
+ "name": "Libija"
+ },
+ "LI": {
+ "name": "Lihtenštajn"
+ },
+ "LT": {
+ "name": "Litva"
+ },
+ "LU": {
+ "name": "Luksemburg"
+ },
+ "MG": {
+ "name": "Madagaskar"
+ },
+ "HU": {
+ "name": "Mađarska"
+ },
+ "MO": {
+ "name": "Makao PUP Kina"
+ },
+ "MK": {
+ "name": "Makedonija"
+ },
+ "MW": {
+ "name": "Malavi"
+ },
+ "MV": {
+ "name": "Maldivi"
+ },
+ "MY": {
+ "name": "Malezija"
+ },
+ "ML": {
+ "name": "Mali"
+ },
+ "UM": {
+ "name": "Mali udaljeni otoci SAD-a"
+ },
+ "MT": {
+ "name": "Malta"
+ },
+ "MA": {
+ "name": "Maroko"
+ },
+ "MH": {
+ "name": "Maršalovi Otoci"
+ },
+ "MQ": {
+ "name": "Martinique"
+ },
+ "MU": {
+ "name": "Mauricijus"
+ },
+ "MR": {
+ "name": "Mauritanija"
+ },
+ "YT": {
+ "name": "Mayotte"
+ },
+ "MX": {
+ "name": "Meksiko"
+ },
+ "MM": {
+ "name": "Mijanmar (Burma)"
+ },
+ "FM": {
+ "name": "Mikronezija"
+ },
+ "MD": {
+ "name": "Moldavija"
+ },
+ "MC": {
+ "name": "Monako"
+ },
+ "MN": {
+ "name": "Mongolija"
+ },
+ "MS": {
+ "name": "Montserrat"
+ },
+ "MZ": {
+ "name": "Mozambik"
+ },
+ "NA": {
+ "name": "Namibija"
+ },
+ "NR": {
+ "name": "Nauru"
+ },
+ "NP": {
+ "name": "Nepal"
+ },
+ "NE": {
+ "name": "Niger"
+ },
+ "NG": {
+ "name": "Nigerija"
+ },
+ "NI": {
+ "name": "Nikaragva"
+ },
+ "NU": {
+ "name": "Niue"
+ },
+ "NL": {
+ "name": "Nizozemska"
+ },
+ "NO": {
+ "name": "Norveška"
+ },
+ "NC": {
+ "name": "Nova Kaledonija"
+ },
+ "NZ": {
+ "name": "Novi Zeland"
+ },
+ "DE": {
+ "name": "NjemaÄka"
+ },
+ "CI": {
+ "name": "Obala Bjelokosti"
+ },
+ "OM": {
+ "name": "Oman"
+ },
+ "AX": {
+ "name": "Otoci Aland"
+ },
+ "PN": {
+ "name": "Otoci Pitcairn"
+ },
+ "TC": {
+ "name": "Otoci Turks i Caicos"
+ },
+ "AC": {
+ "name": "Otok Ascension"
+ },
+ "IM": {
+ "name": "Otok Man"
+ },
+ "NF": {
+ "name": "Otok Norfolk"
+ },
+ "PK": {
+ "name": "Pakistan"
+ },
+ "PW": {
+ "name": "Palau"
+ },
+ "PS": {
+ "name": "Palestinsko PodruÄje"
+ },
+ "PA": {
+ "name": "Panama"
+ },
+ "PG": {
+ "name": "Papua Nova Gvineja"
+ },
+ "PY": {
+ "name": "Paragvaj"
+ },
+ "PE": {
+ "name": "Peru"
+ },
+ "PL": {
+ "name": "Poljska"
+ },
+ "PR": {
+ "name": "Portoriko"
+ },
+ "PT": {
+ "name": "Portugal"
+ },
+ "RE": {
+ "name": "Reunion"
+ },
+ "RW": {
+ "name": "Ruanda"
+ },
+ "RO": {
+ "name": "Rumunjska"
+ },
+ "RU": {
+ "name": "Rusija"
+ },
+ "SB": {
+ "name": "Salomonski Otoci"
+ },
+ "SV": {
+ "name": "Salvador"
+ },
+ "WS": {
+ "name": "Samoa"
+ },
+ "SM": {
+ "name": "San Marino"
+ },
+ "SA": {
+ "name": "Saudijska Arabija"
+ },
+ "SC": {
+ "name": "Sejšeli"
+ },
+ "SN": {
+ "name": "Senegal"
+ },
+ "SL": {
+ "name": "Sijera Leone"
+ },
+ "SG": {
+ "name": "Singapur"
+ },
+ "SX": {
+ "name": "Sint Maarten"
+ },
+ "SY": {
+ "name": "Sirija"
+ },
+ "US": {
+ "name": "Sjedinjene AmeriÄke Države"
+ },
+ "KP": {
+ "name": "Sjeverna Koreja"
+ },
+ "MP": {
+ "name": "Sjeverni Marijanski Otoci"
+ },
+ "SK": {
+ "name": "SlovaÄka"
+ },
+ "SI": {
+ "name": "Slovenija"
+ },
+ "SO": {
+ "name": "Somalija"
+ },
+ "RS": {
+ "name": "Srbija"
+ },
+ "CF": {
+ "name": "SrednjoafriÄka Republika"
+ },
+ "SD": {
+ "name": "Sudan"
+ },
+ "SR": {
+ "name": "Surinam"
+ },
+ "SJ": {
+ "name": "Svalbard i Jan Mayen"
+ },
+ "SZ": {
+ "name": "Svazi"
+ },
+ "SH": {
+ "name": "Sveta Helena"
+ },
+ "LC": {
+ "name": "Sveta Lucija"
+ },
+ "VA": {
+ "name": "Sveta Stolica"
+ },
+ "BL": {
+ "name": "Sveti Bartolomej"
+ },
+ "KN": {
+ "name": "Sveti Kristofor i Nevis"
+ },
+ "MF": {
+ "name": "Sveti Martin"
+ },
+ "PM": {
+ "name": "Sveti Petar i Mikelon"
+ },
+ "ST": {
+ "name": "Sveti Toma i Princip"
+ },
+ "VC": {
+ "name": "Sveti Vincent i Grenadini"
+ },
+ "ES": {
+ "name": "Å panjolska"
+ },
+ "LK": {
+ "name": "Å ri Lanka"
+ },
+ "SE": {
+ "name": "Å vedska"
+ },
+ "CH": {
+ "name": "Å vicarska"
+ },
+ "TJ": {
+ "name": "Tadžikistan"
+ },
+ "TH": {
+ "name": "Tajland"
+ },
+ "TW": {
+ "name": "Tajvan"
+ },
+ "TZ": {
+ "name": "Tanzanija"
+ },
+ "TG": {
+ "name": "Togo"
+ },
+ "TK": {
+ "name": "Tokelau"
+ },
+ "TO": {
+ "name": "Tonga"
+ },
+ "TT": {
+ "name": "Trinidad i Tobago"
+ },
+ "TA": {
+ "name": "Tristan da Cunha"
+ },
+ "TN": {
+ "name": "Tunis"
+ },
+ "TM": {
+ "name": "Turkmenistan"
+ },
+ "TR": {
+ "name": "Turska"
+ },
+ "TV": {
+ "name": "Tuvalu"
+ },
+ "UG": {
+ "name": "Uganda"
+ },
+ "AE": {
+ "name": "Ujedinjeni Arapski Emirati"
+ },
+ "UA": {
+ "name": "Ukrajina"
+ },
+ "UY": {
+ "name": "Urugvaj"
+ },
+ "UZ": {
+ "name": "Uzbekistan"
+ },
+ "VU": {
+ "name": "Vanuatu"
+ },
+ "GB": {
+ "name": "Velika Britanija"
+ },
+ "VE": {
+ "name": "Venezuela"
+ },
+ "VN": {
+ "name": "Vijetnam"
+ },
+ "WF": {
+ "name": "Wallis i Futuna"
+ },
+ "ZM": {
+ "name": "Zambija"
+ },
+ "EH": {
+ "name": "Zapadna Sahara"
+ },
+ "CV": {
+ "name": "Zelenortska Republika"
+ },
+ "ZW": {
+ "name": "Zimbabve"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/country/hsb.json b/library/intl/resources/country/hsb.json
new file mode 100644
index 000000000..75614ad74
--- /dev/null
+++ b/library/intl/resources/country/hsb.json
@@ -0,0 +1,761 @@
+{
+ "AF": {
+ "name": "Afghanistan"
+ },
+ "AX": {
+ "name": "Ã…land"
+ },
+ "AL": {
+ "name": "Albanska"
+ },
+ "DZ": {
+ "name": "Algeriska"
+ },
+ "UM": {
+ "name": "Ameriska Oceaniska"
+ },
+ "AS": {
+ "name": "Ameriska Samoa"
+ },
+ "VI": {
+ "name": "Ameriske knježniske kupy"
+ },
+ "AD": {
+ "name": "Andorra"
+ },
+ "AO": {
+ "name": "Angola"
+ },
+ "AI": {
+ "name": "Anguilla"
+ },
+ "AQ": {
+ "name": "Antarktika"
+ },
+ "AG": {
+ "name": "Antigua a Barbuda"
+ },
+ "AR": {
+ "name": "Argentinska"
+ },
+ "AM": {
+ "name": "Armenska"
+ },
+ "AW": {
+ "name": "Aruba"
+ },
+ "AC": {
+ "name": "Ascension"
+ },
+ "AU": {
+ "name": "Awstralska"
+ },
+ "AT": {
+ "name": "Awstriska"
+ },
+ "AZ": {
+ "name": "Azerbajdźan"
+ },
+ "BS": {
+ "name": "Bahamy"
+ },
+ "BH": {
+ "name": "Bahrain"
+ },
+ "BD": {
+ "name": "Bangladeš"
+ },
+ "BB": {
+ "name": "Barbados"
+ },
+ "BE": {
+ "name": "Belgiska"
+ },
+ "BZ": {
+ "name": "Belize"
+ },
+ "BY": {
+ "name": "Běłoruska"
+ },
+ "BJ": {
+ "name": "Benin"
+ },
+ "BM": {
+ "name": "Bermudy"
+ },
+ "BT": {
+ "name": "Bhutan"
+ },
+ "BG": {
+ "name": "Bołharska"
+ },
+ "BO": {
+ "name": "Boliwiska"
+ },
+ "BA": {
+ "name": "Bosniska a Hercegowina"
+ },
+ "BW": {
+ "name": "Botswana"
+ },
+ "BR": {
+ "name": "Brazilska"
+ },
+ "VG": {
+ "name": "Britiske knježniske kupy"
+ },
+ "IO": {
+ "name": "Britiski teritorij w Indiskim oceanje"
+ },
+ "BN": {
+ "name": "Brunei"
+ },
+ "BF": {
+ "name": "Burkina Faso"
+ },
+ "BI": {
+ "name": "Burundi"
+ },
+ "TD": {
+ "name": "ÄŒad"
+ },
+ "CF": {
+ "name": "Centralnoafriska republika"
+ },
+ "CZ": {
+ "name": "Čěska republika"
+ },
+ "EA": {
+ "name": "Ceuta a Melilla"
+ },
+ "CL": {
+ "name": "Chilska"
+ },
+ "CN": {
+ "name": "China"
+ },
+ "HR": {
+ "name": "Chorwatska"
+ },
+ "CK": {
+ "name": "Cookowe kupy"
+ },
+ "CI": {
+ "name": "Côte d’Ivoire"
+ },
+ "CW": {
+ "name": "Curaçao"
+ },
+ "CY": {
+ "name": "Cypern"
+ },
+ "DK": {
+ "name": "Danska"
+ },
+ "DG": {
+ "name": "Diego Garcia"
+ },
+ "DM": {
+ "name": "Dominika"
+ },
+ "DO": {
+ "name": "Dominikanska republika"
+ },
+ "DJ": {
+ "name": "Dźibuti"
+ },
+ "EG": {
+ "name": "Egyptowska"
+ },
+ "EC": {
+ "name": "Ekwador"
+ },
+ "GQ": {
+ "name": "Ekwatorialna Gineja"
+ },
+ "SV": {
+ "name": "El Salvador"
+ },
+ "ER": {
+ "name": "Eritreja"
+ },
+ "EE": {
+ "name": "Estiska"
+ },
+ "ET": {
+ "name": "Etiopiska"
+ },
+ "FK": {
+ "name": "Falklandske kupy"
+ },
+ "FO": {
+ "name": "Färöske kupy"
+ },
+ "FJ": {
+ "name": "Fidźi"
+ },
+ "PH": {
+ "name": "Filipiny"
+ },
+ "FI": {
+ "name": "Finska"
+ },
+ "FR": {
+ "name": "Francoska"
+ },
+ "GF": {
+ "name": "Francoska Guyana"
+ },
+ "PF": {
+ "name": "Francoska Polyneziska"
+ },
+ "TF": {
+ "name": "Francoski južny a antarktiski teritorij"
+ },
+ "GA": {
+ "name": "Gabun"
+ },
+ "GM": {
+ "name": "Gambija"
+ },
+ "GE": {
+ "name": "Georgiska"
+ },
+ "GH": {
+ "name": "Ghana"
+ },
+ "GI": {
+ "name": "Gibraltar"
+ },
+ "GN": {
+ "name": "Gineja"
+ },
+ "GW": {
+ "name": "Gineja-Bissau"
+ },
+ "GD": {
+ "name": "Grenada"
+ },
+ "GR": {
+ "name": "Grjekska"
+ },
+ "GL": {
+ "name": "Grönlandska"
+ },
+ "GP": {
+ "name": "Guadeloupe"
+ },
+ "GU": {
+ "name": "Guam"
+ },
+ "GT": {
+ "name": "Guatemala"
+ },
+ "GG": {
+ "name": "Guernsey"
+ },
+ "GY": {
+ "name": "Guyana"
+ },
+ "HT": {
+ "name": "Haiti"
+ },
+ "CX": {
+ "name": "Hodowna kupa"
+ },
+ "HN": {
+ "name": "Honduras"
+ },
+ "IN": {
+ "name": "Indiska"
+ },
+ "ID": {
+ "name": "Indoneska"
+ },
+ "IQ": {
+ "name": "Irak"
+ },
+ "IR": {
+ "name": "Iran"
+ },
+ "IE": {
+ "name": "Irska"
+ },
+ "IS": {
+ "name": "Islandska"
+ },
+ "IL": {
+ "name": "Israel"
+ },
+ "IT": {
+ "name": "Italska"
+ },
+ "JM": {
+ "name": "Jamaika"
+ },
+ "JP": {
+ "name": "Japanska"
+ },
+ "YE": {
+ "name": "Jemen"
+ },
+ "JE": {
+ "name": "Jersey"
+ },
+ "JO": {
+ "name": "Jordaniska"
+ },
+ "ZA": {
+ "name": "Južna Afrika (Republika)"
+ },
+ "GS": {
+ "name": "Južna Georgiska a Južne Sandwichowe kupy"
+ },
+ "KR": {
+ "name": "Južna Koreja"
+ },
+ "SS": {
+ "name": "Južny Sudan"
+ },
+ "KY": {
+ "name": "Kajmanske kupy"
+ },
+ "KH": {
+ "name": "Kambodźa"
+ },
+ "CM": {
+ "name": "Kamerun"
+ },
+ "CA": {
+ "name": "Kanada"
+ },
+ "IC": {
+ "name": "Kanariske kupy"
+ },
+ "CV": {
+ "name": "Kap Verde"
+ },
+ "BQ": {
+ "name": "Karibiska Nižozemska"
+ },
+ "QA": {
+ "name": "Katar"
+ },
+ "KZ": {
+ "name": "Kazachstan"
+ },
+ "KE": {
+ "name": "Kenija"
+ },
+ "KG": {
+ "name": "Kirgizistan"
+ },
+ "KI": {
+ "name": "Kiribati"
+ },
+ "CC": {
+ "name": "Kokosowe kupy"
+ },
+ "CO": {
+ "name": "Kolumbiska"
+ },
+ "KM": {
+ "name": "Komory"
+ },
+ "CG": {
+ "name": "Kongo-Brazzaville"
+ },
+ "CD": {
+ "name": "Kongo-Kinshasa"
+ },
+ "XK": {
+ "name": "Kosowo"
+ },
+ "CR": {
+ "name": "Kosta Rika"
+ },
+ "CU": {
+ "name": "Kuba"
+ },
+ "TC": {
+ "name": "kupy Turks a Caicos"
+ },
+ "KW": {
+ "name": "Kuwait"
+ },
+ "LA": {
+ "name": "Laos"
+ },
+ "LS": {
+ "name": "Lesotho"
+ },
+ "LV": {
+ "name": "Letiska"
+ },
+ "LB": {
+ "name": "Libanon"
+ },
+ "LR": {
+ "name": "Liberija"
+ },
+ "LY": {
+ "name": "Libyska"
+ },
+ "LI": {
+ "name": "Liechtenstein"
+ },
+ "LT": {
+ "name": "Litawska"
+ },
+ "LU": {
+ "name": "Luxemburgska"
+ },
+ "MG": {
+ "name": "Madagaskar"
+ },
+ "HU": {
+ "name": "Madźarska"
+ },
+ "MK": {
+ "name": "Makedonska"
+ },
+ "MY": {
+ "name": "Malajzija"
+ },
+ "MW": {
+ "name": "Malawi"
+ },
+ "MV": {
+ "name": "Malediwy"
+ },
+ "ML": {
+ "name": "Mali"
+ },
+ "MT": {
+ "name": "Malta"
+ },
+ "IM": {
+ "name": "Man"
+ },
+ "MA": {
+ "name": "Marokko"
+ },
+ "MH": {
+ "name": "Marshallowe kupy"
+ },
+ "MQ": {
+ "name": "Martinique"
+ },
+ "MU": {
+ "name": "Mauritius"
+ },
+ "MR": {
+ "name": "Mawretanska"
+ },
+ "YT": {
+ "name": "Mayotte"
+ },
+ "MX": {
+ "name": "Mexiko"
+ },
+ "FM": {
+ "name": "Mikroneziska"
+ },
+ "MD": {
+ "name": "Moldawska"
+ },
+ "MC": {
+ "name": "Monaco"
+ },
+ "MN": {
+ "name": "Mongolska"
+ },
+ "ME": {
+ "name": "Montenegro"
+ },
+ "MS": {
+ "name": "Montserrat"
+ },
+ "MZ": {
+ "name": "Mosambik"
+ },
+ "MM": {
+ "name": "Myanmar"
+ },
+ "NA": {
+ "name": "Namibija"
+ },
+ "NR": {
+ "name": "Nauru"
+ },
+ "DE": {
+ "name": "Němska"
+ },
+ "NP": {
+ "name": "Nepal"
+ },
+ "NE": {
+ "name": "Niger"
+ },
+ "NG": {
+ "name": "Nigerija"
+ },
+ "NI": {
+ "name": "Nikaragua"
+ },
+ "NU": {
+ "name": "Niue"
+ },
+ "NL": {
+ "name": "Nižozemska"
+ },
+ "NF": {
+ "name": "Norfolkowa kupa"
+ },
+ "NO": {
+ "name": "Norwegska"
+ },
+ "NC": {
+ "name": "Nowa Kaledoniska"
+ },
+ "NZ": {
+ "name": "Nowoseelandska"
+ },
+ "OM": {
+ "name": "Oman"
+ },
+ "PK": {
+ "name": "Pakistan"
+ },
+ "PW": {
+ "name": "Palau"
+ },
+ "PS": {
+ "name": "Palestinski awtonomny teritorij"
+ },
+ "PA": {
+ "name": "Panama"
+ },
+ "PG": {
+ "name": "Papuwa-Nowa Gineja"
+ },
+ "PY": {
+ "name": "Paraguay"
+ },
+ "PE": {
+ "name": "Peru"
+ },
+ "PN": {
+ "name": "Pitcairnowe kupy"
+ },
+ "PL": {
+ "name": "Pólska"
+ },
+ "PT": {
+ "name": "Portugalska"
+ },
+ "PR": {
+ "name": "Puerto Rico"
+ },
+ "RE": {
+ "name": "Réunion"
+ },
+ "RW": {
+ "name": "Ruanda"
+ },
+ "RO": {
+ "name": "Rumunska"
+ },
+ "RU": {
+ "name": "Ruska"
+ },
+ "SB": {
+ "name": "Salomony"
+ },
+ "ZM": {
+ "name": "Sambija"
+ },
+ "WS": {
+ "name": "Samoa"
+ },
+ "SM": {
+ "name": "San Marino"
+ },
+ "ST": {
+ "name": "São Tomé a Príncipe"
+ },
+ "SA": {
+ "name": "Sawdi-Arabska"
+ },
+ "SN": {
+ "name": "Senegal"
+ },
+ "RS": {
+ "name": "Serbiska"
+ },
+ "KP": {
+ "name": "Sewjerna Koreja"
+ },
+ "MP": {
+ "name": "Sewjerne Mariany"
+ },
+ "SC": {
+ "name": "Seychelle"
+ },
+ "SL": {
+ "name": "Sierra Leone"
+ },
+ "ZW": {
+ "name": "Simbabwe"
+ },
+ "SG": {
+ "name": "Singapur"
+ },
+ "SX": {
+ "name": "Sint Maarten"
+ },
+ "SK": {
+ "name": "SÅ‚owakska"
+ },
+ "SI": {
+ "name": "SÅ‚owjenska"
+ },
+ "SO": {
+ "name": "Somalija"
+ },
+ "ES": {
+ "name": "Å paniska"
+ },
+ "LK": {
+ "name": "Sri Lanka"
+ },
+ "BL": {
+ "name": "St. Barthélemy"
+ },
+ "SH": {
+ "name": "St. Helena"
+ },
+ "KN": {
+ "name": "St. Kitts a Nevis"
+ },
+ "LC": {
+ "name": "St. Lucia"
+ },
+ "MF": {
+ "name": "St. Martin"
+ },
+ "PM": {
+ "name": "St. Pierre a Miquelon"
+ },
+ "VC": {
+ "name": "St. Vincent a Grenadiny"
+ },
+ "SD": {
+ "name": "Sudan"
+ },
+ "SR": {
+ "name": "Surinam"
+ },
+ "SJ": {
+ "name": "Svalbard a Jan Mayen"
+ },
+ "SZ": {
+ "name": "Swaziska"
+ },
+ "SE": {
+ "name": "Å wedska"
+ },
+ "CH": {
+ "name": "Å wicarska"
+ },
+ "SY": {
+ "name": "Syriska"
+ },
+ "TJ": {
+ "name": "Tadźikistan"
+ },
+ "TW": {
+ "name": "Taiwan"
+ },
+ "TZ": {
+ "name": "Tansanija"
+ },
+ "TH": {
+ "name": "Thailandska"
+ },
+ "TL": {
+ "name": "Timor-Leste"
+ },
+ "TG": {
+ "name": "Togo"
+ },
+ "TK": {
+ "name": "Tokelau"
+ },
+ "TO": {
+ "name": "Tonga"
+ },
+ "TT": {
+ "name": "Trinidad a Tobago"
+ },
+ "TA": {
+ "name": "Tristan da Cunha"
+ },
+ "TN": {
+ "name": "Tuneziska"
+ },
+ "TM": {
+ "name": "Turkmeniska"
+ },
+ "TR": {
+ "name": "Turkowska"
+ },
+ "TV": {
+ "name": "Tuvalu"
+ },
+ "UG": {
+ "name": "Uganda"
+ },
+ "UA": {
+ "name": "Ukraina"
+ },
+ "UY": {
+ "name": "Uruguay"
+ },
+ "UZ": {
+ "name": "Uzbekistan"
+ },
+ "VU": {
+ "name": "Vanuatu"
+ },
+ "VA": {
+ "name": "Vatikanske město"
+ },
+ "VE": {
+ "name": "Venezuela"
+ },
+ "VN": {
+ "name": "Vietnam"
+ },
+ "WF": {
+ "name": "Wallis a Futuna"
+ },
+ "HK": {
+ "name": "Wosebita zarjadniska cona Hongkong"
+ },
+ "MO": {
+ "name": "Wosebita zarjadniska cona Macao"
+ },
+ "EH": {
+ "name": "Zapadna Sahara"
+ },
+ "AE": {
+ "name": "Zjednoćene arabske emiraty"
+ },
+ "GB": {
+ "name": "Zjednoćene kralestwo"
+ },
+ "US": {
+ "name": "Zjednoćene staty Ameriki"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/country/hu.json b/library/intl/resources/country/hu.json
new file mode 100644
index 000000000..f08b47017
--- /dev/null
+++ b/library/intl/resources/country/hu.json
@@ -0,0 +1,761 @@
+{
+ "AF": {
+ "name": "Afganisztán"
+ },
+ "AX": {
+ "name": "Ã…land-szigetek"
+ },
+ "AL": {
+ "name": "Albánia"
+ },
+ "DZ": {
+ "name": "Algéria"
+ },
+ "UM": {
+ "name": "Amerikai Csendes-óceáni Szigetek"
+ },
+ "AS": {
+ "name": "Amerikai Szamoa"
+ },
+ "VI": {
+ "name": "Amerikai Virgin-szigetek"
+ },
+ "AD": {
+ "name": "Andorra"
+ },
+ "AO": {
+ "name": "Angola"
+ },
+ "AI": {
+ "name": "Anguilla"
+ },
+ "AQ": {
+ "name": "Antarktisz"
+ },
+ "AG": {
+ "name": "Antigua és Barbuda"
+ },
+ "AR": {
+ "name": "Argentína"
+ },
+ "AW": {
+ "name": "Aruba"
+ },
+ "AC": {
+ "name": "Ascension-sziget"
+ },
+ "AU": {
+ "name": "Ausztrália"
+ },
+ "AT": {
+ "name": "Ausztria"
+ },
+ "AZ": {
+ "name": "Azerbajdzsán"
+ },
+ "BS": {
+ "name": "Bahama-szigetek"
+ },
+ "BH": {
+ "name": "Bahrein"
+ },
+ "BD": {
+ "name": "Banglades"
+ },
+ "BB": {
+ "name": "Barbados"
+ },
+ "BE": {
+ "name": "Belgium"
+ },
+ "BZ": {
+ "name": "Belize"
+ },
+ "BJ": {
+ "name": "Benin"
+ },
+ "BM": {
+ "name": "Bermuda"
+ },
+ "BT": {
+ "name": "Bhután"
+ },
+ "BO": {
+ "name": "Bolívia"
+ },
+ "BA": {
+ "name": "Bosznia-Hercegovina"
+ },
+ "BW": {
+ "name": "Botswana"
+ },
+ "BR": {
+ "name": "Brazília"
+ },
+ "IO": {
+ "name": "Brit Indiai-óceáni Terület"
+ },
+ "VG": {
+ "name": "Brit Virgin-szigetek"
+ },
+ "BN": {
+ "name": "Brunei"
+ },
+ "BG": {
+ "name": "Bulgária"
+ },
+ "BF": {
+ "name": "Burkina Faso"
+ },
+ "BI": {
+ "name": "Burundi"
+ },
+ "EA": {
+ "name": "Ceuta és Melilla"
+ },
+ "CL": {
+ "name": "Chile"
+ },
+ "CY": {
+ "name": "Ciprus"
+ },
+ "KM": {
+ "name": "Comore-szigetek"
+ },
+ "CK": {
+ "name": "Cook-szigetek"
+ },
+ "CR": {
+ "name": "Costa Rica"
+ },
+ "CW": {
+ "name": "Curaçao"
+ },
+ "TD": {
+ "name": "Csád"
+ },
+ "CZ": {
+ "name": "Csehország"
+ },
+ "DK": {
+ "name": "Dánia"
+ },
+ "ZA": {
+ "name": "Dél-afrikai Köztársaság"
+ },
+ "KR": {
+ "name": "Dél-Korea"
+ },
+ "SS": {
+ "name": "Dél-Szudán"
+ },
+ "GS": {
+ "name": "Déli-Georgia és Déli-Sandwich-szigetek"
+ },
+ "DG": {
+ "name": "Diego Garcia"
+ },
+ "DM": {
+ "name": "Dominika"
+ },
+ "DO": {
+ "name": "Dominikai Köztársaság"
+ },
+ "DJ": {
+ "name": "Dzsibuti"
+ },
+ "EC": {
+ "name": "Ecuador"
+ },
+ "GQ": {
+ "name": "Egyenlítői-Guinea"
+ },
+ "US": {
+ "name": "Egyesült Ãllamok"
+ },
+ "AE": {
+ "name": "Egyesült Arab Emirátus"
+ },
+ "GB": {
+ "name": "Egyesült Királyság"
+ },
+ "EG": {
+ "name": "Egyiptom"
+ },
+ "CI": {
+ "name": "Elefántcsontpart"
+ },
+ "ER": {
+ "name": "Eritrea"
+ },
+ "KP": {
+ "name": "Észak-Korea"
+ },
+ "MP": {
+ "name": "Északi Mariana-szigetek"
+ },
+ "EE": {
+ "name": "Észtország"
+ },
+ "ET": {
+ "name": "Etiópia"
+ },
+ "FK": {
+ "name": "Falkland-szigetek"
+ },
+ "BY": {
+ "name": "Fehéroroszország"
+ },
+ "FO": {
+ "name": "Feröer-szigetek"
+ },
+ "FJ": {
+ "name": "Fidzsi-szigetek"
+ },
+ "FI": {
+ "name": "Finnország"
+ },
+ "TF": {
+ "name": "Francia Déli Területek"
+ },
+ "GF": {
+ "name": "Francia Guyana"
+ },
+ "PF": {
+ "name": "Francia Polinézia"
+ },
+ "FR": {
+ "name": "Franciaország"
+ },
+ "PH": {
+ "name": "Fülöp-szigetek"
+ },
+ "GA": {
+ "name": "Gabon"
+ },
+ "GM": {
+ "name": "Gambia"
+ },
+ "GH": {
+ "name": "Ghána"
+ },
+ "GI": {
+ "name": "Gibraltár"
+ },
+ "GR": {
+ "name": "Görögország"
+ },
+ "GD": {
+ "name": "Grenada"
+ },
+ "GL": {
+ "name": "Grönland"
+ },
+ "GE": {
+ "name": "Grúzia"
+ },
+ "GP": {
+ "name": "Guadeloupe"
+ },
+ "GU": {
+ "name": "Guam"
+ },
+ "GT": {
+ "name": "Guatemala"
+ },
+ "GG": {
+ "name": "Guernsey"
+ },
+ "GN": {
+ "name": "Guinea"
+ },
+ "GW": {
+ "name": "Guinea-Bissau"
+ },
+ "GY": {
+ "name": "Guyana"
+ },
+ "HT": {
+ "name": "Haiti"
+ },
+ "BQ": {
+ "name": "Holland Karib-térség"
+ },
+ "NL": {
+ "name": "Hollandia"
+ },
+ "HN": {
+ "name": "Honduras"
+ },
+ "HK": {
+ "name": "Hongkong SAR Kína"
+ },
+ "HR": {
+ "name": "Horvátország"
+ },
+ "IN": {
+ "name": "India"
+ },
+ "ID": {
+ "name": "Indonézia"
+ },
+ "IQ": {
+ "name": "Irak"
+ },
+ "IR": {
+ "name": "Irán"
+ },
+ "IE": {
+ "name": "Ãrország"
+ },
+ "IS": {
+ "name": "Izland"
+ },
+ "IL": {
+ "name": "Izrael"
+ },
+ "JM": {
+ "name": "Jamaica"
+ },
+ "JP": {
+ "name": "Japán"
+ },
+ "YE": {
+ "name": "Jemen"
+ },
+ "JE": {
+ "name": "Jersey"
+ },
+ "JO": {
+ "name": "Jordánia"
+ },
+ "KY": {
+ "name": "Kajmán-szigetek"
+ },
+ "KH": {
+ "name": "Kambodzsa"
+ },
+ "CM": {
+ "name": "Kamerun"
+ },
+ "CA": {
+ "name": "Kanada"
+ },
+ "IC": {
+ "name": "Kanári-szigetek"
+ },
+ "CX": {
+ "name": "Karácsony-sziget"
+ },
+ "QA": {
+ "name": "Katar"
+ },
+ "KZ": {
+ "name": "Kazahsztán"
+ },
+ "TL": {
+ "name": "Kelet-Timor"
+ },
+ "KE": {
+ "name": "Kenya"
+ },
+ "CN": {
+ "name": "Kína"
+ },
+ "KG": {
+ "name": "Kirgizisztán"
+ },
+ "KI": {
+ "name": "Kiribati"
+ },
+ "CC": {
+ "name": "Kókusz-szigetek"
+ },
+ "CO": {
+ "name": "Kolumbia"
+ },
+ "CG": {
+ "name": "Kongó - Brazzaville"
+ },
+ "CD": {
+ "name": "Kongó - Kinshasa"
+ },
+ "XK": {
+ "name": "Koszovó"
+ },
+ "CF": {
+ "name": "Közép-afrikai Köztársaság"
+ },
+ "CU": {
+ "name": "Kuba"
+ },
+ "KW": {
+ "name": "Kuvait"
+ },
+ "LA": {
+ "name": "Laosz"
+ },
+ "PL": {
+ "name": "Lengyelország"
+ },
+ "LS": {
+ "name": "Lesotho"
+ },
+ "LV": {
+ "name": "Lettország"
+ },
+ "LB": {
+ "name": "Libanon"
+ },
+ "LR": {
+ "name": "Libéria"
+ },
+ "LY": {
+ "name": "Líbia"
+ },
+ "LI": {
+ "name": "Liechtenstein"
+ },
+ "LT": {
+ "name": "Litvánia"
+ },
+ "LU": {
+ "name": "Luxemburg"
+ },
+ "MK": {
+ "name": "Macedónia"
+ },
+ "MG": {
+ "name": "Madagaszkár"
+ },
+ "HU": {
+ "name": "Magyarország"
+ },
+ "MO": {
+ "name": "Makaó SAR Kína"
+ },
+ "MY": {
+ "name": "Malajzia"
+ },
+ "MW": {
+ "name": "Malawi"
+ },
+ "MV": {
+ "name": "Maldív-szigetek"
+ },
+ "ML": {
+ "name": "Mali"
+ },
+ "MT": {
+ "name": "Málta"
+ },
+ "IM": {
+ "name": "Man-sziget"
+ },
+ "MA": {
+ "name": "Marokkó"
+ },
+ "MH": {
+ "name": "Marshall-szigetek"
+ },
+ "MQ": {
+ "name": "Martinique"
+ },
+ "MR": {
+ "name": "Mauritánia"
+ },
+ "MU": {
+ "name": "Mauritius"
+ },
+ "YT": {
+ "name": "Mayotte"
+ },
+ "MX": {
+ "name": "Mexikó"
+ },
+ "MM": {
+ "name": "Mianmar (Burma)"
+ },
+ "FM": {
+ "name": "Mikronézia"
+ },
+ "MD": {
+ "name": "Moldova"
+ },
+ "MC": {
+ "name": "Monaco"
+ },
+ "MN": {
+ "name": "Mongólia"
+ },
+ "ME": {
+ "name": "Montenegró"
+ },
+ "MS": {
+ "name": "Montserrat"
+ },
+ "MZ": {
+ "name": "Mozambik"
+ },
+ "NA": {
+ "name": "Namíbia"
+ },
+ "NR": {
+ "name": "Nauru"
+ },
+ "DE": {
+ "name": "Németország"
+ },
+ "NP": {
+ "name": "Nepál"
+ },
+ "NI": {
+ "name": "Nicaragua"
+ },
+ "NE": {
+ "name": "Niger"
+ },
+ "NG": {
+ "name": "Nigéria"
+ },
+ "NU": {
+ "name": "Niue"
+ },
+ "NF": {
+ "name": "Norfolk-sziget"
+ },
+ "NO": {
+ "name": "Norvégia"
+ },
+ "EH": {
+ "name": "Nyugat-Szahara"
+ },
+ "IT": {
+ "name": "Olaszország"
+ },
+ "OM": {
+ "name": "Omán"
+ },
+ "RU": {
+ "name": "Oroszország"
+ },
+ "AM": {
+ "name": "Örményország"
+ },
+ "PK": {
+ "name": "Pakisztán"
+ },
+ "PW": {
+ "name": "Palau"
+ },
+ "PS": {
+ "name": "Palesztin Terület"
+ },
+ "PA": {
+ "name": "Panama"
+ },
+ "PG": {
+ "name": "Pápua Új-Guinea"
+ },
+ "PY": {
+ "name": "Paraguay"
+ },
+ "PE": {
+ "name": "Peru"
+ },
+ "PN": {
+ "name": "Pitcairn-szigetek"
+ },
+ "PT": {
+ "name": "Portugália"
+ },
+ "PR": {
+ "name": "Puerto Rico"
+ },
+ "RE": {
+ "name": "Reunion"
+ },
+ "RO": {
+ "name": "Románia"
+ },
+ "RW": {
+ "name": "Ruanda"
+ },
+ "KN": {
+ "name": "Saint Kitts és Nevis"
+ },
+ "MF": {
+ "name": "Saint Martin"
+ },
+ "PM": {
+ "name": "Saint Pierre és Miquelon"
+ },
+ "VC": {
+ "name": "Saint Vincent és a Grenadine-szigetek"
+ },
+ "BL": {
+ "name": "Saint-Barthélemy"
+ },
+ "SB": {
+ "name": "Salamon-szigetek"
+ },
+ "SV": {
+ "name": "Salvador"
+ },
+ "SM": {
+ "name": "San Marino"
+ },
+ "LC": {
+ "name": "Santa Lucia"
+ },
+ "ST": {
+ "name": "Sao Tomé és Príncipe"
+ },
+ "SC": {
+ "name": "Seychelle-szigetek"
+ },
+ "SL": {
+ "name": "Sierra Leone"
+ },
+ "SX": {
+ "name": "Sint Maarten"
+ },
+ "ES": {
+ "name": "Spanyolország"
+ },
+ "SJ": {
+ "name": "Spitzbergák és Jan Mayen-szigetek"
+ },
+ "LK": {
+ "name": "Srí Lanka"
+ },
+ "SR": {
+ "name": "Suriname"
+ },
+ "CH": {
+ "name": "Svájc"
+ },
+ "SE": {
+ "name": "Svédország"
+ },
+ "WS": {
+ "name": "Szamoa"
+ },
+ "SA": {
+ "name": "Szaúd-Arábia"
+ },
+ "SN": {
+ "name": "Szenegál"
+ },
+ "SH": {
+ "name": "Szent Ilona"
+ },
+ "RS": {
+ "name": "Szerbia"
+ },
+ "SG": {
+ "name": "Szingapúr"
+ },
+ "SY": {
+ "name": "Szíria"
+ },
+ "SK": {
+ "name": "Szlovákia"
+ },
+ "SI": {
+ "name": "Szlovénia"
+ },
+ "SO": {
+ "name": "Szomália"
+ },
+ "SD": {
+ "name": "Szudán"
+ },
+ "SZ": {
+ "name": "Szváziföld"
+ },
+ "TJ": {
+ "name": "Tádzsikisztán"
+ },
+ "TW": {
+ "name": "Tajvan"
+ },
+ "TZ": {
+ "name": "Tanzánia"
+ },
+ "TH": {
+ "name": "Thaiföld"
+ },
+ "TG": {
+ "name": "Togo"
+ },
+ "TK": {
+ "name": "Tokelau"
+ },
+ "TO": {
+ "name": "Tonga"
+ },
+ "TR": {
+ "name": "Törökország"
+ },
+ "TT": {
+ "name": "Trinidad és Tobago"
+ },
+ "TA": {
+ "name": "Tristan da Cunha"
+ },
+ "TN": {
+ "name": "Tunézia"
+ },
+ "TC": {
+ "name": "Turks- és Caicos-szigetek"
+ },
+ "TV": {
+ "name": "Tuvalu"
+ },
+ "TM": {
+ "name": "Türkmenisztán"
+ },
+ "UG": {
+ "name": "Uganda"
+ },
+ "NC": {
+ "name": "Új-Kaledónia"
+ },
+ "NZ": {
+ "name": "Új-Zéland"
+ },
+ "UA": {
+ "name": "Ukrajna"
+ },
+ "UY": {
+ "name": "Uruguay"
+ },
+ "UZ": {
+ "name": "Üzbegisztán"
+ },
+ "VU": {
+ "name": "Vanuatu"
+ },
+ "VA": {
+ "name": "Vatikán"
+ },
+ "VE": {
+ "name": "Venezuela"
+ },
+ "VN": {
+ "name": "Vietnam"
+ },
+ "WF": {
+ "name": "Wallis- és Futuna-szigetek"
+ },
+ "ZM": {
+ "name": "Zambia"
+ },
+ "ZW": {
+ "name": "Zimbabwe"
+ },
+ "CV": {
+ "name": "Zöld-foki Köztársaság"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/country/hy.json b/library/intl/resources/country/hy.json
new file mode 100644
index 000000000..09401a166
--- /dev/null
+++ b/library/intl/resources/country/hy.json
@@ -0,0 +1,761 @@
+{
+ "AZ": {
+ "name": "Ô±Õ¤Ö€Õ¢Õ¥Õ»Õ¡Õ¶"
+ },
+ "AX": {
+ "name": "Ô±Õ¬Õ¡Õ¶Õ¤ÕµÕ¡Õ¶ Õ¯Õ²Õ¦Õ«Õ¶Õ¥Ö€"
+ },
+ "AL": {
+ "name": "Ô±Õ¬Õ¢Õ¡Õ¶Õ«Õ¡"
+ },
+ "DZ": {
+ "name": "Ô±Õ¬ÕªÕ«Ö€"
+ },
+ "US": {
+ "name": "Ô±Õ´Õ¥Ö€Õ«Õ¯Õ¡ÕµÕ« Õ„Õ«Õ¡ÖÕµÕ¡Õ¬ Õ†Õ¡Õ°Õ¡Õ¶Õ£Õ¶Õ¥Ö€"
+ },
+ "AS": {
+ "name": "Ô±Õ´Õ¥Ö€Õ«Õ¯ÕµÕ¡Õ¶ ÕÕ¡Õ´Õ¸Õ¡"
+ },
+ "VI": {
+ "name": "Ô±Õ´Õ¥Ö€Õ«Õ¯ÕµÕ¡Õ¶ ÕŽÕ«Ö€Õ»Õ«Õ¶ÕµÕ¡Õ¶ Õ¯Õ²Õ¦Õ«Õ¶Õ¥Ö€"
+ },
+ "AI": {
+ "name": "Ô±Õ¶Õ£Õ«Õ¬Õ«Õ¡"
+ },
+ "AO": {
+ "name": "Ô±Õ¶Õ£Õ¸Õ¬Õ¡"
+ },
+ "AD": {
+ "name": "Ô±Õ¶Õ¤Õ¸Ö€Õ¡"
+ },
+ "AQ": {
+ "name": "Ô±Õ¶Õ¿Õ¡Ö€Õ¯Õ¿Õ«Õ¤Õ¡"
+ },
+ "AG": {
+ "name": "Ô±Õ¶Õ¿Õ«Õ£Õ¸Ö‚Õ¡ Ö‡ Ô²Õ¡Ö€Õ¢Õ¸Ö‚Õ¤Õ¡"
+ },
+ "AU": {
+ "name": "Ô±Õ¾Õ½Õ¿Ö€Õ¡Õ¬Õ«Õ¡"
+ },
+ "AT": {
+ "name": "Ô±Õ¾Õ½Õ¿Ö€Õ«Õ¡"
+ },
+ "AR": {
+ "name": "Ô±Ö€Õ£Õ¥Õ¶Õ¿Õ«Õ¶Õ¡"
+ },
+ "AW": {
+ "name": "Ô±Ö€Õ¸Ö‚Õ¢Õ¡"
+ },
+ "UM": {
+ "name": "Ô±Ö€Õ¿Õ¡Ö„Õ«Õ¶ Õ¯Õ²Õ¦Õ«Õ¶Õ¥Ö€ (Ô±Õ„Õ†)"
+ },
+ "EH": {
+ "name": "Ô±Ö€Ö‡Õ´Õ¿ÕµÕ¡Õ¶ ÕÕ¡Õ°Õ¡Ö€Õ¡"
+ },
+ "AF": {
+ "name": "Ô±Ö†Õ²Õ¡Õ¶Õ½Õ¿Õ¡Õ¶"
+ },
+ "BS": {
+ "name": "Ô²Õ¡Õ°Õ¡Õ´ÕµÕ¡Õ¶ Õ¯Õ²Õ¦Õ«Õ¶Õ¥Ö€"
+ },
+ "BH": {
+ "name": "Ô²Õ¡Õ°Ö€Õ¥ÕµÕ¶"
+ },
+ "BD": {
+ "name": "Ô²Õ¡Õ¶Õ£Õ¬Õ¡Õ¤Õ¥Õ·"
+ },
+ "BB": {
+ "name": "Ô²Õ¡Ö€Õ¢Õ¡Õ¤Õ¸Õ½"
+ },
+ "BY": {
+ "name": "Ô²Õ¥Õ¬Õ¡Õ¼Õ¸Ö‚Õ½"
+ },
+ "BE": {
+ "name": "Ô²Õ¥Õ¬Õ£Õ«Õ¡"
+ },
+ "BZ": {
+ "name": "Ô²Õ¥Õ¬Õ«Õ¦"
+ },
+ "BJ": {
+ "name": "Ô²Õ¥Õ¶Õ«Õ¶"
+ },
+ "BM": {
+ "name": "Ô²Õ¥Ö€Õ´Õ¸Ö‚Õ¤ÕµÕ¡Õ¶ Õ¯Õ²Õ¦Õ«Õ¶Õ¥Ö€"
+ },
+ "BO": {
+ "name": "Ô²Õ¸Õ¬Õ«Õ¾Õ«Õ¡"
+ },
+ "BA": {
+ "name": "Ô²Õ¸Õ½Õ¶Õ«Õ¡ Ö‡ Õ€Õ¥Ö€ÖÕ¥Õ£Õ¸Õ¾Õ«Õ¶Õ¡"
+ },
+ "BW": {
+ "name": "Ô²Õ¸Õ¿Õ½Õ¾Õ¡Õ¶Õ¡"
+ },
+ "BT": {
+ "name": "Ô²Õ¸Ö‚Õ©Õ¡Õ¶"
+ },
+ "BG": {
+ "name": "Ô²Õ¸Ö‚Õ¬Õ²Õ¡Ö€Õ«Õ¡"
+ },
+ "BF": {
+ "name": "Ô²Õ¸Ö‚Ö€Õ¯Õ«Õ¶Õ¡ Õ–Õ¡Õ½Õ¸"
+ },
+ "BI": {
+ "name": "Ô²Õ¸Ö‚Ö€Õ¸Ö‚Õ¶Õ¤Õ«"
+ },
+ "BR": {
+ "name": "Ô²Ö€Õ¡Õ¦Õ«Õ¬Õ«Õ¡"
+ },
+ "VG": {
+ "name": "Ô²Ö€Õ«Õ¿Õ¡Õ¶Õ¡Õ¯Õ¡Õ¶ ÕŽÕ«Ö€Õ»Õ«Õ¶ÕµÕ¡Õ¶ Õ¯Õ²Õ¦Õ«Õ¶Õ¥Ö€"
+ },
+ "BN": {
+ "name": "Ô²Ö€Õ¸Ö‚Õ¶Õ¥Õµ"
+ },
+ "GA": {
+ "name": "Ô³Õ¡Õ¢Õ¸Õ¶"
+ },
+ "GM": {
+ "name": "Ô³Õ¡Õ´Õ¢Õ«Õ¡"
+ },
+ "GY": {
+ "name": "Ô³Õ¡ÕµÕ¡Õ¶Õ¡"
+ },
+ "GH": {
+ "name": "Ô³Õ¡Õ¶Õ¡"
+ },
+ "DE": {
+ "name": "Ô³Õ¥Ö€Õ´Õ¡Õ¶Õ«Õ¡"
+ },
+ "GG": {
+ "name": "Ô³Õ¥Ö€Õ¶Õ½Õ«"
+ },
+ "GU": {
+ "name": "Ô³Õ¸Ö‚Õ¡Õ´"
+ },
+ "GP": {
+ "name": "Ô³Õ¾Õ¡Õ¤Õ¥Õ¬Õ¸Ö‚ÕºÕ¡"
+ },
+ "GT": {
+ "name": "Ô³Õ¾Õ¡Õ¿Õ¥Õ´Õ¡Õ¬Õ¡"
+ },
+ "GN": {
+ "name": "Ô³Õ¾Õ«Õ¶Õ¥Õ¡"
+ },
+ "GW": {
+ "name": "Ô³Õ¾Õ«Õ¶Õ¥Õ¡-Ô²Õ«Õ½Õ¡Õ¸Ö‚"
+ },
+ "GD": {
+ "name": "Ô³Ö€Õ¥Õ¶Õ¡Õ¤Õ¡"
+ },
+ "GL": {
+ "name": "Ô³Ö€Õ¥Õ¶Õ¬Õ¡Õ¶Õ¤Õ«Õ¡"
+ },
+ "DK": {
+ "name": "Ô´Õ¡Õ¶Õ«Õ¡"
+ },
+ "DG": {
+ "name": "Ô´Õ«Õ¥Õ£Õ¸ Ô³Õ¡Ö€Õ½Õ«Õ¡"
+ },
+ "DM": {
+ "name": "Ô´Õ¸Õ´Õ«Õ¶Õ«Õ¯Õ¡"
+ },
+ "DO": {
+ "name": "Ô´Õ¸Õ´Õ«Õ¶Õ«Õ¯ÕµÕ¡Õ¶ Õ€Õ¡Õ¶Ö€Õ¡ÕºÕ¥Õ¿Õ¸Ö‚Õ©ÕµÕ¸Ö‚Õ¶"
+ },
+ "EG": {
+ "name": "ÔµÕ£Õ«ÕºÕ¿Õ¸Õ½"
+ },
+ "ET": {
+ "name": "ÔµÕ©Õ¸Õ¾ÕºÕ«Õ¡"
+ },
+ "YE": {
+ "name": "ÔµÕ´Õ¥Õ¶"
+ },
+ "ZM": {
+ "name": "Ô¶Õ¡Õ´Õ¢Õ«Õ¡"
+ },
+ "ZW": {
+ "name": "Ô¶Õ«Õ´Õ¢Õ¡Õ¢Õ¾Õ¥"
+ },
+ "EC": {
+ "name": "Ô·Õ¯Õ¾Õ¡Õ¤Õ¸Ö€"
+ },
+ "EE": {
+ "name": "Ô·Õ½Õ¿Õ¸Õ¶Õ«Õ¡"
+ },
+ "ER": {
+ "name": "Ô·Ö€Õ«Õ¿Ö€Õ¥Õ¡"
+ },
+ "TH": {
+ "name": "Ô¹Õ¡Õ«Õ¬Õ¡Õ¶Õ¤"
+ },
+ "TW": {
+ "name": "Ô¹Õ¡ÕµÕ¾Õ¡Õ¶"
+ },
+ "TL": {
+ "name": "Ô¹Õ«Õ´Õ¸Ö€-Ô¼Õ¥Õ½Õ¿Õ¥"
+ },
+ "TN": {
+ "name": "Ô¹Õ¸Ö‚Õ¶Õ«Õ½"
+ },
+ "TR": {
+ "name": "Ô¹Õ¸Ö‚Ö€Ö„Õ«Õ¡"
+ },
+ "TM": {
+ "name": "Ô¹Õ¸Ö‚Ö€Ö„Õ´Õ¥Õ¶Õ½Õ¿Õ¡Õ¶"
+ },
+ "ID": {
+ "name": "Ô»Õ¶Õ¤Õ¸Õ¶Õ¥Õ¦Õ«Õ¡"
+ },
+ "IE": {
+ "name": "Ô»Õ¼Õ¬Õ¡Õ¶Õ¤Õ«Õ¡"
+ },
+ "IS": {
+ "name": "Ô»Õ½Õ¬Õ¡Õ¶Õ¤Õ«Õ¡"
+ },
+ "ES": {
+ "name": "Ô»Õ½ÕºÕ¡Õ¶Õ«Õ¡"
+ },
+ "IL": {
+ "name": "Ô»Õ½Ö€Õ¡ÕµÕ¥Õ¬"
+ },
+ "IT": {
+ "name": "Ô»Õ¿Õ¡Õ¬Õ«Õ¡"
+ },
+ "IR": {
+ "name": "Ô»Ö€Õ¡Õ¶"
+ },
+ "IQ": {
+ "name": "Ô»Ö€Õ¡Ö„"
+ },
+ "LA": {
+ "name": "Ô¼Õ¡Õ¸Õ½"
+ },
+ "LV": {
+ "name": "Ô¼Õ¡Õ¿Õ¾Õ«Õ¡"
+ },
+ "PL": {
+ "name": "Ô¼Õ¥Õ°Õ¡Õ½Õ¿Õ¡Õ¶"
+ },
+ "LS": {
+ "name": "Ô¼Õ¥Õ½Õ¸Õ¿Õ¸"
+ },
+ "LB": {
+ "name": "Ô¼Õ«Õ¢Õ¡Õ¶Õ¡Õ¶"
+ },
+ "LR": {
+ "name": "Ô¼Õ«Õ¢Õ¥Ö€Õ«Õ¡"
+ },
+ "LY": {
+ "name": "Ô¼Õ«Õ¢Õ«Õ¡"
+ },
+ "LI": {
+ "name": "Ô¼Õ«Õ­Õ¿Õ¥Õ¶Õ·Õ¿Õ¥ÕµÕ¶"
+ },
+ "LT": {
+ "name": "Ô¼Õ«Õ¿Õ¾Õ¡"
+ },
+ "LU": {
+ "name": "Ô¼ÕµÕ¸Ö‚Ö„Õ½Õ¥Õ´Õ¢Õ¸Ö‚Ö€Õ£"
+ },
+ "HR": {
+ "name": "Ô½Õ¸Ö€Õ¾Õ¡Õ©Õ«Õ¡"
+ },
+ "CX": {
+ "name": "Ô¾Õ¶Õ¶Õ¤ÕµÕ¡Õ¶ Õ¯Õ²Õ¦Õ«"
+ },
+ "CV": {
+ "name": "Ô¿Õ¡Õ¢Õ¸ ÕŽÕ¥Ö€Õ¤Õ¥"
+ },
+ "KH": {
+ "name": "Ô¿Õ¡Õ´Õ¢Õ¸Õ»Õ¡"
+ },
+ "CM": {
+ "name": "Ô¿Õ¡Õ´Õ¥Ö€Õ¸Ö‚Õ¶"
+ },
+ "KY": {
+ "name": "Ô¿Õ¡ÕµÕ´Õ¡Õ¶ÕµÕ¡Õ¶ Õ¯Õ²Õ¦Õ«Õ¶Õ¥Ö€"
+ },
+ "CA": {
+ "name": "Ô¿Õ¡Õ¶Õ¡Õ¤Õ¡"
+ },
+ "IC": {
+ "name": "Ô¿Õ¡Õ¶Õ¡Ö€ÕµÕ¡Õ¶ Õ¯Õ²Õ¦Õ«Õ¶Õ¥Ö€"
+ },
+ "QA": {
+ "name": "Ô¿Õ¡Õ¿Õ¡Ö€"
+ },
+ "BQ": {
+ "name": "Ô¿Õ¡Ö€Õ«Õ¢ÕµÕ¡Õ¶ Õ†Õ«Õ¤Õ¥Ö€Õ¬Õ¡Õ¶Õ¤Õ¶Õ¥Ö€"
+ },
+ "CF": {
+ "name": "Ô¿Õ¥Õ¶Õ¿Ö€Õ¸Õ¶Õ¡Õ¯Õ¡Õ¶ Ô±Ö†Ö€Õ«Õ¯ÕµÕ¡Õ¶ Õ€Õ¡Õ¶Ö€Õ¡ÕºÕ¥Õ¿Õ¸Ö‚Õ©ÕµÕ¸Ö‚Õ¶"
+ },
+ "CY": {
+ "name": "Ô¿Õ«ÕºÖ€Õ¸Õ½"
+ },
+ "KI": {
+ "name": "Ô¿Õ«Ö€Õ«Õ¢Õ¡Õ¿Õ«"
+ },
+ "CW": {
+ "name": "Ô¿ÕµÕ¸Ö‚Ö€Õ¡Õ½Õ¡Õ¸"
+ },
+ "CO": {
+ "name": "Ô¿Õ¸Õ¬Õ¸Ö‚Õ´Õ¢Õ«Õ¡"
+ },
+ "CC": {
+ "name": "Ô¿Õ¸Õ¯Õ¸Õ½ÕµÕ¡Õ¶ (Õ”Õ«Õ¬Õ«Õ¶Õ£) Õ¯Õ²Õ¦Õ«Õ¶Õ¥Ö€"
+ },
+ "KM": {
+ "name": "Ô¿Õ¸Õ´Õ¸Ö€ÕµÕ¡Õ¶ Õ¯Õ²Õ¦Õ«Õ¶Õ¥Ö€"
+ },
+ "CG": {
+ "name": "Ô¿Õ¸Õ¶Õ£Õ¸ - Ô²Ö€Õ¡Õ¦Õ¡Õ¾Õ«Õ¬"
+ },
+ "CD": {
+ "name": "Ô¿Õ¸Õ¶Õ£Õ¸ - Ô¿Õ«Õ¶Õ·Õ¡Õ½Õ¡"
+ },
+ "XK": {
+ "name": "Ô¿Õ¸Õ½Õ¸Õ¾Õ¸"
+ },
+ "CR": {
+ "name": "Կոստա-Ռիկա"
+ },
+ "CU": {
+ "name": "Ô¿Õ¸Ö‚Õ¢Õ¡"
+ },
+ "CK": {
+ "name": "Ô¿Õ¸Ö‚Õ¯Õ« Õ¯Õ²Õ¦Õ«Õ¶Õ¥Ö€"
+ },
+ "HT": {
+ "name": "Õ€Õ¡Õ«Õ©Õ«"
+ },
+ "AC": {
+ "name": "Õ€Õ¡Õ´Õ¢Õ¡Ö€Õ±Õ´Õ¡Õ¶ Õ¯Õ²Õ¦Õ«"
+ },
+ "AM": {
+ "name": "Õ€Õ¡ÕµÕ¡Õ½Õ¿Õ¡Õ¶"
+ },
+ "GQ": {
+ "name": "Õ€Õ¡Õ½Õ¡Ö€Õ¡Õ¯Õ¡Õ®Õ¡ÕµÕ«Õ¶ Ô³Õ¾Õ«Õ¶Õ¥Õ¡"
+ },
+ "KR": {
+ "name": "Õ€Õ¡Ö€Õ¡Õ¾Õ¡ÕµÕ«Õ¶ Ô¿Õ¸Ö€Õ¥Õ¡"
+ },
+ "GS": {
+ "name": "Õ€Õ¡Ö€Õ¡Õ¾Õ¡ÕµÕ«Õ¶ Õ‹Õ¸Ö€Õ»Õ«Õ¡ Ö‡ Õ€Õ¡Ö€Õ¡Õ¾Õ¡ÕµÕ«Õ¶ ÕÕ¥Õ¶Õ¤Õ¾Õ«Õ¹ÕµÕ¡Õ¶ Õ¯Õ²Õ¦Õ«Õ¶Õ¥Ö€"
+ },
+ "SS": {
+ "name": "Õ€Õ¡Ö€Õ¡Õ¾Õ¡ÕµÕ«Õ¶ ÕÕ¸Ö‚Õ¤Õ¡Õ¶"
+ },
+ "ZA": {
+ "name": "Õ€Õ¡Ö€Õ¡Õ¾Õ¡Ö†Ö€Õ«Õ¯ÕµÕ¡Õ¶ Õ€Õ¡Õ¶Ö€Õ¡ÕºÕ¥Õ¿Õ¸Ö‚Õ©ÕµÕ¸Ö‚Õ¶"
+ },
+ "KP": {
+ "name": "Õ€ÕµÕ¸Ö‚Õ½Õ«Õ½Õ¡ÕµÕ«Õ¶ Ô¿Õ¸Ö€Õ¥Õ¡"
+ },
+ "MP": {
+ "name": "Õ€ÕµÕ¸Ö‚Õ½Õ«Õ½Õ¡ÕµÕ«Õ¶ Õ„Õ¡Ö€Õ«Õ¡Õ¶ÕµÕ¡Õ¶ Õ¯Õ²Õ¦Õ«Õ¶Õ¥Ö€"
+ },
+ "IO": {
+ "name": "Õ€Õ¶Õ¤Õ¯Õ¡Õ¯Õ¡Õ¶ Õ•Õ¾Õ¯Õ«Õ¡Õ¶Õ¸Õ½Õ¸Ö‚Õ´ Ô²Ö€Õ«Õ¿Õ¡Õ¶Õ¡Õ¯Õ¡Õ¶ ÕÕ¡Ö€Õ¡Õ®Ö„"
+ },
+ "IN": {
+ "name": "Õ€Õ¶Õ¤Õ¯Õ¡Õ½Õ¿Õ¡Õ¶"
+ },
+ "HN": {
+ "name": "Õ€Õ¸Õ¶Õ¤Õ¸Ö‚Ö€Õ¡Õ½"
+ },
+ "HK": {
+ "name": "Õ€Õ¸Õ¶Õ¯Õ¸Õ¶Õ£Õ« Õ€ÕŽÕ‡"
+ },
+ "JO": {
+ "name": "Õ€Õ¸Ö€Õ¤Õ¡Õ¶Õ¡Õ¶"
+ },
+ "GR": {
+ "name": "Õ€Õ¸Ö‚Õ¶Õ¡Õ½Õ¿Õ¡Õ¶"
+ },
+ "HU": {
+ "name": "Õ€Õ¸Ö‚Õ¶Õ£Õ¡Ö€Õ«Õ¡"
+ },
+ "KZ": {
+ "name": "Õ‚Õ¡Õ¦Õ¡Õ­Õ½Õ¿Õ¡Õ¶"
+ },
+ "KG": {
+ "name": "Õ‚Ö€Õ²Õ¦Õ½Õ¿Õ¡Õ¶"
+ },
+ "JP": {
+ "name": "ÕƒÕ¡ÕºÕ¸Õ¶Õ«Õ¡"
+ },
+ "MG": {
+ "name": "Õ„Õ¡Õ¤Õ¡Õ£Õ¡Õ½Õ¯Õ¡Ö€"
+ },
+ "MY": {
+ "name": "Õ„Õ¡Õ¬Õ¡ÕµÕ¦Õ«Õ¡"
+ },
+ "MW": {
+ "name": "Õ„Õ¡Õ¬Õ¡Õ¾Õ«"
+ },
+ "MV": {
+ "name": "Õ„Õ¡Õ¬Õ¤Õ«Õ¾Õ¶Õ¥Ö€"
+ },
+ "MT": {
+ "name": "Õ„Õ¡Õ¬Õ©Õ¡"
+ },
+ "ML": {
+ "name": "Õ„Õ¡Õ¬Õ«"
+ },
+ "MK": {
+ "name": "Õ„Õ¡Õ¯Õ¥Õ¤Õ¸Õ¶Õ«Õ¡"
+ },
+ "YT": {
+ "name": "Õ„Õ¡ÕµÕ¸Õ¿"
+ },
+ "MU": {
+ "name": "Õ„Õ¡Õ¾Ö€Õ«Õ¯Õ«Õ¸Õ½"
+ },
+ "MR": {
+ "name": "Õ„Õ¡Õ¾Ö€Õ«Õ¿Õ¡Õ¶Õ«Õ¡"
+ },
+ "MH": {
+ "name": "Õ„Õ¡Ö€Õ·Õ¡Õ¬ÕµÕ¡Õ¶ Õ¯Õ²Õ¦Õ«Õ¶Õ¥Ö€"
+ },
+ "MA": {
+ "name": "Õ„Õ¡Ö€Õ¸Õ¯Õ¸"
+ },
+ "MQ": {
+ "name": "Õ„Õ¡Ö€Õ¿Õ«Õ¶Õ«Õ¯Õ¡"
+ },
+ "IM": {
+ "name": "Õ„Õ¥Õ¶ Õ¯Õ²Õ¦Õ«"
+ },
+ "MX": {
+ "name": "Õ„Õ¥Ö„Õ½Õ«Õ¯Õ¡"
+ },
+ "AE": {
+ "name": "Õ„Õ«Õ¡ÖÕµÕ¡Õ¬ Ô±Ö€Õ¡Õ¢Õ¡Õ¯Õ¡Õ¶ Ô·Õ´Õ«Ö€Õ¸Ö‚Õ©ÕµÕ¸Ö‚Õ¶Õ¶Õ¥Ö€"
+ },
+ "GB": {
+ "name": "Õ„Õ«Õ¡ÖÕµÕ¡Õ¬ Ô¹Õ¡Õ£Õ¡Õ¾Õ¸Ö€Õ¸Ö‚Õ©ÕµÕ¸Ö‚Õ¶"
+ },
+ "FM": {
+ "name": "Õ„Õ«Õ¯Ö€Õ¸Õ¶Õ¥Õ¦Õ«Õ¡"
+ },
+ "MM": {
+ "name": "Õ„ÕµÕ¡Õ¶Õ´Õ¡ (Ô²Õ«Ö€Õ´Õ¡)"
+ },
+ "MZ": {
+ "name": "Õ„Õ¸Õ¦Õ¡Õ´Õ¢Õ«Õ¯"
+ },
+ "MD": {
+ "name": "Õ„Õ¸Õ¬Õ¤Õ¸Õ¾Õ¡"
+ },
+ "MC": {
+ "name": "Õ„Õ¸Õ¶Õ¡Õ¯Õ¸"
+ },
+ "MN": {
+ "name": "Õ„Õ¸Õ¶Õ²Õ¸Õ¬Õ«Õ¡"
+ },
+ "MS": {
+ "name": "Õ„Õ¸Õ¶Õ¿Õ½Õ¥Ö€Õ¡Õ¿"
+ },
+ "NA": {
+ "name": "Õ†Õ¡Õ´Õ«Õ¢Õ«Õ¡"
+ },
+ "NR": {
+ "name": "Õ†Õ¡Õ¸Ö‚Ö€Õ¸Ö‚"
+ },
+ "NP": {
+ "name": "Õ†Õ¥ÕºÕ¡Õ¬"
+ },
+ "NE": {
+ "name": "Õ†Õ«Õ£Õ¥Ö€"
+ },
+ "NG": {
+ "name": "Õ†Õ«Õ£Õ¥Ö€Õ«Õ¡"
+ },
+ "NL": {
+ "name": "Õ†Õ«Õ¤Õ¥Ö€Õ¬Õ¡Õ¶Õ¤Õ¥Ö€"
+ },
+ "NI": {
+ "name": "Õ†Õ«Õ¯Õ¡Ö€Õ¡Õ£Õ¸Ö‚Õ¡"
+ },
+ "NU": {
+ "name": "Õ†Õ«Õ¸Ö‚Õ¥"
+ },
+ "NZ": {
+ "name": "Õ†Õ¸Ö€ Ô¶Õ¥Õ¬Õ¡Õ¶Õ¤Õ«Õ¡"
+ },
+ "NC": {
+ "name": "Õ†Õ¸Ö€ Ô¿Õ¡Õ¬Õ¥Õ¤Õ¸Õ¶Õ«Õ¡"
+ },
+ "NO": {
+ "name": "Õ†Õ¸Ö€Õ¾Õ¥Õ£Õ«Õ¡"
+ },
+ "NF": {
+ "name": "Õ†Õ¸Ö€Ö†Õ¸Õ¬Õ¯ Õ¯Õ²Õ¦Õ«"
+ },
+ "SE": {
+ "name": "Õ‡Õ¾Õ¥Õ¤Õ«Õ¡"
+ },
+ "CH": {
+ "name": "Õ‡Õ¾Õ¥ÕµÖÕ¡Ö€Õ«Õ¡"
+ },
+ "LK": {
+ "name": "Õ‡Ö€Õ« Ô¼Õ¡Õ¶Õ¯Õ¡"
+ },
+ "UG": {
+ "name": "ÕˆÖ‚Õ£Õ¡Õ¶Õ¤Õ¡"
+ },
+ "UZ": {
+ "name": "ÕˆÖ‚Õ¦Õ¢Õ¥Õ¯Õ½Õ¿Õ¡Õ¶"
+ },
+ "UA": {
+ "name": "ÕˆÖ‚Õ¯Ö€Õ¡Õ«Õ¶Õ¡"
+ },
+ "WF": {
+ "name": "ÕˆÖ‚Õ¸Õ¬Õ«Õ½ Ö‡ Õ–Õ¸Ö‚Õ¿Õ¸Ö‚Õ¶Õ¡"
+ },
+ "UY": {
+ "name": "ÕˆÖ‚Ö€Õ¸Ö‚Õ£Õ¾Õ¡Õµ"
+ },
+ "TD": {
+ "name": "Õ‰Õ¡Õ¤"
+ },
+ "CZ": {
+ "name": "Õ‰Õ¥Õ­Õ«Õ¡"
+ },
+ "ME": {
+ "name": "Õ‰Õ¥Õ¼Õ¶Õ¸Õ£Õ¸Ö€Õ«Õ¡"
+ },
+ "CL": {
+ "name": "Õ‰Õ«Õ¬Õ«"
+ },
+ "CN": {
+ "name": "Õ‰Õ«Õ¶Õ¡Õ½Õ¿Õ¡Õ¶"
+ },
+ "MO": {
+ "name": "Õ‰Õ«Õ¶Õ¡Õ½Õ¿Õ¡Õ¶Õ« Õ„Õ¡Õ¯Õ¡Õ¸ Õ€ÕŽÕ‡"
+ },
+ "PW": {
+ "name": "ÕŠÕ¡Õ¬Õ¡Õ¸Ö‚"
+ },
+ "PK": {
+ "name": "ÕŠÕ¡Õ¯Õ«Õ½Õ¿Õ¡Õ¶"
+ },
+ "PS": {
+ "name": "ÕŠÕ¡Õ²Õ¥Õ½Õ¿Õ«Õ¶ÕµÕ¡Õ¶ Õ¿Õ¡Ö€Õ¡Õ®Ö„Õ¶Õ¥Ö€"
+ },
+ "PA": {
+ "name": "ÕŠÕ¡Õ¶Õ¡Õ´Õ¡"
+ },
+ "PG": {
+ "name": "ÕŠÕ¡ÕºÕ¸Ö‚Õ¡ Õ†Õ¸Ö€ Ô³Õ¾Õ«Õ¶Õ¥Õ¡"
+ },
+ "PY": {
+ "name": "ÕŠÕ¡Ö€Õ¡Õ£Õ¾Õ¡Õµ"
+ },
+ "PE": {
+ "name": "ÕŠÕ¥Ö€Õ¸Ö‚"
+ },
+ "PN": {
+ "name": "ÕŠÕ«Õ¿Õ¯Õ¥Õ¼Õ¶ Õ¯Õ²Õ¦Õ«Õ¶Õ¥Ö€"
+ },
+ "PT": {
+ "name": "ÕŠÕ¸Ö€Õ¿Õ¸Ö‚Õ£Õ¡Õ¬Õ«Õ¡"
+ },
+ "PR": {
+ "name": "Պուերտո Ռիկո"
+ },
+ "JM": {
+ "name": "Õ‹Õ¡Õ´Õ¡ÕµÕ¯Õ¡"
+ },
+ "JE": {
+ "name": "Õ‹Õ¥Ö€Õ½Õ«"
+ },
+ "DJ": {
+ "name": "Õ‹Õ«Õ¢Õ¸Ö‚Õ¿Õ«"
+ },
+ "GI": {
+ "name": "Õ‹Õ«Õ¢Ö€Õ¡Õ¬Õ©Õ¡Ö€"
+ },
+ "RE": {
+ "name": "Ռեյունիոն"
+ },
+ "RW": {
+ "name": "Ռուանդա"
+ },
+ "RO": {
+ "name": "Ռումինիա"
+ },
+ "RU": {
+ "name": "Ռուսաստան"
+ },
+ "SV": {
+ "name": "ÕÕ¡Õ¬Õ¾Õ¡Õ¤Õ¸Ö€"
+ },
+ "WS": {
+ "name": "ÕÕ¡Õ´Õ¸Õ¡"
+ },
+ "SM": {
+ "name": "ÕÕ¡Õ¶ Õ„Õ¡Ö€Õ«Õ¶Õ¸"
+ },
+ "ST": {
+ "name": "ÕÕ¡Õ¶ ÕÕ¸Õ´Õ¥ Ö‡ ÕŠÖ€Õ«Õ¶Õ½Õ«ÕºÕ«"
+ },
+ "SA": {
+ "name": "ÕÕ¡Õ¸Ö‚Õ¤ÕµÕ¡Õ¶ Ô±Ö€Õ¡Õ¢Õ«Õ¡"
+ },
+ "SC": {
+ "name": "ÕÕ¥ÕµÕ·Õ¥Õ¬ÕµÕ¡Õ¶ Õ¯Õ²Õ¦Õ«Õ¶Õ¥Ö€"
+ },
+ "MF": {
+ "name": "ÕÕ¥Õ¶ Õ„Õ¡Ö€Õ¿Õ¥Õ¶"
+ },
+ "PM": {
+ "name": "ÕÕ¥Õ¶ ÕŠÕ«Õ¥Ö€ Ö‡ Õ„Õ«Õ¯Õ¥Õ¬Õ¸Õ¶"
+ },
+ "SN": {
+ "name": "ÕÕ¥Õ¶Õ¥Õ£Õ¡Õ¬"
+ },
+ "LC": {
+ "name": "ÕÕ¥Õ¶Õ© Ô¼ÕµÕ¸Ö‚Õ½Õ«Õ¡"
+ },
+ "VC": {
+ "name": "ÕÕ¥Õ¶Õ© ÕŽÕ«Õ½Õ¥Õ¶Õ¿ Ö‡ Ô³Ö€Õ¥Õ¶Õ¡Õ¤Õ«Õ¶Õ¶Õ¥Ö€"
+ },
+ "KN": {
+ "name": "ÕÕ¥Õ¶Õ© Õ”Õ«Õ©Õ½ Ö‡ Õ†Ö‡Õ«Õ½"
+ },
+ "EA": {
+ "name": "ÕÕ¥Õ¸Ö‚Õ¿Õ¡ Ö‡ Õ„Õ¥Õ¬Õ«Õ¬ÕµÕ¡"
+ },
+ "RS": {
+ "name": "ÕÕ¥Ö€Õ¢Õ«Õ¡"
+ },
+ "SG": {
+ "name": "ÕÕ«Õ¶Õ£Õ¡ÕºÕ¸Ö‚Ö€"
+ },
+ "SX": {
+ "name": "ÕÕ«Õ¶Õ¿ Õ„Õ¡Ö€Õ¿Õ¥Õ¶"
+ },
+ "SY": {
+ "name": "ÕÕ«Ö€Õ«Õ¡"
+ },
+ "SK": {
+ "name": "ÕÕ¬Õ¸Õ¾Õ¡Õ¯Õ«Õ¡"
+ },
+ "SI": {
+ "name": "ÕÕ¬Õ¸Õ¾Õ¥Õ¶Õ«Õ¡"
+ },
+ "SL": {
+ "name": "ÕÕµÕ¥Ö€Õ¡-Ô¼Õ¥Õ¸Õ¶Õ¥"
+ },
+ "SB": {
+ "name": "ÕÕ¸Õ²Õ¸Õ´Õ¸Õ¶ÕµÕ¡Õ¶ Õ¯Õ²Õ¦Õ«Õ¶Õ¥Ö€"
+ },
+ "SO": {
+ "name": "ÕÕ¸Õ´Õ¡Õ¬Õ«"
+ },
+ "SD": {
+ "name": "ÕÕ¸Ö‚Õ¤Õ¡Õ¶"
+ },
+ "BL": {
+ "name": "ÕÕ¸Ö‚Ö€Õ¢ Ô²Õ¡Ö€Õ©Õ¸Õ²Õ¸Õ´Õ¥Õ¸Õ½Õ« Õ¯Õ²Õ¦Õ«"
+ },
+ "SH": {
+ "name": "ÕÕ¸Ö‚Ö€Õ¢ Õ€Õ¥Õ²Õ«Õ¶Õ¥Õ« Õ¯Õ²Õ¦Õ«"
+ },
+ "SR": {
+ "name": "ÕÕ¸Ö‚Ö€Õ«Õ¶Õ¡Õ´"
+ },
+ "SZ": {
+ "name": "ÕÕ¾Õ¡Õ¦Õ«Õ¬Õ¥Õ¶Õ¤"
+ },
+ "SJ": {
+ "name": "ÕÕ¾Õ¡Õ¬Õ¢Õ¡Ö€Õ¤ Ö‡ Õ…Õ¡Õ¶-Õ„Õ¡ÕµÕ¥Õ¶"
+ },
+ "VU": {
+ "name": "ÕŽÕ¡Õ¶Õ¸Ö‚Õ¡Õ¿Õ¸Ö‚"
+ },
+ "VA": {
+ "name": "ÕŽÕ¡Õ¿Õ«Õ¯Õ¡Õ¶ Ö„Õ¡Õ²Õ¡Ö„-ÕºÕ¥Õ¿Õ¸Ö‚Õ©ÕµÕ¸Ö‚Õ¶"
+ },
+ "VE": {
+ "name": "ÕŽÕ¥Õ¶Õ¥Õ½Õ¸Ö‚Õ¥Õ¬Õ¡"
+ },
+ "VN": {
+ "name": "ÕŽÕ«Õ¥Õ¿Õ¶Õ¡Õ´"
+ },
+ "GE": {
+ "name": "ÕŽÖ€Õ¡Õ½Õ¿Õ¡Õ¶"
+ },
+ "TZ": {
+ "name": "ÕÕ¡Õ¶Õ¦Õ¡Õ¶Õ«Õ¡"
+ },
+ "TJ": {
+ "name": "ÕÕ¡Õ»Õ«Õ¯Õ½Õ¿Õ¡Õ¶"
+ },
+ "TC": {
+ "name": "ÕÕ¥Ö€Õ¯Õ½ Ö‡ Ô¿Õ¡ÕµÕ¯Õ¸Õ½ Õ¯Õ²Õ¦Õ«Õ¶Õ¥Ö€"
+ },
+ "TG": {
+ "name": "ÕÕ¸Õ£Õ¸"
+ },
+ "TK": {
+ "name": "ÕÕ¸Õ¯Õ¥Õ¬Õ¡Õ¸Ö‚"
+ },
+ "TO": {
+ "name": "ÕÕ¸Õ¶Õ£Õ¡"
+ },
+ "TV": {
+ "name": "ÕÕ¸Ö‚Õ¾Õ¡Õ¬Õ¸Ö‚"
+ },
+ "TT": {
+ "name": "ÕÖ€Õ«Õ¶Õ«Õ¤Õ¡Õ¤ Ö‡ ÕÕ¸Õ¢Õ¡Õ£Õ¸"
+ },
+ "TA": {
+ "name": "ÕÖ€Õ«Õ½Õ¿Õ¡Õ¶ Õ¤Õ¡ Ô¿Õ¸Ö‚Õ¶ÕµÕ¡"
+ },
+ "CI": {
+ "name": "Õ“Õ²Õ¸Õ½Õ¯Ö€Õ« Ô±Öƒ"
+ },
+ "KE": {
+ "name": "Õ”Õ¥Õ¶Õ«Õ¡"
+ },
+ "KW": {
+ "name": "Õ”Õ¸Ö‚Õ¾Õ¥ÕµÕ©"
+ },
+ "OM": {
+ "name": "Õ•Õ´Õ¡Õ¶"
+ },
+ "FO": {
+ "name": "Õ–Õ¡Ö€Õ¥Ö€ÕµÕ¡Õ¶ Õ¯Õ²Õ¦Õ«Õ¶Õ¥Ö€"
+ },
+ "PH": {
+ "name": "Õ–Õ«Õ¬Õ«ÕºÕ«Õ¶Õ¶Õ¥Ö€"
+ },
+ "FI": {
+ "name": "Õ–Õ«Õ¶Õ¬Õ¡Õ¶Õ¤Õ«Õ¡"
+ },
+ "FJ": {
+ "name": "Õ–Õ«Õ»Õ«"
+ },
+ "FK": {
+ "name": "Õ–Õ¸Õ¬Õ¯Õ¬Õ¥Õ¶Õ¤ÕµÕ¡Õ¶ Õ¯Õ²Õ¦Õ«Õ¶Õ¥Ö€"
+ },
+ "FR": {
+ "name": "Õ–Ö€Õ¡Õ¶Õ½Õ«Õ¡"
+ },
+ "GF": {
+ "name": "Õ–Ö€Õ¡Õ¶Õ½Õ«Õ¡Õ¯Õ¡Õ¶ Ô³Õ¾Õ«Õ¡Õ¶Õ¡"
+ },
+ "TF": {
+ "name": "Õ–Ö€Õ¡Õ¶Õ½Õ«Õ¡Õ¯Õ¡Õ¶ Õ€Õ¡Ö€Õ¡Õ¾Õ¡ÕµÕ«Õ¶ ÕÕ¡Ö€Õ¡Õ®Ö„Õ¶Õ¥Ö€"
+ },
+ "PF": {
+ "name": "Õ–Ö€Õ¡Õ¶Õ½Õ«Õ¡Õ¯Õ¡Õ¶ ÕŠÕ¸Õ¬Õ«Õ¶Õ¥Õ¦Õ«Õ¡"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/country/id.json b/library/intl/resources/country/id.json
new file mode 100644
index 000000000..c75b113fc
--- /dev/null
+++ b/library/intl/resources/country/id.json
@@ -0,0 +1,761 @@
+{
+ "AF": {
+ "name": "Afganistan"
+ },
+ "ZA": {
+ "name": "Afrika Selatan"
+ },
+ "AL": {
+ "name": "Albania"
+ },
+ "DZ": {
+ "name": "Aljazair"
+ },
+ "US": {
+ "name": "Amerika Serikat"
+ },
+ "AD": {
+ "name": "Andorra"
+ },
+ "AO": {
+ "name": "Angola"
+ },
+ "AI": {
+ "name": "Anguilla"
+ },
+ "AQ": {
+ "name": "Antarktika"
+ },
+ "AG": {
+ "name": "Antigua dan Barbuda"
+ },
+ "SA": {
+ "name": "Arab Saudi"
+ },
+ "AR": {
+ "name": "Argentina"
+ },
+ "AM": {
+ "name": "Armenia"
+ },
+ "AW": {
+ "name": "Aruba"
+ },
+ "AU": {
+ "name": "Australia"
+ },
+ "AT": {
+ "name": "Austria"
+ },
+ "AZ": {
+ "name": "Azerbaijan"
+ },
+ "BS": {
+ "name": "Bahama"
+ },
+ "BH": {
+ "name": "Bahrain"
+ },
+ "BD": {
+ "name": "Bangladesh"
+ },
+ "BB": {
+ "name": "Barbados"
+ },
+ "NL": {
+ "name": "Belanda"
+ },
+ "BY": {
+ "name": "Belarus"
+ },
+ "BE": {
+ "name": "Belgia"
+ },
+ "BZ": {
+ "name": "Belize"
+ },
+ "BJ": {
+ "name": "Benin"
+ },
+ "BM": {
+ "name": "Bermuda"
+ },
+ "BT": {
+ "name": "Bhutan"
+ },
+ "BO": {
+ "name": "Bolivia"
+ },
+ "BA": {
+ "name": "Bosnia dan Herzegovina"
+ },
+ "BW": {
+ "name": "Botswana"
+ },
+ "BR": {
+ "name": "Brasil"
+ },
+ "BN": {
+ "name": "Brunei"
+ },
+ "BG": {
+ "name": "Bulgaria"
+ },
+ "BF": {
+ "name": "Burkina Faso"
+ },
+ "BI": {
+ "name": "Burundi"
+ },
+ "TD": {
+ "name": "Cad"
+ },
+ "EA": {
+ "name": "Ceuta dan Melilla"
+ },
+ "CN": {
+ "name": "China"
+ },
+ "CL": {
+ "name": "Cile"
+ },
+ "CI": {
+ "name": "Cote d’Ivoire"
+ },
+ "CW": {
+ "name": "Curaçao"
+ },
+ "DK": {
+ "name": "Denmark"
+ },
+ "DG": {
+ "name": "Diego Garcia"
+ },
+ "DM": {
+ "name": "Dominika"
+ },
+ "EC": {
+ "name": "Ekuador"
+ },
+ "SV": {
+ "name": "El Salvador"
+ },
+ "ER": {
+ "name": "Eritrea"
+ },
+ "EE": {
+ "name": "Estonia"
+ },
+ "ET": {
+ "name": "Etiopia"
+ },
+ "FJ": {
+ "name": "Fiji"
+ },
+ "PH": {
+ "name": "Filipina"
+ },
+ "FI": {
+ "name": "Finlandia"
+ },
+ "GA": {
+ "name": "Gabon"
+ },
+ "GM": {
+ "name": "Gambia"
+ },
+ "GE": {
+ "name": "Georgia"
+ },
+ "GS": {
+ "name": "Georgia Selatan dan Kepulauan Sandwich Selatan"
+ },
+ "GH": {
+ "name": "Ghana"
+ },
+ "GI": {
+ "name": "Gibraltar"
+ },
+ "GD": {
+ "name": "Grenada"
+ },
+ "GL": {
+ "name": "Grinlandia"
+ },
+ "GP": {
+ "name": "Guadeloupe"
+ },
+ "GU": {
+ "name": "Guam"
+ },
+ "GT": {
+ "name": "Guatemala"
+ },
+ "GG": {
+ "name": "Guernsey"
+ },
+ "GN": {
+ "name": "Guinea"
+ },
+ "GQ": {
+ "name": "Guinea Ekuatorial"
+ },
+ "GW": {
+ "name": "Guinea-Bissau"
+ },
+ "GY": {
+ "name": "Guyana"
+ },
+ "GF": {
+ "name": "Guyana Prancis"
+ },
+ "HT": {
+ "name": "Haiti"
+ },
+ "HN": {
+ "name": "Honduras"
+ },
+ "HK": {
+ "name": "Hong Kong SAR China"
+ },
+ "HU": {
+ "name": "Hungaria"
+ },
+ "IN": {
+ "name": "India"
+ },
+ "ID": {
+ "name": "Indonesia"
+ },
+ "GB": {
+ "name": "Inggris"
+ },
+ "IQ": {
+ "name": "Irak"
+ },
+ "IR": {
+ "name": "Iran"
+ },
+ "IE": {
+ "name": "Irlandia"
+ },
+ "IS": {
+ "name": "Islandia"
+ },
+ "IL": {
+ "name": "Israel"
+ },
+ "IT": {
+ "name": "Italia"
+ },
+ "JM": {
+ "name": "Jamaika"
+ },
+ "JP": {
+ "name": "Jepang"
+ },
+ "DE": {
+ "name": "Jerman"
+ },
+ "JE": {
+ "name": "Jersey"
+ },
+ "DJ": {
+ "name": "Jibuti"
+ },
+ "NC": {
+ "name": "Kaledonia Baru"
+ },
+ "KH": {
+ "name": "Kamboja"
+ },
+ "CM": {
+ "name": "Kamerun"
+ },
+ "CA": {
+ "name": "Kanada"
+ },
+ "BQ": {
+ "name": "Karibia Belanda"
+ },
+ "KZ": {
+ "name": "Kazakstan"
+ },
+ "KE": {
+ "name": "Kenya"
+ },
+ "AX": {
+ "name": "Kepulauan Aland"
+ },
+ "IC": {
+ "name": "Kepulauan Canary"
+ },
+ "KY": {
+ "name": "Kepulauan Cayman"
+ },
+ "CC": {
+ "name": "Kepulauan Cocos"
+ },
+ "CK": {
+ "name": "Kepulauan Cook"
+ },
+ "FO": {
+ "name": "Kepulauan Faroe"
+ },
+ "FK": {
+ "name": "Kepulauan Malvinas"
+ },
+ "MP": {
+ "name": "Kepulauan Mariana Utara"
+ },
+ "MH": {
+ "name": "Kepulauan Marshall"
+ },
+ "NF": {
+ "name": "Kepulauan Norfolk"
+ },
+ "PN": {
+ "name": "Kepulauan Pitcairn"
+ },
+ "SB": {
+ "name": "Kepulauan Solomon"
+ },
+ "SJ": {
+ "name": "Kepulauan Svalbard dan Jan Mayen"
+ },
+ "UM": {
+ "name": "Kepulauan Terluar A.S."
+ },
+ "TC": {
+ "name": "Kepulauan Turks dan Caicos"
+ },
+ "VI": {
+ "name": "Kepulauan Virgin A.S."
+ },
+ "VG": {
+ "name": "Kepulauan Virgin Inggris"
+ },
+ "WF": {
+ "name": "Kepulauan Wallis dan Futuna"
+ },
+ "KG": {
+ "name": "Kirgistan"
+ },
+ "KI": {
+ "name": "Kiribati"
+ },
+ "CO": {
+ "name": "Kolombia"
+ },
+ "KM": {
+ "name": "Komoro"
+ },
+ "CG": {
+ "name": "Kongo - Brazzaville"
+ },
+ "CD": {
+ "name": "Kongo - Kinshasa"
+ },
+ "KR": {
+ "name": "Korea Selatan"
+ },
+ "KP": {
+ "name": "Korea Utara"
+ },
+ "XK": {
+ "name": "Kosovo"
+ },
+ "CR": {
+ "name": "Kosta Rika"
+ },
+ "HR": {
+ "name": "Kroasia"
+ },
+ "CU": {
+ "name": "Kuba"
+ },
+ "KW": {
+ "name": "Kuwait"
+ },
+ "LA": {
+ "name": "Laos"
+ },
+ "LV": {
+ "name": "Latvia"
+ },
+ "LB": {
+ "name": "Lebanon"
+ },
+ "LS": {
+ "name": "Lesotho"
+ },
+ "LR": {
+ "name": "Liberia"
+ },
+ "LY": {
+ "name": "Libia"
+ },
+ "LI": {
+ "name": "Liechtenstein"
+ },
+ "LT": {
+ "name": "Lituania"
+ },
+ "LU": {
+ "name": "Luksemburg"
+ },
+ "MG": {
+ "name": "Madagaskar"
+ },
+ "MO": {
+ "name": "Makau SAR China"
+ },
+ "MK": {
+ "name": "Makedonia"
+ },
+ "MV": {
+ "name": "Maladewa"
+ },
+ "MW": {
+ "name": "Malawi"
+ },
+ "MY": {
+ "name": "Malaysia"
+ },
+ "ML": {
+ "name": "Mali"
+ },
+ "MT": {
+ "name": "Malta"
+ },
+ "MA": {
+ "name": "Maroko"
+ },
+ "MQ": {
+ "name": "Martinik"
+ },
+ "MR": {
+ "name": "Mauritania"
+ },
+ "MU": {
+ "name": "Mauritius"
+ },
+ "YT": {
+ "name": "Mayotte"
+ },
+ "MX": {
+ "name": "Meksiko"
+ },
+ "EG": {
+ "name": "Mesir"
+ },
+ "FM": {
+ "name": "Mikronesia"
+ },
+ "MD": {
+ "name": "Moldova"
+ },
+ "MC": {
+ "name": "Monako"
+ },
+ "MN": {
+ "name": "Mongolia"
+ },
+ "ME": {
+ "name": "Montenegro"
+ },
+ "MS": {
+ "name": "Montserrat"
+ },
+ "MZ": {
+ "name": "Mozambik"
+ },
+ "MM": {
+ "name": "Myanmar (Burma)"
+ },
+ "NA": {
+ "name": "Namibia"
+ },
+ "NR": {
+ "name": "Nauru"
+ },
+ "NP": {
+ "name": "Nepal"
+ },
+ "NE": {
+ "name": "Niger"
+ },
+ "NG": {
+ "name": "Nigeria"
+ },
+ "NI": {
+ "name": "Nikaragua"
+ },
+ "NU": {
+ "name": "Niue"
+ },
+ "NO": {
+ "name": "Norwegia"
+ },
+ "OM": {
+ "name": "Oman"
+ },
+ "PK": {
+ "name": "Pakistan"
+ },
+ "PW": {
+ "name": "Palau"
+ },
+ "PA": {
+ "name": "Panama"
+ },
+ "PG": {
+ "name": "Papua Nugini"
+ },
+ "PY": {
+ "name": "Paraguay"
+ },
+ "PE": {
+ "name": "Peru"
+ },
+ "PL": {
+ "name": "Polandia"
+ },
+ "PF": {
+ "name": "Polinesia Prancis"
+ },
+ "PT": {
+ "name": "Portugal"
+ },
+ "FR": {
+ "name": "Prancis"
+ },
+ "PR": {
+ "name": "Puerto Riko"
+ },
+ "AC": {
+ "name": "Pulau Ascension"
+ },
+ "CX": {
+ "name": "Pulau Christmas"
+ },
+ "IM": {
+ "name": "Pulau Man"
+ },
+ "QA": {
+ "name": "Qatar"
+ },
+ "CF": {
+ "name": "Republik Afrika Tengah"
+ },
+ "CZ": {
+ "name": "Republik Cheska"
+ },
+ "DO": {
+ "name": "Republik Dominika"
+ },
+ "RE": {
+ "name": "Réunion"
+ },
+ "RO": {
+ "name": "Rumania"
+ },
+ "RU": {
+ "name": "Rusia"
+ },
+ "RW": {
+ "name": "Rwanda"
+ },
+ "EH": {
+ "name": "Sahara Barat"
+ },
+ "BL": {
+ "name": "Saint Barthelemy"
+ },
+ "SH": {
+ "name": "Saint Helena"
+ },
+ "KN": {
+ "name": "Saint Kitts dan Nevis"
+ },
+ "LC": {
+ "name": "Saint Lucia"
+ },
+ "MF": {
+ "name": "Saint Martin"
+ },
+ "PM": {
+ "name": "Saint Pierre dan Miquelon"
+ },
+ "VC": {
+ "name": "Saint Vincent dan Grenadines"
+ },
+ "WS": {
+ "name": "Samoa"
+ },
+ "AS": {
+ "name": "Samoa Amerika"
+ },
+ "SM": {
+ "name": "San Marino"
+ },
+ "ST": {
+ "name": "Sao Tome dan Principe"
+ },
+ "NZ": {
+ "name": "Selandia Baru"
+ },
+ "SN": {
+ "name": "Senegal"
+ },
+ "RS": {
+ "name": "Serbia"
+ },
+ "SC": {
+ "name": "Seychelles"
+ },
+ "SL": {
+ "name": "Sierra Leone"
+ },
+ "SG": {
+ "name": "Singapura"
+ },
+ "SX": {
+ "name": "Sint Maarten"
+ },
+ "CY": {
+ "name": "Siprus"
+ },
+ "SK": {
+ "name": "Slovakia"
+ },
+ "SI": {
+ "name": "Slovenia"
+ },
+ "SO": {
+ "name": "Somalia"
+ },
+ "ES": {
+ "name": "Spanyol"
+ },
+ "LK": {
+ "name": "Sri Lanka"
+ },
+ "SD": {
+ "name": "Sudan"
+ },
+ "SS": {
+ "name": "Sudan Selatan"
+ },
+ "SY": {
+ "name": "Suriah"
+ },
+ "SR": {
+ "name": "Suriname"
+ },
+ "SZ": {
+ "name": "Swaziland"
+ },
+ "SE": {
+ "name": "Swedia"
+ },
+ "CH": {
+ "name": "Swiss"
+ },
+ "TW": {
+ "name": "Taiwan"
+ },
+ "TJ": {
+ "name": "Tajikistan"
+ },
+ "CV": {
+ "name": "Tanjung Verde"
+ },
+ "TZ": {
+ "name": "Tanzania"
+ },
+ "TH": {
+ "name": "Thailand"
+ },
+ "TL": {
+ "name": "Timor Leste"
+ },
+ "TG": {
+ "name": "Togo"
+ },
+ "TK": {
+ "name": "Tokelau"
+ },
+ "TO": {
+ "name": "Tonga"
+ },
+ "TT": {
+ "name": "Trinidad dan Tobago"
+ },
+ "TA": {
+ "name": "Tristan da Cunha"
+ },
+ "TN": {
+ "name": "Tunisia"
+ },
+ "TR": {
+ "name": "Turki"
+ },
+ "TM": {
+ "name": "Turkimenistan"
+ },
+ "TV": {
+ "name": "Tuvalu"
+ },
+ "UG": {
+ "name": "Uganda"
+ },
+ "UA": {
+ "name": "Ukraina"
+ },
+ "AE": {
+ "name": "Uni Emirat Arab"
+ },
+ "UY": {
+ "name": "Uruguay"
+ },
+ "UZ": {
+ "name": "Uzbekistan"
+ },
+ "VU": {
+ "name": "Vanuatu"
+ },
+ "VA": {
+ "name": "Vatikan"
+ },
+ "VE": {
+ "name": "Venezuela"
+ },
+ "VN": {
+ "name": "Vietnam"
+ },
+ "IO": {
+ "name": "Wilayah Inggris di Samudra Hindia"
+ },
+ "TF": {
+ "name": "Wilayah Kutub Selatan Prancis"
+ },
+ "PS": {
+ "name": "Wilayah Palestina"
+ },
+ "YE": {
+ "name": "Yaman"
+ },
+ "JO": {
+ "name": "Yordania"
+ },
+ "GR": {
+ "name": "Yunani"
+ },
+ "ZM": {
+ "name": "Zambia"
+ },
+ "ZW": {
+ "name": "Zimbabwe"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/country/is.json b/library/intl/resources/country/is.json
new file mode 100644
index 000000000..00b3c4b7c
--- /dev/null
+++ b/library/intl/resources/country/is.json
@@ -0,0 +1,761 @@
+{
+ "AF": {
+ "name": "Afganistan"
+ },
+ "AL": {
+ "name": "Albanía"
+ },
+ "DZ": {
+ "name": "Alsír"
+ },
+ "AD": {
+ "name": "Andorra"
+ },
+ "AO": {
+ "name": "Angóla"
+ },
+ "AI": {
+ "name": "Angvilla"
+ },
+ "AG": {
+ "name": "Antígva og Barbúda"
+ },
+ "AR": {
+ "name": "Argentína"
+ },
+ "AM": {
+ "name": "Armenía"
+ },
+ "AW": {
+ "name": "Arúba"
+ },
+ "AC": {
+ "name": "Ascension-eyja"
+ },
+ "AZ": {
+ "name": "Aserbaídsjan"
+ },
+ "AT": {
+ "name": "Austurríki"
+ },
+ "AX": {
+ "name": "Ãlandseyjar"
+ },
+ "AU": {
+ "name": "Ãstralía"
+ },
+ "BS": {
+ "name": "Bahamaeyjar"
+ },
+ "US": {
+ "name": "Bandaríkin"
+ },
+ "AS": {
+ "name": "Bandaríska Samóa"
+ },
+ "VI": {
+ "name": "Bandarísku Jómfrúaeyjar"
+ },
+ "BD": {
+ "name": "Bangladess"
+ },
+ "BB": {
+ "name": "Barbados"
+ },
+ "BH": {
+ "name": "Barein"
+ },
+ "BE": {
+ "name": "Belgía"
+ },
+ "BZ": {
+ "name": "Belís"
+ },
+ "BJ": {
+ "name": "Benín"
+ },
+ "BM": {
+ "name": "Bermúdaeyjar"
+ },
+ "BA": {
+ "name": "Bosnía og Hersegóvína"
+ },
+ "BW": {
+ "name": "Botsvana"
+ },
+ "BO": {
+ "name": "Bólivía"
+ },
+ "BR": {
+ "name": "Brasilía"
+ },
+ "IO": {
+ "name": "Bresku Indlandshafseyjar"
+ },
+ "VG": {
+ "name": "Bresku Jómfrúaeyjar"
+ },
+ "GB": {
+ "name": "Bretland"
+ },
+ "BN": {
+ "name": "Brúnei"
+ },
+ "BG": {
+ "name": "Búlgaría"
+ },
+ "BF": {
+ "name": "Búrkína Fasó"
+ },
+ "BI": {
+ "name": "Búrúndí"
+ },
+ "BT": {
+ "name": "Bútan"
+ },
+ "KY": {
+ "name": "Caymaneyjar"
+ },
+ "EA": {
+ "name": "Ceuta og Melilla"
+ },
+ "CK": {
+ "name": "Cooks-eyjar"
+ },
+ "CW": {
+ "name": "Curacao"
+ },
+ "DK": {
+ "name": "Danmörk"
+ },
+ "DG": {
+ "name": "Diego Garcia"
+ },
+ "DJ": {
+ "name": "Djíbútí"
+ },
+ "DM": {
+ "name": "Dóminíka"
+ },
+ "DO": {
+ "name": "Dóminíska lýðveldið"
+ },
+ "EG": {
+ "name": "Egyptaland"
+ },
+ "EE": {
+ "name": "Eistland"
+ },
+ "EC": {
+ "name": "Ekvador"
+ },
+ "SV": {
+ "name": "El Salvador"
+ },
+ "ER": {
+ "name": "Erítrea"
+ },
+ "ET": {
+ "name": "Eþíópía"
+ },
+ "FK": {
+ "name": "Falklandseyjar"
+ },
+ "PH": {
+ "name": "Filippseyjar"
+ },
+ "FI": {
+ "name": "Finnland"
+ },
+ "FJ": {
+ "name": "Fídjieyjar"
+ },
+ "CI": {
+ "name": "Fílabeinsströndin"
+ },
+ "FR": {
+ "name": "Frakkland"
+ },
+ "GF": {
+ "name": "Franska Gvæjana"
+ },
+ "PF": {
+ "name": "Franska Pólýnesía"
+ },
+ "TF": {
+ "name": "Frönsku suðlægu landsvæðin"
+ },
+ "FO": {
+ "name": "Færeyjar"
+ },
+ "GA": {
+ "name": "Gabon"
+ },
+ "GM": {
+ "name": "Gambía"
+ },
+ "GH": {
+ "name": "Gana"
+ },
+ "GE": {
+ "name": "Georgía"
+ },
+ "GI": {
+ "name": "Gíbraltar"
+ },
+ "GN": {
+ "name": "Gínea"
+ },
+ "GW": {
+ "name": "Gínea-Bissá"
+ },
+ "GD": {
+ "name": "Grenada"
+ },
+ "GR": {
+ "name": "Grikkland"
+ },
+ "CV": {
+ "name": "Grænhöfðaeyjar"
+ },
+ "GL": {
+ "name": "Grænland"
+ },
+ "GG": {
+ "name": "Guernsey"
+ },
+ "GP": {
+ "name": "Gvadelúpeyjar"
+ },
+ "GU": {
+ "name": "Gvam"
+ },
+ "GT": {
+ "name": "Gvatemala"
+ },
+ "GY": {
+ "name": "Gvæjana"
+ },
+ "HT": {
+ "name": "Haítí"
+ },
+ "PS": {
+ "name": "Heimastjórnarsvæði Palestínumanna"
+ },
+ "NL": {
+ "name": "Holland"
+ },
+ "HN": {
+ "name": "Hondúras"
+ },
+ "BY": {
+ "name": "Hvíta-Rússland"
+ },
+ "IN": {
+ "name": "Indland"
+ },
+ "ID": {
+ "name": "Indónesía"
+ },
+ "IQ": {
+ "name": "Ãrak"
+ },
+ "IR": {
+ "name": "Ãran"
+ },
+ "IE": {
+ "name": "Ãrland"
+ },
+ "IS": {
+ "name": "Ãsland"
+ },
+ "IL": {
+ "name": "Ãsrael"
+ },
+ "IT": {
+ "name": "Ãtalía"
+ },
+ "JM": {
+ "name": "Jamaíka"
+ },
+ "JP": {
+ "name": "Japan"
+ },
+ "YE": {
+ "name": "Jemen"
+ },
+ "JE": {
+ "name": "Jersey"
+ },
+ "CX": {
+ "name": "Jólaey"
+ },
+ "JO": {
+ "name": "Jórdanía"
+ },
+ "KH": {
+ "name": "Kambódía"
+ },
+ "CM": {
+ "name": "Kamerún"
+ },
+ "CA": {
+ "name": "Kanada"
+ },
+ "IC": {
+ "name": "Kanaríeyjar"
+ },
+ "BQ": {
+ "name": "Karíbahafshluti Hollands"
+ },
+ "KZ": {
+ "name": "Kasakstan"
+ },
+ "QA": {
+ "name": "Katar"
+ },
+ "KE": {
+ "name": "Kenía"
+ },
+ "KG": {
+ "name": "Kirgistan"
+ },
+ "CN": {
+ "name": "Kína"
+ },
+ "KI": {
+ "name": "Kíribatí"
+ },
+ "CG": {
+ "name": "Kongó-Brazzaville"
+ },
+ "CD": {
+ "name": "Kongó-Kinshasa"
+ },
+ "CR": {
+ "name": "Kostaríka"
+ },
+ "CC": {
+ "name": "Kókoseyjar (Keeling)"
+ },
+ "CO": {
+ "name": "Kólumbía"
+ },
+ "KM": {
+ "name": "Kómoreyjar"
+ },
+ "XK": {
+ "name": "Kósóvó"
+ },
+ "HR": {
+ "name": "Króatía"
+ },
+ "CU": {
+ "name": "Kúba"
+ },
+ "KW": {
+ "name": "Kúveit"
+ },
+ "CY": {
+ "name": "Kýpur"
+ },
+ "LA": {
+ "name": "Laos"
+ },
+ "LS": {
+ "name": "Lesótó"
+ },
+ "LV": {
+ "name": "Lettland"
+ },
+ "LI": {
+ "name": "Liechtenstein"
+ },
+ "LT": {
+ "name": "Litháen"
+ },
+ "LB": {
+ "name": "Líbanon"
+ },
+ "LR": {
+ "name": "Líbería"
+ },
+ "LY": {
+ "name": "Líbía"
+ },
+ "LU": {
+ "name": "Lúxemborg"
+ },
+ "MG": {
+ "name": "Madagaskar"
+ },
+ "MK": {
+ "name": "Makedónía"
+ },
+ "MY": {
+ "name": "Malasía"
+ },
+ "MW": {
+ "name": "Malaví"
+ },
+ "MV": {
+ "name": "Maldíveyjar"
+ },
+ "ML": {
+ "name": "Malí"
+ },
+ "MT": {
+ "name": "Malta"
+ },
+ "MA": {
+ "name": "Marokkó"
+ },
+ "MH": {
+ "name": "Marshalleyjar"
+ },
+ "MQ": {
+ "name": "Martiník"
+ },
+ "YT": {
+ "name": "Mayotte"
+ },
+ "MR": {
+ "name": "Máritanía"
+ },
+ "MU": {
+ "name": "Máritíus"
+ },
+ "MX": {
+ "name": "Mexíkó"
+ },
+ "CF": {
+ "name": "Mið-Afríkulýðveldið"
+ },
+ "GQ": {
+ "name": "Miðbaugs-Gínea"
+ },
+ "FM": {
+ "name": "Míkrónesía"
+ },
+ "MM": {
+ "name": "Mjanmar (Búrma)"
+ },
+ "MD": {
+ "name": "Moldóva"
+ },
+ "MN": {
+ "name": "Mongólía"
+ },
+ "MS": {
+ "name": "Montserrat"
+ },
+ "MC": {
+ "name": "Mónakó"
+ },
+ "MZ": {
+ "name": "Mósambík"
+ },
+ "IM": {
+ "name": "Mön"
+ },
+ "NA": {
+ "name": "Namibía"
+ },
+ "NR": {
+ "name": "Nárú"
+ },
+ "NP": {
+ "name": "Nepal"
+ },
+ "NU": {
+ "name": "Niue"
+ },
+ "NE": {
+ "name": "Níger"
+ },
+ "NG": {
+ "name": "Nígería"
+ },
+ "NI": {
+ "name": "Níkaragva"
+ },
+ "KP": {
+ "name": "Norður-Kórea"
+ },
+ "MP": {
+ "name": "Norður-Maríanaeyjar"
+ },
+ "NO": {
+ "name": "Noregur"
+ },
+ "NF": {
+ "name": "Norfolkeyja"
+ },
+ "NC": {
+ "name": "Nýja-Kaledónía"
+ },
+ "NZ": {
+ "name": "Nýja-Sjáland"
+ },
+ "OM": {
+ "name": "Óman"
+ },
+ "PK": {
+ "name": "Pakistan"
+ },
+ "PW": {
+ "name": "Palá"
+ },
+ "PA": {
+ "name": "Panama"
+ },
+ "PG": {
+ "name": "Papúa Nýja-Gínea"
+ },
+ "PY": {
+ "name": "Paragvæ"
+ },
+ "PE": {
+ "name": "Perú"
+ },
+ "PN": {
+ "name": "Pitcairn-eyjar"
+ },
+ "PT": {
+ "name": "Portúgal"
+ },
+ "PL": {
+ "name": "Pólland"
+ },
+ "PR": {
+ "name": "Púertó Ríkó"
+ },
+ "RE": {
+ "name": "Réunion"
+ },
+ "RW": {
+ "name": "Rúanda"
+ },
+ "RO": {
+ "name": "Rúmenía"
+ },
+ "RU": {
+ "name": "Rússland"
+ },
+ "BL": {
+ "name": "Saint Barthélemy"
+ },
+ "MF": {
+ "name": "Saint Martin"
+ },
+ "SB": {
+ "name": "Salómonseyjar"
+ },
+ "ZM": {
+ "name": "Sambía"
+ },
+ "AE": {
+ "name": "Sameinuðu arabísku furstadæmin"
+ },
+ "WS": {
+ "name": "Samóa"
+ },
+ "SM": {
+ "name": "San Marínó"
+ },
+ "SH": {
+ "name": "Sankti Helena"
+ },
+ "KN": {
+ "name": "Sankti Kitts og Nevis"
+ },
+ "LC": {
+ "name": "Sankti Lúsía"
+ },
+ "PM": {
+ "name": "Sankti Pierre og Miquelon"
+ },
+ "VC": {
+ "name": "Sankti Vinsent og Grenadíneyjar"
+ },
+ "ST": {
+ "name": "Saó Tóme og Prinsípe"
+ },
+ "SA": {
+ "name": "Sádi-Arabía"
+ },
+ "SN": {
+ "name": "Senegal"
+ },
+ "RS": {
+ "name": "Serbía"
+ },
+ "SC": {
+ "name": "Seychelles-eyjar"
+ },
+ "ZW": {
+ "name": "Simbabve"
+ },
+ "SG": {
+ "name": "Singapúr"
+ },
+ "SX": {
+ "name": "Sint Maarten"
+ },
+ "SL": {
+ "name": "Síerra Leóne"
+ },
+ "CL": {
+ "name": "Síle"
+ },
+ "HK": {
+ "name": "Sjálfstjórnarsvæðið Hong Kong"
+ },
+ "MO": {
+ "name": "Sjálfstjórnarsvæðið Makaó"
+ },
+ "SK": {
+ "name": "Slóvakía"
+ },
+ "SI": {
+ "name": "Slóvenía"
+ },
+ "UM": {
+ "name": "Smáeyjar Bandaríkjanna"
+ },
+ "SO": {
+ "name": "Sómalía"
+ },
+ "ES": {
+ "name": "Spánn"
+ },
+ "LK": {
+ "name": "Srí Lanka"
+ },
+ "ZA": {
+ "name": "Suður-Afríka"
+ },
+ "GS": {
+ "name": "Suður-Georgía og Suður-Sandvíkureyjar"
+ },
+ "KR": {
+ "name": "Suður-Kórea"
+ },
+ "SS": {
+ "name": "Suður-Súdan"
+ },
+ "AQ": {
+ "name": "Suðurskautslandið"
+ },
+ "SD": {
+ "name": "Súdan"
+ },
+ "SR": {
+ "name": "Súrínam"
+ },
+ "SJ": {
+ "name": "Svalbarði og Jan Mayen"
+ },
+ "ME": {
+ "name": "Svartfjallaland"
+ },
+ "SZ": {
+ "name": "Svasíland"
+ },
+ "CH": {
+ "name": "Sviss"
+ },
+ "SE": {
+ "name": "Svíþjóð"
+ },
+ "SY": {
+ "name": "Sýrland"
+ },
+ "TJ": {
+ "name": "Tadsjikistan"
+ },
+ "TH": {
+ "name": "Taíland"
+ },
+ "TW": {
+ "name": "Taívan"
+ },
+ "TZ": {
+ "name": "Tansanía"
+ },
+ "CZ": {
+ "name": "Tékkland"
+ },
+ "TL": {
+ "name": "Tímor-Leste"
+ },
+ "TO": {
+ "name": "Tonga"
+ },
+ "TG": {
+ "name": "Tógó"
+ },
+ "TK": {
+ "name": "Tókelá"
+ },
+ "TA": {
+ "name": "Tristan da Cunha"
+ },
+ "TT": {
+ "name": "Trínidad og Tóbagó"
+ },
+ "TD": {
+ "name": "Tsjad"
+ },
+ "TC": {
+ "name": "Turks- og Caicoseyjar"
+ },
+ "TN": {
+ "name": "Túnis"
+ },
+ "TM": {
+ "name": "Túrkmenistan"
+ },
+ "TV": {
+ "name": "Túvalú"
+ },
+ "TR": {
+ "name": "Tyrkland"
+ },
+ "HU": {
+ "name": "Ungverjaland"
+ },
+ "UG": {
+ "name": "Úganda"
+ },
+ "UA": {
+ "name": "Úkraína"
+ },
+ "UY": {
+ "name": "Úrúgvæ"
+ },
+ "UZ": {
+ "name": "Úsbekistan"
+ },
+ "VU": {
+ "name": "Vanúatú"
+ },
+ "VA": {
+ "name": "Vatíkanið"
+ },
+ "VE": {
+ "name": "Venesúela"
+ },
+ "EH": {
+ "name": "Vestur-Sahara"
+ },
+ "VN": {
+ "name": "Víetnam"
+ },
+ "WF": {
+ "name": "Wallis- og Fútúnaeyjar"
+ },
+ "DE": {
+ "name": "Þýskaland"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/country/it.json b/library/intl/resources/country/it.json
new file mode 100644
index 000000000..779d0b18d
--- /dev/null
+++ b/library/intl/resources/country/it.json
@@ -0,0 +1,761 @@
+{
+ "AF": {
+ "name": "Afghanistan"
+ },
+ "AL": {
+ "name": "Albania"
+ },
+ "DZ": {
+ "name": "Algeria"
+ },
+ "AD": {
+ "name": "Andorra"
+ },
+ "AO": {
+ "name": "Angola"
+ },
+ "AI": {
+ "name": "Anguilla"
+ },
+ "AQ": {
+ "name": "Antartide"
+ },
+ "AG": {
+ "name": "Antigua e Barbuda"
+ },
+ "SA": {
+ "name": "Arabia Saudita"
+ },
+ "AR": {
+ "name": "Argentina"
+ },
+ "AM": {
+ "name": "Armenia"
+ },
+ "AW": {
+ "name": "Aruba"
+ },
+ "AU": {
+ "name": "Australia"
+ },
+ "AT": {
+ "name": "Austria"
+ },
+ "AZ": {
+ "name": "Azerbaigian"
+ },
+ "BS": {
+ "name": "Bahamas"
+ },
+ "BH": {
+ "name": "Bahrein"
+ },
+ "BD": {
+ "name": "Bangladesh"
+ },
+ "BB": {
+ "name": "Barbados"
+ },
+ "BE": {
+ "name": "Belgio"
+ },
+ "BZ": {
+ "name": "Belize"
+ },
+ "BJ": {
+ "name": "Benin"
+ },
+ "BM": {
+ "name": "Bermuda"
+ },
+ "BT": {
+ "name": "Bhutan"
+ },
+ "BY": {
+ "name": "Bielorussia"
+ },
+ "BO": {
+ "name": "Bolivia"
+ },
+ "BA": {
+ "name": "Bosnia-Erzegovina"
+ },
+ "BW": {
+ "name": "Botswana"
+ },
+ "BR": {
+ "name": "Brasile"
+ },
+ "BN": {
+ "name": "Brunei"
+ },
+ "BG": {
+ "name": "Bulgaria"
+ },
+ "BF": {
+ "name": "Burkina Faso"
+ },
+ "BI": {
+ "name": "Burundi"
+ },
+ "KH": {
+ "name": "Cambogia"
+ },
+ "CM": {
+ "name": "Camerun"
+ },
+ "CA": {
+ "name": "Canada"
+ },
+ "CV": {
+ "name": "Capo Verde"
+ },
+ "BQ": {
+ "name": "Caraibi Olandesi"
+ },
+ "EA": {
+ "name": "Ceuta e Melilla"
+ },
+ "TD": {
+ "name": "Ciad"
+ },
+ "CL": {
+ "name": "Cile"
+ },
+ "CN": {
+ "name": "Cina"
+ },
+ "CY": {
+ "name": "Cipro"
+ },
+ "VA": {
+ "name": "Città del Vaticano"
+ },
+ "CO": {
+ "name": "Colombia"
+ },
+ "KM": {
+ "name": "Comore"
+ },
+ "CD": {
+ "name": "Congo - Kinshasa"
+ },
+ "CG": {
+ "name": "Congo-Brazzaville"
+ },
+ "KP": {
+ "name": "Corea del Nord"
+ },
+ "KR": {
+ "name": "Corea del Sud"
+ },
+ "CI": {
+ "name": "Costa d’Avorio"
+ },
+ "CR": {
+ "name": "Costa Rica"
+ },
+ "HR": {
+ "name": "Croazia"
+ },
+ "CU": {
+ "name": "Cuba"
+ },
+ "CW": {
+ "name": "Curaçao"
+ },
+ "DK": {
+ "name": "Danimarca"
+ },
+ "DG": {
+ "name": "Diego Garcia"
+ },
+ "DM": {
+ "name": "Dominica"
+ },
+ "EC": {
+ "name": "Ecuador"
+ },
+ "EG": {
+ "name": "Egitto"
+ },
+ "SV": {
+ "name": "El Salvador"
+ },
+ "AE": {
+ "name": "Emirati Arabi Uniti"
+ },
+ "ER": {
+ "name": "Eritrea"
+ },
+ "EE": {
+ "name": "Estonia"
+ },
+ "ET": {
+ "name": "Etiopia"
+ },
+ "RU": {
+ "name": "Federazione Russa"
+ },
+ "FJ": {
+ "name": "Figi"
+ },
+ "PH": {
+ "name": "Filippine"
+ },
+ "FI": {
+ "name": "Finlandia"
+ },
+ "FR": {
+ "name": "Francia"
+ },
+ "GA": {
+ "name": "Gabon"
+ },
+ "GM": {
+ "name": "Gambia"
+ },
+ "GE": {
+ "name": "Georgia"
+ },
+ "GS": {
+ "name": "Georgia del Sud e isole Sandwich meridionali"
+ },
+ "DE": {
+ "name": "Germania"
+ },
+ "GH": {
+ "name": "Ghana"
+ },
+ "JM": {
+ "name": "Giamaica"
+ },
+ "JP": {
+ "name": "Giappone"
+ },
+ "GI": {
+ "name": "Gibilterra"
+ },
+ "DJ": {
+ "name": "Gibuti"
+ },
+ "JO": {
+ "name": "Giordania"
+ },
+ "GR": {
+ "name": "Grecia"
+ },
+ "GD": {
+ "name": "Grenada"
+ },
+ "GL": {
+ "name": "Groenlandia"
+ },
+ "GP": {
+ "name": "Guadalupa"
+ },
+ "GU": {
+ "name": "Guam"
+ },
+ "GT": {
+ "name": "Guatemala"
+ },
+ "GG": {
+ "name": "Guernsey"
+ },
+ "GF": {
+ "name": "Guiana Francese"
+ },
+ "GN": {
+ "name": "Guinea"
+ },
+ "GQ": {
+ "name": "Guinea Equatoriale"
+ },
+ "GW": {
+ "name": "Guinea-Bissau"
+ },
+ "GY": {
+ "name": "Guyana"
+ },
+ "HT": {
+ "name": "Haiti"
+ },
+ "HN": {
+ "name": "Honduras"
+ },
+ "IN": {
+ "name": "India"
+ },
+ "ID": {
+ "name": "Indonesia"
+ },
+ "IR": {
+ "name": "Iran"
+ },
+ "IQ": {
+ "name": "Iraq"
+ },
+ "IE": {
+ "name": "Irlanda"
+ },
+ "IS": {
+ "name": "Islanda"
+ },
+ "AC": {
+ "name": "Isola di Ascensione"
+ },
+ "CX": {
+ "name": "Isola di Christmas"
+ },
+ "IM": {
+ "name": "Isola di Man"
+ },
+ "NF": {
+ "name": "Isola Norfolk"
+ },
+ "AX": {
+ "name": "Isole Aland"
+ },
+ "IC": {
+ "name": "Isole Canarie"
+ },
+ "KY": {
+ "name": "Isole Cayman"
+ },
+ "CC": {
+ "name": "Isole Cocos"
+ },
+ "CK": {
+ "name": "Isole Cook"
+ },
+ "FK": {
+ "name": "Isole Falkland"
+ },
+ "FO": {
+ "name": "Isole Faroe"
+ },
+ "MP": {
+ "name": "Isole Marianne Settentrionali"
+ },
+ "MH": {
+ "name": "Isole Marshall"
+ },
+ "UM": {
+ "name": "Isole minori lontane dagli USA"
+ },
+ "PN": {
+ "name": "Isole Pitcairn"
+ },
+ "SB": {
+ "name": "Isole Solomon"
+ },
+ "TC": {
+ "name": "Isole Turks e Caicos"
+ },
+ "VI": {
+ "name": "Isole Vergini Americane"
+ },
+ "VG": {
+ "name": "Isole Vergini Britanniche"
+ },
+ "IL": {
+ "name": "Israele"
+ },
+ "IT": {
+ "name": "Italia"
+ },
+ "JE": {
+ "name": "Jersey"
+ },
+ "KZ": {
+ "name": "Kazakistan"
+ },
+ "KE": {
+ "name": "Kenya"
+ },
+ "KG": {
+ "name": "Kirghizistan"
+ },
+ "KI": {
+ "name": "Kiribati"
+ },
+ "XK": {
+ "name": "Kosovo"
+ },
+ "KW": {
+ "name": "Kuwait"
+ },
+ "LA": {
+ "name": "Laos"
+ },
+ "LS": {
+ "name": "Lesotho"
+ },
+ "LV": {
+ "name": "Lettonia"
+ },
+ "LB": {
+ "name": "Libano"
+ },
+ "LR": {
+ "name": "Liberia"
+ },
+ "LY": {
+ "name": "Libia"
+ },
+ "LI": {
+ "name": "Liechtenstein"
+ },
+ "LT": {
+ "name": "Lituania"
+ },
+ "LU": {
+ "name": "Lussemburgo"
+ },
+ "MG": {
+ "name": "Madagascar"
+ },
+ "MW": {
+ "name": "Malawi"
+ },
+ "MV": {
+ "name": "Maldive"
+ },
+ "MY": {
+ "name": "Malesia"
+ },
+ "ML": {
+ "name": "Mali"
+ },
+ "MT": {
+ "name": "Malta"
+ },
+ "MA": {
+ "name": "Marocco"
+ },
+ "MQ": {
+ "name": "Martinica"
+ },
+ "MR": {
+ "name": "Mauritania"
+ },
+ "MU": {
+ "name": "Mauritius"
+ },
+ "YT": {
+ "name": "Mayotte"
+ },
+ "MX": {
+ "name": "Messico"
+ },
+ "FM": {
+ "name": "Micronesia"
+ },
+ "MD": {
+ "name": "Moldavia"
+ },
+ "MC": {
+ "name": "Monaco"
+ },
+ "MN": {
+ "name": "Mongolia"
+ },
+ "ME": {
+ "name": "Montenegro"
+ },
+ "MS": {
+ "name": "Montserrat"
+ },
+ "MZ": {
+ "name": "Mozambico"
+ },
+ "MM": {
+ "name": "Myanmar (Birmania)"
+ },
+ "NA": {
+ "name": "Namibia"
+ },
+ "NR": {
+ "name": "Nauru"
+ },
+ "NP": {
+ "name": "Nepal"
+ },
+ "NI": {
+ "name": "Nicaragua"
+ },
+ "NE": {
+ "name": "Niger"
+ },
+ "NG": {
+ "name": "Nigeria"
+ },
+ "NU": {
+ "name": "Niue"
+ },
+ "NO": {
+ "name": "Norvegia"
+ },
+ "NC": {
+ "name": "Nuova Caledonia"
+ },
+ "NZ": {
+ "name": "Nuova Zelanda"
+ },
+ "OM": {
+ "name": "Oman"
+ },
+ "NL": {
+ "name": "Paesi Bassi"
+ },
+ "PK": {
+ "name": "Pakistan"
+ },
+ "PW": {
+ "name": "Palau"
+ },
+ "PA": {
+ "name": "Panamá"
+ },
+ "PG": {
+ "name": "Papua Nuova Guinea"
+ },
+ "PY": {
+ "name": "Paraguay"
+ },
+ "PE": {
+ "name": "Perù"
+ },
+ "PF": {
+ "name": "Polinesia Francese"
+ },
+ "PL": {
+ "name": "Polonia"
+ },
+ "PT": {
+ "name": "Portogallo"
+ },
+ "PR": {
+ "name": "Portorico"
+ },
+ "QA": {
+ "name": "Qatar"
+ },
+ "HK": {
+ "name": "RAS di Hong Kong"
+ },
+ "MO": {
+ "name": "RAS di Macao"
+ },
+ "GB": {
+ "name": "Regno Unito"
+ },
+ "CZ": {
+ "name": "Repubblica Ceca"
+ },
+ "CF": {
+ "name": "Repubblica Centrafricana"
+ },
+ "MK": {
+ "name": "Repubblica di Macedonia"
+ },
+ "DO": {
+ "name": "Repubblica Dominicana"
+ },
+ "RE": {
+ "name": "Réunion"
+ },
+ "RO": {
+ "name": "Romania"
+ },
+ "RW": {
+ "name": "Ruanda"
+ },
+ "EH": {
+ "name": "Sahara Occidentale"
+ },
+ "KN": {
+ "name": "Saint Kitts e Nevis"
+ },
+ "LC": {
+ "name": "Saint Lucia"
+ },
+ "MF": {
+ "name": "Saint Martin"
+ },
+ "PM": {
+ "name": "Saint Pierre e Miquelon"
+ },
+ "VC": {
+ "name": "Saint Vincent e Grenadines"
+ },
+ "BL": {
+ "name": "Saint-Barthélemy"
+ },
+ "WS": {
+ "name": "Samoa"
+ },
+ "AS": {
+ "name": "Samoa Americane"
+ },
+ "SM": {
+ "name": "San Marino"
+ },
+ "SH": {
+ "name": "Sant’Elena"
+ },
+ "ST": {
+ "name": "São Tomé e Príncipe"
+ },
+ "SN": {
+ "name": "Senegal"
+ },
+ "RS": {
+ "name": "Serbia"
+ },
+ "SC": {
+ "name": "Seychelles"
+ },
+ "SL": {
+ "name": "Sierra Leone"
+ },
+ "SG": {
+ "name": "Singapore"
+ },
+ "SX": {
+ "name": "Sint Maarten"
+ },
+ "SY": {
+ "name": "Siria"
+ },
+ "SK": {
+ "name": "Slovacchia"
+ },
+ "SI": {
+ "name": "Slovenia"
+ },
+ "SO": {
+ "name": "Somalia"
+ },
+ "ES": {
+ "name": "Spagna"
+ },
+ "LK": {
+ "name": "Sri Lanka"
+ },
+ "US": {
+ "name": "Stati Uniti"
+ },
+ "ZA": {
+ "name": "Sudafrica"
+ },
+ "SD": {
+ "name": "Sudan"
+ },
+ "SS": {
+ "name": "Sudan del Sud"
+ },
+ "SR": {
+ "name": "Suriname"
+ },
+ "SJ": {
+ "name": "Svalbard e Jan Mayen"
+ },
+ "SE": {
+ "name": "Svezia"
+ },
+ "CH": {
+ "name": "Svizzera"
+ },
+ "SZ": {
+ "name": "Swaziland"
+ },
+ "TJ": {
+ "name": "Tagikistan"
+ },
+ "TH": {
+ "name": "Tailandia"
+ },
+ "TW": {
+ "name": "Taiwan"
+ },
+ "TZ": {
+ "name": "Tanzania"
+ },
+ "TF": {
+ "name": "Territori australi francesi"
+ },
+ "PS": {
+ "name": "Territori palestinesi"
+ },
+ "IO": {
+ "name": "Territorio Britannico dell’Oceano Indiano"
+ },
+ "TL": {
+ "name": "Timor Est"
+ },
+ "TG": {
+ "name": "Togo"
+ },
+ "TK": {
+ "name": "Tokelau"
+ },
+ "TO": {
+ "name": "Tonga"
+ },
+ "TT": {
+ "name": "Trinidad e Tobago"
+ },
+ "TA": {
+ "name": "Tristan da Cunha"
+ },
+ "TN": {
+ "name": "Tunisia"
+ },
+ "TR": {
+ "name": "Turchia"
+ },
+ "TM": {
+ "name": "Turkmenistan"
+ },
+ "TV": {
+ "name": "Tuvalu"
+ },
+ "UA": {
+ "name": "Ucraina"
+ },
+ "UG": {
+ "name": "Uganda"
+ },
+ "HU": {
+ "name": "Ungheria"
+ },
+ "UY": {
+ "name": "Uruguay"
+ },
+ "UZ": {
+ "name": "Uzbekistan"
+ },
+ "VU": {
+ "name": "Vanuatu"
+ },
+ "VE": {
+ "name": "Venezuela"
+ },
+ "VN": {
+ "name": "Vietnam"
+ },
+ "WF": {
+ "name": "Wallis e Futuna"
+ },
+ "YE": {
+ "name": "Yemen"
+ },
+ "ZM": {
+ "name": "Zambia"
+ },
+ "ZW": {
+ "name": "Zimbabwe"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/country/ja.json b/library/intl/resources/country/ja.json
new file mode 100644
index 000000000..2ba91fa11
--- /dev/null
+++ b/library/intl/resources/country/ja.json
@@ -0,0 +1,761 @@
+{
+ "IS": {
+ "name": "アイスランド"
+ },
+ "IE": {
+ "name": "アイルランド"
+ },
+ "AZ": {
+ "name": "アゼルãƒã‚¤ã‚¸ãƒ£ãƒ³"
+ },
+ "AC": {
+ "name": "アセンション島"
+ },
+ "AF": {
+ "name": "アフガニスタン"
+ },
+ "US": {
+ "name": "アメリカåˆè¡†å›½"
+ },
+ "AE": {
+ "name": "アラブ首長国連邦"
+ },
+ "DZ": {
+ "name": "アルジェリア"
+ },
+ "AR": {
+ "name": "アルゼンãƒãƒ³"
+ },
+ "AW": {
+ "name": "アルãƒ"
+ },
+ "AL": {
+ "name": "アルãƒãƒ‹ã‚¢"
+ },
+ "AM": {
+ "name": "アルメニア"
+ },
+ "AI": {
+ "name": "アンギラ"
+ },
+ "AO": {
+ "name": "アンゴラ"
+ },
+ "AG": {
+ "name": "アンティグア・ãƒãƒ¼ãƒ–ーダ"
+ },
+ "AD": {
+ "name": "アンドラ"
+ },
+ "YE": {
+ "name": "イエメン"
+ },
+ "GB": {
+ "name": "イギリス"
+ },
+ "IL": {
+ "name": "イスラエル"
+ },
+ "IT": {
+ "name": "イタリア"
+ },
+ "IQ": {
+ "name": "イラク"
+ },
+ "IR": {
+ "name": "イラン"
+ },
+ "IN": {
+ "name": "インド"
+ },
+ "ID": {
+ "name": "インドãƒã‚·ã‚¢"
+ },
+ "WF": {
+ "name": "ウォリス・フツナ"
+ },
+ "UG": {
+ "name": "ウガンダ"
+ },
+ "UA": {
+ "name": "ウクライナ"
+ },
+ "UZ": {
+ "name": "ウズベキスタン"
+ },
+ "UY": {
+ "name": "ウルグアイ"
+ },
+ "EC": {
+ "name": "エクアドル"
+ },
+ "EG": {
+ "name": "エジプト"
+ },
+ "EE": {
+ "name": "エストニア"
+ },
+ "ET": {
+ "name": "エãƒã‚ªãƒ”ã‚¢"
+ },
+ "ER": {
+ "name": "エリトリア"
+ },
+ "SV": {
+ "name": "エルサルãƒãƒ‰ãƒ«"
+ },
+ "AU": {
+ "name": "オーストラリア"
+ },
+ "AT": {
+ "name": "オーストリア"
+ },
+ "AX": {
+ "name": "オーランド諸島"
+ },
+ "OM": {
+ "name": "オマーン"
+ },
+ "NL": {
+ "name": "オランダ"
+ },
+ "BQ": {
+ "name": "オランダ領カリブ"
+ },
+ "GH": {
+ "name": "ガーナ"
+ },
+ "CV": {
+ "name": "カーボベルデ"
+ },
+ "GG": {
+ "name": "ガーンジー"
+ },
+ "GY": {
+ "name": "ガイアナ"
+ },
+ "KZ": {
+ "name": "カザフスタン"
+ },
+ "QA": {
+ "name": "カタール"
+ },
+ "CA": {
+ "name": "カナダ"
+ },
+ "IC": {
+ "name": "カナリア諸島"
+ },
+ "GA": {
+ "name": "ガボン"
+ },
+ "CM": {
+ "name": "カメルーン"
+ },
+ "GM": {
+ "name": "ガンビア"
+ },
+ "KH": {
+ "name": "カンボジア"
+ },
+ "GN": {
+ "name": "ギニア"
+ },
+ "GW": {
+ "name": "ギニアビサウ"
+ },
+ "CY": {
+ "name": "キプロス"
+ },
+ "CU": {
+ "name": "キューãƒ"
+ },
+ "CW": {
+ "name": "キュラソー"
+ },
+ "GR": {
+ "name": "ギリシャ"
+ },
+ "KI": {
+ "name": "キリãƒã‚¹"
+ },
+ "KG": {
+ "name": "キルギス"
+ },
+ "GT": {
+ "name": "グアテマラ"
+ },
+ "GP": {
+ "name": "グアドループ"
+ },
+ "GU": {
+ "name": "グアム"
+ },
+ "KW": {
+ "name": "クウェート"
+ },
+ "CK": {
+ "name": "クック諸島"
+ },
+ "GL": {
+ "name": "グリーンランド"
+ },
+ "CX": {
+ "name": "クリスマス島"
+ },
+ "GE": {
+ "name": "グルジア"
+ },
+ "GD": {
+ "name": "グレナダ"
+ },
+ "HR": {
+ "name": "クロアãƒã‚¢"
+ },
+ "KY": {
+ "name": "ケイマン諸島"
+ },
+ "KE": {
+ "name": "ケニア"
+ },
+ "CI": {
+ "name": "コートジボワール"
+ },
+ "CC": {
+ "name": "ココス(キーリング)諸島"
+ },
+ "CR": {
+ "name": "コスタリカ"
+ },
+ "XK": {
+ "name": "コソボ"
+ },
+ "KM": {
+ "name": "コモロ"
+ },
+ "CO": {
+ "name": "コロンビア"
+ },
+ "CG": {
+ "name": "コンゴ共和国(ブラザビル)"
+ },
+ "CD": {
+ "name": "コンゴ民主共和国(キンシャサ)"
+ },
+ "SA": {
+ "name": "サウジアラビア"
+ },
+ "WS": {
+ "name": "サモア"
+ },
+ "BL": {
+ "name": "サン・ãƒãƒ«ãƒ†ãƒ«ãƒŸãƒ¼å³¶"
+ },
+ "MF": {
+ "name": "サン・マルタン"
+ },
+ "ST": {
+ "name": "サントメ・プリンシペ"
+ },
+ "ZM": {
+ "name": "ザンビア"
+ },
+ "PM": {
+ "name": "サンピエール島・ミクロン島"
+ },
+ "SM": {
+ "name": "サンマリノ"
+ },
+ "SL": {
+ "name": "シエラレオãƒ"
+ },
+ "DJ": {
+ "name": "ジブãƒ"
+ },
+ "GI": {
+ "name": "ジブラルタル"
+ },
+ "JE": {
+ "name": "ジャージー"
+ },
+ "JM": {
+ "name": "ジャマイカ"
+ },
+ "SY": {
+ "name": "シリア"
+ },
+ "SG": {
+ "name": "シンガãƒãƒ¼ãƒ«"
+ },
+ "SX": {
+ "name": "シント・マールテン"
+ },
+ "ZW": {
+ "name": "ジンãƒãƒ–エ"
+ },
+ "CH": {
+ "name": "スイス"
+ },
+ "SE": {
+ "name": "スウェーデン"
+ },
+ "SD": {
+ "name": "スーダン"
+ },
+ "SJ": {
+ "name": "スãƒãƒ¼ãƒ«ãƒãƒ«è«¸å³¶ãƒ»ãƒ¤ãƒ³ãƒžã‚¤ã‚¨ãƒ³å³¶"
+ },
+ "ES": {
+ "name": "スペイン"
+ },
+ "SR": {
+ "name": "スリナム"
+ },
+ "LK": {
+ "name": "スリランカ"
+ },
+ "SK": {
+ "name": "スロãƒã‚­ã‚¢"
+ },
+ "SI": {
+ "name": "スロベニア"
+ },
+ "SZ": {
+ "name": "スワジランド"
+ },
+ "EA": {
+ "name": "セウタ・メリリャ"
+ },
+ "SC": {
+ "name": "セーシェル"
+ },
+ "SN": {
+ "name": "ã‚»ãƒã‚¬ãƒ«"
+ },
+ "RS": {
+ "name": "セルビア"
+ },
+ "KN": {
+ "name": "セントクリストファー・ãƒã‚¤ãƒ“ス"
+ },
+ "VC": {
+ "name": "セントビンセント・グレナディーン諸島"
+ },
+ "SH": {
+ "name": "セントヘレナ"
+ },
+ "LC": {
+ "name": "セントルシア"
+ },
+ "SO": {
+ "name": "ソマリア"
+ },
+ "SB": {
+ "name": "ソロモン諸島"
+ },
+ "TC": {
+ "name": "タークス・カイコス諸島"
+ },
+ "TH": {
+ "name": "タイ"
+ },
+ "TJ": {
+ "name": "タジキスタン"
+ },
+ "TZ": {
+ "name": "タンザニア"
+ },
+ "CZ": {
+ "name": "ãƒã‚§ã‚³å…±å’Œå›½"
+ },
+ "TD": {
+ "name": "ãƒãƒ£ãƒ‰"
+ },
+ "TN": {
+ "name": "ãƒãƒ¥ãƒ‹ã‚¸ã‚¢"
+ },
+ "CL": {
+ "name": "ãƒãƒª"
+ },
+ "TV": {
+ "name": "ツãƒãƒ«"
+ },
+ "DG": {
+ "name": "ディエゴガルシア島"
+ },
+ "DK": {
+ "name": "デンマーク"
+ },
+ "DE": {
+ "name": "ドイツ"
+ },
+ "TG": {
+ "name": "トーゴ"
+ },
+ "TK": {
+ "name": "トケラウ"
+ },
+ "DO": {
+ "name": "ドミニカ共和国"
+ },
+ "DM": {
+ "name": "ドミニカ国"
+ },
+ "TA": {
+ "name": "トリスタン・ダ・クーニャ"
+ },
+ "TT": {
+ "name": "トリニダード・トãƒã‚´"
+ },
+ "TM": {
+ "name": "トルクメニスタン"
+ },
+ "TR": {
+ "name": "トルコ"
+ },
+ "TO": {
+ "name": "トンガ"
+ },
+ "NG": {
+ "name": "ナイジェリア"
+ },
+ "NR": {
+ "name": "ナウル"
+ },
+ "NA": {
+ "name": "ナミビア"
+ },
+ "NU": {
+ "name": "ニウエ島"
+ },
+ "NI": {
+ "name": "ニカラグア"
+ },
+ "NE": {
+ "name": "ニジェール"
+ },
+ "NC": {
+ "name": "ニューカレドニア"
+ },
+ "NZ": {
+ "name": "ニュージーランド"
+ },
+ "NP": {
+ "name": "ãƒãƒ‘ール"
+ },
+ "NF": {
+ "name": "ノーフォーク島"
+ },
+ "NO": {
+ "name": "ノルウェー"
+ },
+ "BH": {
+ "name": "ãƒãƒ¼ãƒ¬ãƒ¼ãƒ³"
+ },
+ "HT": {
+ "name": "ãƒã‚¤ãƒ"
+ },
+ "PK": {
+ "name": "パキスタン"
+ },
+ "VA": {
+ "name": "ãƒãƒã‚«ãƒ³å¸‚国"
+ },
+ "PA": {
+ "name": "パナマ"
+ },
+ "VU": {
+ "name": "ãƒãƒŒã‚¢ãƒ„"
+ },
+ "BS": {
+ "name": "ãƒãƒãƒž"
+ },
+ "PG": {
+ "name": "パプアニューギニア"
+ },
+ "BM": {
+ "name": "ãƒãƒŸãƒ¥ãƒ¼ãƒ€"
+ },
+ "PW": {
+ "name": "パラオ"
+ },
+ "PY": {
+ "name": "パラグアイ"
+ },
+ "BB": {
+ "name": "ãƒãƒ«ãƒãƒ‰ã‚¹"
+ },
+ "PS": {
+ "name": "パレスãƒãƒŠ"
+ },
+ "HU": {
+ "name": "ãƒãƒ³ã‚¬ãƒªãƒ¼"
+ },
+ "BD": {
+ "name": "ãƒãƒ³ã‚°ãƒ©ãƒ‡ã‚·ãƒ¥"
+ },
+ "PN": {
+ "name": "ピトケアン諸島"
+ },
+ "FJ": {
+ "name": "フィジー"
+ },
+ "PH": {
+ "name": "フィリピン"
+ },
+ "FI": {
+ "name": "フィンランド"
+ },
+ "BT": {
+ "name": "ブータン"
+ },
+ "PR": {
+ "name": "プエルトリコ"
+ },
+ "FO": {
+ "name": "フェロー諸島"
+ },
+ "FK": {
+ "name": "フォークランド諸島"
+ },
+ "BR": {
+ "name": "ブラジル"
+ },
+ "FR": {
+ "name": "フランス"
+ },
+ "BG": {
+ "name": "ブルガリア"
+ },
+ "BF": {
+ "name": "ブルキナファソ"
+ },
+ "BN": {
+ "name": "ブルãƒã‚¤"
+ },
+ "BI": {
+ "name": "ブルンジ"
+ },
+ "VN": {
+ "name": "ベトナム"
+ },
+ "BJ": {
+ "name": "ベナン"
+ },
+ "VE": {
+ "name": "ベãƒã‚ºã‚¨ãƒ©"
+ },
+ "BY": {
+ "name": "ベラルーシ"
+ },
+ "BZ": {
+ "name": "ベリーズ"
+ },
+ "PE": {
+ "name": "ペルー"
+ },
+ "BE": {
+ "name": "ベルギー"
+ },
+ "PL": {
+ "name": "ãƒãƒ¼ãƒ©ãƒ³ãƒ‰"
+ },
+ "BA": {
+ "name": "ボスニア・ヘルツェゴビナ"
+ },
+ "BW": {
+ "name": "ボツワナ"
+ },
+ "BO": {
+ "name": "ボリビア"
+ },
+ "PT": {
+ "name": "ãƒãƒ«ãƒˆã‚¬ãƒ«"
+ },
+ "HN": {
+ "name": "ホンジュラス"
+ },
+ "MH": {
+ "name": "マーシャル諸島"
+ },
+ "MK": {
+ "name": "マケドニア"
+ },
+ "MG": {
+ "name": "マダガスカル"
+ },
+ "YT": {
+ "name": "マヨット島"
+ },
+ "MW": {
+ "name": "マラウイ"
+ },
+ "ML": {
+ "name": "マリ"
+ },
+ "MT": {
+ "name": "マルタ"
+ },
+ "MQ": {
+ "name": "マルティニーク"
+ },
+ "MY": {
+ "name": "マレーシア"
+ },
+ "IM": {
+ "name": "マン島"
+ },
+ "FM": {
+ "name": "ミクロãƒã‚·ã‚¢é€£é‚¦"
+ },
+ "MM": {
+ "name": "ミャンマー"
+ },
+ "MX": {
+ "name": "メキシコ"
+ },
+ "MU": {
+ "name": "モーリシャス"
+ },
+ "MR": {
+ "name": "モーリタニア"
+ },
+ "MZ": {
+ "name": "モザンビーク"
+ },
+ "MC": {
+ "name": "モナコ"
+ },
+ "MV": {
+ "name": "モルディブ"
+ },
+ "MD": {
+ "name": "モルドãƒ"
+ },
+ "MA": {
+ "name": "モロッコ"
+ },
+ "MN": {
+ "name": "モンゴル"
+ },
+ "ME": {
+ "name": "モンテãƒã‚°ãƒ­"
+ },
+ "MS": {
+ "name": "モントセラト"
+ },
+ "JO": {
+ "name": "ヨルダン"
+ },
+ "LA": {
+ "name": "ラオス"
+ },
+ "LV": {
+ "name": "ラトビア"
+ },
+ "LT": {
+ "name": "リトアニア"
+ },
+ "LY": {
+ "name": "リビア"
+ },
+ "LI": {
+ "name": "リヒテンシュタイン"
+ },
+ "LR": {
+ "name": "リベリア"
+ },
+ "RO": {
+ "name": "ルーマニア"
+ },
+ "LU": {
+ "name": "ルクセンブルグ"
+ },
+ "RW": {
+ "name": "ルワンダ"
+ },
+ "LS": {
+ "name": "レソト"
+ },
+ "LB": {
+ "name": "レãƒãƒŽãƒ³"
+ },
+ "RE": {
+ "name": "レユニオン島"
+ },
+ "RU": {
+ "name": "ロシア"
+ },
+ "IO": {
+ "name": "英領インド洋地域"
+ },
+ "VG": {
+ "name": "英領ヴァージン諸島"
+ },
+ "EH": {
+ "name": "西サãƒãƒ©"
+ },
+ "GQ": {
+ "name": "赤é“ギニア"
+ },
+ "TW": {
+ "name": "å°æ¹¾"
+ },
+ "KR": {
+ "name": "大韓民国"
+ },
+ "CF": {
+ "name": "中央アフリカ共和国"
+ },
+ "MO": {
+ "name": "中è¯äººæ°‘共和国マカオ特別行政区"
+ },
+ "HK": {
+ "name": "中è¯äººæ°‘共和国香港特別行政区"
+ },
+ "CN": {
+ "name": "中国"
+ },
+ "KP": {
+ "name": "æœé®®æ°‘主主義人民共和国"
+ },
+ "TL": {
+ "name": "æ±ãƒ†ã‚£ãƒ¢ãƒ¼ãƒ«"
+ },
+ "ZA": {
+ "name": "å—アフリカ"
+ },
+ "GS": {
+ "name": "å—ジョージア島・å—サンドイッãƒè«¸å³¶"
+ },
+ "SS": {
+ "name": "å—スーダン"
+ },
+ "AQ": {
+ "name": "å—極"
+ },
+ "JP": {
+ "name": "日本"
+ },
+ "GF": {
+ "name": "ä»é ˜ã‚®ã‚¢ãƒŠ"
+ },
+ "PF": {
+ "name": "ä»é ˜ãƒãƒªãƒã‚·ã‚¢"
+ },
+ "TF": {
+ "name": "ä»é ˜æ¥µå—諸島"
+ },
+ "VI": {
+ "name": "米領ヴァージン諸島"
+ },
+ "AS": {
+ "name": "米領サモア"
+ },
+ "UM": {
+ "name": "米領太平洋諸島"
+ },
+ "MP": {
+ "name": "北マリアナ諸島"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/country/jgo.json b/library/intl/resources/country/jgo.json
new file mode 100644
index 000000000..f8f649e53
--- /dev/null
+++ b/library/intl/resources/country/jgo.json
@@ -0,0 +1,761 @@
+{
+ "AF": {
+ "name": "Afghanistan"
+ },
+ "AR": {
+ "name": "Ajɛntîn"
+ },
+ "AX": {
+ "name": "Ã…land Islands"
+ },
+ "AL": {
+ "name": "Albania"
+ },
+ "DZ": {
+ "name": "Aljɛlî"
+ },
+ "AS": {
+ "name": "American Samoa"
+ },
+ "IN": {
+ "name": "ÃndÉ›"
+ },
+ "AD": {
+ "name": "Andorra"
+ },
+ "AI": {
+ "name": "Anguilla"
+ },
+ "AQ": {
+ "name": "Antarctica"
+ },
+ "AG": {
+ "name": "Antigua & Barbuda"
+ },
+ "AO": {
+ "name": "AÅ‹gÉ”Ìla"
+ },
+ "AM": {
+ "name": "Armenia"
+ },
+ "AW": {
+ "name": "Aruba"
+ },
+ "AC": {
+ "name": "Ascension Island"
+ },
+ "AU": {
+ "name": "Australia"
+ },
+ "AT": {
+ "name": "Austria"
+ },
+ "AZ": {
+ "name": "Azerbaijan"
+ },
+ "BS": {
+ "name": "Bahamas"
+ },
+ "BH": {
+ "name": "Bahrain"
+ },
+ "BD": {
+ "name": "Bangladesh"
+ },
+ "BB": {
+ "name": "Barbados"
+ },
+ "BY": {
+ "name": "Belarus"
+ },
+ "BE": {
+ "name": "Belgium"
+ },
+ "BZ": {
+ "name": "Belize"
+ },
+ "BM": {
+ "name": "Bermuda"
+ },
+ "BT": {
+ "name": "Bhutan"
+ },
+ "BA": {
+ "name": "Bosnia & Herzegovina"
+ },
+ "IO": {
+ "name": "British Indian Ocean Territory"
+ },
+ "VG": {
+ "name": "British Virgin Islands"
+ },
+ "BN": {
+ "name": "Brunei"
+ },
+ "BG": {
+ "name": "Bulgaria"
+ },
+ "KH": {
+ "name": "Cambodia"
+ },
+ "IC": {
+ "name": "Canary Islands"
+ },
+ "CV": {
+ "name": "Cape Verde"
+ },
+ "BQ": {
+ "name": "Caribbean Netherlands"
+ },
+ "TD": {
+ "name": "Cât"
+ },
+ "KY": {
+ "name": "Cayman Islands"
+ },
+ "CF": {
+ "name": "Central African Republic"
+ },
+ "EA": {
+ "name": "Ceuta & Melilla"
+ },
+ "CX": {
+ "name": "Christmas Island"
+ },
+ "CL": {
+ "name": "Cíllɛ"
+ },
+ "CC": {
+ "name": "Cocos (Keeling) Islands"
+ },
+ "CK": {
+ "name": "Cook Islands"
+ },
+ "CR": {
+ "name": "Costa Rica"
+ },
+ "HR": {
+ "name": "Croatia"
+ },
+ "CW": {
+ "name": "Curaçao"
+ },
+ "CY": {
+ "name": "Cyprus"
+ },
+ "CZ": {
+ "name": "Czech Republic"
+ },
+ "DK": {
+ "name": "Denmark"
+ },
+ "DG": {
+ "name": "Diego Garcia"
+ },
+ "DM": {
+ "name": "Dominica"
+ },
+ "DO": {
+ "name": "Dominican Republic"
+ },
+ "SV": {
+ "name": "El Salvador"
+ },
+ "EE": {
+ "name": "Estonia"
+ },
+ "EG": {
+ "name": "ÆjíptÉ›"
+ },
+ "EC": {
+ "name": "Ækwandɔ̂"
+ },
+ "ER": {
+ "name": "ÆlitÉ›lÉ›Ìya"
+ },
+ "ES": {
+ "name": "Æspániya"
+ },
+ "ET": {
+ "name": "ÆtiyÉ”pî"
+ },
+ "FK": {
+ "name": "Falkland Islands"
+ },
+ "FO": {
+ "name": "Faroe Islands"
+ },
+ "FR": {
+ "name": "Fɛlánci"
+ },
+ "FJ": {
+ "name": "Fiji"
+ },
+ "FI": {
+ "name": "Finland"
+ },
+ "GF": {
+ "name": "French Guiana"
+ },
+ "PF": {
+ "name": "French Polynesia"
+ },
+ "TF": {
+ "name": "French Southern Territories"
+ },
+ "GE": {
+ "name": "Georgia"
+ },
+ "GI": {
+ "name": "Gibraltar"
+ },
+ "GL": {
+ "name": "Greenland"
+ },
+ "GD": {
+ "name": "Grenada"
+ },
+ "GP": {
+ "name": "Guadeloupe"
+ },
+ "GU": {
+ "name": "Guam"
+ },
+ "GT": {
+ "name": "Guatemala"
+ },
+ "GG": {
+ "name": "Guernsey"
+ },
+ "GY": {
+ "name": "Guyana"
+ },
+ "HT": {
+ "name": "Haiti"
+ },
+ "HN": {
+ "name": "Honduras"
+ },
+ "HK": {
+ "name": "Hong Kong SAR China"
+ },
+ "HU": {
+ "name": "Hungary"
+ },
+ "IS": {
+ "name": "Iceland"
+ },
+ "IQ": {
+ "name": "Ilâk"
+ },
+ "ID": {
+ "name": "Indonesia"
+ },
+ "IR": {
+ "name": "Iran"
+ },
+ "IE": {
+ "name": "Ireland"
+ },
+ "IL": {
+ "name": "Islayɛ̂l"
+ },
+ "IM": {
+ "name": "Isle of Man"
+ },
+ "IT": {
+ "name": "Italî"
+ },
+ "JM": {
+ "name": "Jamaica"
+ },
+ "JP": {
+ "name": "Japɔ̂n"
+ },
+ "JE": {
+ "name": "Jersey"
+ },
+ "JO": {
+ "name": "Jordan"
+ },
+ "CM": {
+ "name": "Kamɛlûn"
+ },
+ "CA": {
+ "name": "Kanadâ"
+ },
+ "KZ": {
+ "name": "Kazakhstan"
+ },
+ "KE": {
+ "name": "KÉ›Ìnya"
+ },
+ "KI": {
+ "name": "Kiribati"
+ },
+ "XK": {
+ "name": "Kosovo"
+ },
+ "CO": {
+ "name": "Kɔllɔmbî"
+ },
+ "KM": {
+ "name": "KÉ”mÉ”ÌlÉ”shi"
+ },
+ "CD": {
+ "name": "KÉ”ÌÅ‹gÉ”-Kinshása"
+ },
+ "CG": {
+ "name": "KÉ”ÌÅ‹gÉ”-MbÉ›lazavîl"
+ },
+ "CI": {
+ "name": "KÉ”Ìt Ndivwâ"
+ },
+ "CU": {
+ "name": "Kúba"
+ },
+ "KW": {
+ "name": "Kuwait"
+ },
+ "KG": {
+ "name": "Kyrgyzstan"
+ },
+ "LA": {
+ "name": "Laos"
+ },
+ "LV": {
+ "name": "Latvia"
+ },
+ "LB": {
+ "name": "Lebanon"
+ },
+ "LS": {
+ "name": "LÉ›sÉ”ÌtÉ”"
+ },
+ "RE": {
+ "name": "LÉ›Ìuniyɔ̂n"
+ },
+ "LR": {
+ "name": "Libɛrî"
+ },
+ "LY": {
+ "name": "Libî"
+ },
+ "LI": {
+ "name": "Liechtenstein"
+ },
+ "LT": {
+ "name": "Lithuania"
+ },
+ "RU": {
+ "name": "Lusî"
+ },
+ "RW": {
+ "name": "Luwánda"
+ },
+ "LU": {
+ "name": "Luxembourg"
+ },
+ "MO": {
+ "name": "Macau SAR China"
+ },
+ "MK": {
+ "name": "Macedonia"
+ },
+ "MW": {
+ "name": "Maláwi"
+ },
+ "MY": {
+ "name": "Malaysia"
+ },
+ "MV": {
+ "name": "Maldives"
+ },
+ "ML": {
+ "name": "Malî"
+ },
+ "MT": {
+ "name": "Malta"
+ },
+ "MG": {
+ "name": "Mándaŋgasɛkâ"
+ },
+ "MH": {
+ "name": "Marshall Islands"
+ },
+ "MQ": {
+ "name": "Martinique"
+ },
+ "MU": {
+ "name": "Mauritius"
+ },
+ "YT": {
+ "name": "Mayɔ̂t"
+ },
+ "BR": {
+ "name": "Mbɛlazîl"
+ },
+ "BJ": {
+ "name": "Mbɛnɛ̂ŋ"
+ },
+ "BO": {
+ "name": "Mbɔlivî"
+ },
+ "BW": {
+ "name": "Mbɔtswána"
+ },
+ "BF": {
+ "name": "Mbulukína Fásɔ"
+ },
+ "BI": {
+ "name": "Mbulundí"
+ },
+ "MX": {
+ "name": "Mɛksîk"
+ },
+ "FM": {
+ "name": "Micronesia"
+ },
+ "MD": {
+ "name": "Moldova"
+ },
+ "MC": {
+ "name": "Monaco"
+ },
+ "MN": {
+ "name": "Mongolia"
+ },
+ "ME": {
+ "name": "Montenegro"
+ },
+ "MS": {
+ "name": "Montserrat"
+ },
+ "MR": {
+ "name": "Mɔlitanî"
+ },
+ "MA": {
+ "name": "Mɔlɔ̂k"
+ },
+ "MZ": {
+ "name": "Mɔzambîk"
+ },
+ "MM": {
+ "name": "Myanmar (Burma)"
+ },
+ "NA": {
+ "name": "Namimbî"
+ },
+ "NR": {
+ "name": "Nauru"
+ },
+ "NP": {
+ "name": "Nepal"
+ },
+ "NL": {
+ "name": "Netherlands"
+ },
+ "NC": {
+ "name": "New Caledonia"
+ },
+ "NZ": {
+ "name": "New Zealand"
+ },
+ "NI": {
+ "name": "Nicaragua"
+ },
+ "NE": {
+ "name": "Nijɛ̂"
+ },
+ "NG": {
+ "name": "Ninjɛliyâ"
+ },
+ "NU": {
+ "name": "Niue"
+ },
+ "DE": {
+ "name": "Njáman"
+ },
+ "DJ": {
+ "name": "Njimbúti"
+ },
+ "NF": {
+ "name": "Norfolk Island"
+ },
+ "KP": {
+ "name": "North Korea"
+ },
+ "MP": {
+ "name": "Northern Mariana Islands"
+ },
+ "NO": {
+ "name": "NÉ”lÉ›vÉ›ÌjÉ›"
+ },
+ "GA": {
+ "name": "Ŋgabɔ̂ŋ"
+ },
+ "GM": {
+ "name": "Ŋgambî"
+ },
+ "GH": {
+ "name": "Ŋgána"
+ },
+ "GR": {
+ "name": "Ŋgɛlɛ̂k"
+ },
+ "GN": {
+ "name": "Ŋginɛ̂"
+ },
+ "GQ": {
+ "name": "ÅŠginɛ̂ ÆkwatÉ”liyâl"
+ },
+ "GW": {
+ "name": "Ŋginɛ̂ Mbisáwu"
+ },
+ "OM": {
+ "name": "Oman"
+ },
+ "PK": {
+ "name": "Pakistan"
+ },
+ "PW": {
+ "name": "Palau"
+ },
+ "PS": {
+ "name": "Palestinian Territories"
+ },
+ "PA": {
+ "name": "Panama"
+ },
+ "PG": {
+ "name": "Papua New Guinea"
+ },
+ "PY": {
+ "name": "Paraguay"
+ },
+ "PE": {
+ "name": "Pɛlû"
+ },
+ "SC": {
+ "name": "PÉ›sÉ›ÌshÉ›l"
+ },
+ "PH": {
+ "name": "Philippines"
+ },
+ "PN": {
+ "name": "Pitcairn Islands"
+ },
+ "PL": {
+ "name": "Poland"
+ },
+ "PT": {
+ "name": "Portugal"
+ },
+ "PR": {
+ "name": "Puerto Rico"
+ },
+ "QA": {
+ "name": "Qatar"
+ },
+ "RO": {
+ "name": "Romania"
+ },
+ "WS": {
+ "name": "Samoa"
+ },
+ "SM": {
+ "name": "San Marino"
+ },
+ "SA": {
+ "name": "Saudi Arabia"
+ },
+ "ST": {
+ "name": "Sáwɔŋ TÉ”mÉ›Ì nÉ›Ì PÉ›línsipÉ›"
+ },
+ "RS": {
+ "name": "Sɛlɛbî"
+ },
+ "SN": {
+ "name": "Sɛnɛgâl"
+ },
+ "CN": {
+ "name": "Shîn"
+ },
+ "SG": {
+ "name": "Singapore"
+ },
+ "SX": {
+ "name": "Sint Maarten"
+ },
+ "SL": {
+ "name": "SiyÉ›Ìla Lɛɔ̂n"
+ },
+ "SK": {
+ "name": "Slovakia"
+ },
+ "SI": {
+ "name": "Slovenia"
+ },
+ "SB": {
+ "name": "Solomon Islands"
+ },
+ "ZA": {
+ "name": "South Africa"
+ },
+ "GS": {
+ "name": "South Georgia & South Sandwich Islands"
+ },
+ "KR": {
+ "name": "South Korea"
+ },
+ "SS": {
+ "name": "South Sudan"
+ },
+ "SO": {
+ "name": "Sɔmalî"
+ },
+ "LK": {
+ "name": "Sri Lanka"
+ },
+ "BL": {
+ "name": "St. Barthélemy"
+ },
+ "SH": {
+ "name": "St. Helena"
+ },
+ "KN": {
+ "name": "St. Kitts & Nevis"
+ },
+ "LC": {
+ "name": "St. Lucia"
+ },
+ "MF": {
+ "name": "St. Martin"
+ },
+ "PM": {
+ "name": "St. Pierre & Miquelon"
+ },
+ "VC": {
+ "name": "St. Vincent & Grenadines"
+ },
+ "SD": {
+ "name": "Sundân"
+ },
+ "SR": {
+ "name": "Suriname"
+ },
+ "SJ": {
+ "name": "Svalbard & Jan Mayen"
+ },
+ "SZ": {
+ "name": "Swazilân"
+ },
+ "SE": {
+ "name": "Sweden"
+ },
+ "CH": {
+ "name": "Sẅísɛ"
+ },
+ "SY": {
+ "name": "Syria"
+ },
+ "TW": {
+ "name": "Taiwan"
+ },
+ "TJ": {
+ "name": "Tajikistan"
+ },
+ "TZ": {
+ "name": "Tanzanî"
+ },
+ "TH": {
+ "name": "Thailand"
+ },
+ "TL": {
+ "name": "Timor-Leste"
+ },
+ "TK": {
+ "name": "Tokelau"
+ },
+ "TO": {
+ "name": "Tonga"
+ },
+ "TG": {
+ "name": "TÉ”ÌÅ‹gÉ”"
+ },
+ "TT": {
+ "name": "Trinidad & Tobago"
+ },
+ "TA": {
+ "name": "Tristan da Cunha"
+ },
+ "TN": {
+ "name": "Tunizî"
+ },
+ "TR": {
+ "name": "Turkey"
+ },
+ "TM": {
+ "name": "Turkmenistan"
+ },
+ "TC": {
+ "name": "Turks & Caicos Islands"
+ },
+ "TV": {
+ "name": "Tuvalu"
+ },
+ "UM": {
+ "name": "U.S. Outlying Islands"
+ },
+ "VI": {
+ "name": "U.S. Virgin Islands"
+ },
+ "UA": {
+ "name": "Ukraine"
+ },
+ "AE": {
+ "name": "United Arab Emirates"
+ },
+ "GB": {
+ "name": "United Kingdom"
+ },
+ "US": {
+ "name": "United States"
+ },
+ "UG": {
+ "name": "Uŋgánda"
+ },
+ "UY": {
+ "name": "Uruguay"
+ },
+ "UZ": {
+ "name": "Uzbekistan"
+ },
+ "VU": {
+ "name": "Vanuatu"
+ },
+ "VA": {
+ "name": "Vatican City"
+ },
+ "VE": {
+ "name": "VÉ›nÉ›zwÉ›Ìla"
+ },
+ "VN": {
+ "name": "Vietnam"
+ },
+ "WF": {
+ "name": "Wallis & Futuna"
+ },
+ "EH": {
+ "name": "Western Sahara"
+ },
+ "YE": {
+ "name": "Yemen"
+ },
+ "ZM": {
+ "name": "Zambî"
+ },
+ "ZW": {
+ "name": "Zimbámbwɛ"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/country/jmc.json b/library/intl/resources/country/jmc.json
new file mode 100644
index 000000000..e57db8007
--- /dev/null
+++ b/library/intl/resources/country/jmc.json
@@ -0,0 +1,761 @@
+{
+ "ZA": {
+ "name": "Afrika Kusini"
+ },
+ "AF": {
+ "name": "Afuganistani"
+ },
+ "IS": {
+ "name": "Aislandi"
+ },
+ "AR": {
+ "name": "Ajentina"
+ },
+ "AX": {
+ "name": "Ã…land Islands"
+ },
+ "AL": {
+ "name": "Albania"
+ },
+ "DZ": {
+ "name": "Aljeria"
+ },
+ "AD": {
+ "name": "Andora"
+ },
+ "AO": {
+ "name": "Angola"
+ },
+ "AI": {
+ "name": "Anguilla"
+ },
+ "AQ": {
+ "name": "Antarctica"
+ },
+ "AG": {
+ "name": "Antigua na Barbuda"
+ },
+ "AM": {
+ "name": "Armenia"
+ },
+ "AW": {
+ "name": "Aruba"
+ },
+ "AC": {
+ "name": "Ascension Island"
+ },
+ "AU": {
+ "name": "Australia"
+ },
+ "AT": {
+ "name": "Austria"
+ },
+ "IE": {
+ "name": "Ayalandi"
+ },
+ "AZ": {
+ "name": "Azabajani"
+ },
+ "BB": {
+ "name": "Babadosi"
+ },
+ "BS": {
+ "name": "Bahama"
+ },
+ "BH": {
+ "name": "Bahareni"
+ },
+ "BD": {
+ "name": "Bangladeshi"
+ },
+ "BY": {
+ "name": "Belarusi"
+ },
+ "BZ": {
+ "name": "Belize"
+ },
+ "BJ": {
+ "name": "Benini"
+ },
+ "BM": {
+ "name": "Bermuda"
+ },
+ "BO": {
+ "name": "Bolivia"
+ },
+ "BA": {
+ "name": "Bosnia na Hezegovina"
+ },
+ "BW": {
+ "name": "Botswana"
+ },
+ "BR": {
+ "name": "Brazili"
+ },
+ "BN": {
+ "name": "Brunei"
+ },
+ "BF": {
+ "name": "Bukinafaso"
+ },
+ "MG": {
+ "name": "Bukini"
+ },
+ "BG": {
+ "name": "Bulgaria"
+ },
+ "BI": {
+ "name": "Burundi"
+ },
+ "BT": {
+ "name": "Butani"
+ },
+ "IC": {
+ "name": "Canary Islands"
+ },
+ "BQ": {
+ "name": "Caribbean Netherlands"
+ },
+ "EA": {
+ "name": "Ceuta & Melilla"
+ },
+ "TD": {
+ "name": "Chadi"
+ },
+ "CL": {
+ "name": "Chile"
+ },
+ "CN": {
+ "name": "China"
+ },
+ "CX": {
+ "name": "Christmas Island"
+ },
+ "CC": {
+ "name": "Cocos (Keeling) Islands"
+ },
+ "CW": {
+ "name": "Curaçao"
+ },
+ "DK": {
+ "name": "Denmaki"
+ },
+ "DG": {
+ "name": "Diego Garcia"
+ },
+ "DM": {
+ "name": "Dominika"
+ },
+ "EC": {
+ "name": "Ekwado"
+ },
+ "SV": {
+ "name": "Elsavado"
+ },
+ "IO": {
+ "name": "Eneo la Uingereza katika Bahari Hindi"
+ },
+ "ER": {
+ "name": "Eritrea"
+ },
+ "EE": {
+ "name": "Estonia"
+ },
+ "AE": {
+ "name": "Falme za Kiarabu"
+ },
+ "FO": {
+ "name": "Faroe Islands"
+ },
+ "FJ": {
+ "name": "Fiji"
+ },
+ "PH": {
+ "name": "Filipino"
+ },
+ "TF": {
+ "name": "French Southern Territories"
+ },
+ "GA": {
+ "name": "Gaboni"
+ },
+ "GM": {
+ "name": "Gambia"
+ },
+ "GH": {
+ "name": "Ghana"
+ },
+ "GN": {
+ "name": "Gine"
+ },
+ "GW": {
+ "name": "Ginebisau"
+ },
+ "GQ": {
+ "name": "Ginekweta"
+ },
+ "GD": {
+ "name": "Grenada"
+ },
+ "GL": {
+ "name": "Grinlandi"
+ },
+ "GG": {
+ "name": "Guernsey"
+ },
+ "GY": {
+ "name": "Guyana"
+ },
+ "GP": {
+ "name": "Gwadelupe"
+ },
+ "GU": {
+ "name": "Gwam"
+ },
+ "GT": {
+ "name": "Gwatemala"
+ },
+ "GF": {
+ "name": "Gwiyana ya Ufaransa"
+ },
+ "HT": {
+ "name": "Haiti"
+ },
+ "ES": {
+ "name": "Hispania"
+ },
+ "HN": {
+ "name": "Hondurasi"
+ },
+ "HK": {
+ "name": "Hong Kong SAR China"
+ },
+ "HU": {
+ "name": "Hungaria"
+ },
+ "IN": {
+ "name": "India"
+ },
+ "ID": {
+ "name": "Indonesia"
+ },
+ "IQ": {
+ "name": "Iraki"
+ },
+ "IM": {
+ "name": "Isle of Man"
+ },
+ "IL": {
+ "name": "Israeli"
+ },
+ "IT": {
+ "name": "Italia"
+ },
+ "JM": {
+ "name": "Jamaika"
+ },
+ "CF": {
+ "name": "Jamhuri ya Afrika ya Kati"
+ },
+ "CZ": {
+ "name": "Jamhuri ya Cheki"
+ },
+ "DO": {
+ "name": "Jamhuri ya Dominika"
+ },
+ "CD": {
+ "name": "Jamhuri ya Kidemokrasia ya Kongo"
+ },
+ "JP": {
+ "name": "Japani"
+ },
+ "JE": {
+ "name": "Jersey"
+ },
+ "GI": {
+ "name": "Jibralta"
+ },
+ "DJ": {
+ "name": "Jibuti"
+ },
+ "GE": {
+ "name": "Jojia"
+ },
+ "KH": {
+ "name": "Kambodia"
+ },
+ "CM": {
+ "name": "Kameruni"
+ },
+ "CA": {
+ "name": "Kanada"
+ },
+ "QA": {
+ "name": "Katari"
+ },
+ "KZ": {
+ "name": "Kazakistani"
+ },
+ "KE": {
+ "name": "Kenya"
+ },
+ "CV": {
+ "name": "Kepuvede"
+ },
+ "KI": {
+ "name": "Kiribati"
+ },
+ "KG": {
+ "name": "Kirigizistani"
+ },
+ "NF": {
+ "name": "Kisiwa cha Norfok"
+ },
+ "CI": {
+ "name": "Kodivaa"
+ },
+ "CO": {
+ "name": "Kolombia"
+ },
+ "KM": {
+ "name": "Komoro"
+ },
+ "CG": {
+ "name": "Kongo"
+ },
+ "HR": {
+ "name": "Korasia"
+ },
+ "KP": {
+ "name": "Korea Kaskazini"
+ },
+ "KR": {
+ "name": "Korea Kusini"
+ },
+ "XK": {
+ "name": "Kosovo"
+ },
+ "CR": {
+ "name": "Kostarika"
+ },
+ "CU": {
+ "name": "Kuba"
+ },
+ "CY": {
+ "name": "Kuprosi"
+ },
+ "KW": {
+ "name": "Kuwaiti"
+ },
+ "LA": {
+ "name": "Laosi"
+ },
+ "LU": {
+ "name": "Lasembagi"
+ },
+ "LV": {
+ "name": "Lativia"
+ },
+ "LB": {
+ "name": "Lebanoni"
+ },
+ "LS": {
+ "name": "Lesoto"
+ },
+ "LR": {
+ "name": "Liberia"
+ },
+ "LY": {
+ "name": "Libya"
+ },
+ "LI": {
+ "name": "Lishenteni"
+ },
+ "LT": {
+ "name": "Litwania"
+ },
+ "MO": {
+ "name": "Macau SAR China"
+ },
+ "MW": {
+ "name": "Malawi"
+ },
+ "MY": {
+ "name": "Malesia"
+ },
+ "ML": {
+ "name": "Mali"
+ },
+ "MT": {
+ "name": "Malta"
+ },
+ "US": {
+ "name": "Marekani"
+ },
+ "MQ": {
+ "name": "Martiniki"
+ },
+ "MK": {
+ "name": "Masedonia"
+ },
+ "YT": {
+ "name": "Mayotte"
+ },
+ "MX": {
+ "name": "Meksiko"
+ },
+ "FM": {
+ "name": "Mikronesia"
+ },
+ "EG": {
+ "name": "Misri"
+ },
+ "MV": {
+ "name": "Modivu"
+ },
+ "MD": {
+ "name": "Moldova"
+ },
+ "MC": {
+ "name": "Monako"
+ },
+ "MN": {
+ "name": "Mongolia"
+ },
+ "ME": {
+ "name": "Montenegro"
+ },
+ "MS": {
+ "name": "Montserrati"
+ },
+ "MU": {
+ "name": "Morisi"
+ },
+ "MR": {
+ "name": "Moritania"
+ },
+ "MA": {
+ "name": "Moroko"
+ },
+ "MZ": {
+ "name": "Msumbiji"
+ },
+ "MM": {
+ "name": "Myama"
+ },
+ "NA": {
+ "name": "Namibia"
+ },
+ "NR": {
+ "name": "Nauru"
+ },
+ "NP": {
+ "name": "Nepali"
+ },
+ "NE": {
+ "name": "Nijeri"
+ },
+ "NG": {
+ "name": "Nijeria"
+ },
+ "NI": {
+ "name": "Nikaragwa"
+ },
+ "NU": {
+ "name": "Niue"
+ },
+ "NO": {
+ "name": "Norwe"
+ },
+ "NC": {
+ "name": "Nyukaledonia"
+ },
+ "NZ": {
+ "name": "Nyuzilandi"
+ },
+ "OM": {
+ "name": "Omani"
+ },
+ "PK": {
+ "name": "Pakistani"
+ },
+ "PW": {
+ "name": "Palau"
+ },
+ "PA": {
+ "name": "Panama"
+ },
+ "PG": {
+ "name": "Papua"
+ },
+ "PY": {
+ "name": "Paragwai"
+ },
+ "PE": {
+ "name": "Peru"
+ },
+ "PN": {
+ "name": "Pitkairni"
+ },
+ "PL": {
+ "name": "Polandi"
+ },
+ "PF": {
+ "name": "Polinesia ya Ufaransa"
+ },
+ "PR": {
+ "name": "Pwetoriko"
+ },
+ "RE": {
+ "name": "Riyunioni"
+ },
+ "RO": {
+ "name": "Romania"
+ },
+ "RW": {
+ "name": "Rwanda"
+ },
+ "SM": {
+ "name": "Samarino"
+ },
+ "WS": {
+ "name": "Samoa"
+ },
+ "AS": {
+ "name": "Samoa ya Marekani"
+ },
+ "SH": {
+ "name": "Santahelena"
+ },
+ "KN": {
+ "name": "Santakitzi na Nevis"
+ },
+ "LC": {
+ "name": "Santalusia"
+ },
+ "PM": {
+ "name": "Santapieri na Mikeloni"
+ },
+ "VC": {
+ "name": "Santavisenti na Grenadini"
+ },
+ "ST": {
+ "name": "Sao Tome na Principe"
+ },
+ "SA": {
+ "name": "Saudi"
+ },
+ "SN": {
+ "name": "Senegali"
+ },
+ "RS": {
+ "name": "Serbia"
+ },
+ "SC": {
+ "name": "Shelisheli"
+ },
+ "SL": {
+ "name": "Siera Leoni"
+ },
+ "SG": {
+ "name": "Singapoo"
+ },
+ "SX": {
+ "name": "Sint Maarten"
+ },
+ "SY": {
+ "name": "Siria"
+ },
+ "LK": {
+ "name": "Sirilanka"
+ },
+ "SK": {
+ "name": "Slovakia"
+ },
+ "SI": {
+ "name": "Slovenia"
+ },
+ "SO": {
+ "name": "Somalia"
+ },
+ "GS": {
+ "name": "South Georgia & South Sandwich Islands"
+ },
+ "SS": {
+ "name": "South Sudan"
+ },
+ "BL": {
+ "name": "St. Barthélemy"
+ },
+ "MF": {
+ "name": "St. Martin"
+ },
+ "SD": {
+ "name": "Sudani"
+ },
+ "SR": {
+ "name": "Surinamu"
+ },
+ "SJ": {
+ "name": "Svalbard & Jan Mayen"
+ },
+ "TH": {
+ "name": "Tailandi"
+ },
+ "TW": {
+ "name": "Taiwani"
+ },
+ "TJ": {
+ "name": "Tajikistani"
+ },
+ "TZ": {
+ "name": "Tanzania"
+ },
+ "TL": {
+ "name": "Timori ya Mashariki"
+ },
+ "TG": {
+ "name": "Togo"
+ },
+ "TK": {
+ "name": "Tokelau"
+ },
+ "TO": {
+ "name": "Tonga"
+ },
+ "TT": {
+ "name": "Trinidad na Tobago"
+ },
+ "TA": {
+ "name": "Tristan da Cunha"
+ },
+ "TN": {
+ "name": "Tunisia"
+ },
+ "TM": {
+ "name": "Turukimenistani"
+ },
+ "TV": {
+ "name": "Tuvalu"
+ },
+ "UM": {
+ "name": "U.S. Outlying Islands"
+ },
+ "IR": {
+ "name": "Uajemi"
+ },
+ "BE": {
+ "name": "Ubelgiji"
+ },
+ "FR": {
+ "name": "Ufaransa"
+ },
+ "FI": {
+ "name": "Ufini"
+ },
+ "UG": {
+ "name": "Uganda"
+ },
+ "GR": {
+ "name": "Ugiriki"
+ },
+ "ET": {
+ "name": "Uhabeshi"
+ },
+ "NL": {
+ "name": "Uholanzi"
+ },
+ "GB": {
+ "name": "Uingereza"
+ },
+ "DE": {
+ "name": "Ujerumani"
+ },
+ "PS": {
+ "name": "Ukingo wa Magharibi na Ukanda wa Gaza wa Palestina"
+ },
+ "UA": {
+ "name": "Ukraini"
+ },
+ "PT": {
+ "name": "Ureno"
+ },
+ "UY": {
+ "name": "Urugwai"
+ },
+ "RU": {
+ "name": "Urusi"
+ },
+ "SZ": {
+ "name": "Uswazi"
+ },
+ "SE": {
+ "name": "Uswidi"
+ },
+ "CH": {
+ "name": "Uswisi"
+ },
+ "TR": {
+ "name": "Uturuki"
+ },
+ "UZ": {
+ "name": "Uzibekistani"
+ },
+ "VU": {
+ "name": "Vanuatu"
+ },
+ "VA": {
+ "name": "Vatikani"
+ },
+ "VE": {
+ "name": "Venezuela"
+ },
+ "VN": {
+ "name": "Vietinamu"
+ },
+ "CK": {
+ "name": "Visiwa vya Cook"
+ },
+ "FK": {
+ "name": "Visiwa vya Falkland"
+ },
+ "KY": {
+ "name": "Visiwa vya Kayman"
+ },
+ "MP": {
+ "name": "Visiwa vya Mariana vya Kaskazini"
+ },
+ "MH": {
+ "name": "Visiwa vya Marshal"
+ },
+ "SB": {
+ "name": "Visiwa vya Solomon"
+ },
+ "TC": {
+ "name": "Visiwa vya Turki na Kaiko"
+ },
+ "VI": {
+ "name": "Visiwa vya Virgin vya Marekani"
+ },
+ "VG": {
+ "name": "Visiwa vya Virgin vya Uingereza"
+ },
+ "WF": {
+ "name": "Walis na Futuna"
+ },
+ "EH": {
+ "name": "Western Sahara"
+ },
+ "YE": {
+ "name": "Yemeni"
+ },
+ "JO": {
+ "name": "Yordani"
+ },
+ "ZM": {
+ "name": "Zambia"
+ },
+ "ZW": {
+ "name": "Zimbabwe"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/country/ka.json b/library/intl/resources/country/ka.json
new file mode 100644
index 000000000..72d5d68da
--- /dev/null
+++ b/library/intl/resources/country/ka.json
@@ -0,0 +1,761 @@
+{
+ "AU": {
+ "name": "áƒáƒ•áƒ¡áƒ¢áƒ áƒáƒšáƒ˜áƒ"
+ },
+ "AT": {
+ "name": "áƒáƒ•áƒ¡áƒ¢áƒ áƒ˜áƒ"
+ },
+ "AF": {
+ "name": "áƒáƒ•áƒ¦áƒáƒœáƒ”თი"
+ },
+ "AZ": {
+ "name": "áƒáƒ–ერბáƒáƒ˜áƒ¯áƒáƒœáƒ˜"
+ },
+ "AX": {
+ "name": "áƒáƒšáƒáƒœáƒ“ის კუნძულები"
+ },
+ "AL": {
+ "name": "áƒáƒšáƒ‘áƒáƒœáƒ”თი"
+ },
+ "DZ": {
+ "name": "áƒáƒšáƒŸáƒ˜áƒ áƒ˜"
+ },
+ "AC": {
+ "name": "áƒáƒ›áƒáƒ¦áƒšáƒ”ბის კუნძული"
+ },
+ "US": {
+ "name": "áƒáƒ›áƒ”რიკის შეერთებული შტáƒáƒ¢áƒ”ბი"
+ },
+ "AS": {
+ "name": "áƒáƒ›áƒ”რიკული სáƒáƒ›áƒáƒ"
+ },
+ "AI": {
+ "name": "áƒáƒœáƒ’ვილáƒ"
+ },
+ "AO": {
+ "name": "áƒáƒœáƒ’áƒáƒšáƒ"
+ },
+ "AD": {
+ "name": "áƒáƒœáƒ“áƒáƒ áƒ"
+ },
+ "AQ": {
+ "name": "áƒáƒœáƒ¢áƒáƒ áƒ¥áƒ¢áƒ˜áƒ™áƒ"
+ },
+ "AG": {
+ "name": "áƒáƒœáƒ¢áƒ˜áƒ’ურდრბáƒáƒ áƒ‘უდáƒ"
+ },
+ "AE": {
+ "name": "áƒáƒ áƒáƒ‘თრგáƒáƒ”რთიáƒáƒœáƒ”ბული სáƒáƒáƒ›áƒ˜áƒ áƒáƒ”ბი"
+ },
+ "AR": {
+ "name": "áƒáƒ áƒ’ენტინáƒ"
+ },
+ "AW": {
+ "name": "áƒáƒ áƒ£áƒ‘áƒ"
+ },
+ "VI": {
+ "name": "áƒáƒ¨áƒ¨-ის ვირჯინიის კუნძულები"
+ },
+ "UM": {
+ "name": "áƒáƒ¨áƒ¨-ის შáƒáƒ áƒ”ული კუნძულები"
+ },
+ "NZ": {
+ "name": "áƒáƒ®áƒáƒšáƒ˜ ზელáƒáƒœáƒ“იáƒ"
+ },
+ "NC": {
+ "name": "áƒáƒ®áƒáƒšáƒ˜ კáƒáƒšáƒ”დáƒáƒœáƒ˜áƒ"
+ },
+ "BD": {
+ "name": "ბáƒáƒœáƒ’ლáƒáƒ“ეში"
+ },
+ "BB": {
+ "name": "ბáƒáƒ áƒ‘áƒáƒ“áƒáƒ¡áƒ˜"
+ },
+ "BS": {
+ "name": "ბáƒáƒ°áƒáƒ›áƒ˜áƒ¡ კუნძულები"
+ },
+ "BH": {
+ "name": "ბáƒáƒ°áƒ áƒ”ინი"
+ },
+ "BE": {
+ "name": "ბელგიáƒ"
+ },
+ "BZ": {
+ "name": "ბელიზი"
+ },
+ "BY": {
+ "name": "ბელáƒáƒ áƒ£áƒ¡áƒ˜áƒ"
+ },
+ "BJ": {
+ "name": "ბენინი"
+ },
+ "BM": {
+ "name": "ბერმუდი"
+ },
+ "BO": {
+ "name": "ბáƒáƒšáƒ˜áƒ•áƒ˜áƒ"
+ },
+ "BA": {
+ "name": "ბáƒáƒ¡áƒœáƒ˜áƒ დრჰერცეგáƒáƒ•áƒ˜áƒœáƒ"
+ },
+ "BW": {
+ "name": "ბáƒáƒ¢áƒ¡áƒ•áƒáƒœáƒ"
+ },
+ "BR": {
+ "name": "ბრáƒáƒ–ილიáƒ"
+ },
+ "VG": {
+ "name": "ბრიტáƒáƒœáƒ”თის ვირჯინიის კუნძულები"
+ },
+ "IO": {
+ "name": "ბრიტáƒáƒœáƒ£áƒšáƒ˜ ტერიტáƒáƒ áƒ˜áƒ ინდáƒáƒ”თის áƒáƒ™áƒ”áƒáƒœáƒ”ში"
+ },
+ "BN": {
+ "name": "ბრუნეი"
+ },
+ "BG": {
+ "name": "ბულგáƒáƒ áƒ”თი"
+ },
+ "BF": {
+ "name": "ბურკინáƒ-ფáƒáƒ¡áƒ"
+ },
+ "BI": {
+ "name": "ბურუნდი"
+ },
+ "BT": {
+ "name": "ბუტáƒáƒœáƒ˜"
+ },
+ "GA": {
+ "name": "გáƒáƒ‘áƒáƒœáƒ˜"
+ },
+ "GY": {
+ "name": "გáƒáƒ˜áƒáƒœáƒ"
+ },
+ "GM": {
+ "name": "გáƒáƒ›áƒ‘იáƒ"
+ },
+ "GH": {
+ "name": "გáƒáƒœáƒ"
+ },
+ "DE": {
+ "name": "გერმáƒáƒœáƒ˜áƒ"
+ },
+ "GG": {
+ "name": "გერნსი"
+ },
+ "GP": {
+ "name": "გვáƒáƒ“ელუპე"
+ },
+ "GT": {
+ "name": "გვáƒáƒ¢áƒ”მáƒáƒšáƒ"
+ },
+ "GN": {
+ "name": "გვინეáƒ"
+ },
+ "GW": {
+ "name": "გვინეáƒ-ბისáƒáƒ£"
+ },
+ "GI": {
+ "name": "გიბრáƒáƒšáƒ¢áƒáƒ áƒ˜"
+ },
+ "GD": {
+ "name": "გრენáƒáƒ“áƒ"
+ },
+ "GL": {
+ "name": "გრენლáƒáƒœáƒ“იáƒ"
+ },
+ "GU": {
+ "name": "გუáƒáƒ›áƒ˜"
+ },
+ "DK": {
+ "name": "დáƒáƒœáƒ˜áƒ"
+ },
+ "EH": {
+ "name": "დáƒáƒ¡áƒáƒ•áƒšáƒ”თი სáƒáƒ°áƒáƒ áƒ"
+ },
+ "GB": {
+ "name": "დიდი ბრიტáƒáƒœáƒ”თი"
+ },
+ "DG": {
+ "name": "დიეგáƒ-გáƒáƒ áƒ¡áƒ˜áƒ"
+ },
+ "DM": {
+ "name": "დáƒáƒ›áƒ˜áƒœáƒ˜áƒ™áƒ"
+ },
+ "DO": {
+ "name": "დáƒáƒ›áƒ˜áƒœáƒ˜áƒ™áƒáƒœáƒ˜áƒ¡ რესპუბლიკáƒ"
+ },
+ "EG": {
+ "name": "ეგვიპტე"
+ },
+ "ET": {
+ "name": "ეთიáƒáƒžáƒ˜áƒ"
+ },
+ "EC": {
+ "name": "ეკვáƒáƒ“áƒáƒ áƒ˜"
+ },
+ "GQ": {
+ "name": "ეკვáƒáƒ¢áƒáƒ áƒ£áƒšáƒ˜ გვინეáƒ"
+ },
+ "IQ": {
+ "name": "ერáƒáƒ§áƒ˜"
+ },
+ "ER": {
+ "name": "ერიტრეáƒ"
+ },
+ "ES": {
+ "name": "ესპáƒáƒœáƒ”თი"
+ },
+ "EE": {
+ "name": "ესტáƒáƒœáƒ”თი"
+ },
+ "VU": {
+ "name": "ვáƒáƒœáƒ£áƒáƒ¢áƒ£"
+ },
+ "VE": {
+ "name": "ვენესუელáƒ"
+ },
+ "VN": {
+ "name": "ვიეტნáƒáƒ›áƒ˜"
+ },
+ "ZM": {
+ "name": "ზáƒáƒ›áƒ‘იáƒ"
+ },
+ "ZW": {
+ "name": "ზიმბáƒáƒ‘ვე"
+ },
+ "TR": {
+ "name": "თურქეთი"
+ },
+ "TM": {
+ "name": "თურქმენეთი"
+ },
+ "JM": {
+ "name": "იáƒáƒ›áƒáƒ˜áƒ™áƒ"
+ },
+ "JP": {
+ "name": "იáƒáƒžáƒáƒœáƒ˜áƒ"
+ },
+ "YE": {
+ "name": "იემენი"
+ },
+ "IN": {
+ "name": "ინდáƒáƒ”თი"
+ },
+ "ID": {
+ "name": "ინდáƒáƒœáƒ”ზიáƒ"
+ },
+ "JO": {
+ "name": "იáƒáƒ áƒ“áƒáƒœáƒ˜áƒ"
+ },
+ "IR": {
+ "name": "ირáƒáƒœáƒ˜"
+ },
+ "IE": {
+ "name": "ირლáƒáƒœáƒ“იáƒ"
+ },
+ "IS": {
+ "name": "ისლáƒáƒœáƒ“იáƒ"
+ },
+ "IL": {
+ "name": "ისრáƒáƒ”ლი"
+ },
+ "IT": {
+ "name": "იტáƒáƒšáƒ˜áƒ"
+ },
+ "CV": {
+ "name": "კáƒáƒ‘áƒ-ვერდე"
+ },
+ "KY": {
+ "name": "კáƒáƒ˜áƒ›áƒáƒœáƒ˜áƒ¡ კუნძულები"
+ },
+ "KH": {
+ "name": "კáƒáƒ›áƒ‘áƒáƒ¯áƒ"
+ },
+ "CM": {
+ "name": "კáƒáƒ›áƒ”რუნი"
+ },
+ "CA": {
+ "name": "კáƒáƒœáƒáƒ“áƒ"
+ },
+ "IC": {
+ "name": "კáƒáƒœáƒáƒ áƒ˜áƒ¡ კუნძულები"
+ },
+ "BQ": {
+ "name": "კáƒáƒ áƒ˜áƒ‘ის ნიდერლáƒáƒœáƒ“ები"
+ },
+ "QA": {
+ "name": "კáƒáƒ¢áƒáƒ áƒ˜"
+ },
+ "KE": {
+ "name": "კენიáƒ"
+ },
+ "CY": {
+ "name": "კვიპრáƒáƒ¡áƒ˜"
+ },
+ "KI": {
+ "name": "კირიბáƒáƒ¢áƒ˜"
+ },
+ "CW": {
+ "name": "კიურáƒáƒ¡áƒáƒ"
+ },
+ "CO": {
+ "name": "კáƒáƒšáƒ£áƒ›áƒ‘იáƒ"
+ },
+ "KM": {
+ "name": "კáƒáƒ›áƒáƒ áƒ˜áƒ¡ კუნძულები"
+ },
+ "CG": {
+ "name": "კáƒáƒœáƒ’რ- ბრáƒáƒ–áƒáƒ•áƒ˜áƒšáƒ˜"
+ },
+ "CD": {
+ "name": "კáƒáƒœáƒ’რ- კინშáƒáƒ¡áƒ"
+ },
+ "XK": {
+ "name": "კáƒáƒ¡áƒáƒ•áƒ"
+ },
+ "CR": {
+ "name": "კáƒáƒ¡áƒ¢áƒ-რიკáƒ"
+ },
+ "CI": {
+ "name": "კáƒáƒ¢-დივუáƒáƒ áƒ˜"
+ },
+ "CU": {
+ "name": "კუბáƒ"
+ },
+ "CK": {
+ "name": "კუკის კუნძულები"
+ },
+ "LA": {
+ "name": "ლáƒáƒáƒ¡áƒ˜"
+ },
+ "LV": {
+ "name": "ლáƒáƒ¢áƒ•áƒ˜áƒ"
+ },
+ "LS": {
+ "name": "ლესáƒáƒ—áƒ"
+ },
+ "LB": {
+ "name": "ლიბáƒáƒœáƒ˜"
+ },
+ "LR": {
+ "name": "ლიბერიáƒ"
+ },
+ "LY": {
+ "name": "ლიბიáƒ"
+ },
+ "LT": {
+ "name": "ლიტვáƒ"
+ },
+ "LI": {
+ "name": "ლიხტენშტეინი"
+ },
+ "LU": {
+ "name": "ლუქსემბურგი"
+ },
+ "MG": {
+ "name": "მáƒáƒ“áƒáƒ’áƒáƒ¡áƒ™áƒáƒ áƒ˜"
+ },
+ "MU": {
+ "name": "მáƒáƒ•áƒ áƒ˜áƒ™áƒ˜"
+ },
+ "MR": {
+ "name": "მáƒáƒ•áƒ áƒ˜áƒ¢áƒáƒœáƒ˜áƒ"
+ },
+ "YT": {
+ "name": "მáƒáƒ˜áƒáƒ¢áƒ"
+ },
+ "MO": {
+ "name": "მáƒáƒ™áƒáƒáƒ¡ სპეციáƒáƒšáƒ£áƒ áƒ˜ áƒáƒ“მინისტრáƒáƒªáƒ˜áƒ£áƒšáƒ˜ რეგიáƒáƒœáƒ˜ ჩინეთი"
+ },
+ "MK": {
+ "name": "მáƒáƒ™áƒ”დáƒáƒœáƒ˜áƒ"
+ },
+ "MW": {
+ "name": "მáƒáƒšáƒáƒ•áƒ˜"
+ },
+ "MY": {
+ "name": "მáƒáƒšáƒáƒ˜áƒ–იáƒ"
+ },
+ "MV": {
+ "name": "მáƒáƒšáƒ“ივის კუნძულები"
+ },
+ "ML": {
+ "name": "მáƒáƒšáƒ˜"
+ },
+ "MT": {
+ "name": "მáƒáƒšáƒ¢áƒ"
+ },
+ "MA": {
+ "name": "მáƒáƒ áƒáƒ™áƒ"
+ },
+ "MQ": {
+ "name": "მáƒáƒ áƒ¢áƒ˜áƒœáƒ˜áƒ™áƒ"
+ },
+ "MH": {
+ "name": "მáƒáƒ áƒ¨áƒáƒšáƒ˜áƒ¡ კუნძულები"
+ },
+ "IM": {
+ "name": "მენის კუნძული"
+ },
+ "MX": {
+ "name": "მექსიკáƒ"
+ },
+ "MM": {
+ "name": "მიáƒáƒœáƒ›áƒáƒ áƒ˜ (ბირმáƒ)"
+ },
+ "FM": {
+ "name": "მიკრáƒáƒœáƒ”ზიáƒ"
+ },
+ "MZ": {
+ "name": "მáƒáƒ–áƒáƒ›áƒ‘იკი"
+ },
+ "MD": {
+ "name": "მáƒáƒšáƒ“áƒáƒ•áƒ"
+ },
+ "MC": {
+ "name": "მáƒáƒœáƒáƒ™áƒ"
+ },
+ "MS": {
+ "name": "მáƒáƒœáƒ¡áƒ”რáƒáƒ¢áƒ˜"
+ },
+ "ME": {
+ "name": "მáƒáƒœáƒ¢áƒ”ნეგრáƒ"
+ },
+ "MN": {
+ "name": "მáƒáƒœáƒ¦áƒáƒšáƒ”თი"
+ },
+ "NA": {
+ "name": "ნáƒáƒ›áƒ˜áƒ‘იáƒ"
+ },
+ "NR": {
+ "name": "ნáƒáƒ£áƒ áƒ£"
+ },
+ "NP": {
+ "name": "ნეპáƒáƒšáƒ˜"
+ },
+ "NE": {
+ "name": "ნიგერი"
+ },
+ "NG": {
+ "name": "ნიგერიáƒ"
+ },
+ "NL": {
+ "name": "ნიდერლáƒáƒœáƒ“ები"
+ },
+ "NI": {
+ "name": "ნიკáƒáƒ áƒáƒ’უáƒ"
+ },
+ "NU": {
+ "name": "ნიუე"
+ },
+ "NO": {
+ "name": "ნáƒáƒ áƒ•áƒ”გიáƒ"
+ },
+ "NF": {
+ "name": "ნáƒáƒ áƒ¤áƒáƒšáƒ™áƒ˜áƒ¡ კუნძული"
+ },
+ "OM": {
+ "name": "áƒáƒ›áƒáƒœáƒ˜"
+ },
+ "PK": {
+ "name": "პáƒáƒ™áƒ˜áƒ¡áƒ¢áƒáƒœáƒ˜"
+ },
+ "PW": {
+ "name": "პáƒáƒšáƒáƒ£"
+ },
+ "PS": {
+ "name": "პáƒáƒšáƒ”სტინის ტერიტáƒáƒ áƒ˜áƒ”ბი"
+ },
+ "PA": {
+ "name": "პáƒáƒœáƒáƒ›áƒ"
+ },
+ "PG": {
+ "name": "პáƒáƒžáƒ£áƒ-áƒáƒ®áƒáƒšáƒ˜ გვინეáƒ"
+ },
+ "PY": {
+ "name": "პáƒáƒ áƒáƒ’ვáƒáƒ˜"
+ },
+ "PE": {
+ "name": "პერუ"
+ },
+ "PN": {
+ "name": "პიტკერნის კუნძულები"
+ },
+ "PL": {
+ "name": "პáƒáƒšáƒáƒœáƒ”თი"
+ },
+ "PT": {
+ "name": "პáƒáƒ áƒ¢áƒ£áƒ’áƒáƒšáƒ˜áƒ"
+ },
+ "PR": {
+ "name": "პუერტáƒ-რიკáƒ"
+ },
+ "RE": {
+ "name": "რეუნიáƒáƒœáƒ˜"
+ },
+ "RW": {
+ "name": "რუáƒáƒœáƒ“áƒ"
+ },
+ "RO": {
+ "name": "რუმინეთი"
+ },
+ "RU": {
+ "name": "რუსეთი"
+ },
+ "GR": {
+ "name": "სáƒáƒ‘ერძნეთი"
+ },
+ "SV": {
+ "name": "სáƒáƒšáƒ•áƒáƒ“áƒáƒ áƒ˜"
+ },
+ "WS": {
+ "name": "სáƒáƒ›áƒáƒ"
+ },
+ "ZA": {
+ "name": "სáƒáƒ›áƒ®áƒ áƒ”თ áƒáƒ¤áƒ áƒ˜áƒ™áƒ"
+ },
+ "GS": {
+ "name": "სáƒáƒ›áƒ®áƒ áƒ”თი გეáƒáƒ áƒ’ირდრსáƒáƒ›áƒ®áƒ áƒ”თ სენდვიჩის კუნძულები"
+ },
+ "KR": {
+ "name": "სáƒáƒ›áƒ®áƒ áƒ”თი კáƒáƒ áƒ”áƒ"
+ },
+ "SS": {
+ "name": "სáƒáƒ›áƒ®áƒ áƒ”თი სუდáƒáƒœáƒ˜"
+ },
+ "SM": {
+ "name": "სáƒáƒœ-მáƒáƒ áƒ˜áƒœáƒ"
+ },
+ "ST": {
+ "name": "სáƒáƒœ-ტáƒáƒ›áƒ” დრპრინსიპი"
+ },
+ "SA": {
+ "name": "სáƒáƒ£áƒ“ის áƒáƒ áƒáƒ‘ეთი"
+ },
+ "FR": {
+ "name": "სáƒáƒ¤áƒ áƒáƒœáƒ’ეთი"
+ },
+ "GE": {
+ "name": "სáƒáƒ¥áƒáƒ áƒ—ველáƒ"
+ },
+ "SC": {
+ "name": "სეიშელის კუნძულები"
+ },
+ "BL": {
+ "name": "სენ-ბáƒáƒ áƒ—ლემი"
+ },
+ "MF": {
+ "name": "სენ-მáƒáƒ áƒ¢áƒ”ნი"
+ },
+ "PM": {
+ "name": "სენ-პიერი დრმიკელáƒáƒœáƒ˜"
+ },
+ "SN": {
+ "name": "სენეგáƒáƒšáƒ˜"
+ },
+ "VC": {
+ "name": "სენტ-ვინსენტი დრგრენáƒáƒ“ინები"
+ },
+ "KN": {
+ "name": "სენტ-კიტსი დრნევისი"
+ },
+ "LC": {
+ "name": "სენტ-ლუსიáƒ"
+ },
+ "RS": {
+ "name": "სერბეთი"
+ },
+ "EA": {
+ "name": "სეუტრდრმელილáƒ"
+ },
+ "SZ": {
+ "name": "სვáƒáƒ–ილენდი"
+ },
+ "SL": {
+ "name": "სიერáƒ-ლეáƒáƒœáƒ”"
+ },
+ "SG": {
+ "name": "სინგáƒáƒžáƒ£áƒ áƒ˜"
+ },
+ "SX": {
+ "name": "სინტ-მáƒáƒ áƒ¢áƒ”ნი"
+ },
+ "SY": {
+ "name": "სირიáƒ"
+ },
+ "SK": {
+ "name": "სლáƒáƒ•áƒáƒ™áƒ”თი"
+ },
+ "SI": {
+ "name": "სლáƒáƒ•áƒ”ნიáƒ"
+ },
+ "SB": {
+ "name": "სáƒáƒšáƒáƒ›áƒáƒœáƒ˜áƒ¡ კუნძულები"
+ },
+ "SO": {
+ "name": "სáƒáƒ›áƒáƒšáƒ˜"
+ },
+ "AM": {
+ "name": "სáƒáƒ›áƒ®áƒ”თი"
+ },
+ "SD": {
+ "name": "სუდáƒáƒœáƒ˜"
+ },
+ "SR": {
+ "name": "სურინáƒáƒ›áƒ˜"
+ },
+ "TW": {
+ "name": "ტáƒáƒ˜áƒ•áƒáƒœáƒ˜"
+ },
+ "TH": {
+ "name": "ტáƒáƒ˜áƒšáƒáƒœáƒ“ი"
+ },
+ "TZ": {
+ "name": "ტáƒáƒœáƒ–áƒáƒœáƒ˜áƒ"
+ },
+ "TJ": {
+ "name": "ტáƒáƒ¯áƒ˜áƒ™áƒ”თი"
+ },
+ "TC": {
+ "name": "ტერკსის დრკáƒáƒ˜áƒ™áƒáƒ¡áƒ˜áƒ¡ კუნძულები"
+ },
+ "TL": {
+ "name": "ტიმáƒáƒ -ლეშტი"
+ },
+ "TG": {
+ "name": "ტáƒáƒ’áƒ"
+ },
+ "TK": {
+ "name": "ტáƒáƒ™áƒ”ლáƒáƒ£"
+ },
+ "TO": {
+ "name": "ტáƒáƒœáƒ’áƒ"
+ },
+ "TT": {
+ "name": "ტრინიდáƒáƒ“ი დრტáƒáƒ‘áƒáƒ’áƒ"
+ },
+ "TA": {
+ "name": "ტრისტáƒáƒœ-დáƒ-კუნიáƒ"
+ },
+ "TV": {
+ "name": "ტუვáƒáƒšáƒ£"
+ },
+ "TN": {
+ "name": "ტუნისი"
+ },
+ "UG": {
+ "name": "უგáƒáƒœáƒ“áƒ"
+ },
+ "UZ": {
+ "name": "უზბეკეთი"
+ },
+ "UA": {
+ "name": "უკრáƒáƒ˜áƒœáƒ"
+ },
+ "HU": {
+ "name": "უნგრეთი"
+ },
+ "WF": {
+ "name": "უáƒáƒšáƒ˜áƒ¡áƒ˜ დრფუტუნáƒ"
+ },
+ "UY": {
+ "name": "ურუგვáƒáƒ˜"
+ },
+ "FO": {
+ "name": "ფáƒáƒ áƒ”რის კუნძულები"
+ },
+ "PH": {
+ "name": "ფილიპინები"
+ },
+ "FI": {
+ "name": "ფინეთი"
+ },
+ "FJ": {
+ "name": "ფიჯი"
+ },
+ "FK": {
+ "name": "ფáƒáƒšáƒ™áƒšáƒ”ნდის კუნძულები"
+ },
+ "GF": {
+ "name": "ფრáƒáƒœáƒ’ული გვიáƒáƒœáƒ"
+ },
+ "PF": {
+ "name": "ფრáƒáƒœáƒ’ული პáƒáƒšáƒ˜áƒœáƒ”ზიáƒ"
+ },
+ "TF": {
+ "name": "ფრáƒáƒœáƒ’ული სáƒáƒ›áƒ®áƒ áƒ”თის ტერიტáƒáƒ áƒ˜áƒ”ბი"
+ },
+ "VA": {
+ "name": "ქáƒáƒšáƒáƒ¥áƒ˜ ვáƒáƒ¢áƒ˜áƒ™áƒáƒœáƒ˜"
+ },
+ "CC": {
+ "name": "ქáƒáƒ¥áƒáƒ¡áƒ˜áƒ¡ (კილინგის) კუნძულები"
+ },
+ "KW": {
+ "name": "ქუვეითი"
+ },
+ "KZ": {
+ "name": "ყáƒáƒ–áƒáƒ®áƒ”თი"
+ },
+ "KG": {
+ "name": "ყირგიზეთი"
+ },
+ "SE": {
+ "name": "შვედეთი"
+ },
+ "CH": {
+ "name": "შვეიცáƒáƒ áƒ˜áƒ"
+ },
+ "CX": {
+ "name": "შáƒáƒ‘ის კუნძული"
+ },
+ "SJ": {
+ "name": "შპიცბერგენი დრიáƒáƒœ-მáƒáƒ˜áƒ”ნი"
+ },
+ "LK": {
+ "name": "შრი-ლáƒáƒœáƒ™áƒ"
+ },
+ "TD": {
+ "name": "ჩáƒáƒ“ი"
+ },
+ "CZ": {
+ "name": "ჩეხეთის რესპუბლიკáƒ"
+ },
+ "CL": {
+ "name": "ჩილე"
+ },
+ "CN": {
+ "name": "ჩინეთი"
+ },
+ "MP": {
+ "name": "ჩრდილáƒáƒ”თ მáƒáƒ áƒ˜áƒáƒœáƒáƒ¡ კუნძულები"
+ },
+ "KP": {
+ "name": "ჩრდილáƒáƒ”თი კáƒáƒ áƒ”áƒ"
+ },
+ "CF": {
+ "name": "ცენტრáƒáƒšáƒ£áƒ áƒ˜ áƒáƒ¤áƒ áƒ˜áƒ™áƒ˜áƒ¡ რესპუბლიკáƒ"
+ },
+ "SH": {
+ "name": "წმინდრელენეს კუნძული"
+ },
+ "HR": {
+ "name": "ხáƒáƒ áƒ•áƒáƒ¢áƒ˜áƒ"
+ },
+ "JE": {
+ "name": "ჯერსი"
+ },
+ "DJ": {
+ "name": "ჯიბუტი"
+ },
+ "HT": {
+ "name": "ჰáƒáƒ˜áƒ¢áƒ˜"
+ },
+ "HN": {
+ "name": "ჰáƒáƒœáƒ“ურáƒáƒ¡áƒ˜"
+ },
+ "HK": {
+ "name": "ჰáƒáƒœáƒ™áƒáƒœáƒ’ის სპეციáƒáƒšáƒ£áƒ áƒ˜ áƒáƒ“მინისტრáƒáƒªáƒ˜áƒ£áƒšáƒ˜ რეგიáƒáƒœáƒ˜ ჩინეთი"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/country/kab.json b/library/intl/resources/country/kab.json
new file mode 100644
index 000000000..e247f8ebf
--- /dev/null
+++ b/library/intl/resources/country/kab.json
@@ -0,0 +1,761 @@
+{
+ "AF": {
+ "name": "Afɣanistan"
+ },
+ "IO": {
+ "name": "Akal Aglizi deg Ugaraw Ahendi"
+ },
+ "AX": {
+ "name": "Ã…land Islands"
+ },
+ "AQ": {
+ "name": "Antarctica"
+ },
+ "AR": {
+ "name": "Arjuntin"
+ },
+ "AM": {
+ "name": "Arminya"
+ },
+ "AW": {
+ "name": "Aruba"
+ },
+ "AC": {
+ "name": "Ascension Island"
+ },
+ "VA": {
+ "name": "Awanek n Vatikan"
+ },
+ "AZ": {
+ "name": "Azrabijan"
+ },
+ "BS": {
+ "name": "Bahamas"
+ },
+ "BH": {
+ "name": "Baḥrin"
+ },
+ "BD": {
+ "name": "Bangladac"
+ },
+ "BB": {
+ "name": "Barbadus"
+ },
+ "BE": {
+ "name": "Belǧik"
+ },
+ "BM": {
+ "name": "Bermuda"
+ },
+ "BT": {
+ "name": "Bhutan"
+ },
+ "BY": {
+ "name": "Bilarus"
+ },
+ "BZ": {
+ "name": "Biliz"
+ },
+ "BJ": {
+ "name": "Binin"
+ },
+ "BR": {
+ "name": "Brizil"
+ },
+ "BN": {
+ "name": "Bruney"
+ },
+ "BG": {
+ "name": "Bulgari"
+ },
+ "BO": {
+ "name": "Bulivi"
+ },
+ "BI": {
+ "name": "Burandi"
+ },
+ "BF": {
+ "name": "Burkina Fasu"
+ },
+ "BA": {
+ "name": "Busna d Hersek"
+ },
+ "BW": {
+ "name": "Bustwana"
+ },
+ "TD": {
+ "name": "ÄŒad"
+ },
+ "KH": {
+ "name": "Cambudya"
+ },
+ "IC": {
+ "name": "Canary Islands"
+ },
+ "BQ": {
+ "name": "Caribbean Netherlands"
+ },
+ "CZ": {
+ "name": "ÄŒÄek"
+ },
+ "EA": {
+ "name": "Ceuta & Melilla"
+ },
+ "CX": {
+ "name": "Christmas Island"
+ },
+ "CL": {
+ "name": "Cili"
+ },
+ "CY": {
+ "name": "Cipr"
+ },
+ "CC": {
+ "name": "Cocos (Keeling) Islands"
+ },
+ "CW": {
+ "name": "Curaçao"
+ },
+ "DK": {
+ "name": "Denmark"
+ },
+ "DG": {
+ "name": "Diego Garcia"
+ },
+ "DM": {
+ "name": "Duminik"
+ },
+ "OM": {
+ "name": "Æuman"
+ },
+ "PS": {
+ "name": "Falisṭin d Ɣezza"
+ },
+ "FO": {
+ "name": "Faroe Islands"
+ },
+ "FJ": {
+ "name": "Fiji"
+ },
+ "PH": {
+ "name": "Filipin"
+ },
+ "FI": {
+ "name": "Finlund"
+ },
+ "FR": {
+ "name": "Fransa"
+ },
+ "TF": {
+ "name": "French Southern Territories"
+ },
+ "GA": {
+ "name": "Gabun"
+ },
+ "GM": {
+ "name": "Gambya"
+ },
+ "DJ": {
+ "name": "Ǧibuti"
+ },
+ "GD": {
+ "name": "Grunad"
+ },
+ "GL": {
+ "name": "Grunland"
+ },
+ "GG": {
+ "name": "Guernsey"
+ },
+ "GY": {
+ "name": "Guwana"
+ },
+ "GP": {
+ "name": "Gwadalupi"
+ },
+ "GU": {
+ "name": "Gwam"
+ },
+ "GT": {
+ "name": "Gwatimala"
+ },
+ "GH": {
+ "name": "Ɣana"
+ },
+ "GF": {
+ "name": "Ɣana tafransist"
+ },
+ "GN": {
+ "name": "Ɣinya"
+ },
+ "PG": {
+ "name": "Ɣinya Tamaynut Tapaput"
+ },
+ "GQ": {
+ "name": "Ɣinya Tasebgast"
+ },
+ "GW": {
+ "name": "Ɣinya-Bisaw"
+ },
+ "HT": {
+ "name": "Hayti"
+ },
+ "HK": {
+ "name": "Hong Kong SAR China"
+ },
+ "HN": {
+ "name": "Hunduras"
+ },
+ "HU": {
+ "name": "Hungri"
+ },
+ "EC": {
+ "name": "Ikwaá¹­ur"
+ },
+ "ID": {
+ "name": "Indunizi"
+ },
+ "IR": {
+ "name": "Iran"
+ },
+ "ER": {
+ "name": "Iritiria"
+ },
+ "IS": {
+ "name": "Island"
+ },
+ "IM": {
+ "name": "Isle of Man"
+ },
+ "EE": {
+ "name": "Istunya"
+ },
+ "IL": {
+ "name": "Izrayil"
+ },
+ "JM": {
+ "name": "Jamyika"
+ },
+ "JP": {
+ "name": "Jappu"
+ },
+ "JE": {
+ "name": "Jersey"
+ },
+ "GI": {
+ "name": "Jibraltar"
+ },
+ "GE": {
+ "name": "Jiyurji"
+ },
+ "NC": {
+ "name": "Kalidunya Tamaynut"
+ },
+ "CM": {
+ "name": "Kamirun"
+ },
+ "CA": {
+ "name": "Kanada"
+ },
+ "KZ": {
+ "name": "Kazaxistan"
+ },
+ "HR": {
+ "name": "Kerwasya"
+ },
+ "KE": {
+ "name": "Kinya"
+ },
+ "KI": {
+ "name": "Kiribati"
+ },
+ "KG": {
+ "name": "Kirigistan"
+ },
+ "XK": {
+ "name": "Kosovo"
+ },
+ "CU": {
+ "name": "Kuba"
+ },
+ "CO": {
+ "name": "Kulumbi"
+ },
+ "KM": {
+ "name": "Kumur"
+ },
+ "CG": {
+ "name": "Kungu"
+ },
+ "KP": {
+ "name": "Kurya, Ufella"
+ },
+ "KR": {
+ "name": "Kurya, Wadda"
+ },
+ "CR": {
+ "name": "Kusta Rika"
+ },
+ "CI": {
+ "name": "Kuá¹­ Divwar"
+ },
+ "KW": {
+ "name": "Kuwayt"
+ },
+ "CN": {
+ "name": "Lacin"
+ },
+ "GR": {
+ "name": "Lagris"
+ },
+ "JO": {
+ "name": "Lajurdani"
+ },
+ "AL": {
+ "name": "Lalbani"
+ },
+ "DE": {
+ "name": "Lalman"
+ },
+ "LV": {
+ "name": "Latvia"
+ },
+ "LA": {
+ "name": "Laws"
+ },
+ "LI": {
+ "name": "Layctenstan"
+ },
+ "DZ": {
+ "name": "Lezzayer"
+ },
+ "IQ": {
+ "name": "Lɛiraq"
+ },
+ "IN": {
+ "name": "Lhend"
+ },
+ "LR": {
+ "name": "Libirya"
+ },
+ "LY": {
+ "name": "Libya"
+ },
+ "IE": {
+ "name": "Lirlund"
+ },
+ "LT": {
+ "name": "Liá¹­wanya"
+ },
+ "LS": {
+ "name": "Lizuá¹­u"
+ },
+ "MA": {
+ "name": "Lmerruk"
+ },
+ "LB": {
+ "name": "Lubnan"
+ },
+ "LU": {
+ "name": "Luksamburg"
+ },
+ "YE": {
+ "name": "Lyamen"
+ },
+ "MO": {
+ "name": "Macau SAR China"
+ },
+ "MG": {
+ "name": "Madaɣecqer"
+ },
+ "MW": {
+ "name": "Malawi"
+ },
+ "MV": {
+ "name": "Maldib"
+ },
+ "ML": {
+ "name": "Mali"
+ },
+ "MY": {
+ "name": "Malizya"
+ },
+ "MT": {
+ "name": "Malá¹­"
+ },
+ "MQ": {
+ "name": "Martinik"
+ },
+ "MK": {
+ "name": "Masidwan"
+ },
+ "EG": {
+ "name": "Maá¹£r"
+ },
+ "YT": {
+ "name": "Mayuá¹­"
+ },
+ "MX": {
+ "name": "Meksik"
+ },
+ "FM": {
+ "name": "Mikrunizya"
+ },
+ "ME": {
+ "name": "Montenegro"
+ },
+ "MD": {
+ "name": "Muldabi"
+ },
+ "MC": {
+ "name": "Munaku"
+ },
+ "MN": {
+ "name": "Mungulya"
+ },
+ "MS": {
+ "name": "Munsirat"
+ },
+ "MU": {
+ "name": "Muris"
+ },
+ "MR": {
+ "name": "Muriá¹­anya"
+ },
+ "MZ": {
+ "name": "Muzembiq"
+ },
+ "MM": {
+ "name": "Myanmar"
+ },
+ "NA": {
+ "name": "Namibya"
+ },
+ "NE": {
+ "name": "Nijer"
+ },
+ "NG": {
+ "name": "Nijirya"
+ },
+ "NI": {
+ "name": "Nikaragwa"
+ },
+ "NP": {
+ "name": "Nipal"
+ },
+ "NU": {
+ "name": "Niwi"
+ },
+ "NR": {
+ "name": "Nuru"
+ },
+ "NO": {
+ "name": "Nurvij"
+ },
+ "PK": {
+ "name": "Pakistan"
+ },
+ "PW": {
+ "name": "Palu"
+ },
+ "PA": {
+ "name": "Panam"
+ },
+ "PY": {
+ "name": "Paragway"
+ },
+ "PE": {
+ "name": "Piru"
+ },
+ "PN": {
+ "name": "Pitkarin"
+ },
+ "PL": {
+ "name": "Pulund"
+ },
+ "PF": {
+ "name": "Pulunizi tafransist"
+ },
+ "PR": {
+ "name": "Purtu Riku"
+ },
+ "PT": {
+ "name": "Purtugal"
+ },
+ "QA": {
+ "name": "Qaá¹­ar"
+ },
+ "RU": {
+ "name": "Rrus"
+ },
+ "RO": {
+ "name": "Rumani"
+ },
+ "RW": {
+ "name": "Ruwanda"
+ },
+ "SV": {
+ "name": "Salvadur"
+ },
+ "WS": {
+ "name": "Samwa"
+ },
+ "AS": {
+ "name": "Samwa Tamarikanit"
+ },
+ "KN": {
+ "name": "San Kits d Nivis"
+ },
+ "LC": {
+ "name": "San LuÄya"
+ },
+ "SM": {
+ "name": "San Marinu"
+ },
+ "PM": {
+ "name": "San Pyar d Miklun"
+ },
+ "VC": {
+ "name": "San Vansu d Grunadin"
+ },
+ "SH": {
+ "name": "Sant Ilina"
+ },
+ "ST": {
+ "name": "Saw Tumi d Pransip"
+ },
+ "RS": {
+ "name": "Serbia"
+ },
+ "SC": {
+ "name": "Seycel"
+ },
+ "SG": {
+ "name": "Singafur"
+ },
+ "SN": {
+ "name": "Sinigal"
+ },
+ "SX": {
+ "name": "Sint Maarten"
+ },
+ "SL": {
+ "name": "Sira Lyun"
+ },
+ "SK": {
+ "name": "Sluvakya"
+ },
+ "SI": {
+ "name": "Sluvinya"
+ },
+ "GS": {
+ "name": "South Georgia & South Sandwich Islands"
+ },
+ "SS": {
+ "name": "South Sudan"
+ },
+ "ES": {
+ "name": "Spanya"
+ },
+ "LK": {
+ "name": "Sri Lanka"
+ },
+ "BL": {
+ "name": "St. Barthélemy"
+ },
+ "MF": {
+ "name": "St. Martin"
+ },
+ "SD": {
+ "name": "Sudan"
+ },
+ "SA": {
+ "name": "Suɛudiya Taɛrabt"
+ },
+ "SO": {
+ "name": "á¹¢umal"
+ },
+ "SR": {
+ "name": "Surinam"
+ },
+ "SY": {
+ "name": "Surya"
+ },
+ "SJ": {
+ "name": "Svalbard & Jan Mayen"
+ },
+ "SZ": {
+ "name": "Swazilund"
+ },
+ "SE": {
+ "name": "Swid"
+ },
+ "CH": {
+ "name": "Swis"
+ },
+ "ZA": {
+ "name": "Tafriqt Wadda"
+ },
+ "GB": {
+ "name": "Tagelda Yedduklen"
+ },
+ "TJ": {
+ "name": "Tajikistan"
+ },
+ "TZ": {
+ "name": "Ṭanzanya"
+ },
+ "TH": {
+ "name": "Ṭayland"
+ },
+ "TW": {
+ "name": "Ṭaywan"
+ },
+ "IT": {
+ "name": "Ṭelyan"
+ },
+ "CF": {
+ "name": "Tigduda n Tefriqt Talemmast"
+ },
+ "DO": {
+ "name": "Tigduda Taduminikit"
+ },
+ "CD": {
+ "name": "Tigduda Tagdudant n Kungu"
+ },
+ "AE": {
+ "name": "Tigeldunin Yedduklen Taɛrabin"
+ },
+ "FK": {
+ "name": "Tigzirin n Falkland"
+ },
+ "KY": {
+ "name": "Tigzirin n Kamyan"
+ },
+ "CK": {
+ "name": "Tigzirin n Kuk"
+ },
+ "MH": {
+ "name": "Tigzirin n Marcal"
+ },
+ "MP": {
+ "name": "Tigzirin n Maryan Ufella"
+ },
+ "SB": {
+ "name": "Tigzirin n Sulumun"
+ },
+ "CV": {
+ "name": "Tigzirin n yixef azegzaw"
+ },
+ "NF": {
+ "name": "Tigzirin Tinawfukin"
+ },
+ "VG": {
+ "name": "Tigzirin Tiverjiniyin Tigliziyin"
+ },
+ "RE": {
+ "name": "Timlilit"
+ },
+ "NL": {
+ "name": "Timura-Yessakesren"
+ },
+ "TT": {
+ "name": "Ṭrindad d Ṭubagu"
+ },
+ "TA": {
+ "name": "Tristan da Cunha"
+ },
+ "TG": {
+ "name": "Ṭugu"
+ },
+ "TK": {
+ "name": "Ṭuklu"
+ },
+ "TL": {
+ "name": "Tumur Asamar"
+ },
+ "TN": {
+ "name": "Tunes"
+ },
+ "TO": {
+ "name": "Ṭunga"
+ },
+ "TR": {
+ "name": "Ṭurk"
+ },
+ "TC": {
+ "name": "Ṭurk d Tegzirin n Kaykus"
+ },
+ "TM": {
+ "name": "Ṭurkmanistan"
+ },
+ "TV": {
+ "name": "Ṭuvalu"
+ },
+ "UM": {
+ "name": "U.S. Outlying Islands"
+ },
+ "UG": {
+ "name": "UÉ£anda"
+ },
+ "UA": {
+ "name": "Ukran"
+ },
+ "AD": {
+ "name": "Undura"
+ },
+ "AI": {
+ "name": "Ungiya"
+ },
+ "AO": {
+ "name": "Ungula"
+ },
+ "AG": {
+ "name": "Untiga d Barbuda"
+ },
+ "UY": {
+ "name": "Urugway"
+ },
+ "AU": {
+ "name": "Ustrali"
+ },
+ "AT": {
+ "name": "Ustriya"
+ },
+ "ET": {
+ "name": "Utyupi"
+ },
+ "UZ": {
+ "name": "Uzbaxistan"
+ },
+ "VU": {
+ "name": "Vanwatu"
+ },
+ "VE": {
+ "name": "Venzwila"
+ },
+ "VN": {
+ "name": "Vyeá¹­nam"
+ },
+ "VI": {
+ "name": "W.D. Tigzirin n Virginya"
+ },
+ "WF": {
+ "name": "Wallis d Futuna"
+ },
+ "US": {
+ "name": "WDM"
+ },
+ "EH": {
+ "name": "Western Sahara"
+ },
+ "ZM": {
+ "name": "Zambya"
+ },
+ "NZ": {
+ "name": "Ziland Tamaynut"
+ },
+ "ZW": {
+ "name": "Zimbabwi"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/country/kam.json b/library/intl/resources/country/kam.json
new file mode 100644
index 000000000..f14e98d5e
--- /dev/null
+++ b/library/intl/resources/country/kam.json
@@ -0,0 +1,761 @@
+{
+ "ZA": {
+ "name": "Afrika Kusini"
+ },
+ "AF": {
+ "name": "Afuganistani"
+ },
+ "IS": {
+ "name": "Aislandi"
+ },
+ "AR": {
+ "name": "Ajentina"
+ },
+ "AX": {
+ "name": "Ã…land Islands"
+ },
+ "AL": {
+ "name": "Albania"
+ },
+ "DZ": {
+ "name": "Aljeria"
+ },
+ "AD": {
+ "name": "Andora"
+ },
+ "AO": {
+ "name": "Angola"
+ },
+ "AI": {
+ "name": "Anguilla"
+ },
+ "AQ": {
+ "name": "Antarctica"
+ },
+ "AG": {
+ "name": "Antigua na Barbuda"
+ },
+ "AM": {
+ "name": "Armenia"
+ },
+ "AW": {
+ "name": "Aruba"
+ },
+ "AC": {
+ "name": "Ascension Island"
+ },
+ "AU": {
+ "name": "Australia"
+ },
+ "AT": {
+ "name": "Austria"
+ },
+ "IE": {
+ "name": "Ayalandi"
+ },
+ "AZ": {
+ "name": "Azabajani"
+ },
+ "BB": {
+ "name": "Babadosi"
+ },
+ "BS": {
+ "name": "Bahama"
+ },
+ "BH": {
+ "name": "Bahareni"
+ },
+ "BD": {
+ "name": "Bangladeshi"
+ },
+ "BY": {
+ "name": "Belarusi"
+ },
+ "BZ": {
+ "name": "Belize"
+ },
+ "BJ": {
+ "name": "Benini"
+ },
+ "BM": {
+ "name": "Bermuda"
+ },
+ "BO": {
+ "name": "Bolivia"
+ },
+ "BA": {
+ "name": "Bosnia na Hezegovina"
+ },
+ "BW": {
+ "name": "Botswana"
+ },
+ "BR": {
+ "name": "Brazili"
+ },
+ "BN": {
+ "name": "Brunei"
+ },
+ "BF": {
+ "name": "Bukinafaso"
+ },
+ "MG": {
+ "name": "Bukini"
+ },
+ "BG": {
+ "name": "Bulgaria"
+ },
+ "BT": {
+ "name": "Butani"
+ },
+ "IC": {
+ "name": "Canary Islands"
+ },
+ "BQ": {
+ "name": "Caribbean Netherlands"
+ },
+ "EA": {
+ "name": "Ceuta & Melilla"
+ },
+ "TD": {
+ "name": "Chadi"
+ },
+ "CL": {
+ "name": "Chile"
+ },
+ "CX": {
+ "name": "Christmas Island"
+ },
+ "CC": {
+ "name": "Cocos (Keeling) Islands"
+ },
+ "CW": {
+ "name": "Curaçao"
+ },
+ "DK": {
+ "name": "Denmaki"
+ },
+ "DG": {
+ "name": "Diego Garcia"
+ },
+ "DM": {
+ "name": "Dominika"
+ },
+ "EC": {
+ "name": "Ekwado"
+ },
+ "SV": {
+ "name": "Elsavado"
+ },
+ "IO": {
+ "name": "Eneo la Uingereza katika Bahari Hindi"
+ },
+ "ER": {
+ "name": "Eritrea"
+ },
+ "EE": {
+ "name": "Estonia"
+ },
+ "AE": {
+ "name": "Falme za Kiarabu"
+ },
+ "FO": {
+ "name": "Faroe Islands"
+ },
+ "FJ": {
+ "name": "Fiji"
+ },
+ "PH": {
+ "name": "Filipino"
+ },
+ "TF": {
+ "name": "French Southern Territories"
+ },
+ "GA": {
+ "name": "Gaboni"
+ },
+ "GM": {
+ "name": "Gambia"
+ },
+ "GH": {
+ "name": "Ghana"
+ },
+ "GN": {
+ "name": "Gine"
+ },
+ "GW": {
+ "name": "Ginebisau"
+ },
+ "GQ": {
+ "name": "Ginekweta"
+ },
+ "GD": {
+ "name": "Grenada"
+ },
+ "GL": {
+ "name": "Grinlandi"
+ },
+ "GG": {
+ "name": "Guernsey"
+ },
+ "GY": {
+ "name": "Guyana"
+ },
+ "GP": {
+ "name": "Gwadelupe"
+ },
+ "GU": {
+ "name": "Gwam"
+ },
+ "GT": {
+ "name": "Gwatemala"
+ },
+ "GF": {
+ "name": "Gwiyana ya Ufaransa"
+ },
+ "HT": {
+ "name": "Haiti"
+ },
+ "ES": {
+ "name": "Hispania"
+ },
+ "HN": {
+ "name": "Hondurasi"
+ },
+ "HK": {
+ "name": "Hong Kong SAR China"
+ },
+ "HU": {
+ "name": "Hungaria"
+ },
+ "IN": {
+ "name": "India"
+ },
+ "ID": {
+ "name": "Indonesia"
+ },
+ "IQ": {
+ "name": "Iraki"
+ },
+ "CK": {
+ "name": "Isiwa sya Cook"
+ },
+ "KY": {
+ "name": "Isiwa sya Kayman"
+ },
+ "SB": {
+ "name": "Isiwa sya Solomon"
+ },
+ "IM": {
+ "name": "Isle of Man"
+ },
+ "IL": {
+ "name": "Israeli"
+ },
+ "IT": {
+ "name": "Italia"
+ },
+ "JM": {
+ "name": "Jamaika"
+ },
+ "CF": {
+ "name": "Jamhuri ya Afrika ya Kati"
+ },
+ "CZ": {
+ "name": "Jamhuri ya Cheki"
+ },
+ "DO": {
+ "name": "Jamhuri ya Dominika"
+ },
+ "CD": {
+ "name": "Jamhuri ya Kidemokrasia ya Kongo"
+ },
+ "JP": {
+ "name": "Japani"
+ },
+ "JE": {
+ "name": "Jersey"
+ },
+ "GI": {
+ "name": "Jibralta"
+ },
+ "DJ": {
+ "name": "Jibuti"
+ },
+ "GE": {
+ "name": "Jojia"
+ },
+ "KH": {
+ "name": "Kambodia"
+ },
+ "CM": {
+ "name": "Kameluni"
+ },
+ "CA": {
+ "name": "Kananda"
+ },
+ "QA": {
+ "name": "Katari"
+ },
+ "KZ": {
+ "name": "Kazakistani"
+ },
+ "KE": {
+ "name": "Kenya"
+ },
+ "CV": {
+ "name": "Kepuvede"
+ },
+ "KI": {
+ "name": "Kiribati"
+ },
+ "KG": {
+ "name": "Kirigizistani"
+ },
+ "NF": {
+ "name": "Kisiwa cha Norfok"
+ },
+ "CI": {
+ "name": "Kodivaa"
+ },
+ "CO": {
+ "name": "Kolombia"
+ },
+ "KM": {
+ "name": "Komoro"
+ },
+ "CG": {
+ "name": "Kongo"
+ },
+ "HR": {
+ "name": "Korasia"
+ },
+ "KP": {
+ "name": "Korea Kaskazini"
+ },
+ "KR": {
+ "name": "Korea Kusini"
+ },
+ "XK": {
+ "name": "Kosovo"
+ },
+ "CR": {
+ "name": "Kostarika"
+ },
+ "CU": {
+ "name": "Kuba"
+ },
+ "CY": {
+ "name": "Kuprosi"
+ },
+ "KW": {
+ "name": "Kuwaiti"
+ },
+ "CN": {
+ "name": "Kyaina"
+ },
+ "LA": {
+ "name": "Laosi"
+ },
+ "LU": {
+ "name": "Lasembagi"
+ },
+ "LV": {
+ "name": "Lativia"
+ },
+ "LB": {
+ "name": "Lebanoni"
+ },
+ "LS": {
+ "name": "Lesoto"
+ },
+ "LR": {
+ "name": "Liberia"
+ },
+ "LY": {
+ "name": "Libya"
+ },
+ "LI": {
+ "name": "Lishenteni"
+ },
+ "LT": {
+ "name": "Litwania"
+ },
+ "RW": {
+ "name": "Lwanda"
+ },
+ "MO": {
+ "name": "Macau SAR China"
+ },
+ "MW": {
+ "name": "Malawi"
+ },
+ "MY": {
+ "name": "Malesia"
+ },
+ "ML": {
+ "name": "Mali"
+ },
+ "MT": {
+ "name": "Malta"
+ },
+ "US": {
+ "name": "Marekani"
+ },
+ "MQ": {
+ "name": "Martiniki"
+ },
+ "MK": {
+ "name": "Masedonia"
+ },
+ "YT": {
+ "name": "Mayotte"
+ },
+ "BI": {
+ "name": "Mbulundi"
+ },
+ "MX": {
+ "name": "Meksiko"
+ },
+ "FM": {
+ "name": "Mikronesia"
+ },
+ "EG": {
+ "name": "Misili"
+ },
+ "MV": {
+ "name": "Modivu"
+ },
+ "MD": {
+ "name": "Moldova"
+ },
+ "MC": {
+ "name": "Monako"
+ },
+ "MN": {
+ "name": "Mongolia"
+ },
+ "ME": {
+ "name": "Montenegro"
+ },
+ "MS": {
+ "name": "Montserrati"
+ },
+ "MU": {
+ "name": "Morisi"
+ },
+ "MR": {
+ "name": "Moritania"
+ },
+ "MA": {
+ "name": "Moroko"
+ },
+ "MZ": {
+ "name": "Msumbiji"
+ },
+ "MM": {
+ "name": "Myama"
+ },
+ "NA": {
+ "name": "Namibia"
+ },
+ "NR": {
+ "name": "Nauru"
+ },
+ "NP": {
+ "name": "Nepali"
+ },
+ "NE": {
+ "name": "Nijeri"
+ },
+ "NG": {
+ "name": "Nijeria"
+ },
+ "NI": {
+ "name": "Nikaragwa"
+ },
+ "NU": {
+ "name": "Niue"
+ },
+ "NO": {
+ "name": "Norwe"
+ },
+ "NC": {
+ "name": "Nyukaledonia"
+ },
+ "NZ": {
+ "name": "Nyuzilandi"
+ },
+ "ZM": {
+ "name": "Nzambia"
+ },
+ "ZW": {
+ "name": "Nzimbambwe"
+ },
+ "OM": {
+ "name": "Omani"
+ },
+ "PK": {
+ "name": "Pakistani"
+ },
+ "PW": {
+ "name": "Palau"
+ },
+ "PA": {
+ "name": "Panama"
+ },
+ "PG": {
+ "name": "Papua"
+ },
+ "PY": {
+ "name": "Paragwai"
+ },
+ "PE": {
+ "name": "Peru"
+ },
+ "PN": {
+ "name": "Pitkairni"
+ },
+ "PL": {
+ "name": "Polandi"
+ },
+ "PF": {
+ "name": "Polinesia ya Ufaransa"
+ },
+ "PR": {
+ "name": "Pwetoriko"
+ },
+ "RE": {
+ "name": "Riyunioni"
+ },
+ "RO": {
+ "name": "Romania"
+ },
+ "SM": {
+ "name": "Samarino"
+ },
+ "WS": {
+ "name": "Samoa"
+ },
+ "AS": {
+ "name": "Samoa ya Marekani"
+ },
+ "SH": {
+ "name": "Santahelena"
+ },
+ "KN": {
+ "name": "Santakitzi na Nevis"
+ },
+ "LC": {
+ "name": "Santalusia"
+ },
+ "PM": {
+ "name": "Santapieri na Mikeloni"
+ },
+ "VC": {
+ "name": "Santavisenti na Grenadini"
+ },
+ "ST": {
+ "name": "Sao Tome na Principe"
+ },
+ "SA": {
+ "name": "Saudi"
+ },
+ "SN": {
+ "name": "Senegali"
+ },
+ "RS": {
+ "name": "Serbia"
+ },
+ "SC": {
+ "name": "Shelisheli"
+ },
+ "SL": {
+ "name": "Siera Leoni"
+ },
+ "SG": {
+ "name": "Singapoo"
+ },
+ "SX": {
+ "name": "Sint Maarten"
+ },
+ "SY": {
+ "name": "Siria"
+ },
+ "LK": {
+ "name": "Sirilanka"
+ },
+ "SK": {
+ "name": "Slovakia"
+ },
+ "SI": {
+ "name": "Slovenia"
+ },
+ "SO": {
+ "name": "Somalia"
+ },
+ "GS": {
+ "name": "South Georgia & South Sandwich Islands"
+ },
+ "SS": {
+ "name": "South Sudan"
+ },
+ "BL": {
+ "name": "St. Barthélemy"
+ },
+ "MF": {
+ "name": "St. Martin"
+ },
+ "SD": {
+ "name": "Sudani"
+ },
+ "SR": {
+ "name": "Surinamu"
+ },
+ "SJ": {
+ "name": "Svalbard & Jan Mayen"
+ },
+ "TH": {
+ "name": "Tailandi"
+ },
+ "TW": {
+ "name": "Taiwani"
+ },
+ "TJ": {
+ "name": "Tajikistani"
+ },
+ "TZ": {
+ "name": "Tanzania"
+ },
+ "TL": {
+ "name": "Timori ya Mashariki"
+ },
+ "TG": {
+ "name": "Togo"
+ },
+ "TK": {
+ "name": "Tokelau"
+ },
+ "TO": {
+ "name": "Tonga"
+ },
+ "TT": {
+ "name": "Trinidad na Tobago"
+ },
+ "TA": {
+ "name": "Tristan da Cunha"
+ },
+ "TN": {
+ "name": "Tunisia"
+ },
+ "TM": {
+ "name": "Turukimenistani"
+ },
+ "TV": {
+ "name": "Tuvalu"
+ },
+ "UM": {
+ "name": "U.S. Outlying Islands"
+ },
+ "IR": {
+ "name": "Uajemi"
+ },
+ "BE": {
+ "name": "Ubelgiji"
+ },
+ "FI": {
+ "name": "Ufini"
+ },
+ "GR": {
+ "name": "Ugiriki"
+ },
+ "ET": {
+ "name": "Uhabeshi"
+ },
+ "NL": {
+ "name": "Uholanzi"
+ },
+ "GB": {
+ "name": "Uingereza"
+ },
+ "DE": {
+ "name": "Ujerumani"
+ },
+ "UG": {
+ "name": "Ukanda"
+ },
+ "PS": {
+ "name": "Ukingo wa Magharibi na Ukanda wa Gaza wa Palestina"
+ },
+ "UA": {
+ "name": "Ukraini"
+ },
+ "PT": {
+ "name": "Ureno"
+ },
+ "UY": {
+ "name": "Urugwai"
+ },
+ "RU": {
+ "name": "Urusi"
+ },
+ "SZ": {
+ "name": "Uswazi"
+ },
+ "SE": {
+ "name": "Uswidi"
+ },
+ "CH": {
+ "name": "Uswisi"
+ },
+ "TR": {
+ "name": "Uturuki"
+ },
+ "FR": {
+ "name": "Uvalanza"
+ },
+ "UZ": {
+ "name": "Uzibekistani"
+ },
+ "VU": {
+ "name": "Vanuatu"
+ },
+ "VA": {
+ "name": "Vatikani"
+ },
+ "VE": {
+ "name": "Venezuela"
+ },
+ "VN": {
+ "name": "Vietinamu"
+ },
+ "FK": {
+ "name": "Visiwa vya Falkland"
+ },
+ "MP": {
+ "name": "Visiwa vya Mariana vya Kaskazini"
+ },
+ "MH": {
+ "name": "Visiwa vya Marshal"
+ },
+ "TC": {
+ "name": "Visiwa vya Turki na Kaiko"
+ },
+ "VI": {
+ "name": "Visiwa vya Virgin vya Marekani"
+ },
+ "VG": {
+ "name": "Visiwa vya Virgin vya Uingereza"
+ },
+ "WF": {
+ "name": "Walis na Futuna"
+ },
+ "EH": {
+ "name": "Western Sahara"
+ },
+ "YE": {
+ "name": "Yemeni"
+ },
+ "JO": {
+ "name": "Yordani"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/country/kde.json b/library/intl/resources/country/kde.json
new file mode 100644
index 000000000..6f68bfaed
--- /dev/null
+++ b/library/intl/resources/country/kde.json
@@ -0,0 +1,761 @@
+{
+ "AR": {
+ "name": "Adyentina"
+ },
+ "ZA": {
+ "name": "Afilika Kusini"
+ },
+ "AF": {
+ "name": "Afuganistani"
+ },
+ "IS": {
+ "name": "Aislandi"
+ },
+ "AX": {
+ "name": "Ã…land Islands"
+ },
+ "AL": {
+ "name": "Albania"
+ },
+ "DZ": {
+ "name": "Aljelia"
+ },
+ "AM": {
+ "name": "Almenia"
+ },
+ "AW": {
+ "name": "Aluba"
+ },
+ "AD": {
+ "name": "Andola"
+ },
+ "AO": {
+ "name": "Angola"
+ },
+ "AI": {
+ "name": "Angwila"
+ },
+ "AQ": {
+ "name": "Antarctica"
+ },
+ "AG": {
+ "name": "Antigua na Balbuda"
+ },
+ "AC": {
+ "name": "Ascension Island"
+ },
+ "AU": {
+ "name": "Austlalia"
+ },
+ "AT": {
+ "name": "Austlia"
+ },
+ "IE": {
+ "name": "Ayalandi"
+ },
+ "AZ": {
+ "name": "Azabadyani"
+ },
+ "BB": {
+ "name": "Babadosi"
+ },
+ "BH": {
+ "name": "Bahaleni"
+ },
+ "BS": {
+ "name": "Bahama"
+ },
+ "BD": {
+ "name": "Bangladeshi"
+ },
+ "BY": {
+ "name": "Belalusi"
+ },
+ "BZ": {
+ "name": "Belize"
+ },
+ "BM": {
+ "name": "Belmuda"
+ },
+ "BJ": {
+ "name": "Benini"
+ },
+ "BR": {
+ "name": "Blazili"
+ },
+ "BN": {
+ "name": "Blunei"
+ },
+ "BO": {
+ "name": "Bolivia"
+ },
+ "BA": {
+ "name": "Bosnia na Hezegovina"
+ },
+ "BW": {
+ "name": "Botswana"
+ },
+ "BF": {
+ "name": "Buchinafaso"
+ },
+ "MG": {
+ "name": "Bukini"
+ },
+ "BG": {
+ "name": "Bulgalia"
+ },
+ "BI": {
+ "name": "Bulundi"
+ },
+ "BT": {
+ "name": "Butani"
+ },
+ "IC": {
+ "name": "Canary Islands"
+ },
+ "BQ": {
+ "name": "Caribbean Netherlands"
+ },
+ "EA": {
+ "name": "Ceuta & Melilla"
+ },
+ "TD": {
+ "name": "Chadi"
+ },
+ "CL": {
+ "name": "Chile"
+ },
+ "CN": {
+ "name": "China"
+ },
+ "CK": {
+ "name": "Chisiwa cha Cook"
+ },
+ "FK": {
+ "name": "Chisiwa cha Falkland"
+ },
+ "KY": {
+ "name": "Chisiwa cha Kemen"
+ },
+ "MH": {
+ "name": "Chisiwa cha Malushal"
+ },
+ "MP": {
+ "name": "Chisiwa cha Marian cha Kasikazini"
+ },
+ "NF": {
+ "name": "Chisiwa cha Nolufok"
+ },
+ "SB": {
+ "name": "Chisiwa cha Solomon"
+ },
+ "TC": {
+ "name": "Chisiwa cha Tuluchi na Kaiko"
+ },
+ "VI": {
+ "name": "Chisiwa Chivihi cha Malekani"
+ },
+ "VG": {
+ "name": "Chisiwa Chivihi cha Wingalesa"
+ },
+ "CX": {
+ "name": "Christmas Island"
+ },
+ "CC": {
+ "name": "Cocos (Keeling) Islands"
+ },
+ "CW": {
+ "name": "Curaçao"
+ },
+ "DK": {
+ "name": "Denmaki"
+ },
+ "GI": {
+ "name": "Diblalta"
+ },
+ "DG": {
+ "name": "Diego Garcia"
+ },
+ "AE": {
+ "name": "Dimiliki dya Vakulungwa va Chalabu"
+ },
+ "DM": {
+ "name": "Dominika"
+ },
+ "JM": {
+ "name": "Dyamaika"
+ },
+ "JP": {
+ "name": "Dyapani"
+ },
+ "DJ": {
+ "name": "Dyibuti"
+ },
+ "GE": {
+ "name": "Dyodya"
+ },
+ "EC": {
+ "name": "Ekwado"
+ },
+ "ER": {
+ "name": "Elitilea"
+ },
+ "SV": {
+ "name": "Elsavado"
+ },
+ "EE": {
+ "name": "Estonia"
+ },
+ "FO": {
+ "name": "Faroe Islands"
+ },
+ "FJ": {
+ "name": "Fiji"
+ },
+ "PH": {
+ "name": "Filipino"
+ },
+ "TF": {
+ "name": "French Southern Territories"
+ },
+ "GA": {
+ "name": "Gaboni"
+ },
+ "GM": {
+ "name": "Gambia"
+ },
+ "GH": {
+ "name": "Ghana"
+ },
+ "GN": {
+ "name": "Gine"
+ },
+ "GW": {
+ "name": "Ginebisau"
+ },
+ "GQ": {
+ "name": "Ginekweta"
+ },
+ "GD": {
+ "name": "Glenada"
+ },
+ "GL": {
+ "name": "Glinlandi"
+ },
+ "GG": {
+ "name": "Guernsey"
+ },
+ "GY": {
+ "name": "Guyana"
+ },
+ "GP": {
+ "name": "Gwadelupe"
+ },
+ "GU": {
+ "name": "Gwam"
+ },
+ "GT": {
+ "name": "Gwatemala"
+ },
+ "GF": {
+ "name": "Gwiyana ya Ufalansa"
+ },
+ "HT": {
+ "name": "Haiti"
+ },
+ "ES": {
+ "name": "Hispania"
+ },
+ "HN": {
+ "name": "Hondulasi"
+ },
+ "HK": {
+ "name": "Hong Kong SAR China"
+ },
+ "HU": {
+ "name": "Hungalia"
+ },
+ "IQ": {
+ "name": "Ilaki"
+ },
+ "IN": {
+ "name": "India"
+ },
+ "ID": {
+ "name": "Indonesia"
+ },
+ "IL": {
+ "name": "Islaeli"
+ },
+ "IM": {
+ "name": "Isle of Man"
+ },
+ "IT": {
+ "name": "Italia"
+ },
+ "CF": {
+ "name": "Jamuhuli ya Afilika ya Paching’ati"
+ },
+ "CZ": {
+ "name": "Jamuhuli ya Chechi"
+ },
+ "CD": {
+ "name": "Jamuhuli ya Chidemoklasia ya kuKongo"
+ },
+ "DO": {
+ "name": "Jamuhuli ya Dominika"
+ },
+ "JE": {
+ "name": "Jersey"
+ },
+ "KH": {
+ "name": "Kambodia"
+ },
+ "CM": {
+ "name": "Kameluni"
+ },
+ "CA": {
+ "name": "Kanada"
+ },
+ "QA": {
+ "name": "Katali"
+ },
+ "KZ": {
+ "name": "Kazachistani"
+ },
+ "KE": {
+ "name": "Kenya"
+ },
+ "CV": {
+ "name": "Kepuvede"
+ },
+ "KI": {
+ "name": "Kilibati"
+ },
+ "KG": {
+ "name": "Kiligizistani"
+ },
+ "CI": {
+ "name": "Kodivaa"
+ },
+ "HR": {
+ "name": "Kolasia"
+ },
+ "KP": {
+ "name": "Kolea Kasikazini"
+ },
+ "KR": {
+ "name": "Kolea Kusini"
+ },
+ "CO": {
+ "name": "Kolombia"
+ },
+ "KM": {
+ "name": "Komolo"
+ },
+ "CG": {
+ "name": "Kongo"
+ },
+ "XK": {
+ "name": "Kosovo"
+ },
+ "CR": {
+ "name": "Kostalika"
+ },
+ "CU": {
+ "name": "Kuba"
+ },
+ "CY": {
+ "name": "Kuplosi"
+ },
+ "KW": {
+ "name": "Kuwaiti"
+ },
+ "LA": {
+ "name": "Laosi"
+ },
+ "LU": {
+ "name": "Lasembagi"
+ },
+ "LV": {
+ "name": "Lativia"
+ },
+ "LB": {
+ "name": "Lebanoni"
+ },
+ "LS": {
+ "name": "Lesoto"
+ },
+ "LR": {
+ "name": "Libelia"
+ },
+ "LY": {
+ "name": "Libya"
+ },
+ "IO": {
+ "name": "Lieneo lyaki Nngalesa Nbahali ya Hindi"
+ },
+ "LI": {
+ "name": "Lishenteni"
+ },
+ "LT": {
+ "name": "Litwania"
+ },
+ "RE": {
+ "name": "Liyunioni"
+ },
+ "RO": {
+ "name": "Lomania"
+ },
+ "RW": {
+ "name": "Lwanda"
+ },
+ "MO": {
+ "name": "Macau SAR China"
+ },
+ "MW": {
+ "name": "Malawi"
+ },
+ "US": {
+ "name": "Malekani"
+ },
+ "MY": {
+ "name": "Malesia"
+ },
+ "ML": {
+ "name": "Mali"
+ },
+ "MQ": {
+ "name": "Malitiniki"
+ },
+ "MT": {
+ "name": "Malta"
+ },
+ "YT": {
+ "name": "Maole"
+ },
+ "MK": {
+ "name": "Masedonia"
+ },
+ "MX": {
+ "name": "Meksiko"
+ },
+ "FM": {
+ "name": "Mikilonesia"
+ },
+ "EG": {
+ "name": "Misli"
+ },
+ "MV": {
+ "name": "Modivu"
+ },
+ "MD": {
+ "name": "Moldova"
+ },
+ "MU": {
+ "name": "Molisi"
+ },
+ "MR": {
+ "name": "Molitania"
+ },
+ "MA": {
+ "name": "Moloko"
+ },
+ "MC": {
+ "name": "Monako"
+ },
+ "MN": {
+ "name": "Mongolia"
+ },
+ "MS": {
+ "name": "Monselati"
+ },
+ "ME": {
+ "name": "Montenegro"
+ },
+ "MZ": {
+ "name": "Msumbiji"
+ },
+ "MM": {
+ "name": "Myama"
+ },
+ "NA": {
+ "name": "Namibia"
+ },
+ "NR": {
+ "name": "Naulu"
+ },
+ "PS": {
+ "name": "Nchingu wa Magalibi wa Mpanda wa kuGaza wa kuPales"
+ },
+ "NP": {
+ "name": "Nepali"
+ },
+ "NE": {
+ "name": "Nidyeli"
+ },
+ "NG": {
+ "name": "Nidyelia"
+ },
+ "NI": {
+ "name": "Nikalagwa"
+ },
+ "NU": {
+ "name": "Niue"
+ },
+ "GB": {
+ "name": "Nngalesa"
+ },
+ "NO": {
+ "name": "Norwe"
+ },
+ "NC": {
+ "name": "Nyukaledonia"
+ },
+ "NZ": {
+ "name": "Nyuzilandi"
+ },
+ "OM": {
+ "name": "Omani"
+ },
+ "PK": {
+ "name": "Pakistani"
+ },
+ "PY": {
+ "name": "Palagwai"
+ },
+ "PW": {
+ "name": "Palau"
+ },
+ "PA": {
+ "name": "Panama"
+ },
+ "PG": {
+ "name": "Papua"
+ },
+ "PE": {
+ "name": "Pelu"
+ },
+ "PN": {
+ "name": "Pitikeluni"
+ },
+ "PL": {
+ "name": "Polandi"
+ },
+ "PF": {
+ "name": "Polinesia ya Ufalansa"
+ },
+ "PR": {
+ "name": "Pwetoliko"
+ },
+ "SM": {
+ "name": "Samalino"
+ },
+ "WS": {
+ "name": "Samoa"
+ },
+ "AS": {
+ "name": "Samoa ya Malekani"
+ },
+ "SH": {
+ "name": "Santahelena"
+ },
+ "KN": {
+ "name": "Santakitzi na Nevis"
+ },
+ "LC": {
+ "name": "Santalusia"
+ },
+ "PM": {
+ "name": "Santapieli na Mikeloni"
+ },
+ "VC": {
+ "name": "Santavisenti na Glenadini"
+ },
+ "ST": {
+ "name": "Saotome na Prinsipe"
+ },
+ "SA": {
+ "name": "Saudia"
+ },
+ "SN": {
+ "name": "Senegali"
+ },
+ "RS": {
+ "name": "Serbia"
+ },
+ "SC": {
+ "name": "Shelisheli"
+ },
+ "SL": {
+ "name": "Siela Leoni"
+ },
+ "SY": {
+ "name": "Silia"
+ },
+ "LK": {
+ "name": "Sililanka"
+ },
+ "SG": {
+ "name": "Singapoo"
+ },
+ "SX": {
+ "name": "Sint Maarten"
+ },
+ "SK": {
+ "name": "Slovakia"
+ },
+ "SI": {
+ "name": "Slovenia"
+ },
+ "SO": {
+ "name": "Somalia"
+ },
+ "GS": {
+ "name": "South Georgia & South Sandwich Islands"
+ },
+ "SS": {
+ "name": "South Sudan"
+ },
+ "BL": {
+ "name": "St. Barthélemy"
+ },
+ "MF": {
+ "name": "St. Martin"
+ },
+ "SD": {
+ "name": "Sudani"
+ },
+ "SR": {
+ "name": "Sulinamu"
+ },
+ "SJ": {
+ "name": "Svalbard & Jan Mayen"
+ },
+ "TJ": {
+ "name": "Tadikistani"
+ },
+ "TH": {
+ "name": "Tailandi"
+ },
+ "TW": {
+ "name": "Taiwani"
+ },
+ "TZ": {
+ "name": "Tanzania"
+ },
+ "TT": {
+ "name": "Tilinidad na Tobago"
+ },
+ "TL": {
+ "name": "Timoli ya Mashaliki"
+ },
+ "TG": {
+ "name": "Togo"
+ },
+ "TK": {
+ "name": "Tokelau"
+ },
+ "TO": {
+ "name": "Tonga"
+ },
+ "TA": {
+ "name": "Tristan da Cunha"
+ },
+ "TM": {
+ "name": "Tuluchimenistani"
+ },
+ "TN": {
+ "name": "Tunisia"
+ },
+ "TV": {
+ "name": "Tuvalu"
+ },
+ "UM": {
+ "name": "U.S. Outlying Islands"
+ },
+ "IR": {
+ "name": "Uadyemi"
+ },
+ "BE": {
+ "name": "Ubelgidi"
+ },
+ "DE": {
+ "name": "Udyerumani"
+ },
+ "FR": {
+ "name": "Ufalansa"
+ },
+ "FI": {
+ "name": "Ufini"
+ },
+ "UG": {
+ "name": "Uganda"
+ },
+ "GR": {
+ "name": "Ugilichi"
+ },
+ "ET": {
+ "name": "Uhabeshi"
+ },
+ "NL": {
+ "name": "Uholanzi"
+ },
+ "UA": {
+ "name": "Uklaini"
+ },
+ "PT": {
+ "name": "Uleno"
+ },
+ "UY": {
+ "name": "Ulugwai"
+ },
+ "RU": {
+ "name": "Ulusi"
+ },
+ "SZ": {
+ "name": "Uswazi"
+ },
+ "SE": {
+ "name": "Uswidi"
+ },
+ "CH": {
+ "name": "Uswisi"
+ },
+ "TR": {
+ "name": "Utuluchi"
+ },
+ "UZ": {
+ "name": "Uzibechistani"
+ },
+ "VU": {
+ "name": "Vanuatu"
+ },
+ "VA": {
+ "name": "Vatikani"
+ },
+ "VE": {
+ "name": "Venezuela"
+ },
+ "VN": {
+ "name": "Vietinamu"
+ },
+ "WF": {
+ "name": "Walis na Futuna"
+ },
+ "EH": {
+ "name": "Western Sahara"
+ },
+ "YE": {
+ "name": "Yemeni"
+ },
+ "JO": {
+ "name": "Yordani"
+ },
+ "ZM": {
+ "name": "Zambia"
+ },
+ "ZW": {
+ "name": "Zimbabwe"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/country/kea.json b/library/intl/resources/country/kea.json
new file mode 100644
index 000000000..426744a03
--- /dev/null
+++ b/library/intl/resources/country/kea.json
@@ -0,0 +1,761 @@
+{
+ "AF": {
+ "name": "Afeganistãu"
+ },
+ "ZA": {
+ "name": "Afrika di Sul"
+ },
+ "HT": {
+ "name": "Aiti"
+ },
+ "AL": {
+ "name": "Albania"
+ },
+ "DE": {
+ "name": "Alimanha"
+ },
+ "AD": {
+ "name": "Andora"
+ },
+ "AI": {
+ "name": "Angila"
+ },
+ "AO": {
+ "name": "Angola"
+ },
+ "AQ": {
+ "name": "Antartika"
+ },
+ "AG": {
+ "name": "Antigua i Barbuda"
+ },
+ "SA": {
+ "name": "Arabia Saudita"
+ },
+ "DZ": {
+ "name": "Arjelia"
+ },
+ "AR": {
+ "name": "Arjentina"
+ },
+ "AM": {
+ "name": "Armenia"
+ },
+ "AW": {
+ "name": "Aruba"
+ },
+ "AU": {
+ "name": "Australia"
+ },
+ "AT": {
+ "name": "Austria"
+ },
+ "AZ": {
+ "name": "Azerbaijãu"
+ },
+ "BS": {
+ "name": "Baamas"
+ },
+ "BD": {
+ "name": "Bangladexi"
+ },
+ "BH": {
+ "name": "Barain"
+ },
+ "BB": {
+ "name": "Barbadus"
+ },
+ "BY": {
+ "name": "Belarus"
+ },
+ "BZ": {
+ "name": "Belizi"
+ },
+ "BE": {
+ "name": "Béljika"
+ },
+ "BJ": {
+ "name": "Benin"
+ },
+ "BM": {
+ "name": "Bermudas"
+ },
+ "BO": {
+ "name": "Bolivia"
+ },
+ "BA": {
+ "name": "Bosnia-Erzegovina"
+ },
+ "BW": {
+ "name": "Botsuana"
+ },
+ "BR": {
+ "name": "Brazil"
+ },
+ "BN": {
+ "name": "Brunei"
+ },
+ "BG": {
+ "name": "Bulgaria"
+ },
+ "BF": {
+ "name": "Burkina Fasu"
+ },
+ "BI": {
+ "name": "Burundi"
+ },
+ "BT": {
+ "name": "Butãu"
+ },
+ "DG": {
+ "name": "Diegu Garsia"
+ },
+ "DK": {
+ "name": "Dinamarka"
+ },
+ "DJ": {
+ "name": "Djibuti"
+ },
+ "DM": {
+ "name": "Dominika"
+ },
+ "EG": {
+ "name": "Ejitu"
+ },
+ "EC": {
+ "name": "Ekuador"
+ },
+ "SV": {
+ "name": "El Salvador"
+ },
+ "AE": {
+ "name": "Emiradus Arabi Unidu"
+ },
+ "FJ": {
+ "name": "Fidji"
+ },
+ "PH": {
+ "name": "Filipinas"
+ },
+ "FI": {
+ "name": "Finlandia"
+ },
+ "FR": {
+ "name": "Fransa"
+ },
+ "GA": {
+ "name": "Gabãu"
+ },
+ "GM": {
+ "name": "Gambia"
+ },
+ "GH": {
+ "name": "Gana"
+ },
+ "GG": {
+ "name": "Gernzi"
+ },
+ "GY": {
+ "name": "Giana"
+ },
+ "GF": {
+ "name": "Giana Franseza"
+ },
+ "GN": {
+ "name": "Gine"
+ },
+ "GQ": {
+ "name": "Gine Ekuatorial"
+ },
+ "GW": {
+ "name": "Gine-Bisau"
+ },
+ "GD": {
+ "name": "Granada"
+ },
+ "GR": {
+ "name": "Gresia"
+ },
+ "GL": {
+ "name": "Gronelandia"
+ },
+ "GP": {
+ "name": "Guadalupi"
+ },
+ "GU": {
+ "name": "Guam"
+ },
+ "GT": {
+ "name": "Guatimala"
+ },
+ "YE": {
+ "name": "Iemen"
+ },
+ "AC": {
+ "name": "Ilha di Asensãu"
+ },
+ "IM": {
+ "name": "Ilha di Man"
+ },
+ "CX": {
+ "name": "Ilha di Natal"
+ },
+ "AX": {
+ "name": "Ilhas Ã…land"
+ },
+ "IO": {
+ "name": "Ilhas Britanika di Indiku"
+ },
+ "FO": {
+ "name": "Ilhas Faroe"
+ },
+ "KY": {
+ "name": "Ilhas Kaimãu"
+ },
+ "CC": {
+ "name": "Ilhas Kokus"
+ },
+ "CK": {
+ "name": "Ilhas Kuk"
+ },
+ "FK": {
+ "name": "Ilhas Malvinas"
+ },
+ "MP": {
+ "name": "Ilhas Marianas di Norti"
+ },
+ "MH": {
+ "name": "Ilhas Marxal"
+ },
+ "MU": {
+ "name": "Ilhas Maurisia"
+ },
+ "UM": {
+ "name": "Ilhas Minoris Distantis de Stadus Unidus"
+ },
+ "NF": {
+ "name": "Ilhas Norfolk"
+ },
+ "SB": {
+ "name": "Ilhas Salumon"
+ },
+ "TC": {
+ "name": "Ilhas Turkas i Kaikus"
+ },
+ "VG": {
+ "name": "Ilhas Virjens Britanikas"
+ },
+ "VI": {
+ "name": "Ilhas Virjens Merkanu"
+ },
+ "IN": {
+ "name": "India"
+ },
+ "ID": {
+ "name": "Indonezia"
+ },
+ "IQ": {
+ "name": "Iraki"
+ },
+ "ER": {
+ "name": "Iritreia"
+ },
+ "IE": {
+ "name": "Irlanda"
+ },
+ "IR": {
+ "name": "Iron"
+ },
+ "IS": {
+ "name": "Islandia"
+ },
+ "IL": {
+ "name": "Israel"
+ },
+ "IT": {
+ "name": "Italia"
+ },
+ "ET": {
+ "name": "Itiopia"
+ },
+ "JM": {
+ "name": "Jamaika"
+ },
+ "JP": {
+ "name": "Japãu"
+ },
+ "GS": {
+ "name": "Jeórjia di Sul i Ilhas di Sanduixi di Sul"
+ },
+ "JE": {
+ "name": "Jersi"
+ },
+ "GI": {
+ "name": "Jibraltar"
+ },
+ "GE": {
+ "name": "Jiorjia"
+ },
+ "JO": {
+ "name": "Jordania"
+ },
+ "CV": {
+ "name": "Kabu Verdi"
+ },
+ "CM": {
+ "name": "Kamarõis"
+ },
+ "KH": {
+ "name": "Kambodja"
+ },
+ "KM": {
+ "name": "Kamoris"
+ },
+ "CA": {
+ "name": "Kanadá"
+ },
+ "IC": {
+ "name": "Kanárias"
+ },
+ "BQ": {
+ "name": "Karaibas olandes"
+ },
+ "QA": {
+ "name": "Katar"
+ },
+ "KZ": {
+ "name": "Kazakistãu"
+ },
+ "KE": {
+ "name": "Kenia"
+ },
+ "KG": {
+ "name": "Kirgiston"
+ },
+ "KI": {
+ "name": "Kiribati"
+ },
+ "CG": {
+ "name": "Kongu - Brazavili"
+ },
+ "CD": {
+ "name": "Kongu - Kinxasa"
+ },
+ "KP": {
+ "name": "Koreia di Norti"
+ },
+ "KR": {
+ "name": "Koreia di Sul"
+ },
+ "CI": {
+ "name": "Kosta di Marfin"
+ },
+ "CR": {
+ "name": "Kosta Rika"
+ },
+ "XK": {
+ "name": "Kozovu"
+ },
+ "HR": {
+ "name": "Kroasia"
+ },
+ "CU": {
+ "name": "Kuba"
+ },
+ "KW": {
+ "name": "Kueiti"
+ },
+ "CO": {
+ "name": "Kulombia"
+ },
+ "CW": {
+ "name": "Kurasau"
+ },
+ "LA": {
+ "name": "Laus"
+ },
+ "LV": {
+ "name": "Letonia"
+ },
+ "LS": {
+ "name": "Lezotu"
+ },
+ "LB": {
+ "name": "Libanu"
+ },
+ "LR": {
+ "name": "Liberia"
+ },
+ "LY": {
+ "name": "Libia"
+ },
+ "LT": {
+ "name": "Lituania"
+ },
+ "LI": {
+ "name": "Lixenstain"
+ },
+ "LU": {
+ "name": "Luxemburgu"
+ },
+ "MG": {
+ "name": "Madagaskar"
+ },
+ "YT": {
+ "name": "Maiote"
+ },
+ "MW": {
+ "name": "Malaui"
+ },
+ "MY": {
+ "name": "Malazia"
+ },
+ "MV": {
+ "name": "Maldivas"
+ },
+ "ML": {
+ "name": "Mali"
+ },
+ "MT": {
+ "name": "Malta"
+ },
+ "MA": {
+ "name": "Marokus"
+ },
+ "MQ": {
+ "name": "Martinika"
+ },
+ "MK": {
+ "name": "Masidonia"
+ },
+ "MR": {
+ "name": "Mauritania"
+ },
+ "MX": {
+ "name": "Mexiku"
+ },
+ "MM": {
+ "name": "Mianmar"
+ },
+ "FM": {
+ "name": "Mikronezia"
+ },
+ "MD": {
+ "name": "Moldavia"
+ },
+ "MC": {
+ "name": "Monaku"
+ },
+ "MN": {
+ "name": "Mongolia"
+ },
+ "MS": {
+ "name": "Monserat"
+ },
+ "ME": {
+ "name": "Montenegru"
+ },
+ "MZ": {
+ "name": "Musambiki"
+ },
+ "NA": {
+ "name": "Namibia"
+ },
+ "NR": {
+ "name": "Nauru"
+ },
+ "NP": {
+ "name": "Nepal"
+ },
+ "NE": {
+ "name": "Nijer"
+ },
+ "NG": {
+ "name": "Nijeria"
+ },
+ "NI": {
+ "name": "Nikaragua"
+ },
+ "NU": {
+ "name": "Niue"
+ },
+ "NO": {
+ "name": "Noruega"
+ },
+ "NC": {
+ "name": "Nova Kalidonia"
+ },
+ "NZ": {
+ "name": "Nova Zilandia"
+ },
+ "NL": {
+ "name": "Olanda"
+ },
+ "OM": {
+ "name": "Oman"
+ },
+ "HN": {
+ "name": "Onduras"
+ },
+ "PK": {
+ "name": "Pakistãu"
+ },
+ "PW": {
+ "name": "Palau"
+ },
+ "PS": {
+ "name": "Palistina"
+ },
+ "PA": {
+ "name": "Panama"
+ },
+ "PG": {
+ "name": "Papua-Nova Gine"
+ },
+ "PY": {
+ "name": "Paraguai"
+ },
+ "PE": {
+ "name": "Peru"
+ },
+ "PN": {
+ "name": "Pirkairn"
+ },
+ "PF": {
+ "name": "Polinezia Franseza"
+ },
+ "PR": {
+ "name": "Portu Riku"
+ },
+ "PL": {
+ "name": "Pulonia"
+ },
+ "PT": {
+ "name": "Purtugal"
+ },
+ "GB": {
+ "name": "Reinu Unidu"
+ },
+ "MO": {
+ "name": "Rejiãu Administrativu Special di Makau"
+ },
+ "HK": {
+ "name": "Rejiãu Administrativu Special di Ong Kong"
+ },
+ "DO": {
+ "name": "Repúblika Dominikana"
+ },
+ "CF": {
+ "name": "Republika Sentru-Afrikanu"
+ },
+ "CZ": {
+ "name": "Republika Txeka"
+ },
+ "RO": {
+ "name": "Romenia"
+ },
+ "RW": {
+ "name": "Ruanda"
+ },
+ "RE": {
+ "name": "Runion"
+ },
+ "RU": {
+ "name": "Rúsia"
+ },
+ "WS": {
+ "name": "Samoa"
+ },
+ "AS": {
+ "name": "Samoa Merkanu"
+ },
+ "SM": {
+ "name": "San Marinu"
+ },
+ "PM": {
+ "name": "San Piere i Mikelon"
+ },
+ "SH": {
+ "name": "Santa Ilena"
+ },
+ "LC": {
+ "name": "Santa Lúsia"
+ },
+ "EH": {
+ "name": "Sara Osidental"
+ },
+ "BL": {
+ "name": "Sãu Bartolomeu"
+ },
+ "VC": {
+ "name": "Sãu Bisenti i Granadinas"
+ },
+ "KN": {
+ "name": "Sãu Kristovãu i Nevis"
+ },
+ "MF": {
+ "name": "Sãu Martinhu di Fransa"
+ },
+ "SX": {
+ "name": "Sãu Martinhu di Olanda"
+ },
+ "ST": {
+ "name": "Sãu Tume i Prinsipi"
+ },
+ "SC": {
+ "name": "Seixelis"
+ },
+ "SN": {
+ "name": "Senegal"
+ },
+ "SL": {
+ "name": "Sera Lioa"
+ },
+ "RS": {
+ "name": "Servia"
+ },
+ "EA": {
+ "name": "Seuta i Melila"
+ },
+ "SG": {
+ "name": "Singapura"
+ },
+ "SY": {
+ "name": "Siria"
+ },
+ "SK": {
+ "name": "Slovakia"
+ },
+ "SI": {
+ "name": "Slovenia"
+ },
+ "ES": {
+ "name": "Spanha"
+ },
+ "LK": {
+ "name": "Sri Lanka"
+ },
+ "US": {
+ "name": "Stadus Unidos di Merka"
+ },
+ "EE": {
+ "name": "Stonia"
+ },
+ "SZ": {
+ "name": "Suazilándia"
+ },
+ "SD": {
+ "name": "Sudãu"
+ },
+ "SS": {
+ "name": "Sudãu di Sul"
+ },
+ "SE": {
+ "name": "Suesia"
+ },
+ "CH": {
+ "name": "Suisa"
+ },
+ "SO": {
+ "name": "Sumalia"
+ },
+ "SR": {
+ "name": "Surinami"
+ },
+ "SJ": {
+ "name": "Svalbard i Jan Maien"
+ },
+ "TJ": {
+ "name": "Tadjikistãu"
+ },
+ "TH": {
+ "name": "Tailandia"
+ },
+ "TW": {
+ "name": "Taiuan"
+ },
+ "TZ": {
+ "name": "Tanzania"
+ },
+ "TF": {
+ "name": "Terras Franses di Sul"
+ },
+ "TL": {
+ "name": "Timor Lesti"
+ },
+ "TG": {
+ "name": "Togu"
+ },
+ "TK": {
+ "name": "Tokelau"
+ },
+ "TO": {
+ "name": "Tonga"
+ },
+ "TT": {
+ "name": "Trinidad i Tobagu"
+ },
+ "TA": {
+ "name": "Tristan da Kunha"
+ },
+ "TN": {
+ "name": "Tunizia"
+ },
+ "TR": {
+ "name": "Turkia"
+ },
+ "TM": {
+ "name": "Turkumenistãu"
+ },
+ "TV": {
+ "name": "Tuvalu"
+ },
+ "TD": {
+ "name": "Txadi"
+ },
+ "WF": {
+ "name": "Ualis i Futuna"
+ },
+ "UG": {
+ "name": "Uganda"
+ },
+ "UA": {
+ "name": "Ukrania"
+ },
+ "HU": {
+ "name": "Ungria"
+ },
+ "UY": {
+ "name": "Uruguai"
+ },
+ "UZ": {
+ "name": "Uzbekistãu"
+ },
+ "VU": {
+ "name": "Vanuatu"
+ },
+ "VA": {
+ "name": "Vatikanu"
+ },
+ "VN": {
+ "name": "Vietnam"
+ },
+ "VE": {
+ "name": "Vinizuela"
+ },
+ "CL": {
+ "name": "Xili"
+ },
+ "CN": {
+ "name": "Xina"
+ },
+ "CY": {
+ "name": "Xipri"
+ },
+ "ZM": {
+ "name": "Zambia"
+ },
+ "ZW": {
+ "name": "Zimbabui"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/country/khq.json b/library/intl/resources/country/khq.json
new file mode 100644
index 000000000..bdbd80aee
--- /dev/null
+++ b/library/intl/resources/country/khq.json
@@ -0,0 +1,761 @@
+{
+ "AF": {
+ "name": "Afgaanistan"
+ },
+ "AX": {
+ "name": "Ã…land Islands"
+ },
+ "AL": {
+ "name": "Albaani"
+ },
+ "GB": {
+ "name": "Albaasalaama Marganta"
+ },
+ "DE": {
+ "name": "Almaaɲe"
+ },
+ "DZ": {
+ "name": "Alžeeri"
+ },
+ "VI": {
+ "name": "Ameerik Virgin Gungey"
+ },
+ "US": {
+ "name": "Ameriki Laabu Margantey"
+ },
+ "AS": {
+ "name": "Ameriki Samoa"
+ },
+ "AD": {
+ "name": "Andoora"
+ },
+ "AI": {
+ "name": "Angiiya"
+ },
+ "AO": {
+ "name": "Angoola"
+ },
+ "AQ": {
+ "name": "Antarctica"
+ },
+ "AG": {
+ "name": "Antigua nda Barbuuda"
+ },
+ "AR": {
+ "name": "Argentine"
+ },
+ "AM": {
+ "name": "Armeeni"
+ },
+ "AW": {
+ "name": "Aruuba"
+ },
+ "AC": {
+ "name": "Ascension Island"
+ },
+ "IS": {
+ "name": "Ayceland"
+ },
+ "AZ": {
+ "name": "Azerbaayijaŋ"
+ },
+ "BS": {
+ "name": "Bahamas"
+ },
+ "BH": {
+ "name": "Bahareen"
+ },
+ "BD": {
+ "name": "Bangladeši"
+ },
+ "BB": {
+ "name": "Barbaados"
+ },
+ "BE": {
+ "name": "Belgiiki"
+ },
+ "BZ": {
+ "name": "Beliizi"
+ },
+ "BJ": {
+ "name": "Beniŋ"
+ },
+ "BM": {
+ "name": "Bermuda"
+ },
+ "BY": {
+ "name": "Biloriši"
+ },
+ "BO": {
+ "name": "Boolivi"
+ },
+ "BA": {
+ "name": "Bosni nda Herzegovine"
+ },
+ "BW": {
+ "name": "Botswaana"
+ },
+ "BR": {
+ "name": "Breezil"
+ },
+ "IO": {
+ "name": "Britiši Indu teekoo laama"
+ },
+ "VG": {
+ "name": "Britiši Virgin gungey"
+ },
+ "BN": {
+ "name": "Bruunee"
+ },
+ "BG": {
+ "name": "Bulgaari"
+ },
+ "BF": {
+ "name": "Burkina faso"
+ },
+ "BI": {
+ "name": "Burundi"
+ },
+ "BT": {
+ "name": "Buutaŋ"
+ },
+ "TD": {
+ "name": "Caadu"
+ },
+ "IC": {
+ "name": "Canary Islands"
+ },
+ "BQ": {
+ "name": "Caribbean Netherlands"
+ },
+ "CZ": {
+ "name": "Cek labo"
+ },
+ "CF": {
+ "name": "Centraafriki koyra"
+ },
+ "EA": {
+ "name": "Ceuta & Melilla"
+ },
+ "CX": {
+ "name": "Christmas Island"
+ },
+ "CC": {
+ "name": "Cocos (Keeling) Islands"
+ },
+ "CW": {
+ "name": "Curaçao"
+ },
+ "DK": {
+ "name": "Danemark"
+ },
+ "DG": {
+ "name": "Diego Garcia"
+ },
+ "DM": {
+ "name": "Doominiki"
+ },
+ "DO": {
+ "name": "Doominiki laboo"
+ },
+ "ET": {
+ "name": "Ecioopi"
+ },
+ "EC": {
+ "name": "Ekwateer"
+ },
+ "ER": {
+ "name": "Eritree"
+ },
+ "ES": {
+ "name": "Espaaɲe"
+ },
+ "EE": {
+ "name": "Estooni"
+ },
+ "FR": {
+ "name": "Faransi"
+ },
+ "GF": {
+ "name": "Faransi Guyaan"
+ },
+ "PF": {
+ "name": "Faransi Polineezi"
+ },
+ "FO": {
+ "name": "Faroe Islands"
+ },
+ "FJ": {
+ "name": "Fiji"
+ },
+ "PH": {
+ "name": "Filipine"
+ },
+ "FI": {
+ "name": "Finlandu"
+ },
+ "TF": {
+ "name": "French Southern Territories"
+ },
+ "GA": {
+ "name": "Gaabon"
+ },
+ "GH": {
+ "name": "Gaana"
+ },
+ "GM": {
+ "name": "Gambi"
+ },
+ "GI": {
+ "name": "Gibraltar"
+ },
+ "GN": {
+ "name": "Gine"
+ },
+ "GW": {
+ "name": "Gine-Bisso"
+ },
+ "GQ": {
+ "name": "Ginee Ekwatorial"
+ },
+ "GE": {
+ "name": "Gorgi"
+ },
+ "GR": {
+ "name": "Greece"
+ },
+ "GD": {
+ "name": "Grenaada"
+ },
+ "GL": {
+ "name": "Grinland"
+ },
+ "GU": {
+ "name": "Guam"
+ },
+ "GG": {
+ "name": "Guernsey"
+ },
+ "GY": {
+ "name": "Guyaane"
+ },
+ "GP": {
+ "name": "Gwadeluup"
+ },
+ "GT": {
+ "name": "Gwatemaala"
+ },
+ "HT": {
+ "name": "Haiti"
+ },
+ "ZA": {
+ "name": "Hawsa Afriki Laboo"
+ },
+ "NL": {
+ "name": "Hollandu"
+ },
+ "HN": {
+ "name": "Honduras"
+ },
+ "HK": {
+ "name": "Hong Kong SAR China"
+ },
+ "HU": {
+ "name": "Hungaari"
+ },
+ "ID": {
+ "name": "Indoneezi"
+ },
+ "IN": {
+ "name": "Indu laboo"
+ },
+ "IQ": {
+ "name": "Iraak"
+ },
+ "IR": {
+ "name": "Iraan"
+ },
+ "RU": {
+ "name": "Iriši laboo"
+ },
+ "IE": {
+ "name": "Irlandu"
+ },
+ "IM": {
+ "name": "Isle of Man"
+ },
+ "IL": {
+ "name": "Israyel"
+ },
+ "IT": {
+ "name": "Itaali"
+ },
+ "JP": {
+ "name": "Jaapoŋ"
+ },
+ "JM": {
+ "name": "Jamaayik"
+ },
+ "JE": {
+ "name": "Jersey"
+ },
+ "DJ": {
+ "name": "Jibuuti"
+ },
+ "NC": {
+ "name": "Kaaledooni Taagaa"
+ },
+ "KZ": {
+ "name": "Kaazakstan"
+ },
+ "FK": {
+ "name": "Kalkan gungey"
+ },
+ "KH": {
+ "name": "Kamboogi"
+ },
+ "CM": {
+ "name": "Kameruun"
+ },
+ "CA": {
+ "name": "Kanaada"
+ },
+ "CV": {
+ "name": "Kapuver gungey"
+ },
+ "QA": {
+ "name": "Kataar"
+ },
+ "KY": {
+ "name": "Kayman gungey"
+ },
+ "KE": {
+ "name": "Keeniya"
+ },
+ "KI": {
+ "name": "Kiribaati"
+ },
+ "CO": {
+ "name": "Kolombi"
+ },
+ "KM": {
+ "name": "Komoor"
+ },
+ "CG": {
+ "name": "Kongoo"
+ },
+ "CD": {
+ "name": "Kongoo demookaratiki laboo"
+ },
+ "KP": {
+ "name": "Kooree, Gurma"
+ },
+ "KR": {
+ "name": "Kooree, Hawsa"
+ },
+ "XK": {
+ "name": "Kosovo"
+ },
+ "CR": {
+ "name": "Kosta rika"
+ },
+ "HR": {
+ "name": "Krwaasi"
+ },
+ "CI": {
+ "name": "Kudwar"
+ },
+ "CU": {
+ "name": "Kuuba"
+ },
+ "CK": {
+ "name": "Kuuk gungey"
+ },
+ "KW": {
+ "name": "Kuweet"
+ },
+ "KG": {
+ "name": "Kyrgyzstan"
+ },
+ "AE": {
+ "name": "Laaraw Imaarawey Margantey"
+ },
+ "LA": {
+ "name": "Laawos"
+ },
+ "LS": {
+ "name": "Leesoto"
+ },
+ "LV": {
+ "name": "Letooni"
+ },
+ "LR": {
+ "name": "Liberia"
+ },
+ "LI": {
+ "name": "Liechtenstein"
+ },
+ "LY": {
+ "name": "Liibi"
+ },
+ "LT": {
+ "name": "Lituaani"
+ },
+ "LB": {
+ "name": "Lubnaan"
+ },
+ "LU": {
+ "name": "Luxembourg"
+ },
+ "MK": {
+ "name": "Maacedooni"
+ },
+ "ML": {
+ "name": "Maali"
+ },
+ "MA": {
+ "name": "Maarok"
+ },
+ "MO": {
+ "name": "Macau SAR China"
+ },
+ "MG": {
+ "name": "Madagascar"
+ },
+ "MW": {
+ "name": "Malaawi"
+ },
+ "MV": {
+ "name": "Maldiivu"
+ },
+ "MY": {
+ "name": "Maleezi"
+ },
+ "MT": {
+ "name": "Malta"
+ },
+ "MP": {
+ "name": "Mariana Gurma Gungey"
+ },
+ "MH": {
+ "name": "Maršal gungey"
+ },
+ "MQ": {
+ "name": "Martiniiki"
+ },
+ "MM": {
+ "name": "Maynamar"
+ },
+ "YT": {
+ "name": "Mayooti"
+ },
+ "MX": {
+ "name": "Mexiki"
+ },
+ "FM": {
+ "name": "Mikronezi"
+ },
+ "EG": {
+ "name": "Misra"
+ },
+ "MD": {
+ "name": "Moldovi"
+ },
+ "MC": {
+ "name": "Monako"
+ },
+ "MN": {
+ "name": "Mongooli"
+ },
+ "ME": {
+ "name": "Montenegro"
+ },
+ "MS": {
+ "name": "Montserrat"
+ },
+ "MU": {
+ "name": "Mooris gungey"
+ },
+ "MR": {
+ "name": "Mooritaani"
+ },
+ "MZ": {
+ "name": "Mozambik"
+ },
+ "NG": {
+ "name": "Naajiriia"
+ },
+ "NA": {
+ "name": "Naamibi"
+ },
+ "NR": {
+ "name": "Nauru"
+ },
+ "NP": {
+ "name": "Neepal"
+ },
+ "NI": {
+ "name": "Nikaragwa"
+ },
+ "NU": {
+ "name": "Niue"
+ },
+ "NE": {
+ "name": "Nižer"
+ },
+ "NF": {
+ "name": "Norfolk Gungoo"
+ },
+ "NO": {
+ "name": "Norveej"
+ },
+ "OM": {
+ "name": "Omaan"
+ },
+ "AU": {
+ "name": "Ostraali"
+ },
+ "AT": {
+ "name": "Otriši"
+ },
+ "PK": {
+ "name": "Paakistan"
+ },
+ "PS": {
+ "name": "Palestine Dangay nda Gaaza"
+ },
+ "PW": {
+ "name": "Palu"
+ },
+ "PA": {
+ "name": "Panama"
+ },
+ "PG": {
+ "name": "Papua Ginee Taaga"
+ },
+ "PY": {
+ "name": "Paraguwey"
+ },
+ "PE": {
+ "name": "Peeru"
+ },
+ "PN": {
+ "name": "Pitikarin"
+ },
+ "PL": {
+ "name": "Poloɲe"
+ },
+ "PR": {
+ "name": "Porto Riko"
+ },
+ "PT": {
+ "name": "Portugaal"
+ },
+ "RE": {
+ "name": "Reenioŋ"
+ },
+ "RO": {
+ "name": "Rumaani"
+ },
+ "RW": {
+ "name": "Rwanda"
+ },
+ "SV": {
+ "name": "Salvador laboo"
+ },
+ "WS": {
+ "name": "Samoa"
+ },
+ "SM": {
+ "name": "San Marino"
+ },
+ "ST": {
+ "name": "Sao Tome nda Prinsipe"
+ },
+ "SA": {
+ "name": "Saudiya"
+ },
+ "SL": {
+ "name": "Seera Leon"
+ },
+ "SC": {
+ "name": "Seešel"
+ },
+ "SN": {
+ "name": "Senegal"
+ },
+ "SH": {
+ "name": "Seŋ Helena"
+ },
+ "KN": {
+ "name": "Seŋ Kitts nda Nevis"
+ },
+ "LC": {
+ "name": "Seŋ Lussia"
+ },
+ "PM": {
+ "name": "Seŋ Piyer nda Mikelon"
+ },
+ "VC": {
+ "name": "Seŋvinsaŋ nda Grenadine"
+ },
+ "RS": {
+ "name": "Serbia"
+ },
+ "CL": {
+ "name": "Å iili"
+ },
+ "CN": {
+ "name": "Å iin"
+ },
+ "CY": {
+ "name": "Å iipur"
+ },
+ "SG": {
+ "name": "Singapur"
+ },
+ "SX": {
+ "name": "Sint Maarten"
+ },
+ "SK": {
+ "name": "Slovaaki"
+ },
+ "SI": {
+ "name": "Sloveeni"
+ },
+ "SB": {
+ "name": "Solomon Gungey"
+ },
+ "SO": {
+ "name": "Somaali"
+ },
+ "GS": {
+ "name": "South Georgia & South Sandwich Islands"
+ },
+ "SS": {
+ "name": "South Sudan"
+ },
+ "LK": {
+ "name": "Srilanka"
+ },
+ "BL": {
+ "name": "St. Barthélemy"
+ },
+ "MF": {
+ "name": "St. Martin"
+ },
+ "SR": {
+ "name": "Surinaam"
+ },
+ "SD": {
+ "name": "Suudaŋ"
+ },
+ "SY": {
+ "name": "Suuria"
+ },
+ "SJ": {
+ "name": "Svalbard & Jan Mayen"
+ },
+ "SZ": {
+ "name": "Swaziland"
+ },
+ "SE": {
+ "name": "Sweede"
+ },
+ "CH": {
+ "name": "Swisu"
+ },
+ "TH": {
+ "name": "Taayiland"
+ },
+ "TW": {
+ "name": "Taayiwan"
+ },
+ "TJ": {
+ "name": "Taažikistan"
+ },
+ "TZ": {
+ "name": "Tanzaani"
+ },
+ "TL": {
+ "name": "Timoor hawsa"
+ },
+ "TG": {
+ "name": "Togo"
+ },
+ "TK": {
+ "name": "Tokelau"
+ },
+ "TO": {
+ "name": "Tonga"
+ },
+ "TT": {
+ "name": "Trinidad nda Tobaago"
+ },
+ "TA": {
+ "name": "Tristan da Cunha"
+ },
+ "TN": {
+ "name": "Tunizi"
+ },
+ "TC": {
+ "name": "Turk nda Kayikos Gungey"
+ },
+ "TR": {
+ "name": "Turki"
+ },
+ "TM": {
+ "name": "Turkmenistaŋ"
+ },
+ "TV": {
+ "name": "Tuvalu"
+ },
+ "UM": {
+ "name": "U.S. Outlying Islands"
+ },
+ "UG": {
+ "name": "Uganda"
+ },
+ "UA": {
+ "name": "Ukreen"
+ },
+ "JO": {
+ "name": "Urdun"
+ },
+ "UY": {
+ "name": "Uruguwey"
+ },
+ "UZ": {
+ "name": "Uzbeekistan"
+ },
+ "VA": {
+ "name": "Vaatikan Laama"
+ },
+ "VU": {
+ "name": "Vanautu"
+ },
+ "VE": {
+ "name": "Veneezuyeela"
+ },
+ "VN": {
+ "name": "Vietnaam"
+ },
+ "WF": {
+ "name": "Wallis nda Futuna"
+ },
+ "EH": {
+ "name": "Western Sahara"
+ },
+ "YE": {
+ "name": "Yaman"
+ },
+ "ZM": {
+ "name": "Zambi"
+ },
+ "NZ": {
+ "name": "Zeelandu Taaga"
+ },
+ "ZW": {
+ "name": "Zimbabwe"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/country/ki.json b/library/intl/resources/country/ki.json
new file mode 100644
index 000000000..0d37a4225
--- /dev/null
+++ b/library/intl/resources/country/ki.json
@@ -0,0 +1,761 @@
+{
+ "ZA": {
+ "name": "Afrika Kusini"
+ },
+ "AF": {
+ "name": "Afuganistani"
+ },
+ "IS": {
+ "name": "Aislandi"
+ },
+ "AR": {
+ "name": "Ajentina"
+ },
+ "AX": {
+ "name": "Ã…land Islands"
+ },
+ "AL": {
+ "name": "Albania"
+ },
+ "DZ": {
+ "name": "Aljeria"
+ },
+ "US": {
+ "name": "Amerika"
+ },
+ "AD": {
+ "name": "Andora"
+ },
+ "AO": {
+ "name": "Angola"
+ },
+ "AI": {
+ "name": "Anguilla"
+ },
+ "AQ": {
+ "name": "Antarctica"
+ },
+ "AG": {
+ "name": "Antigua na Barbuda"
+ },
+ "AM": {
+ "name": "Armenia"
+ },
+ "AW": {
+ "name": "Aruba"
+ },
+ "AC": {
+ "name": "Ascension Island"
+ },
+ "AU": {
+ "name": "Australia"
+ },
+ "AT": {
+ "name": "Austria"
+ },
+ "IE": {
+ "name": "Ayalandi"
+ },
+ "AZ": {
+ "name": "Azabajani"
+ },
+ "BB": {
+ "name": "Babadosi"
+ },
+ "BS": {
+ "name": "Bahama"
+ },
+ "BH": {
+ "name": "Bahareni"
+ },
+ "BD": {
+ "name": "Bangladeshi"
+ },
+ "BY": {
+ "name": "Belarusi"
+ },
+ "BZ": {
+ "name": "Belize"
+ },
+ "BJ": {
+ "name": "Benini"
+ },
+ "BM": {
+ "name": "Bermuda"
+ },
+ "BO": {
+ "name": "Bolivia"
+ },
+ "BA": {
+ "name": "Bosnia na Hezegovina"
+ },
+ "BW": {
+ "name": "Botswana"
+ },
+ "BR": {
+ "name": "Brazili"
+ },
+ "BN": {
+ "name": "Brunei"
+ },
+ "BF": {
+ "name": "Bukinafaso"
+ },
+ "MG": {
+ "name": "Bukini"
+ },
+ "BG": {
+ "name": "Bulgaria"
+ },
+ "BT": {
+ "name": "Butani"
+ },
+ "CN": {
+ "name": "Caina"
+ },
+ "IC": {
+ "name": "Canary Islands"
+ },
+ "BQ": {
+ "name": "Caribbean Netherlands"
+ },
+ "EA": {
+ "name": "Ceuta & Melilla"
+ },
+ "TD": {
+ "name": "Chadi"
+ },
+ "CL": {
+ "name": "Chile"
+ },
+ "CX": {
+ "name": "Christmas Island"
+ },
+ "CC": {
+ "name": "Cocos (Keeling) Islands"
+ },
+ "CW": {
+ "name": "Curaçao"
+ },
+ "DK": {
+ "name": "Denmaki"
+ },
+ "DG": {
+ "name": "Diego Garcia"
+ },
+ "DM": {
+ "name": "Dominika"
+ },
+ "EC": {
+ "name": "Ekwado"
+ },
+ "SV": {
+ "name": "Elsavado"
+ },
+ "IO": {
+ "name": "Eneo la Uingereza katika Bahari Hindi"
+ },
+ "ER": {
+ "name": "Eritrea"
+ },
+ "EE": {
+ "name": "Estonia"
+ },
+ "AE": {
+ "name": "Falme za Kiarabu"
+ },
+ "FO": {
+ "name": "Faroe Islands"
+ },
+ "FJ": {
+ "name": "Fiji"
+ },
+ "PH": {
+ "name": "Filipino"
+ },
+ "TF": {
+ "name": "French Southern Territories"
+ },
+ "GA": {
+ "name": "Gaboni"
+ },
+ "GM": {
+ "name": "Gambia"
+ },
+ "GN": {
+ "name": "Gine"
+ },
+ "GW": {
+ "name": "Ginebisau"
+ },
+ "GQ": {
+ "name": "Ginekweta"
+ },
+ "GD": {
+ "name": "Grenada"
+ },
+ "GL": {
+ "name": "Grinlandi"
+ },
+ "GG": {
+ "name": "Guernsey"
+ },
+ "GY": {
+ "name": "Guyana"
+ },
+ "GP": {
+ "name": "Gwadelupe"
+ },
+ "GU": {
+ "name": "Gwam"
+ },
+ "GT": {
+ "name": "Gwatemala"
+ },
+ "GF": {
+ "name": "Gwiyana ya Ufaransa"
+ },
+ "HT": {
+ "name": "Haiti"
+ },
+ "ES": {
+ "name": "Hispania"
+ },
+ "HN": {
+ "name": "Hondurasi"
+ },
+ "HK": {
+ "name": "Hong Kong SAR China"
+ },
+ "HU": {
+ "name": "Hungaria"
+ },
+ "IN": {
+ "name": "India"
+ },
+ "ID": {
+ "name": "Indonesia"
+ },
+ "IQ": {
+ "name": "Iraki"
+ },
+ "IM": {
+ "name": "Isle of Man"
+ },
+ "IL": {
+ "name": "Israeli"
+ },
+ "IT": {
+ "name": "Italia"
+ },
+ "JM": {
+ "name": "Jamaika"
+ },
+ "CF": {
+ "name": "Jamhuri ya Afrika ya Kati"
+ },
+ "CZ": {
+ "name": "Jamhuri ya Cheki"
+ },
+ "DO": {
+ "name": "Jamhuri ya Dominika"
+ },
+ "CD": {
+ "name": "Jamhuri ya Kidemokrasia ya Kongo"
+ },
+ "JE": {
+ "name": "Jersey"
+ },
+ "GI": {
+ "name": "Jibralta"
+ },
+ "DJ": {
+ "name": "Jibuti"
+ },
+ "GE": {
+ "name": "Jojia"
+ },
+ "KH": {
+ "name": "Kambodia"
+ },
+ "CM": {
+ "name": "Kameruni"
+ },
+ "CA": {
+ "name": "Kanada"
+ },
+ "QA": {
+ "name": "Katari"
+ },
+ "KZ": {
+ "name": "Kazakistani"
+ },
+ "KE": {
+ "name": "Kenya"
+ },
+ "CV": {
+ "name": "Kepuvede"
+ },
+ "KI": {
+ "name": "Kiribati"
+ },
+ "KG": {
+ "name": "Kirigizistani"
+ },
+ "NF": {
+ "name": "Kisiwa cha Norfok"
+ },
+ "CU": {
+ "name": "Kiumba"
+ },
+ "CI": {
+ "name": "Kodivaa"
+ },
+ "CO": {
+ "name": "Kolombia"
+ },
+ "KM": {
+ "name": "Komoro"
+ },
+ "CG": {
+ "name": "Kongo"
+ },
+ "HR": {
+ "name": "Korasia"
+ },
+ "KP": {
+ "name": "Korea Kaskazini"
+ },
+ "KR": {
+ "name": "Korea Kusini"
+ },
+ "XK": {
+ "name": "Kosovo"
+ },
+ "CR": {
+ "name": "Kostarika"
+ },
+ "CY": {
+ "name": "Kuprosi"
+ },
+ "KW": {
+ "name": "Kuwaiti"
+ },
+ "LA": {
+ "name": "Laosi"
+ },
+ "LU": {
+ "name": "Lasembagi"
+ },
+ "LV": {
+ "name": "Lativia"
+ },
+ "LB": {
+ "name": "Lebanoni"
+ },
+ "LS": {
+ "name": "Lesoto"
+ },
+ "LR": {
+ "name": "Liberia"
+ },
+ "LY": {
+ "name": "Libya"
+ },
+ "LI": {
+ "name": "Lishenteni"
+ },
+ "LT": {
+ "name": "Litwania"
+ },
+ "MO": {
+ "name": "Macau SAR China"
+ },
+ "MW": {
+ "name": "Malawi"
+ },
+ "MY": {
+ "name": "Malesia"
+ },
+ "ML": {
+ "name": "Mali"
+ },
+ "MT": {
+ "name": "Malta"
+ },
+ "MQ": {
+ "name": "Martiniki"
+ },
+ "MK": {
+ "name": "Masedonia"
+ },
+ "YT": {
+ "name": "Mayotte"
+ },
+ "BI": {
+ "name": "Mburundi"
+ },
+ "MX": {
+ "name": "Meksiko"
+ },
+ "FM": {
+ "name": "Mikronesia"
+ },
+ "EG": {
+ "name": "Misri"
+ },
+ "MV": {
+ "name": "Modivu"
+ },
+ "MD": {
+ "name": "Moldova"
+ },
+ "MC": {
+ "name": "Monako"
+ },
+ "MN": {
+ "name": "Mongolia"
+ },
+ "ME": {
+ "name": "Montenegro"
+ },
+ "MS": {
+ "name": "Montserrati"
+ },
+ "MU": {
+ "name": "Morisi"
+ },
+ "MR": {
+ "name": "Moritania"
+ },
+ "MA": {
+ "name": "Moroko"
+ },
+ "MZ": {
+ "name": "Msumbiji"
+ },
+ "MM": {
+ "name": "Myama"
+ },
+ "NG": {
+ "name": "Nainjeria"
+ },
+ "NA": {
+ "name": "Namimbia"
+ },
+ "NR": {
+ "name": "Nauru"
+ },
+ "NP": {
+ "name": "Nepali"
+ },
+ "GH": {
+ "name": "Ngana"
+ },
+ "GB": {
+ "name": "Ngeretha"
+ },
+ "NE": {
+ "name": "Nijeri"
+ },
+ "NI": {
+ "name": "Nikaragwa"
+ },
+ "NU": {
+ "name": "Niue"
+ },
+ "JP": {
+ "name": "Njabani"
+ },
+ "DE": {
+ "name": "Njeremani"
+ },
+ "JO": {
+ "name": "Njorondani"
+ },
+ "NO": {
+ "name": "Norwe"
+ },
+ "NC": {
+ "name": "Nyukaledonia"
+ },
+ "NZ": {
+ "name": "Nyuzilandi"
+ },
+ "OM": {
+ "name": "Omani"
+ },
+ "PK": {
+ "name": "Pakistani"
+ },
+ "PW": {
+ "name": "Palau"
+ },
+ "PA": {
+ "name": "Panama"
+ },
+ "PG": {
+ "name": "Papua"
+ },
+ "PY": {
+ "name": "Paragwai"
+ },
+ "PE": {
+ "name": "Peru"
+ },
+ "PN": {
+ "name": "Pitkairni"
+ },
+ "PL": {
+ "name": "Polandi"
+ },
+ "PF": {
+ "name": "Polinesia ya Ufaransa"
+ },
+ "PR": {
+ "name": "Pwetoriko"
+ },
+ "RE": {
+ "name": "Riyunioni"
+ },
+ "RO": {
+ "name": "Romania"
+ },
+ "RW": {
+ "name": "Rwanda"
+ },
+ "SM": {
+ "name": "Samarino"
+ },
+ "WS": {
+ "name": "Samoa"
+ },
+ "AS": {
+ "name": "Samoa ya Marekani"
+ },
+ "SH": {
+ "name": "Santahelena"
+ },
+ "KN": {
+ "name": "Santakitzi na Nevis"
+ },
+ "LC": {
+ "name": "Santalusia"
+ },
+ "PM": {
+ "name": "Santapieri na Mikeloni"
+ },
+ "VC": {
+ "name": "Santavisenti na Grenadini"
+ },
+ "ST": {
+ "name": "Sao Tome na Principe"
+ },
+ "SA": {
+ "name": "Saudi"
+ },
+ "SN": {
+ "name": "Senegali"
+ },
+ "RS": {
+ "name": "Serbia"
+ },
+ "SC": {
+ "name": "Shelisheli"
+ },
+ "SL": {
+ "name": "Siera Leoni"
+ },
+ "SG": {
+ "name": "Singapoo"
+ },
+ "SX": {
+ "name": "Sint Maarten"
+ },
+ "SY": {
+ "name": "Siria"
+ },
+ "LK": {
+ "name": "Sirilanka"
+ },
+ "SK": {
+ "name": "Slovakia"
+ },
+ "SI": {
+ "name": "Slovenia"
+ },
+ "SO": {
+ "name": "Somaria"
+ },
+ "GS": {
+ "name": "South Georgia & South Sandwich Islands"
+ },
+ "SS": {
+ "name": "South Sudan"
+ },
+ "BL": {
+ "name": "St. Barthélemy"
+ },
+ "MF": {
+ "name": "St. Martin"
+ },
+ "SD": {
+ "name": "Sudani"
+ },
+ "SR": {
+ "name": "Surinamu"
+ },
+ "SJ": {
+ "name": "Svalbard & Jan Mayen"
+ },
+ "TH": {
+ "name": "Tailandi"
+ },
+ "TW": {
+ "name": "Taiwani"
+ },
+ "TJ": {
+ "name": "Tajikistani"
+ },
+ "TZ": {
+ "name": "Tanzania"
+ },
+ "TL": {
+ "name": "Timori ya Mashariki"
+ },
+ "TG": {
+ "name": "Togo"
+ },
+ "TK": {
+ "name": "Tokelau"
+ },
+ "TO": {
+ "name": "Tonga"
+ },
+ "TT": {
+ "name": "Trinidad na Tobago"
+ },
+ "TA": {
+ "name": "Tristan da Cunha"
+ },
+ "TN": {
+ "name": "Tunisia"
+ },
+ "TM": {
+ "name": "Turukimenistani"
+ },
+ "TV": {
+ "name": "Tuvalu"
+ },
+ "UM": {
+ "name": "U.S. Outlying Islands"
+ },
+ "IR": {
+ "name": "Uajemi"
+ },
+ "FR": {
+ "name": "Ubaranja"
+ },
+ "BE": {
+ "name": "Ubelgiji"
+ },
+ "FI": {
+ "name": "Ufini"
+ },
+ "UG": {
+ "name": "Uganda"
+ },
+ "GR": {
+ "name": "Ugiriki"
+ },
+ "ET": {
+ "name": "Uhabeshi"
+ },
+ "NL": {
+ "name": "Uholanzi"
+ },
+ "PS": {
+ "name": "Ukingo wa Magharibi na Ukanda wa Gaza wa Palestina"
+ },
+ "UA": {
+ "name": "Ukraini"
+ },
+ "PT": {
+ "name": "Ureno"
+ },
+ "UY": {
+ "name": "Urugwai"
+ },
+ "RU": {
+ "name": "Urusi"
+ },
+ "SZ": {
+ "name": "Uswazi"
+ },
+ "SE": {
+ "name": "Uswidi"
+ },
+ "CH": {
+ "name": "Uswisi"
+ },
+ "TR": {
+ "name": "Uturuki"
+ },
+ "UZ": {
+ "name": "Uzibekistani"
+ },
+ "VU": {
+ "name": "Vanuatu"
+ },
+ "VA": {
+ "name": "Vatikani"
+ },
+ "VE": {
+ "name": "Venezuela"
+ },
+ "VN": {
+ "name": "Vietinamu"
+ },
+ "CK": {
+ "name": "Visiwa vya Cook"
+ },
+ "FK": {
+ "name": "Visiwa vya Falkland"
+ },
+ "KY": {
+ "name": "Visiwa vya Kayman"
+ },
+ "MP": {
+ "name": "Visiwa vya Mariana vya Kaskazini"
+ },
+ "MH": {
+ "name": "Visiwa vya Marshal"
+ },
+ "SB": {
+ "name": "Visiwa vya Solomon"
+ },
+ "TC": {
+ "name": "Visiwa vya Turki na Kaiko"
+ },
+ "VI": {
+ "name": "Visiwa vya Virgin vya Marekani"
+ },
+ "VG": {
+ "name": "Visiwa vya Virgin vya Uingereza"
+ },
+ "WF": {
+ "name": "Walis na Futuna"
+ },
+ "EH": {
+ "name": "Western Sahara"
+ },
+ "YE": {
+ "name": "Yemeni"
+ },
+ "ZM": {
+ "name": "Zambia"
+ },
+ "ZW": {
+ "name": "Zimbabwe"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/country/kk.json b/library/intl/resources/country/kk.json
new file mode 100644
index 000000000..5262049b3
--- /dev/null
+++ b/library/intl/resources/country/kk.json
@@ -0,0 +1,761 @@
+{
+ "AU": {
+ "name": "ÐвÑтралиÑ"
+ },
+ "AT": {
+ "name": "ÐвÑтриÑ"
+ },
+ "US": {
+ "name": "ÐҚШ"
+ },
+ "VI": {
+ "name": "ÐҚШ-Ñ‚Ñ‹Ò£ Виргин аралдары"
+ },
+ "UM": {
+ "name": "ÐҚШ-Ñ‚Ñ‹Ò£ ішкі кіші аралдары"
+ },
+ "AX": {
+ "name": "Ðланд аралдары"
+ },
+ "AL": {
+ "name": "ÐлбаниÑ"
+ },
+ "DZ": {
+ "name": "Ðлжир"
+ },
+ "AS": {
+ "name": "Ðмерикан СамоаÑÑ‹"
+ },
+ "AI": {
+ "name": "ÐнгильÑ"
+ },
+ "AO": {
+ "name": "Ðнгола"
+ },
+ "AD": {
+ "name": "Ðндорра"
+ },
+ "AQ": {
+ "name": "Ðнтарктика"
+ },
+ "AG": {
+ "name": "Ðнтигуа мен Барбуда"
+ },
+ "AR": {
+ "name": "Ðргентина"
+ },
+ "AM": {
+ "name": "ÐрмениÑ"
+ },
+ "AW": {
+ "name": "Ðруба"
+ },
+ "AF": {
+ "name": "ÐуғанÑтан"
+ },
+ "AZ": {
+ "name": "Әзербайжан"
+ },
+ "SH": {
+ "name": "Әулие Елена аралы"
+ },
+ "BS": {
+ "name": "Багам аралдары"
+ },
+ "BD": {
+ "name": "Бангладеш"
+ },
+ "BB": {
+ "name": "БарбадоÑ"
+ },
+ "EH": {
+ "name": "Ð‘Ð°Ñ‚Ñ‹Ñ Ð¡Ð°Ñ…Ð°Ñ€Ð°"
+ },
+ "BH": {
+ "name": "Бахрейн"
+ },
+ "BY": {
+ "name": "БеларуÑÑŒ"
+ },
+ "BZ": {
+ "name": "Белиз"
+ },
+ "BE": {
+ "name": "БельгиÑ"
+ },
+ "BJ": {
+ "name": "Бенин"
+ },
+ "BM": {
+ "name": "Бермуд аралдары"
+ },
+ "BG": {
+ "name": "БолгариÑ"
+ },
+ "BO": {
+ "name": "БоливиÑ"
+ },
+ "BA": {
+ "name": "БоÑÐ½Ð¸Ñ Ð¶Ó™Ð½Ðµ Герцеговина"
+ },
+ "BW": {
+ "name": "БотÑвана"
+ },
+ "BR": {
+ "name": "БразилиÑ"
+ },
+ "VG": {
+ "name": "Британдық Виргин аралдары"
+ },
+ "BN": {
+ "name": "Бруней"
+ },
+ "BF": {
+ "name": "Буркина-ФаÑо"
+ },
+ "BI": {
+ "name": "Бурунди"
+ },
+ "BT": {
+ "name": "Бутан"
+ },
+ "AE": {
+ "name": "Біріккен Ðраб Эмираттары"
+ },
+ "GB": {
+ "name": "Бірікккен Корольдік"
+ },
+ "VU": {
+ "name": "Вануату"
+ },
+ "VA": {
+ "name": "Ватикан"
+ },
+ "HU": {
+ "name": "ВенгриÑ"
+ },
+ "VE": {
+ "name": "ВенеÑуÑла"
+ },
+ "VN": {
+ "name": "Вьетнам"
+ },
+ "GA": {
+ "name": "Габон"
+ },
+ "HT": {
+ "name": "Гаити"
+ },
+ "GY": {
+ "name": "Гайана"
+ },
+ "GM": {
+ "name": "ГамбиÑ"
+ },
+ "GH": {
+ "name": "Гана"
+ },
+ "GP": {
+ "name": "Гваделупа"
+ },
+ "GT": {
+ "name": "Гватемала"
+ },
+ "GN": {
+ "name": "ГвинеÑ"
+ },
+ "GW": {
+ "name": "ГвинеÑ-БиÑау"
+ },
+ "DE": {
+ "name": "ГерманиÑ"
+ },
+ "GG": {
+ "name": "ГернÑи"
+ },
+ "GI": {
+ "name": "Гибралтар"
+ },
+ "NL": {
+ "name": "ГолландиÑ"
+ },
+ "HN": {
+ "name": "ГондураÑ"
+ },
+ "GD": {
+ "name": "Гренада"
+ },
+ "GL": {
+ "name": "ГренландиÑ"
+ },
+ "GR": {
+ "name": "ГрециÑ"
+ },
+ "GE": {
+ "name": "ГрузиÑ"
+ },
+ "GU": {
+ "name": "Гуам"
+ },
+ "AC": {
+ "name": "Ғибадат аралы"
+ },
+ "DK": {
+ "name": "ДаниÑ"
+ },
+ "JE": {
+ "name": "ДжерÑи"
+ },
+ "DJ": {
+ "name": "Джибути"
+ },
+ "DG": {
+ "name": "Диего-ГарÑиÑ"
+ },
+ "DM": {
+ "name": "Доминика"
+ },
+ "DO": {
+ "name": "Доминикан РеÑпубликаÑÑ‹"
+ },
+ "NZ": {
+ "name": "Жаңа ЗеландиÑ"
+ },
+ "NC": {
+ "name": "Жаңа КаледониÑ"
+ },
+ "JP": {
+ "name": "ЖапониÑ"
+ },
+ "ZM": {
+ "name": "ЗамбиÑ"
+ },
+ "ZW": {
+ "name": "Зимбабве"
+ },
+ "IL": {
+ "name": "Израиль"
+ },
+ "ID": {
+ "name": "ИндонезиÑ"
+ },
+ "JO": {
+ "name": "ИорданиÑ"
+ },
+ "IQ": {
+ "name": "Ирак"
+ },
+ "IR": {
+ "name": "Иран"
+ },
+ "IE": {
+ "name": "ИрландиÑ"
+ },
+ "IS": {
+ "name": "ИÑландиÑ"
+ },
+ "ES": {
+ "name": "ИÑпаниÑ"
+ },
+ "IT": {
+ "name": "ИталиÑ"
+ },
+ "YE": {
+ "name": "Йемен"
+ },
+ "CV": {
+ "name": "Кабо-Верде"
+ },
+ "KY": {
+ "name": "Кайман аралдары"
+ },
+ "KH": {
+ "name": "Камбоджа"
+ },
+ "CM": {
+ "name": "Камерун"
+ },
+ "CA": {
+ "name": "Канада"
+ },
+ "IC": {
+ "name": "Канар аралдары"
+ },
+ "BQ": {
+ "name": "Кариб ÐидерландыÑÑ‹"
+ },
+ "QA": {
+ "name": "Катар"
+ },
+ "KE": {
+ "name": "КениÑ"
+ },
+ "CY": {
+ "name": "Кипр"
+ },
+ "KI": {
+ "name": "Кирибати"
+ },
+ "CC": {
+ "name": "ÐšÐ¾ÐºÐ¾Ñ Ð°Ñ€Ð°Ð»Ð´Ð°Ñ€Ñ‹"
+ },
+ "CO": {
+ "name": "КолумбиÑ"
+ },
+ "KM": {
+ "name": "Комор"
+ },
+ "CD": {
+ "name": "Конго"
+ },
+ "CG": {
+ "name": "Конго-Браззавиль РеÑпубликаÑÑ‹"
+ },
+ "XK": {
+ "name": "КоÑово"
+ },
+ "CR": {
+ "name": "КоÑта-Рика"
+ },
+ "CI": {
+ "name": "Кот-д’Ивуар"
+ },
+ "CX": {
+ "name": "КриÑÑ‚Ð¼Ð°Ñ Ð°Ñ€Ð°Ð»Ñ‹"
+ },
+ "CU": {
+ "name": "Куба"
+ },
+ "KW": {
+ "name": "Кувейт"
+ },
+ "CK": {
+ "name": "Кук аралдары"
+ },
+ "CW": {
+ "name": "КюраÑао"
+ },
+ "KZ": {
+ "name": "ҚазақÑтан"
+ },
+ "KG": {
+ "name": "ҚырғызÑтан"
+ },
+ "CN": {
+ "name": "Қытай"
+ },
+ "HK": {
+ "name": "Қытай Халық РеÑпубликаÑының Гонг-Конг арнайы әкімшілік ауданы"
+ },
+ "MO": {
+ "name": "Қытай Халық РеÑпубликаÑының Макао арнайы әкімшілік ауданы"
+ },
+ "LA": {
+ "name": "ЛаоÑ"
+ },
+ "LV": {
+ "name": "ЛатвиÑ"
+ },
+ "LS": {
+ "name": "ЛеÑото"
+ },
+ "LR": {
+ "name": "ЛибериÑ"
+ },
+ "LY": {
+ "name": "ЛибиÑ"
+ },
+ "LB": {
+ "name": "Ливан"
+ },
+ "LT": {
+ "name": "Литва"
+ },
+ "LI": {
+ "name": "Лихтенштейн"
+ },
+ "LU": {
+ "name": "ЛюкÑембург"
+ },
+ "MU": {
+ "name": "Маврикий"
+ },
+ "MR": {
+ "name": "МавританиÑ"
+ },
+ "MG": {
+ "name": "МадагаÑкар"
+ },
+ "YT": {
+ "name": "Майотта"
+ },
+ "MK": {
+ "name": "МакедониÑ"
+ },
+ "MW": {
+ "name": "Малави"
+ },
+ "MY": {
+ "name": "МалайзиÑ"
+ },
+ "ML": {
+ "name": "Мали"
+ },
+ "MV": {
+ "name": "Мальдив РеÑпубликаÑÑ‹"
+ },
+ "MT": {
+ "name": "Мальта"
+ },
+ "MQ": {
+ "name": "Мартиника"
+ },
+ "MH": {
+ "name": "Маршалл аралдары"
+ },
+ "MX": {
+ "name": "МекÑика"
+ },
+ "FM": {
+ "name": "МикронезиÑ"
+ },
+ "MZ": {
+ "name": "Мозамбик"
+ },
+ "MD": {
+ "name": "Молдова"
+ },
+ "MC": {
+ "name": "Монако"
+ },
+ "MS": {
+ "name": "МонтÑеррат"
+ },
+ "MN": {
+ "name": "МоңғолиÑ"
+ },
+ "MA": {
+ "name": "Морокко"
+ },
+ "EG": {
+ "name": "МыÑÑ‹Ñ€"
+ },
+ "MM": {
+ "name": "МьÑнма (Бирма)"
+ },
+ "IM": {
+ "name": "ÐœÑн аралы"
+ },
+ "NA": {
+ "name": "ÐамибиÑ"
+ },
+ "NR": {
+ "name": "Ðауру"
+ },
+ "NP": {
+ "name": "Ðепал"
+ },
+ "NE": {
+ "name": "Ðигер"
+ },
+ "NG": {
+ "name": "ÐигериÑ"
+ },
+ "NI": {
+ "name": "Ðикарагуа"
+ },
+ "NU": {
+ "name": "ÐиуÑ"
+ },
+ "NO": {
+ "name": "ÐорвегиÑ"
+ },
+ "NF": {
+ "name": "Ðорфолк аралы"
+ },
+ "OM": {
+ "name": "Оман"
+ },
+ "ZA": {
+ "name": "ОңтүÑтік Ðфрика реÑпубликаÑÑ‹"
+ },
+ "GS": {
+ "name": "ОңтүÑтік Ð“ÐµÐ¾Ñ€Ð³Ð¸Ñ Ð¶Ó™Ð½Ðµ ОңтүÑтік Сандвичев аралы"
+ },
+ "KP": {
+ "name": "ОңтүÑтік КореÑ"
+ },
+ "SS": {
+ "name": "ОңтүÑтік Судан"
+ },
+ "CF": {
+ "name": "Орталық Ðфрика РеÑпубликаÑÑ‹"
+ },
+ "UZ": {
+ "name": "ӨзбекÑтан"
+ },
+ "PW": {
+ "name": "Палау"
+ },
+ "PS": {
+ "name": "ПалеÑтина аймақтары"
+ },
+ "PA": {
+ "name": "Панама"
+ },
+ "PG": {
+ "name": "Папуа — Жаңа ГвинеÑ"
+ },
+ "PY": {
+ "name": "Парагвай"
+ },
+ "PK": {
+ "name": "ПәкіÑтан"
+ },
+ "PE": {
+ "name": "Перу"
+ },
+ "PN": {
+ "name": "ПиткÑрн аралдары"
+ },
+ "PL": {
+ "name": "Польша"
+ },
+ "PT": {
+ "name": "ПортугалиÑ"
+ },
+ "PR": {
+ "name": "ПуÑрто-Рико"
+ },
+ "RU": {
+ "name": "РеÑей"
+ },
+ "RE": {
+ "name": "Реюньон"
+ },
+ "RW": {
+ "name": "Руанда"
+ },
+ "RO": {
+ "name": "РумыниÑ"
+ },
+ "SV": {
+ "name": "Сальвадор"
+ },
+ "WS": {
+ "name": "Самоа"
+ },
+ "SM": {
+ "name": "Сан-Марино"
+ },
+ "ST": {
+ "name": "Сан-Томе мен ПринÑипи"
+ },
+ "SA": {
+ "name": "Сауд ÐрабиÑÑÑ‹"
+ },
+ "SZ": {
+ "name": "Свазиленд"
+ },
+ "SC": {
+ "name": "Сейшель аралдары"
+ },
+ "BL": {
+ "name": "Сен-Бартелеми"
+ },
+ "MF": {
+ "name": "Сен-Мартен"
+ },
+ "PM": {
+ "name": "Сен-Пьер және Микелон"
+ },
+ "SN": {
+ "name": "Сенегал"
+ },
+ "VC": {
+ "name": "Сент-ВинÑент және Гренадиндер"
+ },
+ "KN": {
+ "name": "Сент-ÐšÐ¸Ñ‚Ñ Ð¶Ó™Ð½Ðµ ÐевиÑ"
+ },
+ "LC": {
+ "name": "Сент-ЛюÑиÑ"
+ },
+ "RS": {
+ "name": "СербиÑ"
+ },
+ "EA": {
+ "name": "Сеута мен МелильÑ"
+ },
+ "SG": {
+ "name": "Сингапур"
+ },
+ "SX": {
+ "name": "Синт-Мартен"
+ },
+ "SY": {
+ "name": "СириÑ"
+ },
+ "SK": {
+ "name": "СловакиÑ"
+ },
+ "SI": {
+ "name": "СловениÑ"
+ },
+ "SB": {
+ "name": "Соломон аралдары"
+ },
+ "KR": {
+ "name": "СолтүÑтік КореÑ"
+ },
+ "MP": {
+ "name": "СолтүÑтік Мариан аралдары"
+ },
+ "SO": {
+ "name": "Сомали"
+ },
+ "SD": {
+ "name": "Судан"
+ },
+ "SR": {
+ "name": "Суринам"
+ },
+ "SL": {
+ "name": "Сьерра-Леоне"
+ },
+ "TW": {
+ "name": "Тайвань"
+ },
+ "TH": {
+ "name": "Тайланд"
+ },
+ "TZ": {
+ "name": "ТанзаниÑ"
+ },
+ "TJ": {
+ "name": "ТәжікÑтан"
+ },
+ "TL": {
+ "name": "Тимор-ЛеÑте"
+ },
+ "TG": {
+ "name": "Того"
+ },
+ "TK": {
+ "name": "Токелау"
+ },
+ "TO": {
+ "name": "Тонга"
+ },
+ "TT": {
+ "name": "Тринидад пен Тобаго"
+ },
+ "TA": {
+ "name": "ТриÑтан-да-КуньÑ"
+ },
+ "TV": {
+ "name": "Тувалу"
+ },
+ "TN": {
+ "name": "ТуниÑ"
+ },
+ "TC": {
+ "name": "Ð¢ÑƒÑ€ÐºÑ Ð¿ÐµÐ½ КайкоÑ"
+ },
+ "TR": {
+ "name": "ТүркиÑ"
+ },
+ "TM": {
+ "name": "ТүрікменÑтан"
+ },
+ "UG": {
+ "name": "Уганда"
+ },
+ "UA": {
+ "name": "Украина"
+ },
+ "WF": {
+ "name": "Ð£Ð¾Ð»Ð»Ð¸Ñ Ð¿ÐµÐ½ Футуна"
+ },
+ "UY": {
+ "name": "Уругвай"
+ },
+ "IO": {
+ "name": "Үнді мұхитындағы Британ аймағы"
+ },
+ "IN": {
+ "name": "ҮндіÑтан"
+ },
+ "FO": {
+ "name": "Фарер аралдары"
+ },
+ "FJ": {
+ "name": "Фиджи"
+ },
+ "PH": {
+ "name": "Филиппиндер"
+ },
+ "FI": {
+ "name": "ФинлÑндиÑ"
+ },
+ "FK": {
+ "name": "Фолкленд аралдары"
+ },
+ "FR": {
+ "name": "ФранциÑ"
+ },
+ "TF": {
+ "name": "ФранциÑның ÑолтүÑтік аймағы"
+ },
+ "GF": {
+ "name": "Француз ГвианаÑÑ‹"
+ },
+ "PF": {
+ "name": "Француз ПолинезиÑÑÑ‹"
+ },
+ "HR": {
+ "name": "ХорватиÑ"
+ },
+ "TD": {
+ "name": "Чад"
+ },
+ "ME": {
+ "name": "ЧерногориÑ"
+ },
+ "CZ": {
+ "name": "Чех РеÑпубликаÑÑ‹"
+ },
+ "CL": {
+ "name": "Чили"
+ },
+ "CH": {
+ "name": "ШвейцариÑ"
+ },
+ "SE": {
+ "name": "ШвециÑ"
+ },
+ "SJ": {
+ "name": "Шпицберген мен Ян-Майен"
+ },
+ "LK": {
+ "name": "Шри-Ланка"
+ },
+ "EC": {
+ "name": "Эквадор"
+ },
+ "GQ": {
+ "name": "Экваторлық ГвинеÑ"
+ },
+ "ER": {
+ "name": "ЭритреÑ"
+ },
+ "EE": {
+ "name": "ЭÑтониÑ"
+ },
+ "ET": {
+ "name": "ЭфиопиÑ"
+ },
+ "JM": {
+ "name": "Ямайка"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/country/kl.json b/library/intl/resources/country/kl.json
new file mode 100644
index 000000000..a770f7ee2
--- /dev/null
+++ b/library/intl/resources/country/kl.json
@@ -0,0 +1,761 @@
+{
+ "AF": {
+ "name": "Afghanistani"
+ },
+ "AL": {
+ "name": "Albania"
+ },
+ "DZ": {
+ "name": "Algeriet"
+ },
+ "AS": {
+ "name": "American Samoa"
+ },
+ "AD": {
+ "name": "Andorra"
+ },
+ "AO": {
+ "name": "Angola"
+ },
+ "AI": {
+ "name": "Anguilla"
+ },
+ "AG": {
+ "name": "Antigua aamma Barbuda"
+ },
+ "AR": {
+ "name": "Argentina"
+ },
+ "AM": {
+ "name": "Armenia"
+ },
+ "AW": {
+ "name": "Aruba"
+ },
+ "AC": {
+ "name": "Ascension qeqertaq"
+ },
+ "AU": {
+ "name": "Australia"
+ },
+ "SD": {
+ "name": "Avannarleqsudan"
+ },
+ "AZ": {
+ "name": "Azerbaijan"
+ },
+ "BS": {
+ "name": "Bahamas"
+ },
+ "BH": {
+ "name": "Bahrain"
+ },
+ "BD": {
+ "name": "Bangladesh"
+ },
+ "BB": {
+ "name": "Barbados"
+ },
+ "BE": {
+ "name": "Belgia"
+ },
+ "BZ": {
+ "name": "Belize"
+ },
+ "BJ": {
+ "name": "Benin"
+ },
+ "BM": {
+ "name": "Bermuda"
+ },
+ "BT": {
+ "name": "Bhutan"
+ },
+ "BO": {
+ "name": "Bolivia"
+ },
+ "BA": {
+ "name": "Bosnia aamma Herzegovina"
+ },
+ "BW": {
+ "name": "Botswana"
+ },
+ "BR": {
+ "name": "Brazil"
+ },
+ "IO": {
+ "name": "British Indian Ocean Territory"
+ },
+ "VG": {
+ "name": "British Virgin Islands"
+ },
+ "BN": {
+ "name": "Brunei"
+ },
+ "BG": {
+ "name": "Bulgaria"
+ },
+ "BF": {
+ "name": "Burkina Faso"
+ },
+ "MM": {
+ "name": "Burma"
+ },
+ "BI": {
+ "name": "Burundi"
+ },
+ "CA": {
+ "name": "Canada"
+ },
+ "CV": {
+ "name": "Cap Verde"
+ },
+ "BQ": {
+ "name": "Caribbean Netherlands"
+ },
+ "KY": {
+ "name": "Cayman qeqertaq"
+ },
+ "CF": {
+ "name": "Central African Republic"
+ },
+ "EA": {
+ "name": "Ceuta aamma Melilla"
+ },
+ "TD": {
+ "name": "Chad"
+ },
+ "CL": {
+ "name": "Chile"
+ },
+ "CC": {
+ "name": "Cocos qeqertaq"
+ },
+ "CO": {
+ "name": "Colombia"
+ },
+ "KM": {
+ "name": "Comoros"
+ },
+ "CK": {
+ "name": "Cook qeqertaq"
+ },
+ "CR": {
+ "name": "Costa Rica"
+ },
+ "CI": {
+ "name": "Côte d’Ivoire"
+ },
+ "CW": {
+ "name": "Curaçao"
+ },
+ "CY": {
+ "name": "Cypern"
+ },
+ "DK": {
+ "name": "Danmarki"
+ },
+ "DG": {
+ "name": "Diego Garcia"
+ },
+ "DJ": {
+ "name": "Djibouti"
+ },
+ "DM": {
+ "name": "Dominica"
+ },
+ "DO": {
+ "name": "Dominican Republic"
+ },
+ "EC": {
+ "name": "Ecuador"
+ },
+ "EG": {
+ "name": "Egypten"
+ },
+ "SV": {
+ "name": "El Salvador"
+ },
+ "GQ": {
+ "name": "Equatorial Guinea"
+ },
+ "ER": {
+ "name": "Eritrea"
+ },
+ "EE": {
+ "name": "Estlandi"
+ },
+ "ET": {
+ "name": "Ethiopia"
+ },
+ "FK": {
+ "name": "Falklandi qeqertaq"
+ },
+ "FJ": {
+ "name": "Fiji"
+ },
+ "FI": {
+ "name": "Finlandi"
+ },
+ "FR": {
+ "name": "Frankrigi"
+ },
+ "MF": {
+ "name": "Frankrigi Saint Martin"
+ },
+ "GF": {
+ "name": "French Guiana"
+ },
+ "PF": {
+ "name": "French Polynesia"
+ },
+ "TF": {
+ "name": "French Southern Territories"
+ },
+ "GA": {
+ "name": "Gabon"
+ },
+ "GM": {
+ "name": "Gambia"
+ },
+ "GE": {
+ "name": "Georgia"
+ },
+ "GH": {
+ "name": "Ghana"
+ },
+ "GI": {
+ "name": "Gibraltar"
+ },
+ "GD": {
+ "name": "Grenada"
+ },
+ "GR": {
+ "name": "Grækenlandi"
+ },
+ "GP": {
+ "name": "Guadeloupe"
+ },
+ "GU": {
+ "name": "Guam"
+ },
+ "GT": {
+ "name": "Guatemala"
+ },
+ "GG": {
+ "name": "Guernsey"
+ },
+ "GN": {
+ "name": "Guinea"
+ },
+ "GW": {
+ "name": "Guinea-Bissau"
+ },
+ "GY": {
+ "name": "Guyana"
+ },
+ "HT": {
+ "name": "Haiti"
+ },
+ "NL": {
+ "name": "Hollandi"
+ },
+ "HN": {
+ "name": "Honduras"
+ },
+ "HK": {
+ "name": "Hongkong"
+ },
+ "BY": {
+ "name": "Hvideruslandi"
+ },
+ "IN": {
+ "name": "India"
+ },
+ "ID": {
+ "name": "Indonesia"
+ },
+ "IQ": {
+ "name": "Irak"
+ },
+ "IR": {
+ "name": "Iran"
+ },
+ "IE": {
+ "name": "Irlandi"
+ },
+ "IS": {
+ "name": "Islandi"
+ },
+ "IM": {
+ "name": "Isle of Man"
+ },
+ "IL": {
+ "name": "Israel"
+ },
+ "IT": {
+ "name": "Italia"
+ },
+ "JM": {
+ "name": "Jamaica"
+ },
+ "JP": {
+ "name": "Japani"
+ },
+ "YE": {
+ "name": "Jemen"
+ },
+ "JE": {
+ "name": "Jersey"
+ },
+ "JO": {
+ "name": "Jordani"
+ },
+ "CX": {
+ "name": "Jul-qeqertaq"
+ },
+ "GL": {
+ "name": "Kalaallit Nunaat"
+ },
+ "KH": {
+ "name": "Kambodia"
+ },
+ "CM": {
+ "name": "Kamerun"
+ },
+ "IC": {
+ "name": "Kanaria qeqertaq"
+ },
+ "KZ": {
+ "name": "Kasakhstani"
+ },
+ "KE": {
+ "name": "Kenya"
+ },
+ "CN": {
+ "name": "Kina"
+ },
+ "KI": {
+ "name": "Kiribati"
+ },
+ "CG": {
+ "name": "Kongo-Brazzaville"
+ },
+ "CD": {
+ "name": "Kongo-Kinshasa"
+ },
+ "KP": {
+ "name": "Korea Avannarleq"
+ },
+ "KR": {
+ "name": "Korea Kujalleq"
+ },
+ "XK": {
+ "name": "Kosovo"
+ },
+ "HR": {
+ "name": "Kroatia"
+ },
+ "CU": {
+ "name": "Kuba"
+ },
+ "ZA": {
+ "name": "Kujalleqafrika"
+ },
+ "SS": {
+ "name": "Kujalleqsudan"
+ },
+ "KW": {
+ "name": "Kuwait"
+ },
+ "KG": {
+ "name": "Kyrgyzstan"
+ },
+ "LA": {
+ "name": "Laos"
+ },
+ "LS": {
+ "name": "Lesotho"
+ },
+ "LV": {
+ "name": "Letlandi"
+ },
+ "LB": {
+ "name": "Libanon"
+ },
+ "LR": {
+ "name": "Liberia"
+ },
+ "LY": {
+ "name": "Libya"
+ },
+ "LI": {
+ "name": "Liechtensteini"
+ },
+ "LT": {
+ "name": "Litaueni"
+ },
+ "LU": {
+ "name": "Luxembourg"
+ },
+ "MO": {
+ "name": "Macao"
+ },
+ "MG": {
+ "name": "Madagaskar"
+ },
+ "MK": {
+ "name": "Makedonia"
+ },
+ "MW": {
+ "name": "Malawi"
+ },
+ "MY": {
+ "name": "Malaysia"
+ },
+ "MV": {
+ "name": "Maldives"
+ },
+ "ML": {
+ "name": "Mali"
+ },
+ "MT": {
+ "name": "Malta"
+ },
+ "MA": {
+ "name": "Marocko"
+ },
+ "MH": {
+ "name": "Marshall Islands"
+ },
+ "MQ": {
+ "name": "Martinique"
+ },
+ "MR": {
+ "name": "Mauritania"
+ },
+ "MU": {
+ "name": "Mauritius"
+ },
+ "YT": {
+ "name": "Mayotte"
+ },
+ "MX": {
+ "name": "Mexiko"
+ },
+ "FM": {
+ "name": "Micronesia"
+ },
+ "MZ": {
+ "name": "Moçambique"
+ },
+ "MD": {
+ "name": "Moldova"
+ },
+ "MC": {
+ "name": "Monaco"
+ },
+ "MN": {
+ "name": "Mongolia"
+ },
+ "ME": {
+ "name": "Montenegro"
+ },
+ "MS": {
+ "name": "Montserrat"
+ },
+ "US": {
+ "name": "Naalagaaffeqatigiit"
+ },
+ "NA": {
+ "name": "Namibia"
+ },
+ "NR": {
+ "name": "Nauru"
+ },
+ "NP": {
+ "name": "Nepal"
+ },
+ "NI": {
+ "name": "Nicaragua"
+ },
+ "NE": {
+ "name": "Niger"
+ },
+ "NG": {
+ "name": "Nigeria"
+ },
+ "NU": {
+ "name": "Niue"
+ },
+ "NF": {
+ "name": "Norfolk Island"
+ },
+ "NO": {
+ "name": "Norge"
+ },
+ "MP": {
+ "name": "Northern Mariana Islands"
+ },
+ "NC": {
+ "name": "Nutaaq Caledonia"
+ },
+ "NZ": {
+ "name": "Nutaaq Zeelandi"
+ },
+ "OM": {
+ "name": "Oman"
+ },
+ "PK": {
+ "name": "Pakistani"
+ },
+ "PW": {
+ "name": "Palau"
+ },
+ "PS": {
+ "name": "Palestinian Territories"
+ },
+ "PA": {
+ "name": "Panama"
+ },
+ "PG": {
+ "name": "Papua Nutaaq Guinea"
+ },
+ "PY": {
+ "name": "Paraguay"
+ },
+ "PE": {
+ "name": "Peru"
+ },
+ "PH": {
+ "name": "Philippines"
+ },
+ "PN": {
+ "name": "Pitcairn Islands"
+ },
+ "PL": {
+ "name": "Poleni"
+ },
+ "PT": {
+ "name": "Portugali"
+ },
+ "PR": {
+ "name": "Puerto Rico"
+ },
+ "AQ": {
+ "name": "Qalasersuaq Kujalleq"
+ },
+ "QA": {
+ "name": "Quatar"
+ },
+ "RE": {
+ "name": "Réunion"
+ },
+ "RO": {
+ "name": "Rumænia"
+ },
+ "RU": {
+ "name": "Ruslandi"
+ },
+ "RW": {
+ "name": "Rwanda"
+ },
+ "EH": {
+ "name": "Sahara Killiit"
+ },
+ "BL": {
+ "name": "Saint Barthélemy"
+ },
+ "SH": {
+ "name": "Saint Helena"
+ },
+ "KN": {
+ "name": "Saint Kitts aamma Nevis"
+ },
+ "LC": {
+ "name": "Saint Lucia"
+ },
+ "PM": {
+ "name": "Saint Pierre aamma Miquelon"
+ },
+ "WS": {
+ "name": "Samoa"
+ },
+ "SM": {
+ "name": "San Marino"
+ },
+ "ST": {
+ "name": "São Tomé aamma Príncipe"
+ },
+ "SA": {
+ "name": "Saudi Arabia"
+ },
+ "FO": {
+ "name": "Savalimmiut"
+ },
+ "CH": {
+ "name": "Schweizi"
+ },
+ "SN": {
+ "name": "Senegal"
+ },
+ "RS": {
+ "name": "Serbia"
+ },
+ "SC": {
+ "name": "Seychelles"
+ },
+ "SL": {
+ "name": "Sierra Leone"
+ },
+ "SG": {
+ "name": "Singapore"
+ },
+ "SX": {
+ "name": "Sint Maarten"
+ },
+ "SK": {
+ "name": "Slovakia"
+ },
+ "SI": {
+ "name": "Slovenia"
+ },
+ "SB": {
+ "name": "Solomon Islands"
+ },
+ "SO": {
+ "name": "Somalia"
+ },
+ "GS": {
+ "name": "South Georgia & South Sandwich Islands"
+ },
+ "ES": {
+ "name": "Spania"
+ },
+ "LK": {
+ "name": "Sri Lanka"
+ },
+ "VC": {
+ "name": "St. Vincent & Grenadines"
+ },
+ "SR": {
+ "name": "Suriname"
+ },
+ "SJ": {
+ "name": "Svalbard aamma Jan Mayen"
+ },
+ "SE": {
+ "name": "Sverige"
+ },
+ "SZ": {
+ "name": "Swazilandi"
+ },
+ "SY": {
+ "name": "Syria"
+ },
+ "TW": {
+ "name": "Taiwan"
+ },
+ "TJ": {
+ "name": "Tajikistani"
+ },
+ "TZ": {
+ "name": "Tanzania"
+ },
+ "TH": {
+ "name": "Thailandi"
+ },
+ "TL": {
+ "name": "Timor Kangilliit"
+ },
+ "CZ": {
+ "name": "Tjekkia"
+ },
+ "TG": {
+ "name": "Togo"
+ },
+ "TK": {
+ "name": "Tokelau"
+ },
+ "TO": {
+ "name": "Tonga"
+ },
+ "TT": {
+ "name": "Trinidad aamma Tobago"
+ },
+ "TA": {
+ "name": "Tristan da Cunha"
+ },
+ "GB": {
+ "name": "Tuluit Nunaat"
+ },
+ "TN": {
+ "name": "Tunisia"
+ },
+ "TM": {
+ "name": "Turkmenistani"
+ },
+ "TC": {
+ "name": "Turks & Caicos Islands"
+ },
+ "TV": {
+ "name": "Tuvalu"
+ },
+ "TR": {
+ "name": "Tyrkia"
+ },
+ "DE": {
+ "name": "Tysklandi"
+ },
+ "UM": {
+ "name": "U.S. Outlying Islands"
+ },
+ "VI": {
+ "name": "U.S. Virgin Islands"
+ },
+ "UG": {
+ "name": "Uganda"
+ },
+ "UA": {
+ "name": "Ukraina"
+ },
+ "HU": {
+ "name": "Ungarni"
+ },
+ "AE": {
+ "name": "United Arab Emirates"
+ },
+ "UY": {
+ "name": "Uruguay"
+ },
+ "UZ": {
+ "name": "Uzbekistani"
+ },
+ "VU": {
+ "name": "Vanuatu"
+ },
+ "VA": {
+ "name": "Vatikani"
+ },
+ "VE": {
+ "name": "Venezuela"
+ },
+ "VN": {
+ "name": "Vietnam"
+ },
+ "WF": {
+ "name": "Wallis aamma Futuna"
+ },
+ "ZM": {
+ "name": "Zambia"
+ },
+ "ZW": {
+ "name": "Zimbabwe"
+ },
+ "AT": {
+ "name": "Østrigi"
+ },
+ "AX": {
+ "name": "Ã…landi"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/country/kln.json b/library/intl/resources/country/kln.json
new file mode 100644
index 000000000..ee8ae7c39
--- /dev/null
+++ b/library/intl/resources/country/kln.json
@@ -0,0 +1,761 @@
+{
+ "AX": {
+ "name": "Ã…land Islands"
+ },
+ "AQ": {
+ "name": "Antarctica"
+ },
+ "AC": {
+ "name": "Ascension Island"
+ },
+ "IC": {
+ "name": "Canary Islands"
+ },
+ "BQ": {
+ "name": "Caribbean Netherlands"
+ },
+ "EA": {
+ "name": "Ceuta & Melilla"
+ },
+ "CX": {
+ "name": "Christmas Island"
+ },
+ "CC": {
+ "name": "Cocos (Keeling) Islands"
+ },
+ "CW": {
+ "name": "Curaçao"
+ },
+ "DG": {
+ "name": "Diego Garcia"
+ },
+ "AF": {
+ "name": "Emetab Afghanistan"
+ },
+ "CF": {
+ "name": "Emetab Afrika nebo Kwen"
+ },
+ "ZA": {
+ "name": "Emetab Afrika nebo Murot tai"
+ },
+ "AL": {
+ "name": "Emetab Albania"
+ },
+ "DZ": {
+ "name": "Emetab Algeria"
+ },
+ "AS": {
+ "name": "Emetab American Samoa"
+ },
+ "US": {
+ "name": "Emetab amerika"
+ },
+ "AD": {
+ "name": "Emetab Andorra"
+ },
+ "AO": {
+ "name": "Emetab Angola"
+ },
+ "AI": {
+ "name": "Emetab Anguilla"
+ },
+ "AG": {
+ "name": "Emetab Antigua ak Barbuda"
+ },
+ "AR": {
+ "name": "Emetab Argentina"
+ },
+ "AM": {
+ "name": "Emetab Armenia"
+ },
+ "AW": {
+ "name": "Emetab Aruba"
+ },
+ "AU": {
+ "name": "Emetab Australia"
+ },
+ "AT": {
+ "name": "Emetab Austria"
+ },
+ "AZ": {
+ "name": "Emetab Azerbaijan"
+ },
+ "BS": {
+ "name": "Emetab Bahamas"
+ },
+ "BH": {
+ "name": "Emetab Bahrain"
+ },
+ "BD": {
+ "name": "Emetab Bangladesh"
+ },
+ "BB": {
+ "name": "Emetab Barbados"
+ },
+ "BY": {
+ "name": "Emetab Belarus"
+ },
+ "BE": {
+ "name": "Emetab Belgium"
+ },
+ "BZ": {
+ "name": "Emetab Belize"
+ },
+ "BJ": {
+ "name": "Emetab Benin"
+ },
+ "BM": {
+ "name": "Emetab Bermuda"
+ },
+ "BT": {
+ "name": "Emetab Bhutan"
+ },
+ "BO": {
+ "name": "Emetab Bolivia"
+ },
+ "BA": {
+ "name": "Emetab Bosnia ak Herzegovina"
+ },
+ "BW": {
+ "name": "Emetab Botswana"
+ },
+ "BR": {
+ "name": "Emetab Brazil"
+ },
+ "BN": {
+ "name": "Emetab Brunei"
+ },
+ "BG": {
+ "name": "Emetab Bulgaria"
+ },
+ "BF": {
+ "name": "Emetab Burkina Faso"
+ },
+ "BI": {
+ "name": "Emetab Burundi"
+ },
+ "KH": {
+ "name": "Emetab Cambodia"
+ },
+ "CM": {
+ "name": "Emetab Cameroon"
+ },
+ "CA": {
+ "name": "Emetab Canada"
+ },
+ "TD": {
+ "name": "Emetab Chad"
+ },
+ "CL": {
+ "name": "Emetab Chile"
+ },
+ "CN": {
+ "name": "Emetab China"
+ },
+ "CO": {
+ "name": "Emetab Colombia"
+ },
+ "KM": {
+ "name": "Emetab Comoros"
+ },
+ "CG": {
+ "name": "Emetab Congo - Brazzaville"
+ },
+ "CD": {
+ "name": "Emetab Congo - Kinshasa"
+ },
+ "CR": {
+ "name": "Emetab Costa Rica"
+ },
+ "CI": {
+ "name": "Emetab Côte d’Ivoire"
+ },
+ "HR": {
+ "name": "Emetab Croatia"
+ },
+ "CU": {
+ "name": "Emetab Cuba"
+ },
+ "CY": {
+ "name": "Emetab Cyprus"
+ },
+ "CZ": {
+ "name": "Emetab Czech Republic"
+ },
+ "DK": {
+ "name": "Emetab Denmark"
+ },
+ "DJ": {
+ "name": "Emetab Djibouti"
+ },
+ "DM": {
+ "name": "Emetab Dominica"
+ },
+ "DO": {
+ "name": "Emetab Dominican Republic"
+ },
+ "EC": {
+ "name": "Emetab Ecuador"
+ },
+ "SV": {
+ "name": "Emetab El Salvador"
+ },
+ "GQ": {
+ "name": "Emetab Equatorial Guinea"
+ },
+ "ER": {
+ "name": "Emetab Eritrea"
+ },
+ "EE": {
+ "name": "Emetab Estonia"
+ },
+ "ET": {
+ "name": "Emetab Ethiopia"
+ },
+ "FJ": {
+ "name": "Emetab Fiji"
+ },
+ "FI": {
+ "name": "Emetab Finland"
+ },
+ "FR": {
+ "name": "Emetab France"
+ },
+ "GA": {
+ "name": "Emetab Gabon"
+ },
+ "GM": {
+ "name": "Emetab Gambia"
+ },
+ "GE": {
+ "name": "Emetab Georgia"
+ },
+ "DE": {
+ "name": "Emetab Geruman"
+ },
+ "GH": {
+ "name": "Emetab Ghana"
+ },
+ "GI": {
+ "name": "Emetab Gibraltar"
+ },
+ "GR": {
+ "name": "Emetab Greece"
+ },
+ "GL": {
+ "name": "Emetab Greenland"
+ },
+ "GD": {
+ "name": "Emetab Grenada"
+ },
+ "GP": {
+ "name": "Emetab Guadeloupe"
+ },
+ "GU": {
+ "name": "Emetab Guam"
+ },
+ "GT": {
+ "name": "Emetab Guatemala"
+ },
+ "GF": {
+ "name": "Emetab Guiana nebo Ufaransa"
+ },
+ "GN": {
+ "name": "Emetab Guinea"
+ },
+ "GW": {
+ "name": "Emetab Guinea-Bissau"
+ },
+ "GY": {
+ "name": "Emetab Guyana"
+ },
+ "HT": {
+ "name": "Emetab Haiti"
+ },
+ "SH": {
+ "name": "Emetab Helena Ne tilil"
+ },
+ "NL": {
+ "name": "Emetab Holand"
+ },
+ "HN": {
+ "name": "Emetab Honduras"
+ },
+ "HU": {
+ "name": "Emetab Hungary"
+ },
+ "IS": {
+ "name": "Emetab Iceland"
+ },
+ "IN": {
+ "name": "Emetab India"
+ },
+ "ID": {
+ "name": "Emetab Indonesia"
+ },
+ "IR": {
+ "name": "Emetab Iran"
+ },
+ "IQ": {
+ "name": "Emetab Iraq"
+ },
+ "IE": {
+ "name": "Emetab Ireland"
+ },
+ "IL": {
+ "name": "Emetab Israel"
+ },
+ "IT": {
+ "name": "Emetab Italy"
+ },
+ "JM": {
+ "name": "Emetab Jamaica"
+ },
+ "JP": {
+ "name": "Emetab Japan"
+ },
+ "JO": {
+ "name": "Emetab Jordan"
+ },
+ "KZ": {
+ "name": "Emetab Kazakhstan"
+ },
+ "KE": {
+ "name": "Emetab Kenya"
+ },
+ "AE": {
+ "name": "Emetab kibagenge nebo arabuk"
+ },
+ "GB": {
+ "name": "Emetab Kibagenge nebo Uingereza"
+ },
+ "KI": {
+ "name": "Emetab Kiribati"
+ },
+ "KP": {
+ "name": "Emetab Korea nebo murot katam"
+ },
+ "KR": {
+ "name": "Emetab korea nebo murot tai"
+ },
+ "KW": {
+ "name": "Emetab Kuwait"
+ },
+ "KG": {
+ "name": "Emetab Kyrgyzstan"
+ },
+ "LA": {
+ "name": "Emetab Laos"
+ },
+ "LV": {
+ "name": "Emetab Latvia"
+ },
+ "LB": {
+ "name": "Emetab Lebanon"
+ },
+ "LS": {
+ "name": "Emetab Lesotho"
+ },
+ "LR": {
+ "name": "Emetab Liberia"
+ },
+ "LY": {
+ "name": "Emetab Libya"
+ },
+ "LI": {
+ "name": "Emetab Liechtenstein"
+ },
+ "LT": {
+ "name": "Emetab Lithuania"
+ },
+ "LC": {
+ "name": "Emetab Lucia Ne"
+ },
+ "LU": {
+ "name": "Emetab Luxembourg"
+ },
+ "MK": {
+ "name": "Emetab Macedonia"
+ },
+ "MG": {
+ "name": "Emetab Madagascar"
+ },
+ "MW": {
+ "name": "Emetab Malawi"
+ },
+ "MY": {
+ "name": "Emetab Malaysia"
+ },
+ "MV": {
+ "name": "Emetab Maldives"
+ },
+ "ML": {
+ "name": "Emetab Mali"
+ },
+ "MT": {
+ "name": "Emetab Malta"
+ },
+ "MQ": {
+ "name": "Emetab Martinique"
+ },
+ "MR": {
+ "name": "Emetab Mauritania"
+ },
+ "MU": {
+ "name": "Emetab Mauritius"
+ },
+ "YT": {
+ "name": "Emetab Mayotte"
+ },
+ "MX": {
+ "name": "Emetab Mexico"
+ },
+ "FM": {
+ "name": "Emetab Micronesia"
+ },
+ "EG": {
+ "name": "Emetab Misiri"
+ },
+ "MD": {
+ "name": "Emetab Moldova"
+ },
+ "MC": {
+ "name": "Emetab Monaco"
+ },
+ "MN": {
+ "name": "Emetab Mongolia"
+ },
+ "MS": {
+ "name": "Emetab Montserrat"
+ },
+ "MA": {
+ "name": "Emetab Morocco"
+ },
+ "MZ": {
+ "name": "Emetab Mozambique"
+ },
+ "MM": {
+ "name": "Emetab Myanmar"
+ },
+ "NA": {
+ "name": "Emetab Namibia"
+ },
+ "NR": {
+ "name": "Emetab Nauru"
+ },
+ "NP": {
+ "name": "Emetab Nepal"
+ },
+ "NC": {
+ "name": "Emetab New Caledonia"
+ },
+ "NZ": {
+ "name": "Emetab New Zealand"
+ },
+ "NI": {
+ "name": "Emetab Nicaragua"
+ },
+ "NE": {
+ "name": "Emetab niger"
+ },
+ "NG": {
+ "name": "Emetab Nigeria"
+ },
+ "NU": {
+ "name": "Emetab Niue"
+ },
+ "NO": {
+ "name": "Emetab Norway"
+ },
+ "OM": {
+ "name": "Emetab Oman"
+ },
+ "PK": {
+ "name": "Emetab Pakistan"
+ },
+ "PW": {
+ "name": "Emetab Palau"
+ },
+ "PS": {
+ "name": "Emetab Palestine"
+ },
+ "PA": {
+ "name": "Emetab Panama"
+ },
+ "PG": {
+ "name": "Emetab Papua New Guinea"
+ },
+ "PY": {
+ "name": "Emetab Paraguay"
+ },
+ "PE": {
+ "name": "Emetab Peru"
+ },
+ "PM": {
+ "name": "Emetab Peter Ne titil ak Miquelon"
+ },
+ "PH": {
+ "name": "Emetab Philippines"
+ },
+ "PN": {
+ "name": "Emetab Pitcairn"
+ },
+ "PL": {
+ "name": "Emetab Poland"
+ },
+ "PF": {
+ "name": "Emetab Polynesia nebo ufaransa"
+ },
+ "PT": {
+ "name": "Emetab Portugal"
+ },
+ "PR": {
+ "name": "Emetab Puerto Rico"
+ },
+ "QA": {
+ "name": "Emetab Qatar"
+ },
+ "RE": {
+ "name": "Emetab Réunion"
+ },
+ "RO": {
+ "name": "Emetab Romania"
+ },
+ "RU": {
+ "name": "Emetab Russia"
+ },
+ "RW": {
+ "name": "Emetab Rwanda"
+ },
+ "KN": {
+ "name": "Emetab Saint Kitts ak Nevis"
+ },
+ "WS": {
+ "name": "Emetab Samoa"
+ },
+ "SM": {
+ "name": "Emetab San Marino"
+ },
+ "ST": {
+ "name": "Emetab São Tomé and Príncipe"
+ },
+ "SA": {
+ "name": "Emetab Saudi Arabia"
+ },
+ "SN": {
+ "name": "Emetab Senegal"
+ },
+ "SC": {
+ "name": "Emetab Seychelles"
+ },
+ "SL": {
+ "name": "Emetab Sierra Leone"
+ },
+ "SG": {
+ "name": "Emetab Singapore"
+ },
+ "SK": {
+ "name": "Emetab Slovakia"
+ },
+ "SI": {
+ "name": "Emetab Slovenia"
+ },
+ "SO": {
+ "name": "Emetab Somalia"
+ },
+ "ES": {
+ "name": "Emetab Spain"
+ },
+ "LK": {
+ "name": "Emetab Sri Lanka"
+ },
+ "SD": {
+ "name": "Emetab Sudan"
+ },
+ "SR": {
+ "name": "Emetab Suriname"
+ },
+ "SZ": {
+ "name": "Emetab Swaziland"
+ },
+ "SE": {
+ "name": "Emetab Sweden"
+ },
+ "CH": {
+ "name": "Emetab Switzerland"
+ },
+ "SY": {
+ "name": "Emetab Syria"
+ },
+ "TW": {
+ "name": "Emetab Taiwan"
+ },
+ "TJ": {
+ "name": "Emetab Tajikistan"
+ },
+ "TZ": {
+ "name": "Emetab Tanzania"
+ },
+ "TH": {
+ "name": "Emetab Thailand"
+ },
+ "TL": {
+ "name": "Emetab Timor nebo Murot tai"
+ },
+ "TG": {
+ "name": "Emetab Togo"
+ },
+ "TK": {
+ "name": "Emetab Tokelau"
+ },
+ "TO": {
+ "name": "Emetab Tonga"
+ },
+ "TT": {
+ "name": "Emetab Trinidad ak Tobago"
+ },
+ "TN": {
+ "name": "Emetab Tunisia"
+ },
+ "TR": {
+ "name": "Emetab Turkey"
+ },
+ "TM": {
+ "name": "Emetab Turkmenistan"
+ },
+ "TV": {
+ "name": "Emetab Tuvalu"
+ },
+ "UG": {
+ "name": "Emetab Uganda"
+ },
+ "UA": {
+ "name": "Emetab Ukrainie"
+ },
+ "UY": {
+ "name": "Emetab Uruguay"
+ },
+ "UZ": {
+ "name": "Emetab Uzibekistani"
+ },
+ "VU": {
+ "name": "Emetab Vanuatu"
+ },
+ "VA": {
+ "name": "Emetab Vatican"
+ },
+ "VE": {
+ "name": "Emetab Venezuela"
+ },
+ "VN": {
+ "name": "Emetab Vietnam"
+ },
+ "VC": {
+ "name": "Emetab Vincent netilil ak Grenadines"
+ },
+ "WF": {
+ "name": "Emetab Walis ak Futuna"
+ },
+ "YE": {
+ "name": "Emetab Yemen"
+ },
+ "ZM": {
+ "name": "Emetab Zambia"
+ },
+ "ZW": {
+ "name": "Emetab Zimbabwe"
+ },
+ "FO": {
+ "name": "Faroe Islands"
+ },
+ "TF": {
+ "name": "French Southern Territories"
+ },
+ "GG": {
+ "name": "Guernsey"
+ },
+ "HK": {
+ "name": "Hong Kong SAR China"
+ },
+ "MP": {
+ "name": "Ikwembeiyotab Mariana nebo murot katam"
+ },
+ "MH": {
+ "name": "Ikwembeiyotab Marshall"
+ },
+ "NF": {
+ "name": "Ikwembeiyotab Norfork"
+ },
+ "SB": {
+ "name": "Ikwembeiyotab Solomon"
+ },
+ "TC": {
+ "name": "Ikwembeiyotab Turks ak Caicos"
+ },
+ "VG": {
+ "name": "Ikwembeyotab British Virgin"
+ },
+ "CV": {
+ "name": "Ikwembeyotab Cape Verde"
+ },
+ "KY": {
+ "name": "Ikwembeyotab Cayman"
+ },
+ "CK": {
+ "name": "Ikwembeyotab Cook"
+ },
+ "FK": {
+ "name": "Ikwembeyotab Falkland"
+ },
+ "VI": {
+ "name": "Ikwemweiyotab Amerika"
+ },
+ "IM": {
+ "name": "Isle of Man"
+ },
+ "JE": {
+ "name": "Jersey"
+ },
+ "IO": {
+ "name": "Kebebertab araraitab indian Ocean nebo Uingeresa"
+ },
+ "XK": {
+ "name": "Kosovo"
+ },
+ "MO": {
+ "name": "Macau SAR China"
+ },
+ "ME": {
+ "name": "Montenegro"
+ },
+ "RS": {
+ "name": "Serbia"
+ },
+ "SX": {
+ "name": "Sint Maarten"
+ },
+ "GS": {
+ "name": "South Georgia & South Sandwich Islands"
+ },
+ "SS": {
+ "name": "South Sudan"
+ },
+ "BL": {
+ "name": "St. Barthélemy"
+ },
+ "MF": {
+ "name": "St. Martin"
+ },
+ "SJ": {
+ "name": "Svalbard & Jan Mayen"
+ },
+ "TA": {
+ "name": "Tristan da Cunha"
+ },
+ "UM": {
+ "name": "U.S. Outlying Islands"
+ },
+ "EH": {
+ "name": "Western Sahara"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/country/km.json b/library/intl/resources/country/km.json
new file mode 100644
index 000000000..96beeb1b7
--- /dev/null
+++ b/library/intl/resources/country/km.json
@@ -0,0 +1,761 @@
+{
+ "KH": {
+ "name": "កម្ពុជា"
+ },
+ "CA": {
+ "name": "កាណាដា"
+ },
+ "QA": {
+ "name": "កាážáž¶ážš"
+ },
+ "CV": {
+ "name": "កាបវែរ"
+ },
+ "CM": {
+ "name": "កាមáŸážšáž¼áž“"
+ },
+ "KZ": {
+ "name": "កាហ្សាក់ស្ážáž¶áž„់់"
+ },
+ "CG": {
+ "name": "កុងហ្គោ - ប្រាហ្សាវីល"
+ },
+ "CD": {
+ "name": "កុងហ្គោ- គីនស្ហាសា"
+ },
+ "CI": {
+ "name": "កូដឌីវáŸážš"
+ },
+ "CW": {
+ "name": "កូរ៉ាកៅ"
+ },
+ "KP": {
+ "name": "កូរ៉áŸâ€‹ážáž¶áž„​ជើង"
+ },
+ "KR": {
+ "name": "កូរ៉áŸâ€‹ážáž¶áž„​ážáŸ’បូង"
+ },
+ "XK": {
+ "name": "កូសូវ៉ូ"
+ },
+ "CR": {
+ "name": "កូស្ážáž¶ážšáž¸áž€áž¶"
+ },
+ "CO": {
+ "name": "កូឡុំប៊ី"
+ },
+ "KE": {
+ "name": "កáŸáž“យ៉ា"
+ },
+ "KM": {
+ "name": "កុំម៉ូរ៉ូស"
+ },
+ "IC": {
+ "name": "កោះ​កាណារី"
+ },
+ "CC": {
+ "name": "កោះ​កូកូស"
+ },
+ "TC": {
+ "name": "កោះ​កៃកូស និងទូក"
+ },
+ "KY": {
+ "name": "កោះ​កៃម៉ង់"
+ },
+ "CK": {
+ "name": "កោះ​ážáž¼áž€"
+ },
+ "CX": {
+ "name": "កោះ​គ្រីស្មាស"
+ },
+ "NF": {
+ "name": "កោះ​ណáŸážšáž áŸ’វក់"
+ },
+ "PN": {
+ "name": "កោះ​ភីážážáž¶ážšáž·áž“"
+ },
+ "MP": {
+ "name": "កោះ​ម៉ារីណា​ážáž¶áž„​ជើង"
+ },
+ "MH": {
+ "name": "កោះ​ម៉ាស់សល"
+ },
+ "VG": {
+ "name": "កោះ​វឺជិន​ចក្រភព​អង់គ្លáŸážŸ"
+ },
+ "VI": {
+ "name": "កោះ​វឺជីន​អាមáŸážšáž·áž€"
+ },
+ "SB": {
+ "name": "កោះ​ស៊ូឡូម៉ុង"
+ },
+ "FK": {
+ "name": "កោះ​ហ្វក់ឡែន"
+ },
+ "FO": {
+ "name": "កោះ​ហ្វារ៉ូ"
+ },
+ "GS": {
+ "name": "កោះ​ហ្សកហ្ស៊ី​ážáž¶áž„​ážáŸ’បូង និង​សាន់វិច​ážáž¶áž„​ážáŸ’បូង"
+ },
+ "AC": {
+ "name": "កោះ​អាសáŸáž“សិន"
+ },
+ "AX": {
+ "name": "កោះ​អាឡាំង"
+ },
+ "UM": {
+ "name": "កោះ​អៅឡាយីង​អាមáŸážšáž·áž€"
+ },
+ "GR": {
+ "name": "ក្រិច"
+ },
+ "HR": {
+ "name": "ក្រូអាáž"
+ },
+ "KI": {
+ "name": "គិរិបាទី"
+ },
+ "CU": {
+ "name": "គុយបា"
+ },
+ "KW": {
+ "name": "គុយវ៉ែáž"
+ },
+ "KG": {
+ "name": "គៀរហ្គីស្ážáž„់"
+ },
+ "GB": {
+ "name": "ចក្រភព​អង់គ្លáŸážŸ"
+ },
+ "CN": {
+ "name": "áž…áž·áž“"
+ },
+ "TD": {
+ "name": "ឆាដ"
+ },
+ "JP": {
+ "name": "ជប៉ុន"
+ },
+ "EA": {
+ "name": "ជឺážáž¶ និង​ម៉áŸáž›áž¸áž¡áž¶"
+ },
+ "JE": {
+ "name": "ជឺស៊ី"
+ },
+ "NC": {
+ "name": "ញូកាឡáŸážŠáž¼áž“ៀ"
+ },
+ "DK": {
+ "name": "ដាណឺម៉ាក"
+ },
+ "DM": {
+ "name": "ដូមីនីកា"
+ },
+ "TF": {
+ "name": "ដែន​បារាំង​ážáž¶áž„​ážáŸ’បូង"
+ },
+ "PS": {
+ "name": "ដែន​ប៉ាលáŸážŸáŸ’ទីន"
+ },
+ "IO": {
+ "name": "ដែន​មហា​សមុទ្រ​ឥណ្ឌា ចក្រភព​អង់គ្លáŸážŸ"
+ },
+ "DG": {
+ "name": "ឌៀហ្គោហ្គាស៊ី"
+ },
+ "NA": {
+ "name": "ណាមីប៊ី"
+ },
+ "NR": {
+ "name": "ណូរូ"
+ },
+ "NU": {
+ "name": "ណៀ"
+ },
+ "TZ": {
+ "name": "ážáž„់ហ្សានី"
+ },
+ "TJ": {
+ "name": "ážáž¶ážŠáž áŸ’ស៉ីគីស្ážáž„់"
+ },
+ "TO": {
+ "name": "ážáž»áž„ហ្គា"
+ },
+ "TK": {
+ "name": "ážáž¼ážáŸáž¡áŸ…"
+ },
+ "TG": {
+ "name": "ážáž¼áž áŸ’áž‚áž¼"
+ },
+ "TW": {
+ "name": "ážáŸƒážœáŸ‰áž¶áž“់"
+ },
+ "TH": {
+ "name": "ážáŸƒ"
+ },
+ "VA": {
+ "name": "ទីក្រុងវ៉ាទីកង់"
+ },
+ "TL": {
+ "name": "ទីមáŸážš"
+ },
+ "TN": {
+ "name": "ទុយនáŸážŸáŸŠáž¸"
+ },
+ "TV": {
+ "name": "ទូវ៉ាលូ"
+ },
+ "TM": {
+ "name": "ទួគមáŸáž“ីស្ážáž„់"
+ },
+ "TR": {
+ "name": "ទួរគី"
+ },
+ "TT": {
+ "name": "ទ្រីនីដាហនិង​ážáž¼áž”ាហ្គោ"
+ },
+ "TA": {
+ "name": "ទ្រីស្ážáž„់​ដា​ចូនហា"
+ },
+ "NO": {
+ "name": "áž“áŸážšážœáŸ‚ស"
+ },
+ "NI": {
+ "name": "នីការ៉ាហ្គáŸážš"
+ },
+ "NE": {
+ "name": "នីហ្សáŸážš"
+ },
+ "NG": {
+ "name": "នីហ្សáŸážšáž¸áž™áŸ‰áž¶"
+ },
+ "NZ": {
+ "name": "នូវែលហ្សáŸáž¡áž„់"
+ },
+ "NP": {
+ "name": "áž“áŸáž”៉ាល់"
+ },
+ "BD": {
+ "name": "បង់ក្លាដáŸážŸáŸ’áž "
+ },
+ "PK": {
+ "name": "ប៉ាគីស្ážáž¶áž“"
+ },
+ "PA": {
+ "name": "ប៉ាណាម៉ា"
+ },
+ "PG": {
+ "name": "ប៉ាពូអានូវែលហ្គីណáŸ"
+ },
+ "BB": {
+ "name": "បារបាដូស"
+ },
+ "PY": {
+ "name": "ប៉ារ៉ាហ្គាយ"
+ },
+ "BH": {
+ "name": "បារ៉ែន"
+ },
+ "FR": {
+ "name": "បារាំង"
+ },
+ "BS": {
+ "name": "បាហាម៉ា"
+ },
+ "BM": {
+ "name": "ប៊ឺមុយដា"
+ },
+ "BW": {
+ "name": "បុážážŸáŸ’វាណា"
+ },
+ "BG": {
+ "name": "ប៊ុលហ្គារី"
+ },
+ "BT": {
+ "name": "ប៊ូážáž¶áž“"
+ },
+ "BF": {
+ "name": "ប៊ូរគីណាហ្វាសូ"
+ },
+ "BI": {
+ "name": "ប៊ូរុនឌី"
+ },
+ "BO": {
+ "name": "បូលីវី"
+ },
+ "PL": {
+ "name": "ប៉ូលូញ"
+ },
+ "BA": {
+ "name": "បូស្ន៉ី"
+ },
+ "BJ": {
+ "name": "áž”áŸážŽáž¶áŸ†áž„"
+ },
+ "PE": {
+ "name": "ប៉áŸážšáž¼"
+ },
+ "BZ": {
+ "name": "áž”áŸáž›áž¸áž áŸ’ស"
+ },
+ "BY": {
+ "name": "áž”áŸáž¡áž¶ážšáž»ážŸáŸ’ស"
+ },
+ "BE": {
+ "name": "បែលហ្ស៉ិក"
+ },
+ "BR": {
+ "name": "ប្រáŸážŸáŸŠáž¸áž›"
+ },
+ "PW": {
+ "name": "ផៅឡូ"
+ },
+ "PR": {
+ "name": "áž–áŸážšážáž¼ážšáž¸áž€áž¼"
+ },
+ "PT": {
+ "name": "áž–áŸážšáž‘ុយហ្កាល់"
+ },
+ "BN": {
+ "name": "ព្រុយណáŸ"
+ },
+ "MO": {
+ "name": "ម៉ាកាវ"
+ },
+ "MG": {
+ "name": "ម៉ាដាហ្កាស្ការ"
+ },
+ "MQ": {
+ "name": "ម៉ាទីនីក"
+ },
+ "YT": {
+ "name": "ម៉ាយុáž"
+ },
+ "MA": {
+ "name": "ម៉ារ៉ុក"
+ },
+ "MV": {
+ "name": "ម៉ាល់ឌីវ"
+ },
+ "MT": {
+ "name": "ម៉ាល់ážáž¶"
+ },
+ "ML": {
+ "name": "ម៉ាលី"
+ },
+ "MK": {
+ "name": "ម៉ាសáŸážŠáž“"
+ },
+ "MW": {
+ "name": "ម៉ាឡាវី"
+ },
+ "MY": {
+ "name": "ម៉ាឡáŸážŸáŸŠáž¸"
+ },
+ "FM": {
+ "name": "មិក្រូនáŸážŸáŸŠáž¸"
+ },
+ "MX": {
+ "name": "ម៉ិចសិក"
+ },
+ "MM": {
+ "name": "មីយ៉ាន់ម៉ា (ភូមា)"
+ },
+ "ME": {
+ "name": "ម៉ុងážáŸážŽáŸáž áŸ’គ្រោ"
+ },
+ "MS": {
+ "name": "ម៉ុង​សáŸážšáŸ‰áž„់"
+ },
+ "MN": {
+ "name": "ម៉ុងហ្គោលី"
+ },
+ "MC": {
+ "name": "ម៉ូណាកូ"
+ },
+ "MR": {
+ "name": "ម៉ូរីážáž¶áž“ី"
+ },
+ "MU": {
+ "name": "ម៉ូរីទុស"
+ },
+ "MZ": {
+ "name": "ម៉ូហ្សាំប៊ិក"
+ },
+ "YE": {
+ "name": "áž™áŸáž˜áŸ‚áž“"
+ },
+ "RW": {
+ "name": "រវ៉ាន់ដា"
+ },
+ "RU": {
+ "name": "រុស្ស៊ី"
+ },
+ "RO": {
+ "name": "រូម៉ានី"
+ },
+ "RE": {
+ "name": "រ៉áŸáž¢áŸŠáž»áž™áŸ‰áž»áž„"
+ },
+ "LI": {
+ "name": "លិចទáŸáž“ស្ážáŸ‚áž“"
+ },
+ "LT": {
+ "name": "លីទុយអានី"
+ },
+ "LB": {
+ "name": "លីបង់"
+ },
+ "LY": {
+ "name": "លីប៊ី"
+ },
+ "LR": {
+ "name": "លីបáŸážšáž¸áž™áŸ‰áž¶"
+ },
+ "LU": {
+ "name": "លុចហ្សំបួរ"
+ },
+ "LS": {
+ "name": "លើសូážáž¼"
+ },
+ "VU": {
+ "name": "វ៉ាន់ណៅទូ"
+ },
+ "WF": {
+ "name": "វ៉ាលីស និង​ហ្វូទូណា"
+ },
+ "VN": {
+ "name": "វៀážážŽáž¶áž˜"
+ },
+ "VE": {
+ "name": "ážœáŸáž“áŸáž áŸ’ស៊ុយឡា"
+ },
+ "BL": {
+ "name": "សង់ បាážáŸáž¡áŸáž˜áŸ‰áž¸"
+ },
+ "KN": {
+ "name": "សង់ឃីហនិង​ណáŸážœáž¸ážŸ"
+ },
+ "PM": {
+ "name": "សង់ព្យែរ និង​មីគីឡុង"
+ },
+ "MF": {
+ "name": "សង់​ម៉ាទីន"
+ },
+ "LC": {
+ "name": "សង់​លូសៀ"
+ },
+ "SH": {
+ "name": "សង់​ហáŸáž¡áŸážŽáž¶"
+ },
+ "US": {
+ "name": "សហរដ្ឋអាមáŸážšáž·áž€"
+ },
+ "CZ": {
+ "name": "សាធារណរដ្ឋឆáŸáž€"
+ },
+ "DO": {
+ "name": "សាធារណរដ្ឋដូមីនីកែន"
+ },
+ "MD": {
+ "name": "សាធារណរដ្ឋម៉ុលដាវី"
+ },
+ "CF": {
+ "name": "សាធារណរដ្ឋអាហ្វ្រិកកណ្ដាល"
+ },
+ "SM": {
+ "name": "សាន​ម៉ារីណូ"
+ },
+ "WS": {
+ "name": "សាមូអា"
+ },
+ "EH": {
+ "name": "សាហារ៉ាážáž¶áž„លិច"
+ },
+ "SG": {
+ "name": "សិង្ហបុរី"
+ },
+ "SX": {
+ "name": "សីង​ម៉ាធីន"
+ },
+ "CY": {
+ "name": "ស៉ីពរáŸ"
+ },
+ "SY": {
+ "name": "ស៊ីរី"
+ },
+ "CL": {
+ "name": "ស៊ីលី"
+ },
+ "SC": {
+ "name": "សីសែល"
+ },
+ "SE": {
+ "name": "ស៊ុយអែដ"
+ },
+ "SD": {
+ "name": "ស៊ូដង់"
+ },
+ "SS": {
+ "name": "ស៊ូដង់​ážáž¶áž„​ážáŸ’បូង"
+ },
+ "SO": {
+ "name": "សូម៉ាលី"
+ },
+ "SR": {
+ "name": "សូរីណាម"
+ },
+ "SZ": {
+ "name": "សូហ្ស៉ីឡង់"
+ },
+ "RS": {
+ "name": "សើប"
+ },
+ "SN": {
+ "name": "សáŸáž“áŸáž áŸ’កាល់"
+ },
+ "SL": {
+ "name": "សáŸážšáŸ‰áž¶áž¡áŸáž¢áž¼áž“"
+ },
+ "ST": {
+ "name": "សៅ​ážáž»áŸ† និង​ព្រីនស៊ីប៉áŸ"
+ },
+ "AS": {
+ "name": "សៅម៉ៅ អាមáŸážšáž·áž€"
+ },
+ "VC": {
+ "name": "សាំង​វីនសáŸáž“ និង​ឌឹ​ហ្គ្រីណាឌីនីស"
+ },
+ "LK": {
+ "name": "ស្រីលង្កា"
+ },
+ "SK": {
+ "name": "ស្លូវ៉ាគី"
+ },
+ "SI": {
+ "name": "ស្លូវáŸáž“ី"
+ },
+ "SJ": {
+ "name": "ស្វាប៊ឺហនិង​ហ្យង់ម៉ាយáŸáž“"
+ },
+ "CH": {
+ "name": "ស្វីស"
+ },
+ "HK": {
+ "name": "ហុងកុង"
+ },
+ "HU": {
+ "name": "ហុងគ្រី"
+ },
+ "HN": {
+ "name": "ហុងឌួរ៉ាស់"
+ },
+ "NL": {
+ "name": "ហុល្លង់"
+ },
+ "BQ": {
+ "name": "ហុល្លង់ ការ៉ាប៊ីន"
+ },
+ "HT": {
+ "name": "ហៃទី"
+ },
+ "GH": {
+ "name": "ហ្គាណា"
+ },
+ "GT": {
+ "name": "ហ្គាážáŸáž˜áŸ‰áž¶áž¡áž¶"
+ },
+ "GA": {
+ "name": "ហ្គាបុង"
+ },
+ "GN": {
+ "name": "ហ្គីណáŸ"
+ },
+ "GW": {
+ "name": "ហ្គីណáŸáž”៊ីសូ"
+ },
+ "GQ": {
+ "name": "ហ្គីណáŸáž¢áŸáž€áŸ’វាទáŸážš"
+ },
+ "GI": {
+ "name": "ហ្គីប្រាលážáž¶"
+ },
+ "GY": {
+ "name": "ហ្គីយ៉ាណា"
+ },
+ "GG": {
+ "name": "ហ្គáŸáž“ស៊ី"
+ },
+ "GP": {
+ "name": "ហ្គោដឺឡុប"
+ },
+ "GU": {
+ "name": "ហ្គាំ"
+ },
+ "GM": {
+ "name": "ហ្គាំប៊ី"
+ },
+ "GD": {
+ "name": "ហ្គ្រើណាដ"
+ },
+ "GL": {
+ "name": "ហ្គ្រោអង់ឡង់"
+ },
+ "FJ": {
+ "name": "ហ្វីជី"
+ },
+ "PH": {
+ "name": "ហ្វីលីពីន"
+ },
+ "FI": {
+ "name": "ហ្វាំងឡង់"
+ },
+ "PF": {
+ "name": "ហ្វ្រáŸáž“​ប៉ូលី​ណáŸážŸáŸŠáž¸"
+ },
+ "GF": {
+ "name": "ហ្វ្វáŸáž“​ហ្គៀណា"
+ },
+ "JO": {
+ "name": "ហ៊្សកដានី"
+ },
+ "GE": {
+ "name": "ហ្សកហ្ស៉ី"
+ },
+ "JM": {
+ "name": "ហ្សាម៉ាអ៉ិគ"
+ },
+ "DJ": {
+ "name": "ហ្ស៉ីបូទី"
+ },
+ "ZW": {
+ "name": "ហ្ស៊ីមបាបវ៉áŸ"
+ },
+ "ZM": {
+ "name": "ហ្សាំប៊ី"
+ },
+ "LV": {
+ "name": "ឡាážážœáž¸áž™áŸ‰áž¶"
+ },
+ "LA": {
+ "name": "ឡាវ"
+ },
+ "AI": {
+ "name": "អង់កូឡា"
+ },
+ "AD": {
+ "name": "អង់ដូរ៉ា"
+ },
+ "AQ": {
+ "name": "អង់ážáž¶áž‘ីកា"
+ },
+ "AG": {
+ "name": "អង់ទីគáŸážš និង​បាបុយដា"
+ },
+ "AO": {
+ "name": "អង់ហ្គោឡា"
+ },
+ "ZA": {
+ "name": "អាព្រិក​ភាគ​ážáž¶áž„​ážáŸ’បូង"
+ },
+ "AM": {
+ "name": "អារមáŸáž“ី"
+ },
+ "SA": {
+ "name": "អារ៉ាប៊ីសាអ៊ូឌីáž"
+ },
+ "AW": {
+ "name": "អារូបា"
+ },
+ "AL": {
+ "name": "អាល់បានី"
+ },
+ "DZ": {
+ "name": "អាល់ហ្សáŸážšáž¸"
+ },
+ "DE": {
+ "name": "អាល្លឺម៉ង់"
+ },
+ "AF": {
+ "name": "អាហ្វហ្គានីស្ážáž¶áž“"
+ },
+ "AR": {
+ "name": "អាហ្សង់ទីន"
+ },
+ "AZ": {
+ "name": "អាហ៊្សែរបែហ្សង់"
+ },
+ "IN": {
+ "name": "ឥណ្ឌា"
+ },
+ "ID": {
+ "name": "ឥណ្ឌូណáŸážŸáŸŠáž¸"
+ },
+ "IT": {
+ "name": "អ៊ីážáž¶áž›áž¸"
+ },
+ "IR": {
+ "name": "អ៊ីរ៉ង់"
+ },
+ "IQ": {
+ "name": "អ៊ីរ៉ាក់"
+ },
+ "IL": {
+ "name": "អ៊ីស្រាអែល"
+ },
+ "IS": {
+ "name": "អ៊ីស្លង់"
+ },
+ "UA": {
+ "name": "អ៊ុយក្រែន"
+ },
+ "UY": {
+ "name": "អ៊ុយរុយហ្គាយ"
+ },
+ "AT": {
+ "name": "អូទ្រីស"
+ },
+ "OM": {
+ "name": "អូម៉ង់"
+ },
+ "AU": {
+ "name": "អូស្ážáŸ’រាលី"
+ },
+ "UG": {
+ "name": "អ៊ូហ្កង់ដា"
+ },
+ "UZ": {
+ "name": "អ៊ូហ្សបáŸáž‚ីស្ážáž„់"
+ },
+ "IE": {
+ "name": "អៀរឡង់"
+ },
+ "EC": {
+ "name": "អáŸáž€áŸ’វាឌáŸážš"
+ },
+ "ET": {
+ "name": "អáŸážáŸ’យូពី"
+ },
+ "AE": {
+ "name": "អáŸáž˜áž¸ážšáŸ‰áŸ‚ទអារ៉ាប់រួម"
+ },
+ "ER": {
+ "name": "អáŸážšáž¸áž‘្រា"
+ },
+ "EE": {
+ "name": "អáŸážŸáŸ’ážáž¼áž“ី"
+ },
+ "ES": {
+ "name": "អáŸážŸáŸ’ប៉ាញ"
+ },
+ "EG": {
+ "name": "អáŸáž áŸ’ស៉ីប"
+ },
+ "SV": {
+ "name": "អែលសាល់វ៉ាឌáŸážš"
+ },
+ "IM": {
+ "name": "អែលអុហ្វមែន"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/country/kn.json b/library/intl/resources/country/kn.json
new file mode 100644
index 000000000..e4aa7fceb
--- /dev/null
+++ b/library/intl/resources/country/kn.json
@@ -0,0 +1,761 @@
+{
+ "AO": {
+ "name": "ಅಂಗೋಲಾ"
+ },
+ "AQ": {
+ "name": "ಅಂಟಾರà³à²Ÿà²¿à²•à²¾"
+ },
+ "AD": {
+ "name": "ಅಂಡೋರಾ"
+ },
+ "AZ": {
+ "name": "ಅಜರà³à²¬à³ˆà²œà²¾à²¨à³"
+ },
+ "AF": {
+ "name": "ಅಫಘಾನಿಸà³à²¥à²¾à²¨à³"
+ },
+ "AS": {
+ "name": "ಅಮೇರಿಕನೠಸಮೋವಾ"
+ },
+ "US": {
+ "name": "ಅಮೇರಿಕಾ ಸಂಯà³à²•à³à²¤ ಸಂಸà³à²¥à²¾à²¨"
+ },
+ "AW": {
+ "name": "ಅರà³à²¬à²¾"
+ },
+ "AR": {
+ "name": "ಅರà³à²œà³†à²‚ಟಿನಾ"
+ },
+ "AM": {
+ "name": "ಅರà³à²®à³‡à²¨à²¿à²¯à²¾"
+ },
+ "DZ": {
+ "name": "ಅಲà³à²—ೇರಿಯಾ"
+ },
+ "AL": {
+ "name": "ಅಲà³à²¬à³‡à²¨à²¿à²¯à²¾"
+ },
+ "AC": {
+ "name": "ಅಸೆನà³à²¶à²¨à³ ದà³à²µà³€à²ª"
+ },
+ "AI": {
+ "name": "ಆಂಗà³à²¯à²¿à²²à³à²²à²¾"
+ },
+ "AG": {
+ "name": "ಆಂಟಿಗà³à²µà²¾ ಮತà³à²¤à³ ಬರà³à²¬à³à²¡à²¾"
+ },
+ "AX": {
+ "name": "ಆಲà³à²¯à²¾à²‚ಡೠದà³à²µà³€à²ªà²—ಳà³"
+ },
+ "AT": {
+ "name": "ಆಸà³à²Ÿà³à²°à²¿à²¯à²¾"
+ },
+ "AU": {
+ "name": "ಆಸà³à²Ÿà³à²°à³‡à²²à²¿à²¯"
+ },
+ "ID": {
+ "name": "ಇಂಡೋನೇಶಿಯಾ"
+ },
+ "IT": {
+ "name": "ಇಟಲಿ"
+ },
+ "ET": {
+ "name": "ಇಥಿಯೋಪಿಯಾ"
+ },
+ "IQ": {
+ "name": "ಇರಾಕà³"
+ },
+ "IR": {
+ "name": "ಇರಾನà³"
+ },
+ "IL": {
+ "name": "ಇಸà³à²°à³‡à²²à³"
+ },
+ "GQ": {
+ "name": "ಈಕà³à²µà³†à²Ÿà³‹à²°à²¿à²¯à²²à³ ಗಿನಿ"
+ },
+ "EC": {
+ "name": "ಈಕà³à²µà³†à²¡à²¾à²°à³"
+ },
+ "EG": {
+ "name": "ಈಜಿಪà³à²Ÿà³"
+ },
+ "UA": {
+ "name": "ಉಕà³à²°à³ˆà²¨à³"
+ },
+ "UG": {
+ "name": "ಉಗಾಂಡಾ"
+ },
+ "UZ": {
+ "name": "ಉಜà³à²¬à³‡à²•à²¿à²¸à³à²¥à²¾à²¨à³"
+ },
+ "KP": {
+ "name": "ಉತà³à²¤à²° ಕೋರಿಯಾ"
+ },
+ "MP": {
+ "name": "ಉತà³à²¤à²° ಮರಿಯಾನಾ ದà³à²µà³€à²ªà²—ಳà³"
+ },
+ "UY": {
+ "name": "ಉರà³à²—à³à²µà³‡"
+ },
+ "SV": {
+ "name": "ಎಲೠಸಾಲà³à²µà³‡à²¡à²¾à²°à³"
+ },
+ "EE": {
+ "name": "ಎಸà³à²Ÿà³‹à²¨à²¿à²¯à²¾"
+ },
+ "ER": {
+ "name": "à²à²°à²¿à²Ÿà³à²°à²¿à²¯à²¾"
+ },
+ "IE": {
+ "name": "à²à²°à³à²²à³†à²‚ಡà³"
+ },
+ "IM": {
+ "name": "à²à²²à³ ಆಫೠಮà³à²¯à²¾à²¨à³"
+ },
+ "IS": {
+ "name": "à²à²¸à³â€Œà²²à³à²¯à²¾à²‚ಡà³"
+ },
+ "OM": {
+ "name": "ಓಮನà³"
+ },
+ "KZ": {
+ "name": "ಕà²à²¾à²•à²¿à²¸à³à²¥à²¾à²¨à³"
+ },
+ "CD": {
+ "name": "ಕಾಂಗೋ - ಕಿನà³à²¶à²¾à²¸à²¾"
+ },
+ "CG": {
+ "name": "ಕಾಂಗೋ - ಬà³à²°à²¾à²œà²¾à²µà²¿à²²à³à²²à³‡"
+ },
+ "KH": {
+ "name": "ಕಾಂಬೋಡಿಯಾ"
+ },
+ "KI": {
+ "name": "ಕಿರಿಬಾತಿ"
+ },
+ "KG": {
+ "name": "ಕಿರà³à²—ಿಸà³à²¥à²¾à²¨à³"
+ },
+ "KE": {
+ "name": "ಕೀನà³à²¯à²¾"
+ },
+ "CK": {
+ "name": "ಕà³à²•à³ ದà³à²µà³€à²ªà²—ಳà³"
+ },
+ "CW": {
+ "name": "ಕà³à²°à²¾à²•à²¾à²µà³"
+ },
+ "KW": {
+ "name": "ಕà³à²µà³ˆà²¤à³"
+ },
+ "CA": {
+ "name": "ಕೆನಡಾ"
+ },
+ "BQ": {
+ "name": "ಕೆರೀಬಿಯನೠನೆದರà³â€Œà²²à³à²¯à²¾à²‚ಡà³à²¸à³"
+ },
+ "CV": {
+ "name": "ಕೇಪೠವರà³à²¡à³†"
+ },
+ "KY": {
+ "name": "ಕೇಮನೠದà³à²µà³€à²ªà²—ಳà³"
+ },
+ "CC": {
+ "name": "ಕೊಕೊಸೠ(ಕೀಲಿಂಗà³) ದà³à²µà³€à²ªà²—ಳà³"
+ },
+ "KM": {
+ "name": "ಕೊಮೊರೊಸà³"
+ },
+ "CO": {
+ "name": "ಕೊಲಂಬಿಯಾ"
+ },
+ "XK": {
+ "name": "ಕೊಸೊವೊ"
+ },
+ "CR": {
+ "name": "ಕೊಸà³à²Ÿà²¾ ರಿಕಾ"
+ },
+ "CI": {
+ "name": "ಕೋತà³â€Œ ದಿವಾರà³â€"
+ },
+ "IC": {
+ "name": "ಕà³à²¯à²¾à²¨à²°à²¿ ದà³à²µà³€à²ªà²—ಳà³"
+ },
+ "CM": {
+ "name": "ಕà³à²¯à²¾à²®à²°à³‹à²¨à³"
+ },
+ "CU": {
+ "name": "ಕà³à²¯à³‚ಬಾ"
+ },
+ "CX": {
+ "name": "ಕà³à²°à²¿à²¸à³à²®à²¸à³ ದà³à²µà³€à²ª"
+ },
+ "HR": {
+ "name": "ಕà³à²°à³Šà²¯à³‡à²¶à²¿à²¯à²¾"
+ },
+ "QA": {
+ "name": "ಖತಾರà³"
+ },
+ "GY": {
+ "name": "ಗಯಾನಾ"
+ },
+ "GN": {
+ "name": "ಗಿನಿ"
+ },
+ "GW": {
+ "name": "ಗಿನಿ-ಬಿಸà³à²¸à²¾à²µà³"
+ },
+ "GI": {
+ "name": "ಗಿಬà³à²°à²¾à²²à³à²Ÿà²°à³"
+ },
+ "GP": {
+ "name": "ಗà³à²¡à³†à²²à³‹à²ªà³"
+ },
+ "GU": {
+ "name": "ಗà³à²¯à²¾à²®à³"
+ },
+ "GG": {
+ "name": "ಗà³à²°à³à²¨à³â€Œà²¸à³†"
+ },
+ "GA": {
+ "name": "ಗೆಬೊನà³"
+ },
+ "GM": {
+ "name": "ಗà³à²¯à²¾à²‚ಬಿಯಾ"
+ },
+ "GL": {
+ "name": "ಗà³à²°à³€à²¨à³â€Œà²²à³à²¯à²¾à²‚ಡà³"
+ },
+ "GR": {
+ "name": "ಗà³à²°à³€à²¸à³"
+ },
+ "GD": {
+ "name": "ಗà³à²°à³†à²¨à³†à²¡à²¾"
+ },
+ "GT": {
+ "name": "ಗà³à²µà²¾à²Ÿà³†à²®à²¾à²²à²¾"
+ },
+ "GH": {
+ "name": "ಘಾನಾ"
+ },
+ "TD": {
+ "name": "ಚಾದà³"
+ },
+ "CL": {
+ "name": "ಚಿಲಿ"
+ },
+ "CN": {
+ "name": "ಚೀನಾ"
+ },
+ "CZ": {
+ "name": "ಚೆಕೠರಿಪಬà³à²²à²¿à²•à³"
+ },
+ "JP": {
+ "name": "ಜಪಾನà³"
+ },
+ "JM": {
+ "name": "ಜಮೈಕಾ"
+ },
+ "DE": {
+ "name": "ಜರà³à²®à²¨à²¿"
+ },
+ "GE": {
+ "name": "ಜಾರà³à²œà²¿à²¯à²¾"
+ },
+ "ZW": {
+ "name": "ಜಿಂಬಾಬà³à²µà³†"
+ },
+ "DJ": {
+ "name": "ಜಿಬೋಟಿ"
+ },
+ "JE": {
+ "name": "ಜೆರà³à²¸à²¿"
+ },
+ "JO": {
+ "name": "ಜೋರà³à²¡à²¾à²¨à³"
+ },
+ "ZM": {
+ "name": "à²à²¾à²‚ಬಿಯಾ"
+ },
+ "TR": {
+ "name": "ಟರà³à²•à²¿"
+ },
+ "TC": {
+ "name": "ಟರà³à²•à³à²¸à³ ಮತà³à²¤à³ ಕೈಕೋಸೠದà³à²µà³€à²ªà²—ಳà³"
+ },
+ "TN": {
+ "name": "ಟà³à²¨à²¿à²¶à²¿à²¯à²¾"
+ },
+ "TV": {
+ "name": "ಟà³à²µà²¾à²²à³"
+ },
+ "TO": {
+ "name": "ಟೊಂಗ"
+ },
+ "TK": {
+ "name": "ಟೊಕೆಲಾವà³"
+ },
+ "TG": {
+ "name": "ಟೋಗೋ"
+ },
+ "TT": {
+ "name": "ಟà³à²°à²¿à²¨à²¿à²¡à²¾à²¡à³ ಮತà³à²¤à³ ಟೊಬಾಗೊ"
+ },
+ "TA": {
+ "name": "ಟà³à²°à²¿à²¸à³à²¤à²¨à³ ಡಾ ಕà³à²¨à³à²¹à²¾"
+ },
+ "DK": {
+ "name": "ಡೆನà³à²®à²¾à²°à³à²•à³"
+ },
+ "DG": {
+ "name": "ಡೈಗೋ ಗಾರà³à²¸à²¿à²¯"
+ },
+ "DM": {
+ "name": "ಡೊಮಿನಿಕಾ"
+ },
+ "DO": {
+ "name": "ಡೊಮೆನಿಕನೠರಿಪಬà³à²²à²¿à²•à³"
+ },
+ "TJ": {
+ "name": "ತಜಾಕಿಸà³à²¥à²¾à²¨à³"
+ },
+ "TZ": {
+ "name": "ತಾಂಜೇನಿಯಾ"
+ },
+ "TM": {
+ "name": "ತà³à²°à³à²•à³à²®à³‡à²¨à²¿à²¸à³à²¥à²¾à²¨à³"
+ },
+ "TH": {
+ "name": "ಥೈಲà³à²¯à²¾à²‚ಡà³"
+ },
+ "TW": {
+ "name": "ಥೈವಾನà³"
+ },
+ "ZA": {
+ "name": "ದಕà³à²·à²¿à²£ ಆಫà³à²°à²¿à²•à²¾"
+ },
+ "KR": {
+ "name": "ದಕà³à²·à²¿à²£ ಕೋರಿಯಾ"
+ },
+ "GS": {
+ "name": "ದಕà³à²·à²¿à²£ ಜಾರà³à²œà²¿à²¯à²¾ ಮತà³à²¤à³ ದಕà³à²·à²¿à²£ ಸà³à²¯à²¾à²‚ಡà³â€à²µà²¿à²šà³ ದà³à²µà³€à²ªà²—ಳà³"
+ },
+ "SS": {
+ "name": "ದಕà³à²·à²¿à²£ ಸೂಡಾನà³"
+ },
+ "NA": {
+ "name": "ನಮೀಬಿಯಾ"
+ },
+ "NF": {
+ "name": "ನಾರà³à²«à³‹à²•à³ ದà³à²µà³€à²ª"
+ },
+ "NO": {
+ "name": "ನಾರà³à²µà³‡"
+ },
+ "NI": {
+ "name": "ನಿಕಾರಾಗà³à²µà²¾"
+ },
+ "NU": {
+ "name": "ನಿಯà³"
+ },
+ "NL": {
+ "name": "ನೆದರà³â€Œà²²à³à²¯à²¾à²‚ಡà³à²¸à³"
+ },
+ "NP": {
+ "name": "ನೇಪಾಳ"
+ },
+ "NE": {
+ "name": "ನೈಜರà³"
+ },
+ "NG": {
+ "name": "ನೈಜೀರಿಯಾ"
+ },
+ "NR": {
+ "name": "ನೌರà³"
+ },
+ "NC": {
+ "name": "ನà³à²¯à³‚ ಕà³à²¯à²¾à²²à²¿à²¡à³‹à²¨à²¿à²¯à²¾"
+ },
+ "NZ": {
+ "name": "ನà³à²¯à³‚ಜಿಲೆಂಡà³"
+ },
+ "PA": {
+ "name": "ಪನಾಮಾ"
+ },
+ "PG": {
+ "name": "ಪಪà³à²µà²¾ ನà³à²¯à³‚ಗಿನಿಯಾ"
+ },
+ "PY": {
+ "name": "ಪರಾಗà³à²µà³‡"
+ },
+ "PW": {
+ "name": "ಪಲಾವà³"
+ },
+ "EH": {
+ "name": "ಪಶà³à²šà²¿à²® ಸಹಾರಾ"
+ },
+ "PK": {
+ "name": "ಪಾಕಿಸà³à²¤à²¾à²¨"
+ },
+ "PN": {
+ "name": "ಪಿಟà³â€Œà²•à³ˆà²°à³à²¨à³ ದà³à²µà³€à²ªà²—ಳà³"
+ },
+ "TL": {
+ "name": "ಪೂರà³à²µ ತಿಮೋರà³"
+ },
+ "PE": {
+ "name": "ಪೆರà³"
+ },
+ "PT": {
+ "name": "ಪೋರà³à²šà³à²—ಲà³"
+ },
+ "PL": {
+ "name": "ಪೋಲà³à²¯à²¾à²‚ಡà³"
+ },
+ "PS": {
+ "name": "ಪà³à²¯à²¾à²²à³‡à²¸à³à²Ÿà³‡à²¨à²¿à²¯à²¨à³ ಪà³à²°à²¦à³‡à²¶"
+ },
+ "PR": {
+ "name": "ಪà³à²¯à³‚ರà³à²Ÿà³‹ ರಿಕೊ"
+ },
+ "FO": {
+ "name": "ಫರೋ ದà³à²µà³€à²ªà²—ಳà³"
+ },
+ "FK": {
+ "name": "ಫಾಲà³à²•à³â€Œà²²à³à²¯à²¾à²‚ಡೠದà³à²µà³€à²ªà²—ಳà³"
+ },
+ "FJ": {
+ "name": "ಫಿಜಿ"
+ },
+ "FI": {
+ "name": "ಫಿನà³â€Œà²²à³à²¯à²¾à²‚ಡà³"
+ },
+ "PH": {
+ "name": "ಫಿಲಿಫೈನà³à²¸à³"
+ },
+ "FR": {
+ "name": "ಫà³à²°à²¾à²¨à³à²¸à³"
+ },
+ "GF": {
+ "name": "ಫà³à²°à³†à²‚ಚೠಗಯಾನಾ"
+ },
+ "TF": {
+ "name": "ಫà³à²°à³†à²‚ಚೠದಕà³à²·à²¿à²£ ಪà³à²°à²¦à³‡à²¶à²—ಳà³"
+ },
+ "PF": {
+ "name": "ಫà³à²°à³†à²‚ಚೠಪಾಲಿನೇಷà³à²¯à²¾"
+ },
+ "BM": {
+ "name": "ಬರà³à²®à³à²¡à²¾"
+ },
+ "BG": {
+ "name": "ಬಲà³à²—ೇರಿಯಾ"
+ },
+ "BH": {
+ "name": "ಬಹರೈನà³"
+ },
+ "BS": {
+ "name": "ಬಹಾಮಾಸà³"
+ },
+ "BD": {
+ "name": "ಬಾಂಗà³à²²à²¾à²¦à³‡à²¶à³"
+ },
+ "BB": {
+ "name": "ಬಾರà³à²¬à²¡à³‹à²¸à³"
+ },
+ "BI": {
+ "name": "ಬà³à²°à³à²‚ಡಿ"
+ },
+ "BF": {
+ "name": "ಬà³à²°à³à²•à²¿à²¨à²¾ ಫಾಸೋ"
+ },
+ "BJ": {
+ "name": "ಬೆನಿನà³"
+ },
+ "BY": {
+ "name": "ಬೆಲಾರಸà³"
+ },
+ "BZ": {
+ "name": "ಬೆಲಿಜà³"
+ },
+ "BE": {
+ "name": "ಬೆಲà³à²œà²¿à²¯à²®à³"
+ },
+ "BO": {
+ "name": "ಬೊಲಿವಿಯಾ"
+ },
+ "BW": {
+ "name": "ಬೋಟà³à²¸à³â€Œà²µà²¾à²¨à²¾"
+ },
+ "BA": {
+ "name": "ಬೋಸà³à²¨à²¿à²¯à²¾ ಮತà³à²¤à³ ಹರà³à²œà³†à²—ೋವಿನಾ"
+ },
+ "GB": {
+ "name": "ಬà³à²°à²¿à²Ÿà²¨à³\/ಇಂಗà³à²²à³†à²‚ಡà³"
+ },
+ "VG": {
+ "name": "ಬà³à²°à²¿à²Ÿà²¿à²·à³ ವರà³à²œà²¿à²¨à³ ದà³à²µà³€à²ªà²—ಳà³"
+ },
+ "IO": {
+ "name": "ಬà³à²°à²¿à²Ÿà³€à²¶à³ ಇಂಡಿಯನೠಮಹಾಸಾಗರ ಪà³à²°à²¦à³‡à²¶"
+ },
+ "BN": {
+ "name": "ಬà³à²°à³‚ನಿ"
+ },
+ "BR": {
+ "name": "ಬà³à²°à³†à²œà²¿à²²à³"
+ },
+ "IN": {
+ "name": "ಭಾರತ"
+ },
+ "BT": {
+ "name": "ಭೂತಾನà³"
+ },
+ "MO": {
+ "name": "ಮಖಾವೠ(SAR) ಚೈನಾ"
+ },
+ "MG": {
+ "name": "ಮಡಗಾಸà³à²•à²°à³"
+ },
+ "CF": {
+ "name": "ಮಧà³à²¯ ಆಫà³à²°à²¿à²•à²¾ ಗಣರಾಜà³à²¯"
+ },
+ "MM": {
+ "name": "ಮಯನà³à²®à²¾à²°à³ (ಬರà³à²®à²¾)"
+ },
+ "YT": {
+ "name": "ಮಯೊಟà³à²Ÿà³†"
+ },
+ "MW": {
+ "name": "ಮಲಾವಿ"
+ },
+ "MY": {
+ "name": "ಮಲೇಶಿಯಾ"
+ },
+ "MS": {
+ "name": "ಮಾಂಟà³â€Œà²¸à³†à²°à³‡à²Ÿà³"
+ },
+ "MR": {
+ "name": "ಮಾರಿಟೇನಿಯಾ"
+ },
+ "MU": {
+ "name": "ಮಾರಿಶಿಯಸà³"
+ },
+ "MQ": {
+ "name": "ಮಾರà³à²Ÿà²¿à²¨à²¿à²•à³"
+ },
+ "MH": {
+ "name": "ಮಾರà³à²·à²²à³ ದà³à²µà³€à²ªà²—ಳà³"
+ },
+ "ML": {
+ "name": "ಮಾಲಿ"
+ },
+ "MT": {
+ "name": "ಮಾಲà³à²Ÿà²¾"
+ },
+ "MV": {
+ "name": "ಮಾಲà³à²¡à²¿à²µà³à²¸à³"
+ },
+ "MX": {
+ "name": "ಮೆಕà³à²¸à²¿à²•à³Š"
+ },
+ "FM": {
+ "name": "ಮೈಕà³à²°à³‹à²¨à³‡à²¶à²¿à²¯à²¾"
+ },
+ "MN": {
+ "name": "ಮೊಂಗೋಲಿಯಾ"
+ },
+ "ME": {
+ "name": "ಮೊಂಟೆನೆಗà³à²°à³‹"
+ },
+ "MZ": {
+ "name": "ಮೊಜಾಂಬಿಕà³"
+ },
+ "MC": {
+ "name": "ಮೊನಾಕೊ"
+ },
+ "MA": {
+ "name": "ಮೊರಾಕà³à²•à³Š"
+ },
+ "MD": {
+ "name": "ಮೊಲà³à²¡à³‹à²µà²¾"
+ },
+ "MK": {
+ "name": "ಮà³à²¯à²¾à²¸à²¿à²¡à³‹à²¨à²¿à²¯à²¾"
+ },
+ "VI": {
+ "name": "ಯà³.ಎಸà³. ವರà³à²œà²¿à²¨à³ ದà³à²µà³€à²ªà²—ಳà³"
+ },
+ "UM": {
+ "name": "ಯà³à²Žà²¸à³â€Œ. ಔಟà³â€Œà²²à³‡à²¯à²¿à²‚ಗೠದà³à²µà³€à²ªà²—ಳà³"
+ },
+ "YE": {
+ "name": "ಯೆಮನà³"
+ },
+ "RU": {
+ "name": "ರಷà³à²¯à²¾"
+ },
+ "RE": {
+ "name": "ರೀಯೂನಿಯನà³"
+ },
+ "RW": {
+ "name": "ರà³à²µà²¾à²‚ಡಾ"
+ },
+ "RO": {
+ "name": "ರೊಮೇನಿಯಾ"
+ },
+ "LU": {
+ "name": "ಲಕà³à²¸à²‚ಬರà³à²—à³"
+ },
+ "LV": {
+ "name": "ಲಾಟà³à²µà²¿à²¯à²¾"
+ },
+ "LA": {
+ "name": "ಲಾವೋಸà³"
+ },
+ "LI": {
+ "name": "ಲಿಚೆನà³â€Œà²¸à³à²Ÿà³ˆà²¨à³"
+ },
+ "LT": {
+ "name": "ಲಿಥà³à²µà³‡à²¨à²¿à²¯à²¾"
+ },
+ "LY": {
+ "name": "ಲಿಬಿಯಾ"
+ },
+ "LR": {
+ "name": "ಲಿಬೇರಿಯಾ"
+ },
+ "LB": {
+ "name": "ಲೆಬನಾನà³"
+ },
+ "LS": {
+ "name": "ಲೆಸೊಥೋ"
+ },
+ "VU": {
+ "name": "ವನೌಟà³"
+ },
+ "WF": {
+ "name": "ವಾಲಿಸೠಮತà³à²¤à³ ಫà³à²Ÿà³à²¨à²¾"
+ },
+ "VN": {
+ "name": "ವಿಯೇಟà³à²¨à²¾à²®à³"
+ },
+ "VE": {
+ "name": "ವೆನೆಜà³à²µà³†à²²à²¾"
+ },
+ "VA": {
+ "name": "ವà³à²¯à²¾à²Ÿà²¿à²•à²¨à³"
+ },
+ "LK": {
+ "name": "ಶà³à²°à³€à²²à²‚ಕಾ"
+ },
+ "AE": {
+ "name": "ಸಂಯà³à²•à³à²¤ ಅರಬೠಎಮಿರೇಟಸà³"
+ },
+ "WS": {
+ "name": "ಸಮೋವಾ"
+ },
+ "ST": {
+ "name": "ಸಾವೋ ಟೋಮೠಮತà³à²¤à³ ಪà³à²°à²¿à²¨à³à²¸à²¿à²ªà²¿"
+ },
+ "SG": {
+ "name": "ಸಿಂಗಾಪà³à²°à³"
+ },
+ "SX": {
+ "name": "ಸಿಂಟೠಮಾರà³à²Ÿà³†à²¨à³"
+ },
+ "SL": {
+ "name": "ಸಿಯೆರà³à²°à²¾ ಲಿಯೋನà³"
+ },
+ "SY": {
+ "name": "ಸಿರಿಯಾ"
+ },
+ "SC": {
+ "name": "ಸೀಶೆಲà³à²²à³†à²¸à³"
+ },
+ "SR": {
+ "name": "ಸà³à²°à²¿à²¨à²¾à²®"
+ },
+ "SD": {
+ "name": "ಸೂಡಾನà³"
+ },
+ "SN": {
+ "name": "ಸೆನೆಗಲà³"
+ },
+ "EA": {
+ "name": "ಸೆಯà³à²Ÿà²¾ ಹಾಗೂ ಮೆಲಿಲà³à²²à²¾"
+ },
+ "RS": {
+ "name": "ಸೆರà³à²¬à²¿à²¯à²¾"
+ },
+ "KN": {
+ "name": "ಸೇಂಟೠಕಿಟà³à²¸à³ ಮತà³à²¤à³ ನೆವಿಸà³"
+ },
+ "PM": {
+ "name": "ಸೇಂಟೠಪಿಯರೆ ಮತà³à²¤à³ ಮಿಕೆಲನà³"
+ },
+ "BL": {
+ "name": "ಸೇಂಟೠಬಾರà³à²¥à³†à²²à³†à²®à²¿"
+ },
+ "MF": {
+ "name": "ಸೇಂಟೠಮಾರà³à²Ÿà²¿à²¨à³"
+ },
+ "LC": {
+ "name": "ಸೇಂಟೠಲೂಸಿಯಾ"
+ },
+ "SH": {
+ "name": "ಸೇಂಟೠಹೆಲೆನಾ"
+ },
+ "VC": {
+ "name": "ಸೇಂಟà³. ವಿನà³à²¸à³†à²‚ಟೠಮತà³à²¤à³ ಗà³à²°à³†à²¨à³†à²¡à³ˆà²¨à³à²¸à³"
+ },
+ "CY": {
+ "name": "ಸೈಪà³à²°à²¸à³"
+ },
+ "SO": {
+ "name": "ಸೊಮಾಲಿಯಾ"
+ },
+ "SB": {
+ "name": "ಸೊಲೊಮನೠದà³à²µà³€à²ªà²—ಳà³"
+ },
+ "SA": {
+ "name": "ಸೌದಿ ಅರೇಬಿಯಾ"
+ },
+ "ES": {
+ "name": "ಸà³à²ªà³‡à²¨à³"
+ },
+ "SM": {
+ "name": "ಸà³à²¯à²¾à²¨à³ ಮೆರಿನೋ"
+ },
+ "SK": {
+ "name": "ಸà³à²²à³‹à²µà³‡à²•à²¿à²¯à²¾"
+ },
+ "SI": {
+ "name": "ಸà³à²²à³‹à²µà³‡à²¨à²¿à²¯à²¾"
+ },
+ "SZ": {
+ "name": "ಸà³à²µà²¾à²œà²¿à²²à³à²¯à²¾à²‚ಡà³"
+ },
+ "SJ": {
+ "name": "ಸà³à²µà²¾à²²à³à²¬à²¾à²°à³à²¡à³ ಮತà³à²¤à³ ಜಾನೠಮೆಯನà³"
+ },
+ "CH": {
+ "name": "ಸà³à²µà²¿à²Ÿà³à²œà²°à³à²²à³à²¯à²¾à²‚ಡà³"
+ },
+ "SE": {
+ "name": "ಸà³à²µà³€à²¡à²¨à³"
+ },
+ "HU": {
+ "name": "ಹಂಗಾರಿ"
+ },
+ "HK": {
+ "name": "ಹಾಂಕà³â€Œ ಕಾಂಗೠSAR ಚೈನಾ"
+ },
+ "HT": {
+ "name": "ಹೈಟಿ"
+ },
+ "HN": {
+ "name": "ಹೊಂಡà³à²°à²¾à²¸à³"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/country/ko.json b/library/intl/resources/country/ko.json
new file mode 100644
index 000000000..3b621be9f
--- /dev/null
+++ b/library/intl/resources/country/ko.json
@@ -0,0 +1,761 @@
+{
+ "GH": {
+ "name": "가나"
+ },
+ "GA": {
+ "name": "가봉"
+ },
+ "GY": {
+ "name": "ê°€ì´ì•„나"
+ },
+ "GM": {
+ "name": "ê°ë¹„ì•„"
+ },
+ "GG": {
+ "name": "건지"
+ },
+ "GP": {
+ "name": "과들루프"
+ },
+ "GT": {
+ "name": "과테ë§ë¼"
+ },
+ "GU": {
+ "name": "괌"
+ },
+ "GD": {
+ "name": "그레나다"
+ },
+ "GR": {
+ "name": "그리스"
+ },
+ "GL": {
+ "name": "그린란드"
+ },
+ "GW": {
+ "name": "기네비ì˜"
+ },
+ "GN": {
+ "name": "기니"
+ },
+ "CV": {
+ "name": "까뽀베르ë°"
+ },
+ "NA": {
+ "name": "나미비아"
+ },
+ "NR": {
+ "name": "나우루"
+ },
+ "NG": {
+ "name": "나ì´ì§€ë¦¬ì•„"
+ },
+ "AQ": {
+ "name": "남극 대륙"
+ },
+ "SS": {
+ "name": "남수단"
+ },
+ "ZA": {
+ "name": "남아프리카"
+ },
+ "NL": {
+ "name": "네ëœëž€ë“œ"
+ },
+ "BQ": {
+ "name": "네ëœëž€ë“œë ¹ 카리브"
+ },
+ "NP": {
+ "name": "네팔"
+ },
+ "NO": {
+ "name": "노르웨ì´"
+ },
+ "NF": {
+ "name": "ë…¸í½ì„¬"
+ },
+ "NC": {
+ "name": "뉴 칼레ë„니아"
+ },
+ "NZ": {
+ "name": "뉴질랜드"
+ },
+ "NU": {
+ "name": "니우ì—"
+ },
+ "NE": {
+ "name": "니제르"
+ },
+ "NI": {
+ "name": "니카ë¼ê³¼"
+ },
+ "TW": {
+ "name": "대만"
+ },
+ "KR": {
+ "name": "대한민국"
+ },
+ "DK": {
+ "name": "ë´ë§ˆí¬"
+ },
+ "DM": {
+ "name": "ë„미니카"
+ },
+ "DO": {
+ "name": "ë„미니카 공화국"
+ },
+ "DE": {
+ "name": "ë…ì¼"
+ },
+ "TL": {
+ "name": "ë™í‹°ëª¨ë¥´"
+ },
+ "DG": {
+ "name": "ë””ì—ê³  가르시아"
+ },
+ "LA": {
+ "name": "ë¼ì˜¤ìŠ¤"
+ },
+ "LR": {
+ "name": "ë¼ì´ë² ë¦¬ì•„"
+ },
+ "LV": {
+ "name": "ë¼íŠ¸ë¹„ì•„"
+ },
+ "RU": {
+ "name": "러시아"
+ },
+ "LB": {
+ "name": "레바논"
+ },
+ "LS": {
+ "name": "레소토"
+ },
+ "RO": {
+ "name": "루마니아"
+ },
+ "LU": {
+ "name": "룩셈부르í¬"
+ },
+ "RW": {
+ "name": "르완다"
+ },
+ "LY": {
+ "name": "리비아"
+ },
+ "RE": {
+ "name": "리유니온"
+ },
+ "LT": {
+ "name": "리투아니아"
+ },
+ "LI": {
+ "name": "리히í…슈타ì¸"
+ },
+ "MG": {
+ "name": "마다가스카르"
+ },
+ "MH": {
+ "name": "마샬 êµ°ë„"
+ },
+ "YT": {
+ "name": "마요티"
+ },
+ "MO": {
+ "name": "마카오, 중국 특별행정구"
+ },
+ "MK": {
+ "name": "마케ë„니아"
+ },
+ "MW": {
+ "name": "ë§ë¼ìœ„"
+ },
+ "MY": {
+ "name": "ë§ë ˆì´ì‹œì•„"
+ },
+ "ML": {
+ "name": "ë§ë¦¬"
+ },
+ "MQ": {
+ "name": "ë§í‹°ë‹ˆí¬"
+ },
+ "IM": {
+ "name": "맨 섬"
+ },
+ "MX": {
+ "name": "멕시코"
+ },
+ "MC": {
+ "name": "모나코"
+ },
+ "MA": {
+ "name": "모로코"
+ },
+ "MU": {
+ "name": "모리셔스"
+ },
+ "MR": {
+ "name": "모리타니"
+ },
+ "MZ": {
+ "name": "모잠비í¬"
+ },
+ "ME": {
+ "name": "몬테네그로"
+ },
+ "MS": {
+ "name": "몬트세ë¼íŠ¸"
+ },
+ "MD": {
+ "name": "몰ë„ë°”"
+ },
+ "MV": {
+ "name": "몰디브"
+ },
+ "MT": {
+ "name": "몰타"
+ },
+ "MN": {
+ "name": "몽골"
+ },
+ "US": {
+ "name": "미국"
+ },
+ "VI": {
+ "name": "미국령 버진 ì•„ì¼ëžœë“œ"
+ },
+ "UM": {
+ "name": "미국령 해외 ì œë„"
+ },
+ "MM": {
+ "name": "미얀마"
+ },
+ "FM": {
+ "name": "미í¬ë¡œë„¤ì‹œì•„"
+ },
+ "VU": {
+ "name": "바누아투"
+ },
+ "BH": {
+ "name": "바레ì¸"
+ },
+ "BB": {
+ "name": "바베ì´ë„스"
+ },
+ "VA": {
+ "name": "바티칸"
+ },
+ "BS": {
+ "name": "바하마"
+ },
+ "BD": {
+ "name": "방글ë¼ë°ì‹œ"
+ },
+ "BM": {
+ "name": "버뮤다"
+ },
+ "BJ": {
+ "name": "베냉"
+ },
+ "VE": {
+ "name": "베네수엘ë¼"
+ },
+ "VN": {
+ "name": "베트남"
+ },
+ "BE": {
+ "name": "벨기ì—"
+ },
+ "BY": {
+ "name": "벨ë¼ë£¨ìŠ¤"
+ },
+ "BZ": {
+ "name": "벨리즈"
+ },
+ "BA": {
+ "name": "보스니아 헤르체고비나"
+ },
+ "BW": {
+ "name": "보츠와나"
+ },
+ "BO": {
+ "name": "볼리비아"
+ },
+ "BI": {
+ "name": "부룬디"
+ },
+ "BF": {
+ "name": "부르키나파소"
+ },
+ "BT": {
+ "name": "부탄"
+ },
+ "MP": {
+ "name": "ë¶ë§ˆë¦¬ì•„나제ë„"
+ },
+ "BG": {
+ "name": "불가리아"
+ },
+ "BR": {
+ "name": "브ë¼ì§ˆ"
+ },
+ "BN": {
+ "name": "브루나ì´"
+ },
+ "WS": {
+ "name": "사모아"
+ },
+ "SA": {
+ "name": "사우디아ë¼ë¹„ì•„"
+ },
+ "GS": {
+ "name": "사우스조지아 사우스샌드위치 ì œë„"
+ },
+ "CY": {
+ "name": "사ì´í”„러스"
+ },
+ "SM": {
+ "name": "산마리노"
+ },
+ "ST": {
+ "name": "ìƒíˆ¬ë©” 프린시페"
+ },
+ "MF": {
+ "name": "ìƒ ë§ˆë¥´íƒ±"
+ },
+ "BL": {
+ "name": "ìƒ ë°”ë¥´í…”ë¥´ë¯¸"
+ },
+ "PM": {
+ "name": "ìƒí”¼ì—르 미í´ë¡±"
+ },
+ "EH": {
+ "name": "서사하ë¼"
+ },
+ "SN": {
+ "name": "세네갈"
+ },
+ "RS": {
+ "name": "세르비아"
+ },
+ "EA": {
+ "name": "세우타 ë° ë©œë¦¬ì•¼"
+ },
+ "KN": {
+ "name": "세ì¸íŠ¸ 키츠 네비스"
+ },
+ "LC": {
+ "name": "세ì¸íŠ¸ë£¨ì‹œì•„"
+ },
+ "VC": {
+ "name": "세ì¸íŠ¸ë¹ˆì„¼íŠ¸ê·¸ë ˆë‚˜ë”˜"
+ },
+ "SH": {
+ "name": "세ì¸íŠ¸í—¬ë ˆë‚˜"
+ },
+ "SO": {
+ "name": "소ë§ë¦¬ì•„"
+ },
+ "SB": {
+ "name": "솔로몬 ì œë„"
+ },
+ "SD": {
+ "name": "수단"
+ },
+ "SR": {
+ "name": "수리남"
+ },
+ "SC": {
+ "name": "ì‰ì´ì‰˜"
+ },
+ "LK": {
+ "name": "스리랑카"
+ },
+ "SJ": {
+ "name": "스발바르제ë„-얀마웬섬"
+ },
+ "SZ": {
+ "name": "스와질랜드"
+ },
+ "SE": {
+ "name": "스웨ë´"
+ },
+ "CH": {
+ "name": "스위스"
+ },
+ "ES": {
+ "name": "스페ì¸"
+ },
+ "SK": {
+ "name": "슬로바키아"
+ },
+ "SI": {
+ "name": "슬로베니아"
+ },
+ "SY": {
+ "name": "시리아"
+ },
+ "SL": {
+ "name": "ì‹œì—ë¼ë¦¬ì˜¨"
+ },
+ "SX": {
+ "name": "신트마르턴"
+ },
+ "SG": {
+ "name": "싱가í¬ë¥´"
+ },
+ "AE": {
+ "name": "ì•„ëžì—미리트 ì—°í•©"
+ },
+ "AW": {
+ "name": "아루바"
+ },
+ "AM": {
+ "name": "아르메니아"
+ },
+ "AR": {
+ "name": "아르헨티나"
+ },
+ "AS": {
+ "name": "아메리칸 사모아"
+ },
+ "IS": {
+ "name": "ì•„ì´ìŠ¬ëž€ë“œ"
+ },
+ "HT": {
+ "name": "ì•„ì´í‹°"
+ },
+ "IE": {
+ "name": "ì•„ì¼ëžœë“œ"
+ },
+ "AZ": {
+ "name": "아제르바ì´ìž”"
+ },
+ "AF": {
+ "name": "아프가니스탄"
+ },
+ "AI": {
+ "name": "안길ë¼"
+ },
+ "AD": {
+ "name": "안ë„ë¼"
+ },
+ "AL": {
+ "name": "알바니아"
+ },
+ "DZ": {
+ "name": "알제리"
+ },
+ "AO": {
+ "name": "앙골ë¼"
+ },
+ "AG": {
+ "name": "앤티가 바부다"
+ },
+ "AC": {
+ "name": "어센션 섬"
+ },
+ "ER": {
+ "name": "ì—리트리아"
+ },
+ "EE": {
+ "name": "ì—스토니아"
+ },
+ "EC": {
+ "name": "ì—ì½°ë„르"
+ },
+ "SV": {
+ "name": "엘살바ë„르"
+ },
+ "GB": {
+ "name": "ì˜êµ­"
+ },
+ "VG": {
+ "name": "ì˜êµ­ë ¹ 버진 ì•„ì¼ëžœë“œ"
+ },
+ "IO": {
+ "name": "ì˜êµ­ë ¹ì¸ë„ì–‘ì‹ë¯¼ì§€"
+ },
+ "YE": {
+ "name": "예멘"
+ },
+ "OM": {
+ "name": "오만"
+ },
+ "AU": {
+ "name": "오스트레ì¼ë¦¬ì•„"
+ },
+ "AT": {
+ "name": "오스트리아"
+ },
+ "HN": {
+ "name": "온ë‘ë¼ìŠ¤"
+ },
+ "AX": {
+ "name": "올란드 ì œë„"
+ },
+ "WF": {
+ "name": "왈리스-푸투나 ì œë„"
+ },
+ "JO": {
+ "name": "요르단"
+ },
+ "UG": {
+ "name": "우간다"
+ },
+ "UY": {
+ "name": "우루과ì´"
+ },
+ "UZ": {
+ "name": "우즈베키스탄"
+ },
+ "UA": {
+ "name": "ìš°í¬ë¼ì´ë‚˜"
+ },
+ "ET": {
+ "name": "ì´ë””오피아"
+ },
+ "IQ": {
+ "name": "ì´ë¼í¬"
+ },
+ "IR": {
+ "name": "ì´ëž€"
+ },
+ "IL": {
+ "name": "ì´ìŠ¤ë¼ì—˜"
+ },
+ "EG": {
+ "name": "ì´ì§‘트"
+ },
+ "IT": {
+ "name": "ì´íƒˆë¦¬ì•„"
+ },
+ "IN": {
+ "name": "ì¸ë„"
+ },
+ "ID": {
+ "name": "ì¸ë„네시아"
+ },
+ "JP": {
+ "name": "ì¼ë³¸"
+ },
+ "JM": {
+ "name": "ìžë©”ì´ì¹´"
+ },
+ "ZM": {
+ "name": "잠비아"
+ },
+ "JE": {
+ "name": "저지"
+ },
+ "GQ": {
+ "name": "ì ë„ 기니"
+ },
+ "KP": {
+ "name": "ì¡°ì„  ë¯¼ì£¼ì£¼ì˜ ì¸ë¯¼ 공화국"
+ },
+ "GE": {
+ "name": "조지아"
+ },
+ "CN": {
+ "name": "중국"
+ },
+ "CF": {
+ "name": "중앙 아프리카 공화국"
+ },
+ "DJ": {
+ "name": "지부티"
+ },
+ "GI": {
+ "name": "지브롤터"
+ },
+ "ZW": {
+ "name": "ì§ë°”브웨"
+ },
+ "TD": {
+ "name": "차드"
+ },
+ "CZ": {
+ "name": "ì²´ì½”"
+ },
+ "CL": {
+ "name": "ì¹ ë ˆ"
+ },
+ "IC": {
+ "name": "카나리아 ì œë„"
+ },
+ "CM": {
+ "name": "카메룬"
+ },
+ "KZ": {
+ "name": "ì¹´ìží스탄"
+ },
+ "QA": {
+ "name": "카타르"
+ },
+ "KH": {
+ "name": "캄보디아"
+ },
+ "CA": {
+ "name": "ìºë‚˜ë‹¤"
+ },
+ "KE": {
+ "name": "ì¼€ëƒ"
+ },
+ "KY": {
+ "name": "ì¼€ì´ë§¨ì œë„"
+ },
+ "KM": {
+ "name": "코모로스"
+ },
+ "XK": {
+ "name": "코소보"
+ },
+ "CR": {
+ "name": "코스타리카"
+ },
+ "CC": {
+ "name": "코코스제ë„"
+ },
+ "CI": {
+ "name": "코트디부아르"
+ },
+ "CO": {
+ "name": "콜롬비아"
+ },
+ "CG": {
+ "name": "콩고"
+ },
+ "CD": {
+ "name": "콩고-킨샤사"
+ },
+ "CU": {
+ "name": "ì¿ ë°”"
+ },
+ "KW": {
+ "name": "쿠웨ì´íŠ¸"
+ },
+ "CK": {
+ "name": "ì¿¡ì œë„"
+ },
+ "CW": {
+ "name": "퀴ë¼ì†Œ"
+ },
+ "HR": {
+ "name": "í¬ë¡œì•„í‹°ì•„"
+ },
+ "CX": {
+ "name": "í¬ë¦¬ìŠ¤ë§ˆìŠ¤ì„¬"
+ },
+ "KG": {
+ "name": "키르기스스탄"
+ },
+ "KI": {
+ "name": "키리바시"
+ },
+ "TJ": {
+ "name": "타지키스탄"
+ },
+ "TZ": {
+ "name": "탄ìžë‹ˆì•„"
+ },
+ "TH": {
+ "name": "태국"
+ },
+ "TC": {
+ "name": "í„°í¬ìŠ¤ì¼€ì´ì»¤ìŠ¤ì œë„"
+ },
+ "TR": {
+ "name": "터키"
+ },
+ "TG": {
+ "name": "토고"
+ },
+ "TK": {
+ "name": "토켈ë¼ìš°"
+ },
+ "TO": {
+ "name": "통가"
+ },
+ "TM": {
+ "name": "투르í¬ë©”니스탄"
+ },
+ "TV": {
+ "name": "투발루"
+ },
+ "TN": {
+ "name": "튀니지"
+ },
+ "TT": {
+ "name": "트리니다드 토바고"
+ },
+ "TA": {
+ "name": "트리스탄다쿠나"
+ },
+ "PA": {
+ "name": "파나마"
+ },
+ "PY": {
+ "name": "파ë¼ê³¼ì´"
+ },
+ "PK": {
+ "name": "파키스탄"
+ },
+ "PG": {
+ "name": "파푸아뉴기니"
+ },
+ "PW": {
+ "name": "팔ë¼ìš°"
+ },
+ "PS": {
+ "name": "íŒ”ë ˆìŠ¤íƒ€ì¸ ì§€êµ¬"
+ },
+ "FO": {
+ "name": "페로제ë„"
+ },
+ "PE": {
+ "name": "페루"
+ },
+ "PT": {
+ "name": "í¬ë¥´íˆ¬ê°ˆ"
+ },
+ "FK": {
+ "name": "í¬í´ëžœë“œ ì œë„"
+ },
+ "PL": {
+ "name": "í´ëž€ë“œ"
+ },
+ "PR": {
+ "name": "푸ì—르토리코"
+ },
+ "FR": {
+ "name": "프랑스"
+ },
+ "TF": {
+ "name": "프랑스 남부 지방"
+ },
+ "GF": {
+ "name": "프랑스령 기아나"
+ },
+ "PF": {
+ "name": "프랑스령 í´ë¦¬ë„¤ì‹œì•„"
+ },
+ "FJ": {
+ "name": "피지"
+ },
+ "FI": {
+ "name": "핀란드"
+ },
+ "PH": {
+ "name": "필리핀"
+ },
+ "PN": {
+ "name": "í•ì¼€ì–¸ 섬"
+ },
+ "HU": {
+ "name": "í—가리"
+ },
+ "HK": {
+ "name": "í™ì½©, 중국 특별행정구"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/country/ks.json b/library/intl/resources/country/ks.json
new file mode 100644
index 000000000..08e833978
--- /dev/null
+++ b/library/intl/resources/country/ks.json
@@ -0,0 +1,761 @@
+{
+ "AC": {
+ "name": "Ascension Island"
+ },
+ "IC": {
+ "name": "Canary Islands"
+ },
+ "EA": {
+ "name": "Ceuta & Melilla"
+ },
+ "CW": {
+ "name": "Curaçao"
+ },
+ "DG": {
+ "name": "Diego Garcia"
+ },
+ "FO": {
+ "name": "Faroe Islands"
+ },
+ "JO": {
+ "name": "Jordan"
+ },
+ "XK": {
+ "name": "Kosovo"
+ },
+ "FM": {
+ "name": "Micronesia"
+ },
+ "SX": {
+ "name": "Sint Maarten"
+ },
+ "SS": {
+ "name": "South Sudan"
+ },
+ "TA": {
+ "name": "Tristan da Cunha"
+ },
+ "AZ": {
+ "name": "آزَرباجان"
+ },
+ "AU": {
+ "name": "آسٹریلÙیا"
+ },
+ "AT": {
+ "name": "آسٹÙیا"
+ },
+ "IM": {
+ "name": "Ø¢ÛŒÙÙ„ آ٠میٛن"
+ },
+ "AR": {
+ "name": "أرجَنٹینا"
+ },
+ "SV": {
+ "name": "اٮ۪ل سَلواڑور"
+ },
+ "AL": {
+ "name": "اٮ۪لبانÙیا"
+ },
+ "DZ": {
+ "name": "اٮ۪لجیرÙیا"
+ },
+ "AG": {
+ "name": "اٮ۪نٹÙÚ¯Ùوا تÛÙ• باربوڑا"
+ },
+ "AD": {
+ "name": "اٮ۪نڑورا"
+ },
+ "ET": {
+ "name": "اÙتھوپÙیا"
+ },
+ "IT": {
+ "name": "اÙٹلی"
+ },
+ "ER": {
+ "name": "اÙرٕٹÙیا"
+ },
+ "AM": {
+ "name": "اَرمانÙیا"
+ },
+ "AW": {
+ "name": "اَروٗبا"
+ },
+ "UZ": {
+ "name": "اÙزبÙÚ©Ùستان"
+ },
+ "IL": {
+ "name": "اÙسرایٖل"
+ },
+ "AF": {
+ "name": "اَÙغانَستان"
+ },
+ "EC": {
+ "name": "اÙکواڑور"
+ },
+ "GQ": {
+ "name": "اÙÚ©ÙˆÙٹورÙیَل Ú¯ÙÙ†ÛŒ"
+ },
+ "AS": {
+ "name": "اَمریٖکَن سَموا"
+ },
+ "ID": {
+ "name": "اÙنڑونیشÙیا"
+ },
+ "AI": {
+ "name": "انگوئیلا"
+ },
+ "AO": {
+ "name": "انگولا"
+ },
+ "OM": {
+ "name": "اومان"
+ },
+ "IQ": {
+ "name": "ایٖراق"
+ },
+ "IR": {
+ "name": "ایٖران"
+ },
+ "IE": {
+ "name": "اَیَرلینٛڑ"
+ },
+ "EE": {
+ "name": "ایسٹونÙیا"
+ },
+ "IS": {
+ "name": "اَیÙسلینٛڑ"
+ },
+ "AX": {
+ "name": "ایلینٛڑ جٔزیٖرٕ"
+ },
+ "AQ": {
+ "name": "اینٹارٹÙکا"
+ },
+ "CI": {
+ "name": "اَیوٕری کوسٹ"
+ },
+ "BB": {
+ "name": "باربیڈاس"
+ },
+ "BH": {
+ "name": "بحریٖن"
+ },
+ "BR": {
+ "name": "برٛازÙÙ„"
+ },
+ "VG": {
+ "name": "بَرطانوی ؤرجÙÙ† جٔزیٖرٕ"
+ },
+ "IO": {
+ "name": "برطانوی بحر٠ÛÙÙ†Ù›Ø¯Û Ø¹Ù„Ø§Ù‚ÛÙ•"
+ },
+ "BQ": {
+ "name": "برطانوی Ù‚ÙطبÛ٠جَنوٗبی علاقÛÙ•"
+ },
+ "BF": {
+ "name": "بÙرکÙنا Ùیسو"
+ },
+ "BM": {
+ "name": "بٔرمیوڈا"
+ },
+ "BN": {
+ "name": "بÙرنٔے"
+ },
+ "BG": {
+ "name": "بَلجیرÙیا"
+ },
+ "BD": {
+ "name": "بَنٛگلادیش"
+ },
+ "BJ": {
+ "name": "بÙÙ†ÙÙ†"
+ },
+ "BS": {
+ "name": "بَÛامَس"
+ },
+ "BW": {
+ "name": "بوتَسوانا"
+ },
+ "BT": {
+ "name": "بوٗٹان"
+ },
+ "BI": {
+ "name": "بورَنڈÙ"
+ },
+ "BA": {
+ "name": "بوسنÙیا تÛÙ• ÛَرزÙگووÙنا"
+ },
+ "BO": {
+ "name": "بولÙÙˆÙیا"
+ },
+ "BY": {
+ "name": "بیلاروٗس"
+ },
+ "BZ": {
+ "name": "بیلÙج"
+ },
+ "BE": {
+ "name": "بیٛلجÙیَم"
+ },
+ "PG": {
+ "name": "پاپÙوا نیوٗ گیٖنی"
+ },
+ "PK": {
+ "name": "پاکÙستان"
+ },
+ "PN": {
+ "name": "Ù¾ÙÙ¹Ú©ÛŒØ±Ù•Ù†Û Ø¬Ù”Ø²ÛŒÙ–Ø±Ù•"
+ },
+ "PY": {
+ "name": "پَراگÙÛ’"
+ },
+ "PT": {
+ "name": "Ù¾ÙرتÙگال"
+ },
+ "PR": {
+ "name": "پٔرٹو رÙÚ©Ùˆ"
+ },
+ "PW": {
+ "name": "پَلاو"
+ },
+ "PA": {
+ "name": "پَناما"
+ },
+ "PL": {
+ "name": "پولینٛڑ"
+ },
+ "PE": {
+ "name": "پیٖروٗ"
+ },
+ "TJ": {
+ "name": "تاجکÙستان"
+ },
+ "TW": {
+ "name": "تایوان"
+ },
+ "TC": {
+ "name": "تÙرÙÚ© تÛÙ• کیکوس جٔزیٖرٕ"
+ },
+ "TR": {
+ "name": "تÙرکی"
+ },
+ "TM": {
+ "name": "تÙرمÙÙ†Ùستان"
+ },
+ "TZ": {
+ "name": "تَنجانÙیا"
+ },
+ "TH": {
+ "name": "تھایلینٛڑ"
+ },
+ "TK": {
+ "name": "توکیلاو"
+ },
+ "TV": {
+ "name": "توٗوالوٗ"
+ },
+ "TT": {
+ "name": "ٹرٛنÙنداد تÛÙ• ٹوبیگو"
+ },
+ "TG": {
+ "name": "ٹوگو"
+ },
+ "TO": {
+ "name": "ٹونٛگا"
+ },
+ "TN": {
+ "name": "ٹونیشÙیا"
+ },
+ "JP": {
+ "name": "جاپان"
+ },
+ "GE": {
+ "name": "جارجÙیا"
+ },
+ "ZM": {
+ "name": "جامبÙیا"
+ },
+ "GI": {
+ "name": "جÙبرالٹَر"
+ },
+ "DJ": {
+ "name": "جÙبوٗتی"
+ },
+ "JE": {
+ "name": "جٔرسی"
+ },
+ "DE": {
+ "name": "جرمٔنی"
+ },
+ "JM": {
+ "name": "جَمایکا"
+ },
+ "ZA": {
+ "name": "جَنوٗبی اَÙریٖکا"
+ },
+ "GS": {
+ "name": "جنوٗبی جارجÙیا تÛÙ• جنوٗبی سینٛڑوٕچ جٔزیٖرٕ"
+ },
+ "KR": {
+ "name": "جنوٗبی کورÙیا"
+ },
+ "TD": {
+ "name": "چاڑ"
+ },
+ "CL": {
+ "name": "Ú†ÙÙ„ÛŒ"
+ },
+ "CZ": {
+ "name": "چیک جَموٗرÙیَت"
+ },
+ "CN": {
+ "name": "چیٖن"
+ },
+ "DM": {
+ "name": "ڈومÙÙ†Ùکا"
+ },
+ "DO": {
+ "name": "ڈومÙÙ†ÙÚ©ÙŽÙ† جموٗرÙیَت"
+ },
+ "DK": {
+ "name": "ڈینٛمارٕک"
+ },
+ "RU": {
+ "name": "روٗس"
+ },
+ "RO": {
+ "name": "رومانÙیا"
+ },
+ "RW": {
+ "name": "روٗوانٛڈا"
+ },
+ "RE": {
+ "name": "رÙیوٗنÙیَن"
+ },
+ "ZW": {
+ "name": "زÙمبابے"
+ },
+ "ST": {
+ "name": "ساو توم تÛÙ• پرٛنسÙÙ¾ÛŒ"
+ },
+ "CY": {
+ "name": "سایÙرٛس"
+ },
+ "ES": {
+ "name": "سٕپین"
+ },
+ "RS": {
+ "name": "سَربÙیا"
+ },
+ "SR": {
+ "name": "سÙرÙنام"
+ },
+ "LK": {
+ "name": "سÙریٖلَنٛکا"
+ },
+ "SK": {
+ "name": "سَلوواکÙیا"
+ },
+ "SI": {
+ "name": "سَلووینÙیا"
+ },
+ "SG": {
+ "name": "ٛسÙنٛگاپوٗر"
+ },
+ "SJ": {
+ "name": "سَوالبریڑ تÛÙ• جان ماییڑ"
+ },
+ "SA": {
+ "name": "سوٗدی عربÙÛŒÛ"
+ },
+ "SD": {
+ "name": "سوٗڈان"
+ },
+ "SE": {
+ "name": "سÙÙˆÙÚˆÙŽÙ†"
+ },
+ "CH": {
+ "name": "سÙÙˆÙزَرلینٛڑ"
+ },
+ "SZ": {
+ "name": "سÙوزÙلینٛڑ"
+ },
+ "SB": {
+ "name": "سولامان جٔزیٖرٕ"
+ },
+ "SO": {
+ "name": "سومالÙیا"
+ },
+ "SL": {
+ "name": "سیٖرالیوون"
+ },
+ "SC": {
+ "name": "سیشَلÙس"
+ },
+ "WS": {
+ "name": "سیمووا"
+ },
+ "SM": {
+ "name": "سین میرÙنو"
+ },
+ "BL": {
+ "name": "سینٛٹ بارتَھیلمی"
+ },
+ "PM": {
+ "name": "سینٛٹ پیٖری تÛÙ• موکیلÙیَن"
+ },
+ "KN": {
+ "name": "سینٛٹ Ú©Ùٹَس تÛÙ• نیوÙس"
+ },
+ "LC": {
+ "name": "سینٛٹ لوٗسÙیا"
+ },
+ "MF": {
+ "name": "سینٛٹ مارٹÙÙ†"
+ },
+ "SH": {
+ "name": "سینٛٹ ÛÙ®ÛªÙ„Ùنا"
+ },
+ "VC": {
+ "name": "سینٛٹ وینسٮ۪ٹ تÛÙ• گرٛیناڑاینٕز"
+ },
+ "SN": {
+ "name": "سینیگَل"
+ },
+ "SY": {
+ "name": "شام"
+ },
+ "KP": {
+ "name": "Ø´Ùمٲلی کورÙیا"
+ },
+ "MP": {
+ "name": "Ø´Ùمٲلی مارÙیانا جٔزیٖرٕ"
+ },
+ "FJ": {
+ "name": "ÙÙجی"
+ },
+ "FR": {
+ "name": "Ùرٛانس"
+ },
+ "TF": {
+ "name": "ÙرٛانسÙسی جَنوٗبی عَلاقÛÙ•"
+ },
+ "GF": {
+ "name": "ÙرٛانسÙسی Ú¯Ùانا"
+ },
+ "PF": {
+ "name": "Ùرٛانسی پولÙنیشÙیا"
+ },
+ "FK": {
+ "name": "Ùٕلاکلینٛڑ جٔزیٖرٕ"
+ },
+ "PH": {
+ "name": "ÙÙÙ„ÙÙ¾Ùینس"
+ },
+ "PS": {
+ "name": "Ùَلَستیٖن"
+ },
+ "FI": {
+ "name": "ÙÙنلینٛڑ"
+ },
+ "QA": {
+ "name": "Ù‚ÙŽØ·Ùر"
+ },
+ "KI": {
+ "name": "Ú©Ùرٕباتی"
+ },
+ "CX": {
+ "name": "کرÙسمَس جٔزیٖرٕ"
+ },
+ "KG": {
+ "name": "Ú©ÙرگÙستان"
+ },
+ "HR": {
+ "name": "کرٛوشÙیا"
+ },
+ "KZ": {
+ "name": "کَزاکÙستان"
+ },
+ "CK": {
+ "name": "Ú©ÙÚ© جٔزیٖرٕ"
+ },
+ "KH": {
+ "name": "کَمبوڑÙیا"
+ },
+ "KM": {
+ "name": "کَمورَس"
+ },
+ "KE": {
+ "name": "Ú©Ùنٛیا"
+ },
+ "CR": {
+ "name": "کوسٹا رÙکا"
+ },
+ "CC": {
+ "name": "کوکَس کیٖلÙÙ†Ù›Ú¯ جٔزیٖرٕ"
+ },
+ "CO": {
+ "name": "کولَمبÙیا"
+ },
+ "CG": {
+ "name": "کونٛگو بٔرٛزاوÙÙ„ÛŒ"
+ },
+ "CD": {
+ "name": "کونٛگو Ú©Ùنشاسا"
+ },
+ "KW": {
+ "name": "Ú©Ùویت"
+ },
+ "CV": {
+ "name": "کیپ ؤرڑی"
+ },
+ "CM": {
+ "name": "کیٚمÙروٗن"
+ },
+ "KY": {
+ "name": "کیمَن جٔزیٖرٕ"
+ },
+ "CA": {
+ "name": "کینَڑا"
+ },
+ "CU": {
+ "name": "کیوٗبا"
+ },
+ "GH": {
+ "name": "گانا"
+ },
+ "GD": {
+ "name": "گرٛنیڑا"
+ },
+ "GR": {
+ "name": "گریٖس"
+ },
+ "GL": {
+ "name": "گریٖنلینٛڑ"
+ },
+ "GM": {
+ "name": "گَمبÙیا"
+ },
+ "GN": {
+ "name": "Ú¯ÙÙ†ÛŒ"
+ },
+ "GP": {
+ "name": "گَواڑیلوپ"
+ },
+ "GU": {
+ "name": "Ú¯Ùوام"
+ },
+ "GT": {
+ "name": "گوتیدالا"
+ },
+ "GY": {
+ "name": "Ú¯Ùیانا"
+ },
+ "GA": {
+ "name": "گیبان"
+ },
+ "GW": {
+ "name": "گیٖنی بÙساو"
+ },
+ "GG": {
+ "name": "گیوَنَرسے"
+ },
+ "LA": {
+ "name": "لاس"
+ },
+ "LR": {
+ "name": "لایبیرÙیا"
+ },
+ "LB": {
+ "name": "لٮ۪بنان"
+ },
+ "LY": {
+ "name": "Ù„Ùبیا"
+ },
+ "LT": {
+ "name": "Ù„ÙتھÙوانÙیا"
+ },
+ "LI": {
+ "name": "Ù„Ùکٹیٛسٹیٖن"
+ },
+ "LU": {
+ "name": "لَکسَمبٔرٕگ"
+ },
+ "LV": {
+ "name": "لیٛٹوÙیا"
+ },
+ "LS": {
+ "name": "لیسوتھو"
+ },
+ "MR": {
+ "name": "مارٕٹانÙیا"
+ },
+ "MQ": {
+ "name": "مارٹÙÙ†ÙÚ©"
+ },
+ "MH": {
+ "name": "مارشَل جٔزیٖرٕ"
+ },
+ "MT": {
+ "name": "مالٹا"
+ },
+ "MV": {
+ "name": "مالدیٖو"
+ },
+ "ML": {
+ "name": "مالی"
+ },
+ "MS": {
+ "name": "مانٛٹسیراٹ"
+ },
+ "MK": {
+ "name": "مٮ۪سوڑونÙیا"
+ },
+ "MX": {
+ "name": "مٮ۪کسÙÚ©Ùˆ"
+ },
+ "AE": {
+ "name": "Ù…ÙØªØ­Ø¯Û Ø¹Ø±ÙŽØ¨ امارات"
+ },
+ "CF": {
+ "name": "مرکٔزی اَÙریٖکی جموٗریَت"
+ },
+ "EG": {
+ "name": "Ù…Ùسٔر"
+ },
+ "TL": {
+ "name": "مَشرÙÙ‚ÛŒ تایمور"
+ },
+ "EH": {
+ "name": "مشرÙÙ‚ÛŒ سَÛارا"
+ },
+ "MO": {
+ "name": "مَکاوو ایس اے آر چیٖن"
+ },
+ "MW": {
+ "name": "ملاوی"
+ },
+ "MY": {
+ "name": "مَلیشÙیا"
+ },
+ "MN": {
+ "name": "مَنٛگولÙیا"
+ },
+ "ME": {
+ "name": "موٹونیٛگÙریو"
+ },
+ "MU": {
+ "name": "مورÙشَس"
+ },
+ "MA": {
+ "name": "موروکو"
+ },
+ "MZ": {
+ "name": "موزَمبÙÚ©"
+ },
+ "MD": {
+ "name": "مولڑاوÙیا"
+ },
+ "MC": {
+ "name": "مونیٚکو"
+ },
+ "MG": {
+ "name": "میڑاگاسکار"
+ },
+ "MM": {
+ "name": "مَیَنما بٔرما"
+ },
+ "YT": {
+ "name": "مَییٹ"
+ },
+ "NF": {
+ "name": "نارÙاک جٔزیٖرٕ"
+ },
+ "NR": {
+ "name": "نارووٗ"
+ },
+ "NO": {
+ "name": "ناروے"
+ },
+ "NI": {
+ "name": "ناکاراگÙوا"
+ },
+ "NA": {
+ "name": "نامÙبÙیا"
+ },
+ "NE": {
+ "name": "نایجَر"
+ },
+ "NG": {
+ "name": "نایجیرÙیا"
+ },
+ "NC": {
+ "name": "Ù†ÙÙˆ کیلÙڑونÙیا"
+ },
+ "NP": {
+ "name": "نیپال"
+ },
+ "NL": {
+ "name": "نیٖدَرلینٛڑ"
+ },
+ "NU": {
+ "name": "نیوٗ"
+ },
+ "NZ": {
+ "name": "نیوٗزÙلینٛڑ"
+ },
+ "HN": {
+ "name": "ÛانٛڈوٗرÙس"
+ },
+ "HK": {
+ "name": "Ûانٛگ کانٛگ ایس اے آر چیٖن"
+ },
+ "HT": {
+ "name": "Ûایتی"
+ },
+ "IN": {
+ "name": "ÛÙنٛدوستان"
+ },
+ "HU": {
+ "name": "Ûَنٛگری"
+ },
+ "WF": {
+ "name": "والÙس تÛÙ• Ùیوٗچوٗنا"
+ },
+ "VU": {
+ "name": "وانوٗتوٗ"
+ },
+ "VA": {
+ "name": "ویٹÙÚ©ÙŽÙ† سÙÙ¹ÛŒ"
+ },
+ "VN": {
+ "name": "ویٹÙنام"
+ },
+ "VE": {
+ "name": "وینازوٗلا"
+ },
+ "YE": {
+ "name": "یَمَن"
+ },
+ "GB": {
+ "name": "ÛŒÙنایٹÙÚ‘ Ú©ÙÙ†Ù›Ú¯ÚˆÙŽÙ…"
+ },
+ "VI": {
+ "name": "یوٗ ایس ؤرجÙÙ† جٔزیٖرٕ"
+ },
+ "UA": {
+ "name": "یوٗرÙکین"
+ },
+ "UY": {
+ "name": "یوٗروگے"
+ },
+ "UG": {
+ "name": "یوٗگانٛڑا"
+ },
+ "US": {
+ "name": "یوٗنایٹÙÚ‘ سÙٹیٹÙس"
+ },
+ "UM": {
+ "name": "یوٗنایٹÙÚ‘ سÙٹیٹÙس ماینَر آوÙٹلییÙÙ†Ù›Ú¯ جٔزیٖرٕ"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/country/ksb.json b/library/intl/resources/country/ksb.json
new file mode 100644
index 000000000..ee91470b3
--- /dev/null
+++ b/library/intl/resources/country/ksb.json
@@ -0,0 +1,761 @@
+{
+ "ZA": {
+ "name": "Aflika Kusini"
+ },
+ "AF": {
+ "name": "Afuganistani"
+ },
+ "IS": {
+ "name": "Aislandi"
+ },
+ "AR": {
+ "name": "Ajentina"
+ },
+ "AX": {
+ "name": "Ã…land Islands"
+ },
+ "AL": {
+ "name": "Albania"
+ },
+ "DZ": {
+ "name": "Aljelia"
+ },
+ "AM": {
+ "name": "Almenia"
+ },
+ "AW": {
+ "name": "Aluba"
+ },
+ "AD": {
+ "name": "Andola"
+ },
+ "AO": {
+ "name": "Angola"
+ },
+ "AI": {
+ "name": "Anguilla"
+ },
+ "AQ": {
+ "name": "Antarctica"
+ },
+ "AG": {
+ "name": "Antigua na Balbuda"
+ },
+ "AC": {
+ "name": "Ascension Island"
+ },
+ "AU": {
+ "name": "Austlalia"
+ },
+ "AT": {
+ "name": "Austlia"
+ },
+ "IE": {
+ "name": "Ayalandi"
+ },
+ "AZ": {
+ "name": "Azabajani"
+ },
+ "BB": {
+ "name": "Babadosi"
+ },
+ "BH": {
+ "name": "Bahaleni"
+ },
+ "BS": {
+ "name": "Bahama"
+ },
+ "BD": {
+ "name": "Bangladeshi"
+ },
+ "BY": {
+ "name": "Belalusi"
+ },
+ "BE": {
+ "name": "Belgium"
+ },
+ "BZ": {
+ "name": "Belize"
+ },
+ "BM": {
+ "name": "Belmuda"
+ },
+ "BJ": {
+ "name": "Benini"
+ },
+ "BR": {
+ "name": "Blazili"
+ },
+ "BN": {
+ "name": "Blunei"
+ },
+ "BO": {
+ "name": "Bolivia"
+ },
+ "BA": {
+ "name": "Bosnia na Hezegovina"
+ },
+ "BW": {
+ "name": "Botswana"
+ },
+ "BF": {
+ "name": "Bukinafaso"
+ },
+ "MG": {
+ "name": "Bukini"
+ },
+ "BG": {
+ "name": "Bulgalia"
+ },
+ "BI": {
+ "name": "Bulundi"
+ },
+ "BT": {
+ "name": "Butani"
+ },
+ "IC": {
+ "name": "Canary Islands"
+ },
+ "BQ": {
+ "name": "Caribbean Netherlands"
+ },
+ "EA": {
+ "name": "Ceuta & Melilla"
+ },
+ "TD": {
+ "name": "Chadi"
+ },
+ "CL": {
+ "name": "Chile"
+ },
+ "CN": {
+ "name": "China"
+ },
+ "CX": {
+ "name": "Christmas Island"
+ },
+ "CC": {
+ "name": "Cocos (Keeling) Islands"
+ },
+ "CW": {
+ "name": "Curaçao"
+ },
+ "DK": {
+ "name": "Denmaki"
+ },
+ "DG": {
+ "name": "Diego Garcia"
+ },
+ "DM": {
+ "name": "Dominika"
+ },
+ "EC": {
+ "name": "Ekwado"
+ },
+ "ER": {
+ "name": "Elitlea"
+ },
+ "SV": {
+ "name": "Elsavado"
+ },
+ "IO": {
+ "name": "Eneo ja Uingeeza mwe Bahali Hindi"
+ },
+ "EE": {
+ "name": "Estonia"
+ },
+ "AE": {
+ "name": "Falme za Kialabu"
+ },
+ "FO": {
+ "name": "Faroe Islands"
+ },
+ "FJ": {
+ "name": "Fiji"
+ },
+ "PH": {
+ "name": "Filipino"
+ },
+ "TF": {
+ "name": "French Southern Territories"
+ },
+ "GA": {
+ "name": "Gaboni"
+ },
+ "GM": {
+ "name": "Gambia"
+ },
+ "GH": {
+ "name": "Ghana"
+ },
+ "GN": {
+ "name": "Gine"
+ },
+ "GW": {
+ "name": "Ginebisau"
+ },
+ "GQ": {
+ "name": "Ginekweta"
+ },
+ "GD": {
+ "name": "Glenada"
+ },
+ "GL": {
+ "name": "Glinlandi"
+ },
+ "GG": {
+ "name": "Guernsey"
+ },
+ "GY": {
+ "name": "Guyana"
+ },
+ "GP": {
+ "name": "Gwadelupe"
+ },
+ "GU": {
+ "name": "Gwam"
+ },
+ "GT": {
+ "name": "Gwatemala"
+ },
+ "GF": {
+ "name": "Gwiyana ya Ufalansa"
+ },
+ "HT": {
+ "name": "Haiti"
+ },
+ "ES": {
+ "name": "Hispania"
+ },
+ "HN": {
+ "name": "Honduasi"
+ },
+ "HK": {
+ "name": "Hong Kong SAR China"
+ },
+ "HU": {
+ "name": "Hungalia"
+ },
+ "IQ": {
+ "name": "Ilaki"
+ },
+ "IN": {
+ "name": "India"
+ },
+ "ID": {
+ "name": "Indonesia"
+ },
+ "IL": {
+ "name": "Islaeli"
+ },
+ "IM": {
+ "name": "Isle of Man"
+ },
+ "IT": {
+ "name": "Italia"
+ },
+ "JM": {
+ "name": "Jamaika"
+ },
+ "CF": {
+ "name": "Jamhuli ya Afrika ya Gati"
+ },
+ "CZ": {
+ "name": "Jamhuli ya Cheki"
+ },
+ "DO": {
+ "name": "Jamhuli ya Dominika"
+ },
+ "CD": {
+ "name": "Jamhuli ya Kidemoklasia ya Kongo"
+ },
+ "JP": {
+ "name": "Japani"
+ },
+ "JE": {
+ "name": "Jersey"
+ },
+ "GI": {
+ "name": "Jiblalta"
+ },
+ "DJ": {
+ "name": "Jibuti"
+ },
+ "GE": {
+ "name": "Jojia"
+ },
+ "KH": {
+ "name": "Kambodia"
+ },
+ "CM": {
+ "name": "Kameluni"
+ },
+ "CA": {
+ "name": "Kanada"
+ },
+ "QA": {
+ "name": "Katali"
+ },
+ "KZ": {
+ "name": "Kazakistani"
+ },
+ "KE": {
+ "name": "Kenya"
+ },
+ "CV": {
+ "name": "Kepuvede"
+ },
+ "KI": {
+ "name": "Kiibati"
+ },
+ "KG": {
+ "name": "Kiigizistani"
+ },
+ "NF": {
+ "name": "Kisiwa cha Nolfok"
+ },
+ "CI": {
+ "name": "Kodivaa"
+ },
+ "HR": {
+ "name": "Kolasia"
+ },
+ "KP": {
+ "name": "Kolea Kaskazini"
+ },
+ "KR": {
+ "name": "Kolea Kusini"
+ },
+ "CO": {
+ "name": "Kolombia"
+ },
+ "KM": {
+ "name": "Komolo"
+ },
+ "CG": {
+ "name": "Kongo"
+ },
+ "XK": {
+ "name": "Kosovo"
+ },
+ "CR": {
+ "name": "Kostalika"
+ },
+ "CU": {
+ "name": "Kuba"
+ },
+ "CY": {
+ "name": "Kuplosi"
+ },
+ "KW": {
+ "name": "Kuwaiti"
+ },
+ "LA": {
+ "name": "Laosi"
+ },
+ "LU": {
+ "name": "Lasembagi"
+ },
+ "LV": {
+ "name": "Lativia"
+ },
+ "LB": {
+ "name": "Lebanoni"
+ },
+ "LS": {
+ "name": "Lesoto"
+ },
+ "LR": {
+ "name": "Libelia"
+ },
+ "LY": {
+ "name": "Libya"
+ },
+ "LI": {
+ "name": "Lishenteni"
+ },
+ "LT": {
+ "name": "Litwania"
+ },
+ "RE": {
+ "name": "Liyunioni"
+ },
+ "RO": {
+ "name": "Lomania"
+ },
+ "RW": {
+ "name": "Lwanda"
+ },
+ "MO": {
+ "name": "Macau SAR China"
+ },
+ "MW": {
+ "name": "Malawi"
+ },
+ "US": {
+ "name": "Malekani"
+ },
+ "MY": {
+ "name": "Malesia"
+ },
+ "ML": {
+ "name": "Mali"
+ },
+ "MT": {
+ "name": "Malta"
+ },
+ "MQ": {
+ "name": "Maltiniki"
+ },
+ "MK": {
+ "name": "Masedonia"
+ },
+ "MR": {
+ "name": "Maulitania"
+ },
+ "YT": {
+ "name": "Mayotte"
+ },
+ "MX": {
+ "name": "Meksiko"
+ },
+ "FM": {
+ "name": "Miklonesia"
+ },
+ "EG": {
+ "name": "Misli"
+ },
+ "MV": {
+ "name": "Modivu"
+ },
+ "MD": {
+ "name": "Moldova"
+ },
+ "MU": {
+ "name": "Molisi"
+ },
+ "MA": {
+ "name": "Moloko"
+ },
+ "MC": {
+ "name": "Monako"
+ },
+ "MN": {
+ "name": "Mongolia"
+ },
+ "ME": {
+ "name": "Montenegro"
+ },
+ "MS": {
+ "name": "Montselati"
+ },
+ "MZ": {
+ "name": "Msumbiji"
+ },
+ "MM": {
+ "name": "Myama"
+ },
+ "NE": {
+ "name": "Naija"
+ },
+ "NG": {
+ "name": "Naijelia"
+ },
+ "NA": {
+ "name": "Namibia"
+ },
+ "NR": {
+ "name": "Naulu"
+ },
+ "NP": {
+ "name": "Nepali"
+ },
+ "NI": {
+ "name": "Nikalagwa"
+ },
+ "NU": {
+ "name": "Niue"
+ },
+ "NO": {
+ "name": "Nolwei"
+ },
+ "NC": {
+ "name": "Nyukaledonia"
+ },
+ "NZ": {
+ "name": "Nyuzilandi"
+ },
+ "OM": {
+ "name": "Omani"
+ },
+ "PK": {
+ "name": "Pakistani"
+ },
+ "PY": {
+ "name": "Palagwai"
+ },
+ "PW": {
+ "name": "Palau"
+ },
+ "PA": {
+ "name": "Panama"
+ },
+ "PG": {
+ "name": "Papua"
+ },
+ "PE": {
+ "name": "Pelu"
+ },
+ "PN": {
+ "name": "Pitkailni"
+ },
+ "PL": {
+ "name": "Polandi"
+ },
+ "PF": {
+ "name": "Polinesia ya Ufalansa"
+ },
+ "PR": {
+ "name": "Pwetoliko"
+ },
+ "SM": {
+ "name": "Samalino"
+ },
+ "WS": {
+ "name": "Samoa"
+ },
+ "AS": {
+ "name": "Samoa ya Malekani"
+ },
+ "SH": {
+ "name": "Santahelena"
+ },
+ "KN": {
+ "name": "Santakitzi na Nevis"
+ },
+ "LC": {
+ "name": "Santalusia"
+ },
+ "PM": {
+ "name": "Santapieli na Mikeloni"
+ },
+ "VC": {
+ "name": "Santavisenti na Glenadini"
+ },
+ "ST": {
+ "name": "Sao Tome na Plincipe"
+ },
+ "SA": {
+ "name": "Saudi"
+ },
+ "SN": {
+ "name": "Senegali"
+ },
+ "RS": {
+ "name": "Serbia"
+ },
+ "SC": {
+ "name": "Shelisheli"
+ },
+ "SL": {
+ "name": "Siela Leoni"
+ },
+ "SY": {
+ "name": "Silia"
+ },
+ "LK": {
+ "name": "Sililanka"
+ },
+ "SG": {
+ "name": "Singapoo"
+ },
+ "SX": {
+ "name": "Sint Maarten"
+ },
+ "SK": {
+ "name": "Slovakia"
+ },
+ "SI": {
+ "name": "Slovenia"
+ },
+ "SO": {
+ "name": "Somalia"
+ },
+ "GS": {
+ "name": "South Georgia & South Sandwich Islands"
+ },
+ "SS": {
+ "name": "South Sudan"
+ },
+ "BL": {
+ "name": "St. Barthélemy"
+ },
+ "MF": {
+ "name": "St. Martin"
+ },
+ "SD": {
+ "name": "Sudani"
+ },
+ "SR": {
+ "name": "Sulinamu"
+ },
+ "SJ": {
+ "name": "Svalbard & Jan Mayen"
+ },
+ "TH": {
+ "name": "Tailandi"
+ },
+ "TW": {
+ "name": "Taiwani"
+ },
+ "TJ": {
+ "name": "Tajikistani"
+ },
+ "TZ": {
+ "name": "Tanzania"
+ },
+ "TL": {
+ "name": "Timoli ya Mashaliki"
+ },
+ "TT": {
+ "name": "Tlinidad na Tobago"
+ },
+ "TG": {
+ "name": "Togo"
+ },
+ "TK": {
+ "name": "Tokelau"
+ },
+ "TO": {
+ "name": "Tonga"
+ },
+ "TA": {
+ "name": "Tristan da Cunha"
+ },
+ "TM": {
+ "name": "Tulukimenistani"
+ },
+ "TN": {
+ "name": "Tunisia"
+ },
+ "TV": {
+ "name": "Tuvalu"
+ },
+ "UM": {
+ "name": "U.S. Outlying Islands"
+ },
+ "IR": {
+ "name": "Uajemi"
+ },
+ "FR": {
+ "name": "Ufalansa"
+ },
+ "FI": {
+ "name": "Ufini"
+ },
+ "UG": {
+ "name": "Uganda"
+ },
+ "GR": {
+ "name": "Ugiiki"
+ },
+ "ET": {
+ "name": "Uhabeshi"
+ },
+ "NL": {
+ "name": "Uholanzi"
+ },
+ "GB": {
+ "name": "Uingeeza"
+ },
+ "DE": {
+ "name": "Ujeumani"
+ },
+ "PS": {
+ "name": "Ukingo wa Maghalibi na Ukanda wa Gaza wa Palestina"
+ },
+ "UA": {
+ "name": "Uklaini"
+ },
+ "PT": {
+ "name": "Uleno"
+ },
+ "UY": {
+ "name": "Ulugwai"
+ },
+ "RU": {
+ "name": "Ulusi"
+ },
+ "SZ": {
+ "name": "Uswazi"
+ },
+ "SE": {
+ "name": "Uswidi"
+ },
+ "CH": {
+ "name": "Uswisi"
+ },
+ "TR": {
+ "name": "Utuluki"
+ },
+ "UZ": {
+ "name": "Uzibekistani"
+ },
+ "VU": {
+ "name": "Vanuatu"
+ },
+ "VA": {
+ "name": "Vatikani"
+ },
+ "VE": {
+ "name": "Venezuela"
+ },
+ "VN": {
+ "name": "Vietinamu"
+ },
+ "CK": {
+ "name": "Visiwa vya Cook"
+ },
+ "FK": {
+ "name": "Visiwa vya Falkland"
+ },
+ "KY": {
+ "name": "Visiwa vya Kayman"
+ },
+ "MP": {
+ "name": "Visiwa vya Maliana vya Kaskazini"
+ },
+ "MH": {
+ "name": "Visiwa vya Mashal"
+ },
+ "SB": {
+ "name": "Visiwa vya Solomon"
+ },
+ "TC": {
+ "name": "Visiwa vya Tulki na Kaiko"
+ },
+ "VI": {
+ "name": "Visiwa vya Vilgin vya Malekani"
+ },
+ "VG": {
+ "name": "Visiwa vya Vilgin vya Uingeeza"
+ },
+ "WF": {
+ "name": "Walis na Futuna"
+ },
+ "EH": {
+ "name": "Western Sahara"
+ },
+ "YE": {
+ "name": "Yemeni"
+ },
+ "JO": {
+ "name": "Yoldani"
+ },
+ "ZM": {
+ "name": "Zambia"
+ },
+ "ZW": {
+ "name": "Zimbabwe"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/country/ksf.json b/library/intl/resources/country/ksf.json
new file mode 100644
index 000000000..172636405
--- /dev/null
+++ b/library/intl/resources/country/ksf.json
@@ -0,0 +1,761 @@
+{
+ "AF": {
+ "name": "afganistáŋ"
+ },
+ "ZA": {
+ "name": "afrik anÇ a sud"
+ },
+ "AX": {
+ "name": "Ã…land Islands"
+ },
+ "AL": {
+ "name": "albaní"
+ },
+ "DZ": {
+ "name": "aljɛrí"
+ },
+ "US": {
+ "name": "amɛrika"
+ },
+ "AD": {
+ "name": "andÉ”rÇ"
+ },
+ "AI": {
+ "name": "angiya"
+ },
+ "AO": {
+ "name": "angóla"
+ },
+ "AQ": {
+ "name": "Antarctica"
+ },
+ "AG": {
+ "name": "antiga ri barbúda"
+ },
+ "SA": {
+ "name": "arabí saodí"
+ },
+ "AR": {
+ "name": "arjÇntín"
+ },
+ "AM": {
+ "name": "armɛní"
+ },
+ "AW": {
+ "name": "aruba"
+ },
+ "AC": {
+ "name": "Ascension Island"
+ },
+ "HT": {
+ "name": "ayiti"
+ },
+ "AZ": {
+ "name": "azabecán"
+ },
+ "BB": {
+ "name": "baabaadÇ"
+ },
+ "BS": {
+ "name": "baamás"
+ },
+ "BD": {
+ "name": "baÅ‹ladÉ›Ìc"
+ },
+ "BH": {
+ "name": "barÇÌn"
+ },
+ "AE": {
+ "name": "bÇlɔŋ bÇ kaksa bÉ› táatáaÅ‹zÇn"
+ },
+ "BM": {
+ "name": "bɛɛmúdÇ"
+ },
+ "BY": {
+ "name": "bɛlaris"
+ },
+ "BZ": {
+ "name": "bɛliz"
+ },
+ "BE": {
+ "name": "bɛljík"
+ },
+ "BJ": {
+ "name": "bÉ›nÇÌn"
+ },
+ "BW": {
+ "name": "botswana"
+ },
+ "BO": {
+ "name": "bɔɔlíví"
+ },
+ "BA": {
+ "name": "bÉ”snyÉ› ri hÉ›rsÇgÉ”vín"
+ },
+ "BR": {
+ "name": "brɛsíl"
+ },
+ "BN": {
+ "name": "brunÇÌ"
+ },
+ "BF": {
+ "name": "bukína fÇÌ asÉ”"
+ },
+ "BG": {
+ "name": "bulgarí"
+ },
+ "BI": {
+ "name": "burundí"
+ },
+ "BT": {
+ "name": "bután"
+ },
+ "TD": {
+ "name": "caád"
+ },
+ "IC": {
+ "name": "Canary Islands"
+ },
+ "BQ": {
+ "name": "Caribbean Netherlands"
+ },
+ "EA": {
+ "name": "Ceuta & Melilla"
+ },
+ "CZ": {
+ "name": "cÉ›Ìk"
+ },
+ "CX": {
+ "name": "Christmas Island"
+ },
+ "CL": {
+ "name": "cíli"
+ },
+ "CN": {
+ "name": "cín"
+ },
+ "CY": {
+ "name": "cíprɛ"
+ },
+ "CC": {
+ "name": "Cocos (Keeling) Islands"
+ },
+ "CW": {
+ "name": "Curaçao"
+ },
+ "DK": {
+ "name": "danmak"
+ },
+ "DG": {
+ "name": "Diego Garcia"
+ },
+ "DE": {
+ "name": "djɛrman"
+ },
+ "DM": {
+ "name": "dɔminik"
+ },
+ "DO": {
+ "name": "dɔminik rɛpublík"
+ },
+ "DJ": {
+ "name": "dyibutí"
+ },
+ "EG": {
+ "name": "ɛjípt"
+ },
+ "EC": {
+ "name": "É›kwatÉ›ÇÌ"
+ },
+ "ER": {
+ "name": "É›ritrÉ›Ì"
+ },
+ "EE": {
+ "name": "ɛstoní"
+ },
+ "ET": {
+ "name": "ɛtyɔpí"
+ },
+ "FO": {
+ "name": "Faroe Islands"
+ },
+ "FJ": {
+ "name": "fíji"
+ },
+ "PH": {
+ "name": "filipÇÌn"
+ },
+ "FI": {
+ "name": "fínlan"
+ },
+ "TF": {
+ "name": "French Southern Territories"
+ },
+ "GA": {
+ "name": "gabɔŋ"
+ },
+ "GM": {
+ "name": "gambí"
+ },
+ "GH": {
+ "name": "gána"
+ },
+ "GN": {
+ "name": "ginÉ›Ì"
+ },
+ "GW": {
+ "name": "ginÉ›Ì bisÉ”Ì"
+ },
+ "GQ": {
+ "name": "ginÉ›Ì É›kwatÉ”rial"
+ },
+ "GR": {
+ "name": "grÉ›Ìk"
+ },
+ "GD": {
+ "name": "grÉ›nadÇ"
+ },
+ "GL": {
+ "name": "grínlan"
+ },
+ "GG": {
+ "name": "Guernsey"
+ },
+ "GY": {
+ "name": "guyán"
+ },
+ "GF": {
+ "name": "guyán i pÉ›rÉ›sÇÌ"
+ },
+ "GP": {
+ "name": "gwadɛlúp"
+ },
+ "GU": {
+ "name": "gwám"
+ },
+ "GT": {
+ "name": "gwátÇmala"
+ },
+ "HK": {
+ "name": "Hong Kong SAR China"
+ },
+ "IE": {
+ "name": "ilán"
+ },
+ "IN": {
+ "name": "indí"
+ },
+ "ID": {
+ "name": "indonɛsí"
+ },
+ "IQ": {
+ "name": "irák"
+ },
+ "IR": {
+ "name": "iráŋ"
+ },
+ "IM": {
+ "name": "Isle of Man"
+ },
+ "IL": {
+ "name": "israÉ›Ìl"
+ },
+ "IT": {
+ "name": "italí"
+ },
+ "JM": {
+ "name": "jamaík"
+ },
+ "JP": {
+ "name": "japÉ”ÌÅ‹"
+ },
+ "JE": {
+ "name": "Jersey"
+ },
+ "GI": {
+ "name": "jibraltá"
+ },
+ "JO": {
+ "name": "jɔrdán"
+ },
+ "GE": {
+ "name": "jɔrjí"
+ },
+ "NC": {
+ "name": "kalÉ›doní anyÉ”Ìn"
+ },
+ "KH": {
+ "name": "kambodj"
+ },
+ "CM": {
+ "name": "kamɛrún"
+ },
+ "CA": {
+ "name": "kanada"
+ },
+ "CV": {
+ "name": "kapvɛr"
+ },
+ "QA": {
+ "name": "katá"
+ },
+ "KZ": {
+ "name": "kazakstáŋ"
+ },
+ "NL": {
+ "name": "kÇlɔŋ kÇ Ã¡zÇ"
+ },
+ "GB": {
+ "name": "kÇlɔŋ kÇ kÇtáatáaÅ‹zÇn"
+ },
+ "KE": {
+ "name": "kɛnya"
+ },
+ "KG": {
+ "name": "kigistáŋ"
+ },
+ "KI": {
+ "name": "kiribáti"
+ },
+ "CO": {
+ "name": "kolɔmbí"
+ },
+ "KM": {
+ "name": "komɔr"
+ },
+ "KP": {
+ "name": "korÉ›anÉ”Ìr"
+ },
+ "KR": {
+ "name": "korɛasud"
+ },
+ "XK": {
+ "name": "Kosovo"
+ },
+ "CG": {
+ "name": "kɔngó"
+ },
+ "CD": {
+ "name": "kÉ”ngó anyÉ”Ìn"
+ },
+ "CR": {
+ "name": "kɔstaríka"
+ },
+ "CI": {
+ "name": "kɔtiwuár"
+ },
+ "ES": {
+ "name": "kpanyá"
+ },
+ "HR": {
+ "name": "krwasí"
+ },
+ "CU": {
+ "name": "kuba"
+ },
+ "KW": {
+ "name": "kuwɛit"
+ },
+ "LA": {
+ "name": "laɔs"
+ },
+ "LS": {
+ "name": "lÇsóto"
+ },
+ "LV": {
+ "name": "lɛtoní"
+ },
+ "LB": {
+ "name": "libáŋ"
+ },
+ "LR": {
+ "name": "libɛrya"
+ },
+ "LY": {
+ "name": "libí"
+ },
+ "LI": {
+ "name": "lictÉ›nstÉ›Ìn"
+ },
+ "LT": {
+ "name": "litwaní"
+ },
+ "LU": {
+ "name": "luksɛmbúr"
+ },
+ "MO": {
+ "name": "Macau SAR China"
+ },
+ "MG": {
+ "name": "madagaska"
+ },
+ "MW": {
+ "name": "malawi"
+ },
+ "MV": {
+ "name": "maldivÇ"
+ },
+ "MY": {
+ "name": "malɛsí"
+ },
+ "ML": {
+ "name": "mali"
+ },
+ "MT": {
+ "name": "maltÇ"
+ },
+ "MA": {
+ "name": "marɔk"
+ },
+ "MK": {
+ "name": "másÇdwán"
+ },
+ "MQ": {
+ "name": "matiník"
+ },
+ "YT": {
+ "name": "mayÉ”Ìt"
+ },
+ "MX": {
+ "name": "mɛksík"
+ },
+ "FM": {
+ "name": "mikronÉ›Ìsi"
+ },
+ "MC": {
+ "name": "monako"
+ },
+ "ME": {
+ "name": "Montenegro"
+ },
+ "MZ": {
+ "name": "mosambík"
+ },
+ "MD": {
+ "name": "mɔldaví"
+ },
+ "MS": {
+ "name": "mɔnsɛrat"
+ },
+ "MN": {
+ "name": "mɔŋolí"
+ },
+ "MU": {
+ "name": "mwarís"
+ },
+ "MR": {
+ "name": "mwaritaní"
+ },
+ "MM": {
+ "name": "myanmár"
+ },
+ "NA": {
+ "name": "namibí"
+ },
+ "NP": {
+ "name": "nɛpal"
+ },
+ "NE": {
+ "name": "nijÉ›Ìr"
+ },
+ "NG": {
+ "name": "nijÉ›Ìrya"
+ },
+ "NI": {
+ "name": "níkarágwa"
+ },
+ "NU": {
+ "name": "niwÉ›Ì"
+ },
+ "NO": {
+ "name": "nÉ”rvÉ›jÇ"
+ },
+ "NR": {
+ "name": "nwarú"
+ },
+ "OM": {
+ "name": "oman"
+ },
+ "AT": {
+ "name": "otric"
+ },
+ "HN": {
+ "name": "ɔnduras"
+ },
+ "HU": {
+ "name": "ɔngrí"
+ },
+ "AU": {
+ "name": "ɔstralí"
+ },
+ "PK": {
+ "name": "pakistáŋ"
+ },
+ "PW": {
+ "name": "palwa"
+ },
+ "PA": {
+ "name": "panama"
+ },
+ "PG": {
+ "name": "papwazí ginÉ›Ì anyÉ”Ìn"
+ },
+ "PY": {
+ "name": "paragwÉ›Ì"
+ },
+ "FR": {
+ "name": "pÉ›rÉ›sÇÌ"
+ },
+ "PE": {
+ "name": "pɛrú"
+ },
+ "PN": {
+ "name": "pitkÉ›Ìn"
+ },
+ "PL": {
+ "name": "polÉ”Ìn"
+ },
+ "PT": {
+ "name": "portugál"
+ },
+ "PF": {
+ "name": "pÉ”linÉ›sí a pÉ›rÉ›sÇÌ"
+ },
+ "PR": {
+ "name": "pɔtoríko"
+ },
+ "RE": {
+ "name": "rɛunyɔŋ"
+ },
+ "RU": {
+ "name": "risí"
+ },
+ "RO": {
+ "name": "rɔmaní"
+ },
+ "RW": {
+ "name": "rwanda"
+ },
+ "SV": {
+ "name": "salvadɔr"
+ },
+ "WS": {
+ "name": "samɔa"
+ },
+ "AS": {
+ "name": "samɔa a amɛrika"
+ },
+ "CF": {
+ "name": "santrafrík"
+ },
+ "ST": {
+ "name": "saotomÉ›Ì ri priÅ‹sib"
+ },
+ "RS": {
+ "name": "Serbia"
+ },
+ "SC": {
+ "name": "sɛcɛl"
+ },
+ "SN": {
+ "name": "sɛnɛgal"
+ },
+ "KN": {
+ "name": "sÉ›nkrÇstÉ”Ìf ri nyÉ›ÌvÇ"
+ },
+ "SM": {
+ "name": "sÉ›nmarÇn"
+ },
+ "PM": {
+ "name": "sɛnpyɛr ri mikɛlɔŋ"
+ },
+ "SH": {
+ "name": "sÉ›ntÉ›Ìlen"
+ },
+ "LC": {
+ "name": "sɛntlísí"
+ },
+ "VC": {
+ "name": "sÉ›nvÇnsÇÅ‹ ri grÉ›nadín"
+ },
+ "SX": {
+ "name": "Sint Maarten"
+ },
+ "SG": {
+ "name": "siŋapó"
+ },
+ "SY": {
+ "name": "sirí"
+ },
+ "SK": {
+ "name": "slovakí"
+ },
+ "SI": {
+ "name": "slovɛní"
+ },
+ "SO": {
+ "name": "somalí"
+ },
+ "GS": {
+ "name": "South Georgia & South Sandwich Islands"
+ },
+ "SS": {
+ "name": "South Sudan"
+ },
+ "LK": {
+ "name": "srílaŋka"
+ },
+ "BL": {
+ "name": "St. Barthélemy"
+ },
+ "MF": {
+ "name": "St. Martin"
+ },
+ "SD": {
+ "name": "sudan"
+ },
+ "SR": {
+ "name": "surinam"
+ },
+ "SJ": {
+ "name": "Svalbard & Jan Mayen"
+ },
+ "SZ": {
+ "name": "swazilan"
+ },
+ "SE": {
+ "name": "swÉ›dÇ"
+ },
+ "CH": {
+ "name": "swís"
+ },
+ "SL": {
+ "name": "syɛraleon"
+ },
+ "TJ": {
+ "name": "tadjikistaŋ"
+ },
+ "TZ": {
+ "name": "tanzaní"
+ },
+ "TH": {
+ "name": "tɛlan"
+ },
+ "TT": {
+ "name": "tɛrinitɛ ri tobago"
+ },
+ "TW": {
+ "name": "tɛwán"
+ },
+ "TL": {
+ "name": "timor anÇ Ã¡ É›st"
+ },
+ "TR": {
+ "name": "tirkí"
+ },
+ "TM": {
+ "name": "tirkmɛnistaŋ"
+ },
+ "TG": {
+ "name": "togo"
+ },
+ "TK": {
+ "name": "tokÇlao"
+ },
+ "TO": {
+ "name": "tɔŋa"
+ },
+ "TA": {
+ "name": "Tristan da Cunha"
+ },
+ "TN": {
+ "name": "tunɛsí"
+ },
+ "TV": {
+ "name": "tuwalu"
+ },
+ "UM": {
+ "name": "U.S. Outlying Islands"
+ },
+ "UG": {
+ "name": "uganda"
+ },
+ "UA": {
+ "name": "ukrain"
+ },
+ "UY": {
+ "name": "urugwÉ›Ì"
+ },
+ "UZ": {
+ "name": "usbɛkistaŋ"
+ },
+ "WF": {
+ "name": "walis ri futuna"
+ },
+ "VU": {
+ "name": "wanwatu"
+ },
+ "VA": {
+ "name": "watikáŋ"
+ },
+ "EH": {
+ "name": "Western Sahara"
+ },
+ "VE": {
+ "name": "wÉ›nÇzwÉ›la"
+ },
+ "VN": {
+ "name": "wyɛtnám"
+ },
+ "YE": {
+ "name": "yɛmɛn"
+ },
+ "ZM": {
+ "name": "zambí"
+ },
+ "VI": {
+ "name": "zÇ bÉ› gÉ”n inÉ› á amÉ›rika"
+ },
+ "VG": {
+ "name": "zÇ bÉ› gÉ”n inÉ› a ingÉ›rís"
+ },
+ "KY": {
+ "name": "zÇ i gan"
+ },
+ "IS": {
+ "name": "zÇ i glás"
+ },
+ "MH": {
+ "name": "zÇ i marcál"
+ },
+ "IO": {
+ "name": "zÇ ingÉ›rís ncÉ”Ìm wa indi"
+ },
+ "FK": {
+ "name": "zÇ maalwín"
+ },
+ "MP": {
+ "name": "zÇ maryánnÉ”Ìr"
+ },
+ "PS": {
+ "name": "zÇ palÉ›stínÇ"
+ },
+ "SB": {
+ "name": "zÇ salomÉ”Ìn"
+ },
+ "TC": {
+ "name": "zÇ tirk ri kakÉ”s"
+ },
+ "CK": {
+ "name": "zɛ i kúk"
+ },
+ "NF": {
+ "name": "zÉ› nÉ”ÌfÉ”lk"
+ },
+ "NZ": {
+ "name": "zÉ›lan anyÉ”Ìn"
+ },
+ "ZW": {
+ "name": "zimbabwÉ›Ì"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/country/ksh.json b/library/intl/resources/country/ksh.json
new file mode 100644
index 000000000..3d9c7bbac
--- /dev/null
+++ b/library/intl/resources/country/ksh.json
@@ -0,0 +1,761 @@
+{
+ "AF": {
+ "name": "Afjaanistahn"
+ },
+ "AR": {
+ "name": "Ajjentiinije"
+ },
+ "EG": {
+ "name": "Äjüpte"
+ },
+ "EC": {
+ "name": "Äkwador"
+ },
+ "SV": {
+ "name": "Äl Slavadoor"
+ },
+ "AL": {
+ "name": "Albaanije"
+ },
+ "CI": {
+ "name": "Älfebeijn-Köß"
+ },
+ "DZ": {
+ "name": "Alljeerije"
+ },
+ "AS": {
+ "name": "Ammerikaanesch Sammoha"
+ },
+ "AD": {
+ "name": "Andorra"
+ },
+ "AI": {
+ "name": "Anggwilla"
+ },
+ "AO": {
+ "name": "Angjoola"
+ },
+ "AG": {
+ "name": "Antigwa un Barbuda"
+ },
+ "GQ": {
+ "name": "Äquatorial Jineeja"
+ },
+ "ER": {
+ "name": "Äritreja"
+ },
+ "AM": {
+ "name": "Arrmeenije"
+ },
+ "AW": {
+ "name": "Aruba"
+ },
+ "AC": {
+ "name": "Aßension"
+ },
+ "AZ": {
+ "name": "Asserbaidschahn"
+ },
+ "EE": {
+ "name": "Äßland"
+ },
+ "ET": {
+ "name": "Ättijoopije"
+ },
+ "AU": {
+ "name": "Austraalije"
+ },
+ "BH": {
+ "name": "Bachrain"
+ },
+ "BD": {
+ "name": "Bangladesch"
+ },
+ "BZ": {
+ "name": "Belize"
+ },
+ "BE": {
+ "name": "Bellje"
+ },
+ "MM": {
+ "name": "Birma"
+ },
+ "BO": {
+ "name": "Bolliivije"
+ },
+ "BA": {
+ "name": "Boßnije un Herzegovina"
+ },
+ "BW": {
+ "name": "Bozwaana"
+ },
+ "BR": {
+ "name": "Brasilije"
+ },
+ "IO": {
+ "name": "Brettesche Besezunge em indesche Oozejahn"
+ },
+ "BN": {
+ "name": "Brunei"
+ },
+ "BF": {
+ "name": "Bukkinna-Faase"
+ },
+ "BG": {
+ "name": "Bulljaarije"
+ },
+ "BI": {
+ "name": "Burundi"
+ },
+ "BT": {
+ "name": "Buttaan"
+ },
+ "CW": {
+ "name": "Curaçao"
+ },
+ "BJ": {
+ "name": "dä Benin"
+ },
+ "CG": {
+ "name": "dä Konggo (Brassavill)"
+ },
+ "CD": {
+ "name": "dä Konggo (Kinschasa)"
+ },
+ "DK": {
+ "name": "Dänemark"
+ },
+ "VI": {
+ "name": "de ammärrikahnesche Juffer-Enselle"
+ },
+ "BS": {
+ "name": "de Bahamas"
+ },
+ "BM": {
+ "name": "de Bermudas"
+ },
+ "VG": {
+ "name": "de brettesche Juffer-Enselle"
+ },
+ "DG": {
+ "name": "de Diego-Garcia-Ensel"
+ },
+ "DO": {
+ "name": "de Dommenekaanesche Reppublik"
+ },
+ "BB": {
+ "name": "de Ensel Barbados"
+ },
+ "IM": {
+ "name": "de Ensel Män"
+ },
+ "SH": {
+ "name": "de Ensel Zint Hellena"
+ },
+ "LC": {
+ "name": "de Ensel Zint-Lutscha"
+ },
+ "SJ": {
+ "name": "de Enselle Svalbard un Jan Mayen"
+ },
+ "TC": {
+ "name": "de Enselle Turks un Kaikos"
+ },
+ "FK": {
+ "name": "de Falkland-Enselle"
+ },
+ "FO": {
+ "name": "de Färrör-Enselle"
+ },
+ "FJ": {
+ "name": "de Fidschi-Endelle"
+ },
+ "KY": {
+ "name": "de Kaiman-Enselle"
+ },
+ "IC": {
+ "name": "de Kannaresche Enselle"
+ },
+ "CV": {
+ "name": "de kapvärdesche Enselle"
+ },
+ "BQ": {
+ "name": "de karribbesche Nederläng"
+ },
+ "CC": {
+ "name": "de Kokkos-Enselle"
+ },
+ "KM": {
+ "name": "de Kommoore"
+ },
+ "CK": {
+ "name": "de Kuuk-Enselle"
+ },
+ "MH": {
+ "name": "de Machschall-Enselle"
+ },
+ "NL": {
+ "name": "de Nederläng"
+ },
+ "MP": {
+ "name": "de nöödlijje Marijanne-Enselle"
+ },
+ "NF": {
+ "name": "de Noofok-Ensel"
+ },
+ "AX": {
+ "name": "de Ohland-Enselle"
+ },
+ "PN": {
+ "name": "de Pitkärn-Ensel"
+ },
+ "ZA": {
+ "name": "de Republik Södaffrika"
+ },
+ "CH": {
+ "name": "de Schweiz"
+ },
+ "SC": {
+ "name": "de Seischälle"
+ },
+ "SB": {
+ "name": "de Solomone-Enselle"
+ },
+ "TR": {
+ "name": "de Törkei"
+ },
+ "CZ": {
+ "name": "de Tschäschei"
+ },
+ "UA": {
+ "name": "de Ukra’iine"
+ },
+ "UM": {
+ "name": "de Vereineschte Schtaate vun Amärrika ier ußerhallef jelääje Enselsche"
+ },
+ "US": {
+ "name": "de vereineschte Schtaate vun Ammärrika"
+ },
+ "CX": {
+ "name": "de Weihnaachs-Ensel"
+ },
+ "CF": {
+ "name": "de Zäntraalaffrikaanesche Republik"
+ },
+ "BL": {
+ "name": "de Zint Battälmi-Enselle"
+ },
+ "MF": {
+ "name": "de Zint-Määtes-Ensel"
+ },
+ "SN": {
+ "name": "der Sennejall"
+ },
+ "AQ": {
+ "name": "der Södpol"
+ },
+ "TD": {
+ "name": "der Tschadd"
+ },
+ "VA": {
+ "name": "der Vattikahn"
+ },
+ "DM": {
+ "name": "Dominnika"
+ },
+ "DE": {
+ "name": "Doütschland"
+ },
+ "DJ": {
+ "name": "Dschibutti"
+ },
+ "ME": {
+ "name": "et Monteneejro"
+ },
+ "PH": {
+ "name": "Fillipiine"
+ },
+ "FI": {
+ "name": "Finnland"
+ },
+ "FR": {
+ "name": "Frankrisch"
+ },
+ "GF": {
+ "name": "Franzüüsesch Jujaana"
+ },
+ "PF": {
+ "name": "Franzüüsesch Pollineesije"
+ },
+ "TF": {
+ "name": "Franzüüsesche Södsee-Enselle"
+ },
+ "HT": {
+ "name": "Ha’itti"
+ },
+ "HN": {
+ "name": "Honduras"
+ },
+ "HK": {
+ "name": "Hongkong"
+ },
+ "IN": {
+ "name": "Indije"
+ },
+ "ID": {
+ "name": "Indoneesije"
+ },
+ "IQ": {
+ "name": "Irak"
+ },
+ "IE": {
+ "name": "Irrland"
+ },
+ "IS": {
+ "name": "Ißland"
+ },
+ "IL": {
+ "name": "Ißraäl"
+ },
+ "IT": {
+ "name": "Itaalije"
+ },
+ "GH": {
+ "name": "Jaana"
+ },
+ "GA": {
+ "name": "Jabuhn"
+ },
+ "GM": {
+ "name": "Jambija"
+ },
+ "JM": {
+ "name": "Jammaika"
+ },
+ "YE": {
+ "name": "Jämme"
+ },
+ "JP": {
+ "name": "Japan"
+ },
+ "GE": {
+ "name": "Jeorrjije"
+ },
+ "GI": {
+ "name": "Jibralltaa"
+ },
+ "GN": {
+ "name": "Jinneha"
+ },
+ "GW": {
+ "name": "Jinneha_Bißau"
+ },
+ "GG": {
+ "name": "Jöönsei"
+ },
+ "JE": {
+ "name": "Jööseh"
+ },
+ "JO": {
+ "name": "Jordaanije"
+ },
+ "GD": {
+ "name": "Jrenaada"
+ },
+ "GR": {
+ "name": "Jriescheland"
+ },
+ "GL": {
+ "name": "Jröhnland"
+ },
+ "GB": {
+ "name": "Jruußbrettannije"
+ },
+ "GP": {
+ "name": "Juadelupp"
+ },
+ "GU": {
+ "name": "Juham"
+ },
+ "GY": {
+ "name": "Jujaana"
+ },
+ "GT": {
+ "name": "Juwatemaala"
+ },
+ "KH": {
+ "name": "Kambodscha"
+ },
+ "CM": {
+ "name": "Kammeruhn"
+ },
+ "CA": {
+ "name": "Kanada"
+ },
+ "KZ": {
+ "name": "Kassakstahn"
+ },
+ "QA": {
+ "name": "Kataa"
+ },
+ "KE": {
+ "name": "Keenija"
+ },
+ "KI": {
+ "name": "Kiribati"
+ },
+ "KG": {
+ "name": "Kirrjiisije"
+ },
+ "CO": {
+ "name": "Kolumbije"
+ },
+ "XK": {
+ "name": "Kosovo"
+ },
+ "CR": {
+ "name": "Kostarika"
+ },
+ "HR": {
+ "name": "Krowazije"
+ },
+ "CU": {
+ "name": "Kuba"
+ },
+ "KW": {
+ "name": "Kuweit"
+ },
+ "LA": {
+ "name": "La’os"
+ },
+ "LV": {
+ "name": "Lätland"
+ },
+ "LB": {
+ "name": "Lebbannon"
+ },
+ "LS": {
+ "name": "Lesooto"
+ },
+ "LY": {
+ "name": "Libbije"
+ },
+ "LR": {
+ "name": "Libeerija"
+ },
+ "LI": {
+ "name": "Lischteschtein"
+ },
+ "LT": {
+ "name": "Littaue"
+ },
+ "LU": {
+ "name": "Luxembursch"
+ },
+ "ML": {
+ "name": "Maali"
+ },
+ "MQ": {
+ "name": "Machtinik"
+ },
+ "MG": {
+ "name": "Maddajaska"
+ },
+ "YT": {
+ "name": "Majott"
+ },
+ "MO": {
+ "name": "Makau"
+ },
+ "MY": {
+ "name": "Malaisije"
+ },
+ "MW": {
+ "name": "Malawi"
+ },
+ "MV": {
+ "name": "Mallediive"
+ },
+ "MT": {
+ "name": "Malta"
+ },
+ "MA": {
+ "name": "Marokko"
+ },
+ "MU": {
+ "name": "Maurizijus"
+ },
+ "MR": {
+ "name": "Mautitaanije"
+ },
+ "MX": {
+ "name": "Mäxiko"
+ },
+ "MK": {
+ "name": "Mazedoonije"
+ },
+ "FM": {
+ "name": "Mikroneesije"
+ },
+ "MD": {
+ "name": "Moldaavije"
+ },
+ "MC": {
+ "name": "Monakko"
+ },
+ "MN": {
+ "name": "Mongjolei"
+ },
+ "MS": {
+ "name": "Mongßerrat"
+ },
+ "MZ": {
+ "name": "Mosambik"
+ },
+ "NA": {
+ "name": "Namiibije"
+ },
+ "NR": {
+ "name": "Nauru"
+ },
+ "NP": {
+ "name": "Nepall"
+ },
+ "NC": {
+ "name": "Neuschottland"
+ },
+ "NZ": {
+ "name": "Neuseeland"
+ },
+ "NE": {
+ "name": "Nijer"
+ },
+ "NG": {
+ "name": "Nikaraagua"
+ },
+ "NI": {
+ "name": "Nikaraaguwa"
+ },
+ "NU": {
+ "name": "Niue"
+ },
+ "KP": {
+ "name": "Nood-Koreja"
+ },
+ "SD": {
+ "name": "Noodsudahn"
+ },
+ "NO": {
+ "name": "Norrweeje"
+ },
+ "OM": {
+ "name": "Oman"
+ },
+ "AT": {
+ "name": "Öösterisch"
+ },
+ "TL": {
+ "name": "Oß-Timor"
+ },
+ "PK": {
+ "name": "Pakistahn"
+ },
+ "PS": {
+ "name": "Palästina"
+ },
+ "PW": {
+ "name": "Pallau"
+ },
+ "PA": {
+ "name": "Pannama"
+ },
+ "PG": {
+ "name": "Papuwa Neujineeja"
+ },
+ "PY": {
+ "name": "Parraguwai"
+ },
+ "PE": {
+ "name": "Perruh"
+ },
+ "IR": {
+ "name": "Persije"
+ },
+ "PT": {
+ "name": "Pochtojall"
+ },
+ "PR": {
+ "name": "Pochtoriko"
+ },
+ "PL": {
+ "name": "Pole"
+ },
+ "RE": {
+ "name": "Rehunjohn"
+ },
+ "RO": {
+ "name": "Romäänije"
+ },
+ "RW": {
+ "name": "Ruanda"
+ },
+ "RU": {
+ "name": "Rußland"
+ },
+ "ZM": {
+ "name": "Sambija"
+ },
+ "WS": {
+ "name": "Sammoha"
+ },
+ "SM": {
+ "name": "San-Marino"
+ },
+ "RS": {
+ "name": "Särbije"
+ },
+ "SA": {
+ "name": "Saudi Arraabije"
+ },
+ "CL": {
+ "name": "Schiile"
+ },
+ "CN": {
+ "name": "Schiina"
+ },
+ "ES": {
+ "name": "Schpaanije"
+ },
+ "SE": {
+ "name": "Schweede"
+ },
+ "ZW": {
+ "name": "Simbabwe"
+ },
+ "SG": {
+ "name": "Singjapuur"
+ },
+ "SL": {
+ "name": "Sjärra Lejone"
+ },
+ "GS": {
+ "name": "Söd-Jeorjie un de södlijje Botteramms-Enselle"
+ },
+ "KR": {
+ "name": "Söd-Koreja"
+ },
+ "SS": {
+ "name": "Södsudahn"
+ },
+ "SO": {
+ "name": "Somaalije"
+ },
+ "LK": {
+ "name": "Sri Lanka"
+ },
+ "SK": {
+ "name": "ẞlovakei"
+ },
+ "SI": {
+ "name": "ẞloveenije"
+ },
+ "SZ": {
+ "name": "ẞwaasiland"
+ },
+ "SY": {
+ "name": "Sürije"
+ },
+ "SR": {
+ "name": "Sürinamm"
+ },
+ "TJ": {
+ "name": "Tadschikistahn"
+ },
+ "TH": {
+ "name": "Tailand"
+ },
+ "TW": {
+ "name": "Taiwan"
+ },
+ "TZ": {
+ "name": "Tansanija"
+ },
+ "TK": {
+ "name": "Tokelau"
+ },
+ "TO": {
+ "name": "Tongga"
+ },
+ "TG": {
+ "name": "Toojo"
+ },
+ "TT": {
+ "name": "Trinidad un Tobääjo"
+ },
+ "TA": {
+ "name": "Tristan da Cunja"
+ },
+ "TN": {
+ "name": "Tuneesije"
+ },
+ "TM": {
+ "name": "Turkmenistahn"
+ },
+ "TV": {
+ "name": "Tuvalu"
+ },
+ "UG": {
+ "name": "Ujanda"
+ },
+ "HU": {
+ "name": "Unjann"
+ },
+ "UY": {
+ "name": "Urrujwai"
+ },
+ "UZ": {
+ "name": "Ußbeekistahn"
+ },
+ "VU": {
+ "name": "Vanuatu"
+ },
+ "VE": {
+ "name": "Venezuela"
+ },
+ "AE": {
+ "name": "Vereinschte Arrabesche Emmirate"
+ },
+ "VN": {
+ "name": "Vijätnamm"
+ },
+ "WF": {
+ "name": "Wallis un Futuna"
+ },
+ "EH": {
+ "name": "Wäß-Sahara"
+ },
+ "BY": {
+ "name": "Wießrußland"
+ },
+ "EA": {
+ "name": "Ze’uta un Meliija"
+ },
+ "KN": {
+ "name": "Zint Kitts un Nevis"
+ },
+ "SX": {
+ "name": "Zint Maarten"
+ },
+ "PM": {
+ "name": "Zint Pjäär un Mikelong"
+ },
+ "ST": {
+ "name": "Zint Tommeh un Printschipe"
+ },
+ "VC": {
+ "name": "Zint Vinzänz un de Jrenadines-Enselle"
+ },
+ "CY": {
+ "name": "Züppere"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/country/ky.json b/library/intl/resources/country/ky.json
new file mode 100644
index 000000000..4944f4888
--- /dev/null
+++ b/library/intl/resources/country/ky.json
@@ -0,0 +1,761 @@
+{
+ "AU": {
+ "name": "ÐвÑтралиÑ"
+ },
+ "AT": {
+ "name": "ÐвÑтриÑ"
+ },
+ "AZ": {
+ "name": "Ðзербайжан"
+ },
+ "UM": {
+ "name": "ÐКШнын Ñырткы аралдары"
+ },
+ "AX": {
+ "name": "Ðланд аралдары"
+ },
+ "AL": {
+ "name": "ÐлбаниÑ"
+ },
+ "DZ": {
+ "name": "Ðлжир"
+ },
+ "US": {
+ "name": "Ðмерика Кошмо Штаттары"
+ },
+ "AS": {
+ "name": "Ðмерика СамоаÑÑ‹"
+ },
+ "AO": {
+ "name": "Ðнгола"
+ },
+ "AI": {
+ "name": "Ðнгуила"
+ },
+ "AD": {
+ "name": "Ðндорра"
+ },
+ "AQ": {
+ "name": "Ðнтарктика"
+ },
+ "AG": {
+ "name": "Ðнтигуа жана Барбуда"
+ },
+ "AR": {
+ "name": "Ðргентина"
+ },
+ "AM": {
+ "name": "ÐрмениÑ"
+ },
+ "AW": {
+ "name": "Ðруба"
+ },
+ "AC": {
+ "name": "ÐÑÑеншин аралы"
+ },
+ "AF": {
+ "name": "ÐфганиÑтан"
+ },
+ "BS": {
+ "name": "Багам аралдары"
+ },
+ "BD": {
+ "name": "Бангладеш"
+ },
+ "BB": {
+ "name": "БарбадоÑ"
+ },
+ "EH": {
+ "name": "Батыш Сахара"
+ },
+ "BH": {
+ "name": "Бахрейн"
+ },
+ "BY": {
+ "name": "БеларуÑÑŒ"
+ },
+ "BZ": {
+ "name": "Белиз"
+ },
+ "BE": {
+ "name": "БельгиÑ"
+ },
+ "BJ": {
+ "name": "Бенин"
+ },
+ "BM": {
+ "name": "Бермуд аралдары"
+ },
+ "AE": {
+ "name": "Бириккен Ðраб Эмираттары"
+ },
+ "BG": {
+ "name": "БолгариÑ"
+ },
+ "BO": {
+ "name": "БоливиÑ"
+ },
+ "CF": {
+ "name": "Борбордук Ðфрика РеÑпубликаÑÑ‹"
+ },
+ "BA": {
+ "name": "БоÑÐ½Ð¸Ñ Ð¶Ð°Ð½Ð° Герцеговина"
+ },
+ "BW": {
+ "name": "БотÑвана"
+ },
+ "BR": {
+ "name": "БразилиÑ"
+ },
+ "IO": {
+ "name": "БританиÑнын Ð˜Ð½Ð´Ð¸Ñ Ð¾ÐºÐµÐ°Ð½Ñ‹Ð½Ð´Ð°Ð³Ñ‹ аймагы"
+ },
+ "BN": {
+ "name": "Бруней"
+ },
+ "BF": {
+ "name": "Буркина-ФаÑо"
+ },
+ "BI": {
+ "name": "Бурунди"
+ },
+ "BT": {
+ "name": "Бутан"
+ },
+ "VU": {
+ "name": "Вануату"
+ },
+ "VA": {
+ "name": "Ватикан"
+ },
+ "HU": {
+ "name": "ВенгриÑ"
+ },
+ "VE": {
+ "name": "ВенеÑуÑла"
+ },
+ "VI": {
+ "name": "Виргин аралдары (ÐКШ)"
+ },
+ "VG": {
+ "name": "Виргин аралдары (БританиÑ)"
+ },
+ "VN": {
+ "name": "Вьетнам"
+ },
+ "GA": {
+ "name": "Габон"
+ },
+ "HT": {
+ "name": "Гаити"
+ },
+ "GY": {
+ "name": "Гайана"
+ },
+ "GM": {
+ "name": "ГамбиÑ"
+ },
+ "GH": {
+ "name": "Гана"
+ },
+ "GP": {
+ "name": "Гваделупа"
+ },
+ "GT": {
+ "name": "Гватемала"
+ },
+ "GF": {
+ "name": "Гвиана (ФранциÑ)"
+ },
+ "GN": {
+ "name": "ГвинеÑ"
+ },
+ "GW": {
+ "name": "ГвинеÑ-БиÑау"
+ },
+ "DE": {
+ "name": "ГерманиÑ"
+ },
+ "GG": {
+ "name": "ГернÑи"
+ },
+ "GI": {
+ "name": "Гибралтар"
+ },
+ "HN": {
+ "name": "ГондураÑ"
+ },
+ "HK": {
+ "name": "Гонконг Кытай ÐÐÐ"
+ },
+ "GD": {
+ "name": "Гренада"
+ },
+ "GL": {
+ "name": "ГренландиÑ"
+ },
+ "GR": {
+ "name": "ГрециÑ"
+ },
+ "GE": {
+ "name": "ГрузиÑ"
+ },
+ "GU": {
+ "name": "Гуам"
+ },
+ "DK": {
+ "name": "ДаниÑ"
+ },
+ "DJ": {
+ "name": "Джибути"
+ },
+ "DG": {
+ "name": "Диего ГарÑиÑ"
+ },
+ "DM": {
+ "name": "Доминика"
+ },
+ "DO": {
+ "name": "Доминика РеÑпубликаÑÑ‹"
+ },
+ "EG": {
+ "name": "Египет"
+ },
+ "NZ": {
+ "name": "Жаӊы ЗеландиÑ"
+ },
+ "NC": {
+ "name": "Жаӊы КаледониÑ"
+ },
+ "JE": {
+ "name": "ЖерÑи"
+ },
+ "ZM": {
+ "name": "ЗамбиÑ"
+ },
+ "ZW": {
+ "name": "Зимбабве"
+ },
+ "IL": {
+ "name": "Израиль"
+ },
+ "IN": {
+ "name": "ИндиÑ"
+ },
+ "ID": {
+ "name": "ИндонезиÑ"
+ },
+ "JO": {
+ "name": "ИорданиÑ"
+ },
+ "IQ": {
+ "name": "Ирак"
+ },
+ "IR": {
+ "name": "Иран"
+ },
+ "IE": {
+ "name": "ИрландиÑ"
+ },
+ "IS": {
+ "name": "ИÑландиÑ"
+ },
+ "ES": {
+ "name": "ИÑпаниÑ"
+ },
+ "IT": {
+ "name": "ИталиÑ"
+ },
+ "YE": {
+ "name": "Йемен"
+ },
+ "KZ": {
+ "name": "КазакÑтан"
+ },
+ "KY": {
+ "name": "Кайман Ðралдары"
+ },
+ "KH": {
+ "name": "Камбоджа"
+ },
+ "CM": {
+ "name": "Камерун"
+ },
+ "CA": {
+ "name": "Канада"
+ },
+ "IC": {
+ "name": "Канар аралдары"
+ },
+ "CV": {
+ "name": "Капе Верде"
+ },
+ "BQ": {
+ "name": "Кариб Ðидерланддары"
+ },
+ "QA": {
+ "name": "Катар"
+ },
+ "KE": {
+ "name": "КениÑ"
+ },
+ "CY": {
+ "name": "Кипр"
+ },
+ "KI": {
+ "name": "Кирибати"
+ },
+ "CC": {
+ "name": "ÐšÐ¾ÐºÐ¾Ñ (Килиӊ) аралдары"
+ },
+ "CO": {
+ "name": "КолумбиÑ"
+ },
+ "KM": {
+ "name": "КомороÑ"
+ },
+ "CG": {
+ "name": "Конго-Браззавил"
+ },
+ "CD": {
+ "name": "Конго-КиншаÑа"
+ },
+ "XK": {
+ "name": "КоÑово"
+ },
+ "CR": {
+ "name": "КоÑта-Рика"
+ },
+ "CI": {
+ "name": "Кот-д’Ивуар"
+ },
+ "CX": {
+ "name": "КриÑÐ¼Ð°Ñ Ð°Ñ€Ð°Ð»Ñ‹"
+ },
+ "CU": {
+ "name": "Куба"
+ },
+ "KW": {
+ "name": "Кувейт"
+ },
+ "CK": {
+ "name": "Кук аралдары"
+ },
+ "KG": {
+ "name": "КыргызÑтан"
+ },
+ "CN": {
+ "name": "Кытай"
+ },
+ "CW": {
+ "name": "КюраÑао"
+ },
+ "LA": {
+ "name": "ЛаоÑ"
+ },
+ "LV": {
+ "name": "ЛатвиÑ"
+ },
+ "LS": {
+ "name": "ЛеÑото"
+ },
+ "LR": {
+ "name": "ЛибериÑ"
+ },
+ "LB": {
+ "name": "Ливан"
+ },
+ "LY": {
+ "name": "ЛивиÑ"
+ },
+ "LT": {
+ "name": "Литва"
+ },
+ "LI": {
+ "name": "Лихтенштейн"
+ },
+ "LU": {
+ "name": "ЛюкÑембург"
+ },
+ "MU": {
+ "name": "Маврикий"
+ },
+ "MR": {
+ "name": "МавританиÑ"
+ },
+ "MG": {
+ "name": "МадагаÑкар"
+ },
+ "YT": {
+ "name": "Майотта"
+ },
+ "MO": {
+ "name": "Макау Кытай ÐÐÐ"
+ },
+ "MK": {
+ "name": "МакедониÑ"
+ },
+ "MW": {
+ "name": "Малави"
+ },
+ "MY": {
+ "name": "МалайзиÑ"
+ },
+ "MV": {
+ "name": "Малдив аралдары"
+ },
+ "ML": {
+ "name": "Мали"
+ },
+ "MT": {
+ "name": "Мальта"
+ },
+ "MA": {
+ "name": "Марокко"
+ },
+ "MQ": {
+ "name": "Мартиника"
+ },
+ "MH": {
+ "name": "Маршалл аралдары"
+ },
+ "MX": {
+ "name": "МекÑика"
+ },
+ "FM": {
+ "name": "МикронезиÑ"
+ },
+ "MZ": {
+ "name": "Мозамбик"
+ },
+ "MD": {
+ "name": "Молдова"
+ },
+ "MC": {
+ "name": "Монако"
+ },
+ "MN": {
+ "name": "МонголиÑ"
+ },
+ "MS": {
+ "name": "МонÑеррат"
+ },
+ "MM": {
+ "name": "МьÑнма (Бирма)"
+ },
+ "IM": {
+ "name": "ÐœÑн аралы"
+ },
+ "NA": {
+ "name": "ÐамибиÑ"
+ },
+ "NR": {
+ "name": "Ðауру"
+ },
+ "NP": {
+ "name": "Ðепал"
+ },
+ "NE": {
+ "name": "Ðигер"
+ },
+ "NG": {
+ "name": "ÐигериÑ"
+ },
+ "NL": {
+ "name": "Ðидерланддар"
+ },
+ "NI": {
+ "name": "Ðикарагуа"
+ },
+ "NU": {
+ "name": "ÐиуÑ"
+ },
+ "NO": {
+ "name": "ÐорвегиÑ"
+ },
+ "NF": {
+ "name": "Ðорфолк аралы"
+ },
+ "OM": {
+ "name": "Оман"
+ },
+ "UZ": {
+ "name": "ӨзбекÑтан"
+ },
+ "PK": {
+ "name": "ПакиÑтан"
+ },
+ "PW": {
+ "name": "Палау"
+ },
+ "PS": {
+ "name": "ПалеÑтина аймактары"
+ },
+ "PA": {
+ "name": "Панама"
+ },
+ "PG": {
+ "name": "Папуа Жаңы-ГвинеÑ"
+ },
+ "PY": {
+ "name": "Парагвай"
+ },
+ "PE": {
+ "name": "Перу"
+ },
+ "PN": {
+ "name": "ПиткÑрн аралдары"
+ },
+ "PL": {
+ "name": "Польша"
+ },
+ "PT": {
+ "name": "ПортугалиÑ"
+ },
+ "PR": {
+ "name": "ПуÑрто-Рико"
+ },
+ "RE": {
+ "name": "Реюнион"
+ },
+ "RU": {
+ "name": "РоÑÑиÑ"
+ },
+ "RW": {
+ "name": "Руанда"
+ },
+ "RO": {
+ "name": "РумыниÑ"
+ },
+ "WS": {
+ "name": "Самоа"
+ },
+ "SM": {
+ "name": "Сан Марино"
+ },
+ "ST": {
+ "name": "Сан-Томе жана ПринÑипи"
+ },
+ "SA": {
+ "name": "Сауд ÐрабиÑÑÑ‹"
+ },
+ "SZ": {
+ "name": "Свазиленд"
+ },
+ "SJ": {
+ "name": "Свалбард жана Жан Майен"
+ },
+ "SC": {
+ "name": "Сейшелдер"
+ },
+ "PM": {
+ "name": "Сен-Пьер жана Микелон"
+ },
+ "SN": {
+ "name": "Сенегал"
+ },
+ "BL": {
+ "name": "Сент Бартелеми"
+ },
+ "VC": {
+ "name": "Сент-ВинÑент жана Гренадиналар"
+ },
+ "KN": {
+ "name": "Сент-ÐšÐ¸Ñ‚Ñ Ð¶Ð°Ð½Ð° ÐевиÑ"
+ },
+ "LC": {
+ "name": "Сент-ЛюÑиÑ"
+ },
+ "MF": {
+ "name": "Сент-Мартин"
+ },
+ "RS": {
+ "name": "СербиÑ"
+ },
+ "EA": {
+ "name": "Сеута жана Мелилла"
+ },
+ "SG": {
+ "name": "Сингапур"
+ },
+ "SX": {
+ "name": "Синт Маартен"
+ },
+ "SY": {
+ "name": "СириÑ"
+ },
+ "SK": {
+ "name": "СловакиÑ"
+ },
+ "SI": {
+ "name": "СловениÑ"
+ },
+ "SB": {
+ "name": "Соломон аралдары"
+ },
+ "SO": {
+ "name": "Сомали"
+ },
+ "SD": {
+ "name": "Судан"
+ },
+ "SR": {
+ "name": "Суринаме"
+ },
+ "SL": {
+ "name": "Сьерра-Леоне"
+ },
+ "TJ": {
+ "name": "ТажикÑтан"
+ },
+ "TH": {
+ "name": "Таиланд"
+ },
+ "TW": {
+ "name": "Тайвань"
+ },
+ "TZ": {
+ "name": "ТанзаниÑ"
+ },
+ "TL": {
+ "name": "Тимор-ЛеÑте"
+ },
+ "TG": {
+ "name": "Того"
+ },
+ "TK": {
+ "name": "Токелау"
+ },
+ "TO": {
+ "name": "Тонга"
+ },
+ "TT": {
+ "name": "Тринидад жана Тобаго"
+ },
+ "TA": {
+ "name": "ТриÑтан да КуньÑ"
+ },
+ "TV": {
+ "name": "Тувалу"
+ },
+ "TN": {
+ "name": "ТуниÑ"
+ },
+ "KP": {
+ "name": "Түндүк КореÑ"
+ },
+ "MP": {
+ "name": "Түндүк Мариана аралдары"
+ },
+ "TR": {
+ "name": "ТүркиÑ"
+ },
+ "TM": {
+ "name": "ТүркмөнÑтан"
+ },
+ "TC": {
+ "name": "Ð¢Ò¯Ñ€ÐºÑ Ð¶Ð°Ð½Ð° ÐšÐ°Ð¹ÐºÐ¾Ñ Ð°Ñ€Ð°Ð»Ð´Ð°Ñ€Ñ‹"
+ },
+ "ZA": {
+ "name": "Түштүк Ðфрика РеÑпубликаÑÑ‹"
+ },
+ "GS": {
+ "name": "Түштүк Ð–Ð¾Ñ€Ð¶Ð¸Ñ Ð¶Ð°Ð½Ð° Түштүк СÑндвич аралдары"
+ },
+ "KR": {
+ "name": "Түштүк КореÑ"
+ },
+ "SS": {
+ "name": "Түштүк Судан"
+ },
+ "UG": {
+ "name": "Уганда"
+ },
+ "UA": {
+ "name": "Украина"
+ },
+ "GB": {
+ "name": "Улуу БританиÑ"
+ },
+ "WF": {
+ "name": "Ð£Ð¾Ð»Ð»Ð¸Ñ Ð¶Ð°Ð½Ð° Футуна"
+ },
+ "UY": {
+ "name": "Уругвай"
+ },
+ "FO": {
+ "name": "Фарер аралдары"
+ },
+ "FJ": {
+ "name": "Фиджи"
+ },
+ "PH": {
+ "name": "Филлипин"
+ },
+ "FI": {
+ "name": "ФинлÑндиÑ"
+ },
+ "FK": {
+ "name": "ФолклÑнд аралдары"
+ },
+ "FR": {
+ "name": "ФранциÑ"
+ },
+ "TF": {
+ "name": "ФранциÑнын Түштүктөгү аймактары"
+ },
+ "PF": {
+ "name": "Француз ПолинезиÑÑÑ‹"
+ },
+ "HR": {
+ "name": "ХорватиÑ"
+ },
+ "TD": {
+ "name": "Чад"
+ },
+ "ME": {
+ "name": "ЧерногориÑ"
+ },
+ "CZ": {
+ "name": "ЧехиÑ"
+ },
+ "CL": {
+ "name": "Чили"
+ },
+ "CH": {
+ "name": "ШвейцариÑ"
+ },
+ "SE": {
+ "name": "ШвециÑ"
+ },
+ "LK": {
+ "name": "Шри-Ланка"
+ },
+ "SH": {
+ "name": "Ыйык Елена"
+ },
+ "EC": {
+ "name": "Эквадор"
+ },
+ "GQ": {
+ "name": "Экваториалдык ГвинеÑ"
+ },
+ "SV": {
+ "name": "Эл Салвадор"
+ },
+ "ER": {
+ "name": "ЭритреÑ"
+ },
+ "EE": {
+ "name": "ЭÑтониÑ"
+ },
+ "ET": {
+ "name": "ЭфиопиÑ"
+ },
+ "JM": {
+ "name": "Ямайка"
+ },
+ "JP": {
+ "name": "ЯпониÑ"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/country/lag.json b/library/intl/resources/country/lag.json
new file mode 100644
index 000000000..ad82eee91
--- /dev/null
+++ b/library/intl/resources/country/lag.json
@@ -0,0 +1,761 @@
+{
+ "ZA": {
+ "name": "Afɨrɨka ya Saame"
+ },
+ "AF": {
+ "name": "Afuganisitáani"
+ },
+ "IS": {
+ "name": "Aisiláandi"
+ },
+ "AR": {
+ "name": "Ajentíina"
+ },
+ "AX": {
+ "name": "Ã…land Islands"
+ },
+ "DZ": {
+ "name": "Alijéria"
+ },
+ "AL": {
+ "name": "Alubánia"
+ },
+ "US": {
+ "name": "Amerɨka"
+ },
+ "AD": {
+ "name": "Andóra"
+ },
+ "AO": {
+ "name": "Angóola"
+ },
+ "AI": {
+ "name": "Anguíila"
+ },
+ "AQ": {
+ "name": "Antarctica"
+ },
+ "AG": {
+ "name": "Antigúua na Baribúuda"
+ },
+ "AM": {
+ "name": "Ariménia"
+ },
+ "AW": {
+ "name": "Arúuba"
+ },
+ "AC": {
+ "name": "Ascension Island"
+ },
+ "AU": {
+ "name": "Ausiteréelia"
+ },
+ "AT": {
+ "name": "Ãusitiria"
+ },
+ "IE": {
+ "name": "Ayaláandi"
+ },
+ "AZ": {
+ "name": "Azabajáani"
+ },
+ "BB": {
+ "name": "Babadóosi"
+ },
+ "BS": {
+ "name": "Baháama"
+ },
+ "BH": {
+ "name": "Baharéeni"
+ },
+ "BD": {
+ "name": "Bangaladéeshi"
+ },
+ "BY": {
+ "name": "Belarúusi"
+ },
+ "BZ": {
+ "name": "Belíise"
+ },
+ "BJ": {
+ "name": "Beníini"
+ },
+ "BM": {
+ "name": "Berimúuda"
+ },
+ "BO": {
+ "name": "Bolívia"
+ },
+ "BA": {
+ "name": "Bósinia"
+ },
+ "BW": {
+ "name": "Botiswáana"
+ },
+ "BR": {
+ "name": "Brasíili"
+ },
+ "MG": {
+ "name": "Bukíini"
+ },
+ "BF": {
+ "name": "Bukinafáaso"
+ },
+ "BG": {
+ "name": "Buligaría"
+ },
+ "BN": {
+ "name": "Burunéei"
+ },
+ "BI": {
+ "name": "Burúundi"
+ },
+ "BT": {
+ "name": "Butáani"
+ },
+ "IC": {
+ "name": "Canary Islands"
+ },
+ "BQ": {
+ "name": "Caribbean Netherlands"
+ },
+ "EA": {
+ "name": "Ceuta & Melilla"
+ },
+ "TD": {
+ "name": "Cháadi"
+ },
+ "CL": {
+ "name": "Chíile"
+ },
+ "CN": {
+ "name": "Chíina"
+ },
+ "CX": {
+ "name": "Christmas Island"
+ },
+ "CC": {
+ "name": "Cocos (Keeling) Islands"
+ },
+ "CW": {
+ "name": "Curaçao"
+ },
+ "DK": {
+ "name": "Denimaki"
+ },
+ "DG": {
+ "name": "Diego Garcia"
+ },
+ "DM": {
+ "name": "Domínɨka"
+ },
+ "SV": {
+ "name": "Elisalivado"
+ },
+ "ER": {
+ "name": "Eriterea"
+ },
+ "EE": {
+ "name": "Estonía"
+ },
+ "FO": {
+ "name": "Faroe Islands"
+ },
+ "FJ": {
+ "name": "Fíiji"
+ },
+ "TF": {
+ "name": "French Southern Territories"
+ },
+ "GH": {
+ "name": "Gáana"
+ },
+ "GA": {
+ "name": "Gabóoni"
+ },
+ "GM": {
+ "name": "Gámbia"
+ },
+ "GN": {
+ "name": "Gíine"
+ },
+ "GW": {
+ "name": "Gíine Bisáau"
+ },
+ "GQ": {
+ "name": "Gíine Ikwéeta"
+ },
+ "GD": {
+ "name": "Girenáada"
+ },
+ "GL": {
+ "name": "Giriniláandi"
+ },
+ "GG": {
+ "name": "Guernsey"
+ },
+ "GY": {
+ "name": "Guyáana"
+ },
+ "GP": {
+ "name": "Gwadelúupe"
+ },
+ "GU": {
+ "name": "Gwani"
+ },
+ "GT": {
+ "name": "Gwatemáala"
+ },
+ "GF": {
+ "name": "Gwiyáana yʉ Ʉfaráansa"
+ },
+ "HT": {
+ "name": "Haíiti"
+ },
+ "ES": {
+ "name": "Hisipánia"
+ },
+ "HN": {
+ "name": "Honduráasi"
+ },
+ "HK": {
+ "name": "Hong Kong SAR China"
+ },
+ "HU": {
+ "name": "Hungária"
+ },
+ "EC": {
+ "name": "Ãkwado"
+ },
+ "IN": {
+ "name": "Ãndia"
+ },
+ "ID": {
+ "name": "Indonésia"
+ },
+ "IQ": {
+ "name": "Iráaki"
+ },
+ "IL": {
+ "name": "Isiraéeli"
+ },
+ "IM": {
+ "name": "Isle of Man"
+ },
+ "IT": {
+ "name": "Itália"
+ },
+ "CI": {
+ "name": "Ivori Kositi"
+ },
+ "IO": {
+ "name": "Ɨsɨ yʉ Ʉɨngeréesa irivii ra Híindi"
+ },
+ "JM": {
+ "name": "Jamáika"
+ },
+ "CZ": {
+ "name": "Jamuhúuri ya Chéeki"
+ },
+ "DO": {
+ "name": "Jamuhúuri ya Dominɨka"
+ },
+ "CD": {
+ "name": "Jamuhúuri ya Kɨdemokurasía ya Kóongo"
+ },
+ "JP": {
+ "name": "Japáani"
+ },
+ "JE": {
+ "name": "Jersey"
+ },
+ "GI": {
+ "name": "Jiburálita"
+ },
+ "DJ": {
+ "name": "Jibúuti"
+ },
+ "JO": {
+ "name": "Jódani"
+ },
+ "GE": {
+ "name": "Jójia"
+ },
+ "CF": {
+ "name": "Juhúuri ya Afɨrɨka ya katɨ katɨ"
+ },
+ "NC": {
+ "name": "Kaledónia Ifya"
+ },
+ "KH": {
+ "name": "Kambódia"
+ },
+ "CM": {
+ "name": "Kamerúuni"
+ },
+ "CA": {
+ "name": "Kánada"
+ },
+ "QA": {
+ "name": "Katáari"
+ },
+ "KZ": {
+ "name": "Kazakasitáani"
+ },
+ "KE": {
+ "name": "Kéenya"
+ },
+ "CV": {
+ "name": "Kepuvéede"
+ },
+ "KI": {
+ "name": "Kiribáati"
+ },
+ "KG": {
+ "name": "Kirigisitáani"
+ },
+ "NF": {
+ "name": "Kisíiwa cha Nofifóoki"
+ },
+ "CO": {
+ "name": "Kolómbia"
+ },
+ "KM": {
+ "name": "Komóoro"
+ },
+ "CG": {
+ "name": "Kóongo"
+ },
+ "KR": {
+ "name": "Koréa ya Saame"
+ },
+ "KP": {
+ "name": "Koréa yʉ ʉtʉrʉko"
+ },
+ "HR": {
+ "name": "Koréshia"
+ },
+ "CR": {
+ "name": "Kósita RɨÌɨka"
+ },
+ "XK": {
+ "name": "Kosovo"
+ },
+ "CY": {
+ "name": "Kupuróosi"
+ },
+ "KW": {
+ "name": "Kʉwáiti"
+ },
+ "CU": {
+ "name": "Kyúuba"
+ },
+ "LA": {
+ "name": "Laóosi"
+ },
+ "LU": {
+ "name": "Lasembáagi"
+ },
+ "LV": {
+ "name": "Lativia"
+ },
+ "LB": {
+ "name": "Lebanóoni"
+ },
+ "LS": {
+ "name": "Lesóoto"
+ },
+ "LY": {
+ "name": "Líbia"
+ },
+ "LR": {
+ "name": "Liibéria"
+ },
+ "LI": {
+ "name": "Lishentéeni"
+ },
+ "LT": {
+ "name": "Lisuánia"
+ },
+ "ML": {
+ "name": "Máali"
+ },
+ "MO": {
+ "name": "Macau SAR China"
+ },
+ "MW": {
+ "name": "Maláawi"
+ },
+ "MY": {
+ "name": "Maleísia"
+ },
+ "MT": {
+ "name": "Málita"
+ },
+ "MQ": {
+ "name": "Maritiníiki"
+ },
+ "MK": {
+ "name": "Masedónia"
+ },
+ "YT": {
+ "name": "Mayóote"
+ },
+ "MX": {
+ "name": "Mekisiko"
+ },
+ "MM": {
+ "name": "Miáama"
+ },
+ "FM": {
+ "name": "Mikironésia"
+ },
+ "EG": {
+ "name": "Mísiri"
+ },
+ "MV": {
+ "name": "Modíivu"
+ },
+ "MD": {
+ "name": "Molidóova"
+ },
+ "MC": {
+ "name": "Monáako"
+ },
+ "MN": {
+ "name": "Mongólia"
+ },
+ "ME": {
+ "name": "Montenegro"
+ },
+ "MS": {
+ "name": "Monteráati"
+ },
+ "MU": {
+ "name": "Moríisi"
+ },
+ "MR": {
+ "name": "Moritánia"
+ },
+ "MA": {
+ "name": "Moróoko"
+ },
+ "MZ": {
+ "name": "Musumbíiji"
+ },
+ "SH": {
+ "name": "Mʉtakatíifu Heléena"
+ },
+ "KN": {
+ "name": "Mʉtakatíifu kitisi na Nevíisi"
+ },
+ "LC": {
+ "name": "Mʉtakatíifu Lusíia"
+ },
+ "PM": {
+ "name": "Mʉtakatíifu Peéteri na Mɨkaéeli"
+ },
+ "VC": {
+ "name": "Mʉtakatíifu Viséenti na Gernadíini"
+ },
+ "PS": {
+ "name": "Mweemberera wa kʉmweeri wa Gáaza"
+ },
+ "NA": {
+ "name": "Namíbia"
+ },
+ "NR": {
+ "name": "Naúuru"
+ },
+ "NP": {
+ "name": "Nepáali"
+ },
+ "NE": {
+ "name": "Níija"
+ },
+ "NG": {
+ "name": "Niijéria"
+ },
+ "NI": {
+ "name": "Nikarágʉa"
+ },
+ "NU": {
+ "name": "Niúue"
+ },
+ "NO": {
+ "name": "Norwe"
+ },
+ "NZ": {
+ "name": "Nyuzílandi"
+ },
+ "OM": {
+ "name": "Ómani"
+ },
+ "PK": {
+ "name": "Pakisitáani"
+ },
+ "PW": {
+ "name": "Paláau"
+ },
+ "PA": {
+ "name": "Panáama"
+ },
+ "PG": {
+ "name": "Papúua"
+ },
+ "PY": {
+ "name": "Paraguáai"
+ },
+ "PN": {
+ "name": "Patikaírini"
+ },
+ "PE": {
+ "name": "Péeru"
+ },
+ "PL": {
+ "name": "Pólandi"
+ },
+ "PF": {
+ "name": "Polinésia yʉ Ʉfaráansa"
+ },
+ "PR": {
+ "name": "PwetorɨÌɨko"
+ },
+ "RE": {
+ "name": "Reyunióoni"
+ },
+ "RO": {
+ "name": "Romaníia"
+ },
+ "RW": {
+ "name": "Rwáanda"
+ },
+ "SM": {
+ "name": "Samaríino"
+ },
+ "ZM": {
+ "name": "Sámbia"
+ },
+ "WS": {
+ "name": "Samóoa"
+ },
+ "AS": {
+ "name": "Samóoa ya AmerɨÌka"
+ },
+ "ST": {
+ "name": "Sao Tóome na Pirinsipe"
+ },
+ "SA": {
+ "name": "Saudíia Arabíia"
+ },
+ "SN": {
+ "name": "Senegáali"
+ },
+ "SL": {
+ "name": "Seraleóoni"
+ },
+ "RS": {
+ "name": "Serbia"
+ },
+ "SC": {
+ "name": "Shelishéeli"
+ },
+ "ZW": {
+ "name": "Simbáabwe"
+ },
+ "SG": {
+ "name": "Singapoo"
+ },
+ "SX": {
+ "name": "Sint Maarten"
+ },
+ "SY": {
+ "name": "Síria"
+ },
+ "LK": {
+ "name": "Siriláanka"
+ },
+ "SO": {
+ "name": "Somália"
+ },
+ "GS": {
+ "name": "South Georgia & South Sandwich Islands"
+ },
+ "SS": {
+ "name": "South Sudan"
+ },
+ "BL": {
+ "name": "St. Barthélemy"
+ },
+ "MF": {
+ "name": "St. Martin"
+ },
+ "SD": {
+ "name": "Sudáani"
+ },
+ "SK": {
+ "name": "Sulováakia"
+ },
+ "SI": {
+ "name": "Sulovénia"
+ },
+ "SR": {
+ "name": "Surináamu"
+ },
+ "SJ": {
+ "name": "Svalbard & Jan Mayen"
+ },
+ "TZ": {
+ "name": "Taansanía"
+ },
+ "TH": {
+ "name": "Táilandi"
+ },
+ "TW": {
+ "name": "Taiwáani"
+ },
+ "TJ": {
+ "name": "Tajikisitáani"
+ },
+ "TL": {
+ "name": "Timóori yi Itʉʉmba"
+ },
+ "TT": {
+ "name": "Tiriníida ya Tobáago"
+ },
+ "TK": {
+ "name": "Tokeláau"
+ },
+ "TG": {
+ "name": "Tóogo"
+ },
+ "TO": {
+ "name": "Tóonga"
+ },
+ "TA": {
+ "name": "Tristan da Cunha"
+ },
+ "TN": {
+ "name": "Tunísia"
+ },
+ "TV": {
+ "name": "Tuváalu"
+ },
+ "UM": {
+ "name": "U.S. Outlying Islands"
+ },
+ "FI": {
+ "name": "Ufíini"
+ },
+ "PH": {
+ "name": "Ufilipíino"
+ },
+ "GR": {
+ "name": "Ugiríki"
+ },
+ "UY": {
+ "name": "Uruguáai"
+ },
+ "RU": {
+ "name": "Urúusi"
+ },
+ "UZ": {
+ "name": "Usibekisitáani"
+ },
+ "SE": {
+ "name": "Uswíidi"
+ },
+ "CH": {
+ "name": "Uswíisi"
+ },
+ "TM": {
+ "name": "Uturukimenisitáani"
+ },
+ "TR": {
+ "name": "Uturúuki"
+ },
+ "IR": {
+ "name": "Ʉajéemi"
+ },
+ "BE": {
+ "name": "Ʉbeligíiji"
+ },
+ "FR": {
+ "name": "Ʉfaráansa"
+ },
+ "UG": {
+ "name": "Ʉgáanda"
+ },
+ "ET": {
+ "name": "Ʉhabéeshi"
+ },
+ "NL": {
+ "name": "Ʉholáanzi"
+ },
+ "GB": {
+ "name": "Ʉɨngeréesa"
+ },
+ "DE": {
+ "name": "Ʉjerumáani"
+ },
+ "UA": {
+ "name": "Ʉkɨréeni"
+ },
+ "PT": {
+ "name": "Ʉréeno"
+ },
+ "SZ": {
+ "name": "Ʉswáazi"
+ },
+ "AE": {
+ "name": "Ʉtemi wa Kɨaráabu"
+ },
+ "VU": {
+ "name": "Vanuáatu"
+ },
+ "VA": {
+ "name": "Vatikáani"
+ },
+ "VE": {
+ "name": "Venezuéela"
+ },
+ "VN": {
+ "name": "Vietináamu"
+ },
+ "FK": {
+ "name": "Visíiwa vya Fakulandi"
+ },
+ "KY": {
+ "name": "Visíiwa vya Kayimani"
+ },
+ "CK": {
+ "name": "Visíiwa vya Kúuku"
+ },
+ "MH": {
+ "name": "Visíiwa vya Marisháali"
+ },
+ "SB": {
+ "name": "Visíiwa vya Solomóoni"
+ },
+ "TC": {
+ "name": "Visíiwa vya Turíiki na Kaíiko"
+ },
+ "VI": {
+ "name": "Visíiwa vya Vigíini vya AmerɨÌka"
+ },
+ "VG": {
+ "name": "Visíiwa vya Vigíini vya Ʉɨngeréesa"
+ },
+ "MP": {
+ "name": "Visiwa vya Mariana vya Kaskazini"
+ },
+ "WF": {
+ "name": "Walíisi na Futúuna"
+ },
+ "EH": {
+ "name": "Western Sahara"
+ },
+ "YE": {
+ "name": "Yémeni"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/country/lb.json b/library/intl/resources/country/lb.json
new file mode 100644
index 000000000..b073e04f6
--- /dev/null
+++ b/library/intl/resources/country/lb.json
@@ -0,0 +1,761 @@
+{
+ "AF": {
+ "name": "Afghanistan"
+ },
+ "AX": {
+ "name": "Ã…landinselen"
+ },
+ "AL": {
+ "name": "Albanien"
+ },
+ "DZ": {
+ "name": "Algerien"
+ },
+ "VI": {
+ "name": "Amerikanesch Joffereninselen"
+ },
+ "UM": {
+ "name": "Amerikanesch-Ozeanien"
+ },
+ "AS": {
+ "name": "Amerikanesch-Samoa"
+ },
+ "AD": {
+ "name": "Andorra"
+ },
+ "AO": {
+ "name": "Angola"
+ },
+ "AI": {
+ "name": "Anguilla"
+ },
+ "AQ": {
+ "name": "Antarktis"
+ },
+ "AG": {
+ "name": "Antigua a Barbuda"
+ },
+ "AR": {
+ "name": "Argentinien"
+ },
+ "AM": {
+ "name": "Armenien"
+ },
+ "AW": {
+ "name": "Aruba"
+ },
+ "AC": {
+ "name": "Ascension"
+ },
+ "AZ": {
+ "name": "Aserbaidschan"
+ },
+ "AU": {
+ "name": "Australien"
+ },
+ "BS": {
+ "name": "Bahamas"
+ },
+ "BH": {
+ "name": "Bahrain"
+ },
+ "BD": {
+ "name": "Bangladesch"
+ },
+ "BB": {
+ "name": "Barbados"
+ },
+ "BZ": {
+ "name": "Belize"
+ },
+ "BE": {
+ "name": "Belsch"
+ },
+ "BJ": {
+ "name": "Benin"
+ },
+ "BM": {
+ "name": "Bermuda"
+ },
+ "BT": {
+ "name": "Bhutan"
+ },
+ "BO": {
+ "name": "Bolivien"
+ },
+ "BA": {
+ "name": "Bosnien an Herzegowina"
+ },
+ "BW": {
+ "name": "Botsuana"
+ },
+ "BR": {
+ "name": "Brasilien"
+ },
+ "VG": {
+ "name": "Britesch Joffereninselen"
+ },
+ "IO": {
+ "name": "Britescht Territorium am Indeschen Ozean"
+ },
+ "BN": {
+ "name": "Brunei"
+ },
+ "BG": {
+ "name": "Bulgarien"
+ },
+ "BF": {
+ "name": "Burkina Faso"
+ },
+ "BI": {
+ "name": "Burundi"
+ },
+ "EA": {
+ "name": "Ceuta a Melilla"
+ },
+ "CL": {
+ "name": "Chile"
+ },
+ "CN": {
+ "name": "China"
+ },
+ "CX": {
+ "name": "Chrëschtdagsinsel"
+ },
+ "CK": {
+ "name": "Cookinselen"
+ },
+ "CR": {
+ "name": "Costa Rica"
+ },
+ "CW": {
+ "name": "Curaçao"
+ },
+ "DE": {
+ "name": "Däitschland"
+ },
+ "DK": {
+ "name": "Dänemark"
+ },
+ "DG": {
+ "name": "Diego Garcia"
+ },
+ "DM": {
+ "name": "Dominica"
+ },
+ "DO": {
+ "name": "Dominikanesch Republik"
+ },
+ "DJ": {
+ "name": "Dschibuti"
+ },
+ "EC": {
+ "name": "Ecuador"
+ },
+ "EG": {
+ "name": "Egypten"
+ },
+ "AT": {
+ "name": "Éisträich"
+ },
+ "SV": {
+ "name": "El Salvador"
+ },
+ "CI": {
+ "name": "Elfebeeküst"
+ },
+ "GQ": {
+ "name": "Equatorialguinea"
+ },
+ "ER": {
+ "name": "Eritrea"
+ },
+ "EE": {
+ "name": "Estland"
+ },
+ "ET": {
+ "name": "Ethiopien"
+ },
+ "FK": {
+ "name": "Falklandinselen"
+ },
+ "FO": {
+ "name": "Färöer"
+ },
+ "FJ": {
+ "name": "Fidschi"
+ },
+ "FI": {
+ "name": "Finnland"
+ },
+ "FR": {
+ "name": "Frankräich"
+ },
+ "TF": {
+ "name": "Franséisch Süd- an Antarktisgebidder"
+ },
+ "PF": {
+ "name": "Franséisch-Polynesien"
+ },
+ "GA": {
+ "name": "Gabun"
+ },
+ "GM": {
+ "name": "Gambia"
+ },
+ "GE": {
+ "name": "Georgien"
+ },
+ "GH": {
+ "name": "Ghana"
+ },
+ "GI": {
+ "name": "Gibraltar"
+ },
+ "GD": {
+ "name": "Grenada"
+ },
+ "GR": {
+ "name": "Griicheland"
+ },
+ "GL": {
+ "name": "Grönland"
+ },
+ "GB": {
+ "name": "Groussbritannien"
+ },
+ "GP": {
+ "name": "Guadeloupe"
+ },
+ "GU": {
+ "name": "Guam"
+ },
+ "GT": {
+ "name": "Guatemala"
+ },
+ "GF": {
+ "name": "Guayane"
+ },
+ "GG": {
+ "name": "Guernsey"
+ },
+ "GN": {
+ "name": "Guinea"
+ },
+ "GW": {
+ "name": "Guinea-Bissau"
+ },
+ "GY": {
+ "name": "Guyana"
+ },
+ "HT": {
+ "name": "Haiti"
+ },
+ "NL": {
+ "name": "Holland"
+ },
+ "HN": {
+ "name": "Honduras"
+ },
+ "IN": {
+ "name": "Indien"
+ },
+ "ID": {
+ "name": "Indonesien"
+ },
+ "IQ": {
+ "name": "Irak"
+ },
+ "IR": {
+ "name": "Iran"
+ },
+ "IE": {
+ "name": "Irland"
+ },
+ "IS": {
+ "name": "Island"
+ },
+ "IM": {
+ "name": "Isle of Man"
+ },
+ "IL": {
+ "name": "Israel"
+ },
+ "IT": {
+ "name": "Italien"
+ },
+ "JM": {
+ "name": "Jamaika"
+ },
+ "JP": {
+ "name": "Japan"
+ },
+ "YE": {
+ "name": "Jemen"
+ },
+ "JE": {
+ "name": "Jersey"
+ },
+ "JO": {
+ "name": "Jordanien"
+ },
+ "KY": {
+ "name": "Kaimaninselen"
+ },
+ "KH": {
+ "name": "Kambodscha"
+ },
+ "CM": {
+ "name": "Kamerun"
+ },
+ "CA": {
+ "name": "Kanada"
+ },
+ "IC": {
+ "name": "Kanaresch Inselen"
+ },
+ "CV": {
+ "name": "Kap Verde"
+ },
+ "BQ": {
+ "name": "Karibescht Holland"
+ },
+ "KZ": {
+ "name": "Kasachstan"
+ },
+ "QA": {
+ "name": "Katar"
+ },
+ "KE": {
+ "name": "Kenia"
+ },
+ "KG": {
+ "name": "Kirgisistan"
+ },
+ "KI": {
+ "name": "Kiribati"
+ },
+ "CC": {
+ "name": "Kokosinselen"
+ },
+ "CO": {
+ "name": "Kolumbien"
+ },
+ "KM": {
+ "name": "Komoren"
+ },
+ "CG": {
+ "name": "Kongo-Brazzaville"
+ },
+ "CD": {
+ "name": "Kongo-Kinshasa"
+ },
+ "XK": {
+ "name": "Kosovo"
+ },
+ "HR": {
+ "name": "Kroatien"
+ },
+ "CU": {
+ "name": "Kuba"
+ },
+ "KW": {
+ "name": "Kuwait"
+ },
+ "LA": {
+ "name": "Laos"
+ },
+ "LS": {
+ "name": "Lesotho"
+ },
+ "LV": {
+ "name": "Lettland"
+ },
+ "LU": {
+ "name": "Lëtzebuerg"
+ },
+ "LB": {
+ "name": "Libanon"
+ },
+ "LR": {
+ "name": "Liberia"
+ },
+ "LY": {
+ "name": "Libyen"
+ },
+ "LI": {
+ "name": "Liechtenstein"
+ },
+ "LT": {
+ "name": "Litauen"
+ },
+ "MG": {
+ "name": "Madagaskar"
+ },
+ "MW": {
+ "name": "Malawi"
+ },
+ "MY": {
+ "name": "Malaysia"
+ },
+ "MV": {
+ "name": "Maldiven"
+ },
+ "ML": {
+ "name": "Mali"
+ },
+ "MT": {
+ "name": "Malta"
+ },
+ "MA": {
+ "name": "Marokko"
+ },
+ "MH": {
+ "name": "Marshallinselen"
+ },
+ "MQ": {
+ "name": "Martinique"
+ },
+ "MR": {
+ "name": "Mauretanien"
+ },
+ "MU": {
+ "name": "Mauritius"
+ },
+ "YT": {
+ "name": "Mayotte"
+ },
+ "MK": {
+ "name": "Mazedonien"
+ },
+ "MX": {
+ "name": "Mexiko"
+ },
+ "FM": {
+ "name": "Mikronesien"
+ },
+ "MD": {
+ "name": "Moldawien"
+ },
+ "MC": {
+ "name": "Monaco"
+ },
+ "MN": {
+ "name": "Mongolei"
+ },
+ "ME": {
+ "name": "Montenegro"
+ },
+ "MS": {
+ "name": "Montserrat"
+ },
+ "MZ": {
+ "name": "Mosambik"
+ },
+ "MM": {
+ "name": "Myanmar"
+ },
+ "NA": {
+ "name": "Namibia"
+ },
+ "NR": {
+ "name": "Nauru"
+ },
+ "NC": {
+ "name": "Neikaledonien"
+ },
+ "NZ": {
+ "name": "Neiséiland"
+ },
+ "NP": {
+ "name": "Nepal"
+ },
+ "MP": {
+ "name": "Nërdlech Marianen"
+ },
+ "NI": {
+ "name": "Nicaragua"
+ },
+ "NE": {
+ "name": "Niger"
+ },
+ "NG": {
+ "name": "Nigeria"
+ },
+ "NU": {
+ "name": "Niue"
+ },
+ "KP": {
+ "name": "Nordkorea"
+ },
+ "NF": {
+ "name": "Norfolkinsel"
+ },
+ "NO": {
+ "name": "Norwegen"
+ },
+ "OM": {
+ "name": "Oman"
+ },
+ "TL": {
+ "name": "Osttimor"
+ },
+ "PK": {
+ "name": "Pakistan"
+ },
+ "PW": {
+ "name": "Palau"
+ },
+ "PS": {
+ "name": "Palestinensesch Autonomiegebidder"
+ },
+ "PA": {
+ "name": "Panama"
+ },
+ "PG": {
+ "name": "Papua-Neiguinea"
+ },
+ "PY": {
+ "name": "Paraguay"
+ },
+ "PE": {
+ "name": "Peru"
+ },
+ "PH": {
+ "name": "Philippinnen"
+ },
+ "PN": {
+ "name": "Pitcairninselen"
+ },
+ "PL": {
+ "name": "Polen"
+ },
+ "PT": {
+ "name": "Portugal"
+ },
+ "PR": {
+ "name": "Puerto Rico"
+ },
+ "RE": {
+ "name": "Réunion"
+ },
+ "RW": {
+ "name": "Ruanda"
+ },
+ "RO": {
+ "name": "Rumänien"
+ },
+ "RU": {
+ "name": "Russland"
+ },
+ "BL": {
+ "name": "Saint-Barthélemy"
+ },
+ "SB": {
+ "name": "Salomonen"
+ },
+ "ZM": {
+ "name": "Sambia"
+ },
+ "WS": {
+ "name": "Samoa"
+ },
+ "SM": {
+ "name": "San Marino"
+ },
+ "ST": {
+ "name": "São Tomé a Príncipe"
+ },
+ "SA": {
+ "name": "Saudi-Arabien"
+ },
+ "CH": {
+ "name": "Schwäiz"
+ },
+ "SE": {
+ "name": "Schweden"
+ },
+ "SN": {
+ "name": "Senegal"
+ },
+ "RS": {
+ "name": "Serbien"
+ },
+ "SC": {
+ "name": "Seychellen"
+ },
+ "SL": {
+ "name": "Sierra Leone"
+ },
+ "ZW": {
+ "name": "Simbabwe"
+ },
+ "SG": {
+ "name": "Singapur"
+ },
+ "SX": {
+ "name": "Sint Maarten"
+ },
+ "SK": {
+ "name": "Slowakei"
+ },
+ "SI": {
+ "name": "Slowenien"
+ },
+ "SO": {
+ "name": "Somalia"
+ },
+ "ES": {
+ "name": "Spanien"
+ },
+ "HK": {
+ "name": "Spezialverwaltungszon Hong Kong"
+ },
+ "MO": {
+ "name": "Spezialverwaltungszon Macau"
+ },
+ "LK": {
+ "name": "Sri Lanka"
+ },
+ "SH": {
+ "name": "St. Helena"
+ },
+ "KN": {
+ "name": "St. Kitts an Nevis"
+ },
+ "LC": {
+ "name": "St. Lucia"
+ },
+ "MF": {
+ "name": "St. Martin"
+ },
+ "PM": {
+ "name": "St. Pierre a Miquelon"
+ },
+ "VC": {
+ "name": "St. Vincent an d’Grenadinnen"
+ },
+ "ZA": {
+ "name": "Südafrika"
+ },
+ "SD": {
+ "name": "Sudan"
+ },
+ "GS": {
+ "name": "Südgeorgien an déi Südlech Sandwichinselen"
+ },
+ "KR": {
+ "name": "Südkorea"
+ },
+ "SS": {
+ "name": "Südsudan"
+ },
+ "SR": {
+ "name": "Suriname"
+ },
+ "SJ": {
+ "name": "Svalbard a Jan Mayen"
+ },
+ "SZ": {
+ "name": "Swasiland"
+ },
+ "SY": {
+ "name": "Syrien"
+ },
+ "TJ": {
+ "name": "Tadschikistan"
+ },
+ "TW": {
+ "name": "Taiwan"
+ },
+ "TZ": {
+ "name": "Tansania"
+ },
+ "TH": {
+ "name": "Thailand"
+ },
+ "TR": {
+ "name": "Tierkei"
+ },
+ "TG": {
+ "name": "Togo"
+ },
+ "TK": {
+ "name": "Tokelau"
+ },
+ "TO": {
+ "name": "Tonga"
+ },
+ "TT": {
+ "name": "Trinidad an Tobago"
+ },
+ "TA": {
+ "name": "Tristan da Cunha"
+ },
+ "TD": {
+ "name": "Tschad"
+ },
+ "CZ": {
+ "name": "Tschechien"
+ },
+ "TN": {
+ "name": "Tunesien"
+ },
+ "TM": {
+ "name": "Turkmenistan"
+ },
+ "TC": {
+ "name": "Turks- a Caicosinselen"
+ },
+ "TV": {
+ "name": "Tuvalu"
+ },
+ "UG": {
+ "name": "Uganda"
+ },
+ "UA": {
+ "name": "Ukrain"
+ },
+ "HU": {
+ "name": "Ungarn"
+ },
+ "UY": {
+ "name": "Uruguay"
+ },
+ "UZ": {
+ "name": "Usbekistan"
+ },
+ "VU": {
+ "name": "Vanuatu"
+ },
+ "VA": {
+ "name": "Vatikanstad"
+ },
+ "VE": {
+ "name": "Venezuela"
+ },
+ "AE": {
+ "name": "Vereenegt Arabesch Emirater"
+ },
+ "US": {
+ "name": "Vereenegt Staate vun Amerika"
+ },
+ "VN": {
+ "name": "Vietnam"
+ },
+ "BY": {
+ "name": "Wäissrussland"
+ },
+ "WF": {
+ "name": "Wallis a Futuna"
+ },
+ "EH": {
+ "name": "Westsahara"
+ },
+ "CF": {
+ "name": "Zentralafrikanesch Republik"
+ },
+ "CY": {
+ "name": "Zypern"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/country/lg.json b/library/intl/resources/country/lg.json
new file mode 100644
index 000000000..d2cf82dc0
--- /dev/null
+++ b/library/intl/resources/country/lg.json
@@ -0,0 +1,761 @@
+{
+ "AF": {
+ "name": "Afaganisitani"
+ },
+ "AX": {
+ "name": "Ã…land Islands"
+ },
+ "AL": {
+ "name": "Alibaniya"
+ },
+ "DZ": {
+ "name": "Aligerya"
+ },
+ "US": {
+ "name": "Amerika"
+ },
+ "AD": {
+ "name": "Andora"
+ },
+ "AO": {
+ "name": "Angola"
+ },
+ "AI": {
+ "name": "Angwila"
+ },
+ "AQ": {
+ "name": "Antarctica"
+ },
+ "AG": {
+ "name": "Antigwa ne Barabuda"
+ },
+ "AM": {
+ "name": "Arameniya"
+ },
+ "AR": {
+ "name": "Arigentina"
+ },
+ "AW": {
+ "name": "Aruba"
+ },
+ "AC": {
+ "name": "Ascension Island"
+ },
+ "AU": {
+ "name": "Awusitureliya"
+ },
+ "AT": {
+ "name": "Awusituriya"
+ },
+ "IE": {
+ "name": "Ayalandi"
+ },
+ "IS": {
+ "name": "Ayisirandi"
+ },
+ "AZ": {
+ "name": "Azerebayijaani"
+ },
+ "BH": {
+ "name": "Baareeni"
+ },
+ "BS": {
+ "name": "Bahamasi"
+ },
+ "BD": {
+ "name": "Bangaladesi"
+ },
+ "BB": {
+ "name": "Barabadosi"
+ },
+ "BY": {
+ "name": "Belarusi"
+ },
+ "BZ": {
+ "name": "Belize"
+ },
+ "BJ": {
+ "name": "Benini"
+ },
+ "BM": {
+ "name": "Beremuda"
+ },
+ "SB": {
+ "name": "Bizanga by’eSolomooni"
+ },
+ "CV": {
+ "name": "Bizinga by’e Kepu Veredi"
+ },
+ "IO": {
+ "name": "Bizinga by’eCago"
+ },
+ "FK": {
+ "name": "Bizinga by’eFalikalandi"
+ },
+ "KM": {
+ "name": "Bizinga by’eKomoro"
+ },
+ "MV": {
+ "name": "Bizinga by’eMalidive"
+ },
+ "TC": {
+ "name": "Bizinga by’eTaaka ne Kayikosi"
+ },
+ "PH": {
+ "name": "Bizinga bya Firipino"
+ },
+ "CK": {
+ "name": "Bizinga bya Kkuki"
+ },
+ "MH": {
+ "name": "Bizinga bya Mariso"
+ },
+ "MP": {
+ "name": "Bizinga bya Mariyana eby’omumambuka"
+ },
+ "VI": {
+ "name": "Bizinga bya Virigini eby’Amerika"
+ },
+ "KY": {
+ "name": "Bizinga ebya Kayimaani"
+ },
+ "VG": {
+ "name": "Bizinga ebya Virigini ebitwalibwa Bungereza"
+ },
+ "BO": {
+ "name": "Boliviya"
+ },
+ "BW": {
+ "name": "Botiswana"
+ },
+ "BA": {
+ "name": "Boziniya Hezegovina"
+ },
+ "BE": {
+ "name": "Bubirigi"
+ },
+ "DE": {
+ "name": "Budaaki"
+ },
+ "FR": {
+ "name": "Bufalansa"
+ },
+ "GR": {
+ "name": "Bugereeki\/Buyonaani"
+ },
+ "BG": {
+ "name": "Bulugariya"
+ },
+ "GB": {
+ "name": "Bungereza"
+ },
+ "BR": {
+ "name": "Buraziiri"
+ },
+ "BF": {
+ "name": "Burukina Faso"
+ },
+ "BN": {
+ "name": "Burunayi"
+ },
+ "BI": {
+ "name": "Burundi"
+ },
+ "BT": {
+ "name": "Butaani"
+ },
+ "IN": {
+ "name": "Buyindi"
+ },
+ "TD": {
+ "name": "Caadi"
+ },
+ "IC": {
+ "name": "Canary Islands"
+ },
+ "BQ": {
+ "name": "Caribbean Netherlands"
+ },
+ "CN": {
+ "name": "Cayina"
+ },
+ "EA": {
+ "name": "Ceuta & Melilla"
+ },
+ "CX": {
+ "name": "Christmas Island"
+ },
+ "CL": {
+ "name": "Cile"
+ },
+ "CC": {
+ "name": "Cocos (Keeling) Islands"
+ },
+ "CU": {
+ "name": "Cuba"
+ },
+ "CW": {
+ "name": "Curaçao"
+ },
+ "DK": {
+ "name": "Denimaaka"
+ },
+ "DG": {
+ "name": "Diego Garcia"
+ },
+ "DM": {
+ "name": "Dominika"
+ },
+ "EC": {
+ "name": "Ekwado"
+ },
+ "SV": {
+ "name": "El salivado"
+ },
+ "AE": {
+ "name": "Emireeti"
+ },
+ "ER": {
+ "name": "Eritureya"
+ },
+ "EE": {
+ "name": "Esitoniya"
+ },
+ "ET": {
+ "name": "Esyopya"
+ },
+ "FO": {
+ "name": "Faroe Islands"
+ },
+ "FJ": {
+ "name": "Fiji"
+ },
+ "FI": {
+ "name": "Finilandi"
+ },
+ "TF": {
+ "name": "French Southern Territories"
+ },
+ "GA": {
+ "name": "Gaboni"
+ },
+ "GM": {
+ "name": "Gambya"
+ },
+ "GH": {
+ "name": "Gana"
+ },
+ "GY": {
+ "name": "Gayana"
+ },
+ "GQ": {
+ "name": "Gayana ey’oku ekweta"
+ },
+ "GI": {
+ "name": "Giburalita"
+ },
+ "GN": {
+ "name": "Gini"
+ },
+ "GW": {
+ "name": "Gini-Bisawu"
+ },
+ "GG": {
+ "name": "Guernsey"
+ },
+ "GD": {
+ "name": "Gurenada"
+ },
+ "GL": {
+ "name": "Gurenelandi"
+ },
+ "GF": {
+ "name": "Guyana enfalansa"
+ },
+ "GP": {
+ "name": "Gwadalupe"
+ },
+ "GU": {
+ "name": "Gwamu"
+ },
+ "GT": {
+ "name": "Gwatemala"
+ },
+ "GE": {
+ "name": "Gyogya"
+ },
+ "HU": {
+ "name": "Hangare"
+ },
+ "HT": {
+ "name": "Hayiti"
+ },
+ "NL": {
+ "name": "Holandi"
+ },
+ "HK": {
+ "name": "Hong Kong SAR China"
+ },
+ "HN": {
+ "name": "Hundurasi"
+ },
+ "IM": {
+ "name": "Isle of Man"
+ },
+ "JM": {
+ "name": "Jamayika"
+ },
+ "JP": {
+ "name": "Japani"
+ },
+ "JE": {
+ "name": "Jersey"
+ },
+ "DJ": {
+ "name": "Jjibuti"
+ },
+ "NC": {
+ "name": "Kaledonya mupya"
+ },
+ "KH": {
+ "name": "Kambodya"
+ },
+ "CM": {
+ "name": "Kameruuni"
+ },
+ "CA": {
+ "name": "Kanada"
+ },
+ "QA": {
+ "name": "Kataa"
+ },
+ "KZ": {
+ "name": "Kazakisitaani"
+ },
+ "KE": {
+ "name": "Kenya"
+ },
+ "KI": {
+ "name": "Kiribati"
+ },
+ "KG": {
+ "name": "Kirigizisitaani"
+ },
+ "NF": {
+ "name": "Kizinga ky’eNorofoko"
+ },
+ "CO": {
+ "name": "Kolombya"
+ },
+ "CG": {
+ "name": "Kongo"
+ },
+ "CD": {
+ "name": "Kongo - Zayire"
+ },
+ "KP": {
+ "name": "Koreya ey’omumambuka"
+ },
+ "KR": {
+ "name": "Koreya ey’omumaserengeta"
+ },
+ "CR": {
+ "name": "Kosita Rika"
+ },
+ "XK": {
+ "name": "Kosovo"
+ },
+ "CI": {
+ "name": "Kote Divwa"
+ },
+ "HR": {
+ "name": "Kurowesya"
+ },
+ "KW": {
+ "name": "Kuweti"
+ },
+ "RU": {
+ "name": "Lasa"
+ },
+ "LV": {
+ "name": "Lativya"
+ },
+ "LA": {
+ "name": "Lawosi"
+ },
+ "LB": {
+ "name": "Lebanoni"
+ },
+ "LS": {
+ "name": "Lesoso"
+ },
+ "RE": {
+ "name": "Leyunyoni"
+ },
+ "LR": {
+ "name": "Liberya"
+ },
+ "LY": {
+ "name": "Libya"
+ },
+ "LI": {
+ "name": "Licitensitayini"
+ },
+ "CF": {
+ "name": "Lipubulika eya Senturafiriki"
+ },
+ "CZ": {
+ "name": "Lipubulika ya Ceeka"
+ },
+ "DO": {
+ "name": "Lipubulika ya Dominika"
+ },
+ "LT": {
+ "name": "Lisuwenya"
+ },
+ "RO": {
+ "name": "Lomaniya"
+ },
+ "LU": {
+ "name": "Lukisembaaga"
+ },
+ "MO": {
+ "name": "Macau SAR China"
+ },
+ "MG": {
+ "name": "Madagasika"
+ },
+ "MW": {
+ "name": "Malawi"
+ },
+ "MY": {
+ "name": "Malezya"
+ },
+ "ML": {
+ "name": "Mali"
+ },
+ "MT": {
+ "name": "Malita"
+ },
+ "MQ": {
+ "name": "Maritiniiki"
+ },
+ "MK": {
+ "name": "Masedoniya"
+ },
+ "MU": {
+ "name": "Mawulisyasi"
+ },
+ "MR": {
+ "name": "Mawulitenya"
+ },
+ "YT": {
+ "name": "Mayotte"
+ },
+ "MX": {
+ "name": "Mekisiko"
+ },
+ "FM": {
+ "name": "Mikuronezya"
+ },
+ "EG": {
+ "name": "Misiri"
+ },
+ "MD": {
+ "name": "Molodova"
+ },
+ "MC": {
+ "name": "Monako"
+ },
+ "MN": {
+ "name": "Mongoliya"
+ },
+ "ME": {
+ "name": "Montenegro"
+ },
+ "MS": {
+ "name": "Monteseraati"
+ },
+ "MA": {
+ "name": "Moroko"
+ },
+ "MZ": {
+ "name": "Mozambiiki"
+ },
+ "MM": {
+ "name": "Myanima"
+ },
+ "NA": {
+ "name": "Namibiya"
+ },
+ "NR": {
+ "name": "Nawuru"
+ },
+ "NG": {
+ "name": "Nayijerya"
+ },
+ "NP": {
+ "name": "Nepalo"
+ },
+ "NE": {
+ "name": "Nije"
+ },
+ "NI": {
+ "name": "Nikaraguwa"
+ },
+ "NU": {
+ "name": "Niyuwe"
+ },
+ "NZ": {
+ "name": "Niyuziirandi"
+ },
+ "NO": {
+ "name": "Nowe"
+ },
+ "OM": {
+ "name": "Omaani"
+ },
+ "PK": {
+ "name": "Pakisitaani"
+ },
+ "PW": {
+ "name": "Palawu"
+ },
+ "PS": {
+ "name": "Palesitayini"
+ },
+ "PA": {
+ "name": "Panama"
+ },
+ "PG": {
+ "name": "Papwa Nyugini"
+ },
+ "PY": {
+ "name": "Paragwayi"
+ },
+ "PE": {
+ "name": "Peru"
+ },
+ "PN": {
+ "name": "Pitikeeni"
+ },
+ "PL": {
+ "name": "Polandi"
+ },
+ "PF": {
+ "name": "Polinesiya enfalansa"
+ },
+ "PR": {
+ "name": "Potoriko"
+ },
+ "PT": {
+ "name": "Potugaali"
+ },
+ "RW": {
+ "name": "Rwanda"
+ },
+ "WS": {
+ "name": "Samowa"
+ },
+ "AS": {
+ "name": "Samowa omumerika"
+ },
+ "SM": {
+ "name": "Sanimarino"
+ },
+ "ST": {
+ "name": "Sanitome ne Purincipe"
+ },
+ "SA": {
+ "name": "Sawudarebya - Buwarabu"
+ },
+ "ZA": {
+ "name": "Sawusafirika"
+ },
+ "SN": {
+ "name": "Senegaalo"
+ },
+ "SH": {
+ "name": "Senti Herena"
+ },
+ "KN": {
+ "name": "Senti Kitisi ne Nevisi"
+ },
+ "LC": {
+ "name": "Senti Luciya"
+ },
+ "PM": {
+ "name": "Senti Piyere ne Mikeloni"
+ },
+ "VC": {
+ "name": "Senti Vinsenti ne Gurendadiini"
+ },
+ "RS": {
+ "name": "Serbia"
+ },
+ "SC": {
+ "name": "Sesere"
+ },
+ "SG": {
+ "name": "Singapowa"
+ },
+ "SX": {
+ "name": "Sint Maarten"
+ },
+ "ES": {
+ "name": "Sipeyini"
+ },
+ "CY": {
+ "name": "Sipuriya"
+ },
+ "LK": {
+ "name": "Sirilanka"
+ },
+ "SY": {
+ "name": "Siriya"
+ },
+ "SK": {
+ "name": "Sirovakya"
+ },
+ "SI": {
+ "name": "Sirovenya"
+ },
+ "SL": {
+ "name": "Siyeralewone"
+ },
+ "SO": {
+ "name": "Somaliya"
+ },
+ "GS": {
+ "name": "South Georgia & South Sandwich Islands"
+ },
+ "SS": {
+ "name": "South Sudan"
+ },
+ "BL": {
+ "name": "St. Barthélemy"
+ },
+ "MF": {
+ "name": "St. Martin"
+ },
+ "SD": {
+ "name": "Sudaani"
+ },
+ "SR": {
+ "name": "Surinaamu"
+ },
+ "SJ": {
+ "name": "Svalbard & Jan Mayen"
+ },
+ "SZ": {
+ "name": "Swazirandi"
+ },
+ "SE": {
+ "name": "Swideni"
+ },
+ "CH": {
+ "name": "Switizirandi"
+ },
+ "TJ": {
+ "name": "Tajikisitaani"
+ },
+ "TM": {
+ "name": "Takimenesitaani"
+ },
+ "TZ": {
+ "name": "Tanzaniya"
+ },
+ "TH": {
+ "name": "Tayirandi"
+ },
+ "TW": {
+ "name": "Tayiwani"
+ },
+ "TL": {
+ "name": "Timowa"
+ },
+ "TG": {
+ "name": "Togo"
+ },
+ "TK": {
+ "name": "Tokelawu"
+ },
+ "TO": {
+ "name": "Tonga"
+ },
+ "TA": {
+ "name": "Tristan da Cunha"
+ },
+ "TR": {
+ "name": "Ttake"
+ },
+ "TN": {
+ "name": "Tunisya"
+ },
+ "TT": {
+ "name": "Turindaadi ne Tobago"
+ },
+ "TV": {
+ "name": "Tuvalu"
+ },
+ "UM": {
+ "name": "U.S. Outlying Islands"
+ },
+ "VU": {
+ "name": "Vanawuwatu"
+ },
+ "VA": {
+ "name": "Vatikaani"
+ },
+ "VE": {
+ "name": "Venzwera"
+ },
+ "VN": {
+ "name": "Vyetinaamu"
+ },
+ "WF": {
+ "name": "Walisi ne Futuna"
+ },
+ "EH": {
+ "name": "Western Sahara"
+ },
+ "UY": {
+ "name": "Wurugwayi"
+ },
+ "UZ": {
+ "name": "Wuzibekisitaani"
+ },
+ "YE": {
+ "name": "Yemeni"
+ },
+ "ID": {
+ "name": "Yindonezya"
+ },
+ "IQ": {
+ "name": "Yiraaka"
+ },
+ "IR": {
+ "name": "Yiraani"
+ },
+ "IL": {
+ "name": "Yisirayeri"
+ },
+ "IT": {
+ "name": "Yitale"
+ },
+ "JO": {
+ "name": "Yorodani"
+ },
+ "UG": {
+ "name": "Yuganda"
+ },
+ "UA": {
+ "name": "Yukurayine"
+ },
+ "ZM": {
+ "name": "Zambya"
+ },
+ "ZW": {
+ "name": "Zimbabwe"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/country/ln.json b/library/intl/resources/country/ln.json
new file mode 100644
index 000000000..4918e72a4
--- /dev/null
+++ b/library/intl/resources/country/ln.json
@@ -0,0 +1,761 @@
+{
+ "AF": {
+ "name": "Afiganisitá"
+ },
+ "ZA": {
+ "name": "Afríka ya Súdi"
+ },
+ "SA": {
+ "name": "Alabi SawuditÉ›"
+ },
+ "DE": {
+ "name": "Alemani"
+ },
+ "AL": {
+ "name": "Alibani"
+ },
+ "DZ": {
+ "name": "Alizɛri"
+ },
+ "US": {
+ "name": "Ameriki"
+ },
+ "AM": {
+ "name": "Amɛni"
+ },
+ "AD": {
+ "name": "AndorÉ›"
+ },
+ "GB": {
+ "name": "AngÉ›lÉ›tÉ›ÌlÉ›"
+ },
+ "AI": {
+ "name": "AngiyÉ›"
+ },
+ "AO": {
+ "name": "Angóla"
+ },
+ "AQ": {
+ "name": "Antarctique"
+ },
+ "AG": {
+ "name": "Antiga mpé Barbuda"
+ },
+ "AR": {
+ "name": "ArizantinÉ›"
+ },
+ "AW": {
+ "name": "Aruba"
+ },
+ "HT": {
+ "name": "Ayiti"
+ },
+ "AZ": {
+ "name": "Azɛlɛbaizá"
+ },
+ "BS": {
+ "name": "BahamasÉ›"
+ },
+ "BH": {
+ "name": "Bahrɛnɛ"
+ },
+ "BB": {
+ "name": "Barɛbadɛ"
+ },
+ "BE": {
+ "name": "Beleziki"
+ },
+ "BZ": {
+ "name": "BelizÉ›"
+ },
+ "BJ": {
+ "name": "BenÉ›"
+ },
+ "BD": {
+ "name": "Bengalidɛsi"
+ },
+ "BM": {
+ "name": "Bermuda"
+ },
+ "BG": {
+ "name": "Biligari"
+ },
+ "MM": {
+ "name": "Birmanie"
+ },
+ "IC": {
+ "name": "Bisanga bya Kanári"
+ },
+ "CV": {
+ "name": "Bisanga bya Kapevɛrɛ"
+ },
+ "KY": {
+ "name": "Bisanga bya Kayíma"
+ },
+ "CK": {
+ "name": "Bisanga bya KookÉ›"
+ },
+ "FK": {
+ "name": "Bisanga bya Maluni"
+ },
+ "MP": {
+ "name": "Bisanga bya MarianÉ› ya nÉ”Ìrdi"
+ },
+ "MH": {
+ "name": "Bisanga bya MarishalÉ›"
+ },
+ "TC": {
+ "name": "Bisanga bya Turki mpé Kaiko"
+ },
+ "VI": {
+ "name": "Bisanga bya Vierzi ya Ameriki"
+ },
+ "VG": {
+ "name": "Bisanga bya Vierzi ya AngÉ›lÉ›tÉ›ÌlÉ›"
+ },
+ "AX": {
+ "name": "Bisanga Æland"
+ },
+ "CC": {
+ "name": "Bisanga Kokos"
+ },
+ "SB": {
+ "name": "Bisanga SolomÉ”"
+ },
+ "FO": {
+ "name": "Bisanga ya Fɛróa"
+ },
+ "BO": {
+ "name": "Bolivi"
+ },
+ "BA": {
+ "name": "Bosini mpé Hezegovine"
+ },
+ "BW": {
+ "name": "Botswana"
+ },
+ "BR": {
+ "name": "Brezílɛ"
+ },
+ "BN": {
+ "name": "Brineyi"
+ },
+ "BF": {
+ "name": "Bukina Faso"
+ },
+ "BI": {
+ "name": "Burundi"
+ },
+ "BT": {
+ "name": "Butáni"
+ },
+ "BY": {
+ "name": "Byelorisi"
+ },
+ "BQ": {
+ "name": "Caribbean Netherlands"
+ },
+ "CW": {
+ "name": "Curaçao"
+ },
+ "DK": {
+ "name": "Danɛmarike"
+ },
+ "DG": {
+ "name": "Diego Garcia"
+ },
+ "DM": {
+ "name": "Domínike"
+ },
+ "DJ": {
+ "name": "Dzibuti"
+ },
+ "EC": {
+ "name": "EkwatÉ›ÌlÉ›"
+ },
+ "ER": {
+ "name": "ElitelÉ›"
+ },
+ "NF": {
+ "name": "Esanga NorfokÉ›"
+ },
+ "IM": {
+ "name": "Esanga ya Man"
+ },
+ "CX": {
+ "name": "Esenga ya Mbótama"
+ },
+ "AC": {
+ "name": "Esenga ya Mbuta o likoló"
+ },
+ "ES": {
+ "name": "Esipanye"
+ },
+ "EE": {
+ "name": "Esitoni"
+ },
+ "ET": {
+ "name": "Etsíopi"
+ },
+ "EG": {
+ "name": "Ezípite"
+ },
+ "FR": {
+ "name": "Falánsɛ"
+ },
+ "FJ": {
+ "name": "Fidzi"
+ },
+ "FI": {
+ "name": "FilandÉ›"
+ },
+ "PH": {
+ "name": "FilipinÉ›"
+ },
+ "GA": {
+ "name": "GabÉ”"
+ },
+ "GM": {
+ "name": "Gambi"
+ },
+ "GH": {
+ "name": "Gana"
+ },
+ "GR": {
+ "name": "Geleki"
+ },
+ "GD": {
+ "name": "GelenadÉ›"
+ },
+ "GN": {
+ "name": "GinÉ›"
+ },
+ "GW": {
+ "name": "Ginɛbisau"
+ },
+ "GQ": {
+ "name": "GinÉ›ÌkwatÉ›ÌlÉ›"
+ },
+ "GY": {
+ "name": "Giyane"
+ },
+ "GF": {
+ "name": "Giyanɛ ya Falánsɛ"
+ },
+ "GL": {
+ "name": "Gowelande"
+ },
+ "GG": {
+ "name": "Guernesey"
+ },
+ "GP": {
+ "name": "Gwadɛlupɛ"
+ },
+ "GU": {
+ "name": "GwamÉ›"
+ },
+ "GT": {
+ "name": "Gwatémala"
+ },
+ "HK": {
+ "name": "Hong Kong SAR China"
+ },
+ "UA": {
+ "name": "Ikrɛni"
+ },
+ "GS": {
+ "name": "Îles de Géorgie du Sud et Sandwich du Sud"
+ },
+ "IN": {
+ "name": "ÃndÉ›"
+ },
+ "ID": {
+ "name": "Indonezi"
+ },
+ "IR": {
+ "name": "Irâ"
+ },
+ "IQ": {
+ "name": "Iraki"
+ },
+ "IE": {
+ "name": "IrelandÉ›"
+ },
+ "UY": {
+ "name": "Irigwei"
+ },
+ "IS": {
+ "name": "IsilandÉ›"
+ },
+ "IL": {
+ "name": "IsirayelÉ›"
+ },
+ "IT": {
+ "name": "Itali"
+ },
+ "JE": {
+ "name": "Jersey"
+ },
+ "NC": {
+ "name": "Kaledoni ya sika"
+ },
+ "KH": {
+ "name": "Kambodza"
+ },
+ "CM": {
+ "name": "Kamɛrune"
+ },
+ "CA": {
+ "name": "Kanada"
+ },
+ "QA": {
+ "name": "Katari"
+ },
+ "KZ": {
+ "name": "Kazakisitá"
+ },
+ "KE": {
+ "name": "Kenya"
+ },
+ "CU": {
+ "name": "Kiba"
+ },
+ "KG": {
+ "name": "Kigizisitá"
+ },
+ "KI": {
+ "name": "Kiribati"
+ },
+ "CO": {
+ "name": "Kolombi"
+ },
+ "KM": {
+ "name": "KomorÉ›"
+ },
+ "CG": {
+ "name": "Kongo"
+ },
+ "KP": {
+ "name": "KorÉ› ya nÉ”Ìrdi"
+ },
+ "KR": {
+ "name": "Korɛ ya súdi"
+ },
+ "CR": {
+ "name": "Kositarika"
+ },
+ "XK": {
+ "name": "Kosovo"
+ },
+ "CI": {
+ "name": "Kotídivualɛ"
+ },
+ "KW": {
+ "name": "Koweti"
+ },
+ "HR": {
+ "name": "Krowasi"
+ },
+ "LA": {
+ "name": "Lawosi"
+ },
+ "RE": {
+ "name": "Lenyo"
+ },
+ "LS": {
+ "name": "Lesoto"
+ },
+ "LV": {
+ "name": "Letoni"
+ },
+ "AE": {
+ "name": "Lɛmila alabo"
+ },
+ "LB": {
+ "name": "Libá"
+ },
+ "LR": {
+ "name": "Libériya"
+ },
+ "LY": {
+ "name": "Libí"
+ },
+ "LU": {
+ "name": "Likisambulu"
+ },
+ "LI": {
+ "name": "Lishɛteni"
+ },
+ "LT": {
+ "name": "Litwani"
+ },
+ "IO": {
+ "name": "Mabelé ya AngÉ›lÉ›tÉ›ÌlÉ› na mbú ya Indiya"
+ },
+ "MO": {
+ "name": "Macau SAR China"
+ },
+ "MG": {
+ "name": "Madagasikari"
+ },
+ "MV": {
+ "name": "Madívɛ"
+ },
+ "MW": {
+ "name": "Malawi"
+ },
+ "MY": {
+ "name": "Malezi"
+ },
+ "ML": {
+ "name": "Malí"
+ },
+ "MT": {
+ "name": "MalitÉ›"
+ },
+ "MA": {
+ "name": "MarokÉ›"
+ },
+ "MQ": {
+ "name": "Martiniki"
+ },
+ "MK": {
+ "name": "MasedwanÉ›"
+ },
+ "YT": {
+ "name": "MayotÉ›"
+ },
+ "MX": {
+ "name": "Meksike"
+ },
+ "FM": {
+ "name": "Mikronezi"
+ },
+ "MD": {
+ "name": "Molidavi"
+ },
+ "MC": {
+ "name": "Monako"
+ },
+ "MN": {
+ "name": "Mongolí"
+ },
+ "ME": {
+ "name": "Monténégro"
+ },
+ "MU": {
+ "name": "MorisÉ›"
+ },
+ "MR": {
+ "name": "Moritani"
+ },
+ "MS": {
+ "name": "Mɔsera"
+ },
+ "MZ": {
+ "name": "Mozambíki"
+ },
+ "NA": {
+ "name": "Namibi"
+ },
+ "NR": {
+ "name": "Nauru"
+ },
+ "NP": {
+ "name": "Nepálɛ"
+ },
+ "NI": {
+ "name": "Nikaragwa"
+ },
+ "NG": {
+ "name": "Nizerya"
+ },
+ "NE": {
+ "name": "Nizɛrɛ"
+ },
+ "NO": {
+ "name": "NorivezÉ›"
+ },
+ "NU": {
+ "name": "Nyué"
+ },
+ "NL": {
+ "name": "OlandÉ›"
+ },
+ "OM": {
+ "name": "Ománɛ"
+ },
+ "HN": {
+ "name": "OndurasÉ›"
+ },
+ "HU": {
+ "name": "Ongili"
+ },
+ "AU": {
+ "name": "Ositáli"
+ },
+ "AT": {
+ "name": "Otilisi"
+ },
+ "PK": {
+ "name": "Pakisitá"
+ },
+ "PY": {
+ "name": "Palagwei"
+ },
+ "PW": {
+ "name": "Palau"
+ },
+ "PS": {
+ "name": "Palɛsine"
+ },
+ "PA": {
+ "name": "Panama"
+ },
+ "PG": {
+ "name": "Papwazi GinÉ› ya sika"
+ },
+ "PE": {
+ "name": "Péru"
+ },
+ "PN": {
+ "name": "Pikairni"
+ },
+ "PF": {
+ "name": "Polinezi ya Falánsɛ"
+ },
+ "PL": {
+ "name": "Poloni"
+ },
+ "PR": {
+ "name": "Pɔtoriko"
+ },
+ "PT": {
+ "name": "Putúlugɛsi"
+ },
+ "CD": {
+ "name": "Repibiki demokratiki ya Kongó"
+ },
+ "CZ": {
+ "name": "Repibiki TsekÉ›"
+ },
+ "CF": {
+ "name": "Repibiki ya Afríka ya Káti"
+ },
+ "DO": {
+ "name": "Repibiki ya Domínikɛ"
+ },
+ "RU": {
+ "name": "Risí"
+ },
+ "RO": {
+ "name": "Romani"
+ },
+ "RW": {
+ "name": "Rwanda"
+ },
+ "EH": {
+ "name": "Sahara ya LimbÉ›"
+ },
+ "WS": {
+ "name": "Samoa"
+ },
+ "AS": {
+ "name": "Samoa ya Ameriki"
+ },
+ "SH": {
+ "name": "Sántu eleni"
+ },
+ "KN": {
+ "name": "Sántu krístofe mpé Nevɛ̀s"
+ },
+ "LC": {
+ "name": "Sántu lisi"
+ },
+ "SM": {
+ "name": "Sántu Marinɛ"
+ },
+ "PM": {
+ "name": "Sántu pététo mpé Mikelɔ"
+ },
+ "VC": {
+ "name": "Sántu vesá mpé Gelenadinɛ"
+ },
+ "ST": {
+ "name": "Sao Tomé mpé Presipɛ"
+ },
+ "SV": {
+ "name": "Savadɔrɛ"
+ },
+ "SN": {
+ "name": "SenegalÉ›"
+ },
+ "RS": {
+ "name": "Serbie"
+ },
+ "SC": {
+ "name": "Sɛshɛlɛ"
+ },
+ "SL": {
+ "name": "Siera LeonÉ›"
+ },
+ "CL": {
+ "name": "Síli"
+ },
+ "SK": {
+ "name": "Silovaki"
+ },
+ "SI": {
+ "name": "Siloveni"
+ },
+ "CN": {
+ "name": "SinÉ›"
+ },
+ "SG": {
+ "name": "SingapurÉ›"
+ },
+ "SX": {
+ "name": "Sint Maarten"
+ },
+ "CY": {
+ "name": "Sípɛlɛ"
+ },
+ "SY": {
+ "name": "Sirí"
+ },
+ "LK": {
+ "name": "Sirilanka"
+ },
+ "SO": {
+ "name": "Somali"
+ },
+ "BL": {
+ "name": "St. Barthélemy"
+ },
+ "MF": {
+ "name": "St. Martin"
+ },
+ "SD": {
+ "name": "Sudá"
+ },
+ "SS": {
+ "name": "Sudani ya Sidi"
+ },
+ "SR": {
+ "name": "SurinamÉ›"
+ },
+ "SJ": {
+ "name": "Svalbard mpé Jan Mayen"
+ },
+ "SZ": {
+ "name": "Swazilandi"
+ },
+ "SE": {
+ "name": "Swédɛ"
+ },
+ "CH": {
+ "name": "SwisÉ›"
+ },
+ "TH": {
+ "name": "TailandÉ›"
+ },
+ "TW": {
+ "name": "Taiwanin"
+ },
+ "TZ": {
+ "name": "Tanzani"
+ },
+ "TJ": {
+ "name": "Tazikisitá"
+ },
+ "TF": {
+ "name": "Terres australes et antarctiques françaises"
+ },
+ "TM": {
+ "name": "Tikɛménisitá"
+ },
+ "TR": {
+ "name": "Tiliki"
+ },
+ "TL": {
+ "name": "Timorɛ ya Moniɛlɛ"
+ },
+ "TT": {
+ "name": "Tinidadɛ mpé Tobago"
+ },
+ "TN": {
+ "name": "Tinizi"
+ },
+ "TG": {
+ "name": "Togo"
+ },
+ "TK": {
+ "name": "Tokelau"
+ },
+ "TO": {
+ "name": "Tonga"
+ },
+ "TA": {
+ "name": "Tristan da Cunha"
+ },
+ "TD": {
+ "name": "Tsádi"
+ },
+ "TV": {
+ "name": "Tuvalu"
+ },
+ "UM": {
+ "name": "U.S. Outlying Islands"
+ },
+ "UG": {
+ "name": "Uganda"
+ },
+ "UZ": {
+ "name": "Uzibɛkisitá"
+ },
+ "VU": {
+ "name": "Vanuatu"
+ },
+ "VA": {
+ "name": "Vatiká"
+ },
+ "VE": {
+ "name": "Venézuela"
+ },
+ "VN": {
+ "name": "ViyetinamÉ›"
+ },
+ "WF": {
+ "name": "Walisɛ mpé Futuna"
+ },
+ "YE": {
+ "name": "Yemɛnɛ"
+ },
+ "JM": {
+ "name": "Zamaiki"
+ },
+ "ZM": {
+ "name": "Zambi"
+ },
+ "JP": {
+ "name": "ZapÉ”"
+ },
+ "NZ": {
+ "name": "ZelandÉ› ya sika"
+ },
+ "EA": {
+ "name": "Zewta mpé Melílla"
+ },
+ "GI": {
+ "name": "ZibatalÉ›"
+ },
+ "ZW": {
+ "name": "Zimbabwe"
+ },
+ "JO": {
+ "name": "Zɔdani"
+ },
+ "GE": {
+ "name": "Zorzi"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/country/lo.json b/library/intl/resources/country/lo.json
new file mode 100644
index 000000000..e0dc93bb9
--- /dev/null
+++ b/library/intl/resources/country/lo.json
@@ -0,0 +1,761 @@
+{
+ "GR": {
+ "name": "àºàº£àºµàºŠ"
+ },
+ "GL": {
+ "name": "àºàº£àºµàº™à»àº¥àº™"
+ },
+ "GU": {
+ "name": "àºàº§àº¡"
+ },
+ "GY": {
+ "name": "àºàº²àºàº¢àº²àº™àº²"
+ },
+ "QA": {
+ "name": "àºàº²àº•àº²"
+ },
+ "GH": {
+ "name": "àºàº²àº™àº²"
+ },
+ "GA": {
+ "name": "àºàº²àºšàº­àº™"
+ },
+ "KH": {
+ "name": "àºàº³àº›àº¹à»€àºˆàº"
+ },
+ "GN": {
+ "name": "àºàº´àº™àºµ"
+ },
+ "GW": {
+ "name": "àºàº´àº™àºµ-ບິສເຊົາ"
+ },
+ "GP": {
+ "name": "àºàº»àº§àº”າລູບ"
+ },
+ "GT": {
+ "name": "àºàº»àº§à»€àº—ມາລາ"
+ },
+ "GD": {
+ "name": "ເàºàº£à»€àº™àº”າ"
+ },
+ "CX": {
+ "name": "ເàºàº²àº°àº„ຣິສມາດ"
+ },
+ "NF": {
+ "name": "ເàºàº²àº°àº™à»à»‚ຟàº"
+ },
+ "AC": {
+ "name": "ເàºàº²àº°àº­àº²à»€àºŠàº™àºŠàº±àº™"
+ },
+ "GG": {
+ "name": "ເàºàºµàº™àºŠàºµ"
+ },
+ "KR": {
+ "name": "ເàºàº»àº²àº«àº¥àºµà»ƒàº•à»‰"
+ },
+ "KP": {
+ "name": "ເàºàº»àº²àº«àº¥àºµà»€à»œàº·àº­"
+ },
+ "TF": {
+ "name": "ເຂດà»àº”ນທາງໃຕ້ຂອàºàº®àº±à»ˆàº‡"
+ },
+ "IO": {
+ "name": "ເຂດà»àº”ນບຣິທິສອິນດຽນໂອຊຽນ"
+ },
+ "CD": {
+ "name": "ຄອງໂຠ- ຄິນຊາຊາ"
+ },
+ "CG": {
+ "name": "ຄອງໂຠ- ບຣາຊາວິວ"
+ },
+ "KZ": {
+ "name": "ຄາຊັàºàºªàº°àº–ານ"
+ },
+ "CM": {
+ "name": "ຄາເມຣູນ"
+ },
+ "BQ": {
+ "name": "ຄາຣິບບຽນ ເນເທີà»àº¥àº™"
+ },
+ "KI": {
+ "name": "ຄິຣິບາທິ"
+ },
+ "CU": {
+ "name": "ຄິວບາ"
+ },
+ "KG": {
+ "name": "ຄີàºàº´àºªàº–ານ"
+ },
+ "CW": {
+ "name": "ຄູຣາຊາວ"
+ },
+ "KW": {
+ "name": "ຄູເວດ"
+ },
+ "KE": {
+ "name": "ເຄນຢາ"
+ },
+ "CV": {
+ "name": "ເຄບ ເວີດ"
+ },
+ "KY": {
+ "name": "ເຄà»àº¡àº™ ໄອà»àº¥àº™"
+ },
+ "CA": {
+ "name": "à»àº„ນາດາ"
+ },
+ "CR": {
+ "name": "ໂຄສຕາ ຣິàºàº²"
+ },
+ "XK": {
+ "name": "ໂຄໂຊໂວ"
+ },
+ "CI": {
+ "name": "ໂຄຕີ ວົວ"
+ },
+ "KM": {
+ "name": "ໂຄໂມໂຣສ"
+ },
+ "HR": {
+ "name": "ໂຄຣເອເທàº"
+ },
+ "CO": {
+ "name": "ໂຄລົມເບàº"
+ },
+ "GE": {
+ "name": "ຈà»à»€àºˆàº"
+ },
+ "JO": {
+ "name": "ຈà»à»àº”ນ"
+ },
+ "JM": {
+ "name": "ຈາໄມຄາ"
+ },
+ "GI": {
+ "name": "ຈິບບຣອນທາ"
+ },
+ "DJ": {
+ "name": "ຈິບູຕິ"
+ },
+ "CN": {
+ "name": "ຈີນ"
+ },
+ "JE": {
+ "name": "ເຈີຊີ"
+ },
+ "ES": {
+ "name": "ສະເປນ"
+ },
+ "SK": {
+ "name": "ສະໂລວາເàºàº"
+ },
+ "SI": {
+ "name": "ສະໂລເວເນàº"
+ },
+ "SZ": {
+ "name": "ສະວາຊິà»àº¥àº™"
+ },
+ "SJ": {
+ "name": "ສະວາບາ à»àº¥àº° à»àº¢àº™ ມາເຢນ"
+ },
+ "CH": {
+ "name": "ສະວິດເຊີà»àº¥àº™"
+ },
+ "SE": {
+ "name": "ສະວີເດັນ"
+ },
+ "US": {
+ "name": "ສະຫະລັດ"
+ },
+ "AE": {
+ "name": "ສະຫະລັດອາຣັບເອມິເຣດ"
+ },
+ "GB": {
+ "name": "ສະຫະລາດຊະອະນາຈັàº"
+ },
+ "DO": {
+ "name": "ສາທາລະນະລັດ ໂດມິນິàºàº±àº™"
+ },
+ "GM": {
+ "name": "ສາທາລະນະລັດà»àºàº¡à»€àºšàº"
+ },
+ "CZ": {
+ "name": "ສາທາລະນະລັດເຊàº"
+ },
+ "CF": {
+ "name": "ສາທາລະນະລັດອາຟຣິàºàº²àºàº²àº‡"
+ },
+ "SG": {
+ "name": "ສິງàºàº°à»‚ປ"
+ },
+ "LK": {
+ "name": "ສີລັງàºàº²"
+ },
+ "TD": {
+ "name": "ຊາດ"
+ },
+ "WS": {
+ "name": "ຊາມົວ"
+ },
+ "SA": {
+ "name": "ຊາອຸດິ ອາຣາເບàº"
+ },
+ "EH": {
+ "name": "ຊາຮາຣາຕາເວັນຕົàº"
+ },
+ "SX": {
+ "name": "ຊິນ ມາເທັນ"
+ },
+ "ZW": {
+ "name": "ຊິມບັບເວ"
+ },
+ "CL": {
+ "name": "ຊິລີ"
+ },
+ "SY": {
+ "name": "ຊີເຣàº"
+ },
+ "SD": {
+ "name": "ຊູດານ"
+ },
+ "SS": {
+ "name": "ຊູດານໃຕ້"
+ },
+ "SR": {
+ "name": "ຊູຣິນາມ"
+ },
+ "SC": {
+ "name": "ເຊເຊວເລສ"
+ },
+ "SL": {
+ "name": "ເຊàºàº£àº² ລີໂອນ"
+ },
+ "KN": {
+ "name": "ເຊນ ຄິດ à»àº¥àº° ເນວິສ"
+ },
+ "BL": {
+ "name": "ເຊນ ບາເທເລມີ"
+ },
+ "PM": {
+ "name": "ເຊນ ປີà»àº­ ມິເàºàº§àº¥àº­àº™"
+ },
+ "MF": {
+ "name": "ເຊນ ມາທິນ"
+ },
+ "LC": {
+ "name": "ເຊນ ລູເຊàº"
+ },
+ "VC": {
+ "name": "ເຊນ ວິນເຊນ & ເàºàº£à»€àº™àº”ິນ"
+ },
+ "SH": {
+ "name": "ເຊນ ເຮເລນາ"
+ },
+ "SN": {
+ "name": "ເຊນີໂàºàº¥"
+ },
+ "EA": {
+ "name": "ເຊວຕາ à»àº¥àº°à»€àº¡àº¥àº´àº™àº¥àº²"
+ },
+ "RS": {
+ "name": "ເຊີເບàº"
+ },
+ "ST": {
+ "name": "ເຊົາທູເມ à»àº¥àº° ພຣິນຊິບ"
+ },
+ "SM": {
+ "name": "à»àºŠàº™ ມາຣິໂນ"
+ },
+ "ZM": {
+ "name": "à»àºŠàº¡à»€àºšàº"
+ },
+ "SO": {
+ "name": "ໂຊມາເລàº"
+ },
+ "CY": {
+ "name": "ໄຊປຣັສ"
+ },
+ "JP": {
+ "name": "àºàºµà»ˆàº›àº¸à»ˆàº™"
+ },
+ "PS": {
+ "name": "ດິນà»àº”ນ ປາເລສຕິນຽນ"
+ },
+ "DG": {
+ "name": "ດິເອໂຠàºàº²à»€àºŠàº"
+ },
+ "DK": {
+ "name": "ເດນມາàº"
+ },
+ "DM": {
+ "name": "ໂດມີນິຄາ"
+ },
+ "TN": {
+ "name": "ຕູນິເຊàº"
+ },
+ "TV": {
+ "name": "ຕູວາລູ"
+ },
+ "TK": {
+ "name": "ໂຕເàºà»€àº¥àº»àº²"
+ },
+ "TG": {
+ "name": "ໂຕໂàº"
+ },
+ "TW": {
+ "name": "ໄຕ້ຫວັນ"
+ },
+ "TA": {
+ "name": "ທຣິສຕັນ ດາ àºàº±àº™àº®àº²"
+ },
+ "TT": {
+ "name": "ທຣິນິà»àº”ດ à»àº¥àº° ໂທà»àºšà»‚àº"
+ },
+ "TO": {
+ "name": "ທອງàºàº²"
+ },
+ "TJ": {
+ "name": "ທາຈິàºàº´àºªàº–ານ"
+ },
+ "TZ": {
+ "name": "ທານຊາເນàº"
+ },
+ "TL": {
+ "name": "ທິມà»-ເລສເຕ"
+ },
+ "TM": {
+ "name": "ເທີàºà»€àº¡àº™àº´àºªàº–ານ"
+ },
+ "TR": {
+ "name": "ເທີຄີ"
+ },
+ "TH": {
+ "name": "ໄທ"
+ },
+ "NO": {
+ "name": "ນà»à»€àº§"
+ },
+ "VA": {
+ "name": "ນະຄອນ ວາຕິàºàº±àº™"
+ },
+ "NA": {
+ "name": "ນາມີເບàº"
+ },
+ "NR": {
+ "name": "ນາອູຣູ"
+ },
+ "NI": {
+ "name": "ນິàºàº„າຣາàºàº»àº§"
+ },
+ "NE": {
+ "name": "ນິເຈີ"
+ },
+ "NC": {
+ "name": "ນິວ ຄາເລໂດເນàº"
+ },
+ "NZ": {
+ "name": "ນິວຊີà»àº¥àº™"
+ },
+ "NU": {
+ "name": "ນີອູເອ"
+ },
+ "NL": {
+ "name": "ເນເທີà»àº¥àº™"
+ },
+ "NP": {
+ "name": "ເນປານ"
+ },
+ "NG": {
+ "name": "ໄນຈີເຣàº"
+ },
+ "BR": {
+ "name": "ບຣາຊິວ"
+ },
+ "BN": {
+ "name": "ບຣູໄນ"
+ },
+ "BA": {
+ "name": "ບອດສະເນຠà»àº¥àº° à»àº®àºªà»‚àºàº§àºµàº™àº²"
+ },
+ "BW": {
+ "name": "ບອດສະວານາ"
+ },
+ "BD": {
+ "name": "ບັງàºàº°àº¥àº²à»€àº—ດ"
+ },
+ "BG": {
+ "name": "ບັງàºàº²à»€àº£àº"
+ },
+ "BB": {
+ "name": "ບາບາໂດສ"
+ },
+ "BH": {
+ "name": "ບາເຣນ"
+ },
+ "BS": {
+ "name": "ບາຮາມາສ"
+ },
+ "BI": {
+ "name": "ບູຣຸນດິ"
+ },
+ "BJ": {
+ "name": "ເບນິນ"
+ },
+ "BZ": {
+ "name": "ເບລີຊ"
+ },
+ "BY": {
+ "name": "ເບວບາຣຸສ"
+ },
+ "BE": {
+ "name": "ເບວຢຽມ"
+ },
+ "BF": {
+ "name": "ເບີàºàº´àº™àº² ຟາໂຊ"
+ },
+ "BM": {
+ "name": "ເບີມິວດາ"
+ },
+ "BO": {
+ "name": "ໂບລິເວàº"
+ },
+ "PK": {
+ "name": "ປາàºàº´àºªàº–ານ"
+ },
+ "PG": {
+ "name": "ປາປົວນິວàºàºµàº™àºµ"
+ },
+ "PW": {
+ "name": "ປາເລົາ"
+ },
+ "PE": {
+ "name": "ເປຣູ"
+ },
+ "PL": {
+ "name": "ໂປà»àº¥àº™"
+ },
+ "FR": {
+ "name": "àºàº£àº±à»ˆàº‡"
+ },
+ "PT": {
+ "name": "ພອລທູໂàº"
+ },
+ "PA": {
+ "name": "ພານາມາ"
+ },
+ "PY": {
+ "name": "ພາຣາàºàº§àº"
+ },
+ "BT": {
+ "name": "ພູຖານ"
+ },
+ "PR": {
+ "name": "ເພືອໂຕ ຣິໂàº"
+ },
+ "FJ": {
+ "name": "ຟິຈິ"
+ },
+ "FI": {
+ "name": "ຟິນà»àº¥àº™"
+ },
+ "PH": {
+ "name": "ຟິລິບປິນ"
+ },
+ "GF": {
+ "name": "ເຟຣນຊ໌ àºàº¸àºàº­àº²àº™àº²"
+ },
+ "PF": {
+ "name": "ເຟຣນຊ໌ ໂພລີນີເຊàº"
+ },
+ "MN": {
+ "name": "ມອງໂàºà»€àº¥àº"
+ },
+ "MS": {
+ "name": "ມອນເຊີຣາດ"
+ },
+ "ME": {
+ "name": "ມອນເຕເນໂàºàº£"
+ },
+ "MT": {
+ "name": "ມອນທາ"
+ },
+ "MV": {
+ "name": "ມັນດິຟ"
+ },
+ "MO": {
+ "name": "ມາເàºàº»à»‰àº² ເຂດປົàºàº„ອງພິເສດ ຈີນ"
+ },
+ "MG": {
+ "name": "ມາດາàºàº²àºªàºàº²"
+ },
+ "MQ": {
+ "name": "ມາຕິນີàº"
+ },
+ "YT": {
+ "name": "ມາຢັອດ"
+ },
+ "MW": {
+ "name": "ມາລາວີ"
+ },
+ "ML": {
+ "name": "ມາລິ"
+ },
+ "MY": {
+ "name": "ມາເລເຊàº"
+ },
+ "MU": {
+ "name": "ມົວຣິຊຽສ"
+ },
+ "MR": {
+ "name": "ມົວຣິເທເນàº"
+ },
+ "MM": {
+ "name": "ມຽນມາ (ເບີມາ)"
+ },
+ "MX": {
+ "name": "ເມັàºàºŠàº´à»‚àº"
+ },
+ "MK": {
+ "name": "à»àº¡àºŠàº´à»‚ດເນàº"
+ },
+ "MZ": {
+ "name": "ໂມà»àºŠàº¡àºšàº´àº"
+ },
+ "MD": {
+ "name": "ໂມນໂດວາ"
+ },
+ "MC": {
+ "name": "ໂມນາໂຄ"
+ },
+ "MA": {
+ "name": "ໂມຣັອàºà»‚ຄ"
+ },
+ "FM": {
+ "name": "ໄມໂຄຣນີເຊàº"
+ },
+ "UA": {
+ "name": "ຢູເຄຣນ"
+ },
+ "DE": {
+ "name": "ເຢàºàº¥àº°àº¡àº±àº™"
+ },
+ "YE": {
+ "name": "ເຢເມນ"
+ },
+ "RW": {
+ "name": "ຣວັນດາ"
+ },
+ "RU": {
+ "name": "ຣັດເຊàº"
+ },
+ "RE": {
+ "name": "ເຣອູນິàºàº»àº‡"
+ },
+ "RO": {
+ "name": "ໂຣà»àº¡à»€àº™àº"
+ },
+ "LV": {
+ "name": "ລັດເວàº"
+ },
+ "LA": {
+ "name": "ລາວ"
+ },
+ "LI": {
+ "name": "ລິດເທນສະຕາàº"
+ },
+ "LT": {
+ "name": "ລິທົວເນàº"
+ },
+ "LY": {
+ "name": "ລິເບàº"
+ },
+ "LR": {
+ "name": "ລິເບີເຣàº"
+ },
+ "LU": {
+ "name": "ລຸàºà»àºŠàº¡à»€àºšàºµàº"
+ },
+ "LS": {
+ "name": "ເລໂຊໂທ"
+ },
+ "LB": {
+ "name": "ເລບານອນ"
+ },
+ "VU": {
+ "name": "ວານົວຕູ"
+ },
+ "WF": {
+ "name": "ວາລິສ à»àº¥àº° ຟຸຕູນາ"
+ },
+ "VE": {
+ "name": "ເວເນຊູເອລາ"
+ },
+ "TC": {
+ "name": "à»àº¹à»ˆà»€àºàº²àº° ເທີຠà»àº¥àº° ໄຄໂຄສ"
+ },
+ "VG": {
+ "name": "à»àº¹à»ˆà»€àºàº²àº° ບຣິທິຊ ເວີຈິນ"
+ },
+ "VI": {
+ "name": "à»àº¹à»ˆà»€àºàº²àº° ຢູເອສ ເວີຈິນ"
+ },
+ "CC": {
+ "name": "ຫມູ່ເàºàº²àº°à»‚àºà»‚àºàºª"
+ },
+ "IC": {
+ "name": "à»àº¹à»ˆà»€àºàº²àº°àº„ານາຣີ"
+ },
+ "CK": {
+ "name": "à»àº¹à»ˆà»€àºàº²àº°àº„ຸàº"
+ },
+ "GS": {
+ "name": "à»àº¹à»ˆà»€àºàº²àº°àºˆà»à»€àºˆàº & ເຊົາ à»àºŠàº™àº§àº´àº”"
+ },
+ "SB": {
+ "name": "ຫມູ່ເàºàº²àº°à»‚ຊໂລມອນ"
+ },
+ "PN": {
+ "name": "à»àº¹à»ˆà»€àºàº²àº°àºžàº´àº”à»àº„ນ"
+ },
+ "FK": {
+ "name": "ຫມູ່ເàºàº²àº°àºŸàº­àºà»àº¥àº™"
+ },
+ "FO": {
+ "name": "ຫມູ່ເàºàº²àº°à»àºŸà»‚ຣ"
+ },
+ "MH": {
+ "name": "ຫມູ່ເàºàº²àº°àº¡àº²à»àºŠàº§"
+ },
+ "MP": {
+ "name": "ຫມູ່ເàºàº²àº°àº¡àº²à»àºŠàº§àº•àº­àº™à»€àº«àº™àº·àº­"
+ },
+ "AX": {
+ "name": "ຫມູ່ເàºàº²àº°à»‚ອລັນ"
+ },
+ "UM": {
+ "name": "à»àº¹à»ˆà»€àºàº²àº°àº®àº­àºšàº™àº­àºàº‚ອງສະຫະລັດຯ"
+ },
+ "VN": {
+ "name": "ຫວຽດນາມ"
+ },
+ "AW": {
+ "name": "ອà»àº£àº¹àºšàº²"
+ },
+ "AU": {
+ "name": "ອອສເຕຣເລàº"
+ },
+ "AT": {
+ "name": "ອອສເທຣàº"
+ },
+ "AO": {
+ "name": "ອັນໂàºàº¥àº²"
+ },
+ "AD": {
+ "name": "ອັນດà»àº£àº²"
+ },
+ "DZ": {
+ "name": "ອັລຈິເຣàº"
+ },
+ "AR": {
+ "name": "ອາເຈນທິນາ"
+ },
+ "AZ": {
+ "name": "ອາເຊີໄບຈານ"
+ },
+ "AG": {
+ "name": "ອາທິàºàº»àº§ ບາບູດາ"
+ },
+ "AF": {
+ "name": "ອາຟàºàº²àº™àº´àºªàº–ານ"
+ },
+ "ZA": {
+ "name": "ອາຟະລິàºàº²à»ƒàº•à»‰"
+ },
+ "AM": {
+ "name": "ອາເມເນàº"
+ },
+ "AS": {
+ "name": "ອາເມຣິàºàº² ຊາມົວ"
+ },
+ "IL": {
+ "name": "ອິສຣາເອວ"
+ },
+ "IT": {
+ "name": "ອິຕາລີ"
+ },
+ "IN": {
+ "name": "ອິນເດàº"
+ },
+ "ID": {
+ "name": "ອິນໂດເນເຊàº"
+ },
+ "GQ": {
+ "name": "ອີຄົວໂຕຣຽວ àºàºµàº™àºµ"
+ },
+ "ET": {
+ "name": "ອີທິໂອເປàº"
+ },
+ "EG": {
+ "name": "ອີຢິບ"
+ },
+ "IQ": {
+ "name": "ອີຣັàº"
+ },
+ "IR": {
+ "name": "ອີຣ່ານ"
+ },
+ "UZ": {
+ "name": "ອຸສເບàºàº´àºªàº–ານ"
+ },
+ "UG": {
+ "name": "ອູàºàº²àº™àº”າ"
+ },
+ "UY": {
+ "name": "ອູຣຸàºàº§àº"
+ },
+ "EC": {
+ "name": "ເອàºàºàº§àº²àº”à»"
+ },
+ "EE": {
+ "name": "ເອສໂຕເນàº"
+ },
+ "ER": {
+ "name": "ເອຣິເທຣàº"
+ },
+ "SV": {
+ "name": "ເອວ ຊà»àº§àº²àº”à»"
+ },
+ "IM": {
+ "name": "ເອວ ອອບ à»àº¡àº™"
+ },
+ "AI": {
+ "name": "à»àº­àº™àºàº¸àºàº¥àº²"
+ },
+ "AQ": {
+ "name": "à»àº­àº™àº•àº²àº”ຕິàºàº²"
+ },
+ "AL": {
+ "name": "à»àº­àº§à»€àºšà»€àº™àº"
+ },
+ "OM": {
+ "name": "ໂອມານ"
+ },
+ "IS": {
+ "name": "ໄອສà»àº¥àº™"
+ },
+ "IE": {
+ "name": "ໄອຣ໌à»àº¥àº™"
+ },
+ "HK": {
+ "name": "ຮອງàºàº»àº‡ ເຂດປົàºàº„ອງພິເສດ ຈີນ"
+ },
+ "HN": {
+ "name": "ຮອນດູຣັສ"
+ },
+ "HU": {
+ "name": "ຮັງàºàº²àº£àºµ"
+ },
+ "HT": {
+ "name": "ໄຮຕິ"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/country/lt.json b/library/intl/resources/country/lt.json
new file mode 100644
index 000000000..dd17a5ab3
--- /dev/null
+++ b/library/intl/resources/country/lt.json
@@ -0,0 +1,761 @@
+{
+ "AF": {
+ "name": "Afganistanas"
+ },
+ "IE": {
+ "name": "Airija"
+ },
+ "AX": {
+ "name": "Alandų Salos"
+ },
+ "AL": {
+ "name": "Albanija"
+ },
+ "DZ": {
+ "name": "Alžyras"
+ },
+ "AS": {
+ "name": "Amerikos Samoa"
+ },
+ "AD": {
+ "name": "Andora"
+ },
+ "AI": {
+ "name": "Angilija"
+ },
+ "AO": {
+ "name": "Angola"
+ },
+ "AQ": {
+ "name": "Antarktida"
+ },
+ "AG": {
+ "name": "Antigva ir Barbuda"
+ },
+ "AR": {
+ "name": "Argentina"
+ },
+ "AM": {
+ "name": "ArmÄ—nija"
+ },
+ "AW": {
+ "name": "Aruba"
+ },
+ "AU": {
+ "name": "Australija"
+ },
+ "AT": {
+ "name": "Austrija"
+ },
+ "AZ": {
+ "name": "Azerbaidžanas"
+ },
+ "BS": {
+ "name": "Bahamos"
+ },
+ "BH": {
+ "name": "Bahreinas"
+ },
+ "BY": {
+ "name": "Baltarusija"
+ },
+ "BD": {
+ "name": "Bangladešas"
+ },
+ "BB": {
+ "name": "Barbadosas"
+ },
+ "BE": {
+ "name": "Belgija"
+ },
+ "BZ": {
+ "name": "Belizas"
+ },
+ "BJ": {
+ "name": "Beninas"
+ },
+ "BM": {
+ "name": "Bermuda"
+ },
+ "GW": {
+ "name": "Bisau GvinÄ—ja"
+ },
+ "BO": {
+ "name": "Bolivija"
+ },
+ "BA": {
+ "name": "Bosnija ir Hercegovina"
+ },
+ "BW": {
+ "name": "Botsvana"
+ },
+ "BR": {
+ "name": "Brazilija"
+ },
+ "BN": {
+ "name": "BrunÄ—jus"
+ },
+ "BG": {
+ "name": "Bulgarija"
+ },
+ "BF": {
+ "name": "Burkina Fasas"
+ },
+ "BI": {
+ "name": "Burundis"
+ },
+ "BT": {
+ "name": "Butanas"
+ },
+ "CF": {
+ "name": "CentrinÄ—s Afrikos Respublika"
+ },
+ "TD": {
+ "name": "ÄŒadas"
+ },
+ "CZ": {
+ "name": "ÄŒekija"
+ },
+ "CL": {
+ "name": "ÄŒilÄ—"
+ },
+ "AC": {
+ "name": "Dangun Žengimo sala"
+ },
+ "DK": {
+ "name": "Danija"
+ },
+ "GB": {
+ "name": "Didžioji Britanija"
+ },
+ "VG": {
+ "name": "Didžiosios Britanijos Mergelių Salos"
+ },
+ "DG": {
+ "name": "Diego Garsija"
+ },
+ "DM": {
+ "name": "Dominika"
+ },
+ "DO": {
+ "name": "Dominikos Respublika"
+ },
+ "CI": {
+ "name": "Dramblio Kaulo Krantas"
+ },
+ "JE": {
+ "name": "Džersis"
+ },
+ "DJ": {
+ "name": "Džibutis"
+ },
+ "EG": {
+ "name": "Egiptas"
+ },
+ "EC": {
+ "name": "Ekvadoras"
+ },
+ "ER": {
+ "name": "EritrÄ—ja"
+ },
+ "EE": {
+ "name": "Estija"
+ },
+ "ET": {
+ "name": "Etiopija"
+ },
+ "FO": {
+ "name": "Farerų Salos"
+ },
+ "FJ": {
+ "name": "Fidžis"
+ },
+ "PH": {
+ "name": "Filipinai"
+ },
+ "FK": {
+ "name": "Folklando Salos"
+ },
+ "GA": {
+ "name": "Gabonas"
+ },
+ "GY": {
+ "name": "Gajana"
+ },
+ "GM": {
+ "name": "Gambija"
+ },
+ "GH": {
+ "name": "Gana"
+ },
+ "GG": {
+ "name": "Gernsis"
+ },
+ "GI": {
+ "name": "Gibraltaras"
+ },
+ "GR": {
+ "name": "Graikija"
+ },
+ "GD": {
+ "name": "Grenada"
+ },
+ "GL": {
+ "name": "Grenlandija"
+ },
+ "GE": {
+ "name": "Gruzija"
+ },
+ "GU": {
+ "name": "Guamas"
+ },
+ "GP": {
+ "name": "Gvadelupa"
+ },
+ "GT": {
+ "name": "Gvatemala"
+ },
+ "GN": {
+ "name": "GvinÄ—ja"
+ },
+ "HT": {
+ "name": "Haitis"
+ },
+ "HN": {
+ "name": "Hondūras"
+ },
+ "IN": {
+ "name": "Indija"
+ },
+ "IO": {
+ "name": "Indijos Vandenyno Britų Sritis"
+ },
+ "ID": {
+ "name": "Indonezija"
+ },
+ "HK": {
+ "name": "Ypatingasis Administracinis Kinijos Regionas Honkongas"
+ },
+ "MO": {
+ "name": "Ypatingasis Administracinis Kinijos Regionas Makao"
+ },
+ "IQ": {
+ "name": "Irakas"
+ },
+ "IR": {
+ "name": "Iranas"
+ },
+ "IS": {
+ "name": "Islandija"
+ },
+ "ES": {
+ "name": "Ispanija"
+ },
+ "IT": {
+ "name": "Italija"
+ },
+ "IL": {
+ "name": "Izraelis"
+ },
+ "JM": {
+ "name": "Jamaika"
+ },
+ "JP": {
+ "name": "Japonija"
+ },
+ "YE": {
+ "name": "Jemenas"
+ },
+ "JO": {
+ "name": "Jordanija"
+ },
+ "US": {
+ "name": "JungtinÄ—s Valstijos"
+ },
+ "AE": {
+ "name": "Jungtiniai Arabų Emyratai"
+ },
+ "UM": {
+ "name": "Jungtinių Valstijų Mažosios Tolimosios Salos"
+ },
+ "VI": {
+ "name": "Jungtinių Valstijų Mergelių Salos"
+ },
+ "ME": {
+ "name": "Juodkalnija"
+ },
+ "KY": {
+ "name": "Kaimanų Salos"
+ },
+ "CX": {
+ "name": "Kalėdų Sala"
+ },
+ "KH": {
+ "name": "Kambodža"
+ },
+ "CM": {
+ "name": "Kamerūnas"
+ },
+ "CA": {
+ "name": "Kanada"
+ },
+ "IC": {
+ "name": "Kanarų salos"
+ },
+ "BQ": {
+ "name": "Karibų Nyderlandai"
+ },
+ "QA": {
+ "name": "Kataras"
+ },
+ "KZ": {
+ "name": "Kazachstanas"
+ },
+ "KE": {
+ "name": "Kenija"
+ },
+ "CN": {
+ "name": "Kinija"
+ },
+ "CY": {
+ "name": "Kipras"
+ },
+ "KG": {
+ "name": "Kirgizija"
+ },
+ "KI": {
+ "name": "Kiribatis"
+ },
+ "CW": {
+ "name": "Kiurasao"
+ },
+ "CC": {
+ "name": "Kokosų (Kilingo) Salos"
+ },
+ "CO": {
+ "name": "Kolumbija"
+ },
+ "KM": {
+ "name": "Komorai"
+ },
+ "CG": {
+ "name": "Kongas-Brazavilis"
+ },
+ "CD": {
+ "name": "Kongas-Kinšasa"
+ },
+ "XK": {
+ "name": "Kosovas"
+ },
+ "CR": {
+ "name": "Kosta Rika"
+ },
+ "HR": {
+ "name": "Kroatija"
+ },
+ "CU": {
+ "name": "Kuba"
+ },
+ "CK": {
+ "name": "Kuko Salos"
+ },
+ "KW": {
+ "name": "Kuveitas"
+ },
+ "LA": {
+ "name": "Laosas"
+ },
+ "LV": {
+ "name": "Latvija"
+ },
+ "PL": {
+ "name": "Lenkija"
+ },
+ "LS": {
+ "name": "Lesotas"
+ },
+ "LB": {
+ "name": "Libanas"
+ },
+ "LR": {
+ "name": "Liberija"
+ },
+ "LY": {
+ "name": "Libija"
+ },
+ "LI": {
+ "name": "Lichtenšteinas"
+ },
+ "LT": {
+ "name": "Lietuva"
+ },
+ "LU": {
+ "name": "Liuksemburgas"
+ },
+ "MG": {
+ "name": "Madagaskaras"
+ },
+ "YT": {
+ "name": "Majotas"
+ },
+ "MK": {
+ "name": "Makedonija"
+ },
+ "MY": {
+ "name": "Malaizija"
+ },
+ "MW": {
+ "name": "Malavis"
+ },
+ "MV": {
+ "name": "Maldyvai"
+ },
+ "ML": {
+ "name": "Malis"
+ },
+ "MT": {
+ "name": "Malta"
+ },
+ "MP": {
+ "name": "Marianos Å iaurinÄ—s Salos"
+ },
+ "MA": {
+ "name": "Marokas"
+ },
+ "MH": {
+ "name": "Maršalo Salos"
+ },
+ "MQ": {
+ "name": "Martinika"
+ },
+ "MU": {
+ "name": "Mauricijus"
+ },
+ "MR": {
+ "name": "Mauritanija"
+ },
+ "MX": {
+ "name": "Meksika"
+ },
+ "IM": {
+ "name": "Meno Sala"
+ },
+ "MM": {
+ "name": "Mianmaras (Birma)"
+ },
+ "FM": {
+ "name": "Mikronezija"
+ },
+ "MD": {
+ "name": "Moldova"
+ },
+ "MC": {
+ "name": "Monakas"
+ },
+ "MN": {
+ "name": "Mongolija"
+ },
+ "MS": {
+ "name": "Montseratas"
+ },
+ "MZ": {
+ "name": "Mozambikas"
+ },
+ "NA": {
+ "name": "Namibija"
+ },
+ "NC": {
+ "name": "Naujoji Kaledonija"
+ },
+ "NZ": {
+ "name": "Naujoji Zelandija"
+ },
+ "NR": {
+ "name": "Nauru"
+ },
+ "NP": {
+ "name": "Nepalas"
+ },
+ "NL": {
+ "name": "Nyderlandai"
+ },
+ "NG": {
+ "name": "Nigerija"
+ },
+ "NE": {
+ "name": "Nigeris"
+ },
+ "NI": {
+ "name": "Nikaragva"
+ },
+ "NU": {
+ "name": "NiujÄ—"
+ },
+ "NF": {
+ "name": "Norfolko sala"
+ },
+ "NO": {
+ "name": "Norvegija"
+ },
+ "OM": {
+ "name": "Omanas"
+ },
+ "PK": {
+ "name": "Pakistanas"
+ },
+ "PW": {
+ "name": "Palau"
+ },
+ "PS": {
+ "name": "Palestinos teritorija"
+ },
+ "PA": {
+ "name": "Panama"
+ },
+ "PG": {
+ "name": "Papua Naujoji GvinÄ—ja"
+ },
+ "PY": {
+ "name": "Paragvajus"
+ },
+ "PE": {
+ "name": "Peru"
+ },
+ "ZA": {
+ "name": "Pietų Afrika"
+ },
+ "GS": {
+ "name": "Pietų Džordžija ir Pietų SandviÄo salos"
+ },
+ "KR": {
+ "name": "Pietų Korėja"
+ },
+ "SS": {
+ "name": "Pietų Sudanas"
+ },
+ "PN": {
+ "name": "Pitkernas"
+ },
+ "PT": {
+ "name": "Portugalija"
+ },
+ "FR": {
+ "name": "Prancūzija"
+ },
+ "GF": {
+ "name": "Prancūzijos Gviana"
+ },
+ "TF": {
+ "name": "Prancūzijos Pietų sritys"
+ },
+ "PF": {
+ "name": "Prancūzų Polinezija"
+ },
+ "PR": {
+ "name": "Puerto Rikas"
+ },
+ "GQ": {
+ "name": "Pusiaujo GvinÄ—ja"
+ },
+ "RE": {
+ "name": "Reunjonas"
+ },
+ "TL": {
+ "name": "Rytų Timoras"
+ },
+ "RW": {
+ "name": "Ruanda"
+ },
+ "RO": {
+ "name": "Rumunija"
+ },
+ "RU": {
+ "name": "Rusija"
+ },
+ "SB": {
+ "name": "Saliamono Salos"
+ },
+ "SV": {
+ "name": "Salvadoras"
+ },
+ "WS": {
+ "name": "Samoa"
+ },
+ "SM": {
+ "name": "San Marinas"
+ },
+ "ST": {
+ "name": "San TomÄ— ir PrinsipÄ—"
+ },
+ "SA": {
+ "name": "Saudo Arabija"
+ },
+ "SC": {
+ "name": "Seišeliai"
+ },
+ "BL": {
+ "name": "Sen Bartelemi"
+ },
+ "MF": {
+ "name": "Sen Martenas"
+ },
+ "PM": {
+ "name": "Sen Pjeras ir Mikelonas"
+ },
+ "SN": {
+ "name": "Senegalas"
+ },
+ "KN": {
+ "name": "Sent Kitsas ir Nevis"
+ },
+ "RS": {
+ "name": "Serbija"
+ },
+ "EA": {
+ "name": "Seuta ir Melila"
+ },
+ "SL": {
+ "name": "Siera LeonÄ—"
+ },
+ "SG": {
+ "name": "Singapūras"
+ },
+ "SX": {
+ "name": "Sint Martenas"
+ },
+ "SY": {
+ "name": "Sirija"
+ },
+ "SK": {
+ "name": "Slovakija"
+ },
+ "SI": {
+ "name": "SlovÄ—nija"
+ },
+ "SO": {
+ "name": "Somalis"
+ },
+ "SD": {
+ "name": "Sudanas"
+ },
+ "FI": {
+ "name": "Suomija"
+ },
+ "SR": {
+ "name": "Surinamas"
+ },
+ "SJ": {
+ "name": "Svalbardas ir Janas Majenas"
+ },
+ "SZ": {
+ "name": "Svazilandas"
+ },
+ "KP": {
+ "name": "Å iaurÄ—s KorÄ—ja"
+ },
+ "LK": {
+ "name": "Å ri Lanka"
+ },
+ "SH": {
+ "name": "Å v. Elenos Sala"
+ },
+ "SE": {
+ "name": "Å vedija"
+ },
+ "CH": {
+ "name": "Å veicarija"
+ },
+ "VC": {
+ "name": "Å ventasis Vincentas ir Grenadinai"
+ },
+ "LC": {
+ "name": "Å ventoji Liucija"
+ },
+ "TJ": {
+ "name": "Tadžikija"
+ },
+ "TH": {
+ "name": "Tailandas"
+ },
+ "TW": {
+ "name": "Taivanas"
+ },
+ "TZ": {
+ "name": "Tanzanija"
+ },
+ "TC": {
+ "name": "Terkso ir Kaikoso Salos"
+ },
+ "TG": {
+ "name": "Togas"
+ },
+ "TK": {
+ "name": "Tokelau"
+ },
+ "TO": {
+ "name": "Tonga"
+ },
+ "TT": {
+ "name": "Trinidadas ir Tobagas"
+ },
+ "TA": {
+ "name": "Tristanas da Kunja"
+ },
+ "TN": {
+ "name": "Tunisas"
+ },
+ "TR": {
+ "name": "Turkija"
+ },
+ "TM": {
+ "name": "TurkmÄ—nistanas"
+ },
+ "TV": {
+ "name": "Tuvalu"
+ },
+ "UG": {
+ "name": "Uganda"
+ },
+ "UA": {
+ "name": "Ukraina"
+ },
+ "UY": {
+ "name": "Urugvajus"
+ },
+ "UZ": {
+ "name": "Uzbekistanas"
+ },
+ "EH": {
+ "name": "Vakarų Sachara"
+ },
+ "VU": {
+ "name": "Vanuatu"
+ },
+ "VA": {
+ "name": "Vatikano Miesto ValstybÄ—"
+ },
+ "VE": {
+ "name": "Venesuela"
+ },
+ "HU": {
+ "name": "Vengrija"
+ },
+ "VN": {
+ "name": "Vietnamas"
+ },
+ "DE": {
+ "name": "Vokietija"
+ },
+ "WF": {
+ "name": "Volisas ir Futuna"
+ },
+ "ZM": {
+ "name": "Zambija"
+ },
+ "ZW": {
+ "name": "ZimbabvÄ—"
+ },
+ "CV": {
+ "name": "Žaliasis Kyšulys"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/country/lu.json b/library/intl/resources/country/lu.json
new file mode 100644
index 000000000..e01eb6f8a
--- /dev/null
+++ b/library/intl/resources/country/lu.json
@@ -0,0 +1,761 @@
+{
+ "ZA": {
+ "name": "Afrika ya Súdi"
+ },
+ "AF": {
+ "name": "Afuganisita"
+ },
+ "AZ": {
+ "name": "Ajelbayidja"
+ },
+ "SA": {
+ "name": "Alabu Nsawudi"
+ },
+ "AX": {
+ "name": "Ã…land Islands"
+ },
+ "DE": {
+ "name": "Alemanu"
+ },
+ "AR": {
+ "name": "Alijantine"
+ },
+ "DZ": {
+ "name": "Alijeri"
+ },
+ "AL": {
+ "name": "Alubani"
+ },
+ "AM": {
+ "name": "Ameni"
+ },
+ "US": {
+ "name": "Ameriki"
+ },
+ "AD": {
+ "name": "Andore"
+ },
+ "GB": {
+ "name": "Angeletele"
+ },
+ "AI": {
+ "name": "Angiye"
+ },
+ "AO": {
+ "name": "Angola"
+ },
+ "AQ": {
+ "name": "Antarctica"
+ },
+ "AG": {
+ "name": "Antiga ne Barbuda"
+ },
+ "AW": {
+ "name": "Aruba"
+ },
+ "AC": {
+ "name": "Ascension Island"
+ },
+ "HT": {
+ "name": "Ayiti"
+ },
+ "BS": {
+ "name": "Bahamase"
+ },
+ "BH": {
+ "name": "Bahrene"
+ },
+ "BB": {
+ "name": "Barebade"
+ },
+ "BE": {
+ "name": "Belejiki"
+ },
+ "BZ": {
+ "name": "Belize"
+ },
+ "BJ": {
+ "name": "Bene"
+ },
+ "BD": {
+ "name": "Benguladeshi"
+ },
+ "BM": {
+ "name": "Bermuda"
+ },
+ "BG": {
+ "name": "Biligari"
+ },
+ "BN": {
+ "name": "Brineyi"
+ },
+ "BF": {
+ "name": "Bukinafaso"
+ },
+ "BI": {
+ "name": "Burundi"
+ },
+ "BT": {
+ "name": "Butani"
+ },
+ "BY": {
+ "name": "Byelorisi"
+ },
+ "IC": {
+ "name": "Canary Islands"
+ },
+ "BQ": {
+ "name": "Caribbean Netherlands"
+ },
+ "EA": {
+ "name": "Ceuta & Melilla"
+ },
+ "CX": {
+ "name": "Christmas Island"
+ },
+ "CC": {
+ "name": "Cocos (Keeling) Islands"
+ },
+ "CW": {
+ "name": "Curaçao"
+ },
+ "DK": {
+ "name": "Danemalaku"
+ },
+ "DG": {
+ "name": "Diego Garcia"
+ },
+ "CF": {
+ "name": "Ditunga dya Afrika wa munkatshi"
+ },
+ "CZ": {
+ "name": "Ditunga dya Tsheka"
+ },
+ "DO": {
+ "name": "Ditunga wa Duminiku"
+ },
+ "CD": {
+ "name": "Ditunga wa Kongu"
+ },
+ "DJ": {
+ "name": "Djibuti"
+ },
+ "DM": {
+ "name": "Duminiku"
+ },
+ "EC": {
+ "name": "Ekwatele"
+ },
+ "ER": {
+ "name": "Elitele"
+ },
+ "EE": {
+ "name": "Esitoni"
+ },
+ "ET": {
+ "name": "Etshiopi"
+ },
+ "FO": {
+ "name": "Faroe Islands"
+ },
+ "FI": {
+ "name": "Filande"
+ },
+ "TF": {
+ "name": "French Southern Territories"
+ },
+ "FJ": {
+ "name": "Fuji"
+ },
+ "GM": {
+ "name": "Gambi"
+ },
+ "GQ": {
+ "name": "Gine Ekwatele"
+ },
+ "GF": {
+ "name": "Giyane wa Nfalanse"
+ },
+ "GG": {
+ "name": "Guernsey"
+ },
+ "HK": {
+ "name": "Hong Kong SAR China"
+ },
+ "IN": {
+ "name": "Inde"
+ },
+ "ID": {
+ "name": "Indonezi"
+ },
+ "IR": {
+ "name": "Ira"
+ },
+ "IQ": {
+ "name": "Iraki"
+ },
+ "IE": {
+ "name": "Irelande"
+ },
+ "UY": {
+ "name": "Irigwei"
+ },
+ "IS": {
+ "name": "Isilande"
+ },
+ "IL": {
+ "name": "Isirayele"
+ },
+ "IM": {
+ "name": "Isle of Man"
+ },
+ "IT": {
+ "name": "Itali"
+ },
+ "JM": {
+ "name": "Jamaiki"
+ },
+ "JP": {
+ "name": "Japu"
+ },
+ "JE": {
+ "name": "Jersey"
+ },
+ "GI": {
+ "name": "Jibeletale"
+ },
+ "JO": {
+ "name": "Jodani"
+ },
+ "GE": {
+ "name": "Joriji"
+ },
+ "NC": {
+ "name": "Kaledoni wa mumu"
+ },
+ "KH": {
+ "name": "Kambodza"
+ },
+ "CM": {
+ "name": "Kamerune"
+ },
+ "CA": {
+ "name": "Kanada"
+ },
+ "QA": {
+ "name": "Katari"
+ },
+ "KZ": {
+ "name": "Kazakusita"
+ },
+ "KE": {
+ "name": "Kenya"
+ },
+ "KG": {
+ "name": "Kigizisita"
+ },
+ "KI": {
+ "name": "Kiribati"
+ },
+ "CO": {
+ "name": "Kolombi"
+ },
+ "KM": {
+ "name": "Komoru"
+ },
+ "CG": {
+ "name": "Kongu"
+ },
+ "KP": {
+ "name": "Kore wa muulu"
+ },
+ "KR": {
+ "name": "Kore wa mwinshi"
+ },
+ "CR": {
+ "name": "Kositarika"
+ },
+ "XK": {
+ "name": "Kosovo"
+ },
+ "CI": {
+ "name": "Kotedivuale"
+ },
+ "KW": {
+ "name": "Koweti"
+ },
+ "HR": {
+ "name": "Krowasi"
+ },
+ "CU": {
+ "name": "Kuba"
+ },
+ "LA": {
+ "name": "Lawosi"
+ },
+ "AE": {
+ "name": "Lemila alabu"
+ },
+ "RE": {
+ "name": "Lenyo"
+ },
+ "LS": {
+ "name": "Lesoto"
+ },
+ "LV": {
+ "name": "Letoni"
+ },
+ "LB": {
+ "name": "Liba"
+ },
+ "LR": {
+ "name": "Liberiya"
+ },
+ "LY": {
+ "name": "Libi"
+ },
+ "LU": {
+ "name": "Likisambulu"
+ },
+ "LI": {
+ "name": "Lishuteni"
+ },
+ "LT": {
+ "name": "Litwani"
+ },
+ "CV": {
+ "name": "Lutanda lua Kapevele"
+ },
+ "KY": {
+ "name": "Lutanda lua Kayima"
+ },
+ "CK": {
+ "name": "Lutanda lua KookÉ›"
+ },
+ "FK": {
+ "name": "Lutanda lua Maluni"
+ },
+ "MP": {
+ "name": "Lutanda lua Mariane wa muulu"
+ },
+ "MH": {
+ "name": "Lutanda lua Marishale"
+ },
+ "NF": {
+ "name": "Lutanda lua Norfok"
+ },
+ "SB": {
+ "name": "Lutanda lua Solomu"
+ },
+ "TC": {
+ "name": "Lutanda lua Tuluki ne Kaiko"
+ },
+ "VI": {
+ "name": "Lutanda lua Vierzi wa Ameriki"
+ },
+ "VG": {
+ "name": "Lutanda lua Vierzi wa Angeletele"
+ },
+ "IO": {
+ "name": "Lutanda lwa Angeletele ku mbu wa Indiya"
+ },
+ "MO": {
+ "name": "Macau SAR China"
+ },
+ "MG": {
+ "name": "Madagasikari"
+ },
+ "MV": {
+ "name": "Madive"
+ },
+ "MW": {
+ "name": "Malawi"
+ },
+ "MY": {
+ "name": "Malezi"
+ },
+ "ML": {
+ "name": "Mali"
+ },
+ "MT": {
+ "name": "Malite"
+ },
+ "MA": {
+ "name": "Maroke"
+ },
+ "MQ": {
+ "name": "Martiniki"
+ },
+ "MK": {
+ "name": "Masedwane"
+ },
+ "YT": {
+ "name": "Mayote"
+ },
+ "BO": {
+ "name": "Mbolivi"
+ },
+ "BA": {
+ "name": "Mbosini ne Hezegovine"
+ },
+ "BW": {
+ "name": "Mbotswana"
+ },
+ "MX": {
+ "name": "Meksike"
+ },
+ "FM": {
+ "name": "Mikronezi"
+ },
+ "BR": {
+ "name": "Mnulezile"
+ },
+ "MD": {
+ "name": "Molidavi"
+ },
+ "MC": {
+ "name": "Monaku"
+ },
+ "MN": {
+ "name": "Mongoli"
+ },
+ "ME": {
+ "name": "Montenegro"
+ },
+ "MU": {
+ "name": "Morise"
+ },
+ "MR": {
+ "name": "Moritani"
+ },
+ "MZ": {
+ "name": "Mozambiki"
+ },
+ "PL": {
+ "name": "Mpoloni"
+ },
+ "PR": {
+ "name": "Mpotoriku"
+ },
+ "PT": {
+ "name": "Mputulugeshi"
+ },
+ "MS": {
+ "name": "Musera"
+ },
+ "EG": {
+ "name": "Mushidi"
+ },
+ "MM": {
+ "name": "Myamare"
+ },
+ "NA": {
+ "name": "Namibi"
+ },
+ "NR": {
+ "name": "Nauru"
+ },
+ "NP": {
+ "name": "Nepálɛ"
+ },
+ "FR": {
+ "name": "Nfalanse"
+ },
+ "PH": {
+ "name": "Nfilipi"
+ },
+ "GA": {
+ "name": "Ngabu"
+ },
+ "GH": {
+ "name": "Ngana"
+ },
+ "GR": {
+ "name": "Ngeleka"
+ },
+ "GD": {
+ "name": "Ngelenade"
+ },
+ "GN": {
+ "name": "Ngine"
+ },
+ "GW": {
+ "name": "Nginebisau"
+ },
+ "GY": {
+ "name": "Ngiyane"
+ },
+ "GL": {
+ "name": "Ngowelande"
+ },
+ "GP": {
+ "name": "Ngwadelupe"
+ },
+ "GU": {
+ "name": "Ngwame"
+ },
+ "GT": {
+ "name": "Ngwatemala"
+ },
+ "NE": {
+ "name": "Nijere"
+ },
+ "NG": {
+ "name": "Nijerya"
+ },
+ "NI": {
+ "name": "Nikaragwa"
+ },
+ "NO": {
+ "name": "Noriveje"
+ },
+ "ES": {
+ "name": "Nsipani"
+ },
+ "VA": {
+ "name": "Nvatika"
+ },
+ "NU": {
+ "name": "Nyue"
+ },
+ "NL": {
+ "name": "OlandÉ›"
+ },
+ "OM": {
+ "name": "Omane"
+ },
+ "HN": {
+ "name": "Ondurase"
+ },
+ "HU": {
+ "name": "Ongili"
+ },
+ "AU": {
+ "name": "Ositali"
+ },
+ "AT": {
+ "name": "Otilisi"
+ },
+ "PK": {
+ "name": "Pakisita"
+ },
+ "PY": {
+ "name": "Palagwei"
+ },
+ "PW": {
+ "name": "Palau"
+ },
+ "PS": {
+ "name": "Palesine"
+ },
+ "PA": {
+ "name": "Panama"
+ },
+ "PG": {
+ "name": "Papwazi wa NginÉ› wa mumu"
+ },
+ "PE": {
+ "name": "Peru"
+ },
+ "PN": {
+ "name": "Pikairni"
+ },
+ "PF": {
+ "name": "Polinezi wa Nfalanse"
+ },
+ "RU": {
+ "name": "Risi"
+ },
+ "RO": {
+ "name": "Romani"
+ },
+ "RW": {
+ "name": "Rwanda"
+ },
+ "WS": {
+ "name": "Samoa"
+ },
+ "AS": {
+ "name": "Samoa wa Ameriki"
+ },
+ "SH": {
+ "name": "Santu eleni"
+ },
+ "KN": {
+ "name": "Santu krístofe ne Neves"
+ },
+ "LC": {
+ "name": "Santu lisi"
+ },
+ "SM": {
+ "name": "Santu Marine"
+ },
+ "PM": {
+ "name": "Santu pététo ne Mikelu"
+ },
+ "VC": {
+ "name": "Santu vesa ne Ngelenadine"
+ },
+ "ST": {
+ "name": "Sao Tome ne PresipÉ›"
+ },
+ "SV": {
+ "name": "Savadore"
+ },
+ "SN": {
+ "name": "Senegale"
+ },
+ "RS": {
+ "name": "Serbia"
+ },
+ "SC": {
+ "name": "Seshele"
+ },
+ "CL": {
+ "name": "Shili"
+ },
+ "CN": {
+ "name": "Shine"
+ },
+ "CY": {
+ "name": "Shipele"
+ },
+ "SL": {
+ "name": "Siera Leone"
+ },
+ "SK": {
+ "name": "Silovaki"
+ },
+ "SI": {
+ "name": "Siloveni"
+ },
+ "SG": {
+ "name": "Singapure"
+ },
+ "SX": {
+ "name": "Sint Maarten"
+ },
+ "SY": {
+ "name": "Siri"
+ },
+ "LK": {
+ "name": "Sirilanka"
+ },
+ "SO": {
+ "name": "Somali"
+ },
+ "GS": {
+ "name": "South Georgia & South Sandwich Islands"
+ },
+ "SS": {
+ "name": "South Sudan"
+ },
+ "BL": {
+ "name": "St. Barthélemy"
+ },
+ "MF": {
+ "name": "St. Martin"
+ },
+ "SD": {
+ "name": "Suda"
+ },
+ "SR": {
+ "name": "Suriname"
+ },
+ "SE": {
+ "name": "Suwedi"
+ },
+ "SJ": {
+ "name": "Svalbard & Jan Mayen"
+ },
+ "SZ": {
+ "name": "Swazilandi"
+ },
+ "CH": {
+ "name": "Swise"
+ },
+ "TW": {
+ "name": "Taiwani"
+ },
+ "TZ": {
+ "name": "Tanzani"
+ },
+ "TH": {
+ "name": "Tayilanda"
+ },
+ "TJ": {
+ "name": "Tazikisita"
+ },
+ "TL": {
+ "name": "Timoru wa diboku"
+ },
+ "TT": {
+ "name": "Tinidade ne Tobago"
+ },
+ "TN": {
+ "name": "Tinizi"
+ },
+ "TG": {
+ "name": "Togu"
+ },
+ "TK": {
+ "name": "Tokelau"
+ },
+ "TO": {
+ "name": "Tonga"
+ },
+ "TA": {
+ "name": "Tristan da Cunha"
+ },
+ "TD": {
+ "name": "Tshadi"
+ },
+ "TM": {
+ "name": "Tukemenisita"
+ },
+ "TR": {
+ "name": "Tuluki"
+ },
+ "TV": {
+ "name": "Tuvalu"
+ },
+ "UM": {
+ "name": "U.S. Outlying Islands"
+ },
+ "UG": {
+ "name": "Uganda"
+ },
+ "UA": {
+ "name": "Ukreni"
+ },
+ "UZ": {
+ "name": "Uzibekisita"
+ },
+ "VU": {
+ "name": "Vanuatu"
+ },
+ "VE": {
+ "name": "Venezuela"
+ },
+ "VN": {
+ "name": "Viyetiname"
+ },
+ "WF": {
+ "name": "Walise ne Futuna"
+ },
+ "EH": {
+ "name": "Western Sahara"
+ },
+ "YE": {
+ "name": "Yemenu"
+ },
+ "ZM": {
+ "name": "Zambi"
+ },
+ "NZ": {
+ "name": "Zelanda wa mumu"
+ },
+ "ZW": {
+ "name": "Zimbabwe"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/country/luo.json b/library/intl/resources/country/luo.json
new file mode 100644
index 000000000..10ab8cebc
--- /dev/null
+++ b/library/intl/resources/country/luo.json
@@ -0,0 +1,761 @@
+{
+ "AF": {
+ "name": "Afghanistan"
+ },
+ "AX": {
+ "name": "Ã…land Islands"
+ },
+ "AL": {
+ "name": "Albania"
+ },
+ "DZ": {
+ "name": "Algeria"
+ },
+ "AS": {
+ "name": "American Samoa"
+ },
+ "AD": {
+ "name": "Andorra"
+ },
+ "AO": {
+ "name": "Angola"
+ },
+ "AI": {
+ "name": "Anguilla"
+ },
+ "AQ": {
+ "name": "Antarctica"
+ },
+ "AG": {
+ "name": "Antigua gi Barbuda"
+ },
+ "AR": {
+ "name": "Argentina"
+ },
+ "AM": {
+ "name": "Armenia"
+ },
+ "AW": {
+ "name": "Aruba"
+ },
+ "AC": {
+ "name": "Ascension Island"
+ },
+ "AU": {
+ "name": "Australia"
+ },
+ "AT": {
+ "name": "Austria"
+ },
+ "AZ": {
+ "name": "Azerbaijan"
+ },
+ "BS": {
+ "name": "Bahamas"
+ },
+ "BH": {
+ "name": "Bahrain"
+ },
+ "BD": {
+ "name": "Bangladesh"
+ },
+ "BB": {
+ "name": "Barbados"
+ },
+ "BY": {
+ "name": "Belarus"
+ },
+ "BE": {
+ "name": "Belgium"
+ },
+ "BZ": {
+ "name": "Belize"
+ },
+ "BJ": {
+ "name": "Benin"
+ },
+ "BM": {
+ "name": "Bermuda"
+ },
+ "BT": {
+ "name": "Bhutan"
+ },
+ "BO": {
+ "name": "Bolivia"
+ },
+ "BA": {
+ "name": "Bosnia gi Herzegovina"
+ },
+ "BW": {
+ "name": "Botswana"
+ },
+ "BR": {
+ "name": "Brazil"
+ },
+ "IO": {
+ "name": "British Indian Ocean Territory"
+ },
+ "VG": {
+ "name": "British Virgin Islands"
+ },
+ "BN": {
+ "name": "Brunei"
+ },
+ "BG": {
+ "name": "Bulgaria"
+ },
+ "BF": {
+ "name": "Burkina Faso"
+ },
+ "BI": {
+ "name": "Burundi"
+ },
+ "KH": {
+ "name": "Cambodia"
+ },
+ "CM": {
+ "name": "Cameroon"
+ },
+ "CA": {
+ "name": "Canada"
+ },
+ "IC": {
+ "name": "Canary Islands"
+ },
+ "CV": {
+ "name": "Cape Verde Islands"
+ },
+ "BQ": {
+ "name": "Caribbean Netherlands"
+ },
+ "KY": {
+ "name": "Cayman Islands"
+ },
+ "CF": {
+ "name": "Central African Republic"
+ },
+ "EA": {
+ "name": "Ceuta & Melilla"
+ },
+ "TD": {
+ "name": "Chad"
+ },
+ "CL": {
+ "name": "Chile"
+ },
+ "CN": {
+ "name": "China"
+ },
+ "CX": {
+ "name": "Christmas Island"
+ },
+ "FK": {
+ "name": "Chuia mar Falkland"
+ },
+ "MH": {
+ "name": "Chuia mar Marshall"
+ },
+ "NF": {
+ "name": "Chuia mar Norfolk"
+ },
+ "CC": {
+ "name": "Cocos (Keeling) Islands"
+ },
+ "CO": {
+ "name": "Colombia"
+ },
+ "KM": {
+ "name": "Comoros"
+ },
+ "CG": {
+ "name": "Congo"
+ },
+ "CK": {
+ "name": "Cook Islands"
+ },
+ "CR": {
+ "name": "Costa Rica"
+ },
+ "CI": {
+ "name": "Côte d"
+ },
+ "HR": {
+ "name": "Croatia"
+ },
+ "CU": {
+ "name": "Cuba"
+ },
+ "CW": {
+ "name": "Curaçao"
+ },
+ "CY": {
+ "name": "Cyprus"
+ },
+ "CZ": {
+ "name": "Czech Republic"
+ },
+ "CD": {
+ "name": "Democratic Republic of the Congo"
+ },
+ "DK": {
+ "name": "Denmark"
+ },
+ "DG": {
+ "name": "Diego Garcia"
+ },
+ "DJ": {
+ "name": "Djibouti"
+ },
+ "DM": {
+ "name": "Dominica"
+ },
+ "DO": {
+ "name": "Dominican Republic"
+ },
+ "TL": {
+ "name": "East Timor"
+ },
+ "EC": {
+ "name": "Ecuador"
+ },
+ "EG": {
+ "name": "Egypt"
+ },
+ "SV": {
+ "name": "El Salvador"
+ },
+ "GQ": {
+ "name": "Equatorial Guinea"
+ },
+ "ER": {
+ "name": "Eritrea"
+ },
+ "EE": {
+ "name": "Estonia"
+ },
+ "ET": {
+ "name": "Ethiopia"
+ },
+ "FO": {
+ "name": "Faroe Islands"
+ },
+ "FJ": {
+ "name": "Fiji"
+ },
+ "FI": {
+ "name": "Finland"
+ },
+ "FR": {
+ "name": "France"
+ },
+ "GF": {
+ "name": "French Guiana"
+ },
+ "PF": {
+ "name": "French Polynesia"
+ },
+ "TF": {
+ "name": "French Southern Territories"
+ },
+ "GA": {
+ "name": "Gabon"
+ },
+ "GM": {
+ "name": "Gambia"
+ },
+ "GE": {
+ "name": "Georgia"
+ },
+ "DE": {
+ "name": "Germany"
+ },
+ "GH": {
+ "name": "Ghana"
+ },
+ "GI": {
+ "name": "Gibraltar"
+ },
+ "GR": {
+ "name": "Greece"
+ },
+ "GL": {
+ "name": "Greenland"
+ },
+ "GD": {
+ "name": "Grenada"
+ },
+ "GP": {
+ "name": "Guadeloupe"
+ },
+ "GU": {
+ "name": "Guam"
+ },
+ "GT": {
+ "name": "Guatemala"
+ },
+ "GG": {
+ "name": "Guernsey"
+ },
+ "GN": {
+ "name": "Guinea"
+ },
+ "GW": {
+ "name": "Guinea-Bissau"
+ },
+ "GY": {
+ "name": "Guyana"
+ },
+ "HT": {
+ "name": "Haiti"
+ },
+ "HN": {
+ "name": "Honduras"
+ },
+ "HK": {
+ "name": "Hong Kong SAR China"
+ },
+ "HU": {
+ "name": "Hungary"
+ },
+ "IS": {
+ "name": "Iceland"
+ },
+ "IN": {
+ "name": "India"
+ },
+ "ID": {
+ "name": "Indonesia"
+ },
+ "IR": {
+ "name": "Iran"
+ },
+ "IQ": {
+ "name": "Iraq"
+ },
+ "IE": {
+ "name": "Ireland"
+ },
+ "IM": {
+ "name": "Isle of Man"
+ },
+ "IL": {
+ "name": "Israel"
+ },
+ "IT": {
+ "name": "Italy"
+ },
+ "JM": {
+ "name": "Jamaica"
+ },
+ "JP": {
+ "name": "Japan"
+ },
+ "JE": {
+ "name": "Jersey"
+ },
+ "JO": {
+ "name": "Jordan"
+ },
+ "KZ": {
+ "name": "Kazakhstan"
+ },
+ "KE": {
+ "name": "Kenya"
+ },
+ "KI": {
+ "name": "Kiribati"
+ },
+ "KP": {
+ "name": "Korea Masawa"
+ },
+ "KR": {
+ "name": "Korea Milambo"
+ },
+ "XK": {
+ "name": "Kosovo"
+ },
+ "KW": {
+ "name": "Kuwait"
+ },
+ "KG": {
+ "name": "Kyrgyzstan"
+ },
+ "LA": {
+ "name": "Laos"
+ },
+ "LV": {
+ "name": "Latvia"
+ },
+ "LB": {
+ "name": "Lebanon"
+ },
+ "LS": {
+ "name": "Lesotho"
+ },
+ "LR": {
+ "name": "Liberia"
+ },
+ "LY": {
+ "name": "Libya"
+ },
+ "LI": {
+ "name": "Liechtenstein"
+ },
+ "LT": {
+ "name": "Lithuania"
+ },
+ "LU": {
+ "name": "Luxembourg"
+ },
+ "MO": {
+ "name": "Macau SAR China"
+ },
+ "MK": {
+ "name": "Macedonia"
+ },
+ "MG": {
+ "name": "Madagascar"
+ },
+ "MW": {
+ "name": "Malawi"
+ },
+ "MY": {
+ "name": "Malaysia"
+ },
+ "MV": {
+ "name": "Maldives"
+ },
+ "ML": {
+ "name": "Mali"
+ },
+ "MT": {
+ "name": "Malta"
+ },
+ "MQ": {
+ "name": "Martinique"
+ },
+ "MR": {
+ "name": "Mauritania"
+ },
+ "MU": {
+ "name": "Mauritius"
+ },
+ "YT": {
+ "name": "Mayotte"
+ },
+ "MX": {
+ "name": "Mexico"
+ },
+ "FM": {
+ "name": "Micronesia"
+ },
+ "MD": {
+ "name": "Moldova"
+ },
+ "MC": {
+ "name": "Monaco"
+ },
+ "MN": {
+ "name": "Mongolia"
+ },
+ "ME": {
+ "name": "Montenegro"
+ },
+ "MS": {
+ "name": "Montserrat"
+ },
+ "MA": {
+ "name": "Morocco"
+ },
+ "MZ": {
+ "name": "Mozambique"
+ },
+ "MM": {
+ "name": "Myanmar"
+ },
+ "NA": {
+ "name": "Namibia"
+ },
+ "NR": {
+ "name": "Nauru"
+ },
+ "NP": {
+ "name": "Nepal"
+ },
+ "NL": {
+ "name": "Netherlands"
+ },
+ "NC": {
+ "name": "New Caledonia"
+ },
+ "NZ": {
+ "name": "New Zealand"
+ },
+ "NI": {
+ "name": "Nicaragua"
+ },
+ "NE": {
+ "name": "Niger"
+ },
+ "NG": {
+ "name": "Nigeria"
+ },
+ "NU": {
+ "name": "Niue"
+ },
+ "MP": {
+ "name": "Northern Mariana Islands"
+ },
+ "NO": {
+ "name": "Norway"
+ },
+ "OM": {
+ "name": "Oman"
+ },
+ "PK": {
+ "name": "Pakistan"
+ },
+ "PW": {
+ "name": "Palau"
+ },
+ "PS": {
+ "name": "Palestinian West Bank gi Gaza"
+ },
+ "PA": {
+ "name": "Panama"
+ },
+ "PG": {
+ "name": "Papua New Guinea"
+ },
+ "PY": {
+ "name": "Paraguay"
+ },
+ "PE": {
+ "name": "Peru"
+ },
+ "PH": {
+ "name": "Philippines"
+ },
+ "PN": {
+ "name": "Pitcairn"
+ },
+ "PL": {
+ "name": "Poland"
+ },
+ "PT": {
+ "name": "Portugal"
+ },
+ "PR": {
+ "name": "Puerto Rico"
+ },
+ "QA": {
+ "name": "Qatar"
+ },
+ "RE": {
+ "name": "Réunion"
+ },
+ "RO": {
+ "name": "Romania"
+ },
+ "RU": {
+ "name": "Russia"
+ },
+ "RW": {
+ "name": "Rwanda"
+ },
+ "SH": {
+ "name": "Saint Helena"
+ },
+ "KN": {
+ "name": "Saint Kitts gi Nevis"
+ },
+ "LC": {
+ "name": "Saint Lucia"
+ },
+ "PM": {
+ "name": "Saint Pierre gi Miquelon"
+ },
+ "VC": {
+ "name": "Saint Vincent gi Grenadines"
+ },
+ "WS": {
+ "name": "Samoa"
+ },
+ "SM": {
+ "name": "San Marino"
+ },
+ "ST": {
+ "name": "São Tomé gi Príncipe"
+ },
+ "SA": {
+ "name": "Saudi Arabia"
+ },
+ "SN": {
+ "name": "Senegal"
+ },
+ "RS": {
+ "name": "Serbia"
+ },
+ "SC": {
+ "name": "Seychelles"
+ },
+ "SL": {
+ "name": "Sierra Leone"
+ },
+ "SG": {
+ "name": "Singapore"
+ },
+ "SX": {
+ "name": "Sint Maarten"
+ },
+ "SK": {
+ "name": "Slovakia"
+ },
+ "SI": {
+ "name": "Slovenia"
+ },
+ "SB": {
+ "name": "Solomon Islands"
+ },
+ "SO": {
+ "name": "Somalia"
+ },
+ "ZA": {
+ "name": "South Africa"
+ },
+ "GS": {
+ "name": "South Georgia & South Sandwich Islands"
+ },
+ "SS": {
+ "name": "South Sudan"
+ },
+ "ES": {
+ "name": "Spain"
+ },
+ "LK": {
+ "name": "Sri Lanka"
+ },
+ "BL": {
+ "name": "St. Barthélemy"
+ },
+ "MF": {
+ "name": "St. Martin"
+ },
+ "SD": {
+ "name": "Sudan"
+ },
+ "SR": {
+ "name": "Suriname"
+ },
+ "SJ": {
+ "name": "Svalbard & Jan Mayen"
+ },
+ "SZ": {
+ "name": "Swaziland"
+ },
+ "SE": {
+ "name": "Sweden"
+ },
+ "CH": {
+ "name": "Switzerland"
+ },
+ "SY": {
+ "name": "Syria"
+ },
+ "TW": {
+ "name": "Taiwan"
+ },
+ "TJ": {
+ "name": "Tajikistan"
+ },
+ "TZ": {
+ "name": "Tanzania"
+ },
+ "TH": {
+ "name": "Thailand"
+ },
+ "TG": {
+ "name": "Togo"
+ },
+ "TK": {
+ "name": "Tokelau"
+ },
+ "TO": {
+ "name": "Tonga"
+ },
+ "TT": {
+ "name": "Trinidad gi Tobago"
+ },
+ "TA": {
+ "name": "Tristan da Cunha"
+ },
+ "TN": {
+ "name": "Tunisia"
+ },
+ "TR": {
+ "name": "Turkey"
+ },
+ "TM": {
+ "name": "Turkmenistan"
+ },
+ "TC": {
+ "name": "Turks gi Caicos Islands"
+ },
+ "TV": {
+ "name": "Tuvalu"
+ },
+ "UM": {
+ "name": "U.S. Outlying Islands"
+ },
+ "VI": {
+ "name": "U.S. Virgin Islands"
+ },
+ "UG": {
+ "name": "Uganda"
+ },
+ "UA": {
+ "name": "Ukraine"
+ },
+ "AE": {
+ "name": "United Arab Emirates"
+ },
+ "GB": {
+ "name": "United Kingdom"
+ },
+ "UY": {
+ "name": "Uruguay"
+ },
+ "US": {
+ "name": "USA"
+ },
+ "UZ": {
+ "name": "Uzbekistan"
+ },
+ "VU": {
+ "name": "Vanuatu"
+ },
+ "VA": {
+ "name": "Vatican State"
+ },
+ "VE": {
+ "name": "Venezuela"
+ },
+ "VN": {
+ "name": "Vietnam"
+ },
+ "WF": {
+ "name": "Wallis gi Futuna"
+ },
+ "EH": {
+ "name": "Western Sahara"
+ },
+ "YE": {
+ "name": "Yemen"
+ },
+ "ZM": {
+ "name": "Zambia"
+ },
+ "ZW": {
+ "name": "Zimbabwe"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/country/luy.json b/library/intl/resources/country/luy.json
new file mode 100644
index 000000000..9b0be889b
--- /dev/null
+++ b/library/intl/resources/country/luy.json
@@ -0,0 +1,761 @@
+{
+ "ZA": {
+ "name": "Afrika Kusini"
+ },
+ "AF": {
+ "name": "Afuganistani"
+ },
+ "IS": {
+ "name": "Aislandi"
+ },
+ "AR": {
+ "name": "Ajentina"
+ },
+ "AX": {
+ "name": "Ã…land Islands"
+ },
+ "AL": {
+ "name": "Albania"
+ },
+ "DZ": {
+ "name": "Aljeria"
+ },
+ "AD": {
+ "name": "Andora"
+ },
+ "AO": {
+ "name": "Angola"
+ },
+ "AI": {
+ "name": "Anguilla"
+ },
+ "AQ": {
+ "name": "Antarctica"
+ },
+ "AG": {
+ "name": "Antigua na Barbuda"
+ },
+ "AM": {
+ "name": "Armenia"
+ },
+ "AW": {
+ "name": "Aruba"
+ },
+ "AC": {
+ "name": "Ascension Island"
+ },
+ "AU": {
+ "name": "Australia"
+ },
+ "AT": {
+ "name": "Austria"
+ },
+ "IE": {
+ "name": "Ayalandi"
+ },
+ "AZ": {
+ "name": "Azabajani"
+ },
+ "BB": {
+ "name": "Babadosi"
+ },
+ "BS": {
+ "name": "Bahama"
+ },
+ "BH": {
+ "name": "Bahareni"
+ },
+ "BD": {
+ "name": "Bangladeshi"
+ },
+ "BY": {
+ "name": "Belarusi"
+ },
+ "BZ": {
+ "name": "Belize"
+ },
+ "BJ": {
+ "name": "Benini"
+ },
+ "BM": {
+ "name": "Bermuda"
+ },
+ "BO": {
+ "name": "Bolivia"
+ },
+ "BA": {
+ "name": "Bosnia na Hezegovina"
+ },
+ "BW": {
+ "name": "Botswana"
+ },
+ "BR": {
+ "name": "Brazili"
+ },
+ "BN": {
+ "name": "Brunei"
+ },
+ "BF": {
+ "name": "Bukinafaso"
+ },
+ "MG": {
+ "name": "Bukini"
+ },
+ "BG": {
+ "name": "Bulgaria"
+ },
+ "BI": {
+ "name": "Burundi"
+ },
+ "BT": {
+ "name": "Butani"
+ },
+ "IC": {
+ "name": "Canary Islands"
+ },
+ "BQ": {
+ "name": "Caribbean Netherlands"
+ },
+ "EA": {
+ "name": "Ceuta & Melilla"
+ },
+ "TD": {
+ "name": "Chadi"
+ },
+ "CL": {
+ "name": "Chile"
+ },
+ "CN": {
+ "name": "China"
+ },
+ "CX": {
+ "name": "Christmas Island"
+ },
+ "CC": {
+ "name": "Cocos (Keeling) Islands"
+ },
+ "CW": {
+ "name": "Curaçao"
+ },
+ "DK": {
+ "name": "Denmaki"
+ },
+ "DG": {
+ "name": "Diego Garcia"
+ },
+ "DM": {
+ "name": "Dominika"
+ },
+ "EC": {
+ "name": "Ekwado"
+ },
+ "SV": {
+ "name": "Elsavado"
+ },
+ "IO": {
+ "name": "Eneo la Uingereza katika Bahari Hindi"
+ },
+ "ER": {
+ "name": "Eritrea"
+ },
+ "EE": {
+ "name": "Estonia"
+ },
+ "AE": {
+ "name": "Falme za Kiarabu"
+ },
+ "FO": {
+ "name": "Faroe Islands"
+ },
+ "FJ": {
+ "name": "Fiji"
+ },
+ "PH": {
+ "name": "Filipino"
+ },
+ "TF": {
+ "name": "French Southern Territories"
+ },
+ "GA": {
+ "name": "Gaboni"
+ },
+ "GM": {
+ "name": "Gambia"
+ },
+ "GH": {
+ "name": "Ghana"
+ },
+ "GN": {
+ "name": "Gine"
+ },
+ "GW": {
+ "name": "Ginebisau"
+ },
+ "GQ": {
+ "name": "Ginekweta"
+ },
+ "GD": {
+ "name": "Grenada"
+ },
+ "GL": {
+ "name": "Grinlandi"
+ },
+ "GG": {
+ "name": "Guernsey"
+ },
+ "GY": {
+ "name": "Guyana"
+ },
+ "GP": {
+ "name": "Gwadelupe"
+ },
+ "GU": {
+ "name": "Gwam"
+ },
+ "GT": {
+ "name": "Gwatemala"
+ },
+ "GF": {
+ "name": "Gwiyana ya Ufaransa"
+ },
+ "HT": {
+ "name": "Haiti"
+ },
+ "ES": {
+ "name": "Hispania"
+ },
+ "HN": {
+ "name": "Hondurasi"
+ },
+ "HK": {
+ "name": "Hong Kong SAR China"
+ },
+ "HU": {
+ "name": "Hungaria"
+ },
+ "IN": {
+ "name": "India"
+ },
+ "ID": {
+ "name": "Indonesia"
+ },
+ "IQ": {
+ "name": "Iraki"
+ },
+ "IM": {
+ "name": "Isle of Man"
+ },
+ "IL": {
+ "name": "Israeli"
+ },
+ "IT": {
+ "name": "Italia"
+ },
+ "JM": {
+ "name": "Jamaika"
+ },
+ "CF": {
+ "name": "Jamhuri ya Afrika ya Kati"
+ },
+ "CZ": {
+ "name": "Jamhuri ya Cheki"
+ },
+ "DO": {
+ "name": "Jamhuri ya Dominika"
+ },
+ "CD": {
+ "name": "Jamhuri ya Kidemokrasia ya Kongo"
+ },
+ "JP": {
+ "name": "Japani"
+ },
+ "JE": {
+ "name": "Jersey"
+ },
+ "GI": {
+ "name": "Jibralta"
+ },
+ "DJ": {
+ "name": "Jibuti"
+ },
+ "GE": {
+ "name": "Jojia"
+ },
+ "KH": {
+ "name": "Kambodia"
+ },
+ "CM": {
+ "name": "Kameruni"
+ },
+ "CA": {
+ "name": "Kanada"
+ },
+ "QA": {
+ "name": "Katari"
+ },
+ "KZ": {
+ "name": "Kazakistani"
+ },
+ "KE": {
+ "name": "Kenya"
+ },
+ "CV": {
+ "name": "Kepuvede"
+ },
+ "KI": {
+ "name": "Kiribati"
+ },
+ "KG": {
+ "name": "Kirigizistani"
+ },
+ "NF": {
+ "name": "Kisiwa cha Norfok"
+ },
+ "CI": {
+ "name": "Kodivaa"
+ },
+ "CO": {
+ "name": "Kolombia"
+ },
+ "KM": {
+ "name": "Komoro"
+ },
+ "CG": {
+ "name": "Kongo"
+ },
+ "HR": {
+ "name": "Korasia"
+ },
+ "KP": {
+ "name": "Korea Kaskazini"
+ },
+ "KR": {
+ "name": "Korea Kusini"
+ },
+ "XK": {
+ "name": "Kosovo"
+ },
+ "CR": {
+ "name": "Kostarika"
+ },
+ "CU": {
+ "name": "Kuba"
+ },
+ "CY": {
+ "name": "Kuprosi"
+ },
+ "KW": {
+ "name": "Kuwaiti"
+ },
+ "LA": {
+ "name": "Laosi"
+ },
+ "LU": {
+ "name": "Lasembagi"
+ },
+ "LV": {
+ "name": "Lativia"
+ },
+ "LB": {
+ "name": "Lebanoni"
+ },
+ "LS": {
+ "name": "Lesoto"
+ },
+ "LR": {
+ "name": "Liberia"
+ },
+ "LY": {
+ "name": "Libya"
+ },
+ "LI": {
+ "name": "Lishenteni"
+ },
+ "LT": {
+ "name": "Litwania"
+ },
+ "MO": {
+ "name": "Macau SAR China"
+ },
+ "MW": {
+ "name": "Malawi"
+ },
+ "MY": {
+ "name": "Malesia"
+ },
+ "ML": {
+ "name": "Mali"
+ },
+ "MT": {
+ "name": "Malta"
+ },
+ "US": {
+ "name": "Marekani"
+ },
+ "MQ": {
+ "name": "Martiniki"
+ },
+ "MK": {
+ "name": "Masedonia"
+ },
+ "YT": {
+ "name": "Mayotte"
+ },
+ "MX": {
+ "name": "Meksiko"
+ },
+ "FM": {
+ "name": "Mikronesia"
+ },
+ "EG": {
+ "name": "Misri"
+ },
+ "MV": {
+ "name": "Modivu"
+ },
+ "MD": {
+ "name": "Moldova"
+ },
+ "MC": {
+ "name": "Monako"
+ },
+ "MN": {
+ "name": "Mongolia"
+ },
+ "ME": {
+ "name": "Montenegro"
+ },
+ "MS": {
+ "name": "Montserrati"
+ },
+ "MU": {
+ "name": "Morisi"
+ },
+ "MR": {
+ "name": "Moritania"
+ },
+ "MA": {
+ "name": "Moroko"
+ },
+ "MZ": {
+ "name": "Msumbiji"
+ },
+ "MM": {
+ "name": "Myama"
+ },
+ "NA": {
+ "name": "Namibia"
+ },
+ "NR": {
+ "name": "Nauru"
+ },
+ "NP": {
+ "name": "Nepali"
+ },
+ "NE": {
+ "name": "Nijeri"
+ },
+ "NG": {
+ "name": "Nijeria"
+ },
+ "NI": {
+ "name": "Nikaragwa"
+ },
+ "NU": {
+ "name": "Niue"
+ },
+ "NO": {
+ "name": "Norwe"
+ },
+ "NC": {
+ "name": "Nyukaledonia"
+ },
+ "NZ": {
+ "name": "Nyuzilandi"
+ },
+ "OM": {
+ "name": "Omani"
+ },
+ "PK": {
+ "name": "Pakistani"
+ },
+ "PW": {
+ "name": "Palau"
+ },
+ "PA": {
+ "name": "Panama"
+ },
+ "PG": {
+ "name": "Papua"
+ },
+ "PY": {
+ "name": "Paragwai"
+ },
+ "PE": {
+ "name": "Peru"
+ },
+ "PN": {
+ "name": "Pitkairni"
+ },
+ "PL": {
+ "name": "Polandi"
+ },
+ "PF": {
+ "name": "Polinesia ya Ufaransa"
+ },
+ "PR": {
+ "name": "Pwetoriko"
+ },
+ "RE": {
+ "name": "Riyunioni"
+ },
+ "RO": {
+ "name": "Romania"
+ },
+ "RW": {
+ "name": "Rwanda"
+ },
+ "SM": {
+ "name": "Samarino"
+ },
+ "WS": {
+ "name": "Samoa"
+ },
+ "AS": {
+ "name": "Samoa lya Marekani"
+ },
+ "SH": {
+ "name": "Santahelena"
+ },
+ "KN": {
+ "name": "Santakitzi na Nevis"
+ },
+ "LC": {
+ "name": "Santalusia"
+ },
+ "PM": {
+ "name": "Santapieri na Mikeloni"
+ },
+ "VC": {
+ "name": "Santavisenti na Grenadini"
+ },
+ "ST": {
+ "name": "Sao Tome na Principe"
+ },
+ "SA": {
+ "name": "Saudi"
+ },
+ "SN": {
+ "name": "Senegali"
+ },
+ "RS": {
+ "name": "Serbia"
+ },
+ "SC": {
+ "name": "Shelisheli"
+ },
+ "SL": {
+ "name": "Siera Leoni"
+ },
+ "SG": {
+ "name": "Singapoo"
+ },
+ "SX": {
+ "name": "Sint Maarten"
+ },
+ "SY": {
+ "name": "Siria"
+ },
+ "LK": {
+ "name": "Sirilanka"
+ },
+ "SK": {
+ "name": "Slovakia"
+ },
+ "SI": {
+ "name": "Slovenia"
+ },
+ "SO": {
+ "name": "Somalia"
+ },
+ "GS": {
+ "name": "South Georgia & South Sandwich Islands"
+ },
+ "SS": {
+ "name": "South Sudan"
+ },
+ "BL": {
+ "name": "St. Barthélemy"
+ },
+ "MF": {
+ "name": "St. Martin"
+ },
+ "SD": {
+ "name": "Sudani"
+ },
+ "SR": {
+ "name": "Surinamu"
+ },
+ "SJ": {
+ "name": "Svalbard & Jan Mayen"
+ },
+ "TH": {
+ "name": "Tailandi"
+ },
+ "TW": {
+ "name": "Taiwani"
+ },
+ "TJ": {
+ "name": "Tajikistani"
+ },
+ "TZ": {
+ "name": "Tanzania"
+ },
+ "TL": {
+ "name": "Timori ya Mashariki"
+ },
+ "TG": {
+ "name": "Togo"
+ },
+ "TK": {
+ "name": "Tokelau"
+ },
+ "TO": {
+ "name": "Tonga"
+ },
+ "TT": {
+ "name": "Trinidad na Tobago"
+ },
+ "TA": {
+ "name": "Tristan da Cunha"
+ },
+ "TN": {
+ "name": "Tunisia"
+ },
+ "TM": {
+ "name": "Turukimenistani"
+ },
+ "TV": {
+ "name": "Tuvalu"
+ },
+ "UM": {
+ "name": "U.S. Outlying Islands"
+ },
+ "IR": {
+ "name": "Uajemi"
+ },
+ "BE": {
+ "name": "Ubelgiji"
+ },
+ "FR": {
+ "name": "Ufaransa"
+ },
+ "FI": {
+ "name": "Ufini"
+ },
+ "UG": {
+ "name": "Uganda"
+ },
+ "GR": {
+ "name": "Ugiriki"
+ },
+ "ET": {
+ "name": "Uhabeshi"
+ },
+ "NL": {
+ "name": "Uholanzi"
+ },
+ "GB": {
+ "name": "Uingereza"
+ },
+ "DE": {
+ "name": "Ujerumani"
+ },
+ "PS": {
+ "name": "Ukingo wa Magharibi na Ukanda wa Gaza wa Palestina"
+ },
+ "UA": {
+ "name": "Ukraini"
+ },
+ "PT": {
+ "name": "Ureno"
+ },
+ "UY": {
+ "name": "Urugwai"
+ },
+ "RU": {
+ "name": "Urusi"
+ },
+ "SZ": {
+ "name": "Uswazi"
+ },
+ "SE": {
+ "name": "Uswidi"
+ },
+ "CH": {
+ "name": "Uswisi"
+ },
+ "TR": {
+ "name": "Uturuki"
+ },
+ "UZ": {
+ "name": "Uzibekistani"
+ },
+ "VU": {
+ "name": "Vanuatu"
+ },
+ "VA": {
+ "name": "Vatikani"
+ },
+ "VE": {
+ "name": "Venezuela"
+ },
+ "VN": {
+ "name": "Vietinamu"
+ },
+ "CK": {
+ "name": "Visiwa vya Cook"
+ },
+ "FK": {
+ "name": "Visiwa vya Falkland"
+ },
+ "KY": {
+ "name": "Visiwa vya Kayman"
+ },
+ "MP": {
+ "name": "Visiwa vya Mariana vya Kaskazini"
+ },
+ "MH": {
+ "name": "Visiwa vya Marshal"
+ },
+ "SB": {
+ "name": "Visiwa vya Solomon"
+ },
+ "TC": {
+ "name": "Visiwa vya Turki na Kaiko"
+ },
+ "VI": {
+ "name": "Visiwa vya Virgin vya Marekani"
+ },
+ "VG": {
+ "name": "Visiwa vya Virgin vya Uingereza"
+ },
+ "WF": {
+ "name": "Walis na Futuna"
+ },
+ "EH": {
+ "name": "Western Sahara"
+ },
+ "YE": {
+ "name": "Yemeni"
+ },
+ "JO": {
+ "name": "Yordani"
+ },
+ "ZM": {
+ "name": "Zambia"
+ },
+ "ZW": {
+ "name": "Zimbabwe"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/country/lv.json b/library/intl/resources/country/lv.json
new file mode 100644
index 000000000..ff93d7605
--- /dev/null
+++ b/library/intl/resources/country/lv.json
@@ -0,0 +1,761 @@
+{
+ "AF": {
+ "name": "AfganistÄna"
+ },
+ "AL": {
+ "name": "AlbÄnija"
+ },
+ "DZ": {
+ "name": "Alžīrija"
+ },
+ "AS": {
+ "name": "AmerikÄņu Samoa"
+ },
+ "US": {
+ "name": "Amerikas SavienotÄs Valstis"
+ },
+ "AD": {
+ "name": "Andora"
+ },
+ "AI": {
+ "name": "Angilja"
+ },
+ "AO": {
+ "name": "Angola"
+ },
+ "AQ": {
+ "name": "Antarktika"
+ },
+ "AG": {
+ "name": "Antigva un Barbuda"
+ },
+ "AE": {
+ "name": "Apvienotie ArÄbu EmirÄti"
+ },
+ "AR": {
+ "name": "Argentīna"
+ },
+ "AM": {
+ "name": "Armēnija"
+ },
+ "AW": {
+ "name": "Aruba"
+ },
+ "UM": {
+ "name": "ASV Aizjūras salas"
+ },
+ "VI": {
+ "name": "ASV Virdžīnas"
+ },
+ "AU": {
+ "name": "AustrÄlija"
+ },
+ "AT": {
+ "name": "Austrija"
+ },
+ "TL": {
+ "name": "Austrumtimora"
+ },
+ "AZ": {
+ "name": "AzerbaidžÄna"
+ },
+ "BS": {
+ "name": "Bahamu salas"
+ },
+ "BH": {
+ "name": "Bahreina"
+ },
+ "BY": {
+ "name": "Baltkrievija"
+ },
+ "BD": {
+ "name": "Bangladeša"
+ },
+ "BB": {
+ "name": "Barbadosa"
+ },
+ "BZ": {
+ "name": "Beliza"
+ },
+ "BE": {
+ "name": "Beļģija"
+ },
+ "BJ": {
+ "name": "Benina"
+ },
+ "BM": {
+ "name": "Bermudu salas"
+ },
+ "BO": {
+ "name": "Bolīvija"
+ },
+ "BA": {
+ "name": "Bosnija un Hercegovina"
+ },
+ "BW": {
+ "name": "BotsvÄna"
+ },
+ "BR": {
+ "name": "Brazīlija"
+ },
+ "VG": {
+ "name": "Britu Virdžīnas"
+ },
+ "BN": {
+ "name": "Bruneja"
+ },
+ "BG": {
+ "name": "BulgÄrija"
+ },
+ "BF": {
+ "name": "Burkinafaso"
+ },
+ "BI": {
+ "name": "Burundi"
+ },
+ "BT": {
+ "name": "ButÄna"
+ },
+ "CF": {
+ "name": "CentrÄlÄfrikas Republika"
+ },
+ "TD": {
+ "name": "ÄŒada"
+ },
+ "CZ": {
+ "name": "ÄŒehija"
+ },
+ "CL": {
+ "name": "Čīle"
+ },
+ "DK": {
+ "name": "DÄnija"
+ },
+ "AC": {
+ "name": "Debesbraukšanas sala"
+ },
+ "ZA": {
+ "name": "DienvidÄfrikas Republika"
+ },
+ "GS": {
+ "name": "Dienviddžordžija un DienvidsendviÄu salas"
+ },
+ "KR": {
+ "name": "Dienvidkoreja"
+ },
+ "SS": {
+ "name": "DienvidsudÄna"
+ },
+ "DG": {
+ "name": "Djego Garsijas atols"
+ },
+ "DM": {
+ "name": "Dominika"
+ },
+ "DO": {
+ "name": "DominikÄna"
+ },
+ "JE": {
+ "name": "Džērsija"
+ },
+ "DJ": {
+ "name": "Džibutija"
+ },
+ "EG": {
+ "name": "Ä’Ä£ipte"
+ },
+ "EC": {
+ "name": "Ekvadora"
+ },
+ "GQ": {
+ "name": "EkvatoriÄlÄ Gvineja"
+ },
+ "ER": {
+ "name": "Eritreja"
+ },
+ "ET": {
+ "name": "Etiopija"
+ },
+ "FO": {
+ "name": "FÄ“ru Salas"
+ },
+ "FJ": {
+ "name": "Fidži"
+ },
+ "PH": {
+ "name": "Filipīnas"
+ },
+ "FK": {
+ "name": "Folklenda salas"
+ },
+ "FR": {
+ "name": "Francija"
+ },
+ "TF": {
+ "name": "Francijas Dienvidjūru Zemes"
+ },
+ "GF": {
+ "name": "FranÄu GviÄna"
+ },
+ "PF": {
+ "name": "FranÄu PolinÄ“zija"
+ },
+ "GA": {
+ "name": "Gabona"
+ },
+ "GY": {
+ "name": "GajÄna"
+ },
+ "GM": {
+ "name": "Gambija"
+ },
+ "GH": {
+ "name": "Gana"
+ },
+ "GG": {
+ "name": "GÄ“rnsija"
+ },
+ "GI": {
+ "name": "GibraltÄrs"
+ },
+ "GD": {
+ "name": "GrenÄda"
+ },
+ "GL": {
+ "name": "Grenlande"
+ },
+ "GR": {
+ "name": "GrieÄ·ija"
+ },
+ "GE": {
+ "name": "Gruzija"
+ },
+ "GU": {
+ "name": "Guama"
+ },
+ "GP": {
+ "name": "Gvadelupa"
+ },
+ "GT": {
+ "name": "Gvatemala"
+ },
+ "GN": {
+ "name": "Gvineja"
+ },
+ "GW": {
+ "name": "Gvineja-Bisava"
+ },
+ "HT": {
+ "name": "Haiti"
+ },
+ "HN": {
+ "name": "Hondurasa"
+ },
+ "HR": {
+ "name": "HorvÄtija"
+ },
+ "EE": {
+ "name": "Igaunija"
+ },
+ "IN": {
+ "name": "Indija"
+ },
+ "IO": {
+ "name": "Indijas okeÄna Britu teritorija"
+ },
+ "ID": {
+ "name": "Indonēzija"
+ },
+ "IQ": {
+ "name": "IrÄka"
+ },
+ "IR": {
+ "name": "IrÄna"
+ },
+ "IE": {
+ "name": "Īrija"
+ },
+ "IS": {
+ "name": "Īslande"
+ },
+ "IT": {
+ "name": "ItÄlija"
+ },
+ "IL": {
+ "name": "Izraēla"
+ },
+ "JM": {
+ "name": "Jamaika"
+ },
+ "JP": {
+ "name": "JapÄna"
+ },
+ "NC": {
+ "name": "Jaunkaledonija"
+ },
+ "NZ": {
+ "name": "Jaunzēlande"
+ },
+ "YE": {
+ "name": "Jemena"
+ },
+ "JO": {
+ "name": "JordÄnija"
+ },
+ "CV": {
+ "name": "Kaboverde"
+ },
+ "KY": {
+ "name": "Kaimanu salas"
+ },
+ "KH": {
+ "name": "Kambodža"
+ },
+ "CM": {
+ "name": "Kamerūna"
+ },
+ "CA": {
+ "name": "KanÄda"
+ },
+ "IC": {
+ "name": "KanÄriju salas"
+ },
+ "QA": {
+ "name": "Katara"
+ },
+ "KZ": {
+ "name": "KazahstÄna"
+ },
+ "KE": {
+ "name": "Kenija"
+ },
+ "CY": {
+ "name": "Kipra"
+ },
+ "CW": {
+ "name": "Kirasao"
+ },
+ "KG": {
+ "name": "KirgizstÄna"
+ },
+ "KI": {
+ "name": "Kiribati"
+ },
+ "CC": {
+ "name": "Kokosu jeb KÄ«linga salas"
+ },
+ "CO": {
+ "name": "Kolumbija"
+ },
+ "KM": {
+ "name": "Komoru salas"
+ },
+ "CG": {
+ "name": "Kongo - Brazavila"
+ },
+ "CD": {
+ "name": "Kongo-Kinšasa"
+ },
+ "XK": {
+ "name": "Kosova"
+ },
+ "CR": {
+ "name": "Kostarika"
+ },
+ "CI": {
+ "name": "KotdivuÄra"
+ },
+ "RU": {
+ "name": "Krievija"
+ },
+ "CU": {
+ "name": "Kuba"
+ },
+ "CK": {
+ "name": "Kuka salas"
+ },
+ "KW": {
+ "name": "Kuveita"
+ },
+ "CN": {
+ "name": "Ķīna"
+ },
+ "HK": {
+ "name": "Ķīnas Ä«paÅ¡Äs pÄrvaldes apgabals Honkonga"
+ },
+ "MO": {
+ "name": "Ķīnas Ä«paÅ¡Äs pÄrvaldes apgabals Makao"
+ },
+ "LA": {
+ "name": "Laosa"
+ },
+ "LV": {
+ "name": "Latvija"
+ },
+ "LS": {
+ "name": "Lesoto"
+ },
+ "LB": {
+ "name": "LibÄna"
+ },
+ "LR": {
+ "name": "Libērija"
+ },
+ "LY": {
+ "name": "LÄ«bija"
+ },
+ "GB": {
+ "name": "LielbritÄnija"
+ },
+ "LT": {
+ "name": "Lietuva"
+ },
+ "LI": {
+ "name": "Lihtenšteina"
+ },
+ "LU": {
+ "name": "Luksemburga"
+ },
+ "MG": {
+ "name": "Madagaskara"
+ },
+ "YT": {
+ "name": "Majota"
+ },
+ "MK": {
+ "name": "MaÄ·edonija"
+ },
+ "MY": {
+ "name": "Malaizija"
+ },
+ "MW": {
+ "name": "MalÄvija"
+ },
+ "MV": {
+ "name": "Maldīvija"
+ },
+ "ML": {
+ "name": "Mali"
+ },
+ "MT": {
+ "name": "Malta"
+ },
+ "MA": {
+ "name": "Maroka"
+ },
+ "MH": {
+ "name": "MÄrÅ¡ala salas"
+ },
+ "MQ": {
+ "name": "Martinika"
+ },
+ "MU": {
+ "name": "Maurīcija"
+ },
+ "MR": {
+ "name": "MauritÄnija"
+ },
+ "MX": {
+ "name": "Meksika"
+ },
+ "ME": {
+ "name": "Melnkalne"
+ },
+ "IM": {
+ "name": "Mena"
+ },
+ "FM": {
+ "name": "Mikronēzija"
+ },
+ "MM": {
+ "name": "Mjanma (Birma)"
+ },
+ "MD": {
+ "name": "Moldova"
+ },
+ "MC": {
+ "name": "Monako"
+ },
+ "MN": {
+ "name": "Mongolija"
+ },
+ "MS": {
+ "name": "Montserrata"
+ },
+ "MZ": {
+ "name": "Mozambika"
+ },
+ "NA": {
+ "name": "Namībija"
+ },
+ "NR": {
+ "name": "Nauru"
+ },
+ "NP": {
+ "name": "NepÄla"
+ },
+ "NL": {
+ "name": "NÄ«derlande"
+ },
+ "BQ": {
+ "name": "Nīderlandes Karību salas"
+ },
+ "NE": {
+ "name": "Nigēra"
+ },
+ "NG": {
+ "name": "Nigērija"
+ },
+ "NI": {
+ "name": "Nikaragva"
+ },
+ "NU": {
+ "name": "Niue"
+ },
+ "NF": {
+ "name": "Norfolkas sala"
+ },
+ "NO": {
+ "name": "Norvēģija"
+ },
+ "AX": {
+ "name": "Olandes salas"
+ },
+ "OM": {
+ "name": "OmÄna"
+ },
+ "PK": {
+ "name": "PakistÄna"
+ },
+ "PW": {
+ "name": "Palau"
+ },
+ "PS": {
+ "name": "Palestīna"
+ },
+ "PA": {
+ "name": "Panama"
+ },
+ "PG": {
+ "name": "Papua-Jaungvineja"
+ },
+ "PY": {
+ "name": "Paragvaja"
+ },
+ "PE": {
+ "name": "Peru"
+ },
+ "PN": {
+ "name": "Pitkērna"
+ },
+ "PL": {
+ "name": "Polija"
+ },
+ "PT": {
+ "name": "PortugÄle"
+ },
+ "PR": {
+ "name": "Puertoriko"
+ },
+ "RE": {
+ "name": "Reinjona"
+ },
+ "EH": {
+ "name": "RietumsahÄra"
+ },
+ "RW": {
+ "name": "Ruanda"
+ },
+ "RO": {
+ "name": "RumÄnija"
+ },
+ "SV": {
+ "name": "Salvadora"
+ },
+ "WS": {
+ "name": "Samoa"
+ },
+ "SM": {
+ "name": "Sanmarīno"
+ },
+ "ST": {
+ "name": "Santome un Prinsipi"
+ },
+ "SA": {
+ "name": "SaÅ«da ArÄbija"
+ },
+ "BL": {
+ "name": "Senbartelmī"
+ },
+ "SN": {
+ "name": "SenegÄla"
+ },
+ "MF": {
+ "name": "Senmartēna"
+ },
+ "PM": {
+ "name": "Senpjēra un Mikelona"
+ },
+ "KN": {
+ "name": "Sentkitsa un Nevisa"
+ },
+ "LC": {
+ "name": "Sentlūsija"
+ },
+ "VC": {
+ "name": "Sentvinsenta un Grenadīnas"
+ },
+ "RS": {
+ "name": "Serbija"
+ },
+ "EA": {
+ "name": "Seūta un Melilja"
+ },
+ "SG": {
+ "name": "Singapūra"
+ },
+ "SX": {
+ "name": "SintmÄrtena"
+ },
+ "SY": {
+ "name": "SÄ«rija"
+ },
+ "SL": {
+ "name": "Sjerraleone"
+ },
+ "SK": {
+ "name": "SlovÄkija"
+ },
+ "SI": {
+ "name": "Slovēnija"
+ },
+ "SO": {
+ "name": "SomÄlija"
+ },
+ "FI": {
+ "name": "Somija"
+ },
+ "ES": {
+ "name": "SpÄnija"
+ },
+ "SD": {
+ "name": "SudÄna"
+ },
+ "SR": {
+ "name": "Surinama"
+ },
+ "SH": {
+ "name": "Sv.Helēnas sala"
+ },
+ "SJ": {
+ "name": "SvalbÄra un Jana Majena sala"
+ },
+ "SZ": {
+ "name": "Svazilenda"
+ },
+ "SC": {
+ "name": "Šeišelu salas"
+ },
+ "LK": {
+ "name": "Å rilanka"
+ },
+ "CH": {
+ "name": "Å veice"
+ },
+ "TJ": {
+ "name": "TadžikistÄna"
+ },
+ "TW": {
+ "name": "TaivÄna"
+ },
+ "TH": {
+ "name": "Taizeme"
+ },
+ "TZ": {
+ "name": "TanzÄnija"
+ },
+ "TC": {
+ "name": "TÄ“rksas un Kaikosas salas"
+ },
+ "TG": {
+ "name": "Togo"
+ },
+ "TK": {
+ "name": "Tokelau"
+ },
+ "TO": {
+ "name": "Tonga"
+ },
+ "TT": {
+ "name": "TrinidÄda un TobÄgo"
+ },
+ "TA": {
+ "name": "Tristana da Kuņas salas"
+ },
+ "TN": {
+ "name": "Tunisija"
+ },
+ "TR": {
+ "name": "Turcija"
+ },
+ "TM": {
+ "name": "TurkmenistÄna"
+ },
+ "TV": {
+ "name": "Tuvalu"
+ },
+ "UG": {
+ "name": "Uganda"
+ },
+ "UA": {
+ "name": "Ukraina"
+ },
+ "HU": {
+ "name": "UngÄrija"
+ },
+ "UY": {
+ "name": "Urugvaja"
+ },
+ "UZ": {
+ "name": "UzbekistÄna"
+ },
+ "DE": {
+ "name": "VÄcija"
+ },
+ "VU": {
+ "name": "Vanuatu"
+ },
+ "VA": {
+ "name": "VatikÄns"
+ },
+ "VE": {
+ "name": "Venecuēla"
+ },
+ "VN": {
+ "name": "Vjetnama"
+ },
+ "WF": {
+ "name": "Volisa un Futuna"
+ },
+ "SB": {
+ "name": "ZÄlamana salas"
+ },
+ "ZM": {
+ "name": "Zambija"
+ },
+ "KP": {
+ "name": "Ziemeļkoreja"
+ },
+ "MP": {
+ "name": "Ziemeļu Marianas salas"
+ },
+ "CX": {
+ "name": "Ziemsvētku sala"
+ },
+ "ZW": {
+ "name": "Zimbabve"
+ },
+ "SE": {
+ "name": "Zviedrija"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/country/mas.json b/library/intl/resources/country/mas.json
new file mode 100644
index 000000000..5ad80c6ba
--- /dev/null
+++ b/library/intl/resources/country/mas.json
@@ -0,0 +1,761 @@
+{
+ "ZA": {
+ "name": "Afrika Kusini"
+ },
+ "AF": {
+ "name": "Afuganistani"
+ },
+ "IS": {
+ "name": "Aislandi"
+ },
+ "AR": {
+ "name": "Ajentina"
+ },
+ "AX": {
+ "name": "Ã…land Islands"
+ },
+ "AL": {
+ "name": "Albania"
+ },
+ "DZ": {
+ "name": "Aljeria"
+ },
+ "AD": {
+ "name": "Andora"
+ },
+ "AO": {
+ "name": "Angola"
+ },
+ "AI": {
+ "name": "Anguilla"
+ },
+ "AQ": {
+ "name": "Antarctica"
+ },
+ "AG": {
+ "name": "Antigua na Barbuda"
+ },
+ "AM": {
+ "name": "Armenia"
+ },
+ "AW": {
+ "name": "Aruba"
+ },
+ "AC": {
+ "name": "Ascension Island"
+ },
+ "AU": {
+ "name": "Australia"
+ },
+ "AT": {
+ "name": "Austria"
+ },
+ "IE": {
+ "name": "Ayalandi"
+ },
+ "AZ": {
+ "name": "Azabajani"
+ },
+ "BB": {
+ "name": "Babadosi"
+ },
+ "BS": {
+ "name": "Bahama"
+ },
+ "BH": {
+ "name": "Bahareni"
+ },
+ "BD": {
+ "name": "Bangladeshi"
+ },
+ "BY": {
+ "name": "Belarusi"
+ },
+ "BZ": {
+ "name": "Belize"
+ },
+ "BJ": {
+ "name": "Benini"
+ },
+ "BM": {
+ "name": "Bermuda"
+ },
+ "BO": {
+ "name": "Bolivia"
+ },
+ "BA": {
+ "name": "Bosnia na Hezegovina"
+ },
+ "BW": {
+ "name": "Botswana"
+ },
+ "BR": {
+ "name": "Brazili"
+ },
+ "BN": {
+ "name": "Brunei"
+ },
+ "BF": {
+ "name": "Bukinafaso"
+ },
+ "MG": {
+ "name": "Bukini"
+ },
+ "BG": {
+ "name": "Bulgaria"
+ },
+ "BI": {
+ "name": "Burundi"
+ },
+ "BT": {
+ "name": "Butani"
+ },
+ "IC": {
+ "name": "Canary Islands"
+ },
+ "BQ": {
+ "name": "Caribbean Netherlands"
+ },
+ "EA": {
+ "name": "Ceuta & Melilla"
+ },
+ "TD": {
+ "name": "Chadi"
+ },
+ "CL": {
+ "name": "Chile"
+ },
+ "CN": {
+ "name": "China"
+ },
+ "CX": {
+ "name": "Christmas Island"
+ },
+ "CC": {
+ "name": "Cocos (Keeling) Islands"
+ },
+ "CW": {
+ "name": "Curaçao"
+ },
+ "DK": {
+ "name": "Denmaki"
+ },
+ "DG": {
+ "name": "Diego Garcia"
+ },
+ "DM": {
+ "name": "Dominika"
+ },
+ "EC": {
+ "name": "Ekwado"
+ },
+ "SV": {
+ "name": "Elsavado"
+ },
+ "IO": {
+ "name": "Eneo la Uingereza katika Bahari Hindi"
+ },
+ "ER": {
+ "name": "Eritrea"
+ },
+ "EE": {
+ "name": "Estonia"
+ },
+ "AE": {
+ "name": "Falme za Kiarabu"
+ },
+ "FO": {
+ "name": "Faroe Islands"
+ },
+ "FJ": {
+ "name": "Fiji"
+ },
+ "PH": {
+ "name": "Filipino"
+ },
+ "TF": {
+ "name": "French Southern Territories"
+ },
+ "GA": {
+ "name": "Gaboni"
+ },
+ "GM": {
+ "name": "Gambia"
+ },
+ "GH": {
+ "name": "Ghana"
+ },
+ "GN": {
+ "name": "Gine"
+ },
+ "GW": {
+ "name": "Ginebisau"
+ },
+ "GQ": {
+ "name": "Ginekweta"
+ },
+ "GD": {
+ "name": "Grenada"
+ },
+ "GL": {
+ "name": "Grinlandi"
+ },
+ "GG": {
+ "name": "Guernsey"
+ },
+ "GY": {
+ "name": "Guyana"
+ },
+ "GP": {
+ "name": "Gwadelupe"
+ },
+ "GU": {
+ "name": "Gwam"
+ },
+ "GT": {
+ "name": "Gwatemala"
+ },
+ "GF": {
+ "name": "Gwiyana ya Ufaransa"
+ },
+ "HT": {
+ "name": "Haiti"
+ },
+ "ES": {
+ "name": "Hispania"
+ },
+ "HN": {
+ "name": "Hondurasi"
+ },
+ "HK": {
+ "name": "Hong Kong SAR China"
+ },
+ "HU": {
+ "name": "Hungaria"
+ },
+ "IN": {
+ "name": "India"
+ },
+ "ID": {
+ "name": "Indonesia"
+ },
+ "IQ": {
+ "name": "Iraki"
+ },
+ "IM": {
+ "name": "Isle of Man"
+ },
+ "IL": {
+ "name": "Israeli"
+ },
+ "IT": {
+ "name": "Italia"
+ },
+ "JM": {
+ "name": "Jamaika"
+ },
+ "CF": {
+ "name": "Jamhuri ya Afrika ya Kati"
+ },
+ "CZ": {
+ "name": "Jamhuri ya Cheki"
+ },
+ "DO": {
+ "name": "Jamhuri ya Dominika"
+ },
+ "CD": {
+ "name": "Jamhuri ya Kidemokrasia ya Kongo"
+ },
+ "JP": {
+ "name": "Japani"
+ },
+ "JE": {
+ "name": "Jersey"
+ },
+ "GI": {
+ "name": "Jibralta"
+ },
+ "DJ": {
+ "name": "Jibuti"
+ },
+ "GE": {
+ "name": "Jojia"
+ },
+ "KH": {
+ "name": "Kambodia"
+ },
+ "CM": {
+ "name": "Kameruni"
+ },
+ "CA": {
+ "name": "Kanada"
+ },
+ "QA": {
+ "name": "Katari"
+ },
+ "KZ": {
+ "name": "Kazakistani"
+ },
+ "KE": {
+ "name": "Kenya"
+ },
+ "CV": {
+ "name": "Kepuvede"
+ },
+ "KI": {
+ "name": "Kiribati"
+ },
+ "KG": {
+ "name": "Kirigizistani"
+ },
+ "NF": {
+ "name": "Kisiwa cha Norfok"
+ },
+ "CI": {
+ "name": "Kodivaa"
+ },
+ "CO": {
+ "name": "Kolombia"
+ },
+ "KM": {
+ "name": "Komoro"
+ },
+ "CG": {
+ "name": "Kongo"
+ },
+ "HR": {
+ "name": "Korasia"
+ },
+ "KP": {
+ "name": "Korea Kaskazini"
+ },
+ "KR": {
+ "name": "Korea Kusini"
+ },
+ "XK": {
+ "name": "Kosovo"
+ },
+ "CR": {
+ "name": "Kostarika"
+ },
+ "CU": {
+ "name": "Kuba"
+ },
+ "CY": {
+ "name": "Kuprosi"
+ },
+ "KW": {
+ "name": "Kuwaiti"
+ },
+ "LA": {
+ "name": "Laosi"
+ },
+ "LU": {
+ "name": "Lasembagi"
+ },
+ "LV": {
+ "name": "Lativia"
+ },
+ "LB": {
+ "name": "Lebanoni"
+ },
+ "LS": {
+ "name": "Lesoto"
+ },
+ "LR": {
+ "name": "Liberia"
+ },
+ "LY": {
+ "name": "Libya"
+ },
+ "LI": {
+ "name": "Lishenteni"
+ },
+ "LT": {
+ "name": "Litwania"
+ },
+ "MO": {
+ "name": "Macau SAR China"
+ },
+ "MW": {
+ "name": "Malawi"
+ },
+ "MY": {
+ "name": "Malesia"
+ },
+ "ML": {
+ "name": "Mali"
+ },
+ "MT": {
+ "name": "Malta"
+ },
+ "US": {
+ "name": "Marekani"
+ },
+ "MQ": {
+ "name": "Martiniki"
+ },
+ "MK": {
+ "name": "Masedonia"
+ },
+ "YT": {
+ "name": "Mayotte"
+ },
+ "MX": {
+ "name": "Meksiko"
+ },
+ "FM": {
+ "name": "Mikronesia"
+ },
+ "EG": {
+ "name": "Misri"
+ },
+ "MV": {
+ "name": "Modivu"
+ },
+ "MD": {
+ "name": "Moldova"
+ },
+ "MC": {
+ "name": "Monako"
+ },
+ "MN": {
+ "name": "Mongolia"
+ },
+ "ME": {
+ "name": "Montenegro"
+ },
+ "MS": {
+ "name": "Montserrati"
+ },
+ "MU": {
+ "name": "Morisi"
+ },
+ "MR": {
+ "name": "Moritania"
+ },
+ "MA": {
+ "name": "Moroko"
+ },
+ "MZ": {
+ "name": "Msumbiji"
+ },
+ "MM": {
+ "name": "Myama"
+ },
+ "NA": {
+ "name": "Namibia"
+ },
+ "NR": {
+ "name": "Nauru"
+ },
+ "NP": {
+ "name": "Nepali"
+ },
+ "NE": {
+ "name": "Nijeri"
+ },
+ "NG": {
+ "name": "Nijeria"
+ },
+ "NI": {
+ "name": "Nikaragwa"
+ },
+ "NU": {
+ "name": "Niue"
+ },
+ "NO": {
+ "name": "Norwe"
+ },
+ "NC": {
+ "name": "Nyukaledonia"
+ },
+ "NZ": {
+ "name": "Nyuzilandi"
+ },
+ "OM": {
+ "name": "Omani"
+ },
+ "PK": {
+ "name": "Pakistani"
+ },
+ "PW": {
+ "name": "Palau"
+ },
+ "PA": {
+ "name": "Panama"
+ },
+ "PG": {
+ "name": "Papua"
+ },
+ "PY": {
+ "name": "Paragwai"
+ },
+ "PE": {
+ "name": "Peru"
+ },
+ "PN": {
+ "name": "Pitkairni"
+ },
+ "PL": {
+ "name": "Polandi"
+ },
+ "PF": {
+ "name": "Polinesia ya Ufaransa"
+ },
+ "PR": {
+ "name": "Pwetoriko"
+ },
+ "RE": {
+ "name": "Riyunioni"
+ },
+ "RO": {
+ "name": "Romania"
+ },
+ "RW": {
+ "name": "Rwanda"
+ },
+ "SM": {
+ "name": "Samarino"
+ },
+ "ZM": {
+ "name": "Sambia"
+ },
+ "WS": {
+ "name": "Samoa"
+ },
+ "AS": {
+ "name": "Samoa ya Marekani"
+ },
+ "SH": {
+ "name": "Santahelena"
+ },
+ "KN": {
+ "name": "Santakitzi na Nevis"
+ },
+ "LC": {
+ "name": "Santalusia"
+ },
+ "PM": {
+ "name": "Santapieri na Mikeloni"
+ },
+ "VC": {
+ "name": "Santavisenti na Grenadini"
+ },
+ "ST": {
+ "name": "Sao Tome na Principe"
+ },
+ "SA": {
+ "name": "Saudi"
+ },
+ "SN": {
+ "name": "Senegali"
+ },
+ "RS": {
+ "name": "Serbia"
+ },
+ "SC": {
+ "name": "Shelisheli"
+ },
+ "SL": {
+ "name": "Siera Leoni"
+ },
+ "ZW": {
+ "name": "Simbabwe"
+ },
+ "SG": {
+ "name": "Singapoo"
+ },
+ "SX": {
+ "name": "Sint Maarten"
+ },
+ "SY": {
+ "name": "Siria"
+ },
+ "LK": {
+ "name": "Sirilanka"
+ },
+ "SK": {
+ "name": "Slovakia"
+ },
+ "SI": {
+ "name": "Slovenia"
+ },
+ "SO": {
+ "name": "Somalia"
+ },
+ "GS": {
+ "name": "South Georgia & South Sandwich Islands"
+ },
+ "SS": {
+ "name": "South Sudan"
+ },
+ "BL": {
+ "name": "St. Barthélemy"
+ },
+ "MF": {
+ "name": "St. Martin"
+ },
+ "SD": {
+ "name": "Sudani"
+ },
+ "SR": {
+ "name": "Surinamu"
+ },
+ "SJ": {
+ "name": "Svalbard & Jan Mayen"
+ },
+ "TH": {
+ "name": "Tailandi"
+ },
+ "TW": {
+ "name": "Taiwani"
+ },
+ "TJ": {
+ "name": "Tajikistani"
+ },
+ "TZ": {
+ "name": "Tansania"
+ },
+ "TL": {
+ "name": "Timori ya Mashariki"
+ },
+ "TG": {
+ "name": "Togo"
+ },
+ "TK": {
+ "name": "Tokelau"
+ },
+ "TO": {
+ "name": "Tonga"
+ },
+ "TT": {
+ "name": "Trinidad na Tobago"
+ },
+ "TA": {
+ "name": "Tristan da Cunha"
+ },
+ "TN": {
+ "name": "Tunisia"
+ },
+ "TM": {
+ "name": "Turukimenistani"
+ },
+ "TV": {
+ "name": "Tuvalu"
+ },
+ "UM": {
+ "name": "U.S. Outlying Islands"
+ },
+ "IR": {
+ "name": "Uajemi"
+ },
+ "BE": {
+ "name": "Ubelgiji"
+ },
+ "FR": {
+ "name": "Ufaransa"
+ },
+ "FI": {
+ "name": "Ufini"
+ },
+ "UG": {
+ "name": "Uganda"
+ },
+ "GR": {
+ "name": "Ugiriki"
+ },
+ "ET": {
+ "name": "Uhabeshi"
+ },
+ "NL": {
+ "name": "Uholanzi"
+ },
+ "GB": {
+ "name": "Uingereza"
+ },
+ "DE": {
+ "name": "Ujerumani"
+ },
+ "PS": {
+ "name": "Ukingo wa Magharibi na Ukanda wa Gaza wa Palestina"
+ },
+ "UA": {
+ "name": "Ukraini"
+ },
+ "PT": {
+ "name": "Ureno"
+ },
+ "UY": {
+ "name": "Urugwai"
+ },
+ "RU": {
+ "name": "Urusi"
+ },
+ "SZ": {
+ "name": "Uswazi"
+ },
+ "SE": {
+ "name": "Uswidi"
+ },
+ "CH": {
+ "name": "Uswisi"
+ },
+ "TR": {
+ "name": "Uturuki"
+ },
+ "UZ": {
+ "name": "Uzibekistani"
+ },
+ "VU": {
+ "name": "Vanuatu"
+ },
+ "VA": {
+ "name": "Vatikani"
+ },
+ "VE": {
+ "name": "Venezuela"
+ },
+ "VN": {
+ "name": "Vietinamu"
+ },
+ "CK": {
+ "name": "Visiwa vya Cook"
+ },
+ "FK": {
+ "name": "Visiwa vya Falkland"
+ },
+ "KY": {
+ "name": "Visiwa vya Kayman"
+ },
+ "MP": {
+ "name": "Visiwa vya Mariana vya Kaskazini"
+ },
+ "MH": {
+ "name": "Visiwa vya Marshal"
+ },
+ "SB": {
+ "name": "Visiwa vya Solomon"
+ },
+ "TC": {
+ "name": "Visiwa vya Turki na Kaiko"
+ },
+ "VI": {
+ "name": "Visiwa vya Virgin vya Marekani"
+ },
+ "VG": {
+ "name": "Visiwa vya Virgin vya Uingereza"
+ },
+ "WF": {
+ "name": "Walis na Futuna"
+ },
+ "EH": {
+ "name": "Western Sahara"
+ },
+ "YE": {
+ "name": "Yemeni"
+ },
+ "JO": {
+ "name": "Yordani"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/country/mer.json b/library/intl/resources/country/mer.json
new file mode 100644
index 000000000..222406ed9
--- /dev/null
+++ b/library/intl/resources/country/mer.json
@@ -0,0 +1,761 @@
+{
+ "IE": {
+ "name": "Aelandi"
+ },
+ "ZA": {
+ "name": "Afrika ya Southi"
+ },
+ "AF": {
+ "name": "Afuganistani"
+ },
+ "CK": {
+ "name": "AÄ©randi cia Cook"
+ },
+ "FK": {
+ "name": "AÄ©randi cia Falklandi"
+ },
+ "KY": {
+ "name": "AÄ©randi cia Kayman"
+ },
+ "MP": {
+ "name": "AÄ©randi cia Mariana ya nothi"
+ },
+ "MH": {
+ "name": "AÄ©randi cia Marshal"
+ },
+ "NF": {
+ "name": "AÄ©randi cia Norfok"
+ },
+ "SB": {
+ "name": "Airandi Cia Solomon"
+ },
+ "TC": {
+ "name": "Aĩrandi cia Takĩ na Kaiko"
+ },
+ "VI": {
+ "name": "AÄ©randi cia Virgin cia Amerika"
+ },
+ "VG": {
+ "name": "AÄ©randi cia Virgin cia Ngeretha"
+ },
+ "IS": {
+ "name": "Aisilandi"
+ },
+ "AR": {
+ "name": "Ajentina"
+ },
+ "AX": {
+ "name": "Ã…land Islands"
+ },
+ "AL": {
+ "name": "Alubania"
+ },
+ "US": {
+ "name": "Amerika"
+ },
+ "AD": {
+ "name": "Andora"
+ },
+ "DZ": {
+ "name": "Angiria"
+ },
+ "AO": {
+ "name": "Angola"
+ },
+ "AI": {
+ "name": "Anguilla"
+ },
+ "AQ": {
+ "name": "Antarctica"
+ },
+ "AG": {
+ "name": "Antigua na Barbuda"
+ },
+ "AM": {
+ "name": "Armenia"
+ },
+ "AW": {
+ "name": "Aruba"
+ },
+ "AC": {
+ "name": "Ascension Island"
+ },
+ "AT": {
+ "name": "Austiria"
+ },
+ "AU": {
+ "name": "Austrĩlia"
+ },
+ "AZ": {
+ "name": "Azebaijani"
+ },
+ "BB": {
+ "name": "Babadosi"
+ },
+ "BS": {
+ "name": "Bahamasi"
+ },
+ "BH": {
+ "name": "Baharini"
+ },
+ "BM": {
+ "name": "Bamuda"
+ },
+ "BD": {
+ "name": "Bangiradeshi"
+ },
+ "BY": {
+ "name": "Belarusi"
+ },
+ "BZ": {
+ "name": "Belize"
+ },
+ "BJ": {
+ "name": "Benini"
+ },
+ "BE": {
+ "name": "Beronjiamu"
+ },
+ "BO": {
+ "name": "Bolivia"
+ },
+ "BA": {
+ "name": "Bosnia na Hezegovina"
+ },
+ "BW": {
+ "name": "Botswana"
+ },
+ "BR": {
+ "name": "Brazilu"
+ },
+ "BN": {
+ "name": "Brunei"
+ },
+ "BF": {
+ "name": "Bukinafaso"
+ },
+ "BG": {
+ "name": "Bulgaria"
+ },
+ "BI": {
+ "name": "Burundi"
+ },
+ "BT": {
+ "name": "Butani"
+ },
+ "CY": {
+ "name": "Caipurasi"
+ },
+ "IC": {
+ "name": "Canary Islands"
+ },
+ "BQ": {
+ "name": "Caribbean Netherlands"
+ },
+ "EA": {
+ "name": "Ceuta & Melilla"
+ },
+ "TD": {
+ "name": "Chadi"
+ },
+ "CL": {
+ "name": "Chile"
+ },
+ "CN": {
+ "name": "China"
+ },
+ "CX": {
+ "name": "Christmas Island"
+ },
+ "CC": {
+ "name": "Cocos (Keeling) Islands"
+ },
+ "CW": {
+ "name": "Curaçao"
+ },
+ "DK": {
+ "name": "Denimaki"
+ },
+ "DG": {
+ "name": "Diego Garcia"
+ },
+ "DM": {
+ "name": "Dominika"
+ },
+ "EC": {
+ "name": "Ekwado"
+ },
+ "SV": {
+ "name": "Elsavado"
+ },
+ "ER": {
+ "name": "Eritrea"
+ },
+ "EE": {
+ "name": "Estonia"
+ },
+ "AE": {
+ "name": "Falme cia Kiarabu"
+ },
+ "FO": {
+ "name": "Faroe Islands"
+ },
+ "FJ": {
+ "name": "Fiji"
+ },
+ "PH": {
+ "name": "Filipino"
+ },
+ "FI": {
+ "name": "Finilandi"
+ },
+ "FR": {
+ "name": "Fransi"
+ },
+ "TF": {
+ "name": "French Southern Territories"
+ },
+ "GA": {
+ "name": "Gaboni"
+ },
+ "GM": {
+ "name": "Gambia"
+ },
+ "GH": {
+ "name": "Ghana"
+ },
+ "GN": {
+ "name": "Gine"
+ },
+ "GQ": {
+ "name": "Gine ya Iquita"
+ },
+ "GW": {
+ "name": "Ginebisau"
+ },
+ "GD": {
+ "name": "Grenada"
+ },
+ "GG": {
+ "name": "Guernsey"
+ },
+ "GY": {
+ "name": "Guyana"
+ },
+ "GP": {
+ "name": "Gwadelupe"
+ },
+ "GU": {
+ "name": "Gwam"
+ },
+ "GT": {
+ "name": "Gwatemala"
+ },
+ "GF": {
+ "name": "Gwiyana ya Fransi"
+ },
+ "HT": {
+ "name": "Haiti"
+ },
+ "HU": {
+ "name": "Hangarĩ"
+ },
+ "NL": {
+ "name": "Holandi"
+ },
+ "HN": {
+ "name": "Hondurasi"
+ },
+ "HK": {
+ "name": "Hong Kong SAR China"
+ },
+ "IN": {
+ "name": "India"
+ },
+ "ID": {
+ "name": "Indonesia"
+ },
+ "IQ": {
+ "name": "Iraki"
+ },
+ "IR": {
+ "name": "Irani"
+ },
+ "IL": {
+ "name": "Isiraeli"
+ },
+ "IM": {
+ "name": "Isle of Man"
+ },
+ "IT": {
+ "name": "Italĩ"
+ },
+ "ET": {
+ "name": "Ithiopia"
+ },
+ "JM": {
+ "name": "Jamaika"
+ },
+ "JP": {
+ "name": "Japani"
+ },
+ "JE": {
+ "name": "Jersey"
+ },
+ "DJ": {
+ "name": "Jibuti"
+ },
+ "GE": {
+ "name": "Jojia"
+ },
+ "JO": {
+ "name": "Jorondani"
+ },
+ "NC": {
+ "name": "Kalendoia Ĩnjeru"
+ },
+ "KH": {
+ "name": "Kambodia"
+ },
+ "CM": {
+ "name": "Kameruni"
+ },
+ "CA": {
+ "name": "Kanada"
+ },
+ "QA": {
+ "name": "Kata"
+ },
+ "KZ": {
+ "name": "Kazakistani"
+ },
+ "KE": {
+ "name": "Kenya"
+ },
+ "CV": {
+ "name": "Kepuvede"
+ },
+ "KI": {
+ "name": "Kiribati"
+ },
+ "KG": {
+ "name": "Kirigizistani"
+ },
+ "CU": {
+ "name": "Kiuba"
+ },
+ "CI": {
+ "name": "Kodivaa"
+ },
+ "CO": {
+ "name": "Kolombia"
+ },
+ "KM": {
+ "name": "Komoro"
+ },
+ "CG": {
+ "name": "Kongo"
+ },
+ "KP": {
+ "name": "Korea Nothi"
+ },
+ "KR": {
+ "name": "Korea Saũthi"
+ },
+ "HR": {
+ "name": "Koroashia"
+ },
+ "XK": {
+ "name": "Kosovo"
+ },
+ "CR": {
+ "name": "Kostarika"
+ },
+ "KW": {
+ "name": "Kuwĩ ti"
+ },
+ "LA": {
+ "name": "Laosi"
+ },
+ "LV": {
+ "name": "Lativia"
+ },
+ "LB": {
+ "name": "Lebanoni"
+ },
+ "LS": {
+ "name": "Lesotho"
+ },
+ "LR": {
+ "name": "Liberia"
+ },
+ "LY": {
+ "name": "LÄ©bia"
+ },
+ "LI": {
+ "name": "Lishenteni"
+ },
+ "LT": {
+ "name": "Lithuania"
+ },
+ "LU": {
+ "name": "Luxembogu"
+ },
+ "MO": {
+ "name": "Macau SAR China"
+ },
+ "MK": {
+ "name": "Macedonia"
+ },
+ "MG": {
+ "name": "Madagasika"
+ },
+ "MW": {
+ "name": "Malawi"
+ },
+ "ML": {
+ "name": "Mali"
+ },
+ "MY": {
+ "name": "Malĩsia"
+ },
+ "MT": {
+ "name": "Malta"
+ },
+ "MQ": {
+ "name": "Martiniki"
+ },
+ "MR": {
+ "name": "Mauritania"
+ },
+ "MU": {
+ "name": "Maurĩtiasi"
+ },
+ "YT": {
+ "name": "Mayotte"
+ },
+ "MX": {
+ "name": "Mexiko"
+ },
+ "FM": {
+ "name": "Mikronesia"
+ },
+ "EG": {
+ "name": "Misiri"
+ },
+ "MV": {
+ "name": "Modivu"
+ },
+ "MD": {
+ "name": "Moldova"
+ },
+ "MC": {
+ "name": "Monako"
+ },
+ "MN": {
+ "name": "Mongolia"
+ },
+ "ME": {
+ "name": "Montenegro"
+ },
+ "MS": {
+ "name": "Montserrati"
+ },
+ "MA": {
+ "name": "Moroko"
+ },
+ "MZ": {
+ "name": "Mozambiki"
+ },
+ "MM": {
+ "name": "Myanima"
+ },
+ "NA": {
+ "name": "Namibia"
+ },
+ "NR": {
+ "name": "Nauru"
+ },
+ "NP": {
+ "name": "Nepali"
+ },
+ "GB": {
+ "name": "Ngeretha"
+ },
+ "GI": {
+ "name": "Ngĩbrata"
+ },
+ "GR": {
+ "name": "Ngiriki"
+ },
+ "GL": {
+ "name": "Ngirinilandi"
+ },
+ "NE": {
+ "name": "Nija"
+ },
+ "NG": {
+ "name": "Nijeria"
+ },
+ "NI": {
+ "name": "Nikaragwa"
+ },
+ "NU": {
+ "name": "Niue"
+ },
+ "NZ": {
+ "name": "Niuzilandi"
+ },
+ "DE": {
+ "name": "Njamanĩ"
+ },
+ "NO": {
+ "name": "Norwi"
+ },
+ "IO": {
+ "name": "Nthĩ cia Ngeretha gatagatĩ ka ĩria ria Hindi"
+ },
+ "CF": {
+ "name": "Nthĩ ya Afrika gatĩgatĩ"
+ },
+ "CZ": {
+ "name": "Nthĩ ya Cheki"
+ },
+ "DO": {
+ "name": "Nthĩ ya Dominika"
+ },
+ "CD": {
+ "name": "Nthĩ ya Kidemokrasĩ ya Kongo"
+ },
+ "OM": {
+ "name": "Omani"
+ },
+ "PK": {
+ "name": "Pakistani"
+ },
+ "PW": {
+ "name": "Palau"
+ },
+ "PA": {
+ "name": "Panama"
+ },
+ "PG": {
+ "name": "Papua"
+ },
+ "PY": {
+ "name": "Paragwai"
+ },
+ "PE": {
+ "name": "Peru"
+ },
+ "PN": {
+ "name": "Pitkairni"
+ },
+ "PL": {
+ "name": "Polandi"
+ },
+ "PF": {
+ "name": "Polinesia ya Fransi"
+ },
+ "PT": {
+ "name": "Potogo"
+ },
+ "PR": {
+ "name": "Pwetoriko"
+ },
+ "RU": {
+ "name": "Rashia"
+ },
+ "RE": {
+ "name": "Riyunioni"
+ },
+ "RO": {
+ "name": "Romania"
+ },
+ "PS": {
+ "name": "RÅ©tere rwa Westi banki na Gaza cia Palestina"
+ },
+ "RW": {
+ "name": "Rwanda"
+ },
+ "SM": {
+ "name": "Samarino"
+ },
+ "WS": {
+ "name": "Samoa"
+ },
+ "AS": {
+ "name": "Samoa ya Amerika"
+ },
+ "SH": {
+ "name": "Santahelena"
+ },
+ "KN": {
+ "name": "Santakitzi na Nevis"
+ },
+ "LC": {
+ "name": "Santalusia"
+ },
+ "PM": {
+ "name": "Santapieri na Mikeloni"
+ },
+ "VC": {
+ "name": "Santavisenti na Grenadini"
+ },
+ "ST": {
+ "name": "Sao Tome na Principe"
+ },
+ "SA": {
+ "name": "Saudi"
+ },
+ "SN": {
+ "name": "Senego"
+ },
+ "RS": {
+ "name": "Serbia"
+ },
+ "SC": {
+ "name": "Shelisheli"
+ },
+ "SL": {
+ "name": "Siera Leoni"
+ },
+ "SG": {
+ "name": "Singapoo"
+ },
+ "SX": {
+ "name": "Sint Maarten"
+ },
+ "SY": {
+ "name": "Siria"
+ },
+ "LK": {
+ "name": "Sirilanka"
+ },
+ "SK": {
+ "name": "Slovakia"
+ },
+ "SI": {
+ "name": "Slovenia"
+ },
+ "SO": {
+ "name": "Somalia"
+ },
+ "GS": {
+ "name": "South Georgia & South Sandwich Islands"
+ },
+ "SS": {
+ "name": "South Sudan"
+ },
+ "ES": {
+ "name": "Spĩni"
+ },
+ "BL": {
+ "name": "St. Barthélemy"
+ },
+ "MF": {
+ "name": "St. Martin"
+ },
+ "SD": {
+ "name": "Sudani"
+ },
+ "SR": {
+ "name": "Surinamu"
+ },
+ "SJ": {
+ "name": "Svalbard & Jan Mayen"
+ },
+ "SZ": {
+ "name": "Swazilandi"
+ },
+ "SE": {
+ "name": "Swideni"
+ },
+ "CH": {
+ "name": "Swizilandi"
+ },
+ "TW": {
+ "name": "Taiwani"
+ },
+ "TJ": {
+ "name": "Tajikistani"
+ },
+ "TR": {
+ "name": "Takĩ"
+ },
+ "TZ": {
+ "name": "Tanzania"
+ },
+ "TH": {
+ "name": "Thaĩlandi"
+ },
+ "TL": {
+ "name": "Timori ya Isti"
+ },
+ "TG": {
+ "name": "Togo"
+ },
+ "TK": {
+ "name": "Tokelau"
+ },
+ "TO": {
+ "name": "Tonga"
+ },
+ "TT": {
+ "name": "Trinidad na Tobago"
+ },
+ "TA": {
+ "name": "Tristan da Cunha"
+ },
+ "TM": {
+ "name": "Tukumenistani"
+ },
+ "TN": {
+ "name": "Tunisia"
+ },
+ "TV": {
+ "name": "Tuvalu"
+ },
+ "UM": {
+ "name": "U.S. Outlying Islands"
+ },
+ "UG": {
+ "name": "Uganda"
+ },
+ "UA": {
+ "name": "Ukirĩni"
+ },
+ "UY": {
+ "name": "Urugwĩ"
+ },
+ "UZ": {
+ "name": "Uzibekistani"
+ },
+ "VU": {
+ "name": "Vanuatu"
+ },
+ "VA": {
+ "name": "Vatikani"
+ },
+ "VE": {
+ "name": "Venezuela"
+ },
+ "VN": {
+ "name": "Vietinamu"
+ },
+ "WF": {
+ "name": "Walis na Futuna"
+ },
+ "EH": {
+ "name": "Western Sahara"
+ },
+ "YE": {
+ "name": "Yemeni"
+ },
+ "ZM": {
+ "name": "Zambia"
+ },
+ "ZW": {
+ "name": "Zimbabwe"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/country/mfe.json b/library/intl/resources/country/mfe.json
new file mode 100644
index 000000000..cdb6195a9
--- /dev/null
+++ b/library/intl/resources/country/mfe.json
@@ -0,0 +1,761 @@
+{
+ "AF": {
+ "name": "Afganistan"
+ },
+ "AX": {
+ "name": "Ã…land Islands"
+ },
+ "AL": {
+ "name": "Albani"
+ },
+ "DE": {
+ "name": "Almagn"
+ },
+ "DZ": {
+ "name": "Alzeri"
+ },
+ "AD": {
+ "name": "Andor"
+ },
+ "AO": {
+ "name": "Angola"
+ },
+ "AI": {
+ "name": "Anguilla"
+ },
+ "AQ": {
+ "name": "Antarctica"
+ },
+ "AG": {
+ "name": "Antigua-ek-Barbuda"
+ },
+ "AM": {
+ "name": "Armeni"
+ },
+ "AW": {
+ "name": "Aruba"
+ },
+ "AC": {
+ "name": "Ascension Island"
+ },
+ "HT": {
+ "name": "Ayti"
+ },
+ "AZ": {
+ "name": "Azerbaïdjan"
+ },
+ "BS": {
+ "name": "Bahamas"
+ },
+ "BH": {
+ "name": "Bahreïn"
+ },
+ "BD": {
+ "name": "Banglades"
+ },
+ "BB": {
+ "name": "Barbad"
+ },
+ "BY": {
+ "name": "Belaris"
+ },
+ "BZ": {
+ "name": "Beliz"
+ },
+ "BE": {
+ "name": "Belzik"
+ },
+ "BJ": {
+ "name": "Benin"
+ },
+ "BM": {
+ "name": "Bermid"
+ },
+ "BG": {
+ "name": "Bilgari"
+ },
+ "BO": {
+ "name": "Bolivi"
+ },
+ "BA": {
+ "name": "Bosni-Herzegovinn"
+ },
+ "BW": {
+ "name": "Botswana"
+ },
+ "BT": {
+ "name": "Boutan"
+ },
+ "BR": {
+ "name": "Brezil"
+ },
+ "BN": {
+ "name": "Brunei"
+ },
+ "BF": {
+ "name": "Burkina Faso"
+ },
+ "BI": {
+ "name": "Burundi"
+ },
+ "IC": {
+ "name": "Canary Islands"
+ },
+ "BQ": {
+ "name": "Caribbean Netherlands"
+ },
+ "EA": {
+ "name": "Ceuta & Melilla"
+ },
+ "CX": {
+ "name": "Christmas Island"
+ },
+ "CC": {
+ "name": "Cocos (Keeling) Islands"
+ },
+ "CR": {
+ "name": "Costa Rica"
+ },
+ "CI": {
+ "name": "Côte d’Ivoire"
+ },
+ "CU": {
+ "name": "Cuba"
+ },
+ "CW": {
+ "name": "Curaçao"
+ },
+ "CY": {
+ "name": "Cyprus"
+ },
+ "DK": {
+ "name": "Dannmark"
+ },
+ "DG": {
+ "name": "Diego Garcia"
+ },
+ "DJ": {
+ "name": "Djibouti"
+ },
+ "DM": {
+ "name": "Dominik"
+ },
+ "EC": {
+ "name": "Ekwater"
+ },
+ "AE": {
+ "name": "Emira arab ini"
+ },
+ "ER": {
+ "name": "Erythre"
+ },
+ "EE": {
+ "name": "Estoni"
+ },
+ "FO": {
+ "name": "Faroe Islands"
+ },
+ "FJ": {
+ "name": "Fidji"
+ },
+ "PH": {
+ "name": "Filipinn"
+ },
+ "FI": {
+ "name": "Finland"
+ },
+ "TF": {
+ "name": "French Southern Territories"
+ },
+ "GA": {
+ "name": "Gabon"
+ },
+ "GM": {
+ "name": "Gambi"
+ },
+ "GH": {
+ "name": "Ghana"
+ },
+ "GN": {
+ "name": "Gine"
+ },
+ "GQ": {
+ "name": "Gine ekwatoryal"
+ },
+ "GW": {
+ "name": "Gine-Bisau"
+ },
+ "GL": {
+ "name": "Greenland"
+ },
+ "GD": {
+ "name": "Grenad"
+ },
+ "GR": {
+ "name": "Gres"
+ },
+ "GP": {
+ "name": "Guadloup"
+ },
+ "GU": {
+ "name": "Guam"
+ },
+ "GT": {
+ "name": "Guatemala"
+ },
+ "GG": {
+ "name": "Guernsey"
+ },
+ "GY": {
+ "name": "Guyana"
+ },
+ "GF": {
+ "name": "Gwiyann franse"
+ },
+ "HN": {
+ "name": "Honduras"
+ },
+ "HK": {
+ "name": "Hong Kong SAR China"
+ },
+ "UA": {
+ "name": "Ikrenn"
+ },
+ "ID": {
+ "name": "Indonezi"
+ },
+ "IQ": {
+ "name": "Irak"
+ },
+ "IR": {
+ "name": "Iran"
+ },
+ "IE": {
+ "name": "Irland"
+ },
+ "IS": {
+ "name": "Island"
+ },
+ "IM": {
+ "name": "Isle of Man"
+ },
+ "IT": {
+ "name": "Itali"
+ },
+ "IL": {
+ "name": "Izrael"
+ },
+ "JE": {
+ "name": "Jersey"
+ },
+ "KH": {
+ "name": "Kambodj"
+ },
+ "CM": {
+ "name": "Kamerounn"
+ },
+ "CA": {
+ "name": "Kanada"
+ },
+ "CV": {
+ "name": "Kap-Ver"
+ },
+ "QA": {
+ "name": "Katar"
+ },
+ "KZ": {
+ "name": "Kazakstan"
+ },
+ "KE": {
+ "name": "Kenya"
+ },
+ "KG": {
+ "name": "Kirghizistan"
+ },
+ "KI": {
+ "name": "Kiribati"
+ },
+ "CO": {
+ "name": "Kolonbi"
+ },
+ "KM": {
+ "name": "Komor"
+ },
+ "CG": {
+ "name": "Kongo"
+ },
+ "XK": {
+ "name": "Kosovo"
+ },
+ "KW": {
+ "name": "Koweit"
+ },
+ "HR": {
+ "name": "Kroasi"
+ },
+ "FR": {
+ "name": "Lafrans"
+ },
+ "KP": {
+ "name": "Lakore-dinor"
+ },
+ "KR": {
+ "name": "Lakore-disid"
+ },
+ "US": {
+ "name": "Lamerik"
+ },
+ "LA": {
+ "name": "Laos"
+ },
+ "SA": {
+ "name": "Larabi Saoudit"
+ },
+ "RE": {
+ "name": "Larenion"
+ },
+ "RU": {
+ "name": "Larisi"
+ },
+ "AR": {
+ "name": "Larzantinn"
+ },
+ "CN": {
+ "name": "Lasinn"
+ },
+ "SY": {
+ "name": "Lasiri"
+ },
+ "SE": {
+ "name": "Laswed"
+ },
+ "CH": {
+ "name": "Laswis"
+ },
+ "VA": {
+ "name": "Lata Vatikan"
+ },
+ "IN": {
+ "name": "Lenn"
+ },
+ "ES": {
+ "name": "Lespagn"
+ },
+ "ET": {
+ "name": "Letiopi"
+ },
+ "LV": {
+ "name": "Letoni"
+ },
+ "EG": {
+ "name": "Lezipt"
+ },
+ "LS": {
+ "name": "Lezoto"
+ },
+ "LB": {
+ "name": "Liban"
+ },
+ "LR": {
+ "name": "Liberia"
+ },
+ "LY": {
+ "name": "Libi"
+ },
+ "LI": {
+ "name": "Liechtenstein"
+ },
+ "NF": {
+ "name": "Lil Norfolk"
+ },
+ "LT": {
+ "name": "Lituani"
+ },
+ "AU": {
+ "name": "Lostrali"
+ },
+ "AT": {
+ "name": "Lostris"
+ },
+ "LU": {
+ "name": "Luxembourg"
+ },
+ "MO": {
+ "name": "Macau SAR China"
+ },
+ "MG": {
+ "name": "Madagaskar"
+ },
+ "MW": {
+ "name": "Malawi"
+ },
+ "MV": {
+ "name": "Maldiv"
+ },
+ "MY": {
+ "name": "Malezi"
+ },
+ "ML": {
+ "name": "Mali"
+ },
+ "MT": {
+ "name": "Malt"
+ },
+ "MA": {
+ "name": "Marok"
+ },
+ "MQ": {
+ "name": "Martinik"
+ },
+ "MK": {
+ "name": "Masedwann"
+ },
+ "YT": {
+ "name": "Mayot"
+ },
+ "MX": {
+ "name": "Mexik"
+ },
+ "FM": {
+ "name": "Mikronezi"
+ },
+ "MD": {
+ "name": "Moldavi"
+ },
+ "MC": {
+ "name": "Monako"
+ },
+ "MN": {
+ "name": "Mongoli"
+ },
+ "ME": {
+ "name": "Montenegro"
+ },
+ "MS": {
+ "name": "Montsera"
+ },
+ "MU": {
+ "name": "Moris"
+ },
+ "MR": {
+ "name": "Moritani"
+ },
+ "MZ": {
+ "name": "Mozambik"
+ },
+ "MM": {
+ "name": "Myanmar"
+ },
+ "NA": {
+ "name": "Namibi"
+ },
+ "NR": {
+ "name": "Nauru"
+ },
+ "NP": {
+ "name": "Nepal"
+ },
+ "NI": {
+ "name": "Nicaragua"
+ },
+ "NU": {
+ "name": "Niowe"
+ },
+ "NE": {
+ "name": "Nizer"
+ },
+ "NG": {
+ "name": "Nizeria"
+ },
+ "NO": {
+ "name": "Norvez"
+ },
+ "NZ": {
+ "name": "Nouvel Zeland"
+ },
+ "NC": {
+ "name": "Nouvel-Kaledoni"
+ },
+ "NL": {
+ "name": "Oland"
+ },
+ "OM": {
+ "name": "Oman"
+ },
+ "HU": {
+ "name": "Ongri"
+ },
+ "UG": {
+ "name": "Ouganda"
+ },
+ "UZ": {
+ "name": "Ouzbekistan"
+ },
+ "PK": {
+ "name": "Pakistan"
+ },
+ "PW": {
+ "name": "Palau"
+ },
+ "PA": {
+ "name": "Panama"
+ },
+ "PG": {
+ "name": "Papouazi-Nouvel-Gine"
+ },
+ "PY": {
+ "name": "Paraguay"
+ },
+ "PE": {
+ "name": "Perou"
+ },
+ "PN": {
+ "name": "Pitcairn"
+ },
+ "PF": {
+ "name": "Polinezi franse"
+ },
+ "PL": {
+ "name": "Pologn"
+ },
+ "PT": {
+ "name": "Portigal"
+ },
+ "PR": {
+ "name": "Porto Rico"
+ },
+ "CZ": {
+ "name": "Repiblik Chek"
+ },
+ "CD": {
+ "name": "Repiblik demokratik Kongo"
+ },
+ "DO": {
+ "name": "Repiblik dominikin"
+ },
+ "CF": {
+ "name": "Repiblik Lafrik Santral"
+ },
+ "RO": {
+ "name": "Roumani"
+ },
+ "RW": {
+ "name": "Rwanda"
+ },
+ "KN": {
+ "name": "Saint-Christophe-ek-Niévès"
+ },
+ "SM": {
+ "name": "Saint-Marin"
+ },
+ "PM": {
+ "name": "Saint-Pierre-ek-Miquelon"
+ },
+ "VC": {
+ "name": "Saint-Vincent-ek-Grenadines"
+ },
+ "SH": {
+ "name": "Sainte-Hélène"
+ },
+ "LC": {
+ "name": "Sainte-Lucie"
+ },
+ "SV": {
+ "name": "Salvador"
+ },
+ "WS": {
+ "name": "Samoa"
+ },
+ "AS": {
+ "name": "Samoa amerikin"
+ },
+ "ST": {
+ "name": "São Tome-ek-Prínsip"
+ },
+ "SN": {
+ "name": "Senegal"
+ },
+ "RS": {
+ "name": "Serbia"
+ },
+ "SC": {
+ "name": "Sesel"
+ },
+ "CL": {
+ "name": "Shili"
+ },
+ "ZA": {
+ "name": "Sid-Afrik"
+ },
+ "SL": {
+ "name": "Sierra Leone"
+ },
+ "SG": {
+ "name": "Singapour"
+ },
+ "SX": {
+ "name": "Sint Maarten"
+ },
+ "SK": {
+ "name": "Slovaki"
+ },
+ "SI": {
+ "name": "Sloveni"
+ },
+ "SO": {
+ "name": "Somali"
+ },
+ "SD": {
+ "name": "Soudan"
+ },
+ "GS": {
+ "name": "South Georgia & South Sandwich Islands"
+ },
+ "SS": {
+ "name": "South Sudan"
+ },
+ "LK": {
+ "name": "Sri Lanka"
+ },
+ "BL": {
+ "name": "St. Barthélemy"
+ },
+ "MF": {
+ "name": "St. Martin"
+ },
+ "SR": {
+ "name": "Surinam"
+ },
+ "SJ": {
+ "name": "Svalbard & Jan Mayen"
+ },
+ "SZ": {
+ "name": "Swaziland"
+ },
+ "TJ": {
+ "name": "Tadjikistan"
+ },
+ "TW": {
+ "name": "Taiwan"
+ },
+ "TZ": {
+ "name": "Tanzani"
+ },
+ "TD": {
+ "name": "Tchad"
+ },
+ "IO": {
+ "name": "Teritwar Britanik Losean Indien"
+ },
+ "PS": {
+ "name": "Teritwar Palestinn"
+ },
+ "TH": {
+ "name": "Thayland"
+ },
+ "TL": {
+ "name": "Timor oriantal"
+ },
+ "TN": {
+ "name": "Tinizi"
+ },
+ "TR": {
+ "name": "Tirki"
+ },
+ "TG": {
+ "name": "Togo"
+ },
+ "TK": {
+ "name": "Tokelau"
+ },
+ "TO": {
+ "name": "Tonga"
+ },
+ "TT": {
+ "name": "Trinite-ek-Tobago"
+ },
+ "TA": {
+ "name": "Tristan da Cunha"
+ },
+ "TM": {
+ "name": "Turkmenistan"
+ },
+ "TV": {
+ "name": "Tuvalu"
+ },
+ "UM": {
+ "name": "U.S. Outlying Islands"
+ },
+ "GB": {
+ "name": "United Kingdom"
+ },
+ "UY": {
+ "name": "Uruguay"
+ },
+ "VU": {
+ "name": "Vanuatu"
+ },
+ "VE": {
+ "name": "Venezuela"
+ },
+ "VN": {
+ "name": "Vietnam"
+ },
+ "WF": {
+ "name": "Wallis-ek-Futuna"
+ },
+ "EH": {
+ "name": "Western Sahara"
+ },
+ "YE": {
+ "name": "Yemenn"
+ },
+ "JM": {
+ "name": "Zamaik"
+ },
+ "ZM": {
+ "name": "Zambi"
+ },
+ "JP": {
+ "name": "Zapon"
+ },
+ "GE": {
+ "name": "Zeorzi"
+ },
+ "GI": {
+ "name": "Zibraltar"
+ },
+ "CK": {
+ "name": "Zil Cook"
+ },
+ "KY": {
+ "name": "Zil Kayman"
+ },
+ "FK": {
+ "name": "Zil malwinn"
+ },
+ "MH": {
+ "name": "Zil Marshall"
+ },
+ "MP": {
+ "name": "Zil Maryann dinor"
+ },
+ "SB": {
+ "name": "Zil Salomon"
+ },
+ "TC": {
+ "name": "Zil Tirk ek Caïcos"
+ },
+ "VG": {
+ "name": "Zil vierz britanik"
+ },
+ "VI": {
+ "name": "Zil Vierz Lamerik"
+ },
+ "ZW": {
+ "name": "Zimbabwe"
+ },
+ "JO": {
+ "name": "Zordani"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/country/mg.json b/library/intl/resources/country/mg.json
new file mode 100644
index 000000000..b2d229987
--- /dev/null
+++ b/library/intl/resources/country/mg.json
@@ -0,0 +1,761 @@
+{
+ "AF": {
+ "name": "Afghanistan"
+ },
+ "ZA": {
+ "name": "Afrika Atsimo"
+ },
+ "AX": {
+ "name": "Ã…land Islands"
+ },
+ "AL": {
+ "name": "Albania"
+ },
+ "DE": {
+ "name": "Alemaina"
+ },
+ "DZ": {
+ "name": "Alzeria"
+ },
+ "AD": {
+ "name": "Andorra"
+ },
+ "GB": {
+ "name": "Angletera"
+ },
+ "AO": {
+ "name": "Angola"
+ },
+ "AI": {
+ "name": "Anguilla"
+ },
+ "AQ": {
+ "name": "Antarctica"
+ },
+ "AG": {
+ "name": "Antiga sy Barboda"
+ },
+ "AU": {
+ "name": "Aostralia"
+ },
+ "AT": {
+ "name": "Aotrisy"
+ },
+ "SA": {
+ "name": "Arabia saodita"
+ },
+ "AM": {
+ "name": "Armenia"
+ },
+ "AW": {
+ "name": "Arobà"
+ },
+ "AR": {
+ "name": "Arzantina"
+ },
+ "AC": {
+ "name": "Ascension Island"
+ },
+ "AZ": {
+ "name": "Azerbaidjan"
+ },
+ "BS": {
+ "name": "Bahamas"
+ },
+ "BH": {
+ "name": "Bahrain"
+ },
+ "BD": {
+ "name": "Bangladesy"
+ },
+ "BB": {
+ "name": "Barbady"
+ },
+ "BY": {
+ "name": "Belarosy"
+ },
+ "BZ": {
+ "name": "Belize"
+ },
+ "BE": {
+ "name": "Belzika"
+ },
+ "BJ": {
+ "name": "Benin"
+ },
+ "BM": {
+ "name": "Bermioda"
+ },
+ "BT": {
+ "name": "Bhotana"
+ },
+ "BG": {
+ "name": "Biolgaria"
+ },
+ "BO": {
+ "name": "Bolivia"
+ },
+ "BF": {
+ "name": "Borkina Faso"
+ },
+ "BI": {
+ "name": "Borondi"
+ },
+ "BA": {
+ "name": "Bosnia sy Herzegovina"
+ },
+ "BW": {
+ "name": "Botsoana"
+ },
+ "BR": {
+ "name": "Brezila"
+ },
+ "BN": {
+ "name": "Brunei"
+ },
+ "IC": {
+ "name": "Canary Islands"
+ },
+ "BQ": {
+ "name": "Caribbean Netherlands"
+ },
+ "EA": {
+ "name": "Ceuta & Melilla"
+ },
+ "CX": {
+ "name": "Christmas Island"
+ },
+ "CC": {
+ "name": "Cocos (Keeling) Islands"
+ },
+ "CI": {
+ "name": "Côte d’Ivoire"
+ },
+ "CW": {
+ "name": "Curaçao"
+ },
+ "DK": {
+ "name": "Danmarka"
+ },
+ "DG": {
+ "name": "Diego Garcia"
+ },
+ "DJ": {
+ "name": "Djiboti"
+ },
+ "DM": {
+ "name": "Dominika"
+ },
+ "EG": {
+ "name": "Ejypta"
+ },
+ "EC": {
+ "name": "Ekoatera"
+ },
+ "SV": {
+ "name": "El Salvador"
+ },
+ "AE": {
+ "name": "Emirà Arabo mitambatra"
+ },
+ "ER": {
+ "name": "Eritrea"
+ },
+ "ES": {
+ "name": "Espaina"
+ },
+ "EE": {
+ "name": "Estonia"
+ },
+ "US": {
+ "name": "Etazonia"
+ },
+ "ET": {
+ "name": "Ethiopia"
+ },
+ "IO": {
+ "name": "Faridranomasina indiana britanika"
+ },
+ "FO": {
+ "name": "Faroe Islands"
+ },
+ "FJ": {
+ "name": "Fidji"
+ },
+ "PH": {
+ "name": "Filipina"
+ },
+ "FI": {
+ "name": "Finlandy"
+ },
+ "VA": {
+ "name": "Firenen’i Vatikana"
+ },
+ "FR": {
+ "name": "Frantsa"
+ },
+ "TF": {
+ "name": "French Southern Territories"
+ },
+ "GA": {
+ "name": "Gabon"
+ },
+ "GM": {
+ "name": "Gambia"
+ },
+ "GH": {
+ "name": "Ghana"
+ },
+ "GW": {
+ "name": "Giné-Bisao"
+ },
+ "GN": {
+ "name": "Ginea"
+ },
+ "GP": {
+ "name": "Goadelopy"
+ },
+ "GT": {
+ "name": "Goatemalà"
+ },
+ "GD": {
+ "name": "Grenady"
+ },
+ "GR": {
+ "name": "Gresy"
+ },
+ "GL": {
+ "name": "Groenland"
+ },
+ "GU": {
+ "name": "Guam"
+ },
+ "GG": {
+ "name": "Guernsey"
+ },
+ "GQ": {
+ "name": "Guinea Ekoatera"
+ },
+ "GY": {
+ "name": "Guyana"
+ },
+ "GF": {
+ "name": "Guyana frantsay"
+ },
+ "HT": {
+ "name": "Haiti"
+ },
+ "NL": {
+ "name": "Holanda"
+ },
+ "HN": {
+ "name": "Hondiorasy"
+ },
+ "HK": {
+ "name": "Hong Kong SAR China"
+ },
+ "HU": {
+ "name": "Hongria"
+ },
+ "ID": {
+ "name": "Indonezia"
+ },
+ "IN": {
+ "name": "Indy"
+ },
+ "IQ": {
+ "name": "Irak"
+ },
+ "IR": {
+ "name": "Iran"
+ },
+ "IE": {
+ "name": "Irlandy"
+ },
+ "IS": {
+ "name": "Islandy"
+ },
+ "IM": {
+ "name": "Isle of Man"
+ },
+ "IL": {
+ "name": "Israely"
+ },
+ "IT": {
+ "name": "Italia"
+ },
+ "JM": {
+ "name": "Jamaïka"
+ },
+ "JP": {
+ "name": "Japana"
+ },
+ "JE": {
+ "name": "Jersey"
+ },
+ "JO": {
+ "name": "Jordania"
+ },
+ "KH": {
+ "name": "Kambôdja"
+ },
+ "CM": {
+ "name": "Kamerona"
+ },
+ "CA": {
+ "name": "Kanada"
+ },
+ "QA": {
+ "name": "Katar"
+ },
+ "KZ": {
+ "name": "Kazakhstan"
+ },
+ "KE": {
+ "name": "Kenya"
+ },
+ "CU": {
+ "name": "Kiobà"
+ },
+ "KG": {
+ "name": "Kiordistan"
+ },
+ "KI": {
+ "name": "Kiribati"
+ },
+ "KW": {
+ "name": "Kôeity"
+ },
+ "CO": {
+ "name": "Kôlômbia"
+ },
+ "KM": {
+ "name": "Kômaoro"
+ },
+ "CG": {
+ "name": "Kôngô"
+ },
+ "KR": {
+ "name": "Korea Atsimo"
+ },
+ "KP": {
+ "name": "Korea Avaratra"
+ },
+ "XK": {
+ "name": "Kosovo"
+ },
+ "CR": {
+ "name": "Kosta Rikà"
+ },
+ "HR": {
+ "name": "Kroasia"
+ },
+ "LA": {
+ "name": "Laôs"
+ },
+ "RE": {
+ "name": "Larenion"
+ },
+ "LS": {
+ "name": "Lesotho"
+ },
+ "LV": {
+ "name": "Letonia"
+ },
+ "LB": {
+ "name": "Libana"
+ },
+ "LR": {
+ "name": "Liberia"
+ },
+ "LY": {
+ "name": "Libya"
+ },
+ "LU": {
+ "name": "Lioksamboro"
+ },
+ "LI": {
+ "name": "Listenstein"
+ },
+ "LT": {
+ "name": "Litoania"
+ },
+ "MO": {
+ "name": "Macau SAR China"
+ },
+ "MG": {
+ "name": "Madagasikara"
+ },
+ "MK": {
+ "name": "Makedonia"
+ },
+ "MY": {
+ "name": "Malaizia"
+ },
+ "MW": {
+ "name": "Malaoì"
+ },
+ "MV": {
+ "name": "Maldiva"
+ },
+ "ML": {
+ "name": "Mali"
+ },
+ "MT": {
+ "name": "Malta"
+ },
+ "MU": {
+ "name": "Maorisy"
+ },
+ "MR": {
+ "name": "Maoritania"
+ },
+ "MA": {
+ "name": "Marôka"
+ },
+ "MQ": {
+ "name": "Martinika"
+ },
+ "YT": {
+ "name": "Mayôty"
+ },
+ "MX": {
+ "name": "Meksika"
+ },
+ "FM": {
+ "name": "Mikrônezia"
+ },
+ "MD": {
+ "name": "Môldavia"
+ },
+ "MC": {
+ "name": "Mônakô"
+ },
+ "MN": {
+ "name": "Môngôlia"
+ },
+ "ME": {
+ "name": "Montenegro"
+ },
+ "MS": {
+ "name": "Montserrat"
+ },
+ "MZ": {
+ "name": "Mozambika"
+ },
+ "MM": {
+ "name": "Myanmar"
+ },
+ "NA": {
+ "name": "Namibia"
+ },
+ "NR": {
+ "name": "Naorò"
+ },
+ "NP": {
+ "name": "Nepala"
+ },
+ "NE": {
+ "name": "Niger"
+ },
+ "NI": {
+ "name": "Nikaragoà"
+ },
+ "NU": {
+ "name": "Nioé"
+ },
+ "NG": {
+ "name": "Nizeria"
+ },
+ "NO": {
+ "name": "Nôrvezy"
+ },
+ "VG": {
+ "name": "Nosy britanika virijiny"
+ },
+ "CV": {
+ "name": "Nosy Cap-Vert"
+ },
+ "FK": {
+ "name": "Nosy Falkand"
+ },
+ "KY": {
+ "name": "Nosy Kayman"
+ },
+ "CK": {
+ "name": "Nosy Kook"
+ },
+ "MP": {
+ "name": "Nosy Mariana Atsinanana"
+ },
+ "MH": {
+ "name": "Nosy Marshall"
+ },
+ "NF": {
+ "name": "Nosy Norfolk"
+ },
+ "SB": {
+ "name": "Nosy Salomona"
+ },
+ "TC": {
+ "name": "Nosy Turks sy Caïques"
+ },
+ "VI": {
+ "name": "Nosy Virijiny Etazonia"
+ },
+ "NC": {
+ "name": "Nouvelle-Calédonie"
+ },
+ "NZ": {
+ "name": "Nouvelle-Zélande"
+ },
+ "UG": {
+ "name": "Oganda"
+ },
+ "UA": {
+ "name": "Okraina"
+ },
+ "OM": {
+ "name": "Oman"
+ },
+ "UY": {
+ "name": "Orogoay"
+ },
+ "UZ": {
+ "name": "Ozbekistan"
+ },
+ "PK": {
+ "name": "Pakistan"
+ },
+ "PW": {
+ "name": "Palao"
+ },
+ "PS": {
+ "name": "Palestina"
+ },
+ "PA": {
+ "name": "Panama"
+ },
+ "PG": {
+ "name": "Papouasie-Nouvelle-Guinée"
+ },
+ "PY": {
+ "name": "Paragoay"
+ },
+ "PE": {
+ "name": "Peroa"
+ },
+ "PN": {
+ "name": "Pitkairn"
+ },
+ "PL": {
+ "name": "Pôlôna"
+ },
+ "PF": {
+ "name": "Polynezia frantsay"
+ },
+ "PT": {
+ "name": "Pôrtiogala"
+ },
+ "PR": {
+ "name": "Pôrtô Rikô"
+ },
+ "DO": {
+ "name": "Repoblika Dominikanina"
+ },
+ "CF": {
+ "name": "Repoblika Ivon’Afrika"
+ },
+ "CD": {
+ "name": "Repoblikan’i Kongo"
+ },
+ "CZ": {
+ "name": "Repoblikan’i Tseky"
+ },
+ "RW": {
+ "name": "Roanda"
+ },
+ "RO": {
+ "name": "Romania"
+ },
+ "RU": {
+ "name": "Rosia"
+ },
+ "KN": {
+ "name": "Saint-Christophe-et-Niévès"
+ },
+ "SM": {
+ "name": "Saint-Marin"
+ },
+ "PM": {
+ "name": "Saint-Pierre-et-Miquelon"
+ },
+ "VC": {
+ "name": "Saint-Vincent-et-les Grenadines"
+ },
+ "SH": {
+ "name": "Sainte-Hélène"
+ },
+ "LC": {
+ "name": "Sainte-Lucie"
+ },
+ "WS": {
+ "name": "Samoa"
+ },
+ "AS": {
+ "name": "Samoa amerikanina"
+ },
+ "ST": {
+ "name": "São Tomé-et-Príncipe"
+ },
+ "SN": {
+ "name": "Senegal"
+ },
+ "RS": {
+ "name": "Serbia"
+ },
+ "SC": {
+ "name": "Seyshela"
+ },
+ "CL": {
+ "name": "Shili"
+ },
+ "SL": {
+ "name": "Sierra Leone"
+ },
+ "CN": {
+ "name": "Sina"
+ },
+ "SG": {
+ "name": "Singaporo"
+ },
+ "SX": {
+ "name": "Sint Maarten"
+ },
+ "SK": {
+ "name": "Slovakia"
+ },
+ "SI": {
+ "name": "Slovenia"
+ },
+ "SZ": {
+ "name": "Soazilandy"
+ },
+ "SD": {
+ "name": "Sodan"
+ },
+ "SE": {
+ "name": "Soedy"
+ },
+ "CH": {
+ "name": "Soisa"
+ },
+ "SO": {
+ "name": "Somalia"
+ },
+ "SR": {
+ "name": "Sorinam"
+ },
+ "GS": {
+ "name": "South Georgia & South Sandwich Islands"
+ },
+ "SS": {
+ "name": "South Sudan"
+ },
+ "LK": {
+ "name": "Sri Lanka"
+ },
+ "BL": {
+ "name": "St. Barthélemy"
+ },
+ "MF": {
+ "name": "St. Martin"
+ },
+ "SJ": {
+ "name": "Svalbard & Jan Mayen"
+ },
+ "CY": {
+ "name": "Sypra"
+ },
+ "SY": {
+ "name": "Syria"
+ },
+ "TW": {
+ "name": "Taioana"
+ },
+ "TJ": {
+ "name": "Tajikistan"
+ },
+ "TZ": {
+ "name": "Tanzania"
+ },
+ "TH": {
+ "name": "Thailandy"
+ },
+ "TL": {
+ "name": "Timor Atsinanana"
+ },
+ "TG": {
+ "name": "Togo"
+ },
+ "TK": {
+ "name": "Tokelao"
+ },
+ "TO": {
+ "name": "Tongà"
+ },
+ "TN": {
+ "name": "Tonizia"
+ },
+ "TR": {
+ "name": "Torkia"
+ },
+ "TM": {
+ "name": "Torkmenistan"
+ },
+ "TV": {
+ "name": "Tovalò"
+ },
+ "TT": {
+ "name": "Trinidad sy Tobagô"
+ },
+ "TA": {
+ "name": "Tristan da Cunha"
+ },
+ "TD": {
+ "name": "Tsady"
+ },
+ "UM": {
+ "name": "U.S. Outlying Islands"
+ },
+ "VU": {
+ "name": "Vanoatò"
+ },
+ "VE": {
+ "name": "Venezoelà"
+ },
+ "VN": {
+ "name": "Vietnam"
+ },
+ "WF": {
+ "name": "Wallis sy Futuna"
+ },
+ "EH": {
+ "name": "Western Sahara"
+ },
+ "YE": {
+ "name": "Yemen"
+ },
+ "ZM": {
+ "name": "Zambia"
+ },
+ "GE": {
+ "name": "Zeorzia"
+ },
+ "GI": {
+ "name": "Zibraltara"
+ },
+ "ZW": {
+ "name": "Zimbaboe"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/country/mgh.json b/library/intl/resources/country/mgh.json
new file mode 100644
index 000000000..516a1a273
--- /dev/null
+++ b/library/intl/resources/country/mgh.json
@@ -0,0 +1,761 @@
+{
+ "ZA": {
+ "name": "Afrika du Sulu"
+ },
+ "AX": {
+ "name": "Ã…land Islands"
+ },
+ "DZ": {
+ "name": "Alujeria"
+ },
+ "AO": {
+ "name": "Angola"
+ },
+ "AI": {
+ "name": "Anguilla"
+ },
+ "AQ": {
+ "name": "Antarctica"
+ },
+ "AG": {
+ "name": "Antigua & Barbuda"
+ },
+ "AR": {
+ "name": "Argentina"
+ },
+ "AM": {
+ "name": "Armenia"
+ },
+ "AW": {
+ "name": "Aruba"
+ },
+ "AC": {
+ "name": "Ascension Island"
+ },
+ "AU": {
+ "name": "Australia"
+ },
+ "AT": {
+ "name": "Austria"
+ },
+ "BS": {
+ "name": "Bahamas"
+ },
+ "BH": {
+ "name": "Bahrain"
+ },
+ "BD": {
+ "name": "Bangladesh"
+ },
+ "BB": {
+ "name": "Barbados"
+ },
+ "BY": {
+ "name": "Belarus"
+ },
+ "BE": {
+ "name": "Belgium"
+ },
+ "BZ": {
+ "name": "Belize"
+ },
+ "BM": {
+ "name": "Bermuda"
+ },
+ "BT": {
+ "name": "Bhutan"
+ },
+ "BO": {
+ "name": "Bolivia"
+ },
+ "BA": {
+ "name": "Bosnia & Herzegovina"
+ },
+ "BW": {
+ "name": "Botswana"
+ },
+ "BR": {
+ "name": "Brazil"
+ },
+ "IO": {
+ "name": "British Indian Ocean Territory"
+ },
+ "VG": {
+ "name": "British Virgin Islands"
+ },
+ "BN": {
+ "name": "Brunei"
+ },
+ "BG": {
+ "name": "Bulgaria"
+ },
+ "BF": {
+ "name": "Burkina Faso"
+ },
+ "CM": {
+ "name": "Cameroon"
+ },
+ "IC": {
+ "name": "Canary Islands"
+ },
+ "CV": {
+ "name": "Cape Verde"
+ },
+ "BQ": {
+ "name": "Caribbean Netherlands"
+ },
+ "KY": {
+ "name": "Cayman Islands"
+ },
+ "CF": {
+ "name": "Central African Republic"
+ },
+ "EA": {
+ "name": "Ceuta & Melilla"
+ },
+ "CX": {
+ "name": "Christmas Island"
+ },
+ "CC": {
+ "name": "Cocos (Keeling) Islands"
+ },
+ "CD": {
+ "name": "Congo - Kinshasa"
+ },
+ "CK": {
+ "name": "Cook Islands"
+ },
+ "CR": {
+ "name": "Costa Rica"
+ },
+ "CW": {
+ "name": "Curaçao"
+ },
+ "DG": {
+ "name": "Diego Garcia"
+ },
+ "DO": {
+ "name": "Dominican Republic"
+ },
+ "EC": {
+ "name": "Ecuador"
+ },
+ "GQ": {
+ "name": "Equatorial Guinea"
+ },
+ "EE": {
+ "name": "Estonia"
+ },
+ "FK": {
+ "name": "Falkland Islands"
+ },
+ "FO": {
+ "name": "Faroe Islands"
+ },
+ "TF": {
+ "name": "French Southern Territories"
+ },
+ "DE": {
+ "name": "Germany"
+ },
+ "GR": {
+ "name": "Greece"
+ },
+ "GG": {
+ "name": "Guernsey"
+ },
+ "HK": {
+ "name": "Hong Kong SAR China"
+ },
+ "IS": {
+ "name": "Iceland"
+ },
+ "IR": {
+ "name": "Iran"
+ },
+ "IM": {
+ "name": "Isle of Man"
+ },
+ "IT": {
+ "name": "Italia"
+ },
+ "JE": {
+ "name": "Jersey"
+ },
+ "KI": {
+ "name": "Kiribati"
+ },
+ "XK": {
+ "name": "Kosovo"
+ },
+ "KW": {
+ "name": "Kuwait"
+ },
+ "KG": {
+ "name": "Kyrgyzstan"
+ },
+ "LA": {
+ "name": "Laos"
+ },
+ "MO": {
+ "name": "Macau SAR China"
+ },
+ "MY": {
+ "name": "Malaysia"
+ },
+ "MV": {
+ "name": "Maldives"
+ },
+ "ML": {
+ "name": "Mali"
+ },
+ "MT": {
+ "name": "Malta"
+ },
+ "MH": {
+ "name": "Marshall Islands"
+ },
+ "MQ": {
+ "name": "Martinique"
+ },
+ "MR": {
+ "name": "Mauritania"
+ },
+ "MU": {
+ "name": "Mauritius"
+ },
+ "YT": {
+ "name": "Mayotte"
+ },
+ "MX": {
+ "name": "Mexico"
+ },
+ "FM": {
+ "name": "Micronesia"
+ },
+ "MD": {
+ "name": "Moldova"
+ },
+ "MC": {
+ "name": "Monaco"
+ },
+ "MN": {
+ "name": "Mongolia"
+ },
+ "MS": {
+ "name": "Montserrat"
+ },
+ "MA": {
+ "name": "Morocco"
+ },
+ "MM": {
+ "name": "Myanmar (Burma)"
+ },
+ "NA": {
+ "name": "Namibia"
+ },
+ "NR": {
+ "name": "Nauru"
+ },
+ "NP": {
+ "name": "Nepal"
+ },
+ "NL": {
+ "name": "Netherlands"
+ },
+ "NC": {
+ "name": "New Caledonia"
+ },
+ "NZ": {
+ "name": "New Zealand"
+ },
+ "NI": {
+ "name": "Nicaragua"
+ },
+ "NU": {
+ "name": "Niue"
+ },
+ "NF": {
+ "name": "Norfolk Island"
+ },
+ "MP": {
+ "name": "Northern Mariana Islands"
+ },
+ "PW": {
+ "name": "Palau"
+ },
+ "PS": {
+ "name": "Palestinian Territories"
+ },
+ "PY": {
+ "name": "Paragwai"
+ },
+ "PT": {
+ "name": "Portugal"
+ },
+ "RU": {
+ "name": "Russia"
+ },
+ "RS": {
+ "name": "Serbia"
+ },
+ "SL": {
+ "name": "Sierra Leone"
+ },
+ "SX": {
+ "name": "Sint Maarten"
+ },
+ "SB": {
+ "name": "Solomon Islands"
+ },
+ "GS": {
+ "name": "South Georgia & South Sandwich Islands"
+ },
+ "SS": {
+ "name": "South Sudan"
+ },
+ "BL": {
+ "name": "St. Barthélemy"
+ },
+ "MF": {
+ "name": "St. Martin"
+ },
+ "SJ": {
+ "name": "Svalbard & Jan Mayen"
+ },
+ "TW": {
+ "name": "Taiwan"
+ },
+ "TA": {
+ "name": "Tristan da Cunha"
+ },
+ "TC": {
+ "name": "Turks & Caicos Islands"
+ },
+ "UM": {
+ "name": "U.S. Outlying Islands"
+ },
+ "VI": {
+ "name": "U.S. Virgin Islands"
+ },
+ "AL": {
+ "name": "Ualbania"
+ },
+ "AD": {
+ "name": "Uandora"
+ },
+ "IE": {
+ "name": "Uayalandi"
+ },
+ "AZ": {
+ "name": "Uazabajani"
+ },
+ "BJ": {
+ "name": "Ubelin"
+ },
+ "MG": {
+ "name": "Ubukini"
+ },
+ "TD": {
+ "name": "Uchadi"
+ },
+ "CZ": {
+ "name": "Ucheki"
+ },
+ "CL": {
+ "name": "Uchile"
+ },
+ "CN": {
+ "name": "Uchina"
+ },
+ "DK": {
+ "name": "Udenimaka"
+ },
+ "DM": {
+ "name": "Udominika"
+ },
+ "FR": {
+ "name": "Ufaransa"
+ },
+ "GF": {
+ "name": "Ufaransa yo Gwaya"
+ },
+ "PF": {
+ "name": "Ufaransa yo Potina"
+ },
+ "FJ": {
+ "name": "Ufiji"
+ },
+ "PH": {
+ "name": "Ufilipino"
+ },
+ "FI": {
+ "name": "Ufini"
+ },
+ "AF": {
+ "name": "Ufugustani"
+ },
+ "GA": {
+ "name": "Ugaboni"
+ },
+ "GM": {
+ "name": "Ugambia"
+ },
+ "GH": {
+ "name": "Ugana"
+ },
+ "UG": {
+ "name": "Uganda"
+ },
+ "GN": {
+ "name": "Ugine"
+ },
+ "GW": {
+ "name": "Uginebisau"
+ },
+ "GD": {
+ "name": "Ugrenada"
+ },
+ "GL": {
+ "name": "Ugrinlandi"
+ },
+ "GY": {
+ "name": "Uguyana"
+ },
+ "GP": {
+ "name": "Ugwadelupe"
+ },
+ "GU": {
+ "name": "Ugwam"
+ },
+ "GT": {
+ "name": "Ugwatemala"
+ },
+ "ET": {
+ "name": "Uhabeshi"
+ },
+ "HT": {
+ "name": "Uhaiti"
+ },
+ "IN": {
+ "name": "Uhindini"
+ },
+ "ES": {
+ "name": "Uhispania"
+ },
+ "HN": {
+ "name": "Uhondurasi"
+ },
+ "HU": {
+ "name": "Uhungaria"
+ },
+ "IL": {
+ "name": "Uisraeli"
+ },
+ "JM": {
+ "name": "Ujamaika"
+ },
+ "JP": {
+ "name": "Ujapani"
+ },
+ "GI": {
+ "name": "Ujibralta"
+ },
+ "DJ": {
+ "name": "Ujibuti"
+ },
+ "TJ": {
+ "name": "Ujikistani"
+ },
+ "GE": {
+ "name": "Ujojia"
+ },
+ "KH": {
+ "name": "Ukambodia"
+ },
+ "CA": {
+ "name": "Ukanada"
+ },
+ "QA": {
+ "name": "Ukatari"
+ },
+ "KZ": {
+ "name": "Ukazakistani"
+ },
+ "KE": {
+ "name": "Ukenya"
+ },
+ "CI": {
+ "name": "Ukodiva"
+ },
+ "CO": {
+ "name": "Ukolombia"
+ },
+ "KM": {
+ "name": "Ukomoro"
+ },
+ "CG": {
+ "name": "Ukongo"
+ },
+ "HR": {
+ "name": "Ukorasia"
+ },
+ "KP": {
+ "name": "Ukorea Kaskazini"
+ },
+ "KR": {
+ "name": "Ukorea Kusini"
+ },
+ "UA": {
+ "name": "Ukraine"
+ },
+ "CU": {
+ "name": "Ukuba"
+ },
+ "CY": {
+ "name": "Ukuprosi"
+ },
+ "LV": {
+ "name": "Ulativia"
+ },
+ "LB": {
+ "name": "Ulebanoni"
+ },
+ "LS": {
+ "name": "Ulesoto"
+ },
+ "LR": {
+ "name": "Uliberia"
+ },
+ "LY": {
+ "name": "Ulibya"
+ },
+ "MW": {
+ "name": "Umalawi"
+ },
+ "ME": {
+ "name": "Umantegro"
+ },
+ "US": {
+ "name": "Umarekani"
+ },
+ "MK": {
+ "name": "Umasedonia"
+ },
+ "EG": {
+ "name": "Umisiri"
+ },
+ "MZ": {
+ "name": "Umozambiki"
+ },
+ "ID": {
+ "name": "Undonesia"
+ },
+ "NE": {
+ "name": "Unijeri"
+ },
+ "NG": {
+ "name": "Unijeria"
+ },
+ "AE": {
+ "name": "United Arab Emirates"
+ },
+ "GB": {
+ "name": "United Kingdom"
+ },
+ "NO": {
+ "name": "Unorwe"
+ },
+ "OM": {
+ "name": "Uomani"
+ },
+ "PK": {
+ "name": "Upakistani"
+ },
+ "PA": {
+ "name": "Upanama"
+ },
+ "PG": {
+ "name": "Upapua"
+ },
+ "PE": {
+ "name": "Uperuu"
+ },
+ "PN": {
+ "name": "Upitkairni"
+ },
+ "PL": {
+ "name": "Upolandi"
+ },
+ "PR": {
+ "name": "Upwetoriko"
+ },
+ "ER": {
+ "name": "Uriterea"
+ },
+ "RE": {
+ "name": "Uriyunioni"
+ },
+ "RO": {
+ "name": "Uromania"
+ },
+ "UY": {
+ "name": "Uruguay"
+ },
+ "BI": {
+ "name": "Urundi"
+ },
+ "RW": {
+ "name": "Urwanda"
+ },
+ "SV": {
+ "name": "Usalavado"
+ },
+ "SM": {
+ "name": "Usamarino"
+ },
+ "WS": {
+ "name": "Usamoa"
+ },
+ "AS": {
+ "name": "Usamoa ya Marekani"
+ },
+ "SH": {
+ "name": "Usantahelena"
+ },
+ "KN": {
+ "name": "Usantakitzi na Nevis"
+ },
+ "LC": {
+ "name": "Usantalusia"
+ },
+ "PM": {
+ "name": "Usantapieri na Mikeloni"
+ },
+ "VC": {
+ "name": "Usantavisenti na Grenadini"
+ },
+ "ST": {
+ "name": "Usao Tome na Principe"
+ },
+ "SA": {
+ "name": "Usaudi"
+ },
+ "LU": {
+ "name": "Usembaji"
+ },
+ "SN": {
+ "name": "Usenegali"
+ },
+ "SC": {
+ "name": "Ushelisheli"
+ },
+ "LI": {
+ "name": "Ushenteni"
+ },
+ "SG": {
+ "name": "Usingapoo"
+ },
+ "SY": {
+ "name": "Usiria"
+ },
+ "LK": {
+ "name": "Usirilanka"
+ },
+ "SK": {
+ "name": "Uslovakia"
+ },
+ "SI": {
+ "name": "Uslovenia"
+ },
+ "SO": {
+ "name": "Usomalia"
+ },
+ "SD": {
+ "name": "Usudani"
+ },
+ "SR": {
+ "name": "Usurinamu"
+ },
+ "SZ": {
+ "name": "Uswazi"
+ },
+ "SE": {
+ "name": "Uswidi"
+ },
+ "CH": {
+ "name": "Uswisi"
+ },
+ "TH": {
+ "name": "Utailandi"
+ },
+ "TZ": {
+ "name": "Utanzania"
+ },
+ "TL": {
+ "name": "Utimo Mashariki"
+ },
+ "TG": {
+ "name": "Utogo"
+ },
+ "TK": {
+ "name": "Utokelau"
+ },
+ "TO": {
+ "name": "Utonga"
+ },
+ "TT": {
+ "name": "Utrinidad na Tobago"
+ },
+ "TR": {
+ "name": "Utuki"
+ },
+ "TN": {
+ "name": "Utunisia"
+ },
+ "TM": {
+ "name": "Uturukimenistani"
+ },
+ "TV": {
+ "name": "Utuvalu"
+ },
+ "LT": {
+ "name": "Utwania"
+ },
+ "VU": {
+ "name": "Uvanuatu"
+ },
+ "VA": {
+ "name": "Uvatikani"
+ },
+ "VE": {
+ "name": "Uvenezuela"
+ },
+ "VN": {
+ "name": "Uvietinamu"
+ },
+ "WF": {
+ "name": "Uwalis na Futuna"
+ },
+ "YE": {
+ "name": "Uyemeni"
+ },
+ "JO": {
+ "name": "Uyordani"
+ },
+ "ZM": {
+ "name": "Uzambia"
+ },
+ "UZ": {
+ "name": "Uzbekistan"
+ },
+ "ZW": {
+ "name": "Uzimbabwe"
+ },
+ "EH": {
+ "name": "Western Sahara"
+ },
+ "IQ": {
+ "name": "Wiraki"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/country/mk.json b/library/intl/resources/country/mk.json
new file mode 100644
index 000000000..0dae5e0d8
--- /dev/null
+++ b/library/intl/resources/country/mk.json
@@ -0,0 +1,761 @@
+{
+ "AF": {
+ "name": "ÐвганиÑтан"
+ },
+ "AU": {
+ "name": "ÐвÑтралија"
+ },
+ "AT": {
+ "name": "ÐвÑтрија"
+ },
+ "AZ": {
+ "name": "Ðзербејџан"
+ },
+ "AL": {
+ "name": "Ðлбанија"
+ },
+ "DZ": {
+ "name": "Ðлжир"
+ },
+ "AS": {
+ "name": "ÐмериканÑка Самоа"
+ },
+ "VI": {
+ "name": "ÐмериканÑки ДевÑтвени ОÑтрови"
+ },
+ "UM": {
+ "name": "ÐмериканÑки територии во Пацификот"
+ },
+ "AI": {
+ "name": "Ðнгвила"
+ },
+ "AO": {
+ "name": "Ðнгола"
+ },
+ "AD": {
+ "name": "Ðндора"
+ },
+ "AQ": {
+ "name": "Ðнтарктик"
+ },
+ "AG": {
+ "name": "Ðнтигва и Барбуда"
+ },
+ "AR": {
+ "name": "Ðргентина"
+ },
+ "AW": {
+ "name": "Ðруба"
+ },
+ "BD": {
+ "name": "Бангладеш"
+ },
+ "BB": {
+ "name": "БарбадоÑ"
+ },
+ "BS": {
+ "name": "Бахами"
+ },
+ "BH": {
+ "name": "Бахреин"
+ },
+ "BE": {
+ "name": "Белгија"
+ },
+ "BZ": {
+ "name": "Белизе"
+ },
+ "BY": {
+ "name": "БелоруÑија"
+ },
+ "BJ": {
+ "name": "Бенин"
+ },
+ "BM": {
+ "name": "Бермуди"
+ },
+ "CX": {
+ "name": "Божиќен ОÑтров"
+ },
+ "BO": {
+ "name": "Боливија"
+ },
+ "BA": {
+ "name": "БоÑна и Херцеговина"
+ },
+ "BW": {
+ "name": "Боцвана"
+ },
+ "BR": {
+ "name": "Бразил"
+ },
+ "CI": {
+ "name": "Брегот на Слоновата КоÑка"
+ },
+ "IO": {
+ "name": "БританÑка ИндоокеанÑка Територија"
+ },
+ "VG": {
+ "name": "БританÑки ДевÑтвени ОÑтрови"
+ },
+ "BN": {
+ "name": "Брунеј"
+ },
+ "BG": {
+ "name": "Бугарија"
+ },
+ "BF": {
+ "name": "Буркина ФаÑо"
+ },
+ "BI": {
+ "name": "Бурунди"
+ },
+ "BT": {
+ "name": "Бутан"
+ },
+ "VU": {
+ "name": "Вануату"
+ },
+ "VA": {
+ "name": "Ватикан"
+ },
+ "VE": {
+ "name": "Венецуела"
+ },
+ "VN": {
+ "name": "Виетнам"
+ },
+ "WF": {
+ "name": "Ð’Ð¾Ð»Ð¸Ñ Ð¸ Футуна"
+ },
+ "GA": {
+ "name": "Габон"
+ },
+ "GM": {
+ "name": "Гамбија"
+ },
+ "GH": {
+ "name": "Гана"
+ },
+ "GP": {
+ "name": "Гвадалупе"
+ },
+ "GY": {
+ "name": "Гвајана"
+ },
+ "GU": {
+ "name": "Гвам"
+ },
+ "GT": {
+ "name": "Гватемала"
+ },
+ "GN": {
+ "name": "Гвинеја"
+ },
+ "GW": {
+ "name": "Гвинеја-БиÑау"
+ },
+ "DE": {
+ "name": "Германија"
+ },
+ "GG": {
+ "name": "Гернзи"
+ },
+ "GI": {
+ "name": "Гибралтар"
+ },
+ "GD": {
+ "name": "Гренада"
+ },
+ "GL": {
+ "name": "Гренланд"
+ },
+ "GE": {
+ "name": "Грузија"
+ },
+ "GR": {
+ "name": "Грција"
+ },
+ "DK": {
+ "name": "ДанÑка"
+ },
+ "DG": {
+ "name": "Диего ГарÑија"
+ },
+ "DM": {
+ "name": "Доминика"
+ },
+ "DO": {
+ "name": "ДоминиканÑка Република"
+ },
+ "EG": {
+ "name": "Египет"
+ },
+ "EC": {
+ "name": "Еквадор"
+ },
+ "GQ": {
+ "name": "ЕкваторÑка Гвинеја"
+ },
+ "SV": {
+ "name": "Ел Салвадор"
+ },
+ "ER": {
+ "name": "Еритреја"
+ },
+ "AM": {
+ "name": "Ерменија"
+ },
+ "EE": {
+ "name": "ЕÑтонија"
+ },
+ "ET": {
+ "name": "Етиопија"
+ },
+ "ZM": {
+ "name": "Замбија"
+ },
+ "EH": {
+ "name": "Западна Сахара"
+ },
+ "CV": {
+ "name": "Зелен ’Рт"
+ },
+ "ZW": {
+ "name": "Зимбабве"
+ },
+ "IL": {
+ "name": "Израел"
+ },
+ "IN": {
+ "name": "Индија"
+ },
+ "ID": {
+ "name": "Индонезија"
+ },
+ "IQ": {
+ "name": "Ирак"
+ },
+ "IR": {
+ "name": "Иран"
+ },
+ "IE": {
+ "name": "ИрÑка"
+ },
+ "IS": {
+ "name": "ИÑланд"
+ },
+ "TL": {
+ "name": "ИÑточен Тимор (Тимор ЛеÑте)"
+ },
+ "IT": {
+ "name": "Италија"
+ },
+ "JM": {
+ "name": "Јамајка"
+ },
+ "JP": {
+ "name": "Јапонија"
+ },
+ "YE": {
+ "name": "Јемен"
+ },
+ "JO": {
+ "name": "Јордан"
+ },
+ "SS": {
+ "name": "Јужен Судан"
+ },
+ "KR": {
+ "name": "Јужна Кореја"
+ },
+ "GS": {
+ "name": "Јужна Ðорџија и Јужни Сендвички ОÑтрови"
+ },
+ "ZA": {
+ "name": "ЈужноафриканÑка Република"
+ },
+ "KZ": {
+ "name": "КазахÑтан"
+ },
+ "KY": {
+ "name": "КајманÑки ОÑтрови"
+ },
+ "KH": {
+ "name": "Камбоџа"
+ },
+ "CM": {
+ "name": "Камерун"
+ },
+ "CA": {
+ "name": "Канада"
+ },
+ "IC": {
+ "name": "КанарÑки ОÑтрови"
+ },
+ "BQ": {
+ "name": "КарипÑка Холандија"
+ },
+ "QA": {
+ "name": "Катар"
+ },
+ "KE": {
+ "name": "Кенија"
+ },
+ "CN": {
+ "name": "Кина"
+ },
+ "CY": {
+ "name": "Кипар"
+ },
+ "KG": {
+ "name": "КиргиÑтан"
+ },
+ "KI": {
+ "name": "Кирибати"
+ },
+ "CC": {
+ "name": "КокоÑови (Килиншки) ОÑтрови"
+ },
+ "CO": {
+ "name": "Колумбија"
+ },
+ "KM": {
+ "name": "КоморÑки ОÑтрови"
+ },
+ "CG": {
+ "name": "Конго - Бразавил"
+ },
+ "CD": {
+ "name": "Конго - КиншаÑа"
+ },
+ "XK": {
+ "name": "КоÑово"
+ },
+ "CR": {
+ "name": "КоÑтарика"
+ },
+ "CU": {
+ "name": "Куба"
+ },
+ "KW": {
+ "name": "Кувајт"
+ },
+ "CK": {
+ "name": "Кукови ОÑтрови"
+ },
+ "CW": {
+ "name": "КураÑао"
+ },
+ "LA": {
+ "name": "ЛаоÑ"
+ },
+ "LV": {
+ "name": "Латвија"
+ },
+ "LS": {
+ "name": "ЛеÑото"
+ },
+ "LB": {
+ "name": "Либан"
+ },
+ "LR": {
+ "name": "Либерија"
+ },
+ "LY": {
+ "name": "Либија"
+ },
+ "LT": {
+ "name": "Литванија"
+ },
+ "LI": {
+ "name": "Лихтенштајн"
+ },
+ "LU": {
+ "name": "ЛукÑембург"
+ },
+ "MR": {
+ "name": "Мавританија"
+ },
+ "MU": {
+ "name": "МаврициуÑ"
+ },
+ "MG": {
+ "name": "МадагаÑкар"
+ },
+ "YT": {
+ "name": "Мајот"
+ },
+ "MO": {
+ "name": "Макао С.Ð.Р Кина"
+ },
+ "MK": {
+ "name": "Македонија"
+ },
+ "MW": {
+ "name": "Малави"
+ },
+ "MV": {
+ "name": "Малдиви"
+ },
+ "MY": {
+ "name": "Малезија"
+ },
+ "ML": {
+ "name": "Мали"
+ },
+ "MT": {
+ "name": "Малта"
+ },
+ "MA": {
+ "name": "Мароко"
+ },
+ "MQ": {
+ "name": "Мартиник"
+ },
+ "MH": {
+ "name": "МаршалÑки ОÑтрови"
+ },
+ "MX": {
+ "name": "МекÑико"
+ },
+ "FM": {
+ "name": "Микронезија"
+ },
+ "MM": {
+ "name": "Мјанмар (Бурма)"
+ },
+ "MZ": {
+ "name": "Мозамбик"
+ },
+ "MD": {
+ "name": "Молдавија"
+ },
+ "MC": {
+ "name": "Монако"
+ },
+ "MN": {
+ "name": "Монголија"
+ },
+ "MS": {
+ "name": "МонÑерат"
+ },
+ "NA": {
+ "name": "Ðамибија"
+ },
+ "NR": {
+ "name": "Ðауру"
+ },
+ "NP": {
+ "name": "Ðепал"
+ },
+ "NE": {
+ "name": "Ðигер"
+ },
+ "NG": {
+ "name": "Ðигерија"
+ },
+ "NI": {
+ "name": "Ðикарагва"
+ },
+ "NU": {
+ "name": "Ðиуе"
+ },
+ "NZ": {
+ "name": "Ðов Зеланд"
+ },
+ "NC": {
+ "name": "Ðова Каледонија"
+ },
+ "NO": {
+ "name": "Ðорвешка"
+ },
+ "NF": {
+ "name": "Ðорфолшки ОÑтров"
+ },
+ "AE": {
+ "name": "Обединети ÐрапÑки Емирати"
+ },
+ "GB": {
+ "name": "Обединето КралÑтво"
+ },
+ "AX": {
+ "name": "ОландÑки оÑтрови"
+ },
+ "OM": {
+ "name": "Оман"
+ },
+ "AC": {
+ "name": "ОÑтров ÐÑенÑион"
+ },
+ "IM": {
+ "name": "ОÑтров Ман"
+ },
+ "TC": {
+ "name": "ОÑтрови Ð¢ÑƒÑ€ÐºÑ Ð¸ КајкоÑ"
+ },
+ "PK": {
+ "name": "ПакиÑтан"
+ },
+ "PW": {
+ "name": "Палау"
+ },
+ "PS": {
+ "name": "ПалеÑтинÑки територии"
+ },
+ "PA": {
+ "name": "Панама"
+ },
+ "PG": {
+ "name": "Папуа Ðова Гвинеја"
+ },
+ "PY": {
+ "name": "Парагвај"
+ },
+ "PE": {
+ "name": "Перу"
+ },
+ "PN": {
+ "name": "ПиткернÑки ОÑтрови"
+ },
+ "PL": {
+ "name": "ПолÑка"
+ },
+ "PR": {
+ "name": "Порторико"
+ },
+ "PT": {
+ "name": "Португалија"
+ },
+ "CZ": {
+ "name": "Република Чешка"
+ },
+ "RE": {
+ "name": "Ријунион"
+ },
+ "RO": {
+ "name": "Романија"
+ },
+ "RW": {
+ "name": "Руанда"
+ },
+ "RU": {
+ "name": "РуÑија"
+ },
+ "WS": {
+ "name": "Самоа"
+ },
+ "SM": {
+ "name": "Сан Марино"
+ },
+ "ST": {
+ "name": "Сао Томе и ПринÑипе"
+ },
+ "SA": {
+ "name": "СаудиÑка Ðрабија"
+ },
+ "SZ": {
+ "name": "Свазиленд"
+ },
+ "SJ": {
+ "name": "Свалбард и Жан Мејен"
+ },
+ "SH": {
+ "name": "Света Елена"
+ },
+ "LC": {
+ "name": "Света Луција"
+ },
+ "BL": {
+ "name": "Свети Вартоломеј"
+ },
+ "VC": {
+ "name": "Свети ВинÑент и Гренадините"
+ },
+ "KN": {
+ "name": "Свети КриÑтофер и ÐевиÑ"
+ },
+ "SX": {
+ "name": "Свети Мартин"
+ },
+ "KP": {
+ "name": "Северна Кореја"
+ },
+ "MP": {
+ "name": "Северни МаријанÑки ОÑтрови"
+ },
+ "SC": {
+ "name": "Сејшели"
+ },
+ "SN": {
+ "name": "Сенегал"
+ },
+ "MF": {
+ "name": "Сент Мартин"
+ },
+ "PM": {
+ "name": "Сент Пјер и Микелан"
+ },
+ "EA": {
+ "name": "Сеута и Мелиља"
+ },
+ "SL": {
+ "name": "Сиера Леоне"
+ },
+ "SG": {
+ "name": "Сингапур"
+ },
+ "SY": {
+ "name": "Сирија"
+ },
+ "SK": {
+ "name": "Словачка"
+ },
+ "SI": {
+ "name": "Словенија"
+ },
+ "US": {
+ "name": "Соединети ÐмериканÑки Држави"
+ },
+ "SB": {
+ "name": "СоломонÑки ОÑтрови"
+ },
+ "SO": {
+ "name": "Сомалија"
+ },
+ "RS": {
+ "name": "Србија"
+ },
+ "SD": {
+ "name": "Судан"
+ },
+ "SR": {
+ "name": "Суринам"
+ },
+ "TW": {
+ "name": "Тајван"
+ },
+ "TH": {
+ "name": "Тајланд"
+ },
+ "TZ": {
+ "name": "Танзанија"
+ },
+ "TJ": {
+ "name": "ТаџикиÑтан"
+ },
+ "TG": {
+ "name": "Того"
+ },
+ "TK": {
+ "name": "Токелау"
+ },
+ "TO": {
+ "name": "Тонга"
+ },
+ "TT": {
+ "name": "Тринидад и Тобаго"
+ },
+ "TA": {
+ "name": "ТриÑтан да Куња"
+ },
+ "TV": {
+ "name": "Тувалу"
+ },
+ "TN": {
+ "name": "ТуниÑ"
+ },
+ "TM": {
+ "name": "ТуркмениÑтан"
+ },
+ "TR": {
+ "name": "Турција"
+ },
+ "UG": {
+ "name": "Уганда"
+ },
+ "UZ": {
+ "name": "УзбекиÑтан"
+ },
+ "UA": {
+ "name": "Украина"
+ },
+ "HU": {
+ "name": "Унгарија"
+ },
+ "UY": {
+ "name": "Уругвај"
+ },
+ "FO": {
+ "name": "ФарÑки ОÑтрови"
+ },
+ "PH": {
+ "name": "Филипини"
+ },
+ "FI": {
+ "name": "ФинÑка"
+ },
+ "FJ": {
+ "name": "Фиџи"
+ },
+ "FK": {
+ "name": "ФолкландÑки ОÑтрови"
+ },
+ "FR": {
+ "name": "Франција"
+ },
+ "GF": {
+ "name": "ФранцуÑка Гвајана"
+ },
+ "PF": {
+ "name": "ФранцуÑка Полинезија"
+ },
+ "TF": {
+ "name": "ФранцуÑки Јужни територии"
+ },
+ "HT": {
+ "name": "Хаити"
+ },
+ "NL": {
+ "name": "Холандија"
+ },
+ "HK": {
+ "name": "Хонг Конг С.Ð.Р Кина"
+ },
+ "HN": {
+ "name": "ХондураÑ"
+ },
+ "HR": {
+ "name": "ХрватÑка"
+ },
+ "CF": {
+ "name": "ЦентралноафриканÑка Република"
+ },
+ "ME": {
+ "name": "Црна Гора"
+ },
+ "TD": {
+ "name": "Чад"
+ },
+ "CL": {
+ "name": "Чиле"
+ },
+ "JE": {
+ "name": "ÐерÑи"
+ },
+ "DJ": {
+ "name": "Ðибути"
+ },
+ "CH": {
+ "name": "Швајцарија"
+ },
+ "SE": {
+ "name": "ШведÑка"
+ },
+ "ES": {
+ "name": "Шпанија"
+ },
+ "LK": {
+ "name": "Шри Ланка"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/country/ml.json b/library/intl/resources/country/ml.json
new file mode 100644
index 000000000..398c97dd3
--- /dev/null
+++ b/library/intl/resources/country/ml.json
@@ -0,0 +1,761 @@
+{
+ "AQ": {
+ "name": "അൻറാർടàµà´Ÿà´¿à´•àµà´•"
+ },
+ "AD": {
+ "name": "à´…à´¨àµà´±àµ‹à´±"
+ },
+ "AF": {
+ "name": "à´…à´«àµâ€Œà´—ാനിസàµà´¥à´¾àµ»"
+ },
+ "US": {
+ "name": "അമേരികàµà´•àµ» à´à´•àµà´¯à´¨à´¾à´Ÿàµà´•àµ¾"
+ },
+ "AS": {
+ "name": "അമേരികàµà´•àµ» സമോവ"
+ },
+ "AO": {
+ "name": "അംഗോള"
+ },
+ "IE": {
+ "name": "അയർലാൻഡàµ"
+ },
+ "AR": {
+ "name": "അർജൻറീന"
+ },
+ "AM": {
+ "name": "അർമേനിയ"
+ },
+ "AX": {
+ "name": "അലൻഡൠദàµà´µàµ€à´ªàµà´•àµ¾"
+ },
+ "AL": {
+ "name": "അൽബേനിയ"
+ },
+ "AC": {
+ "name": "അസൻഷൻ à´¦àµà´µàµ€à´ªàµ"
+ },
+ "AZ": {
+ "name": "അസർബൈജാൻ"
+ },
+ "DZ": {
+ "name": "അൾജീരിയ"
+ },
+ "AW": {
+ "name": "അറൂബ"
+ },
+ "AI": {
+ "name": "ആൻഗàµà´µà´¿à´²àµà´²"
+ },
+ "AG": {
+ "name": "ആൻറിഗàµà´µà´¯àµà´‚ ബർബàµà´¡à´¯àµà´‚"
+ },
+ "EC": {
+ "name": "ഇകàµà´µà´¡àµ‹àµ¼"
+ },
+ "GQ": {
+ "name": "ഇകàµà´µà´±àµà´±àµ‹à´±à´¿à´¯àµ½ ഗിനിയ"
+ },
+ "ID": {
+ "name": "ഇനàµà´¤àµ‹à´¨àµ‡à´·àµà´¯"
+ },
+ "IN": {
+ "name": "ഇനàµà´¤àµà´¯"
+ },
+ "IL": {
+ "name": "ഇസàµà´°à´¾à´¯àµ‡àµ½"
+ },
+ "IQ": {
+ "name": "ഇറാഖàµ"
+ },
+ "IR": {
+ "name": "ഇറാൻ"
+ },
+ "IT": {
+ "name": "ഇറàµà´±à´²à´¿"
+ },
+ "EG": {
+ "name": "ഈജിപàµà´¤àµ"
+ },
+ "UA": {
+ "name": "ഉകàµà´°àµ†à´¯àµâ€Œàµ»"
+ },
+ "UG": {
+ "name": "ഉഗാണàµà´Ÿ"
+ },
+ "MP": {
+ "name": "ഉതàµà´¤à´° മറിയാനാ à´¦àµà´µàµ€à´ªàµà´•àµ¾"
+ },
+ "KP": {
+ "name": "ഉതàµà´¤à´°à´•àµŠà´±à´¿à´¯"
+ },
+ "UZ": {
+ "name": "ഉസàµâ€Œà´¬àµ†à´•àµà´•à´¿à´¸àµà´¥à´¾àµ»"
+ },
+ "UY": {
+ "name": "ഉറàµà´—àµà´µàµ‡"
+ },
+ "ET": {
+ "name": "à´Žà´¤àµà´¯àµ‹à´ªàµà´¯"
+ },
+ "SV": {
+ "name": "എൽ സാൽവദോർ"
+ },
+ "EE": {
+ "name": "à´Žà´¸àµà´±àµà´±àµ‹à´£à´¿à´¯â€"
+ },
+ "ER": {
+ "name": "എറിതàµà´°à´¿à´¯"
+ },
+ "IM": {
+ "name": "à´àµ½ ഓഫൠമാൻ"
+ },
+ "IS": {
+ "name": "à´à´¸àµâ€Œà´²à´¾à´¨àµà´±àµ"
+ },
+ "OM": {
+ "name": "ഒമാൻ"
+ },
+ "AT": {
+ "name": "à´“à´¸àµà´Ÿàµà´°à´¿à´¯"
+ },
+ "AU": {
+ "name": "à´“à´¸àµâ€Œà´Ÿàµà´°àµ‡à´²à´¿à´¯"
+ },
+ "KH": {
+ "name": "കംബോഡിയ"
+ },
+ "KZ": {
+ "name": "കസാഖിസàµà´¥à´¾àµ»"
+ },
+ "CA": {
+ "name": "കാനഡ"
+ },
+ "IC": {
+ "name": "കാനറി à´¦àµà´µàµ€à´ªàµà´•àµ¾"
+ },
+ "CM": {
+ "name": "കാമറൂൺ"
+ },
+ "KI": {
+ "name": "കിരിബാടàµà´Ÿà´¿"
+ },
+ "KG": {
+ "name": "കിർഗിസàµà´¥à´¾àµ»"
+ },
+ "CK": {
+ "name": "à´•àµà´•àµà´•àµ à´¦àµà´µàµ€à´ªàµà´•àµ¾"
+ },
+ "KW": {
+ "name": "à´•àµà´µàµˆà´±àµà´±àµ"
+ },
+ "CW": {
+ "name": "à´•àµà´±à´¾à´•à´¾à´µàµ‹"
+ },
+ "KE": {
+ "name": "കെനിയ"
+ },
+ "CV": {
+ "name": "കേപàµà´ªàµ വെർദെ"
+ },
+ "KY": {
+ "name": "കേമാൻ à´¦àµà´µàµ€à´ªàµà´•àµ¾"
+ },
+ "XK": {
+ "name": "കൊസോവൊ"
+ },
+ "CO": {
+ "name": "കൊളംബിയ"
+ },
+ "CC": {
+ "name": "കോകàµà´•à´¸àµ à´¦àµà´µàµ€à´ªàµà´•àµ¾"
+ },
+ "CI": {
+ "name": "കോടàµà´Ÿàµ à´¡à´¿ വാർ"
+ },
+ "KM": {
+ "name": "കോമൊറോസàµ"
+ },
+ "CD": {
+ "name": "കോംഗോ - കിൻഷാസ"
+ },
+ "CG": {
+ "name": "കോംഗോ - à´¬àµà´°à´¾à´¸à´µà´¿à´²àµà´²à´¿"
+ },
+ "CR": {
+ "name": "കോസàµà´±àµà´±à´±à´¿à´•àµà´•"
+ },
+ "CU": {
+ "name": "à´•àµà´¯àµ‚à´¬"
+ },
+ "CX": {
+ "name": "à´•àµà´°à´¿à´¸àµà´®à´¸àµ à´¦àµà´µàµ€à´ªàµ"
+ },
+ "HR": {
+ "name": "à´•àµà´°àµŠà´¯àµ‡à´·àµà´¯"
+ },
+ "QA": {
+ "name": "à´–à´¤àµà´¤àµ¼"
+ },
+ "GY": {
+ "name": "ഗയാന"
+ },
+ "GA": {
+ "name": "ഗാബൺ"
+ },
+ "GM": {
+ "name": "ഗാംബിയ"
+ },
+ "GN": {
+ "name": "ഗിനിയ"
+ },
+ "GW": {
+ "name": "ഗിനിയ-ബിസൗ"
+ },
+ "GG": {
+ "name": "ഗേൺസി"
+ },
+ "GD": {
+ "name": "à´—àµà´°à´¨àµ‡à´¡"
+ },
+ "GL": {
+ "name": "à´—àµà´°àµ€àµ»à´²à´¾àµ»à´±àµ"
+ },
+ "GR": {
+ "name": "à´—àµà´°àµ€à´¸àµ"
+ },
+ "GT": {
+ "name": "à´—àµà´µà´¾à´Ÿàµà´Ÿà´¿à´®à´¾à´²"
+ },
+ "GP": {
+ "name": "à´—àµà´µà´¾à´¡à´²àµ‚à´ªàµà´ªàµ"
+ },
+ "GU": {
+ "name": "à´—àµà´µà´¾à´‚"
+ },
+ "GH": {
+ "name": "ഘാന"
+ },
+ "CL": {
+ "name": "ചിലി"
+ },
+ "CZ": {
+ "name": "ചെകàµà´•àµ റിപàµà´ªà´¬àµà´²à´¿à´•àµ"
+ },
+ "CN": {
+ "name": "ചൈന"
+ },
+ "TD": {
+ "name": "ഛാഡàµ"
+ },
+ "JP": {
+ "name": "ജപàµà´ªà´¾àµ»"
+ },
+ "JM": {
+ "name": "ജമൈകàµà´•"
+ },
+ "DE": {
+ "name": "ജർമനി"
+ },
+ "GI": {
+ "name": "ജിബàµà´°à´¾àµ¾à´Ÿàµà´Ÿàµ¼"
+ },
+ "JE": {
+ "name": "ജേഴàµà´¸à´¿"
+ },
+ "GE": {
+ "name": "ജോർജàµà´œà´¿à´¯"
+ },
+ "JO": {
+ "name": "ജോർദàµà´¦à´¾àµ»"
+ },
+ "TC": {
+ "name": "ടർകàµà´•àµâ€Œà´¸àµà´‚ കെയàµâ€Œà´•àµà´•àµ‹ à´¦àµà´µàµ€à´ªàµà´•à´³àµà´‚"
+ },
+ "TZ": {
+ "name": "ടാൻസാനിയ"
+ },
+ "TN": {
+ "name": "à´Ÿàµà´£àµ€à´·àµà´¯"
+ },
+ "TV": {
+ "name": "à´Ÿàµà´µà´¾à´²àµ"
+ },
+ "TK": {
+ "name": "ടോകàµà´•àµ†à´²àµ‚"
+ },
+ "TG": {
+ "name": "ടോഗോ"
+ },
+ "TO": {
+ "name": "ടോംഗ"
+ },
+ "TA": {
+ "name": "à´Ÿàµà´°à´¸àµà´±àµà´±àµ» à´¡ കൂന"
+ },
+ "TT": {
+ "name": "à´Ÿàµà´°à´¿à´¨à´¿à´¡à´¾à´¡àµà´‚ à´Ÿàµà´¬à´¾à´—ോയàµà´‚"
+ },
+ "DG": {
+ "name": "ഡീഗോ à´—àµà´°à´¾à´·àµà´¯"
+ },
+ "DK": {
+ "name": "ഡെൻമാർകàµà´•àµ"
+ },
+ "DM": {
+ "name": "ഡൊമിനികàµà´•"
+ },
+ "DO": {
+ "name": "ഡൊമിനികàµà´•àµ» റിപàµà´ªà´¬àµà´²à´¿à´•àµ"
+ },
+ "TJ": {
+ "name": "താജികàµà´•à´¿à´¸àµà´¥à´¾àµ»"
+ },
+ "TH": {
+ "name": "തായàµâ€Œà´²à´¾àµ»à´¡àµ"
+ },
+ "TW": {
+ "name": "തായàµâ€Œà´µà´¾àµ»"
+ },
+ "TL": {
+ "name": "തിമോർ-ലെസàµà´±àµà´±àµ†"
+ },
+ "TR": {
+ "name": "à´¤àµàµ¼à´•àµà´•à´¿"
+ },
+ "TM": {
+ "name": "à´¤àµàµ¼à´•àµà´•àµà´®àµ†à´¨à´¿à´¸àµà´¥à´¾àµ»"
+ },
+ "GS": {
+ "name": "ദകàµà´·à´¿à´£ ജോർജàµà´œà´¿à´¯à´¯àµà´‚ ദകàµà´·à´¿à´£ സാൻഡàµâ€Œà´µà´¿à´šàµà´šàµ à´¦àµà´µàµ€à´ªàµà´•à´³àµà´‚"
+ },
+ "SS": {
+ "name": "ദകàµà´·à´¿à´£ à´¸àµà´¡à´¾àµ»"
+ },
+ "KR": {
+ "name": "ദകàµà´·à´¿à´£à´•àµŠà´±à´¿à´¯"
+ },
+ "ZA": {
+ "name": "ദകàµà´·à´¿à´£à´¾à´«àµà´°à´¿à´•àµà´•"
+ },
+ "DJ": {
+ "name": "ദിജിബൗടàµà´Ÿà´¿"
+ },
+ "NA": {
+ "name": "നമീബിയ"
+ },
+ "NI": {
+ "name": "നികàµà´•à´°à´¾à´—àµà´µ"
+ },
+ "NL": {
+ "name": "നെതർലാൻഡàµâ€Œà´¸àµ"
+ },
+ "NP": {
+ "name": "നേപàµà´ªà´¾àµ¾"
+ },
+ "NE": {
+ "name": "നൈജർ"
+ },
+ "NG": {
+ "name": "നൈജീരിയ"
+ },
+ "NF": {
+ "name": "നോർഫോകൠദàµà´µàµ€à´ªàµ"
+ },
+ "NO": {
+ "name": "നോർവെ"
+ },
+ "NR": {
+ "name": "നൗറàµ"
+ },
+ "NU": {
+ "name": "à´¨àµà´¯àµ‚യി"
+ },
+ "NZ": {
+ "name": "à´¨àµà´¯àµ‚സിലാൻറàµ"
+ },
+ "PA": {
+ "name": "പനാമ"
+ },
+ "PY": {
+ "name": "പരാഗàµà´µàµ‡"
+ },
+ "PW": {
+ "name": "പലാവàµ"
+ },
+ "EH": {
+ "name": "പശàµà´šà´¿à´® സഹാറ"
+ },
+ "PK": {
+ "name": "പാകàµà´•à´¿à´¸àµà´¥à´¾àµ»"
+ },
+ "PG": {
+ "name": "പാപàµà´ªàµà´µ à´¨àµà´¯àµ‚ ഗിനിയ"
+ },
+ "PS": {
+ "name": "പാലസàµâ€Œà´¤àµ€àµ» à´ªàµà´°à´¦àµ‡à´¶à´™àµà´™àµ¾"
+ },
+ "PN": {
+ "name": "പിറàµà´±àµâ€Œà´•àµ†à´¯àµâ€Œàµ» à´¦àµà´µàµ€à´ªàµà´•àµ¾"
+ },
+ "NC": {
+ "name": "à´ªàµà´¤à´¿à´¯ കാലിഡോണിയ"
+ },
+ "PE": {
+ "name": "പെറàµ"
+ },
+ "PT": {
+ "name": "പോർചàµà´šàµà´—ൽ"
+ },
+ "PL": {
+ "name": "പോളണàµà´Ÿàµ"
+ },
+ "PR": {
+ "name": "à´ªàµà´¯àµ‚ർടàµà´Ÿàµ‹ റികàµà´•àµ‹"
+ },
+ "FO": {
+ "name": "ഫറോ à´¦àµà´µàµ€à´ªàµà´•àµ¾"
+ },
+ "FK": {
+ "name": "ഫാകàµà´•àµâ€Œà´²à´¾à´¨àµà´±àµ à´¦àµà´µàµ€à´ªàµà´•àµ¾"
+ },
+ "FJ": {
+ "name": "ഫിജി"
+ },
+ "FI": {
+ "name": "ഫിൻലാൻഡàµ"
+ },
+ "PH": {
+ "name": "ഫിലിപàµà´ªàµˆàµ»à´¸àµ"
+ },
+ "GF": {
+ "name": "à´«àµà´°à´žàµà´šàµ ഗയാന"
+ },
+ "TF": {
+ "name": "à´«àµà´°à´žàµà´šàµ ദകàµà´·à´¿à´£ ഭൂപàµà´°à´¦àµ‡à´¶à´‚"
+ },
+ "PF": {
+ "name": "à´«àµà´°à´žàµà´šàµ പോളിനേഷàµà´¯"
+ },
+ "FR": {
+ "name": "à´«àµà´°à´¾àµ»à´¸àµ"
+ },
+ "BD": {
+ "name": "ബംഗàµà´²à´¾à´¦àµ‡à´¶àµ"
+ },
+ "BM": {
+ "name": "ബർമàµà´¡"
+ },
+ "BS": {
+ "name": "ബഹാമാസàµ"
+ },
+ "BH": {
+ "name": "ബഹàµà´±à´¿àµ»"
+ },
+ "BG": {
+ "name": "ബൾഗേറിയ"
+ },
+ "BI": {
+ "name": "ബറàµà´£àµà´Ÿà´¿"
+ },
+ "BB": {
+ "name": "ബാർബഡോസàµ"
+ },
+ "BF": {
+ "name": "à´¬àµàµ¼à´•àµà´•à´¿à´¨à´¾ ഫാസോ"
+ },
+ "BJ": {
+ "name": "ബെനിൻ"
+ },
+ "BY": {
+ "name": "ബെലറൂസàµ"
+ },
+ "BZ": {
+ "name": "ബെലീസàµ"
+ },
+ "BE": {
+ "name": "ബെൽജിയം"
+ },
+ "BQ": {
+ "name": "ബൊണെയàµàµ¼, സിനàµà´±àµ à´¯àµà´¸àµà´±àµà´±àµ‡à´·àµà´¯à´¸àµ, സാബ à´Žà´¨àµà´¨à´¿à´µ"
+ },
+ "BO": {
+ "name": "ബൊളീവിയ"
+ },
+ "BW": {
+ "name": "ബോടàµà´¸àµà´µà´¾à´¨"
+ },
+ "BA": {
+ "name": "ബോസàµà´¨à´¿à´¯à´¯àµà´‚ ഹെർസഗോവിനയàµà´‚"
+ },
+ "BR": {
+ "name": "à´¬àµà´°à´¸àµ€àµ½"
+ },
+ "GB": {
+ "name": "à´¬àµà´°à´¿à´Ÿàµà´Ÿàµ»"
+ },
+ "IO": {
+ "name": "à´¬àµà´°à´¿à´Ÿàµà´Ÿàµ€à´·àµ ഇനàµà´¤àµà´¯àµ» മഹാസമàµà´¦àµà´° à´ªàµà´°à´¦àµ‡à´¶à´‚"
+ },
+ "VG": {
+ "name": "à´¬àµà´°à´¿à´Ÿàµà´Ÿàµ€à´·àµ വെർജിൻ à´¦àµà´µàµ€à´ªàµà´•àµ¾"
+ },
+ "BN": {
+ "name": "à´¬àµà´°àµ‚ണൈ"
+ },
+ "BT": {
+ "name": "ഭൂടàµà´Ÿà´¾àµ»"
+ },
+ "MO": {
+ "name": "മകàµà´•à´¾à´µàµ‹ SAR ചൈന"
+ },
+ "MG": {
+ "name": "മഡഗാസàµà´•àµ¼"
+ },
+ "MN": {
+ "name": "മംഗോളിയ"
+ },
+ "YT": {
+ "name": "മയോടàµà´Ÿà´¿"
+ },
+ "MW": {
+ "name": "മലാവി"
+ },
+ "MY": {
+ "name": "മലേഷàµà´¯"
+ },
+ "MD": {
+ "name": "മൾഡോവ"
+ },
+ "MQ": {
+ "name": "മാർടàµà´Ÿà´¿à´¨à´¿à´•àµà´•àµ"
+ },
+ "MH": {
+ "name": "മാർഷൽâ€â€ à´¦àµà´µàµ€à´ªàµà´•àµ¾"
+ },
+ "ML": {
+ "name": "മാലി"
+ },
+ "MV": {
+ "name": "മാലിദàµà´µàµ€à´ªàµ"
+ },
+ "MK": {
+ "name": "മാസിഡോണിയ"
+ },
+ "MT": {
+ "name": "മാൾടàµà´Ÿ"
+ },
+ "MX": {
+ "name": "മെകàµà´¸à´¿à´•àµà´•àµ‹"
+ },
+ "FM": {
+ "name": "മൈകàµà´°àµ‹à´¨àµ‡à´·àµà´¯"
+ },
+ "MC": {
+ "name": "മൊണാകàµà´•àµ‹"
+ },
+ "MS": {
+ "name": "മൊണàµà´Ÿàµ†à´¸à´°à´¤àµà´¤àµ"
+ },
+ "MZ": {
+ "name": "മൊസാംബികàµà´•àµ"
+ },
+ "MA": {
+ "name": "മൊറോകàµà´•àµŠ"
+ },
+ "ME": {
+ "name": "മോണàµà´Ÿàµ†à´¨àµ†à´—àµà´°àµ‹"
+ },
+ "MR": {
+ "name": "മൗറിറàµà´±à´¾à´¨à´¿à´¯"
+ },
+ "MU": {
+ "name": "മൗറീഷàµà´¯à´¸àµ"
+ },
+ "MM": {
+ "name": "à´®àµà´¯à´¾àµ»à´®à´¾àµ¼ (ബർമàµà´®)"
+ },
+ "UM": {
+ "name": "à´¯àµ.à´Žà´¸àµ. à´¦àµà´µàµ€à´ªà´¸à´®àµ‚ഹങàµà´™àµ¾"
+ },
+ "VI": {
+ "name": "à´¯àµ.à´Žà´¸àµ. വെർജിൻ à´¦àµà´µàµ€à´ªàµà´•àµ¾"
+ },
+ "AE": {
+ "name": "à´¯àµà´£àµˆà´±àµà´±à´¡àµ അറബൠഎമിറൈറàµà´±àµâ€Œà´¸àµ"
+ },
+ "YE": {
+ "name": "യെമൻ"
+ },
+ "LU": {
+ "name": "ലകàµà´¸à´‚ബർഗàµ"
+ },
+ "LA": {
+ "name": "ലാവോസàµ"
+ },
+ "LV": {
+ "name": "ലാറàµà´±àµà´µà´¿à´¯"
+ },
+ "LI": {
+ "name": "ലിചàµà´šàµºà´¸àµà´±àµà´±àµˆàµ»"
+ },
+ "LT": {
+ "name": "ലിതàµà´µà´¾à´¨à´¿à´¯"
+ },
+ "LY": {
+ "name": "ലിബിയ"
+ },
+ "LB": {
+ "name": "ലെബനൻ"
+ },
+ "LS": {
+ "name": "ലെസോതോ"
+ },
+ "LR": {
+ "name": "ലൈബീരിയ"
+ },
+ "VA": {
+ "name": "വതàµà´¤à´¿à´•àµà´•à´¾àµ»"
+ },
+ "VU": {
+ "name": "വനàµà´µà´¾à´¤àµ"
+ },
+ "WF": {
+ "name": "വാലിസൠആനàµà´±àµ à´«àµà´¯àµ‚à´šàµà´¯àµà´¨"
+ },
+ "VN": {
+ "name": "വിയറàµà´±àµà´¨à´¾à´‚"
+ },
+ "VE": {
+ "name": "വെനിസàµà´µàµ‡à´²"
+ },
+ "LK": {
+ "name": "à´¶àµà´°àµ€à´²à´™àµà´•"
+ },
+ "WS": {
+ "name": "സമോവ"
+ },
+ "SM": {
+ "name": "സാൻ മറിനോ"
+ },
+ "ZM": {
+ "name": "സാംബിയ"
+ },
+ "ST": {
+ "name": "സാവോ ടോമàµà´‚ à´ªàµà´°à´¿àµ»à´¸à´¿à´ªàµ†à´¯àµà´‚"
+ },
+ "SX": {
+ "name": "സിനàµà´±àµ മാർടàµà´Ÿàµ†àµ»"
+ },
+ "SG": {
+ "name": "സിംഗപàµà´ªàµàµ¼"
+ },
+ "ZW": {
+ "name": "സിംബാബàµâ€Œà´µàµ‡"
+ },
+ "SL": {
+ "name": "സിയെറ ലിയോൺ"
+ },
+ "SY": {
+ "name": "സിറിയ"
+ },
+ "SD": {
+ "name": "à´¸àµà´¡à´¾àµ»"
+ },
+ "SR": {
+ "name": "à´¸àµà´°à´¿à´¨àµ†à´¯à´¿à´‚"
+ },
+ "SN": {
+ "name": "സെനഗൽ"
+ },
+ "CF": {
+ "name": "സെൻടàµà´°àµ½ ആഫàµà´°à´¿à´•àµà´•àµ» റിപàµà´ªà´¬àµà´²à´¿à´•àµ"
+ },
+ "KN": {
+ "name": "സെനàµà´±àµ à´•à´¿à´±àµà´±àµâ€Œà´¸àµà´‚ നെവിസàµà´‚"
+ },
+ "PM": {
+ "name": "സെനàµà´±àµ പിയറിയàµà´‚ മികàµà´•à´²à´£àµà´‚"
+ },
+ "BL": {
+ "name": "സെനàµà´±àµ ബാർതàµà´¤à´²à´®à´¿"
+ },
+ "MF": {
+ "name": "സെൻറൠമാർടàµà´Ÿà´¿àµ»"
+ },
+ "LC": {
+ "name": "സെൻറൠലൂസിയ"
+ },
+ "VC": {
+ "name": "സെനàµà´±àµ വിൻസെനàµà´±àµà´‚ à´—àµà´°à´¨àµ†à´¡àµˆàµ»à´¸àµà´‚"
+ },
+ "SH": {
+ "name": "സെൻറൠഹെലീന"
+ },
+ "EA": {
+ "name": "സെയൂതàµà´¤ ആൻഡൠമെലിയ"
+ },
+ "SC": {
+ "name": "സെയàµâ€Œà´·àµ†àµ½à´¸àµ"
+ },
+ "RS": {
+ "name": "സെർബിയ"
+ },
+ "CY": {
+ "name": "സൈപàµà´°à´¸àµ"
+ },
+ "SO": {
+ "name": "സോമാലിയ"
+ },
+ "SB": {
+ "name": "സോളമൻ†ദàµà´µàµ€à´ªàµà´•àµ¾"
+ },
+ "SA": {
+ "name": "സൗദി അറേബàµà´¯"
+ },
+ "ES": {
+ "name": "à´¸àµâ€Œà´ªàµ†à´¯à´¿àµ»"
+ },
+ "SK": {
+ "name": "à´¸àµà´²àµ‹à´µà´¾à´•àµà´¯"
+ },
+ "SI": {
+ "name": "à´¸àµà´²àµ‹à´µàµ‡à´¨à´¿à´¯"
+ },
+ "SJ": {
+ "name": "à´¸àµà´µà´¾àµ½à´¬à´¾à´¡àµà´‚ ജാൻ മായേനàµà´‚"
+ },
+ "SZ": {
+ "name": "à´¸àµà´µà´¾à´¸à´¿à´²à´¾àµ»à´±àµ"
+ },
+ "CH": {
+ "name": "à´¸àµà´µà´¿à´±àµà´±àµà´¸àµ¼à´²à´¾àµ»à´¡àµ"
+ },
+ "SE": {
+ "name": "à´¸àµà´µàµ€à´¡àµ»"
+ },
+ "HU": {
+ "name": "ഹംഗറി"
+ },
+ "HT": {
+ "name": "ഹെയàµà´¤à´¿"
+ },
+ "HK": {
+ "name": "ഹോങൠകോങൠഎസàµ.à´.ആർ. ചൈന"
+ },
+ "HN": {
+ "name": "ഹോണàµà´Ÿàµà´±à´¾à´¸àµ"
+ },
+ "RU": {
+ "name": "റഷàµà´¯"
+ },
+ "RE": {
+ "name": "റീയൂണിയൻ"
+ },
+ "RW": {
+ "name": "à´±àµà´µà´¾à´£àµà´Ÿ"
+ },
+ "RO": {
+ "name": "റൊമാനിയ"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/country/mn.json b/library/intl/resources/country/mn.json
new file mode 100644
index 000000000..7497cd6da
--- /dev/null
+++ b/library/intl/resources/country/mn.json
@@ -0,0 +1,761 @@
+{
+ "AU": {
+ "name": "ÐвÑтрали"
+ },
+ "AT": {
+ "name": "ÐвÑтри"
+ },
+ "AZ": {
+ "name": "Ðзербайжан"
+ },
+ "AX": {
+ "name": "Ðландын Ðрлууд"
+ },
+ "AL": {
+ "name": "Ðлбани"
+ },
+ "DZ": {
+ "name": "Ðлжир"
+ },
+ "US": {
+ "name": "Ðмерикийн ÐÑгдÑÑн УлÑ"
+ },
+ "AS": {
+ "name": "Ðмерикийн Самоа"
+ },
+ "AI": {
+ "name": "Ðнгила"
+ },
+ "AO": {
+ "name": "Ðнгол"
+ },
+ "AD": {
+ "name": "Ðндорра"
+ },
+ "AQ": {
+ "name": "Ðнтарктик"
+ },
+ "AG": {
+ "name": "Ðнтигуа ба Барбуда"
+ },
+ "VI": {
+ "name": "ÐÐУ-ын Виржиний Ðрлууд"
+ },
+ "UM": {
+ "name": "ÐÐУ-ын тойрÑон арлууд"
+ },
+ "AE": {
+ "name": "Ðрабын ÐÑгдÑÑн Эмират"
+ },
+ "AR": {
+ "name": "Ðргентин"
+ },
+ "AM": {
+ "name": "Ðрмен"
+ },
+ "AW": {
+ "name": "Ðруба"
+ },
+ "AC": {
+ "name": "ÐÑкенÑион Ðрал"
+ },
+ "AF": {
+ "name": "ÐфганиÑтан"
+ },
+ "BS": {
+ "name": "Багам"
+ },
+ "NP": {
+ "name": "Балба"
+ },
+ "BD": {
+ "name": "Бангладеш"
+ },
+ "BB": {
+ "name": "БарбадоÑ"
+ },
+ "EH": {
+ "name": "Баруун Сахар"
+ },
+ "BH": {
+ "name": "Бахрейн"
+ },
+ "BY": {
+ "name": "БеларуÑ"
+ },
+ "BE": {
+ "name": "Белги"
+ },
+ "BZ": {
+ "name": "Белиз"
+ },
+ "BJ": {
+ "name": "Бенин"
+ },
+ "BM": {
+ "name": "Бермуд"
+ },
+ "MO": {
+ "name": "БÐÐ¥ÐУ-ын ТуÑгай захиргааны Ð±Ò¯Ñ ÐœÐ°ÐºÐ°Ð¾"
+ },
+ "HK": {
+ "name": "БÐÐ¥ÐУ-ын ТуÑгай захиргааны Ð±Ò¯Ñ Ð¥Ð¾Ð½Ð³ Конг"
+ },
+ "BG": {
+ "name": "Болгар"
+ },
+ "BO": {
+ "name": "Боливи"
+ },
+ "BA": {
+ "name": "БоÑни Херцеговин"
+ },
+ "BW": {
+ "name": "БотÑвана"
+ },
+ "BR": {
+ "name": "Бразил"
+ },
+ "VG": {
+ "name": "Британийн Виржиний Ðрлууд"
+ },
+ "IO": {
+ "name": "Британийн харьÑа ЭнÑÑ‚Ñ…Ñгийн далай дахь нутаг дÑвÑгÑрүүд"
+ },
+ "BN": {
+ "name": "Бруней"
+ },
+ "BF": {
+ "name": "Буркина фаÑо"
+ },
+ "BI": {
+ "name": "Бурунди"
+ },
+ "BT": {
+ "name": "Бутан"
+ },
+ "DO": {
+ "name": "Бүгд Ðайрамдах Доминикан"
+ },
+ "CZ": {
+ "name": "Бүгд Ðайрамдах Чех УлÑ"
+ },
+ "VU": {
+ "name": "Вануату"
+ },
+ "VA": {
+ "name": "Ватикан хот улÑ"
+ },
+ "VE": {
+ "name": "ВенеÑуÑл"
+ },
+ "VN": {
+ "name": "Вьетнам"
+ },
+ "GA": {
+ "name": "Габон"
+ },
+ "HT": {
+ "name": "Гаити"
+ },
+ "GY": {
+ "name": "Гайана"
+ },
+ "GM": {
+ "name": "Гамби"
+ },
+ "GH": {
+ "name": "Гана"
+ },
+ "GP": {
+ "name": "Гваделуп"
+ },
+ "GT": {
+ "name": "Гватемал"
+ },
+ "GN": {
+ "name": "Гвиней"
+ },
+ "GW": {
+ "name": "Гвиней-БиÑау"
+ },
+ "DE": {
+ "name": "Герман"
+ },
+ "GG": {
+ "name": "ГернÑи"
+ },
+ "GI": {
+ "name": "Гибралтар"
+ },
+ "NL": {
+ "name": "Голланд"
+ },
+ "HN": {
+ "name": "ГондураÑ"
+ },
+ "GR": {
+ "name": "Грек"
+ },
+ "GD": {
+ "name": "Гренада"
+ },
+ "GL": {
+ "name": "Гренланд"
+ },
+ "GU": {
+ "name": "Гуам"
+ },
+ "GE": {
+ "name": "Гүрж"
+ },
+ "DK": {
+ "name": "Дани"
+ },
+ "DJ": {
+ "name": "Джибути"
+ },
+ "DG": {
+ "name": "Диего ГарÑиа"
+ },
+ "DM": {
+ "name": "Доминик"
+ },
+ "EG": {
+ "name": "Египет"
+ },
+ "JE": {
+ "name": "ЖерÑи"
+ },
+ "ZM": {
+ "name": "Замби"
+ },
+ "ZW": {
+ "name": "Зимбабве"
+ },
+ "CX": {
+ "name": "Зул Сарын Ðрал"
+ },
+ "IL": {
+ "name": "Израиль"
+ },
+ "ID": {
+ "name": "Индонези"
+ },
+ "IQ": {
+ "name": "Ирак"
+ },
+ "IR": {
+ "name": "Иран"
+ },
+ "IE": {
+ "name": "Ирланд"
+ },
+ "IS": {
+ "name": "ИÑланд"
+ },
+ "ES": {
+ "name": "ИÑпани"
+ },
+ "IT": {
+ "name": "Итали"
+ },
+ "GB": {
+ "name": "Их Британи"
+ },
+ "YE": {
+ "name": "Йемен"
+ },
+ "JO": {
+ "name": "Йордан"
+ },
+ "KZ": {
+ "name": "КазахÑтан"
+ },
+ "KY": {
+ "name": "Кайманы Ðрлууд"
+ },
+ "KH": {
+ "name": "Камбож"
+ },
+ "CM": {
+ "name": "Камерун"
+ },
+ "CA": {
+ "name": "Канад"
+ },
+ "IC": {
+ "name": "Канарын арлууд"
+ },
+ "CV": {
+ "name": "Капе Верде"
+ },
+ "BQ": {
+ "name": "Карибын Ðидерланд"
+ },
+ "QA": {
+ "name": "Катар"
+ },
+ "KE": {
+ "name": "Кени"
+ },
+ "CY": {
+ "name": "Кипр"
+ },
+ "KI": {
+ "name": "Кирибати"
+ },
+ "CC": {
+ "name": "ÐšÐ¾ÐºÐ¾Ñ (Кийлинг) Ðрлууд"
+ },
+ "CO": {
+ "name": "Колумб"
+ },
+ "KM": {
+ "name": "КомороÑ"
+ },
+ "CG": {
+ "name": "Конго Браззавиль"
+ },
+ "CD": {
+ "name": "Конго-КиншаÑа"
+ },
+ "XK": {
+ "name": "КоÑово"
+ },
+ "CR": {
+ "name": "КоÑта Рика"
+ },
+ "CI": {
+ "name": "Кот д’Ивуар"
+ },
+ "CU": {
+ "name": "Куба"
+ },
+ "KW": {
+ "name": "Кувейт"
+ },
+ "CW": {
+ "name": "Куракао"
+ },
+ "CK": {
+ "name": "Күүкийн Ðрлууд"
+ },
+ "KG": {
+ "name": "КыргызÑтан"
+ },
+ "LA": {
+ "name": "ЛаоÑ"
+ },
+ "LV": {
+ "name": "Латви"
+ },
+ "LS": {
+ "name": "ЛеÑото"
+ },
+ "LR": {
+ "name": "Либери"
+ },
+ "LB": {
+ "name": "Ливан"
+ },
+ "LY": {
+ "name": "Ливи"
+ },
+ "LT": {
+ "name": "Литва"
+ },
+ "LI": {
+ "name": "Лихтенштейн"
+ },
+ "LU": {
+ "name": "ЛюкÑембург"
+ },
+ "MR": {
+ "name": "Мавритани"
+ },
+ "MU": {
+ "name": "МавритуÑ"
+ },
+ "MG": {
+ "name": "МадагаÑкар"
+ },
+ "YT": {
+ "name": "Майотте"
+ },
+ "MK": {
+ "name": "Македон"
+ },
+ "MW": {
+ "name": "Малави"
+ },
+ "MY": {
+ "name": "Малайз"
+ },
+ "ML": {
+ "name": "Мали"
+ },
+ "MV": {
+ "name": "Мальдив"
+ },
+ "MT": {
+ "name": "Мальта"
+ },
+ "MA": {
+ "name": "Марокко"
+ },
+ "MQ": {
+ "name": "Мартиник"
+ },
+ "MH": {
+ "name": "Маршаллын Ðрлууд"
+ },
+ "MX": {
+ "name": "МекÑик"
+ },
+ "FM": {
+ "name": "Микронези"
+ },
+ "MZ": {
+ "name": "Мозамбик"
+ },
+ "MD": {
+ "name": "Молдав"
+ },
+ "MC": {
+ "name": "Монако"
+ },
+ "MN": {
+ "name": "Монгол"
+ },
+ "ME": {
+ "name": "Монтенегро"
+ },
+ "MS": {
+ "name": "МонтÑеррат"
+ },
+ "MM": {
+ "name": "МьÑнмар (Бурма)"
+ },
+ "IM": {
+ "name": "ÐœÑн Ðрал"
+ },
+ "NA": {
+ "name": "Ðамиби"
+ },
+ "NR": {
+ "name": "Ðауру"
+ },
+ "NE": {
+ "name": "Ðигер"
+ },
+ "NG": {
+ "name": "Ðигери"
+ },
+ "NI": {
+ "name": "Ðикарагуа"
+ },
+ "NU": {
+ "name": "ÐиуÑ"
+ },
+ "NO": {
+ "name": "Ðорвеги"
+ },
+ "NF": {
+ "name": "Ðорфолк Ðрлууд"
+ },
+ "OM": {
+ "name": "Оман"
+ },
+ "RU": {
+ "name": "ОроÑ"
+ },
+ "ZA": {
+ "name": "Өмнөд Ðфрик тив"
+ },
+ "GS": {
+ "name": "Өмнөд Жоржиа ба Өмнөд СÑндвичийн Ðрлууд"
+ },
+ "KR": {
+ "name": "Өмнөд СолонгоÑ"
+ },
+ "SS": {
+ "name": "Өмнөд Судан"
+ },
+ "PK": {
+ "name": "ПакиÑтан"
+ },
+ "PW": {
+ "name": "Палау"
+ },
+ "PS": {
+ "name": "ПалеÑтины нутаг дÑвÑгÑрүүд"
+ },
+ "PA": {
+ "name": "Панам"
+ },
+ "PG": {
+ "name": "Папуа Ð¨Ð¸Ð½Ñ Ð“Ð²Ð¸Ð½ÐµÐ¹"
+ },
+ "PY": {
+ "name": "Парагвай"
+ },
+ "PE": {
+ "name": "Перу"
+ },
+ "PN": {
+ "name": "ПиткÑрн Ðрлууд"
+ },
+ "PL": {
+ "name": "Польш"
+ },
+ "PT": {
+ "name": "Португал"
+ },
+ "PR": {
+ "name": "ПуÑрто Рико"
+ },
+ "RE": {
+ "name": "Реюньон"
+ },
+ "RW": {
+ "name": "Руанда"
+ },
+ "RO": {
+ "name": "Румын"
+ },
+ "WS": {
+ "name": "Самоа"
+ },
+ "SM": {
+ "name": "Сан-Марино"
+ },
+ "ST": {
+ "name": "Сан-Томе ба ПринÑипи"
+ },
+ "SA": {
+ "name": "Саудын Ðраб"
+ },
+ "SZ": {
+ "name": "Свазиланд"
+ },
+ "SJ": {
+ "name": "Свалбард ба Ян Майен"
+ },
+ "SC": {
+ "name": "Сейшел"
+ },
+ "SN": {
+ "name": "Сенегал"
+ },
+ "BL": {
+ "name": "Сент Бартельми"
+ },
+ "LC": {
+ "name": "Сент ЛюÑиа"
+ },
+ "SH": {
+ "name": "Сент Хелена"
+ },
+ "KN": {
+ "name": "Сент-ÐšÐ¸Ñ‚Ñ‚Ñ Ð±Ð° ÐевиÑ"
+ },
+ "MF": {
+ "name": "Сент-Мартин"
+ },
+ "RS": {
+ "name": "Серби"
+ },
+ "EA": {
+ "name": "Сеута ба МелильÑ"
+ },
+ "SG": {
+ "name": "Сингапур"
+ },
+ "SX": {
+ "name": "Синт Мартен"
+ },
+ "SY": {
+ "name": "Сири"
+ },
+ "SK": {
+ "name": "Словак"
+ },
+ "SI": {
+ "name": "Словени"
+ },
+ "SB": {
+ "name": "Соломоны Ðрлууд"
+ },
+ "SO": {
+ "name": "Сомали"
+ },
+ "SD": {
+ "name": "Судан"
+ },
+ "SR": {
+ "name": "Суринам"
+ },
+ "SL": {
+ "name": "Сьерра-Леоне"
+ },
+ "VC": {
+ "name": "СÑнт ВинÑÑнт ба Гренадин"
+ },
+ "PM": {
+ "name": "СÑнт Пьер ба Микелон"
+ },
+ "TJ": {
+ "name": "ТажикиÑтан"
+ },
+ "TW": {
+ "name": "Тайван"
+ },
+ "TH": {
+ "name": "Тайланд"
+ },
+ "TZ": {
+ "name": "Танзани"
+ },
+ "TL": {
+ "name": "Тимор-ЛеÑте"
+ },
+ "TG": {
+ "name": "Того"
+ },
+ "TK": {
+ "name": "Токелау"
+ },
+ "TO": {
+ "name": "Тонга"
+ },
+ "CF": {
+ "name": "Төв Ðфрикийн Бүгд Ðайрамдах УлÑ"
+ },
+ "TT": {
+ "name": "Тринидад ба Тобаго"
+ },
+ "TA": {
+ "name": "ТриÑтан да КуньÑ"
+ },
+ "TV": {
+ "name": "Тувалу"
+ },
+ "TN": {
+ "name": "ТуниÑ"
+ },
+ "TR": {
+ "name": "Турк"
+ },
+ "TC": {
+ "name": "Турк ба КайкоÑын Ðрлууд"
+ },
+ "TM": {
+ "name": "ТуркмениÑтан"
+ },
+ "UG": {
+ "name": "Уганда"
+ },
+ "UZ": {
+ "name": "УзбекиÑтан"
+ },
+ "UA": {
+ "name": "Украйн"
+ },
+ "HU": {
+ "name": "Унгар"
+ },
+ "WF": {
+ "name": "Ð£Ð¾Ð»Ð»Ð¸Ñ Ð±Ð° Футуна"
+ },
+ "UY": {
+ "name": "Уругвай"
+ },
+ "FO": {
+ "name": "Ð¤Ð°Ñ€Ð¾Ñ Ðрлууд"
+ },
+ "FJ": {
+ "name": "Фижи"
+ },
+ "PH": {
+ "name": "Филиппин"
+ },
+ "FI": {
+ "name": "Финланд"
+ },
+ "FK": {
+ "name": "Фолькландын Ðрлууд"
+ },
+ "FR": {
+ "name": "Франц"
+ },
+ "GF": {
+ "name": "Францын Гайана"
+ },
+ "TF": {
+ "name": "Францын өмнөд газар нутаг"
+ },
+ "PF": {
+ "name": "Францын Полинез"
+ },
+ "MP": {
+ "name": "Хойд Марианы Ðрлууд"
+ },
+ "KP": {
+ "name": "Хойд СолонгоÑ"
+ },
+ "HR": {
+ "name": "Хорват"
+ },
+ "CN": {
+ "name": "Ð¥Ñтад"
+ },
+ "TD": {
+ "name": "Чад"
+ },
+ "CL": {
+ "name": "Чили"
+ },
+ "SE": {
+ "name": "Швед"
+ },
+ "CH": {
+ "name": "Швейцари"
+ },
+ "NZ": {
+ "name": "Ð¨Ð¸Ð½Ñ Ð—ÐµÐ»Ð°Ð½Ð´"
+ },
+ "NC": {
+ "name": "Ð¨Ð¸Ð½Ñ ÐšÐ°Ð»ÐµÐ´Ð¾Ð½Ð¸"
+ },
+ "LK": {
+ "name": "Шри Ланка"
+ },
+ "EC": {
+ "name": "Эквадор"
+ },
+ "GQ": {
+ "name": "Экваторын Гвиней"
+ },
+ "SV": {
+ "name": "Эль Сальвадор"
+ },
+ "IN": {
+ "name": "ЭнÑÑ‚Ñ…Ñг"
+ },
+ "ER": {
+ "name": "Эритри"
+ },
+ "EE": {
+ "name": "ЭÑтон"
+ },
+ "ET": {
+ "name": "Этиоп"
+ },
+ "JM": {
+ "name": "Ямайк"
+ },
+ "JP": {
+ "name": "Япон"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/country/mr.json b/library/intl/resources/country/mr.json
new file mode 100644
index 000000000..b8eb8c84c
--- /dev/null
+++ b/library/intl/resources/country/mr.json
@@ -0,0 +1,761 @@
+{
+ "AO": {
+ "name": "अंगोला"
+ },
+ "AI": {
+ "name": "अà¤à¤—à¥à¤µà¤¿à¤²à¤¾"
+ },
+ "AQ": {
+ "name": "अंटारà¥à¤•à¥à¤Ÿà¤¿à¤•à¤¾"
+ },
+ "AG": {
+ "name": "अà¤à¤Ÿà¤¿à¤—à¥à¤µà¤¾ आणि बरà¥à¤¬à¥à¤¡à¤¾"
+ },
+ "AD": {
+ "name": "अà¤à¤¡à¥‹à¤°à¤¾"
+ },
+ "AZ": {
+ "name": "अà¤à¤°à¤¬à¥ˆà¤œà¤¾à¤¨"
+ },
+ "AF": {
+ "name": "अफगाणिसà¥à¤¤à¤¾à¤¨"
+ },
+ "AS": {
+ "name": "अमेरिकन सामोआ"
+ },
+ "AW": {
+ "name": "अरà¥à¤¬à¤¾"
+ },
+ "AR": {
+ "name": "अरà¥à¤œà¥‡à¤‚टिना"
+ },
+ "AM": {
+ "name": "अरà¥à¤®à¥‡à¤¨à¤¿à¤¯à¤¾"
+ },
+ "SV": {
+ "name": "अल सालà¥à¤µà¤¾à¤¡à¥‹à¤°"
+ },
+ "DZ": {
+ "name": "अलà¥à¤œà¥€à¤°à¤¿à¤¯à¤¾"
+ },
+ "AL": {
+ "name": "अलà¥à¤¬à¤¾à¤¨à¤¿à¤¯à¤¾"
+ },
+ "AX": {
+ "name": "अâ€à¥…लà¤à¤¡ बेटे"
+ },
+ "AC": {
+ "name": "अâ€à¥…सेनà¥à¤¶à¤¿à¤¯à¤¨ बेट"
+ },
+ "IS": {
+ "name": "आइसलà¤à¤¡"
+ },
+ "IE": {
+ "name": "आयरà¥à¤²à¤‚ड"
+ },
+ "CI": {
+ "name": "आयवà¥à¤¹à¤°à¥€ कोसà¥à¤Ÿ"
+ },
+ "ID": {
+ "name": "इंडोनेशिया"
+ },
+ "EC": {
+ "name": "इकà¥à¤µà¤¾à¤¡à¥‹à¤°"
+ },
+ "GQ": {
+ "name": "इकà¥à¤µà¥‡à¤Ÿà¥‹à¤°à¤¿à¤¯à¤² गिनी"
+ },
+ "EG": {
+ "name": "इजिपà¥à¤¤"
+ },
+ "IT": {
+ "name": "इटली"
+ },
+ "ET": {
+ "name": "इथिओपिया"
+ },
+ "IQ": {
+ "name": "इराक"
+ },
+ "IL": {
+ "name": "इसà¥à¤¤à¥à¤°à¤¾à¤‡à¤²"
+ },
+ "IM": {
+ "name": "इसà¥à¤²à¥‡ ऑफ मॅन"
+ },
+ "IR": {
+ "name": "ईराण"
+ },
+ "UZ": {
+ "name": "उà¤à¤¬à¥‡à¤•à¤¿à¤¸à¥à¤¤à¤¾à¤¨"
+ },
+ "KP": {
+ "name": "उतà¥à¤¤à¤° कोरिया"
+ },
+ "MP": {
+ "name": "उतà¥à¤¤à¤°à¥€ मारियाना बेटे"
+ },
+ "UY": {
+ "name": "उरà¥à¤—à¥à¤µà¥‡"
+ },
+ "ER": {
+ "name": "à¤à¤°à¤¿à¤Ÿà¥à¤°à¤¿à¤¯à¤¾"
+ },
+ "EE": {
+ "name": "à¤à¤¸à¥à¤Ÿà¥‹à¤¨à¤¿à¤¯à¤¾"
+ },
+ "AT": {
+ "name": "ऑसà¥à¤Ÿà¥à¤°à¤¿à¤¯à¤¾"
+ },
+ "AU": {
+ "name": "ऑसà¥à¤Ÿà¥à¤°à¥‡à¤²à¤¿à¤¯à¤¾"
+ },
+ "OM": {
+ "name": "ओमान"
+ },
+ "KH": {
+ "name": "कंबोडिया"
+ },
+ "KZ": {
+ "name": "कà¤à¤¾à¤•à¤¸à¥à¤¤à¤¾à¤¨"
+ },
+ "QA": {
+ "name": "कतार"
+ },
+ "CD": {
+ "name": "काà¤à¤—ो - किंशासा"
+ },
+ "CG": {
+ "name": "काà¤à¤—ो - बà¥à¤°à¤¾à¤à¤¾à¤µà¤¿à¤²à¥‡"
+ },
+ "KG": {
+ "name": "किरगिà¤à¤¸à¥à¤¤à¤¾à¤¨"
+ },
+ "KI": {
+ "name": "किरीबाटी"
+ },
+ "CK": {
+ "name": "कà¥à¤• बेटे"
+ },
+ "CW": {
+ "name": "कà¥à¤°à¥…को"
+ },
+ "KW": {
+ "name": "कà¥à¤µà¥‡à¤¤"
+ },
+ "CA": {
+ "name": "कॅनडा"
+ },
+ "IC": {
+ "name": "कॅनरी बेटे"
+ },
+ "CM": {
+ "name": "कॅमेरून"
+ },
+ "BQ": {
+ "name": "कॅरिबियन नेदरलà¤à¤¡à¥à¤¸"
+ },
+ "CF": {
+ "name": "केंदà¥à¤°à¥€à¤¯ अफà¥à¤°à¤¿à¤•à¥€ पà¥à¤°à¤œà¤¾à¤¸à¤¤à¥à¤¤à¤¾à¤•"
+ },
+ "KE": {
+ "name": "केनिया"
+ },
+ "CV": {
+ "name": "केप वà¥à¤¹à¤°à¥à¤¡à¥‡"
+ },
+ "KY": {
+ "name": "केमन बेटे"
+ },
+ "CC": {
+ "name": "कोकोस (कीलिंग) बेटे"
+ },
+ "KM": {
+ "name": "कोमोरोज"
+ },
+ "CO": {
+ "name": "कोलमà¥à¤¬à¤¿à¤¯à¤¾"
+ },
+ "XK": {
+ "name": "कोसोवà¥à¤¹à¥‹"
+ },
+ "CR": {
+ "name": "कोसà¥à¤Ÿà¤¾ रिका"
+ },
+ "CU": {
+ "name": "कà¥à¤¯à¥‚बा"
+ },
+ "HR": {
+ "name": "कà¥à¤°à¥‹à¤à¤¶à¤¿à¤¯à¤¾"
+ },
+ "CX": {
+ "name": "खà¥à¤°à¤¿à¤¸à¤®à¤¸ बेट"
+ },
+ "GY": {
+ "name": "गयाना"
+ },
+ "GM": {
+ "name": "गामà¥à¤¬à¤¿à¤¯à¤¾"
+ },
+ "GN": {
+ "name": "गिनी"
+ },
+ "GW": {
+ "name": "गिनी-बिसाउ"
+ },
+ "GU": {
+ "name": "गà¥à¤†à¤®"
+ },
+ "GA": {
+ "name": "गॅबॉन"
+ },
+ "GL": {
+ "name": "गà¥à¤°à¥€à¤¨à¤²à¤‚ड"
+ },
+ "GR": {
+ "name": "गà¥à¤°à¥€à¤¸"
+ },
+ "GD": {
+ "name": "गà¥à¤°à¥‡à¤¨à¥‡à¤¡à¤¾"
+ },
+ "GT": {
+ "name": "गà¥à¤µà¤¾à¤Ÿà¥‡à¤®à¤¾à¤²à¤¾"
+ },
+ "GP": {
+ "name": "गà¥à¤µà¤¾à¤¡à¥‡à¤²à¥‹à¤‰à¤ªà¥‡"
+ },
+ "GG": {
+ "name": "गà¥à¤µà¥‡à¤°à¥à¤¨à¤¸à¥‡"
+ },
+ "GH": {
+ "name": "घाना"
+ },
+ "TD": {
+ "name": "चाड"
+ },
+ "CL": {
+ "name": "चिली"
+ },
+ "CN": {
+ "name": "चीन"
+ },
+ "JP": {
+ "name": "जपान"
+ },
+ "JM": {
+ "name": "जमैका"
+ },
+ "DE": {
+ "name": "जरà¥à¤®à¤¨à¥€"
+ },
+ "JE": {
+ "name": "जरà¥à¤¸à¥€"
+ },
+ "DJ": {
+ "name": "जिबौटी"
+ },
+ "GI": {
+ "name": "जिबà¥à¤°à¤¾à¤²à¥à¤Ÿà¤°"
+ },
+ "GE": {
+ "name": "जॉरà¥à¤œà¤¿à¤¯à¤¾"
+ },
+ "JO": {
+ "name": "जॉरà¥à¤¡à¤¨"
+ },
+ "ZM": {
+ "name": "à¤à¤¾à¤®à¥à¤¬à¤¿à¤¯à¤¾"
+ },
+ "ZW": {
+ "name": "à¤à¤¿à¤®à¥à¤¬à¤¾à¤¬à¥à¤µà¥‡"
+ },
+ "CZ": {
+ "name": "à¤à¥‡à¤• पà¥à¤°à¤œà¤¾à¤¸à¤¤à¥à¤¤à¤¾à¤•"
+ },
+ "TC": {
+ "name": "टरà¥à¤•à¥à¤¸ आणि कैकोस बेटे"
+ },
+ "TZ": {
+ "name": "टांà¤à¤¾à¤¨à¤¿à¤¯à¤¾"
+ },
+ "TV": {
+ "name": "टà¥à¤µà¤¾à¤²à¥"
+ },
+ "TO": {
+ "name": "टोंगा"
+ },
+ "TG": {
+ "name": "टोगो"
+ },
+ "TN": {
+ "name": "टà¥à¤¯à¥‚निशिया"
+ },
+ "TA": {
+ "name": "टà¥à¤°à¤¿à¤¸à¥à¤Ÿà¤¨ दा कà¥à¤¨à¥à¤¹à¤¾"
+ },
+ "DK": {
+ "name": "डेनà¥à¤®à¤¾à¤°à¥à¤•"
+ },
+ "DO": {
+ "name": "डोमिनिकन पà¥à¤°à¤œà¤¾à¤¸à¤¤à¥à¤¤à¤¾à¤•"
+ },
+ "DM": {
+ "name": "डोमिनिका"
+ },
+ "TJ": {
+ "name": "ताजिकिसà¥à¤¤à¤¾à¤¨"
+ },
+ "TM": {
+ "name": "तà¥à¤°à¥à¤•à¤®à¥‡à¤¨à¤¿à¤¸à¥à¤¤à¤¾à¤¨"
+ },
+ "TR": {
+ "name": "तà¥à¤°à¥à¤•à¥€"
+ },
+ "TW": {
+ "name": "तैवान"
+ },
+ "TK": {
+ "name": "तोकेलाउ"
+ },
+ "TT": {
+ "name": "तà¥à¤°à¤¿à¤¨à¤¿à¤¦à¤¾à¤¦ आणि टोबॅगो"
+ },
+ "TH": {
+ "name": "थायलंड"
+ },
+ "ZA": {
+ "name": "दकà¥à¤·à¤¿à¤£ आफà¥à¤°à¤¿à¤•à¤¾"
+ },
+ "KR": {
+ "name": "दकà¥à¤·à¤¿à¤£ कोरिया"
+ },
+ "GS": {
+ "name": "दकà¥à¤·à¤¿à¤£ जॉरà¥à¤œà¤¿à¤¯à¤¾ आणि दकà¥à¤·à¤¿à¤£ सà¤à¤¡à¤µà¤¿à¤š बेटे"
+ },
+ "SS": {
+ "name": "दकà¥à¤·à¤¿à¤£ सà¥à¤¦à¤¾à¤¨"
+ },
+ "DG": {
+ "name": "दिà¤à¤—ो गारà¥à¤¸à¤¿à¤¯à¤¾"
+ },
+ "NR": {
+ "name": "नऊरà¥"
+ },
+ "NE": {
+ "name": "नाइजर"
+ },
+ "NA": {
+ "name": "नामिबिया"
+ },
+ "NG": {
+ "name": "नायजेरिया"
+ },
+ "NI": {
+ "name": "निकारागà¥à¤µà¤¾"
+ },
+ "NU": {
+ "name": "नीयू"
+ },
+ "NL": {
+ "name": "नेदरलà¤à¤¡"
+ },
+ "NP": {
+ "name": "नेपाळ"
+ },
+ "NF": {
+ "name": "नॉरफॉक बेट"
+ },
+ "NO": {
+ "name": "नॉरà¥à¤µà¥‡"
+ },
+ "NC": {
+ "name": "नà¥à¤¯à¥‚ कॅलेडोनिया"
+ },
+ "NZ": {
+ "name": "नà¥à¤¯à¥‚à¤à¥€à¤²à¤‚ड"
+ },
+ "PA": {
+ "name": "पनामा"
+ },
+ "PY": {
+ "name": "परागà¥à¤µà¥‡"
+ },
+ "PW": {
+ "name": "पलाऊ"
+ },
+ "EH": {
+ "name": "पशà¥à¤šà¤¿à¤® सहारा"
+ },
+ "PK": {
+ "name": "पाकिसà¥à¤¤à¤¾à¤¨"
+ },
+ "PG": {
+ "name": "पापà¥à¤† नà¥à¤¯à¥‚ गिनी"
+ },
+ "PN": {
+ "name": "पिटकैरà¥à¤¨ बेटे"
+ },
+ "TL": {
+ "name": "पूरà¥à¤µ तिमोर"
+ },
+ "PS": {
+ "name": "पॅलेसà¥à¤Ÿà¤¿à¤¨à¤¿à¤¯à¤¨ पà¥à¤°à¤¦à¥‡à¤¶"
+ },
+ "PE": {
+ "name": "पेरू"
+ },
+ "PT": {
+ "name": "पोरà¥à¤¤à¥à¤—ाल"
+ },
+ "PL": {
+ "name": "पोलंड"
+ },
+ "PR": {
+ "name": "पà¥à¤¯à¥à¤à¤°à¥à¤¤à¥‹ रिको"
+ },
+ "FJ": {
+ "name": "फिजी"
+ },
+ "FI": {
+ "name": "फिनलंड"
+ },
+ "PH": {
+ "name": "फिलिपिनà¥à¤¸"
+ },
+ "FO": {
+ "name": "फेरो बेटे"
+ },
+ "FK": {
+ "name": "फॉकलंड बेटे"
+ },
+ "FR": {
+ "name": "फà¥à¤°à¤¾à¤¨à¥à¤¸"
+ },
+ "GF": {
+ "name": "फà¥à¤°à¥‡à¤‚च गयाना"
+ },
+ "TF": {
+ "name": "फà¥à¤°à¥‡à¤‚च दाकà¥à¤·à¤¿à¤£à¤¾à¤¤à¥à¤¯ पà¥à¤°à¤¦à¥‡à¤¶"
+ },
+ "PF": {
+ "name": "फà¥à¤°à¥‡à¤‚च पॉलिनेशिया"
+ },
+ "BM": {
+ "name": "बरà¥à¤®à¥à¤¡à¤¾"
+ },
+ "BZ": {
+ "name": "बलिà¤"
+ },
+ "BG": {
+ "name": "बलà¥à¤—ेरिया"
+ },
+ "BS": {
+ "name": "बहामाज"
+ },
+ "BH": {
+ "name": "बहारीन"
+ },
+ "BD": {
+ "name": "बांगलादेश"
+ },
+ "BB": {
+ "name": "बारà¥à¤¬à¤¾à¤¡à¥‹à¤¸"
+ },
+ "BI": {
+ "name": "बà¥à¤°à¥à¤‚डी"
+ },
+ "BF": {
+ "name": "बà¥à¤°à¥à¤•à¤¿à¤¨à¤¾ फासो"
+ },
+ "BJ": {
+ "name": "बेनिन"
+ },
+ "BY": {
+ "name": "बेलारूस"
+ },
+ "BE": {
+ "name": "बेलà¥à¤œà¤¿à¤¯à¤®"
+ },
+ "BW": {
+ "name": "बोटà¥à¤¸à¤µà¤¾à¤¨à¤¾"
+ },
+ "BO": {
+ "name": "बोलिवà¥à¤¹à¤¿à¤¯à¤¾"
+ },
+ "BA": {
+ "name": "बोसà¥à¤¨à¤¿à¤¯à¤¾ अणि हरà¥à¤œà¥‡à¤—ोविना"
+ },
+ "BR": {
+ "name": "बà¥à¤°à¤¾à¤à¤¿à¤²"
+ },
+ "VG": {
+ "name": "बà¥à¤°à¤¿à¤Ÿà¤¿à¤¶ वà¥à¤¹à¤°à¥à¤œà¤¿à¤¨ बेटे"
+ },
+ "IO": {
+ "name": "बà¥à¤°à¤¿à¤Ÿà¤¿à¤¶ हिंदी महासागर कà¥à¤·à¥‡à¤¤à¥à¤°"
+ },
+ "BN": {
+ "name": "बà¥à¤°à¥à¤¨à¥‡à¤ˆ"
+ },
+ "IN": {
+ "name": "भारत"
+ },
+ "BT": {
+ "name": "भूतान"
+ },
+ "MN": {
+ "name": "मंगोलिया"
+ },
+ "MO": {
+ "name": "मकाओ à¤à¤¸à¤à¤†à¤° चीन"
+ },
+ "MW": {
+ "name": "मलावी"
+ },
+ "MY": {
+ "name": "मलेशिया"
+ },
+ "MG": {
+ "name": "मादागासà¥à¤•à¤°"
+ },
+ "FM": {
+ "name": "मायकà¥à¤°à¥‹à¤¨à¥‡à¤¶à¤¿à¤¯à¤¾"
+ },
+ "YT": {
+ "name": "मायोटà¥à¤Ÿà¥‡"
+ },
+ "MQ": {
+ "name": "मारà¥à¤Ÿà¤¿à¤¨à¤¿à¤•"
+ },
+ "MH": {
+ "name": "मारà¥à¤¶à¤² बेटे"
+ },
+ "MV": {
+ "name": "मालदीव"
+ },
+ "ML": {
+ "name": "माली"
+ },
+ "MT": {
+ "name": "मालà¥à¤Ÿà¤¾"
+ },
+ "MK": {
+ "name": "मॅसेडोनिया"
+ },
+ "MX": {
+ "name": "मेकà¥à¤¸à¤¿à¤•à¥‹"
+ },
+ "MS": {
+ "name": "मॉनà¥à¤Ÿà¥à¤¸à¥‡à¤°à¤¾à¤Ÿ"
+ },
+ "MR": {
+ "name": "मॉरिटानिया"
+ },
+ "MU": {
+ "name": "मॉरिशस"
+ },
+ "ME": {
+ "name": "मोंटेनेगà¥à¤°à¥‹"
+ },
+ "MZ": {
+ "name": "मोà¤à¤¾à¤®à¥à¤¬à¤¿à¤•"
+ },
+ "MC": {
+ "name": "मोनॅको"
+ },
+ "MA": {
+ "name": "मोरोकà¥à¤•à¥‹"
+ },
+ "MD": {
+ "name": "मोलà¥à¤¡à¥‹à¤µà¥à¤¹à¤¾"
+ },
+ "MM": {
+ "name": "मà¥à¤¯à¤¾à¤¨à¤®à¤¾à¤° (बरà¥à¤®à¤¾)"
+ },
+ "UA": {
+ "name": "यà¥à¤•à¥à¤°à¥‡à¤¨"
+ },
+ "UG": {
+ "name": "यà¥à¤—ांडा"
+ },
+ "GB": {
+ "name": "यà¥à¤¨à¤¾à¤¯à¤Ÿà¥‡à¤¡ किंगडम"
+ },
+ "US": {
+ "name": "यà¥à¤¨à¤¾à¤¯à¤Ÿà¥‡à¤¡ सà¥à¤Ÿà¥‡à¤Ÿà¥à¤¸"
+ },
+ "UM": {
+ "name": "यू.à¤à¤¸. आउटलाइंग बेटे"
+ },
+ "VI": {
+ "name": "यू.à¤à¤¸. वà¥à¤¹à¤°à¥à¤œà¤¿à¤¨ बेटे"
+ },
+ "YE": {
+ "name": "येमेन"
+ },
+ "RW": {
+ "name": "रवांडा"
+ },
+ "RU": {
+ "name": "रशिया"
+ },
+ "RE": {
+ "name": "रियà¥à¤¨à¤¿à¤¯à¤¨"
+ },
+ "RO": {
+ "name": "रोमानिया"
+ },
+ "LU": {
+ "name": "लकà¥à¤à¥‡à¤‚बरà¥à¤—"
+ },
+ "LA": {
+ "name": "लाओस"
+ },
+ "LV": {
+ "name": "लातà¥à¤µà¤¿à¤¯à¤¾"
+ },
+ "LR": {
+ "name": "लायबेरिया"
+ },
+ "LI": {
+ "name": "लिकà¥à¤Ÿà¥‡à¤¨à¤¸à¥à¤Ÿà¤¾à¤‡à¤¨"
+ },
+ "LT": {
+ "name": "लिथà¥à¤†à¤¨à¤¿à¤¯à¤¾"
+ },
+ "LY": {
+ "name": "लिबिया"
+ },
+ "LB": {
+ "name": "लेबनॉन"
+ },
+ "LS": {
+ "name": "लेसोथो"
+ },
+ "VU": {
+ "name": "वानौटà¥"
+ },
+ "WF": {
+ "name": "वालिस आणि फà¥à¤¯à¥‚चूना"
+ },
+ "VN": {
+ "name": "वà¥à¤¹à¤¿à¤à¤¤à¤¨à¤¾à¤®"
+ },
+ "VA": {
+ "name": "वà¥à¤¹à¥…टिकन सिटी"
+ },
+ "VE": {
+ "name": "वà¥à¤¹à¥‡à¤¨à¥‡à¤à¥à¤à¤²à¤¾"
+ },
+ "LK": {
+ "name": "शà¥à¤°à¥€à¤²à¤‚का"
+ },
+ "AE": {
+ "name": "संयà¥à¤•à¥à¤¤ अरब अमीरात"
+ },
+ "RS": {
+ "name": "सरà¥à¤¬à¤¿à¤¯à¤¾"
+ },
+ "ST": {
+ "name": "साओ टोम आणि पà¥à¤°à¤¿à¤‚सिपे"
+ },
+ "WS": {
+ "name": "सामोआ"
+ },
+ "CY": {
+ "name": "सायपà¥à¤°à¤¸"
+ },
+ "SG": {
+ "name": "सिंगापूर"
+ },
+ "SX": {
+ "name": "सिंट मारà¥à¤Ÿà¥‡à¤¨"
+ },
+ "SL": {
+ "name": "सिà¤à¤°à¤¾ लिओन"
+ },
+ "SY": {
+ "name": "सीरिया"
+ },
+ "SD": {
+ "name": "सà¥à¤¦à¤¾à¤¨"
+ },
+ "SR": {
+ "name": "सà¥à¤°à¤¿à¤¨à¤¾à¤®"
+ },
+ "SM": {
+ "name": "सॅन मरीनो"
+ },
+ "KN": {
+ "name": "सेंट किटà¥à¤¸ आणि नेवà¥à¤¹à¤¿à¤¸"
+ },
+ "PM": {
+ "name": "सेंट पियरे आणि मिकà¥à¤µà¥‡à¤²à¥‹à¤¨"
+ },
+ "BL": {
+ "name": "सेंट बारà¥à¤¥à¥‡à¤²à¥‡à¤®à¥€"
+ },
+ "MF": {
+ "name": "सेंट मारà¥à¤Ÿà¤¿à¤¨"
+ },
+ "LC": {
+ "name": "सेंट लà¥à¤¯à¥‚सिया"
+ },
+ "VC": {
+ "name": "सेंट वà¥à¤¹à¤¿à¤¨à¥à¤¸à¥‡à¤‚ट आणि गà¥à¤°à¥‡à¤¨à¤¡à¤¾à¤‡à¤¨à¥à¤¸"
+ },
+ "SH": {
+ "name": "सेंट हेलेना"
+ },
+ "SN": {
+ "name": "सेनेगल"
+ },
+ "SC": {
+ "name": "सेशेलà¥à¤¸"
+ },
+ "SO": {
+ "name": "सोमालिया"
+ },
+ "SB": {
+ "name": "सोलोमन बेटे"
+ },
+ "SA": {
+ "name": "सौदी अरब"
+ },
+ "ES": {
+ "name": "सà¥à¤ªà¥‡à¤¨"
+ },
+ "EA": {
+ "name": "सà¥à¤¯à¥‚टा आणि मेलिला"
+ },
+ "SK": {
+ "name": "सà¥à¤²à¥‹à¤µà¥à¤¹à¤¾à¤•à¤¿à¤¯à¤¾"
+ },
+ "SI": {
+ "name": "सà¥à¤²à¥‹à¤µà¥à¤¹à¥‡à¤¨à¤¿à¤¯à¤¾"
+ },
+ "SZ": {
+ "name": "सà¥à¤µà¤¾à¤à¤¿à¤²à¤à¤¡"
+ },
+ "SJ": {
+ "name": "सà¥à¤µà¤¾à¤²à¤¬à¤°à¥à¤¡ आणि जान मायेन"
+ },
+ "CH": {
+ "name": "सà¥à¤µà¤¿à¤¤à¥à¤à¤°à¥à¤²à¤‚ड"
+ },
+ "SE": {
+ "name": "सà¥à¤µà¥€à¤¡à¤¨"
+ },
+ "HU": {
+ "name": "हंगेरी"
+ },
+ "HK": {
+ "name": "हाà¤à¤—काà¤à¤— à¤à¤¸à¤à¤†à¤° चीन"
+ },
+ "HT": {
+ "name": "हैती"
+ },
+ "HN": {
+ "name": "होंडà¥à¤°à¤¾à¤¸"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/country/ms.json b/library/intl/resources/country/ms.json
new file mode 100644
index 000000000..736c47018
--- /dev/null
+++ b/library/intl/resources/country/ms.json
@@ -0,0 +1,761 @@
+{
+ "AF": {
+ "name": "Afghanistan"
+ },
+ "ZA": {
+ "name": "Afrika Selatan"
+ },
+ "AL": {
+ "name": "Albania"
+ },
+ "DZ": {
+ "name": "Algeria"
+ },
+ "US": {
+ "name": "Amerika Syarikat"
+ },
+ "AD": {
+ "name": "Andorra"
+ },
+ "AO": {
+ "name": "Angola"
+ },
+ "AI": {
+ "name": "Anguilla"
+ },
+ "AQ": {
+ "name": "Antartika"
+ },
+ "AG": {
+ "name": "Antigua dan Barbuda"
+ },
+ "SA": {
+ "name": "Arab Saudi"
+ },
+ "AR": {
+ "name": "Argentina"
+ },
+ "AM": {
+ "name": "Armenia"
+ },
+ "AW": {
+ "name": "Aruba"
+ },
+ "AU": {
+ "name": "Australia"
+ },
+ "AT": {
+ "name": "Austria"
+ },
+ "AZ": {
+ "name": "Azerbaijan"
+ },
+ "BS": {
+ "name": "Bahamas"
+ },
+ "BH": {
+ "name": "Bahrain"
+ },
+ "BD": {
+ "name": "Bangladesh"
+ },
+ "BB": {
+ "name": "Barbados"
+ },
+ "NL": {
+ "name": "Belanda"
+ },
+ "BQ": {
+ "name": "Belanda Caribbean"
+ },
+ "BY": {
+ "name": "Belarus"
+ },
+ "BE": {
+ "name": "Belgium"
+ },
+ "BZ": {
+ "name": "Belize"
+ },
+ "BJ": {
+ "name": "Benin"
+ },
+ "BM": {
+ "name": "Bermuda"
+ },
+ "BT": {
+ "name": "Bhutan"
+ },
+ "BO": {
+ "name": "Bolivia"
+ },
+ "BA": {
+ "name": "Bosnia dan Herzegovina"
+ },
+ "BW": {
+ "name": "Botswana"
+ },
+ "BR": {
+ "name": "Brazil"
+ },
+ "BN": {
+ "name": "Brunei"
+ },
+ "BG": {
+ "name": "Bulgaria"
+ },
+ "BF": {
+ "name": "Burkina Faso"
+ },
+ "BI": {
+ "name": "Burundi"
+ },
+ "CM": {
+ "name": "Cameroon"
+ },
+ "CV": {
+ "name": "Cape Verde"
+ },
+ "EA": {
+ "name": "Ceuta dan Melilla"
+ },
+ "TD": {
+ "name": "Chad"
+ },
+ "CL": {
+ "name": "Chile"
+ },
+ "CN": {
+ "name": "China"
+ },
+ "CO": {
+ "name": "Colombia"
+ },
+ "KM": {
+ "name": "Comoros"
+ },
+ "CG": {
+ "name": "Congo - Brazzaville"
+ },
+ "CD": {
+ "name": "Congo - Kinshasa"
+ },
+ "CR": {
+ "name": "Costa Rica"
+ },
+ "CI": {
+ "name": "Cote d’Ivoire"
+ },
+ "HR": {
+ "name": "Croatia"
+ },
+ "CU": {
+ "name": "Cuba"
+ },
+ "CW": {
+ "name": "Curacao"
+ },
+ "CY": {
+ "name": "Cyprus"
+ },
+ "DK": {
+ "name": "Denmark"
+ },
+ "DG": {
+ "name": "Diego Garcia"
+ },
+ "DJ": {
+ "name": "Djibouti"
+ },
+ "DM": {
+ "name": "Dominica"
+ },
+ "EC": {
+ "name": "Ecuador"
+ },
+ "SV": {
+ "name": "El Salvador"
+ },
+ "AE": {
+ "name": "Emiriah Arab Bersatu"
+ },
+ "ER": {
+ "name": "Eritrea"
+ },
+ "EE": {
+ "name": "Estonia"
+ },
+ "ET": {
+ "name": "Ethiopia"
+ },
+ "FJ": {
+ "name": "Fiji"
+ },
+ "PH": {
+ "name": "Filipina"
+ },
+ "FI": {
+ "name": "Finland"
+ },
+ "GA": {
+ "name": "Gabon"
+ },
+ "GM": {
+ "name": "Gambia"
+ },
+ "GE": {
+ "name": "Georgia"
+ },
+ "GH": {
+ "name": "Ghana"
+ },
+ "GI": {
+ "name": "Gibraltar"
+ },
+ "GL": {
+ "name": "Greenland"
+ },
+ "GD": {
+ "name": "Grenada"
+ },
+ "GP": {
+ "name": "Guadeloupe"
+ },
+ "GU": {
+ "name": "Guam"
+ },
+ "GT": {
+ "name": "Guatemala"
+ },
+ "GG": {
+ "name": "Guernsey"
+ },
+ "GF": {
+ "name": "Guiana Perancis"
+ },
+ "GN": {
+ "name": "Guinea"
+ },
+ "GW": {
+ "name": "Guinea Bissau"
+ },
+ "GQ": {
+ "name": "Guinea Khatulistiwa"
+ },
+ "GY": {
+ "name": "Guyana"
+ },
+ "HT": {
+ "name": "Haiti"
+ },
+ "HN": {
+ "name": "Honduras"
+ },
+ "HK": {
+ "name": "Hong Kong SAR China"
+ },
+ "HU": {
+ "name": "Hungary"
+ },
+ "IS": {
+ "name": "Iceland"
+ },
+ "IN": {
+ "name": "India"
+ },
+ "ID": {
+ "name": "Indonesia"
+ },
+ "IR": {
+ "name": "Iran"
+ },
+ "IQ": {
+ "name": "Iraq"
+ },
+ "IE": {
+ "name": "Ireland"
+ },
+ "IM": {
+ "name": "Isle of Man"
+ },
+ "IL": {
+ "name": "Israel"
+ },
+ "IT": {
+ "name": "Itali"
+ },
+ "JM": {
+ "name": "Jamaica"
+ },
+ "JP": {
+ "name": "Jepun"
+ },
+ "DE": {
+ "name": "Jerman"
+ },
+ "JE": {
+ "name": "Jersey"
+ },
+ "JO": {
+ "name": "Jordan"
+ },
+ "CA": {
+ "name": "Kanada"
+ },
+ "KZ": {
+ "name": "Kazakhstan"
+ },
+ "KH": {
+ "name": "Kemboja"
+ },
+ "KE": {
+ "name": "Kenya"
+ },
+ "AX": {
+ "name": "Kepulauan Aland"
+ },
+ "IC": {
+ "name": "Kepulauan Canary"
+ },
+ "KY": {
+ "name": "Kepulauan Cayman"
+ },
+ "CC": {
+ "name": "Kepulauan Cocos (Keeling)"
+ },
+ "CK": {
+ "name": "Kepulauan Cook"
+ },
+ "FK": {
+ "name": "Kepulauan Falkland"
+ },
+ "FO": {
+ "name": "Kepulauan Faroe"
+ },
+ "GS": {
+ "name": "Kepulauan Georgia Selatan & Sandwich Selatan"
+ },
+ "MP": {
+ "name": "Kepulauan Mariana Utara"
+ },
+ "MH": {
+ "name": "Kepulauan Marshall"
+ },
+ "PN": {
+ "name": "Kepulauan Pitcairn"
+ },
+ "SB": {
+ "name": "Kepulauan Solomon"
+ },
+ "UM": {
+ "name": "Kepulauan Terpencil A.S."
+ },
+ "TC": {
+ "name": "Kepulauan Turks dan Caicos"
+ },
+ "VI": {
+ "name": "Kepulauan Virgin A.S."
+ },
+ "VG": {
+ "name": "Kepulauan Virgin British"
+ },
+ "KI": {
+ "name": "Kiribati"
+ },
+ "KR": {
+ "name": "Korea Selatan"
+ },
+ "KP": {
+ "name": "Korea Utara"
+ },
+ "XK": {
+ "name": "Kosovo"
+ },
+ "VA": {
+ "name": "Kota Vatican"
+ },
+ "KW": {
+ "name": "Kuwait"
+ },
+ "KG": {
+ "name": "Kyrgyzstan"
+ },
+ "LA": {
+ "name": "Laos"
+ },
+ "LV": {
+ "name": "Latvia"
+ },
+ "LS": {
+ "name": "Lesotho"
+ },
+ "LR": {
+ "name": "Liberia"
+ },
+ "LY": {
+ "name": "Libya"
+ },
+ "LI": {
+ "name": "Liechtenstein"
+ },
+ "LT": {
+ "name": "Lithuania"
+ },
+ "LB": {
+ "name": "Lubnan"
+ },
+ "LU": {
+ "name": "Luxembourg"
+ },
+ "MO": {
+ "name": "Macau SAR China"
+ },
+ "MK": {
+ "name": "Macedonia"
+ },
+ "MG": {
+ "name": "Madagaskar"
+ },
+ "MA": {
+ "name": "Maghribi"
+ },
+ "MW": {
+ "name": "Malawi"
+ },
+ "MY": {
+ "name": "Malaysia"
+ },
+ "MV": {
+ "name": "Maldives"
+ },
+ "ML": {
+ "name": "Mali"
+ },
+ "MT": {
+ "name": "Malta"
+ },
+ "MQ": {
+ "name": "Martinique"
+ },
+ "MR": {
+ "name": "Mauritania"
+ },
+ "MU": {
+ "name": "Mauritius"
+ },
+ "YT": {
+ "name": "Mayotte"
+ },
+ "EG": {
+ "name": "Mesir"
+ },
+ "MX": {
+ "name": "Mexico"
+ },
+ "FM": {
+ "name": "Micronesia"
+ },
+ "MD": {
+ "name": "Moldova"
+ },
+ "MC": {
+ "name": "Monaco"
+ },
+ "MN": {
+ "name": "Mongolia"
+ },
+ "ME": {
+ "name": "Montenegro"
+ },
+ "MS": {
+ "name": "Montserrat"
+ },
+ "MZ": {
+ "name": "Mozambique"
+ },
+ "MM": {
+ "name": "Myanmar (Burma)"
+ },
+ "NA": {
+ "name": "Namibia"
+ },
+ "NR": {
+ "name": "Nauru"
+ },
+ "NP": {
+ "name": "Nepal"
+ },
+ "NC": {
+ "name": "New Caledonia"
+ },
+ "NZ": {
+ "name": "New Zealand"
+ },
+ "NI": {
+ "name": "Nicaragua"
+ },
+ "NE": {
+ "name": "Niger"
+ },
+ "NG": {
+ "name": "Nigeria"
+ },
+ "NU": {
+ "name": "Niue"
+ },
+ "NO": {
+ "name": "Norway"
+ },
+ "OM": {
+ "name": "Oman"
+ },
+ "PK": {
+ "name": "Pakistan"
+ },
+ "PW": {
+ "name": "Palau"
+ },
+ "PA": {
+ "name": "Panama"
+ },
+ "PG": {
+ "name": "Papua New Guinea"
+ },
+ "PY": {
+ "name": "Paraguay"
+ },
+ "FR": {
+ "name": "Perancis"
+ },
+ "PE": {
+ "name": "Peru"
+ },
+ "PL": {
+ "name": "Poland"
+ },
+ "PF": {
+ "name": "Polinesia Perancis"
+ },
+ "PT": {
+ "name": "Portugal"
+ },
+ "PR": {
+ "name": "Puerto Rico"
+ },
+ "AC": {
+ "name": "Pulau Ascension"
+ },
+ "CX": {
+ "name": "Pulau Krismas"
+ },
+ "NF": {
+ "name": "Pulau Norfolk"
+ },
+ "QA": {
+ "name": "Qatar"
+ },
+ "CF": {
+ "name": "Republik Afrika Tengah"
+ },
+ "CZ": {
+ "name": "Republik Czech"
+ },
+ "DO": {
+ "name": "Republik Dominica"
+ },
+ "RE": {
+ "name": "Reunion"
+ },
+ "RO": {
+ "name": "Romania"
+ },
+ "RU": {
+ "name": "Rusia"
+ },
+ "RW": {
+ "name": "Rwanda"
+ },
+ "EH": {
+ "name": "Sahara Barat"
+ },
+ "BL": {
+ "name": "Saint Barthélemy"
+ },
+ "SH": {
+ "name": "Saint Helena"
+ },
+ "KN": {
+ "name": "Saint Kitts dan Nevis"
+ },
+ "LC": {
+ "name": "Saint Lucia"
+ },
+ "MF": {
+ "name": "Saint Martin"
+ },
+ "PM": {
+ "name": "Saint Pierre dan Miquelon"
+ },
+ "VC": {
+ "name": "Saint Vincent dan Grenadines"
+ },
+ "WS": {
+ "name": "Samoa"
+ },
+ "AS": {
+ "name": "Samoa Amerika"
+ },
+ "SM": {
+ "name": "San Marino"
+ },
+ "ST": {
+ "name": "Sao Tome dan Principe"
+ },
+ "SN": {
+ "name": "Senegal"
+ },
+ "ES": {
+ "name": "Sepanyol"
+ },
+ "RS": {
+ "name": "Serbia"
+ },
+ "SC": {
+ "name": "Seychelles"
+ },
+ "SL": {
+ "name": "Sierra Leone"
+ },
+ "SG": {
+ "name": "Singapura"
+ },
+ "SX": {
+ "name": "Sint Maarten"
+ },
+ "SK": {
+ "name": "Slovakia"
+ },
+ "SI": {
+ "name": "Slovenia"
+ },
+ "SO": {
+ "name": "Somalia"
+ },
+ "LK": {
+ "name": "Sri Lanka"
+ },
+ "SD": {
+ "name": "Sudan"
+ },
+ "SS": {
+ "name": "Sudan Selatan"
+ },
+ "SR": {
+ "name": "Surinam"
+ },
+ "SJ": {
+ "name": "Svalbard dan Jan Mayen"
+ },
+ "SZ": {
+ "name": "Swaziland"
+ },
+ "SE": {
+ "name": "Sweden"
+ },
+ "CH": {
+ "name": "Switzerland"
+ },
+ "SY": {
+ "name": "Syria"
+ },
+ "TW": {
+ "name": "Taiwan"
+ },
+ "TJ": {
+ "name": "Tajikistan"
+ },
+ "TZ": {
+ "name": "Tanzania"
+ },
+ "TH": {
+ "name": "Thailand"
+ },
+ "TL": {
+ "name": "Timor-Leste"
+ },
+ "TG": {
+ "name": "Togo"
+ },
+ "TK": {
+ "name": "Tokelau"
+ },
+ "TO": {
+ "name": "Tonga"
+ },
+ "TT": {
+ "name": "Trinidad dan Tobago"
+ },
+ "TA": {
+ "name": "Tristan da Cunha"
+ },
+ "TN": {
+ "name": "Tunisia"
+ },
+ "TR": {
+ "name": "Turki"
+ },
+ "TM": {
+ "name": "Turkmenistan"
+ },
+ "TV": {
+ "name": "Tuvalu"
+ },
+ "UG": {
+ "name": "Uganda"
+ },
+ "UA": {
+ "name": "Ukraine"
+ },
+ "GB": {
+ "name": "United Kingdom"
+ },
+ "UY": {
+ "name": "Uruguay"
+ },
+ "UZ": {
+ "name": "Uzbekistan"
+ },
+ "VU": {
+ "name": "Vanuatu"
+ },
+ "VE": {
+ "name": "Venezuela"
+ },
+ "VN": {
+ "name": "Vietnam"
+ },
+ "WF": {
+ "name": "Wallis dan Futuna"
+ },
+ "IO": {
+ "name": "Wilayah Lautan Hindi British"
+ },
+ "PS": {
+ "name": "Wilayah Palestin"
+ },
+ "TF": {
+ "name": "Wilayah Selatan Perancis"
+ },
+ "YE": {
+ "name": "Yaman"
+ },
+ "GR": {
+ "name": "Yunani"
+ },
+ "ZM": {
+ "name": "Zambia"
+ },
+ "ZW": {
+ "name": "Zimbabwe"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/country/mt.json b/library/intl/resources/country/mt.json
new file mode 100644
index 000000000..e471f732e
--- /dev/null
+++ b/library/intl/resources/country/mt.json
@@ -0,0 +1,761 @@
+{
+ "AF": {
+ "name": "Afganistan"
+ },
+ "ZA": {
+ "name": "Afrika t’Isfel"
+ },
+ "AL": {
+ "name": "Albanija"
+ },
+ "DZ": {
+ "name": "Alġerija"
+ },
+ "AD": {
+ "name": "Andorra"
+ },
+ "AO": {
+ "name": "Angola"
+ },
+ "AI": {
+ "name": "Angwilla"
+ },
+ "AQ": {
+ "name": "Antartika"
+ },
+ "AG": {
+ "name": "Antigua and Barbuda"
+ },
+ "AR": {
+ "name": "Arġentina"
+ },
+ "AM": {
+ "name": "Armenja"
+ },
+ "AW": {
+ "name": "Aruba"
+ },
+ "AC": {
+ "name": "Ascension Island"
+ },
+ "AU": {
+ "name": "Awstralja"
+ },
+ "AT": {
+ "name": "Awstrija"
+ },
+ "AZ": {
+ "name": "Ażerbajġan"
+ },
+ "BS": {
+ "name": "Baħamas"
+ },
+ "BH": {
+ "name": "Baħrajn"
+ },
+ "BD": {
+ "name": "Bangladexx"
+ },
+ "BB": {
+ "name": "Barbados"
+ },
+ "BE": {
+ "name": "Belġju"
+ },
+ "BZ": {
+ "name": "Beliże"
+ },
+ "BJ": {
+ "name": "Benin"
+ },
+ "BM": {
+ "name": "Bermuda"
+ },
+ "BY": {
+ "name": "Bjelorussja"
+ },
+ "BO": {
+ "name": "Bolivja"
+ },
+ "BW": {
+ "name": "Botswana"
+ },
+ "BA": {
+ "name": "Bożnija Ħerżegovina"
+ },
+ "IO": {
+ "name": "British Indian Ocean Territory"
+ },
+ "VG": {
+ "name": "British Virgin Islands"
+ },
+ "BN": {
+ "name": "Brunej"
+ },
+ "BG": {
+ "name": "Bulgarija"
+ },
+ "BF": {
+ "name": "Burkina Faso"
+ },
+ "BI": {
+ "name": "Burundi"
+ },
+ "BT": {
+ "name": "Butan"
+ },
+ "TD": {
+ "name": "ÄŠad"
+ },
+ "CL": {
+ "name": "ÄŠili"
+ },
+ "CY": {
+ "name": "ÄŠipru"
+ },
+ "IC": {
+ "name": "Canary Islands"
+ },
+ "BQ": {
+ "name": "Caribbean Netherlands"
+ },
+ "EA": {
+ "name": "Ceuta & Melilla"
+ },
+ "CX": {
+ "name": "Christmas Island"
+ },
+ "CC": {
+ "name": "Cocos (Keeling) Islands"
+ },
+ "CK": {
+ "name": "Cook Islands"
+ },
+ "CW": {
+ "name": "Curaçao"
+ },
+ "DK": {
+ "name": "Danimarka"
+ },
+ "CD": {
+ "name": "Democratic Republic of the Congo"
+ },
+ "DG": {
+ "name": "Diego Garcia"
+ },
+ "DM": {
+ "name": "Dominika"
+ },
+ "EG": {
+ "name": "EÄ¡ittu"
+ },
+ "EC": {
+ "name": "Ekwador"
+ },
+ "SV": {
+ "name": "El Salvador"
+ },
+ "AE": {
+ "name": "Emirati Għarab Maqgħuda"
+ },
+ "ER": {
+ "name": "Eritreja"
+ },
+ "EE": {
+ "name": "Estonja"
+ },
+ "ET": {
+ "name": "Etijopja"
+ },
+ "FK": {
+ "name": "Falkland Islands"
+ },
+ "FJ": {
+ "name": "Fiġi"
+ },
+ "PH": {
+ "name": "Filippini"
+ },
+ "FI": {
+ "name": "Finlandja"
+ },
+ "FR": {
+ "name": "Franza"
+ },
+ "JM": {
+ "name": "Ä amajka"
+ },
+ "DJ": {
+ "name": "Ä ibuti"
+ },
+ "JO": {
+ "name": "Ä ordan"
+ },
+ "GE": {
+ "name": "Ġorġja"
+ },
+ "GA": {
+ "name": "Gabon"
+ },
+ "GM": {
+ "name": "Gambja"
+ },
+ "GH": {
+ "name": "Gana"
+ },
+ "GI": {
+ "name": "Gibraltar"
+ },
+ "GQ": {
+ "name": "Ginea Ekwatorjali"
+ },
+ "GW": {
+ "name": "Ginea-Bissaw"
+ },
+ "GN": {
+ "name": "Gineja"
+ },
+ "GR": {
+ "name": "Greċja"
+ },
+ "GD": {
+ "name": "Grenada"
+ },
+ "GL": {
+ "name": "Grinlandja"
+ },
+ "GG": {
+ "name": "Guernsey"
+ },
+ "GY": {
+ "name": "Gujana"
+ },
+ "GF": {
+ "name": "Gujana Franċiża"
+ },
+ "GP": {
+ "name": "Gwadelupe"
+ },
+ "GU": {
+ "name": "Gwam"
+ },
+ "GT": {
+ "name": "Gwatemala"
+ },
+ "AX": {
+ "name": "Gżejjer Aland"
+ },
+ "FO": {
+ "name": "Gżejjer Faroe"
+ },
+ "KY": {
+ "name": "Gżejjer Kajmani"
+ },
+ "MP": {
+ "name": "Gżejjer Marjana ta’ Fuq"
+ },
+ "MH": {
+ "name": "Gżejjer ta’ Marshall"
+ },
+ "SA": {
+ "name": "Għarabja Sawdita"
+ },
+ "HT": {
+ "name": "Ħaiti"
+ },
+ "HN": {
+ "name": "Ħonduras"
+ },
+ "HK": {
+ "name": "Ħong Kong S.A.R. Ċina"
+ },
+ "CN": {
+ "name": "IÄ‹-ÄŠina"
+ },
+ "BR": {
+ "name": "Il-Brażil"
+ },
+ "JP": {
+ "name": "Il-Ä appun"
+ },
+ "DE": {
+ "name": "Il-Ä ermanja"
+ },
+ "ID": {
+ "name": "Indoneżja"
+ },
+ "RU": {
+ "name": "Ir-Russja"
+ },
+ "IR": {
+ "name": "Iran"
+ },
+ "IQ": {
+ "name": "Iraq"
+ },
+ "IE": {
+ "name": "Irlanda"
+ },
+ "IS": {
+ "name": "Islanda"
+ },
+ "IM": {
+ "name": "Isle of Man"
+ },
+ "IL": {
+ "name": "Iżrael"
+ },
+ "YE": {
+ "name": "Jemen"
+ },
+ "JE": {
+ "name": "Jersey"
+ },
+ "KH": {
+ "name": "Kambodja"
+ },
+ "CM": {
+ "name": "Kamerun"
+ },
+ "CA": {
+ "name": "Kanada"
+ },
+ "CV": {
+ "name": "Kape Verde"
+ },
+ "KZ": {
+ "name": "Każakstan"
+ },
+ "KE": {
+ "name": "Kenja"
+ },
+ "KG": {
+ "name": "Kirgistan"
+ },
+ "KI": {
+ "name": "Kiribati"
+ },
+ "CO": {
+ "name": "Kolumbja"
+ },
+ "KM": {
+ "name": "Komoros"
+ },
+ "CG": {
+ "name": "Kongo"
+ },
+ "KR": {
+ "name": "Koreja t’Isfel"
+ },
+ "KP": {
+ "name": "Koreja ta’ Fuq"
+ },
+ "XK": {
+ "name": "Kosovo"
+ },
+ "CR": {
+ "name": "Kosta Rika"
+ },
+ "CI": {
+ "name": "Kosta ta’ l-Avorju"
+ },
+ "HR": {
+ "name": "Kroazja"
+ },
+ "CU": {
+ "name": "Kuba"
+ },
+ "KW": {
+ "name": "Kuwajt"
+ },
+ "IN": {
+ "name": "L-Indja"
+ },
+ "GB": {
+ "name": "L-Ingilterra"
+ },
+ "US": {
+ "name": "L-Istati Uniti"
+ },
+ "IT": {
+ "name": "L-Italja"
+ },
+ "LA": {
+ "name": "Laos"
+ },
+ "LV": {
+ "name": "Latvja"
+ },
+ "LS": {
+ "name": "Lesoto"
+ },
+ "LB": {
+ "name": "Libanu"
+ },
+ "LR": {
+ "name": "Liberja"
+ },
+ "LY": {
+ "name": "Libja"
+ },
+ "LI": {
+ "name": "Liechtenstein"
+ },
+ "LT": {
+ "name": "Litwanja"
+ },
+ "LU": {
+ "name": "Lussemburgu"
+ },
+ "MK": {
+ "name": "Maċedonja"
+ },
+ "MO": {
+ "name": "Macao S.A.R., China"
+ },
+ "MG": {
+ "name": "Madagaskar"
+ },
+ "YT": {
+ "name": "Majotte"
+ },
+ "MY": {
+ "name": "Malasja"
+ },
+ "MW": {
+ "name": "Malawi"
+ },
+ "MV": {
+ "name": "Maldives"
+ },
+ "MD": {
+ "name": "Maldova"
+ },
+ "ML": {
+ "name": "Mali"
+ },
+ "MT": {
+ "name": "Malta"
+ },
+ "MA": {
+ "name": "Marokk"
+ },
+ "MQ": {
+ "name": "Martinik"
+ },
+ "MR": {
+ "name": "Mawritanja"
+ },
+ "MU": {
+ "name": "Mawrizju"
+ },
+ "MX": {
+ "name": "Messiku"
+ },
+ "FM": {
+ "name": "Mikronesja"
+ },
+ "MM": {
+ "name": "Mjanmar"
+ },
+ "MC": {
+ "name": "Monako"
+ },
+ "MN": {
+ "name": "Mongolja"
+ },
+ "ME": {
+ "name": "Montenegro"
+ },
+ "MS": {
+ "name": "Montserrat"
+ },
+ "MZ": {
+ "name": "Możambik"
+ },
+ "NA": {
+ "name": "Namibja"
+ },
+ "NR": {
+ "name": "Nauru"
+ },
+ "NP": {
+ "name": "Nepal"
+ },
+ "NC": {
+ "name": "New Caledonia"
+ },
+ "NZ": {
+ "name": "New Zealand"
+ },
+ "NE": {
+ "name": "Niġer"
+ },
+ "NG": {
+ "name": "Niġerja"
+ },
+ "NI": {
+ "name": "Nikaragwa"
+ },
+ "NU": {
+ "name": "Niue"
+ },
+ "NF": {
+ "name": "Norfolk Island"
+ },
+ "NO": {
+ "name": "Norveġja"
+ },
+ "NL": {
+ "name": "Olanda"
+ },
+ "OM": {
+ "name": "Oman"
+ },
+ "PK": {
+ "name": "Pakistan"
+ },
+ "PW": {
+ "name": "Palau"
+ },
+ "PA": {
+ "name": "Panama"
+ },
+ "PG": {
+ "name": "Papwa-Ginea Ä dida"
+ },
+ "PY": {
+ "name": "Paragwaj"
+ },
+ "PE": {
+ "name": "Peru"
+ },
+ "PN": {
+ "name": "Pitcairn"
+ },
+ "PF": {
+ "name": "Polinesja Franċiża"
+ },
+ "PL": {
+ "name": "Polonja"
+ },
+ "PT": {
+ "name": "Portugall"
+ },
+ "PR": {
+ "name": "Puerto Rico"
+ },
+ "QA": {
+ "name": "Qatar"
+ },
+ "CF": {
+ "name": "Repubblika Afrikana ÄŠentrali"
+ },
+ "CZ": {
+ "name": "Repubblika ÄŠeka"
+ },
+ "DO": {
+ "name": "Republikka Domenikana"
+ },
+ "RE": {
+ "name": "Réunion"
+ },
+ "RO": {
+ "name": "Rumanija"
+ },
+ "RW": {
+ "name": "Rwanda"
+ },
+ "EH": {
+ "name": "Sahara tal-Punent"
+ },
+ "SH": {
+ "name": "Saint Helena"
+ },
+ "KN": {
+ "name": "Saint Kitts and Nevis"
+ },
+ "PM": {
+ "name": "Saint Pierre and Miquelon"
+ },
+ "VC": {
+ "name": "Saint Vincent and the Grenadines"
+ },
+ "WS": {
+ "name": "Samoa"
+ },
+ "AS": {
+ "name": "Samoa Amerikana"
+ },
+ "SM": {
+ "name": "San Marino"
+ },
+ "LC": {
+ "name": "Santa Luċija"
+ },
+ "ST": {
+ "name": "Sao Tome and Principe"
+ },
+ "SN": {
+ "name": "Senegal"
+ },
+ "RS": {
+ "name": "Serbia"
+ },
+ "SC": {
+ "name": "Seychelles"
+ },
+ "SL": {
+ "name": "Sierra Leone"
+ },
+ "SG": {
+ "name": "Singapor"
+ },
+ "SX": {
+ "name": "Sint Maarten"
+ },
+ "SY": {
+ "name": "Sirja"
+ },
+ "SK": {
+ "name": "Slovakkja"
+ },
+ "SI": {
+ "name": "Slovenja"
+ },
+ "SB": {
+ "name": "Solomon Islands"
+ },
+ "SO": {
+ "name": "Somalja"
+ },
+ "GS": {
+ "name": "South Georgia and the South Sandwich Islands"
+ },
+ "SS": {
+ "name": "South Sudan"
+ },
+ "ES": {
+ "name": "Spanja"
+ },
+ "LK": {
+ "name": "Sri Lanka"
+ },
+ "BL": {
+ "name": "St. Barthélemy"
+ },
+ "MF": {
+ "name": "St. Martin"
+ },
+ "SD": {
+ "name": "Sudan"
+ },
+ "SR": {
+ "name": "Surinam"
+ },
+ "SJ": {
+ "name": "Svalbard and Jan Mayen"
+ },
+ "CH": {
+ "name": "Svizzera"
+ },
+ "SZ": {
+ "name": "Sważiland"
+ },
+ "TJ": {
+ "name": "Taġikistan"
+ },
+ "TH": {
+ "name": "Tajlandja"
+ },
+ "TW": {
+ "name": "Tajwan"
+ },
+ "TZ": {
+ "name": "Tanżanija"
+ },
+ "TF": {
+ "name": "Territorji Franċiżi ta’ Nofsinhar"
+ },
+ "PS": {
+ "name": "Territorju Palestinjan"
+ },
+ "TL": {
+ "name": "Timor tal-Lvant"
+ },
+ "TG": {
+ "name": "Togo"
+ },
+ "TK": {
+ "name": "Tokelaw"
+ },
+ "TO": {
+ "name": "Tonga"
+ },
+ "TT": {
+ "name": "Trinidad u Tobago"
+ },
+ "TA": {
+ "name": "Tristan da Cunha"
+ },
+ "TN": {
+ "name": "Tuneż"
+ },
+ "TR": {
+ "name": "Turkija"
+ },
+ "TM": {
+ "name": "Turkmenistan"
+ },
+ "TC": {
+ "name": "Turks and Caicos Islands"
+ },
+ "TV": {
+ "name": "Tuvalu"
+ },
+ "VI": {
+ "name": "U.S. Virgin Islands"
+ },
+ "UG": {
+ "name": "Uganda"
+ },
+ "UA": {
+ "name": "Ukraina"
+ },
+ "HU": {
+ "name": "Ungerija"
+ },
+ "UM": {
+ "name": "United States Minor Outlying Islands"
+ },
+ "UY": {
+ "name": "Urugwaj"
+ },
+ "UZ": {
+ "name": "Użbekistan"
+ },
+ "VU": {
+ "name": "Vanwatu"
+ },
+ "VA": {
+ "name": "Vatikan"
+ },
+ "VE": {
+ "name": "Venezwela"
+ },
+ "VN": {
+ "name": "Vjetnam"
+ },
+ "WF": {
+ "name": "Wallis and Futuna"
+ },
+ "ZM": {
+ "name": "Żambja"
+ },
+ "ZW": {
+ "name": "Żimbabwe"
+ },
+ "SE": {
+ "name": "Żvezja"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/country/mua.json b/library/intl/resources/country/mua.json
new file mode 100644
index 000000000..6bfd0b550
--- /dev/null
+++ b/library/intl/resources/country/mua.json
@@ -0,0 +1,761 @@
+{
+ "AF": {
+ "name": "afghanistaŋ"
+ },
+ "ZA": {
+ "name": "Afrika nekÇsÇÅ‹"
+ },
+ "AX": {
+ "name": "Ã…land Islands"
+ },
+ "AL": {
+ "name": "albaniya"
+ },
+ "DZ": {
+ "name": "algeriya"
+ },
+ "US": {
+ "name": "Amerika"
+ },
+ "AD": {
+ "name": "andorra"
+ },
+ "IO": {
+ "name": "anglofoŋ ma Indiya"
+ },
+ "AO": {
+ "name": "angola"
+ },
+ "AI": {
+ "name": "anguiya"
+ },
+ "AQ": {
+ "name": "Antarctica"
+ },
+ "AG": {
+ "name": "antiguan ne Barbuda"
+ },
+ "AR": {
+ "name": "argentiniya"
+ },
+ "AM": {
+ "name": "armeniya"
+ },
+ "AW": {
+ "name": "aruba"
+ },
+ "AC": {
+ "name": "Ascension Island"
+ },
+ "AU": {
+ "name": "australiya"
+ },
+ "AT": {
+ "name": "austriya"
+ },
+ "AZ": {
+ "name": "azerbaijaŋ"
+ },
+ "BS": {
+ "name": "bahamas"
+ },
+ "BH": {
+ "name": "bahraiŋ"
+ },
+ "BD": {
+ "name": "bangladeshiya"
+ },
+ "BB": {
+ "name": "barbadiya"
+ },
+ "BY": {
+ "name": "belarussiya"
+ },
+ "BE": {
+ "name": "belgika"
+ },
+ "BZ": {
+ "name": "beliziya"
+ },
+ "BJ": {
+ "name": "beniŋ"
+ },
+ "BM": {
+ "name": "bermudiya"
+ },
+ "BO": {
+ "name": "boliviya"
+ },
+ "BA": {
+ "name": "bosniya ne Herzegovina"
+ },
+ "BW": {
+ "name": "botswana"
+ },
+ "BR": {
+ "name": "brazilya"
+ },
+ "BN": {
+ "name": "bruniya"
+ },
+ "BG": {
+ "name": "bulgariya"
+ },
+ "BF": {
+ "name": "burkina Faso"
+ },
+ "BI": {
+ "name": "burundi"
+ },
+ "BT": {
+ "name": "butaŋ"
+ },
+ "IC": {
+ "name": "Canary Islands"
+ },
+ "BQ": {
+ "name": "Caribbean Netherlands"
+ },
+ "CF": {
+ "name": "centrafrika"
+ },
+ "EA": {
+ "name": "Ceuta & Melilla"
+ },
+ "CX": {
+ "name": "Christmas Island"
+ },
+ "CC": {
+ "name": "Cocos (Keeling) Islands"
+ },
+ "CW": {
+ "name": "Curaçao"
+ },
+ "DK": {
+ "name": "Daŋmark"
+ },
+ "DG": {
+ "name": "Diego Garcia"
+ },
+ "DJ": {
+ "name": "Djibouti"
+ },
+ "DM": {
+ "name": "Dominik"
+ },
+ "EC": {
+ "name": "EkwatÇr"
+ },
+ "ES": {
+ "name": "Espaŋiya"
+ },
+ "EE": {
+ "name": "Estoniya"
+ },
+ "ET": {
+ "name": "Etiopia"
+ },
+ "FO": {
+ "name": "Faroe Islands"
+ },
+ "PH": {
+ "name": "Filipiŋ"
+ },
+ "FR": {
+ "name": "FranssÇ"
+ },
+ "TF": {
+ "name": "French Southern Territories"
+ },
+ "GA": {
+ "name": "Gaboŋ"
+ },
+ "GM": {
+ "name": "Gambiya"
+ },
+ "GH": {
+ "name": "Gana"
+ },
+ "GE": {
+ "name": "Georgiya"
+ },
+ "DE": {
+ "name": "Germaniya"
+ },
+ "GD": {
+ "name": "GrenadÇ"
+ },
+ "GG": {
+ "name": "Guernsey"
+ },
+ "GN": {
+ "name": "Guine"
+ },
+ "GW": {
+ "name": "Guine ma Bissao"
+ },
+ "GY": {
+ "name": "Guyana"
+ },
+ "GU": {
+ "name": "Gwam"
+ },
+ "GT": {
+ "name": "Gwatemala"
+ },
+ "HK": {
+ "name": "Hong Kong SAR China"
+ },
+ "HU": {
+ "name": "Hungriya"
+ },
+ "ID": {
+ "name": "Indonesiya"
+ },
+ "IQ": {
+ "name": "Irak"
+ },
+ "IR": {
+ "name": "Iraŋ"
+ },
+ "IM": {
+ "name": "Isle of Man"
+ },
+ "IT": {
+ "name": "Italiya"
+ },
+ "JM": {
+ "name": "Jamaika"
+ },
+ "JP": {
+ "name": "Japaŋ"
+ },
+ "JE": {
+ "name": "Jersey"
+ },
+ "JO": {
+ "name": "Jordaniya"
+ },
+ "NC": {
+ "name": "Kaledoniya mafuu"
+ },
+ "KH": {
+ "name": "kambodiya"
+ },
+ "CM": {
+ "name": "kameruŋ"
+ },
+ "CA": {
+ "name": "kanada"
+ },
+ "CV": {
+ "name": "kap ma laŋne"
+ },
+ "QA": {
+ "name": "Katar"
+ },
+ "KY": {
+ "name": "kayman ma laŋne"
+ },
+ "KZ": {
+ "name": "Kazakstaŋ"
+ },
+ "KG": {
+ "name": "Kirgizstaŋ"
+ },
+ "CO": {
+ "name": "kolombiya"
+ },
+ "KM": {
+ "name": "komora"
+ },
+ "CG": {
+ "name": "kongo"
+ },
+ "CK": {
+ "name": "kook ma laŋne"
+ },
+ "XK": {
+ "name": "Kosovo"
+ },
+ "CR": {
+ "name": "kosta Rika"
+ },
+ "HR": {
+ "name": "kroatiya"
+ },
+ "CU": {
+ "name": "Kuba"
+ },
+ "LV": {
+ "name": "Letoniya"
+ },
+ "LB": {
+ "name": "Libaŋ"
+ },
+ "LR": {
+ "name": "Liberiya"
+ },
+ "LY": {
+ "name": "Libiya"
+ },
+ "LI": {
+ "name": "LichtÇnsteiÅ‹"
+ },
+ "LT": {
+ "name": "Lituaniya"
+ },
+ "MO": {
+ "name": "Macau SAR China"
+ },
+ "MK": {
+ "name": "Macedoniya"
+ },
+ "MG": {
+ "name": "Madagaskar"
+ },
+ "MY": {
+ "name": "Malaysiya"
+ },
+ "MV": {
+ "name": "MaldivÇ"
+ },
+ "MA": {
+ "name": "Marok"
+ },
+ "MQ": {
+ "name": "Martinika"
+ },
+ "MR": {
+ "name": "Mauritaniya"
+ },
+ "YT": {
+ "name": "Mayot"
+ },
+ "MX": {
+ "name": "Mexiko"
+ },
+ "FM": {
+ "name": "Micronesiya"
+ },
+ "MD": {
+ "name": "Moldoviya"
+ },
+ "MC": {
+ "name": "Monako"
+ },
+ "MN": {
+ "name": "Mongoliya"
+ },
+ "ME": {
+ "name": "Montenegro"
+ },
+ "MZ": {
+ "name": "Mozambika"
+ },
+ "NA": {
+ "name": "Namibiya"
+ },
+ "NG": {
+ "name": "Nigeriya"
+ },
+ "NI": {
+ "name": "Nikaragwa"
+ },
+ "NU": {
+ "name": "Niwe"
+ },
+ "NF": {
+ "name": "Norfolk ma laŋne"
+ },
+ "NO": {
+ "name": "NorvegÇ"
+ },
+ "OM": {
+ "name": "Omaŋ"
+ },
+ "PK": {
+ "name": "Pakistaŋ"
+ },
+ "PG": {
+ "name": "Papuasiya Guine mafuu"
+ },
+ "PY": {
+ "name": "Paragwai"
+ },
+ "PE": {
+ "name": "Peru"
+ },
+ "PN": {
+ "name": "Pitkairn"
+ },
+ "PL": {
+ "name": "Pologŋ"
+ },
+ "PR": {
+ "name": "Porto Riko"
+ },
+ "RO": {
+ "name": "Romaniya"
+ },
+ "RU": {
+ "name": "Russiya"
+ },
+ "RW": {
+ "name": "Rwanda"
+ },
+ "SC": {
+ "name": "Saichel"
+ },
+ "AS": {
+ "name": "samoa Amerika"
+ },
+ "ST": {
+ "name": "Sao Tome ne Principe"
+ },
+ "SN": {
+ "name": "Senegal"
+ },
+ "VG": {
+ "name": "ser Anglofon ma laŋne"
+ },
+ "CI": {
+ "name": "ser Ivoiriya"
+ },
+ "RS": {
+ "name": "Serbia"
+ },
+ "VI": {
+ "name": "SÇr amerika ma laÅ‹ne"
+ },
+ "GB": {
+ "name": "SÇr AnglofoÅ‹"
+ },
+ "SA": {
+ "name": "SÇr Arabiya"
+ },
+ "AE": {
+ "name": "SÇr Arabiya ma taini"
+ },
+ "DO": {
+ "name": "SÇr Dominik ma lii"
+ },
+ "EG": {
+ "name": "SÇr Egypt"
+ },
+ "ER": {
+ "name": "SÇr Eritre"
+ },
+ "FJ": {
+ "name": "SÇr Fiji"
+ },
+ "FI": {
+ "name": "SÇr Finland"
+ },
+ "GI": {
+ "name": "SÇr Gibraltar"
+ },
+ "GR": {
+ "name": "SÇr Grek"
+ },
+ "GL": {
+ "name": "SÇr Groenland"
+ },
+ "GQ": {
+ "name": "SÇr Guine"
+ },
+ "GF": {
+ "name": "SÇr Guyana ma FranssÇ"
+ },
+ "GP": {
+ "name": "SÇr GwadeloupÇ"
+ },
+ "HT": {
+ "name": "SÇr Haiti"
+ },
+ "SH": {
+ "name": "SÇr Helena"
+ },
+ "HN": {
+ "name": "SÇr Honduras"
+ },
+ "IN": {
+ "name": "SÇr IndÇ"
+ },
+ "IE": {
+ "name": "SÇr Ireland"
+ },
+ "IS": {
+ "name": "SÇr Island"
+ },
+ "IL": {
+ "name": "SÇr Israel"
+ },
+ "KE": {
+ "name": "SÇr Kenya"
+ },
+ "KI": {
+ "name": "SÇr Kiribati"
+ },
+ "CD": {
+ "name": "SÇr Kongo ma dii ne zair"
+ },
+ "KP": {
+ "name": "SÇr Kore fah sÇÅ‹"
+ },
+ "KR": {
+ "name": "SÇr Kore nekÇsÇÅ‹"
+ },
+ "KW": {
+ "name": "SÇr Kowait"
+ },
+ "KN": {
+ "name": "SÇr Kristof ne NievÇ"
+ },
+ "LK": {
+ "name": "SÇr Lanka"
+ },
+ "LA": {
+ "name": "SÇr Laos"
+ },
+ "LS": {
+ "name": "SÇr Lesotho"
+ },
+ "LC": {
+ "name": "SÇr Lucia"
+ },
+ "LU": {
+ "name": "SÇr Luxemburg"
+ },
+ "NL": {
+ "name": "SÇr ma kasÇÅ‹"
+ },
+ "MW": {
+ "name": "SÇr Malawi"
+ },
+ "ML": {
+ "name": "SÇr Mali"
+ },
+ "FK": {
+ "name": "SÇr malouniya ma laÅ‹ne"
+ },
+ "MT": {
+ "name": "SÇr Malta"
+ },
+ "MP": {
+ "name": "SÇr Maria ma laÅ‹ne"
+ },
+ "SM": {
+ "name": "SÇr Marino"
+ },
+ "MH": {
+ "name": "SÇr Marshall ma laÅ‹ne"
+ },
+ "MU": {
+ "name": "SÇr MauricÇ"
+ },
+ "MS": {
+ "name": "SÇr Montserrat"
+ },
+ "MM": {
+ "name": "SÇr Myanmar"
+ },
+ "NR": {
+ "name": "SÇr Nauru"
+ },
+ "NP": {
+ "name": "SÇr Nepal"
+ },
+ "NE": {
+ "name": "SÇr Niger"
+ },
+ "PW": {
+ "name": "SÇr Palau"
+ },
+ "PS": {
+ "name": "SÇr Palestiniya"
+ },
+ "PA": {
+ "name": "SÇr Panama"
+ },
+ "PM": {
+ "name": "SÇr PÇtar ne MikÇlon"
+ },
+ "PF": {
+ "name": "SÇr Polynesiya ma FranssÇ"
+ },
+ "PT": {
+ "name": "SÇr Portugal"
+ },
+ "RE": {
+ "name": "SÇr Reunion"
+ },
+ "SB": {
+ "name": "SÇr Salomon ma laÅ‹ne"
+ },
+ "SV": {
+ "name": "SÇr Salvador"
+ },
+ "WS": {
+ "name": "SÇr Samoa"
+ },
+ "SE": {
+ "name": "SÇr Sued"
+ },
+ "SR": {
+ "name": "SÇr Surinam"
+ },
+ "SZ": {
+ "name": "SÇr Swaziland"
+ },
+ "CH": {
+ "name": "SÇr Swiss"
+ },
+ "CZ": {
+ "name": "SÇr Syek"
+ },
+ "TG": {
+ "name": "SÇr Togo"
+ },
+ "TK": {
+ "name": "SÇr Tokelau"
+ },
+ "TO": {
+ "name": "SÇr Tonga"
+ },
+ "TV": {
+ "name": "SÇr Tuvalu"
+ },
+ "VU": {
+ "name": "SÇr Vanuatu"
+ },
+ "VE": {
+ "name": "SÇr Venezuela"
+ },
+ "VN": {
+ "name": "SÇr Vietnam"
+ },
+ "VC": {
+ "name": "SÇr VinceÅ‹ ne GrenadiÅ‹"
+ },
+ "SL": {
+ "name": "Sierra LeonÇ"
+ },
+ "SG": {
+ "name": "Singapur"
+ },
+ "SX": {
+ "name": "Sint Maarten"
+ },
+ "SK": {
+ "name": "Slovakiya"
+ },
+ "SI": {
+ "name": "Sloveniya"
+ },
+ "SO": {
+ "name": "Somaliya"
+ },
+ "GS": {
+ "name": "South Georgia & South Sandwich Islands"
+ },
+ "SS": {
+ "name": "South Sudan"
+ },
+ "BL": {
+ "name": "St. Barthélemy"
+ },
+ "MF": {
+ "name": "St. Martin"
+ },
+ "SD": {
+ "name": "Sudaŋ"
+ },
+ "SJ": {
+ "name": "Svalbard & Jan Mayen"
+ },
+ "TD": {
+ "name": "syad"
+ },
+ "CL": {
+ "name": "syili"
+ },
+ "CN": {
+ "name": "syiŋ"
+ },
+ "CY": {
+ "name": "Syipriya"
+ },
+ "SY": {
+ "name": "Syria"
+ },
+ "TH": {
+ "name": "Tailand"
+ },
+ "TW": {
+ "name": "Taiwaŋ"
+ },
+ "TJ": {
+ "name": "Tajikistaŋ"
+ },
+ "TZ": {
+ "name": "Tanzaniya"
+ },
+ "TL": {
+ "name": "Timoriya"
+ },
+ "TT": {
+ "name": "Trinite ne Tobago"
+ },
+ "TA": {
+ "name": "Tristan da Cunha"
+ },
+ "TN": {
+ "name": "Tunisiya"
+ },
+ "TR": {
+ "name": "Turkiya"
+ },
+ "TC": {
+ "name": "Turkiya ne kaicos ma laŋne"
+ },
+ "TM": {
+ "name": "Turkmenistaŋ"
+ },
+ "UM": {
+ "name": "U.S. Outlying Islands"
+ },
+ "UG": {
+ "name": "Uganda"
+ },
+ "UA": {
+ "name": "Ukraiŋ"
+ },
+ "UY": {
+ "name": "Urugwai"
+ },
+ "UZ": {
+ "name": "Uzbekistaŋ"
+ },
+ "VA": {
+ "name": "Vaticaŋ"
+ },
+ "WF": {
+ "name": "Wallis ne Futuna"
+ },
+ "EH": {
+ "name": "Western Sahara"
+ },
+ "YE": {
+ "name": "Yemeŋ"
+ },
+ "ZM": {
+ "name": "Zambiya"
+ },
+ "NZ": {
+ "name": "Zeland mafuu"
+ },
+ "ZW": {
+ "name": "Zimbabwe"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/country/my.json b/library/intl/resources/country/my.json
new file mode 100644
index 000000000..100b0d425
--- /dev/null
+++ b/library/intl/resources/country/my.json
@@ -0,0 +1,761 @@
+{
+ "CA": {
+ "name": "ကနေဒါ"
+ },
+ "KZ": {
+ "name": "ကာဇက်စá€á€”်"
+ },
+ "QA": {
+ "name": "ကာá€á€¬"
+ },
+ "IC": {
+ "name": "ကာနာရီကျွန်းစု"
+ },
+ "BQ": {
+ "name": "ကာရီဘီယံနယ်သာလန်"
+ },
+ "KW": {
+ "name": "ကူá€á€­á€á€º"
+ },
+ "KY": {
+ "name": "ကေမန် ကျွန်းစု"
+ },
+ "CR": {
+ "name": "ကော့စ်á€á€¬á€›á€®á€€á€¬"
+ },
+ "CC": {
+ "name": "ကိုကိုး ကျွန်းစု"
+ },
+ "XK": {
+ "name": "ကိုဆိုဗို"
+ },
+ "KM": {
+ "name": "ကိုမိုရိုစ်"
+ },
+ "CO": {
+ "name": "ကိုလံဘီယာ"
+ },
+ "KE": {
+ "name": "ကင်ညာ"
+ },
+ "CM": {
+ "name": "ကင်မရွန်း"
+ },
+ "KH": {
+ "name": "ကမ္ဘောဒီးယား"
+ },
+ "CU": {
+ "name": "ကျူးဘား"
+ },
+ "CK": {
+ "name": "ကွá€á€º ကျွန်းစု"
+ },
+ "CD": {
+ "name": "ကွန်ဂို-ကင်ရှာစ"
+ },
+ "CG": {
+ "name": "ကွန်ဂို-ဘရာဇာဗီလ်"
+ },
+ "KG": {
+ "name": "á€á€›á€°á€‚စ်စá€á€”်"
+ },
+ "HR": {
+ "name": "á€á€›á€­á€¯á€¡á€±á€¸á€›á€¾á€¬á€¸"
+ },
+ "CX": {
+ "name": "á€á€›á€…်စမá€á€º ကျွန်း"
+ },
+ "KI": {
+ "name": "á€á€®á€›á€®á€˜á€¬á€á€®"
+ },
+ "CW": {
+ "name": "á€á€°á€›á€¬á€€á€¬á€¡á€­á€¯"
+ },
+ "CV": {
+ "name": "á€á€±á€·á€•á€ºá€—ာဒူ"
+ },
+ "CL": {
+ "name": "á€á€»á€®á€œá€®"
+ },
+ "CZ": {
+ "name": "á€á€»á€€á€º ပြည်ထောင်စု"
+ },
+ "TD": {
+ "name": "á€á€»á€’်"
+ },
+ "GR": {
+ "name": "ဂရိ"
+ },
+ "GD": {
+ "name": "ဂရီနာဒါ"
+ },
+ "GL": {
+ "name": "ဂရင်းလန်း"
+ },
+ "GH": {
+ "name": "ဂါနာ"
+ },
+ "GA": {
+ "name": "ဂါဘွန်"
+ },
+ "GW": {
+ "name": "ဂီရာနာ-ဘီစ်စာဥ"
+ },
+ "GN": {
+ "name": "ဂီးနီ"
+ },
+ "GY": {
+ "name": "ဂူရာနာ"
+ },
+ "GP": {
+ "name": "ဂူအာဒီလုပ်"
+ },
+ "GU": {
+ "name": "ဂူအမ်"
+ },
+ "GM": {
+ "name": "ဂန်ဘီရာ"
+ },
+ "JP": {
+ "name": "ဂျပန်"
+ },
+ "JM": {
+ "name": "ဂျမေကာ"
+ },
+ "JE": {
+ "name": "ဂျာစီ"
+ },
+ "DE": {
+ "name": "ဂျာမá€á€®"
+ },
+ "GI": {
+ "name": "ဂျီဘရော်လ်á€á€¬"
+ },
+ "DJ": {
+ "name": "ဂျီဘူá€á€®"
+ },
+ "GE": {
+ "name": "ဂျော်ဂျီယာ"
+ },
+ "JO": {
+ "name": "ဂျော်ဒန်"
+ },
+ "GT": {
+ "name": "ဂွာá€á€®á€™á€¬á€œá€¬"
+ },
+ "GG": {
+ "name": "ဂွန်းဇီ"
+ },
+ "ES": {
+ "name": "စပိန်"
+ },
+ "SJ": {
+ "name": "စဗိုလ်ဘá€á€ºá€”ှင့်ဂျန်မေရန်"
+ },
+ "SK": {
+ "name": "စလိုဗေးကီးယား"
+ },
+ "SI": {
+ "name": "စလိုဗေးနီးယား"
+ },
+ "SG": {
+ "name": "စင်္ကာပူ"
+ },
+ "KN": {
+ "name": "စိန့်ကစ်နှင့်နီဗီစ်"
+ },
+ "ST": {
+ "name": "စိန့်á€á€­á€¯á€™á€®á€”ှင့်ပရင်စီပ့်"
+ },
+ "PM": {
+ "name": "စိန့်ပီအဲရီနှင့်မီကွီလွန်"
+ },
+ "VC": {
+ "name": "စိန့်ဗင့်ဆင့်နှင့် သည်ဂရဲနာဒင်းစ်"
+ },
+ "BL": {
+ "name": "စိန့်ဘာသီလီမိုင်"
+ },
+ "MF": {
+ "name": "စိန့်မာá€á€„်"
+ },
+ "LC": {
+ "name": "စိန့်လူစီအာ"
+ },
+ "SH": {
+ "name": "စိန့်ဟဲလီနာ"
+ },
+ "SZ": {
+ "name": "စွာဇီလန်"
+ },
+ "WS": {
+ "name": "ဆာမိုအာ"
+ },
+ "RS": {
+ "name": "ဆားဘီးယား"
+ },
+ "SN": {
+ "name": "ဆီနီဂေါ"
+ },
+ "SL": {
+ "name": "ဆီအဲရာ လီအိုနီ"
+ },
+ "SY": {
+ "name": "ဆီးရီးယား"
+ },
+ "SD": {
+ "name": "ဆူဒန်"
+ },
+ "SR": {
+ "name": "ဆူရီနိမ်း"
+ },
+ "SC": {
+ "name": "ဆေးရှလ်"
+ },
+ "SM": {
+ "name": "ဆော့န်မာရီနို"
+ },
+ "SA": {
+ "name": "ဆော်ဒီအာရေးဗီးယား"
+ },
+ "SB": {
+ "name": "ဆော်လမွန်ကျွန်းစု"
+ },
+ "SO": {
+ "name": "ဆိုမာလီယာ"
+ },
+ "CY": {
+ "name": "ဆိုက်ပရက်စ်"
+ },
+ "SX": {
+ "name": "ဆင့်မာအာá€á€„်"
+ },
+ "EA": {
+ "name": "ဆယ်ဥá€á€¬á€”ှင့်မယ်လီလ်လာ"
+ },
+ "SE": {
+ "name": "ဆွီဒင်"
+ },
+ "CH": {
+ "name": "ဆွစ်ဇလန်"
+ },
+ "ZW": {
+ "name": "ဇင်ဘာဘွေ"
+ },
+ "ZM": {
+ "name": "ဇမ်ဘီယာ"
+ },
+ "CN": {
+ "name": "á€á€›á€¯á€á€º"
+ },
+ "MO": {
+ "name": "á€á€›á€¯á€á€ºá အထူးအုပ်á€á€»á€¯á€•á€ºá€á€½á€„့်ရ မကာအို"
+ },
+ "HK": {
+ "name": "á€á€›á€¯á€á€ºá အထူးအုပ်á€á€»á€¯á€•á€ºá€á€½á€„့်ရ ဟောင်ကောင်"
+ },
+ "TJ": {
+ "name": "á€á€¬á€‚ျီကစ္စá€á€”်"
+ },
+ "TN": {
+ "name": "á€á€°á€”ီးရှား"
+ },
+ "TR": {
+ "name": "á€á€°á€›á€€á€®"
+ },
+ "TG": {
+ "name": "á€á€­á€¯á€‚ို"
+ },
+ "TC": {
+ "name": "á€á€á€ºá€…်နှင့်ကာအီကိုစ်ကျွန်းစု"
+ },
+ "TM": {
+ "name": "á€á€¬á€á€ºá€™á€®á€”့စ်á€á€”်"
+ },
+ "GS": {
+ "name": "á€á€±á€¬á€„် ဂျော်ဂျီယာ နှင့် á€á€±á€¬á€„် ဆင်းဒá€á€…်ဂျ် ကျွန်းစုများ"
+ },
+ "KR": {
+ "name": "á€á€±á€¬á€„်ကိုရီးယား"
+ },
+ "MP": {
+ "name": "á€á€±á€¬á€„်ပိုင်းမာရီအာနာကျွန်းစု"
+ },
+ "ZA": {
+ "name": "á€á€±á€¬á€„်အာဖရိက"
+ },
+ "TZ": {
+ "name": "á€á€”်ဇန်းနီးယား"
+ },
+ "TO": {
+ "name": "á€á€½á€”်ဂါ"
+ },
+ "TT": {
+ "name": "ထရိုင်နီဒá€á€ºá€”ှင့်á€á€­á€¯á€˜á€¬á€‚ို"
+ },
+ "TA": {
+ "name": "ထရစ်á€á€”်ဒါကွန်ဟာ"
+ },
+ "TV": {
+ "name": "ထူးဗလူ"
+ },
+ "TK": {
+ "name": "ထိုးá€á€«á€œá€°"
+ },
+ "TW": {
+ "name": "ထိုင်á€á€™á€º"
+ },
+ "TH": {
+ "name": "ထိုင်း"
+ },
+ "DG": {
+ "name": "ဒီအေဂိုဂရာစီအာ"
+ },
+ "DM": {
+ "name": "ဒိုမီနီကာ"
+ },
+ "DO": {
+ "name": "ဒိုမီနီကန်"
+ },
+ "DK": {
+ "name": "ဒိန်းမá€á€º"
+ },
+ "NC": {
+ "name": "နယူး ကယ်လီဒိုနီးယား"
+ },
+ "NZ": {
+ "name": "နယူးဇီလန်"
+ },
+ "NR": {
+ "name": "နာဥူရူ"
+ },
+ "NI": {
+ "name": "နီကာရာဂွာ"
+ },
+ "NP": {
+ "name": "နီပေါ"
+ },
+ "NU": {
+ "name": "နီဥူအေ"
+ },
+ "NF": {
+ "name": "နောဖော့á€á€ºá€€á€»á€½á€”်း"
+ },
+ "NO": {
+ "name": "နော်á€á€±"
+ },
+ "NE": {
+ "name": "နိုင်ဂျာ"
+ },
+ "NG": {
+ "name": "နိုင်ဂျီးရီးယား"
+ },
+ "NA": {
+ "name": "နမ်မီးဘီးယား"
+ },
+ "NL": {
+ "name": "နယ်သာလန်"
+ },
+ "PA": {
+ "name": "ပနားမား"
+ },
+ "PW": {
+ "name": "ပလောင်"
+ },
+ "PK": {
+ "name": "ပါကစ္စá€á€”်"
+ },
+ "PG": {
+ "name": "ပါပူရာနယူးဂီနီ"
+ },
+ "PY": {
+ "name": "ပါရာဂွေး"
+ },
+ "PS": {
+ "name": "ပါလက်စá€á€­á€¯á€„်း ပိုင်နက်"
+ },
+ "PE": {
+ "name": "ပီရူး"
+ },
+ "PT": {
+ "name": "ပေါ်á€á€°á€‚ီ"
+ },
+ "PR": {
+ "name": "ပေါ်á€á€°á€›á€®á€€á€­á€¯"
+ },
+ "PL": {
+ "name": "ပိုလန်"
+ },
+ "PN": {
+ "name": "ပစ်á€á€ºá€€á€­á€”်းကျွန်းစု"
+ },
+ "FR": {
+ "name": "ပြင်သစ်"
+ },
+ "GF": {
+ "name": "ပြင်သစ် ဂီယာနာ"
+ },
+ "TF": {
+ "name": "ပြင်သစ် á€á€±á€¬á€„်ပိုင်း ပိုင်နက်များ"
+ },
+ "PF": {
+ "name": "ပြင်သစ် ပေါ်လီနေးရှား"
+ },
+ "FO": {
+ "name": "ဖာရိုး ကျွန်းစုများ"
+ },
+ "PH": {
+ "name": "ဖိလစ်ပိုင်"
+ },
+ "FJ": {
+ "name": "ဖီဂျီ"
+ },
+ "FK": {
+ "name": "ဖောက်ကလန် ကျွန်းစု"
+ },
+ "FI": {
+ "name": "ဖင်လန်"
+ },
+ "VA": {
+ "name": "ဗာá€á€®á€€á€”်စီá€á€®á€¸"
+ },
+ "VU": {
+ "name": "ဗာနုအာá€á€°"
+ },
+ "VN": {
+ "name": "ဗီယက်နမ်"
+ },
+ "VE": {
+ "name": "ဗင်နီဇွဲလား"
+ },
+ "VG": {
+ "name": "ဗြိá€á€­á€žá€»á€¾ ဗာဂျင်း ကျွန်းစု"
+ },
+ "IO": {
+ "name": "ဗြိá€á€­á€žá€»á€¾ အိန္ဒြိယ သမုဒ္ဒရာ ပိုင်နက်"
+ },
+ "BR": {
+ "name": "ဘရာဇီး"
+ },
+ "BN": {
+ "name": "ဘရူနိုင်း"
+ },
+ "BS": {
+ "name": "ဘဟားမား"
+ },
+ "BF": {
+ "name": "ဘာကီနာ ဖာဆို"
+ },
+ "BB": {
+ "name": "ဘာဘဒိုးစ်"
+ },
+ "BM": {
+ "name": "ဘာမူဒါ"
+ },
+ "BH": {
+ "name": "ဘာရိန်း"
+ },
+ "BJ": {
+ "name": "ဘီနင်"
+ },
+ "BY": {
+ "name": "ဘီလာရုစ်"
+ },
+ "BG": {
+ "name": "ဘူဂေးရီးယား"
+ },
+ "BT": {
+ "name": "ဘူá€á€”်"
+ },
+ "BI": {
+ "name": "ဘူရွန်ဒီ"
+ },
+ "BZ": {
+ "name": "ဘေလီဇ်"
+ },
+ "BA": {
+ "name": "ဘော့စနီးယား နှင့် ဟာဇီဂိုဘီးနား"
+ },
+ "BW": {
+ "name": "ဘော့စ်á€á€«á€”ာ"
+ },
+ "BO": {
+ "name": "ဘိုလီးဘီးယား"
+ },
+ "BD": {
+ "name": "ဘင်္ဂလားဒေ့ရှ်"
+ },
+ "BE": {
+ "name": "ဘယ်လ်ဂျီယမ်"
+ },
+ "MY": {
+ "name": "မလေးရှား"
+ },
+ "MK": {
+ "name": "မာစီဒိုးနီးယား"
+ },
+ "MQ": {
+ "name": "မာá€á€®á€”ီကီ"
+ },
+ "MG": {
+ "name": "မာဒါဂá€á€ºá€…ကာ"
+ },
+ "MH": {
+ "name": "မာရှယ် ကျွန်းစု"
+ },
+ "MW": {
+ "name": "မာလာá€á€®"
+ },
+ "ML": {
+ "name": "မာလီ"
+ },
+ "YT": {
+ "name": "မေအိုá€á€®"
+ },
+ "MR": {
+ "name": "မောရီá€á€¬á€”ီအာ"
+ },
+ "MU": {
+ "name": "မော်ရေရှားစ်"
+ },
+ "MA": {
+ "name": "မော်ရိုကို"
+ },
+ "MV": {
+ "name": "မော်လ်ဒိုက်"
+ },
+ "MZ": {
+ "name": "မိုဇန်ဘစ်"
+ },
+ "MC": {
+ "name": "မိုနာကို"
+ },
+ "MX": {
+ "name": "မက္ကဆီကို"
+ },
+ "MS": {
+ "name": "မောင့်စဲရက်"
+ },
+ "FM": {
+ "name": "မိုင်á€á€›á€­á€¯á€”ီရှား"
+ },
+ "IM": {
+ "name": "မန်ကျွန်း"
+ },
+ "MT": {
+ "name": "မောလ်á€á€¬"
+ },
+ "MD": {
+ "name": "မောလ်ဒိုဗာ"
+ },
+ "KP": {
+ "name": "မြောက်ကိုရီးယား"
+ },
+ "SS": {
+ "name": "မြောက်ဆူဒန်"
+ },
+ "MM": {
+ "name": "မြန်မာ"
+ },
+ "MN": {
+ "name": "မွန်ဂိုးလီးယား"
+ },
+ "ME": {
+ "name": "မွန်á€á€®á€”ိဂရိုး"
+ },
+ "YE": {
+ "name": "ယီမင်"
+ },
+ "UA": {
+ "name": "ယူကရိန်း"
+ },
+ "UG": {
+ "name": "ယူဂန္ဓာ"
+ },
+ "GB": {
+ "name": "ယူနိုက်á€á€€á€ºá€€á€„်းဒမ်း"
+ },
+ "US": {
+ "name": "ယူနိုက်á€á€€á€ºá€…á€á€­á€á€º"
+ },
+ "UM": {
+ "name": "ယူနိုက်á€á€€á€ºá€…á€á€­á€á€º အပြင်ထွက် နေသည့် သေးငယ်သောကျွန်းများ"
+ },
+ "AE": {
+ "name": "ယူအေအီး"
+ },
+ "VI": {
+ "name": "ယူအက်စ် ဗာဂျင်း ကျွန်းစု"
+ },
+ "RW": {
+ "name": "ရá€á€”်ဒါ"
+ },
+ "RU": {
+ "name": "ရုရှ"
+ },
+ "RE": {
+ "name": "ရဲအူနီရွန်"
+ },
+ "RO": {
+ "name": "ရိုမေးနီးယား"
+ },
+ "LA": {
+ "name": "လာအို"
+ },
+ "LS": {
+ "name": "လီဆိုသို"
+ },
+ "LY": {
+ "name": "လီဗရာ"
+ },
+ "LU": {
+ "name": "လူဇင်ဘá€á€º"
+ },
+ "LB": {
+ "name": "လက်ဘနွန်"
+ },
+ "LR": {
+ "name": "လိုင်ဘေးရီးယား"
+ },
+ "LT": {
+ "name": "လစ်သူယေးနီးယား"
+ },
+ "LI": {
+ "name": "လစ်á€á€ºá€‘င်စá€á€­á€¯á€„်"
+ },
+ "LV": {
+ "name": "လá€á€ºá€—ီးယား"
+ },
+ "WF": {
+ "name": "á€á€±á€«á€œá€…်နှင့်ဖူထူးနား"
+ },
+ "LK": {
+ "name": "သီရိလင်္ကာ"
+ },
+ "HT": {
+ "name": "ဟေá€á€®"
+ },
+ "HU": {
+ "name": "ဟန်ဂေရီ"
+ },
+ "HN": {
+ "name": "ဟွန်ဒူးရပ်စ်"
+ },
+ "AZ": {
+ "name": "အဇာဘိုင်ဂျန်"
+ },
+ "EH": {
+ "name": "အနောက်ပိုင်း ဆာဟာရ"
+ },
+ "AS": {
+ "name": "အမေရိကန် စမိုအ"
+ },
+ "TL": {
+ "name": "အရှေ့á€á€®á€™á€±á€¬"
+ },
+ "CF": {
+ "name": "အလယ်ပိုင်း အာဖရိက ပြည်ထောင်စု"
+ },
+ "AR": {
+ "name": "အာဂျင်á€á€®á€¸á€”ား"
+ },
+ "AF": {
+ "name": "အာဖဂန်နစ္စá€á€”်"
+ },
+ "AM": {
+ "name": "အာမေနီးယား"
+ },
+ "AW": {
+ "name": "အာရုဘာ"
+ },
+ "AX": {
+ "name": "အာလန်ကျွန်း"
+ },
+ "GQ": {
+ "name": "အီကွေá€á€¬ ဂီရာနာ"
+ },
+ "EC": {
+ "name": "အီကွေဒေါ"
+ },
+ "EG": {
+ "name": "အီဂျစ်"
+ },
+ "IT": {
+ "name": "အီá€á€œá€®"
+ },
+ "ER": {
+ "name": "အီရီá€á€›á€®á€¡á€¬"
+ },
+ "IQ": {
+ "name": "အီရá€á€º"
+ },
+ "IR": {
+ "name": "အီရန်"
+ },
+ "ET": {
+ "name": "အီသီယိုးပီးယား"
+ },
+ "UZ": {
+ "name": "ဥဘက်ကစ္စá€á€”်"
+ },
+ "UY": {
+ "name": "ဥရုဂွေး"
+ },
+ "AL": {
+ "name": "အဲလ်ဘာနီအာ"
+ },
+ "AT": {
+ "name": "ဩစá€á€¼á€®á€¸á€šá€¬á€¸"
+ },
+ "AU": {
+ "name": "ဩစá€á€¼á€±á€¸á€œá€»"
+ },
+ "OM": {
+ "name": "အိုမန်"
+ },
+ "EE": {
+ "name": "အက်စá€á€­á€¯á€¸á€”ီးယား"
+ },
+ "AC": {
+ "name": "အက်စ်စင်ရှီအွန်ကျွန်း"
+ },
+ "IS": {
+ "name": "အိုက်စလန်"
+ },
+ "AO": {
+ "name": "အင်ဂိုလာ"
+ },
+ "ID": {
+ "name": "အင်ဒိုနီးရှား"
+ },
+ "CI": {
+ "name": "အိုင်ဗရီကိုစ့်"
+ },
+ "IE": {
+ "name": "အိုင်ယာလန်"
+ },
+ "IL": {
+ "name": "အစ္စရေး"
+ },
+ "AI": {
+ "name": "အန်ဂွီလာ"
+ },
+ "AQ": {
+ "name": "အန္á€á€¬á€á€­á€€"
+ },
+ "AG": {
+ "name": "အန်á€á€®á€‚ုအာနှင့်ဘာဘုဒါ"
+ },
+ "AD": {
+ "name": "အန်ဒိုရာ"
+ },
+ "IN": {
+ "name": "အိန္ဒိယ"
+ },
+ "DZ": {
+ "name": "အယ်လ်ဂျီးရီးယား"
+ },
+ "SV": {
+ "name": "အယ်လ်ဆာဗေးဒိုး"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/country/naq.json b/library/intl/resources/country/naq.json
new file mode 100644
index 000000000..1d7584f11
--- /dev/null
+++ b/library/intl/resources/country/naq.json
@@ -0,0 +1,761 @@
+{
+ "AF": {
+ "name": "Afghanistanni"
+ },
+ "AX": {
+ "name": "Ã…land Islands"
+ },
+ "AL": {
+ "name": "Albaniab"
+ },
+ "DZ": {
+ "name": "Algeriab"
+ },
+ "AS": {
+ "name": "Americab Samoab"
+ },
+ "US": {
+ "name": "Amerikab"
+ },
+ "AD": {
+ "name": "Andorrab"
+ },
+ "AO": {
+ "name": "Angolab"
+ },
+ "AI": {
+ "name": "Anguillab"
+ },
+ "AQ": {
+ "name": "Antarctica"
+ },
+ "AG": {
+ "name": "Antiguab tsî Barbudab"
+ },
+ "AR": {
+ "name": "Argentinab"
+ },
+ "AM": {
+ "name": "Armeniab"
+ },
+ "AW": {
+ "name": "Arubab"
+ },
+ "AC": {
+ "name": "Ascension Island"
+ },
+ "AU": {
+ "name": "Australieb"
+ },
+ "AT": {
+ "name": "Austriab"
+ },
+ "AZ": {
+ "name": "Azerbaijanni"
+ },
+ "BS": {
+ "name": "Bahamas"
+ },
+ "BH": {
+ "name": "Bahrain"
+ },
+ "BD": {
+ "name": "Banglades"
+ },
+ "BB": {
+ "name": "Barbados"
+ },
+ "BY": {
+ "name": "Belarus"
+ },
+ "BE": {
+ "name": "Belgiummi"
+ },
+ "BZ": {
+ "name": "Belize"
+ },
+ "BJ": {
+ "name": "Benins"
+ },
+ "BM": {
+ "name": "Bermudas"
+ },
+ "BT": {
+ "name": "Bhutans"
+ },
+ "BO": {
+ "name": "Boliviab"
+ },
+ "BA": {
+ "name": "Bosniab tsî Herzegovinab"
+ },
+ "BW": {
+ "name": "Botswanab"
+ },
+ "BR": {
+ "name": "Braziliab"
+ },
+ "IO": {
+ "name": "British Indian Ocean Territory"
+ },
+ "VG": {
+ "name": "British Virgin Islands"
+ },
+ "BN": {
+ "name": "Brunei"
+ },
+ "BG": {
+ "name": "Bulgariab"
+ },
+ "BF": {
+ "name": "Burkina Fasob"
+ },
+ "BI": {
+ "name": "Burundib"
+ },
+ "KH": {
+ "name": "Cambodiab"
+ },
+ "CM": {
+ "name": "Cameroonni"
+ },
+ "IC": {
+ "name": "Canary Islands"
+ },
+ "CV": {
+ "name": "Cape Verde Islands"
+ },
+ "BQ": {
+ "name": "Caribbean Netherlands"
+ },
+ "KY": {
+ "name": "Cayman Islands"
+ },
+ "CF": {
+ "name": "Central African Republiki"
+ },
+ "EA": {
+ "name": "Ceuta & Melilla"
+ },
+ "TD": {
+ "name": "Chadi"
+ },
+ "CL": {
+ "name": "Chilib"
+ },
+ "CN": {
+ "name": "Chinab"
+ },
+ "CX": {
+ "name": "Christmas Island"
+ },
+ "CC": {
+ "name": "Cocos (Keeling) Islands"
+ },
+ "CO": {
+ "name": "Colombiab"
+ },
+ "KM": {
+ "name": "Comoros"
+ },
+ "CG": {
+ "name": "Congob"
+ },
+ "CK": {
+ "name": "Cook Islands"
+ },
+ "CR": {
+ "name": "Costa Rica"
+ },
+ "HR": {
+ "name": "Croatiab"
+ },
+ "CU": {
+ "name": "Cubab"
+ },
+ "CW": {
+ "name": "Curaçao"
+ },
+ "CY": {
+ "name": "Cyprus"
+ },
+ "CZ": {
+ "name": "Czech Republiki"
+ },
+ "CD": {
+ "name": "Democratic Republic of the Congo"
+ },
+ "DK": {
+ "name": "Denmarki"
+ },
+ "DG": {
+ "name": "Diego Garcia"
+ },
+ "DJ": {
+ "name": "Djibouti"
+ },
+ "DM": {
+ "name": "Dominicab"
+ },
+ "DO": {
+ "name": "Dominican Republic"
+ },
+ "DE": {
+ "name": "Duitslandi"
+ },
+ "TL": {
+ "name": "East Timor"
+ },
+ "EC": {
+ "name": "Ecuadori"
+ },
+ "EG": {
+ "name": "Egipteb"
+ },
+ "SV": {
+ "name": "El Salvadori"
+ },
+ "GQ": {
+ "name": "Equatorial Guineab"
+ },
+ "ER": {
+ "name": "Eritreab"
+ },
+ "EE": {
+ "name": "Estoniab"
+ },
+ "ET": {
+ "name": "Ethiopiab"
+ },
+ "FK": {
+ "name": "Falkland Islands"
+ },
+ "FO": {
+ "name": "Faroe Islands"
+ },
+ "FJ": {
+ "name": "Fijib"
+ },
+ "FI": {
+ "name": "Finlandi"
+ },
+ "FR": {
+ "name": "Frankreiki"
+ },
+ "GF": {
+ "name": "French Guiana"
+ },
+ "PF": {
+ "name": "French Polynesia"
+ },
+ "TF": {
+ "name": "French Southern Territories"
+ },
+ "GA": {
+ "name": "Gaboni"
+ },
+ "GM": {
+ "name": "Gambiab"
+ },
+ "GE": {
+ "name": "Georgiab"
+ },
+ "GH": {
+ "name": "Ghanab"
+ },
+ "GI": {
+ "name": "Gibraltar"
+ },
+ "GL": {
+ "name": "Greenland"
+ },
+ "GD": {
+ "name": "Grenada"
+ },
+ "GP": {
+ "name": "Guadeloupe"
+ },
+ "GU": {
+ "name": "Guam"
+ },
+ "GT": {
+ "name": "Guatemala"
+ },
+ "GG": {
+ "name": "Guernsey"
+ },
+ "GW": {
+ "name": "Guinea-Bissau"
+ },
+ "GN": {
+ "name": "Guineab"
+ },
+ "GY": {
+ "name": "Guyana"
+ },
+ "HT": {
+ "name": "Haiti"
+ },
+ "HN": {
+ "name": "Honduras"
+ },
+ "HK": {
+ "name": "Hong Kong SAR China"
+ },
+ "HU": {
+ "name": "Hongareieb"
+ },
+ "IS": {
+ "name": "Iceland"
+ },
+ "IN": {
+ "name": "Indiab"
+ },
+ "ID": {
+ "name": "Indonesiab"
+ },
+ "IR": {
+ "name": "Iranni"
+ },
+ "IQ": {
+ "name": "Iraqi"
+ },
+ "IE": {
+ "name": "Irlandi"
+ },
+ "IM": {
+ "name": "Isle of Man"
+ },
+ "IL": {
+ "name": "Israeli"
+ },
+ "IT": {
+ "name": "Italiab"
+ },
+ "CI": {
+ "name": "Ivoorkusi"
+ },
+ "JM": {
+ "name": "Jamaicab"
+ },
+ "JP": {
+ "name": "Japanni"
+ },
+ "JE": {
+ "name": "Jersey"
+ },
+ "JO": {
+ "name": "Jordanni"
+ },
+ "CA": {
+ "name": "Kanadab"
+ },
+ "KZ": {
+ "name": "Kazakhstanni"
+ },
+ "KE": {
+ "name": "Kenyab"
+ },
+ "KI": {
+ "name": "Kiribati"
+ },
+ "KP": {
+ "name": "Koreab, Noord"
+ },
+ "KR": {
+ "name": "Koreab, Suid"
+ },
+ "XK": {
+ "name": "Kosovo"
+ },
+ "KW": {
+ "name": "Kuwaiti"
+ },
+ "KG": {
+ "name": "Kyrgyzstanni"
+ },
+ "LA": {
+ "name": "Laos"
+ },
+ "LV": {
+ "name": "Latvia"
+ },
+ "LB": {
+ "name": "Lebanonni"
+ },
+ "LS": {
+ "name": "Lesothob"
+ },
+ "LR": {
+ "name": "Liberiab"
+ },
+ "LY": {
+ "name": "Libyab"
+ },
+ "LI": {
+ "name": "Liechtensteinni"
+ },
+ "LT": {
+ "name": "Lithuaniab"
+ },
+ "LU": {
+ "name": "Luxembourgi"
+ },
+ "MO": {
+ "name": "Macau SAR China"
+ },
+ "MK": {
+ "name": "Macedoniab"
+ },
+ "MG": {
+ "name": "Madagascari"
+ },
+ "MW": {
+ "name": "Malawib"
+ },
+ "MY": {
+ "name": "Malaysiab"
+ },
+ "MV": {
+ "name": "Maldives"
+ },
+ "ML": {
+ "name": "Malib"
+ },
+ "MT": {
+ "name": "Malta"
+ },
+ "MH": {
+ "name": "Marshall Islands"
+ },
+ "MQ": {
+ "name": "Martinique"
+ },
+ "MR": {
+ "name": "Mauritania"
+ },
+ "MU": {
+ "name": "Mauritius"
+ },
+ "YT": {
+ "name": "Mayotte"
+ },
+ "MX": {
+ "name": "Mexicob"
+ },
+ "FM": {
+ "name": "Micronesia"
+ },
+ "MD": {
+ "name": "Moldova"
+ },
+ "MC": {
+ "name": "Monaco"
+ },
+ "MN": {
+ "name": "Mongolia"
+ },
+ "ME": {
+ "name": "Montenegro"
+ },
+ "MS": {
+ "name": "Montserrat"
+ },
+ "MA": {
+ "name": "Morocco"
+ },
+ "MZ": {
+ "name": "Mozambiki"
+ },
+ "MM": {
+ "name": "Myanmar"
+ },
+ "NA": {
+ "name": "Namibiab"
+ },
+ "NR": {
+ "name": "Nauru"
+ },
+ "NP": {
+ "name": "Nepali"
+ },
+ "NL": {
+ "name": "Netherlands"
+ },
+ "NC": {
+ "name": "New Caledonia"
+ },
+ "NZ": {
+ "name": "New Zealandi"
+ },
+ "NI": {
+ "name": "Nicaraguab"
+ },
+ "NE": {
+ "name": "Nigeri"
+ },
+ "NG": {
+ "name": "Nigerieb"
+ },
+ "NU": {
+ "name": "Niue"
+ },
+ "NO": {
+ "name": "Noorweeb"
+ },
+ "NF": {
+ "name": "Norfolk Island"
+ },
+ "MP": {
+ "name": "Northern Mariana Islands"
+ },
+ "OM": {
+ "name": "Oman"
+ },
+ "PK": {
+ "name": "Pakistanni"
+ },
+ "PW": {
+ "name": "Palau"
+ },
+ "PS": {
+ "name": "Palestinian West Bank and Gaza"
+ },
+ "PA": {
+ "name": "Panama"
+ },
+ "PG": {
+ "name": "Papua New Guineab"
+ },
+ "PY": {
+ "name": "Paraguaib"
+ },
+ "PE": {
+ "name": "Perub"
+ },
+ "PH": {
+ "name": "Philippinni"
+ },
+ "PN": {
+ "name": "Pitcairn"
+ },
+ "PL": {
+ "name": "Polandi"
+ },
+ "PT": {
+ "name": "Portugali"
+ },
+ "PR": {
+ "name": "Puerto Rico"
+ },
+ "QA": {
+ "name": "Qatar"
+ },
+ "RU": {
+ "name": "Rasiab"
+ },
+ "RE": {
+ "name": "Réunion"
+ },
+ "RO": {
+ "name": "Romania"
+ },
+ "RW": {
+ "name": "Rwandab"
+ },
+ "SH": {
+ "name": "Saint Helena"
+ },
+ "KN": {
+ "name": "Saint Kitts and Nevis"
+ },
+ "LC": {
+ "name": "Saint Lucia"
+ },
+ "PM": {
+ "name": "Saint Pierre and Miquelon"
+ },
+ "VC": {
+ "name": "Saint Vincent and the Grenadines"
+ },
+ "WS": {
+ "name": "Samoa"
+ },
+ "SM": {
+ "name": "San Marino"
+ },
+ "ST": {
+ "name": "São Tomé and Príncipe"
+ },
+ "SA": {
+ "name": "Saudi Arabiab"
+ },
+ "SN": {
+ "name": "Senegali"
+ },
+ "RS": {
+ "name": "Serbia"
+ },
+ "SC": {
+ "name": "Seychelles"
+ },
+ "SL": {
+ "name": "Sierra Leone"
+ },
+ "SG": {
+ "name": "Singapore"
+ },
+ "SX": {
+ "name": "Sint Maarten"
+ },
+ "SK": {
+ "name": "Slovakia"
+ },
+ "SI": {
+ "name": "Slovenia"
+ },
+ "SB": {
+ "name": "Solomon Islands"
+ },
+ "SO": {
+ "name": "Somaliab"
+ },
+ "GS": {
+ "name": "South Georgia & South Sandwich Islands"
+ },
+ "SS": {
+ "name": "South Sudan"
+ },
+ "ES": {
+ "name": "Spanieb"
+ },
+ "LK": {
+ "name": "Sri Lankab"
+ },
+ "BL": {
+ "name": "St. Barthélemy"
+ },
+ "MF": {
+ "name": "St. Martin"
+ },
+ "SD": {
+ "name": "Sudanni"
+ },
+ "ZA": {
+ "name": "Suid Afrikab"
+ },
+ "SR": {
+ "name": "Suriname"
+ },
+ "SJ": {
+ "name": "Svalbard & Jan Mayen"
+ },
+ "SZ": {
+ "name": "Swazilandi"
+ },
+ "SE": {
+ "name": "Swedeb"
+ },
+ "CH": {
+ "name": "Switzerlandi"
+ },
+ "SY": {
+ "name": "Syriab"
+ },
+ "TW": {
+ "name": "Taiwan"
+ },
+ "TJ": {
+ "name": "Tajikistan"
+ },
+ "TZ": {
+ "name": "Tanzaniab"
+ },
+ "TH": {
+ "name": "Thailandi"
+ },
+ "TG": {
+ "name": "Togob"
+ },
+ "TK": {
+ "name": "Tokelau"
+ },
+ "TO": {
+ "name": "Tonga"
+ },
+ "TT": {
+ "name": "Trinidad and Tobago"
+ },
+ "TA": {
+ "name": "Tristan da Cunha"
+ },
+ "TN": {
+ "name": "Tunisiab"
+ },
+ "TR": {
+ "name": "Turkeieb"
+ },
+ "TM": {
+ "name": "Turkmenistan"
+ },
+ "TC": {
+ "name": "Turks and Caicos Islands"
+ },
+ "TV": {
+ "name": "Tuvalu"
+ },
+ "UM": {
+ "name": "U.S. Outlying Islands"
+ },
+ "VI": {
+ "name": "U.S. Virgin Islands"
+ },
+ "UG": {
+ "name": "Ugandab"
+ },
+ "UA": {
+ "name": "Ukraine"
+ },
+ "AE": {
+ "name": "United Arab Emirates"
+ },
+ "GB": {
+ "name": "United Kingdom"
+ },
+ "UY": {
+ "name": "Uruguaib"
+ },
+ "UZ": {
+ "name": "Uzbekistan"
+ },
+ "VU": {
+ "name": "Vanuatu"
+ },
+ "VA": {
+ "name": "Vatican State"
+ },
+ "VE": {
+ "name": "Venezuelab"
+ },
+ "VN": {
+ "name": "Vietnammi"
+ },
+ "WF": {
+ "name": "Wallis and Futuna"
+ },
+ "EH": {
+ "name": "Western Sahara"
+ },
+ "GR": {
+ "name": "Xrikelandi"
+ },
+ "YE": {
+ "name": "Yemen"
+ },
+ "ZM": {
+ "name": "Zambiab"
+ },
+ "ZW": {
+ "name": "Zimbabweb"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/country/nb.json b/library/intl/resources/country/nb.json
new file mode 100644
index 000000000..0e4154e07
--- /dev/null
+++ b/library/intl/resources/country/nb.json
@@ -0,0 +1,761 @@
+{
+ "AF": {
+ "name": "Afghanistan"
+ },
+ "AL": {
+ "name": "Albania"
+ },
+ "DZ": {
+ "name": "Algerie"
+ },
+ "AS": {
+ "name": "Amerikansk Samoa"
+ },
+ "AD": {
+ "name": "Andorra"
+ },
+ "AO": {
+ "name": "Angola"
+ },
+ "AI": {
+ "name": "Anguilla"
+ },
+ "AQ": {
+ "name": "Antarktis"
+ },
+ "AG": {
+ "name": "Antigua og Barbuda"
+ },
+ "AR": {
+ "name": "Argentina"
+ },
+ "AM": {
+ "name": "Armenia"
+ },
+ "AW": {
+ "name": "Aruba"
+ },
+ "AC": {
+ "name": "Ascension"
+ },
+ "AZ": {
+ "name": "Aserbajdsjan"
+ },
+ "AU": {
+ "name": "Australia"
+ },
+ "BS": {
+ "name": "Bahamas"
+ },
+ "BH": {
+ "name": "Bahrain"
+ },
+ "BD": {
+ "name": "Bangladesh"
+ },
+ "BB": {
+ "name": "Barbados"
+ },
+ "BE": {
+ "name": "Belgia"
+ },
+ "BZ": {
+ "name": "Belize"
+ },
+ "BJ": {
+ "name": "Benin"
+ },
+ "BM": {
+ "name": "Bermuda"
+ },
+ "BT": {
+ "name": "Bhutan"
+ },
+ "BO": {
+ "name": "Bolivia"
+ },
+ "BA": {
+ "name": "Bosnia-Hercegovina"
+ },
+ "BW": {
+ "name": "Botswana"
+ },
+ "BR": {
+ "name": "Brasil"
+ },
+ "IO": {
+ "name": "Britiske territorier i Indiahavet"
+ },
+ "BN": {
+ "name": "Brunei"
+ },
+ "BG": {
+ "name": "Bulgaria"
+ },
+ "BF": {
+ "name": "Burkina Faso"
+ },
+ "BI": {
+ "name": "Burundi"
+ },
+ "CA": {
+ "name": "Canada"
+ },
+ "KY": {
+ "name": "Caymanøyene"
+ },
+ "EA": {
+ "name": "Ceuta og Melilla"
+ },
+ "CL": {
+ "name": "Chile"
+ },
+ "CX": {
+ "name": "Christmasøya"
+ },
+ "CO": {
+ "name": "Colombia"
+ },
+ "CK": {
+ "name": "Cookøyene"
+ },
+ "CR": {
+ "name": "Costa Rica"
+ },
+ "CU": {
+ "name": "Cuba"
+ },
+ "CW": {
+ "name": "Curaçao"
+ },
+ "DK": {
+ "name": "Danmark"
+ },
+ "VI": {
+ "name": "De amerikanske jomfruøyene"
+ },
+ "VG": {
+ "name": "De britiske jomfruøyene"
+ },
+ "AE": {
+ "name": "De forente arabiske emirater"
+ },
+ "TF": {
+ "name": "De franske sørterritorier"
+ },
+ "DO": {
+ "name": "Den dominikanske republikk"
+ },
+ "CF": {
+ "name": "Den sentralafrikanske republikk"
+ },
+ "PS": {
+ "name": "Det palestinske området"
+ },
+ "DG": {
+ "name": "Diego Garcia"
+ },
+ "DJ": {
+ "name": "Djibouti"
+ },
+ "DM": {
+ "name": "Dominica"
+ },
+ "EC": {
+ "name": "Ecuador"
+ },
+ "EG": {
+ "name": "Egypt"
+ },
+ "GQ": {
+ "name": "Ekvatorial-Guinea"
+ },
+ "SV": {
+ "name": "El Salvador"
+ },
+ "CI": {
+ "name": "Elfenbenskysten"
+ },
+ "ER": {
+ "name": "Eritrea"
+ },
+ "EE": {
+ "name": "Estland"
+ },
+ "ET": {
+ "name": "Etiopia"
+ },
+ "FK": {
+ "name": "Falklandsøyene"
+ },
+ "FJ": {
+ "name": "Fiji"
+ },
+ "PH": {
+ "name": "Filippinene"
+ },
+ "FI": {
+ "name": "Finland"
+ },
+ "FR": {
+ "name": "Frankrike"
+ },
+ "GF": {
+ "name": "Fransk Guyana"
+ },
+ "PF": {
+ "name": "Fransk Polynesia"
+ },
+ "FO": {
+ "name": "Færøyene"
+ },
+ "GA": {
+ "name": "Gabon"
+ },
+ "GM": {
+ "name": "Gambia"
+ },
+ "GE": {
+ "name": "Georgia"
+ },
+ "GH": {
+ "name": "Ghana"
+ },
+ "GI": {
+ "name": "Gibraltar"
+ },
+ "GD": {
+ "name": "Grenada"
+ },
+ "GL": {
+ "name": "Grønland"
+ },
+ "GP": {
+ "name": "Guadeloupe"
+ },
+ "GU": {
+ "name": "Guam"
+ },
+ "GT": {
+ "name": "Guatemala"
+ },
+ "GG": {
+ "name": "Guernsey"
+ },
+ "GN": {
+ "name": "Guinea"
+ },
+ "GW": {
+ "name": "Guinea-Bissau"
+ },
+ "GY": {
+ "name": "Guyana"
+ },
+ "HT": {
+ "name": "Haiti"
+ },
+ "GR": {
+ "name": "Hellas"
+ },
+ "HN": {
+ "name": "Honduras"
+ },
+ "HK": {
+ "name": "Hongkong S.A.R. Kina"
+ },
+ "BY": {
+ "name": "Hviterussland"
+ },
+ "IN": {
+ "name": "India"
+ },
+ "ID": {
+ "name": "Indonesia"
+ },
+ "IQ": {
+ "name": "Irak"
+ },
+ "IR": {
+ "name": "Iran"
+ },
+ "IE": {
+ "name": "Irland"
+ },
+ "IS": {
+ "name": "Island"
+ },
+ "IL": {
+ "name": "Israel"
+ },
+ "IT": {
+ "name": "Italia"
+ },
+ "JM": {
+ "name": "Jamaica"
+ },
+ "JP": {
+ "name": "Japan"
+ },
+ "YE": {
+ "name": "Jemen"
+ },
+ "JE": {
+ "name": "Jersey"
+ },
+ "JO": {
+ "name": "Jordan"
+ },
+ "KH": {
+ "name": "Kambodsja"
+ },
+ "CM": {
+ "name": "Kamerun"
+ },
+ "IC": {
+ "name": "Kanariøyene"
+ },
+ "CV": {
+ "name": "Kapp Verde"
+ },
+ "BQ": {
+ "name": "Karibisk Nederland"
+ },
+ "KZ": {
+ "name": "Kasakhstan"
+ },
+ "KE": {
+ "name": "Kenya"
+ },
+ "CN": {
+ "name": "Kina"
+ },
+ "KG": {
+ "name": "Kirgisistan"
+ },
+ "KI": {
+ "name": "Kiribati"
+ },
+ "CC": {
+ "name": "Kokosøyene"
+ },
+ "KM": {
+ "name": "Komorene"
+ },
+ "CG": {
+ "name": "Kongo-Brazzaville"
+ },
+ "CD": {
+ "name": "Kongo-Kinshasa"
+ },
+ "XK": {
+ "name": "Kosovo"
+ },
+ "HR": {
+ "name": "Kroatia"
+ },
+ "KW": {
+ "name": "Kuwait"
+ },
+ "CY": {
+ "name": "Kypros"
+ },
+ "LA": {
+ "name": "Laos"
+ },
+ "LV": {
+ "name": "Latvia"
+ },
+ "LS": {
+ "name": "Lesotho"
+ },
+ "LB": {
+ "name": "Libanon"
+ },
+ "LR": {
+ "name": "Liberia"
+ },
+ "LY": {
+ "name": "Libya"
+ },
+ "LI": {
+ "name": "Liechtenstein"
+ },
+ "LT": {
+ "name": "Litauen"
+ },
+ "LU": {
+ "name": "Luxemburg"
+ },
+ "MO": {
+ "name": "Macao S.A.R. Kina"
+ },
+ "MG": {
+ "name": "Madagaskar"
+ },
+ "MK": {
+ "name": "Makedonia"
+ },
+ "MW": {
+ "name": "Malawi"
+ },
+ "MY": {
+ "name": "Malaysia"
+ },
+ "MV": {
+ "name": "Maldivene"
+ },
+ "ML": {
+ "name": "Mali"
+ },
+ "MT": {
+ "name": "Malta"
+ },
+ "IM": {
+ "name": "Man"
+ },
+ "MA": {
+ "name": "Marokko"
+ },
+ "MH": {
+ "name": "Marshalløyene"
+ },
+ "MQ": {
+ "name": "Martinique"
+ },
+ "MR": {
+ "name": "Mauritania"
+ },
+ "MU": {
+ "name": "Mauritius"
+ },
+ "YT": {
+ "name": "Mayotte"
+ },
+ "MX": {
+ "name": "Mexico"
+ },
+ "FM": {
+ "name": "Mikronesiaføderasjonen"
+ },
+ "MD": {
+ "name": "Moldova"
+ },
+ "MC": {
+ "name": "Monaco"
+ },
+ "MN": {
+ "name": "Mongolia"
+ },
+ "ME": {
+ "name": "Montenegro"
+ },
+ "MS": {
+ "name": "Montserrat"
+ },
+ "MZ": {
+ "name": "Mosambik"
+ },
+ "MM": {
+ "name": "Myanmar (Burma)"
+ },
+ "NA": {
+ "name": "Namibia"
+ },
+ "NR": {
+ "name": "Nauru"
+ },
+ "NL": {
+ "name": "Nederland"
+ },
+ "NP": {
+ "name": "Nepal"
+ },
+ "NZ": {
+ "name": "New Zealand"
+ },
+ "NI": {
+ "name": "Nicaragua"
+ },
+ "NE": {
+ "name": "Niger"
+ },
+ "NG": {
+ "name": "Nigeria"
+ },
+ "NU": {
+ "name": "Niue"
+ },
+ "KP": {
+ "name": "Nord-Korea"
+ },
+ "MP": {
+ "name": "Nord-Marianene"
+ },
+ "NF": {
+ "name": "Norfolkøya"
+ },
+ "NO": {
+ "name": "Norge"
+ },
+ "NC": {
+ "name": "Ny-Caledonia"
+ },
+ "OM": {
+ "name": "Oman"
+ },
+ "PK": {
+ "name": "Pakistan"
+ },
+ "PW": {
+ "name": "Palau"
+ },
+ "PA": {
+ "name": "Panama"
+ },
+ "PG": {
+ "name": "Papua Ny-Guinea"
+ },
+ "PY": {
+ "name": "Paraguay"
+ },
+ "PE": {
+ "name": "Peru"
+ },
+ "PN": {
+ "name": "Pitcairn"
+ },
+ "PL": {
+ "name": "Polen"
+ },
+ "PT": {
+ "name": "Portugal"
+ },
+ "PR": {
+ "name": "Puerto Rico"
+ },
+ "QA": {
+ "name": "Qatar"
+ },
+ "RE": {
+ "name": "Réunion"
+ },
+ "RO": {
+ "name": "Romania"
+ },
+ "RU": {
+ "name": "Russland"
+ },
+ "RW": {
+ "name": "Rwanda"
+ },
+ "BL": {
+ "name": "Saint-Barthélemy"
+ },
+ "MF": {
+ "name": "Saint-Martin"
+ },
+ "SB": {
+ "name": "Salomonøyene"
+ },
+ "WS": {
+ "name": "Samoa"
+ },
+ "SM": {
+ "name": "San Marino"
+ },
+ "ST": {
+ "name": "São Tomé og Príncipe"
+ },
+ "SA": {
+ "name": "Saudi-Arabia"
+ },
+ "SN": {
+ "name": "Senegal"
+ },
+ "RS": {
+ "name": "Serbia"
+ },
+ "SC": {
+ "name": "Seychellene"
+ },
+ "SL": {
+ "name": "Sierra Leone"
+ },
+ "SG": {
+ "name": "Singapore"
+ },
+ "SX": {
+ "name": "Sint Maarten"
+ },
+ "SK": {
+ "name": "Slovakia"
+ },
+ "SI": {
+ "name": "Slovenia"
+ },
+ "SO": {
+ "name": "Somalia"
+ },
+ "ES": {
+ "name": "Spania"
+ },
+ "LK": {
+ "name": "Sri Lanka"
+ },
+ "SH": {
+ "name": "St. Helena"
+ },
+ "KN": {
+ "name": "St. Kitts og Nevis"
+ },
+ "LC": {
+ "name": "St. Lucia"
+ },
+ "PM": {
+ "name": "St. Pierre og Miquelon"
+ },
+ "VC": {
+ "name": "St. Vincent og Grenadinene"
+ },
+ "GB": {
+ "name": "Storbritannia"
+ },
+ "SD": {
+ "name": "Sudan"
+ },
+ "SR": {
+ "name": "Surinam"
+ },
+ "SJ": {
+ "name": "Svalbard og Jan Mayen"
+ },
+ "CH": {
+ "name": "Sveits"
+ },
+ "SE": {
+ "name": "Sverige"
+ },
+ "SZ": {
+ "name": "Swaziland"
+ },
+ "SY": {
+ "name": "Syria"
+ },
+ "ZA": {
+ "name": "Sør-Afrika"
+ },
+ "GS": {
+ "name": "Sør-Georgia og Sør-Sandwichøyene"
+ },
+ "KR": {
+ "name": "Sør-Korea"
+ },
+ "SS": {
+ "name": "Sør-Sudan"
+ },
+ "TJ": {
+ "name": "Tadsjikistan"
+ },
+ "TW": {
+ "name": "Taiwan"
+ },
+ "TZ": {
+ "name": "Tanzania"
+ },
+ "TH": {
+ "name": "Thailand"
+ },
+ "TG": {
+ "name": "Togo"
+ },
+ "TK": {
+ "name": "Tokelau"
+ },
+ "TO": {
+ "name": "Tonga"
+ },
+ "TT": {
+ "name": "Trinidad og Tobago"
+ },
+ "TA": {
+ "name": "Tristan da Cunha"
+ },
+ "TD": {
+ "name": "Tsjad"
+ },
+ "CZ": {
+ "name": "Tsjekkia"
+ },
+ "TN": {
+ "name": "Tunisia"
+ },
+ "TM": {
+ "name": "Turkmenistan"
+ },
+ "TC": {
+ "name": "Turks- og Caicosøyene"
+ },
+ "TV": {
+ "name": "Tuvalu"
+ },
+ "TR": {
+ "name": "Tyrkia"
+ },
+ "DE": {
+ "name": "Tyskland"
+ },
+ "UG": {
+ "name": "Uganda"
+ },
+ "UA": {
+ "name": "Ukraina"
+ },
+ "HU": {
+ "name": "Ungarn"
+ },
+ "UY": {
+ "name": "Uruguay"
+ },
+ "US": {
+ "name": "USA"
+ },
+ "UM": {
+ "name": "USAs ytre øyer"
+ },
+ "UZ": {
+ "name": "Usbekistan"
+ },
+ "VU": {
+ "name": "Vanuatu"
+ },
+ "VA": {
+ "name": "Vatikanstaten"
+ },
+ "VE": {
+ "name": "Venezuela"
+ },
+ "EH": {
+ "name": "Vest-Sahara"
+ },
+ "VN": {
+ "name": "Vietnam"
+ },
+ "WF": {
+ "name": "Wallis og Futuna"
+ },
+ "ZM": {
+ "name": "Zambia"
+ },
+ "ZW": {
+ "name": "Zimbabwe"
+ },
+ "TL": {
+ "name": "Øst-Timor"
+ },
+ "AT": {
+ "name": "Østerrike"
+ },
+ "AX": {
+ "name": "Ã…land"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/country/nd.json b/library/intl/resources/country/nd.json
new file mode 100644
index 000000000..8fe088957
--- /dev/null
+++ b/library/intl/resources/country/nd.json
@@ -0,0 +1,761 @@
+{
+ "AF": {
+ "name": "Afghanistan"
+ },
+ "AR": {
+ "name": "Ajentina"
+ },
+ "AX": {
+ "name": "Ã…land Islands"
+ },
+ "AL": {
+ "name": "Albania"
+ },
+ "DZ": {
+ "name": "Aljeriya"
+ },
+ "US": {
+ "name": "Amelika"
+ },
+ "AD": {
+ "name": "Andora"
+ },
+ "AO": {
+ "name": "Angola"
+ },
+ "AI": {
+ "name": "Anguilla"
+ },
+ "AQ": {
+ "name": "Antarctica"
+ },
+ "AG": {
+ "name": "Antigua le Barbuda"
+ },
+ "AM": {
+ "name": "Armenia"
+ },
+ "AW": {
+ "name": "Arubha"
+ },
+ "AC": {
+ "name": "Ascension Island"
+ },
+ "AU": {
+ "name": "Australia"
+ },
+ "AT": {
+ "name": "Austria"
+ },
+ "AZ": {
+ "name": "Azerbaijan"
+ },
+ "BB": {
+ "name": "Bhabhadosi"
+ },
+ "BS": {
+ "name": "Bhahamas"
+ },
+ "BH": {
+ "name": "Bhahareni"
+ },
+ "BD": {
+ "name": "Bhangiladeshi"
+ },
+ "BY": {
+ "name": "Bhelarusi"
+ },
+ "BE": {
+ "name": "Bhelgium"
+ },
+ "BZ": {
+ "name": "Bhelize"
+ },
+ "BM": {
+ "name": "Bhemuda"
+ },
+ "BJ": {
+ "name": "Bhenini"
+ },
+ "BO": {
+ "name": "Bholiviya"
+ },
+ "BA": {
+ "name": "Bhosnia le Herzegovina"
+ },
+ "BF": {
+ "name": "Bhukina Faso"
+ },
+ "BG": {
+ "name": "Bhulgariya"
+ },
+ "BI": {
+ "name": "Bhurundi"
+ },
+ "BT": {
+ "name": "Bhutani"
+ },
+ "BW": {
+ "name": "Botswana"
+ },
+ "BR": {
+ "name": "Brazili"
+ },
+ "IO": {
+ "name": "British Indian Ocean Territory"
+ },
+ "VG": {
+ "name": "British Virgin Islands"
+ },
+ "BN": {
+ "name": "Brunei"
+ },
+ "KH": {
+ "name": "Cambodia"
+ },
+ "IC": {
+ "name": "Canary Islands"
+ },
+ "CV": {
+ "name": "Cape Verde Islands"
+ },
+ "BQ": {
+ "name": "Caribbean Netherlands"
+ },
+ "KY": {
+ "name": "Cayman Islands"
+ },
+ "CF": {
+ "name": "Central African Republic"
+ },
+ "EA": {
+ "name": "Ceuta & Melilla"
+ },
+ "TD": {
+ "name": "Chadi"
+ },
+ "CL": {
+ "name": "Chile"
+ },
+ "CN": {
+ "name": "China"
+ },
+ "CX": {
+ "name": "Christmas Island"
+ },
+ "CC": {
+ "name": "Cocos (Keeling) Islands"
+ },
+ "CK": {
+ "name": "Cook Islands"
+ },
+ "HR": {
+ "name": "Croatia"
+ },
+ "CU": {
+ "name": "Cuba"
+ },
+ "CW": {
+ "name": "Curaçao"
+ },
+ "CY": {
+ "name": "Cyprus"
+ },
+ "CZ": {
+ "name": "Czech Republic"
+ },
+ "CD": {
+ "name": "Democratic Republic of the Congo"
+ },
+ "DK": {
+ "name": "Denmakhi"
+ },
+ "DG": {
+ "name": "Diego Garcia"
+ },
+ "DJ": {
+ "name": "Djibouti"
+ },
+ "DO": {
+ "name": "Dominican Republic"
+ },
+ "DM": {
+ "name": "Dominikha"
+ },
+ "TL": {
+ "name": "East Timor"
+ },
+ "EC": {
+ "name": "Ecuador"
+ },
+ "EG": {
+ "name": "Egypt"
+ },
+ "SV": {
+ "name": "El Salvador"
+ },
+ "GQ": {
+ "name": "Equatorial Guinea"
+ },
+ "ER": {
+ "name": "Eritrea"
+ },
+ "EE": {
+ "name": "Estonia"
+ },
+ "ET": {
+ "name": "Ethiopia"
+ },
+ "FK": {
+ "name": "Falkland Islands"
+ },
+ "FO": {
+ "name": "Faroe Islands"
+ },
+ "FJ": {
+ "name": "Fiji"
+ },
+ "FI": {
+ "name": "Finland"
+ },
+ "TF": {
+ "name": "French Southern Territories"
+ },
+ "FR": {
+ "name": "Furansi"
+ },
+ "GA": {
+ "name": "Gabhoni"
+ },
+ "GM": {
+ "name": "Gambiya"
+ },
+ "GE": {
+ "name": "Georgia"
+ },
+ "DE": {
+ "name": "Germany"
+ },
+ "GH": {
+ "name": "Ghana"
+ },
+ "GI": {
+ "name": "Gibraltar"
+ },
+ "GR": {
+ "name": "Greece"
+ },
+ "GL": {
+ "name": "Greenland"
+ },
+ "GD": {
+ "name": "Grenada"
+ },
+ "GP": {
+ "name": "Guadeloupe"
+ },
+ "GU": {
+ "name": "Guam"
+ },
+ "GT": {
+ "name": "Guatemala"
+ },
+ "GG": {
+ "name": "Guernsey"
+ },
+ "GN": {
+ "name": "Guinea"
+ },
+ "GW": {
+ "name": "Guinea-Bissau"
+ },
+ "GY": {
+ "name": "Guyana"
+ },
+ "GF": {
+ "name": "Gwiyana ye Furansi"
+ },
+ "HT": {
+ "name": "Hayiti"
+ },
+ "HN": {
+ "name": "Honduras"
+ },
+ "HK": {
+ "name": "Hong Kong SAR China"
+ },
+ "HU": {
+ "name": "Hungary"
+ },
+ "IS": {
+ "name": "Iceland"
+ },
+ "IN": {
+ "name": "Indiya"
+ },
+ "ID": {
+ "name": "Indonesiya"
+ },
+ "IQ": {
+ "name": "Iraki"
+ },
+ "IR": {
+ "name": "Iran"
+ },
+ "IE": {
+ "name": "Ireland"
+ },
+ "IM": {
+ "name": "Isle of Man"
+ },
+ "IL": {
+ "name": "Isuraeli"
+ },
+ "IT": {
+ "name": "Itali"
+ },
+ "CI": {
+ "name": "Ivory Coast"
+ },
+ "JM": {
+ "name": "Jamaica"
+ },
+ "JP": {
+ "name": "Japan"
+ },
+ "JE": {
+ "name": "Jersey"
+ },
+ "JO": {
+ "name": "Jodani"
+ },
+ "QA": {
+ "name": "Kathari"
+ },
+ "KZ": {
+ "name": "Kazakhstan"
+ },
+ "CM": {
+ "name": "Khameruni"
+ },
+ "CA": {
+ "name": "Khanada"
+ },
+ "KE": {
+ "name": "Khenya"
+ },
+ "KI": {
+ "name": "Khiribati"
+ },
+ "CO": {
+ "name": "Kholombiya"
+ },
+ "KM": {
+ "name": "Khomoro"
+ },
+ "CG": {
+ "name": "Khongo"
+ },
+ "CR": {
+ "name": "Khosta Rikha"
+ },
+ "KW": {
+ "name": "Khuweiti"
+ },
+ "XK": {
+ "name": "Kosovo"
+ },
+ "KG": {
+ "name": "Kyrgyzstan"
+ },
+ "LA": {
+ "name": "Laos"
+ },
+ "LV": {
+ "name": "Latvia"
+ },
+ "LB": {
+ "name": "Lebhanoni"
+ },
+ "LS": {
+ "name": "Lesotho"
+ },
+ "LR": {
+ "name": "Libheriya"
+ },
+ "LY": {
+ "name": "Libhiya"
+ },
+ "LI": {
+ "name": "Liechtenstein"
+ },
+ "LT": {
+ "name": "Lithuania"
+ },
+ "LU": {
+ "name": "Luxembourg"
+ },
+ "MO": {
+ "name": "Macau SAR China"
+ },
+ "MK": {
+ "name": "Macedonia"
+ },
+ "MG": {
+ "name": "Madagaska"
+ },
+ "MW": {
+ "name": "Malawi"
+ },
+ "MV": {
+ "name": "Maldives"
+ },
+ "MY": {
+ "name": "Malezhiya"
+ },
+ "ML": {
+ "name": "Mali"
+ },
+ "MT": {
+ "name": "Malta"
+ },
+ "MH": {
+ "name": "Marshall Islands"
+ },
+ "MQ": {
+ "name": "Martinique"
+ },
+ "MR": {
+ "name": "Mauritania"
+ },
+ "MU": {
+ "name": "Mauritius"
+ },
+ "YT": {
+ "name": "Mayotte"
+ },
+ "MX": {
+ "name": "Meksikho"
+ },
+ "FM": {
+ "name": "Micronesia"
+ },
+ "MD": {
+ "name": "Moldova"
+ },
+ "MC": {
+ "name": "Monakho"
+ },
+ "MN": {
+ "name": "Mongolia"
+ },
+ "ME": {
+ "name": "Montenegro"
+ },
+ "MS": {
+ "name": "Montserrat"
+ },
+ "MA": {
+ "name": "Morokho"
+ },
+ "MZ": {
+ "name": "Mozambique"
+ },
+ "MM": {
+ "name": "Myanmar"
+ },
+ "ZA": {
+ "name": "Mzansi ye Afrika"
+ },
+ "NA": {
+ "name": "Namibhiya"
+ },
+ "NR": {
+ "name": "Nauru"
+ },
+ "NP": {
+ "name": "Nephali"
+ },
+ "NL": {
+ "name": "Netherlands"
+ },
+ "NC": {
+ "name": "New Caledonia"
+ },
+ "NZ": {
+ "name": "New Zealand"
+ },
+ "NI": {
+ "name": "Nicaragua"
+ },
+ "NE": {
+ "name": "Niger"
+ },
+ "NG": {
+ "name": "Nigeriya"
+ },
+ "NU": {
+ "name": "Niue"
+ },
+ "NF": {
+ "name": "Norfolk Island"
+ },
+ "KP": {
+ "name": "North Korea"
+ },
+ "MP": {
+ "name": "Northern Mariana Islands"
+ },
+ "NO": {
+ "name": "Noweyi"
+ },
+ "OM": {
+ "name": "Omani"
+ },
+ "PW": {
+ "name": "Palau"
+ },
+ "PS": {
+ "name": "Palestinian West Bank and Gaza"
+ },
+ "PA": {
+ "name": "Panama"
+ },
+ "PG": {
+ "name": "Papua New Guinea"
+ },
+ "PY": {
+ "name": "Paraguay"
+ },
+ "PK": {
+ "name": "Phakistani"
+ },
+ "PE": {
+ "name": "Pheru"
+ },
+ "PH": {
+ "name": "Philippines"
+ },
+ "PL": {
+ "name": "Pholandi"
+ },
+ "PF": {
+ "name": "Pholinesiya ye Fulansi"
+ },
+ "PN": {
+ "name": "Pitcairn"
+ },
+ "PT": {
+ "name": "Portugal"
+ },
+ "PR": {
+ "name": "Puerto Rico"
+ },
+ "RU": {
+ "name": "Rashiya"
+ },
+ "RE": {
+ "name": "Réunion"
+ },
+ "RO": {
+ "name": "Romania"
+ },
+ "RW": {
+ "name": "Ruwanda"
+ },
+ "SH": {
+ "name": "Saint Helena"
+ },
+ "KN": {
+ "name": "Saint Kitts and Nevis"
+ },
+ "LC": {
+ "name": "Saint Lucia"
+ },
+ "PM": {
+ "name": "Saint Pierre and Miquelon"
+ },
+ "VC": {
+ "name": "Saint Vincent and the Grenadines"
+ },
+ "AS": {
+ "name": "Samoa ye Amelika"
+ },
+ "WS": {
+ "name": "Samowa"
+ },
+ "SM": {
+ "name": "San Marino"
+ },
+ "ST": {
+ "name": "São Tomé and Príncipe"
+ },
+ "SA": {
+ "name": "Saudi Arabia"
+ },
+ "SN": {
+ "name": "Senegali"
+ },
+ "RS": {
+ "name": "Serbia"
+ },
+ "SC": {
+ "name": "Seychelles"
+ },
+ "SL": {
+ "name": "Sierra Leone"
+ },
+ "SG": {
+ "name": "Singapore"
+ },
+ "SX": {
+ "name": "Sint Maarten"
+ },
+ "SK": {
+ "name": "Slovakia"
+ },
+ "SI": {
+ "name": "Slovenia"
+ },
+ "SB": {
+ "name": "Solomon Islands"
+ },
+ "SO": {
+ "name": "Somaliya"
+ },
+ "GS": {
+ "name": "South Georgia & South Sandwich Islands"
+ },
+ "KR": {
+ "name": "South Korea"
+ },
+ "SS": {
+ "name": "South Sudan"
+ },
+ "ES": {
+ "name": "Spain"
+ },
+ "LK": {
+ "name": "Sri Lanka"
+ },
+ "BL": {
+ "name": "St. Barthélemy"
+ },
+ "MF": {
+ "name": "St. Martin"
+ },
+ "SD": {
+ "name": "Sudani"
+ },
+ "SR": {
+ "name": "Suriname"
+ },
+ "SJ": {
+ "name": "Svalbard & Jan Mayen"
+ },
+ "SZ": {
+ "name": "Swaziland"
+ },
+ "SE": {
+ "name": "Sweden"
+ },
+ "CH": {
+ "name": "Switzerland"
+ },
+ "SY": {
+ "name": "Syria"
+ },
+ "TJ": {
+ "name": "Tajikistan"
+ },
+ "TZ": {
+ "name": "Tanzaniya"
+ },
+ "TH": {
+ "name": "Thayilandi"
+ },
+ "TW": {
+ "name": "Thayiwani"
+ },
+ "TR": {
+ "name": "Thekhi"
+ },
+ "TG": {
+ "name": "Thogo"
+ },
+ "TK": {
+ "name": "Thokelawu"
+ },
+ "TO": {
+ "name": "Thonga"
+ },
+ "TV": {
+ "name": "Thuvalu"
+ },
+ "TT": {
+ "name": "Trinidad le Tobago"
+ },
+ "TA": {
+ "name": "Tristan da Cunha"
+ },
+ "TN": {
+ "name": "Tunisiya"
+ },
+ "TM": {
+ "name": "Turkmenistan"
+ },
+ "TC": {
+ "name": "Turks and Caicos Islands"
+ },
+ "UM": {
+ "name": "U.S. Outlying Islands"
+ },
+ "VI": {
+ "name": "U.S. Virgin Islands"
+ },
+ "UG": {
+ "name": "Uganda"
+ },
+ "AE": {
+ "name": "United Arab Emirates"
+ },
+ "GB": {
+ "name": "United Kingdom"
+ },
+ "UZ": {
+ "name": "Uzbekistan"
+ },
+ "VA": {
+ "name": "Vatican State"
+ },
+ "VE": {
+ "name": "Venezuela"
+ },
+ "VU": {
+ "name": "Vhanuatu"
+ },
+ "VN": {
+ "name": "Vietnam"
+ },
+ "WF": {
+ "name": "Wallis and Futuna"
+ },
+ "EH": {
+ "name": "Western Sahara"
+ },
+ "YE": {
+ "name": "Yemeni"
+ },
+ "UA": {
+ "name": "Yukreini"
+ },
+ "UY": {
+ "name": "Yurugwai"
+ },
+ "ZM": {
+ "name": "Zambiya"
+ },
+ "ZW": {
+ "name": "Zimbabwe"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/country/ne.json b/library/intl/resources/country/ne.json
new file mode 100644
index 000000000..01db81abb
--- /dev/null
+++ b/library/intl/resources/country/ne.json
@@ -0,0 +1,761 @@
+{
+ "AO": {
+ "name": "अङà¥à¤—ोला"
+ },
+ "AZ": {
+ "name": "अजरबैजान"
+ },
+ "AQ": {
+ "name": "अनà¥à¤Ÿà¤¾à¤°à¤¤à¤¿à¤•à¤¾"
+ },
+ "AD": {
+ "name": "अनà¥à¤¡à¥‹à¤°à¥à¤°à¤¾"
+ },
+ "AF": {
+ "name": "अफगानिसà¥à¤¤à¤¾à¤¨"
+ },
+ "AS": {
+ "name": "अमेरिकी समोआ"
+ },
+ "AR": {
+ "name": "अरà¥à¤œà¥‡à¤¨à¥à¤Ÿà¤¿à¤¨à¤¾"
+ },
+ "AX": {
+ "name": "अलानà¥à¤¡ टापà¥à¤¹à¤°à¥"
+ },
+ "DZ": {
+ "name": "अलà¥à¤œà¥‡à¤°à¤¿à¤¯à¤¾"
+ },
+ "AL": {
+ "name": "अलà¥à¤¬à¤¾à¤¨à¤¿à¤¯à¤¾"
+ },
+ "AT": {
+ "name": "अषà¥à¤Ÿà¥à¤°à¤¿à¤¯à¤¾"
+ },
+ "AU": {
+ "name": "अषà¥à¤Ÿà¥à¤°à¥‡à¤²à¤¿à¤¯à¤¾"
+ },
+ "IM": {
+ "name": "आइजà¥à¤²à¥‡ अफॠमà¥à¤¯à¤¾à¤¨"
+ },
+ "CI": {
+ "name": "आइभरी कोसà¥à¤Ÿ"
+ },
+ "IS": {
+ "name": "आइसà¥à¤²à¥à¤¯à¤¾à¤£à¥à¤¡"
+ },
+ "AI": {
+ "name": "आङà¥à¤—à¥à¤‡à¤²à¤¾"
+ },
+ "IE": {
+ "name": "आयरलà¥à¤¯à¤¾à¤£à¥à¤¡"
+ },
+ "AW": {
+ "name": "आरूबा"
+ },
+ "AM": {
+ "name": "आरà¥à¤®à¥‡à¤¨à¤¿à¤¯à¤¾"
+ },
+ "EC": {
+ "name": "इकà¥à¤µà¤¡à¥‡à¤°"
+ },
+ "IL": {
+ "name": "इजरायल"
+ },
+ "EG": {
+ "name": "इजिपà¥à¤Ÿ"
+ },
+ "IT": {
+ "name": "इटाली"
+ },
+ "ET": {
+ "name": "इथियोपिया"
+ },
+ "ID": {
+ "name": "इनà¥à¤¡à¥‹à¤¨à¥‡à¤¶à¤¿à¤¯à¤¾"
+ },
+ "IQ": {
+ "name": "इराक"
+ },
+ "IR": {
+ "name": "इरान"
+ },
+ "EE": {
+ "name": "इसà¥à¤Ÿà¥‹à¤¨à¤¿à¤¯à¤¾"
+ },
+ "UZ": {
+ "name": "उजà¥à¤¬à¥‡à¤•à¤¿à¤¸à¥à¤¤à¤¾à¤¨"
+ },
+ "KP": {
+ "name": "उतà¥à¤¤à¤° कोरिया"
+ },
+ "MP": {
+ "name": "उतà¥à¤¤à¤°à¥€ मारिआना टापà¥"
+ },
+ "UY": {
+ "name": "उरूगà¥à¤µà¥‡"
+ },
+ "AG": {
+ "name": "à¤à¤¨à¥à¤Ÿà¤¿à¤—à¥à¤† र बारबà¥à¤¡à¤¾"
+ },
+ "ER": {
+ "name": "à¤à¤°à¤¿à¤¤à¥à¤°à¤¿à¤¯à¤¾"
+ },
+ "SV": {
+ "name": "à¤à¤²à¥ सालà¥à¤­à¤¾à¤¡à¥‹à¤°"
+ },
+ "AC": {
+ "name": "à¤à¤¸à¥à¤•à¥‡à¤¨à¥à¤¸à¤¨ टापà¥"
+ },
+ "OM": {
+ "name": "ओमन"
+ },
+ "QA": {
+ "name": "कतार"
+ },
+ "KH": {
+ "name": "कमà¥à¤¬à¥‹à¤¡à¤¿à¤¯à¤¾"
+ },
+ "KZ": {
+ "name": "काजाकसà¥à¤¤à¤¾à¤¨"
+ },
+ "KI": {
+ "name": "किरिबाटी"
+ },
+ "KG": {
+ "name": "किरà¥à¤—िसà¥à¤¥à¤¾à¤¨"
+ },
+ "CK": {
+ "name": "कà¥à¤• टापà¥à¤¹à¤°à¥"
+ },
+ "CW": {
+ "name": "कà¥à¤°à¤¾à¤•à¤¾à¤“"
+ },
+ "KW": {
+ "name": "कà¥à¤µà¥‡à¤¤"
+ },
+ "CF": {
+ "name": "केनà¥à¤¦à¥à¤°à¥€à¤¯ अफà¥à¤°à¤¿à¤•à¥€ गणतनà¥à¤¤à¥à¤°"
+ },
+ "KE": {
+ "name": "केनà¥à¤¯à¤¾"
+ },
+ "CV": {
+ "name": "केप भरà¥à¤¡à¥‡"
+ },
+ "KY": {
+ "name": "केयमान टापà¥"
+ },
+ "CC": {
+ "name": "कोकोस (किलिंग) टापà¥à¤¹à¤°à¥"
+ },
+ "CG": {
+ "name": "कोङà¥à¤—ो - बà¥à¤°à¤¾à¤œà¥à¤œà¤¾à¤­à¤¿à¤²à¥à¤²à¥‡"
+ },
+ "CD": {
+ "name": "कोङà¥à¤—ो-किनà¥à¤¶à¤¾à¤¸à¤¾"
+ },
+ "KM": {
+ "name": "कोमोरोस"
+ },
+ "CO": {
+ "name": "कोलोमà¥à¤¬à¤¿à¤¯à¤¾"
+ },
+ "CR": {
+ "name": "कोषà¥à¤Ÿà¤¾à¤°à¤¿à¤•à¤¾"
+ },
+ "XK": {
+ "name": "कोसोवो"
+ },
+ "CA": {
+ "name": "कà¥à¤¯à¤¾à¤¨à¤¾à¤¡à¤¾"
+ },
+ "IC": {
+ "name": "कà¥à¤¯à¤¾à¤¨à¤¾à¤°à¥€ टापà¥à¤¹à¤°à¥‚"
+ },
+ "CM": {
+ "name": "कà¥à¤¯à¤¾à¤®à¤°à¥‚न"
+ },
+ "BQ": {
+ "name": "कà¥à¤¯à¤¾à¤°à¤¿à¤µà¤¿à¤¯à¤¨ नेदरलà¥à¤¯à¤¾à¤£à¥à¤¡à¥à¤¸"
+ },
+ "CU": {
+ "name": "कà¥à¤¯à¥à¤¬à¤¾"
+ },
+ "CX": {
+ "name": "कà¥à¤°à¤¿à¤·à¥à¤Ÿà¤®à¤¸ टापà¥"
+ },
+ "HR": {
+ "name": "कà¥à¤°à¥‹à¤à¤¶à¤¿à¤¯à¤¾"
+ },
+ "GM": {
+ "name": "गामà¥à¤µà¤¿à¤¯à¤¾"
+ },
+ "GA": {
+ "name": "गावोन"
+ },
+ "GN": {
+ "name": "गिनी"
+ },
+ "GW": {
+ "name": "गिनी-बिसाउ"
+ },
+ "GG": {
+ "name": "गà¥à¤à¤°à¥à¤¨à¤¸à¥‡"
+ },
+ "GY": {
+ "name": "गà¥à¤¯à¤¾à¤¨à¤¾"
+ },
+ "GU": {
+ "name": "गà¥à¤µà¤¾à¤®"
+ },
+ "GL": {
+ "name": "गà¥à¤°à¤¿à¤¨à¤²à¥à¤¯à¤¾à¤£à¥à¤¡"
+ },
+ "GR": {
+ "name": "गà¥à¤°à¤¿à¤¸"
+ },
+ "GD": {
+ "name": "गà¥à¤°à¥‡à¤¨à¤¾à¤¡à¤¾"
+ },
+ "GT": {
+ "name": "गà¥à¤µà¤¾à¤Ÿà¥‡à¤®à¤¾à¤²à¤¾"
+ },
+ "GP": {
+ "name": "गà¥à¤µà¤¾à¤¡à¥‡à¤²à¥à¤ª"
+ },
+ "GH": {
+ "name": "घाना"
+ },
+ "TD": {
+ "name": "चाड"
+ },
+ "CL": {
+ "name": "चिली"
+ },
+ "CN": {
+ "name": "चीन"
+ },
+ "CZ": {
+ "name": "चेक गणतनà¥à¤¤à¥à¤°"
+ },
+ "JM": {
+ "name": "जमाइका"
+ },
+ "GE": {
+ "name": "जरà¥à¤œà¤¿à¤¯à¤¾"
+ },
+ "DE": {
+ "name": "जरà¥à¤®à¤¨à¥€"
+ },
+ "JE": {
+ "name": "जरà¥à¤¸à¥€"
+ },
+ "JP": {
+ "name": "जापान"
+ },
+ "ZM": {
+ "name": "जामà¥à¤¬à¤¿à¤¯à¤¾"
+ },
+ "GI": {
+ "name": "जिबà¥à¤°à¤¾à¤²à¥à¤Ÿà¤¾à¤°"
+ },
+ "ZW": {
+ "name": "जिमà¥à¤¬à¤¾à¤¬à¥‡"
+ },
+ "JO": {
+ "name": "जोरà¥à¤¡à¤¨"
+ },
+ "TR": {
+ "name": "टरà¥à¤•à¥€"
+ },
+ "TL": {
+ "name": "टिमोर-लेसà¥à¤Ÿà¥‡"
+ },
+ "TO": {
+ "name": "टोंगा"
+ },
+ "TG": {
+ "name": "टोगो"
+ },
+ "TN": {
+ "name": "टà¥à¤¯à¥à¤¨à¤¿à¤¸à¤¿à¤¯à¤¾"
+ },
+ "TA": {
+ "name": "टà¥à¤°à¤¿à¤¸à¥à¤Ÿà¤¾à¤¨ डा कà¥à¤¨à¥à¤¹à¤¾"
+ },
+ "DJ": {
+ "name": "डिजिबà¥à¤Ÿà¥€"
+ },
+ "DG": {
+ "name": "डियगो गारà¥à¤¸à¤¿à¤¯à¤¾"
+ },
+ "DK": {
+ "name": "डेनमारà¥à¤•"
+ },
+ "DO": {
+ "name": "डोमिनिकन गणतनà¥à¤¤à¥à¤°"
+ },
+ "DM": {
+ "name": "डोमिनिका"
+ },
+ "TW": {
+ "name": "ताइवान"
+ },
+ "TJ": {
+ "name": "ताजिकिसà¥à¤¤à¤¾à¤¨"
+ },
+ "TZ": {
+ "name": "तानà¥à¤œà¤¾à¤¨à¤¿à¤¯à¤¾"
+ },
+ "TV": {
+ "name": "तà¥à¤­à¤¾à¤²à¥"
+ },
+ "TC": {
+ "name": "तà¥à¤°à¥à¤• र काइकोस टापà¥"
+ },
+ "TM": {
+ "name": "तà¥à¤°à¥à¤•à¤®à¥‡à¤¨à¤¿à¤¸à¥à¤¤à¤¾à¤¨"
+ },
+ "TK": {
+ "name": "तोकेलाउ"
+ },
+ "TT": {
+ "name": "तà¥à¤°à¤¿à¤¨à¤¿à¤¡à¤¾à¤¡ à¤à¤£à¥à¤¡ टोबागो"
+ },
+ "TH": {
+ "name": "थाइलà¥à¤¯à¤¾à¤£à¥à¤¡"
+ },
+ "ZA": {
+ "name": "दकà¥à¤·à¤¿à¤£ अफà¥à¤°à¤¿à¤•à¤¾"
+ },
+ "KR": {
+ "name": "दकà¥à¤·à¤¿à¤£ कोरिया"
+ },
+ "GS": {
+ "name": "दकà¥à¤·à¤¿à¤£ जरà¥à¤œà¤¿à¤¯à¤¾ र दकà¥à¤·à¤¿à¤£ सà¥à¤¯à¤¾à¤¨à¥à¤¡à¤µà¥€à¤š टापà¥à¤¹à¤°à¥‚"
+ },
+ "SS": {
+ "name": "दकà¥à¤·à¤¿à¤£à¥€ सà¥à¤¡à¤¾à¤¨"
+ },
+ "NC": {
+ "name": "नयाठकालेडोनिया"
+ },
+ "NO": {
+ "name": "नरà¥à¤µà¥‡"
+ },
+ "NE": {
+ "name": "नाइजर"
+ },
+ "NG": {
+ "name": "नाइजेरिया"
+ },
+ "NR": {
+ "name": "नाउरू"
+ },
+ "NA": {
+ "name": "नामिबिया"
+ },
+ "NI": {
+ "name": "निकारागà¥à¤µà¤¾"
+ },
+ "NU": {
+ "name": "नियà¥à¤‡"
+ },
+ "NL": {
+ "name": "नेदरलà¥à¤¯à¤¾à¤£à¥à¤¡à¥à¤¸"
+ },
+ "NP": {
+ "name": "नेपाल"
+ },
+ "NF": {
+ "name": "नोरफोलà¥à¤• टापà¥"
+ },
+ "NZ": {
+ "name": "नà¥à¤¯à¥à¤œà¤¿à¤²à¥à¤¯à¤¾à¤£à¥à¤¡"
+ },
+ "PA": {
+ "name": "पनामा"
+ },
+ "PG": {
+ "name": "पपà¥à¤† नà¥à¤¯à¥‚ गाइनिया"
+ },
+ "PW": {
+ "name": "पलाउ"
+ },
+ "EH": {
+ "name": "पशà¥à¤šà¤¿à¤®à¥€ साहारा"
+ },
+ "PK": {
+ "name": "पाकिसà¥à¤¤à¤¾à¤¨"
+ },
+ "PN": {
+ "name": "पिटकाइरà¥à¤¨ टापà¥à¤¹à¤°à¥"
+ },
+ "PR": {
+ "name": "पà¥à¤à¤°à¥à¤Ÿà¥‹ रिको"
+ },
+ "PE": {
+ "name": "पेरू"
+ },
+ "PT": {
+ "name": "पोरà¥à¤šà¥à¤—ल"
+ },
+ "PL": {
+ "name": "पोलà¥à¤¯à¤¾à¤£à¥à¤¡"
+ },
+ "PY": {
+ "name": "पà¥à¤¯à¤¾à¤°à¤¾à¤—à¥à¤µà¥‡"
+ },
+ "PS": {
+ "name": "पà¥à¤¯à¤¾à¤²à¥‡à¤¸à¥à¤Ÿà¤¨à¥€ भू-भागहरà¥"
+ },
+ "FK": {
+ "name": "फकलà¥à¤¯à¤¾à¤£à¥à¤¡ टापà¥à¤¹à¤°à¥"
+ },
+ "FO": {
+ "name": "फारोर टापà¥à¤¹à¤°à¥"
+ },
+ "FJ": {
+ "name": "फिजी"
+ },
+ "FI": {
+ "name": "फिनà¥à¤²à¥à¤¯à¤¾à¤£à¥à¤¡"
+ },
+ "PH": {
+ "name": "फिलिपिनà¥à¤¸"
+ },
+ "FR": {
+ "name": "फà¥à¤°à¤¾à¤¨à¥à¤¸"
+ },
+ "GF": {
+ "name": "फà¥à¤°à¤¾à¤¨à¥à¤¸à¥‡à¤²à¥€ गायना"
+ },
+ "TF": {
+ "name": "फà¥à¤°à¤¾à¤¨à¥à¤¸à¥‡à¤²à¥€ दकà¥à¤·à¤¿à¤£à¥€ कà¥à¤·à¥‡à¤¤à¥à¤°à¤¹à¤°à¥"
+ },
+ "PF": {
+ "name": "फà¥à¤°à¤¾à¤¨à¥à¤¸à¥‡à¤²à¥€ पोलिनेसिया"
+ },
+ "BD": {
+ "name": "बङà¥à¤—लादेश"
+ },
+ "BF": {
+ "name": "बरà¥à¤•à¤¿à¤¨à¤¾ फासो"
+ },
+ "BM": {
+ "name": "बरà¥à¤®à¥à¤¡à¤¾"
+ },
+ "BH": {
+ "name": "बहराइन"
+ },
+ "BS": {
+ "name": "बहामास"
+ },
+ "BB": {
+ "name": "बारà¥à¤¬à¤¾à¤¡à¥‹à¤¸"
+ },
+ "BI": {
+ "name": "बà¥à¤°à¥‚णà¥à¤¡à¥€"
+ },
+ "BG": {
+ "name": "बà¥à¤²à¥à¤—ेरिया"
+ },
+ "BJ": {
+ "name": "बेनिन"
+ },
+ "GB": {
+ "name": "बेलायत"
+ },
+ "VG": {
+ "name": "बेलायती भरà¥à¤œà¤¿à¤¨ टापà¥à¤¹à¤°à¥"
+ },
+ "IO": {
+ "name": "बेलायती हिनà¥à¤¦ महासागर कà¥à¤·à¥‡à¤¤à¥à¤°"
+ },
+ "BY": {
+ "name": "बेलारूस"
+ },
+ "BZ": {
+ "name": "बेलिज"
+ },
+ "BE": {
+ "name": "बेलà¥à¤œà¤¿à¤¯à¤®"
+ },
+ "BW": {
+ "name": "बोटà¥à¤¸à¥à¤µà¤¾à¤¨à¤¾"
+ },
+ "BO": {
+ "name": "बोलिभिया"
+ },
+ "BA": {
+ "name": "बोसà¥à¤¨à¤¿à¤¯à¤¾ à¤à¤£à¥à¤¡ हरà¥à¤œà¤—ोभिनिया"
+ },
+ "BR": {
+ "name": "बà¥à¤°à¤¾à¤œà¤¿à¤²"
+ },
+ "BN": {
+ "name": "बà¥à¤°à¥à¤¨à¤¾à¤‡"
+ },
+ "VU": {
+ "name": "भानà¥à¤†à¤¤à¥"
+ },
+ "IN": {
+ "name": "भारत"
+ },
+ "VN": {
+ "name": "भिà¤à¤¤à¤¨à¤¾à¤®"
+ },
+ "BT": {
+ "name": "भà¥à¤Ÿà¤¾à¤¨"
+ },
+ "GQ": {
+ "name": "भू-मधà¥à¤¯à¥€à¤¯ गिनी"
+ },
+ "VA": {
+ "name": "भेटिकन सिटी"
+ },
+ "VE": {
+ "name": "भेनेजà¥à¤à¤²à¤¾"
+ },
+ "MO": {
+ "name": "मकावो चिनिà¤à¤¯à¤¾ सà¥à¤µà¤¶à¤¾à¤¸à¤¿à¤¤ कà¥à¤·à¥‡à¤¤à¥à¤°"
+ },
+ "MN": {
+ "name": "मङà¥à¤—ोलिया"
+ },
+ "MG": {
+ "name": "मडागासà¥à¤•à¤°"
+ },
+ "MY": {
+ "name": "मलेसिया"
+ },
+ "FM": {
+ "name": "माइकà¥à¤°à¥‹à¤¨à¥‡à¤¸à¤¿à¤¯à¤¾"
+ },
+ "MU": {
+ "name": "माउरिटस"
+ },
+ "MR": {
+ "name": "माउरिटानिया"
+ },
+ "YT": {
+ "name": "मायोटà¥à¤Ÿ"
+ },
+ "MQ": {
+ "name": "मारà¥à¤Ÿà¤¿à¤¨à¤¿à¤•"
+ },
+ "MH": {
+ "name": "मारà¥à¤¶à¤² टापà¥à¤¹à¤°à¥"
+ },
+ "MW": {
+ "name": "मालावी"
+ },
+ "ML": {
+ "name": "माली"
+ },
+ "MT": {
+ "name": "मालà¥à¤Ÿà¤¾"
+ },
+ "MD": {
+ "name": "मालà¥à¤¡à¥‹à¤­à¤¾"
+ },
+ "MV": {
+ "name": "मालà¥à¤¦à¤¿à¤­à¥à¤¸"
+ },
+ "MX": {
+ "name": "मेकà¥à¤¸à¤¿à¤•à¥‹"
+ },
+ "MZ": {
+ "name": "मोजामà¥à¤¬à¤¿à¤•"
+ },
+ "MC": {
+ "name": "मोनाको"
+ },
+ "MS": {
+ "name": "मोनà¥à¤Ÿà¤¸à¥‡à¤°à¥à¤°à¤¾à¤Ÿ"
+ },
+ "ME": {
+ "name": "मोनà¥à¤Ÿà¥‡à¤¨à¥‡à¤—à¥à¤°à¥‹"
+ },
+ "MA": {
+ "name": "मोरोकà¥à¤•à¥‹"
+ },
+ "MK": {
+ "name": "मà¥à¤¯à¤¾à¤•à¥‡à¤¡à¥‹à¤¨à¤¿à¤¯à¤¾"
+ },
+ "MM": {
+ "name": "मà¥à¤¯à¤¾à¤¨à¥à¤®à¤¾à¤° (बरà¥à¤®à¤¾)"
+ },
+ "UA": {
+ "name": "यà¥à¤•à¥à¤°à¥‡à¤¨"
+ },
+ "UG": {
+ "name": "यà¥à¤—ाणà¥à¤¡à¤¾"
+ },
+ "YE": {
+ "name": "येमेन"
+ },
+ "RW": {
+ "name": "रवाणà¥à¤¡à¤¾"
+ },
+ "RE": {
+ "name": "रियà¥à¤¨à¤¿à¤¯à¤¨"
+ },
+ "RU": {
+ "name": "रूस"
+ },
+ "RO": {
+ "name": "रोमानिया"
+ },
+ "LU": {
+ "name": "लकà¥à¤œà¥‡à¤®à¤¬à¤°à¥à¤—"
+ },
+ "LR": {
+ "name": "लाइबेरिया"
+ },
+ "LA": {
+ "name": "लाओस"
+ },
+ "LV": {
+ "name": "लाटà¥à¤­à¤¿à¤¯à¤¾"
+ },
+ "LI": {
+ "name": "लिà¤à¤–टेनà¥à¤¸à¥à¤Ÿà¤¾à¤‡à¤¨"
+ },
+ "LT": {
+ "name": "लिथà¥à¤…निया"
+ },
+ "LY": {
+ "name": "लिबिया"
+ },
+ "LB": {
+ "name": "लेबनन"
+ },
+ "LS": {
+ "name": "लेसोथो"
+ },
+ "WF": {
+ "name": "वालिस र फà¥à¤Ÿà¥à¤¨à¤¾"
+ },
+ "LK": {
+ "name": "शà¥à¤°à¥€à¤²à¤™à¥à¤•à¤¾"
+ },
+ "SJ": {
+ "name": "सभालà¥à¤¬à¤¾à¤°à¥à¤¡ र जान मायेन"
+ },
+ "AE": {
+ "name": "संयà¥à¤•à¥à¤¤ अरब इमिराटà¥à¤¸"
+ },
+ "US": {
+ "name": "संयà¥à¤•à¥à¤¤ राजà¥à¤¯"
+ },
+ "UM": {
+ "name": "संयà¥à¤•à¥à¤¤ राजà¥à¤¯ बाहà¥à¤¯ टापà¥à¤¹à¤°à¥"
+ },
+ "VI": {
+ "name": "संयà¥à¤•à¥à¤¤ राजà¥à¤¯ भरà¥à¤œà¤¿à¤¨ टापà¥à¤¹à¤°à¥"
+ },
+ "RS": {
+ "name": "सरà¥à¤¬à¤¿à¤¯à¤¾"
+ },
+ "CY": {
+ "name": "साइपà¥à¤°à¤¸"
+ },
+ "SA": {
+ "name": "साउदी अरब"
+ },
+ "ST": {
+ "name": "साओ टोमे र पà¥à¤°à¤¿à¤¨à¥à¤¸à¤¿à¤ª"
+ },
+ "SM": {
+ "name": "सानॠमारिनो"
+ },
+ "WS": {
+ "name": "सामोआ"
+ },
+ "EA": {
+ "name": "सिउटा र मेलिला"
+ },
+ "SL": {
+ "name": "सिà¤à¤°à¥à¤°à¤¾ लिओन"
+ },
+ "SG": {
+ "name": "सिङà¥à¤—ापà¥à¤°"
+ },
+ "SX": {
+ "name": "सिनà¥à¤Ÿ मारà¥à¤Ÿà¥‡à¤¨"
+ },
+ "SY": {
+ "name": "सिरिया"
+ },
+ "SD": {
+ "name": "सà¥à¤¡à¤¾à¤¨"
+ },
+ "SR": {
+ "name": "सà¥à¤°à¤¿à¤¨à¥‡à¤®"
+ },
+ "SC": {
+ "name": "सेचेलेस"
+ },
+ "SN": {
+ "name": "सेनेगाल"
+ },
+ "KN": {
+ "name": "सेनà¥à¤Ÿ किटà¥à¤¸ र नेभिस"
+ },
+ "PM": {
+ "name": "सेनà¥à¤Ÿ पिरà¥à¤°à¥‡ र मिकà¥à¤•à¥‡à¤²à¥‹à¤¨"
+ },
+ "BL": {
+ "name": "सेनà¥à¤Ÿ बारà¥à¤¥à¤¾à¤²à¥‡à¤®à¥€"
+ },
+ "VC": {
+ "name": "सेनà¥à¤Ÿ भिनà¥à¤¸à¥‡à¤¨à¥à¤Ÿ र गà¥à¤°à¥‡à¤¨à¤¾à¤¡à¤¿à¤¨à¥à¤¸"
+ },
+ "MF": {
+ "name": "सेनà¥à¤Ÿ मारà¥à¤Ÿà¤¿à¤¨"
+ },
+ "LC": {
+ "name": "सेनà¥à¤Ÿ लà¥à¤¸à¤¿à¤¯à¤¾"
+ },
+ "SH": {
+ "name": "सेनà¥à¤Ÿ हेलेना"
+ },
+ "SO": {
+ "name": "सोमालिया"
+ },
+ "SB": {
+ "name": "सोलोमोन टापà¥à¤¹à¤°à¥"
+ },
+ "ES": {
+ "name": "सà¥à¤ªà¥‡à¤¨"
+ },
+ "SK": {
+ "name": "सà¥à¤²à¥‹à¤­à¤¾à¤•à¤¿à¤¯à¤¾"
+ },
+ "SI": {
+ "name": "सà¥à¤²à¥‹à¤­à¥‡à¤¨à¤¿à¤¯à¤¾"
+ },
+ "SZ": {
+ "name": "सà¥à¤µà¤¾à¤œà¤¿à¤²à¥à¤¯à¤¾à¤£à¥à¤¡"
+ },
+ "CH": {
+ "name": "सà¥à¤µà¤¿à¤œà¤°à¤²à¥à¤¯à¤¾à¤£à¥à¤¡"
+ },
+ "SE": {
+ "name": "सà¥à¤µà¤¿à¤¡à¥‡à¤¨"
+ },
+ "HK": {
+ "name": "हङकङ चिनिया समाजवादी सà¥à¤µà¤¾à¤¯à¤¤à¥à¤¤ कà¥à¤·à¥‡à¤¤à¥à¤°"
+ },
+ "HU": {
+ "name": "हङà¥à¤—ेरी"
+ },
+ "HN": {
+ "name": "हनà¥à¤¡à¥à¤°à¤¾à¤¸"
+ },
+ "HT": {
+ "name": "हैटी"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/country/nl-BE.json b/library/intl/resources/country/nl-BE.json
new file mode 100644
index 000000000..57f2522e5
--- /dev/null
+++ b/library/intl/resources/country/nl-BE.json
@@ -0,0 +1,761 @@
+{
+ "AF": {
+ "name": "Afghanistan"
+ },
+ "AX": {
+ "name": "Ã…land"
+ },
+ "AL": {
+ "name": "Albanië"
+ },
+ "DZ": {
+ "name": "Algerije"
+ },
+ "AS": {
+ "name": "Amerikaans-Samoa"
+ },
+ "VI": {
+ "name": "Amerikaanse Maagdeneilanden"
+ },
+ "AD": {
+ "name": "Andorra"
+ },
+ "AO": {
+ "name": "Angola"
+ },
+ "AI": {
+ "name": "Anguilla"
+ },
+ "AQ": {
+ "name": "Antarctica"
+ },
+ "AG": {
+ "name": "Antigua en Barbuda"
+ },
+ "AR": {
+ "name": "Argentinië"
+ },
+ "AM": {
+ "name": "Armenië"
+ },
+ "AW": {
+ "name": "Aruba"
+ },
+ "AC": {
+ "name": "Ascension"
+ },
+ "AU": {
+ "name": "Australië"
+ },
+ "AZ": {
+ "name": "Azerbeidzjan"
+ },
+ "BS": {
+ "name": "Bahama’s"
+ },
+ "BH": {
+ "name": "Bahrein"
+ },
+ "BD": {
+ "name": "Bangladesh"
+ },
+ "BB": {
+ "name": "Barbados"
+ },
+ "BE": {
+ "name": "België"
+ },
+ "BZ": {
+ "name": "Belize"
+ },
+ "BJ": {
+ "name": "Benin"
+ },
+ "BM": {
+ "name": "Bermuda"
+ },
+ "BT": {
+ "name": "Bhutan"
+ },
+ "BO": {
+ "name": "Bolivia"
+ },
+ "BA": {
+ "name": "Bosnië en Herzegovina"
+ },
+ "BW": {
+ "name": "Botswana"
+ },
+ "BR": {
+ "name": "Brazilië"
+ },
+ "IO": {
+ "name": "Britse Gebieden in de Indische Oceaan"
+ },
+ "VG": {
+ "name": "Britse Maagdeneilanden"
+ },
+ "BN": {
+ "name": "Brunei"
+ },
+ "BG": {
+ "name": "Bulgarije"
+ },
+ "BF": {
+ "name": "Burkina Faso"
+ },
+ "BI": {
+ "name": "Burundi"
+ },
+ "KH": {
+ "name": "Cambodja"
+ },
+ "CA": {
+ "name": "Canada"
+ },
+ "IC": {
+ "name": "Canarische Eilanden"
+ },
+ "BQ": {
+ "name": "Caribisch Nederland"
+ },
+ "KY": {
+ "name": "Caymaneilanden"
+ },
+ "CF": {
+ "name": "Centraal-Afrikaanse Republiek"
+ },
+ "EA": {
+ "name": "Ceuta en Melilla"
+ },
+ "CL": {
+ "name": "Chili"
+ },
+ "CN": {
+ "name": "China"
+ },
+ "CX": {
+ "name": "Christmaseiland"
+ },
+ "CC": {
+ "name": "Cocoseilanden"
+ },
+ "CO": {
+ "name": "Colombia"
+ },
+ "KM": {
+ "name": "Comoren"
+ },
+ "CG": {
+ "name": "Congo-Brazzaville"
+ },
+ "CD": {
+ "name": "Congo-Kinshasa"
+ },
+ "CK": {
+ "name": "Cookeilanden"
+ },
+ "CR": {
+ "name": "Costa Rica"
+ },
+ "CU": {
+ "name": "Cuba"
+ },
+ "CW": {
+ "name": "Curaçao"
+ },
+ "CY": {
+ "name": "Cyprus"
+ },
+ "DK": {
+ "name": "Denemarken"
+ },
+ "DG": {
+ "name": "Diego Garcia"
+ },
+ "DJ": {
+ "name": "Djibouti"
+ },
+ "DM": {
+ "name": "Dominica"
+ },
+ "DO": {
+ "name": "Dominicaanse Republiek"
+ },
+ "DE": {
+ "name": "Duitsland"
+ },
+ "EC": {
+ "name": "Ecuador"
+ },
+ "EG": {
+ "name": "Egypte"
+ },
+ "SV": {
+ "name": "El Salvador"
+ },
+ "GQ": {
+ "name": "Equatoriaal-Guinea"
+ },
+ "ER": {
+ "name": "Eritrea"
+ },
+ "EE": {
+ "name": "Estland"
+ },
+ "ET": {
+ "name": "Ethiopië"
+ },
+ "FO": {
+ "name": "Faeröer"
+ },
+ "FK": {
+ "name": "Falklandeilanden"
+ },
+ "FJ": {
+ "name": "Fiji"
+ },
+ "PH": {
+ "name": "Filipijnen"
+ },
+ "FI": {
+ "name": "Finland"
+ },
+ "FR": {
+ "name": "Frankrijk"
+ },
+ "GF": {
+ "name": "Frans-Guyana"
+ },
+ "PF": {
+ "name": "Frans-Polynesië"
+ },
+ "TF": {
+ "name": "Franse Gebieden in de zuidelijke Indische Oceaan"
+ },
+ "GA": {
+ "name": "Gabon"
+ },
+ "GM": {
+ "name": "Gambia"
+ },
+ "GE": {
+ "name": "Georgië"
+ },
+ "GH": {
+ "name": "Ghana"
+ },
+ "GI": {
+ "name": "Gibraltar"
+ },
+ "GD": {
+ "name": "Grenada"
+ },
+ "GR": {
+ "name": "Griekenland"
+ },
+ "GL": {
+ "name": "Groenland"
+ },
+ "GP": {
+ "name": "Guadeloupe"
+ },
+ "GU": {
+ "name": "Guam"
+ },
+ "GT": {
+ "name": "Guatemala"
+ },
+ "GG": {
+ "name": "Guernsey"
+ },
+ "GN": {
+ "name": "Guinee"
+ },
+ "GW": {
+ "name": "Guinee-Bissau"
+ },
+ "GY": {
+ "name": "Guyana"
+ },
+ "HT": {
+ "name": "Haïti"
+ },
+ "IM": {
+ "name": "Het Eiland Man"
+ },
+ "HN": {
+ "name": "Honduras"
+ },
+ "HU": {
+ "name": "Hongarije"
+ },
+ "HK": {
+ "name": "Hongkong SAR van China"
+ },
+ "IE": {
+ "name": "Ierland"
+ },
+ "IS": {
+ "name": "IJsland"
+ },
+ "IN": {
+ "name": "India"
+ },
+ "ID": {
+ "name": "Indonesië"
+ },
+ "IQ": {
+ "name": "Irak"
+ },
+ "IR": {
+ "name": "Iran"
+ },
+ "IL": {
+ "name": "Israël"
+ },
+ "IT": {
+ "name": "Italië"
+ },
+ "CI": {
+ "name": "Ivoorkust"
+ },
+ "JM": {
+ "name": "Jamaica"
+ },
+ "JP": {
+ "name": "Japan"
+ },
+ "YE": {
+ "name": "Jemen"
+ },
+ "JE": {
+ "name": "Jersey"
+ },
+ "JO": {
+ "name": "Jordanië"
+ },
+ "CV": {
+ "name": "Kaapverdië"
+ },
+ "CM": {
+ "name": "Kameroen"
+ },
+ "KZ": {
+ "name": "Kazachstan"
+ },
+ "KE": {
+ "name": "Kenia"
+ },
+ "KG": {
+ "name": "Kirgizië"
+ },
+ "KI": {
+ "name": "Kiribati"
+ },
+ "UM": {
+ "name": "Kleine afgelegen eilanden van de Verenigde Staten"
+ },
+ "KW": {
+ "name": "Koeweit"
+ },
+ "XK": {
+ "name": "Kosovo"
+ },
+ "HR": {
+ "name": "Kroatië"
+ },
+ "LA": {
+ "name": "Laos"
+ },
+ "LS": {
+ "name": "Lesotho"
+ },
+ "LV": {
+ "name": "Letland"
+ },
+ "LB": {
+ "name": "Libanon"
+ },
+ "LR": {
+ "name": "Liberia"
+ },
+ "LY": {
+ "name": "Libië"
+ },
+ "LI": {
+ "name": "Liechtenstein"
+ },
+ "LT": {
+ "name": "Litouwen"
+ },
+ "LU": {
+ "name": "Luxemburg"
+ },
+ "MO": {
+ "name": "Macau SAR van China"
+ },
+ "MK": {
+ "name": "Macedonië"
+ },
+ "MG": {
+ "name": "Madagaskar"
+ },
+ "MW": {
+ "name": "Malawi"
+ },
+ "MV": {
+ "name": "Malediven"
+ },
+ "MY": {
+ "name": "Maleisië"
+ },
+ "ML": {
+ "name": "Mali"
+ },
+ "MT": {
+ "name": "Malta"
+ },
+ "MA": {
+ "name": "Marokko"
+ },
+ "MH": {
+ "name": "Marshalleilanden"
+ },
+ "MQ": {
+ "name": "Martinique"
+ },
+ "MR": {
+ "name": "Mauritanië"
+ },
+ "MU": {
+ "name": "Mauritius"
+ },
+ "YT": {
+ "name": "Mayotte"
+ },
+ "MX": {
+ "name": "Mexico"
+ },
+ "FM": {
+ "name": "Micronesia"
+ },
+ "MD": {
+ "name": "Moldavië"
+ },
+ "MC": {
+ "name": "Monaco"
+ },
+ "MN": {
+ "name": "Mongolië"
+ },
+ "ME": {
+ "name": "Montenegro"
+ },
+ "MS": {
+ "name": "Montserrat"
+ },
+ "MZ": {
+ "name": "Mozambique"
+ },
+ "MM": {
+ "name": "Myanmar (Birma)"
+ },
+ "NA": {
+ "name": "Namibië"
+ },
+ "NR": {
+ "name": "Nauru"
+ },
+ "NL": {
+ "name": "Nederland"
+ },
+ "NP": {
+ "name": "Nepal"
+ },
+ "NI": {
+ "name": "Nicaragua"
+ },
+ "NC": {
+ "name": "Nieuw-Caledonië"
+ },
+ "NZ": {
+ "name": "Nieuw-Zeeland"
+ },
+ "NE": {
+ "name": "Niger"
+ },
+ "NG": {
+ "name": "Nigeria"
+ },
+ "NU": {
+ "name": "Niue"
+ },
+ "KP": {
+ "name": "Noord-Korea"
+ },
+ "MP": {
+ "name": "Noordelijke Marianen"
+ },
+ "NO": {
+ "name": "Noorwegen"
+ },
+ "NF": {
+ "name": "Norfolk"
+ },
+ "UG": {
+ "name": "Oeganda"
+ },
+ "UA": {
+ "name": "Oekraïne"
+ },
+ "UZ": {
+ "name": "Oezbekistan"
+ },
+ "OM": {
+ "name": "Oman"
+ },
+ "TL": {
+ "name": "Oost-Timor"
+ },
+ "AT": {
+ "name": "Oostenrijk"
+ },
+ "PK": {
+ "name": "Pakistan"
+ },
+ "PW": {
+ "name": "Palau"
+ },
+ "PS": {
+ "name": "Palestijnse gebieden"
+ },
+ "PA": {
+ "name": "Panama"
+ },
+ "PG": {
+ "name": "Papoea-Nieuw-Guinea"
+ },
+ "PY": {
+ "name": "Paraguay"
+ },
+ "PE": {
+ "name": "Peru"
+ },
+ "PN": {
+ "name": "Pitcairneilanden"
+ },
+ "PL": {
+ "name": "Polen"
+ },
+ "PT": {
+ "name": "Portugal"
+ },
+ "PR": {
+ "name": "Puerto Rico"
+ },
+ "QA": {
+ "name": "Qatar"
+ },
+ "RE": {
+ "name": "Réunion"
+ },
+ "RO": {
+ "name": "Roemenië"
+ },
+ "RU": {
+ "name": "Rusland"
+ },
+ "RW": {
+ "name": "Rwanda"
+ },
+ "KN": {
+ "name": "Saint Kitts en Nevis"
+ },
+ "LC": {
+ "name": "Saint Lucia"
+ },
+ "VC": {
+ "name": "Saint Vincent en de Grenadines"
+ },
+ "BL": {
+ "name": "Saint-Barthélemy"
+ },
+ "MF": {
+ "name": "Saint-Martin"
+ },
+ "PM": {
+ "name": "Saint-Pierre en Miquelon"
+ },
+ "SB": {
+ "name": "Salomoneilanden"
+ },
+ "WS": {
+ "name": "Samoa"
+ },
+ "SM": {
+ "name": "San Marino"
+ },
+ "ST": {
+ "name": "Sao Tomé en Principe"
+ },
+ "SA": {
+ "name": "Saoedi-Arabië"
+ },
+ "SN": {
+ "name": "Senegal"
+ },
+ "RS": {
+ "name": "Servië"
+ },
+ "SC": {
+ "name": "Seychellen"
+ },
+ "SL": {
+ "name": "Sierra Leone"
+ },
+ "SG": {
+ "name": "Singapore"
+ },
+ "SH": {
+ "name": "Sint-Helena"
+ },
+ "SX": {
+ "name": "Sint-Maarten"
+ },
+ "SI": {
+ "name": "Slovenië"
+ },
+ "SK": {
+ "name": "Slowakije"
+ },
+ "SD": {
+ "name": "Soedan"
+ },
+ "SO": {
+ "name": "Somalië"
+ },
+ "ES": {
+ "name": "Spanje"
+ },
+ "SJ": {
+ "name": "Spitsbergen en Jan Mayen"
+ },
+ "LK": {
+ "name": "Sri Lanka"
+ },
+ "SR": {
+ "name": "Suriname"
+ },
+ "SZ": {
+ "name": "Swaziland"
+ },
+ "SY": {
+ "name": "Syrië"
+ },
+ "TJ": {
+ "name": "Tadzjikistan"
+ },
+ "TW": {
+ "name": "Taiwan"
+ },
+ "TZ": {
+ "name": "Tanzania"
+ },
+ "TH": {
+ "name": "Thailand"
+ },
+ "TG": {
+ "name": "Togo"
+ },
+ "TK": {
+ "name": "Tokelau"
+ },
+ "TO": {
+ "name": "Tonga"
+ },
+ "TT": {
+ "name": "Trinidad en Tobago"
+ },
+ "TA": {
+ "name": "Tristan da Cunha"
+ },
+ "TD": {
+ "name": "Tsjaad"
+ },
+ "CZ": {
+ "name": "Tsjechië"
+ },
+ "TN": {
+ "name": "Tunesië"
+ },
+ "TR": {
+ "name": "Turkije"
+ },
+ "TM": {
+ "name": "Turkmenistan"
+ },
+ "TC": {
+ "name": "Turks- en Caicoseilanden"
+ },
+ "TV": {
+ "name": "Tuvalu"
+ },
+ "UY": {
+ "name": "Uruguay"
+ },
+ "VU": {
+ "name": "Vanuatu"
+ },
+ "VA": {
+ "name": "Vaticaanstad"
+ },
+ "VE": {
+ "name": "Venezuela"
+ },
+ "GB": {
+ "name": "Verenigd Koninkrijk"
+ },
+ "AE": {
+ "name": "Verenigde Arabische Emiraten"
+ },
+ "US": {
+ "name": "Verenigde Staten"
+ },
+ "VN": {
+ "name": "Vietnam"
+ },
+ "WF": {
+ "name": "Wallis en Futuna"
+ },
+ "EH": {
+ "name": "Westelijke Sahara"
+ },
+ "BY": {
+ "name": "Wit-Rusland"
+ },
+ "ZM": {
+ "name": "Zambia"
+ },
+ "ZW": {
+ "name": "Zimbabwe"
+ },
+ "ZA": {
+ "name": "Zuid-Afrika"
+ },
+ "GS": {
+ "name": "Zuid-Georgia en Zuidelijke Sandwicheilanden"
+ },
+ "KR": {
+ "name": "Zuid-Korea"
+ },
+ "SS": {
+ "name": "Zuid-Soedan"
+ },
+ "SE": {
+ "name": "Zweden"
+ },
+ "CH": {
+ "name": "Zwitserland"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/country/nl.json b/library/intl/resources/country/nl.json
new file mode 100644
index 000000000..a6facca87
--- /dev/null
+++ b/library/intl/resources/country/nl.json
@@ -0,0 +1,761 @@
+{
+ "AF": {
+ "name": "Afghanistan"
+ },
+ "AX": {
+ "name": "Ã…land"
+ },
+ "AL": {
+ "name": "Albanië"
+ },
+ "DZ": {
+ "name": "Algerije"
+ },
+ "AS": {
+ "name": "Amerikaans-Samoa"
+ },
+ "VI": {
+ "name": "Amerikaanse Maagdeneilanden"
+ },
+ "AD": {
+ "name": "Andorra"
+ },
+ "AO": {
+ "name": "Angola"
+ },
+ "AI": {
+ "name": "Anguilla"
+ },
+ "AQ": {
+ "name": "Antarctica"
+ },
+ "AG": {
+ "name": "Antigua en Barbuda"
+ },
+ "AR": {
+ "name": "Argentinië"
+ },
+ "AM": {
+ "name": "Armenië"
+ },
+ "AW": {
+ "name": "Aruba"
+ },
+ "AC": {
+ "name": "Ascension"
+ },
+ "AU": {
+ "name": "Australië"
+ },
+ "AZ": {
+ "name": "Azerbeidzjan"
+ },
+ "BS": {
+ "name": "Bahama’s"
+ },
+ "BH": {
+ "name": "Bahrein"
+ },
+ "BD": {
+ "name": "Bangladesh"
+ },
+ "BB": {
+ "name": "Barbados"
+ },
+ "BE": {
+ "name": "België"
+ },
+ "BZ": {
+ "name": "Belize"
+ },
+ "BJ": {
+ "name": "Benin"
+ },
+ "BM": {
+ "name": "Bermuda"
+ },
+ "BT": {
+ "name": "Bhutan"
+ },
+ "BO": {
+ "name": "Bolivia"
+ },
+ "BA": {
+ "name": "Bosnië en Herzegovina"
+ },
+ "BW": {
+ "name": "Botswana"
+ },
+ "BR": {
+ "name": "Brazilië"
+ },
+ "IO": {
+ "name": "Britse Gebieden in de Indische Oceaan"
+ },
+ "VG": {
+ "name": "Britse Maagdeneilanden"
+ },
+ "BN": {
+ "name": "Brunei"
+ },
+ "BG": {
+ "name": "Bulgarije"
+ },
+ "BF": {
+ "name": "Burkina Faso"
+ },
+ "BI": {
+ "name": "Burundi"
+ },
+ "KH": {
+ "name": "Cambodja"
+ },
+ "CA": {
+ "name": "Canada"
+ },
+ "IC": {
+ "name": "Canarische Eilanden"
+ },
+ "BQ": {
+ "name": "Caribisch Nederland"
+ },
+ "KY": {
+ "name": "Caymaneilanden"
+ },
+ "CF": {
+ "name": "Centraal-Afrikaanse Republiek"
+ },
+ "EA": {
+ "name": "Ceuta en Melilla"
+ },
+ "CL": {
+ "name": "Chili"
+ },
+ "CN": {
+ "name": "China"
+ },
+ "CX": {
+ "name": "Christmaseiland"
+ },
+ "CC": {
+ "name": "Cocoseilanden"
+ },
+ "CO": {
+ "name": "Colombia"
+ },
+ "KM": {
+ "name": "Comoren"
+ },
+ "CG": {
+ "name": "Congo-Brazzaville"
+ },
+ "CD": {
+ "name": "Congo-Kinshasa"
+ },
+ "CK": {
+ "name": "Cookeilanden"
+ },
+ "CR": {
+ "name": "Costa Rica"
+ },
+ "CU": {
+ "name": "Cuba"
+ },
+ "CW": {
+ "name": "Curaçao"
+ },
+ "CY": {
+ "name": "Cyprus"
+ },
+ "DK": {
+ "name": "Denemarken"
+ },
+ "DG": {
+ "name": "Diego Garcia"
+ },
+ "DJ": {
+ "name": "Djibouti"
+ },
+ "DM": {
+ "name": "Dominica"
+ },
+ "DO": {
+ "name": "Dominicaanse Republiek"
+ },
+ "DE": {
+ "name": "Duitsland"
+ },
+ "EC": {
+ "name": "Ecuador"
+ },
+ "EG": {
+ "name": "Egypte"
+ },
+ "SV": {
+ "name": "El Salvador"
+ },
+ "GQ": {
+ "name": "Equatoriaal-Guinea"
+ },
+ "ER": {
+ "name": "Eritrea"
+ },
+ "EE": {
+ "name": "Estland"
+ },
+ "ET": {
+ "name": "Ethiopië"
+ },
+ "FO": {
+ "name": "Faeröer"
+ },
+ "FK": {
+ "name": "Falklandeilanden"
+ },
+ "FJ": {
+ "name": "Fiji"
+ },
+ "PH": {
+ "name": "Filipijnen"
+ },
+ "FI": {
+ "name": "Finland"
+ },
+ "FR": {
+ "name": "Frankrijk"
+ },
+ "GF": {
+ "name": "Frans-Guyana"
+ },
+ "PF": {
+ "name": "Frans-Polynesië"
+ },
+ "TF": {
+ "name": "Franse Gebieden in de zuidelijke Indische Oceaan"
+ },
+ "GA": {
+ "name": "Gabon"
+ },
+ "GM": {
+ "name": "Gambia"
+ },
+ "GE": {
+ "name": "Georgië"
+ },
+ "GH": {
+ "name": "Ghana"
+ },
+ "GI": {
+ "name": "Gibraltar"
+ },
+ "GD": {
+ "name": "Grenada"
+ },
+ "GR": {
+ "name": "Griekenland"
+ },
+ "GL": {
+ "name": "Groenland"
+ },
+ "GP": {
+ "name": "Guadeloupe"
+ },
+ "GU": {
+ "name": "Guam"
+ },
+ "GT": {
+ "name": "Guatemala"
+ },
+ "GG": {
+ "name": "Guernsey"
+ },
+ "GN": {
+ "name": "Guinee"
+ },
+ "GW": {
+ "name": "Guinee-Bissau"
+ },
+ "GY": {
+ "name": "Guyana"
+ },
+ "HT": {
+ "name": "Haïti"
+ },
+ "HN": {
+ "name": "Honduras"
+ },
+ "HU": {
+ "name": "Hongarije"
+ },
+ "HK": {
+ "name": "Hongkong SAR van China"
+ },
+ "IE": {
+ "name": "Ierland"
+ },
+ "IS": {
+ "name": "IJsland"
+ },
+ "IN": {
+ "name": "India"
+ },
+ "ID": {
+ "name": "Indonesië"
+ },
+ "IQ": {
+ "name": "Irak"
+ },
+ "IR": {
+ "name": "Iran"
+ },
+ "IM": {
+ "name": "Isle of Man"
+ },
+ "IL": {
+ "name": "Israël"
+ },
+ "IT": {
+ "name": "Italië"
+ },
+ "CI": {
+ "name": "Ivoorkust"
+ },
+ "JM": {
+ "name": "Jamaica"
+ },
+ "JP": {
+ "name": "Japan"
+ },
+ "YE": {
+ "name": "Jemen"
+ },
+ "JE": {
+ "name": "Jersey"
+ },
+ "JO": {
+ "name": "Jordanië"
+ },
+ "CV": {
+ "name": "Kaapverdië"
+ },
+ "CM": {
+ "name": "Kameroen"
+ },
+ "KZ": {
+ "name": "Kazachstan"
+ },
+ "KE": {
+ "name": "Kenia"
+ },
+ "KG": {
+ "name": "Kirgizië"
+ },
+ "KI": {
+ "name": "Kiribati"
+ },
+ "UM": {
+ "name": "Kleine afgelegen eilanden van de Verenigde Staten"
+ },
+ "KW": {
+ "name": "Koeweit"
+ },
+ "XK": {
+ "name": "Kosovo"
+ },
+ "HR": {
+ "name": "Kroatië"
+ },
+ "LA": {
+ "name": "Laos"
+ },
+ "LS": {
+ "name": "Lesotho"
+ },
+ "LV": {
+ "name": "Letland"
+ },
+ "LB": {
+ "name": "Libanon"
+ },
+ "LR": {
+ "name": "Liberia"
+ },
+ "LY": {
+ "name": "Libië"
+ },
+ "LI": {
+ "name": "Liechtenstein"
+ },
+ "LT": {
+ "name": "Litouwen"
+ },
+ "LU": {
+ "name": "Luxemburg"
+ },
+ "MO": {
+ "name": "Macau SAR van China"
+ },
+ "MK": {
+ "name": "Macedonië"
+ },
+ "MG": {
+ "name": "Madagaskar"
+ },
+ "MW": {
+ "name": "Malawi"
+ },
+ "MV": {
+ "name": "Maldiven"
+ },
+ "MY": {
+ "name": "Maleisië"
+ },
+ "ML": {
+ "name": "Mali"
+ },
+ "MT": {
+ "name": "Malta"
+ },
+ "MA": {
+ "name": "Marokko"
+ },
+ "MH": {
+ "name": "Marshalleilanden"
+ },
+ "MQ": {
+ "name": "Martinique"
+ },
+ "MR": {
+ "name": "Mauritanië"
+ },
+ "MU": {
+ "name": "Mauritius"
+ },
+ "YT": {
+ "name": "Mayotte"
+ },
+ "MX": {
+ "name": "Mexico"
+ },
+ "FM": {
+ "name": "Micronesia"
+ },
+ "MD": {
+ "name": "Moldavië"
+ },
+ "MC": {
+ "name": "Monaco"
+ },
+ "MN": {
+ "name": "Mongolië"
+ },
+ "ME": {
+ "name": "Montenegro"
+ },
+ "MS": {
+ "name": "Montserrat"
+ },
+ "MZ": {
+ "name": "Mozambique"
+ },
+ "MM": {
+ "name": "Myanmar (Birma)"
+ },
+ "NA": {
+ "name": "Namibië"
+ },
+ "NR": {
+ "name": "Nauru"
+ },
+ "NL": {
+ "name": "Nederland"
+ },
+ "NP": {
+ "name": "Nepal"
+ },
+ "NI": {
+ "name": "Nicaragua"
+ },
+ "NC": {
+ "name": "Nieuw-Caledonië"
+ },
+ "NZ": {
+ "name": "Nieuw-Zeeland"
+ },
+ "NE": {
+ "name": "Niger"
+ },
+ "NG": {
+ "name": "Nigeria"
+ },
+ "NU": {
+ "name": "Niue"
+ },
+ "KP": {
+ "name": "Noord-Korea"
+ },
+ "MP": {
+ "name": "Noordelijke Marianen"
+ },
+ "NO": {
+ "name": "Noorwegen"
+ },
+ "NF": {
+ "name": "Norfolk"
+ },
+ "UG": {
+ "name": "Oeganda"
+ },
+ "UA": {
+ "name": "Oekraïne"
+ },
+ "UZ": {
+ "name": "Oezbekistan"
+ },
+ "OM": {
+ "name": "Oman"
+ },
+ "TL": {
+ "name": "Oost-Timor"
+ },
+ "AT": {
+ "name": "Oostenrijk"
+ },
+ "PK": {
+ "name": "Pakistan"
+ },
+ "PW": {
+ "name": "Palau"
+ },
+ "PS": {
+ "name": "Palestijnse gebieden"
+ },
+ "PA": {
+ "name": "Panama"
+ },
+ "PG": {
+ "name": "Papoea-Nieuw-Guinea"
+ },
+ "PY": {
+ "name": "Paraguay"
+ },
+ "PE": {
+ "name": "Peru"
+ },
+ "PN": {
+ "name": "Pitcairneilanden"
+ },
+ "PL": {
+ "name": "Polen"
+ },
+ "PT": {
+ "name": "Portugal"
+ },
+ "PR": {
+ "name": "Puerto Rico"
+ },
+ "QA": {
+ "name": "Qatar"
+ },
+ "RE": {
+ "name": "Réunion"
+ },
+ "RO": {
+ "name": "Roemenië"
+ },
+ "RU": {
+ "name": "Rusland"
+ },
+ "RW": {
+ "name": "Rwanda"
+ },
+ "KN": {
+ "name": "Saint Kitts en Nevis"
+ },
+ "LC": {
+ "name": "Saint Lucia"
+ },
+ "VC": {
+ "name": "Saint Vincent en de Grenadines"
+ },
+ "BL": {
+ "name": "Saint-Barthélemy"
+ },
+ "MF": {
+ "name": "Saint-Martin"
+ },
+ "PM": {
+ "name": "Saint-Pierre en Miquelon"
+ },
+ "SB": {
+ "name": "Salomonseilanden"
+ },
+ "WS": {
+ "name": "Samoa"
+ },
+ "SM": {
+ "name": "San Marino"
+ },
+ "ST": {
+ "name": "Sao Tomé en Principe"
+ },
+ "SA": {
+ "name": "Saoedi-Arabië"
+ },
+ "SN": {
+ "name": "Senegal"
+ },
+ "RS": {
+ "name": "Servië"
+ },
+ "SC": {
+ "name": "Seychellen"
+ },
+ "SL": {
+ "name": "Sierra Leone"
+ },
+ "SG": {
+ "name": "Singapore"
+ },
+ "SH": {
+ "name": "Sint-Helena"
+ },
+ "SX": {
+ "name": "Sint-Maarten"
+ },
+ "SI": {
+ "name": "Slovenië"
+ },
+ "SK": {
+ "name": "Slowakije"
+ },
+ "SD": {
+ "name": "Soedan"
+ },
+ "SO": {
+ "name": "Somalië"
+ },
+ "ES": {
+ "name": "Spanje"
+ },
+ "SJ": {
+ "name": "Spitsbergen en Jan Mayen"
+ },
+ "LK": {
+ "name": "Sri Lanka"
+ },
+ "SR": {
+ "name": "Suriname"
+ },
+ "SZ": {
+ "name": "Swaziland"
+ },
+ "SY": {
+ "name": "Syrië"
+ },
+ "TJ": {
+ "name": "Tadzjikistan"
+ },
+ "TW": {
+ "name": "Taiwan"
+ },
+ "TZ": {
+ "name": "Tanzania"
+ },
+ "TH": {
+ "name": "Thailand"
+ },
+ "TG": {
+ "name": "Togo"
+ },
+ "TK": {
+ "name": "Tokelau"
+ },
+ "TO": {
+ "name": "Tonga"
+ },
+ "TT": {
+ "name": "Trinidad en Tobago"
+ },
+ "TA": {
+ "name": "Tristan da Cunha"
+ },
+ "TD": {
+ "name": "Tsjaad"
+ },
+ "CZ": {
+ "name": "Tsjechië"
+ },
+ "TN": {
+ "name": "Tunesië"
+ },
+ "TR": {
+ "name": "Turkije"
+ },
+ "TM": {
+ "name": "Turkmenistan"
+ },
+ "TC": {
+ "name": "Turks- en Caicoseilanden"
+ },
+ "TV": {
+ "name": "Tuvalu"
+ },
+ "UY": {
+ "name": "Uruguay"
+ },
+ "VU": {
+ "name": "Vanuatu"
+ },
+ "VA": {
+ "name": "Vaticaanstad"
+ },
+ "VE": {
+ "name": "Venezuela"
+ },
+ "GB": {
+ "name": "Verenigd Koninkrijk"
+ },
+ "AE": {
+ "name": "Verenigde Arabische Emiraten"
+ },
+ "US": {
+ "name": "Verenigde Staten"
+ },
+ "VN": {
+ "name": "Vietnam"
+ },
+ "WF": {
+ "name": "Wallis en Futuna"
+ },
+ "EH": {
+ "name": "Westelijke Sahara"
+ },
+ "BY": {
+ "name": "Wit-Rusland"
+ },
+ "ZM": {
+ "name": "Zambia"
+ },
+ "ZW": {
+ "name": "Zimbabwe"
+ },
+ "ZA": {
+ "name": "Zuid-Afrika"
+ },
+ "GS": {
+ "name": "Zuid-Georgia en Zuidelijke Sandwicheilanden"
+ },
+ "KR": {
+ "name": "Zuid-Korea"
+ },
+ "SS": {
+ "name": "Zuid-Soedan"
+ },
+ "SE": {
+ "name": "Zweden"
+ },
+ "CH": {
+ "name": "Zwitserland"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/country/nmg.json b/library/intl/resources/country/nmg.json
new file mode 100644
index 000000000..63e8d7fb9
--- /dev/null
+++ b/library/intl/resources/country/nmg.json
@@ -0,0 +1,761 @@
+{
+ "AF": {
+ "name": "Afganistaŋ"
+ },
+ "ZA": {
+ "name": "Afríka yí sí"
+ },
+ "EG": {
+ "name": "Ägyptɛn"
+ },
+ "AX": {
+ "name": "Ã…land Islands"
+ },
+ "AL": {
+ "name": "Albania"
+ },
+ "DZ": {
+ "name": "Algeria"
+ },
+ "US": {
+ "name": "Amɛŕka"
+ },
+ "AD": {
+ "name": "AndÉ”Ìra"
+ },
+ "AO": {
+ "name": "Angola"
+ },
+ "AI": {
+ "name": "Anguílla"
+ },
+ "AQ": {
+ "name": "Antarctica"
+ },
+ "AG": {
+ "name": "Antíga bá Barbúda"
+ },
+ "AR": {
+ "name": "Argentína"
+ },
+ "AM": {
+ "name": "Arménia"
+ },
+ "AW": {
+ "name": "Ãrúba"
+ },
+ "AC": {
+ "name": "Ascension Island"
+ },
+ "IL": {
+ "name": "Äsrɛl"
+ },
+ "AZ": {
+ "name": "Azerbaïjaŋ"
+ },
+ "BS": {
+ "name": "Bahamas"
+ },
+ "BH": {
+ "name": "Bahrain"
+ },
+ "BB": {
+ "name": "Barbado"
+ },
+ "BY": {
+ "name": "Belarus"
+ },
+ "BJ": {
+ "name": "Benin"
+ },
+ "BE": {
+ "name": "Bɛlgik"
+ },
+ "BZ": {
+ "name": "Bɛliz"
+ },
+ "BD": {
+ "name": "Bɛŋgladɛsh"
+ },
+ "BM": {
+ "name": "Bɛrmuda"
+ },
+ "BO": {
+ "name": "Bolivia"
+ },
+ "BA": {
+ "name": "Bosnia na Ærzegovina"
+ },
+ "BW": {
+ "name": "Botswana"
+ },
+ "BR": {
+ "name": "Brésil"
+ },
+ "BN": {
+ "name": "Brunɛi"
+ },
+ "BG": {
+ "name": "Bulgaria"
+ },
+ "BF": {
+ "name": "Burkina Faso"
+ },
+ "BI": {
+ "name": "Burundi"
+ },
+ "BT": {
+ "name": "Butaŋ"
+ },
+ "IC": {
+ "name": "Canary Islands"
+ },
+ "BQ": {
+ "name": "Caribbean Netherlands"
+ },
+ "EA": {
+ "name": "Ceuta & Melilla"
+ },
+ "CX": {
+ "name": "Christmas Island"
+ },
+ "CC": {
+ "name": "Cocos (Keeling) Islands"
+ },
+ "CW": {
+ "name": "Curaçao"
+ },
+ "DK": {
+ "name": "Danemark"
+ },
+ "DG": {
+ "name": "Diego Garcia"
+ },
+ "DM": {
+ "name": "Dominíka"
+ },
+ "EC": {
+ "name": "Ekuateur"
+ },
+ "ER": {
+ "name": "Erytrea"
+ },
+ "ET": {
+ "name": "Ethiopiá"
+ },
+ "EE": {
+ "name": "Æstonia"
+ },
+ "FR": {
+ "name": "Fala"
+ },
+ "FO": {
+ "name": "Faroe Islands"
+ },
+ "FJ": {
+ "name": "Fijiá"
+ },
+ "PH": {
+ "name": "Filipin"
+ },
+ "FI": {
+ "name": "Finlande"
+ },
+ "TF": {
+ "name": "French Southern Territories"
+ },
+ "GA": {
+ "name": "Gabɔŋ"
+ },
+ "GM": {
+ "name": "Gambia"
+ },
+ "GH": {
+ "name": "Gána"
+ },
+ "GI": {
+ "name": "Gilbratar"
+ },
+ "GL": {
+ "name": "Greenland"
+ },
+ "GD": {
+ "name": "Grenada"
+ },
+ "GR": {
+ "name": "Grɛce"
+ },
+ "GP": {
+ "name": "Guadeloup"
+ },
+ "GU": {
+ "name": "Guam"
+ },
+ "GT": {
+ "name": "Guatemala"
+ },
+ "GG": {
+ "name": "Guernsey"
+ },
+ "GN": {
+ "name": "Guine"
+ },
+ "GW": {
+ "name": "Guine Bisso"
+ },
+ "GQ": {
+ "name": "Guine Ekuatorial"
+ },
+ "PG": {
+ "name": "Guine Papuasi"
+ },
+ "GY": {
+ "name": "Guyana"
+ },
+ "GF": {
+ "name": "Guyane Fala"
+ },
+ "HT": {
+ "name": "Haïti"
+ },
+ "HK": {
+ "name": "Hong Kong SAR China"
+ },
+ "IN": {
+ "name": "India"
+ },
+ "ID": {
+ "name": "Indonesia"
+ },
+ "IQ": {
+ "name": "Irak"
+ },
+ "IR": {
+ "name": "Iran"
+ },
+ "IE": {
+ "name": "Irland"
+ },
+ "IS": {
+ "name": "Island"
+ },
+ "IM": {
+ "name": "Isle of Man"
+ },
+ "IT": {
+ "name": "Italia"
+ },
+ "JM": {
+ "name": "Jamaika"
+ },
+ "DE": {
+ "name": "Jaman"
+ },
+ "JP": {
+ "name": "Japɔn"
+ },
+ "JE": {
+ "name": "Jersey"
+ },
+ "DJ": {
+ "name": "Jibúti"
+ },
+ "JO": {
+ "name": "Jɔrdania"
+ },
+ "GE": {
+ "name": "Jɔrgia"
+ },
+ "NC": {
+ "name": "Kaledoni nwanah"
+ },
+ "KH": {
+ "name": "Kambodia"
+ },
+ "CM": {
+ "name": "Kamerun"
+ },
+ "CA": {
+ "name": "Kanada"
+ },
+ "QA": {
+ "name": "Katar"
+ },
+ "KZ": {
+ "name": "Kazakstaŋ"
+ },
+ "KE": {
+ "name": "Kɛnya"
+ },
+ "KI": {
+ "name": "Kiribati"
+ },
+ "CG": {
+ "name": "Kongo"
+ },
+ "CD": {
+ "name": "Kongó Zaïre"
+ },
+ "KP": {
+ "name": "Koré yí bvuɔ"
+ },
+ "KR": {
+ "name": "Koré yí sí"
+ },
+ "XK": {
+ "name": "Kosovo"
+ },
+ "CR": {
+ "name": "Kosta Ríka"
+ },
+ "CI": {
+ "name": "Kote d´Ivoire"
+ },
+ "KW": {
+ "name": "Kowɛit"
+ },
+ "CO": {
+ "name": "KÉ”lÉ”Ìmbia"
+ },
+ "KM": {
+ "name": "Kɔmɔr"
+ },
+ "HR": {
+ "name": "Kroasia"
+ },
+ "CU": {
+ "name": "Kuba"
+ },
+ "KG": {
+ "name": "Kyrgystaŋ"
+ },
+ "LA": {
+ "name": "Laos"
+ },
+ "LV": {
+ "name": "Latvia"
+ },
+ "LS": {
+ "name": "Lesoto"
+ },
+ "LB": {
+ "name": "Libaŋ"
+ },
+ "LR": {
+ "name": "Liberia"
+ },
+ "LY": {
+ "name": "Libya"
+ },
+ "LI": {
+ "name": "Lishenstein"
+ },
+ "LT": {
+ "name": "Lituaniá"
+ },
+ "LU": {
+ "name": "Luxembourg"
+ },
+ "MO": {
+ "name": "Macau SAR China"
+ },
+ "MK": {
+ "name": "Macedonia"
+ },
+ "MG": {
+ "name": "Madagaskar"
+ },
+ "MW": {
+ "name": "Malawi"
+ },
+ "MY": {
+ "name": "Malaysia"
+ },
+ "MV": {
+ "name": "Maldivia"
+ },
+ "ML": {
+ "name": "Mali"
+ },
+ "MT": {
+ "name": "Malta"
+ },
+ "FK": {
+ "name": "Maŋ má Falkland"
+ },
+ "CV": {
+ "name": "MaÅ‹Ì má KapvÉ›r"
+ },
+ "CK": {
+ "name": "MaÅ‹Ì má Kook"
+ },
+ "KY": {
+ "name": "MaÅ‹Ì má kumbi"
+ },
+ "MH": {
+ "name": "MaÅ‹Ì má Marshall"
+ },
+ "NF": {
+ "name": "MaÅ‹Ì má NÉ”rfÉ”rk"
+ },
+ "SB": {
+ "name": "MaÅ‹Ì má SalomÉ”n"
+ },
+ "TC": {
+ "name": "MaÅ‹Ì má Turk na Kaiko"
+ },
+ "MP": {
+ "name": "MaÅ‹Ì Mariá"
+ },
+ "MA": {
+ "name": "Marɔk"
+ },
+ "MQ": {
+ "name": "Martinika"
+ },
+ "YT": {
+ "name": "Mayɔt"
+ },
+ "MX": {
+ "name": "Mɛxik"
+ },
+ "FM": {
+ "name": "Mikronesia"
+ },
+ "AE": {
+ "name": "MinlambÉ”Ì NsaÅ‹Ìnsa mí Arabia"
+ },
+ "VI": {
+ "name": "MinsilÉ› mí maÅ‹Ì m´AmÉ›rka"
+ },
+ "VG": {
+ "name": "MinsilÉ›Ì mímaÅ‹ mí ngɛ̄lɛ̄n"
+ },
+ "MC": {
+ "name": "Monako"
+ },
+ "ME": {
+ "name": "Montenegro"
+ },
+ "MU": {
+ "name": "Morisse"
+ },
+ "MR": {
+ "name": "Moritania"
+ },
+ "MZ": {
+ "name": "Mozambik"
+ },
+ "MD": {
+ "name": "Mɔldavia"
+ },
+ "MN": {
+ "name": "Mɔngolia"
+ },
+ "MS": {
+ "name": "Mɔnserrat"
+ },
+ "MM": {
+ "name": "Myanmar"
+ },
+ "NA": {
+ "name": "Namibia"
+ },
+ "NL": {
+ "name": "Nedɛrland"
+ },
+ "NP": {
+ "name": "Nepal"
+ },
+ "NE": {
+ "name": "Niger"
+ },
+ "NG": {
+ "name": "Nigeria"
+ },
+ "NI": {
+ "name": "Nikaragua"
+ },
+ "NU": {
+ "name": "NiuÉ›"
+ },
+ "CZ": {
+ "name": "NlambÉ”Ì bó tschÉ›k"
+ },
+ "DO": {
+ "name": "NlambÉ”Ì Dominíka"
+ },
+ "GB": {
+ "name": "NlambÉ”Ì NgÉ›lÉ›n"
+ },
+ "IO": {
+ "name": "NlambÉ”Ì ngÉ›lÉ›n ma yí maÅ‹ ntsiÉ›h"
+ },
+ "NR": {
+ "name": "Noru"
+ },
+ "NO": {
+ "name": "Nɔrvɛg"
+ },
+ "OM": {
+ "name": "Oman"
+ },
+ "AU": {
+ "name": "Östraliá"
+ },
+ "AT": {
+ "name": "Ötrish"
+ },
+ "HN": {
+ "name": "Ɔndúras"
+ },
+ "HU": {
+ "name": "Ɔngría"
+ },
+ "PK": {
+ "name": "Pakistan"
+ },
+ "PS": {
+ "name": "Palɛstin"
+ },
+ "PW": {
+ "name": "Palo"
+ },
+ "PA": {
+ "name": "Panama"
+ },
+ "ES": {
+ "name": "Paŋá"
+ },
+ "PY": {
+ "name": "Paraguay"
+ },
+ "PE": {
+ "name": "Peru"
+ },
+ "PN": {
+ "name": "Pitkairn"
+ },
+ "PF": {
+ "name": "Polynesia Fala"
+ },
+ "PL": {
+ "name": "Pɔlɔŋ"
+ },
+ "PT": {
+ "name": "Pɔrtugal"
+ },
+ "PR": {
+ "name": "Puɛrto Riko"
+ },
+ "RE": {
+ "name": "Réuniɔn"
+ },
+ "RO": {
+ "name": "Roumania"
+ },
+ "RU": {
+ "name": "Russi"
+ },
+ "RW": {
+ "name": "Rwanda"
+ },
+ "KN": {
+ "name": "Saint Kitts na Nevis"
+ },
+ "SH": {
+ "name": "Saint Lina"
+ },
+ "LC": {
+ "name": "Saint Lucia"
+ },
+ "PM": {
+ "name": "Saint Peter ba Mikelɔn"
+ },
+ "VC": {
+ "name": "Saint Vincent ba Grenadines"
+ },
+ "SV": {
+ "name": "Salvadɔr"
+ },
+ "WS": {
+ "name": "Samoa"
+ },
+ "AS": {
+ "name": "Samoa m ÌAmÉ›Ìrka"
+ },
+ "SM": {
+ "name": "San Marino"
+ },
+ "ST": {
+ "name": "Sao Tomé ba Prinship"
+ },
+ "SA": {
+ "name": "Saudi Arabia"
+ },
+ "SN": {
+ "name": "Senegal"
+ },
+ "CF": {
+ "name": "Sentrafríka"
+ },
+ "RS": {
+ "name": "Serbia"
+ },
+ "SC": {
+ "name": "Seychɛlle"
+ },
+ "CN": {
+ "name": "Shine"
+ },
+ "SL": {
+ "name": "Sierra Leɔn"
+ },
+ "SG": {
+ "name": "Singapur"
+ },
+ "SX": {
+ "name": "Sint Maarten"
+ },
+ "CY": {
+ "name": "Sipria"
+ },
+ "SK": {
+ "name": "Slovakia"
+ },
+ "SI": {
+ "name": "Slovenia"
+ },
+ "SO": {
+ "name": "Somália"
+ },
+ "GS": {
+ "name": "South Georgia & South Sandwich Islands"
+ },
+ "SS": {
+ "name": "South Sudan"
+ },
+ "LK": {
+ "name": "Sri Lanka"
+ },
+ "BL": {
+ "name": "St. Barthélemy"
+ },
+ "MF": {
+ "name": "St. Martin"
+ },
+ "SD": {
+ "name": "Sudaŋ"
+ },
+ "SE": {
+ "name": "Suɛd"
+ },
+ "SR": {
+ "name": "Surinam"
+ },
+ "SJ": {
+ "name": "Svalbard & Jan Mayen"
+ },
+ "SZ": {
+ "name": "Swaziland"
+ },
+ "CH": {
+ "name": "Switzɛrland"
+ },
+ "SY": {
+ "name": "Syria"
+ },
+ "TH": {
+ "name": "Taïland"
+ },
+ "TW": {
+ "name": "Taïwan"
+ },
+ "TJ": {
+ "name": "Tajikistaŋ"
+ },
+ "TZ": {
+ "name": "Tanzánía"
+ },
+ "TL": {
+ "name": "Timɔr tsindikēh"
+ },
+ "TG": {
+ "name": "Togo"
+ },
+ "TK": {
+ "name": "Tokelo"
+ },
+ "TO": {
+ "name": "Tɔnga"
+ },
+ "TT": {
+ "name": "Trinidad ba Tobágó"
+ },
+ "TA": {
+ "name": "Tristan da Cunha"
+ },
+ "TD": {
+ "name": "Tshad"
+ },
+ "CL": {
+ "name": "Tshili"
+ },
+ "TN": {
+ "name": "Tunisiá"
+ },
+ "TR": {
+ "name": "Turki"
+ },
+ "TM": {
+ "name": "Turkmɛnistaŋ"
+ },
+ "TV": {
+ "name": "Tuvalú"
+ },
+ "UM": {
+ "name": "U.S. Outlying Islands"
+ },
+ "UG": {
+ "name": "Uganda"
+ },
+ "UA": {
+ "name": "Ukrɛn"
+ },
+ "UY": {
+ "name": "Uruguay"
+ },
+ "UZ": {
+ "name": "UsbÇkistaÅ‹"
+ },
+ "VU": {
+ "name": "Vanuatu"
+ },
+ "VA": {
+ "name": "Vatikaŋ"
+ },
+ "VE": {
+ "name": "VÇnÇzuela"
+ },
+ "VN": {
+ "name": "Viɛtnam"
+ },
+ "WF": {
+ "name": "Wallis ba Futuna"
+ },
+ "EH": {
+ "name": "Western Sahara"
+ },
+ "YE": {
+ "name": "YÇmÉ›n"
+ },
+ "ZM": {
+ "name": "Zambia"
+ },
+ "NZ": {
+ "name": "Zeland nwanah"
+ },
+ "ZW": {
+ "name": "ZimbabwÇ"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/country/nn.json b/library/intl/resources/country/nn.json
new file mode 100644
index 000000000..f6188d1de
--- /dev/null
+++ b/library/intl/resources/country/nn.json
@@ -0,0 +1,761 @@
+{
+ "AF": {
+ "name": "Afghanistan"
+ },
+ "AL": {
+ "name": "Albania"
+ },
+ "DZ": {
+ "name": "Algerie"
+ },
+ "AS": {
+ "name": "Amerikansk Samoa"
+ },
+ "AD": {
+ "name": "Andorra"
+ },
+ "AO": {
+ "name": "Angola"
+ },
+ "AI": {
+ "name": "Anguilla"
+ },
+ "AQ": {
+ "name": "Antarktis"
+ },
+ "AG": {
+ "name": "Antigua og Barbuda"
+ },
+ "AR": {
+ "name": "Argentina"
+ },
+ "AM": {
+ "name": "Armenia"
+ },
+ "AW": {
+ "name": "Aruba"
+ },
+ "AC": {
+ "name": "Ascension"
+ },
+ "AZ": {
+ "name": "Aserbajdsjan"
+ },
+ "TL": {
+ "name": "Aust-Timor"
+ },
+ "AT": {
+ "name": "Austerrike"
+ },
+ "AU": {
+ "name": "Australia"
+ },
+ "BS": {
+ "name": "Bahamas"
+ },
+ "BH": {
+ "name": "Bahrain"
+ },
+ "BD": {
+ "name": "Bangladesh"
+ },
+ "BB": {
+ "name": "Barbados"
+ },
+ "BE": {
+ "name": "Belgia"
+ },
+ "BZ": {
+ "name": "Belize"
+ },
+ "BJ": {
+ "name": "Benin"
+ },
+ "BM": {
+ "name": "Bermuda"
+ },
+ "BT": {
+ "name": "Bhutan"
+ },
+ "BO": {
+ "name": "Bolivia"
+ },
+ "BA": {
+ "name": "Bosnia og Hercegovina"
+ },
+ "BW": {
+ "name": "Botswana"
+ },
+ "BR": {
+ "name": "Brasil"
+ },
+ "IO": {
+ "name": "Britiske område i Det indiske hav"
+ },
+ "BN": {
+ "name": "Brunei Darussalam"
+ },
+ "BG": {
+ "name": "Bulgaria"
+ },
+ "BF": {
+ "name": "Burkina Faso"
+ },
+ "BI": {
+ "name": "Burundi"
+ },
+ "CA": {
+ "name": "Canada"
+ },
+ "KY": {
+ "name": "Caymanøyane"
+ },
+ "EA": {
+ "name": "Ceuta og Melilla"
+ },
+ "CL": {
+ "name": "Chile"
+ },
+ "CX": {
+ "name": "Christmasøya"
+ },
+ "CO": {
+ "name": "Colombia"
+ },
+ "CK": {
+ "name": "Cookøyane"
+ },
+ "CR": {
+ "name": "Costa Rica"
+ },
+ "CU": {
+ "name": "Cuba"
+ },
+ "CW": {
+ "name": "Curaçao"
+ },
+ "DK": {
+ "name": "Danmark"
+ },
+ "VI": {
+ "name": "Dei amerikanske jomfruøyane"
+ },
+ "VG": {
+ "name": "Dei britiske jomfruøyane"
+ },
+ "AE": {
+ "name": "Dei sameinte arabiske emirata"
+ },
+ "DO": {
+ "name": "Den dominikanske republikken"
+ },
+ "CF": {
+ "name": "Den sentralafrikanske republikken"
+ },
+ "DG": {
+ "name": "Diego Garcia"
+ },
+ "DJ": {
+ "name": "Djibouti"
+ },
+ "DM": {
+ "name": "Dominica"
+ },
+ "EC": {
+ "name": "Ecuador"
+ },
+ "EG": {
+ "name": "Egypt"
+ },
+ "GQ": {
+ "name": "Ekvatorial-Guinea"
+ },
+ "SV": {
+ "name": "El Salvador"
+ },
+ "CI": {
+ "name": "Elfenbeinskysten"
+ },
+ "ER": {
+ "name": "Eritrea"
+ },
+ "EE": {
+ "name": "Estland"
+ },
+ "ET": {
+ "name": "Etiopia"
+ },
+ "FK": {
+ "name": "Falklandsøyane"
+ },
+ "FJ": {
+ "name": "Fiji"
+ },
+ "PH": {
+ "name": "Filippinane"
+ },
+ "FI": {
+ "name": "Finland"
+ },
+ "FR": {
+ "name": "Frankrike"
+ },
+ "GF": {
+ "name": "Fransk Guyana"
+ },
+ "PF": {
+ "name": "Fransk Polynesia"
+ },
+ "TF": {
+ "name": "Franske sørområde"
+ },
+ "FO": {
+ "name": "Færøyane"
+ },
+ "GA": {
+ "name": "Gabon"
+ },
+ "GM": {
+ "name": "Gambia"
+ },
+ "GE": {
+ "name": "Georgia"
+ },
+ "GH": {
+ "name": "Ghana"
+ },
+ "GI": {
+ "name": "Gibraltar"
+ },
+ "GD": {
+ "name": "Grenada"
+ },
+ "GL": {
+ "name": "Grønland"
+ },
+ "GP": {
+ "name": "Guadeloupe"
+ },
+ "GU": {
+ "name": "Guam"
+ },
+ "GT": {
+ "name": "Guatemala"
+ },
+ "GG": {
+ "name": "Guernsey"
+ },
+ "GN": {
+ "name": "Guinea"
+ },
+ "GW": {
+ "name": "Guinea-Bissau"
+ },
+ "GY": {
+ "name": "Guyana"
+ },
+ "HT": {
+ "name": "Haiti"
+ },
+ "GR": {
+ "name": "Hellas"
+ },
+ "HN": {
+ "name": "Honduras"
+ },
+ "HK": {
+ "name": "Hongkong S.A.R. Kina"
+ },
+ "IN": {
+ "name": "India"
+ },
+ "ID": {
+ "name": "Indonesia"
+ },
+ "IQ": {
+ "name": "Irak"
+ },
+ "IR": {
+ "name": "Iran"
+ },
+ "IE": {
+ "name": "Irland"
+ },
+ "IS": {
+ "name": "Island"
+ },
+ "IL": {
+ "name": "Israel"
+ },
+ "IT": {
+ "name": "Italia"
+ },
+ "JM": {
+ "name": "Jamaica"
+ },
+ "JP": {
+ "name": "Japan"
+ },
+ "JE": {
+ "name": "Jersey"
+ },
+ "JO": {
+ "name": "Jordan"
+ },
+ "KH": {
+ "name": "Kambodsja"
+ },
+ "CM": {
+ "name": "Kamerun"
+ },
+ "IC": {
+ "name": "Kanariøyane"
+ },
+ "CV": {
+ "name": "Kapp Verde"
+ },
+ "BQ": {
+ "name": "Karibisk Nederland"
+ },
+ "KZ": {
+ "name": "Kasakhstan"
+ },
+ "KE": {
+ "name": "Kenya"
+ },
+ "CN": {
+ "name": "Kina"
+ },
+ "KG": {
+ "name": "Kirgisistan"
+ },
+ "KI": {
+ "name": "Kiribati"
+ },
+ "CC": {
+ "name": "Kokosøyane"
+ },
+ "KM": {
+ "name": "Komorene"
+ },
+ "CG": {
+ "name": "Kongo-Brazzaville"
+ },
+ "CD": {
+ "name": "Kongo-Kinshasa"
+ },
+ "XK": {
+ "name": "Kosovo"
+ },
+ "HR": {
+ "name": "Kroatia"
+ },
+ "KW": {
+ "name": "Kuwait"
+ },
+ "BY": {
+ "name": "Kviterussland"
+ },
+ "CY": {
+ "name": "Kypros"
+ },
+ "LA": {
+ "name": "Laos"
+ },
+ "LV": {
+ "name": "Latvia"
+ },
+ "LS": {
+ "name": "Lesotho"
+ },
+ "LB": {
+ "name": "Libanon"
+ },
+ "LR": {
+ "name": "Liberia"
+ },
+ "LY": {
+ "name": "Libya"
+ },
+ "LI": {
+ "name": "Liechtenstein"
+ },
+ "LT": {
+ "name": "Litauen"
+ },
+ "LU": {
+ "name": "Luxembourg"
+ },
+ "MO": {
+ "name": "Macao S.A.R. Kina"
+ },
+ "MG": {
+ "name": "Madagaskar"
+ },
+ "MK": {
+ "name": "Makedonia"
+ },
+ "MW": {
+ "name": "Malawi"
+ },
+ "MY": {
+ "name": "Malaysia"
+ },
+ "MV": {
+ "name": "Maldivane"
+ },
+ "ML": {
+ "name": "Mali"
+ },
+ "MT": {
+ "name": "Malta"
+ },
+ "IM": {
+ "name": "Man"
+ },
+ "MA": {
+ "name": "Marokko"
+ },
+ "MH": {
+ "name": "Marshalløyane"
+ },
+ "MQ": {
+ "name": "Martinique"
+ },
+ "MR": {
+ "name": "Mauritania"
+ },
+ "MU": {
+ "name": "Mauritius"
+ },
+ "YT": {
+ "name": "Mayotte"
+ },
+ "MX": {
+ "name": "Mexico"
+ },
+ "FM": {
+ "name": "Mikronesiaføderasjonen"
+ },
+ "MD": {
+ "name": "Moldova"
+ },
+ "MC": {
+ "name": "Monaco"
+ },
+ "MN": {
+ "name": "Mongolia"
+ },
+ "ME": {
+ "name": "Montenegro"
+ },
+ "MS": {
+ "name": "Montserrat"
+ },
+ "MZ": {
+ "name": "Mosambik"
+ },
+ "MM": {
+ "name": "Myanmar"
+ },
+ "NA": {
+ "name": "Namibia"
+ },
+ "NR": {
+ "name": "Nauru"
+ },
+ "NL": {
+ "name": "Nederland"
+ },
+ "SX": {
+ "name": "Nederlandsk St. Martin"
+ },
+ "NP": {
+ "name": "Nepal"
+ },
+ "NZ": {
+ "name": "New Zealand"
+ },
+ "NI": {
+ "name": "Nicaragua"
+ },
+ "NE": {
+ "name": "Niger"
+ },
+ "NG": {
+ "name": "Nigeria"
+ },
+ "NU": {
+ "name": "Niue"
+ },
+ "KP": {
+ "name": "Nord-Korea"
+ },
+ "MP": {
+ "name": "Nord-Marianane"
+ },
+ "NO": {
+ "name": "Noreg"
+ },
+ "NF": {
+ "name": "Norfolkøyane"
+ },
+ "NC": {
+ "name": "Ny-Caledonia"
+ },
+ "OM": {
+ "name": "Oman"
+ },
+ "PK": {
+ "name": "Pakistan"
+ },
+ "PW": {
+ "name": "Palau"
+ },
+ "PS": {
+ "name": "Palestinsk territorium"
+ },
+ "PA": {
+ "name": "Panama"
+ },
+ "PG": {
+ "name": "Papua Ny-Guinea"
+ },
+ "PY": {
+ "name": "Paraguay"
+ },
+ "PE": {
+ "name": "Peru"
+ },
+ "PN": {
+ "name": "Pitcairn"
+ },
+ "PL": {
+ "name": "Polen"
+ },
+ "PT": {
+ "name": "Portugal"
+ },
+ "PR": {
+ "name": "Puerto Rico"
+ },
+ "QA": {
+ "name": "Qatar"
+ },
+ "RE": {
+ "name": "Réunion"
+ },
+ "RO": {
+ "name": "Romania"
+ },
+ "RU": {
+ "name": "Russland"
+ },
+ "RW": {
+ "name": "Rwanda"
+ },
+ "BL": {
+ "name": "Saint Barthélemy"
+ },
+ "SH": {
+ "name": "Saint Helena"
+ },
+ "MF": {
+ "name": "Saint Martin"
+ },
+ "SB": {
+ "name": "Salomonøyane"
+ },
+ "WS": {
+ "name": "Samoa"
+ },
+ "SM": {
+ "name": "San Marino"
+ },
+ "ST": {
+ "name": "São Tomé og Príncipe"
+ },
+ "SA": {
+ "name": "Saudi Arabia"
+ },
+ "SN": {
+ "name": "Senegal"
+ },
+ "RS": {
+ "name": "Serbia"
+ },
+ "SC": {
+ "name": "Seychellane"
+ },
+ "SL": {
+ "name": "Sierra Leone"
+ },
+ "SG": {
+ "name": "Singapore"
+ },
+ "SK": {
+ "name": "Slovakia"
+ },
+ "SI": {
+ "name": "Slovenia"
+ },
+ "SO": {
+ "name": "Somalia"
+ },
+ "ES": {
+ "name": "Spania"
+ },
+ "LK": {
+ "name": "Sri Lanka"
+ },
+ "KN": {
+ "name": "St. Christopher og Nevis"
+ },
+ "LC": {
+ "name": "St. Lucia"
+ },
+ "PM": {
+ "name": "St. Pierre og Miquelon"
+ },
+ "VC": {
+ "name": "St. Vincent og Grenadinane"
+ },
+ "GB": {
+ "name": "Storbritannia"
+ },
+ "SD": {
+ "name": "Sudan"
+ },
+ "SR": {
+ "name": "Surinam"
+ },
+ "SJ": {
+ "name": "Svalbard og Jan Mayen"
+ },
+ "CH": {
+ "name": "Sveits"
+ },
+ "SE": {
+ "name": "Sverige"
+ },
+ "SZ": {
+ "name": "Swaziland"
+ },
+ "SY": {
+ "name": "Syria"
+ },
+ "ZA": {
+ "name": "Sør-Afrika"
+ },
+ "GS": {
+ "name": "Sør-Georgia og Sør-Sandwich-øyane"
+ },
+ "KR": {
+ "name": "Sør-Korea"
+ },
+ "SS": {
+ "name": "Sør-Sudan"
+ },
+ "TJ": {
+ "name": "Tadsjikistan"
+ },
+ "TW": {
+ "name": "Taiwan"
+ },
+ "TZ": {
+ "name": "Tanzania"
+ },
+ "TD": {
+ "name": "Tchad"
+ },
+ "TH": {
+ "name": "Thailand"
+ },
+ "TG": {
+ "name": "Togo"
+ },
+ "TK": {
+ "name": "Tokelau"
+ },
+ "TO": {
+ "name": "Tonga"
+ },
+ "TT": {
+ "name": "Trinidad og Tobago"
+ },
+ "TA": {
+ "name": "Tristan da Cunha"
+ },
+ "CZ": {
+ "name": "Tsjekkia"
+ },
+ "TN": {
+ "name": "Tunisia"
+ },
+ "TM": {
+ "name": "Turkmenistan"
+ },
+ "TC": {
+ "name": "Turks- og Caicosøyane"
+ },
+ "TV": {
+ "name": "Tuvalu"
+ },
+ "TR": {
+ "name": "Tyrkia"
+ },
+ "DE": {
+ "name": "Tyskland"
+ },
+ "UG": {
+ "name": "Uganda"
+ },
+ "UA": {
+ "name": "Ukraina"
+ },
+ "HU": {
+ "name": "Ungarn"
+ },
+ "UY": {
+ "name": "Uruguay"
+ },
+ "US": {
+ "name": "USA"
+ },
+ "UM": {
+ "name": "USAs ytre småøyar"
+ },
+ "UZ": {
+ "name": "Usbekistan"
+ },
+ "VU": {
+ "name": "Vanuatu"
+ },
+ "VA": {
+ "name": "Vatikanstaten"
+ },
+ "VE": {
+ "name": "Venezuela"
+ },
+ "EH": {
+ "name": "Vest-Sahara"
+ },
+ "VN": {
+ "name": "Vietnam"
+ },
+ "WF": {
+ "name": "Wallis og Futuna"
+ },
+ "YE": {
+ "name": "Yemen"
+ },
+ "ZM": {
+ "name": "Zambia"
+ },
+ "ZW": {
+ "name": "Zimbabwe"
+ },
+ "AX": {
+ "name": "Ã…land"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/country/nus.json b/library/intl/resources/country/nus.json
new file mode 100644
index 000000000..e48b5158b
--- /dev/null
+++ b/library/intl/resources/country/nus.json
@@ -0,0 +1,761 @@
+{
+ "AF": {
+ "name": "Abganithtan"
+ },
+ "AZ": {
+ "name": "Adhe̱rbe̱ja̱n"
+ },
+ "AR": {
+ "name": "Aɛrgentin"
+ },
+ "AM": {
+ "name": "Aɛrmänia"
+ },
+ "AX": {
+ "name": "Ã…land Islands"
+ },
+ "AL": {
+ "name": "Albänia"
+ },
+ "DZ": {
+ "name": "Algeria"
+ },
+ "AS": {
+ "name": "Amerika thamow"
+ },
+ "AD": {
+ "name": "Andora"
+ },
+ "AQ": {
+ "name": "Antarctica"
+ },
+ "AG": {
+ "name": "Antiguaa kɛnɛ Barbuda"
+ },
+ "AO": {
+ "name": "AÅ‹gola"
+ },
+ "AI": {
+ "name": "Aŋguɛla"
+ },
+ "AW": {
+ "name": "Aruba"
+ },
+ "AC": {
+ "name": "Ascension Island"
+ },
+ "AU": {
+ "name": "Athɔra̱lia"
+ },
+ "AT": {
+ "name": "Athtɛria"
+ },
+ "BS": {
+ "name": "Bämuɔth"
+ },
+ "BR": {
+ "name": "Bäraadhiil"
+ },
+ "BB": {
+ "name": "Bärbadoth"
+ },
+ "BH": {
+ "name": "Ba̱reen"
+ },
+ "BY": {
+ "name": "Be̱lɛruth"
+ },
+ "BE": {
+ "name": "Be̱lgim"
+ },
+ "BD": {
+ "name": "Bengeladiec"
+ },
+ "BJ": {
+ "name": "Be̱ni̱n"
+ },
+ "BM": {
+ "name": "Be̱rmudaa"
+ },
+ "BZ": {
+ "name": "Bilidha"
+ },
+ "BW": {
+ "name": "Bothiwaana"
+ },
+ "BA": {
+ "name": "Bothnia kɛnɛ ɣärgobinia"
+ },
+ "BG": {
+ "name": "Bulga̱a̱ria"
+ },
+ "BO": {
+ "name": "Bulibia"
+ },
+ "BF": {
+ "name": "Burkinɛ pa̱thu"
+ },
+ "BI": {
+ "name": "Burundi"
+ },
+ "BN": {
+ "name": "Burunɛy"
+ },
+ "VG": {
+ "name": "Burutic dhuɔ̱ɔ̱l be̱rgin"
+ },
+ "IO": {
+ "name": "Burutic ɣe̱ndian oce̱n"
+ },
+ "BT": {
+ "name": "Buta̱n"
+ },
+ "TD": {
+ "name": "Ca̱d"
+ },
+ "IC": {
+ "name": "Canary Islands"
+ },
+ "BQ": {
+ "name": "Caribbean Netherlands"
+ },
+ "CN": {
+ "name": "Cayna"
+ },
+ "EA": {
+ "name": "Ceuta & Melilla"
+ },
+ "CF": {
+ "name": "Cɛntrɔl aprika repuɔblic"
+ },
+ "CX": {
+ "name": "Christmas Island"
+ },
+ "CL": {
+ "name": "Cili̱"
+ },
+ "CC": {
+ "name": "Cocos (Keeling) Islands"
+ },
+ "CD": {
+ "name": "Congo - Kinshasa"
+ },
+ "CU": {
+ "name": "Cuba"
+ },
+ "CW": {
+ "name": "Curaçao"
+ },
+ "CY": {
+ "name": "Cyprus"
+ },
+ "CZ": {
+ "name": "Czech Republic"
+ },
+ "DK": {
+ "name": "Denmark"
+ },
+ "DG": {
+ "name": "Diego Garcia"
+ },
+ "DJ": {
+ "name": "Djibouti"
+ },
+ "DM": {
+ "name": "Dominica"
+ },
+ "DO": {
+ "name": "Dominican Republic"
+ },
+ "EC": {
+ "name": "Ecuador"
+ },
+ "EG": {
+ "name": "Egypt"
+ },
+ "SV": {
+ "name": "El Salvador"
+ },
+ "GQ": {
+ "name": "Equatorial Guinea"
+ },
+ "ER": {
+ "name": "Eritrea"
+ },
+ "EE": {
+ "name": "Estonia"
+ },
+ "ET": {
+ "name": "Ethiopia"
+ },
+ "FK": {
+ "name": "Falkland Islands"
+ },
+ "FO": {
+ "name": "Faroe Islands"
+ },
+ "FJ": {
+ "name": "Fiji"
+ },
+ "FI": {
+ "name": "Finland"
+ },
+ "FR": {
+ "name": "France"
+ },
+ "GF": {
+ "name": "French Guiana"
+ },
+ "PF": {
+ "name": "French Polynesia"
+ },
+ "TF": {
+ "name": "French Southern Territories"
+ },
+ "GA": {
+ "name": "Gabon"
+ },
+ "GM": {
+ "name": "Gambia"
+ },
+ "GE": {
+ "name": "Georgia"
+ },
+ "DE": {
+ "name": "Germany"
+ },
+ "GH": {
+ "name": "Ghana"
+ },
+ "GI": {
+ "name": "Gibraltar"
+ },
+ "GR": {
+ "name": "Greece"
+ },
+ "GL": {
+ "name": "Greenland"
+ },
+ "GD": {
+ "name": "Grenada"
+ },
+ "GP": {
+ "name": "Guadeloupe"
+ },
+ "GU": {
+ "name": "Guam"
+ },
+ "GT": {
+ "name": "Guatemala"
+ },
+ "GG": {
+ "name": "Guernsey"
+ },
+ "GN": {
+ "name": "Guinea"
+ },
+ "GW": {
+ "name": "Guinea-Bissau"
+ },
+ "GY": {
+ "name": "Guyana"
+ },
+ "HT": {
+ "name": "Haiti"
+ },
+ "HN": {
+ "name": "Honduras"
+ },
+ "HK": {
+ "name": "Hong Kong SAR China"
+ },
+ "HU": {
+ "name": "Hungary"
+ },
+ "IS": {
+ "name": "Iceland"
+ },
+ "IN": {
+ "name": "India"
+ },
+ "ID": {
+ "name": "Indonesia"
+ },
+ "IR": {
+ "name": "Iran"
+ },
+ "IQ": {
+ "name": "Iraq"
+ },
+ "IE": {
+ "name": "Ireland"
+ },
+ "IM": {
+ "name": "Isle of Man"
+ },
+ "IL": {
+ "name": "Israel"
+ },
+ "IT": {
+ "name": "Italy"
+ },
+ "JM": {
+ "name": "Jamaica"
+ },
+ "JP": {
+ "name": "Japan"
+ },
+ "JE": {
+ "name": "Jersey"
+ },
+ "JO": {
+ "name": "Jordan"
+ },
+ "CA": {
+ "name": "Känɛda"
+ },
+ "KY": {
+ "name": "Kaymɛn ɣa̱ylɛn"
+ },
+ "KZ": {
+ "name": "Kazakhstan"
+ },
+ "KE": {
+ "name": "Kenya"
+ },
+ "CM": {
+ "name": "Kɛmɛrun"
+ },
+ "CV": {
+ "name": "Kɛp bedi ɣa̱ylɛn"
+ },
+ "KI": {
+ "name": "Kiribati"
+ },
+ "CI": {
+ "name": "Kodibo̱o̱"
+ },
+ "CO": {
+ "name": "Kolombia"
+ },
+ "KH": {
+ "name": "Kombodia"
+ },
+ "KM": {
+ "name": "Komruth"
+ },
+ "HR": {
+ "name": "Korwaatia"
+ },
+ "XK": {
+ "name": "Kosovo"
+ },
+ "CR": {
+ "name": "Kothtirika"
+ },
+ "CG": {
+ "name": "Kɔŋgɔ"
+ },
+ "CK": {
+ "name": "Kuk ɣa̱ylɛn"
+ },
+ "KW": {
+ "name": "Kuwait"
+ },
+ "KG": {
+ "name": "Kyrgyzstan"
+ },
+ "LA": {
+ "name": "Laos"
+ },
+ "LV": {
+ "name": "Latvia"
+ },
+ "LB": {
+ "name": "Lebanon"
+ },
+ "LS": {
+ "name": "Lesotho"
+ },
+ "LR": {
+ "name": "Liberia"
+ },
+ "LY": {
+ "name": "Libya"
+ },
+ "LI": {
+ "name": "Liechtenstein"
+ },
+ "LT": {
+ "name": "Lithuania"
+ },
+ "LU": {
+ "name": "Luxembourg"
+ },
+ "MO": {
+ "name": "Macau SAR China"
+ },
+ "MK": {
+ "name": "Macedonia"
+ },
+ "MG": {
+ "name": "Madagascar"
+ },
+ "MW": {
+ "name": "Malawi"
+ },
+ "MY": {
+ "name": "Malaysia"
+ },
+ "MV": {
+ "name": "Maldives"
+ },
+ "ML": {
+ "name": "Mali"
+ },
+ "MT": {
+ "name": "Malta"
+ },
+ "MH": {
+ "name": "Marshall Islands"
+ },
+ "MQ": {
+ "name": "Martinique"
+ },
+ "MR": {
+ "name": "Mauritania"
+ },
+ "MU": {
+ "name": "Mauritius"
+ },
+ "YT": {
+ "name": "Mayotte"
+ },
+ "MX": {
+ "name": "Mexico"
+ },
+ "FM": {
+ "name": "Micronesia"
+ },
+ "MD": {
+ "name": "Moldova"
+ },
+ "MC": {
+ "name": "Monaco"
+ },
+ "MN": {
+ "name": "Mongolia"
+ },
+ "ME": {
+ "name": "Montenegro"
+ },
+ "MS": {
+ "name": "Montserrat"
+ },
+ "MA": {
+ "name": "Morocco"
+ },
+ "MZ": {
+ "name": "Mozambique"
+ },
+ "MM": {
+ "name": "Myanmar (Burma)"
+ },
+ "NA": {
+ "name": "Namibia"
+ },
+ "NR": {
+ "name": "Nauru"
+ },
+ "NP": {
+ "name": "Nepal"
+ },
+ "NL": {
+ "name": "Netherlands"
+ },
+ "NC": {
+ "name": "New Caledonia"
+ },
+ "NZ": {
+ "name": "New Zealand"
+ },
+ "NI": {
+ "name": "Nicaragua"
+ },
+ "NE": {
+ "name": "Niger"
+ },
+ "NG": {
+ "name": "Nigeria"
+ },
+ "NU": {
+ "name": "Niue"
+ },
+ "NF": {
+ "name": "Norfolk Island"
+ },
+ "KP": {
+ "name": "North Korea"
+ },
+ "MP": {
+ "name": "Northern Mariana Islands"
+ },
+ "NO": {
+ "name": "Norway"
+ },
+ "OM": {
+ "name": "Oman"
+ },
+ "PK": {
+ "name": "Pakistan"
+ },
+ "PW": {
+ "name": "Palau"
+ },
+ "PS": {
+ "name": "Palestinian Territories"
+ },
+ "PA": {
+ "name": "Panama"
+ },
+ "PG": {
+ "name": "Papua New Guinea"
+ },
+ "PY": {
+ "name": "Paraguay"
+ },
+ "PE": {
+ "name": "Peru"
+ },
+ "PH": {
+ "name": "Philippines"
+ },
+ "PN": {
+ "name": "Pitcairn Islands"
+ },
+ "PL": {
+ "name": "Poland"
+ },
+ "PT": {
+ "name": "Portugal"
+ },
+ "PR": {
+ "name": "Puerto Rico"
+ },
+ "QA": {
+ "name": "Qatar"
+ },
+ "RE": {
+ "name": "Réunion"
+ },
+ "RO": {
+ "name": "Romania"
+ },
+ "RU": {
+ "name": "Russia"
+ },
+ "RW": {
+ "name": "Rwanda"
+ },
+ "WS": {
+ "name": "Samoa"
+ },
+ "SM": {
+ "name": "San Marino"
+ },
+ "ST": {
+ "name": "São Tomé & Príncipe"
+ },
+ "SA": {
+ "name": "Saudi Arabia"
+ },
+ "SN": {
+ "name": "Senegal"
+ },
+ "RS": {
+ "name": "Serbia"
+ },
+ "SC": {
+ "name": "Seychelles"
+ },
+ "SL": {
+ "name": "Sierra Leone"
+ },
+ "SG": {
+ "name": "Singapore"
+ },
+ "SX": {
+ "name": "Sint Maarten"
+ },
+ "SK": {
+ "name": "Slovakia"
+ },
+ "SI": {
+ "name": "Slovenia"
+ },
+ "SB": {
+ "name": "Solomon Islands"
+ },
+ "SO": {
+ "name": "Somalia"
+ },
+ "ZA": {
+ "name": "South Africa"
+ },
+ "GS": {
+ "name": "South Georgia & South Sandwich Islands"
+ },
+ "KR": {
+ "name": "South Korea"
+ },
+ "SS": {
+ "name": "South Sudan"
+ },
+ "ES": {
+ "name": "Spain"
+ },
+ "LK": {
+ "name": "Sri Lanka"
+ },
+ "BL": {
+ "name": "St. Barthélemy"
+ },
+ "SH": {
+ "name": "St. Helena"
+ },
+ "KN": {
+ "name": "St. Kitts & Nevis"
+ },
+ "LC": {
+ "name": "St. Lucia"
+ },
+ "MF": {
+ "name": "St. Martin"
+ },
+ "PM": {
+ "name": "St. Pierre & Miquelon"
+ },
+ "VC": {
+ "name": "St. Vincent & Grenadines"
+ },
+ "SD": {
+ "name": "Sudan"
+ },
+ "SR": {
+ "name": "Suriname"
+ },
+ "SJ": {
+ "name": "Svalbard & Jan Mayen"
+ },
+ "SZ": {
+ "name": "Swaziland"
+ },
+ "SE": {
+ "name": "Sweden"
+ },
+ "CH": {
+ "name": "Switzerland"
+ },
+ "SY": {
+ "name": "Syria"
+ },
+ "TW": {
+ "name": "Taiwan"
+ },
+ "TJ": {
+ "name": "Tajikistan"
+ },
+ "TZ": {
+ "name": "Tanzania"
+ },
+ "TH": {
+ "name": "Thailand"
+ },
+ "TL": {
+ "name": "Timor-Leste"
+ },
+ "TG": {
+ "name": "Togo"
+ },
+ "TK": {
+ "name": "Tokelau"
+ },
+ "TO": {
+ "name": "Tonga"
+ },
+ "TT": {
+ "name": "Trinidad & Tobago"
+ },
+ "TA": {
+ "name": "Tristan da Cunha"
+ },
+ "TN": {
+ "name": "Tunisia"
+ },
+ "TR": {
+ "name": "Turkey"
+ },
+ "TM": {
+ "name": "Turkmenistan"
+ },
+ "TC": {
+ "name": "Turks & Caicos Islands"
+ },
+ "TV": {
+ "name": "Tuvalu"
+ },
+ "UM": {
+ "name": "U.S. Outlying Islands"
+ },
+ "VI": {
+ "name": "U.S. Virgin Islands"
+ },
+ "UG": {
+ "name": "Uganda"
+ },
+ "UA": {
+ "name": "Ukraine"
+ },
+ "AE": {
+ "name": "United Arab Emirates"
+ },
+ "GB": {
+ "name": "United Kingdom"
+ },
+ "US": {
+ "name": "United States"
+ },
+ "UY": {
+ "name": "Uruguay"
+ },
+ "UZ": {
+ "name": "Uzbekistan"
+ },
+ "VU": {
+ "name": "Vanuatu"
+ },
+ "VA": {
+ "name": "Vatican City"
+ },
+ "VE": {
+ "name": "Venezuela"
+ },
+ "VN": {
+ "name": "Vietnam"
+ },
+ "WF": {
+ "name": "Wallis & Futuna"
+ },
+ "EH": {
+ "name": "Western Sahara"
+ },
+ "YE": {
+ "name": "Yemen"
+ },
+ "ZM": {
+ "name": "Zambia"
+ },
+ "ZW": {
+ "name": "Zimbabwe"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/country/nyn.json b/library/intl/resources/country/nyn.json
new file mode 100644
index 000000000..3340bf9ca
--- /dev/null
+++ b/library/intl/resources/country/nyn.json
@@ -0,0 +1,761 @@
+{
+ "AF": {
+ "name": "Afuganistani"
+ },
+ "IS": {
+ "name": "Aisilandi"
+ },
+ "CI": {
+ "name": "Aivore Kositi"
+ },
+ "AX": {
+ "name": "Ã…land Islands"
+ },
+ "AE": {
+ "name": "Amahanga ga Buharabu ageeteereine"
+ },
+ "US": {
+ "name": "Amerika"
+ },
+ "AD": {
+ "name": "Andora"
+ },
+ "AG": {
+ "name": "Angiguwa na Babuda"
+ },
+ "AO": {
+ "name": "Angora"
+ },
+ "AI": {
+ "name": "Angwira"
+ },
+ "AQ": {
+ "name": "Antarctica"
+ },
+ "AR": {
+ "name": "Arigentina"
+ },
+ "DZ": {
+ "name": "Arigyeriya"
+ },
+ "AM": {
+ "name": "Arimeniya"
+ },
+ "AW": {
+ "name": "Aruba"
+ },
+ "AL": {
+ "name": "Arubania"
+ },
+ "AC": {
+ "name": "Ascension Island"
+ },
+ "AZ": {
+ "name": "Azabagyani"
+ },
+ "BB": {
+ "name": "Babadosi"
+ },
+ "BS": {
+ "name": "Bahama"
+ },
+ "BH": {
+ "name": "Bahareni"
+ },
+ "BD": {
+ "name": "Bangaradeshi"
+ },
+ "BY": {
+ "name": "Bararusi"
+ },
+ "BJ": {
+ "name": "Benini"
+ },
+ "BM": {
+ "name": "Berimuda"
+ },
+ "BZ": {
+ "name": "Berize"
+ },
+ "BF": {
+ "name": "Bokina Faso"
+ },
+ "BO": {
+ "name": "Boriiviya"
+ },
+ "BW": {
+ "name": "Botswana"
+ },
+ "BA": {
+ "name": "Boziniya na Hezegovina"
+ },
+ "BE": {
+ "name": "Bubirigi"
+ },
+ "FR": {
+ "name": "Bufaransa"
+ },
+ "FI": {
+ "name": "Bufini"
+ },
+ "DE": {
+ "name": "Bugirimaani"
+ },
+ "GB": {
+ "name": "Bungyereza"
+ },
+ "BR": {
+ "name": "Buraziiri"
+ },
+ "BG": {
+ "name": "Burugariya"
+ },
+ "TL": {
+ "name": "Burugweizooba bwa Timori"
+ },
+ "BI": {
+ "name": "Burundi"
+ },
+ "BN": {
+ "name": "Burunei"
+ },
+ "BT": {
+ "name": "Butani"
+ },
+ "TR": {
+ "name": "Buturuki \/Take"
+ },
+ "IC": {
+ "name": "Canary Islands"
+ },
+ "BQ": {
+ "name": "Caribbean Netherlands"
+ },
+ "EA": {
+ "name": "Ceuta & Melilla"
+ },
+ "TD": {
+ "name": "Chadi"
+ },
+ "CL": {
+ "name": "Chile"
+ },
+ "CN": {
+ "name": "China"
+ },
+ "CX": {
+ "name": "Christmas Island"
+ },
+ "CC": {
+ "name": "Cocos (Keeling) Islands"
+ },
+ "CU": {
+ "name": "Cuba"
+ },
+ "CW": {
+ "name": "Curaçao"
+ },
+ "DK": {
+ "name": "Deenimaaka"
+ },
+ "CD": {
+ "name": "Demokoratika Ripaaburika ya Kongo"
+ },
+ "DG": {
+ "name": "Diego Garcia"
+ },
+ "DM": {
+ "name": "Dominika"
+ },
+ "MP": {
+ "name": "Ebizinga by’amatemba ga Mariana"
+ },
+ "TC": {
+ "name": "Ebizinga bya Buturuki na Kaiko"
+ },
+ "FK": {
+ "name": "Ebizinga bya Faakilanda"
+ },
+ "IO": {
+ "name": "Ebizinga bya Indian ebya Bungyereza"
+ },
+ "KY": {
+ "name": "Ebizinga bya Kayimani"
+ },
+ "CV": {
+ "name": "Ebizinga bya Kepuvade"
+ },
+ "CK": {
+ "name": "Ebizinga bya Kuuku"
+ },
+ "MH": {
+ "name": "Ebizinga bya Marshaa"
+ },
+ "SB": {
+ "name": "Ebizinga bya Surimaani"
+ },
+ "VI": {
+ "name": "Ebizinga bya Virigini ebya Amerika"
+ },
+ "VG": {
+ "name": "Ebizinga bya Virigini ebya Bungyereza"
+ },
+ "CF": {
+ "name": "Eihanga rya Rwagati ya Afirika"
+ },
+ "NF": {
+ "name": "Ekizinga Norifoko"
+ },
+ "SV": {
+ "name": "Eri Salivado"
+ },
+ "ER": {
+ "name": "Eriteriya"
+ },
+ "EE": {
+ "name": "Esitoniya"
+ },
+ "ET": {
+ "name": "Ethiyopiya"
+ },
+ "FO": {
+ "name": "Faroe Islands"
+ },
+ "FJ": {
+ "name": "Figyi"
+ },
+ "PH": {
+ "name": "Firipino"
+ },
+ "TF": {
+ "name": "French Southern Territories"
+ },
+ "GA": {
+ "name": "Gabooni"
+ },
+ "GM": {
+ "name": "Gambiya"
+ },
+ "GH": {
+ "name": "Gana"
+ },
+ "GI": {
+ "name": "Giburaata"
+ },
+ "GN": {
+ "name": "Gine"
+ },
+ "GW": {
+ "name": "Ginebisau"
+ },
+ "GG": {
+ "name": "Guernsey"
+ },
+ "GQ": {
+ "name": "Guni"
+ },
+ "GD": {
+ "name": "Gurenada"
+ },
+ "GL": {
+ "name": "Guriinirandi"
+ },
+ "GR": {
+ "name": "Guriisi"
+ },
+ "GY": {
+ "name": "Guyana"
+ },
+ "GF": {
+ "name": "Guyana ya Bufaransa"
+ },
+ "GP": {
+ "name": "Gwaderupe"
+ },
+ "GU": {
+ "name": "Gwamu"
+ },
+ "GT": {
+ "name": "Gwatemara"
+ },
+ "JM": {
+ "name": "Gyamaika"
+ },
+ "JP": {
+ "name": "Gyapaani"
+ },
+ "DJ": {
+ "name": "Gyibuti"
+ },
+ "GE": {
+ "name": "Gyogiya"
+ },
+ "HT": {
+ "name": "Haiti"
+ },
+ "HU": {
+ "name": "Hangare"
+ },
+ "HN": {
+ "name": "Hondurasi"
+ },
+ "HK": {
+ "name": "Hong Kong SAR China"
+ },
+ "NL": {
+ "name": "Hoorandi"
+ },
+ "EC": {
+ "name": "Ikweda"
+ },
+ "IN": {
+ "name": "Indiya"
+ },
+ "ID": {
+ "name": "Indoneeziya"
+ },
+ "IQ": {
+ "name": "Iraaka"
+ },
+ "IR": {
+ "name": "Iraani"
+ },
+ "IE": {
+ "name": "Irerandi"
+ },
+ "IL": {
+ "name": "Isirairi"
+ },
+ "IM": {
+ "name": "Isle of Man"
+ },
+ "IT": {
+ "name": "Itare"
+ },
+ "JE": {
+ "name": "Jersey"
+ },
+ "KH": {
+ "name": "Kambodiya"
+ },
+ "CM": {
+ "name": "Kameruuni"
+ },
+ "CA": {
+ "name": "Kanada"
+ },
+ "QA": {
+ "name": "Kata"
+ },
+ "KZ": {
+ "name": "Kazakisitani"
+ },
+ "KE": {
+ "name": "Kenya"
+ },
+ "KI": {
+ "name": "Kiribati"
+ },
+ "KG": {
+ "name": "Kirigizistani"
+ },
+ "CG": {
+ "name": "Kongo"
+ },
+ "HR": {
+ "name": "Korasiya"
+ },
+ "KR": {
+ "name": "Koreya Amashuuma"
+ },
+ "KP": {
+ "name": "Koreya Amatemba"
+ },
+ "CO": {
+ "name": "Korombiya"
+ },
+ "KM": {
+ "name": "Koromo"
+ },
+ "CR": {
+ "name": "Kositarika"
+ },
+ "XK": {
+ "name": "Kosovo"
+ },
+ "KW": {
+ "name": "Kuweiti"
+ },
+ "LU": {
+ "name": "Lakizembaaga"
+ },
+ "LV": {
+ "name": "Latviya"
+ },
+ "LA": {
+ "name": "Layosi"
+ },
+ "LB": {
+ "name": "Lebanoni"
+ },
+ "LS": {
+ "name": "Lesotho"
+ },
+ "LR": {
+ "name": "Liberiya"
+ },
+ "LY": {
+ "name": "Libya"
+ },
+ "LI": {
+ "name": "Lishenteni"
+ },
+ "LT": {
+ "name": "Lithuania"
+ },
+ "MO": {
+ "name": "Macau SAR China"
+ },
+ "MG": {
+ "name": "Madagasika"
+ },
+ "MW": {
+ "name": "Marawi"
+ },
+ "MY": {
+ "name": "marayizia"
+ },
+ "ML": {
+ "name": "Mari"
+ },
+ "MV": {
+ "name": "Maridives"
+ },
+ "MT": {
+ "name": "Marita"
+ },
+ "MQ": {
+ "name": "Martinique"
+ },
+ "MK": {
+ "name": "Masedoonia"
+ },
+ "MU": {
+ "name": "Maurishiasi"
+ },
+ "MR": {
+ "name": "Mauriteeniya"
+ },
+ "YT": {
+ "name": "Mayote"
+ },
+ "MX": {
+ "name": "Mexico"
+ },
+ "FM": {
+ "name": "Mikironesiya"
+ },
+ "EG": {
+ "name": "Misiri"
+ },
+ "MC": {
+ "name": "Monaco"
+ },
+ "MN": {
+ "name": "Mongoria"
+ },
+ "ME": {
+ "name": "Montenegro"
+ },
+ "MS": {
+ "name": "Montserrati"
+ },
+ "MD": {
+ "name": "Moridova"
+ },
+ "MA": {
+ "name": "Morocco"
+ },
+ "MZ": {
+ "name": "Mozambique"
+ },
+ "MM": {
+ "name": "Myanamar"
+ },
+ "NE": {
+ "name": "Naigya"
+ },
+ "NG": {
+ "name": "Naigyeriya"
+ },
+ "NA": {
+ "name": "Namibiya"
+ },
+ "NR": {
+ "name": "Nauru"
+ },
+ "NP": {
+ "name": "Nepo"
+ },
+ "NI": {
+ "name": "Nikaragwa"
+ },
+ "NU": {
+ "name": "Niue"
+ },
+ "NC": {
+ "name": "Niukaredonia"
+ },
+ "NZ": {
+ "name": "Niuzirandi"
+ },
+ "NO": {
+ "name": "Noorwe"
+ },
+ "OM": {
+ "name": "Omaani"
+ },
+ "AU": {
+ "name": "Ositureeriya"
+ },
+ "AT": {
+ "name": "Osituria"
+ },
+ "PK": {
+ "name": "Pakisitaani"
+ },
+ "PW": {
+ "name": "Palaawu"
+ },
+ "PA": {
+ "name": "Panama"
+ },
+ "PG": {
+ "name": "Papua"
+ },
+ "PY": {
+ "name": "Paragwai"
+ },
+ "PS": {
+ "name": "Parestiina na Gaza"
+ },
+ "PE": {
+ "name": "Peru"
+ },
+ "PN": {
+ "name": "Pitkaini"
+ },
+ "PT": {
+ "name": "Pocugo"
+ },
+ "PF": {
+ "name": "Polinesia ya Bufaransa"
+ },
+ "PL": {
+ "name": "Poorandi"
+ },
+ "PR": {
+ "name": "Pwetoriko"
+ },
+ "DO": {
+ "name": "Ripaaburika ya Dominica"
+ },
+ "CZ": {
+ "name": "Ripaaburika ya Zeeki"
+ },
+ "RE": {
+ "name": "Riyuniyoni"
+ },
+ "RO": {
+ "name": "Romaniya"
+ },
+ "RU": {
+ "name": "Rrasha"
+ },
+ "RW": {
+ "name": "Rwanda"
+ },
+ "CY": {
+ "name": "Saipurasi"
+ },
+ "SM": {
+ "name": "Samarino"
+ },
+ "WS": {
+ "name": "Samowa"
+ },
+ "AS": {
+ "name": "Samowa ya Ameerika"
+ },
+ "SA": {
+ "name": "Saudi Areebiya"
+ },
+ "ZA": {
+ "name": "Sausi Afirika"
+ },
+ "ST": {
+ "name": "Sawo Tome na Purinsipo"
+ },
+ "SN": {
+ "name": "Senego"
+ },
+ "SH": {
+ "name": "Senti Herena"
+ },
+ "KN": {
+ "name": "Senti Kittis na Nevisi"
+ },
+ "PM": {
+ "name": "Senti Piyerre na Mikweron"
+ },
+ "LC": {
+ "name": "Senti Rusiya"
+ },
+ "VC": {
+ "name": "Senti Vinsent na Gurenadini"
+ },
+ "RS": {
+ "name": "Serbia"
+ },
+ "SC": {
+ "name": "Shesheresi"
+ },
+ "SG": {
+ "name": "Singapo"
+ },
+ "SX": {
+ "name": "Sint Maarten"
+ },
+ "ES": {
+ "name": "Sipeyini"
+ },
+ "LK": {
+ "name": "Siriranka"
+ },
+ "SY": {
+ "name": "Siriya"
+ },
+ "SK": {
+ "name": "Sirovaakiya"
+ },
+ "SI": {
+ "name": "Sirovaaniya"
+ },
+ "SL": {
+ "name": "Sirra Riyooni"
+ },
+ "SO": {
+ "name": "Somaariya"
+ },
+ "GS": {
+ "name": "South Georgia & South Sandwich Islands"
+ },
+ "SS": {
+ "name": "South Sudan"
+ },
+ "BL": {
+ "name": "St. Barthélemy"
+ },
+ "MF": {
+ "name": "St. Martin"
+ },
+ "SD": {
+ "name": "Sudani"
+ },
+ "SR": {
+ "name": "Surinaamu"
+ },
+ "SJ": {
+ "name": "Svalbard & Jan Mayen"
+ },
+ "SZ": {
+ "name": "Swazirandi"
+ },
+ "SE": {
+ "name": "Swideni"
+ },
+ "CH": {
+ "name": "Swisi"
+ },
+ "TH": {
+ "name": "Tairandi"
+ },
+ "TJ": {
+ "name": "Tajikisitani"
+ },
+ "TZ": {
+ "name": "Tanzania"
+ },
+ "TW": {
+ "name": "Tayiwaani"
+ },
+ "TG": {
+ "name": "Togo"
+ },
+ "TK": {
+ "name": "Tokerawu"
+ },
+ "TO": {
+ "name": "Tonga"
+ },
+ "TA": {
+ "name": "Tristan da Cunha"
+ },
+ "TN": {
+ "name": "Tunizia"
+ },
+ "TT": {
+ "name": "Turinidad na Tobago"
+ },
+ "TM": {
+ "name": "Turukimenisitani"
+ },
+ "TV": {
+ "name": "Tuvaru"
+ },
+ "UM": {
+ "name": "U.S. Outlying Islands"
+ },
+ "UG": {
+ "name": "Uganda"
+ },
+ "UA": {
+ "name": "Ukureini"
+ },
+ "UY": {
+ "name": "Urugwai"
+ },
+ "UZ": {
+ "name": "Uzibekisitani"
+ },
+ "VU": {
+ "name": "Vanuatu"
+ },
+ "VA": {
+ "name": "Vatikani"
+ },
+ "VE": {
+ "name": "Venezuwera"
+ },
+ "VN": {
+ "name": "Viyetinaamu"
+ },
+ "WF": {
+ "name": "Warris na Futuna"
+ },
+ "EH": {
+ "name": "Western Sahara"
+ },
+ "YE": {
+ "name": "Yemeni"
+ },
+ "JO": {
+ "name": "Yorudaani"
+ },
+ "ZM": {
+ "name": "Zambia"
+ },
+ "ZW": {
+ "name": "Zimbabwe"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/country/or.json b/library/intl/resources/country/or.json
new file mode 100644
index 000000000..4b225825b
--- /dev/null
+++ b/library/intl/resources/country/or.json
@@ -0,0 +1,761 @@
+{
+ "AC": {
+ "name": "Ascension Island"
+ },
+ "IC": {
+ "name": "Canary Islands"
+ },
+ "BQ": {
+ "name": "Caribbean Netherlands"
+ },
+ "EA": {
+ "name": "Ceuta & Melilla"
+ },
+ "CW": {
+ "name": "Curaçao"
+ },
+ "DG": {
+ "name": "Diego Garcia"
+ },
+ "XK": {
+ "name": "Kosovo"
+ },
+ "SX": {
+ "name": "Sint Maarten"
+ },
+ "TA": {
+ "name": "Tristan da Cunha"
+ },
+ "AT": {
+ "name": "ଅଷà­à¬Ÿà­à¬°à¬¿à¬†"
+ },
+ "AU": {
+ "name": "ଅଷà­à¬Ÿà­à¬°à­‡à¬²à¬¿à¬†"
+ },
+ "CI": {
+ "name": "ଆଇବରୀ କୋଷà­à¬Ÿ"
+ },
+ "IM": {
+ "name": "ଆଇଲୠଅଫୠମୈନà­"
+ },
+ "IS": {
+ "name": "ଆଇସଲà­à­Ÿà¬¾à¬£à­à¬¡"
+ },
+ "AI": {
+ "name": "ଆଙà­à¬—à­à¬‡à¬²à­à¬²à¬¾"
+ },
+ "AO": {
+ "name": "ଆଙà­à¬—ୋଲା"
+ },
+ "AZ": {
+ "name": "ଆଜେରବାଇଜାନà­"
+ },
+ "AG": {
+ "name": "ଆଣà­à¬Ÿà¬¿à¬—à­à¬† à¬à¬¬à¬‚ ବାରବà­à¬¦à¬¾"
+ },
+ "AD": {
+ "name": "ଆଣà­à¬¡à­‹à¬°à¬¾"
+ },
+ "AF": {
+ "name": "ଆଫାଗାନିସà­à¬¤à¬¾à¬¨à­"
+ },
+ "AS": {
+ "name": "ଆମେରିକାନୠସାମୋଆ"
+ },
+ "IE": {
+ "name": "ଆୟରଲà­à­Ÿà¬¾à¬£à­à¬¡"
+ },
+ "AW": {
+ "name": "ଆରà­à¬¬à¬¾"
+ },
+ "AR": {
+ "name": "ଆରà­à¬œà­‡à¬£à­à¬Ÿà¬¿à¬¨à¬¾"
+ },
+ "AQ": {
+ "name": "ଆରà­à¬£à­à¬Ÿà¬•à¬Ÿà¬¿à¬•à¬¾"
+ },
+ "AM": {
+ "name": "ଆରà­à¬®à­‡à¬¨à¬¿à¬†"
+ },
+ "DZ": {
+ "name": "ଆଲଜେରିଆ"
+ },
+ "AL": {
+ "name": "ଆଲବାନିଆ"
+ },
+ "AX": {
+ "name": "ଆଲାଣà­à¬¡ ଆଇସଲà­à­Ÿà¬¾à¬£à­à¬¡"
+ },
+ "GQ": {
+ "name": "ଇକà­à¬¬à¬¾à¬Ÿà­‡à¬°à¬¿à¬†à¬²à­ ଗà­à¬‡à¬¨à¬¿à¬†"
+ },
+ "EC": {
+ "name": "ଇକà­à­±à¬¾à¬¡à­‹à¬°à­"
+ },
+ "EG": {
+ "name": "ଇଜିପà­à¬Ÿ"
+ },
+ "IT": {
+ "name": "ଇଟାଲୀ"
+ },
+ "ID": {
+ "name": "ଇଣà­à¬¡à­‹à¬¨à­‡à¬¸à¬¿à¬†"
+ },
+ "ET": {
+ "name": "ଇଥିଓପିଆ"
+ },
+ "IQ": {
+ "name": "ଇରାକà­"
+ },
+ "IR": {
+ "name": "ଇରାନà­"
+ },
+ "ER": {
+ "name": "ଇରିଟà­à¬°à¬¿à­Ÿà¬¾"
+ },
+ "IL": {
+ "name": "ଇସà­à¬°à¬¾à¬à¬²à­"
+ },
+ "UG": {
+ "name": "ଉଗାଣà­à¬¡à¬¾"
+ },
+ "UZ": {
+ "name": "ଉଜବେକିସà­à¬¥à¬¾à¬¨à­"
+ },
+ "KP": {
+ "name": "ଉତà­à¬¤à¬° କୋରିଆ"
+ },
+ "MP": {
+ "name": "ଉତà­à¬¤à¬° ମାରିଆନା ଦà­à¬¬à­€à¬ªà¬ªà­à¬žà­à¬œ"
+ },
+ "UY": {
+ "name": "ଉରà­à¬—à­à¬"
+ },
+ "SV": {
+ "name": "à¬à¬²à­ ସାଲଭାଡୋରà­"
+ },
+ "EE": {
+ "name": "à¬à¬¸à­à¬¤à­‹à¬¨à¬¿à¬†"
+ },
+ "OM": {
+ "name": "ଓମାନà­"
+ },
+ "CD": {
+ "name": "କଙà­à¬—à­‹-କିନସାସା"
+ },
+ "CG": {
+ "name": "କଙà­à¬—à­‹-ବà­à¬°à¬¾à¬œà¬¿à¬­à¬¿à¬²à­à¬²à­‡"
+ },
+ "QA": {
+ "name": "କତାରà­"
+ },
+ "KZ": {
+ "name": "କାଜାକାସà­à¬¥à¬¾à¬¨à­"
+ },
+ "CA": {
+ "name": "କାନାଡା"
+ },
+ "CM": {
+ "name": "କାମେରà­à¬¨à­"
+ },
+ "KM": {
+ "name": "କାମୋରସà­"
+ },
+ "KH": {
+ "name": "କାମà­à¬¬à­‹à¬¡à¬¿à¬†"
+ },
+ "KI": {
+ "name": "କିରିବାଟୀ"
+ },
+ "KG": {
+ "name": "କିରà­à¬—ିଜିସà­à¬¥à¬¾à¬¨"
+ },
+ "KW": {
+ "name": "କà­à¬à¬¤à­"
+ },
+ "CK": {
+ "name": "କà­à¬•à­ ଆଇସଲà­à­Ÿà¬¾à¬£à­à¬¡"
+ },
+ "KE": {
+ "name": "କେନିୟା"
+ },
+ "CV": {
+ "name": "କେପୠଭରà­à¬¦à­‡"
+ },
+ "KY": {
+ "name": "କେମà­à­Ÿà¬¾à¬¨à­ ଦà­à¬¬à­€à¬ªà¬ªà­à¬žà­à¬œ"
+ },
+ "CC": {
+ "name": "କୋକୋସୠଆଇସଲà­à­Ÿà¬¾à¬£à­à¬¡"
+ },
+ "CO": {
+ "name": "କୋଲମà­à¬¬à¬¿à¬†"
+ },
+ "CR": {
+ "name": "କୋଷà­à¬Ÿà¬¾ ରିକା"
+ },
+ "HR": {
+ "name": "କà­à¬°à­‹à¬†à¬Ÿà¬¿à¬†"
+ },
+ "CU": {
+ "name": "କà­à­±à¬¿à¬¬à¬¾"
+ },
+ "CX": {
+ "name": "ଖà­à¬°à­€à¬·à­à¬Ÿà¬®à¬¾à¬¸ ଆଇଲà­à­Ÿà¬¾à¬£à­à¬¡"
+ },
+ "GA": {
+ "name": "ଗାବୋନà­"
+ },
+ "GM": {
+ "name": "ଗାମà­à¬¬à¬¿à¬†"
+ },
+ "GU": {
+ "name": "ଗà­à¬†à¬®à­"
+ },
+ "GY": {
+ "name": "ଗà­à¬‡à¬¨à¬¾"
+ },
+ "GW": {
+ "name": "ଗà­à¬‡à¬¨à¬¿à¬†-ବିସାଉ"
+ },
+ "GT": {
+ "name": "ଗà­à¬à¬¤à¬®à¬¾à¬²à¬¾"
+ },
+ "GN": {
+ "name": "ଗà­à¬à¬¨à­‡à¬†"
+ },
+ "GG": {
+ "name": "ଗà­à¬à¬°à¬¨à­‡à¬¸à¬¿"
+ },
+ "GP": {
+ "name": "ଗୌଡେଲୌପେ"
+ },
+ "GL": {
+ "name": "ଗà­à¬°à­€à¬¨à¬²à­à­Ÿà¬¾à¬£à­à¬¡"
+ },
+ "GR": {
+ "name": "ଗà­à¬°à­€à¬¸à­"
+ },
+ "GD": {
+ "name": "ଗà­à¬°à­‡à¬¨à¬¾à¬¡à¬¾"
+ },
+ "GH": {
+ "name": "ଘାନା"
+ },
+ "TD": {
+ "name": "ଚାଦà­"
+ },
+ "CN": {
+ "name": "ଚିନà­"
+ },
+ "CL": {
+ "name": "ଚିଲà­à¬²à­€"
+ },
+ "CZ": {
+ "name": "ଚେକୠସାଧାରଣତନà­à¬¤à­à¬°"
+ },
+ "GE": {
+ "name": "ଜରà­à¬œà¬¿à¬†"
+ },
+ "DE": {
+ "name": "ଜରà­à¬®à¬¾à¬¨à­€"
+ },
+ "JE": {
+ "name": "ଜରà­à¬¸à¬¿"
+ },
+ "JP": {
+ "name": "ଜାପାନà­"
+ },
+ "JM": {
+ "name": "ଜାମାଇକା"
+ },
+ "ZM": {
+ "name": "ଜାମà­à¬¬à¬¿à¬†"
+ },
+ "GI": {
+ "name": "ଜିବà­à¬°à¬¾à¬²à­à¬Ÿà¬°à­"
+ },
+ "ZW": {
+ "name": "ଜିମà­à¬¬à¬¾à­±à­‡"
+ },
+ "JO": {
+ "name": "ଜୋରà­à¬¡à¬¾à¬¨à­"
+ },
+ "TV": {
+ "name": "ଟà­à¬­à¬¾à¬²à­"
+ },
+ "TK": {
+ "name": "ଟୋକେଲାଉ"
+ },
+ "TG": {
+ "name": "ଟୋଗୋ"
+ },
+ "TO": {
+ "name": "ଟୋଙà­à¬—ା"
+ },
+ "DJ": {
+ "name": "ଡିବୌଟି"
+ },
+ "DK": {
+ "name": "ଡେନମାରà­à¬•"
+ },
+ "DO": {
+ "name": "ଡୋମିନକାନୠପà­à¬°à¬œà¬¾à¬¤à¬¨à­à¬¤à­à¬°"
+ },
+ "DM": {
+ "name": "ଡୋମିନାକା"
+ },
+ "TW": {
+ "name": "ତାଇୱାନà­"
+ },
+ "TJ": {
+ "name": "ତାଜିକିସà­à¬¥à¬¾à¬¨à­"
+ },
+ "TZ": {
+ "name": "ତାଞà­à¬œà¬¾à¬¨à¬¿à¬†"
+ },
+ "TN": {
+ "name": "ତà­à¬¨à¬¿à¬¸à¬¿à¬†"
+ },
+ "TM": {
+ "name": "ତà­à¬°à­à¬•à¬®à­‡à¬¨à¬¿à¬¸à­à¬¤à¬¾à¬¨à­"
+ },
+ "TC": {
+ "name": "ତà­à¬°à­à¬•à¬¸à­ à¬à¬¬à¬‚ ସାଇକସୠଦà­à¬¬à­€à¬ªà¬ªà­à¬žà­à¬œ"
+ },
+ "TR": {
+ "name": "ତà­à¬°à­à¬•à­€"
+ },
+ "TT": {
+ "name": "ତà­à¬°à¬¿à¬¨à¬¿à¬¦à¬¾à¬¦à­ à¬à¬¬à¬‚ ଟୋବାଗୋ"
+ },
+ "TH": {
+ "name": "ଥାଇଲାଣà­à¬¡"
+ },
+ "ZA": {
+ "name": "ଦକà­à¬·à¬¿à¬£ ଆଫà­à¬°à¬¿à¬•à¬¾"
+ },
+ "KR": {
+ "name": "ଦକà­à¬·à¬¿à¬£ କୋରିଆ"
+ },
+ "GS": {
+ "name": "ଦକà­à¬·à¬¿à¬£ ଜରà­à¬œà¬¿à¬† à¬à¬¬à¬‚ ଦକà­à¬·à¬¿à¬£ ସାଣà­à¬¡à­±à¬¿à¬šà­ ଦà­à¬¬à­€à¬ªà¬ªà­à¬žà­à¬œ"
+ },
+ "SS": {
+ "name": "ଦକà­à¬·à¬¿à¬¨ ସà­à¬¦à¬¾à¬¨"
+ },
+ "NF": {
+ "name": "ନରଫà­à¬²à¬•à­ ଦà­à¬¬à­€à¬ª"
+ },
+ "NO": {
+ "name": "ନରୱେ"
+ },
+ "NE": {
+ "name": "ନାଇଜରà­"
+ },
+ "NG": {
+ "name": "ନାଇଜେରିଆ"
+ },
+ "NR": {
+ "name": "ନାଉରà­"
+ },
+ "NA": {
+ "name": "ନାମà­à¬¬à¬¿à¬†"
+ },
+ "NU": {
+ "name": "ନିଉ"
+ },
+ "NI": {
+ "name": "ନିକାରାଗà­à¬†"
+ },
+ "NC": {
+ "name": "ନୂତନ କାଲେଡୋନିଆ"
+ },
+ "NL": {
+ "name": "ନେଦରଲà­à­Ÿà¬¾à¬£à­à¬¡"
+ },
+ "NP": {
+ "name": "ନେପାଳ"
+ },
+ "NZ": {
+ "name": "ନà­à­Ÿà­à¬œà¬¿à¬²à¬¾à¬£à­à¬¡"
+ },
+ "PG": {
+ "name": "ପପà­à¬† ନà­à­Ÿà­ ଗà­à¬à¬¨à¬¿à¬†"
+ },
+ "PT": {
+ "name": "ପରà­à¬¤à­à¬¤à­à¬—ାଲà­"
+ },
+ "EH": {
+ "name": "ପଶà­à¬šà¬¿à¬® ସାହାରା"
+ },
+ "PK": {
+ "name": "ପାକିସà­à¬¤à¬¾à¬¨"
+ },
+ "PA": {
+ "name": "ପାନାମା"
+ },
+ "PY": {
+ "name": "ପାରାଗà­à¬"
+ },
+ "PW": {
+ "name": "ପାଲାଉ"
+ },
+ "PS": {
+ "name": "ପାଲେସà­à¬¤à­‡à¬¨à¬¿à¬†"
+ },
+ "PN": {
+ "name": "ପିଟକାଇରିନà­"
+ },
+ "PR": {
+ "name": "ପà­à¬à¬°à­à¬¤à­à¬¤à­‹ ରିକୋ"
+ },
+ "TL": {
+ "name": "ପà­à¬°à­à¬¬ ତିମୋରà­"
+ },
+ "PE": {
+ "name": "ପେରà­"
+ },
+ "PL": {
+ "name": "ପୋଲାଣà­à¬¡"
+ },
+ "TF": {
+ "name": "ଫରାସୀ ଦକà­à¬·à¬¿à¬£ କà­à¬·à­‡à¬¤à­à¬°"
+ },
+ "FK": {
+ "name": "ଫଲà­à¬•à¬²à­à­Ÿà¬¾à¬£à­à¬¡ ଦà­à¬¬à­€à¬ªà¬ªà­à¬žà­à¬œ"
+ },
+ "FO": {
+ "name": "ଫାରୋଇ ଦà­à¬¬à­€à¬ªà¬ªà­à¬žà­à¬œ"
+ },
+ "FJ": {
+ "name": "ଫିଜି"
+ },
+ "FI": {
+ "name": "ଫିନଲà­à­Ÿà¬¾à¬£à­à¬¡"
+ },
+ "PH": {
+ "name": "ଫିଲିପାଇନସà­"
+ },
+ "FR": {
+ "name": "ଫà­à¬°à¬¾à¬¨à­à¬¸"
+ },
+ "GF": {
+ "name": "ଫà­à¬°à­‡à¬žà­à¬š ଗà­à¬‡à¬¨à¬¾"
+ },
+ "PF": {
+ "name": "ଫà­à¬°à­‡à¬žà­à¬š ପଲିନେସିଆ"
+ },
+ "BM": {
+ "name": "ବରମà­à¬¡à¬¾"
+ },
+ "BD": {
+ "name": "ବାଙà­à¬—ଲାଦେଶà­"
+ },
+ "BB": {
+ "name": "ବାରବାଡୋସà­"
+ },
+ "BS": {
+ "name": "ବାହାମାସà­"
+ },
+ "BH": {
+ "name": "ବାହାରିନà­"
+ },
+ "BI": {
+ "name": "ବà­à¬°à­à¬¨à­à¬¦à¬¿"
+ },
+ "BF": {
+ "name": "ବà­à¬°à­à¬•à¬¿à¬¨à­‹ ଫାସୋ"
+ },
+ "BG": {
+ "name": "ବà­à¬²à¬—େରିଆ"
+ },
+ "BJ": {
+ "name": "ବେନିନà­"
+ },
+ "BE": {
+ "name": "ବେଲଜିୟମà­"
+ },
+ "BY": {
+ "name": "ବେଲାରà­à¬·à­"
+ },
+ "BZ": {
+ "name": "ବେଲିଜà­"
+ },
+ "BW": {
+ "name": "ବୋଟସà­à¬¬à¬¾à¬¨à­"
+ },
+ "BO": {
+ "name": "ବୋଲଭିଆ"
+ },
+ "BA": {
+ "name": "ବୋସନିଆ à¬à¬¬à¬‚ ହରà­à¬œà¬—ୋଭିନା"
+ },
+ "BR": {
+ "name": "ବà­à¬°à¬¾à¬œà¬¿à¬²à­"
+ },
+ "VG": {
+ "name": "ବà­à¬°à¬¿à¬Ÿà¬¿à¬¶à­ ଭରà­à¬œà¬¿à¬¨à­ ଦà­à¬¬à­€à¬ªà¬ªà­à¬žà­à¬œ"
+ },
+ "IO": {
+ "name": "ବà­à¬°à¬¿à¬Ÿà¬¿à¬¶à­ ଭାରତୀୟ ସାମà­à¬¦à­à¬°à¬¿à¬• କà­à¬·à­‡à¬¤à­à¬°"
+ },
+ "GB": {
+ "name": "ବà­à¬°à¬¿à¬Ÿà­‡à¬¨à­"
+ },
+ "BN": {
+ "name": "ବà­à¬°à­à¬¨à­‡à¬‡"
+ },
+ "VA": {
+ "name": "ଭାଟିକାନà­"
+ },
+ "VU": {
+ "name": "ଭାନà­à¬†à¬¤à­"
+ },
+ "IN": {
+ "name": "ଭାରତ"
+ },
+ "VN": {
+ "name": "ଭିà¬à¬¤à¬¨à¬¾à¬®à­"
+ },
+ "BT": {
+ "name": "ଭà­à¬Ÿà¬¾à¬¨à­"
+ },
+ "VE": {
+ "name": "ଭେନଜà­à¬à¬²à¬¾"
+ },
+ "MN": {
+ "name": "ମଙà­à¬—ୋଲିଆ"
+ },
+ "ME": {
+ "name": "ମଣà­à¬Ÿà­‡à¬—à­à¬°à­‹"
+ },
+ "MS": {
+ "name": "ମଣà­à¬Ÿà­‡à¬¸à­‡à¬°à¬¾à¬Ÿà­"
+ },
+ "CF": {
+ "name": "ମଧà­à­Ÿ ଆଫà­à¬°à¬¿à¬•à­€à­Ÿ ଗଣତନà­à¬¤à­à¬°"
+ },
+ "FM": {
+ "name": "ମାଇକà­à¬°à­‹à¬¨à­‡à¬¸à¬¿à¬†"
+ },
+ "MR": {
+ "name": "ମାଉରିଟାନିଆ"
+ },
+ "MO": {
+ "name": "ମାକାଉ SAR ଚିନà­"
+ },
+ "MG": {
+ "name": "ମାଡାଗାସà­à¬•à¬°à­"
+ },
+ "YT": {
+ "name": "ମାୟୋଟେ"
+ },
+ "MQ": {
+ "name": "ମାରà­à¬Ÿà¬¿à¬¨à¬¿à¬•à­à­Ÿà­"
+ },
+ "MH": {
+ "name": "ମାରà­à¬¶à¬²à­ ଦà­à¬¬à­€à¬ªà¬ªà­à¬žà­à¬œ"
+ },
+ "MD": {
+ "name": "ମାଲଡୋଭା"
+ },
+ "MW": {
+ "name": "ମାଲୱି"
+ },
+ "MY": {
+ "name": "ମାଲେସିଆ"
+ },
+ "MT": {
+ "name": "ମାଲà­à¬Ÿà¬¾"
+ },
+ "MV": {
+ "name": "ମାଳଦà­à¬¬à­€à¬ª"
+ },
+ "ML": {
+ "name": "ମାଳୀ"
+ },
+ "MK": {
+ "name": "ମାସେଡୋନିଆ"
+ },
+ "MM": {
+ "name": "ମିୟାମାରà­"
+ },
+ "MX": {
+ "name": "ମେକà­à¬¸à¬¿à¬•à­‹"
+ },
+ "MZ": {
+ "name": "ମୋଜାମà­à¬¬à¬¿à¬•à­à­Ÿà­"
+ },
+ "MC": {
+ "name": "ମୋନାକୋ"
+ },
+ "MA": {
+ "name": "ମୋରୋକà­à¬•à­‹"
+ },
+ "MU": {
+ "name": "ମୌରିସସà­"
+ },
+ "VI": {
+ "name": "à­Ÿà­à¬à¬¸à­ ଭରà­à¬œà¬¿à¬¨à­ ଦà­à¬¬à­€à¬ªà¬ªà­à¬žà­à¬œ"
+ },
+ "US": {
+ "name": "ଯà­à¬•à­à¬¤ ରାଷà­à¬Ÿà­à¬° ଆମେରିକା"
+ },
+ "UA": {
+ "name": "à­Ÿà­à¬•à­à¬°à¬¾à¬‡à¬¨à­"
+ },
+ "UM": {
+ "name": "à­Ÿà­à¬¨à¬¾à¬‡à¬Ÿà­‡à¬¡à­ ଷà­à¬Ÿà­‡à¬Ÿà¬¸à­ ମାଇନରୠଆଉଟଲେଇଂ ଦà­à¬¬à­€à¬ªà¬ªà­à¬žà­à¬œ"
+ },
+ "YE": {
+ "name": "ୟେମେନà­"
+ },
+ "RW": {
+ "name": "ରାୱାଣà­à¬¡à¬¾"
+ },
+ "RE": {
+ "name": "ରିୟà­à¬¨à¬¿à¬…ନà­"
+ },
+ "RU": {
+ "name": "ରà­à¬·à¬¿à¬†"
+ },
+ "RO": {
+ "name": "ରୋମାନିଆ"
+ },
+ "LU": {
+ "name": "ଲକà­à¬¸à­‡à¬®à¬¬à¬°à­à¬—"
+ },
+ "LA": {
+ "name": "ଲାଓସà­"
+ },
+ "LV": {
+ "name": "ଲାଟଭିଆ"
+ },
+ "LI": {
+ "name": "ଲିଚେସà­à¬¤à¬¿à¬†à¬¨à¬¾à¬¨à­"
+ },
+ "LT": {
+ "name": "ଲିଥାଆନିଆ"
+ },
+ "LY": {
+ "name": "ଲିବିଆ"
+ },
+ "LR": {
+ "name": "ଲିବେରିଆ"
+ },
+ "LB": {
+ "name": "ଲେବାନନà­"
+ },
+ "LS": {
+ "name": "ଲେସୋଥୋ"
+ },
+ "WF": {
+ "name": "ୱାଲିସୠà¬à¬¬à¬‚ ଫà­à¬¤à­à¬¨à¬¾"
+ },
+ "LK": {
+ "name": "ଶà­à¬°à­€à¬²à¬™à­à¬•à¬¾"
+ },
+ "AE": {
+ "name": "ସଂଯà­à¬•à­à¬¤ ଆରବ à¬à¬®à¬¿à¬°à­‡à¬Ÿà¬¸à­"
+ },
+ "RS": {
+ "name": "ସରà­à¬¬à¬¿à¬†"
+ },
+ "CY": {
+ "name": "ସାଇପà­à¬°à¬¸à­"
+ },
+ "SA": {
+ "name": "ସାଉଦି ଆରବିଆ"
+ },
+ "ST": {
+ "name": "ସାଓ ଟୋମେ à¬à¬¬à¬‚ ପà­à¬°à¬¿à¬¨à¬¸à¬¿à¬ªà¬¿"
+ },
+ "SM": {
+ "name": "ସାନୠମାରିନୋ"
+ },
+ "WS": {
+ "name": "ସାମୋଆ"
+ },
+ "SJ": {
+ "name": "ସାଲà­à¬­à¬¾à¬°à­à¬¡ à¬à¬¬à¬‚ ଜାନୠମାୟୋନà­"
+ },
+ "SL": {
+ "name": "ସିଓରା ଲିଓନà­"
+ },
+ "SG": {
+ "name": "ସିଙà­à¬—ାପà­à¬°à­"
+ },
+ "SY": {
+ "name": "ସିରିଆ"
+ },
+ "SD": {
+ "name": "ସà­à¬¦à¬¾à¬¨à­"
+ },
+ "SR": {
+ "name": "ସà­à¬°à¬¿à¬¨à¬¾à¬®"
+ },
+ "SC": {
+ "name": "ସେଚେଲସà­"
+ },
+ "KN": {
+ "name": "ସେଣà­à¬Ÿ କିଟସୠà¬à¬£à­à¬¡ ନେଭିସà­"
+ },
+ "PM": {
+ "name": "ସେଣà­à¬Ÿ ପିà¬à¬°à­‡ à¬à¬¬à¬‚ ମିକà­à¬¬à¬¾à¬²à­‹à¬¨à­"
+ },
+ "BL": {
+ "name": "ସେଣà­à¬Ÿ ବାରà­à¬¥à­‡à¬²à­‡à¬®à¬¿"
+ },
+ "VC": {
+ "name": "ସେଣà­à¬Ÿ ଭିନସେଣà­à¬Ÿ à¬à¬¬à¬‚ ଦି ଗà­à¬°à­‡à¬¨à¬¾à¬¡à¬¿à¬¸à­"
+ },
+ "MF": {
+ "name": "ସେଣà­à¬Ÿ ମାରà­à¬Ÿà¬¿à¬¨à­"
+ },
+ "LC": {
+ "name": "ସେଣà­à¬Ÿ ଲà­à¬¸à¬¿à¬†"
+ },
+ "SH": {
+ "name": "ସେଣà­à¬Ÿ ହେଲେନା"
+ },
+ "SN": {
+ "name": "ସେନେଗାଲà­"
+ },
+ "SO": {
+ "name": "ସୋମାଲିଆ"
+ },
+ "SB": {
+ "name": "ସୋଲୋମନୠଦà­à¬¬à­€à¬ªà¬ªà­à¬žà­à¬œ"
+ },
+ "ES": {
+ "name": "ସà­à¬ªà­‡à¬¨à­"
+ },
+ "SZ": {
+ "name": "ସà­à¬¬à¬¾à¬œà¬¿à¬²à¬¾à¬£à­à¬¡"
+ },
+ "CH": {
+ "name": "ସà­à¬¬à¬¿à¬œà¬°à¬²à­à­Ÿà¬¾à¬£à­à¬¡"
+ },
+ "SK": {
+ "name": "ସà­à¬²à­‹à¬­à¬¾à¬•à¬¿à¬†"
+ },
+ "SI": {
+ "name": "ସà­à¬²à­‹à¬­à­‡à¬¨à¬¿à¬†"
+ },
+ "SE": {
+ "name": "ସà­à­±à­‡à¬¡à­‡à¬¨à­"
+ },
+ "HK": {
+ "name": "ହଂକଂ ବିଶେଷ ପà­à¬°à¬¶à¬¾à¬¸à¬¨à¬¿à¬• କà­à¬·à­‡à¬¤à­à¬° ଚୀନà­"
+ },
+ "HU": {
+ "name": "ହଙà­à¬—େରୀ"
+ },
+ "HT": {
+ "name": "ହାଇତି"
+ },
+ "HN": {
+ "name": "ହୋଣà­à¬¡à¬¾à¬°à­à¬¸à­"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/country/pa.json b/library/intl/resources/country/pa.json
new file mode 100644
index 000000000..cd7671ca5
--- /dev/null
+++ b/library/intl/resources/country/pa.json
@@ -0,0 +1,761 @@
+{
+ "UZ": {
+ "name": "ਉਜ਼ਬੇਕਿਸਤਾਨ"
+ },
+ "KP": {
+ "name": "ਉੱਤਰੀ ਕੋਰੀਆ"
+ },
+ "MP": {
+ "name": "ਉੱਤਰੀ ਮਾਰੀਆਨਾ ਟਾਪੂ"
+ },
+ "UY": {
+ "name": "ਉਰੂਗਵੇ"
+ },
+ "OM": {
+ "name": "ਓਮਾਨ"
+ },
+ "AC": {
+ "name": "ਅਸੈਂਸ਼ਨ ਟਾਪੂ"
+ },
+ "AI": {
+ "name": "ਅੰਗà©à¨‡à¨²à¨¾"
+ },
+ "AO": {
+ "name": "ਅੰਗੋਲਾ"
+ },
+ "AZ": {
+ "name": "ਅਜ਼ਰਬਾਈਜਾਨ"
+ },
+ "AQ": {
+ "name": "ਅੰਟਾਰਕਟਿਕਾ"
+ },
+ "AD": {
+ "name": "ਅੰਡੋਰਾ"
+ },
+ "AF": {
+ "name": "ਅਫ਼ਗਾਨਿਸਤਾਨ"
+ },
+ "AS": {
+ "name": "ਅਮੈਰੀਕਨ ਸਮੋਆ"
+ },
+ "AR": {
+ "name": "ਅਰਜਨਟੀਨਾ"
+ },
+ "AM": {
+ "name": "ਅਰਮੀਨੀਆ"
+ },
+ "AW": {
+ "name": "ਅਰੂਬਾ"
+ },
+ "SV": {
+ "name": "ਅਲ ਸਲਵਾਡੋਰ"
+ },
+ "DZ": {
+ "name": "ਅਲਜੀਰੀਆ"
+ },
+ "AL": {
+ "name": "ਅਲਬਾਨੀਆ"
+ },
+ "AX": {
+ "name": "ਅਲੈਂਡ ਟਾਪੂ"
+ },
+ "IE": {
+ "name": "ਆਇਰਲੈਂਡ"
+ },
+ "IM": {
+ "name": "ਆਇਲ ਆਫ ਮੈਨ"
+ },
+ "IS": {
+ "name": "ਆਈਸਲੈਂਡ"
+ },
+ "AT": {
+ "name": "ਆਸਟਰੀਆ"
+ },
+ "AU": {
+ "name": "ਆਸਟà©à¨°à©‡à¨²à©€à¨†"
+ },
+ "AG": {
+ "name": "à¨à¨‚ਟੀਗà©à¨† ਅਤੇ ਬਾਰਬà©à¨¡à¨¾"
+ },
+ "EE": {
+ "name": "ਇਸਟੋਨੀਆ"
+ },
+ "EC": {
+ "name": "ਇਕਵੇਡੋਰ"
+ },
+ "IL": {
+ "name": "ਇਜ਼ਰਾਈਲ"
+ },
+ "IT": {
+ "name": "ਇਟਲੀ"
+ },
+ "ID": {
+ "name": "ਇੰਡੋਨੇਸ਼ੀਆ"
+ },
+ "ET": {
+ "name": "ਇਥੋਪੀਆ"
+ },
+ "IQ": {
+ "name": "ਇਰਾਕ"
+ },
+ "ER": {
+ "name": "ਇਰੀਟà©à¨°à¨¿à¨†"
+ },
+ "IR": {
+ "name": "ਈਰਾਨ"
+ },
+ "ES": {
+ "name": "ਸਪੇਨ"
+ },
+ "AE": {
+ "name": "ਸੰਯà©à¨•à¨¤ ਅਰਬ ਅਮੀਰਾਤ"
+ },
+ "US": {
+ "name": "ਸੰਯà©à¨•à¨¤ ਰਾਜ"
+ },
+ "RS": {
+ "name": "ਸਰਬੀਆ"
+ },
+ "SK": {
+ "name": "ਸਲੋਵਾਕੀਆ"
+ },
+ "SI": {
+ "name": "ਸਲੋਵੇਨੀਆ"
+ },
+ "SZ": {
+ "name": "ਸਵਾਜ਼ੀਲੈਂਡ"
+ },
+ "SJ": {
+ "name": "ਸਵਾਲਬਰਡ ਅਤੇ ਜਾਨ ਮਾਯੇਨ"
+ },
+ "CH": {
+ "name": "ਸਵਿਟਜ਼ਰਲੈਂਡ"
+ },
+ "SE": {
+ "name": "ਸਵੀਡਨ"
+ },
+ "LK": {
+ "name": "ਸà©à¨°à©€ ਲੰਕਾ"
+ },
+ "SA": {
+ "name": "ਸਾਊਦੀ ਅਰਬ"
+ },
+ "ST": {
+ "name": "ਸਾਓ ਟੋਮ ਅਤੇ ਪà©à¨°à¨¿à©°à¨¸à©€à¨ªà©‡"
+ },
+ "CY": {
+ "name": "ਸਾਇਪà©à¨°à¨¸"
+ },
+ "WS": {
+ "name": "ਸਾਮੋਆ"
+ },
+ "EA": {
+ "name": "ਸਿਓਟਾ ਅਤੇ ਮੇਲਿੱਲਾ"
+ },
+ "SL": {
+ "name": "ਸਿà¨à¨°à¨¾ ਲਿਓਨ"
+ },
+ "SG": {
+ "name": "ਸਿੰਗਾਪà©à¨°"
+ },
+ "SX": {
+ "name": "ਸਿੰਟ ਮਾਰਟੀਨ"
+ },
+ "SY": {
+ "name": "ਸੀਰੀਆ"
+ },
+ "SD": {
+ "name": "ਸੂਡਾਨ"
+ },
+ "SR": {
+ "name": "ਸੂਰੀਨਾਮ"
+ },
+ "SC": {
+ "name": "ਸੇਸ਼ਲਸ"
+ },
+ "SH": {
+ "name": "ਸੇਂਟ ਹੇਲੇਨਾ"
+ },
+ "BL": {
+ "name": "ਸੇਂਟ ਬਾਰਥੇਲੇਮੀ"
+ },
+ "MF": {
+ "name": "ਸੇਂਟ ਮਾਰਟਿਨ"
+ },
+ "LC": {
+ "name": "ਸੇਂਟ ਲੂਸੀਆ"
+ },
+ "VC": {
+ "name": "ਸੇਂਟ ਵਿਨਸੈਂਟ à¨à¨‚ਡ ਗà©à¨°à©‡à¨¨à¨¾à¨¡à©€à¨¨à¨¸"
+ },
+ "SN": {
+ "name": "ਸੇਨੇਗਲ"
+ },
+ "KN": {
+ "name": "ਸੈਂਟ ਕਿਟਸ à¨à¨‚ਡ ਨੇਵਿਸ"
+ },
+ "PM": {
+ "name": "ਸੈਂਟ ਪੀਅਰੇ à¨à¨‚ਡ ਮਿਕੇਲਨ"
+ },
+ "SM": {
+ "name": "ਸੈਨ ਮਰੀਨੋ"
+ },
+ "SO": {
+ "name": "ਸੋਮਾਲੀਆ"
+ },
+ "SB": {
+ "name": "ਸੋਲੋਮਨ ਟਾਪੂ"
+ },
+ "HU": {
+ "name": "ਹੰਗਰੀ"
+ },
+ "HK": {
+ "name": "ਹਾਂਗ ਕਾਂਗ à¨à¨¸à¨à¨†à¨° ਚੀਨ"
+ },
+ "HT": {
+ "name": "ਹੈਤੀ"
+ },
+ "HN": {
+ "name": "ਹੋਂਡà©à¨°à¨¸"
+ },
+ "KZ": {
+ "name": "ਕਜ਼ਾਖਸਤਾਨ"
+ },
+ "QA": {
+ "name": "ਕਤਰ"
+ },
+ "KH": {
+ "name": "ਕੰਬੋਡੀਆ"
+ },
+ "HR": {
+ "name": "ਕਰੋà¨à¨¸à¨¼à©€à¨†"
+ },
+ "CX": {
+ "name": "ਕà©à¨°à¨¿à¨¸à¨®à¨¿à¨¸ ਟਾਪੂ"
+ },
+ "CD": {
+ "name": "ਕਾਂਗੋ - ਕਿੰਸ਼ਾਸਾ"
+ },
+ "CG": {
+ "name": "ਕਾਂਗੋ - ਬà©à¨°à¨¾à¨œà¨¼à¨¾à¨µà¨¿à¨²à©‡"
+ },
+ "CU": {
+ "name": "ਕਿਊਬਾ"
+ },
+ "KG": {
+ "name": "ਕਿਰਗਿਜ਼ਸਤਾਨ"
+ },
+ "KI": {
+ "name": "ਕਿਰਬਾਤੀ"
+ },
+ "KE": {
+ "name": "ਕੀਨੀਆ"
+ },
+ "CK": {
+ "name": "ਕà©à©±à¨• ਟਾਪੂ"
+ },
+ "CW": {
+ "name": "ਕà©à¨°à¨¾à¨•à¨¾à¨“"
+ },
+ "KW": {
+ "name": "ਕà©à¨µà©ˆà¨¤"
+ },
+ "CF": {
+ "name": "ਕੇਂਦਰੀ ਅਫ਼ਰੀਕੀ ਗਣਰਾਜ"
+ },
+ "IC": {
+ "name": "ਕੇਨਾਰੀ ਟਾਪੂ"
+ },
+ "CV": {
+ "name": "ਕੇਪ ਵਰਡੇ"
+ },
+ "KY": {
+ "name": "ਕੇਮੈਨ ਟਾਪੂ"
+ },
+ "CA": {
+ "name": "ਕੈਨੇਡਾ"
+ },
+ "CM": {
+ "name": "ਕੈਮਰੂਨ"
+ },
+ "BQ": {
+ "name": "ਕੈਰੇਬੀਆਈ ਨੀਦਰਲੈਂਡ"
+ },
+ "CR": {
+ "name": "ਕੋਸਟਾ ਰੀਕਾ"
+ },
+ "XK": {
+ "name": "ਕੋਸੋਵੋ"
+ },
+ "CC": {
+ "name": "ਕੋਕੋਸ (ਕੀਲਿੰਗ) ਟਾਪੂ"
+ },
+ "CI": {
+ "name": "ਕੋਟ ਡੀਵੋਆਰ"
+ },
+ "KM": {
+ "name": "ਕੋਮੋਰੋਸ"
+ },
+ "CO": {
+ "name": "ਕੋਲੰਬੀਆ"
+ },
+ "GA": {
+ "name": "ਗਬੋਨ"
+ },
+ "GG": {
+ "name": "ਗਰਨਜੀ"
+ },
+ "GR": {
+ "name": "ਗà©à¨°à©€à¨¸"
+ },
+ "GL": {
+ "name": "ਗà©à¨°à©€à¨¨à¨²à©ˆà¨‚ਡ"
+ },
+ "GD": {
+ "name": "ਗà©à¨°à©‡à¨¨à¨¾à¨¡à¨¾"
+ },
+ "GN": {
+ "name": "ਗਿਨੀ"
+ },
+ "GW": {
+ "name": "ਗਿਨੀ-ਬਿਸਾਉ"
+ },
+ "GT": {
+ "name": "ਗà©à¨†à¨Ÿà©‡à¨®à¨¾à¨²à¨¾"
+ },
+ "GP": {
+ "name": "ਗà©à¨†à¨¡à©‡à¨²à©‹à¨ª"
+ },
+ "GU": {
+ "name": "ਗà©à¨†à¨®"
+ },
+ "GY": {
+ "name": "ਗà©à¨¯à¨¾à¨¨à¨¾"
+ },
+ "GM": {
+ "name": "ਗੈਂਬੀਆ"
+ },
+ "GH": {
+ "name": "ਘਾਨਾ"
+ },
+ "TD": {
+ "name": "ਚਾਡ"
+ },
+ "CL": {
+ "name": "ਚਿਲੀ"
+ },
+ "CN": {
+ "name": "ਚੀਨ"
+ },
+ "CZ": {
+ "name": "ਚੈਕ ਗਣਰਾਜ"
+ },
+ "JP": {
+ "name": "ਜਪਾਨ"
+ },
+ "JM": {
+ "name": "ਜਮਾਇਕਾ"
+ },
+ "JE": {
+ "name": "ਜਰਸੀ"
+ },
+ "DE": {
+ "name": "ਜਰਮਨੀ"
+ },
+ "ZM": {
+ "name": "ਜ਼ਾਮਬੀਆ"
+ },
+ "GE": {
+ "name": "ਜਾਰਜੀਆ"
+ },
+ "JO": {
+ "name": "ਜਾਰਡਨ"
+ },
+ "GI": {
+ "name": "ਜਿਬਰਾਲਟਰ"
+ },
+ "ZW": {
+ "name": "ਜ਼ਿੰਬਾਬਵੇ"
+ },
+ "DJ": {
+ "name": "ਜ਼ੀਬੂਤੀ"
+ },
+ "TA": {
+ "name": "ਟà©à¨°à¨¿à¨¸à¨Ÿà¨¾à¨¨ ਦਾ ਕà©à©°à¨¹à¨¾"
+ },
+ "TT": {
+ "name": "ਟà©à¨°à¨¿à¨¨à©€à¨¡à¨¾à¨¡ ਅਤੇ ਟੋਬਾਗੋ"
+ },
+ "TN": {
+ "name": "ਟਿਊਨੀਸ਼ੀਆ"
+ },
+ "TC": {
+ "name": "ਟà©à¨°à¨•à¨¸ ਅਤੇ ਕੈਕੋਸ ਟਾਪੂ"
+ },
+ "TV": {
+ "name": "ਟà©à¨µà¨¾à¨²à©‚"
+ },
+ "TK": {
+ "name": "ਟੋਕੇਲਾਉ"
+ },
+ "TG": {
+ "name": "ਟੋਗੋ"
+ },
+ "TO": {
+ "name": "ਟੌਂਗਾ"
+ },
+ "DG": {
+ "name": "ਡੀਇਗੋ ਗਾਰਸੀਆ"
+ },
+ "DK": {
+ "name": "ਡੈਨਮਾਰਕ"
+ },
+ "DM": {
+ "name": "ਡੋਮੀਨਿਕਾ"
+ },
+ "DO": {
+ "name": "ਡੋਮੀਨਿਕਾਈ ਗਣਰਾਜ"
+ },
+ "TZ": {
+ "name": "ਤਨਜ਼ਾਨੀਆ"
+ },
+ "TW": {
+ "name": "ਤਾਇਵਾਨ"
+ },
+ "TJ": {
+ "name": "ਤਾਜਿਕਿਸਤਾਨ"
+ },
+ "TL": {
+ "name": "ਤਿਮੋਰ-ਲੇਸਤੇ"
+ },
+ "TM": {
+ "name": "ਤà©à¨°à¨•à¨®à©‡à¨¨à¨¿à¨¸à¨¤à¨¾à¨¨"
+ },
+ "TR": {
+ "name": "ਤà©à¨°à¨•à©€"
+ },
+ "TH": {
+ "name": "ਥਾਈਲੈਂਡ"
+ },
+ "ZA": {
+ "name": "ਦੱਖਣੀ ਅਫਰੀਕਾ"
+ },
+ "SS": {
+ "name": "ਦੱਖਣੀ ਸੂਡਾਨ"
+ },
+ "KR": {
+ "name": "ਦੱਖਣੀ ਕੋਰੀਆ"
+ },
+ "GS": {
+ "name": "ਦੱਖਣੀ ਜਾਰਜੀਆ ਅਤੇ ਦੱਖਣੀ ਸੈਂਡਵਿਚ ਟਾਪੂ"
+ },
+ "NR": {
+ "name": "ਨਾਉਰੂ"
+ },
+ "NE": {
+ "name": "ਨਾਈਜਰ"
+ },
+ "NG": {
+ "name": "ਨਾਈਜੀਰੀਆ"
+ },
+ "NA": {
+ "name": "ਨਾਮੀਬੀਆ"
+ },
+ "NO": {
+ "name": "ਨਾਰਵੇ"
+ },
+ "NC": {
+ "name": "ਨਿਊ ਕੈਲੇਡੋਨੀਆ"
+ },
+ "NZ": {
+ "name": "ਨਿਊਜ਼ੀਲੈਂਡ"
+ },
+ "NI": {
+ "name": "ਨਿਕਾਰਾਗà©à¨†"
+ },
+ "NU": {
+ "name": "ਨਿਯੂ"
+ },
+ "NL": {
+ "name": "ਨੀਦਰਲੈਂਡ"
+ },
+ "NP": {
+ "name": "ਨੇਪਾਲ"
+ },
+ "NF": {
+ "name": "ਨੋਰਫੌਕ ਟਾਪੂ"
+ },
+ "EH": {
+ "name": "ਪੱਛਮੀ ਸਹਾਰਾ"
+ },
+ "PA": {
+ "name": "ਪਨਾਮਾ"
+ },
+ "PW": {
+ "name": "ਪਲਾਉ"
+ },
+ "PK": {
+ "name": "ਪਾਕਿਸਤਾਨ"
+ },
+ "PG": {
+ "name": "ਪਾਪੂਆ ਨਿਊ ਗਿਨੀ"
+ },
+ "PR": {
+ "name": "ਪਿਊਰਟੋ ਰਿਕੋ"
+ },
+ "PN": {
+ "name": "ਪਿਟਕੇਰਨ ਟਾਪੂ"
+ },
+ "PT": {
+ "name": "ਪà©à¨°à¨¤à¨—ਾਲ"
+ },
+ "PE": {
+ "name": "ਪੇਰੂ"
+ },
+ "PY": {
+ "name": "ਪੈਰਾਗਵੇ"
+ },
+ "PL": {
+ "name": "ਪੋਲੈਂਡ"
+ },
+ "FR": {
+ "name": "ਫ਼ਰਾਂਸ"
+ },
+ "GF": {
+ "name": "ਫ਼ਰੈਂਚ ਗà©à¨†à¨¨à¨¾"
+ },
+ "TF": {
+ "name": "ਫਰੈਂਚ ਦੱਖਣੀ ਪà©à¨°à¨¦à©‡à¨¸à¨¼"
+ },
+ "PF": {
+ "name": "ਫਰੈਂਚ ਪੋਲੀਨੇਸ਼ੀਆ"
+ },
+ "FK": {
+ "name": "ਫ਼ਾਕਲੈਂਡ ਟਾਪੂ"
+ },
+ "FJ": {
+ "name": "ਫ਼ਿਜੀ"
+ },
+ "FI": {
+ "name": "ਫਿਨਲੈਂਡ"
+ },
+ "PS": {
+ "name": "ਫਿਲੀਸਤੀਨੀ ਖੇਤਰ"
+ },
+ "PH": {
+ "name": "ਫਿਲੀਪੀਂਸ"
+ },
+ "FO": {
+ "name": "ਫੈਰੋ ਟਾਪੂ"
+ },
+ "BS": {
+ "name": "ਬਹਾਮਾਸ"
+ },
+ "BH": {
+ "name": "ਬਹਿਰੀਨ"
+ },
+ "BD": {
+ "name": "ਬੰਗਲਾਦੇਸ਼"
+ },
+ "IO": {
+ "name": "ਬਰਤਾਨਵੀ ਹਿੰਦ ਮਹਾਂਸਾਗਰ ਪà©à¨°à¨¦à©‡à¨¸à¨¼"
+ },
+ "BM": {
+ "name": "ਬਰਮੂਡਾ"
+ },
+ "BN": {
+ "name": "ਬਰੂਨੇਈ"
+ },
+ "BR": {
+ "name": "ਬà©à¨°à¨¾à¨œà¨¼à©€à¨²"
+ },
+ "VG": {
+ "name": "ਬà©à¨°à¨¿à¨Ÿà¨¿à¨¸à¨¼ ਵਰਜਿਨ ਟਾਪੂ"
+ },
+ "BB": {
+ "name": "ਬਾਰਬਾਡੋਸ"
+ },
+ "BF": {
+ "name": "ਬà©à¨°à¨•à©€à¨¨à¨¾ ਫ਼ਾਸੋ"
+ },
+ "BI": {
+ "name": "ਬà©à¨°à©à©°à¨¡à©€"
+ },
+ "BG": {
+ "name": "ਬà©à¨²à¨—ਾਰੀਆ"
+ },
+ "BJ": {
+ "name": "ਬੇਨਿਨ"
+ },
+ "BY": {
+ "name": "ਬੇਲਾਰੂਸ"
+ },
+ "BZ": {
+ "name": "ਬੇਲੀਜ਼"
+ },
+ "BE": {
+ "name": "ਬੈਲਜੀਅਮ"
+ },
+ "BA": {
+ "name": "ਬੋਸਨੀਆ ਅਤੇ ਹਰਜ਼ੇਗੋਵੀਨਾ"
+ },
+ "BW": {
+ "name": "ਬੋਟਸਵਾਨਾ"
+ },
+ "BO": {
+ "name": "ਬੋਲੀਵੀਆ"
+ },
+ "IN": {
+ "name": "ਭਾਰਤ"
+ },
+ "GQ": {
+ "name": "ਭੂ-ਖੰਡੀ ਗਿਨੀ"
+ },
+ "BT": {
+ "name": "ਭੂਟਾਨ"
+ },
+ "MO": {
+ "name": "ਮਕਾਉ à¨à¨¸à¨à¨†à¨° ਚੀਨ"
+ },
+ "MN": {
+ "name": "ਮੰਗੋਲੀਆ"
+ },
+ "MW": {
+ "name": "ਮਲਾਵੀ"
+ },
+ "MY": {
+ "name": "ਮਲੇਸ਼ੀਆ"
+ },
+ "FM": {
+ "name": "ਮਾਇਕà©à¨°à©‹à¨¨à©‡à¨¸à¨¼à©€à¨†"
+ },
+ "YT": {
+ "name": "ਮਾਯੋਟੀ"
+ },
+ "MH": {
+ "name": "ਮਾਰਸ਼ਲ ਟਾਪੂ"
+ },
+ "MQ": {
+ "name": "ਮਾਰਟੀਨਿਕ"
+ },
+ "MT": {
+ "name": "ਮਾਲਟਾ"
+ },
+ "MV": {
+ "name": "ਮਾਲਦੀਵ"
+ },
+ "ML": {
+ "name": "ਮਾਲੀ"
+ },
+ "MM": {
+ "name": "ਮਿਆਂਮਾਰ (ਬਰਮਾ)"
+ },
+ "EG": {
+ "name": "ਮਿਸਰ"
+ },
+ "MX": {
+ "name": "ਮੈਕਸੀਕੋ"
+ },
+ "MK": {
+ "name": "ਮੈਕਡੋਨੀਆ"
+ },
+ "MG": {
+ "name": "ਮੈਡਾਗਾਸਕਰ"
+ },
+ "MZ": {
+ "name": "ਮੋਜ਼ਾਮਬੀਕ"
+ },
+ "MS": {
+ "name": "ਮੋਂਟਸੇਰਾਤ"
+ },
+ "ME": {
+ "name": "ਮੋਂਟੇਨੇਗਰੋ"
+ },
+ "MC": {
+ "name": "ਮੋਨਾਕੋ"
+ },
+ "MA": {
+ "name": "ਮੋਰੱਕੋ"
+ },
+ "MR": {
+ "name": "ਮੋਰਿਟਾਨੀਆ"
+ },
+ "MD": {
+ "name": "ਮੋਲਡੋਵਾ"
+ },
+ "MU": {
+ "name": "ਮੌਰਿਸ਼ਸ"
+ },
+ "YE": {
+ "name": "ਯਮਨ"
+ },
+ "VI": {
+ "name": "ਯੂ à¨à¨¸ ਵਰਜਿਨ ਟਾਪੂ"
+ },
+ "UM": {
+ "name": "ਯੂ.à¨à¨¸. ਦੂਰ-ਦà©à¨°à¨¾à¨¡à©‡ ਟਾਪੂ"
+ },
+ "UA": {
+ "name": "ਯੂਕਰੇਨ"
+ },
+ "UG": {
+ "name": "ਯੂਗਾਂਡਾ"
+ },
+ "GB": {
+ "name": "ਯੂਨਾਈਟਡ ਕਿੰਗਡਮ"
+ },
+ "RW": {
+ "name": "ਰਵਾਂਡਾ"
+ },
+ "RE": {
+ "name": "ਰਿਯੂਨੀਅਨ"
+ },
+ "RU": {
+ "name": "ਰੂਸ"
+ },
+ "RO": {
+ "name": "ਰੋਮਾਨੀਆ"
+ },
+ "LU": {
+ "name": "ਲਕਜ਼ਮਬਰਗ"
+ },
+ "LA": {
+ "name": "ਲਾਓਸ"
+ },
+ "LR": {
+ "name": "ਲਾਈਬੀਰੀਆ"
+ },
+ "LV": {
+ "name": "ਲਾਟਵੀਆ"
+ },
+ "LI": {
+ "name": "ਲਿਚੇਂਸਟਾਇਨ"
+ },
+ "LT": {
+ "name": "ਲਿਥà©à¨†à¨¨à©€à¨†"
+ },
+ "LY": {
+ "name": "ਲੀਬੀਆ"
+ },
+ "LS": {
+ "name": "ਲੇਸੋਥੋ"
+ },
+ "LB": {
+ "name": "ਲੈਬਨਾਨ"
+ },
+ "VU": {
+ "name": "ਵਾਨੂਆਟੂ"
+ },
+ "WF": {
+ "name": "ਵਾਲਿਸ ਅਤੇ ਫੂਟੂਨਾ"
+ },
+ "VN": {
+ "name": "ਵੀਅਤਨਾਮ"
+ },
+ "VE": {
+ "name": "ਵੇਨੇਜ਼ੂà¨à¨²à¨¾"
+ },
+ "VA": {
+ "name": "ਵੈਟੀਕਨ ਸਿਟੀ"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/country/pl.json b/library/intl/resources/country/pl.json
new file mode 100644
index 000000000..52e02228e
--- /dev/null
+++ b/library/intl/resources/country/pl.json
@@ -0,0 +1,761 @@
+{
+ "AF": {
+ "name": "Afganistan"
+ },
+ "AL": {
+ "name": "Albania"
+ },
+ "DZ": {
+ "name": "Algieria"
+ },
+ "AD": {
+ "name": "Andora"
+ },
+ "AO": {
+ "name": "Angola"
+ },
+ "AI": {
+ "name": "Anguilla"
+ },
+ "AQ": {
+ "name": "Antarktyka"
+ },
+ "AG": {
+ "name": "Antigua i Barbuda"
+ },
+ "SA": {
+ "name": "Arabia Saudyjska"
+ },
+ "AR": {
+ "name": "Argentyna"
+ },
+ "AM": {
+ "name": "Armenia"
+ },
+ "AW": {
+ "name": "Aruba"
+ },
+ "AU": {
+ "name": "Australia"
+ },
+ "AT": {
+ "name": "Austria"
+ },
+ "AZ": {
+ "name": "Azerbejdżan"
+ },
+ "BS": {
+ "name": "Bahamy"
+ },
+ "BH": {
+ "name": "Bahrajn"
+ },
+ "BD": {
+ "name": "Bangladesz"
+ },
+ "BB": {
+ "name": "Barbados"
+ },
+ "BE": {
+ "name": "Belgia"
+ },
+ "BZ": {
+ "name": "Belize"
+ },
+ "BJ": {
+ "name": "Benin"
+ },
+ "BM": {
+ "name": "Bermudy"
+ },
+ "BT": {
+ "name": "Bhutan"
+ },
+ "BY": {
+ "name": "Białoruś"
+ },
+ "BO": {
+ "name": "Boliwia"
+ },
+ "BA": {
+ "name": "Bośnia i Hercegowina"
+ },
+ "BW": {
+ "name": "Botswana"
+ },
+ "BR": {
+ "name": "Brazylia"
+ },
+ "BN": {
+ "name": "Brunei Darussalam"
+ },
+ "IO": {
+ "name": "Brytyjskie Terytorium Oceanu Indyjskiego"
+ },
+ "VG": {
+ "name": "Brytyjskie Wyspy Dziewicze"
+ },
+ "BG": {
+ "name": "Bułgaria"
+ },
+ "BF": {
+ "name": "Burkina Faso"
+ },
+ "BI": {
+ "name": "Burundi"
+ },
+ "EA": {
+ "name": "Ceuta i Melilla"
+ },
+ "CL": {
+ "name": "Chile"
+ },
+ "CN": {
+ "name": "Chiny"
+ },
+ "HR": {
+ "name": "Chorwacja"
+ },
+ "CI": {
+ "name": "Côte d’Ivoire"
+ },
+ "CW": {
+ "name": "Curaçao"
+ },
+ "CY": {
+ "name": "Cypr"
+ },
+ "TD": {
+ "name": "Czad"
+ },
+ "ME": {
+ "name": "Czarnogóra"
+ },
+ "CZ": {
+ "name": "Czechy"
+ },
+ "UM": {
+ "name": "Dalekie Wyspy Mniejsze Stanów Zjednoczonych"
+ },
+ "DK": {
+ "name": "Dania"
+ },
+ "CD": {
+ "name": "Demokratyczna Republika Konga"
+ },
+ "DG": {
+ "name": "Diego Garcia"
+ },
+ "DM": {
+ "name": "Dominika"
+ },
+ "DO": {
+ "name": "Dominikana"
+ },
+ "DJ": {
+ "name": "Dżibuti"
+ },
+ "EG": {
+ "name": "Egipt"
+ },
+ "EC": {
+ "name": "Ekwador"
+ },
+ "ER": {
+ "name": "Erytrea"
+ },
+ "EE": {
+ "name": "Estonia"
+ },
+ "ET": {
+ "name": "Etiopia"
+ },
+ "FK": {
+ "name": "Falklandy"
+ },
+ "FJ": {
+ "name": "Fidżi"
+ },
+ "PH": {
+ "name": "Filipiny"
+ },
+ "FI": {
+ "name": "Finlandia"
+ },
+ "FR": {
+ "name": "Francja"
+ },
+ "TF": {
+ "name": "Francuskie Terytoria Południowe"
+ },
+ "GA": {
+ "name": "Gabon"
+ },
+ "GM": {
+ "name": "Gambia"
+ },
+ "GS": {
+ "name": "Georgia Południowa i Sandwich Południowy"
+ },
+ "GH": {
+ "name": "Ghana"
+ },
+ "GI": {
+ "name": "Gibraltar"
+ },
+ "GR": {
+ "name": "Grecja"
+ },
+ "GD": {
+ "name": "Grenada"
+ },
+ "GL": {
+ "name": "Grenlandia"
+ },
+ "GE": {
+ "name": "Gruzja"
+ },
+ "GU": {
+ "name": "Guam"
+ },
+ "GY": {
+ "name": "Gujana"
+ },
+ "GF": {
+ "name": "Gujana Francuska"
+ },
+ "GP": {
+ "name": "Gwadelupa"
+ },
+ "GT": {
+ "name": "Gwatemala"
+ },
+ "GN": {
+ "name": "Gwinea"
+ },
+ "GW": {
+ "name": "Gwinea Bissau"
+ },
+ "GQ": {
+ "name": "Gwinea Równikowa"
+ },
+ "HT": {
+ "name": "Haiti"
+ },
+ "ES": {
+ "name": "Hiszpania"
+ },
+ "NL": {
+ "name": "Holandia"
+ },
+ "HN": {
+ "name": "Honduras"
+ },
+ "IN": {
+ "name": "Indie"
+ },
+ "ID": {
+ "name": "Indonezja"
+ },
+ "IQ": {
+ "name": "Irak"
+ },
+ "IR": {
+ "name": "Iran"
+ },
+ "IE": {
+ "name": "Irlandia"
+ },
+ "IS": {
+ "name": "Islandia"
+ },
+ "IL": {
+ "name": "Izrael"
+ },
+ "JM": {
+ "name": "Jamajka"
+ },
+ "JP": {
+ "name": "Japonia"
+ },
+ "YE": {
+ "name": "Jemen"
+ },
+ "JO": {
+ "name": "Jordania"
+ },
+ "KY": {
+ "name": "Kajmany"
+ },
+ "KH": {
+ "name": "Kambodża"
+ },
+ "CM": {
+ "name": "Kamerun"
+ },
+ "CA": {
+ "name": "Kanada"
+ },
+ "QA": {
+ "name": "Katar"
+ },
+ "KZ": {
+ "name": "Kazachstan"
+ },
+ "KE": {
+ "name": "Kenia"
+ },
+ "KG": {
+ "name": "Kirgistan"
+ },
+ "KI": {
+ "name": "Kiribati"
+ },
+ "CO": {
+ "name": "Kolumbia"
+ },
+ "KM": {
+ "name": "Komory"
+ },
+ "CG": {
+ "name": "Kongo"
+ },
+ "KR": {
+ "name": "Korea Południowa"
+ },
+ "KP": {
+ "name": "Korea Północna"
+ },
+ "XK": {
+ "name": "Kosowo"
+ },
+ "CR": {
+ "name": "Kostaryka"
+ },
+ "CU": {
+ "name": "Kuba"
+ },
+ "KW": {
+ "name": "Kuwejt"
+ },
+ "LA": {
+ "name": "Laos"
+ },
+ "LS": {
+ "name": "Lesotho"
+ },
+ "LB": {
+ "name": "Liban"
+ },
+ "LR": {
+ "name": "Liberia"
+ },
+ "LY": {
+ "name": "Libia"
+ },
+ "LI": {
+ "name": "Liechtenstein"
+ },
+ "LT": {
+ "name": "Litwa"
+ },
+ "LU": {
+ "name": "Luksemburg"
+ },
+ "LV": {
+ "name": "Åotwa"
+ },
+ "MK": {
+ "name": "Macedonia"
+ },
+ "MG": {
+ "name": "Madagaskar"
+ },
+ "YT": {
+ "name": "Majotta"
+ },
+ "MW": {
+ "name": "Malawi"
+ },
+ "MV": {
+ "name": "Malediwy"
+ },
+ "MY": {
+ "name": "Malezja"
+ },
+ "ML": {
+ "name": "Mali"
+ },
+ "MT": {
+ "name": "Malta"
+ },
+ "MP": {
+ "name": "Mariany Północne"
+ },
+ "MA": {
+ "name": "Maroko"
+ },
+ "MQ": {
+ "name": "Martynika"
+ },
+ "MR": {
+ "name": "Mauretania"
+ },
+ "MU": {
+ "name": "Mauritius"
+ },
+ "MX": {
+ "name": "Meksyk"
+ },
+ "FM": {
+ "name": "Mikronezja"
+ },
+ "MM": {
+ "name": "Mjanma (Birma)"
+ },
+ "MD": {
+ "name": "Mołdawia"
+ },
+ "MC": {
+ "name": "Monako"
+ },
+ "MN": {
+ "name": "Mongolia"
+ },
+ "MS": {
+ "name": "Montserrat"
+ },
+ "MZ": {
+ "name": "Mozambik"
+ },
+ "NA": {
+ "name": "Namibia"
+ },
+ "NR": {
+ "name": "Nauru"
+ },
+ "NP": {
+ "name": "Nepal"
+ },
+ "BQ": {
+ "name": "Niderlandy Karaibskie"
+ },
+ "DE": {
+ "name": "Niemcy"
+ },
+ "NE": {
+ "name": "Niger"
+ },
+ "NG": {
+ "name": "Nigeria"
+ },
+ "NI": {
+ "name": "Nikaragua"
+ },
+ "NU": {
+ "name": "Niue"
+ },
+ "NF": {
+ "name": "Norfolk"
+ },
+ "NO": {
+ "name": "Norwegia"
+ },
+ "NC": {
+ "name": "Nowa Kaledonia"
+ },
+ "NZ": {
+ "name": "Nowa Zelandia"
+ },
+ "OM": {
+ "name": "Oman"
+ },
+ "PK": {
+ "name": "Pakistan"
+ },
+ "PW": {
+ "name": "Palau"
+ },
+ "PA": {
+ "name": "Panama"
+ },
+ "PG": {
+ "name": "Papua-Nowa Gwinea"
+ },
+ "PY": {
+ "name": "Paragwaj"
+ },
+ "PE": {
+ "name": "Peru"
+ },
+ "PN": {
+ "name": "Pitcairn"
+ },
+ "PF": {
+ "name": "Polinezja Francuska"
+ },
+ "PL": {
+ "name": "Polska"
+ },
+ "PR": {
+ "name": "Portoryko"
+ },
+ "PT": {
+ "name": "Portugalia"
+ },
+ "ZA": {
+ "name": "Republika Południowej Afryki"
+ },
+ "CF": {
+ "name": "Republika Środkowoafrykańska"
+ },
+ "CV": {
+ "name": "Republika Zielonego PrzylÄ…dka"
+ },
+ "RE": {
+ "name": "Reunion"
+ },
+ "RU": {
+ "name": "Rosja"
+ },
+ "RO": {
+ "name": "Rumunia"
+ },
+ "RW": {
+ "name": "Rwanda"
+ },
+ "EH": {
+ "name": "Sahara Zachodnia"
+ },
+ "KN": {
+ "name": "Saint Kitts i Nevis"
+ },
+ "LC": {
+ "name": "Saint Lucia"
+ },
+ "VC": {
+ "name": "Saint Vincent i Grenadyny"
+ },
+ "BL": {
+ "name": "Saint-Barthélemy"
+ },
+ "MF": {
+ "name": "Saint-Martin"
+ },
+ "PM": {
+ "name": "Saint-Pierre i Miquelon"
+ },
+ "SV": {
+ "name": "Salwador"
+ },
+ "WS": {
+ "name": "Samoa"
+ },
+ "AS": {
+ "name": "Samoa Amerykańskie"
+ },
+ "SM": {
+ "name": "San Marino"
+ },
+ "SN": {
+ "name": "Senegal"
+ },
+ "RS": {
+ "name": "Serbia"
+ },
+ "SC": {
+ "name": "Seszele"
+ },
+ "SL": {
+ "name": "Sierra Leone"
+ },
+ "SG": {
+ "name": "Singapur"
+ },
+ "SX": {
+ "name": "Sint Maarten"
+ },
+ "SK": {
+ "name": "SÅ‚owacja"
+ },
+ "SI": {
+ "name": "SÅ‚owenia"
+ },
+ "SO": {
+ "name": "Somalia"
+ },
+ "HK": {
+ "name": "SRA Hongkong (Chiny)"
+ },
+ "MO": {
+ "name": "SRA Makau (Chiny)"
+ },
+ "LK": {
+ "name": "Sri Lanka"
+ },
+ "US": {
+ "name": "Stany Zjednoczone"
+ },
+ "SZ": {
+ "name": "Suazi"
+ },
+ "SD": {
+ "name": "Sudan"
+ },
+ "SS": {
+ "name": "Sudan Południowy"
+ },
+ "SR": {
+ "name": "Surinam"
+ },
+ "SJ": {
+ "name": "Svalbard i Jan Mayen"
+ },
+ "SY": {
+ "name": "Syria"
+ },
+ "CH": {
+ "name": "Szwajcaria"
+ },
+ "SE": {
+ "name": "Szwecja"
+ },
+ "TJ": {
+ "name": "Tadżykistan"
+ },
+ "TH": {
+ "name": "Tajlandia"
+ },
+ "TW": {
+ "name": "Tajwan"
+ },
+ "TZ": {
+ "name": "Tanzania"
+ },
+ "PS": {
+ "name": "Terytoria Palestyńskie"
+ },
+ "TL": {
+ "name": "Timor Wschodni"
+ },
+ "TG": {
+ "name": "Togo"
+ },
+ "TK": {
+ "name": "Tokelau"
+ },
+ "TO": {
+ "name": "Tonga"
+ },
+ "TA": {
+ "name": "Tristan da Cunha"
+ },
+ "TT": {
+ "name": "Trynidad i Tobago"
+ },
+ "TN": {
+ "name": "Tunezja"
+ },
+ "TR": {
+ "name": "Turcja"
+ },
+ "TM": {
+ "name": "Turkmenistan"
+ },
+ "TC": {
+ "name": "Turks i Caicos"
+ },
+ "TV": {
+ "name": "Tuvalu"
+ },
+ "UG": {
+ "name": "Uganda"
+ },
+ "UA": {
+ "name": "Ukraina"
+ },
+ "UY": {
+ "name": "Urugwaj"
+ },
+ "UZ": {
+ "name": "Uzbekistan"
+ },
+ "VU": {
+ "name": "Vanuatu"
+ },
+ "WF": {
+ "name": "Wallis i Futuna"
+ },
+ "VA": {
+ "name": "Watykan"
+ },
+ "VE": {
+ "name": "Wenezuela"
+ },
+ "HU": {
+ "name": "Węgry"
+ },
+ "GB": {
+ "name": "Wielka Brytania"
+ },
+ "VN": {
+ "name": "Wietnam"
+ },
+ "IT": {
+ "name": "WÅ‚ochy"
+ },
+ "CX": {
+ "name": "Wyspa Bożego Narodzenia"
+ },
+ "GG": {
+ "name": "Wyspa Guernsey"
+ },
+ "JE": {
+ "name": "Wyspa Jersey"
+ },
+ "IM": {
+ "name": "Wyspa Man"
+ },
+ "SH": {
+ "name": "Wyspa Świętej Heleny"
+ },
+ "AC": {
+ "name": "Wyspa WniebowstÄ…pienia"
+ },
+ "AX": {
+ "name": "Wyspy Alandzkie"
+ },
+ "CK": {
+ "name": "Wyspy Cooka"
+ },
+ "VI": {
+ "name": "Wyspy Dziewicze Stanów Zjednoczonych"
+ },
+ "IC": {
+ "name": "Wyspy Kanaryjskie"
+ },
+ "CC": {
+ "name": "Wyspy Kokosowe"
+ },
+ "MH": {
+ "name": "Wyspy Marshalla"
+ },
+ "FO": {
+ "name": "Wyspy Owcze"
+ },
+ "SB": {
+ "name": "Wyspy Salomona"
+ },
+ "ST": {
+ "name": "Wyspy Świętego Tomasza i Książęca"
+ },
+ "ZM": {
+ "name": "Zambia"
+ },
+ "ZW": {
+ "name": "Zimbabwe"
+ },
+ "AE": {
+ "name": "Zjednoczone Emiraty Arabskie"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/country/ps.json b/library/intl/resources/country/ps.json
new file mode 100644
index 000000000..454e4ce05
--- /dev/null
+++ b/library/intl/resources/country/ps.json
@@ -0,0 +1,761 @@
+{
+ "AX": {
+ "name": "Ã…land Islands"
+ },
+ "AS": {
+ "name": "American Samoa"
+ },
+ "AD": {
+ "name": "Andorra"
+ },
+ "AI": {
+ "name": "Anguilla"
+ },
+ "AG": {
+ "name": "Antigua & Barbuda"
+ },
+ "AR": {
+ "name": "Argentina"
+ },
+ "AM": {
+ "name": "Armenia"
+ },
+ "AW": {
+ "name": "Aruba"
+ },
+ "AC": {
+ "name": "Ascension Island"
+ },
+ "AU": {
+ "name": "Australia"
+ },
+ "AZ": {
+ "name": "Azerbaijan"
+ },
+ "BS": {
+ "name": "Bahamas"
+ },
+ "BH": {
+ "name": "Bahrain"
+ },
+ "BB": {
+ "name": "Barbados"
+ },
+ "BY": {
+ "name": "Belarus"
+ },
+ "BE": {
+ "name": "Belgium"
+ },
+ "BZ": {
+ "name": "Belize"
+ },
+ "BJ": {
+ "name": "Benin"
+ },
+ "BM": {
+ "name": "Bermuda"
+ },
+ "BT": {
+ "name": "Bhutan"
+ },
+ "BO": {
+ "name": "Bolivia"
+ },
+ "BA": {
+ "name": "Bosnia & Herzegovina"
+ },
+ "BW": {
+ "name": "Botswana"
+ },
+ "BR": {
+ "name": "Brazil"
+ },
+ "IO": {
+ "name": "British Indian Ocean Territory"
+ },
+ "VG": {
+ "name": "British Virgin Islands"
+ },
+ "BN": {
+ "name": "Brunei"
+ },
+ "BF": {
+ "name": "Burkina Faso"
+ },
+ "BI": {
+ "name": "Burundi"
+ },
+ "CM": {
+ "name": "Cameroon"
+ },
+ "IC": {
+ "name": "Canary Islands"
+ },
+ "CV": {
+ "name": "Cape Verde"
+ },
+ "BQ": {
+ "name": "Caribbean Netherlands"
+ },
+ "KY": {
+ "name": "Cayman Islands"
+ },
+ "CF": {
+ "name": "Central African Republic"
+ },
+ "EA": {
+ "name": "Ceuta & Melilla"
+ },
+ "TD": {
+ "name": "Chad"
+ },
+ "CL": {
+ "name": "Chile"
+ },
+ "CX": {
+ "name": "Christmas Island"
+ },
+ "CC": {
+ "name": "Cocos (Keeling) Islands"
+ },
+ "KM": {
+ "name": "Comoros"
+ },
+ "CG": {
+ "name": "Congo - Brazzaville"
+ },
+ "CD": {
+ "name": "Congo - Kinshasa"
+ },
+ "CK": {
+ "name": "Cook Islands"
+ },
+ "CR": {
+ "name": "Costa Rica"
+ },
+ "CI": {
+ "name": "Côte d’Ivoire"
+ },
+ "HR": {
+ "name": "Croatia"
+ },
+ "CW": {
+ "name": "Curaçao"
+ },
+ "CY": {
+ "name": "Cyprus"
+ },
+ "CZ": {
+ "name": "Czech Republic"
+ },
+ "DG": {
+ "name": "Diego Garcia"
+ },
+ "DJ": {
+ "name": "Djibouti"
+ },
+ "DM": {
+ "name": "Dominica"
+ },
+ "DO": {
+ "name": "Dominican Republic"
+ },
+ "EC": {
+ "name": "Ecuador"
+ },
+ "GQ": {
+ "name": "Equatorial Guinea"
+ },
+ "ER": {
+ "name": "Eritrea"
+ },
+ "EE": {
+ "name": "Estonia"
+ },
+ "FK": {
+ "name": "Falkland Islands"
+ },
+ "FO": {
+ "name": "Faroe Islands"
+ },
+ "FJ": {
+ "name": "Fiji"
+ },
+ "GF": {
+ "name": "French Guiana"
+ },
+ "PF": {
+ "name": "French Polynesia"
+ },
+ "TF": {
+ "name": "French Southern Territories"
+ },
+ "GA": {
+ "name": "Gabon"
+ },
+ "GM": {
+ "name": "Gambia"
+ },
+ "GE": {
+ "name": "Georgia"
+ },
+ "GI": {
+ "name": "Gibraltar"
+ },
+ "GL": {
+ "name": "Greenland"
+ },
+ "GD": {
+ "name": "Grenada"
+ },
+ "GP": {
+ "name": "Guadeloupe"
+ },
+ "GU": {
+ "name": "Guam"
+ },
+ "GG": {
+ "name": "Guernsey"
+ },
+ "GW": {
+ "name": "Guinea-Bissau"
+ },
+ "GY": {
+ "name": "Guyana"
+ },
+ "HT": {
+ "name": "Haiti"
+ },
+ "HK": {
+ "name": "Hong Kong SAR China"
+ },
+ "IR": {
+ "name": "Iran"
+ },
+ "IE": {
+ "name": "Ireland"
+ },
+ "IM": {
+ "name": "Isle of Man"
+ },
+ "IL": {
+ "name": "Israel"
+ },
+ "JE": {
+ "name": "Jersey"
+ },
+ "JO": {
+ "name": "Jordan"
+ },
+ "KZ": {
+ "name": "Kazakhstan"
+ },
+ "KE": {
+ "name": "Kenya"
+ },
+ "KI": {
+ "name": "Kiribati"
+ },
+ "XK": {
+ "name": "Kosovo"
+ },
+ "KG": {
+ "name": "Kyrgyzstan"
+ },
+ "LV": {
+ "name": "Latvia"
+ },
+ "LS": {
+ "name": "Lesotho"
+ },
+ "LI": {
+ "name": "Liechtenstein"
+ },
+ "LT": {
+ "name": "Lithuania"
+ },
+ "LU": {
+ "name": "Luxembourg"
+ },
+ "MO": {
+ "name": "Macau SAR China"
+ },
+ "MK": {
+ "name": "Macedonia"
+ },
+ "MG": {
+ "name": "Madagascar"
+ },
+ "MW": {
+ "name": "Malawi"
+ },
+ "MV": {
+ "name": "Maldives"
+ },
+ "ML": {
+ "name": "Mali"
+ },
+ "MT": {
+ "name": "Malta"
+ },
+ "MH": {
+ "name": "Marshall Islands"
+ },
+ "MQ": {
+ "name": "Martinique"
+ },
+ "MR": {
+ "name": "Mauritania"
+ },
+ "MU": {
+ "name": "Mauritius"
+ },
+ "YT": {
+ "name": "Mayotte"
+ },
+ "MX": {
+ "name": "Mexico"
+ },
+ "FM": {
+ "name": "Micronesia"
+ },
+ "MD": {
+ "name": "Moldova"
+ },
+ "MC": {
+ "name": "Monaco"
+ },
+ "ME": {
+ "name": "Montenegro"
+ },
+ "MS": {
+ "name": "Montserrat"
+ },
+ "MZ": {
+ "name": "Mozambique"
+ },
+ "MM": {
+ "name": "Myanmar (Burma)"
+ },
+ "NA": {
+ "name": "Namibia"
+ },
+ "NR": {
+ "name": "Nauru"
+ },
+ "NC": {
+ "name": "New Caledonia"
+ },
+ "NE": {
+ "name": "Niger"
+ },
+ "NU": {
+ "name": "Niue"
+ },
+ "NF": {
+ "name": "Norfolk Island"
+ },
+ "KP": {
+ "name": "North Korea"
+ },
+ "MP": {
+ "name": "Northern Mariana Islands"
+ },
+ "OM": {
+ "name": "Oman"
+ },
+ "PW": {
+ "name": "Palau"
+ },
+ "PA": {
+ "name": "Panama"
+ },
+ "PG": {
+ "name": "Papua New Guinea"
+ },
+ "PY": {
+ "name": "Paraguay"
+ },
+ "PE": {
+ "name": "Peru"
+ },
+ "PH": {
+ "name": "Philippines"
+ },
+ "PN": {
+ "name": "Pitcairn Islands"
+ },
+ "PR": {
+ "name": "Puerto Rico"
+ },
+ "QA": {
+ "name": "Qatar"
+ },
+ "RE": {
+ "name": "Réunion"
+ },
+ "RO": {
+ "name": "Romania"
+ },
+ "WS": {
+ "name": "Samoa"
+ },
+ "SM": {
+ "name": "San Marino"
+ },
+ "ST": {
+ "name": "São Tomé & Príncipe"
+ },
+ "SN": {
+ "name": "Senegal"
+ },
+ "RS": {
+ "name": "Serbia"
+ },
+ "SC": {
+ "name": "Seychelles"
+ },
+ "SL": {
+ "name": "Sierra Leone"
+ },
+ "SG": {
+ "name": "Singapore"
+ },
+ "SX": {
+ "name": "Sint Maarten"
+ },
+ "SK": {
+ "name": "Slovakia"
+ },
+ "SI": {
+ "name": "Slovenia"
+ },
+ "SB": {
+ "name": "Solomon Islands"
+ },
+ "SO": {
+ "name": "Somalia"
+ },
+ "ZA": {
+ "name": "South Africa"
+ },
+ "GS": {
+ "name": "South Georgia & South Sandwich Islands"
+ },
+ "KR": {
+ "name": "South Korea"
+ },
+ "SS": {
+ "name": "South Sudan"
+ },
+ "LK": {
+ "name": "Sri Lanka"
+ },
+ "BL": {
+ "name": "St. Barthélemy"
+ },
+ "SH": {
+ "name": "St. Helena"
+ },
+ "KN": {
+ "name": "St. Kitts & Nevis"
+ },
+ "LC": {
+ "name": "St. Lucia"
+ },
+ "MF": {
+ "name": "St. Martin"
+ },
+ "PM": {
+ "name": "St. Pierre & Miquelon"
+ },
+ "VC": {
+ "name": "St. Vincent & Grenadines"
+ },
+ "SD": {
+ "name": "Sudan"
+ },
+ "SR": {
+ "name": "Suriname"
+ },
+ "SJ": {
+ "name": "Svalbard & Jan Mayen"
+ },
+ "SZ": {
+ "name": "Swaziland"
+ },
+ "TW": {
+ "name": "Taiwan"
+ },
+ "TH": {
+ "name": "Thailand"
+ },
+ "TL": {
+ "name": "Timor-Leste"
+ },
+ "TG": {
+ "name": "Togo"
+ },
+ "TK": {
+ "name": "Tokelau"
+ },
+ "TO": {
+ "name": "Tonga"
+ },
+ "TT": {
+ "name": "Trinidad & Tobago"
+ },
+ "TA": {
+ "name": "Tristan da Cunha"
+ },
+ "TN": {
+ "name": "Tunisia"
+ },
+ "TR": {
+ "name": "Turkey"
+ },
+ "TM": {
+ "name": "Turkmenistan"
+ },
+ "TC": {
+ "name": "Turks & Caicos Islands"
+ },
+ "TV": {
+ "name": "Tuvalu"
+ },
+ "UM": {
+ "name": "U.S. Outlying Islands"
+ },
+ "VI": {
+ "name": "U.S. Virgin Islands"
+ },
+ "UG": {
+ "name": "Uganda"
+ },
+ "UA": {
+ "name": "Ukraine"
+ },
+ "AE": {
+ "name": "United Arab Emirates"
+ },
+ "US": {
+ "name": "United States"
+ },
+ "UZ": {
+ "name": "Uzbekistan"
+ },
+ "VU": {
+ "name": "Vanuatu"
+ },
+ "VA": {
+ "name": "Vatican City"
+ },
+ "VE": {
+ "name": "Venezuela"
+ },
+ "VN": {
+ "name": "Vietnam"
+ },
+ "WF": {
+ "name": "Wallis & Futuna"
+ },
+ "EH": {
+ "name": "Western Sahara"
+ },
+ "ZM": {
+ "name": "Zambia"
+ },
+ "ZW": {
+ "name": "Zimbabwe"
+ },
+ "IS": {
+ "name": "آیسلینډ"
+ },
+ "AT": {
+ "name": "اتریش"
+ },
+ "AF": {
+ "name": "اÙغانستان"
+ },
+ "AL": {
+ "name": "البانیه"
+ },
+ "DZ": {
+ "name": "الجزایر"
+ },
+ "DE": {
+ "name": "المان"
+ },
+ "AQ": {
+ "name": "انتارکتیکا"
+ },
+ "ID": {
+ "name": "اندونیزیا"
+ },
+ "AO": {
+ "name": "انګولا"
+ },
+ "IT": {
+ "name": "ایټالیه"
+ },
+ "GB": {
+ "name": "برتانیه"
+ },
+ "BG": {
+ "name": "بلغاریه"
+ },
+ "BD": {
+ "name": "بنګله‌دیش"
+ },
+ "PK": {
+ "name": "پاکستان"
+ },
+ "PT": {
+ "name": "پورتګال"
+ },
+ "PL": {
+ "name": "پولنډ"
+ },
+ "TJ": {
+ "name": "تاجکستان"
+ },
+ "TZ": {
+ "name": "تنزانیا"
+ },
+ "JP": {
+ "name": "جاپان"
+ },
+ "JM": {
+ "name": "جمیکا"
+ },
+ "CN": {
+ "name": "چین"
+ },
+ "ET": {
+ "name": "حبشه"
+ },
+ "DK": {
+ "name": "ډنمارک"
+ },
+ "RU": {
+ "name": "روسیه"
+ },
+ "RW": {
+ "name": "روندا"
+ },
+ "SV": {
+ "name": "سالوÛډور"
+ },
+ "SA": {
+ "name": "سعودی عربستان"
+ },
+ "SY": {
+ "name": "سوریه"
+ },
+ "SE": {
+ "name": "سویډن"
+ },
+ "CH": {
+ "name": "سویس"
+ },
+ "IQ": {
+ "name": "عراق"
+ },
+ "FR": {
+ "name": "Ùرانسه"
+ },
+ "PS": {
+ "name": "Ùلسطین"
+ },
+ "FI": {
+ "name": "Ùنلینډ"
+ },
+ "CA": {
+ "name": "کاناډا"
+ },
+ "KH": {
+ "name": "کمبودیا"
+ },
+ "CO": {
+ "name": "کولمبیا"
+ },
+ "KW": {
+ "name": "کویټ"
+ },
+ "CU": {
+ "name": "کیوبا"
+ },
+ "GH": {
+ "name": "ګانا"
+ },
+ "GT": {
+ "name": "ګواتیمالا"
+ },
+ "GN": {
+ "name": "ګیانا"
+ },
+ "LA": {
+ "name": "لاوس"
+ },
+ "LR": {
+ "name": "لایبریا"
+ },
+ "LB": {
+ "name": "لبنان"
+ },
+ "LY": {
+ "name": "لیبیا"
+ },
+ "MY": {
+ "name": "مالیزیا"
+ },
+ "HU": {
+ "name": "مجارستان"
+ },
+ "MA": {
+ "name": "مراکش"
+ },
+ "EG": {
+ "name": "مصر"
+ },
+ "MN": {
+ "name": "مغولستان"
+ },
+ "NO": {
+ "name": "ناروÛ"
+ },
+ "NG": {
+ "name": "نایجیریا"
+ },
+ "NI": {
+ "name": "نکاراګوا"
+ },
+ "NP": {
+ "name": "نیپال"
+ },
+ "NZ": {
+ "name": "نیوزیلنډ"
+ },
+ "NL": {
+ "name": "هالÛÙ†Ú‰"
+ },
+ "HN": {
+ "name": "هانډوراس"
+ },
+ "ES": {
+ "name": "هسپانیه"
+ },
+ "IN": {
+ "name": "هند"
+ },
+ "YE": {
+ "name": "یمن"
+ },
+ "UY": {
+ "name": "یوروګوای"
+ },
+ "GR": {
+ "name": "یونان"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/country/pt-AO.json b/library/intl/resources/country/pt-AO.json
new file mode 100644
index 000000000..0b59b2b6f
--- /dev/null
+++ b/library/intl/resources/country/pt-AO.json
@@ -0,0 +1,761 @@
+{
+ "AF": {
+ "name": "Afeganistão"
+ },
+ "ZA": {
+ "name": "Ãfrica do Sul"
+ },
+ "AL": {
+ "name": "Albânia"
+ },
+ "DE": {
+ "name": "Alemanha"
+ },
+ "AD": {
+ "name": "Andorra"
+ },
+ "AO": {
+ "name": "Angola"
+ },
+ "AI": {
+ "name": "Anguila"
+ },
+ "AQ": {
+ "name": "Antártida"
+ },
+ "AG": {
+ "name": "Antígua e Barbuda"
+ },
+ "SA": {
+ "name": "Arábia Saudita"
+ },
+ "DZ": {
+ "name": "Argélia"
+ },
+ "AR": {
+ "name": "Argentina"
+ },
+ "AM": {
+ "name": "Arménia"
+ },
+ "AW": {
+ "name": "Aruba"
+ },
+ "AU": {
+ "name": "Austrália"
+ },
+ "AT": {
+ "name": "Ãustria"
+ },
+ "AZ": {
+ "name": "Azerbaijão"
+ },
+ "BS": {
+ "name": "Bahamas"
+ },
+ "BD": {
+ "name": "Bangladesh"
+ },
+ "BB": {
+ "name": "Barbados"
+ },
+ "BH": {
+ "name": "Barém"
+ },
+ "BE": {
+ "name": "Bélgica"
+ },
+ "BZ": {
+ "name": "Belize"
+ },
+ "BJ": {
+ "name": "Benim"
+ },
+ "BM": {
+ "name": "Bermudas"
+ },
+ "BY": {
+ "name": "Bielorrússia"
+ },
+ "BO": {
+ "name": "Bolívia"
+ },
+ "BA": {
+ "name": "Bósnia e Herzegovina"
+ },
+ "BW": {
+ "name": "Botswana"
+ },
+ "BR": {
+ "name": "Brasil"
+ },
+ "BN": {
+ "name": "Brunei"
+ },
+ "BG": {
+ "name": "Bulgária"
+ },
+ "BF": {
+ "name": "Burquina Faso"
+ },
+ "BI": {
+ "name": "Burundi"
+ },
+ "BT": {
+ "name": "Butão"
+ },
+ "CV": {
+ "name": "Cabo Verde"
+ },
+ "CM": {
+ "name": "Camarões"
+ },
+ "KH": {
+ "name": "Camboja"
+ },
+ "CA": {
+ "name": "Canadá"
+ },
+ "QA": {
+ "name": "Catar"
+ },
+ "KZ": {
+ "name": "Cazaquistão"
+ },
+ "EA": {
+ "name": "Ceuta e Melilha"
+ },
+ "TD": {
+ "name": "Chade"
+ },
+ "CL": {
+ "name": "Chile"
+ },
+ "CN": {
+ "name": "China"
+ },
+ "CY": {
+ "name": "Chipre"
+ },
+ "VA": {
+ "name": "Cidade do Vaticano"
+ },
+ "CO": {
+ "name": "Colômbia"
+ },
+ "KM": {
+ "name": "Comores"
+ },
+ "CG": {
+ "name": "Congo-Brazzaville"
+ },
+ "CD": {
+ "name": "Congo-Kinshasa"
+ },
+ "KP": {
+ "name": "Coreia do Norte"
+ },
+ "KR": {
+ "name": "Coreia do Sul"
+ },
+ "CI": {
+ "name": "Costa do Marfim"
+ },
+ "CR": {
+ "name": "Costa Rica"
+ },
+ "HR": {
+ "name": "Croácia"
+ },
+ "CU": {
+ "name": "Cuba"
+ },
+ "CW": {
+ "name": "Curaçau"
+ },
+ "DG": {
+ "name": "Diego Garcia"
+ },
+ "DK": {
+ "name": "Dinamarca"
+ },
+ "DM": {
+ "name": "Domínica"
+ },
+ "EG": {
+ "name": "Egipto"
+ },
+ "SV": {
+ "name": "El Salvador"
+ },
+ "AE": {
+ "name": "Emirados Ãrabes Unidos"
+ },
+ "EC": {
+ "name": "Equador"
+ },
+ "ER": {
+ "name": "Eritreia"
+ },
+ "SK": {
+ "name": "Eslováquia"
+ },
+ "SI": {
+ "name": "Eslovénia"
+ },
+ "ES": {
+ "name": "Espanha"
+ },
+ "US": {
+ "name": "Estados Unidos"
+ },
+ "EE": {
+ "name": "Estónia"
+ },
+ "ET": {
+ "name": "Etiópia"
+ },
+ "FJ": {
+ "name": "Fiji"
+ },
+ "PH": {
+ "name": "Filipinas"
+ },
+ "FI": {
+ "name": "Finlândia"
+ },
+ "FR": {
+ "name": "França"
+ },
+ "GA": {
+ "name": "Gabão"
+ },
+ "GM": {
+ "name": "Gâmbia"
+ },
+ "GH": {
+ "name": "Gana"
+ },
+ "GE": {
+ "name": "Geórgia"
+ },
+ "GI": {
+ "name": "Gibraltar"
+ },
+ "GD": {
+ "name": "Granada"
+ },
+ "GR": {
+ "name": "Grécia"
+ },
+ "GL": {
+ "name": "Gronelândia"
+ },
+ "GP": {
+ "name": "Guadalupe"
+ },
+ "GU": {
+ "name": "Guame"
+ },
+ "GT": {
+ "name": "Guatemala"
+ },
+ "GG": {
+ "name": "Guernsey"
+ },
+ "GY": {
+ "name": "Guiana"
+ },
+ "GF": {
+ "name": "Guiana Francesa"
+ },
+ "GN": {
+ "name": "Guiné"
+ },
+ "GQ": {
+ "name": "Guiné Equatorial"
+ },
+ "GW": {
+ "name": "Guiné-Bissau"
+ },
+ "HT": {
+ "name": "Haiti"
+ },
+ "HN": {
+ "name": "Honduras"
+ },
+ "HK": {
+ "name": "Hong Kong, RAE da China"
+ },
+ "HU": {
+ "name": "Hungria"
+ },
+ "YE": {
+ "name": "Iémen"
+ },
+ "AC": {
+ "name": "Ilha de Ascensão"
+ },
+ "IM": {
+ "name": "Ilha de Man"
+ },
+ "CX": {
+ "name": "Ilha do Natal"
+ },
+ "NF": {
+ "name": "Ilha Norfolk"
+ },
+ "AX": {
+ "name": "Ilhas Ã…land"
+ },
+ "KY": {
+ "name": "Ilhas Caimão"
+ },
+ "IC": {
+ "name": "Ilhas Canárias"
+ },
+ "CC": {
+ "name": "Ilhas Cocos"
+ },
+ "CK": {
+ "name": "Ilhas Cook"
+ },
+ "UM": {
+ "name": "Ilhas Distantes dos EUA"
+ },
+ "FK": {
+ "name": "Ilhas Falkland"
+ },
+ "FO": {
+ "name": "Ilhas Faroé"
+ },
+ "GS": {
+ "name": "Ilhas Geórgia do Sul e Sandwich do Sul"
+ },
+ "MP": {
+ "name": "Ilhas Marianas do Norte"
+ },
+ "MH": {
+ "name": "Ilhas Marshall"
+ },
+ "SB": {
+ "name": "Ilhas Salomão"
+ },
+ "TC": {
+ "name": "Ilhas Turcas e Caicos"
+ },
+ "VG": {
+ "name": "Ilhas Virgens Britânicas"
+ },
+ "VI": {
+ "name": "Ilhas Virgens dos EUA"
+ },
+ "IN": {
+ "name": "Ãndia"
+ },
+ "ID": {
+ "name": "Indonésia"
+ },
+ "IR": {
+ "name": "Irão"
+ },
+ "IQ": {
+ "name": "Iraque"
+ },
+ "IE": {
+ "name": "Irlanda"
+ },
+ "IS": {
+ "name": "Islândia"
+ },
+ "IL": {
+ "name": "Israel"
+ },
+ "IT": {
+ "name": "Itália"
+ },
+ "JM": {
+ "name": "Jamaica"
+ },
+ "JP": {
+ "name": "Japão"
+ },
+ "JE": {
+ "name": "Jersey"
+ },
+ "DJ": {
+ "name": "Jibuti"
+ },
+ "JO": {
+ "name": "Jordânia"
+ },
+ "XK": {
+ "name": "Kosovo"
+ },
+ "KW": {
+ "name": "Kuwait"
+ },
+ "LA": {
+ "name": "Laos"
+ },
+ "LS": {
+ "name": "Lesoto"
+ },
+ "LV": {
+ "name": "Letónia"
+ },
+ "LB": {
+ "name": "Líbano"
+ },
+ "LR": {
+ "name": "Libéria"
+ },
+ "LY": {
+ "name": "Líbia"
+ },
+ "LI": {
+ "name": "Liechtenstein"
+ },
+ "LT": {
+ "name": "Lituânia"
+ },
+ "LU": {
+ "name": "Luxemburgo"
+ },
+ "MO": {
+ "name": "Macau, RAE da China"
+ },
+ "MK": {
+ "name": "Macedónia"
+ },
+ "MG": {
+ "name": "Madagáscar"
+ },
+ "YT": {
+ "name": "Maiote"
+ },
+ "MY": {
+ "name": "Malásia"
+ },
+ "MW": {
+ "name": "Malawi"
+ },
+ "MV": {
+ "name": "Maldivas"
+ },
+ "ML": {
+ "name": "Mali"
+ },
+ "MT": {
+ "name": "Malta"
+ },
+ "MA": {
+ "name": "Marrocos"
+ },
+ "MQ": {
+ "name": "Martinica"
+ },
+ "MU": {
+ "name": "Maurícia"
+ },
+ "MR": {
+ "name": "Mauritânia"
+ },
+ "MX": {
+ "name": "México"
+ },
+ "MM": {
+ "name": "Mianmar (Birmânia)"
+ },
+ "FM": {
+ "name": "Micronésia"
+ },
+ "MZ": {
+ "name": "Moçambique"
+ },
+ "MD": {
+ "name": "Moldávia"
+ },
+ "MC": {
+ "name": "Mónaco"
+ },
+ "MN": {
+ "name": "Mongólia"
+ },
+ "MS": {
+ "name": "Monserrate"
+ },
+ "ME": {
+ "name": "Montenegro"
+ },
+ "NA": {
+ "name": "Namíbia"
+ },
+ "NR": {
+ "name": "Nauru"
+ },
+ "NP": {
+ "name": "Nepal"
+ },
+ "NI": {
+ "name": "Nicarágua"
+ },
+ "NE": {
+ "name": "Níger"
+ },
+ "NG": {
+ "name": "Nigéria"
+ },
+ "NU": {
+ "name": "Niue"
+ },
+ "NO": {
+ "name": "Noruega"
+ },
+ "NC": {
+ "name": "Nova Caledónia"
+ },
+ "NZ": {
+ "name": "Nova Zelândia"
+ },
+ "OM": {
+ "name": "Omã"
+ },
+ "NL": {
+ "name": "Países Baixos"
+ },
+ "BQ": {
+ "name": "Países Baixos Caribenhos"
+ },
+ "PW": {
+ "name": "Palau"
+ },
+ "PA": {
+ "name": "Panamá"
+ },
+ "PG": {
+ "name": "Papua-Nova Guiné"
+ },
+ "PK": {
+ "name": "Paquistão"
+ },
+ "PY": {
+ "name": "Paraguai"
+ },
+ "PE": {
+ "name": "Peru"
+ },
+ "PN": {
+ "name": "Pitcairn"
+ },
+ "PF": {
+ "name": "Polinésia Francesa"
+ },
+ "PL": {
+ "name": "Polónia"
+ },
+ "PR": {
+ "name": "Porto Rico"
+ },
+ "PT": {
+ "name": "Portugal"
+ },
+ "KE": {
+ "name": "Quénia"
+ },
+ "KG": {
+ "name": "Quirguistão"
+ },
+ "KI": {
+ "name": "Quiribati"
+ },
+ "GB": {
+ "name": "Reino Unido"
+ },
+ "CF": {
+ "name": "República Centro-Africana"
+ },
+ "CZ": {
+ "name": "República Checa"
+ },
+ "DO": {
+ "name": "República Dominicana"
+ },
+ "RE": {
+ "name": "Reunião"
+ },
+ "RO": {
+ "name": "Roménia"
+ },
+ "RW": {
+ "name": "Ruanda"
+ },
+ "RU": {
+ "name": "Rússia"
+ },
+ "EH": {
+ "name": "Saara Ocidental"
+ },
+ "PM": {
+ "name": "Saint Pierre e Miquelon"
+ },
+ "WS": {
+ "name": "Samoa"
+ },
+ "AS": {
+ "name": "Samoa Americana"
+ },
+ "SH": {
+ "name": "Santa Helena"
+ },
+ "LC": {
+ "name": "Santa Lúcia"
+ },
+ "BL": {
+ "name": "São Bartolomeu"
+ },
+ "KN": {
+ "name": "São Cristóvão e Nevis"
+ },
+ "SM": {
+ "name": "São Marino"
+ },
+ "MF": {
+ "name": "São Martinho"
+ },
+ "ST": {
+ "name": "São Tomé e Príncipe"
+ },
+ "VC": {
+ "name": "São Vicente e Granadinas"
+ },
+ "SC": {
+ "name": "Seicheles"
+ },
+ "SN": {
+ "name": "Senegal"
+ },
+ "SL": {
+ "name": "Serra Leoa"
+ },
+ "RS": {
+ "name": "Sérvia"
+ },
+ "SG": {
+ "name": "Singapura"
+ },
+ "SX": {
+ "name": "Sint Maarten"
+ },
+ "SY": {
+ "name": "Síria"
+ },
+ "SO": {
+ "name": "Somália"
+ },
+ "LK": {
+ "name": "Sri Lanka"
+ },
+ "SZ": {
+ "name": "Suazilândia"
+ },
+ "SD": {
+ "name": "Sudão"
+ },
+ "SS": {
+ "name": "Sudão do Sul"
+ },
+ "SE": {
+ "name": "Suécia"
+ },
+ "CH": {
+ "name": "Suíça"
+ },
+ "SR": {
+ "name": "Suriname"
+ },
+ "SJ": {
+ "name": "Svalbard e Jan Mayen"
+ },
+ "TH": {
+ "name": "Tailândia"
+ },
+ "TW": {
+ "name": "Taiwan"
+ },
+ "TJ": {
+ "name": "Tajiquistão"
+ },
+ "TZ": {
+ "name": "Tanzânia"
+ },
+ "IO": {
+ "name": "Território Britânico do Oceano Ãndico"
+ },
+ "PS": {
+ "name": "Território Palestiniano"
+ },
+ "TF": {
+ "name": "Territórios Franceses do Sul"
+ },
+ "TL": {
+ "name": "Timor-Leste"
+ },
+ "TG": {
+ "name": "Togo"
+ },
+ "TO": {
+ "name": "Tonga"
+ },
+ "TK": {
+ "name": "Toquelau"
+ },
+ "TT": {
+ "name": "Trindade e Tobago"
+ },
+ "TA": {
+ "name": "Tristão da Cunha"
+ },
+ "TN": {
+ "name": "Tunísia"
+ },
+ "TM": {
+ "name": "Turquemenistão"
+ },
+ "TR": {
+ "name": "Turquia"
+ },
+ "TV": {
+ "name": "Tuvalu"
+ },
+ "UA": {
+ "name": "Ucrânia"
+ },
+ "UG": {
+ "name": "Uganda"
+ },
+ "UY": {
+ "name": "Uruguai"
+ },
+ "UZ": {
+ "name": "Uzbequistão"
+ },
+ "VU": {
+ "name": "Vanuatu"
+ },
+ "VE": {
+ "name": "Venezuela"
+ },
+ "VN": {
+ "name": "Vietname"
+ },
+ "WF": {
+ "name": "Wallis e Futuna"
+ },
+ "ZM": {
+ "name": "Zâmbia"
+ },
+ "ZW": {
+ "name": "Zimbabué"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/country/pt-CV.json b/library/intl/resources/country/pt-CV.json
new file mode 100644
index 000000000..0b59b2b6f
--- /dev/null
+++ b/library/intl/resources/country/pt-CV.json
@@ -0,0 +1,761 @@
+{
+ "AF": {
+ "name": "Afeganistão"
+ },
+ "ZA": {
+ "name": "Ãfrica do Sul"
+ },
+ "AL": {
+ "name": "Albânia"
+ },
+ "DE": {
+ "name": "Alemanha"
+ },
+ "AD": {
+ "name": "Andorra"
+ },
+ "AO": {
+ "name": "Angola"
+ },
+ "AI": {
+ "name": "Anguila"
+ },
+ "AQ": {
+ "name": "Antártida"
+ },
+ "AG": {
+ "name": "Antígua e Barbuda"
+ },
+ "SA": {
+ "name": "Arábia Saudita"
+ },
+ "DZ": {
+ "name": "Argélia"
+ },
+ "AR": {
+ "name": "Argentina"
+ },
+ "AM": {
+ "name": "Arménia"
+ },
+ "AW": {
+ "name": "Aruba"
+ },
+ "AU": {
+ "name": "Austrália"
+ },
+ "AT": {
+ "name": "Ãustria"
+ },
+ "AZ": {
+ "name": "Azerbaijão"
+ },
+ "BS": {
+ "name": "Bahamas"
+ },
+ "BD": {
+ "name": "Bangladesh"
+ },
+ "BB": {
+ "name": "Barbados"
+ },
+ "BH": {
+ "name": "Barém"
+ },
+ "BE": {
+ "name": "Bélgica"
+ },
+ "BZ": {
+ "name": "Belize"
+ },
+ "BJ": {
+ "name": "Benim"
+ },
+ "BM": {
+ "name": "Bermudas"
+ },
+ "BY": {
+ "name": "Bielorrússia"
+ },
+ "BO": {
+ "name": "Bolívia"
+ },
+ "BA": {
+ "name": "Bósnia e Herzegovina"
+ },
+ "BW": {
+ "name": "Botswana"
+ },
+ "BR": {
+ "name": "Brasil"
+ },
+ "BN": {
+ "name": "Brunei"
+ },
+ "BG": {
+ "name": "Bulgária"
+ },
+ "BF": {
+ "name": "Burquina Faso"
+ },
+ "BI": {
+ "name": "Burundi"
+ },
+ "BT": {
+ "name": "Butão"
+ },
+ "CV": {
+ "name": "Cabo Verde"
+ },
+ "CM": {
+ "name": "Camarões"
+ },
+ "KH": {
+ "name": "Camboja"
+ },
+ "CA": {
+ "name": "Canadá"
+ },
+ "QA": {
+ "name": "Catar"
+ },
+ "KZ": {
+ "name": "Cazaquistão"
+ },
+ "EA": {
+ "name": "Ceuta e Melilha"
+ },
+ "TD": {
+ "name": "Chade"
+ },
+ "CL": {
+ "name": "Chile"
+ },
+ "CN": {
+ "name": "China"
+ },
+ "CY": {
+ "name": "Chipre"
+ },
+ "VA": {
+ "name": "Cidade do Vaticano"
+ },
+ "CO": {
+ "name": "Colômbia"
+ },
+ "KM": {
+ "name": "Comores"
+ },
+ "CG": {
+ "name": "Congo-Brazzaville"
+ },
+ "CD": {
+ "name": "Congo-Kinshasa"
+ },
+ "KP": {
+ "name": "Coreia do Norte"
+ },
+ "KR": {
+ "name": "Coreia do Sul"
+ },
+ "CI": {
+ "name": "Costa do Marfim"
+ },
+ "CR": {
+ "name": "Costa Rica"
+ },
+ "HR": {
+ "name": "Croácia"
+ },
+ "CU": {
+ "name": "Cuba"
+ },
+ "CW": {
+ "name": "Curaçau"
+ },
+ "DG": {
+ "name": "Diego Garcia"
+ },
+ "DK": {
+ "name": "Dinamarca"
+ },
+ "DM": {
+ "name": "Domínica"
+ },
+ "EG": {
+ "name": "Egipto"
+ },
+ "SV": {
+ "name": "El Salvador"
+ },
+ "AE": {
+ "name": "Emirados Ãrabes Unidos"
+ },
+ "EC": {
+ "name": "Equador"
+ },
+ "ER": {
+ "name": "Eritreia"
+ },
+ "SK": {
+ "name": "Eslováquia"
+ },
+ "SI": {
+ "name": "Eslovénia"
+ },
+ "ES": {
+ "name": "Espanha"
+ },
+ "US": {
+ "name": "Estados Unidos"
+ },
+ "EE": {
+ "name": "Estónia"
+ },
+ "ET": {
+ "name": "Etiópia"
+ },
+ "FJ": {
+ "name": "Fiji"
+ },
+ "PH": {
+ "name": "Filipinas"
+ },
+ "FI": {
+ "name": "Finlândia"
+ },
+ "FR": {
+ "name": "França"
+ },
+ "GA": {
+ "name": "Gabão"
+ },
+ "GM": {
+ "name": "Gâmbia"
+ },
+ "GH": {
+ "name": "Gana"
+ },
+ "GE": {
+ "name": "Geórgia"
+ },
+ "GI": {
+ "name": "Gibraltar"
+ },
+ "GD": {
+ "name": "Granada"
+ },
+ "GR": {
+ "name": "Grécia"
+ },
+ "GL": {
+ "name": "Gronelândia"
+ },
+ "GP": {
+ "name": "Guadalupe"
+ },
+ "GU": {
+ "name": "Guame"
+ },
+ "GT": {
+ "name": "Guatemala"
+ },
+ "GG": {
+ "name": "Guernsey"
+ },
+ "GY": {
+ "name": "Guiana"
+ },
+ "GF": {
+ "name": "Guiana Francesa"
+ },
+ "GN": {
+ "name": "Guiné"
+ },
+ "GQ": {
+ "name": "Guiné Equatorial"
+ },
+ "GW": {
+ "name": "Guiné-Bissau"
+ },
+ "HT": {
+ "name": "Haiti"
+ },
+ "HN": {
+ "name": "Honduras"
+ },
+ "HK": {
+ "name": "Hong Kong, RAE da China"
+ },
+ "HU": {
+ "name": "Hungria"
+ },
+ "YE": {
+ "name": "Iémen"
+ },
+ "AC": {
+ "name": "Ilha de Ascensão"
+ },
+ "IM": {
+ "name": "Ilha de Man"
+ },
+ "CX": {
+ "name": "Ilha do Natal"
+ },
+ "NF": {
+ "name": "Ilha Norfolk"
+ },
+ "AX": {
+ "name": "Ilhas Ã…land"
+ },
+ "KY": {
+ "name": "Ilhas Caimão"
+ },
+ "IC": {
+ "name": "Ilhas Canárias"
+ },
+ "CC": {
+ "name": "Ilhas Cocos"
+ },
+ "CK": {
+ "name": "Ilhas Cook"
+ },
+ "UM": {
+ "name": "Ilhas Distantes dos EUA"
+ },
+ "FK": {
+ "name": "Ilhas Falkland"
+ },
+ "FO": {
+ "name": "Ilhas Faroé"
+ },
+ "GS": {
+ "name": "Ilhas Geórgia do Sul e Sandwich do Sul"
+ },
+ "MP": {
+ "name": "Ilhas Marianas do Norte"
+ },
+ "MH": {
+ "name": "Ilhas Marshall"
+ },
+ "SB": {
+ "name": "Ilhas Salomão"
+ },
+ "TC": {
+ "name": "Ilhas Turcas e Caicos"
+ },
+ "VG": {
+ "name": "Ilhas Virgens Britânicas"
+ },
+ "VI": {
+ "name": "Ilhas Virgens dos EUA"
+ },
+ "IN": {
+ "name": "Ãndia"
+ },
+ "ID": {
+ "name": "Indonésia"
+ },
+ "IR": {
+ "name": "Irão"
+ },
+ "IQ": {
+ "name": "Iraque"
+ },
+ "IE": {
+ "name": "Irlanda"
+ },
+ "IS": {
+ "name": "Islândia"
+ },
+ "IL": {
+ "name": "Israel"
+ },
+ "IT": {
+ "name": "Itália"
+ },
+ "JM": {
+ "name": "Jamaica"
+ },
+ "JP": {
+ "name": "Japão"
+ },
+ "JE": {
+ "name": "Jersey"
+ },
+ "DJ": {
+ "name": "Jibuti"
+ },
+ "JO": {
+ "name": "Jordânia"
+ },
+ "XK": {
+ "name": "Kosovo"
+ },
+ "KW": {
+ "name": "Kuwait"
+ },
+ "LA": {
+ "name": "Laos"
+ },
+ "LS": {
+ "name": "Lesoto"
+ },
+ "LV": {
+ "name": "Letónia"
+ },
+ "LB": {
+ "name": "Líbano"
+ },
+ "LR": {
+ "name": "Libéria"
+ },
+ "LY": {
+ "name": "Líbia"
+ },
+ "LI": {
+ "name": "Liechtenstein"
+ },
+ "LT": {
+ "name": "Lituânia"
+ },
+ "LU": {
+ "name": "Luxemburgo"
+ },
+ "MO": {
+ "name": "Macau, RAE da China"
+ },
+ "MK": {
+ "name": "Macedónia"
+ },
+ "MG": {
+ "name": "Madagáscar"
+ },
+ "YT": {
+ "name": "Maiote"
+ },
+ "MY": {
+ "name": "Malásia"
+ },
+ "MW": {
+ "name": "Malawi"
+ },
+ "MV": {
+ "name": "Maldivas"
+ },
+ "ML": {
+ "name": "Mali"
+ },
+ "MT": {
+ "name": "Malta"
+ },
+ "MA": {
+ "name": "Marrocos"
+ },
+ "MQ": {
+ "name": "Martinica"
+ },
+ "MU": {
+ "name": "Maurícia"
+ },
+ "MR": {
+ "name": "Mauritânia"
+ },
+ "MX": {
+ "name": "México"
+ },
+ "MM": {
+ "name": "Mianmar (Birmânia)"
+ },
+ "FM": {
+ "name": "Micronésia"
+ },
+ "MZ": {
+ "name": "Moçambique"
+ },
+ "MD": {
+ "name": "Moldávia"
+ },
+ "MC": {
+ "name": "Mónaco"
+ },
+ "MN": {
+ "name": "Mongólia"
+ },
+ "MS": {
+ "name": "Monserrate"
+ },
+ "ME": {
+ "name": "Montenegro"
+ },
+ "NA": {
+ "name": "Namíbia"
+ },
+ "NR": {
+ "name": "Nauru"
+ },
+ "NP": {
+ "name": "Nepal"
+ },
+ "NI": {
+ "name": "Nicarágua"
+ },
+ "NE": {
+ "name": "Níger"
+ },
+ "NG": {
+ "name": "Nigéria"
+ },
+ "NU": {
+ "name": "Niue"
+ },
+ "NO": {
+ "name": "Noruega"
+ },
+ "NC": {
+ "name": "Nova Caledónia"
+ },
+ "NZ": {
+ "name": "Nova Zelândia"
+ },
+ "OM": {
+ "name": "Omã"
+ },
+ "NL": {
+ "name": "Países Baixos"
+ },
+ "BQ": {
+ "name": "Países Baixos Caribenhos"
+ },
+ "PW": {
+ "name": "Palau"
+ },
+ "PA": {
+ "name": "Panamá"
+ },
+ "PG": {
+ "name": "Papua-Nova Guiné"
+ },
+ "PK": {
+ "name": "Paquistão"
+ },
+ "PY": {
+ "name": "Paraguai"
+ },
+ "PE": {
+ "name": "Peru"
+ },
+ "PN": {
+ "name": "Pitcairn"
+ },
+ "PF": {
+ "name": "Polinésia Francesa"
+ },
+ "PL": {
+ "name": "Polónia"
+ },
+ "PR": {
+ "name": "Porto Rico"
+ },
+ "PT": {
+ "name": "Portugal"
+ },
+ "KE": {
+ "name": "Quénia"
+ },
+ "KG": {
+ "name": "Quirguistão"
+ },
+ "KI": {
+ "name": "Quiribati"
+ },
+ "GB": {
+ "name": "Reino Unido"
+ },
+ "CF": {
+ "name": "República Centro-Africana"
+ },
+ "CZ": {
+ "name": "República Checa"
+ },
+ "DO": {
+ "name": "República Dominicana"
+ },
+ "RE": {
+ "name": "Reunião"
+ },
+ "RO": {
+ "name": "Roménia"
+ },
+ "RW": {
+ "name": "Ruanda"
+ },
+ "RU": {
+ "name": "Rússia"
+ },
+ "EH": {
+ "name": "Saara Ocidental"
+ },
+ "PM": {
+ "name": "Saint Pierre e Miquelon"
+ },
+ "WS": {
+ "name": "Samoa"
+ },
+ "AS": {
+ "name": "Samoa Americana"
+ },
+ "SH": {
+ "name": "Santa Helena"
+ },
+ "LC": {
+ "name": "Santa Lúcia"
+ },
+ "BL": {
+ "name": "São Bartolomeu"
+ },
+ "KN": {
+ "name": "São Cristóvão e Nevis"
+ },
+ "SM": {
+ "name": "São Marino"
+ },
+ "MF": {
+ "name": "São Martinho"
+ },
+ "ST": {
+ "name": "São Tomé e Príncipe"
+ },
+ "VC": {
+ "name": "São Vicente e Granadinas"
+ },
+ "SC": {
+ "name": "Seicheles"
+ },
+ "SN": {
+ "name": "Senegal"
+ },
+ "SL": {
+ "name": "Serra Leoa"
+ },
+ "RS": {
+ "name": "Sérvia"
+ },
+ "SG": {
+ "name": "Singapura"
+ },
+ "SX": {
+ "name": "Sint Maarten"
+ },
+ "SY": {
+ "name": "Síria"
+ },
+ "SO": {
+ "name": "Somália"
+ },
+ "LK": {
+ "name": "Sri Lanka"
+ },
+ "SZ": {
+ "name": "Suazilândia"
+ },
+ "SD": {
+ "name": "Sudão"
+ },
+ "SS": {
+ "name": "Sudão do Sul"
+ },
+ "SE": {
+ "name": "Suécia"
+ },
+ "CH": {
+ "name": "Suíça"
+ },
+ "SR": {
+ "name": "Suriname"
+ },
+ "SJ": {
+ "name": "Svalbard e Jan Mayen"
+ },
+ "TH": {
+ "name": "Tailândia"
+ },
+ "TW": {
+ "name": "Taiwan"
+ },
+ "TJ": {
+ "name": "Tajiquistão"
+ },
+ "TZ": {
+ "name": "Tanzânia"
+ },
+ "IO": {
+ "name": "Território Britânico do Oceano Ãndico"
+ },
+ "PS": {
+ "name": "Território Palestiniano"
+ },
+ "TF": {
+ "name": "Territórios Franceses do Sul"
+ },
+ "TL": {
+ "name": "Timor-Leste"
+ },
+ "TG": {
+ "name": "Togo"
+ },
+ "TO": {
+ "name": "Tonga"
+ },
+ "TK": {
+ "name": "Toquelau"
+ },
+ "TT": {
+ "name": "Trindade e Tobago"
+ },
+ "TA": {
+ "name": "Tristão da Cunha"
+ },
+ "TN": {
+ "name": "Tunísia"
+ },
+ "TM": {
+ "name": "Turquemenistão"
+ },
+ "TR": {
+ "name": "Turquia"
+ },
+ "TV": {
+ "name": "Tuvalu"
+ },
+ "UA": {
+ "name": "Ucrânia"
+ },
+ "UG": {
+ "name": "Uganda"
+ },
+ "UY": {
+ "name": "Uruguai"
+ },
+ "UZ": {
+ "name": "Uzbequistão"
+ },
+ "VU": {
+ "name": "Vanuatu"
+ },
+ "VE": {
+ "name": "Venezuela"
+ },
+ "VN": {
+ "name": "Vietname"
+ },
+ "WF": {
+ "name": "Wallis e Futuna"
+ },
+ "ZM": {
+ "name": "Zâmbia"
+ },
+ "ZW": {
+ "name": "Zimbabué"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/country/pt-GW.json b/library/intl/resources/country/pt-GW.json
new file mode 100644
index 000000000..0b59b2b6f
--- /dev/null
+++ b/library/intl/resources/country/pt-GW.json
@@ -0,0 +1,761 @@
+{
+ "AF": {
+ "name": "Afeganistão"
+ },
+ "ZA": {
+ "name": "Ãfrica do Sul"
+ },
+ "AL": {
+ "name": "Albânia"
+ },
+ "DE": {
+ "name": "Alemanha"
+ },
+ "AD": {
+ "name": "Andorra"
+ },
+ "AO": {
+ "name": "Angola"
+ },
+ "AI": {
+ "name": "Anguila"
+ },
+ "AQ": {
+ "name": "Antártida"
+ },
+ "AG": {
+ "name": "Antígua e Barbuda"
+ },
+ "SA": {
+ "name": "Arábia Saudita"
+ },
+ "DZ": {
+ "name": "Argélia"
+ },
+ "AR": {
+ "name": "Argentina"
+ },
+ "AM": {
+ "name": "Arménia"
+ },
+ "AW": {
+ "name": "Aruba"
+ },
+ "AU": {
+ "name": "Austrália"
+ },
+ "AT": {
+ "name": "Ãustria"
+ },
+ "AZ": {
+ "name": "Azerbaijão"
+ },
+ "BS": {
+ "name": "Bahamas"
+ },
+ "BD": {
+ "name": "Bangladesh"
+ },
+ "BB": {
+ "name": "Barbados"
+ },
+ "BH": {
+ "name": "Barém"
+ },
+ "BE": {
+ "name": "Bélgica"
+ },
+ "BZ": {
+ "name": "Belize"
+ },
+ "BJ": {
+ "name": "Benim"
+ },
+ "BM": {
+ "name": "Bermudas"
+ },
+ "BY": {
+ "name": "Bielorrússia"
+ },
+ "BO": {
+ "name": "Bolívia"
+ },
+ "BA": {
+ "name": "Bósnia e Herzegovina"
+ },
+ "BW": {
+ "name": "Botswana"
+ },
+ "BR": {
+ "name": "Brasil"
+ },
+ "BN": {
+ "name": "Brunei"
+ },
+ "BG": {
+ "name": "Bulgária"
+ },
+ "BF": {
+ "name": "Burquina Faso"
+ },
+ "BI": {
+ "name": "Burundi"
+ },
+ "BT": {
+ "name": "Butão"
+ },
+ "CV": {
+ "name": "Cabo Verde"
+ },
+ "CM": {
+ "name": "Camarões"
+ },
+ "KH": {
+ "name": "Camboja"
+ },
+ "CA": {
+ "name": "Canadá"
+ },
+ "QA": {
+ "name": "Catar"
+ },
+ "KZ": {
+ "name": "Cazaquistão"
+ },
+ "EA": {
+ "name": "Ceuta e Melilha"
+ },
+ "TD": {
+ "name": "Chade"
+ },
+ "CL": {
+ "name": "Chile"
+ },
+ "CN": {
+ "name": "China"
+ },
+ "CY": {
+ "name": "Chipre"
+ },
+ "VA": {
+ "name": "Cidade do Vaticano"
+ },
+ "CO": {
+ "name": "Colômbia"
+ },
+ "KM": {
+ "name": "Comores"
+ },
+ "CG": {
+ "name": "Congo-Brazzaville"
+ },
+ "CD": {
+ "name": "Congo-Kinshasa"
+ },
+ "KP": {
+ "name": "Coreia do Norte"
+ },
+ "KR": {
+ "name": "Coreia do Sul"
+ },
+ "CI": {
+ "name": "Costa do Marfim"
+ },
+ "CR": {
+ "name": "Costa Rica"
+ },
+ "HR": {
+ "name": "Croácia"
+ },
+ "CU": {
+ "name": "Cuba"
+ },
+ "CW": {
+ "name": "Curaçau"
+ },
+ "DG": {
+ "name": "Diego Garcia"
+ },
+ "DK": {
+ "name": "Dinamarca"
+ },
+ "DM": {
+ "name": "Domínica"
+ },
+ "EG": {
+ "name": "Egipto"
+ },
+ "SV": {
+ "name": "El Salvador"
+ },
+ "AE": {
+ "name": "Emirados Ãrabes Unidos"
+ },
+ "EC": {
+ "name": "Equador"
+ },
+ "ER": {
+ "name": "Eritreia"
+ },
+ "SK": {
+ "name": "Eslováquia"
+ },
+ "SI": {
+ "name": "Eslovénia"
+ },
+ "ES": {
+ "name": "Espanha"
+ },
+ "US": {
+ "name": "Estados Unidos"
+ },
+ "EE": {
+ "name": "Estónia"
+ },
+ "ET": {
+ "name": "Etiópia"
+ },
+ "FJ": {
+ "name": "Fiji"
+ },
+ "PH": {
+ "name": "Filipinas"
+ },
+ "FI": {
+ "name": "Finlândia"
+ },
+ "FR": {
+ "name": "França"
+ },
+ "GA": {
+ "name": "Gabão"
+ },
+ "GM": {
+ "name": "Gâmbia"
+ },
+ "GH": {
+ "name": "Gana"
+ },
+ "GE": {
+ "name": "Geórgia"
+ },
+ "GI": {
+ "name": "Gibraltar"
+ },
+ "GD": {
+ "name": "Granada"
+ },
+ "GR": {
+ "name": "Grécia"
+ },
+ "GL": {
+ "name": "Gronelândia"
+ },
+ "GP": {
+ "name": "Guadalupe"
+ },
+ "GU": {
+ "name": "Guame"
+ },
+ "GT": {
+ "name": "Guatemala"
+ },
+ "GG": {
+ "name": "Guernsey"
+ },
+ "GY": {
+ "name": "Guiana"
+ },
+ "GF": {
+ "name": "Guiana Francesa"
+ },
+ "GN": {
+ "name": "Guiné"
+ },
+ "GQ": {
+ "name": "Guiné Equatorial"
+ },
+ "GW": {
+ "name": "Guiné-Bissau"
+ },
+ "HT": {
+ "name": "Haiti"
+ },
+ "HN": {
+ "name": "Honduras"
+ },
+ "HK": {
+ "name": "Hong Kong, RAE da China"
+ },
+ "HU": {
+ "name": "Hungria"
+ },
+ "YE": {
+ "name": "Iémen"
+ },
+ "AC": {
+ "name": "Ilha de Ascensão"
+ },
+ "IM": {
+ "name": "Ilha de Man"
+ },
+ "CX": {
+ "name": "Ilha do Natal"
+ },
+ "NF": {
+ "name": "Ilha Norfolk"
+ },
+ "AX": {
+ "name": "Ilhas Ã…land"
+ },
+ "KY": {
+ "name": "Ilhas Caimão"
+ },
+ "IC": {
+ "name": "Ilhas Canárias"
+ },
+ "CC": {
+ "name": "Ilhas Cocos"
+ },
+ "CK": {
+ "name": "Ilhas Cook"
+ },
+ "UM": {
+ "name": "Ilhas Distantes dos EUA"
+ },
+ "FK": {
+ "name": "Ilhas Falkland"
+ },
+ "FO": {
+ "name": "Ilhas Faroé"
+ },
+ "GS": {
+ "name": "Ilhas Geórgia do Sul e Sandwich do Sul"
+ },
+ "MP": {
+ "name": "Ilhas Marianas do Norte"
+ },
+ "MH": {
+ "name": "Ilhas Marshall"
+ },
+ "SB": {
+ "name": "Ilhas Salomão"
+ },
+ "TC": {
+ "name": "Ilhas Turcas e Caicos"
+ },
+ "VG": {
+ "name": "Ilhas Virgens Britânicas"
+ },
+ "VI": {
+ "name": "Ilhas Virgens dos EUA"
+ },
+ "IN": {
+ "name": "Ãndia"
+ },
+ "ID": {
+ "name": "Indonésia"
+ },
+ "IR": {
+ "name": "Irão"
+ },
+ "IQ": {
+ "name": "Iraque"
+ },
+ "IE": {
+ "name": "Irlanda"
+ },
+ "IS": {
+ "name": "Islândia"
+ },
+ "IL": {
+ "name": "Israel"
+ },
+ "IT": {
+ "name": "Itália"
+ },
+ "JM": {
+ "name": "Jamaica"
+ },
+ "JP": {
+ "name": "Japão"
+ },
+ "JE": {
+ "name": "Jersey"
+ },
+ "DJ": {
+ "name": "Jibuti"
+ },
+ "JO": {
+ "name": "Jordânia"
+ },
+ "XK": {
+ "name": "Kosovo"
+ },
+ "KW": {
+ "name": "Kuwait"
+ },
+ "LA": {
+ "name": "Laos"
+ },
+ "LS": {
+ "name": "Lesoto"
+ },
+ "LV": {
+ "name": "Letónia"
+ },
+ "LB": {
+ "name": "Líbano"
+ },
+ "LR": {
+ "name": "Libéria"
+ },
+ "LY": {
+ "name": "Líbia"
+ },
+ "LI": {
+ "name": "Liechtenstein"
+ },
+ "LT": {
+ "name": "Lituânia"
+ },
+ "LU": {
+ "name": "Luxemburgo"
+ },
+ "MO": {
+ "name": "Macau, RAE da China"
+ },
+ "MK": {
+ "name": "Macedónia"
+ },
+ "MG": {
+ "name": "Madagáscar"
+ },
+ "YT": {
+ "name": "Maiote"
+ },
+ "MY": {
+ "name": "Malásia"
+ },
+ "MW": {
+ "name": "Malawi"
+ },
+ "MV": {
+ "name": "Maldivas"
+ },
+ "ML": {
+ "name": "Mali"
+ },
+ "MT": {
+ "name": "Malta"
+ },
+ "MA": {
+ "name": "Marrocos"
+ },
+ "MQ": {
+ "name": "Martinica"
+ },
+ "MU": {
+ "name": "Maurícia"
+ },
+ "MR": {
+ "name": "Mauritânia"
+ },
+ "MX": {
+ "name": "México"
+ },
+ "MM": {
+ "name": "Mianmar (Birmânia)"
+ },
+ "FM": {
+ "name": "Micronésia"
+ },
+ "MZ": {
+ "name": "Moçambique"
+ },
+ "MD": {
+ "name": "Moldávia"
+ },
+ "MC": {
+ "name": "Mónaco"
+ },
+ "MN": {
+ "name": "Mongólia"
+ },
+ "MS": {
+ "name": "Monserrate"
+ },
+ "ME": {
+ "name": "Montenegro"
+ },
+ "NA": {
+ "name": "Namíbia"
+ },
+ "NR": {
+ "name": "Nauru"
+ },
+ "NP": {
+ "name": "Nepal"
+ },
+ "NI": {
+ "name": "Nicarágua"
+ },
+ "NE": {
+ "name": "Níger"
+ },
+ "NG": {
+ "name": "Nigéria"
+ },
+ "NU": {
+ "name": "Niue"
+ },
+ "NO": {
+ "name": "Noruega"
+ },
+ "NC": {
+ "name": "Nova Caledónia"
+ },
+ "NZ": {
+ "name": "Nova Zelândia"
+ },
+ "OM": {
+ "name": "Omã"
+ },
+ "NL": {
+ "name": "Países Baixos"
+ },
+ "BQ": {
+ "name": "Países Baixos Caribenhos"
+ },
+ "PW": {
+ "name": "Palau"
+ },
+ "PA": {
+ "name": "Panamá"
+ },
+ "PG": {
+ "name": "Papua-Nova Guiné"
+ },
+ "PK": {
+ "name": "Paquistão"
+ },
+ "PY": {
+ "name": "Paraguai"
+ },
+ "PE": {
+ "name": "Peru"
+ },
+ "PN": {
+ "name": "Pitcairn"
+ },
+ "PF": {
+ "name": "Polinésia Francesa"
+ },
+ "PL": {
+ "name": "Polónia"
+ },
+ "PR": {
+ "name": "Porto Rico"
+ },
+ "PT": {
+ "name": "Portugal"
+ },
+ "KE": {
+ "name": "Quénia"
+ },
+ "KG": {
+ "name": "Quirguistão"
+ },
+ "KI": {
+ "name": "Quiribati"
+ },
+ "GB": {
+ "name": "Reino Unido"
+ },
+ "CF": {
+ "name": "República Centro-Africana"
+ },
+ "CZ": {
+ "name": "República Checa"
+ },
+ "DO": {
+ "name": "República Dominicana"
+ },
+ "RE": {
+ "name": "Reunião"
+ },
+ "RO": {
+ "name": "Roménia"
+ },
+ "RW": {
+ "name": "Ruanda"
+ },
+ "RU": {
+ "name": "Rússia"
+ },
+ "EH": {
+ "name": "Saara Ocidental"
+ },
+ "PM": {
+ "name": "Saint Pierre e Miquelon"
+ },
+ "WS": {
+ "name": "Samoa"
+ },
+ "AS": {
+ "name": "Samoa Americana"
+ },
+ "SH": {
+ "name": "Santa Helena"
+ },
+ "LC": {
+ "name": "Santa Lúcia"
+ },
+ "BL": {
+ "name": "São Bartolomeu"
+ },
+ "KN": {
+ "name": "São Cristóvão e Nevis"
+ },
+ "SM": {
+ "name": "São Marino"
+ },
+ "MF": {
+ "name": "São Martinho"
+ },
+ "ST": {
+ "name": "São Tomé e Príncipe"
+ },
+ "VC": {
+ "name": "São Vicente e Granadinas"
+ },
+ "SC": {
+ "name": "Seicheles"
+ },
+ "SN": {
+ "name": "Senegal"
+ },
+ "SL": {
+ "name": "Serra Leoa"
+ },
+ "RS": {
+ "name": "Sérvia"
+ },
+ "SG": {
+ "name": "Singapura"
+ },
+ "SX": {
+ "name": "Sint Maarten"
+ },
+ "SY": {
+ "name": "Síria"
+ },
+ "SO": {
+ "name": "Somália"
+ },
+ "LK": {
+ "name": "Sri Lanka"
+ },
+ "SZ": {
+ "name": "Suazilândia"
+ },
+ "SD": {
+ "name": "Sudão"
+ },
+ "SS": {
+ "name": "Sudão do Sul"
+ },
+ "SE": {
+ "name": "Suécia"
+ },
+ "CH": {
+ "name": "Suíça"
+ },
+ "SR": {
+ "name": "Suriname"
+ },
+ "SJ": {
+ "name": "Svalbard e Jan Mayen"
+ },
+ "TH": {
+ "name": "Tailândia"
+ },
+ "TW": {
+ "name": "Taiwan"
+ },
+ "TJ": {
+ "name": "Tajiquistão"
+ },
+ "TZ": {
+ "name": "Tanzânia"
+ },
+ "IO": {
+ "name": "Território Britânico do Oceano Ãndico"
+ },
+ "PS": {
+ "name": "Território Palestiniano"
+ },
+ "TF": {
+ "name": "Territórios Franceses do Sul"
+ },
+ "TL": {
+ "name": "Timor-Leste"
+ },
+ "TG": {
+ "name": "Togo"
+ },
+ "TO": {
+ "name": "Tonga"
+ },
+ "TK": {
+ "name": "Toquelau"
+ },
+ "TT": {
+ "name": "Trindade e Tobago"
+ },
+ "TA": {
+ "name": "Tristão da Cunha"
+ },
+ "TN": {
+ "name": "Tunísia"
+ },
+ "TM": {
+ "name": "Turquemenistão"
+ },
+ "TR": {
+ "name": "Turquia"
+ },
+ "TV": {
+ "name": "Tuvalu"
+ },
+ "UA": {
+ "name": "Ucrânia"
+ },
+ "UG": {
+ "name": "Uganda"
+ },
+ "UY": {
+ "name": "Uruguai"
+ },
+ "UZ": {
+ "name": "Uzbequistão"
+ },
+ "VU": {
+ "name": "Vanuatu"
+ },
+ "VE": {
+ "name": "Venezuela"
+ },
+ "VN": {
+ "name": "Vietname"
+ },
+ "WF": {
+ "name": "Wallis e Futuna"
+ },
+ "ZM": {
+ "name": "Zâmbia"
+ },
+ "ZW": {
+ "name": "Zimbabué"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/country/pt-MO.json b/library/intl/resources/country/pt-MO.json
new file mode 100644
index 000000000..0b59b2b6f
--- /dev/null
+++ b/library/intl/resources/country/pt-MO.json
@@ -0,0 +1,761 @@
+{
+ "AF": {
+ "name": "Afeganistão"
+ },
+ "ZA": {
+ "name": "Ãfrica do Sul"
+ },
+ "AL": {
+ "name": "Albânia"
+ },
+ "DE": {
+ "name": "Alemanha"
+ },
+ "AD": {
+ "name": "Andorra"
+ },
+ "AO": {
+ "name": "Angola"
+ },
+ "AI": {
+ "name": "Anguila"
+ },
+ "AQ": {
+ "name": "Antártida"
+ },
+ "AG": {
+ "name": "Antígua e Barbuda"
+ },
+ "SA": {
+ "name": "Arábia Saudita"
+ },
+ "DZ": {
+ "name": "Argélia"
+ },
+ "AR": {
+ "name": "Argentina"
+ },
+ "AM": {
+ "name": "Arménia"
+ },
+ "AW": {
+ "name": "Aruba"
+ },
+ "AU": {
+ "name": "Austrália"
+ },
+ "AT": {
+ "name": "Ãustria"
+ },
+ "AZ": {
+ "name": "Azerbaijão"
+ },
+ "BS": {
+ "name": "Bahamas"
+ },
+ "BD": {
+ "name": "Bangladesh"
+ },
+ "BB": {
+ "name": "Barbados"
+ },
+ "BH": {
+ "name": "Barém"
+ },
+ "BE": {
+ "name": "Bélgica"
+ },
+ "BZ": {
+ "name": "Belize"
+ },
+ "BJ": {
+ "name": "Benim"
+ },
+ "BM": {
+ "name": "Bermudas"
+ },
+ "BY": {
+ "name": "Bielorrússia"
+ },
+ "BO": {
+ "name": "Bolívia"
+ },
+ "BA": {
+ "name": "Bósnia e Herzegovina"
+ },
+ "BW": {
+ "name": "Botswana"
+ },
+ "BR": {
+ "name": "Brasil"
+ },
+ "BN": {
+ "name": "Brunei"
+ },
+ "BG": {
+ "name": "Bulgária"
+ },
+ "BF": {
+ "name": "Burquina Faso"
+ },
+ "BI": {
+ "name": "Burundi"
+ },
+ "BT": {
+ "name": "Butão"
+ },
+ "CV": {
+ "name": "Cabo Verde"
+ },
+ "CM": {
+ "name": "Camarões"
+ },
+ "KH": {
+ "name": "Camboja"
+ },
+ "CA": {
+ "name": "Canadá"
+ },
+ "QA": {
+ "name": "Catar"
+ },
+ "KZ": {
+ "name": "Cazaquistão"
+ },
+ "EA": {
+ "name": "Ceuta e Melilha"
+ },
+ "TD": {
+ "name": "Chade"
+ },
+ "CL": {
+ "name": "Chile"
+ },
+ "CN": {
+ "name": "China"
+ },
+ "CY": {
+ "name": "Chipre"
+ },
+ "VA": {
+ "name": "Cidade do Vaticano"
+ },
+ "CO": {
+ "name": "Colômbia"
+ },
+ "KM": {
+ "name": "Comores"
+ },
+ "CG": {
+ "name": "Congo-Brazzaville"
+ },
+ "CD": {
+ "name": "Congo-Kinshasa"
+ },
+ "KP": {
+ "name": "Coreia do Norte"
+ },
+ "KR": {
+ "name": "Coreia do Sul"
+ },
+ "CI": {
+ "name": "Costa do Marfim"
+ },
+ "CR": {
+ "name": "Costa Rica"
+ },
+ "HR": {
+ "name": "Croácia"
+ },
+ "CU": {
+ "name": "Cuba"
+ },
+ "CW": {
+ "name": "Curaçau"
+ },
+ "DG": {
+ "name": "Diego Garcia"
+ },
+ "DK": {
+ "name": "Dinamarca"
+ },
+ "DM": {
+ "name": "Domínica"
+ },
+ "EG": {
+ "name": "Egipto"
+ },
+ "SV": {
+ "name": "El Salvador"
+ },
+ "AE": {
+ "name": "Emirados Ãrabes Unidos"
+ },
+ "EC": {
+ "name": "Equador"
+ },
+ "ER": {
+ "name": "Eritreia"
+ },
+ "SK": {
+ "name": "Eslováquia"
+ },
+ "SI": {
+ "name": "Eslovénia"
+ },
+ "ES": {
+ "name": "Espanha"
+ },
+ "US": {
+ "name": "Estados Unidos"
+ },
+ "EE": {
+ "name": "Estónia"
+ },
+ "ET": {
+ "name": "Etiópia"
+ },
+ "FJ": {
+ "name": "Fiji"
+ },
+ "PH": {
+ "name": "Filipinas"
+ },
+ "FI": {
+ "name": "Finlândia"
+ },
+ "FR": {
+ "name": "França"
+ },
+ "GA": {
+ "name": "Gabão"
+ },
+ "GM": {
+ "name": "Gâmbia"
+ },
+ "GH": {
+ "name": "Gana"
+ },
+ "GE": {
+ "name": "Geórgia"
+ },
+ "GI": {
+ "name": "Gibraltar"
+ },
+ "GD": {
+ "name": "Granada"
+ },
+ "GR": {
+ "name": "Grécia"
+ },
+ "GL": {
+ "name": "Gronelândia"
+ },
+ "GP": {
+ "name": "Guadalupe"
+ },
+ "GU": {
+ "name": "Guame"
+ },
+ "GT": {
+ "name": "Guatemala"
+ },
+ "GG": {
+ "name": "Guernsey"
+ },
+ "GY": {
+ "name": "Guiana"
+ },
+ "GF": {
+ "name": "Guiana Francesa"
+ },
+ "GN": {
+ "name": "Guiné"
+ },
+ "GQ": {
+ "name": "Guiné Equatorial"
+ },
+ "GW": {
+ "name": "Guiné-Bissau"
+ },
+ "HT": {
+ "name": "Haiti"
+ },
+ "HN": {
+ "name": "Honduras"
+ },
+ "HK": {
+ "name": "Hong Kong, RAE da China"
+ },
+ "HU": {
+ "name": "Hungria"
+ },
+ "YE": {
+ "name": "Iémen"
+ },
+ "AC": {
+ "name": "Ilha de Ascensão"
+ },
+ "IM": {
+ "name": "Ilha de Man"
+ },
+ "CX": {
+ "name": "Ilha do Natal"
+ },
+ "NF": {
+ "name": "Ilha Norfolk"
+ },
+ "AX": {
+ "name": "Ilhas Ã…land"
+ },
+ "KY": {
+ "name": "Ilhas Caimão"
+ },
+ "IC": {
+ "name": "Ilhas Canárias"
+ },
+ "CC": {
+ "name": "Ilhas Cocos"
+ },
+ "CK": {
+ "name": "Ilhas Cook"
+ },
+ "UM": {
+ "name": "Ilhas Distantes dos EUA"
+ },
+ "FK": {
+ "name": "Ilhas Falkland"
+ },
+ "FO": {
+ "name": "Ilhas Faroé"
+ },
+ "GS": {
+ "name": "Ilhas Geórgia do Sul e Sandwich do Sul"
+ },
+ "MP": {
+ "name": "Ilhas Marianas do Norte"
+ },
+ "MH": {
+ "name": "Ilhas Marshall"
+ },
+ "SB": {
+ "name": "Ilhas Salomão"
+ },
+ "TC": {
+ "name": "Ilhas Turcas e Caicos"
+ },
+ "VG": {
+ "name": "Ilhas Virgens Britânicas"
+ },
+ "VI": {
+ "name": "Ilhas Virgens dos EUA"
+ },
+ "IN": {
+ "name": "Ãndia"
+ },
+ "ID": {
+ "name": "Indonésia"
+ },
+ "IR": {
+ "name": "Irão"
+ },
+ "IQ": {
+ "name": "Iraque"
+ },
+ "IE": {
+ "name": "Irlanda"
+ },
+ "IS": {
+ "name": "Islândia"
+ },
+ "IL": {
+ "name": "Israel"
+ },
+ "IT": {
+ "name": "Itália"
+ },
+ "JM": {
+ "name": "Jamaica"
+ },
+ "JP": {
+ "name": "Japão"
+ },
+ "JE": {
+ "name": "Jersey"
+ },
+ "DJ": {
+ "name": "Jibuti"
+ },
+ "JO": {
+ "name": "Jordânia"
+ },
+ "XK": {
+ "name": "Kosovo"
+ },
+ "KW": {
+ "name": "Kuwait"
+ },
+ "LA": {
+ "name": "Laos"
+ },
+ "LS": {
+ "name": "Lesoto"
+ },
+ "LV": {
+ "name": "Letónia"
+ },
+ "LB": {
+ "name": "Líbano"
+ },
+ "LR": {
+ "name": "Libéria"
+ },
+ "LY": {
+ "name": "Líbia"
+ },
+ "LI": {
+ "name": "Liechtenstein"
+ },
+ "LT": {
+ "name": "Lituânia"
+ },
+ "LU": {
+ "name": "Luxemburgo"
+ },
+ "MO": {
+ "name": "Macau, RAE da China"
+ },
+ "MK": {
+ "name": "Macedónia"
+ },
+ "MG": {
+ "name": "Madagáscar"
+ },
+ "YT": {
+ "name": "Maiote"
+ },
+ "MY": {
+ "name": "Malásia"
+ },
+ "MW": {
+ "name": "Malawi"
+ },
+ "MV": {
+ "name": "Maldivas"
+ },
+ "ML": {
+ "name": "Mali"
+ },
+ "MT": {
+ "name": "Malta"
+ },
+ "MA": {
+ "name": "Marrocos"
+ },
+ "MQ": {
+ "name": "Martinica"
+ },
+ "MU": {
+ "name": "Maurícia"
+ },
+ "MR": {
+ "name": "Mauritânia"
+ },
+ "MX": {
+ "name": "México"
+ },
+ "MM": {
+ "name": "Mianmar (Birmânia)"
+ },
+ "FM": {
+ "name": "Micronésia"
+ },
+ "MZ": {
+ "name": "Moçambique"
+ },
+ "MD": {
+ "name": "Moldávia"
+ },
+ "MC": {
+ "name": "Mónaco"
+ },
+ "MN": {
+ "name": "Mongólia"
+ },
+ "MS": {
+ "name": "Monserrate"
+ },
+ "ME": {
+ "name": "Montenegro"
+ },
+ "NA": {
+ "name": "Namíbia"
+ },
+ "NR": {
+ "name": "Nauru"
+ },
+ "NP": {
+ "name": "Nepal"
+ },
+ "NI": {
+ "name": "Nicarágua"
+ },
+ "NE": {
+ "name": "Níger"
+ },
+ "NG": {
+ "name": "Nigéria"
+ },
+ "NU": {
+ "name": "Niue"
+ },
+ "NO": {
+ "name": "Noruega"
+ },
+ "NC": {
+ "name": "Nova Caledónia"
+ },
+ "NZ": {
+ "name": "Nova Zelândia"
+ },
+ "OM": {
+ "name": "Omã"
+ },
+ "NL": {
+ "name": "Países Baixos"
+ },
+ "BQ": {
+ "name": "Países Baixos Caribenhos"
+ },
+ "PW": {
+ "name": "Palau"
+ },
+ "PA": {
+ "name": "Panamá"
+ },
+ "PG": {
+ "name": "Papua-Nova Guiné"
+ },
+ "PK": {
+ "name": "Paquistão"
+ },
+ "PY": {
+ "name": "Paraguai"
+ },
+ "PE": {
+ "name": "Peru"
+ },
+ "PN": {
+ "name": "Pitcairn"
+ },
+ "PF": {
+ "name": "Polinésia Francesa"
+ },
+ "PL": {
+ "name": "Polónia"
+ },
+ "PR": {
+ "name": "Porto Rico"
+ },
+ "PT": {
+ "name": "Portugal"
+ },
+ "KE": {
+ "name": "Quénia"
+ },
+ "KG": {
+ "name": "Quirguistão"
+ },
+ "KI": {
+ "name": "Quiribati"
+ },
+ "GB": {
+ "name": "Reino Unido"
+ },
+ "CF": {
+ "name": "República Centro-Africana"
+ },
+ "CZ": {
+ "name": "República Checa"
+ },
+ "DO": {
+ "name": "República Dominicana"
+ },
+ "RE": {
+ "name": "Reunião"
+ },
+ "RO": {
+ "name": "Roménia"
+ },
+ "RW": {
+ "name": "Ruanda"
+ },
+ "RU": {
+ "name": "Rússia"
+ },
+ "EH": {
+ "name": "Saara Ocidental"
+ },
+ "PM": {
+ "name": "Saint Pierre e Miquelon"
+ },
+ "WS": {
+ "name": "Samoa"
+ },
+ "AS": {
+ "name": "Samoa Americana"
+ },
+ "SH": {
+ "name": "Santa Helena"
+ },
+ "LC": {
+ "name": "Santa Lúcia"
+ },
+ "BL": {
+ "name": "São Bartolomeu"
+ },
+ "KN": {
+ "name": "São Cristóvão e Nevis"
+ },
+ "SM": {
+ "name": "São Marino"
+ },
+ "MF": {
+ "name": "São Martinho"
+ },
+ "ST": {
+ "name": "São Tomé e Príncipe"
+ },
+ "VC": {
+ "name": "São Vicente e Granadinas"
+ },
+ "SC": {
+ "name": "Seicheles"
+ },
+ "SN": {
+ "name": "Senegal"
+ },
+ "SL": {
+ "name": "Serra Leoa"
+ },
+ "RS": {
+ "name": "Sérvia"
+ },
+ "SG": {
+ "name": "Singapura"
+ },
+ "SX": {
+ "name": "Sint Maarten"
+ },
+ "SY": {
+ "name": "Síria"
+ },
+ "SO": {
+ "name": "Somália"
+ },
+ "LK": {
+ "name": "Sri Lanka"
+ },
+ "SZ": {
+ "name": "Suazilândia"
+ },
+ "SD": {
+ "name": "Sudão"
+ },
+ "SS": {
+ "name": "Sudão do Sul"
+ },
+ "SE": {
+ "name": "Suécia"
+ },
+ "CH": {
+ "name": "Suíça"
+ },
+ "SR": {
+ "name": "Suriname"
+ },
+ "SJ": {
+ "name": "Svalbard e Jan Mayen"
+ },
+ "TH": {
+ "name": "Tailândia"
+ },
+ "TW": {
+ "name": "Taiwan"
+ },
+ "TJ": {
+ "name": "Tajiquistão"
+ },
+ "TZ": {
+ "name": "Tanzânia"
+ },
+ "IO": {
+ "name": "Território Britânico do Oceano Ãndico"
+ },
+ "PS": {
+ "name": "Território Palestiniano"
+ },
+ "TF": {
+ "name": "Territórios Franceses do Sul"
+ },
+ "TL": {
+ "name": "Timor-Leste"
+ },
+ "TG": {
+ "name": "Togo"
+ },
+ "TO": {
+ "name": "Tonga"
+ },
+ "TK": {
+ "name": "Toquelau"
+ },
+ "TT": {
+ "name": "Trindade e Tobago"
+ },
+ "TA": {
+ "name": "Tristão da Cunha"
+ },
+ "TN": {
+ "name": "Tunísia"
+ },
+ "TM": {
+ "name": "Turquemenistão"
+ },
+ "TR": {
+ "name": "Turquia"
+ },
+ "TV": {
+ "name": "Tuvalu"
+ },
+ "UA": {
+ "name": "Ucrânia"
+ },
+ "UG": {
+ "name": "Uganda"
+ },
+ "UY": {
+ "name": "Uruguai"
+ },
+ "UZ": {
+ "name": "Uzbequistão"
+ },
+ "VU": {
+ "name": "Vanuatu"
+ },
+ "VE": {
+ "name": "Venezuela"
+ },
+ "VN": {
+ "name": "Vietname"
+ },
+ "WF": {
+ "name": "Wallis e Futuna"
+ },
+ "ZM": {
+ "name": "Zâmbia"
+ },
+ "ZW": {
+ "name": "Zimbabué"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/country/pt-MZ.json b/library/intl/resources/country/pt-MZ.json
new file mode 100644
index 000000000..0b59b2b6f
--- /dev/null
+++ b/library/intl/resources/country/pt-MZ.json
@@ -0,0 +1,761 @@
+{
+ "AF": {
+ "name": "Afeganistão"
+ },
+ "ZA": {
+ "name": "Ãfrica do Sul"
+ },
+ "AL": {
+ "name": "Albânia"
+ },
+ "DE": {
+ "name": "Alemanha"
+ },
+ "AD": {
+ "name": "Andorra"
+ },
+ "AO": {
+ "name": "Angola"
+ },
+ "AI": {
+ "name": "Anguila"
+ },
+ "AQ": {
+ "name": "Antártida"
+ },
+ "AG": {
+ "name": "Antígua e Barbuda"
+ },
+ "SA": {
+ "name": "Arábia Saudita"
+ },
+ "DZ": {
+ "name": "Argélia"
+ },
+ "AR": {
+ "name": "Argentina"
+ },
+ "AM": {
+ "name": "Arménia"
+ },
+ "AW": {
+ "name": "Aruba"
+ },
+ "AU": {
+ "name": "Austrália"
+ },
+ "AT": {
+ "name": "Ãustria"
+ },
+ "AZ": {
+ "name": "Azerbaijão"
+ },
+ "BS": {
+ "name": "Bahamas"
+ },
+ "BD": {
+ "name": "Bangladesh"
+ },
+ "BB": {
+ "name": "Barbados"
+ },
+ "BH": {
+ "name": "Barém"
+ },
+ "BE": {
+ "name": "Bélgica"
+ },
+ "BZ": {
+ "name": "Belize"
+ },
+ "BJ": {
+ "name": "Benim"
+ },
+ "BM": {
+ "name": "Bermudas"
+ },
+ "BY": {
+ "name": "Bielorrússia"
+ },
+ "BO": {
+ "name": "Bolívia"
+ },
+ "BA": {
+ "name": "Bósnia e Herzegovina"
+ },
+ "BW": {
+ "name": "Botswana"
+ },
+ "BR": {
+ "name": "Brasil"
+ },
+ "BN": {
+ "name": "Brunei"
+ },
+ "BG": {
+ "name": "Bulgária"
+ },
+ "BF": {
+ "name": "Burquina Faso"
+ },
+ "BI": {
+ "name": "Burundi"
+ },
+ "BT": {
+ "name": "Butão"
+ },
+ "CV": {
+ "name": "Cabo Verde"
+ },
+ "CM": {
+ "name": "Camarões"
+ },
+ "KH": {
+ "name": "Camboja"
+ },
+ "CA": {
+ "name": "Canadá"
+ },
+ "QA": {
+ "name": "Catar"
+ },
+ "KZ": {
+ "name": "Cazaquistão"
+ },
+ "EA": {
+ "name": "Ceuta e Melilha"
+ },
+ "TD": {
+ "name": "Chade"
+ },
+ "CL": {
+ "name": "Chile"
+ },
+ "CN": {
+ "name": "China"
+ },
+ "CY": {
+ "name": "Chipre"
+ },
+ "VA": {
+ "name": "Cidade do Vaticano"
+ },
+ "CO": {
+ "name": "Colômbia"
+ },
+ "KM": {
+ "name": "Comores"
+ },
+ "CG": {
+ "name": "Congo-Brazzaville"
+ },
+ "CD": {
+ "name": "Congo-Kinshasa"
+ },
+ "KP": {
+ "name": "Coreia do Norte"
+ },
+ "KR": {
+ "name": "Coreia do Sul"
+ },
+ "CI": {
+ "name": "Costa do Marfim"
+ },
+ "CR": {
+ "name": "Costa Rica"
+ },
+ "HR": {
+ "name": "Croácia"
+ },
+ "CU": {
+ "name": "Cuba"
+ },
+ "CW": {
+ "name": "Curaçau"
+ },
+ "DG": {
+ "name": "Diego Garcia"
+ },
+ "DK": {
+ "name": "Dinamarca"
+ },
+ "DM": {
+ "name": "Domínica"
+ },
+ "EG": {
+ "name": "Egipto"
+ },
+ "SV": {
+ "name": "El Salvador"
+ },
+ "AE": {
+ "name": "Emirados Ãrabes Unidos"
+ },
+ "EC": {
+ "name": "Equador"
+ },
+ "ER": {
+ "name": "Eritreia"
+ },
+ "SK": {
+ "name": "Eslováquia"
+ },
+ "SI": {
+ "name": "Eslovénia"
+ },
+ "ES": {
+ "name": "Espanha"
+ },
+ "US": {
+ "name": "Estados Unidos"
+ },
+ "EE": {
+ "name": "Estónia"
+ },
+ "ET": {
+ "name": "Etiópia"
+ },
+ "FJ": {
+ "name": "Fiji"
+ },
+ "PH": {
+ "name": "Filipinas"
+ },
+ "FI": {
+ "name": "Finlândia"
+ },
+ "FR": {
+ "name": "França"
+ },
+ "GA": {
+ "name": "Gabão"
+ },
+ "GM": {
+ "name": "Gâmbia"
+ },
+ "GH": {
+ "name": "Gana"
+ },
+ "GE": {
+ "name": "Geórgia"
+ },
+ "GI": {
+ "name": "Gibraltar"
+ },
+ "GD": {
+ "name": "Granada"
+ },
+ "GR": {
+ "name": "Grécia"
+ },
+ "GL": {
+ "name": "Gronelândia"
+ },
+ "GP": {
+ "name": "Guadalupe"
+ },
+ "GU": {
+ "name": "Guame"
+ },
+ "GT": {
+ "name": "Guatemala"
+ },
+ "GG": {
+ "name": "Guernsey"
+ },
+ "GY": {
+ "name": "Guiana"
+ },
+ "GF": {
+ "name": "Guiana Francesa"
+ },
+ "GN": {
+ "name": "Guiné"
+ },
+ "GQ": {
+ "name": "Guiné Equatorial"
+ },
+ "GW": {
+ "name": "Guiné-Bissau"
+ },
+ "HT": {
+ "name": "Haiti"
+ },
+ "HN": {
+ "name": "Honduras"
+ },
+ "HK": {
+ "name": "Hong Kong, RAE da China"
+ },
+ "HU": {
+ "name": "Hungria"
+ },
+ "YE": {
+ "name": "Iémen"
+ },
+ "AC": {
+ "name": "Ilha de Ascensão"
+ },
+ "IM": {
+ "name": "Ilha de Man"
+ },
+ "CX": {
+ "name": "Ilha do Natal"
+ },
+ "NF": {
+ "name": "Ilha Norfolk"
+ },
+ "AX": {
+ "name": "Ilhas Ã…land"
+ },
+ "KY": {
+ "name": "Ilhas Caimão"
+ },
+ "IC": {
+ "name": "Ilhas Canárias"
+ },
+ "CC": {
+ "name": "Ilhas Cocos"
+ },
+ "CK": {
+ "name": "Ilhas Cook"
+ },
+ "UM": {
+ "name": "Ilhas Distantes dos EUA"
+ },
+ "FK": {
+ "name": "Ilhas Falkland"
+ },
+ "FO": {
+ "name": "Ilhas Faroé"
+ },
+ "GS": {
+ "name": "Ilhas Geórgia do Sul e Sandwich do Sul"
+ },
+ "MP": {
+ "name": "Ilhas Marianas do Norte"
+ },
+ "MH": {
+ "name": "Ilhas Marshall"
+ },
+ "SB": {
+ "name": "Ilhas Salomão"
+ },
+ "TC": {
+ "name": "Ilhas Turcas e Caicos"
+ },
+ "VG": {
+ "name": "Ilhas Virgens Britânicas"
+ },
+ "VI": {
+ "name": "Ilhas Virgens dos EUA"
+ },
+ "IN": {
+ "name": "Ãndia"
+ },
+ "ID": {
+ "name": "Indonésia"
+ },
+ "IR": {
+ "name": "Irão"
+ },
+ "IQ": {
+ "name": "Iraque"
+ },
+ "IE": {
+ "name": "Irlanda"
+ },
+ "IS": {
+ "name": "Islândia"
+ },
+ "IL": {
+ "name": "Israel"
+ },
+ "IT": {
+ "name": "Itália"
+ },
+ "JM": {
+ "name": "Jamaica"
+ },
+ "JP": {
+ "name": "Japão"
+ },
+ "JE": {
+ "name": "Jersey"
+ },
+ "DJ": {
+ "name": "Jibuti"
+ },
+ "JO": {
+ "name": "Jordânia"
+ },
+ "XK": {
+ "name": "Kosovo"
+ },
+ "KW": {
+ "name": "Kuwait"
+ },
+ "LA": {
+ "name": "Laos"
+ },
+ "LS": {
+ "name": "Lesoto"
+ },
+ "LV": {
+ "name": "Letónia"
+ },
+ "LB": {
+ "name": "Líbano"
+ },
+ "LR": {
+ "name": "Libéria"
+ },
+ "LY": {
+ "name": "Líbia"
+ },
+ "LI": {
+ "name": "Liechtenstein"
+ },
+ "LT": {
+ "name": "Lituânia"
+ },
+ "LU": {
+ "name": "Luxemburgo"
+ },
+ "MO": {
+ "name": "Macau, RAE da China"
+ },
+ "MK": {
+ "name": "Macedónia"
+ },
+ "MG": {
+ "name": "Madagáscar"
+ },
+ "YT": {
+ "name": "Maiote"
+ },
+ "MY": {
+ "name": "Malásia"
+ },
+ "MW": {
+ "name": "Malawi"
+ },
+ "MV": {
+ "name": "Maldivas"
+ },
+ "ML": {
+ "name": "Mali"
+ },
+ "MT": {
+ "name": "Malta"
+ },
+ "MA": {
+ "name": "Marrocos"
+ },
+ "MQ": {
+ "name": "Martinica"
+ },
+ "MU": {
+ "name": "Maurícia"
+ },
+ "MR": {
+ "name": "Mauritânia"
+ },
+ "MX": {
+ "name": "México"
+ },
+ "MM": {
+ "name": "Mianmar (Birmânia)"
+ },
+ "FM": {
+ "name": "Micronésia"
+ },
+ "MZ": {
+ "name": "Moçambique"
+ },
+ "MD": {
+ "name": "Moldávia"
+ },
+ "MC": {
+ "name": "Mónaco"
+ },
+ "MN": {
+ "name": "Mongólia"
+ },
+ "MS": {
+ "name": "Monserrate"
+ },
+ "ME": {
+ "name": "Montenegro"
+ },
+ "NA": {
+ "name": "Namíbia"
+ },
+ "NR": {
+ "name": "Nauru"
+ },
+ "NP": {
+ "name": "Nepal"
+ },
+ "NI": {
+ "name": "Nicarágua"
+ },
+ "NE": {
+ "name": "Níger"
+ },
+ "NG": {
+ "name": "Nigéria"
+ },
+ "NU": {
+ "name": "Niue"
+ },
+ "NO": {
+ "name": "Noruega"
+ },
+ "NC": {
+ "name": "Nova Caledónia"
+ },
+ "NZ": {
+ "name": "Nova Zelândia"
+ },
+ "OM": {
+ "name": "Omã"
+ },
+ "NL": {
+ "name": "Países Baixos"
+ },
+ "BQ": {
+ "name": "Países Baixos Caribenhos"
+ },
+ "PW": {
+ "name": "Palau"
+ },
+ "PA": {
+ "name": "Panamá"
+ },
+ "PG": {
+ "name": "Papua-Nova Guiné"
+ },
+ "PK": {
+ "name": "Paquistão"
+ },
+ "PY": {
+ "name": "Paraguai"
+ },
+ "PE": {
+ "name": "Peru"
+ },
+ "PN": {
+ "name": "Pitcairn"
+ },
+ "PF": {
+ "name": "Polinésia Francesa"
+ },
+ "PL": {
+ "name": "Polónia"
+ },
+ "PR": {
+ "name": "Porto Rico"
+ },
+ "PT": {
+ "name": "Portugal"
+ },
+ "KE": {
+ "name": "Quénia"
+ },
+ "KG": {
+ "name": "Quirguistão"
+ },
+ "KI": {
+ "name": "Quiribati"
+ },
+ "GB": {
+ "name": "Reino Unido"
+ },
+ "CF": {
+ "name": "República Centro-Africana"
+ },
+ "CZ": {
+ "name": "República Checa"
+ },
+ "DO": {
+ "name": "República Dominicana"
+ },
+ "RE": {
+ "name": "Reunião"
+ },
+ "RO": {
+ "name": "Roménia"
+ },
+ "RW": {
+ "name": "Ruanda"
+ },
+ "RU": {
+ "name": "Rússia"
+ },
+ "EH": {
+ "name": "Saara Ocidental"
+ },
+ "PM": {
+ "name": "Saint Pierre e Miquelon"
+ },
+ "WS": {
+ "name": "Samoa"
+ },
+ "AS": {
+ "name": "Samoa Americana"
+ },
+ "SH": {
+ "name": "Santa Helena"
+ },
+ "LC": {
+ "name": "Santa Lúcia"
+ },
+ "BL": {
+ "name": "São Bartolomeu"
+ },
+ "KN": {
+ "name": "São Cristóvão e Nevis"
+ },
+ "SM": {
+ "name": "São Marino"
+ },
+ "MF": {
+ "name": "São Martinho"
+ },
+ "ST": {
+ "name": "São Tomé e Príncipe"
+ },
+ "VC": {
+ "name": "São Vicente e Granadinas"
+ },
+ "SC": {
+ "name": "Seicheles"
+ },
+ "SN": {
+ "name": "Senegal"
+ },
+ "SL": {
+ "name": "Serra Leoa"
+ },
+ "RS": {
+ "name": "Sérvia"
+ },
+ "SG": {
+ "name": "Singapura"
+ },
+ "SX": {
+ "name": "Sint Maarten"
+ },
+ "SY": {
+ "name": "Síria"
+ },
+ "SO": {
+ "name": "Somália"
+ },
+ "LK": {
+ "name": "Sri Lanka"
+ },
+ "SZ": {
+ "name": "Suazilândia"
+ },
+ "SD": {
+ "name": "Sudão"
+ },
+ "SS": {
+ "name": "Sudão do Sul"
+ },
+ "SE": {
+ "name": "Suécia"
+ },
+ "CH": {
+ "name": "Suíça"
+ },
+ "SR": {
+ "name": "Suriname"
+ },
+ "SJ": {
+ "name": "Svalbard e Jan Mayen"
+ },
+ "TH": {
+ "name": "Tailândia"
+ },
+ "TW": {
+ "name": "Taiwan"
+ },
+ "TJ": {
+ "name": "Tajiquistão"
+ },
+ "TZ": {
+ "name": "Tanzânia"
+ },
+ "IO": {
+ "name": "Território Britânico do Oceano Ãndico"
+ },
+ "PS": {
+ "name": "Território Palestiniano"
+ },
+ "TF": {
+ "name": "Territórios Franceses do Sul"
+ },
+ "TL": {
+ "name": "Timor-Leste"
+ },
+ "TG": {
+ "name": "Togo"
+ },
+ "TO": {
+ "name": "Tonga"
+ },
+ "TK": {
+ "name": "Toquelau"
+ },
+ "TT": {
+ "name": "Trindade e Tobago"
+ },
+ "TA": {
+ "name": "Tristão da Cunha"
+ },
+ "TN": {
+ "name": "Tunísia"
+ },
+ "TM": {
+ "name": "Turquemenistão"
+ },
+ "TR": {
+ "name": "Turquia"
+ },
+ "TV": {
+ "name": "Tuvalu"
+ },
+ "UA": {
+ "name": "Ucrânia"
+ },
+ "UG": {
+ "name": "Uganda"
+ },
+ "UY": {
+ "name": "Uruguai"
+ },
+ "UZ": {
+ "name": "Uzbequistão"
+ },
+ "VU": {
+ "name": "Vanuatu"
+ },
+ "VE": {
+ "name": "Venezuela"
+ },
+ "VN": {
+ "name": "Vietname"
+ },
+ "WF": {
+ "name": "Wallis e Futuna"
+ },
+ "ZM": {
+ "name": "Zâmbia"
+ },
+ "ZW": {
+ "name": "Zimbabué"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/country/pt-PT.json b/library/intl/resources/country/pt-PT.json
new file mode 100644
index 000000000..0b59b2b6f
--- /dev/null
+++ b/library/intl/resources/country/pt-PT.json
@@ -0,0 +1,761 @@
+{
+ "AF": {
+ "name": "Afeganistão"
+ },
+ "ZA": {
+ "name": "Ãfrica do Sul"
+ },
+ "AL": {
+ "name": "Albânia"
+ },
+ "DE": {
+ "name": "Alemanha"
+ },
+ "AD": {
+ "name": "Andorra"
+ },
+ "AO": {
+ "name": "Angola"
+ },
+ "AI": {
+ "name": "Anguila"
+ },
+ "AQ": {
+ "name": "Antártida"
+ },
+ "AG": {
+ "name": "Antígua e Barbuda"
+ },
+ "SA": {
+ "name": "Arábia Saudita"
+ },
+ "DZ": {
+ "name": "Argélia"
+ },
+ "AR": {
+ "name": "Argentina"
+ },
+ "AM": {
+ "name": "Arménia"
+ },
+ "AW": {
+ "name": "Aruba"
+ },
+ "AU": {
+ "name": "Austrália"
+ },
+ "AT": {
+ "name": "Ãustria"
+ },
+ "AZ": {
+ "name": "Azerbaijão"
+ },
+ "BS": {
+ "name": "Bahamas"
+ },
+ "BD": {
+ "name": "Bangladesh"
+ },
+ "BB": {
+ "name": "Barbados"
+ },
+ "BH": {
+ "name": "Barém"
+ },
+ "BE": {
+ "name": "Bélgica"
+ },
+ "BZ": {
+ "name": "Belize"
+ },
+ "BJ": {
+ "name": "Benim"
+ },
+ "BM": {
+ "name": "Bermudas"
+ },
+ "BY": {
+ "name": "Bielorrússia"
+ },
+ "BO": {
+ "name": "Bolívia"
+ },
+ "BA": {
+ "name": "Bósnia e Herzegovina"
+ },
+ "BW": {
+ "name": "Botswana"
+ },
+ "BR": {
+ "name": "Brasil"
+ },
+ "BN": {
+ "name": "Brunei"
+ },
+ "BG": {
+ "name": "Bulgária"
+ },
+ "BF": {
+ "name": "Burquina Faso"
+ },
+ "BI": {
+ "name": "Burundi"
+ },
+ "BT": {
+ "name": "Butão"
+ },
+ "CV": {
+ "name": "Cabo Verde"
+ },
+ "CM": {
+ "name": "Camarões"
+ },
+ "KH": {
+ "name": "Camboja"
+ },
+ "CA": {
+ "name": "Canadá"
+ },
+ "QA": {
+ "name": "Catar"
+ },
+ "KZ": {
+ "name": "Cazaquistão"
+ },
+ "EA": {
+ "name": "Ceuta e Melilha"
+ },
+ "TD": {
+ "name": "Chade"
+ },
+ "CL": {
+ "name": "Chile"
+ },
+ "CN": {
+ "name": "China"
+ },
+ "CY": {
+ "name": "Chipre"
+ },
+ "VA": {
+ "name": "Cidade do Vaticano"
+ },
+ "CO": {
+ "name": "Colômbia"
+ },
+ "KM": {
+ "name": "Comores"
+ },
+ "CG": {
+ "name": "Congo-Brazzaville"
+ },
+ "CD": {
+ "name": "Congo-Kinshasa"
+ },
+ "KP": {
+ "name": "Coreia do Norte"
+ },
+ "KR": {
+ "name": "Coreia do Sul"
+ },
+ "CI": {
+ "name": "Costa do Marfim"
+ },
+ "CR": {
+ "name": "Costa Rica"
+ },
+ "HR": {
+ "name": "Croácia"
+ },
+ "CU": {
+ "name": "Cuba"
+ },
+ "CW": {
+ "name": "Curaçau"
+ },
+ "DG": {
+ "name": "Diego Garcia"
+ },
+ "DK": {
+ "name": "Dinamarca"
+ },
+ "DM": {
+ "name": "Domínica"
+ },
+ "EG": {
+ "name": "Egipto"
+ },
+ "SV": {
+ "name": "El Salvador"
+ },
+ "AE": {
+ "name": "Emirados Ãrabes Unidos"
+ },
+ "EC": {
+ "name": "Equador"
+ },
+ "ER": {
+ "name": "Eritreia"
+ },
+ "SK": {
+ "name": "Eslováquia"
+ },
+ "SI": {
+ "name": "Eslovénia"
+ },
+ "ES": {
+ "name": "Espanha"
+ },
+ "US": {
+ "name": "Estados Unidos"
+ },
+ "EE": {
+ "name": "Estónia"
+ },
+ "ET": {
+ "name": "Etiópia"
+ },
+ "FJ": {
+ "name": "Fiji"
+ },
+ "PH": {
+ "name": "Filipinas"
+ },
+ "FI": {
+ "name": "Finlândia"
+ },
+ "FR": {
+ "name": "França"
+ },
+ "GA": {
+ "name": "Gabão"
+ },
+ "GM": {
+ "name": "Gâmbia"
+ },
+ "GH": {
+ "name": "Gana"
+ },
+ "GE": {
+ "name": "Geórgia"
+ },
+ "GI": {
+ "name": "Gibraltar"
+ },
+ "GD": {
+ "name": "Granada"
+ },
+ "GR": {
+ "name": "Grécia"
+ },
+ "GL": {
+ "name": "Gronelândia"
+ },
+ "GP": {
+ "name": "Guadalupe"
+ },
+ "GU": {
+ "name": "Guame"
+ },
+ "GT": {
+ "name": "Guatemala"
+ },
+ "GG": {
+ "name": "Guernsey"
+ },
+ "GY": {
+ "name": "Guiana"
+ },
+ "GF": {
+ "name": "Guiana Francesa"
+ },
+ "GN": {
+ "name": "Guiné"
+ },
+ "GQ": {
+ "name": "Guiné Equatorial"
+ },
+ "GW": {
+ "name": "Guiné-Bissau"
+ },
+ "HT": {
+ "name": "Haiti"
+ },
+ "HN": {
+ "name": "Honduras"
+ },
+ "HK": {
+ "name": "Hong Kong, RAE da China"
+ },
+ "HU": {
+ "name": "Hungria"
+ },
+ "YE": {
+ "name": "Iémen"
+ },
+ "AC": {
+ "name": "Ilha de Ascensão"
+ },
+ "IM": {
+ "name": "Ilha de Man"
+ },
+ "CX": {
+ "name": "Ilha do Natal"
+ },
+ "NF": {
+ "name": "Ilha Norfolk"
+ },
+ "AX": {
+ "name": "Ilhas Ã…land"
+ },
+ "KY": {
+ "name": "Ilhas Caimão"
+ },
+ "IC": {
+ "name": "Ilhas Canárias"
+ },
+ "CC": {
+ "name": "Ilhas Cocos"
+ },
+ "CK": {
+ "name": "Ilhas Cook"
+ },
+ "UM": {
+ "name": "Ilhas Distantes dos EUA"
+ },
+ "FK": {
+ "name": "Ilhas Falkland"
+ },
+ "FO": {
+ "name": "Ilhas Faroé"
+ },
+ "GS": {
+ "name": "Ilhas Geórgia do Sul e Sandwich do Sul"
+ },
+ "MP": {
+ "name": "Ilhas Marianas do Norte"
+ },
+ "MH": {
+ "name": "Ilhas Marshall"
+ },
+ "SB": {
+ "name": "Ilhas Salomão"
+ },
+ "TC": {
+ "name": "Ilhas Turcas e Caicos"
+ },
+ "VG": {
+ "name": "Ilhas Virgens Britânicas"
+ },
+ "VI": {
+ "name": "Ilhas Virgens dos EUA"
+ },
+ "IN": {
+ "name": "Ãndia"
+ },
+ "ID": {
+ "name": "Indonésia"
+ },
+ "IR": {
+ "name": "Irão"
+ },
+ "IQ": {
+ "name": "Iraque"
+ },
+ "IE": {
+ "name": "Irlanda"
+ },
+ "IS": {
+ "name": "Islândia"
+ },
+ "IL": {
+ "name": "Israel"
+ },
+ "IT": {
+ "name": "Itália"
+ },
+ "JM": {
+ "name": "Jamaica"
+ },
+ "JP": {
+ "name": "Japão"
+ },
+ "JE": {
+ "name": "Jersey"
+ },
+ "DJ": {
+ "name": "Jibuti"
+ },
+ "JO": {
+ "name": "Jordânia"
+ },
+ "XK": {
+ "name": "Kosovo"
+ },
+ "KW": {
+ "name": "Kuwait"
+ },
+ "LA": {
+ "name": "Laos"
+ },
+ "LS": {
+ "name": "Lesoto"
+ },
+ "LV": {
+ "name": "Letónia"
+ },
+ "LB": {
+ "name": "Líbano"
+ },
+ "LR": {
+ "name": "Libéria"
+ },
+ "LY": {
+ "name": "Líbia"
+ },
+ "LI": {
+ "name": "Liechtenstein"
+ },
+ "LT": {
+ "name": "Lituânia"
+ },
+ "LU": {
+ "name": "Luxemburgo"
+ },
+ "MO": {
+ "name": "Macau, RAE da China"
+ },
+ "MK": {
+ "name": "Macedónia"
+ },
+ "MG": {
+ "name": "Madagáscar"
+ },
+ "YT": {
+ "name": "Maiote"
+ },
+ "MY": {
+ "name": "Malásia"
+ },
+ "MW": {
+ "name": "Malawi"
+ },
+ "MV": {
+ "name": "Maldivas"
+ },
+ "ML": {
+ "name": "Mali"
+ },
+ "MT": {
+ "name": "Malta"
+ },
+ "MA": {
+ "name": "Marrocos"
+ },
+ "MQ": {
+ "name": "Martinica"
+ },
+ "MU": {
+ "name": "Maurícia"
+ },
+ "MR": {
+ "name": "Mauritânia"
+ },
+ "MX": {
+ "name": "México"
+ },
+ "MM": {
+ "name": "Mianmar (Birmânia)"
+ },
+ "FM": {
+ "name": "Micronésia"
+ },
+ "MZ": {
+ "name": "Moçambique"
+ },
+ "MD": {
+ "name": "Moldávia"
+ },
+ "MC": {
+ "name": "Mónaco"
+ },
+ "MN": {
+ "name": "Mongólia"
+ },
+ "MS": {
+ "name": "Monserrate"
+ },
+ "ME": {
+ "name": "Montenegro"
+ },
+ "NA": {
+ "name": "Namíbia"
+ },
+ "NR": {
+ "name": "Nauru"
+ },
+ "NP": {
+ "name": "Nepal"
+ },
+ "NI": {
+ "name": "Nicarágua"
+ },
+ "NE": {
+ "name": "Níger"
+ },
+ "NG": {
+ "name": "Nigéria"
+ },
+ "NU": {
+ "name": "Niue"
+ },
+ "NO": {
+ "name": "Noruega"
+ },
+ "NC": {
+ "name": "Nova Caledónia"
+ },
+ "NZ": {
+ "name": "Nova Zelândia"
+ },
+ "OM": {
+ "name": "Omã"
+ },
+ "NL": {
+ "name": "Países Baixos"
+ },
+ "BQ": {
+ "name": "Países Baixos Caribenhos"
+ },
+ "PW": {
+ "name": "Palau"
+ },
+ "PA": {
+ "name": "Panamá"
+ },
+ "PG": {
+ "name": "Papua-Nova Guiné"
+ },
+ "PK": {
+ "name": "Paquistão"
+ },
+ "PY": {
+ "name": "Paraguai"
+ },
+ "PE": {
+ "name": "Peru"
+ },
+ "PN": {
+ "name": "Pitcairn"
+ },
+ "PF": {
+ "name": "Polinésia Francesa"
+ },
+ "PL": {
+ "name": "Polónia"
+ },
+ "PR": {
+ "name": "Porto Rico"
+ },
+ "PT": {
+ "name": "Portugal"
+ },
+ "KE": {
+ "name": "Quénia"
+ },
+ "KG": {
+ "name": "Quirguistão"
+ },
+ "KI": {
+ "name": "Quiribati"
+ },
+ "GB": {
+ "name": "Reino Unido"
+ },
+ "CF": {
+ "name": "República Centro-Africana"
+ },
+ "CZ": {
+ "name": "República Checa"
+ },
+ "DO": {
+ "name": "República Dominicana"
+ },
+ "RE": {
+ "name": "Reunião"
+ },
+ "RO": {
+ "name": "Roménia"
+ },
+ "RW": {
+ "name": "Ruanda"
+ },
+ "RU": {
+ "name": "Rússia"
+ },
+ "EH": {
+ "name": "Saara Ocidental"
+ },
+ "PM": {
+ "name": "Saint Pierre e Miquelon"
+ },
+ "WS": {
+ "name": "Samoa"
+ },
+ "AS": {
+ "name": "Samoa Americana"
+ },
+ "SH": {
+ "name": "Santa Helena"
+ },
+ "LC": {
+ "name": "Santa Lúcia"
+ },
+ "BL": {
+ "name": "São Bartolomeu"
+ },
+ "KN": {
+ "name": "São Cristóvão e Nevis"
+ },
+ "SM": {
+ "name": "São Marino"
+ },
+ "MF": {
+ "name": "São Martinho"
+ },
+ "ST": {
+ "name": "São Tomé e Príncipe"
+ },
+ "VC": {
+ "name": "São Vicente e Granadinas"
+ },
+ "SC": {
+ "name": "Seicheles"
+ },
+ "SN": {
+ "name": "Senegal"
+ },
+ "SL": {
+ "name": "Serra Leoa"
+ },
+ "RS": {
+ "name": "Sérvia"
+ },
+ "SG": {
+ "name": "Singapura"
+ },
+ "SX": {
+ "name": "Sint Maarten"
+ },
+ "SY": {
+ "name": "Síria"
+ },
+ "SO": {
+ "name": "Somália"
+ },
+ "LK": {
+ "name": "Sri Lanka"
+ },
+ "SZ": {
+ "name": "Suazilândia"
+ },
+ "SD": {
+ "name": "Sudão"
+ },
+ "SS": {
+ "name": "Sudão do Sul"
+ },
+ "SE": {
+ "name": "Suécia"
+ },
+ "CH": {
+ "name": "Suíça"
+ },
+ "SR": {
+ "name": "Suriname"
+ },
+ "SJ": {
+ "name": "Svalbard e Jan Mayen"
+ },
+ "TH": {
+ "name": "Tailândia"
+ },
+ "TW": {
+ "name": "Taiwan"
+ },
+ "TJ": {
+ "name": "Tajiquistão"
+ },
+ "TZ": {
+ "name": "Tanzânia"
+ },
+ "IO": {
+ "name": "Território Britânico do Oceano Ãndico"
+ },
+ "PS": {
+ "name": "Território Palestiniano"
+ },
+ "TF": {
+ "name": "Territórios Franceses do Sul"
+ },
+ "TL": {
+ "name": "Timor-Leste"
+ },
+ "TG": {
+ "name": "Togo"
+ },
+ "TO": {
+ "name": "Tonga"
+ },
+ "TK": {
+ "name": "Toquelau"
+ },
+ "TT": {
+ "name": "Trindade e Tobago"
+ },
+ "TA": {
+ "name": "Tristão da Cunha"
+ },
+ "TN": {
+ "name": "Tunísia"
+ },
+ "TM": {
+ "name": "Turquemenistão"
+ },
+ "TR": {
+ "name": "Turquia"
+ },
+ "TV": {
+ "name": "Tuvalu"
+ },
+ "UA": {
+ "name": "Ucrânia"
+ },
+ "UG": {
+ "name": "Uganda"
+ },
+ "UY": {
+ "name": "Uruguai"
+ },
+ "UZ": {
+ "name": "Uzbequistão"
+ },
+ "VU": {
+ "name": "Vanuatu"
+ },
+ "VE": {
+ "name": "Venezuela"
+ },
+ "VN": {
+ "name": "Vietname"
+ },
+ "WF": {
+ "name": "Wallis e Futuna"
+ },
+ "ZM": {
+ "name": "Zâmbia"
+ },
+ "ZW": {
+ "name": "Zimbabué"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/country/pt-ST.json b/library/intl/resources/country/pt-ST.json
new file mode 100644
index 000000000..0b59b2b6f
--- /dev/null
+++ b/library/intl/resources/country/pt-ST.json
@@ -0,0 +1,761 @@
+{
+ "AF": {
+ "name": "Afeganistão"
+ },
+ "ZA": {
+ "name": "Ãfrica do Sul"
+ },
+ "AL": {
+ "name": "Albânia"
+ },
+ "DE": {
+ "name": "Alemanha"
+ },
+ "AD": {
+ "name": "Andorra"
+ },
+ "AO": {
+ "name": "Angola"
+ },
+ "AI": {
+ "name": "Anguila"
+ },
+ "AQ": {
+ "name": "Antártida"
+ },
+ "AG": {
+ "name": "Antígua e Barbuda"
+ },
+ "SA": {
+ "name": "Arábia Saudita"
+ },
+ "DZ": {
+ "name": "Argélia"
+ },
+ "AR": {
+ "name": "Argentina"
+ },
+ "AM": {
+ "name": "Arménia"
+ },
+ "AW": {
+ "name": "Aruba"
+ },
+ "AU": {
+ "name": "Austrália"
+ },
+ "AT": {
+ "name": "Ãustria"
+ },
+ "AZ": {
+ "name": "Azerbaijão"
+ },
+ "BS": {
+ "name": "Bahamas"
+ },
+ "BD": {
+ "name": "Bangladesh"
+ },
+ "BB": {
+ "name": "Barbados"
+ },
+ "BH": {
+ "name": "Barém"
+ },
+ "BE": {
+ "name": "Bélgica"
+ },
+ "BZ": {
+ "name": "Belize"
+ },
+ "BJ": {
+ "name": "Benim"
+ },
+ "BM": {
+ "name": "Bermudas"
+ },
+ "BY": {
+ "name": "Bielorrússia"
+ },
+ "BO": {
+ "name": "Bolívia"
+ },
+ "BA": {
+ "name": "Bósnia e Herzegovina"
+ },
+ "BW": {
+ "name": "Botswana"
+ },
+ "BR": {
+ "name": "Brasil"
+ },
+ "BN": {
+ "name": "Brunei"
+ },
+ "BG": {
+ "name": "Bulgária"
+ },
+ "BF": {
+ "name": "Burquina Faso"
+ },
+ "BI": {
+ "name": "Burundi"
+ },
+ "BT": {
+ "name": "Butão"
+ },
+ "CV": {
+ "name": "Cabo Verde"
+ },
+ "CM": {
+ "name": "Camarões"
+ },
+ "KH": {
+ "name": "Camboja"
+ },
+ "CA": {
+ "name": "Canadá"
+ },
+ "QA": {
+ "name": "Catar"
+ },
+ "KZ": {
+ "name": "Cazaquistão"
+ },
+ "EA": {
+ "name": "Ceuta e Melilha"
+ },
+ "TD": {
+ "name": "Chade"
+ },
+ "CL": {
+ "name": "Chile"
+ },
+ "CN": {
+ "name": "China"
+ },
+ "CY": {
+ "name": "Chipre"
+ },
+ "VA": {
+ "name": "Cidade do Vaticano"
+ },
+ "CO": {
+ "name": "Colômbia"
+ },
+ "KM": {
+ "name": "Comores"
+ },
+ "CG": {
+ "name": "Congo-Brazzaville"
+ },
+ "CD": {
+ "name": "Congo-Kinshasa"
+ },
+ "KP": {
+ "name": "Coreia do Norte"
+ },
+ "KR": {
+ "name": "Coreia do Sul"
+ },
+ "CI": {
+ "name": "Costa do Marfim"
+ },
+ "CR": {
+ "name": "Costa Rica"
+ },
+ "HR": {
+ "name": "Croácia"
+ },
+ "CU": {
+ "name": "Cuba"
+ },
+ "CW": {
+ "name": "Curaçau"
+ },
+ "DG": {
+ "name": "Diego Garcia"
+ },
+ "DK": {
+ "name": "Dinamarca"
+ },
+ "DM": {
+ "name": "Domínica"
+ },
+ "EG": {
+ "name": "Egipto"
+ },
+ "SV": {
+ "name": "El Salvador"
+ },
+ "AE": {
+ "name": "Emirados Ãrabes Unidos"
+ },
+ "EC": {
+ "name": "Equador"
+ },
+ "ER": {
+ "name": "Eritreia"
+ },
+ "SK": {
+ "name": "Eslováquia"
+ },
+ "SI": {
+ "name": "Eslovénia"
+ },
+ "ES": {
+ "name": "Espanha"
+ },
+ "US": {
+ "name": "Estados Unidos"
+ },
+ "EE": {
+ "name": "Estónia"
+ },
+ "ET": {
+ "name": "Etiópia"
+ },
+ "FJ": {
+ "name": "Fiji"
+ },
+ "PH": {
+ "name": "Filipinas"
+ },
+ "FI": {
+ "name": "Finlândia"
+ },
+ "FR": {
+ "name": "França"
+ },
+ "GA": {
+ "name": "Gabão"
+ },
+ "GM": {
+ "name": "Gâmbia"
+ },
+ "GH": {
+ "name": "Gana"
+ },
+ "GE": {
+ "name": "Geórgia"
+ },
+ "GI": {
+ "name": "Gibraltar"
+ },
+ "GD": {
+ "name": "Granada"
+ },
+ "GR": {
+ "name": "Grécia"
+ },
+ "GL": {
+ "name": "Gronelândia"
+ },
+ "GP": {
+ "name": "Guadalupe"
+ },
+ "GU": {
+ "name": "Guame"
+ },
+ "GT": {
+ "name": "Guatemala"
+ },
+ "GG": {
+ "name": "Guernsey"
+ },
+ "GY": {
+ "name": "Guiana"
+ },
+ "GF": {
+ "name": "Guiana Francesa"
+ },
+ "GN": {
+ "name": "Guiné"
+ },
+ "GQ": {
+ "name": "Guiné Equatorial"
+ },
+ "GW": {
+ "name": "Guiné-Bissau"
+ },
+ "HT": {
+ "name": "Haiti"
+ },
+ "HN": {
+ "name": "Honduras"
+ },
+ "HK": {
+ "name": "Hong Kong, RAE da China"
+ },
+ "HU": {
+ "name": "Hungria"
+ },
+ "YE": {
+ "name": "Iémen"
+ },
+ "AC": {
+ "name": "Ilha de Ascensão"
+ },
+ "IM": {
+ "name": "Ilha de Man"
+ },
+ "CX": {
+ "name": "Ilha do Natal"
+ },
+ "NF": {
+ "name": "Ilha Norfolk"
+ },
+ "AX": {
+ "name": "Ilhas Ã…land"
+ },
+ "KY": {
+ "name": "Ilhas Caimão"
+ },
+ "IC": {
+ "name": "Ilhas Canárias"
+ },
+ "CC": {
+ "name": "Ilhas Cocos"
+ },
+ "CK": {
+ "name": "Ilhas Cook"
+ },
+ "UM": {
+ "name": "Ilhas Distantes dos EUA"
+ },
+ "FK": {
+ "name": "Ilhas Falkland"
+ },
+ "FO": {
+ "name": "Ilhas Faroé"
+ },
+ "GS": {
+ "name": "Ilhas Geórgia do Sul e Sandwich do Sul"
+ },
+ "MP": {
+ "name": "Ilhas Marianas do Norte"
+ },
+ "MH": {
+ "name": "Ilhas Marshall"
+ },
+ "SB": {
+ "name": "Ilhas Salomão"
+ },
+ "TC": {
+ "name": "Ilhas Turcas e Caicos"
+ },
+ "VG": {
+ "name": "Ilhas Virgens Britânicas"
+ },
+ "VI": {
+ "name": "Ilhas Virgens dos EUA"
+ },
+ "IN": {
+ "name": "Ãndia"
+ },
+ "ID": {
+ "name": "Indonésia"
+ },
+ "IR": {
+ "name": "Irão"
+ },
+ "IQ": {
+ "name": "Iraque"
+ },
+ "IE": {
+ "name": "Irlanda"
+ },
+ "IS": {
+ "name": "Islândia"
+ },
+ "IL": {
+ "name": "Israel"
+ },
+ "IT": {
+ "name": "Itália"
+ },
+ "JM": {
+ "name": "Jamaica"
+ },
+ "JP": {
+ "name": "Japão"
+ },
+ "JE": {
+ "name": "Jersey"
+ },
+ "DJ": {
+ "name": "Jibuti"
+ },
+ "JO": {
+ "name": "Jordânia"
+ },
+ "XK": {
+ "name": "Kosovo"
+ },
+ "KW": {
+ "name": "Kuwait"
+ },
+ "LA": {
+ "name": "Laos"
+ },
+ "LS": {
+ "name": "Lesoto"
+ },
+ "LV": {
+ "name": "Letónia"
+ },
+ "LB": {
+ "name": "Líbano"
+ },
+ "LR": {
+ "name": "Libéria"
+ },
+ "LY": {
+ "name": "Líbia"
+ },
+ "LI": {
+ "name": "Liechtenstein"
+ },
+ "LT": {
+ "name": "Lituânia"
+ },
+ "LU": {
+ "name": "Luxemburgo"
+ },
+ "MO": {
+ "name": "Macau, RAE da China"
+ },
+ "MK": {
+ "name": "Macedónia"
+ },
+ "MG": {
+ "name": "Madagáscar"
+ },
+ "YT": {
+ "name": "Maiote"
+ },
+ "MY": {
+ "name": "Malásia"
+ },
+ "MW": {
+ "name": "Malawi"
+ },
+ "MV": {
+ "name": "Maldivas"
+ },
+ "ML": {
+ "name": "Mali"
+ },
+ "MT": {
+ "name": "Malta"
+ },
+ "MA": {
+ "name": "Marrocos"
+ },
+ "MQ": {
+ "name": "Martinica"
+ },
+ "MU": {
+ "name": "Maurícia"
+ },
+ "MR": {
+ "name": "Mauritânia"
+ },
+ "MX": {
+ "name": "México"
+ },
+ "MM": {
+ "name": "Mianmar (Birmânia)"
+ },
+ "FM": {
+ "name": "Micronésia"
+ },
+ "MZ": {
+ "name": "Moçambique"
+ },
+ "MD": {
+ "name": "Moldávia"
+ },
+ "MC": {
+ "name": "Mónaco"
+ },
+ "MN": {
+ "name": "Mongólia"
+ },
+ "MS": {
+ "name": "Monserrate"
+ },
+ "ME": {
+ "name": "Montenegro"
+ },
+ "NA": {
+ "name": "Namíbia"
+ },
+ "NR": {
+ "name": "Nauru"
+ },
+ "NP": {
+ "name": "Nepal"
+ },
+ "NI": {
+ "name": "Nicarágua"
+ },
+ "NE": {
+ "name": "Níger"
+ },
+ "NG": {
+ "name": "Nigéria"
+ },
+ "NU": {
+ "name": "Niue"
+ },
+ "NO": {
+ "name": "Noruega"
+ },
+ "NC": {
+ "name": "Nova Caledónia"
+ },
+ "NZ": {
+ "name": "Nova Zelândia"
+ },
+ "OM": {
+ "name": "Omã"
+ },
+ "NL": {
+ "name": "Países Baixos"
+ },
+ "BQ": {
+ "name": "Países Baixos Caribenhos"
+ },
+ "PW": {
+ "name": "Palau"
+ },
+ "PA": {
+ "name": "Panamá"
+ },
+ "PG": {
+ "name": "Papua-Nova Guiné"
+ },
+ "PK": {
+ "name": "Paquistão"
+ },
+ "PY": {
+ "name": "Paraguai"
+ },
+ "PE": {
+ "name": "Peru"
+ },
+ "PN": {
+ "name": "Pitcairn"
+ },
+ "PF": {
+ "name": "Polinésia Francesa"
+ },
+ "PL": {
+ "name": "Polónia"
+ },
+ "PR": {
+ "name": "Porto Rico"
+ },
+ "PT": {
+ "name": "Portugal"
+ },
+ "KE": {
+ "name": "Quénia"
+ },
+ "KG": {
+ "name": "Quirguistão"
+ },
+ "KI": {
+ "name": "Quiribati"
+ },
+ "GB": {
+ "name": "Reino Unido"
+ },
+ "CF": {
+ "name": "República Centro-Africana"
+ },
+ "CZ": {
+ "name": "República Checa"
+ },
+ "DO": {
+ "name": "República Dominicana"
+ },
+ "RE": {
+ "name": "Reunião"
+ },
+ "RO": {
+ "name": "Roménia"
+ },
+ "RW": {
+ "name": "Ruanda"
+ },
+ "RU": {
+ "name": "Rússia"
+ },
+ "EH": {
+ "name": "Saara Ocidental"
+ },
+ "PM": {
+ "name": "Saint Pierre e Miquelon"
+ },
+ "WS": {
+ "name": "Samoa"
+ },
+ "AS": {
+ "name": "Samoa Americana"
+ },
+ "SH": {
+ "name": "Santa Helena"
+ },
+ "LC": {
+ "name": "Santa Lúcia"
+ },
+ "BL": {
+ "name": "São Bartolomeu"
+ },
+ "KN": {
+ "name": "São Cristóvão e Nevis"
+ },
+ "SM": {
+ "name": "São Marino"
+ },
+ "MF": {
+ "name": "São Martinho"
+ },
+ "ST": {
+ "name": "São Tomé e Príncipe"
+ },
+ "VC": {
+ "name": "São Vicente e Granadinas"
+ },
+ "SC": {
+ "name": "Seicheles"
+ },
+ "SN": {
+ "name": "Senegal"
+ },
+ "SL": {
+ "name": "Serra Leoa"
+ },
+ "RS": {
+ "name": "Sérvia"
+ },
+ "SG": {
+ "name": "Singapura"
+ },
+ "SX": {
+ "name": "Sint Maarten"
+ },
+ "SY": {
+ "name": "Síria"
+ },
+ "SO": {
+ "name": "Somália"
+ },
+ "LK": {
+ "name": "Sri Lanka"
+ },
+ "SZ": {
+ "name": "Suazilândia"
+ },
+ "SD": {
+ "name": "Sudão"
+ },
+ "SS": {
+ "name": "Sudão do Sul"
+ },
+ "SE": {
+ "name": "Suécia"
+ },
+ "CH": {
+ "name": "Suíça"
+ },
+ "SR": {
+ "name": "Suriname"
+ },
+ "SJ": {
+ "name": "Svalbard e Jan Mayen"
+ },
+ "TH": {
+ "name": "Tailândia"
+ },
+ "TW": {
+ "name": "Taiwan"
+ },
+ "TJ": {
+ "name": "Tajiquistão"
+ },
+ "TZ": {
+ "name": "Tanzânia"
+ },
+ "IO": {
+ "name": "Território Britânico do Oceano Ãndico"
+ },
+ "PS": {
+ "name": "Território Palestiniano"
+ },
+ "TF": {
+ "name": "Territórios Franceses do Sul"
+ },
+ "TL": {
+ "name": "Timor-Leste"
+ },
+ "TG": {
+ "name": "Togo"
+ },
+ "TO": {
+ "name": "Tonga"
+ },
+ "TK": {
+ "name": "Toquelau"
+ },
+ "TT": {
+ "name": "Trindade e Tobago"
+ },
+ "TA": {
+ "name": "Tristão da Cunha"
+ },
+ "TN": {
+ "name": "Tunísia"
+ },
+ "TM": {
+ "name": "Turquemenistão"
+ },
+ "TR": {
+ "name": "Turquia"
+ },
+ "TV": {
+ "name": "Tuvalu"
+ },
+ "UA": {
+ "name": "Ucrânia"
+ },
+ "UG": {
+ "name": "Uganda"
+ },
+ "UY": {
+ "name": "Uruguai"
+ },
+ "UZ": {
+ "name": "Uzbequistão"
+ },
+ "VU": {
+ "name": "Vanuatu"
+ },
+ "VE": {
+ "name": "Venezuela"
+ },
+ "VN": {
+ "name": "Vietname"
+ },
+ "WF": {
+ "name": "Wallis e Futuna"
+ },
+ "ZM": {
+ "name": "Zâmbia"
+ },
+ "ZW": {
+ "name": "Zimbabué"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/country/pt-TL.json b/library/intl/resources/country/pt-TL.json
new file mode 100644
index 000000000..0b59b2b6f
--- /dev/null
+++ b/library/intl/resources/country/pt-TL.json
@@ -0,0 +1,761 @@
+{
+ "AF": {
+ "name": "Afeganistão"
+ },
+ "ZA": {
+ "name": "Ãfrica do Sul"
+ },
+ "AL": {
+ "name": "Albânia"
+ },
+ "DE": {
+ "name": "Alemanha"
+ },
+ "AD": {
+ "name": "Andorra"
+ },
+ "AO": {
+ "name": "Angola"
+ },
+ "AI": {
+ "name": "Anguila"
+ },
+ "AQ": {
+ "name": "Antártida"
+ },
+ "AG": {
+ "name": "Antígua e Barbuda"
+ },
+ "SA": {
+ "name": "Arábia Saudita"
+ },
+ "DZ": {
+ "name": "Argélia"
+ },
+ "AR": {
+ "name": "Argentina"
+ },
+ "AM": {
+ "name": "Arménia"
+ },
+ "AW": {
+ "name": "Aruba"
+ },
+ "AU": {
+ "name": "Austrália"
+ },
+ "AT": {
+ "name": "Ãustria"
+ },
+ "AZ": {
+ "name": "Azerbaijão"
+ },
+ "BS": {
+ "name": "Bahamas"
+ },
+ "BD": {
+ "name": "Bangladesh"
+ },
+ "BB": {
+ "name": "Barbados"
+ },
+ "BH": {
+ "name": "Barém"
+ },
+ "BE": {
+ "name": "Bélgica"
+ },
+ "BZ": {
+ "name": "Belize"
+ },
+ "BJ": {
+ "name": "Benim"
+ },
+ "BM": {
+ "name": "Bermudas"
+ },
+ "BY": {
+ "name": "Bielorrússia"
+ },
+ "BO": {
+ "name": "Bolívia"
+ },
+ "BA": {
+ "name": "Bósnia e Herzegovina"
+ },
+ "BW": {
+ "name": "Botswana"
+ },
+ "BR": {
+ "name": "Brasil"
+ },
+ "BN": {
+ "name": "Brunei"
+ },
+ "BG": {
+ "name": "Bulgária"
+ },
+ "BF": {
+ "name": "Burquina Faso"
+ },
+ "BI": {
+ "name": "Burundi"
+ },
+ "BT": {
+ "name": "Butão"
+ },
+ "CV": {
+ "name": "Cabo Verde"
+ },
+ "CM": {
+ "name": "Camarões"
+ },
+ "KH": {
+ "name": "Camboja"
+ },
+ "CA": {
+ "name": "Canadá"
+ },
+ "QA": {
+ "name": "Catar"
+ },
+ "KZ": {
+ "name": "Cazaquistão"
+ },
+ "EA": {
+ "name": "Ceuta e Melilha"
+ },
+ "TD": {
+ "name": "Chade"
+ },
+ "CL": {
+ "name": "Chile"
+ },
+ "CN": {
+ "name": "China"
+ },
+ "CY": {
+ "name": "Chipre"
+ },
+ "VA": {
+ "name": "Cidade do Vaticano"
+ },
+ "CO": {
+ "name": "Colômbia"
+ },
+ "KM": {
+ "name": "Comores"
+ },
+ "CG": {
+ "name": "Congo-Brazzaville"
+ },
+ "CD": {
+ "name": "Congo-Kinshasa"
+ },
+ "KP": {
+ "name": "Coreia do Norte"
+ },
+ "KR": {
+ "name": "Coreia do Sul"
+ },
+ "CI": {
+ "name": "Costa do Marfim"
+ },
+ "CR": {
+ "name": "Costa Rica"
+ },
+ "HR": {
+ "name": "Croácia"
+ },
+ "CU": {
+ "name": "Cuba"
+ },
+ "CW": {
+ "name": "Curaçau"
+ },
+ "DG": {
+ "name": "Diego Garcia"
+ },
+ "DK": {
+ "name": "Dinamarca"
+ },
+ "DM": {
+ "name": "Domínica"
+ },
+ "EG": {
+ "name": "Egipto"
+ },
+ "SV": {
+ "name": "El Salvador"
+ },
+ "AE": {
+ "name": "Emirados Ãrabes Unidos"
+ },
+ "EC": {
+ "name": "Equador"
+ },
+ "ER": {
+ "name": "Eritreia"
+ },
+ "SK": {
+ "name": "Eslováquia"
+ },
+ "SI": {
+ "name": "Eslovénia"
+ },
+ "ES": {
+ "name": "Espanha"
+ },
+ "US": {
+ "name": "Estados Unidos"
+ },
+ "EE": {
+ "name": "Estónia"
+ },
+ "ET": {
+ "name": "Etiópia"
+ },
+ "FJ": {
+ "name": "Fiji"
+ },
+ "PH": {
+ "name": "Filipinas"
+ },
+ "FI": {
+ "name": "Finlândia"
+ },
+ "FR": {
+ "name": "França"
+ },
+ "GA": {
+ "name": "Gabão"
+ },
+ "GM": {
+ "name": "Gâmbia"
+ },
+ "GH": {
+ "name": "Gana"
+ },
+ "GE": {
+ "name": "Geórgia"
+ },
+ "GI": {
+ "name": "Gibraltar"
+ },
+ "GD": {
+ "name": "Granada"
+ },
+ "GR": {
+ "name": "Grécia"
+ },
+ "GL": {
+ "name": "Gronelândia"
+ },
+ "GP": {
+ "name": "Guadalupe"
+ },
+ "GU": {
+ "name": "Guame"
+ },
+ "GT": {
+ "name": "Guatemala"
+ },
+ "GG": {
+ "name": "Guernsey"
+ },
+ "GY": {
+ "name": "Guiana"
+ },
+ "GF": {
+ "name": "Guiana Francesa"
+ },
+ "GN": {
+ "name": "Guiné"
+ },
+ "GQ": {
+ "name": "Guiné Equatorial"
+ },
+ "GW": {
+ "name": "Guiné-Bissau"
+ },
+ "HT": {
+ "name": "Haiti"
+ },
+ "HN": {
+ "name": "Honduras"
+ },
+ "HK": {
+ "name": "Hong Kong, RAE da China"
+ },
+ "HU": {
+ "name": "Hungria"
+ },
+ "YE": {
+ "name": "Iémen"
+ },
+ "AC": {
+ "name": "Ilha de Ascensão"
+ },
+ "IM": {
+ "name": "Ilha de Man"
+ },
+ "CX": {
+ "name": "Ilha do Natal"
+ },
+ "NF": {
+ "name": "Ilha Norfolk"
+ },
+ "AX": {
+ "name": "Ilhas Ã…land"
+ },
+ "KY": {
+ "name": "Ilhas Caimão"
+ },
+ "IC": {
+ "name": "Ilhas Canárias"
+ },
+ "CC": {
+ "name": "Ilhas Cocos"
+ },
+ "CK": {
+ "name": "Ilhas Cook"
+ },
+ "UM": {
+ "name": "Ilhas Distantes dos EUA"
+ },
+ "FK": {
+ "name": "Ilhas Falkland"
+ },
+ "FO": {
+ "name": "Ilhas Faroé"
+ },
+ "GS": {
+ "name": "Ilhas Geórgia do Sul e Sandwich do Sul"
+ },
+ "MP": {
+ "name": "Ilhas Marianas do Norte"
+ },
+ "MH": {
+ "name": "Ilhas Marshall"
+ },
+ "SB": {
+ "name": "Ilhas Salomão"
+ },
+ "TC": {
+ "name": "Ilhas Turcas e Caicos"
+ },
+ "VG": {
+ "name": "Ilhas Virgens Britânicas"
+ },
+ "VI": {
+ "name": "Ilhas Virgens dos EUA"
+ },
+ "IN": {
+ "name": "Ãndia"
+ },
+ "ID": {
+ "name": "Indonésia"
+ },
+ "IR": {
+ "name": "Irão"
+ },
+ "IQ": {
+ "name": "Iraque"
+ },
+ "IE": {
+ "name": "Irlanda"
+ },
+ "IS": {
+ "name": "Islândia"
+ },
+ "IL": {
+ "name": "Israel"
+ },
+ "IT": {
+ "name": "Itália"
+ },
+ "JM": {
+ "name": "Jamaica"
+ },
+ "JP": {
+ "name": "Japão"
+ },
+ "JE": {
+ "name": "Jersey"
+ },
+ "DJ": {
+ "name": "Jibuti"
+ },
+ "JO": {
+ "name": "Jordânia"
+ },
+ "XK": {
+ "name": "Kosovo"
+ },
+ "KW": {
+ "name": "Kuwait"
+ },
+ "LA": {
+ "name": "Laos"
+ },
+ "LS": {
+ "name": "Lesoto"
+ },
+ "LV": {
+ "name": "Letónia"
+ },
+ "LB": {
+ "name": "Líbano"
+ },
+ "LR": {
+ "name": "Libéria"
+ },
+ "LY": {
+ "name": "Líbia"
+ },
+ "LI": {
+ "name": "Liechtenstein"
+ },
+ "LT": {
+ "name": "Lituânia"
+ },
+ "LU": {
+ "name": "Luxemburgo"
+ },
+ "MO": {
+ "name": "Macau, RAE da China"
+ },
+ "MK": {
+ "name": "Macedónia"
+ },
+ "MG": {
+ "name": "Madagáscar"
+ },
+ "YT": {
+ "name": "Maiote"
+ },
+ "MY": {
+ "name": "Malásia"
+ },
+ "MW": {
+ "name": "Malawi"
+ },
+ "MV": {
+ "name": "Maldivas"
+ },
+ "ML": {
+ "name": "Mali"
+ },
+ "MT": {
+ "name": "Malta"
+ },
+ "MA": {
+ "name": "Marrocos"
+ },
+ "MQ": {
+ "name": "Martinica"
+ },
+ "MU": {
+ "name": "Maurícia"
+ },
+ "MR": {
+ "name": "Mauritânia"
+ },
+ "MX": {
+ "name": "México"
+ },
+ "MM": {
+ "name": "Mianmar (Birmânia)"
+ },
+ "FM": {
+ "name": "Micronésia"
+ },
+ "MZ": {
+ "name": "Moçambique"
+ },
+ "MD": {
+ "name": "Moldávia"
+ },
+ "MC": {
+ "name": "Mónaco"
+ },
+ "MN": {
+ "name": "Mongólia"
+ },
+ "MS": {
+ "name": "Monserrate"
+ },
+ "ME": {
+ "name": "Montenegro"
+ },
+ "NA": {
+ "name": "Namíbia"
+ },
+ "NR": {
+ "name": "Nauru"
+ },
+ "NP": {
+ "name": "Nepal"
+ },
+ "NI": {
+ "name": "Nicarágua"
+ },
+ "NE": {
+ "name": "Níger"
+ },
+ "NG": {
+ "name": "Nigéria"
+ },
+ "NU": {
+ "name": "Niue"
+ },
+ "NO": {
+ "name": "Noruega"
+ },
+ "NC": {
+ "name": "Nova Caledónia"
+ },
+ "NZ": {
+ "name": "Nova Zelândia"
+ },
+ "OM": {
+ "name": "Omã"
+ },
+ "NL": {
+ "name": "Países Baixos"
+ },
+ "BQ": {
+ "name": "Países Baixos Caribenhos"
+ },
+ "PW": {
+ "name": "Palau"
+ },
+ "PA": {
+ "name": "Panamá"
+ },
+ "PG": {
+ "name": "Papua-Nova Guiné"
+ },
+ "PK": {
+ "name": "Paquistão"
+ },
+ "PY": {
+ "name": "Paraguai"
+ },
+ "PE": {
+ "name": "Peru"
+ },
+ "PN": {
+ "name": "Pitcairn"
+ },
+ "PF": {
+ "name": "Polinésia Francesa"
+ },
+ "PL": {
+ "name": "Polónia"
+ },
+ "PR": {
+ "name": "Porto Rico"
+ },
+ "PT": {
+ "name": "Portugal"
+ },
+ "KE": {
+ "name": "Quénia"
+ },
+ "KG": {
+ "name": "Quirguistão"
+ },
+ "KI": {
+ "name": "Quiribati"
+ },
+ "GB": {
+ "name": "Reino Unido"
+ },
+ "CF": {
+ "name": "República Centro-Africana"
+ },
+ "CZ": {
+ "name": "República Checa"
+ },
+ "DO": {
+ "name": "República Dominicana"
+ },
+ "RE": {
+ "name": "Reunião"
+ },
+ "RO": {
+ "name": "Roménia"
+ },
+ "RW": {
+ "name": "Ruanda"
+ },
+ "RU": {
+ "name": "Rússia"
+ },
+ "EH": {
+ "name": "Saara Ocidental"
+ },
+ "PM": {
+ "name": "Saint Pierre e Miquelon"
+ },
+ "WS": {
+ "name": "Samoa"
+ },
+ "AS": {
+ "name": "Samoa Americana"
+ },
+ "SH": {
+ "name": "Santa Helena"
+ },
+ "LC": {
+ "name": "Santa Lúcia"
+ },
+ "BL": {
+ "name": "São Bartolomeu"
+ },
+ "KN": {
+ "name": "São Cristóvão e Nevis"
+ },
+ "SM": {
+ "name": "São Marino"
+ },
+ "MF": {
+ "name": "São Martinho"
+ },
+ "ST": {
+ "name": "São Tomé e Príncipe"
+ },
+ "VC": {
+ "name": "São Vicente e Granadinas"
+ },
+ "SC": {
+ "name": "Seicheles"
+ },
+ "SN": {
+ "name": "Senegal"
+ },
+ "SL": {
+ "name": "Serra Leoa"
+ },
+ "RS": {
+ "name": "Sérvia"
+ },
+ "SG": {
+ "name": "Singapura"
+ },
+ "SX": {
+ "name": "Sint Maarten"
+ },
+ "SY": {
+ "name": "Síria"
+ },
+ "SO": {
+ "name": "Somália"
+ },
+ "LK": {
+ "name": "Sri Lanka"
+ },
+ "SZ": {
+ "name": "Suazilândia"
+ },
+ "SD": {
+ "name": "Sudão"
+ },
+ "SS": {
+ "name": "Sudão do Sul"
+ },
+ "SE": {
+ "name": "Suécia"
+ },
+ "CH": {
+ "name": "Suíça"
+ },
+ "SR": {
+ "name": "Suriname"
+ },
+ "SJ": {
+ "name": "Svalbard e Jan Mayen"
+ },
+ "TH": {
+ "name": "Tailândia"
+ },
+ "TW": {
+ "name": "Taiwan"
+ },
+ "TJ": {
+ "name": "Tajiquistão"
+ },
+ "TZ": {
+ "name": "Tanzânia"
+ },
+ "IO": {
+ "name": "Território Britânico do Oceano Ãndico"
+ },
+ "PS": {
+ "name": "Território Palestiniano"
+ },
+ "TF": {
+ "name": "Territórios Franceses do Sul"
+ },
+ "TL": {
+ "name": "Timor-Leste"
+ },
+ "TG": {
+ "name": "Togo"
+ },
+ "TO": {
+ "name": "Tonga"
+ },
+ "TK": {
+ "name": "Toquelau"
+ },
+ "TT": {
+ "name": "Trindade e Tobago"
+ },
+ "TA": {
+ "name": "Tristão da Cunha"
+ },
+ "TN": {
+ "name": "Tunísia"
+ },
+ "TM": {
+ "name": "Turquemenistão"
+ },
+ "TR": {
+ "name": "Turquia"
+ },
+ "TV": {
+ "name": "Tuvalu"
+ },
+ "UA": {
+ "name": "Ucrânia"
+ },
+ "UG": {
+ "name": "Uganda"
+ },
+ "UY": {
+ "name": "Uruguai"
+ },
+ "UZ": {
+ "name": "Uzbequistão"
+ },
+ "VU": {
+ "name": "Vanuatu"
+ },
+ "VE": {
+ "name": "Venezuela"
+ },
+ "VN": {
+ "name": "Vietname"
+ },
+ "WF": {
+ "name": "Wallis e Futuna"
+ },
+ "ZM": {
+ "name": "Zâmbia"
+ },
+ "ZW": {
+ "name": "Zimbabué"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/country/pt.json b/library/intl/resources/country/pt.json
new file mode 100644
index 000000000..12a4d3d65
--- /dev/null
+++ b/library/intl/resources/country/pt.json
@@ -0,0 +1,761 @@
+{
+ "AF": {
+ "name": "Afeganistão"
+ },
+ "ZA": {
+ "name": "Ãfrica do Sul"
+ },
+ "AL": {
+ "name": "Albânia"
+ },
+ "DE": {
+ "name": "Alemanha"
+ },
+ "AD": {
+ "name": "Andorra"
+ },
+ "AO": {
+ "name": "Angola"
+ },
+ "AI": {
+ "name": "Anguilla"
+ },
+ "AQ": {
+ "name": "Antártida"
+ },
+ "AG": {
+ "name": "Antígua e Barbuda"
+ },
+ "SA": {
+ "name": "Arábia Saudita"
+ },
+ "DZ": {
+ "name": "Argélia"
+ },
+ "AR": {
+ "name": "Argentina"
+ },
+ "AM": {
+ "name": "Armênia"
+ },
+ "AW": {
+ "name": "Aruba"
+ },
+ "AU": {
+ "name": "Austrália"
+ },
+ "AT": {
+ "name": "Ãustria"
+ },
+ "AZ": {
+ "name": "Azerbaijão"
+ },
+ "BS": {
+ "name": "Bahamas"
+ },
+ "BH": {
+ "name": "Bahrein"
+ },
+ "BD": {
+ "name": "Bangladesh"
+ },
+ "BB": {
+ "name": "Barbados"
+ },
+ "BE": {
+ "name": "Bélgica"
+ },
+ "BZ": {
+ "name": "Belize"
+ },
+ "BJ": {
+ "name": "Benin"
+ },
+ "BM": {
+ "name": "Bermudas"
+ },
+ "BY": {
+ "name": "Bielorrússia"
+ },
+ "BO": {
+ "name": "Bolívia"
+ },
+ "BA": {
+ "name": "Bósnia e Herzegovina"
+ },
+ "BW": {
+ "name": "Botsuana"
+ },
+ "BR": {
+ "name": "Brasil"
+ },
+ "BN": {
+ "name": "Brunei"
+ },
+ "BG": {
+ "name": "Bulgária"
+ },
+ "BF": {
+ "name": "Burquina Faso"
+ },
+ "BI": {
+ "name": "Burundi"
+ },
+ "BT": {
+ "name": "Butão"
+ },
+ "CV": {
+ "name": "Cabo Verde"
+ },
+ "KH": {
+ "name": "Camboja"
+ },
+ "CA": {
+ "name": "Canadá"
+ },
+ "QA": {
+ "name": "Catar"
+ },
+ "KZ": {
+ "name": "Cazaquistão"
+ },
+ "EA": {
+ "name": "Ceuta e Melilha"
+ },
+ "TD": {
+ "name": "Chade"
+ },
+ "CL": {
+ "name": "Chile"
+ },
+ "CN": {
+ "name": "China"
+ },
+ "CY": {
+ "name": "Chipre"
+ },
+ "VA": {
+ "name": "Cidade do Vaticano"
+ },
+ "SG": {
+ "name": "Cingapura"
+ },
+ "CO": {
+ "name": "Colômbia"
+ },
+ "KM": {
+ "name": "Comores"
+ },
+ "CG": {
+ "name": "Congo - Brazzaville"
+ },
+ "CD": {
+ "name": "Congo - Kinshasa"
+ },
+ "KP": {
+ "name": "Coreia do Norte"
+ },
+ "KR": {
+ "name": "Coreia do Sul"
+ },
+ "CI": {
+ "name": "Costa do Marfim"
+ },
+ "CR": {
+ "name": "Costa Rica"
+ },
+ "HR": {
+ "name": "Croácia"
+ },
+ "CU": {
+ "name": "Cuba"
+ },
+ "CW": {
+ "name": "Curaçao"
+ },
+ "DG": {
+ "name": "Diego Garcia"
+ },
+ "DK": {
+ "name": "Dinamarca"
+ },
+ "DJ": {
+ "name": "Djibuti"
+ },
+ "DM": {
+ "name": "Dominica"
+ },
+ "EG": {
+ "name": "Egito"
+ },
+ "SV": {
+ "name": "El Salvador"
+ },
+ "AE": {
+ "name": "Emirados Ãrabes Unidos"
+ },
+ "EC": {
+ "name": "Equador"
+ },
+ "ER": {
+ "name": "Eritreia"
+ },
+ "SK": {
+ "name": "Eslováquia"
+ },
+ "SI": {
+ "name": "Eslovênia"
+ },
+ "ES": {
+ "name": "Espanha"
+ },
+ "US": {
+ "name": "Estados Unidos"
+ },
+ "EE": {
+ "name": "Estônia"
+ },
+ "ET": {
+ "name": "Etiópia"
+ },
+ "FJ": {
+ "name": "Fiji"
+ },
+ "PH": {
+ "name": "Filipinas"
+ },
+ "FI": {
+ "name": "Finlândia"
+ },
+ "FR": {
+ "name": "França"
+ },
+ "GA": {
+ "name": "Gabão"
+ },
+ "GM": {
+ "name": "Gâmbia"
+ },
+ "GH": {
+ "name": "Gana"
+ },
+ "GE": {
+ "name": "Geórgia"
+ },
+ "GS": {
+ "name": "Geórgia do Sul e Ilhas Sandwich do Sul"
+ },
+ "GI": {
+ "name": "Gibraltar"
+ },
+ "GD": {
+ "name": "Granada"
+ },
+ "GR": {
+ "name": "Grécia"
+ },
+ "GL": {
+ "name": "Groenlândia"
+ },
+ "GP": {
+ "name": "Guadalupe"
+ },
+ "GU": {
+ "name": "Guam"
+ },
+ "GT": {
+ "name": "Guatemala"
+ },
+ "GG": {
+ "name": "Guernsey"
+ },
+ "GY": {
+ "name": "Guiana"
+ },
+ "GF": {
+ "name": "Guiana Francesa"
+ },
+ "GN": {
+ "name": "Guiné"
+ },
+ "GW": {
+ "name": "Guiné Bissau"
+ },
+ "GQ": {
+ "name": "Guiné Equatorial"
+ },
+ "HT": {
+ "name": "Haiti"
+ },
+ "NL": {
+ "name": "Holanda"
+ },
+ "HN": {
+ "name": "Honduras"
+ },
+ "HK": {
+ "name": "Hong Kong, RAE da China"
+ },
+ "HU": {
+ "name": "Hungria"
+ },
+ "YE": {
+ "name": "Iêmen"
+ },
+ "CX": {
+ "name": "Ilha Christmas"
+ },
+ "AC": {
+ "name": "Ilha de Ascensão"
+ },
+ "IM": {
+ "name": "Ilha de Man"
+ },
+ "NF": {
+ "name": "Ilha Norfolk"
+ },
+ "AX": {
+ "name": "Ilhas Ã…land"
+ },
+ "KY": {
+ "name": "Ilhas Caiman"
+ },
+ "IC": {
+ "name": "Ilhas Canárias"
+ },
+ "CC": {
+ "name": "Ilhas Cocos (Keeling)"
+ },
+ "CK": {
+ "name": "Ilhas Cook"
+ },
+ "UM": {
+ "name": "Ilhas Distantes dos EUA"
+ },
+ "FO": {
+ "name": "Ilhas Faroe"
+ },
+ "FK": {
+ "name": "Ilhas Malvinas"
+ },
+ "MP": {
+ "name": "Ilhas Marianas do Norte"
+ },
+ "MH": {
+ "name": "Ilhas Marshall"
+ },
+ "PN": {
+ "name": "Ilhas Pitcairn"
+ },
+ "SB": {
+ "name": "Ilhas Salomão"
+ },
+ "TC": {
+ "name": "Ilhas Turks e Caicos"
+ },
+ "VG": {
+ "name": "Ilhas Virgens Britânicas"
+ },
+ "VI": {
+ "name": "Ilhas Virgens dos EUA"
+ },
+ "IN": {
+ "name": "Ãndia"
+ },
+ "ID": {
+ "name": "Indonésia"
+ },
+ "IR": {
+ "name": "Irã"
+ },
+ "IQ": {
+ "name": "Iraque"
+ },
+ "IE": {
+ "name": "Irlanda"
+ },
+ "IS": {
+ "name": "Islândia"
+ },
+ "IL": {
+ "name": "Israel"
+ },
+ "IT": {
+ "name": "Itália"
+ },
+ "JM": {
+ "name": "Jamaica"
+ },
+ "JP": {
+ "name": "Japão"
+ },
+ "JE": {
+ "name": "Jersey"
+ },
+ "JO": {
+ "name": "Jordânia"
+ },
+ "XK": {
+ "name": "Kosovo"
+ },
+ "KW": {
+ "name": "Kuwait"
+ },
+ "LA": {
+ "name": "Laos"
+ },
+ "LS": {
+ "name": "Lesoto"
+ },
+ "LV": {
+ "name": "Letônia"
+ },
+ "LB": {
+ "name": "Líbano"
+ },
+ "LR": {
+ "name": "Libéria"
+ },
+ "LY": {
+ "name": "Líbia"
+ },
+ "LI": {
+ "name": "Liechtenstein"
+ },
+ "LT": {
+ "name": "Lituânia"
+ },
+ "LU": {
+ "name": "Luxemburgo"
+ },
+ "MO": {
+ "name": "Macau, RAE da China"
+ },
+ "MK": {
+ "name": "Macedônia"
+ },
+ "MG": {
+ "name": "Madagascar"
+ },
+ "MY": {
+ "name": "Malásia"
+ },
+ "MW": {
+ "name": "Malawi"
+ },
+ "MV": {
+ "name": "Maldivas"
+ },
+ "ML": {
+ "name": "Mali"
+ },
+ "MT": {
+ "name": "Malta"
+ },
+ "MA": {
+ "name": "Marrocos"
+ },
+ "MQ": {
+ "name": "Martinica"
+ },
+ "MU": {
+ "name": "Maurício"
+ },
+ "MR": {
+ "name": "Mauritânia"
+ },
+ "YT": {
+ "name": "Mayotte"
+ },
+ "MX": {
+ "name": "México"
+ },
+ "MM": {
+ "name": "Mianmar (Birmânia)"
+ },
+ "FM": {
+ "name": "Micronésia"
+ },
+ "MZ": {
+ "name": "Moçambique"
+ },
+ "MD": {
+ "name": "Moldávia"
+ },
+ "MC": {
+ "name": "Mônaco"
+ },
+ "MN": {
+ "name": "Mongólia"
+ },
+ "ME": {
+ "name": "Montenegro"
+ },
+ "MS": {
+ "name": "Montserrat"
+ },
+ "NA": {
+ "name": "Namíbia"
+ },
+ "NR": {
+ "name": "Nauru"
+ },
+ "NP": {
+ "name": "Nepal"
+ },
+ "NI": {
+ "name": "Nicarágua"
+ },
+ "NE": {
+ "name": "Níger"
+ },
+ "NG": {
+ "name": "Nigéria"
+ },
+ "NU": {
+ "name": "Niue"
+ },
+ "NO": {
+ "name": "Noruega"
+ },
+ "NC": {
+ "name": "Nova Caledônia"
+ },
+ "NZ": {
+ "name": "Nova Zelândia"
+ },
+ "OM": {
+ "name": "Omã"
+ },
+ "BQ": {
+ "name": "Países Baixos Caribenhos"
+ },
+ "PW": {
+ "name": "Palau"
+ },
+ "PA": {
+ "name": "Panamá"
+ },
+ "PG": {
+ "name": "Papua-Nova Guiné"
+ },
+ "PK": {
+ "name": "Paquistão"
+ },
+ "PY": {
+ "name": "Paraguai"
+ },
+ "PE": {
+ "name": "Peru"
+ },
+ "PF": {
+ "name": "Polinésia Francesa"
+ },
+ "PL": {
+ "name": "Polônia"
+ },
+ "PR": {
+ "name": "Porto Rico"
+ },
+ "PT": {
+ "name": "Portugal"
+ },
+ "KE": {
+ "name": "Quênia"
+ },
+ "KG": {
+ "name": "Quirguistão"
+ },
+ "KI": {
+ "name": "Quiribati"
+ },
+ "GB": {
+ "name": "Reino Unido"
+ },
+ "CF": {
+ "name": "República Centro-Africana"
+ },
+ "DO": {
+ "name": "República Dominicana"
+ },
+ "CM": {
+ "name": "República dos Camarões"
+ },
+ "CZ": {
+ "name": "República Tcheca"
+ },
+ "RE": {
+ "name": "Reunião"
+ },
+ "RO": {
+ "name": "Romênia"
+ },
+ "RW": {
+ "name": "Ruanda"
+ },
+ "RU": {
+ "name": "Rússia"
+ },
+ "EH": {
+ "name": "Saara Ocidental"
+ },
+ "PM": {
+ "name": "Saint Pierre e Miquelon"
+ },
+ "WS": {
+ "name": "Samoa"
+ },
+ "AS": {
+ "name": "Samoa Americana"
+ },
+ "SM": {
+ "name": "San Marino"
+ },
+ "SH": {
+ "name": "Santa Helena"
+ },
+ "LC": {
+ "name": "Santa Lúcia"
+ },
+ "BL": {
+ "name": "São Bartolomeu"
+ },
+ "KN": {
+ "name": "São Cristóvão e Nevis"
+ },
+ "MF": {
+ "name": "São Martinho"
+ },
+ "ST": {
+ "name": "São Tomé e Príncipe"
+ },
+ "VC": {
+ "name": "São Vicente e Granadinas"
+ },
+ "SN": {
+ "name": "Senegal"
+ },
+ "SL": {
+ "name": "Serra Leoa"
+ },
+ "RS": {
+ "name": "Sérvia"
+ },
+ "SC": {
+ "name": "Seychelles"
+ },
+ "SX": {
+ "name": "Sint Maarten"
+ },
+ "SY": {
+ "name": "Síria"
+ },
+ "SO": {
+ "name": "Somália"
+ },
+ "LK": {
+ "name": "Sri Lanka"
+ },
+ "SZ": {
+ "name": "Suazilândia"
+ },
+ "SD": {
+ "name": "Sudão"
+ },
+ "SS": {
+ "name": "Sudão do Sul"
+ },
+ "SE": {
+ "name": "Suécia"
+ },
+ "CH": {
+ "name": "Suíça"
+ },
+ "SR": {
+ "name": "Suriname"
+ },
+ "SJ": {
+ "name": "Svalbard e Jan Mayen"
+ },
+ "TH": {
+ "name": "Tailândia"
+ },
+ "TW": {
+ "name": "Taiwan"
+ },
+ "TJ": {
+ "name": "Tajiquistão"
+ },
+ "TZ": {
+ "name": "Tanzânia"
+ },
+ "IO": {
+ "name": "Território Britânico do Oceano Ãndico"
+ },
+ "TF": {
+ "name": "Territórios Franceses do Sul"
+ },
+ "PS": {
+ "name": "Territórios palestinos"
+ },
+ "TL": {
+ "name": "Timor-Leste"
+ },
+ "TG": {
+ "name": "Togo"
+ },
+ "TK": {
+ "name": "Tokelau"
+ },
+ "TO": {
+ "name": "Tonga"
+ },
+ "TT": {
+ "name": "Trinidad e Tobago"
+ },
+ "TA": {
+ "name": "Tristão da Cunha"
+ },
+ "TN": {
+ "name": "Tunísia"
+ },
+ "TM": {
+ "name": "Turcomenistão"
+ },
+ "TR": {
+ "name": "Turquia"
+ },
+ "TV": {
+ "name": "Tuvalu"
+ },
+ "UA": {
+ "name": "Ucrânia"
+ },
+ "UG": {
+ "name": "Uganda"
+ },
+ "UY": {
+ "name": "Uruguai"
+ },
+ "UZ": {
+ "name": "Uzbequistão"
+ },
+ "VU": {
+ "name": "Vanuatu"
+ },
+ "VE": {
+ "name": "Venezuela"
+ },
+ "VN": {
+ "name": "Vietnã"
+ },
+ "WF": {
+ "name": "Wallis e Futuna"
+ },
+ "ZM": {
+ "name": "Zâmbia"
+ },
+ "ZW": {
+ "name": "Zimbábue"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/country/rm.json b/library/intl/resources/country/rm.json
new file mode 100644
index 000000000..e6ffadbe8
--- /dev/null
+++ b/library/intl/resources/country/rm.json
@@ -0,0 +1,761 @@
+{
+ "AF": {
+ "name": "Afghanistan"
+ },
+ "ZA": {
+ "name": "Africa dal Sid"
+ },
+ "AL": {
+ "name": "Albania"
+ },
+ "DZ": {
+ "name": "Algeria"
+ },
+ "AD": {
+ "name": "Andorra"
+ },
+ "AO": {
+ "name": "Angola"
+ },
+ "AI": {
+ "name": "Anguilla"
+ },
+ "AQ": {
+ "name": "Antarctica"
+ },
+ "AG": {
+ "name": "Antigua e Barbuda"
+ },
+ "SA": {
+ "name": "Arabia Saudita"
+ },
+ "AR": {
+ "name": "Argentinia"
+ },
+ "AM": {
+ "name": "Armenia"
+ },
+ "AW": {
+ "name": "Aruba"
+ },
+ "AC": {
+ "name": "Ascension Island"
+ },
+ "AZ": {
+ "name": "Aserbaidschan"
+ },
+ "AU": {
+ "name": "Australia"
+ },
+ "AT": {
+ "name": "Austria"
+ },
+ "BS": {
+ "name": "Bahamas"
+ },
+ "BH": {
+ "name": "Bahrain"
+ },
+ "BD": {
+ "name": "Bangladesch"
+ },
+ "BB": {
+ "name": "Barbados"
+ },
+ "BE": {
+ "name": "Belgia"
+ },
+ "BZ": {
+ "name": "Belize"
+ },
+ "BJ": {
+ "name": "Benin"
+ },
+ "BM": {
+ "name": "Bermudas"
+ },
+ "BT": {
+ "name": "Bhutan"
+ },
+ "BY": {
+ "name": "Bielorussia"
+ },
+ "BO": {
+ "name": "Bolivia"
+ },
+ "BA": {
+ "name": "Bosnia ed Erzegovina"
+ },
+ "BW": {
+ "name": "Botswana"
+ },
+ "BR": {
+ "name": "Brasila"
+ },
+ "BN": {
+ "name": "Brunei"
+ },
+ "BG": {
+ "name": "Bulgaria"
+ },
+ "BF": {
+ "name": "Burkina Faso"
+ },
+ "BI": {
+ "name": "Burundi"
+ },
+ "KH": {
+ "name": "Cambodscha"
+ },
+ "CM": {
+ "name": "Camerun"
+ },
+ "CA": {
+ "name": "Canada"
+ },
+ "IC": {
+ "name": "Canary Islands"
+ },
+ "CV": {
+ "name": "Cap Verd"
+ },
+ "BQ": {
+ "name": "Caribbean Netherlands"
+ },
+ "EA": {
+ "name": "Ceuta & Melilla"
+ },
+ "CL": {
+ "name": "Chile"
+ },
+ "CN": {
+ "name": "China"
+ },
+ "CY": {
+ "name": "Cipra"
+ },
+ "VA": {
+ "name": "Citad dal Vatican"
+ },
+ "CO": {
+ "name": "Columbia"
+ },
+ "KM": {
+ "name": "Comoras"
+ },
+ "CG": {
+ "name": "Congo"
+ },
+ "KP": {
+ "name": "Corea dal Nord"
+ },
+ "KR": {
+ "name": "Corea dal Sid"
+ },
+ "CI": {
+ "name": "Costa d’Ivur"
+ },
+ "CR": {
+ "name": "Costa Rica"
+ },
+ "HR": {
+ "name": "Croazia"
+ },
+ "CU": {
+ "name": "Cuba"
+ },
+ "CW": {
+ "name": "Curaçao"
+ },
+ "DK": {
+ "name": "Danemarc"
+ },
+ "DG": {
+ "name": "Diego Garcia"
+ },
+ "DM": {
+ "name": "Dominica"
+ },
+ "DJ": {
+ "name": "Dschibuti"
+ },
+ "EC": {
+ "name": "Ecuador"
+ },
+ "EG": {
+ "name": "Egipta"
+ },
+ "SV": {
+ "name": "El Salvador"
+ },
+ "AE": {
+ "name": "Emirats Arabs Unids"
+ },
+ "ER": {
+ "name": "Eritrea"
+ },
+ "EE": {
+ "name": "Estonia"
+ },
+ "ET": {
+ "name": "Etiopia"
+ },
+ "FJ": {
+ "name": "Fidschi"
+ },
+ "PH": {
+ "name": "Filippinas"
+ },
+ "FI": {
+ "name": "Finlanda"
+ },
+ "FR": {
+ "name": "Frantscha"
+ },
+ "GA": {
+ "name": "Gabun"
+ },
+ "GM": {
+ "name": "Gambia"
+ },
+ "GE": {
+ "name": "Georgia"
+ },
+ "GS": {
+ "name": "Georgia dal Sid e las Inslas Sandwich dal Sid"
+ },
+ "DE": {
+ "name": "Germania"
+ },
+ "GH": {
+ "name": "Ghana"
+ },
+ "JM": {
+ "name": "Giamaica"
+ },
+ "JP": {
+ "name": "Giapun"
+ },
+ "GI": {
+ "name": "Gibraltar"
+ },
+ "GD": {
+ "name": "Grenada"
+ },
+ "GR": {
+ "name": "Grezia"
+ },
+ "GL": {
+ "name": "Grönlanda"
+ },
+ "GP": {
+ "name": "Guadeloupe"
+ },
+ "GU": {
+ "name": "Guam"
+ },
+ "GT": {
+ "name": "Guatemala"
+ },
+ "GG": {
+ "name": "Guernsey"
+ },
+ "GN": {
+ "name": "Guinea"
+ },
+ "GQ": {
+ "name": "Guinea Equatoriala"
+ },
+ "GW": {
+ "name": "Guinea-Bissau"
+ },
+ "GY": {
+ "name": "Guyana"
+ },
+ "GF": {
+ "name": "Guyana Franzosa"
+ },
+ "HT": {
+ "name": "Haiti"
+ },
+ "HN": {
+ "name": "Honduras"
+ },
+ "IN": {
+ "name": "India"
+ },
+ "ID": {
+ "name": "Indonesia"
+ },
+ "CX": {
+ "name": "Insla da Christmas"
+ },
+ "IM": {
+ "name": "Insla da Man"
+ },
+ "NF": {
+ "name": "Insla Norfolk"
+ },
+ "AX": {
+ "name": "Inslas Aland"
+ },
+ "KY": {
+ "name": "Inslas Cayman"
+ },
+ "CC": {
+ "name": "Inslas Cocos"
+ },
+ "CK": {
+ "name": "Inslas Cook"
+ },
+ "MH": {
+ "name": "Inslas da Marshall"
+ },
+ "FK": {
+ "name": "Inslas dal Falkland"
+ },
+ "FO": {
+ "name": "Inslas Feroe"
+ },
+ "MP": {
+ "name": "Inslas Mariannas dal Nord"
+ },
+ "UM": {
+ "name": "Inslas pitschnas perifericas dals Stadis Unids da l’America"
+ },
+ "TC": {
+ "name": "Inslas Turks e Caicos"
+ },
+ "VI": {
+ "name": "Inslas Verginas Americanas"
+ },
+ "VG": {
+ "name": "Inslas Verginas Britannicas"
+ },
+ "IQ": {
+ "name": "Irac"
+ },
+ "IR": {
+ "name": "Iran"
+ },
+ "IE": {
+ "name": "Irlanda"
+ },
+ "IS": {
+ "name": "Islanda"
+ },
+ "IL": {
+ "name": "Israel"
+ },
+ "IT": {
+ "name": "Italia"
+ },
+ "YE": {
+ "name": "Jemen"
+ },
+ "JE": {
+ "name": "Jersey"
+ },
+ "JO": {
+ "name": "Jordania"
+ },
+ "KZ": {
+ "name": "Kasachstan"
+ },
+ "QA": {
+ "name": "Katar"
+ },
+ "KE": {
+ "name": "Kenia"
+ },
+ "KG": {
+ "name": "Kirghisistan"
+ },
+ "KI": {
+ "name": "Kiribati"
+ },
+ "XK": {
+ "name": "Kosovo"
+ },
+ "KW": {
+ "name": "Kuwait"
+ },
+ "LA": {
+ "name": "Laos"
+ },
+ "LS": {
+ "name": "Lesotho"
+ },
+ "LV": {
+ "name": "Lettonia"
+ },
+ "LB": {
+ "name": "Libanon"
+ },
+ "LR": {
+ "name": "Liberia"
+ },
+ "LY": {
+ "name": "Libia"
+ },
+ "LI": {
+ "name": "Liechtenstein"
+ },
+ "LT": {
+ "name": "Lituania"
+ },
+ "LU": {
+ "name": "Luxemburg"
+ },
+ "MK": {
+ "name": "Macedonia"
+ },
+ "MG": {
+ "name": "Madagascar"
+ },
+ "MY": {
+ "name": "Malaisia"
+ },
+ "MW": {
+ "name": "Malawi"
+ },
+ "MV": {
+ "name": "Maldivas"
+ },
+ "ML": {
+ "name": "Mali"
+ },
+ "MT": {
+ "name": "Malta"
+ },
+ "MA": {
+ "name": "Maroc"
+ },
+ "MQ": {
+ "name": "Martinique"
+ },
+ "MR": {
+ "name": "Mauretania"
+ },
+ "MU": {
+ "name": "Mauritius"
+ },
+ "YT": {
+ "name": "Mayotte"
+ },
+ "MX": {
+ "name": "Mexico"
+ },
+ "FM": {
+ "name": "Micronesia"
+ },
+ "MD": {
+ "name": "Moldavia"
+ },
+ "MC": {
+ "name": "Monaco"
+ },
+ "MN": {
+ "name": "Mongolia"
+ },
+ "ME": {
+ "name": "Montenegro"
+ },
+ "MS": {
+ "name": "Montserrat"
+ },
+ "MZ": {
+ "name": "Mosambic"
+ },
+ "MM": {
+ "name": "Myanmar"
+ },
+ "NA": {
+ "name": "Namibia"
+ },
+ "NR": {
+ "name": "Nauru"
+ },
+ "NP": {
+ "name": "Nepal"
+ },
+ "NI": {
+ "name": "Nicaragua"
+ },
+ "NE": {
+ "name": "Niger"
+ },
+ "NG": {
+ "name": "Nigeria"
+ },
+ "NU": {
+ "name": "Niue"
+ },
+ "NO": {
+ "name": "Norvegia"
+ },
+ "NC": {
+ "name": "Nova Caledonia"
+ },
+ "NZ": {
+ "name": "Nova Zelanda"
+ },
+ "OM": {
+ "name": "Oman"
+ },
+ "NL": {
+ "name": "Pajais Bass"
+ },
+ "PK": {
+ "name": "Pakistan"
+ },
+ "PW": {
+ "name": "Palau"
+ },
+ "PA": {
+ "name": "Panama"
+ },
+ "PG": {
+ "name": "Papua Nova Guinea"
+ },
+ "PY": {
+ "name": "Paraguai"
+ },
+ "PE": {
+ "name": "Peru"
+ },
+ "PN": {
+ "name": "Pitcairn"
+ },
+ "PF": {
+ "name": "Polinesia Franzosa"
+ },
+ "PL": {
+ "name": "Pologna"
+ },
+ "PT": {
+ "name": "Portugal"
+ },
+ "PR": {
+ "name": "Puerto Rico"
+ },
+ "GB": {
+ "name": "Reginavel Unì"
+ },
+ "HK": {
+ "name": "Regiun d’administraziun speziala da Hongkong, China"
+ },
+ "MO": {
+ "name": "Regiun d’administraziun speziala Macao, China"
+ },
+ "CF": {
+ "name": "Republica Centralafricana"
+ },
+ "CD": {
+ "name": "Republica Democratica dal Congo"
+ },
+ "DO": {
+ "name": "Republica Dominicana"
+ },
+ "CZ": {
+ "name": "Republica Tscheca"
+ },
+ "RE": {
+ "name": "Réunion"
+ },
+ "RW": {
+ "name": "Ruanda"
+ },
+ "RO": {
+ "name": "Rumenia"
+ },
+ "RU": {
+ "name": "Russia"
+ },
+ "EH": {
+ "name": "Sahara Occidentala"
+ },
+ "KN": {
+ "name": "Saint Kitts e Nevis"
+ },
+ "LC": {
+ "name": "Saint Lucia"
+ },
+ "MF": {
+ "name": "Saint Martin"
+ },
+ "PM": {
+ "name": "Saint Pierre e Miquelon"
+ },
+ "VC": {
+ "name": "Saint Vincent e las Grenadinas"
+ },
+ "SB": {
+ "name": "Salomonas"
+ },
+ "ZM": {
+ "name": "Sambia"
+ },
+ "WS": {
+ "name": "Samoa"
+ },
+ "AS": {
+ "name": "Samoa Americana"
+ },
+ "SM": {
+ "name": "San Marino"
+ },
+ "ST": {
+ "name": "São Tomé e Principe"
+ },
+ "SN": {
+ "name": "Senegal"
+ },
+ "RS": {
+ "name": "Serbia"
+ },
+ "SC": {
+ "name": "Seychellas"
+ },
+ "SL": {
+ "name": "Sierra Leone"
+ },
+ "ZW": {
+ "name": "Simbabwe"
+ },
+ "SG": {
+ "name": "Singapur"
+ },
+ "SX": {
+ "name": "Sint Maarten"
+ },
+ "SY": {
+ "name": "Siria"
+ },
+ "SK": {
+ "name": "Slovachia"
+ },
+ "SI": {
+ "name": "Slovenia"
+ },
+ "SO": {
+ "name": "Somalia"
+ },
+ "BL": {
+ "name": "Son Barthélemy"
+ },
+ "SH": {
+ "name": "Sontg’Elena"
+ },
+ "ES": {
+ "name": "Spagna"
+ },
+ "LK": {
+ "name": "Sri Lanka"
+ },
+ "US": {
+ "name": "Stadis Unids da l’America"
+ },
+ "SD": {
+ "name": "Sudan"
+ },
+ "SS": {
+ "name": "Sudan dal Sid"
+ },
+ "SR": {
+ "name": "Surinam"
+ },
+ "SJ": {
+ "name": "Svalbard e Jan Mayen"
+ },
+ "SE": {
+ "name": "Svezia"
+ },
+ "CH": {
+ "name": "Svizra"
+ },
+ "SZ": {
+ "name": "Swaziland"
+ },
+ "TJ": {
+ "name": "Tadschikistan"
+ },
+ "TH": {
+ "name": "Tailanda"
+ },
+ "TW": {
+ "name": "Taiwan"
+ },
+ "TZ": {
+ "name": "Tansania"
+ },
+ "IO": {
+ "name": "Territori Britannic en l’Ocean Indic"
+ },
+ "PS": {
+ "name": "Territori Palestinais"
+ },
+ "TF": {
+ "name": "Territoris Franzos Meridiunals"
+ },
+ "TL": {
+ "name": "Timor da l’Ost"
+ },
+ "TR": {
+ "name": "Tirchia"
+ },
+ "TG": {
+ "name": "Togo"
+ },
+ "TK": {
+ "name": "Tokelau"
+ },
+ "TO": {
+ "name": "Tonga"
+ },
+ "TT": {
+ "name": "Trinidad e Tobago"
+ },
+ "TA": {
+ "name": "Tristan da Cunha"
+ },
+ "TD": {
+ "name": "Tschad"
+ },
+ "TN": {
+ "name": "Tunesia"
+ },
+ "TM": {
+ "name": "Turkmenistan"
+ },
+ "TV": {
+ "name": "Tuvalu"
+ },
+ "UA": {
+ "name": "Ucraina"
+ },
+ "UG": {
+ "name": "Uganda"
+ },
+ "HU": {
+ "name": "Ungaria"
+ },
+ "UY": {
+ "name": "Uruguay"
+ },
+ "UZ": {
+ "name": "Usbekistan"
+ },
+ "VU": {
+ "name": "Vanuatu"
+ },
+ "VE": {
+ "name": "Venezuela"
+ },
+ "VN": {
+ "name": "Vietnam"
+ },
+ "WF": {
+ "name": "Wallis e Futuna"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/country/rn.json b/library/intl/resources/country/rn.json
new file mode 100644
index 000000000..cab94b8ef
--- /dev/null
+++ b/library/intl/resources/country/rn.json
@@ -0,0 +1,761 @@
+{
+ "AF": {
+ "name": "Afuganisitani"
+ },
+ "ZA": {
+ "name": "Afurika y’Epfo"
+ },
+ "AX": {
+ "name": "Ã…land Islands"
+ },
+ "DZ": {
+ "name": "Alijeriya"
+ },
+ "AL": {
+ "name": "Alubaniya"
+ },
+ "VI": {
+ "name": "Amazinga y’Isugi y’Abanyamerika"
+ },
+ "PH": {
+ "name": "Amazinga ya Filipine"
+ },
+ "MP": {
+ "name": "Amazinga ya Mariyana ryo mu majaruguru"
+ },
+ "RE": {
+ "name": "Amazinga ya Reyiniyo"
+ },
+ "SB": {
+ "name": "Amazinga ya Salumoni"
+ },
+ "SC": {
+ "name": "Amazinga ya Seyisheli"
+ },
+ "TC": {
+ "name": "Amazinga ya Turkisi na Cayikosi"
+ },
+ "AD": {
+ "name": "Andora"
+ },
+ "AO": {
+ "name": "Angola"
+ },
+ "AI": {
+ "name": "Angwila"
+ },
+ "AQ": {
+ "name": "Antarctica"
+ },
+ "AG": {
+ "name": "Antigwa na Baribuda"
+ },
+ "SA": {
+ "name": "Arabiya Sawudite"
+ },
+ "AR": {
+ "name": "Arijantine"
+ },
+ "AW": {
+ "name": "Aruba"
+ },
+ "AM": {
+ "name": "Arumeniya"
+ },
+ "AC": {
+ "name": "Ascension Island"
+ },
+ "IS": {
+ "name": "Ayisilandi"
+ },
+ "AZ": {
+ "name": "Azerubayijani"
+ },
+ "BS": {
+ "name": "Bahamasi"
+ },
+ "BH": {
+ "name": "Bahareyini"
+ },
+ "BD": {
+ "name": "Bangaladeshi"
+ },
+ "BB": {
+ "name": "Barubadosi"
+ },
+ "BY": {
+ "name": "Belausi"
+ },
+ "BZ": {
+ "name": "Belize"
+ },
+ "BJ": {
+ "name": "Bene"
+ },
+ "BM": {
+ "name": "Berimuda"
+ },
+ "MM": {
+ "name": "Birimaniya"
+ },
+ "BO": {
+ "name": "Boliviya"
+ },
+ "BA": {
+ "name": "Bosiniya na Herigozevine"
+ },
+ "BW": {
+ "name": "Botswana"
+ },
+ "BG": {
+ "name": "Buligariya"
+ },
+ "BR": {
+ "name": "Burezili"
+ },
+ "BF": {
+ "name": "Burukina Faso"
+ },
+ "BN": {
+ "name": "Buruneyi"
+ },
+ "BT": {
+ "name": "Butani"
+ },
+ "TD": {
+ "name": "Cadi"
+ },
+ "IC": {
+ "name": "Canary Islands"
+ },
+ "BQ": {
+ "name": "Caribbean Netherlands"
+ },
+ "EA": {
+ "name": "Ceuta & Melilla"
+ },
+ "CX": {
+ "name": "Christmas Island"
+ },
+ "CC": {
+ "name": "Cocos (Keeling) Islands"
+ },
+ "CW": {
+ "name": "Curaçao"
+ },
+ "DK": {
+ "name": "Danimariki"
+ },
+ "DG": {
+ "name": "Diego Garcia"
+ },
+ "DM": {
+ "name": "Dominika"
+ },
+ "EC": {
+ "name": "Ekwateri"
+ },
+ "SV": {
+ "name": "Eli Saluvatori"
+ },
+ "ER": {
+ "name": "Elitereya"
+ },
+ "EE": {
+ "name": "Esitoniya"
+ },
+ "ET": {
+ "name": "Etiyopiya"
+ },
+ "FO": {
+ "name": "Faroe Islands"
+ },
+ "FJ": {
+ "name": "Fiji"
+ },
+ "FI": {
+ "name": "Finilandi"
+ },
+ "TF": {
+ "name": "French Southern Territories"
+ },
+ "GA": {
+ "name": "Gabo"
+ },
+ "GM": {
+ "name": "Gambiya"
+ },
+ "GH": {
+ "name": "Gana"
+ },
+ "GD": {
+ "name": "Gerenada"
+ },
+ "GW": {
+ "name": "Gineya Bisawu"
+ },
+ "GQ": {
+ "name": "Gineya Ekwatoriyali"
+ },
+ "GG": {
+ "name": "Guernsey"
+ },
+ "GN": {
+ "name": "Guneya"
+ },
+ "GL": {
+ "name": "Gurunilandi"
+ },
+ "GY": {
+ "name": "Guyane"
+ },
+ "GP": {
+ "name": "Gwadelupe"
+ },
+ "GU": {
+ "name": "Gwamu"
+ },
+ "GT": {
+ "name": "Gwatemala"
+ },
+ "GF": {
+ "name": "Gwayana y’Abafaransa"
+ },
+ "HT": {
+ "name": "Hayiti"
+ },
+ "ES": {
+ "name": "Hisipaniya"
+ },
+ "HN": {
+ "name": "Hondurasi"
+ },
+ "HK": {
+ "name": "Hong Kong SAR China"
+ },
+ "HU": {
+ "name": "Hungariya"
+ },
+ "VG": {
+ "name": "Ibirwa by’isugi by’Abongereza"
+ },
+ "CV": {
+ "name": "Ibirwa bya Kapuveri"
+ },
+ "KY": {
+ "name": "Ibirwa bya Keyimani"
+ },
+ "UA": {
+ "name": "Ikerene"
+ },
+ "ID": {
+ "name": "Indoneziya"
+ },
+ "IO": {
+ "name": "Intara y’Ubwongereza yo mu birwa by’Abahindi"
+ },
+ "IQ": {
+ "name": "Iraki"
+ },
+ "IR": {
+ "name": "Irani"
+ },
+ "UY": {
+ "name": "Irigwe"
+ },
+ "IE": {
+ "name": "Irilandi"
+ },
+ "IL": {
+ "name": "Isiraheli"
+ },
+ "IM": {
+ "name": "Isle of Man"
+ },
+ "FK": {
+ "name": "Izinga rya Filikilandi"
+ },
+ "KM": {
+ "name": "Izinga rya Komore"
+ },
+ "CK": {
+ "name": "Izinga rya Kuku"
+ },
+ "MH": {
+ "name": "Izinga rya Marishari"
+ },
+ "MU": {
+ "name": "Izinga rya Morise"
+ },
+ "NF": {
+ "name": "izinga rya Norufoluke"
+ },
+ "CY": {
+ "name": "Izinga rya Shipure"
+ },
+ "JM": {
+ "name": "Jamayika"
+ },
+ "JE": {
+ "name": "Jersey"
+ },
+ "GE": {
+ "name": "Jeworujiya"
+ },
+ "DJ": {
+ "name": "Jibuti"
+ },
+ "GI": {
+ "name": "Juburalitari"
+ },
+ "KH": {
+ "name": "Kamboje"
+ },
+ "CM": {
+ "name": "Kameruni"
+ },
+ "CA": {
+ "name": "Kanada"
+ },
+ "QA": {
+ "name": "Katari"
+ },
+ "KZ": {
+ "name": "Kazakisitani"
+ },
+ "KE": {
+ "name": "Kenya"
+ },
+ "CU": {
+ "name": "Kiba"
+ },
+ "KI": {
+ "name": "Kiribati"
+ },
+ "KG": {
+ "name": "Kirigisitani"
+ },
+ "CO": {
+ "name": "Kolombiya"
+ },
+ "CG": {
+ "name": "Kongo"
+ },
+ "KP": {
+ "name": "Koreya y’amajaruguru"
+ },
+ "KR": {
+ "name": "Koreya y’amajepfo"
+ },
+ "HR": {
+ "name": "Korowasiya"
+ },
+ "CR": {
+ "name": "Kositarika"
+ },
+ "XK": {
+ "name": "Kosovo"
+ },
+ "CI": {
+ "name": "Kotedivuware"
+ },
+ "KW": {
+ "name": "Koweti"
+ },
+ "LV": {
+ "name": "Lativa"
+ },
+ "LA": {
+ "name": "Layosi"
+ },
+ "LS": {
+ "name": "Lesoto"
+ },
+ "AE": {
+ "name": "Leta Zunze Ubumwe z’Abarabu"
+ },
+ "US": {
+ "name": "Leta Zunze Ubumwe za Amerika"
+ },
+ "LB": {
+ "name": "Libani"
+ },
+ "LR": {
+ "name": "Liberiya"
+ },
+ "LY": {
+ "name": "Libiya"
+ },
+ "LI": {
+ "name": "Lishyitenshitayini"
+ },
+ "LT": {
+ "name": "Lituwaniya"
+ },
+ "LU": {
+ "name": "Lukusamburu"
+ },
+ "MO": {
+ "name": "Macau SAR China"
+ },
+ "MG": {
+ "name": "Madagasikari"
+ },
+ "MW": {
+ "name": "Malawi"
+ },
+ "MY": {
+ "name": "Maleziya"
+ },
+ "ML": {
+ "name": "Mali"
+ },
+ "MT": {
+ "name": "Malita"
+ },
+ "MQ": {
+ "name": "Maritiniki"
+ },
+ "MA": {
+ "name": "Maroke"
+ },
+ "MK": {
+ "name": "Masedoniya"
+ },
+ "YT": {
+ "name": "Mayote"
+ },
+ "MX": {
+ "name": "Migizike"
+ },
+ "FM": {
+ "name": "Mikoroniziya"
+ },
+ "EG": {
+ "name": "Misiri"
+ },
+ "MV": {
+ "name": "Moludave"
+ },
+ "MD": {
+ "name": "Moludavi"
+ },
+ "MC": {
+ "name": "Monako"
+ },
+ "MN": {
+ "name": "Mongoliya"
+ },
+ "ME": {
+ "name": "Montenegro"
+ },
+ "MS": {
+ "name": "Monteserati"
+ },
+ "MR": {
+ "name": "Moritaniya"
+ },
+ "MZ": {
+ "name": "Mozambiki"
+ },
+ "NA": {
+ "name": "Namibiya"
+ },
+ "NR": {
+ "name": "Nawuru"
+ },
+ "NP": {
+ "name": "Nepali"
+ },
+ "NE": {
+ "name": "Nijeri"
+ },
+ "NG": {
+ "name": "Nijeriya"
+ },
+ "NI": {
+ "name": "Nikaragwa"
+ },
+ "NC": {
+ "name": "Niyukaledoniya"
+ },
+ "NU": {
+ "name": "Niyuwe"
+ },
+ "NO": {
+ "name": "Noruveji"
+ },
+ "NZ": {
+ "name": "Nuvelizelandi"
+ },
+ "OM": {
+ "name": "Omani"
+ },
+ "AU": {
+ "name": "Ositaraliya"
+ },
+ "AT": {
+ "name": "Otirishe"
+ },
+ "PK": {
+ "name": "Pakisitani"
+ },
+ "PW": {
+ "name": "Palawu"
+ },
+ "PS": {
+ "name": "Palesitina Wesitibanka na Gaza"
+ },
+ "PA": {
+ "name": "Panama"
+ },
+ "PG": {
+ "name": "Papuwa Niyugineya"
+ },
+ "PY": {
+ "name": "Paragwe"
+ },
+ "PE": {
+ "name": "Peru"
+ },
+ "PN": {
+ "name": "Pitikeyirini"
+ },
+ "PF": {
+ "name": "Polineziya y’Abafaransa"
+ },
+ "PL": {
+ "name": "Polonye"
+ },
+ "PT": {
+ "name": "Porutugali"
+ },
+ "PR": {
+ "name": "Puwetoriko"
+ },
+ "CD": {
+ "name": "Repubulika Iharanira Demokarasi ya Kongo"
+ },
+ "CZ": {
+ "name": "Repubulika ya Ceke"
+ },
+ "DO": {
+ "name": "Repubulika ya Dominika"
+ },
+ "CF": {
+ "name": "Repubulika ya Santarafurika"
+ },
+ "RO": {
+ "name": "Rumaniya"
+ },
+ "WS": {
+ "name": "Samowa"
+ },
+ "AS": {
+ "name": "Samowa nyamerika"
+ },
+ "SM": {
+ "name": "Sanimarino"
+ },
+ "ST": {
+ "name": "Sawotome na Perensipe"
+ },
+ "SH": {
+ "name": "Sehelene"
+ },
+ "KN": {
+ "name": "Sekitsi na Nevisi"
+ },
+ "LC": {
+ "name": "Selusiya"
+ },
+ "PM": {
+ "name": "Sempiyeri na Mikeloni"
+ },
+ "SN": {
+ "name": "Senegali"
+ },
+ "RS": {
+ "name": "Serbia"
+ },
+ "VC": {
+ "name": "Sevensa na Gerenadine"
+ },
+ "CL": {
+ "name": "Shili"
+ },
+ "SK": {
+ "name": "Silovakiya"
+ },
+ "SI": {
+ "name": "Siloveniya"
+ },
+ "SG": {
+ "name": "Singapuru"
+ },
+ "SX": {
+ "name": "Sint Maarten"
+ },
+ "LK": {
+ "name": "Sirilanka"
+ },
+ "SY": {
+ "name": "Siriya"
+ },
+ "SL": {
+ "name": "Siyeralewone"
+ },
+ "SO": {
+ "name": "Somaliya"
+ },
+ "GS": {
+ "name": "South Georgia & South Sandwich Islands"
+ },
+ "SS": {
+ "name": "South Sudan"
+ },
+ "BL": {
+ "name": "St. Barthélemy"
+ },
+ "MF": {
+ "name": "St. Martin"
+ },
+ "SD": {
+ "name": "Sudani"
+ },
+ "SR": {
+ "name": "Suriname"
+ },
+ "SZ": {
+ "name": "Suwazilandi"
+ },
+ "SE": {
+ "name": "Suwedi"
+ },
+ "SJ": {
+ "name": "Svalbard & Jan Mayen"
+ },
+ "TJ": {
+ "name": "Tajikisitani"
+ },
+ "TZ": {
+ "name": "Tanzaniya"
+ },
+ "TH": {
+ "name": "Tayilandi"
+ },
+ "TW": {
+ "name": "Tayiwani"
+ },
+ "TL": {
+ "name": "Timoru y’iburasirazuba"
+ },
+ "TT": {
+ "name": "Tirinidadi na Tobago"
+ },
+ "TG": {
+ "name": "Togo"
+ },
+ "TK": {
+ "name": "Tokelawu"
+ },
+ "TO": {
+ "name": "Tonga"
+ },
+ "TA": {
+ "name": "Tristan da Cunha"
+ },
+ "TN": {
+ "name": "Tuniziya"
+ },
+ "TR": {
+ "name": "Turukiya"
+ },
+ "TM": {
+ "name": "Turukumenisitani"
+ },
+ "TV": {
+ "name": "Tuvalu"
+ },
+ "RW": {
+ "name": "u Rwanda"
+ },
+ "UM": {
+ "name": "U.S. Outlying Islands"
+ },
+ "BE": {
+ "name": "Ububiligi"
+ },
+ "DE": {
+ "name": "Ubudage"
+ },
+ "FR": {
+ "name": "Ubufaransa"
+ },
+ "UG": {
+ "name": "Ubugande"
+ },
+ "GR": {
+ "name": "Ubugereki"
+ },
+ "IN": {
+ "name": "Ubuhindi"
+ },
+ "NL": {
+ "name": "Ubuholandi"
+ },
+ "BI": {
+ "name": "Uburundi"
+ },
+ "RU": {
+ "name": "Uburusiya"
+ },
+ "CN": {
+ "name": "Ubushinwa"
+ },
+ "CH": {
+ "name": "Ubusuwisi"
+ },
+ "IT": {
+ "name": "Ubutaliyani"
+ },
+ "JP": {
+ "name": "Ubuyapani"
+ },
+ "GB": {
+ "name": "Ubwongereza"
+ },
+ "VA": {
+ "name": "Umurwa wa Vatikani"
+ },
+ "UZ": {
+ "name": "Uzubekisitani"
+ },
+ "VU": {
+ "name": "Vanuwatu"
+ },
+ "VE": {
+ "name": "Venezuwela"
+ },
+ "VN": {
+ "name": "Viyetinamu"
+ },
+ "WF": {
+ "name": "Walisi na Futuna"
+ },
+ "EH": {
+ "name": "Western Sahara"
+ },
+ "YE": {
+ "name": "Yemeni"
+ },
+ "JO": {
+ "name": "Yorudaniya"
+ },
+ "ZM": {
+ "name": "Zambiya"
+ },
+ "ZW": {
+ "name": "Zimbabwe"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/country/ro.json b/library/intl/resources/country/ro.json
new file mode 100644
index 000000000..acf273ae4
--- /dev/null
+++ b/library/intl/resources/country/ro.json
@@ -0,0 +1,761 @@
+{
+ "AF": {
+ "name": "Afganistan"
+ },
+ "ZA": {
+ "name": "Africa de Sud"
+ },
+ "AL": {
+ "name": "Albania"
+ },
+ "DZ": {
+ "name": "Algeria"
+ },
+ "AD": {
+ "name": "Andorra"
+ },
+ "AO": {
+ "name": "Angola"
+ },
+ "AI": {
+ "name": "Anguilla"
+ },
+ "AQ": {
+ "name": "Antarctica"
+ },
+ "AG": {
+ "name": "Antigua și Barbuda"
+ },
+ "SA": {
+ "name": "Arabia Saudită"
+ },
+ "AR": {
+ "name": "Argentina"
+ },
+ "AM": {
+ "name": "Armenia"
+ },
+ "AW": {
+ "name": "Aruba"
+ },
+ "AU": {
+ "name": "Australia"
+ },
+ "AT": {
+ "name": "Austria"
+ },
+ "AZ": {
+ "name": "Azerbaidjan"
+ },
+ "BS": {
+ "name": "Bahamas"
+ },
+ "BH": {
+ "name": "Bahrain"
+ },
+ "BD": {
+ "name": "Bangladesh"
+ },
+ "BB": {
+ "name": "Barbados"
+ },
+ "BY": {
+ "name": "Belarus"
+ },
+ "BE": {
+ "name": "Belgia"
+ },
+ "BZ": {
+ "name": "Belize"
+ },
+ "BJ": {
+ "name": "Benin"
+ },
+ "BM": {
+ "name": "Bermuda"
+ },
+ "BT": {
+ "name": "Bhutan"
+ },
+ "BO": {
+ "name": "Bolivia"
+ },
+ "BA": {
+ "name": "Bosnia și Herțegovina"
+ },
+ "BW": {
+ "name": "Botswana"
+ },
+ "BR": {
+ "name": "Brazilia"
+ },
+ "BN": {
+ "name": "Brunei"
+ },
+ "BG": {
+ "name": "Bulgaria"
+ },
+ "BF": {
+ "name": "Burkina Faso"
+ },
+ "BI": {
+ "name": "Burundi"
+ },
+ "KH": {
+ "name": "Cambodgia"
+ },
+ "CM": {
+ "name": "Camerun"
+ },
+ "CA": {
+ "name": "Canada"
+ },
+ "CV": {
+ "name": "Capul Verde"
+ },
+ "EA": {
+ "name": "Ceuta și Melilla"
+ },
+ "CL": {
+ "name": "Chile"
+ },
+ "CN": {
+ "name": "China"
+ },
+ "TD": {
+ "name": "Ciad"
+ },
+ "CY": {
+ "name": "Cipru"
+ },
+ "CO": {
+ "name": "Columbia"
+ },
+ "KM": {
+ "name": "Comore"
+ },
+ "CG": {
+ "name": "Congo - Brazzaville"
+ },
+ "CD": {
+ "name": "Congo - Kinshasa"
+ },
+ "KP": {
+ "name": "Coreea de Nord"
+ },
+ "KR": {
+ "name": "Coreea de Sud"
+ },
+ "CR": {
+ "name": "Costa Rica"
+ },
+ "CI": {
+ "name": "Côte d’Ivoire"
+ },
+ "HR": {
+ "name": "Croația"
+ },
+ "CU": {
+ "name": "Cuba"
+ },
+ "CW": {
+ "name": "Curaçao"
+ },
+ "DK": {
+ "name": "Danemarca"
+ },
+ "DG": {
+ "name": "Diego Garcia"
+ },
+ "DJ": {
+ "name": "Djibouti"
+ },
+ "DM": {
+ "name": "Dominica"
+ },
+ "EC": {
+ "name": "Ecuador"
+ },
+ "EG": {
+ "name": "Egipt"
+ },
+ "SV": {
+ "name": "El Salvador"
+ },
+ "CH": {
+ "name": "Elveția"
+ },
+ "AE": {
+ "name": "Emiratele Arabe Unite"
+ },
+ "ER": {
+ "name": "Eritreea"
+ },
+ "EE": {
+ "name": "Estonia"
+ },
+ "ET": {
+ "name": "Etiopia"
+ },
+ "FJ": {
+ "name": "Fiji"
+ },
+ "PH": {
+ "name": "Filipine"
+ },
+ "FI": {
+ "name": "Finlanda"
+ },
+ "FR": {
+ "name": "Franța"
+ },
+ "GA": {
+ "name": "Gabon"
+ },
+ "GM": {
+ "name": "Gambia"
+ },
+ "GE": {
+ "name": "Georgia"
+ },
+ "GS": {
+ "name": "Georgia de Sud și Insulele Sandwich de Sud"
+ },
+ "DE": {
+ "name": "Germania"
+ },
+ "GH": {
+ "name": "Ghana"
+ },
+ "GI": {
+ "name": "Gibraltar"
+ },
+ "GR": {
+ "name": "Grecia"
+ },
+ "GD": {
+ "name": "Grenada"
+ },
+ "GL": {
+ "name": "Groenlanda"
+ },
+ "GP": {
+ "name": "Guadelupa"
+ },
+ "GU": {
+ "name": "Guam"
+ },
+ "GT": {
+ "name": "Guatemala"
+ },
+ "GG": {
+ "name": "Guernsey"
+ },
+ "GN": {
+ "name": "Guineea"
+ },
+ "GQ": {
+ "name": "Guineea Ecuatorială"
+ },
+ "GW": {
+ "name": "Guineea-Bissau"
+ },
+ "GY": {
+ "name": "Guyana"
+ },
+ "GF": {
+ "name": "Guyana Franceză"
+ },
+ "HT": {
+ "name": "Haiti"
+ },
+ "HN": {
+ "name": "Honduras"
+ },
+ "IN": {
+ "name": "India"
+ },
+ "ID": {
+ "name": "Indonezia"
+ },
+ "AC": {
+ "name": "Insula Ascension"
+ },
+ "CX": {
+ "name": "Insula Christmas"
+ },
+ "IM": {
+ "name": "Insula Man"
+ },
+ "AX": {
+ "name": "Insulele Ã…land"
+ },
+ "IC": {
+ "name": "Insulele Canare"
+ },
+ "BQ": {
+ "name": "Insulele Caraibe Olandeze"
+ },
+ "KY": {
+ "name": "Insulele Cayman"
+ },
+ "CC": {
+ "name": "Insulele Cocos (Keeling)"
+ },
+ "CK": {
+ "name": "Insulele Cook"
+ },
+ "FK": {
+ "name": "Insulele Falkland"
+ },
+ "FO": {
+ "name": "Insulele Feroe"
+ },
+ "UM": {
+ "name": "Insulele Îndepărtate ale S.U.A."
+ },
+ "MP": {
+ "name": "Insulele Mariane de Nord"
+ },
+ "MH": {
+ "name": "Insulele Marshall"
+ },
+ "NF": {
+ "name": "Insulele Norfolk"
+ },
+ "PN": {
+ "name": "Insulele Pitcairn"
+ },
+ "SB": {
+ "name": "Insulele Solomon"
+ },
+ "TC": {
+ "name": "Insulele Turks și Caicos"
+ },
+ "VG": {
+ "name": "Insulele Virgine Britanice"
+ },
+ "VI": {
+ "name": "Insulele Virgine S.U.A."
+ },
+ "JO": {
+ "name": "Iordania"
+ },
+ "IQ": {
+ "name": "Irak"
+ },
+ "IR": {
+ "name": "Iran"
+ },
+ "IE": {
+ "name": "Irlanda"
+ },
+ "IS": {
+ "name": "Islanda"
+ },
+ "IL": {
+ "name": "Israel"
+ },
+ "IT": {
+ "name": "Italia"
+ },
+ "JM": {
+ "name": "Jamaica"
+ },
+ "JP": {
+ "name": "Japonia"
+ },
+ "JE": {
+ "name": "Jersey"
+ },
+ "KZ": {
+ "name": "Kazahstan"
+ },
+ "KG": {
+ "name": "Kârgâzstan"
+ },
+ "KE": {
+ "name": "Kenya"
+ },
+ "KI": {
+ "name": "Kiribati"
+ },
+ "XK": {
+ "name": "Kosovo"
+ },
+ "KW": {
+ "name": "Kuweit"
+ },
+ "LA": {
+ "name": "Laos"
+ },
+ "LS": {
+ "name": "Lesotho"
+ },
+ "LV": {
+ "name": "Letonia"
+ },
+ "LB": {
+ "name": "Liban"
+ },
+ "LR": {
+ "name": "Liberia"
+ },
+ "LY": {
+ "name": "Libia"
+ },
+ "LI": {
+ "name": "Liechtenstein"
+ },
+ "LT": {
+ "name": "Lituania"
+ },
+ "LU": {
+ "name": "Luxemburg"
+ },
+ "MK": {
+ "name": "Macedonia"
+ },
+ "MG": {
+ "name": "Madagascar"
+ },
+ "MY": {
+ "name": "Malaezia"
+ },
+ "MW": {
+ "name": "Malawi"
+ },
+ "MV": {
+ "name": "Maldive"
+ },
+ "ML": {
+ "name": "Mali"
+ },
+ "MT": {
+ "name": "Malta"
+ },
+ "MA": {
+ "name": "Maroc"
+ },
+ "MQ": {
+ "name": "Martinica"
+ },
+ "MR": {
+ "name": "Mauritania"
+ },
+ "MU": {
+ "name": "Mauritius"
+ },
+ "YT": {
+ "name": "Mayotte"
+ },
+ "MX": {
+ "name": "Mexic"
+ },
+ "FM": {
+ "name": "Micronezia"
+ },
+ "MC": {
+ "name": "Monaco"
+ },
+ "MN": {
+ "name": "Mongolia"
+ },
+ "MS": {
+ "name": "Montserrat"
+ },
+ "MZ": {
+ "name": "Mozambic"
+ },
+ "ME": {
+ "name": "Muntenegru"
+ },
+ "MM": {
+ "name": "Myanmar (Birmania)"
+ },
+ "NA": {
+ "name": "Namibia"
+ },
+ "NR": {
+ "name": "Nauru"
+ },
+ "NP": {
+ "name": "Nepal"
+ },
+ "NI": {
+ "name": "Nicaragua"
+ },
+ "NE": {
+ "name": "Niger"
+ },
+ "NG": {
+ "name": "Nigeria"
+ },
+ "NU": {
+ "name": "Niue"
+ },
+ "NO": {
+ "name": "Norvegia"
+ },
+ "NC": {
+ "name": "Noua Caledonie"
+ },
+ "NZ": {
+ "name": "Noua Zeelandă"
+ },
+ "OM": {
+ "name": "Oman"
+ },
+ "PK": {
+ "name": "Pakistan"
+ },
+ "PW": {
+ "name": "Palau"
+ },
+ "PA": {
+ "name": "Panama"
+ },
+ "PG": {
+ "name": "Papua-Noua Guinee"
+ },
+ "PY": {
+ "name": "Paraguay"
+ },
+ "PE": {
+ "name": "Peru"
+ },
+ "PF": {
+ "name": "Polinezia Franceză"
+ },
+ "PL": {
+ "name": "Polonia"
+ },
+ "PT": {
+ "name": "Portugalia"
+ },
+ "PR": {
+ "name": "Puerto Rico"
+ },
+ "QA": {
+ "name": "Qatar"
+ },
+ "HK": {
+ "name": "R.A.S. Hong Kong a Chinei"
+ },
+ "MO": {
+ "name": "R.A.S. Macao a Chinei"
+ },
+ "GB": {
+ "name": "Regatul Unit"
+ },
+ "CZ": {
+ "name": "Republica Cehă"
+ },
+ "CF": {
+ "name": "Republica Centrafricană"
+ },
+ "DO": {
+ "name": "Republica Dominicană"
+ },
+ "MD": {
+ "name": "Republica Moldova"
+ },
+ "RE": {
+ "name": "Réunion"
+ },
+ "RO": {
+ "name": "România"
+ },
+ "RU": {
+ "name": "Rusia"
+ },
+ "RW": {
+ "name": "Rwanda"
+ },
+ "EH": {
+ "name": "Sahara Occidentală"
+ },
+ "KN": {
+ "name": "Saint Kitts și Nevis"
+ },
+ "VC": {
+ "name": "Saint Vincent și Grenadine"
+ },
+ "PM": {
+ "name": "Saint-Pierre și Miquelon"
+ },
+ "WS": {
+ "name": "Samoa"
+ },
+ "AS": {
+ "name": "Samoa Americană"
+ },
+ "SM": {
+ "name": "San Marino"
+ },
+ "ST": {
+ "name": "Sao Tome și Principe"
+ },
+ "SN": {
+ "name": "Senegal"
+ },
+ "RS": {
+ "name": "Serbia"
+ },
+ "SC": {
+ "name": "Seychelles"
+ },
+ "SH": {
+ "name": "Sfânta Elena"
+ },
+ "LC": {
+ "name": "Sfânta Lucia"
+ },
+ "BL": {
+ "name": "Sfântul Bartolomeu"
+ },
+ "MF": {
+ "name": "Sfântul Martin"
+ },
+ "SL": {
+ "name": "Sierra Leone"
+ },
+ "SG": {
+ "name": "Singapore"
+ },
+ "SX": {
+ "name": "Sint-Maarten"
+ },
+ "SY": {
+ "name": "Siria"
+ },
+ "SK": {
+ "name": "Slovacia"
+ },
+ "SI": {
+ "name": "Slovenia"
+ },
+ "SO": {
+ "name": "Somalia"
+ },
+ "ES": {
+ "name": "Spania"
+ },
+ "LK": {
+ "name": "Sri Lanka"
+ },
+ "US": {
+ "name": "Statele Unite ale Americii"
+ },
+ "VA": {
+ "name": "Statul Cetății Vaticanului"
+ },
+ "SD": {
+ "name": "Sudan"
+ },
+ "SS": {
+ "name": "Sudanul de Sud"
+ },
+ "SE": {
+ "name": "Suedia"
+ },
+ "SR": {
+ "name": "Surinam"
+ },
+ "SJ": {
+ "name": "Svalbard și Jan Mayen"
+ },
+ "SZ": {
+ "name": "Swaziland"
+ },
+ "TJ": {
+ "name": "Tadjikistan"
+ },
+ "TW": {
+ "name": "Taiwan"
+ },
+ "TZ": {
+ "name": "Tanzania"
+ },
+ "TF": {
+ "name": "Teritoriile Australe și Antarctice Franceze"
+ },
+ "PS": {
+ "name": "Teritoriile Palestiniene"
+ },
+ "IO": {
+ "name": "Teritoriul Britanic din Oceanul Indian"
+ },
+ "TH": {
+ "name": "Thailanda"
+ },
+ "TL": {
+ "name": "Timorul de Est"
+ },
+ "TG": {
+ "name": "Togo"
+ },
+ "TK": {
+ "name": "Tokelau"
+ },
+ "TO": {
+ "name": "Tonga"
+ },
+ "TT": {
+ "name": "Trinidad și Tobago"
+ },
+ "TA": {
+ "name": "Tristan da Cunha"
+ },
+ "TN": {
+ "name": "Tunisia"
+ },
+ "TR": {
+ "name": "Turcia"
+ },
+ "TM": {
+ "name": "Turkmenistan"
+ },
+ "TV": {
+ "name": "Tuvalu"
+ },
+ "NL": {
+ "name": "Țările de Jos"
+ },
+ "UA": {
+ "name": "Ucraina"
+ },
+ "UG": {
+ "name": "Uganda"
+ },
+ "HU": {
+ "name": "Ungaria"
+ },
+ "UY": {
+ "name": "Uruguay"
+ },
+ "UZ": {
+ "name": "Uzbekistan"
+ },
+ "VU": {
+ "name": "Vanuatu"
+ },
+ "VE": {
+ "name": "Venezuela"
+ },
+ "VN": {
+ "name": "Vietnam"
+ },
+ "WF": {
+ "name": "Wallis și Futuna"
+ },
+ "YE": {
+ "name": "Yemen"
+ },
+ "ZM": {
+ "name": "Zambia"
+ },
+ "ZW": {
+ "name": "Zimbabwe"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/country/rof.json b/library/intl/resources/country/rof.json
new file mode 100644
index 000000000..d88a1bcc7
--- /dev/null
+++ b/library/intl/resources/country/rof.json
@@ -0,0 +1,761 @@
+{
+ "ZA": {
+ "name": "Afrika Kusini"
+ },
+ "AF": {
+ "name": "Afuganistani"
+ },
+ "IS": {
+ "name": "Aislandi"
+ },
+ "AR": {
+ "name": "Ajentina"
+ },
+ "AX": {
+ "name": "Ã…land Islands"
+ },
+ "AL": {
+ "name": "Albania"
+ },
+ "DZ": {
+ "name": "Aljeria"
+ },
+ "AM": {
+ "name": "Amenia"
+ },
+ "AD": {
+ "name": "Andoro"
+ },
+ "AO": {
+ "name": "Angolo"
+ },
+ "AI": {
+ "name": "Anguila"
+ },
+ "AQ": {
+ "name": "Antarctica"
+ },
+ "AG": {
+ "name": "Antigua na Babuda"
+ },
+ "AW": {
+ "name": "Aruba"
+ },
+ "AC": {
+ "name": "Ascension Island"
+ },
+ "AU": {
+ "name": "Australia"
+ },
+ "IE": {
+ "name": "Ayalandi"
+ },
+ "AZ": {
+ "name": "Azabajani"
+ },
+ "BB": {
+ "name": "Babado"
+ },
+ "BS": {
+ "name": "Bahamasi"
+ },
+ "BH": {
+ "name": "Bahareni"
+ },
+ "BD": {
+ "name": "Bangladeshi"
+ },
+ "BY": {
+ "name": "Belarusi"
+ },
+ "BZ": {
+ "name": "Belize"
+ },
+ "BJ": {
+ "name": "Benini"
+ },
+ "BM": {
+ "name": "Bermuda"
+ },
+ "BO": {
+ "name": "Bolivia"
+ },
+ "BA": {
+ "name": "Bosnia na Hezegovina"
+ },
+ "BW": {
+ "name": "Botswana"
+ },
+ "BR": {
+ "name": "Brazili"
+ },
+ "BN": {
+ "name": "Brunei"
+ },
+ "BF": {
+ "name": "Bukinafaso"
+ },
+ "MG": {
+ "name": "Bukini"
+ },
+ "BG": {
+ "name": "Bulgaria"
+ },
+ "BI": {
+ "name": "Burundi"
+ },
+ "BT": {
+ "name": "Butani"
+ },
+ "IC": {
+ "name": "Canary Islands"
+ },
+ "BQ": {
+ "name": "Caribbean Netherlands"
+ },
+ "EA": {
+ "name": "Ceuta & Melilla"
+ },
+ "TD": {
+ "name": "Chadi"
+ },
+ "CL": {
+ "name": "Chile"
+ },
+ "CN": {
+ "name": "China"
+ },
+ "CX": {
+ "name": "Christmas Island"
+ },
+ "CC": {
+ "name": "Cocos (Keeling) Islands"
+ },
+ "CW": {
+ "name": "Curaçao"
+ },
+ "DK": {
+ "name": "Denmaki"
+ },
+ "DG": {
+ "name": "Diego Garcia"
+ },
+ "DM": {
+ "name": "Dominika"
+ },
+ "EC": {
+ "name": "Ekwado"
+ },
+ "SV": {
+ "name": "Elsavado"
+ },
+ "IO": {
+ "name": "Eneo la Uingereza katika Bahari Hindi"
+ },
+ "ER": {
+ "name": "Eritrea"
+ },
+ "EE": {
+ "name": "Estonia"
+ },
+ "AE": {
+ "name": "Falme za Kiarabu"
+ },
+ "FO": {
+ "name": "Faroe Islands"
+ },
+ "FJ": {
+ "name": "Fiji"
+ },
+ "PH": {
+ "name": "Filipino"
+ },
+ "TF": {
+ "name": "French Southern Territories"
+ },
+ "GA": {
+ "name": "Gaboni"
+ },
+ "GM": {
+ "name": "Gambia"
+ },
+ "GH": {
+ "name": "Ghana"
+ },
+ "GN": {
+ "name": "Gine"
+ },
+ "GW": {
+ "name": "Ginebisau"
+ },
+ "GQ": {
+ "name": "Ginekweta"
+ },
+ "GD": {
+ "name": "Grenada"
+ },
+ "GL": {
+ "name": "Grinlandi"
+ },
+ "GG": {
+ "name": "Guernsey"
+ },
+ "GY": {
+ "name": "Guyana"
+ },
+ "GP": {
+ "name": "Gwadelupe"
+ },
+ "GU": {
+ "name": "Gwam"
+ },
+ "GT": {
+ "name": "Gwatemala"
+ },
+ "GF": {
+ "name": "Gwiyana ya Ufaransa"
+ },
+ "HT": {
+ "name": "Haiti"
+ },
+ "ES": {
+ "name": "Hispania"
+ },
+ "HN": {
+ "name": "Hondurasi"
+ },
+ "HK": {
+ "name": "Hong Kong SAR China"
+ },
+ "HU": {
+ "name": "Hungaria"
+ },
+ "IN": {
+ "name": "India"
+ },
+ "ID": {
+ "name": "Indonesia"
+ },
+ "IQ": {
+ "name": "Iraki"
+ },
+ "IM": {
+ "name": "Isle of Man"
+ },
+ "IL": {
+ "name": "Israeli"
+ },
+ "IT": {
+ "name": "Italia"
+ },
+ "JM": {
+ "name": "Jamaika"
+ },
+ "CF": {
+ "name": "Jamhuri ya Afrika ya Kati"
+ },
+ "CZ": {
+ "name": "Jamhuri ya Cheki"
+ },
+ "DO": {
+ "name": "Jamhuri ya Dominika"
+ },
+ "CD": {
+ "name": "Jamhuri ya Kidemokrasia ya Kongo"
+ },
+ "JP": {
+ "name": "Japani"
+ },
+ "JE": {
+ "name": "Jersey"
+ },
+ "GI": {
+ "name": "Jibralta"
+ },
+ "DJ": {
+ "name": "Jibuti"
+ },
+ "GE": {
+ "name": "Jojia"
+ },
+ "KH": {
+ "name": "Kambodia"
+ },
+ "CM": {
+ "name": "Kameruni"
+ },
+ "CA": {
+ "name": "Kanada"
+ },
+ "QA": {
+ "name": "Katari"
+ },
+ "KZ": {
+ "name": "Kazakistani"
+ },
+ "KE": {
+ "name": "Kenya"
+ },
+ "CV": {
+ "name": "Kepuvede"
+ },
+ "KI": {
+ "name": "Kiribati"
+ },
+ "KG": {
+ "name": "Kirigizistani"
+ },
+ "NF": {
+ "name": "Kisiwa cha Norfok"
+ },
+ "CI": {
+ "name": "Kodivaa"
+ },
+ "CO": {
+ "name": "Kolombia"
+ },
+ "KM": {
+ "name": "Komoro"
+ },
+ "CG": {
+ "name": "Kongo"
+ },
+ "HR": {
+ "name": "Korasia"
+ },
+ "KP": {
+ "name": "Korea Kaskazini"
+ },
+ "KR": {
+ "name": "Korea Kusini"
+ },
+ "XK": {
+ "name": "Kosovo"
+ },
+ "CR": {
+ "name": "Kostarika"
+ },
+ "CU": {
+ "name": "Kuba"
+ },
+ "CY": {
+ "name": "Kuprosi"
+ },
+ "KW": {
+ "name": "Kuwaiti"
+ },
+ "LA": {
+ "name": "Laosi"
+ },
+ "LU": {
+ "name": "Lasembagi"
+ },
+ "LV": {
+ "name": "Lativia"
+ },
+ "LB": {
+ "name": "Lebanoni"
+ },
+ "LS": {
+ "name": "Lesoto"
+ },
+ "LR": {
+ "name": "Liberia"
+ },
+ "LY": {
+ "name": "Libya"
+ },
+ "LI": {
+ "name": "Lishenteni"
+ },
+ "LT": {
+ "name": "Litwania"
+ },
+ "MO": {
+ "name": "Macau SAR China"
+ },
+ "MW": {
+ "name": "Malawi"
+ },
+ "MY": {
+ "name": "Malesia"
+ },
+ "ML": {
+ "name": "Mali"
+ },
+ "MT": {
+ "name": "Malta"
+ },
+ "US": {
+ "name": "Marekani"
+ },
+ "MQ": {
+ "name": "Martiniki"
+ },
+ "MK": {
+ "name": "Masedonia"
+ },
+ "YT": {
+ "name": "Mayotte"
+ },
+ "MX": {
+ "name": "Meksiko"
+ },
+ "FM": {
+ "name": "Mikronesia"
+ },
+ "EG": {
+ "name": "Misri"
+ },
+ "MV": {
+ "name": "Modivu"
+ },
+ "MD": {
+ "name": "Moldova"
+ },
+ "MC": {
+ "name": "Monako"
+ },
+ "MN": {
+ "name": "Mongolia"
+ },
+ "ME": {
+ "name": "Montenegro"
+ },
+ "MS": {
+ "name": "Montserrati"
+ },
+ "MU": {
+ "name": "Morisi"
+ },
+ "MR": {
+ "name": "Moritania"
+ },
+ "MA": {
+ "name": "Moroko"
+ },
+ "MZ": {
+ "name": "Msumbiji"
+ },
+ "MM": {
+ "name": "Myama"
+ },
+ "NA": {
+ "name": "Namibia"
+ },
+ "NR": {
+ "name": "Nauru"
+ },
+ "NP": {
+ "name": "Nepali"
+ },
+ "NE": {
+ "name": "Nijeri"
+ },
+ "NG": {
+ "name": "Nijeria"
+ },
+ "NI": {
+ "name": "Nikaragwa"
+ },
+ "NU": {
+ "name": "Niue"
+ },
+ "NO": {
+ "name": "Norwe"
+ },
+ "NC": {
+ "name": "Nyukaledonia"
+ },
+ "NZ": {
+ "name": "Nyuzilandi"
+ },
+ "OM": {
+ "name": "Omani"
+ },
+ "AT": {
+ "name": "Ostria"
+ },
+ "PK": {
+ "name": "Pakistani"
+ },
+ "PW": {
+ "name": "Palau"
+ },
+ "PA": {
+ "name": "Panama"
+ },
+ "PG": {
+ "name": "Papua"
+ },
+ "PY": {
+ "name": "Paragwai"
+ },
+ "PE": {
+ "name": "Peru"
+ },
+ "PN": {
+ "name": "Pitkairni"
+ },
+ "PL": {
+ "name": "Polandi"
+ },
+ "PF": {
+ "name": "Polinesia ya Ufaransa"
+ },
+ "PR": {
+ "name": "Pwetoriko"
+ },
+ "RE": {
+ "name": "Riyunioni"
+ },
+ "RO": {
+ "name": "Romania"
+ },
+ "RW": {
+ "name": "Rwanda"
+ },
+ "SM": {
+ "name": "Samarino"
+ },
+ "WS": {
+ "name": "Samoa"
+ },
+ "AS": {
+ "name": "Samoa ya Marekani"
+ },
+ "SH": {
+ "name": "Santahelena"
+ },
+ "KN": {
+ "name": "Santakitzi na Nevis"
+ },
+ "LC": {
+ "name": "Santalusia"
+ },
+ "PM": {
+ "name": "Santapieri na Mikeloni"
+ },
+ "VC": {
+ "name": "Santavisenti na Grenadini"
+ },
+ "ST": {
+ "name": "Sao Tome na Principe"
+ },
+ "SA": {
+ "name": "Saudi"
+ },
+ "SN": {
+ "name": "Senegali"
+ },
+ "RS": {
+ "name": "Serbia"
+ },
+ "SC": {
+ "name": "Shelisheli"
+ },
+ "SL": {
+ "name": "Siera Leoni"
+ },
+ "SG": {
+ "name": "Singapoo"
+ },
+ "SX": {
+ "name": "Sint Maarten"
+ },
+ "SY": {
+ "name": "Siria"
+ },
+ "LK": {
+ "name": "Sirilanka"
+ },
+ "SK": {
+ "name": "Slovakia"
+ },
+ "SI": {
+ "name": "Slovenia"
+ },
+ "SO": {
+ "name": "Somalia"
+ },
+ "GS": {
+ "name": "South Georgia & South Sandwich Islands"
+ },
+ "SS": {
+ "name": "South Sudan"
+ },
+ "BL": {
+ "name": "St. Barthélemy"
+ },
+ "MF": {
+ "name": "St. Martin"
+ },
+ "SD": {
+ "name": "Sudani"
+ },
+ "SR": {
+ "name": "Surinamu"
+ },
+ "SJ": {
+ "name": "Svalbard & Jan Mayen"
+ },
+ "TH": {
+ "name": "Tailandi"
+ },
+ "TW": {
+ "name": "Taiwani"
+ },
+ "TJ": {
+ "name": "Tajikistani"
+ },
+ "TZ": {
+ "name": "Tanzania"
+ },
+ "TL": {
+ "name": "Timori ya Mashariki"
+ },
+ "TG": {
+ "name": "Togo"
+ },
+ "TK": {
+ "name": "Tokelau"
+ },
+ "TO": {
+ "name": "Tonga"
+ },
+ "TT": {
+ "name": "Trinidad na Tobago"
+ },
+ "TA": {
+ "name": "Tristan da Cunha"
+ },
+ "TN": {
+ "name": "Tunisia"
+ },
+ "TM": {
+ "name": "Turukimenistani"
+ },
+ "TV": {
+ "name": "Tuvalu"
+ },
+ "UM": {
+ "name": "U.S. Outlying Islands"
+ },
+ "IR": {
+ "name": "Uajemi"
+ },
+ "BE": {
+ "name": "Ubelgiji"
+ },
+ "FR": {
+ "name": "Ufaransa"
+ },
+ "FI": {
+ "name": "Ufini"
+ },
+ "UG": {
+ "name": "Uganda"
+ },
+ "GR": {
+ "name": "Ugiriki"
+ },
+ "ET": {
+ "name": "Uhabeshi"
+ },
+ "NL": {
+ "name": "Uholanzi"
+ },
+ "GB": {
+ "name": "Uingereza"
+ },
+ "DE": {
+ "name": "Ujerumani"
+ },
+ "PS": {
+ "name": "Ukingo wa Magharibi na Ukanda wa Gaza wa Palestina"
+ },
+ "UA": {
+ "name": "Ukraini"
+ },
+ "PT": {
+ "name": "Ureno"
+ },
+ "UY": {
+ "name": "Urugwai"
+ },
+ "RU": {
+ "name": "Urusi"
+ },
+ "SZ": {
+ "name": "Uswazi"
+ },
+ "SE": {
+ "name": "Uswidi"
+ },
+ "CH": {
+ "name": "Uswisi"
+ },
+ "TR": {
+ "name": "Uturuki"
+ },
+ "UZ": {
+ "name": "Uzibekistani"
+ },
+ "VU": {
+ "name": "Vanuatu"
+ },
+ "VA": {
+ "name": "Vatikani"
+ },
+ "VE": {
+ "name": "Venezuela"
+ },
+ "VN": {
+ "name": "Vietinamu"
+ },
+ "CK": {
+ "name": "Visiwa vya Cook"
+ },
+ "FK": {
+ "name": "Visiwa vya Falkland"
+ },
+ "KY": {
+ "name": "Visiwa vya Kaimai"
+ },
+ "MP": {
+ "name": "Visiwa vya Mariana vya Kaskazini"
+ },
+ "MH": {
+ "name": "Visiwa vya Marshal"
+ },
+ "SB": {
+ "name": "Visiwa vya Solomon"
+ },
+ "TC": {
+ "name": "Visiwa vya Turki na Kaiko"
+ },
+ "VI": {
+ "name": "Visiwa vya Virgin vya Marekani"
+ },
+ "VG": {
+ "name": "Visiwa vya Virgin vya Uingereza"
+ },
+ "WF": {
+ "name": "Walis na Futuna"
+ },
+ "EH": {
+ "name": "Western Sahara"
+ },
+ "YE": {
+ "name": "Yemeni"
+ },
+ "JO": {
+ "name": "Yordani"
+ },
+ "ZM": {
+ "name": "Zambia"
+ },
+ "ZW": {
+ "name": "Zimbabwe"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/country/ru.json b/library/intl/resources/country/ru.json
new file mode 100644
index 000000000..a9dabdc07
--- /dev/null
+++ b/library/intl/resources/country/ru.json
@@ -0,0 +1,761 @@
+{
+ "AU": {
+ "name": "ÐвÑтралиÑ"
+ },
+ "AT": {
+ "name": "ÐвÑтриÑ"
+ },
+ "AZ": {
+ "name": "Ðзербайджан"
+ },
+ "AX": {
+ "name": "ÐландÑкие о-ва"
+ },
+ "AL": {
+ "name": "ÐлбаниÑ"
+ },
+ "DZ": {
+ "name": "Ðлжир"
+ },
+ "AS": {
+ "name": "ÐмериканÑкое Самоа"
+ },
+ "AI": {
+ "name": "ÐнгильÑ"
+ },
+ "AO": {
+ "name": "Ðнгола"
+ },
+ "AD": {
+ "name": "Ðндорра"
+ },
+ "AQ": {
+ "name": "Ðнтарктида"
+ },
+ "AG": {
+ "name": "Ðнтигуа и Барбуда"
+ },
+ "AR": {
+ "name": "Ðргентина"
+ },
+ "AM": {
+ "name": "ÐрмениÑ"
+ },
+ "AW": {
+ "name": "Ðруба"
+ },
+ "AF": {
+ "name": "ÐфганиÑтан"
+ },
+ "BS": {
+ "name": "БагамÑкие о-ва"
+ },
+ "BD": {
+ "name": "Бангладеш"
+ },
+ "BB": {
+ "name": "БарбадоÑ"
+ },
+ "BH": {
+ "name": "Бахрейн"
+ },
+ "BY": {
+ "name": "БеларуÑÑŒ"
+ },
+ "BZ": {
+ "name": "Белиз"
+ },
+ "BE": {
+ "name": "БельгиÑ"
+ },
+ "BJ": {
+ "name": "Бенин"
+ },
+ "BM": {
+ "name": "БермудÑкие о-ва"
+ },
+ "BG": {
+ "name": "БолгариÑ"
+ },
+ "BO": {
+ "name": "БоливиÑ"
+ },
+ "BQ": {
+ "name": "БонÑйр, Синт-ЭÑÑ‚Ð°Ñ‚Ð¸ÑƒÑ Ð¸ Саба"
+ },
+ "BA": {
+ "name": "БоÑÐ½Ð¸Ñ Ð¸ Герцеговина"
+ },
+ "BW": {
+ "name": "БотÑвана"
+ },
+ "BR": {
+ "name": "БразилиÑ"
+ },
+ "IO": {
+ "name": "БританÑÐºÐ°Ñ Ñ‚ÐµÑ€Ñ€Ð¸Ñ‚Ð¾Ñ€Ð¸Ñ Ð² ИндийÑком океане"
+ },
+ "BN": {
+ "name": "Бруней-ДаруÑÑалам"
+ },
+ "BF": {
+ "name": "Буркина-ФаÑо"
+ },
+ "BI": {
+ "name": "Бурунди"
+ },
+ "BT": {
+ "name": "Бутан"
+ },
+ "VU": {
+ "name": "Вануату"
+ },
+ "VA": {
+ "name": "Ватикан"
+ },
+ "GB": {
+ "name": "ВеликобританиÑ"
+ },
+ "HU": {
+ "name": "ВенгриÑ"
+ },
+ "VE": {
+ "name": "ВенеÑуÑла"
+ },
+ "VG": {
+ "name": "ВиргинÑкие о-ва (БританÑкие)"
+ },
+ "VI": {
+ "name": "ВиргинÑкие о-ва (СШÐ)"
+ },
+ "UM": {
+ "name": "Внешние малые о-ва (СШÐ)"
+ },
+ "TL": {
+ "name": "ВоÑточный Тимор"
+ },
+ "VN": {
+ "name": "Вьетнам"
+ },
+ "GA": {
+ "name": "Габон"
+ },
+ "HT": {
+ "name": "Гаити"
+ },
+ "GY": {
+ "name": "Гайана"
+ },
+ "GM": {
+ "name": "ГамбиÑ"
+ },
+ "GH": {
+ "name": "Гана"
+ },
+ "GP": {
+ "name": "Гваделупа"
+ },
+ "GT": {
+ "name": "Гватемала"
+ },
+ "GN": {
+ "name": "ГвинеÑ"
+ },
+ "GW": {
+ "name": "ГвинеÑ-БиÑау"
+ },
+ "DE": {
+ "name": "ГерманиÑ"
+ },
+ "GG": {
+ "name": "ГернÑи"
+ },
+ "GI": {
+ "name": "Гибралтар"
+ },
+ "HN": {
+ "name": "ГондураÑ"
+ },
+ "HK": {
+ "name": "Гонконг (оÑобый район)"
+ },
+ "GD": {
+ "name": "Гренада"
+ },
+ "GL": {
+ "name": "ГренландиÑ"
+ },
+ "GR": {
+ "name": "ГрециÑ"
+ },
+ "GE": {
+ "name": "ГрузиÑ"
+ },
+ "GU": {
+ "name": "Гуам"
+ },
+ "DK": {
+ "name": "ДаниÑ"
+ },
+ "JE": {
+ "name": "ДжерÑи"
+ },
+ "DJ": {
+ "name": "Джибути"
+ },
+ "DG": {
+ "name": "Диего-ГарÑиÑ"
+ },
+ "DM": {
+ "name": "Доминика"
+ },
+ "DO": {
+ "name": "ДоминиканÑÐºÐ°Ñ Ð ÐµÑпублика"
+ },
+ "EG": {
+ "name": "Египет"
+ },
+ "ZM": {
+ "name": "ЗамбиÑ"
+ },
+ "EH": {
+ "name": "Ð—Ð°Ð¿Ð°Ð´Ð½Ð°Ñ Ð¡Ð°Ñ…Ð°Ñ€Ð°"
+ },
+ "ZW": {
+ "name": "Зимбабве"
+ },
+ "IL": {
+ "name": "Израиль"
+ },
+ "IN": {
+ "name": "ИндиÑ"
+ },
+ "ID": {
+ "name": "ИндонезиÑ"
+ },
+ "JO": {
+ "name": "ИорданиÑ"
+ },
+ "IQ": {
+ "name": "Ирак"
+ },
+ "IR": {
+ "name": "Иран"
+ },
+ "IE": {
+ "name": "ИрландиÑ"
+ },
+ "IS": {
+ "name": "ИÑландиÑ"
+ },
+ "ES": {
+ "name": "ИÑпаниÑ"
+ },
+ "IT": {
+ "name": "ИталиÑ"
+ },
+ "YE": {
+ "name": "Йемен"
+ },
+ "CV": {
+ "name": "Кабо-Верде"
+ },
+ "KZ": {
+ "name": "КазахÑтан"
+ },
+ "KY": {
+ "name": "Каймановы о-ва"
+ },
+ "KH": {
+ "name": "Камбоджа"
+ },
+ "CM": {
+ "name": "Камерун"
+ },
+ "CA": {
+ "name": "Канада"
+ },
+ "IC": {
+ "name": "КанарÑкие о-ва"
+ },
+ "QA": {
+ "name": "Катар"
+ },
+ "KE": {
+ "name": "КениÑ"
+ },
+ "CY": {
+ "name": "Кипр"
+ },
+ "KG": {
+ "name": "КиргизиÑ"
+ },
+ "KI": {
+ "name": "Кирибати"
+ },
+ "CN": {
+ "name": "Китай"
+ },
+ "KP": {
+ "name": "КÐДР"
+ },
+ "CC": {
+ "name": "КокоÑовые о-ва"
+ },
+ "CO": {
+ "name": "КолумбиÑ"
+ },
+ "KM": {
+ "name": "КоморÑкие о-ва"
+ },
+ "CG": {
+ "name": "Конго - Браззавиль"
+ },
+ "CD": {
+ "name": "Конго - КиншаÑа"
+ },
+ "XK": {
+ "name": "КоÑово"
+ },
+ "CR": {
+ "name": "КоÑта-Рика"
+ },
+ "CI": {
+ "name": "Кот-д’Ивуар"
+ },
+ "CU": {
+ "name": "Куба"
+ },
+ "KW": {
+ "name": "Кувейт"
+ },
+ "CW": {
+ "name": "КюраÑао"
+ },
+ "LA": {
+ "name": "ЛаоÑ"
+ },
+ "LV": {
+ "name": "ЛатвиÑ"
+ },
+ "LS": {
+ "name": "ЛеÑото"
+ },
+ "LR": {
+ "name": "ЛибериÑ"
+ },
+ "LB": {
+ "name": "Ливан"
+ },
+ "LY": {
+ "name": "ЛивиÑ"
+ },
+ "LT": {
+ "name": "Литва"
+ },
+ "LI": {
+ "name": "Лихтенштейн"
+ },
+ "LU": {
+ "name": "ЛюкÑембург"
+ },
+ "MU": {
+ "name": "Маврикий"
+ },
+ "MR": {
+ "name": "МавританиÑ"
+ },
+ "MG": {
+ "name": "МадагаÑкар"
+ },
+ "YT": {
+ "name": "Майотта"
+ },
+ "MO": {
+ "name": "Макао (оÑобый район)"
+ },
+ "MK": {
+ "name": "МакедониÑ"
+ },
+ "MW": {
+ "name": "Малави"
+ },
+ "MY": {
+ "name": "МалайзиÑ"
+ },
+ "ML": {
+ "name": "Мали"
+ },
+ "MV": {
+ "name": "МальдивÑкие о-ва"
+ },
+ "MT": {
+ "name": "Мальта"
+ },
+ "MA": {
+ "name": "Марокко"
+ },
+ "MQ": {
+ "name": "Мартиника"
+ },
+ "MH": {
+ "name": "Маршалловы о-ва"
+ },
+ "MX": {
+ "name": "МекÑика"
+ },
+ "MZ": {
+ "name": "Мозамбик"
+ },
+ "MD": {
+ "name": "Молдова"
+ },
+ "MC": {
+ "name": "Монако"
+ },
+ "MN": {
+ "name": "МонголиÑ"
+ },
+ "MS": {
+ "name": "МонтÑеррат"
+ },
+ "MM": {
+ "name": "МьÑнма (Бирма)"
+ },
+ "NA": {
+ "name": "ÐамибиÑ"
+ },
+ "NR": {
+ "name": "Ðауру"
+ },
+ "NP": {
+ "name": "Ðепал"
+ },
+ "NE": {
+ "name": "Ðигер"
+ },
+ "NG": {
+ "name": "ÐигериÑ"
+ },
+ "NL": {
+ "name": "Ðидерланды"
+ },
+ "NI": {
+ "name": "Ðикарагуа"
+ },
+ "NU": {
+ "name": "ÐиуÑ"
+ },
+ "NZ": {
+ "name": "ÐÐ¾Ð²Ð°Ñ Ð—ÐµÐ»Ð°Ð½Ð´Ð¸Ñ"
+ },
+ "NC": {
+ "name": "ÐÐ¾Ð²Ð°Ñ ÐšÐ°Ð»ÐµÐ´Ð¾Ð½Ð¸Ñ"
+ },
+ "NO": {
+ "name": "ÐорвегиÑ"
+ },
+ "AC": {
+ "name": "о-в ВознеÑениÑ"
+ },
+ "IM": {
+ "name": "О-в ÐœÑн"
+ },
+ "NF": {
+ "name": "о-в Ðорфолк"
+ },
+ "CX": {
+ "name": "о-в РождеÑтва"
+ },
+ "SH": {
+ "name": "О-в Св. Елены"
+ },
+ "CK": {
+ "name": "о-ва Кука"
+ },
+ "TC": {
+ "name": "О-ва Ð¢Ñ‘Ñ€ÐºÑ Ð¸ КайкоÑ"
+ },
+ "AE": {
+ "name": "ОÐЭ"
+ },
+ "OM": {
+ "name": "Оман"
+ },
+ "PK": {
+ "name": "ПакиÑтан"
+ },
+ "PW": {
+ "name": "Палау"
+ },
+ "PS": {
+ "name": "ПалеÑтинÑкие территории"
+ },
+ "PA": {
+ "name": "Панама"
+ },
+ "PG": {
+ "name": "Папуа – ÐÐ¾Ð²Ð°Ñ Ð“Ð²Ð¸Ð½ÐµÑ"
+ },
+ "PY": {
+ "name": "Парагвай"
+ },
+ "PE": {
+ "name": "Перу"
+ },
+ "PN": {
+ "name": "ПиткÑрн"
+ },
+ "PL": {
+ "name": "Польша"
+ },
+ "PT": {
+ "name": "ПортугалиÑ"
+ },
+ "PR": {
+ "name": "ПуÑрто-Рико"
+ },
+ "KR": {
+ "name": "РеÑпублика КореÑ"
+ },
+ "RE": {
+ "name": "Реюньон"
+ },
+ "RU": {
+ "name": "РоÑÑиÑ"
+ },
+ "RW": {
+ "name": "Руанда"
+ },
+ "RO": {
+ "name": "РумыниÑ"
+ },
+ "SV": {
+ "name": "Сальвадор"
+ },
+ "WS": {
+ "name": "Самоа"
+ },
+ "SM": {
+ "name": "Сан-Марино"
+ },
+ "ST": {
+ "name": "Сан-Томе и ПринÑипи"
+ },
+ "SA": {
+ "name": "СаудовÑÐºÐ°Ñ ÐравиÑ"
+ },
+ "SZ": {
+ "name": "Свазиленд"
+ },
+ "MP": {
+ "name": "Северные МарианÑкие о-ва"
+ },
+ "SC": {
+ "name": "СейшельÑкие о-ва"
+ },
+ "BL": {
+ "name": "Сен-Бартельми"
+ },
+ "MF": {
+ "name": "Сен-Мартен"
+ },
+ "PM": {
+ "name": "Сен-Пьер и Микелон"
+ },
+ "SN": {
+ "name": "Сенегал"
+ },
+ "VC": {
+ "name": "Сент-ВинÑент и Гренадины"
+ },
+ "KN": {
+ "name": "Сент-ÐšÐ¸Ñ‚Ñ Ð¸ ÐевиÑ"
+ },
+ "LC": {
+ "name": "Сент-ЛюÑиÑ"
+ },
+ "RS": {
+ "name": "СербиÑ"
+ },
+ "EA": {
+ "name": "Сеута и МелильÑ"
+ },
+ "SG": {
+ "name": "Сингапур"
+ },
+ "SX": {
+ "name": "Синт-Мартен"
+ },
+ "SY": {
+ "name": "СириÑ"
+ },
+ "SK": {
+ "name": "СловакиÑ"
+ },
+ "SI": {
+ "name": "СловениÑ"
+ },
+ "US": {
+ "name": "Соединенные Штаты"
+ },
+ "SB": {
+ "name": "Соломоновы о-ва"
+ },
+ "SO": {
+ "name": "Сомали"
+ },
+ "SD": {
+ "name": "Судан"
+ },
+ "SR": {
+ "name": "Суринам"
+ },
+ "SL": {
+ "name": "Сьерра-Леоне"
+ },
+ "TJ": {
+ "name": "ТаджикиÑтан"
+ },
+ "TH": {
+ "name": "Таиланд"
+ },
+ "TW": {
+ "name": "Тайвань"
+ },
+ "TZ": {
+ "name": "ТанзаниÑ"
+ },
+ "TG": {
+ "name": "Того"
+ },
+ "TK": {
+ "name": "Токелау"
+ },
+ "TO": {
+ "name": "Тонга"
+ },
+ "TT": {
+ "name": "Тринидад и Тобаго"
+ },
+ "TA": {
+ "name": "ТриÑтан-да-КуньÑ"
+ },
+ "TV": {
+ "name": "Тувалу"
+ },
+ "TN": {
+ "name": "ТуниÑ"
+ },
+ "TM": {
+ "name": "ТуркмениÑтан"
+ },
+ "TR": {
+ "name": "ТурциÑ"
+ },
+ "UG": {
+ "name": "Уганда"
+ },
+ "UZ": {
+ "name": "УзбекиÑтан"
+ },
+ "UA": {
+ "name": "Украина"
+ },
+ "WF": {
+ "name": "Ð£Ð¾Ð»Ð»Ð¸Ñ Ð¸ Футуна"
+ },
+ "UY": {
+ "name": "Уругвай"
+ },
+ "FO": {
+ "name": "ФарерÑкие о-ва"
+ },
+ "FM": {
+ "name": "Федеративные Штаты Микронезии"
+ },
+ "FJ": {
+ "name": "Фиджи"
+ },
+ "PH": {
+ "name": "Филиппины"
+ },
+ "FI": {
+ "name": "ФинлÑндиÑ"
+ },
+ "FK": {
+ "name": "ФолклендÑкие о-ва"
+ },
+ "FR": {
+ "name": "ФранциÑ"
+ },
+ "GF": {
+ "name": "ФранцузÑÐºÐ°Ñ Ð“Ð²Ð¸Ð°Ð½Ð°"
+ },
+ "PF": {
+ "name": "ФранцузÑÐºÐ°Ñ ÐŸÐ¾Ð»Ð¸Ð½ÐµÐ·Ð¸Ñ"
+ },
+ "TF": {
+ "name": "ФранцузÑкие Южные Территории"
+ },
+ "HR": {
+ "name": "ХорватиÑ"
+ },
+ "CF": {
+ "name": "ЦÐР"
+ },
+ "TD": {
+ "name": "Чад"
+ },
+ "ME": {
+ "name": "ЧерногориÑ"
+ },
+ "CZ": {
+ "name": "ЧехиÑ"
+ },
+ "CL": {
+ "name": "Чили"
+ },
+ "CH": {
+ "name": "ШвейцариÑ"
+ },
+ "SE": {
+ "name": "ШвециÑ"
+ },
+ "SJ": {
+ "name": "Шпицберген и Ян-Майен"
+ },
+ "LK": {
+ "name": "Шри-Ланка"
+ },
+ "EC": {
+ "name": "Эквадор"
+ },
+ "GQ": {
+ "name": "Ð­ÐºÐ²Ð°Ñ‚Ð¾Ñ€Ð¸Ð°Ð»ÑŒÐ½Ð°Ñ Ð“Ð²Ð¸Ð½ÐµÑ"
+ },
+ "ER": {
+ "name": "ЭритреÑ"
+ },
+ "EE": {
+ "name": "ЭÑтониÑ"
+ },
+ "ET": {
+ "name": "ЭфиопиÑ"
+ },
+ "ZA": {
+ "name": "ЮÐР"
+ },
+ "GS": {
+ "name": "Ð®Ð¶Ð½Ð°Ñ Ð“ÐµÐ¾Ñ€Ð³Ð¸Ñ Ð¸ Южные Сандвичевы о-ва"
+ },
+ "SS": {
+ "name": "Южный Судан"
+ },
+ "JM": {
+ "name": "Ямайка"
+ },
+ "JP": {
+ "name": "ЯпониÑ"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/country/rwk.json b/library/intl/resources/country/rwk.json
new file mode 100644
index 000000000..e57db8007
--- /dev/null
+++ b/library/intl/resources/country/rwk.json
@@ -0,0 +1,761 @@
+{
+ "ZA": {
+ "name": "Afrika Kusini"
+ },
+ "AF": {
+ "name": "Afuganistani"
+ },
+ "IS": {
+ "name": "Aislandi"
+ },
+ "AR": {
+ "name": "Ajentina"
+ },
+ "AX": {
+ "name": "Ã…land Islands"
+ },
+ "AL": {
+ "name": "Albania"
+ },
+ "DZ": {
+ "name": "Aljeria"
+ },
+ "AD": {
+ "name": "Andora"
+ },
+ "AO": {
+ "name": "Angola"
+ },
+ "AI": {
+ "name": "Anguilla"
+ },
+ "AQ": {
+ "name": "Antarctica"
+ },
+ "AG": {
+ "name": "Antigua na Barbuda"
+ },
+ "AM": {
+ "name": "Armenia"
+ },
+ "AW": {
+ "name": "Aruba"
+ },
+ "AC": {
+ "name": "Ascension Island"
+ },
+ "AU": {
+ "name": "Australia"
+ },
+ "AT": {
+ "name": "Austria"
+ },
+ "IE": {
+ "name": "Ayalandi"
+ },
+ "AZ": {
+ "name": "Azabajani"
+ },
+ "BB": {
+ "name": "Babadosi"
+ },
+ "BS": {
+ "name": "Bahama"
+ },
+ "BH": {
+ "name": "Bahareni"
+ },
+ "BD": {
+ "name": "Bangladeshi"
+ },
+ "BY": {
+ "name": "Belarusi"
+ },
+ "BZ": {
+ "name": "Belize"
+ },
+ "BJ": {
+ "name": "Benini"
+ },
+ "BM": {
+ "name": "Bermuda"
+ },
+ "BO": {
+ "name": "Bolivia"
+ },
+ "BA": {
+ "name": "Bosnia na Hezegovina"
+ },
+ "BW": {
+ "name": "Botswana"
+ },
+ "BR": {
+ "name": "Brazili"
+ },
+ "BN": {
+ "name": "Brunei"
+ },
+ "BF": {
+ "name": "Bukinafaso"
+ },
+ "MG": {
+ "name": "Bukini"
+ },
+ "BG": {
+ "name": "Bulgaria"
+ },
+ "BI": {
+ "name": "Burundi"
+ },
+ "BT": {
+ "name": "Butani"
+ },
+ "IC": {
+ "name": "Canary Islands"
+ },
+ "BQ": {
+ "name": "Caribbean Netherlands"
+ },
+ "EA": {
+ "name": "Ceuta & Melilla"
+ },
+ "TD": {
+ "name": "Chadi"
+ },
+ "CL": {
+ "name": "Chile"
+ },
+ "CN": {
+ "name": "China"
+ },
+ "CX": {
+ "name": "Christmas Island"
+ },
+ "CC": {
+ "name": "Cocos (Keeling) Islands"
+ },
+ "CW": {
+ "name": "Curaçao"
+ },
+ "DK": {
+ "name": "Denmaki"
+ },
+ "DG": {
+ "name": "Diego Garcia"
+ },
+ "DM": {
+ "name": "Dominika"
+ },
+ "EC": {
+ "name": "Ekwado"
+ },
+ "SV": {
+ "name": "Elsavado"
+ },
+ "IO": {
+ "name": "Eneo la Uingereza katika Bahari Hindi"
+ },
+ "ER": {
+ "name": "Eritrea"
+ },
+ "EE": {
+ "name": "Estonia"
+ },
+ "AE": {
+ "name": "Falme za Kiarabu"
+ },
+ "FO": {
+ "name": "Faroe Islands"
+ },
+ "FJ": {
+ "name": "Fiji"
+ },
+ "PH": {
+ "name": "Filipino"
+ },
+ "TF": {
+ "name": "French Southern Territories"
+ },
+ "GA": {
+ "name": "Gaboni"
+ },
+ "GM": {
+ "name": "Gambia"
+ },
+ "GH": {
+ "name": "Ghana"
+ },
+ "GN": {
+ "name": "Gine"
+ },
+ "GW": {
+ "name": "Ginebisau"
+ },
+ "GQ": {
+ "name": "Ginekweta"
+ },
+ "GD": {
+ "name": "Grenada"
+ },
+ "GL": {
+ "name": "Grinlandi"
+ },
+ "GG": {
+ "name": "Guernsey"
+ },
+ "GY": {
+ "name": "Guyana"
+ },
+ "GP": {
+ "name": "Gwadelupe"
+ },
+ "GU": {
+ "name": "Gwam"
+ },
+ "GT": {
+ "name": "Gwatemala"
+ },
+ "GF": {
+ "name": "Gwiyana ya Ufaransa"
+ },
+ "HT": {
+ "name": "Haiti"
+ },
+ "ES": {
+ "name": "Hispania"
+ },
+ "HN": {
+ "name": "Hondurasi"
+ },
+ "HK": {
+ "name": "Hong Kong SAR China"
+ },
+ "HU": {
+ "name": "Hungaria"
+ },
+ "IN": {
+ "name": "India"
+ },
+ "ID": {
+ "name": "Indonesia"
+ },
+ "IQ": {
+ "name": "Iraki"
+ },
+ "IM": {
+ "name": "Isle of Man"
+ },
+ "IL": {
+ "name": "Israeli"
+ },
+ "IT": {
+ "name": "Italia"
+ },
+ "JM": {
+ "name": "Jamaika"
+ },
+ "CF": {
+ "name": "Jamhuri ya Afrika ya Kati"
+ },
+ "CZ": {
+ "name": "Jamhuri ya Cheki"
+ },
+ "DO": {
+ "name": "Jamhuri ya Dominika"
+ },
+ "CD": {
+ "name": "Jamhuri ya Kidemokrasia ya Kongo"
+ },
+ "JP": {
+ "name": "Japani"
+ },
+ "JE": {
+ "name": "Jersey"
+ },
+ "GI": {
+ "name": "Jibralta"
+ },
+ "DJ": {
+ "name": "Jibuti"
+ },
+ "GE": {
+ "name": "Jojia"
+ },
+ "KH": {
+ "name": "Kambodia"
+ },
+ "CM": {
+ "name": "Kameruni"
+ },
+ "CA": {
+ "name": "Kanada"
+ },
+ "QA": {
+ "name": "Katari"
+ },
+ "KZ": {
+ "name": "Kazakistani"
+ },
+ "KE": {
+ "name": "Kenya"
+ },
+ "CV": {
+ "name": "Kepuvede"
+ },
+ "KI": {
+ "name": "Kiribati"
+ },
+ "KG": {
+ "name": "Kirigizistani"
+ },
+ "NF": {
+ "name": "Kisiwa cha Norfok"
+ },
+ "CI": {
+ "name": "Kodivaa"
+ },
+ "CO": {
+ "name": "Kolombia"
+ },
+ "KM": {
+ "name": "Komoro"
+ },
+ "CG": {
+ "name": "Kongo"
+ },
+ "HR": {
+ "name": "Korasia"
+ },
+ "KP": {
+ "name": "Korea Kaskazini"
+ },
+ "KR": {
+ "name": "Korea Kusini"
+ },
+ "XK": {
+ "name": "Kosovo"
+ },
+ "CR": {
+ "name": "Kostarika"
+ },
+ "CU": {
+ "name": "Kuba"
+ },
+ "CY": {
+ "name": "Kuprosi"
+ },
+ "KW": {
+ "name": "Kuwaiti"
+ },
+ "LA": {
+ "name": "Laosi"
+ },
+ "LU": {
+ "name": "Lasembagi"
+ },
+ "LV": {
+ "name": "Lativia"
+ },
+ "LB": {
+ "name": "Lebanoni"
+ },
+ "LS": {
+ "name": "Lesoto"
+ },
+ "LR": {
+ "name": "Liberia"
+ },
+ "LY": {
+ "name": "Libya"
+ },
+ "LI": {
+ "name": "Lishenteni"
+ },
+ "LT": {
+ "name": "Litwania"
+ },
+ "MO": {
+ "name": "Macau SAR China"
+ },
+ "MW": {
+ "name": "Malawi"
+ },
+ "MY": {
+ "name": "Malesia"
+ },
+ "ML": {
+ "name": "Mali"
+ },
+ "MT": {
+ "name": "Malta"
+ },
+ "US": {
+ "name": "Marekani"
+ },
+ "MQ": {
+ "name": "Martiniki"
+ },
+ "MK": {
+ "name": "Masedonia"
+ },
+ "YT": {
+ "name": "Mayotte"
+ },
+ "MX": {
+ "name": "Meksiko"
+ },
+ "FM": {
+ "name": "Mikronesia"
+ },
+ "EG": {
+ "name": "Misri"
+ },
+ "MV": {
+ "name": "Modivu"
+ },
+ "MD": {
+ "name": "Moldova"
+ },
+ "MC": {
+ "name": "Monako"
+ },
+ "MN": {
+ "name": "Mongolia"
+ },
+ "ME": {
+ "name": "Montenegro"
+ },
+ "MS": {
+ "name": "Montserrati"
+ },
+ "MU": {
+ "name": "Morisi"
+ },
+ "MR": {
+ "name": "Moritania"
+ },
+ "MA": {
+ "name": "Moroko"
+ },
+ "MZ": {
+ "name": "Msumbiji"
+ },
+ "MM": {
+ "name": "Myama"
+ },
+ "NA": {
+ "name": "Namibia"
+ },
+ "NR": {
+ "name": "Nauru"
+ },
+ "NP": {
+ "name": "Nepali"
+ },
+ "NE": {
+ "name": "Nijeri"
+ },
+ "NG": {
+ "name": "Nijeria"
+ },
+ "NI": {
+ "name": "Nikaragwa"
+ },
+ "NU": {
+ "name": "Niue"
+ },
+ "NO": {
+ "name": "Norwe"
+ },
+ "NC": {
+ "name": "Nyukaledonia"
+ },
+ "NZ": {
+ "name": "Nyuzilandi"
+ },
+ "OM": {
+ "name": "Omani"
+ },
+ "PK": {
+ "name": "Pakistani"
+ },
+ "PW": {
+ "name": "Palau"
+ },
+ "PA": {
+ "name": "Panama"
+ },
+ "PG": {
+ "name": "Papua"
+ },
+ "PY": {
+ "name": "Paragwai"
+ },
+ "PE": {
+ "name": "Peru"
+ },
+ "PN": {
+ "name": "Pitkairni"
+ },
+ "PL": {
+ "name": "Polandi"
+ },
+ "PF": {
+ "name": "Polinesia ya Ufaransa"
+ },
+ "PR": {
+ "name": "Pwetoriko"
+ },
+ "RE": {
+ "name": "Riyunioni"
+ },
+ "RO": {
+ "name": "Romania"
+ },
+ "RW": {
+ "name": "Rwanda"
+ },
+ "SM": {
+ "name": "Samarino"
+ },
+ "WS": {
+ "name": "Samoa"
+ },
+ "AS": {
+ "name": "Samoa ya Marekani"
+ },
+ "SH": {
+ "name": "Santahelena"
+ },
+ "KN": {
+ "name": "Santakitzi na Nevis"
+ },
+ "LC": {
+ "name": "Santalusia"
+ },
+ "PM": {
+ "name": "Santapieri na Mikeloni"
+ },
+ "VC": {
+ "name": "Santavisenti na Grenadini"
+ },
+ "ST": {
+ "name": "Sao Tome na Principe"
+ },
+ "SA": {
+ "name": "Saudi"
+ },
+ "SN": {
+ "name": "Senegali"
+ },
+ "RS": {
+ "name": "Serbia"
+ },
+ "SC": {
+ "name": "Shelisheli"
+ },
+ "SL": {
+ "name": "Siera Leoni"
+ },
+ "SG": {
+ "name": "Singapoo"
+ },
+ "SX": {
+ "name": "Sint Maarten"
+ },
+ "SY": {
+ "name": "Siria"
+ },
+ "LK": {
+ "name": "Sirilanka"
+ },
+ "SK": {
+ "name": "Slovakia"
+ },
+ "SI": {
+ "name": "Slovenia"
+ },
+ "SO": {
+ "name": "Somalia"
+ },
+ "GS": {
+ "name": "South Georgia & South Sandwich Islands"
+ },
+ "SS": {
+ "name": "South Sudan"
+ },
+ "BL": {
+ "name": "St. Barthélemy"
+ },
+ "MF": {
+ "name": "St. Martin"
+ },
+ "SD": {
+ "name": "Sudani"
+ },
+ "SR": {
+ "name": "Surinamu"
+ },
+ "SJ": {
+ "name": "Svalbard & Jan Mayen"
+ },
+ "TH": {
+ "name": "Tailandi"
+ },
+ "TW": {
+ "name": "Taiwani"
+ },
+ "TJ": {
+ "name": "Tajikistani"
+ },
+ "TZ": {
+ "name": "Tanzania"
+ },
+ "TL": {
+ "name": "Timori ya Mashariki"
+ },
+ "TG": {
+ "name": "Togo"
+ },
+ "TK": {
+ "name": "Tokelau"
+ },
+ "TO": {
+ "name": "Tonga"
+ },
+ "TT": {
+ "name": "Trinidad na Tobago"
+ },
+ "TA": {
+ "name": "Tristan da Cunha"
+ },
+ "TN": {
+ "name": "Tunisia"
+ },
+ "TM": {
+ "name": "Turukimenistani"
+ },
+ "TV": {
+ "name": "Tuvalu"
+ },
+ "UM": {
+ "name": "U.S. Outlying Islands"
+ },
+ "IR": {
+ "name": "Uajemi"
+ },
+ "BE": {
+ "name": "Ubelgiji"
+ },
+ "FR": {
+ "name": "Ufaransa"
+ },
+ "FI": {
+ "name": "Ufini"
+ },
+ "UG": {
+ "name": "Uganda"
+ },
+ "GR": {
+ "name": "Ugiriki"
+ },
+ "ET": {
+ "name": "Uhabeshi"
+ },
+ "NL": {
+ "name": "Uholanzi"
+ },
+ "GB": {
+ "name": "Uingereza"
+ },
+ "DE": {
+ "name": "Ujerumani"
+ },
+ "PS": {
+ "name": "Ukingo wa Magharibi na Ukanda wa Gaza wa Palestina"
+ },
+ "UA": {
+ "name": "Ukraini"
+ },
+ "PT": {
+ "name": "Ureno"
+ },
+ "UY": {
+ "name": "Urugwai"
+ },
+ "RU": {
+ "name": "Urusi"
+ },
+ "SZ": {
+ "name": "Uswazi"
+ },
+ "SE": {
+ "name": "Uswidi"
+ },
+ "CH": {
+ "name": "Uswisi"
+ },
+ "TR": {
+ "name": "Uturuki"
+ },
+ "UZ": {
+ "name": "Uzibekistani"
+ },
+ "VU": {
+ "name": "Vanuatu"
+ },
+ "VA": {
+ "name": "Vatikani"
+ },
+ "VE": {
+ "name": "Venezuela"
+ },
+ "VN": {
+ "name": "Vietinamu"
+ },
+ "CK": {
+ "name": "Visiwa vya Cook"
+ },
+ "FK": {
+ "name": "Visiwa vya Falkland"
+ },
+ "KY": {
+ "name": "Visiwa vya Kayman"
+ },
+ "MP": {
+ "name": "Visiwa vya Mariana vya Kaskazini"
+ },
+ "MH": {
+ "name": "Visiwa vya Marshal"
+ },
+ "SB": {
+ "name": "Visiwa vya Solomon"
+ },
+ "TC": {
+ "name": "Visiwa vya Turki na Kaiko"
+ },
+ "VI": {
+ "name": "Visiwa vya Virgin vya Marekani"
+ },
+ "VG": {
+ "name": "Visiwa vya Virgin vya Uingereza"
+ },
+ "WF": {
+ "name": "Walis na Futuna"
+ },
+ "EH": {
+ "name": "Western Sahara"
+ },
+ "YE": {
+ "name": "Yemeni"
+ },
+ "JO": {
+ "name": "Yordani"
+ },
+ "ZM": {
+ "name": "Zambia"
+ },
+ "ZW": {
+ "name": "Zimbabwe"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/country/saq.json b/library/intl/resources/country/saq.json
new file mode 100644
index 000000000..e57db8007
--- /dev/null
+++ b/library/intl/resources/country/saq.json
@@ -0,0 +1,761 @@
+{
+ "ZA": {
+ "name": "Afrika Kusini"
+ },
+ "AF": {
+ "name": "Afuganistani"
+ },
+ "IS": {
+ "name": "Aislandi"
+ },
+ "AR": {
+ "name": "Ajentina"
+ },
+ "AX": {
+ "name": "Ã…land Islands"
+ },
+ "AL": {
+ "name": "Albania"
+ },
+ "DZ": {
+ "name": "Aljeria"
+ },
+ "AD": {
+ "name": "Andora"
+ },
+ "AO": {
+ "name": "Angola"
+ },
+ "AI": {
+ "name": "Anguilla"
+ },
+ "AQ": {
+ "name": "Antarctica"
+ },
+ "AG": {
+ "name": "Antigua na Barbuda"
+ },
+ "AM": {
+ "name": "Armenia"
+ },
+ "AW": {
+ "name": "Aruba"
+ },
+ "AC": {
+ "name": "Ascension Island"
+ },
+ "AU": {
+ "name": "Australia"
+ },
+ "AT": {
+ "name": "Austria"
+ },
+ "IE": {
+ "name": "Ayalandi"
+ },
+ "AZ": {
+ "name": "Azabajani"
+ },
+ "BB": {
+ "name": "Babadosi"
+ },
+ "BS": {
+ "name": "Bahama"
+ },
+ "BH": {
+ "name": "Bahareni"
+ },
+ "BD": {
+ "name": "Bangladeshi"
+ },
+ "BY": {
+ "name": "Belarusi"
+ },
+ "BZ": {
+ "name": "Belize"
+ },
+ "BJ": {
+ "name": "Benini"
+ },
+ "BM": {
+ "name": "Bermuda"
+ },
+ "BO": {
+ "name": "Bolivia"
+ },
+ "BA": {
+ "name": "Bosnia na Hezegovina"
+ },
+ "BW": {
+ "name": "Botswana"
+ },
+ "BR": {
+ "name": "Brazili"
+ },
+ "BN": {
+ "name": "Brunei"
+ },
+ "BF": {
+ "name": "Bukinafaso"
+ },
+ "MG": {
+ "name": "Bukini"
+ },
+ "BG": {
+ "name": "Bulgaria"
+ },
+ "BI": {
+ "name": "Burundi"
+ },
+ "BT": {
+ "name": "Butani"
+ },
+ "IC": {
+ "name": "Canary Islands"
+ },
+ "BQ": {
+ "name": "Caribbean Netherlands"
+ },
+ "EA": {
+ "name": "Ceuta & Melilla"
+ },
+ "TD": {
+ "name": "Chadi"
+ },
+ "CL": {
+ "name": "Chile"
+ },
+ "CN": {
+ "name": "China"
+ },
+ "CX": {
+ "name": "Christmas Island"
+ },
+ "CC": {
+ "name": "Cocos (Keeling) Islands"
+ },
+ "CW": {
+ "name": "Curaçao"
+ },
+ "DK": {
+ "name": "Denmaki"
+ },
+ "DG": {
+ "name": "Diego Garcia"
+ },
+ "DM": {
+ "name": "Dominika"
+ },
+ "EC": {
+ "name": "Ekwado"
+ },
+ "SV": {
+ "name": "Elsavado"
+ },
+ "IO": {
+ "name": "Eneo la Uingereza katika Bahari Hindi"
+ },
+ "ER": {
+ "name": "Eritrea"
+ },
+ "EE": {
+ "name": "Estonia"
+ },
+ "AE": {
+ "name": "Falme za Kiarabu"
+ },
+ "FO": {
+ "name": "Faroe Islands"
+ },
+ "FJ": {
+ "name": "Fiji"
+ },
+ "PH": {
+ "name": "Filipino"
+ },
+ "TF": {
+ "name": "French Southern Territories"
+ },
+ "GA": {
+ "name": "Gaboni"
+ },
+ "GM": {
+ "name": "Gambia"
+ },
+ "GH": {
+ "name": "Ghana"
+ },
+ "GN": {
+ "name": "Gine"
+ },
+ "GW": {
+ "name": "Ginebisau"
+ },
+ "GQ": {
+ "name": "Ginekweta"
+ },
+ "GD": {
+ "name": "Grenada"
+ },
+ "GL": {
+ "name": "Grinlandi"
+ },
+ "GG": {
+ "name": "Guernsey"
+ },
+ "GY": {
+ "name": "Guyana"
+ },
+ "GP": {
+ "name": "Gwadelupe"
+ },
+ "GU": {
+ "name": "Gwam"
+ },
+ "GT": {
+ "name": "Gwatemala"
+ },
+ "GF": {
+ "name": "Gwiyana ya Ufaransa"
+ },
+ "HT": {
+ "name": "Haiti"
+ },
+ "ES": {
+ "name": "Hispania"
+ },
+ "HN": {
+ "name": "Hondurasi"
+ },
+ "HK": {
+ "name": "Hong Kong SAR China"
+ },
+ "HU": {
+ "name": "Hungaria"
+ },
+ "IN": {
+ "name": "India"
+ },
+ "ID": {
+ "name": "Indonesia"
+ },
+ "IQ": {
+ "name": "Iraki"
+ },
+ "IM": {
+ "name": "Isle of Man"
+ },
+ "IL": {
+ "name": "Israeli"
+ },
+ "IT": {
+ "name": "Italia"
+ },
+ "JM": {
+ "name": "Jamaika"
+ },
+ "CF": {
+ "name": "Jamhuri ya Afrika ya Kati"
+ },
+ "CZ": {
+ "name": "Jamhuri ya Cheki"
+ },
+ "DO": {
+ "name": "Jamhuri ya Dominika"
+ },
+ "CD": {
+ "name": "Jamhuri ya Kidemokrasia ya Kongo"
+ },
+ "JP": {
+ "name": "Japani"
+ },
+ "JE": {
+ "name": "Jersey"
+ },
+ "GI": {
+ "name": "Jibralta"
+ },
+ "DJ": {
+ "name": "Jibuti"
+ },
+ "GE": {
+ "name": "Jojia"
+ },
+ "KH": {
+ "name": "Kambodia"
+ },
+ "CM": {
+ "name": "Kameruni"
+ },
+ "CA": {
+ "name": "Kanada"
+ },
+ "QA": {
+ "name": "Katari"
+ },
+ "KZ": {
+ "name": "Kazakistani"
+ },
+ "KE": {
+ "name": "Kenya"
+ },
+ "CV": {
+ "name": "Kepuvede"
+ },
+ "KI": {
+ "name": "Kiribati"
+ },
+ "KG": {
+ "name": "Kirigizistani"
+ },
+ "NF": {
+ "name": "Kisiwa cha Norfok"
+ },
+ "CI": {
+ "name": "Kodivaa"
+ },
+ "CO": {
+ "name": "Kolombia"
+ },
+ "KM": {
+ "name": "Komoro"
+ },
+ "CG": {
+ "name": "Kongo"
+ },
+ "HR": {
+ "name": "Korasia"
+ },
+ "KP": {
+ "name": "Korea Kaskazini"
+ },
+ "KR": {
+ "name": "Korea Kusini"
+ },
+ "XK": {
+ "name": "Kosovo"
+ },
+ "CR": {
+ "name": "Kostarika"
+ },
+ "CU": {
+ "name": "Kuba"
+ },
+ "CY": {
+ "name": "Kuprosi"
+ },
+ "KW": {
+ "name": "Kuwaiti"
+ },
+ "LA": {
+ "name": "Laosi"
+ },
+ "LU": {
+ "name": "Lasembagi"
+ },
+ "LV": {
+ "name": "Lativia"
+ },
+ "LB": {
+ "name": "Lebanoni"
+ },
+ "LS": {
+ "name": "Lesoto"
+ },
+ "LR": {
+ "name": "Liberia"
+ },
+ "LY": {
+ "name": "Libya"
+ },
+ "LI": {
+ "name": "Lishenteni"
+ },
+ "LT": {
+ "name": "Litwania"
+ },
+ "MO": {
+ "name": "Macau SAR China"
+ },
+ "MW": {
+ "name": "Malawi"
+ },
+ "MY": {
+ "name": "Malesia"
+ },
+ "ML": {
+ "name": "Mali"
+ },
+ "MT": {
+ "name": "Malta"
+ },
+ "US": {
+ "name": "Marekani"
+ },
+ "MQ": {
+ "name": "Martiniki"
+ },
+ "MK": {
+ "name": "Masedonia"
+ },
+ "YT": {
+ "name": "Mayotte"
+ },
+ "MX": {
+ "name": "Meksiko"
+ },
+ "FM": {
+ "name": "Mikronesia"
+ },
+ "EG": {
+ "name": "Misri"
+ },
+ "MV": {
+ "name": "Modivu"
+ },
+ "MD": {
+ "name": "Moldova"
+ },
+ "MC": {
+ "name": "Monako"
+ },
+ "MN": {
+ "name": "Mongolia"
+ },
+ "ME": {
+ "name": "Montenegro"
+ },
+ "MS": {
+ "name": "Montserrati"
+ },
+ "MU": {
+ "name": "Morisi"
+ },
+ "MR": {
+ "name": "Moritania"
+ },
+ "MA": {
+ "name": "Moroko"
+ },
+ "MZ": {
+ "name": "Msumbiji"
+ },
+ "MM": {
+ "name": "Myama"
+ },
+ "NA": {
+ "name": "Namibia"
+ },
+ "NR": {
+ "name": "Nauru"
+ },
+ "NP": {
+ "name": "Nepali"
+ },
+ "NE": {
+ "name": "Nijeri"
+ },
+ "NG": {
+ "name": "Nijeria"
+ },
+ "NI": {
+ "name": "Nikaragwa"
+ },
+ "NU": {
+ "name": "Niue"
+ },
+ "NO": {
+ "name": "Norwe"
+ },
+ "NC": {
+ "name": "Nyukaledonia"
+ },
+ "NZ": {
+ "name": "Nyuzilandi"
+ },
+ "OM": {
+ "name": "Omani"
+ },
+ "PK": {
+ "name": "Pakistani"
+ },
+ "PW": {
+ "name": "Palau"
+ },
+ "PA": {
+ "name": "Panama"
+ },
+ "PG": {
+ "name": "Papua"
+ },
+ "PY": {
+ "name": "Paragwai"
+ },
+ "PE": {
+ "name": "Peru"
+ },
+ "PN": {
+ "name": "Pitkairni"
+ },
+ "PL": {
+ "name": "Polandi"
+ },
+ "PF": {
+ "name": "Polinesia ya Ufaransa"
+ },
+ "PR": {
+ "name": "Pwetoriko"
+ },
+ "RE": {
+ "name": "Riyunioni"
+ },
+ "RO": {
+ "name": "Romania"
+ },
+ "RW": {
+ "name": "Rwanda"
+ },
+ "SM": {
+ "name": "Samarino"
+ },
+ "WS": {
+ "name": "Samoa"
+ },
+ "AS": {
+ "name": "Samoa ya Marekani"
+ },
+ "SH": {
+ "name": "Santahelena"
+ },
+ "KN": {
+ "name": "Santakitzi na Nevis"
+ },
+ "LC": {
+ "name": "Santalusia"
+ },
+ "PM": {
+ "name": "Santapieri na Mikeloni"
+ },
+ "VC": {
+ "name": "Santavisenti na Grenadini"
+ },
+ "ST": {
+ "name": "Sao Tome na Principe"
+ },
+ "SA": {
+ "name": "Saudi"
+ },
+ "SN": {
+ "name": "Senegali"
+ },
+ "RS": {
+ "name": "Serbia"
+ },
+ "SC": {
+ "name": "Shelisheli"
+ },
+ "SL": {
+ "name": "Siera Leoni"
+ },
+ "SG": {
+ "name": "Singapoo"
+ },
+ "SX": {
+ "name": "Sint Maarten"
+ },
+ "SY": {
+ "name": "Siria"
+ },
+ "LK": {
+ "name": "Sirilanka"
+ },
+ "SK": {
+ "name": "Slovakia"
+ },
+ "SI": {
+ "name": "Slovenia"
+ },
+ "SO": {
+ "name": "Somalia"
+ },
+ "GS": {
+ "name": "South Georgia & South Sandwich Islands"
+ },
+ "SS": {
+ "name": "South Sudan"
+ },
+ "BL": {
+ "name": "St. Barthélemy"
+ },
+ "MF": {
+ "name": "St. Martin"
+ },
+ "SD": {
+ "name": "Sudani"
+ },
+ "SR": {
+ "name": "Surinamu"
+ },
+ "SJ": {
+ "name": "Svalbard & Jan Mayen"
+ },
+ "TH": {
+ "name": "Tailandi"
+ },
+ "TW": {
+ "name": "Taiwani"
+ },
+ "TJ": {
+ "name": "Tajikistani"
+ },
+ "TZ": {
+ "name": "Tanzania"
+ },
+ "TL": {
+ "name": "Timori ya Mashariki"
+ },
+ "TG": {
+ "name": "Togo"
+ },
+ "TK": {
+ "name": "Tokelau"
+ },
+ "TO": {
+ "name": "Tonga"
+ },
+ "TT": {
+ "name": "Trinidad na Tobago"
+ },
+ "TA": {
+ "name": "Tristan da Cunha"
+ },
+ "TN": {
+ "name": "Tunisia"
+ },
+ "TM": {
+ "name": "Turukimenistani"
+ },
+ "TV": {
+ "name": "Tuvalu"
+ },
+ "UM": {
+ "name": "U.S. Outlying Islands"
+ },
+ "IR": {
+ "name": "Uajemi"
+ },
+ "BE": {
+ "name": "Ubelgiji"
+ },
+ "FR": {
+ "name": "Ufaransa"
+ },
+ "FI": {
+ "name": "Ufini"
+ },
+ "UG": {
+ "name": "Uganda"
+ },
+ "GR": {
+ "name": "Ugiriki"
+ },
+ "ET": {
+ "name": "Uhabeshi"
+ },
+ "NL": {
+ "name": "Uholanzi"
+ },
+ "GB": {
+ "name": "Uingereza"
+ },
+ "DE": {
+ "name": "Ujerumani"
+ },
+ "PS": {
+ "name": "Ukingo wa Magharibi na Ukanda wa Gaza wa Palestina"
+ },
+ "UA": {
+ "name": "Ukraini"
+ },
+ "PT": {
+ "name": "Ureno"
+ },
+ "UY": {
+ "name": "Urugwai"
+ },
+ "RU": {
+ "name": "Urusi"
+ },
+ "SZ": {
+ "name": "Uswazi"
+ },
+ "SE": {
+ "name": "Uswidi"
+ },
+ "CH": {
+ "name": "Uswisi"
+ },
+ "TR": {
+ "name": "Uturuki"
+ },
+ "UZ": {
+ "name": "Uzibekistani"
+ },
+ "VU": {
+ "name": "Vanuatu"
+ },
+ "VA": {
+ "name": "Vatikani"
+ },
+ "VE": {
+ "name": "Venezuela"
+ },
+ "VN": {
+ "name": "Vietinamu"
+ },
+ "CK": {
+ "name": "Visiwa vya Cook"
+ },
+ "FK": {
+ "name": "Visiwa vya Falkland"
+ },
+ "KY": {
+ "name": "Visiwa vya Kayman"
+ },
+ "MP": {
+ "name": "Visiwa vya Mariana vya Kaskazini"
+ },
+ "MH": {
+ "name": "Visiwa vya Marshal"
+ },
+ "SB": {
+ "name": "Visiwa vya Solomon"
+ },
+ "TC": {
+ "name": "Visiwa vya Turki na Kaiko"
+ },
+ "VI": {
+ "name": "Visiwa vya Virgin vya Marekani"
+ },
+ "VG": {
+ "name": "Visiwa vya Virgin vya Uingereza"
+ },
+ "WF": {
+ "name": "Walis na Futuna"
+ },
+ "EH": {
+ "name": "Western Sahara"
+ },
+ "YE": {
+ "name": "Yemeni"
+ },
+ "JO": {
+ "name": "Yordani"
+ },
+ "ZM": {
+ "name": "Zambia"
+ },
+ "ZW": {
+ "name": "Zimbabwe"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/country/sbp.json b/library/intl/resources/country/sbp.json
new file mode 100644
index 000000000..3c3a0c815
--- /dev/null
+++ b/library/intl/resources/country/sbp.json
@@ -0,0 +1,761 @@
+{
+ "ZA": {
+ "name": "Afilika Kusini"
+ },
+ "AF": {
+ "name": "Afuganisitani"
+ },
+ "AR": {
+ "name": "Ajentina"
+ },
+ "AX": {
+ "name": "Ã…land Islands"
+ },
+ "DZ": {
+ "name": "Alijeliya"
+ },
+ "AM": {
+ "name": "Alimeniya"
+ },
+ "AW": {
+ "name": "Aluba"
+ },
+ "AL": {
+ "name": "Alubaniya"
+ },
+ "AD": {
+ "name": "Andola"
+ },
+ "AO": {
+ "name": "Angola"
+ },
+ "AI": {
+ "name": "Anguilla"
+ },
+ "AG": {
+ "name": "Anitiguya ni Balubuda"
+ },
+ "AQ": {
+ "name": "Antarctica"
+ },
+ "AZ": {
+ "name": "Asabajani"
+ },
+ "AC": {
+ "name": "Ascension Island"
+ },
+ "AU": {
+ "name": "Awusitilaliya"
+ },
+ "AT": {
+ "name": "Awusitiliya"
+ },
+ "IE": {
+ "name": "Ayalandi"
+ },
+ "IS": {
+ "name": "Ayisilendi"
+ },
+ "BB": {
+ "name": "Babadosi"
+ },
+ "BH": {
+ "name": "Bahaleni"
+ },
+ "BS": {
+ "name": "Bahama"
+ },
+ "BD": {
+ "name": "Bangiladeshi"
+ },
+ "BY": {
+ "name": "Belalusi"
+ },
+ "BM": {
+ "name": "Belimuda"
+ },
+ "BZ": {
+ "name": "Belise"
+ },
+ "BJ": {
+ "name": "Benini"
+ },
+ "BO": {
+ "name": "Boliviya"
+ },
+ "BA": {
+ "name": "Bosiniya ni Hesegovina"
+ },
+ "BW": {
+ "name": "Botiswana"
+ },
+ "BF": {
+ "name": "Bukinafaso"
+ },
+ "MG": {
+ "name": "Bukini"
+ },
+ "BR": {
+ "name": "Bulasili"
+ },
+ "BG": {
+ "name": "Buligaliya"
+ },
+ "BI": {
+ "name": "Bulundi"
+ },
+ "BN": {
+ "name": "Buluneyi"
+ },
+ "BT": {
+ "name": "Butani"
+ },
+ "IC": {
+ "name": "Canary Islands"
+ },
+ "BQ": {
+ "name": "Caribbean Netherlands"
+ },
+ "EA": {
+ "name": "Ceuta & Melilla"
+ },
+ "CX": {
+ "name": "Christmas Island"
+ },
+ "CC": {
+ "name": "Cocos (Keeling) Islands"
+ },
+ "CW": {
+ "name": "Curaçao"
+ },
+ "DK": {
+ "name": "Denimaki"
+ },
+ "DG": {
+ "name": "Diego Garcia"
+ },
+ "DM": {
+ "name": "Dominika"
+ },
+ "EC": {
+ "name": "Ekwado"
+ },
+ "SV": {
+ "name": "Elisavado"
+ },
+ "ER": {
+ "name": "Elitileya"
+ },
+ "EE": {
+ "name": "Esitoniya"
+ },
+ "FO": {
+ "name": "Faroe Islands"
+ },
+ "FK": {
+ "name": "Figunguli fya Fokolendi"
+ },
+ "CK": {
+ "name": "Figunguli fya Kooki"
+ },
+ "MP": {
+ "name": "Figunguli fya Maliyana ifya luvala lwa Kunyamande"
+ },
+ "SB": {
+ "name": "Figunguli fya Solomoni"
+ },
+ "TC": {
+ "name": "Figunguli fya Tuliki ni Kaiko"
+ },
+ "VI": {
+ "name": "Figunguli fya Viliginiya ifya Malekani"
+ },
+ "KY": {
+ "name": "Figunguli ifya Kayimayi"
+ },
+ "MH": {
+ "name": "Figunguli ifya Malishali"
+ },
+ "VG": {
+ "name": "Figunguli ifya Viliginiya ifya Uwingelesa"
+ },
+ "FJ": {
+ "name": "Fiji"
+ },
+ "PH": {
+ "name": "Filipino"
+ },
+ "TF": {
+ "name": "French Southern Territories"
+ },
+ "GA": {
+ "name": "Gaboni"
+ },
+ "GM": {
+ "name": "Gambiya"
+ },
+ "GD": {
+ "name": "Gilenada"
+ },
+ "GL": {
+ "name": "Gilinilandi"
+ },
+ "GN": {
+ "name": "Gine"
+ },
+ "GW": {
+ "name": "Ginebisawu"
+ },
+ "GQ": {
+ "name": "Ginekweta"
+ },
+ "GG": {
+ "name": "Guernsey"
+ },
+ "GY": {
+ "name": "Guyana"
+ },
+ "GP": {
+ "name": "Gwadelupe"
+ },
+ "GU": {
+ "name": "Gwamu"
+ },
+ "GT": {
+ "name": "Gwatemala"
+ },
+ "GF": {
+ "name": "Gwiyana ya Wufalansa"
+ },
+ "HT": {
+ "name": "Hayiti"
+ },
+ "ES": {
+ "name": "Hisipaniya"
+ },
+ "HN": {
+ "name": "Hondulasi"
+ },
+ "HK": {
+ "name": "Hong Kong SAR China"
+ },
+ "HU": {
+ "name": "Hungaliya"
+ },
+ "IQ": {
+ "name": "Ilaki"
+ },
+ "IN": {
+ "name": "Indiya"
+ },
+ "ID": {
+ "name": "Indonesiya"
+ },
+ "IL": {
+ "name": "Isilaeli"
+ },
+ "IM": {
+ "name": "Isle of Man"
+ },
+ "IT": {
+ "name": "Italiya"
+ },
+ "JM": {
+ "name": "Jamaika"
+ },
+ "CF": {
+ "name": "Jamuhuli ya Afilika ya Pakhati"
+ },
+ "DO": {
+ "name": "Jamuhuli ya Dominika"
+ },
+ "CD": {
+ "name": "Jamuhuli ya Kidemokilasiya ya Kongo"
+ },
+ "CZ": {
+ "name": "Jamuhuli ya Sheki"
+ },
+ "JP": {
+ "name": "Japani"
+ },
+ "JE": {
+ "name": "Jersey"
+ },
+ "GI": {
+ "name": "Jibulalita"
+ },
+ "DJ": {
+ "name": "Jibuti"
+ },
+ "GE": {
+ "name": "Jojiya"
+ },
+ "KH": {
+ "name": "Kambodiya"
+ },
+ "CM": {
+ "name": "Kameruni"
+ },
+ "CA": {
+ "name": "Kanada"
+ },
+ "KZ": {
+ "name": "Kasakisitani"
+ },
+ "QA": {
+ "name": "Katali"
+ },
+ "KE": {
+ "name": "Kenya"
+ },
+ "CV": {
+ "name": "Kepuvede"
+ },
+ "GH": {
+ "name": "Khana"
+ },
+ "KI": {
+ "name": "Kilibati"
+ },
+ "KG": {
+ "name": "Kiligisisitani"
+ },
+ "CI": {
+ "name": "Kodivaya"
+ },
+ "HR": {
+ "name": "Kolasiya"
+ },
+ "KR": {
+ "name": "Koleya ya Kusini"
+ },
+ "KP": {
+ "name": "Koleya ya luvala lwa Kunyamande"
+ },
+ "CO": {
+ "name": "Kolombiya"
+ },
+ "KM": {
+ "name": "Komolo"
+ },
+ "CG": {
+ "name": "Kongo"
+ },
+ "CR": {
+ "name": "Kositalika"
+ },
+ "XK": {
+ "name": "Kosovo"
+ },
+ "CU": {
+ "name": "Kuba"
+ },
+ "CY": {
+ "name": "Kupilosi"
+ },
+ "KW": {
+ "name": "Kuwaiti"
+ },
+ "LU": {
+ "name": "Lasembagi"
+ },
+ "LV": {
+ "name": "Lativiya"
+ },
+ "LA": {
+ "name": "Layosi"
+ },
+ "LB": {
+ "name": "Lebanoni"
+ },
+ "LS": {
+ "name": "Lesoto"
+ },
+ "LR": {
+ "name": "Libeliya"
+ },
+ "LY": {
+ "name": "Libiya"
+ },
+ "LI": {
+ "name": "Lisheniteni"
+ },
+ "LT": {
+ "name": "Litwaniya"
+ },
+ "RE": {
+ "name": "Liyunioni"
+ },
+ "RO": {
+ "name": "Lomaniya"
+ },
+ "RW": {
+ "name": "Lwanda"
+ },
+ "MO": {
+ "name": "Macau SAR China"
+ },
+ "MW": {
+ "name": "Malawi"
+ },
+ "US": {
+ "name": "Malekani"
+ },
+ "MY": {
+ "name": "Malesiya"
+ },
+ "ML": {
+ "name": "Mali"
+ },
+ "MT": {
+ "name": "Malita"
+ },
+ "MQ": {
+ "name": "Malitiniki"
+ },
+ "MK": {
+ "name": "Masedoniya"
+ },
+ "YT": {
+ "name": "Mayote"
+ },
+ "MX": {
+ "name": "Mekisiko"
+ },
+ "FM": {
+ "name": "Mikilonesiya"
+ },
+ "EG": {
+ "name": "Misili"
+ },
+ "MV": {
+ "name": "Modivu"
+ },
+ "MD": {
+ "name": "Molidova"
+ },
+ "MU": {
+ "name": "Molisi"
+ },
+ "MR": {
+ "name": "Molitaniya"
+ },
+ "MA": {
+ "name": "Moloko"
+ },
+ "MC": {
+ "name": "Monako"
+ },
+ "MN": {
+ "name": "Mongoliya"
+ },
+ "MS": {
+ "name": "Monitiselati"
+ },
+ "ME": {
+ "name": "Montenegro"
+ },
+ "PS": {
+ "name": "Munjema gwa Kusikha nu Luvala lwa Gasa lwa Palesit"
+ },
+ "MZ": {
+ "name": "Musumbiji"
+ },
+ "MM": {
+ "name": "Muyama"
+ },
+ "NA": {
+ "name": "Namibiya"
+ },
+ "NR": {
+ "name": "Nawulu"
+ },
+ "NP": {
+ "name": "Nepali"
+ },
+ "NE": {
+ "name": "Nijeli"
+ },
+ "NG": {
+ "name": "Nijeliya"
+ },
+ "NI": {
+ "name": "Nikalagwa"
+ },
+ "NU": {
+ "name": "Niwue"
+ },
+ "NO": {
+ "name": "Nolwe"
+ },
+ "NC": {
+ "name": "Nyukaledoniya"
+ },
+ "NZ": {
+ "name": "Nyusilendi"
+ },
+ "OM": {
+ "name": "Omani"
+ },
+ "PK": {
+ "name": "Pakisitani"
+ },
+ "PY": {
+ "name": "Palagwayi"
+ },
+ "PW": {
+ "name": "Palawu"
+ },
+ "PA": {
+ "name": "Panama"
+ },
+ "PG": {
+ "name": "Papuwa"
+ },
+ "PE": {
+ "name": "Pelu"
+ },
+ "PN": {
+ "name": "Pitikailini"
+ },
+ "PL": {
+ "name": "Polandi"
+ },
+ "PF": {
+ "name": "Polinesiya ya Wufalansa"
+ },
+ "PR": {
+ "name": "Pwetoliko"
+ },
+ "SM": {
+ "name": "Samalino"
+ },
+ "ZM": {
+ "name": "Sambiya"
+ },
+ "WS": {
+ "name": "Samoya"
+ },
+ "AS": {
+ "name": "Samoya ya Malekani"
+ },
+ "SH": {
+ "name": "Santahelena"
+ },
+ "KN": {
+ "name": "Santakitisi ni Nevisi"
+ },
+ "LC": {
+ "name": "Santalusiya"
+ },
+ "PM": {
+ "name": "Santapieli ni Mikeloni"
+ },
+ "VC": {
+ "name": "Santavisenti na Gilenadini"
+ },
+ "SA": {
+ "name": "Sawudi"
+ },
+ "ST": {
+ "name": "Sayo Tome ni Pilinikipe"
+ },
+ "SN": {
+ "name": "Senegali"
+ },
+ "RS": {
+ "name": "Serbia"
+ },
+ "TD": {
+ "name": "Shadi"
+ },
+ "SC": {
+ "name": "Shelisheli"
+ },
+ "NF": {
+ "name": "Shigunguli sha Nolifoki"
+ },
+ "CL": {
+ "name": "Shile"
+ },
+ "CN": {
+ "name": "Shina"
+ },
+ "SL": {
+ "name": "Siela Liyoni"
+ },
+ "LK": {
+ "name": "Sililanka"
+ },
+ "SY": {
+ "name": "Siliya"
+ },
+ "SK": {
+ "name": "Silovakiya"
+ },
+ "SI": {
+ "name": "Siloveniya"
+ },
+ "ZW": {
+ "name": "Simbabwe"
+ },
+ "SG": {
+ "name": "Singapoo"
+ },
+ "SX": {
+ "name": "Sint Maarten"
+ },
+ "SO": {
+ "name": "Somaliya"
+ },
+ "GS": {
+ "name": "South Georgia & South Sandwich Islands"
+ },
+ "SS": {
+ "name": "South Sudan"
+ },
+ "BL": {
+ "name": "St. Barthélemy"
+ },
+ "MF": {
+ "name": "St. Martin"
+ },
+ "SD": {
+ "name": "Sudani"
+ },
+ "SR": {
+ "name": "Sulinamu"
+ },
+ "SJ": {
+ "name": "Svalbard & Jan Mayen"
+ },
+ "TH": {
+ "name": "Tailandi"
+ },
+ "TW": {
+ "name": "Taiwani"
+ },
+ "TJ": {
+ "name": "Tajikisitani"
+ },
+ "TZ": {
+ "name": "Tansaniya"
+ },
+ "TT": {
+ "name": "Tilinidadi ni Tobago"
+ },
+ "TL": {
+ "name": "Timoli ya kunena"
+ },
+ "TG": {
+ "name": "Togo"
+ },
+ "TK": {
+ "name": "Tokelawu"
+ },
+ "TO": {
+ "name": "Tonga"
+ },
+ "TA": {
+ "name": "Tristan da Cunha"
+ },
+ "TM": {
+ "name": "Tulukimenisitani"
+ },
+ "TN": {
+ "name": "Tunisiya"
+ },
+ "TV": {
+ "name": "Tuvalu"
+ },
+ "UM": {
+ "name": "U.S. Outlying Islands"
+ },
+ "BE": {
+ "name": "Ubeligiji"
+ },
+ "UG": {
+ "name": "Uganda"
+ },
+ "ET": {
+ "name": "Uhabeshi"
+ },
+ "UY": {
+ "name": "Ulugwayi"
+ },
+ "IO": {
+ "name": "Uluvala lwa Uwingelesa ku Bahali ya Hindi"
+ },
+ "UZ": {
+ "name": "Usibekisitani"
+ },
+ "SZ": {
+ "name": "Uswasi"
+ },
+ "SE": {
+ "name": "Uswidi"
+ },
+ "CH": {
+ "name": "Uswisi"
+ },
+ "TR": {
+ "name": "Utuluki"
+ },
+ "IR": {
+ "name": "Uwajemi"
+ },
+ "GB": {
+ "name": "Uwingelesa"
+ },
+ "VU": {
+ "name": "Vanuatu"
+ },
+ "VA": {
+ "name": "Vatikani"
+ },
+ "VE": {
+ "name": "Venesuela"
+ },
+ "VN": {
+ "name": "Vietinamu"
+ },
+ "WF": {
+ "name": "Walisi ni Futuna"
+ },
+ "EH": {
+ "name": "Western Sahara"
+ },
+ "FR": {
+ "name": "Wufalansa"
+ },
+ "FI": {
+ "name": "Wufini"
+ },
+ "GR": {
+ "name": "Wugiliki"
+ },
+ "NL": {
+ "name": "Wuholansi"
+ },
+ "DE": {
+ "name": "Wujelumani"
+ },
+ "PT": {
+ "name": "Wuleno"
+ },
+ "RU": {
+ "name": "Wulusi"
+ },
+ "AE": {
+ "name": "Wutwa wa shiyalabu"
+ },
+ "YE": {
+ "name": "Yemeni"
+ },
+ "JO": {
+ "name": "Yolodani"
+ },
+ "UA": {
+ "name": "Yukileini"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/country/se-FI.json b/library/intl/resources/country/se-FI.json
new file mode 100644
index 000000000..8a60295a9
--- /dev/null
+++ b/library/intl/resources/country/se-FI.json
@@ -0,0 +1,761 @@
+{
+ "AF": {
+ "name": "Afghanistan"
+ },
+ "AX": {
+ "name": "Ålánda"
+ },
+ "AL": {
+ "name": "Albánia"
+ },
+ "DZ": {
+ "name": "Algeria"
+ },
+ "US": {
+ "name": "Amerihká ovttastuvvan stáhtat"
+ },
+ "AS": {
+ "name": "Amerihká Samoa"
+ },
+ "AD": {
+ "name": "Andorra"
+ },
+ "AO": {
+ "name": "Angola"
+ },
+ "AI": {
+ "name": "Anguilla"
+ },
+ "AQ": {
+ "name": "Antárktis"
+ },
+ "AG": {
+ "name": "Antigua ja Barbuda"
+ },
+ "VI": {
+ "name": "AOS Virgin-sullot"
+ },
+ "AR": {
+ "name": "Argentina"
+ },
+ "AM": {
+ "name": "Armenia"
+ },
+ "AW": {
+ "name": "Aruba"
+ },
+ "AC": {
+ "name": "Ascension"
+ },
+ "AZ": {
+ "name": "Aserbaižan"
+ },
+ "AU": {
+ "name": "Austrália"
+ },
+ "BS": {
+ "name": "Bahamas"
+ },
+ "BH": {
+ "name": "Bahrain"
+ },
+ "BD": {
+ "name": "Bangladesh"
+ },
+ "BB": {
+ "name": "Barbados"
+ },
+ "BE": {
+ "name": "Belgia"
+ },
+ "BZ": {
+ "name": "Belize"
+ },
+ "BJ": {
+ "name": "Benin"
+ },
+ "BM": {
+ "name": "Bermuda"
+ },
+ "BT": {
+ "name": "Bhutan"
+ },
+ "BO": {
+ "name": "Bolivia"
+ },
+ "BA": {
+ "name": "Bosnia ja Hercegovina"
+ },
+ "BW": {
+ "name": "Botswana"
+ },
+ "BR": {
+ "name": "Brasil"
+ },
+ "IO": {
+ "name": "British Indian Ocean Territory"
+ },
+ "VG": {
+ "name": "Brittania Virgin-sullot"
+ },
+ "BN": {
+ "name": "Brunei"
+ },
+ "BG": {
+ "name": "Bulgária"
+ },
+ "BF": {
+ "name": "Burkina Faso"
+ },
+ "MM": {
+ "name": "Burma"
+ },
+ "BI": {
+ "name": "Burundi"
+ },
+ "BQ": {
+ "name": "Caribbean Netherlands"
+ },
+ "KY": {
+ "name": "Cayman-sullot"
+ },
+ "CZ": {
+ "name": "ÄŒeahkka"
+ },
+ "EA": {
+ "name": "Ceuta ja Melilla"
+ },
+ "TD": {
+ "name": "Chad"
+ },
+ "CL": {
+ "name": "ÄŒiile"
+ },
+ "CC": {
+ "name": "Cocos-sullot"
+ },
+ "CK": {
+ "name": "Cook-sullot"
+ },
+ "CR": {
+ "name": "Costa Rica"
+ },
+ "CW": {
+ "name": "Curaçao"
+ },
+ "DK": {
+ "name": "Dánmárku"
+ },
+ "KP": {
+ "name": "Davvi-Korea"
+ },
+ "MP": {
+ "name": "Davvi-Mariánat"
+ },
+ "DG": {
+ "name": "Diego Garcia"
+ },
+ "DJ": {
+ "name": "Djibouti"
+ },
+ "DM": {
+ "name": "Dominica"
+ },
+ "DO": {
+ "name": "Dominikána dásseváldi"
+ },
+ "DE": {
+ "name": "Duiska"
+ },
+ "TR": {
+ "name": "Durka"
+ },
+ "EC": {
+ "name": "Ecuador"
+ },
+ "EG": {
+ "name": "Egypta"
+ },
+ "GQ": {
+ "name": "Ekvatoriála Guinea"
+ },
+ "SV": {
+ "name": "El Salvador"
+ },
+ "CI": {
+ "name": "Elfenbenariddu"
+ },
+ "ER": {
+ "name": "Eritrea"
+ },
+ "EE": {
+ "name": "Estlánda"
+ },
+ "ET": {
+ "name": "Etiopia"
+ },
+ "FK": {
+ "name": "Falklandsullot"
+ },
+ "FO": {
+ "name": "Fearsullot"
+ },
+ "FJ": {
+ "name": "Fijisullot"
+ },
+ "PH": {
+ "name": "Filippiinnat"
+ },
+ "FR": {
+ "name": "Frankriika"
+ },
+ "GF": {
+ "name": "Frankriikka Guayana"
+ },
+ "PF": {
+ "name": "Frankriikka Polynesia"
+ },
+ "MF": {
+ "name": "Frankriikka Saint Martin"
+ },
+ "TF": {
+ "name": "French Southern Territories"
+ },
+ "GA": {
+ "name": "Gabon"
+ },
+ "GM": {
+ "name": "Gámbia"
+ },
+ "CF": {
+ "name": "Gaska-Afrihká dásseváldi"
+ },
+ "GE": {
+ "name": "Georgia"
+ },
+ "GH": {
+ "name": "Ghana"
+ },
+ "GI": {
+ "name": "Gibraltar"
+ },
+ "GR": {
+ "name": "Greika"
+ },
+ "GD": {
+ "name": "Grenada"
+ },
+ "GP": {
+ "name": "Guadeloupe"
+ },
+ "GU": {
+ "name": "Guam"
+ },
+ "GT": {
+ "name": "Guatemala"
+ },
+ "GG": {
+ "name": "Guernsey"
+ },
+ "GN": {
+ "name": "Guinea"
+ },
+ "GW": {
+ "name": "Guinea-Bissau"
+ },
+ "GY": {
+ "name": "Guyana"
+ },
+ "HT": {
+ "name": "Haiti"
+ },
+ "HN": {
+ "name": "Honduras"
+ },
+ "HK": {
+ "name": "Hongkong"
+ },
+ "IN": {
+ "name": "India"
+ },
+ "ID": {
+ "name": "Indonesia"
+ },
+ "IQ": {
+ "name": "Irak"
+ },
+ "IR": {
+ "name": "Iran"
+ },
+ "IE": {
+ "name": "Irlánda"
+ },
+ "IS": {
+ "name": "Islánda"
+ },
+ "IL": {
+ "name": "Israel"
+ },
+ "IT": {
+ "name": "Itália"
+ },
+ "JM": {
+ "name": "Jamaica"
+ },
+ "JP": {
+ "name": "Japána"
+ },
+ "YE": {
+ "name": "Jemen"
+ },
+ "JE": {
+ "name": "Jersey"
+ },
+ "JO": {
+ "name": "Jordánia"
+ },
+ "CX": {
+ "name": "Juovllat-sullot"
+ },
+ "GL": {
+ "name": "Kalaallit Nunaat"
+ },
+ "KH": {
+ "name": "Kamboža"
+ },
+ "CM": {
+ "name": "Kamerun"
+ },
+ "CA": {
+ "name": "Kanáda"
+ },
+ "IC": {
+ "name": "Kanáriasullot"
+ },
+ "CV": {
+ "name": "Kap Verde"
+ },
+ "KZ": {
+ "name": "Kasakstan"
+ },
+ "KE": {
+ "name": "Kenia"
+ },
+ "CN": {
+ "name": "Kiinná"
+ },
+ "KG": {
+ "name": "Kirgisistan"
+ },
+ "KI": {
+ "name": "Kiribati"
+ },
+ "CO": {
+ "name": "Kolombia"
+ },
+ "KM": {
+ "name": "Komoros"
+ },
+ "CG": {
+ "name": "Kongo-Brazzaville"
+ },
+ "CD": {
+ "name": "Kongo-Kinshasa"
+ },
+ "XK": {
+ "name": "Kosovo"
+ },
+ "HR": {
+ "name": "Kroátia"
+ },
+ "CU": {
+ "name": "Kuba"
+ },
+ "KW": {
+ "name": "Kuwait"
+ },
+ "CY": {
+ "name": "Kypros"
+ },
+ "LA": {
+ "name": "Laos"
+ },
+ "LV": {
+ "name": "Látvia"
+ },
+ "LS": {
+ "name": "Lesotho"
+ },
+ "LB": {
+ "name": "Libanon"
+ },
+ "LR": {
+ "name": "Liberia"
+ },
+ "LY": {
+ "name": "Libya"
+ },
+ "LI": {
+ "name": "Liechtenstein"
+ },
+ "LT": {
+ "name": "Lietuva"
+ },
+ "GS": {
+ "name": "Lulli Georgia ja Lulli Sandwich-sullot"
+ },
+ "LU": {
+ "name": "Luxembourg"
+ },
+ "MG": {
+ "name": "Madagaskar"
+ },
+ "MO": {
+ "name": "Makáo"
+ },
+ "MK": {
+ "name": "Makedonia"
+ },
+ "MW": {
+ "name": "Malawi"
+ },
+ "MV": {
+ "name": "Malediivvat"
+ },
+ "MY": {
+ "name": "Malesia"
+ },
+ "ML": {
+ "name": "Mali"
+ },
+ "MT": {
+ "name": "Málta"
+ },
+ "IM": {
+ "name": "Mann-sullot"
+ },
+ "MA": {
+ "name": "Marokko"
+ },
+ "MH": {
+ "name": "Marshallsullot"
+ },
+ "MQ": {
+ "name": "Martinique"
+ },
+ "ZA": {
+ "name": "Mátta-Afrihká"
+ },
+ "KR": {
+ "name": "Mátta-Korea"
+ },
+ "SS": {
+ "name": "Máttasudan"
+ },
+ "MR": {
+ "name": "Mauretánia"
+ },
+ "MU": {
+ "name": "Mauritius"
+ },
+ "YT": {
+ "name": "Mayotte"
+ },
+ "MX": {
+ "name": "Meksiko"
+ },
+ "FM": {
+ "name": "Mikronesia"
+ },
+ "MD": {
+ "name": "Moldávia"
+ },
+ "MC": {
+ "name": "Monaco"
+ },
+ "MN": {
+ "name": "Mongolia"
+ },
+ "ME": {
+ "name": "Montenegro"
+ },
+ "MS": {
+ "name": "Montserrat"
+ },
+ "MZ": {
+ "name": "Mosambik"
+ },
+ "NA": {
+ "name": "Namibia"
+ },
+ "NR": {
+ "name": "Nauru"
+ },
+ "NP": {
+ "name": "Nepal"
+ },
+ "NI": {
+ "name": "Nicaragua"
+ },
+ "NE": {
+ "name": "Niger"
+ },
+ "NG": {
+ "name": "Nigeria"
+ },
+ "NU": {
+ "name": "Niue"
+ },
+ "NF": {
+ "name": "Norfolksullot"
+ },
+ "NO": {
+ "name": "Norga"
+ },
+ "TL": {
+ "name": "Nuorta-Timor"
+ },
+ "AT": {
+ "name": "Nuortariika"
+ },
+ "EH": {
+ "name": "Oarje-Sahára"
+ },
+ "NC": {
+ "name": "OÄ‘Ä‘a-Kaledonia"
+ },
+ "NZ": {
+ "name": "Ođđa-Selánda"
+ },
+ "OM": {
+ "name": "Oman"
+ },
+ "AE": {
+ "name": "Ovttastuvvan Arábaemiráhtat"
+ },
+ "PK": {
+ "name": "Pakistan"
+ },
+ "PW": {
+ "name": "Palau"
+ },
+ "PS": {
+ "name": "Palestina"
+ },
+ "PA": {
+ "name": "Panama"
+ },
+ "PG": {
+ "name": "Papua-OÄ‘Ä‘a-Guinea"
+ },
+ "PY": {
+ "name": "Paraguay"
+ },
+ "PE": {
+ "name": "Peru"
+ },
+ "PN": {
+ "name": "Pitcairn"
+ },
+ "PL": {
+ "name": "Polen"
+ },
+ "PT": {
+ "name": "Portugála"
+ },
+ "PR": {
+ "name": "Puerto Rico"
+ },
+ "QA": {
+ "name": "Qatar"
+ },
+ "RE": {
+ "name": "Réunion"
+ },
+ "RO": {
+ "name": "Románia"
+ },
+ "RU": {
+ "name": "Ruošša"
+ },
+ "SE": {
+ "name": "Ruoŧŧa"
+ },
+ "RW": {
+ "name": "Rwanda"
+ },
+ "BL": {
+ "name": "Saint Barthélemy"
+ },
+ "SH": {
+ "name": "Saint Helena"
+ },
+ "KN": {
+ "name": "Saint Kitts ja Nevis"
+ },
+ "LC": {
+ "name": "Saint Lucia"
+ },
+ "PM": {
+ "name": "Saint Pierre ja Miquelon"
+ },
+ "VC": {
+ "name": "Saint Vincent ja Grenadine"
+ },
+ "SB": {
+ "name": "Salomon-sullot"
+ },
+ "WS": {
+ "name": "Samoa"
+ },
+ "SM": {
+ "name": "San Marino"
+ },
+ "ST": {
+ "name": "São Tomé ja Príncipe"
+ },
+ "SA": {
+ "name": "Saudi-Arábia"
+ },
+ "SN": {
+ "name": "Senegal"
+ },
+ "RS": {
+ "name": "Serbia"
+ },
+ "SC": {
+ "name": "Seychellsullot"
+ },
+ "SL": {
+ "name": "Sierra Leone"
+ },
+ "SG": {
+ "name": "Singapore"
+ },
+ "SK": {
+ "name": "Slovákia"
+ },
+ "SI": {
+ "name": "Slovenia"
+ },
+ "SO": {
+ "name": "Somália"
+ },
+ "ES": {
+ "name": "Spánia"
+ },
+ "LK": {
+ "name": "Sri Lanka"
+ },
+ "GB": {
+ "name": "Stuorra-Británnia"
+ },
+ "SD": {
+ "name": "Sudan"
+ },
+ "FI": {
+ "name": "Suopma"
+ },
+ "SR": {
+ "name": "Surinam"
+ },
+ "SJ": {
+ "name": "Svalbárda ja Jan Mayen"
+ },
+ "SZ": {
+ "name": "Svazieana"
+ },
+ "CH": {
+ "name": "Å veica"
+ },
+ "SY": {
+ "name": "Syria"
+ },
+ "TW": {
+ "name": "Taiwan"
+ },
+ "TZ": {
+ "name": "Tanzánia"
+ },
+ "TJ": {
+ "name": "Tažikistan"
+ },
+ "TH": {
+ "name": "Thaieana"
+ },
+ "TG": {
+ "name": "Togo"
+ },
+ "TK": {
+ "name": "Tokelau"
+ },
+ "TO": {
+ "name": "Tonga"
+ },
+ "TT": {
+ "name": "Trinidad ja Tobago"
+ },
+ "TA": {
+ "name": "Tristan da Cunha"
+ },
+ "TN": {
+ "name": "Tunisia"
+ },
+ "TM": {
+ "name": "Turkmenistan"
+ },
+ "TC": {
+ "name": "Turks ja Caicos-sullot"
+ },
+ "TV": {
+ "name": "Tuvalu"
+ },
+ "UM": {
+ "name": "U.S. Outlying Islands"
+ },
+ "UG": {
+ "name": "Uganda"
+ },
+ "UA": {
+ "name": "Ukraina"
+ },
+ "HU": {
+ "name": "Ungár"
+ },
+ "UY": {
+ "name": "Uruguay"
+ },
+ "UZ": {
+ "name": "Usbekistan"
+ },
+ "VU": {
+ "name": "Vanuatu"
+ },
+ "VA": {
+ "name": "Vatikána"
+ },
+ "VE": {
+ "name": "Venezuela"
+ },
+ "VN": {
+ "name": "Vietnam"
+ },
+ "BY": {
+ "name": "Vilges-Ruošša"
+ },
+ "NL": {
+ "name": "Vuolleeatnamat"
+ },
+ "SX": {
+ "name": "Vuolleeatnamat Saint Martin"
+ },
+ "WF": {
+ "name": "Wallis ja Futuna"
+ },
+ "ZM": {
+ "name": "Zambia"
+ },
+ "ZW": {
+ "name": "Zimbabwe"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/country/se.json b/library/intl/resources/country/se.json
new file mode 100644
index 000000000..5de6ab076
--- /dev/null
+++ b/library/intl/resources/country/se.json
@@ -0,0 +1,761 @@
+{
+ "AF": {
+ "name": "Afghanistan"
+ },
+ "AX": {
+ "name": "Ålánda"
+ },
+ "AL": {
+ "name": "Albánia"
+ },
+ "DZ": {
+ "name": "Algeria"
+ },
+ "US": {
+ "name": "Amerihká ovttastuvvan stáhtat"
+ },
+ "AS": {
+ "name": "Amerihká Samoa"
+ },
+ "AD": {
+ "name": "Andorra"
+ },
+ "AO": {
+ "name": "Angola"
+ },
+ "AI": {
+ "name": "Anguilla"
+ },
+ "AQ": {
+ "name": "Antárktis"
+ },
+ "AG": {
+ "name": "Antigua ja Barbuda"
+ },
+ "VI": {
+ "name": "AOS Virgin-sullot"
+ },
+ "AR": {
+ "name": "Argentina"
+ },
+ "AM": {
+ "name": "Armenia"
+ },
+ "AW": {
+ "name": "Aruba"
+ },
+ "AC": {
+ "name": "Ascension"
+ },
+ "AZ": {
+ "name": "Aserbaižan"
+ },
+ "AU": {
+ "name": "Austrália"
+ },
+ "BS": {
+ "name": "Bahamas"
+ },
+ "BH": {
+ "name": "Bahrain"
+ },
+ "BD": {
+ "name": "Bangladesh"
+ },
+ "BB": {
+ "name": "Barbados"
+ },
+ "BE": {
+ "name": "Belgia"
+ },
+ "BZ": {
+ "name": "Belize"
+ },
+ "BJ": {
+ "name": "Benin"
+ },
+ "BM": {
+ "name": "Bermuda"
+ },
+ "BT": {
+ "name": "Bhutan"
+ },
+ "BO": {
+ "name": "Bolivia"
+ },
+ "BA": {
+ "name": "Bosnia-Hercegovina"
+ },
+ "BW": {
+ "name": "Botswana"
+ },
+ "BR": {
+ "name": "Brasil"
+ },
+ "IO": {
+ "name": "British Indian Ocean Territory"
+ },
+ "VG": {
+ "name": "Brittania Virgin-sullot"
+ },
+ "BN": {
+ "name": "Brunei"
+ },
+ "BG": {
+ "name": "Bulgária"
+ },
+ "BF": {
+ "name": "Burkina Faso"
+ },
+ "MM": {
+ "name": "Burma"
+ },
+ "BI": {
+ "name": "Burundi"
+ },
+ "BQ": {
+ "name": "Caribbean Netherlands"
+ },
+ "KY": {
+ "name": "Cayman-sullot"
+ },
+ "CZ": {
+ "name": "ÄŒeahkka"
+ },
+ "EA": {
+ "name": "Ceuta ja Melilla"
+ },
+ "CL": {
+ "name": "ÄŒiile"
+ },
+ "CC": {
+ "name": "Cocos-sullot"
+ },
+ "CK": {
+ "name": "Cook-sullot"
+ },
+ "CR": {
+ "name": "Costa Rica"
+ },
+ "CW": {
+ "name": "Curaçao"
+ },
+ "DK": {
+ "name": "Dánmárku"
+ },
+ "KP": {
+ "name": "Davvi-Korea"
+ },
+ "MP": {
+ "name": "Davvi-Mariánat"
+ },
+ "SD": {
+ "name": "Davvisudan"
+ },
+ "DG": {
+ "name": "Diego Garcia"
+ },
+ "DJ": {
+ "name": "Djibouti"
+ },
+ "DM": {
+ "name": "Dominica"
+ },
+ "DO": {
+ "name": "Dominikána dásseváldi"
+ },
+ "DE": {
+ "name": "Duiska"
+ },
+ "TR": {
+ "name": "Durka"
+ },
+ "EC": {
+ "name": "Ecuador"
+ },
+ "EG": {
+ "name": "Egypta"
+ },
+ "GQ": {
+ "name": "Ekvatoriála Guinea"
+ },
+ "SV": {
+ "name": "El Salvador"
+ },
+ "CI": {
+ "name": "Elfenbenariddu"
+ },
+ "ER": {
+ "name": "Eritrea"
+ },
+ "EE": {
+ "name": "Estlánda"
+ },
+ "ET": {
+ "name": "Etiopia"
+ },
+ "FK": {
+ "name": "Falklandsullot"
+ },
+ "FO": {
+ "name": "Fearsullot"
+ },
+ "FJ": {
+ "name": "Fijisullot"
+ },
+ "PH": {
+ "name": "Filippiinnat"
+ },
+ "FR": {
+ "name": "Frankriika"
+ },
+ "GF": {
+ "name": "Frankriikka Guayana"
+ },
+ "PF": {
+ "name": "Frankriikka Polynesia"
+ },
+ "MF": {
+ "name": "Frankriikka Saint Martin"
+ },
+ "TF": {
+ "name": "French Southern Territories"
+ },
+ "GA": {
+ "name": "Gabon"
+ },
+ "GM": {
+ "name": "Gámbia"
+ },
+ "CF": {
+ "name": "Gaska-Afrihká dásseváldi"
+ },
+ "GE": {
+ "name": "Georgia"
+ },
+ "GH": {
+ "name": "Ghana"
+ },
+ "GI": {
+ "name": "Gibraltar"
+ },
+ "GR": {
+ "name": "Greika"
+ },
+ "GD": {
+ "name": "Grenada"
+ },
+ "GP": {
+ "name": "Guadeloupe"
+ },
+ "GU": {
+ "name": "Guam"
+ },
+ "GT": {
+ "name": "Guatemala"
+ },
+ "GG": {
+ "name": "Guernsey"
+ },
+ "GN": {
+ "name": "Guinea"
+ },
+ "GW": {
+ "name": "Guinea-Bissau"
+ },
+ "GY": {
+ "name": "Guyana"
+ },
+ "HT": {
+ "name": "Haiti"
+ },
+ "HN": {
+ "name": "Honduras"
+ },
+ "HK": {
+ "name": "Hongkong"
+ },
+ "IN": {
+ "name": "India"
+ },
+ "ID": {
+ "name": "Indonesia"
+ },
+ "IQ": {
+ "name": "Irak"
+ },
+ "IR": {
+ "name": "Iran"
+ },
+ "IE": {
+ "name": "Irlánda"
+ },
+ "IS": {
+ "name": "Islánda"
+ },
+ "IL": {
+ "name": "Israel"
+ },
+ "IT": {
+ "name": "Itália"
+ },
+ "JM": {
+ "name": "Jamaica"
+ },
+ "JP": {
+ "name": "Japána"
+ },
+ "YE": {
+ "name": "Jemen"
+ },
+ "JE": {
+ "name": "Jersey"
+ },
+ "JO": {
+ "name": "Jordánia"
+ },
+ "CX": {
+ "name": "Juovllat-sullot"
+ },
+ "GL": {
+ "name": "Kalaallit Nunaat"
+ },
+ "KH": {
+ "name": "Kambodža"
+ },
+ "CM": {
+ "name": "Kamerun"
+ },
+ "CA": {
+ "name": "Kanáda"
+ },
+ "IC": {
+ "name": "Kanáriasullot"
+ },
+ "CV": {
+ "name": "Kap Verde"
+ },
+ "KZ": {
+ "name": "Kasakstan"
+ },
+ "KE": {
+ "name": "Kenia"
+ },
+ "CN": {
+ "name": "Kiinná"
+ },
+ "KG": {
+ "name": "Kirgisistan"
+ },
+ "KI": {
+ "name": "Kiribati"
+ },
+ "CO": {
+ "name": "Kolombia"
+ },
+ "KM": {
+ "name": "Komoros"
+ },
+ "CG": {
+ "name": "Kongo-Brazzaville"
+ },
+ "CD": {
+ "name": "Kongo-Kinshasa"
+ },
+ "XK": {
+ "name": "Kosovo"
+ },
+ "HR": {
+ "name": "Kroátia"
+ },
+ "CU": {
+ "name": "Kuba"
+ },
+ "KW": {
+ "name": "Kuwait"
+ },
+ "CY": {
+ "name": "Kypros"
+ },
+ "LA": {
+ "name": "Laos"
+ },
+ "LV": {
+ "name": "Látvia"
+ },
+ "LS": {
+ "name": "Lesotho"
+ },
+ "LB": {
+ "name": "Libanon"
+ },
+ "LR": {
+ "name": "Liberia"
+ },
+ "LY": {
+ "name": "Libya"
+ },
+ "LI": {
+ "name": "Liechtenstein"
+ },
+ "LT": {
+ "name": "Lietuva"
+ },
+ "GS": {
+ "name": "Lulli Georgia ja Lulli Sandwich-sullot"
+ },
+ "LU": {
+ "name": "Luxembourg"
+ },
+ "MG": {
+ "name": "Madagaskar"
+ },
+ "MO": {
+ "name": "Makáo"
+ },
+ "MK": {
+ "name": "Makedonia"
+ },
+ "MW": {
+ "name": "Malawi"
+ },
+ "MV": {
+ "name": "Malediivvat"
+ },
+ "MY": {
+ "name": "Malesia"
+ },
+ "ML": {
+ "name": "Mali"
+ },
+ "MT": {
+ "name": "Málta"
+ },
+ "IM": {
+ "name": "Mann-sullot"
+ },
+ "MA": {
+ "name": "Marokko"
+ },
+ "MH": {
+ "name": "Marshallsullot"
+ },
+ "MQ": {
+ "name": "Martinique"
+ },
+ "ZA": {
+ "name": "Mátta-Afrihká"
+ },
+ "KR": {
+ "name": "Mátta-Korea"
+ },
+ "SS": {
+ "name": "Máttasudan"
+ },
+ "MR": {
+ "name": "Mauretánia"
+ },
+ "MU": {
+ "name": "Mauritius"
+ },
+ "YT": {
+ "name": "Mayotte"
+ },
+ "MX": {
+ "name": "Meksiko"
+ },
+ "FM": {
+ "name": "Mikronesia"
+ },
+ "MD": {
+ "name": "Moldávia"
+ },
+ "MC": {
+ "name": "Monaco"
+ },
+ "MN": {
+ "name": "Mongolia"
+ },
+ "ME": {
+ "name": "Montenegro"
+ },
+ "MS": {
+ "name": "Montserrat"
+ },
+ "MZ": {
+ "name": "Mosambik"
+ },
+ "NA": {
+ "name": "Namibia"
+ },
+ "NR": {
+ "name": "Nauru"
+ },
+ "NP": {
+ "name": "Nepal"
+ },
+ "NI": {
+ "name": "Nicaragua"
+ },
+ "NE": {
+ "name": "Niger"
+ },
+ "NG": {
+ "name": "Nigeria"
+ },
+ "NU": {
+ "name": "Niue"
+ },
+ "NF": {
+ "name": "Norfolksullot"
+ },
+ "NO": {
+ "name": "Norga"
+ },
+ "TL": {
+ "name": "Nuorta-Timor"
+ },
+ "AT": {
+ "name": "Nuortariika"
+ },
+ "EH": {
+ "name": "Oarje-Sahára"
+ },
+ "NC": {
+ "name": "OÄ‘Ä‘a-Kaledonia"
+ },
+ "NZ": {
+ "name": "Ođđa-Selánda"
+ },
+ "OM": {
+ "name": "Oman"
+ },
+ "AE": {
+ "name": "Ovttastuvvan Arábaemiráhtat"
+ },
+ "PK": {
+ "name": "Pakistan"
+ },
+ "PW": {
+ "name": "Palau"
+ },
+ "PS": {
+ "name": "Palestina"
+ },
+ "PA": {
+ "name": "Panama"
+ },
+ "PG": {
+ "name": "Papua-OÄ‘Ä‘a-Guinea"
+ },
+ "PY": {
+ "name": "Paraguay"
+ },
+ "PE": {
+ "name": "Peru"
+ },
+ "PN": {
+ "name": "Pitcairn"
+ },
+ "PL": {
+ "name": "Polen"
+ },
+ "PT": {
+ "name": "Portugála"
+ },
+ "PR": {
+ "name": "Puerto Rico"
+ },
+ "QA": {
+ "name": "Qatar"
+ },
+ "RE": {
+ "name": "Réunion"
+ },
+ "RO": {
+ "name": "Románia"
+ },
+ "RU": {
+ "name": "Ruošša"
+ },
+ "SE": {
+ "name": "Ruoŧŧa"
+ },
+ "RW": {
+ "name": "Rwanda"
+ },
+ "BL": {
+ "name": "Saint Barthélemy"
+ },
+ "SH": {
+ "name": "Saint Helena"
+ },
+ "KN": {
+ "name": "Saint Kitts ja Nevis"
+ },
+ "LC": {
+ "name": "Saint Lucia"
+ },
+ "PM": {
+ "name": "Saint Pierre ja Miquelon"
+ },
+ "VC": {
+ "name": "Saint Vincent ja Grenadine"
+ },
+ "SB": {
+ "name": "Salomon-sullot"
+ },
+ "WS": {
+ "name": "Samoa"
+ },
+ "SM": {
+ "name": "San Marino"
+ },
+ "ST": {
+ "name": "São Tomé ja Príncipe"
+ },
+ "SA": {
+ "name": "Saudi-Arábia"
+ },
+ "SN": {
+ "name": "Senegal"
+ },
+ "RS": {
+ "name": "Serbia"
+ },
+ "SC": {
+ "name": "Seychellsullot"
+ },
+ "SL": {
+ "name": "Sierra Leone"
+ },
+ "SG": {
+ "name": "Singapore"
+ },
+ "SK": {
+ "name": "Slovákia"
+ },
+ "SI": {
+ "name": "Slovenia"
+ },
+ "SO": {
+ "name": "Somália"
+ },
+ "ES": {
+ "name": "Spánia"
+ },
+ "LK": {
+ "name": "Sri Lanka"
+ },
+ "GB": {
+ "name": "Stuorra-Británnia"
+ },
+ "FI": {
+ "name": "Suopma"
+ },
+ "SR": {
+ "name": "Surinam"
+ },
+ "SJ": {
+ "name": "Svalbárda ja Jan Mayen"
+ },
+ "SZ": {
+ "name": "Svazieana"
+ },
+ "CH": {
+ "name": "Å veica"
+ },
+ "SY": {
+ "name": "Syria"
+ },
+ "TW": {
+ "name": "Taiwan"
+ },
+ "TZ": {
+ "name": "Tanzánia"
+ },
+ "TJ": {
+ "name": "Tažikistan"
+ },
+ "TD": {
+ "name": "TÄad"
+ },
+ "TH": {
+ "name": "Thaieana"
+ },
+ "TG": {
+ "name": "Togo"
+ },
+ "TK": {
+ "name": "Tokelau"
+ },
+ "TO": {
+ "name": "Tonga"
+ },
+ "TT": {
+ "name": "Trinidad ja Tobago"
+ },
+ "TA": {
+ "name": "Tristan da Cunha"
+ },
+ "TN": {
+ "name": "Tunisia"
+ },
+ "TM": {
+ "name": "Turkmenistan"
+ },
+ "TC": {
+ "name": "Turks ja Caicos-sullot"
+ },
+ "TV": {
+ "name": "Tuvalu"
+ },
+ "UM": {
+ "name": "U.S. Outlying Islands"
+ },
+ "UG": {
+ "name": "Uganda"
+ },
+ "UA": {
+ "name": "Ukraina"
+ },
+ "HU": {
+ "name": "Ungár"
+ },
+ "UY": {
+ "name": "Uruguay"
+ },
+ "UZ": {
+ "name": "Usbekistan"
+ },
+ "VU": {
+ "name": "Vanuatu"
+ },
+ "VA": {
+ "name": "Vatikána"
+ },
+ "VE": {
+ "name": "Venezuela"
+ },
+ "VN": {
+ "name": "Vietnam"
+ },
+ "BY": {
+ "name": "Vilges-Ruošša"
+ },
+ "NL": {
+ "name": "Vuolleeatnamat"
+ },
+ "SX": {
+ "name": "Vuolleeatnamat Saint Martin"
+ },
+ "WF": {
+ "name": "Wallis ja Futuna"
+ },
+ "ZM": {
+ "name": "Zambia"
+ },
+ "ZW": {
+ "name": "Zimbabwe"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/country/seh.json b/library/intl/resources/country/seh.json
new file mode 100644
index 000000000..aa29db556
--- /dev/null
+++ b/library/intl/resources/country/seh.json
@@ -0,0 +1,761 @@
+{
+ "AF": {
+ "name": "Afeganistão"
+ },
+ "ZA": {
+ "name": "Ãfrica do Sul"
+ },
+ "AX": {
+ "name": "Ã…land Islands"
+ },
+ "AL": {
+ "name": "Albânia"
+ },
+ "DE": {
+ "name": "Alemanha"
+ },
+ "AD": {
+ "name": "Andorra"
+ },
+ "AO": {
+ "name": "Angola"
+ },
+ "AI": {
+ "name": "Anguilla"
+ },
+ "AQ": {
+ "name": "Antarctica"
+ },
+ "AG": {
+ "name": "Antígua e Barbuda"
+ },
+ "SA": {
+ "name": "Arábia Saudita"
+ },
+ "DZ": {
+ "name": "Argélia"
+ },
+ "AR": {
+ "name": "Argentina"
+ },
+ "AM": {
+ "name": "Armênia"
+ },
+ "AW": {
+ "name": "Aruba"
+ },
+ "AC": {
+ "name": "Ascension Island"
+ },
+ "AU": {
+ "name": "Austrália"
+ },
+ "AT": {
+ "name": "Ãustria"
+ },
+ "AZ": {
+ "name": "Azerbaijão"
+ },
+ "BS": {
+ "name": "Bahamas"
+ },
+ "BH": {
+ "name": "Bahrain"
+ },
+ "BD": {
+ "name": "Bangladesh"
+ },
+ "BB": {
+ "name": "Barbados"
+ },
+ "BY": {
+ "name": "Belarus"
+ },
+ "BE": {
+ "name": "Bélgica"
+ },
+ "BZ": {
+ "name": "Belize"
+ },
+ "BJ": {
+ "name": "Benin"
+ },
+ "BM": {
+ "name": "Bermudas"
+ },
+ "BO": {
+ "name": "Bolívia"
+ },
+ "BA": {
+ "name": "Bósnia-Herzegovina"
+ },
+ "BW": {
+ "name": "Botsuana"
+ },
+ "BR": {
+ "name": "Brasil"
+ },
+ "BN": {
+ "name": "Brunei"
+ },
+ "BG": {
+ "name": "Bulgária"
+ },
+ "BF": {
+ "name": "Burquina Faso"
+ },
+ "BI": {
+ "name": "Burundi"
+ },
+ "BT": {
+ "name": "Butão"
+ },
+ "CV": {
+ "name": "Cabo Verde"
+ },
+ "KH": {
+ "name": "Camboja"
+ },
+ "CA": {
+ "name": "Canadá"
+ },
+ "IC": {
+ "name": "Canary Islands"
+ },
+ "BQ": {
+ "name": "Caribbean Netherlands"
+ },
+ "KZ": {
+ "name": "Casaquistão"
+ },
+ "QA": {
+ "name": "Catar"
+ },
+ "EA": {
+ "name": "Ceuta & Melilla"
+ },
+ "TD": {
+ "name": "Chade"
+ },
+ "CL": {
+ "name": "Chile"
+ },
+ "CN": {
+ "name": "China"
+ },
+ "CY": {
+ "name": "Chipre"
+ },
+ "CX": {
+ "name": "Christmas Island"
+ },
+ "SG": {
+ "name": "Cingapura"
+ },
+ "CC": {
+ "name": "Cocos (Keeling) Islands"
+ },
+ "CO": {
+ "name": "Colômbia"
+ },
+ "KM": {
+ "name": "Comores"
+ },
+ "CG": {
+ "name": "Congo"
+ },
+ "CD": {
+ "name": "Congo-Kinshasa"
+ },
+ "KP": {
+ "name": "Coréia do Norte"
+ },
+ "KR": {
+ "name": "Coréia do Sul"
+ },
+ "CI": {
+ "name": "Costa do Marfim"
+ },
+ "CR": {
+ "name": "Costa Rica"
+ },
+ "HR": {
+ "name": "Croácia"
+ },
+ "CU": {
+ "name": "Cuba"
+ },
+ "CW": {
+ "name": "Curaçao"
+ },
+ "DG": {
+ "name": "Diego Garcia"
+ },
+ "DK": {
+ "name": "Dinamarca"
+ },
+ "DJ": {
+ "name": "Djibuti"
+ },
+ "DM": {
+ "name": "Dominica"
+ },
+ "EG": {
+ "name": "Egito"
+ },
+ "SV": {
+ "name": "El Salvador"
+ },
+ "AE": {
+ "name": "Emirados Ãrabes Unidos"
+ },
+ "EC": {
+ "name": "Equador"
+ },
+ "ER": {
+ "name": "Eritréia"
+ },
+ "SK": {
+ "name": "Eslováquia"
+ },
+ "SI": {
+ "name": "Eslovênia"
+ },
+ "ES": {
+ "name": "Espanha"
+ },
+ "US": {
+ "name": "Estados Unidos"
+ },
+ "EE": {
+ "name": "Estônia"
+ },
+ "ET": {
+ "name": "Etiópia"
+ },
+ "FO": {
+ "name": "Faroe Islands"
+ },
+ "FJ": {
+ "name": "Fiji"
+ },
+ "PH": {
+ "name": "Filipinas"
+ },
+ "FI": {
+ "name": "Finlândia"
+ },
+ "FR": {
+ "name": "França"
+ },
+ "TF": {
+ "name": "French Southern Territories"
+ },
+ "GA": {
+ "name": "Gabão"
+ },
+ "GM": {
+ "name": "Gâmbia"
+ },
+ "GH": {
+ "name": "Gana"
+ },
+ "GE": {
+ "name": "Geórgia"
+ },
+ "GI": {
+ "name": "Gibraltar"
+ },
+ "GD": {
+ "name": "Granada"
+ },
+ "GR": {
+ "name": "Grécia"
+ },
+ "GL": {
+ "name": "Groênlandia"
+ },
+ "GP": {
+ "name": "Guadalupe"
+ },
+ "GU": {
+ "name": "Guam"
+ },
+ "GT": {
+ "name": "Guatemala"
+ },
+ "GG": {
+ "name": "Guernsey"
+ },
+ "GY": {
+ "name": "Guiana"
+ },
+ "GF": {
+ "name": "Guiana Francesa"
+ },
+ "GN": {
+ "name": "Guiné"
+ },
+ "GW": {
+ "name": "Guiné Bissau"
+ },
+ "GQ": {
+ "name": "Guiné Equatorial"
+ },
+ "HT": {
+ "name": "Haiti"
+ },
+ "NL": {
+ "name": "Holanda"
+ },
+ "HN": {
+ "name": "Honduras"
+ },
+ "HK": {
+ "name": "Hong Kong SAR China"
+ },
+ "HU": {
+ "name": "Hungria"
+ },
+ "YE": {
+ "name": "Iêmen"
+ },
+ "KY": {
+ "name": "Ilhas Caiman"
+ },
+ "CK": {
+ "name": "Ilhas Cook"
+ },
+ "FK": {
+ "name": "Ilhas Malvinas"
+ },
+ "MP": {
+ "name": "Ilhas Marianas do Norte"
+ },
+ "MH": {
+ "name": "Ilhas Marshall"
+ },
+ "NF": {
+ "name": "Ilhas Norfolk"
+ },
+ "SB": {
+ "name": "Ilhas Salomão"
+ },
+ "TC": {
+ "name": "Ilhas Turks e Caicos"
+ },
+ "VG": {
+ "name": "Ilhas Virgens Britânicas"
+ },
+ "VI": {
+ "name": "Ilhas Virgens dos EUA"
+ },
+ "IN": {
+ "name": "Ãndia"
+ },
+ "ID": {
+ "name": "Indonésia"
+ },
+ "IR": {
+ "name": "Irã"
+ },
+ "IQ": {
+ "name": "Iraque"
+ },
+ "IE": {
+ "name": "Irlanda"
+ },
+ "IS": {
+ "name": "Islândia"
+ },
+ "IM": {
+ "name": "Isle of Man"
+ },
+ "IL": {
+ "name": "Israel"
+ },
+ "IT": {
+ "name": "Itália"
+ },
+ "JM": {
+ "name": "Jamaica"
+ },
+ "JP": {
+ "name": "Japão"
+ },
+ "JE": {
+ "name": "Jersey"
+ },
+ "JO": {
+ "name": "Jordânia"
+ },
+ "XK": {
+ "name": "Kosovo"
+ },
+ "KW": {
+ "name": "Kuwait"
+ },
+ "LA": {
+ "name": "Laos"
+ },
+ "LS": {
+ "name": "Lesoto"
+ },
+ "LV": {
+ "name": "Letônia"
+ },
+ "LB": {
+ "name": "Líbano"
+ },
+ "LR": {
+ "name": "Libéria"
+ },
+ "LY": {
+ "name": "Líbia"
+ },
+ "LI": {
+ "name": "Liechtenstein"
+ },
+ "LT": {
+ "name": "Lituânia"
+ },
+ "LU": {
+ "name": "Luxemburgo"
+ },
+ "MO": {
+ "name": "Macau SAR China"
+ },
+ "MK": {
+ "name": "Macedônia"
+ },
+ "MG": {
+ "name": "Madagascar"
+ },
+ "MY": {
+ "name": "Malásia"
+ },
+ "MW": {
+ "name": "Malawi"
+ },
+ "MV": {
+ "name": "Maldivas"
+ },
+ "ML": {
+ "name": "Mali"
+ },
+ "MT": {
+ "name": "Malta"
+ },
+ "MA": {
+ "name": "Marrocos"
+ },
+ "MQ": {
+ "name": "Martinica"
+ },
+ "MU": {
+ "name": "Maurício"
+ },
+ "MR": {
+ "name": "Mauritânia"
+ },
+ "YT": {
+ "name": "Mayotte"
+ },
+ "MX": {
+ "name": "México"
+ },
+ "MM": {
+ "name": "Mianmar"
+ },
+ "FM": {
+ "name": "Micronésia"
+ },
+ "MZ": {
+ "name": "Moçambique"
+ },
+ "MD": {
+ "name": "Moldávia"
+ },
+ "MC": {
+ "name": "Mônaco"
+ },
+ "MN": {
+ "name": "Mongólia"
+ },
+ "ME": {
+ "name": "Montenegro"
+ },
+ "MS": {
+ "name": "Montserrat"
+ },
+ "NA": {
+ "name": "Namíbia"
+ },
+ "NR": {
+ "name": "Nauru"
+ },
+ "NP": {
+ "name": "Nepal"
+ },
+ "NI": {
+ "name": "Nicarágua"
+ },
+ "NE": {
+ "name": "Níger"
+ },
+ "NG": {
+ "name": "Nigéria"
+ },
+ "NU": {
+ "name": "Niue"
+ },
+ "NO": {
+ "name": "Noruega"
+ },
+ "NC": {
+ "name": "Nova Caledônia"
+ },
+ "NZ": {
+ "name": "Nova Zelândia"
+ },
+ "OM": {
+ "name": "Omã"
+ },
+ "PW": {
+ "name": "Palau"
+ },
+ "PA": {
+ "name": "Panamá"
+ },
+ "PG": {
+ "name": "Papua-Nova Guiné"
+ },
+ "PK": {
+ "name": "Paquistão"
+ },
+ "PY": {
+ "name": "Paraguai"
+ },
+ "PE": {
+ "name": "Peru"
+ },
+ "PN": {
+ "name": "Pitcairn"
+ },
+ "PF": {
+ "name": "Polinésia Francesa"
+ },
+ "PL": {
+ "name": "Polônia"
+ },
+ "PR": {
+ "name": "Porto Rico"
+ },
+ "PT": {
+ "name": "Portugal"
+ },
+ "KE": {
+ "name": "Quênia"
+ },
+ "KG": {
+ "name": "Quirguistão"
+ },
+ "KI": {
+ "name": "Quiribati"
+ },
+ "GB": {
+ "name": "Reino Unido"
+ },
+ "CF": {
+ "name": "República Centro-Africana"
+ },
+ "DO": {
+ "name": "República Dominicana"
+ },
+ "CM": {
+ "name": "República dos Camarões"
+ },
+ "CZ": {
+ "name": "República Tcheca"
+ },
+ "RE": {
+ "name": "Reunião"
+ },
+ "RO": {
+ "name": "Romênia"
+ },
+ "RW": {
+ "name": "Ruanda"
+ },
+ "RU": {
+ "name": "Rússia"
+ },
+ "PM": {
+ "name": "Saint Pierre e Miquelon"
+ },
+ "WS": {
+ "name": "Samoa"
+ },
+ "AS": {
+ "name": "Samoa Americana"
+ },
+ "SM": {
+ "name": "San Marino"
+ },
+ "SH": {
+ "name": "Santa Helena"
+ },
+ "LC": {
+ "name": "Santa Lúcia"
+ },
+ "KN": {
+ "name": "São Cristovão e Nevis"
+ },
+ "ST": {
+ "name": "São Tomé e Príncipe"
+ },
+ "VC": {
+ "name": "São Vicente e Granadinas"
+ },
+ "SN": {
+ "name": "Senegal"
+ },
+ "RS": {
+ "name": "Serbia"
+ },
+ "SL": {
+ "name": "Serra Leoa"
+ },
+ "SC": {
+ "name": "Seychelles"
+ },
+ "SX": {
+ "name": "Sint Maarten"
+ },
+ "SY": {
+ "name": "Síria"
+ },
+ "SO": {
+ "name": "Somália"
+ },
+ "GS": {
+ "name": "South Georgia & South Sandwich Islands"
+ },
+ "SS": {
+ "name": "South Sudan"
+ },
+ "LK": {
+ "name": "Sri Lanka"
+ },
+ "BL": {
+ "name": "St. Barthélemy"
+ },
+ "MF": {
+ "name": "St. Martin"
+ },
+ "SZ": {
+ "name": "Suazilândia"
+ },
+ "SD": {
+ "name": "Sudão"
+ },
+ "SE": {
+ "name": "Suécia"
+ },
+ "CH": {
+ "name": "Suíça"
+ },
+ "SR": {
+ "name": "Suriname"
+ },
+ "SJ": {
+ "name": "Svalbard & Jan Mayen"
+ },
+ "TJ": {
+ "name": "Tadjiquistão"
+ },
+ "TH": {
+ "name": "Tailândia"
+ },
+ "TW": {
+ "name": "Taiwan"
+ },
+ "TZ": {
+ "name": "Tanzania"
+ },
+ "IO": {
+ "name": "Território Britânico do Oceano Ãndico"
+ },
+ "PS": {
+ "name": "Território da Palestina"
+ },
+ "TL": {
+ "name": "Timor Leste"
+ },
+ "TG": {
+ "name": "Togo"
+ },
+ "TK": {
+ "name": "Tokelau"
+ },
+ "TO": {
+ "name": "Tonga"
+ },
+ "TT": {
+ "name": "Trinidad e Tobago"
+ },
+ "TA": {
+ "name": "Tristan da Cunha"
+ },
+ "TN": {
+ "name": "Tunísia"
+ },
+ "TM": {
+ "name": "Turcomenistão"
+ },
+ "TR": {
+ "name": "Turquia"
+ },
+ "TV": {
+ "name": "Tuvalu"
+ },
+ "UM": {
+ "name": "U.S. Outlying Islands"
+ },
+ "UA": {
+ "name": "Ucrânia"
+ },
+ "UG": {
+ "name": "Uganda"
+ },
+ "UY": {
+ "name": "Uruguai"
+ },
+ "UZ": {
+ "name": "Uzbequistão"
+ },
+ "VU": {
+ "name": "Vanuatu"
+ },
+ "VA": {
+ "name": "Vaticano"
+ },
+ "VE": {
+ "name": "Venezuela"
+ },
+ "VN": {
+ "name": "Vietnã"
+ },
+ "WF": {
+ "name": "Wallis e Futuna"
+ },
+ "EH": {
+ "name": "Western Sahara"
+ },
+ "ZM": {
+ "name": "Zâmbia"
+ },
+ "ZW": {
+ "name": "Zimbábue"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/country/ses.json b/library/intl/resources/country/ses.json
new file mode 100644
index 000000000..bdbd80aee
--- /dev/null
+++ b/library/intl/resources/country/ses.json
@@ -0,0 +1,761 @@
+{
+ "AF": {
+ "name": "Afgaanistan"
+ },
+ "AX": {
+ "name": "Ã…land Islands"
+ },
+ "AL": {
+ "name": "Albaani"
+ },
+ "GB": {
+ "name": "Albaasalaama Marganta"
+ },
+ "DE": {
+ "name": "Almaaɲe"
+ },
+ "DZ": {
+ "name": "Alžeeri"
+ },
+ "VI": {
+ "name": "Ameerik Virgin Gungey"
+ },
+ "US": {
+ "name": "Ameriki Laabu Margantey"
+ },
+ "AS": {
+ "name": "Ameriki Samoa"
+ },
+ "AD": {
+ "name": "Andoora"
+ },
+ "AI": {
+ "name": "Angiiya"
+ },
+ "AO": {
+ "name": "Angoola"
+ },
+ "AQ": {
+ "name": "Antarctica"
+ },
+ "AG": {
+ "name": "Antigua nda Barbuuda"
+ },
+ "AR": {
+ "name": "Argentine"
+ },
+ "AM": {
+ "name": "Armeeni"
+ },
+ "AW": {
+ "name": "Aruuba"
+ },
+ "AC": {
+ "name": "Ascension Island"
+ },
+ "IS": {
+ "name": "Ayceland"
+ },
+ "AZ": {
+ "name": "Azerbaayijaŋ"
+ },
+ "BS": {
+ "name": "Bahamas"
+ },
+ "BH": {
+ "name": "Bahareen"
+ },
+ "BD": {
+ "name": "Bangladeši"
+ },
+ "BB": {
+ "name": "Barbaados"
+ },
+ "BE": {
+ "name": "Belgiiki"
+ },
+ "BZ": {
+ "name": "Beliizi"
+ },
+ "BJ": {
+ "name": "Beniŋ"
+ },
+ "BM": {
+ "name": "Bermuda"
+ },
+ "BY": {
+ "name": "Biloriši"
+ },
+ "BO": {
+ "name": "Boolivi"
+ },
+ "BA": {
+ "name": "Bosni nda Herzegovine"
+ },
+ "BW": {
+ "name": "Botswaana"
+ },
+ "BR": {
+ "name": "Breezil"
+ },
+ "IO": {
+ "name": "Britiši Indu teekoo laama"
+ },
+ "VG": {
+ "name": "Britiši Virgin gungey"
+ },
+ "BN": {
+ "name": "Bruunee"
+ },
+ "BG": {
+ "name": "Bulgaari"
+ },
+ "BF": {
+ "name": "Burkina faso"
+ },
+ "BI": {
+ "name": "Burundi"
+ },
+ "BT": {
+ "name": "Buutaŋ"
+ },
+ "TD": {
+ "name": "Caadu"
+ },
+ "IC": {
+ "name": "Canary Islands"
+ },
+ "BQ": {
+ "name": "Caribbean Netherlands"
+ },
+ "CZ": {
+ "name": "Cek labo"
+ },
+ "CF": {
+ "name": "Centraafriki koyra"
+ },
+ "EA": {
+ "name": "Ceuta & Melilla"
+ },
+ "CX": {
+ "name": "Christmas Island"
+ },
+ "CC": {
+ "name": "Cocos (Keeling) Islands"
+ },
+ "CW": {
+ "name": "Curaçao"
+ },
+ "DK": {
+ "name": "Danemark"
+ },
+ "DG": {
+ "name": "Diego Garcia"
+ },
+ "DM": {
+ "name": "Doominiki"
+ },
+ "DO": {
+ "name": "Doominiki laboo"
+ },
+ "ET": {
+ "name": "Ecioopi"
+ },
+ "EC": {
+ "name": "Ekwateer"
+ },
+ "ER": {
+ "name": "Eritree"
+ },
+ "ES": {
+ "name": "Espaaɲe"
+ },
+ "EE": {
+ "name": "Estooni"
+ },
+ "FR": {
+ "name": "Faransi"
+ },
+ "GF": {
+ "name": "Faransi Guyaan"
+ },
+ "PF": {
+ "name": "Faransi Polineezi"
+ },
+ "FO": {
+ "name": "Faroe Islands"
+ },
+ "FJ": {
+ "name": "Fiji"
+ },
+ "PH": {
+ "name": "Filipine"
+ },
+ "FI": {
+ "name": "Finlandu"
+ },
+ "TF": {
+ "name": "French Southern Territories"
+ },
+ "GA": {
+ "name": "Gaabon"
+ },
+ "GH": {
+ "name": "Gaana"
+ },
+ "GM": {
+ "name": "Gambi"
+ },
+ "GI": {
+ "name": "Gibraltar"
+ },
+ "GN": {
+ "name": "Gine"
+ },
+ "GW": {
+ "name": "Gine-Bisso"
+ },
+ "GQ": {
+ "name": "Ginee Ekwatorial"
+ },
+ "GE": {
+ "name": "Gorgi"
+ },
+ "GR": {
+ "name": "Greece"
+ },
+ "GD": {
+ "name": "Grenaada"
+ },
+ "GL": {
+ "name": "Grinland"
+ },
+ "GU": {
+ "name": "Guam"
+ },
+ "GG": {
+ "name": "Guernsey"
+ },
+ "GY": {
+ "name": "Guyaane"
+ },
+ "GP": {
+ "name": "Gwadeluup"
+ },
+ "GT": {
+ "name": "Gwatemaala"
+ },
+ "HT": {
+ "name": "Haiti"
+ },
+ "ZA": {
+ "name": "Hawsa Afriki Laboo"
+ },
+ "NL": {
+ "name": "Hollandu"
+ },
+ "HN": {
+ "name": "Honduras"
+ },
+ "HK": {
+ "name": "Hong Kong SAR China"
+ },
+ "HU": {
+ "name": "Hungaari"
+ },
+ "ID": {
+ "name": "Indoneezi"
+ },
+ "IN": {
+ "name": "Indu laboo"
+ },
+ "IQ": {
+ "name": "Iraak"
+ },
+ "IR": {
+ "name": "Iraan"
+ },
+ "RU": {
+ "name": "Iriši laboo"
+ },
+ "IE": {
+ "name": "Irlandu"
+ },
+ "IM": {
+ "name": "Isle of Man"
+ },
+ "IL": {
+ "name": "Israyel"
+ },
+ "IT": {
+ "name": "Itaali"
+ },
+ "JP": {
+ "name": "Jaapoŋ"
+ },
+ "JM": {
+ "name": "Jamaayik"
+ },
+ "JE": {
+ "name": "Jersey"
+ },
+ "DJ": {
+ "name": "Jibuuti"
+ },
+ "NC": {
+ "name": "Kaaledooni Taagaa"
+ },
+ "KZ": {
+ "name": "Kaazakstan"
+ },
+ "FK": {
+ "name": "Kalkan gungey"
+ },
+ "KH": {
+ "name": "Kamboogi"
+ },
+ "CM": {
+ "name": "Kameruun"
+ },
+ "CA": {
+ "name": "Kanaada"
+ },
+ "CV": {
+ "name": "Kapuver gungey"
+ },
+ "QA": {
+ "name": "Kataar"
+ },
+ "KY": {
+ "name": "Kayman gungey"
+ },
+ "KE": {
+ "name": "Keeniya"
+ },
+ "KI": {
+ "name": "Kiribaati"
+ },
+ "CO": {
+ "name": "Kolombi"
+ },
+ "KM": {
+ "name": "Komoor"
+ },
+ "CG": {
+ "name": "Kongoo"
+ },
+ "CD": {
+ "name": "Kongoo demookaratiki laboo"
+ },
+ "KP": {
+ "name": "Kooree, Gurma"
+ },
+ "KR": {
+ "name": "Kooree, Hawsa"
+ },
+ "XK": {
+ "name": "Kosovo"
+ },
+ "CR": {
+ "name": "Kosta rika"
+ },
+ "HR": {
+ "name": "Krwaasi"
+ },
+ "CI": {
+ "name": "Kudwar"
+ },
+ "CU": {
+ "name": "Kuuba"
+ },
+ "CK": {
+ "name": "Kuuk gungey"
+ },
+ "KW": {
+ "name": "Kuweet"
+ },
+ "KG": {
+ "name": "Kyrgyzstan"
+ },
+ "AE": {
+ "name": "Laaraw Imaarawey Margantey"
+ },
+ "LA": {
+ "name": "Laawos"
+ },
+ "LS": {
+ "name": "Leesoto"
+ },
+ "LV": {
+ "name": "Letooni"
+ },
+ "LR": {
+ "name": "Liberia"
+ },
+ "LI": {
+ "name": "Liechtenstein"
+ },
+ "LY": {
+ "name": "Liibi"
+ },
+ "LT": {
+ "name": "Lituaani"
+ },
+ "LB": {
+ "name": "Lubnaan"
+ },
+ "LU": {
+ "name": "Luxembourg"
+ },
+ "MK": {
+ "name": "Maacedooni"
+ },
+ "ML": {
+ "name": "Maali"
+ },
+ "MA": {
+ "name": "Maarok"
+ },
+ "MO": {
+ "name": "Macau SAR China"
+ },
+ "MG": {
+ "name": "Madagascar"
+ },
+ "MW": {
+ "name": "Malaawi"
+ },
+ "MV": {
+ "name": "Maldiivu"
+ },
+ "MY": {
+ "name": "Maleezi"
+ },
+ "MT": {
+ "name": "Malta"
+ },
+ "MP": {
+ "name": "Mariana Gurma Gungey"
+ },
+ "MH": {
+ "name": "Maršal gungey"
+ },
+ "MQ": {
+ "name": "Martiniiki"
+ },
+ "MM": {
+ "name": "Maynamar"
+ },
+ "YT": {
+ "name": "Mayooti"
+ },
+ "MX": {
+ "name": "Mexiki"
+ },
+ "FM": {
+ "name": "Mikronezi"
+ },
+ "EG": {
+ "name": "Misra"
+ },
+ "MD": {
+ "name": "Moldovi"
+ },
+ "MC": {
+ "name": "Monako"
+ },
+ "MN": {
+ "name": "Mongooli"
+ },
+ "ME": {
+ "name": "Montenegro"
+ },
+ "MS": {
+ "name": "Montserrat"
+ },
+ "MU": {
+ "name": "Mooris gungey"
+ },
+ "MR": {
+ "name": "Mooritaani"
+ },
+ "MZ": {
+ "name": "Mozambik"
+ },
+ "NG": {
+ "name": "Naajiriia"
+ },
+ "NA": {
+ "name": "Naamibi"
+ },
+ "NR": {
+ "name": "Nauru"
+ },
+ "NP": {
+ "name": "Neepal"
+ },
+ "NI": {
+ "name": "Nikaragwa"
+ },
+ "NU": {
+ "name": "Niue"
+ },
+ "NE": {
+ "name": "Nižer"
+ },
+ "NF": {
+ "name": "Norfolk Gungoo"
+ },
+ "NO": {
+ "name": "Norveej"
+ },
+ "OM": {
+ "name": "Omaan"
+ },
+ "AU": {
+ "name": "Ostraali"
+ },
+ "AT": {
+ "name": "Otriši"
+ },
+ "PK": {
+ "name": "Paakistan"
+ },
+ "PS": {
+ "name": "Palestine Dangay nda Gaaza"
+ },
+ "PW": {
+ "name": "Palu"
+ },
+ "PA": {
+ "name": "Panama"
+ },
+ "PG": {
+ "name": "Papua Ginee Taaga"
+ },
+ "PY": {
+ "name": "Paraguwey"
+ },
+ "PE": {
+ "name": "Peeru"
+ },
+ "PN": {
+ "name": "Pitikarin"
+ },
+ "PL": {
+ "name": "Poloɲe"
+ },
+ "PR": {
+ "name": "Porto Riko"
+ },
+ "PT": {
+ "name": "Portugaal"
+ },
+ "RE": {
+ "name": "Reenioŋ"
+ },
+ "RO": {
+ "name": "Rumaani"
+ },
+ "RW": {
+ "name": "Rwanda"
+ },
+ "SV": {
+ "name": "Salvador laboo"
+ },
+ "WS": {
+ "name": "Samoa"
+ },
+ "SM": {
+ "name": "San Marino"
+ },
+ "ST": {
+ "name": "Sao Tome nda Prinsipe"
+ },
+ "SA": {
+ "name": "Saudiya"
+ },
+ "SL": {
+ "name": "Seera Leon"
+ },
+ "SC": {
+ "name": "Seešel"
+ },
+ "SN": {
+ "name": "Senegal"
+ },
+ "SH": {
+ "name": "Seŋ Helena"
+ },
+ "KN": {
+ "name": "Seŋ Kitts nda Nevis"
+ },
+ "LC": {
+ "name": "Seŋ Lussia"
+ },
+ "PM": {
+ "name": "Seŋ Piyer nda Mikelon"
+ },
+ "VC": {
+ "name": "Seŋvinsaŋ nda Grenadine"
+ },
+ "RS": {
+ "name": "Serbia"
+ },
+ "CL": {
+ "name": "Å iili"
+ },
+ "CN": {
+ "name": "Å iin"
+ },
+ "CY": {
+ "name": "Å iipur"
+ },
+ "SG": {
+ "name": "Singapur"
+ },
+ "SX": {
+ "name": "Sint Maarten"
+ },
+ "SK": {
+ "name": "Slovaaki"
+ },
+ "SI": {
+ "name": "Sloveeni"
+ },
+ "SB": {
+ "name": "Solomon Gungey"
+ },
+ "SO": {
+ "name": "Somaali"
+ },
+ "GS": {
+ "name": "South Georgia & South Sandwich Islands"
+ },
+ "SS": {
+ "name": "South Sudan"
+ },
+ "LK": {
+ "name": "Srilanka"
+ },
+ "BL": {
+ "name": "St. Barthélemy"
+ },
+ "MF": {
+ "name": "St. Martin"
+ },
+ "SR": {
+ "name": "Surinaam"
+ },
+ "SD": {
+ "name": "Suudaŋ"
+ },
+ "SY": {
+ "name": "Suuria"
+ },
+ "SJ": {
+ "name": "Svalbard & Jan Mayen"
+ },
+ "SZ": {
+ "name": "Swaziland"
+ },
+ "SE": {
+ "name": "Sweede"
+ },
+ "CH": {
+ "name": "Swisu"
+ },
+ "TH": {
+ "name": "Taayiland"
+ },
+ "TW": {
+ "name": "Taayiwan"
+ },
+ "TJ": {
+ "name": "Taažikistan"
+ },
+ "TZ": {
+ "name": "Tanzaani"
+ },
+ "TL": {
+ "name": "Timoor hawsa"
+ },
+ "TG": {
+ "name": "Togo"
+ },
+ "TK": {
+ "name": "Tokelau"
+ },
+ "TO": {
+ "name": "Tonga"
+ },
+ "TT": {
+ "name": "Trinidad nda Tobaago"
+ },
+ "TA": {
+ "name": "Tristan da Cunha"
+ },
+ "TN": {
+ "name": "Tunizi"
+ },
+ "TC": {
+ "name": "Turk nda Kayikos Gungey"
+ },
+ "TR": {
+ "name": "Turki"
+ },
+ "TM": {
+ "name": "Turkmenistaŋ"
+ },
+ "TV": {
+ "name": "Tuvalu"
+ },
+ "UM": {
+ "name": "U.S. Outlying Islands"
+ },
+ "UG": {
+ "name": "Uganda"
+ },
+ "UA": {
+ "name": "Ukreen"
+ },
+ "JO": {
+ "name": "Urdun"
+ },
+ "UY": {
+ "name": "Uruguwey"
+ },
+ "UZ": {
+ "name": "Uzbeekistan"
+ },
+ "VA": {
+ "name": "Vaatikan Laama"
+ },
+ "VU": {
+ "name": "Vanautu"
+ },
+ "VE": {
+ "name": "Veneezuyeela"
+ },
+ "VN": {
+ "name": "Vietnaam"
+ },
+ "WF": {
+ "name": "Wallis nda Futuna"
+ },
+ "EH": {
+ "name": "Western Sahara"
+ },
+ "YE": {
+ "name": "Yaman"
+ },
+ "ZM": {
+ "name": "Zambi"
+ },
+ "NZ": {
+ "name": "Zeelandu Taaga"
+ },
+ "ZW": {
+ "name": "Zimbabwe"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/country/sg.json b/library/intl/resources/country/sg.json
new file mode 100644
index 000000000..799433b59
--- /dev/null
+++ b/library/intl/resources/country/sg.json
@@ -0,0 +1,761 @@
+{
+ "AX": {
+ "name": "Ã…land Islands"
+ },
+ "AL": {
+ "name": "Albanïi"
+ },
+ "US": {
+ "name": "ÂLeaa-Ôko tî Amerika"
+ },
+ "DZ": {
+ "name": "Alzerïi"
+ },
+ "AD": {
+ "name": "Andôro"
+ },
+ "AO": {
+ "name": "Angoläa"
+ },
+ "AI": {
+ "name": "Angûîla"
+ },
+ "AQ": {
+ "name": "Antarctica"
+ },
+ "AG": {
+ "name": "Antîgua na Barbûda"
+ },
+ "AE": {
+ "name": "Arâbo Emirâti Ôko"
+ },
+ "AM": {
+ "name": "Armenïi"
+ },
+ "AW": {
+ "name": "Arûba"
+ },
+ "AR": {
+ "name": "Arzantîna"
+ },
+ "AC": {
+ "name": "Ascension Island"
+ },
+ "VG": {
+ "name": "Âzôâ Viîrîggo tî Anglëe"
+ },
+ "CK": {
+ "name": "âzûâ Kûku"
+ },
+ "MP": {
+ "name": "Âzûâ Märïâni tî Banga"
+ },
+ "MH": {
+ "name": "Âzûâ Märshâl"
+ },
+ "KY": {
+ "name": "Âzûâ Ngundë, Kaimäni"
+ },
+ "CV": {
+ "name": "Azûâ tî Kâpo-Vêre"
+ },
+ "FK": {
+ "name": "Âzûâ tî Mälüîni"
+ },
+ "TC": {
+ "name": "Âzûâ Turku na Kaîki"
+ },
+ "VI": {
+ "name": "Âzûâ Virîgo tî Amerîka"
+ },
+ "BS": {
+ "name": "Bahâmasa"
+ },
+ "BH": {
+ "name": "Bahrâina"
+ },
+ "BB": {
+ "name": "Barabâda"
+ },
+ "BY": {
+ "name": "Belarüsi"
+ },
+ "BE": {
+ "name": "Bêleze, Belezîki"
+ },
+ "BZ": {
+ "name": "Belîzi"
+ },
+ "BJ": {
+ "name": "Benëen"
+ },
+ "BD": {
+ "name": "Bengladêshi"
+ },
+ "BM": {
+ "name": "Beremûda"
+ },
+ "BO": {
+ "name": "Bolivïi"
+ },
+ "BA": {
+ "name": "Bosnïi na Herzegovînni"
+ },
+ "BW": {
+ "name": "Botswana"
+ },
+ "BR": {
+ "name": "Brezîli"
+ },
+ "BN": {
+ "name": "Brunêi"
+ },
+ "BG": {
+ "name": "Bulugarïi"
+ },
+ "BF": {
+ "name": "Burkina Faso"
+ },
+ "BI": {
+ "name": "Burundïi"
+ },
+ "BT": {
+ "name": "Butäan"
+ },
+ "IC": {
+ "name": "Canary Islands"
+ },
+ "BQ": {
+ "name": "Caribbean Netherlands"
+ },
+ "EA": {
+ "name": "Ceuta & Melilla"
+ },
+ "CX": {
+ "name": "Christmas Island"
+ },
+ "CC": {
+ "name": "Cocos (Keeling) Islands"
+ },
+ "CW": {
+ "name": "Curaçao"
+ },
+ "DK": {
+ "name": "Danemêrke"
+ },
+ "DJ": {
+ "name": "Dibutùii"
+ },
+ "DG": {
+ "name": "Diego Garcia"
+ },
+ "DM": {
+ "name": "Dömïnîka"
+ },
+ "EC": {
+ "name": "Ekuatëre"
+ },
+ "IN": {
+ "name": "Ênnde"
+ },
+ "ID": {
+ "name": "Ênndonezïi"
+ },
+ "ER": {
+ "name": "Eritrëe"
+ },
+ "ES": {
+ "name": "Espânye"
+ },
+ "EE": {
+ "name": "Estonïi"
+ },
+ "ET": {
+ "name": "Etiopïi"
+ },
+ "AF": {
+ "name": "Faganïta, Afganïstäan"
+ },
+ "FR": {
+ "name": "Farânzi"
+ },
+ "FO": {
+ "name": "Faroe Islands"
+ },
+ "FI": {
+ "name": "Fëlânde"
+ },
+ "FJ": {
+ "name": "Fidyïi"
+ },
+ "PH": {
+ "name": "Filipîni"
+ },
+ "NC": {
+ "name": "Finî Kaledonïi"
+ },
+ "NZ": {
+ "name": "Finî Zelânde"
+ },
+ "TF": {
+ "name": "French Southern Territories"
+ },
+ "GA": {
+ "name": "Gaböon"
+ },
+ "GM": {
+ "name": "Gambïi"
+ },
+ "GH": {
+ "name": "Ganäa"
+ },
+ "GY": {
+ "name": "Gayâna"
+ },
+ "GR": {
+ "name": "Gerêsi"
+ },
+ "GN": {
+ "name": "Ginëe"
+ },
+ "GQ": {
+ "name": "Ginëe tî Ekuatëre"
+ },
+ "GW": {
+ "name": "Gninëe-Bisau"
+ },
+ "GL": {
+ "name": "Gorolânde"
+ },
+ "GD": {
+ "name": "Grenâda"
+ },
+ "GP": {
+ "name": "Guadelûpu"
+ },
+ "GU": {
+ "name": "Guâm"
+ },
+ "GT": {
+ "name": "Guatêmälä"
+ },
+ "GG": {
+ "name": "Guernsey"
+ },
+ "GF": {
+ "name": "Güyâni tî farânzi"
+ },
+ "HT": {
+ "name": "Haitïi"
+ },
+ "NL": {
+ "name": "Holände"
+ },
+ "HN": {
+ "name": "Honduräsi"
+ },
+ "HK": {
+ "name": "Hong Kong SAR China"
+ },
+ "HU": {
+ "name": "Hongirùii"
+ },
+ "IR": {
+ "name": "Iräan"
+ },
+ "IQ": {
+ "name": "Irâki"
+ },
+ "IE": {
+ "name": "Irlânde"
+ },
+ "IS": {
+ "name": "Islânde"
+ },
+ "IM": {
+ "name": "Isle of Man"
+ },
+ "IL": {
+ "name": "Israëli"
+ },
+ "IT": {
+ "name": "Italùii"
+ },
+ "JE": {
+ "name": "Jersey"
+ },
+ "KH": {
+ "name": "Kämbôzi"
+ },
+ "CM": {
+ "name": "Kamerûne"
+ },
+ "EG": {
+ "name": "Kâmitâ"
+ },
+ "CA": {
+ "name": "Kanadäa"
+ },
+ "QA": {
+ "name": "Katära"
+ },
+ "KZ": {
+ "name": "Kazakisitäan"
+ },
+ "KE": {
+ "name": "Kenyäa"
+ },
+ "KI": {
+ "name": "Kiribati"
+ },
+ "KG": {
+ "name": "Kirigizitùaan"
+ },
+ "CI": {
+ "name": "Kôdivüära"
+ },
+ "GB": {
+ "name": "Ködörögbïä--Ôko"
+ },
+ "CF": {
+ "name": "Ködörösêse tî Bêafrîka"
+ },
+ "DO": {
+ "name": "Ködörösêse tî Dominîka"
+ },
+ "CD": {
+ "name": "Ködörösêse tî Ngunuhalëzo tî kongö"
+ },
+ "CZ": {
+ "name": "Ködörösêse tî Tyêki"
+ },
+ "CO": {
+ "name": "Kolombïi"
+ },
+ "KM": {
+ "name": "Kömôro"
+ },
+ "CG": {
+ "name": "Kongö"
+ },
+ "KP": {
+ "name": "Korëe tî Banga"
+ },
+ "KR": {
+ "name": "Korëe tî Mbongo"
+ },
+ "XK": {
+ "name": "Kosovo"
+ },
+ "CR": {
+ "name": "Kôsta Rîka"
+ },
+ "KW": {
+ "name": "Köwêti"
+ },
+ "HR": {
+ "name": "Kroasïi"
+ },
+ "CU": {
+ "name": "Kubäa"
+ },
+ "LS": {
+ "name": "Lesôtho"
+ },
+ "VA": {
+ "name": "Letëe tî Vatikäan"
+ },
+ "LV": {
+ "name": "Letonùii"
+ },
+ "LR": {
+ "name": "Liberïa"
+ },
+ "LY": {
+ "name": "Libïi"
+ },
+ "LB": {
+ "name": "Libùaan"
+ },
+ "LI": {
+ "name": "Liechtenstein,"
+ },
+ "LT": {
+ "name": "Lituanïi"
+ },
+ "LA": {
+ "name": "Lùaôsi"
+ },
+ "LU": {
+ "name": "Lugzambûru"
+ },
+ "MO": {
+ "name": "Macau SAR China"
+ },
+ "MG": {
+ "name": "Madagaskära"
+ },
+ "MW": {
+ "name": "Malawïi"
+ },
+ "MV": {
+ "name": "Maldîva"
+ },
+ "MY": {
+ "name": "Malezïi"
+ },
+ "ML": {
+ "name": "Malïi"
+ },
+ "MT": {
+ "name": "Mâlta"
+ },
+ "MA": {
+ "name": "Marôko"
+ },
+ "MQ": {
+ "name": "Märtïnîki"
+ },
+ "MK": {
+ "name": "Maseduäni"
+ },
+ "YT": {
+ "name": "Mäyôte"
+ },
+ "ZA": {
+ "name": "Mbongo-Afrîka"
+ },
+ "MX": {
+ "name": "Mekisîki"
+ },
+ "FM": {
+ "name": "Mikronezïi"
+ },
+ "MD": {
+ "name": "Moldavùii"
+ },
+ "MC": {
+ "name": "Monaköo"
+ },
+ "MN": {
+ "name": "Mongolïi"
+ },
+ "MS": {
+ "name": "Monserâte"
+ },
+ "ME": {
+ "name": "Montenegro"
+ },
+ "MU": {
+ "name": "Mörîsi"
+ },
+ "MR": {
+ "name": "Moritanïi"
+ },
+ "MZ": {
+ "name": "Mözämbîka"
+ },
+ "MM": {
+ "name": "Myämâra"
+ },
+ "NA": {
+ "name": "Namibùii"
+ },
+ "NR": {
+ "name": "Nauru"
+ },
+ "NP": {
+ "name": "Nëpâli"
+ },
+ "NI": {
+ "name": "Nikaragua"
+ },
+ "NU": {
+ "name": "Niue"
+ },
+ "NE": {
+ "name": "Nizëre"
+ },
+ "NG": {
+ "name": "Nizerïa"
+ },
+ "NO": {
+ "name": "Nörvêzi"
+ },
+ "OM": {
+ "name": "Omâni"
+ },
+ "AU": {
+ "name": "Ostralïi, Sotralïi"
+ },
+ "AT": {
+ "name": "Otrîsi"
+ },
+ "PK": {
+ "name": "Pakistäan"
+ },
+ "PW": {
+ "name": "Palau"
+ },
+ "PA": {
+ "name": "Panama"
+ },
+ "PG": {
+ "name": "Papû Finî Ginëe, Papuazïi"
+ },
+ "PY": {
+ "name": "Paraguëe"
+ },
+ "PE": {
+ "name": "Perüu"
+ },
+ "PN": {
+ "name": "Pitikêrni"
+ },
+ "PF": {
+ "name": "Polinezïi tî farânzi"
+ },
+ "PL": {
+ "name": "Pölôni"
+ },
+ "PR": {
+ "name": "Porto Rîko"
+ },
+ "PT": {
+ "name": "Pörtugäle, Ködörö Pûra"
+ },
+ "RE": {
+ "name": "Reinïon"
+ },
+ "RW": {
+ "name": "Ruandäa"
+ },
+ "RO": {
+ "name": "Rumanïi"
+ },
+ "RU": {
+ "name": "Rusïi"
+ },
+ "SV": {
+ "name": "Salvadöro"
+ },
+ "AS": {
+ "name": "Samöa tî Amerîka"
+ },
+ "WS": {
+ "name": "Samoäa"
+ },
+ "ST": {
+ "name": "Sâô Tömê na Prinsîpe"
+ },
+ "SA": {
+ "name": "Saûdi Arabïi"
+ },
+ "KN": {
+ "name": "Sên-Krïstôfo-na-Nevîsi"
+ },
+ "SM": {
+ "name": "Sên-Marëen"
+ },
+ "PM": {
+ "name": "Sên-Pyêre na Mikelöon"
+ },
+ "VC": {
+ "name": "Sên-Vensäan na âGrenadîni"
+ },
+ "SN": {
+ "name": "Senegäle"
+ },
+ "SH": {
+ "name": "Sênt-Helêna"
+ },
+ "LC": {
+ "name": "Sênt-Lisïi"
+ },
+ "RS": {
+ "name": "Serbia"
+ },
+ "IO": {
+ "name": "Sêse tî Anglëe na Ngûyämä tî Ênnde"
+ },
+ "PS": {
+ "name": "Sêse tî Palestîni"
+ },
+ "SC": {
+ "name": "Sëyshêle"
+ },
+ "CL": {
+ "name": "Shilïi"
+ },
+ "CN": {
+ "name": "Shîna"
+ },
+ "SL": {
+ "name": "Sierä-Leône"
+ },
+ "SG": {
+ "name": "Sïngäpûru"
+ },
+ "SX": {
+ "name": "Sint Maarten"
+ },
+ "CY": {
+ "name": "Sîpri"
+ },
+ "LK": {
+ "name": "Sirî-Lanka"
+ },
+ "SY": {
+ "name": "Sirïi"
+ },
+ "SK": {
+ "name": "Solovakïi"
+ },
+ "SI": {
+ "name": "Solovenïi"
+ },
+ "SO": {
+ "name": "Somalïi"
+ },
+ "GS": {
+ "name": "South Georgia & South Sandwich Islands"
+ },
+ "BL": {
+ "name": "St. Barthélemy"
+ },
+ "MF": {
+ "name": "St. Martin"
+ },
+ "SD": {
+ "name": "Sudäan"
+ },
+ "SS": {
+ "name": "Sudäan-Mbongo"
+ },
+ "SE": {
+ "name": "Suêde"
+ },
+ "CH": {
+ "name": "Sûîsi"
+ },
+ "SR": {
+ "name": "Surinäm"
+ },
+ "SJ": {
+ "name": "Svalbard & Jan Mayen"
+ },
+ "SZ": {
+ "name": "Swäzïlânde"
+ },
+ "TJ": {
+ "name": "Taazikiistäan"
+ },
+ "TH": {
+ "name": "Tailânde"
+ },
+ "TW": {
+ "name": "Tâiwâni"
+ },
+ "TZ": {
+ "name": "Tanzanïi"
+ },
+ "TL": {
+ "name": "Timôro tî Tö"
+ },
+ "TG": {
+ "name": "Togö"
+ },
+ "TK": {
+ "name": "Tokelau"
+ },
+ "TO": {
+ "name": "Tonga"
+ },
+ "TT": {
+ "name": "Trinitùee na Tobagö"
+ },
+ "TA": {
+ "name": "Tristan da Cunha"
+ },
+ "TN": {
+ "name": "Tunizïi"
+ },
+ "TM": {
+ "name": "Turkumenistäan"
+ },
+ "TR": {
+ "name": "Turukïi"
+ },
+ "TV": {
+ "name": "Tüvalü"
+ },
+ "TD": {
+ "name": "Tyâde"
+ },
+ "UM": {
+ "name": "U.S. Outlying Islands"
+ },
+ "UG": {
+ "name": "Ugandäa"
+ },
+ "UA": {
+ "name": "Ukrêni"
+ },
+ "UY": {
+ "name": "Uruguëe"
+ },
+ "UZ": {
+ "name": "Uzbekistäan"
+ },
+ "VU": {
+ "name": "Vanuatü"
+ },
+ "VE": {
+ "name": "Venezueläa"
+ },
+ "VN": {
+ "name": "Vietnäm"
+ },
+ "WF": {
+ "name": "Walîsi na Futuna"
+ },
+ "EH": {
+ "name": "Western Sahara"
+ },
+ "YE": {
+ "name": "Yëmêni"
+ },
+ "JM": {
+ "name": "Zamaîka"
+ },
+ "DE": {
+ "name": "Zâmani"
+ },
+ "ZM": {
+ "name": "Zambïi"
+ },
+ "JP": {
+ "name": "Zapöon"
+ },
+ "AZ": {
+ "name": "Zerebaidyäan, Azerbaidyäan,"
+ },
+ "GI": {
+ "name": "Zibraltära, Zibaratära"
+ },
+ "ZW": {
+ "name": "Zimbäbwe"
+ },
+ "JO": {
+ "name": "Zordanïi"
+ },
+ "GE": {
+ "name": "Zorzïi"
+ },
+ "NF": {
+ "name": "Zûâ Nôrfôlko"
+ },
+ "SB": {
+ "name": "Zûâ Salomöon"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/country/shi-Latn.json b/library/intl/resources/country/shi-Latn.json
new file mode 100644
index 000000000..278dedd11
--- /dev/null
+++ b/library/intl/resources/country/shi-Latn.json
@@ -0,0 +1,761 @@
+{
+ "AZ": {
+ "name": "adrabijan"
+ },
+ "GI": {
+ "name": "adrar n á¹­aá¹›iq"
+ },
+ "AF": {
+ "name": "afɣanistan"
+ },
+ "ZA": {
+ "name": "afriqya n iffus"
+ },
+ "PS": {
+ "name": "agmmaḠn tagut d ɣzza"
+ },
+ "AX": {
+ "name": "Ã…land Islands"
+ },
+ "AL": {
+ "name": "albanya"
+ },
+ "DE": {
+ "name": "almanya"
+ },
+ "ID": {
+ "name": "andunisya"
+ },
+ "AD": {
+ "name": "andura"
+ },
+ "AI": {
+ "name": "angila"
+ },
+ "AO": {
+ "name": "angula"
+ },
+ "AQ": {
+ "name": "Antarctica"
+ },
+ "AG": {
+ "name": "antiga d brbuda"
+ },
+ "AR": {
+ "name": "arjantin"
+ },
+ "AM": {
+ "name": "arminya"
+ },
+ "AW": {
+ "name": "aruba"
+ },
+ "AC": {
+ "name": "Ascension Island"
+ },
+ "VA": {
+ "name": "awank n fatikan"
+ },
+ "PG": {
+ "name": "babwa ɣinya tamaynut"
+ },
+ "BS": {
+ "name": "bahamas"
+ },
+ "PK": {
+ "name": "bakistan"
+ },
+ "PW": {
+ "name": "balaw"
+ },
+ "PA": {
+ "name": "banama"
+ },
+ "BD": {
+ "name": "bangladic"
+ },
+ "PY": {
+ "name": "baragway"
+ },
+ "BB": {
+ "name": "barbad"
+ },
+ "BH": {
+ "name": "bḥrayn"
+ },
+ "BT": {
+ "name": "bhutan"
+ },
+ "BY": {
+ "name": "bilarusya"
+ },
+ "BZ": {
+ "name": "biliz"
+ },
+ "BJ": {
+ "name": "binin"
+ },
+ "PE": {
+ "name": "biru"
+ },
+ "PN": {
+ "name": "bitkayrn"
+ },
+ "BG": {
+ "name": "blɣara"
+ },
+ "BE": {
+ "name": "bljika"
+ },
+ "BR": {
+ "name": "brazil"
+ },
+ "BM": {
+ "name": "brmuda"
+ },
+ "PT": {
+ "name": "bṛṭqiz"
+ },
+ "BN": {
+ "name": "bruni"
+ },
+ "BO": {
+ "name": "bulibya"
+ },
+ "PF": {
+ "name": "bulinizya tafransist"
+ },
+ "PL": {
+ "name": "bulunya"
+ },
+ "BF": {
+ "name": "burkina fasu"
+ },
+ "PR": {
+ "name": "burtu riku"
+ },
+ "BI": {
+ "name": "burundi"
+ },
+ "BA": {
+ "name": "busna d hirsik"
+ },
+ "BW": {
+ "name": "butswana"
+ },
+ "IC": {
+ "name": "Canary Islands"
+ },
+ "BQ": {
+ "name": "Caribbean Netherlands"
+ },
+ "CL": {
+ "name": "ccili"
+ },
+ "CN": {
+ "name": "ccinwa"
+ },
+ "EA": {
+ "name": "Ceuta & Melilla"
+ },
+ "CX": {
+ "name": "Christmas Island"
+ },
+ "CC": {
+ "name": "Cocos (Keeling) Islands"
+ },
+ "CO": {
+ "name": "culumbya"
+ },
+ "KM": {
+ "name": "cumur"
+ },
+ "CW": {
+ "name": "Curaçao"
+ },
+ "DK": {
+ "name": "danmark"
+ },
+ "DG": {
+ "name": "Diego Garcia"
+ },
+ "DJ": {
+ "name": "djibuti"
+ },
+ "DM": {
+ "name": "duminik"
+ },
+ "DZ": {
+ "name": "dzayr"
+ },
+ "OM": {
+ "name": "ɛuman"
+ },
+ "VU": {
+ "name": "fanwaá¹­u"
+ },
+ "FO": {
+ "name": "Faroe Islands"
+ },
+ "FJ": {
+ "name": "fidji"
+ },
+ "PH": {
+ "name": "filibbin"
+ },
+ "FI": {
+ "name": "fillanda"
+ },
+ "VE": {
+ "name": "finzwila"
+ },
+ "VN": {
+ "name": "fitnam"
+ },
+ "FR": {
+ "name": "fransa"
+ },
+ "TF": {
+ "name": "French Southern Territories"
+ },
+ "GA": {
+ "name": "gabun"
+ },
+ "GM": {
+ "name": "gambya"
+ },
+ "GL": {
+ "name": "griland"
+ },
+ "GG": {
+ "name": "Guernsey"
+ },
+ "GP": {
+ "name": "gwadalub"
+ },
+ "GU": {
+ "name": "gwam"
+ },
+ "GT": {
+ "name": "gwatimala"
+ },
+ "GF": {
+ "name": "gwiyan tafransist"
+ },
+ "GY": {
+ "name": "gwiyana"
+ },
+ "GH": {
+ "name": "É£ana"
+ },
+ "GN": {
+ "name": "É£inya"
+ },
+ "GW": {
+ "name": "É£inya bisaw"
+ },
+ "GQ": {
+ "name": "É£inya n ikwadur"
+ },
+ "GD": {
+ "name": "É£rnaá¹­a"
+ },
+ "HT": {
+ "name": "hayti"
+ },
+ "HU": {
+ "name": "hnɣarya"
+ },
+ "HK": {
+ "name": "Hong Kong SAR China"
+ },
+ "NL": {
+ "name": "hulanda"
+ },
+ "HN": {
+ "name": "hunduras"
+ },
+ "EC": {
+ "name": "ikwadur"
+ },
+ "IR": {
+ "name": "iran"
+ },
+ "ER": {
+ "name": "iritirya"
+ },
+ "IE": {
+ "name": "irlanda"
+ },
+ "IS": {
+ "name": "island"
+ },
+ "IM": {
+ "name": "Isle of Man"
+ },
+ "IL": {
+ "name": "israyil"
+ },
+ "EE": {
+ "name": "istunya"
+ },
+ "IT": {
+ "name": "iá¹­alya"
+ },
+ "ET": {
+ "name": "ityubya"
+ },
+ "US": {
+ "name": "iwunak munnin n mirikan"
+ },
+ "JM": {
+ "name": "jamayka"
+ },
+ "JE": {
+ "name": "Jersey"
+ },
+ "GE": {
+ "name": "jurjya"
+ },
+ "NC": {
+ "name": "kalidunya tamaynut"
+ },
+ "KH": {
+ "name": "kambudya"
+ },
+ "CM": {
+ "name": "kamirun"
+ },
+ "CA": {
+ "name": "kanada"
+ },
+ "KZ": {
+ "name": "kazaxstan"
+ },
+ "KE": {
+ "name": "kinya"
+ },
+ "KG": {
+ "name": "kirɣizistan"
+ },
+ "KI": {
+ "name": "kiribati"
+ },
+ "XK": {
+ "name": "Kosovo"
+ },
+ "HR": {
+ "name": "krwatya"
+ },
+ "CU": {
+ "name": "kuba"
+ },
+ "CG": {
+ "name": "kungu"
+ },
+ "KR": {
+ "name": "kurya n iffus"
+ },
+ "KP": {
+ "name": "kurya n iẓẓlmá¸"
+ },
+ "CR": {
+ "name": "kusta rika"
+ },
+ "CI": {
+ "name": "kut difwar"
+ },
+ "LV": {
+ "name": "latfya"
+ },
+ "LA": {
+ "name": "laws"
+ },
+ "IQ": {
+ "name": "lɛiraq"
+ },
+ "IN": {
+ "name": "lhind"
+ },
+ "LR": {
+ "name": "libirya"
+ },
+ "LY": {
+ "name": "libya"
+ },
+ "LI": {
+ "name": "likinctayn"
+ },
+ "AE": {
+ "name": "limarat"
+ },
+ "LS": {
+ "name": "liá¹£uá¹­u"
+ },
+ "LT": {
+ "name": "litwanya"
+ },
+ "KW": {
+ "name": "lkwit"
+ },
+ "MA": {
+ "name": "lmɣrib"
+ },
+ "LB": {
+ "name": "lubnan"
+ },
+ "LU": {
+ "name": "luksanburg"
+ },
+ "JO": {
+ "name": "lurdun"
+ },
+ "JP": {
+ "name": "lyaban"
+ },
+ "GR": {
+ "name": "lyunan"
+ },
+ "MO": {
+ "name": "Macau SAR China"
+ },
+ "MG": {
+ "name": "madaɣacqar"
+ },
+ "MW": {
+ "name": "malawi"
+ },
+ "MV": {
+ "name": "maldif"
+ },
+ "ML": {
+ "name": "mali"
+ },
+ "MY": {
+ "name": "malizya"
+ },
+ "MT": {
+ "name": "malá¹­a"
+ },
+ "MQ": {
+ "name": "martinik"
+ },
+ "MK": {
+ "name": "masidunya"
+ },
+ "YT": {
+ "name": "mayuá¹­"
+ },
+ "FM": {
+ "name": "mikrunizya"
+ },
+ "MX": {
+ "name": "miksik"
+ },
+ "EG": {
+ "name": "miṣṛ"
+ },
+ "MN": {
+ "name": "mnɣulya"
+ },
+ "ME": {
+ "name": "Montenegro"
+ },
+ "MD": {
+ "name": "muldufya"
+ },
+ "MC": {
+ "name": "munaku"
+ },
+ "MS": {
+ "name": "munsirat"
+ },
+ "MU": {
+ "name": "muris"
+ },
+ "MR": {
+ "name": "muá¹›iá¹­anya"
+ },
+ "MZ": {
+ "name": "muznbiq"
+ },
+ "MM": {
+ "name": "myanmar"
+ },
+ "NA": {
+ "name": "namibya"
+ },
+ "NR": {
+ "name": "nawru"
+ },
+ "NP": {
+ "name": "nibal"
+ },
+ "NG": {
+ "name": "nijirya"
+ },
+ "NI": {
+ "name": "nikaragwa"
+ },
+ "NU": {
+ "name": "niwi"
+ },
+ "NE": {
+ "name": "nnijir"
+ },
+ "AT": {
+ "name": "nnmsa"
+ },
+ "NO": {
+ "name": "nnrwij"
+ },
+ "NZ": {
+ "name": "nyuzilanda"
+ },
+ "QA": {
+ "name": "qatar"
+ },
+ "CY": {
+ "name": "qubrus"
+ },
+ "RE": {
+ "name": "riyunyun"
+ },
+ "RO": {
+ "name": "rumanya"
+ },
+ "RU": {
+ "name": "rusya"
+ },
+ "RW": {
+ "name": "rwanda"
+ },
+ "SV": {
+ "name": "salfadur"
+ },
+ "WS": {
+ "name": "samwa"
+ },
+ "AS": {
+ "name": "samwa tamirikanit"
+ },
+ "PM": {
+ "name": "sanbyir d miklun"
+ },
+ "VC": {
+ "name": "sanfansan d grinadin"
+ },
+ "KN": {
+ "name": "sankris d nifis"
+ },
+ "SM": {
+ "name": "sanmarinu"
+ },
+ "SH": {
+ "name": "santilin"
+ },
+ "LC": {
+ "name": "santlusi"
+ },
+ "ST": {
+ "name": "sawá¹­umi d bransib"
+ },
+ "ES": {
+ "name": "sbanya"
+ },
+ "RS": {
+ "name": "Serbia"
+ },
+ "SX": {
+ "name": "Sint Maarten"
+ },
+ "SK": {
+ "name": "slufakya"
+ },
+ "SI": {
+ "name": "slufinya"
+ },
+ "SG": {
+ "name": "snɣafura"
+ },
+ "GS": {
+ "name": "South Georgia & South Sandwich Islands"
+ },
+ "SS": {
+ "name": "South Sudan"
+ },
+ "LK": {
+ "name": "srilanka"
+ },
+ "SA": {
+ "name": "ssaɛudiya"
+ },
+ "SC": {
+ "name": "ssicil"
+ },
+ "SN": {
+ "name": "ssinigal"
+ },
+ "SL": {
+ "name": "ssiralyun"
+ },
+ "SD": {
+ "name": "ssudan"
+ },
+ "SO": {
+ "name": "ṣṣumal"
+ },
+ "SE": {
+ "name": "sswid"
+ },
+ "BL": {
+ "name": "St. Barthélemy"
+ },
+ "MF": {
+ "name": "St. Martin"
+ },
+ "SR": {
+ "name": "surinam"
+ },
+ "SY": {
+ "name": "surya"
+ },
+ "SJ": {
+ "name": "Svalbard & Jan Mayen"
+ },
+ "SZ": {
+ "name": "swazilanda"
+ },
+ "CH": {
+ "name": "swisra"
+ },
+ "TJ": {
+ "name": "tadjakistan"
+ },
+ "CD": {
+ "name": "tagdudant tadimukratit n Kongo"
+ },
+ "DO": {
+ "name": "tagdudant taduminikt"
+ },
+ "CF": {
+ "name": "tagdudant tanammast n ifriqya"
+ },
+ "CZ": {
+ "name": "tagdudant tatcikit"
+ },
+ "GB": {
+ "name": "tagldit imunn"
+ },
+ "IO": {
+ "name": "tamnaá¸t tanglizit n ugaru ahindi"
+ },
+ "TZ": {
+ "name": "ṭanẓanya"
+ },
+ "TH": {
+ "name": "á¹­ayland"
+ },
+ "TW": {
+ "name": "á¹­aywan"
+ },
+ "TD": {
+ "name": "tcad"
+ },
+ "CV": {
+ "name": "tigzirin n kabbirdi"
+ },
+ "KY": {
+ "name": "tigzirin n kayman"
+ },
+ "CK": {
+ "name": "tigzirin n kuk"
+ },
+ "FK": {
+ "name": "tigzirin n malawi"
+ },
+ "MH": {
+ "name": "tigzirin n marcal"
+ },
+ "MP": {
+ "name": "tigzirin n maryan n iẓẓlmá¸"
+ },
+ "NF": {
+ "name": "tigzirin n nurfulk"
+ },
+ "SB": {
+ "name": "tigzirin n saluman"
+ },
+ "TC": {
+ "name": "tigzirin n turkya d kayk"
+ },
+ "VI": {
+ "name": "tigzirin timgad n iwunak munnin"
+ },
+ "VG": {
+ "name": "tigzirin timgad n nngliz"
+ },
+ "TL": {
+ "name": "timur n lqblt"
+ },
+ "TT": {
+ "name": "trinidad d á¹­ubagu"
+ },
+ "TA": {
+ "name": "Tristan da Cunha"
+ },
+ "TV": {
+ "name": "tufalu"
+ },
+ "TG": {
+ "name": "á¹­ugu"
+ },
+ "TK": {
+ "name": "á¹­uklaw"
+ },
+ "TO": {
+ "name": "á¹­unga"
+ },
+ "TN": {
+ "name": "tuns"
+ },
+ "TM": {
+ "name": "turkmanstan"
+ },
+ "TR": {
+ "name": "turkya"
+ },
+ "UM": {
+ "name": "U.S. Outlying Islands"
+ },
+ "UG": {
+ "name": "uɣanda"
+ },
+ "UA": {
+ "name": "ukranya"
+ },
+ "UY": {
+ "name": "urugway"
+ },
+ "AU": {
+ "name": "ustralya"
+ },
+ "UZ": {
+ "name": "uzbakistan"
+ },
+ "WF": {
+ "name": "walis d futuna"
+ },
+ "EH": {
+ "name": "Western Sahara"
+ },
+ "YE": {
+ "name": "yaman"
+ },
+ "ZM": {
+ "name": "zambya"
+ },
+ "ZW": {
+ "name": "zimbabwi"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/country/shi.json b/library/intl/resources/country/shi.json
new file mode 100644
index 000000000..bfdd20b39
--- /dev/null
+++ b/library/intl/resources/country/shi.json
@@ -0,0 +1,761 @@
+{
+ "AX": {
+ "name": "Ã…land Islands"
+ },
+ "AQ": {
+ "name": "Antarctica"
+ },
+ "AC": {
+ "name": "Ascension Island"
+ },
+ "IC": {
+ "name": "Canary Islands"
+ },
+ "BQ": {
+ "name": "Caribbean Netherlands"
+ },
+ "EA": {
+ "name": "Ceuta & Melilla"
+ },
+ "CX": {
+ "name": "Christmas Island"
+ },
+ "CC": {
+ "name": "Cocos (Keeling) Islands"
+ },
+ "CW": {
+ "name": "Curaçao"
+ },
+ "DG": {
+ "name": "Diego Garcia"
+ },
+ "FO": {
+ "name": "Faroe Islands"
+ },
+ "TF": {
+ "name": "French Southern Territories"
+ },
+ "GG": {
+ "name": "Guernsey"
+ },
+ "HK": {
+ "name": "Hong Kong SAR China"
+ },
+ "IM": {
+ "name": "Isle of Man"
+ },
+ "JE": {
+ "name": "Jersey"
+ },
+ "XK": {
+ "name": "Kosovo"
+ },
+ "MO": {
+ "name": "Macau SAR China"
+ },
+ "ME": {
+ "name": "Montenegro"
+ },
+ "RS": {
+ "name": "Serbia"
+ },
+ "SX": {
+ "name": "Sint Maarten"
+ },
+ "GS": {
+ "name": "South Georgia & South Sandwich Islands"
+ },
+ "SS": {
+ "name": "South Sudan"
+ },
+ "BL": {
+ "name": "St. Barthélemy"
+ },
+ "MF": {
+ "name": "St. Martin"
+ },
+ "SJ": {
+ "name": "Svalbard & Jan Mayen"
+ },
+ "TA": {
+ "name": "Tristan da Cunha"
+ },
+ "UM": {
+ "name": "U.S. Outlying Islands"
+ },
+ "EH": {
+ "name": "Western Sahara"
+ },
+ "PS": {
+ "name": "ⴰⴳⵎⵎⴰⴹ ⵠⵜⴰⴳⵓⵜ ⴷ ⵖⵣⵣⴰ"
+ },
+ "AZ": {
+ "name": "ⴰⴷⵔⴰⴱⵉⵊⴰâµ"
+ },
+ "GI": {
+ "name": "ⴰⴷⵔⴰⵔ ⵠⵟⴰⵕⵉⵇ"
+ },
+ "ZA": {
+ "name": "ⴰⴼⵔⵉⵇⵢⴰ ⵠⵉⴼⴼⵓⵙ"
+ },
+ "AF": {
+ "name": "ⴰⴼⵖⴰâµâµ‰âµ™âµœâ´°âµ"
+ },
+ "AL": {
+ "name": "â´°âµâ´±â´°âµâµ¢â´°"
+ },
+ "DE": {
+ "name": "â´°âµâµŽâ´°âµâµ¢â´°"
+ },
+ "AI": {
+ "name": "â´°âµâ´³âµ‰âµâ´°"
+ },
+ "AO": {
+ "name": "â´°âµâ´³âµ“âµâ´°"
+ },
+ "ID": {
+ "name": "â´°âµâ´·âµ“âµâµ‰âµ™âµ¢â´°"
+ },
+ "AD": {
+ "name": "â´°âµâ´·âµ“ⵔⴰ"
+ },
+ "AG": {
+ "name": "â´°âµâµœâµ‰â´³â´° â´· ⴱⵔⴱⵓⴷⴰ"
+ },
+ "AR": {
+ "name": "ⴰⵔⵊⴰâµâµœâµ‰âµ"
+ },
+ "AM": {
+ "name": "ⴰⵔⵎⵉâµâµ¢â´°"
+ },
+ "AW": {
+ "name": "ⴰⵔⵓⴱⴰ"
+ },
+ "VA": {
+ "name": "ⴰⵡⴰâµâ´½ ⵠⴼⴰⵜⵉⴽⴰâµ"
+ },
+ "PG": {
+ "name": "ⴱⴰⴱⵡⴰ ⵖⵉâµâµ¢â´° ⵜⴰⵎⴰⵢâµâµ“ⵜ"
+ },
+ "PK": {
+ "name": "ⴱⴰⴽⵉⵙⵜⴰâµ"
+ },
+ "BS": {
+ "name": "ⴱⴰⵀⴰⵎⴰⵙ"
+ },
+ "PW": {
+ "name": "ⴱⴰâµâ´°âµ¡"
+ },
+ "PA": {
+ "name": "ⴱⴰâµâ´°âµŽâ´°"
+ },
+ "BD": {
+ "name": "ⴱⴰâµâ´³âµâ´°â´·âµ‰âµ›"
+ },
+ "PY": {
+ "name": "ⴱⴰⵔⴰⴳⵡⴰⵢ"
+ },
+ "BB": {
+ "name": "ⴱⴰⵔⴱⴰⴷ"
+ },
+ "BT": {
+ "name": "ⴱⵀⵓⵜⴰâµ"
+ },
+ "BH": {
+ "name": "ⴱⵃⵔⴰⵢâµ"
+ },
+ "BY": {
+ "name": "ⴱⵉâµâ´°âµ”ⵓⵙⵢⴰ"
+ },
+ "BZ": {
+ "name": "ⴱⵉâµâµ‰âµ£"
+ },
+ "BJ": {
+ "name": "ⴱⵉâµâµ‰âµ"
+ },
+ "PE": {
+ "name": "ⴱⵉⵔⵓ"
+ },
+ "PN": {
+ "name": "ⴱⵉⵜⴽⴰⵢⵔâµ"
+ },
+ "BE": {
+ "name": "â´±âµâµŠâµ‰â´½â´°"
+ },
+ "BG": {
+ "name": "â´±âµâµ–ⴰⵔⵢⴰ"
+ },
+ "BO": {
+ "name": "ⴱⵓâµâµ‰â´¼âµ¢â´°"
+ },
+ "PF": {
+ "name": "ⴱⵓâµâµ‰âµâµ‰âµ£âµ¢â´° ⵜⴰⴼⵔⴰâµâµ™âµ‰âµ™âµœ"
+ },
+ "PL": {
+ "name": "ⴱⵓâµâµ“âµâµ¢â´°"
+ },
+ "BF": {
+ "name": "ⴱⵓⵔⴽⵉâµâ´° ⴼⴰⵙⵓ"
+ },
+ "BI": {
+ "name": "ⴱⵓⵔⵓâµâ´·âµ‰"
+ },
+ "PR": {
+ "name": "ⴱⵓⵔⵜⵓ ⵔⵉⴽⵓ"
+ },
+ "BA": {
+ "name": "ⴱⵓⵙâµâ´° â´· ⵀⵉⵔⵙⵉⴽ"
+ },
+ "BW": {
+ "name": "ⴱⵓⵜⵙⵡⴰâµâ´°"
+ },
+ "BR": {
+ "name": "ⴱⵔⴰⵣⵉâµ"
+ },
+ "BM": {
+ "name": "ⴱⵔⵎⵓⴷⴰ"
+ },
+ "BN": {
+ "name": "ⴱⵔⵓâµâµ‰"
+ },
+ "PT": {
+ "name": "ⴱⵕⵟⵇⵉⵣ"
+ },
+ "GA": {
+ "name": "ⴳⴰⴱⵓâµ"
+ },
+ "GM": {
+ "name": "ⴳⴰⵎⴱⵢⴰ"
+ },
+ "GL": {
+ "name": "ⴳⵔⵉâµâ´°âµâ´·"
+ },
+ "GP": {
+ "name": "ⴳⵡⴰⴷⴰâµâµ“â´±"
+ },
+ "GU": {
+ "name": "ⴳⵡⴰⵎ"
+ },
+ "GT": {
+ "name": "ⴳⵡⴰⵜⵉⵎⴰâµâ´°"
+ },
+ "GF": {
+ "name": "ⴳⵡⵉⵢⴰⵠⵜⴰⴼⵔⴰâµâµ™âµ‰âµ™âµœ"
+ },
+ "GY": {
+ "name": "ⴳⵡⵉⵢⴰâµâ´°"
+ },
+ "DK": {
+ "name": "â´·â´°âµâµŽâ´°âµ”â´½"
+ },
+ "DJ": {
+ "name": "ⴷⵊⵉⴱⵓⵜⵉ"
+ },
+ "DM": {
+ "name": "ⴷⵓⵎⵉâµâµ‰â´½"
+ },
+ "DZ": {
+ "name": "ⴷⵣⴰⵢⵔ"
+ },
+ "VU": {
+ "name": "ⴼⴰâµâµ¡â´°âµŸâµ“"
+ },
+ "FJ": {
+ "name": "ⴼⵉⴷⵊⵉ"
+ },
+ "PH": {
+ "name": "ⴼⵉâµâµ‰â´±â´±âµ‰âµ"
+ },
+ "FI": {
+ "name": "ⴼⵉâµâµâ´°âµâ´·â´°"
+ },
+ "VE": {
+ "name": "ⴼⵉâµâµ£âµ¡âµ‰âµâ´°"
+ },
+ "VN": {
+ "name": "ⴼⵉⵜâµâ´°âµŽ"
+ },
+ "FR": {
+ "name": "ⴼⵔⴰâµâµ™â´°"
+ },
+ "NC": {
+ "name": "ⴽⴰâµâµ‰â´·âµ“âµâµ¢â´° ⵜⴰⵎⴰⵢâµâµ“ⵜ"
+ },
+ "KH": {
+ "name": "ⴽⴰⵎⴱⵓⴷⵢⴰ"
+ },
+ "CM": {
+ "name": "ⴽⴰⵎⵉⵔⵓâµ"
+ },
+ "CA": {
+ "name": "ⴽⴰâµâ´°â´·â´°"
+ },
+ "KZ": {
+ "name": "ⴽⴰⵣⴰⵅⵙⵜⴰâµ"
+ },
+ "KE": {
+ "name": "ⴽⵉâµâµ¢â´°"
+ },
+ "KI": {
+ "name": "ⴽⵉⵔⵉⴱⴰⵜⵉ"
+ },
+ "KG": {
+ "name": "ⴽⵉⵔⵖⵉⵣⵉⵙⵜⴰâµ"
+ },
+ "CU": {
+ "name": "ⴽⵓⴱⴰ"
+ },
+ "CO": {
+ "name": "ⴽⵓâµâµ“ⵎⴱⵢⴰ"
+ },
+ "CG": {
+ "name": "ⴽⵓâµâ´³âµ“"
+ },
+ "KR": {
+ "name": "ⴽⵓⵔⵢⴰ ⵠⵉⴼⴼⵓⵙ"
+ },
+ "KP": {
+ "name": "ⴽⵓⵔⵢⴰ ⵠⵉⵥⵥâµâµŽâ´¹"
+ },
+ "CR": {
+ "name": "ⴽⵓⵙⵜⴰ ⵔⵉⴽⴰ"
+ },
+ "CI": {
+ "name": "ⴽⵓⵜ ⴷⵉⴼⵡⴰⵔ"
+ },
+ "HR": {
+ "name": "ⴽⵔⵡⴰⵜⵢⴰ"
+ },
+ "HT": {
+ "name": "ⵀⴰⵢⵜⵉ"
+ },
+ "HU": {
+ "name": "âµ€âµâµ–ⴰⵔⵢⴰ"
+ },
+ "NL": {
+ "name": "ⵀⵓâµâ´°âµâ´·â´°"
+ },
+ "HN": {
+ "name": "ⵀⵓâµâ´·âµ“ⵔⴰⵙ"
+ },
+ "OM": {
+ "name": "ⵄⵓⵎⴰâµ"
+ },
+ "QA": {
+ "name": "ⵇⴰⵜⴰⵔ"
+ },
+ "CY": {
+ "name": "ⵇⵓⴱⵔⵓⵙ"
+ },
+ "KM": {
+ "name": "ⵇⵓⵎⵓⵔ"
+ },
+ "EC": {
+ "name": "ⵉⴽⵡⴰⴷⵓⵔ"
+ },
+ "IR": {
+ "name": "ⵉⵔⴰâµ"
+ },
+ "ER": {
+ "name": "ⵉⵔⵉⵜⵉⵔⵢⴰ"
+ },
+ "IE": {
+ "name": "ⵉⵔâµâ´°âµâ´·â´°"
+ },
+ "IS": {
+ "name": "ⵉⵙâµâ´°âµâ´·"
+ },
+ "IL": {
+ "name": "ⵉⵙⵔⴰⵢⵉâµ"
+ },
+ "EE": {
+ "name": "ⵉⵙⵜⵓâµâµ¢â´°"
+ },
+ "ET": {
+ "name": "ⵉⵜⵢⵓⴱⵢⴰ"
+ },
+ "IT": {
+ "name": "ⵉⵟⴰâµâµ¢â´°"
+ },
+ "US": {
+ "name": "ⵉⵡⵓâµâ´°â´½ ⵎⵓâµâµâµ‰âµ ⵠⵎⵉⵔⵉⴽⴰâµ"
+ },
+ "JM": {
+ "name": "ⵊⴰⵎⴰⵢⴽⴰ"
+ },
+ "GE": {
+ "name": "ⵊⵓⵔⵊⵢⴰ"
+ },
+ "LV": {
+ "name": "âµâ´°âµœâ´¼âµ¢â´°"
+ },
+ "LA": {
+ "name": "âµâ´°âµ¡âµ™"
+ },
+ "KW": {
+ "name": "âµâ´½âµ¡âµ‰âµœ"
+ },
+ "IN": {
+ "name": "âµâµ€âµ‰âµâ´·"
+ },
+ "IQ": {
+ "name": "âµâµ„ⵉⵔⴰⵇ"
+ },
+ "LR": {
+ "name": "âµâµ‰â´±âµ‰âµ”ⵢⴰ"
+ },
+ "LY": {
+ "name": "âµâµ‰â´±âµ¢â´°"
+ },
+ "LI": {
+ "name": "âµâµ‰â´½âµ‰âµâµ›âµœâ´°âµ¢âµ"
+ },
+ "AE": {
+ "name": "âµâµ‰âµŽâ´°âµ”ⴰⵜ"
+ },
+ "LS": {
+ "name": "âµâµ‰âµšâµ“ⵟⵓ"
+ },
+ "LT": {
+ "name": "âµâµ‰âµœâµ¡â´°âµâµ¢â´°"
+ },
+ "MA": {
+ "name": "âµâµŽâµ–ⵔⵉⴱ"
+ },
+ "LB": {
+ "name": "âµâµ“â´±âµâ´°âµ"
+ },
+ "LU": {
+ "name": "âµâµ“ⴽⵙⴰâµâ´±âµ“ⵔⴳ"
+ },
+ "JO": {
+ "name": "âµâµ“ⵔⴷⵓâµ"
+ },
+ "JP": {
+ "name": "âµâµ¢â´°â´±â´°âµ"
+ },
+ "GR": {
+ "name": "âµâµ¢âµ“âµâ´°âµ"
+ },
+ "MG": {
+ "name": "ⵎⴰⴷⴰⵖⴰⵛⵇⴰⵔ"
+ },
+ "MW": {
+ "name": "ⵎⴰâµâ´°âµ¡âµ‰"
+ },
+ "MV": {
+ "name": "ⵎⴰâµâ´·âµ‰â´¼"
+ },
+ "ML": {
+ "name": "ⵎⴰâµâµ‰"
+ },
+ "MY": {
+ "name": "ⵎⴰâµâµ‰âµ£âµ¢â´°"
+ },
+ "MT": {
+ "name": "ⵎⴰâµâµŸâ´°"
+ },
+ "MQ": {
+ "name": "ⵎⴰⵔⵜⵉâµâµ‰â´½"
+ },
+ "MK": {
+ "name": "ⵎⴰⵙⵉⴷⵓâµâµ¢â´°"
+ },
+ "YT": {
+ "name": "ⵎⴰⵢⵓⵟ"
+ },
+ "FM": {
+ "name": "ⵎⵉⴽⵔⵓâµâµ‰âµ£âµ¢â´°"
+ },
+ "MX": {
+ "name": "ⵎⵉⴽⵙⵉⴽ"
+ },
+ "EG": {
+ "name": "ⵎⵉⵚⵕ"
+ },
+ "MN": {
+ "name": "ⵎâµâµ–ⵓâµâµ¢â´°"
+ },
+ "MD": {
+ "name": "ⵎⵓâµâ´·âµ“ⴼⵢⴰ"
+ },
+ "MC": {
+ "name": "ⵎⵓâµâ´°â´½âµ“"
+ },
+ "MS": {
+ "name": "ⵎⵓâµâµ™âµ‰âµ”ⴰⵜ"
+ },
+ "MU": {
+ "name": "ⵎⵓⵔⵉⵙ"
+ },
+ "MR": {
+ "name": "ⵎⵓⵕⵉⵟⴰâµâµ¢â´°"
+ },
+ "MZ": {
+ "name": "ⵎⵓⵣâµâ´±âµ‰âµ‡"
+ },
+ "MM": {
+ "name": "ⵎⵢⴰâµâµŽâ´°âµ”"
+ },
+ "NA": {
+ "name": "âµâ´°âµŽâµ‰â´±âµ¢â´°"
+ },
+ "NR": {
+ "name": "âµâ´°âµ¡âµ”ⵓ"
+ },
+ "NP": {
+ "name": "âµâµ‰â´±â´°âµ"
+ },
+ "NI": {
+ "name": "âµâµ‰â´½â´°âµ”ⴰⴳⵡⴰ"
+ },
+ "NG": {
+ "name": "âµâµ‰âµŠâµ‰âµ”ⵢⴰ"
+ },
+ "NU": {
+ "name": "âµâµ‰âµ¡âµ‰"
+ },
+ "NE": {
+ "name": "âµâµâµ‰âµŠâµ‰âµ”"
+ },
+ "AT": {
+ "name": "âµâµâµŽâµ™â´°"
+ },
+ "NO": {
+ "name": "âµâµâµ”ⵡⵉⵊ"
+ },
+ "NZ": {
+ "name": "âµâµ¢âµ“ⵣⵉâµâ´°âµâ´·â´°"
+ },
+ "UA": {
+ "name": "ⵓⴽⵔⴰâµâµ¢â´°"
+ },
+ "UY": {
+ "name": "ⵓⵔⵓⴳⵡⴰⵢ"
+ },
+ "UG": {
+ "name": "ⵓⵖⴰâµâ´·â´°"
+ },
+ "AU": {
+ "name": "ⵓⵙⵜⵔⴰâµâµ¢â´°"
+ },
+ "UZ": {
+ "name": "ⵓⵣⴱⴰⴽⵉⵙⵜⴰâµ"
+ },
+ "RE": {
+ "name": "ⵔⵉⵢⵓâµâµ¢âµ“âµ"
+ },
+ "RO": {
+ "name": "ⵔⵓⵎⴰâµâµ¢â´°"
+ },
+ "RU": {
+ "name": "ⵔⵓⵙⵢⴰ"
+ },
+ "RW": {
+ "name": "ⵔⵡⴰâµâ´·â´°"
+ },
+ "GH": {
+ "name": "âµ–â´°âµâ´°"
+ },
+ "GN": {
+ "name": "ⵖⵉâµâµ¢â´°"
+ },
+ "GW": {
+ "name": "ⵖⵉâµâµ¢â´° ⴱⵉⵙⴰⵡ"
+ },
+ "GQ": {
+ "name": "ⵖⵉâµâµ¢â´° ⵠⵉⴽⵡⴰⴷⵓⵔ"
+ },
+ "GD": {
+ "name": "âµ–âµ”âµâ´°âµŸâ´°"
+ },
+ "SV": {
+ "name": "ⵙⴰâµâ´¼â´°â´·âµ“âµ”"
+ },
+ "WS": {
+ "name": "ⵙⴰⵎⵡⴰ"
+ },
+ "AS": {
+ "name": "ⵙⴰⵎⵡⴰ ⵜⴰⵎⵉⵔⵉⴽⴰâµâµ‰âµœ"
+ },
+ "PM": {
+ "name": "ⵙⴰâµâ´±âµ¢âµ‰âµ” â´· ⵎⵉⴽâµâµ“âµ"
+ },
+ "VC": {
+ "name": "ⵙⴰâµâ´¼â´°âµâµ™â´°âµ â´· ⴳⵔⵉâµâ´°â´·âµ‰âµ"
+ },
+ "KN": {
+ "name": "ⵙⴰâµâ´½âµ”ⵉⵙ â´· âµâµ‰â´¼âµ‰âµ™"
+ },
+ "SM": {
+ "name": "ⵙⴰâµâµŽâ´°âµ”ⵉâµâµ“"
+ },
+ "SH": {
+ "name": "ⵙⴰâµâµœâµ‰âµâµ‰âµ"
+ },
+ "LC": {
+ "name": "ⵙⴰâµâµœâµâµ“ⵙⵉ"
+ },
+ "ST": {
+ "name": "ⵙⴰⵡⵟⵓⵎⵉ â´· ⴱⵔⴰâµâµ™âµ‰â´±"
+ },
+ "ES": {
+ "name": "ⵙⴱⴰâµâµ¢â´°"
+ },
+ "SK": {
+ "name": "âµ™âµâµ“ⴼⴰⴽⵢⴰ"
+ },
+ "SI": {
+ "name": "âµ™âµâµ“ⴼⵉâµâµ¢â´°"
+ },
+ "SG": {
+ "name": "âµ™âµâµ–ⴰⴼⵓⵔⴰ"
+ },
+ "SR": {
+ "name": "ⵙⵓⵔⵉâµâ´°âµŽ"
+ },
+ "SY": {
+ "name": "ⵙⵓⵔⵢⴰ"
+ },
+ "LK": {
+ "name": "ⵙⵔⵉâµâ´°âµâ´½â´°"
+ },
+ "SA": {
+ "name": "ⵙⵙⴰⵄⵓⴷⵉⵢⴰ"
+ },
+ "SN": {
+ "name": "ⵙⵙⵉâµâµ‰â´³â´°âµ"
+ },
+ "SL": {
+ "name": "ⵙⵙⵉⵔⴰâµâµ¢âµ“âµ"
+ },
+ "SC": {
+ "name": "ⵙⵙⵉⵛⵉâµ"
+ },
+ "SD": {
+ "name": "ⵙⵙⵓⴷⴰâµ"
+ },
+ "SE": {
+ "name": "ⵙⵙⵡⵉⴷ"
+ },
+ "SZ": {
+ "name": "ⵙⵡⴰⵣⵉâµâ´°âµâ´·â´°"
+ },
+ "CH": {
+ "name": "ⵙⵡⵉⵙⵔⴰ"
+ },
+ "SO": {
+ "name": "ⵚⵚⵓⵎⴰâµ"
+ },
+ "CL": {
+ "name": "ⵛⵛⵉâµâµ‰"
+ },
+ "CN": {
+ "name": "ⵛⵛⵉâµâµ¡â´°"
+ },
+ "CD": {
+ "name": "ⵜⴰⴳⴷⵓⴷⴰâµâµœ ⵜⴰⴷⵉⵎⵓⵇⵔⴰⵜⵉⵜ ⵠⴽⵓâµâ´³âµ“"
+ },
+ "DO": {
+ "name": "ⵜⴰⴳⴷⵓⴷⴰâµâµœ ⵜⴰⴷⵓⵎⵉâµâµ‰â´½âµœ"
+ },
+ "CF": {
+ "name": "ⵜⴰⴳⴷⵓⴷⴰâµâµœ ⵜⴰâµâ´°âµŽâµŽâ´°âµ™âµœ ⵠⵉⴼⵔⵉⵇⵢⴰ"
+ },
+ "CZ": {
+ "name": "ⵜⴰⴳⴷⵓⴷⴰâµâµœ ⵜⴰⵜⵛⵉⴽⵉⵜ"
+ },
+ "GB": {
+ "name": "ⵜⴰⴳâµâ´·âµ‰âµœ ⵉⵎⵓâµâµ"
+ },
+ "TJ": {
+ "name": "ⵜⴰⴷⵊⴰⴽⵉⵙⵜⴰâµ"
+ },
+ "IO": {
+ "name": "ⵜⴰⵎâµâ´°â´¹âµœ ⵜⴰâµâ´³âµâµ‰âµ£âµ‰âµœ ⵠⵓⴳⴰⵔⵓ ⴰⵀⵉâµâ´·âµ‰"
+ },
+ "CV": {
+ "name": "ⵜⵉⴳⵣⵉⵔⵉⵠⵠⴽⴰⴱⴱⵉⵔⴷⵉ"
+ },
+ "KY": {
+ "name": "ⵜⵉⴳⵣⵉⵔⵉⵠⵠⴽⴰⵢⵎⴰâµ"
+ },
+ "CK": {
+ "name": "ⵜⵉⴳⵣⵉⵔⵉⵠⵠⴽⵓⴽ"
+ },
+ "FK": {
+ "name": "ⵜⵉⴳⵣⵉⵔⵉⵠⵠⵎⴰâµâ´°âµ¡âµ‰"
+ },
+ "MH": {
+ "name": "ⵜⵉⴳⵣⵉⵔⵉⵠⵠⵎⴰⵔⵛⴰâµ"
+ },
+ "MP": {
+ "name": "ⵜⵉⴳⵣⵉⵔⵉⵠⵠⵎⴰⵔⵢⴰⵠⵠⵉⵥⵥâµâµŽâ´¹"
+ },
+ "NF": {
+ "name": "ⵜⵉⴳⵣⵉⵔⵉⵠⵠâµâµ“ⵔⴼⵓâµâ´½"
+ },
+ "SB": {
+ "name": "ⵜⵉⴳⵣⵉⵔⵉⵠⵠⵙⴰâµâµ“ⵎⴰâµ"
+ },
+ "TC": {
+ "name": "ⵜⵉⴳⵣⵉⵔⵉⵠⵠⵜⵓⵔⴽⵢⴰ ⴷ ⴽⴰⵢⴽ"
+ },
+ "VI": {
+ "name": "ⵜⵉⴳⵣⵉⵔⵉⵠⵜⵉⵎⴳⴰⴷ ⵠⵉⵡⵓâµâ´°â´½ ⵎⵓâµâµâµ‰âµ"
+ },
+ "VG": {
+ "name": "ⵜⵉⴳⵣⵉⵔⵉⵠⵜⵉⵎⴳⴰⴷ âµ âµâµâ´³âµâµ‰âµ£"
+ },
+ "TL": {
+ "name": "ⵜⵉⵎⵓⵔ âµ âµâµ‡â´±âµâµœ"
+ },
+ "TV": {
+ "name": "ⵜⵓⴼⴰâµâµ“"
+ },
+ "TN": {
+ "name": "ⵜⵓâµâµ™"
+ },
+ "TM": {
+ "name": "ⵜⵓⵔⴽⵎⴰâµâµ™âµœâ´°âµ"
+ },
+ "TR": {
+ "name": "ⵜⵓⵔⴽⵢⴰ"
+ },
+ "TT": {
+ "name": "ⵜⵔⵉâµâµ‰â´·â´°â´· â´· ⵟⵓⴱⴰⴳⵓ"
+ },
+ "TD": {
+ "name": "ⵜⵛⴰⴷ"
+ },
+ "TZ": {
+ "name": "ⵟⴰâµâµ¥â´°âµâµ¢â´°"
+ },
+ "TH": {
+ "name": "ⵟⴰⵢâµâ´°âµâ´·"
+ },
+ "TW": {
+ "name": "ⵟⴰⵢⵡⴰâµ"
+ },
+ "TG": {
+ "name": "ⵟⵓⴳⵓ"
+ },
+ "TK": {
+ "name": "ⵟⵓⴽâµâ´°âµ¡"
+ },
+ "TO": {
+ "name": "ⵟⵓâµâ´³â´°"
+ },
+ "WF": {
+ "name": "ⵡⴰâµâµ‰âµ™ â´· ⴼⵓⵜⵓâµâ´°"
+ },
+ "YE": {
+ "name": "ⵢⴰⵎⴰâµ"
+ },
+ "ZM": {
+ "name": "ⵣⴰⵎⴱⵢⴰ"
+ },
+ "ZW": {
+ "name": "ⵣⵉⵎⴱⴰⴱⵡⵉ"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/country/si.json b/library/intl/resources/country/si.json
new file mode 100644
index 000000000..d6fad340f
--- /dev/null
+++ b/library/intl/resources/country/si.json
@@ -0,0 +1,761 @@
+{
+ "IE": {
+ "name": "අයර්ලන්තය"
+ },
+ "IM": {
+ "name": "අයිල් ඔෆ් මෑන්"
+ },
+ "IS": {
+ "name": "අයිස්ලන්තය"
+ },
+ "AW": {
+ "name": "අරුබà·à·€"
+ },
+ "AZ": {
+ "name": "අසර්බයිජà·à¶±à¶º"
+ },
+ "AR": {
+ "name": "ආර්ජෙන්ටිනà·à·€"
+ },
+ "AM": {
+ "name": "ආර්මේනියà·à·€"
+ },
+ "AI": {
+ "name": "ඇන්ගුයිලà·à·€"
+ },
+ "AO": {
+ "name": "ඇන්ගà·à¶½à·à·€"
+ },
+ "AQ": {
+ "name": "ඇන්ටà·à¶šà·Šà¶§à·’කà·à·€"
+ },
+ "AG": {
+ "name": "ඇන්ටිගුව෠සහ බà·à¶¶à·’යුඩà·à·€"
+ },
+ "AD": {
+ "name": "ඇන්ඩà·à¶»à·à·€"
+ },
+ "VI": {
+ "name": "ඇමරිකà·à¶±à·” වර්ජින් දූපත්"
+ },
+ "AS": {
+ "name": "ඇමරිකà·à¶±à·” à·ƒà·à¶¸à·à·€à·à·€"
+ },
+ "DZ": {
+ "name": "ඇල්ජීරියà·à·€"
+ },
+ "AL": {
+ "name": "ඇල්බේනියà·à·€"
+ },
+ "AC": {
+ "name": "ඇසෙන්ෂන් දිවයින"
+ },
+ "AF": {
+ "name": "ඇෆ්ගනිස්ථà·à¶±à¶º"
+ },
+ "EC": {
+ "name": "ඉක්වදà·à¶»à¶º"
+ },
+ "IT": {
+ "name": "ඉතà·à¶½à·’ය"
+ },
+ "ET": {
+ "name": "ඉතියà·à¶´à·’යà·à·€"
+ },
+ "IN": {
+ "name": "ඉන්දියà·à·€"
+ },
+ "ID": {
+ "name": "ඉන්දුනීසියà·à·€"
+ },
+ "IQ": {
+ "name": "ඉරà·à¶šà¶º"
+ },
+ "IR": {
+ "name": "ඉරà·à¶±à¶º"
+ },
+ "EG": {
+ "name": "ඊජිප්තුව"
+ },
+ "IL": {
+ "name": "ඊà·à·Šâ€à¶»à·à¶ºà¶½à¶º"
+ },
+ "UG": {
+ "name": "උගන්ඩà·à·€"
+ },
+ "KP": {
+ "name": "උතුරු කොරියà·à·€"
+ },
+ "MP": {
+ "name": "උතුරු මරියà·à¶±à· දූපත්"
+ },
+ "UY": {
+ "name": "උරුගුවේ"
+ },
+ "UZ": {
+ "name": "උස්බෙකිස්ථà·à¶±à¶º"
+ },
+ "AE": {
+ "name": "එක්සත් අරà·à¶¶à·’ එමිර් රà·à¶¢à·Šâ€à¶ºà¶º"
+ },
+ "UM": {
+ "name": "එක්සත් ජනපද ඈත දූපත්"
+ },
+ "US": {
+ "name": "එක්සත් ජනපදය"
+ },
+ "GB": {
+ "name": "එක්සත් රà·à¶¢à¶°à·à¶±à·’ය"
+ },
+ "ER": {
+ "name": "එරිත්â€à¶»à·’යà·à·€"
+ },
+ "SV": {
+ "name": "එල් à·ƒà·à¶½à·Šà·€à¶¯à·à¶»à¶º"
+ },
+ "EE": {
+ "name": "එස්තà·à¶±à·’යà·à·€"
+ },
+ "AT": {
+ "name": "ඔස්ට්â€à¶»à·’යà·à·€"
+ },
+ "OM": {
+ "name": "ඕමà·à¶±à¶º"
+ },
+ "AX": {
+ "name": "ඕලන්ඩ් දූපත්"
+ },
+ "AU": {
+ "name": "ඕස්ට්â€à¶»à·šà¶½à·’යà·à·€"
+ },
+ "QA": {
+ "name": "කටà·à¶»à·Š"
+ },
+ "KZ": {
+ "name": "කසකස්තà·à¶±à¶º"
+ },
+ "KH": {
+ "name": "කà·à¶¸à·Šà¶¶à·à¶¢à¶º"
+ },
+ "CA": {
+ "name": "කà·à¶±à¶©à·à·€"
+ },
+ "IC": {
+ "name": "කà·à¶±à¶»à·’ සූපත්"
+ },
+ "CM": {
+ "name": "කà·à¶¸à¶»à·–න්"
+ },
+ "BQ": {
+ "name": "කà·à¶»à·’බියà·à¶±à·” නෙදර්ලන්තය"
+ },
+ "CU": {
+ "name": "කියුබà·à·€"
+ },
+ "KI": {
+ "name": "කිරිබති"
+ },
+ "KG": {
+ "name": "කිර්ගිස්තà·à¶±à¶º"
+ },
+ "CK": {
+ "name": "කුක් දූපත්"
+ },
+ "CW": {
+ "name": "කුරකà·à·€à·"
+ },
+ "KW": {
+ "name": "කුවේටය"
+ },
+ "KE": {
+ "name": "කෙන්යà·à·€"
+ },
+ "CV": {
+ "name": "කේප් වර්ඩ්"
+ },
+ "KY": {
+ "name": "කේමන් දූපත්"
+ },
+ "CD": {
+ "name": "කොංගො - කින්à·à·à·ƒà·"
+ },
+ "CG": {
+ "name": "කොංගො - බ්â€à¶»à·ƒà·à·€à·’ල්"
+ },
+ "CC": {
+ "name": "කොකà·à·ƒà·Š දූපත්"
+ },
+ "KM": {
+ "name": "කොමොරà·à·ƒà·Š"
+ },
+ "XK": {
+ "name": "කොසà·à·€à·"
+ },
+ "CR": {
+ "name": "කොස්ටරිකà·à·€"
+ },
+ "CO": {
+ "name": "කොළොම්බියà·à·€"
+ },
+ "CI": {
+ "name": "කà·à¶§à·Š දි අයිවරි"
+ },
+ "CX": {
+ "name": "ක්â€à¶»à·’ස්මස් දූපත"
+ },
+ "HR": {
+ "name": "ක්â€à¶»à·œà¶’ෂියà·à·€"
+ },
+ "GY": {
+ "name": "ගයනà·à·€"
+ },
+ "GG": {
+ "name": "ගර්න්සිය"
+ },
+ "GA": {
+ "name": "ගà·à¶¶à·œà¶±à·Š"
+ },
+ "GM": {
+ "name": "ගà·à¶¸à·Šà¶¶à·’යà·à·€"
+ },
+ "GN": {
+ "name": "ගිණියà·à·€"
+ },
+ "GW": {
+ "name": "ගිනි බිසව්"
+ },
+ "GU": {
+ "name": "ගුවà·à¶¸à·Š"
+ },
+ "GT": {
+ "name": "ගà·à¶­à¶¸à·à¶½à·à·€"
+ },
+ "GD": {
+ "name": "ග්â€à¶»à·à¶±à¶©à·à·€"
+ },
+ "GL": {
+ "name": "ග්â€à¶»à·“න්ලන්තය"
+ },
+ "GR": {
+ "name": "ග්â€à¶»à·“සිය"
+ },
+ "GP": {
+ "name": "ග්වà·à¶©à¶½à·à¶´à·Š"
+ },
+ "GH": {
+ "name": "à¶à·à¶±à·à·€"
+ },
+ "TD": {
+ "name": "චà·à¶ à·Š"
+ },
+ "CL": {
+ "name": "චිලී"
+ },
+ "CN": {
+ "name": "චීනය"
+ },
+ "CZ": {
+ "name": "චෙක් ජනරජය"
+ },
+ "JP": {
+ "name": "ජපà·à¶±à¶º"
+ },
+ "DE": {
+ "name": "ජර්මනිය"
+ },
+ "JE": {
+ "name": "ජර්සි"
+ },
+ "JM": {
+ "name": "ජà·à¶¸à·™à¶ºà·’කà·à·€"
+ },
+ "DJ": {
+ "name": "ජිබුටි"
+ },
+ "GI": {
+ "name": "ජිබ්â€à¶»à·à¶½à·Šà¶§à·à·€"
+ },
+ "GE": {
+ "name": "ජà·à¶»à·Šà¶¢à·’යà·à·€"
+ },
+ "JO": {
+ "name": "ජà·à¶»à·Šà¶¯à·à¶±à¶º"
+ },
+ "TJ": {
+ "name": "ටජිකිස්තà·à¶±à¶º"
+ },
+ "TM": {
+ "name": "ටර්ක්මෙනිස්ථà·à¶±à¶º"
+ },
+ "TC": {
+ "name": "ටර්ක්ස් සහ කයිකොස් දූපත්"
+ },
+ "TZ": {
+ "name": "ටà·à¶±à·Šà·ƒà·à¶±à·’යà·à·€"
+ },
+ "TL": {
+ "name": "ටිමà·à¶»à·Š - ලෙස්ත්"
+ },
+ "TN": {
+ "name": "ටියුනීසියà·à·€"
+ },
+ "TV": {
+ "name": "ටුවà·à¶½à·–"
+ },
+ "TO": {
+ "name": "ටොංගà·"
+ },
+ "TK": {
+ "name": "ටොකලà·à·€à·”"
+ },
+ "TG": {
+ "name": "ටොගà·"
+ },
+ "TT": {
+ "name": "ට්â€à¶»à·’නිඩෑඩ් සහ ටොබà·à¶œà·"
+ },
+ "TA": {
+ "name": "ට්â€à¶»à·’ස්ටන් ද කුන්හà·"
+ },
+ "DK": {
+ "name": "ඩෙන්මà·à¶»à·Šà¶šà¶º"
+ },
+ "DO": {
+ "name": "ඩොමිනික෠ජනරජය"
+ },
+ "DM": {
+ "name": "ඩොමිනිකà·à·€"
+ },
+ "TH": {
+ "name": "තà·à¶ºà·’ලන්තය"
+ },
+ "TW": {
+ "name": "තà·à¶ºà·’à·€à·à¶±à¶º"
+ },
+ "TR": {
+ "name": "තුර්කිය"
+ },
+ "ZA": {
+ "name": "දකුණු අප්â€à¶»à·’කà·à·€"
+ },
+ "KR": {
+ "name": "දකුණු කොරියà·à·€"
+ },
+ "GS": {
+ "name": "දකුණු ජà·à¶»à·Šà¶¢à·’යà·à·€ සහ දකුණු à·ƒà·à¶±à·Šà¶©à·Šà·€à·’ච් දූපත්"
+ },
+ "TF": {
+ "name": "දකුණු ප්â€à¶»à¶‚෠දූපත් සමූහය"
+ },
+ "SS": {
+ "name": "දකුණු සුඩà·à¶±à¶º"
+ },
+ "DG": {
+ "name": "දියà·à¶œà· ගà·à¶»à·Šà·ƒà·’යà·"
+ },
+ "NE": {
+ "name": "නයිජර්"
+ },
+ "NG": {
+ "name": "නයිජීරියà·à·€"
+ },
+ "NC": {
+ "name": "නව කà·à¶½à·’ඩà·à¶±à·’යà·à·€"
+ },
+ "NZ": {
+ "name": "නවසීලන්තය"
+ },
+ "NR": {
+ "name": "නà·à·€à·”රු"
+ },
+ "NA": {
+ "name": "නà·à¶¸à·“බියà·à·€"
+ },
+ "NI": {
+ "name": "නිකරගුවà·à·€"
+ },
+ "NU": {
+ "name": "නියූ"
+ },
+ "NL": {
+ "name": "නෙදර්ලන්තය"
+ },
+ "NP": {
+ "name": "නේපà·à¶½à¶º"
+ },
+ "NO": {
+ "name": "නà·à¶»à·Šà·€à·š"
+ },
+ "NF": {
+ "name": "නà·à·†à·à¶šà·Š දූපත"
+ },
+ "PS": {
+ "name": "පලස්තීන රà·à¶¢à·Šâ€à¶ºà¶º"
+ },
+ "PW": {
+ "name": "පලà·à·€à·”"
+ },
+ "PK": {
+ "name": "පà·à¶šà·’ස්තà·à¶±à¶º"
+ },
+ "PA": {
+ "name": "පà·à¶±à¶¸à·à·€"
+ },
+ "PG": {
+ "name": "පà·à¶´à·”ව෠නිව් ගිනියà·à·€"
+ },
+ "PY": {
+ "name": "පà·à¶»à¶œà·”වේ"
+ },
+ "PN": {
+ "name": "පිට්කෙය්න් දූපත්"
+ },
+ "PH": {
+ "name": "පිලිපීනය"
+ },
+ "PR": {
+ "name": "පුවර්ට෠රිකà·"
+ },
+ "PT": {
+ "name": "පෘතුගà·à¶½à¶º"
+ },
+ "PE": {
+ "name": "පේරු"
+ },
+ "PL": {
+ "name": "පà·à¶½à¶±à·Šà¶­à¶º"
+ },
+ "GF": {
+ "name": "ප්â€à¶»à¶‚෠ගයනà·à·€"
+ },
+ "PF": {
+ "name": "ප්â€à¶»à¶‚෠පොලිනීසියà·à·€"
+ },
+ "FR": {
+ "name": "ප්â€à¶»à¶‚à·à¶º"
+ },
+ "BD": {
+ "name": "බංග්ලà·à¶¯à·šà·à¶º"
+ },
+ "EH": {
+ "name": "බටහිර සහරà·à·€"
+ },
+ "BF": {
+ "name": "බර්කින෠ෆà·à·ƒà·"
+ },
+ "BM": {
+ "name": "බර්මියුඩà·"
+ },
+ "BG": {
+ "name": "බල්ගේරියà·à·€"
+ },
+ "BS": {
+ "name": "බහමà·à·ƒà·Š"
+ },
+ "BH": {
+ "name": "බහරේන්"
+ },
+ "BB": {
+ "name": "බà·à¶»à·Šà¶¶à¶©à·à·ƒà·Š"
+ },
+ "BI": {
+ "name": "බුරුන්දි"
+ },
+ "BN": {
+ "name": "බෲනà·à¶ºà·’"
+ },
+ "BJ": {
+ "name": "බෙනින්"
+ },
+ "BY": {
+ "name": "බෙලරුස්"
+ },
+ "BZ": {
+ "name": "බෙලීස්"
+ },
+ "BE": {
+ "name": "බෙල්ජියම"
+ },
+ "BW": {
+ "name": "බොට්ස්වà·à¶±à·"
+ },
+ "BO": {
+ "name": "බොලීවියà·à·€"
+ },
+ "BA": {
+ "name": "බොස්නියà·à·€ සහ හර්සගොවීනà·à·€"
+ },
+ "BR": {
+ "name": "බ්â€à¶»à·ƒà·“ලය"
+ },
+ "IO": {
+ "name": "බ්â€à¶»à·’තà·à¶±à·Šâ€à¶º ඉන්දීය à·ƒà·à¶œà¶» බල ප්â€à¶»à¶¯à·šà·à¶º"
+ },
+ "VG": {
+ "name": "බ්â€à¶»à·’තà·à¶±à·Šâ€à¶º වර්ජින් දූපත්"
+ },
+ "BT": {
+ "name": "භූතà·à¶±à¶º"
+ },
+ "MO": {
+ "name": "මකà·à·€à·” චීන විà·à·šà·‚ පරිපà·à¶½à¶± කලà·à¶´à¶º"
+ },
+ "CF": {
+ "name": "මධ්â€à¶ºà¶¸ අප්â€à¶»à·’කà·à¶±à·” ජනරජය"
+ },
+ "FM": {
+ "name": "මයික්â€à¶»à·œà¶±à·“සියà·à·€"
+ },
+ "YT": {
+ "name": "මයà·à¶§à·Š"
+ },
+ "MQ": {
+ "name": "මර්ටිනික්"
+ },
+ "MW": {
+ "name": "මලà·à·€à·’"
+ },
+ "MV": {
+ "name": "මà·à¶½ දිවයින"
+ },
+ "ML": {
+ "name": "මà·à¶½à·’"
+ },
+ "MH": {
+ "name": "මà·à·‚ල් දූපත්"
+ },
+ "MG": {
+ "name": "මà·à¶©à¶œà·ƒà·Šà¶šà¶»à¶º"
+ },
+ "MY": {
+ "name": "මà·à¶½à·šà·ƒà·’යà·à·€"
+ },
+ "MK": {
+ "name": "මà·à·ƒà·’ඩà·à¶±à·’යà·à·€"
+ },
+ "MM": {
+ "name": "මියන්මà·à¶»à¶º (බුරුමය)"
+ },
+ "MU": {
+ "name": "මුරුසිය"
+ },
+ "MX": {
+ "name": "මෙක්සිකà·à·€"
+ },
+ "MC": {
+ "name": "මොනà·à¶šà·à·€"
+ },
+ "MN": {
+ "name": "මොන්ගà·à¶½à·’යà·à·€"
+ },
+ "ME": {
+ "name": "මොන්ටෙනීග්â€à¶»à·"
+ },
+ "MS": {
+ "name": "මොන්සෙරà·à¶§à·Š"
+ },
+ "MR": {
+ "name": "මොරිටේනියà·à·€"
+ },
+ "MA": {
+ "name": "මොරොක්කà·à·€"
+ },
+ "MD": {
+ "name": "මොල්ඩà·à·€à·à·€"
+ },
+ "MZ": {
+ "name": "මොසà·à¶¸à·Šà¶¶à·’ක්"
+ },
+ "MT": {
+ "name": "මà·à¶½à·Šà¶§à·à·€"
+ },
+ "UA": {
+ "name": "යුක්රේනය"
+ },
+ "YE": {
+ "name": "යේමනය"
+ },
+ "RE": {
+ "name": "රීයුනියන්"
+ },
+ "RO": {
+ "name": "රුමේනියà·à·€"
+ },
+ "RW": {
+ "name": "රුවන්ඩà·à·€"
+ },
+ "RU": {
+ "name": "රුසියà·à·€"
+ },
+ "LU": {
+ "name": "ලක්à·à¶¸à·Šà¶¶à¶»à·Šà¶œà·Š"
+ },
+ "LR": {
+ "name": "ලයිබීරියà·à·€"
+ },
+ "LA": {
+ "name": "ලà·à¶•à·ƒà¶º"
+ },
+ "LV": {
+ "name": "ලà·à¶§à·Šà·€à·’යà·à·€"
+ },
+ "LI": {
+ "name": "ලික්ටන්ස්ටයින්"
+ },
+ "LT": {
+ "name": "ලිතුවේනියà·à·€"
+ },
+ "LY": {
+ "name": "ලිබියà·à·€"
+ },
+ "LB": {
+ "name": "ලෙබනනය"
+ },
+ "LS": {
+ "name": "ලෙසතà·"
+ },
+ "VA": {
+ "name": "වතිකà·à¶±à·” නගරය"
+ },
+ "VU": {
+ "name": "වනුවà·à¶§à·”"
+ },
+ "WF": {
+ "name": "à·€à·à¶½à·’ස් සහ ෆුටුනà·"
+ },
+ "VN": {
+ "name": "වියට්නà·à¶¸à¶º"
+ },
+ "VE": {
+ "name": "වෙනිසියුලà·à·€"
+ },
+ "KN": {
+ "name": "à·à·à¶±à·Šà¶­ කිට්ස් සහ නේවිස්"
+ },
+ "PM": {
+ "name": "à·à·à¶±à·Šà¶­ පියරේ සහ මà·à¶šà·à¶½à¶±à·Š"
+ },
+ "BL": {
+ "name": "à·à·à¶±à·Šà¶­ බර්තලෙමි"
+ },
+ "MF": {
+ "name": "à·à·à¶±à·Šà¶­ මà·à¶»à·Šà¶§à·’න්"
+ },
+ "SX": {
+ "name": "à·à·à¶±à·Šà¶­ මà·à¶»à·Šà¶§à·™à¶±à·Š"
+ },
+ "LC": {
+ "name": "à·à·à¶±à·Šà¶­ ලුසියà·"
+ },
+ "VC": {
+ "name": "à·à·à¶±à·Šà¶­ වින්සන්ට් සහ ග්â€à¶»à·™à¶±à¶©à·’න්ස්"
+ },
+ "SH": {
+ "name": "à·à·à¶±à·Šà¶­ හෙලේනà·"
+ },
+ "LK": {
+ "name": "à·à·Šâ€à¶»à·“ ලංකà·à·€"
+ },
+ "GQ": {
+ "name": "සමක ගිනියà·à·€"
+ },
+ "CY": {
+ "name": "සයිප්â€à¶»à·ƒà¶º"
+ },
+ "RS": {
+ "name": "සර්බියà·à·€"
+ },
+ "ST": {
+ "name": "à·ƒà·à¶• තà·à¶¸à·Š සහ ප්â€à¶»à·’න්සිප්"
+ },
+ "SM": {
+ "name": "à·ƒà·à¶±à·Š මà·à¶»à·’නà·"
+ },
+ "WS": {
+ "name": "à·ƒà·à¶¸à·à·€à·"
+ },
+ "ZM": {
+ "name": "à·ƒà·à¶¸à·Šà¶¶à·’යà·à·€"
+ },
+ "SG": {
+ "name": "සිංගප්පූරුව"
+ },
+ "ZW": {
+ "name": "සිම්බà·à¶¶à·Šà·€à·š"
+ },
+ "SL": {
+ "name": "සියරà·à¶½à·’යà·à¶±à·Š"
+ },
+ "SY": {
+ "name": "සිරියà·à·€"
+ },
+ "SC": {
+ "name": "සීà·à·™à¶½à·Šà·ƒà·Š"
+ },
+ "SR": {
+ "name": "සුරිනà·à¶¸à¶º"
+ },
+ "SD": {
+ "name": "සූඩà·à¶±à¶º"
+ },
+ "SN": {
+ "name": "සෙනගà·à¶½à¶º"
+ },
+ "EA": {
+ "name": "සෙයුට෠සහ මෙලිල්ලà·"
+ },
+ "SB": {
+ "name": "සොලමන් දූපත්"
+ },
+ "SO": {
+ "name": "à·ƒà·à¶¸à·à¶½à·’යà·à·€"
+ },
+ "SA": {
+ "name": "සෞදි අරà·à¶¶à·’ය"
+ },
+ "ES": {
+ "name": "ස්පà·à¶¤à·Šà¶¤à¶º"
+ },
+ "SK": {
+ "name": "ස්ලà·à·€à·à¶šà·’යà·à·€"
+ },
+ "SI": {
+ "name": "ස්ලà·à·€à·šà¶±à·’යà·à·€"
+ },
+ "SZ": {
+ "name": "ස්වà·à·ƒà·’ලන්තය"
+ },
+ "CH": {
+ "name": "ස්විස්ටර්ලන්තය"
+ },
+ "SE": {
+ "name": "ස්වීඩනය"
+ },
+ "SJ": {
+ "name": "ස්වෙල්බර්ඩ් සහ ජේන් මයේන්"
+ },
+ "HU": {
+ "name": "හන්ගේරියà·à·€"
+ },
+ "HT": {
+ "name": "හයිටි"
+ },
+ "HK": {
+ "name": "හොංකොං චීන විà·à·šà·‚ පරිපà·à¶½à¶± කලà·à¶´à¶º"
+ },
+ "HN": {
+ "name": "හොන්ඩුරà·à·ƒà·Š"
+ },
+ "FO": {
+ "name": "à·†à·à¶»à· දූපත්"
+ },
+ "FI": {
+ "name": "ෆින්ලන්තය"
+ },
+ "FJ": {
+ "name": "ෆීජී"
+ },
+ "FK": {
+ "name": "à·†à·à¶šà·Šà¶½à¶±à·Šà¶­ දූපත්"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/country/sk.json b/library/intl/resources/country/sk.json
new file mode 100644
index 000000000..39d670693
--- /dev/null
+++ b/library/intl/resources/country/sk.json
@@ -0,0 +1,761 @@
+{
+ "AF": {
+ "name": "Afganistan"
+ },
+ "AX": {
+ "name": "Ã…landy"
+ },
+ "AL": {
+ "name": "Albánsko"
+ },
+ "DZ": {
+ "name": "Alžírsko"
+ },
+ "AS": {
+ "name": "Americká Samoa"
+ },
+ "VI": {
+ "name": "Americké Panenské ostrovy"
+ },
+ "AD": {
+ "name": "Andorra"
+ },
+ "AO": {
+ "name": "Angola"
+ },
+ "AI": {
+ "name": "Anguilla"
+ },
+ "AQ": {
+ "name": "Antarktída"
+ },
+ "AG": {
+ "name": "Antigua a Barbuda"
+ },
+ "AR": {
+ "name": "Argentína"
+ },
+ "AM": {
+ "name": "Arménsko"
+ },
+ "AW": {
+ "name": "Aruba"
+ },
+ "AC": {
+ "name": "Ascensión"
+ },
+ "AU": {
+ "name": "Austrália"
+ },
+ "AZ": {
+ "name": "Azerbajdžan"
+ },
+ "BS": {
+ "name": "Bahamy"
+ },
+ "BH": {
+ "name": "Bahrajn"
+ },
+ "BD": {
+ "name": "Bangladéš"
+ },
+ "BB": {
+ "name": "Barbados"
+ },
+ "BE": {
+ "name": "Belgicko"
+ },
+ "BZ": {
+ "name": "Belize"
+ },
+ "BJ": {
+ "name": "Benin"
+ },
+ "BM": {
+ "name": "Bermudy"
+ },
+ "BT": {
+ "name": "Bhután"
+ },
+ "BY": {
+ "name": "Bielorusko"
+ },
+ "BO": {
+ "name": "Bolívia"
+ },
+ "BA": {
+ "name": "Bosna a Hercegovina"
+ },
+ "BW": {
+ "name": "Botswana"
+ },
+ "BR": {
+ "name": "Brazília"
+ },
+ "IO": {
+ "name": "Britské indickooceánske územie"
+ },
+ "VG": {
+ "name": "Britské Panenské ostrovy"
+ },
+ "BN": {
+ "name": "Brunej"
+ },
+ "BG": {
+ "name": "Bulharsko"
+ },
+ "BF": {
+ "name": "Burkina Faso"
+ },
+ "BI": {
+ "name": "Burundi"
+ },
+ "EA": {
+ "name": "Ceuta a Melilla"
+ },
+ "CK": {
+ "name": "Cookove ostrovy"
+ },
+ "CW": {
+ "name": "Curaçao"
+ },
+ "CY": {
+ "name": "Cyprus"
+ },
+ "TD": {
+ "name": "ÄŒad"
+ },
+ "CZ": {
+ "name": "Česká republika"
+ },
+ "ME": {
+ "name": "ÄŒierna Hora"
+ },
+ "CL": {
+ "name": "ÄŒile"
+ },
+ "CN": {
+ "name": "Čína"
+ },
+ "DK": {
+ "name": "Dánsko"
+ },
+ "DG": {
+ "name": "Diego García"
+ },
+ "DM": {
+ "name": "Dominika"
+ },
+ "DO": {
+ "name": "Dominikánska republika"
+ },
+ "DJ": {
+ "name": "Džibutsko"
+ },
+ "EG": {
+ "name": "Egypt"
+ },
+ "EC": {
+ "name": "Ekvádor"
+ },
+ "ER": {
+ "name": "Eritrea"
+ },
+ "EE": {
+ "name": "Estónsko"
+ },
+ "ET": {
+ "name": "Etiópia"
+ },
+ "FO": {
+ "name": "Faerské ostrovy"
+ },
+ "FK": {
+ "name": "Falklandy"
+ },
+ "FJ": {
+ "name": "Fidži"
+ },
+ "PH": {
+ "name": "Filipíny"
+ },
+ "FI": {
+ "name": "Fínsko"
+ },
+ "GF": {
+ "name": "Francúzska Guayana"
+ },
+ "PF": {
+ "name": "Francúzska Polynézia"
+ },
+ "TF": {
+ "name": "Francúzske južné a antarktické územia"
+ },
+ "FR": {
+ "name": "Francúzsko"
+ },
+ "GA": {
+ "name": "Gabon"
+ },
+ "GM": {
+ "name": "Gambia"
+ },
+ "GH": {
+ "name": "Ghana"
+ },
+ "GI": {
+ "name": "Gibraltár"
+ },
+ "GR": {
+ "name": "Grécko"
+ },
+ "GD": {
+ "name": "Grenada"
+ },
+ "GL": {
+ "name": "Grónsko"
+ },
+ "GE": {
+ "name": "Gruzínsko"
+ },
+ "GP": {
+ "name": "Guadeloupe"
+ },
+ "GU": {
+ "name": "Guam"
+ },
+ "GT": {
+ "name": "Guatemala"
+ },
+ "GY": {
+ "name": "Guayana"
+ },
+ "GG": {
+ "name": "Guernsey"
+ },
+ "GN": {
+ "name": "Guinea"
+ },
+ "GW": {
+ "name": "Guinea-Bissau"
+ },
+ "HT": {
+ "name": "Haiti"
+ },
+ "NL": {
+ "name": "Holandsko"
+ },
+ "HN": {
+ "name": "Honduras"
+ },
+ "HK": {
+ "name": "Hongkong – OAO Číny"
+ },
+ "HR": {
+ "name": "Chorvátsko"
+ },
+ "IN": {
+ "name": "India"
+ },
+ "ID": {
+ "name": "Indonézia"
+ },
+ "IQ": {
+ "name": "Irak"
+ },
+ "IR": {
+ "name": "Irán"
+ },
+ "IE": {
+ "name": "Ãrsko"
+ },
+ "IS": {
+ "name": "Island"
+ },
+ "IL": {
+ "name": "Izrael"
+ },
+ "JM": {
+ "name": "Jamajka"
+ },
+ "JP": {
+ "name": "Japonsko"
+ },
+ "YE": {
+ "name": "Jemen"
+ },
+ "JE": {
+ "name": "Jersey"
+ },
+ "JO": {
+ "name": "Jordánsko"
+ },
+ "ZA": {
+ "name": "Južná Afrika"
+ },
+ "GS": {
+ "name": "Južná Georgia a Južné Sandwichove ostrovy"
+ },
+ "KR": {
+ "name": "Južná Kórea"
+ },
+ "SS": {
+ "name": "Južný Sudán"
+ },
+ "KY": {
+ "name": "Kajmanie ostrovy"
+ },
+ "KH": {
+ "name": "Kambodža"
+ },
+ "CM": {
+ "name": "Kamerun"
+ },
+ "CA": {
+ "name": "Kanada"
+ },
+ "IC": {
+ "name": "Kanárske ostrovy"
+ },
+ "CV": {
+ "name": "Kapverdy"
+ },
+ "BQ": {
+ "name": "Karibské Holandsko"
+ },
+ "QA": {
+ "name": "Katar"
+ },
+ "KZ": {
+ "name": "Kazachstan"
+ },
+ "KE": {
+ "name": "Keňa"
+ },
+ "KG": {
+ "name": "Kirgizsko"
+ },
+ "KI": {
+ "name": "Kiribati"
+ },
+ "CC": {
+ "name": "Kokosové ostrovy"
+ },
+ "CO": {
+ "name": "Kolumbia"
+ },
+ "KM": {
+ "name": "Komory"
+ },
+ "CG": {
+ "name": "Kongo - Brazzaville"
+ },
+ "CD": {
+ "name": "Kongo - Kinshasa"
+ },
+ "XK": {
+ "name": "Kosovo"
+ },
+ "CR": {
+ "name": "Kostarika"
+ },
+ "CU": {
+ "name": "Kuba"
+ },
+ "KW": {
+ "name": "Kuvajt"
+ },
+ "LA": {
+ "name": "Laos"
+ },
+ "LS": {
+ "name": "Lesotho"
+ },
+ "LB": {
+ "name": "Libanon"
+ },
+ "LR": {
+ "name": "Libéria"
+ },
+ "LY": {
+ "name": "Líbya"
+ },
+ "LI": {
+ "name": "Lichtenštajnsko"
+ },
+ "LT": {
+ "name": "Litva"
+ },
+ "LV": {
+ "name": "Lotyšsko"
+ },
+ "LU": {
+ "name": "Luxembursko"
+ },
+ "MO": {
+ "name": "Macao – OAO Číny"
+ },
+ "MK": {
+ "name": "Macedónsko"
+ },
+ "MG": {
+ "name": "Madagaskar"
+ },
+ "HU": {
+ "name": "MaÄarsko"
+ },
+ "MY": {
+ "name": "Malajzia"
+ },
+ "MW": {
+ "name": "Malawi"
+ },
+ "MV": {
+ "name": "Maldivy"
+ },
+ "ML": {
+ "name": "Mali"
+ },
+ "MT": {
+ "name": "Malta"
+ },
+ "MA": {
+ "name": "Maroko"
+ },
+ "MH": {
+ "name": "Marshallove ostrovy"
+ },
+ "MQ": {
+ "name": "Martinik"
+ },
+ "MU": {
+ "name": "Maurícius"
+ },
+ "MR": {
+ "name": "Mauritánia"
+ },
+ "YT": {
+ "name": "Mayotte"
+ },
+ "UM": {
+ "name": "Menšie odľahlé ostrovy USA"
+ },
+ "MX": {
+ "name": "Mexiko"
+ },
+ "FM": {
+ "name": "Mikronézia"
+ },
+ "MM": {
+ "name": "Mjanmarsko"
+ },
+ "MD": {
+ "name": "Moldavsko"
+ },
+ "MC": {
+ "name": "Monako"
+ },
+ "MN": {
+ "name": "Mongolsko"
+ },
+ "MS": {
+ "name": "Montserrat"
+ },
+ "MZ": {
+ "name": "Mozambik"
+ },
+ "NA": {
+ "name": "Namíbia"
+ },
+ "NR": {
+ "name": "Nauru"
+ },
+ "DE": {
+ "name": "Nemecko"
+ },
+ "NP": {
+ "name": "Nepál"
+ },
+ "NE": {
+ "name": "Niger"
+ },
+ "NG": {
+ "name": "Nigéria"
+ },
+ "NI": {
+ "name": "Nikaragua"
+ },
+ "NU": {
+ "name": "Niue"
+ },
+ "NF": {
+ "name": "Norfolk"
+ },
+ "NO": {
+ "name": "Nórsko"
+ },
+ "NC": {
+ "name": "Nová Kaledónia"
+ },
+ "NZ": {
+ "name": "Nový Zéland"
+ },
+ "OM": {
+ "name": "Omán"
+ },
+ "IM": {
+ "name": "Ostrov Man"
+ },
+ "PK": {
+ "name": "Pakistan"
+ },
+ "PW": {
+ "name": "Palau"
+ },
+ "PS": {
+ "name": "Palestínske územia"
+ },
+ "PA": {
+ "name": "Panama"
+ },
+ "PG": {
+ "name": "Papua Nová Guinea"
+ },
+ "PY": {
+ "name": "Paraguaj"
+ },
+ "PE": {
+ "name": "Peru"
+ },
+ "PN": {
+ "name": "Pitcairnove ostrovy"
+ },
+ "CI": {
+ "name": "Pobrežie Slonoviny"
+ },
+ "PL": {
+ "name": "Poľsko"
+ },
+ "PR": {
+ "name": "Portoriko"
+ },
+ "PT": {
+ "name": "Portugalsko"
+ },
+ "AT": {
+ "name": "Rakúsko"
+ },
+ "RE": {
+ "name": "Réunion"
+ },
+ "GQ": {
+ "name": "Rovníková Guinea"
+ },
+ "RO": {
+ "name": "Rumunsko"
+ },
+ "RU": {
+ "name": "Rusko"
+ },
+ "RW": {
+ "name": "Rwanda"
+ },
+ "PM": {
+ "name": "Saint Pierre a Miquelon"
+ },
+ "SV": {
+ "name": "Salvádor"
+ },
+ "WS": {
+ "name": "Samoa"
+ },
+ "SM": {
+ "name": "San Maríno"
+ },
+ "SA": {
+ "name": "Saudská Arábia"
+ },
+ "SN": {
+ "name": "Senegal"
+ },
+ "KP": {
+ "name": "Severná Kórea"
+ },
+ "MP": {
+ "name": "Severné Mariány"
+ },
+ "SC": {
+ "name": "Seychely"
+ },
+ "SL": {
+ "name": "Sierra Leone"
+ },
+ "SG": {
+ "name": "Singapur"
+ },
+ "SX": {
+ "name": "Sint Maarten"
+ },
+ "SK": {
+ "name": "Slovensko"
+ },
+ "SI": {
+ "name": "Slovinsko"
+ },
+ "SO": {
+ "name": "Somálsko"
+ },
+ "AE": {
+ "name": "Spojené arabské emiráty"
+ },
+ "GB": {
+ "name": "Spojené kráľovstvo"
+ },
+ "US": {
+ "name": "Spojené štáty"
+ },
+ "RS": {
+ "name": "Srbsko"
+ },
+ "LK": {
+ "name": "Srí Lanka"
+ },
+ "CF": {
+ "name": "Stredoafrická republika"
+ },
+ "SD": {
+ "name": "Sudán"
+ },
+ "SR": {
+ "name": "Surinam"
+ },
+ "SJ": {
+ "name": "Svalbard a Jan Mayen"
+ },
+ "SZ": {
+ "name": "Svazijsko"
+ },
+ "SH": {
+ "name": "Svätá Helena"
+ },
+ "LC": {
+ "name": "Svätá Lucia"
+ },
+ "BL": {
+ "name": "Svätý Bartolomej"
+ },
+ "KN": {
+ "name": "Svätý Krištof a Nevis"
+ },
+ "MF": {
+ "name": "Svätý Martin"
+ },
+ "ST": {
+ "name": "Svätý Tomáš a Princov ostrov"
+ },
+ "VC": {
+ "name": "Svätý Vincent a Grenadíny"
+ },
+ "SY": {
+ "name": "Sýria"
+ },
+ "SB": {
+ "name": "Šalamúnove ostrovy"
+ },
+ "ES": {
+ "name": "Å panielsko"
+ },
+ "CH": {
+ "name": "Å vajÄiarsko"
+ },
+ "SE": {
+ "name": "Švédsko"
+ },
+ "TJ": {
+ "name": "Tadžikistan"
+ },
+ "TW": {
+ "name": "Taiwan"
+ },
+ "IT": {
+ "name": "Taliansko"
+ },
+ "TZ": {
+ "name": "Tanzánia"
+ },
+ "TH": {
+ "name": "Thajsko"
+ },
+ "TG": {
+ "name": "Togo"
+ },
+ "TK": {
+ "name": "Tokelau"
+ },
+ "TO": {
+ "name": "Tonga"
+ },
+ "TT": {
+ "name": "Trinidad a Tobago"
+ },
+ "TA": {
+ "name": "Tristan da Cunha"
+ },
+ "TN": {
+ "name": "Tunisko"
+ },
+ "TR": {
+ "name": "Turecko"
+ },
+ "TM": {
+ "name": "Turkménsko"
+ },
+ "TC": {
+ "name": "Turks a Caicos"
+ },
+ "TV": {
+ "name": "Tuvalu"
+ },
+ "UG": {
+ "name": "Uganda"
+ },
+ "UA": {
+ "name": "Ukrajina"
+ },
+ "UY": {
+ "name": "Uruguaj"
+ },
+ "UZ": {
+ "name": "Uzbekistan"
+ },
+ "VU": {
+ "name": "Vanuatu"
+ },
+ "VA": {
+ "name": "Vatikán"
+ },
+ "VE": {
+ "name": "Venezuela"
+ },
+ "CX": {
+ "name": "VianoÄný ostrov"
+ },
+ "VN": {
+ "name": "Vietnam"
+ },
+ "TL": {
+ "name": "Východný Timor"
+ },
+ "WF": {
+ "name": "Wallis a Futuna"
+ },
+ "ZM": {
+ "name": "Zambia"
+ },
+ "EH": {
+ "name": "Západná Sahara"
+ },
+ "ZW": {
+ "name": "Zimbabwe"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/country/sl.json b/library/intl/resources/country/sl.json
new file mode 100644
index 000000000..3033a159c
--- /dev/null
+++ b/library/intl/resources/country/sl.json
@@ -0,0 +1,761 @@
+{
+ "AF": {
+ "name": "Afganistan"
+ },
+ "AX": {
+ "name": "Ã…landski otoki"
+ },
+ "AL": {
+ "name": "Albanija"
+ },
+ "DZ": {
+ "name": "Alžirija"
+ },
+ "AS": {
+ "name": "Ameriška Samoa"
+ },
+ "VI": {
+ "name": "Ameriški Deviški otoki"
+ },
+ "AD": {
+ "name": "Andora"
+ },
+ "AO": {
+ "name": "Angola"
+ },
+ "AI": {
+ "name": "Angvila"
+ },
+ "AQ": {
+ "name": "Antarktika"
+ },
+ "AG": {
+ "name": "Antigva in Barbuda"
+ },
+ "AR": {
+ "name": "Argentina"
+ },
+ "AM": {
+ "name": "Armenija"
+ },
+ "AW": {
+ "name": "Aruba"
+ },
+ "AU": {
+ "name": "Avstralija"
+ },
+ "AT": {
+ "name": "Avstrija"
+ },
+ "AZ": {
+ "name": "Azerbajdžan"
+ },
+ "BS": {
+ "name": "Bahami"
+ },
+ "BH": {
+ "name": "Bahrajn"
+ },
+ "BD": {
+ "name": "Bangladeš"
+ },
+ "BB": {
+ "name": "Barbados"
+ },
+ "BE": {
+ "name": "Belgija"
+ },
+ "BZ": {
+ "name": "Belize"
+ },
+ "BY": {
+ "name": "Belorusija"
+ },
+ "BJ": {
+ "name": "Benin"
+ },
+ "BM": {
+ "name": "Bermudi"
+ },
+ "BW": {
+ "name": "Bocvana"
+ },
+ "BG": {
+ "name": "Bolgarija"
+ },
+ "BO": {
+ "name": "Bolivija"
+ },
+ "BA": {
+ "name": "Bosna in Hercegovina"
+ },
+ "CX": {
+ "name": "BožiÄni otok"
+ },
+ "BR": {
+ "name": "Brazilija"
+ },
+ "VG": {
+ "name": "Britanski Deviški otoki"
+ },
+ "IO": {
+ "name": "Britansko ozemlje v Indijskem oceanu"
+ },
+ "BN": {
+ "name": "Brunej"
+ },
+ "BF": {
+ "name": "Burkina Faso"
+ },
+ "BI": {
+ "name": "Burundi"
+ },
+ "BT": {
+ "name": "Butan"
+ },
+ "CF": {
+ "name": "Centralnoafriška republika"
+ },
+ "EA": {
+ "name": "Ceuta in Melilla"
+ },
+ "CY": {
+ "name": "Ciper"
+ },
+ "CK": {
+ "name": "Cookovi otoki"
+ },
+ "CW": {
+ "name": "Curaçao"
+ },
+ "TD": {
+ "name": "ÄŒad"
+ },
+ "CZ": {
+ "name": "Češka"
+ },
+ "CL": {
+ "name": "ÄŒile"
+ },
+ "ME": {
+ "name": "ÄŒrna gora"
+ },
+ "DK": {
+ "name": "Danska"
+ },
+ "CD": {
+ "name": "DemokratiÄna republika Kongo"
+ },
+ "DG": {
+ "name": "Diego Garcia"
+ },
+ "DM": {
+ "name": "Dominika"
+ },
+ "DO": {
+ "name": "Dominikanska republika"
+ },
+ "UM": {
+ "name": "Druga ameriška ozemlja v Tihem oceanu"
+ },
+ "DJ": {
+ "name": "Džibuti"
+ },
+ "EG": {
+ "name": "Egipt"
+ },
+ "EC": {
+ "name": "Ekvador"
+ },
+ "GQ": {
+ "name": "Ekvatorialna Gvineja"
+ },
+ "ER": {
+ "name": "Eritreja"
+ },
+ "EE": {
+ "name": "Estonija"
+ },
+ "ET": {
+ "name": "Etiopija"
+ },
+ "FK": {
+ "name": "Falklandski otoki"
+ },
+ "FO": {
+ "name": "Ferski otoki"
+ },
+ "FJ": {
+ "name": "Fidži"
+ },
+ "PH": {
+ "name": "Filipini"
+ },
+ "FI": {
+ "name": "Finska"
+ },
+ "FR": {
+ "name": "Francija"
+ },
+ "GF": {
+ "name": "Francoska Gvajana"
+ },
+ "PF": {
+ "name": "Francoska Polinezija"
+ },
+ "TF": {
+ "name": "Francosko južno ozemlje"
+ },
+ "GA": {
+ "name": "Gabon"
+ },
+ "GM": {
+ "name": "Gambija"
+ },
+ "GH": {
+ "name": "Gana"
+ },
+ "GI": {
+ "name": "Gibraltar"
+ },
+ "GR": {
+ "name": "GrÄija"
+ },
+ "GD": {
+ "name": "Grenada"
+ },
+ "GL": {
+ "name": "Grenlandija"
+ },
+ "GE": {
+ "name": "Gruzija"
+ },
+ "GU": {
+ "name": "Guam"
+ },
+ "GG": {
+ "name": "Guernsey"
+ },
+ "GP": {
+ "name": "Gvadalupe"
+ },
+ "GY": {
+ "name": "Gvajana"
+ },
+ "GT": {
+ "name": "Gvatemala"
+ },
+ "GN": {
+ "name": "Gvineja"
+ },
+ "GW": {
+ "name": "Gvineja Bissau"
+ },
+ "HT": {
+ "name": "Haiti"
+ },
+ "HN": {
+ "name": "Honduras"
+ },
+ "HR": {
+ "name": "Hrvaška"
+ },
+ "IN": {
+ "name": "Indija"
+ },
+ "ID": {
+ "name": "Indonezija"
+ },
+ "IQ": {
+ "name": "Irak"
+ },
+ "IR": {
+ "name": "Iran"
+ },
+ "IE": {
+ "name": "Irska"
+ },
+ "IS": {
+ "name": "Islandija"
+ },
+ "IT": {
+ "name": "Italija"
+ },
+ "IL": {
+ "name": "Izrael"
+ },
+ "JM": {
+ "name": "Jamajka"
+ },
+ "JP": {
+ "name": "Japonska"
+ },
+ "YE": {
+ "name": "Jemen"
+ },
+ "JE": {
+ "name": "Jersey"
+ },
+ "JO": {
+ "name": "Jordanija"
+ },
+ "GS": {
+ "name": "Južna Georgia in Južni Sandwichevi otoki"
+ },
+ "KR": {
+ "name": "Južna Koreja"
+ },
+ "SS": {
+ "name": "Južni Sudan"
+ },
+ "ZA": {
+ "name": "Južnoafriška republika"
+ },
+ "KY": {
+ "name": "Kajmanski otoki"
+ },
+ "KH": {
+ "name": "Kambodža"
+ },
+ "CM": {
+ "name": "Kamerun"
+ },
+ "CA": {
+ "name": "Kanada"
+ },
+ "IC": {
+ "name": "Kanarski otoki"
+ },
+ "QA": {
+ "name": "Katar"
+ },
+ "KZ": {
+ "name": "Kazahstan"
+ },
+ "KE": {
+ "name": "Kenija"
+ },
+ "KG": {
+ "name": "Kirgizistan"
+ },
+ "KI": {
+ "name": "Kiribati"
+ },
+ "CN": {
+ "name": "Kitajska"
+ },
+ "CC": {
+ "name": "Kokosovi otoki"
+ },
+ "CO": {
+ "name": "Kolumbija"
+ },
+ "KM": {
+ "name": "Komori"
+ },
+ "CG": {
+ "name": "Kongo - Brazzaville"
+ },
+ "XK": {
+ "name": "Kosovo"
+ },
+ "CR": {
+ "name": "Kostarika"
+ },
+ "CU": {
+ "name": "Kuba"
+ },
+ "KW": {
+ "name": "Kuvajt"
+ },
+ "LA": {
+ "name": "Laos"
+ },
+ "LV": {
+ "name": "Latvija"
+ },
+ "LS": {
+ "name": "Lesoto"
+ },
+ "LB": {
+ "name": "Libanon"
+ },
+ "LR": {
+ "name": "Liberija"
+ },
+ "LY": {
+ "name": "Libija"
+ },
+ "LI": {
+ "name": "Lihtenštajn"
+ },
+ "LT": {
+ "name": "Litva"
+ },
+ "LU": {
+ "name": "Luksemburg"
+ },
+ "MG": {
+ "name": "Madagaskar"
+ },
+ "HU": {
+ "name": "Madžarska"
+ },
+ "MK": {
+ "name": "Makedonija"
+ },
+ "MW": {
+ "name": "Malavi"
+ },
+ "MV": {
+ "name": "Maldivi"
+ },
+ "MY": {
+ "name": "Malezija"
+ },
+ "ML": {
+ "name": "Mali"
+ },
+ "MT": {
+ "name": "Malta"
+ },
+ "MA": {
+ "name": "Maroko"
+ },
+ "MH": {
+ "name": "Marshallovi otoki"
+ },
+ "MQ": {
+ "name": "Martinik"
+ },
+ "MU": {
+ "name": "Mauritius"
+ },
+ "MR": {
+ "name": "Mavretanija"
+ },
+ "YT": {
+ "name": "Mayotte"
+ },
+ "MX": {
+ "name": "Mehika"
+ },
+ "FM": {
+ "name": "Mikronezija"
+ },
+ "MM": {
+ "name": "Mjanmar (Burma)"
+ },
+ "MD": {
+ "name": "Moldavija"
+ },
+ "MC": {
+ "name": "Monako"
+ },
+ "MN": {
+ "name": "Mongolija"
+ },
+ "MS": {
+ "name": "Montserrat"
+ },
+ "MZ": {
+ "name": "Mozambik"
+ },
+ "NA": {
+ "name": "Namibija"
+ },
+ "NR": {
+ "name": "Nauru"
+ },
+ "DE": {
+ "name": "NemÄija"
+ },
+ "NP": {
+ "name": "Nepal"
+ },
+ "NE": {
+ "name": "Niger"
+ },
+ "NG": {
+ "name": "Nigerija"
+ },
+ "NI": {
+ "name": "Nikaragva"
+ },
+ "NU": {
+ "name": "Niue"
+ },
+ "NL": {
+ "name": "Nizozemska"
+ },
+ "BQ": {
+ "name": "Nizozemski Karibi"
+ },
+ "NF": {
+ "name": "Norfolški otok"
+ },
+ "NO": {
+ "name": "Norveška"
+ },
+ "NC": {
+ "name": "Nova Kaledonija"
+ },
+ "NZ": {
+ "name": "Nova Zelandija"
+ },
+ "OM": {
+ "name": "Oman"
+ },
+ "TC": {
+ "name": "OtoÄji Turks in Caicos"
+ },
+ "AC": {
+ "name": "Otok Ascension"
+ },
+ "IM": {
+ "name": "Otok Man"
+ },
+ "PK": {
+ "name": "Pakistan"
+ },
+ "PW": {
+ "name": "Palau"
+ },
+ "PS": {
+ "name": "Palestinsko ozemlje"
+ },
+ "PA": {
+ "name": "Panama"
+ },
+ "PG": {
+ "name": "Papua Nova Gvineja"
+ },
+ "PY": {
+ "name": "Paragvaj"
+ },
+ "PE": {
+ "name": "Peru"
+ },
+ "PN": {
+ "name": "Pitcairn"
+ },
+ "PL": {
+ "name": "Poljska"
+ },
+ "PR": {
+ "name": "Portoriko"
+ },
+ "PT": {
+ "name": "Portugalska"
+ },
+ "HK": {
+ "name": "Posebno administrativno obmoÄje LR Kitajske Hong Kong"
+ },
+ "MO": {
+ "name": "Posebno administrativno obmoÄje LR Kitajske Macao"
+ },
+ "RE": {
+ "name": "Reunion"
+ },
+ "RO": {
+ "name": "Romunija"
+ },
+ "RW": {
+ "name": "Ruanda"
+ },
+ "RU": {
+ "name": "Rusija"
+ },
+ "BL": {
+ "name": "Saint Barthélemy"
+ },
+ "KN": {
+ "name": "Saint Kitts in Nevis"
+ },
+ "LC": {
+ "name": "Saint Lucia"
+ },
+ "MF": {
+ "name": "Saint Martin"
+ },
+ "PM": {
+ "name": "Saint Pierre in Miquelon"
+ },
+ "VC": {
+ "name": "Saint Vincent in Grenadine"
+ },
+ "SB": {
+ "name": "Salomonovi otoki"
+ },
+ "SV": {
+ "name": "Salvador"
+ },
+ "WS": {
+ "name": "Samoa"
+ },
+ "SM": {
+ "name": "San Marino"
+ },
+ "ST": {
+ "name": "Sao Tome in Principe"
+ },
+ "SA": {
+ "name": "Saudova Arabija"
+ },
+ "SC": {
+ "name": "Sejšeli"
+ },
+ "SN": {
+ "name": "Senegal"
+ },
+ "KP": {
+ "name": "Severna Koreja"
+ },
+ "MP": {
+ "name": "Severni Marianski otoki"
+ },
+ "SL": {
+ "name": "Sierra Leone"
+ },
+ "SG": {
+ "name": "Singapur"
+ },
+ "SX": {
+ "name": "Sint Maarten"
+ },
+ "SY": {
+ "name": "Sirija"
+ },
+ "CI": {
+ "name": "SlonokoÅ¡Äena obala"
+ },
+ "SK": {
+ "name": "Slovaška"
+ },
+ "SI": {
+ "name": "Slovenija"
+ },
+ "SO": {
+ "name": "Somalija"
+ },
+ "RS": {
+ "name": "Srbija"
+ },
+ "SD": {
+ "name": "Sudan"
+ },
+ "SR": {
+ "name": "Surinam"
+ },
+ "SJ": {
+ "name": "Svalbard in Jan Mayen"
+ },
+ "SZ": {
+ "name": "Svazi"
+ },
+ "SH": {
+ "name": "Sveta Helena"
+ },
+ "ES": {
+ "name": "Å panija"
+ },
+ "LK": {
+ "name": "Å rilanka"
+ },
+ "SE": {
+ "name": "Å vedska"
+ },
+ "CH": {
+ "name": "Å vica"
+ },
+ "TJ": {
+ "name": "Tadžikistan"
+ },
+ "TH": {
+ "name": "Tajska"
+ },
+ "TW": {
+ "name": "Tajvan"
+ },
+ "TZ": {
+ "name": "Tanzanija"
+ },
+ "TG": {
+ "name": "Togo"
+ },
+ "TK": {
+ "name": "Tokelau"
+ },
+ "TO": {
+ "name": "Tonga"
+ },
+ "TT": {
+ "name": "Trinidad in Tobago"
+ },
+ "TA": {
+ "name": "Tristan da Cunha"
+ },
+ "TN": {
+ "name": "Tunizija"
+ },
+ "TR": {
+ "name": "TurÄija"
+ },
+ "TM": {
+ "name": "Turkmenistan"
+ },
+ "TV": {
+ "name": "Tuvalu"
+ },
+ "UG": {
+ "name": "Uganda"
+ },
+ "UA": {
+ "name": "Ukrajina"
+ },
+ "UY": {
+ "name": "Urugvaj"
+ },
+ "UZ": {
+ "name": "Uzbekistan"
+ },
+ "VU": {
+ "name": "Vanuatu"
+ },
+ "VA": {
+ "name": "Vatikan"
+ },
+ "GB": {
+ "name": "Velika Britanija"
+ },
+ "VE": {
+ "name": "Venezuela"
+ },
+ "VN": {
+ "name": "Vietnam"
+ },
+ "TL": {
+ "name": "Vzhodni Timor"
+ },
+ "WF": {
+ "name": "Wallis in Futuna"
+ },
+ "EH": {
+ "name": "Zahodna Sahara"
+ },
+ "ZM": {
+ "name": "Zambija"
+ },
+ "US": {
+ "name": "Združene države Amerike"
+ },
+ "AE": {
+ "name": "Združeni arabski emirati"
+ },
+ "CV": {
+ "name": "Zelenortski otoki"
+ },
+ "ZW": {
+ "name": "Zimbabve"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/country/sn.json b/library/intl/resources/country/sn.json
new file mode 100644
index 000000000..9d85c4fb4
--- /dev/null
+++ b/library/intl/resources/country/sn.json
@@ -0,0 +1,761 @@
+{
+ "AF": {
+ "name": "Afuganistani"
+ },
+ "AR": {
+ "name": "Ajentina"
+ },
+ "AX": {
+ "name": "Ã…land Islands"
+ },
+ "AL": {
+ "name": "Albania"
+ },
+ "DZ": {
+ "name": "Aljeria"
+ },
+ "US": {
+ "name": "Amerika"
+ },
+ "AD": {
+ "name": "Andora"
+ },
+ "AO": {
+ "name": "Angola"
+ },
+ "AI": {
+ "name": "Anguila"
+ },
+ "AQ": {
+ "name": "Antarctica"
+ },
+ "AG": {
+ "name": "Antigua ne Barbuda"
+ },
+ "AM": {
+ "name": "Armenia"
+ },
+ "AW": {
+ "name": "Arubha"
+ },
+ "AC": {
+ "name": "Ascension Island"
+ },
+ "AU": {
+ "name": "Australia"
+ },
+ "AT": {
+ "name": "Austria"
+ },
+ "AZ": {
+ "name": "Azabajani"
+ },
+ "BS": {
+ "name": "Bahama"
+ },
+ "BH": {
+ "name": "Bahareni"
+ },
+ "BD": {
+ "name": "Bangladeshi"
+ },
+ "BB": {
+ "name": "Barbados"
+ },
+ "BY": {
+ "name": "Belarusi"
+ },
+ "BZ": {
+ "name": "Belize"
+ },
+ "BE": {
+ "name": "Beljium"
+ },
+ "BJ": {
+ "name": "Benini"
+ },
+ "BM": {
+ "name": "Bermuda"
+ },
+ "BT": {
+ "name": "Bhutani"
+ },
+ "BO": {
+ "name": "Bolivia"
+ },
+ "BW": {
+ "name": "Botswana"
+ },
+ "BA": {
+ "name": "Boznia ne Herzegovina"
+ },
+ "BR": {
+ "name": "Brazil"
+ },
+ "IO": {
+ "name": "British Indian Ocean Territory"
+ },
+ "BF": {
+ "name": "Bukinafaso"
+ },
+ "BG": {
+ "name": "Bulgaria"
+ },
+ "BI": {
+ "name": "Burundi"
+ },
+ "BN": {
+ "name": "Burunei"
+ },
+ "IC": {
+ "name": "Canary Islands"
+ },
+ "BQ": {
+ "name": "Caribbean Netherlands"
+ },
+ "CF": {
+ "name": "Central African Republic"
+ },
+ "EA": {
+ "name": "Ceuta & Melilla"
+ },
+ "TD": {
+ "name": "Chadi"
+ },
+ "CL": {
+ "name": "Chile"
+ },
+ "CN": {
+ "name": "China"
+ },
+ "NF": {
+ "name": "Chitsuwa cheNorfolk"
+ },
+ "CX": {
+ "name": "Christmas Island"
+ },
+ "CC": {
+ "name": "Cocos (Keeling) Islands"
+ },
+ "CU": {
+ "name": "Cuba"
+ },
+ "CW": {
+ "name": "Curaçao"
+ },
+ "CY": {
+ "name": "Cyprus"
+ },
+ "CZ": {
+ "name": "Czech Republic"
+ },
+ "CD": {
+ "name": "Democratic Republic of the Congo"
+ },
+ "DK": {
+ "name": "Denmark"
+ },
+ "DG": {
+ "name": "Diego Garcia"
+ },
+ "DJ": {
+ "name": "Djibouti"
+ },
+ "DM": {
+ "name": "Dominica"
+ },
+ "DO": {
+ "name": "Dominican Republic"
+ },
+ "TL": {
+ "name": "East Timor"
+ },
+ "EC": {
+ "name": "Ecuador"
+ },
+ "EG": {
+ "name": "Egypt"
+ },
+ "SV": {
+ "name": "El Salvador"
+ },
+ "GQ": {
+ "name": "Equatorial Guinea"
+ },
+ "ER": {
+ "name": "Eritrea"
+ },
+ "EE": {
+ "name": "Estonia"
+ },
+ "ET": {
+ "name": "Etiopia"
+ },
+ "FO": {
+ "name": "Faroe Islands"
+ },
+ "FJ": {
+ "name": "Fiji"
+ },
+ "FI": {
+ "name": "Finland"
+ },
+ "FR": {
+ "name": "France"
+ },
+ "GF": {
+ "name": "French Guiana"
+ },
+ "PF": {
+ "name": "French Polynesia"
+ },
+ "TF": {
+ "name": "French Southern Territories"
+ },
+ "GA": {
+ "name": "Gabon"
+ },
+ "GM": {
+ "name": "Gambia"
+ },
+ "GE": {
+ "name": "Georgia"
+ },
+ "DE": {
+ "name": "Germany"
+ },
+ "GH": {
+ "name": "Ghana"
+ },
+ "GI": {
+ "name": "Gibraltar"
+ },
+ "GR": {
+ "name": "Greece"
+ },
+ "GL": {
+ "name": "Greenland"
+ },
+ "GD": {
+ "name": "Grenada"
+ },
+ "GP": {
+ "name": "Guadeloupe"
+ },
+ "GU": {
+ "name": "Guam"
+ },
+ "GT": {
+ "name": "Guatemala"
+ },
+ "GG": {
+ "name": "Guernsey"
+ },
+ "GN": {
+ "name": "Guinea"
+ },
+ "GW": {
+ "name": "Guinea-Bissau"
+ },
+ "GY": {
+ "name": "Guyana"
+ },
+ "HT": {
+ "name": "Haiti"
+ },
+ "HN": {
+ "name": "Honduras"
+ },
+ "HK": {
+ "name": "Hong Kong SAR China"
+ },
+ "HU": {
+ "name": "Hungary"
+ },
+ "IS": {
+ "name": "Iceland"
+ },
+ "IN": {
+ "name": "India"
+ },
+ "ID": {
+ "name": "Indonesia"
+ },
+ "IR": {
+ "name": "Iran"
+ },
+ "IQ": {
+ "name": "Iraq"
+ },
+ "IE": {
+ "name": "Ireland"
+ },
+ "IM": {
+ "name": "Isle of Man"
+ },
+ "IT": {
+ "name": "Italy"
+ },
+ "CI": {
+ "name": "Ivory Coast"
+ },
+ "IL": {
+ "name": "Izuraeri"
+ },
+ "JM": {
+ "name": "Jamaica"
+ },
+ "JP": {
+ "name": "Japan"
+ },
+ "JE": {
+ "name": "Jersey"
+ },
+ "JO": {
+ "name": "Jordan"
+ },
+ "KH": {
+ "name": "Kambodia"
+ },
+ "CM": {
+ "name": "Kameruni"
+ },
+ "CA": {
+ "name": "Kanada"
+ },
+ "KZ": {
+ "name": "Kazakhstan"
+ },
+ "KE": {
+ "name": "Kenya"
+ },
+ "KI": {
+ "name": "Kiribati"
+ },
+ "CO": {
+ "name": "Kolombia"
+ },
+ "KM": {
+ "name": "Komoro"
+ },
+ "CG": {
+ "name": "Kongo"
+ },
+ "HR": {
+ "name": "Korasia"
+ },
+ "KP": {
+ "name": "Korea, North"
+ },
+ "KR": {
+ "name": "Korea, South"
+ },
+ "XK": {
+ "name": "Kosovo"
+ },
+ "CR": {
+ "name": "Kostarika"
+ },
+ "KW": {
+ "name": "Kuwait"
+ },
+ "KG": {
+ "name": "Kyrgyzstan"
+ },
+ "LA": {
+ "name": "Laos"
+ },
+ "LV": {
+ "name": "Latvia"
+ },
+ "LB": {
+ "name": "Lebanon"
+ },
+ "LS": {
+ "name": "Lesotho"
+ },
+ "LR": {
+ "name": "Liberia"
+ },
+ "LY": {
+ "name": "Libya"
+ },
+ "LI": {
+ "name": "Liechtenstein"
+ },
+ "LT": {
+ "name": "Lithuania"
+ },
+ "LU": {
+ "name": "Luxembourg"
+ },
+ "MO": {
+ "name": "Macau SAR China"
+ },
+ "MK": {
+ "name": "Macedonia"
+ },
+ "MG": {
+ "name": "Madagascar"
+ },
+ "MW": {
+ "name": "Malawi"
+ },
+ "MY": {
+ "name": "Malaysia"
+ },
+ "MV": {
+ "name": "Maldives"
+ },
+ "ML": {
+ "name": "Mali"
+ },
+ "MT": {
+ "name": "Malta"
+ },
+ "MQ": {
+ "name": "Martinique"
+ },
+ "MR": {
+ "name": "Mauritania"
+ },
+ "MU": {
+ "name": "Mauritius"
+ },
+ "YT": {
+ "name": "Mayotte"
+ },
+ "MX": {
+ "name": "Mexico"
+ },
+ "FM": {
+ "name": "Micronesia"
+ },
+ "MD": {
+ "name": "Moldova"
+ },
+ "MC": {
+ "name": "Monaco"
+ },
+ "MN": {
+ "name": "Mongolia"
+ },
+ "ME": {
+ "name": "Montenegro"
+ },
+ "MS": {
+ "name": "Montserrat"
+ },
+ "MA": {
+ "name": "Morocco"
+ },
+ "MZ": {
+ "name": "Mozambique"
+ },
+ "MM": {
+ "name": "Myanmar"
+ },
+ "NA": {
+ "name": "Namibia"
+ },
+ "NR": {
+ "name": "Nauru"
+ },
+ "NP": {
+ "name": "Nepal"
+ },
+ "NL": {
+ "name": "Netherlands"
+ },
+ "NC": {
+ "name": "New Caledonia"
+ },
+ "NZ": {
+ "name": "New Zealand"
+ },
+ "NI": {
+ "name": "Nicaragua"
+ },
+ "NE": {
+ "name": "Niger"
+ },
+ "NG": {
+ "name": "Nigeria"
+ },
+ "NU": {
+ "name": "Niue"
+ },
+ "NO": {
+ "name": "Norway"
+ },
+ "OM": {
+ "name": "Oman"
+ },
+ "PK": {
+ "name": "Pakistan"
+ },
+ "PW": {
+ "name": "Palau"
+ },
+ "PS": {
+ "name": "Palestinian Territories"
+ },
+ "PA": {
+ "name": "Panama"
+ },
+ "PG": {
+ "name": "Papua New Guinea"
+ },
+ "PY": {
+ "name": "Paraguay"
+ },
+ "PE": {
+ "name": "Peru"
+ },
+ "PH": {
+ "name": "Philippines"
+ },
+ "PN": {
+ "name": "Pitcairn"
+ },
+ "PL": {
+ "name": "Poland"
+ },
+ "PT": {
+ "name": "Portugal"
+ },
+ "PR": {
+ "name": "Puerto Rico"
+ },
+ "QA": {
+ "name": "Qatar"
+ },
+ "RE": {
+ "name": "Réunion"
+ },
+ "RO": {
+ "name": "Romania"
+ },
+ "RU": {
+ "name": "Russia"
+ },
+ "RW": {
+ "name": "Rwanda"
+ },
+ "SH": {
+ "name": "Saint Helena"
+ },
+ "KN": {
+ "name": "Saint Kitts and Nevis"
+ },
+ "LC": {
+ "name": "Saint Lucia"
+ },
+ "PM": {
+ "name": "Saint Pierre and Miquelon"
+ },
+ "VC": {
+ "name": "Saint Vincent and the Grenadines"
+ },
+ "WS": {
+ "name": "Samoa"
+ },
+ "AS": {
+ "name": "Samoa ye Amerika"
+ },
+ "SM": {
+ "name": "San Marino"
+ },
+ "ST": {
+ "name": "São Tomé and Príncipe"
+ },
+ "SA": {
+ "name": "Saudi Arabia"
+ },
+ "SN": {
+ "name": "Senegal"
+ },
+ "RS": {
+ "name": "Serbia"
+ },
+ "SC": {
+ "name": "Seychelles"
+ },
+ "SL": {
+ "name": "Sierra Leone"
+ },
+ "SG": {
+ "name": "Singapore"
+ },
+ "SX": {
+ "name": "Sint Maarten"
+ },
+ "SK": {
+ "name": "Slovakia"
+ },
+ "SI": {
+ "name": "Slovenia"
+ },
+ "SO": {
+ "name": "Somalia"
+ },
+ "ZA": {
+ "name": "South Africa"
+ },
+ "GS": {
+ "name": "South Georgia & South Sandwich Islands"
+ },
+ "SS": {
+ "name": "South Sudan"
+ },
+ "ES": {
+ "name": "Spain"
+ },
+ "LK": {
+ "name": "Sri Lanka"
+ },
+ "BL": {
+ "name": "St. Barthélemy"
+ },
+ "MF": {
+ "name": "St. Martin"
+ },
+ "SD": {
+ "name": "Sudan"
+ },
+ "SR": {
+ "name": "Suriname"
+ },
+ "SJ": {
+ "name": "Svalbard & Jan Mayen"
+ },
+ "SZ": {
+ "name": "Swaziland"
+ },
+ "SE": {
+ "name": "Sweden"
+ },
+ "CH": {
+ "name": "Switzerland"
+ },
+ "SY": {
+ "name": "Syria"
+ },
+ "TW": {
+ "name": "Taiwan"
+ },
+ "TJ": {
+ "name": "Tajikistan"
+ },
+ "TZ": {
+ "name": "Tanzania"
+ },
+ "TH": {
+ "name": "Thailand"
+ },
+ "TG": {
+ "name": "Togo"
+ },
+ "TK": {
+ "name": "Tokelau"
+ },
+ "TO": {
+ "name": "Tonga"
+ },
+ "TT": {
+ "name": "Trinidad and Tobago"
+ },
+ "TA": {
+ "name": "Tristan da Cunha"
+ },
+ "TN": {
+ "name": "Tunisia"
+ },
+ "TR": {
+ "name": "Turkey"
+ },
+ "TM": {
+ "name": "Turkmenistan"
+ },
+ "TV": {
+ "name": "Tuvalu"
+ },
+ "UM": {
+ "name": "U.S. Outlying Islands"
+ },
+ "UG": {
+ "name": "Uganda"
+ },
+ "UA": {
+ "name": "Ukraine"
+ },
+ "AE": {
+ "name": "United Arab Emirates"
+ },
+ "GB": {
+ "name": "United Kingdom"
+ },
+ "UY": {
+ "name": "Uruguay"
+ },
+ "UZ": {
+ "name": "Uzbekistan"
+ },
+ "VU": {
+ "name": "Vanuatu"
+ },
+ "VA": {
+ "name": "Vatican State"
+ },
+ "VE": {
+ "name": "Venezuela"
+ },
+ "VN": {
+ "name": "Vietnam"
+ },
+ "WF": {
+ "name": "Wallis and Futuna"
+ },
+ "EH": {
+ "name": "Western Sahara"
+ },
+ "YE": {
+ "name": "Yemen"
+ },
+ "ZM": {
+ "name": "Zambia"
+ },
+ "ZW": {
+ "name": "Zimbabwe"
+ },
+ "SB": {
+ "name": "Zvitsuwa zvaSolomon"
+ },
+ "VI": {
+ "name": "Zvitsuwa zveAmerika"
+ },
+ "CV": {
+ "name": "Zvitsuwa zveCape Verde"
+ },
+ "KY": {
+ "name": "Zvitsuwa zveCayman"
+ },
+ "CK": {
+ "name": "Zvitsuwa zveCook"
+ },
+ "FK": {
+ "name": "Zvitsuwa zveFalklands"
+ },
+ "VG": {
+ "name": "Zvitsuwa zveHingirandi"
+ },
+ "MP": {
+ "name": "Zvitsuwa zvekumaodzanyemba eMariana"
+ },
+ "MH": {
+ "name": "Zvitsuwa zveMarshall"
+ },
+ "TC": {
+ "name": "Zvitsuwa zveTurk neCaico"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/country/so.json b/library/intl/resources/country/so.json
new file mode 100644
index 000000000..bfc1348d4
--- /dev/null
+++ b/library/intl/resources/country/so.json
@@ -0,0 +1,761 @@
+{
+ "AF": {
+ "name": "Afgaanistaan"
+ },
+ "AX": {
+ "name": "Ã…land Islands"
+ },
+ "AL": {
+ "name": "Albaaniya"
+ },
+ "DZ": {
+ "name": "Aljeeriya"
+ },
+ "AD": {
+ "name": "Andora"
+ },
+ "AO": {
+ "name": "Angoola"
+ },
+ "AI": {
+ "name": "Anguilla"
+ },
+ "AQ": {
+ "name": "Antarctica"
+ },
+ "AG": {
+ "name": "Antigua iyo Barbuda"
+ },
+ "AR": {
+ "name": "Arjantiin"
+ },
+ "AM": {
+ "name": "Armeeniya"
+ },
+ "AW": {
+ "name": "Aruba"
+ },
+ "AC": {
+ "name": "Ascension Island"
+ },
+ "AU": {
+ "name": "Awstaraaliya"
+ },
+ "AT": {
+ "name": "Awsteriya"
+ },
+ "IE": {
+ "name": "Ayrlaand"
+ },
+ "AZ": {
+ "name": "Azerbajaan"
+ },
+ "BB": {
+ "name": "Baarbadoos"
+ },
+ "BS": {
+ "name": "Bahaamas"
+ },
+ "PK": {
+ "name": "Bakistaan"
+ },
+ "BD": {
+ "name": "Bangaaladheesh"
+ },
+ "BH": {
+ "name": "Baxreyn"
+ },
+ "BY": {
+ "name": "Belarus"
+ },
+ "BZ": {
+ "name": "Belize"
+ },
+ "BM": {
+ "name": "Bermuuda"
+ },
+ "BT": {
+ "name": "Bhutan"
+ },
+ "BE": {
+ "name": "Biljam"
+ },
+ "BJ": {
+ "name": "Biniin"
+ },
+ "BO": {
+ "name": "Boliifiya"
+ },
+ "PL": {
+ "name": "Booland"
+ },
+ "PT": {
+ "name": "Bortuqaal"
+ },
+ "BA": {
+ "name": "Bosniya Hersigoviina"
+ },
+ "BW": {
+ "name": "Botuswaana"
+ },
+ "BR": {
+ "name": "Braasiil"
+ },
+ "IO": {
+ "name": "British Indian Ocean Territory"
+ },
+ "VG": {
+ "name": "British Virgin Islands"
+ },
+ "BG": {
+ "name": "Bulgaariya"
+ },
+ "BF": {
+ "name": "Burkiina Faaso"
+ },
+ "BI": {
+ "name": "Burundi"
+ },
+ "BN": {
+ "name": "Buruneeya"
+ },
+ "IC": {
+ "name": "Canary Islands"
+ },
+ "CV": {
+ "name": "Cape Verde Islands"
+ },
+ "BQ": {
+ "name": "Caribbean Netherlands"
+ },
+ "KY": {
+ "name": "Cayman Islands"
+ },
+ "EA": {
+ "name": "Ceuta & Melilla"
+ },
+ "CX": {
+ "name": "Christmas Island"
+ },
+ "IQ": {
+ "name": "Ciraaq"
+ },
+ "CC": {
+ "name": "Cocos (Keeling) Islands"
+ },
+ "OM": {
+ "name": "Cumaan"
+ },
+ "CW": {
+ "name": "Curaçao"
+ },
+ "DK": {
+ "name": "Denmark"
+ },
+ "DG": {
+ "name": "Diego Garcia"
+ },
+ "DM": {
+ "name": "Domeenika"
+ },
+ "SV": {
+ "name": "El Salvador"
+ },
+ "GQ": {
+ "name": "Equatorial Guinea"
+ },
+ "ER": {
+ "name": "Eretereeya"
+ },
+ "EE": {
+ "name": "Estooniya"
+ },
+ "VA": {
+ "name": "Faatikaan"
+ },
+ "PS": {
+ "name": "Falastiin Daanka galbeed iyo Qasa"
+ },
+ "FR": {
+ "name": "Faransiis"
+ },
+ "FO": {
+ "name": "Faroe Islands"
+ },
+ "VE": {
+ "name": "Fenisuweela"
+ },
+ "FJ": {
+ "name": "Fiji"
+ },
+ "PH": {
+ "name": "Filibiin"
+ },
+ "FI": {
+ "name": "Finland"
+ },
+ "VN": {
+ "name": "Fiyetnaam"
+ },
+ "GF": {
+ "name": "French Guiana"
+ },
+ "PF": {
+ "name": "French Polynesia"
+ },
+ "TF": {
+ "name": "French Southern Territories"
+ },
+ "GA": {
+ "name": "Gaaboon"
+ },
+ "GH": {
+ "name": "Gaana"
+ },
+ "GM": {
+ "name": "Gambiya"
+ },
+ "GI": {
+ "name": "Gibraltar"
+ },
+ "GN": {
+ "name": "Gini"
+ },
+ "GW": {
+ "name": "Gini-Bisaaw"
+ },
+ "GR": {
+ "name": "Giriig"
+ },
+ "GD": {
+ "name": "Giriinaada"
+ },
+ "GL": {
+ "name": "Greenland"
+ },
+ "GP": {
+ "name": "Guadeloupe"
+ },
+ "GU": {
+ "name": "Guam"
+ },
+ "GG": {
+ "name": "Guernsey"
+ },
+ "GT": {
+ "name": "Guwaatamaala"
+ },
+ "GY": {
+ "name": "Guyana"
+ },
+ "HU": {
+ "name": "Hangeri"
+ },
+ "HT": {
+ "name": "Hayti"
+ },
+ "IN": {
+ "name": "Hindiya"
+ },
+ "HN": {
+ "name": "Honduras"
+ },
+ "HK": {
+ "name": "Hong Kong SAR China"
+ },
+ "IR": {
+ "name": "Iiraan"
+ },
+ "IS": {
+ "name": "Iislaand"
+ },
+ "EC": {
+ "name": "Ikuwadoor"
+ },
+ "AE": {
+ "name": "Imaaraadka Carabta ee Midoobay"
+ },
+ "ID": {
+ "name": "Indoneesiya"
+ },
+ "ES": {
+ "name": "Isbeyn"
+ },
+ "IM": {
+ "name": "Isle of Man"
+ },
+ "IL": {
+ "name": "Israaʼiil"
+ },
+ "SZ": {
+ "name": "Iswaasilaand"
+ },
+ "SE": {
+ "name": "Iswidhan"
+ },
+ "ET": {
+ "name": "Itoobiya"
+ },
+ "CI": {
+ "name": "Ivory coast"
+ },
+ "TD": {
+ "name": "Jaad"
+ },
+ "JP": {
+ "name": "Jabaan"
+ },
+ "DJ": {
+ "name": "Jabuuti"
+ },
+ "JM": {
+ "name": "Jameyka"
+ },
+ "CF": {
+ "name": "Jamhuuriyadda Afrikada Dhexe"
+ },
+ "CD": {
+ "name": "Jamhuuriyadda Dimuquraadiga Kongo"
+ },
+ "DO": {
+ "name": "Jamhuuriyadda Domeenika"
+ },
+ "CZ": {
+ "name": "Jamhuuriyadda Jek"
+ },
+ "DE": {
+ "name": "Jarmal"
+ },
+ "FK": {
+ "name": "Jaziiradaha Fooklaan"
+ },
+ "CK": {
+ "name": "Jaziiradda Cook"
+ },
+ "JE": {
+ "name": "Jersey"
+ },
+ "CL": {
+ "name": "Jili"
+ },
+ "GE": {
+ "name": "Joorjiya"
+ },
+ "CM": {
+ "name": "Kaameruun"
+ },
+ "KH": {
+ "name": "Kamboodiya"
+ },
+ "CA": {
+ "name": "Kanada"
+ },
+ "KZ": {
+ "name": "Kasaakhistaan"
+ },
+ "KE": {
+ "name": "Kiiniya"
+ },
+ "KG": {
+ "name": "Kirgistaan"
+ },
+ "KI": {
+ "name": "Kiribati"
+ },
+ "CO": {
+ "name": "Kolombiya"
+ },
+ "KM": {
+ "name": "Komooros"
+ },
+ "CG": {
+ "name": "Kongo"
+ },
+ "ZA": {
+ "name": "Koonfur Afrika"
+ },
+ "SS": {
+ "name": "Koonfur Suudaan"
+ },
+ "HR": {
+ "name": "Korweeshiya"
+ },
+ "XK": {
+ "name": "Kosovo"
+ },
+ "CR": {
+ "name": "Kosta Riika"
+ },
+ "CU": {
+ "name": "Kuuba"
+ },
+ "KR": {
+ "name": "Kuuriyada Koonfureed"
+ },
+ "KP": {
+ "name": "Kuuriyada Waqooyi"
+ },
+ "KW": {
+ "name": "Kuwayt"
+ },
+ "LA": {
+ "name": "Laos"
+ },
+ "LV": {
+ "name": "Latfiya"
+ },
+ "LR": {
+ "name": "Laybeeriya"
+ },
+ "LI": {
+ "name": "Liechtenstein"
+ },
+ "LY": {
+ "name": "Liibiya"
+ },
+ "LT": {
+ "name": "Lituweeniya"
+ },
+ "LS": {
+ "name": "Losooto"
+ },
+ "LB": {
+ "name": "Lubnaan"
+ },
+ "LU": {
+ "name": "Luksemboorg"
+ },
+ "MT": {
+ "name": "Maalda"
+ },
+ "MV": {
+ "name": "Maaldiqeen"
+ },
+ "ML": {
+ "name": "Maali"
+ },
+ "MO": {
+ "name": "Macau SAR China"
+ },
+ "MG": {
+ "name": "Madagaskar"
+ },
+ "MK": {
+ "name": "Makadooniya"
+ },
+ "MW": {
+ "name": "Malaawi"
+ },
+ "MY": {
+ "name": "Malaysia"
+ },
+ "US": {
+ "name": "Maraykanka"
+ },
+ "MA": {
+ "name": "Marooko"
+ },
+ "MH": {
+ "name": "Marshall Islands"
+ },
+ "MQ": {
+ "name": "Martinique"
+ },
+ "EG": {
+ "name": "Masar"
+ },
+ "YT": {
+ "name": "Mayotte"
+ },
+ "MX": {
+ "name": "Meksiko"
+ },
+ "FM": {
+ "name": "Micronesia"
+ },
+ "MD": {
+ "name": "Moldofa"
+ },
+ "MN": {
+ "name": "Mongooliya"
+ },
+ "ME": {
+ "name": "Montenegro"
+ },
+ "MS": {
+ "name": "Montserrat"
+ },
+ "MC": {
+ "name": "Moonako"
+ },
+ "MU": {
+ "name": "Murishiyoos"
+ },
+ "MR": {
+ "name": "Muritaaniya"
+ },
+ "MZ": {
+ "name": "Musambiig"
+ },
+ "MM": {
+ "name": "Myanmar"
+ },
+ "NA": {
+ "name": "Namiibiya"
+ },
+ "NR": {
+ "name": "Nauru"
+ },
+ "NG": {
+ "name": "Nayjeeriya"
+ },
+ "NE": {
+ "name": "Nayjer"
+ },
+ "NP": {
+ "name": "Nebaal"
+ },
+ "NL": {
+ "name": "Netherlands"
+ },
+ "NC": {
+ "name": "New Caledonia"
+ },
+ "NZ": {
+ "name": "Neyuusilaand"
+ },
+ "NI": {
+ "name": "Nikaraaguwa"
+ },
+ "NU": {
+ "name": "Niue"
+ },
+ "NO": {
+ "name": "Noorweey"
+ },
+ "NF": {
+ "name": "Norfolk Island"
+ },
+ "MP": {
+ "name": "Northern Mariana Islands"
+ },
+ "PW": {
+ "name": "Palau"
+ },
+ "PA": {
+ "name": "Panama"
+ },
+ "PG": {
+ "name": "Papua New Guinea"
+ },
+ "PY": {
+ "name": "Paraguay"
+ },
+ "PE": {
+ "name": "Peru"
+ },
+ "PN": {
+ "name": "Pitcairn"
+ },
+ "PR": {
+ "name": "Puerto Rico"
+ },
+ "QA": {
+ "name": "Qadar"
+ },
+ "CY": {
+ "name": "Qubrus"
+ },
+ "RE": {
+ "name": "Réunion"
+ },
+ "RO": {
+ "name": "Rumaaniya"
+ },
+ "RU": {
+ "name": "Ruush"
+ },
+ "RW": {
+ "name": "Ruwanda"
+ },
+ "ZM": {
+ "name": "Saambiya"
+ },
+ "SA": {
+ "name": "Sacuudi Carabiya"
+ },
+ "SH": {
+ "name": "Saint Helena"
+ },
+ "KN": {
+ "name": "Saint Kitts and Nevis"
+ },
+ "LC": {
+ "name": "Saint Lucia"
+ },
+ "PM": {
+ "name": "Saint Pierre and Miquelon"
+ },
+ "VC": {
+ "name": "Saint Vincent and the Grenadines"
+ },
+ "WS": {
+ "name": "Samoa"
+ },
+ "AS": {
+ "name": "Samowa Ameerika"
+ },
+ "SM": {
+ "name": "San Marino"
+ },
+ "ST": {
+ "name": "São Tomé and Príncipe"
+ },
+ "RS": {
+ "name": "Serbia"
+ },
+ "CN": {
+ "name": "Shiinaha"
+ },
+ "ZW": {
+ "name": "Simbaabwe"
+ },
+ "SG": {
+ "name": "Singaboor"
+ },
+ "SN": {
+ "name": "Sinigaal"
+ },
+ "SX": {
+ "name": "Sint Maarten"
+ },
+ "SL": {
+ "name": "Siraaliyoon"
+ },
+ "LK": {
+ "name": "Sirilaanka"
+ },
+ "SC": {
+ "name": "Sishelis"
+ },
+ "SK": {
+ "name": "Slovakia"
+ },
+ "SI": {
+ "name": "Slovenia"
+ },
+ "SB": {
+ "name": "Solomon Islands"
+ },
+ "SO": {
+ "name": "Soomaaliya"
+ },
+ "GS": {
+ "name": "South Georgia & South Sandwich Islands"
+ },
+ "BL": {
+ "name": "St. Barthélemy"
+ },
+ "MF": {
+ "name": "St. Martin"
+ },
+ "SR": {
+ "name": "Suriname"
+ },
+ "SD": {
+ "name": "Suudaan"
+ },
+ "SY": {
+ "name": "Suuriya"
+ },
+ "SJ": {
+ "name": "Svalbard & Jan Mayen"
+ },
+ "CH": {
+ "name": "Swiiserlaand"
+ },
+ "TJ": {
+ "name": "Tajikistan"
+ },
+ "IT": {
+ "name": "Talyaani"
+ },
+ "TZ": {
+ "name": "Tansaaniya"
+ },
+ "TH": {
+ "name": "Taylaand"
+ },
+ "TW": {
+ "name": "Taywaan"
+ },
+ "TL": {
+ "name": "Timorka bari"
+ },
+ "TK": {
+ "name": "Tokelau"
+ },
+ "TO": {
+ "name": "Tonga"
+ },
+ "TG": {
+ "name": "Toogo"
+ },
+ "TT": {
+ "name": "Trinidad and Tobago"
+ },
+ "TA": {
+ "name": "Tristan da Cunha"
+ },
+ "TN": {
+ "name": "Tuniisiya"
+ },
+ "TR": {
+ "name": "Turki"
+ },
+ "TM": {
+ "name": "Turkmenistan"
+ },
+ "TC": {
+ "name": "Turks and Caicos Islands"
+ },
+ "TV": {
+ "name": "Tuvalu"
+ },
+ "UM": {
+ "name": "U.S. Outlying Islands"
+ },
+ "VI": {
+ "name": "U.S. Virgin Islands"
+ },
+ "UG": {
+ "name": "Ugaanda"
+ },
+ "UA": {
+ "name": "Ukrayn"
+ },
+ "GB": {
+ "name": "United Kingdom"
+ },
+ "JO": {
+ "name": "Urdun"
+ },
+ "UY": {
+ "name": "Uruguwaay"
+ },
+ "UZ": {
+ "name": "Uusbakistaan"
+ },
+ "VU": {
+ "name": "Vanuatu"
+ },
+ "WF": {
+ "name": "Wallis and Futuna"
+ },
+ "EH": {
+ "name": "Western Sahara"
+ },
+ "YE": {
+ "name": "Yaman"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/country/sq.json b/library/intl/resources/country/sq.json
new file mode 100644
index 000000000..fe5f3fe83
--- /dev/null
+++ b/library/intl/resources/country/sq.json
@@ -0,0 +1,761 @@
+{
+ "AF": {
+ "name": "Afganistan"
+ },
+ "ZA": {
+ "name": "Afrika e Jugut"
+ },
+ "DZ": {
+ "name": "Algjeri"
+ },
+ "AD": {
+ "name": "Andorrë"
+ },
+ "AO": {
+ "name": "Angolë"
+ },
+ "AI": {
+ "name": "Anguilë"
+ },
+ "AQ": {
+ "name": "Antarktikë"
+ },
+ "AG": {
+ "name": "Antigua e Barbuda"
+ },
+ "SA": {
+ "name": "Arabia Saudite"
+ },
+ "AR": {
+ "name": "Argjentinë"
+ },
+ "AM": {
+ "name": "Armeni"
+ },
+ "AW": {
+ "name": "Arubë"
+ },
+ "AU": {
+ "name": "Australi"
+ },
+ "AT": {
+ "name": "Austri"
+ },
+ "AZ": {
+ "name": "Azerbajxhan"
+ },
+ "BS": {
+ "name": "Bahamas"
+ },
+ "BH": {
+ "name": "Bahrein"
+ },
+ "BD": {
+ "name": "Bangladesh"
+ },
+ "BB": {
+ "name": "Barbados"
+ },
+ "BE": {
+ "name": "Belgjikë"
+ },
+ "BZ": {
+ "name": "Belizë"
+ },
+ "BJ": {
+ "name": "Benin"
+ },
+ "BM": {
+ "name": "Bermudë"
+ },
+ "BY": {
+ "name": "Bjellorusi"
+ },
+ "BO": {
+ "name": "Bolivi"
+ },
+ "BA": {
+ "name": "Bosnjë-Hercegovinë"
+ },
+ "BW": {
+ "name": "Botsvanë"
+ },
+ "BR": {
+ "name": "Brazil"
+ },
+ "CI": {
+ "name": "Bregu i Fildishtë"
+ },
+ "BN": {
+ "name": "Brunej"
+ },
+ "BG": {
+ "name": "Bullgari"
+ },
+ "BF": {
+ "name": "Burkina Faso"
+ },
+ "BI": {
+ "name": "Burund"
+ },
+ "BT": {
+ "name": "Butan"
+ },
+ "TD": {
+ "name": "Çad"
+ },
+ "DK": {
+ "name": "Danimarkë"
+ },
+ "DG": {
+ "name": "Diego Garsia"
+ },
+ "DM": {
+ "name": "Dominikë"
+ },
+ "EG": {
+ "name": "Egjipt"
+ },
+ "EC": {
+ "name": "Ekuador"
+ },
+ "SV": {
+ "name": "El Salvador"
+ },
+ "AE": {
+ "name": "Emiratet e Bashkuara Arabe"
+ },
+ "ER": {
+ "name": "Eritre"
+ },
+ "EE": {
+ "name": "Estoni"
+ },
+ "ET": {
+ "name": "Etiopi"
+ },
+ "PH": {
+ "name": "Filipine"
+ },
+ "FI": {
+ "name": "Finlandë"
+ },
+ "FJ": {
+ "name": "Fixhi"
+ },
+ "FR": {
+ "name": "Francë"
+ },
+ "GA": {
+ "name": "Gabon"
+ },
+ "GM": {
+ "name": "Gambi"
+ },
+ "GH": {
+ "name": "Ganë"
+ },
+ "GD": {
+ "name": "Grenadë"
+ },
+ "GL": {
+ "name": "Grenlandë"
+ },
+ "GR": {
+ "name": "Greqi"
+ },
+ "GP": {
+ "name": "Guadalupe"
+ },
+ "GF": {
+ "name": "Guajana Franceze"
+ },
+ "GY": {
+ "name": "Guajanë"
+ },
+ "GU": {
+ "name": "Guam"
+ },
+ "GT": {
+ "name": "Guatemalë"
+ },
+ "GG": {
+ "name": "Guernsej"
+ },
+ "GN": {
+ "name": "Guine"
+ },
+ "GW": {
+ "name": "Guine-Bisau"
+ },
+ "GQ": {
+ "name": "Guineja Ekuatoriale"
+ },
+ "GE": {
+ "name": "Gjeorgji"
+ },
+ "DE": {
+ "name": "Gjermani"
+ },
+ "GI": {
+ "name": "Gjibraltar"
+ },
+ "HT": {
+ "name": "Haiti"
+ },
+ "NL": {
+ "name": "Holandë"
+ },
+ "HN": {
+ "name": "Honduras"
+ },
+ "HU": {
+ "name": "Hungari"
+ },
+ "IN": {
+ "name": "Indi"
+ },
+ "ID": {
+ "name": "Indonezi"
+ },
+ "IQ": {
+ "name": "Irak"
+ },
+ "IR": {
+ "name": "Iran"
+ },
+ "IE": {
+ "name": "Irlandë"
+ },
+ "IS": {
+ "name": "Islandë"
+ },
+ "AX": {
+ "name": "Ishujt Alandë"
+ },
+ "MP": {
+ "name": "Ishujt e Marianës Veriore"
+ },
+ "VI": {
+ "name": "Ishujt e Virgjër Amerikanë"
+ },
+ "VG": {
+ "name": "Ishujt e Virgjër Britanikë"
+ },
+ "FO": {
+ "name": "Ishujt Faroe"
+ },
+ "FK": {
+ "name": "Ishujt Folklandë"
+ },
+ "KY": {
+ "name": "Ishujt Kajmanë"
+ },
+ "IC": {
+ "name": "Ishujt Kanarie"
+ },
+ "CC": {
+ "name": "Ishujt Kokos"
+ },
+ "CK": {
+ "name": "Ishujt Kukë"
+ },
+ "MH": {
+ "name": "Ishujt Marshallë"
+ },
+ "NF": {
+ "name": "Ishujt Norfolkë"
+ },
+ "UM": {
+ "name": "Ishujt periferikë të SHBA-së"
+ },
+ "PN": {
+ "name": "Ishujt Pitkernë"
+ },
+ "SB": {
+ "name": "Ishujt Solomonë"
+ },
+ "TC": {
+ "name": "Ishujt Turke dhe Kaike"
+ },
+ "AC": {
+ "name": "Ishulli Asenshion"
+ },
+ "CX": {
+ "name": "Ishulli i Krishtlindjes"
+ },
+ "IM": {
+ "name": "Ishulli i Manit"
+ },
+ "IT": {
+ "name": "Itali"
+ },
+ "IL": {
+ "name": "Izrael"
+ },
+ "JP": {
+ "name": "Japoni"
+ },
+ "YE": {
+ "name": "Jemen"
+ },
+ "JO": {
+ "name": "Jordani"
+ },
+ "NC": {
+ "name": "Kaledonia e Re"
+ },
+ "KH": {
+ "name": "Kamboxhia"
+ },
+ "CM": {
+ "name": "Kamerun"
+ },
+ "CA": {
+ "name": "Kanada"
+ },
+ "BQ": {
+ "name": "Karaibet holandeze"
+ },
+ "QA": {
+ "name": "Katar"
+ },
+ "KZ": {
+ "name": "Kazakistan"
+ },
+ "KE": {
+ "name": "Kenia"
+ },
+ "CV": {
+ "name": "Kepi i Gjelbër"
+ },
+ "CL": {
+ "name": "Kili"
+ },
+ "CN": {
+ "name": "Kinë"
+ },
+ "KG": {
+ "name": "Kirgistan"
+ },
+ "CO": {
+ "name": "Kolumbi"
+ },
+ "KM": {
+ "name": "Komore"
+ },
+ "CG": {
+ "name": "Kongo-Brazavilë"
+ },
+ "CD": {
+ "name": "Kongo-Kinshasa"
+ },
+ "KR": {
+ "name": "Koreja e Jugut"
+ },
+ "KP": {
+ "name": "Koreja e Veriut"
+ },
+ "XK": {
+ "name": "Kosovë"
+ },
+ "CR": {
+ "name": "Kosta Rikë"
+ },
+ "HR": {
+ "name": "Kroaci"
+ },
+ "CU": {
+ "name": "Kubë"
+ },
+ "CW": {
+ "name": "Kuraçao"
+ },
+ "KW": {
+ "name": "Kuvajt"
+ },
+ "LA": {
+ "name": "Laos"
+ },
+ "LS": {
+ "name": "Lesoto"
+ },
+ "LV": {
+ "name": "Letoni"
+ },
+ "LB": {
+ "name": "Liban"
+ },
+ "LR": {
+ "name": "Liberi"
+ },
+ "LY": {
+ "name": "Libi"
+ },
+ "LI": {
+ "name": "Lihtënshtajn"
+ },
+ "LT": {
+ "name": "Lituani"
+ },
+ "LU": {
+ "name": "Luksemburg"
+ },
+ "MG": {
+ "name": "Madagaskar"
+ },
+ "YT": {
+ "name": "Majotë"
+ },
+ "MY": {
+ "name": "Malajzi"
+ },
+ "MW": {
+ "name": "Malavi"
+ },
+ "MV": {
+ "name": "Maldive"
+ },
+ "ML": {
+ "name": "Mali"
+ },
+ "ME": {
+ "name": "Mali i Zi"
+ },
+ "MT": {
+ "name": "Maltë"
+ },
+ "MK": {
+ "name": "Maqedoni"
+ },
+ "MA": {
+ "name": "Marok"
+ },
+ "MQ": {
+ "name": "Martinik"
+ },
+ "MR": {
+ "name": "Mauritani"
+ },
+ "MU": {
+ "name": "Mauritius"
+ },
+ "GB": {
+ "name": "Mbretëria e Bashkuar"
+ },
+ "MX": {
+ "name": "Meksikë"
+ },
+ "MM": {
+ "name": "Mianmar (Burma)"
+ },
+ "FM": {
+ "name": "Mikronezi"
+ },
+ "MD": {
+ "name": "Moldavi"
+ },
+ "MC": {
+ "name": "Monako"
+ },
+ "MN": {
+ "name": "Mongoli"
+ },
+ "MS": {
+ "name": "Montserat"
+ },
+ "MZ": {
+ "name": "Mozambik"
+ },
+ "NA": {
+ "name": "Namibi"
+ },
+ "NR": {
+ "name": "Nauru"
+ },
+ "NP": {
+ "name": "Nepal"
+ },
+ "NE": {
+ "name": "Niger"
+ },
+ "NG": {
+ "name": "Nigeri"
+ },
+ "NI": {
+ "name": "Nikaragua"
+ },
+ "NU": {
+ "name": "Niue"
+ },
+ "NO": {
+ "name": "Norvegji"
+ },
+ "OM": {
+ "name": "Oman"
+ },
+ "PK": {
+ "name": "Pakistan"
+ },
+ "PW": {
+ "name": "Palau"
+ },
+ "PA": {
+ "name": "Panama"
+ },
+ "PG": {
+ "name": "Papua Guineja e Re"
+ },
+ "PY": {
+ "name": "Paraguai"
+ },
+ "PE": {
+ "name": "Peru"
+ },
+ "PF": {
+ "name": "Polinezia Franceze"
+ },
+ "PL": {
+ "name": "Poloni"
+ },
+ "PR": {
+ "name": "Porto Riko"
+ },
+ "PT": {
+ "name": "Portugali"
+ },
+ "CY": {
+ "name": "Qipro"
+ },
+ "KI": {
+ "name": "Qiribati"
+ },
+ "CF": {
+ "name": "Republika Afrikano-Qendrore"
+ },
+ "CZ": {
+ "name": "Republika Çeke"
+ },
+ "DO": {
+ "name": "Republika Dominikane"
+ },
+ "RE": {
+ "name": "Reunion"
+ },
+ "RW": {
+ "name": "Ruandë"
+ },
+ "RO": {
+ "name": "Rumani"
+ },
+ "RU": {
+ "name": "Rusi"
+ },
+ "HK": {
+ "name": "RVAK i Hong Kongut"
+ },
+ "MO": {
+ "name": "RVAK i Makaos"
+ },
+ "EH": {
+ "name": "Saharaja Perëndimore"
+ },
+ "WS": {
+ "name": "Samoa"
+ },
+ "AS": {
+ "name": "Samoa Amerikane"
+ },
+ "SM": {
+ "name": "San Marino"
+ },
+ "ST": {
+ "name": "Sao Tome e Prinsipe"
+ },
+ "SN": {
+ "name": "Senegali"
+ },
+ "RS": {
+ "name": "Serbi"
+ },
+ "SL": {
+ "name": "Siera Leone"
+ },
+ "SG": {
+ "name": "Singapor"
+ },
+ "SY": {
+ "name": "Siri"
+ },
+ "SC": {
+ "name": "Sishel"
+ },
+ "SK": {
+ "name": "Sllovaki"
+ },
+ "SI": {
+ "name": "Slloveni"
+ },
+ "SO": {
+ "name": "Somali"
+ },
+ "ES": {
+ "name": "Spanjë"
+ },
+ "LK": {
+ "name": "Sri Lankë"
+ },
+ "SD": {
+ "name": "Sudan"
+ },
+ "SS": {
+ "name": "Sudani i Jugut"
+ },
+ "SE": {
+ "name": "Suedi"
+ },
+ "SR": {
+ "name": "Surinami"
+ },
+ "SJ": {
+ "name": "Svalbard e Zhan Majen"
+ },
+ "SZ": {
+ "name": "Svazilandë"
+ },
+ "BL": {
+ "name": "Shën Bartolemeo"
+ },
+ "SH": {
+ "name": "Shën Helena"
+ },
+ "KN": {
+ "name": "Shën Kits e Nevis"
+ },
+ "LC": {
+ "name": "Shën Luçia"
+ },
+ "MF": {
+ "name": "Shën Martin"
+ },
+ "SX": {
+ "name": "Shën Martin (Sint Maarten-pjesa e Mbretërisë së Holandës)"
+ },
+ "PM": {
+ "name": "Shën Peir dhe Mikuelon"
+ },
+ "VC": {
+ "name": "Shën Vinsent dhe Grenadinet"
+ },
+ "AL": {
+ "name": "Shqipëri"
+ },
+ "US": {
+ "name": "Shtetet e Bashkuara të Amerikës"
+ },
+ "TH": {
+ "name": "Tajlandë"
+ },
+ "TW": {
+ "name": "Tajvan"
+ },
+ "TZ": {
+ "name": "Tanzani"
+ },
+ "TJ": {
+ "name": "Taxhikistan"
+ },
+ "TF": {
+ "name": "Territoret Australiane Franceze"
+ },
+ "PS": {
+ "name": "Territoret Palestineze"
+ },
+ "IO": {
+ "name": "Territori Britanik i Oqeanit Indian"
+ },
+ "TL": {
+ "name": "Timori Lindor"
+ },
+ "TG": {
+ "name": "Togo"
+ },
+ "TK": {
+ "name": "Tokelau"
+ },
+ "TO": {
+ "name": "Tonga"
+ },
+ "TT": {
+ "name": "Trinidad e Tobago"
+ },
+ "TA": {
+ "name": "Tristan da Kuna"
+ },
+ "TN": {
+ "name": "Tunizi"
+ },
+ "TM": {
+ "name": "Turkmenistan"
+ },
+ "TR": {
+ "name": "Turqi"
+ },
+ "TV": {
+ "name": "Tuvalu"
+ },
+ "EA": {
+ "name": "Theuta e Melila"
+ },
+ "UG": {
+ "name": "Ugandë"
+ },
+ "UA": {
+ "name": "Ukrainë"
+ },
+ "WF": {
+ "name": "Uollis e Futina"
+ },
+ "UY": {
+ "name": "Uruguai"
+ },
+ "UZ": {
+ "name": "Uzbekistan"
+ },
+ "VU": {
+ "name": "Vanuatu"
+ },
+ "VA": {
+ "name": "Vatikan"
+ },
+ "VE": {
+ "name": "Venezuelë"
+ },
+ "VN": {
+ "name": "Vietnam"
+ },
+ "JM": {
+ "name": "Xhamajkë"
+ },
+ "JE": {
+ "name": "Xhersej"
+ },
+ "DJ": {
+ "name": "Xhibut"
+ },
+ "GS": {
+ "name": "Xhorxha Jugore dhe Ishujt Senduiç të Jugut"
+ },
+ "ZM": {
+ "name": "Zambi"
+ },
+ "NZ": {
+ "name": "Zelanda e Re"
+ },
+ "ZW": {
+ "name": "Zimbabve"
+ },
+ "CH": {
+ "name": "Zvicër"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/country/sr-Latn.json b/library/intl/resources/country/sr-Latn.json
new file mode 100644
index 000000000..ce8338687
--- /dev/null
+++ b/library/intl/resources/country/sr-Latn.json
@@ -0,0 +1,761 @@
+{
+ "AL": {
+ "name": "Albanija"
+ },
+ "DZ": {
+ "name": "Alžir"
+ },
+ "VI": {
+ "name": "AmeriÄka DeviÄanska Ostrva"
+ },
+ "AS": {
+ "name": "AmeriÄka Samoa"
+ },
+ "AD": {
+ "name": "Andora"
+ },
+ "AO": {
+ "name": "Angola"
+ },
+ "AI": {
+ "name": "Angvila"
+ },
+ "AQ": {
+ "name": "Antarktik"
+ },
+ "AG": {
+ "name": "Antigva i Barbuda"
+ },
+ "AR": {
+ "name": "Argentina"
+ },
+ "AW": {
+ "name": "Aruba"
+ },
+ "AU": {
+ "name": "Australija"
+ },
+ "AT": {
+ "name": "Austrija"
+ },
+ "AF": {
+ "name": "Avganistan"
+ },
+ "AZ": {
+ "name": "Azerbejdžan"
+ },
+ "BS": {
+ "name": "Bahami"
+ },
+ "BH": {
+ "name": "Bahrein"
+ },
+ "BD": {
+ "name": "Bangladeš"
+ },
+ "BB": {
+ "name": "Barbados"
+ },
+ "BE": {
+ "name": "Belgija"
+ },
+ "BZ": {
+ "name": "Belize"
+ },
+ "BY": {
+ "name": "Belorusija"
+ },
+ "BJ": {
+ "name": "Benin"
+ },
+ "BM": {
+ "name": "Bermuda"
+ },
+ "BW": {
+ "name": "Bocvana"
+ },
+ "BO": {
+ "name": "Bolivija"
+ },
+ "BA": {
+ "name": "Bosna i Hercegovina"
+ },
+ "CX": {
+ "name": "Božićno ostrvo"
+ },
+ "BR": {
+ "name": "Brazil"
+ },
+ "VG": {
+ "name": "Britanska DeviÄanska Ostrva"
+ },
+ "IO": {
+ "name": "Britanska teritorija u Indijskom okeanu"
+ },
+ "BN": {
+ "name": "Brunej"
+ },
+ "BG": {
+ "name": "Bugarska"
+ },
+ "BF": {
+ "name": "Burkina Faso"
+ },
+ "BI": {
+ "name": "Burundi"
+ },
+ "BT": {
+ "name": "Butan"
+ },
+ "CF": {
+ "name": "CentralnoafriÄka Republika"
+ },
+ "ME": {
+ "name": "Crna Gora"
+ },
+ "TD": {
+ "name": "ÄŒad"
+ },
+ "CZ": {
+ "name": "Češka"
+ },
+ "CL": {
+ "name": "ÄŒile"
+ },
+ "DK": {
+ "name": "Danska"
+ },
+ "DG": {
+ "name": "Dijego Garsija"
+ },
+ "DM": {
+ "name": "Dominika"
+ },
+ "DO": {
+ "name": "Dominikanska Republika"
+ },
+ "JE": {
+ "name": "Džersi"
+ },
+ "DJ": {
+ "name": "Džibuti"
+ },
+ "EG": {
+ "name": "Egipat"
+ },
+ "EC": {
+ "name": "Ekvador"
+ },
+ "GQ": {
+ "name": "Ekvatorijalna Gvineja"
+ },
+ "ER": {
+ "name": "Eritreja"
+ },
+ "EE": {
+ "name": "Estonija"
+ },
+ "ET": {
+ "name": "Etiopija"
+ },
+ "FO": {
+ "name": "Farska Ostrva"
+ },
+ "FJ": {
+ "name": "Fidži"
+ },
+ "PH": {
+ "name": "Filipini"
+ },
+ "FI": {
+ "name": "Finska"
+ },
+ "FK": {
+ "name": "Foklandska ostrva"
+ },
+ "FR": {
+ "name": "Francuska"
+ },
+ "GF": {
+ "name": "Francuska Gvajana"
+ },
+ "PF": {
+ "name": "Francuska Polinezija"
+ },
+ "TF": {
+ "name": "Francuske Južne Teritorije"
+ },
+ "GA": {
+ "name": "Gabon"
+ },
+ "GM": {
+ "name": "Gambija"
+ },
+ "GH": {
+ "name": "Gana"
+ },
+ "GI": {
+ "name": "Gibraltar"
+ },
+ "GR": {
+ "name": "GrÄka"
+ },
+ "GD": {
+ "name": "Grenada"
+ },
+ "GL": {
+ "name": "Grenland"
+ },
+ "GE": {
+ "name": "Gruzija"
+ },
+ "GU": {
+ "name": "Guam"
+ },
+ "GG": {
+ "name": "Gurnsi"
+ },
+ "GP": {
+ "name": "Gvadelupe"
+ },
+ "GY": {
+ "name": "Gvajana"
+ },
+ "GT": {
+ "name": "Gvatemala"
+ },
+ "GN": {
+ "name": "Gvineja"
+ },
+ "GW": {
+ "name": "Gvineja-Bisao"
+ },
+ "HT": {
+ "name": "Haiti"
+ },
+ "NL": {
+ "name": "Holandija"
+ },
+ "HN": {
+ "name": "Honduras"
+ },
+ "HK": {
+ "name": "Hong Kong S. A. R. Kina"
+ },
+ "HR": {
+ "name": "Hrvatska"
+ },
+ "IN": {
+ "name": "Indija"
+ },
+ "ID": {
+ "name": "Indonezija"
+ },
+ "IQ": {
+ "name": "Irak"
+ },
+ "IR": {
+ "name": "Iran"
+ },
+ "IE": {
+ "name": "Irska"
+ },
+ "IS": {
+ "name": "Island"
+ },
+ "TL": {
+ "name": "IstoÄni Timor"
+ },
+ "IT": {
+ "name": "Italija"
+ },
+ "IL": {
+ "name": "Izrael"
+ },
+ "JM": {
+ "name": "Jamajka"
+ },
+ "JP": {
+ "name": "Japan"
+ },
+ "YE": {
+ "name": "Jemen"
+ },
+ "AM": {
+ "name": "Jermenija"
+ },
+ "JO": {
+ "name": "Jordan"
+ },
+ "GS": {
+ "name": "Južna Džordžija i Južna SendviÄ Ostrva"
+ },
+ "KR": {
+ "name": "Južna Koreja"
+ },
+ "SS": {
+ "name": "Južni Sudan"
+ },
+ "ZA": {
+ "name": "JužnoafriÄka Republika"
+ },
+ "KY": {
+ "name": "Kajmanska Ostrva"
+ },
+ "KH": {
+ "name": "Kambodža"
+ },
+ "CM": {
+ "name": "Kamerun"
+ },
+ "CA": {
+ "name": "Kanada"
+ },
+ "IC": {
+ "name": "Kanarska ostrva"
+ },
+ "BQ": {
+ "name": "Karipska Holandija"
+ },
+ "QA": {
+ "name": "Katar"
+ },
+ "KZ": {
+ "name": "Kazahstan"
+ },
+ "KE": {
+ "name": "Kenija"
+ },
+ "CN": {
+ "name": "Kina"
+ },
+ "CY": {
+ "name": "Kipar"
+ },
+ "KG": {
+ "name": "Kirgistan"
+ },
+ "KI": {
+ "name": "Kiribati"
+ },
+ "CC": {
+ "name": "Kokos (Keling) Ostrva"
+ },
+ "CO": {
+ "name": "Kolumbija"
+ },
+ "KM": {
+ "name": "Komorska Ostrva"
+ },
+ "CG": {
+ "name": "Kongo - Brazavil"
+ },
+ "CD": {
+ "name": "Kongo - Kinšasa"
+ },
+ "XK": {
+ "name": "Kosovo"
+ },
+ "CR": {
+ "name": "Kostarika"
+ },
+ "CU": {
+ "name": "Kuba"
+ },
+ "CK": {
+ "name": "Kukova Ostrva"
+ },
+ "CW": {
+ "name": "Kurasao"
+ },
+ "KW": {
+ "name": "Kuvajt"
+ },
+ "LA": {
+ "name": "Laos"
+ },
+ "LS": {
+ "name": "Lesoto"
+ },
+ "LV": {
+ "name": "Letonija"
+ },
+ "LB": {
+ "name": "Liban"
+ },
+ "LR": {
+ "name": "Liberija"
+ },
+ "LY": {
+ "name": "Libija"
+ },
+ "LI": {
+ "name": "Lihtenštajn"
+ },
+ "LT": {
+ "name": "Litvanija"
+ },
+ "LU": {
+ "name": "Luksemburg"
+ },
+ "MG": {
+ "name": "Madagaskar"
+ },
+ "HU": {
+ "name": "Mađarska"
+ },
+ "YT": {
+ "name": "Majot"
+ },
+ "MK": {
+ "name": "Makedonija"
+ },
+ "MW": {
+ "name": "Malavi"
+ },
+ "MV": {
+ "name": "Maldivi"
+ },
+ "MY": {
+ "name": "Malezija"
+ },
+ "ML": {
+ "name": "Mali"
+ },
+ "MT": {
+ "name": "Malta"
+ },
+ "MA": {
+ "name": "Maroko"
+ },
+ "MH": {
+ "name": "Maršalska Ostrva"
+ },
+ "MQ": {
+ "name": "Martinik"
+ },
+ "MU": {
+ "name": "Mauricijus"
+ },
+ "MR": {
+ "name": "Mauritanija"
+ },
+ "MX": {
+ "name": "Meksiko"
+ },
+ "MM": {
+ "name": "Mijanmar (Burma)"
+ },
+ "FM": {
+ "name": "Mikronezija"
+ },
+ "MD": {
+ "name": "Moldavija"
+ },
+ "MC": {
+ "name": "Monako"
+ },
+ "MN": {
+ "name": "Mongolija"
+ },
+ "MS": {
+ "name": "Monserat"
+ },
+ "MZ": {
+ "name": "Mozambik"
+ },
+ "NA": {
+ "name": "Namibija"
+ },
+ "NR": {
+ "name": "Nauru"
+ },
+ "DE": {
+ "name": "NemaÄka"
+ },
+ "NP": {
+ "name": "Nepal"
+ },
+ "NE": {
+ "name": "Niger"
+ },
+ "NG": {
+ "name": "Nigerija"
+ },
+ "NI": {
+ "name": "Nikaragva"
+ },
+ "NU": {
+ "name": "Niue"
+ },
+ "NF": {
+ "name": "Norfolk Ostrvo"
+ },
+ "NO": {
+ "name": "Norveška"
+ },
+ "NC": {
+ "name": "Nova Kaledonija"
+ },
+ "NZ": {
+ "name": "Novi Zeland"
+ },
+ "CI": {
+ "name": "Obala SlonovaÄe"
+ },
+ "AX": {
+ "name": "Olandska ostrva"
+ },
+ "OM": {
+ "name": "Oman"
+ },
+ "TC": {
+ "name": "Ostrva Turks i Kaikos"
+ },
+ "AC": {
+ "name": "Ostrvo Asension"
+ },
+ "IM": {
+ "name": "Ostrvo Man"
+ },
+ "PK": {
+ "name": "Pakistan"
+ },
+ "PW": {
+ "name": "Palau"
+ },
+ "PS": {
+ "name": "Palestinske teritorije"
+ },
+ "PA": {
+ "name": "Panama"
+ },
+ "PG": {
+ "name": "Papua Nova Gvineja"
+ },
+ "PY": {
+ "name": "Paragvaj"
+ },
+ "PE": {
+ "name": "Peru"
+ },
+ "PN": {
+ "name": "Pitkern"
+ },
+ "PL": {
+ "name": "Poljska"
+ },
+ "PR": {
+ "name": "Portoriko"
+ },
+ "PT": {
+ "name": "Portugal"
+ },
+ "RE": {
+ "name": "Reinion"
+ },
+ "RW": {
+ "name": "Ruanda"
+ },
+ "RO": {
+ "name": "Rumunija"
+ },
+ "RU": {
+ "name": "Rusija"
+ },
+ "SV": {
+ "name": "Salvador"
+ },
+ "WS": {
+ "name": "Samoa"
+ },
+ "SM": {
+ "name": "San Marino"
+ },
+ "ST": {
+ "name": "Sao Tome i Principe"
+ },
+ "MO": {
+ "name": "SAR Makao (Kina)"
+ },
+ "SA": {
+ "name": "Saudijska Arabija"
+ },
+ "SC": {
+ "name": "Sejšeli"
+ },
+ "PM": {
+ "name": "Sen Pjer i Mikelon"
+ },
+ "SN": {
+ "name": "Senegal"
+ },
+ "KN": {
+ "name": "Sent Kits i Nevis"
+ },
+ "MF": {
+ "name": "Sent Martin"
+ },
+ "VC": {
+ "name": "Sent Vinsent i Grenadini"
+ },
+ "EA": {
+ "name": "Seuta i Melilja"
+ },
+ "KP": {
+ "name": "Severna Koreja"
+ },
+ "MP": {
+ "name": "Severna Marijanska Ostrva"
+ },
+ "SL": {
+ "name": "Sijera Leone"
+ },
+ "SG": {
+ "name": "Singapur"
+ },
+ "SY": {
+ "name": "Sirija"
+ },
+ "US": {
+ "name": "Sjedinjene AmeriÄke Države"
+ },
+ "SK": {
+ "name": "SlovaÄka"
+ },
+ "SI": {
+ "name": "Slovenija"
+ },
+ "SB": {
+ "name": "Solomonska Ostrva"
+ },
+ "SO": {
+ "name": "Somalija"
+ },
+ "RS": {
+ "name": "Srbija"
+ },
+ "SD": {
+ "name": "Sudan"
+ },
+ "SR": {
+ "name": "Surinam"
+ },
+ "SJ": {
+ "name": "Svalbard i Jan Majen"
+ },
+ "SZ": {
+ "name": "Svazilend"
+ },
+ "SH": {
+ "name": "Sveta Jelena"
+ },
+ "LC": {
+ "name": "Sveta Lucija"
+ },
+ "BL": {
+ "name": "Sveti Bartolomej"
+ },
+ "SX": {
+ "name": "Sveti Martin"
+ },
+ "ES": {
+ "name": "Å panija"
+ },
+ "LK": {
+ "name": "Å ri Lanka"
+ },
+ "CH": {
+ "name": "Å vajcarska"
+ },
+ "SE": {
+ "name": "Å vedska"
+ },
+ "TJ": {
+ "name": "Tadžikistan"
+ },
+ "TH": {
+ "name": "Tajland"
+ },
+ "TW": {
+ "name": "Tajvan"
+ },
+ "TZ": {
+ "name": "Tanzanija"
+ },
+ "TG": {
+ "name": "Togo"
+ },
+ "TK": {
+ "name": "Tokelau"
+ },
+ "TO": {
+ "name": "Tonga"
+ },
+ "TT": {
+ "name": "Trinidad i Tobago"
+ },
+ "TA": {
+ "name": "Tristan da Kunja"
+ },
+ "TN": {
+ "name": "Tunis"
+ },
+ "TM": {
+ "name": "Turkmenistan"
+ },
+ "TR": {
+ "name": "Turska"
+ },
+ "TV": {
+ "name": "Tuvalu"
+ },
+ "UM": {
+ "name": "Udaljena ostrva SAD"
+ },
+ "UG": {
+ "name": "Uganda"
+ },
+ "AE": {
+ "name": "Ujedinjeni Arapski Emirati"
+ },
+ "UA": {
+ "name": "Ukrajina"
+ },
+ "UY": {
+ "name": "Urugvaj"
+ },
+ "UZ": {
+ "name": "Uzbekistan"
+ },
+ "WF": {
+ "name": "Valis i Futuna"
+ },
+ "VU": {
+ "name": "Vanuatu"
+ },
+ "VA": {
+ "name": "Vatikan"
+ },
+ "GB": {
+ "name": "Velika Britanija"
+ },
+ "VE": {
+ "name": "Venecuela"
+ },
+ "VN": {
+ "name": "Vijetnam"
+ },
+ "ZM": {
+ "name": "Zambija"
+ },
+ "EH": {
+ "name": "Zapadna Sahara"
+ },
+ "CV": {
+ "name": "Zelenortska Ostrva"
+ },
+ "ZW": {
+ "name": "Zimbabve"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/country/sr.json b/library/intl/resources/country/sr.json
new file mode 100644
index 000000000..caf012760
--- /dev/null
+++ b/library/intl/resources/country/sr.json
@@ -0,0 +1,761 @@
+{
+ "AF": {
+ "name": "ÐвганиÑтан"
+ },
+ "AZ": {
+ "name": "Ðзербејџан"
+ },
+ "AL": {
+ "name": "Ðлбанија"
+ },
+ "DZ": {
+ "name": "Ðлжир"
+ },
+ "VI": {
+ "name": "Ðмеричка ДевичанÑка ОÑтрва"
+ },
+ "AS": {
+ "name": "Ðмеричка Самоа"
+ },
+ "AI": {
+ "name": "Ðнгвила"
+ },
+ "AO": {
+ "name": "Ðнгола"
+ },
+ "AD": {
+ "name": "Ðндора"
+ },
+ "AQ": {
+ "name": "Ðнтарктик"
+ },
+ "AG": {
+ "name": "Ðнтигва и Барбуда"
+ },
+ "AR": {
+ "name": "Ðргентина"
+ },
+ "AW": {
+ "name": "Ðруба"
+ },
+ "AU": {
+ "name": "ÐуÑтралија"
+ },
+ "AT": {
+ "name": "ÐуÑтрија"
+ },
+ "BD": {
+ "name": "Бангладеш"
+ },
+ "BB": {
+ "name": "БарбадоÑ"
+ },
+ "BS": {
+ "name": "Бахами"
+ },
+ "BH": {
+ "name": "Бахреин"
+ },
+ "BE": {
+ "name": "Белгија"
+ },
+ "BZ": {
+ "name": "Белизе"
+ },
+ "BY": {
+ "name": "БелоруÑија"
+ },
+ "BJ": {
+ "name": "Бенин"
+ },
+ "BM": {
+ "name": "Бермуда"
+ },
+ "CX": {
+ "name": "Божићно оÑтрво"
+ },
+ "BO": {
+ "name": "Боливија"
+ },
+ "BA": {
+ "name": "БоÑна и Херцеговина"
+ },
+ "BW": {
+ "name": "Боцвана"
+ },
+ "BR": {
+ "name": "Бразил"
+ },
+ "VG": {
+ "name": "БританÑка ДевичанÑка ОÑтрва"
+ },
+ "IO": {
+ "name": "БританÑка територија у ИндијÑком океану"
+ },
+ "BN": {
+ "name": "Брунеј"
+ },
+ "BG": {
+ "name": "БугарÑка"
+ },
+ "BF": {
+ "name": "Буркина ФаÑо"
+ },
+ "BI": {
+ "name": "Бурунди"
+ },
+ "BT": {
+ "name": "Бутан"
+ },
+ "WF": {
+ "name": "Ð’Ð°Ð»Ð¸Ñ Ð¸ Футуна"
+ },
+ "VU": {
+ "name": "Вануату"
+ },
+ "VA": {
+ "name": "Ватикан"
+ },
+ "GB": {
+ "name": "Велика Британија"
+ },
+ "VE": {
+ "name": "Венецуела"
+ },
+ "VN": {
+ "name": "Вијетнам"
+ },
+ "GA": {
+ "name": "Габон"
+ },
+ "GM": {
+ "name": "Гамбија"
+ },
+ "GH": {
+ "name": "Гана"
+ },
+ "GP": {
+ "name": "Гваделупе"
+ },
+ "GY": {
+ "name": "Гвајана"
+ },
+ "GT": {
+ "name": "Гватемала"
+ },
+ "GN": {
+ "name": "Гвинеја"
+ },
+ "GW": {
+ "name": "Гвинеја-БиÑао"
+ },
+ "GI": {
+ "name": "Гибралтар"
+ },
+ "GD": {
+ "name": "Гренада"
+ },
+ "GL": {
+ "name": "Гренланд"
+ },
+ "GE": {
+ "name": "Грузија"
+ },
+ "GR": {
+ "name": "Грчка"
+ },
+ "GU": {
+ "name": "Гуам"
+ },
+ "GG": {
+ "name": "ГурнÑи"
+ },
+ "DK": {
+ "name": "ДанÑка"
+ },
+ "DG": {
+ "name": "Дијего ГарÑија"
+ },
+ "DM": {
+ "name": "Доминика"
+ },
+ "DO": {
+ "name": "ДоминиканÑка Република"
+ },
+ "EG": {
+ "name": "Египат"
+ },
+ "EC": {
+ "name": "Еквадор"
+ },
+ "GQ": {
+ "name": "Екваторијална Гвинеја"
+ },
+ "ER": {
+ "name": "Еритреја"
+ },
+ "EE": {
+ "name": "ЕÑтонија"
+ },
+ "ET": {
+ "name": "Етиопија"
+ },
+ "ZM": {
+ "name": "Замбија"
+ },
+ "EH": {
+ "name": "Западна Сахара"
+ },
+ "CV": {
+ "name": "ЗеленортÑка ОÑтрва"
+ },
+ "ZW": {
+ "name": "Зимбабве"
+ },
+ "IL": {
+ "name": "Израел"
+ },
+ "IN": {
+ "name": "Индија"
+ },
+ "ID": {
+ "name": "Индонезија"
+ },
+ "IQ": {
+ "name": "Ирак"
+ },
+ "IR": {
+ "name": "Иран"
+ },
+ "IE": {
+ "name": "ИрÑка"
+ },
+ "IS": {
+ "name": "ИÑланд"
+ },
+ "TL": {
+ "name": "ИÑточни Тимор"
+ },
+ "IT": {
+ "name": "Италија"
+ },
+ "JM": {
+ "name": "Јамајка"
+ },
+ "JP": {
+ "name": "Јапан"
+ },
+ "YE": {
+ "name": "Јемен"
+ },
+ "AM": {
+ "name": "Јерменија"
+ },
+ "JO": {
+ "name": "Јордан"
+ },
+ "KR": {
+ "name": "Јужна Кореја"
+ },
+ "GS": {
+ "name": "Јужна Ðорџија и Јужна Сендвич ОÑтрва"
+ },
+ "SS": {
+ "name": "Јужни Судан"
+ },
+ "ZA": {
+ "name": "Јужноафричка Република"
+ },
+ "KZ": {
+ "name": "КазахÑтан"
+ },
+ "KY": {
+ "name": "КајманÑка ОÑтрва"
+ },
+ "KH": {
+ "name": "Камбоџа"
+ },
+ "CM": {
+ "name": "Камерун"
+ },
+ "CA": {
+ "name": "Канада"
+ },
+ "IC": {
+ "name": "КанарÑка оÑтрва"
+ },
+ "BQ": {
+ "name": "КарипÑка Холандија"
+ },
+ "QA": {
+ "name": "Катар"
+ },
+ "KE": {
+ "name": "Кенија"
+ },
+ "CN": {
+ "name": "Кина"
+ },
+ "CY": {
+ "name": "Кипар"
+ },
+ "KG": {
+ "name": "КиргиÑтан"
+ },
+ "KI": {
+ "name": "Кирибати"
+ },
+ "CC": {
+ "name": "ÐšÐ¾ÐºÐ¾Ñ (Келинг) ОÑтрва"
+ },
+ "CO": {
+ "name": "Колумбија"
+ },
+ "KM": {
+ "name": "КоморÑка ОÑтрва"
+ },
+ "CG": {
+ "name": "Конго - Бразавил"
+ },
+ "CD": {
+ "name": "Конго - КиншаÑа"
+ },
+ "XK": {
+ "name": "КоÑово"
+ },
+ "CR": {
+ "name": "КоÑтарика"
+ },
+ "CU": {
+ "name": "Куба"
+ },
+ "KW": {
+ "name": "Кувајт"
+ },
+ "CK": {
+ "name": "Кукова ОÑтрва"
+ },
+ "CW": {
+ "name": "КураÑао"
+ },
+ "LA": {
+ "name": "ЛаоÑ"
+ },
+ "LS": {
+ "name": "ЛеÑото"
+ },
+ "LV": {
+ "name": "Летонија"
+ },
+ "LB": {
+ "name": "Либан"
+ },
+ "LR": {
+ "name": "Либерија"
+ },
+ "LY": {
+ "name": "Либија"
+ },
+ "LT": {
+ "name": "Литванија"
+ },
+ "LI": {
+ "name": "Лихтенштајн"
+ },
+ "LU": {
+ "name": "ЛукÑембург"
+ },
+ "MG": {
+ "name": "МадагаÑкар"
+ },
+ "HU": {
+ "name": "МађарÑка"
+ },
+ "YT": {
+ "name": "Мајот"
+ },
+ "MK": {
+ "name": "Македонија"
+ },
+ "MW": {
+ "name": "Малави"
+ },
+ "MV": {
+ "name": "Малдиви"
+ },
+ "MY": {
+ "name": "Малезија"
+ },
+ "ML": {
+ "name": "Мали"
+ },
+ "MT": {
+ "name": "Малта"
+ },
+ "MA": {
+ "name": "Мароко"
+ },
+ "MQ": {
+ "name": "Мартиник"
+ },
+ "MH": {
+ "name": "МаршалÑка ОÑтрва"
+ },
+ "MR": {
+ "name": "Мауританија"
+ },
+ "MU": {
+ "name": "МаурицијуÑ"
+ },
+ "MX": {
+ "name": "МекÑико"
+ },
+ "MM": {
+ "name": "Мијанмар (Бурма)"
+ },
+ "FM": {
+ "name": "Микронезија"
+ },
+ "MZ": {
+ "name": "Мозамбик"
+ },
+ "MD": {
+ "name": "Молдавија"
+ },
+ "MC": {
+ "name": "Монако"
+ },
+ "MN": {
+ "name": "Монголија"
+ },
+ "MS": {
+ "name": "МонÑерат"
+ },
+ "NA": {
+ "name": "Ðамибија"
+ },
+ "NR": {
+ "name": "Ðауру"
+ },
+ "DE": {
+ "name": "Ðемачка"
+ },
+ "NP": {
+ "name": "Ðепал"
+ },
+ "NE": {
+ "name": "Ðигер"
+ },
+ "NG": {
+ "name": "Ðигерија"
+ },
+ "NI": {
+ "name": "Ðикарагва"
+ },
+ "NU": {
+ "name": "Ðиуе"
+ },
+ "NC": {
+ "name": "Ðова Каледонија"
+ },
+ "NZ": {
+ "name": "Ðови Зеланд"
+ },
+ "NO": {
+ "name": "Ðорвешка"
+ },
+ "NF": {
+ "name": "Ðорфолк ОÑтрво"
+ },
+ "CI": {
+ "name": "Обала Слоноваче"
+ },
+ "AX": {
+ "name": "ОландÑка оÑтрва"
+ },
+ "OM": {
+ "name": "Оман"
+ },
+ "TC": {
+ "name": "ОÑтрва Ð¢ÑƒÑ€ÐºÑ Ð¸ КаикоÑ"
+ },
+ "AC": {
+ "name": "ОÑтрво ÐÑенÑион"
+ },
+ "IM": {
+ "name": "ОÑтрво Ман"
+ },
+ "PK": {
+ "name": "ПакиÑтан"
+ },
+ "PW": {
+ "name": "Палау"
+ },
+ "PS": {
+ "name": "ПалеÑтинÑке територије"
+ },
+ "PA": {
+ "name": "Панама"
+ },
+ "PG": {
+ "name": "Папуа Ðова Гвинеја"
+ },
+ "PY": {
+ "name": "Парагвај"
+ },
+ "PE": {
+ "name": "Перу"
+ },
+ "PN": {
+ "name": "Питкерн"
+ },
+ "PL": {
+ "name": "ПољÑка"
+ },
+ "PR": {
+ "name": "Порторико"
+ },
+ "PT": {
+ "name": "Португал"
+ },
+ "RE": {
+ "name": "Реинион"
+ },
+ "RW": {
+ "name": "Руанда"
+ },
+ "RO": {
+ "name": "Румунија"
+ },
+ "RU": {
+ "name": "РуÑија"
+ },
+ "SV": {
+ "name": "Салвадор"
+ },
+ "WS": {
+ "name": "Самоа"
+ },
+ "SM": {
+ "name": "Сан Марино"
+ },
+ "ST": {
+ "name": "Сао Томе и Принципе"
+ },
+ "MO": {
+ "name": "СÐР Макао (Кина)"
+ },
+ "SA": {
+ "name": "СаудијÑка Ðрабија"
+ },
+ "SZ": {
+ "name": "Свазиленд"
+ },
+ "SJ": {
+ "name": "Свалбард и Јан Мајен"
+ },
+ "SH": {
+ "name": "Света Јелена"
+ },
+ "LC": {
+ "name": "Света Луција"
+ },
+ "BL": {
+ "name": "Свети Бартоломеј"
+ },
+ "SX": {
+ "name": "Свети Мартин"
+ },
+ "KP": {
+ "name": "Северна Кореја"
+ },
+ "MP": {
+ "name": "Северна МаријанÑка ОÑтрва"
+ },
+ "SC": {
+ "name": "Сејшели"
+ },
+ "PM": {
+ "name": "Сен Пјер и Микелон"
+ },
+ "SN": {
+ "name": "Сенегал"
+ },
+ "VC": {
+ "name": "Сент ВинÑент и Гренадини"
+ },
+ "KN": {
+ "name": "Сент ÐšÐ¸Ñ‚Ñ Ð¸ ÐевиÑ"
+ },
+ "MF": {
+ "name": "Сент Мартин"
+ },
+ "EA": {
+ "name": "Сеута и Мелиља"
+ },
+ "SL": {
+ "name": "Сијера Леоне"
+ },
+ "SG": {
+ "name": "Сингапур"
+ },
+ "SY": {
+ "name": "Сирија"
+ },
+ "US": {
+ "name": "Сједињене Ðмеричке Државе"
+ },
+ "SK": {
+ "name": "Словачка"
+ },
+ "SI": {
+ "name": "Словенија"
+ },
+ "SB": {
+ "name": "СоломонÑка ОÑтрва"
+ },
+ "SO": {
+ "name": "Сомалија"
+ },
+ "RS": {
+ "name": "Србија"
+ },
+ "SD": {
+ "name": "Судан"
+ },
+ "SR": {
+ "name": "Суринам"
+ },
+ "TW": {
+ "name": "Тајван"
+ },
+ "TH": {
+ "name": "Тајланд"
+ },
+ "TZ": {
+ "name": "Танзанија"
+ },
+ "TJ": {
+ "name": "ТаџикиÑтан"
+ },
+ "TG": {
+ "name": "Того"
+ },
+ "TK": {
+ "name": "Токелау"
+ },
+ "TO": {
+ "name": "Тонга"
+ },
+ "TT": {
+ "name": "Тринидад и Тобаго"
+ },
+ "TA": {
+ "name": "ТриÑтан да Куња"
+ },
+ "TV": {
+ "name": "Тувалу"
+ },
+ "TN": {
+ "name": "ТуниÑ"
+ },
+ "TM": {
+ "name": "ТуркмениÑтан"
+ },
+ "TR": {
+ "name": "ТурÑка"
+ },
+ "UG": {
+ "name": "Уганда"
+ },
+ "UM": {
+ "name": "Удаљена оÑтрва СÐД"
+ },
+ "UZ": {
+ "name": "УзбекиÑтан"
+ },
+ "AE": {
+ "name": "Уједињени ÐрапÑки Емирати"
+ },
+ "UA": {
+ "name": "Украјина"
+ },
+ "UY": {
+ "name": "Уругвај"
+ },
+ "FO": {
+ "name": "ФарÑка ОÑтрва"
+ },
+ "PH": {
+ "name": "Филипини"
+ },
+ "FI": {
+ "name": "ФинÑка"
+ },
+ "FJ": {
+ "name": "Фиџи"
+ },
+ "FK": {
+ "name": "ФокландÑка оÑтрва"
+ },
+ "FR": {
+ "name": "ФранцуÑка"
+ },
+ "GF": {
+ "name": "ФранцуÑка Гвајана"
+ },
+ "PF": {
+ "name": "ФранцуÑка Полинезија"
+ },
+ "TF": {
+ "name": "ФранцуÑке Јужне Територије"
+ },
+ "HT": {
+ "name": "Хаити"
+ },
+ "NL": {
+ "name": "Холандија"
+ },
+ "HK": {
+ "name": "Хонг Конг С. Ð. Р. Кина"
+ },
+ "HN": {
+ "name": "ХондураÑ"
+ },
+ "HR": {
+ "name": "ХрватÑка"
+ },
+ "CF": {
+ "name": "Централноафричка Република"
+ },
+ "ME": {
+ "name": "Црна Гора"
+ },
+ "TD": {
+ "name": "Чад"
+ },
+ "CZ": {
+ "name": "Чешка"
+ },
+ "CL": {
+ "name": "Чиле"
+ },
+ "JE": {
+ "name": "ÐерÑи"
+ },
+ "DJ": {
+ "name": "Ðибути"
+ },
+ "CH": {
+ "name": "ШвајцарÑка"
+ },
+ "SE": {
+ "name": "ШведÑка"
+ },
+ "ES": {
+ "name": "Шпанија"
+ },
+ "LK": {
+ "name": "Шри Ланка"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/country/sv-FI.json b/library/intl/resources/country/sv-FI.json
new file mode 100644
index 000000000..16e1eeded
--- /dev/null
+++ b/library/intl/resources/country/sv-FI.json
@@ -0,0 +1,761 @@
+{
+ "AF": {
+ "name": "Afghanistan"
+ },
+ "AL": {
+ "name": "Albanien"
+ },
+ "DZ": {
+ "name": "Algeriet"
+ },
+ "VI": {
+ "name": "Amerikanska Jungfruöarna"
+ },
+ "AS": {
+ "name": "Amerikanska Samoa"
+ },
+ "AD": {
+ "name": "Andorra"
+ },
+ "AO": {
+ "name": "Angola"
+ },
+ "AI": {
+ "name": "Anguilla"
+ },
+ "AQ": {
+ "name": "Antarktis"
+ },
+ "AG": {
+ "name": "Antigua och Barbuda"
+ },
+ "AR": {
+ "name": "Argentina"
+ },
+ "AM": {
+ "name": "Armenien"
+ },
+ "AW": {
+ "name": "Aruba"
+ },
+ "AC": {
+ "name": "Ascension"
+ },
+ "AU": {
+ "name": "Australien"
+ },
+ "AZ": {
+ "name": "Azerbajdzjan"
+ },
+ "BS": {
+ "name": "Bahamas"
+ },
+ "BH": {
+ "name": "Bahrain"
+ },
+ "BD": {
+ "name": "Bangladesh"
+ },
+ "BB": {
+ "name": "Barbados"
+ },
+ "BE": {
+ "name": "Belgien"
+ },
+ "BZ": {
+ "name": "Belize"
+ },
+ "BJ": {
+ "name": "Benin"
+ },
+ "BM": {
+ "name": "Bermuda"
+ },
+ "BT": {
+ "name": "Bhutan"
+ },
+ "BO": {
+ "name": "Bolivia"
+ },
+ "BQ": {
+ "name": "Bonaire, S:t Eustatius och Saba"
+ },
+ "BA": {
+ "name": "Bosnien och Hercegovina"
+ },
+ "BW": {
+ "name": "Botswana"
+ },
+ "BR": {
+ "name": "Brasilien"
+ },
+ "VG": {
+ "name": "Brittiska Jungfruöarna"
+ },
+ "IO": {
+ "name": "Brittiska territoriet i Indiska oceanen"
+ },
+ "BN": {
+ "name": "Brunei"
+ },
+ "BG": {
+ "name": "Bulgarien"
+ },
+ "BF": {
+ "name": "Burkina Faso"
+ },
+ "MM": {
+ "name": "Burma"
+ },
+ "BI": {
+ "name": "Burundi"
+ },
+ "KY": {
+ "name": "Caymanöarna"
+ },
+ "CF": {
+ "name": "Centralafrikanska republiken"
+ },
+ "EA": {
+ "name": "Ceuta och Melilla"
+ },
+ "CL": {
+ "name": "Chile"
+ },
+ "CO": {
+ "name": "Colombia"
+ },
+ "CK": {
+ "name": "Cooköarna"
+ },
+ "CR": {
+ "name": "Costa Rica"
+ },
+ "CW": {
+ "name": "Curaçao"
+ },
+ "CY": {
+ "name": "Cypern"
+ },
+ "DK": {
+ "name": "Danmark"
+ },
+ "CD": {
+ "name": "Demokratiska republiken Kongo"
+ },
+ "DG": {
+ "name": "Diego Garcia"
+ },
+ "DJ": {
+ "name": "Djibouti"
+ },
+ "DM": {
+ "name": "Dominica"
+ },
+ "DO": {
+ "name": "Dominikanska republiken"
+ },
+ "EC": {
+ "name": "Ecuador"
+ },
+ "EG": {
+ "name": "Egypten"
+ },
+ "GQ": {
+ "name": "Ekvatorialguinea"
+ },
+ "SV": {
+ "name": "El Salvador"
+ },
+ "CI": {
+ "name": "Elfenbenskusten"
+ },
+ "ER": {
+ "name": "Eritrea"
+ },
+ "EE": {
+ "name": "Estland"
+ },
+ "ET": {
+ "name": "Etiopien"
+ },
+ "FK": {
+ "name": "Falklandsöarna"
+ },
+ "FJ": {
+ "name": "Fiji"
+ },
+ "PH": {
+ "name": "Filippinerna"
+ },
+ "FI": {
+ "name": "Finland"
+ },
+ "FR": {
+ "name": "Frankrike"
+ },
+ "GF": {
+ "name": "Franska Guyana"
+ },
+ "PF": {
+ "name": "Franska Polynesien"
+ },
+ "TF": {
+ "name": "Franska sydterritorierna"
+ },
+ "FO": {
+ "name": "Färöarna"
+ },
+ "AE": {
+ "name": "Förenade Arabemiraten"
+ },
+ "GB": {
+ "name": "Förenade kungariket"
+ },
+ "US": {
+ "name": "Förenta staterna"
+ },
+ "GA": {
+ "name": "Gabon"
+ },
+ "GM": {
+ "name": "Gambia"
+ },
+ "GE": {
+ "name": "Georgien"
+ },
+ "GH": {
+ "name": "Ghana"
+ },
+ "GI": {
+ "name": "Gibraltar"
+ },
+ "GR": {
+ "name": "Grekland"
+ },
+ "GD": {
+ "name": "Grenada"
+ },
+ "GL": {
+ "name": "Grönland"
+ },
+ "GP": {
+ "name": "Guadeloupe"
+ },
+ "GU": {
+ "name": "Guam"
+ },
+ "GT": {
+ "name": "Guatemala"
+ },
+ "GG": {
+ "name": "Guernsey"
+ },
+ "GN": {
+ "name": "Guinea"
+ },
+ "GW": {
+ "name": "Guinea-Bissau"
+ },
+ "GY": {
+ "name": "Guyana"
+ },
+ "HT": {
+ "name": "Haiti"
+ },
+ "HN": {
+ "name": "Honduras"
+ },
+ "HK": {
+ "name": "Hongkong (S.A.R. Kina)"
+ },
+ "IN": {
+ "name": "Indien"
+ },
+ "ID": {
+ "name": "Indonesien"
+ },
+ "IQ": {
+ "name": "Irak"
+ },
+ "IR": {
+ "name": "Iran"
+ },
+ "IE": {
+ "name": "Irland"
+ },
+ "IS": {
+ "name": "Island"
+ },
+ "IM": {
+ "name": "Isle of Man"
+ },
+ "IL": {
+ "name": "Israel"
+ },
+ "IT": {
+ "name": "Italien"
+ },
+ "JM": {
+ "name": "Jamaica"
+ },
+ "JP": {
+ "name": "Japan"
+ },
+ "YE": {
+ "name": "Jemen"
+ },
+ "JE": {
+ "name": "Jersey"
+ },
+ "JO": {
+ "name": "Jordanien"
+ },
+ "CX": {
+ "name": "Julön"
+ },
+ "KH": {
+ "name": "Kambodja"
+ },
+ "CM": {
+ "name": "Kamerun"
+ },
+ "CA": {
+ "name": "Kanada"
+ },
+ "IC": {
+ "name": "Kanarieöarna"
+ },
+ "CV": {
+ "name": "Kap Verde"
+ },
+ "KZ": {
+ "name": "Kazakstan"
+ },
+ "KE": {
+ "name": "Kenya"
+ },
+ "CN": {
+ "name": "Kina"
+ },
+ "KG": {
+ "name": "Kirgizistan"
+ },
+ "KI": {
+ "name": "Kiribati"
+ },
+ "CC": {
+ "name": "Kokosöarna"
+ },
+ "KM": {
+ "name": "Komorerna"
+ },
+ "CG": {
+ "name": "Kongo"
+ },
+ "XK": {
+ "name": "Kosovo"
+ },
+ "HR": {
+ "name": "Kroatien"
+ },
+ "CU": {
+ "name": "Kuba"
+ },
+ "KW": {
+ "name": "Kuwait"
+ },
+ "LA": {
+ "name": "Laos"
+ },
+ "LS": {
+ "name": "Lesotho"
+ },
+ "LV": {
+ "name": "Lettland"
+ },
+ "LB": {
+ "name": "Libanon"
+ },
+ "LR": {
+ "name": "Liberia"
+ },
+ "LY": {
+ "name": "Libyen"
+ },
+ "LI": {
+ "name": "Liechtenstein"
+ },
+ "LT": {
+ "name": "Litauen"
+ },
+ "LU": {
+ "name": "Luxemburg"
+ },
+ "MO": {
+ "name": "Macao (S.A.R. Kina)"
+ },
+ "MG": {
+ "name": "Madagaskar"
+ },
+ "MK": {
+ "name": "Makedonien"
+ },
+ "MW": {
+ "name": "Malawi"
+ },
+ "MY": {
+ "name": "Malaysia"
+ },
+ "MV": {
+ "name": "Maldiverna"
+ },
+ "ML": {
+ "name": "Mali"
+ },
+ "MT": {
+ "name": "Malta"
+ },
+ "MA": {
+ "name": "Marocko"
+ },
+ "MH": {
+ "name": "Marshallöarna"
+ },
+ "MQ": {
+ "name": "Martinique"
+ },
+ "MR": {
+ "name": "Mauretanien"
+ },
+ "MU": {
+ "name": "Mauritius"
+ },
+ "YT": {
+ "name": "Mayotte"
+ },
+ "MX": {
+ "name": "Mexiko"
+ },
+ "FM": {
+ "name": "Mikronesien"
+ },
+ "MZ": {
+ "name": "Moçambique"
+ },
+ "MD": {
+ "name": "Moldavien"
+ },
+ "MC": {
+ "name": "Monaco"
+ },
+ "MN": {
+ "name": "Mongoliet"
+ },
+ "ME": {
+ "name": "Montenegro"
+ },
+ "MS": {
+ "name": "Montserrat"
+ },
+ "NA": {
+ "name": "Namibia"
+ },
+ "NR": {
+ "name": "Nauru"
+ },
+ "NL": {
+ "name": "Nederländerna"
+ },
+ "NP": {
+ "name": "Nepal"
+ },
+ "NI": {
+ "name": "Nicaragua"
+ },
+ "NE": {
+ "name": "Niger"
+ },
+ "NG": {
+ "name": "Nigeria"
+ },
+ "NU": {
+ "name": "Niue"
+ },
+ "KP": {
+ "name": "Nordkorea"
+ },
+ "MP": {
+ "name": "Nordmarianerna"
+ },
+ "SD": {
+ "name": "Nordsudan"
+ },
+ "NF": {
+ "name": "Norfolkön"
+ },
+ "NO": {
+ "name": "Norge"
+ },
+ "NC": {
+ "name": "Nya Kaledonien"
+ },
+ "NZ": {
+ "name": "Nya Zeeland"
+ },
+ "OM": {
+ "name": "Oman"
+ },
+ "PK": {
+ "name": "Pakistan"
+ },
+ "PW": {
+ "name": "Palau"
+ },
+ "PS": {
+ "name": "Palestinska området"
+ },
+ "PA": {
+ "name": "Panama"
+ },
+ "PG": {
+ "name": "Papua Nya Guinea"
+ },
+ "PY": {
+ "name": "Paraguay"
+ },
+ "PE": {
+ "name": "Peru"
+ },
+ "PN": {
+ "name": "Pitcairn"
+ },
+ "PL": {
+ "name": "Polen"
+ },
+ "PT": {
+ "name": "Portugal"
+ },
+ "PR": {
+ "name": "Puerto Rico"
+ },
+ "QA": {
+ "name": "Qatar"
+ },
+ "RE": {
+ "name": "Réunion"
+ },
+ "RO": {
+ "name": "Rumänien"
+ },
+ "RW": {
+ "name": "Rwanda"
+ },
+ "RU": {
+ "name": "Ryssland"
+ },
+ "MF": {
+ "name": "S:t Martin (franska delen)"
+ },
+ "SH": {
+ "name": "Saint Helena"
+ },
+ "KN": {
+ "name": "Saint Kitts och Nevis"
+ },
+ "LC": {
+ "name": "Saint Lucia"
+ },
+ "PM": {
+ "name": "Saint Pierre och Miquelon"
+ },
+ "VC": {
+ "name": "Saint Vincent och Grenadinerna"
+ },
+ "BL": {
+ "name": "Saint-Barthélemy"
+ },
+ "SB": {
+ "name": "Salomonöarna"
+ },
+ "WS": {
+ "name": "Samoa"
+ },
+ "SM": {
+ "name": "San Marino"
+ },
+ "ST": {
+ "name": "São Tomé och Príncipe"
+ },
+ "SA": {
+ "name": "Saudiarabien"
+ },
+ "CH": {
+ "name": "Schweiz"
+ },
+ "SN": {
+ "name": "Senegal"
+ },
+ "RS": {
+ "name": "Serbien"
+ },
+ "SC": {
+ "name": "Seychellerna"
+ },
+ "SL": {
+ "name": "Sierra Leone"
+ },
+ "SG": {
+ "name": "Singapore"
+ },
+ "SX": {
+ "name": "Sint Martin"
+ },
+ "SK": {
+ "name": "Slovakien"
+ },
+ "SI": {
+ "name": "Slovenien"
+ },
+ "SO": {
+ "name": "Somalia"
+ },
+ "ES": {
+ "name": "Spanien"
+ },
+ "LK": {
+ "name": "Sri Lanka"
+ },
+ "SR": {
+ "name": "Surinam"
+ },
+ "SJ": {
+ "name": "Svalbard och Jan Mayen"
+ },
+ "SE": {
+ "name": "Sverige"
+ },
+ "SZ": {
+ "name": "Swaziland"
+ },
+ "ZA": {
+ "name": "Sydafrika"
+ },
+ "GS": {
+ "name": "Sydgeorgien och Sydsandwichöarna"
+ },
+ "KR": {
+ "name": "Sydkorea"
+ },
+ "SS": {
+ "name": "Sydsudan"
+ },
+ "SY": {
+ "name": "Syrien"
+ },
+ "TJ": {
+ "name": "Tadzjikistan"
+ },
+ "TW": {
+ "name": "Taiwan"
+ },
+ "TZ": {
+ "name": "Tanzania"
+ },
+ "TD": {
+ "name": "Tchad"
+ },
+ "TH": {
+ "name": "Thailand"
+ },
+ "CZ": {
+ "name": "Tjeckien"
+ },
+ "TG": {
+ "name": "Togo"
+ },
+ "TK": {
+ "name": "Tokelauöarna"
+ },
+ "TO": {
+ "name": "Tonga"
+ },
+ "TT": {
+ "name": "Trinidad och Tobago"
+ },
+ "TA": {
+ "name": "Tristan da Cunha"
+ },
+ "TN": {
+ "name": "Tunisien"
+ },
+ "TR": {
+ "name": "Turkiet"
+ },
+ "TM": {
+ "name": "Turkmenistan"
+ },
+ "TC": {
+ "name": "Turks- och Caicosöarna"
+ },
+ "TV": {
+ "name": "Tuvalu"
+ },
+ "DE": {
+ "name": "Tyskland"
+ },
+ "UG": {
+ "name": "Uganda"
+ },
+ "UA": {
+ "name": "Ukraina"
+ },
+ "HU": {
+ "name": "Ungern"
+ },
+ "UY": {
+ "name": "Uruguay"
+ },
+ "UM": {
+ "name": "USA:s yttre öar"
+ },
+ "UZ": {
+ "name": "Uzbekistan"
+ },
+ "VU": {
+ "name": "Vanuatu"
+ },
+ "VA": {
+ "name": "Vatikanen"
+ },
+ "VE": {
+ "name": "Venezuela"
+ },
+ "VN": {
+ "name": "Vietnam"
+ },
+ "BY": {
+ "name": "Vitryssland"
+ },
+ "EH": {
+ "name": "Västsahara"
+ },
+ "WF": {
+ "name": "Wallis- och Futuna"
+ },
+ "ZM": {
+ "name": "Zambia"
+ },
+ "ZW": {
+ "name": "Zimbabwe"
+ },
+ "AX": {
+ "name": "Ã…land"
+ },
+ "AT": {
+ "name": "Österrike"
+ },
+ "TL": {
+ "name": "Östtimor"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/country/sv.json b/library/intl/resources/country/sv.json
new file mode 100644
index 000000000..dac3698c6
--- /dev/null
+++ b/library/intl/resources/country/sv.json
@@ -0,0 +1,761 @@
+{
+ "AF": {
+ "name": "Afghanistan"
+ },
+ "AL": {
+ "name": "Albanien"
+ },
+ "DZ": {
+ "name": "Algeriet"
+ },
+ "VI": {
+ "name": "Amerikanska Jungfruöarna"
+ },
+ "AS": {
+ "name": "Amerikanska Samoa"
+ },
+ "AD": {
+ "name": "Andorra"
+ },
+ "AO": {
+ "name": "Angola"
+ },
+ "AI": {
+ "name": "Anguilla"
+ },
+ "AQ": {
+ "name": "Antarktis"
+ },
+ "AG": {
+ "name": "Antigua och Barbuda"
+ },
+ "AR": {
+ "name": "Argentina"
+ },
+ "AM": {
+ "name": "Armenien"
+ },
+ "AW": {
+ "name": "Aruba"
+ },
+ "AC": {
+ "name": "Ascension"
+ },
+ "AU": {
+ "name": "Australien"
+ },
+ "AZ": {
+ "name": "Azerbajdzjan"
+ },
+ "BS": {
+ "name": "Bahamas"
+ },
+ "BH": {
+ "name": "Bahrain"
+ },
+ "BD": {
+ "name": "Bangladesh"
+ },
+ "BB": {
+ "name": "Barbados"
+ },
+ "BE": {
+ "name": "Belgien"
+ },
+ "BZ": {
+ "name": "Belize"
+ },
+ "BJ": {
+ "name": "Benin"
+ },
+ "BM": {
+ "name": "Bermuda"
+ },
+ "BT": {
+ "name": "Bhutan"
+ },
+ "BO": {
+ "name": "Bolivia"
+ },
+ "BA": {
+ "name": "Bosnien och Hercegovina"
+ },
+ "BW": {
+ "name": "Botswana"
+ },
+ "BR": {
+ "name": "Brasilien"
+ },
+ "VG": {
+ "name": "Brittiska Jungfruöarna"
+ },
+ "IO": {
+ "name": "Brittiska territoriet i Indiska oceanen"
+ },
+ "BN": {
+ "name": "Brunei"
+ },
+ "BG": {
+ "name": "Bulgarien"
+ },
+ "BF": {
+ "name": "Burkina Faso"
+ },
+ "BI": {
+ "name": "Burundi"
+ },
+ "KY": {
+ "name": "Caymanöarna"
+ },
+ "CF": {
+ "name": "Centralafrikanska republiken"
+ },
+ "EA": {
+ "name": "Ceuta och Melilla"
+ },
+ "CL": {
+ "name": "Chile"
+ },
+ "CO": {
+ "name": "Colombia"
+ },
+ "CK": {
+ "name": "Cooköarna"
+ },
+ "CR": {
+ "name": "Costa Rica"
+ },
+ "CW": {
+ "name": "Curaçao"
+ },
+ "CY": {
+ "name": "Cypern"
+ },
+ "DK": {
+ "name": "Danmark"
+ },
+ "DG": {
+ "name": "Diego Garcia"
+ },
+ "DJ": {
+ "name": "Djibouti"
+ },
+ "DM": {
+ "name": "Dominica"
+ },
+ "DO": {
+ "name": "Dominikanska republiken"
+ },
+ "EC": {
+ "name": "Ecuador"
+ },
+ "EG": {
+ "name": "Egypten"
+ },
+ "GQ": {
+ "name": "Ekvatorialguinea"
+ },
+ "SV": {
+ "name": "El Salvador"
+ },
+ "CI": {
+ "name": "Elfenbenskusten"
+ },
+ "ER": {
+ "name": "Eritrea"
+ },
+ "EE": {
+ "name": "Estland"
+ },
+ "ET": {
+ "name": "Etiopien"
+ },
+ "FK": {
+ "name": "Falklandsöarna"
+ },
+ "FJ": {
+ "name": "Fiji"
+ },
+ "PH": {
+ "name": "Filippinerna"
+ },
+ "FI": {
+ "name": "Finland"
+ },
+ "FR": {
+ "name": "Frankrike"
+ },
+ "GF": {
+ "name": "Franska Guyana"
+ },
+ "PF": {
+ "name": "Franska Polynesien"
+ },
+ "TF": {
+ "name": "Franska sydterritorierna"
+ },
+ "FO": {
+ "name": "Färöarna"
+ },
+ "AE": {
+ "name": "Förenade Arabemiraten"
+ },
+ "GA": {
+ "name": "Gabon"
+ },
+ "GM": {
+ "name": "Gambia"
+ },
+ "GE": {
+ "name": "Georgien"
+ },
+ "GH": {
+ "name": "Ghana"
+ },
+ "GI": {
+ "name": "Gibraltar"
+ },
+ "GR": {
+ "name": "Grekland"
+ },
+ "GD": {
+ "name": "Grenada"
+ },
+ "GL": {
+ "name": "Grönland"
+ },
+ "GP": {
+ "name": "Guadeloupe"
+ },
+ "GU": {
+ "name": "Guam"
+ },
+ "GT": {
+ "name": "Guatemala"
+ },
+ "GG": {
+ "name": "Guernsey"
+ },
+ "GN": {
+ "name": "Guinea"
+ },
+ "GW": {
+ "name": "Guinea-Bissau"
+ },
+ "GY": {
+ "name": "Guyana"
+ },
+ "HT": {
+ "name": "Haiti"
+ },
+ "HN": {
+ "name": "Honduras"
+ },
+ "HK": {
+ "name": "Hongkong (S.A.R. Kina)"
+ },
+ "IN": {
+ "name": "Indien"
+ },
+ "ID": {
+ "name": "Indonesien"
+ },
+ "IQ": {
+ "name": "Irak"
+ },
+ "IR": {
+ "name": "Iran"
+ },
+ "IE": {
+ "name": "Irland"
+ },
+ "IS": {
+ "name": "Island"
+ },
+ "IM": {
+ "name": "Isle of Man"
+ },
+ "IL": {
+ "name": "Israel"
+ },
+ "IT": {
+ "name": "Italien"
+ },
+ "JM": {
+ "name": "Jamaica"
+ },
+ "JP": {
+ "name": "Japan"
+ },
+ "YE": {
+ "name": "Jemen"
+ },
+ "JE": {
+ "name": "Jersey"
+ },
+ "JO": {
+ "name": "Jordanien"
+ },
+ "CX": {
+ "name": "Julön"
+ },
+ "KH": {
+ "name": "Kambodja"
+ },
+ "CM": {
+ "name": "Kamerun"
+ },
+ "CA": {
+ "name": "Kanada"
+ },
+ "IC": {
+ "name": "Kanarieöarna"
+ },
+ "CV": {
+ "name": "Kap Verde"
+ },
+ "BQ": {
+ "name": "Karibiska Nederländerna"
+ },
+ "KZ": {
+ "name": "Kazakstan"
+ },
+ "KE": {
+ "name": "Kenya"
+ },
+ "CN": {
+ "name": "Kina"
+ },
+ "KG": {
+ "name": "Kirgizistan"
+ },
+ "KI": {
+ "name": "Kiribati"
+ },
+ "CC": {
+ "name": "Kokosöarna"
+ },
+ "KM": {
+ "name": "Komorerna"
+ },
+ "CG": {
+ "name": "Kongo-Brazzaville"
+ },
+ "CD": {
+ "name": "Kongo-Kinshasa"
+ },
+ "XK": {
+ "name": "Kosovo"
+ },
+ "HR": {
+ "name": "Kroatien"
+ },
+ "CU": {
+ "name": "Kuba"
+ },
+ "KW": {
+ "name": "Kuwait"
+ },
+ "LA": {
+ "name": "Laos"
+ },
+ "LS": {
+ "name": "Lesotho"
+ },
+ "LV": {
+ "name": "Lettland"
+ },
+ "LB": {
+ "name": "Libanon"
+ },
+ "LR": {
+ "name": "Liberia"
+ },
+ "LY": {
+ "name": "Libyen"
+ },
+ "LI": {
+ "name": "Liechtenstein"
+ },
+ "LT": {
+ "name": "Litauen"
+ },
+ "LU": {
+ "name": "Luxemburg"
+ },
+ "MO": {
+ "name": "Macao (S.A.R. Kina)"
+ },
+ "MG": {
+ "name": "Madagaskar"
+ },
+ "MK": {
+ "name": "Makedonien"
+ },
+ "MW": {
+ "name": "Malawi"
+ },
+ "MY": {
+ "name": "Malaysia"
+ },
+ "MV": {
+ "name": "Maldiverna"
+ },
+ "ML": {
+ "name": "Mali"
+ },
+ "MT": {
+ "name": "Malta"
+ },
+ "MA": {
+ "name": "Marocko"
+ },
+ "MH": {
+ "name": "Marshallöarna"
+ },
+ "MQ": {
+ "name": "Martinique"
+ },
+ "MR": {
+ "name": "Mauretanien"
+ },
+ "MU": {
+ "name": "Mauritius"
+ },
+ "YT": {
+ "name": "Mayotte"
+ },
+ "MX": {
+ "name": "Mexiko"
+ },
+ "FM": {
+ "name": "Mikronesien"
+ },
+ "MZ": {
+ "name": "Moçambique"
+ },
+ "MD": {
+ "name": "Moldavien"
+ },
+ "MC": {
+ "name": "Monaco"
+ },
+ "MN": {
+ "name": "Mongoliet"
+ },
+ "ME": {
+ "name": "Montenegro"
+ },
+ "MS": {
+ "name": "Montserrat"
+ },
+ "MM": {
+ "name": "Myanmar (Burma)"
+ },
+ "NA": {
+ "name": "Namibia"
+ },
+ "NR": {
+ "name": "Nauru"
+ },
+ "NL": {
+ "name": "Nederländerna"
+ },
+ "NP": {
+ "name": "Nepal"
+ },
+ "NI": {
+ "name": "Nicaragua"
+ },
+ "NE": {
+ "name": "Niger"
+ },
+ "NG": {
+ "name": "Nigeria"
+ },
+ "NU": {
+ "name": "Niue"
+ },
+ "KP": {
+ "name": "Nordkorea"
+ },
+ "MP": {
+ "name": "Nordmarianerna"
+ },
+ "NF": {
+ "name": "Norfolkön"
+ },
+ "NO": {
+ "name": "Norge"
+ },
+ "NC": {
+ "name": "Nya Kaledonien"
+ },
+ "NZ": {
+ "name": "Nya Zeeland"
+ },
+ "OM": {
+ "name": "Oman"
+ },
+ "PK": {
+ "name": "Pakistan"
+ },
+ "PW": {
+ "name": "Palau"
+ },
+ "PS": {
+ "name": "Palestinska territorierna"
+ },
+ "PA": {
+ "name": "Panama"
+ },
+ "PG": {
+ "name": "Papua Nya Guinea"
+ },
+ "PY": {
+ "name": "Paraguay"
+ },
+ "PE": {
+ "name": "Peru"
+ },
+ "PN": {
+ "name": "Pitcairnöarna"
+ },
+ "PL": {
+ "name": "Polen"
+ },
+ "PT": {
+ "name": "Portugal"
+ },
+ "PR": {
+ "name": "Puerto Rico"
+ },
+ "QA": {
+ "name": "Qatar"
+ },
+ "RE": {
+ "name": "Réunion"
+ },
+ "RO": {
+ "name": "Rumänien"
+ },
+ "RW": {
+ "name": "Rwanda"
+ },
+ "RU": {
+ "name": "Ryssland"
+ },
+ "BL": {
+ "name": "S:t Barthélemy"
+ },
+ "SH": {
+ "name": "S:t Helena"
+ },
+ "KN": {
+ "name": "S:t Kitts och Nevis"
+ },
+ "LC": {
+ "name": "S:t Lucia"
+ },
+ "MF": {
+ "name": "S:t Martin"
+ },
+ "PM": {
+ "name": "S:t Pierre och Miquelon"
+ },
+ "VC": {
+ "name": "S:t Vincent och Grenadinerna"
+ },
+ "SB": {
+ "name": "Salomonöarna"
+ },
+ "WS": {
+ "name": "Samoa"
+ },
+ "SM": {
+ "name": "San Marino"
+ },
+ "ST": {
+ "name": "São Tomé och Príncipe"
+ },
+ "SA": {
+ "name": "Saudiarabien"
+ },
+ "CH": {
+ "name": "Schweiz"
+ },
+ "SN": {
+ "name": "Senegal"
+ },
+ "RS": {
+ "name": "Serbien"
+ },
+ "SC": {
+ "name": "Seychellerna"
+ },
+ "SL": {
+ "name": "Sierra Leone"
+ },
+ "SG": {
+ "name": "Singapore"
+ },
+ "SX": {
+ "name": "Sint Maarten"
+ },
+ "SK": {
+ "name": "Slovakien"
+ },
+ "SI": {
+ "name": "Slovenien"
+ },
+ "SO": {
+ "name": "Somalia"
+ },
+ "ES": {
+ "name": "Spanien"
+ },
+ "LK": {
+ "name": "Sri Lanka"
+ },
+ "GB": {
+ "name": "Storbritannien"
+ },
+ "SD": {
+ "name": "Sudan"
+ },
+ "SR": {
+ "name": "Surinam"
+ },
+ "SJ": {
+ "name": "Svalbard och Jan Mayen"
+ },
+ "SE": {
+ "name": "Sverige"
+ },
+ "SZ": {
+ "name": "Swaziland"
+ },
+ "ZA": {
+ "name": "Sydafrika"
+ },
+ "GS": {
+ "name": "Sydgeorgien och Sydsandwichöarna"
+ },
+ "KR": {
+ "name": "Sydkorea"
+ },
+ "SS": {
+ "name": "Sydsudan"
+ },
+ "SY": {
+ "name": "Syrien"
+ },
+ "TJ": {
+ "name": "Tadzjikistan"
+ },
+ "TW": {
+ "name": "Taiwan"
+ },
+ "TZ": {
+ "name": "Tanzania"
+ },
+ "TD": {
+ "name": "Tchad"
+ },
+ "TH": {
+ "name": "Thailand"
+ },
+ "CZ": {
+ "name": "Tjeckien"
+ },
+ "TG": {
+ "name": "Togo"
+ },
+ "TK": {
+ "name": "Tokelau"
+ },
+ "TO": {
+ "name": "Tonga"
+ },
+ "TT": {
+ "name": "Trinidad och Tobago"
+ },
+ "TA": {
+ "name": "Tristan da Cunha"
+ },
+ "TN": {
+ "name": "Tunisien"
+ },
+ "TR": {
+ "name": "Turkiet"
+ },
+ "TM": {
+ "name": "Turkmenistan"
+ },
+ "TC": {
+ "name": "Turks- och Caicosöarna"
+ },
+ "TV": {
+ "name": "Tuvalu"
+ },
+ "DE": {
+ "name": "Tyskland"
+ },
+ "UG": {
+ "name": "Uganda"
+ },
+ "UA": {
+ "name": "Ukraina"
+ },
+ "HU": {
+ "name": "Ungern"
+ },
+ "UY": {
+ "name": "Uruguay"
+ },
+ "US": {
+ "name": "USA"
+ },
+ "UM": {
+ "name": "USA:s yttre öar"
+ },
+ "UZ": {
+ "name": "Uzbekistan"
+ },
+ "VU": {
+ "name": "Vanuatu"
+ },
+ "VA": {
+ "name": "Vatikanstaten"
+ },
+ "VE": {
+ "name": "Venezuela"
+ },
+ "VN": {
+ "name": "Vietnam"
+ },
+ "BY": {
+ "name": "Vitryssland"
+ },
+ "EH": {
+ "name": "Västsahara"
+ },
+ "WF": {
+ "name": "Wallis- och Futunaöarna"
+ },
+ "ZM": {
+ "name": "Zambia"
+ },
+ "ZW": {
+ "name": "Zimbabwe"
+ },
+ "AX": {
+ "name": "Ã…land"
+ },
+ "AT": {
+ "name": "Österrike"
+ },
+ "TL": {
+ "name": "Östtimor"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/country/sw.json b/library/intl/resources/country/sw.json
new file mode 100644
index 000000000..850cefc29
--- /dev/null
+++ b/library/intl/resources/country/sw.json
@@ -0,0 +1,761 @@
+{
+ "AF": {
+ "name": "Afghanistan"
+ },
+ "ZA": {
+ "name": "Afrika Kusini"
+ },
+ "IS": {
+ "name": "Aislandi"
+ },
+ "AR": {
+ "name": "Ajentina"
+ },
+ "AL": {
+ "name": "Albania"
+ },
+ "DZ": {
+ "name": "Aljeria"
+ },
+ "AD": {
+ "name": "Andora"
+ },
+ "AO": {
+ "name": "Angola"
+ },
+ "AI": {
+ "name": "Anguilla"
+ },
+ "AQ": {
+ "name": "Antaktika"
+ },
+ "AG": {
+ "name": "Antigua na Barbuda"
+ },
+ "AM": {
+ "name": "Armenia"
+ },
+ "AW": {
+ "name": "Aruba"
+ },
+ "AU": {
+ "name": "Australia"
+ },
+ "AT": {
+ "name": "Austria"
+ },
+ "IE": {
+ "name": "Ayalandi"
+ },
+ "AZ": {
+ "name": "Azabajani"
+ },
+ "BB": {
+ "name": "Babadosi"
+ },
+ "BS": {
+ "name": "Bahama"
+ },
+ "BH": {
+ "name": "Bahareni"
+ },
+ "BD": {
+ "name": "Bangladeshi"
+ },
+ "BY": {
+ "name": "Belarusi"
+ },
+ "BZ": {
+ "name": "Belize"
+ },
+ "BJ": {
+ "name": "Benin"
+ },
+ "BM": {
+ "name": "Bermuda"
+ },
+ "BO": {
+ "name": "Bolivia"
+ },
+ "BA": {
+ "name": "Bosnia na Hezegovina"
+ },
+ "BW": {
+ "name": "Botswana"
+ },
+ "BR": {
+ "name": "Brazili"
+ },
+ "BN": {
+ "name": "Brunei"
+ },
+ "BF": {
+ "name": "Bukinafaso"
+ },
+ "BG": {
+ "name": "Bulgaria"
+ },
+ "BI": {
+ "name": "Burundi"
+ },
+ "BT": {
+ "name": "Butani"
+ },
+ "EA": {
+ "name": "Ceuta na Melilla"
+ },
+ "TD": {
+ "name": "Chadi"
+ },
+ "CL": {
+ "name": "Chile"
+ },
+ "CN": {
+ "name": "China"
+ },
+ "CI": {
+ "name": "Côte d’Ivoire"
+ },
+ "DK": {
+ "name": "Denmaki"
+ },
+ "DG": {
+ "name": "Diego Garcia"
+ },
+ "DM": {
+ "name": "Dominika"
+ },
+ "EC": {
+ "name": "Ekwado"
+ },
+ "SV": {
+ "name": "Elsavado"
+ },
+ "IO": {
+ "name": "Eneo la Uingereza katika Bahari Hindi"
+ },
+ "ER": {
+ "name": "Eritrea"
+ },
+ "EE": {
+ "name": "Estonia"
+ },
+ "AE": {
+ "name": "Falme za Kiarabu"
+ },
+ "FJ": {
+ "name": "Fiji"
+ },
+ "PH": {
+ "name": "Filipino"
+ },
+ "GA": {
+ "name": "Gaboni"
+ },
+ "GM": {
+ "name": "Gambia"
+ },
+ "GH": {
+ "name": "Ghana"
+ },
+ "GN": {
+ "name": "Gine"
+ },
+ "GW": {
+ "name": "Ginebisau"
+ },
+ "GQ": {
+ "name": "Ginekweta"
+ },
+ "GD": {
+ "name": "Grenada"
+ },
+ "GL": {
+ "name": "Grinlandi"
+ },
+ "GG": {
+ "name": "Guernsey"
+ },
+ "GY": {
+ "name": "Guyana"
+ },
+ "GP": {
+ "name": "Gwadelupe"
+ },
+ "GU": {
+ "name": "Gwam"
+ },
+ "GT": {
+ "name": "Gwatemala"
+ },
+ "GF": {
+ "name": "Gwiyana ya Ufaransa"
+ },
+ "HT": {
+ "name": "Haiti"
+ },
+ "ES": {
+ "name": "Hispania"
+ },
+ "HN": {
+ "name": "Hondurasi"
+ },
+ "HK": {
+ "name": "Hong Kong SAR China"
+ },
+ "HU": {
+ "name": "Hungaria"
+ },
+ "IN": {
+ "name": "India"
+ },
+ "ID": {
+ "name": "Indonesia"
+ },
+ "IQ": {
+ "name": "Iraki"
+ },
+ "IR": {
+ "name": "Iran"
+ },
+ "IM": {
+ "name": "Isle of Man"
+ },
+ "IL": {
+ "name": "Israeli"
+ },
+ "IT": {
+ "name": "Italia"
+ },
+ "JM": {
+ "name": "Jamaika"
+ },
+ "CF": {
+ "name": "Jamhuri ya Afrika ya Kati"
+ },
+ "CZ": {
+ "name": "Jamhuri ya Cheki"
+ },
+ "DO": {
+ "name": "Jamhuri ya Dominika"
+ },
+ "CD": {
+ "name": "Jamhuri ya Kidemokrasia ya Kongo"
+ },
+ "JP": {
+ "name": "Japani"
+ },
+ "JE": {
+ "name": "Jersey"
+ },
+ "GI": {
+ "name": "Jibralta"
+ },
+ "DJ": {
+ "name": "Jibuti"
+ },
+ "GE": {
+ "name": "Jojia"
+ },
+ "GS": {
+ "name": "Jojia Kusini na Visiwa vya Sandwich Kusini"
+ },
+ "KH": {
+ "name": "Kambodia"
+ },
+ "CM": {
+ "name": "Kameruni"
+ },
+ "CA": {
+ "name": "Kanada"
+ },
+ "QA": {
+ "name": "Katari"
+ },
+ "KZ": {
+ "name": "Kazakistani"
+ },
+ "KE": {
+ "name": "Kenya"
+ },
+ "CV": {
+ "name": "Kepuvede"
+ },
+ "KI": {
+ "name": "Kiribati"
+ },
+ "KG": {
+ "name": "Kirigizistani"
+ },
+ "AC": {
+ "name": "Kisiwa cha Ascension"
+ },
+ "CX": {
+ "name": "Kisiwa cha Krismasi"
+ },
+ "NF": {
+ "name": "Kisiwa cha Norfolk"
+ },
+ "CO": {
+ "name": "Kolombia"
+ },
+ "KM": {
+ "name": "Komoro"
+ },
+ "CG": {
+ "name": "Kongo - Brazzaville"
+ },
+ "HR": {
+ "name": "Korasia"
+ },
+ "KP": {
+ "name": "Korea Kaskazini"
+ },
+ "KR": {
+ "name": "Korea Kusini"
+ },
+ "XK": {
+ "name": "Kosovo"
+ },
+ "CR": {
+ "name": "Kostarika"
+ },
+ "CU": {
+ "name": "Kuba"
+ },
+ "CW": {
+ "name": "Kurakao"
+ },
+ "KW": {
+ "name": "Kuwaiti"
+ },
+ "LA": {
+ "name": "Laosi"
+ },
+ "LU": {
+ "name": "Lasembagi"
+ },
+ "LV": {
+ "name": "Lativia"
+ },
+ "LB": {
+ "name": "Lebanoni"
+ },
+ "LS": {
+ "name": "Lesoto"
+ },
+ "LR": {
+ "name": "Liberia"
+ },
+ "LY": {
+ "name": "Libya"
+ },
+ "LI": {
+ "name": "Liechtenstein"
+ },
+ "LT": {
+ "name": "Litwania"
+ },
+ "MO": {
+ "name": "Macau SAR China"
+ },
+ "MG": {
+ "name": "Madagaska"
+ },
+ "TF": {
+ "name": "Maeneo ya Kusini ya Ufaransa"
+ },
+ "PS": {
+ "name": "Maeneo ya Palestina"
+ },
+ "MW": {
+ "name": "Malawi"
+ },
+ "MY": {
+ "name": "Malesia"
+ },
+ "ML": {
+ "name": "Mali"
+ },
+ "MT": {
+ "name": "Malta"
+ },
+ "US": {
+ "name": "Marekani"
+ },
+ "MQ": {
+ "name": "Martiniki"
+ },
+ "MK": {
+ "name": "Masedonia"
+ },
+ "YT": {
+ "name": "Mayotte"
+ },
+ "MX": {
+ "name": "Meksiko"
+ },
+ "FM": {
+ "name": "Mikronesia"
+ },
+ "EG": {
+ "name": "Misri"
+ },
+ "MV": {
+ "name": "Modivu"
+ },
+ "MD": {
+ "name": "Moldova"
+ },
+ "MC": {
+ "name": "Monako"
+ },
+ "MN": {
+ "name": "Mongolia"
+ },
+ "ME": {
+ "name": "Montenegro"
+ },
+ "MS": {
+ "name": "Montserrati"
+ },
+ "MU": {
+ "name": "Morisi"
+ },
+ "MR": {
+ "name": "Moritania"
+ },
+ "MA": {
+ "name": "Moroko"
+ },
+ "MZ": {
+ "name": "Msumbiji"
+ },
+ "MM": {
+ "name": "Myanmar (Burma)"
+ },
+ "NA": {
+ "name": "Namibia"
+ },
+ "NR": {
+ "name": "Nauru"
+ },
+ "NP": {
+ "name": "Nepali"
+ },
+ "NG": {
+ "name": "Nigeria"
+ },
+ "NE": {
+ "name": "Nijeri"
+ },
+ "NI": {
+ "name": "Nikaragwa"
+ },
+ "NU": {
+ "name": "Niue"
+ },
+ "NO": {
+ "name": "Norwe"
+ },
+ "NC": {
+ "name": "Nyukaledonia"
+ },
+ "NZ": {
+ "name": "Nyuzilandi"
+ },
+ "OM": {
+ "name": "Omani"
+ },
+ "PK": {
+ "name": "Pakistani"
+ },
+ "PW": {
+ "name": "Palau"
+ },
+ "PA": {
+ "name": "Panama"
+ },
+ "PG": {
+ "name": "Papua"
+ },
+ "PY": {
+ "name": "Paragwai"
+ },
+ "PE": {
+ "name": "Peru"
+ },
+ "PN": {
+ "name": "Pitkairni"
+ },
+ "PL": {
+ "name": "Polandi"
+ },
+ "PF": {
+ "name": "Polinesia ya Ufaransa"
+ },
+ "PR": {
+ "name": "Pwetoriko"
+ },
+ "RE": {
+ "name": "Riyunioni"
+ },
+ "RO": {
+ "name": "Romania"
+ },
+ "RW": {
+ "name": "Rwanda"
+ },
+ "EH": {
+ "name": "Sahara Magharibi"
+ },
+ "MF": {
+ "name": "Saint Martin"
+ },
+ "CY": {
+ "name": "Saiprasi"
+ },
+ "SM": {
+ "name": "Samarino"
+ },
+ "WS": {
+ "name": "Samoa"
+ },
+ "AS": {
+ "name": "Samoa ya Marekani"
+ },
+ "BL": {
+ "name": "Santabathelemi"
+ },
+ "SH": {
+ "name": "Santahelena"
+ },
+ "KN": {
+ "name": "Santakitzi na Nevis"
+ },
+ "LC": {
+ "name": "Santalusia"
+ },
+ "SX": {
+ "name": "Santamatini"
+ },
+ "PM": {
+ "name": "Santapieri na Mikeloni"
+ },
+ "VC": {
+ "name": "Santavisenti na Grenadini"
+ },
+ "ST": {
+ "name": "São Tomé na Príncipe"
+ },
+ "SA": {
+ "name": "Saudi"
+ },
+ "SN": {
+ "name": "Senegali"
+ },
+ "RS": {
+ "name": "Serbia"
+ },
+ "SC": {
+ "name": "Shelisheli"
+ },
+ "SL": {
+ "name": "Siera Leoni"
+ },
+ "SG": {
+ "name": "Singapoo"
+ },
+ "SY": {
+ "name": "Siria"
+ },
+ "LK": {
+ "name": "Sirilanka"
+ },
+ "SK": {
+ "name": "Slovakia"
+ },
+ "SI": {
+ "name": "Slovenia"
+ },
+ "SO": {
+ "name": "Somalia"
+ },
+ "SD": {
+ "name": "Sudani"
+ },
+ "SS": {
+ "name": "Sudani Kusini"
+ },
+ "SR": {
+ "name": "Surinamu"
+ },
+ "SJ": {
+ "name": "Svalbard na Jan Mayen"
+ },
+ "TH": {
+ "name": "Tailandi"
+ },
+ "TW": {
+ "name": "Taiwani"
+ },
+ "TJ": {
+ "name": "Tajikistani"
+ },
+ "TZ": {
+ "name": "Tanzania"
+ },
+ "TL": {
+ "name": "Timor ya Mashariki"
+ },
+ "TG": {
+ "name": "Togo"
+ },
+ "TK": {
+ "name": "Tokelau"
+ },
+ "TO": {
+ "name": "Tonga"
+ },
+ "TT": {
+ "name": "Trinidad na Tobago"
+ },
+ "TA": {
+ "name": "Tristan da Cunha"
+ },
+ "TN": {
+ "name": "Tunisia"
+ },
+ "TM": {
+ "name": "Turukimenistani"
+ },
+ "TV": {
+ "name": "Tuvalu"
+ },
+ "BE": {
+ "name": "Ubelgiji"
+ },
+ "FR": {
+ "name": "Ufaransa"
+ },
+ "FI": {
+ "name": "Ufini"
+ },
+ "UG": {
+ "name": "Uganda"
+ },
+ "GR": {
+ "name": "Ugiriki"
+ },
+ "ET": {
+ "name": "Uhabeshi"
+ },
+ "NL": {
+ "name": "Uholanzi"
+ },
+ "BQ": {
+ "name": "Uholanzi ya Karibiani"
+ },
+ "GB": {
+ "name": "Uingereza"
+ },
+ "DE": {
+ "name": "Ujerumani"
+ },
+ "UA": {
+ "name": "Ukraini"
+ },
+ "PT": {
+ "name": "Ureno"
+ },
+ "UY": {
+ "name": "Urugwai"
+ },
+ "RU": {
+ "name": "Urusi"
+ },
+ "SZ": {
+ "name": "Uswazi"
+ },
+ "SE": {
+ "name": "Uswidi"
+ },
+ "CH": {
+ "name": "Uswisi"
+ },
+ "TR": {
+ "name": "Uturuki"
+ },
+ "UZ": {
+ "name": "Uzibekistani"
+ },
+ "VU": {
+ "name": "Vanuatu"
+ },
+ "VA": {
+ "name": "Vatikani"
+ },
+ "VE": {
+ "name": "Venezuela"
+ },
+ "VN": {
+ "name": "Vietinamu"
+ },
+ "UM": {
+ "name": "Visiwa Vidogo vya Nje vya Marekani"
+ },
+ "AX": {
+ "name": "Visiwa vya Alandi"
+ },
+ "CC": {
+ "name": "Visiwa vya Cocos (Keeling)"
+ },
+ "CK": {
+ "name": "Visiwa vya Cook"
+ },
+ "FK": {
+ "name": "Visiwa vya Falkland"
+ },
+ "FO": {
+ "name": "Visiwa vya Faroe"
+ },
+ "IC": {
+ "name": "Visiwa vya Kanari"
+ },
+ "KY": {
+ "name": "Visiwa vya Kayman"
+ },
+ "MP": {
+ "name": "Visiwa vya Mariana vya Kaskazini"
+ },
+ "MH": {
+ "name": "Visiwa vya Marshal"
+ },
+ "SB": {
+ "name": "Visiwa vya Solomon"
+ },
+ "TC": {
+ "name": "Visiwa vya Turki na Kaiko"
+ },
+ "VI": {
+ "name": "Visiwa vya Virgin vya Marekani"
+ },
+ "VG": {
+ "name": "Visiwa vya Virgin vya Uingereza"
+ },
+ "WF": {
+ "name": "Walis na Futuna"
+ },
+ "YE": {
+ "name": "Yemeni"
+ },
+ "JO": {
+ "name": "Yordani"
+ },
+ "ZM": {
+ "name": "Zambia"
+ },
+ "ZW": {
+ "name": "Zimbabwe"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/country/swc.json b/library/intl/resources/country/swc.json
new file mode 100644
index 000000000..e57db8007
--- /dev/null
+++ b/library/intl/resources/country/swc.json
@@ -0,0 +1,761 @@
+{
+ "ZA": {
+ "name": "Afrika Kusini"
+ },
+ "AF": {
+ "name": "Afuganistani"
+ },
+ "IS": {
+ "name": "Aislandi"
+ },
+ "AR": {
+ "name": "Ajentina"
+ },
+ "AX": {
+ "name": "Ã…land Islands"
+ },
+ "AL": {
+ "name": "Albania"
+ },
+ "DZ": {
+ "name": "Aljeria"
+ },
+ "AD": {
+ "name": "Andora"
+ },
+ "AO": {
+ "name": "Angola"
+ },
+ "AI": {
+ "name": "Anguilla"
+ },
+ "AQ": {
+ "name": "Antarctica"
+ },
+ "AG": {
+ "name": "Antigua na Barbuda"
+ },
+ "AM": {
+ "name": "Armenia"
+ },
+ "AW": {
+ "name": "Aruba"
+ },
+ "AC": {
+ "name": "Ascension Island"
+ },
+ "AU": {
+ "name": "Australia"
+ },
+ "AT": {
+ "name": "Austria"
+ },
+ "IE": {
+ "name": "Ayalandi"
+ },
+ "AZ": {
+ "name": "Azabajani"
+ },
+ "BB": {
+ "name": "Babadosi"
+ },
+ "BS": {
+ "name": "Bahama"
+ },
+ "BH": {
+ "name": "Bahareni"
+ },
+ "BD": {
+ "name": "Bangladeshi"
+ },
+ "BY": {
+ "name": "Belarusi"
+ },
+ "BZ": {
+ "name": "Belize"
+ },
+ "BJ": {
+ "name": "Benini"
+ },
+ "BM": {
+ "name": "Bermuda"
+ },
+ "BO": {
+ "name": "Bolivia"
+ },
+ "BA": {
+ "name": "Bosnia na Hezegovina"
+ },
+ "BW": {
+ "name": "Botswana"
+ },
+ "BR": {
+ "name": "Brazili"
+ },
+ "BN": {
+ "name": "Brunei"
+ },
+ "BF": {
+ "name": "Bukinafaso"
+ },
+ "MG": {
+ "name": "Bukini"
+ },
+ "BG": {
+ "name": "Bulgaria"
+ },
+ "BI": {
+ "name": "Burundi"
+ },
+ "BT": {
+ "name": "Butani"
+ },
+ "IC": {
+ "name": "Canary Islands"
+ },
+ "BQ": {
+ "name": "Caribbean Netherlands"
+ },
+ "EA": {
+ "name": "Ceuta & Melilla"
+ },
+ "TD": {
+ "name": "Chadi"
+ },
+ "CL": {
+ "name": "Chile"
+ },
+ "CN": {
+ "name": "China"
+ },
+ "CX": {
+ "name": "Christmas Island"
+ },
+ "CC": {
+ "name": "Cocos (Keeling) Islands"
+ },
+ "CW": {
+ "name": "Curaçao"
+ },
+ "DK": {
+ "name": "Denmaki"
+ },
+ "DG": {
+ "name": "Diego Garcia"
+ },
+ "DM": {
+ "name": "Dominika"
+ },
+ "EC": {
+ "name": "Ekwado"
+ },
+ "SV": {
+ "name": "Elsavado"
+ },
+ "IO": {
+ "name": "Eneo la Uingereza katika Bahari Hindi"
+ },
+ "ER": {
+ "name": "Eritrea"
+ },
+ "EE": {
+ "name": "Estonia"
+ },
+ "AE": {
+ "name": "Falme za Kiarabu"
+ },
+ "FO": {
+ "name": "Faroe Islands"
+ },
+ "FJ": {
+ "name": "Fiji"
+ },
+ "PH": {
+ "name": "Filipino"
+ },
+ "TF": {
+ "name": "French Southern Territories"
+ },
+ "GA": {
+ "name": "Gaboni"
+ },
+ "GM": {
+ "name": "Gambia"
+ },
+ "GH": {
+ "name": "Ghana"
+ },
+ "GN": {
+ "name": "Gine"
+ },
+ "GW": {
+ "name": "Ginebisau"
+ },
+ "GQ": {
+ "name": "Ginekweta"
+ },
+ "GD": {
+ "name": "Grenada"
+ },
+ "GL": {
+ "name": "Grinlandi"
+ },
+ "GG": {
+ "name": "Guernsey"
+ },
+ "GY": {
+ "name": "Guyana"
+ },
+ "GP": {
+ "name": "Gwadelupe"
+ },
+ "GU": {
+ "name": "Gwam"
+ },
+ "GT": {
+ "name": "Gwatemala"
+ },
+ "GF": {
+ "name": "Gwiyana ya Ufaransa"
+ },
+ "HT": {
+ "name": "Haiti"
+ },
+ "ES": {
+ "name": "Hispania"
+ },
+ "HN": {
+ "name": "Hondurasi"
+ },
+ "HK": {
+ "name": "Hong Kong SAR China"
+ },
+ "HU": {
+ "name": "Hungaria"
+ },
+ "IN": {
+ "name": "India"
+ },
+ "ID": {
+ "name": "Indonesia"
+ },
+ "IQ": {
+ "name": "Iraki"
+ },
+ "IM": {
+ "name": "Isle of Man"
+ },
+ "IL": {
+ "name": "Israeli"
+ },
+ "IT": {
+ "name": "Italia"
+ },
+ "JM": {
+ "name": "Jamaika"
+ },
+ "CF": {
+ "name": "Jamhuri ya Afrika ya Kati"
+ },
+ "CZ": {
+ "name": "Jamhuri ya Cheki"
+ },
+ "DO": {
+ "name": "Jamhuri ya Dominika"
+ },
+ "CD": {
+ "name": "Jamhuri ya Kidemokrasia ya Kongo"
+ },
+ "JP": {
+ "name": "Japani"
+ },
+ "JE": {
+ "name": "Jersey"
+ },
+ "GI": {
+ "name": "Jibralta"
+ },
+ "DJ": {
+ "name": "Jibuti"
+ },
+ "GE": {
+ "name": "Jojia"
+ },
+ "KH": {
+ "name": "Kambodia"
+ },
+ "CM": {
+ "name": "Kameruni"
+ },
+ "CA": {
+ "name": "Kanada"
+ },
+ "QA": {
+ "name": "Katari"
+ },
+ "KZ": {
+ "name": "Kazakistani"
+ },
+ "KE": {
+ "name": "Kenya"
+ },
+ "CV": {
+ "name": "Kepuvede"
+ },
+ "KI": {
+ "name": "Kiribati"
+ },
+ "KG": {
+ "name": "Kirigizistani"
+ },
+ "NF": {
+ "name": "Kisiwa cha Norfok"
+ },
+ "CI": {
+ "name": "Kodivaa"
+ },
+ "CO": {
+ "name": "Kolombia"
+ },
+ "KM": {
+ "name": "Komoro"
+ },
+ "CG": {
+ "name": "Kongo"
+ },
+ "HR": {
+ "name": "Korasia"
+ },
+ "KP": {
+ "name": "Korea Kaskazini"
+ },
+ "KR": {
+ "name": "Korea Kusini"
+ },
+ "XK": {
+ "name": "Kosovo"
+ },
+ "CR": {
+ "name": "Kostarika"
+ },
+ "CU": {
+ "name": "Kuba"
+ },
+ "CY": {
+ "name": "Kuprosi"
+ },
+ "KW": {
+ "name": "Kuwaiti"
+ },
+ "LA": {
+ "name": "Laosi"
+ },
+ "LU": {
+ "name": "Lasembagi"
+ },
+ "LV": {
+ "name": "Lativia"
+ },
+ "LB": {
+ "name": "Lebanoni"
+ },
+ "LS": {
+ "name": "Lesoto"
+ },
+ "LR": {
+ "name": "Liberia"
+ },
+ "LY": {
+ "name": "Libya"
+ },
+ "LI": {
+ "name": "Lishenteni"
+ },
+ "LT": {
+ "name": "Litwania"
+ },
+ "MO": {
+ "name": "Macau SAR China"
+ },
+ "MW": {
+ "name": "Malawi"
+ },
+ "MY": {
+ "name": "Malesia"
+ },
+ "ML": {
+ "name": "Mali"
+ },
+ "MT": {
+ "name": "Malta"
+ },
+ "US": {
+ "name": "Marekani"
+ },
+ "MQ": {
+ "name": "Martiniki"
+ },
+ "MK": {
+ "name": "Masedonia"
+ },
+ "YT": {
+ "name": "Mayotte"
+ },
+ "MX": {
+ "name": "Meksiko"
+ },
+ "FM": {
+ "name": "Mikronesia"
+ },
+ "EG": {
+ "name": "Misri"
+ },
+ "MV": {
+ "name": "Modivu"
+ },
+ "MD": {
+ "name": "Moldova"
+ },
+ "MC": {
+ "name": "Monako"
+ },
+ "MN": {
+ "name": "Mongolia"
+ },
+ "ME": {
+ "name": "Montenegro"
+ },
+ "MS": {
+ "name": "Montserrati"
+ },
+ "MU": {
+ "name": "Morisi"
+ },
+ "MR": {
+ "name": "Moritania"
+ },
+ "MA": {
+ "name": "Moroko"
+ },
+ "MZ": {
+ "name": "Msumbiji"
+ },
+ "MM": {
+ "name": "Myama"
+ },
+ "NA": {
+ "name": "Namibia"
+ },
+ "NR": {
+ "name": "Nauru"
+ },
+ "NP": {
+ "name": "Nepali"
+ },
+ "NE": {
+ "name": "Nijeri"
+ },
+ "NG": {
+ "name": "Nijeria"
+ },
+ "NI": {
+ "name": "Nikaragwa"
+ },
+ "NU": {
+ "name": "Niue"
+ },
+ "NO": {
+ "name": "Norwe"
+ },
+ "NC": {
+ "name": "Nyukaledonia"
+ },
+ "NZ": {
+ "name": "Nyuzilandi"
+ },
+ "OM": {
+ "name": "Omani"
+ },
+ "PK": {
+ "name": "Pakistani"
+ },
+ "PW": {
+ "name": "Palau"
+ },
+ "PA": {
+ "name": "Panama"
+ },
+ "PG": {
+ "name": "Papua"
+ },
+ "PY": {
+ "name": "Paragwai"
+ },
+ "PE": {
+ "name": "Peru"
+ },
+ "PN": {
+ "name": "Pitkairni"
+ },
+ "PL": {
+ "name": "Polandi"
+ },
+ "PF": {
+ "name": "Polinesia ya Ufaransa"
+ },
+ "PR": {
+ "name": "Pwetoriko"
+ },
+ "RE": {
+ "name": "Riyunioni"
+ },
+ "RO": {
+ "name": "Romania"
+ },
+ "RW": {
+ "name": "Rwanda"
+ },
+ "SM": {
+ "name": "Samarino"
+ },
+ "WS": {
+ "name": "Samoa"
+ },
+ "AS": {
+ "name": "Samoa ya Marekani"
+ },
+ "SH": {
+ "name": "Santahelena"
+ },
+ "KN": {
+ "name": "Santakitzi na Nevis"
+ },
+ "LC": {
+ "name": "Santalusia"
+ },
+ "PM": {
+ "name": "Santapieri na Mikeloni"
+ },
+ "VC": {
+ "name": "Santavisenti na Grenadini"
+ },
+ "ST": {
+ "name": "Sao Tome na Principe"
+ },
+ "SA": {
+ "name": "Saudi"
+ },
+ "SN": {
+ "name": "Senegali"
+ },
+ "RS": {
+ "name": "Serbia"
+ },
+ "SC": {
+ "name": "Shelisheli"
+ },
+ "SL": {
+ "name": "Siera Leoni"
+ },
+ "SG": {
+ "name": "Singapoo"
+ },
+ "SX": {
+ "name": "Sint Maarten"
+ },
+ "SY": {
+ "name": "Siria"
+ },
+ "LK": {
+ "name": "Sirilanka"
+ },
+ "SK": {
+ "name": "Slovakia"
+ },
+ "SI": {
+ "name": "Slovenia"
+ },
+ "SO": {
+ "name": "Somalia"
+ },
+ "GS": {
+ "name": "South Georgia & South Sandwich Islands"
+ },
+ "SS": {
+ "name": "South Sudan"
+ },
+ "BL": {
+ "name": "St. Barthélemy"
+ },
+ "MF": {
+ "name": "St. Martin"
+ },
+ "SD": {
+ "name": "Sudani"
+ },
+ "SR": {
+ "name": "Surinamu"
+ },
+ "SJ": {
+ "name": "Svalbard & Jan Mayen"
+ },
+ "TH": {
+ "name": "Tailandi"
+ },
+ "TW": {
+ "name": "Taiwani"
+ },
+ "TJ": {
+ "name": "Tajikistani"
+ },
+ "TZ": {
+ "name": "Tanzania"
+ },
+ "TL": {
+ "name": "Timori ya Mashariki"
+ },
+ "TG": {
+ "name": "Togo"
+ },
+ "TK": {
+ "name": "Tokelau"
+ },
+ "TO": {
+ "name": "Tonga"
+ },
+ "TT": {
+ "name": "Trinidad na Tobago"
+ },
+ "TA": {
+ "name": "Tristan da Cunha"
+ },
+ "TN": {
+ "name": "Tunisia"
+ },
+ "TM": {
+ "name": "Turukimenistani"
+ },
+ "TV": {
+ "name": "Tuvalu"
+ },
+ "UM": {
+ "name": "U.S. Outlying Islands"
+ },
+ "IR": {
+ "name": "Uajemi"
+ },
+ "BE": {
+ "name": "Ubelgiji"
+ },
+ "FR": {
+ "name": "Ufaransa"
+ },
+ "FI": {
+ "name": "Ufini"
+ },
+ "UG": {
+ "name": "Uganda"
+ },
+ "GR": {
+ "name": "Ugiriki"
+ },
+ "ET": {
+ "name": "Uhabeshi"
+ },
+ "NL": {
+ "name": "Uholanzi"
+ },
+ "GB": {
+ "name": "Uingereza"
+ },
+ "DE": {
+ "name": "Ujerumani"
+ },
+ "PS": {
+ "name": "Ukingo wa Magharibi na Ukanda wa Gaza wa Palestina"
+ },
+ "UA": {
+ "name": "Ukraini"
+ },
+ "PT": {
+ "name": "Ureno"
+ },
+ "UY": {
+ "name": "Urugwai"
+ },
+ "RU": {
+ "name": "Urusi"
+ },
+ "SZ": {
+ "name": "Uswazi"
+ },
+ "SE": {
+ "name": "Uswidi"
+ },
+ "CH": {
+ "name": "Uswisi"
+ },
+ "TR": {
+ "name": "Uturuki"
+ },
+ "UZ": {
+ "name": "Uzibekistani"
+ },
+ "VU": {
+ "name": "Vanuatu"
+ },
+ "VA": {
+ "name": "Vatikani"
+ },
+ "VE": {
+ "name": "Venezuela"
+ },
+ "VN": {
+ "name": "Vietinamu"
+ },
+ "CK": {
+ "name": "Visiwa vya Cook"
+ },
+ "FK": {
+ "name": "Visiwa vya Falkland"
+ },
+ "KY": {
+ "name": "Visiwa vya Kayman"
+ },
+ "MP": {
+ "name": "Visiwa vya Mariana vya Kaskazini"
+ },
+ "MH": {
+ "name": "Visiwa vya Marshal"
+ },
+ "SB": {
+ "name": "Visiwa vya Solomon"
+ },
+ "TC": {
+ "name": "Visiwa vya Turki na Kaiko"
+ },
+ "VI": {
+ "name": "Visiwa vya Virgin vya Marekani"
+ },
+ "VG": {
+ "name": "Visiwa vya Virgin vya Uingereza"
+ },
+ "WF": {
+ "name": "Walis na Futuna"
+ },
+ "EH": {
+ "name": "Western Sahara"
+ },
+ "YE": {
+ "name": "Yemeni"
+ },
+ "JO": {
+ "name": "Yordani"
+ },
+ "ZM": {
+ "name": "Zambia"
+ },
+ "ZW": {
+ "name": "Zimbabwe"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/country/ta.json b/library/intl/resources/country/ta.json
new file mode 100644
index 000000000..611ae6d63
--- /dev/null
+++ b/library/intl/resources/country/ta.json
@@ -0,0 +1,761 @@
+{
+ "AI": {
+ "name": "à®…à®™à¯à®•à¯à®¯à¯à®²à®¾"
+ },
+ "AO": {
+ "name": "à®…à®™à¯à®•à¯‹à®²à®¾"
+ },
+ "AZ": {
+ "name": "அசரà¯à®ªà¯ˆà®œà®¾à®©à¯"
+ },
+ "AQ": {
+ "name": "அணà¯à®Ÿà®¾à®°à¯à®Ÿà®¿à®•à®¾"
+ },
+ "AS": {
+ "name": "அமெரிகà¯à®• சமோவா"
+ },
+ "US": {
+ "name": "அமெரிகà¯à®•à®¾"
+ },
+ "IE": {
+ "name": "அயரà¯à®²à®¾à®¨à¯à®¤à¯"
+ },
+ "AR": {
+ "name": "à®…à®°à¯à®œà¯†à®©à¯à®Ÿà®¿à®©à®¾"
+ },
+ "AW": {
+ "name": "அரூபா"
+ },
+ "AL": {
+ "name": "அலà¯à®ªà¯‡à®©à®¿à®¯à®¾"
+ },
+ "DZ": {
+ "name": "அலà¯à®œà¯€à®°à®¿à®¯à®¾"
+ },
+ "AD": {
+ "name": "அனà¯à®Ÿà¯‹à®°à®¾"
+ },
+ "AC": {
+ "name": "அஷனà¯à®·à®¿à®¯à®©à¯ தீவà¯"
+ },
+ "AG": {
+ "name": "ஆணà¯à®Ÿà®¿à®•à¯à®µà®¾ மறà¯à®±à¯à®®à¯ பாரà¯à®ªà¯à®Ÿà®¾"
+ },
+ "AF": {
+ "name": "ஆபà¯à®•à®¾à®©à®¿à®¸à¯à®¤à®¾à®©à¯"
+ },
+ "AM": {
+ "name": "ஆரà¯à®®à¯‡à®©à®¿à®¯à®¾"
+ },
+ "AX": {
+ "name": "ஆலநà¯à®¤à¯ தீவà¯à®•à®³à¯"
+ },
+ "AT": {
+ "name": "ஆஸà¯à®¤à®¿à®°à®¿à®¯à®¾"
+ },
+ "AU": {
+ "name": "ஆஸà¯à®¤à®¿à®°à¯‡à®²à®¿à®¯à®¾"
+ },
+ "IT": {
+ "name": "இதà¯à®¤à®¾à®²à®¿"
+ },
+ "IN": {
+ "name": "இநà¯à®¤à®¿à®¯à®¾"
+ },
+ "ID": {
+ "name": "இநà¯à®¤à¯‹à®©à¯‡à®·à®¿à®¯à®¾"
+ },
+ "LK": {
+ "name": "இலஙà¯à®•à¯ˆ"
+ },
+ "IL": {
+ "name": "இஸà¯à®°à¯‡à®²à¯"
+ },
+ "GQ": {
+ "name": "ஈகà¯à®•à¯à®µà®¾à®Ÿà¯‹à®°à®¿à®¯à®²à¯ கினியா"
+ },
+ "EC": {
+ "name": "ஈகà¯à®µà®Ÿà®¾à®°à¯"
+ },
+ "IQ": {
+ "name": "ஈராகà¯"
+ },
+ "IR": {
+ "name": "ஈரானà¯"
+ },
+ "UA": {
+ "name": "உகà¯à®°à¯ˆà®©à¯"
+ },
+ "UG": {
+ "name": "உகாணà¯à®Ÿà®¾"
+ },
+ "UY": {
+ "name": "உரà¯à®•à¯à®µà¯‡"
+ },
+ "UZ": {
+ "name": "உஸà¯à®ªà¯†à®•à®¿à®¸à¯à®¤à®¾à®©à¯"
+ },
+ "EG": {
+ "name": "எகிபà¯à®¤à¯"
+ },
+ "ET": {
+ "name": "எதியோபà¯à®ªà®¿à®¯à®¾"
+ },
+ "ER": {
+ "name": "எரிடà¯à®°à®¿à®¯à®¾"
+ },
+ "SV": {
+ "name": "எல௠சாலà¯à®µà®Ÿà®¾à®°à¯"
+ },
+ "EE": {
+ "name": "எஸà¯à®Ÿà¯‹à®©à®¿à®¯à®¾"
+ },
+ "YE": {
+ "name": "à®à®®à®©à¯"
+ },
+ "AE": {
+ "name": "à®à®•à¯à®•à®¿à®¯ அரப௠எமிரேடà¯à®¸à¯"
+ },
+ "GB": {
+ "name": "à®à®•à¯à®•à®¿à®¯ பேரரசà¯"
+ },
+ "IM": {
+ "name": "à®à®²à¯ ஆஃப௠மேனà¯"
+ },
+ "IS": {
+ "name": "à®à®¸à¯à®²à®¾à®¨à¯à®¤à¯"
+ },
+ "OM": {
+ "name": "ஓமனà¯"
+ },
+ "FK": {
+ "name": "ஃபாகà¯à®²à®¾à®¨à¯à®¤à¯ தீவà¯à®•à®³à¯"
+ },
+ "FO": {
+ "name": "ஃபாரோ தீவà¯à®•à®³à¯"
+ },
+ "FJ": {
+ "name": "ஃபிஜி"
+ },
+ "GP": {
+ "name": "கà¯à®µà®¾à®¤à¯‡à®²à¯‹à®ªà¯"
+ },
+ "QA": {
+ "name": "கதà¯à®¤à®¾à®°à¯"
+ },
+ "KH": {
+ "name": "கமà¯à®ªà¯‹à®Ÿà®¿à®¯à®¾"
+ },
+ "GY": {
+ "name": "கயானா"
+ },
+ "BQ": {
+ "name": "கரீபியன௠நெதரà¯à®²à®¾à®¨à¯à®¤à¯"
+ },
+ "GT": {
+ "name": "கவà¯à®¤à®®à®¾à®²à®¾"
+ },
+ "CA": {
+ "name": "கனடா"
+ },
+ "KZ": {
+ "name": "கஸகஸà¯à®¤à®¾à®©à¯"
+ },
+ "CD": {
+ "name": "காஙà¯à®•à¯‹ - கினà¯à®·à®¾à®šà®¾"
+ },
+ "CG": {
+ "name": "காஙà¯à®•à¯‹ - பà¯à®°à®¾à®¸à®¾à®µà®¿à®²à¯à®²à¯‡"
+ },
+ "GM": {
+ "name": "காமà¯à®ªà®¿à®¯à®¾"
+ },
+ "GH": {
+ "name": "கானா"
+ },
+ "CU": {
+ "name": "கியூபா"
+ },
+ "KG": {
+ "name": "கிரà¯à®•à®¿à®¸à¯à®¤à®¾à®©à¯"
+ },
+ "GD": {
+ "name": "கிரனெடா"
+ },
+ "KI": {
+ "name": "கிரிபடி"
+ },
+ "GL": {
+ "name": "கிரீனà¯à®²à®¾à®¨à¯à®¤à¯"
+ },
+ "GR": {
+ "name": "கிரீஸà¯"
+ },
+ "CX": {
+ "name": "கிறிஸà¯à®¤à¯à®®à®¸à¯ தீவà¯"
+ },
+ "GW": {
+ "name": "கினி-பிஸà¯à®¸à®¾à®µà¯"
+ },
+ "GN": {
+ "name": "கினியா"
+ },
+ "CK": {
+ "name": "கà¯à®•à¯ தீவà¯à®•à®³à¯"
+ },
+ "CW": {
+ "name": "கà¯à®°à®¾à®•à®µà¯"
+ },
+ "HR": {
+ "name": "கà¯à®°à¯‹à®šà®¿à®¯à®¾"
+ },
+ "GU": {
+ "name": "கà¯à®µà®¾à®®à¯"
+ },
+ "KW": {
+ "name": "கà¯à®µà¯ˆà®¤à¯"
+ },
+ "GG": {
+ "name": "கெரà¯à®©à¯à®šà®¿"
+ },
+ "KE": {
+ "name": "கெனà¯à®¯à®¾"
+ },
+ "CV": {
+ "name": "கேப௠வெரà¯à®Ÿà¯‡"
+ },
+ "GA": {
+ "name": "கேபானà¯"
+ },
+ "CM": {
+ "name": "கேமரூனà¯"
+ },
+ "KY": {
+ "name": "கேமென௠தீவà¯à®•à®³à¯"
+ },
+ "IC": {
+ "name": "கேனரி தீவà¯à®•à®³à¯"
+ },
+ "XK": {
+ "name": "கொசோவோ"
+ },
+ "CO": {
+ "name": "கொலமà¯à®ªà®¿à®¯à®¾"
+ },
+ "CC": {
+ "name": "கோகோஸ௠(கீலிஙà¯) தீவà¯à®•à®³à¯"
+ },
+ "CI": {
+ "name": "கோட௠தி’வாயரà¯"
+ },
+ "KM": {
+ "name": "கோமரோஸà¯"
+ },
+ "CR": {
+ "name": "கோஸà¯à®Ÿà®¾à®°à®¿à®•à®¾"
+ },
+ "WS": {
+ "name": "சமோவா"
+ },
+ "SA": {
+ "name": "சவூதி அரேபியா"
+ },
+ "TD": {
+ "name": "சாடà¯"
+ },
+ "SB": {
+ "name": "சாலமன௠தீவà¯à®•à®³à¯"
+ },
+ "ST": {
+ "name": "சாவ௠தோம௠மறà¯à®±à¯à®®à¯ பà¯à®°à®¿à®©à¯à®šà®¿à®ªà®¿"
+ },
+ "SM": {
+ "name": "சான௠மெரினோ"
+ },
+ "SG": {
+ "name": "சிஙà¯à®•à®ªà¯à®ªà¯‚à®°à¯"
+ },
+ "SL": {
+ "name": "சியரà¯à®°à®¾ லியோனà¯"
+ },
+ "EA": {
+ "name": "சியூடா மறà¯à®±à¯à®®à¯ மெலிலà¯à®²à®¾"
+ },
+ "SY": {
+ "name": "சிரியா"
+ },
+ "CL": {
+ "name": "சிலி"
+ },
+ "SX": {
+ "name": "சினà¯à®Ÿà¯ மாரà¯à®Ÿà¯†à®©à¯"
+ },
+ "CN": {
+ "name": "சீனா"
+ },
+ "SR": {
+ "name": "சà¯à®°à®¿à®©à®¾à®®à¯"
+ },
+ "SD": {
+ "name": "சூடானà¯"
+ },
+ "CZ": {
+ "name": "செக௠கà¯à®Ÿà®¿à®¯à®°à®šà¯"
+ },
+ "KN": {
+ "name": "செயினà¯à®Ÿà¯ கிடà¯à®¸à¯ மறà¯à®±à¯à®®à¯ நெவிஸà¯"
+ },
+ "BL": {
+ "name": "செயினà¯à®Ÿà¯ பாரà¯à®¤à¯‡à®²à¯†à®®à®¿"
+ },
+ "PM": {
+ "name": "செயினà¯à®Ÿà¯ பியர௠மறà¯à®±à¯à®®à¯ மிகà¯à®µà¯‡à®²à®¾à®©à¯"
+ },
+ "MF": {
+ "name": "செயினà¯à®Ÿà¯ மாரà¯à®Ÿà¯à®Ÿà¯€à®©à¯"
+ },
+ "LC": {
+ "name": "செயினà¯à®Ÿà¯ லூசியா"
+ },
+ "VC": {
+ "name": "செயினà¯à®Ÿà¯ வினà¯à®šà¯†à®©à¯à®Ÿà¯ மறà¯à®±à¯à®®à¯ கிரெனடைனà¯à®¸à¯"
+ },
+ "SH": {
+ "name": "செயினà¯à®Ÿà¯ ஹெலெனா"
+ },
+ "RS": {
+ "name": "செரà¯à®ªà®¿à®¯à®¾"
+ },
+ "SN": {
+ "name": "செனெகலà¯"
+ },
+ "CY": {
+ "name": "சைபà¯à®°à®¸à¯"
+ },
+ "SO": {
+ "name": "சோமாலியா"
+ },
+ "TT": {
+ "name": "டà¯à®°à®¿à®©à®¿à®Ÿà®¾à®Ÿà¯ மறà¯à®±à¯à®®à¯ டà¯à®ªà®¾à®•à¯‹"
+ },
+ "TC": {
+ "name": "டரà¯à®•à¯à®¸à¯ மறà¯à®±à¯à®®à¯ கைகோஸ௠தீவà¯à®•à®³à¯"
+ },
+ "DG": {
+ "name": "டியகோ காரà¯à®·à®¿à®¯à®¾"
+ },
+ "TA": {
+ "name": "டிரிஸà¯à®Ÿà®©à¯ டா கà¯à®©à¯à®¹à®¾"
+ },
+ "TN": {
+ "name": "டà¯à®©à®¿à®šà®¿à®¯à®¾"
+ },
+ "DK": {
+ "name": "டெனà¯à®®à®¾à®°à¯à®•à¯"
+ },
+ "DO": {
+ "name": "டொமினிகன௠கà¯à®Ÿà®¿à®¯à®°à®šà¯"
+ },
+ "DM": {
+ "name": "டொமினிகா"
+ },
+ "TK": {
+ "name": "டோகேலோ"
+ },
+ "TG": {
+ "name": "டோகோ"
+ },
+ "TO": {
+ "name": "டோஙà¯à®•à®¾"
+ },
+ "TH": {
+ "name": "தாயà¯à®²à®¾à®¨à¯à®¤à¯"
+ },
+ "TZ": {
+ "name": "தானà¯à®šà®¾à®©à®¿à®¯à®¾"
+ },
+ "TJ": {
+ "name": "தாஜிகிஸà¯à®¤à®¾à®©à¯"
+ },
+ "TM": {
+ "name": "தà¯à®°à¯à®•à¯à®®à¯†à®©à®¿à®¸à¯à®¤à®¾à®©à¯"
+ },
+ "TR": {
+ "name": "தà¯à®°à¯à®•à¯à®•à®¿"
+ },
+ "TV": {
+ "name": "தà¯à®µà®¾à®²à¯‚"
+ },
+ "SS": {
+ "name": "தெறà¯à®•à¯ சூடானà¯"
+ },
+ "ZA": {
+ "name": "தென௠ஆபà¯à®ªà®¿à®°à®¿à®•à¯à®•à®¾"
+ },
+ "KR": {
+ "name": "தென௠கொரியா"
+ },
+ "GS": {
+ "name": "தென௠ஜியாரà¯à®œà®¿à®¯à®¾ மறà¯à®±à¯à®®à¯ தென௠சானà¯à®Ÿà¯à®µà®¿à®šà¯ தீவà¯à®•à®³à¯"
+ },
+ "TL": {
+ "name": "தைமூரà¯-லெஸà¯à®¤à¯‡"
+ },
+ "TW": {
+ "name": "தைவானà¯"
+ },
+ "NA": {
+ "name": "நமீபியா"
+ },
+ "NF": {
+ "name": "நாரà¯à®ƒà®ªà®¾à®•à¯ தீவà¯à®•à®³à¯"
+ },
+ "NO": {
+ "name": "நாரà¯à®µà¯‡"
+ },
+ "NI": {
+ "name": "நிகரகà¯à®µà®¾"
+ },
+ "NU": {
+ "name": "நியூ"
+ },
+ "NC": {
+ "name": "நியூ கேலிடோனியா"
+ },
+ "NZ": {
+ "name": "நியூசிலாநà¯à®¤à¯"
+ },
+ "NL": {
+ "name": "நெதரà¯à®²à®¾à®¨à¯à®¤à¯"
+ },
+ "NP": {
+ "name": "நேபாளமà¯"
+ },
+ "NE": {
+ "name": "நைஜரà¯"
+ },
+ "NG": {
+ "name": "நைஜீரியா"
+ },
+ "NR": {
+ "name": "நௌரà¯"
+ },
+ "BD": {
+ "name": "பஙà¯à®•à®³à®¾à®¤à¯‡à®·à¯"
+ },
+ "PY": {
+ "name": "பராகà¯à®µà¯‡"
+ },
+ "BG": {
+ "name": "பலà¯à®•à¯‡à®°à®¿à®¯à®¾"
+ },
+ "PA": {
+ "name": "பனாமா"
+ },
+ "BH": {
+ "name": "பஹà¯à®°à¯ˆà®©à¯"
+ },
+ "BS": {
+ "name": "பஹாமாஸà¯"
+ },
+ "PK": {
+ "name": "பாகிஸà¯à®¤à®¾à®©à¯"
+ },
+ "PG": {
+ "name": "பாபà¯à®ªà¯à®µà®¾ நியூ கினி"
+ },
+ "BB": {
+ "name": "பாரà¯à®ªà®Ÿà¯‹à®¸à¯"
+ },
+ "PS": {
+ "name": "பாலஸà¯à®¤à¯€à®©à®¿à®¯ பிரதேசஙà¯à®•à®³à¯"
+ },
+ "PW": {
+ "name": "பாலோ"
+ },
+ "PN": {
+ "name": "பிடà¯à®•à¯†à®¯à¯à®°à¯à®©à¯ தீவà¯à®•à®³à¯"
+ },
+ "PR": {
+ "name": "பியூரà¯à®Ÿà¯‹ ரிகோ"
+ },
+ "FR": {
+ "name": "பிரானà¯à®¸à¯"
+ },
+ "IO": {
+ "name": "பிரிடà¯à®Ÿà®¿à®·à¯ இநà¯à®¤à®¿à®¯à®ªà¯ பெரà¯à®™à¯à®•à®Ÿà®²à¯ பிரதேசமà¯"
+ },
+ "VG": {
+ "name": "பிரிடà¯à®Ÿà¯€à®·à¯ கனà¯à®©à®¿à®¤à¯ தீவà¯à®•à®³à¯"
+ },
+ "GF": {
+ "name": "பிரெஞà¯à®šà¯ கயானா"
+ },
+ "TF": {
+ "name": "பிரெஞà¯à®šà¯ தெறà¯à®•à¯ பிரதேசஙà¯à®•à®³à¯"
+ },
+ "PF": {
+ "name": "பிரெஞà¯à®šà¯ பாலினேஷியா"
+ },
+ "BR": {
+ "name": "பிரேசிலà¯"
+ },
+ "PH": {
+ "name": "பிலிபà¯à®ªà¯ˆà®©à¯à®¸à¯"
+ },
+ "FI": {
+ "name": "பினà¯à®²à®¾à®¨à¯à®¤à¯"
+ },
+ "BF": {
+ "name": "பà¯à®°à¯à®•à®¿à®©à®¾ ஃபாஸோ"
+ },
+ "BI": {
+ "name": "பà¯à®°à¯à®£à¯à®Ÿà®¿"
+ },
+ "BN": {
+ "name": "பà¯à®°à¯‚னேயà¯"
+ },
+ "BT": {
+ "name": "பூடானà¯"
+ },
+ "BM": {
+ "name": "பெரà¯à®®à¯à®Ÿà®¾"
+ },
+ "PE": {
+ "name": "பெரà¯"
+ },
+ "BE": {
+ "name": "பெலà¯à®œà®¿à®¯à®®à¯"
+ },
+ "BY": {
+ "name": "பெலாரூஸà¯"
+ },
+ "BZ": {
+ "name": "பெலிஸà¯"
+ },
+ "BJ": {
+ "name": "பெனினà¯"
+ },
+ "BO": {
+ "name": "பொலிவியா"
+ },
+ "BW": {
+ "name": "போடà¯à®¸à¯à®µà®¾à®©à®¾"
+ },
+ "PT": {
+ "name": "போரà¯à®šà¯à®šà¯à®•à¯à®•à®²à¯"
+ },
+ "PL": {
+ "name": "போலநà¯à®¤à¯"
+ },
+ "BA": {
+ "name": "போஸà¯à®©à®¿à®¯à®¾ மறà¯à®±à¯à®®à¯ ஹெரà¯à®¸à®¿à®•à¯‹à®µà®¿à®©à®¾"
+ },
+ "MO": {
+ "name": "மகாவோ எஸà¯à®à®†à®°à¯ சீனா"
+ },
+ "MN": {
+ "name": "மஙà¯à®•à¯‹à®²à®¿à®¯à®¾"
+ },
+ "MG": {
+ "name": "மடகாஸà¯à®•à®°à¯"
+ },
+ "CF": {
+ "name": "மதà¯à®¤à®¿à®¯ ஆபà¯à®°à®¿à®•à¯à®•à®•à¯ கà¯à®Ÿà®¿à®¯à®°à®šà¯"
+ },
+ "YT": {
+ "name": "மயோதà¯"
+ },
+ "MY": {
+ "name": "மலேஷியா"
+ },
+ "MK": {
+ "name": "மாசிடோனியா"
+ },
+ "MQ": {
+ "name": "மாரà¯à®Ÿà®¿à®©à®¿à®•à¯"
+ },
+ "MH": {
+ "name": "மாரà¯à®·à®²à¯ தீவà¯à®•à®³à¯"
+ },
+ "MT": {
+ "name": "மாலà¯à®Ÿà®¾"
+ },
+ "MD": {
+ "name": "மாலà¯à®Ÿà¯‹à®µà®¾"
+ },
+ "MV": {
+ "name": "மாலதà¯à®¤à¯€à®µà¯"
+ },
+ "MW": {
+ "name": "மாலவி"
+ },
+ "ML": {
+ "name": "மாலி"
+ },
+ "ME": {
+ "name": "மானà¯à®Ÿà¯‡à®©à¯†à®•à¯à®°à¯‹"
+ },
+ "MM": {
+ "name": "மியானà¯à®®à®¾à®°à¯ (பரà¯à®®à®¾)"
+ },
+ "MX": {
+ "name": "மெகà¯à®šà®¿à®•à¯‹"
+ },
+ "EH": {
+ "name": "மேறà¯à®•à¯ சஹாரா"
+ },
+ "FM": {
+ "name": "மைகà¯à®°à¯‹à®©à¯‡à®·à®¿à®¯à®¾"
+ },
+ "MZ": {
+ "name": "மொசாமà¯à®ªà®¿à®•à¯"
+ },
+ "MA": {
+ "name": "மொராகà¯à®•à¯‹"
+ },
+ "MU": {
+ "name": "மொரிசியஸà¯"
+ },
+ "MC": {
+ "name": "மொனாகà¯à®•à¯‹"
+ },
+ "MR": {
+ "name": "மௌரிடானியா"
+ },
+ "MS": {
+ "name": "மௌனà¯à®Ÿà¯à®šà¯†à®°à®¾à®Ÿà¯"
+ },
+ "VI": {
+ "name": "யூ.எஸà¯. கனà¯à®©à®¿à®¤à¯ தீவà¯à®•à®³à¯"
+ },
+ "UM": {
+ "name": "யூஎஸ௠அவà¯à®Ÿà¯à®²à¯‡à®¯à®¿à®™à¯ தீவà¯à®•à®³à¯"
+ },
+ "RU": {
+ "name": "à®°à®·à¯à®¯à®¾"
+ },
+ "RE": {
+ "name": "ரீயூனியனà¯"
+ },
+ "RO": {
+ "name": "à®°à¯à®®à¯‡à®©à®¿à®¯à®¾"
+ },
+ "RW": {
+ "name": "à®°à¯à®µà®¾à®©à¯à®Ÿà®¾"
+ },
+ "LU": {
+ "name": "லகà¯à®¸à¯à®šà®®à¯à®ªà®°à¯à®•à¯"
+ },
+ "LV": {
+ "name": "லாடà¯à®µà®¿à®¯à®¾"
+ },
+ "LA": {
+ "name": "லாவோஸà¯"
+ },
+ "LI": {
+ "name": "லிசà¯à®šà¯†à®£à¯à®¸à¯à®Ÿà¯†à®¯à¯à®©à¯"
+ },
+ "LT": {
+ "name": "லிதà¯à®µà¯‡à®©à®¿à®¯à®¾"
+ },
+ "LY": {
+ "name": "லிபியா"
+ },
+ "LS": {
+ "name": "லெசோதோ"
+ },
+ "LB": {
+ "name": "லெபனானà¯"
+ },
+ "LR": {
+ "name": "லைபீரியா"
+ },
+ "KP": {
+ "name": "வட கொரியா"
+ },
+ "MP": {
+ "name": "வடகà¯à®•à¯ மரியானா தீவà¯à®•à®³à¯"
+ },
+ "VU": {
+ "name": "வனà¯à®µà®¾à®Ÿà¯à®Ÿà¯"
+ },
+ "VA": {
+ "name": "வாடிகன௠நகரமà¯"
+ },
+ "WF": {
+ "name": "வாலிஸ௠மறà¯à®±à¯à®®à¯ ஃபà¯à®Ÿà¯à®©à®¾"
+ },
+ "VN": {
+ "name": "வியடà¯à®¨à®¾à®®à¯"
+ },
+ "VE": {
+ "name": "வெனிசà¯à®²à®¾"
+ },
+ "JP": {
+ "name": "ஜபà¯à®ªà®¾à®©à¯"
+ },
+ "JM": {
+ "name": "ஜமைகா"
+ },
+ "ZM": {
+ "name": "ஜாமà¯à®ªà®¿à®¯à®¾"
+ },
+ "GE": {
+ "name": "ஜாரà¯à®œà®¿à®¯à®¾"
+ },
+ "GI": {
+ "name": "ஜிபà¯à®°à®¾à®²à¯à®Ÿà®°à¯"
+ },
+ "DJ": {
+ "name": "ஜிபௌடà¯à®Ÿà®¿"
+ },
+ "ZW": {
+ "name": "ஜிமà¯à®ªà®¾à®ªà¯à®µà¯‡"
+ },
+ "JE": {
+ "name": "ஜெரà¯à®šà®¿"
+ },
+ "DE": {
+ "name": "ஜெரà¯à®®à®©à®¿"
+ },
+ "JO": {
+ "name": "ஜோரà¯à®Ÿà®¾à®©à¯"
+ },
+ "ES": {
+ "name": "ஸà¯à®ªà¯†à®¯à®¿à®©à¯"
+ },
+ "SK": {
+ "name": "ஸà¯à®²à¯‹à®µà®¾à®•à®¿à®¯à®¾"
+ },
+ "SI": {
+ "name": "ஸà¯à®²à¯‹à®µà¯‡à®©à®¿à®¯à®¾"
+ },
+ "SJ": {
+ "name": "ஸà¯à®µà®²à¯à®ªà®¾à®°à¯à®Ÿà¯ மறà¯à®±à¯à®®à¯ ஜான௠மேயனà¯"
+ },
+ "SZ": {
+ "name": "ஸà¯à®µà®¾à®¸à®¿à®²à®¾à®¨à¯à®¤à¯"
+ },
+ "CH": {
+ "name": "ஸà¯à®µà®¿à®Ÿà¯à®šà®°à¯à®²à®¾à®¨à¯à®¤à¯"
+ },
+ "SE": {
+ "name": "ஸà¯à®µà¯€à®Ÿà®©à¯"
+ },
+ "SC": {
+ "name": "ஸேசேலà¯à®¸à¯"
+ },
+ "HU": {
+ "name": "ஹஙà¯à®•à¯‡à®°à®¿"
+ },
+ "HK": {
+ "name": "ஹாஙà¯à®•à®¾à®™à¯ எஸà¯à®à®†à®°à¯ சீனா"
+ },
+ "HT": {
+ "name": "ஹெயà¯à®¤à®¿"
+ },
+ "HN": {
+ "name": "ஹோணà¯à®Ÿà¯‚ராஸà¯"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/country/te.json b/library/intl/resources/country/te.json
new file mode 100644
index 000000000..199750306
--- /dev/null
+++ b/library/intl/resources/country/te.json
@@ -0,0 +1,761 @@
+{
+ "AO": {
+ "name": "అంగోలా"
+ },
+ "AQ": {
+ "name": "అంటారà±à°•à°Ÿà°¿à°•à°¾"
+ },
+ "AD": {
+ "name": "అండొరà±à°°à°¾"
+ },
+ "AZ": {
+ "name": "అజరà±à°¬à±ˆà°œà°¾à°¨à±"
+ },
+ "AS": {
+ "name": "అమెరికనౠసమోవా"
+ },
+ "US": {
+ "name": "అమెరికా సంయà±à°•à±à°¤ రాషà±à°Ÿà±à°°à°¾à°²à±"
+ },
+ "AW": {
+ "name": "à°…à°°à±à°¬à°¾"
+ },
+ "AR": {
+ "name": "à°…à°°à±à°œà±†à°‚టీనా"
+ },
+ "DZ": {
+ "name": "à°…à°²à±à°œà±€à°°à°¿à°¯à°¾"
+ },
+ "AL": {
+ "name": "à°…à°²à±à°¬à±‡à°¨à°¿à°¯à°¾"
+ },
+ "AI": {
+ "name": "ఆంగవిలà±à°²à°¾"
+ },
+ "AG": {
+ "name": "ఆంటిగà±à°µà°¾ మరియౠబారà±à°¬à±à°¡à°¾"
+ },
+ "AF": {
+ "name": "ఆఫà±à°˜à°¨à°¿à°¸à±à°¤à°¾à°¨à±"
+ },
+ "AM": {
+ "name": "ఆరà±à°®à±‡à°¨à°¿à°¯à°¾"
+ },
+ "AX": {
+ "name": "ఆలేండౠదీవà±à°²à±"
+ },
+ "AT": {
+ "name": "ఆసà±à°Ÿà±à°°à°¿à°¯à°¾"
+ },
+ "AU": {
+ "name": "ఆసà±à°Ÿà±à°°à±‡à°²à°¿à°¯à°¾"
+ },
+ "ID": {
+ "name": "ఇండోనేషియా"
+ },
+ "IL": {
+ "name": "ఇజà±à°°à°¾à°¯à°¿à°²à±"
+ },
+ "IT": {
+ "name": "ఇటలీ"
+ },
+ "ET": {
+ "name": "ఇథియోపియా"
+ },
+ "IQ": {
+ "name": "ఇరాకà±"
+ },
+ "IR": {
+ "name": "ఇరానà±"
+ },
+ "GQ": {
+ "name": "ఈకà±à°µà°Ÿà±‹à°°à°¿à°¯à°²à± గినియా"
+ },
+ "EC": {
+ "name": "ఈకà±à°µà°¡à°¾à°°à±"
+ },
+ "EG": {
+ "name": "ఈజిపà±à°Ÿà±"
+ },
+ "UA": {
+ "name": "ఉకà±à°°à±†à°¯à°¿à°¨à±"
+ },
+ "UG": {
+ "name": "ఉగాండా"
+ },
+ "UZ": {
+ "name": "ఉజà±à°¬à±†à°•à°¿à°¸à±à°¤à°¾à°¨à±"
+ },
+ "KP": {
+ "name": "ఉతà±à°¤à°° కొరియా"
+ },
+ "MP": {
+ "name": "ఉతà±à°¤à°° మరియానా దీవà±à°²à±"
+ },
+ "UY": {
+ "name": "ఉరà±à°—à±à°µà±‡"
+ },
+ "ER": {
+ "name": "à°Žà°°à°¿à°Ÿà±à°°à°¿à°¯à°¾"
+ },
+ "SV": {
+ "name": "ఎలౠసాలà±à°µà°¡à±‹à°°à±"
+ },
+ "AC": {
+ "name": "ఎసెషనౠదీవి"
+ },
+ "EE": {
+ "name": "à°Žà°¸à±à°Ÿà±‹à°¨à°¿à°¯à°¾"
+ },
+ "IE": {
+ "name": "à°à°°à±à°²à°¾à°‚à°¡à±"
+ },
+ "IM": {
+ "name": "à°à°²à± ఆఫౠమానà±"
+ },
+ "CI": {
+ "name": "à°à°µà°°à±€ కోసà±à°Ÿà±"
+ },
+ "IS": {
+ "name": "à°à°¸à±à°²à°¾à°‚à°¡à±"
+ },
+ "OM": {
+ "name": "ఒమనà±"
+ },
+ "KH": {
+ "name": "కంబోడియా"
+ },
+ "KZ": {
+ "name": "కజకసà±à°¤à°¾à°¨à±"
+ },
+ "QA": {
+ "name": "కతరà±"
+ },
+ "BQ": {
+ "name": "కరీబియనౠనెదరà±à°²à°¾à°‚à°¡à±à°¸à±"
+ },
+ "CD": {
+ "name": "కాంగో- à°•à°¿à°¨à±à°·à°¾à°¸à°¾"
+ },
+ "CG": {
+ "name": "కాంగో- à°¬à±à°°à°¾à°œà°¾à°µà°¿à°²à±à°²à°¿"
+ },
+ "CM": {
+ "name": "కామెరూనà±"
+ },
+ "KI": {
+ "name": "కిరిబాటి"
+ },
+ "KG": {
+ "name": "à°•à°¿à°°à±à°—ిజిసà±à°¤à°¾à°¨à±"
+ },
+ "CK": {
+ "name": "à°•à±à°•à± దీవà±à°²à±"
+ },
+ "CW": {
+ "name": "à°•à±à°°à°¾à°•à°µà±‹"
+ },
+ "KW": {
+ "name": "à°•à±à°µà±ˆà°Ÿà±"
+ },
+ "CA": {
+ "name": "కెనడా"
+ },
+ "KE": {
+ "name": "కెనà±à°¯à°¾"
+ },
+ "IC": {
+ "name": "కేనరీ దీవà±à°²à±"
+ },
+ "CV": {
+ "name": "కేపౠవెరà±à°¡à±‡"
+ },
+ "KY": {
+ "name": "కేమానౠదీవà±à°²à±"
+ },
+ "KM": {
+ "name": "కొమొరోసà±"
+ },
+ "CO": {
+ "name": "కొలంబియా"
+ },
+ "XK": {
+ "name": "కొసోవో"
+ },
+ "CC": {
+ "name": "కోకోసౠ(కీలింగà±) దీవà±à°²à±"
+ },
+ "CR": {
+ "name": "కోసà±à°Ÿà°¾ à°°à°¿à°•à°¾"
+ },
+ "CU": {
+ "name": "à°•à±à°¯à±‚బా"
+ },
+ "CX": {
+ "name": "à°•à±à°°à°¿à°¸à±à°®à°¸à± దీవి"
+ },
+ "NC": {
+ "name": "à°•à±à°°à±Šà°¤à±à°¤ కాలెడోనియా"
+ },
+ "HR": {
+ "name": "à°•à±à°°à±‹à°¯à±‡à°·à°¿à°¯à°¾"
+ },
+ "GY": {
+ "name": "గయానా"
+ },
+ "GM": {
+ "name": "గాంబియా"
+ },
+ "GA": {
+ "name": "గాబనà±"
+ },
+ "GN": {
+ "name": "గినియా"
+ },
+ "GW": {
+ "name": "గినియా-బిసà±à°¸à°¾à°µà±"
+ },
+ "GL": {
+ "name": "à°—à±à°°à±€à°¨à±â€Œà°²à°¾à°‚à°¡à±"
+ },
+ "GR": {
+ "name": "à°—à±à°°à±€à°¸à±"
+ },
+ "GD": {
+ "name": "à°—à±à°°à±†à°¨à±†à°¡à°¾"
+ },
+ "GT": {
+ "name": "à°—à±à°µà°¾à°Ÿà°¿à°®à°¾à°²"
+ },
+ "GP": {
+ "name": "à°—à±à°µà°¾à°¡à±‡à°²à±‹à°ªà±"
+ },
+ "GU": {
+ "name": "à°—à±à°µà°¾à°®à±"
+ },
+ "GG": {
+ "name": "à°—à±à°µà±‡à°°à±à°¨à°¸à±‡"
+ },
+ "GH": {
+ "name": "ఘనా"
+ },
+ "TD": {
+ "name": "చాదà±"
+ },
+ "CL": {
+ "name": "చిలీ"
+ },
+ "CZ": {
+ "name": "చెకౠరిపబà±à°²à°¿à°•à±"
+ },
+ "CN": {
+ "name": "చైనా"
+ },
+ "JP": {
+ "name": "జపానà±"
+ },
+ "JM": {
+ "name": "జమైకా"
+ },
+ "DE": {
+ "name": "జరà±à°®à°¨à±€"
+ },
+ "ZM": {
+ "name": "జాంబియా"
+ },
+ "GE": {
+ "name": "జారà±à°œà°¿à°¯à°¾"
+ },
+ "ZW": {
+ "name": "జింబాబà±à°µà±‡"
+ },
+ "DJ": {
+ "name": "జిబౌటి"
+ },
+ "GI": {
+ "name": "జిబà±à°°à°¾à°²à±à°Ÿà°¾à°°à±"
+ },
+ "JE": {
+ "name": "జెరà±à°¸à±€"
+ },
+ "JO": {
+ "name": "జోరà±à°¡à°¾à°¨à±"
+ },
+ "TR": {
+ "name": "à°Ÿà°°à±à°•à±€"
+ },
+ "TZ": {
+ "name": "టాంజానియా"
+ },
+ "TL": {
+ "name": "టిమోరà±-లెసà±à°Ÿà±†"
+ },
+ "TV": {
+ "name": "à°Ÿà±à°µà°¾à°²à±"
+ },
+ "TO": {
+ "name": "టోంగా"
+ },
+ "TK": {
+ "name": "టోకేలావà±"
+ },
+ "TG": {
+ "name": "టోగో"
+ },
+ "TN": {
+ "name": "à°Ÿà±à°¯à±à°¨à±€à°·à°¿à°¯à°¾"
+ },
+ "TT": {
+ "name": "à°Ÿà±à°°à°¿à°¨à°¿à°¡à°¾à°¡à± మరియౠటొబాగో"
+ },
+ "TA": {
+ "name": "à°Ÿà±à°°à°¿à°¸à±à°Ÿà°¨à± à°¡ à°•à°¨à±à°¹à°¾"
+ },
+ "DG": {
+ "name": "డియాగో గారà±à°¸à°¿à°¯à°¾"
+ },
+ "DK": {
+ "name": "డెనà±à°®à°¾à°°à±à°•à±"
+ },
+ "DO": {
+ "name": "డొమెనికనౠరిపబà±à°²à°¿à°•à±"
+ },
+ "DM": {
+ "name": "డోమెనిక"
+ },
+ "TJ": {
+ "name": "తజికిసà±à°¤à°¾à°¨à±"
+ },
+ "TM": {
+ "name": "à°¤à±à°°à±à°•à°®à±‡à°¨à°¿à°¸à±à°¤à°¾à°¨à±"
+ },
+ "TC": {
+ "name": "à°¤à±à°°à±à°•à± మరియౠకాలికోసౠదీవà±à°²à±"
+ },
+ "TW": {
+ "name": "తైవానà±"
+ },
+ "TH": {
+ "name": "థాయిలాండà±"
+ },
+ "ZA": {
+ "name": "దకà±à°·à°¿à°£ ఆఫà±à°°à°¿à°•à°¾"
+ },
+ "KR": {
+ "name": "దకà±à°·à°¿à°£ కొరియా"
+ },
+ "GS": {
+ "name": "దకà±à°·à°¿à°£ జారà±à°œà°¿à°¯à°¾ & దకà±à°·à°¿à°£ శాండà±à°µà°¿à°šà± దీవà±à°²à±"
+ },
+ "SS": {
+ "name": "దకà±à°·à°¿à°£ సూడానà±"
+ },
+ "NA": {
+ "name": "నమీబియా"
+ },
+ "NF": {
+ "name": "నారà±à°«à°¾à°•à± దీవి"
+ },
+ "NO": {
+ "name": "నారà±à°µà±‡"
+ },
+ "NI": {
+ "name": "నికరాగà±à°µà°¾"
+ },
+ "NU": {
+ "name": "నియà±"
+ },
+ "NL": {
+ "name": "నెదరà±à°²à°¾à°‚à°¡à±à°¸à±"
+ },
+ "NP": {
+ "name": "నేపాలà±"
+ },
+ "NE": {
+ "name": "నైజరà±"
+ },
+ "NG": {
+ "name": "నైజీరియా"
+ },
+ "NR": {
+ "name": "నౌరà±"
+ },
+ "NZ": {
+ "name": "à°¨à±à°¯à±‚జిలాండà±"
+ },
+ "EH": {
+ "name": "పడమటి సహారా"
+ },
+ "PA": {
+ "name": "పనామా"
+ },
+ "PY": {
+ "name": "పరాగà±à°µà±‡"
+ },
+ "PW": {
+ "name": "పలావà±"
+ },
+ "PK": {
+ "name": "పాకిసà±à°¤à°¾à°¨à±"
+ },
+ "PG": {
+ "name": "పాపà±à°µà°¾ à°¨à±à°¯à± గినియా"
+ },
+ "PS": {
+ "name": "పాలసà±à°¤à±€à°¨à°¿à°¯à°¨à± à°ªà±à°°à°¾à°‚తాలà±"
+ },
+ "PN": {
+ "name": "పిటà±â€Œà°•à±†à°¯à°¿à°°à±à°¨à± దీవà±à°²à±"
+ },
+ "PE": {
+ "name": "పెరూ"
+ },
+ "PT": {
+ "name": "పోరà±à°šà±à°—à°²à±"
+ },
+ "PL": {
+ "name": "పోలాండà±"
+ },
+ "FK": {
+ "name": "ఫాకà±â€Œà°²à±à°¯à°¾à°‚డౠదీవà±à°²à±"
+ },
+ "FO": {
+ "name": "ఫారో దీవà±à°²à±"
+ },
+ "FJ": {
+ "name": "ఫిజీ"
+ },
+ "FI": {
+ "name": "à°«à°¿à°¨à±à°²à°¾à°‚à°¡à±"
+ },
+ "PH": {
+ "name": "ఫిలిపà±à°ªà±€à°¨à±à°¸à±"
+ },
+ "PR": {
+ "name": "à°«à±à°¯à±‚à°°à±à°Ÿà±‹ రికో"
+ },
+ "FR": {
+ "name": "à°«à±à°°à°¾à°¨à±à°¸à±â€Œ"
+ },
+ "GF": {
+ "name": "à°«à±à°°à±†à°‚చౠగియానా"
+ },
+ "TF": {
+ "name": "à°«à±à°°à±†à°‚చౠదకà±à°·à°¿à°£ à°ªà±à°°à°¾à°‚తాలà±"
+ },
+ "PF": {
+ "name": "à°«à±à°°à±†à°‚చౠపోలినిషియా"
+ },
+ "BD": {
+ "name": "బంగà±à°²à°¾à°¦à±‡à°¶à±"
+ },
+ "BG": {
+ "name": "బలà±à°—ేరియా"
+ },
+ "BS": {
+ "name": "బహామాసà±"
+ },
+ "BH": {
+ "name": "బహà±à°°à±†à°¯à°¿à°¨à±"
+ },
+ "BB": {
+ "name": "బారà±à°¬à°¡à±‹à°¸à±"
+ },
+ "BI": {
+ "name": "à°¬à±à°°à±à°‚à°¡à°¿"
+ },
+ "BF": {
+ "name": "à°¬à±à°°à±à°•à°¿à°¨à°¾ ఫాసో"
+ },
+ "BJ": {
+ "name": "బెనినà±"
+ },
+ "BM": {
+ "name": "బెరà±à°®à±à°¡à°¾"
+ },
+ "BY": {
+ "name": "బెలారసà±"
+ },
+ "BZ": {
+ "name": "బెలిజà±"
+ },
+ "BE": {
+ "name": "బెలà±à°œà°¿à°¯à°‚"
+ },
+ "BO": {
+ "name": "బొలీవియా"
+ },
+ "BW": {
+ "name": "బోటà±à°¸à±à°µà°¾à°¨à°¾"
+ },
+ "BA": {
+ "name": "బోసà±à°¨à°¿à°¯à°¾ మరియౠహెరà±à°œà±†à°—ొవీనా"
+ },
+ "VG": {
+ "name": "à°¬à±à°°à°¿à°Ÿà°¿à°·à± వరà±à°œà°¿à°¨à± దీవà±à°²à±"
+ },
+ "IO": {
+ "name": "à°¬à±à°°à°¿à°Ÿà±€à°·à± భారతీయ సమà±à°¦à±à°°à°ªà± à°ªà±à°°à°¾à°‚తం"
+ },
+ "BN": {
+ "name": "à°¬à±à°°à±‚నై"
+ },
+ "BR": {
+ "name": "à°¬à±à°°à±†à°œà°¿à°²à±"
+ },
+ "IN": {
+ "name": "భారత దేశం"
+ },
+ "BT": {
+ "name": "భూటానà±"
+ },
+ "MN": {
+ "name": "మంగోలియా"
+ },
+ "MG": {
+ "name": "మడగాసà±à°•à°°à±"
+ },
+ "MM": {
+ "name": "మయనà±à°®à°¾à°°à± (బరà±à°®à°¾)"
+ },
+ "MY": {
+ "name": "మలేషియా"
+ },
+ "MO": {
+ "name": "మాకావౠఎసà±à°à°†à°°à± చైనా"
+ },
+ "YT": {
+ "name": "మాయొటà±à°Ÿà°¿"
+ },
+ "MU": {
+ "name": "మారిషసà±"
+ },
+ "MQ": {
+ "name": "మారà±à°Ÿà°¿à°¨à°¿à°•à±"
+ },
+ "MH": {
+ "name": "మారà±à°·à°²à± దీవà±à°²à±"
+ },
+ "MW": {
+ "name": "మాలావి"
+ },
+ "ML": {
+ "name": "మాలి"
+ },
+ "MT": {
+ "name": "మాలà±à°Ÿà°¾"
+ },
+ "MV": {
+ "name": "మాలà±à°¦à±€à°µà±à°²à±"
+ },
+ "MX": {
+ "name": "మెకà±à°¸à°¿à°•à±‹"
+ },
+ "MK": {
+ "name": "మేసిడోనియా"
+ },
+ "FM": {
+ "name": "మైకà±à°°à±‹à°¨à±‡à°¶à°¿à°¯"
+ },
+ "MZ": {
+ "name": "మొజాంబికà±"
+ },
+ "MC": {
+ "name": "మొనాకో"
+ },
+ "MA": {
+ "name": "మొరాకà±à°•à±‹"
+ },
+ "ME": {
+ "name": "మోంటేనేగà±à°°à±‹"
+ },
+ "MS": {
+ "name": "మోంటà±à°¸à±‡à°°à±à°°à°¾à°Ÿà±"
+ },
+ "MD": {
+ "name": "మోలà±à°¡à±‹à°µà°¾"
+ },
+ "MR": {
+ "name": "మౌరిటేనియా"
+ },
+ "VI": {
+ "name": "à°¯à±.à°Žà°¸à±. వరà±à°œà°¿à°¨à± దీవà±à°²à±"
+ },
+ "AE": {
+ "name": "à°¯à±à°¨à±ˆà°Ÿà±†à°¡à± అరబౠఎమిరేటà±à°¸à±"
+ },
+ "GB": {
+ "name": "à°¯à±à°¨à±ˆà°Ÿà±†à°¡à± à°•à°¿à°‚à°—à±â€Œà°¡à°®à±"
+ },
+ "YE": {
+ "name": "యెమెనà±"
+ },
+ "RU": {
+ "name": "à°°à°·à±à°¯à°¾"
+ },
+ "RE": {
+ "name": "రియూనియనà±"
+ },
+ "RW": {
+ "name": "à°°à±à°µà°¾à°‚à°¡à°¾"
+ },
+ "RO": {
+ "name": "రోమానియా"
+ },
+ "LU": {
+ "name": "లకà±à°¸à°‚బరà±à°—à±"
+ },
+ "LV": {
+ "name": "లాతà±à°µà°¿à°¯à°¾"
+ },
+ "LA": {
+ "name": "లావోసà±"
+ },
+ "LI": {
+ "name": "లికà±à°Ÿà±†à°¸à±à°Ÿà±‡à°¨à±"
+ },
+ "LT": {
+ "name": "లిథà±à°µà±‡à°¨à°¿à°¯à°¾"
+ },
+ "LY": {
+ "name": "లిబియా"
+ },
+ "LB": {
+ "name": "లెబనానà±"
+ },
+ "LS": {
+ "name": "లెసోతో"
+ },
+ "LR": {
+ "name": "లైబీరియా"
+ },
+ "VU": {
+ "name": "వనాటà±"
+ },
+ "VA": {
+ "name": "వాటికనౠనగరం"
+ },
+ "WF": {
+ "name": "వాలిసౠమరియౠఫà±à°¯à±à°¤à±à°¯à±à°¨à°¾"
+ },
+ "VN": {
+ "name": "వియతà±à°¨à°¾à°‚"
+ },
+ "VE": {
+ "name": "వెనà±à°œà±à°µà±‡à°²à°¾"
+ },
+ "LK": {
+ "name": "à°¶à±à°°à±€à°²à°‚à°•"
+ },
+ "UM": {
+ "name": "సంయà±à°•à±à°¤ రాజà±à°¯ అమెరికా బయట ఉనà±à°¨ దీవà±à°²à±"
+ },
+ "WS": {
+ "name": "సమోవా"
+ },
+ "SM": {
+ "name": "సానౠమారినో"
+ },
+ "ST": {
+ "name": "సావోటోమౠమరియౠపà±à°°à°¿à°¨à±à°¸à°¿à°ªà±‡"
+ },
+ "SG": {
+ "name": "సింగపూరà±"
+ },
+ "SX": {
+ "name": "సింటౠమారà±à°Ÿà±†à°¨à±"
+ },
+ "SL": {
+ "name": "సియెరà±à°°à°¾ లియానà±"
+ },
+ "SY": {
+ "name": "సిరియా"
+ },
+ "SC": {
+ "name": "సీషెలà±à°¸à±"
+ },
+ "SR": {
+ "name": "à°¸à±à°°à°¿à°¨à°¾à°®à±"
+ },
+ "SD": {
+ "name": "సూడానà±"
+ },
+ "KN": {
+ "name": "సెంటౠకిటà±à°Ÿà±à°¸à± మరియౠనెవిసà±"
+ },
+ "PM": {
+ "name": "సెంటౠపియెరౠమరియౠమికెలానà±"
+ },
+ "BL": {
+ "name": "సెంటౠబరà±à°¤à±‡à°²à±†à°®à±€"
+ },
+ "MF": {
+ "name": "సెంటౠమారà±à°Ÿà°¿à°¨à±"
+ },
+ "LC": {
+ "name": "సెంటౠలూసియా"
+ },
+ "VC": {
+ "name": "సెంటౠవినà±à°¸à±†à°‚టౠమరియౠగà±à°°à±†à°¨à°¡à±€à°¨à±à°¸à±"
+ },
+ "SH": {
+ "name": "సెంటౠహెలినా"
+ },
+ "CF": {
+ "name": "సెంటà±à°°à°²à± ఆఫà±à°°à°¿à°•à°¨à± రిపబà±à°²à°¿à°•à±"
+ },
+ "SN": {
+ "name": "సెనెగలà±"
+ },
+ "RS": {
+ "name": "సెరà±à°¬à°¿à°¯à°¾"
+ },
+ "CY": {
+ "name": "సైపà±à°°à°¸à±"
+ },
+ "SO": {
+ "name": "సోమాలియా"
+ },
+ "SB": {
+ "name": "సోలమనౠదీవà±à°²à±"
+ },
+ "SA": {
+ "name": "సౌదీ అరేబియా"
+ },
+ "ES": {
+ "name": "à°¸à±à°ªà±†à°¯à°¿à°¨à±"
+ },
+ "EA": {
+ "name": "à°¸à±à°¯à±‚à°Ÿà°¾ మరియౠమెలిలà±à°²à°¾"
+ },
+ "SK": {
+ "name": "à°¸à±à°²à±‹à°µà±‡à°•à°¿à°¯à°¾"
+ },
+ "SI": {
+ "name": "à°¸à±à°²à±‹à°µà±‡à°¨à°¿à°¯à°¾"
+ },
+ "SZ": {
+ "name": "à°¸à±à°µà°¾à°œà°¿à°²à±à°¯à°¾à°‚à°¡à±"
+ },
+ "SJ": {
+ "name": "à°¸à±à°µà°¾à°²à±à°¬à°¾à°°à±à°¡à± మరియౠయానౠమాయేనà±"
+ },
+ "CH": {
+ "name": "à°¸à±à°µà°¿à°Ÿà±à°œà°°à±à°²à°¾à°‚à°¡à±"
+ },
+ "SE": {
+ "name": "à°¸à±à°µà±€à°¡à°¨à±"
+ },
+ "HU": {
+ "name": "హంగేరీ"
+ },
+ "HK": {
+ "name": "హాంకాంగౠఎసà±à°à°†à°°à± చైనా"
+ },
+ "HT": {
+ "name": "హైటి"
+ },
+ "HN": {
+ "name": "హోండà±à°°à°¾à°¸à±"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/country/teo.json b/library/intl/resources/country/teo.json
new file mode 100644
index 000000000..a5fb3b516
--- /dev/null
+++ b/library/intl/resources/country/teo.json
@@ -0,0 +1,761 @@
+{
+ "ZA": {
+ "name": "Afrika Kusini"
+ },
+ "AF": {
+ "name": "Afuganistani"
+ },
+ "IS": {
+ "name": "Aislandi"
+ },
+ "AR": {
+ "name": "Ajentina"
+ },
+ "AX": {
+ "name": "Ã…land Islands"
+ },
+ "AL": {
+ "name": "Albania"
+ },
+ "DZ": {
+ "name": "Aljeria"
+ },
+ "AD": {
+ "name": "Andora"
+ },
+ "AO": {
+ "name": "Angola"
+ },
+ "AI": {
+ "name": "Anguilla"
+ },
+ "AQ": {
+ "name": "Antarctica"
+ },
+ "AG": {
+ "name": "Antigua na Barbuda"
+ },
+ "AM": {
+ "name": "Armenia"
+ },
+ "AW": {
+ "name": "Aruba"
+ },
+ "AC": {
+ "name": "Ascension Island"
+ },
+ "AU": {
+ "name": "Australia"
+ },
+ "AT": {
+ "name": "Austria"
+ },
+ "IE": {
+ "name": "Ayalandi"
+ },
+ "AZ": {
+ "name": "Azabajani"
+ },
+ "BB": {
+ "name": "Babadosi"
+ },
+ "BS": {
+ "name": "Bahama"
+ },
+ "BH": {
+ "name": "Bahareni"
+ },
+ "BD": {
+ "name": "Bangladeshi"
+ },
+ "BY": {
+ "name": "Belarusi"
+ },
+ "BZ": {
+ "name": "Belize"
+ },
+ "BJ": {
+ "name": "Benini"
+ },
+ "BM": {
+ "name": "Bermuda"
+ },
+ "BO": {
+ "name": "Bolivia"
+ },
+ "BA": {
+ "name": "Bosnia na Hezegovina"
+ },
+ "BW": {
+ "name": "Botswana"
+ },
+ "BR": {
+ "name": "Brazili"
+ },
+ "BN": {
+ "name": "Brunei"
+ },
+ "BF": {
+ "name": "Bukinafaso"
+ },
+ "MG": {
+ "name": "Bukini"
+ },
+ "BG": {
+ "name": "Bulgaria"
+ },
+ "BI": {
+ "name": "Burundi"
+ },
+ "BT": {
+ "name": "Butani"
+ },
+ "IC": {
+ "name": "Canary Islands"
+ },
+ "BQ": {
+ "name": "Caribbean Netherlands"
+ },
+ "EA": {
+ "name": "Ceuta & Melilla"
+ },
+ "TD": {
+ "name": "Chadi"
+ },
+ "CL": {
+ "name": "Chile"
+ },
+ "CN": {
+ "name": "China"
+ },
+ "CX": {
+ "name": "Christmas Island"
+ },
+ "CC": {
+ "name": "Cocos (Keeling) Islands"
+ },
+ "CW": {
+ "name": "Curaçao"
+ },
+ "DK": {
+ "name": "Denmaki"
+ },
+ "DG": {
+ "name": "Diego Garcia"
+ },
+ "DM": {
+ "name": "Dominika"
+ },
+ "EC": {
+ "name": "Ekwado"
+ },
+ "SV": {
+ "name": "Elsavado"
+ },
+ "IO": {
+ "name": "Eneo la Uingereza katika Bahari Hindi"
+ },
+ "ER": {
+ "name": "Eritrea"
+ },
+ "EE": {
+ "name": "Estonia"
+ },
+ "AE": {
+ "name": "Falme za Kiarabu"
+ },
+ "FO": {
+ "name": "Faroe Islands"
+ },
+ "FJ": {
+ "name": "Fiji"
+ },
+ "PH": {
+ "name": "Filipino"
+ },
+ "TF": {
+ "name": "French Southern Territories"
+ },
+ "GA": {
+ "name": "Gaboni"
+ },
+ "GM": {
+ "name": "Gambia"
+ },
+ "GH": {
+ "name": "Ghana"
+ },
+ "GN": {
+ "name": "Gine"
+ },
+ "GW": {
+ "name": "Ginebisau"
+ },
+ "GQ": {
+ "name": "Ginekweta"
+ },
+ "GD": {
+ "name": "Grenada"
+ },
+ "GL": {
+ "name": "Grinlandi"
+ },
+ "GG": {
+ "name": "Guernsey"
+ },
+ "GY": {
+ "name": "Guyana"
+ },
+ "GP": {
+ "name": "Gwadelupe"
+ },
+ "GU": {
+ "name": "Gwam"
+ },
+ "GT": {
+ "name": "Gwatemala"
+ },
+ "GF": {
+ "name": "Gwiyana ya Ufaransa"
+ },
+ "HT": {
+ "name": "Haiti"
+ },
+ "ES": {
+ "name": "Hispania"
+ },
+ "HN": {
+ "name": "Hondurasi"
+ },
+ "HK": {
+ "name": "Hong Kong SAR China"
+ },
+ "HU": {
+ "name": "Hungaria"
+ },
+ "IN": {
+ "name": "India"
+ },
+ "ID": {
+ "name": "Indonesia"
+ },
+ "IQ": {
+ "name": "Iraki"
+ },
+ "IM": {
+ "name": "Isle of Man"
+ },
+ "IL": {
+ "name": "Israeli"
+ },
+ "IT": {
+ "name": "Italia"
+ },
+ "JM": {
+ "name": "Jamaika"
+ },
+ "CF": {
+ "name": "Jamhuri ya Afrika ya Kati"
+ },
+ "CZ": {
+ "name": "Jamhuri ya Cheki"
+ },
+ "DO": {
+ "name": "Jamhuri ya Dominika"
+ },
+ "CD": {
+ "name": "Jamhuri ya Kidemokrasia ya Kongo"
+ },
+ "JP": {
+ "name": "Japani"
+ },
+ "JE": {
+ "name": "Jersey"
+ },
+ "GI": {
+ "name": "Jibralta"
+ },
+ "DJ": {
+ "name": "Jibuti"
+ },
+ "GE": {
+ "name": "Jojia"
+ },
+ "KH": {
+ "name": "Kambodia"
+ },
+ "CM": {
+ "name": "Kameruni"
+ },
+ "CA": {
+ "name": "Kanada"
+ },
+ "QA": {
+ "name": "Katari"
+ },
+ "KZ": {
+ "name": "Kazakistani"
+ },
+ "KE": {
+ "name": "Kenia"
+ },
+ "CV": {
+ "name": "Kepuvede"
+ },
+ "KI": {
+ "name": "Kiribati"
+ },
+ "KG": {
+ "name": "Kirigizistani"
+ },
+ "NF": {
+ "name": "Kisiwa cha Norfok"
+ },
+ "CI": {
+ "name": "Kodivaa"
+ },
+ "CO": {
+ "name": "Kolombia"
+ },
+ "KM": {
+ "name": "Komoro"
+ },
+ "CG": {
+ "name": "Kongo"
+ },
+ "HR": {
+ "name": "Korasia"
+ },
+ "KP": {
+ "name": "Korea Kaskazini"
+ },
+ "KR": {
+ "name": "Korea Kusini"
+ },
+ "XK": {
+ "name": "Kosovo"
+ },
+ "CR": {
+ "name": "Kostarika"
+ },
+ "CU": {
+ "name": "Kuba"
+ },
+ "CY": {
+ "name": "Kuprosi"
+ },
+ "KW": {
+ "name": "Kuwaiti"
+ },
+ "LA": {
+ "name": "Laosi"
+ },
+ "LU": {
+ "name": "Lasembagi"
+ },
+ "LV": {
+ "name": "Lativia"
+ },
+ "LB": {
+ "name": "Lebanoni"
+ },
+ "LS": {
+ "name": "Lesoto"
+ },
+ "LR": {
+ "name": "Liberia"
+ },
+ "LY": {
+ "name": "Libya"
+ },
+ "LI": {
+ "name": "Lishenteni"
+ },
+ "LT": {
+ "name": "Litwania"
+ },
+ "MO": {
+ "name": "Macau SAR China"
+ },
+ "MW": {
+ "name": "Malawi"
+ },
+ "MY": {
+ "name": "Malesia"
+ },
+ "ML": {
+ "name": "Mali"
+ },
+ "MT": {
+ "name": "Malta"
+ },
+ "US": {
+ "name": "Marekani"
+ },
+ "MQ": {
+ "name": "Martiniki"
+ },
+ "MK": {
+ "name": "Masedonia"
+ },
+ "YT": {
+ "name": "Mayotte"
+ },
+ "MX": {
+ "name": "Meksiko"
+ },
+ "FM": {
+ "name": "Mikronesia"
+ },
+ "EG": {
+ "name": "Misri"
+ },
+ "MV": {
+ "name": "Modivu"
+ },
+ "MD": {
+ "name": "Moldova"
+ },
+ "MC": {
+ "name": "Monako"
+ },
+ "MN": {
+ "name": "Mongolia"
+ },
+ "ME": {
+ "name": "Montenegro"
+ },
+ "MS": {
+ "name": "Montserrati"
+ },
+ "MU": {
+ "name": "Morisi"
+ },
+ "MR": {
+ "name": "Moritania"
+ },
+ "MA": {
+ "name": "Moroko"
+ },
+ "MZ": {
+ "name": "Msumbiji"
+ },
+ "MM": {
+ "name": "Myama"
+ },
+ "NA": {
+ "name": "Namibia"
+ },
+ "NR": {
+ "name": "Nauru"
+ },
+ "NP": {
+ "name": "Nepali"
+ },
+ "NE": {
+ "name": "Nijeri"
+ },
+ "NG": {
+ "name": "Nijeria"
+ },
+ "NI": {
+ "name": "Nikaragwa"
+ },
+ "NU": {
+ "name": "Niue"
+ },
+ "NO": {
+ "name": "Norwe"
+ },
+ "NC": {
+ "name": "Nyukaledonia"
+ },
+ "NZ": {
+ "name": "Nyuzilandi"
+ },
+ "OM": {
+ "name": "Omani"
+ },
+ "PK": {
+ "name": "Pakistani"
+ },
+ "PW": {
+ "name": "Palau"
+ },
+ "PA": {
+ "name": "Panama"
+ },
+ "PG": {
+ "name": "Papua"
+ },
+ "PY": {
+ "name": "Paragwai"
+ },
+ "PE": {
+ "name": "Peru"
+ },
+ "PN": {
+ "name": "Pitkairni"
+ },
+ "PL": {
+ "name": "Polandi"
+ },
+ "PF": {
+ "name": "Polinesia ya Ufaransa"
+ },
+ "PR": {
+ "name": "Pwetoriko"
+ },
+ "RE": {
+ "name": "Riyunioni"
+ },
+ "RO": {
+ "name": "Romania"
+ },
+ "RW": {
+ "name": "Rwanda"
+ },
+ "SM": {
+ "name": "Samarino"
+ },
+ "WS": {
+ "name": "Samoa"
+ },
+ "AS": {
+ "name": "Samoa ya Marekani"
+ },
+ "SH": {
+ "name": "Santahelena"
+ },
+ "KN": {
+ "name": "Santakitzi na Nevis"
+ },
+ "LC": {
+ "name": "Santalusia"
+ },
+ "PM": {
+ "name": "Santapieri na Mikeloni"
+ },
+ "VC": {
+ "name": "Santavisenti na Grenadini"
+ },
+ "ST": {
+ "name": "Sao Tome na Principe"
+ },
+ "SA": {
+ "name": "Saudi"
+ },
+ "SN": {
+ "name": "Senegali"
+ },
+ "RS": {
+ "name": "Serbia"
+ },
+ "SC": {
+ "name": "Shelisheli"
+ },
+ "SL": {
+ "name": "Siera Leoni"
+ },
+ "SG": {
+ "name": "Singapoo"
+ },
+ "SX": {
+ "name": "Sint Maarten"
+ },
+ "SY": {
+ "name": "Siria"
+ },
+ "LK": {
+ "name": "Sirilanka"
+ },
+ "SK": {
+ "name": "Slovakia"
+ },
+ "SI": {
+ "name": "Slovenia"
+ },
+ "SO": {
+ "name": "Somalia"
+ },
+ "GS": {
+ "name": "South Georgia & South Sandwich Islands"
+ },
+ "SS": {
+ "name": "South Sudan"
+ },
+ "BL": {
+ "name": "St. Barthélemy"
+ },
+ "MF": {
+ "name": "St. Martin"
+ },
+ "SD": {
+ "name": "Sudani"
+ },
+ "SR": {
+ "name": "Surinamu"
+ },
+ "SJ": {
+ "name": "Svalbard & Jan Mayen"
+ },
+ "TH": {
+ "name": "Tailandi"
+ },
+ "TW": {
+ "name": "Taiwani"
+ },
+ "TJ": {
+ "name": "Tajikistani"
+ },
+ "TZ": {
+ "name": "Tanzania"
+ },
+ "TL": {
+ "name": "Timori ya Mashariki"
+ },
+ "TG": {
+ "name": "Togo"
+ },
+ "TK": {
+ "name": "Tokelau"
+ },
+ "TO": {
+ "name": "Tonga"
+ },
+ "TT": {
+ "name": "Trinidad na Tobago"
+ },
+ "TA": {
+ "name": "Tristan da Cunha"
+ },
+ "TN": {
+ "name": "Tunisia"
+ },
+ "TM": {
+ "name": "Turukimenistani"
+ },
+ "TV": {
+ "name": "Tuvalu"
+ },
+ "UM": {
+ "name": "U.S. Outlying Islands"
+ },
+ "IR": {
+ "name": "Uajemi"
+ },
+ "BE": {
+ "name": "Ubelgiji"
+ },
+ "FR": {
+ "name": "Ufaransa"
+ },
+ "FI": {
+ "name": "Ufini"
+ },
+ "UG": {
+ "name": "Uganda"
+ },
+ "GR": {
+ "name": "Ugiriki"
+ },
+ "ET": {
+ "name": "Uhabeshi"
+ },
+ "NL": {
+ "name": "Uholanzi"
+ },
+ "GB": {
+ "name": "Uingereza"
+ },
+ "DE": {
+ "name": "Ujerumani"
+ },
+ "PS": {
+ "name": "Ukingo wa Magharibi na Ukanda wa Gaza wa Palestina"
+ },
+ "UA": {
+ "name": "Ukraini"
+ },
+ "PT": {
+ "name": "Ureno"
+ },
+ "UY": {
+ "name": "Urugwai"
+ },
+ "RU": {
+ "name": "Urusi"
+ },
+ "SZ": {
+ "name": "Uswazi"
+ },
+ "SE": {
+ "name": "Uswidi"
+ },
+ "CH": {
+ "name": "Uswisi"
+ },
+ "TR": {
+ "name": "Uturuki"
+ },
+ "UZ": {
+ "name": "Uzibekistani"
+ },
+ "VU": {
+ "name": "Vanuatu"
+ },
+ "VA": {
+ "name": "Vatikani"
+ },
+ "VE": {
+ "name": "Venezuela"
+ },
+ "VN": {
+ "name": "Vietinamu"
+ },
+ "CK": {
+ "name": "Visiwa vya Cook"
+ },
+ "FK": {
+ "name": "Visiwa vya Falkland"
+ },
+ "KY": {
+ "name": "Visiwa vya Kayman"
+ },
+ "MP": {
+ "name": "Visiwa vya Mariana vya Kaskazini"
+ },
+ "MH": {
+ "name": "Visiwa vya Marshal"
+ },
+ "SB": {
+ "name": "Visiwa vya Solomon"
+ },
+ "TC": {
+ "name": "Visiwa vya Turki na Kaiko"
+ },
+ "VI": {
+ "name": "Visiwa vya Virgin vya Marekani"
+ },
+ "VG": {
+ "name": "Visiwa vya Virgin vya Uingereza"
+ },
+ "WF": {
+ "name": "Walis na Futuna"
+ },
+ "EH": {
+ "name": "Western Sahara"
+ },
+ "YE": {
+ "name": "Yemeni"
+ },
+ "JO": {
+ "name": "Yordani"
+ },
+ "ZM": {
+ "name": "Zambia"
+ },
+ "ZW": {
+ "name": "Zimbabwe"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/country/th.json b/library/intl/resources/country/th.json
new file mode 100644
index 000000000..f849e92a2
--- /dev/null
+++ b/library/intl/resources/country/th.json
@@ -0,0 +1,761 @@
+{
+ "GR": {
+ "name": "à¸à¸£à¸µà¸‹"
+ },
+ "GL": {
+ "name": "à¸à¸£à¸µà¸™à¹à¸¥à¸™à¸”์"
+ },
+ "GU": {
+ "name": "à¸à¸§à¸¡"
+ },
+ "GP": {
+ "name": "à¸à¸§à¸²à¹€à¸”อลูป"
+ },
+ "KH": {
+ "name": "à¸à¸±à¸¡à¸žà¸¹à¸Šà¸²"
+ },
+ "GT": {
+ "name": "à¸à¸±à¸§à¹€à¸•à¸¡à¸²à¸¥à¸²"
+ },
+ "QA": {
+ "name": "à¸à¸²à¸•à¸²à¸£à¹Œ"
+ },
+ "GH": {
+ "name": "à¸à¸²à¸™à¸²"
+ },
+ "GA": {
+ "name": "à¸à¸²à¸šà¸­à¸‡"
+ },
+ "GY": {
+ "name": "à¸à¸²à¸¢à¸­à¸²à¸™à¸²"
+ },
+ "GN": {
+ "name": "à¸à¸´à¸™à¸µ"
+ },
+ "GW": {
+ "name": "à¸à¸´à¸™à¸µ-บิสเซา"
+ },
+ "GD": {
+ "name": "เà¸à¸£à¹€à¸™à¸”า"
+ },
+ "KR": {
+ "name": "เà¸à¸²à¸«à¸¥à¸µà¹ƒà¸•à¹‰"
+ },
+ "KP": {
+ "name": "เà¸à¸²à¸«à¸¥à¸µà¹€à¸«à¸™à¸·à¸­"
+ },
+ "CX": {
+ "name": "เà¸à¸²à¸°à¸„ริสต์มาส"
+ },
+ "GS": {
+ "name": "เà¸à¸²à¸°à¹€à¸‹à¸²à¸—์จอร์เจียà¹à¸¥à¸°à¸«à¸¡à¸¹à¹ˆà¹€à¸à¸²à¸°à¹€à¸‹à¸²à¸—์à¹à¸‹à¸™à¸”์วิช"
+ },
+ "NF": {
+ "name": "เà¸à¸²à¸°à¸™à¸­à¸£à¹Œà¸Ÿà¸­à¸¥à¹Œà¸"
+ },
+ "IM": {
+ "name": "เà¸à¸²à¸°à¹à¸¡à¸™"
+ },
+ "AC": {
+ "name": "เà¸à¸²à¸°à¹à¸­à¸ªà¹€à¸‹à¸™à¸Šà¸±à¸™"
+ },
+ "GG": {
+ "name": "เà¸à¸´à¸£à¹Œà¸™à¸‹à¸µà¸¢à¹Œ"
+ },
+ "GM": {
+ "name": "à¹à¸à¸¡à¹€à¸šà¸µà¸¢"
+ },
+ "MO": {
+ "name": "เขตปà¸à¸„รองพิเศษมาเà¸à¹Šà¸²à¹à¸«à¹ˆà¸‡à¸ªà¸²à¸˜à¸²à¸£à¸“รัà¸à¸›à¸£à¸°à¸Šà¸²à¸Šà¸™à¸ˆà¸µà¸™"
+ },
+ "HK": {
+ "name": "เขตปà¸à¸„รองพิเศษฮ่องà¸à¸‡à¹à¸«à¹ˆà¸‡à¸ªà¸²à¸˜à¸²à¸£à¸“รัà¸à¸›à¸£à¸°à¸Šà¸²à¸Šà¸™à¸ˆà¸µà¸™"
+ },
+ "CD": {
+ "name": "คองโà¸-à¸à¸´à¸™à¸Šà¸²à¸‹à¸²"
+ },
+ "CG": {
+ "name": "คองโà¸-บราซซาวิล"
+ },
+ "KM": {
+ "name": "คอโมโรส"
+ },
+ "CR": {
+ "name": "คอสตาริà¸à¸²"
+ },
+ "KZ": {
+ "name": "คาซัคสถาน"
+ },
+ "KI": {
+ "name": "คิริบาส"
+ },
+ "CU": {
+ "name": "คิวบา"
+ },
+ "KG": {
+ "name": "คีร์à¸à¸µà¸‹à¸ªà¸–าน"
+ },
+ "CW": {
+ "name": "คูราเซา"
+ },
+ "KW": {
+ "name": "คูเวต"
+ },
+ "KE": {
+ "name": "เคนยา"
+ },
+ "CV": {
+ "name": "เคปเวิร์ด"
+ },
+ "CA": {
+ "name": "à¹à¸„นาดา"
+ },
+ "CM": {
+ "name": "à¹à¸„เมอรูน"
+ },
+ "XK": {
+ "name": "โคโซโว"
+ },
+ "HR": {
+ "name": "โครเอเชีย"
+ },
+ "CO": {
+ "name": "โคลอมเบีย"
+ },
+ "GE": {
+ "name": "จอร์เจีย"
+ },
+ "JO": {
+ "name": "จอร์à¹à¸”น"
+ },
+ "JM": {
+ "name": "จาเมà¸à¸²"
+ },
+ "DJ": {
+ "name": "จิบูตี"
+ },
+ "CN": {
+ "name": "จีน"
+ },
+ "JE": {
+ "name": "เจอร์ซีย์"
+ },
+ "TD": {
+ "name": "ชาด"
+ },
+ "CL": {
+ "name": "ชิลี"
+ },
+ "SM": {
+ "name": "ซานมารีโน"
+ },
+ "WS": {
+ "name": "ซามัว"
+ },
+ "SA": {
+ "name": "ซาอุดีอาระเบีย"
+ },
+ "EH": {
+ "name": "ซาฮาราตะวันตà¸"
+ },
+ "ZW": {
+ "name": "ซิมบับเว"
+ },
+ "SY": {
+ "name": "ซีเรีย"
+ },
+ "EA": {
+ "name": "ซีโอตาà¹à¸¥à¸°à¹€à¸¡à¸¥à¸´à¸¥à¸¥à¸²"
+ },
+ "SD": {
+ "name": "ซูดาน"
+ },
+ "SS": {
+ "name": "ซูดานใต้"
+ },
+ "SR": {
+ "name": "ซูรินาเม"
+ },
+ "SC": {
+ "name": "เซเชลส์"
+ },
+ "KN": {
+ "name": "เซนต์คิตส์à¹à¸¥à¸°à¹€à¸™à¸§à¸´à¸ª"
+ },
+ "BL": {
+ "name": "เซนต์บาร์เธเลมี"
+ },
+ "MF": {
+ "name": "เซนต์มาติน"
+ },
+ "SX": {
+ "name": "เซนต์มาร์ติน"
+ },
+ "LC": {
+ "name": "เซนต์ลูเซีย"
+ },
+ "VC": {
+ "name": "เซนต์วินเซนต์à¹à¸¥à¸°à¹€à¸à¸£à¸™à¸²à¸”ีนส์"
+ },
+ "SH": {
+ "name": "เซนต์เฮเลนา"
+ },
+ "SN": {
+ "name": "เซเนà¸à¸±à¸¥"
+ },
+ "RS": {
+ "name": "เซอร์เบีย"
+ },
+ "ST": {
+ "name": "เซาตูเมà¹à¸¥à¸°à¸›à¸£à¸´à¸™à¸‹à¸´à¸›à¸µ"
+ },
+ "SL": {
+ "name": "เซียร์ราลีโอน"
+ },
+ "PM": {
+ "name": "à¹à¸‹à¸‡à¸›à¸µà¹à¸¢à¸£à¹Œà¹à¸¥à¸°à¸¡à¸µà¹€à¸à¸­à¸¥à¸‡"
+ },
+ "ZM": {
+ "name": "à¹à¸‹à¸¡à¹€à¸šà¸µà¸¢"
+ },
+ "SO": {
+ "name": "โซมาเลีย"
+ },
+ "CY": {
+ "name": "ไซปรัส"
+ },
+ "JP": {
+ "name": "à¸à¸µà¹ˆà¸›à¸¸à¹ˆà¸™"
+ },
+ "PS": {
+ "name": "ดินà¹à¸”นปาเลสไตน์"
+ },
+ "DG": {
+ "name": "ดิเอโà¸à¸à¸²à¸£à¹Œà¹€à¸‹à¸µà¸¢"
+ },
+ "DK": {
+ "name": "เดนมาร์à¸"
+ },
+ "DM": {
+ "name": "โดมินิà¸à¸²"
+ },
+ "TT": {
+ "name": "ตรินิà¹à¸”ดà¹à¸¥à¸°à¹‚ตเบโà¸"
+ },
+ "TO": {
+ "name": "ตองà¸à¸²"
+ },
+ "TL": {
+ "name": "ติมอร์-เลสเต"
+ },
+ "TR": {
+ "name": "ตุรà¸à¸µ"
+ },
+ "TN": {
+ "name": "ตูนิเซีย"
+ },
+ "TV": {
+ "name": "ตูวาลู"
+ },
+ "TM": {
+ "name": "เติร์à¸à¹€à¸¡à¸™à¸´à¸ªà¸–าน"
+ },
+ "TK": {
+ "name": "โตเà¸à¹€à¸¥à¸²"
+ },
+ "TG": {
+ "name": "โตโà¸"
+ },
+ "TW": {
+ "name": "ไต้หวัน"
+ },
+ "TA": {
+ "name": "ทริสตัน เดอ คูนา"
+ },
+ "TJ": {
+ "name": "ทาจิà¸à¸´à¸ªà¸–าน"
+ },
+ "TZ": {
+ "name": "à¹à¸—นซาเนีย"
+ },
+ "TH": {
+ "name": "ไทย"
+ },
+ "VA": {
+ "name": "นครวาติà¸à¸±à¸™"
+ },
+ "NO": {
+ "name": "นอร์เวย์"
+ },
+ "NA": {
+ "name": "นามิเบีย"
+ },
+ "NR": {
+ "name": "นาอูรู"
+ },
+ "NI": {
+ "name": "นิà¸à¸²à¸£à¸²à¸à¸±à¸§"
+ },
+ "NC": {
+ "name": "นิวà¹à¸„ลิโดเนีย"
+ },
+ "NZ": {
+ "name": "นิวซีà¹à¸¥à¸™à¸”์"
+ },
+ "NU": {
+ "name": "นีอูเอ"
+ },
+ "NL": {
+ "name": "เนเธอร์à¹à¸¥à¸™à¸”์"
+ },
+ "BQ": {
+ "name": "เนเธอร์à¹à¸¥à¸™à¸”์à¹à¸„ริบเบียน"
+ },
+ "NP": {
+ "name": "เนปาล"
+ },
+ "NG": {
+ "name": "ไนจีเรีย"
+ },
+ "NE": {
+ "name": "ไนเจอร์"
+ },
+ "BR": {
+ "name": "บราซิล"
+ },
+ "IO": {
+ "name": "บริติชอินเดียนโอเชียนเทร์ริทอรี"
+ },
+ "BN": {
+ "name": "บรูไน"
+ },
+ "BW": {
+ "name": "บอตสวานา"
+ },
+ "BA": {
+ "name": "บอสเนียà¹à¸¥à¸°à¹€à¸®à¸­à¸£à¹Œà¹€à¸‹à¹‚à¸à¸§à¸µà¸™à¸²"
+ },
+ "BD": {
+ "name": "บังà¸à¸¥à¸²à¹€à¸—ศ"
+ },
+ "BG": {
+ "name": "บัลà¹à¸à¹€à¸£à¸µà¸¢"
+ },
+ "BB": {
+ "name": "บาร์เบโดส"
+ },
+ "BH": {
+ "name": "บาห์เรน"
+ },
+ "BS": {
+ "name": "บาฮามาส"
+ },
+ "BI": {
+ "name": "บุรุนดี"
+ },
+ "BF": {
+ "name": "บูร์à¸à¸´à¸™à¸²à¸Ÿà¸²à¹‚ซ"
+ },
+ "BJ": {
+ "name": "เบนิน"
+ },
+ "BE": {
+ "name": "เบลเยียม"
+ },
+ "BY": {
+ "name": "เบลารุส"
+ },
+ "BZ": {
+ "name": "เบลีซ"
+ },
+ "BM": {
+ "name": "เบอร์มิวดา"
+ },
+ "BO": {
+ "name": "โบลิเวีย"
+ },
+ "PK": {
+ "name": "ปาà¸à¸µà¸ªà¸–าน"
+ },
+ "PA": {
+ "name": "ปานามา"
+ },
+ "PG": {
+ "name": "ปาปัวนิวà¸à¸´à¸™à¸µ"
+ },
+ "PY": {
+ "name": "ปาราà¸à¸§à¸±à¸¢"
+ },
+ "PW": {
+ "name": "ปาเลา"
+ },
+ "PE": {
+ "name": "เปรู"
+ },
+ "PR": {
+ "name": "เปอร์โตริโà¸"
+ },
+ "PT": {
+ "name": "โปรตุเà¸à¸ª"
+ },
+ "PL": {
+ "name": "โปà¹à¸¥à¸™à¸”์"
+ },
+ "FR": {
+ "name": "à¸à¸£à¸±à¹ˆà¸‡à¹€à¸¨à¸ª"
+ },
+ "FJ": {
+ "name": "ฟิจิ"
+ },
+ "FI": {
+ "name": "ฟินà¹à¸¥à¸™à¸”์"
+ },
+ "PH": {
+ "name": "ฟิลิปปินส์"
+ },
+ "GF": {
+ "name": "เฟรนช์เà¸à¸µà¸¢à¸™à¸²"
+ },
+ "TF": {
+ "name": "เฟรนช์เซาเทิร์นเทร์ริทอรีส์"
+ },
+ "PF": {
+ "name": "เฟรนช์โปลินีเซีย"
+ },
+ "BT": {
+ "name": "ภูà¸à¸²à¸™"
+ },
+ "MN": {
+ "name": "มองโà¸à¹€à¸¥à¸µà¸¢"
+ },
+ "MS": {
+ "name": "มอนต์เซอร์รัต"
+ },
+ "ME": {
+ "name": "มอนเตเนโà¸à¸£"
+ },
+ "MU": {
+ "name": "มอริเชียส"
+ },
+ "MR": {
+ "name": "มอริเตเนีย"
+ },
+ "MD": {
+ "name": "มอลโดวา"
+ },
+ "MT": {
+ "name": "มอลตา"
+ },
+ "MV": {
+ "name": "มัลดีฟส์"
+ },
+ "MK": {
+ "name": "มาซิโดเนีย"
+ },
+ "MG": {
+ "name": "มาดาà¸à¸±à¸ªà¸à¸²à¸£à¹Œ"
+ },
+ "YT": {
+ "name": "มายอต"
+ },
+ "MQ": {
+ "name": "มาร์ตินีà¸"
+ },
+ "MW": {
+ "name": "มาลาวี"
+ },
+ "ML": {
+ "name": "มาลี"
+ },
+ "MY": {
+ "name": "มาเลเซีย"
+ },
+ "MX": {
+ "name": "เม็à¸à¸‹à¸´à¹‚à¸"
+ },
+ "MM": {
+ "name": "เมียนม่าร์ (พม่า)"
+ },
+ "MZ": {
+ "name": "โมซัมบิà¸"
+ },
+ "MC": {
+ "name": "โมนาโà¸"
+ },
+ "MA": {
+ "name": "โมร็อà¸à¹‚à¸"
+ },
+ "FM": {
+ "name": "ไมโครนีเซีย"
+ },
+ "GI": {
+ "name": "ยิบรอลตาร์"
+ },
+ "UG": {
+ "name": "ยูà¸à¸±à¸™à¸”า"
+ },
+ "UA": {
+ "name": "ยูเครน"
+ },
+ "YE": {
+ "name": "เยเมน"
+ },
+ "DE": {
+ "name": "เยอรมนี"
+ },
+ "RW": {
+ "name": "รวันดา"
+ },
+ "RU": {
+ "name": "รัสเซีย"
+ },
+ "RE": {
+ "name": "เรอูนียง"
+ },
+ "RO": {
+ "name": "โรมาเนีย"
+ },
+ "LU": {
+ "name": "ลัà¸à¹€à¸‹à¸¡à¹€à¸šà¸´à¸£à¹Œà¸"
+ },
+ "LV": {
+ "name": "ลัตเวีย"
+ },
+ "LA": {
+ "name": "ลาว"
+ },
+ "LI": {
+ "name": "ลิà¸à¹€à¸•à¸™à¸ªà¹„ตน์"
+ },
+ "LT": {
+ "name": "ลิทัวเนีย"
+ },
+ "LY": {
+ "name": "ลิเบีย"
+ },
+ "LS": {
+ "name": "เลโซโท"
+ },
+ "LB": {
+ "name": "เลบานอน"
+ },
+ "LR": {
+ "name": "ไลบีเรีย"
+ },
+ "VU": {
+ "name": "วานูอาตู"
+ },
+ "WF": {
+ "name": "วาลลิสà¹à¸¥à¸°à¸Ÿà¸¸à¸•à¸¹à¸™à¸²"
+ },
+ "VE": {
+ "name": "เวเนซุเอลา"
+ },
+ "VN": {
+ "name": "เวียดนาม"
+ },
+ "LK": {
+ "name": "ศรีลังà¸à¸²"
+ },
+ "ES": {
+ "name": "สเปน"
+ },
+ "SJ": {
+ "name": "สฟาลบาร์à¹à¸¥à¸°à¸¢à¸²à¸™à¹„มเอน"
+ },
+ "SK": {
+ "name": "สโลวะเà¸à¸µà¸¢"
+ },
+ "SI": {
+ "name": "สโลวีเนีย"
+ },
+ "SZ": {
+ "name": "สวาซิà¹à¸¥à¸™à¸”์"
+ },
+ "CH": {
+ "name": "สวิตเซอร์à¹à¸¥à¸™à¸”์"
+ },
+ "SE": {
+ "name": "สวีเดน"
+ },
+ "US": {
+ "name": "สหรัà¸à¸­à¹€à¸¡à¸£à¸´à¸à¸²"
+ },
+ "AE": {
+ "name": "สหรัà¸à¸­à¸²à¸«à¸£à¸±à¸šà¹€à¸­à¸¡à¸´à¹€à¸£à¸•à¸ªà¹Œ"
+ },
+ "GB": {
+ "name": "สหราชอาณาจัà¸à¸£"
+ },
+ "CZ": {
+ "name": "สาธารณรัà¸à¹€à¸Šà¹‡à¸"
+ },
+ "DO": {
+ "name": "สาธารณรัà¸à¹‚ดมินิà¸à¸±à¸™"
+ },
+ "CF": {
+ "name": "สาธารณรัà¸à¹à¸­à¸Ÿà¸£à¸´à¸à¸²à¸à¸¥à¸²à¸‡"
+ },
+ "SG": {
+ "name": "สิงคโปร์"
+ },
+ "IC": {
+ "name": "หมู่เà¸à¸²à¸°à¸„านารี"
+ },
+ "CK": {
+ "name": "หมู่เà¸à¸²à¸°à¸„ุà¸"
+ },
+ "KY": {
+ "name": "หมู่เà¸à¸²à¸°à¹€à¸„ย์à¹à¸¡à¸™"
+ },
+ "CC": {
+ "name": "หมู่เà¸à¸²à¸°à¹‚คโคส (คีลิง)"
+ },
+ "SB": {
+ "name": "หมู่เà¸à¸²à¸°à¹‚ซโลมอน"
+ },
+ "TC": {
+ "name": "หมู่เà¸à¸²à¸°à¹€à¸•à¸´à¸à¸ªà¹Œà¹à¸¥à¸°à¸«à¸¡à¸¹à¹ˆà¹€à¸à¸²à¸°à¹€à¸„คอส"
+ },
+ "MP": {
+ "name": "หมู่เà¸à¸²à¸°à¸™à¸­à¸£à¹Œà¹€à¸—ิร์นมาเรียนา"
+ },
+ "VG": {
+ "name": "หมู่เà¸à¸²à¸°à¸šà¸£à¸´à¸•à¸´à¸Šà¹€à¸§à¸­à¸£à¹Œà¸ˆà¸´à¸™"
+ },
+ "PN": {
+ "name": "หมู่เà¸à¸²à¸°à¸žà¸´à¸•à¹à¸„ร์น"
+ },
+ "FK": {
+ "name": "หมู่เà¸à¸²à¸°à¸Ÿà¸­à¸¥à¹Œà¸à¹à¸¥à¸™à¸”์"
+ },
+ "FO": {
+ "name": "หมู่เà¸à¸²à¸°à¹à¸Ÿà¹‚ร"
+ },
+ "MH": {
+ "name": "หมู่เà¸à¸²à¸°à¸¡à¸²à¸£à¹Œà¹à¸Šà¸¥à¸¥à¹Œ"
+ },
+ "VI": {
+ "name": "หมู่เà¸à¸²à¸°à¸¢à¸¹à¹€à¸­à¸ªà¹€à¸§à¸­à¸£à¹Œà¸ˆà¸´à¸™"
+ },
+ "UM": {
+ "name": "หมู่เà¸à¸²à¸°à¸£à¸­à¸šà¸™à¸­à¸à¸‚องสหรัà¸à¸­à¹€à¸¡à¸£à¸´à¸à¸²"
+ },
+ "AX": {
+ "name": "หมู่เà¸à¸²à¸°à¹‚อลันด์"
+ },
+ "AS": {
+ "name": "อเมริà¸à¸±à¸™à¸‹à¸²à¸¡à¸±à¸§"
+ },
+ "AU": {
+ "name": "ออสเตรเลีย"
+ },
+ "AT": {
+ "name": "ออสเตรีย"
+ },
+ "AD": {
+ "name": "อันดอร์รา"
+ },
+ "AF": {
+ "name": "อัฟà¸à¸²à¸™à¸´à¸ªà¸–าน"
+ },
+ "AZ": {
+ "name": "อาเซอร์ไบจาน"
+ },
+ "AR": {
+ "name": "อาร์เจนตินา"
+ },
+ "AM": {
+ "name": "อาร์เมเนีย"
+ },
+ "AW": {
+ "name": "อารูบา"
+ },
+ "GQ": {
+ "name": "อิเควทอเรียลà¸à¸´à¸™à¸µ"
+ },
+ "IT": {
+ "name": "อิตาลี"
+ },
+ "IN": {
+ "name": "อินเดีย"
+ },
+ "ID": {
+ "name": "อินโดนีเซีย"
+ },
+ "IQ": {
+ "name": "อิรัà¸"
+ },
+ "IL": {
+ "name": "อิสราเอล"
+ },
+ "IR": {
+ "name": "อิหร่าน"
+ },
+ "EG": {
+ "name": "อียิปต์"
+ },
+ "UZ": {
+ "name": "อุซเบà¸à¸´à¸ªà¸–าน"
+ },
+ "UY": {
+ "name": "อุรุà¸à¸§à¸±à¸¢"
+ },
+ "EC": {
+ "name": "เอà¸à¸§à¸²à¸”อร์"
+ },
+ "ET": {
+ "name": "เอธิโอเปีย"
+ },
+ "ER": {
+ "name": "เอริเทรีย"
+ },
+ "SV": {
+ "name": "เอลซัลวาดอร์"
+ },
+ "EE": {
+ "name": "เอสโตเนีย"
+ },
+ "AI": {
+ "name": "à¹à¸­à¸‡à¸à¸§à¸´à¸¥à¸¥à¸²"
+ },
+ "AO": {
+ "name": "à¹à¸­à¸‡à¹‚à¸à¸¥à¸²"
+ },
+ "AQ": {
+ "name": "à¹à¸­à¸™à¸•à¸²à¸£à¹Œà¸à¸•à¸´à¸à¸²"
+ },
+ "AG": {
+ "name": "à¹à¸­à¸™à¸•à¸´à¸à¸²à¹à¸¥à¸°à¸šà¸²à¸£à¹Œà¸šà¸¹à¸”า"
+ },
+ "ZA": {
+ "name": "à¹à¸­à¸Ÿà¸£à¸´à¸à¸²à¹ƒà¸•à¹‰"
+ },
+ "DZ": {
+ "name": "à¹à¸­à¸¥à¸ˆà¸µà¹€à¸£à¸µà¸¢"
+ },
+ "AL": {
+ "name": "à¹à¸­à¸¥à¹€à¸šà¹€à¸™à¸µà¸¢"
+ },
+ "OM": {
+ "name": "โอมาน"
+ },
+ "IS": {
+ "name": "ไอซ์à¹à¸¥à¸™à¸”์"
+ },
+ "IE": {
+ "name": "ไอร์à¹à¸¥à¸™à¸”์"
+ },
+ "CI": {
+ "name": "ไอวอรี่โคสต์"
+ },
+ "HN": {
+ "name": "ฮอนดูรัส"
+ },
+ "HU": {
+ "name": "ฮังà¸à¸²à¸£à¸µ"
+ },
+ "HT": {
+ "name": "เฮติ"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/country/ti.json b/library/intl/resources/country/ti.json
new file mode 100644
index 000000000..6cf5bfa3d
--- /dev/null
+++ b/library/intl/resources/country/ti.json
@@ -0,0 +1,761 @@
+{
+ "AC": {
+ "name": "Ascension Island"
+ },
+ "IC": {
+ "name": "Canary Islands"
+ },
+ "BQ": {
+ "name": "Caribbean Netherlands"
+ },
+ "EA": {
+ "name": "Ceuta & Melilla"
+ },
+ "CW": {
+ "name": "Curaçao"
+ },
+ "DG": {
+ "name": "Diego Garcia"
+ },
+ "GG": {
+ "name": "Guernsey"
+ },
+ "IM": {
+ "name": "Isle of Man"
+ },
+ "JE": {
+ "name": "Jersey"
+ },
+ "KZ": {
+ "name": "Kazakhstan"
+ },
+ "XK": {
+ "name": "Kosovo"
+ },
+ "KG": {
+ "name": "Kyrgyzstan"
+ },
+ "ME": {
+ "name": "Montenegro"
+ },
+ "RS": {
+ "name": "Serbia"
+ },
+ "SX": {
+ "name": "Sint Maarten"
+ },
+ "SS": {
+ "name": "South Sudan"
+ },
+ "BL": {
+ "name": "St. Barthélemy"
+ },
+ "MF": {
+ "name": "St. Martin"
+ },
+ "TA": {
+ "name": "Tristan da Cunha"
+ },
+ "HU": {
+ "name": "ሀንጋሪ"
+ },
+ "HT": {
+ "name": "ሀይቲ"
+ },
+ "IN": {
+ "name": "ህንድ"
+ },
+ "HN": {
+ "name": "ሆንዱራስ"
+ },
+ "HK": {
+ "name": "ሆንጠኮንáŒ"
+ },
+ "LU": {
+ "name": "ሉክሰáˆá‰ áˆ­áŒ"
+ },
+ "LY": {
+ "name": "ሊቢያ"
+ },
+ "LB": {
+ "name": "ሊባኖስ"
+ },
+ "LT": {
+ "name": "ሊቱዌኒያ"
+ },
+ "LI": {
+ "name": "ሊችተንስታይን"
+ },
+ "LV": {
+ "name": "ላትቪያ"
+ },
+ "LA": {
+ "name": "ላኦስ"
+ },
+ "LR": {
+ "name": "ላይቤሪያ"
+ },
+ "LS": {
+ "name": "ሌሶቶ"
+ },
+ "FM": {
+ "name": "ሚክሮኔዢያ"
+ },
+ "ML": {
+ "name": "ማሊ"
+ },
+ "MW": {
+ "name": "ማላዊ"
+ },
+ "MY": {
+ "name": "ማሌዢያ"
+ },
+ "MT": {
+ "name": "ማáˆá‰³"
+ },
+ "MV": {
+ "name": "ማáˆá‹²á‰­áˆµ"
+ },
+ "MU": {
+ "name": "ማሩሸስ"
+ },
+ "MH": {
+ "name": "ማርሻሠአይላንድ"
+ },
+ "MQ": {
+ "name": "ማርቲኒክ"
+ },
+ "MK": {
+ "name": "ማከዶኒያ"
+ },
+ "MO": {
+ "name": "ማካዎ"
+ },
+ "MM": {
+ "name": "ማያንማር"
+ },
+ "MG": {
+ "name": "ማዳጋስካር"
+ },
+ "MX": {
+ "name": "ሜክሲኮ"
+ },
+ "YT": {
+ "name": "ሜይኦቴ"
+ },
+ "TL": {
+ "name": "áˆáˆµáˆ«á‰… ቲሞር"
+ },
+ "EH": {
+ "name": "áˆá‹•áˆ«á‰£á‹Š ሳህራ"
+ },
+ "MD": {
+ "name": "ሞáˆá‹¶á‰«"
+ },
+ "MR": {
+ "name": "ሞሪቴኒያ"
+ },
+ "MA": {
+ "name": "ሞሮኮ"
+ },
+ "MC": {
+ "name": "ሞናኮ"
+ },
+ "MS": {
+ "name": "ሞንትሴራት"
+ },
+ "MN": {
+ "name": "ሞንጎሊያ"
+ },
+ "MZ": {
+ "name": "ሞዛáˆá‰¢áŠ­"
+ },
+ "RW": {
+ "name": "ሩዋንዳ"
+ },
+ "RE": {
+ "name": "ሪዩኒየን"
+ },
+ "RU": {
+ "name": "ራሺያ"
+ },
+ "RO": {
+ "name": "ሮሜኒያ"
+ },
+ "SB": {
+ "name": "ሰሎሞን ደሴት"
+ },
+ "KP": {
+ "name": "ሰሜን ኮሪያ"
+ },
+ "SO": {
+ "name": "ሱማሌ"
+ },
+ "SR": {
+ "name": "ሱሪናáˆ"
+ },
+ "SZ": {
+ "name": "ሱዋዚላንድ"
+ },
+ "SD": {
+ "name": "ሱዳን"
+ },
+ "LK": {
+ "name": "ሲሪላንካ"
+ },
+ "SY": {
+ "name": "ሲሪያ"
+ },
+ "SC": {
+ "name": "ሲሼáˆáˆµ"
+ },
+ "SG": {
+ "name": "ሲንጋá–ር"
+ },
+ "WS": {
+ "name": "ሳሞአ"
+ },
+ "SM": {
+ "name": "ሳን ማሪኖ"
+ },
+ "ST": {
+ "name": "ሳኦ ቶሜ እና á•áˆªáŠ•áˆ²á”"
+ },
+ "SA": {
+ "name": "ሳá‹á‹µáŠ áˆ¨á‰¢á‹«"
+ },
+ "CY": {
+ "name": "ሳይá•áˆ¨áˆµ"
+ },
+ "SL": {
+ "name": "ሴራሊዮን"
+ },
+ "SN": {
+ "name": "ሴኔጋáˆ"
+ },
+ "SH": {
+ "name": "ሴንት ሄለና"
+ },
+ "LC": {
+ "name": "ሴንት ሉቺያ"
+ },
+ "SK": {
+ "name": "ስሎቫኪያ"
+ },
+ "SI": {
+ "name": "ስሎቬኒያ"
+ },
+ "CH": {
+ "name": "ስዊዘርላንድ"
+ },
+ "SE": {
+ "name": "ስዊድን"
+ },
+ "ES": {
+ "name": "ስá”ን"
+ },
+ "VC": {
+ "name": "ቅዱስ ቪንሴንት እና áŒáˆ¬áŠ“ዲንስ"
+ },
+ "KN": {
+ "name": "ቅዱስ ኪትስ እና ኔቪስ"
+ },
+ "PM": {
+ "name": "ቅዱስ á’ዬር እና ሚኩኤሎን"
+ },
+ "BT": {
+ "name": "ቡህታን"
+ },
+ "BG": {
+ "name": "ቡáˆáŒŒáˆªá‹«"
+ },
+ "BF": {
+ "name": "ቡርኪና á‹áˆ¶"
+ },
+ "GW": {
+ "name": "ቢሳዎ"
+ },
+ "BS": {
+ "name": "ባሃማስ"
+ },
+ "BH": {
+ "name": "ባህሬን"
+ },
+ "BB": {
+ "name": "ባርቤዶስ"
+ },
+ "BD": {
+ "name": "ባንáŒáˆ‹á‹²áˆ½"
+ },
+ "BZ": {
+ "name": "ቤሊዘ"
+ },
+ "BY": {
+ "name": "ቤላሩስ"
+ },
+ "BE": {
+ "name": "ቤáˆáŒ„áˆ"
+ },
+ "BM": {
+ "name": "ቤርሙዳ"
+ },
+ "BJ": {
+ "name": "ቤኒን"
+ },
+ "BN": {
+ "name": "ብሩኒ"
+ },
+ "BI": {
+ "name": "ብሩንዲ"
+ },
+ "BR": {
+ "name": "ብራዚáˆ"
+ },
+ "BO": {
+ "name": "ቦሊቪያ"
+ },
+ "BA": {
+ "name": "ቦስኒያ እና ሄርዞጎቪኒያ"
+ },
+ "BW": {
+ "name": "ቦትስዋና"
+ },
+ "VA": {
+ "name": "ቫቲካን"
+ },
+ "VU": {
+ "name": "ቫኑአቱ"
+ },
+ "VN": {
+ "name": "ቬትናáˆ"
+ },
+ "VE": {
+ "name": "ቬንዙዌላ"
+ },
+ "TR": {
+ "name": "ቱርክ"
+ },
+ "TM": {
+ "name": "ቱርክሜኒስታን"
+ },
+ "TV": {
+ "name": "ቱቫሉ"
+ },
+ "TN": {
+ "name": "ቱኒዚያ"
+ },
+ "TZ": {
+ "name": "ታንዛኒያ"
+ },
+ "TH": {
+ "name": "ታይላንድ"
+ },
+ "TW": {
+ "name": "ታይዋን"
+ },
+ "TJ": {
+ "name": "ታጃኪስታን"
+ },
+ "TT": {
+ "name": "ትሪኒዳድ እና ቶባጎ"
+ },
+ "TO": {
+ "name": "ቶንጋ"
+ },
+ "TK": {
+ "name": "ቶክላá‹"
+ },
+ "TG": {
+ "name": "ቶáŒ"
+ },
+ "CL": {
+ "name": "ቺሊ"
+ },
+ "CN": {
+ "name": "ቻይና"
+ },
+ "TD": {
+ "name": "ቻድ"
+ },
+ "CZ": {
+ "name": "ቼክ ሪá‘ብሊክ"
+ },
+ "NU": {
+ "name": "ኒኡይ"
+ },
+ "NI": {
+ "name": "ኒካራጓ"
+ },
+ "NC": {
+ "name": "ኒዠካሌዶኒያ"
+ },
+ "NZ": {
+ "name": "ኒዠዚላንድ"
+ },
+ "NE": {
+ "name": "ኒጀር"
+ },
+ "NA": {
+ "name": "ናሚቢያ"
+ },
+ "NR": {
+ "name": "ናኡሩ"
+ },
+ "NG": {
+ "name": "ናይጄሪያ"
+ },
+ "NL": {
+ "name": "ኔዘርላንድ"
+ },
+ "NP": {
+ "name": "ኔá“áˆ"
+ },
+ "NO": {
+ "name": "ኖርዌ"
+ },
+ "NF": {
+ "name": "ኖርáŽáˆáŠ­ ደሴት"
+ },
+ "AL": {
+ "name": "አáˆá‰£áŠ’á‹«"
+ },
+ "DZ": {
+ "name": "አáˆáŒ„ሪያ"
+ },
+ "US": {
+ "name": "አሜሪካ"
+ },
+ "AW": {
+ "name": "አሩባ"
+ },
+ "AM": {
+ "name": "አርሜኒያ"
+ },
+ "AR": {
+ "name": "አርጀንቲና"
+ },
+ "AG": {
+ "name": "አንቲጓ እና ባሩዳ"
+ },
+ "AQ": {
+ "name": "አንታርክቲካ"
+ },
+ "AD": {
+ "name": "አንዶራ"
+ },
+ "AI": {
+ "name": "አንጉኢላ"
+ },
+ "AO": {
+ "name": "አንáŒáˆ‹"
+ },
+ "AU": {
+ "name": "አá‹áˆµá‰µáˆ¬áˆŠá‹«"
+ },
+ "AZ": {
+ "name": "አዘርባጃን"
+ },
+ "IE": {
+ "name": "አየርላንድ"
+ },
+ "IS": {
+ "name": "አይስላንድ"
+ },
+ "AF": {
+ "name": "አáጋኒስታን"
+ },
+ "UY": {
+ "name": "ኡራጓይ"
+ },
+ "IQ": {
+ "name": "ኢራቅ"
+ },
+ "IR": {
+ "name": "ኢራን"
+ },
+ "ET": {
+ "name": "ኢትዮጵያ"
+ },
+ "ID": {
+ "name": "ኢንዶኔዢያ"
+ },
+ "GQ": {
+ "name": "ኢኳቶሪያሠጊኒ"
+ },
+ "EC": {
+ "name": "ኢኳዶር"
+ },
+ "SV": {
+ "name": "ኤሠሳáˆá‰«á‹¶áˆ­"
+ },
+ "ER": {
+ "name": "ኤርትራ"
+ },
+ "EE": {
+ "name": "ኤስቶኒያ"
+ },
+ "IL": {
+ "name": "እስራኤáˆ"
+ },
+ "GB": {
+ "name": "እንáŒáˆŠá‹"
+ },
+ "OM": {
+ "name": "ኦማን"
+ },
+ "AT": {
+ "name": "ኦስትሪያ"
+ },
+ "CU": {
+ "name": "ኩባ"
+ },
+ "CK": {
+ "name": "ኩክ ደሴቶች"
+ },
+ "KI": {
+ "name": "ኪሪባቲ"
+ },
+ "CM": {
+ "name": "ካሜሩን"
+ },
+ "KH": {
+ "name": "ካáˆá‰¦á‹²á‹«"
+ },
+ "CA": {
+ "name": "ካናዳ"
+ },
+ "KY": {
+ "name": "ካይማን ደሴቶች"
+ },
+ "KE": {
+ "name": "ኬንያ"
+ },
+ "CV": {
+ "name": "ኬᕠቬርዴ"
+ },
+ "HR": {
+ "name": "ክሮኤሽያ"
+ },
+ "KW": {
+ "name": "ክዌት"
+ },
+ "CO": {
+ "name": "ኮሎáˆá‰¢á‹«"
+ },
+ "KM": {
+ "name": "ኮሞሮስ"
+ },
+ "CR": {
+ "name": "ኮስታ ሪካ"
+ },
+ "CI": {
+ "name": "ኮት ዲቯር"
+ },
+ "CD": {
+ "name": "ኮንጎ"
+ },
+ "CG": {
+ "name": "ኮንáŒ"
+ },
+ "CC": {
+ "name": "ኮኮስ ኬሊንጠደሴቶች"
+ },
+ "QA": {
+ "name": "ኳታር"
+ },
+ "WF": {
+ "name": "ዋሊስ እና á‰á‰±áŠ“ ደሴቶች"
+ },
+ "ZW": {
+ "name": "á‹šáˆá‰§á‰¤"
+ },
+ "ZM": {
+ "name": "á‹›áˆá‰¢á‹«"
+ },
+ "YE": {
+ "name": "የመን"
+ },
+ "CF": {
+ "name": "የመካከለኛዠአáሪካ ሪáብሊክ"
+ },
+ "MP": {
+ "name": "የሰሜናዊ ማሪያና ደሴቶች"
+ },
+ "SJ": {
+ "name": "የስቫáˆá‰£áˆ­á‹µ እና ዣን ማየን ደሴቶች"
+ },
+ "IO": {
+ "name": "የብሪታኒያ ህንድ á‹á‰‚ያኖስ áŒá‹›á‰µ"
+ },
+ "AE": {
+ "name": "የተባበሩት አረብ ኤáˆáˆ¬á‰µáˆµ"
+ },
+ "TC": {
+ "name": "የቱርኮችና የካኢኮስ ደሴቶች"
+ },
+ "AX": {
+ "name": "የአላንድ ደሴቶች"
+ },
+ "UM": {
+ "name": "የአሜሪካ ራቅ ያሉ አናሳ ደሴቶች"
+ },
+ "AS": {
+ "name": "የአሜሪካ ሳሞአ"
+ },
+ "VI": {
+ "name": "የአሜሪካ ቨርጂን ደሴቶች"
+ },
+ "VG": {
+ "name": "የእንáŒáˆŠá‹ ድንáŒáˆ ደሴቶች"
+ },
+ "CX": {
+ "name": "የገና ደሴቶች"
+ },
+ "TF": {
+ "name": "የáˆáˆ¨áŠ•áˆ³á‹­ ደቡባዊ áŒá‹›á‰¶á‰½"
+ },
+ "GF": {
+ "name": "የáˆáˆ¨áŠ•áˆ³á‹­ ጉዊአና"
+ },
+ "PF": {
+ "name": "የáˆáˆ¨áŠ•áˆ³á‹­ á–ሊኔዢያ"
+ },
+ "FO": {
+ "name": "የá‹áˆ®á‹­ ደሴቶች"
+ },
+ "PS": {
+ "name": "የááˆáˆµáŒ¤áˆ áŒá‹›á‰µ"
+ },
+ "FK": {
+ "name": "የáŽáˆáŠ­áˆ‹áŠ•á‹µ ደሴቶች"
+ },
+ "UA": {
+ "name": "ዩክሬን"
+ },
+ "UZ": {
+ "name": "á‹©á‹á‰ áŠªáˆµá‰³áŠ•"
+ },
+ "UG": {
+ "name": "ዩጋንዳ"
+ },
+ "ZA": {
+ "name": "ደቡብ አáሪካ"
+ },
+ "KR": {
+ "name": "ደቡብ ኮሪያ"
+ },
+ "GS": {
+ "name": "ደቡብ ጆርጂያ እና የደቡድ ሳንድዊች ደሴቶች"
+ },
+ "DK": {
+ "name": "ዴንማርክ"
+ },
+ "DM": {
+ "name": "ዶሚኒካ"
+ },
+ "DO": {
+ "name": "ዶሚኒክ ሪá‘ብሊክ"
+ },
+ "DE": {
+ "name": "ጀርመን"
+ },
+ "DJ": {
+ "name": "ጂቡቲ"
+ },
+ "JM": {
+ "name": "ጃማይካ"
+ },
+ "JP": {
+ "name": "ጃá“ን"
+ },
+ "JO": {
+ "name": "ጆርዳን"
+ },
+ "GE": {
+ "name": "ጆርጂያ"
+ },
+ "GU": {
+ "name": "ጉዋáˆ"
+ },
+ "GT": {
+ "name": "ጉዋቲማላ"
+ },
+ "GP": {
+ "name": "ጉዋደሉá•"
+ },
+ "GY": {
+ "name": "ጉያና"
+ },
+ "GI": {
+ "name": "ጊብራáˆá‰³áˆ­"
+ },
+ "GN": {
+ "name": "ጊኒ"
+ },
+ "GM": {
+ "name": "ጋáˆá‰¢á‹«"
+ },
+ "GA": {
+ "name": "ጋቦን"
+ },
+ "GH": {
+ "name": "ጋና"
+ },
+ "GL": {
+ "name": "áŒáˆªáŠ•áˆ‹áŠ•á‹µ"
+ },
+ "GR": {
+ "name": "áŒáˆªáŠ­"
+ },
+ "GD": {
+ "name": "áŒáˆ¬áŠ“ዳ"
+ },
+ "EG": {
+ "name": "áŒá‰¥áŒ½"
+ },
+ "IT": {
+ "name": "ጣሊያን"
+ },
+ "FR": {
+ "name": "áˆáˆ¨áŠ•áˆ³á‹­"
+ },
+ "PH": {
+ "name": "áŠáˆŠá’ንስ"
+ },
+ "FI": {
+ "name": "áŠáŠ•áˆ‹áŠ•á‹µ"
+ },
+ "FJ": {
+ "name": "áŠáŒ‚"
+ },
+ "PN": {
+ "name": "á’ትካኢርን"
+ },
+ "PW": {
+ "name": "á“ላá‹"
+ },
+ "PY": {
+ "name": "á“ራጓይ"
+ },
+ "PA": {
+ "name": "á“ናማ"
+ },
+ "PK": {
+ "name": "á“ኪስታን"
+ },
+ "PG": {
+ "name": "á“á‘á‹‹ ኒዠጊኒ"
+ },
+ "PE": {
+ "name": "á”ሩ"
+ },
+ "PL": {
+ "name": "á–ላንድ"
+ },
+ "PT": {
+ "name": "á–ርቱጋáˆ"
+ },
+ "PR": {
+ "name": "á–ርታ ሪኮ"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/country/to.json b/library/intl/resources/country/to.json
new file mode 100644
index 000000000..645648731
--- /dev/null
+++ b/library/intl/resources/country/to.json
@@ -0,0 +1,761 @@
+{
+ "AI": {
+ "name": "Anikuila"
+ },
+ "AG": {
+ "name": "Anitikua mo Palaputa"
+ },
+ "FR": {
+ "name": "Falanisē"
+ },
+ "PH": {
+ "name": "Filipaini"
+ },
+ "FI": {
+ "name": "Finilani"
+ },
+ "FJ": {
+ "name": "Fisi"
+ },
+ "WS": {
+ "name": "Haʻamoa"
+ },
+ "AS": {
+ "name": "Haʻamoa ʻAmelika"
+ },
+ "HT": {
+ "name": "Haiti"
+ },
+ "NL": {
+ "name": "HÅlani"
+ },
+ "HK": {
+ "name": "Hongi Kongi SAR Siaina"
+ },
+ "HN": {
+ "name": "Honitulasi"
+ },
+ "HU": {
+ "name": "Hungakalia"
+ },
+ "IE": {
+ "name": "ʻAealani"
+ },
+ "AF": {
+ "name": "Ê»AfikÄnisitani"
+ },
+ "ZA": {
+ "name": "ʻAfilika tonga"
+ },
+ "IS": {
+ "name": "ʻAisilani"
+ },
+ "DZ": {
+ "name": "ʻAisilia"
+ },
+ "AE": {
+ "name": "ʻAlepea Fakatahataha"
+ },
+ "AL": {
+ "name": "ʻAlipania"
+ },
+ "AW": {
+ "name": "ʻAlupa"
+ },
+ "AM": {
+ "name": "ʻĀmenia"
+ },
+ "AO": {
+ "name": "ʻAngikola"
+ },
+ "AQ": {
+ "name": "Ê»AnitÄtika"
+ },
+ "AD": {
+ "name": "ʻAnitola"
+ },
+ "AU": {
+ "name": "ʻAositelēlia"
+ },
+ "AT": {
+ "name": "ʻAositulia"
+ },
+ "AZ": {
+ "name": "ʻAsapaisani"
+ },
+ "AR": {
+ "name": "ʻAsenitina"
+ },
+ "GQ": {
+ "name": "ʻEkueta Kini"
+ },
+ "EC": {
+ "name": "ʻEkuetoa"
+ },
+ "SV": {
+ "name": "ʻEle Salavatoa"
+ },
+ "ER": {
+ "name": "ʻElitulia"
+ },
+ "EE": {
+ "name": "Ê»EsitÅnia"
+ },
+ "IQ": {
+ "name": "ʻIlaaki"
+ },
+ "IR": {
+ "name": "ʻIlaani"
+ },
+ "IN": {
+ "name": "ʻInitia"
+ },
+ "ID": {
+ "name": "ʻInitonēsia"
+ },
+ "IL": {
+ "name": "ʻIsileli"
+ },
+ "EG": {
+ "name": "ʻIsipite"
+ },
+ "IT": {
+ "name": "ʻĪtali"
+ },
+ "ET": {
+ "name": "ʻĪtiÅpia"
+ },
+ "UG": {
+ "name": "Ê»IukanitÄ"
+ },
+ "OM": {
+ "name": "ʻOmani"
+ },
+ "FO": {
+ "name": "ʻOtumotu Faloe"
+ },
+ "FK": {
+ "name": "ʻOtumotu Fokulani"
+ },
+ "AX": {
+ "name": "ʻOtumotu ʻAlani"
+ },
+ "IC": {
+ "name": "ʻOtumotu Kaneli"
+ },
+ "KY": {
+ "name": "ʻOtumotu Keimeni"
+ },
+ "CC": {
+ "name": "ʻOtumotu Koko"
+ },
+ "CK": {
+ "name": "ʻOtumotu Kuki"
+ },
+ "MP": {
+ "name": "ʻOtumotu Maliana tokelau"
+ },
+ "MH": {
+ "name": "Ê»Otumotu MÄsolo"
+ },
+ "PN": {
+ "name": "ʻOtumotu Pitikeni"
+ },
+ "SC": {
+ "name": "ʻOtumotu Seiseli"
+ },
+ "GS": {
+ "name": "Ê»Otumotu SeÅsia-tonga mo Saniuisi-tonga"
+ },
+ "UM": {
+ "name": "ʻOtumotu siʻi ʻo ʻAmelika"
+ },
+ "SB": {
+ "name": "ʻOtumotu Solomone"
+ },
+ "TC": {
+ "name": "ʻOtumotu Tuki mo Kaikosi"
+ },
+ "VI": {
+ "name": "ʻOtumotu Vilikini fakaʻamelika"
+ },
+ "VG": {
+ "name": "Ê»Otumotu Vilikini fakapilitÄnia"
+ },
+ "UA": {
+ "name": "ʻŪkalaʻine"
+ },
+ "UY": {
+ "name": "ʻUlukuai"
+ },
+ "UZ": {
+ "name": "ʻUsipekitani"
+ },
+ "WF": {
+ "name": "ʻUvea mo Futuna"
+ },
+ "YE": {
+ "name": "Iemeni"
+ },
+ "BQ": {
+ "name": "Kalipiane fakahÅlani"
+ },
+ "GR": {
+ "name": "Kalisi"
+ },
+ "CM": {
+ "name": "Kameluni"
+ },
+ "GM": {
+ "name": "Kamipia"
+ },
+ "KH": {
+ "name": "KamipÅtia"
+ },
+ "GH": {
+ "name": "Kana"
+ },
+ "CA": {
+ "name": "KÄnata"
+ },
+ "GA": {
+ "name": "Kaponi"
+ },
+ "KZ": {
+ "name": "Kasakitani"
+ },
+ "QA": {
+ "name": "KatÄ"
+ },
+ "GD": {
+ "name": "KelenatÄ"
+ },
+ "KE": {
+ "name": "KeniÄ"
+ },
+ "KG": {
+ "name": "KÄ«kisitani"
+ },
+ "KI": {
+ "name": "Kilipasi"
+ },
+ "GN": {
+ "name": "Kini"
+ },
+ "GW": {
+ "name": "Kini-Pisau"
+ },
+ "CU": {
+ "name": "Kiupa"
+ },
+ "KP": {
+ "name": "KÅlea tokelau"
+ },
+ "KR": {
+ "name": "KÅlea tonga"
+ },
+ "VA": {
+ "name": "Kolo Vatikani"
+ },
+ "CO": {
+ "name": "Kolomipia"
+ },
+ "KM": {
+ "name": "Komolosi"
+ },
+ "CD": {
+ "name": "Kongo - Kinisasa"
+ },
+ "CG": {
+ "name": "Kongo - Palasavila"
+ },
+ "CR": {
+ "name": "Kosita Lika"
+ },
+ "XK": {
+ "name": "KÅsovo"
+ },
+ "GU": {
+ "name": "Kuamu"
+ },
+ "GP": {
+ "name": "Kuatalupe"
+ },
+ "GT": {
+ "name": "Kuatamala"
+ },
+ "KW": {
+ "name": "Kueiti"
+ },
+ "GG": {
+ "name": "Kuenisī"
+ },
+ "GY": {
+ "name": "Kuiana"
+ },
+ "GF": {
+ "name": "Kuiana fakafalanisē"
+ },
+ "CW": {
+ "name": "Kulasao"
+ },
+ "GL": {
+ "name": "Kulinilani"
+ },
+ "HR": {
+ "name": "Kuloisia"
+ },
+ "LR": {
+ "name": "Laipelia"
+ },
+ "LU": {
+ "name": "Lakisimipeki"
+ },
+ "LV": {
+ "name": "Lativia"
+ },
+ "LA": {
+ "name": "Lau"
+ },
+ "LB": {
+ "name": "Lepanoni"
+ },
+ "LS": {
+ "name": "Lesoto"
+ },
+ "RE": {
+ "name": "LÄ“unioni"
+ },
+ "LI": {
+ "name": "Likitenisiteini"
+ },
+ "CF": {
+ "name": "Lipapilika ʻAfilika Lotoloto"
+ },
+ "CZ": {
+ "name": "Lipapilika Seki"
+ },
+ "DO": {
+ "name": "Lipapilika Tominika"
+ },
+ "LY": {
+ "name": "LÄ«pia"
+ },
+ "LT": {
+ "name": "Lituania"
+ },
+ "RO": {
+ "name": "Lomēnia"
+ },
+ "RW": {
+ "name": "LuanitÄ"
+ },
+ "RU": {
+ "name": "LÅ«sia"
+ },
+ "YT": {
+ "name": "Maiote"
+ },
+ "MO": {
+ "name": "Makau SAR Siaina"
+ },
+ "MV": {
+ "name": "Malativisi"
+ },
+ "MW": {
+ "name": "Malaui"
+ },
+ "MY": {
+ "name": "Malēsia"
+ },
+ "ML": {
+ "name": "MÄli"
+ },
+ "MT": {
+ "name": "Malita"
+ },
+ "MK": {
+ "name": "MasetÅnia"
+ },
+ "CI": {
+ "name": "Matafonua ʻAivolī"
+ },
+ "MG": {
+ "name": "Matakasika"
+ },
+ "MQ": {
+ "name": "MÄteniki"
+ },
+ "MR": {
+ "name": "Maulitenia"
+ },
+ "MU": {
+ "name": "Maulitiusi"
+ },
+ "MX": {
+ "name": "Mekisikou"
+ },
+ "FM": {
+ "name": "Mikolonīsia"
+ },
+ "MS": {
+ "name": "Moʻungaselati"
+ },
+ "MA": {
+ "name": "Moloko"
+ },
+ "MD": {
+ "name": "Molotova"
+ },
+ "MC": {
+ "name": "Monako"
+ },
+ "MN": {
+ "name": "MongokÅlia"
+ },
+ "ME": {
+ "name": "Monitenikalo"
+ },
+ "MZ": {
+ "name": "Mosēmipiki"
+ },
+ "AC": {
+ "name": "Motu ʻAsenisini"
+ },
+ "CX": {
+ "name": "Motu Kilisimasi"
+ },
+ "IM": {
+ "name": "Motu Mani"
+ },
+ "NF": {
+ "name": "Motu NÅfoliki"
+ },
+ "CV": {
+ "name": "Muiʻi Vēte"
+ },
+ "NG": {
+ "name": "Naisilia"
+ },
+ "NA": {
+ "name": "Namipia"
+ },
+ "NR": {
+ "name": "Naulu"
+ },
+ "NP": {
+ "name": "Nepali"
+ },
+ "NI": {
+ "name": "Nikalakua"
+ },
+ "NE": {
+ "name": "Nisia"
+ },
+ "NC": {
+ "name": "Niu KaletÅnia"
+ },
+ "NU": {
+ "name": "Niuē"
+ },
+ "NO": {
+ "name": "Noauē"
+ },
+ "NZ": {
+ "name": "Nuʻusila"
+ },
+ "BS": {
+ "name": "Pahama"
+ },
+ "PK": {
+ "name": "PÄkisitani"
+ },
+ "PY": {
+ "name": "Palakuai"
+ },
+ "BR": {
+ "name": "PalÄsili"
+ },
+ "PW": {
+ "name": "Palau"
+ },
+ "BH": {
+ "name": "Paleini"
+ },
+ "PA": {
+ "name": "PanamÄ"
+ },
+ "BB": {
+ "name": "PÄpeitosi"
+ },
+ "PG": {
+ "name": "Papuaniukini"
+ },
+ "BF": {
+ "name": "Pekano Faso"
+ },
+ "BY": {
+ "name": "Pelalusi"
+ },
+ "BE": {
+ "name": "Pelesiume"
+ },
+ "BZ": {
+ "name": "Pelise"
+ },
+ "PE": {
+ "name": "Pelū"
+ },
+ "MM": {
+ "name": "Pema"
+ },
+ "BM": {
+ "name": "PÄ“muta"
+ },
+ "BD": {
+ "name": "PengilÄtesi"
+ },
+ "BJ": {
+ "name": "Penini"
+ },
+ "GB": {
+ "name": "PilitÄnia"
+ },
+ "PL": {
+ "name": "Polani"
+ },
+ "PF": {
+ "name": "Polinisia fakafalanisē"
+ },
+ "BO": {
+ "name": "Polīvia"
+ },
+ "BA": {
+ "name": "Posinia mo HesikÅvina"
+ },
+ "BW": {
+ "name": "Potisiuana"
+ },
+ "IO": {
+ "name": "Potu fonua moana Ê»Initia fakapilitÄnia"
+ },
+ "TF": {
+ "name": "Potu fonua tonga fakafalanisē"
+ },
+ "PS": {
+ "name": "Potu Palesitaine"
+ },
+ "PT": {
+ "name": "Potukali"
+ },
+ "PR": {
+ "name": "Pueto Liko"
+ },
+ "US": {
+ "name": "Puleʻanga fakatahataha ʻAmelika"
+ },
+ "BG": {
+ "name": "Pulukalia"
+ },
+ "BN": {
+ "name": "Pulunei"
+ },
+ "BI": {
+ "name": "Puluniti"
+ },
+ "BT": {
+ "name": "PÅ«tani"
+ },
+ "SH": {
+ "name": "SÄ Helena"
+ },
+ "KN": {
+ "name": "SÄ Kitisi mo Nevisi"
+ },
+ "LC": {
+ "name": "SÄ LÅ«sia"
+ },
+ "SM": {
+ "name": "SÄ Malino"
+ },
+ "MF": {
+ "name": "SÄ MÄtini (fakafalanisÄ“)"
+ },
+ "SX": {
+ "name": "SÄ MÄtini (fakahÅlani)"
+ },
+ "BL": {
+ "name": "SÄ PatÄ“lemi"
+ },
+ "PM": {
+ "name": "SÄ Piea mo Mikeloni"
+ },
+ "VC": {
+ "name": "SÄ Viniseni mo Kulenatini"
+ },
+ "EH": {
+ "name": "Sahala fakahihifo"
+ },
+ "CY": {
+ "name": "Saipalesi"
+ },
+ "JM": {
+ "name": "Samaika"
+ },
+ "ST": {
+ "name": "Sao Tomē mo Pilinisipe"
+ },
+ "TD": {
+ "name": "SÄti"
+ },
+ "SA": {
+ "name": "Saute ʻAlepea"
+ },
+ "JE": {
+ "name": "Selusī"
+ },
+ "ZM": {
+ "name": "Semipia"
+ },
+ "SN": {
+ "name": "Senekalo"
+ },
+ "GE": {
+ "name": "SeÅsia"
+ },
+ "RS": {
+ "name": "SÄ“pia"
+ },
+ "CN": {
+ "name": "Siaina"
+ },
+ "DE": {
+ "name": "Siamane"
+ },
+ "JP": {
+ "name": "Siapani"
+ },
+ "SL": {
+ "name": "Siela Leone"
+ },
+ "LK": {
+ "name": "SÄ«langikÄ"
+ },
+ "CL": {
+ "name": "Sili"
+ },
+ "SY": {
+ "name": "SÄ«lia"
+ },
+ "SK": {
+ "name": "SilÅvakia"
+ },
+ "SI": {
+ "name": "SilÅvenia"
+ },
+ "ZW": {
+ "name": "Simipapuei"
+ },
+ "SG": {
+ "name": "Singapoa"
+ },
+ "GI": {
+ "name": "SipalÄlitÄ"
+ },
+ "ES": {
+ "name": "Sipeini"
+ },
+ "DJ": {
+ "name": "Siputi"
+ },
+ "EA": {
+ "name": "Siuta mo Melila"
+ },
+ "SJ": {
+ "name": "SivolopÄti mo Sani Maieni"
+ },
+ "JO": {
+ "name": "Soatane"
+ },
+ "SO": {
+ "name": "SÅmalia"
+ },
+ "SZ": {
+ "name": "Suasilani"
+ },
+ "SE": {
+ "name": "Suēteni"
+ },
+ "CH": {
+ "name": "Suisilani"
+ },
+ "SR": {
+ "name": "Suliname"
+ },
+ "SS": {
+ "name": "SÅ«tani fakatonga"
+ },
+ "SD": {
+ "name": "SÅ«teni"
+ },
+ "TH": {
+ "name": "Tailani"
+ },
+ "TW": {
+ "name": "Taiuani"
+ },
+ "TJ": {
+ "name": "Tasikitani"
+ },
+ "DK": {
+ "name": "Tenimaʻake"
+ },
+ "TZ": {
+ "name": "TenisÄnia"
+ },
+ "DG": {
+ "name": "Tieko KÄsia"
+ },
+ "TT": {
+ "name": "Tilinitati mo Topako"
+ },
+ "TL": {
+ "name": "Timoa Hahake"
+ },
+ "TR": {
+ "name": "Toake"
+ },
+ "TK": {
+ "name": "Tokelau"
+ },
+ "TG": {
+ "name": "Toko"
+ },
+ "DM": {
+ "name": "Tominika"
+ },
+ "TO": {
+ "name": "Tonga"
+ },
+ "TM": {
+ "name": "TÅ«kimenisitani"
+ },
+ "TA": {
+ "name": "Tulisiteni ta Kunuha"
+ },
+ "TN": {
+ "name": "Tunīsia"
+ },
+ "TV": {
+ "name": "TÅ«valu"
+ },
+ "VU": {
+ "name": "Vanuatu"
+ },
+ "VE": {
+ "name": "Venesuela"
+ },
+ "VN": {
+ "name": "Vietinami"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/country/tr.json b/library/intl/resources/country/tr.json
new file mode 100644
index 000000000..1db15e74b
--- /dev/null
+++ b/library/intl/resources/country/tr.json
@@ -0,0 +1,761 @@
+{
+ "US": {
+ "name": "ABD"
+ },
+ "UM": {
+ "name": "ABD Uzak Adaları"
+ },
+ "VI": {
+ "name": "ABD Virjin Adaları"
+ },
+ "AF": {
+ "name": "Afganistan"
+ },
+ "AX": {
+ "name": "Åland Adaları"
+ },
+ "DE": {
+ "name": "Almanya"
+ },
+ "AS": {
+ "name": "Amerikan Samoası"
+ },
+ "AD": {
+ "name": "Andorra"
+ },
+ "AO": {
+ "name": "Angola"
+ },
+ "AI": {
+ "name": "Anguilla"
+ },
+ "AQ": {
+ "name": "Antarktika"
+ },
+ "AG": {
+ "name": "Antigua ve Barbuda"
+ },
+ "AR": {
+ "name": "Arjantin"
+ },
+ "AL": {
+ "name": "Arnavutluk"
+ },
+ "AW": {
+ "name": "Aruba"
+ },
+ "AC": {
+ "name": "Ascension Adası"
+ },
+ "AU": {
+ "name": "Avustralya"
+ },
+ "AT": {
+ "name": "Avusturya"
+ },
+ "AZ": {
+ "name": "Azerbaycan"
+ },
+ "BS": {
+ "name": "Bahamalar"
+ },
+ "BH": {
+ "name": "Bahreyn"
+ },
+ "BD": {
+ "name": "BangladeÅŸ"
+ },
+ "BB": {
+ "name": "Barbados"
+ },
+ "EH": {
+ "name": "Batı Sahara"
+ },
+ "BE": {
+ "name": "Belçika"
+ },
+ "BZ": {
+ "name": "Belize"
+ },
+ "BJ": {
+ "name": "Benin"
+ },
+ "BM": {
+ "name": "Bermuda"
+ },
+ "BY": {
+ "name": "Beyaz Rusya"
+ },
+ "AE": {
+ "name": "BirleÅŸik Arap Emirlikleri"
+ },
+ "GB": {
+ "name": "Birleşik Krallık"
+ },
+ "BO": {
+ "name": "Bolivya"
+ },
+ "BA": {
+ "name": "Bosna Hersek"
+ },
+ "BW": {
+ "name": "Botsvana"
+ },
+ "BR": {
+ "name": "Brezilya"
+ },
+ "IO": {
+ "name": "Britanya Hint Okyanusu Toprakları"
+ },
+ "VG": {
+ "name": "Britanya Virjin Adaları"
+ },
+ "BN": {
+ "name": "Brunei"
+ },
+ "BG": {
+ "name": "Bulgaristan"
+ },
+ "BF": {
+ "name": "Burkina Faso"
+ },
+ "BI": {
+ "name": "Burundi"
+ },
+ "BT": {
+ "name": "Butan"
+ },
+ "CV": {
+ "name": "Cape Verde"
+ },
+ "KY": {
+ "name": "Cayman Adaları"
+ },
+ "GI": {
+ "name": "Cebelitarık"
+ },
+ "DZ": {
+ "name": "Cezayir"
+ },
+ "CX": {
+ "name": "Christmas Adası"
+ },
+ "DJ": {
+ "name": "Cibuti"
+ },
+ "CC": {
+ "name": "Cocos (Keeling) Adaları"
+ },
+ "CK": {
+ "name": "Cook Adaları"
+ },
+ "CW": {
+ "name": "Curaçao"
+ },
+ "TD": {
+ "name": "Çad"
+ },
+ "CZ": {
+ "name": "Çek Cumhuriyeti"
+ },
+ "CN": {
+ "name": "Çin"
+ },
+ "HK": {
+ "name": "Çin Hong Kong ÖYB"
+ },
+ "MO": {
+ "name": "Çin Makao ÖYB"
+ },
+ "DK": {
+ "name": "Danimarka"
+ },
+ "DG": {
+ "name": "Diego Garcia"
+ },
+ "DO": {
+ "name": "Dominik Cumhuriyeti"
+ },
+ "DM": {
+ "name": "Dominika"
+ },
+ "EC": {
+ "name": "Ekvador"
+ },
+ "GQ": {
+ "name": "Ekvator Ginesi"
+ },
+ "SV": {
+ "name": "El Salvador"
+ },
+ "ID": {
+ "name": "Endonezya"
+ },
+ "ER": {
+ "name": "Eritre"
+ },
+ "AM": {
+ "name": "Ermenistan"
+ },
+ "EE": {
+ "name": "Estonya"
+ },
+ "ET": {
+ "name": "Etiyopya"
+ },
+ "FK": {
+ "name": "Falkland Adaları"
+ },
+ "FO": {
+ "name": "Faroe Adaları"
+ },
+ "MA": {
+ "name": "Fas"
+ },
+ "FJ": {
+ "name": "Fiji"
+ },
+ "CI": {
+ "name": "FildiÅŸi Sahili"
+ },
+ "PH": {
+ "name": "Filipinler"
+ },
+ "PS": {
+ "name": "Filistin Bölgeleri"
+ },
+ "FI": {
+ "name": "Finlandiya"
+ },
+ "FR": {
+ "name": "Fransa"
+ },
+ "GF": {
+ "name": "Fransız Guyanası"
+ },
+ "TF": {
+ "name": "Fransız Güney Toprakları"
+ },
+ "PF": {
+ "name": "Fransız Polinezyası"
+ },
+ "GA": {
+ "name": "Gabon"
+ },
+ "GM": {
+ "name": "Gambiya"
+ },
+ "GH": {
+ "name": "Gana"
+ },
+ "GN": {
+ "name": "Gine"
+ },
+ "GW": {
+ "name": "Gine-Bissau"
+ },
+ "GD": {
+ "name": "Grenada"
+ },
+ "GL": {
+ "name": "Grönland"
+ },
+ "GP": {
+ "name": "Guadalupe"
+ },
+ "GU": {
+ "name": "Guam"
+ },
+ "GT": {
+ "name": "Guatemala"
+ },
+ "GG": {
+ "name": "Guernsey"
+ },
+ "GY": {
+ "name": "Guyana"
+ },
+ "ZA": {
+ "name": "Güney Afrika"
+ },
+ "GS": {
+ "name": "Güney Georgia ve Güney Sandwich Adaları"
+ },
+ "CY": {
+ "name": "Güney Kıbrıs Rum Kesimi"
+ },
+ "KR": {
+ "name": "Güney Kore"
+ },
+ "SS": {
+ "name": "Güney Sudan"
+ },
+ "GE": {
+ "name": "Gürcistan"
+ },
+ "HT": {
+ "name": "Haiti"
+ },
+ "HR": {
+ "name": "Hırvatistan"
+ },
+ "IN": {
+ "name": "Hindistan"
+ },
+ "NL": {
+ "name": "Hollanda"
+ },
+ "HN": {
+ "name": "Honduras"
+ },
+ "IQ": {
+ "name": "Irak"
+ },
+ "IR": {
+ "name": "Ä°ran"
+ },
+ "IE": {
+ "name": "Ä°rlanda"
+ },
+ "ES": {
+ "name": "Ä°spanya"
+ },
+ "IL": {
+ "name": "Ä°srail"
+ },
+ "SE": {
+ "name": "İsveç"
+ },
+ "CH": {
+ "name": "İsviçre"
+ },
+ "IT": {
+ "name": "Ä°talya"
+ },
+ "IS": {
+ "name": "Ä°zlanda"
+ },
+ "JM": {
+ "name": "Jamaika"
+ },
+ "JP": {
+ "name": "Japonya"
+ },
+ "JE": {
+ "name": "Jersey"
+ },
+ "KH": {
+ "name": "Kamboçya"
+ },
+ "CM": {
+ "name": "Kamerun"
+ },
+ "CA": {
+ "name": "Kanada"
+ },
+ "IC": {
+ "name": "Kanarya Adaları"
+ },
+ "ME": {
+ "name": "KaradaÄŸ"
+ },
+ "BQ": {
+ "name": "Karayip Hollanda"
+ },
+ "QA": {
+ "name": "Katar"
+ },
+ "KZ": {
+ "name": "Kazakistan"
+ },
+ "KE": {
+ "name": "Kenya"
+ },
+ "KG": {
+ "name": "Kırgızistan"
+ },
+ "KI": {
+ "name": "Kiribati"
+ },
+ "CO": {
+ "name": "Kolombiya"
+ },
+ "KM": {
+ "name": "Komorlar"
+ },
+ "CG": {
+ "name": "Kongo - Brazavil"
+ },
+ "CD": {
+ "name": "Kongo - KinÅŸasa"
+ },
+ "XK": {
+ "name": "Kosova"
+ },
+ "CR": {
+ "name": "Kosta Rika"
+ },
+ "KW": {
+ "name": "Kuveyt"
+ },
+ "KP": {
+ "name": "Kuzey Kore"
+ },
+ "MP": {
+ "name": "Kuzey Mariana Adaları"
+ },
+ "CU": {
+ "name": "Küba"
+ },
+ "LA": {
+ "name": "Laos"
+ },
+ "LS": {
+ "name": "Lesoto"
+ },
+ "LV": {
+ "name": "Letonya"
+ },
+ "LR": {
+ "name": "Liberya"
+ },
+ "LY": {
+ "name": "Libya"
+ },
+ "LI": {
+ "name": "Liechtenstein"
+ },
+ "LT": {
+ "name": "Litvanya"
+ },
+ "LB": {
+ "name": "Lübnan"
+ },
+ "LU": {
+ "name": "Lüksemburg"
+ },
+ "HU": {
+ "name": "Macaristan"
+ },
+ "MG": {
+ "name": "Madagaskar"
+ },
+ "MK": {
+ "name": "Makedonya"
+ },
+ "MW": {
+ "name": "Malavi"
+ },
+ "MV": {
+ "name": "Maldivler"
+ },
+ "MY": {
+ "name": "Malezya"
+ },
+ "ML": {
+ "name": "Mali"
+ },
+ "MT": {
+ "name": "Malta"
+ },
+ "IM": {
+ "name": "Man Adası"
+ },
+ "MH": {
+ "name": "Marshall Adaları"
+ },
+ "MQ": {
+ "name": "Martinik"
+ },
+ "MU": {
+ "name": "Mauritius"
+ },
+ "YT": {
+ "name": "Mayotte"
+ },
+ "MX": {
+ "name": "Meksika"
+ },
+ "EG": {
+ "name": "Mısır"
+ },
+ "FM": {
+ "name": "Mikronezya"
+ },
+ "MN": {
+ "name": "MoÄŸolistan"
+ },
+ "MD": {
+ "name": "Moldova"
+ },
+ "MC": {
+ "name": "Monako"
+ },
+ "MS": {
+ "name": "Montserrat"
+ },
+ "MR": {
+ "name": "Moritanya"
+ },
+ "MZ": {
+ "name": "Mozambik"
+ },
+ "MM": {
+ "name": "Myanmar (Burma)"
+ },
+ "NA": {
+ "name": "Namibya"
+ },
+ "NR": {
+ "name": "Nauru"
+ },
+ "NP": {
+ "name": "Nepal"
+ },
+ "NE": {
+ "name": "Nijer"
+ },
+ "NG": {
+ "name": "Nijerya"
+ },
+ "NI": {
+ "name": "Nikaragua"
+ },
+ "NU": {
+ "name": "Niue"
+ },
+ "NF": {
+ "name": "Norfolk Adası"
+ },
+ "NO": {
+ "name": "Norveç"
+ },
+ "CF": {
+ "name": "Orta Afrika Cumhuriyeti"
+ },
+ "UZ": {
+ "name": "Özbekistan"
+ },
+ "PK": {
+ "name": "Pakistan"
+ },
+ "PW": {
+ "name": "Palau"
+ },
+ "PA": {
+ "name": "Panama"
+ },
+ "PG": {
+ "name": "Papua Yeni Gine"
+ },
+ "PY": {
+ "name": "Paraguay"
+ },
+ "PE": {
+ "name": "Peru"
+ },
+ "PN": {
+ "name": "Pitcairn Adaları"
+ },
+ "PL": {
+ "name": "Polonya"
+ },
+ "PT": {
+ "name": "Portekiz"
+ },
+ "PR": {
+ "name": "Porto Riko"
+ },
+ "RE": {
+ "name": "Réunion"
+ },
+ "RO": {
+ "name": "Romanya"
+ },
+ "RW": {
+ "name": "Ruanda"
+ },
+ "RU": {
+ "name": "Rusya"
+ },
+ "BL": {
+ "name": "Saint Barthelemy"
+ },
+ "SH": {
+ "name": "Saint Helena"
+ },
+ "KN": {
+ "name": "Saint Kitts ve Nevis"
+ },
+ "LC": {
+ "name": "Saint Lucia"
+ },
+ "MF": {
+ "name": "Saint Martin"
+ },
+ "PM": {
+ "name": "Saint Pierre ve Miquelon"
+ },
+ "VC": {
+ "name": "Saint Vincent ve Grenadinler"
+ },
+ "WS": {
+ "name": "Samoa"
+ },
+ "SM": {
+ "name": "San Marino"
+ },
+ "ST": {
+ "name": "São Tomé ve Príncipe"
+ },
+ "SN": {
+ "name": "Senegal"
+ },
+ "EA": {
+ "name": "Septe ve Melilla"
+ },
+ "SC": {
+ "name": "SeyÅŸeller"
+ },
+ "RS": {
+ "name": "Sırbistan"
+ },
+ "SL": {
+ "name": "Sierra Leone"
+ },
+ "SG": {
+ "name": "Singapur"
+ },
+ "SX": {
+ "name": "Sint Maarten"
+ },
+ "SK": {
+ "name": "Slovakya"
+ },
+ "SI": {
+ "name": "Slovenya"
+ },
+ "SB": {
+ "name": "Solomon Adaları"
+ },
+ "SO": {
+ "name": "Somali"
+ },
+ "LK": {
+ "name": "Sri Lanka"
+ },
+ "SD": {
+ "name": "Sudan"
+ },
+ "SR": {
+ "name": "Surinam"
+ },
+ "SY": {
+ "name": "Suriye"
+ },
+ "SA": {
+ "name": "Suudi Arabistan"
+ },
+ "SJ": {
+ "name": "Svalbard ve Jan Mayen Adaları"
+ },
+ "SZ": {
+ "name": "Svaziland"
+ },
+ "CL": {
+ "name": "Åžili"
+ },
+ "TJ": {
+ "name": "Tacikistan"
+ },
+ "TZ": {
+ "name": "Tanzanya"
+ },
+ "TH": {
+ "name": "Tayland"
+ },
+ "TW": {
+ "name": "Tayvan"
+ },
+ "TL": {
+ "name": "Timor-Leste"
+ },
+ "TG": {
+ "name": "Togo"
+ },
+ "TK": {
+ "name": "Tokelau"
+ },
+ "TO": {
+ "name": "Tonga"
+ },
+ "TT": {
+ "name": "Trinidad ve Tobago"
+ },
+ "TA": {
+ "name": "Tristan da Cunha"
+ },
+ "TN": {
+ "name": "Tunus"
+ },
+ "TC": {
+ "name": "Turks ve Caicos Adaları"
+ },
+ "TV": {
+ "name": "Tuvalu"
+ },
+ "TR": {
+ "name": "Türkiye"
+ },
+ "TM": {
+ "name": "Türkmenistan"
+ },
+ "UG": {
+ "name": "Uganda"
+ },
+ "UA": {
+ "name": "Ukrayna"
+ },
+ "OM": {
+ "name": "Umman"
+ },
+ "UY": {
+ "name": "Uruguay"
+ },
+ "JO": {
+ "name": "Ürdün"
+ },
+ "VU": {
+ "name": "Vanuatu"
+ },
+ "VA": {
+ "name": "Vatikan"
+ },
+ "VE": {
+ "name": "Venezuela"
+ },
+ "VN": {
+ "name": "Vietnam"
+ },
+ "WF": {
+ "name": "Wallis ve Futuna Adaları"
+ },
+ "YE": {
+ "name": "Yemen"
+ },
+ "NC": {
+ "name": "Yeni Kaledonya"
+ },
+ "NZ": {
+ "name": "Yeni Zelanda"
+ },
+ "GR": {
+ "name": "Yunanistan"
+ },
+ "ZM": {
+ "name": "Zambiya"
+ },
+ "ZW": {
+ "name": "Zimbabve"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/country/twq.json b/library/intl/resources/country/twq.json
new file mode 100644
index 000000000..7d2210638
--- /dev/null
+++ b/library/intl/resources/country/twq.json
@@ -0,0 +1,761 @@
+{
+ "AF": {
+ "name": "Afgaanistan"
+ },
+ "AX": {
+ "name": "Ã…land Islands"
+ },
+ "AL": {
+ "name": "Albaani"
+ },
+ "GB": {
+ "name": "Albaasalaama Marganta"
+ },
+ "DE": {
+ "name": "Almaaɲe"
+ },
+ "DZ": {
+ "name": "Alžeeri"
+ },
+ "VI": {
+ "name": "Ameerik Virgin Gungey"
+ },
+ "US": {
+ "name": "Ameriki Laabu Margantey"
+ },
+ "AS": {
+ "name": "Ameriki Samoa"
+ },
+ "AD": {
+ "name": "Andoora"
+ },
+ "AI": {
+ "name": "Angiiya"
+ },
+ "AO": {
+ "name": "Angoola"
+ },
+ "AQ": {
+ "name": "Antarctica"
+ },
+ "AG": {
+ "name": "Antigua nda Barbuuda"
+ },
+ "AR": {
+ "name": "Argentine"
+ },
+ "AM": {
+ "name": "Armeeni"
+ },
+ "AW": {
+ "name": "Aruuba"
+ },
+ "AC": {
+ "name": "Ascension Island"
+ },
+ "IS": {
+ "name": "Ayseland"
+ },
+ "AZ": {
+ "name": "Azerbaayijaŋ"
+ },
+ "BS": {
+ "name": "Bahamas"
+ },
+ "BH": {
+ "name": "Bahareen"
+ },
+ "BD": {
+ "name": "Bangladeši"
+ },
+ "BB": {
+ "name": "Barbaados"
+ },
+ "BE": {
+ "name": "Belgiiki"
+ },
+ "BZ": {
+ "name": "Beliizi"
+ },
+ "BJ": {
+ "name": "Beniŋ"
+ },
+ "BM": {
+ "name": "Bermuda"
+ },
+ "BY": {
+ "name": "Biloriši"
+ },
+ "BO": {
+ "name": "Boolivi"
+ },
+ "BA": {
+ "name": "Bosni nda Herzegovine"
+ },
+ "BW": {
+ "name": "Botswaana"
+ },
+ "BR": {
+ "name": "Breezil"
+ },
+ "IO": {
+ "name": "Britiši Indu teekoo laama"
+ },
+ "VG": {
+ "name": "Britiši Virgin gungey"
+ },
+ "BN": {
+ "name": "Bruunee"
+ },
+ "BG": {
+ "name": "Bulgaari"
+ },
+ "BF": {
+ "name": "Burkina faso"
+ },
+ "BI": {
+ "name": "Burundi"
+ },
+ "BT": {
+ "name": "Buutaŋ"
+ },
+ "TD": {
+ "name": "Caadu"
+ },
+ "IC": {
+ "name": "Canary Islands"
+ },
+ "BQ": {
+ "name": "Caribbean Netherlands"
+ },
+ "CZ": {
+ "name": "Cek labo"
+ },
+ "CF": {
+ "name": "Centraafriki koyra"
+ },
+ "EA": {
+ "name": "Ceuta & Melilla"
+ },
+ "CX": {
+ "name": "Christmas Island"
+ },
+ "CC": {
+ "name": "Cocos (Keeling) Islands"
+ },
+ "CW": {
+ "name": "Curaçao"
+ },
+ "DK": {
+ "name": "Danemark"
+ },
+ "DG": {
+ "name": "Diego Garcia"
+ },
+ "DM": {
+ "name": "Doominiki"
+ },
+ "DO": {
+ "name": "Doominiki laboo"
+ },
+ "ET": {
+ "name": "Ecioopi"
+ },
+ "EC": {
+ "name": "Ekwateer"
+ },
+ "ER": {
+ "name": "Eritree"
+ },
+ "ES": {
+ "name": "Espaaɲe"
+ },
+ "EE": {
+ "name": "Estooni"
+ },
+ "FR": {
+ "name": "Faransi"
+ },
+ "GF": {
+ "name": "Faransi Guyaan"
+ },
+ "PF": {
+ "name": "Faransi Polineezi"
+ },
+ "FO": {
+ "name": "Faroe Islands"
+ },
+ "FJ": {
+ "name": "Fiji"
+ },
+ "PH": {
+ "name": "Filipine"
+ },
+ "FI": {
+ "name": "Finlandu"
+ },
+ "TF": {
+ "name": "French Southern Territories"
+ },
+ "GA": {
+ "name": "Gaabon"
+ },
+ "GH": {
+ "name": "Gaana"
+ },
+ "GM": {
+ "name": "Gambi"
+ },
+ "GI": {
+ "name": "Gibraltar"
+ },
+ "GN": {
+ "name": "Gine"
+ },
+ "GW": {
+ "name": "Gine-Bisso"
+ },
+ "GQ": {
+ "name": "Ginee Ekwatorial"
+ },
+ "GE": {
+ "name": "Gorgi"
+ },
+ "GR": {
+ "name": "Greece"
+ },
+ "GD": {
+ "name": "Grenaada"
+ },
+ "GL": {
+ "name": "Grinland"
+ },
+ "GU": {
+ "name": "Guam"
+ },
+ "GG": {
+ "name": "Guernsey"
+ },
+ "GY": {
+ "name": "Guyaane"
+ },
+ "GP": {
+ "name": "Gwadeluup"
+ },
+ "GT": {
+ "name": "Gwatemaala"
+ },
+ "HT": {
+ "name": "Haiti"
+ },
+ "ZA": {
+ "name": "Hawsa Afriki Laboo"
+ },
+ "NL": {
+ "name": "Hollandu"
+ },
+ "HN": {
+ "name": "Honduras"
+ },
+ "HK": {
+ "name": "Hong Kong SAR China"
+ },
+ "HU": {
+ "name": "Hungaari"
+ },
+ "ID": {
+ "name": "Indoneezi"
+ },
+ "IN": {
+ "name": "Indu laboo"
+ },
+ "IQ": {
+ "name": "Iraak"
+ },
+ "IR": {
+ "name": "Iraan"
+ },
+ "RU": {
+ "name": "Iriši laboo"
+ },
+ "IE": {
+ "name": "Irlandu"
+ },
+ "IM": {
+ "name": "Isle of Man"
+ },
+ "IL": {
+ "name": "Israyel"
+ },
+ "IT": {
+ "name": "Itaali"
+ },
+ "JP": {
+ "name": "Jaapoŋ"
+ },
+ "JM": {
+ "name": "Jamaayik"
+ },
+ "JE": {
+ "name": "Jersey"
+ },
+ "DJ": {
+ "name": "Jibuuti"
+ },
+ "NC": {
+ "name": "Kaaledooni Taagaa"
+ },
+ "KZ": {
+ "name": "Kaazakstan"
+ },
+ "FK": {
+ "name": "Kalkan gungey"
+ },
+ "KH": {
+ "name": "kamboogi"
+ },
+ "CM": {
+ "name": "Kameruun"
+ },
+ "CA": {
+ "name": "Kanaada"
+ },
+ "CV": {
+ "name": "Kapuver gungey"
+ },
+ "QA": {
+ "name": "Kataar"
+ },
+ "KY": {
+ "name": "Kayman gungey"
+ },
+ "KE": {
+ "name": "Keeniya"
+ },
+ "KI": {
+ "name": "Kiribaati"
+ },
+ "CO": {
+ "name": "Kolombi"
+ },
+ "KM": {
+ "name": "Komoor"
+ },
+ "CG": {
+ "name": "Kongoo"
+ },
+ "CD": {
+ "name": "Kongoo demookaratiki laboo"
+ },
+ "KP": {
+ "name": "Kooree, Gurma"
+ },
+ "KR": {
+ "name": "Kooree, Hawsa"
+ },
+ "XK": {
+ "name": "Kosovo"
+ },
+ "CR": {
+ "name": "Kosta rika"
+ },
+ "HR": {
+ "name": "Krwaasi"
+ },
+ "CI": {
+ "name": "Kudwar"
+ },
+ "CU": {
+ "name": "Kuuba"
+ },
+ "CK": {
+ "name": "Kuuk gungey"
+ },
+ "KW": {
+ "name": "Kuweet"
+ },
+ "KG": {
+ "name": "Kyrgyzstan"
+ },
+ "AE": {
+ "name": "Laaraw Imaarawey Margantey"
+ },
+ "LA": {
+ "name": "Laawos"
+ },
+ "LS": {
+ "name": "Leesoto"
+ },
+ "LV": {
+ "name": "Letooni"
+ },
+ "LR": {
+ "name": "Liberia"
+ },
+ "LI": {
+ "name": "Liechtenstein"
+ },
+ "LY": {
+ "name": "Liibi"
+ },
+ "LT": {
+ "name": "Lituaani"
+ },
+ "LB": {
+ "name": "Lubnaan"
+ },
+ "LU": {
+ "name": "Luxembourg"
+ },
+ "MK": {
+ "name": "Maacedooni"
+ },
+ "ML": {
+ "name": "Maali"
+ },
+ "MA": {
+ "name": "Maarok"
+ },
+ "MO": {
+ "name": "Macau SAR China"
+ },
+ "MG": {
+ "name": "Madagascar"
+ },
+ "MW": {
+ "name": "Malaawi"
+ },
+ "MV": {
+ "name": "Maldiivu"
+ },
+ "MY": {
+ "name": "Maleezi"
+ },
+ "MT": {
+ "name": "Malta"
+ },
+ "MP": {
+ "name": "Mariana Gurma Gungey"
+ },
+ "MH": {
+ "name": "Maršal gungey"
+ },
+ "MQ": {
+ "name": "Martiniiki"
+ },
+ "MM": {
+ "name": "Maynamar"
+ },
+ "YT": {
+ "name": "Mayooti"
+ },
+ "MX": {
+ "name": "Mexiki"
+ },
+ "FM": {
+ "name": "Mikronezi"
+ },
+ "EG": {
+ "name": "Misra"
+ },
+ "MD": {
+ "name": "Moldovi"
+ },
+ "MC": {
+ "name": "Monako"
+ },
+ "MN": {
+ "name": "Mongooli"
+ },
+ "ME": {
+ "name": "Montenegro"
+ },
+ "MS": {
+ "name": "Montserrat"
+ },
+ "MU": {
+ "name": "Mooris gungey"
+ },
+ "MR": {
+ "name": "Mooritaani"
+ },
+ "MZ": {
+ "name": "Mozambik"
+ },
+ "NG": {
+ "name": "Naajiriia"
+ },
+ "NA": {
+ "name": "Naamibi"
+ },
+ "NR": {
+ "name": "Nauru"
+ },
+ "NP": {
+ "name": "Neepal"
+ },
+ "NI": {
+ "name": "Nikaragwa"
+ },
+ "NU": {
+ "name": "Niue"
+ },
+ "NE": {
+ "name": "Nižer"
+ },
+ "NF": {
+ "name": "Norfolk Gungoo"
+ },
+ "NO": {
+ "name": "Norveej"
+ },
+ "OM": {
+ "name": "Omaan"
+ },
+ "AU": {
+ "name": "Ostraali"
+ },
+ "AT": {
+ "name": "Otriši"
+ },
+ "PK": {
+ "name": "Paakistan"
+ },
+ "PS": {
+ "name": "Palestine Dangay nda Gaaza"
+ },
+ "PW": {
+ "name": "Palu"
+ },
+ "PA": {
+ "name": "Panama"
+ },
+ "PG": {
+ "name": "Papua Ginee Taaga"
+ },
+ "PY": {
+ "name": "Paraguwey"
+ },
+ "PE": {
+ "name": "Peeru"
+ },
+ "PN": {
+ "name": "Pitikarin"
+ },
+ "PL": {
+ "name": "Poloɲe"
+ },
+ "PR": {
+ "name": "Porto Riko"
+ },
+ "PT": {
+ "name": "Portugaal"
+ },
+ "RE": {
+ "name": "Reenioŋ"
+ },
+ "RO": {
+ "name": "Rumaani"
+ },
+ "RW": {
+ "name": "Rwanda"
+ },
+ "SV": {
+ "name": "Salvador laboo"
+ },
+ "WS": {
+ "name": "Samoa"
+ },
+ "SM": {
+ "name": "San Marino"
+ },
+ "ST": {
+ "name": "Sao Tome nda Prinsipe"
+ },
+ "SA": {
+ "name": "Saudiya"
+ },
+ "SL": {
+ "name": "Seera Leon"
+ },
+ "SC": {
+ "name": "Seešel"
+ },
+ "SN": {
+ "name": "Senegal"
+ },
+ "SH": {
+ "name": "Seŋ Helena"
+ },
+ "KN": {
+ "name": "Seŋ Kitts nda Nevis"
+ },
+ "LC": {
+ "name": "Seŋ Lussia"
+ },
+ "PM": {
+ "name": "Seŋ Piyer nda Mikelon"
+ },
+ "VC": {
+ "name": "Seŋvinsaŋ nda Grenadine"
+ },
+ "RS": {
+ "name": "Serbia"
+ },
+ "CL": {
+ "name": "Å iili"
+ },
+ "CN": {
+ "name": "Å iin"
+ },
+ "CY": {
+ "name": "Å iipur"
+ },
+ "SG": {
+ "name": "Singapur"
+ },
+ "SX": {
+ "name": "Sint Maarten"
+ },
+ "SK": {
+ "name": "Slovaaki"
+ },
+ "SI": {
+ "name": "Sloveeni"
+ },
+ "SB": {
+ "name": "Solomon Gungey"
+ },
+ "SO": {
+ "name": "Somaali"
+ },
+ "GS": {
+ "name": "South Georgia & South Sandwich Islands"
+ },
+ "SS": {
+ "name": "South Sudan"
+ },
+ "LK": {
+ "name": "Srilanka"
+ },
+ "BL": {
+ "name": "St. Barthélemy"
+ },
+ "MF": {
+ "name": "St. Martin"
+ },
+ "SR": {
+ "name": "Surinaam"
+ },
+ "SD": {
+ "name": "Suudaŋ"
+ },
+ "SY": {
+ "name": "Suuria"
+ },
+ "SJ": {
+ "name": "Svalbard & Jan Mayen"
+ },
+ "SZ": {
+ "name": "Swaziland"
+ },
+ "SE": {
+ "name": "Sweede"
+ },
+ "CH": {
+ "name": "Swisu"
+ },
+ "TH": {
+ "name": "Taayiland"
+ },
+ "TW": {
+ "name": "Taayiwan"
+ },
+ "TJ": {
+ "name": "Taažikistan"
+ },
+ "TZ": {
+ "name": "Tanzaani"
+ },
+ "TL": {
+ "name": "Timoor hawsa"
+ },
+ "TG": {
+ "name": "Togo"
+ },
+ "TK": {
+ "name": "Tokelau"
+ },
+ "TO": {
+ "name": "Tonga"
+ },
+ "TT": {
+ "name": "Trinidad nda Tobaago"
+ },
+ "TA": {
+ "name": "Tristan da Cunha"
+ },
+ "TN": {
+ "name": "Tunizi"
+ },
+ "TC": {
+ "name": "Turk nda Kayikos Gungey"
+ },
+ "TR": {
+ "name": "Turki"
+ },
+ "TM": {
+ "name": "Turkmenistaŋ"
+ },
+ "TV": {
+ "name": "Tuvalu"
+ },
+ "UM": {
+ "name": "U.S. Outlying Islands"
+ },
+ "UG": {
+ "name": "Uganda"
+ },
+ "UA": {
+ "name": "Ukreen"
+ },
+ "JO": {
+ "name": "Urdun"
+ },
+ "UY": {
+ "name": "Uruguwey"
+ },
+ "UZ": {
+ "name": "Uzbeekistan"
+ },
+ "VA": {
+ "name": "Vaatikan Laama"
+ },
+ "VU": {
+ "name": "Vanautu"
+ },
+ "VE": {
+ "name": "Veneezuyeela"
+ },
+ "VN": {
+ "name": "Vietnaam"
+ },
+ "WF": {
+ "name": "Wallis nda Futuna"
+ },
+ "EH": {
+ "name": "Western Sahara"
+ },
+ "YE": {
+ "name": "Yaman"
+ },
+ "ZM": {
+ "name": "Zambi"
+ },
+ "NZ": {
+ "name": "Zeelandu Taaga"
+ },
+ "ZW": {
+ "name": "Zimbabwe"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/country/tzm.json b/library/intl/resources/country/tzm.json
new file mode 100644
index 000000000..edefc2295
--- /dev/null
+++ b/library/intl/resources/country/tzm.json
@@ -0,0 +1,761 @@
+{
+ "AF": {
+ "name": "Afɣanistan"
+ },
+ "PS": {
+ "name": "AgemmaḠUgut d Ɣazza Ifilisṭiniyen"
+ },
+ "AX": {
+ "name": "Ã…land Islands"
+ },
+ "AL": {
+ "name": "Albanya"
+ },
+ "DE": {
+ "name": "Almanya"
+ },
+ "IO": {
+ "name": "Amur n Agaraw Uhindi Ubá¹›iá¹­ani"
+ },
+ "AD": {
+ "name": "Aná¸urra"
+ },
+ "AO": {
+ "name": "Angula"
+ },
+ "AI": {
+ "name": "Angwilla"
+ },
+ "AQ": {
+ "name": "Antarctica"
+ },
+ "AG": {
+ "name": "Antigwa d Barbuda"
+ },
+ "AR": {
+ "name": "Arjuntin"
+ },
+ "AM": {
+ "name": "Arminya"
+ },
+ "AW": {
+ "name": "Aruba"
+ },
+ "AC": {
+ "name": "Ascension Island"
+ },
+ "VA": {
+ "name": "Awank iɣrem n Vatikan"
+ },
+ "AZ": {
+ "name": "Azerbiǧan"
+ },
+ "BS": {
+ "name": "Bahamas"
+ },
+ "BH": {
+ "name": "Baḥrayn"
+ },
+ "BD": {
+ "name": "Bangladic"
+ },
+ "BB": {
+ "name": "Barbadus"
+ },
+ "BG": {
+ "name": "Belɣarya"
+ },
+ "BE": {
+ "name": "Beljika"
+ },
+ "BY": {
+ "name": "Bilarusya"
+ },
+ "BZ": {
+ "name": "Biliz"
+ },
+ "BJ": {
+ "name": "Binin"
+ },
+ "BM": {
+ "name": "Birmuda"
+ },
+ "BR": {
+ "name": "Bá¹›azil"
+ },
+ "BN": {
+ "name": "Brunay"
+ },
+ "BO": {
+ "name": "Bulivya"
+ },
+ "BF": {
+ "name": "Burkina Fasu"
+ },
+ "BI": {
+ "name": "Burundi"
+ },
+ "BA": {
+ "name": "Busna-d-Hirsik"
+ },
+ "BT": {
+ "name": "Buá¹­an"
+ },
+ "BW": {
+ "name": "Butswana"
+ },
+ "IC": {
+ "name": "Canary Islands"
+ },
+ "BQ": {
+ "name": "Caribbean Netherlands"
+ },
+ "CL": {
+ "name": "Ccili"
+ },
+ "EA": {
+ "name": "Ceuta & Melilla"
+ },
+ "CX": {
+ "name": "Christmas Island"
+ },
+ "CC": {
+ "name": "Cocos (Keeling) Islands"
+ },
+ "CW": {
+ "name": "Curaçao"
+ },
+ "DK": {
+ "name": "Danmark"
+ },
+ "DG": {
+ "name": "Diego Garcia"
+ },
+ "DM": {
+ "name": "Ḍuminika"
+ },
+ "DZ": {
+ "name": "Dzayer"
+ },
+ "IQ": {
+ "name": "Æiraq"
+ },
+ "OM": {
+ "name": "Æumman"
+ },
+ "FO": {
+ "name": "Faroe Islands"
+ },
+ "FJ": {
+ "name": "Fiji"
+ },
+ "PH": {
+ "name": "Filippin"
+ },
+ "FI": {
+ "name": "Finlaná¸a"
+ },
+ "FR": {
+ "name": "Fá¹›ansa"
+ },
+ "TF": {
+ "name": "French Southern Territories"
+ },
+ "GA": {
+ "name": "Gabun"
+ },
+ "GM": {
+ "name": "Gambya"
+ },
+ "DJ": {
+ "name": "Ǧibuti"
+ },
+ "GD": {
+ "name": "Grinada"
+ },
+ "GL": {
+ "name": "Grinlaná¸a"
+ },
+ "GG": {
+ "name": "Guernsey"
+ },
+ "GY": {
+ "name": "Guyana"
+ },
+ "GF": {
+ "name": "Guyana Tafransist"
+ },
+ "GP": {
+ "name": "Gwadalup"
+ },
+ "GU": {
+ "name": "Gwam"
+ },
+ "GT": {
+ "name": "Gwatimala"
+ },
+ "GH": {
+ "name": "Ɣana"
+ },
+ "GN": {
+ "name": "Ɣinya"
+ },
+ "GQ": {
+ "name": "Ɣinya Tikwaṭur it"
+ },
+ "GW": {
+ "name": "Ɣinya-Bissaw"
+ },
+ "HT": {
+ "name": "Hayti"
+ },
+ "HU": {
+ "name": "Henɣarya"
+ },
+ "IN": {
+ "name": "Hind"
+ },
+ "HN": {
+ "name": "Hinduras"
+ },
+ "HK": {
+ "name": "Hong Kong SAR China"
+ },
+ "NL": {
+ "name": "Hulaná¸a"
+ },
+ "EC": {
+ "name": "Ikwaá¸ur"
+ },
+ "AE": {
+ "name": "Imarat Tiεrabin Tidduklin"
+ },
+ "ID": {
+ "name": "Indunizya"
+ },
+ "IR": {
+ "name": "Iran"
+ },
+ "ER": {
+ "name": "Iritrya"
+ },
+ "IE": {
+ "name": "Irlaná¸a"
+ },
+ "IS": {
+ "name": "Islaná¸a"
+ },
+ "IM": {
+ "name": "Isle of Man"
+ },
+ "IL": {
+ "name": "Israeil"
+ },
+ "EE": {
+ "name": "Isá¹­unya"
+ },
+ "IT": {
+ "name": "Iá¹­alya"
+ },
+ "ET": {
+ "name": "Ityupya"
+ },
+ "US": {
+ "name": "Iwunak Idduklen n Amirika"
+ },
+ "JM": {
+ "name": "Jamayka"
+ },
+ "JE": {
+ "name": "Jersey"
+ },
+ "GI": {
+ "name": "Jibralá¹­ar"
+ },
+ "JP": {
+ "name": "Jjappun"
+ },
+ "GE": {
+ "name": "Jyurjya"
+ },
+ "NC": {
+ "name": "kalidunya Tamaynut"
+ },
+ "KH": {
+ "name": "Kambudj"
+ },
+ "CM": {
+ "name": "Kamerun"
+ },
+ "CA": {
+ "name": "Kanada"
+ },
+ "KZ": {
+ "name": "Kazaxistan"
+ },
+ "KE": {
+ "name": "Kinya"
+ },
+ "KG": {
+ "name": "Kirɣistan"
+ },
+ "KI": {
+ "name": "Kiribati"
+ },
+ "XK": {
+ "name": "Kosovo"
+ },
+ "HR": {
+ "name": "Krwatya"
+ },
+ "CU": {
+ "name": "kuba"
+ },
+ "CO": {
+ "name": "Kulumbya"
+ },
+ "CG": {
+ "name": "Kungu"
+ },
+ "KP": {
+ "name": "Kurya Tugafat"
+ },
+ "KR": {
+ "name": "Kurya Tunẓult"
+ },
+ "CR": {
+ "name": "Kusá¹­a Rika"
+ },
+ "KW": {
+ "name": "Kuwwayt"
+ },
+ "LA": {
+ "name": "Laws"
+ },
+ "LR": {
+ "name": "Libirya"
+ },
+ "LY": {
+ "name": "Libya"
+ },
+ "LI": {
+ "name": "Lictencá¹­ayn"
+ },
+ "LU": {
+ "name": "Liksumburg"
+ },
+ "LS": {
+ "name": "Lisuá¹­u"
+ },
+ "LV": {
+ "name": "Liá¹­á¹­unya"
+ },
+ "LT": {
+ "name": "Litwanya"
+ },
+ "LB": {
+ "name": "Lubnan"
+ },
+ "MO": {
+ "name": "Macau SAR China"
+ },
+ "MG": {
+ "name": "Madaɣacqar"
+ },
+ "MW": {
+ "name": "Malawi"
+ },
+ "MV": {
+ "name": "Maldiv"
+ },
+ "ML": {
+ "name": "Mali"
+ },
+ "MY": {
+ "name": "Malizya"
+ },
+ "MT": {
+ "name": "Malá¹­a"
+ },
+ "MN": {
+ "name": "Manɣulya"
+ },
+ "MK": {
+ "name": "Maqdunya"
+ },
+ "MQ": {
+ "name": "Martinik"
+ },
+ "YT": {
+ "name": "Mayuá¹­"
+ },
+ "MA": {
+ "name": "Meṛṛuk"
+ },
+ "FM": {
+ "name": "Mikrunizya"
+ },
+ "MX": {
+ "name": "Miksik"
+ },
+ "EG": {
+ "name": "Miá¹£r"
+ },
+ "ME": {
+ "name": "Montenegro"
+ },
+ "MD": {
+ "name": "Mulá¸avya"
+ },
+ "MC": {
+ "name": "Munaku"
+ },
+ "MS": {
+ "name": "Muntsirra"
+ },
+ "MU": {
+ "name": "Muris"
+ },
+ "MR": {
+ "name": "Muritanya"
+ },
+ "MZ": {
+ "name": "Muzambiq"
+ },
+ "MM": {
+ "name": "Myanmar"
+ },
+ "NA": {
+ "name": "Namibya"
+ },
+ "NR": {
+ "name": "Nawru"
+ },
+ "NG": {
+ "name": "Nijiria"
+ },
+ "NI": {
+ "name": "Nikaragwa"
+ },
+ "NP": {
+ "name": "Nippal"
+ },
+ "NU": {
+ "name": "Niwi"
+ },
+ "NE": {
+ "name": "Nnijer"
+ },
+ "NO": {
+ "name": "Nnurwij"
+ },
+ "PK": {
+ "name": "Pakistan"
+ },
+ "PW": {
+ "name": "Palu"
+ },
+ "PA": {
+ "name": "Panama"
+ },
+ "PG": {
+ "name": "Papwa Ɣinya Tamaynut"
+ },
+ "PY": {
+ "name": "Paragway"
+ },
+ "PE": {
+ "name": "Piru"
+ },
+ "PN": {
+ "name": "Pitkirn"
+ },
+ "PF": {
+ "name": "Pulinizya Tafransist"
+ },
+ "PL": {
+ "name": "Pulunya"
+ },
+ "PT": {
+ "name": "Purtuɣal"
+ },
+ "PR": {
+ "name": "Purturiku"
+ },
+ "QA": {
+ "name": "Qaá¹­ar"
+ },
+ "CY": {
+ "name": "Qubrus"
+ },
+ "KM": {
+ "name": "Qumur"
+ },
+ "RE": {
+ "name": "Riyyunyun"
+ },
+ "RO": {
+ "name": "Ṛumanya"
+ },
+ "RU": {
+ "name": "Rusya"
+ },
+ "RW": {
+ "name": "Ruwwaná¸a"
+ },
+ "SV": {
+ "name": "Salvaá¸ur"
+ },
+ "WS": {
+ "name": "Samwa"
+ },
+ "AS": {
+ "name": "Samwa Imirikaniyyin"
+ },
+ "SG": {
+ "name": "Sanɣafura"
+ },
+ "SM": {
+ "name": "Sanmarinu"
+ },
+ "SH": {
+ "name": "Santehilin"
+ },
+ "KN": {
+ "name": "Santekits d Nivis"
+ },
+ "LC": {
+ "name": "Santelusya"
+ },
+ "PM": {
+ "name": "Santepyir d Mikelun"
+ },
+ "VC": {
+ "name": "Santevinsent d Grinadin"
+ },
+ "ST": {
+ "name": "Sawá¹­umi d Prinsip"
+ },
+ "ES": {
+ "name": "Sbanya"
+ },
+ "RS": {
+ "name": "Serbia"
+ },
+ "SX": {
+ "name": "Sint Maarten"
+ },
+ "SL": {
+ "name": "Siralyun"
+ },
+ "SK": {
+ "name": "Sluvakya"
+ },
+ "SI": {
+ "name": "Sluvinya"
+ },
+ "GS": {
+ "name": "South Georgia & South Sandwich Islands"
+ },
+ "SS": {
+ "name": "South Sudan"
+ },
+ "LK": {
+ "name": "Srilanka"
+ },
+ "SA": {
+ "name": "Ssaεudiyya Taεrabt"
+ },
+ "SE": {
+ "name": "Ssewwid"
+ },
+ "SC": {
+ "name": "Ssicil"
+ },
+ "CN": {
+ "name": "Ṣṣin"
+ },
+ "SN": {
+ "name": "Ssiniɣal"
+ },
+ "SD": {
+ "name": "Ssudan"
+ },
+ "SO": {
+ "name": "Ṣṣumal"
+ },
+ "BL": {
+ "name": "St. Barthélemy"
+ },
+ "MF": {
+ "name": "St. Martin"
+ },
+ "SR": {
+ "name": "Surinam"
+ },
+ "SY": {
+ "name": "Surya"
+ },
+ "SJ": {
+ "name": "Svalbard & Jan Mayen"
+ },
+ "SZ": {
+ "name": "Swazilaná¸a"
+ },
+ "CH": {
+ "name": "Swisra"
+ },
+ "ZA": {
+ "name": "Tafrikt Tunẓul"
+ },
+ "CF": {
+ "name": "Tagduda n Afrika Wammas"
+ },
+ "CZ": {
+ "name": "Tagduda n ÄŒik"
+ },
+ "DO": {
+ "name": "Tagduda n Ḍuminikan"
+ },
+ "CD": {
+ "name": "Tagduda Tadimuqraá¹­it n Kungu"
+ },
+ "GB": {
+ "name": "Tagelda Taddukelt"
+ },
+ "TJ": {
+ "name": "Ṭaǧikistan"
+ },
+ "CI": {
+ "name": "Taɣazut n Uszer"
+ },
+ "TZ": {
+ "name": "Ṭanzanya"
+ },
+ "TH": {
+ "name": "Ṭaylaná¸a"
+ },
+ "TW": {
+ "name": "Ṭaywan"
+ },
+ "TD": {
+ "name": "Tcad"
+ },
+ "VG": {
+ "name": "Tigzirin (Virgin) Tibá¹›iá¹­aniyin"
+ },
+ "FK": {
+ "name": "Tigzirin n Falkland"
+ },
+ "CV": {
+ "name": "Tigzirin n IÉ£f Uzegzaw"
+ },
+ "KY": {
+ "name": "Tigzirin n Kayman"
+ },
+ "CK": {
+ "name": "Tigzirin n Kuk"
+ },
+ "MH": {
+ "name": "Tigzirin n Marcal"
+ },
+ "MP": {
+ "name": "Tigzirin n Maryana Tugafat"
+ },
+ "SB": {
+ "name": "Tigzirin n Salumun"
+ },
+ "VI": {
+ "name": "Tigzirin n Virjin n Iwunak Yedduklen"
+ },
+ "TC": {
+ "name": "Tigzirin Turkiyyin d Tikaykusin"
+ },
+ "NF": {
+ "name": "Tigzirt Nurfulk"
+ },
+ "TL": {
+ "name": "Timur Tagmuá¹­"
+ },
+ "TT": {
+ "name": "Trinidad d Ṭubagu"
+ },
+ "TA": {
+ "name": "Tristan da Cunha"
+ },
+ "TG": {
+ "name": "Ṭṭugu"
+ },
+ "TK": {
+ "name": "Tuklu"
+ },
+ "TN": {
+ "name": "Tunes"
+ },
+ "TO": {
+ "name": "Ṭunga"
+ },
+ "TM": {
+ "name": "Turkmanistan"
+ },
+ "TR": {
+ "name": "Turkya"
+ },
+ "TV": {
+ "name": "Ṭuvalu"
+ },
+ "UM": {
+ "name": "U.S. Outlying Islands"
+ },
+ "UG": {
+ "name": "UÉ£anda"
+ },
+ "UA": {
+ "name": "Ukranya"
+ },
+ "JO": {
+ "name": "Urá¸un"
+ },
+ "UY": {
+ "name": "Urugway"
+ },
+ "AU": {
+ "name": "Usá¹­ralya"
+ },
+ "AT": {
+ "name": "Ustriyya"
+ },
+ "UZ": {
+ "name": "Uzbakistan"
+ },
+ "VU": {
+ "name": "Vanwatu"
+ },
+ "VE": {
+ "name": "Vinzwilla"
+ },
+ "VN": {
+ "name": "Viá¹­nam"
+ },
+ "WF": {
+ "name": "Walis d Futuna"
+ },
+ "EH": {
+ "name": "Western Sahara"
+ },
+ "YE": {
+ "name": "Yaman"
+ },
+ "GR": {
+ "name": "Yunan"
+ },
+ "ZM": {
+ "name": "Zambya"
+ },
+ "NZ": {
+ "name": "Zilaná¸a Tamaynut"
+ },
+ "ZW": {
+ "name": "Zimbabwi"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/country/ug.json b/library/intl/resources/country/ug.json
new file mode 100644
index 000000000..a9a86b1ce
--- /dev/null
+++ b/library/intl/resources/country/ug.json
@@ -0,0 +1,761 @@
+{
+ "AR": {
+ "name": "ئارگÛنتىنا"
+ },
+ "AW": {
+ "name": "ئارۇبا"
+ },
+ "AC": {
+ "name": "ئاسسÛنسىيون ئارىلى"
+ },
+ "AF": {
+ "name": "ئاÙغانىستان"
+ },
+ "AX": {
+ "name": "ئالاند ئاراللىرى"
+ },
+ "AL": {
+ "name": "ئالبانىيە"
+ },
+ "DZ": {
+ "name": "ئالجىرىيە"
+ },
+ "AS": {
+ "name": "ئامÛرىكا تەۋەلىكىدىكى ساموئا"
+ },
+ "UM": {
+ "name": "ئامÛرىكا تەۋەلىكىدىكى سىرتقى كىچىك ئاراللار"
+ },
+ "VI": {
+ "name": "ئامÛرىكا تەۋەلىكىدىكى ۋىرجىن تاقىم ئاراللىرى"
+ },
+ "US": {
+ "name": "ئامÛرىكا قوشما شتاتلىرى"
+ },
+ "AQ": {
+ "name": "ئانتاركتىكا"
+ },
+ "AG": {
+ "name": "ئانتىگۋا ۋە باربۇدا"
+ },
+ "AD": {
+ "name": "ئاندوررا"
+ },
+ "AO": {
+ "name": "ئانگولا"
+ },
+ "AI": {
+ "name": "ئانگۋىللا"
+ },
+ "AU": {
+ "name": "ئاۋسترالىيە"
+ },
+ "AT": {
+ "name": "ئاۋسترىيە"
+ },
+ "MO": {
+ "name": "ئاۋمÛÙ† ئالاھىدە مەمۇرىي رايونى (جۇڭگو)"
+ },
+ "AM": {
+ "name": "ئەرمÛنىيە"
+ },
+ "AE": {
+ "name": "ئەرەب بىرلەشمە خەلىپىلىكى"
+ },
+ "AZ": {
+ "name": "ئەزەربەيجان"
+ },
+ "SV": {
+ "name": "ئەل سالۋادور"
+ },
+ "GB": {
+ "name": "ئەنگلىيە پادىشاھلىقى"
+ },
+ "VG": {
+ "name": "ئەنگلىيەگە قاراشلىق ۋىرجىن ئارىلى"
+ },
+ "IO": {
+ "name": "ئەنگلىيەنىڭ ھىندى ئوكياندىكى تەۋەلىكى"
+ },
+ "CF": {
+ "name": "ئوتتۇرا ئاÙرىقا جۇمھۇرىيىتى"
+ },
+ "OM": {
+ "name": "ئومان"
+ },
+ "UZ": {
+ "name": "ئۆزبÛكىستان"
+ },
+ "UY": {
+ "name": "ئۇرۇگۋاي"
+ },
+ "UA": {
+ "name": "ئۇكرائىنا"
+ },
+ "UG": {
+ "name": "ئۇگاندا"
+ },
+ "IT": {
+ "name": "ئىتالىيە"
+ },
+ "IQ": {
+ "name": "ئىراق"
+ },
+ "IR": {
+ "name": "ئىران"
+ },
+ "IE": {
+ "name": "ئىرÛلاندىيە"
+ },
+ "ES": {
+ "name": "ئىسپانىيە"
+ },
+ "IL": {
+ "name": "ئىسرائىلىيە"
+ },
+ "IS": {
+ "name": "ئىسلاندىيە"
+ },
+ "JO": {
+ "name": "ئىيوردانىيە"
+ },
+ "ER": {
+ "name": "ئÛرىترÛÙŠÛ•"
+ },
+ "EE": {
+ "name": "ئÛستونىيە"
+ },
+ "ET": {
+ "name": "ئÛÙىيوپىيە"
+ },
+ "GQ": {
+ "name": "ئÛكۋاتور گىۋىنÛيەسى"
+ },
+ "EC": {
+ "name": "ئÛكۋادور"
+ },
+ "BB": {
+ "name": "باربادوس"
+ },
+ "BD": {
+ "name": "باڭلادىش"
+ },
+ "BS": {
+ "name": "باھاما"
+ },
+ "BH": {
+ "name": "بەھرەين"
+ },
+ "BW": {
+ "name": "بوتسۋانا"
+ },
+ "BA": {
+ "name": "بوسنىيە-Ú¯ÛرتسÛگوۋىنا"
+ },
+ "BO": {
+ "name": "بولىۋىيە"
+ },
+ "BT": {
+ "name": "بۇتان"
+ },
+ "BF": {
+ "name": "بۇركىنا-Ùاسو"
+ },
+ "BI": {
+ "name": "بۇرۇندى"
+ },
+ "BG": {
+ "name": "بۇلغارىيە"
+ },
+ "BR": {
+ "name": "بىرازىلىيە"
+ },
+ "MM": {
+ "name": "بىرما"
+ },
+ "BN": {
+ "name": "بىرۇنÛÙŠ"
+ },
+ "BM": {
+ "name": "بÛرمۇدا"
+ },
+ "BY": {
+ "name": "بÛلارۇسىيە"
+ },
+ "BE": {
+ "name": "بÛلگىيە"
+ },
+ "BZ": {
+ "name": "بÛلىز"
+ },
+ "BJ": {
+ "name": "بÛنىن"
+ },
+ "PG": {
+ "name": "پاپۇئا ÙŠÛÚ­Ù‰ گىۋىنÛيەسى"
+ },
+ "PY": {
+ "name": "پاراگۋاي"
+ },
+ "PK": {
+ "name": "پاكىستان"
+ },
+ "PW": {
+ "name": "پالاۋ"
+ },
+ "PA": {
+ "name": "پاناما"
+ },
+ "PS": {
+ "name": "پەلەستىن زÛمىنى"
+ },
+ "PT": {
+ "name": "پورتۇگالىيە"
+ },
+ "PL": {
+ "name": "پولشا"
+ },
+ "PR": {
+ "name": "پۇئÛرتو-رىكو"
+ },
+ "PN": {
+ "name": "پىتكاير ئاراللىرى"
+ },
+ "PE": {
+ "name": "Ù¾Ûرۇ"
+ },
+ "TJ": {
+ "name": "تاجىكىستان"
+ },
+ "TZ": {
+ "name": "تانزانىيە"
+ },
+ "TH": {
+ "name": "تايلاند"
+ },
+ "TA": {
+ "name": "ترىستان داكۇنھا"
+ },
+ "TW": {
+ "name": "تەيۋەن"
+ },
+ "TK": {
+ "name": "توكÛلاۋ"
+ },
+ "TG": {
+ "name": "توگو"
+ },
+ "TO": {
+ "name": "تونگا"
+ },
+ "TC": {
+ "name": "تۇركس ۋە كايكوس ئاراللىرى"
+ },
+ "TN": {
+ "name": "تۇنىس"
+ },
+ "TV": {
+ "name": "تۇۋالۇ"
+ },
+ "TM": {
+ "name": "تۈركمەنىستان"
+ },
+ "TR": {
+ "name": "تۈركىيە"
+ },
+ "TT": {
+ "name": "تىرىنىداد ۋە توباگو"
+ },
+ "GI": {
+ "name": "جەبىلتارىق"
+ },
+ "ZA": {
+ "name": "جەنۇبىي ئاÙرىقا"
+ },
+ "GS": {
+ "name": "جەنۇبىي جورجىيە ۋە جەنۇبىي ساندىۋىچ ئاراللىرى"
+ },
+ "SS": {
+ "name": "جەنۇبىي سۇدان"
+ },
+ "KR": {
+ "name": "جەنۇبىي كورىيە"
+ },
+ "CN": {
+ "name": "جۇڭگو"
+ },
+ "DJ": {
+ "name": "جىبۇتى"
+ },
+ "JE": {
+ "name": "جÛرسÛÙŠ"
+ },
+ "TD": {
+ "name": "چاد"
+ },
+ "CL": {
+ "name": "چىلى"
+ },
+ "CZ": {
+ "name": "Ú†ÛØ® جۇمھۇرىيىتى"
+ },
+ "DK": {
+ "name": "دانىيە"
+ },
+ "DM": {
+ "name": "دومىنىكا"
+ },
+ "DO": {
+ "name": "دومىنىكا جۇمھۇرىيىتى"
+ },
+ "DG": {
+ "name": "دÛÚ¯Ùˆ-گارشىيا"
+ },
+ "CX": {
+ "name": "روژدÛستۋو ئارىلى"
+ },
+ "RU": {
+ "name": "رۇسىيە"
+ },
+ "RO": {
+ "name": "رۇمىنىيە"
+ },
+ "RW": {
+ "name": "رىۋاندا"
+ },
+ "RE": {
+ "name": "رÛئونىيون"
+ },
+ "ZM": {
+ "name": "زامبىيە"
+ },
+ "ZW": {
+ "name": "زىمبابۋÛ"
+ },
+ "WS": {
+ "name": "ساموئا"
+ },
+ "ST": {
+ "name": "سان ØªÙˆÙ…Û Û‹Û• پرىنسىپÛ"
+ },
+ "SM": {
+ "name": "سان-مارىنو"
+ },
+ "SH": {
+ "name": "ساينىت Ú¾ÛÙ„Ûنا"
+ },
+ "BL": {
+ "name": "ساينىت-بارتھÛلەمي ئاراللىرى"
+ },
+ "PM": {
+ "name": "ساينىت-پىئÛر Û‹Û• مىكÛلون ئاراللىرى"
+ },
+ "KN": {
+ "name": "ساينىت-كىرىستوÙÛر Û‹Û• Ù†Ûۋىس"
+ },
+ "LC": {
+ "name": "ساينىت-لۇسىيە"
+ },
+ "MF": {
+ "name": "ساينىت-مارتÛÙ†"
+ },
+ "VC": {
+ "name": "ساينىت-ۋىنسÛنت Û‹Û• گىرÛنادىنÛس"
+ },
+ "SA": {
+ "name": "سەئۇدى ئەرەبىستان"
+ },
+ "SB": {
+ "name": "سولومون ئاراللىرى"
+ },
+ "SO": {
+ "name": "سومالى"
+ },
+ "SD": {
+ "name": "سۇدان"
+ },
+ "SR": {
+ "name": "سۇرىنام"
+ },
+ "SY": {
+ "name": "سۈرىيە"
+ },
+ "CY": {
+ "name": "سىپرۇس"
+ },
+ "LK": {
+ "name": "سىرىلانكا"
+ },
+ "SK": {
+ "name": "سىلوۋاكىيە"
+ },
+ "SI": {
+ "name": "سىلوۋÛنىيە"
+ },
+ "SX": {
+ "name": "سىنت مارتÛÙ†"
+ },
+ "SG": {
+ "name": "سىنگاپور"
+ },
+ "SJ": {
+ "name": "سىۋالبارد Û‹Û• يان-مايÛÙ† ئارىلى"
+ },
+ "SZ": {
+ "name": "سىۋÛزىلاند"
+ },
+ "RS": {
+ "name": "سÛربىيە"
+ },
+ "SL": {
+ "name": "سÛررالÛئون"
+ },
+ "SN": {
+ "name": "سÛÙ†Ûگال"
+ },
+ "EA": {
+ "name": "سÛيتا Û‹Û• Ù…Ûلىلا"
+ },
+ "SC": {
+ "name": "سÛيشÛÙ„"
+ },
+ "TL": {
+ "name": "شەرقىي تىمور"
+ },
+ "KP": {
+ "name": "شىمالىي كورىيە"
+ },
+ "MP": {
+ "name": "شىمالىي مارىيانا ئاراللىرى"
+ },
+ "CH": {
+ "name": "شىۋىتسارىيە"
+ },
+ "SE": {
+ "name": "شىۋÛتسىيە"
+ },
+ "HK": {
+ "name": "شياڭگاڭ ئالاھىدە مەمۇرىي رايونى (جۇڭگو)"
+ },
+ "EH": {
+ "name": "غەربىي ساخارا"
+ },
+ "FO": {
+ "name": "ÙائÛرو ئاراللىرى"
+ },
+ "FK": {
+ "name": "Ùالكلاند ئاراللىرى"
+ },
+ "FJ": {
+ "name": "Ùىجى"
+ },
+ "FR": {
+ "name": "Ùىرانسىيە"
+ },
+ "PF": {
+ "name": "Ùىرانسىيەگە قاراشلىق پولىنÛزىيە"
+ },
+ "TF": {
+ "name": "Ùىرانسىيەگە قاراشلىق جەنۇبتىكى زÛمىنلىرى"
+ },
+ "GF": {
+ "name": "Ùىرانسىيەگە قاراشلىق گىۋىيانا"
+ },
+ "PH": {
+ "name": "Ùىلىپپىن"
+ },
+ "FI": {
+ "name": "Ùىنلاندىيە"
+ },
+ "QA": {
+ "name": "قاتار"
+ },
+ "KZ": {
+ "name": "قازاقىستان"
+ },
+ "KG": {
+ "name": "قىرغىزىستان"
+ },
+ "BQ": {
+ "name": "كارىب دÛڭىزى گوللاندىيە"
+ },
+ "KH": {
+ "name": "كامبودژا"
+ },
+ "CM": {
+ "name": "كامÛرون"
+ },
+ "CA": {
+ "name": "كانادا"
+ },
+ "IC": {
+ "name": "كانارى ئاراللىرى"
+ },
+ "KY": {
+ "name": "كايمان ئاراللىرى"
+ },
+ "CC": {
+ "name": "كەئەلىڭ كوكۇس ئاراللىرى"
+ },
+ "CI": {
+ "name": "ÙƒÙˆØªÛ Ø¯Û Ø¦Ù‰Û‹ÙˆØ¦Ù‰Ø±"
+ },
+ "CR": {
+ "name": "كوستارىكا"
+ },
+ "XK": {
+ "name": "كوسوۋو"
+ },
+ "CO": {
+ "name": "كولومبىيە"
+ },
+ "KM": {
+ "name": "كومورو"
+ },
+ "CG": {
+ "name": "كونگو - بىراززاۋىل"
+ },
+ "CD": {
+ "name": "كونگو - كىنشاسا"
+ },
+ "CU": {
+ "name": "كۇبا"
+ },
+ "CW": {
+ "name": "كۇراسو"
+ },
+ "CK": {
+ "name": "كۇك ئاراللىرى"
+ },
+ "KW": {
+ "name": "كۇۋەيت"
+ },
+ "HR": {
+ "name": "كىرودىيە"
+ },
+ "KI": {
+ "name": "كىرىباتى"
+ },
+ "KE": {
+ "name": "ÙƒÛنىيە"
+ },
+ "GA": {
+ "name": "گابون"
+ },
+ "GM": {
+ "name": "گامبىيە"
+ },
+ "GH": {
+ "name": "گانا"
+ },
+ "NL": {
+ "name": "گوللاندىيە"
+ },
+ "GU": {
+ "name": "گۇئام"
+ },
+ "GE": {
+ "name": "گىروزىيە"
+ },
+ "GR": {
+ "name": "گىرÛتسىيە"
+ },
+ "GD": {
+ "name": "گىرÛنادا"
+ },
+ "GL": {
+ "name": "گىرÛنلاند"
+ },
+ "GT": {
+ "name": "گىۋاتÛمالا"
+ },
+ "GP": {
+ "name": "گىۋادÛÙ„Û‡Ù¾"
+ },
+ "GN": {
+ "name": "گىۋىنÛÙŠÛ•"
+ },
+ "GW": {
+ "name": "گىۋىنÛÙŠÛ•-بىسسائۇ"
+ },
+ "GY": {
+ "name": "گىۋىيانا"
+ },
+ "DE": {
+ "name": "Ú¯Ûرمانىيە"
+ },
+ "GG": {
+ "name": "Ú¯Ûرىنسى"
+ },
+ "LA": {
+ "name": "لائوس"
+ },
+ "LV": {
+ "name": "لاتۋىيە"
+ },
+ "LR": {
+ "name": "لىبÛرىيە"
+ },
+ "LT": {
+ "name": "لىتۋانىيە"
+ },
+ "LI": {
+ "name": "لىچتÛنشتÛين بەگلىكى"
+ },
+ "LB": {
+ "name": "لىۋان"
+ },
+ "LY": {
+ "name": "لىۋىيە"
+ },
+ "LU": {
+ "name": "لىيۇكسÛمبۇرگ"
+ },
+ "LS": {
+ "name": "Ù„Ûسوتو"
+ },
+ "MG": {
+ "name": "ماداغاسقار"
+ },
+ "MA": {
+ "name": "ماراكەش"
+ },
+ "MQ": {
+ "name": "مارتىنىكا"
+ },
+ "MH": {
+ "name": "مارشال ئاراللىرى"
+ },
+ "MK": {
+ "name": "ماكÛدونىيە"
+ },
+ "MW": {
+ "name": "مالاۋى"
+ },
+ "MY": {
+ "name": "مالايشىيا"
+ },
+ "MT": {
+ "name": "مالتا"
+ },
+ "MV": {
+ "name": "مالدىۋÛ"
+ },
+ "ML": {
+ "name": "مالى"
+ },
+ "MR": {
+ "name": "ماۋرىتانىيە"
+ },
+ "MU": {
+ "name": "ماۋرىتىئۇس"
+ },
+ "YT": {
+ "name": "مايوتتÛ"
+ },
+ "MZ": {
+ "name": "موزامبىك"
+ },
+ "MN": {
+ "name": "موڭغۇلىيە"
+ },
+ "MD": {
+ "name": "مولدوۋا"
+ },
+ "MC": {
+ "name": "موناكو"
+ },
+ "MS": {
+ "name": "مونتسÛررات"
+ },
+ "ME": {
+ "name": "مونتÛÙ†Ûگرو"
+ },
+ "EG": {
+ "name": "مىسىر"
+ },
+ "FM": {
+ "name": "مىكرونÛزىيە"
+ },
+ "MX": {
+ "name": "Ù…Ûكسىكا"
+ },
+ "IM": {
+ "name": "Ù…ÛÙ† ئارىلى"
+ },
+ "NA": {
+ "name": "نامىبىيە"
+ },
+ "NR": {
+ "name": "ناۋرۇ"
+ },
+ "NF": {
+ "name": "نورÙولك ئارىلى"
+ },
+ "NO": {
+ "name": "نورۋÛگىيە"
+ },
+ "NI": {
+ "name": "نىكاراگۇئا"
+ },
+ "NG": {
+ "name": "نىگÛرىيە"
+ },
+ "NU": {
+ "name": "نىيۇئÛ"
+ },
+ "NP": {
+ "name": "Ù†Ûپال"
+ },
+ "NE": {
+ "name": "Ù†Ûگىر"
+ },
+ "HT": {
+ "name": "ھايتى"
+ },
+ "HN": {
+ "name": "ھوندۇراس"
+ },
+ "ID": {
+ "name": "ھىندونÛزىيە"
+ },
+ "IN": {
+ "name": "ھىندىستان"
+ },
+ "VA": {
+ "name": "ۋاتىكان شەھىرى"
+ },
+ "WF": {
+ "name": "ۋالىس Û‹Û• Ùۇتۇنا"
+ },
+ "VU": {
+ "name": "ۋانۇئاتۇ"
+ },
+ "VN": {
+ "name": "ۋىيÛتنام"
+ },
+ "HU": {
+ "name": "Û‹Ûنگىرىيە"
+ },
+ "VE": {
+ "name": "Û‹ÛÙ†ÛزۇئÛلا"
+ },
+ "JP": {
+ "name": "ياپونىيە"
+ },
+ "JM": {
+ "name": "يامايكا"
+ },
+ "YE": {
+ "name": "ÙŠÛ•Ù…Û•Ù†"
+ },
+ "CV": {
+ "name": "ÙŠÛشىل تۇمشۇق"
+ },
+ "NZ": {
+ "name": "ÙŠÛÚ­Ù‰ زÛلاندىيە"
+ },
+ "NC": {
+ "name": "ÙŠÛÚ­Ù‰ كالÛدونىيە"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/country/uk.json b/library/intl/resources/country/uk.json
new file mode 100644
index 000000000..48ab986ba
--- /dev/null
+++ b/library/intl/resources/country/uk.json
@@ -0,0 +1,761 @@
+{
+ "AU": {
+ "name": "ÐвÑтраліÑ"
+ },
+ "AT": {
+ "name": "ÐвÑтріÑ"
+ },
+ "AZ": {
+ "name": "Ðзербайджан"
+ },
+ "AX": {
+ "name": "ÐландÑькі оÑтрови"
+ },
+ "AL": {
+ "name": "ÐлбаніÑ"
+ },
+ "DZ": {
+ "name": "Ðлжир"
+ },
+ "AS": {
+ "name": "ÐмериканÑьке Самоа"
+ },
+ "AI": {
+ "name": "ÐнгільÑ"
+ },
+ "AO": {
+ "name": "Ðнгола"
+ },
+ "AD": {
+ "name": "Ðндорра"
+ },
+ "AQ": {
+ "name": "Ðнтарктика"
+ },
+ "AG": {
+ "name": "Ðнтигуа Ñ– Барбуда"
+ },
+ "AR": {
+ "name": "Ðргентина"
+ },
+ "AW": {
+ "name": "Ðруба"
+ },
+ "AF": {
+ "name": "ÐфганіÑтан"
+ },
+ "BS": {
+ "name": "Багами"
+ },
+ "BD": {
+ "name": "Бангладеш"
+ },
+ "BB": {
+ "name": "БарбадоÑ"
+ },
+ "BH": {
+ "name": "Бахрейн"
+ },
+ "BZ": {
+ "name": "Беліз"
+ },
+ "BE": {
+ "name": "БельгіÑ"
+ },
+ "BJ": {
+ "name": "Бенін"
+ },
+ "BM": {
+ "name": "Бермуди"
+ },
+ "BY": {
+ "name": "БілоруÑÑŒ"
+ },
+ "BG": {
+ "name": "БолгаріÑ"
+ },
+ "BO": {
+ "name": "БолівіÑ"
+ },
+ "BA": {
+ "name": "БоÑÐ½Ñ–Ñ Ñ– Герцоговина"
+ },
+ "BW": {
+ "name": "БотÑвана"
+ },
+ "BR": {
+ "name": "БразиліÑ"
+ },
+ "VG": {
+ "name": "БританÑькі ВіргінÑькі оÑтрови"
+ },
+ "IO": {
+ "name": "БританÑькі території в ІндійÑькому океані"
+ },
+ "BN": {
+ "name": "Бруней"
+ },
+ "BF": {
+ "name": "Буркіна-ФаÑо"
+ },
+ "BI": {
+ "name": "Бурунді"
+ },
+ "BT": {
+ "name": "Бутан"
+ },
+ "VN": {
+ "name": "Вʼєтнам"
+ },
+ "VU": {
+ "name": "Вануату"
+ },
+ "VA": {
+ "name": "Ватикан"
+ },
+ "GB": {
+ "name": "Велика БританіÑ"
+ },
+ "VE": {
+ "name": "ВенеÑуела"
+ },
+ "UM": {
+ "name": "Віддалені оÑтрови СШÐ"
+ },
+ "VI": {
+ "name": "ВіргінÑькі оÑтрови, СШÐ"
+ },
+ "AM": {
+ "name": "ВірменіÑ"
+ },
+ "WF": {
+ "name": "Ð’Ð¾Ð»Ð»Ñ–Ñ Ñ– Футуна"
+ },
+ "GA": {
+ "name": "Габон"
+ },
+ "HT": {
+ "name": "Гаїті"
+ },
+ "GM": {
+ "name": "ГамбіÑ"
+ },
+ "GH": {
+ "name": "Гана"
+ },
+ "GY": {
+ "name": "ГаÑна"
+ },
+ "GP": {
+ "name": "Гваделупа"
+ },
+ "GT": {
+ "name": "Гватемала"
+ },
+ "GN": {
+ "name": "ГвінеÑ"
+ },
+ "GW": {
+ "name": "ГвінеÑ-БіÑау"
+ },
+ "GG": {
+ "name": "ГернÑÑ–"
+ },
+ "GI": {
+ "name": "Гібралтар"
+ },
+ "HN": {
+ "name": "ГондураÑ"
+ },
+ "HK": {
+ "name": "Гонконг, О.Ð.Р. Китаю"
+ },
+ "GD": {
+ "name": "Гренада"
+ },
+ "GL": {
+ "name": "ГренландіÑ"
+ },
+ "GR": {
+ "name": "ГреціÑ"
+ },
+ "GE": {
+ "name": "ГрузіÑ"
+ },
+ "GU": {
+ "name": "Гуам"
+ },
+ "DK": {
+ "name": "ДаніÑ"
+ },
+ "JE": {
+ "name": "ДжерÑÑ–"
+ },
+ "DJ": {
+ "name": "Джибуті"
+ },
+ "DG": {
+ "name": "Дієго-ГарÑÑ–Ñ"
+ },
+ "DM": {
+ "name": "Домініка"
+ },
+ "DO": {
+ "name": "ДомініканÑька РеÑпубліка"
+ },
+ "EC": {
+ "name": "Еквадор"
+ },
+ "GQ": {
+ "name": "Екваторіальна ГвінеÑ"
+ },
+ "ER": {
+ "name": "ЕритреÑ"
+ },
+ "EE": {
+ "name": "ЕÑтоніÑ"
+ },
+ "ET": {
+ "name": "ЕфіопіÑ"
+ },
+ "EG": {
+ "name": "Єгипет"
+ },
+ "YE": {
+ "name": "Ємен"
+ },
+ "ZM": {
+ "name": "ЗамбіÑ"
+ },
+ "EH": {
+ "name": "Західна Сахара"
+ },
+ "ZW": {
+ "name": "Зімбабве"
+ },
+ "IL": {
+ "name": "Ізраїль"
+ },
+ "IN": {
+ "name": "ІндіÑ"
+ },
+ "ID": {
+ "name": "ІндонезіÑ"
+ },
+ "IQ": {
+ "name": "Ірак"
+ },
+ "IR": {
+ "name": "Іран"
+ },
+ "IE": {
+ "name": "ІрландіÑ"
+ },
+ "IS": {
+ "name": "ІÑландіÑ"
+ },
+ "ES": {
+ "name": "ІÑпаніÑ"
+ },
+ "IT": {
+ "name": "ІталіÑ"
+ },
+ "JO": {
+ "name": "ЙорданіÑ"
+ },
+ "CV": {
+ "name": "Кабо Верде"
+ },
+ "KZ": {
+ "name": "КазахÑтан"
+ },
+ "KY": {
+ "name": "Кайманові оÑтрови"
+ },
+ "KH": {
+ "name": "Камбоджа"
+ },
+ "CM": {
+ "name": "Камерун"
+ },
+ "CA": {
+ "name": "Канада"
+ },
+ "IC": {
+ "name": "КанарÑькі оÑтрови"
+ },
+ "QA": {
+ "name": "Катар"
+ },
+ "KE": {
+ "name": "КеніÑ"
+ },
+ "KG": {
+ "name": "КиргизÑтан"
+ },
+ "CN": {
+ "name": "Китай"
+ },
+ "CY": {
+ "name": "Кіпр"
+ },
+ "KI": {
+ "name": "Кірибаті"
+ },
+ "CC": {
+ "name": "КокоÑові (Кілінгові) оÑтрови"
+ },
+ "CO": {
+ "name": "КолумбіÑ"
+ },
+ "KM": {
+ "name": "КоморÑькі оÑтрови"
+ },
+ "CG": {
+ "name": "Конго – Браззавіль"
+ },
+ "CD": {
+ "name": "Конго – КіншаÑа"
+ },
+ "XK": {
+ "name": "КоÑово"
+ },
+ "CR": {
+ "name": "КоÑта-Рика"
+ },
+ "CI": {
+ "name": "Кот-д’Івуар"
+ },
+ "CU": {
+ "name": "Куба"
+ },
+ "KW": {
+ "name": "Кувейт"
+ },
+ "CW": {
+ "name": "КюраÑао"
+ },
+ "LA": {
+ "name": "ЛаоÑ"
+ },
+ "LV": {
+ "name": "ЛатвіÑ"
+ },
+ "LS": {
+ "name": "ЛеÑото"
+ },
+ "LT": {
+ "name": "Литва"
+ },
+ "LR": {
+ "name": "ЛіберіÑ"
+ },
+ "LB": {
+ "name": "Ліван"
+ },
+ "LY": {
+ "name": "ЛівіÑ"
+ },
+ "LI": {
+ "name": "Ліхтенштейн"
+ },
+ "LU": {
+ "name": "ЛюкÑембург"
+ },
+ "MM": {
+ "name": "МʼÑнма (Бірма)"
+ },
+ "MU": {
+ "name": "Маврикій"
+ },
+ "MR": {
+ "name": "МавританіÑ"
+ },
+ "MG": {
+ "name": "МадагаÑкар"
+ },
+ "YT": {
+ "name": "Майотта"
+ },
+ "MO": {
+ "name": "Макао О.Ð.Р. Китаю"
+ },
+ "MK": {
+ "name": "МакедоніÑ"
+ },
+ "MW": {
+ "name": "Малаві"
+ },
+ "MY": {
+ "name": "МалайзіÑ"
+ },
+ "ML": {
+ "name": "Малі"
+ },
+ "MV": {
+ "name": "Мальдіви"
+ },
+ "MT": {
+ "name": "Мальта"
+ },
+ "MA": {
+ "name": "Марокко"
+ },
+ "MQ": {
+ "name": "Мартиніка"
+ },
+ "MH": {
+ "name": "Маршаллові ОÑтрови"
+ },
+ "MX": {
+ "name": "МекÑика"
+ },
+ "FM": {
+ "name": "МікронезіÑ"
+ },
+ "MZ": {
+ "name": "Мозамбік"
+ },
+ "MD": {
+ "name": "Молдова"
+ },
+ "MC": {
+ "name": "Монако"
+ },
+ "MN": {
+ "name": "МонголіÑ"
+ },
+ "MS": {
+ "name": "МонтÑеррат"
+ },
+ "NA": {
+ "name": "ÐамібіÑ"
+ },
+ "NR": {
+ "name": "Ðауру"
+ },
+ "NP": {
+ "name": "Ðепал"
+ },
+ "NE": {
+ "name": "Ðігер"
+ },
+ "NG": {
+ "name": "ÐігеріÑ"
+ },
+ "NL": {
+ "name": "Ðідерланди"
+ },
+ "BQ": {
+ "name": "ÐідерландÑькі КарибÑькі оÑтрови"
+ },
+ "NI": {
+ "name": "Ðікарагуа"
+ },
+ "DE": {
+ "name": "Ðімеччина"
+ },
+ "NU": {
+ "name": "Ðіуе"
+ },
+ "NZ": {
+ "name": "Ðова ЗеландіÑ"
+ },
+ "NC": {
+ "name": "Ðова КаледоніÑ"
+ },
+ "NO": {
+ "name": "ÐорвегіÑ"
+ },
+ "AE": {
+ "name": "Обʼєднані ÐрабÑькі Емірати"
+ },
+ "OM": {
+ "name": "Оман"
+ },
+ "AC": {
+ "name": "ОÑтрів ВознеÑіннÑ"
+ },
+ "IM": {
+ "name": "ОÑтрів Мен"
+ },
+ "NF": {
+ "name": "ОÑтрів Ðорфолк"
+ },
+ "CX": {
+ "name": "ОÑтрів Різдва"
+ },
+ "SH": {
+ "name": "ОÑтрів СвÑтої Єлени"
+ },
+ "CK": {
+ "name": "ОÑтрови Кука"
+ },
+ "PN": {
+ "name": "ОÑтрови Піткерн"
+ },
+ "SJ": {
+ "name": "ОÑтрови Свальбард Ñ– Ян-Маєн"
+ },
+ "TC": {
+ "name": "ОÑтрови Ð¢ÐµÑ€ÐºÑ Ñ– КайкоÑ"
+ },
+ "PK": {
+ "name": "ПакиÑтан"
+ },
+ "PW": {
+ "name": "Палау"
+ },
+ "PS": {
+ "name": "ПалеÑтинÑькі території"
+ },
+ "PA": {
+ "name": "Панама"
+ },
+ "PG": {
+ "name": "Папуа Ðова ГвінеÑ"
+ },
+ "ZA": {
+ "name": "ПÐР"
+ },
+ "PY": {
+ "name": "Парагвай"
+ },
+ "PE": {
+ "name": "Перу"
+ },
+ "GS": {
+ "name": "Південна Ð”Ð¶Ð¾Ñ€Ð´Ð¶Ñ–Ñ Ñ‚Ð° Південні Сандвічеві оÑтрови"
+ },
+ "KR": {
+ "name": "Південна КореÑ"
+ },
+ "SS": {
+ "name": "Південний Судан"
+ },
+ "KP": {
+ "name": "Північна КореÑ"
+ },
+ "MP": {
+ "name": "Північні МаріанÑькі оÑтрови"
+ },
+ "PL": {
+ "name": "Польща"
+ },
+ "PT": {
+ "name": "ПортугаліÑ"
+ },
+ "PR": {
+ "name": "Пуерто-Рико"
+ },
+ "RE": {
+ "name": "Реюньйон"
+ },
+ "RU": {
+ "name": "РоÑÑ–Ñ"
+ },
+ "RW": {
+ "name": "Руанда"
+ },
+ "RO": {
+ "name": "РумуніÑ"
+ },
+ "SV": {
+ "name": "Сальвадор"
+ },
+ "WS": {
+ "name": "Самоа"
+ },
+ "SM": {
+ "name": "Сан-Марино"
+ },
+ "ST": {
+ "name": "Сан-Томе Ñ– ПрінÑіпі"
+ },
+ "SA": {
+ "name": "СаудівÑька ÐравіÑ"
+ },
+ "SZ": {
+ "name": "Свазіленд"
+ },
+ "SC": {
+ "name": "СейшельÑькі оÑтрови"
+ },
+ "BL": {
+ "name": "Сен-Бартельмі"
+ },
+ "MF": {
+ "name": "Сен-Мартен"
+ },
+ "PM": {
+ "name": "Сен-Пʼєр і Мікелон"
+ },
+ "SN": {
+ "name": "Сенегал"
+ },
+ "VC": {
+ "name": "Сент-ВінÑент Ñ– Гренадини"
+ },
+ "KN": {
+ "name": "Сент-ÐšÑ–Ñ‚Ñ Ñ– ÐевіÑ"
+ },
+ "LC": {
+ "name": "Сент-ЛюÑÑ–Ñ"
+ },
+ "RS": {
+ "name": "СербіÑ"
+ },
+ "EA": {
+ "name": "Сеута Ñ– МелільÑ"
+ },
+ "SY": {
+ "name": "СиріÑ"
+ },
+ "SG": {
+ "name": "Сінгапур"
+ },
+ "SX": {
+ "name": "Сінт-Мартен"
+ },
+ "SK": {
+ "name": "Словаччина"
+ },
+ "SI": {
+ "name": "СловеніÑ"
+ },
+ "SB": {
+ "name": "Соломонові ОÑтрови"
+ },
+ "SO": {
+ "name": "Сомалі"
+ },
+ "SD": {
+ "name": "Судан"
+ },
+ "SR": {
+ "name": "Суринам"
+ },
+ "TL": {
+ "name": "Східний Тимор"
+ },
+ "US": {
+ "name": "СШÐ"
+ },
+ "SL": {
+ "name": "Сьєрра-Леоне"
+ },
+ "TJ": {
+ "name": "ТаджикиÑтан"
+ },
+ "TH": {
+ "name": "Таїланд"
+ },
+ "TW": {
+ "name": "Тайвань"
+ },
+ "TZ": {
+ "name": "ТанзаніÑ"
+ },
+ "TG": {
+ "name": "Того"
+ },
+ "TK": {
+ "name": "Токелау"
+ },
+ "TO": {
+ "name": "Тонга"
+ },
+ "TT": {
+ "name": "Тринідад і Тобаго"
+ },
+ "TA": {
+ "name": "ТріÑтан-да-КуньÑ"
+ },
+ "TV": {
+ "name": "Тувалу"
+ },
+ "TN": {
+ "name": "ТуніÑ"
+ },
+ "TR": {
+ "name": "Туреччина"
+ },
+ "TM": {
+ "name": "ТуркменіÑтан"
+ },
+ "UG": {
+ "name": "Уганда"
+ },
+ "HU": {
+ "name": "Угорщина"
+ },
+ "UZ": {
+ "name": "УзбекиÑтан"
+ },
+ "UA": {
+ "name": "Україна"
+ },
+ "UY": {
+ "name": "Уругвай"
+ },
+ "FO": {
+ "name": "ФарерÑькі оÑтрови"
+ },
+ "FJ": {
+ "name": "Фіджі"
+ },
+ "PH": {
+ "name": "Філіппіни"
+ },
+ "FI": {
+ "name": "ФінлÑндіÑ"
+ },
+ "FK": {
+ "name": "ФолклендÑькі оÑтрови"
+ },
+ "FR": {
+ "name": "ФранціÑ"
+ },
+ "GF": {
+ "name": "Французька Гвіана"
+ },
+ "PF": {
+ "name": "Французька ПолінезіÑ"
+ },
+ "TF": {
+ "name": "Французькі Південні Території"
+ },
+ "HR": {
+ "name": "ХорватіÑ"
+ },
+ "CF": {
+ "name": "ЦентральноафриканÑька РеÑпубліка"
+ },
+ "TD": {
+ "name": "Чад"
+ },
+ "CZ": {
+ "name": "ЧехіÑ"
+ },
+ "CL": {
+ "name": "Чилі"
+ },
+ "ME": {
+ "name": "ЧорногоріÑ"
+ },
+ "CH": {
+ "name": "ШвейцаріÑ"
+ },
+ "SE": {
+ "name": "ШвеціÑ"
+ },
+ "LK": {
+ "name": "Шрі-Ланка"
+ },
+ "JM": {
+ "name": "Ямайка"
+ },
+ "JP": {
+ "name": "ЯпоніÑ"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/country/ur-IN.json b/library/intl/resources/country/ur-IN.json
new file mode 100644
index 000000000..536cec452
--- /dev/null
+++ b/library/intl/resources/country/ur-IN.json
@@ -0,0 +1,761 @@
+{
+ "IT": {
+ "name": "اٹلی"
+ },
+ "AR": {
+ "name": "ارجنٹینا"
+ },
+ "JO": {
+ "name": "اردن"
+ },
+ "AW": {
+ "name": "اروبا"
+ },
+ "ER": {
+ "name": "اریٹیریا"
+ },
+ "UZ": {
+ "name": "ازبکستان"
+ },
+ "GQ": {
+ "name": "استوائی گیانا"
+ },
+ "EE": {
+ "name": "اسٹونیا"
+ },
+ "IL": {
+ "name": "اسرائیل"
+ },
+ "AF": {
+ "name": "اÙغانستان"
+ },
+ "SV": {
+ "name": "ال سلواڈور"
+ },
+ "AL": {
+ "name": "البانیÛ"
+ },
+ "DZ": {
+ "name": "الجیریا"
+ },
+ "UM": {
+ "name": "امریکی بیرونی جزائر"
+ },
+ "VI": {
+ "name": "امریکی جزائر ورجن"
+ },
+ "AS": {
+ "name": "امریکی ساموآ"
+ },
+ "AQ": {
+ "name": "انٹارکٹیکا"
+ },
+ "AG": {
+ "name": "انٹیگوا اور باربودا"
+ },
+ "AD": {
+ "name": "انڈورا"
+ },
+ "ID": {
+ "name": "انڈونیشیا"
+ },
+ "AO": {
+ "name": "انگولا"
+ },
+ "AI": {
+ "name": "انگوئیلا"
+ },
+ "ET": {
+ "name": "ایتھوپیا"
+ },
+ "IR": {
+ "name": "ایران"
+ },
+ "EC": {
+ "name": "ایکواڈور"
+ },
+ "AZ": {
+ "name": "آذربائجان"
+ },
+ "AM": {
+ "name": "آرمینیا"
+ },
+ "AT": {
+ "name": "آسٹریا"
+ },
+ "AU": {
+ "name": "آسٹریلیا"
+ },
+ "IE": {
+ "name": "آئرلینڈ"
+ },
+ "IS": {
+ "name": "آئس لینڈ"
+ },
+ "IM": {
+ "name": "آئل آ٠مین"
+ },
+ "BB": {
+ "name": "بارباڈوس"
+ },
+ "BH": {
+ "name": "بحرین"
+ },
+ "BR": {
+ "name": "برازیل"
+ },
+ "IO": {
+ "name": "برطانوی بحرÛند خطÛ"
+ },
+ "VG": {
+ "name": "برطانوی جزائر ورجن"
+ },
+ "BF": {
+ "name": "برکینا Ùاسو"
+ },
+ "BM": {
+ "name": "برمودا"
+ },
+ "BI": {
+ "name": "برونڈی"
+ },
+ "BN": {
+ "name": "برونئی"
+ },
+ "BG": {
+ "name": "بلغاریÛ"
+ },
+ "BD": {
+ "name": "Ø¨Ù†Ú¯Ù„Û Ø¯ÛŒØ´"
+ },
+ "BW": {
+ "name": "بوتسوانا"
+ },
+ "BA": {
+ "name": "بوسنیا اور Ûرزیگووینا"
+ },
+ "BO": {
+ "name": "بولیویا"
+ },
+ "BS": {
+ "name": "بÛاماس"
+ },
+ "BY": {
+ "name": "بیلاروس"
+ },
+ "BZ": {
+ "name": "بیلائز"
+ },
+ "BE": {
+ "name": "بیلجیم"
+ },
+ "BJ": {
+ "name": "بینن"
+ },
+ "IN": {
+ "name": "بھارت"
+ },
+ "BT": {
+ "name": "بھوٹان"
+ },
+ "PG": {
+ "name": "پاپوآ نیو گنی"
+ },
+ "PK": {
+ "name": "پاکستان"
+ },
+ "PT": {
+ "name": "پرتگال"
+ },
+ "PW": {
+ "name": "پلاؤ"
+ },
+ "PA": {
+ "name": "پنامÛ"
+ },
+ "PL": {
+ "name": "پولینڈ"
+ },
+ "PY": {
+ "name": "پیراگوئے"
+ },
+ "PE": {
+ "name": "پیرو"
+ },
+ "PR": {
+ "name": "پیورٹو ریکو"
+ },
+ "TJ": {
+ "name": "تاجکستان"
+ },
+ "TW": {
+ "name": "تائیوان"
+ },
+ "TA": {
+ "name": "ترسٹان دا کونیا"
+ },
+ "TM": {
+ "name": "ترکمانستان"
+ },
+ "TR": {
+ "name": "ترکی"
+ },
+ "TT": {
+ "name": "ترینیداد اور ٹوباگو"
+ },
+ "TZ": {
+ "name": "تنزانیÛ"
+ },
+ "TL": {
+ "name": "تیمور لیسٹ"
+ },
+ "TN": {
+ "name": "تیونیسیا"
+ },
+ "TH": {
+ "name": "تھائی لینڈ"
+ },
+ "TK": {
+ "name": "ٹوکیلاؤ"
+ },
+ "TG": {
+ "name": "ٹوگو"
+ },
+ "TO": {
+ "name": "ٹونگا"
+ },
+ "TV": {
+ "name": "ٹووالو"
+ },
+ "JP": {
+ "name": "جاپان"
+ },
+ "GE": {
+ "name": "جارجیا"
+ },
+ "GI": {
+ "name": "جبل الطارق"
+ },
+ "DJ": {
+ "name": "جبوتی"
+ },
+ "JE": {
+ "name": "جرسی"
+ },
+ "DE": {
+ "name": "جرمنی"
+ },
+ "CC": {
+ "name": "جزائر (کیلنگ) کوکوس"
+ },
+ "AX": {
+ "name": "جزائر ایلانڈ"
+ },
+ "PN": {
+ "name": "جزائر پٹکیرن"
+ },
+ "SB": {
+ "name": "جزائر سلیمان"
+ },
+ "MP": {
+ "name": "جزائر شمالی ماریانا"
+ },
+ "FK": {
+ "name": "جزائر Ùاکلینڈ"
+ },
+ "CK": {
+ "name": "جزائر کک"
+ },
+ "IC": {
+ "name": "جزائر کناری"
+ },
+ "TC": {
+ "name": "جزائر کیکس Ùˆ ترکیÛ"
+ },
+ "MH": {
+ "name": "جزائر مارشل"
+ },
+ "FO": {
+ "name": "جزائرÙارو"
+ },
+ "AC": {
+ "name": "Ø¬Ø²ÛŒØ±Û Ø§Ø³ÛŒÙ†Ø´Ù†"
+ },
+ "NF": {
+ "name": "Ø¬Ø²ÛŒØ±Û Ù†Ø§Ø±Ùولک"
+ },
+ "JM": {
+ "name": "جمائیکا"
+ },
+ "ZA": {
+ "name": "جنوبی اÙریقÛ"
+ },
+ "GS": {
+ "name": "جنوبی جارجیا اور جنوبی سینڈوچ جزائر"
+ },
+ "SS": {
+ "name": "جنوبی سوڈان"
+ },
+ "KR": {
+ "name": "جنوبی کوریا"
+ },
+ "TD": {
+ "name": "چاڈ"
+ },
+ "CL": {
+ "name": "چلی"
+ },
+ "CZ": {
+ "name": "چیک جمÛوریÛ"
+ },
+ "CN": {
+ "name": "چین"
+ },
+ "DK": {
+ "name": "ڈنمارک"
+ },
+ "DM": {
+ "name": "ڈومنیکا"
+ },
+ "DO": {
+ "name": "ڈومنیکن جمÛوریÛ"
+ },
+ "DG": {
+ "name": "ڈیگو گارشیا"
+ },
+ "RW": {
+ "name": "روانڈا"
+ },
+ "RU": {
+ "name": "روس"
+ },
+ "RO": {
+ "name": "رومانیا"
+ },
+ "RE": {
+ "name": "ری یونین"
+ },
+ "US": {
+ "name": "ریاستÛائے متحدÛ"
+ },
+ "ZM": {
+ "name": "زامبیا"
+ },
+ "ZW": {
+ "name": "زمبابوے"
+ },
+ "WS": {
+ "name": "ساموآ"
+ },
+ "SM": {
+ "name": "سان مارینو"
+ },
+ "ST": {
+ "name": "ساؤ ٹوم اور پرنسپے"
+ },
+ "RS": {
+ "name": "سربیا"
+ },
+ "LK": {
+ "name": "سری لنکا"
+ },
+ "SC": {
+ "name": "سشلیز"
+ },
+ "SA": {
+ "name": "سعودی عرب"
+ },
+ "GB": {
+ "name": "سلطنت متحدÛ"
+ },
+ "SK": {
+ "name": "سلوواکیÛ"
+ },
+ "SI": {
+ "name": "سلووینیا"
+ },
+ "SX": {
+ "name": "سنٹ مارٹن"
+ },
+ "SG": {
+ "name": "سنگاپور"
+ },
+ "SZ": {
+ "name": "سوازی لینڈ"
+ },
+ "SJ": {
+ "name": "سوالبرڈ اور جان ماین"
+ },
+ "SD": {
+ "name": "سوڈان"
+ },
+ "SR": {
+ "name": "سورینام"
+ },
+ "CH": {
+ "name": "سوئٹزر لینڈ"
+ },
+ "SE": {
+ "name": "سویڈن"
+ },
+ "BL": {
+ "name": "سینٹ برتھلیمی"
+ },
+ "PM": {
+ "name": "سینٹ پیئر اور میکلیئون"
+ },
+ "KN": {
+ "name": "سینٹ کٹس اور نیویس"
+ },
+ "LC": {
+ "name": "سینٹ لوسیا"
+ },
+ "MF": {
+ "name": "سینٹ مارٹن"
+ },
+ "VC": {
+ "name": "سینٹ ونسنٹ اور گرینیڈائنز"
+ },
+ "SH": {
+ "name": "سینٹ Ûیلینا"
+ },
+ "SN": {
+ "name": "سینیگل"
+ },
+ "SL": {
+ "name": "سیئر لیون"
+ },
+ "EA": {
+ "name": "سیئوٹا اور میلیلا"
+ },
+ "SY": {
+ "name": "شام"
+ },
+ "KP": {
+ "name": "شمالی کوریا"
+ },
+ "SO": {
+ "name": "صومالیÛ"
+ },
+ "IQ": {
+ "name": "عراق"
+ },
+ "OM": {
+ "name": "عمان"
+ },
+ "FJ": {
+ "name": "Ùجی"
+ },
+ "FR": {
+ "name": "Ùرانس"
+ },
+ "PF": {
+ "name": "Ùرانسیسی پولینیشیا"
+ },
+ "TF": {
+ "name": "Ùرانسیسی جنوبی خطے"
+ },
+ "GF": {
+ "name": "Ùرانسیسی گیانا"
+ },
+ "PH": {
+ "name": "Ùلپائن"
+ },
+ "PS": {
+ "name": "Ùلسطینی خطے"
+ },
+ "FI": {
+ "name": "ÙÙ† لینڈ"
+ },
+ "CY": {
+ "name": "قبرص"
+ },
+ "KZ": {
+ "name": "قزاخستان"
+ },
+ "QA": {
+ "name": "قطر"
+ },
+ "CG": {
+ "name": "کانگو - برازاویلے"
+ },
+ "CD": {
+ "name": "کانگو - کنشاسا"
+ },
+ "CX": {
+ "name": "کرسمس آئلینڈ"
+ },
+ "KG": {
+ "name": "کرغزستان"
+ },
+ "HR": {
+ "name": "کروشیا"
+ },
+ "KI": {
+ "name": "کریباتی"
+ },
+ "BQ": {
+ "name": "کریبیائی نیدرلینڈز"
+ },
+ "KH": {
+ "name": "کمبوڈیا"
+ },
+ "CI": {
+ "name": "کوت داوواغ"
+ },
+ "CR": {
+ "name": "کوسٹا ریکا"
+ },
+ "XK": {
+ "name": "کوسووو"
+ },
+ "CO": {
+ "name": "کولمبیا"
+ },
+ "KM": {
+ "name": "کوموروس"
+ },
+ "KW": {
+ "name": "کویت"
+ },
+ "CV": {
+ "name": "کیپ ورڈی"
+ },
+ "CM": {
+ "name": "کیمرون"
+ },
+ "KY": {
+ "name": "کیمین آئلینڈز"
+ },
+ "KE": {
+ "name": "کینیا"
+ },
+ "CA": {
+ "name": "کینیڈا"
+ },
+ "CU": {
+ "name": "کیوبا"
+ },
+ "CW": {
+ "name": "کیوراکاؤ"
+ },
+ "GM": {
+ "name": "گامبیا"
+ },
+ "GL": {
+ "name": "گرین لینڈ"
+ },
+ "GD": {
+ "name": "گریناڈا"
+ },
+ "GN": {
+ "name": "گنی"
+ },
+ "GW": {
+ "name": "گنی بساؤ"
+ },
+ "GT": {
+ "name": "گواٹے مالا"
+ },
+ "GP": {
+ "name": "گواڈیلوپ"
+ },
+ "GU": {
+ "name": "گوآم"
+ },
+ "GG": {
+ "name": "گوئرنسی"
+ },
+ "GY": {
+ "name": "گیانا"
+ },
+ "GA": {
+ "name": "گیبون"
+ },
+ "GH": {
+ "name": "گھانا"
+ },
+ "LA": {
+ "name": "لاؤس"
+ },
+ "LR": {
+ "name": "لائبیریا"
+ },
+ "LB": {
+ "name": "لبنان"
+ },
+ "LT": {
+ "name": "لتھوانیا"
+ },
+ "LV": {
+ "name": "لٹویا"
+ },
+ "LU": {
+ "name": "لگژمبرگ"
+ },
+ "LY": {
+ "name": "لیبیا"
+ },
+ "LS": {
+ "name": "لیسوتھو"
+ },
+ "LI": {
+ "name": "لیشٹنسٹائن"
+ },
+ "MQ": {
+ "name": "مارٹینک"
+ },
+ "MU": {
+ "name": "ماریشس"
+ },
+ "MT": {
+ "name": "مالٹا"
+ },
+ "MD": {
+ "name": "مالدووا"
+ },
+ "MV": {
+ "name": "مالدیپ"
+ },
+ "ML": {
+ "name": "مالی"
+ },
+ "FM": {
+ "name": "مائکرونیشیا"
+ },
+ "YT": {
+ "name": "مایوٹ"
+ },
+ "AE": {
+ "name": "Ù…ØªØ­Ø¯Û Ø¹Ø±Ø¨ امارات"
+ },
+ "MG": {
+ "name": "مڈغاسکر"
+ },
+ "MA": {
+ "name": "مراقش"
+ },
+ "EG": {
+ "name": "مصر"
+ },
+ "EH": {
+ "name": "مغربی صحارا"
+ },
+ "MK": {
+ "name": "مقدونیÛ"
+ },
+ "MO": {
+ "name": "مکاؤ SAR چین"
+ },
+ "MW": {
+ "name": "ملاوی"
+ },
+ "MY": {
+ "name": "ملیشیا"
+ },
+ "MN": {
+ "name": "منگولیا"
+ },
+ "MR": {
+ "name": "موریطانیÛ"
+ },
+ "MZ": {
+ "name": "موزمبیق"
+ },
+ "MC": {
+ "name": "موناکو"
+ },
+ "MS": {
+ "name": "مونٹسیراٹ"
+ },
+ "ME": {
+ "name": "مونٹے نیگرو"
+ },
+ "MM": {
+ "name": "میانمار (برما)"
+ },
+ "MX": {
+ "name": "میکسیکو"
+ },
+ "NO": {
+ "name": "ناروے"
+ },
+ "NA": {
+ "name": "نامیبیا"
+ },
+ "NR": {
+ "name": "ناورو"
+ },
+ "NE": {
+ "name": "نائجر"
+ },
+ "NG": {
+ "name": "نائجیریا"
+ },
+ "NI": {
+ "name": "نکاراگووا"
+ },
+ "NP": {
+ "name": "نیپال"
+ },
+ "NL": {
+ "name": "نیدر لینڈز"
+ },
+ "NC": {
+ "name": "نیو کلیڈونیا"
+ },
+ "NZ": {
+ "name": "نیوزی ینڈ"
+ },
+ "NU": {
+ "name": "نیئو"
+ },
+ "VA": {
+ "name": "واٹیکن سٹی"
+ },
+ "CF": {
+ "name": "وسط اÙریقی جمÛوریÛ"
+ },
+ "VN": {
+ "name": "ویتنام"
+ },
+ "WF": {
+ "name": "ویلیز اور Ùیوٹیونا"
+ },
+ "VE": {
+ "name": "وینزوئیلا"
+ },
+ "VU": {
+ "name": "وینوآٹو"
+ },
+ "HK": {
+ "name": "Ûانگ کانگ SAR چین"
+ },
+ "ES": {
+ "name": "ÛسپانیÛ"
+ },
+ "HU": {
+ "name": "Ûنگری"
+ },
+ "HN": {
+ "name": "Ûونڈاروس"
+ },
+ "HT": {
+ "name": "Ûیتی"
+ },
+ "YE": {
+ "name": "یمن"
+ },
+ "UY": {
+ "name": "یوروگوئے"
+ },
+ "UA": {
+ "name": "یوکرین"
+ },
+ "UG": {
+ "name": "یوگانڈا"
+ },
+ "GR": {
+ "name": "یونان"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/country/ur.json b/library/intl/resources/country/ur.json
new file mode 100644
index 000000000..5bb85870b
--- /dev/null
+++ b/library/intl/resources/country/ur.json
@@ -0,0 +1,761 @@
+{
+ "IT": {
+ "name": "اٹلی"
+ },
+ "AR": {
+ "name": "ارجنٹینا"
+ },
+ "JO": {
+ "name": "اردن"
+ },
+ "AW": {
+ "name": "اروبا"
+ },
+ "ER": {
+ "name": "اریٹیریا"
+ },
+ "UZ": {
+ "name": "ازبکستان"
+ },
+ "GQ": {
+ "name": "استوائی گیانا"
+ },
+ "EE": {
+ "name": "اسٹونیا"
+ },
+ "IL": {
+ "name": "اسرائیل"
+ },
+ "AC": {
+ "name": "اسکینسیئن آئلینڈ"
+ },
+ "AF": {
+ "name": "اÙغانستان"
+ },
+ "SV": {
+ "name": "ال سلواڈور"
+ },
+ "AL": {
+ "name": "البانیÛ"
+ },
+ "DZ": {
+ "name": "الجیریا"
+ },
+ "UM": {
+ "name": "Ø§Ù…Ø±ÛŒÚ©Û Ø³Û’ باÛر Ú©Û’ چھوٹے جزائز"
+ },
+ "AS": {
+ "name": "امریکی ساموآ"
+ },
+ "VI": {
+ "name": "امریکی ورجن آئلینڈز"
+ },
+ "AQ": {
+ "name": "انٹارکٹیکا"
+ },
+ "AG": {
+ "name": "انٹیگوا اور باربودا"
+ },
+ "AD": {
+ "name": "انڈورا"
+ },
+ "ID": {
+ "name": "انڈونیشیا"
+ },
+ "AO": {
+ "name": "انگولا"
+ },
+ "AI": {
+ "name": "انگوئیلا"
+ },
+ "ET": {
+ "name": "ایتھوپیا"
+ },
+ "IR": {
+ "name": "ایران"
+ },
+ "EC": {
+ "name": "ایکواڈور"
+ },
+ "AZ": {
+ "name": "آذربائجان"
+ },
+ "AM": {
+ "name": "آرمینیا"
+ },
+ "AT": {
+ "name": "آسٹریا"
+ },
+ "AU": {
+ "name": "آسٹریلیا"
+ },
+ "AX": {
+ "name": "آلینڈ آئلینڈز"
+ },
+ "IE": {
+ "name": "آئرلینڈ"
+ },
+ "IS": {
+ "name": "آئس لینڈ"
+ },
+ "IM": {
+ "name": "آئل آ٠مین"
+ },
+ "BB": {
+ "name": "باربادوس"
+ },
+ "BH": {
+ "name": "بحرین"
+ },
+ "BR": {
+ "name": "برازیلی"
+ },
+ "VG": {
+ "name": "برٹش ورجن آئلینڈز"
+ },
+ "IO": {
+ "name": "برطانوی Ûندوستانی سمندری خطÛ"
+ },
+ "BF": {
+ "name": "برکینا Ùاسو"
+ },
+ "BM": {
+ "name": "برمودا"
+ },
+ "BI": {
+ "name": "برونڈی"
+ },
+ "BN": {
+ "name": "برونئی"
+ },
+ "BG": {
+ "name": "بلغاریÛ"
+ },
+ "BD": {
+ "name": "Ø¨Ù†Ú¯Ù„Û Ø¯ÛŒØ´"
+ },
+ "BW": {
+ "name": "بوتسوانا"
+ },
+ "BA": {
+ "name": "بوسنیا اور Ûرزیگووینا"
+ },
+ "BO": {
+ "name": "بولیویا"
+ },
+ "BS": {
+ "name": "بÛاماس"
+ },
+ "BY": {
+ "name": "بیلاروس"
+ },
+ "BZ": {
+ "name": "بیلائز"
+ },
+ "BE": {
+ "name": "بیلجیم"
+ },
+ "BJ": {
+ "name": "بینن"
+ },
+ "IN": {
+ "name": "بھارت"
+ },
+ "BT": {
+ "name": "بھوٹان"
+ },
+ "PG": {
+ "name": "پاپوآ نیو گنی"
+ },
+ "PK": {
+ "name": "پاکستان"
+ },
+ "PN": {
+ "name": "پٹکائرن جزائر"
+ },
+ "PT": {
+ "name": "پرتگال"
+ },
+ "PW": {
+ "name": "پلاؤ"
+ },
+ "PA": {
+ "name": "پنامÛ"
+ },
+ "PL": {
+ "name": "پولینڈ"
+ },
+ "PY": {
+ "name": "پیراگوئے"
+ },
+ "PE": {
+ "name": "پیرو"
+ },
+ "PR": {
+ "name": "پیورٹو ریکو"
+ },
+ "TJ": {
+ "name": "تاجکستان"
+ },
+ "TW": {
+ "name": "تائیوان"
+ },
+ "TC": {
+ "name": "ترکس اور کیکاؤس جزائر"
+ },
+ "TM": {
+ "name": "ترکمانستان"
+ },
+ "TR": {
+ "name": "ترکی"
+ },
+ "TT": {
+ "name": "ترینیداد اور ٹوباگو"
+ },
+ "TZ": {
+ "name": "تنزانیÛ"
+ },
+ "TL": {
+ "name": "تیمور لیسٹ"
+ },
+ "TN": {
+ "name": "تیونیسیا"
+ },
+ "TH": {
+ "name": "تھائی لینڈ"
+ },
+ "TA": {
+ "name": "ٹرسٹن ڈا کیونÛا"
+ },
+ "TK": {
+ "name": "ٹوکیلاؤ"
+ },
+ "TG": {
+ "name": "ٹوگو"
+ },
+ "TO": {
+ "name": "ٹونگا"
+ },
+ "TV": {
+ "name": "ٹووالو"
+ },
+ "JP": {
+ "name": "جاپان"
+ },
+ "GE": {
+ "name": "جارجیا"
+ },
+ "GI": {
+ "name": "جبل الطارق"
+ },
+ "DJ": {
+ "name": "جبوتی"
+ },
+ "JE": {
+ "name": "جرسی"
+ },
+ "DE": {
+ "name": "جرمنی"
+ },
+ "JM": {
+ "name": "جمائیکا"
+ },
+ "ZA": {
+ "name": "جنوبی اÙریقÛ"
+ },
+ "GS": {
+ "name": "جنوبی جارجیا اور جنوبی سینڈوچ جزائر"
+ },
+ "SS": {
+ "name": "جنوبی سوڈان"
+ },
+ "KR": {
+ "name": "جنوبی کوریا"
+ },
+ "TD": {
+ "name": "چاڈ"
+ },
+ "CL": {
+ "name": "چلی"
+ },
+ "CZ": {
+ "name": "چیک جمÛوریÛ"
+ },
+ "CN": {
+ "name": "چین"
+ },
+ "DG": {
+ "name": "ڈائجو گارسیا"
+ },
+ "DK": {
+ "name": "ڈنمارک"
+ },
+ "DM": {
+ "name": "ڈومنیکا"
+ },
+ "DO": {
+ "name": "ڈومنیکن جمÛوریÛ"
+ },
+ "RW": {
+ "name": "روانڈا"
+ },
+ "RU": {
+ "name": "روسی"
+ },
+ "RO": {
+ "name": "رومانیا"
+ },
+ "RE": {
+ "name": "ری یونین"
+ },
+ "US": {
+ "name": "ریاستÛائے متحدÛ"
+ },
+ "ZM": {
+ "name": "زامبیا"
+ },
+ "ZW": {
+ "name": "زمبابوے"
+ },
+ "WS": {
+ "name": "ساموآ"
+ },
+ "SM": {
+ "name": "سان مارینو"
+ },
+ "ST": {
+ "name": "ساؤ ٹوم اور پرنسپے"
+ },
+ "RS": {
+ "name": "سربیا"
+ },
+ "LK": {
+ "name": "سری لنکا"
+ },
+ "SC": {
+ "name": "سشلیز"
+ },
+ "SA": {
+ "name": "سعودی عرب"
+ },
+ "GB": {
+ "name": "سلطنت متحدÛ"
+ },
+ "SK": {
+ "name": "سلوواکیÛ"
+ },
+ "SI": {
+ "name": "سلووینیا"
+ },
+ "SX": {
+ "name": "سنٹ مارٹن"
+ },
+ "SG": {
+ "name": "سنگاپور"
+ },
+ "SZ": {
+ "name": "سوازی لینڈ"
+ },
+ "SJ": {
+ "name": "سوالبرڈ اور جان ماین"
+ },
+ "SD": {
+ "name": "سوڈان"
+ },
+ "SR": {
+ "name": "سورینام"
+ },
+ "SB": {
+ "name": "سولومن آئلینڈز"
+ },
+ "CH": {
+ "name": "سوئٹزر لینڈ"
+ },
+ "SE": {
+ "name": "سویڈن"
+ },
+ "BL": {
+ "name": "سینٹ برتھلیمی"
+ },
+ "PM": {
+ "name": "سینٹ پیئر اور میکلیئون"
+ },
+ "KN": {
+ "name": "سینٹ کٹس اور نیویس"
+ },
+ "LC": {
+ "name": "سینٹ لوسیا"
+ },
+ "MF": {
+ "name": "سینٹ مارٹن"
+ },
+ "VC": {
+ "name": "سینٹ ونسنٹ اور گرینیڈائنز"
+ },
+ "SH": {
+ "name": "سینٹ Ûیلینا"
+ },
+ "SN": {
+ "name": "سینیگل"
+ },
+ "SL": {
+ "name": "سیئر لیون"
+ },
+ "EA": {
+ "name": "سیئوٹا اور میلیلا"
+ },
+ "SY": {
+ "name": "شام"
+ },
+ "KP": {
+ "name": "شمالی کوریا"
+ },
+ "MP": {
+ "name": "شمالی ماریانا آئلینڈز"
+ },
+ "SO": {
+ "name": "صومالیÛ"
+ },
+ "IQ": {
+ "name": "عراق"
+ },
+ "OM": {
+ "name": "عمان"
+ },
+ "GD": {
+ "name": "غرناطÛ"
+ },
+ "FK": {
+ "name": "Ùاکلینڈ جزائر"
+ },
+ "FJ": {
+ "name": "Ùجی"
+ },
+ "FR": {
+ "name": "Ùرانس"
+ },
+ "PF": {
+ "name": "Ùرانسیسی پولینیشیا"
+ },
+ "TF": {
+ "name": "Ùرانسیسی جنوبی خطے"
+ },
+ "FO": {
+ "name": "Ùروئی آئلینڈز"
+ },
+ "GF": {
+ "name": "Ùرینچ گیانا"
+ },
+ "PH": {
+ "name": "Ùلپائنی"
+ },
+ "PS": {
+ "name": "Ùلسطینی خطے"
+ },
+ "FI": {
+ "name": "ÙÙ† لینڈ"
+ },
+ "CY": {
+ "name": "قبرص"
+ },
+ "KZ": {
+ "name": "قزاخستان"
+ },
+ "QA": {
+ "name": "قطر"
+ },
+ "CG": {
+ "name": "کانگو - برازاویلے"
+ },
+ "CD": {
+ "name": "کانگو - کنشاسا"
+ },
+ "CX": {
+ "name": "کرسمس آئلینڈ"
+ },
+ "KG": {
+ "name": "کرغزستان"
+ },
+ "HR": {
+ "name": "کروشیا"
+ },
+ "KI": {
+ "name": "کریباتی"
+ },
+ "BQ": {
+ "name": "کریبیائی نیدرلینڈز"
+ },
+ "CK": {
+ "name": "کک آئلینڈز"
+ },
+ "KH": {
+ "name": "کمبوڈیا"
+ },
+ "CI": {
+ "name": "کوٹ ڈی آئیوری"
+ },
+ "CR": {
+ "name": "کوسٹا ریکا"
+ },
+ "XK": {
+ "name": "کوسووو"
+ },
+ "CC": {
+ "name": "کوکوس (کیلنگ) جزائر"
+ },
+ "CO": {
+ "name": "کولمبیا"
+ },
+ "KM": {
+ "name": "کوموروس"
+ },
+ "KW": {
+ "name": "کویت"
+ },
+ "CV": {
+ "name": "کیپ ورڈی"
+ },
+ "CM": {
+ "name": "کیمرون"
+ },
+ "KY": {
+ "name": "کیمین آئلینڈز"
+ },
+ "IC": {
+ "name": "کینری آئلینڈز"
+ },
+ "KE": {
+ "name": "کینیا"
+ },
+ "CA": {
+ "name": "کینیڈا"
+ },
+ "CU": {
+ "name": "کیوبا"
+ },
+ "CW": {
+ "name": "کیوراکاؤ"
+ },
+ "GM": {
+ "name": "گامبیا"
+ },
+ "GL": {
+ "name": "گرین لینڈ"
+ },
+ "GN": {
+ "name": "گنی"
+ },
+ "GW": {
+ "name": "گنی بساؤ"
+ },
+ "GT": {
+ "name": "گواٹے مالا"
+ },
+ "GP": {
+ "name": "گواڈیلوپ"
+ },
+ "GU": {
+ "name": "گوآم"
+ },
+ "GG": {
+ "name": "گوئرنسی"
+ },
+ "GY": {
+ "name": "گیانا"
+ },
+ "GA": {
+ "name": "گیبون"
+ },
+ "GH": {
+ "name": "گھانا"
+ },
+ "LA": {
+ "name": "لاؤس"
+ },
+ "LR": {
+ "name": "لائبیریا"
+ },
+ "LB": {
+ "name": "لبنان"
+ },
+ "LT": {
+ "name": "لتھوانیا"
+ },
+ "LV": {
+ "name": "لٹویا"
+ },
+ "LU": {
+ "name": "لگژمبرگ"
+ },
+ "LY": {
+ "name": "لیبیا"
+ },
+ "LS": {
+ "name": "لیسوتھو"
+ },
+ "LI": {
+ "name": "لیشٹنسٹائن"
+ },
+ "MQ": {
+ "name": "مارٹینک"
+ },
+ "MH": {
+ "name": "مارشل آئلینڈز"
+ },
+ "MU": {
+ "name": "ماریشس"
+ },
+ "MT": {
+ "name": "مالٹا"
+ },
+ "MD": {
+ "name": "مالدووا"
+ },
+ "MV": {
+ "name": "مالدیپ"
+ },
+ "ML": {
+ "name": "مالی"
+ },
+ "FM": {
+ "name": "مائکرونیشیا"
+ },
+ "YT": {
+ "name": "مایوٹ"
+ },
+ "AE": {
+ "name": "Ù…ØªØ­Ø¯Û Ø¹Ø±Ø¨ امارات"
+ },
+ "MG": {
+ "name": "مڈغاسکر"
+ },
+ "MA": {
+ "name": "مراقش"
+ },
+ "EG": {
+ "name": "مصر"
+ },
+ "EH": {
+ "name": "مغربی صحارا"
+ },
+ "MK": {
+ "name": "مقدونیÛ"
+ },
+ "MO": {
+ "name": "مکاؤ SAR چین"
+ },
+ "MW": {
+ "name": "ملاوی"
+ },
+ "MY": {
+ "name": "ملیشیا"
+ },
+ "MN": {
+ "name": "منگولیا"
+ },
+ "MR": {
+ "name": "موریطانیÛ"
+ },
+ "MZ": {
+ "name": "موزمبیق"
+ },
+ "MC": {
+ "name": "موناکو"
+ },
+ "MS": {
+ "name": "مونٹسیراٹ"
+ },
+ "ME": {
+ "name": "مونٹے نیگرو"
+ },
+ "MM": {
+ "name": "میانمار (برما)"
+ },
+ "MX": {
+ "name": "میکسیکو"
+ },
+ "NF": {
+ "name": "نار Ùاک آئلینڈ"
+ },
+ "NO": {
+ "name": "ناروے"
+ },
+ "NA": {
+ "name": "نامیبیا"
+ },
+ "NE": {
+ "name": "نائجر"
+ },
+ "NG": {
+ "name": "نائجیریا"
+ },
+ "NI": {
+ "name": "نکاراگووا"
+ },
+ "NR": {
+ "name": "نؤرو"
+ },
+ "NP": {
+ "name": "نیپال"
+ },
+ "NL": {
+ "name": "نیدر لینڈز"
+ },
+ "NC": {
+ "name": "نیو کلیڈونیا"
+ },
+ "NZ": {
+ "name": "نیوزی ینڈ"
+ },
+ "NU": {
+ "name": "نیئو"
+ },
+ "VA": {
+ "name": "واٹیکن سٹی"
+ },
+ "CF": {
+ "name": "وسط اÙریقی جمÛوریÛ"
+ },
+ "VN": {
+ "name": "ویتنام"
+ },
+ "WF": {
+ "name": "ویلیز اور Ùیوٹیونا"
+ },
+ "VE": {
+ "name": "وینزوئیلا"
+ },
+ "VU": {
+ "name": "وینوآٹو"
+ },
+ "HK": {
+ "name": "Ûانگ کانگ SAR چین"
+ },
+ "ES": {
+ "name": "ÛسپانیÛ"
+ },
+ "HU": {
+ "name": "Ûنگری"
+ },
+ "HN": {
+ "name": "Ûونڈاروس"
+ },
+ "HT": {
+ "name": "Ûیتی"
+ },
+ "YE": {
+ "name": "یمن"
+ },
+ "UY": {
+ "name": "یوروگوئے"
+ },
+ "UA": {
+ "name": "یوکرین"
+ },
+ "UG": {
+ "name": "یوگانڈا"
+ },
+ "GR": {
+ "name": "یونان"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/country/uz-Cyrl.json b/library/intl/resources/country/uz-Cyrl.json
new file mode 100644
index 000000000..7952cce87
--- /dev/null
+++ b/library/intl/resources/country/uz-Cyrl.json
@@ -0,0 +1,761 @@
+{
+ "AU": {
+ "name": "ÐвÑтралиÑ"
+ },
+ "AT": {
+ "name": "ÐвÑтриÑ"
+ },
+ "VI": {
+ "name": "ÐҚШ Ð’Ð¸Ñ€Ð´Ð¶Ð¸Ð½Ð¸Ñ Ð¾Ñ€Ð¾Ð»Ð»Ð°Ñ€Ð¸"
+ },
+ "UM": {
+ "name": "ÐҚШ ёндош ороллари"
+ },
+ "AX": {
+ "name": "Ðланд ороллари"
+ },
+ "AL": {
+ "name": "ÐлбаниÑ"
+ },
+ "AS": {
+ "name": "Ðмерика СамоаÑи"
+ },
+ "AI": {
+ "name": "Ðнгила"
+ },
+ "AO": {
+ "name": "Ðнгола"
+ },
+ "AD": {
+ "name": "Ðндорра"
+ },
+ "AQ": {
+ "name": "Ðнтарктика"
+ },
+ "AG": {
+ "name": "Ðнтигуа ва БарбадоÑ"
+ },
+ "AR": {
+ "name": "Ðргентина"
+ },
+ "AM": {
+ "name": "ÐрманиÑтон"
+ },
+ "AW": {
+ "name": "Ðруба"
+ },
+ "AF": {
+ "name": "ÐфғониÑтон"
+ },
+ "BS": {
+ "name": "Багама ороллари"
+ },
+ "BD": {
+ "name": "Бангладеш"
+ },
+ "BB": {
+ "name": "БарбадоÑ"
+ },
+ "BH": {
+ "name": "Баҳрайн"
+ },
+ "BZ": {
+ "name": "Белиз"
+ },
+ "BY": {
+ "name": "БелоруÑиÑ"
+ },
+ "BE": {
+ "name": "БельгиÑ"
+ },
+ "BJ": {
+ "name": "Бенин"
+ },
+ "BM": {
+ "name": "Бермуда"
+ },
+ "AE": {
+ "name": "Бирлашган Ðраб Ðмирликлари"
+ },
+ "GB": {
+ "name": "Бирлашган Қироллик"
+ },
+ "BG": {
+ "name": "БолгариÑ"
+ },
+ "BO": {
+ "name": "БоливиÑ"
+ },
+ "BA": {
+ "name": "БоÑÐ½Ð¸Ñ Ð²Ð° Герцеговина"
+ },
+ "BW": {
+ "name": "БотÑванна"
+ },
+ "BR": {
+ "name": "БразилиÑ"
+ },
+ "VG": {
+ "name": "Ð‘Ñ€Ð¸Ñ‚Ð°Ð½Ð¸Ñ Ð’Ð¸Ñ€Ð´Ð¶Ð¸Ð½Ð¸Ñ Ð¾Ñ€Ð¾Ð»Ð»Ð°Ñ€Ð¸"
+ },
+ "IO": {
+ "name": "Ð‘Ñ€Ð¸Ñ‚Ð°Ð½Ð¸Ñ Ò²Ð¸Ð½Ð´ океани ҳудуди"
+ },
+ "BN": {
+ "name": "Бруней"
+ },
+ "BF": {
+ "name": "Буркина-ФаÑо"
+ },
+ "BI": {
+ "name": "Бурунди"
+ },
+ "BT": {
+ "name": "Бутан"
+ },
+ "VU": {
+ "name": "Вануату"
+ },
+ "VA": {
+ "name": "Ватикан"
+ },
+ "HU": {
+ "name": "ВенгриÑ"
+ },
+ "VE": {
+ "name": "ВенеÑуÑла"
+ },
+ "AC": {
+ "name": "ВознеÑение ороли"
+ },
+ "VN": {
+ "name": "Вьетнам"
+ },
+ "GA": {
+ "name": "Габон"
+ },
+ "HT": {
+ "name": "Гаити"
+ },
+ "GM": {
+ "name": "ГамбиÑ"
+ },
+ "GH": {
+ "name": "Гана"
+ },
+ "GY": {
+ "name": "ГаÑна"
+ },
+ "GP": {
+ "name": "Гваделупе"
+ },
+ "GT": {
+ "name": "Гватемала"
+ },
+ "GN": {
+ "name": "ГвинеÑ"
+ },
+ "GW": {
+ "name": "ГвинеÑ-БиÑау"
+ },
+ "GG": {
+ "name": "ГернÑи"
+ },
+ "GI": {
+ "name": "Гибралтар"
+ },
+ "HN": {
+ "name": "ГондураÑ"
+ },
+ "HK": {
+ "name": "Гонконг Хитой ММҲ"
+ },
+ "GD": {
+ "name": "Гренада"
+ },
+ "GL": {
+ "name": "ГренландиÑ"
+ },
+ "GR": {
+ "name": "ГрециÑ"
+ },
+ "GE": {
+ "name": "ГрузиÑ"
+ },
+ "GU": {
+ "name": "Гуам"
+ },
+ "EH": {
+ "name": "Ғарбий Саҳрои Кабир"
+ },
+ "DK": {
+ "name": "ДаниÑ"
+ },
+ "JE": {
+ "name": "ДжерÑи"
+ },
+ "DJ": {
+ "name": "Джибути"
+ },
+ "DG": {
+ "name": "Диего ГарÑиÑ"
+ },
+ "DM": {
+ "name": "Доминика"
+ },
+ "DO": {
+ "name": "Доминикан РеÑпубликаÑи"
+ },
+ "DZ": {
+ "name": "Жазоир"
+ },
+ "ZA": {
+ "name": "Жанубий Ðфрика"
+ },
+ "GS": {
+ "name": "Жанубий Ð”Ð¶Ð¾Ñ€Ð´Ð¶Ð¸Ñ Ð²Ð° Жанубий Сендвич ороллари"
+ },
+ "KR": {
+ "name": "Жанубий КореÑ"
+ },
+ "SS": {
+ "name": "Жанубий Судан"
+ },
+ "ZM": {
+ "name": "ЗамбиÑ"
+ },
+ "ZW": {
+ "name": "Зимбабве"
+ },
+ "ID": {
+ "name": "ИндонезиÑ"
+ },
+ "JO": {
+ "name": "ИорданиÑ"
+ },
+ "IE": {
+ "name": "ИрландиÑ"
+ },
+ "IQ": {
+ "name": "Ироқ"
+ },
+ "IS": {
+ "name": "ИÑландиÑ"
+ },
+ "ES": {
+ "name": "ИÑпаниÑ"
+ },
+ "IL": {
+ "name": "ИÑроил"
+ },
+ "IT": {
+ "name": "ИталиÑ"
+ },
+ "CV": {
+ "name": "Кабо-Верде"
+ },
+ "KY": {
+ "name": "Кайман ороллари"
+ },
+ "KH": {
+ "name": "Камбоджа"
+ },
+ "CM": {
+ "name": "Камерун"
+ },
+ "CA": {
+ "name": "Канада"
+ },
+ "IC": {
+ "name": "Канар ороллари"
+ },
+ "BQ": {
+ "name": "Кариб ÐидерландиÑÑи"
+ },
+ "KE": {
+ "name": "КениÑ"
+ },
+ "CY": {
+ "name": "Кипр"
+ },
+ "KI": {
+ "name": "Кирибати"
+ },
+ "CC": {
+ "name": "ÐšÐ¾ÐºÐ¾Ñ (Килинг) ороллари"
+ },
+ "CO": {
+ "name": "КолумбиÑ"
+ },
+ "KM": {
+ "name": "Комор ороллари"
+ },
+ "CG": {
+ "name": "Конго Браззавиль"
+ },
+ "CD": {
+ "name": "Конго-КиншаÑа"
+ },
+ "XK": {
+ "name": "КоÑово"
+ },
+ "CR": {
+ "name": "КоÑта-Рика"
+ },
+ "CI": {
+ "name": "Кот-д-Ивуар"
+ },
+ "CU": {
+ "name": "Куба"
+ },
+ "KW": {
+ "name": "Кувайт"
+ },
+ "CK": {
+ "name": "Кук ороллари"
+ },
+ "CW": {
+ "name": "КураÑао"
+ },
+ "QA": {
+ "name": "Қатар"
+ },
+ "KG": {
+ "name": "ҚирғизиÑтон"
+ },
+ "KZ": {
+ "name": "ҚозоғиÑтон"
+ },
+ "US": {
+ "name": "Қўшма Штатлар"
+ },
+ "LA": {
+ "name": "ЛаоÑ"
+ },
+ "LV": {
+ "name": "ЛатвиÑ"
+ },
+ "LS": {
+ "name": "ЛеÑото"
+ },
+ "LR": {
+ "name": "ЛибериÑ"
+ },
+ "LB": {
+ "name": "Ливан"
+ },
+ "LY": {
+ "name": "ЛивиÑ"
+ },
+ "LT": {
+ "name": "Литва"
+ },
+ "LI": {
+ "name": "Лихтенштейн"
+ },
+ "LU": {
+ "name": "ЛюкÑембург"
+ },
+ "MU": {
+ "name": "Маврикий"
+ },
+ "MR": {
+ "name": "МавританиÑ"
+ },
+ "MG": {
+ "name": "МадагаÑкар"
+ },
+ "YT": {
+ "name": "Майотта"
+ },
+ "MO": {
+ "name": "Макао Хитой ММҲ"
+ },
+ "MK": {
+ "name": "МакедониÑ"
+ },
+ "MW": {
+ "name": "Малави"
+ },
+ "MY": {
+ "name": "МалайзиÑ"
+ },
+ "ML": {
+ "name": "Мали"
+ },
+ "MV": {
+ "name": "Мальдив ороллари"
+ },
+ "MT": {
+ "name": "Мальта"
+ },
+ "CF": {
+ "name": "Марказий Ðфрика РеÑпубликаÑи"
+ },
+ "MA": {
+ "name": "Марокаш"
+ },
+ "MQ": {
+ "name": "Мартиника"
+ },
+ "MH": {
+ "name": "Маршал ороллари"
+ },
+ "MX": {
+ "name": "МекÑика"
+ },
+ "FM": {
+ "name": "МикронезиÑ"
+ },
+ "EG": {
+ "name": "МиÑÑ€"
+ },
+ "MZ": {
+ "name": "Мозамбик"
+ },
+ "MD": {
+ "name": "Молдова"
+ },
+ "MC": {
+ "name": "Монако"
+ },
+ "MS": {
+ "name": "МонтÑеррат"
+ },
+ "MN": {
+ "name": "МуғулиÑтон"
+ },
+ "BL": {
+ "name": "ÐœÑƒÒ›Ð°Ð´Ð´Ð°Ñ Ð’Ð°Ñ€Ñ„Ð°Ð»Ð¾Ð¼ÐµÐ¹"
+ },
+ "SH": {
+ "name": "ÐœÑƒÒ›Ð°Ð´Ð´Ð°Ñ Ð•Ð»ÐµÐ½Ð° ороллари"
+ },
+ "MM": {
+ "name": "МьÑнма (Бирма)"
+ },
+ "IM": {
+ "name": "ÐœÑн ороли"
+ },
+ "NA": {
+ "name": "ÐамибиÑ"
+ },
+ "NR": {
+ "name": "Ðауру"
+ },
+ "NP": {
+ "name": "Ðепал"
+ },
+ "NE": {
+ "name": "Ðигер"
+ },
+ "NG": {
+ "name": "ÐигериÑ"
+ },
+ "NL": {
+ "name": "ÐидерландиÑ"
+ },
+ "NI": {
+ "name": "Ðикарагуа"
+ },
+ "NU": {
+ "name": "Ðиуе"
+ },
+ "NO": {
+ "name": "ÐорвегиÑ"
+ },
+ "NF": {
+ "name": "Ðорфолк ороллари"
+ },
+ "AZ": {
+ "name": "Озарбайжон"
+ },
+ "DE": {
+ "name": "ОлмониÑ"
+ },
+ "PW": {
+ "name": "Палау"
+ },
+ "PA": {
+ "name": "Панама"
+ },
+ "PG": {
+ "name": "Папуа Янги ГвинеÑ"
+ },
+ "PY": {
+ "name": "Парагвай"
+ },
+ "PE": {
+ "name": "Перу"
+ },
+ "PN": {
+ "name": "Питкарин ороллари"
+ },
+ "PK": {
+ "name": "ПокиÑтон"
+ },
+ "PL": {
+ "name": "Польша"
+ },
+ "PT": {
+ "name": "ПортугалиÑ"
+ },
+ "PR": {
+ "name": "ПуÑрто-Рико"
+ },
+ "RE": {
+ "name": "Реюньон"
+ },
+ "CX": {
+ "name": "РождеÑтво ороли"
+ },
+ "RU": {
+ "name": "РоÑÑиÑ"
+ },
+ "RW": {
+ "name": "Руанда"
+ },
+ "RO": {
+ "name": "РуминиÑ"
+ },
+ "SJ": {
+ "name": "Савльбард ва Жан Маен"
+ },
+ "WS": {
+ "name": "Самоа"
+ },
+ "SM": {
+ "name": "Сан-Марино"
+ },
+ "ST": {
+ "name": "Сан-Томе ва ПринÑипи"
+ },
+ "SA": {
+ "name": "Ð¡Ð°ÑƒÐ´Ð¸Ñ ÐрабиÑтони"
+ },
+ "SZ": {
+ "name": "Свазиленд"
+ },
+ "EA": {
+ "name": "Сейта ва Мелилла"
+ },
+ "SC": {
+ "name": "Сейшел ороллари"
+ },
+ "SN": {
+ "name": "Сенегал"
+ },
+ "VC": {
+ "name": "Сент-ВинÑент ва Гренадин"
+ },
+ "KN": {
+ "name": "Сент-ÐšÐ¸Ñ‚Ñ Ð²Ð° ÐевиÑ"
+ },
+ "LC": {
+ "name": "Сент-ЛюÑиÑ"
+ },
+ "MF": {
+ "name": "Сент-Мартин"
+ },
+ "PM": {
+ "name": "Сент-Пьер ва Микелон"
+ },
+ "RS": {
+ "name": "СербиÑ"
+ },
+ "SG": {
+ "name": "Сингапур"
+ },
+ "SX": {
+ "name": "Синт-Маартен"
+ },
+ "SK": {
+ "name": "СловакиÑ"
+ },
+ "SI": {
+ "name": "СловениÑ"
+ },
+ "SB": {
+ "name": "Соломон ороллари"
+ },
+ "SO": {
+ "name": "Сомали"
+ },
+ "SD": {
+ "name": "Судан"
+ },
+ "SR": {
+ "name": "Суринам"
+ },
+ "SY": {
+ "name": "СуриÑ"
+ },
+ "SL": {
+ "name": "Сьерра-Леоне"
+ },
+ "TW": {
+ "name": "Тайван"
+ },
+ "TH": {
+ "name": "Тайланд"
+ },
+ "TZ": {
+ "name": "ТанзаниÑ"
+ },
+ "TG": {
+ "name": "Того"
+ },
+ "TJ": {
+ "name": "ТожикиÑтон"
+ },
+ "TK": {
+ "name": "Токелау"
+ },
+ "TO": {
+ "name": "Тонга"
+ },
+ "TT": {
+ "name": "Тринидад ва Тобаго"
+ },
+ "TA": {
+ "name": "ТриÑтан де Куна"
+ },
+ "TV": {
+ "name": "Тувалу"
+ },
+ "TN": {
+ "name": "ТуниÑ"
+ },
+ "TR": {
+ "name": "ТуркиÑ"
+ },
+ "TM": {
+ "name": "ТуркманиÑтон"
+ },
+ "TC": {
+ "name": "Ð¢ÑƒÑ€ÐºÑ Ð²Ð° ÐšÐ°Ð¹ÐºÐ¾Ñ Ð¾Ñ€Ð¾Ð»Ð»Ð°Ñ€Ð¸"
+ },
+ "UG": {
+ "name": "Уганда"
+ },
+ "UA": {
+ "name": "Украина"
+ },
+ "OM": {
+ "name": "Уммон"
+ },
+ "UY": {
+ "name": "Уругвай"
+ },
+ "WF": {
+ "name": "УÑÐ»Ð»Ð¸Ñ Ð²Ð° Футуна"
+ },
+ "UZ": {
+ "name": "ЎзбекиÑтон"
+ },
+ "PS": {
+ "name": "ФалаÑтин ҳудуди"
+ },
+ "FO": {
+ "name": "Фарер ороллари"
+ },
+ "FJ": {
+ "name": "Фижи ороллари"
+ },
+ "PH": {
+ "name": "Филиппин"
+ },
+ "FI": {
+ "name": "ФинлÑндиÑ"
+ },
+ "FK": {
+ "name": "Фолькленд ороллари"
+ },
+ "FR": {
+ "name": "ФранциÑ"
+ },
+ "TF": {
+ "name": "Ð¤Ñ€Ð°Ð½Ñ†Ð¸Ñ Ð¶Ð°Ð½ÑƒÐ±Ð¸Ð¹ худудлари"
+ },
+ "GF": {
+ "name": "Француз ГвианаÑи"
+ },
+ "PF": {
+ "name": "Француз ПолинезиÑÑи"
+ },
+ "CN": {
+ "name": "Хитой"
+ },
+ "HR": {
+ "name": "ХорватиÑ"
+ },
+ "IN": {
+ "name": "ҲиндиÑтон"
+ },
+ "TD": {
+ "name": "Чад"
+ },
+ "ME": {
+ "name": "ЧерногориÑ"
+ },
+ "CZ": {
+ "name": "Ð§ÐµÑ…Ð¸Ñ Ð ÐµÑпубликаÑи"
+ },
+ "CL": {
+ "name": "Чили"
+ },
+ "TL": {
+ "name": "Шарқий-Тимор"
+ },
+ "CH": {
+ "name": "ШвейцариÑ"
+ },
+ "SE": {
+ "name": "ШвециÑ"
+ },
+ "KP": {
+ "name": "Шимолий КореÑ"
+ },
+ "MP": {
+ "name": "Шимолий Марианна ороллари"
+ },
+ "LK": {
+ "name": "Шри-Ланка"
+ },
+ "EC": {
+ "name": "Эквадор"
+ },
+ "GQ": {
+ "name": "Экваториал ГвинеÑ"
+ },
+ "SV": {
+ "name": "Эль-Сальвадор"
+ },
+ "ER": {
+ "name": "ЭритреÑ"
+ },
+ "IR": {
+ "name": "Эрон"
+ },
+ "EE": {
+ "name": "ЭÑтониÑ"
+ },
+ "ET": {
+ "name": "ЭфиопиÑ"
+ },
+ "JM": {
+ "name": "Ямайка"
+ },
+ "YE": {
+ "name": "Яман"
+ },
+ "NZ": {
+ "name": "Янги ЗеландиÑ"
+ },
+ "NC": {
+ "name": "Янги КаледониÑ"
+ },
+ "JP": {
+ "name": "ЯпониÑ"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/country/uz.json b/library/intl/resources/country/uz.json
new file mode 100644
index 000000000..9d0ba0099
--- /dev/null
+++ b/library/intl/resources/country/uz.json
@@ -0,0 +1,761 @@
+{
+ "AF": {
+ "name": "Afgʻoniston"
+ },
+ "AX": {
+ "name": "Aland orollari"
+ },
+ "AL": {
+ "name": "Albaniya"
+ },
+ "AS": {
+ "name": "Amerika Samoasi"
+ },
+ "AD": {
+ "name": "Andorra"
+ },
+ "AI": {
+ "name": "Angila"
+ },
+ "AO": {
+ "name": "Angola"
+ },
+ "AQ": {
+ "name": "Antarktika"
+ },
+ "AG": {
+ "name": "Antigua va Barbados"
+ },
+ "VI": {
+ "name": "AQSH Virdjiniya orollari"
+ },
+ "UM": {
+ "name": "AQSH yondosh orollari"
+ },
+ "AR": {
+ "name": "Argentina"
+ },
+ "AM": {
+ "name": "Armaniston"
+ },
+ "AW": {
+ "name": "Aruba"
+ },
+ "BL": {
+ "name": "Avliyo Varfolomey"
+ },
+ "AU": {
+ "name": "Avstraliya"
+ },
+ "AT": {
+ "name": "Avstriya"
+ },
+ "BS": {
+ "name": "Bagama orollari"
+ },
+ "BH": {
+ "name": "Bahrayn"
+ },
+ "BD": {
+ "name": "Bangladesh"
+ },
+ "BB": {
+ "name": "Barbados"
+ },
+ "BE": {
+ "name": "Belgiya"
+ },
+ "BZ": {
+ "name": "Beliz"
+ },
+ "BY": {
+ "name": "Belorusiya"
+ },
+ "BJ": {
+ "name": "Benin"
+ },
+ "BM": {
+ "name": "Bermuda"
+ },
+ "AE": {
+ "name": "Birlashgan Arab Amirliklari"
+ },
+ "GB": {
+ "name": "Birlashgan Qirollik"
+ },
+ "BG": {
+ "name": "Bolgariya"
+ },
+ "BO": {
+ "name": "Boliviya"
+ },
+ "BA": {
+ "name": "Bosniya va Gertsegovina"
+ },
+ "BW": {
+ "name": "Botsvanna"
+ },
+ "BR": {
+ "name": "Braziliya"
+ },
+ "IO": {
+ "name": "Britaniya Hind okeani hududi"
+ },
+ "VG": {
+ "name": "Britaniya Virdjiniya orollari"
+ },
+ "BN": {
+ "name": "Bruney"
+ },
+ "BF": {
+ "name": "Burkina-Faso"
+ },
+ "BI": {
+ "name": "Burundi"
+ },
+ "BT": {
+ "name": "Butan"
+ },
+ "TD": {
+ "name": "Chad"
+ },
+ "ME": {
+ "name": "Chernogoriya"
+ },
+ "CZ": {
+ "name": "Chexiya Respublikasi"
+ },
+ "CL": {
+ "name": "Chili"
+ },
+ "DK": {
+ "name": "Daniya"
+ },
+ "DG": {
+ "name": "Diyego Garsiya"
+ },
+ "JE": {
+ "name": "Djersi"
+ },
+ "DJ": {
+ "name": "Djibuti"
+ },
+ "DM": {
+ "name": "Dominika"
+ },
+ "DO": {
+ "name": "Dominikan Respublikasi"
+ },
+ "ET": {
+ "name": "Efiopiya"
+ },
+ "EC": {
+ "name": "Ekvador"
+ },
+ "GQ": {
+ "name": "Ekvatorial Gvineya"
+ },
+ "ER": {
+ "name": "Eritreya"
+ },
+ "IR": {
+ "name": "Eron"
+ },
+ "EE": {
+ "name": "Estoniya"
+ },
+ "PS": {
+ "name": "Falastin hududi"
+ },
+ "FO": {
+ "name": "Farer orollari"
+ },
+ "FJ": {
+ "name": "Fiji orollari"
+ },
+ "PH": {
+ "name": "Filippin"
+ },
+ "FI": {
+ "name": "Finlyandiya"
+ },
+ "FK": {
+ "name": "Folklend orollari"
+ },
+ "FR": {
+ "name": "Fransiya"
+ },
+ "TF": {
+ "name": "Frantsiya janubiy xududlari"
+ },
+ "GF": {
+ "name": "Frantsuz Gvianasi"
+ },
+ "PF": {
+ "name": "Frantsuz Polineziyasi"
+ },
+ "GA": {
+ "name": "Gabon"
+ },
+ "HT": {
+ "name": "Gaiti"
+ },
+ "GM": {
+ "name": "Gambiya"
+ },
+ "GH": {
+ "name": "Gana"
+ },
+ "GY": {
+ "name": "Gayana"
+ },
+ "DE": {
+ "name": "Germaniya"
+ },
+ "GG": {
+ "name": "Gernsi"
+ },
+ "EH": {
+ "name": "Gʻarbiy Sahroi Kabir"
+ },
+ "GI": {
+ "name": "Gibraltar"
+ },
+ "HN": {
+ "name": "Gonduras"
+ },
+ "HK": {
+ "name": "Gonkong Xitoy MMH"
+ },
+ "GD": {
+ "name": "Grenada"
+ },
+ "GL": {
+ "name": "Grenlandiya"
+ },
+ "GR": {
+ "name": "Gretsiya"
+ },
+ "GE": {
+ "name": "Gruziya"
+ },
+ "GU": {
+ "name": "Guam"
+ },
+ "GP": {
+ "name": "Gvadelupe"
+ },
+ "GT": {
+ "name": "Gvatemala"
+ },
+ "GN": {
+ "name": "Gvineya"
+ },
+ "GW": {
+ "name": "Gvineya-Bisau"
+ },
+ "IN": {
+ "name": "Hindiston"
+ },
+ "ID": {
+ "name": "Indoneziya"
+ },
+ "JO": {
+ "name": "Iordaniya"
+ },
+ "IE": {
+ "name": "Irlandiya"
+ },
+ "IQ": {
+ "name": "Iroq"
+ },
+ "IS": {
+ "name": "Islandiya"
+ },
+ "ES": {
+ "name": "Ispaniya"
+ },
+ "IL": {
+ "name": "Isroil"
+ },
+ "IT": {
+ "name": "Italiya"
+ },
+ "ZA": {
+ "name": "Janubi-Afrika"
+ },
+ "GS": {
+ "name": "Janubiy Djordjiya va Janubiy Sendvich orollari"
+ },
+ "KR": {
+ "name": "Janubiy Koreya"
+ },
+ "SS": {
+ "name": "Janubiy Sudan"
+ },
+ "DZ": {
+ "name": "Jazoir"
+ },
+ "CV": {
+ "name": "Kabo-Verde"
+ },
+ "KH": {
+ "name": "Kambodja"
+ },
+ "CM": {
+ "name": "Kamerun"
+ },
+ "CA": {
+ "name": "Kanada"
+ },
+ "IC": {
+ "name": "Kanar orollari"
+ },
+ "BQ": {
+ "name": "Karib Niderlandiyasi"
+ },
+ "KY": {
+ "name": "Kayman orollari"
+ },
+ "KE": {
+ "name": "Keniya"
+ },
+ "CY": {
+ "name": "Kipr"
+ },
+ "KI": {
+ "name": "Kiribati"
+ },
+ "CC": {
+ "name": "Kokos (Kiling) orollari"
+ },
+ "CO": {
+ "name": "Kolumbiya"
+ },
+ "KM": {
+ "name": "Komor orollari"
+ },
+ "CG": {
+ "name": "Kongo Brazzavil"
+ },
+ "CD": {
+ "name": "Kongo-Kinshasa"
+ },
+ "XK": {
+ "name": "Kosovo"
+ },
+ "CR": {
+ "name": "Kosta-Rika"
+ },
+ "CI": {
+ "name": "Kot-d-Ivuar"
+ },
+ "CU": {
+ "name": "Kuba"
+ },
+ "CK": {
+ "name": "Kuk orollari"
+ },
+ "CW": {
+ "name": "Kurasao"
+ },
+ "LA": {
+ "name": "Laos"
+ },
+ "LV": {
+ "name": "Latviya"
+ },
+ "LS": {
+ "name": "Lesoto"
+ },
+ "LR": {
+ "name": "Liberiya"
+ },
+ "LT": {
+ "name": "Litva"
+ },
+ "LB": {
+ "name": "Livan"
+ },
+ "LY": {
+ "name": "Liviya"
+ },
+ "LI": {
+ "name": "Lixtenshteyn"
+ },
+ "LU": {
+ "name": "Lyuksemburg"
+ },
+ "MG": {
+ "name": "Madagaskar"
+ },
+ "MO": {
+ "name": "Makao Xitoy MMH"
+ },
+ "MK": {
+ "name": "Makedoniya"
+ },
+ "MW": {
+ "name": "Malavi"
+ },
+ "MY": {
+ "name": "Malayziya"
+ },
+ "MV": {
+ "name": "Maldiv orollari"
+ },
+ "ML": {
+ "name": "Mali"
+ },
+ "MT": {
+ "name": "Malta"
+ },
+ "CF": {
+ "name": "Markaziy Afrika Respublikasi"
+ },
+ "MA": {
+ "name": "Marokash"
+ },
+ "MH": {
+ "name": "Marshal orollari"
+ },
+ "MQ": {
+ "name": "Martinika"
+ },
+ "MU": {
+ "name": "Mavrikiy"
+ },
+ "MR": {
+ "name": "Mavritaniya"
+ },
+ "YT": {
+ "name": "Mayotta"
+ },
+ "MX": {
+ "name": "Meksika"
+ },
+ "IM": {
+ "name": "Men oroli"
+ },
+ "FM": {
+ "name": "Mikroneziya"
+ },
+ "EG": {
+ "name": "Misr"
+ },
+ "MN": {
+ "name": "Mo‘g‘uliston"
+ },
+ "MD": {
+ "name": "Moldova"
+ },
+ "MC": {
+ "name": "Monako"
+ },
+ "MS": {
+ "name": "Montserrat"
+ },
+ "MZ": {
+ "name": "Mozambik"
+ },
+ "SH": {
+ "name": "Muqaddas Yelena orollari"
+ },
+ "MM": {
+ "name": "Myanma (Birma)"
+ },
+ "NA": {
+ "name": "Namibiya"
+ },
+ "NR": {
+ "name": "Nauru"
+ },
+ "NP": {
+ "name": "Nepal"
+ },
+ "NL": {
+ "name": "Niderlandiya"
+ },
+ "NE": {
+ "name": "Niger"
+ },
+ "NG": {
+ "name": "Nigeriya"
+ },
+ "NI": {
+ "name": "Nikaragua"
+ },
+ "NU": {
+ "name": "Niuye"
+ },
+ "NF": {
+ "name": "Norfolk orollari"
+ },
+ "NO": {
+ "name": "Norvegiya"
+ },
+ "UZ": {
+ "name": "Oʻzbekiston"
+ },
+ "OM": {
+ "name": "Omon"
+ },
+ "AZ": {
+ "name": "Ozarbayjon"
+ },
+ "PW": {
+ "name": "Palau"
+ },
+ "PA": {
+ "name": "Panama"
+ },
+ "PG": {
+ "name": "Papua Yangi Gvineya"
+ },
+ "PY": {
+ "name": "Paragvay"
+ },
+ "PE": {
+ "name": "Peru"
+ },
+ "PN": {
+ "name": "Pitkarin orollari"
+ },
+ "PK": {
+ "name": "Pokiston"
+ },
+ "PL": {
+ "name": "Polsha"
+ },
+ "PT": {
+ "name": "Portugaliya"
+ },
+ "PR": {
+ "name": "Puerto-Riko"
+ },
+ "QA": {
+ "name": "Qatar"
+ },
+ "KG": {
+ "name": "Qirgʻiziston"
+ },
+ "US": {
+ "name": "Qoʻshma Shtatlar"
+ },
+ "KZ": {
+ "name": "Qozogʻiston"
+ },
+ "KW": {
+ "name": "Quveyt"
+ },
+ "RE": {
+ "name": "Reyunon"
+ },
+ "CX": {
+ "name": "Rojdestvo oroli"
+ },
+ "RU": {
+ "name": "Rossiya"
+ },
+ "RW": {
+ "name": "Ruanda"
+ },
+ "RO": {
+ "name": "Ruminiya"
+ },
+ "SV": {
+ "name": "Salvador"
+ },
+ "WS": {
+ "name": "Samoa"
+ },
+ "SM": {
+ "name": "San-Marino"
+ },
+ "ST": {
+ "name": "San-Tome va Prinsipi"
+ },
+ "SA": {
+ "name": "Saudiya Arabistoni"
+ },
+ "SJ": {
+ "name": "Savlbard va Jan Mayen"
+ },
+ "SN": {
+ "name": "Senegal"
+ },
+ "KN": {
+ "name": "Sent-Kits va Nevis"
+ },
+ "LC": {
+ "name": "Sent-Lyusiya"
+ },
+ "MF": {
+ "name": "Sent-Martin"
+ },
+ "PM": {
+ "name": "Sent-Pyer va Mikelon"
+ },
+ "VC": {
+ "name": "Sent-Vinsent va Grenadin"
+ },
+ "RS": {
+ "name": "Serbiya"
+ },
+ "SC": {
+ "name": "Seyshel orollari"
+ },
+ "EA": {
+ "name": "Seyta va Melilla"
+ },
+ "TL": {
+ "name": "Sharqiy-Timor"
+ },
+ "KP": {
+ "name": "Shimoliy Koreya"
+ },
+ "MP": {
+ "name": "Shimoliy Marianna orollari"
+ },
+ "LK": {
+ "name": "Shri-Lanka"
+ },
+ "SE": {
+ "name": "Shvetsiya"
+ },
+ "CH": {
+ "name": "Shveysariya"
+ },
+ "SG": {
+ "name": "Singapur"
+ },
+ "SX": {
+ "name": "Sint Martin"
+ },
+ "SK": {
+ "name": "Slovakiya"
+ },
+ "SI": {
+ "name": "Sloveniya"
+ },
+ "SB": {
+ "name": "Solomon orollari"
+ },
+ "SO": {
+ "name": "Somali"
+ },
+ "SD": {
+ "name": "Sudan"
+ },
+ "SR": {
+ "name": "Surinam"
+ },
+ "SY": {
+ "name": "Suriya"
+ },
+ "SZ": {
+ "name": "Svazilend"
+ },
+ "SL": {
+ "name": "Syerra-Leone"
+ },
+ "TZ": {
+ "name": "Tanzaniya"
+ },
+ "TH": {
+ "name": "Tayland"
+ },
+ "TW": {
+ "name": "Tayvan"
+ },
+ "TG": {
+ "name": "Togo"
+ },
+ "TJ": {
+ "name": "Tojikiston"
+ },
+ "TK": {
+ "name": "Tokelau"
+ },
+ "TO": {
+ "name": "Tonga"
+ },
+ "TT": {
+ "name": "Trinidad va Tobago"
+ },
+ "TA": {
+ "name": "Tristan de Kuna"
+ },
+ "TN": {
+ "name": "Tunis"
+ },
+ "TR": {
+ "name": "Turkiya"
+ },
+ "TM": {
+ "name": "Turkmaniston"
+ },
+ "TC": {
+ "name": "Turks va Kaykos orollari"
+ },
+ "TV": {
+ "name": "Tuvalu"
+ },
+ "WF": {
+ "name": "Uellis va Futuna"
+ },
+ "UG": {
+ "name": "Uganda"
+ },
+ "UA": {
+ "name": "Ukraina"
+ },
+ "UY": {
+ "name": "Urugvay"
+ },
+ "VU": {
+ "name": "Vanuatu"
+ },
+ "VA": {
+ "name": "Vatikan"
+ },
+ "VE": {
+ "name": "Venesuela"
+ },
+ "HU": {
+ "name": "Vengriya"
+ },
+ "AC": {
+ "name": "Vozneseniye oroli"
+ },
+ "VN": {
+ "name": "Vyetnam"
+ },
+ "CN": {
+ "name": "Xitoy"
+ },
+ "HR": {
+ "name": "Xorvatiya"
+ },
+ "YE": {
+ "name": "Yaman"
+ },
+ "JM": {
+ "name": "Yamayka"
+ },
+ "NC": {
+ "name": "Yangi Kaledoniya"
+ },
+ "NZ": {
+ "name": "Yangi Zelandiya"
+ },
+ "JP": {
+ "name": "Yaponiya"
+ },
+ "ZM": {
+ "name": "Zambiya"
+ },
+ "ZW": {
+ "name": "Zimbabve"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/country/vai-Latn.json b/library/intl/resources/country/vai-Latn.json
new file mode 100644
index 000000000..c03ea40b4
--- /dev/null
+++ b/library/intl/resources/country/vai-Latn.json
@@ -0,0 +1,761 @@
+{
+ "AL": {
+ "name": "Abhaniya"
+ },
+ "AF": {
+ "name": "Afigándesitaŋ"
+ },
+ "ZA": {
+ "name": "Afirika Kɔi Leŋŋɛ Lɔ"
+ },
+ "CF": {
+ "name": "Ãfíríka Lumaã TÉ› Boloe"
+ },
+ "DZ": {
+ "name": "Agiriya"
+ },
+ "IS": {
+ "name": "Ãisi Lumaã"
+ },
+ "AR": {
+ "name": "Ajɛŋtína"
+ },
+ "AX": {
+ "name": "Ã…land Islands"
+ },
+ "AM": {
+ "name": "Améniya"
+ },
+ "AQ": {
+ "name": "Antarctica"
+ },
+ "AD": {
+ "name": "Aŋdóra"
+ },
+ "AI": {
+ "name": "Aŋgíla"
+ },
+ "AO": {
+ "name": "Aŋgóla"
+ },
+ "AG": {
+ "name": "AÅ‹tígwa Æahabhuda"
+ },
+ "IE": {
+ "name": "Ãre Lumaã"
+ },
+ "AW": {
+ "name": "Arubha"
+ },
+ "AC": {
+ "name": "Ascension Island"
+ },
+ "CD": {
+ "name": "Avorekoo"
+ },
+ "AZ": {
+ "name": "Azabhaijaŋ"
+ },
+ "BS": {
+ "name": "Bahámasi"
+ },
+ "BB": {
+ "name": "Bhabhedo"
+ },
+ "BD": {
+ "name": "Bhangiladɛ̀shi"
+ },
+ "IL": {
+ "name": "Bhanísiláila"
+ },
+ "BH": {
+ "name": "Bharɛŋ"
+ },
+ "BZ": {
+ "name": "Bheliz"
+ },
+ "BE": {
+ "name": "Bhɛgiyɔŋ"
+ },
+ "BY": {
+ "name": "Bhɛlarusi"
+ },
+ "BM": {
+ "name": "Bhɛmuda"
+ },
+ "BJ": {
+ "name": "Bhɛni"
+ },
+ "BF": {
+ "name": "Bhokina Fáso"
+ },
+ "BO": {
+ "name": "Bholiviya"
+ },
+ "BW": {
+ "name": "Bhosuwana"
+ },
+ "BG": {
+ "name": "Bhɔgeriya"
+ },
+ "BA": {
+ "name": "Bhɔsiniya"
+ },
+ "BR": {
+ "name": "Bhurazeli"
+ },
+ "BI": {
+ "name": "Bhurundi"
+ },
+ "BN": {
+ "name": "Bhurunɛĩ"
+ },
+ "BT": {
+ "name": "Bhutaŋ"
+ },
+ "IC": {
+ "name": "Canary Islands"
+ },
+ "BQ": {
+ "name": "Caribbean Netherlands"
+ },
+ "EA": {
+ "name": "Ceuta & Melilla"
+ },
+ "TD": {
+ "name": "Chádi"
+ },
+ "CN": {
+ "name": "Cháína"
+ },
+ "CL": {
+ "name": "Chéli"
+ },
+ "CZ": {
+ "name": "Chɛki Boloe"
+ },
+ "CX": {
+ "name": "Christmas Island"
+ },
+ "CC": {
+ "name": "Cocos (Keeling) Islands"
+ },
+ "CW": {
+ "name": "Curaçao"
+ },
+ "DK": {
+ "name": "Danimaha"
+ },
+ "DG": {
+ "name": "Diego Garcia"
+ },
+ "DM": {
+ "name": "Domíiníka"
+ },
+ "DO": {
+ "name": "Domíiníka Æoloe"
+ },
+ "GQ": {
+ "name": "Dúúnyá Tɛ Giini"
+ },
+ "EC": {
+ "name": "ÆÌkúwédÉ”"
+ },
+ "SV": {
+ "name": "ÆlÉ› SávádÉ”"
+ },
+ "ER": {
+ "name": "Æritera"
+ },
+ "EE": {
+ "name": "Æsitóninya"
+ },
+ "FK": {
+ "name": "Fáháki Luma Tiŋŋɛ"
+ },
+ "FO": {
+ "name": "Faroe Islands"
+ },
+ "PH": {
+ "name": "Félepiŋ"
+ },
+ "FR": {
+ "name": "Fɛŋsi"
+ },
+ "GF": {
+ "name": "Fɛŋsi Giwana"
+ },
+ "PF": {
+ "name": "Fɛŋsi Polinísiya"
+ },
+ "FJ": {
+ "name": "Fíji"
+ },
+ "FI": {
+ "name": "Fiŋlɛŋ"
+ },
+ "TF": {
+ "name": "French Southern Territories"
+ },
+ "GA": {
+ "name": "Gabhɔŋ"
+ },
+ "GM": {
+ "name": "Gambiya"
+ },
+ "GH": {
+ "name": "Gana"
+ },
+ "SL": {
+ "name": "Gbeya BahawÉ”"
+ },
+ "GN": {
+ "name": "Gini"
+ },
+ "GW": {
+ "name": "Gini Bhisawo"
+ },
+ "GG": {
+ "name": "Guernsey"
+ },
+ "GD": {
+ "name": "Gurinéda"
+ },
+ "GP": {
+ "name": "Guwadelupe"
+ },
+ "GU": {
+ "name": "Guwami"
+ },
+ "GT": {
+ "name": "Guwatɛmala"
+ },
+ "GY": {
+ "name": "Guyana"
+ },
+ "HT": {
+ "name": "Háiti"
+ },
+ "GR": {
+ "name": "Hɛlɛŋ"
+ },
+ "HK": {
+ "name": "Hong Kong SAR China"
+ },
+ "HN": {
+ "name": "Hɔndura"
+ },
+ "HU": {
+ "name": "HÉ”Ìngare"
+ },
+ "IN": {
+ "name": "Ãndiya"
+ },
+ "ID": {
+ "name": "Ãndonisiya"
+ },
+ "IQ": {
+ "name": "Iraki"
+ },
+ "IR": {
+ "name": "Iraŋ"
+ },
+ "IM": {
+ "name": "Isle of Man"
+ },
+ "IT": {
+ "name": "Ãtali"
+ },
+ "ET": {
+ "name": "Ãtiyópiya"
+ },
+ "DE": {
+ "name": "Jamáĩ"
+ },
+ "JM": {
+ "name": "Jamaika"
+ },
+ "GL": {
+ "name": "Jamba Kuwa Lumaã"
+ },
+ "JP": {
+ "name": "Japaŋ"
+ },
+ "VG": {
+ "name": "Jengéesi Bhɛɛ Lɔ Musu Tiŋŋɛ"
+ },
+ "IO": {
+ "name": "Jengéesi Gbawoe Ãndiya KÉ”iyÉ› LÉ”"
+ },
+ "JE": {
+ "name": "Jersey"
+ },
+ "GI": {
+ "name": "Jibhurata"
+ },
+ "DJ": {
+ "name": "Jibhuti"
+ },
+ "JO": {
+ "name": "Jɔɔdaŋ"
+ },
+ "GE": {
+ "name": "Jɔɔjiya"
+ },
+ "NC": {
+ "name": "Kalidoninya Námaá"
+ },
+ "CM": {
+ "name": "Kameruŋ"
+ },
+ "CA": {
+ "name": "Kánáda"
+ },
+ "KH": {
+ "name": "Kaŋbhodiya"
+ },
+ "QA": {
+ "name": "Kataha"
+ },
+ "KZ": {
+ "name": "Kazasitaŋ"
+ },
+ "KY": {
+ "name": "Keemaŋ Tiŋŋɛ"
+ },
+ "KE": {
+ "name": "Kénya"
+ },
+ "CV": {
+ "name": "Kepi Vɛdi Tiŋŋɛ"
+ },
+ "KG": {
+ "name": "Kigisitaŋ"
+ },
+ "KI": {
+ "name": "Kiribhati"
+ },
+ "CU": {
+ "name": "Kiyubha"
+ },
+ "CI": {
+ "name": "Kódivówa"
+ },
+ "CK": {
+ "name": "Kóki Tiŋŋɛ"
+ },
+ "KM": {
+ "name": "Komorosi"
+ },
+ "CG": {
+ "name": "Kóngo"
+ },
+ "HR": {
+ "name": "Koresiya"
+ },
+ "KP": {
+ "name": "Koriya Kɔi Kaŋndɔ"
+ },
+ "KR": {
+ "name": "Koriya Kɔi Leŋŋɛ Lɔ"
+ },
+ "CR": {
+ "name": "Kósíta Ríko"
+ },
+ "XK": {
+ "name": "Kosovo"
+ },
+ "MP": {
+ "name": "Kɔi Kaŋndɔ Mariyana Tiŋŋɛ"
+ },
+ "CO": {
+ "name": "Kɔlɔmbiya"
+ },
+ "KW": {
+ "name": "Kuweti"
+ },
+ "SA": {
+ "name": "Lahabu"
+ },
+ "LR": {
+ "name": "Laibhiya"
+ },
+ "LV": {
+ "name": "Lativiya"
+ },
+ "LA": {
+ "name": "Lawosi"
+ },
+ "LB": {
+ "name": "LebhanÉ”"
+ },
+ "LY": {
+ "name": "Lebhiya"
+ },
+ "LI": {
+ "name": "Liechtenstein"
+ },
+ "LS": {
+ "name": "Lisóto"
+ },
+ "LT": {
+ "name": "Lituweninya"
+ },
+ "LU": {
+ "name": "LusimbÉ”"
+ },
+ "MO": {
+ "name": "Macau SAR China"
+ },
+ "MG": {
+ "name": "Madagasita"
+ },
+ "MW": {
+ "name": "Malawi"
+ },
+ "MY": {
+ "name": "Malesiya"
+ },
+ "ML": {
+ "name": "Mali"
+ },
+ "MV": {
+ "name": "Malidavi"
+ },
+ "MT": {
+ "name": "Malita"
+ },
+ "MK": {
+ "name": "Masedoninya"
+ },
+ "MH": {
+ "name": "Masha Tiŋŋɛ"
+ },
+ "MQ": {
+ "name": "Matiniki"
+ },
+ "YT": {
+ "name": "Mavote"
+ },
+ "MX": {
+ "name": "Mɛsíko"
+ },
+ "FM": {
+ "name": "Mikonisiya"
+ },
+ "EG": {
+ "name": "Míséla"
+ },
+ "MM": {
+ "name": "Miyamaha"
+ },
+ "ME": {
+ "name": "Montenegro"
+ },
+ "MZ": {
+ "name": "Mozambiki"
+ },
+ "MD": {
+ "name": "Mɔlidova"
+ },
+ "MC": {
+ "name": "Mɔnako"
+ },
+ "MN": {
+ "name": "Mɔngoliya"
+ },
+ "MU": {
+ "name": "Mɔreshɔ"
+ },
+ "MR": {
+ "name": "Mɔretaninya"
+ },
+ "MA": {
+ "name": "Mɔroko"
+ },
+ "MS": {
+ "name": "Mɔserati"
+ },
+ "NE": {
+ "name": "Naĩja"
+ },
+ "NG": {
+ "name": "Naĩjiriya"
+ },
+ "NA": {
+ "name": "Namibiya"
+ },
+ "NP": {
+ "name": "Nepa"
+ },
+ "NL": {
+ "name": "Nidɔlɛŋ"
+ },
+ "NI": {
+ "name": "Nikaraguwa"
+ },
+ "NU": {
+ "name": "Niwe"
+ },
+ "NR": {
+ "name": "Noru"
+ },
+ "NF": {
+ "name": "Nɔfɔ Tiŋŋɛ"
+ },
+ "NO": {
+ "name": "Nɔɔwe"
+ },
+ "OM": {
+ "name": "Omaŋ"
+ },
+ "AT": {
+ "name": "ƆÌsituwa"
+ },
+ "AU": {
+ "name": "Ɔsituwéeliya"
+ },
+ "PK": {
+ "name": "Pakisitaŋ"
+ },
+ "PS": {
+ "name": "Palesitininya Tele Jii Kɔiyɛ lá hĩ Gaza"
+ },
+ "PW": {
+ "name": "Palo"
+ },
+ "PA": {
+ "name": "Panama"
+ },
+ "ES": {
+ "name": "Panyɛĩ"
+ },
+ "PG": {
+ "name": "Papuwa Gini Námaá"
+ },
+ "PY": {
+ "name": "Paragɔe"
+ },
+ "PE": {
+ "name": "Pɛru"
+ },
+ "PN": {
+ "name": "Pitikɛŋ"
+ },
+ "PR": {
+ "name": "Piyuto Riko"
+ },
+ "PL": {
+ "name": "Pólɛŋ"
+ },
+ "US": {
+ "name": "Poo"
+ },
+ "VI": {
+ "name": "Poo Bhɛɛ lɔ Musu Tiŋŋɛ"
+ },
+ "AS": {
+ "name": "Poo Sambowa"
+ },
+ "PT": {
+ "name": "Potokíi"
+ },
+ "RW": {
+ "name": "Rawunda"
+ },
+ "RE": {
+ "name": "Renyɔɔ̃"
+ },
+ "RO": {
+ "name": "Romininya"
+ },
+ "RU": {
+ "name": "Rɔshiya"
+ },
+ "CY": {
+ "name": "Saɛpurɔ"
+ },
+ "WS": {
+ "name": "Samowa"
+ },
+ "SM": {
+ "name": "Saŋ Marindo"
+ },
+ "ST": {
+ "name": "Sawo Tombe É“É› a Gbawoe"
+ },
+ "RS": {
+ "name": "Serbia"
+ },
+ "SC": {
+ "name": "Seshɛɛ"
+ },
+ "SG": {
+ "name": "Síingapoo"
+ },
+ "SN": {
+ "name": "Sinigaha"
+ },
+ "SX": {
+ "name": "Sint Maarten"
+ },
+ "SH": {
+ "name": "Siŋ Hɛlina"
+ },
+ "KN": {
+ "name": "SiÅ‹ Kisi É“É›Ì Nevisi"
+ },
+ "LC": {
+ "name": "Siŋ Lusiya"
+ },
+ "PM": {
+ "name": "SiÅ‹ PiiyÉ› É“É›Ì Mikelɔŋ"
+ },
+ "VC": {
+ "name": "Siŋ Viŋsi"
+ },
+ "SY": {
+ "name": "Síyaŋ"
+ },
+ "SO": {
+ "name": "Somaliya"
+ },
+ "GS": {
+ "name": "South Georgia & South Sandwich Islands"
+ },
+ "SS": {
+ "name": "South Sudan"
+ },
+ "BL": {
+ "name": "St. Barthélemy"
+ },
+ "MF": {
+ "name": "St. Martin"
+ },
+ "SD": {
+ "name": "Sudɛŋ"
+ },
+ "SB": {
+ "name": "Sulaimaãna Tiŋŋɛ"
+ },
+ "SK": {
+ "name": "Sulovakiya"
+ },
+ "SI": {
+ "name": "Suloveninya"
+ },
+ "LK": {
+ "name": "Suri Laŋka"
+ },
+ "SR": {
+ "name": "Surinambe"
+ },
+ "SZ": {
+ "name": "Suwazi Lumaã"
+ },
+ "CH": {
+ "name": "Suweza Lumaã"
+ },
+ "SE": {
+ "name": "Suwidɛŋ"
+ },
+ "SJ": {
+ "name": "Svalbard & Jan Mayen"
+ },
+ "TH": {
+ "name": "Tai Lumaã"
+ },
+ "TW": {
+ "name": "Taiwaŋ"
+ },
+ "TJ": {
+ "name": "Tajikisitaŋ"
+ },
+ "TZ": {
+ "name": "Taŋzaninya"
+ },
+ "TL": {
+ "name": "Tele ÆÉ”Ì Timɔɔ̃"
+ },
+ "TG": {
+ "name": "Togo"
+ },
+ "TK": {
+ "name": "Tokelo"
+ },
+ "TO": {
+ "name": "Tɔnga"
+ },
+ "TR": {
+ "name": "TÉ”ÌÉ”Ìki"
+ },
+ "TA": {
+ "name": "Tristan da Cunha"
+ },
+ "TM": {
+ "name": "Tukimɛnisitaŋ"
+ },
+ "TC": {
+ "name": "Tukisi ɓɛ̀ Kaikóosi Tiŋŋɛ"
+ },
+ "TN": {
+ "name": "Tunisiya"
+ },
+ "TT": {
+ "name": "Turindeda É“É›Ì Tobhego"
+ },
+ "TV": {
+ "name": "Tuválu"
+ },
+ "UM": {
+ "name": "U.S. Outlying Islands"
+ },
+ "VU": {
+ "name": "Vanuwátu"
+ },
+ "VA": {
+ "name": "VatikaÅ‹ Æoloe"
+ },
+ "VE": {
+ "name": "Vɛnɛzuwela"
+ },
+ "VN": {
+ "name": "Viyanami"
+ },
+ "WF": {
+ "name": "Walísi"
+ },
+ "EH": {
+ "name": "Western Sahara"
+ },
+ "YE": {
+ "name": "Yemɛni"
+ },
+ "UZ": {
+ "name": "Yubhɛkisitaŋ"
+ },
+ "UG": {
+ "name": "Yuganda"
+ },
+ "UA": {
+ "name": "Yukuréŋ"
+ },
+ "AE": {
+ "name": "YunaitÉ› Arabhi Æmire"
+ },
+ "GB": {
+ "name": "Yunaitɛ Kíŋdɔŋ"
+ },
+ "UY": {
+ "name": "Yuwegɔwe"
+ },
+ "ZM": {
+ "name": "Zambiya"
+ },
+ "NZ": {
+ "name": "Zilɛŋ Námaá"
+ },
+ "ZW": {
+ "name": "Zimbabhuwe"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/country/vai.json b/library/intl/resources/country/vai.json
new file mode 100644
index 000000000..108a35283
--- /dev/null
+++ b/library/intl/resources/country/vai.json
@@ -0,0 +1,761 @@
+{
+ "AX": {
+ "name": "Ã…land Islands"
+ },
+ "AQ": {
+ "name": "Antarctica"
+ },
+ "AC": {
+ "name": "Ascension Island"
+ },
+ "IC": {
+ "name": "Canary Islands"
+ },
+ "BQ": {
+ "name": "Caribbean Netherlands"
+ },
+ "EA": {
+ "name": "Ceuta & Melilla"
+ },
+ "CX": {
+ "name": "Christmas Island"
+ },
+ "CC": {
+ "name": "Cocos (Keeling) Islands"
+ },
+ "CW": {
+ "name": "Curaçao"
+ },
+ "DG": {
+ "name": "Diego Garcia"
+ },
+ "FO": {
+ "name": "Faroe Islands"
+ },
+ "TF": {
+ "name": "French Southern Territories"
+ },
+ "GG": {
+ "name": "Guernsey"
+ },
+ "HK": {
+ "name": "Hong Kong SAR China"
+ },
+ "IM": {
+ "name": "Isle of Man"
+ },
+ "JE": {
+ "name": "Jersey"
+ },
+ "XK": {
+ "name": "Kosovo"
+ },
+ "MO": {
+ "name": "Macau SAR China"
+ },
+ "ME": {
+ "name": "Montenegro"
+ },
+ "RS": {
+ "name": "Serbia"
+ },
+ "SX": {
+ "name": "Sint Maarten"
+ },
+ "GS": {
+ "name": "South Georgia & South Sandwich Islands"
+ },
+ "SS": {
+ "name": "South Sudan"
+ },
+ "BL": {
+ "name": "St. Barthélemy"
+ },
+ "MF": {
+ "name": "St. Martin"
+ },
+ "SJ": {
+ "name": "Svalbard & Jan Mayen"
+ },
+ "TA": {
+ "name": "Tristan da Cunha"
+ },
+ "UM": {
+ "name": "U.S. Outlying Islands"
+ },
+ "VA": {
+ "name": "Vatican City"
+ },
+ "EH": {
+ "name": "Western Sahara"
+ },
+ "ER": {
+ "name": "ꔀꔸꔳꕟ"
+ },
+ "BZ": {
+ "name": "ꔆꔷꔘ"
+ },
+ "SL": {
+ "name": "ꔋꕩ ꕒꕌꖺ ꕸꖃꔀ"
+ },
+ "TL": {
+ "name": "ꔎꔒ ꗃ ꔳꗞꖻ"
+ },
+ "LY": {
+ "name": "ꔒꔫꕩ"
+ },
+ "LB": {
+ "name": "ꔒꕑꗟꘋ"
+ },
+ "RE": {
+ "name": "ꔓꗠꖻ"
+ },
+ "SC": {
+ "name": "ꔖꗼꔷ"
+ },
+ "CL": {
+ "name": "ꔚꔷ"
+ },
+ "IO": {
+ "name": "ꔛꔟꔻ ꔤꔺꕩ ꗛꔤꘂ ꕗꕴꔀ ꕮ"
+ },
+ "VG": {
+ "name": "ꔛꔟꔻ ê—©ê—¡ ê— ê–·ê–¬ ꔳꘋꗣ"
+ },
+ "JP": {
+ "name": "ꔛꗨꗢ"
+ },
+ "YE": {
+ "name": "ê”ꘈꘋ"
+ },
+ "KY": {
+ "name": "ꔞꔀꕮꘋ ꔳꘋꗣ"
+ },
+ "CV": {
+ "name": "ꔞꔪ ꗲꔵ ꔳꘋꗣ"
+ },
+ "KE": {
+ "name": "ꔞꕰ"
+ },
+ "ET": {
+ "name": "ꔤꔳꖎꔪꕩ"
+ },
+ "IN": {
+ "name": "ꔤꔺꕩ"
+ },
+ "IT": {
+ "name": "ꔤꕚꔷ"
+ },
+ "IQ": {
+ "name": "ꔤꕟꕃ"
+ },
+ "IR": {
+ "name": "ꔤꕟꘋ"
+ },
+ "ID": {
+ "name": "ꔤꖆꕇꔻꕩ"
+ },
+ "PN": {
+ "name": "ꔪꔳꕪꕆ"
+ },
+ "PR": {
+ "name": "ꔪꖳꕿ ꔸê–"
+ },
+ "PH": {
+ "name": "ꔱꔒꔪꘋ"
+ },
+ "FJ": {
+ "name": "ꔱꔤꕀ"
+ },
+ "FI": {
+ "name": "ꔱꘋ ꖨꕮꕊ"
+ },
+ "LS": {
+ "name": "ꔷꖇꕿ"
+ },
+ "LT": {
+ "name": "ꔷꖤꔃꕇꕰ"
+ },
+ "LI": {
+ "name": "ꔷꗿꘋꔻꗳꘋ"
+ },
+ "SN": {
+ "name": "ꔻꕇꕭꕌ"
+ },
+ "SY": {
+ "name": "ꔻꕩꘋ"
+ },
+ "SG": {
+ "name": "ꔻꕬꕶꕱ"
+ },
+ "SI": {
+ "name": "ꔻꖃê”ꕇꕰ"
+ },
+ "SK": {
+ "name": "ꔻꖃꕙꕃꕩ"
+ },
+ "PM": {
+ "name": "ꔻꘋ ꔪꘂ ê—ª ꕆꔞê—ꘋ"
+ },
+ "VC": {
+ "name": "ꔻꘋ ꔲꘋꔻꘋ ꗪ ꖶꔓꕯꔵꘋ ꖸ"
+ },
+ "KN": {
+ "name": "ꔻꘋ ꕃꔳꔻ ꗪ ꔕꔲꔻ"
+ },
+ "LC": {
+ "name": "ꔻꘋ ꖨꔻꕩ"
+ },
+ "SH": {
+ "name": "ꔻꘋ ꗥꔷꕯ"
+ },
+ "NZ": {
+ "name": "ꔽꔤ ꖨꕮ ꕯꕮꕊ"
+ },
+ "ZW": {
+ "name": "ꔽꕓꖜꔃ"
+ },
+ "DJ": {
+ "name": "ꕀꖜꔳ"
+ },
+ "GI": {
+ "name": "ꕀꖜꕟꕚ"
+ },
+ "KI": {
+ "name": "ꕃꔸꕑꔳ"
+ },
+ "KG": {
+ "name": "ꕃꕅꔻꕚꘋ"
+ },
+ "CU": {
+ "name": "ꕃꖳꕑ"
+ },
+ "GN": {
+ "name": "ꕅꔤꕇ"
+ },
+ "GW": {
+ "name": "ꕅꔤꕇ ꔫꕢꕴ"
+ },
+ "EG": {
+ "name": "ꕆꔖꕞ"
+ },
+ "MM": {
+ "name": "ꕆꕩꘋꕮ"
+ },
+ "FM": {
+ "name": "ꕆê–ꕇꔻꕩ"
+ },
+ "NP": {
+ "name": "ꕇê•ê”·"
+ },
+ "NI": {
+ "name": "ꕇꕪꕟꖶꕎ"
+ },
+ "IE": {
+ "name": "ꕉꔓ ꖨꕮꕊ"
+ },
+ "IS": {
+ "name": "ꕉꔤꔻ ꖨꕮꕊ"
+ },
+ "ZA": {
+ "name": "ꕉꔱꔸꕪ ꗛꔤ ꔒꘋꗣ ê— ê•¸ê–ƒê”€"
+ },
+ "CF": {
+ "name": "ꕉꔱꔸꕪ ꗳ ꗳ ꕸꖃꔀ"
+ },
+ "AF": {
+ "name": "ꕉꔱꕭꔕꔻꕚꘋ"
+ },
+ "DZ": {
+ "name": "ꕉꔷꔠꔸꕩ"
+ },
+ "AL": {
+ "name": "ꕉꔷꕑꕇꕩ"
+ },
+ "AI": {
+ "name": "ꕉꕄꕞ"
+ },
+ "AM": {
+ "name": "ꕉꕆꕯ"
+ },
+ "AZ": {
+ "name": "ꕉꕤꕑꔤꕧꘋ"
+ },
+ "AD": {
+ "name": "ꕉꖆꕟ"
+ },
+ "AO": {
+ "name": "ꕉê–ê•ž"
+ },
+ "AW": {
+ "name": "ꕉꖩꕑ"
+ },
+ "AR": {
+ "name": "ꕉꘀꘋꔳꕯ"
+ },
+ "AG": {
+ "name": "ꕉꘋꔳꖶꕎ ꗪ ꕑꖜꕜ"
+ },
+ "HT": {
+ "name": "ꕌꔤꔳ"
+ },
+ "WF": {
+ "name": "ꕎꔷꔻ ꗪ ꖢꖤꕯ"
+ },
+ "PS": {
+ "name": "ê•ê”’ꔻꔳꕯ ꔎꔒ ꕀꔤ ꗛꔤ ê•ž ê—± ê—ª ꕭꕌꕤ"
+ },
+ "PK": {
+ "name": "ê•ê•ƒê”»ê•šê˜‹"
+ },
+ "PY": {
+ "name": "ê•ê•Ÿê—ꔀ"
+ },
+ "PA": {
+ "name": "ê•ê•¯ê•®"
+ },
+ "PW": {
+ "name": "ê•ê–ƒ"
+ },
+ "PG": {
+ "name": "ê•ê–›ê•Ž ꕅꔤꕇ ꕯꕮꕊ"
+ },
+ "ES": {
+ "name": "ê•ê˜Šê”§"
+ },
+ "BB": {
+ "name": "ꕑꔆê–ê”»"
+ },
+ "BD": {
+ "name": "ꕑꕅꕞꗵꔼ"
+ },
+ "IL": {
+ "name": "ꕑꕇꔻꕞꔤꕞ"
+ },
+ "BS": {
+ "name": "ꕑꕌꕮꔻ"
+ },
+ "BH": {
+ "name": "ꕑꗸꘋ"
+ },
+ "FK": {
+ "name": "ꕘꔷꕃ ꖨꕮ ꔳꘋꗣ"
+ },
+ "VE": {
+ "name": "ꕙꔳꕪꘋ ꕸꖃꔀ"
+ },
+ "VU": {
+ "name": "ꕙꖸꕎꖤ"
+ },
+ "TH": {
+ "name": "ꕚꔤ ꖨꕮꕊ"
+ },
+ "TW": {
+ "name": "ꕚꔤꕎꘋ"
+ },
+ "TJ": {
+ "name": "ꕚꕀꕃꔻꕚꘋ"
+ },
+ "TV": {
+ "name": "ꕚꖣꖨ"
+ },
+ "TZ": {
+ "name": "ꕚꘋꕤꕇꕰ"
+ },
+ "DK": {
+ "name": "ꕜꕇꕮꕃ"
+ },
+ "LR": {
+ "name": "ꕞꔤꔫꕩ"
+ },
+ "LV": {
+ "name": "ꕞꔳꔲꕩ"
+ },
+ "SA": {
+ "name": "ê•žê•Œê– ê•¸ê–ƒê”€"
+ },
+ "LA": {
+ "name": "ê•žê•´ê”»"
+ },
+ "RW": {
+ "name": "ꕟꖙꕡ"
+ },
+ "ST": {
+ "name": "ꕢꕴ ꕿꔈ ꗪ ꕉ ꕮꔧ ꕗꕴꔀ"
+ },
+ "WS": {
+ "name": "ꕢꕹꖙꕉ"
+ },
+ "CY": {
+ "name": "ꕢꗡꖛê—ê”»"
+ },
+ "ZM": {
+ "name": "ꕤꔭꕩ"
+ },
+ "CN": {
+ "name": "ꕦꔤꕯ"
+ },
+ "TD": {
+ "name": "ꕦꔵ"
+ },
+ "GL": {
+ "name": "ꕧꕓ ꖴꕎ ꖨꕮꕊ"
+ },
+ "DE": {
+ "name": "ꕧꕮꔧ"
+ },
+ "JM": {
+ "name": "ꕧꕮꔧꕪ"
+ },
+ "CM": {
+ "name": "ꕪꔈꖩꘋ"
+ },
+ "NC": {
+ "name": "ꕪꔷê–ꕇꕰ ꕯꕮꕊ"
+ },
+ "QA": {
+ "name": "ꕪꕚꕌ"
+ },
+ "KZ": {
+ "name": "ꕪꕤꔻꕚꘋ"
+ },
+ "CA": {
+ "name": "ꕪꕯꕜ"
+ },
+ "KH": {
+ "name": "ꕪꕹꔵꕩ"
+ },
+ "GM": {
+ "name": "ê•­ê”­ê•©"
+ },
+ "GH": {
+ "name": "ꕭꕌꕯ"
+ },
+ "GA": {
+ "name": "ꕭꕷꘋ"
+ },
+ "MY": {
+ "name": "ꕮꔒꔻꕩ"
+ },
+ "MK": {
+ "name": "ꕮꔖê–ꕇꕰ"
+ },
+ "MQ": {
+ "name": "ꕮꔳꕇꕃ"
+ },
+ "ML": {
+ "name": "ꕮꔷ"
+ },
+ "MV": {
+ "name": "ꕮꔷꕜê”"
+ },
+ "SM": {
+ "name": "ꕮꔸꖆ ꕢꘋ"
+ },
+ "MT": {
+ "name": "ꕮꕊꕚ"
+ },
+ "MH": {
+ "name": "ꕮꕊꕣ ꔳꘋꗣ"
+ },
+ "MG": {
+ "name": "ꕮꕜꕭꔻꕪ"
+ },
+ "MW": {
+ "name": "ꕮꕞꕌꔨ"
+ },
+ "YT": {
+ "name": "ꕮꗚꔎ"
+ },
+ "NG": {
+ "name": "ꕯꔤꕀꔸꕩ"
+ },
+ "NE": {
+ "name": "ꕯꔤꕧ"
+ },
+ "NA": {
+ "name": "ꕯꕆꔫꕩ"
+ },
+ "OM": {
+ "name": "ꕱꕮꘋ"
+ },
+ "US": {
+ "name": "ꕶꕱ"
+ },
+ "AS": {
+ "name": "ꕶꕱ ꕢꕹꕎ"
+ },
+ "VI": {
+ "name": "ꕶꕱ ê—©ê—¡ ê— ê–·ê–¬ ꔳꘋꗣ"
+ },
+ "PT": {
+ "name": "ꕶꕿꕃꔤ ꕸꖃꔀ"
+ },
+ "PL": {
+ "name": "ꕶꗷꘋ"
+ },
+ "BO": {
+ "name": "ꕷꔷꔲꕩ"
+ },
+ "BA": {
+ "name": "ꕷꔻꕇꕰ ꗪ ꗥꕤꖑꔲꕯ"
+ },
+ "BF": {
+ "name": "ꕷꕃꕯ ꕘꖇ"
+ },
+ "BW": {
+ "name": "ꕷꖬꕎꕯ"
+ },
+ "MZ": {
+ "name": "ꕹꕤꔭꕃ"
+ },
+ "TK": {
+ "name": "ꕿꔞꖃ"
+ },
+ "TG": {
+ "name": "ê•¿ê–‘"
+ },
+ "DM": {
+ "name": "ê–ꕆꕇꕪ"
+ },
+ "DO": {
+ "name": "ê–ꕆꕇꕪꘋ ꕸꕱꔀ"
+ },
+ "RO": {
+ "name": "ꖄꕆꕇꕰ"
+ },
+ "NR": {
+ "name": "ꖆꖩ"
+ },
+ "SO": {
+ "name": "ꖇꕮꔷꕩ"
+ },
+ "HR": {
+ "name": "ê–ꔓꔻꕩ"
+ },
+ "CI": {
+ "name": "ê–ꔳ ꕾꕎ"
+ },
+ "KR": {
+ "name": "ê–ꔸꕩ ꗛꔤ ꔒꘋꗣ ê—"
+ },
+ "KP": {
+ "name": "ê–ꔸꕩ ꗛꔤ ꕪꘋꗒ"
+ },
+ "CR": {
+ "name": "ê–ꔻꕚ ꔸꕪ"
+ },
+ "CK": {
+ "name": "ê–ꕃ ꔳꘋꗣ"
+ },
+ "KM": {
+ "name": "ê–ꕹꖄꔻ"
+ },
+ "CG": {
+ "name": "ê–ê–"
+ },
+ "CD": {
+ "name": "ê–ê– ê—µê—žê–´ê•Ÿê”Ž ꕸꖃꔀ"
+ },
+ "MD": {
+ "name": "ê–’ê”·ê–ê•™"
+ },
+ "GB": {
+ "name": "ꖕꕯꔤꗳ"
+ },
+ "BT": {
+ "name": "ꖜꕚꘋ"
+ },
+ "BR": {
+ "name": "ꖜꕟꔘꔀ"
+ },
+ "BI": {
+ "name": "ꖜꖩꔺ"
+ },
+ "BN": {
+ "name": "ꖜꖩꘉꔧ"
+ },
+ "FR": {
+ "name": "ꖢꕟꘋꔻ"
+ },
+ "TT": {
+ "name": "ꖤꔸꔕꕜ ꗪ ꕿꔆꖑ"
+ },
+ "TN": {
+ "name": "ꖤꕇꔻꕩ"
+ },
+ "GQ": {
+ "name": "ꖦꕰꕊ ꗳ ꕅꔤꕇ"
+ },
+ "CH": {
+ "name": "ꖬꔃꕤ ꖨꕮꕊ"
+ },
+ "SE": {
+ "name": "ꖬꔨꗵꘋ"
+ },
+ "LK": {
+ "name": "ꖬꔸ ꕞꘋꕪ"
+ },
+ "SR": {
+ "name": "ꖬꔸꕯꔈ"
+ },
+ "SZ": {
+ "name": "ꖬꕎꔽ ꖨꕮꕊ"
+ },
+ "SB": {
+ "name": "ꖬꕞꔤꕮꕊꕯ ꔳꘋꗣ"
+ },
+ "SD": {
+ "name": "ꖬꗵꘋ"
+ },
+ "UY": {
+ "name": "ꖳꔓê—ꔀ"
+ },
+ "UG": {
+ "name": "ꖳꕭꕡ"
+ },
+ "AE": {
+ "name": "ꖳꕯꔤꗳ ꕉꕟꔬ ꗡꕆꔓꔻ"
+ },
+ "UA": {
+ "name": "ꖳꖴꔓꘋ"
+ },
+ "UZ": {
+ "name": "ꖳꗩꕃꔻꕚꘋ"
+ },
+ "KW": {
+ "name": "ꖴꔃꔳ"
+ },
+ "GT": {
+ "name": "ꖶꕎꔎꕮꕞ"
+ },
+ "GP": {
+ "name": "ꖶꕎê”ꖨꔅ"
+ },
+ "GU": {
+ "name": "ꖶꕎꕆ"
+ },
+ "GD": {
+ "name": "ꖶꕟꕯꕜ"
+ },
+ "GY": {
+ "name": "ꖶꕩꕯ"
+ },
+ "NU": {
+ "name": "ꖸꔃꔤ"
+ },
+ "AT": {
+ "name": "ꖺꔻꖤꕎ"
+ },
+ "AU": {
+ "name": "ꖺꖬꖤꔃꔷꕩ"
+ },
+ "HN": {
+ "name": "ꖽꖫꕟ"
+ },
+ "HU": {
+ "name": "ꖽꘋꕭꔓ"
+ },
+ "BG": {
+ "name": "ꗂꔠꔸꕩ"
+ },
+ "TO": {
+ "name": "ꗋꕬ"
+ },
+ "TR": {
+ "name": "ꗋꖺꕃ"
+ },
+ "TC": {
+ "name": "ꗋꖺꕃꔻ ê—ª ꕪꔤê–ê”» ꔳꘋꗣ"
+ },
+ "TM": {
+ "name": "ꗋꖺꕃꕮꕇꔻꕚꘋ"
+ },
+ "LU": {
+ "name": "ê—ꔻꘋꗂꖺ"
+ },
+ "RU": {
+ "name": "ê—ꖺꔻꕩ"
+ },
+ "GE": {
+ "name": "ꗘꖺꕀꕩ"
+ },
+ "JO": {
+ "name": "ꗘꖺꗵꘋ"
+ },
+ "MP": {
+ "name": "ꗛꔤ ꕪꘋꗒ ꕮꔸꕩꕯ ꔳꘋꗣ"
+ },
+ "CO": {
+ "name": "ê—›ê—ê”­ê•©"
+ },
+ "MR": {
+ "name": "ꗞꔓꔎꕇꕰ"
+ },
+ "MU": {
+ "name": "ꗞꔓꗔ"
+ },
+ "MA": {
+ "name": "ê—žê•Ÿê–"
+ },
+ "MC": {
+ "name": "ꗞꕯê–"
+ },
+ "MN": {
+ "name": "ê—žê–ê”·ê•©"
+ },
+ "MS": {
+ "name": "ꗞꘋꔖꕟꔳ"
+ },
+ "NO": {
+ "name": "ꗟꖺꔃ"
+ },
+ "NF": {
+ "name": "ꗟꖺꗉ ꔳꘋꗣ"
+ },
+ "EE": {
+ "name": "ꗡꔻꕿꕇꕰ"
+ },
+ "EC": {
+ "name": "ꗡꖴꔃê—"
+ },
+ "SV": {
+ "name": "ê—¡ê—· ê•¢ê”ê—ê–º"
+ },
+ "GR": {
+ "name": "ꗥꗷꘋ"
+ },
+ "PE": {
+ "name": "ꗨꗡꖩ"
+ },
+ "BE": {
+ "name": "ꗩꕀꗚꘋ"
+ },
+ "BJ": {
+ "name": "ꗩꕇꘋ"
+ },
+ "BY": {
+ "name": "ê—©ê•žê–©ê”»"
+ },
+ "BM": {
+ "name": "ꗩꖷꕜ"
+ },
+ "PF": {
+ "name": "ꗱꘋꔻ ꕶꔷꕇꔻꕩ"
+ },
+ "GF": {
+ "name": "ꗱꘋꔻ ꖶꕎꕯ"
+ },
+ "VN": {
+ "name": "ꗲꕇꖮꔃꕞ"
+ },
+ "CZ": {
+ "name": "ꗿꕃ ꕸꖃꔀ"
+ },
+ "MX": {
+ "name": "ꘈꔻê–"
+ },
+ "NL": {
+ "name": "ꘉꕜ ꖨꕮꕊ"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/country/vi.json b/library/intl/resources/country/vi.json
new file mode 100644
index 000000000..985ab0e48
--- /dev/null
+++ b/library/intl/resources/country/vi.json
@@ -0,0 +1,761 @@
+{
+ "SA": {
+ "name": "Ả Rập Xê-út"
+ },
+ "AF": {
+ "name": "Afghanistan"
+ },
+ "EG": {
+ "name": "Ai Cập"
+ },
+ "IE": {
+ "name": "Ai-len"
+ },
+ "AL": {
+ "name": "Albani"
+ },
+ "DZ": {
+ "name": "Algeria"
+ },
+ "AD": {
+ "name": "Andorra"
+ },
+ "AO": {
+ "name": "Angola"
+ },
+ "AI": {
+ "name": "Anguilla"
+ },
+ "AG": {
+ "name": "Antigua và Barbuda"
+ },
+ "AT": {
+ "name": "Ão"
+ },
+ "AR": {
+ "name": "Argentina"
+ },
+ "AM": {
+ "name": "Armenia"
+ },
+ "AW": {
+ "name": "Aruba"
+ },
+ "AZ": {
+ "name": "Azerbaijan"
+ },
+ "IN": {
+ "name": "Ấn Äá»™"
+ },
+ "PL": {
+ "name": "Ba Lan"
+ },
+ "BS": {
+ "name": "Bahamas"
+ },
+ "BH": {
+ "name": "Bahrain"
+ },
+ "BD": {
+ "name": "Bangladesh"
+ },
+ "BB": {
+ "name": "Barbados"
+ },
+ "BY": {
+ "name": "Belarus"
+ },
+ "BZ": {
+ "name": "Belize"
+ },
+ "BJ": {
+ "name": "Benin"
+ },
+ "BM": {
+ "name": "Bermuda"
+ },
+ "BT": {
+ "name": "Bhutan"
+ },
+ "BE": {
+ "name": "Bỉ"
+ },
+ "BO": {
+ "name": "Bolivia"
+ },
+ "BA": {
+ "name": "Bosnia và Herzegovina"
+ },
+ "BW": {
+ "name": "Botswana"
+ },
+ "PT": {
+ "name": "Bồ Äào Nha"
+ },
+ "CI": {
+ "name": "BỠBiển Ngà"
+ },
+ "BR": {
+ "name": "Brazil"
+ },
+ "BN": {
+ "name": "Brunei"
+ },
+ "BG": {
+ "name": "Bungari"
+ },
+ "BF": {
+ "name": "Burkina Faso"
+ },
+ "BI": {
+ "name": "Burundi"
+ },
+ "BQ": {
+ "name": "Ca-ri-bê Hà Lan"
+ },
+ "UM": {
+ "name": "Các đảo nhỠxa t.tâm thuộc Mỹ"
+ },
+ "AE": {
+ "name": "Các Tiểu V.quốc Ả Rập T.nhất"
+ },
+ "CM": {
+ "name": "Cameroon"
+ },
+ "KH": {
+ "name": "Campuchia"
+ },
+ "CA": {
+ "name": "Canada"
+ },
+ "CV": {
+ "name": "Cape Verde"
+ },
+ "EA": {
+ "name": "Ceuta và Melilla"
+ },
+ "TD": {
+ "name": "Chad"
+ },
+ "CL": {
+ "name": "Chile"
+ },
+ "CO": {
+ "name": "Colombia"
+ },
+ "KM": {
+ "name": "Comoros"
+ },
+ "CG": {
+ "name": "Congo - Brazzaville"
+ },
+ "CD": {
+ "name": "Congo - Kinshasa"
+ },
+ "CR": {
+ "name": "Costa Rica"
+ },
+ "KW": {
+ "name": "Cô-oét"
+ },
+ "DO": {
+ "name": "Cộng hòa Dominica"
+ },
+ "CZ": {
+ "name": "Cộng hòa Séc"
+ },
+ "CF": {
+ "name": "Cộng hòa Trung Phi"
+ },
+ "HR": {
+ "name": "Croatia"
+ },
+ "CU": {
+ "name": "Cuba"
+ },
+ "CW": {
+ "name": "Curaçao"
+ },
+ "DG": {
+ "name": "Diego Garcia"
+ },
+ "DJ": {
+ "name": "Djibouti"
+ },
+ "DM": {
+ "name": "Dominica"
+ },
+ "TW": {
+ "name": "Äài Loan"
+ },
+ "DK": {
+ "name": "Äan Mạch"
+ },
+ "AC": {
+ "name": "Äảo Ascension"
+ },
+ "CX": {
+ "name": "Äảo Giáng Sinh"
+ },
+ "IM": {
+ "name": "Äảo Man"
+ },
+ "NF": {
+ "name": "Äảo Norfolk"
+ },
+ "AS": {
+ "name": "Äảo Somoa thuá»™c Mỹ"
+ },
+ "HK": {
+ "name": "Äặc khu hành chính Hồng Kông - Trung Quốc"
+ },
+ "MO": {
+ "name": "Äặc khu hành chính Macao - Trung Quốc"
+ },
+ "TL": {
+ "name": "Äông Timor"
+ },
+ "DE": {
+ "name": "Äức"
+ },
+ "EC": {
+ "name": "Ecuador"
+ },
+ "SV": {
+ "name": "El Salvador"
+ },
+ "ER": {
+ "name": "Eritrea"
+ },
+ "EE": {
+ "name": "Estonia"
+ },
+ "ET": {
+ "name": "Ethiopia"
+ },
+ "FJ": {
+ "name": "Fiji"
+ },
+ "GA": {
+ "name": "Gabon"
+ },
+ "GM": {
+ "name": "Gambia"
+ },
+ "GE": {
+ "name": "Georgia"
+ },
+ "GH": {
+ "name": "Ghana"
+ },
+ "GI": {
+ "name": "Gibraltar"
+ },
+ "GL": {
+ "name": "Greenland"
+ },
+ "GD": {
+ "name": "Grenada"
+ },
+ "GP": {
+ "name": "Guadeloupe"
+ },
+ "GU": {
+ "name": "Guam"
+ },
+ "GT": {
+ "name": "Guatemala"
+ },
+ "GG": {
+ "name": "Guernsey"
+ },
+ "GF": {
+ "name": "Guiana thuộc Pháp"
+ },
+ "GN": {
+ "name": "Guinea"
+ },
+ "GQ": {
+ "name": "Guinea Xích Äạo"
+ },
+ "GW": {
+ "name": "Guinea-Bissau"
+ },
+ "GY": {
+ "name": "Guyana"
+ },
+ "NL": {
+ "name": "Hà Lan"
+ },
+ "HT": {
+ "name": "Haiti"
+ },
+ "KR": {
+ "name": "Hàn Quốc"
+ },
+ "US": {
+ "name": "Hoa Kỳ"
+ },
+ "HN": {
+ "name": "Honduras"
+ },
+ "HU": {
+ "name": "Hungari"
+ },
+ "GR": {
+ "name": "Hy Lạp"
+ },
+ "IQ": {
+ "name": "I-rắc"
+ },
+ "IS": {
+ "name": "Iceland"
+ },
+ "ID": {
+ "name": "Indonesia"
+ },
+ "IR": {
+ "name": "Iran"
+ },
+ "IL": {
+ "name": "Israel"
+ },
+ "JM": {
+ "name": "Jamaica"
+ },
+ "JE": {
+ "name": "Jersey"
+ },
+ "JO": {
+ "name": "Jordan"
+ },
+ "KZ": {
+ "name": "Kazakhstan"
+ },
+ "KE": {
+ "name": "Kenya"
+ },
+ "KI": {
+ "name": "Kiribati"
+ },
+ "XK": {
+ "name": "Kosovo"
+ },
+ "KG": {
+ "name": "Kyrgyzstan"
+ },
+ "TF": {
+ "name": "Lãnh thổ miá»n nam nÆ°á»›c Pháp"
+ },
+ "PS": {
+ "name": "Lãnh thổ Palestine"
+ },
+ "LA": {
+ "name": "Lào"
+ },
+ "LV": {
+ "name": "Latvia"
+ },
+ "LS": {
+ "name": "Lesotho"
+ },
+ "LB": {
+ "name": "Li-băng"
+ },
+ "LY": {
+ "name": "Li-bi"
+ },
+ "LR": {
+ "name": "Liberia"
+ },
+ "LI": {
+ "name": "Liechtenstein"
+ },
+ "LT": {
+ "name": "Lít-va"
+ },
+ "LU": {
+ "name": "Luxembourg"
+ },
+ "MA": {
+ "name": "Ma-rốc"
+ },
+ "MK": {
+ "name": "Macedonia"
+ },
+ "MG": {
+ "name": "Madagascar"
+ },
+ "MW": {
+ "name": "Malawi"
+ },
+ "MY": {
+ "name": "Malaysia"
+ },
+ "MV": {
+ "name": "Maldives"
+ },
+ "ML": {
+ "name": "Mali"
+ },
+ "MT": {
+ "name": "Malta"
+ },
+ "MQ": {
+ "name": "Martinique"
+ },
+ "MR": {
+ "name": "Mauritania"
+ },
+ "MU": {
+ "name": "Mauritius"
+ },
+ "YT": {
+ "name": "Mayotte"
+ },
+ "MX": {
+ "name": "Mexico"
+ },
+ "FM": {
+ "name": "Micronesia"
+ },
+ "MD": {
+ "name": "Moldova"
+ },
+ "MC": {
+ "name": "Monaco"
+ },
+ "ME": {
+ "name": "Montenegro"
+ },
+ "MS": {
+ "name": "Montserrat"
+ },
+ "MZ": {
+ "name": "Mozambique"
+ },
+ "MN": {
+ "name": "Mông Cổ"
+ },
+ "MM": {
+ "name": "Myanmar (Miến Äiện)"
+ },
+ "NO": {
+ "name": "Na Uy"
+ },
+ "AQ": {
+ "name": "Nam Cá»±c"
+ },
+ "ZA": {
+ "name": "Nam Phi"
+ },
+ "SS": {
+ "name": "Nam Sudan"
+ },
+ "NA": {
+ "name": "Namibia"
+ },
+ "NR": {
+ "name": "Nauru"
+ },
+ "NP": {
+ "name": "Nepal"
+ },
+ "NC": {
+ "name": "New Caledonia"
+ },
+ "NZ": {
+ "name": "New Zealand"
+ },
+ "RU": {
+ "name": "Nga"
+ },
+ "JP": {
+ "name": "Nhật Bản"
+ },
+ "NI": {
+ "name": "Nicaragua"
+ },
+ "NE": {
+ "name": "Niger"
+ },
+ "NG": {
+ "name": "Nigeria"
+ },
+ "NU": {
+ "name": "Niue"
+ },
+ "OM": {
+ "name": "Oman"
+ },
+ "PK": {
+ "name": "Pakistan"
+ },
+ "PW": {
+ "name": "Palau"
+ },
+ "PA": {
+ "name": "Panama"
+ },
+ "PG": {
+ "name": "Papua New Guinea"
+ },
+ "PY": {
+ "name": "Paraguay"
+ },
+ "PE": {
+ "name": "Peru"
+ },
+ "FR": {
+ "name": "Pháp"
+ },
+ "FI": {
+ "name": "Phần Lan"
+ },
+ "PH": {
+ "name": "Philippin"
+ },
+ "PF": {
+ "name": "Polynesia thuộc Pháp"
+ },
+ "PR": {
+ "name": "Puerto Rico"
+ },
+ "QA": {
+ "name": "Qatar"
+ },
+ "AX": {
+ "name": "Quần đảo Åland"
+ },
+ "MP": {
+ "name": "Quần đảo Bắc Mariana"
+ },
+ "IC": {
+ "name": "Quần đảo Canary"
+ },
+ "KY": {
+ "name": "Quần đảo Cayman"
+ },
+ "CC": {
+ "name": "Quần đảo Cocos (Keeling)"
+ },
+ "CK": {
+ "name": "Quần đảo Cook"
+ },
+ "FK": {
+ "name": "Quần đảo Falkland"
+ },
+ "FO": {
+ "name": "Quần đảo Faroe"
+ },
+ "MH": {
+ "name": "Quần đảo Marshall"
+ },
+ "GS": {
+ "name": "Quần đảo Nam Georgia và Nam Sandwich"
+ },
+ "PN": {
+ "name": "Quần đảo Pitcairn"
+ },
+ "SB": {
+ "name": "Quần đảo Solomon"
+ },
+ "TC": {
+ "name": "Quần đảo Turk và Caicos"
+ },
+ "VG": {
+ "name": "Quần đảo Virgin thuộc Anh"
+ },
+ "VI": {
+ "name": "Quần đảo Virgin thuộc Mỹ"
+ },
+ "RE": {
+ "name": "Réunion"
+ },
+ "RO": {
+ "name": "Romania"
+ },
+ "RW": {
+ "name": "Rwanda"
+ },
+ "BL": {
+ "name": "Saint Barthélemy"
+ },
+ "SH": {
+ "name": "Saint Helena"
+ },
+ "KN": {
+ "name": "Saint Kitts và Nevis"
+ },
+ "LC": {
+ "name": "Saint Lucia"
+ },
+ "MF": {
+ "name": "Saint Martin"
+ },
+ "PM": {
+ "name": "Saint Pierre và Miquelon"
+ },
+ "VC": {
+ "name": "Saint Vincent và Grenadines"
+ },
+ "WS": {
+ "name": "Samoa"
+ },
+ "SM": {
+ "name": "San Marino"
+ },
+ "ST": {
+ "name": "São Tomé và Príncipe"
+ },
+ "SN": {
+ "name": "Senegal"
+ },
+ "RS": {
+ "name": "Serbia"
+ },
+ "SC": {
+ "name": "Seychelles"
+ },
+ "SL": {
+ "name": "Sierra Leone"
+ },
+ "SG": {
+ "name": "Singapore"
+ },
+ "SX": {
+ "name": "Sint Maarten"
+ },
+ "CY": {
+ "name": "Síp"
+ },
+ "SK": {
+ "name": "Slovakia"
+ },
+ "SI": {
+ "name": "Slovenia"
+ },
+ "SO": {
+ "name": "Somali"
+ },
+ "LK": {
+ "name": "Sri Lanka"
+ },
+ "SD": {
+ "name": "Sudan"
+ },
+ "SR": {
+ "name": "Suriname"
+ },
+ "SJ": {
+ "name": "Svalbard và Jan Mayen"
+ },
+ "SZ": {
+ "name": "Swaziland"
+ },
+ "SY": {
+ "name": "Syria"
+ },
+ "TJ": {
+ "name": "Tajikistan"
+ },
+ "TZ": {
+ "name": "Tanzania"
+ },
+ "ES": {
+ "name": "Tây Ban Nha"
+ },
+ "EH": {
+ "name": "Tây Sahara"
+ },
+ "TH": {
+ "name": "Thái Lan"
+ },
+ "VA": {
+ "name": "Thành Vatican"
+ },
+ "TR": {
+ "name": "Thổ Nhĩ Kỳ"
+ },
+ "IO": {
+ "name": "Thuá»™c địa Anh tại Ấn Äá»™ DÆ°Æ¡ng"
+ },
+ "SE": {
+ "name": "Thụy Äiển"
+ },
+ "CH": {
+ "name": "Thụy Sĩ"
+ },
+ "TG": {
+ "name": "Togo"
+ },
+ "TK": {
+ "name": "Tokelau"
+ },
+ "TO": {
+ "name": "Tonga"
+ },
+ "KP": {
+ "name": "Triá»u Tiên"
+ },
+ "TT": {
+ "name": "Trinidad và Tobago"
+ },
+ "TA": {
+ "name": "Tristan da Cunha"
+ },
+ "CN": {
+ "name": "Trung Quốc"
+ },
+ "TN": {
+ "name": "Tunisia"
+ },
+ "TM": {
+ "name": "Turkmenistan"
+ },
+ "TV": {
+ "name": "Tuvalu"
+ },
+ "AU": {
+ "name": "Úc"
+ },
+ "UG": {
+ "name": "Uganda"
+ },
+ "UA": {
+ "name": "Ukraina"
+ },
+ "UY": {
+ "name": "Uruguay"
+ },
+ "UZ": {
+ "name": "Uzbekistan"
+ },
+ "VU": {
+ "name": "Vanuatu"
+ },
+ "VE": {
+ "name": "Venezuela"
+ },
+ "VN": {
+ "name": "Việt Nam"
+ },
+ "GB": {
+ "name": "Vương quốc Anh"
+ },
+ "WF": {
+ "name": "Wallis và Futuna"
+ },
+ "IT": {
+ "name": "Ã"
+ },
+ "YE": {
+ "name": "Yemen"
+ },
+ "ZM": {
+ "name": "Zambia"
+ },
+ "ZW": {
+ "name": "Zimbabwe"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/country/vun.json b/library/intl/resources/country/vun.json
new file mode 100644
index 000000000..e57db8007
--- /dev/null
+++ b/library/intl/resources/country/vun.json
@@ -0,0 +1,761 @@
+{
+ "ZA": {
+ "name": "Afrika Kusini"
+ },
+ "AF": {
+ "name": "Afuganistani"
+ },
+ "IS": {
+ "name": "Aislandi"
+ },
+ "AR": {
+ "name": "Ajentina"
+ },
+ "AX": {
+ "name": "Ã…land Islands"
+ },
+ "AL": {
+ "name": "Albania"
+ },
+ "DZ": {
+ "name": "Aljeria"
+ },
+ "AD": {
+ "name": "Andora"
+ },
+ "AO": {
+ "name": "Angola"
+ },
+ "AI": {
+ "name": "Anguilla"
+ },
+ "AQ": {
+ "name": "Antarctica"
+ },
+ "AG": {
+ "name": "Antigua na Barbuda"
+ },
+ "AM": {
+ "name": "Armenia"
+ },
+ "AW": {
+ "name": "Aruba"
+ },
+ "AC": {
+ "name": "Ascension Island"
+ },
+ "AU": {
+ "name": "Australia"
+ },
+ "AT": {
+ "name": "Austria"
+ },
+ "IE": {
+ "name": "Ayalandi"
+ },
+ "AZ": {
+ "name": "Azabajani"
+ },
+ "BB": {
+ "name": "Babadosi"
+ },
+ "BS": {
+ "name": "Bahama"
+ },
+ "BH": {
+ "name": "Bahareni"
+ },
+ "BD": {
+ "name": "Bangladeshi"
+ },
+ "BY": {
+ "name": "Belarusi"
+ },
+ "BZ": {
+ "name": "Belize"
+ },
+ "BJ": {
+ "name": "Benini"
+ },
+ "BM": {
+ "name": "Bermuda"
+ },
+ "BO": {
+ "name": "Bolivia"
+ },
+ "BA": {
+ "name": "Bosnia na Hezegovina"
+ },
+ "BW": {
+ "name": "Botswana"
+ },
+ "BR": {
+ "name": "Brazili"
+ },
+ "BN": {
+ "name": "Brunei"
+ },
+ "BF": {
+ "name": "Bukinafaso"
+ },
+ "MG": {
+ "name": "Bukini"
+ },
+ "BG": {
+ "name": "Bulgaria"
+ },
+ "BI": {
+ "name": "Burundi"
+ },
+ "BT": {
+ "name": "Butani"
+ },
+ "IC": {
+ "name": "Canary Islands"
+ },
+ "BQ": {
+ "name": "Caribbean Netherlands"
+ },
+ "EA": {
+ "name": "Ceuta & Melilla"
+ },
+ "TD": {
+ "name": "Chadi"
+ },
+ "CL": {
+ "name": "Chile"
+ },
+ "CN": {
+ "name": "China"
+ },
+ "CX": {
+ "name": "Christmas Island"
+ },
+ "CC": {
+ "name": "Cocos (Keeling) Islands"
+ },
+ "CW": {
+ "name": "Curaçao"
+ },
+ "DK": {
+ "name": "Denmaki"
+ },
+ "DG": {
+ "name": "Diego Garcia"
+ },
+ "DM": {
+ "name": "Dominika"
+ },
+ "EC": {
+ "name": "Ekwado"
+ },
+ "SV": {
+ "name": "Elsavado"
+ },
+ "IO": {
+ "name": "Eneo la Uingereza katika Bahari Hindi"
+ },
+ "ER": {
+ "name": "Eritrea"
+ },
+ "EE": {
+ "name": "Estonia"
+ },
+ "AE": {
+ "name": "Falme za Kiarabu"
+ },
+ "FO": {
+ "name": "Faroe Islands"
+ },
+ "FJ": {
+ "name": "Fiji"
+ },
+ "PH": {
+ "name": "Filipino"
+ },
+ "TF": {
+ "name": "French Southern Territories"
+ },
+ "GA": {
+ "name": "Gaboni"
+ },
+ "GM": {
+ "name": "Gambia"
+ },
+ "GH": {
+ "name": "Ghana"
+ },
+ "GN": {
+ "name": "Gine"
+ },
+ "GW": {
+ "name": "Ginebisau"
+ },
+ "GQ": {
+ "name": "Ginekweta"
+ },
+ "GD": {
+ "name": "Grenada"
+ },
+ "GL": {
+ "name": "Grinlandi"
+ },
+ "GG": {
+ "name": "Guernsey"
+ },
+ "GY": {
+ "name": "Guyana"
+ },
+ "GP": {
+ "name": "Gwadelupe"
+ },
+ "GU": {
+ "name": "Gwam"
+ },
+ "GT": {
+ "name": "Gwatemala"
+ },
+ "GF": {
+ "name": "Gwiyana ya Ufaransa"
+ },
+ "HT": {
+ "name": "Haiti"
+ },
+ "ES": {
+ "name": "Hispania"
+ },
+ "HN": {
+ "name": "Hondurasi"
+ },
+ "HK": {
+ "name": "Hong Kong SAR China"
+ },
+ "HU": {
+ "name": "Hungaria"
+ },
+ "IN": {
+ "name": "India"
+ },
+ "ID": {
+ "name": "Indonesia"
+ },
+ "IQ": {
+ "name": "Iraki"
+ },
+ "IM": {
+ "name": "Isle of Man"
+ },
+ "IL": {
+ "name": "Israeli"
+ },
+ "IT": {
+ "name": "Italia"
+ },
+ "JM": {
+ "name": "Jamaika"
+ },
+ "CF": {
+ "name": "Jamhuri ya Afrika ya Kati"
+ },
+ "CZ": {
+ "name": "Jamhuri ya Cheki"
+ },
+ "DO": {
+ "name": "Jamhuri ya Dominika"
+ },
+ "CD": {
+ "name": "Jamhuri ya Kidemokrasia ya Kongo"
+ },
+ "JP": {
+ "name": "Japani"
+ },
+ "JE": {
+ "name": "Jersey"
+ },
+ "GI": {
+ "name": "Jibralta"
+ },
+ "DJ": {
+ "name": "Jibuti"
+ },
+ "GE": {
+ "name": "Jojia"
+ },
+ "KH": {
+ "name": "Kambodia"
+ },
+ "CM": {
+ "name": "Kameruni"
+ },
+ "CA": {
+ "name": "Kanada"
+ },
+ "QA": {
+ "name": "Katari"
+ },
+ "KZ": {
+ "name": "Kazakistani"
+ },
+ "KE": {
+ "name": "Kenya"
+ },
+ "CV": {
+ "name": "Kepuvede"
+ },
+ "KI": {
+ "name": "Kiribati"
+ },
+ "KG": {
+ "name": "Kirigizistani"
+ },
+ "NF": {
+ "name": "Kisiwa cha Norfok"
+ },
+ "CI": {
+ "name": "Kodivaa"
+ },
+ "CO": {
+ "name": "Kolombia"
+ },
+ "KM": {
+ "name": "Komoro"
+ },
+ "CG": {
+ "name": "Kongo"
+ },
+ "HR": {
+ "name": "Korasia"
+ },
+ "KP": {
+ "name": "Korea Kaskazini"
+ },
+ "KR": {
+ "name": "Korea Kusini"
+ },
+ "XK": {
+ "name": "Kosovo"
+ },
+ "CR": {
+ "name": "Kostarika"
+ },
+ "CU": {
+ "name": "Kuba"
+ },
+ "CY": {
+ "name": "Kuprosi"
+ },
+ "KW": {
+ "name": "Kuwaiti"
+ },
+ "LA": {
+ "name": "Laosi"
+ },
+ "LU": {
+ "name": "Lasembagi"
+ },
+ "LV": {
+ "name": "Lativia"
+ },
+ "LB": {
+ "name": "Lebanoni"
+ },
+ "LS": {
+ "name": "Lesoto"
+ },
+ "LR": {
+ "name": "Liberia"
+ },
+ "LY": {
+ "name": "Libya"
+ },
+ "LI": {
+ "name": "Lishenteni"
+ },
+ "LT": {
+ "name": "Litwania"
+ },
+ "MO": {
+ "name": "Macau SAR China"
+ },
+ "MW": {
+ "name": "Malawi"
+ },
+ "MY": {
+ "name": "Malesia"
+ },
+ "ML": {
+ "name": "Mali"
+ },
+ "MT": {
+ "name": "Malta"
+ },
+ "US": {
+ "name": "Marekani"
+ },
+ "MQ": {
+ "name": "Martiniki"
+ },
+ "MK": {
+ "name": "Masedonia"
+ },
+ "YT": {
+ "name": "Mayotte"
+ },
+ "MX": {
+ "name": "Meksiko"
+ },
+ "FM": {
+ "name": "Mikronesia"
+ },
+ "EG": {
+ "name": "Misri"
+ },
+ "MV": {
+ "name": "Modivu"
+ },
+ "MD": {
+ "name": "Moldova"
+ },
+ "MC": {
+ "name": "Monako"
+ },
+ "MN": {
+ "name": "Mongolia"
+ },
+ "ME": {
+ "name": "Montenegro"
+ },
+ "MS": {
+ "name": "Montserrati"
+ },
+ "MU": {
+ "name": "Morisi"
+ },
+ "MR": {
+ "name": "Moritania"
+ },
+ "MA": {
+ "name": "Moroko"
+ },
+ "MZ": {
+ "name": "Msumbiji"
+ },
+ "MM": {
+ "name": "Myama"
+ },
+ "NA": {
+ "name": "Namibia"
+ },
+ "NR": {
+ "name": "Nauru"
+ },
+ "NP": {
+ "name": "Nepali"
+ },
+ "NE": {
+ "name": "Nijeri"
+ },
+ "NG": {
+ "name": "Nijeria"
+ },
+ "NI": {
+ "name": "Nikaragwa"
+ },
+ "NU": {
+ "name": "Niue"
+ },
+ "NO": {
+ "name": "Norwe"
+ },
+ "NC": {
+ "name": "Nyukaledonia"
+ },
+ "NZ": {
+ "name": "Nyuzilandi"
+ },
+ "OM": {
+ "name": "Omani"
+ },
+ "PK": {
+ "name": "Pakistani"
+ },
+ "PW": {
+ "name": "Palau"
+ },
+ "PA": {
+ "name": "Panama"
+ },
+ "PG": {
+ "name": "Papua"
+ },
+ "PY": {
+ "name": "Paragwai"
+ },
+ "PE": {
+ "name": "Peru"
+ },
+ "PN": {
+ "name": "Pitkairni"
+ },
+ "PL": {
+ "name": "Polandi"
+ },
+ "PF": {
+ "name": "Polinesia ya Ufaransa"
+ },
+ "PR": {
+ "name": "Pwetoriko"
+ },
+ "RE": {
+ "name": "Riyunioni"
+ },
+ "RO": {
+ "name": "Romania"
+ },
+ "RW": {
+ "name": "Rwanda"
+ },
+ "SM": {
+ "name": "Samarino"
+ },
+ "WS": {
+ "name": "Samoa"
+ },
+ "AS": {
+ "name": "Samoa ya Marekani"
+ },
+ "SH": {
+ "name": "Santahelena"
+ },
+ "KN": {
+ "name": "Santakitzi na Nevis"
+ },
+ "LC": {
+ "name": "Santalusia"
+ },
+ "PM": {
+ "name": "Santapieri na Mikeloni"
+ },
+ "VC": {
+ "name": "Santavisenti na Grenadini"
+ },
+ "ST": {
+ "name": "Sao Tome na Principe"
+ },
+ "SA": {
+ "name": "Saudi"
+ },
+ "SN": {
+ "name": "Senegali"
+ },
+ "RS": {
+ "name": "Serbia"
+ },
+ "SC": {
+ "name": "Shelisheli"
+ },
+ "SL": {
+ "name": "Siera Leoni"
+ },
+ "SG": {
+ "name": "Singapoo"
+ },
+ "SX": {
+ "name": "Sint Maarten"
+ },
+ "SY": {
+ "name": "Siria"
+ },
+ "LK": {
+ "name": "Sirilanka"
+ },
+ "SK": {
+ "name": "Slovakia"
+ },
+ "SI": {
+ "name": "Slovenia"
+ },
+ "SO": {
+ "name": "Somalia"
+ },
+ "GS": {
+ "name": "South Georgia & South Sandwich Islands"
+ },
+ "SS": {
+ "name": "South Sudan"
+ },
+ "BL": {
+ "name": "St. Barthélemy"
+ },
+ "MF": {
+ "name": "St. Martin"
+ },
+ "SD": {
+ "name": "Sudani"
+ },
+ "SR": {
+ "name": "Surinamu"
+ },
+ "SJ": {
+ "name": "Svalbard & Jan Mayen"
+ },
+ "TH": {
+ "name": "Tailandi"
+ },
+ "TW": {
+ "name": "Taiwani"
+ },
+ "TJ": {
+ "name": "Tajikistani"
+ },
+ "TZ": {
+ "name": "Tanzania"
+ },
+ "TL": {
+ "name": "Timori ya Mashariki"
+ },
+ "TG": {
+ "name": "Togo"
+ },
+ "TK": {
+ "name": "Tokelau"
+ },
+ "TO": {
+ "name": "Tonga"
+ },
+ "TT": {
+ "name": "Trinidad na Tobago"
+ },
+ "TA": {
+ "name": "Tristan da Cunha"
+ },
+ "TN": {
+ "name": "Tunisia"
+ },
+ "TM": {
+ "name": "Turukimenistani"
+ },
+ "TV": {
+ "name": "Tuvalu"
+ },
+ "UM": {
+ "name": "U.S. Outlying Islands"
+ },
+ "IR": {
+ "name": "Uajemi"
+ },
+ "BE": {
+ "name": "Ubelgiji"
+ },
+ "FR": {
+ "name": "Ufaransa"
+ },
+ "FI": {
+ "name": "Ufini"
+ },
+ "UG": {
+ "name": "Uganda"
+ },
+ "GR": {
+ "name": "Ugiriki"
+ },
+ "ET": {
+ "name": "Uhabeshi"
+ },
+ "NL": {
+ "name": "Uholanzi"
+ },
+ "GB": {
+ "name": "Uingereza"
+ },
+ "DE": {
+ "name": "Ujerumani"
+ },
+ "PS": {
+ "name": "Ukingo wa Magharibi na Ukanda wa Gaza wa Palestina"
+ },
+ "UA": {
+ "name": "Ukraini"
+ },
+ "PT": {
+ "name": "Ureno"
+ },
+ "UY": {
+ "name": "Urugwai"
+ },
+ "RU": {
+ "name": "Urusi"
+ },
+ "SZ": {
+ "name": "Uswazi"
+ },
+ "SE": {
+ "name": "Uswidi"
+ },
+ "CH": {
+ "name": "Uswisi"
+ },
+ "TR": {
+ "name": "Uturuki"
+ },
+ "UZ": {
+ "name": "Uzibekistani"
+ },
+ "VU": {
+ "name": "Vanuatu"
+ },
+ "VA": {
+ "name": "Vatikani"
+ },
+ "VE": {
+ "name": "Venezuela"
+ },
+ "VN": {
+ "name": "Vietinamu"
+ },
+ "CK": {
+ "name": "Visiwa vya Cook"
+ },
+ "FK": {
+ "name": "Visiwa vya Falkland"
+ },
+ "KY": {
+ "name": "Visiwa vya Kayman"
+ },
+ "MP": {
+ "name": "Visiwa vya Mariana vya Kaskazini"
+ },
+ "MH": {
+ "name": "Visiwa vya Marshal"
+ },
+ "SB": {
+ "name": "Visiwa vya Solomon"
+ },
+ "TC": {
+ "name": "Visiwa vya Turki na Kaiko"
+ },
+ "VI": {
+ "name": "Visiwa vya Virgin vya Marekani"
+ },
+ "VG": {
+ "name": "Visiwa vya Virgin vya Uingereza"
+ },
+ "WF": {
+ "name": "Walis na Futuna"
+ },
+ "EH": {
+ "name": "Western Sahara"
+ },
+ "YE": {
+ "name": "Yemeni"
+ },
+ "JO": {
+ "name": "Yordani"
+ },
+ "ZM": {
+ "name": "Zambia"
+ },
+ "ZW": {
+ "name": "Zimbabwe"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/country/wae.json b/library/intl/resources/country/wae.json
new file mode 100644
index 000000000..103ba487f
--- /dev/null
+++ b/library/intl/resources/country/wae.json
@@ -0,0 +1,761 @@
+{
+ "AF": {
+ "name": "Afganištan"
+ },
+ "AX": {
+ "name": "Alandinslä"
+ },
+ "AL": {
+ "name": "Albanie"
+ },
+ "DZ": {
+ "name": "Algerie"
+ },
+ "US": {
+ "name": "Amerika"
+ },
+ "UM": {
+ "name": "Amerikaniš Ozeanie"
+ },
+ "AS": {
+ "name": "Amerikaniš Samoa"
+ },
+ "VI": {
+ "name": "Amerikaniši Jungfröiwinslä"
+ },
+ "AD": {
+ "name": "Andorra"
+ },
+ "AO": {
+ "name": "Angola"
+ },
+ "AI": {
+ "name": "Anguilla"
+ },
+ "AQ": {
+ "name": "Antarktis"
+ },
+ "AG": {
+ "name": "Antigua und Barbuda"
+ },
+ "AR": {
+ "name": "Argentinie"
+ },
+ "AM": {
+ "name": "Armenie"
+ },
+ "AW": {
+ "name": "Aruba"
+ },
+ "AZ": {
+ "name": "Aserbaidšan"
+ },
+ "AU": {
+ "name": "Australie"
+ },
+ "BH": {
+ "name": "BaÄrain"
+ },
+ "BS": {
+ "name": "Bahamas"
+ },
+ "BD": {
+ "name": "Bangladeš"
+ },
+ "BB": {
+ "name": "Barbados"
+ },
+ "BE": {
+ "name": "Belgie"
+ },
+ "BZ": {
+ "name": "Belize"
+ },
+ "BJ": {
+ "name": "Benin"
+ },
+ "BM": {
+ "name": "Bermuda"
+ },
+ "BT": {
+ "name": "Bhutan"
+ },
+ "BO": {
+ "name": "Boliwie"
+ },
+ "BA": {
+ "name": "Bosnie und Herzegovina"
+ },
+ "BW": {
+ "name": "Botswana"
+ },
+ "BR": {
+ "name": "Brasilie"
+ },
+ "IO": {
+ "name": "Britišes Territorium em indiše Ozean"
+ },
+ "VG": {
+ "name": "Britiši Jungfröiwinslä"
+ },
+ "BN": {
+ "name": "Brunei"
+ },
+ "BG": {
+ "name": "Bulgarie"
+ },
+ "BF": {
+ "name": "Burkina Faso"
+ },
+ "MM": {
+ "name": "Burma"
+ },
+ "BI": {
+ "name": "Burundi"
+ },
+ "BQ": {
+ "name": "Caribbean Netherlands"
+ },
+ "EA": {
+ "name": "Ceuta und Melilla"
+ },
+ "CN": {
+ "name": "China"
+ },
+ "CK": {
+ "name": "Cookinslä"
+ },
+ "CR": {
+ "name": "Costa Rica"
+ },
+ "CW": {
+ "name": "Curaçao"
+ },
+ "DK": {
+ "name": "Dänemark"
+ },
+ "DG": {
+ "name": "Diego Garcia"
+ },
+ "DO": {
+ "name": "Dominikaniši Rebublik"
+ },
+ "DM": {
+ "name": "Doninica"
+ },
+ "DJ": {
+ "name": "DÅ¡ibuti"
+ },
+ "EC": {
+ "name": "Ecuador"
+ },
+ "EG": {
+ "name": "Egypte"
+ },
+ "SV": {
+ "name": "El Salvador"
+ },
+ "CI": {
+ "name": "Elfebeiküšta"
+ },
+ "GB": {
+ "name": "England"
+ },
+ "GQ": {
+ "name": "Equatorialginea"
+ },
+ "ER": {
+ "name": "Eritrea"
+ },
+ "EE": {
+ "name": "EÅ¡tland"
+ },
+ "ET": {
+ "name": "Ethiopie"
+ },
+ "FK": {
+ "name": "Falklandinslä"
+ },
+ "FO": {
+ "name": "Färöe"
+ },
+ "FJ": {
+ "name": "Fidši"
+ },
+ "FI": {
+ "name": "Finnland"
+ },
+ "FR": {
+ "name": "FrankriÄ"
+ },
+ "GF": {
+ "name": "Französiš Guiana"
+ },
+ "PF": {
+ "name": "Französiš Polinesie"
+ },
+ "TF": {
+ "name": "Französiši Süd- und Antarktisgebiet"
+ },
+ "GA": {
+ "name": "Gabon"
+ },
+ "GM": {
+ "name": "Gambia"
+ },
+ "GH": {
+ "name": "Gana"
+ },
+ "GE": {
+ "name": "Georgie"
+ },
+ "GI": {
+ "name": "Gibraltar"
+ },
+ "GN": {
+ "name": "Ginea"
+ },
+ "GW": {
+ "name": "Ginea Bissau"
+ },
+ "GD": {
+ "name": "Grenada"
+ },
+ "GR": {
+ "name": "GriÄeland"
+ },
+ "GL": {
+ "name": "Grönland"
+ },
+ "GP": {
+ "name": "Guadeloupe"
+ },
+ "GU": {
+ "name": "Guam"
+ },
+ "GT": {
+ "name": "Guatemala"
+ },
+ "GG": {
+ "name": "Guernsey"
+ },
+ "GY": {
+ "name": "Guyana"
+ },
+ "HT": {
+ "name": "Haiti"
+ },
+ "AC": {
+ "name": "Himmelfártsinsla"
+ },
+ "NL": {
+ "name": "Holand"
+ },
+ "HN": {
+ "name": "Honduras"
+ },
+ "IN": {
+ "name": "Indie"
+ },
+ "ID": {
+ "name": "Indonesie"
+ },
+ "IQ": {
+ "name": "Irak"
+ },
+ "IR": {
+ "name": "Iran"
+ },
+ "IE": {
+ "name": "Irland"
+ },
+ "IS": {
+ "name": "Island"
+ },
+ "IM": {
+ "name": "Isle of Man"
+ },
+ "IL": {
+ "name": "Israel"
+ },
+ "IT": {
+ "name": "Italie"
+ },
+ "JM": {
+ "name": "Jamaika"
+ },
+ "JP": {
+ "name": "Japan"
+ },
+ "YE": {
+ "name": "Jéme"
+ },
+ "JE": {
+ "name": "Jersey"
+ },
+ "JO": {
+ "name": "Jordanie"
+ },
+ "KY": {
+ "name": "Kaimaninslä"
+ },
+ "KH": {
+ "name": "Kambodša"
+ },
+ "CM": {
+ "name": "Kamerun"
+ },
+ "CA": {
+ "name": "Kanada"
+ },
+ "IC": {
+ "name": "Kanariše Inslä"
+ },
+ "CV": {
+ "name": "Kap Verde"
+ },
+ "KZ": {
+ "name": "KasaÄstan"
+ },
+ "QA": {
+ "name": "Katar"
+ },
+ "KE": {
+ "name": "Kenya"
+ },
+ "KG": {
+ "name": "Kirgištan"
+ },
+ "KI": {
+ "name": "Kiribati"
+ },
+ "CC": {
+ "name": "Kokosinslä"
+ },
+ "CO": {
+ "name": "Kolumbie"
+ },
+ "KM": {
+ "name": "Komore"
+ },
+ "CG": {
+ "name": "Kongo Brazzaville"
+ },
+ "CD": {
+ "name": "Kongo-Kinshasa"
+ },
+ "XK": {
+ "name": "Kosovo"
+ },
+ "HR": {
+ "name": "Kroatie"
+ },
+ "CU": {
+ "name": "Kuba"
+ },
+ "KW": {
+ "name": "Kuweit"
+ },
+ "LA": {
+ "name": "Laos"
+ },
+ "LS": {
+ "name": "Lesotho"
+ },
+ "LV": {
+ "name": "Lettland"
+ },
+ "LB": {
+ "name": "Libanon"
+ },
+ "LR": {
+ "name": "Liberia"
+ },
+ "LI": {
+ "name": "LieÄteÅ¡tei"
+ },
+ "LT": {
+ "name": "Litaue"
+ },
+ "LY": {
+ "name": "Lübie"
+ },
+ "LU": {
+ "name": "Luxeburg"
+ },
+ "MG": {
+ "name": "Madagaskar"
+ },
+ "MW": {
+ "name": "Malawi"
+ },
+ "MY": {
+ "name": "Malaysia"
+ },
+ "MV": {
+ "name": "Malediwe"
+ },
+ "ML": {
+ "name": "Mali"
+ },
+ "MT": {
+ "name": "Malta"
+ },
+ "MA": {
+ "name": "Maroko"
+ },
+ "MH": {
+ "name": "Maršalinslä"
+ },
+ "MQ": {
+ "name": "Martinique"
+ },
+ "MR": {
+ "name": "Mauretanie"
+ },
+ "MU": {
+ "name": "Mauritius"
+ },
+ "MK": {
+ "name": "Mazedonie"
+ },
+ "MX": {
+ "name": "Mexiko"
+ },
+ "FM": {
+ "name": "Mikronesie"
+ },
+ "MD": {
+ "name": "Moldau"
+ },
+ "MC": {
+ "name": "Monago"
+ },
+ "MN": {
+ "name": "Mongolei"
+ },
+ "MS": {
+ "name": "Monserrat"
+ },
+ "ME": {
+ "name": "Montenegro"
+ },
+ "MZ": {
+ "name": "Mosambik"
+ },
+ "YT": {
+ "name": "Moyette"
+ },
+ "NA": {
+ "name": "Namibia"
+ },
+ "NR": {
+ "name": "Nauru"
+ },
+ "NP": {
+ "name": "Nepal"
+ },
+ "NI": {
+ "name": "Nicaragua"
+ },
+ "NE": {
+ "name": "Niger"
+ },
+ "NG": {
+ "name": "Nigeria"
+ },
+ "NU": {
+ "name": "Niue"
+ },
+ "NC": {
+ "name": "Niwkaledonie"
+ },
+ "NZ": {
+ "name": "Niwséland"
+ },
+ "KP": {
+ "name": "Nordkorea"
+ },
+ "MP": {
+ "name": "NördliÄi Mariane"
+ },
+ "NF": {
+ "name": "Norfolkinsla"
+ },
+ "NO": {
+ "name": "Norwäge"
+ },
+ "OM": {
+ "name": "Oman"
+ },
+ "AT": {
+ "name": "ÖštriÄ"
+ },
+ "TL": {
+ "name": "OÅ¡ttimor"
+ },
+ "PK": {
+ "name": "Pakištan"
+ },
+ "PW": {
+ "name": "Palau"
+ },
+ "PS": {
+ "name": "Paleština"
+ },
+ "PA": {
+ "name": "Panama"
+ },
+ "PG": {
+ "name": "Papua Niwginea"
+ },
+ "PY": {
+ "name": "Paraguai"
+ },
+ "PE": {
+ "name": "Peru"
+ },
+ "PH": {
+ "name": "Philippine"
+ },
+ "PN": {
+ "name": "Pitcairn"
+ },
+ "PL": {
+ "name": "Pole"
+ },
+ "PT": {
+ "name": "Portugal"
+ },
+ "PR": {
+ "name": "Puerto Rico"
+ },
+ "RE": {
+ "name": "Réunion"
+ },
+ "RW": {
+ "name": "Ruanda"
+ },
+ "RO": {
+ "name": "Rumänie"
+ },
+ "RU": {
+ "name": "Russland"
+ },
+ "SB": {
+ "name": "Salomone"
+ },
+ "ZM": {
+ "name": "Sambia"
+ },
+ "WS": {
+ "name": "Samoa"
+ },
+ "SM": {
+ "name": "San Marino"
+ },
+ "ST": {
+ "name": "São Tomé and Príncipe"
+ },
+ "SA": {
+ "name": "Saudi Arabie"
+ },
+ "ES": {
+ "name": "Schpanie"
+ },
+ "SE": {
+ "name": "Schwede"
+ },
+ "CH": {
+ "name": "Schwiz"
+ },
+ "SC": {
+ "name": "SeÄelle"
+ },
+ "SN": {
+ "name": "Senegal"
+ },
+ "RS": {
+ "name": "Serbie"
+ },
+ "SL": {
+ "name": "Sierra Leone"
+ },
+ "ZW": {
+ "name": "Simbabwe"
+ },
+ "SG": {
+ "name": "Singapur"
+ },
+ "SX": {
+ "name": "Sint Maarten"
+ },
+ "SK": {
+ "name": "Slowakei"
+ },
+ "SI": {
+ "name": "Slowenie"
+ },
+ "SO": {
+ "name": "Somalia"
+ },
+ "HK": {
+ "name": "Sonderverwaltigszona Hongkong"
+ },
+ "MO": {
+ "name": "Sonderverwaltigszona Makau"
+ },
+ "SS": {
+ "name": "South Sudan"
+ },
+ "LK": {
+ "name": "Sri Lanka"
+ },
+ "BL": {
+ "name": "St. Bartholomäus-Insla"
+ },
+ "SH": {
+ "name": "St. Helena"
+ },
+ "KN": {
+ "name": "St. Kitts und Nevis"
+ },
+ "LC": {
+ "name": "St. Lucia"
+ },
+ "MF": {
+ "name": "St. Martin"
+ },
+ "PM": {
+ "name": "St. Pierre und Miquelon"
+ },
+ "VC": {
+ "name": "St. Vincent und d’Grenadine"
+ },
+ "ZA": {
+ "name": "Südafrika"
+ },
+ "SD": {
+ "name": "Sudan"
+ },
+ "GS": {
+ "name": "Südgeorgie und d’südliÄe SenwiÄinslä"
+ },
+ "KR": {
+ "name": "Südkorea"
+ },
+ "SY": {
+ "name": "Sürie"
+ },
+ "SR": {
+ "name": "Suriname"
+ },
+ "SJ": {
+ "name": "Svalbard und Jan Mayen"
+ },
+ "SZ": {
+ "name": "Swasiland"
+ },
+ "TJ": {
+ "name": "Tadšikistan"
+ },
+ "TW": {
+ "name": "Taiwan"
+ },
+ "TZ": {
+ "name": "Tansania"
+ },
+ "TH": {
+ "name": "Thailand"
+ },
+ "DE": {
+ "name": "Titšland"
+ },
+ "TG": {
+ "name": "Togo"
+ },
+ "TK": {
+ "name": "Tokelau"
+ },
+ "TO": {
+ "name": "Tonga"
+ },
+ "TT": {
+ "name": "Trinidad und Tobago"
+ },
+ "TA": {
+ "name": "Tristan da Cunha"
+ },
+ "TD": {
+ "name": "TÅ¡ad"
+ },
+ "CZ": {
+ "name": "TÅ¡eÄie"
+ },
+ "CL": {
+ "name": "TÅ¡ile"
+ },
+ "TN": {
+ "name": "Tunesie"
+ },
+ "TR": {
+ "name": "Türkei"
+ },
+ "TM": {
+ "name": "Turkmeništan"
+ },
+ "TC": {
+ "name": "Turks- und Caicosinslä"
+ },
+ "TV": {
+ "name": "Tuvalu"
+ },
+ "UG": {
+ "name": "Uganda"
+ },
+ "UA": {
+ "name": "Ukraine"
+ },
+ "HU": {
+ "name": "Ungare"
+ },
+ "UY": {
+ "name": "Urugauy"
+ },
+ "UZ": {
+ "name": "Usbekištan"
+ },
+ "VU": {
+ "name": "Vanuatu"
+ },
+ "VA": {
+ "name": "Vatikan"
+ },
+ "VE": {
+ "name": "Venezuela"
+ },
+ "AE": {
+ "name": "Vereinigti Arabiše Emirat"
+ },
+ "VN": {
+ "name": "Vietnam"
+ },
+ "WF": {
+ "name": "Wallis und Futuna"
+ },
+ "EH": {
+ "name": "Weštsahara"
+ },
+ "CX": {
+ "name": "WienäÄtsinslä"
+ },
+ "BY": {
+ "name": "Wísrussland"
+ },
+ "CF": {
+ "name": "Zentralafrikaniši Rebublik"
+ },
+ "CY": {
+ "name": "Zypre"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/country/xog.json b/library/intl/resources/country/xog.json
new file mode 100644
index 000000000..d76c8706d
--- /dev/null
+++ b/library/intl/resources/country/xog.json
@@ -0,0 +1,761 @@
+{
+ "AF": {
+ "name": "Afaganisitani"
+ },
+ "AX": {
+ "name": "Ã…land Islands"
+ },
+ "AL": {
+ "name": "Alibaniya"
+ },
+ "DZ": {
+ "name": "Aligerya"
+ },
+ "US": {
+ "name": "Amerika"
+ },
+ "AD": {
+ "name": "Andora"
+ },
+ "AO": {
+ "name": "Angola"
+ },
+ "AI": {
+ "name": "Angwila"
+ },
+ "AQ": {
+ "name": "Antarctica"
+ },
+ "AG": {
+ "name": "Antigwa ni Barabuda"
+ },
+ "AM": {
+ "name": "Arameniya"
+ },
+ "AR": {
+ "name": "Arigentina"
+ },
+ "AW": {
+ "name": "Aruba"
+ },
+ "AC": {
+ "name": "Ascension Island"
+ },
+ "AU": {
+ "name": "Awusitureliya"
+ },
+ "AT": {
+ "name": "Awusituriya"
+ },
+ "IE": {
+ "name": "Ayalandi"
+ },
+ "IS": {
+ "name": "Ayisirandi"
+ },
+ "AZ": {
+ "name": "Azerebayijaani"
+ },
+ "BH": {
+ "name": "Baareeni"
+ },
+ "BS": {
+ "name": "Bahamasi"
+ },
+ "BD": {
+ "name": "Bangaladesi"
+ },
+ "BB": {
+ "name": "Barabadosi"
+ },
+ "BY": {
+ "name": "Belarusi"
+ },
+ "BZ": {
+ "name": "Belize"
+ },
+ "BJ": {
+ "name": "Benini"
+ },
+ "BM": {
+ "name": "Beremuda"
+ },
+ "MH": {
+ "name": "Bizinga bya Mariso"
+ },
+ "MP": {
+ "name": "Bizinga bya Mariyana ebyamumambuka"
+ },
+ "BO": {
+ "name": "Boliviya"
+ },
+ "BW": {
+ "name": "Botiswana"
+ },
+ "BA": {
+ "name": "Boziniya Hezegovina"
+ },
+ "BE": {
+ "name": "Bubirigi"
+ },
+ "DE": {
+ "name": "Budaaki"
+ },
+ "FR": {
+ "name": "Bufalansa"
+ },
+ "BG": {
+ "name": "Bulugariya"
+ },
+ "GB": {
+ "name": "Bungereza"
+ },
+ "BR": {
+ "name": "Buraziiri"
+ },
+ "BF": {
+ "name": "Burukina Faso"
+ },
+ "BN": {
+ "name": "Burunayi"
+ },
+ "BI": {
+ "name": "Burundi"
+ },
+ "BT": {
+ "name": "Butaani"
+ },
+ "IN": {
+ "name": "Buyindi"
+ },
+ "GR": {
+ "name": "Buyonaani"
+ },
+ "TD": {
+ "name": "Caadi"
+ },
+ "IC": {
+ "name": "Canary Islands"
+ },
+ "BQ": {
+ "name": "Caribbean Netherlands"
+ },
+ "CN": {
+ "name": "Cayina"
+ },
+ "EA": {
+ "name": "Ceuta & Melilla"
+ },
+ "CX": {
+ "name": "Christmas Island"
+ },
+ "CL": {
+ "name": "Cile"
+ },
+ "CC": {
+ "name": "Cocos (Keeling) Islands"
+ },
+ "CU": {
+ "name": "Cuba"
+ },
+ "CW": {
+ "name": "Curaçao"
+ },
+ "DK": {
+ "name": "Denimaaka"
+ },
+ "DG": {
+ "name": "Diego Garcia"
+ },
+ "DM": {
+ "name": "Dominika"
+ },
+ "FK": {
+ "name": "Ebiizinga bya Falikalandi"
+ },
+ "SB": {
+ "name": "Ebizanga bya Solomooni"
+ },
+ "IO": {
+ "name": "Ebizinga bya Cago"
+ },
+ "PH": {
+ "name": "Ebizinga bya Firipino"
+ },
+ "KY": {
+ "name": "Ebizinga bya Kayimaani"
+ },
+ "CV": {
+ "name": "Ebizinga bya Kepu Veredi"
+ },
+ "CK": {
+ "name": "Ebizinga bya Kkuki"
+ },
+ "KM": {
+ "name": "Ebizinga bya Komoro"
+ },
+ "MV": {
+ "name": "Ebizinga bya Malidive"
+ },
+ "TC": {
+ "name": "Ebizinga bya Taaka ni Kayikosi"
+ },
+ "VG": {
+ "name": "Ebizinga bya Virigini ebitwalibwa Bungereza"
+ },
+ "VI": {
+ "name": "Ebizinga bya Virigini eby’Amerika"
+ },
+ "EC": {
+ "name": "Ekwado"
+ },
+ "SV": {
+ "name": "El salivado"
+ },
+ "AE": {
+ "name": "Emireeti"
+ },
+ "ER": {
+ "name": "Eritureya"
+ },
+ "EE": {
+ "name": "Esitoniya"
+ },
+ "ET": {
+ "name": "Esyopya"
+ },
+ "FO": {
+ "name": "Faroe Islands"
+ },
+ "FJ": {
+ "name": "Fiji"
+ },
+ "FI": {
+ "name": "Finilandi"
+ },
+ "TF": {
+ "name": "French Southern Territories"
+ },
+ "GA": {
+ "name": "Gaboni"
+ },
+ "GM": {
+ "name": "Gambya"
+ },
+ "GH": {
+ "name": "Gana"
+ },
+ "GY": {
+ "name": "Gayana"
+ },
+ "GQ": {
+ "name": "Gayana yaku ekweta"
+ },
+ "GI": {
+ "name": "Giburalita"
+ },
+ "GN": {
+ "name": "Gini"
+ },
+ "GW": {
+ "name": "Gini-Bisawu"
+ },
+ "GG": {
+ "name": "Guernsey"
+ },
+ "GD": {
+ "name": "Gurenada"
+ },
+ "GL": {
+ "name": "Gurenelandi"
+ },
+ "GF": {
+ "name": "Guyana enfalansa"
+ },
+ "GP": {
+ "name": "Gwadalupe"
+ },
+ "GU": {
+ "name": "Gwamu"
+ },
+ "GT": {
+ "name": "Gwatemala"
+ },
+ "GE": {
+ "name": "Gyogya"
+ },
+ "HU": {
+ "name": "Hangare"
+ },
+ "HT": {
+ "name": "Hayiti"
+ },
+ "NL": {
+ "name": "Holandi"
+ },
+ "HK": {
+ "name": "Hong Kong SAR China"
+ },
+ "HN": {
+ "name": "Hundurasi"
+ },
+ "IM": {
+ "name": "Isle of Man"
+ },
+ "JM": {
+ "name": "Jamayika"
+ },
+ "JP": {
+ "name": "Japani"
+ },
+ "JE": {
+ "name": "Jersey"
+ },
+ "DJ": {
+ "name": "Jjibuti"
+ },
+ "NC": {
+ "name": "Kaledonya mupya"
+ },
+ "KH": {
+ "name": "Kambodya"
+ },
+ "CM": {
+ "name": "Kameruuni"
+ },
+ "CA": {
+ "name": "Kanada"
+ },
+ "QA": {
+ "name": "Kataa"
+ },
+ "KZ": {
+ "name": "Kazakisitaani"
+ },
+ "KE": {
+ "name": "Kenya"
+ },
+ "KI": {
+ "name": "Kiribati"
+ },
+ "KG": {
+ "name": "Kirigizisitaani"
+ },
+ "NF": {
+ "name": "Kizinga ky’eNorofoko"
+ },
+ "CO": {
+ "name": "Kolombya"
+ },
+ "CG": {
+ "name": "Kongo"
+ },
+ "CD": {
+ "name": "Kongo - Zayire"
+ },
+ "KP": {
+ "name": "Koreya eya mumambuka"
+ },
+ "KR": {
+ "name": "Koreya eya mumaserengeta"
+ },
+ "CR": {
+ "name": "Kosita Rika"
+ },
+ "XK": {
+ "name": "Kosovo"
+ },
+ "CI": {
+ "name": "Kote Divwa"
+ },
+ "HR": {
+ "name": "Kurowesya"
+ },
+ "KW": {
+ "name": "Kuweti"
+ },
+ "RU": {
+ "name": "Lasa"
+ },
+ "LV": {
+ "name": "Lativya"
+ },
+ "LA": {
+ "name": "Lawosi"
+ },
+ "LB": {
+ "name": "Lebanoni"
+ },
+ "LS": {
+ "name": "Lesoso"
+ },
+ "RE": {
+ "name": "Leyunyoni"
+ },
+ "LR": {
+ "name": "Liberya"
+ },
+ "LY": {
+ "name": "Libya"
+ },
+ "LI": {
+ "name": "Licitensitayini"
+ },
+ "CZ": {
+ "name": "Lipabulika ya Ceeka"
+ },
+ "DO": {
+ "name": "Lipabulika ya Dominika"
+ },
+ "CF": {
+ "name": "Lipabulika ya Senturafiriki"
+ },
+ "LT": {
+ "name": "Lisuwenya"
+ },
+ "RO": {
+ "name": "Lomaniya"
+ },
+ "LU": {
+ "name": "Lukisembaaga"
+ },
+ "MO": {
+ "name": "Macau SAR China"
+ },
+ "MG": {
+ "name": "Madagasika"
+ },
+ "MW": {
+ "name": "Malawi"
+ },
+ "MY": {
+ "name": "Malezya"
+ },
+ "ML": {
+ "name": "Mali"
+ },
+ "MT": {
+ "name": "Malita"
+ },
+ "MQ": {
+ "name": "Maritiniiki"
+ },
+ "MK": {
+ "name": "Masedoniya"
+ },
+ "MU": {
+ "name": "Mawulisyasi"
+ },
+ "MR": {
+ "name": "Mawulitenya"
+ },
+ "YT": {
+ "name": "Mayotte"
+ },
+ "MX": {
+ "name": "Mekisiko"
+ },
+ "FM": {
+ "name": "Mikuronezya"
+ },
+ "EG": {
+ "name": "Misiri"
+ },
+ "MD": {
+ "name": "Molodova"
+ },
+ "MC": {
+ "name": "Monako"
+ },
+ "MN": {
+ "name": "Mongoliya"
+ },
+ "ME": {
+ "name": "Montenegro"
+ },
+ "MS": {
+ "name": "Monteseraati"
+ },
+ "MA": {
+ "name": "Moroko"
+ },
+ "MZ": {
+ "name": "Mozambiiki"
+ },
+ "MM": {
+ "name": "Myanima"
+ },
+ "NA": {
+ "name": "Namibiya"
+ },
+ "NR": {
+ "name": "Nawuru"
+ },
+ "NG": {
+ "name": "Nayijerya"
+ },
+ "NP": {
+ "name": "Nepalo"
+ },
+ "NE": {
+ "name": "Nije"
+ },
+ "NI": {
+ "name": "Nikaraguwa"
+ },
+ "NU": {
+ "name": "Niyuwe"
+ },
+ "NZ": {
+ "name": "Niyuziirandi"
+ },
+ "NO": {
+ "name": "Nowe"
+ },
+ "OM": {
+ "name": "Omaani"
+ },
+ "PK": {
+ "name": "Pakisitaani"
+ },
+ "PW": {
+ "name": "Palawu"
+ },
+ "PS": {
+ "name": "Palesitayini ni Gaza"
+ },
+ "PA": {
+ "name": "Panama"
+ },
+ "PG": {
+ "name": "Papwa Nyugini"
+ },
+ "PY": {
+ "name": "Paragwayi"
+ },
+ "PE": {
+ "name": "Peru"
+ },
+ "PN": {
+ "name": "Pitikeeni"
+ },
+ "PL": {
+ "name": "Polandi"
+ },
+ "PF": {
+ "name": "Polinesiya enfalansa"
+ },
+ "PR": {
+ "name": "Potoriko"
+ },
+ "PT": {
+ "name": "Potugaali"
+ },
+ "RW": {
+ "name": "Rwanda"
+ },
+ "WS": {
+ "name": "Samowa"
+ },
+ "AS": {
+ "name": "Samowa omumerika"
+ },
+ "SM": {
+ "name": "Sanimarino"
+ },
+ "ST": {
+ "name": "Sanitome ni Purincipe"
+ },
+ "SA": {
+ "name": "Sawudarebya"
+ },
+ "ZA": {
+ "name": "Sawusafirika"
+ },
+ "SN": {
+ "name": "Senegaalo"
+ },
+ "SH": {
+ "name": "Senti Herena"
+ },
+ "KN": {
+ "name": "Senti Kitisi ne Nevisi"
+ },
+ "LC": {
+ "name": "Senti Luciya"
+ },
+ "PM": {
+ "name": "Senti Piyere ni Mikeloni"
+ },
+ "VC": {
+ "name": "Senti Vinsenti ni Gurendadiini"
+ },
+ "RS": {
+ "name": "Serbia"
+ },
+ "SC": {
+ "name": "Sesere"
+ },
+ "SG": {
+ "name": "Singapowa"
+ },
+ "SX": {
+ "name": "Sint Maarten"
+ },
+ "ES": {
+ "name": "Sipeyini"
+ },
+ "CY": {
+ "name": "Sipuriya"
+ },
+ "LK": {
+ "name": "Sirilanka"
+ },
+ "SY": {
+ "name": "Siriya"
+ },
+ "SK": {
+ "name": "Sirovakya"
+ },
+ "SI": {
+ "name": "Sirovenya"
+ },
+ "SL": {
+ "name": "Siyeralewone"
+ },
+ "SO": {
+ "name": "Somaliya"
+ },
+ "GS": {
+ "name": "South Georgia & South Sandwich Islands"
+ },
+ "SS": {
+ "name": "South Sudan"
+ },
+ "BL": {
+ "name": "St. Barthélemy"
+ },
+ "MF": {
+ "name": "St. Martin"
+ },
+ "SD": {
+ "name": "Sudaani"
+ },
+ "SR": {
+ "name": "Surinaamu"
+ },
+ "SJ": {
+ "name": "Svalbard & Jan Mayen"
+ },
+ "SZ": {
+ "name": "Swazirandi"
+ },
+ "SE": {
+ "name": "Swideni"
+ },
+ "CH": {
+ "name": "Switizirandi"
+ },
+ "TJ": {
+ "name": "Tajikisitaani"
+ },
+ "TM": {
+ "name": "Takimenesitaani"
+ },
+ "TZ": {
+ "name": "Tanzania"
+ },
+ "TH": {
+ "name": "Tayirandi"
+ },
+ "TW": {
+ "name": "Tayiwani"
+ },
+ "TL": {
+ "name": "Timowa"
+ },
+ "TG": {
+ "name": "Togo"
+ },
+ "TK": {
+ "name": "Tokelawu"
+ },
+ "TO": {
+ "name": "Tonga"
+ },
+ "TA": {
+ "name": "Tristan da Cunha"
+ },
+ "TR": {
+ "name": "Ttake"
+ },
+ "TN": {
+ "name": "Tunisya"
+ },
+ "TT": {
+ "name": "Turindaadi ni Tobago"
+ },
+ "TV": {
+ "name": "Tuvalu"
+ },
+ "UM": {
+ "name": "U.S. Outlying Islands"
+ },
+ "VU": {
+ "name": "Vanawuwatu"
+ },
+ "VA": {
+ "name": "Vatikaani"
+ },
+ "VE": {
+ "name": "Venzwera"
+ },
+ "VN": {
+ "name": "Vyetinaamu"
+ },
+ "WF": {
+ "name": "Walisi ni Futuna"
+ },
+ "EH": {
+ "name": "Western Sahara"
+ },
+ "UY": {
+ "name": "Wurugwayi"
+ },
+ "UZ": {
+ "name": "Wuzibekisitaani"
+ },
+ "YE": {
+ "name": "Yemeni"
+ },
+ "ID": {
+ "name": "Yindonezya"
+ },
+ "IQ": {
+ "name": "Yiraaka"
+ },
+ "IR": {
+ "name": "Yiraani"
+ },
+ "IL": {
+ "name": "Yisirayeri"
+ },
+ "IT": {
+ "name": "Yitale"
+ },
+ "JO": {
+ "name": "Yorodani"
+ },
+ "UG": {
+ "name": "Yuganda"
+ },
+ "UA": {
+ "name": "Yukurayine"
+ },
+ "ZM": {
+ "name": "Zambya"
+ },
+ "ZW": {
+ "name": "Zimbabwe"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/country/yav.json b/library/intl/resources/country/yav.json
new file mode 100644
index 000000000..c1ef5c1b2
--- /dev/null
+++ b/library/intl/resources/country/yav.json
@@ -0,0 +1,761 @@
+{
+ "ZA": {
+ "name": "afilí mbátÉ›Ì"
+ },
+ "AF": {
+ "name": "Afkanistáŋ"
+ },
+ "AX": {
+ "name": "Ã…land Islands"
+ },
+ "SA": {
+ "name": "alapísawutíit"
+ },
+ "AM": {
+ "name": "Almanía"
+ },
+ "AL": {
+ "name": "Alpaní"
+ },
+ "AR": {
+ "name": "Alsaŋtín"
+ },
+ "DZ": {
+ "name": "Alselí"
+ },
+ "AW": {
+ "name": "Alúpa"
+ },
+ "US": {
+ "name": "amálíka"
+ },
+ "AQ": {
+ "name": "Antarctica"
+ },
+ "AI": {
+ "name": "Aŋkíla"
+ },
+ "AO": {
+ "name": "Aŋkúla"
+ },
+ "AG": {
+ "name": "Aŋtíka na Palpúta"
+ },
+ "AD": {
+ "name": "Aŋtúla"
+ },
+ "AC": {
+ "name": "Ascension Island"
+ },
+ "AZ": {
+ "name": "Asɛlpaisáŋ"
+ },
+ "HT": {
+ "name": "ayíti"
+ },
+ "IC": {
+ "name": "Canary Islands"
+ },
+ "BQ": {
+ "name": "Caribbean Netherlands"
+ },
+ "EA": {
+ "name": "Ceuta & Melilla"
+ },
+ "CX": {
+ "name": "Christmas Island"
+ },
+ "CC": {
+ "name": "Cocos (Keeling) Islands"
+ },
+ "CW": {
+ "name": "Curaçao"
+ },
+ "DG": {
+ "name": "Diego Garcia"
+ },
+ "EC": {
+ "name": "ekuatÉ›Ìl"
+ },
+ "RE": {
+ "name": "elewuniÉ”ÌÅ‹"
+ },
+ "ER": {
+ "name": "elitée"
+ },
+ "ET": {
+ "name": "etiopí"
+ },
+ "IN": {
+ "name": "É›ÌÉ›nd"
+ },
+ "ID": {
+ "name": "ɛndonesí"
+ },
+ "EE": {
+ "name": "ɛstoni"
+ },
+ "VU": {
+ "name": "fanuatú"
+ },
+ "FO": {
+ "name": "Faroe Islands"
+ },
+ "VA": {
+ "name": "fatikáaŋ"
+ },
+ "FR": {
+ "name": "felensí"
+ },
+ "VE": {
+ "name": "fenesuwelá"
+ },
+ "FI": {
+ "name": "fɛnlánd"
+ },
+ "VN": {
+ "name": "fiɛtnáam"
+ },
+ "PH": {
+ "name": "filipíin"
+ },
+ "VG": {
+ "name": "Filisíin ungilís"
+ },
+ "FJ": {
+ "name": "físi"
+ },
+ "TF": {
+ "name": "French Southern Territories"
+ },
+ "GG": {
+ "name": "Guernsey"
+ },
+ "HK": {
+ "name": "Hong Kong SAR China"
+ },
+ "MP": {
+ "name": "il maliyanÉ› u muÉ›nÉ›Ì"
+ },
+ "NF": {
+ "name": "il nÉ”ÌlfÉ”ÌlÉ”k"
+ },
+ "SB": {
+ "name": "il salomÉ”ÌÅ‹"
+ },
+ "IQ": {
+ "name": "ilák"
+ },
+ "IR": {
+ "name": "iláŋ"
+ },
+ "IE": {
+ "name": "ililánd"
+ },
+ "MH": {
+ "name": "ílmalasáal"
+ },
+ "AE": {
+ "name": "imiláat i paaláap"
+ },
+ "GB": {
+ "name": "ingilíís"
+ },
+ "IL": {
+ "name": "ísilayÉ›Ìl"
+ },
+ "EG": {
+ "name": "isípit"
+ },
+ "IS": {
+ "name": "isláand"
+ },
+ "IM": {
+ "name": "Isle of Man"
+ },
+ "IT": {
+ "name": "italí"
+ },
+ "JE": {
+ "name": "Jersey"
+ },
+ "GM": {
+ "name": "kambíi"
+ },
+ "KH": {
+ "name": "Kámbóse"
+ },
+ "GH": {
+ "name": "kaná"
+ },
+ "CA": {
+ "name": "Kánáta"
+ },
+ "CV": {
+ "name": "Kápfɛl"
+ },
+ "GA": {
+ "name": "kapÉ”ÌÅ‹"
+ },
+ "KZ": {
+ "name": "kasaksitáŋ"
+ },
+ "QA": {
+ "name": "katáal"
+ },
+ "KY": {
+ "name": "Káyímanɛ"
+ },
+ "GD": {
+ "name": "kelenáat"
+ },
+ "CM": {
+ "name": "Kemelún"
+ },
+ "KE": {
+ "name": "kénia"
+ },
+ "GN": {
+ "name": "kiiné"
+ },
+ "GW": {
+ "name": "kiinépisaó"
+ },
+ "GR": {
+ "name": "kilÉ›ÌÉ›k"
+ },
+ "KG": {
+ "name": "kilikisistáŋ"
+ },
+ "KI": {
+ "name": "kilipatí"
+ },
+ "GQ": {
+ "name": "kinéekuatolial"
+ },
+ "CZ": {
+ "name": "kitɔŋ kí cÉ›Ìk"
+ },
+ "CD": {
+ "name": "kitɔŋ kí kongó"
+ },
+ "PS": {
+ "name": "kitɔŋ ki palɛstíin"
+ },
+ "DO": {
+ "name": "kitɔŋ kí tumunikÉ›ÌÅ‹"
+ },
+ "HR": {
+ "name": "Kolowasíi"
+ },
+ "CG": {
+ "name": "Kongó"
+ },
+ "XK": {
+ "name": "Kosovo"
+ },
+ "CR": {
+ "name": "Kóstálíka"
+ },
+ "CI": {
+ "name": "Kótifualɛ"
+ },
+ "KW": {
+ "name": "kowéet"
+ },
+ "KP": {
+ "name": "kÉ”lé u muÉ›nÉ›Ì"
+ },
+ "KR": {
+ "name": "kɔlé wu mbát"
+ },
+ "CO": {
+ "name": "KÉ”lÉ”Ìmbía"
+ },
+ "KM": {
+ "name": "KÉ”mÉ”ÌÉ”l"
+ },
+ "IO": {
+ "name": "KɔɔÌm kí ndián yi ngilís"
+ },
+ "GU": {
+ "name": "kuamiÉ›"
+ },
+ "GP": {
+ "name": "kuatelúup"
+ },
+ "GT": {
+ "name": "kuatemalá"
+ },
+ "GL": {
+ "name": "kuluɛnlánd"
+ },
+ "CU": {
+ "name": "kúpa"
+ },
+ "CK": {
+ "name": "Kúuke"
+ },
+ "GY": {
+ "name": "kuyáan"
+ },
+ "GF": {
+ "name": "kuyáan u felensí"
+ },
+ "LA": {
+ "name": "lawós"
+ },
+ "LS": {
+ "name": "lesotó"
+ },
+ "LV": {
+ "name": "letoní"
+ },
+ "LU": {
+ "name": "liksambúul"
+ },
+ "LB": {
+ "name": "lipáŋ"
+ },
+ "LR": {
+ "name": "lipélia"
+ },
+ "LY": {
+ "name": "lipíi"
+ },
+ "LI": {
+ "name": "lístÉ›Ìnsitáyin"
+ },
+ "LT": {
+ "name": "litiyaní"
+ },
+ "MO": {
+ "name": "Macau SAR China"
+ },
+ "MW": {
+ "name": "malawí"
+ },
+ "MY": {
+ "name": "malesí"
+ },
+ "MV": {
+ "name": "maletíif"
+ },
+ "MT": {
+ "name": "málÉ›Ìt"
+ },
+ "ML": {
+ "name": "malí"
+ },
+ "MA": {
+ "name": "malóok"
+ },
+ "MQ": {
+ "name": "maltiníik"
+ },
+ "FK": {
+ "name": "maluwín"
+ },
+ "MK": {
+ "name": "masetuán"
+ },
+ "MG": {
+ "name": "matakaskáal"
+ },
+ "YT": {
+ "name": "mayÉ”ÌÉ”t"
+ },
+ "MX": {
+ "name": "mɛksíik"
+ },
+ "MM": {
+ "name": "miaŋmáal"
+ },
+ "FM": {
+ "name": "mikolonesí"
+ },
+ "MU": {
+ "name": "molís"
+ },
+ "MR": {
+ "name": "molitaní"
+ },
+ "MD": {
+ "name": "moltafí"
+ },
+ "MC": {
+ "name": "monakó"
+ },
+ "MN": {
+ "name": "mongolí"
+ },
+ "ME": {
+ "name": "Montenegro"
+ },
+ "MZ": {
+ "name": "mosambík"
+ },
+ "MS": {
+ "name": "mɔŋsilá"
+ },
+ "NA": {
+ "name": "namipí"
+ },
+ "NR": {
+ "name": "nawulú"
+ },
+ "NP": {
+ "name": "nepáal"
+ },
+ "NI": {
+ "name": "nikalaká"
+ },
+ "NG": {
+ "name": "nisélia"
+ },
+ "NE": {
+ "name": "nisÉ›ÌÉ›l"
+ },
+ "NL": {
+ "name": "nitililáand"
+ },
+ "NU": {
+ "name": "niyuwé"
+ },
+ "NO": {
+ "name": "nÉ”lfÉ›ÌÉ›s"
+ },
+ "DE": {
+ "name": "nsáman"
+ },
+ "NC": {
+ "name": "nufÉ›Ìl kaletoní"
+ },
+ "NZ": {
+ "name": "nufÉ›Ìl seláand"
+ },
+ "OM": {
+ "name": "omáŋ"
+ },
+ "AU": {
+ "name": "Otalalí"
+ },
+ "AT": {
+ "name": "Otilís"
+ },
+ "HN": {
+ "name": "ɔndúlas"
+ },
+ "HU": {
+ "name": "ɔngilí"
+ },
+ "BS": {
+ "name": "Pahámas"
+ },
+ "PK": {
+ "name": "pakistáŋ"
+ },
+ "PY": {
+ "name": "palakúé"
+ },
+ "PW": {
+ "name": "palawú"
+ },
+ "BH": {
+ "name": "Palɛŋ"
+ },
+ "BB": {
+ "name": "Palpatós"
+ },
+ "PA": {
+ "name": "panamá"
+ },
+ "ES": {
+ "name": "panyá"
+ },
+ "BD": {
+ "name": "Paŋkalatɛs"
+ },
+ "PG": {
+ "name": "papuasí nufÉ›Ìl kiiné"
+ },
+ "BY": {
+ "name": "Pelalús"
+ },
+ "BZ": {
+ "name": "Pelíse"
+ },
+ "PE": {
+ "name": "pelú"
+ },
+ "BJ": {
+ "name": "Penɛŋ"
+ },
+ "BM": {
+ "name": "Pɛlmúta"
+ },
+ "BE": {
+ "name": "Pɛlsíik"
+ },
+ "BR": {
+ "name": "Pilesíl"
+ },
+ "VI": {
+ "name": "pindisúlÉ›Ì pi amálíka"
+ },
+ "PN": {
+ "name": "pitikÉ›ÌÉ›línÉ›Ì"
+ },
+ "BO": {
+ "name": "Polífia"
+ },
+ "PF": {
+ "name": "polinesí u felensí"
+ },
+ "PR": {
+ "name": "pólótolíko"
+ },
+ "BW": {
+ "name": "Posuána"
+ },
+ "PL": {
+ "name": "pÉ”lÉ”ÌÉ”ny"
+ },
+ "PT": {
+ "name": "pɔltukáal"
+ },
+ "BF": {
+ "name": "Pulikínafásó"
+ },
+ "BG": {
+ "name": "Pulukalíi"
+ },
+ "BI": {
+ "name": "Púlúndí"
+ },
+ "BN": {
+ "name": "Pulunéy"
+ },
+ "BA": {
+ "name": "Pusiní-ɛlkofína"
+ },
+ "BT": {
+ "name": "Putaŋ"
+ },
+ "ZM": {
+ "name": "saambíi"
+ },
+ "TD": {
+ "name": "Sáat"
+ },
+ "SV": {
+ "name": "salfatÉ”ÌÉ”l"
+ },
+ "JM": {
+ "name": "samayíik"
+ },
+ "WS": {
+ "name": "samowá"
+ },
+ "AS": {
+ "name": "Sámua u Amelíka"
+ },
+ "SM": {
+ "name": "san malíno"
+ },
+ "CF": {
+ "name": "Santalafilíik"
+ },
+ "JP": {
+ "name": "sapÉ”Ìɔŋ"
+ },
+ "ST": {
+ "name": "sáwó tomé e pelensípe"
+ },
+ "SN": {
+ "name": "senekáal"
+ },
+ "RS": {
+ "name": "Serbia"
+ },
+ "SC": {
+ "name": "sesÉ›ÌÉ›l"
+ },
+ "VC": {
+ "name": "sÉ›ÌÅ‹ fɛŋsáŋ elekelenatíin"
+ },
+ "KN": {
+ "name": "sÉ›ÌÅ‹kilistÉ”Ìf eniÉ›Ìf"
+ },
+ "PM": {
+ "name": "sÉ›ÌÅ‹piÉ›Ìl e mikelÉ”ÌÅ‹"
+ },
+ "SH": {
+ "name": "sÉ›ÌÅ‹tÉ›Ì elÉ›ÌÉ›nÉ›"
+ },
+ "LC": {
+ "name": "sÉ›ÌÅ‹tÉ›Ìlusí"
+ },
+ "SL": {
+ "name": "sieláleyÉ”ÌÉ”n"
+ },
+ "CN": {
+ "name": "Síine"
+ },
+ "CL": {
+ "name": "Silí"
+ },
+ "LK": {
+ "name": "silíláŋka"
+ },
+ "SK": {
+ "name": "silofakí"
+ },
+ "SI": {
+ "name": "silofení"
+ },
+ "GI": {
+ "name": "sílpalatáal"
+ },
+ "ZW": {
+ "name": "simbapuwé"
+ },
+ "SG": {
+ "name": "singapúul"
+ },
+ "SX": {
+ "name": "Sint Maarten"
+ },
+ "CY": {
+ "name": "síplɛ"
+ },
+ "DJ": {
+ "name": "síputí"
+ },
+ "SO": {
+ "name": "somalí"
+ },
+ "GS": {
+ "name": "South Georgia & South Sandwich Islands"
+ },
+ "SS": {
+ "name": "South Sudan"
+ },
+ "GE": {
+ "name": "sɔlsíi"
+ },
+ "JO": {
+ "name": "sɔltaní"
+ },
+ "BL": {
+ "name": "St. Barthélemy"
+ },
+ "MF": {
+ "name": "St. Martin"
+ },
+ "SZ": {
+ "name": "suasiláand"
+ },
+ "SE": {
+ "name": "suÉ›Ìt"
+ },
+ "SR": {
+ "name": "sulináam"
+ },
+ "SD": {
+ "name": "sutáaŋ"
+ },
+ "CH": {
+ "name": "suwíis"
+ },
+ "SJ": {
+ "name": "Svalbard & Jan Mayen"
+ },
+ "SY": {
+ "name": "Syria"
+ },
+ "DK": {
+ "name": "tanemálk"
+ },
+ "TZ": {
+ "name": "taŋsaní"
+ },
+ "TJ": {
+ "name": "tasikistáaŋ"
+ },
+ "TH": {
+ "name": "tayiláand"
+ },
+ "TW": {
+ "name": "tayiwáan"
+ },
+ "TT": {
+ "name": "tilinitáat na tupákɔ"
+ },
+ "TL": {
+ "name": "timÉ”ÌÉ”l u nipálÉ›Ìn"
+ },
+ "TK": {
+ "name": "tokeló"
+ },
+ "TG": {
+ "name": "tokó"
+ },
+ "TO": {
+ "name": "tÉ”ÌÅ‹ka"
+ },
+ "TA": {
+ "name": "Tristan da Cunha"
+ },
+ "TV": {
+ "name": "tufalú"
+ },
+ "TC": {
+ "name": "túluk na káyiik"
+ },
+ "TR": {
+ "name": "tulukíi"
+ },
+ "TM": {
+ "name": "tulukmenisitáaŋ"
+ },
+ "DM": {
+ "name": "túmúnéke"
+ },
+ "TN": {
+ "name": "tunusí"
+ },
+ "UM": {
+ "name": "U.S. Outlying Islands"
+ },
+ "UG": {
+ "name": "ukánda"
+ },
+ "UA": {
+ "name": "ukilÉ›ÌÉ›n"
+ },
+ "RW": {
+ "name": "uluándá"
+ },
+ "UY": {
+ "name": "ulukuéy"
+ },
+ "RO": {
+ "name": "ulumaní"
+ },
+ "RU": {
+ "name": "ulusí"
+ },
+ "UZ": {
+ "name": "usupekistáaŋ"
+ },
+ "WF": {
+ "name": "walíis na futúna"
+ },
+ "EH": {
+ "name": "Western Sahara"
+ },
+ "YE": {
+ "name": "yémɛn"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/country/yo-BJ.json b/library/intl/resources/country/yo-BJ.json
new file mode 100644
index 000000000..c37ec283b
--- /dev/null
+++ b/library/intl/resources/country/yo-BJ.json
@@ -0,0 +1,761 @@
+{
+ "AX": {
+ "name": "Ã…land Islands"
+ },
+ "AQ": {
+ "name": "Antarctica"
+ },
+ "AC": {
+ "name": "Ascension Island"
+ },
+ "IC": {
+ "name": "Canary Islands"
+ },
+ "BQ": {
+ "name": "Caribbean Netherlands"
+ },
+ "EA": {
+ "name": "Ceuta & Melilla"
+ },
+ "CX": {
+ "name": "Christmas Island"
+ },
+ "CC": {
+ "name": "Cocos (Keeling) Islands"
+ },
+ "CW": {
+ "name": "Curaçao"
+ },
+ "DG": {
+ "name": "Diego Garcia"
+ },
+ "FO": {
+ "name": "Faroe Islands"
+ },
+ "TF": {
+ "name": "French Southern Territories"
+ },
+ "GG": {
+ "name": "Guernsey"
+ },
+ "SS": {
+ "name": "Gúúsù Sudan"
+ },
+ "HK": {
+ "name": "Hong Kong SAR China"
+ },
+ "IM": {
+ "name": "Isle of Man"
+ },
+ "JE": {
+ "name": "Jersey"
+ },
+ "XK": {
+ "name": "Kosovo"
+ },
+ "MO": {
+ "name": "Macau SAR China"
+ },
+ "ME": {
+ "name": "Montenegro"
+ },
+ "AD": {
+ "name": "OrílÉ›Ìède Ààndórà"
+ },
+ "AO": {
+ "name": "OrílÉ›Ìède Ààngólà"
+ },
+ "AI": {
+ "name": "OrílÉ›Ìède Ààngúlílà"
+ },
+ "AG": {
+ "name": "OrílÉ›Ìède Ààntígúà àti Báríbúdà"
+ },
+ "AF": {
+ "name": "OrílÉ›Ìède Àfùgànístánì"
+ },
+ "AR": {
+ "name": "OrílÉ›Ìède Agentínà"
+ },
+ "IE": {
+ "name": "OrílÉ›Ìède Ailandi"
+ },
+ "AL": {
+ "name": "OrílÉ›Ìède Àlùbàníánì"
+ },
+ "DZ": {
+ "name": "OrílÉ›Ìède Àlùgèríánì"
+ },
+ "AM": {
+ "name": "OrílÉ›Ìède Améníà"
+ },
+ "CF": {
+ "name": "OrílÉ›Ìède Àrin gùngun Ãfíríkà"
+ },
+ "ZA": {
+ "name": "OrílÉ›Ìède Ariwa Afirika"
+ },
+ "KR": {
+ "name": "OrílÉ›Ìède Ariwa KÉ”ria"
+ },
+ "AW": {
+ "name": "OrílÉ›Ìède Ãrúbà"
+ },
+ "AZ": {
+ "name": "OrílÉ›Ìède AsÉ›Ìbájánì"
+ },
+ "IS": {
+ "name": "OrílÉ›Ìède Ashilandi"
+ },
+ "AT": {
+ "name": "OrílÉ›Ìède Asítíríà"
+ },
+ "AU": {
+ "name": "OrílÉ›Ìède Ãstràlìá"
+ },
+ "BB": {
+ "name": "OrílÉ›Ìède Bábádósì"
+ },
+ "BS": {
+ "name": "OrílÉ›Ìède Bàhámásì"
+ },
+ "BD": {
+ "name": "OrílÉ›Ìède Bángáládésì"
+ },
+ "BH": {
+ "name": "OrílÉ›Ìède Báránì"
+ },
+ "BR": {
+ "name": "OrílÉ›Ìède Bàràsílì"
+ },
+ "BE": {
+ "name": "OrílÉ›Ìède BégíɔÌmù"
+ },
+ "BY": {
+ "name": "OrílÉ›Ìède Bélárúsì"
+ },
+ "BZ": {
+ "name": "OrílÉ›Ìède Bèlísɛ̀"
+ },
+ "BM": {
+ "name": "OrílÉ›Ìède Bémúdà"
+ },
+ "BJ": {
+ "name": "OrílÉ›Ìède Bɛ̀nɛ̀"
+ },
+ "BO": {
+ "name": "OrílÉ›Ìède Bɔ̀lífíyà"
+ },
+ "BA": {
+ "name": "OrílÉ›Ìède Bɔ̀síníà àti ÆtisÉ›gófínà"
+ },
+ "BW": {
+ "name": "OrílÉ›Ìède Bɔ̀tìsúwánà"
+ },
+ "BN": {
+ "name": "OrílÉ›Ìède BúrúnÉ›Ìlì"
+ },
+ "BT": {
+ "name": "OrílÉ›Ìède Bútánì"
+ },
+ "BG": {
+ "name": "OrílÉ›Ìède Bùùgáríà"
+ },
+ "BF": {
+ "name": "OrílÉ›Ìède Bùùkíná Fasò"
+ },
+ "BI": {
+ "name": "OrílÉ›Ìède Bùùrúndì"
+ },
+ "DK": {
+ "name": "OrílÉ›Ìède DÉ›Ìmákì"
+ },
+ "DJ": {
+ "name": "OrílÉ›Ìède DíbÉ”Ìótì"
+ },
+ "DM": {
+ "name": "OrílÉ›Ìède Dòmíníkà"
+ },
+ "DO": {
+ "name": "OrilÉ›Ìède Dòmíníkánì"
+ },
+ "EG": {
+ "name": "OrílÉ›Ìède Égípítì"
+ },
+ "EC": {
+ "name": "OrílÉ›Ìède Ekuádò"
+ },
+ "GQ": {
+ "name": "OrílÉ›Ìède Ekutoria Gini"
+ },
+ "ER": {
+ "name": "OrílÉ›Ìède Eritira"
+ },
+ "EE": {
+ "name": "OrílÉ›Ìède Esitonia"
+ },
+ "VI": {
+ "name": "OrílÉ›Ìède Etikun Fagini ti AmÉ›rika"
+ },
+ "VG": {
+ "name": "OrílÉ›Ìède Etíkun Fágínì ti ìlú Bírítísì"
+ },
+ "FK": {
+ "name": "OrílÉ›Ìède Etikun Fakalandi"
+ },
+ "MP": {
+ "name": "OrílÉ›Ìède Etikun Guusu Mariana"
+ },
+ "IO": {
+ "name": "OrílÉ›Ìède Etíkun Ãndíánì ti ÃŒlú Bírítísì"
+ },
+ "MH": {
+ "name": "OrílÉ›Ìède Etikun Máshali"
+ },
+ "NF": {
+ "name": "OrílÉ›Ìède Etikun NÉ”Ìúfókì"
+ },
+ "SB": {
+ "name": "OrílÉ›Ìède Etikun Solomoni"
+ },
+ "KY": {
+ "name": "OrílÉ›Ìède Etíokun Kámánì"
+ },
+ "CV": {
+ "name": "OrílÉ›Ìède Etíokun Kápé féndè"
+ },
+ "CK": {
+ "name": "OrílÉ›Ìède Etíokun Kùúkù"
+ },
+ "ET": {
+ "name": "OrílÉ›Ìède Etopia"
+ },
+ "SV": {
+ "name": "OrílÉ›Ìède ÆÉ›sáfádò"
+ },
+ "AE": {
+ "name": "OrílÉ›Ìède Æmirate ti AwÉ”n Arabu"
+ },
+ "VU": {
+ "name": "OrílÉ›Ìède Faniatu"
+ },
+ "FR": {
+ "name": "OrílÉ›Ìède Faranse"
+ },
+ "VA": {
+ "name": "OrílÉ›Ìède Fatikani"
+ },
+ "VE": {
+ "name": "OrílÉ›Ìède FÉ›nÉ›shuÉ›la"
+ },
+ "VN": {
+ "name": "OrílÉ›Ìède FÉ›tinami"
+ },
+ "FJ": {
+ "name": "OrílÉ›Ìède Fiji"
+ },
+ "FI": {
+ "name": "OrílÉ›Ìède Filandi"
+ },
+ "PH": {
+ "name": "OrílÉ›Ìède filipini"
+ },
+ "GF": {
+ "name": "OrílÉ›Ìède Firenshi Guana"
+ },
+ "PF": {
+ "name": "OrílÉ›Ìède Firenshi Polinesia"
+ },
+ "VC": {
+ "name": "OrílÉ›Ìède FisÉ›nnti ati Genadina"
+ },
+ "GA": {
+ "name": "OrílÉ›Ìède Gabon"
+ },
+ "GP": {
+ "name": "OrílÉ›Ìède Gadelope"
+ },
+ "GM": {
+ "name": "OrílÉ›Ìède Gambia"
+ },
+ "GH": {
+ "name": "OrílÉ›Ìède Gana"
+ },
+ "DE": {
+ "name": "OrílÉ›Ìède Gemani"
+ },
+ "GD": {
+ "name": "OrílÉ›Ìède Genada"
+ },
+ "GN": {
+ "name": "OrílÉ›Ìède Gene"
+ },
+ "GW": {
+ "name": "OrílÉ›Ìède Gene-Busau"
+ },
+ "GL": {
+ "name": "OrílÉ›Ìède Gerelandi"
+ },
+ "GR": {
+ "name": "OrílÉ›Ìède Geriisi"
+ },
+ "GI": {
+ "name": "OrílÉ›Ìède Gibaratara"
+ },
+ "GE": {
+ "name": "OrílÉ›Ìède GÉ”gia"
+ },
+ "GU": {
+ "name": "OrílÉ›Ìède Guamu"
+ },
+ "GT": {
+ "name": "OrílÉ›Ìède Guatemala"
+ },
+ "KP": {
+ "name": "OrílÉ›Ìède Guusu KÉ”ria"
+ },
+ "GY": {
+ "name": "OrílÉ›Ìède Guyana"
+ },
+ "HT": {
+ "name": "OrílÉ›Ìède Haati"
+ },
+ "SH": {
+ "name": "OrílÉ›Ìède HÉ›lena"
+ },
+ "HN": {
+ "name": "OrílÉ›Ìède Hondurasi"
+ },
+ "HU": {
+ "name": "OrílÉ›Ìède Hungari"
+ },
+ "TL": {
+ "name": "OrílÉ›Ìède ÃŒlàOòrùn Tímɔ̀"
+ },
+ "IN": {
+ "name": "OrílÉ›Ìède India"
+ },
+ "ID": {
+ "name": "OrílÉ›Ìède Indonesia"
+ },
+ "IQ": {
+ "name": "OrílÉ›Ìède Iraki"
+ },
+ "IR": {
+ "name": "OrílÉ›Ìède Irani"
+ },
+ "IL": {
+ "name": "OrílÉ›Ìède IserÉ›li"
+ },
+ "IT": {
+ "name": "OrílÉ›Ìède Italiyi"
+ },
+ "PS": {
+ "name": "OrílÉ›Ìède IwÉ”orun Pakisitian ati Gasha"
+ },
+ "JM": {
+ "name": "OrílÉ›Ìède Jamaika"
+ },
+ "JP": {
+ "name": "OrílÉ›Ìède Japani"
+ },
+ "JO": {
+ "name": "OrílÉ›Ìède JÉ”dani"
+ },
+ "NC": {
+ "name": "OrílÉ›Ìède Kaledonia Titun"
+ },
+ "CM": {
+ "name": "OrílÉ›Ìède Kamerúúnì"
+ },
+ "KH": {
+ "name": "OrílÉ›Ìède Kàmùbódíà"
+ },
+ "CA": {
+ "name": "OrílÉ›Ìède Kánádà"
+ },
+ "KZ": {
+ "name": "OrílÉ›Ìède Kashashatani"
+ },
+ "KE": {
+ "name": "OrílÉ›Ìède Kenya"
+ },
+ "KN": {
+ "name": "OrílÉ›Ìède Kiiti ati Neefi"
+ },
+ "KI": {
+ "name": "OrílÉ›Ìède Kiribati"
+ },
+ "CO": {
+ "name": "OrílÉ›Ìède Kòlómíbìa"
+ },
+ "KM": {
+ "name": "OrílÉ›Ìède Kòmòrósì"
+ },
+ "CD": {
+ "name": "OrilÉ›Ìède Kóngò"
+ },
+ "CG": {
+ "name": "OrílÉ›Ìède Kóngò"
+ },
+ "HR": {
+ "name": "OrílÉ›Ìède Kòróátíà"
+ },
+ "QA": {
+ "name": "OrílÉ›Ìède Kota"
+ },
+ "CI": {
+ "name": "OrílÉ›Ìède Kóútè forà"
+ },
+ "CU": {
+ "name": "OrílÉ›Ìède Kúbà"
+ },
+ "KG": {
+ "name": "OrílÉ›Ìède Kurishisitani"
+ },
+ "CY": {
+ "name": "OrílÉ›Ìède Kúrúsì"
+ },
+ "CR": {
+ "name": "OrílÉ›Ìède Kuusita Ríkà"
+ },
+ "KW": {
+ "name": "OrílÉ›Ìède Kuweti"
+ },
+ "LR": {
+ "name": "OrílÉ›Ìède Laberia"
+ },
+ "LA": {
+ "name": "OrílÉ›Ìède Laosi"
+ },
+ "LV": {
+ "name": "OrílÉ›Ìède Latifia"
+ },
+ "LB": {
+ "name": "OrílÉ›Ìède Lebanoni"
+ },
+ "LS": {
+ "name": "OrílÉ›Ìède Lesoto"
+ },
+ "LI": {
+ "name": "OrílÉ›Ìède LÉ›shitÉ›nisiteni"
+ },
+ "LY": {
+ "name": "OrílÉ›Ìède Libiya"
+ },
+ "LT": {
+ "name": "OrílÉ›Ìède Lituania"
+ },
+ "LU": {
+ "name": "OrílÉ›Ìède Lusemogi"
+ },
+ "LC": {
+ "name": "OrílÉ›Ìède Lushia"
+ },
+ "MG": {
+ "name": "OrílÉ›Ìède Madasika"
+ },
+ "FM": {
+ "name": "OrílÉ›Ìède Makoronesia"
+ },
+ "MV": {
+ "name": "OrílÉ›Ìède Maladifi"
+ },
+ "MY": {
+ "name": "OrílÉ›Ìède Malasia"
+ },
+ "MT": {
+ "name": "OrílÉ›Ìède Malata"
+ },
+ "MW": {
+ "name": "OrílÉ›Ìède Malawi"
+ },
+ "ML": {
+ "name": "OrílÉ›Ìède Mali"
+ },
+ "MM": {
+ "name": "OrílÉ›Ìède Manamari"
+ },
+ "MR": {
+ "name": "OrílÉ›Ìède Maritania"
+ },
+ "MU": {
+ "name": "OrílÉ›Ìède Maritiusi"
+ },
+ "MK": {
+ "name": "OrílÉ›Ìède Masidonia"
+ },
+ "MQ": {
+ "name": "OrílÉ›Ìède Matinikuwi"
+ },
+ "YT": {
+ "name": "OrílÉ›Ìède Mayote"
+ },
+ "MX": {
+ "name": "OrílÉ›Ìède Mesiko"
+ },
+ "MD": {
+ "name": "OrílÉ›Ìède Modofia"
+ },
+ "MN": {
+ "name": "OrílÉ›Ìède Mogolia"
+ },
+ "MC": {
+ "name": "OrílÉ›Ìède Monako"
+ },
+ "MA": {
+ "name": "OrílÉ›Ìède Moroko"
+ },
+ "MZ": {
+ "name": "OrílÉ›Ìède Moshamibiku"
+ },
+ "MS": {
+ "name": "OrílÉ›Ìède Motserati"
+ },
+ "NE": {
+ "name": "OrílÉ›Ìède Nàìjá"
+ },
+ "NG": {
+ "name": "OrílÉ›Ìède Nàìjíríà"
+ },
+ "NA": {
+ "name": "OrílÉ›Ìède Namibia"
+ },
+ "NR": {
+ "name": "OrílÉ›Ìède Nauru"
+ },
+ "NL": {
+ "name": "OrílÉ›Ìède Nedalandi"
+ },
+ "NP": {
+ "name": "OrílÉ›Ìède Nepa"
+ },
+ "NI": {
+ "name": "OrílÉ›Ìède NIkaragua"
+ },
+ "NU": {
+ "name": "OrílÉ›Ìède Niue"
+ },
+ "NO": {
+ "name": "OrílÉ›Ìède Nɔɔwii"
+ },
+ "UY": {
+ "name": "OrílÉ›Ìède Nruguayi"
+ },
+ "UZ": {
+ "name": "OrílÉ›Ìède NshibÉ›kisitani"
+ },
+ "GB": {
+ "name": "OrílÉ›Ìède Omobabirin"
+ },
+ "US": {
+ "name": "OrílÉ›Ìède OrilÉ›ede Amerika"
+ },
+ "OM": {
+ "name": "OrílÉ›Ìède Ɔɔma"
+ },
+ "PW": {
+ "name": "OrílÉ›Ìède Paalu"
+ },
+ "PG": {
+ "name": "OrílÉ›Ìède Paapu ti Giini"
+ },
+ "PK": {
+ "name": "OrílÉ›Ìède Pakisitan"
+ },
+ "PA": {
+ "name": "OrílÉ›Ìède Panama"
+ },
+ "PY": {
+ "name": "OrílÉ›Ìède Paraguye"
+ },
+ "PE": {
+ "name": "OrílÉ›Ìède Peru"
+ },
+ "PM": {
+ "name": "OrílÉ›Ìède Pɛɛri ati mikuloni"
+ },
+ "PN": {
+ "name": "OrílÉ›Ìède Pikarini"
+ },
+ "PL": {
+ "name": "OrílÉ›Ìède Polandi"
+ },
+ "PR": {
+ "name": "OrílÉ›Ìède PÉ”to Riko"
+ },
+ "PT": {
+ "name": "OrílÉ›Ìède PÉ”tugi"
+ },
+ "RE": {
+ "name": "OrílÉ›Ìède Riuniyan"
+ },
+ "RO": {
+ "name": "OrílÉ›Ìède Romaniya"
+ },
+ "RU": {
+ "name": "OrílÉ›Ìède RÉ”shia"
+ },
+ "RW": {
+ "name": "OrílÉ›Ìède Ruwanda"
+ },
+ "WS": {
+ "name": "OrílÉ›Ìède SamÉ”"
+ },
+ "SM": {
+ "name": "OrílÉ›Ìède Sani Marino"
+ },
+ "ST": {
+ "name": "OrílÉ›Ìède Sao tomi ati piriishipi"
+ },
+ "SZ": {
+ "name": "OrílÉ›Ìède Sashiland"
+ },
+ "SA": {
+ "name": "OrílÉ›Ìède Saudi Arabia"
+ },
+ "SC": {
+ "name": "OrílÉ›Ìède seshÉ›lÉ›si"
+ },
+ "SN": {
+ "name": "OrílÉ›Ìède SÉ›nÉ›ga"
+ },
+ "TD": {
+ "name": "OrílÉ›Ìède shààdì"
+ },
+ "CN": {
+ "name": "OrílÉ›Ìède sháínà"
+ },
+ "ZM": {
+ "name": "OrílÉ›Ìède shamibia"
+ },
+ "CZ": {
+ "name": "OrílÉ›Ìède shÉ›ÌÉ›Ìkì"
+ },
+ "NZ": {
+ "name": "OrílÉ›Ìède shilandi Titun"
+ },
+ "CL": {
+ "name": "OrílÉ›Ìède shílè"
+ },
+ "ZW": {
+ "name": "OrílÉ›Ìède shimibabe"
+ },
+ "SK": {
+ "name": "OrílÉ›Ìède Silofakia"
+ },
+ "SI": {
+ "name": "OrílÉ›Ìède Silofania"
+ },
+ "SG": {
+ "name": "OrílÉ›Ìède Singapo"
+ },
+ "ES": {
+ "name": "OrílÉ›Ìède Sipani"
+ },
+ "LK": {
+ "name": "OrílÉ›Ìède Siri Lanka"
+ },
+ "SY": {
+ "name": "OrílÉ›Ìède Siria"
+ },
+ "SL": {
+ "name": "OrílÉ›Ìède Siria looni"
+ },
+ "SO": {
+ "name": "OrílÉ›Ìède Somalia"
+ },
+ "SD": {
+ "name": "OrílÉ›Ìède Sudani"
+ },
+ "SR": {
+ "name": "OrílÉ›Ìède Surinami"
+ },
+ "SE": {
+ "name": "OrílÉ›Ìède Swidini"
+ },
+ "CH": {
+ "name": "OrílÉ›Ìède switishilandi"
+ },
+ "TH": {
+ "name": "OrílÉ›Ìède Tailandi"
+ },
+ "TW": {
+ "name": "OrílÉ›Ìède Taiwani"
+ },
+ "TJ": {
+ "name": "OrílÉ›Ìède Takisitani"
+ },
+ "TZ": {
+ "name": "OrílÉ›Ìède Tanshania"
+ },
+ "TT": {
+ "name": "OrílÉ›Ìède Tirinida ati Tobaga"
+ },
+ "TG": {
+ "name": "OrílÉ›Ìède Togo"
+ },
+ "TK": {
+ "name": "OrílÉ›Ìède Tokelau"
+ },
+ "TO": {
+ "name": "OrílÉ›Ìède Tonga"
+ },
+ "TR": {
+ "name": "OrílÉ›Ìède Tɔɔki"
+ },
+ "TC": {
+ "name": "OrílÉ›Ìède Tɔɔki ati Etikun KakÉ”si"
+ },
+ "TM": {
+ "name": "OrílÉ›Ìède Tɔɔkimenisita"
+ },
+ "TV": {
+ "name": "OrílÉ›Ìède Tufalu"
+ },
+ "TN": {
+ "name": "OrílÉ›Ìède Tunishia"
+ },
+ "UG": {
+ "name": "OrílÉ›Ìède Uganda"
+ },
+ "UA": {
+ "name": "OrílÉ›Ìède Ukarini"
+ },
+ "WF": {
+ "name": "OrílÉ›Ìède Wali ati futuna"
+ },
+ "YE": {
+ "name": "OrílÉ›Ìède yemeni"
+ },
+ "AS": {
+ "name": "Sámóánì ti OrílÉ›Ìède Àméríkà"
+ },
+ "RS": {
+ "name": "Serbia"
+ },
+ "SX": {
+ "name": "Sint Maarten"
+ },
+ "GS": {
+ "name": "South Georgia & South Sandwich Islands"
+ },
+ "BL": {
+ "name": "St. Barthélemy"
+ },
+ "MF": {
+ "name": "St. Martin"
+ },
+ "SJ": {
+ "name": "Svalbard & Jan Mayen"
+ },
+ "TA": {
+ "name": "Tristan da Cunha"
+ },
+ "UM": {
+ "name": "U.S. Outlying Islands"
+ },
+ "EH": {
+ "name": "Western Sahara"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/country/yo.json b/library/intl/resources/country/yo.json
new file mode 100644
index 000000000..561b81669
--- /dev/null
+++ b/library/intl/resources/country/yo.json
@@ -0,0 +1,761 @@
+{
+ "AX": {
+ "name": "Ã…land Islands"
+ },
+ "AQ": {
+ "name": "Antarctica"
+ },
+ "AC": {
+ "name": "Ascension Island"
+ },
+ "IC": {
+ "name": "Canary Islands"
+ },
+ "BQ": {
+ "name": "Caribbean Netherlands"
+ },
+ "EA": {
+ "name": "Ceuta & Melilla"
+ },
+ "CX": {
+ "name": "Christmas Island"
+ },
+ "CC": {
+ "name": "Cocos (Keeling) Islands"
+ },
+ "CW": {
+ "name": "Curaçao"
+ },
+ "DG": {
+ "name": "Diego Garcia"
+ },
+ "FO": {
+ "name": "Faroe Islands"
+ },
+ "TF": {
+ "name": "French Southern Territories"
+ },
+ "GG": {
+ "name": "Guernsey"
+ },
+ "SS": {
+ "name": "Gúúsù Sudan"
+ },
+ "HK": {
+ "name": "Hong Kong SAR China"
+ },
+ "IM": {
+ "name": "Isle of Man"
+ },
+ "JE": {
+ "name": "Jersey"
+ },
+ "XK": {
+ "name": "Kosovo"
+ },
+ "MO": {
+ "name": "Macau SAR China"
+ },
+ "ME": {
+ "name": "Montenegro"
+ },
+ "AD": {
+ "name": "OrílẹÌède Ààndórà"
+ },
+ "AO": {
+ "name": "OrílẹÌède Ààngólà"
+ },
+ "AI": {
+ "name": "OrílẹÌède Ààngúlílà"
+ },
+ "AG": {
+ "name": "OrílẹÌède Ààntígúà àti Báríbúdà"
+ },
+ "AF": {
+ "name": "OrílẹÌède Àfùgànístánì"
+ },
+ "AR": {
+ "name": "OrílẹÌède Agentínà"
+ },
+ "IE": {
+ "name": "OrílẹÌède Ailandi"
+ },
+ "AL": {
+ "name": "OrílẹÌède Àlùbàníánì"
+ },
+ "DZ": {
+ "name": "OrílẹÌède Àlùgèríánì"
+ },
+ "AM": {
+ "name": "OrílẹÌède Améníà"
+ },
+ "CF": {
+ "name": "OrílẹÌède Àrin gùngun Ãfíríkà"
+ },
+ "ZA": {
+ "name": "OrílẹÌède Ariwa Afirika"
+ },
+ "KR": {
+ "name": "OrílẹÌède Ariwa Ká»ria"
+ },
+ "AW": {
+ "name": "OrílẹÌède Ãrúbà"
+ },
+ "AZ": {
+ "name": "OrílẹÌède AsẹÌbájánì"
+ },
+ "AT": {
+ "name": "OrílẹÌède Asítíríà"
+ },
+ "AU": {
+ "name": "OrílẹÌède Ãstràlìá"
+ },
+ "IS": {
+ "name": "OrílẹÌède Aá¹£ilandi"
+ },
+ "BB": {
+ "name": "OrílẹÌède Bábádósì"
+ },
+ "BS": {
+ "name": "OrílẹÌède Bàhámásì"
+ },
+ "BD": {
+ "name": "OrílẹÌède Bángáládésì"
+ },
+ "BH": {
+ "name": "OrílẹÌède Báránì"
+ },
+ "BR": {
+ "name": "OrílẹÌède Bàràsílì"
+ },
+ "BE": {
+ "name": "OrílẹÌède Bégíá»Ìmù"
+ },
+ "BY": {
+ "name": "OrílẹÌède Bélárúsì"
+ },
+ "BZ": {
+ "name": "OrílẹÌède Bèlísẹ̀"
+ },
+ "BM": {
+ "name": "OrílẹÌède Bémúdà"
+ },
+ "BJ": {
+ "name": "OrílẹÌède Bẹ̀nẹ̀"
+ },
+ "BO": {
+ "name": "OrílẹÌède Bá»Ì€lífíyà"
+ },
+ "BA": {
+ "name": "OrílẹÌède Bá»Ì€síníà àti Ẹtisẹgófínà"
+ },
+ "BW": {
+ "name": "OrílẹÌède Bá»Ì€tìsúwánà"
+ },
+ "BN": {
+ "name": "OrílẹÌède BúrúnẹÌlì"
+ },
+ "BT": {
+ "name": "OrílẹÌède Bútánì"
+ },
+ "BG": {
+ "name": "OrílẹÌède Bùùgáríà"
+ },
+ "BF": {
+ "name": "OrílẹÌède Bùùkíná Fasò"
+ },
+ "BI": {
+ "name": "OrílẹÌède Bùùrúndì"
+ },
+ "DK": {
+ "name": "OrílẹÌède DẹÌmákì"
+ },
+ "DJ": {
+ "name": "OrílẹÌède Díbá»Ìótì"
+ },
+ "DM": {
+ "name": "OrílẹÌède Dòmíníkà"
+ },
+ "DO": {
+ "name": "OrilẹÌède Dòmíníkánì"
+ },
+ "EG": {
+ "name": "OrílẹÌède Égípítì"
+ },
+ "EC": {
+ "name": "OrílẹÌède Ekuádò"
+ },
+ "GQ": {
+ "name": "OrílẹÌède Ekutoria Gini"
+ },
+ "ER": {
+ "name": "OrílẹÌède Eritira"
+ },
+ "EE": {
+ "name": "OrílẹÌède Esitonia"
+ },
+ "VI": {
+ "name": "OrílẹÌède Etikun Fagini ti Amẹrika"
+ },
+ "VG": {
+ "name": "OrílẹÌède Etíkun Fágínì ti ìlú Bírítísì"
+ },
+ "FK": {
+ "name": "OrílẹÌède Etikun Fakalandi"
+ },
+ "MP": {
+ "name": "OrílẹÌède Etikun Guusu Mariana"
+ },
+ "IO": {
+ "name": "OrílẹÌède Etíkun Ãndíánì ti ÃŒlú Bírítísì"
+ },
+ "MH": {
+ "name": "OrílẹÌède Etikun Máṣali"
+ },
+ "NF": {
+ "name": "OrílẹÌède Etikun Ná»Ìúfókì"
+ },
+ "SB": {
+ "name": "OrílẹÌède Etikun Solomoni"
+ },
+ "KY": {
+ "name": "OrílẹÌède Etíokun Kámánì"
+ },
+ "CV": {
+ "name": "OrílẹÌède Etíokun Kápé féndè"
+ },
+ "CK": {
+ "name": "OrílẹÌède Etíokun Kùúkù"
+ },
+ "ET": {
+ "name": "OrílẹÌède Etopia"
+ },
+ "SV": {
+ "name": "OrílẹÌède Ẹẹsáfádò"
+ },
+ "AE": {
+ "name": "OrílẹÌède Ẹmirate ti Awá»n Arabu"
+ },
+ "VU": {
+ "name": "OrílẹÌède Faniatu"
+ },
+ "FR": {
+ "name": "OrílẹÌède Faranse"
+ },
+ "VA": {
+ "name": "OrílẹÌède Fatikani"
+ },
+ "VE": {
+ "name": "OrílẹÌède Fẹnẹṣuẹla"
+ },
+ "VN": {
+ "name": "OrílẹÌède Fẹtinami"
+ },
+ "FJ": {
+ "name": "OrílẹÌède Fiji"
+ },
+ "FI": {
+ "name": "OrílẹÌède Filandi"
+ },
+ "PH": {
+ "name": "OrílẹÌède filipini"
+ },
+ "GF": {
+ "name": "OrílẹÌède Firená¹£i Guana"
+ },
+ "PF": {
+ "name": "OrílẹÌède Firená¹£i Polinesia"
+ },
+ "VC": {
+ "name": "OrílẹÌède Fisẹnnti ati Genadina"
+ },
+ "GA": {
+ "name": "OrílẹÌède Gabon"
+ },
+ "GP": {
+ "name": "OrílẹÌède Gadelope"
+ },
+ "GM": {
+ "name": "OrílẹÌède Gambia"
+ },
+ "GH": {
+ "name": "OrílẹÌède Gana"
+ },
+ "DE": {
+ "name": "OrílẹÌède Gemani"
+ },
+ "GD": {
+ "name": "OrílẹÌède Genada"
+ },
+ "GN": {
+ "name": "OrílẹÌède Gene"
+ },
+ "GW": {
+ "name": "OrílẹÌède Gene-Busau"
+ },
+ "GL": {
+ "name": "OrílẹÌède Gerelandi"
+ },
+ "GR": {
+ "name": "OrílẹÌède Geriisi"
+ },
+ "GI": {
+ "name": "OrílẹÌède Gibaratara"
+ },
+ "GE": {
+ "name": "OrílẹÌède Gá»gia"
+ },
+ "GU": {
+ "name": "OrílẹÌède Guamu"
+ },
+ "GT": {
+ "name": "OrílẹÌède Guatemala"
+ },
+ "KP": {
+ "name": "OrílẹÌède Guusu Ká»ria"
+ },
+ "GY": {
+ "name": "OrílẹÌède Guyana"
+ },
+ "HT": {
+ "name": "OrílẹÌède Haati"
+ },
+ "SH": {
+ "name": "OrílẹÌède Hẹlena"
+ },
+ "HN": {
+ "name": "OrílẹÌède Hondurasi"
+ },
+ "HU": {
+ "name": "OrílẹÌède Hungari"
+ },
+ "TL": {
+ "name": "OrílẹÌède ÃŒlàOòrùn Tímá»Ì€"
+ },
+ "IN": {
+ "name": "OrílẹÌède India"
+ },
+ "ID": {
+ "name": "OrílẹÌède Indonesia"
+ },
+ "IQ": {
+ "name": "OrílẹÌède Iraki"
+ },
+ "IR": {
+ "name": "OrílẹÌède Irani"
+ },
+ "IL": {
+ "name": "OrílẹÌède Iserẹli"
+ },
+ "IT": {
+ "name": "OrílẹÌède Italiyi"
+ },
+ "PS": {
+ "name": "OrílẹÌède Iwá»orun Pakisitian ati Gaá¹£a"
+ },
+ "JM": {
+ "name": "OrílẹÌède Jamaika"
+ },
+ "JP": {
+ "name": "OrílẹÌède Japani"
+ },
+ "JO": {
+ "name": "OrílẹÌède Já»dani"
+ },
+ "NC": {
+ "name": "OrílẹÌède Kaledonia Titun"
+ },
+ "CM": {
+ "name": "OrílẹÌède Kamerúúnì"
+ },
+ "KH": {
+ "name": "OrílẹÌède Kàmùbódíà"
+ },
+ "CA": {
+ "name": "OrílẹÌède Kánádà"
+ },
+ "KZ": {
+ "name": "OrílẹÌède Kaá¹£aá¹£atani"
+ },
+ "KE": {
+ "name": "OrílẹÌède Kenya"
+ },
+ "KN": {
+ "name": "OrílẹÌède Kiiti ati Neefi"
+ },
+ "KI": {
+ "name": "OrílẹÌède Kiribati"
+ },
+ "CO": {
+ "name": "OrílẹÌède Kòlómíbìa"
+ },
+ "KM": {
+ "name": "OrílẹÌède Kòmòrósì"
+ },
+ "CD": {
+ "name": "OrilẹÌède Kóngò"
+ },
+ "CG": {
+ "name": "OrílẹÌède Kóngò"
+ },
+ "HR": {
+ "name": "OrílẹÌède Kòróátíà"
+ },
+ "QA": {
+ "name": "OrílẹÌède Kota"
+ },
+ "CI": {
+ "name": "OrílẹÌède Kóútè forà"
+ },
+ "CU": {
+ "name": "OrílẹÌède Kúbà"
+ },
+ "KG": {
+ "name": "OrílẹÌède Kuriá¹£isitani"
+ },
+ "CY": {
+ "name": "OrílẹÌède Kúrúsì"
+ },
+ "CR": {
+ "name": "OrílẹÌède Kuusita Ríkà"
+ },
+ "KW": {
+ "name": "OrílẹÌède Kuweti"
+ },
+ "LR": {
+ "name": "OrílẹÌède Laberia"
+ },
+ "LA": {
+ "name": "OrílẹÌède Laosi"
+ },
+ "LV": {
+ "name": "OrílẹÌède Latifia"
+ },
+ "LB": {
+ "name": "OrílẹÌède Lebanoni"
+ },
+ "LS": {
+ "name": "OrílẹÌède Lesoto"
+ },
+ "LI": {
+ "name": "OrílẹÌède Lẹṣitẹnisiteni"
+ },
+ "LY": {
+ "name": "OrílẹÌède Libiya"
+ },
+ "LT": {
+ "name": "OrílẹÌède Lituania"
+ },
+ "LU": {
+ "name": "OrílẹÌède Lusemogi"
+ },
+ "LC": {
+ "name": "OrílẹÌède Luá¹£ia"
+ },
+ "MG": {
+ "name": "OrílẹÌède Madasika"
+ },
+ "FM": {
+ "name": "OrílẹÌède Makoronesia"
+ },
+ "MV": {
+ "name": "OrílẹÌède Maladifi"
+ },
+ "MY": {
+ "name": "OrílẹÌède Malasia"
+ },
+ "MT": {
+ "name": "OrílẹÌède Malata"
+ },
+ "MW": {
+ "name": "OrílẹÌède Malawi"
+ },
+ "ML": {
+ "name": "OrílẹÌède Mali"
+ },
+ "MM": {
+ "name": "OrílẹÌède Manamari"
+ },
+ "MR": {
+ "name": "OrílẹÌède Maritania"
+ },
+ "MU": {
+ "name": "OrílẹÌède Maritiusi"
+ },
+ "MK": {
+ "name": "OrílẹÌède Masidonia"
+ },
+ "MQ": {
+ "name": "OrílẹÌède Matinikuwi"
+ },
+ "YT": {
+ "name": "OrílẹÌède Mayote"
+ },
+ "MX": {
+ "name": "OrílẹÌède Mesiko"
+ },
+ "MD": {
+ "name": "OrílẹÌède Modofia"
+ },
+ "MN": {
+ "name": "OrílẹÌède Mogolia"
+ },
+ "MC": {
+ "name": "OrílẹÌède Monako"
+ },
+ "MA": {
+ "name": "OrílẹÌède Moroko"
+ },
+ "MZ": {
+ "name": "OrílẹÌède Moá¹£amibiku"
+ },
+ "MS": {
+ "name": "OrílẹÌède Motserati"
+ },
+ "NE": {
+ "name": "OrílẹÌède Nàìjá"
+ },
+ "NG": {
+ "name": "OrílẹÌède Nàìjíríà"
+ },
+ "NA": {
+ "name": "OrílẹÌède Namibia"
+ },
+ "NR": {
+ "name": "OrílẹÌède Nauru"
+ },
+ "NL": {
+ "name": "OrílẹÌède Nedalandi"
+ },
+ "NP": {
+ "name": "OrílẹÌède Nepa"
+ },
+ "NI": {
+ "name": "OrílẹÌède NIkaragua"
+ },
+ "NU": {
+ "name": "OrílẹÌède Niue"
+ },
+ "NO": {
+ "name": "OrílẹÌède Ná»á»wii"
+ },
+ "UY": {
+ "name": "OrílẹÌède Nruguayi"
+ },
+ "UZ": {
+ "name": "OrílẹÌède Ná¹£ibẹkisitani"
+ },
+ "GB": {
+ "name": "OrílẹÌède Omobabirin"
+ },
+ "US": {
+ "name": "OrílẹÌède Orilẹede Amerika"
+ },
+ "OM": {
+ "name": "OrílẹÌède Ọá»ma"
+ },
+ "PW": {
+ "name": "OrílẹÌède Paalu"
+ },
+ "PG": {
+ "name": "OrílẹÌède Paapu ti Giini"
+ },
+ "PK": {
+ "name": "OrílẹÌède Pakisitan"
+ },
+ "PA": {
+ "name": "OrílẹÌède Panama"
+ },
+ "PY": {
+ "name": "OrílẹÌède Paraguye"
+ },
+ "PE": {
+ "name": "OrílẹÌède Peru"
+ },
+ "PM": {
+ "name": "OrílẹÌède Pẹẹri ati mikuloni"
+ },
+ "PN": {
+ "name": "OrílẹÌède Pikarini"
+ },
+ "PL": {
+ "name": "OrílẹÌède Polandi"
+ },
+ "PR": {
+ "name": "OrílẹÌède Pá»to Riko"
+ },
+ "PT": {
+ "name": "OrílẹÌède Pá»tugi"
+ },
+ "RE": {
+ "name": "OrílẹÌède Riuniyan"
+ },
+ "RO": {
+ "name": "OrílẹÌède Romaniya"
+ },
+ "RU": {
+ "name": "OrílẹÌède Rá»á¹£ia"
+ },
+ "RW": {
+ "name": "OrílẹÌède Ruwanda"
+ },
+ "WS": {
+ "name": "OrílẹÌède Samá»"
+ },
+ "SM": {
+ "name": "OrílẹÌède Sani Marino"
+ },
+ "ST": {
+ "name": "OrílẹÌède Sao tomi ati piriiá¹£ipi"
+ },
+ "SZ": {
+ "name": "OrílẹÌède Saá¹£iland"
+ },
+ "SA": {
+ "name": "OrílẹÌède Saudi Arabia"
+ },
+ "SC": {
+ "name": "OrílẹÌède seṣẹlẹsi"
+ },
+ "SN": {
+ "name": "OrílẹÌède Sẹnẹga"
+ },
+ "SK": {
+ "name": "OrílẹÌède Silofakia"
+ },
+ "SI": {
+ "name": "OrílẹÌède Silofania"
+ },
+ "SG": {
+ "name": "OrílẹÌède Singapo"
+ },
+ "ES": {
+ "name": "OrílẹÌède Sipani"
+ },
+ "LK": {
+ "name": "OrílẹÌède Siri Lanka"
+ },
+ "SY": {
+ "name": "OrílẹÌède Siria"
+ },
+ "SL": {
+ "name": "OrílẹÌède Siria looni"
+ },
+ "SO": {
+ "name": "OrílẹÌède Somalia"
+ },
+ "SD": {
+ "name": "OrílẹÌède Sudani"
+ },
+ "SR": {
+ "name": "OrílẹÌède Surinami"
+ },
+ "SE": {
+ "name": "OrílẹÌède Swidini"
+ },
+ "CH": {
+ "name": "OrílẹÌède switiá¹£ilandi"
+ },
+ "TD": {
+ "name": "OrílẹÌède ṣààdì"
+ },
+ "CN": {
+ "name": "OrílẹÌède ṣáínà"
+ },
+ "ZM": {
+ "name": "OrílẹÌède á¹£amibia"
+ },
+ "CZ": {
+ "name": "OrílẹÌède ṣẹÌẹÌkì"
+ },
+ "NZ": {
+ "name": "OrílẹÌède á¹£ilandi Titun"
+ },
+ "CL": {
+ "name": "OrílẹÌède ṣílè"
+ },
+ "ZW": {
+ "name": "OrílẹÌède á¹£imibabe"
+ },
+ "TH": {
+ "name": "OrílẹÌède Tailandi"
+ },
+ "TW": {
+ "name": "OrílẹÌède Taiwani"
+ },
+ "TJ": {
+ "name": "OrílẹÌède Takisitani"
+ },
+ "TZ": {
+ "name": "OrílẹÌède Taná¹£ania"
+ },
+ "TT": {
+ "name": "OrílẹÌède Tirinida ati Tobaga"
+ },
+ "TG": {
+ "name": "OrílẹÌède Togo"
+ },
+ "TK": {
+ "name": "OrílẹÌède Tokelau"
+ },
+ "TO": {
+ "name": "OrílẹÌède Tonga"
+ },
+ "TR": {
+ "name": "OrílẹÌède Tá»á»ki"
+ },
+ "TC": {
+ "name": "OrílẹÌède Tá»á»ki ati Etikun Kaká»si"
+ },
+ "TM": {
+ "name": "OrílẹÌède Tá»á»kimenisita"
+ },
+ "TV": {
+ "name": "OrílẹÌède Tufalu"
+ },
+ "TN": {
+ "name": "OrílẹÌède Tuniá¹£ia"
+ },
+ "UG": {
+ "name": "OrílẹÌède Uganda"
+ },
+ "UA": {
+ "name": "OrílẹÌède Ukarini"
+ },
+ "WF": {
+ "name": "OrílẹÌède Wali ati futuna"
+ },
+ "YE": {
+ "name": "OrílẹÌède yemeni"
+ },
+ "AS": {
+ "name": "Sámóánì ti OrílẹÌède Àméríkà"
+ },
+ "RS": {
+ "name": "Serbia"
+ },
+ "SX": {
+ "name": "Sint Maarten"
+ },
+ "GS": {
+ "name": "South Georgia & South Sandwich Islands"
+ },
+ "BL": {
+ "name": "St. Barthélemy"
+ },
+ "MF": {
+ "name": "St. Martin"
+ },
+ "SJ": {
+ "name": "Svalbard & Jan Mayen"
+ },
+ "TA": {
+ "name": "Tristan da Cunha"
+ },
+ "UM": {
+ "name": "U.S. Outlying Islands"
+ },
+ "EH": {
+ "name": "Western Sahara"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/country/zgh.json b/library/intl/resources/country/zgh.json
new file mode 100644
index 000000000..9aa27f8b5
--- /dev/null
+++ b/library/intl/resources/country/zgh.json
@@ -0,0 +1,761 @@
+{
+ "AX": {
+ "name": "Ã…land Islands"
+ },
+ "AQ": {
+ "name": "Antarctica"
+ },
+ "AC": {
+ "name": "Ascension Island"
+ },
+ "IC": {
+ "name": "Canary Islands"
+ },
+ "BQ": {
+ "name": "Caribbean Netherlands"
+ },
+ "EA": {
+ "name": "Ceuta & Melilla"
+ },
+ "CX": {
+ "name": "Christmas Island"
+ },
+ "CC": {
+ "name": "Cocos (Keeling) Islands"
+ },
+ "CW": {
+ "name": "Curaçao"
+ },
+ "DG": {
+ "name": "Diego Garcia"
+ },
+ "FO": {
+ "name": "Faroe Islands"
+ },
+ "TF": {
+ "name": "French Southern Territories"
+ },
+ "GG": {
+ "name": "Guernsey"
+ },
+ "HK": {
+ "name": "Hong Kong SAR China"
+ },
+ "IM": {
+ "name": "Isle of Man"
+ },
+ "JE": {
+ "name": "Jersey"
+ },
+ "XK": {
+ "name": "Kosovo"
+ },
+ "MO": {
+ "name": "Macau SAR China"
+ },
+ "SX": {
+ "name": "Sint Maarten"
+ },
+ "GS": {
+ "name": "South Georgia & South Sandwich Islands"
+ },
+ "BL": {
+ "name": "St. Barthélemy"
+ },
+ "MF": {
+ "name": "St. Martin"
+ },
+ "SJ": {
+ "name": "Svalbard & Jan Mayen"
+ },
+ "TA": {
+ "name": "Tristan da Cunha"
+ },
+ "UM": {
+ "name": "U.S. Outlying Islands"
+ },
+ "EH": {
+ "name": "Western Sahara"
+ },
+ "PS": {
+ "name": "ⴰⴳⵎⵎⴰⴹ ⵠⵜⴰⴳⵓⵜ ⴷ ⵖⵣⵣⴰ"
+ },
+ "AZ": {
+ "name": "ⴰⴷⵔⴰⴱⵉⵊⴰâµ"
+ },
+ "GI": {
+ "name": "ⴰⴷⵔⴰⵔ ⵠⵟⴰⵕⵉⵇ"
+ },
+ "ZA": {
+ "name": "ⴰⴼⵔⵉⵇⵢⴰ ⵠⵉⴼⴼⵓⵙ"
+ },
+ "AF": {
+ "name": "ⴰⴼⵖⴰâµâµ‰âµ™âµœâ´°âµ"
+ },
+ "AL": {
+ "name": "â´°âµâ´±â´°âµâµ¢â´°"
+ },
+ "DE": {
+ "name": "â´°âµâµŽâ´°âµâµ¢â´°"
+ },
+ "AI": {
+ "name": "â´°âµâ´³âµ‰âµâ´°"
+ },
+ "AO": {
+ "name": "â´°âµâ´³âµ“âµâ´°"
+ },
+ "ID": {
+ "name": "â´°âµâ´·âµ“âµâµ‰âµ™âµ¢â´°"
+ },
+ "AD": {
+ "name": "â´°âµâ´·âµ“ⵔⴰ"
+ },
+ "AG": {
+ "name": "â´°âµâµœâµ‰â´³â´° â´· ⴱⵔⴱⵓⴷⴰ"
+ },
+ "AR": {
+ "name": "ⴰⵔⵊⴰâµâµœâµ‰âµ"
+ },
+ "AM": {
+ "name": "ⴰⵔⵎⵉâµâµ¢â´°"
+ },
+ "AW": {
+ "name": "ⴰⵔⵓⴱⴰ"
+ },
+ "VA": {
+ "name": "ⴰⵡⴰâµâ´½ ⵠⴼⴰⵜⵉⴽⴰâµ"
+ },
+ "PG": {
+ "name": "ⴱⴰⴱⵡⴰ ⵖⵉâµâµ¢â´° ⵜⴰⵎⴰⵢâµâµ“ⵜ"
+ },
+ "PK": {
+ "name": "ⴱⴰⴽⵉⵙⵜⴰâµ"
+ },
+ "BS": {
+ "name": "ⴱⴰⵀⴰⵎⴰⵙ"
+ },
+ "PW": {
+ "name": "ⴱⴰâµâ´°âµ¡"
+ },
+ "PA": {
+ "name": "ⴱⴰâµâ´°âµŽâ´°"
+ },
+ "BD": {
+ "name": "ⴱⴰâµâ´³âµâ´°â´·âµ‰âµ›"
+ },
+ "PY": {
+ "name": "ⴱⴰⵔⴰⴳⵡⴰⵢ"
+ },
+ "BB": {
+ "name": "ⴱⴰⵔⴱⴰⴷ"
+ },
+ "BT": {
+ "name": "ⴱⵀⵓⵜⴰâµ"
+ },
+ "BH": {
+ "name": "ⴱⵃⵔⴰⵢâµ"
+ },
+ "BY": {
+ "name": "ⴱⵉâµâ´°âµ”ⵓⵙⵢⴰ"
+ },
+ "BZ": {
+ "name": "ⴱⵉâµâµ‰âµ£"
+ },
+ "BJ": {
+ "name": "ⴱⵉâµâµ‰âµ"
+ },
+ "PE": {
+ "name": "ⴱⵉⵔⵓ"
+ },
+ "PN": {
+ "name": "ⴱⵉⵜⴽⴰⵢⵔâµ"
+ },
+ "BE": {
+ "name": "â´±âµâµŠâµ‰â´½â´°"
+ },
+ "BG": {
+ "name": "â´±âµâµ–ⴰⵔⵢⴰ"
+ },
+ "BO": {
+ "name": "ⴱⵓâµâµ‰â´±âµ¢â´°"
+ },
+ "PF": {
+ "name": "ⴱⵓâµâµ‰âµâµ‰âµ£âµ¢â´° ⵜⴰⴼⵔⴰâµâµ™âµ‰âµ™âµœ"
+ },
+ "PL": {
+ "name": "ⴱⵓâµâµ“âµâµ¢â´°"
+ },
+ "BF": {
+ "name": "ⴱⵓⵔⴽⵉâµâ´° ⴼⴰⵙⵓ"
+ },
+ "BI": {
+ "name": "ⴱⵓⵔⵓâµâ´·âµ‰"
+ },
+ "PR": {
+ "name": "ⴱⵓⵔⵜⵓ ⵔⵉⴽⵓ"
+ },
+ "BA": {
+ "name": "ⴱⵓⵙâµâ´° â´· ⵀⵉⵔⵙⵉⴽ"
+ },
+ "BW": {
+ "name": "ⴱⵓⵜⵙⵡⴰâµâ´°"
+ },
+ "BR": {
+ "name": "ⴱⵔⴰⵣⵉâµ"
+ },
+ "BM": {
+ "name": "ⴱⵔⵎⵓⴷⴰ"
+ },
+ "BN": {
+ "name": "ⴱⵔⵓâµâµ‰"
+ },
+ "PT": {
+ "name": "ⴱⵕⵟⵇⵉⵣ"
+ },
+ "GA": {
+ "name": "ⴳⴰⴱⵓâµ"
+ },
+ "GM": {
+ "name": "ⴳⴰⵎⴱⵢⴰ"
+ },
+ "GL": {
+ "name": "ⴳⵔⵉâµâ´°âµâ´·"
+ },
+ "GP": {
+ "name": "ⴳⵡⴰⴷⴰâµâµ“â´±"
+ },
+ "GU": {
+ "name": "ⴳⵡⴰⵎ"
+ },
+ "GT": {
+ "name": "ⴳⵡⴰⵜⵉⵎⴰâµâ´°"
+ },
+ "GF": {
+ "name": "ⴳⵡⵉⵢⴰⵠⵜⴰⴼⵔⴰâµâµ™âµ‰âµ™âµœ"
+ },
+ "GY": {
+ "name": "ⴳⵡⵉⵢⴰâµâ´°"
+ },
+ "DK": {
+ "name": "â´·â´°âµâµŽâ´°âµ”â´½"
+ },
+ "DJ": {
+ "name": "ⴷⵊⵉⴱⵓⵜⵉ"
+ },
+ "DM": {
+ "name": "ⴷⵓⵎⵉâµâµ‰â´½"
+ },
+ "DZ": {
+ "name": "ⴷⵣⴰⵢⵔ"
+ },
+ "VU": {
+ "name": "ⴼⴰâµâµ¡â´°âµŸâµ“"
+ },
+ "FJ": {
+ "name": "ⴼⵉⴷⵊⵉ"
+ },
+ "PH": {
+ "name": "ⴼⵉâµâµ‰â´±â´±âµ‰âµ"
+ },
+ "FI": {
+ "name": "ⴼⵉâµâµâ´°âµâ´·â´°"
+ },
+ "VE": {
+ "name": "ⴼⵉâµâµ£âµ¡âµ‰âµâ´°"
+ },
+ "VN": {
+ "name": "ⴼⵉⵜâµâ´°âµŽ"
+ },
+ "FR": {
+ "name": "ⴼⵔⴰâµâµ™â´°"
+ },
+ "NC": {
+ "name": "ⴽⴰâµâµ‰â´·âµ“âµâµ¢â´° ⵜⴰⵎⴰⵢâµâµ“ⵜ"
+ },
+ "KH": {
+ "name": "ⴽⴰⵎⴱⵓⴷⵢⴰ"
+ },
+ "CM": {
+ "name": "ⴽⴰⵎⵉⵔⵓâµ"
+ },
+ "CA": {
+ "name": "ⴽⴰâµâ´°â´·â´°"
+ },
+ "KZ": {
+ "name": "ⴽⴰⵣⴰⵅⵙⵜⴰâµ"
+ },
+ "KE": {
+ "name": "ⴽⵉâµâµ¢â´°"
+ },
+ "KI": {
+ "name": "ⴽⵉⵔⵉⴱⴰⵜⵉ"
+ },
+ "KG": {
+ "name": "ⴽⵉⵔⵖⵉⵣⵉⵙⵜⴰâµ"
+ },
+ "CU": {
+ "name": "ⴽⵓⴱⴰ"
+ },
+ "CO": {
+ "name": "ⴽⵓâµâµ“ⵎⴱⵢⴰ"
+ },
+ "CG": {
+ "name": "ⴽⵓâµâ´³âµ“"
+ },
+ "KR": {
+ "name": "ⴽⵓⵔⵢⴰ ⵠⵉⴼⴼⵓⵙ"
+ },
+ "KP": {
+ "name": "ⴽⵓⵔⵢⴰ ⵠⵉⵥⵥâµâµŽâ´¹"
+ },
+ "CR": {
+ "name": "ⴽⵓⵙⵜⴰ ⵔⵉⴽⴰ"
+ },
+ "CI": {
+ "name": "ⴽⵓⵜ ⴷⵉⴼⵡⴰⵔ"
+ },
+ "HR": {
+ "name": "ⴽⵔⵡⴰⵜⵢⴰ"
+ },
+ "HT": {
+ "name": "ⵀⴰⵢⵜⵉ"
+ },
+ "HU": {
+ "name": "âµ€âµâµ–ⴰⵔⵢⴰ"
+ },
+ "NL": {
+ "name": "ⵀⵓâµâ´°âµâ´·â´°"
+ },
+ "HN": {
+ "name": "ⵀⵓâµâ´·âµ“ⵔⴰⵙ"
+ },
+ "OM": {
+ "name": "ⵄⵓⵎⴰâµ"
+ },
+ "QA": {
+ "name": "ⵇⴰⵜⴰⵔ"
+ },
+ "CY": {
+ "name": "ⵇⵓⴱⵔⵓⵙ"
+ },
+ "KM": {
+ "name": "ⵇⵓⵎⵓⵔ"
+ },
+ "EC": {
+ "name": "ⵉⴽⵡⴰⴷⵓⵔ"
+ },
+ "IR": {
+ "name": "ⵉⵔⴰâµ"
+ },
+ "ER": {
+ "name": "ⵉⵔⵉⵜⵉⵔⵢⴰ"
+ },
+ "IE": {
+ "name": "ⵉⵔâµâ´°âµâ´·â´°"
+ },
+ "IS": {
+ "name": "ⵉⵙâµâ´°âµâ´·"
+ },
+ "IL": {
+ "name": "ⵉⵙⵔⴰⵢⵉâµ"
+ },
+ "EE": {
+ "name": "ⵉⵙⵜⵓâµâµ¢â´°"
+ },
+ "ET": {
+ "name": "ⵉⵜⵢⵓⴱⵢⴰ"
+ },
+ "IT": {
+ "name": "ⵉⵟⴰâµâµ¢â´°"
+ },
+ "US": {
+ "name": "ⵉⵡⵓâµâ´°â´½ ⵎⵓâµâµâµ‰âµ ⵠⵎⵉⵔⵉⴽⴰâµ"
+ },
+ "JM": {
+ "name": "ⵊⴰⵎⴰⵢⴽⴰ"
+ },
+ "GE": {
+ "name": "ⵊⵓⵔⵊⵢⴰ"
+ },
+ "LV": {
+ "name": "âµâ´°âµœâ´¼âµ¢â´°"
+ },
+ "LA": {
+ "name": "âµâ´°âµ¡âµ™"
+ },
+ "KW": {
+ "name": "âµâ´½âµ¡âµ‰âµœ"
+ },
+ "IN": {
+ "name": "âµâµ€âµ‰âµâ´·"
+ },
+ "IQ": {
+ "name": "âµâµ„ⵉⵔⴰⵇ"
+ },
+ "LR": {
+ "name": "âµâµ‰â´±âµ‰âµ”ⵢⴰ"
+ },
+ "LY": {
+ "name": "âµâµ‰â´±âµ¢â´°"
+ },
+ "LI": {
+ "name": "âµâµ‰â´½âµ‰âµâµ›âµœâ´°âµ¢âµ"
+ },
+ "AE": {
+ "name": "âµâµ‰âµŽâ´°âµ”ⴰⵜ"
+ },
+ "LS": {
+ "name": "âµâµ‰âµšâµ“ⵟⵓ"
+ },
+ "LT": {
+ "name": "âµâµ‰âµœâµ¡â´°âµâµ¢â´°"
+ },
+ "MA": {
+ "name": "âµâµŽâµ–ⵔⵉⴱ"
+ },
+ "LB": {
+ "name": "âµâµ“â´±âµâ´°âµ"
+ },
+ "LU": {
+ "name": "âµâµ“ⴽⵙⴰâµâ´±âµ“ⵔⴳ"
+ },
+ "JO": {
+ "name": "âµâµ“ⵔⴷⵓâµ"
+ },
+ "JP": {
+ "name": "âµâµ¢â´°â´±â´°âµ"
+ },
+ "GR": {
+ "name": "âµâµ¢âµ“âµâ´°âµ"
+ },
+ "MG": {
+ "name": "ⵎⴰⴷⴰⵖⴰⵛⵇⴰⵔ"
+ },
+ "MW": {
+ "name": "ⵎⴰâµâ´°âµ¡âµ‰"
+ },
+ "MV": {
+ "name": "ⵎⴰâµâ´·âµ‰â´¼"
+ },
+ "ML": {
+ "name": "ⵎⴰâµâµ‰"
+ },
+ "MY": {
+ "name": "ⵎⴰâµâµ‰âµ£âµ¢â´°"
+ },
+ "MT": {
+ "name": "ⵎⴰâµâµŸâ´°"
+ },
+ "MQ": {
+ "name": "ⵎⴰⵔⵜⵉâµâµ‰â´½"
+ },
+ "MK": {
+ "name": "ⵎⴰⵙⵉⴷⵓâµâµ¢â´°"
+ },
+ "YT": {
+ "name": "ⵎⴰⵢⵓⵟ"
+ },
+ "FM": {
+ "name": "ⵎⵉⴽⵔⵓâµâµ‰âµ£âµ¢â´°"
+ },
+ "MX": {
+ "name": "ⵎⵉⴽⵙⵉⴽ"
+ },
+ "EG": {
+ "name": "ⵎⵉⵚⵕ"
+ },
+ "MN": {
+ "name": "ⵎâµâµ–ⵓâµâµ¢â´°"
+ },
+ "MD": {
+ "name": "ⵎⵓâµâ´·âµ“ⴼⵢⴰ"
+ },
+ "MC": {
+ "name": "ⵎⵓâµâ´°â´½âµ“"
+ },
+ "MS": {
+ "name": "ⵎⵓâµâµ™âµ‰âµ”ⴰⵜ"
+ },
+ "ME": {
+ "name": "ⵎⵓâµâµœâµ‰âµâµ‰â´³âµ”ⵓ"
+ },
+ "MU": {
+ "name": "ⵎⵓⵔⵉⵙ"
+ },
+ "MR": {
+ "name": "ⵎⵓⵕⵉⵟⴰâµâµ¢â´°"
+ },
+ "MZ": {
+ "name": "ⵎⵓⵣâµâ´±âµ‰âµ‡"
+ },
+ "MM": {
+ "name": "ⵎⵢⴰâµâµŽâ´°âµ”"
+ },
+ "NA": {
+ "name": "âµâ´°âµŽâµ‰â´±âµ¢â´°"
+ },
+ "NR": {
+ "name": "âµâ´°âµ¡âµ”ⵓ"
+ },
+ "NP": {
+ "name": "âµâµ‰â´±â´°âµ"
+ },
+ "NI": {
+ "name": "âµâµ‰â´½â´°âµ”ⴰⴳⵡⴰ"
+ },
+ "NG": {
+ "name": "âµâµ‰âµŠâµ‰âµ”ⵢⴰ"
+ },
+ "NU": {
+ "name": "âµâµ‰âµ¡âµ‰"
+ },
+ "NE": {
+ "name": "âµâµâµ‰âµŠâµ‰âµ”"
+ },
+ "AT": {
+ "name": "âµâµâµŽâµ™â´°"
+ },
+ "NO": {
+ "name": "âµâµâµ”ⵡⵉⵊ"
+ },
+ "NZ": {
+ "name": "âµâµ¢âµ“ⵣⵉâµâ´°âµâ´·â´°"
+ },
+ "UA": {
+ "name": "ⵓⴽⵔⴰâµâµ¢â´°"
+ },
+ "UY": {
+ "name": "ⵓⵔⵓⴳⵡⴰⵢ"
+ },
+ "UG": {
+ "name": "ⵓⵖⴰâµâ´·â´°"
+ },
+ "AU": {
+ "name": "ⵓⵙⵜⵔⴰâµâµ¢â´°"
+ },
+ "UZ": {
+ "name": "ⵓⵣⴱⴰⴽⵉⵙⵜⴰâµ"
+ },
+ "RE": {
+ "name": "ⵔⵉⵢⵓâµâµ¢âµ“âµ"
+ },
+ "RO": {
+ "name": "ⵔⵓⵎⴰâµâµ¢â´°"
+ },
+ "RU": {
+ "name": "ⵔⵓⵙⵢⴰ"
+ },
+ "RW": {
+ "name": "ⵔⵡⴰâµâ´·â´°"
+ },
+ "GH": {
+ "name": "âµ–â´°âµâ´°"
+ },
+ "GN": {
+ "name": "ⵖⵉâµâµ¢â´°"
+ },
+ "GW": {
+ "name": "ⵖⵉâµâµ¢â´° ⴱⵉⵙⴰⵡ"
+ },
+ "GQ": {
+ "name": "ⵖⵉâµâµ¢â´° ⵠⵉⴽⵡⴰⴷⵓⵔ"
+ },
+ "GD": {
+ "name": "âµ–âµ”âµâ´°âµŸâ´°"
+ },
+ "SV": {
+ "name": "ⵙⴰâµâ´¼â´°â´·âµ“âµ”"
+ },
+ "WS": {
+ "name": "ⵙⴰⵎⵡⴰ"
+ },
+ "AS": {
+ "name": "ⵙⴰⵎⵡⴰ ⵜⴰⵎⵉⵔⵉⴽⴰâµâµ‰âµœ"
+ },
+ "PM": {
+ "name": "ⵙⴰâµâ´±âµ¢âµ‰âµ” â´· ⵎⵉⴽâµâµ“âµ"
+ },
+ "VC": {
+ "name": "ⵙⴰâµâ´¼â´°âµâµ™â´°âµ â´· ⴳⵔⵉâµâ´°â´·âµ‰âµ"
+ },
+ "KN": {
+ "name": "ⵙⴰâµâ´½âµ”ⵉⵙ â´· âµâµ‰â´¼âµ‰âµ™"
+ },
+ "SM": {
+ "name": "ⵙⴰâµâµŽâ´°âµ”ⵉâµâµ“"
+ },
+ "SH": {
+ "name": "ⵙⴰâµâµœâµ‰âµâµ‰âµ"
+ },
+ "LC": {
+ "name": "ⵙⴰâµâµœâµâµ“ⵙⵉ"
+ },
+ "ST": {
+ "name": "ⵙⴰⵡⵟⵓⵎⵉ â´· ⴱⵔⴰâµâµ™âµ‰â´±"
+ },
+ "ES": {
+ "name": "ⵙⴱⴰâµâµ¢â´°"
+ },
+ "RS": {
+ "name": "ⵙⵉⵔⴱⵢⴰ"
+ },
+ "SK": {
+ "name": "âµ™âµâµ“ⴼⴰⴽⵢⴰ"
+ },
+ "SI": {
+ "name": "âµ™âµâµ“ⴼⵉâµâµ¢â´°"
+ },
+ "SG": {
+ "name": "âµ™âµâµ–ⴰⴼⵓⵔⴰ"
+ },
+ "SR": {
+ "name": "ⵙⵓⵔⵉâµâ´°âµŽ"
+ },
+ "SY": {
+ "name": "ⵙⵓⵔⵢⴰ"
+ },
+ "LK": {
+ "name": "ⵙⵔⵉâµâ´°âµâ´½â´°"
+ },
+ "SA": {
+ "name": "ⵙⵙⴰⵄⵓⴷⵉⵢⴰ"
+ },
+ "SN": {
+ "name": "ⵙⵙⵉâµâµ‰â´³â´°âµ"
+ },
+ "SL": {
+ "name": "ⵙⵙⵉⵔⴰâµâµ¢âµ“âµ"
+ },
+ "SC": {
+ "name": "ⵙⵙⵉⵛⵉâµ"
+ },
+ "SD": {
+ "name": "ⵙⵙⵓⴷⴰâµ"
+ },
+ "SS": {
+ "name": "ⵙⵙⵓⴷⴰⵠⵠⵉⴼⴼⵓⵙ"
+ },
+ "SE": {
+ "name": "ⵙⵙⵡⵉⴷ"
+ },
+ "SZ": {
+ "name": "ⵙⵡⴰⵣⵉâµâ´°âµâ´·â´°"
+ },
+ "CH": {
+ "name": "ⵙⵡⵉⵙⵔⴰ"
+ },
+ "SO": {
+ "name": "ⵚⵚⵓⵎⴰâµ"
+ },
+ "CL": {
+ "name": "ⵛⵛⵉâµâµ‰"
+ },
+ "CN": {
+ "name": "ⵛⵛⵉâµâµ¡â´°"
+ },
+ "CD": {
+ "name": "ⵜⴰⴳⴷⵓⴷⴰâµâµœ ⵜⴰⴷⵉⵎⵓⵇⵔⴰⵜⵉⵜ ⵠⴽⵓâµâ´³âµ“"
+ },
+ "DO": {
+ "name": "ⵜⴰⴳⴷⵓⴷⴰâµâµœ ⵜⴰⴷⵓⵎⵉâµâµ‰â´½âµœ"
+ },
+ "CF": {
+ "name": "ⵜⴰⴳⴷⵓⴷⴰâµâµœ ⵜⴰâµâ´°âµŽâµŽâ´°âµ™âµœ ⵠⵉⴼⵔⵉⵇⵢⴰ"
+ },
+ "CZ": {
+ "name": "ⵜⴰⴳⴷⵓⴷⴰâµâµœ ⵜⴰⵜⵛⵉⴽⵉⵜ"
+ },
+ "GB": {
+ "name": "ⵜⴰⴳâµâ´·âµ‰âµœ ⵉⵎⵓâµâµ"
+ },
+ "TJ": {
+ "name": "ⵜⴰⴷⵊⴰⴽⵉⵙⵜⴰâµ"
+ },
+ "IO": {
+ "name": "ⵜⴰⵎâµâ´°â´¹âµœ ⵜⴰâµâ´³âµâµ‰âµ£âµ‰âµœ ⵠⵓⴳⴰⵔⵓ ⴰⵀⵉâµâ´·âµ‰"
+ },
+ "CV": {
+ "name": "ⵜⵉⴳⵣⵉⵔⵉⵠⵠⴽⴰⴱⴱⵉⵔⴷⵉ"
+ },
+ "KY": {
+ "name": "ⵜⵉⴳⵣⵉⵔⵉⵠⵠⴽⴰⵢⵎⴰâµ"
+ },
+ "CK": {
+ "name": "ⵜⵉⴳⵣⵉⵔⵉⵠⵠⴽⵓⴽ"
+ },
+ "FK": {
+ "name": "ⵜⵉⴳⵣⵉⵔⵉⵠⵠⵎⴰâµâ´°âµ¡âµ‰"
+ },
+ "MH": {
+ "name": "ⵜⵉⴳⵣⵉⵔⵉⵠⵠⵎⴰⵔⵛⴰâµ"
+ },
+ "MP": {
+ "name": "ⵜⵉⴳⵣⵉⵔⵉⵠⵠⵎⴰⵔⵢⴰⵠⵠⵉⵥⵥâµâµŽâ´¹"
+ },
+ "NF": {
+ "name": "ⵜⵉⴳⵣⵉⵔⵉⵠⵠâµâµ“ⵔⴼⵓâµâ´½"
+ },
+ "SB": {
+ "name": "ⵜⵉⴳⵣⵉⵔⵉⵠⵠⵙⴰâµâµ“ⵎⴰâµ"
+ },
+ "TC": {
+ "name": "ⵜⵉⴳⵣⵉⵔⵉⵠⵠⵜⵓⵔⴽⵢⴰ ⴷ ⴽⴰⵢⴽ"
+ },
+ "VI": {
+ "name": "ⵜⵉⴳⵣⵉⵔⵉⵠⵜⵉⵎⴳⴰⴷ ⵠⵉⵡⵓâµâ´°â´½ ⵎⵓâµâµâµ‰âµ"
+ },
+ "VG": {
+ "name": "ⵜⵉⴳⵣⵉⵔⵉⵠⵜⵉⵎⴳⴰⴷ âµ âµâµâ´³âµâµ‰âµ£"
+ },
+ "TL": {
+ "name": "ⵜⵉⵎⵓⵔ âµ âµâµ‡â´±âµâµœ"
+ },
+ "TV": {
+ "name": "ⵜⵓⴼⴰâµâµ“"
+ },
+ "TN": {
+ "name": "ⵜⵓâµâµ™"
+ },
+ "TM": {
+ "name": "ⵜⵓⵔⴽⵎⴰâµâµ™âµœâ´°âµ"
+ },
+ "TR": {
+ "name": "ⵜⵓⵔⴽⵢⴰ"
+ },
+ "TT": {
+ "name": "ⵜⵔⵉâµâµ‰â´·â´°â´· â´· ⵟⵓⴱⴰⴳⵓ"
+ },
+ "TD": {
+ "name": "ⵜⵛⴰⴷ"
+ },
+ "TZ": {
+ "name": "ⵟⴰâµâµ¥â´°âµâµ¢â´°"
+ },
+ "TH": {
+ "name": "ⵟⴰⵢâµâ´°âµâ´·"
+ },
+ "TW": {
+ "name": "ⵟⴰⵢⵡⴰâµ"
+ },
+ "TG": {
+ "name": "ⵟⵓⴳⵓ"
+ },
+ "TK": {
+ "name": "ⵟⵓⴽâµâ´°âµ¡"
+ },
+ "TO": {
+ "name": "ⵟⵓâµâ´³â´°"
+ },
+ "WF": {
+ "name": "ⵡⴰâµâµ‰âµ™ â´· ⴼⵓⵜⵓâµâ´°"
+ },
+ "YE": {
+ "name": "ⵢⴰⵎⴰâµ"
+ },
+ "ZM": {
+ "name": "ⵣⴰⵎⴱⵢⴰ"
+ },
+ "ZW": {
+ "name": "ⵣⵉⵎⴱⴰⴱⵡⵉ"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/country/zh-Hans-HK.json b/library/intl/resources/country/zh-Hans-HK.json
new file mode 100644
index 000000000..b1984d291
--- /dev/null
+++ b/library/intl/resources/country/zh-Hans-HK.json
@@ -0,0 +1,761 @@
+{
+ "AL": {
+ "name": "阿尔巴尼亚"
+ },
+ "DZ": {
+ "name": "阿尔åŠåˆ©äºš"
+ },
+ "AF": {
+ "name": "阿富汗"
+ },
+ "AR": {
+ "name": "阿根廷"
+ },
+ "AE": {
+ "name": "阿拉伯è”åˆé…‹é•¿å›½"
+ },
+ "AW": {
+ "name": "阿é²å·´"
+ },
+ "OM": {
+ "name": "阿曼"
+ },
+ "AZ": {
+ "name": "阿塞拜疆"
+ },
+ "AC": {
+ "name": "阿森æ¾å²›"
+ },
+ "EG": {
+ "name": "埃åŠ"
+ },
+ "ET": {
+ "name": "埃塞俄比亚"
+ },
+ "IE": {
+ "name": "爱尔兰"
+ },
+ "EE": {
+ "name": "爱沙尼亚"
+ },
+ "AD": {
+ "name": "安é“å°”"
+ },
+ "AO": {
+ "name": "安哥拉"
+ },
+ "AI": {
+ "name": "安圭拉"
+ },
+ "AG": {
+ "name": "安æ瓜和巴布达"
+ },
+ "AT": {
+ "name": "奥地利"
+ },
+ "AX": {
+ "name": "奥兰群岛"
+ },
+ "AU": {
+ "name": "澳大利亚"
+ },
+ "BB": {
+ "name": "巴巴多斯"
+ },
+ "PG": {
+ "name": "巴布亚新几内亚"
+ },
+ "BS": {
+ "name": "巴哈马"
+ },
+ "PK": {
+ "name": "巴基斯å¦"
+ },
+ "PY": {
+ "name": "巴拉圭"
+ },
+ "PS": {
+ "name": "å·´å‹’æ–¯å¦é¢†åœŸ"
+ },
+ "BH": {
+ "name": "å·´æž—"
+ },
+ "PA": {
+ "name": "巴拿马"
+ },
+ "BR": {
+ "name": "巴西"
+ },
+ "BY": {
+ "name": "白俄罗斯"
+ },
+ "BM": {
+ "name": "百慕大"
+ },
+ "BG": {
+ "name": "ä¿åŠ åˆ©äºš"
+ },
+ "MP": {
+ "name": "北马里亚纳群岛"
+ },
+ "BJ": {
+ "name": "è´å®"
+ },
+ "BE": {
+ "name": "比利时"
+ },
+ "IS": {
+ "name": "冰岛"
+ },
+ "PR": {
+ "name": "波多黎å„"
+ },
+ "PL": {
+ "name": "波兰"
+ },
+ "BA": {
+ "name": "波斯尼亚和黑塞哥维那"
+ },
+ "BO": {
+ "name": "玻利维亚"
+ },
+ "BZ": {
+ "name": "伯利兹"
+ },
+ "BW": {
+ "name": "åšèŒ¨ç“¦çº³"
+ },
+ "BT": {
+ "name": "ä¸ä¸¹"
+ },
+ "BF": {
+ "name": "布基纳法索"
+ },
+ "BI": {
+ "name": "布隆迪"
+ },
+ "KP": {
+ "name": "æœé²œ"
+ },
+ "GQ": {
+ "name": "赤é“几内亚"
+ },
+ "DK": {
+ "name": "丹麦"
+ },
+ "DE": {
+ "name": "德国"
+ },
+ "DG": {
+ "name": "迪戈加西亚岛"
+ },
+ "TL": {
+ "name": "东å¸æ±¶"
+ },
+ "TG": {
+ "name": "多哥"
+ },
+ "DO": {
+ "name": "多米尼加共和国"
+ },
+ "DM": {
+ "name": "多米尼克"
+ },
+ "RU": {
+ "name": "ä¿„ç½—æ–¯"
+ },
+ "EC": {
+ "name": "厄瓜多尔"
+ },
+ "ER": {
+ "name": "厄立特里亚"
+ },
+ "FR": {
+ "name": "法国"
+ },
+ "FO": {
+ "name": "法罗群岛"
+ },
+ "PF": {
+ "name": "法属波利尼西亚"
+ },
+ "GF": {
+ "name": "法属圭亚那"
+ },
+ "TF": {
+ "name": "法属å—部领地"
+ },
+ "MF": {
+ "name": "法属圣马ä¸"
+ },
+ "VA": {
+ "name": "梵蒂冈"
+ },
+ "PH": {
+ "name": "è²å¾‹å®¾"
+ },
+ "FJ": {
+ "name": "æ–济"
+ },
+ "FI": {
+ "name": "芬兰"
+ },
+ "CV": {
+ "name": "佛得角"
+ },
+ "FK": {
+ "name": "ç¦å…‹å…°ç¾¤å²›"
+ },
+ "GM": {
+ "name": "冈比亚"
+ },
+ "CG": {
+ "name": "刚果(布)"
+ },
+ "CD": {
+ "name": "刚果(金)"
+ },
+ "CO": {
+ "name": "哥伦比亚"
+ },
+ "CR": {
+ "name": "哥斯达黎加"
+ },
+ "GD": {
+ "name": "格林纳达"
+ },
+ "GL": {
+ "name": "格陵兰"
+ },
+ "GE": {
+ "name": "æ ¼é²å‰äºš"
+ },
+ "GG": {
+ "name": "根西岛"
+ },
+ "CU": {
+ "name": "å¤å·´"
+ },
+ "GP": {
+ "name": "瓜德罗普岛"
+ },
+ "GU": {
+ "name": "关岛"
+ },
+ "GY": {
+ "name": "圭亚那"
+ },
+ "KZ": {
+ "name": "哈è¨å…‹æ–¯å¦"
+ },
+ "HT": {
+ "name": "海地"
+ },
+ "KR": {
+ "name": "韩国"
+ },
+ "NL": {
+ "name": "è·å…°"
+ },
+ "BQ": {
+ "name": "è·å…°åŠ å‹’比区"
+ },
+ "SX": {
+ "name": "è·å±žåœ£é©¬ä¸"
+ },
+ "ME": {
+ "name": "黑山"
+ },
+ "HN": {
+ "name": "洪都拉斯"
+ },
+ "KI": {
+ "name": "基里巴斯"
+ },
+ "DJ": {
+ "name": "å‰å¸ƒæ"
+ },
+ "KG": {
+ "name": "å‰å°”å‰æ–¯æ–¯å¦"
+ },
+ "GN": {
+ "name": "几内亚"
+ },
+ "GW": {
+ "name": "几内亚比ç»"
+ },
+ "CA": {
+ "name": "加拿大"
+ },
+ "GH": {
+ "name": "加纳"
+ },
+ "IC": {
+ "name": "加纳利群岛"
+ },
+ "GA": {
+ "name": "加蓬"
+ },
+ "KH": {
+ "name": "柬埔寨"
+ },
+ "CZ": {
+ "name": "æ·å…‹å…±å’Œå›½"
+ },
+ "ZW": {
+ "name": "津巴布韦"
+ },
+ "CM": {
+ "name": "喀麦隆"
+ },
+ "QA": {
+ "name": "å¡å¡”å°”"
+ },
+ "KY": {
+ "name": "开曼群岛"
+ },
+ "CC": {
+ "name": "科科斯(基林)群岛"
+ },
+ "KM": {
+ "name": "科摩罗"
+ },
+ "XK": {
+ "name": "科索沃"
+ },
+ "CI": {
+ "name": "科特迪瓦"
+ },
+ "KW": {
+ "name": "科å¨ç‰¹"
+ },
+ "HR": {
+ "name": "克罗地亚"
+ },
+ "KE": {
+ "name": "肯尼亚"
+ },
+ "CK": {
+ "name": "库克群岛"
+ },
+ "CW": {
+ "name": "库拉索"
+ },
+ "LV": {
+ "name": "拉脱维亚"
+ },
+ "LS": {
+ "name": "莱索托"
+ },
+ "LA": {
+ "name": "è€æŒ"
+ },
+ "LB": {
+ "name": "黎巴嫩"
+ },
+ "LT": {
+ "name": "立陶宛"
+ },
+ "LR": {
+ "name": "利比里亚"
+ },
+ "LY": {
+ "name": "利比亚"
+ },
+ "LI": {
+ "name": "列支敦士登"
+ },
+ "RE": {
+ "name": "留尼汪"
+ },
+ "LU": {
+ "name": "å¢æ£®å ¡"
+ },
+ "RW": {
+ "name": "å¢æ—ºè¾¾"
+ },
+ "RO": {
+ "name": "罗马尼亚"
+ },
+ "MG": {
+ "name": "马达加斯加"
+ },
+ "MV": {
+ "name": "马尔代夫"
+ },
+ "MT": {
+ "name": "马耳他"
+ },
+ "MW": {
+ "name": "马拉维"
+ },
+ "MY": {
+ "name": "马æ¥è¥¿äºš"
+ },
+ "ML": {
+ "name": "马里"
+ },
+ "MK": {
+ "name": "马其顿"
+ },
+ "MH": {
+ "name": "马ç»å°”群岛"
+ },
+ "MQ": {
+ "name": "马æ尼克"
+ },
+ "YT": {
+ "name": "马约特"
+ },
+ "IM": {
+ "name": "曼岛"
+ },
+ "MU": {
+ "name": "毛里求斯"
+ },
+ "MR": {
+ "name": "毛里塔尼亚"
+ },
+ "US": {
+ "name": "美国"
+ },
+ "UM": {
+ "name": "美国本土外å°å²›å±¿"
+ },
+ "AS": {
+ "name": "美属è¨æ‘©äºš"
+ },
+ "VI": {
+ "name": "美属维京群岛"
+ },
+ "MN": {
+ "name": "è’™å¤"
+ },
+ "MS": {
+ "name": "蒙特塞拉特"
+ },
+ "BD": {
+ "name": "孟加拉国"
+ },
+ "PE": {
+ "name": "秘é²"
+ },
+ "FM": {
+ "name": "密克罗尼西亚"
+ },
+ "MM": {
+ "name": "缅甸"
+ },
+ "MD": {
+ "name": "摩尔多瓦"
+ },
+ "MA": {
+ "name": "摩洛哥"
+ },
+ "MC": {
+ "name": "摩纳哥"
+ },
+ "MZ": {
+ "name": "莫桑比克"
+ },
+ "MX": {
+ "name": "墨西哥"
+ },
+ "NA": {
+ "name": "纳米比亚"
+ },
+ "ZA": {
+ "name": "å—éž"
+ },
+ "AQ": {
+ "name": "å—æžæ´²"
+ },
+ "GS": {
+ "name": "å—乔治亚岛和å—æ¡‘å¨é½ç¾¤å²›"
+ },
+ "SS": {
+ "name": "å—è‹ä¸¹"
+ },
+ "NR": {
+ "name": "ç‘™é²"
+ },
+ "NI": {
+ "name": "尼加拉瓜"
+ },
+ "NP": {
+ "name": "尼泊尔"
+ },
+ "NE": {
+ "name": "尼日尔"
+ },
+ "NG": {
+ "name": "尼日利亚"
+ },
+ "NU": {
+ "name": "纽埃"
+ },
+ "NO": {
+ "name": "挪å¨"
+ },
+ "NF": {
+ "name": "诺ç¦å…‹å²›"
+ },
+ "PW": {
+ "name": "帕劳"
+ },
+ "PN": {
+ "name": "皮特凯æ©ç¾¤å²›"
+ },
+ "PT": {
+ "name": "è‘¡è„牙"
+ },
+ "JP": {
+ "name": "日本"
+ },
+ "SE": {
+ "name": "ç‘žå…¸"
+ },
+ "CH": {
+ "name": "瑞士"
+ },
+ "SV": {
+ "name": "è¨å°”瓦多"
+ },
+ "WS": {
+ "name": "è¨æ‘©äºš"
+ },
+ "RS": {
+ "name": "塞尔维亚"
+ },
+ "SL": {
+ "name": "塞拉利昂"
+ },
+ "SN": {
+ "name": "塞内加尔"
+ },
+ "CY": {
+ "name": "塞浦路斯"
+ },
+ "SC": {
+ "name": "塞舌尔"
+ },
+ "SA": {
+ "name": "沙特阿拉伯"
+ },
+ "BL": {
+ "name": "圣巴泰勒米"
+ },
+ "CX": {
+ "name": "圣诞岛"
+ },
+ "ST": {
+ "name": "圣多美和普林西比"
+ },
+ "SH": {
+ "name": "圣赫勒拿"
+ },
+ "KN": {
+ "name": "圣基茨和尼维斯"
+ },
+ "LC": {
+ "name": "圣å¢è¥¿äºš"
+ },
+ "SM": {
+ "name": "圣马力诺"
+ },
+ "PM": {
+ "name": "圣皮埃尔和密克隆"
+ },
+ "VC": {
+ "name": "圣文森特和格林纳ä¸æ–¯"
+ },
+ "LK": {
+ "name": "斯里兰å¡"
+ },
+ "SK": {
+ "name": "斯洛ä¼å…‹"
+ },
+ "SI": {
+ "name": "斯洛文尼亚"
+ },
+ "SJ": {
+ "name": "斯瓦尔巴特和扬马延"
+ },
+ "SZ": {
+ "name": "æ–¯å¨å£«å…°"
+ },
+ "SD": {
+ "name": "è‹ä¸¹"
+ },
+ "SR": {
+ "name": "è‹é‡Œå—"
+ },
+ "SB": {
+ "name": "所罗门群岛"
+ },
+ "SO": {
+ "name": "索马里"
+ },
+ "TJ": {
+ "name": "å¡”å‰å…‹æ–¯å¦"
+ },
+ "TW": {
+ "name": "å°æ¹¾"
+ },
+ "TH": {
+ "name": "泰国"
+ },
+ "TZ": {
+ "name": "å¦æ¡‘尼亚"
+ },
+ "TO": {
+ "name": "汤加"
+ },
+ "TC": {
+ "name": "特克斯和凯科斯群岛"
+ },
+ "TA": {
+ "name": "特里斯å¦-达库尼亚群岛"
+ },
+ "TT": {
+ "name": "特立尼达和多巴哥"
+ },
+ "TN": {
+ "name": "çªå°¼æ–¯"
+ },
+ "TV": {
+ "name": "图瓦å¢"
+ },
+ "TR": {
+ "name": "土耳其"
+ },
+ "TM": {
+ "name": "土库曼斯å¦"
+ },
+ "TK": {
+ "name": "托克劳"
+ },
+ "WF": {
+ "name": "瓦利斯和富图纳"
+ },
+ "VU": {
+ "name": "瓦努阿图"
+ },
+ "GT": {
+ "name": "å±åœ°é©¬æ‹‰"
+ },
+ "VE": {
+ "name": "委内瑞拉"
+ },
+ "BN": {
+ "name": "文莱"
+ },
+ "UG": {
+ "name": "乌干达"
+ },
+ "UA": {
+ "name": "乌克兰"
+ },
+ "UY": {
+ "name": "乌拉圭"
+ },
+ "UZ": {
+ "name": "乌兹别克斯å¦"
+ },
+ "GR": {
+ "name": "希腊"
+ },
+ "ES": {
+ "name": "西ç­ç‰™"
+ },
+ "EH": {
+ "name": "西撒哈拉"
+ },
+ "SG": {
+ "name": "新加å¡"
+ },
+ "NC": {
+ "name": "新喀里多尼亚"
+ },
+ "NZ": {
+ "name": "新西兰"
+ },
+ "HU": {
+ "name": "匈牙利"
+ },
+ "EA": {
+ "name": "休达åŠæ¢…利利亚"
+ },
+ "SY": {
+ "name": "å™åˆ©äºš"
+ },
+ "JM": {
+ "name": "牙买加"
+ },
+ "AM": {
+ "name": "亚美尼亚"
+ },
+ "YE": {
+ "name": "也门"
+ },
+ "IQ": {
+ "name": "伊拉克"
+ },
+ "IR": {
+ "name": "伊朗"
+ },
+ "IL": {
+ "name": "以色列"
+ },
+ "IT": {
+ "name": "æ„大利"
+ },
+ "IN": {
+ "name": "å°åº¦"
+ },
+ "ID": {
+ "name": "å°åº¦å°¼è¥¿äºš"
+ },
+ "GB": {
+ "name": "英国"
+ },
+ "VG": {
+ "name": "英属维京群岛"
+ },
+ "IO": {
+ "name": "英属å°åº¦æ´‹é¢†åœ°"
+ },
+ "JO": {
+ "name": "约旦"
+ },
+ "VN": {
+ "name": "越å—"
+ },
+ "ZM": {
+ "name": "赞比亚"
+ },
+ "JE": {
+ "name": "泽西岛"
+ },
+ "TD": {
+ "name": "ä¹å¾—"
+ },
+ "GI": {
+ "name": "直布罗陀"
+ },
+ "CL": {
+ "name": "智利"
+ },
+ "CF": {
+ "name": "中éžå…±å’Œå›½"
+ },
+ "CN": {
+ "name": "中国"
+ },
+ "MO": {
+ "name": "中国澳门特别行政区"
+ },
+ "HK": {
+ "name": "中国香港特别行政区"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/country/zh-Hans-MO.json b/library/intl/resources/country/zh-Hans-MO.json
new file mode 100644
index 000000000..dac93f65b
--- /dev/null
+++ b/library/intl/resources/country/zh-Hans-MO.json
@@ -0,0 +1,761 @@
+{
+ "AL": {
+ "name": "阿尔巴尼亚"
+ },
+ "DZ": {
+ "name": "阿尔åŠåˆ©äºš"
+ },
+ "AF": {
+ "name": "阿富汗"
+ },
+ "AR": {
+ "name": "阿根廷"
+ },
+ "AE": {
+ "name": "阿拉伯è”åˆé…‹é•¿å›½"
+ },
+ "AW": {
+ "name": "阿é²å·´"
+ },
+ "OM": {
+ "name": "阿曼"
+ },
+ "AZ": {
+ "name": "阿塞拜疆"
+ },
+ "AC": {
+ "name": "阿森æ¾å²›"
+ },
+ "EG": {
+ "name": "埃åŠ"
+ },
+ "ET": {
+ "name": "埃塞俄比亚"
+ },
+ "IE": {
+ "name": "爱尔兰"
+ },
+ "EE": {
+ "name": "爱沙尼亚"
+ },
+ "AD": {
+ "name": "安é“å°”"
+ },
+ "AO": {
+ "name": "安哥拉"
+ },
+ "AI": {
+ "name": "安圭拉"
+ },
+ "AG": {
+ "name": "安æ瓜和巴布达"
+ },
+ "AT": {
+ "name": "奥地利"
+ },
+ "AX": {
+ "name": "奥兰群岛"
+ },
+ "AU": {
+ "name": "澳大利亚"
+ },
+ "BB": {
+ "name": "巴巴多斯"
+ },
+ "PG": {
+ "name": "巴布亚新几内亚"
+ },
+ "BS": {
+ "name": "巴哈马"
+ },
+ "PK": {
+ "name": "巴基斯å¦"
+ },
+ "PY": {
+ "name": "巴拉圭"
+ },
+ "PS": {
+ "name": "å·´å‹’æ–¯å¦é¢†åœŸ"
+ },
+ "BH": {
+ "name": "å·´æž—"
+ },
+ "PA": {
+ "name": "巴拿马"
+ },
+ "BR": {
+ "name": "巴西"
+ },
+ "BY": {
+ "name": "白俄罗斯"
+ },
+ "BM": {
+ "name": "百慕大"
+ },
+ "BG": {
+ "name": "ä¿åŠ åˆ©äºš"
+ },
+ "MP": {
+ "name": "北马里亚纳群岛"
+ },
+ "BJ": {
+ "name": "è´å®"
+ },
+ "BE": {
+ "name": "比利时"
+ },
+ "IS": {
+ "name": "冰岛"
+ },
+ "PR": {
+ "name": "波多黎å„"
+ },
+ "PL": {
+ "name": "波兰"
+ },
+ "BA": {
+ "name": "波斯尼亚和黑塞哥维那"
+ },
+ "BO": {
+ "name": "玻利维亚"
+ },
+ "BZ": {
+ "name": "伯利兹"
+ },
+ "BW": {
+ "name": "åšèŒ¨ç“¦çº³"
+ },
+ "BT": {
+ "name": "ä¸ä¸¹"
+ },
+ "BF": {
+ "name": "布基纳法索"
+ },
+ "BI": {
+ "name": "布隆迪"
+ },
+ "KP": {
+ "name": "æœé²œ"
+ },
+ "GQ": {
+ "name": "赤é“几内亚"
+ },
+ "DK": {
+ "name": "丹麦"
+ },
+ "DE": {
+ "name": "德国"
+ },
+ "DG": {
+ "name": "迪戈加西亚岛"
+ },
+ "TL": {
+ "name": "东å¸æ±¶"
+ },
+ "TG": {
+ "name": "多哥"
+ },
+ "DO": {
+ "name": "多米尼加共和国"
+ },
+ "DM": {
+ "name": "多米尼克"
+ },
+ "RU": {
+ "name": "ä¿„ç½—æ–¯"
+ },
+ "EC": {
+ "name": "厄瓜多尔"
+ },
+ "ER": {
+ "name": "厄立特里亚"
+ },
+ "FR": {
+ "name": "法国"
+ },
+ "FO": {
+ "name": "法罗群岛"
+ },
+ "PF": {
+ "name": "法属波利尼西亚"
+ },
+ "GF": {
+ "name": "法属圭亚那"
+ },
+ "TF": {
+ "name": "法属å—部领地"
+ },
+ "MF": {
+ "name": "法属圣马ä¸"
+ },
+ "VA": {
+ "name": "梵蒂冈"
+ },
+ "PH": {
+ "name": "è²å¾‹å®¾"
+ },
+ "FJ": {
+ "name": "æ–济"
+ },
+ "FI": {
+ "name": "芬兰"
+ },
+ "CV": {
+ "name": "佛得角"
+ },
+ "FK": {
+ "name": "ç¦å…‹å…°ç¾¤å²›"
+ },
+ "GM": {
+ "name": "冈比亚"
+ },
+ "CG": {
+ "name": "刚果(布)"
+ },
+ "CD": {
+ "name": "刚果(金)"
+ },
+ "CO": {
+ "name": "哥伦比亚"
+ },
+ "CR": {
+ "name": "哥斯达黎加"
+ },
+ "GD": {
+ "name": "格林纳达"
+ },
+ "GL": {
+ "name": "格陵兰"
+ },
+ "GE": {
+ "name": "æ ¼é²å‰äºš"
+ },
+ "GG": {
+ "name": "根西岛"
+ },
+ "CU": {
+ "name": "å¤å·´"
+ },
+ "GP": {
+ "name": "瓜德罗普"
+ },
+ "GU": {
+ "name": "关岛"
+ },
+ "GY": {
+ "name": "圭亚那"
+ },
+ "KZ": {
+ "name": "哈è¨å…‹æ–¯å¦"
+ },
+ "HT": {
+ "name": "海地"
+ },
+ "KR": {
+ "name": "韩国"
+ },
+ "NL": {
+ "name": "è·å…°"
+ },
+ "BQ": {
+ "name": "è·å…°åŠ å‹’比区"
+ },
+ "SX": {
+ "name": "è·å±žåœ£é©¬ä¸"
+ },
+ "ME": {
+ "name": "黑山"
+ },
+ "HN": {
+ "name": "洪都拉斯"
+ },
+ "KI": {
+ "name": "基里巴斯"
+ },
+ "DJ": {
+ "name": "å‰å¸ƒæ"
+ },
+ "KG": {
+ "name": "å‰å°”å‰æ–¯æ–¯å¦"
+ },
+ "GN": {
+ "name": "几内亚"
+ },
+ "GW": {
+ "name": "几内亚比ç»"
+ },
+ "CA": {
+ "name": "加拿大"
+ },
+ "GH": {
+ "name": "加纳"
+ },
+ "IC": {
+ "name": "加纳利群岛"
+ },
+ "GA": {
+ "name": "加蓬"
+ },
+ "KH": {
+ "name": "柬埔寨"
+ },
+ "CZ": {
+ "name": "æ·å…‹å…±å’Œå›½"
+ },
+ "ZW": {
+ "name": "津巴布韦"
+ },
+ "CM": {
+ "name": "喀麦隆"
+ },
+ "QA": {
+ "name": "å¡å¡”å°”"
+ },
+ "KY": {
+ "name": "开曼群岛"
+ },
+ "CC": {
+ "name": "科科斯(基林)群岛"
+ },
+ "KM": {
+ "name": "科摩罗"
+ },
+ "XK": {
+ "name": "科索沃"
+ },
+ "CI": {
+ "name": "科特迪瓦"
+ },
+ "KW": {
+ "name": "科å¨ç‰¹"
+ },
+ "HR": {
+ "name": "克罗地亚"
+ },
+ "KE": {
+ "name": "肯尼亚"
+ },
+ "CK": {
+ "name": "库克群岛"
+ },
+ "CW": {
+ "name": "库拉索"
+ },
+ "LV": {
+ "name": "拉脱维亚"
+ },
+ "LS": {
+ "name": "莱索托"
+ },
+ "LA": {
+ "name": "è€æŒ"
+ },
+ "LB": {
+ "name": "黎巴嫩"
+ },
+ "LT": {
+ "name": "立陶宛"
+ },
+ "LR": {
+ "name": "利比里亚"
+ },
+ "LY": {
+ "name": "利比亚"
+ },
+ "LI": {
+ "name": "列支敦士登"
+ },
+ "RE": {
+ "name": "留尼汪"
+ },
+ "LU": {
+ "name": "å¢æ£®å ¡"
+ },
+ "RW": {
+ "name": "å¢æ—ºè¾¾"
+ },
+ "RO": {
+ "name": "罗马尼亚"
+ },
+ "MG": {
+ "name": "马达加斯加"
+ },
+ "MV": {
+ "name": "马尔代夫"
+ },
+ "MT": {
+ "name": "马耳他"
+ },
+ "MW": {
+ "name": "马拉维"
+ },
+ "MY": {
+ "name": "马æ¥è¥¿äºš"
+ },
+ "ML": {
+ "name": "马里"
+ },
+ "MK": {
+ "name": "马其顿"
+ },
+ "MH": {
+ "name": "马ç»å°”群岛"
+ },
+ "MQ": {
+ "name": "马æ尼克"
+ },
+ "YT": {
+ "name": "马约特"
+ },
+ "IM": {
+ "name": "曼岛"
+ },
+ "MU": {
+ "name": "毛里求斯"
+ },
+ "MR": {
+ "name": "毛里塔尼亚"
+ },
+ "US": {
+ "name": "美国"
+ },
+ "UM": {
+ "name": "美国本土外å°å²›å±¿"
+ },
+ "AS": {
+ "name": "美属è¨æ‘©äºš"
+ },
+ "VI": {
+ "name": "美属维京群岛"
+ },
+ "MN": {
+ "name": "è’™å¤"
+ },
+ "MS": {
+ "name": "蒙特塞拉特"
+ },
+ "BD": {
+ "name": "孟加拉国"
+ },
+ "PE": {
+ "name": "秘é²"
+ },
+ "FM": {
+ "name": "密克罗尼西亚"
+ },
+ "MM": {
+ "name": "缅甸"
+ },
+ "MD": {
+ "name": "摩尔多瓦"
+ },
+ "MA": {
+ "name": "摩洛哥"
+ },
+ "MC": {
+ "name": "摩纳哥"
+ },
+ "MZ": {
+ "name": "莫桑比克"
+ },
+ "MX": {
+ "name": "墨西哥"
+ },
+ "NA": {
+ "name": "纳米比亚"
+ },
+ "ZA": {
+ "name": "å—éž"
+ },
+ "AQ": {
+ "name": "å—æžæ´²"
+ },
+ "GS": {
+ "name": "å—乔治亚岛和å—æ¡‘å¨é½ç¾¤å²›"
+ },
+ "SS": {
+ "name": "å—è‹ä¸¹"
+ },
+ "NR": {
+ "name": "ç‘™é²"
+ },
+ "NI": {
+ "name": "尼加拉瓜"
+ },
+ "NP": {
+ "name": "尼泊尔"
+ },
+ "NE": {
+ "name": "尼日尔"
+ },
+ "NG": {
+ "name": "尼日利亚"
+ },
+ "NU": {
+ "name": "纽埃"
+ },
+ "NO": {
+ "name": "挪å¨"
+ },
+ "NF": {
+ "name": "诺ç¦å…‹å²›"
+ },
+ "PW": {
+ "name": "帕劳"
+ },
+ "PN": {
+ "name": "皮特凯æ©ç¾¤å²›"
+ },
+ "PT": {
+ "name": "è‘¡è„牙"
+ },
+ "JP": {
+ "name": "日本"
+ },
+ "SE": {
+ "name": "ç‘žå…¸"
+ },
+ "CH": {
+ "name": "瑞士"
+ },
+ "SV": {
+ "name": "è¨å°”瓦多"
+ },
+ "WS": {
+ "name": "è¨æ‘©äºš"
+ },
+ "RS": {
+ "name": "塞尔维亚"
+ },
+ "SL": {
+ "name": "塞拉利昂"
+ },
+ "SN": {
+ "name": "塞内加尔"
+ },
+ "CY": {
+ "name": "塞浦路斯"
+ },
+ "SC": {
+ "name": "塞舌尔"
+ },
+ "SA": {
+ "name": "沙特阿拉伯"
+ },
+ "BL": {
+ "name": "圣巴泰勒米"
+ },
+ "CX": {
+ "name": "圣诞岛"
+ },
+ "ST": {
+ "name": "圣多美和普林西比"
+ },
+ "SH": {
+ "name": "圣赫勒拿"
+ },
+ "KN": {
+ "name": "圣基茨和尼维斯"
+ },
+ "LC": {
+ "name": "圣å¢è¥¿äºš"
+ },
+ "SM": {
+ "name": "圣马力诺"
+ },
+ "PM": {
+ "name": "圣皮埃尔和密克隆"
+ },
+ "VC": {
+ "name": "圣文森特和格林纳ä¸æ–¯"
+ },
+ "LK": {
+ "name": "斯里兰å¡"
+ },
+ "SK": {
+ "name": "斯洛ä¼å…‹"
+ },
+ "SI": {
+ "name": "斯洛文尼亚"
+ },
+ "SJ": {
+ "name": "斯瓦尔巴特和扬马延"
+ },
+ "SZ": {
+ "name": "æ–¯å¨å£«å…°"
+ },
+ "SD": {
+ "name": "è‹ä¸¹"
+ },
+ "SR": {
+ "name": "è‹é‡Œå—"
+ },
+ "SB": {
+ "name": "所罗门群岛"
+ },
+ "SO": {
+ "name": "索马里"
+ },
+ "TJ": {
+ "name": "å¡”å‰å…‹æ–¯å¦"
+ },
+ "TW": {
+ "name": "å°æ¹¾"
+ },
+ "TH": {
+ "name": "泰国"
+ },
+ "TZ": {
+ "name": "å¦æ¡‘尼亚"
+ },
+ "TO": {
+ "name": "汤加"
+ },
+ "TC": {
+ "name": "特克斯和凯科斯群岛"
+ },
+ "TA": {
+ "name": "特里斯å¦-达库尼亚群岛"
+ },
+ "TT": {
+ "name": "特立尼达和多巴哥"
+ },
+ "TN": {
+ "name": "çªå°¼æ–¯"
+ },
+ "TV": {
+ "name": "图瓦å¢"
+ },
+ "TR": {
+ "name": "土耳其"
+ },
+ "TM": {
+ "name": "土库曼斯å¦"
+ },
+ "TK": {
+ "name": "托克劳"
+ },
+ "WF": {
+ "name": "瓦利斯和富图纳"
+ },
+ "VU": {
+ "name": "瓦努阿图"
+ },
+ "GT": {
+ "name": "å±åœ°é©¬æ‹‰"
+ },
+ "VE": {
+ "name": "委内瑞拉"
+ },
+ "BN": {
+ "name": "文莱"
+ },
+ "UG": {
+ "name": "乌干达"
+ },
+ "UA": {
+ "name": "乌克兰"
+ },
+ "UY": {
+ "name": "乌拉圭"
+ },
+ "UZ": {
+ "name": "乌兹别克斯å¦"
+ },
+ "GR": {
+ "name": "希腊"
+ },
+ "ES": {
+ "name": "西ç­ç‰™"
+ },
+ "EH": {
+ "name": "西撒哈拉"
+ },
+ "SG": {
+ "name": "新加å¡"
+ },
+ "NC": {
+ "name": "新喀里多尼亚"
+ },
+ "NZ": {
+ "name": "新西兰"
+ },
+ "HU": {
+ "name": "匈牙利"
+ },
+ "EA": {
+ "name": "休达åŠæ¢…利利亚"
+ },
+ "SY": {
+ "name": "å™åˆ©äºš"
+ },
+ "JM": {
+ "name": "牙买加"
+ },
+ "AM": {
+ "name": "亚美尼亚"
+ },
+ "YE": {
+ "name": "也门"
+ },
+ "IQ": {
+ "name": "伊拉克"
+ },
+ "IR": {
+ "name": "伊朗"
+ },
+ "IL": {
+ "name": "以色列"
+ },
+ "IT": {
+ "name": "æ„大利"
+ },
+ "IN": {
+ "name": "å°åº¦"
+ },
+ "ID": {
+ "name": "å°åº¦å°¼è¥¿äºš"
+ },
+ "GB": {
+ "name": "英国"
+ },
+ "VG": {
+ "name": "英属维京群岛"
+ },
+ "IO": {
+ "name": "英属å°åº¦æ´‹é¢†åœ°"
+ },
+ "JO": {
+ "name": "约旦"
+ },
+ "VN": {
+ "name": "越å—"
+ },
+ "ZM": {
+ "name": "赞比亚"
+ },
+ "JE": {
+ "name": "泽西岛"
+ },
+ "TD": {
+ "name": "ä¹å¾—"
+ },
+ "GI": {
+ "name": "直布罗陀"
+ },
+ "CL": {
+ "name": "智利"
+ },
+ "CF": {
+ "name": "中éžå…±å’Œå›½"
+ },
+ "CN": {
+ "name": "中国"
+ },
+ "MO": {
+ "name": "中国澳门特别行政区"
+ },
+ "HK": {
+ "name": "中国香港特别行政区"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/country/zh-Hans-SG.json b/library/intl/resources/country/zh-Hans-SG.json
new file mode 100644
index 000000000..dac93f65b
--- /dev/null
+++ b/library/intl/resources/country/zh-Hans-SG.json
@@ -0,0 +1,761 @@
+{
+ "AL": {
+ "name": "阿尔巴尼亚"
+ },
+ "DZ": {
+ "name": "阿尔åŠåˆ©äºš"
+ },
+ "AF": {
+ "name": "阿富汗"
+ },
+ "AR": {
+ "name": "阿根廷"
+ },
+ "AE": {
+ "name": "阿拉伯è”åˆé…‹é•¿å›½"
+ },
+ "AW": {
+ "name": "阿é²å·´"
+ },
+ "OM": {
+ "name": "阿曼"
+ },
+ "AZ": {
+ "name": "阿塞拜疆"
+ },
+ "AC": {
+ "name": "阿森æ¾å²›"
+ },
+ "EG": {
+ "name": "埃åŠ"
+ },
+ "ET": {
+ "name": "埃塞俄比亚"
+ },
+ "IE": {
+ "name": "爱尔兰"
+ },
+ "EE": {
+ "name": "爱沙尼亚"
+ },
+ "AD": {
+ "name": "安é“å°”"
+ },
+ "AO": {
+ "name": "安哥拉"
+ },
+ "AI": {
+ "name": "安圭拉"
+ },
+ "AG": {
+ "name": "安æ瓜和巴布达"
+ },
+ "AT": {
+ "name": "奥地利"
+ },
+ "AX": {
+ "name": "奥兰群岛"
+ },
+ "AU": {
+ "name": "澳大利亚"
+ },
+ "BB": {
+ "name": "巴巴多斯"
+ },
+ "PG": {
+ "name": "巴布亚新几内亚"
+ },
+ "BS": {
+ "name": "巴哈马"
+ },
+ "PK": {
+ "name": "巴基斯å¦"
+ },
+ "PY": {
+ "name": "巴拉圭"
+ },
+ "PS": {
+ "name": "å·´å‹’æ–¯å¦é¢†åœŸ"
+ },
+ "BH": {
+ "name": "å·´æž—"
+ },
+ "PA": {
+ "name": "巴拿马"
+ },
+ "BR": {
+ "name": "巴西"
+ },
+ "BY": {
+ "name": "白俄罗斯"
+ },
+ "BM": {
+ "name": "百慕大"
+ },
+ "BG": {
+ "name": "ä¿åŠ åˆ©äºš"
+ },
+ "MP": {
+ "name": "北马里亚纳群岛"
+ },
+ "BJ": {
+ "name": "è´å®"
+ },
+ "BE": {
+ "name": "比利时"
+ },
+ "IS": {
+ "name": "冰岛"
+ },
+ "PR": {
+ "name": "波多黎å„"
+ },
+ "PL": {
+ "name": "波兰"
+ },
+ "BA": {
+ "name": "波斯尼亚和黑塞哥维那"
+ },
+ "BO": {
+ "name": "玻利维亚"
+ },
+ "BZ": {
+ "name": "伯利兹"
+ },
+ "BW": {
+ "name": "åšèŒ¨ç“¦çº³"
+ },
+ "BT": {
+ "name": "ä¸ä¸¹"
+ },
+ "BF": {
+ "name": "布基纳法索"
+ },
+ "BI": {
+ "name": "布隆迪"
+ },
+ "KP": {
+ "name": "æœé²œ"
+ },
+ "GQ": {
+ "name": "赤é“几内亚"
+ },
+ "DK": {
+ "name": "丹麦"
+ },
+ "DE": {
+ "name": "德国"
+ },
+ "DG": {
+ "name": "迪戈加西亚岛"
+ },
+ "TL": {
+ "name": "东å¸æ±¶"
+ },
+ "TG": {
+ "name": "多哥"
+ },
+ "DO": {
+ "name": "多米尼加共和国"
+ },
+ "DM": {
+ "name": "多米尼克"
+ },
+ "RU": {
+ "name": "ä¿„ç½—æ–¯"
+ },
+ "EC": {
+ "name": "厄瓜多尔"
+ },
+ "ER": {
+ "name": "厄立特里亚"
+ },
+ "FR": {
+ "name": "法国"
+ },
+ "FO": {
+ "name": "法罗群岛"
+ },
+ "PF": {
+ "name": "法属波利尼西亚"
+ },
+ "GF": {
+ "name": "法属圭亚那"
+ },
+ "TF": {
+ "name": "法属å—部领地"
+ },
+ "MF": {
+ "name": "法属圣马ä¸"
+ },
+ "VA": {
+ "name": "梵蒂冈"
+ },
+ "PH": {
+ "name": "è²å¾‹å®¾"
+ },
+ "FJ": {
+ "name": "æ–济"
+ },
+ "FI": {
+ "name": "芬兰"
+ },
+ "CV": {
+ "name": "佛得角"
+ },
+ "FK": {
+ "name": "ç¦å…‹å…°ç¾¤å²›"
+ },
+ "GM": {
+ "name": "冈比亚"
+ },
+ "CG": {
+ "name": "刚果(布)"
+ },
+ "CD": {
+ "name": "刚果(金)"
+ },
+ "CO": {
+ "name": "哥伦比亚"
+ },
+ "CR": {
+ "name": "哥斯达黎加"
+ },
+ "GD": {
+ "name": "格林纳达"
+ },
+ "GL": {
+ "name": "格陵兰"
+ },
+ "GE": {
+ "name": "æ ¼é²å‰äºš"
+ },
+ "GG": {
+ "name": "根西岛"
+ },
+ "CU": {
+ "name": "å¤å·´"
+ },
+ "GP": {
+ "name": "瓜德罗普"
+ },
+ "GU": {
+ "name": "关岛"
+ },
+ "GY": {
+ "name": "圭亚那"
+ },
+ "KZ": {
+ "name": "哈è¨å…‹æ–¯å¦"
+ },
+ "HT": {
+ "name": "海地"
+ },
+ "KR": {
+ "name": "韩国"
+ },
+ "NL": {
+ "name": "è·å…°"
+ },
+ "BQ": {
+ "name": "è·å…°åŠ å‹’比区"
+ },
+ "SX": {
+ "name": "è·å±žåœ£é©¬ä¸"
+ },
+ "ME": {
+ "name": "黑山"
+ },
+ "HN": {
+ "name": "洪都拉斯"
+ },
+ "KI": {
+ "name": "基里巴斯"
+ },
+ "DJ": {
+ "name": "å‰å¸ƒæ"
+ },
+ "KG": {
+ "name": "å‰å°”å‰æ–¯æ–¯å¦"
+ },
+ "GN": {
+ "name": "几内亚"
+ },
+ "GW": {
+ "name": "几内亚比ç»"
+ },
+ "CA": {
+ "name": "加拿大"
+ },
+ "GH": {
+ "name": "加纳"
+ },
+ "IC": {
+ "name": "加纳利群岛"
+ },
+ "GA": {
+ "name": "加蓬"
+ },
+ "KH": {
+ "name": "柬埔寨"
+ },
+ "CZ": {
+ "name": "æ·å…‹å…±å’Œå›½"
+ },
+ "ZW": {
+ "name": "津巴布韦"
+ },
+ "CM": {
+ "name": "喀麦隆"
+ },
+ "QA": {
+ "name": "å¡å¡”å°”"
+ },
+ "KY": {
+ "name": "开曼群岛"
+ },
+ "CC": {
+ "name": "科科斯(基林)群岛"
+ },
+ "KM": {
+ "name": "科摩罗"
+ },
+ "XK": {
+ "name": "科索沃"
+ },
+ "CI": {
+ "name": "科特迪瓦"
+ },
+ "KW": {
+ "name": "科å¨ç‰¹"
+ },
+ "HR": {
+ "name": "克罗地亚"
+ },
+ "KE": {
+ "name": "肯尼亚"
+ },
+ "CK": {
+ "name": "库克群岛"
+ },
+ "CW": {
+ "name": "库拉索"
+ },
+ "LV": {
+ "name": "拉脱维亚"
+ },
+ "LS": {
+ "name": "莱索托"
+ },
+ "LA": {
+ "name": "è€æŒ"
+ },
+ "LB": {
+ "name": "黎巴嫩"
+ },
+ "LT": {
+ "name": "立陶宛"
+ },
+ "LR": {
+ "name": "利比里亚"
+ },
+ "LY": {
+ "name": "利比亚"
+ },
+ "LI": {
+ "name": "列支敦士登"
+ },
+ "RE": {
+ "name": "留尼汪"
+ },
+ "LU": {
+ "name": "å¢æ£®å ¡"
+ },
+ "RW": {
+ "name": "å¢æ—ºè¾¾"
+ },
+ "RO": {
+ "name": "罗马尼亚"
+ },
+ "MG": {
+ "name": "马达加斯加"
+ },
+ "MV": {
+ "name": "马尔代夫"
+ },
+ "MT": {
+ "name": "马耳他"
+ },
+ "MW": {
+ "name": "马拉维"
+ },
+ "MY": {
+ "name": "马æ¥è¥¿äºš"
+ },
+ "ML": {
+ "name": "马里"
+ },
+ "MK": {
+ "name": "马其顿"
+ },
+ "MH": {
+ "name": "马ç»å°”群岛"
+ },
+ "MQ": {
+ "name": "马æ尼克"
+ },
+ "YT": {
+ "name": "马约特"
+ },
+ "IM": {
+ "name": "曼岛"
+ },
+ "MU": {
+ "name": "毛里求斯"
+ },
+ "MR": {
+ "name": "毛里塔尼亚"
+ },
+ "US": {
+ "name": "美国"
+ },
+ "UM": {
+ "name": "美国本土外å°å²›å±¿"
+ },
+ "AS": {
+ "name": "美属è¨æ‘©äºš"
+ },
+ "VI": {
+ "name": "美属维京群岛"
+ },
+ "MN": {
+ "name": "è’™å¤"
+ },
+ "MS": {
+ "name": "蒙特塞拉特"
+ },
+ "BD": {
+ "name": "孟加拉国"
+ },
+ "PE": {
+ "name": "秘é²"
+ },
+ "FM": {
+ "name": "密克罗尼西亚"
+ },
+ "MM": {
+ "name": "缅甸"
+ },
+ "MD": {
+ "name": "摩尔多瓦"
+ },
+ "MA": {
+ "name": "摩洛哥"
+ },
+ "MC": {
+ "name": "摩纳哥"
+ },
+ "MZ": {
+ "name": "莫桑比克"
+ },
+ "MX": {
+ "name": "墨西哥"
+ },
+ "NA": {
+ "name": "纳米比亚"
+ },
+ "ZA": {
+ "name": "å—éž"
+ },
+ "AQ": {
+ "name": "å—æžæ´²"
+ },
+ "GS": {
+ "name": "å—乔治亚岛和å—æ¡‘å¨é½ç¾¤å²›"
+ },
+ "SS": {
+ "name": "å—è‹ä¸¹"
+ },
+ "NR": {
+ "name": "ç‘™é²"
+ },
+ "NI": {
+ "name": "尼加拉瓜"
+ },
+ "NP": {
+ "name": "尼泊尔"
+ },
+ "NE": {
+ "name": "尼日尔"
+ },
+ "NG": {
+ "name": "尼日利亚"
+ },
+ "NU": {
+ "name": "纽埃"
+ },
+ "NO": {
+ "name": "挪å¨"
+ },
+ "NF": {
+ "name": "诺ç¦å…‹å²›"
+ },
+ "PW": {
+ "name": "帕劳"
+ },
+ "PN": {
+ "name": "皮特凯æ©ç¾¤å²›"
+ },
+ "PT": {
+ "name": "è‘¡è„牙"
+ },
+ "JP": {
+ "name": "日本"
+ },
+ "SE": {
+ "name": "ç‘žå…¸"
+ },
+ "CH": {
+ "name": "瑞士"
+ },
+ "SV": {
+ "name": "è¨å°”瓦多"
+ },
+ "WS": {
+ "name": "è¨æ‘©äºš"
+ },
+ "RS": {
+ "name": "塞尔维亚"
+ },
+ "SL": {
+ "name": "塞拉利昂"
+ },
+ "SN": {
+ "name": "塞内加尔"
+ },
+ "CY": {
+ "name": "塞浦路斯"
+ },
+ "SC": {
+ "name": "塞舌尔"
+ },
+ "SA": {
+ "name": "沙特阿拉伯"
+ },
+ "BL": {
+ "name": "圣巴泰勒米"
+ },
+ "CX": {
+ "name": "圣诞岛"
+ },
+ "ST": {
+ "name": "圣多美和普林西比"
+ },
+ "SH": {
+ "name": "圣赫勒拿"
+ },
+ "KN": {
+ "name": "圣基茨和尼维斯"
+ },
+ "LC": {
+ "name": "圣å¢è¥¿äºš"
+ },
+ "SM": {
+ "name": "圣马力诺"
+ },
+ "PM": {
+ "name": "圣皮埃尔和密克隆"
+ },
+ "VC": {
+ "name": "圣文森特和格林纳ä¸æ–¯"
+ },
+ "LK": {
+ "name": "斯里兰å¡"
+ },
+ "SK": {
+ "name": "斯洛ä¼å…‹"
+ },
+ "SI": {
+ "name": "斯洛文尼亚"
+ },
+ "SJ": {
+ "name": "斯瓦尔巴特和扬马延"
+ },
+ "SZ": {
+ "name": "æ–¯å¨å£«å…°"
+ },
+ "SD": {
+ "name": "è‹ä¸¹"
+ },
+ "SR": {
+ "name": "è‹é‡Œå—"
+ },
+ "SB": {
+ "name": "所罗门群岛"
+ },
+ "SO": {
+ "name": "索马里"
+ },
+ "TJ": {
+ "name": "å¡”å‰å…‹æ–¯å¦"
+ },
+ "TW": {
+ "name": "å°æ¹¾"
+ },
+ "TH": {
+ "name": "泰国"
+ },
+ "TZ": {
+ "name": "å¦æ¡‘尼亚"
+ },
+ "TO": {
+ "name": "汤加"
+ },
+ "TC": {
+ "name": "特克斯和凯科斯群岛"
+ },
+ "TA": {
+ "name": "特里斯å¦-达库尼亚群岛"
+ },
+ "TT": {
+ "name": "特立尼达和多巴哥"
+ },
+ "TN": {
+ "name": "çªå°¼æ–¯"
+ },
+ "TV": {
+ "name": "图瓦å¢"
+ },
+ "TR": {
+ "name": "土耳其"
+ },
+ "TM": {
+ "name": "土库曼斯å¦"
+ },
+ "TK": {
+ "name": "托克劳"
+ },
+ "WF": {
+ "name": "瓦利斯和富图纳"
+ },
+ "VU": {
+ "name": "瓦努阿图"
+ },
+ "GT": {
+ "name": "å±åœ°é©¬æ‹‰"
+ },
+ "VE": {
+ "name": "委内瑞拉"
+ },
+ "BN": {
+ "name": "文莱"
+ },
+ "UG": {
+ "name": "乌干达"
+ },
+ "UA": {
+ "name": "乌克兰"
+ },
+ "UY": {
+ "name": "乌拉圭"
+ },
+ "UZ": {
+ "name": "乌兹别克斯å¦"
+ },
+ "GR": {
+ "name": "希腊"
+ },
+ "ES": {
+ "name": "西ç­ç‰™"
+ },
+ "EH": {
+ "name": "西撒哈拉"
+ },
+ "SG": {
+ "name": "新加å¡"
+ },
+ "NC": {
+ "name": "新喀里多尼亚"
+ },
+ "NZ": {
+ "name": "新西兰"
+ },
+ "HU": {
+ "name": "匈牙利"
+ },
+ "EA": {
+ "name": "休达åŠæ¢…利利亚"
+ },
+ "SY": {
+ "name": "å™åˆ©äºš"
+ },
+ "JM": {
+ "name": "牙买加"
+ },
+ "AM": {
+ "name": "亚美尼亚"
+ },
+ "YE": {
+ "name": "也门"
+ },
+ "IQ": {
+ "name": "伊拉克"
+ },
+ "IR": {
+ "name": "伊朗"
+ },
+ "IL": {
+ "name": "以色列"
+ },
+ "IT": {
+ "name": "æ„大利"
+ },
+ "IN": {
+ "name": "å°åº¦"
+ },
+ "ID": {
+ "name": "å°åº¦å°¼è¥¿äºš"
+ },
+ "GB": {
+ "name": "英国"
+ },
+ "VG": {
+ "name": "英属维京群岛"
+ },
+ "IO": {
+ "name": "英属å°åº¦æ´‹é¢†åœ°"
+ },
+ "JO": {
+ "name": "约旦"
+ },
+ "VN": {
+ "name": "越å—"
+ },
+ "ZM": {
+ "name": "赞比亚"
+ },
+ "JE": {
+ "name": "泽西岛"
+ },
+ "TD": {
+ "name": "ä¹å¾—"
+ },
+ "GI": {
+ "name": "直布罗陀"
+ },
+ "CL": {
+ "name": "智利"
+ },
+ "CF": {
+ "name": "中éžå…±å’Œå›½"
+ },
+ "CN": {
+ "name": "中国"
+ },
+ "MO": {
+ "name": "中国澳门特别行政区"
+ },
+ "HK": {
+ "name": "中国香港特别行政区"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/country/zh-Hant-HK.json b/library/intl/resources/country/zh-Hant-HK.json
new file mode 100644
index 000000000..f0f5ba0cf
--- /dev/null
+++ b/library/intl/resources/country/zh-Hant-HK.json
@@ -0,0 +1,761 @@
+{
+ "YE": {
+ "name": "也門"
+ },
+ "TT": {
+ "name": "åƒé‡Œé”和多巴哥"
+ },
+ "TR": {
+ "name": "土耳其"
+ },
+ "TM": {
+ "name": "土庫曼"
+ },
+ "BT": {
+ "name": "ä¸ä¸¹"
+ },
+ "CF": {
+ "name": "中éžå…±å’Œåœ‹"
+ },
+ "CN": {
+ "name": "中è¯äººæ°‘共和國"
+ },
+ "HK": {
+ "name": "中è¯äººæ°‘共和國香港特別行政å€"
+ },
+ "MO": {
+ "name": "中è¯äººæ°‘共和國澳門特別行政å€"
+ },
+ "DK": {
+ "name": "丹麥"
+ },
+ "EC": {
+ "name": "厄瓜多"
+ },
+ "ER": {
+ "name": "厄立特里亞"
+ },
+ "BB": {
+ "name": "巴巴多斯"
+ },
+ "PG": {
+ "name": "巴布亞新幾內亞"
+ },
+ "BR": {
+ "name": "巴西"
+ },
+ "PY": {
+ "name": "巴拉圭"
+ },
+ "BH": {
+ "name": "å·´æž—"
+ },
+ "BS": {
+ "name": "巴哈馬"
+ },
+ "PA": {
+ "name": "巴拿馬"
+ },
+ "PS": {
+ "name": "å·´å‹’æ–¯å¦è‡ªæ²»å€"
+ },
+ "PK": {
+ "name": "巴基斯å¦"
+ },
+ "JP": {
+ "name": "日本"
+ },
+ "BE": {
+ "name": "比利時"
+ },
+ "MR": {
+ "name": "毛里塔尼亞"
+ },
+ "MU": {
+ "name": "毛里裘斯"
+ },
+ "JM": {
+ "name": "牙買加"
+ },
+ "TD": {
+ "name": "ä¹å¾—"
+ },
+ "IL": {
+ "name": "以色列"
+ },
+ "IC": {
+ "name": "加那利群島"
+ },
+ "CA": {
+ "name": "加拿大"
+ },
+ "GH": {
+ "name": "加ç´"
+ },
+ "GA": {
+ "name": "加蓬"
+ },
+ "MP": {
+ "name": "北馬里亞ç´ç¾¤å³¶"
+ },
+ "KP": {
+ "name": "北韓"
+ },
+ "QA": {
+ "name": "å¡å¡”爾"
+ },
+ "CU": {
+ "name": "å¤å·´"
+ },
+ "CC": {
+ "name": "å¯å¯æ–¯ç¾¤å³¶"
+ },
+ "TW": {
+ "name": "å°ç£"
+ },
+ "NG": {
+ "name": "尼日利亞"
+ },
+ "NE": {
+ "name": "尼日爾"
+ },
+ "NI": {
+ "name": "尼加拉瓜"
+ },
+ "NP": {
+ "name": "尼泊爾"
+ },
+ "BF": {
+ "name": "布å‰ç´æ³•ç´¢"
+ },
+ "BI": {
+ "name": "布隆迪"
+ },
+ "GP": {
+ "name": "瓜地洛普"
+ },
+ "WF": {
+ "name": "瓦利斯和富圖ç´ç¾¤å³¶"
+ },
+ "VU": {
+ "name": "瓦努阿圖"
+ },
+ "BY": {
+ "name": "白俄羅斯"
+ },
+ "PN": {
+ "name": "皮特凱æ©å³¶"
+ },
+ "LT": {
+ "name": "立陶宛"
+ },
+ "IQ": {
+ "name": "伊拉克"
+ },
+ "IR": {
+ "name": "伊朗"
+ },
+ "EA": {
+ "name": "休é”與梅利利亞"
+ },
+ "IS": {
+ "name": "冰島"
+ },
+ "LI": {
+ "name": "列支敦士登"
+ },
+ "HU": {
+ "name": "匈牙利"
+ },
+ "ID": {
+ "name": "å°å°¼"
+ },
+ "IN": {
+ "name": "å°åº¦"
+ },
+ "GT": {
+ "name": "å±åœ°é¦¬æ‹‰"
+ },
+ "DJ": {
+ "name": "å‰å¸ƒåœ°"
+ },
+ "KI": {
+ "name": "å‰é‡Œå·´æ–¯"
+ },
+ "KG": {
+ "name": "å‰çˆ¾å‰æ–¯"
+ },
+ "DM": {
+ "name": "多米尼克"
+ },
+ "DO": {
+ "name": "多明尼加共和國"
+ },
+ "TG": {
+ "name": "多哥共和國"
+ },
+ "AI": {
+ "name": "安圭拉"
+ },
+ "AO": {
+ "name": "安哥拉"
+ },
+ "AG": {
+ "name": "安æç“œåŠå·´å¸ƒé”"
+ },
+ "AD": {
+ "name": "安é“爾"
+ },
+ "TK": {
+ "name": "托克勞群島"
+ },
+ "BM": {
+ "name": "百慕é”"
+ },
+ "ES": {
+ "name": "西ç­ç‰™"
+ },
+ "EH": {
+ "name": "西撒哈拉"
+ },
+ "BZ": {
+ "name": "伯利茲"
+ },
+ "CV": {
+ "name": "佛得角"
+ },
+ "HR": {
+ "name": "克羅地亞"
+ },
+ "LR": {
+ "name": "利比里亞"
+ },
+ "LY": {
+ "name": "利比亞"
+ },
+ "GR": {
+ "name": "希臘"
+ },
+ "BN": {
+ "name": "汶èŠ"
+ },
+ "SA": {
+ "name": "沙特阿拉伯"
+ },
+ "BJ": {
+ "name": "è²å¯§"
+ },
+ "GQ": {
+ "name": "赤é“幾內亞"
+ },
+ "AM": {
+ "name": "亞美尼亞"
+ },
+ "TZ": {
+ "name": "å¦æ¡‘尼亞"
+ },
+ "VE": {
+ "name": "委內瑞拉"
+ },
+ "BD": {
+ "name": "孟加拉"
+ },
+ "GM": {
+ "name": "岡比亞"
+ },
+ "PW": {
+ "name": "帛ç‰"
+ },
+ "SB": {
+ "name": "所羅門群島"
+ },
+ "LV": {
+ "name": "拉脫維亞"
+ },
+ "TL": {
+ "name": "æ±å¸æ±¶"
+ },
+ "FR": {
+ "name": "法國"
+ },
+ "FO": {
+ "name": "法羅群島"
+ },
+ "GF": {
+ "name": "法屬圭亞那"
+ },
+ "PF": {
+ "name": "法屬波利尼西亞"
+ },
+ "TF": {
+ "name": "法屬å—部地å€"
+ },
+ "MF": {
+ "name": "法屬è–馬ä¸"
+ },
+ "PR": {
+ "name": "波多黎å„"
+ },
+ "BA": {
+ "name": "波斯尼亞和黑塞哥維那"
+ },
+ "PL": {
+ "name": "波蘭"
+ },
+ "GI": {
+ "name": "直布羅陀"
+ },
+ "KE": {
+ "name": "肯雅"
+ },
+ "FI": {
+ "name": "芬蘭"
+ },
+ "AE": {
+ "name": "阿拉伯è¯åˆé…‹é•·åœ‹"
+ },
+ "AR": {
+ "name": "阿根廷"
+ },
+ "OM": {
+ "name": "阿曼"
+ },
+ "AF": {
+ "name": "阿富汗"
+ },
+ "AC": {
+ "name": "阿森æ¾å³¶"
+ },
+ "AZ": {
+ "name": "阿塞拜疆"
+ },
+ "DZ": {
+ "name": "阿爾åŠåˆ©äºž"
+ },
+ "AL": {
+ "name": "阿爾巴尼亞"
+ },
+ "AW": {
+ "name": "阿魯巴"
+ },
+ "RU": {
+ "name": "ä¿„ç¾…æ–¯"
+ },
+ "BG": {
+ "name": "ä¿åŠ åˆ©äºž"
+ },
+ "GS": {
+ "name": "å—ä½æ²»äºžå³¶èˆ‡å—æ¡‘å¨å¥‡ç¾¤å³¶"
+ },
+ "ZA": {
+ "name": "å—éž"
+ },
+ "AQ": {
+ "name": "å—極洲"
+ },
+ "KR": {
+ "name": "å—韓"
+ },
+ "SS": {
+ "name": "å—蘇丹"
+ },
+ "KZ": {
+ "name": "哈薩克"
+ },
+ "KH": {
+ "name": "柬埔寨"
+ },
+ "ZW": {
+ "name": "津巴布韋"
+ },
+ "HN": {
+ "name": "洪都拉斯"
+ },
+ "BO": {
+ "name": "玻利維亞"
+ },
+ "KW": {
+ "name": "科å¨ç‰¹"
+ },
+ "CI": {
+ "name": "科特迪瓦"
+ },
+ "XK": {
+ "name": "科索沃"
+ },
+ "KM": {
+ "name": "科摩羅"
+ },
+ "TN": {
+ "name": "çªå°¼è¥¿äºž"
+ },
+ "JO": {
+ "name": "ç´„æ—¦"
+ },
+ "US": {
+ "name": "美國"
+ },
+ "UM": {
+ "name": "美國本土外å°å³¶å¶¼"
+ },
+ "VI": {
+ "name": "美屬維京群島"
+ },
+ "AS": {
+ "name": "美屬薩摩亞群島"
+ },
+ "GB": {
+ "name": "英國"
+ },
+ "IO": {
+ "name": "英屬å°åº¦æ´‹é ˜åœŸ"
+ },
+ "IM": {
+ "name": "英屬地曼島"
+ },
+ "VG": {
+ "name": "英屬維京群島"
+ },
+ "DG": {
+ "name": "迪亞哥加西亞島"
+ },
+ "CG": {
+ "name": "剛果 - 布拉薩"
+ },
+ "CD": {
+ "name": "剛果 - 金å¤æ²™"
+ },
+ "CO": {
+ "name": "哥倫比亞"
+ },
+ "CR": {
+ "name": "哥斯é”黎加"
+ },
+ "EG": {
+ "name": "埃åŠ"
+ },
+ "ET": {
+ "name": "埃塞俄比亞"
+ },
+ "CK": {
+ "name": "庫克群島"
+ },
+ "CW": {
+ "name": "庫拉索"
+ },
+ "NO": {
+ "name": "挪å¨"
+ },
+ "GG": {
+ "name": "根西島"
+ },
+ "GD": {
+ "name": "格林ç´é”"
+ },
+ "GL": {
+ "name": "格陵蘭"
+ },
+ "GE": {
+ "name": "格魯å‰äºž"
+ },
+ "TH": {
+ "name": "泰國"
+ },
+ "HT": {
+ "name": "海地"
+ },
+ "UG": {
+ "name": "çƒå¹²é”"
+ },
+ "UA": {
+ "name": "çƒå…‹è˜­"
+ },
+ "UY": {
+ "name": "çƒæ‹‰åœ­"
+ },
+ "UZ": {
+ "name": "çƒèŒ²åˆ¥å…‹"
+ },
+ "TC": {
+ "name": "特克斯和凱科斯群島"
+ },
+ "TA": {
+ "name": "特里斯å¦é”庫尼亞群島"
+ },
+ "RE": {
+ "name": "留尼旺"
+ },
+ "PE": {
+ "name": "秘魯"
+ },
+ "NA": {
+ "name": "ç´ç±³æ¯”亞"
+ },
+ "NZ": {
+ "name": "ç´è¥¿è˜­"
+ },
+ "NU": {
+ "name": "ç´åŸƒå³¶"
+ },
+ "SO": {
+ "name": "索馬里"
+ },
+ "MQ": {
+ "name": "馬ä¸å°¼å…‹å³¶"
+ },
+ "ML": {
+ "name": "馬里"
+ },
+ "MY": {
+ "name": "馬來西亞"
+ },
+ "MK": {
+ "name": "馬其頓"
+ },
+ "MW": {
+ "name": "馬拉å¨"
+ },
+ "YT": {
+ "name": "馬約特"
+ },
+ "MH": {
+ "name": "馬紹爾群島"
+ },
+ "MG": {
+ "name": "馬é”加斯加"
+ },
+ "MT": {
+ "name": "馬爾他"
+ },
+ "MV": {
+ "name": "馬爾代夫"
+ },
+ "FM": {
+ "name": "密克羅尼西亞群島"
+ },
+ "CZ": {
+ "name": "æ·å…‹å…±å’Œåœ‹"
+ },
+ "SY": {
+ "name": "敘利亞"
+ },
+ "VA": {
+ "name": "梵蒂岡宮城"
+ },
+ "SX": {
+ "name": "è·å±¬è–馬ä¸"
+ },
+ "NL": {
+ "name": "è·è˜­"
+ },
+ "BQ": {
+ "name": "è·è˜­åŠ å‹’比å€"
+ },
+ "MZ": {
+ "name": "莫桑比克"
+ },
+ "BW": {
+ "name": "åšèŒ¨ç“¦ç´"
+ },
+ "CM": {
+ "name": "喀麥隆"
+ },
+ "GN": {
+ "name": "幾內亞"
+ },
+ "GW": {
+ "name": "幾內亞比紹"
+ },
+ "FJ": {
+ "name": "æ–æ¿Ÿ"
+ },
+ "SJ": {
+ "name": "斯瓦爾巴群島åŠæšé¦¬å»¶å³¶"
+ },
+ "LK": {
+ "name": "斯里蘭å¡"
+ },
+ "SZ": {
+ "name": "æ–¯å¨å£«è˜­"
+ },
+ "SI": {
+ "name": "斯洛文尼亞"
+ },
+ "SK": {
+ "name": "斯洛ä¼å…‹"
+ },
+ "CL": {
+ "name": "智利"
+ },
+ "TO": {
+ "name": "湯加"
+ },
+ "PH": {
+ "name": "è²å¾‹è³“"
+ },
+ "LS": {
+ "name": "èŠç´¢æ‰˜"
+ },
+ "VN": {
+ "name": "越å—"
+ },
+ "KY": {
+ "name": "開曼群島"
+ },
+ "ME": {
+ "name": "黑山"
+ },
+ "TJ": {
+ "name": "å¡”å‰å…‹"
+ },
+ "SN": {
+ "name": "塞內加爾"
+ },
+ "SC": {
+ "name": "塞舌爾"
+ },
+ "SL": {
+ "name": "塞拉利昂"
+ },
+ "CY": {
+ "name": "塞浦路斯"
+ },
+ "RS": {
+ "name": "塞爾維亞"
+ },
+ "AT": {
+ "name": "奧地利"
+ },
+ "AX": {
+ "name": "奧蘭群島"
+ },
+ "IT": {
+ "name": "æ„大利"
+ },
+ "EE": {
+ "name": "愛沙尼亞"
+ },
+ "IE": {
+ "name": "愛爾蘭"
+ },
+ "SG": {
+ "name": "新加å¡"
+ },
+ "NC": {
+ "name": "新喀里多尼亞"
+ },
+ "NR": {
+ "name": "瑙魯"
+ },
+ "CH": {
+ "name": "瑞士"
+ },
+ "SE": {
+ "name": "ç‘žå…¸"
+ },
+ "BL": {
+ "name": "è–å·´æ³°å‹’ç±³"
+ },
+ "VC": {
+ "name": "è–文森特和格林ç´ä¸æ–¯"
+ },
+ "PM": {
+ "name": "è–皮埃爾和密克隆群島"
+ },
+ "ST": {
+ "name": "è–多美普林西比"
+ },
+ "SM": {
+ "name": "è–馬利諾"
+ },
+ "KN": {
+ "name": "è–基茨和尼維斯"
+ },
+ "SH": {
+ "name": "è–赫勒拿島"
+ },
+ "CX": {
+ "name": "è–誕島"
+ },
+ "LC": {
+ "name": "è–盧西亞"
+ },
+ "PT": {
+ "name": "è‘¡è„牙"
+ },
+ "TV": {
+ "name": "圖瓦盧"
+ },
+ "FK": {
+ "name": "ç¦å…‹è˜­ç¾¤å³¶"
+ },
+ "MN": {
+ "name": "è’™å¤"
+ },
+ "MS": {
+ "name": "蒙塞拉特島"
+ },
+ "GY": {
+ "name": "蓋亞那"
+ },
+ "LA": {
+ "name": "寮國"
+ },
+ "DE": {
+ "name": "德國"
+ },
+ "MA": {
+ "name": "摩洛哥"
+ },
+ "MC": {
+ "name": "æ‘©ç´å“¥"
+ },
+ "MD": {
+ "name": "摩爾多瓦"
+ },
+ "MM": {
+ "name": "緬甸"
+ },
+ "LB": {
+ "name": "黎巴嫩"
+ },
+ "MX": {
+ "name": "墨西哥"
+ },
+ "JE": {
+ "name": "澤西島"
+ },
+ "AU": {
+ "name": "澳洲"
+ },
+ "RW": {
+ "name": "盧旺é”"
+ },
+ "LU": {
+ "name": "盧森堡"
+ },
+ "NF": {
+ "name": "諾ç¦å…‹å³¶"
+ },
+ "SV": {
+ "name": "薩爾瓦多"
+ },
+ "WS": {
+ "name": "薩摩亞群島"
+ },
+ "RO": {
+ "name": "羅馬尼亞"
+ },
+ "ZM": {
+ "name": "贊比亞"
+ },
+ "GU": {
+ "name": "關島"
+ },
+ "SD": {
+ "name": "蘇丹"
+ },
+ "SR": {
+ "name": "蘇里å—"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/country/zh-Hant-MO.json b/library/intl/resources/country/zh-Hant-MO.json
new file mode 100644
index 000000000..f0f5ba0cf
--- /dev/null
+++ b/library/intl/resources/country/zh-Hant-MO.json
@@ -0,0 +1,761 @@
+{
+ "YE": {
+ "name": "也門"
+ },
+ "TT": {
+ "name": "åƒé‡Œé”和多巴哥"
+ },
+ "TR": {
+ "name": "土耳其"
+ },
+ "TM": {
+ "name": "土庫曼"
+ },
+ "BT": {
+ "name": "ä¸ä¸¹"
+ },
+ "CF": {
+ "name": "中éžå…±å’Œåœ‹"
+ },
+ "CN": {
+ "name": "中è¯äººæ°‘共和國"
+ },
+ "HK": {
+ "name": "中è¯äººæ°‘共和國香港特別行政å€"
+ },
+ "MO": {
+ "name": "中è¯äººæ°‘共和國澳門特別行政å€"
+ },
+ "DK": {
+ "name": "丹麥"
+ },
+ "EC": {
+ "name": "厄瓜多"
+ },
+ "ER": {
+ "name": "厄立特里亞"
+ },
+ "BB": {
+ "name": "巴巴多斯"
+ },
+ "PG": {
+ "name": "巴布亞新幾內亞"
+ },
+ "BR": {
+ "name": "巴西"
+ },
+ "PY": {
+ "name": "巴拉圭"
+ },
+ "BH": {
+ "name": "å·´æž—"
+ },
+ "BS": {
+ "name": "巴哈馬"
+ },
+ "PA": {
+ "name": "巴拿馬"
+ },
+ "PS": {
+ "name": "å·´å‹’æ–¯å¦è‡ªæ²»å€"
+ },
+ "PK": {
+ "name": "巴基斯å¦"
+ },
+ "JP": {
+ "name": "日本"
+ },
+ "BE": {
+ "name": "比利時"
+ },
+ "MR": {
+ "name": "毛里塔尼亞"
+ },
+ "MU": {
+ "name": "毛里裘斯"
+ },
+ "JM": {
+ "name": "牙買加"
+ },
+ "TD": {
+ "name": "ä¹å¾—"
+ },
+ "IL": {
+ "name": "以色列"
+ },
+ "IC": {
+ "name": "加那利群島"
+ },
+ "CA": {
+ "name": "加拿大"
+ },
+ "GH": {
+ "name": "加ç´"
+ },
+ "GA": {
+ "name": "加蓬"
+ },
+ "MP": {
+ "name": "北馬里亞ç´ç¾¤å³¶"
+ },
+ "KP": {
+ "name": "北韓"
+ },
+ "QA": {
+ "name": "å¡å¡”爾"
+ },
+ "CU": {
+ "name": "å¤å·´"
+ },
+ "CC": {
+ "name": "å¯å¯æ–¯ç¾¤å³¶"
+ },
+ "TW": {
+ "name": "å°ç£"
+ },
+ "NG": {
+ "name": "尼日利亞"
+ },
+ "NE": {
+ "name": "尼日爾"
+ },
+ "NI": {
+ "name": "尼加拉瓜"
+ },
+ "NP": {
+ "name": "尼泊爾"
+ },
+ "BF": {
+ "name": "布å‰ç´æ³•ç´¢"
+ },
+ "BI": {
+ "name": "布隆迪"
+ },
+ "GP": {
+ "name": "瓜地洛普"
+ },
+ "WF": {
+ "name": "瓦利斯和富圖ç´ç¾¤å³¶"
+ },
+ "VU": {
+ "name": "瓦努阿圖"
+ },
+ "BY": {
+ "name": "白俄羅斯"
+ },
+ "PN": {
+ "name": "皮特凱æ©å³¶"
+ },
+ "LT": {
+ "name": "立陶宛"
+ },
+ "IQ": {
+ "name": "伊拉克"
+ },
+ "IR": {
+ "name": "伊朗"
+ },
+ "EA": {
+ "name": "休é”與梅利利亞"
+ },
+ "IS": {
+ "name": "冰島"
+ },
+ "LI": {
+ "name": "列支敦士登"
+ },
+ "HU": {
+ "name": "匈牙利"
+ },
+ "ID": {
+ "name": "å°å°¼"
+ },
+ "IN": {
+ "name": "å°åº¦"
+ },
+ "GT": {
+ "name": "å±åœ°é¦¬æ‹‰"
+ },
+ "DJ": {
+ "name": "å‰å¸ƒåœ°"
+ },
+ "KI": {
+ "name": "å‰é‡Œå·´æ–¯"
+ },
+ "KG": {
+ "name": "å‰çˆ¾å‰æ–¯"
+ },
+ "DM": {
+ "name": "多米尼克"
+ },
+ "DO": {
+ "name": "多明尼加共和國"
+ },
+ "TG": {
+ "name": "多哥共和國"
+ },
+ "AI": {
+ "name": "安圭拉"
+ },
+ "AO": {
+ "name": "安哥拉"
+ },
+ "AG": {
+ "name": "安æç“œåŠå·´å¸ƒé”"
+ },
+ "AD": {
+ "name": "安é“爾"
+ },
+ "TK": {
+ "name": "托克勞群島"
+ },
+ "BM": {
+ "name": "百慕é”"
+ },
+ "ES": {
+ "name": "西ç­ç‰™"
+ },
+ "EH": {
+ "name": "西撒哈拉"
+ },
+ "BZ": {
+ "name": "伯利茲"
+ },
+ "CV": {
+ "name": "佛得角"
+ },
+ "HR": {
+ "name": "克羅地亞"
+ },
+ "LR": {
+ "name": "利比里亞"
+ },
+ "LY": {
+ "name": "利比亞"
+ },
+ "GR": {
+ "name": "希臘"
+ },
+ "BN": {
+ "name": "汶èŠ"
+ },
+ "SA": {
+ "name": "沙特阿拉伯"
+ },
+ "BJ": {
+ "name": "è²å¯§"
+ },
+ "GQ": {
+ "name": "赤é“幾內亞"
+ },
+ "AM": {
+ "name": "亞美尼亞"
+ },
+ "TZ": {
+ "name": "å¦æ¡‘尼亞"
+ },
+ "VE": {
+ "name": "委內瑞拉"
+ },
+ "BD": {
+ "name": "孟加拉"
+ },
+ "GM": {
+ "name": "岡比亞"
+ },
+ "PW": {
+ "name": "帛ç‰"
+ },
+ "SB": {
+ "name": "所羅門群島"
+ },
+ "LV": {
+ "name": "拉脫維亞"
+ },
+ "TL": {
+ "name": "æ±å¸æ±¶"
+ },
+ "FR": {
+ "name": "法國"
+ },
+ "FO": {
+ "name": "法羅群島"
+ },
+ "GF": {
+ "name": "法屬圭亞那"
+ },
+ "PF": {
+ "name": "法屬波利尼西亞"
+ },
+ "TF": {
+ "name": "法屬å—部地å€"
+ },
+ "MF": {
+ "name": "法屬è–馬ä¸"
+ },
+ "PR": {
+ "name": "波多黎å„"
+ },
+ "BA": {
+ "name": "波斯尼亞和黑塞哥維那"
+ },
+ "PL": {
+ "name": "波蘭"
+ },
+ "GI": {
+ "name": "直布羅陀"
+ },
+ "KE": {
+ "name": "肯雅"
+ },
+ "FI": {
+ "name": "芬蘭"
+ },
+ "AE": {
+ "name": "阿拉伯è¯åˆé…‹é•·åœ‹"
+ },
+ "AR": {
+ "name": "阿根廷"
+ },
+ "OM": {
+ "name": "阿曼"
+ },
+ "AF": {
+ "name": "阿富汗"
+ },
+ "AC": {
+ "name": "阿森æ¾å³¶"
+ },
+ "AZ": {
+ "name": "阿塞拜疆"
+ },
+ "DZ": {
+ "name": "阿爾åŠåˆ©äºž"
+ },
+ "AL": {
+ "name": "阿爾巴尼亞"
+ },
+ "AW": {
+ "name": "阿魯巴"
+ },
+ "RU": {
+ "name": "ä¿„ç¾…æ–¯"
+ },
+ "BG": {
+ "name": "ä¿åŠ åˆ©äºž"
+ },
+ "GS": {
+ "name": "å—ä½æ²»äºžå³¶èˆ‡å—æ¡‘å¨å¥‡ç¾¤å³¶"
+ },
+ "ZA": {
+ "name": "å—éž"
+ },
+ "AQ": {
+ "name": "å—極洲"
+ },
+ "KR": {
+ "name": "å—韓"
+ },
+ "SS": {
+ "name": "å—蘇丹"
+ },
+ "KZ": {
+ "name": "哈薩克"
+ },
+ "KH": {
+ "name": "柬埔寨"
+ },
+ "ZW": {
+ "name": "津巴布韋"
+ },
+ "HN": {
+ "name": "洪都拉斯"
+ },
+ "BO": {
+ "name": "玻利維亞"
+ },
+ "KW": {
+ "name": "科å¨ç‰¹"
+ },
+ "CI": {
+ "name": "科特迪瓦"
+ },
+ "XK": {
+ "name": "科索沃"
+ },
+ "KM": {
+ "name": "科摩羅"
+ },
+ "TN": {
+ "name": "çªå°¼è¥¿äºž"
+ },
+ "JO": {
+ "name": "ç´„æ—¦"
+ },
+ "US": {
+ "name": "美國"
+ },
+ "UM": {
+ "name": "美國本土外å°å³¶å¶¼"
+ },
+ "VI": {
+ "name": "美屬維京群島"
+ },
+ "AS": {
+ "name": "美屬薩摩亞群島"
+ },
+ "GB": {
+ "name": "英國"
+ },
+ "IO": {
+ "name": "英屬å°åº¦æ´‹é ˜åœŸ"
+ },
+ "IM": {
+ "name": "英屬地曼島"
+ },
+ "VG": {
+ "name": "英屬維京群島"
+ },
+ "DG": {
+ "name": "迪亞哥加西亞島"
+ },
+ "CG": {
+ "name": "剛果 - 布拉薩"
+ },
+ "CD": {
+ "name": "剛果 - 金å¤æ²™"
+ },
+ "CO": {
+ "name": "哥倫比亞"
+ },
+ "CR": {
+ "name": "哥斯é”黎加"
+ },
+ "EG": {
+ "name": "埃åŠ"
+ },
+ "ET": {
+ "name": "埃塞俄比亞"
+ },
+ "CK": {
+ "name": "庫克群島"
+ },
+ "CW": {
+ "name": "庫拉索"
+ },
+ "NO": {
+ "name": "挪å¨"
+ },
+ "GG": {
+ "name": "根西島"
+ },
+ "GD": {
+ "name": "格林ç´é”"
+ },
+ "GL": {
+ "name": "格陵蘭"
+ },
+ "GE": {
+ "name": "格魯å‰äºž"
+ },
+ "TH": {
+ "name": "泰國"
+ },
+ "HT": {
+ "name": "海地"
+ },
+ "UG": {
+ "name": "çƒå¹²é”"
+ },
+ "UA": {
+ "name": "çƒå…‹è˜­"
+ },
+ "UY": {
+ "name": "çƒæ‹‰åœ­"
+ },
+ "UZ": {
+ "name": "çƒèŒ²åˆ¥å…‹"
+ },
+ "TC": {
+ "name": "特克斯和凱科斯群島"
+ },
+ "TA": {
+ "name": "特里斯å¦é”庫尼亞群島"
+ },
+ "RE": {
+ "name": "留尼旺"
+ },
+ "PE": {
+ "name": "秘魯"
+ },
+ "NA": {
+ "name": "ç´ç±³æ¯”亞"
+ },
+ "NZ": {
+ "name": "ç´è¥¿è˜­"
+ },
+ "NU": {
+ "name": "ç´åŸƒå³¶"
+ },
+ "SO": {
+ "name": "索馬里"
+ },
+ "MQ": {
+ "name": "馬ä¸å°¼å…‹å³¶"
+ },
+ "ML": {
+ "name": "馬里"
+ },
+ "MY": {
+ "name": "馬來西亞"
+ },
+ "MK": {
+ "name": "馬其頓"
+ },
+ "MW": {
+ "name": "馬拉å¨"
+ },
+ "YT": {
+ "name": "馬約特"
+ },
+ "MH": {
+ "name": "馬紹爾群島"
+ },
+ "MG": {
+ "name": "馬é”加斯加"
+ },
+ "MT": {
+ "name": "馬爾他"
+ },
+ "MV": {
+ "name": "馬爾代夫"
+ },
+ "FM": {
+ "name": "密克羅尼西亞群島"
+ },
+ "CZ": {
+ "name": "æ·å…‹å…±å’Œåœ‹"
+ },
+ "SY": {
+ "name": "敘利亞"
+ },
+ "VA": {
+ "name": "梵蒂岡宮城"
+ },
+ "SX": {
+ "name": "è·å±¬è–馬ä¸"
+ },
+ "NL": {
+ "name": "è·è˜­"
+ },
+ "BQ": {
+ "name": "è·è˜­åŠ å‹’比å€"
+ },
+ "MZ": {
+ "name": "莫桑比克"
+ },
+ "BW": {
+ "name": "åšèŒ¨ç“¦ç´"
+ },
+ "CM": {
+ "name": "喀麥隆"
+ },
+ "GN": {
+ "name": "幾內亞"
+ },
+ "GW": {
+ "name": "幾內亞比紹"
+ },
+ "FJ": {
+ "name": "æ–æ¿Ÿ"
+ },
+ "SJ": {
+ "name": "斯瓦爾巴群島åŠæšé¦¬å»¶å³¶"
+ },
+ "LK": {
+ "name": "斯里蘭å¡"
+ },
+ "SZ": {
+ "name": "æ–¯å¨å£«è˜­"
+ },
+ "SI": {
+ "name": "斯洛文尼亞"
+ },
+ "SK": {
+ "name": "斯洛ä¼å…‹"
+ },
+ "CL": {
+ "name": "智利"
+ },
+ "TO": {
+ "name": "湯加"
+ },
+ "PH": {
+ "name": "è²å¾‹è³“"
+ },
+ "LS": {
+ "name": "èŠç´¢æ‰˜"
+ },
+ "VN": {
+ "name": "越å—"
+ },
+ "KY": {
+ "name": "開曼群島"
+ },
+ "ME": {
+ "name": "黑山"
+ },
+ "TJ": {
+ "name": "å¡”å‰å…‹"
+ },
+ "SN": {
+ "name": "塞內加爾"
+ },
+ "SC": {
+ "name": "塞舌爾"
+ },
+ "SL": {
+ "name": "塞拉利昂"
+ },
+ "CY": {
+ "name": "塞浦路斯"
+ },
+ "RS": {
+ "name": "塞爾維亞"
+ },
+ "AT": {
+ "name": "奧地利"
+ },
+ "AX": {
+ "name": "奧蘭群島"
+ },
+ "IT": {
+ "name": "æ„大利"
+ },
+ "EE": {
+ "name": "愛沙尼亞"
+ },
+ "IE": {
+ "name": "愛爾蘭"
+ },
+ "SG": {
+ "name": "新加å¡"
+ },
+ "NC": {
+ "name": "新喀里多尼亞"
+ },
+ "NR": {
+ "name": "瑙魯"
+ },
+ "CH": {
+ "name": "瑞士"
+ },
+ "SE": {
+ "name": "ç‘žå…¸"
+ },
+ "BL": {
+ "name": "è–å·´æ³°å‹’ç±³"
+ },
+ "VC": {
+ "name": "è–文森特和格林ç´ä¸æ–¯"
+ },
+ "PM": {
+ "name": "è–皮埃爾和密克隆群島"
+ },
+ "ST": {
+ "name": "è–多美普林西比"
+ },
+ "SM": {
+ "name": "è–馬利諾"
+ },
+ "KN": {
+ "name": "è–基茨和尼維斯"
+ },
+ "SH": {
+ "name": "è–赫勒拿島"
+ },
+ "CX": {
+ "name": "è–誕島"
+ },
+ "LC": {
+ "name": "è–盧西亞"
+ },
+ "PT": {
+ "name": "è‘¡è„牙"
+ },
+ "TV": {
+ "name": "圖瓦盧"
+ },
+ "FK": {
+ "name": "ç¦å…‹è˜­ç¾¤å³¶"
+ },
+ "MN": {
+ "name": "è’™å¤"
+ },
+ "MS": {
+ "name": "蒙塞拉特島"
+ },
+ "GY": {
+ "name": "蓋亞那"
+ },
+ "LA": {
+ "name": "寮國"
+ },
+ "DE": {
+ "name": "德國"
+ },
+ "MA": {
+ "name": "摩洛哥"
+ },
+ "MC": {
+ "name": "æ‘©ç´å“¥"
+ },
+ "MD": {
+ "name": "摩爾多瓦"
+ },
+ "MM": {
+ "name": "緬甸"
+ },
+ "LB": {
+ "name": "黎巴嫩"
+ },
+ "MX": {
+ "name": "墨西哥"
+ },
+ "JE": {
+ "name": "澤西島"
+ },
+ "AU": {
+ "name": "澳洲"
+ },
+ "RW": {
+ "name": "盧旺é”"
+ },
+ "LU": {
+ "name": "盧森堡"
+ },
+ "NF": {
+ "name": "諾ç¦å…‹å³¶"
+ },
+ "SV": {
+ "name": "薩爾瓦多"
+ },
+ "WS": {
+ "name": "薩摩亞群島"
+ },
+ "RO": {
+ "name": "羅馬尼亞"
+ },
+ "ZM": {
+ "name": "贊比亞"
+ },
+ "GU": {
+ "name": "關島"
+ },
+ "SD": {
+ "name": "蘇丹"
+ },
+ "SR": {
+ "name": "蘇里å—"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/country/zh-Hant.json b/library/intl/resources/country/zh-Hant.json
new file mode 100644
index 000000000..08638e361
--- /dev/null
+++ b/library/intl/resources/country/zh-Hant.json
@@ -0,0 +1,761 @@
+{
+ "TT": {
+ "name": "åƒé‡Œé”åŠæ‰˜å·´å“¥"
+ },
+ "TR": {
+ "name": "土耳其"
+ },
+ "TC": {
+ "name": "土克斯åŠé–‹ç§‘斯群島"
+ },
+ "TM": {
+ "name": "土庫曼"
+ },
+ "BT": {
+ "name": "ä¸ä¸¹"
+ },
+ "CF": {
+ "name": "中éžå…±å’Œåœ‹"
+ },
+ "CN": {
+ "name": "中è¯äººæ°‘共和國"
+ },
+ "HK": {
+ "name": "中è¯äººæ°‘共和國香港特別行政å€"
+ },
+ "MO": {
+ "name": "中è¯äººæ°‘共和國澳門特別行政å€"
+ },
+ "DK": {
+ "name": "丹麥"
+ },
+ "EC": {
+ "name": "厄瓜多"
+ },
+ "ER": {
+ "name": "厄利垂亞"
+ },
+ "PG": {
+ "name": "巴布亞ç´å¹¾å…§äºž"
+ },
+ "BR": {
+ "name": "巴西"
+ },
+ "BB": {
+ "name": "å·´è²å¤š"
+ },
+ "PY": {
+ "name": "巴拉圭"
+ },
+ "BH": {
+ "name": "å·´æž—"
+ },
+ "BS": {
+ "name": "巴哈馬"
+ },
+ "PA": {
+ "name": "巴拿馬"
+ },
+ "PS": {
+ "name": "å·´å‹’æ–¯å¦è‡ªæ²»å€"
+ },
+ "PK": {
+ "name": "巴基斯å¦"
+ },
+ "JP": {
+ "name": "日本"
+ },
+ "BE": {
+ "name": "比利時"
+ },
+ "JM": {
+ "name": "牙買加"
+ },
+ "IL": {
+ "name": "以色列"
+ },
+ "IC": {
+ "name": "加那利群島"
+ },
+ "CA": {
+ "name": "加拿大"
+ },
+ "GA": {
+ "name": "加彭"
+ },
+ "MP": {
+ "name": "北馬里亞ç´ç¾¤å³¶"
+ },
+ "KP": {
+ "name": "北韓"
+ },
+ "QA": {
+ "name": "å¡é”"
+ },
+ "CU": {
+ "name": "å¤å·´"
+ },
+ "CC": {
+ "name": "å¯å¯æ–¯ç¾¤å³¶"
+ },
+ "TW": {
+ "name": "å°ç£"
+ },
+ "SZ": {
+ "name": "å²ç“¦æ¿Ÿè˜­"
+ },
+ "NE": {
+ "name": "尼日"
+ },
+ "NI": {
+ "name": "尼加拉瓜"
+ },
+ "NP": {
+ "name": "尼泊爾"
+ },
+ "BF": {
+ "name": "布å‰ç´æ³•ç´¢"
+ },
+ "GP": {
+ "name": "瓜地洛普"
+ },
+ "GT": {
+ "name": "瓜地馬拉"
+ },
+ "WF": {
+ "name": "瓦利斯和富圖ç´ç¾¤å³¶"
+ },
+ "GM": {
+ "name": "甘比亞"
+ },
+ "BY": {
+ "name": "白俄羅斯"
+ },
+ "PN": {
+ "name": "皮特肯群島"
+ },
+ "LT": {
+ "name": "立陶宛"
+ },
+ "IQ": {
+ "name": "伊拉克"
+ },
+ "IR": {
+ "name": "伊朗"
+ },
+ "EA": {
+ "name": "休é”與梅利利亞"
+ },
+ "IS": {
+ "name": "冰島"
+ },
+ "LI": {
+ "name": "列支敦斯登"
+ },
+ "HU": {
+ "name": "匈牙利"
+ },
+ "ID": {
+ "name": "å°å°¼"
+ },
+ "IN": {
+ "name": "å°åº¦"
+ },
+ "DJ": {
+ "name": "å‰å¸ƒåœ°"
+ },
+ "KI": {
+ "name": "å‰é‡Œå·´æ–¯"
+ },
+ "KG": {
+ "name": "å‰çˆ¾å‰æ–¯"
+ },
+ "TV": {
+ "name": "å瓦魯"
+ },
+ "DM": {
+ "name": "多米尼克"
+ },
+ "DO": {
+ "name": "多明尼加共和國"
+ },
+ "TG": {
+ "name": "多哥共和國"
+ },
+ "AI": {
+ "name": "安圭拉島"
+ },
+ "AG": {
+ "name": "安地å¡åŠå·´å¸ƒé”"
+ },
+ "AO": {
+ "name": "安哥拉"
+ },
+ "AD": {
+ "name": "安é“爾"
+ },
+ "TK": {
+ "name": "托克勞群島"
+ },
+ "BM": {
+ "name": "百慕é”"
+ },
+ "ET": {
+ "name": "衣索比亞"
+ },
+ "ES": {
+ "name": "西ç­ç‰™"
+ },
+ "EH": {
+ "name": "西撒哈拉"
+ },
+ "HR": {
+ "name": "克羅埃西亞"
+ },
+ "SJ": {
+ "name": "冷岸åŠå¤®éº¥æ©ç¾¤å³¶"
+ },
+ "LY": {
+ "name": "利比亞"
+ },
+ "HN": {
+ "name": "å®éƒ½æ‹‰æ–¯"
+ },
+ "GR": {
+ "name": "希臘"
+ },
+ "BN": {
+ "name": "汶èŠ"
+ },
+ "SA": {
+ "name": "æ²™çƒåœ°é˜¿æ‹‰ä¼¯"
+ },
+ "BZ": {
+ "name": "è²é‡Œæ–¯"
+ },
+ "BJ": {
+ "name": "è²å—"
+ },
+ "GQ": {
+ "name": "赤é“幾內亞"
+ },
+ "ZW": {
+ "name": "辛巴å¨"
+ },
+ "AM": {
+ "name": "亞美尼亞"
+ },
+ "AZ": {
+ "name": "亞塞拜然"
+ },
+ "TZ": {
+ "name": "å¦å°šå°¼äºž"
+ },
+ "NG": {
+ "name": "奈åŠåˆ©äºž"
+ },
+ "VE": {
+ "name": "委內瑞拉"
+ },
+ "BD": {
+ "name": "孟加拉"
+ },
+ "ZM": {
+ "name": "尚比亞"
+ },
+ "PW": {
+ "name": "帛ç‰"
+ },
+ "LV": {
+ "name": "拉脫維亞"
+ },
+ "TO": {
+ "name": "æ±åŠ "
+ },
+ "TL": {
+ "name": "æ±å¸æ±¶"
+ },
+ "FR": {
+ "name": "法國"
+ },
+ "FO": {
+ "name": "法羅群島"
+ },
+ "GF": {
+ "name": "法屬圭亞那"
+ },
+ "TF": {
+ "name": "法屬å—方屬地"
+ },
+ "PF": {
+ "name": "法屬玻里尼西亞"
+ },
+ "MF": {
+ "name": "法屬è–馬ä¸"
+ },
+ "BA": {
+ "name": "波士尼亞與赫塞格維ç´"
+ },
+ "BW": {
+ "name": "波札那"
+ },
+ "PR": {
+ "name": "波多黎å„"
+ },
+ "PL": {
+ "name": "波蘭"
+ },
+ "GI": {
+ "name": "直布羅陀"
+ },
+ "KE": {
+ "name": "肯亞"
+ },
+ "FI": {
+ "name": "芬蘭"
+ },
+ "AE": {
+ "name": "阿拉伯è¯åˆå¤§å…¬åœ‹"
+ },
+ "AR": {
+ "name": "阿根廷"
+ },
+ "OM": {
+ "name": "阿曼王國"
+ },
+ "AF": {
+ "name": "阿富汗"
+ },
+ "AC": {
+ "name": "阿森æ¾å³¶"
+ },
+ "AW": {
+ "name": "阿路巴"
+ },
+ "DZ": {
+ "name": "阿爾åŠåˆ©äºž"
+ },
+ "AL": {
+ "name": "阿爾巴尼亞"
+ },
+ "RU": {
+ "name": "ä¿„ç¾…æ–¯"
+ },
+ "BG": {
+ "name": "ä¿åŠ åˆ©äºž"
+ },
+ "ZA": {
+ "name": "å—éž"
+ },
+ "GS": {
+ "name": "å—喬治亞與å—三明治群島"
+ },
+ "AQ": {
+ "name": "å—極洲"
+ },
+ "KR": {
+ "name": "å—韓"
+ },
+ "SS": {
+ "name": "å—蘇丹"
+ },
+ "KZ": {
+ "name": "哈薩克"
+ },
+ "TD": {
+ "name": "查德"
+ },
+ "KH": {
+ "name": "柬埔寨"
+ },
+ "BO": {
+ "name": "玻利維亞"
+ },
+ "KW": {
+ "name": "科å¨ç‰¹"
+ },
+ "XK": {
+ "name": "科索沃"
+ },
+ "TN": {
+ "name": "çªå°¼è¥¿äºž"
+ },
+ "JO": {
+ "name": "ç´„æ—¦"
+ },
+ "US": {
+ "name": "美國"
+ },
+ "UM": {
+ "name": "美國本土外å°å³¶å¶¼"
+ },
+ "VI": {
+ "name": "美屬維京群島"
+ },
+ "AS": {
+ "name": "美屬薩摩亞群島"
+ },
+ "GB": {
+ "name": "英國"
+ },
+ "IO": {
+ "name": "英屬å°åº¦æ´‹é ˜åœŸ"
+ },
+ "VG": {
+ "name": "英屬維京群島"
+ },
+ "MR": {
+ "name": "茅利塔尼亞"
+ },
+ "GH": {
+ "name": "迦ç´"
+ },
+ "DG": {
+ "name": "迪亞哥加西亞島"
+ },
+ "CG": {
+ "name": "剛果(布拉薩)"
+ },
+ "CD": {
+ "name": "剛果(金å¤æ²™ï¼‰"
+ },
+ "CO": {
+ "name": "哥倫比亞"
+ },
+ "CR": {
+ "name": "哥斯大黎加"
+ },
+ "EG": {
+ "name": "埃åŠ"
+ },
+ "CK": {
+ "name": "庫克群島"
+ },
+ "CW": {
+ "name": "庫拉索"
+ },
+ "NO": {
+ "name": "挪å¨"
+ },
+ "GG": {
+ "name": "根西島"
+ },
+ "GL": {
+ "name": "格陵蘭"
+ },
+ "GD": {
+ "name": "格瑞那é”"
+ },
+ "TH": {
+ "name": "泰國"
+ },
+ "HT": {
+ "name": "海地"
+ },
+ "UG": {
+ "name": "çƒå¹²é”"
+ },
+ "UA": {
+ "name": "çƒå…‹è˜­"
+ },
+ "UY": {
+ "name": "çƒæ‹‰åœ­"
+ },
+ "UZ": {
+ "name": "çƒèŒ²åˆ¥å…‹"
+ },
+ "TA": {
+ "name": "特里斯å¦é”庫尼亞群島"
+ },
+ "RE": {
+ "name": "留尼旺"
+ },
+ "PE": {
+ "name": "秘魯"
+ },
+ "NA": {
+ "name": "ç´ç±³æ¯”亞"
+ },
+ "NZ": {
+ "name": "ç´è¥¿è˜­"
+ },
+ "NU": {
+ "name": "ç´åŸƒå³¶"
+ },
+ "SO": {
+ "name": "索馬利亞"
+ },
+ "SB": {
+ "name": "索羅門群島"
+ },
+ "MQ": {
+ "name": "馬ä¸å°¼å…‹å³¶"
+ },
+ "ML": {
+ "name": "馬利"
+ },
+ "MY": {
+ "name": "馬來西亞"
+ },
+ "MK": {
+ "name": "馬其頓"
+ },
+ "MW": {
+ "name": "馬拉å¨"
+ },
+ "YT": {
+ "name": "馬約特"
+ },
+ "MH": {
+ "name": "馬紹爾群島"
+ },
+ "MG": {
+ "name": "馬é”加斯加"
+ },
+ "MT": {
+ "name": "馬爾他"
+ },
+ "MV": {
+ "name": "馬爾地夫"
+ },
+ "FM": {
+ "name": "密克羅尼西亞群島"
+ },
+ "CZ": {
+ "name": "æ·å…‹å…±å’Œåœ‹"
+ },
+ "SY": {
+ "name": "敘利亞"
+ },
+ "IM": {
+ "name": "曼島"
+ },
+ "VA": {
+ "name": "梵蒂岡"
+ },
+ "SX": {
+ "name": "è·å±¬è–馬ä¸"
+ },
+ "NL": {
+ "name": "è·è˜­"
+ },
+ "BQ": {
+ "name": "è·è˜­åŠ å‹’比å€"
+ },
+ "MZ": {
+ "name": "莫三比克"
+ },
+ "CM": {
+ "name": "喀麥隆"
+ },
+ "GE": {
+ "name": "喬治亞共和國"
+ },
+ "GN": {
+ "name": "幾內亞"
+ },
+ "GW": {
+ "name": "幾內亞比紹"
+ },
+ "FJ": {
+ "name": "æ–æ¿Ÿ"
+ },
+ "LK": {
+ "name": "斯里蘭å¡"
+ },
+ "SK": {
+ "name": "斯洛ä¼å…‹"
+ },
+ "SI": {
+ "name": "斯洛維尼亞"
+ },
+ "CL": {
+ "name": "智利"
+ },
+ "PH": {
+ "name": "è²å¾‹è³“"
+ },
+ "CI": {
+ "name": "象牙海岸"
+ },
+ "VN": {
+ "name": "越å—"
+ },
+ "KY": {
+ "name": "開曼群島"
+ },
+ "TJ": {
+ "name": "å¡”å‰å…‹"
+ },
+ "SN": {
+ "name": "塞內加爾"
+ },
+ "SC": {
+ "name": "塞席爾"
+ },
+ "RS": {
+ "name": "塞爾維亞"
+ },
+ "AT": {
+ "name": "奧地利"
+ },
+ "AX": {
+ "name": "奧蘭群島"
+ },
+ "EE": {
+ "name": "愛沙尼亞"
+ },
+ "IE": {
+ "name": "愛爾蘭"
+ },
+ "SG": {
+ "name": "新加å¡"
+ },
+ "NC": {
+ "name": "新喀里多尼亞群島"
+ },
+ "SL": {
+ "name": "ç…å­å±±"
+ },
+ "CH": {
+ "name": "瑞士"
+ },
+ "SE": {
+ "name": "ç‘žå…¸"
+ },
+ "VU": {
+ "name": "è¬é‚£æœ"
+ },
+ "IT": {
+ "name": "義大利"
+ },
+ "BL": {
+ "name": "è–å·´ç‘Ÿç±³"
+ },
+ "VC": {
+ "name": "è–文森åŠæ ¼ç‘žé‚£ä¸"
+ },
+ "PM": {
+ "name": "è–皮埃爾和密克隆群島"
+ },
+ "ST": {
+ "name": "è–多美åŠæ™®æž—西比"
+ },
+ "KN": {
+ "name": "è–克里斯多ç¦åŠå°¼ç¶­æ–¯"
+ },
+ "SM": {
+ "name": "è–馬利諾"
+ },
+ "SH": {
+ "name": "è–赫勒拿島"
+ },
+ "CX": {
+ "name": "è–誕島"
+ },
+ "LC": {
+ "name": "è–露西亞"
+ },
+ "YE": {
+ "name": "葉門"
+ },
+ "KM": {
+ "name": "葛摩"
+ },
+ "PT": {
+ "name": "è‘¡è„牙"
+ },
+ "FK": {
+ "name": "ç¦å…‹è˜­ç¾¤å³¶"
+ },
+ "CV": {
+ "name": "維德角"
+ },
+ "MN": {
+ "name": "è’™å¤"
+ },
+ "MS": {
+ "name": "蒙哲臘"
+ },
+ "ME": {
+ "name": "蒙特內哥羅"
+ },
+ "BI": {
+ "name": "蒲隆地"
+ },
+ "GY": {
+ "name": "蓋亞那"
+ },
+ "LA": {
+ "name": "寮國"
+ },
+ "DE": {
+ "name": "德國"
+ },
+ "MA": {
+ "name": "摩洛哥"
+ },
+ "MC": {
+ "name": "æ‘©ç´å“¥"
+ },
+ "MD": {
+ "name": "摩爾多瓦"
+ },
+ "MU": {
+ "name": "模里西斯"
+ },
+ "MM": {
+ "name": "緬甸"
+ },
+ "LB": {
+ "name": "黎巴嫩"
+ },
+ "MX": {
+ "name": "墨西哥"
+ },
+ "JE": {
+ "name": "澤西島"
+ },
+ "AU": {
+ "name": "澳洲"
+ },
+ "RW": {
+ "name": "盧安é”"
+ },
+ "LU": {
+ "name": "盧森堡"
+ },
+ "NF": {
+ "name": "諾ç¦å…‹å³¶"
+ },
+ "NR": {
+ "name": "諾魯"
+ },
+ "LR": {
+ "name": "賴比瑞亞"
+ },
+ "LS": {
+ "name": "賴索托"
+ },
+ "CY": {
+ "name": "賽普勒斯"
+ },
+ "SV": {
+ "name": "薩爾瓦多"
+ },
+ "WS": {
+ "name": "薩摩亞群島"
+ },
+ "RO": {
+ "name": "羅馬尼亞"
+ },
+ "GU": {
+ "name": "關島"
+ },
+ "SD": {
+ "name": "蘇丹"
+ },
+ "SR": {
+ "name": "蘇利å—"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/country/zh.json b/library/intl/resources/country/zh.json
new file mode 100644
index 000000000..71061e76a
--- /dev/null
+++ b/library/intl/resources/country/zh.json
@@ -0,0 +1,761 @@
+{
+ "AL": {
+ "name": "阿尔巴尼亚"
+ },
+ "DZ": {
+ "name": "阿尔åŠåˆ©äºš"
+ },
+ "AF": {
+ "name": "阿富汗"
+ },
+ "AR": {
+ "name": "阿根廷"
+ },
+ "AE": {
+ "name": "阿拉伯è”åˆé…‹é•¿å›½"
+ },
+ "AW": {
+ "name": "阿é²å·´"
+ },
+ "OM": {
+ "name": "阿曼"
+ },
+ "AZ": {
+ "name": "阿塞拜疆"
+ },
+ "AC": {
+ "name": "阿森æ¾å²›"
+ },
+ "EG": {
+ "name": "埃åŠ"
+ },
+ "ET": {
+ "name": "埃塞俄比亚"
+ },
+ "IE": {
+ "name": "爱尔兰"
+ },
+ "EE": {
+ "name": "爱沙尼亚"
+ },
+ "AD": {
+ "name": "安é“å°”"
+ },
+ "AO": {
+ "name": "安哥拉"
+ },
+ "AI": {
+ "name": "安圭拉"
+ },
+ "AG": {
+ "name": "安æ瓜和巴布达"
+ },
+ "AT": {
+ "name": "奥地利"
+ },
+ "AX": {
+ "name": "奥兰群岛"
+ },
+ "AU": {
+ "name": "澳大利亚"
+ },
+ "BB": {
+ "name": "巴巴多斯"
+ },
+ "PG": {
+ "name": "巴布亚新几内亚"
+ },
+ "BS": {
+ "name": "巴哈马"
+ },
+ "PK": {
+ "name": "巴基斯å¦"
+ },
+ "PY": {
+ "name": "巴拉圭"
+ },
+ "PS": {
+ "name": "å·´å‹’æ–¯å¦é¢†åœŸ"
+ },
+ "BH": {
+ "name": "å·´æž—"
+ },
+ "PA": {
+ "name": "巴拿马"
+ },
+ "BR": {
+ "name": "巴西"
+ },
+ "BY": {
+ "name": "白俄罗斯"
+ },
+ "BM": {
+ "name": "百慕大"
+ },
+ "BG": {
+ "name": "ä¿åŠ åˆ©äºš"
+ },
+ "MP": {
+ "name": "北马里亚纳群岛"
+ },
+ "BJ": {
+ "name": "è´å®"
+ },
+ "BE": {
+ "name": "比利时"
+ },
+ "IS": {
+ "name": "冰岛"
+ },
+ "PR": {
+ "name": "波多黎å„"
+ },
+ "PL": {
+ "name": "波兰"
+ },
+ "BA": {
+ "name": "波斯尼亚和黑塞哥维那"
+ },
+ "BO": {
+ "name": "玻利维亚"
+ },
+ "BZ": {
+ "name": "伯利兹"
+ },
+ "BW": {
+ "name": "åšèŒ¨ç“¦çº³"
+ },
+ "BT": {
+ "name": "ä¸ä¸¹"
+ },
+ "BF": {
+ "name": "布基纳法索"
+ },
+ "BI": {
+ "name": "布隆迪"
+ },
+ "KP": {
+ "name": "æœé²œ"
+ },
+ "GQ": {
+ "name": "赤é“几内亚"
+ },
+ "DK": {
+ "name": "丹麦"
+ },
+ "DE": {
+ "name": "德国"
+ },
+ "DG": {
+ "name": "迪戈加西亚岛"
+ },
+ "TL": {
+ "name": "东å¸æ±¶"
+ },
+ "TG": {
+ "name": "多哥"
+ },
+ "DO": {
+ "name": "多米尼加共和国"
+ },
+ "DM": {
+ "name": "多米尼克"
+ },
+ "RU": {
+ "name": "ä¿„ç½—æ–¯"
+ },
+ "EC": {
+ "name": "厄瓜多尔"
+ },
+ "ER": {
+ "name": "厄立特里亚"
+ },
+ "FR": {
+ "name": "法国"
+ },
+ "FO": {
+ "name": "法罗群岛"
+ },
+ "PF": {
+ "name": "法属波利尼西亚"
+ },
+ "GF": {
+ "name": "法属圭亚那"
+ },
+ "TF": {
+ "name": "法属å—部领地"
+ },
+ "MF": {
+ "name": "法属圣马ä¸"
+ },
+ "VA": {
+ "name": "梵蒂冈"
+ },
+ "PH": {
+ "name": "è²å¾‹å®¾"
+ },
+ "FJ": {
+ "name": "æ–济"
+ },
+ "FI": {
+ "name": "芬兰"
+ },
+ "CV": {
+ "name": "佛得角"
+ },
+ "FK": {
+ "name": "ç¦å…‹å…°ç¾¤å²›"
+ },
+ "GM": {
+ "name": "冈比亚"
+ },
+ "CG": {
+ "name": "刚果(布)"
+ },
+ "CD": {
+ "name": "刚果(金)"
+ },
+ "CO": {
+ "name": "哥伦比亚"
+ },
+ "CR": {
+ "name": "哥斯达黎加"
+ },
+ "GD": {
+ "name": "格林纳达"
+ },
+ "GL": {
+ "name": "格陵兰"
+ },
+ "GE": {
+ "name": "æ ¼é²å‰äºš"
+ },
+ "GG": {
+ "name": "根西岛"
+ },
+ "CU": {
+ "name": "å¤å·´"
+ },
+ "GP": {
+ "name": "瓜德罗普"
+ },
+ "GU": {
+ "name": "关岛"
+ },
+ "GY": {
+ "name": "圭亚那"
+ },
+ "KZ": {
+ "name": "哈è¨å…‹æ–¯å¦"
+ },
+ "HT": {
+ "name": "海地"
+ },
+ "KR": {
+ "name": "韩国"
+ },
+ "NL": {
+ "name": "è·å…°"
+ },
+ "BQ": {
+ "name": "è·å…°åŠ å‹’比区"
+ },
+ "SX": {
+ "name": "è·å±žåœ£é©¬ä¸"
+ },
+ "ME": {
+ "name": "黑山共和国"
+ },
+ "HN": {
+ "name": "洪都拉斯"
+ },
+ "KI": {
+ "name": "基里巴斯"
+ },
+ "DJ": {
+ "name": "å‰å¸ƒæ"
+ },
+ "KG": {
+ "name": "å‰å°”å‰æ–¯æ–¯å¦"
+ },
+ "GN": {
+ "name": "几内亚"
+ },
+ "GW": {
+ "name": "几内亚比ç»"
+ },
+ "CA": {
+ "name": "加拿大"
+ },
+ "GH": {
+ "name": "加纳"
+ },
+ "IC": {
+ "name": "加纳利群岛"
+ },
+ "GA": {
+ "name": "加蓬"
+ },
+ "KH": {
+ "name": "柬埔寨"
+ },
+ "CZ": {
+ "name": "æ·å…‹å…±å’Œå›½"
+ },
+ "ZW": {
+ "name": "津巴布韦"
+ },
+ "CM": {
+ "name": "喀麦隆"
+ },
+ "QA": {
+ "name": "å¡å¡”å°”"
+ },
+ "KY": {
+ "name": "开曼群岛"
+ },
+ "CC": {
+ "name": "科科斯(基林)群岛"
+ },
+ "KM": {
+ "name": "科摩罗"
+ },
+ "XK": {
+ "name": "科索沃"
+ },
+ "CI": {
+ "name": "科特迪瓦"
+ },
+ "KW": {
+ "name": "科å¨ç‰¹"
+ },
+ "HR": {
+ "name": "克罗地亚"
+ },
+ "KE": {
+ "name": "肯尼亚"
+ },
+ "CK": {
+ "name": "库克群岛"
+ },
+ "CW": {
+ "name": "库拉索"
+ },
+ "LV": {
+ "name": "拉脱维亚"
+ },
+ "LS": {
+ "name": "莱索托"
+ },
+ "LA": {
+ "name": "è€æŒ"
+ },
+ "LB": {
+ "name": "黎巴嫩"
+ },
+ "LT": {
+ "name": "立陶宛"
+ },
+ "LR": {
+ "name": "利比里亚"
+ },
+ "LY": {
+ "name": "利比亚"
+ },
+ "LI": {
+ "name": "列支敦士登"
+ },
+ "RE": {
+ "name": "留尼汪"
+ },
+ "LU": {
+ "name": "å¢æ£®å ¡"
+ },
+ "RW": {
+ "name": "å¢æ—ºè¾¾"
+ },
+ "RO": {
+ "name": "罗马尼亚"
+ },
+ "MG": {
+ "name": "马达加斯加"
+ },
+ "MV": {
+ "name": "马尔代夫"
+ },
+ "MT": {
+ "name": "马耳他"
+ },
+ "MW": {
+ "name": "马拉维"
+ },
+ "MY": {
+ "name": "马æ¥è¥¿äºš"
+ },
+ "ML": {
+ "name": "马里"
+ },
+ "MK": {
+ "name": "马其顿"
+ },
+ "MH": {
+ "name": "马ç»å°”群岛"
+ },
+ "MQ": {
+ "name": "马æ尼克"
+ },
+ "YT": {
+ "name": "马约特"
+ },
+ "IM": {
+ "name": "曼岛"
+ },
+ "MU": {
+ "name": "毛里求斯"
+ },
+ "MR": {
+ "name": "毛里塔尼亚"
+ },
+ "US": {
+ "name": "美国"
+ },
+ "UM": {
+ "name": "美国本土外å°å²›å±¿"
+ },
+ "AS": {
+ "name": "美属è¨æ‘©äºš"
+ },
+ "VI": {
+ "name": "美属维京群岛"
+ },
+ "MN": {
+ "name": "è’™å¤"
+ },
+ "MS": {
+ "name": "蒙特塞拉特"
+ },
+ "BD": {
+ "name": "孟加拉国"
+ },
+ "PE": {
+ "name": "秘é²"
+ },
+ "FM": {
+ "name": "密克罗尼西亚"
+ },
+ "MM": {
+ "name": "缅甸"
+ },
+ "MD": {
+ "name": "摩尔多瓦"
+ },
+ "MA": {
+ "name": "摩洛哥"
+ },
+ "MC": {
+ "name": "摩纳哥"
+ },
+ "MZ": {
+ "name": "莫桑比克"
+ },
+ "MX": {
+ "name": "墨西哥"
+ },
+ "NA": {
+ "name": "纳米比亚"
+ },
+ "ZA": {
+ "name": "å—éž"
+ },
+ "AQ": {
+ "name": "å—æžæ´²"
+ },
+ "GS": {
+ "name": "å—乔治亚岛和å—æ¡‘å¨é½ç¾¤å²›"
+ },
+ "SS": {
+ "name": "å—è‹ä¸¹"
+ },
+ "NR": {
+ "name": "ç‘™é²"
+ },
+ "NI": {
+ "name": "尼加拉瓜"
+ },
+ "NP": {
+ "name": "尼泊尔"
+ },
+ "NE": {
+ "name": "尼日尔"
+ },
+ "NG": {
+ "name": "尼日利亚"
+ },
+ "NU": {
+ "name": "纽埃"
+ },
+ "NO": {
+ "name": "挪å¨"
+ },
+ "NF": {
+ "name": "诺ç¦å…‹å²›"
+ },
+ "PW": {
+ "name": "帕劳"
+ },
+ "PN": {
+ "name": "皮特凯æ©ç¾¤å²›"
+ },
+ "PT": {
+ "name": "è‘¡è„牙"
+ },
+ "JP": {
+ "name": "日本"
+ },
+ "SE": {
+ "name": "ç‘žå…¸"
+ },
+ "CH": {
+ "name": "瑞士"
+ },
+ "SV": {
+ "name": "è¨å°”瓦多"
+ },
+ "WS": {
+ "name": "è¨æ‘©äºš"
+ },
+ "RS": {
+ "name": "塞尔维亚"
+ },
+ "SL": {
+ "name": "塞拉利昂"
+ },
+ "SN": {
+ "name": "塞内加尔"
+ },
+ "CY": {
+ "name": "塞浦路斯"
+ },
+ "SC": {
+ "name": "塞舌尔"
+ },
+ "SA": {
+ "name": "沙特阿拉伯"
+ },
+ "BL": {
+ "name": "圣巴泰勒米"
+ },
+ "CX": {
+ "name": "圣诞岛"
+ },
+ "ST": {
+ "name": "圣多美和普林西比"
+ },
+ "SH": {
+ "name": "圣赫勒拿"
+ },
+ "KN": {
+ "name": "圣基茨和尼维斯"
+ },
+ "LC": {
+ "name": "圣å¢è¥¿äºš"
+ },
+ "SM": {
+ "name": "圣马力诺"
+ },
+ "PM": {
+ "name": "圣皮埃尔和密克隆群岛"
+ },
+ "VC": {
+ "name": "圣文森特和格林纳ä¸æ–¯"
+ },
+ "LK": {
+ "name": "斯里兰å¡"
+ },
+ "SK": {
+ "name": "斯洛ä¼å…‹"
+ },
+ "SI": {
+ "name": "斯洛文尼亚"
+ },
+ "SJ": {
+ "name": "斯瓦尔巴特和扬马延"
+ },
+ "SZ": {
+ "name": "æ–¯å¨å£«å…°"
+ },
+ "SD": {
+ "name": "è‹ä¸¹"
+ },
+ "SR": {
+ "name": "è‹é‡Œå—"
+ },
+ "SB": {
+ "name": "所罗门群岛"
+ },
+ "SO": {
+ "name": "索马里"
+ },
+ "TJ": {
+ "name": "å¡”å‰å…‹æ–¯å¦"
+ },
+ "TW": {
+ "name": "å°æ¹¾"
+ },
+ "TH": {
+ "name": "泰国"
+ },
+ "TZ": {
+ "name": "å¦æ¡‘尼亚"
+ },
+ "TO": {
+ "name": "汤加"
+ },
+ "TC": {
+ "name": "特克斯和凯科斯群岛"
+ },
+ "TA": {
+ "name": "特里斯å¦-达库尼亚群岛"
+ },
+ "TT": {
+ "name": "特立尼达和多巴哥"
+ },
+ "TN": {
+ "name": "çªå°¼æ–¯"
+ },
+ "TV": {
+ "name": "图瓦å¢"
+ },
+ "TR": {
+ "name": "土耳其"
+ },
+ "TM": {
+ "name": "土库曼斯å¦"
+ },
+ "TK": {
+ "name": "托克劳"
+ },
+ "WF": {
+ "name": "瓦利斯和富图纳"
+ },
+ "VU": {
+ "name": "瓦努阿图"
+ },
+ "GT": {
+ "name": "å±åœ°é©¬æ‹‰"
+ },
+ "VE": {
+ "name": "委内瑞拉"
+ },
+ "BN": {
+ "name": "文莱"
+ },
+ "UG": {
+ "name": "乌干达"
+ },
+ "UA": {
+ "name": "乌克兰"
+ },
+ "UY": {
+ "name": "乌拉圭"
+ },
+ "UZ": {
+ "name": "乌兹别克斯å¦"
+ },
+ "GR": {
+ "name": "希腊"
+ },
+ "ES": {
+ "name": "西ç­ç‰™"
+ },
+ "EH": {
+ "name": "西撒哈拉"
+ },
+ "SG": {
+ "name": "新加å¡"
+ },
+ "NC": {
+ "name": "新喀里多尼亚"
+ },
+ "NZ": {
+ "name": "新西兰"
+ },
+ "HU": {
+ "name": "匈牙利"
+ },
+ "EA": {
+ "name": "休达åŠæ¢…利利亚"
+ },
+ "SY": {
+ "name": "å™åˆ©äºš"
+ },
+ "JM": {
+ "name": "牙买加"
+ },
+ "AM": {
+ "name": "亚美尼亚"
+ },
+ "YE": {
+ "name": "也门"
+ },
+ "IQ": {
+ "name": "伊拉克"
+ },
+ "IR": {
+ "name": "伊朗"
+ },
+ "IL": {
+ "name": "以色列"
+ },
+ "IT": {
+ "name": "æ„大利"
+ },
+ "IN": {
+ "name": "å°åº¦"
+ },
+ "ID": {
+ "name": "å°åº¦å°¼è¥¿äºš"
+ },
+ "GB": {
+ "name": "英国"
+ },
+ "VG": {
+ "name": "英属维京群岛"
+ },
+ "IO": {
+ "name": "英属å°åº¦æ´‹é¢†åœ°"
+ },
+ "JO": {
+ "name": "约旦"
+ },
+ "VN": {
+ "name": "越å—"
+ },
+ "ZM": {
+ "name": "赞比亚"
+ },
+ "JE": {
+ "name": "泽西岛"
+ },
+ "TD": {
+ "name": "ä¹å¾—"
+ },
+ "GI": {
+ "name": "直布罗陀"
+ },
+ "CL": {
+ "name": "智利"
+ },
+ "CF": {
+ "name": "中éžå…±å’Œå›½"
+ },
+ "CN": {
+ "name": "中国"
+ },
+ "MO": {
+ "name": "中国澳门特别行政区"
+ },
+ "HK": {
+ "name": "中国香港特别行政区"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/country/zu.json b/library/intl/resources/country/zu.json
new file mode 100644
index 000000000..20b4d0623
--- /dev/null
+++ b/library/intl/resources/country/zu.json
@@ -0,0 +1,761 @@
+{
+ "AF": {
+ "name": "i-Afghanistan"
+ },
+ "AX": {
+ "name": "i-Ã…land Islands"
+ },
+ "AL": {
+ "name": "i-Albania"
+ },
+ "DZ": {
+ "name": "i-Algeria"
+ },
+ "AS": {
+ "name": "i-American Samoa"
+ },
+ "AD": {
+ "name": "i-Andorra"
+ },
+ "AO": {
+ "name": "i-Angola"
+ },
+ "AI": {
+ "name": "i-Anguilla"
+ },
+ "AQ": {
+ "name": "i-Antarctica"
+ },
+ "AG": {
+ "name": "i-Antigua and Barbuda"
+ },
+ "AR": {
+ "name": "i-Argentina"
+ },
+ "AM": {
+ "name": "i-Armenia"
+ },
+ "AW": {
+ "name": "i-Aruba"
+ },
+ "AC": {
+ "name": "i-Ascension Island"
+ },
+ "AU": {
+ "name": "i-Australia"
+ },
+ "AT": {
+ "name": "i-Austria"
+ },
+ "AZ": {
+ "name": "i-Azerbaijan"
+ },
+ "BS": {
+ "name": "i-Bahamas"
+ },
+ "BH": {
+ "name": "i-Bahrain"
+ },
+ "BD": {
+ "name": "i-Bangladesh"
+ },
+ "BB": {
+ "name": "i-Barbados"
+ },
+ "BY": {
+ "name": "i-Belarus"
+ },
+ "BE": {
+ "name": "i-Belgium"
+ },
+ "BZ": {
+ "name": "i-Belize"
+ },
+ "BJ": {
+ "name": "i-Benin"
+ },
+ "BM": {
+ "name": "i-Bermuda"
+ },
+ "BT": {
+ "name": "i-Bhutan"
+ },
+ "BO": {
+ "name": "i-Bolivia"
+ },
+ "BA": {
+ "name": "i-Bosnia ne-Herzegovina"
+ },
+ "BW": {
+ "name": "i-Botswana"
+ },
+ "BR": {
+ "name": "i-Brazil"
+ },
+ "IO": {
+ "name": "i-British Indian Ocean Territory"
+ },
+ "VG": {
+ "name": "i-British Virgin Islands"
+ },
+ "BN": {
+ "name": "i-Brunei"
+ },
+ "BG": {
+ "name": "i-Bulgaria"
+ },
+ "BF": {
+ "name": "i-Burkina Faso"
+ },
+ "BI": {
+ "name": "i-Burundi"
+ },
+ "KH": {
+ "name": "i-Cambodia"
+ },
+ "CM": {
+ "name": "i-Cameroon"
+ },
+ "CA": {
+ "name": "i-Canada"
+ },
+ "IC": {
+ "name": "i-Canary Islands"
+ },
+ "CV": {
+ "name": "i-Cape Verde"
+ },
+ "BQ": {
+ "name": "i-Caribbean Netherlands"
+ },
+ "KY": {
+ "name": "i-Cayman Islands"
+ },
+ "CF": {
+ "name": "i-Central African Republic"
+ },
+ "TD": {
+ "name": "i-Chad"
+ },
+ "CL": {
+ "name": "i-Chile"
+ },
+ "CN": {
+ "name": "i-China"
+ },
+ "CX": {
+ "name": "i-Christmas Island"
+ },
+ "CC": {
+ "name": "i-Cocos (Keeling) Islands"
+ },
+ "CO": {
+ "name": "i-Colombia"
+ },
+ "KM": {
+ "name": "i-Comoros"
+ },
+ "CG": {
+ "name": "i-Congo - Brazzaville"
+ },
+ "CD": {
+ "name": "i-Congo - Kinshasa"
+ },
+ "CK": {
+ "name": "i-Cook Islands"
+ },
+ "CR": {
+ "name": "i-Costa Rica"
+ },
+ "CI": {
+ "name": "i-Côte d’Ivoire"
+ },
+ "HR": {
+ "name": "i-Croatia"
+ },
+ "CU": {
+ "name": "i-Cuba"
+ },
+ "EA": {
+ "name": "i-Cueta ne-Melilla"
+ },
+ "CW": {
+ "name": "i-Curaçao"
+ },
+ "CY": {
+ "name": "i-Cyprus"
+ },
+ "CZ": {
+ "name": "i-Czech Republic"
+ },
+ "DK": {
+ "name": "i-Denmark"
+ },
+ "DG": {
+ "name": "i-Diego Garcia"
+ },
+ "DJ": {
+ "name": "i-Djibouti"
+ },
+ "DM": {
+ "name": "i-Dominica"
+ },
+ "DO": {
+ "name": "i-Dominican Republic"
+ },
+ "EC": {
+ "name": "i-Ecuador"
+ },
+ "EG": {
+ "name": "i-Egypt"
+ },
+ "SV": {
+ "name": "i-El Salvador"
+ },
+ "GQ": {
+ "name": "i-Equatorial Guinea"
+ },
+ "ER": {
+ "name": "i-Eritrea"
+ },
+ "EE": {
+ "name": "i-Estonia"
+ },
+ "ET": {
+ "name": "i-Ethiopia"
+ },
+ "FK": {
+ "name": "i-Falkland Islands"
+ },
+ "FO": {
+ "name": "i-Faroe Islands"
+ },
+ "FJ": {
+ "name": "i-Fiji"
+ },
+ "FI": {
+ "name": "i-Finland"
+ },
+ "FR": {
+ "name": "i-France"
+ },
+ "PF": {
+ "name": "i-French Polynesia"
+ },
+ "TF": {
+ "name": "i-French Southern Territories"
+ },
+ "GA": {
+ "name": "i-Gabon"
+ },
+ "GM": {
+ "name": "i-Gambia"
+ },
+ "GE": {
+ "name": "i-Georgia"
+ },
+ "DE": {
+ "name": "i-Germany"
+ },
+ "GH": {
+ "name": "i-Ghana"
+ },
+ "GI": {
+ "name": "i-Gibraltar"
+ },
+ "GR": {
+ "name": "i-Greece"
+ },
+ "GL": {
+ "name": "i-Greenland"
+ },
+ "GD": {
+ "name": "i-Grenada"
+ },
+ "GP": {
+ "name": "i-Guadeloupe"
+ },
+ "GU": {
+ "name": "i-Guam"
+ },
+ "GT": {
+ "name": "i-Guatemala"
+ },
+ "GG": {
+ "name": "i-Guernsey"
+ },
+ "GN": {
+ "name": "i-Guinea"
+ },
+ "GW": {
+ "name": "i-Guinea-Bissau"
+ },
+ "GY": {
+ "name": "i-Guyana"
+ },
+ "HT": {
+ "name": "i-Haiti"
+ },
+ "HN": {
+ "name": "i-Honduras"
+ },
+ "HK": {
+ "name": "i-Hong Kong SAR China"
+ },
+ "HU": {
+ "name": "i-Hungary"
+ },
+ "IS": {
+ "name": "i-Iceland"
+ },
+ "IN": {
+ "name": "i-India"
+ },
+ "ID": {
+ "name": "i-Indonesia"
+ },
+ "IR": {
+ "name": "i-Iran"
+ },
+ "IQ": {
+ "name": "i-Iraq"
+ },
+ "IE": {
+ "name": "i-Ireland"
+ },
+ "IM": {
+ "name": "i-Isle of Man"
+ },
+ "IL": {
+ "name": "i-Israel"
+ },
+ "IT": {
+ "name": "i-Italy"
+ },
+ "JM": {
+ "name": "i-Jamaica"
+ },
+ "JP": {
+ "name": "i-Japan"
+ },
+ "JE": {
+ "name": "i-Jersey"
+ },
+ "JO": {
+ "name": "i-Jordan"
+ },
+ "KZ": {
+ "name": "i-Kazakhstan"
+ },
+ "KE": {
+ "name": "i-Kenya"
+ },
+ "KI": {
+ "name": "i-Kiribati"
+ },
+ "XK": {
+ "name": "i-Kosovo"
+ },
+ "KW": {
+ "name": "i-Kuwait"
+ },
+ "KG": {
+ "name": "i-Kyrgyzstan"
+ },
+ "LA": {
+ "name": "i-Laos"
+ },
+ "LV": {
+ "name": "i-Latvia"
+ },
+ "LB": {
+ "name": "i-Lebanon"
+ },
+ "LS": {
+ "name": "i-Lesotho"
+ },
+ "LR": {
+ "name": "i-Liberia"
+ },
+ "LY": {
+ "name": "i-Libya"
+ },
+ "LI": {
+ "name": "i-Liechtenstein"
+ },
+ "LT": {
+ "name": "i-Lithuania"
+ },
+ "LU": {
+ "name": "i-Luxembourg"
+ },
+ "MO": {
+ "name": "i-Macau SAR China"
+ },
+ "MK": {
+ "name": "i-Macedonia"
+ },
+ "MG": {
+ "name": "i-Madagascar"
+ },
+ "MW": {
+ "name": "i-Malawi"
+ },
+ "MY": {
+ "name": "i-Malaysia"
+ },
+ "MV": {
+ "name": "i-Maldives"
+ },
+ "ML": {
+ "name": "i-Mali"
+ },
+ "MT": {
+ "name": "i-Malta"
+ },
+ "MH": {
+ "name": "i-Marshall Islands"
+ },
+ "MQ": {
+ "name": "i-Martinique"
+ },
+ "MR": {
+ "name": "i-Mauritania"
+ },
+ "MU": {
+ "name": "i-Mauritius"
+ },
+ "YT": {
+ "name": "i-Mayotte"
+ },
+ "MX": {
+ "name": "i-Mexico"
+ },
+ "FM": {
+ "name": "i-Micronesia"
+ },
+ "MD": {
+ "name": "i-Moldova"
+ },
+ "MC": {
+ "name": "i-Monaco"
+ },
+ "MN": {
+ "name": "i-Mongolia"
+ },
+ "ME": {
+ "name": "i-Montenegro"
+ },
+ "MS": {
+ "name": "i-Montserrat"
+ },
+ "MA": {
+ "name": "i-Morocco"
+ },
+ "MZ": {
+ "name": "i-Mozambique"
+ },
+ "MM": {
+ "name": "i-Myanmar (Burma)"
+ },
+ "NA": {
+ "name": "i-Namibia"
+ },
+ "NR": {
+ "name": "i-Nauru"
+ },
+ "NP": {
+ "name": "i-Nepal"
+ },
+ "NL": {
+ "name": "i-Netherlands"
+ },
+ "NC": {
+ "name": "i-New Caledonia"
+ },
+ "NZ": {
+ "name": "i-New Zealand"
+ },
+ "NI": {
+ "name": "i-Nicaragua"
+ },
+ "NE": {
+ "name": "i-Niger"
+ },
+ "NG": {
+ "name": "i-Nigeria"
+ },
+ "NU": {
+ "name": "i-Niue"
+ },
+ "NF": {
+ "name": "i-Norfolk Island"
+ },
+ "KP": {
+ "name": "i-North Korea"
+ },
+ "MP": {
+ "name": "i-Northern Mariana Islands"
+ },
+ "NO": {
+ "name": "i-Norway"
+ },
+ "OM": {
+ "name": "i-Oman"
+ },
+ "PK": {
+ "name": "i-Pakistan"
+ },
+ "PW": {
+ "name": "i-Palau"
+ },
+ "PS": {
+ "name": "i-Palestinian Territories"
+ },
+ "PA": {
+ "name": "i-Panama"
+ },
+ "PG": {
+ "name": "i-Papua New Guinea"
+ },
+ "PY": {
+ "name": "i-Paraguay"
+ },
+ "PE": {
+ "name": "i-Peru"
+ },
+ "PH": {
+ "name": "i-Philippines"
+ },
+ "PN": {
+ "name": "i-Pitcairn Islands"
+ },
+ "PL": {
+ "name": "i-Poland"
+ },
+ "PT": {
+ "name": "i-Portugal"
+ },
+ "PR": {
+ "name": "i-Puerto Rico"
+ },
+ "QA": {
+ "name": "i-Qatar"
+ },
+ "RE": {
+ "name": "i-Réunion"
+ },
+ "RO": {
+ "name": "i-Romania"
+ },
+ "RU": {
+ "name": "i-Russia"
+ },
+ "RW": {
+ "name": "i-Rwanda"
+ },
+ "BL": {
+ "name": "i-Saint Barthélemy"
+ },
+ "SH": {
+ "name": "i-Saint Helena"
+ },
+ "KN": {
+ "name": "i-Saint Kitts ne-Nevis"
+ },
+ "LC": {
+ "name": "i-Saint Lucia"
+ },
+ "MF": {
+ "name": "i-Saint Martin"
+ },
+ "PM": {
+ "name": "i-Saint Pierre kanye ne-Miquelon"
+ },
+ "VC": {
+ "name": "i-Saint Vincent ne-Grenadines"
+ },
+ "WS": {
+ "name": "i-Samoa"
+ },
+ "SM": {
+ "name": "i-San Marino"
+ },
+ "ST": {
+ "name": "i-São Tomé kanye ne-Príncipe"
+ },
+ "SA": {
+ "name": "i-Saudi Arabia"
+ },
+ "SN": {
+ "name": "i-Senegal"
+ },
+ "RS": {
+ "name": "i-Serbia"
+ },
+ "SC": {
+ "name": "i-Seychelles"
+ },
+ "SL": {
+ "name": "i-Sierra Leone"
+ },
+ "SG": {
+ "name": "i-Singapore"
+ },
+ "SX": {
+ "name": "I-Sint Maarten"
+ },
+ "SK": {
+ "name": "i-Slovakia"
+ },
+ "SI": {
+ "name": "i-Slovenia"
+ },
+ "SB": {
+ "name": "i-Solomon Islands"
+ },
+ "SO": {
+ "name": "i-Somalia"
+ },
+ "ZA": {
+ "name": "i-South Africa"
+ },
+ "GS": {
+ "name": "i-South Georgia ne-South Sandwich Islands"
+ },
+ "KR": {
+ "name": "i-South Korea"
+ },
+ "SS": {
+ "name": "i-South Sudan"
+ },
+ "ES": {
+ "name": "i-Spain"
+ },
+ "LK": {
+ "name": "i-Sri Lanka"
+ },
+ "SD": {
+ "name": "i-Sudan"
+ },
+ "SR": {
+ "name": "i-Suriname"
+ },
+ "SJ": {
+ "name": "i-Svalbard ne-Jan Mayen"
+ },
+ "SZ": {
+ "name": "i-Swaziland"
+ },
+ "SE": {
+ "name": "i-Sweden"
+ },
+ "CH": {
+ "name": "i-Switzerland"
+ },
+ "SY": {
+ "name": "i-Syria"
+ },
+ "TW": {
+ "name": "i-Taiwan"
+ },
+ "TJ": {
+ "name": "i-Tajikistan"
+ },
+ "TZ": {
+ "name": "i-Tanzania"
+ },
+ "TH": {
+ "name": "i-Thailand"
+ },
+ "TL": {
+ "name": "i-Timor-Leste"
+ },
+ "TG": {
+ "name": "i-Togo"
+ },
+ "TK": {
+ "name": "i-Tokelau"
+ },
+ "TO": {
+ "name": "i-Tonga"
+ },
+ "TT": {
+ "name": "i-Trinidad ne-Tobago"
+ },
+ "TA": {
+ "name": "i-Tristan da Cunha"
+ },
+ "TN": {
+ "name": "i-Tunisia"
+ },
+ "TR": {
+ "name": "i-Turkey"
+ },
+ "TM": {
+ "name": "i-Turkmenistan"
+ },
+ "TC": {
+ "name": "i-Turks and Caicos Islands"
+ },
+ "TV": {
+ "name": "i-Tuvalu"
+ },
+ "UM": {
+ "name": "i-U.S. Minor Outlying Islands"
+ },
+ "VI": {
+ "name": "i-U.S. Virgin Islands"
+ },
+ "UG": {
+ "name": "i-Uganda"
+ },
+ "UA": {
+ "name": "i-Ukraine"
+ },
+ "AE": {
+ "name": "i-United Arab Emirates"
+ },
+ "GB": {
+ "name": "i-United Kingdom"
+ },
+ "US": {
+ "name": "i-United States"
+ },
+ "UY": {
+ "name": "i-Uruguay"
+ },
+ "UZ": {
+ "name": "i-Uzbekistan"
+ },
+ "VU": {
+ "name": "i-Vanuatu"
+ },
+ "VA": {
+ "name": "i-Vatican City"
+ },
+ "VE": {
+ "name": "i-Venezuela"
+ },
+ "VN": {
+ "name": "i-Vietnam"
+ },
+ "WF": {
+ "name": "i-Wallis ne-Futuna"
+ },
+ "EH": {
+ "name": "i-Western Sahara"
+ },
+ "YE": {
+ "name": "i-Yemen"
+ },
+ "ZM": {
+ "name": "i-Zambia"
+ },
+ "ZW": {
+ "name": "i-Zimbabwe"
+ },
+ "GF": {
+ "name": "isi-French Guiana"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/currency/af.json b/library/intl/resources/currency/af.json
new file mode 100644
index 000000000..b7e5c4930
--- /dev/null
+++ b/library/intl/resources/currency/af.json
@@ -0,0 +1,634 @@
+{
+ "AFN": {
+ "name": "Afgaanse afgani",
+ "symbol": "AFN"
+ },
+ "ALL": {
+ "name": "Albanese lek",
+ "symbol": "ALL"
+ },
+ "DZD": {
+ "name": "Algeriese dinar",
+ "symbol": "DZD"
+ },
+ "USD": {
+ "name": "Amerikaanse dollar",
+ "symbol": "US$"
+ },
+ "AOA": {
+ "name": "Angolese kwanza",
+ "symbol": "AOA"
+ },
+ "ARS": {
+ "name": "Argentynse peso",
+ "symbol": "ARS"
+ },
+ "AMD": {
+ "name": "Armeense dram",
+ "symbol": "AMD"
+ },
+ "AWG": {
+ "name": "Arubaanse floryn",
+ "symbol": "AWG"
+ },
+ "AUD": {
+ "name": "Australiese dollar",
+ "symbol": "A$"
+ },
+ "AZN": {
+ "name": "Azerbeidjaanse manat",
+ "symbol": "AZN"
+ },
+ "BSD": {
+ "name": "Bahamiaanse dollar",
+ "symbol": "BSD"
+ },
+ "BHD": {
+ "name": "Bahreinse dinar",
+ "symbol": "BHD"
+ },
+ "BDT": {
+ "name": "Bangladesjiese taka",
+ "symbol": "BDT"
+ },
+ "BBD": {
+ "name": "Barbados-dollar",
+ "symbol": "BBD"
+ },
+ "BZD": {
+ "name": "Beliziese dollar",
+ "symbol": "BZD"
+ },
+ "BYR": {
+ "name": "Belo-Russiese roebel",
+ "symbol": "BYR"
+ },
+ "BMD": {
+ "name": "Bermuda-dollar",
+ "symbol": "BMD"
+ },
+ "BTN": {
+ "name": "Bhoetanese ngoeltroem",
+ "symbol": "BTN"
+ },
+ "BOB": {
+ "name": "Boliviaanse boliviano",
+ "symbol": "BOB"
+ },
+ "BAM": {
+ "name": "Bosnies-Herzegowiniese omskakelbare marka",
+ "symbol": "BAM"
+ },
+ "BWP": {
+ "name": "Botswana pula",
+ "symbol": "BWP"
+ },
+ "BRL": {
+ "name": "Brasilliaanse reaal",
+ "symbol": "R$"
+ },
+ "GBP": {
+ "name": "Britse pond",
+ "symbol": "£"
+ },
+ "BND": {
+ "name": "Broeneise dollar",
+ "symbol": "BND"
+ },
+ "BGN": {
+ "name": "Bulgaarse lev",
+ "symbol": "BGN"
+ },
+ "BIF": {
+ "name": "Burundiese frank",
+ "symbol": "BIF"
+ },
+ "KYD": {
+ "name": "Cayman-eilande dollar",
+ "symbol": "KYD"
+ },
+ "XOF": {
+ "name": "CFA frank BCEAO",
+ "symbol": "CFA"
+ },
+ "XAF": {
+ "name": "CFA frank BEAC",
+ "symbol": "FCFA"
+ },
+ "XPF": {
+ "name": "CFP-frank",
+ "symbol": "CFPF"
+ },
+ "CLP": {
+ "name": "Chileense peso",
+ "symbol": "CLP"
+ },
+ "COP": {
+ "name": "Colombiaanse peso",
+ "symbol": "COP"
+ },
+ "KMF": {
+ "name": "Comoraanse frank",
+ "symbol": "KMF"
+ },
+ "CRC": {
+ "name": "Costa Ricaanse colón",
+ "symbol": "CRC"
+ },
+ "DKK": {
+ "name": "Deense kroon",
+ "symbol": "DKK"
+ },
+ "DJF": {
+ "name": "Djiboeti frank",
+ "symbol": "DJF"
+ },
+ "DOP": {
+ "name": "Dominikaanse peso",
+ "symbol": "DOP"
+ },
+ "EGP": {
+ "name": "Egiptiese pond",
+ "symbol": "EGP"
+ },
+ "ERN": {
+ "name": "Eritrese nakfa",
+ "symbol": "ERN"
+ },
+ "ETB": {
+ "name": "Etiopiese birr",
+ "symbol": "ETB"
+ },
+ "EUR": {
+ "name": "Euro",
+ "symbol": "€"
+ },
+ "FKP": {
+ "name": "Falkland-eilande pond",
+ "symbol": "FKP"
+ },
+ "FJD": {
+ "name": "Fidjiaanse dollar",
+ "symbol": "FJD"
+ },
+ "PHP": {
+ "name": "Filippynse peso",
+ "symbol": "PHP"
+ },
+ "GMD": {
+ "name": "Gambiese dalasi",
+ "symbol": "GMD"
+ },
+ "GEL": {
+ "name": "Georgiese lari",
+ "symbol": "GEL"
+ },
+ "GHS": {
+ "name": "Ghanese cedi",
+ "symbol": "GHS"
+ },
+ "GIP": {
+ "name": "Gibraltarese pond",
+ "symbol": "GIP"
+ },
+ "GTQ": {
+ "name": "Guatemalaanse quetzal",
+ "symbol": "GTQ"
+ },
+ "GNF": {
+ "name": "Guinese frank",
+ "symbol": "GNF"
+ },
+ "GYD": {
+ "name": "Guyanese dollar",
+ "symbol": "GYD"
+ },
+ "HTG": {
+ "name": "Haïtiaanse gourde",
+ "symbol": "HTG"
+ },
+ "HNL": {
+ "name": "Hondurese lempira",
+ "symbol": "HNL"
+ },
+ "HKD": {
+ "name": "Hong Kong dollar",
+ "symbol": "HK$"
+ },
+ "HUF": {
+ "name": "Hongaarse florint",
+ "symbol": "HUF"
+ },
+ "INR": {
+ "name": "Indiese roepee",
+ "symbol": "₹"
+ },
+ "IDR": {
+ "name": "Indonesiese roepia",
+ "symbol": "IDR"
+ },
+ "IQD": {
+ "name": "Irakse dinar",
+ "symbol": "IQD"
+ },
+ "IRR": {
+ "name": "Iranse rial",
+ "symbol": "IRR"
+ },
+ "ILS": {
+ "name": "Israeliese nuwe sikkel",
+ "symbol": "₪"
+ },
+ "JMD": {
+ "name": "Jamaikaanse dollar",
+ "symbol": "JMD"
+ },
+ "JPY": {
+ "name": "Japannese jen",
+ "symbol": "JPÂ¥"
+ },
+ "YER": {
+ "name": "Jemenitiese rial",
+ "symbol": "YER"
+ },
+ "JOD": {
+ "name": "Jordaniese dinar",
+ "symbol": "JOD"
+ },
+ "CVE": {
+ "name": "Kaap Verdiese escudo",
+ "symbol": "CVE"
+ },
+ "KHR": {
+ "name": "Kambodjaanse riel",
+ "symbol": "KHR"
+ },
+ "CAD": {
+ "name": "Kanadese dollar",
+ "symbol": "CA$"
+ },
+ "QAR": {
+ "name": "Katarrese rial",
+ "symbol": "QAR"
+ },
+ "KZT": {
+ "name": "Kazakse tenge",
+ "symbol": "KZT"
+ },
+ "KES": {
+ "name": "Keniaanse sjieling",
+ "symbol": "KES"
+ },
+ "KGS": {
+ "name": "Kirgisiese som",
+ "symbol": "KGS"
+ },
+ "KWD": {
+ "name": "Koeweitse dinar",
+ "symbol": "KWD"
+ },
+ "CDF": {
+ "name": "Kongolese frank",
+ "symbol": "CDF"
+ },
+ "HRK": {
+ "name": "Kroatiese kuna",
+ "symbol": "HRK"
+ },
+ "CUC": {
+ "name": "Kubaanse omskakelbare peso",
+ "symbol": "CUC"
+ },
+ "CUP": {
+ "name": "Kubaanse peso",
+ "symbol": "CUP"
+ },
+ "LAK": {
+ "name": "Laosiaanse kip",
+ "symbol": "LAK"
+ },
+ "LBP": {
+ "name": "Lebanese pond",
+ "symbol": "LBP"
+ },
+ "LSL": {
+ "name": "Lesotho loti",
+ "symbol": "LSL"
+ },
+ "LRD": {
+ "name": "Liberiese dollar",
+ "symbol": "LRD"
+ },
+ "LYD": {
+ "name": "Libiese dinar",
+ "symbol": "LYD"
+ },
+ "LTL": {
+ "name": "Litause litas",
+ "symbol": "LTL"
+ },
+ "MOP": {
+ "name": "Macaose pataca",
+ "symbol": "MOP"
+ },
+ "MKD": {
+ "name": "Macedoniese denar",
+ "symbol": "MKD"
+ },
+ "MWK": {
+ "name": "Malawiese kwacha",
+ "symbol": "MWK"
+ },
+ "MVR": {
+ "name": "Malediviese rufia",
+ "symbol": "MVR"
+ },
+ "MYR": {
+ "name": "Maleisiese ringgit",
+ "symbol": "MYR"
+ },
+ "MGA": {
+ "name": "Malgassiese ariary",
+ "symbol": "MGA"
+ },
+ "MAD": {
+ "name": "Marokkaanse dirham",
+ "symbol": "MAD"
+ },
+ "MRO": {
+ "name": "Mauritaniese ouguiya",
+ "symbol": "MRO"
+ },
+ "MUR": {
+ "name": "Mauritiaanse rupee",
+ "symbol": "MUR"
+ },
+ "MXN": {
+ "name": "Meksikaanse peso",
+ "symbol": "MXN"
+ },
+ "MMK": {
+ "name": "Mianmese kyat",
+ "symbol": "MMK"
+ },
+ "MDL": {
+ "name": "Moldowiese leu",
+ "symbol": "MDL"
+ },
+ "MNT": {
+ "name": "Mongoolse toegrik",
+ "symbol": "MNT"
+ },
+ "MZN": {
+ "name": "Mosambiekse metical",
+ "symbol": "MZN"
+ },
+ "NAD": {
+ "name": "Namibiese dollar",
+ "symbol": "NAD"
+ },
+ "ANG": {
+ "name": "Nederlands-Antilliaanse gulde",
+ "symbol": "ANG"
+ },
+ "NPR": {
+ "name": "Nepalese roepee",
+ "symbol": "NPR"
+ },
+ "NIO": {
+ "name": "Nicaraguaanse córdoba",
+ "symbol": "NIO"
+ },
+ "NZD": {
+ "name": "Nieu-Seeland dollar",
+ "symbol": "NZ$"
+ },
+ "NGN": {
+ "name": "Nigeriese naira",
+ "symbol": "NGN"
+ },
+ "KPW": {
+ "name": "Noord-Koreaanse won",
+ "symbol": "KPW"
+ },
+ "NOK": {
+ "name": "Noorse kroon",
+ "symbol": "NOK"
+ },
+ "TWD": {
+ "name": "Nuwe Taiwanese dollar",
+ "symbol": "NT$"
+ },
+ "UAH": {
+ "name": "Oekraïnse hriwna",
+ "symbol": "UAH"
+ },
+ "UZS": {
+ "name": "Oezbekiese som",
+ "symbol": "UZS"
+ },
+ "OMR": {
+ "name": "Omaanse rial",
+ "symbol": "OMR"
+ },
+ "XCD": {
+ "name": "Oos-Karibbiese dollar",
+ "symbol": "EC$"
+ },
+ "PKR": {
+ "name": "Pakistanse roepee",
+ "symbol": "PKR"
+ },
+ "PAB": {
+ "name": "Panamese balboa",
+ "symbol": "PAB"
+ },
+ "PGK": {
+ "name": "Papoea-Nieu-Guinese kina",
+ "symbol": "PGK"
+ },
+ "PYG": {
+ "name": "Paraguaanse guarani",
+ "symbol": "PYG"
+ },
+ "PEN": {
+ "name": "Peruaanse nuwe sol",
+ "symbol": "PEN"
+ },
+ "PLN": {
+ "name": "Poolse zloty",
+ "symbol": "PLN"
+ },
+ "RON": {
+ "name": "Roemeense leu",
+ "symbol": "RON"
+ },
+ "RUB": {
+ "name": "Russiese roebel",
+ "symbol": "RUB"
+ },
+ "RWF": {
+ "name": "Rwandiese frank",
+ "symbol": "RWF"
+ },
+ "SBD": {
+ "name": "Salomonseilande dollar",
+ "symbol": "SBD"
+ },
+ "WST": {
+ "name": "Samoaanse tala",
+ "symbol": "WST"
+ },
+ "STD": {
+ "name": "São Tomé en Príncipe dobra",
+ "symbol": "STD"
+ },
+ "SAR": {
+ "name": "Saoedi-Arabiese riyal",
+ "symbol": "SAR"
+ },
+ "RSD": {
+ "name": "Serbiese dinar",
+ "symbol": "RSD"
+ },
+ "SCR": {
+ "name": "Seychellese rupee",
+ "symbol": "SCR"
+ },
+ "SLL": {
+ "name": "Sierra Leoniese leone",
+ "symbol": "SLL"
+ },
+ "SGD": {
+ "name": "Singapoer dollar",
+ "symbol": "SGD"
+ },
+ "SHP": {
+ "name": "Sint Helena pond",
+ "symbol": "SHP"
+ },
+ "SYP": {
+ "name": "Siriese pond",
+ "symbol": "SYP"
+ },
+ "CNY": {
+ "name": "Sjinese joean renminbi",
+ "symbol": "CNÂ¥"
+ },
+ "SDG": {
+ "name": "Soedannese pond",
+ "symbol": "SDG"
+ },
+ "SOS": {
+ "name": "Somaliese sjieling",
+ "symbol": "SOS"
+ },
+ "LKR": {
+ "name": "Sri Lankaanse roepee",
+ "symbol": "LKR"
+ },
+ "ZAR": {
+ "name": "Suid-Afrikaanse rand",
+ "symbol": "R"
+ },
+ "KRW": {
+ "name": "Suid-Koreaanse won",
+ "symbol": "â‚©"
+ },
+ "SSP": {
+ "name": "Suid-Soedanese pond",
+ "symbol": "SSP"
+ },
+ "SRD": {
+ "name": "Surinaamse dollar",
+ "symbol": "SRD"
+ },
+ "SVC": {
+ "name": "SVC",
+ "symbol": "SVC"
+ },
+ "SZL": {
+ "name": "Swazilandse lilangeni",
+ "symbol": "SZL"
+ },
+ "SEK": {
+ "name": "Sweedse kroon",
+ "symbol": "SEK"
+ },
+ "CHF": {
+ "name": "Switserse frank",
+ "symbol": "CHF"
+ },
+ "TJS": {
+ "name": "Tadjikse roebel",
+ "symbol": "TJS"
+ },
+ "TZS": {
+ "name": "Tanzaniese sjieling",
+ "symbol": "TZS"
+ },
+ "THB": {
+ "name": "Thaise baht",
+ "symbol": "฿"
+ },
+ "TOP": {
+ "name": "Tongaanse pa’anga",
+ "symbol": "TOP"
+ },
+ "TTD": {
+ "name": "Trinidad en Tobago dollar",
+ "symbol": "TTD"
+ },
+ "CZK": {
+ "name": "Tsjeggiese kroon",
+ "symbol": "CZK"
+ },
+ "TND": {
+ "name": "Tunisiese dinar",
+ "symbol": "TND"
+ },
+ "TMT": {
+ "name": "Turkmeense manat",
+ "symbol": "TMT"
+ },
+ "TRY": {
+ "name": "Turkse lier",
+ "symbol": "TRY"
+ },
+ "UGX": {
+ "name": "Ugandese sjieling",
+ "symbol": "UGX"
+ },
+ "UYU": {
+ "name": "Uruguaanse peso",
+ "symbol": "UYU"
+ },
+ "VUV": {
+ "name": "Vanuatuse vatu",
+ "symbol": "VUV"
+ },
+ "VEF": {
+ "name": "Venezolaanse bolivar",
+ "symbol": "VEF"
+ },
+ "AED": {
+ "name": "Verenigde Arabiese Emirate dirham",
+ "symbol": "AED"
+ },
+ "VND": {
+ "name": "Viëtnamese dong",
+ "symbol": "â‚«"
+ },
+ "ISK": {
+ "name": "Yslandse kroon",
+ "symbol": "ISK"
+ },
+ "ZMW": {
+ "name": "Zambiese kwacha",
+ "symbol": "ZMW"
+ },
+ "ZWL": {
+ "name": "ZWL",
+ "symbol": "ZWL"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/currency/agq.json b/library/intl/resources/currency/agq.json
new file mode 100644
index 000000000..3e769825f
--- /dev/null
+++ b/library/intl/resources/currency/agq.json
@@ -0,0 +1,634 @@
+{
+ "AFN": {
+ "name": "AFN",
+ "symbol": "AFN"
+ },
+ "MGA": {
+ "name": "ÀlÇalè è Màlàgasì",
+ "symbol": "MGA"
+ },
+ "ALL": {
+ "name": "ALL",
+ "symbol": "ALL"
+ },
+ "AMD": {
+ "name": "AMD",
+ "symbol": "AMD"
+ },
+ "ANG": {
+ "name": "ANG",
+ "symbol": "ANG"
+ },
+ "ARS": {
+ "name": "ARS",
+ "symbol": "ARS"
+ },
+ "AWG": {
+ "name": "AWG",
+ "symbol": "AWG"
+ },
+ "AZN": {
+ "name": "AZN",
+ "symbol": "AZN"
+ },
+ "BAM": {
+ "name": "BAM",
+ "symbol": "BAM"
+ },
+ "BBD": {
+ "name": "BBD",
+ "symbol": "BBD"
+ },
+ "BDT": {
+ "name": "BDT",
+ "symbol": "BDT"
+ },
+ "BGN": {
+ "name": "BGN",
+ "symbol": "BGN"
+ },
+ "ETB": {
+ "name": "Bîi è Etyǒkpìa",
+ "symbol": "ETB"
+ },
+ "BMD": {
+ "name": "BMD",
+ "symbol": "BMD"
+ },
+ "BND": {
+ "name": "BND",
+ "symbol": "BND"
+ },
+ "BOB": {
+ "name": "BOB",
+ "symbol": "BOB"
+ },
+ "EGP": {
+ "name": "Bɔ̀ŋ è Edzì",
+ "symbol": "EGP"
+ },
+ "SHP": {
+ "name": "Bɔ̀ŋ è Sɛ̀n Èlenà",
+ "symbol": "SHP"
+ },
+ "SDG": {
+ "name": "Bɔ̀ŋ è Sùdànê",
+ "symbol": "SDG"
+ },
+ "GBP": {
+ "name": "Bɔ̀ŋ Sɨ̀telè è Bèletì",
+ "symbol": "£"
+ },
+ "BRL": {
+ "name": "BRL",
+ "symbol": "R$"
+ },
+ "BSD": {
+ "name": "BSD",
+ "symbol": "BSD"
+ },
+ "BTN": {
+ "name": "BTN",
+ "symbol": "BTN"
+ },
+ "BYR": {
+ "name": "BYR",
+ "symbol": "BYR"
+ },
+ "BZD": {
+ "name": "BZD",
+ "symbol": "BZD"
+ },
+ "XOF": {
+ "name": "CFA Fàlâŋ BCEAO",
+ "symbol": "CFA"
+ },
+ "XAF": {
+ "name": "CFA Fàlâŋ BEAC",
+ "symbol": "FCFA"
+ },
+ "CLP": {
+ "name": "CLP",
+ "symbol": "CLP"
+ },
+ "COP": {
+ "name": "COP",
+ "symbol": "COP"
+ },
+ "CRC": {
+ "name": "CRC",
+ "symbol": "CRC"
+ },
+ "CUC": {
+ "name": "CUC",
+ "symbol": "CUC"
+ },
+ "CUP": {
+ "name": "CUP",
+ "symbol": "CUP"
+ },
+ "CZK": {
+ "name": "CZK",
+ "symbol": "CZK"
+ },
+ "GMD": {
+ "name": "Dàlasì è Gambìa",
+ "symbol": "GMD"
+ },
+ "MAD": {
+ "name": "Dilàm è Mòlokò",
+ "symbol": "MAD"
+ },
+ "AED": {
+ "name": "Dilàm è Yùnaetɛ Alab Emelɛ̀",
+ "symbol": "AED"
+ },
+ "DZD": {
+ "name": "Dinà è Àdzɛlìa",
+ "symbol": "DZD"
+ },
+ "BHD": {
+ "name": "Dinà è Balae",
+ "symbol": "BHD"
+ },
+ "LYD": {
+ "name": "Dinà è Lebìa",
+ "symbol": "LYD"
+ },
+ "TND": {
+ "name": "Dinà è Tùwneshìa",
+ "symbol": "TND"
+ },
+ "DKK": {
+ "name": "DKK",
+ "symbol": "DKK"
+ },
+ "DOP": {
+ "name": "DOP",
+ "symbol": "DOP"
+ },
+ "STD": {
+ "name": "Dɔbàlà è Sàwu Tɔ̀me à Pèlènsipè",
+ "symbol": "STD"
+ },
+ "CAD": {
+ "name": "Dɔlà è Kanadà",
+ "symbol": "CA$"
+ },
+ "NAD": {
+ "name": "Dɔlà è Nàmibìa",
+ "symbol": "NAD"
+ },
+ "USD": {
+ "name": "Dɔlà è US",
+ "symbol": "US$"
+ },
+ "AUD": {
+ "name": "Dɔlà e Ùsɨ̀tɛ̀lɛlìa",
+ "symbol": "A$"
+ },
+ "LRD": {
+ "name": "Dɔlà Làebɛlìa",
+ "symbol": "LRD"
+ },
+ "BIF": {
+ "name": "Fàlâŋ è Bùlundì",
+ "symbol": "BIF"
+ },
+ "DJF": {
+ "name": "Fàlâŋ è Dzìbutì",
+ "symbol": "DJF"
+ },
+ "KMF": {
+ "name": "Fàlâŋ è Komolìa",
+ "symbol": "KMF"
+ },
+ "CDF": {
+ "name": "Fàlâŋ è Kuŋgùlê",
+ "symbol": "CDF"
+ },
+ "RWF": {
+ "name": "Fàlâŋ è Lùwandà",
+ "symbol": "RWF"
+ },
+ "CHF": {
+ "name": "Fàlâŋ è Sues",
+ "symbol": "CHF"
+ },
+ "FJD": {
+ "name": "FJD",
+ "symbol": "FJD"
+ },
+ "FKP": {
+ "name": "FKP",
+ "symbol": "FKP"
+ },
+ "GEL": {
+ "name": "GEL",
+ "symbol": "GEL"
+ },
+ "JPY": {
+ "name": "Ghɨ̂n Dzàkpànê",
+ "symbol": "JPÂ¥"
+ },
+ "GHS": {
+ "name": "GHS",
+ "symbol": "GHS"
+ },
+ "GIP": {
+ "name": "GIP",
+ "symbol": "GIP"
+ },
+ "GNF": {
+ "name": "GNF",
+ "symbol": "GNF"
+ },
+ "GTQ": {
+ "name": "GTQ",
+ "symbol": "GTQ"
+ },
+ "GYD": {
+ "name": "GYD",
+ "symbol": "GYD"
+ },
+ "HKD": {
+ "name": "HKD",
+ "symbol": "HK$"
+ },
+ "HNL": {
+ "name": "HNL",
+ "symbol": "HNL"
+ },
+ "HRK": {
+ "name": "HRK",
+ "symbol": "HRK"
+ },
+ "HTG": {
+ "name": "HTG",
+ "symbol": "HTG"
+ },
+ "HUF": {
+ "name": "HUF",
+ "symbol": "HUF"
+ },
+ "IDR": {
+ "name": "IDR",
+ "symbol": "IDR"
+ },
+ "ILS": {
+ "name": "ILS",
+ "symbol": "₪"
+ },
+ "IQD": {
+ "name": "IQD",
+ "symbol": "IQD"
+ },
+ "IRR": {
+ "name": "IRR",
+ "symbol": "IRR"
+ },
+ "ISK": {
+ "name": "ISK",
+ "symbol": "ISK"
+ },
+ "JMD": {
+ "name": "JMD",
+ "symbol": "JMD"
+ },
+ "JOD": {
+ "name": "JOD",
+ "symbol": "JOD"
+ },
+ "CVE": {
+ "name": "Kàbòvàdianù è Èsùkudò",
+ "symbol": "CVE"
+ },
+ "KGS": {
+ "name": "KGS",
+ "symbol": "KGS"
+ },
+ "KHR": {
+ "name": "KHR",
+ "symbol": "KHR"
+ },
+ "BWP": {
+ "name": "Kpuwlà è Botɨshǔanà",
+ "symbol": "BWP"
+ },
+ "KPW": {
+ "name": "KPW",
+ "symbol": "KPW"
+ },
+ "KRW": {
+ "name": "KRW",
+ "symbol": "â‚©"
+ },
+ "MWK": {
+ "name": "Kwachà è Màlawè",
+ "symbol": "MWK"
+ },
+ "ZMW": {
+ "name": "Kwachà è Zambìa",
+ "symbol": "ZMW"
+ },
+ "AOA": {
+ "name": "Kwanzà è Àŋgolà",
+ "symbol": "AOA"
+ },
+ "KWD": {
+ "name": "KWD",
+ "symbol": "KWD"
+ },
+ "KYD": {
+ "name": "KYD",
+ "symbol": "KYD"
+ },
+ "KZT": {
+ "name": "KZT",
+ "symbol": "KZT"
+ },
+ "LAK": {
+ "name": "LAK",
+ "symbol": "LAK"
+ },
+ "ZAR": {
+ "name": "Lân è Afɨlekà ghɨ Emàm ghò",
+ "symbol": "ZAR"
+ },
+ "LBP": {
+ "name": "LBP",
+ "symbol": "LBP"
+ },
+ "SZL": {
+ "name": "Lèlàŋgenè",
+ "symbol": "SZL"
+ },
+ "SAR": {
+ "name": "Leyà è Sàwudì",
+ "symbol": "SAR"
+ },
+ "LKR": {
+ "name": "LKR",
+ "symbol": "LKR"
+ },
+ "LSL": {
+ "name": "Lɔtì Lèsutù",
+ "symbol": "LSL"
+ },
+ "LTL": {
+ "name": "LTL",
+ "symbol": "LTL"
+ },
+ "INR": {
+ "name": "Lukpì è Endìa",
+ "symbol": "₹"
+ },
+ "MUR": {
+ "name": "Lukpìi è Mùleshòs",
+ "symbol": "MUR"
+ },
+ "SCR": {
+ "name": "Lukpìi è Sɛchɛ̀lɛ̀",
+ "symbol": "SCR"
+ },
+ "SLL": {
+ "name": "Lyɔ̂ŋ",
+ "symbol": "SLL"
+ },
+ "MDL": {
+ "name": "MDL",
+ "symbol": "MDL"
+ },
+ "MKD": {
+ "name": "MKD",
+ "symbol": "MKD"
+ },
+ "MMK": {
+ "name": "MMK",
+ "symbol": "MMK"
+ },
+ "MNT": {
+ "name": "MNT",
+ "symbol": "MNT"
+ },
+ "MOP": {
+ "name": "MOP",
+ "symbol": "MOP"
+ },
+ "MVR": {
+ "name": "MVR",
+ "symbol": "MVR"
+ },
+ "MXN": {
+ "name": "MXN",
+ "symbol": "MX$"
+ },
+ "MYR": {
+ "name": "MYR",
+ "symbol": "MYR"
+ },
+ "MZN": {
+ "name": "MZN",
+ "symbol": "MZN"
+ },
+ "NGN": {
+ "name": "Naelà è Gɨ̀anyɨ",
+ "symbol": "NGN"
+ },
+ "ERN": {
+ "name": "Nakafa è Èletɨ̀làe",
+ "symbol": "ERN"
+ },
+ "NIO": {
+ "name": "NIO",
+ "symbol": "NIO"
+ },
+ "NOK": {
+ "name": "NOK",
+ "symbol": "NOK"
+ },
+ "NPR": {
+ "name": "NPR",
+ "symbol": "NPR"
+ },
+ "NZD": {
+ "name": "NZD",
+ "symbol": "NZ$"
+ },
+ "OMR": {
+ "name": "OMR",
+ "symbol": "OMR"
+ },
+ "PAB": {
+ "name": "PAB",
+ "symbol": "PAB"
+ },
+ "PEN": {
+ "name": "PEN",
+ "symbol": "PEN"
+ },
+ "PGK": {
+ "name": "PGK",
+ "symbol": "PGK"
+ },
+ "PHP": {
+ "name": "PHP",
+ "symbol": "PHP"
+ },
+ "PKR": {
+ "name": "PKR",
+ "symbol": "PKR"
+ },
+ "PLN": {
+ "name": "PLN",
+ "symbol": "PLN"
+ },
+ "PYG": {
+ "name": "PYG",
+ "symbol": "PYG"
+ },
+ "QAR": {
+ "name": "QAR",
+ "symbol": "QAR"
+ },
+ "RON": {
+ "name": "RON",
+ "symbol": "RON"
+ },
+ "RSD": {
+ "name": "RSD",
+ "symbol": "RSD"
+ },
+ "RUB": {
+ "name": "RUB",
+ "symbol": "RUB"
+ },
+ "SBD": {
+ "name": "SBD",
+ "symbol": "SBD"
+ },
+ "SEK": {
+ "name": "SEK",
+ "symbol": "SEK"
+ },
+ "SGD": {
+ "name": "SGD",
+ "symbol": "SGD"
+ },
+ "SOS": {
+ "name": "Shwɨlà è Sùmalìa",
+ "symbol": "SOS"
+ },
+ "TZS": {
+ "name": "Shwɨlà è Tàanzanyìa",
+ "symbol": "TZS"
+ },
+ "UGX": {
+ "name": "Shwɨlà è Yùgandà",
+ "symbol": "UGX"
+ },
+ "KES": {
+ "name": "Shwɨlà tɨ Kenyà",
+ "symbol": "KES"
+ },
+ "SRD": {
+ "name": "SRD",
+ "symbol": "SRD"
+ },
+ "SSP": {
+ "name": "SSP",
+ "symbol": "SSP"
+ },
+ "SVC": {
+ "name": "SVC",
+ "symbol": "SVC"
+ },
+ "SYP": {
+ "name": "SYP",
+ "symbol": "SYP"
+ },
+ "THB": {
+ "name": "THB",
+ "symbol": "THB"
+ },
+ "TJS": {
+ "name": "TJS",
+ "symbol": "TJS"
+ },
+ "TMT": {
+ "name": "TMT",
+ "symbol": "TMT"
+ },
+ "TOP": {
+ "name": "TOP",
+ "symbol": "TOP"
+ },
+ "TRY": {
+ "name": "TRY",
+ "symbol": "TRY"
+ },
+ "TTD": {
+ "name": "TTD",
+ "symbol": "TTD"
+ },
+ "TWD": {
+ "name": "TWD",
+ "symbol": "NT$"
+ },
+ "UAH": {
+ "name": "UAH",
+ "symbol": "UAH"
+ },
+ "MRO": {
+ "name": "Ùgueya è Mùlètenyìa",
+ "symbol": "MRO"
+ },
+ "UYU": {
+ "name": "UYU",
+ "symbol": "UYU"
+ },
+ "UZS": {
+ "name": "UZS",
+ "symbol": "UZS"
+ },
+ "VEF": {
+ "name": "VEF",
+ "symbol": "VEF"
+ },
+ "VND": {
+ "name": "VND",
+ "symbol": "â‚«"
+ },
+ "VUV": {
+ "name": "VUV",
+ "symbol": "VUV"
+ },
+ "WST": {
+ "name": "WST",
+ "symbol": "WST"
+ },
+ "XCD": {
+ "name": "XCD",
+ "symbol": "EC$"
+ },
+ "XPF": {
+ "name": "XPF",
+ "symbol": "CFPF"
+ },
+ "YER": {
+ "name": "YER",
+ "symbol": "YER"
+ },
+ "EUR": {
+ "name": "Yulù",
+ "symbol": "€"
+ },
+ "CNY": {
+ "name": "Yùwân Lèmembi è Chaenî",
+ "symbol": "CNÂ¥"
+ },
+ "ZWL": {
+ "name": "ZWL",
+ "symbol": "ZWL"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/currency/ak.json b/library/intl/resources/currency/ak.json
new file mode 100644
index 000000000..6c8a24eaf
--- /dev/null
+++ b/library/intl/resources/currency/ak.json
@@ -0,0 +1,634 @@
+{
+ "AFN": {
+ "name": "AFN",
+ "symbol": "AFN"
+ },
+ "ZAR": {
+ "name": "Afrika Anaafo Rand",
+ "symbol": "ZAR"
+ },
+ "ALL": {
+ "name": "ALL",
+ "symbol": "ALL"
+ },
+ "AMD": {
+ "name": "AMD",
+ "symbol": "AMD"
+ },
+ "USD": {
+ "name": "Amɛrika Dɔla",
+ "symbol": "US$"
+ },
+ "ANG": {
+ "name": "ANG",
+ "symbol": "ANG"
+ },
+ "AOA": {
+ "name": "Angola Kwanza",
+ "symbol": "AOA"
+ },
+ "ARS": {
+ "name": "ARS",
+ "symbol": "ARS"
+ },
+ "AWG": {
+ "name": "AWG",
+ "symbol": "AWG"
+ },
+ "AZN": {
+ "name": "AZN",
+ "symbol": "AZN"
+ },
+ "BAM": {
+ "name": "BAM",
+ "symbol": "BAM"
+ },
+ "BHD": {
+ "name": "Baren Dina",
+ "symbol": "BHD"
+ },
+ "BBD": {
+ "name": "BBD",
+ "symbol": "BBD"
+ },
+ "BDT": {
+ "name": "BDT",
+ "symbol": "BDT"
+ },
+ "BGN": {
+ "name": "BGN",
+ "symbol": "BGN"
+ },
+ "BMD": {
+ "name": "BMD",
+ "symbol": "BMD"
+ },
+ "BND": {
+ "name": "BND",
+ "symbol": "BND"
+ },
+ "BOB": {
+ "name": "BOB",
+ "symbol": "BOB"
+ },
+ "BWP": {
+ "name": "Botswana Pula",
+ "symbol": "BWP"
+ },
+ "GBP": {
+ "name": "Breten Pɔn",
+ "symbol": "£"
+ },
+ "BRL": {
+ "name": "BRL",
+ "symbol": "R$"
+ },
+ "BSD": {
+ "name": "BSD",
+ "symbol": "BSD"
+ },
+ "BTN": {
+ "name": "BTN",
+ "symbol": "BTN"
+ },
+ "BIF": {
+ "name": "Burundi Frank",
+ "symbol": "BIF"
+ },
+ "BYR": {
+ "name": "BYR",
+ "symbol": "BYR"
+ },
+ "BZD": {
+ "name": "BZD",
+ "symbol": "BZD"
+ },
+ "CHF": {
+ "name": "CHF",
+ "symbol": "CHF"
+ },
+ "CLP": {
+ "name": "CLP",
+ "symbol": "CLP"
+ },
+ "COP": {
+ "name": "COP",
+ "symbol": "COP"
+ },
+ "CRC": {
+ "name": "CRC",
+ "symbol": "CRC"
+ },
+ "CUC": {
+ "name": "CUC",
+ "symbol": "CUC"
+ },
+ "CUP": {
+ "name": "CUP",
+ "symbol": "CUP"
+ },
+ "CZK": {
+ "name": "CZK",
+ "symbol": "CZK"
+ },
+ "DKK": {
+ "name": "DKK",
+ "symbol": "DKK"
+ },
+ "DOP": {
+ "name": "DOP",
+ "symbol": "DOP"
+ },
+ "EGP": {
+ "name": "Egypt Pɔn",
+ "symbol": "EGP"
+ },
+ "AED": {
+ "name": "Æmirete Arab NkabÉ”mu Deram",
+ "symbol": "AED"
+ },
+ "ERN": {
+ "name": "Æretereya Nakfa",
+ "symbol": "ERN"
+ },
+ "CVE": {
+ "name": "Æskudo",
+ "symbol": "CVE"
+ },
+ "FJD": {
+ "name": "FJD",
+ "symbol": "FJD"
+ },
+ "FKP": {
+ "name": "FKP",
+ "symbol": "FKP"
+ },
+ "GMD": {
+ "name": "Gambia Dalasi",
+ "symbol": "GMD"
+ },
+ "GEL": {
+ "name": "GEL",
+ "symbol": "GEL"
+ },
+ "GHS": {
+ "name": "Ghana Sidi",
+ "symbol": "GH₵"
+ },
+ "GIP": {
+ "name": "GIP",
+ "symbol": "GIP"
+ },
+ "GNF": {
+ "name": "GNF",
+ "symbol": "GNF"
+ },
+ "GTQ": {
+ "name": "GTQ",
+ "symbol": "GTQ"
+ },
+ "JPY": {
+ "name": "Gyapan Yɛn",
+ "symbol": "JPÂ¥"
+ },
+ "GYD": {
+ "name": "GYD",
+ "symbol": "GYD"
+ },
+ "DJF": {
+ "name": "Gyebuti Frank",
+ "symbol": "DJF"
+ },
+ "HKD": {
+ "name": "HKD",
+ "symbol": "HK$"
+ },
+ "HNL": {
+ "name": "HNL",
+ "symbol": "HNL"
+ },
+ "HRK": {
+ "name": "HRK",
+ "symbol": "HRK"
+ },
+ "HTG": {
+ "name": "HTG",
+ "symbol": "HTG"
+ },
+ "HUF": {
+ "name": "HUF",
+ "symbol": "HUF"
+ },
+ "IDR": {
+ "name": "IDR",
+ "symbol": "IDR"
+ },
+ "ILS": {
+ "name": "ILS",
+ "symbol": "₪"
+ },
+ "INR": {
+ "name": "India Rupi",
+ "symbol": "₹"
+ },
+ "IQD": {
+ "name": "IQD",
+ "symbol": "IQD"
+ },
+ "EUR": {
+ "name": "Iro",
+ "symbol": "€"
+ },
+ "IRR": {
+ "name": "IRR",
+ "symbol": "IRR"
+ },
+ "ISK": {
+ "name": "ISK",
+ "symbol": "ISK"
+ },
+ "ETB": {
+ "name": "Itiopia Bir",
+ "symbol": "ETB"
+ },
+ "JMD": {
+ "name": "JMD",
+ "symbol": "JMD"
+ },
+ "JOD": {
+ "name": "JOD",
+ "symbol": "JOD"
+ },
+ "CAD": {
+ "name": "Kanada Dɔla",
+ "symbol": "CA$"
+ },
+ "KES": {
+ "name": "Kenya Hyelen",
+ "symbol": "KES"
+ },
+ "KGS": {
+ "name": "KGS",
+ "symbol": "KGS"
+ },
+ "KHR": {
+ "name": "KHR",
+ "symbol": "KHR"
+ },
+ "KMF": {
+ "name": "Komoro Frank",
+ "symbol": "KMF"
+ },
+ "CDF": {
+ "name": "Kongo Frank",
+ "symbol": "CDF"
+ },
+ "KPW": {
+ "name": "KPW",
+ "symbol": "KPW"
+ },
+ "KRW": {
+ "name": "KRW",
+ "symbol": "â‚©"
+ },
+ "KWD": {
+ "name": "KWD",
+ "symbol": "KWD"
+ },
+ "KYD": {
+ "name": "KYD",
+ "symbol": "KYD"
+ },
+ "KZT": {
+ "name": "KZT",
+ "symbol": "KZT"
+ },
+ "LRD": {
+ "name": "Laeberia Dɔla",
+ "symbol": "LRD"
+ },
+ "LAK": {
+ "name": "LAK",
+ "symbol": "LAK"
+ },
+ "LBP": {
+ "name": "LBP",
+ "symbol": "LBP"
+ },
+ "SLL": {
+ "name": "Leone",
+ "symbol": "SLL"
+ },
+ "LSL": {
+ "name": "Lesoto Loti",
+ "symbol": "LSL"
+ },
+ "LYD": {
+ "name": "Libya Dina",
+ "symbol": "LYD"
+ },
+ "SZL": {
+ "name": "Lilangeni",
+ "symbol": "SZL"
+ },
+ "LKR": {
+ "name": "LKR",
+ "symbol": "LKR"
+ },
+ "LTL": {
+ "name": "LTL",
+ "symbol": "LTL"
+ },
+ "MGA": {
+ "name": "Madagasi Frank",
+ "symbol": "MGA"
+ },
+ "MWK": {
+ "name": "Malawi Kwacha",
+ "symbol": "MWK"
+ },
+ "MDL": {
+ "name": "MDL",
+ "symbol": "MDL"
+ },
+ "MKD": {
+ "name": "MKD",
+ "symbol": "MKD"
+ },
+ "MMK": {
+ "name": "MMK",
+ "symbol": "MMK"
+ },
+ "MNT": {
+ "name": "MNT",
+ "symbol": "MNT"
+ },
+ "MOP": {
+ "name": "MOP",
+ "symbol": "MOP"
+ },
+ "MAD": {
+ "name": "Moroko Diram",
+ "symbol": "MAD"
+ },
+ "MUR": {
+ "name": "Mɔrehyeɔs Rupi",
+ "symbol": "MUR"
+ },
+ "MRO": {
+ "name": "Mɔretenia Ouguiya",
+ "symbol": "MRO"
+ },
+ "MVR": {
+ "name": "MVR",
+ "symbol": "MVR"
+ },
+ "MXN": {
+ "name": "MXN",
+ "symbol": "MX$"
+ },
+ "MYR": {
+ "name": "MYR",
+ "symbol": "MYR"
+ },
+ "MZN": {
+ "name": "MZN",
+ "symbol": "MZN"
+ },
+ "NGN": {
+ "name": "Naegyeria Naira",
+ "symbol": "NGN"
+ },
+ "NAD": {
+ "name": "Namibia Dɔla",
+ "symbol": "NAD"
+ },
+ "NIO": {
+ "name": "NIO",
+ "symbol": "NIO"
+ },
+ "NOK": {
+ "name": "NOK",
+ "symbol": "NOK"
+ },
+ "NPR": {
+ "name": "NPR",
+ "symbol": "NPR"
+ },
+ "NZD": {
+ "name": "NZD",
+ "symbol": "NZ$"
+ },
+ "OMR": {
+ "name": "OMR",
+ "symbol": "OMR"
+ },
+ "DZD": {
+ "name": "Ɔlgyeria Dina",
+ "symbol": "DZD"
+ },
+ "AUD": {
+ "name": "Ɔstrelia Dɔla",
+ "symbol": "A$"
+ },
+ "PAB": {
+ "name": "PAB",
+ "symbol": "PAB"
+ },
+ "PEN": {
+ "name": "PEN",
+ "symbol": "PEN"
+ },
+ "PGK": {
+ "name": "PGK",
+ "symbol": "PGK"
+ },
+ "PHP": {
+ "name": "PHP",
+ "symbol": "PHP"
+ },
+ "PKR": {
+ "name": "PKR",
+ "symbol": "PKR"
+ },
+ "PLN": {
+ "name": "PLN",
+ "symbol": "PLN"
+ },
+ "PYG": {
+ "name": "PYG",
+ "symbol": "PYG"
+ },
+ "QAR": {
+ "name": "QAR",
+ "symbol": "QAR"
+ },
+ "RWF": {
+ "name": "Rewanda Frank",
+ "symbol": "RWF"
+ },
+ "RON": {
+ "name": "RON",
+ "symbol": "RON"
+ },
+ "RSD": {
+ "name": "RSD",
+ "symbol": "RSD"
+ },
+ "RUB": {
+ "name": "RUB",
+ "symbol": "RUB"
+ },
+ "STD": {
+ "name": "Sao Tome ne Principe Dobra",
+ "symbol": "STD"
+ },
+ "SAR": {
+ "name": "Saudi Riyal",
+ "symbol": "SAR"
+ },
+ "SBD": {
+ "name": "SBD",
+ "symbol": "SBD"
+ },
+ "XAF": {
+ "name": "Sefa",
+ "symbol": "FCFA"
+ },
+ "SEK": {
+ "name": "SEK",
+ "symbol": "SEK"
+ },
+ "SCR": {
+ "name": "Seyhyɛls Rupi",
+ "symbol": "SCR"
+ },
+ "SGD": {
+ "name": "SGD",
+ "symbol": "SGD"
+ },
+ "SOS": {
+ "name": "Somailia Hyelen",
+ "symbol": "SOS"
+ },
+ "SRD": {
+ "name": "SRD",
+ "symbol": "SRD"
+ },
+ "SSP": {
+ "name": "SSP",
+ "symbol": "SSP"
+ },
+ "SHP": {
+ "name": "St Helena Pɔn",
+ "symbol": "SHP"
+ },
+ "SDG": {
+ "name": "Sudan Dina",
+ "symbol": "SDG"
+ },
+ "SVC": {
+ "name": "SVC",
+ "symbol": "SVC"
+ },
+ "SYP": {
+ "name": "SYP",
+ "symbol": "SYP"
+ },
+ "TZS": {
+ "name": "Tanzania Hyelen",
+ "symbol": "TZS"
+ },
+ "THB": {
+ "name": "THB",
+ "symbol": "THB"
+ },
+ "TJS": {
+ "name": "TJS",
+ "symbol": "TJS"
+ },
+ "TMT": {
+ "name": "TMT",
+ "symbol": "TMT"
+ },
+ "TOP": {
+ "name": "TOP",
+ "symbol": "TOP"
+ },
+ "TRY": {
+ "name": "TRY",
+ "symbol": "TRY"
+ },
+ "TTD": {
+ "name": "TTD",
+ "symbol": "TTD"
+ },
+ "TND": {
+ "name": "Tunisia Dina",
+ "symbol": "TND"
+ },
+ "TWD": {
+ "name": "TWD",
+ "symbol": "NT$"
+ },
+ "UAH": {
+ "name": "UAH",
+ "symbol": "UAH"
+ },
+ "UGX": {
+ "name": "Uganda Hyelen",
+ "symbol": "UGX"
+ },
+ "UYU": {
+ "name": "UYU",
+ "symbol": "UYU"
+ },
+ "UZS": {
+ "name": "UZS",
+ "symbol": "UZS"
+ },
+ "VEF": {
+ "name": "VEF",
+ "symbol": "VEF"
+ },
+ "VND": {
+ "name": "VND",
+ "symbol": "â‚«"
+ },
+ "VUV": {
+ "name": "VUV",
+ "symbol": "VUV"
+ },
+ "WST": {
+ "name": "WST",
+ "symbol": "WST"
+ },
+ "XCD": {
+ "name": "XCD",
+ "symbol": "EC$"
+ },
+ "XOF": {
+ "name": "XOF",
+ "symbol": "CFA"
+ },
+ "XPF": {
+ "name": "XPF",
+ "symbol": "CFPF"
+ },
+ "YER": {
+ "name": "YER",
+ "symbol": "YER"
+ },
+ "CNY": {
+ "name": "Yuan",
+ "symbol": "CNÂ¥"
+ },
+ "ZMW": {
+ "name": "Zambia Kwacha",
+ "symbol": "ZMW"
+ },
+ "ZWL": {
+ "name": "ZWL",
+ "symbol": "ZWL"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/currency/am.json b/library/intl/resources/currency/am.json
new file mode 100644
index 000000000..1b86003b4
--- /dev/null
+++ b/library/intl/resources/currency/am.json
@@ -0,0 +1,634 @@
+{
+ "SVC": {
+ "name": "SVC",
+ "symbol": "SVC"
+ },
+ "ZWL": {
+ "name": "ZWL",
+ "symbol": "ZWL"
+ },
+ "LTL": {
+ "name": "ሊቱዌንያን ሊታስ",
+ "symbol": "LTL"
+ },
+ "MMK": {
+ "name": "áˆá‹«áŠ•áˆ› ክያት",
+ "symbol": "MMK"
+ },
+ "MDL": {
+ "name": "ሞáˆá‹¶á‰«áŠ• ሊኡ",
+ "symbol": "MDL"
+ },
+ "XPF": {
+ "name": "ሲ ኤá á’ áራንክ",
+ "symbol": "CFPF"
+ },
+ "WST": {
+ "name": "ሳሞአን ታላ",
+ "symbol": "WST"
+ },
+ "XOF": {
+ "name": "ሴኤáአ áራንክ ቤሴእአኦ",
+ "symbol": "CFA"
+ },
+ "XAF": {
+ "name": "ሴኤáአ áራንክ ቤእአሴ",
+ "symbol": "FCFA"
+ },
+ "BTN": {
+ "name": "ብáˆá‰³áŠ’ዠንጉáˆá‰µáˆ¨áˆ",
+ "symbol": "BTN"
+ },
+ "TMT": {
+ "name": "ቱርክሜኒስታኒ ማናት",
+ "symbol": "TMT"
+ },
+ "TOP": {
+ "name": "ቶንጋን á“’አንጋ",
+ "symbol": "TOP"
+ },
+ "CZK": {
+ "name": "ቼክ ሪáብሊክ ኮሩና",
+ "symbol": "CZK"
+ },
+ "ANG": {
+ "name": "ኔዘርላንድስ አንቲሊአን ጊáˆá‹°áˆ­",
+ "symbol": "ANG"
+ },
+ "AWG": {
+ "name": "አሩባን áሎሪን",
+ "symbol": "AWG"
+ },
+ "HUF": {
+ "name": "የáˆáŠ•áŒ‹áˆª áŽáˆªáŠ•á‰µ",
+ "symbol": "HUF"
+ },
+ "HNL": {
+ "name": "የሃንዱራ ሌáˆá“አይራ",
+ "symbol": "HNL"
+ },
+ "HTG": {
+ "name": "የሃያቲ ጓርዴ",
+ "symbol": "HTG"
+ },
+ "HKD": {
+ "name": "የሆንáŒáŠ®áŠ•áŒ ዶላር",
+ "symbol": "HK$"
+ },
+ "LYD": {
+ "name": "የሊቢያ ዲናር",
+ "symbol": "LYD"
+ },
+ "LBP": {
+ "name": "የሊባኖስ á“á‹áŠ•á‹µ",
+ "symbol": "LBP"
+ },
+ "LAK": {
+ "name": "የላኦቲ ኪá•",
+ "symbol": "LAK"
+ },
+ "LRD": {
+ "name": "የላይቤሪያ ዶላር",
+ "symbol": "LRD"
+ },
+ "LSL": {
+ "name": "የሌሶቶ ሎቲ",
+ "symbol": "LSL"
+ },
+ "INR": {
+ "name": "የሕንድ ሩá’",
+ "symbol": "₹"
+ },
+ "MWK": {
+ "name": "የማላዊ ኩዋቻ",
+ "symbol": "MWK"
+ },
+ "MYR": {
+ "name": "የማሌዥያ ሪንጊት",
+ "symbol": "MYR"
+ },
+ "MVR": {
+ "name": "የማáˆá‹²á‰« ሩáŠá‹«",
+ "symbol": "MVR"
+ },
+ "MOP": {
+ "name": "የማካኔዠá“ታካ",
+ "symbol": "MOP"
+ },
+ "MGA": {
+ "name": "የማደጋስካር ማላጋስይ አሪያርይ",
+ "symbol": "MGA"
+ },
+ "MKD": {
+ "name": "የሜቆድንያ ዲናር",
+ "symbol": "MKD"
+ },
+ "MXN": {
+ "name": "የሜክሲኮ á”ሶ",
+ "symbol": "MX$"
+ },
+ "XCD": {
+ "name": "የáˆá‹•áˆ«á‰¥ ካሪብያን ዶላር",
+ "symbol": "EC$"
+ },
+ "MUR": {
+ "name": "የሞሪሸስ ሩá’",
+ "symbol": "MUR"
+ },
+ "MRO": {
+ "name": "የሞሪቴኒያ ኦá‹áŒ‰á‹«",
+ "symbol": "MRO"
+ },
+ "MAD": {
+ "name": "የሞሮኮ ዲርሀáˆ",
+ "symbol": "MAD"
+ },
+ "MNT": {
+ "name": "የሞንጎሊያን ቱáŒáˆªáŠ­",
+ "symbol": "MNT"
+ },
+ "MZN": {
+ "name": "የሞዛáˆá‰¢áŠ­ ሜቲካáˆ",
+ "symbol": "MZN"
+ },
+ "RUB": {
+ "name": "የሩስያ ሩብáˆ",
+ "symbol": "RUB"
+ },
+ "RWF": {
+ "name": "የሩዋንዳ áራንክ",
+ "symbol": "RWF"
+ },
+ "RON": {
+ "name": "የሮማኒያ ለá‹",
+ "symbol": "RON"
+ },
+ "SBD": {
+ "name": "የሰለሞን ደሴቶች ዶላር",
+ "symbol": "SBD"
+ },
+ "KPW": {
+ "name": "የሰሜን ኮሪያ ዎን",
+ "symbol": "KPW"
+ },
+ "RSD": {
+ "name": "የሰርቢያ ዲናር",
+ "symbol": "RSD"
+ },
+ "SRD": {
+ "name": "የሰርናሜዠዶላር",
+ "symbol": "SRD"
+ },
+ "SDG": {
+ "name": "የሱዳን ዲናር",
+ "symbol": "SDG"
+ },
+ "LKR": {
+ "name": "የሲሪላንካ ሩá’",
+ "symbol": "LKR"
+ },
+ "SYP": {
+ "name": "የሲሪያ á“á‹áŠ•á‹µ",
+ "symbol": "SYP"
+ },
+ "SCR": {
+ "name": "የሲሼሠሩá’",
+ "symbol": "SCR"
+ },
+ "SGD": {
+ "name": "የሲንጋá–ር ዶላር",
+ "symbol": "SGD"
+ },
+ "STD": {
+ "name": "የሳኦ ቶመ እና á•áˆªáŠ•áˆ²á ዶብራ",
+ "symbol": "STD"
+ },
+ "SAR": {
+ "name": "የሳá‹á‹² ሪያáˆ",
+ "symbol": "SAR"
+ },
+ "SLL": {
+ "name": "የሴራሊዎን ሊዎን",
+ "symbol": "SLL"
+ },
+ "SHP": {
+ "name": "የሴይንት ሔሌና á“á‹áŠ•á‹µ",
+ "symbol": "SHP"
+ },
+ "CHF": {
+ "name": "የስዊስ áራንክ",
+ "symbol": "CHF"
+ },
+ "SEK": {
+ "name": "የስዊድን ክሮና",
+ "symbol": "SEK"
+ },
+ "SZL": {
+ "name": "የስዋዚላንድ ሊላንገኒ",
+ "symbol": "SZL"
+ },
+ "SOS": {
+ "name": "የሶማሌ ሺሊንáŒ",
+ "symbol": "SOS"
+ },
+ "BGN": {
+ "name": "የቡáˆáŒ‹áˆªá‹« ሌቭ",
+ "symbol": "BGN"
+ },
+ "BSD": {
+ "name": "የባሃማስ ዶላር",
+ "symbol": "BSD"
+ },
+ "BBD": {
+ "name": "የባርቤዶስ ዶላር",
+ "symbol": "BBD"
+ },
+ "BDT": {
+ "name": "የባንáŒáˆ‹á‹²áˆ½ ታካ",
+ "symbol": "BDT"
+ },
+ "BHD": {
+ "name": "የባኽሬን ዲናር",
+ "symbol": "BHD"
+ },
+ "BZD": {
+ "name": "የቤሊዠዶላር",
+ "symbol": "BZD"
+ },
+ "BYR": {
+ "name": "የቤላሩስያ ሩብáˆ",
+ "symbol": "BYR"
+ },
+ "BMD": {
+ "name": "የቤርሙዳ ዶላር",
+ "symbol": "BMD"
+ },
+ "BND": {
+ "name": "የብሩኔ ዶላር",
+ "symbol": "BND"
+ },
+ "BIF": {
+ "name": "የብሩንዲ áራንክ",
+ "symbol": "BIF"
+ },
+ "BRL": {
+ "name": "የብራዚሠሪáˆ",
+ "symbol": "R$"
+ },
+ "BOB": {
+ "name": "የቦሊቪያ ቦሊቪያኖ",
+ "symbol": "BOB"
+ },
+ "BAM": {
+ "name": "የቦስኒያ ሄርዞጎቪና የሚመáŠá‹˜áˆ­ ማርክ",
+ "symbol": "BAM"
+ },
+ "BWP": {
+ "name": "የቦትስዋና á‘ላ",
+ "symbol": "BWP"
+ },
+ "VUV": {
+ "name": "የቫንዋንቱ ቫቱ",
+ "symbol": "VUV"
+ },
+ "VEF": {
+ "name": "የቬንá‹á‹Œáˆ‹ ቦሊቫር",
+ "symbol": "VEF"
+ },
+ "VND": {
+ "name": "የቭየትናሠዶንáŒ",
+ "symbol": "â‚«"
+ },
+ "AED": {
+ "name": "የተባበሩት የአረብ ኤáˆáˆ¨á‰µáˆµ ዲርሀáˆ",
+ "symbol": "AED"
+ },
+ "TRY": {
+ "name": "የቱርክ ሊራ",
+ "symbol": "TRY"
+ },
+ "TND": {
+ "name": "የቱኒዚያ ዲናር",
+ "symbol": "TND"
+ },
+ "TZS": {
+ "name": "የታንዛኒያ ሺሊንáŒ",
+ "symbol": "TZS"
+ },
+ "THB": {
+ "name": "የታይላንድ ባህት",
+ "symbol": "฿"
+ },
+ "TJS": {
+ "name": "የታጂክስታን ሶሞኒ",
+ "symbol": "TJS"
+ },
+ "TTD": {
+ "name": "የትሪንዳድ እና ቶቤጎዶላር",
+ "symbol": "TTD"
+ },
+ "CLP": {
+ "name": "የቺሊ á”ሶ",
+ "symbol": "CLP"
+ },
+ "CNY": {
+ "name": "የቻይና የን",
+ "symbol": "CNÂ¥"
+ },
+ "NIO": {
+ "name": "የኒካራጓ ኮርዶባ",
+ "symbol": "NIO"
+ },
+ "NZD": {
+ "name": "የኒá‹á‹šáˆ‹áŠ•á‹µ ዶላር",
+ "symbol": "NZ$"
+ },
+ "NAD": {
+ "name": "የናሚቢያ ዶላር",
+ "symbol": "NAD"
+ },
+ "NGN": {
+ "name": "የናይጄሪያ ናይራ",
+ "symbol": "NGN"
+ },
+ "NPR": {
+ "name": "የኔá“ሠሩá’",
+ "symbol": "NPR"
+ },
+ "NOK": {
+ "name": "የኖርዌይ ክሮን",
+ "symbol": "NOK"
+ },
+ "ALL": {
+ "name": "የአáˆá‰£áŠ•á‹« ሌክ",
+ "symbol": "ALL"
+ },
+ "DZD": {
+ "name": "የአáˆáŒ„ሪያ ዲናር",
+ "symbol": "DZD"
+ },
+ "USD": {
+ "name": "የአሜሪካን ዶላር",
+ "symbol": "US$"
+ },
+ "AMD": {
+ "name": "የአርመን ድራáˆ",
+ "symbol": "AMD"
+ },
+ "ARS": {
+ "name": "የአርጀንቲና á”ሶ",
+ "symbol": "ARS"
+ },
+ "AOA": {
+ "name": "የአንጎላ ኩዋንዛ",
+ "symbol": "AOA"
+ },
+ "AUD": {
+ "name": "የአá‹áˆµá‰µáˆ«áˆŠá‹« ዶላር",
+ "symbol": "AU$"
+ },
+ "AZN": {
+ "name": "የአዛርባጃን ማናት",
+ "symbol": "AZN"
+ },
+ "ISK": {
+ "name": "የአይስላንድ ክሮና",
+ "symbol": "ISK"
+ },
+ "TWD": {
+ "name": "የአዲሷ ታይዋን ዶላር",
+ "symbol": "NT$"
+ },
+ "AFN": {
+ "name": "የአáጋን አáጋኒ",
+ "symbol": "AFN"
+ },
+ "UYU": {
+ "name": "የኡራጓይ á”ሶ",
+ "symbol": "UYU"
+ },
+ "UZS": {
+ "name": "የኡá‹á”ኪስታን ሶáˆ",
+ "symbol": "UZS"
+ },
+ "IQD": {
+ "name": "የኢራቅ ዲናር",
+ "symbol": "IQD"
+ },
+ "IRR": {
+ "name": "የኢራን ሪአáˆ",
+ "symbol": "IRR"
+ },
+ "ETB": {
+ "name": "የኢትዮጵያ ብር",
+ "symbol": "ብር"
+ },
+ "IDR": {
+ "name": "የኢንዶኔዥያ ሩá’ሃ",
+ "symbol": "IDR"
+ },
+ "ERN": {
+ "name": "የኤርትራ ናቅá‹",
+ "symbol": "ERN"
+ },
+ "ILS": {
+ "name": "የእስራኤሠአዲስ ሽቅáˆ",
+ "symbol": "₪"
+ },
+ "GBP": {
+ "name": "የእንáŒáˆŠá‹ á“á‹áŠ•á‹µ ስተርሊንáŒ",
+ "symbol": "£"
+ },
+ "OMR": {
+ "name": "የኦማን ሪአáˆ",
+ "symbol": "OMR"
+ },
+ "CUC": {
+ "name": "የኩባ የሚመáŠá‹˜áˆ­ á”ሶ",
+ "symbol": "CUC"
+ },
+ "CUP": {
+ "name": "የኩባ á”ሶ",
+ "symbol": "CUP"
+ },
+ "KWD": {
+ "name": "የኩዌት ዲናር",
+ "symbol": "KWD"
+ },
+ "KGS": {
+ "name": "የኪርጊስታን ሶáˆ",
+ "symbol": "KGS"
+ },
+ "KHR": {
+ "name": "የካáˆá‰¦á‹²á‹« ሬáˆ",
+ "symbol": "KHR"
+ },
+ "CAD": {
+ "name": "የካናዳ ዶላር",
+ "symbol": "CA$"
+ },
+ "KZT": {
+ "name": "የካዛኪስታን ተንጌ",
+ "symbol": "KZT"
+ },
+ "KYD": {
+ "name": "የካይማን ደሴቶች ዶላር",
+ "symbol": "KYD"
+ },
+ "KES": {
+ "name": "የኬኒያ ሺሊንáŒ",
+ "symbol": "KES"
+ },
+ "CVE": {
+ "name": "የኬᕠቫርዲ ኤስኩዶ",
+ "symbol": "CVE"
+ },
+ "HRK": {
+ "name": "የክሮሽያ ኩና",
+ "symbol": "HRK"
+ },
+ "COP": {
+ "name": "የኮሎáˆá‰¢á‹« á”ሶ",
+ "symbol": "COP"
+ },
+ "KMF": {
+ "name": "የኮሞሮ áራንክ",
+ "symbol": "KMF"
+ },
+ "CRC": {
+ "name": "የኮስታሪካ ኮሎን",
+ "symbol": "CRC"
+ },
+ "CDF": {
+ "name": "የኮንጠáራንክ ኮንáŒáˆŒá‹",
+ "symbol": "CDF"
+ },
+ "QAR": {
+ "name": "የኳታር ሪአáˆ",
+ "symbol": "QAR"
+ },
+ "ZMW": {
+ "name": "የዛáˆá‰¢á‹« ክዋቻ",
+ "symbol": "ZMW"
+ },
+ "YER": {
+ "name": "የየመን ሪአáˆ",
+ "symbol": "YER"
+ },
+ "UAH": {
+ "name": "የዩክሬን ሀሪይቭኒአ",
+ "symbol": "UAH"
+ },
+ "UGX": {
+ "name": "የዩጋንዳ ሺሊንáŒ",
+ "symbol": "UGX"
+ },
+ "SSP": {
+ "name": "የደቡብ ሱዳን á“á‹áŠ•á‹µ",
+ "symbol": "SSP"
+ },
+ "ZAR": {
+ "name": "የደቡብ አáሪካ ራንድ",
+ "symbol": "ZAR"
+ },
+ "KRW": {
+ "name": "የደቡብ ኮሪያ ዎን",
+ "symbol": "â‚©"
+ },
+ "DKK": {
+ "name": "የዴንማርክ ክሮን",
+ "symbol": "DKK"
+ },
+ "DOP": {
+ "name": "የዶሚኒክ á”ሶ",
+ "symbol": "DOP"
+ },
+ "JMD": {
+ "name": "የጃማይካ ዶላር",
+ "symbol": "JMD"
+ },
+ "JPY": {
+ "name": "የጃá“ን የን",
+ "symbol": "JPÂ¥"
+ },
+ "DJF": {
+ "name": "የጅቡቲ áራንክ",
+ "symbol": "DJF"
+ },
+ "JOD": {
+ "name": "የጆርዳን ዲናር",
+ "symbol": "JOD"
+ },
+ "GEL": {
+ "name": "የጆርጅያ ላሪ",
+ "symbol": "GEL"
+ },
+ "GYD": {
+ "name": "የጉየና ዶላር",
+ "symbol": "GYD"
+ },
+ "GNF": {
+ "name": "የጊኒ áራንክ",
+ "symbol": "GNF"
+ },
+ "GMD": {
+ "name": "የጋáˆá‰¢á‹« ዳላሲ",
+ "symbol": "GMD"
+ },
+ "GHS": {
+ "name": "የጋና ሲዲ",
+ "symbol": "GHS"
+ },
+ "EGP": {
+ "name": "የáŒá‰¥áŒ½ á“á‹áŠ•á‹µ",
+ "symbol": "EGP"
+ },
+ "PHP": {
+ "name": "የáŠáˆŠá’ንስ á”ሶ",
+ "symbol": "PHP"
+ },
+ "FJD": {
+ "name": "የáŠáŒ‚ ዶላር",
+ "symbol": "FJD"
+ },
+ "FKP": {
+ "name": "የáŽáŠ­áˆ‹áŠ•á‹µ ደሴቶች á“á‹áŠ•á‹µ",
+ "symbol": "FKP"
+ },
+ "PYG": {
+ "name": "የá“ራጓይ ጉአራኒ",
+ "symbol": "PYG"
+ },
+ "PKR": {
+ "name": "የá“ኪስታን ሩá’",
+ "symbol": "PKR"
+ },
+ "PGK": {
+ "name": "የá“á•á‹‹ ኒዠጊኒ ኪና",
+ "symbol": "PGK"
+ },
+ "PEN": {
+ "name": "የá”ሩቪያ ኑኤቮ ሶáˆ",
+ "symbol": "PEN"
+ },
+ "PLN": {
+ "name": "የá–ላንድ á‹áˆŽá‰²",
+ "symbol": "PLN"
+ },
+ "EUR": {
+ "name": "ዩሮ",
+ "symbol": "€"
+ },
+ "GIP": {
+ "name": "ጂብራáˆá‰°áˆ­ á“á‹áŠ•á‹µ",
+ "symbol": "GIP"
+ },
+ "GTQ": {
+ "name": "ጓቲማላን ኩቲዛáˆ",
+ "symbol": "GTQ"
+ },
+ "PAB": {
+ "name": "á“ናማኒአን ባáˆá‰¦áŠ ",
+ "symbol": "PAB"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/currency/ar.json b/library/intl/resources/currency/ar.json
new file mode 100644
index 000000000..d8d56ee12
--- /dev/null
+++ b/library/intl/resources/currency/ar.json
@@ -0,0 +1,634 @@
+{
+ "MGA": {
+ "name": "أرياري مدغشقر",
+ "symbol": "MGA"
+ },
+ "AFN": {
+ "name": "Ø£Ùغاني",
+ "symbol": "AFN"
+ },
+ "MRO": {
+ "name": "أوقية موريتانية",
+ "symbol": "Ø£.Ù….â€"
+ },
+ "CVE": {
+ "name": "اسكودو الرأس الخضراء",
+ "symbol": "CVE"
+ },
+ "MOP": {
+ "name": "باتاكا ماكاوي",
+ "symbol": "MOP"
+ },
+ "THB": {
+ "name": "باخت تايلاندي",
+ "symbol": "฿"
+ },
+ "PAB": {
+ "name": "بالبوا بنمي",
+ "symbol": "PAB"
+ },
+ "TOP": {
+ "name": "بانغا تونغا",
+ "symbol": "TOP"
+ },
+ "BWP": {
+ "name": "بولا بتسواني",
+ "symbol": "BWP"
+ },
+ "VEF": {
+ "name": "بوليÙار Ùنزويلي",
+ "symbol": "VEF"
+ },
+ "BOB": {
+ "name": "بوليÙيانو بوليÙÙŠ",
+ "symbol": "BOB"
+ },
+ "ETB": {
+ "name": "بير أثيوبي",
+ "symbol": "ETB"
+ },
+ "ARS": {
+ "name": "بيزو أرجنتيني",
+ "symbol": "ARS"
+ },
+ "DOP": {
+ "name": "بيزو الدومنيكان",
+ "symbol": "DOP"
+ },
+ "UYU": {
+ "name": "بيزو اوروغواي",
+ "symbol": "UYU"
+ },
+ "CLP": {
+ "name": "بيزو شيلي",
+ "symbol": "CLP"
+ },
+ "PHP": {
+ "name": "بيزو Ùلبيني",
+ "symbol": "PHP"
+ },
+ "CUP": {
+ "name": "بيزو كوبي",
+ "symbol": "CUP"
+ },
+ "CUC": {
+ "name": "بيزو كوبي قابل للتحويل",
+ "symbol": "CUC"
+ },
+ "COP": {
+ "name": "بيزو كولومبي",
+ "symbol": "COP"
+ },
+ "MXN": {
+ "name": "بيزو مكسيكي",
+ "symbol": "MX$"
+ },
+ "BDT": {
+ "name": "تاكا بنجلاديشي",
+ "symbol": "BDT"
+ },
+ "WST": {
+ "name": "تالا ساموا",
+ "symbol": "WST"
+ },
+ "MNT": {
+ "name": "توغروغ منغولي",
+ "symbol": "MNT"
+ },
+ "KZT": {
+ "name": "تينغ كازاخستاني",
+ "symbol": "KZT"
+ },
+ "LBP": {
+ "name": "جنية لبناني",
+ "symbol": "Ù„.Ù„.â€"
+ },
+ "GBP": {
+ "name": "جنيه إسترليني",
+ "symbol": "£"
+ },
+ "GIP": {
+ "name": "جنيه جبل طارق",
+ "symbol": "GIP"
+ },
+ "FKP": {
+ "name": "جنيه جزر Ùوكلاند",
+ "symbol": "FKP"
+ },
+ "SSP": {
+ "name": "جنيه جنوب السودان",
+ "symbol": "ج.ج.س."
+ },
+ "SHP": {
+ "name": "جنيه سانت هيلين",
+ "symbol": "SHP"
+ },
+ "SDG": {
+ "name": "جنيه سوداني",
+ "symbol": "ج.س."
+ },
+ "EGP": {
+ "name": "جنيه مصري",
+ "symbol": "ج.Ù….â€"
+ },
+ "PYG": {
+ "name": "جواراني باراجواي",
+ "symbol": "PYG"
+ },
+ "HTG": {
+ "name": "جوردى هايتي",
+ "symbol": "HTG"
+ },
+ "AMD": {
+ "name": "درام أرميني",
+ "symbol": "AMD"
+ },
+ "AED": {
+ "name": "درهم إماراتي",
+ "symbol": "د.Ø¥.â€"
+ },
+ "MAD": {
+ "name": "درهم مغربي",
+ "symbol": "د.Ù….â€"
+ },
+ "GMD": {
+ "name": "دلاسي جامبي",
+ "symbol": "GMD"
+ },
+ "STD": {
+ "name": "دوبرا ساو تومي وبرينسيبي",
+ "symbol": "STD"
+ },
+ "AUD": {
+ "name": "دولار أسترالي",
+ "symbol": "AU$"
+ },
+ "USD": {
+ "name": "دولار أمريكي",
+ "symbol": "US$"
+ },
+ "BSD": {
+ "name": "دولار باهامي",
+ "symbol": "BSD"
+ },
+ "BBD": {
+ "name": "دولار بربادوسي",
+ "symbol": "BBD"
+ },
+ "BMD": {
+ "name": "دولار برمودي",
+ "symbol": "BMD"
+ },
+ "BND": {
+ "name": "دولار بروناي",
+ "symbol": "BND"
+ },
+ "BZD": {
+ "name": "دولار بليزي",
+ "symbol": "BZD"
+ },
+ "TWD": {
+ "name": "دولار تايواني",
+ "symbol": "NT$"
+ },
+ "TTD": {
+ "name": "دولار ترينداد وتوباجو",
+ "symbol": "TTD"
+ },
+ "JMD": {
+ "name": "دولار جامايكي",
+ "symbol": "JMD"
+ },
+ "SBD": {
+ "name": "دولار جزر سليمان",
+ "symbol": "SBD"
+ },
+ "KYD": {
+ "name": "دولار جزر كيمن",
+ "symbol": "KYD"
+ },
+ "ZWL": {
+ "name": "دولار زمبابوي 2009",
+ "symbol": "ZWL"
+ },
+ "SGD": {
+ "name": "دولار سنغاÙوري",
+ "symbol": "SGD"
+ },
+ "SRD": {
+ "name": "دولار سورينامي",
+ "symbol": "SRD"
+ },
+ "XCD": {
+ "name": "دولار شرق الكاريبي",
+ "symbol": "EC$"
+ },
+ "GYD": {
+ "name": "دولار غيانا",
+ "symbol": "GYD"
+ },
+ "FJD": {
+ "name": "دولار Ùيجي",
+ "symbol": "FJD"
+ },
+ "CAD": {
+ "name": "دولار كندي",
+ "symbol": "CA$"
+ },
+ "LRD": {
+ "name": "دولار ليبيري",
+ "symbol": "LRD"
+ },
+ "NAD": {
+ "name": "دولار ناميبي",
+ "symbol": "NAD"
+ },
+ "NZD": {
+ "name": "دولار نيوزيلندي",
+ "symbol": "NZ$"
+ },
+ "HKD": {
+ "name": "دولار هونج كونج",
+ "symbol": "HK$"
+ },
+ "VND": {
+ "name": "دونج Ùيتنامي",
+ "symbol": "â‚«"
+ },
+ "JOD": {
+ "name": "دينار أردني",
+ "symbol": "د.Ø£.â€"
+ },
+ "BHD": {
+ "name": "دينار بحريني",
+ "symbol": "د.ب.â€"
+ },
+ "DZD": {
+ "name": "دينار جزائري",
+ "symbol": "د.ج.â€"
+ },
+ "RSD": {
+ "name": "دينار صربي",
+ "symbol": "RSD"
+ },
+ "IQD": {
+ "name": "دينار عراقي",
+ "symbol": "د.ع.â€"
+ },
+ "KWD": {
+ "name": "دينار كويتي",
+ "symbol": "د.Ùƒ.â€"
+ },
+ "LYD": {
+ "name": "دينار ليبي",
+ "symbol": "د.Ù„.â€"
+ },
+ "MKD": {
+ "name": "دينار مقدوني",
+ "symbol": "MKD"
+ },
+ "TND": {
+ "name": "دينارتونسي",
+ "symbol": "د.ت.â€"
+ },
+ "ZAR": {
+ "name": "راند جنوب Ø£Ùريقيا",
+ "symbol": "ZAR"
+ },
+ "BYR": {
+ "name": "روبل بيلاروسي",
+ "symbol": "BYR"
+ },
+ "RUB": {
+ "name": "روبل روسي",
+ "symbol": "RUB"
+ },
+ "IDR": {
+ "name": "روبية إندونيسية",
+ "symbol": "ر.إن."
+ },
+ "PKR": {
+ "name": "روبية باكستاني",
+ "symbol": "ر.ب."
+ },
+ "LKR": {
+ "name": "روبية سريلانكية",
+ "symbol": "LKR"
+ },
+ "SCR": {
+ "name": "روبية سيشيلية",
+ "symbol": "SCR"
+ },
+ "MUR": {
+ "name": "روبية موريشيوسية",
+ "symbol": "MUR"
+ },
+ "NPR": {
+ "name": "روبية نيبالي",
+ "symbol": "NPR"
+ },
+ "INR": {
+ "name": "روبيه هندي",
+ "symbol": "ر.Ù‡.â€"
+ },
+ "MVR": {
+ "name": "روÙيه جزر المالديÙ",
+ "symbol": "MVR"
+ },
+ "IRR": {
+ "name": "ريال إيراني",
+ "symbol": "ر.إ."
+ },
+ "BRL": {
+ "name": "ريال برازيلي",
+ "symbol": "R$"
+ },
+ "SAR": {
+ "name": "ريال سعودي",
+ "symbol": "ر.س.â€"
+ },
+ "OMR": {
+ "name": "ريال عماني",
+ "symbol": "ر.ع.â€"
+ },
+ "QAR": {
+ "name": "ريال قطري",
+ "symbol": "ر.Ù‚.â€"
+ },
+ "YER": {
+ "name": "ريال يمني",
+ "symbol": "ر.ÙŠ.â€"
+ },
+ "MYR": {
+ "name": "رينغيت ماليزي",
+ "symbol": "MYR"
+ },
+ "KHR": {
+ "name": "رييال كمبودي",
+ "symbol": "KHR"
+ },
+ "PLN": {
+ "name": "زلوتي بولندي",
+ "symbol": "PLN"
+ },
+ "PEN": {
+ "name": "سول جديد البيرو",
+ "symbol": "PEN"
+ },
+ "UZS": {
+ "name": "سوم أوزبكستاني",
+ "symbol": "UZS"
+ },
+ "KGS": {
+ "name": "سوم قيرغستاني",
+ "symbol": "KGS"
+ },
+ "TJS": {
+ "name": "سوموني طاجيكستاني",
+ "symbol": "TJS"
+ },
+ "GHS": {
+ "name": "سيدي غانا",
+ "symbol": "GHS"
+ },
+ "UGX": {
+ "name": "شلن أوغندي",
+ "symbol": "UGX"
+ },
+ "TZS": {
+ "name": "شلن تنزاني",
+ "symbol": "TZS"
+ },
+ "SOS": {
+ "name": "شلن صومالي",
+ "symbol": "SOS"
+ },
+ "KES": {
+ "name": "شلن كينيي",
+ "symbol": "KES"
+ },
+ "ILS": {
+ "name": "شيكل إسرائيلي جديد",
+ "symbol": "₪"
+ },
+ "ANG": {
+ "name": "غيلدر هولندي أنتيلي",
+ "symbol": "ANG"
+ },
+ "VUV": {
+ "name": "Ùاتو Ùانواتو",
+ "symbol": "VUV"
+ },
+ "XAF": {
+ "name": "Ùرنك Ø£Ùريقي",
+ "symbol": "FCFA"
+ },
+ "BIF": {
+ "name": "Ùرنك بروندي",
+ "symbol": "BIF"
+ },
+ "KMF": {
+ "name": "Ùرنك جزر القمر",
+ "symbol": "Ù.ج.Ù‚.â€"
+ },
+ "DJF": {
+ "name": "Ùرنك جيبوتي",
+ "symbol": "DJF"
+ },
+ "RWF": {
+ "name": "Ùرنك رواندي",
+ "symbol": "RWF"
+ },
+ "CHF": {
+ "name": "Ùرنك سويسري",
+ "symbol": "CHF"
+ },
+ "XOF": {
+ "name": "Ùرنك سي إ٠إيه غرب Ø¥Ùريقيا",
+ "symbol": "CFA"
+ },
+ "XPF": {
+ "name": "Ùرنك سي إ٠بي",
+ "symbol": "CFPF"
+ },
+ "GNF": {
+ "name": "Ùرنك غينيا",
+ "symbol": "GNF"
+ },
+ "CDF": {
+ "name": "Ùرنك كونغولي",
+ "symbol": "CDF"
+ },
+ "AWG": {
+ "name": "Ùلورن أروبي",
+ "symbol": "AWG"
+ },
+ "HUF": {
+ "name": "Ùورينت مجري",
+ "symbol": "HUF"
+ },
+ "NIO": {
+ "name": "قرطبة نيكاراغوا",
+ "symbol": "NIO"
+ },
+ "CZK": {
+ "name": "كرونة تشيكية",
+ "symbol": "CZK"
+ },
+ "DKK": {
+ "name": "كرونة دانماركي",
+ "symbol": "DKK"
+ },
+ "SEK": {
+ "name": "كرونة سويدية",
+ "symbol": "SEK"
+ },
+ "NOK": {
+ "name": "كرونة نرويجية",
+ "symbol": "NOK"
+ },
+ "ISK": {
+ "name": "كرونه أيسلندي",
+ "symbol": "ISK"
+ },
+ "ZMW": {
+ "name": "كواشا زامبي",
+ "symbol": "ZMW"
+ },
+ "MWK": {
+ "name": "كواشا مالاوي",
+ "symbol": "MWK"
+ },
+ "AOA": {
+ "name": "كوانزا أنجولي",
+ "symbol": "AOA"
+ },
+ "GTQ": {
+ "name": "كوتزال جواتيمالا",
+ "symbol": "GTQ"
+ },
+ "CRC": {
+ "name": "كولن كوستا ريكي",
+ "symbol": "CRC"
+ },
+ "SVC": {
+ "name": "كولون سلÙادوري",
+ "symbol": "SVC"
+ },
+ "HRK": {
+ "name": "كونا كرواتي",
+ "symbol": "HRK"
+ },
+ "MMK": {
+ "name": "كيات ميانمار",
+ "symbol": "MMK"
+ },
+ "LAK": {
+ "name": "كيب لاوسي",
+ "symbol": "LAK"
+ },
+ "PGK": {
+ "name": "كينا بابوا غينيا الجديدة",
+ "symbol": "PGK"
+ },
+ "GEL": {
+ "name": "لارى جورجي",
+ "symbol": "GEL"
+ },
+ "LSL": {
+ "name": "لوتي ليسوتو",
+ "symbol": "LSL"
+ },
+ "LTL": {
+ "name": "ليتا ليتوانية",
+ "symbol": "LTL"
+ },
+ "TRY": {
+ "name": "ليرة تركية",
+ "symbol": "ل.ت."
+ },
+ "SYP": {
+ "name": "ليرة سورية",
+ "symbol": "Ù„.س.â€"
+ },
+ "BGN": {
+ "name": "لي٠بلغاري",
+ "symbol": "BGN"
+ },
+ "ALL": {
+ "name": "ليك ألباني",
+ "symbol": "ALL"
+ },
+ "SZL": {
+ "name": "ليلانجيني سوازيلندي",
+ "symbol": "SZL"
+ },
+ "HNL": {
+ "name": "ليمبيرا هنداروس",
+ "symbol": "HNL"
+ },
+ "RON": {
+ "name": "ليو روماني",
+ "symbol": "RON"
+ },
+ "MDL": {
+ "name": "ليو مولدوÙÙŠ",
+ "symbol": "MDL"
+ },
+ "SLL": {
+ "name": "ليون سيراليوني",
+ "symbol": "SLL"
+ },
+ "BAM": {
+ "name": "مارك البوسنة والهرسك قابل للتحويل",
+ "symbol": "BAM"
+ },
+ "AZN": {
+ "name": "مانات أذربيجان",
+ "symbol": "AZN"
+ },
+ "TMT": {
+ "name": "مانات تركمانستان",
+ "symbol": "TMT"
+ },
+ "MZN": {
+ "name": "متكال موزمبيقي",
+ "symbol": "MZN"
+ },
+ "ERN": {
+ "name": "ناكÙا أريتري",
+ "symbol": "ERN"
+ },
+ "NGN": {
+ "name": "نايرا نيجيري",
+ "symbol": "NGN"
+ },
+ "BTN": {
+ "name": "نولتوم بوتاني",
+ "symbol": "BTN"
+ },
+ "UAH": {
+ "name": "هريÙنيا أوكراني",
+ "symbol": "UAH"
+ },
+ "KRW": {
+ "name": "وون كوريا الجنوبية",
+ "symbol": "â‚©"
+ },
+ "KPW": {
+ "name": "وون كوريا الشمالية",
+ "symbol": "KPW"
+ },
+ "JPY": {
+ "name": "ين ياباني",
+ "symbol": "JPÂ¥"
+ },
+ "CNY": {
+ "name": "يوان صيني",
+ "symbol": "ي.ص"
+ },
+ "EUR": {
+ "name": "يورو",
+ "symbol": "€"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/currency/asa.json b/library/intl/resources/currency/asa.json
new file mode 100644
index 000000000..4936fcc9b
--- /dev/null
+++ b/library/intl/resources/currency/asa.json
@@ -0,0 +1,634 @@
+{
+ "AFN": {
+ "name": "AFN",
+ "symbol": "AFN"
+ },
+ "ALL": {
+ "name": "ALL",
+ "symbol": "ALL"
+ },
+ "AMD": {
+ "name": "AMD",
+ "symbol": "AMD"
+ },
+ "ANG": {
+ "name": "ANG",
+ "symbol": "ANG"
+ },
+ "ARS": {
+ "name": "ARS",
+ "symbol": "ARS"
+ },
+ "AWG": {
+ "name": "AWG",
+ "symbol": "AWG"
+ },
+ "AZN": {
+ "name": "AZN",
+ "symbol": "AZN"
+ },
+ "BAM": {
+ "name": "BAM",
+ "symbol": "BAM"
+ },
+ "BBD": {
+ "name": "BBD",
+ "symbol": "BBD"
+ },
+ "BDT": {
+ "name": "BDT",
+ "symbol": "BDT"
+ },
+ "BGN": {
+ "name": "BGN",
+ "symbol": "BGN"
+ },
+ "ETB": {
+ "name": "bir ya Uhabeshi",
+ "symbol": "ETB"
+ },
+ "BMD": {
+ "name": "BMD",
+ "symbol": "BMD"
+ },
+ "BND": {
+ "name": "BND",
+ "symbol": "BND"
+ },
+ "BOB": {
+ "name": "BOB",
+ "symbol": "BOB"
+ },
+ "BRL": {
+ "name": "BRL",
+ "symbol": "R$"
+ },
+ "BSD": {
+ "name": "BSD",
+ "symbol": "BSD"
+ },
+ "BTN": {
+ "name": "BTN",
+ "symbol": "BTN"
+ },
+ "BYR": {
+ "name": "BYR",
+ "symbol": "BYR"
+ },
+ "BZD": {
+ "name": "BZD",
+ "symbol": "BZD"
+ },
+ "CLP": {
+ "name": "CLP",
+ "symbol": "CLP"
+ },
+ "COP": {
+ "name": "COP",
+ "symbol": "COP"
+ },
+ "CRC": {
+ "name": "CRC",
+ "symbol": "CRC"
+ },
+ "CUC": {
+ "name": "CUC",
+ "symbol": "CUC"
+ },
+ "CUP": {
+ "name": "CUP",
+ "symbol": "CUP"
+ },
+ "CZK": {
+ "name": "CZK",
+ "symbol": "CZK"
+ },
+ "GMD": {
+ "name": "dalathi ya Gambia",
+ "symbol": "GMD"
+ },
+ "DZD": {
+ "name": "dinari ya Aljeria",
+ "symbol": "DZD"
+ },
+ "BHD": {
+ "name": "dinari ya Bahareni",
+ "symbol": "BHD"
+ },
+ "LYD": {
+ "name": "dinari ya Libya",
+ "symbol": "LYD"
+ },
+ "SDG": {
+ "name": "dinari ya Thudani",
+ "symbol": "SDG"
+ },
+ "TND": {
+ "name": "dinari ya Tunithia",
+ "symbol": "TND"
+ },
+ "AED": {
+ "name": "dirham ya Falme dha Kiarabu",
+ "symbol": "AED"
+ },
+ "MAD": {
+ "name": "dirham ya Moroko",
+ "symbol": "MAD"
+ },
+ "DKK": {
+ "name": "DKK",
+ "symbol": "DKK"
+ },
+ "STD": {
+ "name": "dobra ya Thao Tome na Principe",
+ "symbol": "STD"
+ },
+ "AUD": {
+ "name": "dola ya Authtralia",
+ "symbol": "A$"
+ },
+ "CAD": {
+ "name": "dola ya Kanada",
+ "symbol": "CA$"
+ },
+ "LRD": {
+ "name": "dola ya Liberia",
+ "symbol": "LRD"
+ },
+ "USD": {
+ "name": "dola ya Marekani",
+ "symbol": "US$"
+ },
+ "NAD": {
+ "name": "dola ya Namibia",
+ "symbol": "NAD"
+ },
+ "DOP": {
+ "name": "DOP",
+ "symbol": "DOP"
+ },
+ "CVE": {
+ "name": "ethkudo ya Kepuvede",
+ "symbol": "CVE"
+ },
+ "XOF": {
+ "name": "faranga CFA BCEAO",
+ "symbol": "CFA"
+ },
+ "XAF": {
+ "name": "faranga CFA BEAC",
+ "symbol": "FCFA"
+ },
+ "MGA": {
+ "name": "faranga ya Bukini",
+ "symbol": "MGA"
+ },
+ "BIF": {
+ "name": "faranga ya Burundi",
+ "symbol": "BIF"
+ },
+ "DJF": {
+ "name": "faranga ya Jibuti",
+ "symbol": "DJF"
+ },
+ "KMF": {
+ "name": "faranga ya Komoro",
+ "symbol": "KMF"
+ },
+ "CDF": {
+ "name": "faranga ya Kongo",
+ "symbol": "CDF"
+ },
+ "RWF": {
+ "name": "faranga ya Rwanda",
+ "symbol": "RWF"
+ },
+ "CHF": {
+ "name": "faranga ya Uthwithi",
+ "symbol": "CHF"
+ },
+ "FJD": {
+ "name": "FJD",
+ "symbol": "FJD"
+ },
+ "FKP": {
+ "name": "FKP",
+ "symbol": "FKP"
+ },
+ "GEL": {
+ "name": "GEL",
+ "symbol": "GEL"
+ },
+ "GHS": {
+ "name": "GHS",
+ "symbol": "GHS"
+ },
+ "GIP": {
+ "name": "GIP",
+ "symbol": "GIP"
+ },
+ "GNF": {
+ "name": "GNF",
+ "symbol": "GNF"
+ },
+ "GTQ": {
+ "name": "GTQ",
+ "symbol": "GTQ"
+ },
+ "GYD": {
+ "name": "GYD",
+ "symbol": "GYD"
+ },
+ "HKD": {
+ "name": "HKD",
+ "symbol": "HK$"
+ },
+ "HNL": {
+ "name": "HNL",
+ "symbol": "HNL"
+ },
+ "HRK": {
+ "name": "HRK",
+ "symbol": "HRK"
+ },
+ "HTG": {
+ "name": "HTG",
+ "symbol": "HTG"
+ },
+ "HUF": {
+ "name": "HUF",
+ "symbol": "HUF"
+ },
+ "IDR": {
+ "name": "IDR",
+ "symbol": "IDR"
+ },
+ "ILS": {
+ "name": "ILS",
+ "symbol": "₪"
+ },
+ "IQD": {
+ "name": "IQD",
+ "symbol": "IQD"
+ },
+ "IRR": {
+ "name": "IRR",
+ "symbol": "IRR"
+ },
+ "ISK": {
+ "name": "ISK",
+ "symbol": "ISK"
+ },
+ "JMD": {
+ "name": "JMD",
+ "symbol": "JMD"
+ },
+ "JOD": {
+ "name": "JOD",
+ "symbol": "JOD"
+ },
+ "KGS": {
+ "name": "KGS",
+ "symbol": "KGS"
+ },
+ "KHR": {
+ "name": "KHR",
+ "symbol": "KHR"
+ },
+ "KPW": {
+ "name": "KPW",
+ "symbol": "KPW"
+ },
+ "KRW": {
+ "name": "KRW",
+ "symbol": "â‚©"
+ },
+ "ZMW": {
+ "name": "kwacha ya Dhambia",
+ "symbol": "ZMW"
+ },
+ "MWK": {
+ "name": "kwacha ya Malawi",
+ "symbol": "MWK"
+ },
+ "AOA": {
+ "name": "kwandha ya Angola",
+ "symbol": "AOA"
+ },
+ "KWD": {
+ "name": "KWD",
+ "symbol": "KWD"
+ },
+ "KYD": {
+ "name": "KYD",
+ "symbol": "KYD"
+ },
+ "KZT": {
+ "name": "KZT",
+ "symbol": "KZT"
+ },
+ "LAK": {
+ "name": "LAK",
+ "symbol": "LAK"
+ },
+ "LBP": {
+ "name": "LBP",
+ "symbol": "LBP"
+ },
+ "SLL": {
+ "name": "leoni",
+ "symbol": "SLL"
+ },
+ "SZL": {
+ "name": "lilangeni",
+ "symbol": "SZL"
+ },
+ "LKR": {
+ "name": "LKR",
+ "symbol": "LKR"
+ },
+ "LSL": {
+ "name": "loti ya Lethoto",
+ "symbol": "LSL"
+ },
+ "LTL": {
+ "name": "LTL",
+ "symbol": "LTL"
+ },
+ "MDL": {
+ "name": "MDL",
+ "symbol": "MDL"
+ },
+ "MKD": {
+ "name": "MKD",
+ "symbol": "MKD"
+ },
+ "MMK": {
+ "name": "MMK",
+ "symbol": "MMK"
+ },
+ "MNT": {
+ "name": "MNT",
+ "symbol": "MNT"
+ },
+ "MOP": {
+ "name": "MOP",
+ "symbol": "MOP"
+ },
+ "MVR": {
+ "name": "MVR",
+ "symbol": "MVR"
+ },
+ "MXN": {
+ "name": "MXN",
+ "symbol": "MX$"
+ },
+ "MYR": {
+ "name": "MYR",
+ "symbol": "MYR"
+ },
+ "MZN": {
+ "name": "MZN",
+ "symbol": "MZN"
+ },
+ "NGN": {
+ "name": "naira ya Nijeria",
+ "symbol": "NGN"
+ },
+ "ERN": {
+ "name": "nakfa ya Eritrea",
+ "symbol": "ERN"
+ },
+ "NIO": {
+ "name": "NIO",
+ "symbol": "NIO"
+ },
+ "NOK": {
+ "name": "NOK",
+ "symbol": "NOK"
+ },
+ "NPR": {
+ "name": "NPR",
+ "symbol": "NPR"
+ },
+ "NZD": {
+ "name": "NZD",
+ "symbol": "NZ$"
+ },
+ "OMR": {
+ "name": "OMR",
+ "symbol": "OMR"
+ },
+ "PAB": {
+ "name": "PAB",
+ "symbol": "PAB"
+ },
+ "EGP": {
+ "name": "pauni ya Mithri",
+ "symbol": "EGP"
+ },
+ "SHP": {
+ "name": "pauni ya Thantahelena",
+ "symbol": "SHP"
+ },
+ "GBP": {
+ "name": "pauni ya Uingeredha",
+ "symbol": "£"
+ },
+ "PEN": {
+ "name": "PEN",
+ "symbol": "PEN"
+ },
+ "PGK": {
+ "name": "PGK",
+ "symbol": "PGK"
+ },
+ "PHP": {
+ "name": "PHP",
+ "symbol": "PHP"
+ },
+ "PKR": {
+ "name": "PKR",
+ "symbol": "PKR"
+ },
+ "PLN": {
+ "name": "PLN",
+ "symbol": "PLN"
+ },
+ "BWP": {
+ "name": "pula ya Botthwana",
+ "symbol": "BWP"
+ },
+ "PYG": {
+ "name": "PYG",
+ "symbol": "PYG"
+ },
+ "QAR": {
+ "name": "QAR",
+ "symbol": "QAR"
+ },
+ "ZAR": {
+ "name": "randi ya Afrika Kuthini",
+ "symbol": "ZAR"
+ },
+ "SAR": {
+ "name": "riyal ya Thaudia",
+ "symbol": "SAR"
+ },
+ "RON": {
+ "name": "RON",
+ "symbol": "RON"
+ },
+ "RSD": {
+ "name": "RSD",
+ "symbol": "RSD"
+ },
+ "RUB": {
+ "name": "RUB",
+ "symbol": "RUB"
+ },
+ "INR": {
+ "name": "rupia ya India",
+ "symbol": "₹"
+ },
+ "MUR": {
+ "name": "rupia ya Morithi",
+ "symbol": "MUR"
+ },
+ "SCR": {
+ "name": "rupia ya Shelisheli",
+ "symbol": "SCR"
+ },
+ "SBD": {
+ "name": "SBD",
+ "symbol": "SBD"
+ },
+ "SEK": {
+ "name": "SEK",
+ "symbol": "SEK"
+ },
+ "SGD": {
+ "name": "SGD",
+ "symbol": "SGD"
+ },
+ "KES": {
+ "name": "shilingi ya Kenya",
+ "symbol": "KES"
+ },
+ "TZS": {
+ "name": "shilingi ya Tandhania",
+ "symbol": "TSh"
+ },
+ "SOS": {
+ "name": "shilingi ya Thomalia",
+ "symbol": "SOS"
+ },
+ "UGX": {
+ "name": "shilingi ya Uganda",
+ "symbol": "UGX"
+ },
+ "SRD": {
+ "name": "SRD",
+ "symbol": "SRD"
+ },
+ "SSP": {
+ "name": "SSP",
+ "symbol": "SSP"
+ },
+ "SVC": {
+ "name": "SVC",
+ "symbol": "SVC"
+ },
+ "SYP": {
+ "name": "SYP",
+ "symbol": "SYP"
+ },
+ "JPY": {
+ "name": "tharafu ya Kijapani",
+ "symbol": "JPÂ¥"
+ },
+ "THB": {
+ "name": "THB",
+ "symbol": "THB"
+ },
+ "TJS": {
+ "name": "TJS",
+ "symbol": "TJS"
+ },
+ "TMT": {
+ "name": "TMT",
+ "symbol": "TMT"
+ },
+ "TOP": {
+ "name": "TOP",
+ "symbol": "TOP"
+ },
+ "TRY": {
+ "name": "TRY",
+ "symbol": "TRY"
+ },
+ "TTD": {
+ "name": "TTD",
+ "symbol": "TTD"
+ },
+ "TWD": {
+ "name": "TWD",
+ "symbol": "NT$"
+ },
+ "UAH": {
+ "name": "UAH",
+ "symbol": "UAH"
+ },
+ "MRO": {
+ "name": "ugwiya ya Moritania",
+ "symbol": "MRO"
+ },
+ "UYU": {
+ "name": "UYU",
+ "symbol": "UYU"
+ },
+ "UZS": {
+ "name": "UZS",
+ "symbol": "UZS"
+ },
+ "VEF": {
+ "name": "VEF",
+ "symbol": "VEF"
+ },
+ "VND": {
+ "name": "VND",
+ "symbol": "â‚«"
+ },
+ "VUV": {
+ "name": "VUV",
+ "symbol": "VUV"
+ },
+ "WST": {
+ "name": "WST",
+ "symbol": "WST"
+ },
+ "XCD": {
+ "name": "XCD",
+ "symbol": "EC$"
+ },
+ "XPF": {
+ "name": "XPF",
+ "symbol": "CFPF"
+ },
+ "YER": {
+ "name": "YER",
+ "symbol": "YER"
+ },
+ "CNY": {
+ "name": "yuan renminbi ya China",
+ "symbol": "CNÂ¥"
+ },
+ "EUR": {
+ "name": "yuro",
+ "symbol": "€"
+ },
+ "ZWL": {
+ "name": "ZWL",
+ "symbol": "ZWL"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/currency/ast.json b/library/intl/resources/currency/ast.json
new file mode 100644
index 000000000..c36cb7697
--- /dev/null
+++ b/library/intl/resources/currency/ast.json
@@ -0,0 +1,634 @@
+{
+ "AFN": {
+ "name": "afganí afganistanu",
+ "symbol": "AFN"
+ },
+ "MGA": {
+ "name": "ariary malgaxe",
+ "symbol": "MGA"
+ },
+ "THB": {
+ "name": "baht tailandés",
+ "symbol": "฿"
+ },
+ "PAB": {
+ "name": "balboa panamiegu",
+ "symbol": "PAB"
+ },
+ "ETB": {
+ "name": "birr etíope",
+ "symbol": "ETB"
+ },
+ "VEF": {
+ "name": "bolívar venezolanu",
+ "symbol": "VEF"
+ },
+ "BOB": {
+ "name": "bolivianu",
+ "symbol": "BOB"
+ },
+ "GHS": {
+ "name": "cedi ghanianu",
+ "symbol": "GHS"
+ },
+ "CRC": {
+ "name": "colón costarricanu",
+ "symbol": "CRC"
+ },
+ "NIO": {
+ "name": "córdoba nicaraguanu",
+ "symbol": "NIO"
+ },
+ "CZK": {
+ "name": "corona checa",
+ "symbol": "CZK"
+ },
+ "DKK": {
+ "name": "corona danesa",
+ "symbol": "DKK"
+ },
+ "ISK": {
+ "name": "corona islandesa",
+ "symbol": "ISK"
+ },
+ "NOK": {
+ "name": "corona noruega",
+ "symbol": "NOK"
+ },
+ "SEK": {
+ "name": "corona sueca",
+ "symbol": "SEK"
+ },
+ "GMD": {
+ "name": "dalasi gambianu",
+ "symbol": "GMD"
+ },
+ "MKD": {
+ "name": "denar",
+ "symbol": "MKD"
+ },
+ "DZD": {
+ "name": "dinar arxelín",
+ "symbol": "DZD"
+ },
+ "BHD": {
+ "name": "dinar baḥreiní",
+ "symbol": "BHD"
+ },
+ "IQD": {
+ "name": "dinar iraquín",
+ "symbol": "IQD"
+ },
+ "KWD": {
+ "name": "dinar kuwaitianu",
+ "symbol": "KWD"
+ },
+ "LYD": {
+ "name": "dinar libiu",
+ "symbol": "LYD"
+ },
+ "RSD": {
+ "name": "dinar serbiu",
+ "symbol": "RSD"
+ },
+ "TND": {
+ "name": "dinar tunecín",
+ "symbol": "TND"
+ },
+ "JOD": {
+ "name": "dinar xordanu",
+ "symbol": "JOD"
+ },
+ "AED": {
+ "name": "dirḥam de los Emiratos Ãrabes Xuníos",
+ "symbol": "AED"
+ },
+ "MAD": {
+ "name": "dirḥam marroquín",
+ "symbol": "MAD"
+ },
+ "STD": {
+ "name": "dobra de Santu Tomé y Príncipe",
+ "symbol": "STD"
+ },
+ "AUD": {
+ "name": "dólar australianu",
+ "symbol": "A$"
+ },
+ "BSD": {
+ "name": "dólar bahamés",
+ "symbol": "BSD"
+ },
+ "BBD": {
+ "name": "dólar barbadianu",
+ "symbol": "BBD"
+ },
+ "BZD": {
+ "name": "dólar belizianu",
+ "symbol": "BZD"
+ },
+ "BMD": {
+ "name": "dólar bermudianu",
+ "symbol": "BMD"
+ },
+ "BND": {
+ "name": "dólar bruneyanu",
+ "symbol": "BND"
+ },
+ "KYD": {
+ "name": "dólar caimanés",
+ "symbol": "KYD"
+ },
+ "CAD": {
+ "name": "dólar canadiense",
+ "symbol": "CA$"
+ },
+ "USD": {
+ "name": "dólar de los Estaos Xuníos",
+ "symbol": "$"
+ },
+ "TTD": {
+ "name": "dólar de Trinidá y Tobagu",
+ "symbol": "TTD"
+ },
+ "XCD": {
+ "name": "dólar del Caribe Oriental",
+ "symbol": "EC$"
+ },
+ "FJD": {
+ "name": "dólar fixanu",
+ "symbol": "FJD"
+ },
+ "GYD": {
+ "name": "dólar guyanés",
+ "symbol": "GYD"
+ },
+ "HKD": {
+ "name": "dólar hongkonés",
+ "symbol": "HK$"
+ },
+ "LRD": {
+ "name": "dólar liberianu",
+ "symbol": "LRD"
+ },
+ "NAD": {
+ "name": "dólar namibianu",
+ "symbol": "NAD"
+ },
+ "NZD": {
+ "name": "dólar neozelandés",
+ "symbol": "NZ$"
+ },
+ "TWD": {
+ "name": "dólar nuevu taiwanés",
+ "symbol": "NT$"
+ },
+ "SBD": {
+ "name": "dólar salomonés",
+ "symbol": "SBD"
+ },
+ "SGD": {
+ "name": "dólar singapuranu",
+ "symbol": "SGD"
+ },
+ "SRD": {
+ "name": "dólar surinamés",
+ "symbol": "SRD"
+ },
+ "JMD": {
+ "name": "dólar xamaicanu",
+ "symbol": "JMD"
+ },
+ "VND": {
+ "name": "dong vietnamín",
+ "symbol": "â‚«"
+ },
+ "AMD": {
+ "name": "dram armeniu",
+ "symbol": "AMD"
+ },
+ "CVE": {
+ "name": "escudu cabuverdianu",
+ "symbol": "CVE"
+ },
+ "EUR": {
+ "name": "euro",
+ "symbol": "€"
+ },
+ "AWG": {
+ "name": "florín arubanu",
+ "symbol": "AWG"
+ },
+ "HUF": {
+ "name": "forint",
+ "symbol": "HUF"
+ },
+ "BIF": {
+ "name": "francu burundianu",
+ "symbol": "BIF"
+ },
+ "XOF": {
+ "name": "francu CFA BCEAO",
+ "symbol": "CFA"
+ },
+ "XAF": {
+ "name": "francu CFA BEAC",
+ "symbol": "FCFA"
+ },
+ "XPF": {
+ "name": "francu CFP",
+ "symbol": "CFPF"
+ },
+ "KMF": {
+ "name": "francu comoranu",
+ "symbol": "KMF"
+ },
+ "CDF": {
+ "name": "francu congolés",
+ "symbol": "CDF"
+ },
+ "GNF": {
+ "name": "francu guineanu",
+ "symbol": "GNF"
+ },
+ "RWF": {
+ "name": "francu ruandés",
+ "symbol": "RWF"
+ },
+ "CHF": {
+ "name": "francu suizu",
+ "symbol": "CHF"
+ },
+ "DJF": {
+ "name": "francu xibutianu",
+ "symbol": "DJF"
+ },
+ "HTG": {
+ "name": "gourde haitianu",
+ "symbol": "HTG"
+ },
+ "UAH": {
+ "name": "grivna",
+ "symbol": "UAH"
+ },
+ "PYG": {
+ "name": "guaraní paraguayu",
+ "symbol": "PYG"
+ },
+ "ANG": {
+ "name": "guilder de les Antilles Neerlandeses",
+ "symbol": "ANG"
+ },
+ "PGK": {
+ "name": "kina papuana",
+ "symbol": "PGK"
+ },
+ "LAK": {
+ "name": "kip laosianu",
+ "symbol": "LAK"
+ },
+ "HRK": {
+ "name": "kuna",
+ "symbol": "HRK"
+ },
+ "MWK": {
+ "name": "kwacha malauianu",
+ "symbol": "MWK"
+ },
+ "ZMW": {
+ "name": "kwacha zambianu",
+ "symbol": "ZMW"
+ },
+ "AOA": {
+ "name": "kwanza angolanu",
+ "symbol": "AOA"
+ },
+ "MMK": {
+ "name": "kyat de Myanmar",
+ "symbol": "MMK"
+ },
+ "GEL": {
+ "name": "lari xeorxanu",
+ "symbol": "GEL"
+ },
+ "ALL": {
+ "name": "lek",
+ "symbol": "ALL"
+ },
+ "HNL": {
+ "name": "lempira hondurana",
+ "symbol": "HNL"
+ },
+ "SLL": {
+ "name": "leone sierralleonés",
+ "symbol": "SLL"
+ },
+ "MDL": {
+ "name": "leu moldavu",
+ "symbol": "MDL"
+ },
+ "RON": {
+ "name": "leu rumanu",
+ "symbol": "RON"
+ },
+ "BGN": {
+ "name": "lev",
+ "symbol": "BGN"
+ },
+ "SZL": {
+ "name": "lilangeni suazilandés",
+ "symbol": "SZL"
+ },
+ "LTL": {
+ "name": "litas",
+ "symbol": "LTL"
+ },
+ "SHP": {
+ "name": "llibra de Santa Lena",
+ "symbol": "SHP"
+ },
+ "GIP": {
+ "name": "llibra de Xibraltar",
+ "symbol": "GIP"
+ },
+ "GBP": {
+ "name": "llibra esterlina",
+ "symbol": "£"
+ },
+ "EGP": {
+ "name": "llibra exipciana",
+ "symbol": "EGP"
+ },
+ "LBP": {
+ "name": "llibra libanesa",
+ "symbol": "LBP"
+ },
+ "FKP": {
+ "name": "llibra malviniana",
+ "symbol": "FKP"
+ },
+ "SYP": {
+ "name": "llibra siria",
+ "symbol": "SYP"
+ },
+ "SDG": {
+ "name": "llibra sudanesa",
+ "symbol": "SDG"
+ },
+ "SSP": {
+ "name": "llibra sursudanesa",
+ "symbol": "SSP"
+ },
+ "TRY": {
+ "name": "llira turca",
+ "symbol": "TRY"
+ },
+ "LSL": {
+ "name": "LSL",
+ "symbol": "LSL"
+ },
+ "AZN": {
+ "name": "manat azerbaixanu",
+ "symbol": "AZN"
+ },
+ "TMT": {
+ "name": "manat turcomanu",
+ "symbol": "TMT"
+ },
+ "BAM": {
+ "name": "marcu convertible de Bosnia-Herzegovina",
+ "symbol": "BAM"
+ },
+ "MZN": {
+ "name": "metical mozambicanu",
+ "symbol": "MZN"
+ },
+ "NGN": {
+ "name": "naira nixeriana",
+ "symbol": "NGN"
+ },
+ "ERN": {
+ "name": "nakfa eritréu",
+ "symbol": "ERN"
+ },
+ "BTN": {
+ "name": "ngultrum butanés",
+ "symbol": "BTN"
+ },
+ "MRO": {
+ "name": "ouguiya mauritanu",
+ "symbol": "MRO"
+ },
+ "TOP": {
+ "name": "paʻanga tonganu",
+ "symbol": "TOP"
+ },
+ "MOP": {
+ "name": "pataca de Macáu",
+ "symbol": "MOP"
+ },
+ "ARS": {
+ "name": "pesu arxentín",
+ "symbol": "ARS"
+ },
+ "CLP": {
+ "name": "pesu chilenu",
+ "symbol": "CLP"
+ },
+ "COP": {
+ "name": "pesu colombianu",
+ "symbol": "COP"
+ },
+ "CUC": {
+ "name": "pesu convertible cubanu",
+ "symbol": "CUC"
+ },
+ "CUP": {
+ "name": "pesu cubanu",
+ "symbol": "CUP"
+ },
+ "DOP": {
+ "name": "pesu dominicanu",
+ "symbol": "DOP"
+ },
+ "PHP": {
+ "name": "pesu filipín",
+ "symbol": "PHP"
+ },
+ "MXN": {
+ "name": "pesu mexicanu",
+ "symbol": "MX$"
+ },
+ "UYU": {
+ "name": "pesu uruguayu",
+ "symbol": "UYU"
+ },
+ "BWP": {
+ "name": "pula botsuaniana",
+ "symbol": "BWP"
+ },
+ "GTQ": {
+ "name": "quetzal de Guatemala",
+ "symbol": "GTQ"
+ },
+ "ZAR": {
+ "name": "rand sudafricanu",
+ "symbol": "ZAR"
+ },
+ "BRL": {
+ "name": "real brasilanu",
+ "symbol": "R$"
+ },
+ "IRR": {
+ "name": "rial iranín",
+ "symbol": "IRR"
+ },
+ "OMR": {
+ "name": "rial omanianu",
+ "symbol": "OMR"
+ },
+ "QAR": {
+ "name": "rial qatarín",
+ "symbol": "QAR"
+ },
+ "YER": {
+ "name": "rial yemenín",
+ "symbol": "YER"
+ },
+ "KHR": {
+ "name": "riel camboyanu",
+ "symbol": "KHR"
+ },
+ "MYR": {
+ "name": "ringgit malasiu",
+ "symbol": "MYR"
+ },
+ "SAR": {
+ "name": "riyal saudita",
+ "symbol": "SAR"
+ },
+ "BYR": {
+ "name": "rublu bielorrusu",
+ "symbol": "BYR"
+ },
+ "RUB": {
+ "name": "rublu rusu",
+ "symbol": "RUB"
+ },
+ "MVR": {
+ "name": "rufiyaa maldiviana",
+ "symbol": "MVR"
+ },
+ "LKR": {
+ "name": "rupia de Sri Lanka",
+ "symbol": "LKR"
+ },
+ "INR": {
+ "name": "rupia india",
+ "symbol": "₹"
+ },
+ "MUR": {
+ "name": "rupia mauriciana",
+ "symbol": "MUR"
+ },
+ "NPR": {
+ "name": "rupia nepalesa",
+ "symbol": "NPR"
+ },
+ "PKR": {
+ "name": "rupia paquistanina",
+ "symbol": "PKR"
+ },
+ "SCR": {
+ "name": "rupia seixelesa",
+ "symbol": "SCR"
+ },
+ "IDR": {
+ "name": "rupiah indonesia",
+ "symbol": "IDR"
+ },
+ "KES": {
+ "name": "shilling kenianu",
+ "symbol": "KES"
+ },
+ "SOS": {
+ "name": "shilling somalín",
+ "symbol": "SOS"
+ },
+ "TZS": {
+ "name": "shilling tanzanianu",
+ "symbol": "TZS"
+ },
+ "UGX": {
+ "name": "shilling ugandés",
+ "symbol": "UGX"
+ },
+ "PEN": {
+ "name": "sol nuevu peruanu",
+ "symbol": "PEN"
+ },
+ "KGS": {
+ "name": "som kirguistanín",
+ "symbol": "KGS"
+ },
+ "UZS": {
+ "name": "som uzbequistanín",
+ "symbol": "UZS"
+ },
+ "TJS": {
+ "name": "somoni taxiquistanín",
+ "symbol": "TJS"
+ },
+ "SVC": {
+ "name": "SVC",
+ "symbol": "SVC"
+ },
+ "BDT": {
+ "name": "taka bangladexí",
+ "symbol": "BDT"
+ },
+ "WST": {
+ "name": "tala samoanu",
+ "symbol": "WST"
+ },
+ "KZT": {
+ "name": "tenge kazaquistanín",
+ "symbol": "KZT"
+ },
+ "MNT": {
+ "name": "tugrik mongol",
+ "symbol": "MNT"
+ },
+ "VUV": {
+ "name": "vatu vanuatuanu",
+ "symbol": "VUV"
+ },
+ "KPW": {
+ "name": "won norcoreanu",
+ "symbol": "KPW"
+ },
+ "KRW": {
+ "name": "won surcoreanu",
+ "symbol": "â‚©"
+ },
+ "ILS": {
+ "name": "xequel nuevu",
+ "symbol": "₪"
+ },
+ "JPY": {
+ "name": "yen xaponés",
+ "symbol": "Â¥"
+ },
+ "CNY": {
+ "name": "yuan chinu",
+ "symbol": "CNÂ¥"
+ },
+ "PLN": {
+ "name": "zloty",
+ "symbol": "PLN"
+ },
+ "ZWL": {
+ "name": "ZWL",
+ "symbol": "ZWL"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/currency/az.json b/library/intl/resources/currency/az.json
new file mode 100644
index 000000000..f238801a8
--- /dev/null
+++ b/library/intl/resources/currency/az.json
@@ -0,0 +1,634 @@
+{
+ "USD": {
+ "name": "ABŞ Dolları",
+ "symbol": "US$"
+ },
+ "ALL": {
+ "name": "Albaniya Leki",
+ "symbol": "ALL"
+ },
+ "AOA": {
+ "name": "Anqola Kvanzası",
+ "symbol": "AOA"
+ },
+ "ARS": {
+ "name": "Argentina Pesosu",
+ "symbol": "ARS"
+ },
+ "AWG": {
+ "name": "Aruba Florini",
+ "symbol": "AWG"
+ },
+ "EUR": {
+ "name": "Avro",
+ "symbol": "€"
+ },
+ "AUD": {
+ "name": "Avstraliya Dolları",
+ "symbol": "A$"
+ },
+ "AZN": {
+ "name": "Azərbaycan Manatı",
+ "symbol": "AZN"
+ },
+ "BSD": {
+ "name": "Bahama Dolları",
+ "symbol": "BSD"
+ },
+ "BDT": {
+ "name": "Banqladeş Takası",
+ "symbol": "BDT"
+ },
+ "BBD": {
+ "name": "Barbados Dolları",
+ "symbol": "BBD"
+ },
+ "BYR": {
+ "name": "Belarus Rublu",
+ "symbol": "BYR"
+ },
+ "BZD": {
+ "name": "Beliz Dolları",
+ "symbol": "BZD"
+ },
+ "BMD": {
+ "name": "Bermuda Dolları",
+ "symbol": "BMD"
+ },
+ "BHD": {
+ "name": "Bəhreyn Dinarı",
+ "symbol": "BHD"
+ },
+ "AED": {
+ "name": "BirləşmiÅŸ ÆrÉ™b ÆmirliklÉ™ri DirhÉ™mi",
+ "symbol": "AED"
+ },
+ "BOB": {
+ "name": "Boliviya Bolivianosu",
+ "symbol": "BOB"
+ },
+ "BGN": {
+ "name": "Bolqarıstan Levi",
+ "symbol": "BGN"
+ },
+ "BAM": {
+ "name": "Bosniya-Herseqovina Markası",
+ "symbol": "BAM"
+ },
+ "BWP": {
+ "name": "Botsvana Pulası",
+ "symbol": "BWP"
+ },
+ "BRL": {
+ "name": "Braziliya Realı",
+ "symbol": "R$"
+ },
+ "GBP": {
+ "name": "Britaniya Funt Sterlinqi",
+ "symbol": "£"
+ },
+ "BND": {
+ "name": "Bruney Dolları",
+ "symbol": "BND"
+ },
+ "BIF": {
+ "name": "Burundi Frankı",
+ "symbol": "BIF"
+ },
+ "BTN": {
+ "name": "Butan Nqultrumu",
+ "symbol": "BTN"
+ },
+ "ZAR": {
+ "name": "Cənubi Afrika Randı",
+ "symbol": "ZAR"
+ },
+ "KRW": {
+ "name": "Cənubi Koreya Vonu",
+ "symbol": "â‚©"
+ },
+ "SSP": {
+ "name": "Cənubi Sudan Funtu",
+ "symbol": "SSP"
+ },
+ "DJF": {
+ "name": "Cibuti Frankı",
+ "symbol": "DJF"
+ },
+ "CZK": {
+ "name": "Çexiya Korunası",
+ "symbol": "CZK"
+ },
+ "CLP": {
+ "name": "Çili Pesosu",
+ "symbol": "CLP"
+ },
+ "CNY": {
+ "name": "Çin Yuanı",
+ "symbol": "CNÂ¥"
+ },
+ "DKK": {
+ "name": "Danimarka Kronu",
+ "symbol": "DKK"
+ },
+ "DOP": {
+ "name": "Dominika Pesosu",
+ "symbol": "DOP"
+ },
+ "ETB": {
+ "name": "Efiopiya Bırrı",
+ "symbol": "ETB"
+ },
+ "SVC": {
+ "name": "El Salvador kolonu",
+ "symbol": "SVC"
+ },
+ "ERN": {
+ "name": "Eritreya Nakfası",
+ "symbol": "ERN"
+ },
+ "AMD": {
+ "name": "Ermənistan Dramı",
+ "symbol": "AMD"
+ },
+ "AFN": {
+ "name": "Æfqanıstan Æfqanisi",
+ "symbol": "AFN"
+ },
+ "DZD": {
+ "name": "ÆlcÉ™zair Dinarı",
+ "symbol": "DZD"
+ },
+ "FJD": {
+ "name": "Fici Dolları",
+ "symbol": "FJD"
+ },
+ "XOF": {
+ "name": "Fil Dişi Sahili Frankı",
+ "symbol": "CFA"
+ },
+ "PHP": {
+ "name": "Filippin Pesosu",
+ "symbol": "PHP"
+ },
+ "FKP": {
+ "name": "Folklend Adaları Funtu",
+ "symbol": "FKP"
+ },
+ "XPF": {
+ "name": "Fransız Polineziyası Frankı",
+ "symbol": "CFPF"
+ },
+ "GIP": {
+ "name": "Gibraltar Funtu",
+ "symbol": "GIP"
+ },
+ "GEL": {
+ "name": "Gürcüstan Larisi",
+ "symbol": "GEL"
+ },
+ "HTG": {
+ "name": "Haiti Qourdu",
+ "symbol": "HTG"
+ },
+ "INR": {
+ "name": "Hindistan Rupisi",
+ "symbol": "₹"
+ },
+ "HNL": {
+ "name": "Honduras Lempirası",
+ "symbol": "HNL"
+ },
+ "HKD": {
+ "name": "Honq Konq Dolları",
+ "symbol": "HK$"
+ },
+ "HRK": {
+ "name": "Xorvatiya Kunası",
+ "symbol": "HRK"
+ },
+ "IDR": {
+ "name": "Ä°ndoneziya Rupisi",
+ "symbol": "IDR"
+ },
+ "JOD": {
+ "name": "İordaniya Dinarı",
+ "symbol": "JOD"
+ },
+ "IQD": {
+ "name": "İraq Dinarı",
+ "symbol": "IQD"
+ },
+ "IRR": {
+ "name": "İran Rialı",
+ "symbol": "IRR"
+ },
+ "ISK": {
+ "name": "Ä°slandiya Kronu",
+ "symbol": "ISK"
+ },
+ "ILS": {
+ "name": "Ä°srail Yeni Åžekeli",
+ "symbol": "₪"
+ },
+ "SEK": {
+ "name": "İsveç Kronu",
+ "symbol": "SEK"
+ },
+ "CHF": {
+ "name": "İsveçrə Frankı",
+ "symbol": "CHF"
+ },
+ "KHR": {
+ "name": "Kamboca Rieli",
+ "symbol": "KHR"
+ },
+ "XAF": {
+ "name": "Kamerun Frankı",
+ "symbol": "FCFA"
+ },
+ "CAD": {
+ "name": "Kanada Dolları",
+ "symbol": "CA$"
+ },
+ "CVE": {
+ "name": "Kape Verde Eskudosu",
+ "symbol": "CVE"
+ },
+ "KYD": {
+ "name": "Kayman Adaları Dolları",
+ "symbol": "KYD"
+ },
+ "KES": {
+ "name": "Keniya Åžillinqi",
+ "symbol": "KES"
+ },
+ "KGS": {
+ "name": "Kırğızıstan Somu",
+ "symbol": "KGS"
+ },
+ "COP": {
+ "name": "Kolumbiya Pesosu",
+ "symbol": "COP"
+ },
+ "KMF": {
+ "name": "Komor Frankı",
+ "symbol": "KMF"
+ },
+ "CDF": {
+ "name": "Konqo Frankı",
+ "symbol": "CDF"
+ },
+ "CRC": {
+ "name": "Kosta Rika Kolonu",
+ "symbol": "CRC"
+ },
+ "CUC": {
+ "name": "Kuba Çevrilən Pesosu",
+ "symbol": "CUC"
+ },
+ "CUP": {
+ "name": "Kuba Pesosu",
+ "symbol": "CUP"
+ },
+ "KWD": {
+ "name": "Küveyt Dinarı",
+ "symbol": "KWD"
+ },
+ "GMD": {
+ "name": "Qambiya Dalasisi",
+ "symbol": "GMD"
+ },
+ "GHS": {
+ "name": "Qana Sedisi",
+ "symbol": "GHS"
+ },
+ "QAR": {
+ "name": "Qatar Rialı",
+ "symbol": "QAR"
+ },
+ "GYD": {
+ "name": "Qayana Dolları",
+ "symbol": "GYD"
+ },
+ "KZT": {
+ "name": "Qazaxıstan Tengesi",
+ "symbol": "KZT"
+ },
+ "GTQ": {
+ "name": "Qvatemala Küetzalı",
+ "symbol": "GTQ"
+ },
+ "GNF": {
+ "name": "Qvineya Frankı",
+ "symbol": "GNF"
+ },
+ "LAK": {
+ "name": "Laos Kipi",
+ "symbol": "LAK"
+ },
+ "LSL": {
+ "name": "Lesoto Lotisi",
+ "symbol": "LSL"
+ },
+ "LRD": {
+ "name": "Liberiya Dolları",
+ "symbol": "LRD"
+ },
+ "LTL": {
+ "name": "Litva Liti",
+ "symbol": "LTL"
+ },
+ "LBP": {
+ "name": "Livan Funtu",
+ "symbol": "LBP"
+ },
+ "LYD": {
+ "name": "Liviya Dinarı",
+ "symbol": "LYD"
+ },
+ "HUF": {
+ "name": "Macarıstan Forinti",
+ "symbol": "HUF"
+ },
+ "MGA": {
+ "name": "Madaqaskar Ariarisi",
+ "symbol": "MGA"
+ },
+ "MOP": {
+ "name": "Makao Patakası",
+ "symbol": "MOP"
+ },
+ "MKD": {
+ "name": "Makedoniya Dinarı",
+ "symbol": "MKD"
+ },
+ "MWK": {
+ "name": "Malavi Kvaçası",
+ "symbol": "MWK"
+ },
+ "MYR": {
+ "name": "Malayziya Ringiti",
+ "symbol": "MYR"
+ },
+ "MVR": {
+ "name": "Maldiv Rufiyası",
+ "symbol": "MVR"
+ },
+ "MUR": {
+ "name": "Mavriki Rupisi",
+ "symbol": "MUR"
+ },
+ "MRO": {
+ "name": "Mavritaniya Ugiyası",
+ "symbol": "MRO"
+ },
+ "MXN": {
+ "name": "Meksika Pesosu",
+ "symbol": "MX$"
+ },
+ "MAD": {
+ "name": "Mərakeş Dirhəmi",
+ "symbol": "MAD"
+ },
+ "EGP": {
+ "name": "Misir Funtu",
+ "symbol": "EGP"
+ },
+ "MDL": {
+ "name": "Moldova Leyi",
+ "symbol": "MDL"
+ },
+ "MNT": {
+ "name": "Monqoliya Tuqriki",
+ "symbol": "MNT"
+ },
+ "MZN": {
+ "name": "Mozambik Metikalı",
+ "symbol": "MZN"
+ },
+ "SHP": {
+ "name": "Müqəddəs Yelena Funtu",
+ "symbol": "SHP"
+ },
+ "MMK": {
+ "name": "Myanma Kiyatı",
+ "symbol": "MMK"
+ },
+ "NAD": {
+ "name": "Namibiya Dolları",
+ "symbol": "NAD"
+ },
+ "NPR": {
+ "name": "Nepal Rupisi",
+ "symbol": "NPR"
+ },
+ "ANG": {
+ "name": "Niderland Antilyası Gilderi",
+ "symbol": "ANG"
+ },
+ "NGN": {
+ "name": "Nigeriya Nairası",
+ "symbol": "NGN"
+ },
+ "NIO": {
+ "name": "Nikaraqua Kordobası",
+ "symbol": "NIO"
+ },
+ "NOK": {
+ "name": "Norveç Kronu",
+ "symbol": "NOK"
+ },
+ "OMR": {
+ "name": "Oman Rialı",
+ "symbol": "OMR"
+ },
+ "UZS": {
+ "name": "Özbəkistan Somu",
+ "symbol": "UZS"
+ },
+ "PKR": {
+ "name": "Pakistan Rupisi",
+ "symbol": "PKR"
+ },
+ "PAB": {
+ "name": "Panama Balboası",
+ "symbol": "PAB"
+ },
+ "PGK": {
+ "name": "Papua Yeni Qvineya Kinası",
+ "symbol": "PGK"
+ },
+ "PYG": {
+ "name": "Paraqvay Quaranisi",
+ "symbol": "PYG"
+ },
+ "PEN": {
+ "name": "Peru Nuevo Solu",
+ "symbol": "PEN"
+ },
+ "PLN": {
+ "name": "Polşa Zlotısı",
+ "symbol": "PLN"
+ },
+ "RWF": {
+ "name": "Ruanda Frankı",
+ "symbol": "RWF"
+ },
+ "RON": {
+ "name": "Rumıniya Leyi",
+ "symbol": "RON"
+ },
+ "RUB": {
+ "name": "Rusiya Rublu",
+ "symbol": "RUB"
+ },
+ "WST": {
+ "name": "Samoa Talası",
+ "symbol": "WST"
+ },
+ "STD": {
+ "name": "San Tom və Prinsip Dobrası",
+ "symbol": "STD"
+ },
+ "RSD": {
+ "name": "Serbiya Dinarı",
+ "symbol": "RSD"
+ },
+ "SCR": {
+ "name": "SeyÅŸel Rupisi",
+ "symbol": "SCR"
+ },
+ "SAR": {
+ "name": "Səudiyyə Riyalı",
+ "symbol": "SAR"
+ },
+ "SLL": {
+ "name": "Sierra Leon Leonu",
+ "symbol": "SLL"
+ },
+ "SGD": {
+ "name": "Sinqapur Dolları",
+ "symbol": "SGD"
+ },
+ "SBD": {
+ "name": "Solomon Adaları Dolları",
+ "symbol": "SBD"
+ },
+ "SOS": {
+ "name": "Somali Åžillinqi",
+ "symbol": "SOS"
+ },
+ "SDG": {
+ "name": "Sudan Funtu",
+ "symbol": "SDG"
+ },
+ "SRD": {
+ "name": "Surinam Dolları",
+ "symbol": "SRD"
+ },
+ "SYP": {
+ "name": "Suriya Funtu",
+ "symbol": "SYP"
+ },
+ "SZL": {
+ "name": "Svazilend Lilangenini",
+ "symbol": "SZL"
+ },
+ "XCD": {
+ "name": "Şərqi Karib Dolları",
+ "symbol": "EC$"
+ },
+ "KPW": {
+ "name": "Åžimali Koreya Vonu",
+ "symbol": "KPW"
+ },
+ "LKR": {
+ "name": "Åžri Lanka Rupisi",
+ "symbol": "LKR"
+ },
+ "TJS": {
+ "name": "Tacikistan Somonisi",
+ "symbol": "TJS"
+ },
+ "TZS": {
+ "name": "Tanzaniya Åžillinqi",
+ "symbol": "TZS"
+ },
+ "THB": {
+ "name": "Tayland Batı",
+ "symbol": "฿"
+ },
+ "TWD": {
+ "name": "Tayvan Yeni Dolları",
+ "symbol": "NT$"
+ },
+ "TOP": {
+ "name": "Tonqa Panqası",
+ "symbol": "TOP"
+ },
+ "TTD": {
+ "name": "Trinidad və Tobaqo Dolları",
+ "symbol": "TTD"
+ },
+ "TND": {
+ "name": "Tunis Dinarı",
+ "symbol": "TND"
+ },
+ "TRY": {
+ "name": "Türkiyə Lirəsi",
+ "symbol": "TRY"
+ },
+ "TMT": {
+ "name": "Türkmənistan Manatı",
+ "symbol": "TMT"
+ },
+ "UAH": {
+ "name": "Ukrayna Qrivnası",
+ "symbol": "UAH"
+ },
+ "UGX": {
+ "name": "Uqanda Åžillinqi",
+ "symbol": "UGX"
+ },
+ "UYU": {
+ "name": "Uruqvay Pesosu",
+ "symbol": "UYU"
+ },
+ "VUV": {
+ "name": "Vanuatu Vatusu",
+ "symbol": "VUV"
+ },
+ "VEF": {
+ "name": "Venesuela Bolivarı",
+ "symbol": "VEF"
+ },
+ "VND": {
+ "name": "Vyetnam Donqu",
+ "symbol": "â‚«"
+ },
+ "JMD": {
+ "name": "Yamayka Dolları",
+ "symbol": "JMD"
+ },
+ "JPY": {
+ "name": "Yaponiya Yeni",
+ "symbol": "JPÂ¥"
+ },
+ "NZD": {
+ "name": "Yeni Zelandiya Dolları",
+ "symbol": "NZ$"
+ },
+ "YER": {
+ "name": "Yəmən Rialı",
+ "symbol": "YER"
+ },
+ "ZMW": {
+ "name": "Zambiya Kvaçası",
+ "symbol": "ZMW"
+ },
+ "ZWL": {
+ "name": "Zimbabve Dolları (2009)",
+ "symbol": "ZWL"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/currency/bas.json b/library/intl/resources/currency/bas.json
new file mode 100644
index 000000000..06d2a4a65
--- /dev/null
+++ b/library/intl/resources/currency/bas.json
@@ -0,0 +1,634 @@
+{
+ "AFN": {
+ "name": "AFN",
+ "symbol": "AFN"
+ },
+ "ALL": {
+ "name": "ALL",
+ "symbol": "ALL"
+ },
+ "AMD": {
+ "name": "AMD",
+ "symbol": "AMD"
+ },
+ "ANG": {
+ "name": "ANG",
+ "symbol": "ANG"
+ },
+ "ARS": {
+ "name": "ARS",
+ "symbol": "ARS"
+ },
+ "AWG": {
+ "name": "AWG",
+ "symbol": "AWG"
+ },
+ "AZN": {
+ "name": "AZN",
+ "symbol": "AZN"
+ },
+ "BAM": {
+ "name": "BAM",
+ "symbol": "BAM"
+ },
+ "BBD": {
+ "name": "BBD",
+ "symbol": "BBD"
+ },
+ "BDT": {
+ "name": "BDT",
+ "symbol": "BDT"
+ },
+ "BGN": {
+ "name": "BGN",
+ "symbol": "BGN"
+ },
+ "ETB": {
+ "name": "Bîr ètìopìà",
+ "symbol": "ETB"
+ },
+ "BMD": {
+ "name": "BMD",
+ "symbol": "BMD"
+ },
+ "BND": {
+ "name": "BND",
+ "symbol": "BND"
+ },
+ "BOB": {
+ "name": "BOB",
+ "symbol": "BOB"
+ },
+ "BRL": {
+ "name": "BRL",
+ "symbol": "R$"
+ },
+ "BSD": {
+ "name": "BSD",
+ "symbol": "BSD"
+ },
+ "BTN": {
+ "name": "BTN",
+ "symbol": "BTN"
+ },
+ "BYR": {
+ "name": "BYR",
+ "symbol": "BYR"
+ },
+ "BZD": {
+ "name": "BZD",
+ "symbol": "BZD"
+ },
+ "CLP": {
+ "name": "CLP",
+ "symbol": "CLP"
+ },
+ "COP": {
+ "name": "COP",
+ "symbol": "COP"
+ },
+ "CRC": {
+ "name": "CRC",
+ "symbol": "CRC"
+ },
+ "CUC": {
+ "name": "CUC",
+ "symbol": "CUC"
+ },
+ "CUP": {
+ "name": "CUP",
+ "symbol": "CUP"
+ },
+ "CZK": {
+ "name": "CZK",
+ "symbol": "CZK"
+ },
+ "GMD": {
+ "name": "Dalasì gambìà",
+ "symbol": "GMD"
+ },
+ "DZD": {
+ "name": "Dìnâr àlgerìà",
+ "symbol": "DZD"
+ },
+ "BHD": {
+ "name": "Dinâr Bàraìn",
+ "symbol": "BHD"
+ },
+ "LYD": {
+ "name": "Dìnâr libìà",
+ "symbol": "LYD"
+ },
+ "SDG": {
+ "name": "Dìnâr sùdân",
+ "symbol": "SDG"
+ },
+ "TND": {
+ "name": "Dìnâr tùnîs",
+ "symbol": "TND"
+ },
+ "AED": {
+ "name": "Dirhàm èmìrâ",
+ "symbol": "AED"
+ },
+ "MAD": {
+ "name": "Dìrham màrôk",
+ "symbol": "MAD"
+ },
+ "DKK": {
+ "name": "DKK",
+ "symbol": "DKK"
+ },
+ "STD": {
+ "name": "Dobrà sàotòme",
+ "symbol": "STD"
+ },
+ "DOP": {
+ "name": "DOP",
+ "symbol": "DOP"
+ },
+ "USD": {
+ "name": "Dɔla àmerkà",
+ "symbol": "US$"
+ },
+ "CAD": {
+ "name": "Dɔ̀lâr kànadà",
+ "symbol": "CA$"
+ },
+ "LRD": {
+ "name": "Dɔ̀lâr lìberìà",
+ "symbol": "LRD"
+ },
+ "NAD": {
+ "name": "Dɔ̀lâr nàmibìà",
+ "symbol": "NAD"
+ },
+ "AUD": {
+ "name": "Dɔ̀lâr òstralìà",
+ "symbol": "A$"
+ },
+ "EUR": {
+ "name": "Èrô",
+ "symbol": "€"
+ },
+ "CVE": {
+ "name": "Èskudò kabwe᷆r",
+ "symbol": "CVE"
+ },
+ "FJD": {
+ "name": "FJD",
+ "symbol": "FJD"
+ },
+ "FKP": {
+ "name": "FKP",
+ "symbol": "FKP"
+ },
+ "BIF": {
+ "name": "Frǎŋ bùrundì",
+ "symbol": "BIF"
+ },
+ "XOF": {
+ "name": "FrÇŽÅ‹ CFA (BCEAO)",
+ "symbol": "CFA"
+ },
+ "XAF": {
+ "name": "FrÇŽÅ‹ CFA (BEAC)",
+ "symbol": "FCFA"
+ },
+ "DJF": {
+ "name": "Frǎŋ jìbutì",
+ "symbol": "DJF"
+ },
+ "KMF": {
+ "name": "Frǎŋ kòmorà",
+ "symbol": "KMF"
+ },
+ "CDF": {
+ "name": "Frǎŋ kòŋgo",
+ "symbol": "CDF"
+ },
+ "MGA": {
+ "name": "Frǎŋ màlàgasì",
+ "symbol": "MGA"
+ },
+ "RWF": {
+ "name": "Frǎŋ Rùandà",
+ "symbol": "RWF"
+ },
+ "CHF": {
+ "name": "Frǎŋ sùwîs",
+ "symbol": "CHF"
+ },
+ "GEL": {
+ "name": "GEL",
+ "symbol": "GEL"
+ },
+ "GHS": {
+ "name": "GHS",
+ "symbol": "GHS"
+ },
+ "GIP": {
+ "name": "GIP",
+ "symbol": "GIP"
+ },
+ "GNF": {
+ "name": "GNF",
+ "symbol": "GNF"
+ },
+ "GTQ": {
+ "name": "GTQ",
+ "symbol": "GTQ"
+ },
+ "GYD": {
+ "name": "GYD",
+ "symbol": "GYD"
+ },
+ "HKD": {
+ "name": "HKD",
+ "symbol": "HK$"
+ },
+ "HNL": {
+ "name": "HNL",
+ "symbol": "HNL"
+ },
+ "HRK": {
+ "name": "HRK",
+ "symbol": "HRK"
+ },
+ "HTG": {
+ "name": "HTG",
+ "symbol": "HTG"
+ },
+ "HUF": {
+ "name": "HUF",
+ "symbol": "HUF"
+ },
+ "IDR": {
+ "name": "IDR",
+ "symbol": "IDR"
+ },
+ "ILS": {
+ "name": "ILS",
+ "symbol": "₪"
+ },
+ "IQD": {
+ "name": "IQD",
+ "symbol": "IQD"
+ },
+ "IRR": {
+ "name": "IRR",
+ "symbol": "IRR"
+ },
+ "ISK": {
+ "name": "ISK",
+ "symbol": "ISK"
+ },
+ "JMD": {
+ "name": "JMD",
+ "symbol": "JMD"
+ },
+ "JOD": {
+ "name": "JOD",
+ "symbol": "JOD"
+ },
+ "KGS": {
+ "name": "KGS",
+ "symbol": "KGS"
+ },
+ "KHR": {
+ "name": "KHR",
+ "symbol": "KHR"
+ },
+ "KPW": {
+ "name": "KPW",
+ "symbol": "KPW"
+ },
+ "KRW": {
+ "name": "KRW",
+ "symbol": "â‚©"
+ },
+ "MWK": {
+ "name": "Kwaca màlawì",
+ "symbol": "MWK"
+ },
+ "ZMW": {
+ "name": "Kwàca sàmbià",
+ "symbol": "ZMW"
+ },
+ "AOA": {
+ "name": "Kwànza àŋgolà",
+ "symbol": "AOA"
+ },
+ "KWD": {
+ "name": "KWD",
+ "symbol": "KWD"
+ },
+ "KYD": {
+ "name": "KYD",
+ "symbol": "KYD"
+ },
+ "KZT": {
+ "name": "KZT",
+ "symbol": "KZT"
+ },
+ "LAK": {
+ "name": "LAK",
+ "symbol": "LAK"
+ },
+ "LBP": {
+ "name": "LBP",
+ "symbol": "LBP"
+ },
+ "SLL": {
+ "name": "Lèonɛ̀",
+ "symbol": "SLL"
+ },
+ "SZL": {
+ "name": "Lìlàŋgeni swàzì",
+ "symbol": "SZL"
+ },
+ "LKR": {
+ "name": "LKR",
+ "symbol": "LKR"
+ },
+ "LSL": {
+ "name": "Lotì lèsòtò",
+ "symbol": "LSL"
+ },
+ "LTL": {
+ "name": "LTL",
+ "symbol": "LTL"
+ },
+ "MDL": {
+ "name": "MDL",
+ "symbol": "MDL"
+ },
+ "MKD": {
+ "name": "MKD",
+ "symbol": "MKD"
+ },
+ "MMK": {
+ "name": "MMK",
+ "symbol": "MMK"
+ },
+ "MNT": {
+ "name": "MNT",
+ "symbol": "MNT"
+ },
+ "MOP": {
+ "name": "MOP",
+ "symbol": "MOP"
+ },
+ "MVR": {
+ "name": "MVR",
+ "symbol": "MVR"
+ },
+ "MXN": {
+ "name": "MXN",
+ "symbol": "MX$"
+ },
+ "MYR": {
+ "name": "MYR",
+ "symbol": "MYR"
+ },
+ "MZN": {
+ "name": "MZN",
+ "symbol": "MZN"
+ },
+ "ERN": {
+ "name": "Nafkà èrìtrěà",
+ "symbol": "ERN"
+ },
+ "NGN": {
+ "name": "Nayrà nìgerìà",
+ "symbol": "NGN"
+ },
+ "NIO": {
+ "name": "NIO",
+ "symbol": "NIO"
+ },
+ "NOK": {
+ "name": "NOK",
+ "symbol": "NOK"
+ },
+ "NPR": {
+ "name": "NPR",
+ "symbol": "NPR"
+ },
+ "NZD": {
+ "name": "NZD",
+ "symbol": "NZ$"
+ },
+ "OMR": {
+ "name": "OMR",
+ "symbol": "OMR"
+ },
+ "PAB": {
+ "name": "PAB",
+ "symbol": "PAB"
+ },
+ "EGP": {
+ "name": "Paùnd ègîptò",
+ "symbol": "EGP"
+ },
+ "SHP": {
+ "name": "Paùnd hèlenà",
+ "symbol": "SHP"
+ },
+ "PEN": {
+ "name": "PEN",
+ "symbol": "PEN"
+ },
+ "PGK": {
+ "name": "PGK",
+ "symbol": "PGK"
+ },
+ "PHP": {
+ "name": "PHP",
+ "symbol": "PHP"
+ },
+ "PKR": {
+ "name": "PKR",
+ "symbol": "PKR"
+ },
+ "PLN": {
+ "name": "PLN",
+ "symbol": "PLN"
+ },
+ "BWP": {
+ "name": "Pùla Bòtswanà",
+ "symbol": "BWP"
+ },
+ "PYG": {
+ "name": "PYG",
+ "symbol": "PYG"
+ },
+ "QAR": {
+ "name": "QAR",
+ "symbol": "QAR"
+ },
+ "ZAR": {
+ "name": "Rân àfrÇkàsɔ̀",
+ "symbol": "ZAR"
+ },
+ "SAR": {
+ "name": "Rìal sàudì",
+ "symbol": "SAR"
+ },
+ "RON": {
+ "name": "RON",
+ "symbol": "RON"
+ },
+ "RSD": {
+ "name": "RSD",
+ "symbol": "RSD"
+ },
+ "RUB": {
+ "name": "RUB",
+ "symbol": "RUB"
+ },
+ "INR": {
+ "name": "Rùpi īndìà",
+ "symbol": "₹"
+ },
+ "MUR": {
+ "name": "Rupìɛ̀ mòrîs",
+ "symbol": "MUR"
+ },
+ "SCR": {
+ "name": "Rùpiɛ̀ sèsɛ̂l",
+ "symbol": "SCR"
+ },
+ "SBD": {
+ "name": "SBD",
+ "symbol": "SBD"
+ },
+ "SEK": {
+ "name": "SEK",
+ "symbol": "SEK"
+ },
+ "SGD": {
+ "name": "SGD",
+ "symbol": "SGD"
+ },
+ "KES": {
+ "name": "Silîŋ kenìà",
+ "symbol": "KES"
+ },
+ "SOS": {
+ "name": "Silîŋ sòmàli",
+ "symbol": "SOS"
+ },
+ "TZS": {
+ "name": "Silîŋ tànzànià",
+ "symbol": "TZS"
+ },
+ "UGX": {
+ "name": "Silîŋ ùgàndà",
+ "symbol": "UGX"
+ },
+ "SRD": {
+ "name": "SRD",
+ "symbol": "SRD"
+ },
+ "SSP": {
+ "name": "SSP",
+ "symbol": "SSP"
+ },
+ "GBP": {
+ "name": "Stɛrlìŋ ŋgìsì",
+ "symbol": "£"
+ },
+ "SVC": {
+ "name": "SVC",
+ "symbol": "SVC"
+ },
+ "SYP": {
+ "name": "SYP",
+ "symbol": "SYP"
+ },
+ "THB": {
+ "name": "THB",
+ "symbol": "THB"
+ },
+ "TJS": {
+ "name": "TJS",
+ "symbol": "TJS"
+ },
+ "TMT": {
+ "name": "TMT",
+ "symbol": "TMT"
+ },
+ "TOP": {
+ "name": "TOP",
+ "symbol": "TOP"
+ },
+ "TRY": {
+ "name": "TRY",
+ "symbol": "TRY"
+ },
+ "TTD": {
+ "name": "TTD",
+ "symbol": "TTD"
+ },
+ "TWD": {
+ "name": "TWD",
+ "symbol": "NT$"
+ },
+ "UAH": {
+ "name": "UAH",
+ "symbol": "UAH"
+ },
+ "MRO": {
+ "name": "Ùgwiya mòrìtanìa",
+ "symbol": "MRO"
+ },
+ "UYU": {
+ "name": "UYU",
+ "symbol": "UYU"
+ },
+ "UZS": {
+ "name": "UZS",
+ "symbol": "UZS"
+ },
+ "VEF": {
+ "name": "VEF",
+ "symbol": "VEF"
+ },
+ "VND": {
+ "name": "VND",
+ "symbol": "â‚«"
+ },
+ "VUV": {
+ "name": "VUV",
+ "symbol": "VUV"
+ },
+ "WST": {
+ "name": "WST",
+ "symbol": "WST"
+ },
+ "XCD": {
+ "name": "XCD",
+ "symbol": "EC$"
+ },
+ "XPF": {
+ "name": "XPF",
+ "symbol": "CFPF"
+ },
+ "YER": {
+ "name": "YER",
+ "symbol": "YER"
+ },
+ "JPY": {
+ "name": "Yɛ̂n yàpân",
+ "symbol": "JPÂ¥"
+ },
+ "CNY": {
+ "name": "Yùan kinà",
+ "symbol": "CNÂ¥"
+ },
+ "ZWL": {
+ "name": "ZWL",
+ "symbol": "ZWL"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/currency/base.json b/library/intl/resources/currency/base.json
new file mode 100644
index 000000000..b99ca7ad0
--- /dev/null
+++ b/library/intl/resources/currency/base.json
@@ -0,0 +1,683 @@
+{
+ "AED": {
+ "code": "AED",
+ "numeric_code": "784"
+ },
+ "AFN": {
+ "code": "AFN",
+ "numeric_code": "971",
+ "fraction_digits": "0"
+ },
+ "ALL": {
+ "code": "ALL",
+ "numeric_code": "008",
+ "fraction_digits": "0"
+ },
+ "AMD": {
+ "code": "AMD",
+ "numeric_code": "051",
+ "fraction_digits": "0"
+ },
+ "ANG": {
+ "code": "ANG",
+ "numeric_code": "532"
+ },
+ "AOA": {
+ "code": "AOA",
+ "numeric_code": "973"
+ },
+ "ARS": {
+ "code": "ARS",
+ "numeric_code": "032"
+ },
+ "AUD": {
+ "code": "AUD",
+ "numeric_code": "036"
+ },
+ "AWG": {
+ "code": "AWG",
+ "numeric_code": "533"
+ },
+ "AZN": {
+ "code": "AZN",
+ "numeric_code": "944"
+ },
+ "BAM": {
+ "code": "BAM",
+ "numeric_code": "977"
+ },
+ "BBD": {
+ "code": "BBD",
+ "numeric_code": "052"
+ },
+ "BDT": {
+ "code": "BDT",
+ "numeric_code": "050"
+ },
+ "BGN": {
+ "code": "BGN",
+ "numeric_code": "975"
+ },
+ "BHD": {
+ "code": "BHD",
+ "numeric_code": "048",
+ "fraction_digits": "3"
+ },
+ "BIF": {
+ "code": "BIF",
+ "numeric_code": "108",
+ "fraction_digits": "0"
+ },
+ "BMD": {
+ "code": "BMD",
+ "numeric_code": "060"
+ },
+ "BND": {
+ "code": "BND",
+ "numeric_code": "096"
+ },
+ "BOB": {
+ "code": "BOB",
+ "numeric_code": "068"
+ },
+ "BRL": {
+ "code": "BRL",
+ "numeric_code": "986"
+ },
+ "BSD": {
+ "code": "BSD",
+ "numeric_code": "044"
+ },
+ "BTN": {
+ "code": "BTN",
+ "numeric_code": "064"
+ },
+ "BWP": {
+ "code": "BWP",
+ "numeric_code": "072"
+ },
+ "BYR": {
+ "code": "BYR",
+ "numeric_code": "974",
+ "fraction_digits": "0"
+ },
+ "BZD": {
+ "code": "BZD",
+ "numeric_code": "084"
+ },
+ "CAD": {
+ "code": "CAD",
+ "numeric_code": "124"
+ },
+ "CDF": {
+ "code": "CDF",
+ "numeric_code": "976"
+ },
+ "CHF": {
+ "code": "CHF",
+ "numeric_code": "756"
+ },
+ "CLP": {
+ "code": "CLP",
+ "numeric_code": "152",
+ "fraction_digits": "0"
+ },
+ "CNY": {
+ "code": "CNY",
+ "numeric_code": "156"
+ },
+ "COP": {
+ "code": "COP",
+ "numeric_code": "170",
+ "fraction_digits": "0"
+ },
+ "CRC": {
+ "code": "CRC",
+ "numeric_code": "188",
+ "fraction_digits": "0"
+ },
+ "CUC": {
+ "code": "CUC",
+ "numeric_code": "931"
+ },
+ "CUP": {
+ "code": "CUP",
+ "numeric_code": "192"
+ },
+ "CVE": {
+ "code": "CVE",
+ "numeric_code": "132"
+ },
+ "CZK": {
+ "code": "CZK",
+ "numeric_code": "203"
+ },
+ "DJF": {
+ "code": "DJF",
+ "numeric_code": "262",
+ "fraction_digits": "0"
+ },
+ "DKK": {
+ "code": "DKK",
+ "numeric_code": "208"
+ },
+ "DOP": {
+ "code": "DOP",
+ "numeric_code": "214"
+ },
+ "DZD": {
+ "code": "DZD",
+ "numeric_code": "012"
+ },
+ "EGP": {
+ "code": "EGP",
+ "numeric_code": "818"
+ },
+ "ERN": {
+ "code": "ERN",
+ "numeric_code": "232"
+ },
+ "ETB": {
+ "code": "ETB",
+ "numeric_code": "230"
+ },
+ "EUR": {
+ "code": "EUR",
+ "numeric_code": "978"
+ },
+ "FJD": {
+ "code": "FJD",
+ "numeric_code": "242"
+ },
+ "FKP": {
+ "code": "FKP",
+ "numeric_code": "238"
+ },
+ "GBP": {
+ "code": "GBP",
+ "numeric_code": "826"
+ },
+ "GEL": {
+ "code": "GEL",
+ "numeric_code": "981"
+ },
+ "GHS": {
+ "code": "GHS",
+ "numeric_code": "936"
+ },
+ "GIP": {
+ "code": "GIP",
+ "numeric_code": "292"
+ },
+ "GMD": {
+ "code": "GMD",
+ "numeric_code": "270"
+ },
+ "GNF": {
+ "code": "GNF",
+ "numeric_code": "324",
+ "fraction_digits": "0"
+ },
+ "GTQ": {
+ "code": "GTQ",
+ "numeric_code": "320"
+ },
+ "GYD": {
+ "code": "GYD",
+ "numeric_code": "328",
+ "fraction_digits": "0"
+ },
+ "HKD": {
+ "code": "HKD",
+ "numeric_code": "344"
+ },
+ "HNL": {
+ "code": "HNL",
+ "numeric_code": "340"
+ },
+ "HRK": {
+ "code": "HRK",
+ "numeric_code": "191"
+ },
+ "HTG": {
+ "code": "HTG",
+ "numeric_code": "332"
+ },
+ "HUF": {
+ "code": "HUF",
+ "numeric_code": "348"
+ },
+ "IDR": {
+ "code": "IDR",
+ "numeric_code": "360",
+ "fraction_digits": "0"
+ },
+ "ILS": {
+ "code": "ILS",
+ "numeric_code": "376"
+ },
+ "INR": {
+ "code": "INR",
+ "numeric_code": "356"
+ },
+ "IQD": {
+ "code": "IQD",
+ "numeric_code": "368",
+ "fraction_digits": "0"
+ },
+ "IRR": {
+ "code": "IRR",
+ "numeric_code": "364",
+ "fraction_digits": "0"
+ },
+ "ISK": {
+ "code": "ISK",
+ "numeric_code": "352",
+ "fraction_digits": "0"
+ },
+ "JMD": {
+ "code": "JMD",
+ "numeric_code": "388"
+ },
+ "JOD": {
+ "code": "JOD",
+ "numeric_code": "400",
+ "fraction_digits": "3"
+ },
+ "JPY": {
+ "code": "JPY",
+ "numeric_code": "392",
+ "fraction_digits": "0"
+ },
+ "KES": {
+ "code": "KES",
+ "numeric_code": "404"
+ },
+ "KGS": {
+ "code": "KGS",
+ "numeric_code": "417"
+ },
+ "KHR": {
+ "code": "KHR",
+ "numeric_code": "116"
+ },
+ "KMF": {
+ "code": "KMF",
+ "numeric_code": "174",
+ "fraction_digits": "0"
+ },
+ "KPW": {
+ "code": "KPW",
+ "numeric_code": "408",
+ "fraction_digits": "0"
+ },
+ "KRW": {
+ "code": "KRW",
+ "numeric_code": "410",
+ "fraction_digits": "0"
+ },
+ "KWD": {
+ "code": "KWD",
+ "numeric_code": "414",
+ "fraction_digits": "3"
+ },
+ "KYD": {
+ "code": "KYD",
+ "numeric_code": "136"
+ },
+ "KZT": {
+ "code": "KZT",
+ "numeric_code": "398"
+ },
+ "LAK": {
+ "code": "LAK",
+ "numeric_code": "418",
+ "fraction_digits": "0"
+ },
+ "LBP": {
+ "code": "LBP",
+ "numeric_code": "422",
+ "fraction_digits": "0"
+ },
+ "LKR": {
+ "code": "LKR",
+ "numeric_code": "144"
+ },
+ "LRD": {
+ "code": "LRD",
+ "numeric_code": "430"
+ },
+ "LSL": {
+ "code": "LSL",
+ "numeric_code": "426"
+ },
+ "LTL": {
+ "code": "LTL",
+ "numeric_code": "440"
+ },
+ "LYD": {
+ "code": "LYD",
+ "numeric_code": "434",
+ "fraction_digits": "3"
+ },
+ "MAD": {
+ "code": "MAD",
+ "numeric_code": "504"
+ },
+ "MDL": {
+ "code": "MDL",
+ "numeric_code": "498"
+ },
+ "MGA": {
+ "code": "MGA",
+ "numeric_code": "969",
+ "fraction_digits": "0"
+ },
+ "MKD": {
+ "code": "MKD",
+ "numeric_code": "807"
+ },
+ "MMK": {
+ "code": "MMK",
+ "numeric_code": "104",
+ "fraction_digits": "0"
+ },
+ "MNT": {
+ "code": "MNT",
+ "numeric_code": "496",
+ "fraction_digits": "0"
+ },
+ "MOP": {
+ "code": "MOP",
+ "numeric_code": "446"
+ },
+ "MRO": {
+ "code": "MRO",
+ "numeric_code": "478",
+ "fraction_digits": "0"
+ },
+ "MUR": {
+ "code": "MUR",
+ "numeric_code": "480",
+ "fraction_digits": "0"
+ },
+ "MVR": {
+ "code": "MVR",
+ "numeric_code": "462"
+ },
+ "MWK": {
+ "code": "MWK",
+ "numeric_code": "454"
+ },
+ "MXN": {
+ "code": "MXN",
+ "numeric_code": "484"
+ },
+ "MYR": {
+ "code": "MYR",
+ "numeric_code": "458"
+ },
+ "MZN": {
+ "code": "MZN",
+ "numeric_code": "943"
+ },
+ "NAD": {
+ "code": "NAD",
+ "numeric_code": "516"
+ },
+ "NGN": {
+ "code": "NGN",
+ "numeric_code": "566"
+ },
+ "NIO": {
+ "code": "NIO",
+ "numeric_code": "558"
+ },
+ "NOK": {
+ "code": "NOK",
+ "numeric_code": "578"
+ },
+ "NPR": {
+ "code": "NPR",
+ "numeric_code": "524"
+ },
+ "NZD": {
+ "code": "NZD",
+ "numeric_code": "554"
+ },
+ "OMR": {
+ "code": "OMR",
+ "numeric_code": "512",
+ "fraction_digits": "3"
+ },
+ "PAB": {
+ "code": "PAB",
+ "numeric_code": "590"
+ },
+ "PEN": {
+ "code": "PEN",
+ "numeric_code": "604"
+ },
+ "PGK": {
+ "code": "PGK",
+ "numeric_code": "598"
+ },
+ "PHP": {
+ "code": "PHP",
+ "numeric_code": "608"
+ },
+ "PKR": {
+ "code": "PKR",
+ "numeric_code": "586",
+ "fraction_digits": "0"
+ },
+ "PLN": {
+ "code": "PLN",
+ "numeric_code": "985"
+ },
+ "PYG": {
+ "code": "PYG",
+ "numeric_code": "600",
+ "fraction_digits": "0"
+ },
+ "QAR": {
+ "code": "QAR",
+ "numeric_code": "634"
+ },
+ "RON": {
+ "code": "RON",
+ "numeric_code": "946"
+ },
+ "RSD": {
+ "code": "RSD",
+ "numeric_code": "941",
+ "fraction_digits": "0"
+ },
+ "RUB": {
+ "code": "RUB",
+ "numeric_code": "643"
+ },
+ "RWF": {
+ "code": "RWF",
+ "numeric_code": "646",
+ "fraction_digits": "0"
+ },
+ "SAR": {
+ "code": "SAR",
+ "numeric_code": "682"
+ },
+ "SBD": {
+ "code": "SBD",
+ "numeric_code": "090"
+ },
+ "SCR": {
+ "code": "SCR",
+ "numeric_code": "690"
+ },
+ "SDG": {
+ "code": "SDG",
+ "numeric_code": "938"
+ },
+ "SEK": {
+ "code": "SEK",
+ "numeric_code": "752"
+ },
+ "SGD": {
+ "code": "SGD",
+ "numeric_code": "702"
+ },
+ "SHP": {
+ "code": "SHP",
+ "numeric_code": "654"
+ },
+ "SLL": {
+ "code": "SLL",
+ "numeric_code": "694",
+ "fraction_digits": "0"
+ },
+ "SOS": {
+ "code": "SOS",
+ "numeric_code": "706",
+ "fraction_digits": "0"
+ },
+ "SRD": {
+ "code": "SRD",
+ "numeric_code": "968"
+ },
+ "SSP": {
+ "code": "SSP",
+ "numeric_code": "728"
+ },
+ "STD": {
+ "code": "STD",
+ "numeric_code": "678",
+ "fraction_digits": "0"
+ },
+ "SVC": {
+ "code": "SVC",
+ "numeric_code": "222"
+ },
+ "SYP": {
+ "code": "SYP",
+ "numeric_code": "760",
+ "fraction_digits": "0"
+ },
+ "SZL": {
+ "code": "SZL",
+ "numeric_code": "748"
+ },
+ "THB": {
+ "code": "THB",
+ "numeric_code": "764"
+ },
+ "TJS": {
+ "code": "TJS",
+ "numeric_code": "972"
+ },
+ "TMT": {
+ "code": "TMT",
+ "numeric_code": "934"
+ },
+ "TND": {
+ "code": "TND",
+ "numeric_code": "788",
+ "fraction_digits": "3"
+ },
+ "TOP": {
+ "code": "TOP",
+ "numeric_code": "776"
+ },
+ "TRY": {
+ "code": "TRY",
+ "numeric_code": "949"
+ },
+ "TTD": {
+ "code": "TTD",
+ "numeric_code": "780"
+ },
+ "TWD": {
+ "code": "TWD",
+ "numeric_code": "901"
+ },
+ "TZS": {
+ "code": "TZS",
+ "numeric_code": "834",
+ "fraction_digits": "0"
+ },
+ "UAH": {
+ "code": "UAH",
+ "numeric_code": "980"
+ },
+ "UGX": {
+ "code": "UGX",
+ "numeric_code": "800",
+ "fraction_digits": "0"
+ },
+ "USD": {
+ "code": "USD",
+ "numeric_code": "840"
+ },
+ "UYU": {
+ "code": "UYU",
+ "numeric_code": "858"
+ },
+ "UZS": {
+ "code": "UZS",
+ "numeric_code": "860",
+ "fraction_digits": "0"
+ },
+ "VEF": {
+ "code": "VEF",
+ "numeric_code": "937"
+ },
+ "VND": {
+ "code": "VND",
+ "numeric_code": "704",
+ "fraction_digits": "0"
+ },
+ "VUV": {
+ "code": "VUV",
+ "numeric_code": "548",
+ "fraction_digits": "0"
+ },
+ "WST": {
+ "code": "WST",
+ "numeric_code": "882"
+ },
+ "XAF": {
+ "code": "XAF",
+ "numeric_code": "950",
+ "fraction_digits": "0"
+ },
+ "XCD": {
+ "code": "XCD",
+ "numeric_code": "951"
+ },
+ "XOF": {
+ "code": "XOF",
+ "numeric_code": "952",
+ "fraction_digits": "0"
+ },
+ "XPF": {
+ "code": "XPF",
+ "numeric_code": "953",
+ "fraction_digits": "0"
+ },
+ "YER": {
+ "code": "YER",
+ "numeric_code": "886",
+ "fraction_digits": "0"
+ },
+ "ZAR": {
+ "code": "ZAR",
+ "numeric_code": "710"
+ },
+ "ZMW": {
+ "code": "ZMW",
+ "numeric_code": "967"
+ },
+ "ZWL": {
+ "code": "ZWL",
+ "numeric_code": "932"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/currency/be.json b/library/intl/resources/currency/be.json
new file mode 100644
index 000000000..fe0d366ca
--- /dev/null
+++ b/library/intl/resources/currency/be.json
@@ -0,0 +1,634 @@
+{
+ "AED": {
+ "name": "AED",
+ "symbol": "AED"
+ },
+ "AFN": {
+ "name": "AFN",
+ "symbol": "AFN"
+ },
+ "ALL": {
+ "name": "ALL",
+ "symbol": "ALL"
+ },
+ "AMD": {
+ "name": "AMD",
+ "symbol": "AMD"
+ },
+ "ANG": {
+ "name": "ANG",
+ "symbol": "ANG"
+ },
+ "AOA": {
+ "name": "AOA",
+ "symbol": "AOA"
+ },
+ "ARS": {
+ "name": "ARS",
+ "symbol": "ARS"
+ },
+ "AWG": {
+ "name": "AWG",
+ "symbol": "AWG"
+ },
+ "AZN": {
+ "name": "AZN",
+ "symbol": "AZN"
+ },
+ "BAM": {
+ "name": "BAM",
+ "symbol": "BAM"
+ },
+ "BBD": {
+ "name": "BBD",
+ "symbol": "BBD"
+ },
+ "BDT": {
+ "name": "BDT",
+ "symbol": "BDT"
+ },
+ "BGN": {
+ "name": "BGN",
+ "symbol": "BGN"
+ },
+ "BHD": {
+ "name": "BHD",
+ "symbol": "BHD"
+ },
+ "BIF": {
+ "name": "BIF",
+ "symbol": "BIF"
+ },
+ "BMD": {
+ "name": "BMD",
+ "symbol": "BMD"
+ },
+ "BND": {
+ "name": "BND",
+ "symbol": "BND"
+ },
+ "BOB": {
+ "name": "BOB",
+ "symbol": "BOB"
+ },
+ "BSD": {
+ "name": "BSD",
+ "symbol": "BSD"
+ },
+ "BTN": {
+ "name": "BTN",
+ "symbol": "BTN"
+ },
+ "BWP": {
+ "name": "BWP",
+ "symbol": "BWP"
+ },
+ "BZD": {
+ "name": "BZD",
+ "symbol": "BZD"
+ },
+ "CAD": {
+ "name": "CAD",
+ "symbol": "CA$"
+ },
+ "CDF": {
+ "name": "CDF",
+ "symbol": "CDF"
+ },
+ "CHF": {
+ "name": "CHF",
+ "symbol": "CHF"
+ },
+ "CLP": {
+ "name": "CLP",
+ "symbol": "CLP"
+ },
+ "COP": {
+ "name": "COP",
+ "symbol": "COP"
+ },
+ "CRC": {
+ "name": "CRC",
+ "symbol": "CRC"
+ },
+ "CUC": {
+ "name": "CUC",
+ "symbol": "CUC"
+ },
+ "CUP": {
+ "name": "CUP",
+ "symbol": "CUP"
+ },
+ "CVE": {
+ "name": "CVE",
+ "symbol": "CVE"
+ },
+ "CZK": {
+ "name": "CZK",
+ "symbol": "CZK"
+ },
+ "DJF": {
+ "name": "DJF",
+ "symbol": "DJF"
+ },
+ "DKK": {
+ "name": "DKK",
+ "symbol": "DKK"
+ },
+ "DOP": {
+ "name": "DOP",
+ "symbol": "DOP"
+ },
+ "DZD": {
+ "name": "DZD",
+ "symbol": "DZD"
+ },
+ "EGP": {
+ "name": "EGP",
+ "symbol": "EGP"
+ },
+ "ETB": {
+ "name": "ETB",
+ "symbol": "ETB"
+ },
+ "FJD": {
+ "name": "FJD",
+ "symbol": "FJD"
+ },
+ "FKP": {
+ "name": "FKP",
+ "symbol": "FKP"
+ },
+ "GEL": {
+ "name": "GEL",
+ "symbol": "GEL"
+ },
+ "GHS": {
+ "name": "GHS",
+ "symbol": "GHS"
+ },
+ "GIP": {
+ "name": "GIP",
+ "symbol": "GIP"
+ },
+ "GMD": {
+ "name": "GMD",
+ "symbol": "GMD"
+ },
+ "GNF": {
+ "name": "GNF",
+ "symbol": "GNF"
+ },
+ "GTQ": {
+ "name": "GTQ",
+ "symbol": "GTQ"
+ },
+ "GYD": {
+ "name": "GYD",
+ "symbol": "GYD"
+ },
+ "HKD": {
+ "name": "HKD",
+ "symbol": "HK$"
+ },
+ "HNL": {
+ "name": "HNL",
+ "symbol": "HNL"
+ },
+ "HRK": {
+ "name": "HRK",
+ "symbol": "HRK"
+ },
+ "HTG": {
+ "name": "HTG",
+ "symbol": "HTG"
+ },
+ "HUF": {
+ "name": "HUF",
+ "symbol": "HUF"
+ },
+ "IDR": {
+ "name": "IDR",
+ "symbol": "IDR"
+ },
+ "ILS": {
+ "name": "ILS",
+ "symbol": "₪"
+ },
+ "IQD": {
+ "name": "IQD",
+ "symbol": "IQD"
+ },
+ "IRR": {
+ "name": "IRR",
+ "symbol": "IRR"
+ },
+ "ISK": {
+ "name": "ISK",
+ "symbol": "ISK"
+ },
+ "JMD": {
+ "name": "JMD",
+ "symbol": "JMD"
+ },
+ "JOD": {
+ "name": "JOD",
+ "symbol": "JOD"
+ },
+ "KES": {
+ "name": "KES",
+ "symbol": "KES"
+ },
+ "KGS": {
+ "name": "KGS",
+ "symbol": "KGS"
+ },
+ "KHR": {
+ "name": "KHR",
+ "symbol": "KHR"
+ },
+ "KMF": {
+ "name": "KMF",
+ "symbol": "KMF"
+ },
+ "KPW": {
+ "name": "KPW",
+ "symbol": "KPW"
+ },
+ "KRW": {
+ "name": "KRW",
+ "symbol": "â‚©"
+ },
+ "KWD": {
+ "name": "KWD",
+ "symbol": "KWD"
+ },
+ "KYD": {
+ "name": "KYD",
+ "symbol": "KYD"
+ },
+ "KZT": {
+ "name": "KZT",
+ "symbol": "KZT"
+ },
+ "LAK": {
+ "name": "LAK",
+ "symbol": "LAK"
+ },
+ "LBP": {
+ "name": "LBP",
+ "symbol": "LBP"
+ },
+ "LKR": {
+ "name": "LKR",
+ "symbol": "LKR"
+ },
+ "LRD": {
+ "name": "LRD",
+ "symbol": "LRD"
+ },
+ "LSL": {
+ "name": "LSL",
+ "symbol": "LSL"
+ },
+ "LTL": {
+ "name": "LTL",
+ "symbol": "LTL"
+ },
+ "LYD": {
+ "name": "LYD",
+ "symbol": "LYD"
+ },
+ "MAD": {
+ "name": "MAD",
+ "symbol": "MAD"
+ },
+ "MDL": {
+ "name": "MDL",
+ "symbol": "MDL"
+ },
+ "MGA": {
+ "name": "MGA",
+ "symbol": "MGA"
+ },
+ "MKD": {
+ "name": "MKD",
+ "symbol": "MKD"
+ },
+ "MMK": {
+ "name": "MMK",
+ "symbol": "MMK"
+ },
+ "MNT": {
+ "name": "MNT",
+ "symbol": "MNT"
+ },
+ "MOP": {
+ "name": "MOP",
+ "symbol": "MOP"
+ },
+ "MRO": {
+ "name": "MRO",
+ "symbol": "MRO"
+ },
+ "MUR": {
+ "name": "MUR",
+ "symbol": "MUR"
+ },
+ "MVR": {
+ "name": "MVR",
+ "symbol": "MVR"
+ },
+ "MWK": {
+ "name": "MWK",
+ "symbol": "MWK"
+ },
+ "MXN": {
+ "name": "MXN",
+ "symbol": "MX$"
+ },
+ "MYR": {
+ "name": "MYR",
+ "symbol": "MYR"
+ },
+ "MZN": {
+ "name": "MZN",
+ "symbol": "MZN"
+ },
+ "NAD": {
+ "name": "NAD",
+ "symbol": "NAD"
+ },
+ "NGN": {
+ "name": "NGN",
+ "symbol": "NGN"
+ },
+ "NIO": {
+ "name": "NIO",
+ "symbol": "NIO"
+ },
+ "NPR": {
+ "name": "NPR",
+ "symbol": "NPR"
+ },
+ "NZD": {
+ "name": "NZD",
+ "symbol": "NZ$"
+ },
+ "OMR": {
+ "name": "OMR",
+ "symbol": "OMR"
+ },
+ "PAB": {
+ "name": "PAB",
+ "symbol": "PAB"
+ },
+ "PEN": {
+ "name": "PEN",
+ "symbol": "PEN"
+ },
+ "PGK": {
+ "name": "PGK",
+ "symbol": "PGK"
+ },
+ "PHP": {
+ "name": "PHP",
+ "symbol": "PHP"
+ },
+ "PKR": {
+ "name": "PKR",
+ "symbol": "PKR"
+ },
+ "PLN": {
+ "name": "PLN",
+ "symbol": "PLN"
+ },
+ "PYG": {
+ "name": "PYG",
+ "symbol": "PYG"
+ },
+ "QAR": {
+ "name": "QAR",
+ "symbol": "QAR"
+ },
+ "RON": {
+ "name": "RON",
+ "symbol": "RON"
+ },
+ "RSD": {
+ "name": "RSD",
+ "symbol": "RSD"
+ },
+ "RWF": {
+ "name": "RWF",
+ "symbol": "RWF"
+ },
+ "SAR": {
+ "name": "SAR",
+ "symbol": "SAR"
+ },
+ "SBD": {
+ "name": "SBD",
+ "symbol": "SBD"
+ },
+ "SCR": {
+ "name": "SCR",
+ "symbol": "SCR"
+ },
+ "SDG": {
+ "name": "SDG",
+ "symbol": "SDG"
+ },
+ "SEK": {
+ "name": "SEK",
+ "symbol": "SEK"
+ },
+ "SGD": {
+ "name": "SGD",
+ "symbol": "SGD"
+ },
+ "SHP": {
+ "name": "SHP",
+ "symbol": "SHP"
+ },
+ "SLL": {
+ "name": "SLL",
+ "symbol": "SLL"
+ },
+ "SOS": {
+ "name": "SOS",
+ "symbol": "SOS"
+ },
+ "SRD": {
+ "name": "SRD",
+ "symbol": "SRD"
+ },
+ "SSP": {
+ "name": "SSP",
+ "symbol": "SSP"
+ },
+ "STD": {
+ "name": "STD",
+ "symbol": "STD"
+ },
+ "SVC": {
+ "name": "SVC",
+ "symbol": "SVC"
+ },
+ "SYP": {
+ "name": "SYP",
+ "symbol": "SYP"
+ },
+ "SZL": {
+ "name": "SZL",
+ "symbol": "SZL"
+ },
+ "THB": {
+ "name": "THB",
+ "symbol": "THB"
+ },
+ "TJS": {
+ "name": "TJS",
+ "symbol": "TJS"
+ },
+ "TMT": {
+ "name": "TMT",
+ "symbol": "TMT"
+ },
+ "TND": {
+ "name": "TND",
+ "symbol": "TND"
+ },
+ "TOP": {
+ "name": "TOP",
+ "symbol": "TOP"
+ },
+ "TRY": {
+ "name": "TRY",
+ "symbol": "TRY"
+ },
+ "TTD": {
+ "name": "TTD",
+ "symbol": "TTD"
+ },
+ "TWD": {
+ "name": "TWD",
+ "symbol": "NT$"
+ },
+ "TZS": {
+ "name": "TZS",
+ "symbol": "TZS"
+ },
+ "UAH": {
+ "name": "UAH",
+ "symbol": "UAH"
+ },
+ "UGX": {
+ "name": "UGX",
+ "symbol": "UGX"
+ },
+ "UYU": {
+ "name": "UYU",
+ "symbol": "UYU"
+ },
+ "UZS": {
+ "name": "UZS",
+ "symbol": "UZS"
+ },
+ "VEF": {
+ "name": "VEF",
+ "symbol": "VEF"
+ },
+ "VND": {
+ "name": "VND",
+ "symbol": "â‚«"
+ },
+ "VUV": {
+ "name": "VUV",
+ "symbol": "VUV"
+ },
+ "WST": {
+ "name": "WST",
+ "symbol": "WST"
+ },
+ "XAF": {
+ "name": "XAF",
+ "symbol": "FCFA"
+ },
+ "XCD": {
+ "name": "XCD",
+ "symbol": "EC$"
+ },
+ "XOF": {
+ "name": "XOF",
+ "symbol": "CFA"
+ },
+ "XPF": {
+ "name": "XPF",
+ "symbol": "CFPF"
+ },
+ "YER": {
+ "name": "YER",
+ "symbol": "YER"
+ },
+ "ZAR": {
+ "name": "ZAR",
+ "symbol": "ZAR"
+ },
+ "ZMW": {
+ "name": "ZMW",
+ "symbol": "ZMW"
+ },
+ "ZWL": {
+ "name": "ZWL",
+ "symbol": "ZWL"
+ },
+ "GBP": {
+ "name": "англійÑкі фунт",
+ "symbol": "£"
+ },
+ "AUD": {
+ "name": "аўÑтралійÑкі далÑÑ€",
+ "symbol": "A$"
+ },
+ "BYR": {
+ "name": "беларуÑкі рубель",
+ "symbol": "Ñ€."
+ },
+ "BRL": {
+ "name": "бразільÑкі Ñ€Ñал",
+ "symbol": "R$"
+ },
+ "USD": {
+ "name": "долар ЗШÐ",
+ "symbol": "$"
+ },
+ "EUR": {
+ "name": "еўра",
+ "symbol": "€"
+ },
+ "INR": {
+ "name": "індыйÑÐºÐ°Ñ Ñ€ÑƒÐ¿Ñ–Ñ",
+ "symbol": "₹"
+ },
+ "CNY": {
+ "name": "кітайÑкі юань",
+ "symbol": "CNÂ¥"
+ },
+ "NOK": {
+ "name": "нарвÑÑÐºÐ°Ñ ÐºÑ€Ð¾Ð½Ð°",
+ "symbol": "NOK"
+ },
+ "RUB": {
+ "name": "руÑкі рубель",
+ "symbol": "раÑ. руб."
+ },
+ "ERN": {
+ "name": "ÑрытрÑйÑÐºÐ°Ñ Ð½Ð°ÐºÑ„Ð°",
+ "symbol": "ERN"
+ },
+ "JPY": {
+ "name": "ÑпонÑÐºÐ°Ñ Ñ–ÐµÐ½Ð°",
+ "symbol": "Â¥"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/currency/bez.json b/library/intl/resources/currency/bez.json
new file mode 100644
index 000000000..ea896cc8f
--- /dev/null
+++ b/library/intl/resources/currency/bez.json
@@ -0,0 +1,634 @@
+{
+ "AFN": {
+ "name": "AFN",
+ "symbol": "AFN"
+ },
+ "ALL": {
+ "name": "ALL",
+ "symbol": "ALL"
+ },
+ "AMD": {
+ "name": "AMD",
+ "symbol": "AMD"
+ },
+ "ANG": {
+ "name": "ANG",
+ "symbol": "ANG"
+ },
+ "ARS": {
+ "name": "ARS",
+ "symbol": "ARS"
+ },
+ "AWG": {
+ "name": "AWG",
+ "symbol": "AWG"
+ },
+ "AZN": {
+ "name": "AZN",
+ "symbol": "AZN"
+ },
+ "BAM": {
+ "name": "BAM",
+ "symbol": "BAM"
+ },
+ "BBD": {
+ "name": "BBD",
+ "symbol": "BBD"
+ },
+ "BDT": {
+ "name": "BDT",
+ "symbol": "BDT"
+ },
+ "BGN": {
+ "name": "BGN",
+ "symbol": "BGN"
+ },
+ "BMD": {
+ "name": "BMD",
+ "symbol": "BMD"
+ },
+ "BND": {
+ "name": "BND",
+ "symbol": "BND"
+ },
+ "BOB": {
+ "name": "BOB",
+ "symbol": "BOB"
+ },
+ "BRL": {
+ "name": "BRL",
+ "symbol": "R$"
+ },
+ "BSD": {
+ "name": "BSD",
+ "symbol": "BSD"
+ },
+ "BTN": {
+ "name": "BTN",
+ "symbol": "BTN"
+ },
+ "BYR": {
+ "name": "BYR",
+ "symbol": "BYR"
+ },
+ "BZD": {
+ "name": "BZD",
+ "symbol": "BZD"
+ },
+ "CLP": {
+ "name": "CLP",
+ "symbol": "CLP"
+ },
+ "COP": {
+ "name": "COP",
+ "symbol": "COP"
+ },
+ "CRC": {
+ "name": "CRC",
+ "symbol": "CRC"
+ },
+ "CUC": {
+ "name": "CUC",
+ "symbol": "CUC"
+ },
+ "CUP": {
+ "name": "CUP",
+ "symbol": "CUP"
+ },
+ "CZK": {
+ "name": "CZK",
+ "symbol": "CZK"
+ },
+ "DKK": {
+ "name": "DKK",
+ "symbol": "DKK"
+ },
+ "DOP": {
+ "name": "DOP",
+ "symbol": "DOP"
+ },
+ "FJD": {
+ "name": "FJD",
+ "symbol": "FJD"
+ },
+ "FKP": {
+ "name": "FKP",
+ "symbol": "FKP"
+ },
+ "GEL": {
+ "name": "GEL",
+ "symbol": "GEL"
+ },
+ "GHS": {
+ "name": "GHS",
+ "symbol": "GHS"
+ },
+ "GIP": {
+ "name": "GIP",
+ "symbol": "GIP"
+ },
+ "GNF": {
+ "name": "GNF",
+ "symbol": "GNF"
+ },
+ "GTQ": {
+ "name": "GTQ",
+ "symbol": "GTQ"
+ },
+ "GYD": {
+ "name": "GYD",
+ "symbol": "GYD"
+ },
+ "HKD": {
+ "name": "HKD",
+ "symbol": "HK$"
+ },
+ "HNL": {
+ "name": "HNL",
+ "symbol": "HNL"
+ },
+ "HRK": {
+ "name": "HRK",
+ "symbol": "HRK"
+ },
+ "HTG": {
+ "name": "HTG",
+ "symbol": "HTG"
+ },
+ "HUF": {
+ "name": "HUF",
+ "symbol": "HUF"
+ },
+ "IDR": {
+ "name": "IDR",
+ "symbol": "IDR"
+ },
+ "ILS": {
+ "name": "ILS",
+ "symbol": "₪"
+ },
+ "IQD": {
+ "name": "IQD",
+ "symbol": "IQD"
+ },
+ "IRR": {
+ "name": "IRR",
+ "symbol": "IRR"
+ },
+ "ISK": {
+ "name": "ISK",
+ "symbol": "ISK"
+ },
+ "JMD": {
+ "name": "JMD",
+ "symbol": "JMD"
+ },
+ "JOD": {
+ "name": "JOD",
+ "symbol": "JOD"
+ },
+ "KGS": {
+ "name": "KGS",
+ "symbol": "KGS"
+ },
+ "KHR": {
+ "name": "KHR",
+ "symbol": "KHR"
+ },
+ "KPW": {
+ "name": "KPW",
+ "symbol": "KPW"
+ },
+ "KRW": {
+ "name": "KRW",
+ "symbol": "â‚©"
+ },
+ "KWD": {
+ "name": "KWD",
+ "symbol": "KWD"
+ },
+ "KYD": {
+ "name": "KYD",
+ "symbol": "KYD"
+ },
+ "KZT": {
+ "name": "KZT",
+ "symbol": "KZT"
+ },
+ "LAK": {
+ "name": "LAK",
+ "symbol": "LAK"
+ },
+ "LBP": {
+ "name": "LBP",
+ "symbol": "LBP"
+ },
+ "LKR": {
+ "name": "LKR",
+ "symbol": "LKR"
+ },
+ "LTL": {
+ "name": "LTL",
+ "symbol": "LTL"
+ },
+ "XOF": {
+ "name": "Lupila lwa CFA BCEAO",
+ "symbol": "CFA"
+ },
+ "XAF": {
+ "name": "Lupila lwa CFA BEAC",
+ "symbol": "FCFA"
+ },
+ "JPY": {
+ "name": "Lupila lwa Hijapani",
+ "symbol": "JPÂ¥"
+ },
+ "ZAR": {
+ "name": "Lupila lwa Huafriaka ya Hukusini",
+ "symbol": "ZAR"
+ },
+ "DZD": {
+ "name": "Lupila lwa Hualjelia",
+ "symbol": "DZD"
+ },
+ "AOA": {
+ "name": "Lupila lwa Huangola",
+ "symbol": "AOA"
+ },
+ "AUD": {
+ "name": "Lupila lwa Huaustlalia",
+ "symbol": "A$"
+ },
+ "BHD": {
+ "name": "Lupila lwa Hubahareni",
+ "symbol": "BHD"
+ },
+ "BWP": {
+ "name": "Lupila lwa Hubotswana",
+ "symbol": "BWP"
+ },
+ "MGA": {
+ "name": "Lupila lwa Hubukini",
+ "symbol": "MGA"
+ },
+ "BIF": {
+ "name": "Lupila lwa Huburundi",
+ "symbol": "BIF"
+ },
+ "CNY": {
+ "name": "Lupila lwa Huchina",
+ "symbol": "CNÂ¥"
+ },
+ "ERN": {
+ "name": "Lupila lwa Hueritrea",
+ "symbol": "ERN"
+ },
+ "AED": {
+ "name": "Lupila lwa Hufalme dza Huhihalabu",
+ "symbol": "AED"
+ },
+ "GMD": {
+ "name": "Lupila lwa Hugambia",
+ "symbol": "GMD"
+ },
+ "INR": {
+ "name": "Lupila lwa Huindia",
+ "symbol": "₹"
+ },
+ "DJF": {
+ "name": "Lupila lwa Hujibuti",
+ "symbol": "DJF"
+ },
+ "CAD": {
+ "name": "Lupila lwa Hukanada",
+ "symbol": "CA$"
+ },
+ "CVE": {
+ "name": "Lupila lwa Hukepuvede",
+ "symbol": "CVE"
+ },
+ "KMF": {
+ "name": "Lupila lwa Hukomoro",
+ "symbol": "KMF"
+ },
+ "CDF": {
+ "name": "Lupila lwa Hukongo",
+ "symbol": "CDF"
+ },
+ "LSL": {
+ "name": "Lupila lwa Hulesoto",
+ "symbol": "LSL"
+ },
+ "LRD": {
+ "name": "Lupila lwa Hulibelia",
+ "symbol": "LRD"
+ },
+ "LYD": {
+ "name": "Lupila lwa Hulibya",
+ "symbol": "LYD"
+ },
+ "MWK": {
+ "name": "Lupila lwa Humalawi",
+ "symbol": "MWK"
+ },
+ "USD": {
+ "name": "Lupila lwa Humalekani",
+ "symbol": "US$"
+ },
+ "EGP": {
+ "name": "Lupila lwa Humisri",
+ "symbol": "EGP"
+ },
+ "MUR": {
+ "name": "Lupila lwa Humolisi",
+ "symbol": "MUR"
+ },
+ "MRO": {
+ "name": "Lupila lwa Humolitania",
+ "symbol": "MRO"
+ },
+ "MAD": {
+ "name": "Lupila lwa Humoloko",
+ "symbol": "MAD"
+ },
+ "NAD": {
+ "name": "Lupila lwa Hunamibia",
+ "symbol": "NAD"
+ },
+ "NGN": {
+ "name": "Lupila lwa Hunijelia",
+ "symbol": "NGN"
+ },
+ "RWF": {
+ "name": "Lupila lwa Hurwanda",
+ "symbol": "RWF"
+ },
+ "SHP": {
+ "name": "Lupila lwa Husantahelena",
+ "symbol": "SHP"
+ },
+ "STD": {
+ "name": "Lupila lwa Husaotome na Huprinisipe",
+ "symbol": "STD"
+ },
+ "SAR": {
+ "name": "Lupila lwa Husaudi",
+ "symbol": "SAR"
+ },
+ "SCR": {
+ "name": "Lupila lwa Hushelisheli",
+ "symbol": "SCR"
+ },
+ "SOS": {
+ "name": "Lupila lwa Husomalia",
+ "symbol": "SOS"
+ },
+ "SDG": {
+ "name": "Lupila lwa Husudani",
+ "symbol": "SDG"
+ },
+ "TND": {
+ "name": "Lupila lwa Hutunisia",
+ "symbol": "TND"
+ },
+ "ETB": {
+ "name": "Lupila lwa Huuhabeshi",
+ "symbol": "ETB"
+ },
+ "GBP": {
+ "name": "Lupila lwa Huuingereza",
+ "symbol": "£"
+ },
+ "CHF": {
+ "name": "Lupila lwa Huuswisi",
+ "symbol": "CHF"
+ },
+ "ZMW": {
+ "name": "Lupila lwa Huzambia",
+ "symbol": "ZMW"
+ },
+ "SZL": {
+ "name": "Lupila lwa Lilangeni",
+ "symbol": "SZL"
+ },
+ "SLL": {
+ "name": "Lupila lwa Lioni",
+ "symbol": "SLL"
+ },
+ "EUR": {
+ "name": "Lupila lwa Yulo",
+ "symbol": "€"
+ },
+ "MDL": {
+ "name": "MDL",
+ "symbol": "MDL"
+ },
+ "MKD": {
+ "name": "MKD",
+ "symbol": "MKD"
+ },
+ "MMK": {
+ "name": "MMK",
+ "symbol": "MMK"
+ },
+ "MNT": {
+ "name": "MNT",
+ "symbol": "MNT"
+ },
+ "MOP": {
+ "name": "MOP",
+ "symbol": "MOP"
+ },
+ "MVR": {
+ "name": "MVR",
+ "symbol": "MVR"
+ },
+ "MXN": {
+ "name": "MXN",
+ "symbol": "MX$"
+ },
+ "MYR": {
+ "name": "MYR",
+ "symbol": "MYR"
+ },
+ "MZN": {
+ "name": "MZN",
+ "symbol": "MZN"
+ },
+ "NIO": {
+ "name": "NIO",
+ "symbol": "NIO"
+ },
+ "NOK": {
+ "name": "NOK",
+ "symbol": "NOK"
+ },
+ "NPR": {
+ "name": "NPR",
+ "symbol": "NPR"
+ },
+ "NZD": {
+ "name": "NZD",
+ "symbol": "NZ$"
+ },
+ "OMR": {
+ "name": "OMR",
+ "symbol": "OMR"
+ },
+ "PAB": {
+ "name": "PAB",
+ "symbol": "PAB"
+ },
+ "PEN": {
+ "name": "PEN",
+ "symbol": "PEN"
+ },
+ "PGK": {
+ "name": "PGK",
+ "symbol": "PGK"
+ },
+ "PHP": {
+ "name": "PHP",
+ "symbol": "PHP"
+ },
+ "PKR": {
+ "name": "PKR",
+ "symbol": "PKR"
+ },
+ "PLN": {
+ "name": "PLN",
+ "symbol": "PLN"
+ },
+ "PYG": {
+ "name": "PYG",
+ "symbol": "PYG"
+ },
+ "QAR": {
+ "name": "QAR",
+ "symbol": "QAR"
+ },
+ "RON": {
+ "name": "RON",
+ "symbol": "RON"
+ },
+ "RSD": {
+ "name": "RSD",
+ "symbol": "RSD"
+ },
+ "RUB": {
+ "name": "RUB",
+ "symbol": "RUB"
+ },
+ "SBD": {
+ "name": "SBD",
+ "symbol": "SBD"
+ },
+ "SEK": {
+ "name": "SEK",
+ "symbol": "SEK"
+ },
+ "SGD": {
+ "name": "SGD",
+ "symbol": "SGD"
+ },
+ "KES": {
+ "name": "Shilingi ya Hukenya",
+ "symbol": "KES"
+ },
+ "TZS": {
+ "name": "Shilingi ya Hutanzania",
+ "symbol": "TSh"
+ },
+ "UGX": {
+ "name": "Shilingi ya Huuganda",
+ "symbol": "UGX"
+ },
+ "SRD": {
+ "name": "SRD",
+ "symbol": "SRD"
+ },
+ "SSP": {
+ "name": "SSP",
+ "symbol": "SSP"
+ },
+ "SVC": {
+ "name": "SVC",
+ "symbol": "SVC"
+ },
+ "SYP": {
+ "name": "SYP",
+ "symbol": "SYP"
+ },
+ "THB": {
+ "name": "THB",
+ "symbol": "THB"
+ },
+ "TJS": {
+ "name": "TJS",
+ "symbol": "TJS"
+ },
+ "TMT": {
+ "name": "TMT",
+ "symbol": "TMT"
+ },
+ "TOP": {
+ "name": "TOP",
+ "symbol": "TOP"
+ },
+ "TRY": {
+ "name": "TRY",
+ "symbol": "TRY"
+ },
+ "TTD": {
+ "name": "TTD",
+ "symbol": "TTD"
+ },
+ "TWD": {
+ "name": "TWD",
+ "symbol": "NT$"
+ },
+ "UAH": {
+ "name": "UAH",
+ "symbol": "UAH"
+ },
+ "UYU": {
+ "name": "UYU",
+ "symbol": "UYU"
+ },
+ "UZS": {
+ "name": "UZS",
+ "symbol": "UZS"
+ },
+ "VEF": {
+ "name": "VEF",
+ "symbol": "VEF"
+ },
+ "VND": {
+ "name": "VND",
+ "symbol": "â‚«"
+ },
+ "VUV": {
+ "name": "VUV",
+ "symbol": "VUV"
+ },
+ "WST": {
+ "name": "WST",
+ "symbol": "WST"
+ },
+ "XCD": {
+ "name": "XCD",
+ "symbol": "EC$"
+ },
+ "XPF": {
+ "name": "XPF",
+ "symbol": "CFPF"
+ },
+ "YER": {
+ "name": "YER",
+ "symbol": "YER"
+ },
+ "ZWL": {
+ "name": "ZWL",
+ "symbol": "ZWL"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/currency/bg.json b/library/intl/resources/currency/bg.json
new file mode 100644
index 000000000..b13dddefa
--- /dev/null
+++ b/library/intl/resources/currency/bg.json
@@ -0,0 +1,634 @@
+{
+ "AUD": {
+ "name": "ÐвÑтралийÑки долар",
+ "symbol": "AUD"
+ },
+ "AZN": {
+ "name": "ÐзербайджанÑки манат",
+ "symbol": "AZN"
+ },
+ "ALL": {
+ "name": "ÐлбанÑки лек",
+ "symbol": "ALL"
+ },
+ "DZD": {
+ "name": "ÐлжирÑки динар",
+ "symbol": "DZD"
+ },
+ "AOA": {
+ "name": "ÐнголÑка кванза",
+ "symbol": "AOA"
+ },
+ "ANG": {
+ "name": "ÐнтилÑки гулден",
+ "symbol": "ANG"
+ },
+ "ARS": {
+ "name": "ÐржентинÑко пеÑо",
+ "symbol": "ARS"
+ },
+ "AMD": {
+ "name": "ÐрменÑки драм",
+ "symbol": "AMD"
+ },
+ "AWG": {
+ "name": "ÐрубÑки флорин",
+ "symbol": "AWG"
+ },
+ "AFN": {
+ "name": "ÐфганиÑтанÑки афган",
+ "symbol": "AFN"
+ },
+ "BDT": {
+ "name": "Бангладешка така",
+ "symbol": "BDT"
+ },
+ "BBD": {
+ "name": "БарбадоÑки долар",
+ "symbol": "BBD"
+ },
+ "BSD": {
+ "name": "БахамÑки долар",
+ "symbol": "BSD"
+ },
+ "BHD": {
+ "name": "БахрейнÑки динар",
+ "symbol": "BHD"
+ },
+ "BYR": {
+ "name": "БеларуÑка рубла",
+ "symbol": "BYR"
+ },
+ "BZD": {
+ "name": "БелизийÑки долар",
+ "symbol": "BZD"
+ },
+ "BMD": {
+ "name": "БермудÑки долар",
+ "symbol": "BMD"
+ },
+ "BOB": {
+ "name": "БоливийÑко боливиано",
+ "symbol": "BOB"
+ },
+ "BAM": {
+ "name": "БоÑненÑка конвертируема марка",
+ "symbol": "BAM"
+ },
+ "BWP": {
+ "name": "БотÑванÑка пула",
+ "symbol": "BWP"
+ },
+ "BRL": {
+ "name": "БразилÑки реал",
+ "symbol": "BRL"
+ },
+ "GBP": {
+ "name": "БританÑка лира",
+ "symbol": "GBP"
+ },
+ "BND": {
+ "name": "БрунейÑки долар",
+ "symbol": "BND"
+ },
+ "BIF": {
+ "name": "БурундийÑки франк",
+ "symbol": "BIF"
+ },
+ "BTN": {
+ "name": "БутанÑки нгултрум",
+ "symbol": "BTN"
+ },
+ "BGN": {
+ "name": "БългарÑки лев",
+ "symbol": "лв."
+ },
+ "VUV": {
+ "name": "ВануатÑко вату",
+ "symbol": "VUV"
+ },
+ "VEF": {
+ "name": "ВенецуелÑки боливар",
+ "symbol": "VEF"
+ },
+ "VND": {
+ "name": "ВиетнамÑки донг",
+ "symbol": "VND"
+ },
+ "GMD": {
+ "name": "ГамбийÑко далаÑи",
+ "symbol": "GMD"
+ },
+ "GHS": {
+ "name": "ГанайÑко Ñеди",
+ "symbol": "GHS"
+ },
+ "GYD": {
+ "name": "ГаÑнÑки долар",
+ "symbol": "GYD"
+ },
+ "GTQ": {
+ "name": "ГватемалÑки кетцал",
+ "symbol": "GTQ"
+ },
+ "GNF": {
+ "name": "ГвинейÑки франк",
+ "symbol": "GNF"
+ },
+ "GIP": {
+ "name": "ГибралтарÑка лира",
+ "symbol": "GIP"
+ },
+ "GEL": {
+ "name": "ГрузинÑки лари",
+ "symbol": "GEL"
+ },
+ "DKK": {
+ "name": "ДатÑка крона",
+ "symbol": "DKK"
+ },
+ "DJF": {
+ "name": "ДжибутÑки франк",
+ "symbol": "DJF"
+ },
+ "AED": {
+ "name": "Дирхам на Обединените арабÑки емирÑтва",
+ "symbol": "AED"
+ },
+ "STD": {
+ "name": "Добра на Сао Томе и ПринÑипи",
+ "symbol": "STD"
+ },
+ "SBD": {
+ "name": "Долар на Соломоновите оÑтрови",
+ "symbol": "SBD"
+ },
+ "TTD": {
+ "name": "Долар на Тринидад и Тобаго",
+ "symbol": "TTD"
+ },
+ "DOP": {
+ "name": "ДоминиканÑко пеÑо",
+ "symbol": "DOP"
+ },
+ "EUR": {
+ "name": "Евро",
+ "symbol": "€"
+ },
+ "EGP": {
+ "name": "ЕгипетÑка лира",
+ "symbol": "EGP"
+ },
+ "ERN": {
+ "name": "ЕритрейÑка накфа",
+ "symbol": "ERN"
+ },
+ "CVE": {
+ "name": "ЕÑкудо на Кабо Верде",
+ "symbol": "CVE"
+ },
+ "ETB": {
+ "name": "ЕтиопÑки бир",
+ "symbol": "ETB"
+ },
+ "ZMW": {
+ "name": "ЗамбийÑка куача",
+ "symbol": "ZMW"
+ },
+ "XOF": {
+ "name": "ЗападноафриканÑки франк",
+ "symbol": "CFA"
+ },
+ "ZWL": {
+ "name": "ЗимбабвийÑки долар (2009)",
+ "symbol": "ZWL"
+ },
+ "ILS": {
+ "name": "ИзраелÑки нов шекел",
+ "symbol": "ILS"
+ },
+ "XCD": {
+ "name": "ИзточнокарибÑки долар",
+ "symbol": "XCD"
+ },
+ "INR": {
+ "name": "ИндийÑка рупиÑ",
+ "symbol": "INR"
+ },
+ "IDR": {
+ "name": "ИндонезийÑка рупиÑ",
+ "symbol": "IDR"
+ },
+ "IQD": {
+ "name": "ИракÑки динар",
+ "symbol": "IQD"
+ },
+ "IRR": {
+ "name": "ИранÑки риал",
+ "symbol": "IRR"
+ },
+ "ISK": {
+ "name": "ИÑландÑка крона",
+ "symbol": "ISK"
+ },
+ "YER": {
+ "name": "ЙеменÑки риал",
+ "symbol": "YER"
+ },
+ "JOD": {
+ "name": "ЙорданÑки динар",
+ "symbol": "JOD"
+ },
+ "KZT": {
+ "name": "КазахÑтанÑко тенге",
+ "symbol": "KZT"
+ },
+ "KYD": {
+ "name": "Кайманов долар",
+ "symbol": "KYD"
+ },
+ "KHR": {
+ "name": "КамбоджанÑки риел",
+ "symbol": "KHR"
+ },
+ "CAD": {
+ "name": "КанадÑки долар",
+ "symbol": "CAD"
+ },
+ "QAR": {
+ "name": "КатарÑки риал",
+ "symbol": "QAR"
+ },
+ "KES": {
+ "name": "КенийÑки шилинг",
+ "symbol": "KES"
+ },
+ "KGS": {
+ "name": "КиргизÑтанÑки Ñом",
+ "symbol": "KGS"
+ },
+ "CNY": {
+ "name": "КитайÑки юан",
+ "symbol": "CNY"
+ },
+ "COP": {
+ "name": "КолумбийÑко пеÑо",
+ "symbol": "COP"
+ },
+ "KMF": {
+ "name": "КоморÑки франк",
+ "symbol": "KMF"
+ },
+ "CDF": {
+ "name": "КонгоанÑки франк",
+ "symbol": "CDF"
+ },
+ "CRC": {
+ "name": "КоÑтариканÑки колон",
+ "symbol": "CRC"
+ },
+ "CUC": {
+ "name": "КубинÑко конвертируемо пеÑо",
+ "symbol": "CUC"
+ },
+ "CUP": {
+ "name": "КубинÑко пеÑо",
+ "symbol": "CUP"
+ },
+ "KWD": {
+ "name": "КувейтÑки динар",
+ "symbol": "KWD"
+ },
+ "LAK": {
+ "name": "ЛаоÑки кип",
+ "symbol": "LAK"
+ },
+ "LSL": {
+ "name": "ЛеÑотÑко лоти",
+ "symbol": "LSL"
+ },
+ "LRD": {
+ "name": "ЛиберийÑки долар",
+ "symbol": "LRD"
+ },
+ "LYD": {
+ "name": "ЛибийÑки динар",
+ "symbol": "LYD"
+ },
+ "LBP": {
+ "name": "ЛиванÑка лира",
+ "symbol": "LBP"
+ },
+ "SHP": {
+ "name": "Лира на Света Елена",
+ "symbol": "SHP"
+ },
+ "LTL": {
+ "name": "ЛитовÑки литаÑ",
+ "symbol": "LTL"
+ },
+ "MRO": {
+ "name": "МавританÑка угиÑ",
+ "symbol": "MRO"
+ },
+ "MUR": {
+ "name": "МаврицийÑка рупиÑ",
+ "symbol": "MUR"
+ },
+ "MKD": {
+ "name": "МакедонÑки денар",
+ "symbol": "MKD"
+ },
+ "MWK": {
+ "name": "МалавийÑка квача",
+ "symbol": "MWK"
+ },
+ "MYR": {
+ "name": "МалайзийÑки рингит",
+ "symbol": "MYR"
+ },
+ "MGA": {
+ "name": "Малгашко ариари",
+ "symbol": "MGA"
+ },
+ "MVR": {
+ "name": "МалдивÑка руфиÑ",
+ "symbol": "MVR"
+ },
+ "MAD": {
+ "name": "МароканÑки дирхам",
+ "symbol": "MAD"
+ },
+ "MXN": {
+ "name": "МекÑиканÑко пеÑо",
+ "symbol": "MXN"
+ },
+ "MMK": {
+ "name": "МианмарÑки киÑÑ‚",
+ "symbol": "MMK"
+ },
+ "MZN": {
+ "name": "МозамбикÑки метикал",
+ "symbol": "MZN"
+ },
+ "MDL": {
+ "name": "МолдовÑко леу",
+ "symbol": "MDL"
+ },
+ "MNT": {
+ "name": "МонголÑки тугрик",
+ "symbol": "MNT"
+ },
+ "NAD": {
+ "name": "ÐамибийÑки долар",
+ "symbol": "NAD"
+ },
+ "NPR": {
+ "name": "ÐепалÑка рупиÑ",
+ "symbol": "NPR"
+ },
+ "NGN": {
+ "name": "ÐигерийÑка найра",
+ "symbol": "NGN"
+ },
+ "NIO": {
+ "name": "ÐикарагуанÑка кордоба",
+ "symbol": "NIO"
+ },
+ "NZD": {
+ "name": "ÐовозеландÑки долар",
+ "symbol": "NZD"
+ },
+ "NOK": {
+ "name": "Ðорвежка крона",
+ "symbol": "NOK"
+ },
+ "OMR": {
+ "name": "ОманÑки риал",
+ "symbol": "OMR"
+ },
+ "PKR": {
+ "name": "ПакиÑтанÑка рупиÑ",
+ "symbol": "PKR"
+ },
+ "PAB": {
+ "name": "ПанамÑка балбоа",
+ "symbol": "PAB"
+ },
+ "PGK": {
+ "name": "Папуа-новогвинейÑка кина",
+ "symbol": "PGK"
+ },
+ "PYG": {
+ "name": "ПарагвайÑко гуарани",
+ "symbol": "PYG"
+ },
+ "MOP": {
+ "name": "Патака на Макао",
+ "symbol": "MOP"
+ },
+ "PEN": {
+ "name": "ПеруанÑки нов Ñол",
+ "symbol": "PEN"
+ },
+ "PLN": {
+ "name": "ПолÑка злота",
+ "symbol": "PLN"
+ },
+ "RWF": {
+ "name": "РуандÑки франк",
+ "symbol": "RWF"
+ },
+ "RON": {
+ "name": "РумънÑка леÑ",
+ "symbol": "RON"
+ },
+ "RUB": {
+ "name": "РуÑка рубла",
+ "symbol": "руб."
+ },
+ "SVC": {
+ "name": "СалвадорÑки колон",
+ "symbol": "SVC"
+ },
+ "WST": {
+ "name": "СамоанÑка тала",
+ "symbol": "WST"
+ },
+ "SAR": {
+ "name": "СаудитÑкоарабÑки риал",
+ "symbol": "SAR"
+ },
+ "SZL": {
+ "name": "СвазилендÑки лилангени",
+ "symbol": "SZL"
+ },
+ "KPW": {
+ "name": "СевернокорейÑки вон",
+ "symbol": "KPW"
+ },
+ "SCR": {
+ "name": "СейшелÑка рупиÑ",
+ "symbol": "SCR"
+ },
+ "SLL": {
+ "name": "СиералеонÑко леоне",
+ "symbol": "SLL"
+ },
+ "SGD": {
+ "name": "СингапурÑки долар",
+ "symbol": "SGD"
+ },
+ "SYP": {
+ "name": "СирийÑка лира",
+ "symbol": "SYP"
+ },
+ "SOS": {
+ "name": "СомалийÑки шилинг",
+ "symbol": "SOS"
+ },
+ "RSD": {
+ "name": "СръбÑки динар",
+ "symbol": "RSD"
+ },
+ "SDG": {
+ "name": "СуданÑка лира",
+ "symbol": "SDG"
+ },
+ "SRD": {
+ "name": "СуринамÑки долар",
+ "symbol": "SRD"
+ },
+ "TJS": {
+ "name": "ТаджикиÑтанÑки Ñомони",
+ "symbol": "TJS"
+ },
+ "TWD": {
+ "name": "ТайванÑки долар",
+ "symbol": "TWD"
+ },
+ "THB": {
+ "name": "ТайландÑки бат",
+ "symbol": "THB"
+ },
+ "TZS": {
+ "name": "ТанзанийÑки шилинг",
+ "symbol": "TZS"
+ },
+ "TOP": {
+ "name": "ТонганÑка паанга",
+ "symbol": "TOP"
+ },
+ "TND": {
+ "name": "ТунизийÑки динар",
+ "symbol": "TND"
+ },
+ "TMT": {
+ "name": "ТуркменÑки манат",
+ "symbol": "TMT"
+ },
+ "TRY": {
+ "name": "ТурÑка лира",
+ "symbol": "TRY"
+ },
+ "UGX": {
+ "name": "УгандÑки шилинг",
+ "symbol": "UGX"
+ },
+ "UZS": {
+ "name": "УзбекÑки Ñум",
+ "symbol": "UZS"
+ },
+ "UAH": {
+ "name": "УкраинÑка хривнÑ",
+ "symbol": "UAH"
+ },
+ "HUF": {
+ "name": "УнгарÑки форинт",
+ "symbol": "HUF"
+ },
+ "UYU": {
+ "name": "УругвайÑко пеÑо",
+ "symbol": "UYU"
+ },
+ "FJD": {
+ "name": "ФиджийÑки долар",
+ "symbol": "FJD"
+ },
+ "PHP": {
+ "name": "ФилипинÑко пеÑо",
+ "symbol": "PHP"
+ },
+ "FKP": {
+ "name": "ФолклендÑка лира",
+ "symbol": "FKP"
+ },
+ "XPF": {
+ "name": "ФренÑкополинезийÑки франк",
+ "symbol": "CFPF"
+ },
+ "HTG": {
+ "name": "ХаитÑки гурд",
+ "symbol": "HTG"
+ },
+ "HNL": {
+ "name": "ХондураÑка лемпира",
+ "symbol": "HNL"
+ },
+ "HKD": {
+ "name": "ХонконгÑки долар",
+ "symbol": "HKD"
+ },
+ "HRK": {
+ "name": "ХърватÑка куна",
+ "symbol": "HRK"
+ },
+ "XAF": {
+ "name": "ЦентралноафриканÑки франк",
+ "symbol": "FCFA"
+ },
+ "CZK": {
+ "name": "Чешка крона",
+ "symbol": "CZK"
+ },
+ "CLP": {
+ "name": "ЧилийÑко пеÑо",
+ "symbol": "CLP"
+ },
+ "SEK": {
+ "name": "ШведÑка крона",
+ "symbol": "SEK"
+ },
+ "CHF": {
+ "name": "ШвейцарÑки франк",
+ "symbol": "CHF"
+ },
+ "LKR": {
+ "name": "ШриланкÑка рупиÑ",
+ "symbol": "LKR"
+ },
+ "USD": {
+ "name": "ЩатÑки долар",
+ "symbol": "щ.д."
+ },
+ "ZAR": {
+ "name": "ЮжноафриканÑки ранд",
+ "symbol": "ZAR"
+ },
+ "KRW": {
+ "name": "ЮжнокорейÑки вон",
+ "symbol": "KRW"
+ },
+ "SSP": {
+ "name": "ЮжноÑуданÑка лира",
+ "symbol": "SSP"
+ },
+ "JMD": {
+ "name": "ЯмайÑки долар",
+ "symbol": "JMD"
+ },
+ "JPY": {
+ "name": "ЯпонÑка йена",
+ "symbol": "JPY"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/currency/bm.json b/library/intl/resources/currency/bm.json
new file mode 100644
index 000000000..069cf70b5
--- /dev/null
+++ b/library/intl/resources/currency/bm.json
@@ -0,0 +1,634 @@
+{
+ "AFN": {
+ "name": "AFN",
+ "symbol": "AFN"
+ },
+ "DZD": {
+ "name": "alizeri Dinar",
+ "symbol": "DZD"
+ },
+ "ALL": {
+ "name": "ALL",
+ "symbol": "ALL"
+ },
+ "AMD": {
+ "name": "AMD",
+ "symbol": "AMD"
+ },
+ "USD": {
+ "name": "ameriki Dolar",
+ "symbol": "US$"
+ },
+ "ANG": {
+ "name": "ANG",
+ "symbol": "ANG"
+ },
+ "GBP": {
+ "name": "angilÉ› Livri Siterlingi",
+ "symbol": "£"
+ },
+ "AOA": {
+ "name": "angola Kwanza",
+ "symbol": "AOA"
+ },
+ "AED": {
+ "name": "arabu mara kafoli Diram",
+ "symbol": "AED"
+ },
+ "ARS": {
+ "name": "ARS",
+ "symbol": "ARS"
+ },
+ "AWG": {
+ "name": "AWG",
+ "symbol": "AWG"
+ },
+ "AZN": {
+ "name": "AZN",
+ "symbol": "AZN"
+ },
+ "BAM": {
+ "name": "BAM",
+ "symbol": "BAM"
+ },
+ "BHD": {
+ "name": "bareyini Dinar",
+ "symbol": "BHD"
+ },
+ "BBD": {
+ "name": "BBD",
+ "symbol": "BBD"
+ },
+ "BDT": {
+ "name": "BDT",
+ "symbol": "BDT"
+ },
+ "BGN": {
+ "name": "BGN",
+ "symbol": "BGN"
+ },
+ "BMD": {
+ "name": "BMD",
+ "symbol": "BMD"
+ },
+ "BND": {
+ "name": "BND",
+ "symbol": "BND"
+ },
+ "BOB": {
+ "name": "BOB",
+ "symbol": "BOB"
+ },
+ "BWP": {
+ "name": "bɔtisiwana Pula",
+ "symbol": "BWP"
+ },
+ "BRL": {
+ "name": "BRL",
+ "symbol": "R$"
+ },
+ "BSD": {
+ "name": "BSD",
+ "symbol": "BSD"
+ },
+ "BTN": {
+ "name": "BTN",
+ "symbol": "BTN"
+ },
+ "BIF": {
+ "name": "burundi Fraŋ",
+ "symbol": "BIF"
+ },
+ "BYR": {
+ "name": "BYR",
+ "symbol": "BYR"
+ },
+ "BZD": {
+ "name": "BZD",
+ "symbol": "BZD"
+ },
+ "CVE": {
+ "name": "capivɛrdi Esekudo",
+ "symbol": "CVE"
+ },
+ "CLP": {
+ "name": "CLP",
+ "symbol": "CLP"
+ },
+ "COP": {
+ "name": "COP",
+ "symbol": "COP"
+ },
+ "CRC": {
+ "name": "CRC",
+ "symbol": "CRC"
+ },
+ "CUC": {
+ "name": "CUC",
+ "symbol": "CUC"
+ },
+ "CUP": {
+ "name": "CUP",
+ "symbol": "CUP"
+ },
+ "CZK": {
+ "name": "CZK",
+ "symbol": "CZK"
+ },
+ "DKK": {
+ "name": "DKK",
+ "symbol": "DKK"
+ },
+ "DOP": {
+ "name": "DOP",
+ "symbol": "DOP"
+ },
+ "ERN": {
+ "name": "eritere Nafika",
+ "symbol": "ERN"
+ },
+ "EUR": {
+ "name": "ero",
+ "symbol": "€"
+ },
+ "ETB": {
+ "name": "etiopi Bir",
+ "symbol": "ETB"
+ },
+ "EGP": {
+ "name": "eziputi Livri",
+ "symbol": "EGP"
+ },
+ "SHP": {
+ "name": "ÆlÉ›ni-Senu Livri",
+ "symbol": "SHP"
+ },
+ "INR": {
+ "name": "Ændu Rupi",
+ "symbol": "₹"
+ },
+ "FJD": {
+ "name": "FJD",
+ "symbol": "FJD"
+ },
+ "FKP": {
+ "name": "FKP",
+ "symbol": "FKP"
+ },
+ "GMD": {
+ "name": "gambi Dalasi",
+ "symbol": "GMD"
+ },
+ "GEL": {
+ "name": "GEL",
+ "symbol": "GEL"
+ },
+ "GHS": {
+ "name": "GHS",
+ "symbol": "GHS"
+ },
+ "GIP": {
+ "name": "GIP",
+ "symbol": "GIP"
+ },
+ "GNF": {
+ "name": "GNF",
+ "symbol": "GNF"
+ },
+ "GTQ": {
+ "name": "GTQ",
+ "symbol": "GTQ"
+ },
+ "GYD": {
+ "name": "GYD",
+ "symbol": "GYD"
+ },
+ "HKD": {
+ "name": "HKD",
+ "symbol": "HK$"
+ },
+ "HNL": {
+ "name": "HNL",
+ "symbol": "HNL"
+ },
+ "HRK": {
+ "name": "HRK",
+ "symbol": "HRK"
+ },
+ "HTG": {
+ "name": "HTG",
+ "symbol": "HTG"
+ },
+ "HUF": {
+ "name": "HUF",
+ "symbol": "HUF"
+ },
+ "IDR": {
+ "name": "IDR",
+ "symbol": "IDR"
+ },
+ "ILS": {
+ "name": "ILS",
+ "symbol": "₪"
+ },
+ "IQD": {
+ "name": "IQD",
+ "symbol": "IQD"
+ },
+ "IRR": {
+ "name": "IRR",
+ "symbol": "IRR"
+ },
+ "ISK": {
+ "name": "ISK",
+ "symbol": "ISK"
+ },
+ "DJF": {
+ "name": "jibuti Fraŋ",
+ "symbol": "DJF"
+ },
+ "JMD": {
+ "name": "JMD",
+ "symbol": "JMD"
+ },
+ "JOD": {
+ "name": "JOD",
+ "symbol": "JOD"
+ },
+ "CAD": {
+ "name": "kanada Dolar",
+ "symbol": "CA$"
+ },
+ "KES": {
+ "name": "keniya Siling",
+ "symbol": "KES"
+ },
+ "KGS": {
+ "name": "KGS",
+ "symbol": "KGS"
+ },
+ "KHR": {
+ "name": "KHR",
+ "symbol": "KHR"
+ },
+ "KMF": {
+ "name": "komɔri Fraŋ",
+ "symbol": "KMF"
+ },
+ "CDF": {
+ "name": "kongole Fraŋ",
+ "symbol": "CDF"
+ },
+ "KPW": {
+ "name": "KPW",
+ "symbol": "KPW"
+ },
+ "KRW": {
+ "name": "KRW",
+ "symbol": "â‚©"
+ },
+ "KWD": {
+ "name": "KWD",
+ "symbol": "KWD"
+ },
+ "KYD": {
+ "name": "KYD",
+ "symbol": "KYD"
+ },
+ "KZT": {
+ "name": "KZT",
+ "symbol": "KZT"
+ },
+ "LAK": {
+ "name": "LAK",
+ "symbol": "LAK"
+ },
+ "LBP": {
+ "name": "LBP",
+ "symbol": "LBP"
+ },
+ "LSL": {
+ "name": "lesoto Loti",
+ "symbol": "LSL"
+ },
+ "LRD": {
+ "name": "liberiya Dolar",
+ "symbol": "LRD"
+ },
+ "LYD": {
+ "name": "libi Dinar",
+ "symbol": "LYD"
+ },
+ "LKR": {
+ "name": "LKR",
+ "symbol": "LKR"
+ },
+ "LTL": {
+ "name": "LTL",
+ "symbol": "LTL"
+ },
+ "MGA": {
+ "name": "madagasikari Fraŋ",
+ "symbol": "MGA"
+ },
+ "MWK": {
+ "name": "malawi Kwaca",
+ "symbol": "MWK"
+ },
+ "MAD": {
+ "name": "marɔku Diram",
+ "symbol": "MAD"
+ },
+ "MDL": {
+ "name": "MDL",
+ "symbol": "MDL"
+ },
+ "MKD": {
+ "name": "MKD",
+ "symbol": "MKD"
+ },
+ "MMK": {
+ "name": "MMK",
+ "symbol": "MMK"
+ },
+ "MNT": {
+ "name": "MNT",
+ "symbol": "MNT"
+ },
+ "MOP": {
+ "name": "MOP",
+ "symbol": "MOP"
+ },
+ "MUR": {
+ "name": "morisi Rupi",
+ "symbol": "MUR"
+ },
+ "MRO": {
+ "name": "mɔritani Uguwiya",
+ "symbol": "MRO"
+ },
+ "MVR": {
+ "name": "MVR",
+ "symbol": "MVR"
+ },
+ "MXN": {
+ "name": "MXN",
+ "symbol": "MX$"
+ },
+ "MYR": {
+ "name": "MYR",
+ "symbol": "MYR"
+ },
+ "MZN": {
+ "name": "MZN",
+ "symbol": "MZN"
+ },
+ "NAD": {
+ "name": "namibi Dolar",
+ "symbol": "NAD"
+ },
+ "NIO": {
+ "name": "NIO",
+ "symbol": "NIO"
+ },
+ "NGN": {
+ "name": "nizeriya Nɛra",
+ "symbol": "NGN"
+ },
+ "NOK": {
+ "name": "NOK",
+ "symbol": "NOK"
+ },
+ "NPR": {
+ "name": "NPR",
+ "symbol": "NPR"
+ },
+ "NZD": {
+ "name": "NZD",
+ "symbol": "NZ$"
+ },
+ "OMR": {
+ "name": "OMR",
+ "symbol": "OMR"
+ },
+ "AUD": {
+ "name": "ositirali Dolar",
+ "symbol": "A$"
+ },
+ "PAB": {
+ "name": "PAB",
+ "symbol": "PAB"
+ },
+ "PEN": {
+ "name": "PEN",
+ "symbol": "PEN"
+ },
+ "PGK": {
+ "name": "PGK",
+ "symbol": "PGK"
+ },
+ "PHP": {
+ "name": "PHP",
+ "symbol": "PHP"
+ },
+ "PKR": {
+ "name": "PKR",
+ "symbol": "PKR"
+ },
+ "PLN": {
+ "name": "PLN",
+ "symbol": "PLN"
+ },
+ "PYG": {
+ "name": "PYG",
+ "symbol": "PYG"
+ },
+ "QAR": {
+ "name": "QAR",
+ "symbol": "QAR"
+ },
+ "RON": {
+ "name": "RON",
+ "symbol": "RON"
+ },
+ "RSD": {
+ "name": "RSD",
+ "symbol": "RSD"
+ },
+ "RUB": {
+ "name": "RUB",
+ "symbol": "RUB"
+ },
+ "RWF": {
+ "name": "ruwanda Fraŋ",
+ "symbol": "RWF"
+ },
+ "STD": {
+ "name": "sawotome Dobra",
+ "symbol": "STD"
+ },
+ "SAR": {
+ "name": "sawudiya Riyal",
+ "symbol": "SAR"
+ },
+ "SBD": {
+ "name": "SBD",
+ "symbol": "SBD"
+ },
+ "XOF": {
+ "name": "sefa Fraŋ (BCEAO)",
+ "symbol": "CFA"
+ },
+ "XAF": {
+ "name": "sefa Fraŋ (BEAC)",
+ "symbol": "FCFA"
+ },
+ "SEK": {
+ "name": "SEK",
+ "symbol": "SEK"
+ },
+ "SCR": {
+ "name": "sesɛli Rupi",
+ "symbol": "SCR"
+ },
+ "SGD": {
+ "name": "SGD",
+ "symbol": "SGD"
+ },
+ "CNY": {
+ "name": "siniwa Yuwan",
+ "symbol": "CNÂ¥"
+ },
+ "SLL": {
+ "name": "siyeralewɔni Lewɔni",
+ "symbol": "SLL"
+ },
+ "SOS": {
+ "name": "somali Siling",
+ "symbol": "SOS"
+ },
+ "SRD": {
+ "name": "SRD",
+ "symbol": "SRD"
+ },
+ "SSP": {
+ "name": "SSP",
+ "symbol": "SSP"
+ },
+ "ZAR": {
+ "name": "sudafriki Randi",
+ "symbol": "ZAR"
+ },
+ "SDG": {
+ "name": "sudani Dinar",
+ "symbol": "SDG"
+ },
+ "CHF": {
+ "name": "suwisi Fraŋ",
+ "symbol": "CHF"
+ },
+ "SVC": {
+ "name": "SVC",
+ "symbol": "SVC"
+ },
+ "SZL": {
+ "name": "swazilandi Lilangeni",
+ "symbol": "SZL"
+ },
+ "SYP": {
+ "name": "SYP",
+ "symbol": "SYP"
+ },
+ "TZS": {
+ "name": "tanzani Siling",
+ "symbol": "TZS"
+ },
+ "THB": {
+ "name": "THB",
+ "symbol": "THB"
+ },
+ "TJS": {
+ "name": "TJS",
+ "symbol": "TJS"
+ },
+ "TMT": {
+ "name": "TMT",
+ "symbol": "TMT"
+ },
+ "TOP": {
+ "name": "TOP",
+ "symbol": "TOP"
+ },
+ "TRY": {
+ "name": "TRY",
+ "symbol": "TRY"
+ },
+ "TTD": {
+ "name": "TTD",
+ "symbol": "TTD"
+ },
+ "TND": {
+ "name": "tunizi Dinar",
+ "symbol": "TND"
+ },
+ "TWD": {
+ "name": "TWD",
+ "symbol": "NT$"
+ },
+ "UAH": {
+ "name": "UAH",
+ "symbol": "UAH"
+ },
+ "UGX": {
+ "name": "uganda Siling",
+ "symbol": "UGX"
+ },
+ "UYU": {
+ "name": "UYU",
+ "symbol": "UYU"
+ },
+ "UZS": {
+ "name": "UZS",
+ "symbol": "UZS"
+ },
+ "VEF": {
+ "name": "VEF",
+ "symbol": "VEF"
+ },
+ "VND": {
+ "name": "VND",
+ "symbol": "â‚«"
+ },
+ "VUV": {
+ "name": "VUV",
+ "symbol": "VUV"
+ },
+ "WST": {
+ "name": "WST",
+ "symbol": "WST"
+ },
+ "XCD": {
+ "name": "XCD",
+ "symbol": "EC$"
+ },
+ "XPF": {
+ "name": "XPF",
+ "symbol": "CFPF"
+ },
+ "YER": {
+ "name": "YER",
+ "symbol": "YER"
+ },
+ "ZMW": {
+ "name": "zambi Kwaca",
+ "symbol": "ZMW"
+ },
+ "JPY": {
+ "name": "zapɔne Yɛn",
+ "symbol": "JPÂ¥"
+ },
+ "ZWL": {
+ "name": "ZWL",
+ "symbol": "ZWL"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/currency/bn.json b/library/intl/resources/currency/bn.json
new file mode 100644
index 000000000..2ce66d769
--- /dev/null
+++ b/library/intl/resources/currency/bn.json
@@ -0,0 +1,634 @@
+{
+ "AUD": {
+ "name": "অসà§à¦Ÿà§à¦°à§‡à¦²à¦¿à¦¯à¦¼à¦¾à¦¨ ডলার",
+ "symbol": "A$"
+ },
+ "ISK": {
+ "name": "আইসলà§à¦¯à¦¾à¦¨à§à¦¡ কà§à¦°à§Œà¦¨",
+ "symbol": "ISK"
+ },
+ "AZN": {
+ "name": "আজারবাইজান মানাত",
+ "symbol": "AZN"
+ },
+ "AFN": {
+ "name": "আফগান আফগানি",
+ "symbol": "AFN"
+ },
+ "AMD": {
+ "name": "আরমেনিয়ান দà§à¦°à¦¾à¦®",
+ "symbol": "AMD"
+ },
+ "AWG": {
+ "name": "আরà§à¦¬à¦¾ গিলà§à¦¡à¦¾à¦°",
+ "symbol": "AWG"
+ },
+ "ARS": {
+ "name": "আরà§à¦œà§‡à¦¨à§à¦Ÿà¦¿à¦¨à¦¾ পেসো",
+ "symbol": "ARS"
+ },
+ "DZD": {
+ "name": "আলজেরীয় দিনার",
+ "symbol": "DZD"
+ },
+ "ALL": {
+ "name": "আলবেনিয়ান লেক",
+ "symbol": "ALL"
+ },
+ "UAH": {
+ "name": "ইউকà§à¦°à§‡à¦‡à¦¨ হৃভনিয়া",
+ "symbol": "UAH"
+ },
+ "EUR": {
+ "name": "ইউরো",
+ "symbol": "€"
+ },
+ "ETB": {
+ "name": "ইথিওপিয়ান বির",
+ "symbol": "ETB"
+ },
+ "IDR": {
+ "name": "ইনà§à¦¦à§‹à¦¨à§‡à¦¶à¦¿à¦¯à¦¼à¦¾à¦¨ রà§à¦ªà¦¿à¦¯à¦¼à¦¾à¦¹",
+ "symbol": "IDR"
+ },
+ "YER": {
+ "name": "ইয়েমেনি রিয়াল",
+ "symbol": "YER"
+ },
+ "IQD": {
+ "name": "ইরাকি দিনার",
+ "symbol": "IQD"
+ },
+ "IRR": {
+ "name": "ইরানিয়ান রিয়াল",
+ "symbol": "IRR"
+ },
+ "ILS": {
+ "name": "ইসà§à¦°à¦¾à¦‡à¦²à¦¿ নতà§à¦¨ শেকেল",
+ "symbol": "₪"
+ },
+ "UGX": {
+ "name": "উগানà§à¦¡à¦¾à¦¨ শিলিং",
+ "symbol": "UGX"
+ },
+ "UZS": {
+ "name": "উজবেকিসà§à¦¤à¦¾à¦¨à¦¿ সোম",
+ "symbol": "UZS"
+ },
+ "KPW": {
+ "name": "উতà§à¦¤à¦° কোরিয়ার ওন",
+ "symbol": "KPW"
+ },
+ "UYU": {
+ "name": "উরà§à¦—à§à¦¯à¦¼à§‡ পেসো",
+ "symbol": "UYU"
+ },
+ "ERN": {
+ "name": "à¦à¦°à¦¿à¦Ÿà§à¦°à¦¿à¦¯à¦¼à§‡à¦¨ নাকফা",
+ "symbol": "ERN"
+ },
+ "SVC": {
+ "name": "à¦à¦² সà§à¦¯à¦¾à¦²à¦­à§‹à¦¡à§‹à¦° কোলোন",
+ "symbol": "SVC"
+ },
+ "AOA": {
+ "name": "à¦à§à¦¯à¦¾à¦™à§à¦—োলান কওয়ানজা",
+ "symbol": "AOA"
+ },
+ "OMR": {
+ "name": "ওমানি রিয়াল",
+ "symbol": "OMR"
+ },
+ "CDF": {
+ "name": "কঙà§à¦—োলিস ফà§à¦°à§à¦¯à¦¾à¦™à§à¦•",
+ "symbol": "CDF"
+ },
+ "KHR": {
+ "name": "কমà§à¦¬à§‹à¦¡à¦¿à¦¯à¦¼à¦¾à¦¨ রিয়েল",
+ "symbol": "KHR"
+ },
+ "KMF": {
+ "name": "কমà§à¦¬à§‹à¦°à§‹ ফà§à¦°à¦¾à¦™à§à¦•",
+ "symbol": "KMF"
+ },
+ "COP": {
+ "name": "কলোমà§à¦¬à¦¿à¦¯à¦¼à¦¾à¦¨ পেসো",
+ "symbol": "COP"
+ },
+ "KZT": {
+ "name": "কাজাকà§à¦¸à¦Ÿà¦¾à¦¨ টেঙà§à¦—ে",
+ "symbol": "KZT"
+ },
+ "QAR": {
+ "name": "কাতার রিয়à§à¦¯à¦¾à¦²",
+ "symbol": "QAR"
+ },
+ "CAD": {
+ "name": "কানাডিয়ান ডলার",
+ "symbol": "CA$"
+ },
+ "CUP": {
+ "name": "কিউবান পেসো",
+ "symbol": "CUP"
+ },
+ "CUC": {
+ "name": "কিউবান রূপানà§à¦¤à¦°à¦¯à§‹à¦—à§à¦¯ পেসো",
+ "symbol": "CUC"
+ },
+ "KGS": {
+ "name": "কিরগিজসà§à¦¤à¦¾à¦¨ সোম",
+ "symbol": "KGS"
+ },
+ "KWD": {
+ "name": "কà§à¦¯à¦¼à§‡à¦¤à¦¿ দিনার",
+ "symbol": "KWD"
+ },
+ "KES": {
+ "name": "কেনিয়ান শিলিং",
+ "symbol": "KES"
+ },
+ "CVE": {
+ "name": "কেপ ভারà§à¦¦à§‡ à¦à¦¸à¦•à§à¦¡à§‹",
+ "symbol": "CVE"
+ },
+ "KYD": {
+ "name": "কেমà§à¦¯à¦¾à¦¨ দà§à¦¬à§€à¦ªà¦ªà§à¦žà§à¦œà§‡à¦° ডলার",
+ "symbol": "KYD"
+ },
+ "CRC": {
+ "name": "কোসà§à¦Ÿà¦¾ রিকা কোলোন",
+ "symbol": "CRC"
+ },
+ "HRK": {
+ "name": "কà§à¦°à§‹à¦¯à¦¼à§‡à¦¶à¦¿à¦¯à¦¼à¦¾à¦¨ কà§à¦¨à¦¾",
+ "symbol": "HRK"
+ },
+ "GYD": {
+ "name": "গাইয়েনা ডলার",
+ "symbol": "GYD"
+ },
+ "GMD": {
+ "name": "গামà§à¦¬à¦¿à¦¯à¦¼à¦¾ ডালাসি",
+ "symbol": "GMD"
+ },
+ "GNF": {
+ "name": "গিনি ফà§à¦°à¦¾à¦™à§à¦•",
+ "symbol": "GNF"
+ },
+ "GTQ": {
+ "name": "গà§à¦¯à¦¼à¦¾à¦¤à§‡à¦®à¦¾à¦²à¦¾ কà§à¦¯à¦¼à§‡à§Žà¦œà¦¾à¦²",
+ "symbol": "GTQ"
+ },
+ "GHS": {
+ "name": "ঘানা সেডি",
+ "symbol": "GHS"
+ },
+ "CLP": {
+ "name": "চিলি পেসো",
+ "symbol": "CLP"
+ },
+ "CNY": {
+ "name": "চীনা য়à§à¦¯à¦¼à¦¾à¦¨",
+ "symbol": "CNÂ¥"
+ },
+ "CZK": {
+ "name": "চেকোসà§à¦²à§‹à¦­à¦¾à¦• কোরà§à¦¨à¦¾",
+ "symbol": "CZK"
+ },
+ "GEL": {
+ "name": "জরà§à¦œà¦¿à¦¯à¦¼à¦¾à¦¨ লারি",
+ "symbol": "GEL"
+ },
+ "JOD": {
+ "name": "জরà§à¦¡à¦¾à¦¨à¦¿à¦¯à¦¼à¦¾à¦¨ দিনার",
+ "symbol": "JOD"
+ },
+ "JPY": {
+ "name": "জাপানি ইয়েন",
+ "symbol": "JPÂ¥"
+ },
+ "ZMW": {
+ "name": "জামà§à¦¬à¦¿à¦¯à¦¼à¦¾à¦¨ কওয়াচা",
+ "symbol": "ZMW"
+ },
+ "DJF": {
+ "name": "জিবà§à¦¤à¦¿ ফà§à¦°à¦¾à¦™à§à¦•",
+ "symbol": "DJF"
+ },
+ "GIP": {
+ "name": "জিবà§à¦°à¦¾à¦²à§à¦Ÿà¦¾à¦° পাউনà§à¦¡",
+ "symbol": "GIP"
+ },
+ "ZWL": {
+ "name": "জিমà§à¦¬à¦¾à¦¬à§à¦¯à¦¼à§‡ ডলার (২০০৯)",
+ "symbol": "ZWL"
+ },
+ "JMD": {
+ "name": "জà§à¦¯à¦¾à¦®à¦¾à¦‡à¦•à¦¾à¦¨ ডলার",
+ "symbol": "JMD"
+ },
+ "TOP": {
+ "name": "টোঙà§à¦—া পা’আঙà§à¦—া",
+ "symbol": "TOP"
+ },
+ "DOP": {
+ "name": "ডোমিনিকান পেসো",
+ "symbol": "DOP"
+ },
+ "DKK": {
+ "name": "ডà§à¦¯à¦¾à¦¨à¦¿à¦¶ কà§à¦°à§Œà¦¨",
+ "symbol": "DKK"
+ },
+ "TJS": {
+ "name": "তাজিকিসà§à¦¤à¦¾à¦¨ সোমোনি",
+ "symbol": "TJS"
+ },
+ "TZS": {
+ "name": "তাঞà§à¦œà¦¨à¦¿à¦¯à¦¼à¦¾ শিলিং",
+ "symbol": "TZS"
+ },
+ "TND": {
+ "name": "তিউনেশিয়ান দিনার",
+ "symbol": "TND"
+ },
+ "TMT": {
+ "name": "তà§à¦°à§à¦•à¦®à§‡à¦¨à¦¿à¦¸à§à¦¤à¦¾à¦¨ নতà§à¦¨ মানত",
+ "symbol": "TMT"
+ },
+ "TRY": {
+ "name": "তà§à¦°à§à¦•à¦¿ লিরা",
+ "symbol": "TRY"
+ },
+ "TTD": {
+ "name": "তà§à¦°à¦¿à¦¨à¦¿à¦¦à¦¾à¦¦ à¦à¦¬à¦‚ টোবাগো ডলার",
+ "symbol": "TTD"
+ },
+ "THB": {
+ "name": "থাই বাত",
+ "symbol": "฿"
+ },
+ "ZAR": {
+ "name": "দকà§à¦·à¦¿à¦£ আফà§à¦°à¦¿à¦•à¦¾à¦¨ রেনà§à¦¡",
+ "symbol": "ZAR"
+ },
+ "KRW": {
+ "name": "দকà§à¦·à¦¿à¦£ কোরিয়ান ওন",
+ "symbol": "â‚©"
+ },
+ "SSP": {
+ "name": "দকà§à¦·à¦¿à¦£ সà§à¦¦à¦¾à¦¨à¦¿ পাউনà§à¦¡",
+ "symbol": "SSP"
+ },
+ "TWD": {
+ "name": "নতà§à¦¨ তাইওয়ান ডলার",
+ "symbol": "NT$"
+ },
+ "NOK": {
+ "name": "নরওয়ে কà§à¦°à§Œà¦¨",
+ "symbol": "NOK"
+ },
+ "NGN": {
+ "name": "নাইজেরিয়ান নায়রা",
+ "symbol": "NGN"
+ },
+ "NAD": {
+ "name": "নামিবিয়া ডলার",
+ "symbol": "NAD"
+ },
+ "NZD": {
+ "name": "নিউজিলà§à¦¯à¦¾à¦¨à§à¦¡ ডলার",
+ "symbol": "NZ$"
+ },
+ "NIO": {
+ "name": "নিকারাগà§à¦¯à¦¼à¦¾à¦¨ করà§à¦¡à§‹à¦¬à¦¾",
+ "symbol": "NIO"
+ },
+ "ANG": {
+ "name": "নেদারলà§à¦¯à¦¾à¦¨à§à¦¡ à¦à§à¦¯à¦¾à¦¨à§à¦Ÿà¦¿à¦²à¦¿à¦¯à¦¼à¦¾à¦¨ গà§à¦²à§à¦¡à§‡à¦°",
+ "symbol": "ANG"
+ },
+ "NPR": {
+ "name": "নেপালি রà§à¦ªà¦¿",
+ "symbol": "NPR"
+ },
+ "PKR": {
+ "name": "পাকিসà§à¦¤à¦¾à¦¨à¦¿ রà§à¦ªà¦¿",
+ "symbol": "PKR"
+ },
+ "PAB": {
+ "name": "পানামা বেলবোয়া",
+ "symbol": "PAB"
+ },
+ "PGK": {
+ "name": "পাপà§à¦¯à¦¼à¦¾ নিউ গিনিয়ান কিনা",
+ "symbol": "PGK"
+ },
+ "XCD": {
+ "name": "পূরà§à¦¬ কà§à¦¯à¦¾à¦°à¦¾à¦¬à¦¿à¦¯à¦¼à¦¾à¦¨ ডলার",
+ "symbol": "EC$"
+ },
+ "PEN": {
+ "name": "পেরà§à¦­à¦¿à¦¯à¦¼à¦¾à¦¨ সোল নà§à¦¯à¦¼à§‡à¦­à§‹",
+ "symbol": "PEN"
+ },
+ "PLN": {
+ "name": "পোলিশ জà§à¦²à§‹à¦Ÿà¦¿",
+ "symbol": "PLN"
+ },
+ "PYG": {
+ "name": "পà§à¦¯à¦¾à¦°à¦—à§à¦¯à¦¼à¦¾à¦¨",
+ "symbol": "PYG"
+ },
+ "FKP": {
+ "name": "ফকলà§à¦¯à¦¾à¦¨à§à¦¡ দà§à¦¬à§€à¦ªà¦ªà§à¦žà§à¦œ পাউনà§à¦¡",
+ "symbol": "FKP"
+ },
+ "FJD": {
+ "name": "ফিজি ডলার",
+ "symbol": "FJD"
+ },
+ "PHP": {
+ "name": "ফিলিপাইন পেসো",
+ "symbol": "PHP"
+ },
+ "BWP": {
+ "name": "বতসোয়ানা পà§à¦²à¦¾",
+ "symbol": "BWP"
+ },
+ "BOB": {
+ "name": "বলিভিয়ানো",
+ "symbol": "BOB"
+ },
+ "BAM": {
+ "name": "বসনিয়া à¦à¦¬à¦‚ হারà§à¦œà§‡à¦—োভিনা মারà§à¦•",
+ "symbol": "BAM"
+ },
+ "BDT": {
+ "name": "বাংলাদেশী টাকা",
+ "symbol": "৳"
+ },
+ "BMD": {
+ "name": "বারমিউডান ডলার",
+ "symbol": "BMD"
+ },
+ "BBD": {
+ "name": "বারà§à¦¬à§‡à¦¡à§‹à¦œ ডলার",
+ "symbol": "BBD"
+ },
+ "BHD": {
+ "name": "বাহরাইনি দিনার",
+ "symbol": "BHD"
+ },
+ "BSD": {
+ "name": "বাহামিয়ান ডলার",
+ "symbol": "BSD"
+ },
+ "BIF": {
+ "name": "বà§à¦°à§à¦¨à§à¦¡à¦¿ ফà§à¦°à¦¾à¦™à§à¦•",
+ "symbol": "BIF"
+ },
+ "BGN": {
+ "name": "বà§à¦²à¦—েরীয় নিউ লেভ",
+ "symbol": "BGN"
+ },
+ "BYR": {
+ "name": "বেলারà§à¦¶à¦¿à¦¯à¦¼à¦¾à¦¨ রà§à¦¬à§‡à¦²",
+ "symbol": "BYR"
+ },
+ "BZD": {
+ "name": "বেলিজ ডলার",
+ "symbol": "BZD"
+ },
+ "BRL": {
+ "name": "বà§à¦°à¦¾à¦œà¦¿à¦²à¦¿à¦¯à¦¼à¦¾à¦¨ রিয়েল",
+ "symbol": "R$"
+ },
+ "GBP": {
+ "name": "বà§à¦°à¦¿à¦Ÿà¦¿à¦¶ পাউনà§à¦¡ সà§à¦Ÿà¦¾à¦°à§à¦²à¦¿à¦‚",
+ "symbol": "£"
+ },
+ "BND": {
+ "name": "বà§à¦°à§à¦¨à§‡à¦‡ ডলার",
+ "symbol": "BND"
+ },
+ "VUV": {
+ "name": "ভানà§à¦¯à¦¼à¦¾à¦¤à§ ভাতà§",
+ "symbol": "VUV"
+ },
+ "INR": {
+ "name": "ভারতীয় রà§à¦ªà¦¿",
+ "symbol": "₹"
+ },
+ "VND": {
+ "name": "ভিয়েতনামি ডঙà§à¦—",
+ "symbol": "â‚«"
+ },
+ "BTN": {
+ "name": "ভà§à¦Ÿà¦¾à¦¨à¦¿ à¦à¦¨à¦—à§à¦²à§à¦Ÿà§à¦°à§à¦®",
+ "symbol": "BTN"
+ },
+ "VEF": {
+ "name": "ভেনিজà§à¦¯à¦¼à§‡à¦²à§€à¦¯à¦¼ বলিভার",
+ "symbol": "VEF"
+ },
+ "MNT": {
+ "name": "মঙà§à¦—োলিয়ান তà§à¦—রিক",
+ "symbol": "MNT"
+ },
+ "MGA": {
+ "name": "মাদাগাসà§à¦•à¦¾à¦° আরিয়ারি",
+ "symbol": "MGA"
+ },
+ "MMK": {
+ "name": "মায়ানমার কিয়াত",
+ "symbol": "MMK"
+ },
+ "USD": {
+ "name": "মারà§à¦•à¦¿à¦¨ ডলার",
+ "symbol": "US$"
+ },
+ "MVR": {
+ "name": "মালদিভিয়ান রà§à¦«à¦¿à¦¯à¦¼à¦¾",
+ "symbol": "MVR"
+ },
+ "MYR": {
+ "name": "মালয়েশিয়ান রিঙà§à¦—িৎ",
+ "symbol": "MYR"
+ },
+ "MWK": {
+ "name": "মালাউইয়ান কওয়াচ",
+ "symbol": "MWK"
+ },
+ "EGP": {
+ "name": "মিশরীয় পাউনà§à¦¡",
+ "symbol": "EGP"
+ },
+ "MZN": {
+ "name": "মোজামà§à¦¬à¦¿à¦• মেটিকেল",
+ "symbol": "MZN"
+ },
+ "MAD": {
+ "name": "মোরোকà§à¦•à¦¾à¦¨ দিরহাম",
+ "symbol": "MAD"
+ },
+ "MDL": {
+ "name": "মোলà§à¦¡à§‹à¦­à¦¾à¦¨ লেয়à§",
+ "symbol": "MDL"
+ },
+ "MRO": {
+ "name": "মৌরিতানিয়ান ওউগà§à¦‡à¦¯à¦¼à¦¾",
+ "symbol": "MRO"
+ },
+ "MUR": {
+ "name": "মৌরিতানিয়ান রà§à¦ªà¦¿",
+ "symbol": "MUR"
+ },
+ "MOP": {
+ "name": "মà§à¦¯à¦¾à¦•à§à¦¯à¦¾à¦“ পাটাকা",
+ "symbol": "MOP"
+ },
+ "MXN": {
+ "name": "মà§à¦¯à¦¾à¦•à§à¦¸à¦¿à¦•à¦¾à¦¨ পেসো",
+ "symbol": "MX$"
+ },
+ "MKD": {
+ "name": "মà§à¦¯à¦¾à¦¸à§‡à¦¡à§‹à¦¨à¦¿à¦¯à¦¼à¦¾à¦¨ দিনার",
+ "symbol": "MKD"
+ },
+ "RUB": {
+ "name": "রাশিয়ান রà§à¦¬à§‡à¦²",
+ "symbol": "RUB"
+ },
+ "RON": {
+ "name": "রà§à¦®à¦¾à¦¨à¦¿à¦¯à¦¼à¦¾ লেয়à§",
+ "symbol": "RON"
+ },
+ "RWF": {
+ "name": "রà§à¦¯à¦¼à¦¾à¦¨à§à¦¡à¦¾à¦¨ ফà§à¦°à¦¾à¦™à§à¦•",
+ "symbol": "RWF"
+ },
+ "LRD": {
+ "name": "লাইবেরিয়ান ডলার",
+ "symbol": "LRD"
+ },
+ "LTL": {
+ "name": "লিথà§à¦‡à¦¨à¦¿à¦¯à¦¼à¦¾à¦¨ লিটা",
+ "symbol": "LTL"
+ },
+ "LYD": {
+ "name": "লিবিয়ান ডলার",
+ "symbol": "LYD"
+ },
+ "LAK": {
+ "name": "লেউশান কিপ",
+ "symbol": "LAK"
+ },
+ "LBP": {
+ "name": "লেবানিজ পাউনà§à¦¡",
+ "symbol": "LBP"
+ },
+ "LSL": {
+ "name": "লেসà§à¦Ÿà§ লোটি",
+ "symbol": "LSL"
+ },
+ "LKR": {
+ "name": "শà§à¦°à§€à¦²à¦™à§à¦•à¦¾à¦¨ রà§à¦ªà¦¿",
+ "symbol": "LKR"
+ },
+ "AED": {
+ "name": "সংযà§à¦•à§à¦¤ আরব আমিরাত দিরহাম",
+ "symbol": "AED"
+ },
+ "SBD": {
+ "name": "সলোমন দà§à¦¬à§€à¦ªà¦ªà§à¦žà§à¦œ ডলার",
+ "symbol": "SBD"
+ },
+ "STD": {
+ "name": "সাও টোমে à¦à¦¬à¦‚ পà§à¦°à¦¿à¦¨à§à¦¸à¦¿à¦ªà§‡ ডোবরা",
+ "symbol": "STD"
+ },
+ "WST": {
+ "name": "সামোয়ান টালা",
+ "symbol": "WST"
+ },
+ "RSD": {
+ "name": "সারবিয়ান দিনার",
+ "symbol": "RSD"
+ },
+ "XAF": {
+ "name": "সিà¦à¦«à¦ ফà§à¦°à§à¦¯à¦¾à¦™à§à¦• বিইà¦à¦¸à¦¿",
+ "symbol": "FCFA"
+ },
+ "XOF": {
+ "name": "সিà¦à¦«à¦ ফà§à¦°à§à¦¯à¦¾à¦™à§à¦• বিসিইà¦à¦“",
+ "symbol": "CFA"
+ },
+ "XPF": {
+ "name": "সিà¦à¦«à¦ªà¦¿ ফà§à¦°à§à¦¯à¦¾à¦™à§à¦•",
+ "symbol": "CFPF"
+ },
+ "SGD": {
+ "name": "সিঙà§à¦—াপà§à¦° ডলার",
+ "symbol": "SGD"
+ },
+ "SLL": {
+ "name": "সিয়েরালিয়ন লিয়ন",
+ "symbol": "SLL"
+ },
+ "SYP": {
+ "name": "সিরিয়ান পাউনà§à¦¡",
+ "symbol": "SYP"
+ },
+ "SEK": {
+ "name": "সà§à¦‡à¦¡à¦¿à¦¶ কà§à¦°à§‹à¦¨à¦¾",
+ "symbol": "SEK"
+ },
+ "CHF": {
+ "name": "সà§à¦‡à¦¸ ফà§à¦°à¦¾à¦™à§à¦•",
+ "symbol": "CHF"
+ },
+ "SDG": {
+ "name": "সà§à¦¦à¦¾à¦¨à¦¿ পাউনà§à¦¡",
+ "symbol": "SDG"
+ },
+ "SRD": {
+ "name": "সà§à¦°à¦¿à¦¨à¦¾à¦® ডলার",
+ "symbol": "SRD"
+ },
+ "SHP": {
+ "name": "সেনà§à¦Ÿ হেলেনা পাউনà§à¦¡",
+ "symbol": "SHP"
+ },
+ "SCR": {
+ "name": "সেয়চেলà§à¦²à§‹à¦‡à¦¸ রà§à¦ªà¦¿",
+ "symbol": "SCR"
+ },
+ "SOS": {
+ "name": "সোমালি শিলিং",
+ "symbol": "SOS"
+ },
+ "SZL": {
+ "name": "সোয়াজিলà§à¦¯à¦¾à¦¨à§à¦¡ লিলাঙà§à¦—েনি",
+ "symbol": "SZL"
+ },
+ "SAR": {
+ "name": "সৌদি রিয়à§à¦¯à¦¾à¦²",
+ "symbol": "SAR"
+ },
+ "HKD": {
+ "name": "হংকং ডলার",
+ "symbol": "HK$"
+ },
+ "HNL": {
+ "name": "হনà§à¦¡à§à¦°à¦¾à¦¸ লেমà§à¦ªà¦¿à¦°à¦¾",
+ "symbol": "HNL"
+ },
+ "HTG": {
+ "name": "হাইতি গৌরà§à¦¦à§‡",
+ "symbol": "HTG"
+ },
+ "HUF": {
+ "name": "হাঙà§à¦—েরিয়ান ফোরিনà§à¦Ÿ",
+ "symbol": "HUF"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/currency/bo.json b/library/intl/resources/currency/bo.json
new file mode 100644
index 000000000..46970dd56
--- /dev/null
+++ b/library/intl/resources/currency/bo.json
@@ -0,0 +1,634 @@
+{
+ "AED": {
+ "name": "AED",
+ "symbol": "AED"
+ },
+ "AFN": {
+ "name": "AFN",
+ "symbol": "AFN"
+ },
+ "ALL": {
+ "name": "ALL",
+ "symbol": "ALL"
+ },
+ "AMD": {
+ "name": "AMD",
+ "symbol": "AMD"
+ },
+ "ANG": {
+ "name": "ANG",
+ "symbol": "ANG"
+ },
+ "AOA": {
+ "name": "AOA",
+ "symbol": "AOA"
+ },
+ "ARS": {
+ "name": "ARS",
+ "symbol": "ARS"
+ },
+ "AUD": {
+ "name": "AUD",
+ "symbol": "A$"
+ },
+ "AWG": {
+ "name": "AWG",
+ "symbol": "AWG"
+ },
+ "AZN": {
+ "name": "AZN",
+ "symbol": "AZN"
+ },
+ "BAM": {
+ "name": "BAM",
+ "symbol": "BAM"
+ },
+ "BBD": {
+ "name": "BBD",
+ "symbol": "BBD"
+ },
+ "BDT": {
+ "name": "BDT",
+ "symbol": "BDT"
+ },
+ "BGN": {
+ "name": "BGN",
+ "symbol": "BGN"
+ },
+ "BHD": {
+ "name": "BHD",
+ "symbol": "BHD"
+ },
+ "BIF": {
+ "name": "BIF",
+ "symbol": "BIF"
+ },
+ "BMD": {
+ "name": "BMD",
+ "symbol": "BMD"
+ },
+ "BND": {
+ "name": "BND",
+ "symbol": "BND"
+ },
+ "BOB": {
+ "name": "BOB",
+ "symbol": "BOB"
+ },
+ "BRL": {
+ "name": "BRL",
+ "symbol": "R$"
+ },
+ "BSD": {
+ "name": "BSD",
+ "symbol": "BSD"
+ },
+ "BTN": {
+ "name": "BTN",
+ "symbol": "BTN"
+ },
+ "BWP": {
+ "name": "BWP",
+ "symbol": "BWP"
+ },
+ "BYR": {
+ "name": "BYR",
+ "symbol": "BYR"
+ },
+ "BZD": {
+ "name": "BZD",
+ "symbol": "BZD"
+ },
+ "CAD": {
+ "name": "CAD",
+ "symbol": "CA$"
+ },
+ "CDF": {
+ "name": "CDF",
+ "symbol": "CDF"
+ },
+ "CHF": {
+ "name": "CHF",
+ "symbol": "CHF"
+ },
+ "CLP": {
+ "name": "CLP",
+ "symbol": "CLP"
+ },
+ "COP": {
+ "name": "COP",
+ "symbol": "COP"
+ },
+ "CRC": {
+ "name": "CRC",
+ "symbol": "CRC"
+ },
+ "CUC": {
+ "name": "CUC",
+ "symbol": "CUC"
+ },
+ "CUP": {
+ "name": "CUP",
+ "symbol": "CUP"
+ },
+ "CVE": {
+ "name": "CVE",
+ "symbol": "CVE"
+ },
+ "CZK": {
+ "name": "CZK",
+ "symbol": "CZK"
+ },
+ "DJF": {
+ "name": "DJF",
+ "symbol": "DJF"
+ },
+ "DKK": {
+ "name": "DKK",
+ "symbol": "DKK"
+ },
+ "DOP": {
+ "name": "DOP",
+ "symbol": "DOP"
+ },
+ "DZD": {
+ "name": "DZD",
+ "symbol": "DZD"
+ },
+ "EGP": {
+ "name": "EGP",
+ "symbol": "EGP"
+ },
+ "ERN": {
+ "name": "ERN",
+ "symbol": "ERN"
+ },
+ "ETB": {
+ "name": "ETB",
+ "symbol": "ETB"
+ },
+ "EUR": {
+ "name": "EUR",
+ "symbol": "€"
+ },
+ "FJD": {
+ "name": "FJD",
+ "symbol": "FJD"
+ },
+ "FKP": {
+ "name": "FKP",
+ "symbol": "FKP"
+ },
+ "GBP": {
+ "name": "GBP",
+ "symbol": "£"
+ },
+ "GEL": {
+ "name": "GEL",
+ "symbol": "GEL"
+ },
+ "GHS": {
+ "name": "GHS",
+ "symbol": "GHS"
+ },
+ "GIP": {
+ "name": "GIP",
+ "symbol": "GIP"
+ },
+ "GMD": {
+ "name": "GMD",
+ "symbol": "GMD"
+ },
+ "GNF": {
+ "name": "GNF",
+ "symbol": "GNF"
+ },
+ "GTQ": {
+ "name": "GTQ",
+ "symbol": "GTQ"
+ },
+ "GYD": {
+ "name": "GYD",
+ "symbol": "GYD"
+ },
+ "HKD": {
+ "name": "HKD",
+ "symbol": "HK$"
+ },
+ "HNL": {
+ "name": "HNL",
+ "symbol": "HNL"
+ },
+ "HRK": {
+ "name": "HRK",
+ "symbol": "HRK"
+ },
+ "HTG": {
+ "name": "HTG",
+ "symbol": "HTG"
+ },
+ "HUF": {
+ "name": "HUF",
+ "symbol": "HUF"
+ },
+ "IDR": {
+ "name": "IDR",
+ "symbol": "IDR"
+ },
+ "ILS": {
+ "name": "ILS",
+ "symbol": "₪"
+ },
+ "IQD": {
+ "name": "IQD",
+ "symbol": "IQD"
+ },
+ "IRR": {
+ "name": "IRR",
+ "symbol": "IRR"
+ },
+ "ISK": {
+ "name": "ISK",
+ "symbol": "ISK"
+ },
+ "JMD": {
+ "name": "JMD",
+ "symbol": "JMD"
+ },
+ "JOD": {
+ "name": "JOD",
+ "symbol": "JOD"
+ },
+ "JPY": {
+ "name": "JPY",
+ "symbol": "JPÂ¥"
+ },
+ "KES": {
+ "name": "KES",
+ "symbol": "KES"
+ },
+ "KGS": {
+ "name": "KGS",
+ "symbol": "KGS"
+ },
+ "KHR": {
+ "name": "KHR",
+ "symbol": "KHR"
+ },
+ "KMF": {
+ "name": "KMF",
+ "symbol": "KMF"
+ },
+ "KPW": {
+ "name": "KPW",
+ "symbol": "KPW"
+ },
+ "KRW": {
+ "name": "KRW",
+ "symbol": "â‚©"
+ },
+ "KWD": {
+ "name": "KWD",
+ "symbol": "KWD"
+ },
+ "KYD": {
+ "name": "KYD",
+ "symbol": "KYD"
+ },
+ "KZT": {
+ "name": "KZT",
+ "symbol": "KZT"
+ },
+ "LAK": {
+ "name": "LAK",
+ "symbol": "LAK"
+ },
+ "LBP": {
+ "name": "LBP",
+ "symbol": "LBP"
+ },
+ "LKR": {
+ "name": "LKR",
+ "symbol": "LKR"
+ },
+ "LRD": {
+ "name": "LRD",
+ "symbol": "LRD"
+ },
+ "LSL": {
+ "name": "LSL",
+ "symbol": "LSL"
+ },
+ "LTL": {
+ "name": "LTL",
+ "symbol": "LTL"
+ },
+ "LYD": {
+ "name": "LYD",
+ "symbol": "LYD"
+ },
+ "MAD": {
+ "name": "MAD",
+ "symbol": "MAD"
+ },
+ "MDL": {
+ "name": "MDL",
+ "symbol": "MDL"
+ },
+ "MGA": {
+ "name": "MGA",
+ "symbol": "MGA"
+ },
+ "MKD": {
+ "name": "MKD",
+ "symbol": "MKD"
+ },
+ "MMK": {
+ "name": "MMK",
+ "symbol": "MMK"
+ },
+ "MNT": {
+ "name": "MNT",
+ "symbol": "MNT"
+ },
+ "MOP": {
+ "name": "MOP",
+ "symbol": "MOP"
+ },
+ "MRO": {
+ "name": "MRO",
+ "symbol": "MRO"
+ },
+ "MUR": {
+ "name": "MUR",
+ "symbol": "MUR"
+ },
+ "MVR": {
+ "name": "MVR",
+ "symbol": "MVR"
+ },
+ "MWK": {
+ "name": "MWK",
+ "symbol": "MWK"
+ },
+ "MXN": {
+ "name": "MXN",
+ "symbol": "MX$"
+ },
+ "MYR": {
+ "name": "MYR",
+ "symbol": "MYR"
+ },
+ "MZN": {
+ "name": "MZN",
+ "symbol": "MZN"
+ },
+ "NAD": {
+ "name": "NAD",
+ "symbol": "NAD"
+ },
+ "NGN": {
+ "name": "NGN",
+ "symbol": "NGN"
+ },
+ "NIO": {
+ "name": "NIO",
+ "symbol": "NIO"
+ },
+ "NOK": {
+ "name": "NOK",
+ "symbol": "NOK"
+ },
+ "NPR": {
+ "name": "NPR",
+ "symbol": "NPR"
+ },
+ "NZD": {
+ "name": "NZD",
+ "symbol": "NZ$"
+ },
+ "OMR": {
+ "name": "OMR",
+ "symbol": "OMR"
+ },
+ "PAB": {
+ "name": "PAB",
+ "symbol": "PAB"
+ },
+ "PEN": {
+ "name": "PEN",
+ "symbol": "PEN"
+ },
+ "PGK": {
+ "name": "PGK",
+ "symbol": "PGK"
+ },
+ "PHP": {
+ "name": "PHP",
+ "symbol": "PHP"
+ },
+ "PKR": {
+ "name": "PKR",
+ "symbol": "PKR"
+ },
+ "PLN": {
+ "name": "PLN",
+ "symbol": "PLN"
+ },
+ "PYG": {
+ "name": "PYG",
+ "symbol": "PYG"
+ },
+ "QAR": {
+ "name": "QAR",
+ "symbol": "QAR"
+ },
+ "RON": {
+ "name": "RON",
+ "symbol": "RON"
+ },
+ "RSD": {
+ "name": "RSD",
+ "symbol": "RSD"
+ },
+ "RUB": {
+ "name": "RUB",
+ "symbol": "RUB"
+ },
+ "RWF": {
+ "name": "RWF",
+ "symbol": "RWF"
+ },
+ "SAR": {
+ "name": "SAR",
+ "symbol": "SAR"
+ },
+ "SBD": {
+ "name": "SBD",
+ "symbol": "SBD"
+ },
+ "SCR": {
+ "name": "SCR",
+ "symbol": "SCR"
+ },
+ "SDG": {
+ "name": "SDG",
+ "symbol": "SDG"
+ },
+ "SEK": {
+ "name": "SEK",
+ "symbol": "SEK"
+ },
+ "SGD": {
+ "name": "SGD",
+ "symbol": "SGD"
+ },
+ "SHP": {
+ "name": "SHP",
+ "symbol": "SHP"
+ },
+ "SLL": {
+ "name": "SLL",
+ "symbol": "SLL"
+ },
+ "SOS": {
+ "name": "SOS",
+ "symbol": "SOS"
+ },
+ "SRD": {
+ "name": "SRD",
+ "symbol": "SRD"
+ },
+ "SSP": {
+ "name": "SSP",
+ "symbol": "SSP"
+ },
+ "STD": {
+ "name": "STD",
+ "symbol": "STD"
+ },
+ "SVC": {
+ "name": "SVC",
+ "symbol": "SVC"
+ },
+ "SYP": {
+ "name": "SYP",
+ "symbol": "SYP"
+ },
+ "SZL": {
+ "name": "SZL",
+ "symbol": "SZL"
+ },
+ "THB": {
+ "name": "THB",
+ "symbol": "THB"
+ },
+ "TJS": {
+ "name": "TJS",
+ "symbol": "TJS"
+ },
+ "TMT": {
+ "name": "TMT",
+ "symbol": "TMT"
+ },
+ "TND": {
+ "name": "TND",
+ "symbol": "TND"
+ },
+ "TOP": {
+ "name": "TOP",
+ "symbol": "TOP"
+ },
+ "TRY": {
+ "name": "TRY",
+ "symbol": "TRY"
+ },
+ "TTD": {
+ "name": "TTD",
+ "symbol": "TTD"
+ },
+ "TWD": {
+ "name": "TWD",
+ "symbol": "NT$"
+ },
+ "TZS": {
+ "name": "TZS",
+ "symbol": "TZS"
+ },
+ "UAH": {
+ "name": "UAH",
+ "symbol": "UAH"
+ },
+ "UGX": {
+ "name": "UGX",
+ "symbol": "UGX"
+ },
+ "UYU": {
+ "name": "UYU",
+ "symbol": "UYU"
+ },
+ "UZS": {
+ "name": "UZS",
+ "symbol": "UZS"
+ },
+ "VEF": {
+ "name": "VEF",
+ "symbol": "VEF"
+ },
+ "VND": {
+ "name": "VND",
+ "symbol": "â‚«"
+ },
+ "VUV": {
+ "name": "VUV",
+ "symbol": "VUV"
+ },
+ "WST": {
+ "name": "WST",
+ "symbol": "WST"
+ },
+ "XAF": {
+ "name": "XAF",
+ "symbol": "FCFA"
+ },
+ "XCD": {
+ "name": "XCD",
+ "symbol": "EC$"
+ },
+ "XOF": {
+ "name": "XOF",
+ "symbol": "CFA"
+ },
+ "XPF": {
+ "name": "XPF",
+ "symbol": "CFPF"
+ },
+ "YER": {
+ "name": "YER",
+ "symbol": "YER"
+ },
+ "ZAR": {
+ "name": "ZAR",
+ "symbol": "ZAR"
+ },
+ "ZMW": {
+ "name": "ZMW",
+ "symbol": "ZMW"
+ },
+ "ZWL": {
+ "name": "ZWL",
+ "symbol": "ZWL"
+ },
+ "CNY": {
+ "name": "ཡུ་ཨན་",
+ "symbol": "Â¥"
+ },
+ "INR": {
+ "name": "རྒྱ་གར་སྒོར་མོ་",
+ "symbol": "₹"
+ },
+ "USD": {
+ "name": "ཨ་རིའི་སྒོར་མོà¼",
+ "symbol": "US$"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/currency/br.json b/library/intl/resources/currency/br.json
new file mode 100644
index 000000000..556fd5444
--- /dev/null
+++ b/library/intl/resources/currency/br.json
@@ -0,0 +1,634 @@
+{
+ "AFN": {
+ "name": "afghani Afghanistan",
+ "symbol": "AFN"
+ },
+ "MGA": {
+ "name": "ariary Madagaskar",
+ "symbol": "MGA"
+ },
+ "THB": {
+ "name": "baht Thailand",
+ "symbol": "THB"
+ },
+ "PAB": {
+ "name": "balboa Panamá",
+ "symbol": "PAB"
+ },
+ "ETB": {
+ "name": "birr Etiopia",
+ "symbol": "ETB"
+ },
+ "VEF": {
+ "name": "bolivar Venezuela",
+ "symbol": "VEF"
+ },
+ "BOB": {
+ "name": "boliviano Bolivia",
+ "symbol": "BOB"
+ },
+ "GHS": {
+ "name": "cedi Ghana",
+ "symbol": "GHS"
+ },
+ "CRC": {
+ "name": "colón Costa Rica",
+ "symbol": "CRC"
+ },
+ "SVC": {
+ "name": "colón Salvador",
+ "symbol": "SVC"
+ },
+ "NIO": {
+ "name": "cordoba Nicaragua",
+ "symbol": "NIO"
+ },
+ "GMD": {
+ "name": "dalasi Gambia",
+ "symbol": "GMD"
+ },
+ "MKD": {
+ "name": "denar Makedonia",
+ "symbol": "MKD"
+ },
+ "DZD": {
+ "name": "dinar Aljeria",
+ "symbol": "DZD"
+ },
+ "BHD": {
+ "name": "dinar Bahrein",
+ "symbol": "BHD"
+ },
+ "IQD": {
+ "name": "dinar Iraq",
+ "symbol": "IQD"
+ },
+ "JOD": {
+ "name": "dinar Jordania",
+ "symbol": "JOD"
+ },
+ "KWD": {
+ "name": "dinar Koweit",
+ "symbol": "KWD"
+ },
+ "LYD": {
+ "name": "dinar Libia",
+ "symbol": "LYD"
+ },
+ "RSD": {
+ "name": "dinar Serbia",
+ "symbol": "RSD"
+ },
+ "TND": {
+ "name": "dinar Tunizia",
+ "symbol": "TND"
+ },
+ "AED": {
+ "name": "dirham EAU",
+ "symbol": "AED"
+ },
+ "MAD": {
+ "name": "dirham Maroko",
+ "symbol": "MAD"
+ },
+ "STD": {
+ "name": "dobra São Tomé ha Príncipe",
+ "symbol": "STD"
+ },
+ "AUD": {
+ "name": "dollar Aostralia",
+ "symbol": "$A"
+ },
+ "BSD": {
+ "name": "dollar Bahamas",
+ "symbol": "BSD"
+ },
+ "BBD": {
+ "name": "dollar Barbados",
+ "symbol": "BBD"
+ },
+ "BZD": {
+ "name": "dollar Belize",
+ "symbol": "BZD"
+ },
+ "BMD": {
+ "name": "dollar Bermuda",
+ "symbol": "BMD"
+ },
+ "BND": {
+ "name": "dollar Brunei",
+ "symbol": "BND"
+ },
+ "FJD": {
+ "name": "dollar Fidji",
+ "symbol": "FJD"
+ },
+ "GYD": {
+ "name": "dollar Guyana",
+ "symbol": "GYD"
+ },
+ "HKD": {
+ "name": "dollar Hong Kong",
+ "symbol": "$ HK"
+ },
+ "KYD": {
+ "name": "dollar Inizi Cayman",
+ "symbol": "KYD"
+ },
+ "SBD": {
+ "name": "dollar Inizi Salomon",
+ "symbol": "SBD"
+ },
+ "JMD": {
+ "name": "dollar Jamaika",
+ "symbol": "JMD"
+ },
+ "CAD": {
+ "name": "dollar Kanada",
+ "symbol": "$CA"
+ },
+ "XCD": {
+ "name": "dollar Karib ar reter",
+ "symbol": "EC$"
+ },
+ "LRD": {
+ "name": "dollar Liberia",
+ "symbol": "LRD"
+ },
+ "NAD": {
+ "name": "dollar Namibia",
+ "symbol": "NAD"
+ },
+ "TWD": {
+ "name": "dollar nevez Taiwan",
+ "symbol": "NT$"
+ },
+ "SGD": {
+ "name": "dollar Singapour",
+ "symbol": "SGD"
+ },
+ "USD": {
+ "name": "dollar SU",
+ "symbol": "$ SU"
+ },
+ "SRD": {
+ "name": "dollar Surinam",
+ "symbol": "SRD"
+ },
+ "TTD": {
+ "name": "dollar Trinidad ha Tobago",
+ "symbol": "TTD"
+ },
+ "NZD": {
+ "name": "dollar Zeland-Nevez",
+ "symbol": "$ ZN"
+ },
+ "ZWL": {
+ "name": "dollar Zimbabwe (2009)",
+ "symbol": "ZWL"
+ },
+ "VND": {
+ "name": "dong Viêt Nam",
+ "symbol": "â‚«"
+ },
+ "AMD": {
+ "name": "dram Armenia",
+ "symbol": "AMD"
+ },
+ "CVE": {
+ "name": "escudo Kab Glas",
+ "symbol": "CVE"
+ },
+ "EUR": {
+ "name": "euro",
+ "symbol": "€"
+ },
+ "ANG": {
+ "name": "florin Antilhez nederlandat",
+ "symbol": "ANG"
+ },
+ "AWG": {
+ "name": "florin Aruba",
+ "symbol": "AWG"
+ },
+ "HUF": {
+ "name": "forint Hungaria",
+ "symbol": "HUF"
+ },
+ "HTG": {
+ "name": "gourde Haiti",
+ "symbol": "HTG"
+ },
+ "PYG": {
+ "name": "guarani Paraguay",
+ "symbol": "PYG"
+ },
+ "UAH": {
+ "name": "hryvnia Ukraina",
+ "symbol": "UAH"
+ },
+ "PGK": {
+ "name": "kina Papoua Ginea-Nevez",
+ "symbol": "PGK"
+ },
+ "LAK": {
+ "name": "kip Laos",
+ "symbol": "LAK"
+ },
+ "HRK": {
+ "name": "kuna Kroatia",
+ "symbol": "HRK"
+ },
+ "DKK": {
+ "name": "kurunenn Danmark",
+ "symbol": "DKK"
+ },
+ "ISK": {
+ "name": "kurunenn Island",
+ "symbol": "ISK"
+ },
+ "NOK": {
+ "name": "kurunenn Norvegia",
+ "symbol": "NOK"
+ },
+ "SEK": {
+ "name": "kurunenn Sveden",
+ "symbol": "SEK"
+ },
+ "CZK": {
+ "name": "kurunenn Tchek",
+ "symbol": "CZK"
+ },
+ "MWK": {
+ "name": "kwacha Malawi",
+ "symbol": "MWK"
+ },
+ "ZMW": {
+ "name": "kwacha Zambia",
+ "symbol": "ZMW"
+ },
+ "AOA": {
+ "name": "kwanza Angola",
+ "symbol": "AOA"
+ },
+ "MMK": {
+ "name": "kyat Myanmar",
+ "symbol": "MMK"
+ },
+ "GEL": {
+ "name": "lari Jorjia",
+ "symbol": "GEL"
+ },
+ "ALL": {
+ "name": "lek Albania",
+ "symbol": "ALL"
+ },
+ "HNL": {
+ "name": "lempira Honduras",
+ "symbol": "HNL"
+ },
+ "SLL": {
+ "name": "leone Sierra Leone",
+ "symbol": "SLL"
+ },
+ "MDL": {
+ "name": "leu Moldova",
+ "symbol": "MDL"
+ },
+ "RON": {
+ "name": "leu Roumania",
+ "symbol": "RON"
+ },
+ "BGN": {
+ "name": "lev Bulgaria",
+ "symbol": "BGN"
+ },
+ "SZL": {
+ "name": "lilangeni Swaziland",
+ "symbol": "SZL"
+ },
+ "LTL": {
+ "name": "litas Lituania",
+ "symbol": "LTL"
+ },
+ "LSL": {
+ "name": "loti Lesotho",
+ "symbol": "LSL"
+ },
+ "BIF": {
+ "name": "lur Burundi",
+ "symbol": "BIF"
+ },
+ "XOF": {
+ "name": "lur CFA BCEAO",
+ "symbol": "CFA"
+ },
+ "XAF": {
+ "name": "lur CFA BEAC",
+ "symbol": "FCFA"
+ },
+ "XPF": {
+ "name": "lur CFP",
+ "symbol": "CFPF"
+ },
+ "DJF": {
+ "name": "lur Djibouti",
+ "symbol": "DJF"
+ },
+ "EGP": {
+ "name": "lur Egipt",
+ "symbol": "EGP"
+ },
+ "GNF": {
+ "name": "lur Ginea",
+ "symbol": "GNF"
+ },
+ "FKP": {
+ "name": "lur Inizi Falkland",
+ "symbol": "FKP"
+ },
+ "GIP": {
+ "name": "lur Jibraltar",
+ "symbol": "GIP"
+ },
+ "KMF": {
+ "name": "lur Komorez",
+ "symbol": "KMF"
+ },
+ "CDF": {
+ "name": "lur Kongo",
+ "symbol": "CDF"
+ },
+ "LBP": {
+ "name": "lur Liban",
+ "symbol": "LBP"
+ },
+ "RWF": {
+ "name": "lur Rwanda",
+ "symbol": "RWF"
+ },
+ "SHP": {
+ "name": "lur Saint-Helena",
+ "symbol": "SHP"
+ },
+ "SYP": {
+ "name": "lur Siria",
+ "symbol": "SYP"
+ },
+ "SDG": {
+ "name": "lur Soudan",
+ "symbol": "SDG"
+ },
+ "GBP": {
+ "name": "lur sterling Breizh-Veur",
+ "symbol": "£ RU"
+ },
+ "CHF": {
+ "name": "lur Suis",
+ "symbol": "CHF"
+ },
+ "SSP": {
+ "name": "lur Susoudan",
+ "symbol": "SSP"
+ },
+ "TRY": {
+ "name": "lur Turkia",
+ "symbol": "TRY"
+ },
+ "AZN": {
+ "name": "manat Azerbaidjan",
+ "symbol": "AZN"
+ },
+ "TMT": {
+ "name": "manat Turkmenistan",
+ "symbol": "TMT"
+ },
+ "BAM": {
+ "name": "mark kemmadus Bosnia ha Herzegovina",
+ "symbol": "BAM"
+ },
+ "MZN": {
+ "name": "metical Mozambik",
+ "symbol": "MZN"
+ },
+ "NGN": {
+ "name": "naira Nigeria",
+ "symbol": "NGN"
+ },
+ "ERN": {
+ "name": "nakfa Eritrea",
+ "symbol": "ERN"
+ },
+ "BTN": {
+ "name": "ngultrum Bhoutan",
+ "symbol": "BTN"
+ },
+ "PEN": {
+ "name": "nuevo sol Perou",
+ "symbol": "PEN"
+ },
+ "MRO": {
+ "name": "ouguiya Maouritania",
+ "symbol": "MRO"
+ },
+ "TOP": {
+ "name": "paʻanga Tonga",
+ "symbol": "TOP"
+ },
+ "MOP": {
+ "name": "pataca Macau",
+ "symbol": "MOP"
+ },
+ "ARS": {
+ "name": "peso Arcʼhantina",
+ "symbol": "ARS"
+ },
+ "CLP": {
+ "name": "peso Chile",
+ "symbol": "CLP"
+ },
+ "DOP": {
+ "name": "peso Dominikan",
+ "symbol": "DOP"
+ },
+ "PHP": {
+ "name": "peso Filipinez",
+ "symbol": "PHP"
+ },
+ "CUC": {
+ "name": "peso kemmadus Kuba",
+ "symbol": "CUC"
+ },
+ "COP": {
+ "name": "peso Kolombia",
+ "symbol": "COP"
+ },
+ "CUP": {
+ "name": "peso Kuba",
+ "symbol": "CUP"
+ },
+ "MXN": {
+ "name": "peso Mecʼhiko",
+ "symbol": "MX$"
+ },
+ "UYU": {
+ "name": "peso Uruguay",
+ "symbol": "UYU"
+ },
+ "BWP": {
+ "name": "pula Botswana",
+ "symbol": "BWP"
+ },
+ "GTQ": {
+ "name": "quetzal Guatemala",
+ "symbol": "GTQ"
+ },
+ "ZAR": {
+ "name": "rand Suafrika",
+ "symbol": "ZAR"
+ },
+ "BRL": {
+ "name": "real Brazil",
+ "symbol": "R$"
+ },
+ "IRR": {
+ "name": "rial Iran",
+ "symbol": "IRR"
+ },
+ "OMR": {
+ "name": "rial Oman",
+ "symbol": "OMR"
+ },
+ "QAR": {
+ "name": "rial Qatar",
+ "symbol": "QAR"
+ },
+ "YER": {
+ "name": "rial Yemen",
+ "symbol": "YER"
+ },
+ "KHR": {
+ "name": "riel Kambodja",
+ "symbol": "KHR"
+ },
+ "MYR": {
+ "name": "ringgit Malaysia",
+ "symbol": "MYR"
+ },
+ "SAR": {
+ "name": "riyal Arabia Saoudat",
+ "symbol": "SAR"
+ },
+ "BYR": {
+ "name": "roubl Belarus",
+ "symbol": "BYR"
+ },
+ "RUB": {
+ "name": "roubl Rusia",
+ "symbol": "RUB"
+ },
+ "INR": {
+ "name": "roupi India",
+ "symbol": "₹"
+ },
+ "IDR": {
+ "name": "roupi Indonezia",
+ "symbol": "IDR"
+ },
+ "MUR": {
+ "name": "roupi Moris",
+ "symbol": "MUR"
+ },
+ "NPR": {
+ "name": "roupi Nepal",
+ "symbol": "NPR"
+ },
+ "PKR": {
+ "name": "roupi Pakistan",
+ "symbol": "PKR"
+ },
+ "SCR": {
+ "name": "roupi Sechelez",
+ "symbol": "SCR"
+ },
+ "LKR": {
+ "name": "roupi Sri Lanka",
+ "symbol": "LKR"
+ },
+ "MVR": {
+ "name": "rufiyaa Maldivez",
+ "symbol": "MVR"
+ },
+ "ILS": {
+ "name": "shekel nevez Israel",
+ "symbol": "₪"
+ },
+ "KES": {
+ "name": "shilling Kenya",
+ "symbol": "KES"
+ },
+ "UGX": {
+ "name": "shilling Ouganda",
+ "symbol": "UGX"
+ },
+ "SOS": {
+ "name": "shilling Somalia",
+ "symbol": "SOS"
+ },
+ "TZS": {
+ "name": "shilling Tanzania",
+ "symbol": "TZS"
+ },
+ "KGS": {
+ "name": "som Kyrgyzstan",
+ "symbol": "KGS"
+ },
+ "UZS": {
+ "name": "som Ouzbekistan",
+ "symbol": "UZS"
+ },
+ "TJS": {
+ "name": "somoni Tadjikistan",
+ "symbol": "TJS"
+ },
+ "BDT": {
+ "name": "taka Bangladesh",
+ "symbol": "BDT"
+ },
+ "WST": {
+ "name": "tala Samoa",
+ "symbol": "WST"
+ },
+ "KZT": {
+ "name": "tenge Kazakstan",
+ "symbol": "KZT"
+ },
+ "MNT": {
+ "name": "tugrik Mongolia",
+ "symbol": "MNT"
+ },
+ "VUV": {
+ "name": "vatu Vanuatu",
+ "symbol": "VUV"
+ },
+ "KPW": {
+ "name": "won Korea an Norzh",
+ "symbol": "KPW"
+ },
+ "KRW": {
+ "name": "won Korea ar Su",
+ "symbol": "â‚©"
+ },
+ "JPY": {
+ "name": "yen Japan",
+ "symbol": "JPÂ¥"
+ },
+ "CNY": {
+ "name": "yuan Sina",
+ "symbol": "CNÂ¥"
+ },
+ "PLN": {
+ "name": "zloty Polonia",
+ "symbol": "PLN"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/currency/brx.json b/library/intl/resources/currency/brx.json
new file mode 100644
index 000000000..f391c009c
--- /dev/null
+++ b/library/intl/resources/currency/brx.json
@@ -0,0 +1,634 @@
+{
+ "XAF": {
+ "name": "(सीà¤à¤«à¤¼à¤) फà¥à¤°à¤¾à¤¨à¤¸à¥€à¤¸à¥€ फेदरेशनी फà¥à¤°à¤¾à¤",
+ "symbol": "FCFA"
+ },
+ "CUC": {
+ "name": "CUC",
+ "symbol": "CUC"
+ },
+ "SSP": {
+ "name": "SSP",
+ "symbol": "SSP"
+ },
+ "TMT": {
+ "name": "TMT",
+ "symbol": "TMT"
+ },
+ "ZWL": {
+ "name": "ZWL",
+ "symbol": "ZWL"
+ },
+ "AFN": {
+ "name": "अफ़ग़ानी",
+ "symbol": "AFN"
+ },
+ "USD": {
+ "name": "अमरिकी डॉलर",
+ "symbol": "US$"
+ },
+ "AWG": {
+ "name": "अरà¥à¤¬à¤¾ गीलà¥à¤¡à¤°",
+ "symbol": "AWG"
+ },
+ "ARS": {
+ "name": "अरà¥à¤œà¥‡à¤£à¥à¤Ÿà¥€à¤¨à¥€ पेसो",
+ "symbol": "ARS"
+ },
+ "ISK": {
+ "name": "आईसलैणà¥à¤¡ कà¥à¤°à¥‹à¤¨à¤¾",
+ "symbol": "ISK"
+ },
+ "AZN": {
+ "name": "आज़रबैजानी मनात",
+ "symbol": "AZN"
+ },
+ "AMD": {
+ "name": "आरमिनियाई दिरà¥à¤¹à¤¾à¤®",
+ "symbol": "AMD"
+ },
+ "DZD": {
+ "name": "आलà¥à¤œà¥€à¤°à¥€ दीनार",
+ "symbol": "DZD"
+ },
+ "ALL": {
+ "name": "आलà¥à¤¬à¥‡à¤¨à¤¿à¤¯à¤¾ का लेक",
+ "symbol": "ALL"
+ },
+ "IDR": {
+ "name": "इणà¥à¤¡à¥‹à¤¨à¥‡à¤¶à¤¿à¤¯à¤¾à¤ˆ रà¥à¤ªà¤¿à¤¯à¤¾",
+ "symbol": "IDR"
+ },
+ "ILS": {
+ "name": "इसà¥à¤°à¤¾à¤‡à¤²à¥€ शेकेल",
+ "symbol": "₪"
+ },
+ "ETB": {
+ "name": "ईथिओपिया का बीरà¥à¤°",
+ "symbol": "ETB"
+ },
+ "IQD": {
+ "name": "ईराक़ी दीनार",
+ "symbol": "IQD"
+ },
+ "IRR": {
+ "name": "ईरानी रीयाल",
+ "symbol": "IRR"
+ },
+ "XCD": {
+ "name": "ईसà¥à¤Ÿ करिबियन डॉलर",
+ "symbol": "EC$"
+ },
+ "UZS": {
+ "name": "ऊज़बेक सà¥à¤®",
+ "symbol": "UZS"
+ },
+ "KPW": {
+ "name": "ऊतà¥à¤¤à¤° कोरियाई वोन",
+ "symbol": "KPW"
+ },
+ "UYU": {
+ "name": "ऊरà¥à¤—à¥à¤ का ऊरà¥à¤—à¥à¤†à¤¯à¥‹ पेसो",
+ "symbol": "UYU"
+ },
+ "AOA": {
+ "name": "à¤à¤‚गोला कà¥à¤µà¤¾à¤¨à¤œà¤¼à¤¾",
+ "symbol": "AOA"
+ },
+ "SVC": {
+ "name": "à¤à¤² सालवादर कोलोन",
+ "symbol": "SVC"
+ },
+ "ERN": {
+ "name": "à¤à¤°à¤¿à¤¤à¥à¤°à¥€à¤¯à¤¾ का नाफ़का",
+ "symbol": "ERN"
+ },
+ "AUD": {
+ "name": "ऑसà¥à¤Ÿà¥à¤°à¥‡à¤²à¤¿à¤¯à¤¨ डॉलर",
+ "symbol": "A$"
+ },
+ "OMR": {
+ "name": "ओमानी रियाल",
+ "symbol": "OMR"
+ },
+ "QAR": {
+ "name": "क़तारी रीयाल",
+ "symbol": "QAR"
+ },
+ "CAD": {
+ "name": "कनेडियन डॉलर",
+ "symbol": "CA$"
+ },
+ "KHR": {
+ "name": "कंबोडिया का रिà¤à¤²",
+ "symbol": "KHR"
+ },
+ "KZT": {
+ "name": "क़ाज़ाख़सà¥à¤¤à¤¾à¤¨ तेंगे",
+ "symbol": "KZT"
+ },
+ "CVE": {
+ "name": "काप वेरà¥à¤¦à¥‡ का à¤à¤¸à¥à¤•à¥à¤¦à¥‹",
+ "symbol": "CVE"
+ },
+ "KES": {
+ "name": "किनियाई शीलींग",
+ "symbol": "KES"
+ },
+ "KGS": {
+ "name": "क़ीरà¥à¤—़ीज़सà¥à¤¤à¤¾à¤¨à¥€ सोम",
+ "symbol": "KGS"
+ },
+ "KWD": {
+ "name": "क़à¥à¤µà¥ˆà¤¤à¥€ दीनार",
+ "symbol": "KWD"
+ },
+ "KYD": {
+ "name": "कैमान दà¥à¤µà¥€à¤ª का डॉलर",
+ "symbol": "KYD"
+ },
+ "CDF": {
+ "name": "कॉंगोलीज़ फà¥à¤°à¤¾à¤",
+ "symbol": "CDF"
+ },
+ "CRC": {
+ "name": "कॉसà¥à¤Ÿà¤¾ रीका का कोलोन",
+ "symbol": "CRC"
+ },
+ "KMF": {
+ "name": "कोमोरो का फà¥à¤°à¤¾à¤",
+ "symbol": "KMF"
+ },
+ "COP": {
+ "name": "कोलमà¥à¤¬à¤¿à¤¯à¤¾à¤ˆ पेसो",
+ "symbol": "COP"
+ },
+ "CUP": {
+ "name": "कà¥à¤¯à¥à¤¬à¤¾ का पेसो",
+ "symbol": "CUP"
+ },
+ "HRK": {
+ "name": "कà¥à¤°à¥‹à¤à¤¶à¤¿à¤¯à¤¾à¤ˆ कà¥à¤¨à¤¾",
+ "symbol": "HRK"
+ },
+ "GMD": {
+ "name": "गाà¤à¤¬à¤¿à¤¯à¤¾ का दलासी",
+ "symbol": "GMD"
+ },
+ "GNF": {
+ "name": "गीनी फà¥à¤°à¤¾à¤",
+ "symbol": "GNF"
+ },
+ "GYD": {
+ "name": "गà¥à¤¯à¤¾à¤¨à¤¾ डॉलर",
+ "symbol": "GYD"
+ },
+ "GTQ": {
+ "name": "गà¥à¤µà¤¾à¤¤à¥‡à¤®à¤¾à¤²à¤¾ क़à¥à¤µà¥‡à¤¤à¥à¤œà¤¼à¤¾à¤²",
+ "symbol": "GTQ"
+ },
+ "GHS": {
+ "name": "घाना चेदी",
+ "symbol": "GHS"
+ },
+ "CLP": {
+ "name": "चिली पेसो",
+ "symbol": "CLP"
+ },
+ "CNY": {
+ "name": "चीनी यà¥à¤†à¤¨ रेनमीनबी",
+ "symbol": "CNÂ¥"
+ },
+ "CZK": {
+ "name": "चेक गनतंतà¥à¤° का कोरà¥à¤¨à¤¾",
+ "symbol": "CZK"
+ },
+ "JMD": {
+ "name": "जमाईका का डॉलर",
+ "symbol": "JMD"
+ },
+ "JPY": {
+ "name": "जापानी येन",
+ "symbol": "JPÂ¥"
+ },
+ "ZMW": {
+ "name": "ज़ामà¥à¤¬à¤¿à¤¯à¤¾à¤ˆ कà¥à¤µà¤¾à¤šà¤¾",
+ "symbol": "ZMW"
+ },
+ "DJF": {
+ "name": "जीबà¥à¤¤à¥€ फà¥à¤°à¤¾à¤",
+ "symbol": "DJF"
+ },
+ "GIP": {
+ "name": "जीबà¥à¤°à¤¾à¤²à¤Ÿà¤° का पौणà¥à¤¡",
+ "symbol": "GIP"
+ },
+ "GEL": {
+ "name": "जॉरà¥à¤œà¤¿à¤¯à¤¾ का लारी",
+ "symbol": "GEL"
+ },
+ "JOD": {
+ "name": "जोरà¥à¤¡à¤¨à¥€ दीनार",
+ "symbol": "JOD"
+ },
+ "TOP": {
+ "name": "टॉंगा पाईंगा",
+ "symbol": "TOP"
+ },
+ "DKK": {
+ "name": "डेनमारà¥à¤• का कà¥à¤°à¥‹à¤¨",
+ "symbol": "DKK"
+ },
+ "DOP": {
+ "name": "डॉमीनीकन पेसो",
+ "symbol": "DOP"
+ },
+ "TWD": {
+ "name": "ताईवानी नया डॉलर",
+ "symbol": "NT$"
+ },
+ "TJS": {
+ "name": "ताजीक़ीसà¥à¤¤à¤¾à¤¨à¥€ सोमोनी",
+ "symbol": "TJS"
+ },
+ "TZS": {
+ "name": "तानà¥à¤œà¤¼à¥‡à¤¨à¤¿à¤¯à¤¾à¤ˆ शीलींग",
+ "symbol": "TZS"
+ },
+ "TRY": {
+ "name": "तà¥à¤°à¥à¤•à¥€ नया लीरा",
+ "symbol": "TRY"
+ },
+ "TND": {
+ "name": "तà¥à¤¯à¥à¤¨à¥€à¤¸à¥€ दीनर",
+ "symbol": "TND"
+ },
+ "TTD": {
+ "name": "तà¥à¤°à¥€à¤¨à¥€à¤¦à¤¾à¤¦ à¤à¤µà¤‚ टोबागो डॉलर",
+ "symbol": "TTD"
+ },
+ "THB": {
+ "name": "थाई बाहà¥à¤Ÿ",
+ "symbol": "THB"
+ },
+ "ZAR": {
+ "name": "दकà¥à¤·à¤¿à¤£ अफ़à¥à¤°à¥€à¤•à¥€ रॅणà¥à¤¡",
+ "symbol": "ZAR"
+ },
+ "KRW": {
+ "name": "दकà¥à¤·à¤¿à¤£ कोरियाई वोन",
+ "symbol": "â‚©"
+ },
+ "NAD": {
+ "name": "नमीबिया डॉलर",
+ "symbol": "NAD"
+ },
+ "NGN": {
+ "name": "नाईजीरीयाई नाईरा",
+ "symbol": "NGN"
+ },
+ "NIO": {
+ "name": "नीकारागà¥à¤†à¤ˆ सà¥à¤µà¤°à¥à¤£ कोरà¥à¤¦à¥‹à¤¬à¤¾",
+ "symbol": "NIO"
+ },
+ "ANG": {
+ "name": "नेदरलैणà¥à¤¡ à¤à¤¨à¥à¤Ÿà¥€à¤²à¥€à¤œà¤¼ का गीलà¥à¤¡à¤°",
+ "symbol": "ANG"
+ },
+ "NPR": {
+ "name": "नेपाली रà¥à¤ªà¥€",
+ "symbol": "NPR"
+ },
+ "NOK": {
+ "name": "नॉरà¥à¤µà¥‡ का कà¥à¤°à¥‹à¤¨",
+ "symbol": "NOK"
+ },
+ "NZD": {
+ "name": "नà¥à¤¯à¥‚ज़ीलैंड डॉलर",
+ "symbol": "NZ$"
+ },
+ "PAB": {
+ "name": "पनामा का बालबोआ",
+ "symbol": "PAB"
+ },
+ "PKR": {
+ "name": "पाकिसà¥à¤¤à¤¾à¤¨à¥€ रà¥à¤ªà¤¯à¤¾",
+ "symbol": "PKR"
+ },
+ "PGK": {
+ "name": "पापà¥à¤† नà¥à¤¯à¥ गीनी का कीना",
+ "symbol": "PGK"
+ },
+ "PYG": {
+ "name": "पारागà¥à¤à¤ˆ गà¥à¤†à¤°à¤¾à¤¨à¥€",
+ "symbol": "PYG"
+ },
+ "PEN": {
+ "name": "पेरà¥à¤µà¤¾à¤ˆ नया सोल",
+ "symbol": "PEN"
+ },
+ "PLN": {
+ "name": "पोलिश ज़à¥à¤²à¥‰à¤Ÿà¥€",
+ "symbol": "PLN"
+ },
+ "FKP": {
+ "name": "फालà¥à¤•à¤²à¥ˆà¤£à¥à¤¡ दà¥à¤µà¥€à¤ª पौणà¥à¤¡",
+ "symbol": "FKP"
+ },
+ "FJD": {
+ "name": "फ़िजी का डॉलर",
+ "symbol": "FJD"
+ },
+ "PHP": {
+ "name": "फ़िलिपीन का पेसो",
+ "symbol": "PHP"
+ },
+ "XPF": {
+ "name": "फà¥à¤°à¤¾à¤¨à¤¸à¥€à¤¸à¥€ फेदेरेशनी फà¥à¤°à¤¾à¤",
+ "symbol": "CFPF"
+ },
+ "XOF": {
+ "name": "फà¥à¤°à¤¾à¤¨à¤¸à¥€à¤¸à¥€ फेदेरेशनी बीसीà¤à¤†à¤“ फà¥à¤°à¤¾à¤",
+ "symbol": "CFA"
+ },
+ "BMD": {
+ "name": "बरमà¥à¤¡à¥€ डॉलर",
+ "symbol": "BMD"
+ },
+ "BGN": {
+ "name": "बलà¥à¤—ेरियाई लेव",
+ "symbol": "BGN"
+ },
+ "BSD": {
+ "name": "बहामा डॉलर",
+ "symbol": "BSD"
+ },
+ "BDT": {
+ "name": "बांगलादेश टका",
+ "symbol": "BDT"
+ },
+ "BBD": {
+ "name": "बारबादोस डॉलर",
+ "symbol": "BBD"
+ },
+ "BHD": {
+ "name": "बाहरैनी दीनार",
+ "symbol": "BHD"
+ },
+ "BIF": {
+ "name": "बà¥à¤°à¥à¤‚दी फà¥à¤°à¤¾à¤",
+ "symbol": "BIF"
+ },
+ "BYR": {
+ "name": "बेलारà¥à¤¸à¥€ रूबल",
+ "symbol": "BYR"
+ },
+ "BZD": {
+ "name": "बेलीज़ डॉलर",
+ "symbol": "BZD"
+ },
+ "BWP": {
+ "name": "बोटà¥à¤¸à¤µà¤¾à¤¨à¤¾ का पà¥à¤²à¤¾à¤Ÿ",
+ "symbol": "BWP"
+ },
+ "BOB": {
+ "name": "बोलिवियानो",
+ "symbol": "BOB"
+ },
+ "BAM": {
+ "name": "बोसनिया हेरà¥à¤œà¤¼à¥‡à¤—ोविना कनवरà¥à¤Ÿà¥€à¤¬à¤² मारà¥à¤•",
+ "symbol": "BAM"
+ },
+ "BRL": {
+ "name": "बà¥à¤°à¤œà¤¼à¥€à¤²à¥€ रेयाल",
+ "symbol": "R$"
+ },
+ "GBP": {
+ "name": "बà¥à¤°à¤¿à¤¤à¤¨ का पौणà¥à¤¡ सà¥à¤Ÿà¤°à¥à¤²à¤¿à¤—",
+ "symbol": "£"
+ },
+ "BND": {
+ "name": "बà¥à¤°à¥à¤¨à¤ˆ डॉलर",
+ "symbol": "BND"
+ },
+ "BTN": {
+ "name": "भà¥à¤¤à¤¾à¤¨ का नगà¥à¤²à¤¤à¥à¤°à¥à¤®",
+ "symbol": "BTN"
+ },
+ "MYR": {
+ "name": "मलेशियन रिंगित",
+ "symbol": "MYR"
+ },
+ "MKD": {
+ "name": "मसेदोनियाई दीनार",
+ "symbol": "MKD"
+ },
+ "MOP": {
+ "name": "माकाव पाताचा",
+ "symbol": "MOP"
+ },
+ "MGA": {
+ "name": "मादागासà¥à¤•à¤°à¥€ आरिआरी",
+ "symbol": "MGA"
+ },
+ "MVR": {
+ "name": "मालदीव दà¥à¤µà¥€à¤ª का रूफिया",
+ "symbol": "MVR"
+ },
+ "MWK": {
+ "name": "मालवी कà¥à¤µà¤¾à¤šà¤¾",
+ "symbol": "MWK"
+ },
+ "EGP": {
+ "name": "मिसà¥à¤°à¥€ पाउणà¥à¤¡",
+ "symbol": "EGP"
+ },
+ "MXN": {
+ "name": "मेकà¥à¤¸à¤¿à¤•à¤¨ पेसो",
+ "symbol": "MX$"
+ },
+ "MZN": {
+ "name": "मोज़ांबीक मेतीकाल",
+ "symbol": "MZN"
+ },
+ "MAD": {
+ "name": "मोरकà¥à¤•à¤¿à¤¯ दिरà¥à¤¹à¤¾à¤®",
+ "symbol": "MAD"
+ },
+ "MUR": {
+ "name": "मोरिशियस का रूपी",
+ "symbol": "MUR"
+ },
+ "MDL": {
+ "name": "मोलà¥à¤¡à¥‹à¤µà¤¿à¤¯à¤¾à¤ˆ ल",
+ "symbol": "MDL"
+ },
+ "MNT": {
+ "name": "मौंगोलीयाई तà¥à¤—à¥à¤°à¥€à¤•",
+ "symbol": "MNT"
+ },
+ "MRO": {
+ "name": "मौरिटानी ऊगà¥à¤¯à¤¾",
+ "symbol": "MRO"
+ },
+ "MMK": {
+ "name": "मà¥à¤¯à¤¾à¤¨à¤®à¤¾à¤°à¥€ कà¥à¤¯à¤¾à¤Ÿ",
+ "symbol": "MMK"
+ },
+ "YER": {
+ "name": "यमनी रीयाल",
+ "symbol": "YER"
+ },
+ "UAH": {
+ "name": "यà¥à¤•à¥à¤°à¥‡à¤¨à¥€ हà¥à¤°à¥€à¤µà¤¨à¤¿à¤¯à¤¾",
+ "symbol": "UAH"
+ },
+ "UGX": {
+ "name": "यà¥à¤—ाà¤à¤¡à¤¾à¤ˆ शीलींग",
+ "symbol": "UGX"
+ },
+ "EUR": {
+ "name": "यà¥à¤°à¥‹",
+ "symbol": "€"
+ },
+ "INR": {
+ "name": "रां",
+ "symbol": "₹"
+ },
+ "RWF": {
+ "name": "रà¥à¤†à¤à¤¦à¤¾ फà¥à¤°à¤¾à¤",
+ "symbol": "RWF"
+ },
+ "RUB": {
+ "name": "रूसी रूबल",
+ "symbol": "RUB"
+ },
+ "RON": {
+ "name": "रोमानियाई ल",
+ "symbol": "RON"
+ },
+ "LSL": {
+ "name": "लसोथो का लोटी",
+ "symbol": "LSL"
+ },
+ "LAK": {
+ "name": "लाओस का कीप",
+ "symbol": "LAK"
+ },
+ "LTL": {
+ "name": "लिथà¥à¤†à¤¨à¤¿à¤¯à¤¾à¤ˆ लिता",
+ "symbol": "LTL"
+ },
+ "LYD": {
+ "name": "लिबियाई दीनार",
+ "symbol": "LYD"
+ },
+ "LBP": {
+ "name": "लीबानी पौंड",
+ "symbol": "LBP"
+ },
+ "LRD": {
+ "name": "लीबेरियाई डॉलर",
+ "symbol": "LRD"
+ },
+ "VUV": {
+ "name": "वनà¥à¤†à¤Ÿà¥ वटà¥",
+ "symbol": "VUV"
+ },
+ "VND": {
+ "name": "वीयतनामी डॉंग",
+ "symbol": "â‚«"
+ },
+ "VEF": {
+ "name": "वेनेज़à¥à¤à¤²à¤¾à¤ˆ बोलिवार",
+ "symbol": "VEF"
+ },
+ "WST": {
+ "name": "वेसà¥à¤Ÿà¤°à¥à¤¨ समोआ ताला",
+ "symbol": "WST"
+ },
+ "LKR": {
+ "name": "शà¥à¤°à¥€ लंका रूपी",
+ "symbol": "LKR"
+ },
+ "AED": {
+ "name": "संयà¥à¤•à¥à¤¤ अरब अमीरात का दिरà¥à¤¹à¤¾à¤®",
+ "symbol": "AED"
+ },
+ "RSD": {
+ "name": "सरà¥à¤¬à¤¿à¤¯à¤¾à¤ˆ दिनार",
+ "symbol": "RSD"
+ },
+ "SAR": {
+ "name": "साउदी रियाल",
+ "symbol": "SAR"
+ },
+ "STD": {
+ "name": "साà¤à¤µ तोमे à¤à¤µà¤‚ पà¥à¤°à¥€à¤¨à¥à¤¸à¥€à¤ªà¥‡ का डोबà¥à¤°à¤¾",
+ "symbol": "STD"
+ },
+ "SGD": {
+ "name": "सिंगापà¥à¤° डॉलर",
+ "symbol": "SGD"
+ },
+ "SLL": {
+ "name": "सीयेरा लीयोनेई लीयोने",
+ "symbol": "SLL"
+ },
+ "SYP": {
+ "name": "सीरियाई पौंड",
+ "symbol": "SYP"
+ },
+ "SDG": {
+ "name": "सà¥à¤¦à¤¾à¤¨à¥€ पौंड",
+ "symbol": "SDG"
+ },
+ "SRD": {
+ "name": "सà¥à¤°à¥€à¤¨à¤¾à¤® डॉलर",
+ "symbol": "SRD"
+ },
+ "SHP": {
+ "name": "सेंट हेलीना पौंड",
+ "symbol": "SHP"
+ },
+ "SCR": {
+ "name": "सेशेल रूपी",
+ "symbol": "SCR"
+ },
+ "SOS": {
+ "name": "सोमाली शीलींग",
+ "symbol": "SOS"
+ },
+ "SBD": {
+ "name": "सोलोमन दà¥à¤µà¥€à¤ª का डॉलर",
+ "symbol": "SBD"
+ },
+ "SZL": {
+ "name": "सà¥à¤µà¤¾à¤œà¤¼à¥€à¤²à¥ˆà¤£à¥à¤¡ लीलांगेनी",
+ "symbol": "SZL"
+ },
+ "CHF": {
+ "name": "सà¥à¤µà¤¿à¤¸ फ़à¥à¤°à¥ˆà¤‚क",
+ "symbol": "CHF"
+ },
+ "SEK": {
+ "name": "सà¥à¤µà¥€à¤¡à¤¨ कà¥à¤°à¥‹à¤¨à¤¾",
+ "symbol": "SEK"
+ },
+ "HUF": {
+ "name": "हंगेरियाई फ़ोरिणà¥à¤Ÿ",
+ "symbol": "HUF"
+ },
+ "HTG": {
+ "name": "हाईती गà¥à¤°à¥à¤¦",
+ "symbol": "HTG"
+ },
+ "HKD": {
+ "name": "हाà¤à¤— काà¤à¤— डॉलर",
+ "symbol": "HK$"
+ },
+ "HNL": {
+ "name": "हॉंडà¥à¤°à¤¾à¤¸ लेंपीरा",
+ "symbol": "HNL"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/currency/bs-Cyrl.json b/library/intl/resources/currency/bs-Cyrl.json
new file mode 100644
index 000000000..87889b7e6
--- /dev/null
+++ b/library/intl/resources/currency/bs-Cyrl.json
@@ -0,0 +1,634 @@
+{
+ "XOF": {
+ "name": "CFA франак BCEAO",
+ "symbol": "CFA"
+ },
+ "XAF": {
+ "name": "CFA франак BEAC",
+ "symbol": "FCFA"
+ },
+ "XPF": {
+ "name": "CFP франак",
+ "symbol": "CFPF"
+ },
+ "SSP": {
+ "name": "SSP",
+ "symbol": "SSP"
+ },
+ "AFN": {
+ "name": "ÐвганиÑтанÑки авган",
+ "symbol": "AFN"
+ },
+ "AZN": {
+ "name": "ÐзербејџанÑки манат",
+ "symbol": "AZN"
+ },
+ "ALL": {
+ "name": "ÐлбанÑки лек",
+ "symbol": "ALL"
+ },
+ "DZD": {
+ "name": "ÐлжирÑки динар",
+ "symbol": "DZD"
+ },
+ "USD": {
+ "name": "Ðмерички долар",
+ "symbol": "US$"
+ },
+ "AOA": {
+ "name": "анголÑка кванза",
+ "symbol": "AOA"
+ },
+ "ARS": {
+ "name": "аргентинÑки пезо",
+ "symbol": "ARS"
+ },
+ "AWG": {
+ "name": "ÐрубанÑки флорин",
+ "symbol": "AWG"
+ },
+ "AUD": {
+ "name": "ÐуÑтралијÑки долар",
+ "symbol": "A$"
+ },
+ "BDT": {
+ "name": "Бангладешка така",
+ "symbol": "BDT"
+ },
+ "BBD": {
+ "name": "Барбадошки долар",
+ "symbol": "BBD"
+ },
+ "BSD": {
+ "name": "БахамÑки долар",
+ "symbol": "BSD"
+ },
+ "BHD": {
+ "name": "БахреинÑки динар",
+ "symbol": "BHD"
+ },
+ "BZD": {
+ "name": "Белизе долар",
+ "symbol": "BZD"
+ },
+ "BYR": {
+ "name": "БелоруÑка рубља",
+ "symbol": "BYR"
+ },
+ "BMD": {
+ "name": "БермудÑки долар",
+ "symbol": "BMD"
+ },
+ "BOB": {
+ "name": "БоливијÑки Боливиано",
+ "symbol": "BOB"
+ },
+ "BWP": {
+ "name": "БоцванÑка пула",
+ "symbol": "BWP"
+ },
+ "BRL": {
+ "name": "БразилÑки Реал",
+ "symbol": "R$"
+ },
+ "GBP": {
+ "name": "БританÑка фунта Ñтерлинга",
+ "symbol": "£"
+ },
+ "BND": {
+ "name": "БрунејÑки долар",
+ "symbol": "BND"
+ },
+ "BGN": {
+ "name": "БугарÑки лев",
+ "symbol": "BGN"
+ },
+ "BIF": {
+ "name": "БурундÑки франак",
+ "symbol": "BIF"
+ },
+ "BTN": {
+ "name": "БутанÑки нгултрум",
+ "symbol": "BTN"
+ },
+ "VUV": {
+ "name": "ВануатÑки вату",
+ "symbol": "VUV"
+ },
+ "VEF": {
+ "name": "ВенецуеланÑки боливар",
+ "symbol": "VEF"
+ },
+ "VND": {
+ "name": "ВијетнамÑки донг",
+ "symbol": "â‚«"
+ },
+ "GMD": {
+ "name": "ГамбијÑки далаÑи",
+ "symbol": "GMD"
+ },
+ "GHS": {
+ "name": "ГанÑки цеди",
+ "symbol": "GHS"
+ },
+ "GTQ": {
+ "name": "ГватемалÑки квецал",
+ "symbol": "GTQ"
+ },
+ "GNF": {
+ "name": "ГвинејÑки франак",
+ "symbol": "GNF"
+ },
+ "GIP": {
+ "name": "Гибралташка фунта",
+ "symbol": "GIP"
+ },
+ "GEL": {
+ "name": "ГрузијÑки лари",
+ "symbol": "GEL"
+ },
+ "GYD": {
+ "name": "ГујанÑки долар",
+ "symbol": "GYD"
+ },
+ "DKK": {
+ "name": "ДанÑка круна",
+ "symbol": "DKK"
+ },
+ "DOP": {
+ "name": "ДоминиканÑки пезо",
+ "symbol": "DOP"
+ },
+ "EUR": {
+ "name": "Евро",
+ "symbol": "€"
+ },
+ "EGP": {
+ "name": "ЕгипатÑка фунта",
+ "symbol": "EGP"
+ },
+ "ERN": {
+ "name": "ЕритреанÑка накфа",
+ "symbol": "ERN"
+ },
+ "ETB": {
+ "name": "етиопијÑки бир",
+ "symbol": "ETB"
+ },
+ "ZMW": {
+ "name": "ЗамбијÑка квача",
+ "symbol": "ZMW"
+ },
+ "CVE": {
+ "name": "ЗеленортÑки еÑкудо",
+ "symbol": "CVE"
+ },
+ "ZWL": {
+ "name": "ЗимбабвеанÑки долар (2009)",
+ "symbol": "ZWL"
+ },
+ "ILS": {
+ "name": "ИзраелÑки нови шекел",
+ "symbol": "₪"
+ },
+ "INR": {
+ "name": "ИндијÑки Рупи",
+ "symbol": "₹"
+ },
+ "IDR": {
+ "name": "ИндонезијÑка рупиа",
+ "symbol": "IDR"
+ },
+ "IRR": {
+ "name": "ИранÑки риал",
+ "symbol": "IRR"
+ },
+ "IQD": {
+ "name": "Ирачки динар",
+ "symbol": "IQD"
+ },
+ "ISK": {
+ "name": "ИÑландÑка круна",
+ "symbol": "ISK"
+ },
+ "XCD": {
+ "name": "ИÑточно-карибÑки долар",
+ "symbol": "EC$"
+ },
+ "JMD": {
+ "name": "ЈамајÑки долар",
+ "symbol": "JMD"
+ },
+ "JPY": {
+ "name": "ЈапанÑки јен",
+ "symbol": "Â¥"
+ },
+ "YER": {
+ "name": "ЈеменÑки риал",
+ "symbol": "YER"
+ },
+ "AMD": {
+ "name": "ЈерменÑки драм",
+ "symbol": "AMD"
+ },
+ "JOD": {
+ "name": "ЈорданÑки динар",
+ "symbol": "JOD"
+ },
+ "ZAR": {
+ "name": "Јужно-афрички ранд",
+ "symbol": "ZAR"
+ },
+ "KRW": {
+ "name": "ЈужнокорејÑки Вон",
+ "symbol": "â‚©"
+ },
+ "KZT": {
+ "name": "КазахÑтанÑки тенџ",
+ "symbol": "KZT"
+ },
+ "KYD": {
+ "name": "КајманÑка оÑтрва долар",
+ "symbol": "KYD"
+ },
+ "KHR": {
+ "name": "КамбоџијÑки риел",
+ "symbol": "KHR"
+ },
+ "CAD": {
+ "name": "КанадÑки долар",
+ "symbol": "CA$"
+ },
+ "QAR": {
+ "name": "Катаршки ријал",
+ "symbol": "QAR"
+ },
+ "KES": {
+ "name": "КенијÑки шилинг",
+ "symbol": "KES"
+ },
+ "CNY": {
+ "name": "КинеÑки јуан ренминби",
+ "symbol": "CNÂ¥"
+ },
+ "KGS": {
+ "name": "КиргиÑтанÑки Ñом",
+ "symbol": "KGS"
+ },
+ "COP": {
+ "name": "КолумбијÑки пезо",
+ "symbol": "COP"
+ },
+ "KMF": {
+ "name": "КоморÑки франак",
+ "symbol": "KMF"
+ },
+ "BAM": {
+ "name": "Конвертибилна марка",
+ "symbol": "КМ"
+ },
+ "CDF": {
+ "name": "КонголÑки франак",
+ "symbol": "CDF"
+ },
+ "CRC": {
+ "name": "КоÑтариканÑки колон",
+ "symbol": "CRC"
+ },
+ "CUC": {
+ "name": "кубанÑки конвертибилни пеÑо",
+ "symbol": "CUC"
+ },
+ "CUP": {
+ "name": "КубанÑки пезо",
+ "symbol": "CUP"
+ },
+ "KWD": {
+ "name": "КувајтÑки динар",
+ "symbol": "KWD"
+ },
+ "LAK": {
+ "name": "Лаошки кип",
+ "symbol": "LAK"
+ },
+ "LBP": {
+ "name": "ЛебанÑка фунта",
+ "symbol": "LBP"
+ },
+ "LSL": {
+ "name": "ЛеÑото лоти",
+ "symbol": "LSL"
+ },
+ "LRD": {
+ "name": "ЛиберијÑки долар",
+ "symbol": "LRD"
+ },
+ "LYD": {
+ "name": "ЛибијÑки динар",
+ "symbol": "LYD"
+ },
+ "LTL": {
+ "name": "ЛитванÑки литаÑ",
+ "symbol": "LTL"
+ },
+ "HUF": {
+ "name": "МађарÑка форинта",
+ "symbol": "HUF"
+ },
+ "MOP": {
+ "name": "Маканишка патака",
+ "symbol": "MOP"
+ },
+ "MKD": {
+ "name": "МакедонÑки денар",
+ "symbol": "MKD"
+ },
+ "MWK": {
+ "name": "МалавијÑка квача",
+ "symbol": "MWK"
+ },
+ "MGA": {
+ "name": "МалагаÑијÑки ариари",
+ "symbol": "MGA"
+ },
+ "MVR": {
+ "name": "МалдивијÑка руфија",
+ "symbol": "MVR"
+ },
+ "MYR": {
+ "name": "МалезијÑки ринггит",
+ "symbol": "MYR"
+ },
+ "MAD": {
+ "name": "МароканÑки дирхам",
+ "symbol": "MAD"
+ },
+ "MRO": {
+ "name": "МауританијÑка угвија",
+ "symbol": "MRO"
+ },
+ "MUR": {
+ "name": "МаурицијÑки рупи",
+ "symbol": "MUR"
+ },
+ "MXN": {
+ "name": "МекÑички пезо",
+ "symbol": "MX$"
+ },
+ "MMK": {
+ "name": "Мјанмашки кјат",
+ "symbol": "MMK"
+ },
+ "MZN": {
+ "name": "МозамбијÑки метикал",
+ "symbol": "MZN"
+ },
+ "MDL": {
+ "name": "МолдовÑки љу",
+ "symbol": "MDL"
+ },
+ "MNT": {
+ "name": "МонголÑки тугрик",
+ "symbol": "MNT"
+ },
+ "NAD": {
+ "name": "намбијÑки долар",
+ "symbol": "NAD"
+ },
+ "NPR": {
+ "name": "ÐепалÑки рупи",
+ "symbol": "NPR"
+ },
+ "NGN": {
+ "name": "ÐигеријÑка наира",
+ "symbol": "NGN"
+ },
+ "NIO": {
+ "name": "ÐикарагванÑка златна кордоба",
+ "symbol": "NIO"
+ },
+ "TWD": {
+ "name": "Ðови тајванÑки долар",
+ "symbol": "NT$"
+ },
+ "NZD": {
+ "name": "ÐовозеландÑки долар",
+ "symbol": "NZ$"
+ },
+ "NOK": {
+ "name": "Ðорвешка круна",
+ "symbol": "NOK"
+ },
+ "OMR": {
+ "name": "ОманÑки ријал",
+ "symbol": "OMR"
+ },
+ "PKR": {
+ "name": "ПакиÑтанÑки рупи",
+ "symbol": "PKR"
+ },
+ "PAB": {
+ "name": "ПанамÑка балбоа",
+ "symbol": "PAB"
+ },
+ "PGK": {
+ "name": "Папуа ново-гвинејшка кина",
+ "symbol": "PGK"
+ },
+ "PYG": {
+ "name": "ПарагвајÑки гуарни",
+ "symbol": "PYG"
+ },
+ "PEN": {
+ "name": "ПеруанÑки нуево Ñол",
+ "symbol": "PEN"
+ },
+ "PLN": {
+ "name": "ПољÑки злот",
+ "symbol": "зл"
+ },
+ "RWF": {
+ "name": "РуанданÑки франак",
+ "symbol": "RWF"
+ },
+ "RON": {
+ "name": "РумунÑки леу",
+ "symbol": "RON"
+ },
+ "RUB": {
+ "name": "РуÑка рубља",
+ "symbol": "RUB"
+ },
+ "SVC": {
+ "name": "СалвадорÑки колон",
+ "symbol": "SVC"
+ },
+ "WST": {
+ "name": "СамоанÑка тала",
+ "symbol": "WST"
+ },
+ "STD": {
+ "name": "Сао Томе и Принципе добра",
+ "symbol": "STD"
+ },
+ "SAR": {
+ "name": "СаудијÑки ријал",
+ "symbol": "SAR"
+ },
+ "SHP": {
+ "name": "Св. јеленÑка фунта",
+ "symbol": "SHP"
+ },
+ "SZL": {
+ "name": "Свази лилангени",
+ "symbol": "SZL"
+ },
+ "KPW": {
+ "name": "СевернокорејÑки вон",
+ "symbol": "KPW"
+ },
+ "SCR": {
+ "name": "СејшелÑка рупија",
+ "symbol": "SCR"
+ },
+ "SLL": {
+ "name": "Сијера-леоншки леоне",
+ "symbol": "SLL"
+ },
+ "SGD": {
+ "name": "СингапурÑки долар",
+ "symbol": "SGD"
+ },
+ "SYP": {
+ "name": "СиријÑка фунта",
+ "symbol": "SYP"
+ },
+ "SBD": {
+ "name": "СоломонÑко-оÑтрвÑки долар",
+ "symbol": "SBD"
+ },
+ "SOS": {
+ "name": "СОмалијÑки шилинг",
+ "symbol": "SOS"
+ },
+ "RSD": {
+ "name": "СрпÑки динар",
+ "symbol": "дин."
+ },
+ "SDG": {
+ "name": "СуданÑка фунта",
+ "symbol": "SDG"
+ },
+ "SRD": {
+ "name": "СУринамÑки долар",
+ "symbol": "SRD"
+ },
+ "THB": {
+ "name": "Таи бахт",
+ "symbol": "THB"
+ },
+ "TJS": {
+ "name": "ТаљихиÑтанÑки Ñомони",
+ "symbol": "TJS"
+ },
+ "TZS": {
+ "name": "ТанзанијÑки шилинг",
+ "symbol": "TZS"
+ },
+ "TOP": {
+ "name": "Тонгоншка Панга",
+ "symbol": "TOP"
+ },
+ "TTD": {
+ "name": "Тринидад тобагошки долар",
+ "symbol": "TTD"
+ },
+ "TND": {
+ "name": "ТунизијÑки долар",
+ "symbol": "TND"
+ },
+ "TMT": {
+ "name": "ТуркмениÑтанÑки манат",
+ "symbol": "TMT"
+ },
+ "TRY": {
+ "name": "ТурÑка лира",
+ "symbol": "Тл"
+ },
+ "UGX": {
+ "name": "УгандÑки шилинг",
+ "symbol": "UGX"
+ },
+ "UZS": {
+ "name": "УзбекиÑтанÑки Ñом",
+ "symbol": "UZS"
+ },
+ "AED": {
+ "name": "Уједињени арапÑки емирати дирхам",
+ "symbol": "AED"
+ },
+ "UAH": {
+ "name": "УкрајинÑка хривња",
+ "symbol": "UAH"
+ },
+ "UYU": {
+ "name": "УругвајÑки пезо",
+ "symbol": "UYU"
+ },
+ "PHP": {
+ "name": "ФилипинÑки пезо",
+ "symbol": "PHP"
+ },
+ "FJD": {
+ "name": "Фиџи долар",
+ "symbol": "FJD"
+ },
+ "FKP": {
+ "name": "ФокландÑка оÑтрва фунта",
+ "symbol": "FKP"
+ },
+ "HTG": {
+ "name": "ХаићанÑки гурд",
+ "symbol": "HTG"
+ },
+ "ANG": {
+ "name": "ХоландÑки антили гилдер",
+ "symbol": "ANG"
+ },
+ "HKD": {
+ "name": "Хонгконшки долар",
+ "symbol": "HK$"
+ },
+ "HNL": {
+ "name": "Хондурашка лемпира",
+ "symbol": "HNL"
+ },
+ "HRK": {
+ "name": "ХрватÑка куна",
+ "symbol": "HRK"
+ },
+ "CZK": {
+ "name": "Чешка круна",
+ "symbol": "Кч"
+ },
+ "CLP": {
+ "name": "ЧилеанÑки пезо",
+ "symbol": "CLP"
+ },
+ "DJF": {
+ "name": "ÐибутанÑки франак",
+ "symbol": "DJF"
+ },
+ "CHF": {
+ "name": "ШвајцарÑки франак",
+ "symbol": "CHF"
+ },
+ "SEK": {
+ "name": "ШведÑка круна",
+ "symbol": "SEK"
+ },
+ "LKR": {
+ "name": "ШриланканÑки рупи",
+ "symbol": "LKR"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/currency/bs.json b/library/intl/resources/currency/bs.json
new file mode 100644
index 000000000..e86f73e94
--- /dev/null
+++ b/library/intl/resources/currency/bs.json
@@ -0,0 +1,634 @@
+{
+ "AFN": {
+ "name": "Afganistanski afgan",
+ "symbol": "AFN"
+ },
+ "ALL": {
+ "name": "Albanski lek",
+ "symbol": "ALL"
+ },
+ "DZD": {
+ "name": "Alžirski dinar",
+ "symbol": "DZD"
+ },
+ "USD": {
+ "name": "AmeriÄki dolar",
+ "symbol": "USD"
+ },
+ "AOA": {
+ "name": "Angolska kvanza",
+ "symbol": "AOA"
+ },
+ "ARS": {
+ "name": "Argentinski pezos",
+ "symbol": "ARS"
+ },
+ "AWG": {
+ "name": "Arubanski florin",
+ "symbol": "AWG"
+ },
+ "AUD": {
+ "name": "Australijski dolar",
+ "symbol": "AUD"
+ },
+ "AZN": {
+ "name": "Azerbejdžanski manat",
+ "symbol": "AZN"
+ },
+ "BSD": {
+ "name": "Bahamski dolar",
+ "symbol": "BSD"
+ },
+ "BHD": {
+ "name": "Bahreinski dinar",
+ "symbol": "BHD"
+ },
+ "BDT": {
+ "name": "Bangladeška taka",
+ "symbol": "BDT"
+ },
+ "BBD": {
+ "name": "Barbadoski dolar",
+ "symbol": "BBD"
+ },
+ "BZD": {
+ "name": "Belizeanski dolar",
+ "symbol": "BZD"
+ },
+ "BMD": {
+ "name": "Bermudski dolar",
+ "symbol": "BMD"
+ },
+ "BYR": {
+ "name": "Bjeloruska rublja",
+ "symbol": "BYR"
+ },
+ "BWP": {
+ "name": "Bocvanska pula",
+ "symbol": "BWP"
+ },
+ "BOB": {
+ "name": "Bolivijski boliviano",
+ "symbol": "BOB"
+ },
+ "BAM": {
+ "name": "Bosansko-HercegovaÄka konvertibilna marka",
+ "symbol": "KM"
+ },
+ "BRL": {
+ "name": "Brazilski real",
+ "symbol": "BRL"
+ },
+ "GBP": {
+ "name": "Britanska funta sterlinga",
+ "symbol": "GBP"
+ },
+ "BND": {
+ "name": "Brunejski dolar",
+ "symbol": "BND"
+ },
+ "BGN": {
+ "name": "Bugarski lev",
+ "symbol": "BGN"
+ },
+ "BIF": {
+ "name": "Burundski franak",
+ "symbol": "BIF"
+ },
+ "BTN": {
+ "name": "Butanski ngultrum",
+ "symbol": "BTN"
+ },
+ "XOF": {
+ "name": "CFA franak BCEAO",
+ "symbol": "CFA"
+ },
+ "XAF": {
+ "name": "CFA franak BEAC",
+ "symbol": "FCFA"
+ },
+ "XPF": {
+ "name": "CFP franak",
+ "symbol": "XPF"
+ },
+ "CZK": {
+ "name": "Češka kruna",
+ "symbol": "CZK"
+ },
+ "CLP": {
+ "name": "ÄŒileanski pezos",
+ "symbol": "CLP"
+ },
+ "DKK": {
+ "name": "Danska kruna",
+ "symbol": "DKK"
+ },
+ "AED": {
+ "name": "Dirham Ujedinjenih Arapskih Emirata",
+ "symbol": "AED"
+ },
+ "STD": {
+ "name": "Dobra Sao Toma i Principa",
+ "symbol": "STD"
+ },
+ "DOP": {
+ "name": "Dominikanski pezos",
+ "symbol": "DOP"
+ },
+ "DJF": {
+ "name": "Džibutski franak",
+ "symbol": "DJF"
+ },
+ "EGP": {
+ "name": "Egipatska funta",
+ "symbol": "EGP"
+ },
+ "ERN": {
+ "name": "Eritrejska nakfa",
+ "symbol": "ERN"
+ },
+ "ETB": {
+ "name": "Etiopski bir",
+ "symbol": "ETB"
+ },
+ "EUR": {
+ "name": "Euro",
+ "symbol": "€"
+ },
+ "FJD": {
+ "name": "Fidži dolar",
+ "symbol": "FJD"
+ },
+ "PHP": {
+ "name": "Filipinski pezos",
+ "symbol": "PHP"
+ },
+ "FKP": {
+ "name": "Folklandska funta",
+ "symbol": "FKP"
+ },
+ "GMD": {
+ "name": "Gambijski dalasi",
+ "symbol": "GMD"
+ },
+ "GHS": {
+ "name": "Ganski cedi",
+ "symbol": "GHS"
+ },
+ "GIP": {
+ "name": "Gibraltarska funta",
+ "symbol": "GIP"
+ },
+ "GEL": {
+ "name": "Gruzijski lari",
+ "symbol": "GEL"
+ },
+ "ANG": {
+ "name": "Gulden Holandskih Antila",
+ "symbol": "ANG"
+ },
+ "GYD": {
+ "name": "Gvajanski dolar",
+ "symbol": "GYD"
+ },
+ "GTQ": {
+ "name": "Gvatemalski kecal",
+ "symbol": "GTQ"
+ },
+ "GNF": {
+ "name": "Gvinejski franak",
+ "symbol": "GNF"
+ },
+ "HTG": {
+ "name": "Haićanski gurd",
+ "symbol": "HTG"
+ },
+ "HNL": {
+ "name": "Honduraska lempira",
+ "symbol": "HNL"
+ },
+ "HKD": {
+ "name": "Honkonški dolar",
+ "symbol": "HKD"
+ },
+ "HRK": {
+ "name": "Hrvatska kuna",
+ "symbol": "kn"
+ },
+ "INR": {
+ "name": "Indijska rupija",
+ "symbol": "₹"
+ },
+ "IDR": {
+ "name": "Indonežanska rupija",
+ "symbol": "IDR"
+ },
+ "IQD": {
+ "name": "IraÄki dinar",
+ "symbol": "IQD"
+ },
+ "IRR": {
+ "name": "Iranski rijal",
+ "symbol": "IRR"
+ },
+ "ISK": {
+ "name": "Islandska kruna",
+ "symbol": "ISK"
+ },
+ "XCD": {
+ "name": "IstoÄnokaripski dolar",
+ "symbol": "XCD"
+ },
+ "ILS": {
+ "name": "Izraelski novi Å¡ekel",
+ "symbol": "ILS"
+ },
+ "JMD": {
+ "name": "Jamajski dolar",
+ "symbol": "JMD"
+ },
+ "JPY": {
+ "name": "Japanski jen",
+ "symbol": "Â¥"
+ },
+ "YER": {
+ "name": "Jemenski rijal",
+ "symbol": "YER"
+ },
+ "AMD": {
+ "name": "Jermenski dram",
+ "symbol": "AMD"
+ },
+ "JOD": {
+ "name": "Jordanski dinar",
+ "symbol": "JOD"
+ },
+ "ZAR": {
+ "name": "JužnoafriÄki rand",
+ "symbol": "ZAR"
+ },
+ "KRW": {
+ "name": "Južnokorejski von",
+ "symbol": "â‚©"
+ },
+ "SSP": {
+ "name": "Južnosudanska funta",
+ "symbol": "SSP"
+ },
+ "KYD": {
+ "name": "Kajmanski dolar",
+ "symbol": "KYD"
+ },
+ "KHR": {
+ "name": "Kambodžanski rijel",
+ "symbol": "KHR"
+ },
+ "CAD": {
+ "name": "Kanadski dolar",
+ "symbol": "CAD"
+ },
+ "QAR": {
+ "name": "Katarski rijal",
+ "symbol": "QAR"
+ },
+ "KZT": {
+ "name": "Kazahstanski tenge",
+ "symbol": "KZT"
+ },
+ "KES": {
+ "name": "Kenijski Å¡iling",
+ "symbol": "KES"
+ },
+ "PGK": {
+ "name": "Kina Papue Nove Gvineje",
+ "symbol": "PGK"
+ },
+ "CNY": {
+ "name": "Kineski juan",
+ "symbol": "CNY"
+ },
+ "KGS": {
+ "name": "Kirgistanski som",
+ "symbol": "KGS"
+ },
+ "COP": {
+ "name": "Kolumbijski pezos",
+ "symbol": "COP"
+ },
+ "KMF": {
+ "name": "Komorski franak",
+ "symbol": "KMF"
+ },
+ "CDF": {
+ "name": "Kongoanski franak",
+ "symbol": "CDF"
+ },
+ "CRC": {
+ "name": "Kostarikanski kolon",
+ "symbol": "CRC"
+ },
+ "CUC": {
+ "name": "Kubanski konvertibilni pezos",
+ "symbol": "CUC"
+ },
+ "CUP": {
+ "name": "kubanski pezos",
+ "symbol": "CUP"
+ },
+ "KWD": {
+ "name": "Kuvajtski dinar",
+ "symbol": "KWD"
+ },
+ "LAK": {
+ "name": "Laoski kip",
+ "symbol": "LAK"
+ },
+ "LSL": {
+ "name": "Lesotski loti",
+ "symbol": "LSL"
+ },
+ "LBP": {
+ "name": "Libanska funta",
+ "symbol": "LBP"
+ },
+ "LRD": {
+ "name": "Liberijski dolar",
+ "symbol": "LRD"
+ },
+ "LYD": {
+ "name": "Libijski dinar",
+ "symbol": "LYD"
+ },
+ "LTL": {
+ "name": "Litvanski litas",
+ "symbol": "LTL"
+ },
+ "HUF": {
+ "name": "Mađarska forinta",
+ "symbol": "HUF"
+ },
+ "MOP": {
+ "name": "Makaonska pataka",
+ "symbol": "MOP"
+ },
+ "MKD": {
+ "name": "Makedonski denar",
+ "symbol": "MKD"
+ },
+ "MGA": {
+ "name": "Malagaski ariari",
+ "symbol": "MGA"
+ },
+ "MWK": {
+ "name": "Malavska kvaÄa",
+ "symbol": "MWK"
+ },
+ "MVR": {
+ "name": "Maldivska rufija",
+ "symbol": "MVR"
+ },
+ "MYR": {
+ "name": "Malezijski ringit",
+ "symbol": "MYR"
+ },
+ "MAD": {
+ "name": "Marokanski dirham",
+ "symbol": "MAD"
+ },
+ "MUR": {
+ "name": "Mauricijska rupija",
+ "symbol": "MUR"
+ },
+ "MRO": {
+ "name": "Mauritanijska ugvija",
+ "symbol": "MRO"
+ },
+ "MXN": {
+ "name": "MeksiÄki pezos",
+ "symbol": "MXN"
+ },
+ "MMK": {
+ "name": "Mijanmarski kjat",
+ "symbol": "MMK"
+ },
+ "MDL": {
+ "name": "Moldavski lev",
+ "symbol": "MDL"
+ },
+ "MNT": {
+ "name": "Mongolski tugrik",
+ "symbol": "MNT"
+ },
+ "MZN": {
+ "name": "Mozambijski metikal",
+ "symbol": "MZN"
+ },
+ "NAD": {
+ "name": "Namibijski dolar",
+ "symbol": "NAD"
+ },
+ "NPR": {
+ "name": "Nepalska rupija",
+ "symbol": "NPR"
+ },
+ "NGN": {
+ "name": "Nigerijska naira",
+ "symbol": "NGN"
+ },
+ "NIO": {
+ "name": "Nikaragvanska kordoba",
+ "symbol": "NIO"
+ },
+ "NOK": {
+ "name": "Norveška kruna",
+ "symbol": "NOK"
+ },
+ "TWD": {
+ "name": "Novi tajvanski dolar",
+ "symbol": "NT$"
+ },
+ "NZD": {
+ "name": "Novozelandski dolar",
+ "symbol": "NZD"
+ },
+ "OMR": {
+ "name": "Omanski rijal",
+ "symbol": "OMR"
+ },
+ "PKR": {
+ "name": "Pakistanska rupija",
+ "symbol": "PKR"
+ },
+ "PAB": {
+ "name": "Panamska balboa",
+ "symbol": "PAB"
+ },
+ "PYG": {
+ "name": "Paragvajski gvarani",
+ "symbol": "PYG"
+ },
+ "PEN": {
+ "name": "Peruanski novi sol",
+ "symbol": "PEN"
+ },
+ "PLN": {
+ "name": "Poljski zlot",
+ "symbol": "PLN"
+ },
+ "RWF": {
+ "name": "Ruandski franak",
+ "symbol": "RWF"
+ },
+ "RON": {
+ "name": "Rumunski lev",
+ "symbol": "RON"
+ },
+ "RUB": {
+ "name": "Ruska rublja",
+ "symbol": "RUB"
+ },
+ "SVC": {
+ "name": "Salvadorski kolon",
+ "symbol": "SVC"
+ },
+ "WST": {
+ "name": "Samoanska tala",
+ "symbol": "WST"
+ },
+ "SAR": {
+ "name": "Saudijski rijal",
+ "symbol": "SAR"
+ },
+ "SCR": {
+ "name": "Sejšelska rupija",
+ "symbol": "SCR"
+ },
+ "SLL": {
+ "name": "Sijeraleonski leone",
+ "symbol": "SLL"
+ },
+ "SGD": {
+ "name": "Singapurski dolar",
+ "symbol": "SGD"
+ },
+ "SYP": {
+ "name": "Sirijska funta",
+ "symbol": "SYP"
+ },
+ "KPW": {
+ "name": "Sjevernokorejski von",
+ "symbol": "KPW"
+ },
+ "SBD": {
+ "name": "Solomonski dolar",
+ "symbol": "SBD"
+ },
+ "SOS": {
+ "name": "Somalski Å¡iling",
+ "symbol": "SOS"
+ },
+ "RSD": {
+ "name": "Srpski dinar",
+ "symbol": "din."
+ },
+ "SDG": {
+ "name": "Sudanska funta",
+ "symbol": "SDG"
+ },
+ "SRD": {
+ "name": "Surinamski dolar",
+ "symbol": "SRD"
+ },
+ "SZL": {
+ "name": "Svazilendski lilangeni",
+ "symbol": "SZL"
+ },
+ "SHP": {
+ "name": "Svetohelenska funta",
+ "symbol": "SHP"
+ },
+ "LKR": {
+ "name": "Å rilankanska rupija",
+ "symbol": "LKR"
+ },
+ "SEK": {
+ "name": "Å vedska kruna",
+ "symbol": "SEK"
+ },
+ "CHF": {
+ "name": "Å vicarski franak",
+ "symbol": "CHF"
+ },
+ "TJS": {
+ "name": "Tadžikistanski somoni",
+ "symbol": "TJS"
+ },
+ "THB": {
+ "name": "Tajlandski baht",
+ "symbol": "฿"
+ },
+ "TZS": {
+ "name": "Tanzanski Å¡iling",
+ "symbol": "TZS"
+ },
+ "TOP": {
+ "name": "Tonganska panga",
+ "symbol": "TOP"
+ },
+ "TTD": {
+ "name": "Trinidadtobaški dolar",
+ "symbol": "TTD"
+ },
+ "TND": {
+ "name": "Tuniski dinar",
+ "symbol": "TND"
+ },
+ "TMT": {
+ "name": "Turkmenistanski manat",
+ "symbol": "TMT"
+ },
+ "TRY": {
+ "name": "Turska lira",
+ "symbol": "TRY"
+ },
+ "UGX": {
+ "name": "Ugandski Å¡iling",
+ "symbol": "UGX"
+ },
+ "UAH": {
+ "name": "Ukrajinska grivna",
+ "symbol": "UAH"
+ },
+ "UYU": {
+ "name": "Urugvajski pezos",
+ "symbol": "UYU"
+ },
+ "UZS": {
+ "name": "Uzbekistanski som",
+ "symbol": "UZS"
+ },
+ "VUV": {
+ "name": "Vanuatski vatu",
+ "symbol": "VUV"
+ },
+ "VEF": {
+ "name": "Venecuelanski bolivar",
+ "symbol": "VEF"
+ },
+ "VND": {
+ "name": "Vijetnamski dong",
+ "symbol": "â‚«"
+ },
+ "ZMW": {
+ "name": "Zambijska kvaÄa",
+ "symbol": "ZMW"
+ },
+ "CVE": {
+ "name": "Zelenortski eskudo",
+ "symbol": "CVE"
+ },
+ "ZWL": {
+ "name": "Zimbabvejski dolar (2009)",
+ "symbol": "ZWL"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/currency/ca.json b/library/intl/resources/currency/ca.json
new file mode 100644
index 000000000..ec73887e6
--- /dev/null
+++ b/library/intl/resources/currency/ca.json
@@ -0,0 +1,634 @@
+{
+ "AFN": {
+ "name": "afgani afganès",
+ "symbol": "AFN"
+ },
+ "MGA": {
+ "name": "ariary malgaix",
+ "symbol": "MGA"
+ },
+ "THB": {
+ "name": "baht tailandès",
+ "symbol": "฿"
+ },
+ "PAB": {
+ "name": "balboa panameny",
+ "symbol": "PAB"
+ },
+ "ETB": {
+ "name": "birr etíop",
+ "symbol": "ETB"
+ },
+ "VEF": {
+ "name": "bolívar veneçolà",
+ "symbol": "VEF"
+ },
+ "BOB": {
+ "name": "bolivià",
+ "symbol": "BOB"
+ },
+ "GHS": {
+ "name": "cedi ghanès",
+ "symbol": "GHS"
+ },
+ "CRC": {
+ "name": "colón costa-riqueny",
+ "symbol": "CRC"
+ },
+ "SVC": {
+ "name": "colón salvadorenc",
+ "symbol": "SVC"
+ },
+ "NIO": {
+ "name": "córdoba oro nicaragüenca",
+ "symbol": "NIO"
+ },
+ "DKK": {
+ "name": "corona danesa",
+ "symbol": "DKK"
+ },
+ "ISK": {
+ "name": "corona islandesa",
+ "symbol": "ISK"
+ },
+ "NOK": {
+ "name": "corona noruega",
+ "symbol": "NOK"
+ },
+ "SEK": {
+ "name": "corona sueca",
+ "symbol": "SEK"
+ },
+ "CZK": {
+ "name": "corona txeca",
+ "symbol": "CZK"
+ },
+ "GMD": {
+ "name": "dalasi gambià",
+ "symbol": "GMD"
+ },
+ "MKD": {
+ "name": "denar macedoni",
+ "symbol": "MKD"
+ },
+ "DZD": {
+ "name": "dinar algerià",
+ "symbol": "DZD"
+ },
+ "BHD": {
+ "name": "dinar de Bahrain",
+ "symbol": "BHD"
+ },
+ "IQD": {
+ "name": "dinar iraquià",
+ "symbol": "IQD"
+ },
+ "JOD": {
+ "name": "dinar jordà",
+ "symbol": "JOD"
+ },
+ "KWD": {
+ "name": "dinar kuwaitià",
+ "symbol": "KWD"
+ },
+ "LYD": {
+ "name": "dinar libi",
+ "symbol": "LYD"
+ },
+ "RSD": {
+ "name": "dinar serbi",
+ "symbol": "RSD"
+ },
+ "TND": {
+ "name": "dinar tunisià",
+ "symbol": "TND"
+ },
+ "AED": {
+ "name": "dírham de la UEA",
+ "symbol": "AED"
+ },
+ "MAD": {
+ "name": "dírham marroquí",
+ "symbol": "MAD"
+ },
+ "STD": {
+ "name": "dobra de São Tomé i Príncipe",
+ "symbol": "STD"
+ },
+ "AUD": {
+ "name": "dòlar australià",
+ "symbol": "AU$"
+ },
+ "CAD": {
+ "name": "dòlar canadenc",
+ "symbol": "CAD"
+ },
+ "BBD": {
+ "name": "dòlar de Barbados",
+ "symbol": "BBD"
+ },
+ "BZD": {
+ "name": "dòlar de Belize",
+ "symbol": "BZD"
+ },
+ "BND": {
+ "name": "dòlar de Brunei",
+ "symbol": "BND"
+ },
+ "GYD": {
+ "name": "dòlar de Guyana",
+ "symbol": "GYD"
+ },
+ "HKD": {
+ "name": "dòlar de Hong Kong",
+ "symbol": "HK$"
+ },
+ "BSD": {
+ "name": "dòlar de les Bahames",
+ "symbol": "BSD"
+ },
+ "BMD": {
+ "name": "dòlar de les Bermudes",
+ "symbol": "BMD"
+ },
+ "KYD": {
+ "name": "dòlar de les illes Caiman",
+ "symbol": "KYD"
+ },
+ "SBD": {
+ "name": "dòlar de les illes Salomó",
+ "symbol": "SBD"
+ },
+ "SGD": {
+ "name": "dòlar de Singapur",
+ "symbol": "SGD"
+ },
+ "SRD": {
+ "name": "dòlar de Surinam",
+ "symbol": "SRD"
+ },
+ "TTD": {
+ "name": "dòlar de Trinitat i Tobago",
+ "symbol": "TTD"
+ },
+ "XCD": {
+ "name": "dòlar del Carib Oriental",
+ "symbol": "XCD"
+ },
+ "USD": {
+ "name": "dòlar dels Estats Units",
+ "symbol": "USD"
+ },
+ "FJD": {
+ "name": "dòlar fijià",
+ "symbol": "FJD"
+ },
+ "JMD": {
+ "name": "dòlar jamaicà",
+ "symbol": "JMD"
+ },
+ "LRD": {
+ "name": "dòlar liberià",
+ "symbol": "LRD"
+ },
+ "NAD": {
+ "name": "dòlar namibià",
+ "symbol": "NAD"
+ },
+ "NZD": {
+ "name": "dòlar neozelandès",
+ "symbol": "NZ$"
+ },
+ "ZWL": {
+ "name": "dòlar zimbabuès (2009)",
+ "symbol": "ZWL"
+ },
+ "VND": {
+ "name": "dong vietnamita",
+ "symbol": "â‚«"
+ },
+ "AMD": {
+ "name": "dram armeni",
+ "symbol": "AMD"
+ },
+ "CVE": {
+ "name": "escut de Cap Verd",
+ "symbol": "CVE"
+ },
+ "EUR": {
+ "name": "euro",
+ "symbol": "€"
+ },
+ "AWG": {
+ "name": "florí d’Aruba",
+ "symbol": "AWG"
+ },
+ "ANG": {
+ "name": "florí de les Antilles Neerlandeses",
+ "symbol": "ANG"
+ },
+ "HUF": {
+ "name": "fòrint hongarès",
+ "symbol": "HUF"
+ },
+ "XOF": {
+ "name": "franc CFA BCEAO",
+ "symbol": "XOF"
+ },
+ "XAF": {
+ "name": "franc CFA BEAC",
+ "symbol": "FCFA"
+ },
+ "XPF": {
+ "name": "franc CFP",
+ "symbol": "CFPF"
+ },
+ "CDF": {
+ "name": "franc congolès",
+ "symbol": "CDF"
+ },
+ "BIF": {
+ "name": "franc de Burundi",
+ "symbol": "BIF"
+ },
+ "DJF": {
+ "name": "franc de Djibouti",
+ "symbol": "DJF"
+ },
+ "KMF": {
+ "name": "franc de les Comores",
+ "symbol": "KMF"
+ },
+ "RWF": {
+ "name": "franc de Ruanda",
+ "symbol": "RWF"
+ },
+ "GNF": {
+ "name": "franc guineà",
+ "symbol": "GNF"
+ },
+ "CHF": {
+ "name": "franc suís",
+ "symbol": "CHF"
+ },
+ "HTG": {
+ "name": "gourde haitià",
+ "symbol": "HTG"
+ },
+ "PYG": {
+ "name": "guaraní paraguaià",
+ "symbol": "PYG"
+ },
+ "UAH": {
+ "name": "hrívnia ucraïnesa",
+ "symbol": "UAH"
+ },
+ "JPY": {
+ "name": "ien japonès",
+ "symbol": "JPÂ¥"
+ },
+ "CNY": {
+ "name": "iuan xinès",
+ "symbol": "Â¥"
+ },
+ "PGK": {
+ "name": "kina de Papua Nova Guinea",
+ "symbol": "PGK"
+ },
+ "LAK": {
+ "name": "kip laosià",
+ "symbol": "LAK"
+ },
+ "HRK": {
+ "name": "kuna croata",
+ "symbol": "HRK"
+ },
+ "MWK": {
+ "name": "kwacha malawià",
+ "symbol": "MWK"
+ },
+ "ZMW": {
+ "name": "kwacha zambià",
+ "symbol": "ZMW"
+ },
+ "AOA": {
+ "name": "kwanza angolès",
+ "symbol": "AOA"
+ },
+ "MMK": {
+ "name": "kyat de Myanmar",
+ "symbol": "MMK"
+ },
+ "GEL": {
+ "name": "lari georgià",
+ "symbol": "GEL"
+ },
+ "ALL": {
+ "name": "lek albanès",
+ "symbol": "ALL"
+ },
+ "HNL": {
+ "name": "lempira hondurenya",
+ "symbol": "HNL"
+ },
+ "SLL": {
+ "name": "leone de Sierra Leone",
+ "symbol": "SLL"
+ },
+ "MDL": {
+ "name": "leu moldau",
+ "symbol": "MDL"
+ },
+ "RON": {
+ "name": "leu romanès",
+ "symbol": "RON"
+ },
+ "BGN": {
+ "name": "lev búlgar",
+ "symbol": "BGN"
+ },
+ "SZL": {
+ "name": "lilangeni swazi",
+ "symbol": "SZL"
+ },
+ "TRY": {
+ "name": "lira turca",
+ "symbol": "TRY"
+ },
+ "LTL": {
+ "name": "litas lituà",
+ "symbol": "LTL"
+ },
+ "GIP": {
+ "name": "lliura de Gibraltar",
+ "symbol": "GIP"
+ },
+ "FKP": {
+ "name": "lliura de les illes Malvines",
+ "symbol": "FKP"
+ },
+ "SHP": {
+ "name": "lliura de Santa Helena",
+ "symbol": "SHP"
+ },
+ "SSP": {
+ "name": "lliura del Sudan del Sud",
+ "symbol": "SSP"
+ },
+ "EGP": {
+ "name": "lliura egípcia",
+ "symbol": "EGP"
+ },
+ "GBP": {
+ "name": "lliura esterlina britànica",
+ "symbol": "£"
+ },
+ "LBP": {
+ "name": "lliura libanesa",
+ "symbol": "LBP"
+ },
+ "SYP": {
+ "name": "lliura síria",
+ "symbol": "SYP"
+ },
+ "SDG": {
+ "name": "lliura sudanesa",
+ "symbol": "SDG"
+ },
+ "LSL": {
+ "name": "loti de Lesotho",
+ "symbol": "LSL"
+ },
+ "AZN": {
+ "name": "manat azerbaidjanès",
+ "symbol": "AZN"
+ },
+ "TMT": {
+ "name": "manat turcman",
+ "symbol": "TMT"
+ },
+ "BAM": {
+ "name": "marc convertible de Bòsnia i Hercegovina",
+ "symbol": "BAM"
+ },
+ "MZN": {
+ "name": "metical moçambiquès",
+ "symbol": "MZN"
+ },
+ "NGN": {
+ "name": "naira nigerià",
+ "symbol": "NGN"
+ },
+ "ERN": {
+ "name": "nakfa eritreu",
+ "symbol": "ERN"
+ },
+ "BTN": {
+ "name": "ngultrum de Bhutan",
+ "symbol": "BTN"
+ },
+ "TWD": {
+ "name": "nou dòlar de Taiwan",
+ "symbol": "NT$"
+ },
+ "PEN": {
+ "name": "nou sol peruà",
+ "symbol": "PEN"
+ },
+ "ILS": {
+ "name": "nou xéquel israelià",
+ "symbol": "₪"
+ },
+ "MRO": {
+ "name": "ouguiya maurità",
+ "symbol": "MRO"
+ },
+ "TOP": {
+ "name": "pa‘anga tongà",
+ "symbol": "TOP"
+ },
+ "MOP": {
+ "name": "pataca de Macau",
+ "symbol": "MOP"
+ },
+ "ARS": {
+ "name": "peso argentí",
+ "symbol": "ARS"
+ },
+ "COP": {
+ "name": "peso colombià",
+ "symbol": "COP"
+ },
+ "CUC": {
+ "name": "peso convertible cubà",
+ "symbol": "CUC"
+ },
+ "CUP": {
+ "name": "peso cubà",
+ "symbol": "CUP"
+ },
+ "DOP": {
+ "name": "peso dominicà",
+ "symbol": "DOP"
+ },
+ "PHP": {
+ "name": "peso filipí",
+ "symbol": "PHP"
+ },
+ "MXN": {
+ "name": "peso mexicà",
+ "symbol": "MXN"
+ },
+ "UYU": {
+ "name": "peso uruguaià",
+ "symbol": "UYU"
+ },
+ "CLP": {
+ "name": "peso xilè",
+ "symbol": "CLP"
+ },
+ "BWP": {
+ "name": "pula de Botswana",
+ "symbol": "BWP"
+ },
+ "GTQ": {
+ "name": "quetzal guatemalenc",
+ "symbol": "GTQ"
+ },
+ "ZAR": {
+ "name": "rand sud-africà",
+ "symbol": "ZAR"
+ },
+ "BRL": {
+ "name": "real brasiler",
+ "symbol": "BRL"
+ },
+ "QAR": {
+ "name": "rial de Qatar",
+ "symbol": "QAR"
+ },
+ "YER": {
+ "name": "rial iemenita",
+ "symbol": "YER"
+ },
+ "IRR": {
+ "name": "rial iranià",
+ "symbol": "IRR"
+ },
+ "OMR": {
+ "name": "rial omanita",
+ "symbol": "OMR"
+ },
+ "SAR": {
+ "name": "rial saudita",
+ "symbol": "SAR"
+ },
+ "KHR": {
+ "name": "riel cambodjà",
+ "symbol": "KHR"
+ },
+ "MYR": {
+ "name": "ringgit de Malàisia",
+ "symbol": "MYR"
+ },
+ "BYR": {
+ "name": "ruble bielorús",
+ "symbol": "BYR"
+ },
+ "RUB": {
+ "name": "ruble rus",
+ "symbol": "RUB"
+ },
+ "MVR": {
+ "name": "rupia de les Maldives",
+ "symbol": "MVR"
+ },
+ "SCR": {
+ "name": "rupia de les Seychelles",
+ "symbol": "SCR"
+ },
+ "LKR": {
+ "name": "rupia de Sri Lanka",
+ "symbol": "LKR"
+ },
+ "INR": {
+ "name": "rupia índia",
+ "symbol": "₹"
+ },
+ "IDR": {
+ "name": "rupia indonèsia",
+ "symbol": "IDR"
+ },
+ "MUR": {
+ "name": "rupia mauriciana",
+ "symbol": "MUR"
+ },
+ "NPR": {
+ "name": "rupia nepalesa",
+ "symbol": "NPR"
+ },
+ "PKR": {
+ "name": "rupia pakistanesa",
+ "symbol": "PKR"
+ },
+ "KGS": {
+ "name": "som kirguís",
+ "symbol": "KGS"
+ },
+ "UZS": {
+ "name": "som uzbek",
+ "symbol": "UZS"
+ },
+ "TJS": {
+ "name": "somoni tadjik",
+ "symbol": "TJS"
+ },
+ "BDT": {
+ "name": "taka de Bangla Desh",
+ "symbol": "BDT"
+ },
+ "WST": {
+ "name": "tala samoà",
+ "symbol": "WST"
+ },
+ "KZT": {
+ "name": "tenge kazakh",
+ "symbol": "KZT"
+ },
+ "MNT": {
+ "name": "tögrög mongol",
+ "symbol": "MNT"
+ },
+ "VUV": {
+ "name": "vatu de Vanuatu",
+ "symbol": "VUV"
+ },
+ "KPW": {
+ "name": "won nord-coreà",
+ "symbol": "KPW"
+ },
+ "KRW": {
+ "name": "won sud-coreà",
+ "symbol": "â‚©"
+ },
+ "KES": {
+ "name": "xíling kenyà",
+ "symbol": "KES"
+ },
+ "SOS": {
+ "name": "xíling somali",
+ "symbol": "SOS"
+ },
+ "TZS": {
+ "name": "xíling tanzà",
+ "symbol": "TZS"
+ },
+ "UGX": {
+ "name": "xíling ugandès",
+ "symbol": "UGX"
+ },
+ "PLN": {
+ "name": "zloty polonès",
+ "symbol": "PLN"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/currency/cgg.json b/library/intl/resources/currency/cgg.json
new file mode 100644
index 000000000..351a9d9bf
--- /dev/null
+++ b/library/intl/resources/currency/cgg.json
@@ -0,0 +1,634 @@
+{
+ "AFN": {
+ "name": "AFN",
+ "symbol": "AFN"
+ },
+ "ALL": {
+ "name": "ALL",
+ "symbol": "ALL"
+ },
+ "AMD": {
+ "name": "AMD",
+ "symbol": "AMD"
+ },
+ "ANG": {
+ "name": "ANG",
+ "symbol": "ANG"
+ },
+ "MGA": {
+ "name": "Ariari ya Maragariita",
+ "symbol": "MGA"
+ },
+ "ARS": {
+ "name": "ARS",
+ "symbol": "ARS"
+ },
+ "AWG": {
+ "name": "AWG",
+ "symbol": "AWG"
+ },
+ "AZN": {
+ "name": "AZN",
+ "symbol": "AZN"
+ },
+ "BAM": {
+ "name": "BAM",
+ "symbol": "BAM"
+ },
+ "BBD": {
+ "name": "BBD",
+ "symbol": "BBD"
+ },
+ "BDT": {
+ "name": "BDT",
+ "symbol": "BDT"
+ },
+ "BGN": {
+ "name": "BGN",
+ "symbol": "BGN"
+ },
+ "ETB": {
+ "name": "Birr ya Ethiopiya",
+ "symbol": "ETB"
+ },
+ "BMD": {
+ "name": "BMD",
+ "symbol": "BMD"
+ },
+ "BND": {
+ "name": "BND",
+ "symbol": "BND"
+ },
+ "BOB": {
+ "name": "BOB",
+ "symbol": "BOB"
+ },
+ "BRL": {
+ "name": "BRL",
+ "symbol": "R$"
+ },
+ "BSD": {
+ "name": "BSD",
+ "symbol": "BSD"
+ },
+ "BTN": {
+ "name": "BTN",
+ "symbol": "BTN"
+ },
+ "BYR": {
+ "name": "BYR",
+ "symbol": "BYR"
+ },
+ "BZD": {
+ "name": "BZD",
+ "symbol": "BZD"
+ },
+ "CLP": {
+ "name": "CLP",
+ "symbol": "CLP"
+ },
+ "COP": {
+ "name": "COP",
+ "symbol": "COP"
+ },
+ "CRC": {
+ "name": "CRC",
+ "symbol": "CRC"
+ },
+ "CUC": {
+ "name": "CUC",
+ "symbol": "CUC"
+ },
+ "CUP": {
+ "name": "CUP",
+ "symbol": "CUP"
+ },
+ "CZK": {
+ "name": "CZK",
+ "symbol": "CZK"
+ },
+ "GMD": {
+ "name": "Dalasi ya Gambia",
+ "symbol": "GMD"
+ },
+ "DZD": {
+ "name": "Dinari ya Arigyeriya",
+ "symbol": "DZD"
+ },
+ "BHD": {
+ "name": "Dinari ya Bahareni",
+ "symbol": "BHD"
+ },
+ "LYD": {
+ "name": "Dinari ya Libya",
+ "symbol": "LYD"
+ },
+ "SDG": {
+ "name": "Dinari ya Sudani",
+ "symbol": "SDG"
+ },
+ "TND": {
+ "name": "Dinari ya Tunisia",
+ "symbol": "TND"
+ },
+ "AED": {
+ "name": "Dirham za Buharabu",
+ "symbol": "AED"
+ },
+ "MAD": {
+ "name": "Dirram ya Moroko",
+ "symbol": "MAD"
+ },
+ "DKK": {
+ "name": "DKK",
+ "symbol": "DKK"
+ },
+ "STD": {
+ "name": "Dobra ya Sao Tome na Purinsipo",
+ "symbol": "STD"
+ },
+ "USD": {
+ "name": "Doora ya America",
+ "symbol": "US$"
+ },
+ "AUD": {
+ "name": "Doora ya Austureeriya",
+ "symbol": "A$"
+ },
+ "CAD": {
+ "name": "Doora ya Kanada",
+ "symbol": "CA$"
+ },
+ "LRD": {
+ "name": "Doora ya Liberia",
+ "symbol": "LRD"
+ },
+ "NAD": {
+ "name": "Doora ya Namibiya",
+ "symbol": "NAD"
+ },
+ "DOP": {
+ "name": "DOP",
+ "symbol": "DOP"
+ },
+ "SOS": {
+ "name": "Eshiringi ya Somalia",
+ "symbol": "SOS"
+ },
+ "TZS": {
+ "name": "Eshiringi ya Tanzania",
+ "symbol": "TZS"
+ },
+ "UGX": {
+ "name": "Eshiringi ya Uganda",
+ "symbol": "USh"
+ },
+ "CVE": {
+ "name": "Eskudo ya Kepuvede",
+ "symbol": "CVE"
+ },
+ "BIF": {
+ "name": "Faranga ya Burundi",
+ "symbol": "BIF"
+ },
+ "XOF": {
+ "name": "Faranga ya CFA BCEAO",
+ "symbol": "CFA"
+ },
+ "XAF": {
+ "name": "Faranga ya CFA BEAC",
+ "symbol": "FCFA"
+ },
+ "DJF": {
+ "name": "Faranga ya Gyibuti",
+ "symbol": "DJF"
+ },
+ "KMF": {
+ "name": "Faranga ya Komoro",
+ "symbol": "KMF"
+ },
+ "CDF": {
+ "name": "Faranga ya Kongo",
+ "symbol": "CDF"
+ },
+ "RWF": {
+ "name": "Faranga ya Rwanda",
+ "symbol": "RWF"
+ },
+ "CHF": {
+ "name": "Faranga ya Swisi",
+ "symbol": "CHF"
+ },
+ "FJD": {
+ "name": "FJD",
+ "symbol": "FJD"
+ },
+ "FKP": {
+ "name": "FKP",
+ "symbol": "FKP"
+ },
+ "GEL": {
+ "name": "GEL",
+ "symbol": "GEL"
+ },
+ "GHS": {
+ "name": "GHS",
+ "symbol": "GHS"
+ },
+ "GIP": {
+ "name": "GIP",
+ "symbol": "GIP"
+ },
+ "GNF": {
+ "name": "GNF",
+ "symbol": "GNF"
+ },
+ "GTQ": {
+ "name": "GTQ",
+ "symbol": "GTQ"
+ },
+ "GYD": {
+ "name": "GYD",
+ "symbol": "GYD"
+ },
+ "HKD": {
+ "name": "HKD",
+ "symbol": "HK$"
+ },
+ "HNL": {
+ "name": "HNL",
+ "symbol": "HNL"
+ },
+ "HRK": {
+ "name": "HRK",
+ "symbol": "HRK"
+ },
+ "HTG": {
+ "name": "HTG",
+ "symbol": "HTG"
+ },
+ "HUF": {
+ "name": "HUF",
+ "symbol": "HUF"
+ },
+ "IDR": {
+ "name": "IDR",
+ "symbol": "IDR"
+ },
+ "ILS": {
+ "name": "ILS",
+ "symbol": "₪"
+ },
+ "IQD": {
+ "name": "IQD",
+ "symbol": "IQD"
+ },
+ "IRR": {
+ "name": "IRR",
+ "symbol": "IRR"
+ },
+ "ISK": {
+ "name": "ISK",
+ "symbol": "ISK"
+ },
+ "JMD": {
+ "name": "JMD",
+ "symbol": "JMD"
+ },
+ "JOD": {
+ "name": "JOD",
+ "symbol": "JOD"
+ },
+ "KGS": {
+ "name": "KGS",
+ "symbol": "KGS"
+ },
+ "KHR": {
+ "name": "KHR",
+ "symbol": "KHR"
+ },
+ "KPW": {
+ "name": "KPW",
+ "symbol": "KPW"
+ },
+ "KRW": {
+ "name": "KRW",
+ "symbol": "â‚©"
+ },
+ "MWK": {
+ "name": "Kwaca ya Malawi",
+ "symbol": "MWK"
+ },
+ "ZMW": {
+ "name": "Kwacha ya Zambia",
+ "symbol": "ZMW"
+ },
+ "AOA": {
+ "name": "Kwanza ya Angora",
+ "symbol": "AOA"
+ },
+ "KWD": {
+ "name": "KWD",
+ "symbol": "KWD"
+ },
+ "KYD": {
+ "name": "KYD",
+ "symbol": "KYD"
+ },
+ "KZT": {
+ "name": "KZT",
+ "symbol": "KZT"
+ },
+ "LAK": {
+ "name": "LAK",
+ "symbol": "LAK"
+ },
+ "LBP": {
+ "name": "LBP",
+ "symbol": "LBP"
+ },
+ "SLL": {
+ "name": "Leone",
+ "symbol": "SLL"
+ },
+ "LKR": {
+ "name": "LKR",
+ "symbol": "LKR"
+ },
+ "LSL": {
+ "name": "Loti ya Lesoto",
+ "symbol": "LSL"
+ },
+ "LTL": {
+ "name": "LTL",
+ "symbol": "LTL"
+ },
+ "MDL": {
+ "name": "MDL",
+ "symbol": "MDL"
+ },
+ "MKD": {
+ "name": "MKD",
+ "symbol": "MKD"
+ },
+ "MMK": {
+ "name": "MMK",
+ "symbol": "MMK"
+ },
+ "MNT": {
+ "name": "MNT",
+ "symbol": "MNT"
+ },
+ "MOP": {
+ "name": "MOP",
+ "symbol": "MOP"
+ },
+ "MVR": {
+ "name": "MVR",
+ "symbol": "MVR"
+ },
+ "MXN": {
+ "name": "MXN",
+ "symbol": "MX$"
+ },
+ "MYR": {
+ "name": "MYR",
+ "symbol": "MYR"
+ },
+ "MZN": {
+ "name": "MZN",
+ "symbol": "MZN"
+ },
+ "NGN": {
+ "name": "Naira ya Naigyeriya",
+ "symbol": "NGN"
+ },
+ "ERN": {
+ "name": "Nakfa ya Eritireya",
+ "symbol": "ERN"
+ },
+ "NIO": {
+ "name": "NIO",
+ "symbol": "NIO"
+ },
+ "NOK": {
+ "name": "NOK",
+ "symbol": "NOK"
+ },
+ "NPR": {
+ "name": "NPR",
+ "symbol": "NPR"
+ },
+ "NZD": {
+ "name": "NZD",
+ "symbol": "NZ$"
+ },
+ "OMR": {
+ "name": "OMR",
+ "symbol": "OMR"
+ },
+ "MRO": {
+ "name": "Ougwiya ya Mouriteeniya",
+ "symbol": "MRO"
+ },
+ "PAB": {
+ "name": "PAB",
+ "symbol": "PAB"
+ },
+ "GBP": {
+ "name": "Paundi ya Bungyereza",
+ "symbol": "£"
+ },
+ "EGP": {
+ "name": "Paundi ya Misiri",
+ "symbol": "EGP"
+ },
+ "SHP": {
+ "name": "Paundi ya Senti Herena",
+ "symbol": "SHP"
+ },
+ "PEN": {
+ "name": "PEN",
+ "symbol": "PEN"
+ },
+ "PGK": {
+ "name": "PGK",
+ "symbol": "PGK"
+ },
+ "PHP": {
+ "name": "PHP",
+ "symbol": "PHP"
+ },
+ "PKR": {
+ "name": "PKR",
+ "symbol": "PKR"
+ },
+ "PLN": {
+ "name": "PLN",
+ "symbol": "PLN"
+ },
+ "BWP": {
+ "name": "Pura ya Botswana",
+ "symbol": "BWP"
+ },
+ "PYG": {
+ "name": "PYG",
+ "symbol": "PYG"
+ },
+ "QAR": {
+ "name": "QAR",
+ "symbol": "QAR"
+ },
+ "ZAR": {
+ "name": "Randi ya Sausi Afirika",
+ "symbol": "ZAR"
+ },
+ "SAR": {
+ "name": "Riya ya Saudi",
+ "symbol": "SAR"
+ },
+ "RON": {
+ "name": "RON",
+ "symbol": "RON"
+ },
+ "RSD": {
+ "name": "RSD",
+ "symbol": "RSD"
+ },
+ "RUB": {
+ "name": "RUB",
+ "symbol": "RUB"
+ },
+ "MUR": {
+ "name": "Rupiiha ya Mauritiasi",
+ "symbol": "MUR"
+ },
+ "SCR": {
+ "name": "Rupiiha ya Sherisheri",
+ "symbol": "SCR"
+ },
+ "INR": {
+ "name": "Rupiya ya India",
+ "symbol": "₹"
+ },
+ "SBD": {
+ "name": "SBD",
+ "symbol": "SBD"
+ },
+ "SEK": {
+ "name": "SEK",
+ "symbol": "SEK"
+ },
+ "SGD": {
+ "name": "SGD",
+ "symbol": "SGD"
+ },
+ "KES": {
+ "name": "Shiringi ya Kenya",
+ "symbol": "KES"
+ },
+ "SRD": {
+ "name": "SRD",
+ "symbol": "SRD"
+ },
+ "SSP": {
+ "name": "SSP",
+ "symbol": "SSP"
+ },
+ "SVC": {
+ "name": "SVC",
+ "symbol": "SVC"
+ },
+ "SYP": {
+ "name": "SYP",
+ "symbol": "SYP"
+ },
+ "SZL": {
+ "name": "SZL",
+ "symbol": "SZL"
+ },
+ "THB": {
+ "name": "THB",
+ "symbol": "THB"
+ },
+ "TJS": {
+ "name": "TJS",
+ "symbol": "TJS"
+ },
+ "TMT": {
+ "name": "TMT",
+ "symbol": "TMT"
+ },
+ "TOP": {
+ "name": "TOP",
+ "symbol": "TOP"
+ },
+ "TRY": {
+ "name": "TRY",
+ "symbol": "TRY"
+ },
+ "TTD": {
+ "name": "TTD",
+ "symbol": "TTD"
+ },
+ "TWD": {
+ "name": "TWD",
+ "symbol": "NT$"
+ },
+ "UAH": {
+ "name": "UAH",
+ "symbol": "UAH"
+ },
+ "UYU": {
+ "name": "UYU",
+ "symbol": "UYU"
+ },
+ "UZS": {
+ "name": "UZS",
+ "symbol": "UZS"
+ },
+ "VEF": {
+ "name": "VEF",
+ "symbol": "VEF"
+ },
+ "VND": {
+ "name": "VND",
+ "symbol": "â‚«"
+ },
+ "VUV": {
+ "name": "VUV",
+ "symbol": "VUV"
+ },
+ "WST": {
+ "name": "WST",
+ "symbol": "WST"
+ },
+ "XCD": {
+ "name": "XCD",
+ "symbol": "EC$"
+ },
+ "XPF": {
+ "name": "XPF",
+ "symbol": "CFPF"
+ },
+ "JPY": {
+ "name": "Yeni ya Japaani",
+ "symbol": "JPÂ¥"
+ },
+ "YER": {
+ "name": "YER",
+ "symbol": "YER"
+ },
+ "CNY": {
+ "name": "Yuan Renminbi ya China",
+ "symbol": "CNÂ¥"
+ },
+ "EUR": {
+ "name": "Yuro",
+ "symbol": "€"
+ },
+ "ZWL": {
+ "name": "ZWL",
+ "symbol": "ZWL"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/currency/chr.json b/library/intl/resources/currency/chr.json
new file mode 100644
index 000000000..0360e743d
--- /dev/null
+++ b/library/intl/resources/currency/chr.json
@@ -0,0 +1,634 @@
+{
+ "AED": {
+ "name": "AED",
+ "symbol": "AED"
+ },
+ "AFN": {
+ "name": "AFN",
+ "symbol": "AFN"
+ },
+ "ALL": {
+ "name": "ALL",
+ "symbol": "ALL"
+ },
+ "AMD": {
+ "name": "AMD",
+ "symbol": "AMD"
+ },
+ "ANG": {
+ "name": "ANG",
+ "symbol": "ANG"
+ },
+ "AOA": {
+ "name": "AOA",
+ "symbol": "AOA"
+ },
+ "ARS": {
+ "name": "ARS",
+ "symbol": "ARS"
+ },
+ "AUD": {
+ "name": "AUD",
+ "symbol": "A$"
+ },
+ "AWG": {
+ "name": "AWG",
+ "symbol": "AWG"
+ },
+ "AZN": {
+ "name": "AZN",
+ "symbol": "AZN"
+ },
+ "BAM": {
+ "name": "BAM",
+ "symbol": "BAM"
+ },
+ "BBD": {
+ "name": "BBD",
+ "symbol": "BBD"
+ },
+ "BDT": {
+ "name": "BDT",
+ "symbol": "BDT"
+ },
+ "BGN": {
+ "name": "BGN",
+ "symbol": "BGN"
+ },
+ "BHD": {
+ "name": "BHD",
+ "symbol": "BHD"
+ },
+ "BIF": {
+ "name": "BIF",
+ "symbol": "BIF"
+ },
+ "BMD": {
+ "name": "BMD",
+ "symbol": "BMD"
+ },
+ "BND": {
+ "name": "BND",
+ "symbol": "BND"
+ },
+ "BOB": {
+ "name": "BOB",
+ "symbol": "BOB"
+ },
+ "BSD": {
+ "name": "BSD",
+ "symbol": "BSD"
+ },
+ "BTN": {
+ "name": "BTN",
+ "symbol": "BTN"
+ },
+ "BWP": {
+ "name": "BWP",
+ "symbol": "BWP"
+ },
+ "BYR": {
+ "name": "BYR",
+ "symbol": "BYR"
+ },
+ "BZD": {
+ "name": "BZD",
+ "symbol": "BZD"
+ },
+ "CDF": {
+ "name": "CDF",
+ "symbol": "CDF"
+ },
+ "CHF": {
+ "name": "CHF",
+ "symbol": "CHF"
+ },
+ "CLP": {
+ "name": "CLP",
+ "symbol": "CLP"
+ },
+ "COP": {
+ "name": "COP",
+ "symbol": "COP"
+ },
+ "CRC": {
+ "name": "CRC",
+ "symbol": "CRC"
+ },
+ "CUC": {
+ "name": "CUC",
+ "symbol": "CUC"
+ },
+ "CUP": {
+ "name": "CUP",
+ "symbol": "CUP"
+ },
+ "CVE": {
+ "name": "CVE",
+ "symbol": "CVE"
+ },
+ "CZK": {
+ "name": "CZK",
+ "symbol": "CZK"
+ },
+ "DJF": {
+ "name": "DJF",
+ "symbol": "DJF"
+ },
+ "DKK": {
+ "name": "DKK",
+ "symbol": "DKK"
+ },
+ "DOP": {
+ "name": "DOP",
+ "symbol": "DOP"
+ },
+ "DZD": {
+ "name": "DZD",
+ "symbol": "DZD"
+ },
+ "EGP": {
+ "name": "EGP",
+ "symbol": "EGP"
+ },
+ "ERN": {
+ "name": "ERN",
+ "symbol": "ERN"
+ },
+ "ETB": {
+ "name": "ETB",
+ "symbol": "ETB"
+ },
+ "FJD": {
+ "name": "FJD",
+ "symbol": "FJD"
+ },
+ "FKP": {
+ "name": "FKP",
+ "symbol": "FKP"
+ },
+ "GEL": {
+ "name": "GEL",
+ "symbol": "GEL"
+ },
+ "GHS": {
+ "name": "GHS",
+ "symbol": "GHS"
+ },
+ "GIP": {
+ "name": "GIP",
+ "symbol": "GIP"
+ },
+ "GMD": {
+ "name": "GMD",
+ "symbol": "GMD"
+ },
+ "GNF": {
+ "name": "GNF",
+ "symbol": "GNF"
+ },
+ "GTQ": {
+ "name": "GTQ",
+ "symbol": "GTQ"
+ },
+ "GYD": {
+ "name": "GYD",
+ "symbol": "GYD"
+ },
+ "HKD": {
+ "name": "HKD",
+ "symbol": "HK$"
+ },
+ "HNL": {
+ "name": "HNL",
+ "symbol": "HNL"
+ },
+ "HRK": {
+ "name": "HRK",
+ "symbol": "HRK"
+ },
+ "HTG": {
+ "name": "HTG",
+ "symbol": "HTG"
+ },
+ "HUF": {
+ "name": "HUF",
+ "symbol": "HUF"
+ },
+ "IDR": {
+ "name": "IDR",
+ "symbol": "IDR"
+ },
+ "ILS": {
+ "name": "ILS",
+ "symbol": "₪"
+ },
+ "IQD": {
+ "name": "IQD",
+ "symbol": "IQD"
+ },
+ "IRR": {
+ "name": "IRR",
+ "symbol": "IRR"
+ },
+ "ISK": {
+ "name": "ISK",
+ "symbol": "ISK"
+ },
+ "JMD": {
+ "name": "JMD",
+ "symbol": "JMD"
+ },
+ "JOD": {
+ "name": "JOD",
+ "symbol": "JOD"
+ },
+ "KES": {
+ "name": "KES",
+ "symbol": "KES"
+ },
+ "KGS": {
+ "name": "KGS",
+ "symbol": "KGS"
+ },
+ "KHR": {
+ "name": "KHR",
+ "symbol": "KHR"
+ },
+ "KMF": {
+ "name": "KMF",
+ "symbol": "KMF"
+ },
+ "KPW": {
+ "name": "KPW",
+ "symbol": "KPW"
+ },
+ "KRW": {
+ "name": "KRW",
+ "symbol": "â‚©"
+ },
+ "KWD": {
+ "name": "KWD",
+ "symbol": "KWD"
+ },
+ "KYD": {
+ "name": "KYD",
+ "symbol": "KYD"
+ },
+ "KZT": {
+ "name": "KZT",
+ "symbol": "KZT"
+ },
+ "LAK": {
+ "name": "LAK",
+ "symbol": "LAK"
+ },
+ "LBP": {
+ "name": "LBP",
+ "symbol": "LBP"
+ },
+ "LKR": {
+ "name": "LKR",
+ "symbol": "LKR"
+ },
+ "LRD": {
+ "name": "LRD",
+ "symbol": "LRD"
+ },
+ "LSL": {
+ "name": "LSL",
+ "symbol": "LSL"
+ },
+ "LTL": {
+ "name": "LTL",
+ "symbol": "LTL"
+ },
+ "LYD": {
+ "name": "LYD",
+ "symbol": "LYD"
+ },
+ "MAD": {
+ "name": "MAD",
+ "symbol": "MAD"
+ },
+ "MDL": {
+ "name": "MDL",
+ "symbol": "MDL"
+ },
+ "MGA": {
+ "name": "MGA",
+ "symbol": "MGA"
+ },
+ "MKD": {
+ "name": "MKD",
+ "symbol": "MKD"
+ },
+ "MMK": {
+ "name": "MMK",
+ "symbol": "MMK"
+ },
+ "MNT": {
+ "name": "MNT",
+ "symbol": "MNT"
+ },
+ "MOP": {
+ "name": "MOP",
+ "symbol": "MOP"
+ },
+ "MRO": {
+ "name": "MRO",
+ "symbol": "MRO"
+ },
+ "MUR": {
+ "name": "MUR",
+ "symbol": "MUR"
+ },
+ "MVR": {
+ "name": "MVR",
+ "symbol": "MVR"
+ },
+ "MWK": {
+ "name": "MWK",
+ "symbol": "MWK"
+ },
+ "MYR": {
+ "name": "MYR",
+ "symbol": "MYR"
+ },
+ "MZN": {
+ "name": "MZN",
+ "symbol": "MZN"
+ },
+ "NAD": {
+ "name": "NAD",
+ "symbol": "NAD"
+ },
+ "NGN": {
+ "name": "NGN",
+ "symbol": "NGN"
+ },
+ "NIO": {
+ "name": "NIO",
+ "symbol": "NIO"
+ },
+ "NOK": {
+ "name": "NOK",
+ "symbol": "NOK"
+ },
+ "NPR": {
+ "name": "NPR",
+ "symbol": "NPR"
+ },
+ "NZD": {
+ "name": "NZD",
+ "symbol": "NZ$"
+ },
+ "OMR": {
+ "name": "OMR",
+ "symbol": "OMR"
+ },
+ "PAB": {
+ "name": "PAB",
+ "symbol": "PAB"
+ },
+ "PEN": {
+ "name": "PEN",
+ "symbol": "PEN"
+ },
+ "PGK": {
+ "name": "PGK",
+ "symbol": "PGK"
+ },
+ "PHP": {
+ "name": "PHP",
+ "symbol": "PHP"
+ },
+ "PKR": {
+ "name": "PKR",
+ "symbol": "PKR"
+ },
+ "PLN": {
+ "name": "PLN",
+ "symbol": "PLN"
+ },
+ "PYG": {
+ "name": "PYG",
+ "symbol": "PYG"
+ },
+ "QAR": {
+ "name": "QAR",
+ "symbol": "QAR"
+ },
+ "RON": {
+ "name": "RON",
+ "symbol": "RON"
+ },
+ "RSD": {
+ "name": "RSD",
+ "symbol": "RSD"
+ },
+ "RWF": {
+ "name": "RWF",
+ "symbol": "RWF"
+ },
+ "SAR": {
+ "name": "SAR",
+ "symbol": "SAR"
+ },
+ "SBD": {
+ "name": "SBD",
+ "symbol": "SBD"
+ },
+ "SCR": {
+ "name": "SCR",
+ "symbol": "SCR"
+ },
+ "SDG": {
+ "name": "SDG",
+ "symbol": "SDG"
+ },
+ "SEK": {
+ "name": "SEK",
+ "symbol": "SEK"
+ },
+ "SGD": {
+ "name": "SGD",
+ "symbol": "SGD"
+ },
+ "SHP": {
+ "name": "SHP",
+ "symbol": "SHP"
+ },
+ "SLL": {
+ "name": "SLL",
+ "symbol": "SLL"
+ },
+ "SOS": {
+ "name": "SOS",
+ "symbol": "SOS"
+ },
+ "SRD": {
+ "name": "SRD",
+ "symbol": "SRD"
+ },
+ "SSP": {
+ "name": "SSP",
+ "symbol": "SSP"
+ },
+ "STD": {
+ "name": "STD",
+ "symbol": "STD"
+ },
+ "SVC": {
+ "name": "SVC",
+ "symbol": "SVC"
+ },
+ "SYP": {
+ "name": "SYP",
+ "symbol": "SYP"
+ },
+ "SZL": {
+ "name": "SZL",
+ "symbol": "SZL"
+ },
+ "THB": {
+ "name": "THB",
+ "symbol": "THB"
+ },
+ "TJS": {
+ "name": "TJS",
+ "symbol": "TJS"
+ },
+ "TMT": {
+ "name": "TMT",
+ "symbol": "TMT"
+ },
+ "TND": {
+ "name": "TND",
+ "symbol": "TND"
+ },
+ "TOP": {
+ "name": "TOP",
+ "symbol": "TOP"
+ },
+ "TRY": {
+ "name": "TRY",
+ "symbol": "TRY"
+ },
+ "TTD": {
+ "name": "TTD",
+ "symbol": "TTD"
+ },
+ "TWD": {
+ "name": "TWD",
+ "symbol": "NT$"
+ },
+ "TZS": {
+ "name": "TZS",
+ "symbol": "TZS"
+ },
+ "UAH": {
+ "name": "UAH",
+ "symbol": "UAH"
+ },
+ "UGX": {
+ "name": "UGX",
+ "symbol": "UGX"
+ },
+ "UYU": {
+ "name": "UYU",
+ "symbol": "UYU"
+ },
+ "UZS": {
+ "name": "UZS",
+ "symbol": "UZS"
+ },
+ "VEF": {
+ "name": "VEF",
+ "symbol": "VEF"
+ },
+ "VND": {
+ "name": "VND",
+ "symbol": "â‚«"
+ },
+ "VUV": {
+ "name": "VUV",
+ "symbol": "VUV"
+ },
+ "WST": {
+ "name": "WST",
+ "symbol": "WST"
+ },
+ "XAF": {
+ "name": "XAF",
+ "symbol": "FCFA"
+ },
+ "XCD": {
+ "name": "XCD",
+ "symbol": "EC$"
+ },
+ "XOF": {
+ "name": "XOF",
+ "symbol": "CFA"
+ },
+ "XPF": {
+ "name": "XPF",
+ "symbol": "CFPF"
+ },
+ "YER": {
+ "name": "YER",
+ "symbol": "YER"
+ },
+ "ZAR": {
+ "name": "ZAR",
+ "symbol": "ZAR"
+ },
+ "ZMW": {
+ "name": "ZMW",
+ "symbol": "ZMW"
+ },
+ "ZWL": {
+ "name": "ZWL",
+ "symbol": "ZWL"
+ },
+ "INR": {
+ "name": "Ꭲá…á—Ꮎ Ꭰá•áŽ³",
+ "symbol": "₹"
+ },
+ "USD": {
+ "name": "Ꭴáƒáá—",
+ "symbol": "$"
+ },
+ "CAD": {
+ "name": "ᎧᎾᓠᎠá•áŽ³",
+ "symbol": "CA$"
+ },
+ "GBP": {
+ "name": "ᎩᎵáᲠᎠá•áŽ³",
+ "symbol": "£"
+ },
+ "BRL": {
+ "name": "á†áᎵᎢ Ꭰá•áŽ³",
+ "symbol": "R$"
+ },
+ "MXN": {
+ "name": "áá†á‚ Ꭰá•áŽ³",
+ "symbol": "MX$"
+ },
+ "CNY": {
+ "name": "á“Ꮆá‚Ꭸ Ꭰá•áŽ³",
+ "symbol": "CNÂ¥"
+ },
+ "JPY": {
+ "name": "á£á©á‚á Ꭰá•áŽ³",
+ "symbol": "JPÂ¥"
+ },
+ "RUB": {
+ "name": "á²á‚Ꭲ Ꭰá•áŽ³",
+ "symbol": "RUB"
+ },
+ "EUR": {
+ "name": "á³áŽ³á›",
+ "symbol": "€"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/currency/cs.json b/library/intl/resources/currency/cs.json
new file mode 100644
index 000000000..274a38487
--- /dev/null
+++ b/library/intl/resources/currency/cs.json
@@ -0,0 +1,634 @@
+{
+ "AFN": {
+ "name": "afghánský afghán",
+ "symbol": "AFN"
+ },
+ "ALL": {
+ "name": "albánský lek",
+ "symbol": "ALL"
+ },
+ "DZD": {
+ "name": "alžírský dinár",
+ "symbol": "DZD"
+ },
+ "USD": {
+ "name": "americký dolar",
+ "symbol": "US$"
+ },
+ "AOA": {
+ "name": "angolská kwanza",
+ "symbol": "AOA"
+ },
+ "ARS": {
+ "name": "argentinské peso",
+ "symbol": "ARS"
+ },
+ "AMD": {
+ "name": "arménský dram",
+ "symbol": "AMD"
+ },
+ "AWG": {
+ "name": "arubský zlatý",
+ "symbol": "AWG"
+ },
+ "AUD": {
+ "name": "australský dolar",
+ "symbol": "AU$"
+ },
+ "AZN": {
+ "name": "ázerbájdžánský manat",
+ "symbol": "AZN"
+ },
+ "BSD": {
+ "name": "bahamský dolar",
+ "symbol": "BSD"
+ },
+ "BHD": {
+ "name": "bahrajnský dinár",
+ "symbol": "BHD"
+ },
+ "BDT": {
+ "name": "bangladéšská taka",
+ "symbol": "BDT"
+ },
+ "BBD": {
+ "name": "barbadoský dolar",
+ "symbol": "BBD"
+ },
+ "BZD": {
+ "name": "belizský dolar",
+ "symbol": "BZD"
+ },
+ "BYR": {
+ "name": "běloruský rubl",
+ "symbol": "BYR"
+ },
+ "BMD": {
+ "name": "bermudský dolar",
+ "symbol": "BMD"
+ },
+ "BTN": {
+ "name": "bhútánský ngultrum",
+ "symbol": "BTN"
+ },
+ "BOB": {
+ "name": "bolivijský boliviano",
+ "symbol": "BOB"
+ },
+ "BAM": {
+ "name": "bosenská konvertibilní marka",
+ "symbol": "BAM"
+ },
+ "BWP": {
+ "name": "botswanská pula",
+ "symbol": "BWP"
+ },
+ "BRL": {
+ "name": "brazilský real",
+ "symbol": "R$"
+ },
+ "GBP": {
+ "name": "britská libra",
+ "symbol": "£"
+ },
+ "BND": {
+ "name": "brunejský dolar",
+ "symbol": "BND"
+ },
+ "BGN": {
+ "name": "bulharský lev",
+ "symbol": "BGN"
+ },
+ "BIF": {
+ "name": "burundský frank",
+ "symbol": "BIF"
+ },
+ "XOF": {
+ "name": "CFA\/BCEAO frank",
+ "symbol": "CFA"
+ },
+ "XAF": {
+ "name": "CFA\/BEAC frank",
+ "symbol": "FCFA"
+ },
+ "XPF": {
+ "name": "CFP frank",
+ "symbol": "CFPF"
+ },
+ "CZK": {
+ "name": "Äeská koruna",
+ "symbol": "KÄ"
+ },
+ "CNY": {
+ "name": "Äínský jüan",
+ "symbol": "CNÂ¥"
+ },
+ "DKK": {
+ "name": "dánská koruna",
+ "symbol": "DKK"
+ },
+ "DOP": {
+ "name": "dominikánské peso",
+ "symbol": "DOP"
+ },
+ "DJF": {
+ "name": "džibutský frank",
+ "symbol": "DJF"
+ },
+ "EGP": {
+ "name": "egyptská libra",
+ "symbol": "EGP"
+ },
+ "ERN": {
+ "name": "eritrejská nakfa",
+ "symbol": "ERN"
+ },
+ "ETB": {
+ "name": "etiopský birr",
+ "symbol": "ETB"
+ },
+ "EUR": {
+ "name": "euro",
+ "symbol": "€"
+ },
+ "FKP": {
+ "name": "falklandská libra",
+ "symbol": "FKP"
+ },
+ "FJD": {
+ "name": "fidžijský dolar",
+ "symbol": "FJD"
+ },
+ "PHP": {
+ "name": "filipínské peso",
+ "symbol": "PHP"
+ },
+ "GMD": {
+ "name": "gambijský dalasi",
+ "symbol": "GMD"
+ },
+ "GHS": {
+ "name": "ghanský cedi",
+ "symbol": "GHS"
+ },
+ "GIP": {
+ "name": "gibraltarská libra",
+ "symbol": "GIP"
+ },
+ "GEL": {
+ "name": "gruzínské lari",
+ "symbol": "GEL"
+ },
+ "GTQ": {
+ "name": "guatemalský quetzal",
+ "symbol": "GTQ"
+ },
+ "GNF": {
+ "name": "guinejský frank",
+ "symbol": "GNF"
+ },
+ "GYD": {
+ "name": "guyanský dolar",
+ "symbol": "GYD"
+ },
+ "HTG": {
+ "name": "haitský gourde",
+ "symbol": "HTG"
+ },
+ "HNL": {
+ "name": "honduraská lempira",
+ "symbol": "HNL"
+ },
+ "HKD": {
+ "name": "hongkongský dolar",
+ "symbol": "HK$"
+ },
+ "CLP": {
+ "name": "chilské peso",
+ "symbol": "CLP"
+ },
+ "HRK": {
+ "name": "chorvatská kuna",
+ "symbol": "HRK"
+ },
+ "INR": {
+ "name": "indická rupie",
+ "symbol": "INR"
+ },
+ "IDR": {
+ "name": "indonéská rupie",
+ "symbol": "IDR"
+ },
+ "IQD": {
+ "name": "irácký dinár",
+ "symbol": "IQD"
+ },
+ "IRR": {
+ "name": "íránský rijál",
+ "symbol": "IRR"
+ },
+ "ISK": {
+ "name": "islandská koruna",
+ "symbol": "ISK"
+ },
+ "ILS": {
+ "name": "izraelský nový šekel",
+ "symbol": "ILS"
+ },
+ "JMD": {
+ "name": "jamajský dolar",
+ "symbol": "JMD"
+ },
+ "JPY": {
+ "name": "japonský jen",
+ "symbol": "JPÂ¥"
+ },
+ "YER": {
+ "name": "jemenský rijál",
+ "symbol": "YER"
+ },
+ "ZAR": {
+ "name": "jihoafrický rand",
+ "symbol": "ZAR"
+ },
+ "KRW": {
+ "name": "jihokorejský won",
+ "symbol": "â‚©"
+ },
+ "SSP": {
+ "name": "jihosúdánská libra",
+ "symbol": "SSP"
+ },
+ "JOD": {
+ "name": "jordánský dinár",
+ "symbol": "JOD"
+ },
+ "KYD": {
+ "name": "kajmanský dolar",
+ "symbol": "KYD"
+ },
+ "KHR": {
+ "name": "kambodžský riel",
+ "symbol": "KHR"
+ },
+ "CAD": {
+ "name": "kanadský dolar",
+ "symbol": "CA$"
+ },
+ "CVE": {
+ "name": "kapverdské escudo",
+ "symbol": "CVE"
+ },
+ "QAR": {
+ "name": "katarský rijál",
+ "symbol": "QAR"
+ },
+ "KZT": {
+ "name": "kazašské tenge",
+ "symbol": "KZT"
+ },
+ "KES": {
+ "name": "keňský šilink",
+ "symbol": "KES"
+ },
+ "COP": {
+ "name": "kolumbijské peso",
+ "symbol": "COP"
+ },
+ "KMF": {
+ "name": "komorský frank",
+ "symbol": "KMF"
+ },
+ "CDF": {
+ "name": "konžský frank",
+ "symbol": "CDF"
+ },
+ "CRC": {
+ "name": "kostarický colón",
+ "symbol": "CRC"
+ },
+ "CUC": {
+ "name": "kubánské konvertibilní peso",
+ "symbol": "CUC"
+ },
+ "CUP": {
+ "name": "kubánské peso",
+ "symbol": "CUP"
+ },
+ "KWD": {
+ "name": "kuvajtský dinár",
+ "symbol": "KWD"
+ },
+ "KGS": {
+ "name": "kyrgyzský som",
+ "symbol": "KGS"
+ },
+ "LAK": {
+ "name": "laoský kip",
+ "symbol": "LAK"
+ },
+ "LSL": {
+ "name": "lesothský loti",
+ "symbol": "LSL"
+ },
+ "LBP": {
+ "name": "libanonská libra",
+ "symbol": "LBP"
+ },
+ "LRD": {
+ "name": "liberijský dolar",
+ "symbol": "LRD"
+ },
+ "LYD": {
+ "name": "libyjský dinár",
+ "symbol": "LYD"
+ },
+ "LTL": {
+ "name": "litevský litas",
+ "symbol": "LTL"
+ },
+ "MOP": {
+ "name": "macajská pataca",
+ "symbol": "MOP"
+ },
+ "MGA": {
+ "name": "madagaskarský ariary",
+ "symbol": "MGA"
+ },
+ "HUF": {
+ "name": "maÄarský forint",
+ "symbol": "HUF"
+ },
+ "MKD": {
+ "name": "makedonský denár",
+ "symbol": "MKD"
+ },
+ "MYR": {
+ "name": "malajsijský ringgit",
+ "symbol": "MYR"
+ },
+ "MWK": {
+ "name": "malawijská kwacha",
+ "symbol": "MWK"
+ },
+ "MVR": {
+ "name": "maledivská rupie",
+ "symbol": "MVR"
+ },
+ "MAD": {
+ "name": "marocký dinár",
+ "symbol": "MAD"
+ },
+ "MUR": {
+ "name": "mauricijská rupie",
+ "symbol": "MUR"
+ },
+ "MRO": {
+ "name": "mauritánská ouguiya",
+ "symbol": "MRO"
+ },
+ "MXN": {
+ "name": "mexické peso",
+ "symbol": "MX$"
+ },
+ "MDL": {
+ "name": "moldavský leu",
+ "symbol": "MDL"
+ },
+ "MNT": {
+ "name": "mongolský tugrik",
+ "symbol": "MNT"
+ },
+ "MZN": {
+ "name": "mozambický metical",
+ "symbol": "MZN"
+ },
+ "MMK": {
+ "name": "myanmarský kyat",
+ "symbol": "MMK"
+ },
+ "NAD": {
+ "name": "namibijský dolar",
+ "symbol": "NAD"
+ },
+ "NPR": {
+ "name": "nepálská rupie",
+ "symbol": "NPR"
+ },
+ "NGN": {
+ "name": "nigerijská naira",
+ "symbol": "NGN"
+ },
+ "NIO": {
+ "name": "nikaragujská córdoba",
+ "symbol": "NIO"
+ },
+ "ANG": {
+ "name": "nizozemskoantilský gulden",
+ "symbol": "ANG"
+ },
+ "NOK": {
+ "name": "norská koruna",
+ "symbol": "NOK"
+ },
+ "NZD": {
+ "name": "novozélandský dolar",
+ "symbol": "NZ$"
+ },
+ "OMR": {
+ "name": "ománský rijál",
+ "symbol": "OMR"
+ },
+ "PKR": {
+ "name": "pákistánská rupie",
+ "symbol": "PKR"
+ },
+ "PAB": {
+ "name": "panamská balboa",
+ "symbol": "PAB"
+ },
+ "PGK": {
+ "name": "papuánská nová kina",
+ "symbol": "PGK"
+ },
+ "PYG": {
+ "name": "paraguajské guarani",
+ "symbol": "PYG"
+ },
+ "PEN": {
+ "name": "peruánský nový sol",
+ "symbol": "PEN"
+ },
+ "PLN": {
+ "name": "polský zlotý",
+ "symbol": "PLN"
+ },
+ "RON": {
+ "name": "rumunské leu",
+ "symbol": "RON"
+ },
+ "RUB": {
+ "name": "ruský rubl",
+ "symbol": "RUB"
+ },
+ "RWF": {
+ "name": "rwandský frank",
+ "symbol": "RWF"
+ },
+ "AED": {
+ "name": "SAE dirham",
+ "symbol": "AED"
+ },
+ "SVC": {
+ "name": "salvadorský colón",
+ "symbol": "SVC"
+ },
+ "WST": {
+ "name": "samojská tala",
+ "symbol": "WST"
+ },
+ "SAR": {
+ "name": "saúdský rijál",
+ "symbol": "SAR"
+ },
+ "KPW": {
+ "name": "severokorejský won",
+ "symbol": "KPW"
+ },
+ "SCR": {
+ "name": "seychelská rupie",
+ "symbol": "SCR"
+ },
+ "SLL": {
+ "name": "sierro-leonský leone",
+ "symbol": "SLL"
+ },
+ "SGD": {
+ "name": "singapurský dolar",
+ "symbol": "SGD"
+ },
+ "SOS": {
+ "name": "somálský šilink",
+ "symbol": "SOS"
+ },
+ "RSD": {
+ "name": "srbský dinár",
+ "symbol": "RSD"
+ },
+ "LKR": {
+ "name": "srílanská rupie",
+ "symbol": "LKR"
+ },
+ "SDG": {
+ "name": "súdánská libra",
+ "symbol": "SDG"
+ },
+ "SRD": {
+ "name": "surinamský dolar",
+ "symbol": "SRD"
+ },
+ "SHP": {
+ "name": "svatohelenská libra",
+ "symbol": "SHP"
+ },
+ "STD": {
+ "name": "svatotomášská dobra",
+ "symbol": "STD"
+ },
+ "SZL": {
+ "name": "svazijský lilangeni",
+ "symbol": "SZL"
+ },
+ "SYP": {
+ "name": "syrská libra",
+ "symbol": "SYP"
+ },
+ "SBD": {
+ "name": "šalamounský dolar",
+ "symbol": "SBD"
+ },
+ "SEK": {
+ "name": "švédská koruna",
+ "symbol": "SEK"
+ },
+ "CHF": {
+ "name": "švýcarský frank",
+ "symbol": "CHF"
+ },
+ "TJS": {
+ "name": "tádžické somoni",
+ "symbol": "TJS"
+ },
+ "TZS": {
+ "name": "tanzanský šilink",
+ "symbol": "TZS"
+ },
+ "THB": {
+ "name": "thajský baht",
+ "symbol": "THB"
+ },
+ "TWD": {
+ "name": "tchajwanský dolar",
+ "symbol": "NT$"
+ },
+ "TOP": {
+ "name": "tonžská paanga",
+ "symbol": "TOP"
+ },
+ "TTD": {
+ "name": "trinidadský dolar",
+ "symbol": "TTD"
+ },
+ "TND": {
+ "name": "tuniský dinár",
+ "symbol": "TND"
+ },
+ "TRY": {
+ "name": "turecká lira",
+ "symbol": "TRY"
+ },
+ "TMT": {
+ "name": "turkmenský manat",
+ "symbol": "TMT"
+ },
+ "UGX": {
+ "name": "ugandský šilink",
+ "symbol": "UGX"
+ },
+ "UAH": {
+ "name": "ukrajinská hřivna",
+ "symbol": "UAH"
+ },
+ "UYU": {
+ "name": "uruguayské peso",
+ "symbol": "UYU"
+ },
+ "UZS": {
+ "name": "uzbecký sum",
+ "symbol": "UZS"
+ },
+ "VUV": {
+ "name": "vanuatský vatu",
+ "symbol": "VUV"
+ },
+ "VEF": {
+ "name": "venezuelský bolívar",
+ "symbol": "VEF"
+ },
+ "VND": {
+ "name": "vietnamský dong",
+ "symbol": "VND"
+ },
+ "XCD": {
+ "name": "východokaribský dolar",
+ "symbol": "EC$"
+ },
+ "ZMW": {
+ "name": "zambijská kwacha",
+ "symbol": "ZMW"
+ },
+ "ZWL": {
+ "name": "zimbabwský dolar (2009)",
+ "symbol": "ZWL"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/currency/cy.json b/library/intl/resources/currency/cy.json
new file mode 100644
index 000000000..33ad977af
--- /dev/null
+++ b/library/intl/resources/currency/cy.json
@@ -0,0 +1,634 @@
+{
+ "AFN": {
+ "name": "Afghani Afghanistan",
+ "symbol": "AFN"
+ },
+ "MGA": {
+ "name": "Ariary Madagascar",
+ "symbol": "MGA"
+ },
+ "THB": {
+ "name": "Baht Gwlad Thai",
+ "symbol": "฿"
+ },
+ "PAB": {
+ "name": "Balboa Panama",
+ "symbol": "PAB"
+ },
+ "ETB": {
+ "name": "Birr Ethiopia",
+ "symbol": "ETB"
+ },
+ "VEF": {
+ "name": "Bolívar Venezuela",
+ "symbol": "VEF"
+ },
+ "BOB": {
+ "name": "Boliviano Bolifia",
+ "symbol": "BOB"
+ },
+ "GHS": {
+ "name": "Cedi Ghana",
+ "symbol": "GHS"
+ },
+ "CRC": {
+ "name": "Colón Costa Rica",
+ "symbol": "CRC"
+ },
+ "NIO": {
+ "name": "Córdoba Nicaragua",
+ "symbol": "NIO"
+ },
+ "GMD": {
+ "name": "Dalasi Gambia",
+ "symbol": "GMD"
+ },
+ "MKD": {
+ "name": "Denar Macedonia",
+ "symbol": "MKD"
+ },
+ "DZD": {
+ "name": "Dinar Algeria",
+ "symbol": "DZD"
+ },
+ "BHD": {
+ "name": "Dinar Bahrain",
+ "symbol": "BHD"
+ },
+ "JOD": {
+ "name": "Dinar Gwlad yr Iorddonen",
+ "symbol": "JOD"
+ },
+ "IQD": {
+ "name": "Dinar Irac",
+ "symbol": "IQD"
+ },
+ "KWD": {
+ "name": "Dinar Kuwait",
+ "symbol": "KWD"
+ },
+ "LYD": {
+ "name": "Dinar Libya",
+ "symbol": "LYD"
+ },
+ "RSD": {
+ "name": "Dinar Serbia",
+ "symbol": "RSD"
+ },
+ "TND": {
+ "name": "Dinar Tunisia",
+ "symbol": "TND"
+ },
+ "MAD": {
+ "name": "Dirham Moroco",
+ "symbol": "MAD"
+ },
+ "AED": {
+ "name": "Dirham Yr Emiradau Arabaidd Unedig",
+ "symbol": "AED"
+ },
+ "STD": {
+ "name": "Dobra São Tomé a Príncipe",
+ "symbol": "STD"
+ },
+ "VND": {
+ "name": "Dong Fietnam",
+ "symbol": "â‚«"
+ },
+ "AUD": {
+ "name": "Doler Awstralia",
+ "symbol": "A$"
+ },
+ "BBD": {
+ "name": "Doler Barbados",
+ "symbol": "BBD"
+ },
+ "BZD": {
+ "name": "Doler Belize",
+ "symbol": "BZD"
+ },
+ "BMD": {
+ "name": "Doler Bermuda",
+ "symbol": "BMD"
+ },
+ "BND": {
+ "name": "Doler Brunei",
+ "symbol": "BND"
+ },
+ "CAD": {
+ "name": "Doler Canada",
+ "symbol": "CA$"
+ },
+ "XCD": {
+ "name": "Doler Dwyrain y Caribî",
+ "symbol": "EC$"
+ },
+ "FJD": {
+ "name": "Doler Ffiji",
+ "symbol": "FJD"
+ },
+ "GYD": {
+ "name": "Doler Guyana",
+ "symbol": "GYD"
+ },
+ "HKD": {
+ "name": "Doler Hong Kong",
+ "symbol": "HK$"
+ },
+ "JMD": {
+ "name": "Doler Jamaica",
+ "symbol": "JMD"
+ },
+ "LRD": {
+ "name": "Doler Liberia",
+ "symbol": "LRD"
+ },
+ "NAD": {
+ "name": "Doler Namibia",
+ "symbol": "NAD"
+ },
+ "TWD": {
+ "name": "Doler Newydd Taiwan",
+ "symbol": "NT$"
+ },
+ "NZD": {
+ "name": "Doler Seland Newydd",
+ "symbol": "NZ$"
+ },
+ "SGD": {
+ "name": "Doler Singapore",
+ "symbol": "SGD"
+ },
+ "SRD": {
+ "name": "Doler Surinam",
+ "symbol": "SRD"
+ },
+ "TTD": {
+ "name": "Doler Trinidad a Tobago",
+ "symbol": "TTD"
+ },
+ "USD": {
+ "name": "Doler UDA",
+ "symbol": "US$"
+ },
+ "BSD": {
+ "name": "Doler y Bahamas",
+ "symbol": "BSD"
+ },
+ "KYD": {
+ "name": "Doler Ynysoedd Cayman",
+ "symbol": "KYD"
+ },
+ "SBD": {
+ "name": "Doler Ynysoedd Solomon",
+ "symbol": "SBD"
+ },
+ "AMD": {
+ "name": "Dram Armenia",
+ "symbol": "AMD"
+ },
+ "CVE": {
+ "name": "Esgwdo Cabo Verde",
+ "symbol": "CVE"
+ },
+ "EUR": {
+ "name": "Ewro",
+ "symbol": "€"
+ },
+ "AWG": {
+ "name": "Fflorin Aruba",
+ "symbol": "AWG"
+ },
+ "HUF": {
+ "name": "Fforint Hwngari",
+ "symbol": "HUF"
+ },
+ "BIF": {
+ "name": "Ffranc Burundi",
+ "symbol": "BIF"
+ },
+ "XOF": {
+ "name": "Ffranc CFA y BCEAO",
+ "symbol": "CFA"
+ },
+ "XAF": {
+ "name": "Ffranc CFA y BEAC",
+ "symbol": "FCFA"
+ },
+ "CDF": {
+ "name": "Ffranc Congo",
+ "symbol": "CDF"
+ },
+ "KMF": {
+ "name": "Ffranc Comoros",
+ "symbol": "KMF"
+ },
+ "XPF": {
+ "name": "Ffranc CPF",
+ "symbol": "CFPF"
+ },
+ "DJF": {
+ "name": "Ffranc Djibouti",
+ "symbol": "DJF"
+ },
+ "GNF": {
+ "name": "Ffranc Guinée",
+ "symbol": "GNF"
+ },
+ "RWF": {
+ "name": "Ffranc Rwanda",
+ "symbol": "RWF"
+ },
+ "CHF": {
+ "name": "Ffranc y Swistir",
+ "symbol": "CHF"
+ },
+ "HTG": {
+ "name": "Gourde Haiti",
+ "symbol": "HTG"
+ },
+ "PYG": {
+ "name": "Guarani Paraguay",
+ "symbol": "PYG"
+ },
+ "ANG": {
+ "name": "Guilder Antilles yr Iseldiroedd",
+ "symbol": "ANG"
+ },
+ "BTN": {
+ "name": "Ngultrum Bhutan",
+ "symbol": "BTN"
+ },
+ "UAH": {
+ "name": "Hryvnia Wcráin",
+ "symbol": "UAH"
+ },
+ "PGK": {
+ "name": "Kina Papua Guinea Newydd",
+ "symbol": "PGK"
+ },
+ "LAK": {
+ "name": "Kip Laos",
+ "symbol": "LAK"
+ },
+ "CZK": {
+ "name": "Koruna Tsiec",
+ "symbol": "CZK"
+ },
+ "ISK": {
+ "name": "Króna Gwlad yr Iâ",
+ "symbol": "ISK"
+ },
+ "SEK": {
+ "name": "Krona Sweden",
+ "symbol": "SEK"
+ },
+ "DKK": {
+ "name": "Krone Denmarc",
+ "symbol": "DKK"
+ },
+ "NOK": {
+ "name": "Krone Norwy",
+ "symbol": "NOK"
+ },
+ "HRK": {
+ "name": "Kuna Croatia",
+ "symbol": "HRK"
+ },
+ "MWK": {
+ "name": "Kwacha Malawi",
+ "symbol": "MWK"
+ },
+ "ZMW": {
+ "name": "Kwacha Zambia",
+ "symbol": "ZMW"
+ },
+ "AOA": {
+ "name": "Kwanza Angola",
+ "symbol": "AOA"
+ },
+ "MMK": {
+ "name": "Kyat Myanmar",
+ "symbol": "MMK"
+ },
+ "GEL": {
+ "name": "Lari Georgia",
+ "symbol": "GEL"
+ },
+ "ALL": {
+ "name": "Lek Albania",
+ "symbol": "ALL"
+ },
+ "HNL": {
+ "name": "Lempira Honduras",
+ "symbol": "HNL"
+ },
+ "SLL": {
+ "name": "Leone Sierra Leone",
+ "symbol": "SLL"
+ },
+ "MDL": {
+ "name": "Leu Moldofa",
+ "symbol": "MDL"
+ },
+ "RON": {
+ "name": "Leu Rwmania",
+ "symbol": "RON"
+ },
+ "BGN": {
+ "name": "Lev Bwlgaria",
+ "symbol": "BGN"
+ },
+ "SZL": {
+ "name": "Lilangeni Gwlad Swazi",
+ "symbol": "SZL"
+ },
+ "TRY": {
+ "name": "Lira Twrci",
+ "symbol": "TRY"
+ },
+ "LTL": {
+ "name": "Litas Lithwania",
+ "symbol": "LTL"
+ },
+ "LSL": {
+ "name": "LSL",
+ "symbol": "LSL"
+ },
+ "AZN": {
+ "name": "Manat Azerbaijan",
+ "symbol": "AZN"
+ },
+ "TMT": {
+ "name": "Manat Turkmenistan",
+ "symbol": "TMT"
+ },
+ "BAM": {
+ "name": "Marc Trosadwy Bosnia a Hercegovina",
+ "symbol": "BAM"
+ },
+ "MZN": {
+ "name": "Metical Mozambique",
+ "symbol": "MZN"
+ },
+ "NGN": {
+ "name": "Naira Nigeria",
+ "symbol": "NGN"
+ },
+ "ERN": {
+ "name": "Nakfa Eritrea",
+ "symbol": "ERN"
+ },
+ "PEN": {
+ "name": "Nuevo Sol Periw",
+ "symbol": "PEN"
+ },
+ "MRO": {
+ "name": "Ouguiya Mauritania",
+ "symbol": "MRO"
+ },
+ "TOP": {
+ "name": "Paʻanga Tonga",
+ "symbol": "TOP"
+ },
+ "MOP": {
+ "name": "Pataca Macau",
+ "symbol": "MOP"
+ },
+ "COP": {
+ "name": "Peso Colombia",
+ "symbol": "COP"
+ },
+ "CUP": {
+ "name": "Peso Cuba",
+ "symbol": "CUP"
+ },
+ "CLP": {
+ "name": "Peso Chile",
+ "symbol": "CLP"
+ },
+ "DOP": {
+ "name": "Peso Gweriniaeth Dominica",
+ "symbol": "DOP"
+ },
+ "MXN": {
+ "name": "Peso México",
+ "symbol": "MX$"
+ },
+ "PHP": {
+ "name": "Peso Pilipinas",
+ "symbol": "PHP"
+ },
+ "CUC": {
+ "name": "Peso Trosadwy Cuba",
+ "symbol": "CUC"
+ },
+ "UYU": {
+ "name": "Peso Uruguay",
+ "symbol": "UYU"
+ },
+ "ARS": {
+ "name": "Peso yr Ariannin",
+ "symbol": "ARS"
+ },
+ "BWP": {
+ "name": "Pula Botswana",
+ "symbol": "BWP"
+ },
+ "SSP": {
+ "name": "Punt De Sudan",
+ "symbol": "SSP"
+ },
+ "GIP": {
+ "name": "Punt Gibraltar",
+ "symbol": "GIP"
+ },
+ "LBP": {
+ "name": "Punt Libanus",
+ "symbol": "LBP"
+ },
+ "SHP": {
+ "name": "Punt Saint Helena",
+ "symbol": "SHP"
+ },
+ "GBP": {
+ "name": "Punt Sterling Prydain",
+ "symbol": "£"
+ },
+ "SDG": {
+ "name": "Punt Sudan",
+ "symbol": "SDG"
+ },
+ "SYP": {
+ "name": "Punt Syria",
+ "symbol": "SYP"
+ },
+ "FKP": {
+ "name": "Punt Ynysoedd Falkland\/Malvinas",
+ "symbol": "FKP"
+ },
+ "EGP": {
+ "name": "Punt Yr Aifft",
+ "symbol": "EGP"
+ },
+ "GTQ": {
+ "name": "Quetzal Guatemala",
+ "symbol": "GTQ"
+ },
+ "ZAR": {
+ "name": "Rand De Affrica",
+ "symbol": "ZAR"
+ },
+ "BRL": {
+ "name": "Real Brasil",
+ "symbol": "R$"
+ },
+ "IRR": {
+ "name": "Rial Iran",
+ "symbol": "IRR"
+ },
+ "OMR": {
+ "name": "Rial Oman",
+ "symbol": "OMR"
+ },
+ "QAR": {
+ "name": "Rial Qatar",
+ "symbol": "QAR"
+ },
+ "YER": {
+ "name": "Rial Yemen",
+ "symbol": "YER"
+ },
+ "KHR": {
+ "name": "Riel Cambodia",
+ "symbol": "KHR"
+ },
+ "MYR": {
+ "name": "Ringgit Malaysia",
+ "symbol": "MYR"
+ },
+ "SAR": {
+ "name": "Riyal Saudi Arabia",
+ "symbol": "SAR"
+ },
+ "MVR": {
+ "name": "Rufiyaa’r Maldives",
+ "symbol": "MVR"
+ },
+ "IDR": {
+ "name": "Rupiah Indonesia",
+ "symbol": "IDR"
+ },
+ "BYR": {
+ "name": "Rwbl Belarws",
+ "symbol": "BYR"
+ },
+ "RUB": {
+ "name": "Rwbl Rwsia",
+ "symbol": "RUB"
+ },
+ "INR": {
+ "name": "Rwpî India",
+ "symbol": "₹"
+ },
+ "MUR": {
+ "name": "Rwpî Mauritius",
+ "symbol": "MUR"
+ },
+ "NPR": {
+ "name": "Rwpî Nepal",
+ "symbol": "NPR"
+ },
+ "PKR": {
+ "name": "Rwpî Pacistan",
+ "symbol": "PKR"
+ },
+ "SCR": {
+ "name": "Rwpî Seychelles",
+ "symbol": "SCR"
+ },
+ "LKR": {
+ "name": "Rwpî Sri Lanka",
+ "symbol": "LKR"
+ },
+ "ILS": {
+ "name": "Shegel Newydd Israel",
+ "symbol": "₪"
+ },
+ "KGS": {
+ "name": "Som Kyrgyzstan",
+ "symbol": "KGS"
+ },
+ "UZS": {
+ "name": "Som Uzbekistan",
+ "symbol": "UZS"
+ },
+ "TJS": {
+ "name": "Somoni Tajikistan",
+ "symbol": "TJS"
+ },
+ "SVC": {
+ "name": "SVC",
+ "symbol": "SVC"
+ },
+ "KES": {
+ "name": "Swllt Kenya",
+ "symbol": "KES"
+ },
+ "SOS": {
+ "name": "Swllt Somalia",
+ "symbol": "SOS"
+ },
+ "TZS": {
+ "name": "Swllt Tanzania",
+ "symbol": "TZS"
+ },
+ "UGX": {
+ "name": "Swllt Uganda",
+ "symbol": "UGX"
+ },
+ "BDT": {
+ "name": "Taka Bangladesh",
+ "symbol": "BDT"
+ },
+ "WST": {
+ "name": "Tala Samoa",
+ "symbol": "WST"
+ },
+ "KZT": {
+ "name": "Tenge Kazakstan",
+ "symbol": "KZT"
+ },
+ "MNT": {
+ "name": "Tugrik Mongolia",
+ "symbol": "MNT"
+ },
+ "VUV": {
+ "name": "Vatu Vanuatu",
+ "symbol": "VUV"
+ },
+ "KRW": {
+ "name": "Won De Korea",
+ "symbol": "â‚©"
+ },
+ "KPW": {
+ "name": "Won Gogledd Corea",
+ "symbol": "KPW"
+ },
+ "JPY": {
+ "name": "Yen Japan",
+ "symbol": "JPÂ¥"
+ },
+ "CNY": {
+ "name": "Yuan Tsieina",
+ "symbol": "CNÂ¥"
+ },
+ "PLN": {
+ "name": "Zloty Gwlad Pwyl",
+ "symbol": "PLN"
+ },
+ "ZWL": {
+ "name": "ZWL",
+ "symbol": "ZWL"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/currency/da.json b/library/intl/resources/currency/da.json
new file mode 100644
index 000000000..dd9d1d3c1
--- /dev/null
+++ b/library/intl/resources/currency/da.json
@@ -0,0 +1,634 @@
+{
+ "AFN": {
+ "name": "Afghansk afghani",
+ "symbol": "AFN"
+ },
+ "ALL": {
+ "name": "Albansk lek",
+ "symbol": "ALL"
+ },
+ "DZD": {
+ "name": "Algerisk dinar",
+ "symbol": "DZD"
+ },
+ "USD": {
+ "name": "Amerikansk dollar",
+ "symbol": "$"
+ },
+ "AOA": {
+ "name": "Angolansk kwanza",
+ "symbol": "AOA"
+ },
+ "ARS": {
+ "name": "Argentinsk peso",
+ "symbol": "ARS"
+ },
+ "AMD": {
+ "name": "Armensk dram",
+ "symbol": "AMD"
+ },
+ "AWG": {
+ "name": "Arubansk florin",
+ "symbol": "AWG"
+ },
+ "AZN": {
+ "name": "Aserbajdsjansk manat",
+ "symbol": "AZN"
+ },
+ "AUD": {
+ "name": "Australsk dollar",
+ "symbol": "AU$"
+ },
+ "BSD": {
+ "name": "Bahamansk dollar",
+ "symbol": "BSD"
+ },
+ "BHD": {
+ "name": "Bahrainsk dinar",
+ "symbol": "BHD"
+ },
+ "BDT": {
+ "name": "Bangladeshisk taka",
+ "symbol": "BDT"
+ },
+ "BBD": {
+ "name": "Barbadisk dollar",
+ "symbol": "BBD"
+ },
+ "BZD": {
+ "name": "Belizisk dollar",
+ "symbol": "BZD"
+ },
+ "BMD": {
+ "name": "Bermudansk dollar",
+ "symbol": "BMD"
+ },
+ "BTN": {
+ "name": "Bhutansk ngultrum",
+ "symbol": "BTN"
+ },
+ "BOB": {
+ "name": "Boliviansk boliviano",
+ "symbol": "BOB"
+ },
+ "BAM": {
+ "name": "Bosnien-Hercegovinsk konvertibel mark",
+ "symbol": "BAM"
+ },
+ "BWP": {
+ "name": "Botswansk pula",
+ "symbol": "BWP"
+ },
+ "BRL": {
+ "name": "Brasiliansk real",
+ "symbol": "R$"
+ },
+ "GBP": {
+ "name": "Britisk pund",
+ "symbol": "£"
+ },
+ "BND": {
+ "name": "Bruneisk dollar",
+ "symbol": "BND"
+ },
+ "BGN": {
+ "name": "Bulgarsk lev",
+ "symbol": "BGN"
+ },
+ "BIF": {
+ "name": "Burundisk franc",
+ "symbol": "BIF"
+ },
+ "KHR": {
+ "name": "Cambodjansk riel",
+ "symbol": "KHR"
+ },
+ "CAD": {
+ "name": "Canadisk dollar",
+ "symbol": "CA$"
+ },
+ "KYD": {
+ "name": "Caymansk dollar",
+ "symbol": "KYD"
+ },
+ "XAF": {
+ "name": "CFA-franc (BEAC)",
+ "symbol": "FCFA"
+ },
+ "XOF": {
+ "name": "CFA-franc BCEAO",
+ "symbol": "CFA"
+ },
+ "XPF": {
+ "name": "CFP-franc",
+ "symbol": "CFPF"
+ },
+ "CLP": {
+ "name": "Chilensk peso",
+ "symbol": "CLP"
+ },
+ "COP": {
+ "name": "Colombiansk peso",
+ "symbol": "COP"
+ },
+ "KMF": {
+ "name": "Comorisk franc",
+ "symbol": "KMF"
+ },
+ "CDF": {
+ "name": "Congolesisk franc",
+ "symbol": "CDF"
+ },
+ "CRC": {
+ "name": "Costaricansk colón",
+ "symbol": "CRC"
+ },
+ "CUC": {
+ "name": "Cubansk konvertibel peso",
+ "symbol": "CUC"
+ },
+ "CUP": {
+ "name": "Cubansk peso",
+ "symbol": "CUP"
+ },
+ "DKK": {
+ "name": "Dansk krone",
+ "symbol": "kr."
+ },
+ "AED": {
+ "name": "Dirham fra de Forenede Arabiske Emirater",
+ "symbol": "AED"
+ },
+ "DJF": {
+ "name": "Djiboutisk franc",
+ "symbol": "DJF"
+ },
+ "STD": {
+ "name": "Dobra fra Sao Tome og Principe",
+ "symbol": "STD"
+ },
+ "TTD": {
+ "name": "Dollar fra Trinidad og Tobago",
+ "symbol": "TTD"
+ },
+ "DOP": {
+ "name": "Dominikansk peso",
+ "symbol": "DOP"
+ },
+ "EGP": {
+ "name": "Egyptisk pund",
+ "symbol": "EGP"
+ },
+ "ERN": {
+ "name": "Eritreisk nakfa",
+ "symbol": "ERN"
+ },
+ "ETB": {
+ "name": "Etiopisk birr",
+ "symbol": "ETB"
+ },
+ "EUR": {
+ "name": "Euro",
+ "symbol": "€"
+ },
+ "FJD": {
+ "name": "Fijiansk dollar",
+ "symbol": "FJD"
+ },
+ "PHP": {
+ "name": "Filippinsk peso",
+ "symbol": "PHP"
+ },
+ "GMD": {
+ "name": "Gambisk dalasi",
+ "symbol": "GMD"
+ },
+ "GEL": {
+ "name": "Georgisk lari",
+ "symbol": "GEL"
+ },
+ "GHS": {
+ "name": "Ghanesisk cedi",
+ "symbol": "GHS"
+ },
+ "GIP": {
+ "name": "Gibraltarisk pund",
+ "symbol": "GIP"
+ },
+ "GTQ": {
+ "name": "Guatemalansk quetzal",
+ "symbol": "GTQ"
+ },
+ "GNF": {
+ "name": "Guineansk franc",
+ "symbol": "GNF"
+ },
+ "GYD": {
+ "name": "Guyansk dollar",
+ "symbol": "GYD"
+ },
+ "HTG": {
+ "name": "Haitisk gourde",
+ "symbol": "HTG"
+ },
+ "HNL": {
+ "name": "Honduransk lempira",
+ "symbol": "HNL"
+ },
+ "HKD": {
+ "name": "Hongkong dollar",
+ "symbol": "HK$"
+ },
+ "BYR": {
+ "name": "Hviderussisk rubel",
+ "symbol": "BYR"
+ },
+ "INR": {
+ "name": "Indisk rupee",
+ "symbol": "₹"
+ },
+ "IDR": {
+ "name": "Indonesisk rupiah",
+ "symbol": "IDR"
+ },
+ "IQD": {
+ "name": "Irakisk dinar",
+ "symbol": "IQD"
+ },
+ "IRR": {
+ "name": "Iransk rial",
+ "symbol": "IRR"
+ },
+ "ISK": {
+ "name": "Islansk krone",
+ "symbol": "ISK"
+ },
+ "JMD": {
+ "name": "Jamaicansk dollar",
+ "symbol": "JMD"
+ },
+ "JPY": {
+ "name": "Japansk yen",
+ "symbol": "JPÂ¥"
+ },
+ "JOD": {
+ "name": "Jordansk dinar",
+ "symbol": "JOD"
+ },
+ "CVE": {
+ "name": "Kapverdisk escudo",
+ "symbol": "CVE"
+ },
+ "KZT": {
+ "name": "Kasakhisk tenge",
+ "symbol": "KZT"
+ },
+ "KES": {
+ "name": "Kenyansk shilling",
+ "symbol": "KES"
+ },
+ "CNY": {
+ "name": "Kinesisk yuan renminbi",
+ "symbol": "CNÂ¥"
+ },
+ "KGS": {
+ "name": "Kirgisisk som",
+ "symbol": "KGS"
+ },
+ "HRK": {
+ "name": "Kroatisk kuna",
+ "symbol": "HRK"
+ },
+ "KWD": {
+ "name": "Kuwaitisk dinar",
+ "symbol": "KWD"
+ },
+ "LAK": {
+ "name": "Laotisk kip",
+ "symbol": "LAK"
+ },
+ "LSL": {
+ "name": "Lesothisk loti",
+ "symbol": "LSL"
+ },
+ "LBP": {
+ "name": "Libanesisk pund",
+ "symbol": "LBP"
+ },
+ "LRD": {
+ "name": "Liberisk dollar",
+ "symbol": "LRD"
+ },
+ "LYD": {
+ "name": "Libysk dinar",
+ "symbol": "LYD"
+ },
+ "LTL": {
+ "name": "Litauisk litas",
+ "symbol": "LTL"
+ },
+ "MOP": {
+ "name": "Macaosk pataca",
+ "symbol": "MOP"
+ },
+ "MGA": {
+ "name": "Madagaskisk ariary",
+ "symbol": "MGA"
+ },
+ "MKD": {
+ "name": "Makedonsk denar",
+ "symbol": "MKD"
+ },
+ "MWK": {
+ "name": "Malawisk kwacha",
+ "symbol": "MWK"
+ },
+ "MYR": {
+ "name": "Malaysisk ringgit",
+ "symbol": "MYR"
+ },
+ "MVR": {
+ "name": "Maldivisk rufiyaa",
+ "symbol": "MVR"
+ },
+ "MAD": {
+ "name": "Marokkansk dirham",
+ "symbol": "MAD"
+ },
+ "MRO": {
+ "name": "Mauritansk ouguiya",
+ "symbol": "MRO"
+ },
+ "MUR": {
+ "name": "Mauritisk rupee",
+ "symbol": "MUR"
+ },
+ "MXN": {
+ "name": "Mexicansk peso",
+ "symbol": "MX$"
+ },
+ "MDL": {
+ "name": "Moldovisk leu",
+ "symbol": "MDL"
+ },
+ "MNT": {
+ "name": "Mongolsk tugrik",
+ "symbol": "MNT"
+ },
+ "MZN": {
+ "name": "Mozambiquisk metical",
+ "symbol": "MZN"
+ },
+ "MMK": {
+ "name": "Myanmarsk kyat",
+ "symbol": "MMK"
+ },
+ "NAD": {
+ "name": "Namibisk dollar",
+ "symbol": "NAD"
+ },
+ "ANG": {
+ "name": "Nederlandske Antiller-gylden",
+ "symbol": "ANG"
+ },
+ "NPR": {
+ "name": "Nepalesisk rupee",
+ "symbol": "NPR"
+ },
+ "NZD": {
+ "name": "New Zealandsk dollar",
+ "symbol": "NZ$"
+ },
+ "NIO": {
+ "name": "Nicaraguansk cordoba",
+ "symbol": "NIO"
+ },
+ "NGN": {
+ "name": "Nigeriansk naira",
+ "symbol": "NGN"
+ },
+ "KPW": {
+ "name": "Nordkoreansk won",
+ "symbol": "KPW"
+ },
+ "NOK": {
+ "name": "Norsk krone",
+ "symbol": "NOK"
+ },
+ "ILS": {
+ "name": "Ny israelsk shekel",
+ "symbol": "₪"
+ },
+ "TWD": {
+ "name": "Ny taiwansk dollar",
+ "symbol": "NT$"
+ },
+ "OMR": {
+ "name": "Omansk rial",
+ "symbol": "OMR"
+ },
+ "PKR": {
+ "name": "Pakistansk rupee",
+ "symbol": "PKR"
+ },
+ "PAB": {
+ "name": "Panamansk balboa",
+ "symbol": "PAB"
+ },
+ "PGK": {
+ "name": "Papuansk kina",
+ "symbol": "PGK"
+ },
+ "PYG": {
+ "name": "Paraguaysk guarani",
+ "symbol": "PYG"
+ },
+ "PEN": {
+ "name": "Peruviansk nuevo sol",
+ "symbol": "PEN"
+ },
+ "PLN": {
+ "name": "Polsk zloty",
+ "symbol": "PLN"
+ },
+ "FKP": {
+ "name": "Pund fra Falklandsøerne",
+ "symbol": "FKP"
+ },
+ "SHP": {
+ "name": "Pund fra Saint Helena",
+ "symbol": "SHP"
+ },
+ "QAR": {
+ "name": "Qatarsk rial",
+ "symbol": "QAR"
+ },
+ "RON": {
+ "name": "Rumænsk leu",
+ "symbol": "RON"
+ },
+ "RUB": {
+ "name": "Russisk rubel",
+ "symbol": "RUB"
+ },
+ "RWF": {
+ "name": "Rwandisk franc",
+ "symbol": "RWF"
+ },
+ "SBD": {
+ "name": "Salomonsk dollar",
+ "symbol": "SBD"
+ },
+ "SVC": {
+ "name": "Salvadoransk colon",
+ "symbol": "SVC"
+ },
+ "WST": {
+ "name": "Samoansk tala",
+ "symbol": "WST"
+ },
+ "SAR": {
+ "name": "Saudiarabisk riyal",
+ "symbol": "SAR"
+ },
+ "CHF": {
+ "name": "Schweizisk franc",
+ "symbol": "CHF"
+ },
+ "RSD": {
+ "name": "Serbisk dinar",
+ "symbol": "RSD"
+ },
+ "SCR": {
+ "name": "Seychellisk rupee",
+ "symbol": "SCR"
+ },
+ "SLL": {
+ "name": "Sierraleonsk leone",
+ "symbol": "SLL"
+ },
+ "SGD": {
+ "name": "Singaporeansk dollar",
+ "symbol": "SGD"
+ },
+ "SOS": {
+ "name": "Somalisk shilling",
+ "symbol": "SOS"
+ },
+ "LKR": {
+ "name": "Srilankansk rupee",
+ "symbol": "LKR"
+ },
+ "SDG": {
+ "name": "Sudansk pund",
+ "symbol": "SDG"
+ },
+ "SRD": {
+ "name": "Surinamsk dollar",
+ "symbol": "SRD"
+ },
+ "SEK": {
+ "name": "Svensk krone",
+ "symbol": "SEK"
+ },
+ "SZL": {
+ "name": "Swazilandsk lilangeni",
+ "symbol": "SZL"
+ },
+ "ZAR": {
+ "name": "Sydafrikansk rand",
+ "symbol": "ZAR"
+ },
+ "KRW": {
+ "name": "Sydkoreansk won",
+ "symbol": "â‚©"
+ },
+ "SSP": {
+ "name": "Sydsudanske pund",
+ "symbol": "SSP"
+ },
+ "SYP": {
+ "name": "Syrisk pund",
+ "symbol": "SYP"
+ },
+ "TJS": {
+ "name": "Tadsjikisk somoni",
+ "symbol": "TJS"
+ },
+ "TZS": {
+ "name": "Tanzanisk shilling",
+ "symbol": "TZS"
+ },
+ "THB": {
+ "name": "Thailandsk baht",
+ "symbol": "฿"
+ },
+ "CZK": {
+ "name": "Tjekkisk koruna",
+ "symbol": "CZK"
+ },
+ "TOP": {
+ "name": "Tongansk paʻanga",
+ "symbol": "TOP"
+ },
+ "TND": {
+ "name": "Tunesisk dinar",
+ "symbol": "TND"
+ },
+ "TMT": {
+ "name": "Turkmensk manat",
+ "symbol": "TMT"
+ },
+ "TRY": {
+ "name": "Tyrkisk lira",
+ "symbol": "TRY"
+ },
+ "UGX": {
+ "name": "Ugandisk shilling",
+ "symbol": "UGX"
+ },
+ "UAH": {
+ "name": "Ukrainsk grynia",
+ "symbol": "UAH"
+ },
+ "HUF": {
+ "name": "Ungarsk forint",
+ "symbol": "HUF"
+ },
+ "UYU": {
+ "name": "Uruguayansk peso",
+ "symbol": "UYU"
+ },
+ "UZS": {
+ "name": "Usbekisk sum",
+ "symbol": "UZS"
+ },
+ "VUV": {
+ "name": "Vanuaisk vatu",
+ "symbol": "VUV"
+ },
+ "VEF": {
+ "name": "Venezuelansk bolivar",
+ "symbol": "VEF"
+ },
+ "VND": {
+ "name": "Vietnamesisk dong",
+ "symbol": "â‚«"
+ },
+ "YER": {
+ "name": "Yemenitisk rial",
+ "symbol": "YER"
+ },
+ "ZMW": {
+ "name": "Zambisk kwacha",
+ "symbol": "ZMW"
+ },
+ "ZWL": {
+ "name": "Zimbabwisk dollar (2009)",
+ "symbol": "ZWL"
+ },
+ "XCD": {
+ "name": "Østkaribisk dollar",
+ "symbol": "EC$"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/currency/dav.json b/library/intl/resources/currency/dav.json
new file mode 100644
index 000000000..4401f9af7
--- /dev/null
+++ b/library/intl/resources/currency/dav.json
@@ -0,0 +1,634 @@
+{
+ "AFN": {
+ "name": "AFN",
+ "symbol": "AFN"
+ },
+ "ALL": {
+ "name": "ALL",
+ "symbol": "ALL"
+ },
+ "AMD": {
+ "name": "AMD",
+ "symbol": "AMD"
+ },
+ "ANG": {
+ "name": "ANG",
+ "symbol": "ANG"
+ },
+ "MGA": {
+ "name": "Ariary ya Bukini",
+ "symbol": "MGA"
+ },
+ "ARS": {
+ "name": "ARS",
+ "symbol": "ARS"
+ },
+ "AWG": {
+ "name": "AWG",
+ "symbol": "AWG"
+ },
+ "AZN": {
+ "name": "AZN",
+ "symbol": "AZN"
+ },
+ "BAM": {
+ "name": "BAM",
+ "symbol": "BAM"
+ },
+ "BBD": {
+ "name": "BBD",
+ "symbol": "BBD"
+ },
+ "BDT": {
+ "name": "BDT",
+ "symbol": "BDT"
+ },
+ "BGN": {
+ "name": "BGN",
+ "symbol": "BGN"
+ },
+ "ETB": {
+ "name": "Bir ya Uhabeshi",
+ "symbol": "ETB"
+ },
+ "BMD": {
+ "name": "BMD",
+ "symbol": "BMD"
+ },
+ "BND": {
+ "name": "BND",
+ "symbol": "BND"
+ },
+ "BOB": {
+ "name": "BOB",
+ "symbol": "BOB"
+ },
+ "BRL": {
+ "name": "BRL",
+ "symbol": "R$"
+ },
+ "BSD": {
+ "name": "BSD",
+ "symbol": "BSD"
+ },
+ "BTN": {
+ "name": "BTN",
+ "symbol": "BTN"
+ },
+ "BYR": {
+ "name": "BYR",
+ "symbol": "BYR"
+ },
+ "BZD": {
+ "name": "BZD",
+ "symbol": "BZD"
+ },
+ "CLP": {
+ "name": "CLP",
+ "symbol": "CLP"
+ },
+ "COP": {
+ "name": "COP",
+ "symbol": "COP"
+ },
+ "CRC": {
+ "name": "CRC",
+ "symbol": "CRC"
+ },
+ "CUC": {
+ "name": "CUC",
+ "symbol": "CUC"
+ },
+ "CUP": {
+ "name": "CUP",
+ "symbol": "CUP"
+ },
+ "CZK": {
+ "name": "CZK",
+ "symbol": "CZK"
+ },
+ "GMD": {
+ "name": "Dalasi ya Gambia",
+ "symbol": "GMD"
+ },
+ "DZD": {
+ "name": "Dinari ya Aljeria",
+ "symbol": "DZD"
+ },
+ "BHD": {
+ "name": "Dinari ya Bahareni",
+ "symbol": "BHD"
+ },
+ "LYD": {
+ "name": "Dinari ya Libya",
+ "symbol": "LYD"
+ },
+ "TND": {
+ "name": "Dinari ya Tunisia",
+ "symbol": "TND"
+ },
+ "AED": {
+ "name": "Dirham ya Falme za Kiarabu",
+ "symbol": "AED"
+ },
+ "MAD": {
+ "name": "Dirham ya Moroko",
+ "symbol": "MAD"
+ },
+ "DKK": {
+ "name": "DKK",
+ "symbol": "DKK"
+ },
+ "STD": {
+ "name": "Dobra ya Sao Tome na Principe",
+ "symbol": "STD"
+ },
+ "AUD": {
+ "name": "Dola ya Australia",
+ "symbol": "A$"
+ },
+ "CAD": {
+ "name": "Dola ya Kanada",
+ "symbol": "CA$"
+ },
+ "LRD": {
+ "name": "Dola ya Liberia",
+ "symbol": "LRD"
+ },
+ "USD": {
+ "name": "Dola ya Marekani",
+ "symbol": "US$"
+ },
+ "NAD": {
+ "name": "Dola ya Namibia",
+ "symbol": "NAD"
+ },
+ "DOP": {
+ "name": "DOP",
+ "symbol": "DOP"
+ },
+ "CVE": {
+ "name": "Eskudo ya Kepuvede",
+ "symbol": "CVE"
+ },
+ "XOF": {
+ "name": "Faranga CFA BCEAO",
+ "symbol": "CFA"
+ },
+ "XAF": {
+ "name": "Faranga CFA BEAC",
+ "symbol": "FCFA"
+ },
+ "BIF": {
+ "name": "Faranga ya Burundi",
+ "symbol": "BIF"
+ },
+ "DJF": {
+ "name": "Faranga ya Jibuti",
+ "symbol": "DJF"
+ },
+ "KMF": {
+ "name": "Faranga ya Komoro",
+ "symbol": "KMF"
+ },
+ "CDF": {
+ "name": "Faranga ya Kongo",
+ "symbol": "CDF"
+ },
+ "RWF": {
+ "name": "Faranga ya Rwanda",
+ "symbol": "RWF"
+ },
+ "CHF": {
+ "name": "Faranga ya Uswisi",
+ "symbol": "CHF"
+ },
+ "FJD": {
+ "name": "FJD",
+ "symbol": "FJD"
+ },
+ "FKP": {
+ "name": "FKP",
+ "symbol": "FKP"
+ },
+ "GEL": {
+ "name": "GEL",
+ "symbol": "GEL"
+ },
+ "GHS": {
+ "name": "GHS",
+ "symbol": "GHS"
+ },
+ "GIP": {
+ "name": "GIP",
+ "symbol": "GIP"
+ },
+ "GNF": {
+ "name": "GNF",
+ "symbol": "GNF"
+ },
+ "GTQ": {
+ "name": "GTQ",
+ "symbol": "GTQ"
+ },
+ "GYD": {
+ "name": "GYD",
+ "symbol": "GYD"
+ },
+ "HKD": {
+ "name": "HKD",
+ "symbol": "HK$"
+ },
+ "HNL": {
+ "name": "HNL",
+ "symbol": "HNL"
+ },
+ "HRK": {
+ "name": "HRK",
+ "symbol": "HRK"
+ },
+ "HTG": {
+ "name": "HTG",
+ "symbol": "HTG"
+ },
+ "HUF": {
+ "name": "HUF",
+ "symbol": "HUF"
+ },
+ "IDR": {
+ "name": "IDR",
+ "symbol": "IDR"
+ },
+ "ILS": {
+ "name": "ILS",
+ "symbol": "₪"
+ },
+ "IQD": {
+ "name": "IQD",
+ "symbol": "IQD"
+ },
+ "IRR": {
+ "name": "IRR",
+ "symbol": "IRR"
+ },
+ "ISK": {
+ "name": "ISK",
+ "symbol": "ISK"
+ },
+ "JMD": {
+ "name": "JMD",
+ "symbol": "JMD"
+ },
+ "JOD": {
+ "name": "JOD",
+ "symbol": "JOD"
+ },
+ "KGS": {
+ "name": "KGS",
+ "symbol": "KGS"
+ },
+ "KHR": {
+ "name": "KHR",
+ "symbol": "KHR"
+ },
+ "KPW": {
+ "name": "KPW",
+ "symbol": "KPW"
+ },
+ "KRW": {
+ "name": "KRW",
+ "symbol": "â‚©"
+ },
+ "MWK": {
+ "name": "Kwacha ya Malawi",
+ "symbol": "MWK"
+ },
+ "ZMW": {
+ "name": "Kwacha ya Zambia",
+ "symbol": "ZMW"
+ },
+ "AOA": {
+ "name": "Kwanza ya Angola",
+ "symbol": "AOA"
+ },
+ "KWD": {
+ "name": "KWD",
+ "symbol": "KWD"
+ },
+ "KYD": {
+ "name": "KYD",
+ "symbol": "KYD"
+ },
+ "KZT": {
+ "name": "KZT",
+ "symbol": "KZT"
+ },
+ "LAK": {
+ "name": "LAK",
+ "symbol": "LAK"
+ },
+ "LBP": {
+ "name": "LBP",
+ "symbol": "LBP"
+ },
+ "SLL": {
+ "name": "Leoni",
+ "symbol": "SLL"
+ },
+ "SZL": {
+ "name": "Lilangeni",
+ "symbol": "SZL"
+ },
+ "LKR": {
+ "name": "LKR",
+ "symbol": "LKR"
+ },
+ "LSL": {
+ "name": "Loti ya Lesoto",
+ "symbol": "LSL"
+ },
+ "LTL": {
+ "name": "LTL",
+ "symbol": "LTL"
+ },
+ "MDL": {
+ "name": "MDL",
+ "symbol": "MDL"
+ },
+ "MKD": {
+ "name": "MKD",
+ "symbol": "MKD"
+ },
+ "MMK": {
+ "name": "MMK",
+ "symbol": "MMK"
+ },
+ "MNT": {
+ "name": "MNT",
+ "symbol": "MNT"
+ },
+ "MOP": {
+ "name": "MOP",
+ "symbol": "MOP"
+ },
+ "MVR": {
+ "name": "MVR",
+ "symbol": "MVR"
+ },
+ "MXN": {
+ "name": "MXN",
+ "symbol": "MX$"
+ },
+ "MYR": {
+ "name": "MYR",
+ "symbol": "MYR"
+ },
+ "MZN": {
+ "name": "MZN",
+ "symbol": "MZN"
+ },
+ "NGN": {
+ "name": "Naira ya Nijeria",
+ "symbol": "NGN"
+ },
+ "ERN": {
+ "name": "Nakfa ya Eritrea",
+ "symbol": "ERN"
+ },
+ "NIO": {
+ "name": "NIO",
+ "symbol": "NIO"
+ },
+ "NOK": {
+ "name": "NOK",
+ "symbol": "NOK"
+ },
+ "NPR": {
+ "name": "NPR",
+ "symbol": "NPR"
+ },
+ "NZD": {
+ "name": "NZD",
+ "symbol": "NZ$"
+ },
+ "OMR": {
+ "name": "OMR",
+ "symbol": "OMR"
+ },
+ "PAB": {
+ "name": "PAB",
+ "symbol": "PAB"
+ },
+ "EGP": {
+ "name": "Pauni ya Misri",
+ "symbol": "EGP"
+ },
+ "SHP": {
+ "name": "Pauni ya Santahelena",
+ "symbol": "SHP"
+ },
+ "SDG": {
+ "name": "Pauni ya Sudani",
+ "symbol": "SDG"
+ },
+ "GBP": {
+ "name": "Pauni ya Uingereza",
+ "symbol": "£"
+ },
+ "PEN": {
+ "name": "PEN",
+ "symbol": "PEN"
+ },
+ "PGK": {
+ "name": "PGK",
+ "symbol": "PGK"
+ },
+ "PHP": {
+ "name": "PHP",
+ "symbol": "PHP"
+ },
+ "PKR": {
+ "name": "PKR",
+ "symbol": "PKR"
+ },
+ "PLN": {
+ "name": "PLN",
+ "symbol": "PLN"
+ },
+ "BWP": {
+ "name": "Pula ya Botswana",
+ "symbol": "BWP"
+ },
+ "PYG": {
+ "name": "PYG",
+ "symbol": "PYG"
+ },
+ "QAR": {
+ "name": "QAR",
+ "symbol": "QAR"
+ },
+ "ZAR": {
+ "name": "Randi ya Afrika Kusini",
+ "symbol": "ZAR"
+ },
+ "SAR": {
+ "name": "Riyal ya Saudia",
+ "symbol": "SAR"
+ },
+ "RON": {
+ "name": "RON",
+ "symbol": "RON"
+ },
+ "RSD": {
+ "name": "RSD",
+ "symbol": "RSD"
+ },
+ "RUB": {
+ "name": "RUB",
+ "symbol": "RUB"
+ },
+ "INR": {
+ "name": "Rupia ya India",
+ "symbol": "₹"
+ },
+ "MUR": {
+ "name": "Rupia ya Morisi",
+ "symbol": "MUR"
+ },
+ "SCR": {
+ "name": "Rupia ya Shelisheli",
+ "symbol": "SCR"
+ },
+ "JPY": {
+ "name": "Sarafu ya Kijapani",
+ "symbol": "JPÂ¥"
+ },
+ "SBD": {
+ "name": "SBD",
+ "symbol": "SBD"
+ },
+ "SEK": {
+ "name": "SEK",
+ "symbol": "SEK"
+ },
+ "SGD": {
+ "name": "SGD",
+ "symbol": "SGD"
+ },
+ "KES": {
+ "name": "Shilingi ya Kenya",
+ "symbol": "Ksh"
+ },
+ "SOS": {
+ "name": "Shilingi ya Somalia",
+ "symbol": "SOS"
+ },
+ "TZS": {
+ "name": "Shilingi ya Tanzania",
+ "symbol": "TZS"
+ },
+ "UGX": {
+ "name": "Shilingi ya Uganda",
+ "symbol": "UGX"
+ },
+ "SRD": {
+ "name": "SRD",
+ "symbol": "SRD"
+ },
+ "SSP": {
+ "name": "SSP",
+ "symbol": "SSP"
+ },
+ "SVC": {
+ "name": "SVC",
+ "symbol": "SVC"
+ },
+ "SYP": {
+ "name": "SYP",
+ "symbol": "SYP"
+ },
+ "THB": {
+ "name": "THB",
+ "symbol": "THB"
+ },
+ "TJS": {
+ "name": "TJS",
+ "symbol": "TJS"
+ },
+ "TMT": {
+ "name": "TMT",
+ "symbol": "TMT"
+ },
+ "TOP": {
+ "name": "TOP",
+ "symbol": "TOP"
+ },
+ "TRY": {
+ "name": "TRY",
+ "symbol": "TRY"
+ },
+ "TTD": {
+ "name": "TTD",
+ "symbol": "TTD"
+ },
+ "TWD": {
+ "name": "TWD",
+ "symbol": "NT$"
+ },
+ "UAH": {
+ "name": "UAH",
+ "symbol": "UAH"
+ },
+ "MRO": {
+ "name": "Ugwiya ya Moritania",
+ "symbol": "MRO"
+ },
+ "UYU": {
+ "name": "UYU",
+ "symbol": "UYU"
+ },
+ "UZS": {
+ "name": "UZS",
+ "symbol": "UZS"
+ },
+ "VEF": {
+ "name": "VEF",
+ "symbol": "VEF"
+ },
+ "VND": {
+ "name": "VND",
+ "symbol": "â‚«"
+ },
+ "VUV": {
+ "name": "VUV",
+ "symbol": "VUV"
+ },
+ "WST": {
+ "name": "WST",
+ "symbol": "WST"
+ },
+ "XCD": {
+ "name": "XCD",
+ "symbol": "EC$"
+ },
+ "XPF": {
+ "name": "XPF",
+ "symbol": "CFPF"
+ },
+ "YER": {
+ "name": "YER",
+ "symbol": "YER"
+ },
+ "CNY": {
+ "name": "Yuan Renminbi ya China",
+ "symbol": "CNÂ¥"
+ },
+ "EUR": {
+ "name": "Yuro",
+ "symbol": "€"
+ },
+ "ZWL": {
+ "name": "ZWL",
+ "symbol": "ZWL"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/currency/de-CH.json b/library/intl/resources/currency/de-CH.json
new file mode 100644
index 000000000..3518b82a8
--- /dev/null
+++ b/library/intl/resources/currency/de-CH.json
@@ -0,0 +1,634 @@
+{
+ "AFN": {
+ "name": "Afghanischer Afghani",
+ "symbol": "AFN"
+ },
+ "EGP": {
+ "name": "Ägyptisches Pfund",
+ "symbol": "EGP"
+ },
+ "ALL": {
+ "name": "Albanischer Lek",
+ "symbol": "ALL"
+ },
+ "DZD": {
+ "name": "Algerischer Dinar",
+ "symbol": "DZD"
+ },
+ "AOA": {
+ "name": "Angolanischer Kwanza",
+ "symbol": "AOA"
+ },
+ "ARS": {
+ "name": "Argentinischer Peso",
+ "symbol": "ARS"
+ },
+ "AMD": {
+ "name": "Armenischer Dram",
+ "symbol": "AMD"
+ },
+ "AWG": {
+ "name": "Aruba-Florin",
+ "symbol": "AWG"
+ },
+ "AZN": {
+ "name": "Aserbaidschan-Manat",
+ "symbol": "AZN"
+ },
+ "ETB": {
+ "name": "Äthiopischer Birr",
+ "symbol": "ETB"
+ },
+ "AUD": {
+ "name": "Australischer Dollar",
+ "symbol": "AU$"
+ },
+ "BSD": {
+ "name": "Bahamas-Dollar",
+ "symbol": "BSD"
+ },
+ "BHD": {
+ "name": "Bahrain-Dinar",
+ "symbol": "BHD"
+ },
+ "BDT": {
+ "name": "Bangladesch-Taka",
+ "symbol": "BDT"
+ },
+ "BBD": {
+ "name": "Barbados-Dollar",
+ "symbol": "BBD"
+ },
+ "BZD": {
+ "name": "Belize-Dollar",
+ "symbol": "BZD"
+ },
+ "BMD": {
+ "name": "Bermuda-Dollar",
+ "symbol": "BMD"
+ },
+ "BTN": {
+ "name": "Bhutan-Ngultrum",
+ "symbol": "BTN"
+ },
+ "BOB": {
+ "name": "Bolivanischer Boliviano",
+ "symbol": "BOB"
+ },
+ "BAM": {
+ "name": "Bosnien und Herzegowina Konvertierbare Mark",
+ "symbol": "BAM"
+ },
+ "BWP": {
+ "name": "Botswanischer Pula",
+ "symbol": "BWP"
+ },
+ "BRL": {
+ "name": "Brasilianischer Real",
+ "symbol": "R$"
+ },
+ "GBP": {
+ "name": "Britisches Pfund Sterling",
+ "symbol": "£"
+ },
+ "BND": {
+ "name": "Brunei-Dollar",
+ "symbol": "BND"
+ },
+ "BGN": {
+ "name": "Bulgarischer Lew",
+ "symbol": "BGN"
+ },
+ "BIF": {
+ "name": "Burundi-Franc",
+ "symbol": "BIF"
+ },
+ "XOF": {
+ "name": "CFA-Franc (BCEAO)",
+ "symbol": "CFA"
+ },
+ "XAF": {
+ "name": "CFA-Franc (BEAC)",
+ "symbol": "FCFA"
+ },
+ "XPF": {
+ "name": "CFP-Franc",
+ "symbol": "CFPF"
+ },
+ "CLP": {
+ "name": "Chilenischer Peso",
+ "symbol": "CLP"
+ },
+ "CRC": {
+ "name": "Costa-Rica-Colón",
+ "symbol": "CRC"
+ },
+ "DKK": {
+ "name": "Dänische Krone",
+ "symbol": "DKK"
+ },
+ "DOP": {
+ "name": "Dominikanischer Peso",
+ "symbol": "DOP"
+ },
+ "DJF": {
+ "name": "Dschibuti-Franc",
+ "symbol": "DJF"
+ },
+ "SVC": {
+ "name": "El Salvador Colon",
+ "symbol": "SVC"
+ },
+ "ERN": {
+ "name": "Eritreischer Nakfa",
+ "symbol": "ERN"
+ },
+ "EUR": {
+ "name": "Euro",
+ "symbol": "€"
+ },
+ "FKP": {
+ "name": "Falkland-Pfund",
+ "symbol": "FKP"
+ },
+ "FJD": {
+ "name": "Fidschi-Dollar",
+ "symbol": "FJD"
+ },
+ "GMD": {
+ "name": "Gambia-Dalasi",
+ "symbol": "GMD"
+ },
+ "GEL": {
+ "name": "Georgischer Lari",
+ "symbol": "GEL"
+ },
+ "GHS": {
+ "name": "Ghanaischer Cedi",
+ "symbol": "GHS"
+ },
+ "GIP": {
+ "name": "Gibraltar-Pfund",
+ "symbol": "GIP"
+ },
+ "GTQ": {
+ "name": "Guatemaltekischer Quetzal",
+ "symbol": "GTQ"
+ },
+ "GNF": {
+ "name": "Guinea-Franc",
+ "symbol": "GNF"
+ },
+ "GYD": {
+ "name": "Guyana-Dollar",
+ "symbol": "GYD"
+ },
+ "HTG": {
+ "name": "Haitianische Gourde",
+ "symbol": "HTG"
+ },
+ "HNL": {
+ "name": "Honduras-Lempira",
+ "symbol": "HNL"
+ },
+ "HKD": {
+ "name": "Hongkong-Dollar",
+ "symbol": "HK$"
+ },
+ "INR": {
+ "name": "Indische Rupie",
+ "symbol": "₹"
+ },
+ "IDR": {
+ "name": "Indonesische Rupiah",
+ "symbol": "IDR"
+ },
+ "IQD": {
+ "name": "Irakischer Dinar",
+ "symbol": "IQD"
+ },
+ "IRR": {
+ "name": "Iranischer Rial",
+ "symbol": "IRR"
+ },
+ "ISK": {
+ "name": "Isländische Krone",
+ "symbol": "ISK"
+ },
+ "ILS": {
+ "name": "Israelischer Neuer Schekel",
+ "symbol": "₪"
+ },
+ "JMD": {
+ "name": "Jamaika-Dollar",
+ "symbol": "JMD"
+ },
+ "JPY": {
+ "name": "Japanischer Yen",
+ "symbol": "Â¥"
+ },
+ "YER": {
+ "name": "Jemen-Rial",
+ "symbol": "YER"
+ },
+ "JOD": {
+ "name": "Jordanischer Dinar",
+ "symbol": "JOD"
+ },
+ "KYD": {
+ "name": "Kaiman-Dollar",
+ "symbol": "KYD"
+ },
+ "KHR": {
+ "name": "Kambodschanischer Riel",
+ "symbol": "KHR"
+ },
+ "CAD": {
+ "name": "Kanadischer Dollar",
+ "symbol": "CA$"
+ },
+ "CVE": {
+ "name": "Kap-Verde-Escudo",
+ "symbol": "CVE"
+ },
+ "KZT": {
+ "name": "Kasachischer Tenge",
+ "symbol": "KZT"
+ },
+ "QAR": {
+ "name": "Katar-Riyal",
+ "symbol": "QAR"
+ },
+ "KES": {
+ "name": "Kenia-Schilling",
+ "symbol": "KES"
+ },
+ "KGS": {
+ "name": "Kirgisischer Som",
+ "symbol": "KGS"
+ },
+ "COP": {
+ "name": "Kolumbianischer Peso",
+ "symbol": "COP"
+ },
+ "KMF": {
+ "name": "Komoren-Franc",
+ "symbol": "KMF"
+ },
+ "CDF": {
+ "name": "Kongo-Franc",
+ "symbol": "CDF"
+ },
+ "HRK": {
+ "name": "Kroatischer Kuna",
+ "symbol": "HRK"
+ },
+ "CUP": {
+ "name": "Kubanischer Peso",
+ "symbol": "CUP"
+ },
+ "CUC": {
+ "name": "Kubanischer Peso (konvertibel)",
+ "symbol": "CUC"
+ },
+ "KWD": {
+ "name": "Kuwait-Dinar",
+ "symbol": "KWD"
+ },
+ "ZMW": {
+ "name": "Kwacha",
+ "symbol": "ZMW"
+ },
+ "LAK": {
+ "name": "Laotischer Kip",
+ "symbol": "LAK"
+ },
+ "LBP": {
+ "name": "Libanesisches Pfund",
+ "symbol": "LBP"
+ },
+ "LRD": {
+ "name": "Liberianischer Dollar",
+ "symbol": "LRD"
+ },
+ "LYD": {
+ "name": "Libyscher Dinar",
+ "symbol": "LYD"
+ },
+ "LTL": {
+ "name": "Litauischer Litas",
+ "symbol": "LTL"
+ },
+ "LSL": {
+ "name": "Loti",
+ "symbol": "LSL"
+ },
+ "MOP": {
+ "name": "Macao-Pataca",
+ "symbol": "MOP"
+ },
+ "MGA": {
+ "name": "Madagaskar-Ariary",
+ "symbol": "MGA"
+ },
+ "MWK": {
+ "name": "Malawi-Kwacha",
+ "symbol": "MWK"
+ },
+ "MYR": {
+ "name": "Malaysischer Ringgit",
+ "symbol": "MYR"
+ },
+ "MVR": {
+ "name": "Malediven-Rufiyaa",
+ "symbol": "MVR"
+ },
+ "MAD": {
+ "name": "Marokkanischer Dirham",
+ "symbol": "MAD"
+ },
+ "MRO": {
+ "name": "Mauretanischer Ouguiya",
+ "symbol": "MRO"
+ },
+ "MUR": {
+ "name": "Mauritius-Rupie",
+ "symbol": "MUR"
+ },
+ "MKD": {
+ "name": "Mazedonischer Denar",
+ "symbol": "MKD"
+ },
+ "MXN": {
+ "name": "Mexikanischer Peso",
+ "symbol": "MX$"
+ },
+ "MDL": {
+ "name": "Moldau-Leu",
+ "symbol": "MDL"
+ },
+ "MNT": {
+ "name": "Mongolischer Tögrög",
+ "symbol": "MNT"
+ },
+ "MZN": {
+ "name": "Mosambikanischer Metical",
+ "symbol": "MZN"
+ },
+ "MMK": {
+ "name": "Myanmarischer Kyat",
+ "symbol": "MMK"
+ },
+ "NAD": {
+ "name": "Namibia-Dollar",
+ "symbol": "NAD"
+ },
+ "NPR": {
+ "name": "Nepalesische Rupie",
+ "symbol": "NPR"
+ },
+ "TWD": {
+ "name": "Neuer Taiwan-Dollar",
+ "symbol": "NT$"
+ },
+ "NZD": {
+ "name": "Neuseeland-Dollar",
+ "symbol": "NZ$"
+ },
+ "NIO": {
+ "name": "Nicaragua-Córdoba",
+ "symbol": "NIO"
+ },
+ "ANG": {
+ "name": "Niederländische-Antillen-Gulden",
+ "symbol": "ANG"
+ },
+ "NGN": {
+ "name": "Nigerianischer Naira",
+ "symbol": "NGN"
+ },
+ "KPW": {
+ "name": "Nordkoreanischer Won",
+ "symbol": "KPW"
+ },
+ "NOK": {
+ "name": "Norwegische Krone",
+ "symbol": "NOK"
+ },
+ "OMR": {
+ "name": "Omanischer Rial",
+ "symbol": "OMR"
+ },
+ "XCD": {
+ "name": "Ostkaribischer Dollar",
+ "symbol": "EC$"
+ },
+ "PKR": {
+ "name": "Pakistanische Rupie",
+ "symbol": "PKR"
+ },
+ "PAB": {
+ "name": "Panamaischer Balboa",
+ "symbol": "PAB"
+ },
+ "PGK": {
+ "name": "Papua-Neuguineischer Kina",
+ "symbol": "PGK"
+ },
+ "PYG": {
+ "name": "Paraguayischer Guaraní",
+ "symbol": "PYG"
+ },
+ "PEN": {
+ "name": "Peruanischer Neuer Sol",
+ "symbol": "PEN"
+ },
+ "PHP": {
+ "name": "Philippinischer Peso",
+ "symbol": "PHP"
+ },
+ "PLN": {
+ "name": "Polnischer ZÅ‚oty",
+ "symbol": "PLN"
+ },
+ "CNY": {
+ "name": "Renminbi Yuan",
+ "symbol": "CNÂ¥"
+ },
+ "RWF": {
+ "name": "Ruanda-Franc",
+ "symbol": "RWF"
+ },
+ "RON": {
+ "name": "Rumänischer Leu",
+ "symbol": "RON"
+ },
+ "RUB": {
+ "name": "Russischer Rubel",
+ "symbol": "RUB"
+ },
+ "SBD": {
+ "name": "Salomonen-Dollar",
+ "symbol": "SBD"
+ },
+ "WST": {
+ "name": "Samoanischer Tala",
+ "symbol": "WST"
+ },
+ "STD": {
+ "name": "São-toméischer Dobra",
+ "symbol": "STD"
+ },
+ "SAR": {
+ "name": "Saudi-Rial",
+ "symbol": "SAR"
+ },
+ "SEK": {
+ "name": "Schwedische Krone",
+ "symbol": "SEK"
+ },
+ "CHF": {
+ "name": "Schweizer Franken",
+ "symbol": "CHF"
+ },
+ "RSD": {
+ "name": "Serbischer Dinar",
+ "symbol": "RSD"
+ },
+ "SCR": {
+ "name": "Seychellen-Rupie",
+ "symbol": "SCR"
+ },
+ "SLL": {
+ "name": "Sierra-leonischer Leone",
+ "symbol": "SLL"
+ },
+ "ZWL": {
+ "name": "Simbabwe-Dollar (2009)",
+ "symbol": "ZWL"
+ },
+ "SGD": {
+ "name": "Singapur-Dollar",
+ "symbol": "SGD"
+ },
+ "SOS": {
+ "name": "Somalia-Schilling",
+ "symbol": "SOS"
+ },
+ "LKR": {
+ "name": "Sri-Lanka-Rupie",
+ "symbol": "LKR"
+ },
+ "SHP": {
+ "name": "St. Helena-Pfund",
+ "symbol": "SHP"
+ },
+ "ZAR": {
+ "name": "Südafrikanischer Rand",
+ "symbol": "ZAR"
+ },
+ "SDG": {
+ "name": "Sudanesisches Pfund",
+ "symbol": "SDG"
+ },
+ "KRW": {
+ "name": "Südkoreanischer Won",
+ "symbol": "â‚©"
+ },
+ "SSP": {
+ "name": "Südsudanesisches Pfund",
+ "symbol": "SSP"
+ },
+ "SRD": {
+ "name": "Suriname-Dollar",
+ "symbol": "SRD"
+ },
+ "SZL": {
+ "name": "Swasiländischer Lilangeni",
+ "symbol": "SZL"
+ },
+ "SYP": {
+ "name": "Syrisches Pfund",
+ "symbol": "SYP"
+ },
+ "TJS": {
+ "name": "Tadschikistan-Somoni",
+ "symbol": "TJS"
+ },
+ "TZS": {
+ "name": "Tansania-Schilling",
+ "symbol": "TZS"
+ },
+ "THB": {
+ "name": "Thailändischer Baht",
+ "symbol": "฿"
+ },
+ "TOP": {
+ "name": "Tongaischer Paʻanga",
+ "symbol": "TOP"
+ },
+ "TTD": {
+ "name": "Trinidad und Tobago-Dollar",
+ "symbol": "TTD"
+ },
+ "CZK": {
+ "name": "Tschechische Krone",
+ "symbol": "CZK"
+ },
+ "TND": {
+ "name": "Tunesischer Dinar",
+ "symbol": "TND"
+ },
+ "TRY": {
+ "name": "Türkische Lira",
+ "symbol": "TRY"
+ },
+ "TMT": {
+ "name": "Turkmenistan-Manat",
+ "symbol": "TMT"
+ },
+ "UGX": {
+ "name": "Uganda-Schilling",
+ "symbol": "UGX"
+ },
+ "UAH": {
+ "name": "Ukrainische Hrywnja",
+ "symbol": "UAH"
+ },
+ "HUF": {
+ "name": "Ungarischer Forint",
+ "symbol": "HUF"
+ },
+ "UYU": {
+ "name": "Uruguayischer Peso",
+ "symbol": "UYU"
+ },
+ "USD": {
+ "name": "US-Dollar",
+ "symbol": "$"
+ },
+ "UZS": {
+ "name": "Usbekistan-Sum",
+ "symbol": "UZS"
+ },
+ "AED": {
+ "name": "VAE-Dirham",
+ "symbol": "AED"
+ },
+ "VUV": {
+ "name": "Vanuatu-Vatu",
+ "symbol": "VUV"
+ },
+ "VEF": {
+ "name": "Venezolanischer Bolívar",
+ "symbol": "VEF"
+ },
+ "VND": {
+ "name": "Vietnamesischer Dong",
+ "symbol": "â‚«"
+ },
+ "BYR": {
+ "name": "Weissrussischer Rubel",
+ "symbol": "BYR"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/currency/de.json b/library/intl/resources/currency/de.json
new file mode 100644
index 000000000..b8b1b90d9
--- /dev/null
+++ b/library/intl/resources/currency/de.json
@@ -0,0 +1,634 @@
+{
+ "AFN": {
+ "name": "Afghanischer Afghani",
+ "symbol": "AFN"
+ },
+ "EGP": {
+ "name": "Ägyptisches Pfund",
+ "symbol": "EGP"
+ },
+ "ALL": {
+ "name": "Albanischer Lek",
+ "symbol": "ALL"
+ },
+ "DZD": {
+ "name": "Algerischer Dinar",
+ "symbol": "DZD"
+ },
+ "AOA": {
+ "name": "Angolanischer Kwanza",
+ "symbol": "AOA"
+ },
+ "ARS": {
+ "name": "Argentinischer Peso",
+ "symbol": "ARS"
+ },
+ "AMD": {
+ "name": "Armenischer Dram",
+ "symbol": "AMD"
+ },
+ "AWG": {
+ "name": "Aruba-Florin",
+ "symbol": "AWG"
+ },
+ "AZN": {
+ "name": "Aserbaidschan-Manat",
+ "symbol": "AZN"
+ },
+ "ETB": {
+ "name": "Äthiopischer Birr",
+ "symbol": "ETB"
+ },
+ "AUD": {
+ "name": "Australischer Dollar",
+ "symbol": "AU$"
+ },
+ "BSD": {
+ "name": "Bahamas-Dollar",
+ "symbol": "BSD"
+ },
+ "BHD": {
+ "name": "Bahrain-Dinar",
+ "symbol": "BHD"
+ },
+ "BDT": {
+ "name": "Bangladesch-Taka",
+ "symbol": "BDT"
+ },
+ "BBD": {
+ "name": "Barbados-Dollar",
+ "symbol": "BBD"
+ },
+ "BZD": {
+ "name": "Belize-Dollar",
+ "symbol": "BZD"
+ },
+ "BMD": {
+ "name": "Bermuda-Dollar",
+ "symbol": "BMD"
+ },
+ "BTN": {
+ "name": "Bhutan-Ngultrum",
+ "symbol": "BTN"
+ },
+ "BOB": {
+ "name": "Bolivanischer Boliviano",
+ "symbol": "BOB"
+ },
+ "BAM": {
+ "name": "Bosnien und Herzegowina Konvertierbare Mark",
+ "symbol": "BAM"
+ },
+ "BWP": {
+ "name": "Botswanischer Pula",
+ "symbol": "BWP"
+ },
+ "BRL": {
+ "name": "Brasilianischer Real",
+ "symbol": "R$"
+ },
+ "GBP": {
+ "name": "Britisches Pfund Sterling",
+ "symbol": "£"
+ },
+ "BND": {
+ "name": "Brunei-Dollar",
+ "symbol": "BND"
+ },
+ "BGN": {
+ "name": "Bulgarischer Lew",
+ "symbol": "BGN"
+ },
+ "BIF": {
+ "name": "Burundi-Franc",
+ "symbol": "BIF"
+ },
+ "XOF": {
+ "name": "CFA-Franc (BCEAO)",
+ "symbol": "CFA"
+ },
+ "XAF": {
+ "name": "CFA-Franc (BEAC)",
+ "symbol": "FCFA"
+ },
+ "XPF": {
+ "name": "CFP-Franc",
+ "symbol": "CFPF"
+ },
+ "CLP": {
+ "name": "Chilenischer Peso",
+ "symbol": "CLP"
+ },
+ "CRC": {
+ "name": "Costa-Rica-Colón",
+ "symbol": "CRC"
+ },
+ "DKK": {
+ "name": "Dänische Krone",
+ "symbol": "DKK"
+ },
+ "DOP": {
+ "name": "Dominikanischer Peso",
+ "symbol": "DOP"
+ },
+ "DJF": {
+ "name": "Dschibuti-Franc",
+ "symbol": "DJF"
+ },
+ "SVC": {
+ "name": "El Salvador Colon",
+ "symbol": "SVC"
+ },
+ "ERN": {
+ "name": "Eritreischer Nakfa",
+ "symbol": "ERN"
+ },
+ "EUR": {
+ "name": "Euro",
+ "symbol": "€"
+ },
+ "FKP": {
+ "name": "Falkland-Pfund",
+ "symbol": "FKP"
+ },
+ "FJD": {
+ "name": "Fidschi-Dollar",
+ "symbol": "FJD"
+ },
+ "GMD": {
+ "name": "Gambia-Dalasi",
+ "symbol": "GMD"
+ },
+ "GEL": {
+ "name": "Georgischer Lari",
+ "symbol": "GEL"
+ },
+ "GHS": {
+ "name": "Ghanaischer Cedi",
+ "symbol": "GHS"
+ },
+ "GIP": {
+ "name": "Gibraltar-Pfund",
+ "symbol": "GIP"
+ },
+ "GTQ": {
+ "name": "Guatemaltekischer Quetzal",
+ "symbol": "GTQ"
+ },
+ "GNF": {
+ "name": "Guinea-Franc",
+ "symbol": "GNF"
+ },
+ "GYD": {
+ "name": "Guyana-Dollar",
+ "symbol": "GYD"
+ },
+ "HTG": {
+ "name": "Haitianische Gourde",
+ "symbol": "HTG"
+ },
+ "HNL": {
+ "name": "Honduras-Lempira",
+ "symbol": "HNL"
+ },
+ "HKD": {
+ "name": "Hongkong-Dollar",
+ "symbol": "HK$"
+ },
+ "INR": {
+ "name": "Indische Rupie",
+ "symbol": "₹"
+ },
+ "IDR": {
+ "name": "Indonesische Rupiah",
+ "symbol": "IDR"
+ },
+ "IQD": {
+ "name": "Irakischer Dinar",
+ "symbol": "IQD"
+ },
+ "IRR": {
+ "name": "Iranischer Rial",
+ "symbol": "IRR"
+ },
+ "ISK": {
+ "name": "Isländische Krone",
+ "symbol": "ISK"
+ },
+ "ILS": {
+ "name": "Israelischer Neuer Schekel",
+ "symbol": "₪"
+ },
+ "JMD": {
+ "name": "Jamaika-Dollar",
+ "symbol": "JMD"
+ },
+ "JPY": {
+ "name": "Japanischer Yen",
+ "symbol": "Â¥"
+ },
+ "YER": {
+ "name": "Jemen-Rial",
+ "symbol": "YER"
+ },
+ "JOD": {
+ "name": "Jordanischer Dinar",
+ "symbol": "JOD"
+ },
+ "KYD": {
+ "name": "Kaiman-Dollar",
+ "symbol": "KYD"
+ },
+ "KHR": {
+ "name": "Kambodschanischer Riel",
+ "symbol": "KHR"
+ },
+ "CAD": {
+ "name": "Kanadischer Dollar",
+ "symbol": "CA$"
+ },
+ "CVE": {
+ "name": "Kap-Verde-Escudo",
+ "symbol": "CVE"
+ },
+ "KZT": {
+ "name": "Kasachischer Tenge",
+ "symbol": "KZT"
+ },
+ "QAR": {
+ "name": "Katar-Riyal",
+ "symbol": "QAR"
+ },
+ "KES": {
+ "name": "Kenia-Schilling",
+ "symbol": "KES"
+ },
+ "KGS": {
+ "name": "Kirgisischer Som",
+ "symbol": "KGS"
+ },
+ "COP": {
+ "name": "Kolumbianischer Peso",
+ "symbol": "COP"
+ },
+ "KMF": {
+ "name": "Komoren-Franc",
+ "symbol": "KMF"
+ },
+ "CDF": {
+ "name": "Kongo-Franc",
+ "symbol": "CDF"
+ },
+ "HRK": {
+ "name": "Kroatischer Kuna",
+ "symbol": "HRK"
+ },
+ "CUP": {
+ "name": "Kubanischer Peso",
+ "symbol": "CUP"
+ },
+ "CUC": {
+ "name": "Kubanischer Peso (konvertibel)",
+ "symbol": "CUC"
+ },
+ "KWD": {
+ "name": "Kuwait-Dinar",
+ "symbol": "KWD"
+ },
+ "ZMW": {
+ "name": "Kwacha",
+ "symbol": "ZMW"
+ },
+ "LAK": {
+ "name": "Laotischer Kip",
+ "symbol": "LAK"
+ },
+ "LBP": {
+ "name": "Libanesisches Pfund",
+ "symbol": "LBP"
+ },
+ "LRD": {
+ "name": "Liberianischer Dollar",
+ "symbol": "LRD"
+ },
+ "LYD": {
+ "name": "Libyscher Dinar",
+ "symbol": "LYD"
+ },
+ "LTL": {
+ "name": "Litauischer Litas",
+ "symbol": "LTL"
+ },
+ "LSL": {
+ "name": "Loti",
+ "symbol": "LSL"
+ },
+ "MOP": {
+ "name": "Macao-Pataca",
+ "symbol": "MOP"
+ },
+ "MGA": {
+ "name": "Madagaskar-Ariary",
+ "symbol": "MGA"
+ },
+ "MWK": {
+ "name": "Malawi-Kwacha",
+ "symbol": "MWK"
+ },
+ "MYR": {
+ "name": "Malaysischer Ringgit",
+ "symbol": "MYR"
+ },
+ "MVR": {
+ "name": "Malediven-Rufiyaa",
+ "symbol": "MVR"
+ },
+ "MAD": {
+ "name": "Marokkanischer Dirham",
+ "symbol": "MAD"
+ },
+ "MRO": {
+ "name": "Mauretanischer Ouguiya",
+ "symbol": "MRO"
+ },
+ "MUR": {
+ "name": "Mauritius-Rupie",
+ "symbol": "MUR"
+ },
+ "MKD": {
+ "name": "Mazedonischer Denar",
+ "symbol": "MKD"
+ },
+ "MXN": {
+ "name": "Mexikanischer Peso",
+ "symbol": "MX$"
+ },
+ "MDL": {
+ "name": "Moldau-Leu",
+ "symbol": "MDL"
+ },
+ "MNT": {
+ "name": "Mongolischer Tögrög",
+ "symbol": "MNT"
+ },
+ "MZN": {
+ "name": "Mosambikanischer Metical",
+ "symbol": "MZN"
+ },
+ "MMK": {
+ "name": "Myanmarischer Kyat",
+ "symbol": "MMK"
+ },
+ "NAD": {
+ "name": "Namibia-Dollar",
+ "symbol": "NAD"
+ },
+ "NPR": {
+ "name": "Nepalesische Rupie",
+ "symbol": "NPR"
+ },
+ "TWD": {
+ "name": "Neuer Taiwan-Dollar",
+ "symbol": "NT$"
+ },
+ "NZD": {
+ "name": "Neuseeland-Dollar",
+ "symbol": "NZ$"
+ },
+ "NIO": {
+ "name": "Nicaragua-Córdoba",
+ "symbol": "NIO"
+ },
+ "ANG": {
+ "name": "Niederländische-Antillen-Gulden",
+ "symbol": "ANG"
+ },
+ "NGN": {
+ "name": "Nigerianischer Naira",
+ "symbol": "NGN"
+ },
+ "KPW": {
+ "name": "Nordkoreanischer Won",
+ "symbol": "KPW"
+ },
+ "NOK": {
+ "name": "Norwegische Krone",
+ "symbol": "NOK"
+ },
+ "OMR": {
+ "name": "Omanischer Rial",
+ "symbol": "OMR"
+ },
+ "XCD": {
+ "name": "Ostkaribischer Dollar",
+ "symbol": "EC$"
+ },
+ "PKR": {
+ "name": "Pakistanische Rupie",
+ "symbol": "PKR"
+ },
+ "PAB": {
+ "name": "Panamaischer Balboa",
+ "symbol": "PAB"
+ },
+ "PGK": {
+ "name": "Papua-Neuguineischer Kina",
+ "symbol": "PGK"
+ },
+ "PYG": {
+ "name": "Paraguayischer Guaraní",
+ "symbol": "PYG"
+ },
+ "PEN": {
+ "name": "Peruanischer Neuer Sol",
+ "symbol": "PEN"
+ },
+ "PHP": {
+ "name": "Philippinischer Peso",
+ "symbol": "PHP"
+ },
+ "PLN": {
+ "name": "Polnischer ZÅ‚oty",
+ "symbol": "PLN"
+ },
+ "CNY": {
+ "name": "Renminbi Yuan",
+ "symbol": "CNÂ¥"
+ },
+ "RWF": {
+ "name": "Ruanda-Franc",
+ "symbol": "RWF"
+ },
+ "RON": {
+ "name": "Rumänischer Leu",
+ "symbol": "RON"
+ },
+ "RUB": {
+ "name": "Russischer Rubel",
+ "symbol": "RUB"
+ },
+ "SBD": {
+ "name": "Salomonen-Dollar",
+ "symbol": "SBD"
+ },
+ "WST": {
+ "name": "Samoanischer Tala",
+ "symbol": "WST"
+ },
+ "STD": {
+ "name": "São-toméischer Dobra",
+ "symbol": "STD"
+ },
+ "SAR": {
+ "name": "Saudi-Rial",
+ "symbol": "SAR"
+ },
+ "SEK": {
+ "name": "Schwedische Krone",
+ "symbol": "SEK"
+ },
+ "CHF": {
+ "name": "Schweizer Franken",
+ "symbol": "CHF"
+ },
+ "RSD": {
+ "name": "Serbischer Dinar",
+ "symbol": "RSD"
+ },
+ "SCR": {
+ "name": "Seychellen-Rupie",
+ "symbol": "SCR"
+ },
+ "SLL": {
+ "name": "Sierra-leonischer Leone",
+ "symbol": "SLL"
+ },
+ "ZWL": {
+ "name": "Simbabwe-Dollar (2009)",
+ "symbol": "ZWL"
+ },
+ "SGD": {
+ "name": "Singapur-Dollar",
+ "symbol": "SGD"
+ },
+ "SOS": {
+ "name": "Somalia-Schilling",
+ "symbol": "SOS"
+ },
+ "LKR": {
+ "name": "Sri-Lanka-Rupie",
+ "symbol": "LKR"
+ },
+ "SHP": {
+ "name": "St. Helena-Pfund",
+ "symbol": "SHP"
+ },
+ "ZAR": {
+ "name": "Südafrikanischer Rand",
+ "symbol": "ZAR"
+ },
+ "SDG": {
+ "name": "Sudanesisches Pfund",
+ "symbol": "SDG"
+ },
+ "KRW": {
+ "name": "Südkoreanischer Won",
+ "symbol": "â‚©"
+ },
+ "SSP": {
+ "name": "Südsudanesisches Pfund",
+ "symbol": "SSP"
+ },
+ "SRD": {
+ "name": "Suriname-Dollar",
+ "symbol": "SRD"
+ },
+ "SZL": {
+ "name": "Swasiländischer Lilangeni",
+ "symbol": "SZL"
+ },
+ "SYP": {
+ "name": "Syrisches Pfund",
+ "symbol": "SYP"
+ },
+ "TJS": {
+ "name": "Tadschikistan-Somoni",
+ "symbol": "TJS"
+ },
+ "TZS": {
+ "name": "Tansania-Schilling",
+ "symbol": "TZS"
+ },
+ "THB": {
+ "name": "Thailändischer Baht",
+ "symbol": "฿"
+ },
+ "TOP": {
+ "name": "Tongaischer Paʻanga",
+ "symbol": "TOP"
+ },
+ "TTD": {
+ "name": "Trinidad und Tobago-Dollar",
+ "symbol": "TTD"
+ },
+ "CZK": {
+ "name": "Tschechische Krone",
+ "symbol": "CZK"
+ },
+ "TND": {
+ "name": "Tunesischer Dinar",
+ "symbol": "TND"
+ },
+ "TRY": {
+ "name": "Türkische Lira",
+ "symbol": "TRY"
+ },
+ "TMT": {
+ "name": "Turkmenistan-Manat",
+ "symbol": "TMT"
+ },
+ "UGX": {
+ "name": "Uganda-Schilling",
+ "symbol": "UGX"
+ },
+ "UAH": {
+ "name": "Ukrainische Hrywnja",
+ "symbol": "UAH"
+ },
+ "HUF": {
+ "name": "Ungarischer Forint",
+ "symbol": "HUF"
+ },
+ "UYU": {
+ "name": "Uruguayischer Peso",
+ "symbol": "UYU"
+ },
+ "USD": {
+ "name": "US-Dollar",
+ "symbol": "$"
+ },
+ "UZS": {
+ "name": "Usbekistan-Sum",
+ "symbol": "UZS"
+ },
+ "AED": {
+ "name": "VAE-Dirham",
+ "symbol": "AED"
+ },
+ "VUV": {
+ "name": "Vanuatu-Vatu",
+ "symbol": "VUV"
+ },
+ "VEF": {
+ "name": "Venezolanischer Bolívar",
+ "symbol": "VEF"
+ },
+ "VND": {
+ "name": "Vietnamesischer Dong",
+ "symbol": "â‚«"
+ },
+ "BYR": {
+ "name": "Weißrussischer Rubel",
+ "symbol": "BYR"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/currency/dje.json b/library/intl/resources/currency/dje.json
new file mode 100644
index 000000000..c75824e61
--- /dev/null
+++ b/library/intl/resources/currency/dje.json
@@ -0,0 +1,634 @@
+{
+ "AFN": {
+ "name": "AFN",
+ "symbol": "AFN"
+ },
+ "ALL": {
+ "name": "ALL",
+ "symbol": "ALL"
+ },
+ "DZD": {
+ "name": "Alžeeri Dinar",
+ "symbol": "DZD"
+ },
+ "AMD": {
+ "name": "AMD",
+ "symbol": "AMD"
+ },
+ "USD": {
+ "name": "Ameriki Dollar",
+ "symbol": "US$"
+ },
+ "ANG": {
+ "name": "ANG",
+ "symbol": "ANG"
+ },
+ "AOA": {
+ "name": "Angoola Kwanza",
+ "symbol": "AOA"
+ },
+ "ARS": {
+ "name": "ARS",
+ "symbol": "ARS"
+ },
+ "AWG": {
+ "name": "AWG",
+ "symbol": "AWG"
+ },
+ "AZN": {
+ "name": "AZN",
+ "symbol": "AZN"
+ },
+ "BHD": {
+ "name": "Bahareen Dinar",
+ "symbol": "BHD"
+ },
+ "BAM": {
+ "name": "BAM",
+ "symbol": "BAM"
+ },
+ "BBD": {
+ "name": "BBD",
+ "symbol": "BBD"
+ },
+ "BDT": {
+ "name": "BDT",
+ "symbol": "BDT"
+ },
+ "BGN": {
+ "name": "BGN",
+ "symbol": "BGN"
+ },
+ "BMD": {
+ "name": "BMD",
+ "symbol": "BMD"
+ },
+ "BND": {
+ "name": "BND",
+ "symbol": "BND"
+ },
+ "BOB": {
+ "name": "BOB",
+ "symbol": "BOB"
+ },
+ "BWP": {
+ "name": "Botswaana Pund",
+ "symbol": "BWP"
+ },
+ "GBP": {
+ "name": "Britin Pund",
+ "symbol": "£"
+ },
+ "BRL": {
+ "name": "BRL",
+ "symbol": "R$"
+ },
+ "BSD": {
+ "name": "BSD",
+ "symbol": "BSD"
+ },
+ "BTN": {
+ "name": "BTN",
+ "symbol": "BTN"
+ },
+ "BIF": {
+ "name": "Burundi Fraŋ",
+ "symbol": "BIF"
+ },
+ "BYR": {
+ "name": "BYR",
+ "symbol": "BYR"
+ },
+ "BZD": {
+ "name": "BZD",
+ "symbol": "BZD"
+ },
+ "XOF": {
+ "name": "CFA Fraŋ (BCEAO)",
+ "symbol": "CFA"
+ },
+ "XAF": {
+ "name": "CFA Fraŋ (BEAC)",
+ "symbol": "FCFA"
+ },
+ "CLP": {
+ "name": "CLP",
+ "symbol": "CLP"
+ },
+ "COP": {
+ "name": "COP",
+ "symbol": "COP"
+ },
+ "CRC": {
+ "name": "CRC",
+ "symbol": "CRC"
+ },
+ "CUC": {
+ "name": "CUC",
+ "symbol": "CUC"
+ },
+ "CUP": {
+ "name": "CUP",
+ "symbol": "CUP"
+ },
+ "CZK": {
+ "name": "CZK",
+ "symbol": "CZK"
+ },
+ "DKK": {
+ "name": "DKK",
+ "symbol": "DKK"
+ },
+ "DOP": {
+ "name": "DOP",
+ "symbol": "DOP"
+ },
+ "ETB": {
+ "name": "Ecioopi Birr",
+ "symbol": "ETB"
+ },
+ "EUR": {
+ "name": "Eero",
+ "symbol": "€"
+ },
+ "ERN": {
+ "name": "Eritree Nafka",
+ "symbol": "ERN"
+ },
+ "FJD": {
+ "name": "FJD",
+ "symbol": "FJD"
+ },
+ "FKP": {
+ "name": "FKP",
+ "symbol": "FKP"
+ },
+ "GMD": {
+ "name": "Gambi Dalasi",
+ "symbol": "GMD"
+ },
+ "GEL": {
+ "name": "GEL",
+ "symbol": "GEL"
+ },
+ "GHS": {
+ "name": "GHS",
+ "symbol": "GHS"
+ },
+ "GIP": {
+ "name": "GIP",
+ "symbol": "GIP"
+ },
+ "GNF": {
+ "name": "GNF",
+ "symbol": "GNF"
+ },
+ "GTQ": {
+ "name": "GTQ",
+ "symbol": "GTQ"
+ },
+ "GYD": {
+ "name": "GYD",
+ "symbol": "GYD"
+ },
+ "ZAR": {
+ "name": "Hawasa Afriki Rand",
+ "symbol": "ZAR"
+ },
+ "HKD": {
+ "name": "HKD",
+ "symbol": "HK$"
+ },
+ "HNL": {
+ "name": "HNL",
+ "symbol": "HNL"
+ },
+ "HRK": {
+ "name": "HRK",
+ "symbol": "HRK"
+ },
+ "HTG": {
+ "name": "HTG",
+ "symbol": "HTG"
+ },
+ "HUF": {
+ "name": "HUF",
+ "symbol": "HUF"
+ },
+ "IDR": {
+ "name": "IDR",
+ "symbol": "IDR"
+ },
+ "ILS": {
+ "name": "ILS",
+ "symbol": "₪"
+ },
+ "INR": {
+ "name": "Indu Rupii",
+ "symbol": "₹"
+ },
+ "IQD": {
+ "name": "IQD",
+ "symbol": "IQD"
+ },
+ "IRR": {
+ "name": "IRR",
+ "symbol": "IRR"
+ },
+ "ISK": {
+ "name": "ISK",
+ "symbol": "ISK"
+ },
+ "JPY": {
+ "name": "Jaapoŋ Yen",
+ "symbol": "JPÂ¥"
+ },
+ "DJF": {
+ "name": "Jibuuti Fraŋ",
+ "symbol": "DJF"
+ },
+ "JMD": {
+ "name": "JMD",
+ "symbol": "JMD"
+ },
+ "JOD": {
+ "name": "JOD",
+ "symbol": "JOD"
+ },
+ "CAD": {
+ "name": "Kanaada Dollar",
+ "symbol": "CA$"
+ },
+ "CVE": {
+ "name": "Kapuver Escudo",
+ "symbol": "CVE"
+ },
+ "KES": {
+ "name": "Keeniya Šiiliŋ",
+ "symbol": "KES"
+ },
+ "KGS": {
+ "name": "KGS",
+ "symbol": "KGS"
+ },
+ "KHR": {
+ "name": "KHR",
+ "symbol": "KHR"
+ },
+ "KMF": {
+ "name": "Komoor Fraŋ",
+ "symbol": "KMF"
+ },
+ "CDF": {
+ "name": "Kongo Fraŋ",
+ "symbol": "CDF"
+ },
+ "KPW": {
+ "name": "KPW",
+ "symbol": "KPW"
+ },
+ "KRW": {
+ "name": "KRW",
+ "symbol": "â‚©"
+ },
+ "KWD": {
+ "name": "KWD",
+ "symbol": "KWD"
+ },
+ "KYD": {
+ "name": "KYD",
+ "symbol": "KYD"
+ },
+ "KZT": {
+ "name": "KZT",
+ "symbol": "KZT"
+ },
+ "AED": {
+ "name": "Laaraw Immaara Margantey Dirham",
+ "symbol": "AED"
+ },
+ "LAK": {
+ "name": "LAK",
+ "symbol": "LAK"
+ },
+ "LBP": {
+ "name": "LBP",
+ "symbol": "LBP"
+ },
+ "SLL": {
+ "name": "Leeon",
+ "symbol": "SLL"
+ },
+ "LSL": {
+ "name": "Leezoto Loti",
+ "symbol": "LSL"
+ },
+ "LRD": {
+ "name": "Liberia Dollar",
+ "symbol": "LRD"
+ },
+ "LYD": {
+ "name": "Liibi Dinar",
+ "symbol": "LYD"
+ },
+ "SZL": {
+ "name": "Lilangeni",
+ "symbol": "SZL"
+ },
+ "LKR": {
+ "name": "LKR",
+ "symbol": "LKR"
+ },
+ "LTL": {
+ "name": "LTL",
+ "symbol": "LTL"
+ },
+ "MAD": {
+ "name": "Maarok Dirham",
+ "symbol": "MAD"
+ },
+ "MWK": {
+ "name": "Malaawi Kwaca",
+ "symbol": "MWK"
+ },
+ "MGA": {
+ "name": "Malgaaši Fraŋ",
+ "symbol": "MGA"
+ },
+ "MDL": {
+ "name": "MDL",
+ "symbol": "MDL"
+ },
+ "EGP": {
+ "name": "Misra Pund",
+ "symbol": "EGP"
+ },
+ "MKD": {
+ "name": "MKD",
+ "symbol": "MKD"
+ },
+ "MMK": {
+ "name": "MMK",
+ "symbol": "MMK"
+ },
+ "MNT": {
+ "name": "MNT",
+ "symbol": "MNT"
+ },
+ "MUR": {
+ "name": "Mooris Rupii",
+ "symbol": "MUR"
+ },
+ "MRO": {
+ "name": "Mooritaani Ugiya",
+ "symbol": "MRO"
+ },
+ "MOP": {
+ "name": "MOP",
+ "symbol": "MOP"
+ },
+ "MVR": {
+ "name": "MVR",
+ "symbol": "MVR"
+ },
+ "MXN": {
+ "name": "MXN",
+ "symbol": "MX$"
+ },
+ "MYR": {
+ "name": "MYR",
+ "symbol": "MYR"
+ },
+ "MZN": {
+ "name": "MZN",
+ "symbol": "MZN"
+ },
+ "NGN": {
+ "name": "Naajiriya Neera",
+ "symbol": "NGN"
+ },
+ "NAD": {
+ "name": "Naamibi Dollar",
+ "symbol": "NAD"
+ },
+ "NIO": {
+ "name": "NIO",
+ "symbol": "NIO"
+ },
+ "NOK": {
+ "name": "NOK",
+ "symbol": "NOK"
+ },
+ "NPR": {
+ "name": "NPR",
+ "symbol": "NPR"
+ },
+ "NZD": {
+ "name": "NZD",
+ "symbol": "NZ$"
+ },
+ "OMR": {
+ "name": "OMR",
+ "symbol": "OMR"
+ },
+ "AUD": {
+ "name": "Ostraali Dollar",
+ "symbol": "A$"
+ },
+ "PAB": {
+ "name": "PAB",
+ "symbol": "PAB"
+ },
+ "PEN": {
+ "name": "PEN",
+ "symbol": "PEN"
+ },
+ "PGK": {
+ "name": "PGK",
+ "symbol": "PGK"
+ },
+ "PHP": {
+ "name": "PHP",
+ "symbol": "PHP"
+ },
+ "PKR": {
+ "name": "PKR",
+ "symbol": "PKR"
+ },
+ "PLN": {
+ "name": "PLN",
+ "symbol": "PLN"
+ },
+ "PYG": {
+ "name": "PYG",
+ "symbol": "PYG"
+ },
+ "QAR": {
+ "name": "QAR",
+ "symbol": "QAR"
+ },
+ "RON": {
+ "name": "RON",
+ "symbol": "RON"
+ },
+ "RSD": {
+ "name": "RSD",
+ "symbol": "RSD"
+ },
+ "RUB": {
+ "name": "RUB",
+ "symbol": "RUB"
+ },
+ "RWF": {
+ "name": "Rwanda Fraŋ",
+ "symbol": "RWF"
+ },
+ "STD": {
+ "name": "Sao Tome nda Prinsipe Dobra",
+ "symbol": "STD"
+ },
+ "SAR": {
+ "name": "Saudiya Riyal",
+ "symbol": "SAR"
+ },
+ "SBD": {
+ "name": "SBD",
+ "symbol": "SBD"
+ },
+ "SCR": {
+ "name": "Seešel Rupii",
+ "symbol": "SCR"
+ },
+ "SEK": {
+ "name": "SEK",
+ "symbol": "SEK"
+ },
+ "SHP": {
+ "name": "Seŋ Helena Fraŋ",
+ "symbol": "SHP"
+ },
+ "SGD": {
+ "name": "SGD",
+ "symbol": "SGD"
+ },
+ "CNY": {
+ "name": "Sinwa Yuan Renminbi",
+ "symbol": "CNÂ¥"
+ },
+ "SOS": {
+ "name": "Somaali Šiiliŋ",
+ "symbol": "SOS"
+ },
+ "SRD": {
+ "name": "SRD",
+ "symbol": "SRD"
+ },
+ "SSP": {
+ "name": "SSP",
+ "symbol": "SSP"
+ },
+ "SDG": {
+ "name": "Suudaŋ Dinar",
+ "symbol": "SDG"
+ },
+ "SVC": {
+ "name": "SVC",
+ "symbol": "SVC"
+ },
+ "CHF": {
+ "name": "Swisu Fraŋ",
+ "symbol": "CHF"
+ },
+ "SYP": {
+ "name": "SYP",
+ "symbol": "SYP"
+ },
+ "TZS": {
+ "name": "Tanzaani Šiiliŋ",
+ "symbol": "TZS"
+ },
+ "THB": {
+ "name": "THB",
+ "symbol": "THB"
+ },
+ "TJS": {
+ "name": "TJS",
+ "symbol": "TJS"
+ },
+ "TMT": {
+ "name": "TMT",
+ "symbol": "TMT"
+ },
+ "TOP": {
+ "name": "TOP",
+ "symbol": "TOP"
+ },
+ "TRY": {
+ "name": "TRY",
+ "symbol": "TRY"
+ },
+ "TTD": {
+ "name": "TTD",
+ "symbol": "TTD"
+ },
+ "TND": {
+ "name": "Tunizi Dinar",
+ "symbol": "TND"
+ },
+ "TWD": {
+ "name": "TWD",
+ "symbol": "NT$"
+ },
+ "UAH": {
+ "name": "UAH",
+ "symbol": "UAH"
+ },
+ "UGX": {
+ "name": "Uganda Šiiliŋ",
+ "symbol": "UGX"
+ },
+ "UYU": {
+ "name": "UYU",
+ "symbol": "UYU"
+ },
+ "UZS": {
+ "name": "UZS",
+ "symbol": "UZS"
+ },
+ "VEF": {
+ "name": "VEF",
+ "symbol": "VEF"
+ },
+ "VND": {
+ "name": "VND",
+ "symbol": "â‚«"
+ },
+ "VUV": {
+ "name": "VUV",
+ "symbol": "VUV"
+ },
+ "WST": {
+ "name": "WST",
+ "symbol": "WST"
+ },
+ "XCD": {
+ "name": "XCD",
+ "symbol": "EC$"
+ },
+ "XPF": {
+ "name": "XPF",
+ "symbol": "CFPF"
+ },
+ "YER": {
+ "name": "YER",
+ "symbol": "YER"
+ },
+ "ZMW": {
+ "name": "Zambi Kwaca",
+ "symbol": "ZMW"
+ },
+ "ZWL": {
+ "name": "ZWL",
+ "symbol": "ZWL"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/currency/dsb.json b/library/intl/resources/currency/dsb.json
new file mode 100644
index 000000000..4fc931fa3
--- /dev/null
+++ b/library/intl/resources/currency/dsb.json
@@ -0,0 +1,634 @@
+{
+ "AFN": {
+ "name": "afghaniski afgani",
+ "symbol": "AFN"
+ },
+ "ALL": {
+ "name": "albański lek",
+ "symbol": "ALL"
+ },
+ "DZD": {
+ "name": "algeriski dinar",
+ "symbol": "DZD"
+ },
+ "USD": {
+ "name": "ameriski dolar",
+ "symbol": "$"
+ },
+ "AOA": {
+ "name": "angolska kwanza",
+ "symbol": "AOA"
+ },
+ "ARS": {
+ "name": "argentinski peso",
+ "symbol": "ARS"
+ },
+ "AMD": {
+ "name": "armeński dram",
+ "symbol": "AMD"
+ },
+ "AWG": {
+ "name": "aruba-florin",
+ "symbol": "AWG"
+ },
+ "AUD": {
+ "name": "awstralski dolar",
+ "symbol": "AUD"
+ },
+ "AZN": {
+ "name": "azerbajdžaniski manat",
+ "symbol": "AZN"
+ },
+ "BSD": {
+ "name": "bahamaski dolar",
+ "symbol": "BSD"
+ },
+ "BHD": {
+ "name": "bahrainski dinar",
+ "symbol": "BHD"
+ },
+ "BDT": {
+ "name": "bangladešska taka",
+ "symbol": "BDT"
+ },
+ "BBD": {
+ "name": "barbadoski dolar",
+ "symbol": "BBD"
+ },
+ "BZD": {
+ "name": "belizeski dolar",
+ "symbol": "BZD"
+ },
+ "BYR": {
+ "name": "běłoruski rubl",
+ "symbol": "BYR"
+ },
+ "BMD": {
+ "name": "bermudaski dolar",
+ "symbol": "BMD"
+ },
+ "BTN": {
+ "name": "bhutański ngultrum",
+ "symbol": "BTN"
+ },
+ "BOB": {
+ "name": "boliwiski boliviano",
+ "symbol": "BOB"
+ },
+ "BAM": {
+ "name": "bosniska konwertibelna marka",
+ "symbol": "BAM"
+ },
+ "BWP": {
+ "name": "botswaniska pula",
+ "symbol": "BWP"
+ },
+ "BRL": {
+ "name": "brazilski real",
+ "symbol": "R$"
+ },
+ "GBP": {
+ "name": "britiski punt",
+ "symbol": "£"
+ },
+ "BND": {
+ "name": "bruneiski dolar",
+ "symbol": "BND"
+ },
+ "BGN": {
+ "name": "bulgarski lew",
+ "symbol": "BGN"
+ },
+ "BIF": {
+ "name": "burundiski frank",
+ "symbol": "BIF"
+ },
+ "CZK": {
+ "name": "Äeska krona",
+ "symbol": "CZK"
+ },
+ "XOF": {
+ "name": "CFA-frank (BCEAO)",
+ "symbol": "CFA"
+ },
+ "XAF": {
+ "name": "CFA-frank (BEAC)",
+ "symbol": "FCFA"
+ },
+ "XPF": {
+ "name": "CFP-frank",
+ "symbol": "CFPF"
+ },
+ "CLP": {
+ "name": "chilski peso",
+ "symbol": "CLP"
+ },
+ "CNY": {
+ "name": "chinski yuan",
+ "symbol": "CNÂ¥"
+ },
+ "HRK": {
+ "name": "chorwatska kuna",
+ "symbol": "HRK"
+ },
+ "DKK": {
+ "name": "dańska krona",
+ "symbol": "DKK"
+ },
+ "DOP": {
+ "name": "dominikański peso",
+ "symbol": "DOP"
+ },
+ "DJF": {
+ "name": "dźibutiski frank",
+ "symbol": "DJF"
+ },
+ "EGP": {
+ "name": "egyptojski punt",
+ "symbol": "EGP"
+ },
+ "SVC": {
+ "name": "el-salvadorski colón",
+ "symbol": "SVC"
+ },
+ "ERN": {
+ "name": "eritrejska nakfa",
+ "symbol": "ERN"
+ },
+ "ETB": {
+ "name": "etiopiski birr",
+ "symbol": "ETB"
+ },
+ "EUR": {
+ "name": "euro",
+ "symbol": "€"
+ },
+ "FKP": {
+ "name": "falklandski punt",
+ "symbol": "FKP"
+ },
+ "FJD": {
+ "name": "fidźiski dolar",
+ "symbol": "FJD"
+ },
+ "PHP": {
+ "name": "filipinski peso",
+ "symbol": "PHP"
+ },
+ "GMD": {
+ "name": "gambiski dalasi",
+ "symbol": "GMD"
+ },
+ "GEL": {
+ "name": "georgiski lari",
+ "symbol": "GEL"
+ },
+ "GHS": {
+ "name": "ghanaski cedi",
+ "symbol": "GHS"
+ },
+ "GIP": {
+ "name": "gibraltiski punt",
+ "symbol": "GIP"
+ },
+ "GTQ": {
+ "name": "guatemalski quetzal",
+ "symbol": "GTQ"
+ },
+ "GNF": {
+ "name": "guineski frank",
+ "symbol": "GNF"
+ },
+ "GYD": {
+ "name": "guyański dolar",
+ "symbol": "GYD"
+ },
+ "HTG": {
+ "name": "haitiska gourda",
+ "symbol": "HTG"
+ },
+ "HNL": {
+ "name": "honduraska lempira",
+ "symbol": "HNL"
+ },
+ "HKD": {
+ "name": "hongkongski dolar",
+ "symbol": "HK$"
+ },
+ "INR": {
+ "name": "indiska rupija",
+ "symbol": "₹"
+ },
+ "IDR": {
+ "name": "indoneska rupija",
+ "symbol": "IDR"
+ },
+ "IQD": {
+ "name": "irakski dinar",
+ "symbol": "IQD"
+ },
+ "IRR": {
+ "name": "irański rial",
+ "symbol": "IRR"
+ },
+ "ISK": {
+ "name": "islandska krona",
+ "symbol": "ISK"
+ },
+ "ILS": {
+ "name": "israelski nowy Å¡ekel",
+ "symbol": "₪"
+ },
+ "JMD": {
+ "name": "jamaiski dolar",
+ "symbol": "JMD"
+ },
+ "JPY": {
+ "name": "japański yen",
+ "symbol": "Â¥"
+ },
+ "YER": {
+ "name": "jemeński rial",
+ "symbol": "YER"
+ },
+ "JOD": {
+ "name": "jordaniski dinar",
+ "symbol": "JOD"
+ },
+ "KYD": {
+ "name": "kajmaniski dolar",
+ "symbol": "KYD"
+ },
+ "KHR": {
+ "name": "kambodžaski riel",
+ "symbol": "KHR"
+ },
+ "CAD": {
+ "name": "kanadiski dolar",
+ "symbol": "CA$"
+ },
+ "CVE": {
+ "name": "kapverdski escudo",
+ "symbol": "CVE"
+ },
+ "QAR": {
+ "name": "katarski rial",
+ "symbol": "QAR"
+ },
+ "KZT": {
+ "name": "kazachski tenge",
+ "symbol": "KZT"
+ },
+ "KES": {
+ "name": "keniaski Å¡iling",
+ "symbol": "KES"
+ },
+ "KGS": {
+ "name": "kirgiski som",
+ "symbol": "KGS"
+ },
+ "COP": {
+ "name": "kolumbiski peso",
+ "symbol": "COP"
+ },
+ "KMF": {
+ "name": "komorski frank",
+ "symbol": "KMF"
+ },
+ "CDF": {
+ "name": "kongoski frank",
+ "symbol": "CDF"
+ },
+ "CRC": {
+ "name": "kosta-rikański colón",
+ "symbol": "CRC"
+ },
+ "CUC": {
+ "name": "kubański konwertibelny peso",
+ "symbol": "CUC"
+ },
+ "CUP": {
+ "name": "kubański peso",
+ "symbol": "CUP"
+ },
+ "KWD": {
+ "name": "kuwaitski dinar",
+ "symbol": "KWD"
+ },
+ "LAK": {
+ "name": "laoski kip",
+ "symbol": "LAK"
+ },
+ "LBP": {
+ "name": "libanoński punt",
+ "symbol": "LBP"
+ },
+ "LRD": {
+ "name": "liberiski dolar",
+ "symbol": "LRD"
+ },
+ "LYD": {
+ "name": "libyski dinar",
+ "symbol": "LYD"
+ },
+ "LTL": {
+ "name": "litawski litas",
+ "symbol": "LTL"
+ },
+ "LSL": {
+ "name": "LSL",
+ "symbol": "LSL"
+ },
+ "MOP": {
+ "name": "macaoska pataca",
+ "symbol": "MOP"
+ },
+ "MGA": {
+ "name": "madagaskarski ariary",
+ "symbol": "MGA"
+ },
+ "HUF": {
+ "name": "madźarski forint",
+ "symbol": "HUF"
+ },
+ "MKD": {
+ "name": "makedoński denar",
+ "symbol": "MKD"
+ },
+ "MYR": {
+ "name": "malajziski ringgit",
+ "symbol": "MYR"
+ },
+ "MWK": {
+ "name": "malawiski kwacha",
+ "symbol": "MWK"
+ },
+ "MVR": {
+ "name": "malediwiska rupija",
+ "symbol": "MVR"
+ },
+ "MAD": {
+ "name": "marokkoski dirham",
+ "symbol": "MAD"
+ },
+ "MRO": {
+ "name": "mauretański ouguiya",
+ "symbol": "MRO"
+ },
+ "MUR": {
+ "name": "mauriciska rupija",
+ "symbol": "MUR"
+ },
+ "MXN": {
+ "name": "mexiski peso",
+ "symbol": "MX$"
+ },
+ "MDL": {
+ "name": "moldawiski leu",
+ "symbol": "MDL"
+ },
+ "MNT": {
+ "name": "mongolski tugrik",
+ "symbol": "MNT"
+ },
+ "MZN": {
+ "name": "mosambikski metical",
+ "symbol": "MZN"
+ },
+ "MMK": {
+ "name": "myanmarski kyat",
+ "symbol": "MMK"
+ },
+ "NAD": {
+ "name": "namibiski dolar",
+ "symbol": "NAD"
+ },
+ "NPR": {
+ "name": "nepalska rupija",
+ "symbol": "NPR"
+ },
+ "NGN": {
+ "name": "nigeriska naira",
+ "symbol": "NGN"
+ },
+ "NIO": {
+ "name": "nikaraguaska cordoba",
+ "symbol": "NIO"
+ },
+ "ANG": {
+ "name": "nižozemsko-antilski gulden",
+ "symbol": "ANG"
+ },
+ "NOK": {
+ "name": "norwegska krona",
+ "symbol": "NOK"
+ },
+ "NZD": {
+ "name": "nowoseelandski dolar",
+ "symbol": "NZ$"
+ },
+ "TWD": {
+ "name": "nowy taiwański dolar",
+ "symbol": "NT$"
+ },
+ "OMR": {
+ "name": "omański rial",
+ "symbol": "OMR"
+ },
+ "PKR": {
+ "name": "pakistańska rupija",
+ "symbol": "PKR"
+ },
+ "PAB": {
+ "name": "panamaski balboa",
+ "symbol": "PAB"
+ },
+ "PGK": {
+ "name": "papua-neuguinejska kina",
+ "symbol": "PGK"
+ },
+ "PYG": {
+ "name": "paraguayski guarani",
+ "symbol": "PYG"
+ },
+ "PEN": {
+ "name": "peruski nowy sol",
+ "symbol": "PEN"
+ },
+ "ZAR": {
+ "name": "pódpołdnjowoafriski rand",
+ "symbol": "ZAR"
+ },
+ "KRW": {
+ "name": "pódpołdnjowokorejski won",
+ "symbol": "â‚©"
+ },
+ "SSP": {
+ "name": "pódpołdnjowosudański punt",
+ "symbol": "SSP"
+ },
+ "KPW": {
+ "name": "pódpołnocnokorejski won",
+ "symbol": "KPW"
+ },
+ "XCD": {
+ "name": "pódzajtšnokaribiski dolar",
+ "symbol": "EC$"
+ },
+ "PLN": {
+ "name": "pólski złoty",
+ "symbol": "zł"
+ },
+ "RWF": {
+ "name": "ruandiski frank",
+ "symbol": "RWF"
+ },
+ "RON": {
+ "name": "rumuński leu",
+ "symbol": "RON"
+ },
+ "RUB": {
+ "name": "ruski rubl",
+ "symbol": "RUB"
+ },
+ "SBD": {
+ "name": "salomoński dolar",
+ "symbol": "SBD"
+ },
+ "ZMW": {
+ "name": "sambiska kwacha",
+ "symbol": "ZMW"
+ },
+ "WST": {
+ "name": "samoaska tala",
+ "symbol": "WST"
+ },
+ "STD": {
+ "name": "são-tomeska dobra",
+ "symbol": "STD"
+ },
+ "SAR": {
+ "name": "saudi-arabiski rial",
+ "symbol": "SAR"
+ },
+ "RSD": {
+ "name": "serbiski dinar",
+ "symbol": "RSD"
+ },
+ "SCR": {
+ "name": "seychelska rupija",
+ "symbol": "SCR"
+ },
+ "SLL": {
+ "name": "sierra-leoneski leone",
+ "symbol": "SLL"
+ },
+ "SGD": {
+ "name": "singapurski dolar",
+ "symbol": "SGD"
+ },
+ "SOS": {
+ "name": "somaliski Å¡iling",
+ "symbol": "SOS"
+ },
+ "LKR": {
+ "name": "sri-lankaska rupija",
+ "symbol": "LKR"
+ },
+ "SHP": {
+ "name": "St. Helena punt",
+ "symbol": "SHP"
+ },
+ "SDG": {
+ "name": "sudański punt",
+ "symbol": "SDG"
+ },
+ "SRD": {
+ "name": "surinamski dolar",
+ "symbol": "SRD"
+ },
+ "SZL": {
+ "name": "swasiski lilangeni",
+ "symbol": "SZL"
+ },
+ "SEK": {
+ "name": "Å¡wedska krona",
+ "symbol": "SEK"
+ },
+ "CHF": {
+ "name": "Å¡wicarski frank",
+ "symbol": "CHF"
+ },
+ "SYP": {
+ "name": "syriski punt",
+ "symbol": "SYP"
+ },
+ "TJS": {
+ "name": "tadźikiski somoni",
+ "symbol": "TJS"
+ },
+ "TZS": {
+ "name": "tansaniski Å¡iling",
+ "symbol": "TZS"
+ },
+ "THB": {
+ "name": "thaiski baht",
+ "symbol": "฿"
+ },
+ "TOP": {
+ "name": "tongaski paʻanga",
+ "symbol": "TOP"
+ },
+ "TTD": {
+ "name": "trinidad-tobagoski dolar",
+ "symbol": "TTD"
+ },
+ "TND": {
+ "name": "tuneziski dinar",
+ "symbol": "TND"
+ },
+ "TMT": {
+ "name": "turkmeniski manat",
+ "symbol": "TMT"
+ },
+ "TRY": {
+ "name": "turkojska lira",
+ "symbol": "TRY"
+ },
+ "UGX": {
+ "name": "ugandaski Å¡iling",
+ "symbol": "UGX"
+ },
+ "UAH": {
+ "name": "ukrainska griwna",
+ "symbol": "UAH"
+ },
+ "UYU": {
+ "name": "uruguayski peso",
+ "symbol": "UYU"
+ },
+ "UZS": {
+ "name": "usbekiski sum",
+ "symbol": "UZS"
+ },
+ "VUV": {
+ "name": "vanuatski vatu",
+ "symbol": "VUV"
+ },
+ "VEF": {
+ "name": "venezuelski bolívar",
+ "symbol": "VEF"
+ },
+ "VND": {
+ "name": "vietnamski dong",
+ "symbol": "â‚«"
+ },
+ "AED": {
+ "name": "ZAE dirham",
+ "symbol": "AED"
+ },
+ "ZWL": {
+ "name": "ZWL",
+ "symbol": "ZWL"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/currency/dyo.json b/library/intl/resources/currency/dyo.json
new file mode 100644
index 000000000..4b6fd80af
--- /dev/null
+++ b/library/intl/resources/currency/dyo.json
@@ -0,0 +1,634 @@
+{
+ "AED": {
+ "name": "AED",
+ "symbol": "AED"
+ },
+ "AFN": {
+ "name": "AFN",
+ "symbol": "AFN"
+ },
+ "ALL": {
+ "name": "ALL",
+ "symbol": "ALL"
+ },
+ "AMD": {
+ "name": "AMD",
+ "symbol": "AMD"
+ },
+ "ANG": {
+ "name": "ANG",
+ "symbol": "ANG"
+ },
+ "MGA": {
+ "name": "ariari yati Madagaskaar",
+ "symbol": "MGA"
+ },
+ "ARS": {
+ "name": "ARS",
+ "symbol": "ARS"
+ },
+ "AWG": {
+ "name": "AWG",
+ "symbol": "AWG"
+ },
+ "AZN": {
+ "name": "AZN",
+ "symbol": "AZN"
+ },
+ "BAM": {
+ "name": "BAM",
+ "symbol": "BAM"
+ },
+ "BBD": {
+ "name": "BBD",
+ "symbol": "BBD"
+ },
+ "BDT": {
+ "name": "BDT",
+ "symbol": "BDT"
+ },
+ "BGN": {
+ "name": "BGN",
+ "symbol": "BGN"
+ },
+ "ETB": {
+ "name": "birr yati Ecoopi",
+ "symbol": "ETB"
+ },
+ "BMD": {
+ "name": "BMD",
+ "symbol": "BMD"
+ },
+ "BND": {
+ "name": "BND",
+ "symbol": "BND"
+ },
+ "BOB": {
+ "name": "BOB",
+ "symbol": "BOB"
+ },
+ "BRL": {
+ "name": "BRL",
+ "symbol": "R$"
+ },
+ "BSD": {
+ "name": "BSD",
+ "symbol": "BSD"
+ },
+ "BTN": {
+ "name": "BTN",
+ "symbol": "BTN"
+ },
+ "BYR": {
+ "name": "BYR",
+ "symbol": "BYR"
+ },
+ "BZD": {
+ "name": "BZD",
+ "symbol": "BZD"
+ },
+ "CHF": {
+ "name": "CHF",
+ "symbol": "CHF"
+ },
+ "CLP": {
+ "name": "CLP",
+ "symbol": "CLP"
+ },
+ "COP": {
+ "name": "COP",
+ "symbol": "COP"
+ },
+ "CRC": {
+ "name": "CRC",
+ "symbol": "CRC"
+ },
+ "CUC": {
+ "name": "CUC",
+ "symbol": "CUC"
+ },
+ "CUP": {
+ "name": "CUP",
+ "symbol": "CUP"
+ },
+ "CZK": {
+ "name": "CZK",
+ "symbol": "CZK"
+ },
+ "GMD": {
+ "name": "dalasi yati Gambi",
+ "symbol": "GMD"
+ },
+ "DZD": {
+ "name": "dinaar yati Alseri",
+ "symbol": "DZD"
+ },
+ "BHD": {
+ "name": "dinaar yati Bahrayn",
+ "symbol": "BHD"
+ },
+ "LYD": {
+ "name": "dinaar yati Libia",
+ "symbol": "LYD"
+ },
+ "DKK": {
+ "name": "DKK",
+ "symbol": "DKK"
+ },
+ "CAD": {
+ "name": "dolaar yati Kanada",
+ "symbol": "CA$"
+ },
+ "LRD": {
+ "name": "dolaar yati Liberia",
+ "symbol": "LRD"
+ },
+ "AUD": {
+ "name": "dolaar yati Ostraalia",
+ "symbol": "A$"
+ },
+ "DOP": {
+ "name": "DOP",
+ "symbol": "DOP"
+ },
+ "CVE": {
+ "name": "eskuudo yati Kap Ver",
+ "symbol": "CVE"
+ },
+ "EUR": {
+ "name": "euro",
+ "symbol": "€"
+ },
+ "FJD": {
+ "name": "FJD",
+ "symbol": "FJD"
+ },
+ "FKP": {
+ "name": "FKP",
+ "symbol": "FKP"
+ },
+ "BIF": {
+ "name": "fraaŋ yati Burundi",
+ "symbol": "BIF"
+ },
+ "DJF": {
+ "name": "fraaŋ yati Jibuti",
+ "symbol": "DJF"
+ },
+ "KMF": {
+ "name": "fraaŋ yati Komor",
+ "symbol": "KMF"
+ },
+ "CDF": {
+ "name": "fraaŋ yati Kongo",
+ "symbol": "CDF"
+ },
+ "GBP": {
+ "name": "GBP",
+ "symbol": "£"
+ },
+ "GEL": {
+ "name": "GEL",
+ "symbol": "GEL"
+ },
+ "GHS": {
+ "name": "GHS",
+ "symbol": "GHS"
+ },
+ "GIP": {
+ "name": "GIP",
+ "symbol": "GIP"
+ },
+ "GNF": {
+ "name": "GNF",
+ "symbol": "GNF"
+ },
+ "GTQ": {
+ "name": "GTQ",
+ "symbol": "GTQ"
+ },
+ "GYD": {
+ "name": "GYD",
+ "symbol": "GYD"
+ },
+ "HKD": {
+ "name": "HKD",
+ "symbol": "HK$"
+ },
+ "HNL": {
+ "name": "HNL",
+ "symbol": "HNL"
+ },
+ "HRK": {
+ "name": "HRK",
+ "symbol": "HRK"
+ },
+ "HTG": {
+ "name": "HTG",
+ "symbol": "HTG"
+ },
+ "HUF": {
+ "name": "HUF",
+ "symbol": "HUF"
+ },
+ "IDR": {
+ "name": "IDR",
+ "symbol": "IDR"
+ },
+ "ILS": {
+ "name": "ILS",
+ "symbol": "₪"
+ },
+ "IQD": {
+ "name": "IQD",
+ "symbol": "IQD"
+ },
+ "IRR": {
+ "name": "IRR",
+ "symbol": "IRR"
+ },
+ "ISK": {
+ "name": "ISK",
+ "symbol": "ISK"
+ },
+ "JMD": {
+ "name": "JMD",
+ "symbol": "JMD"
+ },
+ "JOD": {
+ "name": "JOD",
+ "symbol": "JOD"
+ },
+ "KGS": {
+ "name": "KGS",
+ "symbol": "KGS"
+ },
+ "KHR": {
+ "name": "KHR",
+ "symbol": "KHR"
+ },
+ "KPW": {
+ "name": "KPW",
+ "symbol": "KPW"
+ },
+ "KRW": {
+ "name": "KRW",
+ "symbol": "â‚©"
+ },
+ "MWK": {
+ "name": "kwacha yati Malawi",
+ "symbol": "MWK"
+ },
+ "AOA": {
+ "name": "kwanza yati Angola",
+ "symbol": "AOA"
+ },
+ "KWD": {
+ "name": "KWD",
+ "symbol": "KWD"
+ },
+ "KYD": {
+ "name": "KYD",
+ "symbol": "KYD"
+ },
+ "KZT": {
+ "name": "KZT",
+ "symbol": "KZT"
+ },
+ "LAK": {
+ "name": "LAK",
+ "symbol": "LAK"
+ },
+ "LBP": {
+ "name": "LBP",
+ "symbol": "LBP"
+ },
+ "EGP": {
+ "name": "liiverey yati Esípt",
+ "symbol": "EGP"
+ },
+ "LKR": {
+ "name": "LKR",
+ "symbol": "LKR"
+ },
+ "LSL": {
+ "name": "LSL",
+ "symbol": "LSL"
+ },
+ "LTL": {
+ "name": "LTL",
+ "symbol": "LTL"
+ },
+ "MAD": {
+ "name": "MAD",
+ "symbol": "MAD"
+ },
+ "MDL": {
+ "name": "MDL",
+ "symbol": "MDL"
+ },
+ "MKD": {
+ "name": "MKD",
+ "symbol": "MKD"
+ },
+ "MMK": {
+ "name": "MMK",
+ "symbol": "MMK"
+ },
+ "MNT": {
+ "name": "MNT",
+ "symbol": "MNT"
+ },
+ "MOP": {
+ "name": "MOP",
+ "symbol": "MOP"
+ },
+ "MUR": {
+ "name": "MUR",
+ "symbol": "MUR"
+ },
+ "MVR": {
+ "name": "MVR",
+ "symbol": "MVR"
+ },
+ "MXN": {
+ "name": "MXN",
+ "symbol": "MX$"
+ },
+ "MYR": {
+ "name": "MYR",
+ "symbol": "MYR"
+ },
+ "MZN": {
+ "name": "MZN",
+ "symbol": "MZN"
+ },
+ "NAD": {
+ "name": "NAD",
+ "symbol": "NAD"
+ },
+ "ERN": {
+ "name": "nafka yati Eritree",
+ "symbol": "ERN"
+ },
+ "NGN": {
+ "name": "NGN",
+ "symbol": "NGN"
+ },
+ "NIO": {
+ "name": "NIO",
+ "symbol": "NIO"
+ },
+ "NOK": {
+ "name": "NOK",
+ "symbol": "NOK"
+ },
+ "NPR": {
+ "name": "NPR",
+ "symbol": "NPR"
+ },
+ "NZD": {
+ "name": "NZD",
+ "symbol": "NZ$"
+ },
+ "OMR": {
+ "name": "OMR",
+ "symbol": "OMR"
+ },
+ "PAB": {
+ "name": "PAB",
+ "symbol": "PAB"
+ },
+ "PEN": {
+ "name": "PEN",
+ "symbol": "PEN"
+ },
+ "PGK": {
+ "name": "PGK",
+ "symbol": "PGK"
+ },
+ "PHP": {
+ "name": "PHP",
+ "symbol": "PHP"
+ },
+ "PKR": {
+ "name": "PKR",
+ "symbol": "PKR"
+ },
+ "PLN": {
+ "name": "PLN",
+ "symbol": "PLN"
+ },
+ "BWP": {
+ "name": "pula yati Boswana",
+ "symbol": "BWP"
+ },
+ "PYG": {
+ "name": "PYG",
+ "symbol": "PYG"
+ },
+ "QAR": {
+ "name": "QAR",
+ "symbol": "QAR"
+ },
+ "RON": {
+ "name": "RON",
+ "symbol": "RON"
+ },
+ "RSD": {
+ "name": "RSD",
+ "symbol": "RSD"
+ },
+ "RUB": {
+ "name": "RUB",
+ "symbol": "RUB"
+ },
+ "INR": {
+ "name": "rupii yati End",
+ "symbol": "₹"
+ },
+ "RWF": {
+ "name": "RWF",
+ "symbol": "RWF"
+ },
+ "SAR": {
+ "name": "SAR",
+ "symbol": "SAR"
+ },
+ "SBD": {
+ "name": "SBD",
+ "symbol": "SBD"
+ },
+ "SCR": {
+ "name": "SCR",
+ "symbol": "SCR"
+ },
+ "SDG": {
+ "name": "SDG",
+ "symbol": "SDG"
+ },
+ "XAF": {
+ "name": "seefa BEAC",
+ "symbol": "FCFA"
+ },
+ "XOF": {
+ "name": "seefa yati BCEAO",
+ "symbol": "CFA"
+ },
+ "SEK": {
+ "name": "SEK",
+ "symbol": "SEK"
+ },
+ "SGD": {
+ "name": "SGD",
+ "symbol": "SGD"
+ },
+ "SHP": {
+ "name": "SHP",
+ "symbol": "SHP"
+ },
+ "KES": {
+ "name": "silliŋ yati Keniya",
+ "symbol": "KES"
+ },
+ "SLL": {
+ "name": "SLL",
+ "symbol": "SLL"
+ },
+ "SOS": {
+ "name": "SOS",
+ "symbol": "SOS"
+ },
+ "SRD": {
+ "name": "SRD",
+ "symbol": "SRD"
+ },
+ "SSP": {
+ "name": "SSP",
+ "symbol": "SSP"
+ },
+ "STD": {
+ "name": "STD",
+ "symbol": "STD"
+ },
+ "SVC": {
+ "name": "SVC",
+ "symbol": "SVC"
+ },
+ "SYP": {
+ "name": "SYP",
+ "symbol": "SYP"
+ },
+ "SZL": {
+ "name": "SZL",
+ "symbol": "SZL"
+ },
+ "THB": {
+ "name": "THB",
+ "symbol": "THB"
+ },
+ "TJS": {
+ "name": "TJS",
+ "symbol": "TJS"
+ },
+ "TMT": {
+ "name": "TMT",
+ "symbol": "TMT"
+ },
+ "TND": {
+ "name": "TND",
+ "symbol": "TND"
+ },
+ "TOP": {
+ "name": "TOP",
+ "symbol": "TOP"
+ },
+ "TRY": {
+ "name": "TRY",
+ "symbol": "TRY"
+ },
+ "TTD": {
+ "name": "TTD",
+ "symbol": "TTD"
+ },
+ "TWD": {
+ "name": "TWD",
+ "symbol": "NT$"
+ },
+ "TZS": {
+ "name": "TZS",
+ "symbol": "TZS"
+ },
+ "UAH": {
+ "name": "UAH",
+ "symbol": "UAH"
+ },
+ "MRO": {
+ "name": "ugiiya yati Mooritanii",
+ "symbol": "MRO"
+ },
+ "UGX": {
+ "name": "UGX",
+ "symbol": "UGX"
+ },
+ "USD": {
+ "name": "USD",
+ "symbol": "US$"
+ },
+ "UYU": {
+ "name": "UYU",
+ "symbol": "UYU"
+ },
+ "UZS": {
+ "name": "UZS",
+ "symbol": "UZS"
+ },
+ "VEF": {
+ "name": "VEF",
+ "symbol": "VEF"
+ },
+ "VND": {
+ "name": "VND",
+ "symbol": "â‚«"
+ },
+ "VUV": {
+ "name": "VUV",
+ "symbol": "VUV"
+ },
+ "WST": {
+ "name": "WST",
+ "symbol": "WST"
+ },
+ "XCD": {
+ "name": "XCD",
+ "symbol": "EC$"
+ },
+ "XPF": {
+ "name": "XPF",
+ "symbol": "CFPF"
+ },
+ "JPY": {
+ "name": "yen yati Sapoŋ",
+ "symbol": "JPÂ¥"
+ },
+ "YER": {
+ "name": "YER",
+ "symbol": "YER"
+ },
+ "CNY": {
+ "name": "yuan yati Siin",
+ "symbol": "CNÂ¥"
+ },
+ "ZAR": {
+ "name": "ZAR",
+ "symbol": "ZAR"
+ },
+ "ZMW": {
+ "name": "ZMW",
+ "symbol": "ZMW"
+ },
+ "ZWL": {
+ "name": "ZWL",
+ "symbol": "ZWL"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/currency/dz.json b/library/intl/resources/currency/dz.json
new file mode 100644
index 000000000..00a136c7c
--- /dev/null
+++ b/library/intl/resources/currency/dz.json
@@ -0,0 +1,634 @@
+{
+ "ALL": {
+ "name": "ALL",
+ "symbol": "ALL"
+ },
+ "AMD": {
+ "name": "AMD",
+ "symbol": "AMD"
+ },
+ "ANG": {
+ "name": "ANG",
+ "symbol": "ANG"
+ },
+ "AOA": {
+ "name": "AOA",
+ "symbol": "AOA"
+ },
+ "ARS": {
+ "name": "ARS",
+ "symbol": "ARS"
+ },
+ "AWG": {
+ "name": "AWG",
+ "symbol": "AWG"
+ },
+ "AZN": {
+ "name": "AZN",
+ "symbol": "AZN"
+ },
+ "BAM": {
+ "name": "BAM",
+ "symbol": "BAM"
+ },
+ "BBD": {
+ "name": "BBD",
+ "symbol": "BBD"
+ },
+ "BGN": {
+ "name": "BGN",
+ "symbol": "BGN"
+ },
+ "BHD": {
+ "name": "BHD",
+ "symbol": "BHD"
+ },
+ "BIF": {
+ "name": "BIF",
+ "symbol": "BIF"
+ },
+ "BND": {
+ "name": "BND",
+ "symbol": "BND"
+ },
+ "BOB": {
+ "name": "BOB",
+ "symbol": "BOB"
+ },
+ "BSD": {
+ "name": "BSD",
+ "symbol": "BSD"
+ },
+ "BWP": {
+ "name": "BWP",
+ "symbol": "BWP"
+ },
+ "BYR": {
+ "name": "BYR",
+ "symbol": "BYR"
+ },
+ "BZD": {
+ "name": "BZD",
+ "symbol": "BZD"
+ },
+ "CDF": {
+ "name": "CDF",
+ "symbol": "CDF"
+ },
+ "CRC": {
+ "name": "CRC",
+ "symbol": "CRC"
+ },
+ "CUC": {
+ "name": "CUC",
+ "symbol": "CUC"
+ },
+ "CVE": {
+ "name": "CVE",
+ "symbol": "CVE"
+ },
+ "CZK": {
+ "name": "CZK",
+ "symbol": "CZK"
+ },
+ "DJF": {
+ "name": "DJF",
+ "symbol": "DJF"
+ },
+ "DOP": {
+ "name": "DOP",
+ "symbol": "DOP"
+ },
+ "ERN": {
+ "name": "ERN",
+ "symbol": "ERN"
+ },
+ "ETB": {
+ "name": "ETB",
+ "symbol": "ETB"
+ },
+ "FJD": {
+ "name": "FJD",
+ "symbol": "FJD"
+ },
+ "FKP": {
+ "name": "FKP",
+ "symbol": "FKP"
+ },
+ "GEL": {
+ "name": "GEL",
+ "symbol": "GEL"
+ },
+ "GHS": {
+ "name": "GHS",
+ "symbol": "GHS"
+ },
+ "GIP": {
+ "name": "GIP",
+ "symbol": "GIP"
+ },
+ "GMD": {
+ "name": "GMD",
+ "symbol": "GMD"
+ },
+ "GNF": {
+ "name": "GNF",
+ "symbol": "GNF"
+ },
+ "GTQ": {
+ "name": "GTQ",
+ "symbol": "GTQ"
+ },
+ "GYD": {
+ "name": "GYD",
+ "symbol": "GYD"
+ },
+ "HNL": {
+ "name": "HNL",
+ "symbol": "HNL"
+ },
+ "HRK": {
+ "name": "HRK",
+ "symbol": "HRK"
+ },
+ "HTG": {
+ "name": "HTG",
+ "symbol": "HTG"
+ },
+ "HUF": {
+ "name": "HUF",
+ "symbol": "HUF"
+ },
+ "KGS": {
+ "name": "KGS",
+ "symbol": "KGS"
+ },
+ "KMF": {
+ "name": "KMF",
+ "symbol": "KMF"
+ },
+ "KYD": {
+ "name": "KYD",
+ "symbol": "KYD"
+ },
+ "LSL": {
+ "name": "LSL",
+ "symbol": "LSL"
+ },
+ "LTL": {
+ "name": "LTL",
+ "symbol": "LTL"
+ },
+ "MDL": {
+ "name": "MDL",
+ "symbol": "MDL"
+ },
+ "MGA": {
+ "name": "MGA",
+ "symbol": "MGA"
+ },
+ "MKD": {
+ "name": "MKD",
+ "symbol": "MKD"
+ },
+ "MOP": {
+ "name": "MOP",
+ "symbol": "MOP"
+ },
+ "MRO": {
+ "name": "MRO",
+ "symbol": "MRO"
+ },
+ "MUR": {
+ "name": "MUR",
+ "symbol": "MUR"
+ },
+ "MWK": {
+ "name": "MWK",
+ "symbol": "MWK"
+ },
+ "MZN": {
+ "name": "MZN",
+ "symbol": "MZN"
+ },
+ "NAD": {
+ "name": "NAD",
+ "symbol": "NAD"
+ },
+ "NGN": {
+ "name": "NGN",
+ "symbol": "NGN"
+ },
+ "NIO": {
+ "name": "NIO",
+ "symbol": "NIO"
+ },
+ "PGK": {
+ "name": "PGK",
+ "symbol": "PGK"
+ },
+ "PYG": {
+ "name": "PYG",
+ "symbol": "PYG"
+ },
+ "RON": {
+ "name": "RON",
+ "symbol": "RON"
+ },
+ "RSD": {
+ "name": "RSD",
+ "symbol": "RSD"
+ },
+ "RWF": {
+ "name": "RWF",
+ "symbol": "RWF"
+ },
+ "SBD": {
+ "name": "SBD",
+ "symbol": "SBD"
+ },
+ "SDG": {
+ "name": "SDG",
+ "symbol": "SDG"
+ },
+ "SHP": {
+ "name": "SHP",
+ "symbol": "SHP"
+ },
+ "SLL": {
+ "name": "SLL",
+ "symbol": "SLL"
+ },
+ "SOS": {
+ "name": "SOS",
+ "symbol": "SOS"
+ },
+ "SRD": {
+ "name": "SRD",
+ "symbol": "SRD"
+ },
+ "SSP": {
+ "name": "SSP",
+ "symbol": "SSP"
+ },
+ "STD": {
+ "name": "STD",
+ "symbol": "STD"
+ },
+ "SVC": {
+ "name": "SVC",
+ "symbol": "SVC"
+ },
+ "SZL": {
+ "name": "SZL",
+ "symbol": "SZL"
+ },
+ "TMT": {
+ "name": "TMT",
+ "symbol": "TMT"
+ },
+ "TND": {
+ "name": "TND",
+ "symbol": "TND"
+ },
+ "TOP": {
+ "name": "TOP",
+ "symbol": "TOP"
+ },
+ "TTD": {
+ "name": "TTD",
+ "symbol": "TTD"
+ },
+ "UAH": {
+ "name": "UAH",
+ "symbol": "UAH"
+ },
+ "VUV": {
+ "name": "VUV",
+ "symbol": "VUV"
+ },
+ "WST": {
+ "name": "WST",
+ "symbol": "WST"
+ },
+ "XAF": {
+ "name": "XAF",
+ "symbol": "XAF"
+ },
+ "XCD": {
+ "name": "XCD",
+ "symbol": "EC$"
+ },
+ "XOF": {
+ "name": "XOF",
+ "symbol": "CFA"
+ },
+ "XPF": {
+ "name": "XPF",
+ "symbol": "CFPF"
+ },
+ "YER": {
+ "name": "YER",
+ "symbol": "YER"
+ },
+ "ZMW": {
+ "name": "ZMW",
+ "symbol": "ZMW"
+ },
+ "ZWL": {
+ "name": "ZWL",
+ "symbol": "ZWL"
+ },
+ "QAR": {
+ "name": "ཀ་ཊར་གྱི་དངུལ་ རི་ཨཱལ",
+ "symbol": "QAR"
+ },
+ "KZT": {
+ "name": "ཀ་ཛགས་à½à½±à½“་གྱི་དངུལ་ à½à½ºà½„་གེ",
+ "symbol": "KZT"
+ },
+ "CUP": {
+ "name": "ཀིའུ་བྷ་གི་དངུལ་ པེ་སོ",
+ "symbol": "CUP"
+ },
+ "KWD": {
+ "name": "ཀུ་à½à½ºà½Šà¼‹à½‚ི་དངུལ་ ཌི་ན",
+ "symbol": "KWD"
+ },
+ "CAD": {
+ "name": "ཀེ་ན་ཌ་གི་དངུལ་ ཌོ་ལར",
+ "symbol": "CA$"
+ },
+ "KES": {
+ "name": "ཀེན་ཡ་གི་དངུལ་ ཤི་ལིང",
+ "symbol": "KES"
+ },
+ "KHR": {
+ "name": "ཀེམ་བྷོ་ཌི་ཡ་གི་དངུལ་ རི་ཨཱལ",
+ "symbol": "KHR"
+ },
+ "COP": {
+ "name": "ཀོ་ལོམ་བྷི་ཡ་གི་དངུལ་ པེ་སོ",
+ "symbol": "COP"
+ },
+ "CLP": {
+ "name": "ཅི་ལི་གི་དངུལ་ པེ་སོ",
+ "symbol": "CLP"
+ },
+ "JPY": {
+ "name": "ཇཱ་པཱན་གྱི་དངུལ་ ཡེན",
+ "symbol": "JPÂ¥"
+ },
+ "JMD": {
+ "name": "ཇཱ་མཻ་ཀ་གི་དངུལ་ ཌོ་ལར",
+ "symbol": "JMD"
+ },
+ "JOD": {
+ "name": "ཇོར་ཌན་གྱི་དངུལ་ ཌི་ན",
+ "symbol": "JOD"
+ },
+ "TZS": {
+ "name": "ཊཱན་ཛཱ་ནི་ཡ་གི་དངུལ་ ཤི་ལིང",
+ "symbol": "TZS"
+ },
+ "TWD": {
+ "name": "ཊཱའི་à½à½±à½“་གི་དངུལ ཌོ་ལར",
+ "symbol": "NT$"
+ },
+ "TRY": {
+ "name": "ཊཱར་ཀི་གི་དངུལ་ ལི་ར",
+ "symbol": "TRY"
+ },
+ "DKK": {
+ "name": "ཌེན་མཱཀ་གི་དངུལ་ ཀྲོན",
+ "symbol": "DKK"
+ },
+ "TJS": {
+ "name": "à½à¼‹à½‡à½²à¼‹à½€à½²à½¦à¼‹à½à½±à½“་གྱི་དངུལ་ སོ་མོ་ནི",
+ "symbol": "TJS"
+ },
+ "THB": {
+ "name": "à½à½±à½ à½²à¼‹à½£à½ºà½“ཌ་གི་དངུལ་ བཱà½",
+ "symbol": "TH฿"
+ },
+ "BTN": {
+ "name": "དངུལ་ཀྲམ",
+ "symbol": "Nu."
+ },
+ "NZD": {
+ "name": "ནིའུ་ཛི་ལེནཌ་གི་དངུལ་ ཌོ་ལར",
+ "symbol": "NZ$"
+ },
+ "NOK": {
+ "name": "ནོར་à½à½ºà¼‹à½‚ི་དངུལ་ ཀྲོ་ན",
+ "symbol": "NOK"
+ },
+ "KPW": {
+ "name": "ནོརà½à¼‹ ཀོ་རི་ཡ་གི་དངུལ་ à½à½¼à½“",
+ "symbol": "KPW"
+ },
+ "PKR": {
+ "name": "པ་ཀིས་à½à½±à½“་གྱི་དངུལ་ རུ་པི",
+ "symbol": "PKR"
+ },
+ "PAB": {
+ "name": "པ་ན་མ་གི་དངུལ་ བཱལ་བོ་à½",
+ "symbol": "PAB"
+ },
+ "PEN": {
+ "name": "པ་རུ་གི་དངུལ་ ནུ་བོ་ སཱོལ",
+ "symbol": "PEN"
+ },
+ "PLN": {
+ "name": "པོ་ལེནཌ་ཀྱི་དངུལ ཛ྄ལོ་ཊི",
+ "symbol": "PLN"
+ },
+ "PHP": {
+ "name": "ཕི་ལི་པིནས་གྱི་དངུལ་ པེ་སོ",
+ "symbol": "PHP"
+ },
+ "BMD": {
+ "name": "བར་མུ་ཌ་གི་དངུལ་ ཌོ་ལར",
+ "symbol": "BMD"
+ },
+ "BRL": {
+ "name": "བྲ་ཛིལ་གྱི་དངུལ་ རེ་ཡལ",
+ "symbol": "R$"
+ },
+ "GBP": {
+ "name": "བྲི་ཊིཤ་ པ་འུནཌ་ ཨིས་ཊར་ལིང",
+ "symbol": "£"
+ },
+ "NPR": {
+ "name": "བལ་པོའི་དངུལ་ རུ་པི",
+ "symbol": "NPR"
+ },
+ "BDT": {
+ "name": "བྷང་ལ་དེཤ་གི་དངུལ་ à½à¼‹à½€",
+ "symbol": "BDT"
+ },
+ "VEF": {
+ "name": "བེ་ནི་ཛུ་à½à½ºà¼‹à½£à¼‹à½‚ི་དངུལ་ བོ་ལི་བར",
+ "symbol": "VEF"
+ },
+ "VND": {
+ "name": "བེཊ་ནཱམ་གྱི་དངུལ་ ཌོང",
+ "symbol": "â‚«"
+ },
+ "MYR": {
+ "name": "མ་ལེ་ཤི་ཡ་གི་དངུལ་ རིང་གིཊ",
+ "symbol": "MYR"
+ },
+ "MVR": {
+ "name": "མཱལ་དིབས་ཀྱི་དངུལ་ རུ་ཕི་ཡ",
+ "symbol": "MVR"
+ },
+ "MMK": {
+ "name": "མི་ཡཱན་མར་གྱི་དངུལ་ ཅཱà½",
+ "symbol": "MMK"
+ },
+ "MXN": {
+ "name": "མེཀ་སི་ཀོ་གི་དངུལ་ པེ་སོ",
+ "symbol": "MX$"
+ },
+ "MAD": {
+ "name": "མོ་རོ་ཀོ་གི་དངུལ་ ཌིར་ཧཱམ",
+ "symbol": "MAD"
+ },
+ "UGX": {
+ "name": "ཡུ་གྷེན་ཌ་གི་དངུལ་ ཤི་ལིང",
+ "symbol": "UGX"
+ },
+ "AED": {
+ "name": "ཡུ་ནཱའི་ཊེཌ་ ཨ་རབ་ ཨེ་མེ་རེཊས་ཀྱི་དངུལ་ ཌིར་ཧཱམ",
+ "symbol": "AED"
+ },
+ "UYU": {
+ "name": "ཡུ་རུ་གུ་à½à½ à½²à¼‹à½‚ི་དངུལ་ པེ་སོ",
+ "symbol": "UYU"
+ },
+ "EUR": {
+ "name": "ཡུ་རོ༌དངུལ་",
+ "symbol": "€"
+ },
+ "USD": {
+ "name": "ཡུ་ཨེས་ ཌོ་ལར",
+ "symbol": "US$"
+ },
+ "INR": {
+ "name": "རྒྱ་གར་གྱི་དངུལ་ རུ་པི",
+ "symbol": "₹"
+ },
+ "CNY": {
+ "name": "རྒྱ་ནག་གི་དངུལ་ ཡུ་à½à½±à½“",
+ "symbol": "CNÂ¥"
+ },
+ "LAK": {
+ "name": "ལཱ་à½à½¼à½¦à¼‹à½€à¾±à½²à¼‹à½‘ངུལ་ ཀིཔ",
+ "symbol": "LAK"
+ },
+ "LRD": {
+ "name": "ལཱའི་བེ་རི་ཡ་གི་དངུལ་ ཌོ་ལར",
+ "symbol": "LRD"
+ },
+ "LYD": {
+ "name": "ལི་བི་ཡ་གི་དངུལ་ ཌི་ན",
+ "symbol": "LYD"
+ },
+ "LBP": {
+ "name": "ལེ་བ་ནོན་གྱི་དངུལ་ པ་འུནཌ",
+ "symbol": "LBP"
+ },
+ "LKR": {
+ "name": "ཤྲི་ ལང་ཀ་གི་དངུལ་ རུ་པི",
+ "symbol": "LKR"
+ },
+ "SAR": {
+ "name": "སཱà½à¼‹à½‘ིའི་དངུལ་ རི་ཡཱལ",
+ "symbol": "SAR"
+ },
+ "KRW": {
+ "name": "སཱའུà½à¼‹ ཀོ་རི་ཡ་གི་དངུལ་ à½à½¼à½“",
+ "symbol": "KRâ‚©"
+ },
+ "ZAR": {
+ "name": "སཱའུà½à¼‹ ཨཕ་རི་ཀ་གི་དངུལ་ རཱནད",
+ "symbol": "ZAR"
+ },
+ "SYP": {
+ "name": "སི་རི་ཡ་གི་དངུལ་ པ་འུནཌ",
+ "symbol": "SYP"
+ },
+ "SGD": {
+ "name": "སིང་ག་པོར་གྱི་དངུལ་ ཌོ་ལར",
+ "symbol": "SGD"
+ },
+ "CHF": {
+ "name": "སུ་ཡིས་ཀྱི་དངུལ་ ཕྲངཀ",
+ "symbol": "CHF"
+ },
+ "SEK": {
+ "name": "སུའི་ཌེན་གྱི་དངུལ་ ཀྲོ་ན",
+ "symbol": "SEK"
+ },
+ "SCR": {
+ "name": "སེ་ཤཱལས་ཀྱི་དངུལ་ རུ་པི",
+ "symbol": "SCR"
+ },
+ "MNT": {
+ "name": "སོག་པོའི་དངུལ་ à½à½´à¼‹à½‚ྲིཀ",
+ "symbol": "MNT"
+ },
+ "HKD": {
+ "name": "ཧོང་ཀོང་གི་དངུལ་ ཌོ་ལར",
+ "symbol": "HK$"
+ },
+ "AFN": {
+ "name": "ཨཕ་གཱན་གྱི་དངུལ་ ཨཕ་ག་ནི",
+ "symbol": "AFN"
+ },
+ "ISK": {
+ "name": "ཨཱཡིས་ལེནཌ་གི་དངུལ་ ཀྲོ་ན",
+ "symbol": "ISK"
+ },
+ "DZD": {
+ "name": "ཨཱལ་ཇི་རི་ཡ་གི་དངུལ་ ཌའི་ནར",
+ "symbol": "DZD"
+ },
+ "AUD": {
+ "name": "ཨཱོས་ཊྲེ་ལི་ཡ་གི་དངུལ་ ཌོ་ལར",
+ "symbol": "AU$"
+ },
+ "EGP": {
+ "name": "ཨི་ཇིབཊ་གི་དངུལ་ པ་འུནཌ",
+ "symbol": "EGP"
+ },
+ "IQD": {
+ "name": "ཨི་རཱཀ་གི་དངུལ་ ཌི་ན",
+ "symbol": "IQD"
+ },
+ "IRR": {
+ "name": "ཨི་རཱན་གྱི་དངུལ་ རི་ཨཱལ",
+ "symbol": "IRR"
+ },
+ "IDR": {
+ "name": "ཨིན་ཌོ་ནེ་ཤི་ཡ་གི་དངུལ་ རུ་པི་ཡ",
+ "symbol": "IDR"
+ },
+ "ILS": {
+ "name": "ཨིས་རེལ་གྱི་དངུལ་གསརཔ་ ཤེ་ཀེལ",
+ "symbol": "ILS"
+ },
+ "RUB": {
+ "name": "ཨུ་རུ་སུ་གི་དངུལ་ རུ་བཱལ",
+ "symbol": "RUB"
+ },
+ "UZS": {
+ "name": "ཨུས་བེ་ཀིས་à½à½±à½“་གྱི་དངུལ་ སོམ",
+ "symbol": "UZS"
+ },
+ "OMR": {
+ "name": "ཨོ་མཱན་གྱི་དངུལ་ རི་ཨཱལ",
+ "symbol": "OMR"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/currency/ebu.json b/library/intl/resources/currency/ebu.json
new file mode 100644
index 000000000..017f934f0
--- /dev/null
+++ b/library/intl/resources/currency/ebu.json
@@ -0,0 +1,634 @@
+{
+ "AFN": {
+ "name": "AFN",
+ "symbol": "AFN"
+ },
+ "ALL": {
+ "name": "ALL",
+ "symbol": "ALL"
+ },
+ "AMD": {
+ "name": "AMD",
+ "symbol": "AMD"
+ },
+ "ANG": {
+ "name": "ANG",
+ "symbol": "ANG"
+ },
+ "MGA": {
+ "name": "Ariary ya Bukini",
+ "symbol": "MGA"
+ },
+ "ARS": {
+ "name": "ARS",
+ "symbol": "ARS"
+ },
+ "AWG": {
+ "name": "AWG",
+ "symbol": "AWG"
+ },
+ "AZN": {
+ "name": "AZN",
+ "symbol": "AZN"
+ },
+ "BAM": {
+ "name": "BAM",
+ "symbol": "BAM"
+ },
+ "BBD": {
+ "name": "BBD",
+ "symbol": "BBD"
+ },
+ "BDT": {
+ "name": "BDT",
+ "symbol": "BDT"
+ },
+ "BGN": {
+ "name": "BGN",
+ "symbol": "BGN"
+ },
+ "ETB": {
+ "name": "Bir ya Uhabeshi",
+ "symbol": "ETB"
+ },
+ "BMD": {
+ "name": "BMD",
+ "symbol": "BMD"
+ },
+ "BND": {
+ "name": "BND",
+ "symbol": "BND"
+ },
+ "BOB": {
+ "name": "BOB",
+ "symbol": "BOB"
+ },
+ "BRL": {
+ "name": "BRL",
+ "symbol": "R$"
+ },
+ "BSD": {
+ "name": "BSD",
+ "symbol": "BSD"
+ },
+ "BTN": {
+ "name": "BTN",
+ "symbol": "BTN"
+ },
+ "BYR": {
+ "name": "BYR",
+ "symbol": "BYR"
+ },
+ "BZD": {
+ "name": "BZD",
+ "symbol": "BZD"
+ },
+ "CLP": {
+ "name": "CLP",
+ "symbol": "CLP"
+ },
+ "COP": {
+ "name": "COP",
+ "symbol": "COP"
+ },
+ "CRC": {
+ "name": "CRC",
+ "symbol": "CRC"
+ },
+ "CUC": {
+ "name": "CUC",
+ "symbol": "CUC"
+ },
+ "CUP": {
+ "name": "CUP",
+ "symbol": "CUP"
+ },
+ "CZK": {
+ "name": "CZK",
+ "symbol": "CZK"
+ },
+ "GMD": {
+ "name": "Dalasi ya Gambia",
+ "symbol": "GMD"
+ },
+ "DZD": {
+ "name": "Dinari ya Aljeria",
+ "symbol": "DZD"
+ },
+ "BHD": {
+ "name": "Dinari ya Bahareni",
+ "symbol": "BHD"
+ },
+ "LYD": {
+ "name": "Dinari ya Libya",
+ "symbol": "LYD"
+ },
+ "TND": {
+ "name": "Dinari ya Tunisia",
+ "symbol": "TND"
+ },
+ "AED": {
+ "name": "Dirham ya Falme za Kiarabu",
+ "symbol": "AED"
+ },
+ "MAD": {
+ "name": "Dirham ya Moroko",
+ "symbol": "MAD"
+ },
+ "DKK": {
+ "name": "DKK",
+ "symbol": "DKK"
+ },
+ "STD": {
+ "name": "Dobra ya Sao Tome na Principe",
+ "symbol": "STD"
+ },
+ "CAD": {
+ "name": "Dola ya Kanada",
+ "symbol": "CA$"
+ },
+ "LRD": {
+ "name": "Dola ya Liberia",
+ "symbol": "LRD"
+ },
+ "USD": {
+ "name": "Dola ya Marekani",
+ "symbol": "US$"
+ },
+ "NAD": {
+ "name": "Dola ya Namibia",
+ "symbol": "NAD"
+ },
+ "DOP": {
+ "name": "DOP",
+ "symbol": "DOP"
+ },
+ "AUD": {
+ "name": "Dora ya Australia",
+ "symbol": "A$"
+ },
+ "CVE": {
+ "name": "Eskudo ya Kepuvede",
+ "symbol": "CVE"
+ },
+ "XOF": {
+ "name": "Faranga CFA BCEAO",
+ "symbol": "CFA"
+ },
+ "XAF": {
+ "name": "Faranga CFA BEAC",
+ "symbol": "FCFA"
+ },
+ "BIF": {
+ "name": "Faranga ya Burundi",
+ "symbol": "BIF"
+ },
+ "DJF": {
+ "name": "Faranga ya Jibuti",
+ "symbol": "DJF"
+ },
+ "KMF": {
+ "name": "Faranga ya Komoro",
+ "symbol": "KMF"
+ },
+ "CDF": {
+ "name": "Faranga ya Kongo",
+ "symbol": "CDF"
+ },
+ "RWF": {
+ "name": "Faranga ya Rwanda",
+ "symbol": "RWF"
+ },
+ "CHF": {
+ "name": "Faranga ya Uswisi",
+ "symbol": "CHF"
+ },
+ "FJD": {
+ "name": "FJD",
+ "symbol": "FJD"
+ },
+ "FKP": {
+ "name": "FKP",
+ "symbol": "FKP"
+ },
+ "GEL": {
+ "name": "GEL",
+ "symbol": "GEL"
+ },
+ "GHS": {
+ "name": "GHS",
+ "symbol": "GHS"
+ },
+ "GIP": {
+ "name": "GIP",
+ "symbol": "GIP"
+ },
+ "GNF": {
+ "name": "GNF",
+ "symbol": "GNF"
+ },
+ "GTQ": {
+ "name": "GTQ",
+ "symbol": "GTQ"
+ },
+ "GYD": {
+ "name": "GYD",
+ "symbol": "GYD"
+ },
+ "HKD": {
+ "name": "HKD",
+ "symbol": "HK$"
+ },
+ "HNL": {
+ "name": "HNL",
+ "symbol": "HNL"
+ },
+ "HRK": {
+ "name": "HRK",
+ "symbol": "HRK"
+ },
+ "HTG": {
+ "name": "HTG",
+ "symbol": "HTG"
+ },
+ "HUF": {
+ "name": "HUF",
+ "symbol": "HUF"
+ },
+ "IDR": {
+ "name": "IDR",
+ "symbol": "IDR"
+ },
+ "ILS": {
+ "name": "ILS",
+ "symbol": "₪"
+ },
+ "IQD": {
+ "name": "IQD",
+ "symbol": "IQD"
+ },
+ "IRR": {
+ "name": "IRR",
+ "symbol": "IRR"
+ },
+ "ISK": {
+ "name": "ISK",
+ "symbol": "ISK"
+ },
+ "JMD": {
+ "name": "JMD",
+ "symbol": "JMD"
+ },
+ "JOD": {
+ "name": "JOD",
+ "symbol": "JOD"
+ },
+ "KGS": {
+ "name": "KGS",
+ "symbol": "KGS"
+ },
+ "KHR": {
+ "name": "KHR",
+ "symbol": "KHR"
+ },
+ "KPW": {
+ "name": "KPW",
+ "symbol": "KPW"
+ },
+ "KRW": {
+ "name": "KRW",
+ "symbol": "â‚©"
+ },
+ "MWK": {
+ "name": "Kwacha ya Malawi",
+ "symbol": "MWK"
+ },
+ "ZMW": {
+ "name": "Kwacha ya Zambia",
+ "symbol": "ZMW"
+ },
+ "AOA": {
+ "name": "Kwanza ya Angola",
+ "symbol": "AOA"
+ },
+ "KWD": {
+ "name": "KWD",
+ "symbol": "KWD"
+ },
+ "KYD": {
+ "name": "KYD",
+ "symbol": "KYD"
+ },
+ "KZT": {
+ "name": "KZT",
+ "symbol": "KZT"
+ },
+ "LAK": {
+ "name": "LAK",
+ "symbol": "LAK"
+ },
+ "LBP": {
+ "name": "LBP",
+ "symbol": "LBP"
+ },
+ "SLL": {
+ "name": "Leoni",
+ "symbol": "SLL"
+ },
+ "SZL": {
+ "name": "Lilangeni",
+ "symbol": "SZL"
+ },
+ "LKR": {
+ "name": "LKR",
+ "symbol": "LKR"
+ },
+ "LSL": {
+ "name": "Loti ya Lesoto",
+ "symbol": "LSL"
+ },
+ "LTL": {
+ "name": "LTL",
+ "symbol": "LTL"
+ },
+ "MDL": {
+ "name": "MDL",
+ "symbol": "MDL"
+ },
+ "MKD": {
+ "name": "MKD",
+ "symbol": "MKD"
+ },
+ "MMK": {
+ "name": "MMK",
+ "symbol": "MMK"
+ },
+ "MNT": {
+ "name": "MNT",
+ "symbol": "MNT"
+ },
+ "MOP": {
+ "name": "MOP",
+ "symbol": "MOP"
+ },
+ "MVR": {
+ "name": "MVR",
+ "symbol": "MVR"
+ },
+ "MXN": {
+ "name": "MXN",
+ "symbol": "MX$"
+ },
+ "MYR": {
+ "name": "MYR",
+ "symbol": "MYR"
+ },
+ "MZN": {
+ "name": "MZN",
+ "symbol": "MZN"
+ },
+ "NGN": {
+ "name": "Naira ya Nijeria",
+ "symbol": "NGN"
+ },
+ "ERN": {
+ "name": "Nakfa ya Eritrea",
+ "symbol": "ERN"
+ },
+ "NIO": {
+ "name": "NIO",
+ "symbol": "NIO"
+ },
+ "NOK": {
+ "name": "NOK",
+ "symbol": "NOK"
+ },
+ "NPR": {
+ "name": "NPR",
+ "symbol": "NPR"
+ },
+ "NZD": {
+ "name": "NZD",
+ "symbol": "NZ$"
+ },
+ "OMR": {
+ "name": "OMR",
+ "symbol": "OMR"
+ },
+ "PAB": {
+ "name": "PAB",
+ "symbol": "PAB"
+ },
+ "EGP": {
+ "name": "Pauni ya Misri",
+ "symbol": "EGP"
+ },
+ "SHP": {
+ "name": "Pauni ya Santahelena",
+ "symbol": "SHP"
+ },
+ "SDG": {
+ "name": "Pauni ya Sudani",
+ "symbol": "SDG"
+ },
+ "GBP": {
+ "name": "Pauni ya Uingereza",
+ "symbol": "£"
+ },
+ "PEN": {
+ "name": "PEN",
+ "symbol": "PEN"
+ },
+ "PGK": {
+ "name": "PGK",
+ "symbol": "PGK"
+ },
+ "PHP": {
+ "name": "PHP",
+ "symbol": "PHP"
+ },
+ "PKR": {
+ "name": "PKR",
+ "symbol": "PKR"
+ },
+ "PLN": {
+ "name": "PLN",
+ "symbol": "PLN"
+ },
+ "BWP": {
+ "name": "Pula ya Botswana",
+ "symbol": "BWP"
+ },
+ "PYG": {
+ "name": "PYG",
+ "symbol": "PYG"
+ },
+ "QAR": {
+ "name": "QAR",
+ "symbol": "QAR"
+ },
+ "ZAR": {
+ "name": "Randi ya Afrika Kusini",
+ "symbol": "ZAR"
+ },
+ "SAR": {
+ "name": "Riyal ya Saudia",
+ "symbol": "SAR"
+ },
+ "RON": {
+ "name": "RON",
+ "symbol": "RON"
+ },
+ "RSD": {
+ "name": "RSD",
+ "symbol": "RSD"
+ },
+ "RUB": {
+ "name": "RUB",
+ "symbol": "RUB"
+ },
+ "INR": {
+ "name": "Rupia ya India",
+ "symbol": "₹"
+ },
+ "MUR": {
+ "name": "Rupia ya Morisi",
+ "symbol": "MUR"
+ },
+ "SCR": {
+ "name": "Rupia ya Shelisheli",
+ "symbol": "SCR"
+ },
+ "JPY": {
+ "name": "Sarafu ya Kijapani",
+ "symbol": "JPÂ¥"
+ },
+ "SBD": {
+ "name": "SBD",
+ "symbol": "SBD"
+ },
+ "SEK": {
+ "name": "SEK",
+ "symbol": "SEK"
+ },
+ "SGD": {
+ "name": "SGD",
+ "symbol": "SGD"
+ },
+ "KES": {
+ "name": "Shilingi ya Kenya",
+ "symbol": "Ksh"
+ },
+ "SOS": {
+ "name": "Shilingi ya Somalia",
+ "symbol": "SOS"
+ },
+ "TZS": {
+ "name": "Shilingi ya Tanzania",
+ "symbol": "TZS"
+ },
+ "UGX": {
+ "name": "Shilingi ya Uganda",
+ "symbol": "UGX"
+ },
+ "SRD": {
+ "name": "SRD",
+ "symbol": "SRD"
+ },
+ "SSP": {
+ "name": "SSP",
+ "symbol": "SSP"
+ },
+ "SVC": {
+ "name": "SVC",
+ "symbol": "SVC"
+ },
+ "SYP": {
+ "name": "SYP",
+ "symbol": "SYP"
+ },
+ "THB": {
+ "name": "THB",
+ "symbol": "THB"
+ },
+ "TJS": {
+ "name": "TJS",
+ "symbol": "TJS"
+ },
+ "TMT": {
+ "name": "TMT",
+ "symbol": "TMT"
+ },
+ "TOP": {
+ "name": "TOP",
+ "symbol": "TOP"
+ },
+ "TRY": {
+ "name": "TRY",
+ "symbol": "TRY"
+ },
+ "TTD": {
+ "name": "TTD",
+ "symbol": "TTD"
+ },
+ "TWD": {
+ "name": "TWD",
+ "symbol": "NT$"
+ },
+ "UAH": {
+ "name": "UAH",
+ "symbol": "UAH"
+ },
+ "MRO": {
+ "name": "Ugwiya ya Moritania",
+ "symbol": "MRO"
+ },
+ "UYU": {
+ "name": "UYU",
+ "symbol": "UYU"
+ },
+ "UZS": {
+ "name": "UZS",
+ "symbol": "UZS"
+ },
+ "VEF": {
+ "name": "VEF",
+ "symbol": "VEF"
+ },
+ "VND": {
+ "name": "VND",
+ "symbol": "â‚«"
+ },
+ "VUV": {
+ "name": "VUV",
+ "symbol": "VUV"
+ },
+ "WST": {
+ "name": "WST",
+ "symbol": "WST"
+ },
+ "XCD": {
+ "name": "XCD",
+ "symbol": "EC$"
+ },
+ "XPF": {
+ "name": "XPF",
+ "symbol": "CFPF"
+ },
+ "YER": {
+ "name": "YER",
+ "symbol": "YER"
+ },
+ "CNY": {
+ "name": "Yuan Renminbi ya China",
+ "symbol": "CNÂ¥"
+ },
+ "EUR": {
+ "name": "Yuro",
+ "symbol": "€"
+ },
+ "ZWL": {
+ "name": "ZWL",
+ "symbol": "ZWL"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/currency/ee.json b/library/intl/resources/currency/ee.json
new file mode 100644
index 000000000..4456aba62
--- /dev/null
+++ b/library/intl/resources/currency/ee.json
@@ -0,0 +1,634 @@
+{
+ "AFN": {
+ "name": "afghanistanga afghani",
+ "symbol": "AFN"
+ },
+ "ISK": {
+ "name": "aiselandga króna",
+ "symbol": "ISK"
+ },
+ "ALL": {
+ "name": "albaniaga lek",
+ "symbol": "ALL"
+ },
+ "DZD": {
+ "name": "aldzeriaga dinar",
+ "symbol": "DZD"
+ },
+ "AOA": {
+ "name": "angolaga kwanza",
+ "symbol": "AOA"
+ },
+ "ZAR": {
+ "name": "anyiehe afrikaga rand",
+ "symbol": "ZAR"
+ },
+ "KRW": {
+ "name": "anyiehe koreaga won",
+ "symbol": "â‚©"
+ },
+ "SSP": {
+ "name": "anyiehe sudanga pound",
+ "symbol": "SSP"
+ },
+ "ARS": {
+ "name": "argentinaga peso",
+ "symbol": "ARS"
+ },
+ "AMD": {
+ "name": "armeniaga dram",
+ "symbol": "AMD"
+ },
+ "AWG": {
+ "name": "arubaga lorin",
+ "symbol": "AWG"
+ },
+ "AUD": {
+ "name": "australiaga dollar",
+ "symbol": "AU$"
+ },
+ "AZN": {
+ "name": "azerbaidzanga manat",
+ "symbol": "AZN"
+ },
+ "BSD": {
+ "name": "bahamiaga dollar",
+ "symbol": "BSD"
+ },
+ "BHD": {
+ "name": "bahrainga dinar",
+ "symbol": "BHD"
+ },
+ "BDT": {
+ "name": "bangladeshga taka",
+ "symbol": "BDT"
+ },
+ "BBD": {
+ "name": "barbadiaga dollar",
+ "symbol": "BBD"
+ },
+ "BYR": {
+ "name": "belarusiaga ruble",
+ "symbol": "BYR"
+ },
+ "BZD": {
+ "name": "belizega dollar",
+ "symbol": "BZD"
+ },
+ "BMD": {
+ "name": "bermudaga dollar",
+ "symbol": "BMD"
+ },
+ "BTN": {
+ "name": "bhutanga ngultrum",
+ "symbol": "BTN"
+ },
+ "BOB": {
+ "name": "boliviaga boliviano",
+ "symbol": "BOB"
+ },
+ "BAM": {
+ "name": "bosnia-herzegovinaga convertible mark",
+ "symbol": "BAM"
+ },
+ "BWP": {
+ "name": "botswanaga pula",
+ "symbol": "BWP"
+ },
+ "BRL": {
+ "name": "brazilga real",
+ "symbol": "R$"
+ },
+ "GBP": {
+ "name": "britainga pound sterling",
+ "symbol": "£"
+ },
+ "BND": {
+ "name": "bruneiga dollar",
+ "symbol": "BND"
+ },
+ "BGN": {
+ "name": "bulgariaga lev",
+ "symbol": "BGN"
+ },
+ "BIF": {
+ "name": "burundiga franc",
+ "symbol": "BIF"
+ },
+ "XPF": {
+ "name": "CFP ga franc",
+ "symbol": "CFPF"
+ },
+ "DKK": {
+ "name": "danemarkga krone",
+ "symbol": "DKK"
+ },
+ "DOP": {
+ "name": "dominicaga peso",
+ "symbol": "DOP"
+ },
+ "JMD": {
+ "name": "dzamaikaga dollar",
+ "symbol": "JMD"
+ },
+ "JPY": {
+ "name": "dzapanga yen",
+ "symbol": "JPÂ¥"
+ },
+ "DJF": {
+ "name": "dziboutiga franc",
+ "symbol": "DJF"
+ },
+ "KPW": {
+ "name": "dziehe koreaga won",
+ "symbol": "KPW"
+ },
+ "GEL": {
+ "name": "dzɔdziaga lari",
+ "symbol": "GEL"
+ },
+ "EGP": {
+ "name": "egyptega pound",
+ "symbol": "EGP"
+ },
+ "ERN": {
+ "name": "eritreaga nakfa",
+ "symbol": "ERN"
+ },
+ "ETB": {
+ "name": "ethiopiaga birr",
+ "symbol": "ETB"
+ },
+ "EUR": {
+ "name": "euro",
+ "symbol": "€"
+ },
+ "FKP": {
+ "name": "falklanɖ ƒudomekpo dukɔwo ƒe ga pound",
+ "symbol": "FKP"
+ },
+ "FJD": {
+ "name": "fidziga dollar",
+ "symbol": "FJD"
+ },
+ "PHP": {
+ "name": "filipiniga peso",
+ "symbol": "PHP"
+ },
+ "GMD": {
+ "name": "gambiaga dalasi",
+ "symbol": "GMD"
+ },
+ "GHS": {
+ "name": "ghana siÉ–i",
+ "symbol": "GH₵"
+ },
+ "GIP": {
+ "name": "gilbrataga pound",
+ "symbol": "GIP"
+ },
+ "GNF": {
+ "name": "giniga franc",
+ "symbol": "GNF"
+ },
+ "GTQ": {
+ "name": "guatemalaga quetzal",
+ "symbol": "GTQ"
+ },
+ "GYD": {
+ "name": "guyanaga dollar",
+ "symbol": "GYD"
+ },
+ "XCD": {
+ "name": "É£edzeÆ’e caribbeaga dollar",
+ "symbol": "EC$"
+ },
+ "XOF": {
+ "name": "É£etoÉ–ofe afrikaga CFA franc BCEAO",
+ "symbol": "CFA"
+ },
+ "XAF": {
+ "name": "É£etoÉ–ofe afrikaga CFA franc BEAC",
+ "symbol": "FCFA"
+ },
+ "HTG": {
+ "name": "haitiga gourde",
+ "symbol": "HTG"
+ },
+ "HNL": {
+ "name": "honduraga lempira",
+ "symbol": "HNL"
+ },
+ "HKD": {
+ "name": "hong kongga dollar",
+ "symbol": "HK$"
+ },
+ "HUF": {
+ "name": "hungariaga forint",
+ "symbol": "HUF"
+ },
+ "INR": {
+ "name": "indiaga rupee",
+ "symbol": "₹"
+ },
+ "IDR": {
+ "name": "indinesiaga rupiah",
+ "symbol": "IDR"
+ },
+ "IQD": {
+ "name": "irakga dinar",
+ "symbol": "IQD"
+ },
+ "IRR": {
+ "name": "iranga rial",
+ "symbol": "IRR"
+ },
+ "ILS": {
+ "name": "israelga yeyetÉ” sheqel",
+ "symbol": "₪"
+ },
+ "KHR": {
+ "name": "kambodiaga riel",
+ "symbol": "KHR"
+ },
+ "CAD": {
+ "name": "kanadaga dollar",
+ "symbol": "CA$"
+ },
+ "CVE": {
+ "name": "kape verdega escudo",
+ "symbol": "CVE"
+ },
+ "QAR": {
+ "name": "katarga rial",
+ "symbol": "QAR"
+ },
+ "KYD": {
+ "name": "kayman Æ’udomekpoga dollar",
+ "symbol": "KYD"
+ },
+ "KZT": {
+ "name": "kazakhstanga tenge",
+ "symbol": "KZT"
+ },
+ "KES": {
+ "name": "kenyaga shilling",
+ "symbol": "KES"
+ },
+ "KGS": {
+ "name": "kirgistanga som",
+ "symbol": "KGS"
+ },
+ "COP": {
+ "name": "kolombiaga peso",
+ "symbol": "COP"
+ },
+ "KMF": {
+ "name": "komoroga franc",
+ "symbol": "KMF"
+ },
+ "CDF": {
+ "name": "kongoga franc",
+ "symbol": "CDF"
+ },
+ "CRC": {
+ "name": "kosta rikaga kolón",
+ "symbol": "CRC"
+ },
+ "HRK": {
+ "name": "kroatiaga kuna",
+ "symbol": "HRK"
+ },
+ "CUC": {
+ "name": "kubaga convertible peso",
+ "symbol": "CUC"
+ },
+ "CUP": {
+ "name": "kubaga peso",
+ "symbol": "CUP"
+ },
+ "KWD": {
+ "name": "kuwaitga dinar",
+ "symbol": "KWD"
+ },
+ "LAK": {
+ "name": "laosga kip",
+ "symbol": "LAK"
+ },
+ "LBP": {
+ "name": "lebanonga pound",
+ "symbol": "LBP"
+ },
+ "LSL": {
+ "name": "lesotoga loti",
+ "symbol": "LSL"
+ },
+ "LRD": {
+ "name": "liberiaga dollar",
+ "symbol": "LRD"
+ },
+ "LYD": {
+ "name": "libyaga dinar",
+ "symbol": "LYD"
+ },
+ "LTL": {
+ "name": "lithuaniaga litas",
+ "symbol": "LTL"
+ },
+ "MOP": {
+ "name": "makanesega pataca",
+ "symbol": "MOP"
+ },
+ "MKD": {
+ "name": "makedoniaga denar",
+ "symbol": "MKD"
+ },
+ "MGA": {
+ "name": "malagasega ariary",
+ "symbol": "MGA"
+ },
+ "MWK": {
+ "name": "malawiga kwacha",
+ "symbol": "MWK"
+ },
+ "MYR": {
+ "name": "malaysiaga ringit",
+ "symbol": "MYR"
+ },
+ "MVR": {
+ "name": "maldiviaga rufiyaa",
+ "symbol": "MVR"
+ },
+ "MXN": {
+ "name": "meksikoga peso",
+ "symbol": "MX$"
+ },
+ "MDL": {
+ "name": "moldovaga leu",
+ "symbol": "MDL"
+ },
+ "MNT": {
+ "name": "mongoliaga tugrik",
+ "symbol": "MNT"
+ },
+ "MAD": {
+ "name": "morokoga dirham",
+ "symbol": "MAD"
+ },
+ "MZN": {
+ "name": "mozambikga metikal",
+ "symbol": "MZN"
+ },
+ "MRO": {
+ "name": "mɔritaniaga ouguiya",
+ "symbol": "MRO"
+ },
+ "MUR": {
+ "name": "mɔritiusga rupee",
+ "symbol": "MUR"
+ },
+ "MMK": {
+ "name": "myanmaga kyat",
+ "symbol": "MMK"
+ },
+ "NGN": {
+ "name": "naidzeriaga naira",
+ "symbol": "NGN"
+ },
+ "NAD": {
+ "name": "namibiaga dollar",
+ "symbol": "NAD"
+ },
+ "ANG": {
+ "name": "nedalands antilleaga guilder",
+ "symbol": "ANG"
+ },
+ "NPR": {
+ "name": "nepalga rupee",
+ "symbol": "NPR"
+ },
+ "NZD": {
+ "name": "new zealanÉ–ga dollar",
+ "symbol": "NZ$"
+ },
+ "NIO": {
+ "name": "nikaraguaga córdoba",
+ "symbol": "NIO"
+ },
+ "NOK": {
+ "name": "norwayga krone",
+ "symbol": "NOK"
+ },
+ "OMR": {
+ "name": "omanga rial",
+ "symbol": "OMR"
+ },
+ "PKR": {
+ "name": "pakistaniga rupee",
+ "symbol": "PKR"
+ },
+ "PAB": {
+ "name": "panamaga balboa",
+ "symbol": "PAB"
+ },
+ "PGK": {
+ "name": "papua new guineaga kina",
+ "symbol": "PGK"
+ },
+ "PYG": {
+ "name": "paraguayga guarani",
+ "symbol": "PYG"
+ },
+ "PEN": {
+ "name": "peruga nuevo sol",
+ "symbol": "PEN"
+ },
+ "PLN": {
+ "name": "polanÉ–ga zloty",
+ "symbol": "PLN"
+ },
+ "RON": {
+ "name": "romaniaga leu",
+ "symbol": "RON"
+ },
+ "RUB": {
+ "name": "rɔtsiaga ruble",
+ "symbol": "RUB"
+ },
+ "RWF": {
+ "name": "rwandaga franc",
+ "symbol": "RWF"
+ },
+ "SHP": {
+ "name": "saint helenaga pound",
+ "symbol": "SHP"
+ },
+ "SVC": {
+ "name": "salvadɔga colón",
+ "symbol": "SVC"
+ },
+ "WST": {
+ "name": "samaoga tala",
+ "symbol": "WST"
+ },
+ "STD": {
+ "name": "são tomé kple príncipega dobra",
+ "symbol": "STD"
+ },
+ "SAR": {
+ "name": "saudiga riyal",
+ "symbol": "SAR"
+ },
+ "RSD": {
+ "name": "serbiaga dinar",
+ "symbol": "RSD"
+ },
+ "SCR": {
+ "name": "sɛtselsga rupee",
+ "symbol": "SCR"
+ },
+ "SLL": {
+ "name": "sierra leonega leone",
+ "symbol": "SLL"
+ },
+ "SGD": {
+ "name": "singapɔga dollar",
+ "symbol": "SGD"
+ },
+ "SBD": {
+ "name": "solomon ƒudomekpo dukɔwo ƒe ga dollar",
+ "symbol": "SBD"
+ },
+ "SOS": {
+ "name": "somaliaga shilling",
+ "symbol": "SOS"
+ },
+ "LKR": {
+ "name": "sri lankaga rupee",
+ "symbol": "LKR"
+ },
+ "SDG": {
+ "name": "sudanga pound",
+ "symbol": "SDG"
+ },
+ "SRD": {
+ "name": "surinamga dollar",
+ "symbol": "SRD"
+ },
+ "SZL": {
+ "name": "swaziga lilangeni",
+ "symbol": "SZL"
+ },
+ "SEK": {
+ "name": "swedenga krona",
+ "symbol": "SEK"
+ },
+ "CHF": {
+ "name": "swissga franc",
+ "symbol": "CHF"
+ },
+ "SYP": {
+ "name": "syriaga pound",
+ "symbol": "SYP"
+ },
+ "TWD": {
+ "name": "taiwanga yeye dollar",
+ "symbol": "NT$"
+ },
+ "TJS": {
+ "name": "tajikistanga somoni",
+ "symbol": "TJS"
+ },
+ "TZS": {
+ "name": "Tanzaniatɔwofɛgadudu",
+ "symbol": "TZS"
+ },
+ "TRY": {
+ "name": "tɛkiiga lira",
+ "symbol": "TRY"
+ },
+ "THB": {
+ "name": "thaiga baht",
+ "symbol": "฿"
+ },
+ "TOP": {
+ "name": "tonagaga pa’anga",
+ "symbol": "TOP"
+ },
+ "TTD": {
+ "name": "trinidad kple tobagoga dollar",
+ "symbol": "TTD"
+ },
+ "CNY": {
+ "name": "tsainaga yuan",
+ "symbol": "CNÂ¥"
+ },
+ "CZK": {
+ "name": "tsɛk repɔblikga koruna",
+ "symbol": "CZK"
+ },
+ "CLP": {
+ "name": "tsilega peso",
+ "symbol": "CLP"
+ },
+ "TND": {
+ "name": "tunisiaga dinar",
+ "symbol": "TND"
+ },
+ "TMT": {
+ "name": "turkmenistanga manat",
+ "symbol": "TMT"
+ },
+ "UGX": {
+ "name": "ugandaga shilling",
+ "symbol": "UGX"
+ },
+ "UAH": {
+ "name": "ukrainega hryvnia",
+ "symbol": "UAH"
+ },
+ "AED": {
+ "name": "united arab emiratesga dirham",
+ "symbol": "AED"
+ },
+ "UYU": {
+ "name": "uruguayga peso",
+ "symbol": "UYU"
+ },
+ "USD": {
+ "name": "us ga dollar",
+ "symbol": "US$"
+ },
+ "UZS": {
+ "name": "uzbekistanga som",
+ "symbol": "UZS"
+ },
+ "VUV": {
+ "name": "vanuatuga vatu",
+ "symbol": "VUV"
+ },
+ "VEF": {
+ "name": "venezuelaga bolívar",
+ "symbol": "VEF"
+ },
+ "VND": {
+ "name": "vietnamga dong",
+ "symbol": "â‚«"
+ },
+ "YER": {
+ "name": "yemeniga rial",
+ "symbol": "YER"
+ },
+ "JOD": {
+ "name": "yɔdanga dinar",
+ "symbol": "JOD"
+ },
+ "ZMW": {
+ "name": "zambiaga kwacha",
+ "symbol": "ZMW"
+ },
+ "ZWL": {
+ "name": "zimbabwega dollar (2009)",
+ "symbol": "ZWL"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/currency/el.json b/library/intl/resources/currency/el.json
new file mode 100644
index 000000000..4fd78bddf
--- /dev/null
+++ b/library/intl/resources/currency/el.json
@@ -0,0 +1,634 @@
+{
+ "MGA": {
+ "name": "ΑÏιάÏι ΜαδαγασκάÏης",
+ "symbol": "MGA"
+ },
+ "AFN": {
+ "name": "Αφγάνι Αφγανιστάν",
+ "symbol": "AFN"
+ },
+ "VUV": {
+ "name": "Î’Î±Ï„Î¿Ï Î’Î±Î½Î¿Ï…Î¬Ï„Î¿Ï…",
+ "symbol": "VUV"
+ },
+ "JPY": {
+ "name": "Γιεν Ιαπωνίας",
+ "symbol": "JPÂ¥"
+ },
+ "ANG": {
+ "name": "Γκίλντα Ολλανδικών Αντιλλών",
+ "symbol": "ANG"
+ },
+ "PYG": {
+ "name": "ΓκουαÏανί ΠαÏαγουάης",
+ "symbol": "PYG"
+ },
+ "HTG": {
+ "name": "ΓκουÏντ Αϊτής",
+ "symbol": "HTG"
+ },
+ "CNY": {
+ "name": "Γουάν Κίνας",
+ "symbol": "CNÂ¥"
+ },
+ "KPW": {
+ "name": "Γουόν Î’ÏŒÏειας ΚοÏέας",
+ "symbol": "KPW"
+ },
+ "KRW": {
+ "name": "Γουόν Îότιας ΚοÏέας",
+ "symbol": "â‚©"
+ },
+ "UAH": {
+ "name": "ΓÏίβνα ΟυκÏανίας",
+ "symbol": "UAH"
+ },
+ "DZD": {
+ "name": "ΔηνάÏιο ΑλγεÏίας",
+ "symbol": "DZD"
+ },
+ "JOD": {
+ "name": "ΔηνάÏιο ΙοÏδανίας",
+ "symbol": "JOD"
+ },
+ "IQD": {
+ "name": "ΔηνάÏιο ΙÏάκ",
+ "symbol": "IQD"
+ },
+ "KWD": {
+ "name": "ΔηνάÏιο Κουβέιτ",
+ "symbol": "KWD"
+ },
+ "LYD": {
+ "name": "ΔηνάÏιο ΛιβÏης",
+ "symbol": "LYD"
+ },
+ "BHD": {
+ "name": "ΔηνάÏιο ΜπαχÏέιν",
+ "symbol": "BHD"
+ },
+ "MKD": {
+ "name": "ΔηνάÏιο Π.Γ.Δ.Îœ.",
+ "symbol": "MKD"
+ },
+ "RSD": {
+ "name": "ΔηνάÏιο ΣεÏβίας",
+ "symbol": "RSD"
+ },
+ "TND": {
+ "name": "ΔηνάÏιο Τυνησίας",
+ "symbol": "TND"
+ },
+ "XCD": {
+ "name": "ΔολάÏιο Ανατολικής ΚαÏαϊβικής",
+ "symbol": "EC$"
+ },
+ "AUD": {
+ "name": "ΔολάÏιο ΑυστÏαλίας",
+ "symbol": "A$"
+ },
+ "BMD": {
+ "name": "ΔολάÏιο ΒεÏμοÏδων",
+ "symbol": "BMD"
+ },
+ "GYD": {
+ "name": "ΔολάÏιο Γουιάνας",
+ "symbol": "GYD"
+ },
+ "ZWL": {
+ "name": "ΔολάÏιο Ζιμπάμπουε (2009)",
+ "symbol": "ZWL"
+ },
+ "USD": {
+ "name": "ΔολάÏιο ΗΠΑ",
+ "symbol": "$"
+ },
+ "CAD": {
+ "name": "ΔολάÏιο Καναδά",
+ "symbol": "CA$"
+ },
+ "LRD": {
+ "name": "ΔολάÏιο ΛιβεÏίας",
+ "symbol": "LRD"
+ },
+ "BBD": {
+ "name": "ΔολάÏιο ΜπαÏμπάντος",
+ "symbol": "BBD"
+ },
+ "BSD": {
+ "name": "ΔολάÏιο Μπαχάμες",
+ "symbol": "BSD"
+ },
+ "BZD": {
+ "name": "ΔολάÏιο Μπελίζ",
+ "symbol": "BZD"
+ },
+ "BND": {
+ "name": "ΔολάÏιο ΜπÏουνέι",
+ "symbol": "BND"
+ },
+ "NAD": {
+ "name": "ΔολάÏιο Îαμίμπια",
+ "symbol": "NAD"
+ },
+ "NZD": {
+ "name": "ΔολάÏιο Îέας Ζηλανδίας",
+ "symbol": "NZ$"
+ },
+ "KYD": {
+ "name": "ΔολάÏιο Îήσων Κάιμαν",
+ "symbol": "KYD"
+ },
+ "SBD": {
+ "name": "ΔολάÏιο Îήσων Σολομώντος",
+ "symbol": "SBD"
+ },
+ "SGD": {
+ "name": "ΔολάÏιο ΣιγκαποÏÏης",
+ "symbol": "SGD"
+ },
+ "SRD": {
+ "name": "ΔολάÏιο ΣουÏινάμ",
+ "symbol": "SRD"
+ },
+ "JMD": {
+ "name": "ΔολάÏιο Τζαμάικας",
+ "symbol": "JMD"
+ },
+ "TTD": {
+ "name": "ΔολάÏιο ΤÏινιντάντ και Τομπάγκο",
+ "symbol": "TTD"
+ },
+ "FJD": {
+ "name": "ΔολάÏιο Φίτζι",
+ "symbol": "FJD"
+ },
+ "HKD": {
+ "name": "ΔολάÏιο Χονγκ Κονγκ",
+ "symbol": "HK$"
+ },
+ "CVE": {
+ "name": "ΕσκοÏδο ΠÏάσινου ΑκÏωτηÏίου",
+ "symbol": "CVE"
+ },
+ "EUR": {
+ "name": "ΕυÏÏŽ",
+ "symbol": "€"
+ },
+ "PLN": {
+ "name": "Ζλότι Πολωνίας",
+ "symbol": "PLN"
+ },
+ "PGK": {
+ "name": "Κίνα ΠαποÏα Îέα Γουινέα",
+ "symbol": "PGK"
+ },
+ "LAK": {
+ "name": "Κιπ Λάος",
+ "symbol": "LAK"
+ },
+ "SVC": {
+ "name": "Κολόν Ελ ΣαλβαδόÏ",
+ "symbol": "SVC"
+ },
+ "CRC": {
+ "name": "Κολόν Κόστα Ρίκα",
+ "symbol": "CRC"
+ },
+ "DKK": {
+ "name": "ΚοÏόνα Δανίας",
+ "symbol": "DKK"
+ },
+ "ISK": {
+ "name": "ΚοÏόνα Ισλανδίας",
+ "symbol": "ISK"
+ },
+ "NOK": {
+ "name": "ΚοÏόνα ÎοÏβηγίας",
+ "symbol": "NOK"
+ },
+ "SEK": {
+ "name": "ΚοÏόνα Σουηδίας",
+ "symbol": "SEK"
+ },
+ "CZK": {
+ "name": "ΚοÏόνα Τσεχίας",
+ "symbol": "CZK"
+ },
+ "AOA": {
+ "name": "Κουάνζα Ανγκόλας",
+ "symbol": "AOA"
+ },
+ "ZMW": {
+ "name": "Κουάτσα Ζάμπιας",
+ "symbol": "ZMW"
+ },
+ "MWK": {
+ "name": "Κουάτσα Μαλάουι",
+ "symbol": "MWK"
+ },
+ "GTQ": {
+ "name": "Κουετσάλ Γουατεμάλας",
+ "symbol": "GTQ"
+ },
+ "HRK": {
+ "name": "ΚοÏνα ΚÏοατίας",
+ "symbol": "HRK"
+ },
+ "MMK": {
+ "name": "Κυάτ ΜιανμάÏ",
+ "symbol": "MMK"
+ },
+ "GEL": {
+ "name": "ΛάÏι ΓεωÏγίας",
+ "symbol": "GEL"
+ },
+ "BGN": {
+ "name": "Λεβ ΒουλγαÏίας",
+ "symbol": "BGN"
+ },
+ "ALL": {
+ "name": "Λεκ Αλβανίας",
+ "symbol": "ALL"
+ },
+ "HNL": {
+ "name": "ΛεμπίÏα ΟνδοÏÏας",
+ "symbol": "HNL"
+ },
+ "SLL": {
+ "name": "Λεόνε ΣιέÏα Λεόνε",
+ "symbol": "SLL"
+ },
+ "MDL": {
+ "name": "Λέου Μολδαβίας",
+ "symbol": "MDL"
+ },
+ "RON": {
+ "name": "Λέου Ρουμανίας",
+ "symbol": "RON"
+ },
+ "SZL": {
+ "name": "Λιλανγκένι Σουαζιλάνδης",
+ "symbol": "SZL"
+ },
+ "SHP": {
+ "name": "ΛίÏα Αγίας Ελένης",
+ "symbol": "SHP"
+ },
+ "EGP": {
+ "name": "ΛίÏα ΑιγÏπτου",
+ "symbol": "EGP"
+ },
+ "GIP": {
+ "name": "ΛίÏα ΓιβÏαλτάÏ",
+ "symbol": "GIP"
+ },
+ "LBP": {
+ "name": "ΛίÏα Λιβάνου",
+ "symbol": "LBP"
+ },
+ "FKP": {
+ "name": "ΛίÏα Îησιών Φώκλαντ",
+ "symbol": "FKP"
+ },
+ "SSP": {
+ "name": "ΛίÏα Îότιου Σουδάν",
+ "symbol": "SSP"
+ },
+ "SDG": {
+ "name": "ΛίÏα Σουδάν",
+ "symbol": "SDG"
+ },
+ "GBP": {
+ "name": "ΛίÏα ΣτεÏλίνα Î’Ïετανίας",
+ "symbol": "£"
+ },
+ "SYP": {
+ "name": "ΛίÏα ΣυÏίας",
+ "symbol": "SYP"
+ },
+ "LTL": {
+ "name": "Λίτα Λιθουανίας",
+ "symbol": "LTL"
+ },
+ "LSL": {
+ "name": "Λότι Λεσότο",
+ "symbol": "LSL"
+ },
+ "AZN": {
+ "name": "Μανάτ ΑζεÏμπαϊτζάν",
+ "symbol": "AZN"
+ },
+ "TMT": {
+ "name": "Μάνατ ΤουÏκμενιστάν",
+ "symbol": "TMT"
+ },
+ "BAM": {
+ "name": "ΜετατÏέψιμο ΜάÏκο Βοσνίας-ΕÏζεγοβίνης",
+ "symbol": "BAM"
+ },
+ "CUC": {
+ "name": "ΜετατÏέψιμο πέσο ΚοÏβας",
+ "symbol": "CUC"
+ },
+ "MZN": {
+ "name": "Μετικάλ Μοζαμβίκης",
+ "symbol": "MZN"
+ },
+ "PAB": {
+ "name": "Μπαλμπόα Παναμά",
+ "symbol": "PAB"
+ },
+ "THB": {
+ "name": "Μπατ Ταϊλάνδης",
+ "symbol": "฿"
+ },
+ "ETB": {
+ "name": "ÎœÏ€Î¹Ï Î‘Î¹Î¸Î¹Î¿Ï€Î¯Î±Ï‚",
+ "symbol": "ETB"
+ },
+ "VEF": {
+ "name": "ÎœÏ€Î¿Î»Î¹Î²Î¬Ï Î’ÎµÎ½ÎµÎ¶Î¿Ï…Î­Î»Î±Ï‚",
+ "symbol": "VEF"
+ },
+ "BOB": {
+ "name": "Μπολιβιάνο Βολιβίας",
+ "symbol": "BOB"
+ },
+ "NGN": {
+ "name": "ÎάιÏα ÎιγηÏίας",
+ "symbol": "NGN"
+ },
+ "ERN": {
+ "name": "Îάκφα ΕÏυθÏαίας",
+ "symbol": "ERN"
+ },
+ "BTN": {
+ "name": "ÎγκοÏλτÏουμ Μπουτάν",
+ "symbol": "BTN"
+ },
+ "TWD": {
+ "name": "Îέο δολάÏιο Ταϊβάν",
+ "symbol": "NT$"
+ },
+ "ILS": {
+ "name": "Îέο Σέκελ ΙσÏαήλ",
+ "symbol": "₪"
+ },
+ "PEN": {
+ "name": "Îέο Σολ ΠεÏοÏ",
+ "symbol": "PEN"
+ },
+ "GMD": {
+ "name": "Îταλάσι Γκάμπιας",
+ "symbol": "GMD"
+ },
+ "AED": {
+ "name": "ÎτιÏάμ Ηνωμένων ΑÏαβικών ΕμιÏάτων",
+ "symbol": "AED"
+ },
+ "MAD": {
+ "name": "ÎτιÏάμ ΜαÏόκου",
+ "symbol": "MAD"
+ },
+ "STD": {
+ "name": "ÎτόμπÏα Σάο Τομέ και ΠÏίνσιπε",
+ "symbol": "STD"
+ },
+ "VND": {
+ "name": "Îτονγκ Βιετνάμ",
+ "symbol": "â‚«"
+ },
+ "AMD": {
+ "name": "ÎÏ„Ïαμ ΑÏμενίας",
+ "symbol": "AMD"
+ },
+ "MRO": {
+ "name": "Ουγκίγια ΜαυÏιτανίας",
+ "symbol": "MRO"
+ },
+ "TOP": {
+ "name": "Παάγκα νήσων Τόγκα",
+ "symbol": "TOP"
+ },
+ "MOP": {
+ "name": "Πατάκα Μακάο",
+ "symbol": "MOP"
+ },
+ "ARS": {
+ "name": "Πέσο ΑÏγεντινής",
+ "symbol": "ARS"
+ },
+ "DOP": {
+ "name": "Πέσο Δομινικανής ΔημοκÏατίας",
+ "symbol": "DOP"
+ },
+ "COP": {
+ "name": "Πέσο Κολομβίας",
+ "symbol": "COP"
+ },
+ "CUP": {
+ "name": "Πέσο ΚοÏβας",
+ "symbol": "CUP"
+ },
+ "MXN": {
+ "name": "Πέσο ΜεξικοÏ",
+ "symbol": "MX$"
+ },
+ "UYU": {
+ "name": "Πέσο ΟυÏουγουάης",
+ "symbol": "UYU"
+ },
+ "PHP": {
+ "name": "Πέσο Φιλιππίνων",
+ "symbol": "PHP"
+ },
+ "CLP": {
+ "name": "Πέσο Χιλής",
+ "symbol": "CLP"
+ },
+ "BWP": {
+ "name": "ΠοÏλα Μποτσουάνας",
+ "symbol": "BWP"
+ },
+ "ZAR": {
+ "name": "Ραντ Îότιας ΑφÏικής",
+ "symbol": "ZAR"
+ },
+ "BRL": {
+ "name": "Ρεάλ Î’Ïαζιλίας",
+ "symbol": "R$"
+ },
+ "IRR": {
+ "name": "Ριάλ ΙÏάν",
+ "symbol": "IRR"
+ },
+ "QAR": {
+ "name": "Ριάλ ΚατάÏ",
+ "symbol": "QAR"
+ },
+ "OMR": {
+ "name": "Ριάλ Ομάν",
+ "symbol": "OMR"
+ },
+ "SAR": {
+ "name": "Ριάλ Σαουδικής ΑÏαβίας",
+ "symbol": "SAR"
+ },
+ "YER": {
+ "name": "Ριάλ Υεμένης",
+ "symbol": "YER"
+ },
+ "KHR": {
+ "name": "Ρίελ Καμπότζης",
+ "symbol": "KHR"
+ },
+ "MYR": {
+ "name": "Ρινγκίτ Μαλαισίας",
+ "symbol": "MYR"
+ },
+ "BYR": {
+ "name": "ΡοÏβλι ΛευκοÏωσίας",
+ "symbol": "BYR"
+ },
+ "RUB": {
+ "name": "ΡοÏβλι Ρωσίας",
+ "symbol": "RUB"
+ },
+ "INR": {
+ "name": "Ρουπία Ινδίας",
+ "symbol": "₹"
+ },
+ "IDR": {
+ "name": "Ρουπία Ινδονησίας",
+ "symbol": "IDR"
+ },
+ "MUR": {
+ "name": "Ρουπία ΜαυÏικίου",
+ "symbol": "MUR"
+ },
+ "NPR": {
+ "name": "Ρουπία Îεπάλ",
+ "symbol": "NPR"
+ },
+ "PKR": {
+ "name": "Ρουπία Πακιστάν",
+ "symbol": "PKR"
+ },
+ "SCR": {
+ "name": "Ρουπία Σεϋχελλών",
+ "symbol": "SCR"
+ },
+ "LKR": {
+ "name": "Ρουπία ΣÏι Λάνκα",
+ "symbol": "LKR"
+ },
+ "MVR": {
+ "name": "Ρουφίγια Μαλδίβων",
+ "symbol": "MVR"
+ },
+ "KES": {
+ "name": "Σελίνι Κένυας",
+ "symbol": "KES"
+ },
+ "UGX": {
+ "name": "Σελίνι Ουγκάντας",
+ "symbol": "UGX"
+ },
+ "SOS": {
+ "name": "Σελίνι Σομαλίας",
+ "symbol": "SOS"
+ },
+ "TZS": {
+ "name": "Σελίνι Τανζανίας",
+ "symbol": "TZS"
+ },
+ "GHS": {
+ "name": "Σέντι Γκάνας",
+ "symbol": "GHS"
+ },
+ "KGS": {
+ "name": "Σομ ΚιÏγιζίας",
+ "symbol": "KGS"
+ },
+ "UZS": {
+ "name": "Σομ Ουζμπεκιστάν",
+ "symbol": "UZS"
+ },
+ "TJS": {
+ "name": "Σομόνι Τατζικιστάν",
+ "symbol": "TJS"
+ },
+ "BDT": {
+ "name": "Τάκα Μπαγκλαντές",
+ "symbol": "BDT"
+ },
+ "WST": {
+ "name": "Τάλα Σαμόα",
+ "symbol": "WST"
+ },
+ "KZT": {
+ "name": "Τένγκε Καζακστάν",
+ "symbol": "KZT"
+ },
+ "MNT": {
+ "name": "ΤουγκÏίκ Μογγολίας",
+ "symbol": "MNT"
+ },
+ "TRY": {
+ "name": "ΤουÏκική ΛίÏα",
+ "symbol": "TRY"
+ },
+ "HUF": {
+ "name": "ΦιοÏίνι ΟυγγαÏίας",
+ "symbol": "HUF"
+ },
+ "AWG": {
+ "name": "ΦλοÏίνι ΑÏοÏμπα",
+ "symbol": "AWG"
+ },
+ "XOF": {
+ "name": "ΦÏάγκο CFA Δυτικής ΑφÏικής (BCEAO)",
+ "symbol": "CFA"
+ },
+ "XAF": {
+ "name": "ΦÏάγκο CFA ΚεντÏικής ΑφÏικής (BEAC)",
+ "symbol": "FCFA"
+ },
+ "XPF": {
+ "name": "ΦÏάγκο CFP",
+ "symbol": "CFPF"
+ },
+ "GNF": {
+ "name": "ΦÏάγκο Γουινέας",
+ "symbol": "GNF"
+ },
+ "CHF": {
+ "name": "ΦÏάγκο Ελβετίας",
+ "symbol": "CHF"
+ },
+ "KMF": {
+ "name": "ΦÏάγκο ΚομοÏών",
+ "symbol": "KMF"
+ },
+ "CDF": {
+ "name": "ΦÏάγκο Κονγκό",
+ "symbol": "CDF"
+ },
+ "BIF": {
+ "name": "ΦÏάγκο ΜπουÏοÏντι",
+ "symbol": "BIF"
+ },
+ "RWF": {
+ "name": "ΦÏάγκο Ρουάντας",
+ "symbol": "RWF"
+ },
+ "DJF": {
+ "name": "ΦÏάγκο Τζιμπουτί",
+ "symbol": "DJF"
+ },
+ "NIO": {
+ "name": "ΧÏυσή ΚόÏδοβα ÎικαÏάγουας",
+ "symbol": "NIO"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/currency/en-AU.json b/library/intl/resources/currency/en-AU.json
new file mode 100644
index 000000000..931c1a515
--- /dev/null
+++ b/library/intl/resources/currency/en-AU.json
@@ -0,0 +1,634 @@
+{
+ "AFN": {
+ "name": "Afghan Afghani",
+ "symbol": "AFN"
+ },
+ "ALL": {
+ "name": "Albanian Lek",
+ "symbol": "ALL"
+ },
+ "DZD": {
+ "name": "Algerian Dinar",
+ "symbol": "DZD"
+ },
+ "AOA": {
+ "name": "Angolan Kwanza",
+ "symbol": "AOA"
+ },
+ "ARS": {
+ "name": "Argentine Peso",
+ "symbol": "ARS"
+ },
+ "AMD": {
+ "name": "Armenian Dram",
+ "symbol": "AMD"
+ },
+ "AWG": {
+ "name": "Aruban Florin",
+ "symbol": "AWG"
+ },
+ "AUD": {
+ "name": "Australian Dollar",
+ "symbol": "A$"
+ },
+ "AZN": {
+ "name": "Azerbaijani Manat",
+ "symbol": "AZN"
+ },
+ "BSD": {
+ "name": "Bahamian Dollar",
+ "symbol": "BSD"
+ },
+ "BHD": {
+ "name": "Bahraini Dinar",
+ "symbol": "BHD"
+ },
+ "BDT": {
+ "name": "Bangladeshi Taka",
+ "symbol": "BDT"
+ },
+ "BBD": {
+ "name": "Barbadian Dollar",
+ "symbol": "BBD"
+ },
+ "BYR": {
+ "name": "Belarusian Rouble",
+ "symbol": "BYR"
+ },
+ "BZD": {
+ "name": "Belize Dollar",
+ "symbol": "BZD"
+ },
+ "BMD": {
+ "name": "Bermudan Dollar",
+ "symbol": "BMD"
+ },
+ "BTN": {
+ "name": "Bhutanese Ngultrum",
+ "symbol": "BTN"
+ },
+ "BOB": {
+ "name": "Bolivian Boliviano",
+ "symbol": "BOB"
+ },
+ "BAM": {
+ "name": "Bosnia-Herzegovina Convertible Mark",
+ "symbol": "BAM"
+ },
+ "BWP": {
+ "name": "Botswanan Pula",
+ "symbol": "BWP"
+ },
+ "BRL": {
+ "name": "Brazilian Real",
+ "symbol": "R$"
+ },
+ "GBP": {
+ "name": "British Pound",
+ "symbol": "£"
+ },
+ "BND": {
+ "name": "Brunei Dollar",
+ "symbol": "BND"
+ },
+ "BGN": {
+ "name": "Bulgarian Lev",
+ "symbol": "BGN"
+ },
+ "BIF": {
+ "name": "Burundian Franc",
+ "symbol": "BIF"
+ },
+ "KHR": {
+ "name": "Cambodian Riel",
+ "symbol": "KHR"
+ },
+ "CAD": {
+ "name": "Canadian Dollar",
+ "symbol": "CA$"
+ },
+ "CVE": {
+ "name": "Cape Verdean Escudo",
+ "symbol": "CVE"
+ },
+ "KYD": {
+ "name": "Cayman Islands Dollar",
+ "symbol": "KYD"
+ },
+ "XAF": {
+ "name": "Central African CFA Franc",
+ "symbol": "FCFA"
+ },
+ "XPF": {
+ "name": "CFP Franc",
+ "symbol": "CFPF"
+ },
+ "CLP": {
+ "name": "Chilean Peso",
+ "symbol": "CLP"
+ },
+ "CNY": {
+ "name": "Chinese Yuan",
+ "symbol": "CNÂ¥"
+ },
+ "COP": {
+ "name": "Colombian Peso",
+ "symbol": "COP"
+ },
+ "KMF": {
+ "name": "Comorian Franc",
+ "symbol": "KMF"
+ },
+ "CDF": {
+ "name": "Congolese Franc",
+ "symbol": "CDF"
+ },
+ "CRC": {
+ "name": "Costa Rican Colón",
+ "symbol": "CRC"
+ },
+ "HRK": {
+ "name": "Croatian Kuna",
+ "symbol": "HRK"
+ },
+ "CUC": {
+ "name": "Cuban Convertible Peso",
+ "symbol": "CUC"
+ },
+ "CUP": {
+ "name": "Cuban Peso",
+ "symbol": "CUP"
+ },
+ "CZK": {
+ "name": "Czech Republic Koruna",
+ "symbol": "CZK"
+ },
+ "DKK": {
+ "name": "Danish Krone",
+ "symbol": "DKK"
+ },
+ "DJF": {
+ "name": "Djiboutian Franc",
+ "symbol": "DJF"
+ },
+ "DOP": {
+ "name": "Dominican Peso",
+ "symbol": "DOP"
+ },
+ "XCD": {
+ "name": "East Caribbean Dollar",
+ "symbol": "EC$"
+ },
+ "EGP": {
+ "name": "Egyptian Pound",
+ "symbol": "EGP"
+ },
+ "ERN": {
+ "name": "Eritrean Nakfa",
+ "symbol": "ERN"
+ },
+ "ETB": {
+ "name": "Ethiopian Birr",
+ "symbol": "ETB"
+ },
+ "EUR": {
+ "name": "Euro",
+ "symbol": "€"
+ },
+ "FKP": {
+ "name": "Falkland Islands Pound",
+ "symbol": "FKP"
+ },
+ "FJD": {
+ "name": "Fijian Dollar",
+ "symbol": "FJD"
+ },
+ "GMD": {
+ "name": "Gambian Dalasi",
+ "symbol": "GMD"
+ },
+ "GEL": {
+ "name": "Georgian Lari",
+ "symbol": "GEL"
+ },
+ "GHS": {
+ "name": "Ghanaian Cedi",
+ "symbol": "GHS"
+ },
+ "GIP": {
+ "name": "Gibraltar Pound",
+ "symbol": "GIP"
+ },
+ "GTQ": {
+ "name": "Guatemalan Quetzal",
+ "symbol": "GTQ"
+ },
+ "GNF": {
+ "name": "Guinean Franc",
+ "symbol": "GNF"
+ },
+ "GYD": {
+ "name": "Guyanaese Dollar",
+ "symbol": "GYD"
+ },
+ "HTG": {
+ "name": "Haitian Gourde",
+ "symbol": "HTG"
+ },
+ "HNL": {
+ "name": "Honduran Lempira",
+ "symbol": "HNL"
+ },
+ "HKD": {
+ "name": "Hong Kong Dollar",
+ "symbol": "HK$"
+ },
+ "HUF": {
+ "name": "Hungarian Forint",
+ "symbol": "HUF"
+ },
+ "ISK": {
+ "name": "Icelandic Króna",
+ "symbol": "ISK"
+ },
+ "INR": {
+ "name": "Indian Rupee",
+ "symbol": "₹"
+ },
+ "IDR": {
+ "name": "Indonesian Rupiah",
+ "symbol": "IDR"
+ },
+ "IRR": {
+ "name": "Iranian Rial",
+ "symbol": "IRR"
+ },
+ "IQD": {
+ "name": "Iraqi Dinar",
+ "symbol": "IQD"
+ },
+ "ILS": {
+ "name": "Israeli New Shekel",
+ "symbol": "₪"
+ },
+ "JMD": {
+ "name": "Jamaican Dollar",
+ "symbol": "JMD"
+ },
+ "JPY": {
+ "name": "Japanese Yen",
+ "symbol": "Â¥"
+ },
+ "JOD": {
+ "name": "Jordanian Dinar",
+ "symbol": "JOD"
+ },
+ "KZT": {
+ "name": "Kazakhstani Tenge",
+ "symbol": "KZT"
+ },
+ "KES": {
+ "name": "Kenyan Shilling",
+ "symbol": "KES"
+ },
+ "KWD": {
+ "name": "Kuwaiti Dinar",
+ "symbol": "KWD"
+ },
+ "KGS": {
+ "name": "Kyrgystani Som",
+ "symbol": "KGS"
+ },
+ "LAK": {
+ "name": "Laotian Kip",
+ "symbol": "LAK"
+ },
+ "LBP": {
+ "name": "Lebanese Pound",
+ "symbol": "LBP"
+ },
+ "LSL": {
+ "name": "Lesotho Loti",
+ "symbol": "LSL"
+ },
+ "LRD": {
+ "name": "Liberian Dollar",
+ "symbol": "LRD"
+ },
+ "LYD": {
+ "name": "Libyan Dinar",
+ "symbol": "LYD"
+ },
+ "LTL": {
+ "name": "Lithuanian Litas",
+ "symbol": "LTL"
+ },
+ "MOP": {
+ "name": "Macanese Pataca",
+ "symbol": "MOP"
+ },
+ "MKD": {
+ "name": "Macedonian Denar",
+ "symbol": "MKD"
+ },
+ "MGA": {
+ "name": "Malagasy Ariary",
+ "symbol": "MGA"
+ },
+ "MWK": {
+ "name": "Malawian Kwacha",
+ "symbol": "MWK"
+ },
+ "MYR": {
+ "name": "Malaysian Ringgit",
+ "symbol": "MYR"
+ },
+ "MVR": {
+ "name": "Maldivian Rufiyaa",
+ "symbol": "MVR"
+ },
+ "MRO": {
+ "name": "Mauritanian Ouguiya",
+ "symbol": "MRO"
+ },
+ "MUR": {
+ "name": "Mauritian Rupee",
+ "symbol": "MUR"
+ },
+ "MXN": {
+ "name": "Mexican Peso",
+ "symbol": "MX$"
+ },
+ "MDL": {
+ "name": "Moldovan Leu",
+ "symbol": "MDL"
+ },
+ "MNT": {
+ "name": "Mongolian Tugrik",
+ "symbol": "MNT"
+ },
+ "MAD": {
+ "name": "Moroccan Dirham",
+ "symbol": "MAD"
+ },
+ "MZN": {
+ "name": "Mozambican Metical",
+ "symbol": "MZN"
+ },
+ "MMK": {
+ "name": "Myanmar Kyat",
+ "symbol": "MMK"
+ },
+ "NAD": {
+ "name": "Namibian Dollar",
+ "symbol": "NAD"
+ },
+ "NPR": {
+ "name": "Nepalese Rupee",
+ "symbol": "NPR"
+ },
+ "ANG": {
+ "name": "Netherlands Antillean Guilder",
+ "symbol": "ANG"
+ },
+ "TWD": {
+ "name": "New Taiwan Dollar",
+ "symbol": "NT$"
+ },
+ "NZD": {
+ "name": "New Zealand Dollar",
+ "symbol": "NZ$"
+ },
+ "NIO": {
+ "name": "Nicaraguan Córdoba",
+ "symbol": "NIO"
+ },
+ "NGN": {
+ "name": "Nigerian Naira",
+ "symbol": "NGN"
+ },
+ "KPW": {
+ "name": "North Korean Won",
+ "symbol": "KPW"
+ },
+ "NOK": {
+ "name": "Norwegian Krone",
+ "symbol": "NOK"
+ },
+ "OMR": {
+ "name": "Omani Rial",
+ "symbol": "OMR"
+ },
+ "PKR": {
+ "name": "Pakistani Rupee",
+ "symbol": "PKR"
+ },
+ "PAB": {
+ "name": "Panamanian Balboa",
+ "symbol": "PAB"
+ },
+ "PGK": {
+ "name": "Papua New Guinean Kina",
+ "symbol": "PGK"
+ },
+ "PYG": {
+ "name": "Paraguayan Guarani",
+ "symbol": "PYG"
+ },
+ "PEN": {
+ "name": "Peruvian Nuevo Sol",
+ "symbol": "PEN"
+ },
+ "PHP": {
+ "name": "Philippine Peso",
+ "symbol": "PHP"
+ },
+ "PLN": {
+ "name": "Polish Zloty",
+ "symbol": "PLN"
+ },
+ "QAR": {
+ "name": "Qatari Rial",
+ "symbol": "QAR"
+ },
+ "RON": {
+ "name": "Romanian Leu",
+ "symbol": "RON"
+ },
+ "RUB": {
+ "name": "Russian Rouble",
+ "symbol": "RUB"
+ },
+ "RWF": {
+ "name": "Rwandan Franc",
+ "symbol": "RWF"
+ },
+ "SHP": {
+ "name": "Saint Helena Pound",
+ "symbol": "SHP"
+ },
+ "SVC": {
+ "name": "Salvadoran Colón",
+ "symbol": "SVC"
+ },
+ "WST": {
+ "name": "Samoan Tala",
+ "symbol": "WST"
+ },
+ "STD": {
+ "name": "São Tomé and Príncipe Dobra",
+ "symbol": "STD"
+ },
+ "SAR": {
+ "name": "Saudi Riyal",
+ "symbol": "SAR"
+ },
+ "RSD": {
+ "name": "Serbian Dinar",
+ "symbol": "RSD"
+ },
+ "SCR": {
+ "name": "Seychelles Rupee",
+ "symbol": "SCR"
+ },
+ "SLL": {
+ "name": "Sierra Leonean Leone",
+ "symbol": "SLL"
+ },
+ "SGD": {
+ "name": "Singapore Dollar",
+ "symbol": "SGD"
+ },
+ "SBD": {
+ "name": "Solomon Islands Dollar",
+ "symbol": "SBD"
+ },
+ "SOS": {
+ "name": "Somali Shilling",
+ "symbol": "SOS"
+ },
+ "ZAR": {
+ "name": "South African Rand",
+ "symbol": "ZAR"
+ },
+ "KRW": {
+ "name": "South Korean Won",
+ "symbol": "â‚©"
+ },
+ "SSP": {
+ "name": "South Sudanese Pound",
+ "symbol": "SSP"
+ },
+ "LKR": {
+ "name": "Sri Lankan Rupee",
+ "symbol": "LKR"
+ },
+ "SDG": {
+ "name": "Sudanese Pound",
+ "symbol": "SDG"
+ },
+ "SRD": {
+ "name": "Surinamese Dollar",
+ "symbol": "SRD"
+ },
+ "SZL": {
+ "name": "Swazi Lilangeni",
+ "symbol": "SZL"
+ },
+ "SEK": {
+ "name": "Swedish Krona",
+ "symbol": "SEK"
+ },
+ "CHF": {
+ "name": "Swiss Franc",
+ "symbol": "CHF"
+ },
+ "SYP": {
+ "name": "Syrian Pound",
+ "symbol": "SYP"
+ },
+ "TJS": {
+ "name": "Tajikistani Somoni",
+ "symbol": "TJS"
+ },
+ "TZS": {
+ "name": "Tanzanian Shilling",
+ "symbol": "TZS"
+ },
+ "THB": {
+ "name": "Thai Baht",
+ "symbol": "฿"
+ },
+ "TOP": {
+ "name": "Tongan Paʻanga",
+ "symbol": "TOP"
+ },
+ "TTD": {
+ "name": "Trinidad and Tobago Dollar",
+ "symbol": "TTD"
+ },
+ "TND": {
+ "name": "Tunisian Dinar",
+ "symbol": "TND"
+ },
+ "TRY": {
+ "name": "Turkish Lira",
+ "symbol": "TRY"
+ },
+ "TMT": {
+ "name": "Turkmenistani Manat",
+ "symbol": "TMT"
+ },
+ "UGX": {
+ "name": "Ugandan Shilling",
+ "symbol": "UGX"
+ },
+ "UAH": {
+ "name": "Ukrainian Hryvnia",
+ "symbol": "UAH"
+ },
+ "AED": {
+ "name": "United Arab Emirates Dirham",
+ "symbol": "AED"
+ },
+ "UYU": {
+ "name": "Uruguayan Peso",
+ "symbol": "UYU"
+ },
+ "USD": {
+ "name": "US Dollar",
+ "symbol": "US$"
+ },
+ "UZS": {
+ "name": "Uzbekistani Som",
+ "symbol": "UZS"
+ },
+ "VUV": {
+ "name": "Vanuatu Vatu",
+ "symbol": "VUV"
+ },
+ "VEF": {
+ "name": "Venezuelan Bolívar",
+ "symbol": "VEF"
+ },
+ "VND": {
+ "name": "Vietnamese Dong",
+ "symbol": "â‚«"
+ },
+ "XOF": {
+ "name": "West African CFA Franc",
+ "symbol": "CFA"
+ },
+ "YER": {
+ "name": "Yemeni Rial",
+ "symbol": "YER"
+ },
+ "ZMW": {
+ "name": "Zambian Kwacha",
+ "symbol": "ZMW"
+ },
+ "ZWL": {
+ "name": "Zimbabwean Dollar (2009)",
+ "symbol": "ZWL"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/currency/en-BE.json b/library/intl/resources/currency/en-BE.json
new file mode 100644
index 000000000..2dbdae5ca
--- /dev/null
+++ b/library/intl/resources/currency/en-BE.json
@@ -0,0 +1,634 @@
+{
+ "AFN": {
+ "name": "Afghan Afghani",
+ "symbol": "AFN"
+ },
+ "ALL": {
+ "name": "Albanian Lek",
+ "symbol": "ALL"
+ },
+ "DZD": {
+ "name": "Algerian Dinar",
+ "symbol": "DZD"
+ },
+ "AOA": {
+ "name": "Angolan Kwanza",
+ "symbol": "AOA"
+ },
+ "ARS": {
+ "name": "Argentine Peso",
+ "symbol": "ARS"
+ },
+ "AMD": {
+ "name": "Armenian Dram",
+ "symbol": "AMD"
+ },
+ "AWG": {
+ "name": "Aruban Florin",
+ "symbol": "AWG"
+ },
+ "AUD": {
+ "name": "Australian Dollar",
+ "symbol": "A$"
+ },
+ "AZN": {
+ "name": "Azerbaijani Manat",
+ "symbol": "AZN"
+ },
+ "BSD": {
+ "name": "Bahamian Dollar",
+ "symbol": "BSD"
+ },
+ "BHD": {
+ "name": "Bahraini Dinar",
+ "symbol": "BHD"
+ },
+ "BDT": {
+ "name": "Bangladeshi Taka",
+ "symbol": "BDT"
+ },
+ "BBD": {
+ "name": "Barbadian Dollar",
+ "symbol": "BBD"
+ },
+ "BYR": {
+ "name": "Belarusian Ruble",
+ "symbol": "BYR"
+ },
+ "BZD": {
+ "name": "Belize Dollar",
+ "symbol": "BZD"
+ },
+ "BMD": {
+ "name": "Bermudan Dollar",
+ "symbol": "BMD"
+ },
+ "BTN": {
+ "name": "Bhutanese Ngultrum",
+ "symbol": "BTN"
+ },
+ "BOB": {
+ "name": "Bolivian Boliviano",
+ "symbol": "BOB"
+ },
+ "BAM": {
+ "name": "Bosnia-Herzegovina Convertible Mark",
+ "symbol": "BAM"
+ },
+ "BWP": {
+ "name": "Botswanan Pula",
+ "symbol": "BWP"
+ },
+ "BRL": {
+ "name": "Brazilian Real",
+ "symbol": "R$"
+ },
+ "GBP": {
+ "name": "British Pound Sterling",
+ "symbol": "£"
+ },
+ "BND": {
+ "name": "Brunei Dollar",
+ "symbol": "BND"
+ },
+ "BGN": {
+ "name": "Bulgarian Lev",
+ "symbol": "BGN"
+ },
+ "BIF": {
+ "name": "Burundian Franc",
+ "symbol": "BIF"
+ },
+ "KHR": {
+ "name": "Cambodian Riel",
+ "symbol": "KHR"
+ },
+ "CAD": {
+ "name": "Canadian Dollar",
+ "symbol": "CA$"
+ },
+ "CVE": {
+ "name": "Cape Verdean Escudo",
+ "symbol": "CVE"
+ },
+ "KYD": {
+ "name": "Cayman Islands Dollar",
+ "symbol": "KYD"
+ },
+ "XOF": {
+ "name": "CFA Franc BCEAO",
+ "symbol": "CFA"
+ },
+ "XAF": {
+ "name": "CFA Franc BEAC",
+ "symbol": "FCFA"
+ },
+ "XPF": {
+ "name": "CFP Franc",
+ "symbol": "CFPF"
+ },
+ "CLP": {
+ "name": "Chilean Peso",
+ "symbol": "CLP"
+ },
+ "CNY": {
+ "name": "Chinese Yuan",
+ "symbol": "CNÂ¥"
+ },
+ "COP": {
+ "name": "Colombian Peso",
+ "symbol": "COP"
+ },
+ "KMF": {
+ "name": "Comorian Franc",
+ "symbol": "KMF"
+ },
+ "CDF": {
+ "name": "Congolese Franc",
+ "symbol": "CDF"
+ },
+ "CRC": {
+ "name": "Costa Rican Colón",
+ "symbol": "CRC"
+ },
+ "HRK": {
+ "name": "Croatian Kuna",
+ "symbol": "HRK"
+ },
+ "CUC": {
+ "name": "Cuban Convertible Peso",
+ "symbol": "CUC"
+ },
+ "CUP": {
+ "name": "Cuban Peso",
+ "symbol": "CUP"
+ },
+ "CZK": {
+ "name": "Czech Republic Koruna",
+ "symbol": "CZK"
+ },
+ "DKK": {
+ "name": "Danish Krone",
+ "symbol": "DKK"
+ },
+ "DJF": {
+ "name": "Djiboutian Franc",
+ "symbol": "DJF"
+ },
+ "DOP": {
+ "name": "Dominican Peso",
+ "symbol": "DOP"
+ },
+ "XCD": {
+ "name": "East Caribbean Dollar",
+ "symbol": "EC$"
+ },
+ "EGP": {
+ "name": "Egyptian Pound",
+ "symbol": "EGP"
+ },
+ "ERN": {
+ "name": "Eritrean Nakfa",
+ "symbol": "ERN"
+ },
+ "ETB": {
+ "name": "Ethiopian Birr",
+ "symbol": "ETB"
+ },
+ "EUR": {
+ "name": "Euro",
+ "symbol": "€"
+ },
+ "FKP": {
+ "name": "Falkland Islands Pound",
+ "symbol": "FKP"
+ },
+ "FJD": {
+ "name": "Fijian Dollar",
+ "symbol": "FJD"
+ },
+ "GMD": {
+ "name": "Gambian Dalasi",
+ "symbol": "GMD"
+ },
+ "GEL": {
+ "name": "Georgian Lari",
+ "symbol": "GEL"
+ },
+ "GHS": {
+ "name": "Ghanaian Cedi",
+ "symbol": "GHS"
+ },
+ "GIP": {
+ "name": "Gibraltar Pound",
+ "symbol": "GIP"
+ },
+ "GTQ": {
+ "name": "Guatemalan Quetzal",
+ "symbol": "GTQ"
+ },
+ "GNF": {
+ "name": "Guinean Franc",
+ "symbol": "GNF"
+ },
+ "GYD": {
+ "name": "Guyanaese Dollar",
+ "symbol": "GYD"
+ },
+ "HTG": {
+ "name": "Haitian Gourde",
+ "symbol": "HTG"
+ },
+ "HNL": {
+ "name": "Honduran Lempira",
+ "symbol": "HNL"
+ },
+ "HKD": {
+ "name": "Hong Kong Dollar",
+ "symbol": "HK$"
+ },
+ "HUF": {
+ "name": "Hungarian Forint",
+ "symbol": "HUF"
+ },
+ "ISK": {
+ "name": "Icelandic Króna",
+ "symbol": "ISK"
+ },
+ "INR": {
+ "name": "Indian Rupee",
+ "symbol": "₹"
+ },
+ "IDR": {
+ "name": "Indonesian Rupiah",
+ "symbol": "IDR"
+ },
+ "IRR": {
+ "name": "Iranian Rial",
+ "symbol": "IRR"
+ },
+ "IQD": {
+ "name": "Iraqi Dinar",
+ "symbol": "IQD"
+ },
+ "ILS": {
+ "name": "Israeli New Shekel",
+ "symbol": "₪"
+ },
+ "JMD": {
+ "name": "Jamaican Dollar",
+ "symbol": "JMD"
+ },
+ "JPY": {
+ "name": "Japanese Yen",
+ "symbol": "Â¥"
+ },
+ "JOD": {
+ "name": "Jordanian Dinar",
+ "symbol": "JOD"
+ },
+ "KZT": {
+ "name": "Kazakhstani Tenge",
+ "symbol": "KZT"
+ },
+ "KES": {
+ "name": "Kenyan Shilling",
+ "symbol": "KES"
+ },
+ "KWD": {
+ "name": "Kuwaiti Dinar",
+ "symbol": "KWD"
+ },
+ "KGS": {
+ "name": "Kyrgystani Som",
+ "symbol": "KGS"
+ },
+ "LAK": {
+ "name": "Laotian Kip",
+ "symbol": "LAK"
+ },
+ "LBP": {
+ "name": "Lebanese Pound",
+ "symbol": "LBP"
+ },
+ "LSL": {
+ "name": "Lesotho Loti",
+ "symbol": "LSL"
+ },
+ "LRD": {
+ "name": "Liberian Dollar",
+ "symbol": "LRD"
+ },
+ "LYD": {
+ "name": "Libyan Dinar",
+ "symbol": "LYD"
+ },
+ "LTL": {
+ "name": "Lithuanian Litas",
+ "symbol": "LTL"
+ },
+ "MOP": {
+ "name": "Macanese Pataca",
+ "symbol": "MOP"
+ },
+ "MKD": {
+ "name": "Macedonian Denar",
+ "symbol": "MKD"
+ },
+ "MGA": {
+ "name": "Malagasy Ariary",
+ "symbol": "MGA"
+ },
+ "MWK": {
+ "name": "Malawian Kwacha",
+ "symbol": "MWK"
+ },
+ "MYR": {
+ "name": "Malaysian Ringgit",
+ "symbol": "MYR"
+ },
+ "MVR": {
+ "name": "Maldivian Rufiyaa",
+ "symbol": "MVR"
+ },
+ "MRO": {
+ "name": "Mauritanian Ouguiya",
+ "symbol": "MRO"
+ },
+ "MUR": {
+ "name": "Mauritian Rupee",
+ "symbol": "MUR"
+ },
+ "MXN": {
+ "name": "Mexican Peso",
+ "symbol": "MX$"
+ },
+ "MDL": {
+ "name": "Moldovan Leu",
+ "symbol": "MDL"
+ },
+ "MNT": {
+ "name": "Mongolian Tugrik",
+ "symbol": "MNT"
+ },
+ "MAD": {
+ "name": "Moroccan Dirham",
+ "symbol": "MAD"
+ },
+ "MZN": {
+ "name": "Mozambican Metical",
+ "symbol": "MZN"
+ },
+ "MMK": {
+ "name": "Myanmar Kyat",
+ "symbol": "MMK"
+ },
+ "NAD": {
+ "name": "Namibian Dollar",
+ "symbol": "NAD"
+ },
+ "NPR": {
+ "name": "Nepalese Rupee",
+ "symbol": "NPR"
+ },
+ "ANG": {
+ "name": "Netherlands Antillean Guilder",
+ "symbol": "ANG"
+ },
+ "TWD": {
+ "name": "New Taiwan Dollar",
+ "symbol": "NT$"
+ },
+ "NZD": {
+ "name": "New Zealand Dollar",
+ "symbol": "NZ$"
+ },
+ "NIO": {
+ "name": "Nicaraguan Córdoba",
+ "symbol": "NIO"
+ },
+ "NGN": {
+ "name": "Nigerian Naira",
+ "symbol": "NGN"
+ },
+ "KPW": {
+ "name": "North Korean Won",
+ "symbol": "KPW"
+ },
+ "NOK": {
+ "name": "Norwegian Krone",
+ "symbol": "NOK"
+ },
+ "OMR": {
+ "name": "Omani Rial",
+ "symbol": "OMR"
+ },
+ "PKR": {
+ "name": "Pakistani Rupee",
+ "symbol": "PKR"
+ },
+ "PAB": {
+ "name": "Panamanian Balboa",
+ "symbol": "PAB"
+ },
+ "PGK": {
+ "name": "Papua New Guinean Kina",
+ "symbol": "PGK"
+ },
+ "PYG": {
+ "name": "Paraguayan Guarani",
+ "symbol": "PYG"
+ },
+ "PEN": {
+ "name": "Peruvian Nuevo Sol",
+ "symbol": "PEN"
+ },
+ "PHP": {
+ "name": "Philippine Peso",
+ "symbol": "PHP"
+ },
+ "PLN": {
+ "name": "Polish Zloty",
+ "symbol": "PLN"
+ },
+ "QAR": {
+ "name": "Qatari Rial",
+ "symbol": "QAR"
+ },
+ "RON": {
+ "name": "Romanian Leu",
+ "symbol": "RON"
+ },
+ "RUB": {
+ "name": "Russian Ruble",
+ "symbol": "RUB"
+ },
+ "RWF": {
+ "name": "Rwandan Franc",
+ "symbol": "RWF"
+ },
+ "SHP": {
+ "name": "Saint Helena Pound",
+ "symbol": "SHP"
+ },
+ "SVC": {
+ "name": "Salvadoran Colón",
+ "symbol": "SVC"
+ },
+ "WST": {
+ "name": "Samoan Tala",
+ "symbol": "WST"
+ },
+ "STD": {
+ "name": "São Tomé and Príncipe Dobra",
+ "symbol": "STD"
+ },
+ "SAR": {
+ "name": "Saudi Riyal",
+ "symbol": "SAR"
+ },
+ "RSD": {
+ "name": "Serbian Dinar",
+ "symbol": "RSD"
+ },
+ "SCR": {
+ "name": "Seychellois Rupee",
+ "symbol": "SCR"
+ },
+ "SLL": {
+ "name": "Sierra Leonean Leone",
+ "symbol": "SLL"
+ },
+ "SGD": {
+ "name": "Singapore Dollar",
+ "symbol": "SGD"
+ },
+ "SBD": {
+ "name": "Solomon Islands Dollar",
+ "symbol": "SBD"
+ },
+ "SOS": {
+ "name": "Somali Shilling",
+ "symbol": "SOS"
+ },
+ "ZAR": {
+ "name": "South African Rand",
+ "symbol": "ZAR"
+ },
+ "KRW": {
+ "name": "South Korean Won",
+ "symbol": "â‚©"
+ },
+ "SSP": {
+ "name": "South Sudanese Pound",
+ "symbol": "SSP"
+ },
+ "LKR": {
+ "name": "Sri Lankan Rupee",
+ "symbol": "LKR"
+ },
+ "SDG": {
+ "name": "Sudanese Pound",
+ "symbol": "SDG"
+ },
+ "SRD": {
+ "name": "Surinamese Dollar",
+ "symbol": "SRD"
+ },
+ "SZL": {
+ "name": "Swazi Lilangeni",
+ "symbol": "SZL"
+ },
+ "SEK": {
+ "name": "Swedish Krona",
+ "symbol": "SEK"
+ },
+ "CHF": {
+ "name": "Swiss Franc",
+ "symbol": "CHF"
+ },
+ "SYP": {
+ "name": "Syrian Pound",
+ "symbol": "SYP"
+ },
+ "TJS": {
+ "name": "Tajikistani Somoni",
+ "symbol": "TJS"
+ },
+ "TZS": {
+ "name": "Tanzanian Shilling",
+ "symbol": "TZS"
+ },
+ "THB": {
+ "name": "Thai Baht",
+ "symbol": "฿"
+ },
+ "TOP": {
+ "name": "Tongan Paʻanga",
+ "symbol": "TOP"
+ },
+ "TTD": {
+ "name": "Trinidad and Tobago Dollar",
+ "symbol": "TTD"
+ },
+ "TND": {
+ "name": "Tunisian Dinar",
+ "symbol": "TND"
+ },
+ "TRY": {
+ "name": "Turkish Lira",
+ "symbol": "TRY"
+ },
+ "TMT": {
+ "name": "Turkmenistani Manat",
+ "symbol": "TMT"
+ },
+ "UGX": {
+ "name": "Ugandan Shilling",
+ "symbol": "UGX"
+ },
+ "UAH": {
+ "name": "Ukrainian Hryvnia",
+ "symbol": "UAH"
+ },
+ "AED": {
+ "name": "United Arab Emirates Dirham",
+ "symbol": "AED"
+ },
+ "UYU": {
+ "name": "Uruguayan Peso",
+ "symbol": "UYU"
+ },
+ "USD": {
+ "name": "US Dollar",
+ "symbol": "US$"
+ },
+ "UZS": {
+ "name": "Uzbekistan Som",
+ "symbol": "UZS"
+ },
+ "VUV": {
+ "name": "Vanuatu Vatu",
+ "symbol": "VUV"
+ },
+ "VEF": {
+ "name": "Venezuelan Bolívar",
+ "symbol": "VEF"
+ },
+ "VND": {
+ "name": "Vietnamese Dong",
+ "symbol": "â‚«"
+ },
+ "YER": {
+ "name": "Yemeni Rial",
+ "symbol": "YER"
+ },
+ "ZMW": {
+ "name": "Zambian Kwacha",
+ "symbol": "ZMW"
+ },
+ "ZWL": {
+ "name": "Zimbabwean Dollar (2009)",
+ "symbol": "ZWL"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/currency/en-DG.json b/library/intl/resources/currency/en-DG.json
new file mode 100644
index 000000000..2dbdae5ca
--- /dev/null
+++ b/library/intl/resources/currency/en-DG.json
@@ -0,0 +1,634 @@
+{
+ "AFN": {
+ "name": "Afghan Afghani",
+ "symbol": "AFN"
+ },
+ "ALL": {
+ "name": "Albanian Lek",
+ "symbol": "ALL"
+ },
+ "DZD": {
+ "name": "Algerian Dinar",
+ "symbol": "DZD"
+ },
+ "AOA": {
+ "name": "Angolan Kwanza",
+ "symbol": "AOA"
+ },
+ "ARS": {
+ "name": "Argentine Peso",
+ "symbol": "ARS"
+ },
+ "AMD": {
+ "name": "Armenian Dram",
+ "symbol": "AMD"
+ },
+ "AWG": {
+ "name": "Aruban Florin",
+ "symbol": "AWG"
+ },
+ "AUD": {
+ "name": "Australian Dollar",
+ "symbol": "A$"
+ },
+ "AZN": {
+ "name": "Azerbaijani Manat",
+ "symbol": "AZN"
+ },
+ "BSD": {
+ "name": "Bahamian Dollar",
+ "symbol": "BSD"
+ },
+ "BHD": {
+ "name": "Bahraini Dinar",
+ "symbol": "BHD"
+ },
+ "BDT": {
+ "name": "Bangladeshi Taka",
+ "symbol": "BDT"
+ },
+ "BBD": {
+ "name": "Barbadian Dollar",
+ "symbol": "BBD"
+ },
+ "BYR": {
+ "name": "Belarusian Ruble",
+ "symbol": "BYR"
+ },
+ "BZD": {
+ "name": "Belize Dollar",
+ "symbol": "BZD"
+ },
+ "BMD": {
+ "name": "Bermudan Dollar",
+ "symbol": "BMD"
+ },
+ "BTN": {
+ "name": "Bhutanese Ngultrum",
+ "symbol": "BTN"
+ },
+ "BOB": {
+ "name": "Bolivian Boliviano",
+ "symbol": "BOB"
+ },
+ "BAM": {
+ "name": "Bosnia-Herzegovina Convertible Mark",
+ "symbol": "BAM"
+ },
+ "BWP": {
+ "name": "Botswanan Pula",
+ "symbol": "BWP"
+ },
+ "BRL": {
+ "name": "Brazilian Real",
+ "symbol": "R$"
+ },
+ "GBP": {
+ "name": "British Pound Sterling",
+ "symbol": "£"
+ },
+ "BND": {
+ "name": "Brunei Dollar",
+ "symbol": "BND"
+ },
+ "BGN": {
+ "name": "Bulgarian Lev",
+ "symbol": "BGN"
+ },
+ "BIF": {
+ "name": "Burundian Franc",
+ "symbol": "BIF"
+ },
+ "KHR": {
+ "name": "Cambodian Riel",
+ "symbol": "KHR"
+ },
+ "CAD": {
+ "name": "Canadian Dollar",
+ "symbol": "CA$"
+ },
+ "CVE": {
+ "name": "Cape Verdean Escudo",
+ "symbol": "CVE"
+ },
+ "KYD": {
+ "name": "Cayman Islands Dollar",
+ "symbol": "KYD"
+ },
+ "XOF": {
+ "name": "CFA Franc BCEAO",
+ "symbol": "CFA"
+ },
+ "XAF": {
+ "name": "CFA Franc BEAC",
+ "symbol": "FCFA"
+ },
+ "XPF": {
+ "name": "CFP Franc",
+ "symbol": "CFPF"
+ },
+ "CLP": {
+ "name": "Chilean Peso",
+ "symbol": "CLP"
+ },
+ "CNY": {
+ "name": "Chinese Yuan",
+ "symbol": "CNÂ¥"
+ },
+ "COP": {
+ "name": "Colombian Peso",
+ "symbol": "COP"
+ },
+ "KMF": {
+ "name": "Comorian Franc",
+ "symbol": "KMF"
+ },
+ "CDF": {
+ "name": "Congolese Franc",
+ "symbol": "CDF"
+ },
+ "CRC": {
+ "name": "Costa Rican Colón",
+ "symbol": "CRC"
+ },
+ "HRK": {
+ "name": "Croatian Kuna",
+ "symbol": "HRK"
+ },
+ "CUC": {
+ "name": "Cuban Convertible Peso",
+ "symbol": "CUC"
+ },
+ "CUP": {
+ "name": "Cuban Peso",
+ "symbol": "CUP"
+ },
+ "CZK": {
+ "name": "Czech Republic Koruna",
+ "symbol": "CZK"
+ },
+ "DKK": {
+ "name": "Danish Krone",
+ "symbol": "DKK"
+ },
+ "DJF": {
+ "name": "Djiboutian Franc",
+ "symbol": "DJF"
+ },
+ "DOP": {
+ "name": "Dominican Peso",
+ "symbol": "DOP"
+ },
+ "XCD": {
+ "name": "East Caribbean Dollar",
+ "symbol": "EC$"
+ },
+ "EGP": {
+ "name": "Egyptian Pound",
+ "symbol": "EGP"
+ },
+ "ERN": {
+ "name": "Eritrean Nakfa",
+ "symbol": "ERN"
+ },
+ "ETB": {
+ "name": "Ethiopian Birr",
+ "symbol": "ETB"
+ },
+ "EUR": {
+ "name": "Euro",
+ "symbol": "€"
+ },
+ "FKP": {
+ "name": "Falkland Islands Pound",
+ "symbol": "FKP"
+ },
+ "FJD": {
+ "name": "Fijian Dollar",
+ "symbol": "FJD"
+ },
+ "GMD": {
+ "name": "Gambian Dalasi",
+ "symbol": "GMD"
+ },
+ "GEL": {
+ "name": "Georgian Lari",
+ "symbol": "GEL"
+ },
+ "GHS": {
+ "name": "Ghanaian Cedi",
+ "symbol": "GHS"
+ },
+ "GIP": {
+ "name": "Gibraltar Pound",
+ "symbol": "GIP"
+ },
+ "GTQ": {
+ "name": "Guatemalan Quetzal",
+ "symbol": "GTQ"
+ },
+ "GNF": {
+ "name": "Guinean Franc",
+ "symbol": "GNF"
+ },
+ "GYD": {
+ "name": "Guyanaese Dollar",
+ "symbol": "GYD"
+ },
+ "HTG": {
+ "name": "Haitian Gourde",
+ "symbol": "HTG"
+ },
+ "HNL": {
+ "name": "Honduran Lempira",
+ "symbol": "HNL"
+ },
+ "HKD": {
+ "name": "Hong Kong Dollar",
+ "symbol": "HK$"
+ },
+ "HUF": {
+ "name": "Hungarian Forint",
+ "symbol": "HUF"
+ },
+ "ISK": {
+ "name": "Icelandic Króna",
+ "symbol": "ISK"
+ },
+ "INR": {
+ "name": "Indian Rupee",
+ "symbol": "₹"
+ },
+ "IDR": {
+ "name": "Indonesian Rupiah",
+ "symbol": "IDR"
+ },
+ "IRR": {
+ "name": "Iranian Rial",
+ "symbol": "IRR"
+ },
+ "IQD": {
+ "name": "Iraqi Dinar",
+ "symbol": "IQD"
+ },
+ "ILS": {
+ "name": "Israeli New Shekel",
+ "symbol": "₪"
+ },
+ "JMD": {
+ "name": "Jamaican Dollar",
+ "symbol": "JMD"
+ },
+ "JPY": {
+ "name": "Japanese Yen",
+ "symbol": "Â¥"
+ },
+ "JOD": {
+ "name": "Jordanian Dinar",
+ "symbol": "JOD"
+ },
+ "KZT": {
+ "name": "Kazakhstani Tenge",
+ "symbol": "KZT"
+ },
+ "KES": {
+ "name": "Kenyan Shilling",
+ "symbol": "KES"
+ },
+ "KWD": {
+ "name": "Kuwaiti Dinar",
+ "symbol": "KWD"
+ },
+ "KGS": {
+ "name": "Kyrgystani Som",
+ "symbol": "KGS"
+ },
+ "LAK": {
+ "name": "Laotian Kip",
+ "symbol": "LAK"
+ },
+ "LBP": {
+ "name": "Lebanese Pound",
+ "symbol": "LBP"
+ },
+ "LSL": {
+ "name": "Lesotho Loti",
+ "symbol": "LSL"
+ },
+ "LRD": {
+ "name": "Liberian Dollar",
+ "symbol": "LRD"
+ },
+ "LYD": {
+ "name": "Libyan Dinar",
+ "symbol": "LYD"
+ },
+ "LTL": {
+ "name": "Lithuanian Litas",
+ "symbol": "LTL"
+ },
+ "MOP": {
+ "name": "Macanese Pataca",
+ "symbol": "MOP"
+ },
+ "MKD": {
+ "name": "Macedonian Denar",
+ "symbol": "MKD"
+ },
+ "MGA": {
+ "name": "Malagasy Ariary",
+ "symbol": "MGA"
+ },
+ "MWK": {
+ "name": "Malawian Kwacha",
+ "symbol": "MWK"
+ },
+ "MYR": {
+ "name": "Malaysian Ringgit",
+ "symbol": "MYR"
+ },
+ "MVR": {
+ "name": "Maldivian Rufiyaa",
+ "symbol": "MVR"
+ },
+ "MRO": {
+ "name": "Mauritanian Ouguiya",
+ "symbol": "MRO"
+ },
+ "MUR": {
+ "name": "Mauritian Rupee",
+ "symbol": "MUR"
+ },
+ "MXN": {
+ "name": "Mexican Peso",
+ "symbol": "MX$"
+ },
+ "MDL": {
+ "name": "Moldovan Leu",
+ "symbol": "MDL"
+ },
+ "MNT": {
+ "name": "Mongolian Tugrik",
+ "symbol": "MNT"
+ },
+ "MAD": {
+ "name": "Moroccan Dirham",
+ "symbol": "MAD"
+ },
+ "MZN": {
+ "name": "Mozambican Metical",
+ "symbol": "MZN"
+ },
+ "MMK": {
+ "name": "Myanmar Kyat",
+ "symbol": "MMK"
+ },
+ "NAD": {
+ "name": "Namibian Dollar",
+ "symbol": "NAD"
+ },
+ "NPR": {
+ "name": "Nepalese Rupee",
+ "symbol": "NPR"
+ },
+ "ANG": {
+ "name": "Netherlands Antillean Guilder",
+ "symbol": "ANG"
+ },
+ "TWD": {
+ "name": "New Taiwan Dollar",
+ "symbol": "NT$"
+ },
+ "NZD": {
+ "name": "New Zealand Dollar",
+ "symbol": "NZ$"
+ },
+ "NIO": {
+ "name": "Nicaraguan Córdoba",
+ "symbol": "NIO"
+ },
+ "NGN": {
+ "name": "Nigerian Naira",
+ "symbol": "NGN"
+ },
+ "KPW": {
+ "name": "North Korean Won",
+ "symbol": "KPW"
+ },
+ "NOK": {
+ "name": "Norwegian Krone",
+ "symbol": "NOK"
+ },
+ "OMR": {
+ "name": "Omani Rial",
+ "symbol": "OMR"
+ },
+ "PKR": {
+ "name": "Pakistani Rupee",
+ "symbol": "PKR"
+ },
+ "PAB": {
+ "name": "Panamanian Balboa",
+ "symbol": "PAB"
+ },
+ "PGK": {
+ "name": "Papua New Guinean Kina",
+ "symbol": "PGK"
+ },
+ "PYG": {
+ "name": "Paraguayan Guarani",
+ "symbol": "PYG"
+ },
+ "PEN": {
+ "name": "Peruvian Nuevo Sol",
+ "symbol": "PEN"
+ },
+ "PHP": {
+ "name": "Philippine Peso",
+ "symbol": "PHP"
+ },
+ "PLN": {
+ "name": "Polish Zloty",
+ "symbol": "PLN"
+ },
+ "QAR": {
+ "name": "Qatari Rial",
+ "symbol": "QAR"
+ },
+ "RON": {
+ "name": "Romanian Leu",
+ "symbol": "RON"
+ },
+ "RUB": {
+ "name": "Russian Ruble",
+ "symbol": "RUB"
+ },
+ "RWF": {
+ "name": "Rwandan Franc",
+ "symbol": "RWF"
+ },
+ "SHP": {
+ "name": "Saint Helena Pound",
+ "symbol": "SHP"
+ },
+ "SVC": {
+ "name": "Salvadoran Colón",
+ "symbol": "SVC"
+ },
+ "WST": {
+ "name": "Samoan Tala",
+ "symbol": "WST"
+ },
+ "STD": {
+ "name": "São Tomé and Príncipe Dobra",
+ "symbol": "STD"
+ },
+ "SAR": {
+ "name": "Saudi Riyal",
+ "symbol": "SAR"
+ },
+ "RSD": {
+ "name": "Serbian Dinar",
+ "symbol": "RSD"
+ },
+ "SCR": {
+ "name": "Seychellois Rupee",
+ "symbol": "SCR"
+ },
+ "SLL": {
+ "name": "Sierra Leonean Leone",
+ "symbol": "SLL"
+ },
+ "SGD": {
+ "name": "Singapore Dollar",
+ "symbol": "SGD"
+ },
+ "SBD": {
+ "name": "Solomon Islands Dollar",
+ "symbol": "SBD"
+ },
+ "SOS": {
+ "name": "Somali Shilling",
+ "symbol": "SOS"
+ },
+ "ZAR": {
+ "name": "South African Rand",
+ "symbol": "ZAR"
+ },
+ "KRW": {
+ "name": "South Korean Won",
+ "symbol": "â‚©"
+ },
+ "SSP": {
+ "name": "South Sudanese Pound",
+ "symbol": "SSP"
+ },
+ "LKR": {
+ "name": "Sri Lankan Rupee",
+ "symbol": "LKR"
+ },
+ "SDG": {
+ "name": "Sudanese Pound",
+ "symbol": "SDG"
+ },
+ "SRD": {
+ "name": "Surinamese Dollar",
+ "symbol": "SRD"
+ },
+ "SZL": {
+ "name": "Swazi Lilangeni",
+ "symbol": "SZL"
+ },
+ "SEK": {
+ "name": "Swedish Krona",
+ "symbol": "SEK"
+ },
+ "CHF": {
+ "name": "Swiss Franc",
+ "symbol": "CHF"
+ },
+ "SYP": {
+ "name": "Syrian Pound",
+ "symbol": "SYP"
+ },
+ "TJS": {
+ "name": "Tajikistani Somoni",
+ "symbol": "TJS"
+ },
+ "TZS": {
+ "name": "Tanzanian Shilling",
+ "symbol": "TZS"
+ },
+ "THB": {
+ "name": "Thai Baht",
+ "symbol": "฿"
+ },
+ "TOP": {
+ "name": "Tongan Paʻanga",
+ "symbol": "TOP"
+ },
+ "TTD": {
+ "name": "Trinidad and Tobago Dollar",
+ "symbol": "TTD"
+ },
+ "TND": {
+ "name": "Tunisian Dinar",
+ "symbol": "TND"
+ },
+ "TRY": {
+ "name": "Turkish Lira",
+ "symbol": "TRY"
+ },
+ "TMT": {
+ "name": "Turkmenistani Manat",
+ "symbol": "TMT"
+ },
+ "UGX": {
+ "name": "Ugandan Shilling",
+ "symbol": "UGX"
+ },
+ "UAH": {
+ "name": "Ukrainian Hryvnia",
+ "symbol": "UAH"
+ },
+ "AED": {
+ "name": "United Arab Emirates Dirham",
+ "symbol": "AED"
+ },
+ "UYU": {
+ "name": "Uruguayan Peso",
+ "symbol": "UYU"
+ },
+ "USD": {
+ "name": "US Dollar",
+ "symbol": "US$"
+ },
+ "UZS": {
+ "name": "Uzbekistan Som",
+ "symbol": "UZS"
+ },
+ "VUV": {
+ "name": "Vanuatu Vatu",
+ "symbol": "VUV"
+ },
+ "VEF": {
+ "name": "Venezuelan Bolívar",
+ "symbol": "VEF"
+ },
+ "VND": {
+ "name": "Vietnamese Dong",
+ "symbol": "â‚«"
+ },
+ "YER": {
+ "name": "Yemeni Rial",
+ "symbol": "YER"
+ },
+ "ZMW": {
+ "name": "Zambian Kwacha",
+ "symbol": "ZMW"
+ },
+ "ZWL": {
+ "name": "Zimbabwean Dollar (2009)",
+ "symbol": "ZWL"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/currency/en-FK.json b/library/intl/resources/currency/en-FK.json
new file mode 100644
index 000000000..23aeb894e
--- /dev/null
+++ b/library/intl/resources/currency/en-FK.json
@@ -0,0 +1,634 @@
+{
+ "AFN": {
+ "name": "Afghan Afghani",
+ "symbol": "AFN"
+ },
+ "ALL": {
+ "name": "Albanian Lek",
+ "symbol": "ALL"
+ },
+ "DZD": {
+ "name": "Algerian Dinar",
+ "symbol": "DZD"
+ },
+ "AOA": {
+ "name": "Angolan Kwanza",
+ "symbol": "AOA"
+ },
+ "ARS": {
+ "name": "Argentine Peso",
+ "symbol": "ARS"
+ },
+ "AMD": {
+ "name": "Armenian Dram",
+ "symbol": "AMD"
+ },
+ "AWG": {
+ "name": "Aruban Florin",
+ "symbol": "AWG"
+ },
+ "AUD": {
+ "name": "Australian Dollar",
+ "symbol": "A$"
+ },
+ "AZN": {
+ "name": "Azerbaijani Manat",
+ "symbol": "AZN"
+ },
+ "BSD": {
+ "name": "Bahamian Dollar",
+ "symbol": "BSD"
+ },
+ "BHD": {
+ "name": "Bahraini Dinar",
+ "symbol": "BHD"
+ },
+ "BDT": {
+ "name": "Bangladeshi Taka",
+ "symbol": "BDT"
+ },
+ "BBD": {
+ "name": "Barbadian Dollar",
+ "symbol": "BBD"
+ },
+ "BYR": {
+ "name": "Belarusian Ruble",
+ "symbol": "BYR"
+ },
+ "BZD": {
+ "name": "Belize Dollar",
+ "symbol": "BZD"
+ },
+ "BMD": {
+ "name": "Bermudan Dollar",
+ "symbol": "BMD"
+ },
+ "BTN": {
+ "name": "Bhutanese Ngultrum",
+ "symbol": "BTN"
+ },
+ "BOB": {
+ "name": "Bolivian Boliviano",
+ "symbol": "BOB"
+ },
+ "BAM": {
+ "name": "Bosnia-Herzegovina Convertible Mark",
+ "symbol": "BAM"
+ },
+ "BWP": {
+ "name": "Botswanan Pula",
+ "symbol": "BWP"
+ },
+ "BRL": {
+ "name": "Brazilian Real",
+ "symbol": "R$"
+ },
+ "GBP": {
+ "name": "British Pound Sterling",
+ "symbol": "GB£"
+ },
+ "BND": {
+ "name": "Brunei Dollar",
+ "symbol": "BND"
+ },
+ "BGN": {
+ "name": "Bulgarian Lev",
+ "symbol": "BGN"
+ },
+ "BIF": {
+ "name": "Burundian Franc",
+ "symbol": "BIF"
+ },
+ "KHR": {
+ "name": "Cambodian Riel",
+ "symbol": "KHR"
+ },
+ "CAD": {
+ "name": "Canadian Dollar",
+ "symbol": "CA$"
+ },
+ "CVE": {
+ "name": "Cape Verdean Escudo",
+ "symbol": "CVE"
+ },
+ "KYD": {
+ "name": "Cayman Islands Dollar",
+ "symbol": "KYD"
+ },
+ "XOF": {
+ "name": "CFA Franc BCEAO",
+ "symbol": "CFA"
+ },
+ "XAF": {
+ "name": "CFA Franc BEAC",
+ "symbol": "FCFA"
+ },
+ "XPF": {
+ "name": "CFP Franc",
+ "symbol": "CFPF"
+ },
+ "CLP": {
+ "name": "Chilean Peso",
+ "symbol": "CLP"
+ },
+ "CNY": {
+ "name": "Chinese Yuan",
+ "symbol": "CNÂ¥"
+ },
+ "COP": {
+ "name": "Colombian Peso",
+ "symbol": "COP"
+ },
+ "KMF": {
+ "name": "Comorian Franc",
+ "symbol": "KMF"
+ },
+ "CDF": {
+ "name": "Congolese Franc",
+ "symbol": "CDF"
+ },
+ "CRC": {
+ "name": "Costa Rican Colón",
+ "symbol": "CRC"
+ },
+ "HRK": {
+ "name": "Croatian Kuna",
+ "symbol": "HRK"
+ },
+ "CUC": {
+ "name": "Cuban Convertible Peso",
+ "symbol": "CUC"
+ },
+ "CUP": {
+ "name": "Cuban Peso",
+ "symbol": "CUP"
+ },
+ "CZK": {
+ "name": "Czech Republic Koruna",
+ "symbol": "CZK"
+ },
+ "DKK": {
+ "name": "Danish Krone",
+ "symbol": "DKK"
+ },
+ "DJF": {
+ "name": "Djiboutian Franc",
+ "symbol": "DJF"
+ },
+ "DOP": {
+ "name": "Dominican Peso",
+ "symbol": "DOP"
+ },
+ "XCD": {
+ "name": "East Caribbean Dollar",
+ "symbol": "EC$"
+ },
+ "EGP": {
+ "name": "Egyptian Pound",
+ "symbol": "EGP"
+ },
+ "ERN": {
+ "name": "Eritrean Nakfa",
+ "symbol": "ERN"
+ },
+ "ETB": {
+ "name": "Ethiopian Birr",
+ "symbol": "ETB"
+ },
+ "EUR": {
+ "name": "Euro",
+ "symbol": "€"
+ },
+ "FKP": {
+ "name": "Falkland Islands Pound",
+ "symbol": "£"
+ },
+ "FJD": {
+ "name": "Fijian Dollar",
+ "symbol": "FJD"
+ },
+ "GMD": {
+ "name": "Gambian Dalasi",
+ "symbol": "GMD"
+ },
+ "GEL": {
+ "name": "Georgian Lari",
+ "symbol": "GEL"
+ },
+ "GHS": {
+ "name": "Ghanaian Cedi",
+ "symbol": "GHS"
+ },
+ "GIP": {
+ "name": "Gibraltar Pound",
+ "symbol": "GIP"
+ },
+ "GTQ": {
+ "name": "Guatemalan Quetzal",
+ "symbol": "GTQ"
+ },
+ "GNF": {
+ "name": "Guinean Franc",
+ "symbol": "GNF"
+ },
+ "GYD": {
+ "name": "Guyanaese Dollar",
+ "symbol": "GYD"
+ },
+ "HTG": {
+ "name": "Haitian Gourde",
+ "symbol": "HTG"
+ },
+ "HNL": {
+ "name": "Honduran Lempira",
+ "symbol": "HNL"
+ },
+ "HKD": {
+ "name": "Hong Kong Dollar",
+ "symbol": "HK$"
+ },
+ "HUF": {
+ "name": "Hungarian Forint",
+ "symbol": "HUF"
+ },
+ "ISK": {
+ "name": "Icelandic Króna",
+ "symbol": "ISK"
+ },
+ "INR": {
+ "name": "Indian Rupee",
+ "symbol": "₹"
+ },
+ "IDR": {
+ "name": "Indonesian Rupiah",
+ "symbol": "IDR"
+ },
+ "IRR": {
+ "name": "Iranian Rial",
+ "symbol": "IRR"
+ },
+ "IQD": {
+ "name": "Iraqi Dinar",
+ "symbol": "IQD"
+ },
+ "ILS": {
+ "name": "Israeli New Shekel",
+ "symbol": "₪"
+ },
+ "JMD": {
+ "name": "Jamaican Dollar",
+ "symbol": "JMD"
+ },
+ "JPY": {
+ "name": "Japanese Yen",
+ "symbol": "Â¥"
+ },
+ "JOD": {
+ "name": "Jordanian Dinar",
+ "symbol": "JOD"
+ },
+ "KZT": {
+ "name": "Kazakhstani Tenge",
+ "symbol": "KZT"
+ },
+ "KES": {
+ "name": "Kenyan Shilling",
+ "symbol": "KES"
+ },
+ "KWD": {
+ "name": "Kuwaiti Dinar",
+ "symbol": "KWD"
+ },
+ "KGS": {
+ "name": "Kyrgystani Som",
+ "symbol": "KGS"
+ },
+ "LAK": {
+ "name": "Laotian Kip",
+ "symbol": "LAK"
+ },
+ "LBP": {
+ "name": "Lebanese Pound",
+ "symbol": "LBP"
+ },
+ "LSL": {
+ "name": "Lesotho Loti",
+ "symbol": "LSL"
+ },
+ "LRD": {
+ "name": "Liberian Dollar",
+ "symbol": "LRD"
+ },
+ "LYD": {
+ "name": "Libyan Dinar",
+ "symbol": "LYD"
+ },
+ "LTL": {
+ "name": "Lithuanian Litas",
+ "symbol": "LTL"
+ },
+ "MOP": {
+ "name": "Macanese Pataca",
+ "symbol": "MOP"
+ },
+ "MKD": {
+ "name": "Macedonian Denar",
+ "symbol": "MKD"
+ },
+ "MGA": {
+ "name": "Malagasy Ariary",
+ "symbol": "MGA"
+ },
+ "MWK": {
+ "name": "Malawian Kwacha",
+ "symbol": "MWK"
+ },
+ "MYR": {
+ "name": "Malaysian Ringgit",
+ "symbol": "MYR"
+ },
+ "MVR": {
+ "name": "Maldivian Rufiyaa",
+ "symbol": "MVR"
+ },
+ "MRO": {
+ "name": "Mauritanian Ouguiya",
+ "symbol": "MRO"
+ },
+ "MUR": {
+ "name": "Mauritian Rupee",
+ "symbol": "MUR"
+ },
+ "MXN": {
+ "name": "Mexican Peso",
+ "symbol": "MX$"
+ },
+ "MDL": {
+ "name": "Moldovan Leu",
+ "symbol": "MDL"
+ },
+ "MNT": {
+ "name": "Mongolian Tugrik",
+ "symbol": "MNT"
+ },
+ "MAD": {
+ "name": "Moroccan Dirham",
+ "symbol": "MAD"
+ },
+ "MZN": {
+ "name": "Mozambican Metical",
+ "symbol": "MZN"
+ },
+ "MMK": {
+ "name": "Myanmar Kyat",
+ "symbol": "MMK"
+ },
+ "NAD": {
+ "name": "Namibian Dollar",
+ "symbol": "NAD"
+ },
+ "NPR": {
+ "name": "Nepalese Rupee",
+ "symbol": "NPR"
+ },
+ "ANG": {
+ "name": "Netherlands Antillean Guilder",
+ "symbol": "ANG"
+ },
+ "TWD": {
+ "name": "New Taiwan Dollar",
+ "symbol": "NT$"
+ },
+ "NZD": {
+ "name": "New Zealand Dollar",
+ "symbol": "NZ$"
+ },
+ "NIO": {
+ "name": "Nicaraguan Córdoba",
+ "symbol": "NIO"
+ },
+ "NGN": {
+ "name": "Nigerian Naira",
+ "symbol": "NGN"
+ },
+ "KPW": {
+ "name": "North Korean Won",
+ "symbol": "KPW"
+ },
+ "NOK": {
+ "name": "Norwegian Krone",
+ "symbol": "NOK"
+ },
+ "OMR": {
+ "name": "Omani Rial",
+ "symbol": "OMR"
+ },
+ "PKR": {
+ "name": "Pakistani Rupee",
+ "symbol": "PKR"
+ },
+ "PAB": {
+ "name": "Panamanian Balboa",
+ "symbol": "PAB"
+ },
+ "PGK": {
+ "name": "Papua New Guinean Kina",
+ "symbol": "PGK"
+ },
+ "PYG": {
+ "name": "Paraguayan Guarani",
+ "symbol": "PYG"
+ },
+ "PEN": {
+ "name": "Peruvian Nuevo Sol",
+ "symbol": "PEN"
+ },
+ "PHP": {
+ "name": "Philippine Peso",
+ "symbol": "PHP"
+ },
+ "PLN": {
+ "name": "Polish Zloty",
+ "symbol": "PLN"
+ },
+ "QAR": {
+ "name": "Qatari Rial",
+ "symbol": "QAR"
+ },
+ "RON": {
+ "name": "Romanian Leu",
+ "symbol": "RON"
+ },
+ "RUB": {
+ "name": "Russian Ruble",
+ "symbol": "RUB"
+ },
+ "RWF": {
+ "name": "Rwandan Franc",
+ "symbol": "RWF"
+ },
+ "SHP": {
+ "name": "Saint Helena Pound",
+ "symbol": "SHP"
+ },
+ "SVC": {
+ "name": "Salvadoran Colón",
+ "symbol": "SVC"
+ },
+ "WST": {
+ "name": "Samoan Tala",
+ "symbol": "WST"
+ },
+ "STD": {
+ "name": "São Tomé and Príncipe Dobra",
+ "symbol": "STD"
+ },
+ "SAR": {
+ "name": "Saudi Riyal",
+ "symbol": "SAR"
+ },
+ "RSD": {
+ "name": "Serbian Dinar",
+ "symbol": "RSD"
+ },
+ "SCR": {
+ "name": "Seychellois Rupee",
+ "symbol": "SCR"
+ },
+ "SLL": {
+ "name": "Sierra Leonean Leone",
+ "symbol": "SLL"
+ },
+ "SGD": {
+ "name": "Singapore Dollar",
+ "symbol": "SGD"
+ },
+ "SBD": {
+ "name": "Solomon Islands Dollar",
+ "symbol": "SBD"
+ },
+ "SOS": {
+ "name": "Somali Shilling",
+ "symbol": "SOS"
+ },
+ "ZAR": {
+ "name": "South African Rand",
+ "symbol": "ZAR"
+ },
+ "KRW": {
+ "name": "South Korean Won",
+ "symbol": "â‚©"
+ },
+ "SSP": {
+ "name": "South Sudanese Pound",
+ "symbol": "SSP"
+ },
+ "LKR": {
+ "name": "Sri Lankan Rupee",
+ "symbol": "LKR"
+ },
+ "SDG": {
+ "name": "Sudanese Pound",
+ "symbol": "SDG"
+ },
+ "SRD": {
+ "name": "Surinamese Dollar",
+ "symbol": "SRD"
+ },
+ "SZL": {
+ "name": "Swazi Lilangeni",
+ "symbol": "SZL"
+ },
+ "SEK": {
+ "name": "Swedish Krona",
+ "symbol": "SEK"
+ },
+ "CHF": {
+ "name": "Swiss Franc",
+ "symbol": "CHF"
+ },
+ "SYP": {
+ "name": "Syrian Pound",
+ "symbol": "SYP"
+ },
+ "TJS": {
+ "name": "Tajikistani Somoni",
+ "symbol": "TJS"
+ },
+ "TZS": {
+ "name": "Tanzanian Shilling",
+ "symbol": "TZS"
+ },
+ "THB": {
+ "name": "Thai Baht",
+ "symbol": "฿"
+ },
+ "TOP": {
+ "name": "Tongan Paʻanga",
+ "symbol": "TOP"
+ },
+ "TTD": {
+ "name": "Trinidad and Tobago Dollar",
+ "symbol": "TTD"
+ },
+ "TND": {
+ "name": "Tunisian Dinar",
+ "symbol": "TND"
+ },
+ "TRY": {
+ "name": "Turkish Lira",
+ "symbol": "TRY"
+ },
+ "TMT": {
+ "name": "Turkmenistani Manat",
+ "symbol": "TMT"
+ },
+ "UGX": {
+ "name": "Ugandan Shilling",
+ "symbol": "UGX"
+ },
+ "UAH": {
+ "name": "Ukrainian Hryvnia",
+ "symbol": "UAH"
+ },
+ "AED": {
+ "name": "United Arab Emirates Dirham",
+ "symbol": "AED"
+ },
+ "UYU": {
+ "name": "Uruguayan Peso",
+ "symbol": "UYU"
+ },
+ "USD": {
+ "name": "US Dollar",
+ "symbol": "US$"
+ },
+ "UZS": {
+ "name": "Uzbekistan Som",
+ "symbol": "UZS"
+ },
+ "VUV": {
+ "name": "Vanuatu Vatu",
+ "symbol": "VUV"
+ },
+ "VEF": {
+ "name": "Venezuelan Bolívar",
+ "symbol": "VEF"
+ },
+ "VND": {
+ "name": "Vietnamese Dong",
+ "symbol": "â‚«"
+ },
+ "YER": {
+ "name": "Yemeni Rial",
+ "symbol": "YER"
+ },
+ "ZMW": {
+ "name": "Zambian Kwacha",
+ "symbol": "ZMW"
+ },
+ "ZWL": {
+ "name": "Zimbabwean Dollar (2009)",
+ "symbol": "ZWL"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/currency/en-GB.json b/library/intl/resources/currency/en-GB.json
new file mode 100644
index 000000000..2dbdae5ca
--- /dev/null
+++ b/library/intl/resources/currency/en-GB.json
@@ -0,0 +1,634 @@
+{
+ "AFN": {
+ "name": "Afghan Afghani",
+ "symbol": "AFN"
+ },
+ "ALL": {
+ "name": "Albanian Lek",
+ "symbol": "ALL"
+ },
+ "DZD": {
+ "name": "Algerian Dinar",
+ "symbol": "DZD"
+ },
+ "AOA": {
+ "name": "Angolan Kwanza",
+ "symbol": "AOA"
+ },
+ "ARS": {
+ "name": "Argentine Peso",
+ "symbol": "ARS"
+ },
+ "AMD": {
+ "name": "Armenian Dram",
+ "symbol": "AMD"
+ },
+ "AWG": {
+ "name": "Aruban Florin",
+ "symbol": "AWG"
+ },
+ "AUD": {
+ "name": "Australian Dollar",
+ "symbol": "A$"
+ },
+ "AZN": {
+ "name": "Azerbaijani Manat",
+ "symbol": "AZN"
+ },
+ "BSD": {
+ "name": "Bahamian Dollar",
+ "symbol": "BSD"
+ },
+ "BHD": {
+ "name": "Bahraini Dinar",
+ "symbol": "BHD"
+ },
+ "BDT": {
+ "name": "Bangladeshi Taka",
+ "symbol": "BDT"
+ },
+ "BBD": {
+ "name": "Barbadian Dollar",
+ "symbol": "BBD"
+ },
+ "BYR": {
+ "name": "Belarusian Ruble",
+ "symbol": "BYR"
+ },
+ "BZD": {
+ "name": "Belize Dollar",
+ "symbol": "BZD"
+ },
+ "BMD": {
+ "name": "Bermudan Dollar",
+ "symbol": "BMD"
+ },
+ "BTN": {
+ "name": "Bhutanese Ngultrum",
+ "symbol": "BTN"
+ },
+ "BOB": {
+ "name": "Bolivian Boliviano",
+ "symbol": "BOB"
+ },
+ "BAM": {
+ "name": "Bosnia-Herzegovina Convertible Mark",
+ "symbol": "BAM"
+ },
+ "BWP": {
+ "name": "Botswanan Pula",
+ "symbol": "BWP"
+ },
+ "BRL": {
+ "name": "Brazilian Real",
+ "symbol": "R$"
+ },
+ "GBP": {
+ "name": "British Pound Sterling",
+ "symbol": "£"
+ },
+ "BND": {
+ "name": "Brunei Dollar",
+ "symbol": "BND"
+ },
+ "BGN": {
+ "name": "Bulgarian Lev",
+ "symbol": "BGN"
+ },
+ "BIF": {
+ "name": "Burundian Franc",
+ "symbol": "BIF"
+ },
+ "KHR": {
+ "name": "Cambodian Riel",
+ "symbol": "KHR"
+ },
+ "CAD": {
+ "name": "Canadian Dollar",
+ "symbol": "CA$"
+ },
+ "CVE": {
+ "name": "Cape Verdean Escudo",
+ "symbol": "CVE"
+ },
+ "KYD": {
+ "name": "Cayman Islands Dollar",
+ "symbol": "KYD"
+ },
+ "XOF": {
+ "name": "CFA Franc BCEAO",
+ "symbol": "CFA"
+ },
+ "XAF": {
+ "name": "CFA Franc BEAC",
+ "symbol": "FCFA"
+ },
+ "XPF": {
+ "name": "CFP Franc",
+ "symbol": "CFPF"
+ },
+ "CLP": {
+ "name": "Chilean Peso",
+ "symbol": "CLP"
+ },
+ "CNY": {
+ "name": "Chinese Yuan",
+ "symbol": "CNÂ¥"
+ },
+ "COP": {
+ "name": "Colombian Peso",
+ "symbol": "COP"
+ },
+ "KMF": {
+ "name": "Comorian Franc",
+ "symbol": "KMF"
+ },
+ "CDF": {
+ "name": "Congolese Franc",
+ "symbol": "CDF"
+ },
+ "CRC": {
+ "name": "Costa Rican Colón",
+ "symbol": "CRC"
+ },
+ "HRK": {
+ "name": "Croatian Kuna",
+ "symbol": "HRK"
+ },
+ "CUC": {
+ "name": "Cuban Convertible Peso",
+ "symbol": "CUC"
+ },
+ "CUP": {
+ "name": "Cuban Peso",
+ "symbol": "CUP"
+ },
+ "CZK": {
+ "name": "Czech Republic Koruna",
+ "symbol": "CZK"
+ },
+ "DKK": {
+ "name": "Danish Krone",
+ "symbol": "DKK"
+ },
+ "DJF": {
+ "name": "Djiboutian Franc",
+ "symbol": "DJF"
+ },
+ "DOP": {
+ "name": "Dominican Peso",
+ "symbol": "DOP"
+ },
+ "XCD": {
+ "name": "East Caribbean Dollar",
+ "symbol": "EC$"
+ },
+ "EGP": {
+ "name": "Egyptian Pound",
+ "symbol": "EGP"
+ },
+ "ERN": {
+ "name": "Eritrean Nakfa",
+ "symbol": "ERN"
+ },
+ "ETB": {
+ "name": "Ethiopian Birr",
+ "symbol": "ETB"
+ },
+ "EUR": {
+ "name": "Euro",
+ "symbol": "€"
+ },
+ "FKP": {
+ "name": "Falkland Islands Pound",
+ "symbol": "FKP"
+ },
+ "FJD": {
+ "name": "Fijian Dollar",
+ "symbol": "FJD"
+ },
+ "GMD": {
+ "name": "Gambian Dalasi",
+ "symbol": "GMD"
+ },
+ "GEL": {
+ "name": "Georgian Lari",
+ "symbol": "GEL"
+ },
+ "GHS": {
+ "name": "Ghanaian Cedi",
+ "symbol": "GHS"
+ },
+ "GIP": {
+ "name": "Gibraltar Pound",
+ "symbol": "GIP"
+ },
+ "GTQ": {
+ "name": "Guatemalan Quetzal",
+ "symbol": "GTQ"
+ },
+ "GNF": {
+ "name": "Guinean Franc",
+ "symbol": "GNF"
+ },
+ "GYD": {
+ "name": "Guyanaese Dollar",
+ "symbol": "GYD"
+ },
+ "HTG": {
+ "name": "Haitian Gourde",
+ "symbol": "HTG"
+ },
+ "HNL": {
+ "name": "Honduran Lempira",
+ "symbol": "HNL"
+ },
+ "HKD": {
+ "name": "Hong Kong Dollar",
+ "symbol": "HK$"
+ },
+ "HUF": {
+ "name": "Hungarian Forint",
+ "symbol": "HUF"
+ },
+ "ISK": {
+ "name": "Icelandic Króna",
+ "symbol": "ISK"
+ },
+ "INR": {
+ "name": "Indian Rupee",
+ "symbol": "₹"
+ },
+ "IDR": {
+ "name": "Indonesian Rupiah",
+ "symbol": "IDR"
+ },
+ "IRR": {
+ "name": "Iranian Rial",
+ "symbol": "IRR"
+ },
+ "IQD": {
+ "name": "Iraqi Dinar",
+ "symbol": "IQD"
+ },
+ "ILS": {
+ "name": "Israeli New Shekel",
+ "symbol": "₪"
+ },
+ "JMD": {
+ "name": "Jamaican Dollar",
+ "symbol": "JMD"
+ },
+ "JPY": {
+ "name": "Japanese Yen",
+ "symbol": "Â¥"
+ },
+ "JOD": {
+ "name": "Jordanian Dinar",
+ "symbol": "JOD"
+ },
+ "KZT": {
+ "name": "Kazakhstani Tenge",
+ "symbol": "KZT"
+ },
+ "KES": {
+ "name": "Kenyan Shilling",
+ "symbol": "KES"
+ },
+ "KWD": {
+ "name": "Kuwaiti Dinar",
+ "symbol": "KWD"
+ },
+ "KGS": {
+ "name": "Kyrgystani Som",
+ "symbol": "KGS"
+ },
+ "LAK": {
+ "name": "Laotian Kip",
+ "symbol": "LAK"
+ },
+ "LBP": {
+ "name": "Lebanese Pound",
+ "symbol": "LBP"
+ },
+ "LSL": {
+ "name": "Lesotho Loti",
+ "symbol": "LSL"
+ },
+ "LRD": {
+ "name": "Liberian Dollar",
+ "symbol": "LRD"
+ },
+ "LYD": {
+ "name": "Libyan Dinar",
+ "symbol": "LYD"
+ },
+ "LTL": {
+ "name": "Lithuanian Litas",
+ "symbol": "LTL"
+ },
+ "MOP": {
+ "name": "Macanese Pataca",
+ "symbol": "MOP"
+ },
+ "MKD": {
+ "name": "Macedonian Denar",
+ "symbol": "MKD"
+ },
+ "MGA": {
+ "name": "Malagasy Ariary",
+ "symbol": "MGA"
+ },
+ "MWK": {
+ "name": "Malawian Kwacha",
+ "symbol": "MWK"
+ },
+ "MYR": {
+ "name": "Malaysian Ringgit",
+ "symbol": "MYR"
+ },
+ "MVR": {
+ "name": "Maldivian Rufiyaa",
+ "symbol": "MVR"
+ },
+ "MRO": {
+ "name": "Mauritanian Ouguiya",
+ "symbol": "MRO"
+ },
+ "MUR": {
+ "name": "Mauritian Rupee",
+ "symbol": "MUR"
+ },
+ "MXN": {
+ "name": "Mexican Peso",
+ "symbol": "MX$"
+ },
+ "MDL": {
+ "name": "Moldovan Leu",
+ "symbol": "MDL"
+ },
+ "MNT": {
+ "name": "Mongolian Tugrik",
+ "symbol": "MNT"
+ },
+ "MAD": {
+ "name": "Moroccan Dirham",
+ "symbol": "MAD"
+ },
+ "MZN": {
+ "name": "Mozambican Metical",
+ "symbol": "MZN"
+ },
+ "MMK": {
+ "name": "Myanmar Kyat",
+ "symbol": "MMK"
+ },
+ "NAD": {
+ "name": "Namibian Dollar",
+ "symbol": "NAD"
+ },
+ "NPR": {
+ "name": "Nepalese Rupee",
+ "symbol": "NPR"
+ },
+ "ANG": {
+ "name": "Netherlands Antillean Guilder",
+ "symbol": "ANG"
+ },
+ "TWD": {
+ "name": "New Taiwan Dollar",
+ "symbol": "NT$"
+ },
+ "NZD": {
+ "name": "New Zealand Dollar",
+ "symbol": "NZ$"
+ },
+ "NIO": {
+ "name": "Nicaraguan Córdoba",
+ "symbol": "NIO"
+ },
+ "NGN": {
+ "name": "Nigerian Naira",
+ "symbol": "NGN"
+ },
+ "KPW": {
+ "name": "North Korean Won",
+ "symbol": "KPW"
+ },
+ "NOK": {
+ "name": "Norwegian Krone",
+ "symbol": "NOK"
+ },
+ "OMR": {
+ "name": "Omani Rial",
+ "symbol": "OMR"
+ },
+ "PKR": {
+ "name": "Pakistani Rupee",
+ "symbol": "PKR"
+ },
+ "PAB": {
+ "name": "Panamanian Balboa",
+ "symbol": "PAB"
+ },
+ "PGK": {
+ "name": "Papua New Guinean Kina",
+ "symbol": "PGK"
+ },
+ "PYG": {
+ "name": "Paraguayan Guarani",
+ "symbol": "PYG"
+ },
+ "PEN": {
+ "name": "Peruvian Nuevo Sol",
+ "symbol": "PEN"
+ },
+ "PHP": {
+ "name": "Philippine Peso",
+ "symbol": "PHP"
+ },
+ "PLN": {
+ "name": "Polish Zloty",
+ "symbol": "PLN"
+ },
+ "QAR": {
+ "name": "Qatari Rial",
+ "symbol": "QAR"
+ },
+ "RON": {
+ "name": "Romanian Leu",
+ "symbol": "RON"
+ },
+ "RUB": {
+ "name": "Russian Ruble",
+ "symbol": "RUB"
+ },
+ "RWF": {
+ "name": "Rwandan Franc",
+ "symbol": "RWF"
+ },
+ "SHP": {
+ "name": "Saint Helena Pound",
+ "symbol": "SHP"
+ },
+ "SVC": {
+ "name": "Salvadoran Colón",
+ "symbol": "SVC"
+ },
+ "WST": {
+ "name": "Samoan Tala",
+ "symbol": "WST"
+ },
+ "STD": {
+ "name": "São Tomé and Príncipe Dobra",
+ "symbol": "STD"
+ },
+ "SAR": {
+ "name": "Saudi Riyal",
+ "symbol": "SAR"
+ },
+ "RSD": {
+ "name": "Serbian Dinar",
+ "symbol": "RSD"
+ },
+ "SCR": {
+ "name": "Seychellois Rupee",
+ "symbol": "SCR"
+ },
+ "SLL": {
+ "name": "Sierra Leonean Leone",
+ "symbol": "SLL"
+ },
+ "SGD": {
+ "name": "Singapore Dollar",
+ "symbol": "SGD"
+ },
+ "SBD": {
+ "name": "Solomon Islands Dollar",
+ "symbol": "SBD"
+ },
+ "SOS": {
+ "name": "Somali Shilling",
+ "symbol": "SOS"
+ },
+ "ZAR": {
+ "name": "South African Rand",
+ "symbol": "ZAR"
+ },
+ "KRW": {
+ "name": "South Korean Won",
+ "symbol": "â‚©"
+ },
+ "SSP": {
+ "name": "South Sudanese Pound",
+ "symbol": "SSP"
+ },
+ "LKR": {
+ "name": "Sri Lankan Rupee",
+ "symbol": "LKR"
+ },
+ "SDG": {
+ "name": "Sudanese Pound",
+ "symbol": "SDG"
+ },
+ "SRD": {
+ "name": "Surinamese Dollar",
+ "symbol": "SRD"
+ },
+ "SZL": {
+ "name": "Swazi Lilangeni",
+ "symbol": "SZL"
+ },
+ "SEK": {
+ "name": "Swedish Krona",
+ "symbol": "SEK"
+ },
+ "CHF": {
+ "name": "Swiss Franc",
+ "symbol": "CHF"
+ },
+ "SYP": {
+ "name": "Syrian Pound",
+ "symbol": "SYP"
+ },
+ "TJS": {
+ "name": "Tajikistani Somoni",
+ "symbol": "TJS"
+ },
+ "TZS": {
+ "name": "Tanzanian Shilling",
+ "symbol": "TZS"
+ },
+ "THB": {
+ "name": "Thai Baht",
+ "symbol": "฿"
+ },
+ "TOP": {
+ "name": "Tongan Paʻanga",
+ "symbol": "TOP"
+ },
+ "TTD": {
+ "name": "Trinidad and Tobago Dollar",
+ "symbol": "TTD"
+ },
+ "TND": {
+ "name": "Tunisian Dinar",
+ "symbol": "TND"
+ },
+ "TRY": {
+ "name": "Turkish Lira",
+ "symbol": "TRY"
+ },
+ "TMT": {
+ "name": "Turkmenistani Manat",
+ "symbol": "TMT"
+ },
+ "UGX": {
+ "name": "Ugandan Shilling",
+ "symbol": "UGX"
+ },
+ "UAH": {
+ "name": "Ukrainian Hryvnia",
+ "symbol": "UAH"
+ },
+ "AED": {
+ "name": "United Arab Emirates Dirham",
+ "symbol": "AED"
+ },
+ "UYU": {
+ "name": "Uruguayan Peso",
+ "symbol": "UYU"
+ },
+ "USD": {
+ "name": "US Dollar",
+ "symbol": "US$"
+ },
+ "UZS": {
+ "name": "Uzbekistan Som",
+ "symbol": "UZS"
+ },
+ "VUV": {
+ "name": "Vanuatu Vatu",
+ "symbol": "VUV"
+ },
+ "VEF": {
+ "name": "Venezuelan Bolívar",
+ "symbol": "VEF"
+ },
+ "VND": {
+ "name": "Vietnamese Dong",
+ "symbol": "â‚«"
+ },
+ "YER": {
+ "name": "Yemeni Rial",
+ "symbol": "YER"
+ },
+ "ZMW": {
+ "name": "Zambian Kwacha",
+ "symbol": "ZMW"
+ },
+ "ZWL": {
+ "name": "Zimbabwean Dollar (2009)",
+ "symbol": "ZWL"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/currency/en-GG.json b/library/intl/resources/currency/en-GG.json
new file mode 100644
index 000000000..2dbdae5ca
--- /dev/null
+++ b/library/intl/resources/currency/en-GG.json
@@ -0,0 +1,634 @@
+{
+ "AFN": {
+ "name": "Afghan Afghani",
+ "symbol": "AFN"
+ },
+ "ALL": {
+ "name": "Albanian Lek",
+ "symbol": "ALL"
+ },
+ "DZD": {
+ "name": "Algerian Dinar",
+ "symbol": "DZD"
+ },
+ "AOA": {
+ "name": "Angolan Kwanza",
+ "symbol": "AOA"
+ },
+ "ARS": {
+ "name": "Argentine Peso",
+ "symbol": "ARS"
+ },
+ "AMD": {
+ "name": "Armenian Dram",
+ "symbol": "AMD"
+ },
+ "AWG": {
+ "name": "Aruban Florin",
+ "symbol": "AWG"
+ },
+ "AUD": {
+ "name": "Australian Dollar",
+ "symbol": "A$"
+ },
+ "AZN": {
+ "name": "Azerbaijani Manat",
+ "symbol": "AZN"
+ },
+ "BSD": {
+ "name": "Bahamian Dollar",
+ "symbol": "BSD"
+ },
+ "BHD": {
+ "name": "Bahraini Dinar",
+ "symbol": "BHD"
+ },
+ "BDT": {
+ "name": "Bangladeshi Taka",
+ "symbol": "BDT"
+ },
+ "BBD": {
+ "name": "Barbadian Dollar",
+ "symbol": "BBD"
+ },
+ "BYR": {
+ "name": "Belarusian Ruble",
+ "symbol": "BYR"
+ },
+ "BZD": {
+ "name": "Belize Dollar",
+ "symbol": "BZD"
+ },
+ "BMD": {
+ "name": "Bermudan Dollar",
+ "symbol": "BMD"
+ },
+ "BTN": {
+ "name": "Bhutanese Ngultrum",
+ "symbol": "BTN"
+ },
+ "BOB": {
+ "name": "Bolivian Boliviano",
+ "symbol": "BOB"
+ },
+ "BAM": {
+ "name": "Bosnia-Herzegovina Convertible Mark",
+ "symbol": "BAM"
+ },
+ "BWP": {
+ "name": "Botswanan Pula",
+ "symbol": "BWP"
+ },
+ "BRL": {
+ "name": "Brazilian Real",
+ "symbol": "R$"
+ },
+ "GBP": {
+ "name": "British Pound Sterling",
+ "symbol": "£"
+ },
+ "BND": {
+ "name": "Brunei Dollar",
+ "symbol": "BND"
+ },
+ "BGN": {
+ "name": "Bulgarian Lev",
+ "symbol": "BGN"
+ },
+ "BIF": {
+ "name": "Burundian Franc",
+ "symbol": "BIF"
+ },
+ "KHR": {
+ "name": "Cambodian Riel",
+ "symbol": "KHR"
+ },
+ "CAD": {
+ "name": "Canadian Dollar",
+ "symbol": "CA$"
+ },
+ "CVE": {
+ "name": "Cape Verdean Escudo",
+ "symbol": "CVE"
+ },
+ "KYD": {
+ "name": "Cayman Islands Dollar",
+ "symbol": "KYD"
+ },
+ "XOF": {
+ "name": "CFA Franc BCEAO",
+ "symbol": "CFA"
+ },
+ "XAF": {
+ "name": "CFA Franc BEAC",
+ "symbol": "FCFA"
+ },
+ "XPF": {
+ "name": "CFP Franc",
+ "symbol": "CFPF"
+ },
+ "CLP": {
+ "name": "Chilean Peso",
+ "symbol": "CLP"
+ },
+ "CNY": {
+ "name": "Chinese Yuan",
+ "symbol": "CNÂ¥"
+ },
+ "COP": {
+ "name": "Colombian Peso",
+ "symbol": "COP"
+ },
+ "KMF": {
+ "name": "Comorian Franc",
+ "symbol": "KMF"
+ },
+ "CDF": {
+ "name": "Congolese Franc",
+ "symbol": "CDF"
+ },
+ "CRC": {
+ "name": "Costa Rican Colón",
+ "symbol": "CRC"
+ },
+ "HRK": {
+ "name": "Croatian Kuna",
+ "symbol": "HRK"
+ },
+ "CUC": {
+ "name": "Cuban Convertible Peso",
+ "symbol": "CUC"
+ },
+ "CUP": {
+ "name": "Cuban Peso",
+ "symbol": "CUP"
+ },
+ "CZK": {
+ "name": "Czech Republic Koruna",
+ "symbol": "CZK"
+ },
+ "DKK": {
+ "name": "Danish Krone",
+ "symbol": "DKK"
+ },
+ "DJF": {
+ "name": "Djiboutian Franc",
+ "symbol": "DJF"
+ },
+ "DOP": {
+ "name": "Dominican Peso",
+ "symbol": "DOP"
+ },
+ "XCD": {
+ "name": "East Caribbean Dollar",
+ "symbol": "EC$"
+ },
+ "EGP": {
+ "name": "Egyptian Pound",
+ "symbol": "EGP"
+ },
+ "ERN": {
+ "name": "Eritrean Nakfa",
+ "symbol": "ERN"
+ },
+ "ETB": {
+ "name": "Ethiopian Birr",
+ "symbol": "ETB"
+ },
+ "EUR": {
+ "name": "Euro",
+ "symbol": "€"
+ },
+ "FKP": {
+ "name": "Falkland Islands Pound",
+ "symbol": "FKP"
+ },
+ "FJD": {
+ "name": "Fijian Dollar",
+ "symbol": "FJD"
+ },
+ "GMD": {
+ "name": "Gambian Dalasi",
+ "symbol": "GMD"
+ },
+ "GEL": {
+ "name": "Georgian Lari",
+ "symbol": "GEL"
+ },
+ "GHS": {
+ "name": "Ghanaian Cedi",
+ "symbol": "GHS"
+ },
+ "GIP": {
+ "name": "Gibraltar Pound",
+ "symbol": "GIP"
+ },
+ "GTQ": {
+ "name": "Guatemalan Quetzal",
+ "symbol": "GTQ"
+ },
+ "GNF": {
+ "name": "Guinean Franc",
+ "symbol": "GNF"
+ },
+ "GYD": {
+ "name": "Guyanaese Dollar",
+ "symbol": "GYD"
+ },
+ "HTG": {
+ "name": "Haitian Gourde",
+ "symbol": "HTG"
+ },
+ "HNL": {
+ "name": "Honduran Lempira",
+ "symbol": "HNL"
+ },
+ "HKD": {
+ "name": "Hong Kong Dollar",
+ "symbol": "HK$"
+ },
+ "HUF": {
+ "name": "Hungarian Forint",
+ "symbol": "HUF"
+ },
+ "ISK": {
+ "name": "Icelandic Króna",
+ "symbol": "ISK"
+ },
+ "INR": {
+ "name": "Indian Rupee",
+ "symbol": "₹"
+ },
+ "IDR": {
+ "name": "Indonesian Rupiah",
+ "symbol": "IDR"
+ },
+ "IRR": {
+ "name": "Iranian Rial",
+ "symbol": "IRR"
+ },
+ "IQD": {
+ "name": "Iraqi Dinar",
+ "symbol": "IQD"
+ },
+ "ILS": {
+ "name": "Israeli New Shekel",
+ "symbol": "₪"
+ },
+ "JMD": {
+ "name": "Jamaican Dollar",
+ "symbol": "JMD"
+ },
+ "JPY": {
+ "name": "Japanese Yen",
+ "symbol": "Â¥"
+ },
+ "JOD": {
+ "name": "Jordanian Dinar",
+ "symbol": "JOD"
+ },
+ "KZT": {
+ "name": "Kazakhstani Tenge",
+ "symbol": "KZT"
+ },
+ "KES": {
+ "name": "Kenyan Shilling",
+ "symbol": "KES"
+ },
+ "KWD": {
+ "name": "Kuwaiti Dinar",
+ "symbol": "KWD"
+ },
+ "KGS": {
+ "name": "Kyrgystani Som",
+ "symbol": "KGS"
+ },
+ "LAK": {
+ "name": "Laotian Kip",
+ "symbol": "LAK"
+ },
+ "LBP": {
+ "name": "Lebanese Pound",
+ "symbol": "LBP"
+ },
+ "LSL": {
+ "name": "Lesotho Loti",
+ "symbol": "LSL"
+ },
+ "LRD": {
+ "name": "Liberian Dollar",
+ "symbol": "LRD"
+ },
+ "LYD": {
+ "name": "Libyan Dinar",
+ "symbol": "LYD"
+ },
+ "LTL": {
+ "name": "Lithuanian Litas",
+ "symbol": "LTL"
+ },
+ "MOP": {
+ "name": "Macanese Pataca",
+ "symbol": "MOP"
+ },
+ "MKD": {
+ "name": "Macedonian Denar",
+ "symbol": "MKD"
+ },
+ "MGA": {
+ "name": "Malagasy Ariary",
+ "symbol": "MGA"
+ },
+ "MWK": {
+ "name": "Malawian Kwacha",
+ "symbol": "MWK"
+ },
+ "MYR": {
+ "name": "Malaysian Ringgit",
+ "symbol": "MYR"
+ },
+ "MVR": {
+ "name": "Maldivian Rufiyaa",
+ "symbol": "MVR"
+ },
+ "MRO": {
+ "name": "Mauritanian Ouguiya",
+ "symbol": "MRO"
+ },
+ "MUR": {
+ "name": "Mauritian Rupee",
+ "symbol": "MUR"
+ },
+ "MXN": {
+ "name": "Mexican Peso",
+ "symbol": "MX$"
+ },
+ "MDL": {
+ "name": "Moldovan Leu",
+ "symbol": "MDL"
+ },
+ "MNT": {
+ "name": "Mongolian Tugrik",
+ "symbol": "MNT"
+ },
+ "MAD": {
+ "name": "Moroccan Dirham",
+ "symbol": "MAD"
+ },
+ "MZN": {
+ "name": "Mozambican Metical",
+ "symbol": "MZN"
+ },
+ "MMK": {
+ "name": "Myanmar Kyat",
+ "symbol": "MMK"
+ },
+ "NAD": {
+ "name": "Namibian Dollar",
+ "symbol": "NAD"
+ },
+ "NPR": {
+ "name": "Nepalese Rupee",
+ "symbol": "NPR"
+ },
+ "ANG": {
+ "name": "Netherlands Antillean Guilder",
+ "symbol": "ANG"
+ },
+ "TWD": {
+ "name": "New Taiwan Dollar",
+ "symbol": "NT$"
+ },
+ "NZD": {
+ "name": "New Zealand Dollar",
+ "symbol": "NZ$"
+ },
+ "NIO": {
+ "name": "Nicaraguan Córdoba",
+ "symbol": "NIO"
+ },
+ "NGN": {
+ "name": "Nigerian Naira",
+ "symbol": "NGN"
+ },
+ "KPW": {
+ "name": "North Korean Won",
+ "symbol": "KPW"
+ },
+ "NOK": {
+ "name": "Norwegian Krone",
+ "symbol": "NOK"
+ },
+ "OMR": {
+ "name": "Omani Rial",
+ "symbol": "OMR"
+ },
+ "PKR": {
+ "name": "Pakistani Rupee",
+ "symbol": "PKR"
+ },
+ "PAB": {
+ "name": "Panamanian Balboa",
+ "symbol": "PAB"
+ },
+ "PGK": {
+ "name": "Papua New Guinean Kina",
+ "symbol": "PGK"
+ },
+ "PYG": {
+ "name": "Paraguayan Guarani",
+ "symbol": "PYG"
+ },
+ "PEN": {
+ "name": "Peruvian Nuevo Sol",
+ "symbol": "PEN"
+ },
+ "PHP": {
+ "name": "Philippine Peso",
+ "symbol": "PHP"
+ },
+ "PLN": {
+ "name": "Polish Zloty",
+ "symbol": "PLN"
+ },
+ "QAR": {
+ "name": "Qatari Rial",
+ "symbol": "QAR"
+ },
+ "RON": {
+ "name": "Romanian Leu",
+ "symbol": "RON"
+ },
+ "RUB": {
+ "name": "Russian Ruble",
+ "symbol": "RUB"
+ },
+ "RWF": {
+ "name": "Rwandan Franc",
+ "symbol": "RWF"
+ },
+ "SHP": {
+ "name": "Saint Helena Pound",
+ "symbol": "SHP"
+ },
+ "SVC": {
+ "name": "Salvadoran Colón",
+ "symbol": "SVC"
+ },
+ "WST": {
+ "name": "Samoan Tala",
+ "symbol": "WST"
+ },
+ "STD": {
+ "name": "São Tomé and Príncipe Dobra",
+ "symbol": "STD"
+ },
+ "SAR": {
+ "name": "Saudi Riyal",
+ "symbol": "SAR"
+ },
+ "RSD": {
+ "name": "Serbian Dinar",
+ "symbol": "RSD"
+ },
+ "SCR": {
+ "name": "Seychellois Rupee",
+ "symbol": "SCR"
+ },
+ "SLL": {
+ "name": "Sierra Leonean Leone",
+ "symbol": "SLL"
+ },
+ "SGD": {
+ "name": "Singapore Dollar",
+ "symbol": "SGD"
+ },
+ "SBD": {
+ "name": "Solomon Islands Dollar",
+ "symbol": "SBD"
+ },
+ "SOS": {
+ "name": "Somali Shilling",
+ "symbol": "SOS"
+ },
+ "ZAR": {
+ "name": "South African Rand",
+ "symbol": "ZAR"
+ },
+ "KRW": {
+ "name": "South Korean Won",
+ "symbol": "â‚©"
+ },
+ "SSP": {
+ "name": "South Sudanese Pound",
+ "symbol": "SSP"
+ },
+ "LKR": {
+ "name": "Sri Lankan Rupee",
+ "symbol": "LKR"
+ },
+ "SDG": {
+ "name": "Sudanese Pound",
+ "symbol": "SDG"
+ },
+ "SRD": {
+ "name": "Surinamese Dollar",
+ "symbol": "SRD"
+ },
+ "SZL": {
+ "name": "Swazi Lilangeni",
+ "symbol": "SZL"
+ },
+ "SEK": {
+ "name": "Swedish Krona",
+ "symbol": "SEK"
+ },
+ "CHF": {
+ "name": "Swiss Franc",
+ "symbol": "CHF"
+ },
+ "SYP": {
+ "name": "Syrian Pound",
+ "symbol": "SYP"
+ },
+ "TJS": {
+ "name": "Tajikistani Somoni",
+ "symbol": "TJS"
+ },
+ "TZS": {
+ "name": "Tanzanian Shilling",
+ "symbol": "TZS"
+ },
+ "THB": {
+ "name": "Thai Baht",
+ "symbol": "฿"
+ },
+ "TOP": {
+ "name": "Tongan Paʻanga",
+ "symbol": "TOP"
+ },
+ "TTD": {
+ "name": "Trinidad and Tobago Dollar",
+ "symbol": "TTD"
+ },
+ "TND": {
+ "name": "Tunisian Dinar",
+ "symbol": "TND"
+ },
+ "TRY": {
+ "name": "Turkish Lira",
+ "symbol": "TRY"
+ },
+ "TMT": {
+ "name": "Turkmenistani Manat",
+ "symbol": "TMT"
+ },
+ "UGX": {
+ "name": "Ugandan Shilling",
+ "symbol": "UGX"
+ },
+ "UAH": {
+ "name": "Ukrainian Hryvnia",
+ "symbol": "UAH"
+ },
+ "AED": {
+ "name": "United Arab Emirates Dirham",
+ "symbol": "AED"
+ },
+ "UYU": {
+ "name": "Uruguayan Peso",
+ "symbol": "UYU"
+ },
+ "USD": {
+ "name": "US Dollar",
+ "symbol": "US$"
+ },
+ "UZS": {
+ "name": "Uzbekistan Som",
+ "symbol": "UZS"
+ },
+ "VUV": {
+ "name": "Vanuatu Vatu",
+ "symbol": "VUV"
+ },
+ "VEF": {
+ "name": "Venezuelan Bolívar",
+ "symbol": "VEF"
+ },
+ "VND": {
+ "name": "Vietnamese Dong",
+ "symbol": "â‚«"
+ },
+ "YER": {
+ "name": "Yemeni Rial",
+ "symbol": "YER"
+ },
+ "ZMW": {
+ "name": "Zambian Kwacha",
+ "symbol": "ZMW"
+ },
+ "ZWL": {
+ "name": "Zimbabwean Dollar (2009)",
+ "symbol": "ZWL"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/currency/en-GI.json b/library/intl/resources/currency/en-GI.json
new file mode 100644
index 000000000..f29f8999a
--- /dev/null
+++ b/library/intl/resources/currency/en-GI.json
@@ -0,0 +1,634 @@
+{
+ "AFN": {
+ "name": "Afghan Afghani",
+ "symbol": "AFN"
+ },
+ "ALL": {
+ "name": "Albanian Lek",
+ "symbol": "ALL"
+ },
+ "DZD": {
+ "name": "Algerian Dinar",
+ "symbol": "DZD"
+ },
+ "AOA": {
+ "name": "Angolan Kwanza",
+ "symbol": "AOA"
+ },
+ "ARS": {
+ "name": "Argentine Peso",
+ "symbol": "ARS"
+ },
+ "AMD": {
+ "name": "Armenian Dram",
+ "symbol": "AMD"
+ },
+ "AWG": {
+ "name": "Aruban Florin",
+ "symbol": "AWG"
+ },
+ "AUD": {
+ "name": "Australian Dollar",
+ "symbol": "A$"
+ },
+ "AZN": {
+ "name": "Azerbaijani Manat",
+ "symbol": "AZN"
+ },
+ "BSD": {
+ "name": "Bahamian Dollar",
+ "symbol": "BSD"
+ },
+ "BHD": {
+ "name": "Bahraini Dinar",
+ "symbol": "BHD"
+ },
+ "BDT": {
+ "name": "Bangladeshi Taka",
+ "symbol": "BDT"
+ },
+ "BBD": {
+ "name": "Barbadian Dollar",
+ "symbol": "BBD"
+ },
+ "BYR": {
+ "name": "Belarusian Ruble",
+ "symbol": "BYR"
+ },
+ "BZD": {
+ "name": "Belize Dollar",
+ "symbol": "BZD"
+ },
+ "BMD": {
+ "name": "Bermudan Dollar",
+ "symbol": "BMD"
+ },
+ "BTN": {
+ "name": "Bhutanese Ngultrum",
+ "symbol": "BTN"
+ },
+ "BOB": {
+ "name": "Bolivian Boliviano",
+ "symbol": "BOB"
+ },
+ "BAM": {
+ "name": "Bosnia-Herzegovina Convertible Mark",
+ "symbol": "BAM"
+ },
+ "BWP": {
+ "name": "Botswanan Pula",
+ "symbol": "BWP"
+ },
+ "BRL": {
+ "name": "Brazilian Real",
+ "symbol": "R$"
+ },
+ "GBP": {
+ "name": "British Pound Sterling",
+ "symbol": "GB£"
+ },
+ "BND": {
+ "name": "Brunei Dollar",
+ "symbol": "BND"
+ },
+ "BGN": {
+ "name": "Bulgarian Lev",
+ "symbol": "BGN"
+ },
+ "BIF": {
+ "name": "Burundian Franc",
+ "symbol": "BIF"
+ },
+ "KHR": {
+ "name": "Cambodian Riel",
+ "symbol": "KHR"
+ },
+ "CAD": {
+ "name": "Canadian Dollar",
+ "symbol": "CA$"
+ },
+ "CVE": {
+ "name": "Cape Verdean Escudo",
+ "symbol": "CVE"
+ },
+ "KYD": {
+ "name": "Cayman Islands Dollar",
+ "symbol": "KYD"
+ },
+ "XOF": {
+ "name": "CFA Franc BCEAO",
+ "symbol": "CFA"
+ },
+ "XAF": {
+ "name": "CFA Franc BEAC",
+ "symbol": "FCFA"
+ },
+ "XPF": {
+ "name": "CFP Franc",
+ "symbol": "CFPF"
+ },
+ "CLP": {
+ "name": "Chilean Peso",
+ "symbol": "CLP"
+ },
+ "CNY": {
+ "name": "Chinese Yuan",
+ "symbol": "CNÂ¥"
+ },
+ "COP": {
+ "name": "Colombian Peso",
+ "symbol": "COP"
+ },
+ "KMF": {
+ "name": "Comorian Franc",
+ "symbol": "KMF"
+ },
+ "CDF": {
+ "name": "Congolese Franc",
+ "symbol": "CDF"
+ },
+ "CRC": {
+ "name": "Costa Rican Colón",
+ "symbol": "CRC"
+ },
+ "HRK": {
+ "name": "Croatian Kuna",
+ "symbol": "HRK"
+ },
+ "CUC": {
+ "name": "Cuban Convertible Peso",
+ "symbol": "CUC"
+ },
+ "CUP": {
+ "name": "Cuban Peso",
+ "symbol": "CUP"
+ },
+ "CZK": {
+ "name": "Czech Republic Koruna",
+ "symbol": "CZK"
+ },
+ "DKK": {
+ "name": "Danish Krone",
+ "symbol": "DKK"
+ },
+ "DJF": {
+ "name": "Djiboutian Franc",
+ "symbol": "DJF"
+ },
+ "DOP": {
+ "name": "Dominican Peso",
+ "symbol": "DOP"
+ },
+ "XCD": {
+ "name": "East Caribbean Dollar",
+ "symbol": "EC$"
+ },
+ "EGP": {
+ "name": "Egyptian Pound",
+ "symbol": "EGP"
+ },
+ "ERN": {
+ "name": "Eritrean Nakfa",
+ "symbol": "ERN"
+ },
+ "ETB": {
+ "name": "Ethiopian Birr",
+ "symbol": "ETB"
+ },
+ "EUR": {
+ "name": "Euro",
+ "symbol": "€"
+ },
+ "FKP": {
+ "name": "Falkland Islands Pound",
+ "symbol": "FKP"
+ },
+ "FJD": {
+ "name": "Fijian Dollar",
+ "symbol": "FJD"
+ },
+ "GMD": {
+ "name": "Gambian Dalasi",
+ "symbol": "GMD"
+ },
+ "GEL": {
+ "name": "Georgian Lari",
+ "symbol": "GEL"
+ },
+ "GHS": {
+ "name": "Ghanaian Cedi",
+ "symbol": "GHS"
+ },
+ "GIP": {
+ "name": "Gibraltar Pound",
+ "symbol": "£"
+ },
+ "GTQ": {
+ "name": "Guatemalan Quetzal",
+ "symbol": "GTQ"
+ },
+ "GNF": {
+ "name": "Guinean Franc",
+ "symbol": "GNF"
+ },
+ "GYD": {
+ "name": "Guyanaese Dollar",
+ "symbol": "GYD"
+ },
+ "HTG": {
+ "name": "Haitian Gourde",
+ "symbol": "HTG"
+ },
+ "HNL": {
+ "name": "Honduran Lempira",
+ "symbol": "HNL"
+ },
+ "HKD": {
+ "name": "Hong Kong Dollar",
+ "symbol": "HK$"
+ },
+ "HUF": {
+ "name": "Hungarian Forint",
+ "symbol": "HUF"
+ },
+ "ISK": {
+ "name": "Icelandic Króna",
+ "symbol": "ISK"
+ },
+ "INR": {
+ "name": "Indian Rupee",
+ "symbol": "₹"
+ },
+ "IDR": {
+ "name": "Indonesian Rupiah",
+ "symbol": "IDR"
+ },
+ "IRR": {
+ "name": "Iranian Rial",
+ "symbol": "IRR"
+ },
+ "IQD": {
+ "name": "Iraqi Dinar",
+ "symbol": "IQD"
+ },
+ "ILS": {
+ "name": "Israeli New Shekel",
+ "symbol": "₪"
+ },
+ "JMD": {
+ "name": "Jamaican Dollar",
+ "symbol": "JMD"
+ },
+ "JPY": {
+ "name": "Japanese Yen",
+ "symbol": "Â¥"
+ },
+ "JOD": {
+ "name": "Jordanian Dinar",
+ "symbol": "JOD"
+ },
+ "KZT": {
+ "name": "Kazakhstani Tenge",
+ "symbol": "KZT"
+ },
+ "KES": {
+ "name": "Kenyan Shilling",
+ "symbol": "KES"
+ },
+ "KWD": {
+ "name": "Kuwaiti Dinar",
+ "symbol": "KWD"
+ },
+ "KGS": {
+ "name": "Kyrgystani Som",
+ "symbol": "KGS"
+ },
+ "LAK": {
+ "name": "Laotian Kip",
+ "symbol": "LAK"
+ },
+ "LBP": {
+ "name": "Lebanese Pound",
+ "symbol": "LBP"
+ },
+ "LSL": {
+ "name": "Lesotho Loti",
+ "symbol": "LSL"
+ },
+ "LRD": {
+ "name": "Liberian Dollar",
+ "symbol": "LRD"
+ },
+ "LYD": {
+ "name": "Libyan Dinar",
+ "symbol": "LYD"
+ },
+ "LTL": {
+ "name": "Lithuanian Litas",
+ "symbol": "LTL"
+ },
+ "MOP": {
+ "name": "Macanese Pataca",
+ "symbol": "MOP"
+ },
+ "MKD": {
+ "name": "Macedonian Denar",
+ "symbol": "MKD"
+ },
+ "MGA": {
+ "name": "Malagasy Ariary",
+ "symbol": "MGA"
+ },
+ "MWK": {
+ "name": "Malawian Kwacha",
+ "symbol": "MWK"
+ },
+ "MYR": {
+ "name": "Malaysian Ringgit",
+ "symbol": "MYR"
+ },
+ "MVR": {
+ "name": "Maldivian Rufiyaa",
+ "symbol": "MVR"
+ },
+ "MRO": {
+ "name": "Mauritanian Ouguiya",
+ "symbol": "MRO"
+ },
+ "MUR": {
+ "name": "Mauritian Rupee",
+ "symbol": "MUR"
+ },
+ "MXN": {
+ "name": "Mexican Peso",
+ "symbol": "MX$"
+ },
+ "MDL": {
+ "name": "Moldovan Leu",
+ "symbol": "MDL"
+ },
+ "MNT": {
+ "name": "Mongolian Tugrik",
+ "symbol": "MNT"
+ },
+ "MAD": {
+ "name": "Moroccan Dirham",
+ "symbol": "MAD"
+ },
+ "MZN": {
+ "name": "Mozambican Metical",
+ "symbol": "MZN"
+ },
+ "MMK": {
+ "name": "Myanmar Kyat",
+ "symbol": "MMK"
+ },
+ "NAD": {
+ "name": "Namibian Dollar",
+ "symbol": "NAD"
+ },
+ "NPR": {
+ "name": "Nepalese Rupee",
+ "symbol": "NPR"
+ },
+ "ANG": {
+ "name": "Netherlands Antillean Guilder",
+ "symbol": "ANG"
+ },
+ "TWD": {
+ "name": "New Taiwan Dollar",
+ "symbol": "NT$"
+ },
+ "NZD": {
+ "name": "New Zealand Dollar",
+ "symbol": "NZ$"
+ },
+ "NIO": {
+ "name": "Nicaraguan Córdoba",
+ "symbol": "NIO"
+ },
+ "NGN": {
+ "name": "Nigerian Naira",
+ "symbol": "NGN"
+ },
+ "KPW": {
+ "name": "North Korean Won",
+ "symbol": "KPW"
+ },
+ "NOK": {
+ "name": "Norwegian Krone",
+ "symbol": "NOK"
+ },
+ "OMR": {
+ "name": "Omani Rial",
+ "symbol": "OMR"
+ },
+ "PKR": {
+ "name": "Pakistani Rupee",
+ "symbol": "PKR"
+ },
+ "PAB": {
+ "name": "Panamanian Balboa",
+ "symbol": "PAB"
+ },
+ "PGK": {
+ "name": "Papua New Guinean Kina",
+ "symbol": "PGK"
+ },
+ "PYG": {
+ "name": "Paraguayan Guarani",
+ "symbol": "PYG"
+ },
+ "PEN": {
+ "name": "Peruvian Nuevo Sol",
+ "symbol": "PEN"
+ },
+ "PHP": {
+ "name": "Philippine Peso",
+ "symbol": "PHP"
+ },
+ "PLN": {
+ "name": "Polish Zloty",
+ "symbol": "PLN"
+ },
+ "QAR": {
+ "name": "Qatari Rial",
+ "symbol": "QAR"
+ },
+ "RON": {
+ "name": "Romanian Leu",
+ "symbol": "RON"
+ },
+ "RUB": {
+ "name": "Russian Ruble",
+ "symbol": "RUB"
+ },
+ "RWF": {
+ "name": "Rwandan Franc",
+ "symbol": "RWF"
+ },
+ "SHP": {
+ "name": "Saint Helena Pound",
+ "symbol": "SHP"
+ },
+ "SVC": {
+ "name": "Salvadoran Colón",
+ "symbol": "SVC"
+ },
+ "WST": {
+ "name": "Samoan Tala",
+ "symbol": "WST"
+ },
+ "STD": {
+ "name": "São Tomé and Príncipe Dobra",
+ "symbol": "STD"
+ },
+ "SAR": {
+ "name": "Saudi Riyal",
+ "symbol": "SAR"
+ },
+ "RSD": {
+ "name": "Serbian Dinar",
+ "symbol": "RSD"
+ },
+ "SCR": {
+ "name": "Seychellois Rupee",
+ "symbol": "SCR"
+ },
+ "SLL": {
+ "name": "Sierra Leonean Leone",
+ "symbol": "SLL"
+ },
+ "SGD": {
+ "name": "Singapore Dollar",
+ "symbol": "SGD"
+ },
+ "SBD": {
+ "name": "Solomon Islands Dollar",
+ "symbol": "SBD"
+ },
+ "SOS": {
+ "name": "Somali Shilling",
+ "symbol": "SOS"
+ },
+ "ZAR": {
+ "name": "South African Rand",
+ "symbol": "ZAR"
+ },
+ "KRW": {
+ "name": "South Korean Won",
+ "symbol": "â‚©"
+ },
+ "SSP": {
+ "name": "South Sudanese Pound",
+ "symbol": "SSP"
+ },
+ "LKR": {
+ "name": "Sri Lankan Rupee",
+ "symbol": "LKR"
+ },
+ "SDG": {
+ "name": "Sudanese Pound",
+ "symbol": "SDG"
+ },
+ "SRD": {
+ "name": "Surinamese Dollar",
+ "symbol": "SRD"
+ },
+ "SZL": {
+ "name": "Swazi Lilangeni",
+ "symbol": "SZL"
+ },
+ "SEK": {
+ "name": "Swedish Krona",
+ "symbol": "SEK"
+ },
+ "CHF": {
+ "name": "Swiss Franc",
+ "symbol": "CHF"
+ },
+ "SYP": {
+ "name": "Syrian Pound",
+ "symbol": "SYP"
+ },
+ "TJS": {
+ "name": "Tajikistani Somoni",
+ "symbol": "TJS"
+ },
+ "TZS": {
+ "name": "Tanzanian Shilling",
+ "symbol": "TZS"
+ },
+ "THB": {
+ "name": "Thai Baht",
+ "symbol": "฿"
+ },
+ "TOP": {
+ "name": "Tongan Paʻanga",
+ "symbol": "TOP"
+ },
+ "TTD": {
+ "name": "Trinidad and Tobago Dollar",
+ "symbol": "TTD"
+ },
+ "TND": {
+ "name": "Tunisian Dinar",
+ "symbol": "TND"
+ },
+ "TRY": {
+ "name": "Turkish Lira",
+ "symbol": "TRY"
+ },
+ "TMT": {
+ "name": "Turkmenistani Manat",
+ "symbol": "TMT"
+ },
+ "UGX": {
+ "name": "Ugandan Shilling",
+ "symbol": "UGX"
+ },
+ "UAH": {
+ "name": "Ukrainian Hryvnia",
+ "symbol": "UAH"
+ },
+ "AED": {
+ "name": "United Arab Emirates Dirham",
+ "symbol": "AED"
+ },
+ "UYU": {
+ "name": "Uruguayan Peso",
+ "symbol": "UYU"
+ },
+ "USD": {
+ "name": "US Dollar",
+ "symbol": "US$"
+ },
+ "UZS": {
+ "name": "Uzbekistan Som",
+ "symbol": "UZS"
+ },
+ "VUV": {
+ "name": "Vanuatu Vatu",
+ "symbol": "VUV"
+ },
+ "VEF": {
+ "name": "Venezuelan Bolívar",
+ "symbol": "VEF"
+ },
+ "VND": {
+ "name": "Vietnamese Dong",
+ "symbol": "â‚«"
+ },
+ "YER": {
+ "name": "Yemeni Rial",
+ "symbol": "YER"
+ },
+ "ZMW": {
+ "name": "Zambian Kwacha",
+ "symbol": "ZMW"
+ },
+ "ZWL": {
+ "name": "Zimbabwean Dollar (2009)",
+ "symbol": "ZWL"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/currency/en-HK.json b/library/intl/resources/currency/en-HK.json
new file mode 100644
index 000000000..2dbdae5ca
--- /dev/null
+++ b/library/intl/resources/currency/en-HK.json
@@ -0,0 +1,634 @@
+{
+ "AFN": {
+ "name": "Afghan Afghani",
+ "symbol": "AFN"
+ },
+ "ALL": {
+ "name": "Albanian Lek",
+ "symbol": "ALL"
+ },
+ "DZD": {
+ "name": "Algerian Dinar",
+ "symbol": "DZD"
+ },
+ "AOA": {
+ "name": "Angolan Kwanza",
+ "symbol": "AOA"
+ },
+ "ARS": {
+ "name": "Argentine Peso",
+ "symbol": "ARS"
+ },
+ "AMD": {
+ "name": "Armenian Dram",
+ "symbol": "AMD"
+ },
+ "AWG": {
+ "name": "Aruban Florin",
+ "symbol": "AWG"
+ },
+ "AUD": {
+ "name": "Australian Dollar",
+ "symbol": "A$"
+ },
+ "AZN": {
+ "name": "Azerbaijani Manat",
+ "symbol": "AZN"
+ },
+ "BSD": {
+ "name": "Bahamian Dollar",
+ "symbol": "BSD"
+ },
+ "BHD": {
+ "name": "Bahraini Dinar",
+ "symbol": "BHD"
+ },
+ "BDT": {
+ "name": "Bangladeshi Taka",
+ "symbol": "BDT"
+ },
+ "BBD": {
+ "name": "Barbadian Dollar",
+ "symbol": "BBD"
+ },
+ "BYR": {
+ "name": "Belarusian Ruble",
+ "symbol": "BYR"
+ },
+ "BZD": {
+ "name": "Belize Dollar",
+ "symbol": "BZD"
+ },
+ "BMD": {
+ "name": "Bermudan Dollar",
+ "symbol": "BMD"
+ },
+ "BTN": {
+ "name": "Bhutanese Ngultrum",
+ "symbol": "BTN"
+ },
+ "BOB": {
+ "name": "Bolivian Boliviano",
+ "symbol": "BOB"
+ },
+ "BAM": {
+ "name": "Bosnia-Herzegovina Convertible Mark",
+ "symbol": "BAM"
+ },
+ "BWP": {
+ "name": "Botswanan Pula",
+ "symbol": "BWP"
+ },
+ "BRL": {
+ "name": "Brazilian Real",
+ "symbol": "R$"
+ },
+ "GBP": {
+ "name": "British Pound Sterling",
+ "symbol": "£"
+ },
+ "BND": {
+ "name": "Brunei Dollar",
+ "symbol": "BND"
+ },
+ "BGN": {
+ "name": "Bulgarian Lev",
+ "symbol": "BGN"
+ },
+ "BIF": {
+ "name": "Burundian Franc",
+ "symbol": "BIF"
+ },
+ "KHR": {
+ "name": "Cambodian Riel",
+ "symbol": "KHR"
+ },
+ "CAD": {
+ "name": "Canadian Dollar",
+ "symbol": "CA$"
+ },
+ "CVE": {
+ "name": "Cape Verdean Escudo",
+ "symbol": "CVE"
+ },
+ "KYD": {
+ "name": "Cayman Islands Dollar",
+ "symbol": "KYD"
+ },
+ "XOF": {
+ "name": "CFA Franc BCEAO",
+ "symbol": "CFA"
+ },
+ "XAF": {
+ "name": "CFA Franc BEAC",
+ "symbol": "FCFA"
+ },
+ "XPF": {
+ "name": "CFP Franc",
+ "symbol": "CFPF"
+ },
+ "CLP": {
+ "name": "Chilean Peso",
+ "symbol": "CLP"
+ },
+ "CNY": {
+ "name": "Chinese Yuan",
+ "symbol": "CNÂ¥"
+ },
+ "COP": {
+ "name": "Colombian Peso",
+ "symbol": "COP"
+ },
+ "KMF": {
+ "name": "Comorian Franc",
+ "symbol": "KMF"
+ },
+ "CDF": {
+ "name": "Congolese Franc",
+ "symbol": "CDF"
+ },
+ "CRC": {
+ "name": "Costa Rican Colón",
+ "symbol": "CRC"
+ },
+ "HRK": {
+ "name": "Croatian Kuna",
+ "symbol": "HRK"
+ },
+ "CUC": {
+ "name": "Cuban Convertible Peso",
+ "symbol": "CUC"
+ },
+ "CUP": {
+ "name": "Cuban Peso",
+ "symbol": "CUP"
+ },
+ "CZK": {
+ "name": "Czech Republic Koruna",
+ "symbol": "CZK"
+ },
+ "DKK": {
+ "name": "Danish Krone",
+ "symbol": "DKK"
+ },
+ "DJF": {
+ "name": "Djiboutian Franc",
+ "symbol": "DJF"
+ },
+ "DOP": {
+ "name": "Dominican Peso",
+ "symbol": "DOP"
+ },
+ "XCD": {
+ "name": "East Caribbean Dollar",
+ "symbol": "EC$"
+ },
+ "EGP": {
+ "name": "Egyptian Pound",
+ "symbol": "EGP"
+ },
+ "ERN": {
+ "name": "Eritrean Nakfa",
+ "symbol": "ERN"
+ },
+ "ETB": {
+ "name": "Ethiopian Birr",
+ "symbol": "ETB"
+ },
+ "EUR": {
+ "name": "Euro",
+ "symbol": "€"
+ },
+ "FKP": {
+ "name": "Falkland Islands Pound",
+ "symbol": "FKP"
+ },
+ "FJD": {
+ "name": "Fijian Dollar",
+ "symbol": "FJD"
+ },
+ "GMD": {
+ "name": "Gambian Dalasi",
+ "symbol": "GMD"
+ },
+ "GEL": {
+ "name": "Georgian Lari",
+ "symbol": "GEL"
+ },
+ "GHS": {
+ "name": "Ghanaian Cedi",
+ "symbol": "GHS"
+ },
+ "GIP": {
+ "name": "Gibraltar Pound",
+ "symbol": "GIP"
+ },
+ "GTQ": {
+ "name": "Guatemalan Quetzal",
+ "symbol": "GTQ"
+ },
+ "GNF": {
+ "name": "Guinean Franc",
+ "symbol": "GNF"
+ },
+ "GYD": {
+ "name": "Guyanaese Dollar",
+ "symbol": "GYD"
+ },
+ "HTG": {
+ "name": "Haitian Gourde",
+ "symbol": "HTG"
+ },
+ "HNL": {
+ "name": "Honduran Lempira",
+ "symbol": "HNL"
+ },
+ "HKD": {
+ "name": "Hong Kong Dollar",
+ "symbol": "HK$"
+ },
+ "HUF": {
+ "name": "Hungarian Forint",
+ "symbol": "HUF"
+ },
+ "ISK": {
+ "name": "Icelandic Króna",
+ "symbol": "ISK"
+ },
+ "INR": {
+ "name": "Indian Rupee",
+ "symbol": "₹"
+ },
+ "IDR": {
+ "name": "Indonesian Rupiah",
+ "symbol": "IDR"
+ },
+ "IRR": {
+ "name": "Iranian Rial",
+ "symbol": "IRR"
+ },
+ "IQD": {
+ "name": "Iraqi Dinar",
+ "symbol": "IQD"
+ },
+ "ILS": {
+ "name": "Israeli New Shekel",
+ "symbol": "₪"
+ },
+ "JMD": {
+ "name": "Jamaican Dollar",
+ "symbol": "JMD"
+ },
+ "JPY": {
+ "name": "Japanese Yen",
+ "symbol": "Â¥"
+ },
+ "JOD": {
+ "name": "Jordanian Dinar",
+ "symbol": "JOD"
+ },
+ "KZT": {
+ "name": "Kazakhstani Tenge",
+ "symbol": "KZT"
+ },
+ "KES": {
+ "name": "Kenyan Shilling",
+ "symbol": "KES"
+ },
+ "KWD": {
+ "name": "Kuwaiti Dinar",
+ "symbol": "KWD"
+ },
+ "KGS": {
+ "name": "Kyrgystani Som",
+ "symbol": "KGS"
+ },
+ "LAK": {
+ "name": "Laotian Kip",
+ "symbol": "LAK"
+ },
+ "LBP": {
+ "name": "Lebanese Pound",
+ "symbol": "LBP"
+ },
+ "LSL": {
+ "name": "Lesotho Loti",
+ "symbol": "LSL"
+ },
+ "LRD": {
+ "name": "Liberian Dollar",
+ "symbol": "LRD"
+ },
+ "LYD": {
+ "name": "Libyan Dinar",
+ "symbol": "LYD"
+ },
+ "LTL": {
+ "name": "Lithuanian Litas",
+ "symbol": "LTL"
+ },
+ "MOP": {
+ "name": "Macanese Pataca",
+ "symbol": "MOP"
+ },
+ "MKD": {
+ "name": "Macedonian Denar",
+ "symbol": "MKD"
+ },
+ "MGA": {
+ "name": "Malagasy Ariary",
+ "symbol": "MGA"
+ },
+ "MWK": {
+ "name": "Malawian Kwacha",
+ "symbol": "MWK"
+ },
+ "MYR": {
+ "name": "Malaysian Ringgit",
+ "symbol": "MYR"
+ },
+ "MVR": {
+ "name": "Maldivian Rufiyaa",
+ "symbol": "MVR"
+ },
+ "MRO": {
+ "name": "Mauritanian Ouguiya",
+ "symbol": "MRO"
+ },
+ "MUR": {
+ "name": "Mauritian Rupee",
+ "symbol": "MUR"
+ },
+ "MXN": {
+ "name": "Mexican Peso",
+ "symbol": "MX$"
+ },
+ "MDL": {
+ "name": "Moldovan Leu",
+ "symbol": "MDL"
+ },
+ "MNT": {
+ "name": "Mongolian Tugrik",
+ "symbol": "MNT"
+ },
+ "MAD": {
+ "name": "Moroccan Dirham",
+ "symbol": "MAD"
+ },
+ "MZN": {
+ "name": "Mozambican Metical",
+ "symbol": "MZN"
+ },
+ "MMK": {
+ "name": "Myanmar Kyat",
+ "symbol": "MMK"
+ },
+ "NAD": {
+ "name": "Namibian Dollar",
+ "symbol": "NAD"
+ },
+ "NPR": {
+ "name": "Nepalese Rupee",
+ "symbol": "NPR"
+ },
+ "ANG": {
+ "name": "Netherlands Antillean Guilder",
+ "symbol": "ANG"
+ },
+ "TWD": {
+ "name": "New Taiwan Dollar",
+ "symbol": "NT$"
+ },
+ "NZD": {
+ "name": "New Zealand Dollar",
+ "symbol": "NZ$"
+ },
+ "NIO": {
+ "name": "Nicaraguan Córdoba",
+ "symbol": "NIO"
+ },
+ "NGN": {
+ "name": "Nigerian Naira",
+ "symbol": "NGN"
+ },
+ "KPW": {
+ "name": "North Korean Won",
+ "symbol": "KPW"
+ },
+ "NOK": {
+ "name": "Norwegian Krone",
+ "symbol": "NOK"
+ },
+ "OMR": {
+ "name": "Omani Rial",
+ "symbol": "OMR"
+ },
+ "PKR": {
+ "name": "Pakistani Rupee",
+ "symbol": "PKR"
+ },
+ "PAB": {
+ "name": "Panamanian Balboa",
+ "symbol": "PAB"
+ },
+ "PGK": {
+ "name": "Papua New Guinean Kina",
+ "symbol": "PGK"
+ },
+ "PYG": {
+ "name": "Paraguayan Guarani",
+ "symbol": "PYG"
+ },
+ "PEN": {
+ "name": "Peruvian Nuevo Sol",
+ "symbol": "PEN"
+ },
+ "PHP": {
+ "name": "Philippine Peso",
+ "symbol": "PHP"
+ },
+ "PLN": {
+ "name": "Polish Zloty",
+ "symbol": "PLN"
+ },
+ "QAR": {
+ "name": "Qatari Rial",
+ "symbol": "QAR"
+ },
+ "RON": {
+ "name": "Romanian Leu",
+ "symbol": "RON"
+ },
+ "RUB": {
+ "name": "Russian Ruble",
+ "symbol": "RUB"
+ },
+ "RWF": {
+ "name": "Rwandan Franc",
+ "symbol": "RWF"
+ },
+ "SHP": {
+ "name": "Saint Helena Pound",
+ "symbol": "SHP"
+ },
+ "SVC": {
+ "name": "Salvadoran Colón",
+ "symbol": "SVC"
+ },
+ "WST": {
+ "name": "Samoan Tala",
+ "symbol": "WST"
+ },
+ "STD": {
+ "name": "São Tomé and Príncipe Dobra",
+ "symbol": "STD"
+ },
+ "SAR": {
+ "name": "Saudi Riyal",
+ "symbol": "SAR"
+ },
+ "RSD": {
+ "name": "Serbian Dinar",
+ "symbol": "RSD"
+ },
+ "SCR": {
+ "name": "Seychellois Rupee",
+ "symbol": "SCR"
+ },
+ "SLL": {
+ "name": "Sierra Leonean Leone",
+ "symbol": "SLL"
+ },
+ "SGD": {
+ "name": "Singapore Dollar",
+ "symbol": "SGD"
+ },
+ "SBD": {
+ "name": "Solomon Islands Dollar",
+ "symbol": "SBD"
+ },
+ "SOS": {
+ "name": "Somali Shilling",
+ "symbol": "SOS"
+ },
+ "ZAR": {
+ "name": "South African Rand",
+ "symbol": "ZAR"
+ },
+ "KRW": {
+ "name": "South Korean Won",
+ "symbol": "â‚©"
+ },
+ "SSP": {
+ "name": "South Sudanese Pound",
+ "symbol": "SSP"
+ },
+ "LKR": {
+ "name": "Sri Lankan Rupee",
+ "symbol": "LKR"
+ },
+ "SDG": {
+ "name": "Sudanese Pound",
+ "symbol": "SDG"
+ },
+ "SRD": {
+ "name": "Surinamese Dollar",
+ "symbol": "SRD"
+ },
+ "SZL": {
+ "name": "Swazi Lilangeni",
+ "symbol": "SZL"
+ },
+ "SEK": {
+ "name": "Swedish Krona",
+ "symbol": "SEK"
+ },
+ "CHF": {
+ "name": "Swiss Franc",
+ "symbol": "CHF"
+ },
+ "SYP": {
+ "name": "Syrian Pound",
+ "symbol": "SYP"
+ },
+ "TJS": {
+ "name": "Tajikistani Somoni",
+ "symbol": "TJS"
+ },
+ "TZS": {
+ "name": "Tanzanian Shilling",
+ "symbol": "TZS"
+ },
+ "THB": {
+ "name": "Thai Baht",
+ "symbol": "฿"
+ },
+ "TOP": {
+ "name": "Tongan Paʻanga",
+ "symbol": "TOP"
+ },
+ "TTD": {
+ "name": "Trinidad and Tobago Dollar",
+ "symbol": "TTD"
+ },
+ "TND": {
+ "name": "Tunisian Dinar",
+ "symbol": "TND"
+ },
+ "TRY": {
+ "name": "Turkish Lira",
+ "symbol": "TRY"
+ },
+ "TMT": {
+ "name": "Turkmenistani Manat",
+ "symbol": "TMT"
+ },
+ "UGX": {
+ "name": "Ugandan Shilling",
+ "symbol": "UGX"
+ },
+ "UAH": {
+ "name": "Ukrainian Hryvnia",
+ "symbol": "UAH"
+ },
+ "AED": {
+ "name": "United Arab Emirates Dirham",
+ "symbol": "AED"
+ },
+ "UYU": {
+ "name": "Uruguayan Peso",
+ "symbol": "UYU"
+ },
+ "USD": {
+ "name": "US Dollar",
+ "symbol": "US$"
+ },
+ "UZS": {
+ "name": "Uzbekistan Som",
+ "symbol": "UZS"
+ },
+ "VUV": {
+ "name": "Vanuatu Vatu",
+ "symbol": "VUV"
+ },
+ "VEF": {
+ "name": "Venezuelan Bolívar",
+ "symbol": "VEF"
+ },
+ "VND": {
+ "name": "Vietnamese Dong",
+ "symbol": "â‚«"
+ },
+ "YER": {
+ "name": "Yemeni Rial",
+ "symbol": "YER"
+ },
+ "ZMW": {
+ "name": "Zambian Kwacha",
+ "symbol": "ZMW"
+ },
+ "ZWL": {
+ "name": "Zimbabwean Dollar (2009)",
+ "symbol": "ZWL"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/currency/en-IE.json b/library/intl/resources/currency/en-IE.json
new file mode 100644
index 000000000..2dbdae5ca
--- /dev/null
+++ b/library/intl/resources/currency/en-IE.json
@@ -0,0 +1,634 @@
+{
+ "AFN": {
+ "name": "Afghan Afghani",
+ "symbol": "AFN"
+ },
+ "ALL": {
+ "name": "Albanian Lek",
+ "symbol": "ALL"
+ },
+ "DZD": {
+ "name": "Algerian Dinar",
+ "symbol": "DZD"
+ },
+ "AOA": {
+ "name": "Angolan Kwanza",
+ "symbol": "AOA"
+ },
+ "ARS": {
+ "name": "Argentine Peso",
+ "symbol": "ARS"
+ },
+ "AMD": {
+ "name": "Armenian Dram",
+ "symbol": "AMD"
+ },
+ "AWG": {
+ "name": "Aruban Florin",
+ "symbol": "AWG"
+ },
+ "AUD": {
+ "name": "Australian Dollar",
+ "symbol": "A$"
+ },
+ "AZN": {
+ "name": "Azerbaijani Manat",
+ "symbol": "AZN"
+ },
+ "BSD": {
+ "name": "Bahamian Dollar",
+ "symbol": "BSD"
+ },
+ "BHD": {
+ "name": "Bahraini Dinar",
+ "symbol": "BHD"
+ },
+ "BDT": {
+ "name": "Bangladeshi Taka",
+ "symbol": "BDT"
+ },
+ "BBD": {
+ "name": "Barbadian Dollar",
+ "symbol": "BBD"
+ },
+ "BYR": {
+ "name": "Belarusian Ruble",
+ "symbol": "BYR"
+ },
+ "BZD": {
+ "name": "Belize Dollar",
+ "symbol": "BZD"
+ },
+ "BMD": {
+ "name": "Bermudan Dollar",
+ "symbol": "BMD"
+ },
+ "BTN": {
+ "name": "Bhutanese Ngultrum",
+ "symbol": "BTN"
+ },
+ "BOB": {
+ "name": "Bolivian Boliviano",
+ "symbol": "BOB"
+ },
+ "BAM": {
+ "name": "Bosnia-Herzegovina Convertible Mark",
+ "symbol": "BAM"
+ },
+ "BWP": {
+ "name": "Botswanan Pula",
+ "symbol": "BWP"
+ },
+ "BRL": {
+ "name": "Brazilian Real",
+ "symbol": "R$"
+ },
+ "GBP": {
+ "name": "British Pound Sterling",
+ "symbol": "£"
+ },
+ "BND": {
+ "name": "Brunei Dollar",
+ "symbol": "BND"
+ },
+ "BGN": {
+ "name": "Bulgarian Lev",
+ "symbol": "BGN"
+ },
+ "BIF": {
+ "name": "Burundian Franc",
+ "symbol": "BIF"
+ },
+ "KHR": {
+ "name": "Cambodian Riel",
+ "symbol": "KHR"
+ },
+ "CAD": {
+ "name": "Canadian Dollar",
+ "symbol": "CA$"
+ },
+ "CVE": {
+ "name": "Cape Verdean Escudo",
+ "symbol": "CVE"
+ },
+ "KYD": {
+ "name": "Cayman Islands Dollar",
+ "symbol": "KYD"
+ },
+ "XOF": {
+ "name": "CFA Franc BCEAO",
+ "symbol": "CFA"
+ },
+ "XAF": {
+ "name": "CFA Franc BEAC",
+ "symbol": "FCFA"
+ },
+ "XPF": {
+ "name": "CFP Franc",
+ "symbol": "CFPF"
+ },
+ "CLP": {
+ "name": "Chilean Peso",
+ "symbol": "CLP"
+ },
+ "CNY": {
+ "name": "Chinese Yuan",
+ "symbol": "CNÂ¥"
+ },
+ "COP": {
+ "name": "Colombian Peso",
+ "symbol": "COP"
+ },
+ "KMF": {
+ "name": "Comorian Franc",
+ "symbol": "KMF"
+ },
+ "CDF": {
+ "name": "Congolese Franc",
+ "symbol": "CDF"
+ },
+ "CRC": {
+ "name": "Costa Rican Colón",
+ "symbol": "CRC"
+ },
+ "HRK": {
+ "name": "Croatian Kuna",
+ "symbol": "HRK"
+ },
+ "CUC": {
+ "name": "Cuban Convertible Peso",
+ "symbol": "CUC"
+ },
+ "CUP": {
+ "name": "Cuban Peso",
+ "symbol": "CUP"
+ },
+ "CZK": {
+ "name": "Czech Republic Koruna",
+ "symbol": "CZK"
+ },
+ "DKK": {
+ "name": "Danish Krone",
+ "symbol": "DKK"
+ },
+ "DJF": {
+ "name": "Djiboutian Franc",
+ "symbol": "DJF"
+ },
+ "DOP": {
+ "name": "Dominican Peso",
+ "symbol": "DOP"
+ },
+ "XCD": {
+ "name": "East Caribbean Dollar",
+ "symbol": "EC$"
+ },
+ "EGP": {
+ "name": "Egyptian Pound",
+ "symbol": "EGP"
+ },
+ "ERN": {
+ "name": "Eritrean Nakfa",
+ "symbol": "ERN"
+ },
+ "ETB": {
+ "name": "Ethiopian Birr",
+ "symbol": "ETB"
+ },
+ "EUR": {
+ "name": "Euro",
+ "symbol": "€"
+ },
+ "FKP": {
+ "name": "Falkland Islands Pound",
+ "symbol": "FKP"
+ },
+ "FJD": {
+ "name": "Fijian Dollar",
+ "symbol": "FJD"
+ },
+ "GMD": {
+ "name": "Gambian Dalasi",
+ "symbol": "GMD"
+ },
+ "GEL": {
+ "name": "Georgian Lari",
+ "symbol": "GEL"
+ },
+ "GHS": {
+ "name": "Ghanaian Cedi",
+ "symbol": "GHS"
+ },
+ "GIP": {
+ "name": "Gibraltar Pound",
+ "symbol": "GIP"
+ },
+ "GTQ": {
+ "name": "Guatemalan Quetzal",
+ "symbol": "GTQ"
+ },
+ "GNF": {
+ "name": "Guinean Franc",
+ "symbol": "GNF"
+ },
+ "GYD": {
+ "name": "Guyanaese Dollar",
+ "symbol": "GYD"
+ },
+ "HTG": {
+ "name": "Haitian Gourde",
+ "symbol": "HTG"
+ },
+ "HNL": {
+ "name": "Honduran Lempira",
+ "symbol": "HNL"
+ },
+ "HKD": {
+ "name": "Hong Kong Dollar",
+ "symbol": "HK$"
+ },
+ "HUF": {
+ "name": "Hungarian Forint",
+ "symbol": "HUF"
+ },
+ "ISK": {
+ "name": "Icelandic Króna",
+ "symbol": "ISK"
+ },
+ "INR": {
+ "name": "Indian Rupee",
+ "symbol": "₹"
+ },
+ "IDR": {
+ "name": "Indonesian Rupiah",
+ "symbol": "IDR"
+ },
+ "IRR": {
+ "name": "Iranian Rial",
+ "symbol": "IRR"
+ },
+ "IQD": {
+ "name": "Iraqi Dinar",
+ "symbol": "IQD"
+ },
+ "ILS": {
+ "name": "Israeli New Shekel",
+ "symbol": "₪"
+ },
+ "JMD": {
+ "name": "Jamaican Dollar",
+ "symbol": "JMD"
+ },
+ "JPY": {
+ "name": "Japanese Yen",
+ "symbol": "Â¥"
+ },
+ "JOD": {
+ "name": "Jordanian Dinar",
+ "symbol": "JOD"
+ },
+ "KZT": {
+ "name": "Kazakhstani Tenge",
+ "symbol": "KZT"
+ },
+ "KES": {
+ "name": "Kenyan Shilling",
+ "symbol": "KES"
+ },
+ "KWD": {
+ "name": "Kuwaiti Dinar",
+ "symbol": "KWD"
+ },
+ "KGS": {
+ "name": "Kyrgystani Som",
+ "symbol": "KGS"
+ },
+ "LAK": {
+ "name": "Laotian Kip",
+ "symbol": "LAK"
+ },
+ "LBP": {
+ "name": "Lebanese Pound",
+ "symbol": "LBP"
+ },
+ "LSL": {
+ "name": "Lesotho Loti",
+ "symbol": "LSL"
+ },
+ "LRD": {
+ "name": "Liberian Dollar",
+ "symbol": "LRD"
+ },
+ "LYD": {
+ "name": "Libyan Dinar",
+ "symbol": "LYD"
+ },
+ "LTL": {
+ "name": "Lithuanian Litas",
+ "symbol": "LTL"
+ },
+ "MOP": {
+ "name": "Macanese Pataca",
+ "symbol": "MOP"
+ },
+ "MKD": {
+ "name": "Macedonian Denar",
+ "symbol": "MKD"
+ },
+ "MGA": {
+ "name": "Malagasy Ariary",
+ "symbol": "MGA"
+ },
+ "MWK": {
+ "name": "Malawian Kwacha",
+ "symbol": "MWK"
+ },
+ "MYR": {
+ "name": "Malaysian Ringgit",
+ "symbol": "MYR"
+ },
+ "MVR": {
+ "name": "Maldivian Rufiyaa",
+ "symbol": "MVR"
+ },
+ "MRO": {
+ "name": "Mauritanian Ouguiya",
+ "symbol": "MRO"
+ },
+ "MUR": {
+ "name": "Mauritian Rupee",
+ "symbol": "MUR"
+ },
+ "MXN": {
+ "name": "Mexican Peso",
+ "symbol": "MX$"
+ },
+ "MDL": {
+ "name": "Moldovan Leu",
+ "symbol": "MDL"
+ },
+ "MNT": {
+ "name": "Mongolian Tugrik",
+ "symbol": "MNT"
+ },
+ "MAD": {
+ "name": "Moroccan Dirham",
+ "symbol": "MAD"
+ },
+ "MZN": {
+ "name": "Mozambican Metical",
+ "symbol": "MZN"
+ },
+ "MMK": {
+ "name": "Myanmar Kyat",
+ "symbol": "MMK"
+ },
+ "NAD": {
+ "name": "Namibian Dollar",
+ "symbol": "NAD"
+ },
+ "NPR": {
+ "name": "Nepalese Rupee",
+ "symbol": "NPR"
+ },
+ "ANG": {
+ "name": "Netherlands Antillean Guilder",
+ "symbol": "ANG"
+ },
+ "TWD": {
+ "name": "New Taiwan Dollar",
+ "symbol": "NT$"
+ },
+ "NZD": {
+ "name": "New Zealand Dollar",
+ "symbol": "NZ$"
+ },
+ "NIO": {
+ "name": "Nicaraguan Córdoba",
+ "symbol": "NIO"
+ },
+ "NGN": {
+ "name": "Nigerian Naira",
+ "symbol": "NGN"
+ },
+ "KPW": {
+ "name": "North Korean Won",
+ "symbol": "KPW"
+ },
+ "NOK": {
+ "name": "Norwegian Krone",
+ "symbol": "NOK"
+ },
+ "OMR": {
+ "name": "Omani Rial",
+ "symbol": "OMR"
+ },
+ "PKR": {
+ "name": "Pakistani Rupee",
+ "symbol": "PKR"
+ },
+ "PAB": {
+ "name": "Panamanian Balboa",
+ "symbol": "PAB"
+ },
+ "PGK": {
+ "name": "Papua New Guinean Kina",
+ "symbol": "PGK"
+ },
+ "PYG": {
+ "name": "Paraguayan Guarani",
+ "symbol": "PYG"
+ },
+ "PEN": {
+ "name": "Peruvian Nuevo Sol",
+ "symbol": "PEN"
+ },
+ "PHP": {
+ "name": "Philippine Peso",
+ "symbol": "PHP"
+ },
+ "PLN": {
+ "name": "Polish Zloty",
+ "symbol": "PLN"
+ },
+ "QAR": {
+ "name": "Qatari Rial",
+ "symbol": "QAR"
+ },
+ "RON": {
+ "name": "Romanian Leu",
+ "symbol": "RON"
+ },
+ "RUB": {
+ "name": "Russian Ruble",
+ "symbol": "RUB"
+ },
+ "RWF": {
+ "name": "Rwandan Franc",
+ "symbol": "RWF"
+ },
+ "SHP": {
+ "name": "Saint Helena Pound",
+ "symbol": "SHP"
+ },
+ "SVC": {
+ "name": "Salvadoran Colón",
+ "symbol": "SVC"
+ },
+ "WST": {
+ "name": "Samoan Tala",
+ "symbol": "WST"
+ },
+ "STD": {
+ "name": "São Tomé and Príncipe Dobra",
+ "symbol": "STD"
+ },
+ "SAR": {
+ "name": "Saudi Riyal",
+ "symbol": "SAR"
+ },
+ "RSD": {
+ "name": "Serbian Dinar",
+ "symbol": "RSD"
+ },
+ "SCR": {
+ "name": "Seychellois Rupee",
+ "symbol": "SCR"
+ },
+ "SLL": {
+ "name": "Sierra Leonean Leone",
+ "symbol": "SLL"
+ },
+ "SGD": {
+ "name": "Singapore Dollar",
+ "symbol": "SGD"
+ },
+ "SBD": {
+ "name": "Solomon Islands Dollar",
+ "symbol": "SBD"
+ },
+ "SOS": {
+ "name": "Somali Shilling",
+ "symbol": "SOS"
+ },
+ "ZAR": {
+ "name": "South African Rand",
+ "symbol": "ZAR"
+ },
+ "KRW": {
+ "name": "South Korean Won",
+ "symbol": "â‚©"
+ },
+ "SSP": {
+ "name": "South Sudanese Pound",
+ "symbol": "SSP"
+ },
+ "LKR": {
+ "name": "Sri Lankan Rupee",
+ "symbol": "LKR"
+ },
+ "SDG": {
+ "name": "Sudanese Pound",
+ "symbol": "SDG"
+ },
+ "SRD": {
+ "name": "Surinamese Dollar",
+ "symbol": "SRD"
+ },
+ "SZL": {
+ "name": "Swazi Lilangeni",
+ "symbol": "SZL"
+ },
+ "SEK": {
+ "name": "Swedish Krona",
+ "symbol": "SEK"
+ },
+ "CHF": {
+ "name": "Swiss Franc",
+ "symbol": "CHF"
+ },
+ "SYP": {
+ "name": "Syrian Pound",
+ "symbol": "SYP"
+ },
+ "TJS": {
+ "name": "Tajikistani Somoni",
+ "symbol": "TJS"
+ },
+ "TZS": {
+ "name": "Tanzanian Shilling",
+ "symbol": "TZS"
+ },
+ "THB": {
+ "name": "Thai Baht",
+ "symbol": "฿"
+ },
+ "TOP": {
+ "name": "Tongan Paʻanga",
+ "symbol": "TOP"
+ },
+ "TTD": {
+ "name": "Trinidad and Tobago Dollar",
+ "symbol": "TTD"
+ },
+ "TND": {
+ "name": "Tunisian Dinar",
+ "symbol": "TND"
+ },
+ "TRY": {
+ "name": "Turkish Lira",
+ "symbol": "TRY"
+ },
+ "TMT": {
+ "name": "Turkmenistani Manat",
+ "symbol": "TMT"
+ },
+ "UGX": {
+ "name": "Ugandan Shilling",
+ "symbol": "UGX"
+ },
+ "UAH": {
+ "name": "Ukrainian Hryvnia",
+ "symbol": "UAH"
+ },
+ "AED": {
+ "name": "United Arab Emirates Dirham",
+ "symbol": "AED"
+ },
+ "UYU": {
+ "name": "Uruguayan Peso",
+ "symbol": "UYU"
+ },
+ "USD": {
+ "name": "US Dollar",
+ "symbol": "US$"
+ },
+ "UZS": {
+ "name": "Uzbekistan Som",
+ "symbol": "UZS"
+ },
+ "VUV": {
+ "name": "Vanuatu Vatu",
+ "symbol": "VUV"
+ },
+ "VEF": {
+ "name": "Venezuelan Bolívar",
+ "symbol": "VEF"
+ },
+ "VND": {
+ "name": "Vietnamese Dong",
+ "symbol": "â‚«"
+ },
+ "YER": {
+ "name": "Yemeni Rial",
+ "symbol": "YER"
+ },
+ "ZMW": {
+ "name": "Zambian Kwacha",
+ "symbol": "ZMW"
+ },
+ "ZWL": {
+ "name": "Zimbabwean Dollar (2009)",
+ "symbol": "ZWL"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/currency/en-IM.json b/library/intl/resources/currency/en-IM.json
new file mode 100644
index 000000000..2dbdae5ca
--- /dev/null
+++ b/library/intl/resources/currency/en-IM.json
@@ -0,0 +1,634 @@
+{
+ "AFN": {
+ "name": "Afghan Afghani",
+ "symbol": "AFN"
+ },
+ "ALL": {
+ "name": "Albanian Lek",
+ "symbol": "ALL"
+ },
+ "DZD": {
+ "name": "Algerian Dinar",
+ "symbol": "DZD"
+ },
+ "AOA": {
+ "name": "Angolan Kwanza",
+ "symbol": "AOA"
+ },
+ "ARS": {
+ "name": "Argentine Peso",
+ "symbol": "ARS"
+ },
+ "AMD": {
+ "name": "Armenian Dram",
+ "symbol": "AMD"
+ },
+ "AWG": {
+ "name": "Aruban Florin",
+ "symbol": "AWG"
+ },
+ "AUD": {
+ "name": "Australian Dollar",
+ "symbol": "A$"
+ },
+ "AZN": {
+ "name": "Azerbaijani Manat",
+ "symbol": "AZN"
+ },
+ "BSD": {
+ "name": "Bahamian Dollar",
+ "symbol": "BSD"
+ },
+ "BHD": {
+ "name": "Bahraini Dinar",
+ "symbol": "BHD"
+ },
+ "BDT": {
+ "name": "Bangladeshi Taka",
+ "symbol": "BDT"
+ },
+ "BBD": {
+ "name": "Barbadian Dollar",
+ "symbol": "BBD"
+ },
+ "BYR": {
+ "name": "Belarusian Ruble",
+ "symbol": "BYR"
+ },
+ "BZD": {
+ "name": "Belize Dollar",
+ "symbol": "BZD"
+ },
+ "BMD": {
+ "name": "Bermudan Dollar",
+ "symbol": "BMD"
+ },
+ "BTN": {
+ "name": "Bhutanese Ngultrum",
+ "symbol": "BTN"
+ },
+ "BOB": {
+ "name": "Bolivian Boliviano",
+ "symbol": "BOB"
+ },
+ "BAM": {
+ "name": "Bosnia-Herzegovina Convertible Mark",
+ "symbol": "BAM"
+ },
+ "BWP": {
+ "name": "Botswanan Pula",
+ "symbol": "BWP"
+ },
+ "BRL": {
+ "name": "Brazilian Real",
+ "symbol": "R$"
+ },
+ "GBP": {
+ "name": "British Pound Sterling",
+ "symbol": "£"
+ },
+ "BND": {
+ "name": "Brunei Dollar",
+ "symbol": "BND"
+ },
+ "BGN": {
+ "name": "Bulgarian Lev",
+ "symbol": "BGN"
+ },
+ "BIF": {
+ "name": "Burundian Franc",
+ "symbol": "BIF"
+ },
+ "KHR": {
+ "name": "Cambodian Riel",
+ "symbol": "KHR"
+ },
+ "CAD": {
+ "name": "Canadian Dollar",
+ "symbol": "CA$"
+ },
+ "CVE": {
+ "name": "Cape Verdean Escudo",
+ "symbol": "CVE"
+ },
+ "KYD": {
+ "name": "Cayman Islands Dollar",
+ "symbol": "KYD"
+ },
+ "XOF": {
+ "name": "CFA Franc BCEAO",
+ "symbol": "CFA"
+ },
+ "XAF": {
+ "name": "CFA Franc BEAC",
+ "symbol": "FCFA"
+ },
+ "XPF": {
+ "name": "CFP Franc",
+ "symbol": "CFPF"
+ },
+ "CLP": {
+ "name": "Chilean Peso",
+ "symbol": "CLP"
+ },
+ "CNY": {
+ "name": "Chinese Yuan",
+ "symbol": "CNÂ¥"
+ },
+ "COP": {
+ "name": "Colombian Peso",
+ "symbol": "COP"
+ },
+ "KMF": {
+ "name": "Comorian Franc",
+ "symbol": "KMF"
+ },
+ "CDF": {
+ "name": "Congolese Franc",
+ "symbol": "CDF"
+ },
+ "CRC": {
+ "name": "Costa Rican Colón",
+ "symbol": "CRC"
+ },
+ "HRK": {
+ "name": "Croatian Kuna",
+ "symbol": "HRK"
+ },
+ "CUC": {
+ "name": "Cuban Convertible Peso",
+ "symbol": "CUC"
+ },
+ "CUP": {
+ "name": "Cuban Peso",
+ "symbol": "CUP"
+ },
+ "CZK": {
+ "name": "Czech Republic Koruna",
+ "symbol": "CZK"
+ },
+ "DKK": {
+ "name": "Danish Krone",
+ "symbol": "DKK"
+ },
+ "DJF": {
+ "name": "Djiboutian Franc",
+ "symbol": "DJF"
+ },
+ "DOP": {
+ "name": "Dominican Peso",
+ "symbol": "DOP"
+ },
+ "XCD": {
+ "name": "East Caribbean Dollar",
+ "symbol": "EC$"
+ },
+ "EGP": {
+ "name": "Egyptian Pound",
+ "symbol": "EGP"
+ },
+ "ERN": {
+ "name": "Eritrean Nakfa",
+ "symbol": "ERN"
+ },
+ "ETB": {
+ "name": "Ethiopian Birr",
+ "symbol": "ETB"
+ },
+ "EUR": {
+ "name": "Euro",
+ "symbol": "€"
+ },
+ "FKP": {
+ "name": "Falkland Islands Pound",
+ "symbol": "FKP"
+ },
+ "FJD": {
+ "name": "Fijian Dollar",
+ "symbol": "FJD"
+ },
+ "GMD": {
+ "name": "Gambian Dalasi",
+ "symbol": "GMD"
+ },
+ "GEL": {
+ "name": "Georgian Lari",
+ "symbol": "GEL"
+ },
+ "GHS": {
+ "name": "Ghanaian Cedi",
+ "symbol": "GHS"
+ },
+ "GIP": {
+ "name": "Gibraltar Pound",
+ "symbol": "GIP"
+ },
+ "GTQ": {
+ "name": "Guatemalan Quetzal",
+ "symbol": "GTQ"
+ },
+ "GNF": {
+ "name": "Guinean Franc",
+ "symbol": "GNF"
+ },
+ "GYD": {
+ "name": "Guyanaese Dollar",
+ "symbol": "GYD"
+ },
+ "HTG": {
+ "name": "Haitian Gourde",
+ "symbol": "HTG"
+ },
+ "HNL": {
+ "name": "Honduran Lempira",
+ "symbol": "HNL"
+ },
+ "HKD": {
+ "name": "Hong Kong Dollar",
+ "symbol": "HK$"
+ },
+ "HUF": {
+ "name": "Hungarian Forint",
+ "symbol": "HUF"
+ },
+ "ISK": {
+ "name": "Icelandic Króna",
+ "symbol": "ISK"
+ },
+ "INR": {
+ "name": "Indian Rupee",
+ "symbol": "₹"
+ },
+ "IDR": {
+ "name": "Indonesian Rupiah",
+ "symbol": "IDR"
+ },
+ "IRR": {
+ "name": "Iranian Rial",
+ "symbol": "IRR"
+ },
+ "IQD": {
+ "name": "Iraqi Dinar",
+ "symbol": "IQD"
+ },
+ "ILS": {
+ "name": "Israeli New Shekel",
+ "symbol": "₪"
+ },
+ "JMD": {
+ "name": "Jamaican Dollar",
+ "symbol": "JMD"
+ },
+ "JPY": {
+ "name": "Japanese Yen",
+ "symbol": "Â¥"
+ },
+ "JOD": {
+ "name": "Jordanian Dinar",
+ "symbol": "JOD"
+ },
+ "KZT": {
+ "name": "Kazakhstani Tenge",
+ "symbol": "KZT"
+ },
+ "KES": {
+ "name": "Kenyan Shilling",
+ "symbol": "KES"
+ },
+ "KWD": {
+ "name": "Kuwaiti Dinar",
+ "symbol": "KWD"
+ },
+ "KGS": {
+ "name": "Kyrgystani Som",
+ "symbol": "KGS"
+ },
+ "LAK": {
+ "name": "Laotian Kip",
+ "symbol": "LAK"
+ },
+ "LBP": {
+ "name": "Lebanese Pound",
+ "symbol": "LBP"
+ },
+ "LSL": {
+ "name": "Lesotho Loti",
+ "symbol": "LSL"
+ },
+ "LRD": {
+ "name": "Liberian Dollar",
+ "symbol": "LRD"
+ },
+ "LYD": {
+ "name": "Libyan Dinar",
+ "symbol": "LYD"
+ },
+ "LTL": {
+ "name": "Lithuanian Litas",
+ "symbol": "LTL"
+ },
+ "MOP": {
+ "name": "Macanese Pataca",
+ "symbol": "MOP"
+ },
+ "MKD": {
+ "name": "Macedonian Denar",
+ "symbol": "MKD"
+ },
+ "MGA": {
+ "name": "Malagasy Ariary",
+ "symbol": "MGA"
+ },
+ "MWK": {
+ "name": "Malawian Kwacha",
+ "symbol": "MWK"
+ },
+ "MYR": {
+ "name": "Malaysian Ringgit",
+ "symbol": "MYR"
+ },
+ "MVR": {
+ "name": "Maldivian Rufiyaa",
+ "symbol": "MVR"
+ },
+ "MRO": {
+ "name": "Mauritanian Ouguiya",
+ "symbol": "MRO"
+ },
+ "MUR": {
+ "name": "Mauritian Rupee",
+ "symbol": "MUR"
+ },
+ "MXN": {
+ "name": "Mexican Peso",
+ "symbol": "MX$"
+ },
+ "MDL": {
+ "name": "Moldovan Leu",
+ "symbol": "MDL"
+ },
+ "MNT": {
+ "name": "Mongolian Tugrik",
+ "symbol": "MNT"
+ },
+ "MAD": {
+ "name": "Moroccan Dirham",
+ "symbol": "MAD"
+ },
+ "MZN": {
+ "name": "Mozambican Metical",
+ "symbol": "MZN"
+ },
+ "MMK": {
+ "name": "Myanmar Kyat",
+ "symbol": "MMK"
+ },
+ "NAD": {
+ "name": "Namibian Dollar",
+ "symbol": "NAD"
+ },
+ "NPR": {
+ "name": "Nepalese Rupee",
+ "symbol": "NPR"
+ },
+ "ANG": {
+ "name": "Netherlands Antillean Guilder",
+ "symbol": "ANG"
+ },
+ "TWD": {
+ "name": "New Taiwan Dollar",
+ "symbol": "NT$"
+ },
+ "NZD": {
+ "name": "New Zealand Dollar",
+ "symbol": "NZ$"
+ },
+ "NIO": {
+ "name": "Nicaraguan Córdoba",
+ "symbol": "NIO"
+ },
+ "NGN": {
+ "name": "Nigerian Naira",
+ "symbol": "NGN"
+ },
+ "KPW": {
+ "name": "North Korean Won",
+ "symbol": "KPW"
+ },
+ "NOK": {
+ "name": "Norwegian Krone",
+ "symbol": "NOK"
+ },
+ "OMR": {
+ "name": "Omani Rial",
+ "symbol": "OMR"
+ },
+ "PKR": {
+ "name": "Pakistani Rupee",
+ "symbol": "PKR"
+ },
+ "PAB": {
+ "name": "Panamanian Balboa",
+ "symbol": "PAB"
+ },
+ "PGK": {
+ "name": "Papua New Guinean Kina",
+ "symbol": "PGK"
+ },
+ "PYG": {
+ "name": "Paraguayan Guarani",
+ "symbol": "PYG"
+ },
+ "PEN": {
+ "name": "Peruvian Nuevo Sol",
+ "symbol": "PEN"
+ },
+ "PHP": {
+ "name": "Philippine Peso",
+ "symbol": "PHP"
+ },
+ "PLN": {
+ "name": "Polish Zloty",
+ "symbol": "PLN"
+ },
+ "QAR": {
+ "name": "Qatari Rial",
+ "symbol": "QAR"
+ },
+ "RON": {
+ "name": "Romanian Leu",
+ "symbol": "RON"
+ },
+ "RUB": {
+ "name": "Russian Ruble",
+ "symbol": "RUB"
+ },
+ "RWF": {
+ "name": "Rwandan Franc",
+ "symbol": "RWF"
+ },
+ "SHP": {
+ "name": "Saint Helena Pound",
+ "symbol": "SHP"
+ },
+ "SVC": {
+ "name": "Salvadoran Colón",
+ "symbol": "SVC"
+ },
+ "WST": {
+ "name": "Samoan Tala",
+ "symbol": "WST"
+ },
+ "STD": {
+ "name": "São Tomé and Príncipe Dobra",
+ "symbol": "STD"
+ },
+ "SAR": {
+ "name": "Saudi Riyal",
+ "symbol": "SAR"
+ },
+ "RSD": {
+ "name": "Serbian Dinar",
+ "symbol": "RSD"
+ },
+ "SCR": {
+ "name": "Seychellois Rupee",
+ "symbol": "SCR"
+ },
+ "SLL": {
+ "name": "Sierra Leonean Leone",
+ "symbol": "SLL"
+ },
+ "SGD": {
+ "name": "Singapore Dollar",
+ "symbol": "SGD"
+ },
+ "SBD": {
+ "name": "Solomon Islands Dollar",
+ "symbol": "SBD"
+ },
+ "SOS": {
+ "name": "Somali Shilling",
+ "symbol": "SOS"
+ },
+ "ZAR": {
+ "name": "South African Rand",
+ "symbol": "ZAR"
+ },
+ "KRW": {
+ "name": "South Korean Won",
+ "symbol": "â‚©"
+ },
+ "SSP": {
+ "name": "South Sudanese Pound",
+ "symbol": "SSP"
+ },
+ "LKR": {
+ "name": "Sri Lankan Rupee",
+ "symbol": "LKR"
+ },
+ "SDG": {
+ "name": "Sudanese Pound",
+ "symbol": "SDG"
+ },
+ "SRD": {
+ "name": "Surinamese Dollar",
+ "symbol": "SRD"
+ },
+ "SZL": {
+ "name": "Swazi Lilangeni",
+ "symbol": "SZL"
+ },
+ "SEK": {
+ "name": "Swedish Krona",
+ "symbol": "SEK"
+ },
+ "CHF": {
+ "name": "Swiss Franc",
+ "symbol": "CHF"
+ },
+ "SYP": {
+ "name": "Syrian Pound",
+ "symbol": "SYP"
+ },
+ "TJS": {
+ "name": "Tajikistani Somoni",
+ "symbol": "TJS"
+ },
+ "TZS": {
+ "name": "Tanzanian Shilling",
+ "symbol": "TZS"
+ },
+ "THB": {
+ "name": "Thai Baht",
+ "symbol": "฿"
+ },
+ "TOP": {
+ "name": "Tongan Paʻanga",
+ "symbol": "TOP"
+ },
+ "TTD": {
+ "name": "Trinidad and Tobago Dollar",
+ "symbol": "TTD"
+ },
+ "TND": {
+ "name": "Tunisian Dinar",
+ "symbol": "TND"
+ },
+ "TRY": {
+ "name": "Turkish Lira",
+ "symbol": "TRY"
+ },
+ "TMT": {
+ "name": "Turkmenistani Manat",
+ "symbol": "TMT"
+ },
+ "UGX": {
+ "name": "Ugandan Shilling",
+ "symbol": "UGX"
+ },
+ "UAH": {
+ "name": "Ukrainian Hryvnia",
+ "symbol": "UAH"
+ },
+ "AED": {
+ "name": "United Arab Emirates Dirham",
+ "symbol": "AED"
+ },
+ "UYU": {
+ "name": "Uruguayan Peso",
+ "symbol": "UYU"
+ },
+ "USD": {
+ "name": "US Dollar",
+ "symbol": "US$"
+ },
+ "UZS": {
+ "name": "Uzbekistan Som",
+ "symbol": "UZS"
+ },
+ "VUV": {
+ "name": "Vanuatu Vatu",
+ "symbol": "VUV"
+ },
+ "VEF": {
+ "name": "Venezuelan Bolívar",
+ "symbol": "VEF"
+ },
+ "VND": {
+ "name": "Vietnamese Dong",
+ "symbol": "â‚«"
+ },
+ "YER": {
+ "name": "Yemeni Rial",
+ "symbol": "YER"
+ },
+ "ZMW": {
+ "name": "Zambian Kwacha",
+ "symbol": "ZMW"
+ },
+ "ZWL": {
+ "name": "Zimbabwean Dollar (2009)",
+ "symbol": "ZWL"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/currency/en-IN.json b/library/intl/resources/currency/en-IN.json
new file mode 100644
index 000000000..2dbdae5ca
--- /dev/null
+++ b/library/intl/resources/currency/en-IN.json
@@ -0,0 +1,634 @@
+{
+ "AFN": {
+ "name": "Afghan Afghani",
+ "symbol": "AFN"
+ },
+ "ALL": {
+ "name": "Albanian Lek",
+ "symbol": "ALL"
+ },
+ "DZD": {
+ "name": "Algerian Dinar",
+ "symbol": "DZD"
+ },
+ "AOA": {
+ "name": "Angolan Kwanza",
+ "symbol": "AOA"
+ },
+ "ARS": {
+ "name": "Argentine Peso",
+ "symbol": "ARS"
+ },
+ "AMD": {
+ "name": "Armenian Dram",
+ "symbol": "AMD"
+ },
+ "AWG": {
+ "name": "Aruban Florin",
+ "symbol": "AWG"
+ },
+ "AUD": {
+ "name": "Australian Dollar",
+ "symbol": "A$"
+ },
+ "AZN": {
+ "name": "Azerbaijani Manat",
+ "symbol": "AZN"
+ },
+ "BSD": {
+ "name": "Bahamian Dollar",
+ "symbol": "BSD"
+ },
+ "BHD": {
+ "name": "Bahraini Dinar",
+ "symbol": "BHD"
+ },
+ "BDT": {
+ "name": "Bangladeshi Taka",
+ "symbol": "BDT"
+ },
+ "BBD": {
+ "name": "Barbadian Dollar",
+ "symbol": "BBD"
+ },
+ "BYR": {
+ "name": "Belarusian Ruble",
+ "symbol": "BYR"
+ },
+ "BZD": {
+ "name": "Belize Dollar",
+ "symbol": "BZD"
+ },
+ "BMD": {
+ "name": "Bermudan Dollar",
+ "symbol": "BMD"
+ },
+ "BTN": {
+ "name": "Bhutanese Ngultrum",
+ "symbol": "BTN"
+ },
+ "BOB": {
+ "name": "Bolivian Boliviano",
+ "symbol": "BOB"
+ },
+ "BAM": {
+ "name": "Bosnia-Herzegovina Convertible Mark",
+ "symbol": "BAM"
+ },
+ "BWP": {
+ "name": "Botswanan Pula",
+ "symbol": "BWP"
+ },
+ "BRL": {
+ "name": "Brazilian Real",
+ "symbol": "R$"
+ },
+ "GBP": {
+ "name": "British Pound Sterling",
+ "symbol": "£"
+ },
+ "BND": {
+ "name": "Brunei Dollar",
+ "symbol": "BND"
+ },
+ "BGN": {
+ "name": "Bulgarian Lev",
+ "symbol": "BGN"
+ },
+ "BIF": {
+ "name": "Burundian Franc",
+ "symbol": "BIF"
+ },
+ "KHR": {
+ "name": "Cambodian Riel",
+ "symbol": "KHR"
+ },
+ "CAD": {
+ "name": "Canadian Dollar",
+ "symbol": "CA$"
+ },
+ "CVE": {
+ "name": "Cape Verdean Escudo",
+ "symbol": "CVE"
+ },
+ "KYD": {
+ "name": "Cayman Islands Dollar",
+ "symbol": "KYD"
+ },
+ "XOF": {
+ "name": "CFA Franc BCEAO",
+ "symbol": "CFA"
+ },
+ "XAF": {
+ "name": "CFA Franc BEAC",
+ "symbol": "FCFA"
+ },
+ "XPF": {
+ "name": "CFP Franc",
+ "symbol": "CFPF"
+ },
+ "CLP": {
+ "name": "Chilean Peso",
+ "symbol": "CLP"
+ },
+ "CNY": {
+ "name": "Chinese Yuan",
+ "symbol": "CNÂ¥"
+ },
+ "COP": {
+ "name": "Colombian Peso",
+ "symbol": "COP"
+ },
+ "KMF": {
+ "name": "Comorian Franc",
+ "symbol": "KMF"
+ },
+ "CDF": {
+ "name": "Congolese Franc",
+ "symbol": "CDF"
+ },
+ "CRC": {
+ "name": "Costa Rican Colón",
+ "symbol": "CRC"
+ },
+ "HRK": {
+ "name": "Croatian Kuna",
+ "symbol": "HRK"
+ },
+ "CUC": {
+ "name": "Cuban Convertible Peso",
+ "symbol": "CUC"
+ },
+ "CUP": {
+ "name": "Cuban Peso",
+ "symbol": "CUP"
+ },
+ "CZK": {
+ "name": "Czech Republic Koruna",
+ "symbol": "CZK"
+ },
+ "DKK": {
+ "name": "Danish Krone",
+ "symbol": "DKK"
+ },
+ "DJF": {
+ "name": "Djiboutian Franc",
+ "symbol": "DJF"
+ },
+ "DOP": {
+ "name": "Dominican Peso",
+ "symbol": "DOP"
+ },
+ "XCD": {
+ "name": "East Caribbean Dollar",
+ "symbol": "EC$"
+ },
+ "EGP": {
+ "name": "Egyptian Pound",
+ "symbol": "EGP"
+ },
+ "ERN": {
+ "name": "Eritrean Nakfa",
+ "symbol": "ERN"
+ },
+ "ETB": {
+ "name": "Ethiopian Birr",
+ "symbol": "ETB"
+ },
+ "EUR": {
+ "name": "Euro",
+ "symbol": "€"
+ },
+ "FKP": {
+ "name": "Falkland Islands Pound",
+ "symbol": "FKP"
+ },
+ "FJD": {
+ "name": "Fijian Dollar",
+ "symbol": "FJD"
+ },
+ "GMD": {
+ "name": "Gambian Dalasi",
+ "symbol": "GMD"
+ },
+ "GEL": {
+ "name": "Georgian Lari",
+ "symbol": "GEL"
+ },
+ "GHS": {
+ "name": "Ghanaian Cedi",
+ "symbol": "GHS"
+ },
+ "GIP": {
+ "name": "Gibraltar Pound",
+ "symbol": "GIP"
+ },
+ "GTQ": {
+ "name": "Guatemalan Quetzal",
+ "symbol": "GTQ"
+ },
+ "GNF": {
+ "name": "Guinean Franc",
+ "symbol": "GNF"
+ },
+ "GYD": {
+ "name": "Guyanaese Dollar",
+ "symbol": "GYD"
+ },
+ "HTG": {
+ "name": "Haitian Gourde",
+ "symbol": "HTG"
+ },
+ "HNL": {
+ "name": "Honduran Lempira",
+ "symbol": "HNL"
+ },
+ "HKD": {
+ "name": "Hong Kong Dollar",
+ "symbol": "HK$"
+ },
+ "HUF": {
+ "name": "Hungarian Forint",
+ "symbol": "HUF"
+ },
+ "ISK": {
+ "name": "Icelandic Króna",
+ "symbol": "ISK"
+ },
+ "INR": {
+ "name": "Indian Rupee",
+ "symbol": "₹"
+ },
+ "IDR": {
+ "name": "Indonesian Rupiah",
+ "symbol": "IDR"
+ },
+ "IRR": {
+ "name": "Iranian Rial",
+ "symbol": "IRR"
+ },
+ "IQD": {
+ "name": "Iraqi Dinar",
+ "symbol": "IQD"
+ },
+ "ILS": {
+ "name": "Israeli New Shekel",
+ "symbol": "₪"
+ },
+ "JMD": {
+ "name": "Jamaican Dollar",
+ "symbol": "JMD"
+ },
+ "JPY": {
+ "name": "Japanese Yen",
+ "symbol": "Â¥"
+ },
+ "JOD": {
+ "name": "Jordanian Dinar",
+ "symbol": "JOD"
+ },
+ "KZT": {
+ "name": "Kazakhstani Tenge",
+ "symbol": "KZT"
+ },
+ "KES": {
+ "name": "Kenyan Shilling",
+ "symbol": "KES"
+ },
+ "KWD": {
+ "name": "Kuwaiti Dinar",
+ "symbol": "KWD"
+ },
+ "KGS": {
+ "name": "Kyrgystani Som",
+ "symbol": "KGS"
+ },
+ "LAK": {
+ "name": "Laotian Kip",
+ "symbol": "LAK"
+ },
+ "LBP": {
+ "name": "Lebanese Pound",
+ "symbol": "LBP"
+ },
+ "LSL": {
+ "name": "Lesotho Loti",
+ "symbol": "LSL"
+ },
+ "LRD": {
+ "name": "Liberian Dollar",
+ "symbol": "LRD"
+ },
+ "LYD": {
+ "name": "Libyan Dinar",
+ "symbol": "LYD"
+ },
+ "LTL": {
+ "name": "Lithuanian Litas",
+ "symbol": "LTL"
+ },
+ "MOP": {
+ "name": "Macanese Pataca",
+ "symbol": "MOP"
+ },
+ "MKD": {
+ "name": "Macedonian Denar",
+ "symbol": "MKD"
+ },
+ "MGA": {
+ "name": "Malagasy Ariary",
+ "symbol": "MGA"
+ },
+ "MWK": {
+ "name": "Malawian Kwacha",
+ "symbol": "MWK"
+ },
+ "MYR": {
+ "name": "Malaysian Ringgit",
+ "symbol": "MYR"
+ },
+ "MVR": {
+ "name": "Maldivian Rufiyaa",
+ "symbol": "MVR"
+ },
+ "MRO": {
+ "name": "Mauritanian Ouguiya",
+ "symbol": "MRO"
+ },
+ "MUR": {
+ "name": "Mauritian Rupee",
+ "symbol": "MUR"
+ },
+ "MXN": {
+ "name": "Mexican Peso",
+ "symbol": "MX$"
+ },
+ "MDL": {
+ "name": "Moldovan Leu",
+ "symbol": "MDL"
+ },
+ "MNT": {
+ "name": "Mongolian Tugrik",
+ "symbol": "MNT"
+ },
+ "MAD": {
+ "name": "Moroccan Dirham",
+ "symbol": "MAD"
+ },
+ "MZN": {
+ "name": "Mozambican Metical",
+ "symbol": "MZN"
+ },
+ "MMK": {
+ "name": "Myanmar Kyat",
+ "symbol": "MMK"
+ },
+ "NAD": {
+ "name": "Namibian Dollar",
+ "symbol": "NAD"
+ },
+ "NPR": {
+ "name": "Nepalese Rupee",
+ "symbol": "NPR"
+ },
+ "ANG": {
+ "name": "Netherlands Antillean Guilder",
+ "symbol": "ANG"
+ },
+ "TWD": {
+ "name": "New Taiwan Dollar",
+ "symbol": "NT$"
+ },
+ "NZD": {
+ "name": "New Zealand Dollar",
+ "symbol": "NZ$"
+ },
+ "NIO": {
+ "name": "Nicaraguan Córdoba",
+ "symbol": "NIO"
+ },
+ "NGN": {
+ "name": "Nigerian Naira",
+ "symbol": "NGN"
+ },
+ "KPW": {
+ "name": "North Korean Won",
+ "symbol": "KPW"
+ },
+ "NOK": {
+ "name": "Norwegian Krone",
+ "symbol": "NOK"
+ },
+ "OMR": {
+ "name": "Omani Rial",
+ "symbol": "OMR"
+ },
+ "PKR": {
+ "name": "Pakistani Rupee",
+ "symbol": "PKR"
+ },
+ "PAB": {
+ "name": "Panamanian Balboa",
+ "symbol": "PAB"
+ },
+ "PGK": {
+ "name": "Papua New Guinean Kina",
+ "symbol": "PGK"
+ },
+ "PYG": {
+ "name": "Paraguayan Guarani",
+ "symbol": "PYG"
+ },
+ "PEN": {
+ "name": "Peruvian Nuevo Sol",
+ "symbol": "PEN"
+ },
+ "PHP": {
+ "name": "Philippine Peso",
+ "symbol": "PHP"
+ },
+ "PLN": {
+ "name": "Polish Zloty",
+ "symbol": "PLN"
+ },
+ "QAR": {
+ "name": "Qatari Rial",
+ "symbol": "QAR"
+ },
+ "RON": {
+ "name": "Romanian Leu",
+ "symbol": "RON"
+ },
+ "RUB": {
+ "name": "Russian Ruble",
+ "symbol": "RUB"
+ },
+ "RWF": {
+ "name": "Rwandan Franc",
+ "symbol": "RWF"
+ },
+ "SHP": {
+ "name": "Saint Helena Pound",
+ "symbol": "SHP"
+ },
+ "SVC": {
+ "name": "Salvadoran Colón",
+ "symbol": "SVC"
+ },
+ "WST": {
+ "name": "Samoan Tala",
+ "symbol": "WST"
+ },
+ "STD": {
+ "name": "São Tomé and Príncipe Dobra",
+ "symbol": "STD"
+ },
+ "SAR": {
+ "name": "Saudi Riyal",
+ "symbol": "SAR"
+ },
+ "RSD": {
+ "name": "Serbian Dinar",
+ "symbol": "RSD"
+ },
+ "SCR": {
+ "name": "Seychellois Rupee",
+ "symbol": "SCR"
+ },
+ "SLL": {
+ "name": "Sierra Leonean Leone",
+ "symbol": "SLL"
+ },
+ "SGD": {
+ "name": "Singapore Dollar",
+ "symbol": "SGD"
+ },
+ "SBD": {
+ "name": "Solomon Islands Dollar",
+ "symbol": "SBD"
+ },
+ "SOS": {
+ "name": "Somali Shilling",
+ "symbol": "SOS"
+ },
+ "ZAR": {
+ "name": "South African Rand",
+ "symbol": "ZAR"
+ },
+ "KRW": {
+ "name": "South Korean Won",
+ "symbol": "â‚©"
+ },
+ "SSP": {
+ "name": "South Sudanese Pound",
+ "symbol": "SSP"
+ },
+ "LKR": {
+ "name": "Sri Lankan Rupee",
+ "symbol": "LKR"
+ },
+ "SDG": {
+ "name": "Sudanese Pound",
+ "symbol": "SDG"
+ },
+ "SRD": {
+ "name": "Surinamese Dollar",
+ "symbol": "SRD"
+ },
+ "SZL": {
+ "name": "Swazi Lilangeni",
+ "symbol": "SZL"
+ },
+ "SEK": {
+ "name": "Swedish Krona",
+ "symbol": "SEK"
+ },
+ "CHF": {
+ "name": "Swiss Franc",
+ "symbol": "CHF"
+ },
+ "SYP": {
+ "name": "Syrian Pound",
+ "symbol": "SYP"
+ },
+ "TJS": {
+ "name": "Tajikistani Somoni",
+ "symbol": "TJS"
+ },
+ "TZS": {
+ "name": "Tanzanian Shilling",
+ "symbol": "TZS"
+ },
+ "THB": {
+ "name": "Thai Baht",
+ "symbol": "฿"
+ },
+ "TOP": {
+ "name": "Tongan Paʻanga",
+ "symbol": "TOP"
+ },
+ "TTD": {
+ "name": "Trinidad and Tobago Dollar",
+ "symbol": "TTD"
+ },
+ "TND": {
+ "name": "Tunisian Dinar",
+ "symbol": "TND"
+ },
+ "TRY": {
+ "name": "Turkish Lira",
+ "symbol": "TRY"
+ },
+ "TMT": {
+ "name": "Turkmenistani Manat",
+ "symbol": "TMT"
+ },
+ "UGX": {
+ "name": "Ugandan Shilling",
+ "symbol": "UGX"
+ },
+ "UAH": {
+ "name": "Ukrainian Hryvnia",
+ "symbol": "UAH"
+ },
+ "AED": {
+ "name": "United Arab Emirates Dirham",
+ "symbol": "AED"
+ },
+ "UYU": {
+ "name": "Uruguayan Peso",
+ "symbol": "UYU"
+ },
+ "USD": {
+ "name": "US Dollar",
+ "symbol": "US$"
+ },
+ "UZS": {
+ "name": "Uzbekistan Som",
+ "symbol": "UZS"
+ },
+ "VUV": {
+ "name": "Vanuatu Vatu",
+ "symbol": "VUV"
+ },
+ "VEF": {
+ "name": "Venezuelan Bolívar",
+ "symbol": "VEF"
+ },
+ "VND": {
+ "name": "Vietnamese Dong",
+ "symbol": "â‚«"
+ },
+ "YER": {
+ "name": "Yemeni Rial",
+ "symbol": "YER"
+ },
+ "ZMW": {
+ "name": "Zambian Kwacha",
+ "symbol": "ZMW"
+ },
+ "ZWL": {
+ "name": "Zimbabwean Dollar (2009)",
+ "symbol": "ZWL"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/currency/en-IO.json b/library/intl/resources/currency/en-IO.json
new file mode 100644
index 000000000..2dbdae5ca
--- /dev/null
+++ b/library/intl/resources/currency/en-IO.json
@@ -0,0 +1,634 @@
+{
+ "AFN": {
+ "name": "Afghan Afghani",
+ "symbol": "AFN"
+ },
+ "ALL": {
+ "name": "Albanian Lek",
+ "symbol": "ALL"
+ },
+ "DZD": {
+ "name": "Algerian Dinar",
+ "symbol": "DZD"
+ },
+ "AOA": {
+ "name": "Angolan Kwanza",
+ "symbol": "AOA"
+ },
+ "ARS": {
+ "name": "Argentine Peso",
+ "symbol": "ARS"
+ },
+ "AMD": {
+ "name": "Armenian Dram",
+ "symbol": "AMD"
+ },
+ "AWG": {
+ "name": "Aruban Florin",
+ "symbol": "AWG"
+ },
+ "AUD": {
+ "name": "Australian Dollar",
+ "symbol": "A$"
+ },
+ "AZN": {
+ "name": "Azerbaijani Manat",
+ "symbol": "AZN"
+ },
+ "BSD": {
+ "name": "Bahamian Dollar",
+ "symbol": "BSD"
+ },
+ "BHD": {
+ "name": "Bahraini Dinar",
+ "symbol": "BHD"
+ },
+ "BDT": {
+ "name": "Bangladeshi Taka",
+ "symbol": "BDT"
+ },
+ "BBD": {
+ "name": "Barbadian Dollar",
+ "symbol": "BBD"
+ },
+ "BYR": {
+ "name": "Belarusian Ruble",
+ "symbol": "BYR"
+ },
+ "BZD": {
+ "name": "Belize Dollar",
+ "symbol": "BZD"
+ },
+ "BMD": {
+ "name": "Bermudan Dollar",
+ "symbol": "BMD"
+ },
+ "BTN": {
+ "name": "Bhutanese Ngultrum",
+ "symbol": "BTN"
+ },
+ "BOB": {
+ "name": "Bolivian Boliviano",
+ "symbol": "BOB"
+ },
+ "BAM": {
+ "name": "Bosnia-Herzegovina Convertible Mark",
+ "symbol": "BAM"
+ },
+ "BWP": {
+ "name": "Botswanan Pula",
+ "symbol": "BWP"
+ },
+ "BRL": {
+ "name": "Brazilian Real",
+ "symbol": "R$"
+ },
+ "GBP": {
+ "name": "British Pound Sterling",
+ "symbol": "£"
+ },
+ "BND": {
+ "name": "Brunei Dollar",
+ "symbol": "BND"
+ },
+ "BGN": {
+ "name": "Bulgarian Lev",
+ "symbol": "BGN"
+ },
+ "BIF": {
+ "name": "Burundian Franc",
+ "symbol": "BIF"
+ },
+ "KHR": {
+ "name": "Cambodian Riel",
+ "symbol": "KHR"
+ },
+ "CAD": {
+ "name": "Canadian Dollar",
+ "symbol": "CA$"
+ },
+ "CVE": {
+ "name": "Cape Verdean Escudo",
+ "symbol": "CVE"
+ },
+ "KYD": {
+ "name": "Cayman Islands Dollar",
+ "symbol": "KYD"
+ },
+ "XOF": {
+ "name": "CFA Franc BCEAO",
+ "symbol": "CFA"
+ },
+ "XAF": {
+ "name": "CFA Franc BEAC",
+ "symbol": "FCFA"
+ },
+ "XPF": {
+ "name": "CFP Franc",
+ "symbol": "CFPF"
+ },
+ "CLP": {
+ "name": "Chilean Peso",
+ "symbol": "CLP"
+ },
+ "CNY": {
+ "name": "Chinese Yuan",
+ "symbol": "CNÂ¥"
+ },
+ "COP": {
+ "name": "Colombian Peso",
+ "symbol": "COP"
+ },
+ "KMF": {
+ "name": "Comorian Franc",
+ "symbol": "KMF"
+ },
+ "CDF": {
+ "name": "Congolese Franc",
+ "symbol": "CDF"
+ },
+ "CRC": {
+ "name": "Costa Rican Colón",
+ "symbol": "CRC"
+ },
+ "HRK": {
+ "name": "Croatian Kuna",
+ "symbol": "HRK"
+ },
+ "CUC": {
+ "name": "Cuban Convertible Peso",
+ "symbol": "CUC"
+ },
+ "CUP": {
+ "name": "Cuban Peso",
+ "symbol": "CUP"
+ },
+ "CZK": {
+ "name": "Czech Republic Koruna",
+ "symbol": "CZK"
+ },
+ "DKK": {
+ "name": "Danish Krone",
+ "symbol": "DKK"
+ },
+ "DJF": {
+ "name": "Djiboutian Franc",
+ "symbol": "DJF"
+ },
+ "DOP": {
+ "name": "Dominican Peso",
+ "symbol": "DOP"
+ },
+ "XCD": {
+ "name": "East Caribbean Dollar",
+ "symbol": "EC$"
+ },
+ "EGP": {
+ "name": "Egyptian Pound",
+ "symbol": "EGP"
+ },
+ "ERN": {
+ "name": "Eritrean Nakfa",
+ "symbol": "ERN"
+ },
+ "ETB": {
+ "name": "Ethiopian Birr",
+ "symbol": "ETB"
+ },
+ "EUR": {
+ "name": "Euro",
+ "symbol": "€"
+ },
+ "FKP": {
+ "name": "Falkland Islands Pound",
+ "symbol": "FKP"
+ },
+ "FJD": {
+ "name": "Fijian Dollar",
+ "symbol": "FJD"
+ },
+ "GMD": {
+ "name": "Gambian Dalasi",
+ "symbol": "GMD"
+ },
+ "GEL": {
+ "name": "Georgian Lari",
+ "symbol": "GEL"
+ },
+ "GHS": {
+ "name": "Ghanaian Cedi",
+ "symbol": "GHS"
+ },
+ "GIP": {
+ "name": "Gibraltar Pound",
+ "symbol": "GIP"
+ },
+ "GTQ": {
+ "name": "Guatemalan Quetzal",
+ "symbol": "GTQ"
+ },
+ "GNF": {
+ "name": "Guinean Franc",
+ "symbol": "GNF"
+ },
+ "GYD": {
+ "name": "Guyanaese Dollar",
+ "symbol": "GYD"
+ },
+ "HTG": {
+ "name": "Haitian Gourde",
+ "symbol": "HTG"
+ },
+ "HNL": {
+ "name": "Honduran Lempira",
+ "symbol": "HNL"
+ },
+ "HKD": {
+ "name": "Hong Kong Dollar",
+ "symbol": "HK$"
+ },
+ "HUF": {
+ "name": "Hungarian Forint",
+ "symbol": "HUF"
+ },
+ "ISK": {
+ "name": "Icelandic Króna",
+ "symbol": "ISK"
+ },
+ "INR": {
+ "name": "Indian Rupee",
+ "symbol": "₹"
+ },
+ "IDR": {
+ "name": "Indonesian Rupiah",
+ "symbol": "IDR"
+ },
+ "IRR": {
+ "name": "Iranian Rial",
+ "symbol": "IRR"
+ },
+ "IQD": {
+ "name": "Iraqi Dinar",
+ "symbol": "IQD"
+ },
+ "ILS": {
+ "name": "Israeli New Shekel",
+ "symbol": "₪"
+ },
+ "JMD": {
+ "name": "Jamaican Dollar",
+ "symbol": "JMD"
+ },
+ "JPY": {
+ "name": "Japanese Yen",
+ "symbol": "Â¥"
+ },
+ "JOD": {
+ "name": "Jordanian Dinar",
+ "symbol": "JOD"
+ },
+ "KZT": {
+ "name": "Kazakhstani Tenge",
+ "symbol": "KZT"
+ },
+ "KES": {
+ "name": "Kenyan Shilling",
+ "symbol": "KES"
+ },
+ "KWD": {
+ "name": "Kuwaiti Dinar",
+ "symbol": "KWD"
+ },
+ "KGS": {
+ "name": "Kyrgystani Som",
+ "symbol": "KGS"
+ },
+ "LAK": {
+ "name": "Laotian Kip",
+ "symbol": "LAK"
+ },
+ "LBP": {
+ "name": "Lebanese Pound",
+ "symbol": "LBP"
+ },
+ "LSL": {
+ "name": "Lesotho Loti",
+ "symbol": "LSL"
+ },
+ "LRD": {
+ "name": "Liberian Dollar",
+ "symbol": "LRD"
+ },
+ "LYD": {
+ "name": "Libyan Dinar",
+ "symbol": "LYD"
+ },
+ "LTL": {
+ "name": "Lithuanian Litas",
+ "symbol": "LTL"
+ },
+ "MOP": {
+ "name": "Macanese Pataca",
+ "symbol": "MOP"
+ },
+ "MKD": {
+ "name": "Macedonian Denar",
+ "symbol": "MKD"
+ },
+ "MGA": {
+ "name": "Malagasy Ariary",
+ "symbol": "MGA"
+ },
+ "MWK": {
+ "name": "Malawian Kwacha",
+ "symbol": "MWK"
+ },
+ "MYR": {
+ "name": "Malaysian Ringgit",
+ "symbol": "MYR"
+ },
+ "MVR": {
+ "name": "Maldivian Rufiyaa",
+ "symbol": "MVR"
+ },
+ "MRO": {
+ "name": "Mauritanian Ouguiya",
+ "symbol": "MRO"
+ },
+ "MUR": {
+ "name": "Mauritian Rupee",
+ "symbol": "MUR"
+ },
+ "MXN": {
+ "name": "Mexican Peso",
+ "symbol": "MX$"
+ },
+ "MDL": {
+ "name": "Moldovan Leu",
+ "symbol": "MDL"
+ },
+ "MNT": {
+ "name": "Mongolian Tugrik",
+ "symbol": "MNT"
+ },
+ "MAD": {
+ "name": "Moroccan Dirham",
+ "symbol": "MAD"
+ },
+ "MZN": {
+ "name": "Mozambican Metical",
+ "symbol": "MZN"
+ },
+ "MMK": {
+ "name": "Myanmar Kyat",
+ "symbol": "MMK"
+ },
+ "NAD": {
+ "name": "Namibian Dollar",
+ "symbol": "NAD"
+ },
+ "NPR": {
+ "name": "Nepalese Rupee",
+ "symbol": "NPR"
+ },
+ "ANG": {
+ "name": "Netherlands Antillean Guilder",
+ "symbol": "ANG"
+ },
+ "TWD": {
+ "name": "New Taiwan Dollar",
+ "symbol": "NT$"
+ },
+ "NZD": {
+ "name": "New Zealand Dollar",
+ "symbol": "NZ$"
+ },
+ "NIO": {
+ "name": "Nicaraguan Córdoba",
+ "symbol": "NIO"
+ },
+ "NGN": {
+ "name": "Nigerian Naira",
+ "symbol": "NGN"
+ },
+ "KPW": {
+ "name": "North Korean Won",
+ "symbol": "KPW"
+ },
+ "NOK": {
+ "name": "Norwegian Krone",
+ "symbol": "NOK"
+ },
+ "OMR": {
+ "name": "Omani Rial",
+ "symbol": "OMR"
+ },
+ "PKR": {
+ "name": "Pakistani Rupee",
+ "symbol": "PKR"
+ },
+ "PAB": {
+ "name": "Panamanian Balboa",
+ "symbol": "PAB"
+ },
+ "PGK": {
+ "name": "Papua New Guinean Kina",
+ "symbol": "PGK"
+ },
+ "PYG": {
+ "name": "Paraguayan Guarani",
+ "symbol": "PYG"
+ },
+ "PEN": {
+ "name": "Peruvian Nuevo Sol",
+ "symbol": "PEN"
+ },
+ "PHP": {
+ "name": "Philippine Peso",
+ "symbol": "PHP"
+ },
+ "PLN": {
+ "name": "Polish Zloty",
+ "symbol": "PLN"
+ },
+ "QAR": {
+ "name": "Qatari Rial",
+ "symbol": "QAR"
+ },
+ "RON": {
+ "name": "Romanian Leu",
+ "symbol": "RON"
+ },
+ "RUB": {
+ "name": "Russian Ruble",
+ "symbol": "RUB"
+ },
+ "RWF": {
+ "name": "Rwandan Franc",
+ "symbol": "RWF"
+ },
+ "SHP": {
+ "name": "Saint Helena Pound",
+ "symbol": "SHP"
+ },
+ "SVC": {
+ "name": "Salvadoran Colón",
+ "symbol": "SVC"
+ },
+ "WST": {
+ "name": "Samoan Tala",
+ "symbol": "WST"
+ },
+ "STD": {
+ "name": "São Tomé and Príncipe Dobra",
+ "symbol": "STD"
+ },
+ "SAR": {
+ "name": "Saudi Riyal",
+ "symbol": "SAR"
+ },
+ "RSD": {
+ "name": "Serbian Dinar",
+ "symbol": "RSD"
+ },
+ "SCR": {
+ "name": "Seychellois Rupee",
+ "symbol": "SCR"
+ },
+ "SLL": {
+ "name": "Sierra Leonean Leone",
+ "symbol": "SLL"
+ },
+ "SGD": {
+ "name": "Singapore Dollar",
+ "symbol": "SGD"
+ },
+ "SBD": {
+ "name": "Solomon Islands Dollar",
+ "symbol": "SBD"
+ },
+ "SOS": {
+ "name": "Somali Shilling",
+ "symbol": "SOS"
+ },
+ "ZAR": {
+ "name": "South African Rand",
+ "symbol": "ZAR"
+ },
+ "KRW": {
+ "name": "South Korean Won",
+ "symbol": "â‚©"
+ },
+ "SSP": {
+ "name": "South Sudanese Pound",
+ "symbol": "SSP"
+ },
+ "LKR": {
+ "name": "Sri Lankan Rupee",
+ "symbol": "LKR"
+ },
+ "SDG": {
+ "name": "Sudanese Pound",
+ "symbol": "SDG"
+ },
+ "SRD": {
+ "name": "Surinamese Dollar",
+ "symbol": "SRD"
+ },
+ "SZL": {
+ "name": "Swazi Lilangeni",
+ "symbol": "SZL"
+ },
+ "SEK": {
+ "name": "Swedish Krona",
+ "symbol": "SEK"
+ },
+ "CHF": {
+ "name": "Swiss Franc",
+ "symbol": "CHF"
+ },
+ "SYP": {
+ "name": "Syrian Pound",
+ "symbol": "SYP"
+ },
+ "TJS": {
+ "name": "Tajikistani Somoni",
+ "symbol": "TJS"
+ },
+ "TZS": {
+ "name": "Tanzanian Shilling",
+ "symbol": "TZS"
+ },
+ "THB": {
+ "name": "Thai Baht",
+ "symbol": "฿"
+ },
+ "TOP": {
+ "name": "Tongan Paʻanga",
+ "symbol": "TOP"
+ },
+ "TTD": {
+ "name": "Trinidad and Tobago Dollar",
+ "symbol": "TTD"
+ },
+ "TND": {
+ "name": "Tunisian Dinar",
+ "symbol": "TND"
+ },
+ "TRY": {
+ "name": "Turkish Lira",
+ "symbol": "TRY"
+ },
+ "TMT": {
+ "name": "Turkmenistani Manat",
+ "symbol": "TMT"
+ },
+ "UGX": {
+ "name": "Ugandan Shilling",
+ "symbol": "UGX"
+ },
+ "UAH": {
+ "name": "Ukrainian Hryvnia",
+ "symbol": "UAH"
+ },
+ "AED": {
+ "name": "United Arab Emirates Dirham",
+ "symbol": "AED"
+ },
+ "UYU": {
+ "name": "Uruguayan Peso",
+ "symbol": "UYU"
+ },
+ "USD": {
+ "name": "US Dollar",
+ "symbol": "US$"
+ },
+ "UZS": {
+ "name": "Uzbekistan Som",
+ "symbol": "UZS"
+ },
+ "VUV": {
+ "name": "Vanuatu Vatu",
+ "symbol": "VUV"
+ },
+ "VEF": {
+ "name": "Venezuelan Bolívar",
+ "symbol": "VEF"
+ },
+ "VND": {
+ "name": "Vietnamese Dong",
+ "symbol": "â‚«"
+ },
+ "YER": {
+ "name": "Yemeni Rial",
+ "symbol": "YER"
+ },
+ "ZMW": {
+ "name": "Zambian Kwacha",
+ "symbol": "ZMW"
+ },
+ "ZWL": {
+ "name": "Zimbabwean Dollar (2009)",
+ "symbol": "ZWL"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/currency/en-JE.json b/library/intl/resources/currency/en-JE.json
new file mode 100644
index 000000000..2dbdae5ca
--- /dev/null
+++ b/library/intl/resources/currency/en-JE.json
@@ -0,0 +1,634 @@
+{
+ "AFN": {
+ "name": "Afghan Afghani",
+ "symbol": "AFN"
+ },
+ "ALL": {
+ "name": "Albanian Lek",
+ "symbol": "ALL"
+ },
+ "DZD": {
+ "name": "Algerian Dinar",
+ "symbol": "DZD"
+ },
+ "AOA": {
+ "name": "Angolan Kwanza",
+ "symbol": "AOA"
+ },
+ "ARS": {
+ "name": "Argentine Peso",
+ "symbol": "ARS"
+ },
+ "AMD": {
+ "name": "Armenian Dram",
+ "symbol": "AMD"
+ },
+ "AWG": {
+ "name": "Aruban Florin",
+ "symbol": "AWG"
+ },
+ "AUD": {
+ "name": "Australian Dollar",
+ "symbol": "A$"
+ },
+ "AZN": {
+ "name": "Azerbaijani Manat",
+ "symbol": "AZN"
+ },
+ "BSD": {
+ "name": "Bahamian Dollar",
+ "symbol": "BSD"
+ },
+ "BHD": {
+ "name": "Bahraini Dinar",
+ "symbol": "BHD"
+ },
+ "BDT": {
+ "name": "Bangladeshi Taka",
+ "symbol": "BDT"
+ },
+ "BBD": {
+ "name": "Barbadian Dollar",
+ "symbol": "BBD"
+ },
+ "BYR": {
+ "name": "Belarusian Ruble",
+ "symbol": "BYR"
+ },
+ "BZD": {
+ "name": "Belize Dollar",
+ "symbol": "BZD"
+ },
+ "BMD": {
+ "name": "Bermudan Dollar",
+ "symbol": "BMD"
+ },
+ "BTN": {
+ "name": "Bhutanese Ngultrum",
+ "symbol": "BTN"
+ },
+ "BOB": {
+ "name": "Bolivian Boliviano",
+ "symbol": "BOB"
+ },
+ "BAM": {
+ "name": "Bosnia-Herzegovina Convertible Mark",
+ "symbol": "BAM"
+ },
+ "BWP": {
+ "name": "Botswanan Pula",
+ "symbol": "BWP"
+ },
+ "BRL": {
+ "name": "Brazilian Real",
+ "symbol": "R$"
+ },
+ "GBP": {
+ "name": "British Pound Sterling",
+ "symbol": "£"
+ },
+ "BND": {
+ "name": "Brunei Dollar",
+ "symbol": "BND"
+ },
+ "BGN": {
+ "name": "Bulgarian Lev",
+ "symbol": "BGN"
+ },
+ "BIF": {
+ "name": "Burundian Franc",
+ "symbol": "BIF"
+ },
+ "KHR": {
+ "name": "Cambodian Riel",
+ "symbol": "KHR"
+ },
+ "CAD": {
+ "name": "Canadian Dollar",
+ "symbol": "CA$"
+ },
+ "CVE": {
+ "name": "Cape Verdean Escudo",
+ "symbol": "CVE"
+ },
+ "KYD": {
+ "name": "Cayman Islands Dollar",
+ "symbol": "KYD"
+ },
+ "XOF": {
+ "name": "CFA Franc BCEAO",
+ "symbol": "CFA"
+ },
+ "XAF": {
+ "name": "CFA Franc BEAC",
+ "symbol": "FCFA"
+ },
+ "XPF": {
+ "name": "CFP Franc",
+ "symbol": "CFPF"
+ },
+ "CLP": {
+ "name": "Chilean Peso",
+ "symbol": "CLP"
+ },
+ "CNY": {
+ "name": "Chinese Yuan",
+ "symbol": "CNÂ¥"
+ },
+ "COP": {
+ "name": "Colombian Peso",
+ "symbol": "COP"
+ },
+ "KMF": {
+ "name": "Comorian Franc",
+ "symbol": "KMF"
+ },
+ "CDF": {
+ "name": "Congolese Franc",
+ "symbol": "CDF"
+ },
+ "CRC": {
+ "name": "Costa Rican Colón",
+ "symbol": "CRC"
+ },
+ "HRK": {
+ "name": "Croatian Kuna",
+ "symbol": "HRK"
+ },
+ "CUC": {
+ "name": "Cuban Convertible Peso",
+ "symbol": "CUC"
+ },
+ "CUP": {
+ "name": "Cuban Peso",
+ "symbol": "CUP"
+ },
+ "CZK": {
+ "name": "Czech Republic Koruna",
+ "symbol": "CZK"
+ },
+ "DKK": {
+ "name": "Danish Krone",
+ "symbol": "DKK"
+ },
+ "DJF": {
+ "name": "Djiboutian Franc",
+ "symbol": "DJF"
+ },
+ "DOP": {
+ "name": "Dominican Peso",
+ "symbol": "DOP"
+ },
+ "XCD": {
+ "name": "East Caribbean Dollar",
+ "symbol": "EC$"
+ },
+ "EGP": {
+ "name": "Egyptian Pound",
+ "symbol": "EGP"
+ },
+ "ERN": {
+ "name": "Eritrean Nakfa",
+ "symbol": "ERN"
+ },
+ "ETB": {
+ "name": "Ethiopian Birr",
+ "symbol": "ETB"
+ },
+ "EUR": {
+ "name": "Euro",
+ "symbol": "€"
+ },
+ "FKP": {
+ "name": "Falkland Islands Pound",
+ "symbol": "FKP"
+ },
+ "FJD": {
+ "name": "Fijian Dollar",
+ "symbol": "FJD"
+ },
+ "GMD": {
+ "name": "Gambian Dalasi",
+ "symbol": "GMD"
+ },
+ "GEL": {
+ "name": "Georgian Lari",
+ "symbol": "GEL"
+ },
+ "GHS": {
+ "name": "Ghanaian Cedi",
+ "symbol": "GHS"
+ },
+ "GIP": {
+ "name": "Gibraltar Pound",
+ "symbol": "GIP"
+ },
+ "GTQ": {
+ "name": "Guatemalan Quetzal",
+ "symbol": "GTQ"
+ },
+ "GNF": {
+ "name": "Guinean Franc",
+ "symbol": "GNF"
+ },
+ "GYD": {
+ "name": "Guyanaese Dollar",
+ "symbol": "GYD"
+ },
+ "HTG": {
+ "name": "Haitian Gourde",
+ "symbol": "HTG"
+ },
+ "HNL": {
+ "name": "Honduran Lempira",
+ "symbol": "HNL"
+ },
+ "HKD": {
+ "name": "Hong Kong Dollar",
+ "symbol": "HK$"
+ },
+ "HUF": {
+ "name": "Hungarian Forint",
+ "symbol": "HUF"
+ },
+ "ISK": {
+ "name": "Icelandic Króna",
+ "symbol": "ISK"
+ },
+ "INR": {
+ "name": "Indian Rupee",
+ "symbol": "₹"
+ },
+ "IDR": {
+ "name": "Indonesian Rupiah",
+ "symbol": "IDR"
+ },
+ "IRR": {
+ "name": "Iranian Rial",
+ "symbol": "IRR"
+ },
+ "IQD": {
+ "name": "Iraqi Dinar",
+ "symbol": "IQD"
+ },
+ "ILS": {
+ "name": "Israeli New Shekel",
+ "symbol": "₪"
+ },
+ "JMD": {
+ "name": "Jamaican Dollar",
+ "symbol": "JMD"
+ },
+ "JPY": {
+ "name": "Japanese Yen",
+ "symbol": "Â¥"
+ },
+ "JOD": {
+ "name": "Jordanian Dinar",
+ "symbol": "JOD"
+ },
+ "KZT": {
+ "name": "Kazakhstani Tenge",
+ "symbol": "KZT"
+ },
+ "KES": {
+ "name": "Kenyan Shilling",
+ "symbol": "KES"
+ },
+ "KWD": {
+ "name": "Kuwaiti Dinar",
+ "symbol": "KWD"
+ },
+ "KGS": {
+ "name": "Kyrgystani Som",
+ "symbol": "KGS"
+ },
+ "LAK": {
+ "name": "Laotian Kip",
+ "symbol": "LAK"
+ },
+ "LBP": {
+ "name": "Lebanese Pound",
+ "symbol": "LBP"
+ },
+ "LSL": {
+ "name": "Lesotho Loti",
+ "symbol": "LSL"
+ },
+ "LRD": {
+ "name": "Liberian Dollar",
+ "symbol": "LRD"
+ },
+ "LYD": {
+ "name": "Libyan Dinar",
+ "symbol": "LYD"
+ },
+ "LTL": {
+ "name": "Lithuanian Litas",
+ "symbol": "LTL"
+ },
+ "MOP": {
+ "name": "Macanese Pataca",
+ "symbol": "MOP"
+ },
+ "MKD": {
+ "name": "Macedonian Denar",
+ "symbol": "MKD"
+ },
+ "MGA": {
+ "name": "Malagasy Ariary",
+ "symbol": "MGA"
+ },
+ "MWK": {
+ "name": "Malawian Kwacha",
+ "symbol": "MWK"
+ },
+ "MYR": {
+ "name": "Malaysian Ringgit",
+ "symbol": "MYR"
+ },
+ "MVR": {
+ "name": "Maldivian Rufiyaa",
+ "symbol": "MVR"
+ },
+ "MRO": {
+ "name": "Mauritanian Ouguiya",
+ "symbol": "MRO"
+ },
+ "MUR": {
+ "name": "Mauritian Rupee",
+ "symbol": "MUR"
+ },
+ "MXN": {
+ "name": "Mexican Peso",
+ "symbol": "MX$"
+ },
+ "MDL": {
+ "name": "Moldovan Leu",
+ "symbol": "MDL"
+ },
+ "MNT": {
+ "name": "Mongolian Tugrik",
+ "symbol": "MNT"
+ },
+ "MAD": {
+ "name": "Moroccan Dirham",
+ "symbol": "MAD"
+ },
+ "MZN": {
+ "name": "Mozambican Metical",
+ "symbol": "MZN"
+ },
+ "MMK": {
+ "name": "Myanmar Kyat",
+ "symbol": "MMK"
+ },
+ "NAD": {
+ "name": "Namibian Dollar",
+ "symbol": "NAD"
+ },
+ "NPR": {
+ "name": "Nepalese Rupee",
+ "symbol": "NPR"
+ },
+ "ANG": {
+ "name": "Netherlands Antillean Guilder",
+ "symbol": "ANG"
+ },
+ "TWD": {
+ "name": "New Taiwan Dollar",
+ "symbol": "NT$"
+ },
+ "NZD": {
+ "name": "New Zealand Dollar",
+ "symbol": "NZ$"
+ },
+ "NIO": {
+ "name": "Nicaraguan Córdoba",
+ "symbol": "NIO"
+ },
+ "NGN": {
+ "name": "Nigerian Naira",
+ "symbol": "NGN"
+ },
+ "KPW": {
+ "name": "North Korean Won",
+ "symbol": "KPW"
+ },
+ "NOK": {
+ "name": "Norwegian Krone",
+ "symbol": "NOK"
+ },
+ "OMR": {
+ "name": "Omani Rial",
+ "symbol": "OMR"
+ },
+ "PKR": {
+ "name": "Pakistani Rupee",
+ "symbol": "PKR"
+ },
+ "PAB": {
+ "name": "Panamanian Balboa",
+ "symbol": "PAB"
+ },
+ "PGK": {
+ "name": "Papua New Guinean Kina",
+ "symbol": "PGK"
+ },
+ "PYG": {
+ "name": "Paraguayan Guarani",
+ "symbol": "PYG"
+ },
+ "PEN": {
+ "name": "Peruvian Nuevo Sol",
+ "symbol": "PEN"
+ },
+ "PHP": {
+ "name": "Philippine Peso",
+ "symbol": "PHP"
+ },
+ "PLN": {
+ "name": "Polish Zloty",
+ "symbol": "PLN"
+ },
+ "QAR": {
+ "name": "Qatari Rial",
+ "symbol": "QAR"
+ },
+ "RON": {
+ "name": "Romanian Leu",
+ "symbol": "RON"
+ },
+ "RUB": {
+ "name": "Russian Ruble",
+ "symbol": "RUB"
+ },
+ "RWF": {
+ "name": "Rwandan Franc",
+ "symbol": "RWF"
+ },
+ "SHP": {
+ "name": "Saint Helena Pound",
+ "symbol": "SHP"
+ },
+ "SVC": {
+ "name": "Salvadoran Colón",
+ "symbol": "SVC"
+ },
+ "WST": {
+ "name": "Samoan Tala",
+ "symbol": "WST"
+ },
+ "STD": {
+ "name": "São Tomé and Príncipe Dobra",
+ "symbol": "STD"
+ },
+ "SAR": {
+ "name": "Saudi Riyal",
+ "symbol": "SAR"
+ },
+ "RSD": {
+ "name": "Serbian Dinar",
+ "symbol": "RSD"
+ },
+ "SCR": {
+ "name": "Seychellois Rupee",
+ "symbol": "SCR"
+ },
+ "SLL": {
+ "name": "Sierra Leonean Leone",
+ "symbol": "SLL"
+ },
+ "SGD": {
+ "name": "Singapore Dollar",
+ "symbol": "SGD"
+ },
+ "SBD": {
+ "name": "Solomon Islands Dollar",
+ "symbol": "SBD"
+ },
+ "SOS": {
+ "name": "Somali Shilling",
+ "symbol": "SOS"
+ },
+ "ZAR": {
+ "name": "South African Rand",
+ "symbol": "ZAR"
+ },
+ "KRW": {
+ "name": "South Korean Won",
+ "symbol": "â‚©"
+ },
+ "SSP": {
+ "name": "South Sudanese Pound",
+ "symbol": "SSP"
+ },
+ "LKR": {
+ "name": "Sri Lankan Rupee",
+ "symbol": "LKR"
+ },
+ "SDG": {
+ "name": "Sudanese Pound",
+ "symbol": "SDG"
+ },
+ "SRD": {
+ "name": "Surinamese Dollar",
+ "symbol": "SRD"
+ },
+ "SZL": {
+ "name": "Swazi Lilangeni",
+ "symbol": "SZL"
+ },
+ "SEK": {
+ "name": "Swedish Krona",
+ "symbol": "SEK"
+ },
+ "CHF": {
+ "name": "Swiss Franc",
+ "symbol": "CHF"
+ },
+ "SYP": {
+ "name": "Syrian Pound",
+ "symbol": "SYP"
+ },
+ "TJS": {
+ "name": "Tajikistani Somoni",
+ "symbol": "TJS"
+ },
+ "TZS": {
+ "name": "Tanzanian Shilling",
+ "symbol": "TZS"
+ },
+ "THB": {
+ "name": "Thai Baht",
+ "symbol": "฿"
+ },
+ "TOP": {
+ "name": "Tongan Paʻanga",
+ "symbol": "TOP"
+ },
+ "TTD": {
+ "name": "Trinidad and Tobago Dollar",
+ "symbol": "TTD"
+ },
+ "TND": {
+ "name": "Tunisian Dinar",
+ "symbol": "TND"
+ },
+ "TRY": {
+ "name": "Turkish Lira",
+ "symbol": "TRY"
+ },
+ "TMT": {
+ "name": "Turkmenistani Manat",
+ "symbol": "TMT"
+ },
+ "UGX": {
+ "name": "Ugandan Shilling",
+ "symbol": "UGX"
+ },
+ "UAH": {
+ "name": "Ukrainian Hryvnia",
+ "symbol": "UAH"
+ },
+ "AED": {
+ "name": "United Arab Emirates Dirham",
+ "symbol": "AED"
+ },
+ "UYU": {
+ "name": "Uruguayan Peso",
+ "symbol": "UYU"
+ },
+ "USD": {
+ "name": "US Dollar",
+ "symbol": "US$"
+ },
+ "UZS": {
+ "name": "Uzbekistan Som",
+ "symbol": "UZS"
+ },
+ "VUV": {
+ "name": "Vanuatu Vatu",
+ "symbol": "VUV"
+ },
+ "VEF": {
+ "name": "Venezuelan Bolívar",
+ "symbol": "VEF"
+ },
+ "VND": {
+ "name": "Vietnamese Dong",
+ "symbol": "â‚«"
+ },
+ "YER": {
+ "name": "Yemeni Rial",
+ "symbol": "YER"
+ },
+ "ZMW": {
+ "name": "Zambian Kwacha",
+ "symbol": "ZMW"
+ },
+ "ZWL": {
+ "name": "Zimbabwean Dollar (2009)",
+ "symbol": "ZWL"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/currency/en-MO.json b/library/intl/resources/currency/en-MO.json
new file mode 100644
index 000000000..70f96d7ad
--- /dev/null
+++ b/library/intl/resources/currency/en-MO.json
@@ -0,0 +1,634 @@
+{
+ "AFN": {
+ "name": "Afghan Afghani",
+ "symbol": "AFN"
+ },
+ "ALL": {
+ "name": "Albanian Lek",
+ "symbol": "ALL"
+ },
+ "DZD": {
+ "name": "Algerian Dinar",
+ "symbol": "DZD"
+ },
+ "AOA": {
+ "name": "Angolan Kwanza",
+ "symbol": "AOA"
+ },
+ "ARS": {
+ "name": "Argentine Peso",
+ "symbol": "ARS"
+ },
+ "AMD": {
+ "name": "Armenian Dram",
+ "symbol": "AMD"
+ },
+ "AWG": {
+ "name": "Aruban Florin",
+ "symbol": "AWG"
+ },
+ "AUD": {
+ "name": "Australian Dollar",
+ "symbol": "A$"
+ },
+ "AZN": {
+ "name": "Azerbaijani Manat",
+ "symbol": "AZN"
+ },
+ "BSD": {
+ "name": "Bahamian Dollar",
+ "symbol": "BSD"
+ },
+ "BHD": {
+ "name": "Bahraini Dinar",
+ "symbol": "BHD"
+ },
+ "BDT": {
+ "name": "Bangladeshi Taka",
+ "symbol": "BDT"
+ },
+ "BBD": {
+ "name": "Barbadian Dollar",
+ "symbol": "BBD"
+ },
+ "BYR": {
+ "name": "Belarusian Ruble",
+ "symbol": "BYR"
+ },
+ "BZD": {
+ "name": "Belize Dollar",
+ "symbol": "BZD"
+ },
+ "BMD": {
+ "name": "Bermudan Dollar",
+ "symbol": "BMD"
+ },
+ "BTN": {
+ "name": "Bhutanese Ngultrum",
+ "symbol": "BTN"
+ },
+ "BOB": {
+ "name": "Bolivian Boliviano",
+ "symbol": "BOB"
+ },
+ "BAM": {
+ "name": "Bosnia-Herzegovina Convertible Mark",
+ "symbol": "BAM"
+ },
+ "BWP": {
+ "name": "Botswanan Pula",
+ "symbol": "BWP"
+ },
+ "BRL": {
+ "name": "Brazilian Real",
+ "symbol": "R$"
+ },
+ "GBP": {
+ "name": "British Pound Sterling",
+ "symbol": "£"
+ },
+ "BND": {
+ "name": "Brunei Dollar",
+ "symbol": "BND"
+ },
+ "BGN": {
+ "name": "Bulgarian Lev",
+ "symbol": "BGN"
+ },
+ "BIF": {
+ "name": "Burundian Franc",
+ "symbol": "BIF"
+ },
+ "KHR": {
+ "name": "Cambodian Riel",
+ "symbol": "KHR"
+ },
+ "CAD": {
+ "name": "Canadian Dollar",
+ "symbol": "CA$"
+ },
+ "CVE": {
+ "name": "Cape Verdean Escudo",
+ "symbol": "CVE"
+ },
+ "KYD": {
+ "name": "Cayman Islands Dollar",
+ "symbol": "KYD"
+ },
+ "XOF": {
+ "name": "CFA Franc BCEAO",
+ "symbol": "CFA"
+ },
+ "XAF": {
+ "name": "CFA Franc BEAC",
+ "symbol": "FCFA"
+ },
+ "XPF": {
+ "name": "CFP Franc",
+ "symbol": "CFPF"
+ },
+ "CLP": {
+ "name": "Chilean Peso",
+ "symbol": "CLP"
+ },
+ "CNY": {
+ "name": "Chinese Yuan",
+ "symbol": "CNÂ¥"
+ },
+ "COP": {
+ "name": "Colombian Peso",
+ "symbol": "COP"
+ },
+ "KMF": {
+ "name": "Comorian Franc",
+ "symbol": "KMF"
+ },
+ "CDF": {
+ "name": "Congolese Franc",
+ "symbol": "CDF"
+ },
+ "CRC": {
+ "name": "Costa Rican Colón",
+ "symbol": "CRC"
+ },
+ "HRK": {
+ "name": "Croatian Kuna",
+ "symbol": "HRK"
+ },
+ "CUC": {
+ "name": "Cuban Convertible Peso",
+ "symbol": "CUC"
+ },
+ "CUP": {
+ "name": "Cuban Peso",
+ "symbol": "CUP"
+ },
+ "CZK": {
+ "name": "Czech Republic Koruna",
+ "symbol": "CZK"
+ },
+ "DKK": {
+ "name": "Danish Krone",
+ "symbol": "DKK"
+ },
+ "DJF": {
+ "name": "Djiboutian Franc",
+ "symbol": "DJF"
+ },
+ "DOP": {
+ "name": "Dominican Peso",
+ "symbol": "DOP"
+ },
+ "XCD": {
+ "name": "East Caribbean Dollar",
+ "symbol": "EC$"
+ },
+ "EGP": {
+ "name": "Egyptian Pound",
+ "symbol": "EGP"
+ },
+ "ERN": {
+ "name": "Eritrean Nakfa",
+ "symbol": "ERN"
+ },
+ "ETB": {
+ "name": "Ethiopian Birr",
+ "symbol": "ETB"
+ },
+ "EUR": {
+ "name": "Euro",
+ "symbol": "€"
+ },
+ "FKP": {
+ "name": "Falkland Islands Pound",
+ "symbol": "FKP"
+ },
+ "FJD": {
+ "name": "Fijian Dollar",
+ "symbol": "FJD"
+ },
+ "GMD": {
+ "name": "Gambian Dalasi",
+ "symbol": "GMD"
+ },
+ "GEL": {
+ "name": "Georgian Lari",
+ "symbol": "GEL"
+ },
+ "GHS": {
+ "name": "Ghanaian Cedi",
+ "symbol": "GHS"
+ },
+ "GIP": {
+ "name": "Gibraltar Pound",
+ "symbol": "GIP"
+ },
+ "GTQ": {
+ "name": "Guatemalan Quetzal",
+ "symbol": "GTQ"
+ },
+ "GNF": {
+ "name": "Guinean Franc",
+ "symbol": "GNF"
+ },
+ "GYD": {
+ "name": "Guyanaese Dollar",
+ "symbol": "GYD"
+ },
+ "HTG": {
+ "name": "Haitian Gourde",
+ "symbol": "HTG"
+ },
+ "HNL": {
+ "name": "Honduran Lempira",
+ "symbol": "HNL"
+ },
+ "HKD": {
+ "name": "Hong Kong Dollar",
+ "symbol": "HK$"
+ },
+ "HUF": {
+ "name": "Hungarian Forint",
+ "symbol": "HUF"
+ },
+ "ISK": {
+ "name": "Icelandic Króna",
+ "symbol": "ISK"
+ },
+ "INR": {
+ "name": "Indian Rupee",
+ "symbol": "₹"
+ },
+ "IDR": {
+ "name": "Indonesian Rupiah",
+ "symbol": "IDR"
+ },
+ "IRR": {
+ "name": "Iranian Rial",
+ "symbol": "IRR"
+ },
+ "IQD": {
+ "name": "Iraqi Dinar",
+ "symbol": "IQD"
+ },
+ "ILS": {
+ "name": "Israeli New Shekel",
+ "symbol": "₪"
+ },
+ "JMD": {
+ "name": "Jamaican Dollar",
+ "symbol": "JMD"
+ },
+ "JPY": {
+ "name": "Japanese Yen",
+ "symbol": "Â¥"
+ },
+ "JOD": {
+ "name": "Jordanian Dinar",
+ "symbol": "JOD"
+ },
+ "KZT": {
+ "name": "Kazakhstani Tenge",
+ "symbol": "KZT"
+ },
+ "KES": {
+ "name": "Kenyan Shilling",
+ "symbol": "KES"
+ },
+ "KWD": {
+ "name": "Kuwaiti Dinar",
+ "symbol": "KWD"
+ },
+ "KGS": {
+ "name": "Kyrgystani Som",
+ "symbol": "KGS"
+ },
+ "LAK": {
+ "name": "Laotian Kip",
+ "symbol": "LAK"
+ },
+ "LBP": {
+ "name": "Lebanese Pound",
+ "symbol": "LBP"
+ },
+ "LSL": {
+ "name": "Lesotho Loti",
+ "symbol": "LSL"
+ },
+ "LRD": {
+ "name": "Liberian Dollar",
+ "symbol": "LRD"
+ },
+ "LYD": {
+ "name": "Libyan Dinar",
+ "symbol": "LYD"
+ },
+ "LTL": {
+ "name": "Lithuanian Litas",
+ "symbol": "LTL"
+ },
+ "MOP": {
+ "name": "Macanese Pataca",
+ "symbol": "MOP$"
+ },
+ "MKD": {
+ "name": "Macedonian Denar",
+ "symbol": "MKD"
+ },
+ "MGA": {
+ "name": "Malagasy Ariary",
+ "symbol": "MGA"
+ },
+ "MWK": {
+ "name": "Malawian Kwacha",
+ "symbol": "MWK"
+ },
+ "MYR": {
+ "name": "Malaysian Ringgit",
+ "symbol": "MYR"
+ },
+ "MVR": {
+ "name": "Maldivian Rufiyaa",
+ "symbol": "MVR"
+ },
+ "MRO": {
+ "name": "Mauritanian Ouguiya",
+ "symbol": "MRO"
+ },
+ "MUR": {
+ "name": "Mauritian Rupee",
+ "symbol": "MUR"
+ },
+ "MXN": {
+ "name": "Mexican Peso",
+ "symbol": "MX$"
+ },
+ "MDL": {
+ "name": "Moldovan Leu",
+ "symbol": "MDL"
+ },
+ "MNT": {
+ "name": "Mongolian Tugrik",
+ "symbol": "MNT"
+ },
+ "MAD": {
+ "name": "Moroccan Dirham",
+ "symbol": "MAD"
+ },
+ "MZN": {
+ "name": "Mozambican Metical",
+ "symbol": "MZN"
+ },
+ "MMK": {
+ "name": "Myanmar Kyat",
+ "symbol": "MMK"
+ },
+ "NAD": {
+ "name": "Namibian Dollar",
+ "symbol": "NAD"
+ },
+ "NPR": {
+ "name": "Nepalese Rupee",
+ "symbol": "NPR"
+ },
+ "ANG": {
+ "name": "Netherlands Antillean Guilder",
+ "symbol": "ANG"
+ },
+ "TWD": {
+ "name": "New Taiwan Dollar",
+ "symbol": "NT$"
+ },
+ "NZD": {
+ "name": "New Zealand Dollar",
+ "symbol": "NZ$"
+ },
+ "NIO": {
+ "name": "Nicaraguan Córdoba",
+ "symbol": "NIO"
+ },
+ "NGN": {
+ "name": "Nigerian Naira",
+ "symbol": "NGN"
+ },
+ "KPW": {
+ "name": "North Korean Won",
+ "symbol": "KPW"
+ },
+ "NOK": {
+ "name": "Norwegian Krone",
+ "symbol": "NOK"
+ },
+ "OMR": {
+ "name": "Omani Rial",
+ "symbol": "OMR"
+ },
+ "PKR": {
+ "name": "Pakistani Rupee",
+ "symbol": "PKR"
+ },
+ "PAB": {
+ "name": "Panamanian Balboa",
+ "symbol": "PAB"
+ },
+ "PGK": {
+ "name": "Papua New Guinean Kina",
+ "symbol": "PGK"
+ },
+ "PYG": {
+ "name": "Paraguayan Guarani",
+ "symbol": "PYG"
+ },
+ "PEN": {
+ "name": "Peruvian Nuevo Sol",
+ "symbol": "PEN"
+ },
+ "PHP": {
+ "name": "Philippine Peso",
+ "symbol": "PHP"
+ },
+ "PLN": {
+ "name": "Polish Zloty",
+ "symbol": "PLN"
+ },
+ "QAR": {
+ "name": "Qatari Rial",
+ "symbol": "QAR"
+ },
+ "RON": {
+ "name": "Romanian Leu",
+ "symbol": "RON"
+ },
+ "RUB": {
+ "name": "Russian Ruble",
+ "symbol": "RUB"
+ },
+ "RWF": {
+ "name": "Rwandan Franc",
+ "symbol": "RWF"
+ },
+ "SHP": {
+ "name": "Saint Helena Pound",
+ "symbol": "SHP"
+ },
+ "SVC": {
+ "name": "Salvadoran Colón",
+ "symbol": "SVC"
+ },
+ "WST": {
+ "name": "Samoan Tala",
+ "symbol": "WST"
+ },
+ "STD": {
+ "name": "São Tomé and Príncipe Dobra",
+ "symbol": "STD"
+ },
+ "SAR": {
+ "name": "Saudi Riyal",
+ "symbol": "SAR"
+ },
+ "RSD": {
+ "name": "Serbian Dinar",
+ "symbol": "RSD"
+ },
+ "SCR": {
+ "name": "Seychellois Rupee",
+ "symbol": "SCR"
+ },
+ "SLL": {
+ "name": "Sierra Leonean Leone",
+ "symbol": "SLL"
+ },
+ "SGD": {
+ "name": "Singapore Dollar",
+ "symbol": "SGD"
+ },
+ "SBD": {
+ "name": "Solomon Islands Dollar",
+ "symbol": "SBD"
+ },
+ "SOS": {
+ "name": "Somali Shilling",
+ "symbol": "SOS"
+ },
+ "ZAR": {
+ "name": "South African Rand",
+ "symbol": "ZAR"
+ },
+ "KRW": {
+ "name": "South Korean Won",
+ "symbol": "â‚©"
+ },
+ "SSP": {
+ "name": "South Sudanese Pound",
+ "symbol": "SSP"
+ },
+ "LKR": {
+ "name": "Sri Lankan Rupee",
+ "symbol": "LKR"
+ },
+ "SDG": {
+ "name": "Sudanese Pound",
+ "symbol": "SDG"
+ },
+ "SRD": {
+ "name": "Surinamese Dollar",
+ "symbol": "SRD"
+ },
+ "SZL": {
+ "name": "Swazi Lilangeni",
+ "symbol": "SZL"
+ },
+ "SEK": {
+ "name": "Swedish Krona",
+ "symbol": "SEK"
+ },
+ "CHF": {
+ "name": "Swiss Franc",
+ "symbol": "CHF"
+ },
+ "SYP": {
+ "name": "Syrian Pound",
+ "symbol": "SYP"
+ },
+ "TJS": {
+ "name": "Tajikistani Somoni",
+ "symbol": "TJS"
+ },
+ "TZS": {
+ "name": "Tanzanian Shilling",
+ "symbol": "TZS"
+ },
+ "THB": {
+ "name": "Thai Baht",
+ "symbol": "฿"
+ },
+ "TOP": {
+ "name": "Tongan Paʻanga",
+ "symbol": "TOP"
+ },
+ "TTD": {
+ "name": "Trinidad and Tobago Dollar",
+ "symbol": "TTD"
+ },
+ "TND": {
+ "name": "Tunisian Dinar",
+ "symbol": "TND"
+ },
+ "TRY": {
+ "name": "Turkish Lira",
+ "symbol": "TRY"
+ },
+ "TMT": {
+ "name": "Turkmenistani Manat",
+ "symbol": "TMT"
+ },
+ "UGX": {
+ "name": "Ugandan Shilling",
+ "symbol": "UGX"
+ },
+ "UAH": {
+ "name": "Ukrainian Hryvnia",
+ "symbol": "UAH"
+ },
+ "AED": {
+ "name": "United Arab Emirates Dirham",
+ "symbol": "AED"
+ },
+ "UYU": {
+ "name": "Uruguayan Peso",
+ "symbol": "UYU"
+ },
+ "USD": {
+ "name": "US Dollar",
+ "symbol": "US$"
+ },
+ "UZS": {
+ "name": "Uzbekistan Som",
+ "symbol": "UZS"
+ },
+ "VUV": {
+ "name": "Vanuatu Vatu",
+ "symbol": "VUV"
+ },
+ "VEF": {
+ "name": "Venezuelan Bolívar",
+ "symbol": "VEF"
+ },
+ "VND": {
+ "name": "Vietnamese Dong",
+ "symbol": "â‚«"
+ },
+ "YER": {
+ "name": "Yemeni Rial",
+ "symbol": "YER"
+ },
+ "ZMW": {
+ "name": "Zambian Kwacha",
+ "symbol": "ZMW"
+ },
+ "ZWL": {
+ "name": "Zimbabwean Dollar (2009)",
+ "symbol": "ZWL"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/currency/en-MT.json b/library/intl/resources/currency/en-MT.json
new file mode 100644
index 000000000..b618be685
--- /dev/null
+++ b/library/intl/resources/currency/en-MT.json
@@ -0,0 +1,634 @@
+{
+ "AFN": {
+ "name": "Afghan Afghani",
+ "symbol": "AFN"
+ },
+ "ALL": {
+ "name": "Albanian Lek",
+ "symbol": "ALL"
+ },
+ "DZD": {
+ "name": "Algerian Dinar",
+ "symbol": "DZD"
+ },
+ "AOA": {
+ "name": "Angolan Kwanza",
+ "symbol": "AOA"
+ },
+ "ARS": {
+ "name": "Argentine Peso",
+ "symbol": "ARS"
+ },
+ "AMD": {
+ "name": "Armenian Dram",
+ "symbol": "AMD"
+ },
+ "AWG": {
+ "name": "Aruban Florin",
+ "symbol": "AWG"
+ },
+ "AUD": {
+ "name": "Australian Dollar",
+ "symbol": "A$"
+ },
+ "AZN": {
+ "name": "Azerbaijani Manat",
+ "symbol": "AZN"
+ },
+ "BSD": {
+ "name": "Bahamian Dollar",
+ "symbol": "BSD"
+ },
+ "BHD": {
+ "name": "Bahraini Dinar",
+ "symbol": "BHD"
+ },
+ "BDT": {
+ "name": "Bangladeshi Taka",
+ "symbol": "BDT"
+ },
+ "BBD": {
+ "name": "Barbadian Dollar",
+ "symbol": "BBD"
+ },
+ "BYR": {
+ "name": "Belarusian Ruble",
+ "symbol": "BYR"
+ },
+ "BZD": {
+ "name": "Belize Dollar",
+ "symbol": "BZD"
+ },
+ "BMD": {
+ "name": "Bermudan Dollar",
+ "symbol": "BMD"
+ },
+ "BTN": {
+ "name": "Bhutanese Ngultrum",
+ "symbol": "BTN"
+ },
+ "BOB": {
+ "name": "Bolivian Boliviano",
+ "symbol": "BOB"
+ },
+ "BAM": {
+ "name": "Bosnia-Herzegovina Convertible Mark",
+ "symbol": "BAM"
+ },
+ "BWP": {
+ "name": "Botswanan Pula",
+ "symbol": "BWP"
+ },
+ "BRL": {
+ "name": "Brazilian Real",
+ "symbol": "R$"
+ },
+ "GBP": {
+ "name": "British Pound Sterling",
+ "symbol": "GB£"
+ },
+ "BND": {
+ "name": "Brunei Dollar",
+ "symbol": "BND"
+ },
+ "BGN": {
+ "name": "Bulgarian Lev",
+ "symbol": "BGN"
+ },
+ "BIF": {
+ "name": "Burundian Franc",
+ "symbol": "BIF"
+ },
+ "KHR": {
+ "name": "Cambodian Riel",
+ "symbol": "KHR"
+ },
+ "CAD": {
+ "name": "Canadian Dollar",
+ "symbol": "CA$"
+ },
+ "CVE": {
+ "name": "Cape Verdean Escudo",
+ "symbol": "CVE"
+ },
+ "KYD": {
+ "name": "Cayman Islands Dollar",
+ "symbol": "KYD"
+ },
+ "XOF": {
+ "name": "CFA Franc BCEAO",
+ "symbol": "CFA"
+ },
+ "XAF": {
+ "name": "CFA Franc BEAC",
+ "symbol": "FCFA"
+ },
+ "XPF": {
+ "name": "CFP Franc",
+ "symbol": "CFPF"
+ },
+ "CLP": {
+ "name": "Chilean Peso",
+ "symbol": "CLP"
+ },
+ "CNY": {
+ "name": "Chinese Yuan",
+ "symbol": "CNÂ¥"
+ },
+ "COP": {
+ "name": "Colombian Peso",
+ "symbol": "COP"
+ },
+ "KMF": {
+ "name": "Comorian Franc",
+ "symbol": "KMF"
+ },
+ "CDF": {
+ "name": "Congolese Franc",
+ "symbol": "CDF"
+ },
+ "CRC": {
+ "name": "Costa Rican Colón",
+ "symbol": "CRC"
+ },
+ "HRK": {
+ "name": "Croatian Kuna",
+ "symbol": "HRK"
+ },
+ "CUC": {
+ "name": "Cuban Convertible Peso",
+ "symbol": "CUC"
+ },
+ "CUP": {
+ "name": "Cuban Peso",
+ "symbol": "CUP"
+ },
+ "CZK": {
+ "name": "Czech Republic Koruna",
+ "symbol": "CZK"
+ },
+ "DKK": {
+ "name": "Danish Krone",
+ "symbol": "DKK"
+ },
+ "DJF": {
+ "name": "Djiboutian Franc",
+ "symbol": "DJF"
+ },
+ "DOP": {
+ "name": "Dominican Peso",
+ "symbol": "DOP"
+ },
+ "XCD": {
+ "name": "East Caribbean Dollar",
+ "symbol": "EC$"
+ },
+ "EGP": {
+ "name": "Egyptian Pound",
+ "symbol": "EGP"
+ },
+ "ERN": {
+ "name": "Eritrean Nakfa",
+ "symbol": "ERN"
+ },
+ "ETB": {
+ "name": "Ethiopian Birr",
+ "symbol": "ETB"
+ },
+ "EUR": {
+ "name": "Euro",
+ "symbol": "€"
+ },
+ "FKP": {
+ "name": "Falkland Islands Pound",
+ "symbol": "FKP"
+ },
+ "FJD": {
+ "name": "Fijian Dollar",
+ "symbol": "FJD"
+ },
+ "GMD": {
+ "name": "Gambian Dalasi",
+ "symbol": "GMD"
+ },
+ "GEL": {
+ "name": "Georgian Lari",
+ "symbol": "GEL"
+ },
+ "GHS": {
+ "name": "Ghanaian Cedi",
+ "symbol": "GHS"
+ },
+ "GIP": {
+ "name": "Gibraltar Pound",
+ "symbol": "GIP"
+ },
+ "GTQ": {
+ "name": "Guatemalan Quetzal",
+ "symbol": "GTQ"
+ },
+ "GNF": {
+ "name": "Guinean Franc",
+ "symbol": "GNF"
+ },
+ "GYD": {
+ "name": "Guyanaese Dollar",
+ "symbol": "GYD"
+ },
+ "HTG": {
+ "name": "Haitian Gourde",
+ "symbol": "HTG"
+ },
+ "HNL": {
+ "name": "Honduran Lempira",
+ "symbol": "HNL"
+ },
+ "HKD": {
+ "name": "Hong Kong Dollar",
+ "symbol": "HK$"
+ },
+ "HUF": {
+ "name": "Hungarian Forint",
+ "symbol": "HUF"
+ },
+ "ISK": {
+ "name": "Icelandic Króna",
+ "symbol": "ISK"
+ },
+ "INR": {
+ "name": "Indian Rupee",
+ "symbol": "₹"
+ },
+ "IDR": {
+ "name": "Indonesian Rupiah",
+ "symbol": "IDR"
+ },
+ "IRR": {
+ "name": "Iranian Rial",
+ "symbol": "IRR"
+ },
+ "IQD": {
+ "name": "Iraqi Dinar",
+ "symbol": "IQD"
+ },
+ "ILS": {
+ "name": "Israeli New Shekel",
+ "symbol": "₪"
+ },
+ "JMD": {
+ "name": "Jamaican Dollar",
+ "symbol": "JMD"
+ },
+ "JPY": {
+ "name": "Japanese Yen",
+ "symbol": "Â¥"
+ },
+ "JOD": {
+ "name": "Jordanian Dinar",
+ "symbol": "JOD"
+ },
+ "KZT": {
+ "name": "Kazakhstani Tenge",
+ "symbol": "KZT"
+ },
+ "KES": {
+ "name": "Kenyan Shilling",
+ "symbol": "KES"
+ },
+ "KWD": {
+ "name": "Kuwaiti Dinar",
+ "symbol": "KWD"
+ },
+ "KGS": {
+ "name": "Kyrgystani Som",
+ "symbol": "KGS"
+ },
+ "LAK": {
+ "name": "Laotian Kip",
+ "symbol": "LAK"
+ },
+ "LBP": {
+ "name": "Lebanese Pound",
+ "symbol": "LBP"
+ },
+ "LSL": {
+ "name": "Lesotho Loti",
+ "symbol": "LSL"
+ },
+ "LRD": {
+ "name": "Liberian Dollar",
+ "symbol": "LRD"
+ },
+ "LYD": {
+ "name": "Libyan Dinar",
+ "symbol": "LYD"
+ },
+ "LTL": {
+ "name": "Lithuanian Litas",
+ "symbol": "LTL"
+ },
+ "MOP": {
+ "name": "Macanese Pataca",
+ "symbol": "MOP"
+ },
+ "MKD": {
+ "name": "Macedonian Denar",
+ "symbol": "MKD"
+ },
+ "MGA": {
+ "name": "Malagasy Ariary",
+ "symbol": "MGA"
+ },
+ "MWK": {
+ "name": "Malawian Kwacha",
+ "symbol": "MWK"
+ },
+ "MYR": {
+ "name": "Malaysian Ringgit",
+ "symbol": "MYR"
+ },
+ "MVR": {
+ "name": "Maldivian Rufiyaa",
+ "symbol": "MVR"
+ },
+ "MRO": {
+ "name": "Mauritanian Ouguiya",
+ "symbol": "MRO"
+ },
+ "MUR": {
+ "name": "Mauritian Rupee",
+ "symbol": "MUR"
+ },
+ "MXN": {
+ "name": "Mexican Peso",
+ "symbol": "MX$"
+ },
+ "MDL": {
+ "name": "Moldovan Leu",
+ "symbol": "MDL"
+ },
+ "MNT": {
+ "name": "Mongolian Tugrik",
+ "symbol": "MNT"
+ },
+ "MAD": {
+ "name": "Moroccan Dirham",
+ "symbol": "MAD"
+ },
+ "MZN": {
+ "name": "Mozambican Metical",
+ "symbol": "MZN"
+ },
+ "MMK": {
+ "name": "Myanmar Kyat",
+ "symbol": "MMK"
+ },
+ "NAD": {
+ "name": "Namibian Dollar",
+ "symbol": "NAD"
+ },
+ "NPR": {
+ "name": "Nepalese Rupee",
+ "symbol": "NPR"
+ },
+ "ANG": {
+ "name": "Netherlands Antillean Guilder",
+ "symbol": "ANG"
+ },
+ "TWD": {
+ "name": "New Taiwan Dollar",
+ "symbol": "NT$"
+ },
+ "NZD": {
+ "name": "New Zealand Dollar",
+ "symbol": "NZ$"
+ },
+ "NIO": {
+ "name": "Nicaraguan Córdoba",
+ "symbol": "NIO"
+ },
+ "NGN": {
+ "name": "Nigerian Naira",
+ "symbol": "NGN"
+ },
+ "KPW": {
+ "name": "North Korean Won",
+ "symbol": "KPW"
+ },
+ "NOK": {
+ "name": "Norwegian Krone",
+ "symbol": "NOK"
+ },
+ "OMR": {
+ "name": "Omani Rial",
+ "symbol": "OMR"
+ },
+ "PKR": {
+ "name": "Pakistani Rupee",
+ "symbol": "PKR"
+ },
+ "PAB": {
+ "name": "Panamanian Balboa",
+ "symbol": "PAB"
+ },
+ "PGK": {
+ "name": "Papua New Guinean Kina",
+ "symbol": "PGK"
+ },
+ "PYG": {
+ "name": "Paraguayan Guarani",
+ "symbol": "PYG"
+ },
+ "PEN": {
+ "name": "Peruvian Nuevo Sol",
+ "symbol": "PEN"
+ },
+ "PHP": {
+ "name": "Philippine Peso",
+ "symbol": "PHP"
+ },
+ "PLN": {
+ "name": "Polish Zloty",
+ "symbol": "PLN"
+ },
+ "QAR": {
+ "name": "Qatari Rial",
+ "symbol": "QAR"
+ },
+ "RON": {
+ "name": "Romanian Leu",
+ "symbol": "RON"
+ },
+ "RUB": {
+ "name": "Russian Ruble",
+ "symbol": "RUB"
+ },
+ "RWF": {
+ "name": "Rwandan Franc",
+ "symbol": "RWF"
+ },
+ "SHP": {
+ "name": "Saint Helena Pound",
+ "symbol": "SHP"
+ },
+ "SVC": {
+ "name": "Salvadoran Colón",
+ "symbol": "SVC"
+ },
+ "WST": {
+ "name": "Samoan Tala",
+ "symbol": "WST"
+ },
+ "STD": {
+ "name": "São Tomé and Príncipe Dobra",
+ "symbol": "STD"
+ },
+ "SAR": {
+ "name": "Saudi Riyal",
+ "symbol": "SAR"
+ },
+ "RSD": {
+ "name": "Serbian Dinar",
+ "symbol": "RSD"
+ },
+ "SCR": {
+ "name": "Seychellois Rupee",
+ "symbol": "SCR"
+ },
+ "SLL": {
+ "name": "Sierra Leonean Leone",
+ "symbol": "SLL"
+ },
+ "SGD": {
+ "name": "Singapore Dollar",
+ "symbol": "SGD"
+ },
+ "SBD": {
+ "name": "Solomon Islands Dollar",
+ "symbol": "SBD"
+ },
+ "SOS": {
+ "name": "Somali Shilling",
+ "symbol": "SOS"
+ },
+ "ZAR": {
+ "name": "South African Rand",
+ "symbol": "ZAR"
+ },
+ "KRW": {
+ "name": "South Korean Won",
+ "symbol": "â‚©"
+ },
+ "SSP": {
+ "name": "South Sudanese Pound",
+ "symbol": "SSP"
+ },
+ "LKR": {
+ "name": "Sri Lankan Rupee",
+ "symbol": "LKR"
+ },
+ "SDG": {
+ "name": "Sudanese Pound",
+ "symbol": "SDG"
+ },
+ "SRD": {
+ "name": "Surinamese Dollar",
+ "symbol": "SRD"
+ },
+ "SZL": {
+ "name": "Swazi Lilangeni",
+ "symbol": "SZL"
+ },
+ "SEK": {
+ "name": "Swedish Krona",
+ "symbol": "SEK"
+ },
+ "CHF": {
+ "name": "Swiss Franc",
+ "symbol": "CHF"
+ },
+ "SYP": {
+ "name": "Syrian Pound",
+ "symbol": "SYP"
+ },
+ "TJS": {
+ "name": "Tajikistani Somoni",
+ "symbol": "TJS"
+ },
+ "TZS": {
+ "name": "Tanzanian Shilling",
+ "symbol": "TZS"
+ },
+ "THB": {
+ "name": "Thai Baht",
+ "symbol": "฿"
+ },
+ "TOP": {
+ "name": "Tongan Paʻanga",
+ "symbol": "TOP"
+ },
+ "TTD": {
+ "name": "Trinidad and Tobago Dollar",
+ "symbol": "TTD"
+ },
+ "TND": {
+ "name": "Tunisian Dinar",
+ "symbol": "TND"
+ },
+ "TRY": {
+ "name": "Turkish Lira",
+ "symbol": "TRY"
+ },
+ "TMT": {
+ "name": "Turkmenistani Manat",
+ "symbol": "TMT"
+ },
+ "UGX": {
+ "name": "Ugandan Shilling",
+ "symbol": "UGX"
+ },
+ "UAH": {
+ "name": "Ukrainian Hryvnia",
+ "symbol": "UAH"
+ },
+ "AED": {
+ "name": "United Arab Emirates Dirham",
+ "symbol": "AED"
+ },
+ "UYU": {
+ "name": "Uruguayan Peso",
+ "symbol": "UYU"
+ },
+ "USD": {
+ "name": "US Dollar",
+ "symbol": "US$"
+ },
+ "UZS": {
+ "name": "Uzbekistan Som",
+ "symbol": "UZS"
+ },
+ "VUV": {
+ "name": "Vanuatu Vatu",
+ "symbol": "VUV"
+ },
+ "VEF": {
+ "name": "Venezuelan Bolívar",
+ "symbol": "VEF"
+ },
+ "VND": {
+ "name": "Vietnamese Dong",
+ "symbol": "â‚«"
+ },
+ "YER": {
+ "name": "Yemeni Rial",
+ "symbol": "YER"
+ },
+ "ZMW": {
+ "name": "Zambian Kwacha",
+ "symbol": "ZMW"
+ },
+ "ZWL": {
+ "name": "Zimbabwean Dollar (2009)",
+ "symbol": "ZWL"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/currency/en-NZ.json b/library/intl/resources/currency/en-NZ.json
new file mode 100644
index 000000000..00a9ef4f4
--- /dev/null
+++ b/library/intl/resources/currency/en-NZ.json
@@ -0,0 +1,634 @@
+{
+ "AFN": {
+ "name": "Afghan Afghani",
+ "symbol": "AFN"
+ },
+ "ALL": {
+ "name": "Albanian Lek",
+ "symbol": "ALL"
+ },
+ "DZD": {
+ "name": "Algerian Dinar",
+ "symbol": "DZD"
+ },
+ "AOA": {
+ "name": "Angolan Kwanza",
+ "symbol": "AOA"
+ },
+ "ARS": {
+ "name": "Argentine Peso",
+ "symbol": "ARS"
+ },
+ "AMD": {
+ "name": "Armenian Dram",
+ "symbol": "AMD"
+ },
+ "AWG": {
+ "name": "Aruban Florin",
+ "symbol": "AWG"
+ },
+ "AUD": {
+ "name": "Australian Dollar",
+ "symbol": "A$"
+ },
+ "AZN": {
+ "name": "Azerbaijani Manat",
+ "symbol": "AZN"
+ },
+ "BSD": {
+ "name": "Bahamian Dollar",
+ "symbol": "BSD"
+ },
+ "BHD": {
+ "name": "Bahraini Dinar",
+ "symbol": "BHD"
+ },
+ "BDT": {
+ "name": "Bangladeshi Taka",
+ "symbol": "BDT"
+ },
+ "BBD": {
+ "name": "Barbadian Dollar",
+ "symbol": "BBD"
+ },
+ "BYR": {
+ "name": "Belarusian Ruble",
+ "symbol": "BYR"
+ },
+ "BZD": {
+ "name": "Belize Dollar",
+ "symbol": "BZD"
+ },
+ "BMD": {
+ "name": "Bermudan Dollar",
+ "symbol": "BMD"
+ },
+ "BTN": {
+ "name": "Bhutanese Ngultrum",
+ "symbol": "BTN"
+ },
+ "BOB": {
+ "name": "Bolivian Boliviano",
+ "symbol": "BOB"
+ },
+ "BAM": {
+ "name": "Bosnia-Herzegovina Convertible Mark",
+ "symbol": "BAM"
+ },
+ "BWP": {
+ "name": "Botswanan Pula",
+ "symbol": "BWP"
+ },
+ "BRL": {
+ "name": "Brazilian Real",
+ "symbol": "R$"
+ },
+ "GBP": {
+ "name": "British Pound Sterling",
+ "symbol": "£"
+ },
+ "BND": {
+ "name": "Brunei Dollar",
+ "symbol": "BND"
+ },
+ "BGN": {
+ "name": "Bulgarian Lev",
+ "symbol": "BGN"
+ },
+ "BIF": {
+ "name": "Burundian Franc",
+ "symbol": "BIF"
+ },
+ "KHR": {
+ "name": "Cambodian Riel",
+ "symbol": "KHR"
+ },
+ "CAD": {
+ "name": "Canadian Dollar",
+ "symbol": "CA$"
+ },
+ "CVE": {
+ "name": "Cape Verdean Escudo",
+ "symbol": "CVE"
+ },
+ "KYD": {
+ "name": "Cayman Islands Dollar",
+ "symbol": "KYD"
+ },
+ "XOF": {
+ "name": "CFA Franc BCEAO",
+ "symbol": "CFA"
+ },
+ "XAF": {
+ "name": "CFA Franc BEAC",
+ "symbol": "FCFA"
+ },
+ "XPF": {
+ "name": "CFP Franc",
+ "symbol": "CFPF"
+ },
+ "CLP": {
+ "name": "Chilean Peso",
+ "symbol": "CLP"
+ },
+ "CNY": {
+ "name": "Chinese Yuan",
+ "symbol": "CNÂ¥"
+ },
+ "COP": {
+ "name": "Colombian Peso",
+ "symbol": "COP"
+ },
+ "KMF": {
+ "name": "Comorian Franc",
+ "symbol": "KMF"
+ },
+ "CDF": {
+ "name": "Congolese Franc",
+ "symbol": "CDF"
+ },
+ "CRC": {
+ "name": "Costa Rican Colón",
+ "symbol": "CRC"
+ },
+ "HRK": {
+ "name": "Croatian Kuna",
+ "symbol": "HRK"
+ },
+ "CUC": {
+ "name": "Cuban Convertible Peso",
+ "symbol": "CUC"
+ },
+ "CUP": {
+ "name": "Cuban Peso",
+ "symbol": "CUP"
+ },
+ "CZK": {
+ "name": "Czech Republic Koruna",
+ "symbol": "CZK"
+ },
+ "DKK": {
+ "name": "Danish Krone",
+ "symbol": "DKK"
+ },
+ "DJF": {
+ "name": "Djiboutian Franc",
+ "symbol": "DJF"
+ },
+ "DOP": {
+ "name": "Dominican Peso",
+ "symbol": "DOP"
+ },
+ "XCD": {
+ "name": "East Caribbean Dollar",
+ "symbol": "EC$"
+ },
+ "EGP": {
+ "name": "Egyptian Pound",
+ "symbol": "EGP"
+ },
+ "ERN": {
+ "name": "Eritrean Nakfa",
+ "symbol": "ERN"
+ },
+ "ETB": {
+ "name": "Ethiopian Birr",
+ "symbol": "ETB"
+ },
+ "EUR": {
+ "name": "Euro",
+ "symbol": "€"
+ },
+ "FKP": {
+ "name": "Falkland Islands Pound",
+ "symbol": "FKP"
+ },
+ "FJD": {
+ "name": "Fijian Dollar",
+ "symbol": "FJD"
+ },
+ "GMD": {
+ "name": "Gambian Dalasi",
+ "symbol": "GMD"
+ },
+ "GEL": {
+ "name": "Georgian Lari",
+ "symbol": "GEL"
+ },
+ "GHS": {
+ "name": "Ghanaian Cedi",
+ "symbol": "GHS"
+ },
+ "GIP": {
+ "name": "Gibraltar Pound",
+ "symbol": "GIP"
+ },
+ "GTQ": {
+ "name": "Guatemalan Quetzal",
+ "symbol": "GTQ"
+ },
+ "GNF": {
+ "name": "Guinean Franc",
+ "symbol": "GNF"
+ },
+ "GYD": {
+ "name": "Guyanaese Dollar",
+ "symbol": "GYD"
+ },
+ "HTG": {
+ "name": "Haitian Gourde",
+ "symbol": "HTG"
+ },
+ "HNL": {
+ "name": "Honduran Lempira",
+ "symbol": "HNL"
+ },
+ "HKD": {
+ "name": "Hong Kong Dollar",
+ "symbol": "HK$"
+ },
+ "HUF": {
+ "name": "Hungarian Forint",
+ "symbol": "HUF"
+ },
+ "ISK": {
+ "name": "Icelandic Króna",
+ "symbol": "ISK"
+ },
+ "INR": {
+ "name": "Indian Rupee",
+ "symbol": "₹"
+ },
+ "IDR": {
+ "name": "Indonesian Rupiah",
+ "symbol": "IDR"
+ },
+ "IRR": {
+ "name": "Iranian Rial",
+ "symbol": "IRR"
+ },
+ "IQD": {
+ "name": "Iraqi Dinar",
+ "symbol": "IQD"
+ },
+ "ILS": {
+ "name": "Israeli New Shekel",
+ "symbol": "₪"
+ },
+ "JMD": {
+ "name": "Jamaican Dollar",
+ "symbol": "JMD"
+ },
+ "JPY": {
+ "name": "Japanese Yen",
+ "symbol": "Â¥"
+ },
+ "JOD": {
+ "name": "Jordanian Dinar",
+ "symbol": "JOD"
+ },
+ "KZT": {
+ "name": "Kazakhstani Tenge",
+ "symbol": "KZT"
+ },
+ "KES": {
+ "name": "Kenyan Shilling",
+ "symbol": "KES"
+ },
+ "KWD": {
+ "name": "Kuwaiti Dinar",
+ "symbol": "KWD"
+ },
+ "KGS": {
+ "name": "Kyrgystani Som",
+ "symbol": "KGS"
+ },
+ "LAK": {
+ "name": "Laotian Kip",
+ "symbol": "LAK"
+ },
+ "LBP": {
+ "name": "Lebanese Pound",
+ "symbol": "LBP"
+ },
+ "LSL": {
+ "name": "Lesotho Loti",
+ "symbol": "LSL"
+ },
+ "LRD": {
+ "name": "Liberian Dollar",
+ "symbol": "LRD"
+ },
+ "LYD": {
+ "name": "Libyan Dinar",
+ "symbol": "LYD"
+ },
+ "LTL": {
+ "name": "Lithuanian Litas",
+ "symbol": "LTL"
+ },
+ "MOP": {
+ "name": "Macanese Pataca",
+ "symbol": "MOP"
+ },
+ "MKD": {
+ "name": "Macedonian Denar",
+ "symbol": "MKD"
+ },
+ "MGA": {
+ "name": "Malagasy Ariary",
+ "symbol": "MGA"
+ },
+ "MWK": {
+ "name": "Malawian Kwacha",
+ "symbol": "MWK"
+ },
+ "MYR": {
+ "name": "Malaysian Ringgit",
+ "symbol": "MYR"
+ },
+ "MVR": {
+ "name": "Maldivian Rufiyaa",
+ "symbol": "MVR"
+ },
+ "MRO": {
+ "name": "Mauritanian Ouguiya",
+ "symbol": "MRO"
+ },
+ "MUR": {
+ "name": "Mauritian Rupee",
+ "symbol": "MUR"
+ },
+ "MXN": {
+ "name": "Mexican Peso",
+ "symbol": "MX$"
+ },
+ "MDL": {
+ "name": "Moldovan Leu",
+ "symbol": "MDL"
+ },
+ "MNT": {
+ "name": "Mongolian Tugrik",
+ "symbol": "MNT"
+ },
+ "MAD": {
+ "name": "Moroccan Dirham",
+ "symbol": "MAD"
+ },
+ "MZN": {
+ "name": "Mozambican Metical",
+ "symbol": "MZN"
+ },
+ "MMK": {
+ "name": "Myanmar Kyat",
+ "symbol": "MMK"
+ },
+ "NAD": {
+ "name": "Namibian Dollar",
+ "symbol": "NAD"
+ },
+ "NPR": {
+ "name": "Nepalese Rupee",
+ "symbol": "NPR"
+ },
+ "ANG": {
+ "name": "Netherlands Antillean Guilder",
+ "symbol": "ANG"
+ },
+ "TWD": {
+ "name": "New Taiwan Dollar",
+ "symbol": "NT$"
+ },
+ "NZD": {
+ "name": "New Zealand Dollar",
+ "symbol": "$"
+ },
+ "NIO": {
+ "name": "Nicaraguan Córdoba",
+ "symbol": "NIO"
+ },
+ "NGN": {
+ "name": "Nigerian Naira",
+ "symbol": "NGN"
+ },
+ "KPW": {
+ "name": "North Korean Won",
+ "symbol": "KPW"
+ },
+ "NOK": {
+ "name": "Norwegian Krone",
+ "symbol": "NOK"
+ },
+ "OMR": {
+ "name": "Omani Rial",
+ "symbol": "OMR"
+ },
+ "PKR": {
+ "name": "Pakistani Rupee",
+ "symbol": "PKR"
+ },
+ "PAB": {
+ "name": "Panamanian Balboa",
+ "symbol": "PAB"
+ },
+ "PGK": {
+ "name": "Papua New Guinean Kina",
+ "symbol": "PGK"
+ },
+ "PYG": {
+ "name": "Paraguayan Guarani",
+ "symbol": "PYG"
+ },
+ "PEN": {
+ "name": "Peruvian Nuevo Sol",
+ "symbol": "PEN"
+ },
+ "PHP": {
+ "name": "Philippine Peso",
+ "symbol": "PHP"
+ },
+ "PLN": {
+ "name": "Polish Zloty",
+ "symbol": "PLN"
+ },
+ "QAR": {
+ "name": "Qatari Rial",
+ "symbol": "QAR"
+ },
+ "RON": {
+ "name": "Romanian Leu",
+ "symbol": "RON"
+ },
+ "RUB": {
+ "name": "Russian Ruble",
+ "symbol": "RUB"
+ },
+ "RWF": {
+ "name": "Rwandan Franc",
+ "symbol": "RWF"
+ },
+ "SHP": {
+ "name": "Saint Helena Pound",
+ "symbol": "SHP"
+ },
+ "SVC": {
+ "name": "Salvadoran Colón",
+ "symbol": "SVC"
+ },
+ "WST": {
+ "name": "Samoan Tala",
+ "symbol": "WST"
+ },
+ "STD": {
+ "name": "São Tomé and Príncipe Dobra",
+ "symbol": "STD"
+ },
+ "SAR": {
+ "name": "Saudi Riyal",
+ "symbol": "SAR"
+ },
+ "RSD": {
+ "name": "Serbian Dinar",
+ "symbol": "RSD"
+ },
+ "SCR": {
+ "name": "Seychellois Rupee",
+ "symbol": "SCR"
+ },
+ "SLL": {
+ "name": "Sierra Leonean Leone",
+ "symbol": "SLL"
+ },
+ "SGD": {
+ "name": "Singapore Dollar",
+ "symbol": "SGD"
+ },
+ "SBD": {
+ "name": "Solomon Islands Dollar",
+ "symbol": "SBD"
+ },
+ "SOS": {
+ "name": "Somali Shilling",
+ "symbol": "SOS"
+ },
+ "ZAR": {
+ "name": "South African Rand",
+ "symbol": "ZAR"
+ },
+ "KRW": {
+ "name": "South Korean Won",
+ "symbol": "â‚©"
+ },
+ "SSP": {
+ "name": "South Sudanese Pound",
+ "symbol": "SSP"
+ },
+ "LKR": {
+ "name": "Sri Lankan Rupee",
+ "symbol": "LKR"
+ },
+ "SDG": {
+ "name": "Sudanese Pound",
+ "symbol": "SDG"
+ },
+ "SRD": {
+ "name": "Surinamese Dollar",
+ "symbol": "SRD"
+ },
+ "SZL": {
+ "name": "Swazi Lilangeni",
+ "symbol": "SZL"
+ },
+ "SEK": {
+ "name": "Swedish Krona",
+ "symbol": "SEK"
+ },
+ "CHF": {
+ "name": "Swiss Franc",
+ "symbol": "CHF"
+ },
+ "SYP": {
+ "name": "Syrian Pound",
+ "symbol": "SYP"
+ },
+ "TJS": {
+ "name": "Tajikistani Somoni",
+ "symbol": "TJS"
+ },
+ "TZS": {
+ "name": "Tanzanian Shilling",
+ "symbol": "TZS"
+ },
+ "THB": {
+ "name": "Thai Baht",
+ "symbol": "฿"
+ },
+ "TOP": {
+ "name": "Tongan Paʻanga",
+ "symbol": "TOP"
+ },
+ "TTD": {
+ "name": "Trinidad and Tobago Dollar",
+ "symbol": "TTD"
+ },
+ "TND": {
+ "name": "Tunisian Dinar",
+ "symbol": "TND"
+ },
+ "TRY": {
+ "name": "Turkish Lira",
+ "symbol": "TRY"
+ },
+ "TMT": {
+ "name": "Turkmenistani Manat",
+ "symbol": "TMT"
+ },
+ "UGX": {
+ "name": "Ugandan Shilling",
+ "symbol": "UGX"
+ },
+ "UAH": {
+ "name": "Ukrainian Hryvnia",
+ "symbol": "UAH"
+ },
+ "AED": {
+ "name": "United Arab Emirates Dirham",
+ "symbol": "AED"
+ },
+ "UYU": {
+ "name": "Uruguayan Peso",
+ "symbol": "UYU"
+ },
+ "USD": {
+ "name": "US Dollar",
+ "symbol": "US$"
+ },
+ "UZS": {
+ "name": "Uzbekistan Som",
+ "symbol": "UZS"
+ },
+ "VUV": {
+ "name": "Vanuatu Vatu",
+ "symbol": "VUV"
+ },
+ "VEF": {
+ "name": "Venezuelan Bolívar",
+ "symbol": "VEF"
+ },
+ "VND": {
+ "name": "Vietnamese Dong",
+ "symbol": "â‚«"
+ },
+ "YER": {
+ "name": "Yemeni Rial",
+ "symbol": "YER"
+ },
+ "ZMW": {
+ "name": "Zambian Kwacha",
+ "symbol": "ZMW"
+ },
+ "ZWL": {
+ "name": "Zimbabwean Dollar (2009)",
+ "symbol": "ZWL"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/currency/en-PK.json b/library/intl/resources/currency/en-PK.json
new file mode 100644
index 000000000..0a373668f
--- /dev/null
+++ b/library/intl/resources/currency/en-PK.json
@@ -0,0 +1,634 @@
+{
+ "AFN": {
+ "name": "Afghan Afghani",
+ "symbol": "AFN"
+ },
+ "ALL": {
+ "name": "Albanian Lek",
+ "symbol": "ALL"
+ },
+ "DZD": {
+ "name": "Algerian Dinar",
+ "symbol": "DZD"
+ },
+ "AOA": {
+ "name": "Angolan Kwanza",
+ "symbol": "AOA"
+ },
+ "ARS": {
+ "name": "Argentine Peso",
+ "symbol": "ARS"
+ },
+ "AMD": {
+ "name": "Armenian Dram",
+ "symbol": "AMD"
+ },
+ "AWG": {
+ "name": "Aruban Florin",
+ "symbol": "AWG"
+ },
+ "AUD": {
+ "name": "Australian Dollar",
+ "symbol": "A$"
+ },
+ "AZN": {
+ "name": "Azerbaijani Manat",
+ "symbol": "AZN"
+ },
+ "BSD": {
+ "name": "Bahamian Dollar",
+ "symbol": "BSD"
+ },
+ "BHD": {
+ "name": "Bahraini Dinar",
+ "symbol": "BHD"
+ },
+ "BDT": {
+ "name": "Bangladeshi Taka",
+ "symbol": "BDT"
+ },
+ "BBD": {
+ "name": "Barbadian Dollar",
+ "symbol": "BBD"
+ },
+ "BYR": {
+ "name": "Belarusian Ruble",
+ "symbol": "BYR"
+ },
+ "BZD": {
+ "name": "Belize Dollar",
+ "symbol": "BZD"
+ },
+ "BMD": {
+ "name": "Bermudan Dollar",
+ "symbol": "BMD"
+ },
+ "BTN": {
+ "name": "Bhutanese Ngultrum",
+ "symbol": "BTN"
+ },
+ "BOB": {
+ "name": "Bolivian Boliviano",
+ "symbol": "BOB"
+ },
+ "BAM": {
+ "name": "Bosnia-Herzegovina Convertible Mark",
+ "symbol": "BAM"
+ },
+ "BWP": {
+ "name": "Botswanan Pula",
+ "symbol": "BWP"
+ },
+ "BRL": {
+ "name": "Brazilian Real",
+ "symbol": "R$"
+ },
+ "GBP": {
+ "name": "British Pound Sterling",
+ "symbol": "£"
+ },
+ "BND": {
+ "name": "Brunei Dollar",
+ "symbol": "BND"
+ },
+ "BGN": {
+ "name": "Bulgarian Lev",
+ "symbol": "BGN"
+ },
+ "BIF": {
+ "name": "Burundian Franc",
+ "symbol": "BIF"
+ },
+ "KHR": {
+ "name": "Cambodian Riel",
+ "symbol": "KHR"
+ },
+ "CAD": {
+ "name": "Canadian Dollar",
+ "symbol": "CA$"
+ },
+ "CVE": {
+ "name": "Cape Verdean Escudo",
+ "symbol": "CVE"
+ },
+ "KYD": {
+ "name": "Cayman Islands Dollar",
+ "symbol": "KYD"
+ },
+ "XOF": {
+ "name": "CFA Franc BCEAO",
+ "symbol": "CFA"
+ },
+ "XAF": {
+ "name": "CFA Franc BEAC",
+ "symbol": "FCFA"
+ },
+ "XPF": {
+ "name": "CFP Franc",
+ "symbol": "CFPF"
+ },
+ "CLP": {
+ "name": "Chilean Peso",
+ "symbol": "CLP"
+ },
+ "CNY": {
+ "name": "Chinese Yuan",
+ "symbol": "CNÂ¥"
+ },
+ "COP": {
+ "name": "Colombian Peso",
+ "symbol": "COP"
+ },
+ "KMF": {
+ "name": "Comorian Franc",
+ "symbol": "KMF"
+ },
+ "CDF": {
+ "name": "Congolese Franc",
+ "symbol": "CDF"
+ },
+ "CRC": {
+ "name": "Costa Rican Colón",
+ "symbol": "CRC"
+ },
+ "HRK": {
+ "name": "Croatian Kuna",
+ "symbol": "HRK"
+ },
+ "CUC": {
+ "name": "Cuban Convertible Peso",
+ "symbol": "CUC"
+ },
+ "CUP": {
+ "name": "Cuban Peso",
+ "symbol": "CUP"
+ },
+ "CZK": {
+ "name": "Czech Republic Koruna",
+ "symbol": "CZK"
+ },
+ "DKK": {
+ "name": "Danish Krone",
+ "symbol": "DKK"
+ },
+ "DJF": {
+ "name": "Djiboutian Franc",
+ "symbol": "DJF"
+ },
+ "DOP": {
+ "name": "Dominican Peso",
+ "symbol": "DOP"
+ },
+ "XCD": {
+ "name": "East Caribbean Dollar",
+ "symbol": "EC$"
+ },
+ "EGP": {
+ "name": "Egyptian Pound",
+ "symbol": "EGP"
+ },
+ "ERN": {
+ "name": "Eritrean Nakfa",
+ "symbol": "ERN"
+ },
+ "ETB": {
+ "name": "Ethiopian Birr",
+ "symbol": "ETB"
+ },
+ "EUR": {
+ "name": "Euro",
+ "symbol": "€"
+ },
+ "FKP": {
+ "name": "Falkland Islands Pound",
+ "symbol": "FKP"
+ },
+ "FJD": {
+ "name": "Fijian Dollar",
+ "symbol": "FJD"
+ },
+ "GMD": {
+ "name": "Gambian Dalasi",
+ "symbol": "GMD"
+ },
+ "GEL": {
+ "name": "Georgian Lari",
+ "symbol": "GEL"
+ },
+ "GHS": {
+ "name": "Ghanaian Cedi",
+ "symbol": "GHS"
+ },
+ "GIP": {
+ "name": "Gibraltar Pound",
+ "symbol": "GIP"
+ },
+ "GTQ": {
+ "name": "Guatemalan Quetzal",
+ "symbol": "GTQ"
+ },
+ "GNF": {
+ "name": "Guinean Franc",
+ "symbol": "GNF"
+ },
+ "GYD": {
+ "name": "Guyanaese Dollar",
+ "symbol": "GYD"
+ },
+ "HTG": {
+ "name": "Haitian Gourde",
+ "symbol": "HTG"
+ },
+ "HNL": {
+ "name": "Honduran Lempira",
+ "symbol": "HNL"
+ },
+ "HKD": {
+ "name": "Hong Kong Dollar",
+ "symbol": "HK$"
+ },
+ "HUF": {
+ "name": "Hungarian Forint",
+ "symbol": "HUF"
+ },
+ "ISK": {
+ "name": "Icelandic Króna",
+ "symbol": "ISK"
+ },
+ "INR": {
+ "name": "Indian Rupee",
+ "symbol": "₹"
+ },
+ "IDR": {
+ "name": "Indonesian Rupiah",
+ "symbol": "IDR"
+ },
+ "IRR": {
+ "name": "Iranian Rial",
+ "symbol": "IRR"
+ },
+ "IQD": {
+ "name": "Iraqi Dinar",
+ "symbol": "IQD"
+ },
+ "ILS": {
+ "name": "Israeli New Shekel",
+ "symbol": "₪"
+ },
+ "JMD": {
+ "name": "Jamaican Dollar",
+ "symbol": "JMD"
+ },
+ "JPY": {
+ "name": "Japanese Yen",
+ "symbol": "Â¥"
+ },
+ "JOD": {
+ "name": "Jordanian Dinar",
+ "symbol": "JOD"
+ },
+ "KZT": {
+ "name": "Kazakhstani Tenge",
+ "symbol": "KZT"
+ },
+ "KES": {
+ "name": "Kenyan Shilling",
+ "symbol": "KES"
+ },
+ "KWD": {
+ "name": "Kuwaiti Dinar",
+ "symbol": "KWD"
+ },
+ "KGS": {
+ "name": "Kyrgystani Som",
+ "symbol": "KGS"
+ },
+ "LAK": {
+ "name": "Laotian Kip",
+ "symbol": "LAK"
+ },
+ "LBP": {
+ "name": "Lebanese Pound",
+ "symbol": "LBP"
+ },
+ "LSL": {
+ "name": "Lesotho Loti",
+ "symbol": "LSL"
+ },
+ "LRD": {
+ "name": "Liberian Dollar",
+ "symbol": "LRD"
+ },
+ "LYD": {
+ "name": "Libyan Dinar",
+ "symbol": "LYD"
+ },
+ "LTL": {
+ "name": "Lithuanian Litas",
+ "symbol": "LTL"
+ },
+ "MOP": {
+ "name": "Macanese Pataca",
+ "symbol": "MOP"
+ },
+ "MKD": {
+ "name": "Macedonian Denar",
+ "symbol": "MKD"
+ },
+ "MGA": {
+ "name": "Malagasy Ariary",
+ "symbol": "MGA"
+ },
+ "MWK": {
+ "name": "Malawian Kwacha",
+ "symbol": "MWK"
+ },
+ "MYR": {
+ "name": "Malaysian Ringgit",
+ "symbol": "MYR"
+ },
+ "MVR": {
+ "name": "Maldivian Rufiyaa",
+ "symbol": "MVR"
+ },
+ "MRO": {
+ "name": "Mauritanian Ouguiya",
+ "symbol": "MRO"
+ },
+ "MUR": {
+ "name": "Mauritian Rupee",
+ "symbol": "MUR"
+ },
+ "MXN": {
+ "name": "Mexican Peso",
+ "symbol": "MX$"
+ },
+ "MDL": {
+ "name": "Moldovan Leu",
+ "symbol": "MDL"
+ },
+ "MNT": {
+ "name": "Mongolian Tugrik",
+ "symbol": "MNT"
+ },
+ "MAD": {
+ "name": "Moroccan Dirham",
+ "symbol": "MAD"
+ },
+ "MZN": {
+ "name": "Mozambican Metical",
+ "symbol": "MZN"
+ },
+ "MMK": {
+ "name": "Myanmar Kyat",
+ "symbol": "MMK"
+ },
+ "NAD": {
+ "name": "Namibian Dollar",
+ "symbol": "NAD"
+ },
+ "NPR": {
+ "name": "Nepalese Rupee",
+ "symbol": "NPR"
+ },
+ "ANG": {
+ "name": "Netherlands Antillean Guilder",
+ "symbol": "ANG"
+ },
+ "TWD": {
+ "name": "New Taiwan Dollar",
+ "symbol": "NT$"
+ },
+ "NZD": {
+ "name": "New Zealand Dollar",
+ "symbol": "NZ$"
+ },
+ "NIO": {
+ "name": "Nicaraguan Córdoba",
+ "symbol": "NIO"
+ },
+ "NGN": {
+ "name": "Nigerian Naira",
+ "symbol": "NGN"
+ },
+ "KPW": {
+ "name": "North Korean Won",
+ "symbol": "KPW"
+ },
+ "NOK": {
+ "name": "Norwegian Krone",
+ "symbol": "NOK"
+ },
+ "OMR": {
+ "name": "Omani Rial",
+ "symbol": "OMR"
+ },
+ "PKR": {
+ "name": "Pakistani Rupee",
+ "symbol": "Rs"
+ },
+ "PAB": {
+ "name": "Panamanian Balboa",
+ "symbol": "PAB"
+ },
+ "PGK": {
+ "name": "Papua New Guinean Kina",
+ "symbol": "PGK"
+ },
+ "PYG": {
+ "name": "Paraguayan Guarani",
+ "symbol": "PYG"
+ },
+ "PEN": {
+ "name": "Peruvian Nuevo Sol",
+ "symbol": "PEN"
+ },
+ "PHP": {
+ "name": "Philippine Peso",
+ "symbol": "PHP"
+ },
+ "PLN": {
+ "name": "Polish Zloty",
+ "symbol": "PLN"
+ },
+ "QAR": {
+ "name": "Qatari Rial",
+ "symbol": "QAR"
+ },
+ "RON": {
+ "name": "Romanian Leu",
+ "symbol": "RON"
+ },
+ "RUB": {
+ "name": "Russian Ruble",
+ "symbol": "RUB"
+ },
+ "RWF": {
+ "name": "Rwandan Franc",
+ "symbol": "RWF"
+ },
+ "SHP": {
+ "name": "Saint Helena Pound",
+ "symbol": "SHP"
+ },
+ "SVC": {
+ "name": "Salvadoran Colón",
+ "symbol": "SVC"
+ },
+ "WST": {
+ "name": "Samoan Tala",
+ "symbol": "WST"
+ },
+ "STD": {
+ "name": "São Tomé and Príncipe Dobra",
+ "symbol": "STD"
+ },
+ "SAR": {
+ "name": "Saudi Riyal",
+ "symbol": "SAR"
+ },
+ "RSD": {
+ "name": "Serbian Dinar",
+ "symbol": "RSD"
+ },
+ "SCR": {
+ "name": "Seychellois Rupee",
+ "symbol": "SCR"
+ },
+ "SLL": {
+ "name": "Sierra Leonean Leone",
+ "symbol": "SLL"
+ },
+ "SGD": {
+ "name": "Singapore Dollar",
+ "symbol": "SGD"
+ },
+ "SBD": {
+ "name": "Solomon Islands Dollar",
+ "symbol": "SBD"
+ },
+ "SOS": {
+ "name": "Somali Shilling",
+ "symbol": "SOS"
+ },
+ "ZAR": {
+ "name": "South African Rand",
+ "symbol": "ZAR"
+ },
+ "KRW": {
+ "name": "South Korean Won",
+ "symbol": "â‚©"
+ },
+ "SSP": {
+ "name": "South Sudanese Pound",
+ "symbol": "SSP"
+ },
+ "LKR": {
+ "name": "Sri Lankan Rupee",
+ "symbol": "LKR"
+ },
+ "SDG": {
+ "name": "Sudanese Pound",
+ "symbol": "SDG"
+ },
+ "SRD": {
+ "name": "Surinamese Dollar",
+ "symbol": "SRD"
+ },
+ "SZL": {
+ "name": "Swazi Lilangeni",
+ "symbol": "SZL"
+ },
+ "SEK": {
+ "name": "Swedish Krona",
+ "symbol": "SEK"
+ },
+ "CHF": {
+ "name": "Swiss Franc",
+ "symbol": "CHF"
+ },
+ "SYP": {
+ "name": "Syrian Pound",
+ "symbol": "SYP"
+ },
+ "TJS": {
+ "name": "Tajikistani Somoni",
+ "symbol": "TJS"
+ },
+ "TZS": {
+ "name": "Tanzanian Shilling",
+ "symbol": "TZS"
+ },
+ "THB": {
+ "name": "Thai Baht",
+ "symbol": "฿"
+ },
+ "TOP": {
+ "name": "Tongan Paʻanga",
+ "symbol": "TOP"
+ },
+ "TTD": {
+ "name": "Trinidad and Tobago Dollar",
+ "symbol": "TTD"
+ },
+ "TND": {
+ "name": "Tunisian Dinar",
+ "symbol": "TND"
+ },
+ "TRY": {
+ "name": "Turkish Lira",
+ "symbol": "TRY"
+ },
+ "TMT": {
+ "name": "Turkmenistani Manat",
+ "symbol": "TMT"
+ },
+ "UGX": {
+ "name": "Ugandan Shilling",
+ "symbol": "UGX"
+ },
+ "UAH": {
+ "name": "Ukrainian Hryvnia",
+ "symbol": "UAH"
+ },
+ "AED": {
+ "name": "United Arab Emirates Dirham",
+ "symbol": "AED"
+ },
+ "UYU": {
+ "name": "Uruguayan Peso",
+ "symbol": "UYU"
+ },
+ "USD": {
+ "name": "US Dollar",
+ "symbol": "US$"
+ },
+ "UZS": {
+ "name": "Uzbekistan Som",
+ "symbol": "UZS"
+ },
+ "VUV": {
+ "name": "Vanuatu Vatu",
+ "symbol": "VUV"
+ },
+ "VEF": {
+ "name": "Venezuelan Bolívar",
+ "symbol": "VEF"
+ },
+ "VND": {
+ "name": "Vietnamese Dong",
+ "symbol": "â‚«"
+ },
+ "YER": {
+ "name": "Yemeni Rial",
+ "symbol": "YER"
+ },
+ "ZMW": {
+ "name": "Zambian Kwacha",
+ "symbol": "ZMW"
+ },
+ "ZWL": {
+ "name": "Zimbabwean Dollar (2009)",
+ "symbol": "ZWL"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/currency/en-SG.json b/library/intl/resources/currency/en-SG.json
new file mode 100644
index 000000000..9a26f42ce
--- /dev/null
+++ b/library/intl/resources/currency/en-SG.json
@@ -0,0 +1,634 @@
+{
+ "AFN": {
+ "name": "Afghan Afghani",
+ "symbol": "AFN"
+ },
+ "ALL": {
+ "name": "Albanian Lek",
+ "symbol": "ALL"
+ },
+ "DZD": {
+ "name": "Algerian Dinar",
+ "symbol": "DZD"
+ },
+ "AOA": {
+ "name": "Angolan Kwanza",
+ "symbol": "AOA"
+ },
+ "ARS": {
+ "name": "Argentine Peso",
+ "symbol": "ARS"
+ },
+ "AMD": {
+ "name": "Armenian Dram",
+ "symbol": "AMD"
+ },
+ "AWG": {
+ "name": "Aruban Florin",
+ "symbol": "AWG"
+ },
+ "AUD": {
+ "name": "Australian Dollar",
+ "symbol": "A$"
+ },
+ "AZN": {
+ "name": "Azerbaijani Manat",
+ "symbol": "AZN"
+ },
+ "BSD": {
+ "name": "Bahamian Dollar",
+ "symbol": "BSD"
+ },
+ "BHD": {
+ "name": "Bahraini Dinar",
+ "symbol": "BHD"
+ },
+ "BDT": {
+ "name": "Bangladeshi Taka",
+ "symbol": "BDT"
+ },
+ "BBD": {
+ "name": "Barbadian Dollar",
+ "symbol": "BBD"
+ },
+ "BYR": {
+ "name": "Belarusian Ruble",
+ "symbol": "BYR"
+ },
+ "BZD": {
+ "name": "Belize Dollar",
+ "symbol": "BZD"
+ },
+ "BMD": {
+ "name": "Bermudan Dollar",
+ "symbol": "BMD"
+ },
+ "BTN": {
+ "name": "Bhutanese Ngultrum",
+ "symbol": "BTN"
+ },
+ "BOB": {
+ "name": "Bolivian Boliviano",
+ "symbol": "BOB"
+ },
+ "BAM": {
+ "name": "Bosnia-Herzegovina Convertible Mark",
+ "symbol": "BAM"
+ },
+ "BWP": {
+ "name": "Botswanan Pula",
+ "symbol": "BWP"
+ },
+ "BRL": {
+ "name": "Brazilian Real",
+ "symbol": "R$"
+ },
+ "GBP": {
+ "name": "British Pound Sterling",
+ "symbol": "£"
+ },
+ "BND": {
+ "name": "Brunei Dollar",
+ "symbol": "BND"
+ },
+ "BGN": {
+ "name": "Bulgarian Lev",
+ "symbol": "BGN"
+ },
+ "BIF": {
+ "name": "Burundian Franc",
+ "symbol": "BIF"
+ },
+ "KHR": {
+ "name": "Cambodian Riel",
+ "symbol": "KHR"
+ },
+ "CAD": {
+ "name": "Canadian Dollar",
+ "symbol": "CA$"
+ },
+ "CVE": {
+ "name": "Cape Verdean Escudo",
+ "symbol": "CVE"
+ },
+ "KYD": {
+ "name": "Cayman Islands Dollar",
+ "symbol": "KYD"
+ },
+ "XOF": {
+ "name": "CFA Franc BCEAO",
+ "symbol": "CFA"
+ },
+ "XAF": {
+ "name": "CFA Franc BEAC",
+ "symbol": "FCFA"
+ },
+ "XPF": {
+ "name": "CFP Franc",
+ "symbol": "CFPF"
+ },
+ "CLP": {
+ "name": "Chilean Peso",
+ "symbol": "CLP"
+ },
+ "CNY": {
+ "name": "Chinese Yuan",
+ "symbol": "CNÂ¥"
+ },
+ "COP": {
+ "name": "Colombian Peso",
+ "symbol": "COP"
+ },
+ "KMF": {
+ "name": "Comorian Franc",
+ "symbol": "KMF"
+ },
+ "CDF": {
+ "name": "Congolese Franc",
+ "symbol": "CDF"
+ },
+ "CRC": {
+ "name": "Costa Rican Colón",
+ "symbol": "CRC"
+ },
+ "HRK": {
+ "name": "Croatian Kuna",
+ "symbol": "HRK"
+ },
+ "CUC": {
+ "name": "Cuban Convertible Peso",
+ "symbol": "CUC"
+ },
+ "CUP": {
+ "name": "Cuban Peso",
+ "symbol": "CUP"
+ },
+ "CZK": {
+ "name": "Czech Republic Koruna",
+ "symbol": "CZK"
+ },
+ "DKK": {
+ "name": "Danish Krone",
+ "symbol": "DKK"
+ },
+ "DJF": {
+ "name": "Djiboutian Franc",
+ "symbol": "DJF"
+ },
+ "DOP": {
+ "name": "Dominican Peso",
+ "symbol": "DOP"
+ },
+ "XCD": {
+ "name": "East Caribbean Dollar",
+ "symbol": "EC$"
+ },
+ "EGP": {
+ "name": "Egyptian Pound",
+ "symbol": "EGP"
+ },
+ "ERN": {
+ "name": "Eritrean Nakfa",
+ "symbol": "ERN"
+ },
+ "ETB": {
+ "name": "Ethiopian Birr",
+ "symbol": "ETB"
+ },
+ "EUR": {
+ "name": "Euro",
+ "symbol": "€"
+ },
+ "FKP": {
+ "name": "Falkland Islands Pound",
+ "symbol": "FKP"
+ },
+ "FJD": {
+ "name": "Fijian Dollar",
+ "symbol": "FJD"
+ },
+ "GMD": {
+ "name": "Gambian Dalasi",
+ "symbol": "GMD"
+ },
+ "GEL": {
+ "name": "Georgian Lari",
+ "symbol": "GEL"
+ },
+ "GHS": {
+ "name": "Ghanaian Cedi",
+ "symbol": "GHS"
+ },
+ "GIP": {
+ "name": "Gibraltar Pound",
+ "symbol": "GIP"
+ },
+ "GTQ": {
+ "name": "Guatemalan Quetzal",
+ "symbol": "GTQ"
+ },
+ "GNF": {
+ "name": "Guinean Franc",
+ "symbol": "GNF"
+ },
+ "GYD": {
+ "name": "Guyanaese Dollar",
+ "symbol": "GYD"
+ },
+ "HTG": {
+ "name": "Haitian Gourde",
+ "symbol": "HTG"
+ },
+ "HNL": {
+ "name": "Honduran Lempira",
+ "symbol": "HNL"
+ },
+ "HKD": {
+ "name": "Hong Kong Dollar",
+ "symbol": "HK$"
+ },
+ "HUF": {
+ "name": "Hungarian Forint",
+ "symbol": "HUF"
+ },
+ "ISK": {
+ "name": "Icelandic Króna",
+ "symbol": "ISK"
+ },
+ "INR": {
+ "name": "Indian Rupee",
+ "symbol": "₹"
+ },
+ "IDR": {
+ "name": "Indonesian Rupiah",
+ "symbol": "IDR"
+ },
+ "IRR": {
+ "name": "Iranian Rial",
+ "symbol": "IRR"
+ },
+ "IQD": {
+ "name": "Iraqi Dinar",
+ "symbol": "IQD"
+ },
+ "ILS": {
+ "name": "Israeli New Shekel",
+ "symbol": "₪"
+ },
+ "JMD": {
+ "name": "Jamaican Dollar",
+ "symbol": "JMD"
+ },
+ "JPY": {
+ "name": "Japanese Yen",
+ "symbol": "Â¥"
+ },
+ "JOD": {
+ "name": "Jordanian Dinar",
+ "symbol": "JOD"
+ },
+ "KZT": {
+ "name": "Kazakhstani Tenge",
+ "symbol": "KZT"
+ },
+ "KES": {
+ "name": "Kenyan Shilling",
+ "symbol": "KES"
+ },
+ "KWD": {
+ "name": "Kuwaiti Dinar",
+ "symbol": "KWD"
+ },
+ "KGS": {
+ "name": "Kyrgystani Som",
+ "symbol": "KGS"
+ },
+ "LAK": {
+ "name": "Laotian Kip",
+ "symbol": "LAK"
+ },
+ "LBP": {
+ "name": "Lebanese Pound",
+ "symbol": "LBP"
+ },
+ "LSL": {
+ "name": "Lesotho Loti",
+ "symbol": "LSL"
+ },
+ "LRD": {
+ "name": "Liberian Dollar",
+ "symbol": "LRD"
+ },
+ "LYD": {
+ "name": "Libyan Dinar",
+ "symbol": "LYD"
+ },
+ "LTL": {
+ "name": "Lithuanian Litas",
+ "symbol": "LTL"
+ },
+ "MOP": {
+ "name": "Macanese Pataca",
+ "symbol": "MOP"
+ },
+ "MKD": {
+ "name": "Macedonian Denar",
+ "symbol": "MKD"
+ },
+ "MGA": {
+ "name": "Malagasy Ariary",
+ "symbol": "MGA"
+ },
+ "MWK": {
+ "name": "Malawian Kwacha",
+ "symbol": "MWK"
+ },
+ "MYR": {
+ "name": "Malaysian Ringgit",
+ "symbol": "MYR"
+ },
+ "MVR": {
+ "name": "Maldivian Rufiyaa",
+ "symbol": "MVR"
+ },
+ "MRO": {
+ "name": "Mauritanian Ouguiya",
+ "symbol": "MRO"
+ },
+ "MUR": {
+ "name": "Mauritian Rupee",
+ "symbol": "MUR"
+ },
+ "MXN": {
+ "name": "Mexican Peso",
+ "symbol": "MX$"
+ },
+ "MDL": {
+ "name": "Moldovan Leu",
+ "symbol": "MDL"
+ },
+ "MNT": {
+ "name": "Mongolian Tugrik",
+ "symbol": "MNT"
+ },
+ "MAD": {
+ "name": "Moroccan Dirham",
+ "symbol": "MAD"
+ },
+ "MZN": {
+ "name": "Mozambican Metical",
+ "symbol": "MZN"
+ },
+ "MMK": {
+ "name": "Myanmar Kyat",
+ "symbol": "MMK"
+ },
+ "NAD": {
+ "name": "Namibian Dollar",
+ "symbol": "NAD"
+ },
+ "NPR": {
+ "name": "Nepalese Rupee",
+ "symbol": "NPR"
+ },
+ "ANG": {
+ "name": "Netherlands Antillean Guilder",
+ "symbol": "ANG"
+ },
+ "TWD": {
+ "name": "New Taiwan Dollar",
+ "symbol": "NT$"
+ },
+ "NZD": {
+ "name": "New Zealand Dollar",
+ "symbol": "NZ$"
+ },
+ "NIO": {
+ "name": "Nicaraguan Córdoba",
+ "symbol": "NIO"
+ },
+ "NGN": {
+ "name": "Nigerian Naira",
+ "symbol": "NGN"
+ },
+ "KPW": {
+ "name": "North Korean Won",
+ "symbol": "KPW"
+ },
+ "NOK": {
+ "name": "Norwegian Krone",
+ "symbol": "NOK"
+ },
+ "OMR": {
+ "name": "Omani Rial",
+ "symbol": "OMR"
+ },
+ "PKR": {
+ "name": "Pakistani Rupee",
+ "symbol": "PKR"
+ },
+ "PAB": {
+ "name": "Panamanian Balboa",
+ "symbol": "PAB"
+ },
+ "PGK": {
+ "name": "Papua New Guinean Kina",
+ "symbol": "PGK"
+ },
+ "PYG": {
+ "name": "Paraguayan Guarani",
+ "symbol": "PYG"
+ },
+ "PEN": {
+ "name": "Peruvian Nuevo Sol",
+ "symbol": "PEN"
+ },
+ "PHP": {
+ "name": "Philippine Peso",
+ "symbol": "PHP"
+ },
+ "PLN": {
+ "name": "Polish Zloty",
+ "symbol": "PLN"
+ },
+ "QAR": {
+ "name": "Qatari Rial",
+ "symbol": "QAR"
+ },
+ "RON": {
+ "name": "Romanian Leu",
+ "symbol": "RON"
+ },
+ "RUB": {
+ "name": "Russian Ruble",
+ "symbol": "RUB"
+ },
+ "RWF": {
+ "name": "Rwandan Franc",
+ "symbol": "RWF"
+ },
+ "SHP": {
+ "name": "Saint Helena Pound",
+ "symbol": "SHP"
+ },
+ "SVC": {
+ "name": "Salvadoran Colón",
+ "symbol": "SVC"
+ },
+ "WST": {
+ "name": "Samoan Tala",
+ "symbol": "WST"
+ },
+ "STD": {
+ "name": "São Tomé and Príncipe Dobra",
+ "symbol": "STD"
+ },
+ "SAR": {
+ "name": "Saudi Riyal",
+ "symbol": "SAR"
+ },
+ "RSD": {
+ "name": "Serbian Dinar",
+ "symbol": "RSD"
+ },
+ "SCR": {
+ "name": "Seychellois Rupee",
+ "symbol": "SCR"
+ },
+ "SLL": {
+ "name": "Sierra Leonean Leone",
+ "symbol": "SLL"
+ },
+ "SGD": {
+ "name": "Singapore Dollar",
+ "symbol": "$"
+ },
+ "SBD": {
+ "name": "Solomon Islands Dollar",
+ "symbol": "SBD"
+ },
+ "SOS": {
+ "name": "Somali Shilling",
+ "symbol": "SOS"
+ },
+ "ZAR": {
+ "name": "South African Rand",
+ "symbol": "ZAR"
+ },
+ "KRW": {
+ "name": "South Korean Won",
+ "symbol": "â‚©"
+ },
+ "SSP": {
+ "name": "South Sudanese Pound",
+ "symbol": "SSP"
+ },
+ "LKR": {
+ "name": "Sri Lankan Rupee",
+ "symbol": "LKR"
+ },
+ "SDG": {
+ "name": "Sudanese Pound",
+ "symbol": "SDG"
+ },
+ "SRD": {
+ "name": "Surinamese Dollar",
+ "symbol": "SRD"
+ },
+ "SZL": {
+ "name": "Swazi Lilangeni",
+ "symbol": "SZL"
+ },
+ "SEK": {
+ "name": "Swedish Krona",
+ "symbol": "SEK"
+ },
+ "CHF": {
+ "name": "Swiss Franc",
+ "symbol": "CHF"
+ },
+ "SYP": {
+ "name": "Syrian Pound",
+ "symbol": "SYP"
+ },
+ "TJS": {
+ "name": "Tajikistani Somoni",
+ "symbol": "TJS"
+ },
+ "TZS": {
+ "name": "Tanzanian Shilling",
+ "symbol": "TZS"
+ },
+ "THB": {
+ "name": "Thai Baht",
+ "symbol": "฿"
+ },
+ "TOP": {
+ "name": "Tongan Paʻanga",
+ "symbol": "TOP"
+ },
+ "TTD": {
+ "name": "Trinidad and Tobago Dollar",
+ "symbol": "TTD"
+ },
+ "TND": {
+ "name": "Tunisian Dinar",
+ "symbol": "TND"
+ },
+ "TRY": {
+ "name": "Turkish Lira",
+ "symbol": "TRY"
+ },
+ "TMT": {
+ "name": "Turkmenistani Manat",
+ "symbol": "TMT"
+ },
+ "UGX": {
+ "name": "Ugandan Shilling",
+ "symbol": "UGX"
+ },
+ "UAH": {
+ "name": "Ukrainian Hryvnia",
+ "symbol": "UAH"
+ },
+ "AED": {
+ "name": "United Arab Emirates Dirham",
+ "symbol": "AED"
+ },
+ "UYU": {
+ "name": "Uruguayan Peso",
+ "symbol": "UYU"
+ },
+ "USD": {
+ "name": "US Dollar",
+ "symbol": "US$"
+ },
+ "UZS": {
+ "name": "Uzbekistan Som",
+ "symbol": "UZS"
+ },
+ "VUV": {
+ "name": "Vanuatu Vatu",
+ "symbol": "VUV"
+ },
+ "VEF": {
+ "name": "Venezuelan Bolívar",
+ "symbol": "VEF"
+ },
+ "VND": {
+ "name": "Vietnamese Dong",
+ "symbol": "â‚«"
+ },
+ "YER": {
+ "name": "Yemeni Rial",
+ "symbol": "YER"
+ },
+ "ZMW": {
+ "name": "Zambian Kwacha",
+ "symbol": "ZMW"
+ },
+ "ZWL": {
+ "name": "Zimbabwean Dollar (2009)",
+ "symbol": "ZWL"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/currency/en-SH.json b/library/intl/resources/currency/en-SH.json
new file mode 100644
index 000000000..5cee5ff19
--- /dev/null
+++ b/library/intl/resources/currency/en-SH.json
@@ -0,0 +1,634 @@
+{
+ "AFN": {
+ "name": "Afghan Afghani",
+ "symbol": "AFN"
+ },
+ "ALL": {
+ "name": "Albanian Lek",
+ "symbol": "ALL"
+ },
+ "DZD": {
+ "name": "Algerian Dinar",
+ "symbol": "DZD"
+ },
+ "AOA": {
+ "name": "Angolan Kwanza",
+ "symbol": "AOA"
+ },
+ "ARS": {
+ "name": "Argentine Peso",
+ "symbol": "ARS"
+ },
+ "AMD": {
+ "name": "Armenian Dram",
+ "symbol": "AMD"
+ },
+ "AWG": {
+ "name": "Aruban Florin",
+ "symbol": "AWG"
+ },
+ "AUD": {
+ "name": "Australian Dollar",
+ "symbol": "A$"
+ },
+ "AZN": {
+ "name": "Azerbaijani Manat",
+ "symbol": "AZN"
+ },
+ "BSD": {
+ "name": "Bahamian Dollar",
+ "symbol": "BSD"
+ },
+ "BHD": {
+ "name": "Bahraini Dinar",
+ "symbol": "BHD"
+ },
+ "BDT": {
+ "name": "Bangladeshi Taka",
+ "symbol": "BDT"
+ },
+ "BBD": {
+ "name": "Barbadian Dollar",
+ "symbol": "BBD"
+ },
+ "BYR": {
+ "name": "Belarusian Ruble",
+ "symbol": "BYR"
+ },
+ "BZD": {
+ "name": "Belize Dollar",
+ "symbol": "BZD"
+ },
+ "BMD": {
+ "name": "Bermudan Dollar",
+ "symbol": "BMD"
+ },
+ "BTN": {
+ "name": "Bhutanese Ngultrum",
+ "symbol": "BTN"
+ },
+ "BOB": {
+ "name": "Bolivian Boliviano",
+ "symbol": "BOB"
+ },
+ "BAM": {
+ "name": "Bosnia-Herzegovina Convertible Mark",
+ "symbol": "BAM"
+ },
+ "BWP": {
+ "name": "Botswanan Pula",
+ "symbol": "BWP"
+ },
+ "BRL": {
+ "name": "Brazilian Real",
+ "symbol": "R$"
+ },
+ "GBP": {
+ "name": "British Pound Sterling",
+ "symbol": "GB£"
+ },
+ "BND": {
+ "name": "Brunei Dollar",
+ "symbol": "BND"
+ },
+ "BGN": {
+ "name": "Bulgarian Lev",
+ "symbol": "BGN"
+ },
+ "BIF": {
+ "name": "Burundian Franc",
+ "symbol": "BIF"
+ },
+ "KHR": {
+ "name": "Cambodian Riel",
+ "symbol": "KHR"
+ },
+ "CAD": {
+ "name": "Canadian Dollar",
+ "symbol": "CA$"
+ },
+ "CVE": {
+ "name": "Cape Verdean Escudo",
+ "symbol": "CVE"
+ },
+ "KYD": {
+ "name": "Cayman Islands Dollar",
+ "symbol": "KYD"
+ },
+ "XOF": {
+ "name": "CFA Franc BCEAO",
+ "symbol": "CFA"
+ },
+ "XAF": {
+ "name": "CFA Franc BEAC",
+ "symbol": "FCFA"
+ },
+ "XPF": {
+ "name": "CFP Franc",
+ "symbol": "CFPF"
+ },
+ "CLP": {
+ "name": "Chilean Peso",
+ "symbol": "CLP"
+ },
+ "CNY": {
+ "name": "Chinese Yuan",
+ "symbol": "CNÂ¥"
+ },
+ "COP": {
+ "name": "Colombian Peso",
+ "symbol": "COP"
+ },
+ "KMF": {
+ "name": "Comorian Franc",
+ "symbol": "KMF"
+ },
+ "CDF": {
+ "name": "Congolese Franc",
+ "symbol": "CDF"
+ },
+ "CRC": {
+ "name": "Costa Rican Colón",
+ "symbol": "CRC"
+ },
+ "HRK": {
+ "name": "Croatian Kuna",
+ "symbol": "HRK"
+ },
+ "CUC": {
+ "name": "Cuban Convertible Peso",
+ "symbol": "CUC"
+ },
+ "CUP": {
+ "name": "Cuban Peso",
+ "symbol": "CUP"
+ },
+ "CZK": {
+ "name": "Czech Republic Koruna",
+ "symbol": "CZK"
+ },
+ "DKK": {
+ "name": "Danish Krone",
+ "symbol": "DKK"
+ },
+ "DJF": {
+ "name": "Djiboutian Franc",
+ "symbol": "DJF"
+ },
+ "DOP": {
+ "name": "Dominican Peso",
+ "symbol": "DOP"
+ },
+ "XCD": {
+ "name": "East Caribbean Dollar",
+ "symbol": "EC$"
+ },
+ "EGP": {
+ "name": "Egyptian Pound",
+ "symbol": "EGP"
+ },
+ "ERN": {
+ "name": "Eritrean Nakfa",
+ "symbol": "ERN"
+ },
+ "ETB": {
+ "name": "Ethiopian Birr",
+ "symbol": "ETB"
+ },
+ "EUR": {
+ "name": "Euro",
+ "symbol": "€"
+ },
+ "FKP": {
+ "name": "Falkland Islands Pound",
+ "symbol": "FKP"
+ },
+ "FJD": {
+ "name": "Fijian Dollar",
+ "symbol": "FJD"
+ },
+ "GMD": {
+ "name": "Gambian Dalasi",
+ "symbol": "GMD"
+ },
+ "GEL": {
+ "name": "Georgian Lari",
+ "symbol": "GEL"
+ },
+ "GHS": {
+ "name": "Ghanaian Cedi",
+ "symbol": "GHS"
+ },
+ "GIP": {
+ "name": "Gibraltar Pound",
+ "symbol": "GIP"
+ },
+ "GTQ": {
+ "name": "Guatemalan Quetzal",
+ "symbol": "GTQ"
+ },
+ "GNF": {
+ "name": "Guinean Franc",
+ "symbol": "GNF"
+ },
+ "GYD": {
+ "name": "Guyanaese Dollar",
+ "symbol": "GYD"
+ },
+ "HTG": {
+ "name": "Haitian Gourde",
+ "symbol": "HTG"
+ },
+ "HNL": {
+ "name": "Honduran Lempira",
+ "symbol": "HNL"
+ },
+ "HKD": {
+ "name": "Hong Kong Dollar",
+ "symbol": "HK$"
+ },
+ "HUF": {
+ "name": "Hungarian Forint",
+ "symbol": "HUF"
+ },
+ "ISK": {
+ "name": "Icelandic Króna",
+ "symbol": "ISK"
+ },
+ "INR": {
+ "name": "Indian Rupee",
+ "symbol": "₹"
+ },
+ "IDR": {
+ "name": "Indonesian Rupiah",
+ "symbol": "IDR"
+ },
+ "IRR": {
+ "name": "Iranian Rial",
+ "symbol": "IRR"
+ },
+ "IQD": {
+ "name": "Iraqi Dinar",
+ "symbol": "IQD"
+ },
+ "ILS": {
+ "name": "Israeli New Shekel",
+ "symbol": "₪"
+ },
+ "JMD": {
+ "name": "Jamaican Dollar",
+ "symbol": "JMD"
+ },
+ "JPY": {
+ "name": "Japanese Yen",
+ "symbol": "Â¥"
+ },
+ "JOD": {
+ "name": "Jordanian Dinar",
+ "symbol": "JOD"
+ },
+ "KZT": {
+ "name": "Kazakhstani Tenge",
+ "symbol": "KZT"
+ },
+ "KES": {
+ "name": "Kenyan Shilling",
+ "symbol": "KES"
+ },
+ "KWD": {
+ "name": "Kuwaiti Dinar",
+ "symbol": "KWD"
+ },
+ "KGS": {
+ "name": "Kyrgystani Som",
+ "symbol": "KGS"
+ },
+ "LAK": {
+ "name": "Laotian Kip",
+ "symbol": "LAK"
+ },
+ "LBP": {
+ "name": "Lebanese Pound",
+ "symbol": "LBP"
+ },
+ "LSL": {
+ "name": "Lesotho Loti",
+ "symbol": "LSL"
+ },
+ "LRD": {
+ "name": "Liberian Dollar",
+ "symbol": "LRD"
+ },
+ "LYD": {
+ "name": "Libyan Dinar",
+ "symbol": "LYD"
+ },
+ "LTL": {
+ "name": "Lithuanian Litas",
+ "symbol": "LTL"
+ },
+ "MOP": {
+ "name": "Macanese Pataca",
+ "symbol": "MOP"
+ },
+ "MKD": {
+ "name": "Macedonian Denar",
+ "symbol": "MKD"
+ },
+ "MGA": {
+ "name": "Malagasy Ariary",
+ "symbol": "MGA"
+ },
+ "MWK": {
+ "name": "Malawian Kwacha",
+ "symbol": "MWK"
+ },
+ "MYR": {
+ "name": "Malaysian Ringgit",
+ "symbol": "MYR"
+ },
+ "MVR": {
+ "name": "Maldivian Rufiyaa",
+ "symbol": "MVR"
+ },
+ "MRO": {
+ "name": "Mauritanian Ouguiya",
+ "symbol": "MRO"
+ },
+ "MUR": {
+ "name": "Mauritian Rupee",
+ "symbol": "MUR"
+ },
+ "MXN": {
+ "name": "Mexican Peso",
+ "symbol": "MX$"
+ },
+ "MDL": {
+ "name": "Moldovan Leu",
+ "symbol": "MDL"
+ },
+ "MNT": {
+ "name": "Mongolian Tugrik",
+ "symbol": "MNT"
+ },
+ "MAD": {
+ "name": "Moroccan Dirham",
+ "symbol": "MAD"
+ },
+ "MZN": {
+ "name": "Mozambican Metical",
+ "symbol": "MZN"
+ },
+ "MMK": {
+ "name": "Myanmar Kyat",
+ "symbol": "MMK"
+ },
+ "NAD": {
+ "name": "Namibian Dollar",
+ "symbol": "NAD"
+ },
+ "NPR": {
+ "name": "Nepalese Rupee",
+ "symbol": "NPR"
+ },
+ "ANG": {
+ "name": "Netherlands Antillean Guilder",
+ "symbol": "ANG"
+ },
+ "TWD": {
+ "name": "New Taiwan Dollar",
+ "symbol": "NT$"
+ },
+ "NZD": {
+ "name": "New Zealand Dollar",
+ "symbol": "NZ$"
+ },
+ "NIO": {
+ "name": "Nicaraguan Córdoba",
+ "symbol": "NIO"
+ },
+ "NGN": {
+ "name": "Nigerian Naira",
+ "symbol": "NGN"
+ },
+ "KPW": {
+ "name": "North Korean Won",
+ "symbol": "KPW"
+ },
+ "NOK": {
+ "name": "Norwegian Krone",
+ "symbol": "NOK"
+ },
+ "OMR": {
+ "name": "Omani Rial",
+ "symbol": "OMR"
+ },
+ "PKR": {
+ "name": "Pakistani Rupee",
+ "symbol": "PKR"
+ },
+ "PAB": {
+ "name": "Panamanian Balboa",
+ "symbol": "PAB"
+ },
+ "PGK": {
+ "name": "Papua New Guinean Kina",
+ "symbol": "PGK"
+ },
+ "PYG": {
+ "name": "Paraguayan Guarani",
+ "symbol": "PYG"
+ },
+ "PEN": {
+ "name": "Peruvian Nuevo Sol",
+ "symbol": "PEN"
+ },
+ "PHP": {
+ "name": "Philippine Peso",
+ "symbol": "PHP"
+ },
+ "PLN": {
+ "name": "Polish Zloty",
+ "symbol": "PLN"
+ },
+ "QAR": {
+ "name": "Qatari Rial",
+ "symbol": "QAR"
+ },
+ "RON": {
+ "name": "Romanian Leu",
+ "symbol": "RON"
+ },
+ "RUB": {
+ "name": "Russian Ruble",
+ "symbol": "RUB"
+ },
+ "RWF": {
+ "name": "Rwandan Franc",
+ "symbol": "RWF"
+ },
+ "SHP": {
+ "name": "Saint Helena Pound",
+ "symbol": "£"
+ },
+ "SVC": {
+ "name": "Salvadoran Colón",
+ "symbol": "SVC"
+ },
+ "WST": {
+ "name": "Samoan Tala",
+ "symbol": "WST"
+ },
+ "STD": {
+ "name": "São Tomé and Príncipe Dobra",
+ "symbol": "STD"
+ },
+ "SAR": {
+ "name": "Saudi Riyal",
+ "symbol": "SAR"
+ },
+ "RSD": {
+ "name": "Serbian Dinar",
+ "symbol": "RSD"
+ },
+ "SCR": {
+ "name": "Seychellois Rupee",
+ "symbol": "SCR"
+ },
+ "SLL": {
+ "name": "Sierra Leonean Leone",
+ "symbol": "SLL"
+ },
+ "SGD": {
+ "name": "Singapore Dollar",
+ "symbol": "SGD"
+ },
+ "SBD": {
+ "name": "Solomon Islands Dollar",
+ "symbol": "SBD"
+ },
+ "SOS": {
+ "name": "Somali Shilling",
+ "symbol": "SOS"
+ },
+ "ZAR": {
+ "name": "South African Rand",
+ "symbol": "ZAR"
+ },
+ "KRW": {
+ "name": "South Korean Won",
+ "symbol": "â‚©"
+ },
+ "SSP": {
+ "name": "South Sudanese Pound",
+ "symbol": "SSP"
+ },
+ "LKR": {
+ "name": "Sri Lankan Rupee",
+ "symbol": "LKR"
+ },
+ "SDG": {
+ "name": "Sudanese Pound",
+ "symbol": "SDG"
+ },
+ "SRD": {
+ "name": "Surinamese Dollar",
+ "symbol": "SRD"
+ },
+ "SZL": {
+ "name": "Swazi Lilangeni",
+ "symbol": "SZL"
+ },
+ "SEK": {
+ "name": "Swedish Krona",
+ "symbol": "SEK"
+ },
+ "CHF": {
+ "name": "Swiss Franc",
+ "symbol": "CHF"
+ },
+ "SYP": {
+ "name": "Syrian Pound",
+ "symbol": "SYP"
+ },
+ "TJS": {
+ "name": "Tajikistani Somoni",
+ "symbol": "TJS"
+ },
+ "TZS": {
+ "name": "Tanzanian Shilling",
+ "symbol": "TZS"
+ },
+ "THB": {
+ "name": "Thai Baht",
+ "symbol": "฿"
+ },
+ "TOP": {
+ "name": "Tongan Paʻanga",
+ "symbol": "TOP"
+ },
+ "TTD": {
+ "name": "Trinidad and Tobago Dollar",
+ "symbol": "TTD"
+ },
+ "TND": {
+ "name": "Tunisian Dinar",
+ "symbol": "TND"
+ },
+ "TRY": {
+ "name": "Turkish Lira",
+ "symbol": "TRY"
+ },
+ "TMT": {
+ "name": "Turkmenistani Manat",
+ "symbol": "TMT"
+ },
+ "UGX": {
+ "name": "Ugandan Shilling",
+ "symbol": "UGX"
+ },
+ "UAH": {
+ "name": "Ukrainian Hryvnia",
+ "symbol": "UAH"
+ },
+ "AED": {
+ "name": "United Arab Emirates Dirham",
+ "symbol": "AED"
+ },
+ "UYU": {
+ "name": "Uruguayan Peso",
+ "symbol": "UYU"
+ },
+ "USD": {
+ "name": "US Dollar",
+ "symbol": "US$"
+ },
+ "UZS": {
+ "name": "Uzbekistan Som",
+ "symbol": "UZS"
+ },
+ "VUV": {
+ "name": "Vanuatu Vatu",
+ "symbol": "VUV"
+ },
+ "VEF": {
+ "name": "Venezuelan Bolívar",
+ "symbol": "VEF"
+ },
+ "VND": {
+ "name": "Vietnamese Dong",
+ "symbol": "â‚«"
+ },
+ "YER": {
+ "name": "Yemeni Rial",
+ "symbol": "YER"
+ },
+ "ZMW": {
+ "name": "Zambian Kwacha",
+ "symbol": "ZMW"
+ },
+ "ZWL": {
+ "name": "Zimbabwean Dollar (2009)",
+ "symbol": "ZWL"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/currency/en-VG.json b/library/intl/resources/currency/en-VG.json
new file mode 100644
index 000000000..2dbdae5ca
--- /dev/null
+++ b/library/intl/resources/currency/en-VG.json
@@ -0,0 +1,634 @@
+{
+ "AFN": {
+ "name": "Afghan Afghani",
+ "symbol": "AFN"
+ },
+ "ALL": {
+ "name": "Albanian Lek",
+ "symbol": "ALL"
+ },
+ "DZD": {
+ "name": "Algerian Dinar",
+ "symbol": "DZD"
+ },
+ "AOA": {
+ "name": "Angolan Kwanza",
+ "symbol": "AOA"
+ },
+ "ARS": {
+ "name": "Argentine Peso",
+ "symbol": "ARS"
+ },
+ "AMD": {
+ "name": "Armenian Dram",
+ "symbol": "AMD"
+ },
+ "AWG": {
+ "name": "Aruban Florin",
+ "symbol": "AWG"
+ },
+ "AUD": {
+ "name": "Australian Dollar",
+ "symbol": "A$"
+ },
+ "AZN": {
+ "name": "Azerbaijani Manat",
+ "symbol": "AZN"
+ },
+ "BSD": {
+ "name": "Bahamian Dollar",
+ "symbol": "BSD"
+ },
+ "BHD": {
+ "name": "Bahraini Dinar",
+ "symbol": "BHD"
+ },
+ "BDT": {
+ "name": "Bangladeshi Taka",
+ "symbol": "BDT"
+ },
+ "BBD": {
+ "name": "Barbadian Dollar",
+ "symbol": "BBD"
+ },
+ "BYR": {
+ "name": "Belarusian Ruble",
+ "symbol": "BYR"
+ },
+ "BZD": {
+ "name": "Belize Dollar",
+ "symbol": "BZD"
+ },
+ "BMD": {
+ "name": "Bermudan Dollar",
+ "symbol": "BMD"
+ },
+ "BTN": {
+ "name": "Bhutanese Ngultrum",
+ "symbol": "BTN"
+ },
+ "BOB": {
+ "name": "Bolivian Boliviano",
+ "symbol": "BOB"
+ },
+ "BAM": {
+ "name": "Bosnia-Herzegovina Convertible Mark",
+ "symbol": "BAM"
+ },
+ "BWP": {
+ "name": "Botswanan Pula",
+ "symbol": "BWP"
+ },
+ "BRL": {
+ "name": "Brazilian Real",
+ "symbol": "R$"
+ },
+ "GBP": {
+ "name": "British Pound Sterling",
+ "symbol": "£"
+ },
+ "BND": {
+ "name": "Brunei Dollar",
+ "symbol": "BND"
+ },
+ "BGN": {
+ "name": "Bulgarian Lev",
+ "symbol": "BGN"
+ },
+ "BIF": {
+ "name": "Burundian Franc",
+ "symbol": "BIF"
+ },
+ "KHR": {
+ "name": "Cambodian Riel",
+ "symbol": "KHR"
+ },
+ "CAD": {
+ "name": "Canadian Dollar",
+ "symbol": "CA$"
+ },
+ "CVE": {
+ "name": "Cape Verdean Escudo",
+ "symbol": "CVE"
+ },
+ "KYD": {
+ "name": "Cayman Islands Dollar",
+ "symbol": "KYD"
+ },
+ "XOF": {
+ "name": "CFA Franc BCEAO",
+ "symbol": "CFA"
+ },
+ "XAF": {
+ "name": "CFA Franc BEAC",
+ "symbol": "FCFA"
+ },
+ "XPF": {
+ "name": "CFP Franc",
+ "symbol": "CFPF"
+ },
+ "CLP": {
+ "name": "Chilean Peso",
+ "symbol": "CLP"
+ },
+ "CNY": {
+ "name": "Chinese Yuan",
+ "symbol": "CNÂ¥"
+ },
+ "COP": {
+ "name": "Colombian Peso",
+ "symbol": "COP"
+ },
+ "KMF": {
+ "name": "Comorian Franc",
+ "symbol": "KMF"
+ },
+ "CDF": {
+ "name": "Congolese Franc",
+ "symbol": "CDF"
+ },
+ "CRC": {
+ "name": "Costa Rican Colón",
+ "symbol": "CRC"
+ },
+ "HRK": {
+ "name": "Croatian Kuna",
+ "symbol": "HRK"
+ },
+ "CUC": {
+ "name": "Cuban Convertible Peso",
+ "symbol": "CUC"
+ },
+ "CUP": {
+ "name": "Cuban Peso",
+ "symbol": "CUP"
+ },
+ "CZK": {
+ "name": "Czech Republic Koruna",
+ "symbol": "CZK"
+ },
+ "DKK": {
+ "name": "Danish Krone",
+ "symbol": "DKK"
+ },
+ "DJF": {
+ "name": "Djiboutian Franc",
+ "symbol": "DJF"
+ },
+ "DOP": {
+ "name": "Dominican Peso",
+ "symbol": "DOP"
+ },
+ "XCD": {
+ "name": "East Caribbean Dollar",
+ "symbol": "EC$"
+ },
+ "EGP": {
+ "name": "Egyptian Pound",
+ "symbol": "EGP"
+ },
+ "ERN": {
+ "name": "Eritrean Nakfa",
+ "symbol": "ERN"
+ },
+ "ETB": {
+ "name": "Ethiopian Birr",
+ "symbol": "ETB"
+ },
+ "EUR": {
+ "name": "Euro",
+ "symbol": "€"
+ },
+ "FKP": {
+ "name": "Falkland Islands Pound",
+ "symbol": "FKP"
+ },
+ "FJD": {
+ "name": "Fijian Dollar",
+ "symbol": "FJD"
+ },
+ "GMD": {
+ "name": "Gambian Dalasi",
+ "symbol": "GMD"
+ },
+ "GEL": {
+ "name": "Georgian Lari",
+ "symbol": "GEL"
+ },
+ "GHS": {
+ "name": "Ghanaian Cedi",
+ "symbol": "GHS"
+ },
+ "GIP": {
+ "name": "Gibraltar Pound",
+ "symbol": "GIP"
+ },
+ "GTQ": {
+ "name": "Guatemalan Quetzal",
+ "symbol": "GTQ"
+ },
+ "GNF": {
+ "name": "Guinean Franc",
+ "symbol": "GNF"
+ },
+ "GYD": {
+ "name": "Guyanaese Dollar",
+ "symbol": "GYD"
+ },
+ "HTG": {
+ "name": "Haitian Gourde",
+ "symbol": "HTG"
+ },
+ "HNL": {
+ "name": "Honduran Lempira",
+ "symbol": "HNL"
+ },
+ "HKD": {
+ "name": "Hong Kong Dollar",
+ "symbol": "HK$"
+ },
+ "HUF": {
+ "name": "Hungarian Forint",
+ "symbol": "HUF"
+ },
+ "ISK": {
+ "name": "Icelandic Króna",
+ "symbol": "ISK"
+ },
+ "INR": {
+ "name": "Indian Rupee",
+ "symbol": "₹"
+ },
+ "IDR": {
+ "name": "Indonesian Rupiah",
+ "symbol": "IDR"
+ },
+ "IRR": {
+ "name": "Iranian Rial",
+ "symbol": "IRR"
+ },
+ "IQD": {
+ "name": "Iraqi Dinar",
+ "symbol": "IQD"
+ },
+ "ILS": {
+ "name": "Israeli New Shekel",
+ "symbol": "₪"
+ },
+ "JMD": {
+ "name": "Jamaican Dollar",
+ "symbol": "JMD"
+ },
+ "JPY": {
+ "name": "Japanese Yen",
+ "symbol": "Â¥"
+ },
+ "JOD": {
+ "name": "Jordanian Dinar",
+ "symbol": "JOD"
+ },
+ "KZT": {
+ "name": "Kazakhstani Tenge",
+ "symbol": "KZT"
+ },
+ "KES": {
+ "name": "Kenyan Shilling",
+ "symbol": "KES"
+ },
+ "KWD": {
+ "name": "Kuwaiti Dinar",
+ "symbol": "KWD"
+ },
+ "KGS": {
+ "name": "Kyrgystani Som",
+ "symbol": "KGS"
+ },
+ "LAK": {
+ "name": "Laotian Kip",
+ "symbol": "LAK"
+ },
+ "LBP": {
+ "name": "Lebanese Pound",
+ "symbol": "LBP"
+ },
+ "LSL": {
+ "name": "Lesotho Loti",
+ "symbol": "LSL"
+ },
+ "LRD": {
+ "name": "Liberian Dollar",
+ "symbol": "LRD"
+ },
+ "LYD": {
+ "name": "Libyan Dinar",
+ "symbol": "LYD"
+ },
+ "LTL": {
+ "name": "Lithuanian Litas",
+ "symbol": "LTL"
+ },
+ "MOP": {
+ "name": "Macanese Pataca",
+ "symbol": "MOP"
+ },
+ "MKD": {
+ "name": "Macedonian Denar",
+ "symbol": "MKD"
+ },
+ "MGA": {
+ "name": "Malagasy Ariary",
+ "symbol": "MGA"
+ },
+ "MWK": {
+ "name": "Malawian Kwacha",
+ "symbol": "MWK"
+ },
+ "MYR": {
+ "name": "Malaysian Ringgit",
+ "symbol": "MYR"
+ },
+ "MVR": {
+ "name": "Maldivian Rufiyaa",
+ "symbol": "MVR"
+ },
+ "MRO": {
+ "name": "Mauritanian Ouguiya",
+ "symbol": "MRO"
+ },
+ "MUR": {
+ "name": "Mauritian Rupee",
+ "symbol": "MUR"
+ },
+ "MXN": {
+ "name": "Mexican Peso",
+ "symbol": "MX$"
+ },
+ "MDL": {
+ "name": "Moldovan Leu",
+ "symbol": "MDL"
+ },
+ "MNT": {
+ "name": "Mongolian Tugrik",
+ "symbol": "MNT"
+ },
+ "MAD": {
+ "name": "Moroccan Dirham",
+ "symbol": "MAD"
+ },
+ "MZN": {
+ "name": "Mozambican Metical",
+ "symbol": "MZN"
+ },
+ "MMK": {
+ "name": "Myanmar Kyat",
+ "symbol": "MMK"
+ },
+ "NAD": {
+ "name": "Namibian Dollar",
+ "symbol": "NAD"
+ },
+ "NPR": {
+ "name": "Nepalese Rupee",
+ "symbol": "NPR"
+ },
+ "ANG": {
+ "name": "Netherlands Antillean Guilder",
+ "symbol": "ANG"
+ },
+ "TWD": {
+ "name": "New Taiwan Dollar",
+ "symbol": "NT$"
+ },
+ "NZD": {
+ "name": "New Zealand Dollar",
+ "symbol": "NZ$"
+ },
+ "NIO": {
+ "name": "Nicaraguan Córdoba",
+ "symbol": "NIO"
+ },
+ "NGN": {
+ "name": "Nigerian Naira",
+ "symbol": "NGN"
+ },
+ "KPW": {
+ "name": "North Korean Won",
+ "symbol": "KPW"
+ },
+ "NOK": {
+ "name": "Norwegian Krone",
+ "symbol": "NOK"
+ },
+ "OMR": {
+ "name": "Omani Rial",
+ "symbol": "OMR"
+ },
+ "PKR": {
+ "name": "Pakistani Rupee",
+ "symbol": "PKR"
+ },
+ "PAB": {
+ "name": "Panamanian Balboa",
+ "symbol": "PAB"
+ },
+ "PGK": {
+ "name": "Papua New Guinean Kina",
+ "symbol": "PGK"
+ },
+ "PYG": {
+ "name": "Paraguayan Guarani",
+ "symbol": "PYG"
+ },
+ "PEN": {
+ "name": "Peruvian Nuevo Sol",
+ "symbol": "PEN"
+ },
+ "PHP": {
+ "name": "Philippine Peso",
+ "symbol": "PHP"
+ },
+ "PLN": {
+ "name": "Polish Zloty",
+ "symbol": "PLN"
+ },
+ "QAR": {
+ "name": "Qatari Rial",
+ "symbol": "QAR"
+ },
+ "RON": {
+ "name": "Romanian Leu",
+ "symbol": "RON"
+ },
+ "RUB": {
+ "name": "Russian Ruble",
+ "symbol": "RUB"
+ },
+ "RWF": {
+ "name": "Rwandan Franc",
+ "symbol": "RWF"
+ },
+ "SHP": {
+ "name": "Saint Helena Pound",
+ "symbol": "SHP"
+ },
+ "SVC": {
+ "name": "Salvadoran Colón",
+ "symbol": "SVC"
+ },
+ "WST": {
+ "name": "Samoan Tala",
+ "symbol": "WST"
+ },
+ "STD": {
+ "name": "São Tomé and Príncipe Dobra",
+ "symbol": "STD"
+ },
+ "SAR": {
+ "name": "Saudi Riyal",
+ "symbol": "SAR"
+ },
+ "RSD": {
+ "name": "Serbian Dinar",
+ "symbol": "RSD"
+ },
+ "SCR": {
+ "name": "Seychellois Rupee",
+ "symbol": "SCR"
+ },
+ "SLL": {
+ "name": "Sierra Leonean Leone",
+ "symbol": "SLL"
+ },
+ "SGD": {
+ "name": "Singapore Dollar",
+ "symbol": "SGD"
+ },
+ "SBD": {
+ "name": "Solomon Islands Dollar",
+ "symbol": "SBD"
+ },
+ "SOS": {
+ "name": "Somali Shilling",
+ "symbol": "SOS"
+ },
+ "ZAR": {
+ "name": "South African Rand",
+ "symbol": "ZAR"
+ },
+ "KRW": {
+ "name": "South Korean Won",
+ "symbol": "â‚©"
+ },
+ "SSP": {
+ "name": "South Sudanese Pound",
+ "symbol": "SSP"
+ },
+ "LKR": {
+ "name": "Sri Lankan Rupee",
+ "symbol": "LKR"
+ },
+ "SDG": {
+ "name": "Sudanese Pound",
+ "symbol": "SDG"
+ },
+ "SRD": {
+ "name": "Surinamese Dollar",
+ "symbol": "SRD"
+ },
+ "SZL": {
+ "name": "Swazi Lilangeni",
+ "symbol": "SZL"
+ },
+ "SEK": {
+ "name": "Swedish Krona",
+ "symbol": "SEK"
+ },
+ "CHF": {
+ "name": "Swiss Franc",
+ "symbol": "CHF"
+ },
+ "SYP": {
+ "name": "Syrian Pound",
+ "symbol": "SYP"
+ },
+ "TJS": {
+ "name": "Tajikistani Somoni",
+ "symbol": "TJS"
+ },
+ "TZS": {
+ "name": "Tanzanian Shilling",
+ "symbol": "TZS"
+ },
+ "THB": {
+ "name": "Thai Baht",
+ "symbol": "฿"
+ },
+ "TOP": {
+ "name": "Tongan Paʻanga",
+ "symbol": "TOP"
+ },
+ "TTD": {
+ "name": "Trinidad and Tobago Dollar",
+ "symbol": "TTD"
+ },
+ "TND": {
+ "name": "Tunisian Dinar",
+ "symbol": "TND"
+ },
+ "TRY": {
+ "name": "Turkish Lira",
+ "symbol": "TRY"
+ },
+ "TMT": {
+ "name": "Turkmenistani Manat",
+ "symbol": "TMT"
+ },
+ "UGX": {
+ "name": "Ugandan Shilling",
+ "symbol": "UGX"
+ },
+ "UAH": {
+ "name": "Ukrainian Hryvnia",
+ "symbol": "UAH"
+ },
+ "AED": {
+ "name": "United Arab Emirates Dirham",
+ "symbol": "AED"
+ },
+ "UYU": {
+ "name": "Uruguayan Peso",
+ "symbol": "UYU"
+ },
+ "USD": {
+ "name": "US Dollar",
+ "symbol": "US$"
+ },
+ "UZS": {
+ "name": "Uzbekistan Som",
+ "symbol": "UZS"
+ },
+ "VUV": {
+ "name": "Vanuatu Vatu",
+ "symbol": "VUV"
+ },
+ "VEF": {
+ "name": "Venezuelan Bolívar",
+ "symbol": "VEF"
+ },
+ "VND": {
+ "name": "Vietnamese Dong",
+ "symbol": "â‚«"
+ },
+ "YER": {
+ "name": "Yemeni Rial",
+ "symbol": "YER"
+ },
+ "ZMW": {
+ "name": "Zambian Kwacha",
+ "symbol": "ZMW"
+ },
+ "ZWL": {
+ "name": "Zimbabwean Dollar (2009)",
+ "symbol": "ZWL"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/currency/en.json b/library/intl/resources/currency/en.json
new file mode 100644
index 000000000..937c7a750
--- /dev/null
+++ b/library/intl/resources/currency/en.json
@@ -0,0 +1,634 @@
+{
+ "AFN": {
+ "name": "Afghan Afghani",
+ "symbol": "AFN"
+ },
+ "ALL": {
+ "name": "Albanian Lek",
+ "symbol": "ALL"
+ },
+ "DZD": {
+ "name": "Algerian Dinar",
+ "symbol": "DZD"
+ },
+ "AOA": {
+ "name": "Angolan Kwanza",
+ "symbol": "AOA"
+ },
+ "ARS": {
+ "name": "Argentine Peso",
+ "symbol": "ARS"
+ },
+ "AMD": {
+ "name": "Armenian Dram",
+ "symbol": "AMD"
+ },
+ "AWG": {
+ "name": "Aruban Florin",
+ "symbol": "AWG"
+ },
+ "AUD": {
+ "name": "Australian Dollar",
+ "symbol": "A$"
+ },
+ "AZN": {
+ "name": "Azerbaijani Manat",
+ "symbol": "AZN"
+ },
+ "BSD": {
+ "name": "Bahamian Dollar",
+ "symbol": "BSD"
+ },
+ "BHD": {
+ "name": "Bahraini Dinar",
+ "symbol": "BHD"
+ },
+ "BDT": {
+ "name": "Bangladeshi Taka",
+ "symbol": "BDT"
+ },
+ "BBD": {
+ "name": "Barbadian Dollar",
+ "symbol": "BBD"
+ },
+ "BYR": {
+ "name": "Belarusian Ruble",
+ "symbol": "BYR"
+ },
+ "BZD": {
+ "name": "Belize Dollar",
+ "symbol": "BZD"
+ },
+ "BMD": {
+ "name": "Bermudan Dollar",
+ "symbol": "BMD"
+ },
+ "BTN": {
+ "name": "Bhutanese Ngultrum",
+ "symbol": "BTN"
+ },
+ "BOB": {
+ "name": "Bolivian Boliviano",
+ "symbol": "BOB"
+ },
+ "BAM": {
+ "name": "Bosnia-Herzegovina Convertible Mark",
+ "symbol": "BAM"
+ },
+ "BWP": {
+ "name": "Botswanan Pula",
+ "symbol": "BWP"
+ },
+ "BRL": {
+ "name": "Brazilian Real",
+ "symbol": "R$"
+ },
+ "GBP": {
+ "name": "British Pound Sterling",
+ "symbol": "£"
+ },
+ "BND": {
+ "name": "Brunei Dollar",
+ "symbol": "BND"
+ },
+ "BGN": {
+ "name": "Bulgarian Lev",
+ "symbol": "BGN"
+ },
+ "BIF": {
+ "name": "Burundian Franc",
+ "symbol": "BIF"
+ },
+ "KHR": {
+ "name": "Cambodian Riel",
+ "symbol": "KHR"
+ },
+ "CAD": {
+ "name": "Canadian Dollar",
+ "symbol": "CA$"
+ },
+ "CVE": {
+ "name": "Cape Verdean Escudo",
+ "symbol": "CVE"
+ },
+ "KYD": {
+ "name": "Cayman Islands Dollar",
+ "symbol": "KYD"
+ },
+ "XOF": {
+ "name": "CFA Franc BCEAO",
+ "symbol": "CFA"
+ },
+ "XAF": {
+ "name": "CFA Franc BEAC",
+ "symbol": "FCFA"
+ },
+ "XPF": {
+ "name": "CFP Franc",
+ "symbol": "CFPF"
+ },
+ "CLP": {
+ "name": "Chilean Peso",
+ "symbol": "CLP"
+ },
+ "CNY": {
+ "name": "Chinese Yuan",
+ "symbol": "CNÂ¥"
+ },
+ "COP": {
+ "name": "Colombian Peso",
+ "symbol": "COP"
+ },
+ "KMF": {
+ "name": "Comorian Franc",
+ "symbol": "KMF"
+ },
+ "CDF": {
+ "name": "Congolese Franc",
+ "symbol": "CDF"
+ },
+ "CRC": {
+ "name": "Costa Rican Colón",
+ "symbol": "CRC"
+ },
+ "HRK": {
+ "name": "Croatian Kuna",
+ "symbol": "HRK"
+ },
+ "CUC": {
+ "name": "Cuban Convertible Peso",
+ "symbol": "CUC"
+ },
+ "CUP": {
+ "name": "Cuban Peso",
+ "symbol": "CUP"
+ },
+ "CZK": {
+ "name": "Czech Republic Koruna",
+ "symbol": "CZK"
+ },
+ "DKK": {
+ "name": "Danish Krone",
+ "symbol": "DKK"
+ },
+ "DJF": {
+ "name": "Djiboutian Franc",
+ "symbol": "DJF"
+ },
+ "DOP": {
+ "name": "Dominican Peso",
+ "symbol": "DOP"
+ },
+ "XCD": {
+ "name": "East Caribbean Dollar",
+ "symbol": "EC$"
+ },
+ "EGP": {
+ "name": "Egyptian Pound",
+ "symbol": "EGP"
+ },
+ "ERN": {
+ "name": "Eritrean Nakfa",
+ "symbol": "ERN"
+ },
+ "ETB": {
+ "name": "Ethiopian Birr",
+ "symbol": "ETB"
+ },
+ "EUR": {
+ "name": "Euro",
+ "symbol": "€"
+ },
+ "FKP": {
+ "name": "Falkland Islands Pound",
+ "symbol": "FKP"
+ },
+ "FJD": {
+ "name": "Fijian Dollar",
+ "symbol": "FJD"
+ },
+ "GMD": {
+ "name": "Gambian Dalasi",
+ "symbol": "GMD"
+ },
+ "GEL": {
+ "name": "Georgian Lari",
+ "symbol": "GEL"
+ },
+ "GHS": {
+ "name": "Ghanaian Cedi",
+ "symbol": "GHS"
+ },
+ "GIP": {
+ "name": "Gibraltar Pound",
+ "symbol": "GIP"
+ },
+ "GTQ": {
+ "name": "Guatemalan Quetzal",
+ "symbol": "GTQ"
+ },
+ "GNF": {
+ "name": "Guinean Franc",
+ "symbol": "GNF"
+ },
+ "GYD": {
+ "name": "Guyanaese Dollar",
+ "symbol": "GYD"
+ },
+ "HTG": {
+ "name": "Haitian Gourde",
+ "symbol": "HTG"
+ },
+ "HNL": {
+ "name": "Honduran Lempira",
+ "symbol": "HNL"
+ },
+ "HKD": {
+ "name": "Hong Kong Dollar",
+ "symbol": "HK$"
+ },
+ "HUF": {
+ "name": "Hungarian Forint",
+ "symbol": "HUF"
+ },
+ "ISK": {
+ "name": "Icelandic Króna",
+ "symbol": "ISK"
+ },
+ "INR": {
+ "name": "Indian Rupee",
+ "symbol": "₹"
+ },
+ "IDR": {
+ "name": "Indonesian Rupiah",
+ "symbol": "IDR"
+ },
+ "IRR": {
+ "name": "Iranian Rial",
+ "symbol": "IRR"
+ },
+ "IQD": {
+ "name": "Iraqi Dinar",
+ "symbol": "IQD"
+ },
+ "ILS": {
+ "name": "Israeli New Sheqel",
+ "symbol": "₪"
+ },
+ "JMD": {
+ "name": "Jamaican Dollar",
+ "symbol": "JMD"
+ },
+ "JPY": {
+ "name": "Japanese Yen",
+ "symbol": "Â¥"
+ },
+ "JOD": {
+ "name": "Jordanian Dinar",
+ "symbol": "JOD"
+ },
+ "KZT": {
+ "name": "Kazakhstani Tenge",
+ "symbol": "KZT"
+ },
+ "KES": {
+ "name": "Kenyan Shilling",
+ "symbol": "KES"
+ },
+ "KWD": {
+ "name": "Kuwaiti Dinar",
+ "symbol": "KWD"
+ },
+ "KGS": {
+ "name": "Kyrgystani Som",
+ "symbol": "KGS"
+ },
+ "LAK": {
+ "name": "Laotian Kip",
+ "symbol": "LAK"
+ },
+ "LBP": {
+ "name": "Lebanese Pound",
+ "symbol": "LBP"
+ },
+ "LSL": {
+ "name": "Lesotho Loti",
+ "symbol": "LSL"
+ },
+ "LRD": {
+ "name": "Liberian Dollar",
+ "symbol": "LRD"
+ },
+ "LYD": {
+ "name": "Libyan Dinar",
+ "symbol": "LYD"
+ },
+ "LTL": {
+ "name": "Lithuanian Litas",
+ "symbol": "LTL"
+ },
+ "MOP": {
+ "name": "Macanese Pataca",
+ "symbol": "MOP"
+ },
+ "MKD": {
+ "name": "Macedonian Denar",
+ "symbol": "MKD"
+ },
+ "MGA": {
+ "name": "Malagasy Ariary",
+ "symbol": "MGA"
+ },
+ "MWK": {
+ "name": "Malawian Kwacha",
+ "symbol": "MWK"
+ },
+ "MYR": {
+ "name": "Malaysian Ringgit",
+ "symbol": "MYR"
+ },
+ "MVR": {
+ "name": "Maldivian Rufiyaa",
+ "symbol": "MVR"
+ },
+ "MRO": {
+ "name": "Mauritanian Ouguiya",
+ "symbol": "MRO"
+ },
+ "MUR": {
+ "name": "Mauritian Rupee",
+ "symbol": "MUR"
+ },
+ "MXN": {
+ "name": "Mexican Peso",
+ "symbol": "MX$"
+ },
+ "MDL": {
+ "name": "Moldovan Leu",
+ "symbol": "MDL"
+ },
+ "MNT": {
+ "name": "Mongolian Tugrik",
+ "symbol": "MNT"
+ },
+ "MAD": {
+ "name": "Moroccan Dirham",
+ "symbol": "MAD"
+ },
+ "MZN": {
+ "name": "Mozambican Metical",
+ "symbol": "MZN"
+ },
+ "MMK": {
+ "name": "Myanmar Kyat",
+ "symbol": "MMK"
+ },
+ "NAD": {
+ "name": "Namibian Dollar",
+ "symbol": "NAD"
+ },
+ "NPR": {
+ "name": "Nepalese Rupee",
+ "symbol": "NPR"
+ },
+ "ANG": {
+ "name": "Netherlands Antillean Guilder",
+ "symbol": "ANG"
+ },
+ "TWD": {
+ "name": "New Taiwan Dollar",
+ "symbol": "NT$"
+ },
+ "NZD": {
+ "name": "New Zealand Dollar",
+ "symbol": "NZ$"
+ },
+ "NIO": {
+ "name": "Nicaraguan Córdoba",
+ "symbol": "NIO"
+ },
+ "NGN": {
+ "name": "Nigerian Naira",
+ "symbol": "NGN"
+ },
+ "KPW": {
+ "name": "North Korean Won",
+ "symbol": "KPW"
+ },
+ "NOK": {
+ "name": "Norwegian Krone",
+ "symbol": "NOK"
+ },
+ "OMR": {
+ "name": "Omani Rial",
+ "symbol": "OMR"
+ },
+ "PKR": {
+ "name": "Pakistani Rupee",
+ "symbol": "PKR"
+ },
+ "PAB": {
+ "name": "Panamanian Balboa",
+ "symbol": "PAB"
+ },
+ "PGK": {
+ "name": "Papua New Guinean Kina",
+ "symbol": "PGK"
+ },
+ "PYG": {
+ "name": "Paraguayan Guarani",
+ "symbol": "PYG"
+ },
+ "PEN": {
+ "name": "Peruvian Nuevo Sol",
+ "symbol": "PEN"
+ },
+ "PHP": {
+ "name": "Philippine Peso",
+ "symbol": "PHP"
+ },
+ "PLN": {
+ "name": "Polish Zloty",
+ "symbol": "PLN"
+ },
+ "QAR": {
+ "name": "Qatari Rial",
+ "symbol": "QAR"
+ },
+ "RON": {
+ "name": "Romanian Leu",
+ "symbol": "RON"
+ },
+ "RUB": {
+ "name": "Russian Ruble",
+ "symbol": "RUB"
+ },
+ "RWF": {
+ "name": "Rwandan Franc",
+ "symbol": "RWF"
+ },
+ "SVC": {
+ "name": "Salvadoran Colón",
+ "symbol": "SVC"
+ },
+ "WST": {
+ "name": "Samoan Tala",
+ "symbol": "WST"
+ },
+ "STD": {
+ "name": "São Tomé & Príncipe Dobra",
+ "symbol": "STD"
+ },
+ "SAR": {
+ "name": "Saudi Riyal",
+ "symbol": "SAR"
+ },
+ "RSD": {
+ "name": "Serbian Dinar",
+ "symbol": "RSD"
+ },
+ "SCR": {
+ "name": "Seychellois Rupee",
+ "symbol": "SCR"
+ },
+ "SLL": {
+ "name": "Sierra Leonean Leone",
+ "symbol": "SLL"
+ },
+ "SGD": {
+ "name": "Singapore Dollar",
+ "symbol": "SGD"
+ },
+ "SBD": {
+ "name": "Solomon Islands Dollar",
+ "symbol": "SBD"
+ },
+ "SOS": {
+ "name": "Somali Shilling",
+ "symbol": "SOS"
+ },
+ "ZAR": {
+ "name": "South African Rand",
+ "symbol": "ZAR"
+ },
+ "KRW": {
+ "name": "South Korean Won",
+ "symbol": "â‚©"
+ },
+ "SSP": {
+ "name": "South Sudanese Pound",
+ "symbol": "SSP"
+ },
+ "LKR": {
+ "name": "Sri Lankan Rupee",
+ "symbol": "LKR"
+ },
+ "SHP": {
+ "name": "St. Helena Pound",
+ "symbol": "SHP"
+ },
+ "SDG": {
+ "name": "Sudanese Pound",
+ "symbol": "SDG"
+ },
+ "SRD": {
+ "name": "Surinamese Dollar",
+ "symbol": "SRD"
+ },
+ "SZL": {
+ "name": "Swazi Lilangeni",
+ "symbol": "SZL"
+ },
+ "SEK": {
+ "name": "Swedish Krona",
+ "symbol": "SEK"
+ },
+ "CHF": {
+ "name": "Swiss Franc",
+ "symbol": "CHF"
+ },
+ "SYP": {
+ "name": "Syrian Pound",
+ "symbol": "SYP"
+ },
+ "TJS": {
+ "name": "Tajikistani Somoni",
+ "symbol": "TJS"
+ },
+ "TZS": {
+ "name": "Tanzanian Shilling",
+ "symbol": "TZS"
+ },
+ "THB": {
+ "name": "Thai Baht",
+ "symbol": "THB"
+ },
+ "TOP": {
+ "name": "Tongan Paʻanga",
+ "symbol": "TOP"
+ },
+ "TTD": {
+ "name": "Trinidad & Tobago Dollar",
+ "symbol": "TTD"
+ },
+ "TND": {
+ "name": "Tunisian Dinar",
+ "symbol": "TND"
+ },
+ "TRY": {
+ "name": "Turkish Lira",
+ "symbol": "TRY"
+ },
+ "TMT": {
+ "name": "Turkmenistani Manat",
+ "symbol": "TMT"
+ },
+ "UGX": {
+ "name": "Ugandan Shilling",
+ "symbol": "UGX"
+ },
+ "UAH": {
+ "name": "Ukrainian Hryvnia",
+ "symbol": "UAH"
+ },
+ "AED": {
+ "name": "United Arab Emirates Dirham",
+ "symbol": "AED"
+ },
+ "UYU": {
+ "name": "Uruguayan Peso",
+ "symbol": "UYU"
+ },
+ "USD": {
+ "name": "US Dollar",
+ "symbol": "$"
+ },
+ "UZS": {
+ "name": "Uzbekistan Som",
+ "symbol": "UZS"
+ },
+ "VUV": {
+ "name": "Vanuatu Vatu",
+ "symbol": "VUV"
+ },
+ "VEF": {
+ "name": "Venezuelan Bolívar",
+ "symbol": "VEF"
+ },
+ "VND": {
+ "name": "Vietnamese Dong",
+ "symbol": "â‚«"
+ },
+ "YER": {
+ "name": "Yemeni Rial",
+ "symbol": "YER"
+ },
+ "ZMW": {
+ "name": "Zambian Kwacha",
+ "symbol": "ZMW"
+ },
+ "ZWL": {
+ "name": "Zimbabwean Dollar (2009)",
+ "symbol": "ZWL"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/currency/eo.json b/library/intl/resources/currency/eo.json
new file mode 100644
index 000000000..16a868f49
--- /dev/null
+++ b/library/intl/resources/currency/eo.json
@@ -0,0 +1,634 @@
+{
+ "AED": {
+ "name": "AED",
+ "symbol": "AED"
+ },
+ "AFN": {
+ "name": "AFN",
+ "symbol": "AFN"
+ },
+ "ALL": {
+ "name": "ALL",
+ "symbol": "ALL"
+ },
+ "AMD": {
+ "name": "AMD",
+ "symbol": "AMD"
+ },
+ "ANG": {
+ "name": "ANG",
+ "symbol": "ANG"
+ },
+ "AOA": {
+ "name": "AOA",
+ "symbol": "AOA"
+ },
+ "ARS": {
+ "name": "ARS",
+ "symbol": "ARS"
+ },
+ "AUD": {
+ "name": "AÅ­stralia dolaro",
+ "symbol": "AU$"
+ },
+ "AWG": {
+ "name": "AWG",
+ "symbol": "AWG"
+ },
+ "AZN": {
+ "name": "AZN",
+ "symbol": "AZN"
+ },
+ "BAM": {
+ "name": "BAM",
+ "symbol": "BAM"
+ },
+ "INR": {
+ "name": "Barata rupio",
+ "symbol": "₹"
+ },
+ "BBD": {
+ "name": "BBD",
+ "symbol": "BBD"
+ },
+ "BDT": {
+ "name": "BDT",
+ "symbol": "BDT"
+ },
+ "BGN": {
+ "name": "BGN",
+ "symbol": "BGN"
+ },
+ "BHD": {
+ "name": "BHD",
+ "symbol": "BHD"
+ },
+ "BIF": {
+ "name": "BIF",
+ "symbol": "BIF"
+ },
+ "BMD": {
+ "name": "BMD",
+ "symbol": "BMD"
+ },
+ "BND": {
+ "name": "BND",
+ "symbol": "BND"
+ },
+ "BOB": {
+ "name": "BOB",
+ "symbol": "BOB"
+ },
+ "BRL": {
+ "name": "Brazila realo",
+ "symbol": "R$"
+ },
+ "GBP": {
+ "name": "Brita pundo",
+ "symbol": "£"
+ },
+ "BSD": {
+ "name": "BSD",
+ "symbol": "BSD"
+ },
+ "BTN": {
+ "name": "BTN",
+ "symbol": "BTN"
+ },
+ "BWP": {
+ "name": "BWP",
+ "symbol": "BWP"
+ },
+ "BYR": {
+ "name": "BYR",
+ "symbol": "BYR"
+ },
+ "BZD": {
+ "name": "BZD",
+ "symbol": "BZD"
+ },
+ "CDF": {
+ "name": "CDF",
+ "symbol": "CDF"
+ },
+ "CLP": {
+ "name": "CLP",
+ "symbol": "CLP"
+ },
+ "COP": {
+ "name": "COP",
+ "symbol": "COP"
+ },
+ "CRC": {
+ "name": "CRC",
+ "symbol": "CRC"
+ },
+ "CUC": {
+ "name": "CUC",
+ "symbol": "CUC"
+ },
+ "CUP": {
+ "name": "CUP",
+ "symbol": "CUP"
+ },
+ "CVE": {
+ "name": "CVE",
+ "symbol": "CVE"
+ },
+ "CZK": {
+ "name": "CZK",
+ "symbol": "CZK"
+ },
+ "CNY": {
+ "name": "Ĉina juano",
+ "symbol": "CNÂ¥"
+ },
+ "DKK": {
+ "name": "Dana krono",
+ "symbol": "DKK"
+ },
+ "DJF": {
+ "name": "DJF",
+ "symbol": "DJF"
+ },
+ "DOP": {
+ "name": "DOP",
+ "symbol": "DOP"
+ },
+ "DZD": {
+ "name": "DZD",
+ "symbol": "DZD"
+ },
+ "EGP": {
+ "name": "EGP",
+ "symbol": "EGP"
+ },
+ "ERN": {
+ "name": "ERN",
+ "symbol": "ERN"
+ },
+ "ETB": {
+ "name": "ETB",
+ "symbol": "ETB"
+ },
+ "EUR": {
+ "name": "EÅ­ro",
+ "symbol": "€"
+ },
+ "FJD": {
+ "name": "FJD",
+ "symbol": "FJD"
+ },
+ "FKP": {
+ "name": "FKP",
+ "symbol": "FKP"
+ },
+ "GEL": {
+ "name": "GEL",
+ "symbol": "GEL"
+ },
+ "GHS": {
+ "name": "GHS",
+ "symbol": "GHS"
+ },
+ "GIP": {
+ "name": "GIP",
+ "symbol": "GIP"
+ },
+ "GMD": {
+ "name": "GMD",
+ "symbol": "GMD"
+ },
+ "GNF": {
+ "name": "GNF",
+ "symbol": "GNF"
+ },
+ "GTQ": {
+ "name": "GTQ",
+ "symbol": "GTQ"
+ },
+ "GYD": {
+ "name": "GYD",
+ "symbol": "GYD"
+ },
+ "HNL": {
+ "name": "HNL",
+ "symbol": "HNL"
+ },
+ "HKD": {
+ "name": "Honkonga dolaro",
+ "symbol": "HK$"
+ },
+ "HRK": {
+ "name": "HRK",
+ "symbol": "HRK"
+ },
+ "HTG": {
+ "name": "HTG",
+ "symbol": "HTG"
+ },
+ "HUF": {
+ "name": "HUF",
+ "symbol": "HUF"
+ },
+ "ILS": {
+ "name": "ILS",
+ "symbol": "₪"
+ },
+ "IDR": {
+ "name": "Indonezia rupio",
+ "symbol": "IDR"
+ },
+ "IQD": {
+ "name": "IQD",
+ "symbol": "IQD"
+ },
+ "IRR": {
+ "name": "IRR",
+ "symbol": "IRR"
+ },
+ "ISK": {
+ "name": "ISK",
+ "symbol": "ISK"
+ },
+ "JPY": {
+ "name": "Japana eno",
+ "symbol": "JPÂ¥"
+ },
+ "JMD": {
+ "name": "JMD",
+ "symbol": "JMD"
+ },
+ "JOD": {
+ "name": "JOD",
+ "symbol": "JOD"
+ },
+ "CAD": {
+ "name": "Kanada dolaro",
+ "symbol": "CA$"
+ },
+ "KES": {
+ "name": "KES",
+ "symbol": "KES"
+ },
+ "KGS": {
+ "name": "KGS",
+ "symbol": "KGS"
+ },
+ "KHR": {
+ "name": "KHR",
+ "symbol": "KHR"
+ },
+ "KMF": {
+ "name": "KMF",
+ "symbol": "KMF"
+ },
+ "KPW": {
+ "name": "KPW",
+ "symbol": "KPW"
+ },
+ "KWD": {
+ "name": "KWD",
+ "symbol": "KWD"
+ },
+ "KYD": {
+ "name": "KYD",
+ "symbol": "KYD"
+ },
+ "KZT": {
+ "name": "KZT",
+ "symbol": "KZT"
+ },
+ "LAK": {
+ "name": "LAK",
+ "symbol": "LAK"
+ },
+ "LBP": {
+ "name": "LBP",
+ "symbol": "LBP"
+ },
+ "LKR": {
+ "name": "LKR",
+ "symbol": "LKR"
+ },
+ "LRD": {
+ "name": "LRD",
+ "symbol": "LRD"
+ },
+ "LSL": {
+ "name": "LSL",
+ "symbol": "LSL"
+ },
+ "LTL": {
+ "name": "LTL",
+ "symbol": "LTL"
+ },
+ "LYD": {
+ "name": "LYD",
+ "symbol": "LYD"
+ },
+ "MAD": {
+ "name": "MAD",
+ "symbol": "MAD"
+ },
+ "MDL": {
+ "name": "MDL",
+ "symbol": "MDL"
+ },
+ "MXN": {
+ "name": "Meksika peso",
+ "symbol": "MX$"
+ },
+ "MGA": {
+ "name": "MGA",
+ "symbol": "MGA"
+ },
+ "MKD": {
+ "name": "MKD",
+ "symbol": "MKD"
+ },
+ "MMK": {
+ "name": "MMK",
+ "symbol": "MMK"
+ },
+ "MNT": {
+ "name": "MNT",
+ "symbol": "MNT"
+ },
+ "MOP": {
+ "name": "MOP",
+ "symbol": "MOP"
+ },
+ "MRO": {
+ "name": "MRO",
+ "symbol": "MRO"
+ },
+ "MUR": {
+ "name": "MUR",
+ "symbol": "MUR"
+ },
+ "MVR": {
+ "name": "MVR",
+ "symbol": "MVR"
+ },
+ "MWK": {
+ "name": "MWK",
+ "symbol": "MWK"
+ },
+ "MYR": {
+ "name": "MYR",
+ "symbol": "MYR"
+ },
+ "MZN": {
+ "name": "MZN",
+ "symbol": "MZN"
+ },
+ "NAD": {
+ "name": "NAD",
+ "symbol": "NAD"
+ },
+ "NGN": {
+ "name": "NGN",
+ "symbol": "NGN"
+ },
+ "NIO": {
+ "name": "NIO",
+ "symbol": "NIO"
+ },
+ "NOK": {
+ "name": "Norvega krono",
+ "symbol": "NOK"
+ },
+ "TWD": {
+ "name": "Nova tajvana dolaro",
+ "symbol": "NT$"
+ },
+ "NPR": {
+ "name": "NPR",
+ "symbol": "NPR"
+ },
+ "NZD": {
+ "name": "NZD",
+ "symbol": "NZ$"
+ },
+ "OMR": {
+ "name": "OMR",
+ "symbol": "OMR"
+ },
+ "PAB": {
+ "name": "PAB",
+ "symbol": "PAB"
+ },
+ "PEN": {
+ "name": "PEN",
+ "symbol": "PEN"
+ },
+ "PGK": {
+ "name": "PGK",
+ "symbol": "PGK"
+ },
+ "PHP": {
+ "name": "PHP",
+ "symbol": "PHP"
+ },
+ "PKR": {
+ "name": "PKR",
+ "symbol": "PKR"
+ },
+ "PLN": {
+ "name": "Pola zloto",
+ "symbol": "PLN"
+ },
+ "PYG": {
+ "name": "PYG",
+ "symbol": "PYG"
+ },
+ "QAR": {
+ "name": "QAR",
+ "symbol": "QAR"
+ },
+ "RON": {
+ "name": "RON",
+ "symbol": "RON"
+ },
+ "RSD": {
+ "name": "RSD",
+ "symbol": "RSD"
+ },
+ "RUB": {
+ "name": "Rusa rublo",
+ "symbol": "RUB"
+ },
+ "RWF": {
+ "name": "RWF",
+ "symbol": "RWF"
+ },
+ "SAR": {
+ "name": "Sauda rialo",
+ "symbol": "SAR"
+ },
+ "SBD": {
+ "name": "SBD",
+ "symbol": "SBD"
+ },
+ "SCR": {
+ "name": "SCR",
+ "symbol": "SCR"
+ },
+ "SDG": {
+ "name": "SDG",
+ "symbol": "SDG"
+ },
+ "SGD": {
+ "name": "SGD",
+ "symbol": "SGD"
+ },
+ "SHP": {
+ "name": "SHP",
+ "symbol": "SHP"
+ },
+ "SLL": {
+ "name": "SLL",
+ "symbol": "SLL"
+ },
+ "SOS": {
+ "name": "SOS",
+ "symbol": "SOS"
+ },
+ "SRD": {
+ "name": "SRD",
+ "symbol": "SRD"
+ },
+ "SSP": {
+ "name": "SSP",
+ "symbol": "SSP"
+ },
+ "STD": {
+ "name": "STD",
+ "symbol": "STD"
+ },
+ "ZAR": {
+ "name": "Sud-afrika rando",
+ "symbol": "ZAR"
+ },
+ "KRW": {
+ "name": "Sud-korea Å­ono",
+ "symbol": "â‚©"
+ },
+ "SVC": {
+ "name": "SVC",
+ "symbol": "SVC"
+ },
+ "SEK": {
+ "name": "Sveda krono",
+ "symbol": "SEK"
+ },
+ "CHF": {
+ "name": "Svisa franko",
+ "symbol": "CHF"
+ },
+ "SYP": {
+ "name": "SYP",
+ "symbol": "SYP"
+ },
+ "SZL": {
+ "name": "SZL",
+ "symbol": "SZL"
+ },
+ "THB": {
+ "name": "Taja bahto",
+ "symbol": "฿"
+ },
+ "TJS": {
+ "name": "TJS",
+ "symbol": "TJS"
+ },
+ "TMT": {
+ "name": "TMT",
+ "symbol": "TMT"
+ },
+ "TND": {
+ "name": "TND",
+ "symbol": "TND"
+ },
+ "TOP": {
+ "name": "TOP",
+ "symbol": "TOP"
+ },
+ "TTD": {
+ "name": "TTD",
+ "symbol": "TTD"
+ },
+ "TRY": {
+ "name": "Turka liro",
+ "symbol": "₺"
+ },
+ "TZS": {
+ "name": "TZS",
+ "symbol": "TZS"
+ },
+ "UAH": {
+ "name": "UAH",
+ "symbol": "UAH"
+ },
+ "UGX": {
+ "name": "UGX",
+ "symbol": "UGX"
+ },
+ "USD": {
+ "name": "Usona dolaro",
+ "symbol": "US$"
+ },
+ "UYU": {
+ "name": "UYU",
+ "symbol": "UYU"
+ },
+ "UZS": {
+ "name": "UZS",
+ "symbol": "UZS"
+ },
+ "VEF": {
+ "name": "VEF",
+ "symbol": "VEF"
+ },
+ "VND": {
+ "name": "VND",
+ "symbol": "â‚«"
+ },
+ "VUV": {
+ "name": "VUV",
+ "symbol": "VUV"
+ },
+ "WST": {
+ "name": "WST",
+ "symbol": "WST"
+ },
+ "XAF": {
+ "name": "XAF",
+ "symbol": "FCFA"
+ },
+ "XCD": {
+ "name": "XCD",
+ "symbol": "EC$"
+ },
+ "XOF": {
+ "name": "XOF",
+ "symbol": "CFA"
+ },
+ "XPF": {
+ "name": "XPF",
+ "symbol": "CFPF"
+ },
+ "YER": {
+ "name": "YER",
+ "symbol": "YER"
+ },
+ "ZMW": {
+ "name": "ZMW",
+ "symbol": "ZMW"
+ },
+ "ZWL": {
+ "name": "ZWL",
+ "symbol": "ZWL"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/currency/es-AR.json b/library/intl/resources/currency/es-AR.json
new file mode 100644
index 000000000..66ec77ec7
--- /dev/null
+++ b/library/intl/resources/currency/es-AR.json
@@ -0,0 +1,634 @@
+{
+ "AFN": {
+ "name": "afgani",
+ "symbol": "AFN"
+ },
+ "MGA": {
+ "name": "ariari",
+ "symbol": "MGA"
+ },
+ "PAB": {
+ "name": "balboa panameño",
+ "symbol": "PAB"
+ },
+ "THB": {
+ "name": "bat",
+ "symbol": "THB"
+ },
+ "ETB": {
+ "name": "bir",
+ "symbol": "ETB"
+ },
+ "VEF": {
+ "name": "bolívar venezolano",
+ "symbol": "VEF"
+ },
+ "BOB": {
+ "name": "boliviano",
+ "symbol": "BOB"
+ },
+ "GHS": {
+ "name": "cedi",
+ "symbol": "GHS"
+ },
+ "KES": {
+ "name": "chelín keniano",
+ "symbol": "KES"
+ },
+ "SOS": {
+ "name": "chelín somalí",
+ "symbol": "SOS"
+ },
+ "TZS": {
+ "name": "chelín tanzano",
+ "symbol": "TZS"
+ },
+ "UGX": {
+ "name": "chelín ugandés",
+ "symbol": "UGX"
+ },
+ "CRC": {
+ "name": "colón costarricense",
+ "symbol": "CRC"
+ },
+ "SVC": {
+ "name": "colón salvadoreño",
+ "symbol": "SVC"
+ },
+ "NIO": {
+ "name": "córdoba nicaragüense",
+ "symbol": "NIO"
+ },
+ "CZK": {
+ "name": "corona checa",
+ "symbol": "CZK"
+ },
+ "DKK": {
+ "name": "corona danesa",
+ "symbol": "DKK"
+ },
+ "ISK": {
+ "name": "corona islandesa",
+ "symbol": "ISK"
+ },
+ "NOK": {
+ "name": "corona noruega",
+ "symbol": "NOK"
+ },
+ "SEK": {
+ "name": "corona sueca",
+ "symbol": "SEK"
+ },
+ "GMD": {
+ "name": "dalasi",
+ "symbol": "GMD"
+ },
+ "DZD": {
+ "name": "dinar argelino",
+ "symbol": "DZD"
+ },
+ "BHD": {
+ "name": "dinar bahreiní",
+ "symbol": "BHD"
+ },
+ "IQD": {
+ "name": "dinar iraquí",
+ "symbol": "IQD"
+ },
+ "JOD": {
+ "name": "dinar jordano",
+ "symbol": "JOD"
+ },
+ "KWD": {
+ "name": "dinar kuwaití",
+ "symbol": "KWD"
+ },
+ "LYD": {
+ "name": "dinar libio",
+ "symbol": "LYD"
+ },
+ "MKD": {
+ "name": "dinar macedonio",
+ "symbol": "MKD"
+ },
+ "RSD": {
+ "name": "dinar serbio",
+ "symbol": "RSD"
+ },
+ "TND": {
+ "name": "dinar tunecino",
+ "symbol": "TND"
+ },
+ "AED": {
+ "name": "dírham de los Emiratos Ãrabes Unidos",
+ "symbol": "AED"
+ },
+ "MAD": {
+ "name": "dírham marroquí",
+ "symbol": "MAD"
+ },
+ "STD": {
+ "name": "dobra",
+ "symbol": "STD"
+ },
+ "AUD": {
+ "name": "dólar australiano",
+ "symbol": "AUD"
+ },
+ "BSD": {
+ "name": "dólar bahameño",
+ "symbol": "BSD"
+ },
+ "BBD": {
+ "name": "dólar barbadense",
+ "symbol": "BBD"
+ },
+ "BZD": {
+ "name": "dólar beliceño",
+ "symbol": "BZD"
+ },
+ "BND": {
+ "name": "dólar bruneano",
+ "symbol": "BND"
+ },
+ "CAD": {
+ "name": "dólar canadiense",
+ "symbol": "CAD"
+ },
+ "BMD": {
+ "name": "dólar de Bermudas",
+ "symbol": "BMD"
+ },
+ "KYD": {
+ "name": "dólar de las Islas Caimán",
+ "symbol": "KYD"
+ },
+ "TTD": {
+ "name": "dólar de Trinidad y Tobago",
+ "symbol": "TTD"
+ },
+ "XCD": {
+ "name": "dólar del Caribe Oriental",
+ "symbol": "XCD"
+ },
+ "USD": {
+ "name": "dólar estadounidense",
+ "symbol": "US$"
+ },
+ "FJD": {
+ "name": "dólar fiyiano",
+ "symbol": "FJD"
+ },
+ "GYD": {
+ "name": "dólar guyanés",
+ "symbol": "GYD"
+ },
+ "HKD": {
+ "name": "dólar hongkonés",
+ "symbol": "HKD"
+ },
+ "JMD": {
+ "name": "dólar jamaicano",
+ "symbol": "JMD"
+ },
+ "LRD": {
+ "name": "dólar liberiano",
+ "symbol": "LRD"
+ },
+ "NAD": {
+ "name": "dólar namibio",
+ "symbol": "NAD"
+ },
+ "NZD": {
+ "name": "dólar neozelandés",
+ "symbol": "NZD"
+ },
+ "SBD": {
+ "name": "dólar salomonense",
+ "symbol": "SBD"
+ },
+ "SGD": {
+ "name": "dólar singapurense",
+ "symbol": "SGD"
+ },
+ "SRD": {
+ "name": "dólar surinamés",
+ "symbol": "SRD"
+ },
+ "ZWL": {
+ "name": "dólar zimbabuense",
+ "symbol": "ZWL"
+ },
+ "VND": {
+ "name": "dong",
+ "symbol": "VND"
+ },
+ "AMD": {
+ "name": "dram",
+ "symbol": "AMD"
+ },
+ "CVE": {
+ "name": "escudo de Cabo Verde",
+ "symbol": "CVE"
+ },
+ "PLN": {
+ "name": "esloti",
+ "symbol": "PLN"
+ },
+ "EUR": {
+ "name": "euro",
+ "symbol": "EUR"
+ },
+ "AWG": {
+ "name": "florín arubeño",
+ "symbol": "AWG"
+ },
+ "ANG": {
+ "name": "florín de las Antillas Neerlandesas",
+ "symbol": "ANG"
+ },
+ "HUF": {
+ "name": "forinto",
+ "symbol": "HUF"
+ },
+ "BIF": {
+ "name": "franco burundés",
+ "symbol": "BIF"
+ },
+ "XOF": {
+ "name": "franco CFA BCEAO",
+ "symbol": "XOF"
+ },
+ "XAF": {
+ "name": "franco CFA BEAC",
+ "symbol": "XAF"
+ },
+ "XPF": {
+ "name": "franco CFP",
+ "symbol": "CFPF"
+ },
+ "KMF": {
+ "name": "franco comorense",
+ "symbol": "KMF"
+ },
+ "CDF": {
+ "name": "franco congoleño",
+ "symbol": "CDF"
+ },
+ "GNF": {
+ "name": "franco guineano",
+ "symbol": "GNF"
+ },
+ "RWF": {
+ "name": "franco ruandés",
+ "symbol": "RWF"
+ },
+ "CHF": {
+ "name": "franco suizo",
+ "symbol": "CHF"
+ },
+ "DJF": {
+ "name": "franco yibutiano",
+ "symbol": "DJF"
+ },
+ "HTG": {
+ "name": "gourde haitiano",
+ "symbol": "HTG"
+ },
+ "UAH": {
+ "name": "grivna",
+ "symbol": "UAH"
+ },
+ "PYG": {
+ "name": "guaraní paraguayo",
+ "symbol": "PYG"
+ },
+ "BTN": {
+ "name": "gultrum",
+ "symbol": "BTN"
+ },
+ "MMK": {
+ "name": "kiat",
+ "symbol": "MMK"
+ },
+ "PGK": {
+ "name": "kina",
+ "symbol": "PGK"
+ },
+ "LAK": {
+ "name": "kip",
+ "symbol": "LAK"
+ },
+ "MWK": {
+ "name": "kuacha malauí",
+ "symbol": "MWK"
+ },
+ "ZMW": {
+ "name": "kuacha zambiano",
+ "symbol": "ZMK"
+ },
+ "AOA": {
+ "name": "kuanza",
+ "symbol": "AOA"
+ },
+ "HRK": {
+ "name": "kuna",
+ "symbol": "HRK"
+ },
+ "GEL": {
+ "name": "lari",
+ "symbol": "GEL"
+ },
+ "ALL": {
+ "name": "lek",
+ "symbol": "ALL"
+ },
+ "HNL": {
+ "name": "lempira hondureño",
+ "symbol": "HNL"
+ },
+ "SLL": {
+ "name": "leona",
+ "symbol": "SLL"
+ },
+ "MDL": {
+ "name": "leu moldavo",
+ "symbol": "MDL"
+ },
+ "RON": {
+ "name": "leu rumano",
+ "symbol": "RON"
+ },
+ "BGN": {
+ "name": "leva",
+ "symbol": "BGN"
+ },
+ "FKP": {
+ "name": "libra de las Islas Malvinas",
+ "symbol": "FKP"
+ },
+ "SHP": {
+ "name": "libra de Santa Elena",
+ "symbol": "SHP"
+ },
+ "EGP": {
+ "name": "libra egipcia",
+ "symbol": "EGP"
+ },
+ "GBP": {
+ "name": "libra esterlina",
+ "symbol": "GBP"
+ },
+ "GIP": {
+ "name": "libra gibraltareña",
+ "symbol": "GIP"
+ },
+ "LBP": {
+ "name": "libra libanesa",
+ "symbol": "LBP"
+ },
+ "SYP": {
+ "name": "libra siria",
+ "symbol": "SYP"
+ },
+ "SDG": {
+ "name": "libra sudanesa",
+ "symbol": "SDG"
+ },
+ "SSP": {
+ "name": "libra sursudanesa",
+ "symbol": "SSP"
+ },
+ "SZL": {
+ "name": "lilangeni",
+ "symbol": "SZL"
+ },
+ "TRY": {
+ "name": "lira turca",
+ "symbol": "TRY"
+ },
+ "LTL": {
+ "name": "litas",
+ "symbol": "LTL"
+ },
+ "LSL": {
+ "name": "loti lesothense",
+ "symbol": "LSL"
+ },
+ "AZN": {
+ "name": "manat azerí",
+ "symbol": "AZN"
+ },
+ "TMT": {
+ "name": "manat turcomano",
+ "symbol": "TMT"
+ },
+ "BAM": {
+ "name": "marco convertible de Bosnia-Herzegovina",
+ "symbol": "BAM"
+ },
+ "MZN": {
+ "name": "metical",
+ "symbol": "MZN"
+ },
+ "NGN": {
+ "name": "naira",
+ "symbol": "NGN"
+ },
+ "ERN": {
+ "name": "nakfa",
+ "symbol": "ERN"
+ },
+ "TWD": {
+ "name": "nuevo dólar taiwanés",
+ "symbol": "TWD"
+ },
+ "ILS": {
+ "name": "nuevo sheqel israelí",
+ "symbol": "ILS"
+ },
+ "PEN": {
+ "name": "nuevo sol peruano",
+ "symbol": "PEN"
+ },
+ "TOP": {
+ "name": "paanga",
+ "symbol": "TOP"
+ },
+ "MOP": {
+ "name": "pataca",
+ "symbol": "MOP"
+ },
+ "ARS": {
+ "name": "peso argentino",
+ "symbol": "$"
+ },
+ "CLP": {
+ "name": "peso chileno",
+ "symbol": "CLP"
+ },
+ "COP": {
+ "name": "peso colombiano",
+ "symbol": "COP"
+ },
+ "CUP": {
+ "name": "peso cubano",
+ "symbol": "CUP"
+ },
+ "CUC": {
+ "name": "peso cubano convertible",
+ "symbol": "CUC"
+ },
+ "DOP": {
+ "name": "peso dominicano",
+ "symbol": "DOP"
+ },
+ "PHP": {
+ "name": "peso filipino",
+ "symbol": "PHP"
+ },
+ "MXN": {
+ "name": "peso mexicano",
+ "symbol": "MXN"
+ },
+ "UYU": {
+ "name": "peso uruguayo",
+ "symbol": "UYU"
+ },
+ "BWP": {
+ "name": "pula",
+ "symbol": "BWP"
+ },
+ "GTQ": {
+ "name": "quetzal guatemalteco",
+ "symbol": "GTQ"
+ },
+ "ZAR": {
+ "name": "rand",
+ "symbol": "ZAR"
+ },
+ "BRL": {
+ "name": "real brasileño",
+ "symbol": "BRL"
+ },
+ "QAR": {
+ "name": "rial catarí",
+ "symbol": "QAR"
+ },
+ "IRR": {
+ "name": "rial iraní",
+ "symbol": "IRR"
+ },
+ "OMR": {
+ "name": "rial omaní",
+ "symbol": "OMR"
+ },
+ "SAR": {
+ "name": "rial saudí",
+ "symbol": "SAR"
+ },
+ "YER": {
+ "name": "rial yemení",
+ "symbol": "YER"
+ },
+ "KHR": {
+ "name": "riel",
+ "symbol": "KHR"
+ },
+ "MYR": {
+ "name": "ringit",
+ "symbol": "MYR"
+ },
+ "BYR": {
+ "name": "rublo bielorruso",
+ "symbol": "BYR"
+ },
+ "RUB": {
+ "name": "rublo ruso",
+ "symbol": "RUB"
+ },
+ "MVR": {
+ "name": "rufiya",
+ "symbol": "MVR"
+ },
+ "LKR": {
+ "name": "rupia esrilanquesa",
+ "symbol": "LKR"
+ },
+ "INR": {
+ "name": "rupia india",
+ "symbol": "INR"
+ },
+ "IDR": {
+ "name": "rupia indonesia",
+ "symbol": "IDR"
+ },
+ "MUR": {
+ "name": "rupia mauriciana",
+ "symbol": "MUR"
+ },
+ "NPR": {
+ "name": "rupia nepalí",
+ "symbol": "NPR"
+ },
+ "PKR": {
+ "name": "rupia pakistaní",
+ "symbol": "PKR"
+ },
+ "SCR": {
+ "name": "rupia seychellense",
+ "symbol": "SCR"
+ },
+ "KGS": {
+ "name": "som",
+ "symbol": "KGS"
+ },
+ "TJS": {
+ "name": "somoni tayiko",
+ "symbol": "TJS"
+ },
+ "UZS": {
+ "name": "sum",
+ "symbol": "UZS"
+ },
+ "BDT": {
+ "name": "taka",
+ "symbol": "BDT"
+ },
+ "WST": {
+ "name": "tala",
+ "symbol": "WST"
+ },
+ "KZT": {
+ "name": "tenge kazako",
+ "symbol": "KZT"
+ },
+ "MNT": {
+ "name": "tugrik",
+ "symbol": "MNT"
+ },
+ "MRO": {
+ "name": "uguiya",
+ "symbol": "MRO"
+ },
+ "VUV": {
+ "name": "vatu",
+ "symbol": "VUV"
+ },
+ "KPW": {
+ "name": "won norcoreano",
+ "symbol": "KPW"
+ },
+ "KRW": {
+ "name": "won surcoreano",
+ "symbol": "KRW"
+ },
+ "JPY": {
+ "name": "yen",
+ "symbol": "JPY"
+ },
+ "CNY": {
+ "name": "yuan",
+ "symbol": "CNY"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/currency/es-BO.json b/library/intl/resources/currency/es-BO.json
new file mode 100644
index 000000000..a36de1ec8
--- /dev/null
+++ b/library/intl/resources/currency/es-BO.json
@@ -0,0 +1,634 @@
+{
+ "AFN": {
+ "name": "afgani",
+ "symbol": "AFN"
+ },
+ "MGA": {
+ "name": "ariari",
+ "symbol": "MGA"
+ },
+ "PAB": {
+ "name": "balboa panameño",
+ "symbol": "PAB"
+ },
+ "THB": {
+ "name": "bat",
+ "symbol": "THB"
+ },
+ "ETB": {
+ "name": "bir",
+ "symbol": "ETB"
+ },
+ "VEF": {
+ "name": "bolívar venezolano",
+ "symbol": "VEF"
+ },
+ "BOB": {
+ "name": "boliviano",
+ "symbol": "Bs"
+ },
+ "GHS": {
+ "name": "cedi",
+ "symbol": "GHS"
+ },
+ "KES": {
+ "name": "chelín keniano",
+ "symbol": "KES"
+ },
+ "SOS": {
+ "name": "chelín somalí",
+ "symbol": "SOS"
+ },
+ "TZS": {
+ "name": "chelín tanzano",
+ "symbol": "TZS"
+ },
+ "UGX": {
+ "name": "chelín ugandés",
+ "symbol": "UGX"
+ },
+ "CRC": {
+ "name": "colón costarricense",
+ "symbol": "CRC"
+ },
+ "SVC": {
+ "name": "colón salvadoreño",
+ "symbol": "SVC"
+ },
+ "NIO": {
+ "name": "córdoba nicaragüense",
+ "symbol": "NIO"
+ },
+ "CZK": {
+ "name": "corona checa",
+ "symbol": "CZK"
+ },
+ "DKK": {
+ "name": "corona danesa",
+ "symbol": "DKK"
+ },
+ "ISK": {
+ "name": "corona islandesa",
+ "symbol": "ISK"
+ },
+ "NOK": {
+ "name": "corona noruega",
+ "symbol": "NOK"
+ },
+ "SEK": {
+ "name": "corona sueca",
+ "symbol": "SEK"
+ },
+ "GMD": {
+ "name": "dalasi",
+ "symbol": "GMD"
+ },
+ "DZD": {
+ "name": "dinar argelino",
+ "symbol": "DZD"
+ },
+ "BHD": {
+ "name": "dinar bahreiní",
+ "symbol": "BHD"
+ },
+ "IQD": {
+ "name": "dinar iraquí",
+ "symbol": "IQD"
+ },
+ "JOD": {
+ "name": "dinar jordano",
+ "symbol": "JOD"
+ },
+ "KWD": {
+ "name": "dinar kuwaití",
+ "symbol": "KWD"
+ },
+ "LYD": {
+ "name": "dinar libio",
+ "symbol": "LYD"
+ },
+ "MKD": {
+ "name": "dinar macedonio",
+ "symbol": "MKD"
+ },
+ "RSD": {
+ "name": "dinar serbio",
+ "symbol": "RSD"
+ },
+ "TND": {
+ "name": "dinar tunecino",
+ "symbol": "TND"
+ },
+ "AED": {
+ "name": "dírham de los Emiratos Ãrabes Unidos",
+ "symbol": "AED"
+ },
+ "MAD": {
+ "name": "dírham marroquí",
+ "symbol": "MAD"
+ },
+ "STD": {
+ "name": "dobra",
+ "symbol": "STD"
+ },
+ "AUD": {
+ "name": "dólar australiano",
+ "symbol": "AUD"
+ },
+ "BSD": {
+ "name": "dólar bahameño",
+ "symbol": "BSD"
+ },
+ "BBD": {
+ "name": "dólar barbadense",
+ "symbol": "BBD"
+ },
+ "BZD": {
+ "name": "dólar beliceño",
+ "symbol": "BZD"
+ },
+ "BND": {
+ "name": "dólar bruneano",
+ "symbol": "BND"
+ },
+ "CAD": {
+ "name": "dólar canadiense",
+ "symbol": "CAD"
+ },
+ "BMD": {
+ "name": "dólar de Bermudas",
+ "symbol": "BMD"
+ },
+ "KYD": {
+ "name": "dólar de las Islas Caimán",
+ "symbol": "KYD"
+ },
+ "TTD": {
+ "name": "dólar de Trinidad y Tobago",
+ "symbol": "TTD"
+ },
+ "XCD": {
+ "name": "dólar del Caribe Oriental",
+ "symbol": "XCD"
+ },
+ "USD": {
+ "name": "dólar estadounidense",
+ "symbol": "USD"
+ },
+ "FJD": {
+ "name": "dólar fiyiano",
+ "symbol": "FJD"
+ },
+ "GYD": {
+ "name": "dólar guyanés",
+ "symbol": "GYD"
+ },
+ "HKD": {
+ "name": "dólar hongkonés",
+ "symbol": "HKD"
+ },
+ "JMD": {
+ "name": "dólar jamaicano",
+ "symbol": "JMD"
+ },
+ "LRD": {
+ "name": "dólar liberiano",
+ "symbol": "LRD"
+ },
+ "NAD": {
+ "name": "dólar namibio",
+ "symbol": "NAD"
+ },
+ "NZD": {
+ "name": "dólar neozelandés",
+ "symbol": "NZD"
+ },
+ "SBD": {
+ "name": "dólar salomonense",
+ "symbol": "SBD"
+ },
+ "SGD": {
+ "name": "dólar singapurense",
+ "symbol": "SGD"
+ },
+ "SRD": {
+ "name": "dólar surinamés",
+ "symbol": "SRD"
+ },
+ "ZWL": {
+ "name": "dólar zimbabuense",
+ "symbol": "ZWL"
+ },
+ "VND": {
+ "name": "dong",
+ "symbol": "VND"
+ },
+ "AMD": {
+ "name": "dram",
+ "symbol": "AMD"
+ },
+ "CVE": {
+ "name": "escudo de Cabo Verde",
+ "symbol": "CVE"
+ },
+ "PLN": {
+ "name": "esloti",
+ "symbol": "PLN"
+ },
+ "EUR": {
+ "name": "euro",
+ "symbol": "EUR"
+ },
+ "AWG": {
+ "name": "florín arubeño",
+ "symbol": "AWG"
+ },
+ "ANG": {
+ "name": "florín de las Antillas Neerlandesas",
+ "symbol": "ANG"
+ },
+ "HUF": {
+ "name": "forinto",
+ "symbol": "HUF"
+ },
+ "BIF": {
+ "name": "franco burundés",
+ "symbol": "BIF"
+ },
+ "XOF": {
+ "name": "franco CFA BCEAO",
+ "symbol": "XOF"
+ },
+ "XAF": {
+ "name": "franco CFA BEAC",
+ "symbol": "XAF"
+ },
+ "XPF": {
+ "name": "franco CFP",
+ "symbol": "CFPF"
+ },
+ "KMF": {
+ "name": "franco comorense",
+ "symbol": "KMF"
+ },
+ "CDF": {
+ "name": "franco congoleño",
+ "symbol": "CDF"
+ },
+ "GNF": {
+ "name": "franco guineano",
+ "symbol": "GNF"
+ },
+ "RWF": {
+ "name": "franco ruandés",
+ "symbol": "RWF"
+ },
+ "CHF": {
+ "name": "franco suizo",
+ "symbol": "CHF"
+ },
+ "DJF": {
+ "name": "franco yibutiano",
+ "symbol": "DJF"
+ },
+ "HTG": {
+ "name": "gourde haitiano",
+ "symbol": "HTG"
+ },
+ "UAH": {
+ "name": "grivna",
+ "symbol": "UAH"
+ },
+ "PYG": {
+ "name": "guaraní paraguayo",
+ "symbol": "PYG"
+ },
+ "BTN": {
+ "name": "gultrum",
+ "symbol": "BTN"
+ },
+ "MMK": {
+ "name": "kiat",
+ "symbol": "MMK"
+ },
+ "PGK": {
+ "name": "kina",
+ "symbol": "PGK"
+ },
+ "LAK": {
+ "name": "kip",
+ "symbol": "LAK"
+ },
+ "MWK": {
+ "name": "kuacha malauí",
+ "symbol": "MWK"
+ },
+ "ZMW": {
+ "name": "kuacha zambiano",
+ "symbol": "ZMK"
+ },
+ "AOA": {
+ "name": "kuanza",
+ "symbol": "AOA"
+ },
+ "HRK": {
+ "name": "kuna",
+ "symbol": "HRK"
+ },
+ "GEL": {
+ "name": "lari",
+ "symbol": "GEL"
+ },
+ "ALL": {
+ "name": "lek",
+ "symbol": "ALL"
+ },
+ "HNL": {
+ "name": "lempira hondureño",
+ "symbol": "HNL"
+ },
+ "SLL": {
+ "name": "leona",
+ "symbol": "SLL"
+ },
+ "MDL": {
+ "name": "leu moldavo",
+ "symbol": "MDL"
+ },
+ "RON": {
+ "name": "leu rumano",
+ "symbol": "RON"
+ },
+ "BGN": {
+ "name": "leva",
+ "symbol": "BGN"
+ },
+ "FKP": {
+ "name": "libra de las Islas Malvinas",
+ "symbol": "FKP"
+ },
+ "SHP": {
+ "name": "libra de Santa Elena",
+ "symbol": "SHP"
+ },
+ "EGP": {
+ "name": "libra egipcia",
+ "symbol": "EGP"
+ },
+ "GBP": {
+ "name": "libra esterlina",
+ "symbol": "GBP"
+ },
+ "GIP": {
+ "name": "libra gibraltareña",
+ "symbol": "GIP"
+ },
+ "LBP": {
+ "name": "libra libanesa",
+ "symbol": "LBP"
+ },
+ "SYP": {
+ "name": "libra siria",
+ "symbol": "SYP"
+ },
+ "SDG": {
+ "name": "libra sudanesa",
+ "symbol": "SDG"
+ },
+ "SSP": {
+ "name": "libra sursudanesa",
+ "symbol": "SSP"
+ },
+ "SZL": {
+ "name": "lilangeni",
+ "symbol": "SZL"
+ },
+ "TRY": {
+ "name": "lira turca",
+ "symbol": "TRY"
+ },
+ "LTL": {
+ "name": "litas",
+ "symbol": "LTL"
+ },
+ "LSL": {
+ "name": "loti lesothense",
+ "symbol": "LSL"
+ },
+ "AZN": {
+ "name": "manat azerí",
+ "symbol": "AZN"
+ },
+ "TMT": {
+ "name": "manat turcomano",
+ "symbol": "TMT"
+ },
+ "BAM": {
+ "name": "marco convertible de Bosnia-Herzegovina",
+ "symbol": "BAM"
+ },
+ "MZN": {
+ "name": "metical",
+ "symbol": "MZN"
+ },
+ "NGN": {
+ "name": "naira",
+ "symbol": "NGN"
+ },
+ "ERN": {
+ "name": "nakfa",
+ "symbol": "ERN"
+ },
+ "TWD": {
+ "name": "nuevo dólar taiwanés",
+ "symbol": "TWD"
+ },
+ "ILS": {
+ "name": "nuevo sheqel israelí",
+ "symbol": "ILS"
+ },
+ "PEN": {
+ "name": "nuevo sol peruano",
+ "symbol": "PEN"
+ },
+ "TOP": {
+ "name": "paanga",
+ "symbol": "TOP"
+ },
+ "MOP": {
+ "name": "pataca",
+ "symbol": "MOP"
+ },
+ "ARS": {
+ "name": "peso argentino",
+ "symbol": "ARS"
+ },
+ "CLP": {
+ "name": "peso chileno",
+ "symbol": "CLP"
+ },
+ "COP": {
+ "name": "peso colombiano",
+ "symbol": "COP"
+ },
+ "CUP": {
+ "name": "peso cubano",
+ "symbol": "CUP"
+ },
+ "CUC": {
+ "name": "peso cubano convertible",
+ "symbol": "CUC"
+ },
+ "DOP": {
+ "name": "peso dominicano",
+ "symbol": "DOP"
+ },
+ "PHP": {
+ "name": "peso filipino",
+ "symbol": "PHP"
+ },
+ "MXN": {
+ "name": "peso mexicano",
+ "symbol": "MXN"
+ },
+ "UYU": {
+ "name": "peso uruguayo",
+ "symbol": "UYU"
+ },
+ "BWP": {
+ "name": "pula",
+ "symbol": "BWP"
+ },
+ "GTQ": {
+ "name": "quetzal guatemalteco",
+ "symbol": "GTQ"
+ },
+ "ZAR": {
+ "name": "rand",
+ "symbol": "ZAR"
+ },
+ "BRL": {
+ "name": "real brasileño",
+ "symbol": "BRL"
+ },
+ "QAR": {
+ "name": "rial catarí",
+ "symbol": "QAR"
+ },
+ "IRR": {
+ "name": "rial iraní",
+ "symbol": "IRR"
+ },
+ "OMR": {
+ "name": "rial omaní",
+ "symbol": "OMR"
+ },
+ "SAR": {
+ "name": "rial saudí",
+ "symbol": "SAR"
+ },
+ "YER": {
+ "name": "rial yemení",
+ "symbol": "YER"
+ },
+ "KHR": {
+ "name": "riel",
+ "symbol": "KHR"
+ },
+ "MYR": {
+ "name": "ringit",
+ "symbol": "MYR"
+ },
+ "BYR": {
+ "name": "rublo bielorruso",
+ "symbol": "BYR"
+ },
+ "RUB": {
+ "name": "rublo ruso",
+ "symbol": "RUB"
+ },
+ "MVR": {
+ "name": "rufiya",
+ "symbol": "MVR"
+ },
+ "LKR": {
+ "name": "rupia esrilanquesa",
+ "symbol": "LKR"
+ },
+ "INR": {
+ "name": "rupia india",
+ "symbol": "INR"
+ },
+ "IDR": {
+ "name": "rupia indonesia",
+ "symbol": "IDR"
+ },
+ "MUR": {
+ "name": "rupia mauriciana",
+ "symbol": "MUR"
+ },
+ "NPR": {
+ "name": "rupia nepalí",
+ "symbol": "NPR"
+ },
+ "PKR": {
+ "name": "rupia pakistaní",
+ "symbol": "PKR"
+ },
+ "SCR": {
+ "name": "rupia seychellense",
+ "symbol": "SCR"
+ },
+ "KGS": {
+ "name": "som",
+ "symbol": "KGS"
+ },
+ "TJS": {
+ "name": "somoni tayiko",
+ "symbol": "TJS"
+ },
+ "UZS": {
+ "name": "sum",
+ "symbol": "UZS"
+ },
+ "BDT": {
+ "name": "taka",
+ "symbol": "BDT"
+ },
+ "WST": {
+ "name": "tala",
+ "symbol": "WST"
+ },
+ "KZT": {
+ "name": "tenge kazako",
+ "symbol": "KZT"
+ },
+ "MNT": {
+ "name": "tugrik",
+ "symbol": "MNT"
+ },
+ "MRO": {
+ "name": "uguiya",
+ "symbol": "MRO"
+ },
+ "VUV": {
+ "name": "vatu",
+ "symbol": "VUV"
+ },
+ "KPW": {
+ "name": "won norcoreano",
+ "symbol": "KPW"
+ },
+ "KRW": {
+ "name": "won surcoreano",
+ "symbol": "KRW"
+ },
+ "JPY": {
+ "name": "yen",
+ "symbol": "JPY"
+ },
+ "CNY": {
+ "name": "yuan",
+ "symbol": "CNY"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/currency/es-CL.json b/library/intl/resources/currency/es-CL.json
new file mode 100644
index 000000000..f4f4136e3
--- /dev/null
+++ b/library/intl/resources/currency/es-CL.json
@@ -0,0 +1,634 @@
+{
+ "AFN": {
+ "name": "afgani",
+ "symbol": "AFN"
+ },
+ "MGA": {
+ "name": "ariari",
+ "symbol": "MGA"
+ },
+ "PAB": {
+ "name": "balboa panameño",
+ "symbol": "PAB"
+ },
+ "THB": {
+ "name": "bat",
+ "symbol": "THB"
+ },
+ "ETB": {
+ "name": "bir",
+ "symbol": "ETB"
+ },
+ "VEF": {
+ "name": "bolívar venezolano",
+ "symbol": "VEF"
+ },
+ "BOB": {
+ "name": "boliviano",
+ "symbol": "BOB"
+ },
+ "GHS": {
+ "name": "cedi",
+ "symbol": "GHS"
+ },
+ "KES": {
+ "name": "chelín keniano",
+ "symbol": "KES"
+ },
+ "SOS": {
+ "name": "chelín somalí",
+ "symbol": "SOS"
+ },
+ "TZS": {
+ "name": "chelín tanzano",
+ "symbol": "TZS"
+ },
+ "UGX": {
+ "name": "chelín ugandés",
+ "symbol": "UGX"
+ },
+ "CRC": {
+ "name": "colón costarricense",
+ "symbol": "CRC"
+ },
+ "SVC": {
+ "name": "colón salvadoreño",
+ "symbol": "SVC"
+ },
+ "NIO": {
+ "name": "córdoba nicaragüense",
+ "symbol": "NIO"
+ },
+ "CZK": {
+ "name": "corona checa",
+ "symbol": "CZK"
+ },
+ "DKK": {
+ "name": "corona danesa",
+ "symbol": "DKK"
+ },
+ "ISK": {
+ "name": "corona islandesa",
+ "symbol": "ISK"
+ },
+ "NOK": {
+ "name": "corona noruega",
+ "symbol": "NOK"
+ },
+ "SEK": {
+ "name": "corona sueca",
+ "symbol": "SEK"
+ },
+ "GMD": {
+ "name": "dalasi",
+ "symbol": "GMD"
+ },
+ "DZD": {
+ "name": "dinar argelino",
+ "symbol": "DZD"
+ },
+ "BHD": {
+ "name": "dinar bahreiní",
+ "symbol": "BHD"
+ },
+ "IQD": {
+ "name": "dinar iraquí",
+ "symbol": "IQD"
+ },
+ "JOD": {
+ "name": "dinar jordano",
+ "symbol": "JOD"
+ },
+ "KWD": {
+ "name": "dinar kuwaití",
+ "symbol": "KWD"
+ },
+ "LYD": {
+ "name": "dinar libio",
+ "symbol": "LYD"
+ },
+ "MKD": {
+ "name": "dinar macedonio",
+ "symbol": "MKD"
+ },
+ "RSD": {
+ "name": "dinar serbio",
+ "symbol": "RSD"
+ },
+ "TND": {
+ "name": "dinar tunecino",
+ "symbol": "TND"
+ },
+ "AED": {
+ "name": "dírham de los Emiratos Ãrabes Unidos",
+ "symbol": "AED"
+ },
+ "MAD": {
+ "name": "dírham marroquí",
+ "symbol": "MAD"
+ },
+ "STD": {
+ "name": "dobra",
+ "symbol": "STD"
+ },
+ "AUD": {
+ "name": "dólar australiano",
+ "symbol": "AUD"
+ },
+ "BSD": {
+ "name": "dólar bahameño",
+ "symbol": "BSD"
+ },
+ "BBD": {
+ "name": "dólar barbadense",
+ "symbol": "BBD"
+ },
+ "BZD": {
+ "name": "dólar beliceño",
+ "symbol": "BZD"
+ },
+ "BND": {
+ "name": "dólar bruneano",
+ "symbol": "BND"
+ },
+ "CAD": {
+ "name": "dólar canadiense",
+ "symbol": "CAD"
+ },
+ "BMD": {
+ "name": "dólar de Bermudas",
+ "symbol": "BMD"
+ },
+ "KYD": {
+ "name": "dólar de las Islas Caimán",
+ "symbol": "KYD"
+ },
+ "TTD": {
+ "name": "dólar de Trinidad y Tobago",
+ "symbol": "TTD"
+ },
+ "XCD": {
+ "name": "dólar del Caribe Oriental",
+ "symbol": "XCD"
+ },
+ "USD": {
+ "name": "dólar estadounidense",
+ "symbol": "US$"
+ },
+ "FJD": {
+ "name": "dólar fiyiano",
+ "symbol": "FJD"
+ },
+ "GYD": {
+ "name": "dólar guyanés",
+ "symbol": "GYD"
+ },
+ "HKD": {
+ "name": "dólar hongkonés",
+ "symbol": "HKD"
+ },
+ "JMD": {
+ "name": "dólar jamaicano",
+ "symbol": "JMD"
+ },
+ "LRD": {
+ "name": "dólar liberiano",
+ "symbol": "LRD"
+ },
+ "NAD": {
+ "name": "dólar namibio",
+ "symbol": "NAD"
+ },
+ "NZD": {
+ "name": "dólar neozelandés",
+ "symbol": "NZD"
+ },
+ "SBD": {
+ "name": "dólar salomonense",
+ "symbol": "SBD"
+ },
+ "SGD": {
+ "name": "dólar singapurense",
+ "symbol": "SGD"
+ },
+ "SRD": {
+ "name": "dólar surinamés",
+ "symbol": "SRD"
+ },
+ "ZWL": {
+ "name": "dólar zimbabuense",
+ "symbol": "ZWL"
+ },
+ "VND": {
+ "name": "dong",
+ "symbol": "VND"
+ },
+ "AMD": {
+ "name": "dram",
+ "symbol": "AMD"
+ },
+ "CVE": {
+ "name": "escudo de Cabo Verde",
+ "symbol": "CVE"
+ },
+ "PLN": {
+ "name": "esloti",
+ "symbol": "PLN"
+ },
+ "EUR": {
+ "name": "euro",
+ "symbol": "EUR"
+ },
+ "AWG": {
+ "name": "florín arubeño",
+ "symbol": "AWG"
+ },
+ "ANG": {
+ "name": "florín de las Antillas Neerlandesas",
+ "symbol": "ANG"
+ },
+ "HUF": {
+ "name": "forinto",
+ "symbol": "HUF"
+ },
+ "BIF": {
+ "name": "franco burundés",
+ "symbol": "BIF"
+ },
+ "XOF": {
+ "name": "franco CFA BCEAO",
+ "symbol": "XOF"
+ },
+ "XAF": {
+ "name": "franco CFA BEAC",
+ "symbol": "XAF"
+ },
+ "XPF": {
+ "name": "franco CFP",
+ "symbol": "CFPF"
+ },
+ "KMF": {
+ "name": "franco comorense",
+ "symbol": "KMF"
+ },
+ "CDF": {
+ "name": "franco congoleño",
+ "symbol": "CDF"
+ },
+ "GNF": {
+ "name": "franco guineano",
+ "symbol": "GNF"
+ },
+ "RWF": {
+ "name": "franco ruandés",
+ "symbol": "RWF"
+ },
+ "CHF": {
+ "name": "franco suizo",
+ "symbol": "CHF"
+ },
+ "DJF": {
+ "name": "franco yibutiano",
+ "symbol": "DJF"
+ },
+ "HTG": {
+ "name": "gourde haitiano",
+ "symbol": "HTG"
+ },
+ "UAH": {
+ "name": "grivna",
+ "symbol": "UAH"
+ },
+ "PYG": {
+ "name": "guaraní paraguayo",
+ "symbol": "PYG"
+ },
+ "BTN": {
+ "name": "gultrum",
+ "symbol": "BTN"
+ },
+ "MMK": {
+ "name": "kiat",
+ "symbol": "MMK"
+ },
+ "PGK": {
+ "name": "kina",
+ "symbol": "PGK"
+ },
+ "LAK": {
+ "name": "kip",
+ "symbol": "LAK"
+ },
+ "MWK": {
+ "name": "kuacha malauí",
+ "symbol": "MWK"
+ },
+ "ZMW": {
+ "name": "kuacha zambiano",
+ "symbol": "ZMK"
+ },
+ "AOA": {
+ "name": "kuanza",
+ "symbol": "AOA"
+ },
+ "HRK": {
+ "name": "kuna",
+ "symbol": "HRK"
+ },
+ "GEL": {
+ "name": "lari",
+ "symbol": "GEL"
+ },
+ "ALL": {
+ "name": "lek",
+ "symbol": "ALL"
+ },
+ "HNL": {
+ "name": "lempira hondureño",
+ "symbol": "HNL"
+ },
+ "SLL": {
+ "name": "leona",
+ "symbol": "SLL"
+ },
+ "MDL": {
+ "name": "leu moldavo",
+ "symbol": "MDL"
+ },
+ "RON": {
+ "name": "leu rumano",
+ "symbol": "RON"
+ },
+ "BGN": {
+ "name": "leva",
+ "symbol": "BGN"
+ },
+ "FKP": {
+ "name": "libra de las Islas Malvinas",
+ "symbol": "FKP"
+ },
+ "SHP": {
+ "name": "libra de Santa Elena",
+ "symbol": "SHP"
+ },
+ "EGP": {
+ "name": "libra egipcia",
+ "symbol": "EGP"
+ },
+ "GBP": {
+ "name": "libra esterlina",
+ "symbol": "GBP"
+ },
+ "GIP": {
+ "name": "libra gibraltareña",
+ "symbol": "GIP"
+ },
+ "LBP": {
+ "name": "libra libanesa",
+ "symbol": "LBP"
+ },
+ "SYP": {
+ "name": "libra siria",
+ "symbol": "SYP"
+ },
+ "SDG": {
+ "name": "libra sudanesa",
+ "symbol": "SDG"
+ },
+ "SSP": {
+ "name": "libra sursudanesa",
+ "symbol": "SSP"
+ },
+ "SZL": {
+ "name": "lilangeni",
+ "symbol": "SZL"
+ },
+ "TRY": {
+ "name": "lira turca",
+ "symbol": "TRY"
+ },
+ "LTL": {
+ "name": "litas",
+ "symbol": "LTL"
+ },
+ "LSL": {
+ "name": "loti lesothense",
+ "symbol": "LSL"
+ },
+ "AZN": {
+ "name": "manat azerí",
+ "symbol": "AZN"
+ },
+ "TMT": {
+ "name": "manat turcomano",
+ "symbol": "TMT"
+ },
+ "BAM": {
+ "name": "marco convertible de Bosnia-Herzegovina",
+ "symbol": "BAM"
+ },
+ "MZN": {
+ "name": "metical",
+ "symbol": "MZN"
+ },
+ "NGN": {
+ "name": "naira",
+ "symbol": "NGN"
+ },
+ "ERN": {
+ "name": "nakfa",
+ "symbol": "ERN"
+ },
+ "TWD": {
+ "name": "nuevo dólar taiwanés",
+ "symbol": "TWD"
+ },
+ "ILS": {
+ "name": "nuevo sheqel israelí",
+ "symbol": "ILS"
+ },
+ "PEN": {
+ "name": "nuevo sol peruano",
+ "symbol": "PEN"
+ },
+ "TOP": {
+ "name": "paanga",
+ "symbol": "TOP"
+ },
+ "MOP": {
+ "name": "pataca",
+ "symbol": "MOP"
+ },
+ "ARS": {
+ "name": "peso argentino",
+ "symbol": "ARS"
+ },
+ "CLP": {
+ "name": "peso chileno",
+ "symbol": "$"
+ },
+ "COP": {
+ "name": "peso colombiano",
+ "symbol": "COP"
+ },
+ "CUP": {
+ "name": "peso cubano",
+ "symbol": "CUP"
+ },
+ "CUC": {
+ "name": "peso cubano convertible",
+ "symbol": "CUC"
+ },
+ "DOP": {
+ "name": "peso dominicano",
+ "symbol": "DOP"
+ },
+ "PHP": {
+ "name": "peso filipino",
+ "symbol": "PHP"
+ },
+ "MXN": {
+ "name": "peso mexicano",
+ "symbol": "MXN"
+ },
+ "UYU": {
+ "name": "peso uruguayo",
+ "symbol": "UYU"
+ },
+ "BWP": {
+ "name": "pula",
+ "symbol": "BWP"
+ },
+ "GTQ": {
+ "name": "quetzal guatemalteco",
+ "symbol": "GTQ"
+ },
+ "ZAR": {
+ "name": "rand",
+ "symbol": "ZAR"
+ },
+ "BRL": {
+ "name": "real brasileño",
+ "symbol": "BRL"
+ },
+ "QAR": {
+ "name": "rial catarí",
+ "symbol": "QAR"
+ },
+ "IRR": {
+ "name": "rial iraní",
+ "symbol": "IRR"
+ },
+ "OMR": {
+ "name": "rial omaní",
+ "symbol": "OMR"
+ },
+ "SAR": {
+ "name": "rial saudí",
+ "symbol": "SAR"
+ },
+ "YER": {
+ "name": "rial yemení",
+ "symbol": "YER"
+ },
+ "KHR": {
+ "name": "riel",
+ "symbol": "KHR"
+ },
+ "MYR": {
+ "name": "ringit",
+ "symbol": "MYR"
+ },
+ "BYR": {
+ "name": "rublo bielorruso",
+ "symbol": "BYR"
+ },
+ "RUB": {
+ "name": "rublo ruso",
+ "symbol": "RUB"
+ },
+ "MVR": {
+ "name": "rufiya",
+ "symbol": "MVR"
+ },
+ "LKR": {
+ "name": "rupia esrilanquesa",
+ "symbol": "LKR"
+ },
+ "INR": {
+ "name": "rupia india",
+ "symbol": "INR"
+ },
+ "IDR": {
+ "name": "rupia indonesia",
+ "symbol": "IDR"
+ },
+ "MUR": {
+ "name": "rupia mauriciana",
+ "symbol": "MUR"
+ },
+ "NPR": {
+ "name": "rupia nepalí",
+ "symbol": "NPR"
+ },
+ "PKR": {
+ "name": "rupia pakistaní",
+ "symbol": "PKR"
+ },
+ "SCR": {
+ "name": "rupia seychellense",
+ "symbol": "SCR"
+ },
+ "KGS": {
+ "name": "som",
+ "symbol": "KGS"
+ },
+ "TJS": {
+ "name": "somoni tayiko",
+ "symbol": "TJS"
+ },
+ "UZS": {
+ "name": "sum",
+ "symbol": "UZS"
+ },
+ "BDT": {
+ "name": "taka",
+ "symbol": "BDT"
+ },
+ "WST": {
+ "name": "tala",
+ "symbol": "WST"
+ },
+ "KZT": {
+ "name": "tenge kazako",
+ "symbol": "KZT"
+ },
+ "MNT": {
+ "name": "tugrik",
+ "symbol": "MNT"
+ },
+ "MRO": {
+ "name": "uguiya",
+ "symbol": "MRO"
+ },
+ "VUV": {
+ "name": "vatu",
+ "symbol": "VUV"
+ },
+ "KPW": {
+ "name": "won norcoreano",
+ "symbol": "KPW"
+ },
+ "KRW": {
+ "name": "won surcoreano",
+ "symbol": "KRW"
+ },
+ "JPY": {
+ "name": "yen",
+ "symbol": "JPY"
+ },
+ "CNY": {
+ "name": "yuan",
+ "symbol": "CNY"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/currency/es-CO.json b/library/intl/resources/currency/es-CO.json
new file mode 100644
index 000000000..f8e90ed93
--- /dev/null
+++ b/library/intl/resources/currency/es-CO.json
@@ -0,0 +1,634 @@
+{
+ "AFN": {
+ "name": "afgani",
+ "symbol": "AFN"
+ },
+ "MGA": {
+ "name": "ariari",
+ "symbol": "MGA"
+ },
+ "PAB": {
+ "name": "balboa panameño",
+ "symbol": "PAB"
+ },
+ "THB": {
+ "name": "bat",
+ "symbol": "THB"
+ },
+ "ETB": {
+ "name": "bir",
+ "symbol": "ETB"
+ },
+ "VEF": {
+ "name": "bolívar venezolano",
+ "symbol": "VEF"
+ },
+ "BOB": {
+ "name": "boliviano",
+ "symbol": "BOB"
+ },
+ "GHS": {
+ "name": "cedi",
+ "symbol": "GHS"
+ },
+ "KES": {
+ "name": "chelín keniano",
+ "symbol": "KES"
+ },
+ "SOS": {
+ "name": "chelín somalí",
+ "symbol": "SOS"
+ },
+ "TZS": {
+ "name": "chelín tanzano",
+ "symbol": "TZS"
+ },
+ "UGX": {
+ "name": "chelín ugandés",
+ "symbol": "UGX"
+ },
+ "CRC": {
+ "name": "colón costarricense",
+ "symbol": "CRC"
+ },
+ "SVC": {
+ "name": "colón salvadoreño",
+ "symbol": "SVC"
+ },
+ "NIO": {
+ "name": "córdoba nicaragüense",
+ "symbol": "NIO"
+ },
+ "CZK": {
+ "name": "corona checa",
+ "symbol": "CZK"
+ },
+ "DKK": {
+ "name": "corona danesa",
+ "symbol": "DKK"
+ },
+ "ISK": {
+ "name": "corona islandesa",
+ "symbol": "ISK"
+ },
+ "NOK": {
+ "name": "corona noruega",
+ "symbol": "NOK"
+ },
+ "SEK": {
+ "name": "corona sueca",
+ "symbol": "SEK"
+ },
+ "GMD": {
+ "name": "dalasi",
+ "symbol": "GMD"
+ },
+ "DZD": {
+ "name": "dinar argelino",
+ "symbol": "DZD"
+ },
+ "BHD": {
+ "name": "dinar bahreiní",
+ "symbol": "BHD"
+ },
+ "IQD": {
+ "name": "dinar iraquí",
+ "symbol": "IQD"
+ },
+ "JOD": {
+ "name": "dinar jordano",
+ "symbol": "JOD"
+ },
+ "KWD": {
+ "name": "dinar kuwaití",
+ "symbol": "KWD"
+ },
+ "LYD": {
+ "name": "dinar libio",
+ "symbol": "LYD"
+ },
+ "MKD": {
+ "name": "dinar macedonio",
+ "symbol": "MKD"
+ },
+ "RSD": {
+ "name": "dinar serbio",
+ "symbol": "RSD"
+ },
+ "TND": {
+ "name": "dinar tunecino",
+ "symbol": "TND"
+ },
+ "AED": {
+ "name": "dírham de los Emiratos Ãrabes Unidos",
+ "symbol": "AED"
+ },
+ "MAD": {
+ "name": "dírham marroquí",
+ "symbol": "MAD"
+ },
+ "STD": {
+ "name": "dobra",
+ "symbol": "STD"
+ },
+ "AUD": {
+ "name": "dólar australiano",
+ "symbol": "AUD"
+ },
+ "BSD": {
+ "name": "dólar bahameño",
+ "symbol": "BSD"
+ },
+ "BBD": {
+ "name": "dólar barbadense",
+ "symbol": "BBD"
+ },
+ "BZD": {
+ "name": "dólar beliceño",
+ "symbol": "BZD"
+ },
+ "BND": {
+ "name": "dólar bruneano",
+ "symbol": "BND"
+ },
+ "CAD": {
+ "name": "dólar canadiense",
+ "symbol": "CAD"
+ },
+ "BMD": {
+ "name": "dólar de Bermudas",
+ "symbol": "BMD"
+ },
+ "KYD": {
+ "name": "dólar de las Islas Caimán",
+ "symbol": "KYD"
+ },
+ "TTD": {
+ "name": "dólar de Trinidad y Tobago",
+ "symbol": "TTD"
+ },
+ "XCD": {
+ "name": "dólar del Caribe Oriental",
+ "symbol": "XCD"
+ },
+ "USD": {
+ "name": "dólar estadounidense",
+ "symbol": "US$"
+ },
+ "FJD": {
+ "name": "dólar fiyiano",
+ "symbol": "FJD"
+ },
+ "GYD": {
+ "name": "dólar guyanés",
+ "symbol": "GYD"
+ },
+ "HKD": {
+ "name": "dólar hongkonés",
+ "symbol": "HKD"
+ },
+ "JMD": {
+ "name": "dólar jamaicano",
+ "symbol": "JMD"
+ },
+ "LRD": {
+ "name": "dólar liberiano",
+ "symbol": "LRD"
+ },
+ "NAD": {
+ "name": "dólar namibio",
+ "symbol": "NAD"
+ },
+ "NZD": {
+ "name": "dólar neozelandés",
+ "symbol": "NZD"
+ },
+ "SBD": {
+ "name": "dólar salomonense",
+ "symbol": "SBD"
+ },
+ "SGD": {
+ "name": "dólar singapurense",
+ "symbol": "SGD"
+ },
+ "SRD": {
+ "name": "dólar surinamés",
+ "symbol": "SRD"
+ },
+ "ZWL": {
+ "name": "dólar zimbabuense",
+ "symbol": "ZWL"
+ },
+ "VND": {
+ "name": "dong",
+ "symbol": "VND"
+ },
+ "AMD": {
+ "name": "dram",
+ "symbol": "AMD"
+ },
+ "CVE": {
+ "name": "escudo de Cabo Verde",
+ "symbol": "CVE"
+ },
+ "PLN": {
+ "name": "esloti",
+ "symbol": "PLN"
+ },
+ "EUR": {
+ "name": "euro",
+ "symbol": "EUR"
+ },
+ "AWG": {
+ "name": "florín arubeño",
+ "symbol": "AWG"
+ },
+ "ANG": {
+ "name": "florín de las Antillas Neerlandesas",
+ "symbol": "ANG"
+ },
+ "HUF": {
+ "name": "forinto",
+ "symbol": "HUF"
+ },
+ "BIF": {
+ "name": "franco burundés",
+ "symbol": "BIF"
+ },
+ "XOF": {
+ "name": "franco CFA BCEAO",
+ "symbol": "XOF"
+ },
+ "XAF": {
+ "name": "franco CFA BEAC",
+ "symbol": "XAF"
+ },
+ "XPF": {
+ "name": "franco CFP",
+ "symbol": "CFPF"
+ },
+ "KMF": {
+ "name": "franco comorense",
+ "symbol": "KMF"
+ },
+ "CDF": {
+ "name": "franco congoleño",
+ "symbol": "CDF"
+ },
+ "GNF": {
+ "name": "franco guineano",
+ "symbol": "GNF"
+ },
+ "RWF": {
+ "name": "franco ruandés",
+ "symbol": "RWF"
+ },
+ "CHF": {
+ "name": "franco suizo",
+ "symbol": "CHF"
+ },
+ "DJF": {
+ "name": "franco yibutiano",
+ "symbol": "DJF"
+ },
+ "HTG": {
+ "name": "gourde haitiano",
+ "symbol": "HTG"
+ },
+ "UAH": {
+ "name": "grivna",
+ "symbol": "UAH"
+ },
+ "PYG": {
+ "name": "guaraní paraguayo",
+ "symbol": "PYG"
+ },
+ "BTN": {
+ "name": "gultrum",
+ "symbol": "BTN"
+ },
+ "MMK": {
+ "name": "kiat",
+ "symbol": "MMK"
+ },
+ "PGK": {
+ "name": "kina",
+ "symbol": "PGK"
+ },
+ "LAK": {
+ "name": "kip",
+ "symbol": "LAK"
+ },
+ "MWK": {
+ "name": "kuacha malauí",
+ "symbol": "MWK"
+ },
+ "ZMW": {
+ "name": "kuacha zambiano",
+ "symbol": "ZMK"
+ },
+ "AOA": {
+ "name": "kuanza",
+ "symbol": "AOA"
+ },
+ "HRK": {
+ "name": "kuna",
+ "symbol": "HRK"
+ },
+ "GEL": {
+ "name": "lari",
+ "symbol": "GEL"
+ },
+ "ALL": {
+ "name": "lek",
+ "symbol": "ALL"
+ },
+ "HNL": {
+ "name": "lempira hondureño",
+ "symbol": "HNL"
+ },
+ "SLL": {
+ "name": "leona",
+ "symbol": "SLL"
+ },
+ "MDL": {
+ "name": "leu moldavo",
+ "symbol": "MDL"
+ },
+ "RON": {
+ "name": "leu rumano",
+ "symbol": "RON"
+ },
+ "BGN": {
+ "name": "leva",
+ "symbol": "BGN"
+ },
+ "FKP": {
+ "name": "libra de las Islas Malvinas",
+ "symbol": "FKP"
+ },
+ "SHP": {
+ "name": "libra de Santa Elena",
+ "symbol": "SHP"
+ },
+ "EGP": {
+ "name": "libra egipcia",
+ "symbol": "EGP"
+ },
+ "GBP": {
+ "name": "libra esterlina",
+ "symbol": "GBP"
+ },
+ "GIP": {
+ "name": "libra gibraltareña",
+ "symbol": "GIP"
+ },
+ "LBP": {
+ "name": "libra libanesa",
+ "symbol": "LBP"
+ },
+ "SYP": {
+ "name": "libra siria",
+ "symbol": "SYP"
+ },
+ "SDG": {
+ "name": "libra sudanesa",
+ "symbol": "SDG"
+ },
+ "SSP": {
+ "name": "libra sursudanesa",
+ "symbol": "SSP"
+ },
+ "SZL": {
+ "name": "lilangeni",
+ "symbol": "SZL"
+ },
+ "TRY": {
+ "name": "lira turca",
+ "symbol": "TRY"
+ },
+ "LTL": {
+ "name": "litas",
+ "symbol": "LTL"
+ },
+ "LSL": {
+ "name": "loti lesothense",
+ "symbol": "LSL"
+ },
+ "AZN": {
+ "name": "manat azerí",
+ "symbol": "AZN"
+ },
+ "TMT": {
+ "name": "manat turcomano",
+ "symbol": "TMT"
+ },
+ "BAM": {
+ "name": "marco convertible de Bosnia-Herzegovina",
+ "symbol": "BAM"
+ },
+ "MZN": {
+ "name": "metical",
+ "symbol": "MZN"
+ },
+ "NGN": {
+ "name": "naira",
+ "symbol": "NGN"
+ },
+ "ERN": {
+ "name": "nakfa",
+ "symbol": "ERN"
+ },
+ "TWD": {
+ "name": "nuevo dólar taiwanés",
+ "symbol": "TWD"
+ },
+ "ILS": {
+ "name": "nuevo sheqel israelí",
+ "symbol": "ILS"
+ },
+ "PEN": {
+ "name": "nuevo sol peruano",
+ "symbol": "PEN"
+ },
+ "TOP": {
+ "name": "paanga",
+ "symbol": "TOP"
+ },
+ "MOP": {
+ "name": "pataca",
+ "symbol": "MOP"
+ },
+ "ARS": {
+ "name": "peso argentino",
+ "symbol": "ARS"
+ },
+ "CLP": {
+ "name": "peso chileno",
+ "symbol": "CLP"
+ },
+ "COP": {
+ "name": "peso colombiano",
+ "symbol": "$"
+ },
+ "CUP": {
+ "name": "peso cubano",
+ "symbol": "CUP"
+ },
+ "CUC": {
+ "name": "peso cubano convertible",
+ "symbol": "CUC"
+ },
+ "DOP": {
+ "name": "peso dominicano",
+ "symbol": "DOP"
+ },
+ "PHP": {
+ "name": "peso filipino",
+ "symbol": "PHP"
+ },
+ "MXN": {
+ "name": "peso mexicano",
+ "symbol": "MXN"
+ },
+ "UYU": {
+ "name": "peso uruguayo",
+ "symbol": "UYU"
+ },
+ "BWP": {
+ "name": "pula",
+ "symbol": "BWP"
+ },
+ "GTQ": {
+ "name": "quetzal guatemalteco",
+ "symbol": "GTQ"
+ },
+ "ZAR": {
+ "name": "rand",
+ "symbol": "ZAR"
+ },
+ "BRL": {
+ "name": "real brasileño",
+ "symbol": "BRL"
+ },
+ "QAR": {
+ "name": "rial catarí",
+ "symbol": "QAR"
+ },
+ "IRR": {
+ "name": "rial iraní",
+ "symbol": "IRR"
+ },
+ "OMR": {
+ "name": "rial omaní",
+ "symbol": "OMR"
+ },
+ "SAR": {
+ "name": "rial saudí",
+ "symbol": "SAR"
+ },
+ "YER": {
+ "name": "rial yemení",
+ "symbol": "YER"
+ },
+ "KHR": {
+ "name": "riel",
+ "symbol": "KHR"
+ },
+ "MYR": {
+ "name": "ringit",
+ "symbol": "MYR"
+ },
+ "BYR": {
+ "name": "rublo bielorruso",
+ "symbol": "BYR"
+ },
+ "RUB": {
+ "name": "rublo ruso",
+ "symbol": "RUB"
+ },
+ "MVR": {
+ "name": "rufiya",
+ "symbol": "MVR"
+ },
+ "LKR": {
+ "name": "rupia esrilanquesa",
+ "symbol": "LKR"
+ },
+ "INR": {
+ "name": "rupia india",
+ "symbol": "INR"
+ },
+ "IDR": {
+ "name": "rupia indonesia",
+ "symbol": "IDR"
+ },
+ "MUR": {
+ "name": "rupia mauriciana",
+ "symbol": "MUR"
+ },
+ "NPR": {
+ "name": "rupia nepalí",
+ "symbol": "NPR"
+ },
+ "PKR": {
+ "name": "rupia pakistaní",
+ "symbol": "PKR"
+ },
+ "SCR": {
+ "name": "rupia seychellense",
+ "symbol": "SCR"
+ },
+ "KGS": {
+ "name": "som",
+ "symbol": "KGS"
+ },
+ "TJS": {
+ "name": "somoni tayiko",
+ "symbol": "TJS"
+ },
+ "UZS": {
+ "name": "sum",
+ "symbol": "UZS"
+ },
+ "BDT": {
+ "name": "taka",
+ "symbol": "BDT"
+ },
+ "WST": {
+ "name": "tala",
+ "symbol": "WST"
+ },
+ "KZT": {
+ "name": "tenge kazako",
+ "symbol": "KZT"
+ },
+ "MNT": {
+ "name": "tugrik",
+ "symbol": "MNT"
+ },
+ "MRO": {
+ "name": "uguiya",
+ "symbol": "MRO"
+ },
+ "VUV": {
+ "name": "vatu",
+ "symbol": "VUV"
+ },
+ "KPW": {
+ "name": "won norcoreano",
+ "symbol": "KPW"
+ },
+ "KRW": {
+ "name": "won surcoreano",
+ "symbol": "KRW"
+ },
+ "JPY": {
+ "name": "yen",
+ "symbol": "JPY"
+ },
+ "CNY": {
+ "name": "yuan",
+ "symbol": "CNY"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/currency/es-CR.json b/library/intl/resources/currency/es-CR.json
new file mode 100644
index 000000000..0f49bb020
--- /dev/null
+++ b/library/intl/resources/currency/es-CR.json
@@ -0,0 +1,634 @@
+{
+ "AFN": {
+ "name": "afgani",
+ "symbol": "AFN"
+ },
+ "MGA": {
+ "name": "ariari",
+ "symbol": "MGA"
+ },
+ "PAB": {
+ "name": "balboa panameño",
+ "symbol": "PAB"
+ },
+ "THB": {
+ "name": "bat",
+ "symbol": "THB"
+ },
+ "ETB": {
+ "name": "bir",
+ "symbol": "ETB"
+ },
+ "VEF": {
+ "name": "bolívar venezolano",
+ "symbol": "VEF"
+ },
+ "BOB": {
+ "name": "boliviano",
+ "symbol": "BOB"
+ },
+ "GHS": {
+ "name": "cedi",
+ "symbol": "GHS"
+ },
+ "KES": {
+ "name": "chelín keniano",
+ "symbol": "KES"
+ },
+ "SOS": {
+ "name": "chelín somalí",
+ "symbol": "SOS"
+ },
+ "TZS": {
+ "name": "chelín tanzano",
+ "symbol": "TZS"
+ },
+ "UGX": {
+ "name": "chelín ugandés",
+ "symbol": "UGX"
+ },
+ "CRC": {
+ "name": "colón costarricense",
+ "symbol": "â‚¡"
+ },
+ "SVC": {
+ "name": "colón salvadoreño",
+ "symbol": "SVC"
+ },
+ "NIO": {
+ "name": "córdoba nicaragüense",
+ "symbol": "NIO"
+ },
+ "CZK": {
+ "name": "corona checa",
+ "symbol": "CZK"
+ },
+ "DKK": {
+ "name": "corona danesa",
+ "symbol": "DKK"
+ },
+ "ISK": {
+ "name": "corona islandesa",
+ "symbol": "ISK"
+ },
+ "NOK": {
+ "name": "corona noruega",
+ "symbol": "NOK"
+ },
+ "SEK": {
+ "name": "corona sueca",
+ "symbol": "SEK"
+ },
+ "GMD": {
+ "name": "dalasi",
+ "symbol": "GMD"
+ },
+ "DZD": {
+ "name": "dinar argelino",
+ "symbol": "DZD"
+ },
+ "BHD": {
+ "name": "dinar bahreiní",
+ "symbol": "BHD"
+ },
+ "IQD": {
+ "name": "dinar iraquí",
+ "symbol": "IQD"
+ },
+ "JOD": {
+ "name": "dinar jordano",
+ "symbol": "JOD"
+ },
+ "KWD": {
+ "name": "dinar kuwaití",
+ "symbol": "KWD"
+ },
+ "LYD": {
+ "name": "dinar libio",
+ "symbol": "LYD"
+ },
+ "MKD": {
+ "name": "dinar macedonio",
+ "symbol": "MKD"
+ },
+ "RSD": {
+ "name": "dinar serbio",
+ "symbol": "RSD"
+ },
+ "TND": {
+ "name": "dinar tunecino",
+ "symbol": "TND"
+ },
+ "AED": {
+ "name": "dírham de los Emiratos Ãrabes Unidos",
+ "symbol": "AED"
+ },
+ "MAD": {
+ "name": "dírham marroquí",
+ "symbol": "MAD"
+ },
+ "STD": {
+ "name": "dobra",
+ "symbol": "STD"
+ },
+ "AUD": {
+ "name": "dólar australiano",
+ "symbol": "AUD"
+ },
+ "BSD": {
+ "name": "dólar bahameño",
+ "symbol": "BSD"
+ },
+ "BBD": {
+ "name": "dólar barbadense",
+ "symbol": "BBD"
+ },
+ "BZD": {
+ "name": "dólar beliceño",
+ "symbol": "BZD"
+ },
+ "BND": {
+ "name": "dólar bruneano",
+ "symbol": "BND"
+ },
+ "CAD": {
+ "name": "dólar canadiense",
+ "symbol": "CAD"
+ },
+ "BMD": {
+ "name": "dólar de Bermudas",
+ "symbol": "BMD"
+ },
+ "KYD": {
+ "name": "dólar de las Islas Caimán",
+ "symbol": "KYD"
+ },
+ "TTD": {
+ "name": "dólar de Trinidad y Tobago",
+ "symbol": "TTD"
+ },
+ "XCD": {
+ "name": "dólar del Caribe Oriental",
+ "symbol": "XCD"
+ },
+ "USD": {
+ "name": "dólar estadounidense",
+ "symbol": "USD"
+ },
+ "FJD": {
+ "name": "dólar fiyiano",
+ "symbol": "FJD"
+ },
+ "GYD": {
+ "name": "dólar guyanés",
+ "symbol": "GYD"
+ },
+ "HKD": {
+ "name": "dólar hongkonés",
+ "symbol": "HKD"
+ },
+ "JMD": {
+ "name": "dólar jamaicano",
+ "symbol": "JMD"
+ },
+ "LRD": {
+ "name": "dólar liberiano",
+ "symbol": "LRD"
+ },
+ "NAD": {
+ "name": "dólar namibio",
+ "symbol": "NAD"
+ },
+ "NZD": {
+ "name": "dólar neozelandés",
+ "symbol": "NZD"
+ },
+ "SBD": {
+ "name": "dólar salomonense",
+ "symbol": "SBD"
+ },
+ "SGD": {
+ "name": "dólar singapurense",
+ "symbol": "SGD"
+ },
+ "SRD": {
+ "name": "dólar surinamés",
+ "symbol": "SRD"
+ },
+ "ZWL": {
+ "name": "dólar zimbabuense",
+ "symbol": "ZWL"
+ },
+ "VND": {
+ "name": "dong",
+ "symbol": "VND"
+ },
+ "AMD": {
+ "name": "dram",
+ "symbol": "AMD"
+ },
+ "CVE": {
+ "name": "escudo de Cabo Verde",
+ "symbol": "CVE"
+ },
+ "PLN": {
+ "name": "esloti",
+ "symbol": "PLN"
+ },
+ "EUR": {
+ "name": "euro",
+ "symbol": "EUR"
+ },
+ "AWG": {
+ "name": "florín arubeño",
+ "symbol": "AWG"
+ },
+ "ANG": {
+ "name": "florín de las Antillas Neerlandesas",
+ "symbol": "ANG"
+ },
+ "HUF": {
+ "name": "forinto",
+ "symbol": "HUF"
+ },
+ "BIF": {
+ "name": "franco burundés",
+ "symbol": "BIF"
+ },
+ "XOF": {
+ "name": "franco CFA BCEAO",
+ "symbol": "XOF"
+ },
+ "XAF": {
+ "name": "franco CFA BEAC",
+ "symbol": "XAF"
+ },
+ "XPF": {
+ "name": "franco CFP",
+ "symbol": "CFPF"
+ },
+ "KMF": {
+ "name": "franco comorense",
+ "symbol": "KMF"
+ },
+ "CDF": {
+ "name": "franco congoleño",
+ "symbol": "CDF"
+ },
+ "GNF": {
+ "name": "franco guineano",
+ "symbol": "GNF"
+ },
+ "RWF": {
+ "name": "franco ruandés",
+ "symbol": "RWF"
+ },
+ "CHF": {
+ "name": "franco suizo",
+ "symbol": "CHF"
+ },
+ "DJF": {
+ "name": "franco yibutiano",
+ "symbol": "DJF"
+ },
+ "HTG": {
+ "name": "gourde haitiano",
+ "symbol": "HTG"
+ },
+ "UAH": {
+ "name": "grivna",
+ "symbol": "UAH"
+ },
+ "PYG": {
+ "name": "guaraní paraguayo",
+ "symbol": "PYG"
+ },
+ "BTN": {
+ "name": "gultrum",
+ "symbol": "BTN"
+ },
+ "MMK": {
+ "name": "kiat",
+ "symbol": "MMK"
+ },
+ "PGK": {
+ "name": "kina",
+ "symbol": "PGK"
+ },
+ "LAK": {
+ "name": "kip",
+ "symbol": "LAK"
+ },
+ "MWK": {
+ "name": "kuacha malauí",
+ "symbol": "MWK"
+ },
+ "ZMW": {
+ "name": "kuacha zambiano",
+ "symbol": "ZMK"
+ },
+ "AOA": {
+ "name": "kuanza",
+ "symbol": "AOA"
+ },
+ "HRK": {
+ "name": "kuna",
+ "symbol": "HRK"
+ },
+ "GEL": {
+ "name": "lari",
+ "symbol": "GEL"
+ },
+ "ALL": {
+ "name": "lek",
+ "symbol": "ALL"
+ },
+ "HNL": {
+ "name": "lempira hondureño",
+ "symbol": "HNL"
+ },
+ "SLL": {
+ "name": "leona",
+ "symbol": "SLL"
+ },
+ "MDL": {
+ "name": "leu moldavo",
+ "symbol": "MDL"
+ },
+ "RON": {
+ "name": "leu rumano",
+ "symbol": "RON"
+ },
+ "BGN": {
+ "name": "leva",
+ "symbol": "BGN"
+ },
+ "FKP": {
+ "name": "libra de las Islas Malvinas",
+ "symbol": "FKP"
+ },
+ "SHP": {
+ "name": "libra de Santa Elena",
+ "symbol": "SHP"
+ },
+ "EGP": {
+ "name": "libra egipcia",
+ "symbol": "EGP"
+ },
+ "GBP": {
+ "name": "libra esterlina",
+ "symbol": "GBP"
+ },
+ "GIP": {
+ "name": "libra gibraltareña",
+ "symbol": "GIP"
+ },
+ "LBP": {
+ "name": "libra libanesa",
+ "symbol": "LBP"
+ },
+ "SYP": {
+ "name": "libra siria",
+ "symbol": "SYP"
+ },
+ "SDG": {
+ "name": "libra sudanesa",
+ "symbol": "SDG"
+ },
+ "SSP": {
+ "name": "libra sursudanesa",
+ "symbol": "SSP"
+ },
+ "SZL": {
+ "name": "lilangeni",
+ "symbol": "SZL"
+ },
+ "TRY": {
+ "name": "lira turca",
+ "symbol": "TRY"
+ },
+ "LTL": {
+ "name": "litas",
+ "symbol": "LTL"
+ },
+ "LSL": {
+ "name": "loti lesothense",
+ "symbol": "LSL"
+ },
+ "AZN": {
+ "name": "manat azerí",
+ "symbol": "AZN"
+ },
+ "TMT": {
+ "name": "manat turcomano",
+ "symbol": "TMT"
+ },
+ "BAM": {
+ "name": "marco convertible de Bosnia-Herzegovina",
+ "symbol": "BAM"
+ },
+ "MZN": {
+ "name": "metical",
+ "symbol": "MZN"
+ },
+ "NGN": {
+ "name": "naira",
+ "symbol": "NGN"
+ },
+ "ERN": {
+ "name": "nakfa",
+ "symbol": "ERN"
+ },
+ "TWD": {
+ "name": "nuevo dólar taiwanés",
+ "symbol": "TWD"
+ },
+ "ILS": {
+ "name": "nuevo sheqel israelí",
+ "symbol": "ILS"
+ },
+ "PEN": {
+ "name": "nuevo sol peruano",
+ "symbol": "PEN"
+ },
+ "TOP": {
+ "name": "paanga",
+ "symbol": "TOP"
+ },
+ "MOP": {
+ "name": "pataca",
+ "symbol": "MOP"
+ },
+ "ARS": {
+ "name": "peso argentino",
+ "symbol": "ARS"
+ },
+ "CLP": {
+ "name": "peso chileno",
+ "symbol": "CLP"
+ },
+ "COP": {
+ "name": "peso colombiano",
+ "symbol": "COP"
+ },
+ "CUP": {
+ "name": "peso cubano",
+ "symbol": "CUP"
+ },
+ "CUC": {
+ "name": "peso cubano convertible",
+ "symbol": "CUC"
+ },
+ "DOP": {
+ "name": "peso dominicano",
+ "symbol": "DOP"
+ },
+ "PHP": {
+ "name": "peso filipino",
+ "symbol": "PHP"
+ },
+ "MXN": {
+ "name": "peso mexicano",
+ "symbol": "MXN"
+ },
+ "UYU": {
+ "name": "peso uruguayo",
+ "symbol": "UYU"
+ },
+ "BWP": {
+ "name": "pula",
+ "symbol": "BWP"
+ },
+ "GTQ": {
+ "name": "quetzal guatemalteco",
+ "symbol": "GTQ"
+ },
+ "ZAR": {
+ "name": "rand",
+ "symbol": "ZAR"
+ },
+ "BRL": {
+ "name": "real brasileño",
+ "symbol": "BRL"
+ },
+ "QAR": {
+ "name": "rial catarí",
+ "symbol": "QAR"
+ },
+ "IRR": {
+ "name": "rial iraní",
+ "symbol": "IRR"
+ },
+ "OMR": {
+ "name": "rial omaní",
+ "symbol": "OMR"
+ },
+ "SAR": {
+ "name": "rial saudí",
+ "symbol": "SAR"
+ },
+ "YER": {
+ "name": "rial yemení",
+ "symbol": "YER"
+ },
+ "KHR": {
+ "name": "riel",
+ "symbol": "KHR"
+ },
+ "MYR": {
+ "name": "ringit",
+ "symbol": "MYR"
+ },
+ "BYR": {
+ "name": "rublo bielorruso",
+ "symbol": "BYR"
+ },
+ "RUB": {
+ "name": "rublo ruso",
+ "symbol": "RUB"
+ },
+ "MVR": {
+ "name": "rufiya",
+ "symbol": "MVR"
+ },
+ "LKR": {
+ "name": "rupia esrilanquesa",
+ "symbol": "LKR"
+ },
+ "INR": {
+ "name": "rupia india",
+ "symbol": "INR"
+ },
+ "IDR": {
+ "name": "rupia indonesia",
+ "symbol": "IDR"
+ },
+ "MUR": {
+ "name": "rupia mauriciana",
+ "symbol": "MUR"
+ },
+ "NPR": {
+ "name": "rupia nepalí",
+ "symbol": "NPR"
+ },
+ "PKR": {
+ "name": "rupia pakistaní",
+ "symbol": "PKR"
+ },
+ "SCR": {
+ "name": "rupia seychellense",
+ "symbol": "SCR"
+ },
+ "KGS": {
+ "name": "som",
+ "symbol": "KGS"
+ },
+ "TJS": {
+ "name": "somoni tayiko",
+ "symbol": "TJS"
+ },
+ "UZS": {
+ "name": "sum",
+ "symbol": "UZS"
+ },
+ "BDT": {
+ "name": "taka",
+ "symbol": "BDT"
+ },
+ "WST": {
+ "name": "tala",
+ "symbol": "WST"
+ },
+ "KZT": {
+ "name": "tenge kazako",
+ "symbol": "KZT"
+ },
+ "MNT": {
+ "name": "tugrik",
+ "symbol": "MNT"
+ },
+ "MRO": {
+ "name": "uguiya",
+ "symbol": "MRO"
+ },
+ "VUV": {
+ "name": "vatu",
+ "symbol": "VUV"
+ },
+ "KPW": {
+ "name": "won norcoreano",
+ "symbol": "KPW"
+ },
+ "KRW": {
+ "name": "won surcoreano",
+ "symbol": "KRW"
+ },
+ "JPY": {
+ "name": "yen",
+ "symbol": "JPY"
+ },
+ "CNY": {
+ "name": "yuan",
+ "symbol": "CNY"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/currency/es-CU.json b/library/intl/resources/currency/es-CU.json
new file mode 100644
index 000000000..e5b0bbe16
--- /dev/null
+++ b/library/intl/resources/currency/es-CU.json
@@ -0,0 +1,634 @@
+{
+ "AFN": {
+ "name": "afgani",
+ "symbol": "AFN"
+ },
+ "MGA": {
+ "name": "ariari",
+ "symbol": "MGA"
+ },
+ "PAB": {
+ "name": "balboa panameño",
+ "symbol": "PAB"
+ },
+ "THB": {
+ "name": "bat",
+ "symbol": "THB"
+ },
+ "ETB": {
+ "name": "bir",
+ "symbol": "ETB"
+ },
+ "VEF": {
+ "name": "bolívar venezolano",
+ "symbol": "VEF"
+ },
+ "BOB": {
+ "name": "boliviano",
+ "symbol": "BOB"
+ },
+ "GHS": {
+ "name": "cedi",
+ "symbol": "GHS"
+ },
+ "KES": {
+ "name": "chelín keniano",
+ "symbol": "KES"
+ },
+ "SOS": {
+ "name": "chelín somalí",
+ "symbol": "SOS"
+ },
+ "TZS": {
+ "name": "chelín tanzano",
+ "symbol": "TZS"
+ },
+ "UGX": {
+ "name": "chelín ugandés",
+ "symbol": "UGX"
+ },
+ "CRC": {
+ "name": "colón costarricense",
+ "symbol": "CRC"
+ },
+ "SVC": {
+ "name": "colón salvadoreño",
+ "symbol": "SVC"
+ },
+ "NIO": {
+ "name": "córdoba nicaragüense",
+ "symbol": "NIO"
+ },
+ "CZK": {
+ "name": "corona checa",
+ "symbol": "CZK"
+ },
+ "DKK": {
+ "name": "corona danesa",
+ "symbol": "DKK"
+ },
+ "ISK": {
+ "name": "corona islandesa",
+ "symbol": "ISK"
+ },
+ "NOK": {
+ "name": "corona noruega",
+ "symbol": "NOK"
+ },
+ "SEK": {
+ "name": "corona sueca",
+ "symbol": "SEK"
+ },
+ "GMD": {
+ "name": "dalasi",
+ "symbol": "GMD"
+ },
+ "DZD": {
+ "name": "dinar argelino",
+ "symbol": "DZD"
+ },
+ "BHD": {
+ "name": "dinar bahreiní",
+ "symbol": "BHD"
+ },
+ "IQD": {
+ "name": "dinar iraquí",
+ "symbol": "IQD"
+ },
+ "JOD": {
+ "name": "dinar jordano",
+ "symbol": "JOD"
+ },
+ "KWD": {
+ "name": "dinar kuwaití",
+ "symbol": "KWD"
+ },
+ "LYD": {
+ "name": "dinar libio",
+ "symbol": "LYD"
+ },
+ "MKD": {
+ "name": "dinar macedonio",
+ "symbol": "MKD"
+ },
+ "RSD": {
+ "name": "dinar serbio",
+ "symbol": "RSD"
+ },
+ "TND": {
+ "name": "dinar tunecino",
+ "symbol": "TND"
+ },
+ "AED": {
+ "name": "dírham de los Emiratos Ãrabes Unidos",
+ "symbol": "AED"
+ },
+ "MAD": {
+ "name": "dírham marroquí",
+ "symbol": "MAD"
+ },
+ "STD": {
+ "name": "dobra",
+ "symbol": "STD"
+ },
+ "AUD": {
+ "name": "dólar australiano",
+ "symbol": "AUD"
+ },
+ "BSD": {
+ "name": "dólar bahameño",
+ "symbol": "BSD"
+ },
+ "BBD": {
+ "name": "dólar barbadense",
+ "symbol": "BBD"
+ },
+ "BZD": {
+ "name": "dólar beliceño",
+ "symbol": "BZD"
+ },
+ "BND": {
+ "name": "dólar bruneano",
+ "symbol": "BND"
+ },
+ "CAD": {
+ "name": "dólar canadiense",
+ "symbol": "CAD"
+ },
+ "BMD": {
+ "name": "dólar de Bermudas",
+ "symbol": "BMD"
+ },
+ "KYD": {
+ "name": "dólar de las Islas Caimán",
+ "symbol": "KYD"
+ },
+ "TTD": {
+ "name": "dólar de Trinidad y Tobago",
+ "symbol": "TTD"
+ },
+ "XCD": {
+ "name": "dólar del Caribe Oriental",
+ "symbol": "XCD"
+ },
+ "USD": {
+ "name": "dólar estadounidense",
+ "symbol": "US$"
+ },
+ "FJD": {
+ "name": "dólar fiyiano",
+ "symbol": "FJD"
+ },
+ "GYD": {
+ "name": "dólar guyanés",
+ "symbol": "GYD"
+ },
+ "HKD": {
+ "name": "dólar hongkonés",
+ "symbol": "HKD"
+ },
+ "JMD": {
+ "name": "dólar jamaicano",
+ "symbol": "JMD"
+ },
+ "LRD": {
+ "name": "dólar liberiano",
+ "symbol": "LRD"
+ },
+ "NAD": {
+ "name": "dólar namibio",
+ "symbol": "NAD"
+ },
+ "NZD": {
+ "name": "dólar neozelandés",
+ "symbol": "NZD"
+ },
+ "SBD": {
+ "name": "dólar salomonense",
+ "symbol": "SBD"
+ },
+ "SGD": {
+ "name": "dólar singapurense",
+ "symbol": "SGD"
+ },
+ "SRD": {
+ "name": "dólar surinamés",
+ "symbol": "SRD"
+ },
+ "ZWL": {
+ "name": "dólar zimbabuense",
+ "symbol": "ZWL"
+ },
+ "VND": {
+ "name": "dong",
+ "symbol": "VND"
+ },
+ "AMD": {
+ "name": "dram",
+ "symbol": "AMD"
+ },
+ "CVE": {
+ "name": "escudo de Cabo Verde",
+ "symbol": "CVE"
+ },
+ "PLN": {
+ "name": "esloti",
+ "symbol": "PLN"
+ },
+ "EUR": {
+ "name": "euro",
+ "symbol": "EUR"
+ },
+ "AWG": {
+ "name": "florín arubeño",
+ "symbol": "AWG"
+ },
+ "ANG": {
+ "name": "florín de las Antillas Neerlandesas",
+ "symbol": "ANG"
+ },
+ "HUF": {
+ "name": "forinto",
+ "symbol": "HUF"
+ },
+ "BIF": {
+ "name": "franco burundés",
+ "symbol": "BIF"
+ },
+ "XOF": {
+ "name": "franco CFA BCEAO",
+ "symbol": "XOF"
+ },
+ "XAF": {
+ "name": "franco CFA BEAC",
+ "symbol": "XAF"
+ },
+ "XPF": {
+ "name": "franco CFP",
+ "symbol": "CFPF"
+ },
+ "KMF": {
+ "name": "franco comorense",
+ "symbol": "KMF"
+ },
+ "CDF": {
+ "name": "franco congoleño",
+ "symbol": "CDF"
+ },
+ "GNF": {
+ "name": "franco guineano",
+ "symbol": "GNF"
+ },
+ "RWF": {
+ "name": "franco ruandés",
+ "symbol": "RWF"
+ },
+ "CHF": {
+ "name": "franco suizo",
+ "symbol": "CHF"
+ },
+ "DJF": {
+ "name": "franco yibutiano",
+ "symbol": "DJF"
+ },
+ "HTG": {
+ "name": "gourde haitiano",
+ "symbol": "HTG"
+ },
+ "UAH": {
+ "name": "grivna",
+ "symbol": "UAH"
+ },
+ "PYG": {
+ "name": "guaraní paraguayo",
+ "symbol": "PYG"
+ },
+ "BTN": {
+ "name": "gultrum",
+ "symbol": "BTN"
+ },
+ "MMK": {
+ "name": "kiat",
+ "symbol": "MMK"
+ },
+ "PGK": {
+ "name": "kina",
+ "symbol": "PGK"
+ },
+ "LAK": {
+ "name": "kip",
+ "symbol": "LAK"
+ },
+ "MWK": {
+ "name": "kuacha malauí",
+ "symbol": "MWK"
+ },
+ "ZMW": {
+ "name": "kuacha zambiano",
+ "symbol": "ZMK"
+ },
+ "AOA": {
+ "name": "kuanza",
+ "symbol": "AOA"
+ },
+ "HRK": {
+ "name": "kuna",
+ "symbol": "HRK"
+ },
+ "GEL": {
+ "name": "lari",
+ "symbol": "GEL"
+ },
+ "ALL": {
+ "name": "lek",
+ "symbol": "ALL"
+ },
+ "HNL": {
+ "name": "lempira hondureño",
+ "symbol": "HNL"
+ },
+ "SLL": {
+ "name": "leona",
+ "symbol": "SLL"
+ },
+ "MDL": {
+ "name": "leu moldavo",
+ "symbol": "MDL"
+ },
+ "RON": {
+ "name": "leu rumano",
+ "symbol": "RON"
+ },
+ "BGN": {
+ "name": "leva",
+ "symbol": "BGN"
+ },
+ "FKP": {
+ "name": "libra de las Islas Malvinas",
+ "symbol": "FKP"
+ },
+ "SHP": {
+ "name": "libra de Santa Elena",
+ "symbol": "SHP"
+ },
+ "EGP": {
+ "name": "libra egipcia",
+ "symbol": "EGP"
+ },
+ "GBP": {
+ "name": "libra esterlina",
+ "symbol": "GBP"
+ },
+ "GIP": {
+ "name": "libra gibraltareña",
+ "symbol": "GIP"
+ },
+ "LBP": {
+ "name": "libra libanesa",
+ "symbol": "LBP"
+ },
+ "SYP": {
+ "name": "libra siria",
+ "symbol": "SYP"
+ },
+ "SDG": {
+ "name": "libra sudanesa",
+ "symbol": "SDG"
+ },
+ "SSP": {
+ "name": "libra sursudanesa",
+ "symbol": "SSP"
+ },
+ "SZL": {
+ "name": "lilangeni",
+ "symbol": "SZL"
+ },
+ "TRY": {
+ "name": "lira turca",
+ "symbol": "TRY"
+ },
+ "LTL": {
+ "name": "litas",
+ "symbol": "LTL"
+ },
+ "LSL": {
+ "name": "loti lesothense",
+ "symbol": "LSL"
+ },
+ "AZN": {
+ "name": "manat azerí",
+ "symbol": "AZN"
+ },
+ "TMT": {
+ "name": "manat turcomano",
+ "symbol": "TMT"
+ },
+ "BAM": {
+ "name": "marco convertible de Bosnia-Herzegovina",
+ "symbol": "BAM"
+ },
+ "MZN": {
+ "name": "metical",
+ "symbol": "MZN"
+ },
+ "NGN": {
+ "name": "naira",
+ "symbol": "NGN"
+ },
+ "ERN": {
+ "name": "nakfa",
+ "symbol": "ERN"
+ },
+ "TWD": {
+ "name": "nuevo dólar taiwanés",
+ "symbol": "TWD"
+ },
+ "ILS": {
+ "name": "nuevo sheqel israelí",
+ "symbol": "ILS"
+ },
+ "PEN": {
+ "name": "nuevo sol peruano",
+ "symbol": "PEN"
+ },
+ "TOP": {
+ "name": "paanga",
+ "symbol": "TOP"
+ },
+ "MOP": {
+ "name": "pataca",
+ "symbol": "MOP"
+ },
+ "ARS": {
+ "name": "peso argentino",
+ "symbol": "ARS"
+ },
+ "CLP": {
+ "name": "peso chileno",
+ "symbol": "CLP"
+ },
+ "COP": {
+ "name": "peso colombiano",
+ "symbol": "COP"
+ },
+ "CUP": {
+ "name": "peso cubano",
+ "symbol": "$"
+ },
+ "CUC": {
+ "name": "peso cubano convertible",
+ "symbol": "CUC"
+ },
+ "DOP": {
+ "name": "peso dominicano",
+ "symbol": "DOP"
+ },
+ "PHP": {
+ "name": "peso filipino",
+ "symbol": "PHP"
+ },
+ "MXN": {
+ "name": "peso mexicano",
+ "symbol": "MXN"
+ },
+ "UYU": {
+ "name": "peso uruguayo",
+ "symbol": "UYU"
+ },
+ "BWP": {
+ "name": "pula",
+ "symbol": "BWP"
+ },
+ "GTQ": {
+ "name": "quetzal guatemalteco",
+ "symbol": "GTQ"
+ },
+ "ZAR": {
+ "name": "rand",
+ "symbol": "ZAR"
+ },
+ "BRL": {
+ "name": "real brasileño",
+ "symbol": "BRL"
+ },
+ "QAR": {
+ "name": "rial catarí",
+ "symbol": "QAR"
+ },
+ "IRR": {
+ "name": "rial iraní",
+ "symbol": "IRR"
+ },
+ "OMR": {
+ "name": "rial omaní",
+ "symbol": "OMR"
+ },
+ "SAR": {
+ "name": "rial saudí",
+ "symbol": "SAR"
+ },
+ "YER": {
+ "name": "rial yemení",
+ "symbol": "YER"
+ },
+ "KHR": {
+ "name": "riel",
+ "symbol": "KHR"
+ },
+ "MYR": {
+ "name": "ringit",
+ "symbol": "MYR"
+ },
+ "BYR": {
+ "name": "rublo bielorruso",
+ "symbol": "BYR"
+ },
+ "RUB": {
+ "name": "rublo ruso",
+ "symbol": "RUB"
+ },
+ "MVR": {
+ "name": "rufiya",
+ "symbol": "MVR"
+ },
+ "LKR": {
+ "name": "rupia esrilanquesa",
+ "symbol": "LKR"
+ },
+ "INR": {
+ "name": "rupia india",
+ "symbol": "INR"
+ },
+ "IDR": {
+ "name": "rupia indonesia",
+ "symbol": "IDR"
+ },
+ "MUR": {
+ "name": "rupia mauriciana",
+ "symbol": "MUR"
+ },
+ "NPR": {
+ "name": "rupia nepalí",
+ "symbol": "NPR"
+ },
+ "PKR": {
+ "name": "rupia pakistaní",
+ "symbol": "PKR"
+ },
+ "SCR": {
+ "name": "rupia seychellense",
+ "symbol": "SCR"
+ },
+ "KGS": {
+ "name": "som",
+ "symbol": "KGS"
+ },
+ "TJS": {
+ "name": "somoni tayiko",
+ "symbol": "TJS"
+ },
+ "UZS": {
+ "name": "sum",
+ "symbol": "UZS"
+ },
+ "BDT": {
+ "name": "taka",
+ "symbol": "BDT"
+ },
+ "WST": {
+ "name": "tala",
+ "symbol": "WST"
+ },
+ "KZT": {
+ "name": "tenge kazako",
+ "symbol": "KZT"
+ },
+ "MNT": {
+ "name": "tugrik",
+ "symbol": "MNT"
+ },
+ "MRO": {
+ "name": "uguiya",
+ "symbol": "MRO"
+ },
+ "VUV": {
+ "name": "vatu",
+ "symbol": "VUV"
+ },
+ "KPW": {
+ "name": "won norcoreano",
+ "symbol": "KPW"
+ },
+ "KRW": {
+ "name": "won surcoreano",
+ "symbol": "KRW"
+ },
+ "JPY": {
+ "name": "yen",
+ "symbol": "JPY"
+ },
+ "CNY": {
+ "name": "yuan",
+ "symbol": "CNY"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/currency/es-DO.json b/library/intl/resources/currency/es-DO.json
new file mode 100644
index 000000000..a7dacfdcc
--- /dev/null
+++ b/library/intl/resources/currency/es-DO.json
@@ -0,0 +1,634 @@
+{
+ "AFN": {
+ "name": "afgani",
+ "symbol": "AFN"
+ },
+ "MGA": {
+ "name": "ariari",
+ "symbol": "MGA"
+ },
+ "PAB": {
+ "name": "balboa panameño",
+ "symbol": "PAB"
+ },
+ "THB": {
+ "name": "bat",
+ "symbol": "THB"
+ },
+ "ETB": {
+ "name": "bir",
+ "symbol": "ETB"
+ },
+ "VEF": {
+ "name": "bolívar venezolano",
+ "symbol": "VEF"
+ },
+ "BOB": {
+ "name": "boliviano",
+ "symbol": "BOB"
+ },
+ "GHS": {
+ "name": "cedi",
+ "symbol": "GHS"
+ },
+ "KES": {
+ "name": "chelín keniano",
+ "symbol": "KES"
+ },
+ "SOS": {
+ "name": "chelín somalí",
+ "symbol": "SOS"
+ },
+ "TZS": {
+ "name": "chelín tanzano",
+ "symbol": "TZS"
+ },
+ "UGX": {
+ "name": "chelín ugandés",
+ "symbol": "UGX"
+ },
+ "CRC": {
+ "name": "colón costarricense",
+ "symbol": "CRC"
+ },
+ "SVC": {
+ "name": "colón salvadoreño",
+ "symbol": "SVC"
+ },
+ "NIO": {
+ "name": "córdoba nicaragüense",
+ "symbol": "NIO"
+ },
+ "CZK": {
+ "name": "corona checa",
+ "symbol": "CZK"
+ },
+ "DKK": {
+ "name": "corona danesa",
+ "symbol": "DKK"
+ },
+ "ISK": {
+ "name": "corona islandesa",
+ "symbol": "ISK"
+ },
+ "NOK": {
+ "name": "corona noruega",
+ "symbol": "NOK"
+ },
+ "SEK": {
+ "name": "corona sueca",
+ "symbol": "SEK"
+ },
+ "GMD": {
+ "name": "dalasi",
+ "symbol": "GMD"
+ },
+ "DZD": {
+ "name": "dinar argelino",
+ "symbol": "DZD"
+ },
+ "BHD": {
+ "name": "dinar bahreiní",
+ "symbol": "BHD"
+ },
+ "IQD": {
+ "name": "dinar iraquí",
+ "symbol": "IQD"
+ },
+ "JOD": {
+ "name": "dinar jordano",
+ "symbol": "JOD"
+ },
+ "KWD": {
+ "name": "dinar kuwaití",
+ "symbol": "KWD"
+ },
+ "LYD": {
+ "name": "dinar libio",
+ "symbol": "LYD"
+ },
+ "MKD": {
+ "name": "dinar macedonio",
+ "symbol": "MKD"
+ },
+ "RSD": {
+ "name": "dinar serbio",
+ "symbol": "RSD"
+ },
+ "TND": {
+ "name": "dinar tunecino",
+ "symbol": "TND"
+ },
+ "AED": {
+ "name": "dírham de los Emiratos Ãrabes Unidos",
+ "symbol": "AED"
+ },
+ "MAD": {
+ "name": "dírham marroquí",
+ "symbol": "MAD"
+ },
+ "STD": {
+ "name": "dobra",
+ "symbol": "STD"
+ },
+ "AUD": {
+ "name": "dólar australiano",
+ "symbol": "AUD"
+ },
+ "BSD": {
+ "name": "dólar bahameño",
+ "symbol": "BSD"
+ },
+ "BBD": {
+ "name": "dólar barbadense",
+ "symbol": "BBD"
+ },
+ "BZD": {
+ "name": "dólar beliceño",
+ "symbol": "BZD"
+ },
+ "BND": {
+ "name": "dólar bruneano",
+ "symbol": "BND"
+ },
+ "CAD": {
+ "name": "dólar canadiense",
+ "symbol": "CAD"
+ },
+ "BMD": {
+ "name": "dólar de Bermudas",
+ "symbol": "BMD"
+ },
+ "KYD": {
+ "name": "dólar de las Islas Caimán",
+ "symbol": "KYD"
+ },
+ "TTD": {
+ "name": "dólar de Trinidad y Tobago",
+ "symbol": "TTD"
+ },
+ "XCD": {
+ "name": "dólar del Caribe Oriental",
+ "symbol": "XCD"
+ },
+ "USD": {
+ "name": "dólar estadounidense",
+ "symbol": "US$"
+ },
+ "FJD": {
+ "name": "dólar fiyiano",
+ "symbol": "FJD"
+ },
+ "GYD": {
+ "name": "dólar guyanés",
+ "symbol": "GYD"
+ },
+ "HKD": {
+ "name": "dólar hongkonés",
+ "symbol": "HKD"
+ },
+ "JMD": {
+ "name": "dólar jamaicano",
+ "symbol": "JMD"
+ },
+ "LRD": {
+ "name": "dólar liberiano",
+ "symbol": "LRD"
+ },
+ "NAD": {
+ "name": "dólar namibio",
+ "symbol": "NAD"
+ },
+ "NZD": {
+ "name": "dólar neozelandés",
+ "symbol": "NZD"
+ },
+ "SBD": {
+ "name": "dólar salomonense",
+ "symbol": "SBD"
+ },
+ "SGD": {
+ "name": "dólar singapurense",
+ "symbol": "SGD"
+ },
+ "SRD": {
+ "name": "dólar surinamés",
+ "symbol": "SRD"
+ },
+ "ZWL": {
+ "name": "dólar zimbabuense",
+ "symbol": "ZWL"
+ },
+ "VND": {
+ "name": "dong",
+ "symbol": "VND"
+ },
+ "AMD": {
+ "name": "dram",
+ "symbol": "AMD"
+ },
+ "CVE": {
+ "name": "escudo de Cabo Verde",
+ "symbol": "CVE"
+ },
+ "PLN": {
+ "name": "esloti",
+ "symbol": "PLN"
+ },
+ "EUR": {
+ "name": "euro",
+ "symbol": "EUR"
+ },
+ "AWG": {
+ "name": "florín arubeño",
+ "symbol": "AWG"
+ },
+ "ANG": {
+ "name": "florín de las Antillas Neerlandesas",
+ "symbol": "ANG"
+ },
+ "HUF": {
+ "name": "forinto",
+ "symbol": "HUF"
+ },
+ "BIF": {
+ "name": "franco burundés",
+ "symbol": "BIF"
+ },
+ "XOF": {
+ "name": "franco CFA BCEAO",
+ "symbol": "XOF"
+ },
+ "XAF": {
+ "name": "franco CFA BEAC",
+ "symbol": "XAF"
+ },
+ "XPF": {
+ "name": "franco CFP",
+ "symbol": "CFPF"
+ },
+ "KMF": {
+ "name": "franco comorense",
+ "symbol": "KMF"
+ },
+ "CDF": {
+ "name": "franco congoleño",
+ "symbol": "CDF"
+ },
+ "GNF": {
+ "name": "franco guineano",
+ "symbol": "GNF"
+ },
+ "RWF": {
+ "name": "franco ruandés",
+ "symbol": "RWF"
+ },
+ "CHF": {
+ "name": "franco suizo",
+ "symbol": "CHF"
+ },
+ "DJF": {
+ "name": "franco yibutiano",
+ "symbol": "DJF"
+ },
+ "HTG": {
+ "name": "gourde haitiano",
+ "symbol": "HTG"
+ },
+ "UAH": {
+ "name": "grivna",
+ "symbol": "UAH"
+ },
+ "PYG": {
+ "name": "guaraní paraguayo",
+ "symbol": "PYG"
+ },
+ "BTN": {
+ "name": "gultrum",
+ "symbol": "BTN"
+ },
+ "MMK": {
+ "name": "kiat",
+ "symbol": "MMK"
+ },
+ "PGK": {
+ "name": "kina",
+ "symbol": "PGK"
+ },
+ "LAK": {
+ "name": "kip",
+ "symbol": "LAK"
+ },
+ "MWK": {
+ "name": "kuacha malauí",
+ "symbol": "MWK"
+ },
+ "ZMW": {
+ "name": "kuacha zambiano",
+ "symbol": "ZMK"
+ },
+ "AOA": {
+ "name": "kuanza",
+ "symbol": "AOA"
+ },
+ "HRK": {
+ "name": "kuna",
+ "symbol": "HRK"
+ },
+ "GEL": {
+ "name": "lari",
+ "symbol": "GEL"
+ },
+ "ALL": {
+ "name": "lek",
+ "symbol": "ALL"
+ },
+ "HNL": {
+ "name": "lempira hondureño",
+ "symbol": "HNL"
+ },
+ "SLL": {
+ "name": "leona",
+ "symbol": "SLL"
+ },
+ "MDL": {
+ "name": "leu moldavo",
+ "symbol": "MDL"
+ },
+ "RON": {
+ "name": "leu rumano",
+ "symbol": "RON"
+ },
+ "BGN": {
+ "name": "leva",
+ "symbol": "BGN"
+ },
+ "FKP": {
+ "name": "libra de las Islas Malvinas",
+ "symbol": "FKP"
+ },
+ "SHP": {
+ "name": "libra de Santa Elena",
+ "symbol": "SHP"
+ },
+ "EGP": {
+ "name": "libra egipcia",
+ "symbol": "EGP"
+ },
+ "GBP": {
+ "name": "libra esterlina",
+ "symbol": "GBP"
+ },
+ "GIP": {
+ "name": "libra gibraltareña",
+ "symbol": "GIP"
+ },
+ "LBP": {
+ "name": "libra libanesa",
+ "symbol": "LBP"
+ },
+ "SYP": {
+ "name": "libra siria",
+ "symbol": "SYP"
+ },
+ "SDG": {
+ "name": "libra sudanesa",
+ "symbol": "SDG"
+ },
+ "SSP": {
+ "name": "libra sursudanesa",
+ "symbol": "SSP"
+ },
+ "SZL": {
+ "name": "lilangeni",
+ "symbol": "SZL"
+ },
+ "TRY": {
+ "name": "lira turca",
+ "symbol": "TRY"
+ },
+ "LTL": {
+ "name": "litas",
+ "symbol": "LTL"
+ },
+ "LSL": {
+ "name": "loti lesothense",
+ "symbol": "LSL"
+ },
+ "AZN": {
+ "name": "manat azerí",
+ "symbol": "AZN"
+ },
+ "TMT": {
+ "name": "manat turcomano",
+ "symbol": "TMT"
+ },
+ "BAM": {
+ "name": "marco convertible de Bosnia-Herzegovina",
+ "symbol": "BAM"
+ },
+ "MZN": {
+ "name": "metical",
+ "symbol": "MZN"
+ },
+ "NGN": {
+ "name": "naira",
+ "symbol": "NGN"
+ },
+ "ERN": {
+ "name": "nakfa",
+ "symbol": "ERN"
+ },
+ "TWD": {
+ "name": "nuevo dólar taiwanés",
+ "symbol": "TWD"
+ },
+ "ILS": {
+ "name": "nuevo sheqel israelí",
+ "symbol": "ILS"
+ },
+ "PEN": {
+ "name": "nuevo sol peruano",
+ "symbol": "PEN"
+ },
+ "TOP": {
+ "name": "paanga",
+ "symbol": "TOP"
+ },
+ "MOP": {
+ "name": "pataca",
+ "symbol": "MOP"
+ },
+ "ARS": {
+ "name": "peso argentino",
+ "symbol": "ARS"
+ },
+ "CLP": {
+ "name": "peso chileno",
+ "symbol": "CLP"
+ },
+ "COP": {
+ "name": "peso colombiano",
+ "symbol": "COP"
+ },
+ "CUP": {
+ "name": "peso cubano",
+ "symbol": "CUP"
+ },
+ "CUC": {
+ "name": "peso cubano convertible",
+ "symbol": "CUC"
+ },
+ "DOP": {
+ "name": "peso dominicano",
+ "symbol": "$"
+ },
+ "PHP": {
+ "name": "peso filipino",
+ "symbol": "PHP"
+ },
+ "MXN": {
+ "name": "peso mexicano",
+ "symbol": "MXN"
+ },
+ "UYU": {
+ "name": "peso uruguayo",
+ "symbol": "UYU"
+ },
+ "BWP": {
+ "name": "pula",
+ "symbol": "BWP"
+ },
+ "GTQ": {
+ "name": "quetzal guatemalteco",
+ "symbol": "GTQ"
+ },
+ "ZAR": {
+ "name": "rand",
+ "symbol": "ZAR"
+ },
+ "BRL": {
+ "name": "real brasileño",
+ "symbol": "BRL"
+ },
+ "QAR": {
+ "name": "rial catarí",
+ "symbol": "QAR"
+ },
+ "IRR": {
+ "name": "rial iraní",
+ "symbol": "IRR"
+ },
+ "OMR": {
+ "name": "rial omaní",
+ "symbol": "OMR"
+ },
+ "SAR": {
+ "name": "rial saudí",
+ "symbol": "SAR"
+ },
+ "YER": {
+ "name": "rial yemení",
+ "symbol": "YER"
+ },
+ "KHR": {
+ "name": "riel",
+ "symbol": "KHR"
+ },
+ "MYR": {
+ "name": "ringit",
+ "symbol": "MYR"
+ },
+ "BYR": {
+ "name": "rublo bielorruso",
+ "symbol": "BYR"
+ },
+ "RUB": {
+ "name": "rublo ruso",
+ "symbol": "RUB"
+ },
+ "MVR": {
+ "name": "rufiya",
+ "symbol": "MVR"
+ },
+ "LKR": {
+ "name": "rupia esrilanquesa",
+ "symbol": "LKR"
+ },
+ "INR": {
+ "name": "rupia india",
+ "symbol": "INR"
+ },
+ "IDR": {
+ "name": "rupia indonesia",
+ "symbol": "IDR"
+ },
+ "MUR": {
+ "name": "rupia mauriciana",
+ "symbol": "MUR"
+ },
+ "NPR": {
+ "name": "rupia nepalí",
+ "symbol": "NPR"
+ },
+ "PKR": {
+ "name": "rupia pakistaní",
+ "symbol": "PKR"
+ },
+ "SCR": {
+ "name": "rupia seychellense",
+ "symbol": "SCR"
+ },
+ "KGS": {
+ "name": "som",
+ "symbol": "KGS"
+ },
+ "TJS": {
+ "name": "somoni tayiko",
+ "symbol": "TJS"
+ },
+ "UZS": {
+ "name": "sum",
+ "symbol": "UZS"
+ },
+ "BDT": {
+ "name": "taka",
+ "symbol": "BDT"
+ },
+ "WST": {
+ "name": "tala",
+ "symbol": "WST"
+ },
+ "KZT": {
+ "name": "tenge kazako",
+ "symbol": "KZT"
+ },
+ "MNT": {
+ "name": "tugrik",
+ "symbol": "MNT"
+ },
+ "MRO": {
+ "name": "uguiya",
+ "symbol": "MRO"
+ },
+ "VUV": {
+ "name": "vatu",
+ "symbol": "VUV"
+ },
+ "KPW": {
+ "name": "won norcoreano",
+ "symbol": "KPW"
+ },
+ "KRW": {
+ "name": "won surcoreano",
+ "symbol": "KRW"
+ },
+ "JPY": {
+ "name": "yen",
+ "symbol": "JPY"
+ },
+ "CNY": {
+ "name": "yuan",
+ "symbol": "CNY"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/currency/es-EC.json b/library/intl/resources/currency/es-EC.json
new file mode 100644
index 000000000..a179e61e0
--- /dev/null
+++ b/library/intl/resources/currency/es-EC.json
@@ -0,0 +1,634 @@
+{
+ "AFN": {
+ "name": "afgani",
+ "symbol": "AFN"
+ },
+ "MGA": {
+ "name": "ariari",
+ "symbol": "MGA"
+ },
+ "PAB": {
+ "name": "balboa panameño",
+ "symbol": "PAB"
+ },
+ "THB": {
+ "name": "bat",
+ "symbol": "THB"
+ },
+ "ETB": {
+ "name": "bir",
+ "symbol": "ETB"
+ },
+ "VEF": {
+ "name": "bolívar venezolano",
+ "symbol": "VEF"
+ },
+ "BOB": {
+ "name": "boliviano",
+ "symbol": "BOB"
+ },
+ "GHS": {
+ "name": "cedi",
+ "symbol": "GHS"
+ },
+ "KES": {
+ "name": "chelín keniano",
+ "symbol": "KES"
+ },
+ "SOS": {
+ "name": "chelín somalí",
+ "symbol": "SOS"
+ },
+ "TZS": {
+ "name": "chelín tanzano",
+ "symbol": "TZS"
+ },
+ "UGX": {
+ "name": "chelín ugandés",
+ "symbol": "UGX"
+ },
+ "CRC": {
+ "name": "colón costarricense",
+ "symbol": "CRC"
+ },
+ "SVC": {
+ "name": "colón salvadoreño",
+ "symbol": "SVC"
+ },
+ "NIO": {
+ "name": "córdoba nicaragüense",
+ "symbol": "NIO"
+ },
+ "CZK": {
+ "name": "corona checa",
+ "symbol": "CZK"
+ },
+ "DKK": {
+ "name": "corona danesa",
+ "symbol": "DKK"
+ },
+ "ISK": {
+ "name": "corona islandesa",
+ "symbol": "ISK"
+ },
+ "NOK": {
+ "name": "corona noruega",
+ "symbol": "NOK"
+ },
+ "SEK": {
+ "name": "corona sueca",
+ "symbol": "SEK"
+ },
+ "GMD": {
+ "name": "dalasi",
+ "symbol": "GMD"
+ },
+ "DZD": {
+ "name": "dinar argelino",
+ "symbol": "DZD"
+ },
+ "BHD": {
+ "name": "dinar bahreiní",
+ "symbol": "BHD"
+ },
+ "IQD": {
+ "name": "dinar iraquí",
+ "symbol": "IQD"
+ },
+ "JOD": {
+ "name": "dinar jordano",
+ "symbol": "JOD"
+ },
+ "KWD": {
+ "name": "dinar kuwaití",
+ "symbol": "KWD"
+ },
+ "LYD": {
+ "name": "dinar libio",
+ "symbol": "LYD"
+ },
+ "MKD": {
+ "name": "dinar macedonio",
+ "symbol": "MKD"
+ },
+ "RSD": {
+ "name": "dinar serbio",
+ "symbol": "RSD"
+ },
+ "TND": {
+ "name": "dinar tunecino",
+ "symbol": "TND"
+ },
+ "AED": {
+ "name": "dírham de los Emiratos Ãrabes Unidos",
+ "symbol": "AED"
+ },
+ "MAD": {
+ "name": "dírham marroquí",
+ "symbol": "MAD"
+ },
+ "STD": {
+ "name": "dobra",
+ "symbol": "STD"
+ },
+ "AUD": {
+ "name": "dólar australiano",
+ "symbol": "AUD"
+ },
+ "BSD": {
+ "name": "dólar bahameño",
+ "symbol": "BSD"
+ },
+ "BBD": {
+ "name": "dólar barbadense",
+ "symbol": "BBD"
+ },
+ "BZD": {
+ "name": "dólar beliceño",
+ "symbol": "BZD"
+ },
+ "BND": {
+ "name": "dólar bruneano",
+ "symbol": "BND"
+ },
+ "CAD": {
+ "name": "dólar canadiense",
+ "symbol": "CAD"
+ },
+ "BMD": {
+ "name": "dólar de Bermudas",
+ "symbol": "BMD"
+ },
+ "KYD": {
+ "name": "dólar de las Islas Caimán",
+ "symbol": "KYD"
+ },
+ "TTD": {
+ "name": "dólar de Trinidad y Tobago",
+ "symbol": "TTD"
+ },
+ "XCD": {
+ "name": "dólar del Caribe Oriental",
+ "symbol": "XCD"
+ },
+ "USD": {
+ "name": "dólar estadounidense",
+ "symbol": "$"
+ },
+ "FJD": {
+ "name": "dólar fiyiano",
+ "symbol": "FJD"
+ },
+ "GYD": {
+ "name": "dólar guyanés",
+ "symbol": "GYD"
+ },
+ "HKD": {
+ "name": "dólar hongkonés",
+ "symbol": "HKD"
+ },
+ "JMD": {
+ "name": "dólar jamaicano",
+ "symbol": "JMD"
+ },
+ "LRD": {
+ "name": "dólar liberiano",
+ "symbol": "LRD"
+ },
+ "NAD": {
+ "name": "dólar namibio",
+ "symbol": "NAD"
+ },
+ "NZD": {
+ "name": "dólar neozelandés",
+ "symbol": "NZD"
+ },
+ "SBD": {
+ "name": "dólar salomonense",
+ "symbol": "SBD"
+ },
+ "SGD": {
+ "name": "dólar singapurense",
+ "symbol": "SGD"
+ },
+ "SRD": {
+ "name": "dólar surinamés",
+ "symbol": "SRD"
+ },
+ "ZWL": {
+ "name": "dólar zimbabuense",
+ "symbol": "ZWL"
+ },
+ "VND": {
+ "name": "dong",
+ "symbol": "VND"
+ },
+ "AMD": {
+ "name": "dram",
+ "symbol": "AMD"
+ },
+ "CVE": {
+ "name": "escudo de Cabo Verde",
+ "symbol": "CVE"
+ },
+ "PLN": {
+ "name": "esloti",
+ "symbol": "PLN"
+ },
+ "EUR": {
+ "name": "euro",
+ "symbol": "EUR"
+ },
+ "AWG": {
+ "name": "florín arubeño",
+ "symbol": "AWG"
+ },
+ "ANG": {
+ "name": "florín de las Antillas Neerlandesas",
+ "symbol": "ANG"
+ },
+ "HUF": {
+ "name": "forinto",
+ "symbol": "HUF"
+ },
+ "BIF": {
+ "name": "franco burundés",
+ "symbol": "BIF"
+ },
+ "XOF": {
+ "name": "franco CFA BCEAO",
+ "symbol": "XOF"
+ },
+ "XAF": {
+ "name": "franco CFA BEAC",
+ "symbol": "XAF"
+ },
+ "XPF": {
+ "name": "franco CFP",
+ "symbol": "CFPF"
+ },
+ "KMF": {
+ "name": "franco comorense",
+ "symbol": "KMF"
+ },
+ "CDF": {
+ "name": "franco congoleño",
+ "symbol": "CDF"
+ },
+ "GNF": {
+ "name": "franco guineano",
+ "symbol": "GNF"
+ },
+ "RWF": {
+ "name": "franco ruandés",
+ "symbol": "RWF"
+ },
+ "CHF": {
+ "name": "franco suizo",
+ "symbol": "CHF"
+ },
+ "DJF": {
+ "name": "franco yibutiano",
+ "symbol": "DJF"
+ },
+ "HTG": {
+ "name": "gourde haitiano",
+ "symbol": "HTG"
+ },
+ "UAH": {
+ "name": "grivna",
+ "symbol": "UAH"
+ },
+ "PYG": {
+ "name": "guaraní paraguayo",
+ "symbol": "PYG"
+ },
+ "BTN": {
+ "name": "gultrum",
+ "symbol": "BTN"
+ },
+ "MMK": {
+ "name": "kiat",
+ "symbol": "MMK"
+ },
+ "PGK": {
+ "name": "kina",
+ "symbol": "PGK"
+ },
+ "LAK": {
+ "name": "kip",
+ "symbol": "LAK"
+ },
+ "MWK": {
+ "name": "kuacha malauí",
+ "symbol": "MWK"
+ },
+ "ZMW": {
+ "name": "kuacha zambiano",
+ "symbol": "ZMK"
+ },
+ "AOA": {
+ "name": "kuanza",
+ "symbol": "AOA"
+ },
+ "HRK": {
+ "name": "kuna",
+ "symbol": "HRK"
+ },
+ "GEL": {
+ "name": "lari",
+ "symbol": "GEL"
+ },
+ "ALL": {
+ "name": "lek",
+ "symbol": "ALL"
+ },
+ "HNL": {
+ "name": "lempira hondureño",
+ "symbol": "HNL"
+ },
+ "SLL": {
+ "name": "leona",
+ "symbol": "SLL"
+ },
+ "MDL": {
+ "name": "leu moldavo",
+ "symbol": "MDL"
+ },
+ "RON": {
+ "name": "leu rumano",
+ "symbol": "RON"
+ },
+ "BGN": {
+ "name": "leva",
+ "symbol": "BGN"
+ },
+ "FKP": {
+ "name": "libra de las Islas Malvinas",
+ "symbol": "FKP"
+ },
+ "SHP": {
+ "name": "libra de Santa Elena",
+ "symbol": "SHP"
+ },
+ "EGP": {
+ "name": "libra egipcia",
+ "symbol": "EGP"
+ },
+ "GBP": {
+ "name": "libra esterlina",
+ "symbol": "GBP"
+ },
+ "GIP": {
+ "name": "libra gibraltareña",
+ "symbol": "GIP"
+ },
+ "LBP": {
+ "name": "libra libanesa",
+ "symbol": "LBP"
+ },
+ "SYP": {
+ "name": "libra siria",
+ "symbol": "SYP"
+ },
+ "SDG": {
+ "name": "libra sudanesa",
+ "symbol": "SDG"
+ },
+ "SSP": {
+ "name": "libra sursudanesa",
+ "symbol": "SSP"
+ },
+ "SZL": {
+ "name": "lilangeni",
+ "symbol": "SZL"
+ },
+ "TRY": {
+ "name": "lira turca",
+ "symbol": "TRY"
+ },
+ "LTL": {
+ "name": "litas",
+ "symbol": "LTL"
+ },
+ "LSL": {
+ "name": "loti lesothense",
+ "symbol": "LSL"
+ },
+ "AZN": {
+ "name": "manat azerí",
+ "symbol": "AZN"
+ },
+ "TMT": {
+ "name": "manat turcomano",
+ "symbol": "TMT"
+ },
+ "BAM": {
+ "name": "marco convertible de Bosnia-Herzegovina",
+ "symbol": "BAM"
+ },
+ "MZN": {
+ "name": "metical",
+ "symbol": "MZN"
+ },
+ "NGN": {
+ "name": "naira",
+ "symbol": "NGN"
+ },
+ "ERN": {
+ "name": "nakfa",
+ "symbol": "ERN"
+ },
+ "TWD": {
+ "name": "nuevo dólar taiwanés",
+ "symbol": "TWD"
+ },
+ "ILS": {
+ "name": "nuevo sheqel israelí",
+ "symbol": "ILS"
+ },
+ "PEN": {
+ "name": "nuevo sol peruano",
+ "symbol": "PEN"
+ },
+ "TOP": {
+ "name": "paanga",
+ "symbol": "TOP"
+ },
+ "MOP": {
+ "name": "pataca",
+ "symbol": "MOP"
+ },
+ "ARS": {
+ "name": "peso argentino",
+ "symbol": "ARS"
+ },
+ "CLP": {
+ "name": "peso chileno",
+ "symbol": "CLP"
+ },
+ "COP": {
+ "name": "peso colombiano",
+ "symbol": "COP"
+ },
+ "CUP": {
+ "name": "peso cubano",
+ "symbol": "CUP"
+ },
+ "CUC": {
+ "name": "peso cubano convertible",
+ "symbol": "CUC"
+ },
+ "DOP": {
+ "name": "peso dominicano",
+ "symbol": "DOP"
+ },
+ "PHP": {
+ "name": "peso filipino",
+ "symbol": "PHP"
+ },
+ "MXN": {
+ "name": "peso mexicano",
+ "symbol": "MXN"
+ },
+ "UYU": {
+ "name": "peso uruguayo",
+ "symbol": "UYU"
+ },
+ "BWP": {
+ "name": "pula",
+ "symbol": "BWP"
+ },
+ "GTQ": {
+ "name": "quetzal guatemalteco",
+ "symbol": "GTQ"
+ },
+ "ZAR": {
+ "name": "rand",
+ "symbol": "ZAR"
+ },
+ "BRL": {
+ "name": "real brasileño",
+ "symbol": "BRL"
+ },
+ "QAR": {
+ "name": "rial catarí",
+ "symbol": "QAR"
+ },
+ "IRR": {
+ "name": "rial iraní",
+ "symbol": "IRR"
+ },
+ "OMR": {
+ "name": "rial omaní",
+ "symbol": "OMR"
+ },
+ "SAR": {
+ "name": "rial saudí",
+ "symbol": "SAR"
+ },
+ "YER": {
+ "name": "rial yemení",
+ "symbol": "YER"
+ },
+ "KHR": {
+ "name": "riel",
+ "symbol": "KHR"
+ },
+ "MYR": {
+ "name": "ringit",
+ "symbol": "MYR"
+ },
+ "BYR": {
+ "name": "rublo bielorruso",
+ "symbol": "BYR"
+ },
+ "RUB": {
+ "name": "rublo ruso",
+ "symbol": "RUB"
+ },
+ "MVR": {
+ "name": "rufiya",
+ "symbol": "MVR"
+ },
+ "LKR": {
+ "name": "rupia esrilanquesa",
+ "symbol": "LKR"
+ },
+ "INR": {
+ "name": "rupia india",
+ "symbol": "INR"
+ },
+ "IDR": {
+ "name": "rupia indonesia",
+ "symbol": "IDR"
+ },
+ "MUR": {
+ "name": "rupia mauriciana",
+ "symbol": "MUR"
+ },
+ "NPR": {
+ "name": "rupia nepalí",
+ "symbol": "NPR"
+ },
+ "PKR": {
+ "name": "rupia pakistaní",
+ "symbol": "PKR"
+ },
+ "SCR": {
+ "name": "rupia seychellense",
+ "symbol": "SCR"
+ },
+ "KGS": {
+ "name": "som",
+ "symbol": "KGS"
+ },
+ "TJS": {
+ "name": "somoni tayiko",
+ "symbol": "TJS"
+ },
+ "UZS": {
+ "name": "sum",
+ "symbol": "UZS"
+ },
+ "BDT": {
+ "name": "taka",
+ "symbol": "BDT"
+ },
+ "WST": {
+ "name": "tala",
+ "symbol": "WST"
+ },
+ "KZT": {
+ "name": "tenge kazako",
+ "symbol": "KZT"
+ },
+ "MNT": {
+ "name": "tugrik",
+ "symbol": "MNT"
+ },
+ "MRO": {
+ "name": "uguiya",
+ "symbol": "MRO"
+ },
+ "VUV": {
+ "name": "vatu",
+ "symbol": "VUV"
+ },
+ "KPW": {
+ "name": "won norcoreano",
+ "symbol": "KPW"
+ },
+ "KRW": {
+ "name": "won surcoreano",
+ "symbol": "KRW"
+ },
+ "JPY": {
+ "name": "yen",
+ "symbol": "JPY"
+ },
+ "CNY": {
+ "name": "yuan",
+ "symbol": "CNY"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/currency/es-GT.json b/library/intl/resources/currency/es-GT.json
new file mode 100644
index 000000000..c7c365d46
--- /dev/null
+++ b/library/intl/resources/currency/es-GT.json
@@ -0,0 +1,634 @@
+{
+ "AFN": {
+ "name": "afgani",
+ "symbol": "AFN"
+ },
+ "MGA": {
+ "name": "ariari",
+ "symbol": "MGA"
+ },
+ "PAB": {
+ "name": "balboa panameño",
+ "symbol": "PAB"
+ },
+ "THB": {
+ "name": "bat",
+ "symbol": "THB"
+ },
+ "ETB": {
+ "name": "bir",
+ "symbol": "ETB"
+ },
+ "VEF": {
+ "name": "bolívar venezolano",
+ "symbol": "VEF"
+ },
+ "BOB": {
+ "name": "boliviano",
+ "symbol": "BOB"
+ },
+ "GHS": {
+ "name": "cedi",
+ "symbol": "GHS"
+ },
+ "KES": {
+ "name": "chelín keniano",
+ "symbol": "KES"
+ },
+ "SOS": {
+ "name": "chelín somalí",
+ "symbol": "SOS"
+ },
+ "TZS": {
+ "name": "chelín tanzano",
+ "symbol": "TZS"
+ },
+ "UGX": {
+ "name": "chelín ugandés",
+ "symbol": "UGX"
+ },
+ "CRC": {
+ "name": "colón costarricense",
+ "symbol": "CRC"
+ },
+ "SVC": {
+ "name": "colón salvadoreño",
+ "symbol": "SVC"
+ },
+ "NIO": {
+ "name": "córdoba nicaragüense",
+ "symbol": "NIO"
+ },
+ "CZK": {
+ "name": "corona checa",
+ "symbol": "CZK"
+ },
+ "DKK": {
+ "name": "corona danesa",
+ "symbol": "DKK"
+ },
+ "ISK": {
+ "name": "corona islandesa",
+ "symbol": "ISK"
+ },
+ "NOK": {
+ "name": "corona noruega",
+ "symbol": "NOK"
+ },
+ "SEK": {
+ "name": "corona sueca",
+ "symbol": "SEK"
+ },
+ "GMD": {
+ "name": "dalasi",
+ "symbol": "GMD"
+ },
+ "DZD": {
+ "name": "dinar argelino",
+ "symbol": "DZD"
+ },
+ "BHD": {
+ "name": "dinar bahreiní",
+ "symbol": "BHD"
+ },
+ "IQD": {
+ "name": "dinar iraquí",
+ "symbol": "IQD"
+ },
+ "JOD": {
+ "name": "dinar jordano",
+ "symbol": "JOD"
+ },
+ "KWD": {
+ "name": "dinar kuwaití",
+ "symbol": "KWD"
+ },
+ "LYD": {
+ "name": "dinar libio",
+ "symbol": "LYD"
+ },
+ "MKD": {
+ "name": "dinar macedonio",
+ "symbol": "MKD"
+ },
+ "RSD": {
+ "name": "dinar serbio",
+ "symbol": "RSD"
+ },
+ "TND": {
+ "name": "dinar tunecino",
+ "symbol": "TND"
+ },
+ "AED": {
+ "name": "dírham de los Emiratos Ãrabes Unidos",
+ "symbol": "AED"
+ },
+ "MAD": {
+ "name": "dírham marroquí",
+ "symbol": "MAD"
+ },
+ "STD": {
+ "name": "dobra",
+ "symbol": "STD"
+ },
+ "AUD": {
+ "name": "dólar australiano",
+ "symbol": "AUD"
+ },
+ "BSD": {
+ "name": "dólar bahameño",
+ "symbol": "BSD"
+ },
+ "BBD": {
+ "name": "dólar barbadense",
+ "symbol": "BBD"
+ },
+ "BZD": {
+ "name": "dólar beliceño",
+ "symbol": "BZD"
+ },
+ "BND": {
+ "name": "dólar bruneano",
+ "symbol": "BND"
+ },
+ "CAD": {
+ "name": "dólar canadiense",
+ "symbol": "CAD"
+ },
+ "BMD": {
+ "name": "dólar de Bermudas",
+ "symbol": "BMD"
+ },
+ "KYD": {
+ "name": "dólar de las Islas Caimán",
+ "symbol": "KYD"
+ },
+ "TTD": {
+ "name": "dólar de Trinidad y Tobago",
+ "symbol": "TTD"
+ },
+ "XCD": {
+ "name": "dólar del Caribe Oriental",
+ "symbol": "XCD"
+ },
+ "USD": {
+ "name": "dólar estadounidense",
+ "symbol": "USD"
+ },
+ "FJD": {
+ "name": "dólar fiyiano",
+ "symbol": "FJD"
+ },
+ "GYD": {
+ "name": "dólar guyanés",
+ "symbol": "GYD"
+ },
+ "HKD": {
+ "name": "dólar hongkonés",
+ "symbol": "HKD"
+ },
+ "JMD": {
+ "name": "dólar jamaicano",
+ "symbol": "JMD"
+ },
+ "LRD": {
+ "name": "dólar liberiano",
+ "symbol": "LRD"
+ },
+ "NAD": {
+ "name": "dólar namibio",
+ "symbol": "NAD"
+ },
+ "NZD": {
+ "name": "dólar neozelandés",
+ "symbol": "NZD"
+ },
+ "SBD": {
+ "name": "dólar salomonense",
+ "symbol": "SBD"
+ },
+ "SGD": {
+ "name": "dólar singapurense",
+ "symbol": "SGD"
+ },
+ "SRD": {
+ "name": "dólar surinamés",
+ "symbol": "SRD"
+ },
+ "ZWL": {
+ "name": "dólar zimbabuense",
+ "symbol": "ZWL"
+ },
+ "VND": {
+ "name": "dong",
+ "symbol": "VND"
+ },
+ "AMD": {
+ "name": "dram",
+ "symbol": "AMD"
+ },
+ "CVE": {
+ "name": "escudo de Cabo Verde",
+ "symbol": "CVE"
+ },
+ "PLN": {
+ "name": "esloti",
+ "symbol": "PLN"
+ },
+ "EUR": {
+ "name": "euro",
+ "symbol": "EUR"
+ },
+ "AWG": {
+ "name": "florín arubeño",
+ "symbol": "AWG"
+ },
+ "ANG": {
+ "name": "florín de las Antillas Neerlandesas",
+ "symbol": "ANG"
+ },
+ "HUF": {
+ "name": "forinto",
+ "symbol": "HUF"
+ },
+ "BIF": {
+ "name": "franco burundés",
+ "symbol": "BIF"
+ },
+ "XOF": {
+ "name": "franco CFA BCEAO",
+ "symbol": "XOF"
+ },
+ "XAF": {
+ "name": "franco CFA BEAC",
+ "symbol": "XAF"
+ },
+ "XPF": {
+ "name": "franco CFP",
+ "symbol": "CFPF"
+ },
+ "KMF": {
+ "name": "franco comorense",
+ "symbol": "KMF"
+ },
+ "CDF": {
+ "name": "franco congoleño",
+ "symbol": "CDF"
+ },
+ "GNF": {
+ "name": "franco guineano",
+ "symbol": "GNF"
+ },
+ "RWF": {
+ "name": "franco ruandés",
+ "symbol": "RWF"
+ },
+ "CHF": {
+ "name": "franco suizo",
+ "symbol": "CHF"
+ },
+ "DJF": {
+ "name": "franco yibutiano",
+ "symbol": "DJF"
+ },
+ "HTG": {
+ "name": "gourde haitiano",
+ "symbol": "HTG"
+ },
+ "UAH": {
+ "name": "grivna",
+ "symbol": "UAH"
+ },
+ "PYG": {
+ "name": "guaraní paraguayo",
+ "symbol": "PYG"
+ },
+ "BTN": {
+ "name": "gultrum",
+ "symbol": "BTN"
+ },
+ "MMK": {
+ "name": "kiat",
+ "symbol": "MMK"
+ },
+ "PGK": {
+ "name": "kina",
+ "symbol": "PGK"
+ },
+ "LAK": {
+ "name": "kip",
+ "symbol": "LAK"
+ },
+ "MWK": {
+ "name": "kuacha malauí",
+ "symbol": "MWK"
+ },
+ "ZMW": {
+ "name": "kuacha zambiano",
+ "symbol": "ZMK"
+ },
+ "AOA": {
+ "name": "kuanza",
+ "symbol": "AOA"
+ },
+ "HRK": {
+ "name": "kuna",
+ "symbol": "HRK"
+ },
+ "GEL": {
+ "name": "lari",
+ "symbol": "GEL"
+ },
+ "ALL": {
+ "name": "lek",
+ "symbol": "ALL"
+ },
+ "HNL": {
+ "name": "lempira hondureño",
+ "symbol": "HNL"
+ },
+ "SLL": {
+ "name": "leona",
+ "symbol": "SLL"
+ },
+ "MDL": {
+ "name": "leu moldavo",
+ "symbol": "MDL"
+ },
+ "RON": {
+ "name": "leu rumano",
+ "symbol": "RON"
+ },
+ "BGN": {
+ "name": "leva",
+ "symbol": "BGN"
+ },
+ "FKP": {
+ "name": "libra de las Islas Malvinas",
+ "symbol": "FKP"
+ },
+ "SHP": {
+ "name": "libra de Santa Elena",
+ "symbol": "SHP"
+ },
+ "EGP": {
+ "name": "libra egipcia",
+ "symbol": "EGP"
+ },
+ "GBP": {
+ "name": "libra esterlina",
+ "symbol": "GBP"
+ },
+ "GIP": {
+ "name": "libra gibraltareña",
+ "symbol": "GIP"
+ },
+ "LBP": {
+ "name": "libra libanesa",
+ "symbol": "LBP"
+ },
+ "SYP": {
+ "name": "libra siria",
+ "symbol": "SYP"
+ },
+ "SDG": {
+ "name": "libra sudanesa",
+ "symbol": "SDG"
+ },
+ "SSP": {
+ "name": "libra sursudanesa",
+ "symbol": "SSP"
+ },
+ "SZL": {
+ "name": "lilangeni",
+ "symbol": "SZL"
+ },
+ "TRY": {
+ "name": "lira turca",
+ "symbol": "TRY"
+ },
+ "LTL": {
+ "name": "litas",
+ "symbol": "LTL"
+ },
+ "LSL": {
+ "name": "loti lesothense",
+ "symbol": "LSL"
+ },
+ "AZN": {
+ "name": "manat azerí",
+ "symbol": "AZN"
+ },
+ "TMT": {
+ "name": "manat turcomano",
+ "symbol": "TMT"
+ },
+ "BAM": {
+ "name": "marco convertible de Bosnia-Herzegovina",
+ "symbol": "BAM"
+ },
+ "MZN": {
+ "name": "metical",
+ "symbol": "MZN"
+ },
+ "NGN": {
+ "name": "naira",
+ "symbol": "NGN"
+ },
+ "ERN": {
+ "name": "nakfa",
+ "symbol": "ERN"
+ },
+ "TWD": {
+ "name": "nuevo dólar taiwanés",
+ "symbol": "TWD"
+ },
+ "ILS": {
+ "name": "nuevo sheqel israelí",
+ "symbol": "ILS"
+ },
+ "PEN": {
+ "name": "nuevo sol peruano",
+ "symbol": "PEN"
+ },
+ "TOP": {
+ "name": "paanga",
+ "symbol": "TOP"
+ },
+ "MOP": {
+ "name": "pataca",
+ "symbol": "MOP"
+ },
+ "ARS": {
+ "name": "peso argentino",
+ "symbol": "ARS"
+ },
+ "CLP": {
+ "name": "peso chileno",
+ "symbol": "CLP"
+ },
+ "COP": {
+ "name": "peso colombiano",
+ "symbol": "COP"
+ },
+ "CUP": {
+ "name": "peso cubano",
+ "symbol": "CUP"
+ },
+ "CUC": {
+ "name": "peso cubano convertible",
+ "symbol": "CUC"
+ },
+ "DOP": {
+ "name": "peso dominicano",
+ "symbol": "DOP"
+ },
+ "PHP": {
+ "name": "peso filipino",
+ "symbol": "PHP"
+ },
+ "MXN": {
+ "name": "peso mexicano",
+ "symbol": "MXN"
+ },
+ "UYU": {
+ "name": "peso uruguayo",
+ "symbol": "UYU"
+ },
+ "BWP": {
+ "name": "pula",
+ "symbol": "BWP"
+ },
+ "GTQ": {
+ "name": "quetzal guatemalteco",
+ "symbol": "Q"
+ },
+ "ZAR": {
+ "name": "rand",
+ "symbol": "ZAR"
+ },
+ "BRL": {
+ "name": "real brasileño",
+ "symbol": "BRL"
+ },
+ "QAR": {
+ "name": "rial catarí",
+ "symbol": "QAR"
+ },
+ "IRR": {
+ "name": "rial iraní",
+ "symbol": "IRR"
+ },
+ "OMR": {
+ "name": "rial omaní",
+ "symbol": "OMR"
+ },
+ "SAR": {
+ "name": "rial saudí",
+ "symbol": "SAR"
+ },
+ "YER": {
+ "name": "rial yemení",
+ "symbol": "YER"
+ },
+ "KHR": {
+ "name": "riel",
+ "symbol": "KHR"
+ },
+ "MYR": {
+ "name": "ringit",
+ "symbol": "MYR"
+ },
+ "BYR": {
+ "name": "rublo bielorruso",
+ "symbol": "BYR"
+ },
+ "RUB": {
+ "name": "rublo ruso",
+ "symbol": "RUB"
+ },
+ "MVR": {
+ "name": "rufiya",
+ "symbol": "MVR"
+ },
+ "LKR": {
+ "name": "rupia esrilanquesa",
+ "symbol": "LKR"
+ },
+ "INR": {
+ "name": "rupia india",
+ "symbol": "INR"
+ },
+ "IDR": {
+ "name": "rupia indonesia",
+ "symbol": "IDR"
+ },
+ "MUR": {
+ "name": "rupia mauriciana",
+ "symbol": "MUR"
+ },
+ "NPR": {
+ "name": "rupia nepalí",
+ "symbol": "NPR"
+ },
+ "PKR": {
+ "name": "rupia pakistaní",
+ "symbol": "PKR"
+ },
+ "SCR": {
+ "name": "rupia seychellense",
+ "symbol": "SCR"
+ },
+ "KGS": {
+ "name": "som",
+ "symbol": "KGS"
+ },
+ "TJS": {
+ "name": "somoni tayiko",
+ "symbol": "TJS"
+ },
+ "UZS": {
+ "name": "sum",
+ "symbol": "UZS"
+ },
+ "BDT": {
+ "name": "taka",
+ "symbol": "BDT"
+ },
+ "WST": {
+ "name": "tala",
+ "symbol": "WST"
+ },
+ "KZT": {
+ "name": "tenge kazako",
+ "symbol": "KZT"
+ },
+ "MNT": {
+ "name": "tugrik",
+ "symbol": "MNT"
+ },
+ "MRO": {
+ "name": "uguiya",
+ "symbol": "MRO"
+ },
+ "VUV": {
+ "name": "vatu",
+ "symbol": "VUV"
+ },
+ "KPW": {
+ "name": "won norcoreano",
+ "symbol": "KPW"
+ },
+ "KRW": {
+ "name": "won surcoreano",
+ "symbol": "KRW"
+ },
+ "JPY": {
+ "name": "yen",
+ "symbol": "JPY"
+ },
+ "CNY": {
+ "name": "yuan",
+ "symbol": "CNY"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/currency/es-HN.json b/library/intl/resources/currency/es-HN.json
new file mode 100644
index 000000000..23b5c1963
--- /dev/null
+++ b/library/intl/resources/currency/es-HN.json
@@ -0,0 +1,634 @@
+{
+ "AFN": {
+ "name": "afgani",
+ "symbol": "AFN"
+ },
+ "MGA": {
+ "name": "ariari",
+ "symbol": "MGA"
+ },
+ "PAB": {
+ "name": "balboa panameño",
+ "symbol": "PAB"
+ },
+ "THB": {
+ "name": "bat",
+ "symbol": "THB"
+ },
+ "ETB": {
+ "name": "bir",
+ "symbol": "ETB"
+ },
+ "VEF": {
+ "name": "bolívar venezolano",
+ "symbol": "VEF"
+ },
+ "BOB": {
+ "name": "boliviano",
+ "symbol": "BOB"
+ },
+ "GHS": {
+ "name": "cedi",
+ "symbol": "GHS"
+ },
+ "KES": {
+ "name": "chelín keniano",
+ "symbol": "KES"
+ },
+ "SOS": {
+ "name": "chelín somalí",
+ "symbol": "SOS"
+ },
+ "TZS": {
+ "name": "chelín tanzano",
+ "symbol": "TZS"
+ },
+ "UGX": {
+ "name": "chelín ugandés",
+ "symbol": "UGX"
+ },
+ "CRC": {
+ "name": "colón costarricense",
+ "symbol": "CRC"
+ },
+ "SVC": {
+ "name": "colón salvadoreño",
+ "symbol": "SVC"
+ },
+ "NIO": {
+ "name": "córdoba nicaragüense",
+ "symbol": "NIO"
+ },
+ "CZK": {
+ "name": "corona checa",
+ "symbol": "CZK"
+ },
+ "DKK": {
+ "name": "corona danesa",
+ "symbol": "DKK"
+ },
+ "ISK": {
+ "name": "corona islandesa",
+ "symbol": "ISK"
+ },
+ "NOK": {
+ "name": "corona noruega",
+ "symbol": "NOK"
+ },
+ "SEK": {
+ "name": "corona sueca",
+ "symbol": "SEK"
+ },
+ "GMD": {
+ "name": "dalasi",
+ "symbol": "GMD"
+ },
+ "DZD": {
+ "name": "dinar argelino",
+ "symbol": "DZD"
+ },
+ "BHD": {
+ "name": "dinar bahreiní",
+ "symbol": "BHD"
+ },
+ "IQD": {
+ "name": "dinar iraquí",
+ "symbol": "IQD"
+ },
+ "JOD": {
+ "name": "dinar jordano",
+ "symbol": "JOD"
+ },
+ "KWD": {
+ "name": "dinar kuwaití",
+ "symbol": "KWD"
+ },
+ "LYD": {
+ "name": "dinar libio",
+ "symbol": "LYD"
+ },
+ "MKD": {
+ "name": "dinar macedonio",
+ "symbol": "MKD"
+ },
+ "RSD": {
+ "name": "dinar serbio",
+ "symbol": "RSD"
+ },
+ "TND": {
+ "name": "dinar tunecino",
+ "symbol": "TND"
+ },
+ "AED": {
+ "name": "dírham de los Emiratos Ãrabes Unidos",
+ "symbol": "AED"
+ },
+ "MAD": {
+ "name": "dírham marroquí",
+ "symbol": "MAD"
+ },
+ "STD": {
+ "name": "dobra",
+ "symbol": "STD"
+ },
+ "AUD": {
+ "name": "dólar australiano",
+ "symbol": "AUD"
+ },
+ "BSD": {
+ "name": "dólar bahameño",
+ "symbol": "BSD"
+ },
+ "BBD": {
+ "name": "dólar barbadense",
+ "symbol": "BBD"
+ },
+ "BZD": {
+ "name": "dólar beliceño",
+ "symbol": "BZD"
+ },
+ "BND": {
+ "name": "dólar bruneano",
+ "symbol": "BND"
+ },
+ "CAD": {
+ "name": "dólar canadiense",
+ "symbol": "CAD"
+ },
+ "BMD": {
+ "name": "dólar de Bermudas",
+ "symbol": "BMD"
+ },
+ "KYD": {
+ "name": "dólar de las Islas Caimán",
+ "symbol": "KYD"
+ },
+ "TTD": {
+ "name": "dólar de Trinidad y Tobago",
+ "symbol": "TTD"
+ },
+ "XCD": {
+ "name": "dólar del Caribe Oriental",
+ "symbol": "XCD"
+ },
+ "USD": {
+ "name": "dólar estadounidense",
+ "symbol": "USD"
+ },
+ "FJD": {
+ "name": "dólar fiyiano",
+ "symbol": "FJD"
+ },
+ "GYD": {
+ "name": "dólar guyanés",
+ "symbol": "GYD"
+ },
+ "HKD": {
+ "name": "dólar hongkonés",
+ "symbol": "HKD"
+ },
+ "JMD": {
+ "name": "dólar jamaicano",
+ "symbol": "JMD"
+ },
+ "LRD": {
+ "name": "dólar liberiano",
+ "symbol": "LRD"
+ },
+ "NAD": {
+ "name": "dólar namibio",
+ "symbol": "NAD"
+ },
+ "NZD": {
+ "name": "dólar neozelandés",
+ "symbol": "NZD"
+ },
+ "SBD": {
+ "name": "dólar salomonense",
+ "symbol": "SBD"
+ },
+ "SGD": {
+ "name": "dólar singapurense",
+ "symbol": "SGD"
+ },
+ "SRD": {
+ "name": "dólar surinamés",
+ "symbol": "SRD"
+ },
+ "ZWL": {
+ "name": "dólar zimbabuense",
+ "symbol": "ZWL"
+ },
+ "VND": {
+ "name": "dong",
+ "symbol": "VND"
+ },
+ "AMD": {
+ "name": "dram",
+ "symbol": "AMD"
+ },
+ "CVE": {
+ "name": "escudo de Cabo Verde",
+ "symbol": "CVE"
+ },
+ "PLN": {
+ "name": "esloti",
+ "symbol": "PLN"
+ },
+ "EUR": {
+ "name": "euro",
+ "symbol": "EUR"
+ },
+ "AWG": {
+ "name": "florín arubeño",
+ "symbol": "AWG"
+ },
+ "ANG": {
+ "name": "florín de las Antillas Neerlandesas",
+ "symbol": "ANG"
+ },
+ "HUF": {
+ "name": "forinto",
+ "symbol": "HUF"
+ },
+ "BIF": {
+ "name": "franco burundés",
+ "symbol": "BIF"
+ },
+ "XOF": {
+ "name": "franco CFA BCEAO",
+ "symbol": "XOF"
+ },
+ "XAF": {
+ "name": "franco CFA BEAC",
+ "symbol": "XAF"
+ },
+ "XPF": {
+ "name": "franco CFP",
+ "symbol": "CFPF"
+ },
+ "KMF": {
+ "name": "franco comorense",
+ "symbol": "KMF"
+ },
+ "CDF": {
+ "name": "franco congoleño",
+ "symbol": "CDF"
+ },
+ "GNF": {
+ "name": "franco guineano",
+ "symbol": "GNF"
+ },
+ "RWF": {
+ "name": "franco ruandés",
+ "symbol": "RWF"
+ },
+ "CHF": {
+ "name": "franco suizo",
+ "symbol": "CHF"
+ },
+ "DJF": {
+ "name": "franco yibutiano",
+ "symbol": "DJF"
+ },
+ "HTG": {
+ "name": "gourde haitiano",
+ "symbol": "HTG"
+ },
+ "UAH": {
+ "name": "grivna",
+ "symbol": "UAH"
+ },
+ "PYG": {
+ "name": "guaraní paraguayo",
+ "symbol": "PYG"
+ },
+ "BTN": {
+ "name": "gultrum",
+ "symbol": "BTN"
+ },
+ "MMK": {
+ "name": "kiat",
+ "symbol": "MMK"
+ },
+ "PGK": {
+ "name": "kina",
+ "symbol": "PGK"
+ },
+ "LAK": {
+ "name": "kip",
+ "symbol": "LAK"
+ },
+ "MWK": {
+ "name": "kuacha malauí",
+ "symbol": "MWK"
+ },
+ "ZMW": {
+ "name": "kuacha zambiano",
+ "symbol": "ZMK"
+ },
+ "AOA": {
+ "name": "kuanza",
+ "symbol": "AOA"
+ },
+ "HRK": {
+ "name": "kuna",
+ "symbol": "HRK"
+ },
+ "GEL": {
+ "name": "lari",
+ "symbol": "GEL"
+ },
+ "ALL": {
+ "name": "lek",
+ "symbol": "ALL"
+ },
+ "HNL": {
+ "name": "lempira hondureño",
+ "symbol": "L"
+ },
+ "SLL": {
+ "name": "leona",
+ "symbol": "SLL"
+ },
+ "MDL": {
+ "name": "leu moldavo",
+ "symbol": "MDL"
+ },
+ "RON": {
+ "name": "leu rumano",
+ "symbol": "RON"
+ },
+ "BGN": {
+ "name": "leva",
+ "symbol": "BGN"
+ },
+ "FKP": {
+ "name": "libra de las Islas Malvinas",
+ "symbol": "FKP"
+ },
+ "SHP": {
+ "name": "libra de Santa Elena",
+ "symbol": "SHP"
+ },
+ "EGP": {
+ "name": "libra egipcia",
+ "symbol": "EGP"
+ },
+ "GBP": {
+ "name": "libra esterlina",
+ "symbol": "GBP"
+ },
+ "GIP": {
+ "name": "libra gibraltareña",
+ "symbol": "GIP"
+ },
+ "LBP": {
+ "name": "libra libanesa",
+ "symbol": "LBP"
+ },
+ "SYP": {
+ "name": "libra siria",
+ "symbol": "SYP"
+ },
+ "SDG": {
+ "name": "libra sudanesa",
+ "symbol": "SDG"
+ },
+ "SSP": {
+ "name": "libra sursudanesa",
+ "symbol": "SSP"
+ },
+ "SZL": {
+ "name": "lilangeni",
+ "symbol": "SZL"
+ },
+ "TRY": {
+ "name": "lira turca",
+ "symbol": "TRY"
+ },
+ "LTL": {
+ "name": "litas",
+ "symbol": "LTL"
+ },
+ "LSL": {
+ "name": "loti lesothense",
+ "symbol": "LSL"
+ },
+ "AZN": {
+ "name": "manat azerí",
+ "symbol": "AZN"
+ },
+ "TMT": {
+ "name": "manat turcomano",
+ "symbol": "TMT"
+ },
+ "BAM": {
+ "name": "marco convertible de Bosnia-Herzegovina",
+ "symbol": "BAM"
+ },
+ "MZN": {
+ "name": "metical",
+ "symbol": "MZN"
+ },
+ "NGN": {
+ "name": "naira",
+ "symbol": "NGN"
+ },
+ "ERN": {
+ "name": "nakfa",
+ "symbol": "ERN"
+ },
+ "TWD": {
+ "name": "nuevo dólar taiwanés",
+ "symbol": "TWD"
+ },
+ "ILS": {
+ "name": "nuevo sheqel israelí",
+ "symbol": "ILS"
+ },
+ "PEN": {
+ "name": "nuevo sol peruano",
+ "symbol": "PEN"
+ },
+ "TOP": {
+ "name": "paanga",
+ "symbol": "TOP"
+ },
+ "MOP": {
+ "name": "pataca",
+ "symbol": "MOP"
+ },
+ "ARS": {
+ "name": "peso argentino",
+ "symbol": "ARS"
+ },
+ "CLP": {
+ "name": "peso chileno",
+ "symbol": "CLP"
+ },
+ "COP": {
+ "name": "peso colombiano",
+ "symbol": "COP"
+ },
+ "CUP": {
+ "name": "peso cubano",
+ "symbol": "CUP"
+ },
+ "CUC": {
+ "name": "peso cubano convertible",
+ "symbol": "CUC"
+ },
+ "DOP": {
+ "name": "peso dominicano",
+ "symbol": "DOP"
+ },
+ "PHP": {
+ "name": "peso filipino",
+ "symbol": "PHP"
+ },
+ "MXN": {
+ "name": "peso mexicano",
+ "symbol": "MXN"
+ },
+ "UYU": {
+ "name": "peso uruguayo",
+ "symbol": "UYU"
+ },
+ "BWP": {
+ "name": "pula",
+ "symbol": "BWP"
+ },
+ "GTQ": {
+ "name": "quetzal guatemalteco",
+ "symbol": "GTQ"
+ },
+ "ZAR": {
+ "name": "rand",
+ "symbol": "ZAR"
+ },
+ "BRL": {
+ "name": "real brasileño",
+ "symbol": "BRL"
+ },
+ "QAR": {
+ "name": "rial catarí",
+ "symbol": "QAR"
+ },
+ "IRR": {
+ "name": "rial iraní",
+ "symbol": "IRR"
+ },
+ "OMR": {
+ "name": "rial omaní",
+ "symbol": "OMR"
+ },
+ "SAR": {
+ "name": "rial saudí",
+ "symbol": "SAR"
+ },
+ "YER": {
+ "name": "rial yemení",
+ "symbol": "YER"
+ },
+ "KHR": {
+ "name": "riel",
+ "symbol": "KHR"
+ },
+ "MYR": {
+ "name": "ringit",
+ "symbol": "MYR"
+ },
+ "BYR": {
+ "name": "rublo bielorruso",
+ "symbol": "BYR"
+ },
+ "RUB": {
+ "name": "rublo ruso",
+ "symbol": "RUB"
+ },
+ "MVR": {
+ "name": "rufiya",
+ "symbol": "MVR"
+ },
+ "LKR": {
+ "name": "rupia esrilanquesa",
+ "symbol": "LKR"
+ },
+ "INR": {
+ "name": "rupia india",
+ "symbol": "INR"
+ },
+ "IDR": {
+ "name": "rupia indonesia",
+ "symbol": "IDR"
+ },
+ "MUR": {
+ "name": "rupia mauriciana",
+ "symbol": "MUR"
+ },
+ "NPR": {
+ "name": "rupia nepalí",
+ "symbol": "NPR"
+ },
+ "PKR": {
+ "name": "rupia pakistaní",
+ "symbol": "PKR"
+ },
+ "SCR": {
+ "name": "rupia seychellense",
+ "symbol": "SCR"
+ },
+ "KGS": {
+ "name": "som",
+ "symbol": "KGS"
+ },
+ "TJS": {
+ "name": "somoni tayiko",
+ "symbol": "TJS"
+ },
+ "UZS": {
+ "name": "sum",
+ "symbol": "UZS"
+ },
+ "BDT": {
+ "name": "taka",
+ "symbol": "BDT"
+ },
+ "WST": {
+ "name": "tala",
+ "symbol": "WST"
+ },
+ "KZT": {
+ "name": "tenge kazako",
+ "symbol": "KZT"
+ },
+ "MNT": {
+ "name": "tugrik",
+ "symbol": "MNT"
+ },
+ "MRO": {
+ "name": "uguiya",
+ "symbol": "MRO"
+ },
+ "VUV": {
+ "name": "vatu",
+ "symbol": "VUV"
+ },
+ "KPW": {
+ "name": "won norcoreano",
+ "symbol": "KPW"
+ },
+ "KRW": {
+ "name": "won surcoreano",
+ "symbol": "KRW"
+ },
+ "JPY": {
+ "name": "yen",
+ "symbol": "JPY"
+ },
+ "CNY": {
+ "name": "yuan",
+ "symbol": "CNY"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/currency/es-MX.json b/library/intl/resources/currency/es-MX.json
new file mode 100644
index 000000000..bccac0880
--- /dev/null
+++ b/library/intl/resources/currency/es-MX.json
@@ -0,0 +1,634 @@
+{
+ "AFN": {
+ "name": "afgani afgano",
+ "symbol": "Af"
+ },
+ "MGA": {
+ "name": "ariary malgache",
+ "symbol": "MGA"
+ },
+ "THB": {
+ "name": "baht tailandés",
+ "symbol": "THB"
+ },
+ "PAB": {
+ "name": "balboa panameño",
+ "symbol": "PAB"
+ },
+ "ETB": {
+ "name": "birr etíope",
+ "symbol": "ETB"
+ },
+ "VEF": {
+ "name": "bolívar venezolano",
+ "symbol": "VEF"
+ },
+ "BOB": {
+ "name": "boliviano",
+ "symbol": "BOB"
+ },
+ "GHS": {
+ "name": "cedi ghanés",
+ "symbol": "GHS"
+ },
+ "KES": {
+ "name": "chelín keniano",
+ "symbol": "KES"
+ },
+ "SOS": {
+ "name": "chelín somalí",
+ "symbol": "SOS"
+ },
+ "TZS": {
+ "name": "chelín tanzano",
+ "symbol": "TZS"
+ },
+ "UGX": {
+ "name": "chelín ugandés",
+ "symbol": "UGX"
+ },
+ "CRC": {
+ "name": "colón costarricense",
+ "symbol": "CRC"
+ },
+ "SVC": {
+ "name": "colón salvadoreño",
+ "symbol": "SVC"
+ },
+ "NIO": {
+ "name": "córdoba nicaragüense",
+ "symbol": "NIO"
+ },
+ "CZK": {
+ "name": "corona checa",
+ "symbol": "CZK"
+ },
+ "DKK": {
+ "name": "corona danesa",
+ "symbol": "DKK"
+ },
+ "ISK": {
+ "name": "corona islandesa",
+ "symbol": "ISK"
+ },
+ "NOK": {
+ "name": "corona noruega",
+ "symbol": "NOK"
+ },
+ "SEK": {
+ "name": "corona sueca",
+ "symbol": "SEK"
+ },
+ "GMD": {
+ "name": "dalasi gambiano",
+ "symbol": "GMD"
+ },
+ "DZD": {
+ "name": "dinar argelino",
+ "symbol": "DZD"
+ },
+ "BHD": {
+ "name": "dinar bahreiní",
+ "symbol": "BHD"
+ },
+ "IQD": {
+ "name": "dinar iraquí",
+ "symbol": "IQD"
+ },
+ "JOD": {
+ "name": "dinar jordano",
+ "symbol": "JOD"
+ },
+ "KWD": {
+ "name": "dinar kuwaití",
+ "symbol": "KWD"
+ },
+ "LYD": {
+ "name": "dinar libio",
+ "symbol": "LYD"
+ },
+ "MKD": {
+ "name": "dinar macedonio",
+ "symbol": "MKD"
+ },
+ "RSD": {
+ "name": "dinar serbio",
+ "symbol": "RSD"
+ },
+ "TND": {
+ "name": "dinar tunecino",
+ "symbol": "TND"
+ },
+ "AED": {
+ "name": "dírham de los Emiratos Ãrabes Unidos",
+ "symbol": "AED"
+ },
+ "MAD": {
+ "name": "dírham marroquí",
+ "symbol": "MAD"
+ },
+ "STD": {
+ "name": "dobra de Santo Tomé y Príncipe",
+ "symbol": "STD"
+ },
+ "AUD": {
+ "name": "dólar australiano",
+ "symbol": "AU$"
+ },
+ "BSD": {
+ "name": "dólar bahameño",
+ "symbol": "BSD"
+ },
+ "BBD": {
+ "name": "dólar barbadense",
+ "symbol": "BBD"
+ },
+ "BZD": {
+ "name": "dólar beliceño",
+ "symbol": "BZD"
+ },
+ "CAD": {
+ "name": "dólar canadiense",
+ "symbol": "CAD"
+ },
+ "BMD": {
+ "name": "dólar de Bermudas",
+ "symbol": "BMD"
+ },
+ "BND": {
+ "name": "dólar de Brunéi",
+ "symbol": "BND"
+ },
+ "HKD": {
+ "name": "dólar de Hong Kong",
+ "symbol": "HKD"
+ },
+ "KYD": {
+ "name": "dólar de las Islas Caimán",
+ "symbol": "KYD"
+ },
+ "SBD": {
+ "name": "dólar de las Islas Salomón",
+ "symbol": "SBD"
+ },
+ "TTD": {
+ "name": "dólar de Trinidad y Tobago",
+ "symbol": "TTD"
+ },
+ "XCD": {
+ "name": "dólar del Caribe Oriental",
+ "symbol": "XCD"
+ },
+ "USD": {
+ "name": "dólar estadounidense",
+ "symbol": "USD"
+ },
+ "FJD": {
+ "name": "dólar fiyiano",
+ "symbol": "FJD"
+ },
+ "GYD": {
+ "name": "dólar guyanés",
+ "symbol": "GYD"
+ },
+ "JMD": {
+ "name": "dólar jamaiquino",
+ "symbol": "JMD"
+ },
+ "LRD": {
+ "name": "dólar liberiano",
+ "symbol": "LRD"
+ },
+ "NAD": {
+ "name": "dólar namibio",
+ "symbol": "NAD"
+ },
+ "NZD": {
+ "name": "dólar neozelandés",
+ "symbol": "NZD"
+ },
+ "SGD": {
+ "name": "dólar singapurense",
+ "symbol": "SGD"
+ },
+ "SRD": {
+ "name": "dólar surinamés",
+ "symbol": "SRD"
+ },
+ "ZWL": {
+ "name": "dólar zimbabuense",
+ "symbol": "ZWL"
+ },
+ "VND": {
+ "name": "dong vietnamita",
+ "symbol": "VND"
+ },
+ "AMD": {
+ "name": "dram armenio",
+ "symbol": "AMD"
+ },
+ "CVE": {
+ "name": "escudo de Cabo Verde",
+ "symbol": "CVE"
+ },
+ "EUR": {
+ "name": "euro",
+ "symbol": "EUR"
+ },
+ "AWG": {
+ "name": "florín arubeño",
+ "symbol": "Afl."
+ },
+ "ANG": {
+ "name": "florín de las Antillas Neerlandesas",
+ "symbol": "Naf"
+ },
+ "HUF": {
+ "name": "florín húngaro",
+ "symbol": "HUF"
+ },
+ "BIF": {
+ "name": "franco burundés",
+ "symbol": "BIF"
+ },
+ "XOF": {
+ "name": "franco CFA BCEAO",
+ "symbol": "XOF"
+ },
+ "XAF": {
+ "name": "franco CFA BEAC",
+ "symbol": "XAF"
+ },
+ "XPF": {
+ "name": "franco CFP",
+ "symbol": "XPF"
+ },
+ "KMF": {
+ "name": "franco comorense",
+ "symbol": "KMF"
+ },
+ "CDF": {
+ "name": "franco congoleño",
+ "symbol": "CDF"
+ },
+ "GNF": {
+ "name": "franco guineano",
+ "symbol": "GNF"
+ },
+ "RWF": {
+ "name": "franco ruandés",
+ "symbol": "RWF"
+ },
+ "CHF": {
+ "name": "franco suizo",
+ "symbol": "CHF"
+ },
+ "DJF": {
+ "name": "franco yibutiano",
+ "symbol": "DJF"
+ },
+ "HTG": {
+ "name": "gourde haitiano",
+ "symbol": "HTG"
+ },
+ "UAH": {
+ "name": "grivna ucraniana",
+ "symbol": "UAH"
+ },
+ "PYG": {
+ "name": "guaraní paraguayo",
+ "symbol": "PYG"
+ },
+ "PGK": {
+ "name": "kina de Papúa Nueva Guinea",
+ "symbol": "PGK"
+ },
+ "LAK": {
+ "name": "kip laosiano",
+ "symbol": "LAK"
+ },
+ "HRK": {
+ "name": "kuna croata",
+ "symbol": "HRK"
+ },
+ "MWK": {
+ "name": "kwacha malauí",
+ "symbol": "MWK"
+ },
+ "ZMW": {
+ "name": "kwacha zambiano",
+ "symbol": "ZMK"
+ },
+ "AOA": {
+ "name": "kwanza angoleño",
+ "symbol": "Kz"
+ },
+ "MMK": {
+ "name": "kyat de Myanmar",
+ "symbol": "MMK"
+ },
+ "GEL": {
+ "name": "lari georgiano",
+ "symbol": "GEL"
+ },
+ "ALL": {
+ "name": "lek albanés",
+ "symbol": "ALL"
+ },
+ "HNL": {
+ "name": "lempira hondureño",
+ "symbol": "HNL"
+ },
+ "SLL": {
+ "name": "leone de Sierra Leona",
+ "symbol": "SLL"
+ },
+ "MDL": {
+ "name": "leu moldavo",
+ "symbol": "MDL"
+ },
+ "RON": {
+ "name": "leu rumano",
+ "symbol": "RON"
+ },
+ "BGN": {
+ "name": "lev búlgaro",
+ "symbol": "BGN"
+ },
+ "SHP": {
+ "name": "libra de Santa Elena",
+ "symbol": "SHP"
+ },
+ "EGP": {
+ "name": "libra egipcia",
+ "symbol": "EGP"
+ },
+ "GBP": {
+ "name": "libra esterlina británica",
+ "symbol": "GBP"
+ },
+ "GIP": {
+ "name": "libra gibraltareña",
+ "symbol": "GIP"
+ },
+ "LBP": {
+ "name": "libra libanesa",
+ "symbol": "LBP"
+ },
+ "FKP": {
+ "name": "libra malvinense",
+ "symbol": "FKP"
+ },
+ "SYP": {
+ "name": "libra siria",
+ "symbol": "SYP"
+ },
+ "SDG": {
+ "name": "libra sudanesa",
+ "symbol": "SDG"
+ },
+ "SSP": {
+ "name": "libra sursudanesa",
+ "symbol": "SSP"
+ },
+ "SZL": {
+ "name": "lilangeni suazi",
+ "symbol": "SZL"
+ },
+ "TRY": {
+ "name": "lira turca",
+ "symbol": "TRY"
+ },
+ "LTL": {
+ "name": "litas lituano",
+ "symbol": "LTL"
+ },
+ "LSL": {
+ "name": "loti lesothense",
+ "symbol": "LSL"
+ },
+ "AZN": {
+ "name": "manat azerí",
+ "symbol": "AZN"
+ },
+ "TMT": {
+ "name": "manat turkmeno",
+ "symbol": "TMT"
+ },
+ "BAM": {
+ "name": "marco convertible de Bosnia-Herzegovina",
+ "symbol": "BAM"
+ },
+ "MZN": {
+ "name": "metical mozambiqueño",
+ "symbol": "MZN"
+ },
+ "NGN": {
+ "name": "naira nigeriano",
+ "symbol": "NGN"
+ },
+ "ERN": {
+ "name": "nakfa eritreo",
+ "symbol": "ERN"
+ },
+ "BTN": {
+ "name": "ngultrum butanés",
+ "symbol": "BTN"
+ },
+ "TWD": {
+ "name": "nuevo dólar taiwanés",
+ "symbol": "TWD"
+ },
+ "ILS": {
+ "name": "nuevo shéquel israelí",
+ "symbol": "ILS"
+ },
+ "PEN": {
+ "name": "nuevo sol peruano",
+ "symbol": "PEN"
+ },
+ "MRO": {
+ "name": "ouguiya mauritano",
+ "symbol": "MRO"
+ },
+ "TOP": {
+ "name": "paʻanga tongano",
+ "symbol": "TOP"
+ },
+ "MOP": {
+ "name": "pataca de Macao",
+ "symbol": "MOP"
+ },
+ "ARS": {
+ "name": "peso argentino",
+ "symbol": "$a"
+ },
+ "CLP": {
+ "name": "peso chileno",
+ "symbol": "CLP"
+ },
+ "COP": {
+ "name": "peso colombiano",
+ "symbol": "COP"
+ },
+ "CUP": {
+ "name": "peso cubano",
+ "symbol": "CUP"
+ },
+ "CUC": {
+ "name": "peso cubano convertible",
+ "symbol": "CUC"
+ },
+ "DOP": {
+ "name": "peso dominicano",
+ "symbol": "DOP"
+ },
+ "PHP": {
+ "name": "peso filipino",
+ "symbol": "PHP"
+ },
+ "MXN": {
+ "name": "peso mexicano",
+ "symbol": "$"
+ },
+ "UYU": {
+ "name": "peso uruguayo",
+ "symbol": "UYU"
+ },
+ "BWP": {
+ "name": "pula botsuano",
+ "symbol": "BWP"
+ },
+ "GTQ": {
+ "name": "quetzal guatemalteco",
+ "symbol": "GTQ"
+ },
+ "ZAR": {
+ "name": "rand sudafricano",
+ "symbol": "ZAR"
+ },
+ "BRL": {
+ "name": "real brasileño",
+ "symbol": "BRL"
+ },
+ "IRR": {
+ "name": "rial iraní",
+ "symbol": "IRR"
+ },
+ "OMR": {
+ "name": "rial omaní",
+ "symbol": "OMR"
+ },
+ "YER": {
+ "name": "rial yemení",
+ "symbol": "YER"
+ },
+ "KHR": {
+ "name": "riel camboyano",
+ "symbol": "KHR"
+ },
+ "MYR": {
+ "name": "ringgit malayo",
+ "symbol": "MYR"
+ },
+ "QAR": {
+ "name": "riyal de Qatar",
+ "symbol": "QAR"
+ },
+ "SAR": {
+ "name": "riyal saudí",
+ "symbol": "SAR"
+ },
+ "BYR": {
+ "name": "rublo bielorruso",
+ "symbol": "BYR"
+ },
+ "RUB": {
+ "name": "rublo ruso",
+ "symbol": "RUB"
+ },
+ "MVR": {
+ "name": "rufiyaa de Maldivas",
+ "symbol": "MVR"
+ },
+ "SCR": {
+ "name": "rupia de Seychelles",
+ "symbol": "SCR"
+ },
+ "LKR": {
+ "name": "rupia de Sri Lanka",
+ "symbol": "LKR"
+ },
+ "INR": {
+ "name": "rupia india",
+ "symbol": "INR"
+ },
+ "IDR": {
+ "name": "rupia indonesia",
+ "symbol": "IDR"
+ },
+ "MUR": {
+ "name": "rupia mauriciana",
+ "symbol": "MUR"
+ },
+ "NPR": {
+ "name": "rupia nepalí",
+ "symbol": "NPR"
+ },
+ "PKR": {
+ "name": "rupia pakistaní",
+ "symbol": "PKR"
+ },
+ "KGS": {
+ "name": "som kirguís",
+ "symbol": "KGS"
+ },
+ "UZS": {
+ "name": "som uzbeko",
+ "symbol": "UZS"
+ },
+ "TJS": {
+ "name": "somoni tayiko",
+ "symbol": "TJS"
+ },
+ "BDT": {
+ "name": "taka de Bangladesh",
+ "symbol": "BDT"
+ },
+ "WST": {
+ "name": "tala samoano",
+ "symbol": "WST"
+ },
+ "KZT": {
+ "name": "tenge kazajo",
+ "symbol": "KZT"
+ },
+ "MNT": {
+ "name": "tugrik mongol",
+ "symbol": "MNT"
+ },
+ "VUV": {
+ "name": "vatu vanuatuense",
+ "symbol": "VUV"
+ },
+ "KPW": {
+ "name": "won norcoreano",
+ "symbol": "KPW"
+ },
+ "KRW": {
+ "name": "won surcoreano",
+ "symbol": "KRW"
+ },
+ "JPY": {
+ "name": "yen japonés",
+ "symbol": "JPY"
+ },
+ "CNY": {
+ "name": "yuan chino",
+ "symbol": "CNÂ¥"
+ },
+ "PLN": {
+ "name": "zloty polaco",
+ "symbol": "PLN"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/currency/es-NI.json b/library/intl/resources/currency/es-NI.json
new file mode 100644
index 000000000..03f0380c1
--- /dev/null
+++ b/library/intl/resources/currency/es-NI.json
@@ -0,0 +1,634 @@
+{
+ "AFN": {
+ "name": "afgani",
+ "symbol": "AFN"
+ },
+ "MGA": {
+ "name": "ariari",
+ "symbol": "MGA"
+ },
+ "PAB": {
+ "name": "balboa panameño",
+ "symbol": "PAB"
+ },
+ "THB": {
+ "name": "bat",
+ "symbol": "THB"
+ },
+ "ETB": {
+ "name": "bir",
+ "symbol": "ETB"
+ },
+ "VEF": {
+ "name": "bolívar venezolano",
+ "symbol": "VEF"
+ },
+ "BOB": {
+ "name": "boliviano",
+ "symbol": "BOB"
+ },
+ "GHS": {
+ "name": "cedi",
+ "symbol": "GHS"
+ },
+ "KES": {
+ "name": "chelín keniano",
+ "symbol": "KES"
+ },
+ "SOS": {
+ "name": "chelín somalí",
+ "symbol": "SOS"
+ },
+ "TZS": {
+ "name": "chelín tanzano",
+ "symbol": "TZS"
+ },
+ "UGX": {
+ "name": "chelín ugandés",
+ "symbol": "UGX"
+ },
+ "CRC": {
+ "name": "colón costarricense",
+ "symbol": "CRC"
+ },
+ "SVC": {
+ "name": "colón salvadoreño",
+ "symbol": "SVC"
+ },
+ "NIO": {
+ "name": "córdoba nicaragüense",
+ "symbol": "C$"
+ },
+ "CZK": {
+ "name": "corona checa",
+ "symbol": "CZK"
+ },
+ "DKK": {
+ "name": "corona danesa",
+ "symbol": "DKK"
+ },
+ "ISK": {
+ "name": "corona islandesa",
+ "symbol": "ISK"
+ },
+ "NOK": {
+ "name": "corona noruega",
+ "symbol": "NOK"
+ },
+ "SEK": {
+ "name": "corona sueca",
+ "symbol": "SEK"
+ },
+ "GMD": {
+ "name": "dalasi",
+ "symbol": "GMD"
+ },
+ "DZD": {
+ "name": "dinar argelino",
+ "symbol": "DZD"
+ },
+ "BHD": {
+ "name": "dinar bahreiní",
+ "symbol": "BHD"
+ },
+ "IQD": {
+ "name": "dinar iraquí",
+ "symbol": "IQD"
+ },
+ "JOD": {
+ "name": "dinar jordano",
+ "symbol": "JOD"
+ },
+ "KWD": {
+ "name": "dinar kuwaití",
+ "symbol": "KWD"
+ },
+ "LYD": {
+ "name": "dinar libio",
+ "symbol": "LYD"
+ },
+ "MKD": {
+ "name": "dinar macedonio",
+ "symbol": "MKD"
+ },
+ "RSD": {
+ "name": "dinar serbio",
+ "symbol": "RSD"
+ },
+ "TND": {
+ "name": "dinar tunecino",
+ "symbol": "TND"
+ },
+ "AED": {
+ "name": "dírham de los Emiratos Ãrabes Unidos",
+ "symbol": "AED"
+ },
+ "MAD": {
+ "name": "dírham marroquí",
+ "symbol": "MAD"
+ },
+ "STD": {
+ "name": "dobra",
+ "symbol": "STD"
+ },
+ "AUD": {
+ "name": "dólar australiano",
+ "symbol": "AUD"
+ },
+ "BSD": {
+ "name": "dólar bahameño",
+ "symbol": "BSD"
+ },
+ "BBD": {
+ "name": "dólar barbadense",
+ "symbol": "BBD"
+ },
+ "BZD": {
+ "name": "dólar beliceño",
+ "symbol": "BZD"
+ },
+ "BND": {
+ "name": "dólar bruneano",
+ "symbol": "BND"
+ },
+ "CAD": {
+ "name": "dólar canadiense",
+ "symbol": "CAD"
+ },
+ "BMD": {
+ "name": "dólar de Bermudas",
+ "symbol": "BMD"
+ },
+ "KYD": {
+ "name": "dólar de las Islas Caimán",
+ "symbol": "KYD"
+ },
+ "TTD": {
+ "name": "dólar de Trinidad y Tobago",
+ "symbol": "TTD"
+ },
+ "XCD": {
+ "name": "dólar del Caribe Oriental",
+ "symbol": "XCD"
+ },
+ "USD": {
+ "name": "dólar estadounidense",
+ "symbol": "USD"
+ },
+ "FJD": {
+ "name": "dólar fiyiano",
+ "symbol": "FJD"
+ },
+ "GYD": {
+ "name": "dólar guyanés",
+ "symbol": "GYD"
+ },
+ "HKD": {
+ "name": "dólar hongkonés",
+ "symbol": "HKD"
+ },
+ "JMD": {
+ "name": "dólar jamaicano",
+ "symbol": "JMD"
+ },
+ "LRD": {
+ "name": "dólar liberiano",
+ "symbol": "LRD"
+ },
+ "NAD": {
+ "name": "dólar namibio",
+ "symbol": "NAD"
+ },
+ "NZD": {
+ "name": "dólar neozelandés",
+ "symbol": "NZD"
+ },
+ "SBD": {
+ "name": "dólar salomonense",
+ "symbol": "SBD"
+ },
+ "SGD": {
+ "name": "dólar singapurense",
+ "symbol": "SGD"
+ },
+ "SRD": {
+ "name": "dólar surinamés",
+ "symbol": "SRD"
+ },
+ "ZWL": {
+ "name": "dólar zimbabuense",
+ "symbol": "ZWL"
+ },
+ "VND": {
+ "name": "dong",
+ "symbol": "VND"
+ },
+ "AMD": {
+ "name": "dram",
+ "symbol": "AMD"
+ },
+ "CVE": {
+ "name": "escudo de Cabo Verde",
+ "symbol": "CVE"
+ },
+ "PLN": {
+ "name": "esloti",
+ "symbol": "PLN"
+ },
+ "EUR": {
+ "name": "euro",
+ "symbol": "EUR"
+ },
+ "AWG": {
+ "name": "florín arubeño",
+ "symbol": "AWG"
+ },
+ "ANG": {
+ "name": "florín de las Antillas Neerlandesas",
+ "symbol": "ANG"
+ },
+ "HUF": {
+ "name": "forinto",
+ "symbol": "HUF"
+ },
+ "BIF": {
+ "name": "franco burundés",
+ "symbol": "BIF"
+ },
+ "XOF": {
+ "name": "franco CFA BCEAO",
+ "symbol": "XOF"
+ },
+ "XAF": {
+ "name": "franco CFA BEAC",
+ "symbol": "XAF"
+ },
+ "XPF": {
+ "name": "franco CFP",
+ "symbol": "CFPF"
+ },
+ "KMF": {
+ "name": "franco comorense",
+ "symbol": "KMF"
+ },
+ "CDF": {
+ "name": "franco congoleño",
+ "symbol": "CDF"
+ },
+ "GNF": {
+ "name": "franco guineano",
+ "symbol": "GNF"
+ },
+ "RWF": {
+ "name": "franco ruandés",
+ "symbol": "RWF"
+ },
+ "CHF": {
+ "name": "franco suizo",
+ "symbol": "CHF"
+ },
+ "DJF": {
+ "name": "franco yibutiano",
+ "symbol": "DJF"
+ },
+ "HTG": {
+ "name": "gourde haitiano",
+ "symbol": "HTG"
+ },
+ "UAH": {
+ "name": "grivna",
+ "symbol": "UAH"
+ },
+ "PYG": {
+ "name": "guaraní paraguayo",
+ "symbol": "PYG"
+ },
+ "BTN": {
+ "name": "gultrum",
+ "symbol": "BTN"
+ },
+ "MMK": {
+ "name": "kiat",
+ "symbol": "MMK"
+ },
+ "PGK": {
+ "name": "kina",
+ "symbol": "PGK"
+ },
+ "LAK": {
+ "name": "kip",
+ "symbol": "LAK"
+ },
+ "MWK": {
+ "name": "kuacha malauí",
+ "symbol": "MWK"
+ },
+ "ZMW": {
+ "name": "kuacha zambiano",
+ "symbol": "ZMK"
+ },
+ "AOA": {
+ "name": "kuanza",
+ "symbol": "AOA"
+ },
+ "HRK": {
+ "name": "kuna",
+ "symbol": "HRK"
+ },
+ "GEL": {
+ "name": "lari",
+ "symbol": "GEL"
+ },
+ "ALL": {
+ "name": "lek",
+ "symbol": "ALL"
+ },
+ "HNL": {
+ "name": "lempira hondureño",
+ "symbol": "HNL"
+ },
+ "SLL": {
+ "name": "leona",
+ "symbol": "SLL"
+ },
+ "MDL": {
+ "name": "leu moldavo",
+ "symbol": "MDL"
+ },
+ "RON": {
+ "name": "leu rumano",
+ "symbol": "RON"
+ },
+ "BGN": {
+ "name": "leva",
+ "symbol": "BGN"
+ },
+ "FKP": {
+ "name": "libra de las Islas Malvinas",
+ "symbol": "FKP"
+ },
+ "SHP": {
+ "name": "libra de Santa Elena",
+ "symbol": "SHP"
+ },
+ "EGP": {
+ "name": "libra egipcia",
+ "symbol": "EGP"
+ },
+ "GBP": {
+ "name": "libra esterlina",
+ "symbol": "GBP"
+ },
+ "GIP": {
+ "name": "libra gibraltareña",
+ "symbol": "GIP"
+ },
+ "LBP": {
+ "name": "libra libanesa",
+ "symbol": "LBP"
+ },
+ "SYP": {
+ "name": "libra siria",
+ "symbol": "SYP"
+ },
+ "SDG": {
+ "name": "libra sudanesa",
+ "symbol": "SDG"
+ },
+ "SSP": {
+ "name": "libra sursudanesa",
+ "symbol": "SSP"
+ },
+ "SZL": {
+ "name": "lilangeni",
+ "symbol": "SZL"
+ },
+ "TRY": {
+ "name": "lira turca",
+ "symbol": "TRY"
+ },
+ "LTL": {
+ "name": "litas",
+ "symbol": "LTL"
+ },
+ "LSL": {
+ "name": "loti lesothense",
+ "symbol": "LSL"
+ },
+ "AZN": {
+ "name": "manat azerí",
+ "symbol": "AZN"
+ },
+ "TMT": {
+ "name": "manat turcomano",
+ "symbol": "TMT"
+ },
+ "BAM": {
+ "name": "marco convertible de Bosnia-Herzegovina",
+ "symbol": "BAM"
+ },
+ "MZN": {
+ "name": "metical",
+ "symbol": "MZN"
+ },
+ "NGN": {
+ "name": "naira",
+ "symbol": "NGN"
+ },
+ "ERN": {
+ "name": "nakfa",
+ "symbol": "ERN"
+ },
+ "TWD": {
+ "name": "nuevo dólar taiwanés",
+ "symbol": "TWD"
+ },
+ "ILS": {
+ "name": "nuevo sheqel israelí",
+ "symbol": "ILS"
+ },
+ "PEN": {
+ "name": "nuevo sol peruano",
+ "symbol": "PEN"
+ },
+ "TOP": {
+ "name": "paanga",
+ "symbol": "TOP"
+ },
+ "MOP": {
+ "name": "pataca",
+ "symbol": "MOP"
+ },
+ "ARS": {
+ "name": "peso argentino",
+ "symbol": "ARS"
+ },
+ "CLP": {
+ "name": "peso chileno",
+ "symbol": "CLP"
+ },
+ "COP": {
+ "name": "peso colombiano",
+ "symbol": "COP"
+ },
+ "CUP": {
+ "name": "peso cubano",
+ "symbol": "CUP"
+ },
+ "CUC": {
+ "name": "peso cubano convertible",
+ "symbol": "CUC"
+ },
+ "DOP": {
+ "name": "peso dominicano",
+ "symbol": "DOP"
+ },
+ "PHP": {
+ "name": "peso filipino",
+ "symbol": "PHP"
+ },
+ "MXN": {
+ "name": "peso mexicano",
+ "symbol": "MXN"
+ },
+ "UYU": {
+ "name": "peso uruguayo",
+ "symbol": "UYU"
+ },
+ "BWP": {
+ "name": "pula",
+ "symbol": "BWP"
+ },
+ "GTQ": {
+ "name": "quetzal guatemalteco",
+ "symbol": "GTQ"
+ },
+ "ZAR": {
+ "name": "rand",
+ "symbol": "ZAR"
+ },
+ "BRL": {
+ "name": "real brasileño",
+ "symbol": "BRL"
+ },
+ "QAR": {
+ "name": "rial catarí",
+ "symbol": "QAR"
+ },
+ "IRR": {
+ "name": "rial iraní",
+ "symbol": "IRR"
+ },
+ "OMR": {
+ "name": "rial omaní",
+ "symbol": "OMR"
+ },
+ "SAR": {
+ "name": "rial saudí",
+ "symbol": "SAR"
+ },
+ "YER": {
+ "name": "rial yemení",
+ "symbol": "YER"
+ },
+ "KHR": {
+ "name": "riel",
+ "symbol": "KHR"
+ },
+ "MYR": {
+ "name": "ringit",
+ "symbol": "MYR"
+ },
+ "BYR": {
+ "name": "rublo bielorruso",
+ "symbol": "BYR"
+ },
+ "RUB": {
+ "name": "rublo ruso",
+ "symbol": "RUB"
+ },
+ "MVR": {
+ "name": "rufiya",
+ "symbol": "MVR"
+ },
+ "LKR": {
+ "name": "rupia esrilanquesa",
+ "symbol": "LKR"
+ },
+ "INR": {
+ "name": "rupia india",
+ "symbol": "INR"
+ },
+ "IDR": {
+ "name": "rupia indonesia",
+ "symbol": "IDR"
+ },
+ "MUR": {
+ "name": "rupia mauriciana",
+ "symbol": "MUR"
+ },
+ "NPR": {
+ "name": "rupia nepalí",
+ "symbol": "NPR"
+ },
+ "PKR": {
+ "name": "rupia pakistaní",
+ "symbol": "PKR"
+ },
+ "SCR": {
+ "name": "rupia seychellense",
+ "symbol": "SCR"
+ },
+ "KGS": {
+ "name": "som",
+ "symbol": "KGS"
+ },
+ "TJS": {
+ "name": "somoni tayiko",
+ "symbol": "TJS"
+ },
+ "UZS": {
+ "name": "sum",
+ "symbol": "UZS"
+ },
+ "BDT": {
+ "name": "taka",
+ "symbol": "BDT"
+ },
+ "WST": {
+ "name": "tala",
+ "symbol": "WST"
+ },
+ "KZT": {
+ "name": "tenge kazako",
+ "symbol": "KZT"
+ },
+ "MNT": {
+ "name": "tugrik",
+ "symbol": "MNT"
+ },
+ "MRO": {
+ "name": "uguiya",
+ "symbol": "MRO"
+ },
+ "VUV": {
+ "name": "vatu",
+ "symbol": "VUV"
+ },
+ "KPW": {
+ "name": "won norcoreano",
+ "symbol": "KPW"
+ },
+ "KRW": {
+ "name": "won surcoreano",
+ "symbol": "KRW"
+ },
+ "JPY": {
+ "name": "yen",
+ "symbol": "JPY"
+ },
+ "CNY": {
+ "name": "yuan",
+ "symbol": "CNY"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/currency/es-PA.json b/library/intl/resources/currency/es-PA.json
new file mode 100644
index 000000000..4722f6a4f
--- /dev/null
+++ b/library/intl/resources/currency/es-PA.json
@@ -0,0 +1,634 @@
+{
+ "AFN": {
+ "name": "afgani",
+ "symbol": "AFN"
+ },
+ "MGA": {
+ "name": "ariari",
+ "symbol": "MGA"
+ },
+ "PAB": {
+ "name": "balboa panameño",
+ "symbol": "B\/."
+ },
+ "THB": {
+ "name": "bat",
+ "symbol": "THB"
+ },
+ "ETB": {
+ "name": "bir",
+ "symbol": "ETB"
+ },
+ "VEF": {
+ "name": "bolívar venezolano",
+ "symbol": "VEF"
+ },
+ "BOB": {
+ "name": "boliviano",
+ "symbol": "BOB"
+ },
+ "GHS": {
+ "name": "cedi",
+ "symbol": "GHS"
+ },
+ "KES": {
+ "name": "chelín keniano",
+ "symbol": "KES"
+ },
+ "SOS": {
+ "name": "chelín somalí",
+ "symbol": "SOS"
+ },
+ "TZS": {
+ "name": "chelín tanzano",
+ "symbol": "TZS"
+ },
+ "UGX": {
+ "name": "chelín ugandés",
+ "symbol": "UGX"
+ },
+ "CRC": {
+ "name": "colón costarricense",
+ "symbol": "CRC"
+ },
+ "SVC": {
+ "name": "colón salvadoreño",
+ "symbol": "SVC"
+ },
+ "NIO": {
+ "name": "córdoba nicaragüense",
+ "symbol": "NIO"
+ },
+ "CZK": {
+ "name": "corona checa",
+ "symbol": "CZK"
+ },
+ "DKK": {
+ "name": "corona danesa",
+ "symbol": "DKK"
+ },
+ "ISK": {
+ "name": "corona islandesa",
+ "symbol": "ISK"
+ },
+ "NOK": {
+ "name": "corona noruega",
+ "symbol": "NOK"
+ },
+ "SEK": {
+ "name": "corona sueca",
+ "symbol": "SEK"
+ },
+ "GMD": {
+ "name": "dalasi",
+ "symbol": "GMD"
+ },
+ "DZD": {
+ "name": "dinar argelino",
+ "symbol": "DZD"
+ },
+ "BHD": {
+ "name": "dinar bahreiní",
+ "symbol": "BHD"
+ },
+ "IQD": {
+ "name": "dinar iraquí",
+ "symbol": "IQD"
+ },
+ "JOD": {
+ "name": "dinar jordano",
+ "symbol": "JOD"
+ },
+ "KWD": {
+ "name": "dinar kuwaití",
+ "symbol": "KWD"
+ },
+ "LYD": {
+ "name": "dinar libio",
+ "symbol": "LYD"
+ },
+ "MKD": {
+ "name": "dinar macedonio",
+ "symbol": "MKD"
+ },
+ "RSD": {
+ "name": "dinar serbio",
+ "symbol": "RSD"
+ },
+ "TND": {
+ "name": "dinar tunecino",
+ "symbol": "TND"
+ },
+ "AED": {
+ "name": "dírham de los Emiratos Ãrabes Unidos",
+ "symbol": "AED"
+ },
+ "MAD": {
+ "name": "dírham marroquí",
+ "symbol": "MAD"
+ },
+ "STD": {
+ "name": "dobra",
+ "symbol": "STD"
+ },
+ "AUD": {
+ "name": "dólar australiano",
+ "symbol": "AUD"
+ },
+ "BSD": {
+ "name": "dólar bahameño",
+ "symbol": "BSD"
+ },
+ "BBD": {
+ "name": "dólar barbadense",
+ "symbol": "BBD"
+ },
+ "BZD": {
+ "name": "dólar beliceño",
+ "symbol": "BZD"
+ },
+ "BND": {
+ "name": "dólar bruneano",
+ "symbol": "BND"
+ },
+ "CAD": {
+ "name": "dólar canadiense",
+ "symbol": "CAD"
+ },
+ "BMD": {
+ "name": "dólar de Bermudas",
+ "symbol": "BMD"
+ },
+ "KYD": {
+ "name": "dólar de las Islas Caimán",
+ "symbol": "KYD"
+ },
+ "TTD": {
+ "name": "dólar de Trinidad y Tobago",
+ "symbol": "TTD"
+ },
+ "XCD": {
+ "name": "dólar del Caribe Oriental",
+ "symbol": "XCD"
+ },
+ "USD": {
+ "name": "dólar estadounidense",
+ "symbol": "USD"
+ },
+ "FJD": {
+ "name": "dólar fiyiano",
+ "symbol": "FJD"
+ },
+ "GYD": {
+ "name": "dólar guyanés",
+ "symbol": "GYD"
+ },
+ "HKD": {
+ "name": "dólar hongkonés",
+ "symbol": "HKD"
+ },
+ "JMD": {
+ "name": "dólar jamaicano",
+ "symbol": "JMD"
+ },
+ "LRD": {
+ "name": "dólar liberiano",
+ "symbol": "LRD"
+ },
+ "NAD": {
+ "name": "dólar namibio",
+ "symbol": "NAD"
+ },
+ "NZD": {
+ "name": "dólar neozelandés",
+ "symbol": "NZD"
+ },
+ "SBD": {
+ "name": "dólar salomonense",
+ "symbol": "SBD"
+ },
+ "SGD": {
+ "name": "dólar singapurense",
+ "symbol": "SGD"
+ },
+ "SRD": {
+ "name": "dólar surinamés",
+ "symbol": "SRD"
+ },
+ "ZWL": {
+ "name": "dólar zimbabuense",
+ "symbol": "ZWL"
+ },
+ "VND": {
+ "name": "dong",
+ "symbol": "VND"
+ },
+ "AMD": {
+ "name": "dram",
+ "symbol": "AMD"
+ },
+ "CVE": {
+ "name": "escudo de Cabo Verde",
+ "symbol": "CVE"
+ },
+ "PLN": {
+ "name": "esloti",
+ "symbol": "PLN"
+ },
+ "EUR": {
+ "name": "euro",
+ "symbol": "EUR"
+ },
+ "AWG": {
+ "name": "florín arubeño",
+ "symbol": "AWG"
+ },
+ "ANG": {
+ "name": "florín de las Antillas Neerlandesas",
+ "symbol": "ANG"
+ },
+ "HUF": {
+ "name": "forinto",
+ "symbol": "HUF"
+ },
+ "BIF": {
+ "name": "franco burundés",
+ "symbol": "BIF"
+ },
+ "XOF": {
+ "name": "franco CFA BCEAO",
+ "symbol": "XOF"
+ },
+ "XAF": {
+ "name": "franco CFA BEAC",
+ "symbol": "XAF"
+ },
+ "XPF": {
+ "name": "franco CFP",
+ "symbol": "CFPF"
+ },
+ "KMF": {
+ "name": "franco comorense",
+ "symbol": "KMF"
+ },
+ "CDF": {
+ "name": "franco congoleño",
+ "symbol": "CDF"
+ },
+ "GNF": {
+ "name": "franco guineano",
+ "symbol": "GNF"
+ },
+ "RWF": {
+ "name": "franco ruandés",
+ "symbol": "RWF"
+ },
+ "CHF": {
+ "name": "franco suizo",
+ "symbol": "CHF"
+ },
+ "DJF": {
+ "name": "franco yibutiano",
+ "symbol": "DJF"
+ },
+ "HTG": {
+ "name": "gourde haitiano",
+ "symbol": "HTG"
+ },
+ "UAH": {
+ "name": "grivna",
+ "symbol": "UAH"
+ },
+ "PYG": {
+ "name": "guaraní paraguayo",
+ "symbol": "PYG"
+ },
+ "BTN": {
+ "name": "gultrum",
+ "symbol": "BTN"
+ },
+ "MMK": {
+ "name": "kiat",
+ "symbol": "MMK"
+ },
+ "PGK": {
+ "name": "kina",
+ "symbol": "PGK"
+ },
+ "LAK": {
+ "name": "kip",
+ "symbol": "LAK"
+ },
+ "MWK": {
+ "name": "kuacha malauí",
+ "symbol": "MWK"
+ },
+ "ZMW": {
+ "name": "kuacha zambiano",
+ "symbol": "ZMK"
+ },
+ "AOA": {
+ "name": "kuanza",
+ "symbol": "AOA"
+ },
+ "HRK": {
+ "name": "kuna",
+ "symbol": "HRK"
+ },
+ "GEL": {
+ "name": "lari",
+ "symbol": "GEL"
+ },
+ "ALL": {
+ "name": "lek",
+ "symbol": "ALL"
+ },
+ "HNL": {
+ "name": "lempira hondureño",
+ "symbol": "HNL"
+ },
+ "SLL": {
+ "name": "leona",
+ "symbol": "SLL"
+ },
+ "MDL": {
+ "name": "leu moldavo",
+ "symbol": "MDL"
+ },
+ "RON": {
+ "name": "leu rumano",
+ "symbol": "RON"
+ },
+ "BGN": {
+ "name": "leva",
+ "symbol": "BGN"
+ },
+ "FKP": {
+ "name": "libra de las Islas Malvinas",
+ "symbol": "FKP"
+ },
+ "SHP": {
+ "name": "libra de Santa Elena",
+ "symbol": "SHP"
+ },
+ "EGP": {
+ "name": "libra egipcia",
+ "symbol": "EGP"
+ },
+ "GBP": {
+ "name": "libra esterlina",
+ "symbol": "GBP"
+ },
+ "GIP": {
+ "name": "libra gibraltareña",
+ "symbol": "GIP"
+ },
+ "LBP": {
+ "name": "libra libanesa",
+ "symbol": "LBP"
+ },
+ "SYP": {
+ "name": "libra siria",
+ "symbol": "SYP"
+ },
+ "SDG": {
+ "name": "libra sudanesa",
+ "symbol": "SDG"
+ },
+ "SSP": {
+ "name": "libra sursudanesa",
+ "symbol": "SSP"
+ },
+ "SZL": {
+ "name": "lilangeni",
+ "symbol": "SZL"
+ },
+ "TRY": {
+ "name": "lira turca",
+ "symbol": "TRY"
+ },
+ "LTL": {
+ "name": "litas",
+ "symbol": "LTL"
+ },
+ "LSL": {
+ "name": "loti lesothense",
+ "symbol": "LSL"
+ },
+ "AZN": {
+ "name": "manat azerí",
+ "symbol": "AZN"
+ },
+ "TMT": {
+ "name": "manat turcomano",
+ "symbol": "TMT"
+ },
+ "BAM": {
+ "name": "marco convertible de Bosnia-Herzegovina",
+ "symbol": "BAM"
+ },
+ "MZN": {
+ "name": "metical",
+ "symbol": "MZN"
+ },
+ "NGN": {
+ "name": "naira",
+ "symbol": "NGN"
+ },
+ "ERN": {
+ "name": "nakfa",
+ "symbol": "ERN"
+ },
+ "TWD": {
+ "name": "nuevo dólar taiwanés",
+ "symbol": "TWD"
+ },
+ "ILS": {
+ "name": "nuevo sheqel israelí",
+ "symbol": "ILS"
+ },
+ "PEN": {
+ "name": "nuevo sol peruano",
+ "symbol": "PEN"
+ },
+ "TOP": {
+ "name": "paanga",
+ "symbol": "TOP"
+ },
+ "MOP": {
+ "name": "pataca",
+ "symbol": "MOP"
+ },
+ "ARS": {
+ "name": "peso argentino",
+ "symbol": "ARS"
+ },
+ "CLP": {
+ "name": "peso chileno",
+ "symbol": "CLP"
+ },
+ "COP": {
+ "name": "peso colombiano",
+ "symbol": "COP"
+ },
+ "CUP": {
+ "name": "peso cubano",
+ "symbol": "CUP"
+ },
+ "CUC": {
+ "name": "peso cubano convertible",
+ "symbol": "CUC"
+ },
+ "DOP": {
+ "name": "peso dominicano",
+ "symbol": "DOP"
+ },
+ "PHP": {
+ "name": "peso filipino",
+ "symbol": "PHP"
+ },
+ "MXN": {
+ "name": "peso mexicano",
+ "symbol": "MXN"
+ },
+ "UYU": {
+ "name": "peso uruguayo",
+ "symbol": "UYU"
+ },
+ "BWP": {
+ "name": "pula",
+ "symbol": "BWP"
+ },
+ "GTQ": {
+ "name": "quetzal guatemalteco",
+ "symbol": "GTQ"
+ },
+ "ZAR": {
+ "name": "rand",
+ "symbol": "ZAR"
+ },
+ "BRL": {
+ "name": "real brasileño",
+ "symbol": "BRL"
+ },
+ "QAR": {
+ "name": "rial catarí",
+ "symbol": "QAR"
+ },
+ "IRR": {
+ "name": "rial iraní",
+ "symbol": "IRR"
+ },
+ "OMR": {
+ "name": "rial omaní",
+ "symbol": "OMR"
+ },
+ "SAR": {
+ "name": "rial saudí",
+ "symbol": "SAR"
+ },
+ "YER": {
+ "name": "rial yemení",
+ "symbol": "YER"
+ },
+ "KHR": {
+ "name": "riel",
+ "symbol": "KHR"
+ },
+ "MYR": {
+ "name": "ringit",
+ "symbol": "MYR"
+ },
+ "BYR": {
+ "name": "rublo bielorruso",
+ "symbol": "BYR"
+ },
+ "RUB": {
+ "name": "rublo ruso",
+ "symbol": "RUB"
+ },
+ "MVR": {
+ "name": "rufiya",
+ "symbol": "MVR"
+ },
+ "LKR": {
+ "name": "rupia esrilanquesa",
+ "symbol": "LKR"
+ },
+ "INR": {
+ "name": "rupia india",
+ "symbol": "INR"
+ },
+ "IDR": {
+ "name": "rupia indonesia",
+ "symbol": "IDR"
+ },
+ "MUR": {
+ "name": "rupia mauriciana",
+ "symbol": "MUR"
+ },
+ "NPR": {
+ "name": "rupia nepalí",
+ "symbol": "NPR"
+ },
+ "PKR": {
+ "name": "rupia pakistaní",
+ "symbol": "PKR"
+ },
+ "SCR": {
+ "name": "rupia seychellense",
+ "symbol": "SCR"
+ },
+ "KGS": {
+ "name": "som",
+ "symbol": "KGS"
+ },
+ "TJS": {
+ "name": "somoni tayiko",
+ "symbol": "TJS"
+ },
+ "UZS": {
+ "name": "sum",
+ "symbol": "UZS"
+ },
+ "BDT": {
+ "name": "taka",
+ "symbol": "BDT"
+ },
+ "WST": {
+ "name": "tala",
+ "symbol": "WST"
+ },
+ "KZT": {
+ "name": "tenge kazako",
+ "symbol": "KZT"
+ },
+ "MNT": {
+ "name": "tugrik",
+ "symbol": "MNT"
+ },
+ "MRO": {
+ "name": "uguiya",
+ "symbol": "MRO"
+ },
+ "VUV": {
+ "name": "vatu",
+ "symbol": "VUV"
+ },
+ "KPW": {
+ "name": "won norcoreano",
+ "symbol": "KPW"
+ },
+ "KRW": {
+ "name": "won surcoreano",
+ "symbol": "KRW"
+ },
+ "JPY": {
+ "name": "yen",
+ "symbol": "JPY"
+ },
+ "CNY": {
+ "name": "yuan",
+ "symbol": "CNY"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/currency/es-PE.json b/library/intl/resources/currency/es-PE.json
new file mode 100644
index 000000000..649ceafdd
--- /dev/null
+++ b/library/intl/resources/currency/es-PE.json
@@ -0,0 +1,634 @@
+{
+ "AFN": {
+ "name": "afgani",
+ "symbol": "AFN"
+ },
+ "MGA": {
+ "name": "ariari",
+ "symbol": "MGA"
+ },
+ "PAB": {
+ "name": "balboa panameño",
+ "symbol": "PAB"
+ },
+ "THB": {
+ "name": "bat",
+ "symbol": "THB"
+ },
+ "ETB": {
+ "name": "bir",
+ "symbol": "ETB"
+ },
+ "VEF": {
+ "name": "bolívar venezolano",
+ "symbol": "VEF"
+ },
+ "BOB": {
+ "name": "boliviano",
+ "symbol": "BOB"
+ },
+ "GHS": {
+ "name": "cedi",
+ "symbol": "GHS"
+ },
+ "KES": {
+ "name": "chelín keniano",
+ "symbol": "KES"
+ },
+ "SOS": {
+ "name": "chelín somalí",
+ "symbol": "SOS"
+ },
+ "TZS": {
+ "name": "chelín tanzano",
+ "symbol": "TZS"
+ },
+ "UGX": {
+ "name": "chelín ugandés",
+ "symbol": "UGX"
+ },
+ "CRC": {
+ "name": "colón costarricense",
+ "symbol": "CRC"
+ },
+ "SVC": {
+ "name": "colón salvadoreño",
+ "symbol": "SVC"
+ },
+ "NIO": {
+ "name": "córdoba nicaragüense",
+ "symbol": "NIO"
+ },
+ "CZK": {
+ "name": "corona checa",
+ "symbol": "CZK"
+ },
+ "DKK": {
+ "name": "corona danesa",
+ "symbol": "DKK"
+ },
+ "ISK": {
+ "name": "corona islandesa",
+ "symbol": "ISK"
+ },
+ "NOK": {
+ "name": "corona noruega",
+ "symbol": "NOK"
+ },
+ "SEK": {
+ "name": "corona sueca",
+ "symbol": "SEK"
+ },
+ "GMD": {
+ "name": "dalasi",
+ "symbol": "GMD"
+ },
+ "DZD": {
+ "name": "dinar argelino",
+ "symbol": "DZD"
+ },
+ "BHD": {
+ "name": "dinar bahreiní",
+ "symbol": "BHD"
+ },
+ "IQD": {
+ "name": "dinar iraquí",
+ "symbol": "IQD"
+ },
+ "JOD": {
+ "name": "dinar jordano",
+ "symbol": "JOD"
+ },
+ "KWD": {
+ "name": "dinar kuwaití",
+ "symbol": "KWD"
+ },
+ "LYD": {
+ "name": "dinar libio",
+ "symbol": "LYD"
+ },
+ "MKD": {
+ "name": "dinar macedonio",
+ "symbol": "MKD"
+ },
+ "RSD": {
+ "name": "dinar serbio",
+ "symbol": "RSD"
+ },
+ "TND": {
+ "name": "dinar tunecino",
+ "symbol": "TND"
+ },
+ "AED": {
+ "name": "dírham de los Emiratos Ãrabes Unidos",
+ "symbol": "AED"
+ },
+ "MAD": {
+ "name": "dírham marroquí",
+ "symbol": "MAD"
+ },
+ "STD": {
+ "name": "dobra",
+ "symbol": "STD"
+ },
+ "AUD": {
+ "name": "dólar australiano",
+ "symbol": "AUD"
+ },
+ "BSD": {
+ "name": "dólar bahameño",
+ "symbol": "BSD"
+ },
+ "BBD": {
+ "name": "dólar barbadense",
+ "symbol": "BBD"
+ },
+ "BZD": {
+ "name": "dólar beliceño",
+ "symbol": "BZD"
+ },
+ "BND": {
+ "name": "dólar bruneano",
+ "symbol": "BND"
+ },
+ "CAD": {
+ "name": "dólar canadiense",
+ "symbol": "CAD"
+ },
+ "BMD": {
+ "name": "dólar de Bermudas",
+ "symbol": "BMD"
+ },
+ "KYD": {
+ "name": "dólar de las Islas Caimán",
+ "symbol": "KYD"
+ },
+ "TTD": {
+ "name": "dólar de Trinidad y Tobago",
+ "symbol": "TTD"
+ },
+ "XCD": {
+ "name": "dólar del Caribe Oriental",
+ "symbol": "XCD"
+ },
+ "USD": {
+ "name": "dólar estadounidense",
+ "symbol": "USD"
+ },
+ "FJD": {
+ "name": "dólar fiyiano",
+ "symbol": "FJD"
+ },
+ "GYD": {
+ "name": "dólar guyanés",
+ "symbol": "GYD"
+ },
+ "HKD": {
+ "name": "dólar hongkonés",
+ "symbol": "HKD"
+ },
+ "JMD": {
+ "name": "dólar jamaicano",
+ "symbol": "JMD"
+ },
+ "LRD": {
+ "name": "dólar liberiano",
+ "symbol": "LRD"
+ },
+ "NAD": {
+ "name": "dólar namibio",
+ "symbol": "NAD"
+ },
+ "NZD": {
+ "name": "dólar neozelandés",
+ "symbol": "NZD"
+ },
+ "SBD": {
+ "name": "dólar salomonense",
+ "symbol": "SBD"
+ },
+ "SGD": {
+ "name": "dólar singapurense",
+ "symbol": "SGD"
+ },
+ "SRD": {
+ "name": "dólar surinamés",
+ "symbol": "SRD"
+ },
+ "ZWL": {
+ "name": "dólar zimbabuense",
+ "symbol": "ZWL"
+ },
+ "VND": {
+ "name": "dong",
+ "symbol": "VND"
+ },
+ "AMD": {
+ "name": "dram",
+ "symbol": "AMD"
+ },
+ "CVE": {
+ "name": "escudo de Cabo Verde",
+ "symbol": "CVE"
+ },
+ "PLN": {
+ "name": "esloti",
+ "symbol": "PLN"
+ },
+ "EUR": {
+ "name": "euro",
+ "symbol": "EUR"
+ },
+ "AWG": {
+ "name": "florín arubeño",
+ "symbol": "AWG"
+ },
+ "ANG": {
+ "name": "florín de las Antillas Neerlandesas",
+ "symbol": "ANG"
+ },
+ "HUF": {
+ "name": "forinto",
+ "symbol": "HUF"
+ },
+ "BIF": {
+ "name": "franco burundés",
+ "symbol": "BIF"
+ },
+ "XOF": {
+ "name": "franco CFA BCEAO",
+ "symbol": "XOF"
+ },
+ "XAF": {
+ "name": "franco CFA BEAC",
+ "symbol": "XAF"
+ },
+ "XPF": {
+ "name": "franco CFP",
+ "symbol": "CFPF"
+ },
+ "KMF": {
+ "name": "franco comorense",
+ "symbol": "KMF"
+ },
+ "CDF": {
+ "name": "franco congoleño",
+ "symbol": "CDF"
+ },
+ "GNF": {
+ "name": "franco guineano",
+ "symbol": "GNF"
+ },
+ "RWF": {
+ "name": "franco ruandés",
+ "symbol": "RWF"
+ },
+ "CHF": {
+ "name": "franco suizo",
+ "symbol": "CHF"
+ },
+ "DJF": {
+ "name": "franco yibutiano",
+ "symbol": "DJF"
+ },
+ "HTG": {
+ "name": "gourde haitiano",
+ "symbol": "HTG"
+ },
+ "UAH": {
+ "name": "grivna",
+ "symbol": "UAH"
+ },
+ "PYG": {
+ "name": "guaraní paraguayo",
+ "symbol": "PYG"
+ },
+ "BTN": {
+ "name": "gultrum",
+ "symbol": "BTN"
+ },
+ "MMK": {
+ "name": "kiat",
+ "symbol": "MMK"
+ },
+ "PGK": {
+ "name": "kina",
+ "symbol": "PGK"
+ },
+ "LAK": {
+ "name": "kip",
+ "symbol": "LAK"
+ },
+ "MWK": {
+ "name": "kuacha malauí",
+ "symbol": "MWK"
+ },
+ "ZMW": {
+ "name": "kuacha zambiano",
+ "symbol": "ZMK"
+ },
+ "AOA": {
+ "name": "kuanza",
+ "symbol": "AOA"
+ },
+ "HRK": {
+ "name": "kuna",
+ "symbol": "HRK"
+ },
+ "GEL": {
+ "name": "lari",
+ "symbol": "GEL"
+ },
+ "ALL": {
+ "name": "lek",
+ "symbol": "ALL"
+ },
+ "HNL": {
+ "name": "lempira hondureño",
+ "symbol": "HNL"
+ },
+ "SLL": {
+ "name": "leona",
+ "symbol": "SLL"
+ },
+ "MDL": {
+ "name": "leu moldavo",
+ "symbol": "MDL"
+ },
+ "RON": {
+ "name": "leu rumano",
+ "symbol": "RON"
+ },
+ "BGN": {
+ "name": "leva",
+ "symbol": "BGN"
+ },
+ "FKP": {
+ "name": "libra de las Islas Malvinas",
+ "symbol": "FKP"
+ },
+ "SHP": {
+ "name": "libra de Santa Elena",
+ "symbol": "SHP"
+ },
+ "EGP": {
+ "name": "libra egipcia",
+ "symbol": "EGP"
+ },
+ "GBP": {
+ "name": "libra esterlina",
+ "symbol": "GBP"
+ },
+ "GIP": {
+ "name": "libra gibraltareña",
+ "symbol": "GIP"
+ },
+ "LBP": {
+ "name": "libra libanesa",
+ "symbol": "LBP"
+ },
+ "SYP": {
+ "name": "libra siria",
+ "symbol": "SYP"
+ },
+ "SDG": {
+ "name": "libra sudanesa",
+ "symbol": "SDG"
+ },
+ "SSP": {
+ "name": "libra sursudanesa",
+ "symbol": "SSP"
+ },
+ "SZL": {
+ "name": "lilangeni",
+ "symbol": "SZL"
+ },
+ "TRY": {
+ "name": "lira turca",
+ "symbol": "TRY"
+ },
+ "LTL": {
+ "name": "litas",
+ "symbol": "LTL"
+ },
+ "LSL": {
+ "name": "loti lesothense",
+ "symbol": "LSL"
+ },
+ "AZN": {
+ "name": "manat azerí",
+ "symbol": "AZN"
+ },
+ "TMT": {
+ "name": "manat turcomano",
+ "symbol": "TMT"
+ },
+ "BAM": {
+ "name": "marco convertible de Bosnia-Herzegovina",
+ "symbol": "BAM"
+ },
+ "MZN": {
+ "name": "metical",
+ "symbol": "MZN"
+ },
+ "NGN": {
+ "name": "naira",
+ "symbol": "NGN"
+ },
+ "ERN": {
+ "name": "nakfa",
+ "symbol": "ERN"
+ },
+ "TWD": {
+ "name": "nuevo dólar taiwanés",
+ "symbol": "TWD"
+ },
+ "ILS": {
+ "name": "nuevo sheqel israelí",
+ "symbol": "ILS"
+ },
+ "PEN": {
+ "name": "nuevo sol peruano",
+ "symbol": "S\/."
+ },
+ "TOP": {
+ "name": "paanga",
+ "symbol": "TOP"
+ },
+ "MOP": {
+ "name": "pataca",
+ "symbol": "MOP"
+ },
+ "ARS": {
+ "name": "peso argentino",
+ "symbol": "ARS"
+ },
+ "CLP": {
+ "name": "peso chileno",
+ "symbol": "CLP"
+ },
+ "COP": {
+ "name": "peso colombiano",
+ "symbol": "COP"
+ },
+ "CUP": {
+ "name": "peso cubano",
+ "symbol": "CUP"
+ },
+ "CUC": {
+ "name": "peso cubano convertible",
+ "symbol": "CUC"
+ },
+ "DOP": {
+ "name": "peso dominicano",
+ "symbol": "DOP"
+ },
+ "PHP": {
+ "name": "peso filipino",
+ "symbol": "PHP"
+ },
+ "MXN": {
+ "name": "peso mexicano",
+ "symbol": "MXN"
+ },
+ "UYU": {
+ "name": "peso uruguayo",
+ "symbol": "UYU"
+ },
+ "BWP": {
+ "name": "pula",
+ "symbol": "BWP"
+ },
+ "GTQ": {
+ "name": "quetzal guatemalteco",
+ "symbol": "GTQ"
+ },
+ "ZAR": {
+ "name": "rand",
+ "symbol": "ZAR"
+ },
+ "BRL": {
+ "name": "real brasileño",
+ "symbol": "BRL"
+ },
+ "QAR": {
+ "name": "rial catarí",
+ "symbol": "QAR"
+ },
+ "IRR": {
+ "name": "rial iraní",
+ "symbol": "IRR"
+ },
+ "OMR": {
+ "name": "rial omaní",
+ "symbol": "OMR"
+ },
+ "SAR": {
+ "name": "rial saudí",
+ "symbol": "SAR"
+ },
+ "YER": {
+ "name": "rial yemení",
+ "symbol": "YER"
+ },
+ "KHR": {
+ "name": "riel",
+ "symbol": "KHR"
+ },
+ "MYR": {
+ "name": "ringit",
+ "symbol": "MYR"
+ },
+ "BYR": {
+ "name": "rublo bielorruso",
+ "symbol": "BYR"
+ },
+ "RUB": {
+ "name": "rublo ruso",
+ "symbol": "RUB"
+ },
+ "MVR": {
+ "name": "rufiya",
+ "symbol": "MVR"
+ },
+ "LKR": {
+ "name": "rupia esrilanquesa",
+ "symbol": "LKR"
+ },
+ "INR": {
+ "name": "rupia india",
+ "symbol": "INR"
+ },
+ "IDR": {
+ "name": "rupia indonesia",
+ "symbol": "IDR"
+ },
+ "MUR": {
+ "name": "rupia mauriciana",
+ "symbol": "MUR"
+ },
+ "NPR": {
+ "name": "rupia nepalí",
+ "symbol": "NPR"
+ },
+ "PKR": {
+ "name": "rupia pakistaní",
+ "symbol": "PKR"
+ },
+ "SCR": {
+ "name": "rupia seychellense",
+ "symbol": "SCR"
+ },
+ "KGS": {
+ "name": "som",
+ "symbol": "KGS"
+ },
+ "TJS": {
+ "name": "somoni tayiko",
+ "symbol": "TJS"
+ },
+ "UZS": {
+ "name": "sum",
+ "symbol": "UZS"
+ },
+ "BDT": {
+ "name": "taka",
+ "symbol": "BDT"
+ },
+ "WST": {
+ "name": "tala",
+ "symbol": "WST"
+ },
+ "KZT": {
+ "name": "tenge kazako",
+ "symbol": "KZT"
+ },
+ "MNT": {
+ "name": "tugrik",
+ "symbol": "MNT"
+ },
+ "MRO": {
+ "name": "uguiya",
+ "symbol": "MRO"
+ },
+ "VUV": {
+ "name": "vatu",
+ "symbol": "VUV"
+ },
+ "KPW": {
+ "name": "won norcoreano",
+ "symbol": "KPW"
+ },
+ "KRW": {
+ "name": "won surcoreano",
+ "symbol": "KRW"
+ },
+ "JPY": {
+ "name": "yen",
+ "symbol": "JPY"
+ },
+ "CNY": {
+ "name": "yuan",
+ "symbol": "CNY"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/currency/es-PR.json b/library/intl/resources/currency/es-PR.json
new file mode 100644
index 000000000..a179e61e0
--- /dev/null
+++ b/library/intl/resources/currency/es-PR.json
@@ -0,0 +1,634 @@
+{
+ "AFN": {
+ "name": "afgani",
+ "symbol": "AFN"
+ },
+ "MGA": {
+ "name": "ariari",
+ "symbol": "MGA"
+ },
+ "PAB": {
+ "name": "balboa panameño",
+ "symbol": "PAB"
+ },
+ "THB": {
+ "name": "bat",
+ "symbol": "THB"
+ },
+ "ETB": {
+ "name": "bir",
+ "symbol": "ETB"
+ },
+ "VEF": {
+ "name": "bolívar venezolano",
+ "symbol": "VEF"
+ },
+ "BOB": {
+ "name": "boliviano",
+ "symbol": "BOB"
+ },
+ "GHS": {
+ "name": "cedi",
+ "symbol": "GHS"
+ },
+ "KES": {
+ "name": "chelín keniano",
+ "symbol": "KES"
+ },
+ "SOS": {
+ "name": "chelín somalí",
+ "symbol": "SOS"
+ },
+ "TZS": {
+ "name": "chelín tanzano",
+ "symbol": "TZS"
+ },
+ "UGX": {
+ "name": "chelín ugandés",
+ "symbol": "UGX"
+ },
+ "CRC": {
+ "name": "colón costarricense",
+ "symbol": "CRC"
+ },
+ "SVC": {
+ "name": "colón salvadoreño",
+ "symbol": "SVC"
+ },
+ "NIO": {
+ "name": "córdoba nicaragüense",
+ "symbol": "NIO"
+ },
+ "CZK": {
+ "name": "corona checa",
+ "symbol": "CZK"
+ },
+ "DKK": {
+ "name": "corona danesa",
+ "symbol": "DKK"
+ },
+ "ISK": {
+ "name": "corona islandesa",
+ "symbol": "ISK"
+ },
+ "NOK": {
+ "name": "corona noruega",
+ "symbol": "NOK"
+ },
+ "SEK": {
+ "name": "corona sueca",
+ "symbol": "SEK"
+ },
+ "GMD": {
+ "name": "dalasi",
+ "symbol": "GMD"
+ },
+ "DZD": {
+ "name": "dinar argelino",
+ "symbol": "DZD"
+ },
+ "BHD": {
+ "name": "dinar bahreiní",
+ "symbol": "BHD"
+ },
+ "IQD": {
+ "name": "dinar iraquí",
+ "symbol": "IQD"
+ },
+ "JOD": {
+ "name": "dinar jordano",
+ "symbol": "JOD"
+ },
+ "KWD": {
+ "name": "dinar kuwaití",
+ "symbol": "KWD"
+ },
+ "LYD": {
+ "name": "dinar libio",
+ "symbol": "LYD"
+ },
+ "MKD": {
+ "name": "dinar macedonio",
+ "symbol": "MKD"
+ },
+ "RSD": {
+ "name": "dinar serbio",
+ "symbol": "RSD"
+ },
+ "TND": {
+ "name": "dinar tunecino",
+ "symbol": "TND"
+ },
+ "AED": {
+ "name": "dírham de los Emiratos Ãrabes Unidos",
+ "symbol": "AED"
+ },
+ "MAD": {
+ "name": "dírham marroquí",
+ "symbol": "MAD"
+ },
+ "STD": {
+ "name": "dobra",
+ "symbol": "STD"
+ },
+ "AUD": {
+ "name": "dólar australiano",
+ "symbol": "AUD"
+ },
+ "BSD": {
+ "name": "dólar bahameño",
+ "symbol": "BSD"
+ },
+ "BBD": {
+ "name": "dólar barbadense",
+ "symbol": "BBD"
+ },
+ "BZD": {
+ "name": "dólar beliceño",
+ "symbol": "BZD"
+ },
+ "BND": {
+ "name": "dólar bruneano",
+ "symbol": "BND"
+ },
+ "CAD": {
+ "name": "dólar canadiense",
+ "symbol": "CAD"
+ },
+ "BMD": {
+ "name": "dólar de Bermudas",
+ "symbol": "BMD"
+ },
+ "KYD": {
+ "name": "dólar de las Islas Caimán",
+ "symbol": "KYD"
+ },
+ "TTD": {
+ "name": "dólar de Trinidad y Tobago",
+ "symbol": "TTD"
+ },
+ "XCD": {
+ "name": "dólar del Caribe Oriental",
+ "symbol": "XCD"
+ },
+ "USD": {
+ "name": "dólar estadounidense",
+ "symbol": "$"
+ },
+ "FJD": {
+ "name": "dólar fiyiano",
+ "symbol": "FJD"
+ },
+ "GYD": {
+ "name": "dólar guyanés",
+ "symbol": "GYD"
+ },
+ "HKD": {
+ "name": "dólar hongkonés",
+ "symbol": "HKD"
+ },
+ "JMD": {
+ "name": "dólar jamaicano",
+ "symbol": "JMD"
+ },
+ "LRD": {
+ "name": "dólar liberiano",
+ "symbol": "LRD"
+ },
+ "NAD": {
+ "name": "dólar namibio",
+ "symbol": "NAD"
+ },
+ "NZD": {
+ "name": "dólar neozelandés",
+ "symbol": "NZD"
+ },
+ "SBD": {
+ "name": "dólar salomonense",
+ "symbol": "SBD"
+ },
+ "SGD": {
+ "name": "dólar singapurense",
+ "symbol": "SGD"
+ },
+ "SRD": {
+ "name": "dólar surinamés",
+ "symbol": "SRD"
+ },
+ "ZWL": {
+ "name": "dólar zimbabuense",
+ "symbol": "ZWL"
+ },
+ "VND": {
+ "name": "dong",
+ "symbol": "VND"
+ },
+ "AMD": {
+ "name": "dram",
+ "symbol": "AMD"
+ },
+ "CVE": {
+ "name": "escudo de Cabo Verde",
+ "symbol": "CVE"
+ },
+ "PLN": {
+ "name": "esloti",
+ "symbol": "PLN"
+ },
+ "EUR": {
+ "name": "euro",
+ "symbol": "EUR"
+ },
+ "AWG": {
+ "name": "florín arubeño",
+ "symbol": "AWG"
+ },
+ "ANG": {
+ "name": "florín de las Antillas Neerlandesas",
+ "symbol": "ANG"
+ },
+ "HUF": {
+ "name": "forinto",
+ "symbol": "HUF"
+ },
+ "BIF": {
+ "name": "franco burundés",
+ "symbol": "BIF"
+ },
+ "XOF": {
+ "name": "franco CFA BCEAO",
+ "symbol": "XOF"
+ },
+ "XAF": {
+ "name": "franco CFA BEAC",
+ "symbol": "XAF"
+ },
+ "XPF": {
+ "name": "franco CFP",
+ "symbol": "CFPF"
+ },
+ "KMF": {
+ "name": "franco comorense",
+ "symbol": "KMF"
+ },
+ "CDF": {
+ "name": "franco congoleño",
+ "symbol": "CDF"
+ },
+ "GNF": {
+ "name": "franco guineano",
+ "symbol": "GNF"
+ },
+ "RWF": {
+ "name": "franco ruandés",
+ "symbol": "RWF"
+ },
+ "CHF": {
+ "name": "franco suizo",
+ "symbol": "CHF"
+ },
+ "DJF": {
+ "name": "franco yibutiano",
+ "symbol": "DJF"
+ },
+ "HTG": {
+ "name": "gourde haitiano",
+ "symbol": "HTG"
+ },
+ "UAH": {
+ "name": "grivna",
+ "symbol": "UAH"
+ },
+ "PYG": {
+ "name": "guaraní paraguayo",
+ "symbol": "PYG"
+ },
+ "BTN": {
+ "name": "gultrum",
+ "symbol": "BTN"
+ },
+ "MMK": {
+ "name": "kiat",
+ "symbol": "MMK"
+ },
+ "PGK": {
+ "name": "kina",
+ "symbol": "PGK"
+ },
+ "LAK": {
+ "name": "kip",
+ "symbol": "LAK"
+ },
+ "MWK": {
+ "name": "kuacha malauí",
+ "symbol": "MWK"
+ },
+ "ZMW": {
+ "name": "kuacha zambiano",
+ "symbol": "ZMK"
+ },
+ "AOA": {
+ "name": "kuanza",
+ "symbol": "AOA"
+ },
+ "HRK": {
+ "name": "kuna",
+ "symbol": "HRK"
+ },
+ "GEL": {
+ "name": "lari",
+ "symbol": "GEL"
+ },
+ "ALL": {
+ "name": "lek",
+ "symbol": "ALL"
+ },
+ "HNL": {
+ "name": "lempira hondureño",
+ "symbol": "HNL"
+ },
+ "SLL": {
+ "name": "leona",
+ "symbol": "SLL"
+ },
+ "MDL": {
+ "name": "leu moldavo",
+ "symbol": "MDL"
+ },
+ "RON": {
+ "name": "leu rumano",
+ "symbol": "RON"
+ },
+ "BGN": {
+ "name": "leva",
+ "symbol": "BGN"
+ },
+ "FKP": {
+ "name": "libra de las Islas Malvinas",
+ "symbol": "FKP"
+ },
+ "SHP": {
+ "name": "libra de Santa Elena",
+ "symbol": "SHP"
+ },
+ "EGP": {
+ "name": "libra egipcia",
+ "symbol": "EGP"
+ },
+ "GBP": {
+ "name": "libra esterlina",
+ "symbol": "GBP"
+ },
+ "GIP": {
+ "name": "libra gibraltareña",
+ "symbol": "GIP"
+ },
+ "LBP": {
+ "name": "libra libanesa",
+ "symbol": "LBP"
+ },
+ "SYP": {
+ "name": "libra siria",
+ "symbol": "SYP"
+ },
+ "SDG": {
+ "name": "libra sudanesa",
+ "symbol": "SDG"
+ },
+ "SSP": {
+ "name": "libra sursudanesa",
+ "symbol": "SSP"
+ },
+ "SZL": {
+ "name": "lilangeni",
+ "symbol": "SZL"
+ },
+ "TRY": {
+ "name": "lira turca",
+ "symbol": "TRY"
+ },
+ "LTL": {
+ "name": "litas",
+ "symbol": "LTL"
+ },
+ "LSL": {
+ "name": "loti lesothense",
+ "symbol": "LSL"
+ },
+ "AZN": {
+ "name": "manat azerí",
+ "symbol": "AZN"
+ },
+ "TMT": {
+ "name": "manat turcomano",
+ "symbol": "TMT"
+ },
+ "BAM": {
+ "name": "marco convertible de Bosnia-Herzegovina",
+ "symbol": "BAM"
+ },
+ "MZN": {
+ "name": "metical",
+ "symbol": "MZN"
+ },
+ "NGN": {
+ "name": "naira",
+ "symbol": "NGN"
+ },
+ "ERN": {
+ "name": "nakfa",
+ "symbol": "ERN"
+ },
+ "TWD": {
+ "name": "nuevo dólar taiwanés",
+ "symbol": "TWD"
+ },
+ "ILS": {
+ "name": "nuevo sheqel israelí",
+ "symbol": "ILS"
+ },
+ "PEN": {
+ "name": "nuevo sol peruano",
+ "symbol": "PEN"
+ },
+ "TOP": {
+ "name": "paanga",
+ "symbol": "TOP"
+ },
+ "MOP": {
+ "name": "pataca",
+ "symbol": "MOP"
+ },
+ "ARS": {
+ "name": "peso argentino",
+ "symbol": "ARS"
+ },
+ "CLP": {
+ "name": "peso chileno",
+ "symbol": "CLP"
+ },
+ "COP": {
+ "name": "peso colombiano",
+ "symbol": "COP"
+ },
+ "CUP": {
+ "name": "peso cubano",
+ "symbol": "CUP"
+ },
+ "CUC": {
+ "name": "peso cubano convertible",
+ "symbol": "CUC"
+ },
+ "DOP": {
+ "name": "peso dominicano",
+ "symbol": "DOP"
+ },
+ "PHP": {
+ "name": "peso filipino",
+ "symbol": "PHP"
+ },
+ "MXN": {
+ "name": "peso mexicano",
+ "symbol": "MXN"
+ },
+ "UYU": {
+ "name": "peso uruguayo",
+ "symbol": "UYU"
+ },
+ "BWP": {
+ "name": "pula",
+ "symbol": "BWP"
+ },
+ "GTQ": {
+ "name": "quetzal guatemalteco",
+ "symbol": "GTQ"
+ },
+ "ZAR": {
+ "name": "rand",
+ "symbol": "ZAR"
+ },
+ "BRL": {
+ "name": "real brasileño",
+ "symbol": "BRL"
+ },
+ "QAR": {
+ "name": "rial catarí",
+ "symbol": "QAR"
+ },
+ "IRR": {
+ "name": "rial iraní",
+ "symbol": "IRR"
+ },
+ "OMR": {
+ "name": "rial omaní",
+ "symbol": "OMR"
+ },
+ "SAR": {
+ "name": "rial saudí",
+ "symbol": "SAR"
+ },
+ "YER": {
+ "name": "rial yemení",
+ "symbol": "YER"
+ },
+ "KHR": {
+ "name": "riel",
+ "symbol": "KHR"
+ },
+ "MYR": {
+ "name": "ringit",
+ "symbol": "MYR"
+ },
+ "BYR": {
+ "name": "rublo bielorruso",
+ "symbol": "BYR"
+ },
+ "RUB": {
+ "name": "rublo ruso",
+ "symbol": "RUB"
+ },
+ "MVR": {
+ "name": "rufiya",
+ "symbol": "MVR"
+ },
+ "LKR": {
+ "name": "rupia esrilanquesa",
+ "symbol": "LKR"
+ },
+ "INR": {
+ "name": "rupia india",
+ "symbol": "INR"
+ },
+ "IDR": {
+ "name": "rupia indonesia",
+ "symbol": "IDR"
+ },
+ "MUR": {
+ "name": "rupia mauriciana",
+ "symbol": "MUR"
+ },
+ "NPR": {
+ "name": "rupia nepalí",
+ "symbol": "NPR"
+ },
+ "PKR": {
+ "name": "rupia pakistaní",
+ "symbol": "PKR"
+ },
+ "SCR": {
+ "name": "rupia seychellense",
+ "symbol": "SCR"
+ },
+ "KGS": {
+ "name": "som",
+ "symbol": "KGS"
+ },
+ "TJS": {
+ "name": "somoni tayiko",
+ "symbol": "TJS"
+ },
+ "UZS": {
+ "name": "sum",
+ "symbol": "UZS"
+ },
+ "BDT": {
+ "name": "taka",
+ "symbol": "BDT"
+ },
+ "WST": {
+ "name": "tala",
+ "symbol": "WST"
+ },
+ "KZT": {
+ "name": "tenge kazako",
+ "symbol": "KZT"
+ },
+ "MNT": {
+ "name": "tugrik",
+ "symbol": "MNT"
+ },
+ "MRO": {
+ "name": "uguiya",
+ "symbol": "MRO"
+ },
+ "VUV": {
+ "name": "vatu",
+ "symbol": "VUV"
+ },
+ "KPW": {
+ "name": "won norcoreano",
+ "symbol": "KPW"
+ },
+ "KRW": {
+ "name": "won surcoreano",
+ "symbol": "KRW"
+ },
+ "JPY": {
+ "name": "yen",
+ "symbol": "JPY"
+ },
+ "CNY": {
+ "name": "yuan",
+ "symbol": "CNY"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/currency/es-PY.json b/library/intl/resources/currency/es-PY.json
new file mode 100644
index 000000000..77d31f30e
--- /dev/null
+++ b/library/intl/resources/currency/es-PY.json
@@ -0,0 +1,634 @@
+{
+ "AFN": {
+ "name": "afgani",
+ "symbol": "AFN"
+ },
+ "MGA": {
+ "name": "ariari",
+ "symbol": "MGA"
+ },
+ "PAB": {
+ "name": "balboa panameño",
+ "symbol": "PAB"
+ },
+ "THB": {
+ "name": "bat",
+ "symbol": "THB"
+ },
+ "ETB": {
+ "name": "bir",
+ "symbol": "ETB"
+ },
+ "VEF": {
+ "name": "bolívar venezolano",
+ "symbol": "VEF"
+ },
+ "BOB": {
+ "name": "boliviano",
+ "symbol": "BOB"
+ },
+ "GHS": {
+ "name": "cedi",
+ "symbol": "GHS"
+ },
+ "KES": {
+ "name": "chelín keniano",
+ "symbol": "KES"
+ },
+ "SOS": {
+ "name": "chelín somalí",
+ "symbol": "SOS"
+ },
+ "TZS": {
+ "name": "chelín tanzano",
+ "symbol": "TZS"
+ },
+ "UGX": {
+ "name": "chelín ugandés",
+ "symbol": "UGX"
+ },
+ "CRC": {
+ "name": "colón costarricense",
+ "symbol": "CRC"
+ },
+ "SVC": {
+ "name": "colón salvadoreño",
+ "symbol": "SVC"
+ },
+ "NIO": {
+ "name": "córdoba nicaragüense",
+ "symbol": "NIO"
+ },
+ "CZK": {
+ "name": "corona checa",
+ "symbol": "CZK"
+ },
+ "DKK": {
+ "name": "corona danesa",
+ "symbol": "DKK"
+ },
+ "ISK": {
+ "name": "corona islandesa",
+ "symbol": "ISK"
+ },
+ "NOK": {
+ "name": "corona noruega",
+ "symbol": "NOK"
+ },
+ "SEK": {
+ "name": "corona sueca",
+ "symbol": "SEK"
+ },
+ "GMD": {
+ "name": "dalasi",
+ "symbol": "GMD"
+ },
+ "DZD": {
+ "name": "dinar argelino",
+ "symbol": "DZD"
+ },
+ "BHD": {
+ "name": "dinar bahreiní",
+ "symbol": "BHD"
+ },
+ "IQD": {
+ "name": "dinar iraquí",
+ "symbol": "IQD"
+ },
+ "JOD": {
+ "name": "dinar jordano",
+ "symbol": "JOD"
+ },
+ "KWD": {
+ "name": "dinar kuwaití",
+ "symbol": "KWD"
+ },
+ "LYD": {
+ "name": "dinar libio",
+ "symbol": "LYD"
+ },
+ "MKD": {
+ "name": "dinar macedonio",
+ "symbol": "MKD"
+ },
+ "RSD": {
+ "name": "dinar serbio",
+ "symbol": "RSD"
+ },
+ "TND": {
+ "name": "dinar tunecino",
+ "symbol": "TND"
+ },
+ "AED": {
+ "name": "dírham de los Emiratos Ãrabes Unidos",
+ "symbol": "AED"
+ },
+ "MAD": {
+ "name": "dírham marroquí",
+ "symbol": "MAD"
+ },
+ "STD": {
+ "name": "dobra",
+ "symbol": "STD"
+ },
+ "AUD": {
+ "name": "dólar australiano",
+ "symbol": "AUD"
+ },
+ "BSD": {
+ "name": "dólar bahameño",
+ "symbol": "BSD"
+ },
+ "BBD": {
+ "name": "dólar barbadense",
+ "symbol": "BBD"
+ },
+ "BZD": {
+ "name": "dólar beliceño",
+ "symbol": "BZD"
+ },
+ "BND": {
+ "name": "dólar bruneano",
+ "symbol": "BND"
+ },
+ "CAD": {
+ "name": "dólar canadiense",
+ "symbol": "CAD"
+ },
+ "BMD": {
+ "name": "dólar de Bermudas",
+ "symbol": "BMD"
+ },
+ "KYD": {
+ "name": "dólar de las Islas Caimán",
+ "symbol": "KYD"
+ },
+ "TTD": {
+ "name": "dólar de Trinidad y Tobago",
+ "symbol": "TTD"
+ },
+ "XCD": {
+ "name": "dólar del Caribe Oriental",
+ "symbol": "XCD"
+ },
+ "USD": {
+ "name": "dólar estadounidense",
+ "symbol": "USD"
+ },
+ "FJD": {
+ "name": "dólar fiyiano",
+ "symbol": "FJD"
+ },
+ "GYD": {
+ "name": "dólar guyanés",
+ "symbol": "GYD"
+ },
+ "HKD": {
+ "name": "dólar hongkonés",
+ "symbol": "HKD"
+ },
+ "JMD": {
+ "name": "dólar jamaicano",
+ "symbol": "JMD"
+ },
+ "LRD": {
+ "name": "dólar liberiano",
+ "symbol": "LRD"
+ },
+ "NAD": {
+ "name": "dólar namibio",
+ "symbol": "NAD"
+ },
+ "NZD": {
+ "name": "dólar neozelandés",
+ "symbol": "NZD"
+ },
+ "SBD": {
+ "name": "dólar salomonense",
+ "symbol": "SBD"
+ },
+ "SGD": {
+ "name": "dólar singapurense",
+ "symbol": "SGD"
+ },
+ "SRD": {
+ "name": "dólar surinamés",
+ "symbol": "SRD"
+ },
+ "ZWL": {
+ "name": "dólar zimbabuense",
+ "symbol": "ZWL"
+ },
+ "VND": {
+ "name": "dong",
+ "symbol": "VND"
+ },
+ "AMD": {
+ "name": "dram",
+ "symbol": "AMD"
+ },
+ "CVE": {
+ "name": "escudo de Cabo Verde",
+ "symbol": "CVE"
+ },
+ "PLN": {
+ "name": "esloti",
+ "symbol": "PLN"
+ },
+ "EUR": {
+ "name": "euro",
+ "symbol": "EUR"
+ },
+ "AWG": {
+ "name": "florín arubeño",
+ "symbol": "AWG"
+ },
+ "ANG": {
+ "name": "florín de las Antillas Neerlandesas",
+ "symbol": "ANG"
+ },
+ "HUF": {
+ "name": "forinto",
+ "symbol": "HUF"
+ },
+ "BIF": {
+ "name": "franco burundés",
+ "symbol": "BIF"
+ },
+ "XOF": {
+ "name": "franco CFA BCEAO",
+ "symbol": "XOF"
+ },
+ "XAF": {
+ "name": "franco CFA BEAC",
+ "symbol": "XAF"
+ },
+ "XPF": {
+ "name": "franco CFP",
+ "symbol": "CFPF"
+ },
+ "KMF": {
+ "name": "franco comorense",
+ "symbol": "KMF"
+ },
+ "CDF": {
+ "name": "franco congoleño",
+ "symbol": "CDF"
+ },
+ "GNF": {
+ "name": "franco guineano",
+ "symbol": "GNF"
+ },
+ "RWF": {
+ "name": "franco ruandés",
+ "symbol": "RWF"
+ },
+ "CHF": {
+ "name": "franco suizo",
+ "symbol": "CHF"
+ },
+ "DJF": {
+ "name": "franco yibutiano",
+ "symbol": "DJF"
+ },
+ "HTG": {
+ "name": "gourde haitiano",
+ "symbol": "HTG"
+ },
+ "UAH": {
+ "name": "grivna",
+ "symbol": "UAH"
+ },
+ "PYG": {
+ "name": "guaraní paraguayo",
+ "symbol": "₲"
+ },
+ "BTN": {
+ "name": "gultrum",
+ "symbol": "BTN"
+ },
+ "MMK": {
+ "name": "kiat",
+ "symbol": "MMK"
+ },
+ "PGK": {
+ "name": "kina",
+ "symbol": "PGK"
+ },
+ "LAK": {
+ "name": "kip",
+ "symbol": "LAK"
+ },
+ "MWK": {
+ "name": "kuacha malauí",
+ "symbol": "MWK"
+ },
+ "ZMW": {
+ "name": "kuacha zambiano",
+ "symbol": "ZMK"
+ },
+ "AOA": {
+ "name": "kuanza",
+ "symbol": "AOA"
+ },
+ "HRK": {
+ "name": "kuna",
+ "symbol": "HRK"
+ },
+ "GEL": {
+ "name": "lari",
+ "symbol": "GEL"
+ },
+ "ALL": {
+ "name": "lek",
+ "symbol": "ALL"
+ },
+ "HNL": {
+ "name": "lempira hondureño",
+ "symbol": "HNL"
+ },
+ "SLL": {
+ "name": "leona",
+ "symbol": "SLL"
+ },
+ "MDL": {
+ "name": "leu moldavo",
+ "symbol": "MDL"
+ },
+ "RON": {
+ "name": "leu rumano",
+ "symbol": "RON"
+ },
+ "BGN": {
+ "name": "leva",
+ "symbol": "BGN"
+ },
+ "FKP": {
+ "name": "libra de las Islas Malvinas",
+ "symbol": "FKP"
+ },
+ "SHP": {
+ "name": "libra de Santa Elena",
+ "symbol": "SHP"
+ },
+ "EGP": {
+ "name": "libra egipcia",
+ "symbol": "EGP"
+ },
+ "GBP": {
+ "name": "libra esterlina",
+ "symbol": "GBP"
+ },
+ "GIP": {
+ "name": "libra gibraltareña",
+ "symbol": "GIP"
+ },
+ "LBP": {
+ "name": "libra libanesa",
+ "symbol": "LBP"
+ },
+ "SYP": {
+ "name": "libra siria",
+ "symbol": "SYP"
+ },
+ "SDG": {
+ "name": "libra sudanesa",
+ "symbol": "SDG"
+ },
+ "SSP": {
+ "name": "libra sursudanesa",
+ "symbol": "SSP"
+ },
+ "SZL": {
+ "name": "lilangeni",
+ "symbol": "SZL"
+ },
+ "TRY": {
+ "name": "lira turca",
+ "symbol": "TRY"
+ },
+ "LTL": {
+ "name": "litas",
+ "symbol": "LTL"
+ },
+ "LSL": {
+ "name": "loti lesothense",
+ "symbol": "LSL"
+ },
+ "AZN": {
+ "name": "manat azerí",
+ "symbol": "AZN"
+ },
+ "TMT": {
+ "name": "manat turcomano",
+ "symbol": "TMT"
+ },
+ "BAM": {
+ "name": "marco convertible de Bosnia-Herzegovina",
+ "symbol": "BAM"
+ },
+ "MZN": {
+ "name": "metical",
+ "symbol": "MZN"
+ },
+ "NGN": {
+ "name": "naira",
+ "symbol": "NGN"
+ },
+ "ERN": {
+ "name": "nakfa",
+ "symbol": "ERN"
+ },
+ "TWD": {
+ "name": "nuevo dólar taiwanés",
+ "symbol": "TWD"
+ },
+ "ILS": {
+ "name": "nuevo sheqel israelí",
+ "symbol": "ILS"
+ },
+ "PEN": {
+ "name": "nuevo sol peruano",
+ "symbol": "PEN"
+ },
+ "TOP": {
+ "name": "paanga",
+ "symbol": "TOP"
+ },
+ "MOP": {
+ "name": "pataca",
+ "symbol": "MOP"
+ },
+ "ARS": {
+ "name": "peso argentino",
+ "symbol": "ARS"
+ },
+ "CLP": {
+ "name": "peso chileno",
+ "symbol": "CLP"
+ },
+ "COP": {
+ "name": "peso colombiano",
+ "symbol": "COP"
+ },
+ "CUP": {
+ "name": "peso cubano",
+ "symbol": "CUP"
+ },
+ "CUC": {
+ "name": "peso cubano convertible",
+ "symbol": "CUC"
+ },
+ "DOP": {
+ "name": "peso dominicano",
+ "symbol": "DOP"
+ },
+ "PHP": {
+ "name": "peso filipino",
+ "symbol": "PHP"
+ },
+ "MXN": {
+ "name": "peso mexicano",
+ "symbol": "MXN"
+ },
+ "UYU": {
+ "name": "peso uruguayo",
+ "symbol": "UYU"
+ },
+ "BWP": {
+ "name": "pula",
+ "symbol": "BWP"
+ },
+ "GTQ": {
+ "name": "quetzal guatemalteco",
+ "symbol": "GTQ"
+ },
+ "ZAR": {
+ "name": "rand",
+ "symbol": "ZAR"
+ },
+ "BRL": {
+ "name": "real brasileño",
+ "symbol": "BRL"
+ },
+ "QAR": {
+ "name": "rial catarí",
+ "symbol": "QAR"
+ },
+ "IRR": {
+ "name": "rial iraní",
+ "symbol": "IRR"
+ },
+ "OMR": {
+ "name": "rial omaní",
+ "symbol": "OMR"
+ },
+ "SAR": {
+ "name": "rial saudí",
+ "symbol": "SAR"
+ },
+ "YER": {
+ "name": "rial yemení",
+ "symbol": "YER"
+ },
+ "KHR": {
+ "name": "riel",
+ "symbol": "KHR"
+ },
+ "MYR": {
+ "name": "ringit",
+ "symbol": "MYR"
+ },
+ "BYR": {
+ "name": "rublo bielorruso",
+ "symbol": "BYR"
+ },
+ "RUB": {
+ "name": "rublo ruso",
+ "symbol": "RUB"
+ },
+ "MVR": {
+ "name": "rufiya",
+ "symbol": "MVR"
+ },
+ "LKR": {
+ "name": "rupia esrilanquesa",
+ "symbol": "LKR"
+ },
+ "INR": {
+ "name": "rupia india",
+ "symbol": "INR"
+ },
+ "IDR": {
+ "name": "rupia indonesia",
+ "symbol": "IDR"
+ },
+ "MUR": {
+ "name": "rupia mauriciana",
+ "symbol": "MUR"
+ },
+ "NPR": {
+ "name": "rupia nepalí",
+ "symbol": "NPR"
+ },
+ "PKR": {
+ "name": "rupia pakistaní",
+ "symbol": "PKR"
+ },
+ "SCR": {
+ "name": "rupia seychellense",
+ "symbol": "SCR"
+ },
+ "KGS": {
+ "name": "som",
+ "symbol": "KGS"
+ },
+ "TJS": {
+ "name": "somoni tayiko",
+ "symbol": "TJS"
+ },
+ "UZS": {
+ "name": "sum",
+ "symbol": "UZS"
+ },
+ "BDT": {
+ "name": "taka",
+ "symbol": "BDT"
+ },
+ "WST": {
+ "name": "tala",
+ "symbol": "WST"
+ },
+ "KZT": {
+ "name": "tenge kazako",
+ "symbol": "KZT"
+ },
+ "MNT": {
+ "name": "tugrik",
+ "symbol": "MNT"
+ },
+ "MRO": {
+ "name": "uguiya",
+ "symbol": "MRO"
+ },
+ "VUV": {
+ "name": "vatu",
+ "symbol": "VUV"
+ },
+ "KPW": {
+ "name": "won norcoreano",
+ "symbol": "KPW"
+ },
+ "KRW": {
+ "name": "won surcoreano",
+ "symbol": "KRW"
+ },
+ "JPY": {
+ "name": "yen",
+ "symbol": "JPY"
+ },
+ "CNY": {
+ "name": "yuan",
+ "symbol": "CNY"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/currency/es-SV.json b/library/intl/resources/currency/es-SV.json
new file mode 100644
index 000000000..a179e61e0
--- /dev/null
+++ b/library/intl/resources/currency/es-SV.json
@@ -0,0 +1,634 @@
+{
+ "AFN": {
+ "name": "afgani",
+ "symbol": "AFN"
+ },
+ "MGA": {
+ "name": "ariari",
+ "symbol": "MGA"
+ },
+ "PAB": {
+ "name": "balboa panameño",
+ "symbol": "PAB"
+ },
+ "THB": {
+ "name": "bat",
+ "symbol": "THB"
+ },
+ "ETB": {
+ "name": "bir",
+ "symbol": "ETB"
+ },
+ "VEF": {
+ "name": "bolívar venezolano",
+ "symbol": "VEF"
+ },
+ "BOB": {
+ "name": "boliviano",
+ "symbol": "BOB"
+ },
+ "GHS": {
+ "name": "cedi",
+ "symbol": "GHS"
+ },
+ "KES": {
+ "name": "chelín keniano",
+ "symbol": "KES"
+ },
+ "SOS": {
+ "name": "chelín somalí",
+ "symbol": "SOS"
+ },
+ "TZS": {
+ "name": "chelín tanzano",
+ "symbol": "TZS"
+ },
+ "UGX": {
+ "name": "chelín ugandés",
+ "symbol": "UGX"
+ },
+ "CRC": {
+ "name": "colón costarricense",
+ "symbol": "CRC"
+ },
+ "SVC": {
+ "name": "colón salvadoreño",
+ "symbol": "SVC"
+ },
+ "NIO": {
+ "name": "córdoba nicaragüense",
+ "symbol": "NIO"
+ },
+ "CZK": {
+ "name": "corona checa",
+ "symbol": "CZK"
+ },
+ "DKK": {
+ "name": "corona danesa",
+ "symbol": "DKK"
+ },
+ "ISK": {
+ "name": "corona islandesa",
+ "symbol": "ISK"
+ },
+ "NOK": {
+ "name": "corona noruega",
+ "symbol": "NOK"
+ },
+ "SEK": {
+ "name": "corona sueca",
+ "symbol": "SEK"
+ },
+ "GMD": {
+ "name": "dalasi",
+ "symbol": "GMD"
+ },
+ "DZD": {
+ "name": "dinar argelino",
+ "symbol": "DZD"
+ },
+ "BHD": {
+ "name": "dinar bahreiní",
+ "symbol": "BHD"
+ },
+ "IQD": {
+ "name": "dinar iraquí",
+ "symbol": "IQD"
+ },
+ "JOD": {
+ "name": "dinar jordano",
+ "symbol": "JOD"
+ },
+ "KWD": {
+ "name": "dinar kuwaití",
+ "symbol": "KWD"
+ },
+ "LYD": {
+ "name": "dinar libio",
+ "symbol": "LYD"
+ },
+ "MKD": {
+ "name": "dinar macedonio",
+ "symbol": "MKD"
+ },
+ "RSD": {
+ "name": "dinar serbio",
+ "symbol": "RSD"
+ },
+ "TND": {
+ "name": "dinar tunecino",
+ "symbol": "TND"
+ },
+ "AED": {
+ "name": "dírham de los Emiratos Ãrabes Unidos",
+ "symbol": "AED"
+ },
+ "MAD": {
+ "name": "dírham marroquí",
+ "symbol": "MAD"
+ },
+ "STD": {
+ "name": "dobra",
+ "symbol": "STD"
+ },
+ "AUD": {
+ "name": "dólar australiano",
+ "symbol": "AUD"
+ },
+ "BSD": {
+ "name": "dólar bahameño",
+ "symbol": "BSD"
+ },
+ "BBD": {
+ "name": "dólar barbadense",
+ "symbol": "BBD"
+ },
+ "BZD": {
+ "name": "dólar beliceño",
+ "symbol": "BZD"
+ },
+ "BND": {
+ "name": "dólar bruneano",
+ "symbol": "BND"
+ },
+ "CAD": {
+ "name": "dólar canadiense",
+ "symbol": "CAD"
+ },
+ "BMD": {
+ "name": "dólar de Bermudas",
+ "symbol": "BMD"
+ },
+ "KYD": {
+ "name": "dólar de las Islas Caimán",
+ "symbol": "KYD"
+ },
+ "TTD": {
+ "name": "dólar de Trinidad y Tobago",
+ "symbol": "TTD"
+ },
+ "XCD": {
+ "name": "dólar del Caribe Oriental",
+ "symbol": "XCD"
+ },
+ "USD": {
+ "name": "dólar estadounidense",
+ "symbol": "$"
+ },
+ "FJD": {
+ "name": "dólar fiyiano",
+ "symbol": "FJD"
+ },
+ "GYD": {
+ "name": "dólar guyanés",
+ "symbol": "GYD"
+ },
+ "HKD": {
+ "name": "dólar hongkonés",
+ "symbol": "HKD"
+ },
+ "JMD": {
+ "name": "dólar jamaicano",
+ "symbol": "JMD"
+ },
+ "LRD": {
+ "name": "dólar liberiano",
+ "symbol": "LRD"
+ },
+ "NAD": {
+ "name": "dólar namibio",
+ "symbol": "NAD"
+ },
+ "NZD": {
+ "name": "dólar neozelandés",
+ "symbol": "NZD"
+ },
+ "SBD": {
+ "name": "dólar salomonense",
+ "symbol": "SBD"
+ },
+ "SGD": {
+ "name": "dólar singapurense",
+ "symbol": "SGD"
+ },
+ "SRD": {
+ "name": "dólar surinamés",
+ "symbol": "SRD"
+ },
+ "ZWL": {
+ "name": "dólar zimbabuense",
+ "symbol": "ZWL"
+ },
+ "VND": {
+ "name": "dong",
+ "symbol": "VND"
+ },
+ "AMD": {
+ "name": "dram",
+ "symbol": "AMD"
+ },
+ "CVE": {
+ "name": "escudo de Cabo Verde",
+ "symbol": "CVE"
+ },
+ "PLN": {
+ "name": "esloti",
+ "symbol": "PLN"
+ },
+ "EUR": {
+ "name": "euro",
+ "symbol": "EUR"
+ },
+ "AWG": {
+ "name": "florín arubeño",
+ "symbol": "AWG"
+ },
+ "ANG": {
+ "name": "florín de las Antillas Neerlandesas",
+ "symbol": "ANG"
+ },
+ "HUF": {
+ "name": "forinto",
+ "symbol": "HUF"
+ },
+ "BIF": {
+ "name": "franco burundés",
+ "symbol": "BIF"
+ },
+ "XOF": {
+ "name": "franco CFA BCEAO",
+ "symbol": "XOF"
+ },
+ "XAF": {
+ "name": "franco CFA BEAC",
+ "symbol": "XAF"
+ },
+ "XPF": {
+ "name": "franco CFP",
+ "symbol": "CFPF"
+ },
+ "KMF": {
+ "name": "franco comorense",
+ "symbol": "KMF"
+ },
+ "CDF": {
+ "name": "franco congoleño",
+ "symbol": "CDF"
+ },
+ "GNF": {
+ "name": "franco guineano",
+ "symbol": "GNF"
+ },
+ "RWF": {
+ "name": "franco ruandés",
+ "symbol": "RWF"
+ },
+ "CHF": {
+ "name": "franco suizo",
+ "symbol": "CHF"
+ },
+ "DJF": {
+ "name": "franco yibutiano",
+ "symbol": "DJF"
+ },
+ "HTG": {
+ "name": "gourde haitiano",
+ "symbol": "HTG"
+ },
+ "UAH": {
+ "name": "grivna",
+ "symbol": "UAH"
+ },
+ "PYG": {
+ "name": "guaraní paraguayo",
+ "symbol": "PYG"
+ },
+ "BTN": {
+ "name": "gultrum",
+ "symbol": "BTN"
+ },
+ "MMK": {
+ "name": "kiat",
+ "symbol": "MMK"
+ },
+ "PGK": {
+ "name": "kina",
+ "symbol": "PGK"
+ },
+ "LAK": {
+ "name": "kip",
+ "symbol": "LAK"
+ },
+ "MWK": {
+ "name": "kuacha malauí",
+ "symbol": "MWK"
+ },
+ "ZMW": {
+ "name": "kuacha zambiano",
+ "symbol": "ZMK"
+ },
+ "AOA": {
+ "name": "kuanza",
+ "symbol": "AOA"
+ },
+ "HRK": {
+ "name": "kuna",
+ "symbol": "HRK"
+ },
+ "GEL": {
+ "name": "lari",
+ "symbol": "GEL"
+ },
+ "ALL": {
+ "name": "lek",
+ "symbol": "ALL"
+ },
+ "HNL": {
+ "name": "lempira hondureño",
+ "symbol": "HNL"
+ },
+ "SLL": {
+ "name": "leona",
+ "symbol": "SLL"
+ },
+ "MDL": {
+ "name": "leu moldavo",
+ "symbol": "MDL"
+ },
+ "RON": {
+ "name": "leu rumano",
+ "symbol": "RON"
+ },
+ "BGN": {
+ "name": "leva",
+ "symbol": "BGN"
+ },
+ "FKP": {
+ "name": "libra de las Islas Malvinas",
+ "symbol": "FKP"
+ },
+ "SHP": {
+ "name": "libra de Santa Elena",
+ "symbol": "SHP"
+ },
+ "EGP": {
+ "name": "libra egipcia",
+ "symbol": "EGP"
+ },
+ "GBP": {
+ "name": "libra esterlina",
+ "symbol": "GBP"
+ },
+ "GIP": {
+ "name": "libra gibraltareña",
+ "symbol": "GIP"
+ },
+ "LBP": {
+ "name": "libra libanesa",
+ "symbol": "LBP"
+ },
+ "SYP": {
+ "name": "libra siria",
+ "symbol": "SYP"
+ },
+ "SDG": {
+ "name": "libra sudanesa",
+ "symbol": "SDG"
+ },
+ "SSP": {
+ "name": "libra sursudanesa",
+ "symbol": "SSP"
+ },
+ "SZL": {
+ "name": "lilangeni",
+ "symbol": "SZL"
+ },
+ "TRY": {
+ "name": "lira turca",
+ "symbol": "TRY"
+ },
+ "LTL": {
+ "name": "litas",
+ "symbol": "LTL"
+ },
+ "LSL": {
+ "name": "loti lesothense",
+ "symbol": "LSL"
+ },
+ "AZN": {
+ "name": "manat azerí",
+ "symbol": "AZN"
+ },
+ "TMT": {
+ "name": "manat turcomano",
+ "symbol": "TMT"
+ },
+ "BAM": {
+ "name": "marco convertible de Bosnia-Herzegovina",
+ "symbol": "BAM"
+ },
+ "MZN": {
+ "name": "metical",
+ "symbol": "MZN"
+ },
+ "NGN": {
+ "name": "naira",
+ "symbol": "NGN"
+ },
+ "ERN": {
+ "name": "nakfa",
+ "symbol": "ERN"
+ },
+ "TWD": {
+ "name": "nuevo dólar taiwanés",
+ "symbol": "TWD"
+ },
+ "ILS": {
+ "name": "nuevo sheqel israelí",
+ "symbol": "ILS"
+ },
+ "PEN": {
+ "name": "nuevo sol peruano",
+ "symbol": "PEN"
+ },
+ "TOP": {
+ "name": "paanga",
+ "symbol": "TOP"
+ },
+ "MOP": {
+ "name": "pataca",
+ "symbol": "MOP"
+ },
+ "ARS": {
+ "name": "peso argentino",
+ "symbol": "ARS"
+ },
+ "CLP": {
+ "name": "peso chileno",
+ "symbol": "CLP"
+ },
+ "COP": {
+ "name": "peso colombiano",
+ "symbol": "COP"
+ },
+ "CUP": {
+ "name": "peso cubano",
+ "symbol": "CUP"
+ },
+ "CUC": {
+ "name": "peso cubano convertible",
+ "symbol": "CUC"
+ },
+ "DOP": {
+ "name": "peso dominicano",
+ "symbol": "DOP"
+ },
+ "PHP": {
+ "name": "peso filipino",
+ "symbol": "PHP"
+ },
+ "MXN": {
+ "name": "peso mexicano",
+ "symbol": "MXN"
+ },
+ "UYU": {
+ "name": "peso uruguayo",
+ "symbol": "UYU"
+ },
+ "BWP": {
+ "name": "pula",
+ "symbol": "BWP"
+ },
+ "GTQ": {
+ "name": "quetzal guatemalteco",
+ "symbol": "GTQ"
+ },
+ "ZAR": {
+ "name": "rand",
+ "symbol": "ZAR"
+ },
+ "BRL": {
+ "name": "real brasileño",
+ "symbol": "BRL"
+ },
+ "QAR": {
+ "name": "rial catarí",
+ "symbol": "QAR"
+ },
+ "IRR": {
+ "name": "rial iraní",
+ "symbol": "IRR"
+ },
+ "OMR": {
+ "name": "rial omaní",
+ "symbol": "OMR"
+ },
+ "SAR": {
+ "name": "rial saudí",
+ "symbol": "SAR"
+ },
+ "YER": {
+ "name": "rial yemení",
+ "symbol": "YER"
+ },
+ "KHR": {
+ "name": "riel",
+ "symbol": "KHR"
+ },
+ "MYR": {
+ "name": "ringit",
+ "symbol": "MYR"
+ },
+ "BYR": {
+ "name": "rublo bielorruso",
+ "symbol": "BYR"
+ },
+ "RUB": {
+ "name": "rublo ruso",
+ "symbol": "RUB"
+ },
+ "MVR": {
+ "name": "rufiya",
+ "symbol": "MVR"
+ },
+ "LKR": {
+ "name": "rupia esrilanquesa",
+ "symbol": "LKR"
+ },
+ "INR": {
+ "name": "rupia india",
+ "symbol": "INR"
+ },
+ "IDR": {
+ "name": "rupia indonesia",
+ "symbol": "IDR"
+ },
+ "MUR": {
+ "name": "rupia mauriciana",
+ "symbol": "MUR"
+ },
+ "NPR": {
+ "name": "rupia nepalí",
+ "symbol": "NPR"
+ },
+ "PKR": {
+ "name": "rupia pakistaní",
+ "symbol": "PKR"
+ },
+ "SCR": {
+ "name": "rupia seychellense",
+ "symbol": "SCR"
+ },
+ "KGS": {
+ "name": "som",
+ "symbol": "KGS"
+ },
+ "TJS": {
+ "name": "somoni tayiko",
+ "symbol": "TJS"
+ },
+ "UZS": {
+ "name": "sum",
+ "symbol": "UZS"
+ },
+ "BDT": {
+ "name": "taka",
+ "symbol": "BDT"
+ },
+ "WST": {
+ "name": "tala",
+ "symbol": "WST"
+ },
+ "KZT": {
+ "name": "tenge kazako",
+ "symbol": "KZT"
+ },
+ "MNT": {
+ "name": "tugrik",
+ "symbol": "MNT"
+ },
+ "MRO": {
+ "name": "uguiya",
+ "symbol": "MRO"
+ },
+ "VUV": {
+ "name": "vatu",
+ "symbol": "VUV"
+ },
+ "KPW": {
+ "name": "won norcoreano",
+ "symbol": "KPW"
+ },
+ "KRW": {
+ "name": "won surcoreano",
+ "symbol": "KRW"
+ },
+ "JPY": {
+ "name": "yen",
+ "symbol": "JPY"
+ },
+ "CNY": {
+ "name": "yuan",
+ "symbol": "CNY"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/currency/es-US.json b/library/intl/resources/currency/es-US.json
new file mode 100644
index 000000000..946b66bba
--- /dev/null
+++ b/library/intl/resources/currency/es-US.json
@@ -0,0 +1,634 @@
+{
+ "AFN": {
+ "name": "afgani",
+ "symbol": "AFN"
+ },
+ "MGA": {
+ "name": "ariari",
+ "symbol": "MGA"
+ },
+ "PAB": {
+ "name": "balboa panameño",
+ "symbol": "PAB"
+ },
+ "THB": {
+ "name": "bat",
+ "symbol": "THB"
+ },
+ "ETB": {
+ "name": "bir",
+ "symbol": "ETB"
+ },
+ "VEF": {
+ "name": "bolívar venezolano",
+ "symbol": "VEF"
+ },
+ "BOB": {
+ "name": "boliviano",
+ "symbol": "BOB"
+ },
+ "GHS": {
+ "name": "cedi",
+ "symbol": "GHS"
+ },
+ "KES": {
+ "name": "chelín keniano",
+ "symbol": "KES"
+ },
+ "SOS": {
+ "name": "chelín somalí",
+ "symbol": "SOS"
+ },
+ "TZS": {
+ "name": "chelín tanzano",
+ "symbol": "TZS"
+ },
+ "UGX": {
+ "name": "chelín ugandés",
+ "symbol": "UGX"
+ },
+ "CRC": {
+ "name": "colón costarricense",
+ "symbol": "CRC"
+ },
+ "SVC": {
+ "name": "colón salvadoreño",
+ "symbol": "SVC"
+ },
+ "NIO": {
+ "name": "córdoba nicaragüense",
+ "symbol": "NIO"
+ },
+ "CZK": {
+ "name": "corona checa",
+ "symbol": "CZK"
+ },
+ "DKK": {
+ "name": "corona danesa",
+ "symbol": "DKK"
+ },
+ "ISK": {
+ "name": "corona islandesa",
+ "symbol": "ISK"
+ },
+ "NOK": {
+ "name": "corona noruega",
+ "symbol": "NOK"
+ },
+ "SEK": {
+ "name": "corona sueca",
+ "symbol": "SEK"
+ },
+ "GMD": {
+ "name": "dalasi",
+ "symbol": "GMD"
+ },
+ "DZD": {
+ "name": "dinar argelino",
+ "symbol": "DZD"
+ },
+ "BHD": {
+ "name": "dinar bahreiní",
+ "symbol": "BHD"
+ },
+ "IQD": {
+ "name": "dinar iraquí",
+ "symbol": "IQD"
+ },
+ "JOD": {
+ "name": "dinar jordano",
+ "symbol": "JOD"
+ },
+ "KWD": {
+ "name": "dinar kuwaití",
+ "symbol": "KWD"
+ },
+ "LYD": {
+ "name": "dinar libio",
+ "symbol": "LYD"
+ },
+ "MKD": {
+ "name": "dinar macedonio",
+ "symbol": "MKD"
+ },
+ "RSD": {
+ "name": "dinar serbio",
+ "symbol": "RSD"
+ },
+ "TND": {
+ "name": "dinar tunecino",
+ "symbol": "TND"
+ },
+ "AED": {
+ "name": "dírham de los Emiratos Ãrabes Unidos",
+ "symbol": "AED"
+ },
+ "MAD": {
+ "name": "dírham marroquí",
+ "symbol": "MAD"
+ },
+ "STD": {
+ "name": "dobra",
+ "symbol": "STD"
+ },
+ "AUD": {
+ "name": "dólar australiano",
+ "symbol": "AUD"
+ },
+ "BSD": {
+ "name": "dólar bahameño",
+ "symbol": "BSD"
+ },
+ "BBD": {
+ "name": "dólar barbadense",
+ "symbol": "BBD"
+ },
+ "BZD": {
+ "name": "dólar beliceño",
+ "symbol": "BZD"
+ },
+ "BND": {
+ "name": "dólar bruneano",
+ "symbol": "BND"
+ },
+ "CAD": {
+ "name": "dólar canadiense",
+ "symbol": "CAD"
+ },
+ "BMD": {
+ "name": "dólar de Bermudas",
+ "symbol": "BMD"
+ },
+ "KYD": {
+ "name": "dólar de las Islas Caimán",
+ "symbol": "KYD"
+ },
+ "TTD": {
+ "name": "dólar de Trinidad y Tobago",
+ "symbol": "TTD"
+ },
+ "XCD": {
+ "name": "dólar del Caribe Oriental",
+ "symbol": "XCD"
+ },
+ "USD": {
+ "name": "dólar estadounidense",
+ "symbol": "$"
+ },
+ "FJD": {
+ "name": "dólar fiyiano",
+ "symbol": "FJD"
+ },
+ "GYD": {
+ "name": "dólar guyanés",
+ "symbol": "GYD"
+ },
+ "HKD": {
+ "name": "dólar hongkonés",
+ "symbol": "HKD"
+ },
+ "JMD": {
+ "name": "dólar jamaicano",
+ "symbol": "JMD"
+ },
+ "LRD": {
+ "name": "dólar liberiano",
+ "symbol": "LRD"
+ },
+ "NAD": {
+ "name": "dólar namibio",
+ "symbol": "NAD"
+ },
+ "NZD": {
+ "name": "dólar neozelandés",
+ "symbol": "NZD"
+ },
+ "SBD": {
+ "name": "dólar salomonense",
+ "symbol": "SBD"
+ },
+ "SGD": {
+ "name": "dólar singapurense",
+ "symbol": "SGD"
+ },
+ "SRD": {
+ "name": "dólar surinamés",
+ "symbol": "SRD"
+ },
+ "ZWL": {
+ "name": "dólar zimbabuense",
+ "symbol": "ZWL"
+ },
+ "VND": {
+ "name": "dong",
+ "symbol": "VND"
+ },
+ "AMD": {
+ "name": "dram",
+ "symbol": "AMD"
+ },
+ "CVE": {
+ "name": "escudo de Cabo Verde",
+ "symbol": "CVE"
+ },
+ "PLN": {
+ "name": "esloti",
+ "symbol": "PLN"
+ },
+ "EUR": {
+ "name": "euro",
+ "symbol": "EUR"
+ },
+ "AWG": {
+ "name": "florín arubeño",
+ "symbol": "AWG"
+ },
+ "ANG": {
+ "name": "florín de las Antillas Neerlandesas",
+ "symbol": "ANG"
+ },
+ "HUF": {
+ "name": "forinto",
+ "symbol": "HUF"
+ },
+ "BIF": {
+ "name": "franco burundés",
+ "symbol": "BIF"
+ },
+ "XOF": {
+ "name": "franco CFA BCEAO",
+ "symbol": "XOF"
+ },
+ "XAF": {
+ "name": "franco CFA BEAC",
+ "symbol": "XAF"
+ },
+ "XPF": {
+ "name": "franco CFP",
+ "symbol": "CFPF"
+ },
+ "KMF": {
+ "name": "franco comorense",
+ "symbol": "KMF"
+ },
+ "CDF": {
+ "name": "franco congoleño",
+ "symbol": "CDF"
+ },
+ "GNF": {
+ "name": "franco guineano",
+ "symbol": "GNF"
+ },
+ "RWF": {
+ "name": "franco ruandés",
+ "symbol": "RWF"
+ },
+ "CHF": {
+ "name": "franco suizo",
+ "symbol": "CHF"
+ },
+ "DJF": {
+ "name": "franco yibutiano",
+ "symbol": "DJF"
+ },
+ "HTG": {
+ "name": "gourde haitiano",
+ "symbol": "HTG"
+ },
+ "UAH": {
+ "name": "grivna",
+ "symbol": "UAH"
+ },
+ "PYG": {
+ "name": "guaraní paraguayo",
+ "symbol": "PYG"
+ },
+ "BTN": {
+ "name": "gultrum",
+ "symbol": "BTN"
+ },
+ "MMK": {
+ "name": "kiat",
+ "symbol": "MMK"
+ },
+ "PGK": {
+ "name": "kina",
+ "symbol": "PGK"
+ },
+ "LAK": {
+ "name": "kip",
+ "symbol": "LAK"
+ },
+ "MWK": {
+ "name": "kuacha malauí",
+ "symbol": "MWK"
+ },
+ "ZMW": {
+ "name": "kuacha zambiano",
+ "symbol": "ZMK"
+ },
+ "AOA": {
+ "name": "kuanza",
+ "symbol": "AOA"
+ },
+ "HRK": {
+ "name": "kuna",
+ "symbol": "HRK"
+ },
+ "GEL": {
+ "name": "lari",
+ "symbol": "GEL"
+ },
+ "ALL": {
+ "name": "lek",
+ "symbol": "ALL"
+ },
+ "HNL": {
+ "name": "lempira hondureño",
+ "symbol": "HNL"
+ },
+ "SLL": {
+ "name": "leona",
+ "symbol": "SLL"
+ },
+ "MDL": {
+ "name": "leu moldavo",
+ "symbol": "MDL"
+ },
+ "RON": {
+ "name": "leu rumano",
+ "symbol": "RON"
+ },
+ "BGN": {
+ "name": "leva",
+ "symbol": "BGN"
+ },
+ "FKP": {
+ "name": "libra de las Islas Malvinas",
+ "symbol": "FKP"
+ },
+ "SHP": {
+ "name": "libra de Santa Elena",
+ "symbol": "SHP"
+ },
+ "EGP": {
+ "name": "libra egipcia",
+ "symbol": "EGP"
+ },
+ "GBP": {
+ "name": "libra esterlina",
+ "symbol": "GBP"
+ },
+ "GIP": {
+ "name": "libra gibraltareña",
+ "symbol": "GIP"
+ },
+ "LBP": {
+ "name": "libra libanesa",
+ "symbol": "LBP"
+ },
+ "SYP": {
+ "name": "libra siria",
+ "symbol": "SYP"
+ },
+ "SDG": {
+ "name": "libra sudanesa",
+ "symbol": "SDG"
+ },
+ "SSP": {
+ "name": "libra sursudanesa",
+ "symbol": "SSP"
+ },
+ "SZL": {
+ "name": "lilangeni",
+ "symbol": "SZL"
+ },
+ "TRY": {
+ "name": "lira turca",
+ "symbol": "TRY"
+ },
+ "LTL": {
+ "name": "litas",
+ "symbol": "LTL"
+ },
+ "LSL": {
+ "name": "loti lesothense",
+ "symbol": "LSL"
+ },
+ "AZN": {
+ "name": "manat azerí",
+ "symbol": "AZN"
+ },
+ "TMT": {
+ "name": "manat turcomano",
+ "symbol": "TMT"
+ },
+ "BAM": {
+ "name": "marco convertible de Bosnia-Herzegovina",
+ "symbol": "BAM"
+ },
+ "MZN": {
+ "name": "metical",
+ "symbol": "MZN"
+ },
+ "NGN": {
+ "name": "naira",
+ "symbol": "NGN"
+ },
+ "ERN": {
+ "name": "nakfa",
+ "symbol": "ERN"
+ },
+ "TWD": {
+ "name": "nuevo dólar taiwanés",
+ "symbol": "TWD"
+ },
+ "ILS": {
+ "name": "nuevo sheqel israelí",
+ "symbol": "ILS"
+ },
+ "PEN": {
+ "name": "nuevo sol peruano",
+ "symbol": "PEN"
+ },
+ "TOP": {
+ "name": "paanga",
+ "symbol": "TOP"
+ },
+ "MOP": {
+ "name": "pataca",
+ "symbol": "MOP"
+ },
+ "ARS": {
+ "name": "peso argentino",
+ "symbol": "ARS"
+ },
+ "CLP": {
+ "name": "peso chileno",
+ "symbol": "CLP"
+ },
+ "COP": {
+ "name": "peso colombiano",
+ "symbol": "COP"
+ },
+ "CUP": {
+ "name": "peso cubano",
+ "symbol": "CUP"
+ },
+ "CUC": {
+ "name": "peso cubano convertible",
+ "symbol": "CUC"
+ },
+ "DOP": {
+ "name": "peso dominicano",
+ "symbol": "DOP"
+ },
+ "PHP": {
+ "name": "peso filipino",
+ "symbol": "PHP"
+ },
+ "MXN": {
+ "name": "peso mexicano",
+ "symbol": "MXN"
+ },
+ "UYU": {
+ "name": "peso uruguayo",
+ "symbol": "UYU"
+ },
+ "BWP": {
+ "name": "pula",
+ "symbol": "BWP"
+ },
+ "GTQ": {
+ "name": "quetzal guatemalteco",
+ "symbol": "GTQ"
+ },
+ "ZAR": {
+ "name": "rand",
+ "symbol": "ZAR"
+ },
+ "BRL": {
+ "name": "real brasileño",
+ "symbol": "BRL"
+ },
+ "QAR": {
+ "name": "rial catarí",
+ "symbol": "QAR"
+ },
+ "IRR": {
+ "name": "rial iraní",
+ "symbol": "IRR"
+ },
+ "OMR": {
+ "name": "rial omaní",
+ "symbol": "OMR"
+ },
+ "SAR": {
+ "name": "rial saudí",
+ "symbol": "SAR"
+ },
+ "YER": {
+ "name": "rial yemení",
+ "symbol": "YER"
+ },
+ "KHR": {
+ "name": "riel",
+ "symbol": "KHR"
+ },
+ "MYR": {
+ "name": "ringit",
+ "symbol": "MYR"
+ },
+ "BYR": {
+ "name": "rublo bielorruso",
+ "symbol": "BYR"
+ },
+ "RUB": {
+ "name": "rublo ruso",
+ "symbol": "RUB"
+ },
+ "MVR": {
+ "name": "rufiya",
+ "symbol": "MVR"
+ },
+ "LKR": {
+ "name": "rupia esrilanquesa",
+ "symbol": "LKR"
+ },
+ "INR": {
+ "name": "rupia india",
+ "symbol": "INR"
+ },
+ "IDR": {
+ "name": "rupia indonesia",
+ "symbol": "IDR"
+ },
+ "MUR": {
+ "name": "rupia mauriciana",
+ "symbol": "MUR"
+ },
+ "NPR": {
+ "name": "rupia nepalí",
+ "symbol": "NPR"
+ },
+ "PKR": {
+ "name": "rupia pakistaní",
+ "symbol": "PKR"
+ },
+ "SCR": {
+ "name": "rupia seychellense",
+ "symbol": "SCR"
+ },
+ "KGS": {
+ "name": "som",
+ "symbol": "KGS"
+ },
+ "TJS": {
+ "name": "somoni tayiko",
+ "symbol": "TJS"
+ },
+ "UZS": {
+ "name": "sum",
+ "symbol": "UZS"
+ },
+ "BDT": {
+ "name": "taka",
+ "symbol": "BDT"
+ },
+ "WST": {
+ "name": "tala",
+ "symbol": "WST"
+ },
+ "KZT": {
+ "name": "tenge kazako",
+ "symbol": "KZT"
+ },
+ "MNT": {
+ "name": "tugrik",
+ "symbol": "MNT"
+ },
+ "MRO": {
+ "name": "uguiya",
+ "symbol": "MRO"
+ },
+ "VUV": {
+ "name": "vatu",
+ "symbol": "VUV"
+ },
+ "KPW": {
+ "name": "won norcoreano",
+ "symbol": "KPW"
+ },
+ "KRW": {
+ "name": "won surcoreano",
+ "symbol": "KRW"
+ },
+ "JPY": {
+ "name": "yen",
+ "symbol": "Â¥"
+ },
+ "CNY": {
+ "name": "yuan",
+ "symbol": "CNY"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/currency/es-UY.json b/library/intl/resources/currency/es-UY.json
new file mode 100644
index 000000000..848dfdeb0
--- /dev/null
+++ b/library/intl/resources/currency/es-UY.json
@@ -0,0 +1,634 @@
+{
+ "AFN": {
+ "name": "afgani",
+ "symbol": "AFN"
+ },
+ "MGA": {
+ "name": "ariari",
+ "symbol": "MGA"
+ },
+ "PAB": {
+ "name": "balboa panameño",
+ "symbol": "PAB"
+ },
+ "THB": {
+ "name": "bat",
+ "symbol": "THB"
+ },
+ "ETB": {
+ "name": "bir",
+ "symbol": "ETB"
+ },
+ "VEF": {
+ "name": "bolívar venezolano",
+ "symbol": "VEF"
+ },
+ "BOB": {
+ "name": "boliviano",
+ "symbol": "BOB"
+ },
+ "GHS": {
+ "name": "cedi",
+ "symbol": "GHS"
+ },
+ "KES": {
+ "name": "chelín keniano",
+ "symbol": "KES"
+ },
+ "SOS": {
+ "name": "chelín somalí",
+ "symbol": "SOS"
+ },
+ "TZS": {
+ "name": "chelín tanzano",
+ "symbol": "TZS"
+ },
+ "UGX": {
+ "name": "chelín ugandés",
+ "symbol": "UGX"
+ },
+ "CRC": {
+ "name": "colón costarricense",
+ "symbol": "CRC"
+ },
+ "SVC": {
+ "name": "colón salvadoreño",
+ "symbol": "SVC"
+ },
+ "NIO": {
+ "name": "córdoba nicaragüense",
+ "symbol": "NIO"
+ },
+ "CZK": {
+ "name": "corona checa",
+ "symbol": "CZK"
+ },
+ "DKK": {
+ "name": "corona danesa",
+ "symbol": "DKK"
+ },
+ "ISK": {
+ "name": "corona islandesa",
+ "symbol": "ISK"
+ },
+ "NOK": {
+ "name": "corona noruega",
+ "symbol": "NOK"
+ },
+ "SEK": {
+ "name": "corona sueca",
+ "symbol": "SEK"
+ },
+ "GMD": {
+ "name": "dalasi",
+ "symbol": "GMD"
+ },
+ "DZD": {
+ "name": "dinar argelino",
+ "symbol": "DZD"
+ },
+ "BHD": {
+ "name": "dinar bahreiní",
+ "symbol": "BHD"
+ },
+ "IQD": {
+ "name": "dinar iraquí",
+ "symbol": "IQD"
+ },
+ "JOD": {
+ "name": "dinar jordano",
+ "symbol": "JOD"
+ },
+ "KWD": {
+ "name": "dinar kuwaití",
+ "symbol": "KWD"
+ },
+ "LYD": {
+ "name": "dinar libio",
+ "symbol": "LYD"
+ },
+ "MKD": {
+ "name": "dinar macedonio",
+ "symbol": "MKD"
+ },
+ "RSD": {
+ "name": "dinar serbio",
+ "symbol": "RSD"
+ },
+ "TND": {
+ "name": "dinar tunecino",
+ "symbol": "TND"
+ },
+ "AED": {
+ "name": "dírham de los Emiratos Ãrabes Unidos",
+ "symbol": "AED"
+ },
+ "MAD": {
+ "name": "dírham marroquí",
+ "symbol": "MAD"
+ },
+ "STD": {
+ "name": "dobra",
+ "symbol": "STD"
+ },
+ "AUD": {
+ "name": "dólar australiano",
+ "symbol": "AUD"
+ },
+ "BSD": {
+ "name": "dólar bahameño",
+ "symbol": "BSD"
+ },
+ "BBD": {
+ "name": "dólar barbadense",
+ "symbol": "BBD"
+ },
+ "BZD": {
+ "name": "dólar beliceño",
+ "symbol": "BZD"
+ },
+ "BND": {
+ "name": "dólar bruneano",
+ "symbol": "BND"
+ },
+ "CAD": {
+ "name": "dólar canadiense",
+ "symbol": "CAD"
+ },
+ "BMD": {
+ "name": "dólar de Bermudas",
+ "symbol": "BMD"
+ },
+ "KYD": {
+ "name": "dólar de las Islas Caimán",
+ "symbol": "KYD"
+ },
+ "TTD": {
+ "name": "dólar de Trinidad y Tobago",
+ "symbol": "TTD"
+ },
+ "XCD": {
+ "name": "dólar del Caribe Oriental",
+ "symbol": "XCD"
+ },
+ "USD": {
+ "name": "dólar estadounidense",
+ "symbol": "US$"
+ },
+ "FJD": {
+ "name": "dólar fiyiano",
+ "symbol": "FJD"
+ },
+ "GYD": {
+ "name": "dólar guyanés",
+ "symbol": "GYD"
+ },
+ "HKD": {
+ "name": "dólar hongkonés",
+ "symbol": "HKD"
+ },
+ "JMD": {
+ "name": "dólar jamaicano",
+ "symbol": "JMD"
+ },
+ "LRD": {
+ "name": "dólar liberiano",
+ "symbol": "LRD"
+ },
+ "NAD": {
+ "name": "dólar namibio",
+ "symbol": "NAD"
+ },
+ "NZD": {
+ "name": "dólar neozelandés",
+ "symbol": "NZD"
+ },
+ "SBD": {
+ "name": "dólar salomonense",
+ "symbol": "SBD"
+ },
+ "SGD": {
+ "name": "dólar singapurense",
+ "symbol": "SGD"
+ },
+ "SRD": {
+ "name": "dólar surinamés",
+ "symbol": "SRD"
+ },
+ "ZWL": {
+ "name": "dólar zimbabuense",
+ "symbol": "ZWL"
+ },
+ "VND": {
+ "name": "dong",
+ "symbol": "VND"
+ },
+ "AMD": {
+ "name": "dram",
+ "symbol": "AMD"
+ },
+ "CVE": {
+ "name": "escudo de Cabo Verde",
+ "symbol": "CVE"
+ },
+ "PLN": {
+ "name": "esloti",
+ "symbol": "PLN"
+ },
+ "EUR": {
+ "name": "euro",
+ "symbol": "EUR"
+ },
+ "AWG": {
+ "name": "florín arubeño",
+ "symbol": "AWG"
+ },
+ "ANG": {
+ "name": "florín de las Antillas Neerlandesas",
+ "symbol": "ANG"
+ },
+ "HUF": {
+ "name": "forinto",
+ "symbol": "HUF"
+ },
+ "BIF": {
+ "name": "franco burundés",
+ "symbol": "BIF"
+ },
+ "XOF": {
+ "name": "franco CFA BCEAO",
+ "symbol": "XOF"
+ },
+ "XAF": {
+ "name": "franco CFA BEAC",
+ "symbol": "XAF"
+ },
+ "XPF": {
+ "name": "franco CFP",
+ "symbol": "CFPF"
+ },
+ "KMF": {
+ "name": "franco comorense",
+ "symbol": "KMF"
+ },
+ "CDF": {
+ "name": "franco congoleño",
+ "symbol": "CDF"
+ },
+ "GNF": {
+ "name": "franco guineano",
+ "symbol": "GNF"
+ },
+ "RWF": {
+ "name": "franco ruandés",
+ "symbol": "RWF"
+ },
+ "CHF": {
+ "name": "franco suizo",
+ "symbol": "CHF"
+ },
+ "DJF": {
+ "name": "franco yibutiano",
+ "symbol": "DJF"
+ },
+ "HTG": {
+ "name": "gourde haitiano",
+ "symbol": "HTG"
+ },
+ "UAH": {
+ "name": "grivna",
+ "symbol": "UAH"
+ },
+ "PYG": {
+ "name": "guaraní paraguayo",
+ "symbol": "PYG"
+ },
+ "BTN": {
+ "name": "gultrum",
+ "symbol": "BTN"
+ },
+ "MMK": {
+ "name": "kiat",
+ "symbol": "MMK"
+ },
+ "PGK": {
+ "name": "kina",
+ "symbol": "PGK"
+ },
+ "LAK": {
+ "name": "kip",
+ "symbol": "LAK"
+ },
+ "MWK": {
+ "name": "kuacha malauí",
+ "symbol": "MWK"
+ },
+ "ZMW": {
+ "name": "kuacha zambiano",
+ "symbol": "ZMK"
+ },
+ "AOA": {
+ "name": "kuanza",
+ "symbol": "AOA"
+ },
+ "HRK": {
+ "name": "kuna",
+ "symbol": "HRK"
+ },
+ "GEL": {
+ "name": "lari",
+ "symbol": "GEL"
+ },
+ "ALL": {
+ "name": "lek",
+ "symbol": "ALL"
+ },
+ "HNL": {
+ "name": "lempira hondureño",
+ "symbol": "HNL"
+ },
+ "SLL": {
+ "name": "leona",
+ "symbol": "SLL"
+ },
+ "MDL": {
+ "name": "leu moldavo",
+ "symbol": "MDL"
+ },
+ "RON": {
+ "name": "leu rumano",
+ "symbol": "RON"
+ },
+ "BGN": {
+ "name": "leva",
+ "symbol": "BGN"
+ },
+ "FKP": {
+ "name": "libra de las Islas Malvinas",
+ "symbol": "FKP"
+ },
+ "SHP": {
+ "name": "libra de Santa Elena",
+ "symbol": "SHP"
+ },
+ "EGP": {
+ "name": "libra egipcia",
+ "symbol": "EGP"
+ },
+ "GBP": {
+ "name": "libra esterlina",
+ "symbol": "GBP"
+ },
+ "GIP": {
+ "name": "libra gibraltareña",
+ "symbol": "GIP"
+ },
+ "LBP": {
+ "name": "libra libanesa",
+ "symbol": "LBP"
+ },
+ "SYP": {
+ "name": "libra siria",
+ "symbol": "SYP"
+ },
+ "SDG": {
+ "name": "libra sudanesa",
+ "symbol": "SDG"
+ },
+ "SSP": {
+ "name": "libra sursudanesa",
+ "symbol": "SSP"
+ },
+ "SZL": {
+ "name": "lilangeni",
+ "symbol": "SZL"
+ },
+ "TRY": {
+ "name": "lira turca",
+ "symbol": "TRY"
+ },
+ "LTL": {
+ "name": "litas",
+ "symbol": "LTL"
+ },
+ "LSL": {
+ "name": "loti lesothense",
+ "symbol": "LSL"
+ },
+ "AZN": {
+ "name": "manat azerí",
+ "symbol": "AZN"
+ },
+ "TMT": {
+ "name": "manat turcomano",
+ "symbol": "TMT"
+ },
+ "BAM": {
+ "name": "marco convertible de Bosnia-Herzegovina",
+ "symbol": "BAM"
+ },
+ "MZN": {
+ "name": "metical",
+ "symbol": "MZN"
+ },
+ "NGN": {
+ "name": "naira",
+ "symbol": "NGN"
+ },
+ "ERN": {
+ "name": "nakfa",
+ "symbol": "ERN"
+ },
+ "TWD": {
+ "name": "nuevo dólar taiwanés",
+ "symbol": "TWD"
+ },
+ "ILS": {
+ "name": "nuevo sheqel israelí",
+ "symbol": "ILS"
+ },
+ "PEN": {
+ "name": "nuevo sol peruano",
+ "symbol": "PEN"
+ },
+ "TOP": {
+ "name": "paanga",
+ "symbol": "TOP"
+ },
+ "MOP": {
+ "name": "pataca",
+ "symbol": "MOP"
+ },
+ "ARS": {
+ "name": "peso argentino",
+ "symbol": "ARS"
+ },
+ "CLP": {
+ "name": "peso chileno",
+ "symbol": "CLP"
+ },
+ "COP": {
+ "name": "peso colombiano",
+ "symbol": "COP"
+ },
+ "CUP": {
+ "name": "peso cubano",
+ "symbol": "CUP"
+ },
+ "CUC": {
+ "name": "peso cubano convertible",
+ "symbol": "CUC"
+ },
+ "DOP": {
+ "name": "peso dominicano",
+ "symbol": "DOP"
+ },
+ "PHP": {
+ "name": "peso filipino",
+ "symbol": "PHP"
+ },
+ "MXN": {
+ "name": "peso mexicano",
+ "symbol": "MXN"
+ },
+ "UYU": {
+ "name": "peso uruguayo",
+ "symbol": "$"
+ },
+ "BWP": {
+ "name": "pula",
+ "symbol": "BWP"
+ },
+ "GTQ": {
+ "name": "quetzal guatemalteco",
+ "symbol": "GTQ"
+ },
+ "ZAR": {
+ "name": "rand",
+ "symbol": "ZAR"
+ },
+ "BRL": {
+ "name": "real brasileño",
+ "symbol": "BRL"
+ },
+ "QAR": {
+ "name": "rial catarí",
+ "symbol": "QAR"
+ },
+ "IRR": {
+ "name": "rial iraní",
+ "symbol": "IRR"
+ },
+ "OMR": {
+ "name": "rial omaní",
+ "symbol": "OMR"
+ },
+ "SAR": {
+ "name": "rial saudí",
+ "symbol": "SAR"
+ },
+ "YER": {
+ "name": "rial yemení",
+ "symbol": "YER"
+ },
+ "KHR": {
+ "name": "riel",
+ "symbol": "KHR"
+ },
+ "MYR": {
+ "name": "ringit",
+ "symbol": "MYR"
+ },
+ "BYR": {
+ "name": "rublo bielorruso",
+ "symbol": "BYR"
+ },
+ "RUB": {
+ "name": "rublo ruso",
+ "symbol": "RUB"
+ },
+ "MVR": {
+ "name": "rufiya",
+ "symbol": "MVR"
+ },
+ "LKR": {
+ "name": "rupia esrilanquesa",
+ "symbol": "LKR"
+ },
+ "INR": {
+ "name": "rupia india",
+ "symbol": "INR"
+ },
+ "IDR": {
+ "name": "rupia indonesia",
+ "symbol": "IDR"
+ },
+ "MUR": {
+ "name": "rupia mauriciana",
+ "symbol": "MUR"
+ },
+ "NPR": {
+ "name": "rupia nepalí",
+ "symbol": "NPR"
+ },
+ "PKR": {
+ "name": "rupia pakistaní",
+ "symbol": "PKR"
+ },
+ "SCR": {
+ "name": "rupia seychellense",
+ "symbol": "SCR"
+ },
+ "KGS": {
+ "name": "som",
+ "symbol": "KGS"
+ },
+ "TJS": {
+ "name": "somoni tayiko",
+ "symbol": "TJS"
+ },
+ "UZS": {
+ "name": "sum",
+ "symbol": "UZS"
+ },
+ "BDT": {
+ "name": "taka",
+ "symbol": "BDT"
+ },
+ "WST": {
+ "name": "tala",
+ "symbol": "WST"
+ },
+ "KZT": {
+ "name": "tenge kazako",
+ "symbol": "KZT"
+ },
+ "MNT": {
+ "name": "tugrik",
+ "symbol": "MNT"
+ },
+ "MRO": {
+ "name": "uguiya",
+ "symbol": "MRO"
+ },
+ "VUV": {
+ "name": "vatu",
+ "symbol": "VUV"
+ },
+ "KPW": {
+ "name": "won norcoreano",
+ "symbol": "KPW"
+ },
+ "KRW": {
+ "name": "won surcoreano",
+ "symbol": "KRW"
+ },
+ "JPY": {
+ "name": "yen",
+ "symbol": "JPY"
+ },
+ "CNY": {
+ "name": "yuan",
+ "symbol": "CNY"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/currency/es-VE.json b/library/intl/resources/currency/es-VE.json
new file mode 100644
index 000000000..effb954e4
--- /dev/null
+++ b/library/intl/resources/currency/es-VE.json
@@ -0,0 +1,634 @@
+{
+ "AFN": {
+ "name": "afgani",
+ "symbol": "AFN"
+ },
+ "MGA": {
+ "name": "ariari",
+ "symbol": "MGA"
+ },
+ "PAB": {
+ "name": "balboa panameño",
+ "symbol": "PAB"
+ },
+ "THB": {
+ "name": "bat",
+ "symbol": "THB"
+ },
+ "ETB": {
+ "name": "bir",
+ "symbol": "ETB"
+ },
+ "VEF": {
+ "name": "bolívar venezolano",
+ "symbol": "Bs."
+ },
+ "BOB": {
+ "name": "boliviano",
+ "symbol": "BOB"
+ },
+ "GHS": {
+ "name": "cedi",
+ "symbol": "GHS"
+ },
+ "KES": {
+ "name": "chelín keniano",
+ "symbol": "KES"
+ },
+ "SOS": {
+ "name": "chelín somalí",
+ "symbol": "SOS"
+ },
+ "TZS": {
+ "name": "chelín tanzano",
+ "symbol": "TZS"
+ },
+ "UGX": {
+ "name": "chelín ugandés",
+ "symbol": "UGX"
+ },
+ "CRC": {
+ "name": "colón costarricense",
+ "symbol": "CRC"
+ },
+ "SVC": {
+ "name": "colón salvadoreño",
+ "symbol": "SVC"
+ },
+ "NIO": {
+ "name": "córdoba nicaragüense",
+ "symbol": "NIO"
+ },
+ "CZK": {
+ "name": "corona checa",
+ "symbol": "CZK"
+ },
+ "DKK": {
+ "name": "corona danesa",
+ "symbol": "DKK"
+ },
+ "ISK": {
+ "name": "corona islandesa",
+ "symbol": "ISK"
+ },
+ "NOK": {
+ "name": "corona noruega",
+ "symbol": "NOK"
+ },
+ "SEK": {
+ "name": "corona sueca",
+ "symbol": "SEK"
+ },
+ "GMD": {
+ "name": "dalasi",
+ "symbol": "GMD"
+ },
+ "DZD": {
+ "name": "dinar argelino",
+ "symbol": "DZD"
+ },
+ "BHD": {
+ "name": "dinar bahreiní",
+ "symbol": "BHD"
+ },
+ "IQD": {
+ "name": "dinar iraquí",
+ "symbol": "IQD"
+ },
+ "JOD": {
+ "name": "dinar jordano",
+ "symbol": "JOD"
+ },
+ "KWD": {
+ "name": "dinar kuwaití",
+ "symbol": "KWD"
+ },
+ "LYD": {
+ "name": "dinar libio",
+ "symbol": "LYD"
+ },
+ "MKD": {
+ "name": "dinar macedonio",
+ "symbol": "MKD"
+ },
+ "RSD": {
+ "name": "dinar serbio",
+ "symbol": "RSD"
+ },
+ "TND": {
+ "name": "dinar tunecino",
+ "symbol": "TND"
+ },
+ "AED": {
+ "name": "dírham de los Emiratos Ãrabes Unidos",
+ "symbol": "AED"
+ },
+ "MAD": {
+ "name": "dírham marroquí",
+ "symbol": "MAD"
+ },
+ "STD": {
+ "name": "dobra",
+ "symbol": "STD"
+ },
+ "AUD": {
+ "name": "dólar australiano",
+ "symbol": "AUD"
+ },
+ "BSD": {
+ "name": "dólar bahameño",
+ "symbol": "BSD"
+ },
+ "BBD": {
+ "name": "dólar barbadense",
+ "symbol": "BBD"
+ },
+ "BZD": {
+ "name": "dólar beliceño",
+ "symbol": "BZD"
+ },
+ "BND": {
+ "name": "dólar bruneano",
+ "symbol": "BND"
+ },
+ "CAD": {
+ "name": "dólar canadiense",
+ "symbol": "CAD"
+ },
+ "BMD": {
+ "name": "dólar de Bermudas",
+ "symbol": "BMD"
+ },
+ "KYD": {
+ "name": "dólar de las Islas Caimán",
+ "symbol": "KYD"
+ },
+ "TTD": {
+ "name": "dólar de Trinidad y Tobago",
+ "symbol": "TTD"
+ },
+ "XCD": {
+ "name": "dólar del Caribe Oriental",
+ "symbol": "XCD"
+ },
+ "USD": {
+ "name": "dólar estadounidense",
+ "symbol": "USD"
+ },
+ "FJD": {
+ "name": "dólar fiyiano",
+ "symbol": "FJD"
+ },
+ "GYD": {
+ "name": "dólar guyanés",
+ "symbol": "GYD"
+ },
+ "HKD": {
+ "name": "dólar hongkonés",
+ "symbol": "HKD"
+ },
+ "JMD": {
+ "name": "dólar jamaicano",
+ "symbol": "JMD"
+ },
+ "LRD": {
+ "name": "dólar liberiano",
+ "symbol": "LRD"
+ },
+ "NAD": {
+ "name": "dólar namibio",
+ "symbol": "NAD"
+ },
+ "NZD": {
+ "name": "dólar neozelandés",
+ "symbol": "NZD"
+ },
+ "SBD": {
+ "name": "dólar salomonense",
+ "symbol": "SBD"
+ },
+ "SGD": {
+ "name": "dólar singapurense",
+ "symbol": "SGD"
+ },
+ "SRD": {
+ "name": "dólar surinamés",
+ "symbol": "SRD"
+ },
+ "ZWL": {
+ "name": "dólar zimbabuense",
+ "symbol": "ZWL"
+ },
+ "VND": {
+ "name": "dong",
+ "symbol": "VND"
+ },
+ "AMD": {
+ "name": "dram",
+ "symbol": "AMD"
+ },
+ "CVE": {
+ "name": "escudo de Cabo Verde",
+ "symbol": "CVE"
+ },
+ "PLN": {
+ "name": "esloti",
+ "symbol": "PLN"
+ },
+ "EUR": {
+ "name": "euro",
+ "symbol": "EUR"
+ },
+ "AWG": {
+ "name": "florín arubeño",
+ "symbol": "AWG"
+ },
+ "ANG": {
+ "name": "florín de las Antillas Neerlandesas",
+ "symbol": "ANG"
+ },
+ "HUF": {
+ "name": "forinto",
+ "symbol": "HUF"
+ },
+ "BIF": {
+ "name": "franco burundés",
+ "symbol": "BIF"
+ },
+ "XOF": {
+ "name": "franco CFA BCEAO",
+ "symbol": "XOF"
+ },
+ "XAF": {
+ "name": "franco CFA BEAC",
+ "symbol": "XAF"
+ },
+ "XPF": {
+ "name": "franco CFP",
+ "symbol": "CFPF"
+ },
+ "KMF": {
+ "name": "franco comorense",
+ "symbol": "KMF"
+ },
+ "CDF": {
+ "name": "franco congoleño",
+ "symbol": "CDF"
+ },
+ "GNF": {
+ "name": "franco guineano",
+ "symbol": "GNF"
+ },
+ "RWF": {
+ "name": "franco ruandés",
+ "symbol": "RWF"
+ },
+ "CHF": {
+ "name": "franco suizo",
+ "symbol": "CHF"
+ },
+ "DJF": {
+ "name": "franco yibutiano",
+ "symbol": "DJF"
+ },
+ "HTG": {
+ "name": "gourde haitiano",
+ "symbol": "HTG"
+ },
+ "UAH": {
+ "name": "grivna",
+ "symbol": "UAH"
+ },
+ "PYG": {
+ "name": "guaraní paraguayo",
+ "symbol": "PYG"
+ },
+ "BTN": {
+ "name": "gultrum",
+ "symbol": "BTN"
+ },
+ "MMK": {
+ "name": "kiat",
+ "symbol": "MMK"
+ },
+ "PGK": {
+ "name": "kina",
+ "symbol": "PGK"
+ },
+ "LAK": {
+ "name": "kip",
+ "symbol": "LAK"
+ },
+ "MWK": {
+ "name": "kuacha malauí",
+ "symbol": "MWK"
+ },
+ "ZMW": {
+ "name": "kuacha zambiano",
+ "symbol": "ZMK"
+ },
+ "AOA": {
+ "name": "kuanza",
+ "symbol": "AOA"
+ },
+ "HRK": {
+ "name": "kuna",
+ "symbol": "HRK"
+ },
+ "GEL": {
+ "name": "lari",
+ "symbol": "GEL"
+ },
+ "ALL": {
+ "name": "lek",
+ "symbol": "ALL"
+ },
+ "HNL": {
+ "name": "lempira hondureño",
+ "symbol": "HNL"
+ },
+ "SLL": {
+ "name": "leona",
+ "symbol": "SLL"
+ },
+ "MDL": {
+ "name": "leu moldavo",
+ "symbol": "MDL"
+ },
+ "RON": {
+ "name": "leu rumano",
+ "symbol": "RON"
+ },
+ "BGN": {
+ "name": "leva",
+ "symbol": "BGN"
+ },
+ "FKP": {
+ "name": "libra de las Islas Malvinas",
+ "symbol": "FKP"
+ },
+ "SHP": {
+ "name": "libra de Santa Elena",
+ "symbol": "SHP"
+ },
+ "EGP": {
+ "name": "libra egipcia",
+ "symbol": "EGP"
+ },
+ "GBP": {
+ "name": "libra esterlina",
+ "symbol": "GBP"
+ },
+ "GIP": {
+ "name": "libra gibraltareña",
+ "symbol": "GIP"
+ },
+ "LBP": {
+ "name": "libra libanesa",
+ "symbol": "LBP"
+ },
+ "SYP": {
+ "name": "libra siria",
+ "symbol": "SYP"
+ },
+ "SDG": {
+ "name": "libra sudanesa",
+ "symbol": "SDG"
+ },
+ "SSP": {
+ "name": "libra sursudanesa",
+ "symbol": "SSP"
+ },
+ "SZL": {
+ "name": "lilangeni",
+ "symbol": "SZL"
+ },
+ "TRY": {
+ "name": "lira turca",
+ "symbol": "TRY"
+ },
+ "LTL": {
+ "name": "litas",
+ "symbol": "LTL"
+ },
+ "LSL": {
+ "name": "loti lesothense",
+ "symbol": "LSL"
+ },
+ "AZN": {
+ "name": "manat azerí",
+ "symbol": "AZN"
+ },
+ "TMT": {
+ "name": "manat turcomano",
+ "symbol": "TMT"
+ },
+ "BAM": {
+ "name": "marco convertible de Bosnia-Herzegovina",
+ "symbol": "BAM"
+ },
+ "MZN": {
+ "name": "metical",
+ "symbol": "MZN"
+ },
+ "NGN": {
+ "name": "naira",
+ "symbol": "NGN"
+ },
+ "ERN": {
+ "name": "nakfa",
+ "symbol": "ERN"
+ },
+ "TWD": {
+ "name": "nuevo dólar taiwanés",
+ "symbol": "TWD"
+ },
+ "ILS": {
+ "name": "nuevo sheqel israelí",
+ "symbol": "ILS"
+ },
+ "PEN": {
+ "name": "nuevo sol peruano",
+ "symbol": "PEN"
+ },
+ "TOP": {
+ "name": "paanga",
+ "symbol": "TOP"
+ },
+ "MOP": {
+ "name": "pataca",
+ "symbol": "MOP"
+ },
+ "ARS": {
+ "name": "peso argentino",
+ "symbol": "ARS"
+ },
+ "CLP": {
+ "name": "peso chileno",
+ "symbol": "CLP"
+ },
+ "COP": {
+ "name": "peso colombiano",
+ "symbol": "COP"
+ },
+ "CUP": {
+ "name": "peso cubano",
+ "symbol": "CUP"
+ },
+ "CUC": {
+ "name": "peso cubano convertible",
+ "symbol": "CUC"
+ },
+ "DOP": {
+ "name": "peso dominicano",
+ "symbol": "DOP"
+ },
+ "PHP": {
+ "name": "peso filipino",
+ "symbol": "PHP"
+ },
+ "MXN": {
+ "name": "peso mexicano",
+ "symbol": "MXN"
+ },
+ "UYU": {
+ "name": "peso uruguayo",
+ "symbol": "UYU"
+ },
+ "BWP": {
+ "name": "pula",
+ "symbol": "BWP"
+ },
+ "GTQ": {
+ "name": "quetzal guatemalteco",
+ "symbol": "GTQ"
+ },
+ "ZAR": {
+ "name": "rand",
+ "symbol": "ZAR"
+ },
+ "BRL": {
+ "name": "real brasileño",
+ "symbol": "BRL"
+ },
+ "QAR": {
+ "name": "rial catarí",
+ "symbol": "QAR"
+ },
+ "IRR": {
+ "name": "rial iraní",
+ "symbol": "IRR"
+ },
+ "OMR": {
+ "name": "rial omaní",
+ "symbol": "OMR"
+ },
+ "SAR": {
+ "name": "rial saudí",
+ "symbol": "SAR"
+ },
+ "YER": {
+ "name": "rial yemení",
+ "symbol": "YER"
+ },
+ "KHR": {
+ "name": "riel",
+ "symbol": "KHR"
+ },
+ "MYR": {
+ "name": "ringit",
+ "symbol": "MYR"
+ },
+ "BYR": {
+ "name": "rublo bielorruso",
+ "symbol": "BYR"
+ },
+ "RUB": {
+ "name": "rublo ruso",
+ "symbol": "RUB"
+ },
+ "MVR": {
+ "name": "rufiya",
+ "symbol": "MVR"
+ },
+ "LKR": {
+ "name": "rupia esrilanquesa",
+ "symbol": "LKR"
+ },
+ "INR": {
+ "name": "rupia india",
+ "symbol": "INR"
+ },
+ "IDR": {
+ "name": "rupia indonesia",
+ "symbol": "IDR"
+ },
+ "MUR": {
+ "name": "rupia mauriciana",
+ "symbol": "MUR"
+ },
+ "NPR": {
+ "name": "rupia nepalí",
+ "symbol": "NPR"
+ },
+ "PKR": {
+ "name": "rupia pakistaní",
+ "symbol": "PKR"
+ },
+ "SCR": {
+ "name": "rupia seychellense",
+ "symbol": "SCR"
+ },
+ "KGS": {
+ "name": "som",
+ "symbol": "KGS"
+ },
+ "TJS": {
+ "name": "somoni tayiko",
+ "symbol": "TJS"
+ },
+ "UZS": {
+ "name": "sum",
+ "symbol": "UZS"
+ },
+ "BDT": {
+ "name": "taka",
+ "symbol": "BDT"
+ },
+ "WST": {
+ "name": "tala",
+ "symbol": "WST"
+ },
+ "KZT": {
+ "name": "tenge kazako",
+ "symbol": "KZT"
+ },
+ "MNT": {
+ "name": "tugrik",
+ "symbol": "MNT"
+ },
+ "MRO": {
+ "name": "uguiya",
+ "symbol": "MRO"
+ },
+ "VUV": {
+ "name": "vatu",
+ "symbol": "VUV"
+ },
+ "KPW": {
+ "name": "won norcoreano",
+ "symbol": "KPW"
+ },
+ "KRW": {
+ "name": "won surcoreano",
+ "symbol": "KRW"
+ },
+ "JPY": {
+ "name": "yen",
+ "symbol": "JPY"
+ },
+ "CNY": {
+ "name": "yuan",
+ "symbol": "CNY"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/currency/es.json b/library/intl/resources/currency/es.json
new file mode 100644
index 000000000..483f13004
--- /dev/null
+++ b/library/intl/resources/currency/es.json
@@ -0,0 +1,634 @@
+{
+ "AFN": {
+ "name": "afgani",
+ "symbol": "AFN"
+ },
+ "MGA": {
+ "name": "ariari",
+ "symbol": "MGA"
+ },
+ "PAB": {
+ "name": "balboa panameño",
+ "symbol": "PAB"
+ },
+ "THB": {
+ "name": "bat",
+ "symbol": "฿"
+ },
+ "ETB": {
+ "name": "bir",
+ "symbol": "ETB"
+ },
+ "VEF": {
+ "name": "bolívar venezolano",
+ "symbol": "VEF"
+ },
+ "BOB": {
+ "name": "boliviano",
+ "symbol": "BOB"
+ },
+ "GHS": {
+ "name": "cedi",
+ "symbol": "GHS"
+ },
+ "KES": {
+ "name": "chelín keniano",
+ "symbol": "KES"
+ },
+ "SOS": {
+ "name": "chelín somalí",
+ "symbol": "SOS"
+ },
+ "TZS": {
+ "name": "chelín tanzano",
+ "symbol": "TZS"
+ },
+ "UGX": {
+ "name": "chelín ugandés",
+ "symbol": "UGX"
+ },
+ "CRC": {
+ "name": "colón costarricense",
+ "symbol": "CRC"
+ },
+ "SVC": {
+ "name": "colón salvadoreño",
+ "symbol": "SVC"
+ },
+ "NIO": {
+ "name": "córdoba nicaragüense",
+ "symbol": "NIO"
+ },
+ "CZK": {
+ "name": "corona checa",
+ "symbol": "CZK"
+ },
+ "DKK": {
+ "name": "corona danesa",
+ "symbol": "DKK"
+ },
+ "ISK": {
+ "name": "corona islandesa",
+ "symbol": "ISK"
+ },
+ "NOK": {
+ "name": "corona noruega",
+ "symbol": "NOK"
+ },
+ "SEK": {
+ "name": "corona sueca",
+ "symbol": "SEK"
+ },
+ "GMD": {
+ "name": "dalasi",
+ "symbol": "GMD"
+ },
+ "DZD": {
+ "name": "dinar argelino",
+ "symbol": "DZD"
+ },
+ "BHD": {
+ "name": "dinar bahreiní",
+ "symbol": "BHD"
+ },
+ "IQD": {
+ "name": "dinar iraquí",
+ "symbol": "IQD"
+ },
+ "JOD": {
+ "name": "dinar jordano",
+ "symbol": "JOD"
+ },
+ "KWD": {
+ "name": "dinar kuwaití",
+ "symbol": "KWD"
+ },
+ "LYD": {
+ "name": "dinar libio",
+ "symbol": "LYD"
+ },
+ "MKD": {
+ "name": "dinar macedonio",
+ "symbol": "MKD"
+ },
+ "RSD": {
+ "name": "dinar serbio",
+ "symbol": "RSD"
+ },
+ "TND": {
+ "name": "dinar tunecino",
+ "symbol": "TND"
+ },
+ "AED": {
+ "name": "dírham de los Emiratos Ãrabes Unidos",
+ "symbol": "AED"
+ },
+ "MAD": {
+ "name": "dírham marroquí",
+ "symbol": "MAD"
+ },
+ "STD": {
+ "name": "dobra",
+ "symbol": "STD"
+ },
+ "AUD": {
+ "name": "dólar australiano",
+ "symbol": "AUD"
+ },
+ "BND": {
+ "name": "dólar bruneano",
+ "symbol": "BND"
+ },
+ "CAD": {
+ "name": "dólar canadiense",
+ "symbol": "CA$"
+ },
+ "BBD": {
+ "name": "dólar de Barbados",
+ "symbol": "BBD"
+ },
+ "BZD": {
+ "name": "dólar de Belice",
+ "symbol": "BZD"
+ },
+ "BMD": {
+ "name": "dólar de Bermudas",
+ "symbol": "BMD"
+ },
+ "HKD": {
+ "name": "dólar de Hong Kong",
+ "symbol": "HKD"
+ },
+ "JMD": {
+ "name": "dólar de Jamaica",
+ "symbol": "JMD"
+ },
+ "BSD": {
+ "name": "dólar de las Bahamas",
+ "symbol": "BSD"
+ },
+ "KYD": {
+ "name": "dólar de las Islas Caimán",
+ "symbol": "KYD"
+ },
+ "TTD": {
+ "name": "dólar de Trinidad y Tobago",
+ "symbol": "TTD"
+ },
+ "XCD": {
+ "name": "dólar del Caribe Oriental",
+ "symbol": "XCD"
+ },
+ "USD": {
+ "name": "dólar estadounidense",
+ "symbol": "$"
+ },
+ "FJD": {
+ "name": "dólar fiyiano",
+ "symbol": "FJD"
+ },
+ "GYD": {
+ "name": "dólar guyanés",
+ "symbol": "GYD"
+ },
+ "LRD": {
+ "name": "dólar liberiano",
+ "symbol": "LRD"
+ },
+ "NAD": {
+ "name": "dólar namibio",
+ "symbol": "NAD"
+ },
+ "NZD": {
+ "name": "dólar neozelandés",
+ "symbol": "NZD"
+ },
+ "SBD": {
+ "name": "dólar salomonense",
+ "symbol": "SBD"
+ },
+ "SGD": {
+ "name": "dólar singapurense",
+ "symbol": "SGD"
+ },
+ "SRD": {
+ "name": "dólar surinamés",
+ "symbol": "SRD"
+ },
+ "ZWL": {
+ "name": "dólar zimbabuense",
+ "symbol": "ZWL"
+ },
+ "VND": {
+ "name": "dong",
+ "symbol": "â‚«"
+ },
+ "AMD": {
+ "name": "dram armenio",
+ "symbol": "AMD"
+ },
+ "CVE": {
+ "name": "escudo de Cabo Verde",
+ "symbol": "CVE"
+ },
+ "PLN": {
+ "name": "esloti",
+ "symbol": "PLN"
+ },
+ "EUR": {
+ "name": "euro",
+ "symbol": "€"
+ },
+ "AWG": {
+ "name": "florín de Aruba",
+ "symbol": "AWG"
+ },
+ "ANG": {
+ "name": "florín de las Antillas Neerlandesas",
+ "symbol": "ANG"
+ },
+ "HUF": {
+ "name": "forinto",
+ "symbol": "HUF"
+ },
+ "BIF": {
+ "name": "franco burundés",
+ "symbol": "BIF"
+ },
+ "XOF": {
+ "name": "franco CFA BCEAO",
+ "symbol": "XOF"
+ },
+ "XAF": {
+ "name": "franco CFA BEAC",
+ "symbol": "XAF"
+ },
+ "XPF": {
+ "name": "franco CFP",
+ "symbol": "CFPF"
+ },
+ "KMF": {
+ "name": "franco comorense",
+ "symbol": "KMF"
+ },
+ "CDF": {
+ "name": "franco congoleño",
+ "symbol": "CDF"
+ },
+ "GNF": {
+ "name": "franco guineano",
+ "symbol": "GNF"
+ },
+ "RWF": {
+ "name": "franco ruandés",
+ "symbol": "RWF"
+ },
+ "CHF": {
+ "name": "franco suizo",
+ "symbol": "CHF"
+ },
+ "DJF": {
+ "name": "franco yibutiano",
+ "symbol": "DJF"
+ },
+ "HTG": {
+ "name": "gourde haitiano",
+ "symbol": "HTG"
+ },
+ "UAH": {
+ "name": "grivna",
+ "symbol": "UAH"
+ },
+ "PYG": {
+ "name": "guaraní paraguayo",
+ "symbol": "PYG"
+ },
+ "BTN": {
+ "name": "gultrum",
+ "symbol": "BTN"
+ },
+ "MMK": {
+ "name": "kiat",
+ "symbol": "MMK"
+ },
+ "PGK": {
+ "name": "kina",
+ "symbol": "PGK"
+ },
+ "LAK": {
+ "name": "kip",
+ "symbol": "LAK"
+ },
+ "MWK": {
+ "name": "kuacha malauí",
+ "symbol": "MWK"
+ },
+ "ZMW": {
+ "name": "kuacha zambiano",
+ "symbol": "ZMW"
+ },
+ "AOA": {
+ "name": "kuanza",
+ "symbol": "AOA"
+ },
+ "HRK": {
+ "name": "kuna",
+ "symbol": "HRK"
+ },
+ "GEL": {
+ "name": "lari",
+ "symbol": "GEL"
+ },
+ "ALL": {
+ "name": "lek",
+ "symbol": "ALL"
+ },
+ "HNL": {
+ "name": "lempira hondureño",
+ "symbol": "HNL"
+ },
+ "SLL": {
+ "name": "leona",
+ "symbol": "SLL"
+ },
+ "MDL": {
+ "name": "leu moldavo",
+ "symbol": "MDL"
+ },
+ "RON": {
+ "name": "leu rumano",
+ "symbol": "RON"
+ },
+ "BGN": {
+ "name": "leva",
+ "symbol": "BGN"
+ },
+ "FKP": {
+ "name": "libra de las Islas Malvinas",
+ "symbol": "FKP"
+ },
+ "SHP": {
+ "name": "libra de Santa Elena",
+ "symbol": "SHP"
+ },
+ "EGP": {
+ "name": "libra egipcia",
+ "symbol": "EGP"
+ },
+ "GBP": {
+ "name": "libra esterlina",
+ "symbol": "GBP"
+ },
+ "GIP": {
+ "name": "libra gibraltareña",
+ "symbol": "GIP"
+ },
+ "LBP": {
+ "name": "libra libanesa",
+ "symbol": "LBP"
+ },
+ "SYP": {
+ "name": "libra siria",
+ "symbol": "SYP"
+ },
+ "SDG": {
+ "name": "libra sudanesa",
+ "symbol": "SDG"
+ },
+ "SSP": {
+ "name": "libra sursudanesa",
+ "symbol": "SSP"
+ },
+ "SZL": {
+ "name": "lilangeni",
+ "symbol": "SZL"
+ },
+ "TRY": {
+ "name": "lira turca",
+ "symbol": "TRY"
+ },
+ "LTL": {
+ "name": "litas",
+ "symbol": "LTL"
+ },
+ "LSL": {
+ "name": "loti lesothense",
+ "symbol": "LSL"
+ },
+ "AZN": {
+ "name": "manat azerí",
+ "symbol": "AZN"
+ },
+ "TMT": {
+ "name": "manat turcomano",
+ "symbol": "TMT"
+ },
+ "BAM": {
+ "name": "marco convertible de Bosnia-Herzegovina",
+ "symbol": "BAM"
+ },
+ "MZN": {
+ "name": "metical",
+ "symbol": "MZN"
+ },
+ "NGN": {
+ "name": "naira",
+ "symbol": "NGN"
+ },
+ "ERN": {
+ "name": "nakfa eritreo",
+ "symbol": "ERN"
+ },
+ "TWD": {
+ "name": "nuevo dólar taiwanés",
+ "symbol": "TWD"
+ },
+ "ILS": {
+ "name": "nuevo séquel israelí",
+ "symbol": "ILS"
+ },
+ "PEN": {
+ "name": "nuevo sol peruano",
+ "symbol": "PEN"
+ },
+ "TOP": {
+ "name": "paanga",
+ "symbol": "TOP"
+ },
+ "MOP": {
+ "name": "pataca de Macao",
+ "symbol": "MOP"
+ },
+ "ARS": {
+ "name": "peso argentino",
+ "symbol": "ARS"
+ },
+ "CLP": {
+ "name": "peso chileno",
+ "symbol": "CLP"
+ },
+ "COP": {
+ "name": "peso colombiano",
+ "symbol": "COP"
+ },
+ "CUP": {
+ "name": "peso cubano",
+ "symbol": "CUP"
+ },
+ "CUC": {
+ "name": "peso cubano convertible",
+ "symbol": "CUC"
+ },
+ "DOP": {
+ "name": "peso dominicano",
+ "symbol": "DOP"
+ },
+ "PHP": {
+ "name": "peso filipino",
+ "symbol": "PHP"
+ },
+ "MXN": {
+ "name": "peso mexicano",
+ "symbol": "MXN"
+ },
+ "UYU": {
+ "name": "peso uruguayo",
+ "symbol": "UYU"
+ },
+ "BWP": {
+ "name": "pula",
+ "symbol": "BWP"
+ },
+ "GTQ": {
+ "name": "quetzal guatemalteco",
+ "symbol": "GTQ"
+ },
+ "ZAR": {
+ "name": "rand",
+ "symbol": "ZAR"
+ },
+ "BRL": {
+ "name": "real brasileño",
+ "symbol": "BRL"
+ },
+ "QAR": {
+ "name": "rial catarí",
+ "symbol": "QAR"
+ },
+ "IRR": {
+ "name": "rial iraní",
+ "symbol": "IRR"
+ },
+ "OMR": {
+ "name": "rial omaní",
+ "symbol": "OMR"
+ },
+ "SAR": {
+ "name": "rial saudí",
+ "symbol": "SAR"
+ },
+ "YER": {
+ "name": "rial yemení",
+ "symbol": "YER"
+ },
+ "KHR": {
+ "name": "riel",
+ "symbol": "KHR"
+ },
+ "MYR": {
+ "name": "ringit",
+ "symbol": "MYR"
+ },
+ "BYR": {
+ "name": "rublo bielorruso",
+ "symbol": "BYR"
+ },
+ "RUB": {
+ "name": "rublo ruso",
+ "symbol": "RUB"
+ },
+ "MVR": {
+ "name": "rufiya",
+ "symbol": "MVR"
+ },
+ "LKR": {
+ "name": "rupia de Sri Lanka",
+ "symbol": "LKR"
+ },
+ "INR": {
+ "name": "rupia india",
+ "symbol": "INR"
+ },
+ "IDR": {
+ "name": "rupia indonesia",
+ "symbol": "IDR"
+ },
+ "MUR": {
+ "name": "rupia mauriciana",
+ "symbol": "MUR"
+ },
+ "NPR": {
+ "name": "rupia nepalí",
+ "symbol": "NPR"
+ },
+ "PKR": {
+ "name": "rupia pakistaní",
+ "symbol": "PKR"
+ },
+ "SCR": {
+ "name": "rupia seychellense",
+ "symbol": "SCR"
+ },
+ "KGS": {
+ "name": "som",
+ "symbol": "KGS"
+ },
+ "TJS": {
+ "name": "somoni tayiko",
+ "symbol": "TJS"
+ },
+ "UZS": {
+ "name": "sum",
+ "symbol": "UZS"
+ },
+ "BDT": {
+ "name": "taka",
+ "symbol": "BDT"
+ },
+ "WST": {
+ "name": "tala",
+ "symbol": "WST"
+ },
+ "KZT": {
+ "name": "tengue",
+ "symbol": "KZT"
+ },
+ "MNT": {
+ "name": "tugrik",
+ "symbol": "MNT"
+ },
+ "MRO": {
+ "name": "uguiya",
+ "symbol": "MRO"
+ },
+ "VUV": {
+ "name": "vatu",
+ "symbol": "VUV"
+ },
+ "KPW": {
+ "name": "won norcoreano",
+ "symbol": "KPW"
+ },
+ "KRW": {
+ "name": "won surcoreano",
+ "symbol": "KRW"
+ },
+ "JPY": {
+ "name": "yen",
+ "symbol": "JPY"
+ },
+ "CNY": {
+ "name": "yuan",
+ "symbol": "CNY"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/currency/et.json b/library/intl/resources/currency/et.json
new file mode 100644
index 000000000..47df30013
--- /dev/null
+++ b/library/intl/resources/currency/et.json
@@ -0,0 +1,634 @@
+{
+ "XOF": {
+ "name": "Aafrika ühisfrank BCEAO",
+ "symbol": "CFA"
+ },
+ "AFN": {
+ "name": "Afganistani afgaani",
+ "symbol": "AFN"
+ },
+ "ALL": {
+ "name": "Albaania lekk",
+ "symbol": "ALL"
+ },
+ "DZD": {
+ "name": "Alžeeria dinaar",
+ "symbol": "DZD"
+ },
+ "AOA": {
+ "name": "Angola kvanza",
+ "symbol": "AOA"
+ },
+ "AED": {
+ "name": "Araabia Ãœhendemiraatide dirhem",
+ "symbol": "AED"
+ },
+ "ARS": {
+ "name": "Argentina peeso",
+ "symbol": "ARS"
+ },
+ "AMD": {
+ "name": "Armeenia dramm",
+ "symbol": "AMD"
+ },
+ "AWG": {
+ "name": "Aruba guilder",
+ "symbol": "AWG"
+ },
+ "AZN": {
+ "name": "Aserbaidžaani manat",
+ "symbol": "AZN"
+ },
+ "AUD": {
+ "name": "Austraalia dollar",
+ "symbol": "AU$"
+ },
+ "BSD": {
+ "name": "Bahama dollar",
+ "symbol": "BSD"
+ },
+ "BHD": {
+ "name": "Bahreini dinaar",
+ "symbol": "BHD"
+ },
+ "BDT": {
+ "name": "Bangladeshi taka",
+ "symbol": "BDT"
+ },
+ "BBD": {
+ "name": "Barbadose dollar",
+ "symbol": "BBD"
+ },
+ "BZD": {
+ "name": "Belize dollar",
+ "symbol": "BZD"
+ },
+ "BMD": {
+ "name": "Bermuda dollar",
+ "symbol": "BMD"
+ },
+ "BTN": {
+ "name": "Bhutani ngultrum",
+ "symbol": "BTN"
+ },
+ "BOB": {
+ "name": "Bolivia boliviaano",
+ "symbol": "BOB"
+ },
+ "BAM": {
+ "name": "Bosnia-Hertsegoviina mark",
+ "symbol": "BAM"
+ },
+ "BWP": {
+ "name": "Botswana pula",
+ "symbol": "BWP"
+ },
+ "BRL": {
+ "name": "Brasiilia reaal",
+ "symbol": "R$"
+ },
+ "BND": {
+ "name": "Brunei dollar",
+ "symbol": "BND"
+ },
+ "BGN": {
+ "name": "Bulgaaria leev",
+ "symbol": "BGN"
+ },
+ "BIF": {
+ "name": "Burundi frank",
+ "symbol": "BIF"
+ },
+ "KYD": {
+ "name": "Caymani saarte dollar",
+ "symbol": "KYD"
+ },
+ "XAF": {
+ "name": "CFA frank BEAC",
+ "symbol": "FCFA"
+ },
+ "CRC": {
+ "name": "Costa Rica colón",
+ "symbol": "CRC"
+ },
+ "DJF": {
+ "name": "Djibouti frank",
+ "symbol": "DJF"
+ },
+ "DOP": {
+ "name": "Dominikaani peeso",
+ "symbol": "DOP"
+ },
+ "EGP": {
+ "name": "Egiptuse nael",
+ "symbol": "EGP"
+ },
+ "ERN": {
+ "name": "Eritrea nakfa",
+ "symbol": "ERN"
+ },
+ "ETB": {
+ "name": "Etioopia birr",
+ "symbol": "ETB"
+ },
+ "EUR": {
+ "name": "euro",
+ "symbol": "€"
+ },
+ "FKP": {
+ "name": "Falklandi saarte nael",
+ "symbol": "FKP"
+ },
+ "FJD": {
+ "name": "Fidži dollar",
+ "symbol": "FJD"
+ },
+ "PHP": {
+ "name": "Filipiinide peeso",
+ "symbol": "PHP"
+ },
+ "GMD": {
+ "name": "Gambia dalasi",
+ "symbol": "GMD"
+ },
+ "GHS": {
+ "name": "Ghana cedi",
+ "symbol": "GHS"
+ },
+ "GIP": {
+ "name": "Gibraltari nael",
+ "symbol": "GIP"
+ },
+ "GEL": {
+ "name": "Gruusia lari",
+ "symbol": "GEL"
+ },
+ "GTQ": {
+ "name": "Guatemala ketsal",
+ "symbol": "GTQ"
+ },
+ "GNF": {
+ "name": "Guinea frank",
+ "symbol": "GNF"
+ },
+ "GYD": {
+ "name": "Guyana dollar",
+ "symbol": "GYD"
+ },
+ "HTG": {
+ "name": "Haiti gurd",
+ "symbol": "HTG"
+ },
+ "CNY": {
+ "name": "Hiina jüaan",
+ "symbol": "CNÂ¥"
+ },
+ "ANG": {
+ "name": "Hollandi Antillide kulden",
+ "symbol": "ANG"
+ },
+ "HNL": {
+ "name": "Hondurase lempiira",
+ "symbol": "HNL"
+ },
+ "HKD": {
+ "name": "Hongkongi dollar",
+ "symbol": "HK$"
+ },
+ "HRK": {
+ "name": "Horvaatia kuna",
+ "symbol": "HRK"
+ },
+ "XCD": {
+ "name": "Ida-Kariibi dollar",
+ "symbol": "EC$"
+ },
+ "ILS": {
+ "name": "Iisraeli uus seekel",
+ "symbol": "₪"
+ },
+ "INR": {
+ "name": "India ruupia",
+ "symbol": "₹"
+ },
+ "IDR": {
+ "name": "Indoneesia ruupia",
+ "symbol": "IDR"
+ },
+ "IQD": {
+ "name": "Iraagi dinaar",
+ "symbol": "IQD"
+ },
+ "IRR": {
+ "name": "Iraani riaal",
+ "symbol": "IRR"
+ },
+ "ISK": {
+ "name": "Islandi kroon",
+ "symbol": "ISK"
+ },
+ "JPY": {
+ "name": "Jaapani jeen",
+ "symbol": "Â¥"
+ },
+ "JMD": {
+ "name": "Jamaica dollar",
+ "symbol": "JMD"
+ },
+ "YER": {
+ "name": "Jeemeni riaal",
+ "symbol": "YER"
+ },
+ "JOD": {
+ "name": "Jordaania dinaar",
+ "symbol": "JOD"
+ },
+ "KHR": {
+ "name": "Kambodža riaal",
+ "symbol": "KHR"
+ },
+ "CAD": {
+ "name": "Kanada dollar",
+ "symbol": "CA$"
+ },
+ "KZT": {
+ "name": "Kasahstani tenge",
+ "symbol": "KZT"
+ },
+ "KES": {
+ "name": "Kenya Å¡illing",
+ "symbol": "KES"
+ },
+ "COP": {
+ "name": "Kolumbia peeso",
+ "symbol": "COP"
+ },
+ "KMF": {
+ "name": "Komooride frank",
+ "symbol": "KMF"
+ },
+ "CDF": {
+ "name": "Kongo frank",
+ "symbol": "CDF"
+ },
+ "CUC": {
+ "name": "Kuuba konverteeritav peeso",
+ "symbol": "CUC"
+ },
+ "CUP": {
+ "name": "Kuuba peeso",
+ "symbol": "CUP"
+ },
+ "KWD": {
+ "name": "Kuveidi dinaar",
+ "symbol": "KWD"
+ },
+ "KGS": {
+ "name": "Kõrgõzstani somm",
+ "symbol": "KGS"
+ },
+ "LAK": {
+ "name": "Laose kiip",
+ "symbol": "LAK"
+ },
+ "LTL": {
+ "name": "Leedu litt",
+ "symbol": "LTL"
+ },
+ "LSL": {
+ "name": "Lesotho loti",
+ "symbol": "LSL"
+ },
+ "LRD": {
+ "name": "Libeeria dollar",
+ "symbol": "LRD"
+ },
+ "LBP": {
+ "name": "Liibanoni nael",
+ "symbol": "LBP"
+ },
+ "LYD": {
+ "name": "Liibüa dinaar",
+ "symbol": "LYD"
+ },
+ "ZAR": {
+ "name": "Lõuna-Aafrika rand",
+ "symbol": "ZAR"
+ },
+ "KRW": {
+ "name": "Lõuna-Korea vonn",
+ "symbol": "â‚©"
+ },
+ "SSP": {
+ "name": "Lõuna-Sudaani nael",
+ "symbol": "SSP"
+ },
+ "WST": {
+ "name": "Lääne-Samoa tala",
+ "symbol": "WST"
+ },
+ "MOP": {
+ "name": "Macao pataka",
+ "symbol": "MOP"
+ },
+ "MGA": {
+ "name": "Madagaskari ariary",
+ "symbol": "MGA"
+ },
+ "MKD": {
+ "name": "Makedoonia denaar",
+ "symbol": "MKD"
+ },
+ "MYR": {
+ "name": "Malaisia ringgit",
+ "symbol": "MYR"
+ },
+ "MWK": {
+ "name": "Malawi kvatša",
+ "symbol": "MWK"
+ },
+ "MVR": {
+ "name": "Maldiivide ruupia",
+ "symbol": "MVR"
+ },
+ "MAD": {
+ "name": "Maroko dirhem",
+ "symbol": "MAD"
+ },
+ "MRO": {
+ "name": "Mauritaania ugia",
+ "symbol": "MRO"
+ },
+ "MUR": {
+ "name": "Mauritiuse ruupia",
+ "symbol": "MUR"
+ },
+ "MXN": {
+ "name": "Mehhiko peeso",
+ "symbol": "MX$"
+ },
+ "MDL": {
+ "name": "Moldova leu",
+ "symbol": "MDL"
+ },
+ "MNT": {
+ "name": "Mongoolia tugrik",
+ "symbol": "MNT"
+ },
+ "MZN": {
+ "name": "Mosambiigi metikal",
+ "symbol": "MZN"
+ },
+ "MMK": {
+ "name": "Myanmari kjatt",
+ "symbol": "MMK"
+ },
+ "NAD": {
+ "name": "Namiibia dollar",
+ "symbol": "NAD"
+ },
+ "NPR": {
+ "name": "Nepali ruupia",
+ "symbol": "NPR"
+ },
+ "NIO": {
+ "name": "Nicaragua kuldkordoba",
+ "symbol": "NIO"
+ },
+ "NGN": {
+ "name": "Nigeeria naira",
+ "symbol": "NGN"
+ },
+ "NOK": {
+ "name": "Norra kroon",
+ "symbol": "NOK"
+ },
+ "OMR": {
+ "name": "Omaani riaal",
+ "symbol": "OMR"
+ },
+ "PGK": {
+ "name": "Paapua Uus-Guinea kina",
+ "symbol": "PGK"
+ },
+ "PKR": {
+ "name": "Pakistani ruupia",
+ "symbol": "PKR"
+ },
+ "PAB": {
+ "name": "Panama balboa",
+ "symbol": "PAB"
+ },
+ "PYG": {
+ "name": "Paraguai guaranii",
+ "symbol": "PYG"
+ },
+ "PEN": {
+ "name": "Peruu uus soll",
+ "symbol": "PEN"
+ },
+ "PLN": {
+ "name": "Poola zlott",
+ "symbol": "PLN"
+ },
+ "XPF": {
+ "name": "Prantsuse Vaikse-Ookeani frank",
+ "symbol": "CFPF"
+ },
+ "KPW": {
+ "name": "Põhja-Korea vonn",
+ "symbol": "KPW"
+ },
+ "QAR": {
+ "name": "Quatari riaal",
+ "symbol": "QAR"
+ },
+ "CVE": {
+ "name": "Roheneemesaarte eskuudo",
+ "symbol": "CVE"
+ },
+ "SEK": {
+ "name": "Rootsi kroon",
+ "symbol": "SEK"
+ },
+ "RON": {
+ "name": "Rumeenia lei",
+ "symbol": "RON"
+ },
+ "RWF": {
+ "name": "Rwanda frank",
+ "symbol": "RWF"
+ },
+ "SBD": {
+ "name": "Saalomoni saarte dollar",
+ "symbol": "SBD"
+ },
+ "SHP": {
+ "name": "Saint Helena nael",
+ "symbol": "SHP"
+ },
+ "SVC": {
+ "name": "Salvadori koloon",
+ "symbol": "SVC"
+ },
+ "ZMW": {
+ "name": "Sambia kvatša",
+ "symbol": "ZMW"
+ },
+ "STD": {
+ "name": "São Tomé ja Príncipe dobra",
+ "symbol": "STD"
+ },
+ "SAR": {
+ "name": "Saudi-Araabia riaal",
+ "symbol": "SAR"
+ },
+ "SCR": {
+ "name": "Seišelli saarte ruupia",
+ "symbol": "SCR"
+ },
+ "RSD": {
+ "name": "Serbia dinaar",
+ "symbol": "RSD"
+ },
+ "SLL": {
+ "name": "Sierra Leone leoone",
+ "symbol": "SLL"
+ },
+ "SGD": {
+ "name": "Singapuri dollar",
+ "symbol": "SGD"
+ },
+ "SOS": {
+ "name": "Somaalia Å¡illing",
+ "symbol": "SOS"
+ },
+ "LKR": {
+ "name": "Sri Lanka ruupia",
+ "symbol": "LKR"
+ },
+ "SDG": {
+ "name": "Sudaani nael",
+ "symbol": "SDG"
+ },
+ "SRD": {
+ "name": "Surinami dollar",
+ "symbol": "SRD"
+ },
+ "GBP": {
+ "name": "Suurbritannia naelsterling",
+ "symbol": "£"
+ },
+ "SZL": {
+ "name": "Svaasimaa lilangeni",
+ "symbol": "SZL"
+ },
+ "SYP": {
+ "name": "Süüria nael",
+ "symbol": "SYP"
+ },
+ "CHF": {
+ "name": "Å veitsi frank",
+ "symbol": "CHF"
+ },
+ "ZWL": {
+ "name": "ZWL",
+ "symbol": "ZWL"
+ },
+ "DKK": {
+ "name": "Taani kroon",
+ "symbol": "DKK"
+ },
+ "TJS": {
+ "name": "Tadžikistani somoni",
+ "symbol": "TJS"
+ },
+ "THB": {
+ "name": "Tai baat",
+ "symbol": "฿"
+ },
+ "TWD": {
+ "name": "Taiwani dollar",
+ "symbol": "NT$"
+ },
+ "TZS": {
+ "name": "Tansaania Å¡illing",
+ "symbol": "TZS"
+ },
+ "TOP": {
+ "name": "Tonga pa’anga",
+ "symbol": "TOP"
+ },
+ "TTD": {
+ "name": "Trinidadi ja Tobago dollar",
+ "symbol": "TTD"
+ },
+ "CZK": {
+ "name": "TÅ¡ehhi kroon",
+ "symbol": "CZK"
+ },
+ "CLP": {
+ "name": "TÅ¡iili peeso",
+ "symbol": "CLP"
+ },
+ "TND": {
+ "name": "Tuneesia dinaar",
+ "symbol": "TND"
+ },
+ "TRY": {
+ "name": "Türgi uus liir",
+ "symbol": "TRY"
+ },
+ "TMT": {
+ "name": "Türkmenistani manat",
+ "symbol": "TMT"
+ },
+ "UGX": {
+ "name": "Uganda Å¡illing",
+ "symbol": "UGX"
+ },
+ "UAH": {
+ "name": "Ukraina grivna",
+ "symbol": "UAH"
+ },
+ "HUF": {
+ "name": "Ungari forint",
+ "symbol": "HUF"
+ },
+ "UYU": {
+ "name": "Uruguai peeso",
+ "symbol": "UYU"
+ },
+ "USD": {
+ "name": "USA dollar",
+ "symbol": "$"
+ },
+ "UZS": {
+ "name": "Usbekistani somm",
+ "symbol": "UZS"
+ },
+ "NZD": {
+ "name": "Uus-Meremaa dollar",
+ "symbol": "NZ$"
+ },
+ "BYR": {
+ "name": "Valgevene rubla",
+ "symbol": "BYR"
+ },
+ "VUV": {
+ "name": "Vanuatu vatu",
+ "symbol": "VUV"
+ },
+ "RUB": {
+ "name": "Venemaa rubla",
+ "symbol": "RUB"
+ },
+ "VEF": {
+ "name": "Venezuela bolívar",
+ "symbol": "VEF"
+ },
+ "VND": {
+ "name": "Vietnami dong",
+ "symbol": "â‚«"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/currency/eu.json b/library/intl/resources/currency/eu.json
new file mode 100644
index 000000000..7a4af1c9a
--- /dev/null
+++ b/library/intl/resources/currency/eu.json
@@ -0,0 +1,634 @@
+{
+ "USD": {
+ "name": "AEBetako dolarra",
+ "symbol": "US$"
+ },
+ "AFN": {
+ "name": "Afganistango afghania",
+ "symbol": "AFN"
+ },
+ "XOF": {
+ "name": "Afrika ekialdeko frankoa BCEAO",
+ "symbol": "CFA"
+ },
+ "XAF": {
+ "name": "Afrika erdialdeko frankoa BEAC",
+ "symbol": "FCFA"
+ },
+ "ALL": {
+ "name": "Albaniako leka",
+ "symbol": "ALL"
+ },
+ "DZD": {
+ "name": "Algeriako dinarra",
+ "symbol": "DZD"
+ },
+ "AOA": {
+ "name": "Angolako kwanza",
+ "symbol": "AOA"
+ },
+ "AED": {
+ "name": "Arabiar Emirerri Batuetako dirhama",
+ "symbol": "AED"
+ },
+ "ARS": {
+ "name": "Argentinako pesoa",
+ "symbol": "ARS"
+ },
+ "AMD": {
+ "name": "Armeniako drama",
+ "symbol": "AMD"
+ },
+ "AWG": {
+ "name": "Arubeko florina",
+ "symbol": "AWG"
+ },
+ "AUD": {
+ "name": "Australiako dolarra",
+ "symbol": "A$"
+ },
+ "AZN": {
+ "name": "Azerbaijango manata",
+ "symbol": "AZN"
+ },
+ "BSD": {
+ "name": "Bahametako dolarra",
+ "symbol": "BSD"
+ },
+ "BHD": {
+ "name": "Bahraingo dinarra",
+ "symbol": "BHD"
+ },
+ "BDT": {
+ "name": "Bangladesheko taka",
+ "symbol": "BDT"
+ },
+ "BBD": {
+ "name": "Barbadosetako dolarra",
+ "symbol": "BBD"
+ },
+ "BZD": {
+ "name": "Belizeko dolarra",
+ "symbol": "BZD"
+ },
+ "BMD": {
+ "name": "Bermudetako dolarra",
+ "symbol": "BMD"
+ },
+ "BTN": {
+ "name": "Bhutango ngultruma",
+ "symbol": "BTN"
+ },
+ "BYR": {
+ "name": "Bielorrusiako errubloa",
+ "symbol": "BYR"
+ },
+ "BOB": {
+ "name": "Boliviako bolivianoa",
+ "symbol": "BOB"
+ },
+ "BAM": {
+ "name": "Bosnia-Herzegovinako marko trukakorra",
+ "symbol": "BAM"
+ },
+ "BWP": {
+ "name": "Bosniako pula",
+ "symbol": "BWP"
+ },
+ "BRL": {
+ "name": "Brasilgo erreala",
+ "symbol": "R$"
+ },
+ "BND": {
+ "name": "Bruneiko dolarra",
+ "symbol": "BND"
+ },
+ "BGN": {
+ "name": "Bulgariako leva",
+ "symbol": "BGN"
+ },
+ "BIF": {
+ "name": "Burundiko frankoa",
+ "symbol": "BIF"
+ },
+ "CVE": {
+ "name": "Cabo Verdeko ezkutua",
+ "symbol": "CVE"
+ },
+ "XPF": {
+ "name": "CFP frankoa",
+ "symbol": "CFPF"
+ },
+ "CRC": {
+ "name": "Costa Ricako colona",
+ "symbol": "CRC"
+ },
+ "DKK": {
+ "name": "Danimarkako koroa",
+ "symbol": "DKK"
+ },
+ "DJF": {
+ "name": "Djibouteko frankoa",
+ "symbol": "DJF"
+ },
+ "DOP": {
+ "name": "Dominikar Errepublikako pesoa",
+ "symbol": "DOP"
+ },
+ "EGP": {
+ "name": "Egiptoko libera",
+ "symbol": "EGP"
+ },
+ "ERN": {
+ "name": "Eritreako nakfa",
+ "symbol": "ERN"
+ },
+ "RON": {
+ "name": "Errumaniako leua",
+ "symbol": "RON"
+ },
+ "RUB": {
+ "name": "Errusiako errubloa",
+ "symbol": "RUB"
+ },
+ "ETB": {
+ "name": "Etiopiako birra",
+ "symbol": "ETB"
+ },
+ "EUR": {
+ "name": "Euroa",
+ "symbol": "€"
+ },
+ "FKP": {
+ "name": "Falkland uharteetako libera",
+ "symbol": "FKP"
+ },
+ "FJD": {
+ "name": "Fijiko dolarra",
+ "symbol": "FJD"
+ },
+ "PHP": {
+ "name": "Filipinetako pesoa",
+ "symbol": "PHP"
+ },
+ "GMD": {
+ "name": "Ganbiako dalasia",
+ "symbol": "GMD"
+ },
+ "GEL": {
+ "name": "Georgiako laria",
+ "symbol": "GEL"
+ },
+ "GHS": {
+ "name": "Ghanako cedia",
+ "symbol": "GHS"
+ },
+ "GIP": {
+ "name": "Gibraltarreko libera",
+ "symbol": "GIP"
+ },
+ "GNF": {
+ "name": "Gineako frankoa",
+ "symbol": "GNF"
+ },
+ "GTQ": {
+ "name": "Guatemalako quetzala",
+ "symbol": "GTQ"
+ },
+ "GYD": {
+ "name": "Guyanako dolarra",
+ "symbol": "GYD"
+ },
+ "HTG": {
+ "name": "Haitiko gourdea",
+ "symbol": "HTG"
+ },
+ "KRW": {
+ "name": "Hego Koreako wona",
+ "symbol": "â‚©"
+ },
+ "SSP": {
+ "name": "Hego Sudango libera",
+ "symbol": "SSP"
+ },
+ "ZAR": {
+ "name": "Hegoafrikako randa",
+ "symbol": "ZAR"
+ },
+ "ANG": {
+ "name": "Holandarren Antilletako guilderra",
+ "symbol": "ANG"
+ },
+ "HNL": {
+ "name": "Hondurasko lempira",
+ "symbol": "HNL"
+ },
+ "HKD": {
+ "name": "Hong Kongeko dolarra",
+ "symbol": "HK$"
+ },
+ "HUF": {
+ "name": "Hungariako florina",
+ "symbol": "HUF"
+ },
+ "INR": {
+ "name": "Indiako errupia",
+ "symbol": "₹"
+ },
+ "IDR": {
+ "name": "Indonesiako errupia",
+ "symbol": "IDR"
+ },
+ "KPW": {
+ "name": "Ipar Koreako wona",
+ "symbol": "KPW"
+ },
+ "IQD": {
+ "name": "Irakeko dinarra",
+ "symbol": "IQD"
+ },
+ "IRR": {
+ "name": "Irango riala",
+ "symbol": "IRR"
+ },
+ "ISK": {
+ "name": "Islandiako koroa",
+ "symbol": "ISK"
+ },
+ "ILS": {
+ "name": "Israeleko sheqel berria",
+ "symbol": "₪"
+ },
+ "JMD": {
+ "name": "Jamaikako dolarra",
+ "symbol": "JMD"
+ },
+ "JPY": {
+ "name": "Japoniako yena",
+ "symbol": "JPÂ¥"
+ },
+ "JOD": {
+ "name": "Jordaniako dinarra",
+ "symbol": "JOD"
+ },
+ "KYD": {
+ "name": "Kaiman uharteetako dolarra",
+ "symbol": "KYD"
+ },
+ "CAD": {
+ "name": "Kanadako dolarra",
+ "symbol": "CA$"
+ },
+ "KHR": {
+ "name": "Kanbodiako riela",
+ "symbol": "KHR"
+ },
+ "XCD": {
+ "name": "Karibe ekialdeko dolarra",
+ "symbol": "EC$"
+ },
+ "KZT": {
+ "name": "Kazakhstango tengea",
+ "symbol": "KZT"
+ },
+ "KES": {
+ "name": "Kenyako txelina",
+ "symbol": "KES"
+ },
+ "KGS": {
+ "name": "Kirgizistango soma",
+ "symbol": "KGS"
+ },
+ "COP": {
+ "name": "Kolonbiako pesoa",
+ "symbol": "COP"
+ },
+ "KMF": {
+ "name": "Komoreetako frankoa",
+ "symbol": "KMF"
+ },
+ "CDF": {
+ "name": "Kongoko frankoa",
+ "symbol": "CDF"
+ },
+ "HRK": {
+ "name": "Kroaziako kuna",
+ "symbol": "HRK"
+ },
+ "CUC": {
+ "name": "Kubako peso trukakorra",
+ "symbol": "CUC"
+ },
+ "CUP": {
+ "name": "Kubako pesoa",
+ "symbol": "CUP"
+ },
+ "KWD": {
+ "name": "Kuwaiteko dinarra",
+ "symbol": "KWD"
+ },
+ "LAK": {
+ "name": "Laoseko kipa",
+ "symbol": "LAK"
+ },
+ "LSL": {
+ "name": "Lesothoko lotia",
+ "symbol": "LSL"
+ },
+ "LBP": {
+ "name": "Libanoko libera",
+ "symbol": "LBP"
+ },
+ "GBP": {
+ "name": "Libera esterlina",
+ "symbol": "£"
+ },
+ "LRD": {
+ "name": "Liberiako dolarra",
+ "symbol": "LRD"
+ },
+ "LYD": {
+ "name": "Libiako dinarra",
+ "symbol": "LYD"
+ },
+ "LTL": {
+ "name": "Lituaniako litasa",
+ "symbol": "LTL"
+ },
+ "MOP": {
+ "name": "Macanako pataca",
+ "symbol": "MOP"
+ },
+ "MGA": {
+ "name": "Madagaskarreko ariarya",
+ "symbol": "MGA"
+ },
+ "MWK": {
+ "name": "Malawiko kwacha",
+ "symbol": "MWK"
+ },
+ "MYR": {
+ "name": "Malaysiako ringgita",
+ "symbol": "MYR"
+ },
+ "MVR": {
+ "name": "Maldivetako rufiyaa",
+ "symbol": "MVR"
+ },
+ "MAD": {
+ "name": "Marokoko dirhama",
+ "symbol": "MAD"
+ },
+ "MRO": {
+ "name": "Mauritaniako ouguiya",
+ "symbol": "MRO"
+ },
+ "MUR": {
+ "name": "Maurizio uharteetako errupia",
+ "symbol": "MUR"
+ },
+ "MKD": {
+ "name": "Mazedoniako denara",
+ "symbol": "MKD"
+ },
+ "MXN": {
+ "name": "Mexikoko pesoa",
+ "symbol": "MX$"
+ },
+ "MDL": {
+ "name": "Moldaviako leua",
+ "symbol": "MDL"
+ },
+ "MNT": {
+ "name": "Mongoliako tugrika",
+ "symbol": "MNT"
+ },
+ "MZN": {
+ "name": "Mozambikeko metikala",
+ "symbol": "MZN"
+ },
+ "MMK": {
+ "name": "Myanmarreko kyata",
+ "symbol": "MMK"
+ },
+ "NAD": {
+ "name": "Namibiako dolarra",
+ "symbol": "NAD"
+ },
+ "NPR": {
+ "name": "Nepalgo errupia",
+ "symbol": "NPR"
+ },
+ "NGN": {
+ "name": "Nigeriako naira",
+ "symbol": "NGN"
+ },
+ "NIO": {
+ "name": "Nikaraguako cordoba",
+ "symbol": "NIO"
+ },
+ "NOK": {
+ "name": "Norvegiako koroa",
+ "symbol": "NOK"
+ },
+ "OMR": {
+ "name": "Omango riala",
+ "symbol": "OMR"
+ },
+ "PKR": {
+ "name": "Pakistango errupia",
+ "symbol": "PKR"
+ },
+ "PAB": {
+ "name": "Panamako balboa",
+ "symbol": "PAB"
+ },
+ "PGK": {
+ "name": "Papua Ginea Berriko kina",
+ "symbol": "PGK"
+ },
+ "PYG": {
+ "name": "Paraguaiko guarania",
+ "symbol": "PYG"
+ },
+ "PEN": {
+ "name": "Peruko sol berria",
+ "symbol": "PEN"
+ },
+ "PLN": {
+ "name": "Poloniako zlotya",
+ "symbol": "PLN"
+ },
+ "QAR": {
+ "name": "Qatarreko riala",
+ "symbol": "QAR"
+ },
+ "RWF": {
+ "name": "Ruandako frankoa",
+ "symbol": "RWF"
+ },
+ "SBD": {
+ "name": "Salomon uharteetako dolarra",
+ "symbol": "SBD"
+ },
+ "WST": {
+ "name": "Samoko tala",
+ "symbol": "WST"
+ },
+ "SHP": {
+ "name": "Santa Helenako libera",
+ "symbol": "SHP"
+ },
+ "STD": {
+ "name": "Sao Tomeko eta Principeko dobra",
+ "symbol": "STD"
+ },
+ "SAR": {
+ "name": "Saudiko riala",
+ "symbol": "SAR"
+ },
+ "RSD": {
+ "name": "Serbiako dinarra",
+ "symbol": "RSD"
+ },
+ "SCR": {
+ "name": "Seychelleetako errupia",
+ "symbol": "SCR"
+ },
+ "SLL": {
+ "name": "Sierra Leonako leona",
+ "symbol": "SLL"
+ },
+ "SGD": {
+ "name": "Singapurreko dolarra",
+ "symbol": "SGD"
+ },
+ "SYP": {
+ "name": "Siriako libera",
+ "symbol": "SYP"
+ },
+ "SOS": {
+ "name": "Somaliako txelina",
+ "symbol": "SOS"
+ },
+ "LKR": {
+ "name": "Sri Lankako errupia",
+ "symbol": "LKR"
+ },
+ "SDG": {
+ "name": "Sudango libera",
+ "symbol": "SDG"
+ },
+ "SEK": {
+ "name": "Suediako koroa",
+ "symbol": "SEK"
+ },
+ "CHF": {
+ "name": "Suitzako frankoa",
+ "symbol": "CHF"
+ },
+ "SRD": {
+ "name": "Surinameko dolarra",
+ "symbol": "SRD"
+ },
+ "SVC": {
+ "name": "SVC",
+ "symbol": "SVC"
+ },
+ "SZL": {
+ "name": "Swaziko lilangenia",
+ "symbol": "SZL"
+ },
+ "TWD": {
+ "name": "Taiwango dolar berria",
+ "symbol": "NT$"
+ },
+ "TJS": {
+ "name": "Tajikistango somonia",
+ "symbol": "TJS"
+ },
+ "TZS": {
+ "name": "Tanzaniako txelina",
+ "symbol": "TZS"
+ },
+ "THB": {
+ "name": "Thailandiako bahta",
+ "symbol": "฿"
+ },
+ "TOP": {
+ "name": "Tongako Paʻanga",
+ "symbol": "TOP"
+ },
+ "TTD": {
+ "name": "Trinidadeko eta Tobagoko dolarra",
+ "symbol": "TTD"
+ },
+ "TND": {
+ "name": "Tunisiako dinarra",
+ "symbol": "TND"
+ },
+ "TRY": {
+ "name": "Turkiako lira",
+ "symbol": "TRY"
+ },
+ "TMT": {
+ "name": "Turkmenistango manata",
+ "symbol": "TMT"
+ },
+ "CZK": {
+ "name": "Txekiar Errepublikako koroa",
+ "symbol": "CZK"
+ },
+ "CLP": {
+ "name": "Txileko pesoa",
+ "symbol": "CLP"
+ },
+ "CNY": {
+ "name": "Txinako yuana",
+ "symbol": "CNÂ¥"
+ },
+ "UGX": {
+ "name": "Ugandako txelina",
+ "symbol": "UGX"
+ },
+ "UAH": {
+ "name": "Ukrainako hryvnia",
+ "symbol": "UAH"
+ },
+ "UYU": {
+ "name": "Uruguaiko pesoa",
+ "symbol": "UYU"
+ },
+ "UZS": {
+ "name": "Uzbekistango soma",
+ "symbol": "UZS"
+ },
+ "VUV": {
+ "name": "Vanuatuko vatua",
+ "symbol": "VUV"
+ },
+ "VEF": {
+ "name": "Venezuelako bolivarra",
+ "symbol": "VEF"
+ },
+ "VND": {
+ "name": "Vietnameko donga",
+ "symbol": "â‚«"
+ },
+ "YER": {
+ "name": "Yemengo riala",
+ "symbol": "YER"
+ },
+ "ZMW": {
+ "name": "Zambiako kwacha",
+ "symbol": "ZMW"
+ },
+ "NZD": {
+ "name": "Zeelanda Berriko dolarra",
+ "symbol": "NZ$"
+ },
+ "ZWL": {
+ "name": "ZWL",
+ "symbol": "ZWL"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/currency/ewo.json b/library/intl/resources/currency/ewo.json
new file mode 100644
index 000000000..8095a4ca9
--- /dev/null
+++ b/library/intl/resources/currency/ewo.json
@@ -0,0 +1,634 @@
+{
+ "AFN": {
+ "name": "AFN",
+ "symbol": "AFN"
+ },
+ "ALL": {
+ "name": "ALL",
+ "symbol": "ALL"
+ },
+ "AMD": {
+ "name": "AMD",
+ "symbol": "AMD"
+ },
+ "ANG": {
+ "name": "ANG",
+ "symbol": "ANG"
+ },
+ "MGA": {
+ "name": "Ariari yá Maləgás",
+ "symbol": "MGA"
+ },
+ "ARS": {
+ "name": "ARS",
+ "symbol": "ARS"
+ },
+ "AWG": {
+ "name": "AWG",
+ "symbol": "AWG"
+ },
+ "AZN": {
+ "name": "AZN",
+ "symbol": "AZN"
+ },
+ "BAM": {
+ "name": "BAM",
+ "symbol": "BAM"
+ },
+ "BBD": {
+ "name": "BBD",
+ "symbol": "BBD"
+ },
+ "BDT": {
+ "name": "BDT",
+ "symbol": "BDT"
+ },
+ "BGN": {
+ "name": "BGN",
+ "symbol": "BGN"
+ },
+ "ETB": {
+ "name": "Bír yá Etsiópia",
+ "symbol": "ETB"
+ },
+ "BMD": {
+ "name": "BMD",
+ "symbol": "BMD"
+ },
+ "BND": {
+ "name": "BND",
+ "symbol": "BND"
+ },
+ "BOB": {
+ "name": "BOB",
+ "symbol": "BOB"
+ },
+ "BRL": {
+ "name": "BRL",
+ "symbol": "R$"
+ },
+ "BSD": {
+ "name": "BSD",
+ "symbol": "BSD"
+ },
+ "BTN": {
+ "name": "BTN",
+ "symbol": "BTN"
+ },
+ "BYR": {
+ "name": "BYR",
+ "symbol": "BYR"
+ },
+ "BZD": {
+ "name": "BZD",
+ "symbol": "BZD"
+ },
+ "CLP": {
+ "name": "CLP",
+ "symbol": "CLP"
+ },
+ "COP": {
+ "name": "COP",
+ "symbol": "COP"
+ },
+ "CRC": {
+ "name": "CRC",
+ "symbol": "CRC"
+ },
+ "CUC": {
+ "name": "CUC",
+ "symbol": "CUC"
+ },
+ "CUP": {
+ "name": "CUP",
+ "symbol": "CUP"
+ },
+ "CZK": {
+ "name": "CZK",
+ "symbol": "CZK"
+ },
+ "GMD": {
+ "name": "Dalasí yá Gámbía",
+ "symbol": "GMD"
+ },
+ "DZD": {
+ "name": "Dinár yá Alehérí",
+ "symbol": "DZD"
+ },
+ "BHD": {
+ "name": "Dinár yá BahÉ™rÉ›Ìn",
+ "symbol": "BHD"
+ },
+ "LYD": {
+ "name": "Dinár yá Libí",
+ "symbol": "LYD"
+ },
+ "TND": {
+ "name": "Dinár yá Tunisí",
+ "symbol": "TND"
+ },
+ "AED": {
+ "name": "Dirám yá Emirá Aráb Uní",
+ "symbol": "AED"
+ },
+ "MAD": {
+ "name": "Dirám yá Maróg",
+ "symbol": "MAD"
+ },
+ "DKK": {
+ "name": "DKK",
+ "symbol": "DKK"
+ },
+ "STD": {
+ "name": "DóbÉ™Ìra yá Saó Tomé ai PÉ™linÉ™sípe",
+ "symbol": "STD"
+ },
+ "USD": {
+ "name": "Dolár yá amÉ›ÌrÉ™kÉ™",
+ "symbol": "US$"
+ },
+ "CAD": {
+ "name": "Dolár yá Kanáda",
+ "symbol": "CA$"
+ },
+ "LRD": {
+ "name": "Dolár yá Libéria",
+ "symbol": "LRD"
+ },
+ "NAD": {
+ "name": "Dolár yá Namibí",
+ "symbol": "NAD"
+ },
+ "AUD": {
+ "name": "Dolár yá Osətəralí",
+ "symbol": "A$"
+ },
+ "DOP": {
+ "name": "DOP",
+ "symbol": "DOP"
+ },
+ "CVE": {
+ "name": "EsÉ™kúdo yá KápÉ™ÌvÉ›ÌrÉ™",
+ "symbol": "CVE"
+ },
+ "EUR": {
+ "name": "əró",
+ "symbol": "€"
+ },
+ "XOF": {
+ "name": "Fəláŋ CFA (BCEAO)",
+ "symbol": "CFA"
+ },
+ "XAF": {
+ "name": "Fəláŋ CFA (BEAC)",
+ "symbol": "FCFA"
+ },
+ "BIF": {
+ "name": "Fəláŋ yá Burundí",
+ "symbol": "BIF"
+ },
+ "DJF": {
+ "name": "Fəláŋ yá dzibutí",
+ "symbol": "DJF"
+ },
+ "KMF": {
+ "name": "Fəláŋ yá Komória",
+ "symbol": "KMF"
+ },
+ "CDF": {
+ "name": "Fəláŋ yá Kongo",
+ "symbol": "CDF"
+ },
+ "RWF": {
+ "name": "Fəláŋ yá Ruwandá",
+ "symbol": "RWF"
+ },
+ "CHF": {
+ "name": "Fəláŋ yá Suís",
+ "symbol": "CHF"
+ },
+ "FJD": {
+ "name": "FJD",
+ "symbol": "FJD"
+ },
+ "FKP": {
+ "name": "FKP",
+ "symbol": "FKP"
+ },
+ "GEL": {
+ "name": "GEL",
+ "symbol": "GEL"
+ },
+ "GHS": {
+ "name": "GHS",
+ "symbol": "GHS"
+ },
+ "GIP": {
+ "name": "GIP",
+ "symbol": "GIP"
+ },
+ "GNF": {
+ "name": "GNF",
+ "symbol": "GNF"
+ },
+ "GTQ": {
+ "name": "GTQ",
+ "symbol": "GTQ"
+ },
+ "GYD": {
+ "name": "GYD",
+ "symbol": "GYD"
+ },
+ "HKD": {
+ "name": "HKD",
+ "symbol": "HK$"
+ },
+ "HNL": {
+ "name": "HNL",
+ "symbol": "HNL"
+ },
+ "HRK": {
+ "name": "HRK",
+ "symbol": "HRK"
+ },
+ "HTG": {
+ "name": "HTG",
+ "symbol": "HTG"
+ },
+ "HUF": {
+ "name": "HUF",
+ "symbol": "HUF"
+ },
+ "IDR": {
+ "name": "IDR",
+ "symbol": "IDR"
+ },
+ "ILS": {
+ "name": "ILS",
+ "symbol": "₪"
+ },
+ "IQD": {
+ "name": "IQD",
+ "symbol": "IQD"
+ },
+ "IRR": {
+ "name": "IRR",
+ "symbol": "IRR"
+ },
+ "ISK": {
+ "name": "ISK",
+ "symbol": "ISK"
+ },
+ "JMD": {
+ "name": "JMD",
+ "symbol": "JMD"
+ },
+ "JOD": {
+ "name": "JOD",
+ "symbol": "JOD"
+ },
+ "KGS": {
+ "name": "KGS",
+ "symbol": "KGS"
+ },
+ "KHR": {
+ "name": "KHR",
+ "symbol": "KHR"
+ },
+ "KPW": {
+ "name": "KPW",
+ "symbol": "KPW"
+ },
+ "KRW": {
+ "name": "KRW",
+ "symbol": "â‚©"
+ },
+ "AOA": {
+ "name": "Kwánəza yá Angolá",
+ "symbol": "AOA"
+ },
+ "MWK": {
+ "name": "Kwatsa yá Malawí",
+ "symbol": "MWK"
+ },
+ "ZMW": {
+ "name": "Kwatsa yá Zambí",
+ "symbol": "ZMW"
+ },
+ "KWD": {
+ "name": "KWD",
+ "symbol": "KWD"
+ },
+ "KYD": {
+ "name": "KYD",
+ "symbol": "KYD"
+ },
+ "KZT": {
+ "name": "KZT",
+ "symbol": "KZT"
+ },
+ "LAK": {
+ "name": "LAK",
+ "symbol": "LAK"
+ },
+ "LBP": {
+ "name": "LBP",
+ "symbol": "LBP"
+ },
+ "SLL": {
+ "name": "Leóne yá Sierá-leónə",
+ "symbol": "SLL"
+ },
+ "SZL": {
+ "name": "Lilangeni yá Swazí",
+ "symbol": "SZL"
+ },
+ "GBP": {
+ "name": "LívÉ™ÌlÉ™ SÉ™tÉ™rÉ™líŋ",
+ "symbol": "£"
+ },
+ "EGP": {
+ "name": "LívÉ™ÌlÉ™ yá EhíbÉ™tía",
+ "symbol": "EGP"
+ },
+ "SHP": {
+ "name": "LívÉ™lÉ™ yá Ǹfúfúb ElÉ›Ìn",
+ "symbol": "SHP"
+ },
+ "SDG": {
+ "name": "Lívələ yá Sudán",
+ "symbol": "SDG"
+ },
+ "LKR": {
+ "name": "LKR",
+ "symbol": "LKR"
+ },
+ "LSL": {
+ "name": "Lotí yá Lesotó",
+ "symbol": "LSL"
+ },
+ "LTL": {
+ "name": "LTL",
+ "symbol": "LTL"
+ },
+ "MDL": {
+ "name": "MDL",
+ "symbol": "MDL"
+ },
+ "MKD": {
+ "name": "MKD",
+ "symbol": "MKD"
+ },
+ "MMK": {
+ "name": "MMK",
+ "symbol": "MMK"
+ },
+ "MNT": {
+ "name": "MNT",
+ "symbol": "MNT"
+ },
+ "MOP": {
+ "name": "MOP",
+ "symbol": "MOP"
+ },
+ "MVR": {
+ "name": "MVR",
+ "symbol": "MVR"
+ },
+ "MXN": {
+ "name": "MXN",
+ "symbol": "MX$"
+ },
+ "MYR": {
+ "name": "MYR",
+ "symbol": "MYR"
+ },
+ "MZN": {
+ "name": "MZN",
+ "symbol": "MZN"
+ },
+ "ERN": {
+ "name": "Náfəka yá Eritelé",
+ "symbol": "ERN"
+ },
+ "NGN": {
+ "name": "Náíra yá Nihéria",
+ "symbol": "NGN"
+ },
+ "NIO": {
+ "name": "NIO",
+ "symbol": "NIO"
+ },
+ "NOK": {
+ "name": "NOK",
+ "symbol": "NOK"
+ },
+ "NPR": {
+ "name": "NPR",
+ "symbol": "NPR"
+ },
+ "NZD": {
+ "name": "NZD",
+ "symbol": "NZ$"
+ },
+ "OMR": {
+ "name": "OMR",
+ "symbol": "OMR"
+ },
+ "PAB": {
+ "name": "PAB",
+ "symbol": "PAB"
+ },
+ "PEN": {
+ "name": "PEN",
+ "symbol": "PEN"
+ },
+ "PGK": {
+ "name": "PGK",
+ "symbol": "PGK"
+ },
+ "PHP": {
+ "name": "PHP",
+ "symbol": "PHP"
+ },
+ "PKR": {
+ "name": "PKR",
+ "symbol": "PKR"
+ },
+ "PLN": {
+ "name": "PLN",
+ "symbol": "PLN"
+ },
+ "BWP": {
+ "name": "Púlá yá Botswána",
+ "symbol": "BWP"
+ },
+ "PYG": {
+ "name": "PYG",
+ "symbol": "PYG"
+ },
+ "QAR": {
+ "name": "QAR",
+ "symbol": "QAR"
+ },
+ "ZAR": {
+ "name": "Ránədə yá Afiríka",
+ "symbol": "ZAR"
+ },
+ "SAR": {
+ "name": "Riál yá Arabí Saudí",
+ "symbol": "SAR"
+ },
+ "RON": {
+ "name": "RON",
+ "symbol": "RON"
+ },
+ "RSD": {
+ "name": "RSD",
+ "symbol": "RSD"
+ },
+ "RUB": {
+ "name": "RUB",
+ "symbol": "RUB"
+ },
+ "INR": {
+ "name": "Rupí yá É›Ìndía",
+ "symbol": "₹"
+ },
+ "MUR": {
+ "name": "Rupí yá Morís",
+ "symbol": "MUR"
+ },
+ "SCR": {
+ "name": "Rupí yá SÉ›sÉ›Ìl",
+ "symbol": "SCR"
+ },
+ "SBD": {
+ "name": "SBD",
+ "symbol": "SBD"
+ },
+ "SEK": {
+ "name": "SEK",
+ "symbol": "SEK"
+ },
+ "SGD": {
+ "name": "SGD",
+ "symbol": "SGD"
+ },
+ "KES": {
+ "name": "Silíŋ yá Keniá",
+ "symbol": "KES"
+ },
+ "SOS": {
+ "name": "Silíŋ yá Somalí",
+ "symbol": "SOS"
+ },
+ "TZS": {
+ "name": "Silíŋ yá Tanazaní",
+ "symbol": "TZS"
+ },
+ "UGX": {
+ "name": "Silíŋ yá Ugandá (1966–1987)",
+ "symbol": "UGX"
+ },
+ "SRD": {
+ "name": "SRD",
+ "symbol": "SRD"
+ },
+ "SSP": {
+ "name": "SSP",
+ "symbol": "SSP"
+ },
+ "SVC": {
+ "name": "SVC",
+ "symbol": "SVC"
+ },
+ "SYP": {
+ "name": "SYP",
+ "symbol": "SYP"
+ },
+ "THB": {
+ "name": "THB",
+ "symbol": "THB"
+ },
+ "TJS": {
+ "name": "TJS",
+ "symbol": "TJS"
+ },
+ "TMT": {
+ "name": "TMT",
+ "symbol": "TMT"
+ },
+ "TOP": {
+ "name": "TOP",
+ "symbol": "TOP"
+ },
+ "TRY": {
+ "name": "TRY",
+ "symbol": "TRY"
+ },
+ "TTD": {
+ "name": "TTD",
+ "symbol": "TTD"
+ },
+ "TWD": {
+ "name": "TWD",
+ "symbol": "NT$"
+ },
+ "UAH": {
+ "name": "UAH",
+ "symbol": "UAH"
+ },
+ "MRO": {
+ "name": "Ugiya yá Moritaní",
+ "symbol": "MRO"
+ },
+ "UYU": {
+ "name": "UYU",
+ "symbol": "UYU"
+ },
+ "UZS": {
+ "name": "UZS",
+ "symbol": "UZS"
+ },
+ "VEF": {
+ "name": "VEF",
+ "symbol": "VEF"
+ },
+ "VND": {
+ "name": "VND",
+ "symbol": "â‚«"
+ },
+ "VUV": {
+ "name": "VUV",
+ "symbol": "VUV"
+ },
+ "WST": {
+ "name": "WST",
+ "symbol": "WST"
+ },
+ "XCD": {
+ "name": "XCD",
+ "symbol": "EC$"
+ },
+ "XPF": {
+ "name": "XPF",
+ "symbol": "CFPF"
+ },
+ "YER": {
+ "name": "YER",
+ "symbol": "YER"
+ },
+ "JPY": {
+ "name": "YÉ›Ìn yá HapÉ”Ìn",
+ "symbol": "JPÂ¥"
+ },
+ "CNY": {
+ "name": "Yuán Renəminəbí yá Tsainís",
+ "symbol": "CNÂ¥"
+ },
+ "ZWL": {
+ "name": "ZWL",
+ "symbol": "ZWL"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/currency/fa-AF.json b/library/intl/resources/currency/fa-AF.json
new file mode 100644
index 000000000..9cef5c90e
--- /dev/null
+++ b/library/intl/resources/currency/fa-AF.json
@@ -0,0 +1,634 @@
+{
+ "SVC": {
+ "name": "SVC",
+ "symbol": "SVC"
+ },
+ "MGA": {
+ "name": "آریاری مالاگاسی",
+ "symbol": "MGA"
+ },
+ "CVE": {
+ "name": "اسکودوی کیپ‌ورد",
+ "symbol": "CVE"
+ },
+ "AFN": {
+ "name": "اÙغانی اÙغانستان",
+ "symbol": "Ø‹"
+ },
+ "BTN": {
+ "name": "انگولتروم بوتان",
+ "symbol": "BTN"
+ },
+ "MRO": {
+ "name": "اوگوئیای موریتانی",
+ "symbol": "MRO"
+ },
+ "THB": {
+ "name": "بات تایلند",
+ "symbol": "฿"
+ },
+ "PAB": {
+ "name": "بالبوای پاناما",
+ "symbol": "PAB"
+ },
+ "VEF": {
+ "name": "بولیوار ونزوئلا",
+ "symbol": "VEF"
+ },
+ "BOB": {
+ "name": "بولیویانوی بولیوی",
+ "symbol": "BOB"
+ },
+ "ETB": {
+ "name": "بیر اتیوپی",
+ "symbol": "ETB"
+ },
+ "TOP": {
+ "name": "پاآنگای تونگا",
+ "symbol": "TOP"
+ },
+ "MOP": {
+ "name": "پاتاکای ماکائو",
+ "symbol": "MOP"
+ },
+ "ARS": {
+ "name": "پزوی آرژانتین",
+ "symbol": "ARS"
+ },
+ "UYU": {
+ "name": "پزوی اوروگوئه",
+ "symbol": "UYU"
+ },
+ "CUC": {
+ "name": "پزوی تبدیل‌پذیر کوبا",
+ "symbol": "CUC"
+ },
+ "DOP": {
+ "name": "پزوی جمهوری دومینیکن",
+ "symbol": "DOP"
+ },
+ "CLP": {
+ "name": "پزوی شیلی",
+ "symbol": "CLP"
+ },
+ "PHP": {
+ "name": "پزوی Ùیلیپین",
+ "symbol": "PHP"
+ },
+ "COP": {
+ "name": "پزوی کلمبیا",
+ "symbol": "COP"
+ },
+ "CUP": {
+ "name": "پزوی کوبا",
+ "symbol": "CUP"
+ },
+ "MXN": {
+ "name": "پزوی مکسیکو",
+ "symbol": "$MX"
+ },
+ "BWP": {
+ "name": "پولای بوتسوانا",
+ "symbol": "BWP"
+ },
+ "GBP": {
+ "name": "پوند بریتانیا",
+ "symbol": "£"
+ },
+ "GIP": {
+ "name": "پوند جبل‌الطارق",
+ "symbol": "GIP"
+ },
+ "FKP": {
+ "name": "پوند جزایر Ùالکلند",
+ "symbol": "FKP"
+ },
+ "SHP": {
+ "name": "پوند سنت هلن",
+ "symbol": "SHP"
+ },
+ "SSP": {
+ "name": "پوند سودان جنوبی",
+ "symbol": "SSP"
+ },
+ "BDT": {
+ "name": "تاکای بنگلادش",
+ "symbol": "BDT"
+ },
+ "WST": {
+ "name": "تالای ساموا",
+ "symbol": "WST"
+ },
+ "KZT": {
+ "name": "تنگهٔ قزاقستان",
+ "symbol": "KZT"
+ },
+ "MNT": {
+ "name": "توگریک مغولستان",
+ "symbol": "MNT"
+ },
+ "GMD": {
+ "name": "دالاسی گامبیا",
+ "symbol": "GMD"
+ },
+ "AUD": {
+ "name": "دالر آسترالیا",
+ "symbol": "A$"
+ },
+ "USD": {
+ "name": "دالر امریکا",
+ "symbol": "$"
+ },
+ "BND": {
+ "name": "دالر برونی",
+ "symbol": "BND"
+ },
+ "SGD": {
+ "name": "دالر سینگاپور",
+ "symbol": "SGD"
+ },
+ "CAD": {
+ "name": "دالر کانادا",
+ "symbol": "$CA"
+ },
+ "VND": {
+ "name": "دانگ ویتنام",
+ "symbol": "â‚«"
+ },
+ "AMD": {
+ "name": "درم ارمنستان",
+ "symbol": "AMD"
+ },
+ "AED": {
+ "name": "درهم امارات متحدهٔ عربی",
+ "symbol": "AED"
+ },
+ "MAD": {
+ "name": "درهم مراکش",
+ "symbol": "MAD"
+ },
+ "BBD": {
+ "name": "دلار باربادوس",
+ "symbol": "BBD"
+ },
+ "BSD": {
+ "name": "دلار باهاما",
+ "symbol": "BSD"
+ },
+ "BMD": {
+ "name": "دلار برمودا",
+ "symbol": "BMD"
+ },
+ "BZD": {
+ "name": "دلار بلیز",
+ "symbol": "BZD"
+ },
+ "TTD": {
+ "name": "دلار ترینیداد و توباگو",
+ "symbol": "TTD"
+ },
+ "JMD": {
+ "name": "دلار جامائیکا",
+ "symbol": "JMD"
+ },
+ "TWD": {
+ "name": "دلار جدید تایوان",
+ "symbol": "NT$"
+ },
+ "SBD": {
+ "name": "دلار جزایر سلیمان",
+ "symbol": "SBD"
+ },
+ "KYD": {
+ "name": "دلار جزایر Ú©Ùیمن",
+ "symbol": "KYD"
+ },
+ "NZD": {
+ "name": "دلار زلاند نو",
+ "symbol": "$NZ"
+ },
+ "ZWL": {
+ "name": "دلار زیمبابوه (۲۰۰۹)",
+ "symbol": "ZWL"
+ },
+ "SRD": {
+ "name": "دلار سورینام",
+ "symbol": "SRD"
+ },
+ "XCD": {
+ "name": "دلار شرق کارائیب",
+ "symbol": "$EC"
+ },
+ "FJD": {
+ "name": "دلار Ùیجی",
+ "symbol": "FJD"
+ },
+ "GYD": {
+ "name": "دلار گویان",
+ "symbol": "GYD"
+ },
+ "LRD": {
+ "name": "دلار لیبریا",
+ "symbol": "LRD"
+ },
+ "NAD": {
+ "name": "دلار نامیبیا",
+ "symbol": "NAD"
+ },
+ "HKD": {
+ "name": "دلار هنگ‌کنگ",
+ "symbol": "$HK"
+ },
+ "STD": {
+ "name": "دوبرای سائوتومه و پرنسیپ",
+ "symbol": "STD"
+ },
+ "JOD": {
+ "name": "دینار اردن",
+ "symbol": "JOD"
+ },
+ "DZD": {
+ "name": "دینار الجزایر",
+ "symbol": "DZD"
+ },
+ "BHD": {
+ "name": "دینار بحرین",
+ "symbol": "BHD"
+ },
+ "TND": {
+ "name": "دینار تونس",
+ "symbol": "TND"
+ },
+ "RSD": {
+ "name": "دینار صربستان",
+ "symbol": "RSD"
+ },
+ "IQD": {
+ "name": "دینار عراق",
+ "symbol": "IQD"
+ },
+ "KWD": {
+ "name": "دینار کویت",
+ "symbol": "KWD"
+ },
+ "LYD": {
+ "name": "دینار لیبی",
+ "symbol": "LYD"
+ },
+ "MKD": {
+ "name": "دینار مقدونیه",
+ "symbol": "MKD"
+ },
+ "ZAR": {
+ "name": "راند اÙریقای جنوبی",
+ "symbol": "ZAR"
+ },
+ "RUB": {
+ "name": "روبل روسیه",
+ "symbol": "RUB"
+ },
+ "BYR": {
+ "name": "روبل روسیهٔ سÙید",
+ "symbol": "BYR"
+ },
+ "IDR": {
+ "name": "روپیهٔ اندونزی",
+ "symbol": "IDR"
+ },
+ "PKR": {
+ "name": "روپیهٔ پاکستان",
+ "symbol": "PKR"
+ },
+ "LKR": {
+ "name": "روپیهٔ سری‌لانکا",
+ "symbol": "LKR"
+ },
+ "SCR": {
+ "name": "روپیهٔ سیشل",
+ "symbol": "SCR"
+ },
+ "MVR": {
+ "name": "روپیهٔ مالدیو",
+ "symbol": "MVR"
+ },
+ "MUR": {
+ "name": "روپیهٔ موریس",
+ "symbol": "MUR"
+ },
+ "NPR": {
+ "name": "روپیهٔ نپال",
+ "symbol": "NPR"
+ },
+ "INR": {
+ "name": "روپیهٔ هند",
+ "symbol": "₹"
+ },
+ "KHR": {
+ "name": "ری‌یل کامبوج",
+ "symbol": "KHR"
+ },
+ "IRR": {
+ "name": "ریال ایران",
+ "symbol": "ریال"
+ },
+ "BRL": {
+ "name": "رئال برزیل",
+ "symbol": "R$"
+ },
+ "SAR": {
+ "name": "ریال سعودی",
+ "symbol": "SAR"
+ },
+ "OMR": {
+ "name": "ریال عمان",
+ "symbol": "OMR"
+ },
+ "QAR": {
+ "name": "ریال قطر",
+ "symbol": "QAR"
+ },
+ "YER": {
+ "name": "ریال یمن",
+ "symbol": "YER"
+ },
+ "MYR": {
+ "name": "رینگیت مالزی",
+ "symbol": "MYR"
+ },
+ "PLN": {
+ "name": "زواتی لهستان",
+ "symbol": "PLN"
+ },
+ "TJS": {
+ "name": "سامانی تاجکستان",
+ "symbol": "TJS"
+ },
+ "GHS": {
+ "name": "سدی غنا",
+ "symbol": "GHS"
+ },
+ "UZS": {
+ "name": "سوم ازبکستان",
+ "symbol": "UZS"
+ },
+ "KGS": {
+ "name": "سوم قرقیزستان",
+ "symbol": "KGS"
+ },
+ "ILS": {
+ "name": "شقل جدید اسرائیل",
+ "symbol": "₪"
+ },
+ "UGX": {
+ "name": "شیلینگ اوگاندا",
+ "symbol": "UGX"
+ },
+ "TZS": {
+ "name": "شیلینگ تانزانیا",
+ "symbol": "TZS"
+ },
+ "SOS": {
+ "name": "شیلینگ سومالی",
+ "symbol": "SOS"
+ },
+ "KES": {
+ "name": "شیلینگ کنیا",
+ "symbol": "KES"
+ },
+ "XOF": {
+ "name": "Ùرانک CFA غرب Ø¢Ùریقا",
+ "symbol": "CFA"
+ },
+ "XAF": {
+ "name": "Ùرانک CFA مرکز Ø¢Ùریقا",
+ "symbol": "FCFA"
+ },
+ "XPF": {
+ "name": "Ùرانک CFP",
+ "symbol": "CFPF"
+ },
+ "BIF": {
+ "name": "Ùرانک بوروندی",
+ "symbol": "BIF"
+ },
+ "DJF": {
+ "name": "Ùرانک جیبوتی",
+ "symbol": "DJF"
+ },
+ "RWF": {
+ "name": "Ùرانک رواندا",
+ "symbol": "RWF"
+ },
+ "CHF": {
+ "name": "Ùرانک سویس",
+ "symbol": "CHF"
+ },
+ "CDF": {
+ "name": "Ùرانک Ú©Ù†Ú¯Ùˆ",
+ "symbol": "CDF"
+ },
+ "KMF": {
+ "name": "Ùرانک کومورو",
+ "symbol": "KMF"
+ },
+ "GNF": {
+ "name": "Ùرانک گینه",
+ "symbol": "GNF"
+ },
+ "AWG": {
+ "name": "Ùلورین آروبا",
+ "symbol": "AWG"
+ },
+ "HUF": {
+ "name": "Ùورینت مجارستان",
+ "symbol": "HUF"
+ },
+ "GTQ": {
+ "name": "کتزال گواتمالا",
+ "symbol": "GTQ"
+ },
+ "DKK": {
+ "name": "کرون دنمارک",
+ "symbol": "DKK"
+ },
+ "SEK": {
+ "name": "کرون سویدن",
+ "symbol": "SEK"
+ },
+ "NOK": {
+ "name": "کرون ناروی",
+ "symbol": "NOK"
+ },
+ "ISK": {
+ "name": "کرونای ایسلند",
+ "symbol": "ISK"
+ },
+ "ZMW": {
+ "name": "کواچای زامبیا",
+ "symbol": "ZMW"
+ },
+ "MWK": {
+ "name": "کواچای مالاوی",
+ "symbol": "MWK"
+ },
+ "AOA": {
+ "name": "کوانزای آنگولا",
+ "symbol": "AOA"
+ },
+ "NIO": {
+ "name": "کوردوبای نیکاراگوئه",
+ "symbol": "NIO"
+ },
+ "CZK": {
+ "name": "کورونای جمهوری چک",
+ "symbol": "CZK"
+ },
+ "CRC": {
+ "name": "کولون کاستاریکا",
+ "symbol": "CRC"
+ },
+ "HRK": {
+ "name": "کونای کرواسی",
+ "symbol": "HRK"
+ },
+ "MMK": {
+ "name": "کیات میانمار",
+ "symbol": "MMK"
+ },
+ "LAK": {
+ "name": "کیپ لائوس",
+ "symbol": "LAK"
+ },
+ "PGK": {
+ "name": "کینای پاپوا گینهٔ نو",
+ "symbol": "PGK"
+ },
+ "PYG": {
+ "name": "گوارانی پاراگوئه",
+ "symbol": "PYG"
+ },
+ "HTG": {
+ "name": "گورد هائیتی",
+ "symbol": "HTG"
+ },
+ "ANG": {
+ "name": "گیلدر آنتیل هلند",
+ "symbol": "ANG"
+ },
+ "GEL": {
+ "name": "لاری گرجستان",
+ "symbol": "GEL"
+ },
+ "BGN": {
+ "name": "ل٠بلغارستان",
+ "symbol": "BGN"
+ },
+ "ALL": {
+ "name": "لک آلبانی",
+ "symbol": "ALL"
+ },
+ "HNL": {
+ "name": "لمپیرای هندوراس",
+ "symbol": "HNL"
+ },
+ "LSL": {
+ "name": "لوتی لسوتو",
+ "symbol": "LSL"
+ },
+ "LTL": {
+ "name": "لیتاس لیتوانی",
+ "symbol": "LTL"
+ },
+ "TRY": {
+ "name": "لیرهٔ ترکیه",
+ "symbol": "TRY"
+ },
+ "SDG": {
+ "name": "لیرهٔ سودان",
+ "symbol": "SDG"
+ },
+ "SYP": {
+ "name": "لیرهٔ سوریه",
+ "symbol": "SYP"
+ },
+ "LBP": {
+ "name": "لیرهٔ لبنان",
+ "symbol": "LBP"
+ },
+ "EGP": {
+ "name": "لیرهٔ مصر",
+ "symbol": "EGP"
+ },
+ "SZL": {
+ "name": "لیلانگنی سوازیلند",
+ "symbol": "SZL"
+ },
+ "SLL": {
+ "name": "لئون سیرالئون",
+ "symbol": "SLL"
+ },
+ "RON": {
+ "name": "لئوی رومانی",
+ "symbol": "RON"
+ },
+ "MDL": {
+ "name": "لئوی مولداوی",
+ "symbol": "MDL"
+ },
+ "BAM": {
+ "name": "مارک تبدیل‌پذیر بوسنی و هرزگوین",
+ "symbol": "BAM"
+ },
+ "MZN": {
+ "name": "متیکال موزامبیک",
+ "symbol": "MZN"
+ },
+ "TMT": {
+ "name": "منات ترکمنستان",
+ "symbol": "TMT"
+ },
+ "AZN": {
+ "name": "منات جمهوری آذربایجان",
+ "symbol": "AZN"
+ },
+ "ERN": {
+ "name": "ناکÙای اریتره",
+ "symbol": "ERN"
+ },
+ "NGN": {
+ "name": "نایرای نیجریه",
+ "symbol": "NGN"
+ },
+ "PEN": {
+ "name": "نوئووسول پرو",
+ "symbol": "PEN"
+ },
+ "UAH": {
+ "name": "هریونیای اوکراین",
+ "symbol": "UAH"
+ },
+ "VUV": {
+ "name": "واتوی وانوواتو",
+ "symbol": "VUV"
+ },
+ "KRW": {
+ "name": "وون کرهٔ جنوبی",
+ "symbol": "â‚©"
+ },
+ "KPW": {
+ "name": "وون کرهٔ شمالی",
+ "symbol": "KPW"
+ },
+ "JPY": {
+ "name": "ین جاپان",
+ "symbol": "Â¥"
+ },
+ "CNY": {
+ "name": "یوآن چین",
+ "symbol": "Â¥CN"
+ },
+ "EUR": {
+ "name": "یورو",
+ "symbol": "€"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/currency/fa.json b/library/intl/resources/currency/fa.json
new file mode 100644
index 000000000..ec4a25fc1
--- /dev/null
+++ b/library/intl/resources/currency/fa.json
@@ -0,0 +1,634 @@
+{
+ "SVC": {
+ "name": "SVC",
+ "symbol": "SVC"
+ },
+ "MGA": {
+ "name": "آریاری مالاگاسی",
+ "symbol": "MGA"
+ },
+ "CVE": {
+ "name": "اسکودوی کیپ‌ورد",
+ "symbol": "CVE"
+ },
+ "AFN": {
+ "name": "اÙغانی اÙغانستان",
+ "symbol": "Ø‹"
+ },
+ "BTN": {
+ "name": "انگولتروم بوتان",
+ "symbol": "BTN"
+ },
+ "MRO": {
+ "name": "اوگوئیای موریتانی",
+ "symbol": "MRO"
+ },
+ "THB": {
+ "name": "بات تایلند",
+ "symbol": "฿"
+ },
+ "PAB": {
+ "name": "بالبوای پاناما",
+ "symbol": "PAB"
+ },
+ "VEF": {
+ "name": "بولیوار ونزوئلا",
+ "symbol": "VEF"
+ },
+ "BOB": {
+ "name": "بولیویانوی بولیوی",
+ "symbol": "BOB"
+ },
+ "ETB": {
+ "name": "بیر اتیوپی",
+ "symbol": "ETB"
+ },
+ "TOP": {
+ "name": "پاآنگای تونگا",
+ "symbol": "TOP"
+ },
+ "MOP": {
+ "name": "پاتاکای ماکائو",
+ "symbol": "MOP"
+ },
+ "ARS": {
+ "name": "پزوی آرژانتین",
+ "symbol": "ARS"
+ },
+ "UYU": {
+ "name": "پزوی اوروگوئه",
+ "symbol": "UYU"
+ },
+ "CUC": {
+ "name": "پزوی تبدیل‌پذیر کوبا",
+ "symbol": "CUC"
+ },
+ "DOP": {
+ "name": "پزوی جمهوری دومینیکن",
+ "symbol": "DOP"
+ },
+ "CLP": {
+ "name": "پزوی شیلی",
+ "symbol": "CLP"
+ },
+ "PHP": {
+ "name": "پزوی Ùیلیپین",
+ "symbol": "PHP"
+ },
+ "COP": {
+ "name": "پزوی کلمبیا",
+ "symbol": "COP"
+ },
+ "CUP": {
+ "name": "پزوی کوبا",
+ "symbol": "CUP"
+ },
+ "MXN": {
+ "name": "پزوی مکزیک",
+ "symbol": "$MX"
+ },
+ "BWP": {
+ "name": "پولای بوتسوانا",
+ "symbol": "BWP"
+ },
+ "GBP": {
+ "name": "پوند بریتانیا",
+ "symbol": "£"
+ },
+ "GIP": {
+ "name": "پوند جبل‌الطارق",
+ "symbol": "GIP"
+ },
+ "FKP": {
+ "name": "پوند جزایر Ùالکلند",
+ "symbol": "FKP"
+ },
+ "SHP": {
+ "name": "پوند سنت هلن",
+ "symbol": "SHP"
+ },
+ "SSP": {
+ "name": "پوند سودان جنوبی",
+ "symbol": "SSP"
+ },
+ "BDT": {
+ "name": "تاکای بنگلادش",
+ "symbol": "BDT"
+ },
+ "WST": {
+ "name": "تالای ساموا",
+ "symbol": "WST"
+ },
+ "KZT": {
+ "name": "تنگهٔ قزاقستان",
+ "symbol": "KZT"
+ },
+ "MNT": {
+ "name": "توگریک مغولستان",
+ "symbol": "MNT"
+ },
+ "GMD": {
+ "name": "دالاسی گامبیا",
+ "symbol": "GMD"
+ },
+ "VND": {
+ "name": "دانگ ویتنام",
+ "symbol": "â‚«"
+ },
+ "AMD": {
+ "name": "درم ارمنستان",
+ "symbol": "AMD"
+ },
+ "AED": {
+ "name": "درهم امارات متحدهٔ عربی",
+ "symbol": "AED"
+ },
+ "MAD": {
+ "name": "درهم مراکش",
+ "symbol": "MAD"
+ },
+ "AUD": {
+ "name": "دلار استرالیا",
+ "symbol": "A$"
+ },
+ "USD": {
+ "name": "دلار امریکا",
+ "symbol": "$"
+ },
+ "BBD": {
+ "name": "دلار باربادوس",
+ "symbol": "BBD"
+ },
+ "BSD": {
+ "name": "دلار باهاما",
+ "symbol": "BSD"
+ },
+ "BMD": {
+ "name": "دلار برمودا",
+ "symbol": "BMD"
+ },
+ "BND": {
+ "name": "دلار برونئی",
+ "symbol": "BND"
+ },
+ "BZD": {
+ "name": "دلار بلیز",
+ "symbol": "BZD"
+ },
+ "TTD": {
+ "name": "دلار ترینیداد و توباگو",
+ "symbol": "TTD"
+ },
+ "JMD": {
+ "name": "دلار جامائیکا",
+ "symbol": "JMD"
+ },
+ "TWD": {
+ "name": "دلار جدید تایوان",
+ "symbol": "NT$"
+ },
+ "SBD": {
+ "name": "دلار جزایر سلیمان",
+ "symbol": "SBD"
+ },
+ "KYD": {
+ "name": "دلار جزایر Ú©Ùیمن",
+ "symbol": "KYD"
+ },
+ "NZD": {
+ "name": "دلار زلاند نو",
+ "symbol": "$NZ"
+ },
+ "ZWL": {
+ "name": "دلار زیمبابوه (۲۰۰۹)",
+ "symbol": "ZWL"
+ },
+ "SGD": {
+ "name": "دلار سنگاپور",
+ "symbol": "SGD"
+ },
+ "SRD": {
+ "name": "دلار سورینام",
+ "symbol": "SRD"
+ },
+ "XCD": {
+ "name": "دلار شرق کارائیب",
+ "symbol": "$EC"
+ },
+ "FJD": {
+ "name": "دلار Ùیجی",
+ "symbol": "FJD"
+ },
+ "CAD": {
+ "name": "دلار کانادا",
+ "symbol": "$CA"
+ },
+ "GYD": {
+ "name": "دلار گویان",
+ "symbol": "GYD"
+ },
+ "LRD": {
+ "name": "دلار لیبریا",
+ "symbol": "LRD"
+ },
+ "NAD": {
+ "name": "دلار نامیبیا",
+ "symbol": "NAD"
+ },
+ "HKD": {
+ "name": "دلار هنگ‌کنگ",
+ "symbol": "$HK"
+ },
+ "STD": {
+ "name": "دوبرای سائوتومه و پرنسیپ",
+ "symbol": "STD"
+ },
+ "JOD": {
+ "name": "دینار اردن",
+ "symbol": "JOD"
+ },
+ "DZD": {
+ "name": "دینار الجزایر",
+ "symbol": "DZD"
+ },
+ "BHD": {
+ "name": "دینار بحرین",
+ "symbol": "BHD"
+ },
+ "TND": {
+ "name": "دینار تونس",
+ "symbol": "TND"
+ },
+ "RSD": {
+ "name": "دینار صربستان",
+ "symbol": "RSD"
+ },
+ "IQD": {
+ "name": "دینار عراق",
+ "symbol": "IQD"
+ },
+ "KWD": {
+ "name": "دینار کویت",
+ "symbol": "KWD"
+ },
+ "LYD": {
+ "name": "دینار لیبی",
+ "symbol": "LYD"
+ },
+ "MKD": {
+ "name": "دینار مقدونیه",
+ "symbol": "MKD"
+ },
+ "ZAR": {
+ "name": "راند اÙریقای جنوبی",
+ "symbol": "ZAR"
+ },
+ "BRL": {
+ "name": "رئال برزیل",
+ "symbol": "R$"
+ },
+ "BYR": {
+ "name": "روبل بیلوروسی",
+ "symbol": "BYR"
+ },
+ "RUB": {
+ "name": "روبل روسیه",
+ "symbol": "RUB"
+ },
+ "IDR": {
+ "name": "روپیهٔ اندونزی",
+ "symbol": "IDR"
+ },
+ "PKR": {
+ "name": "روپیهٔ پاکستان",
+ "symbol": "PKR"
+ },
+ "LKR": {
+ "name": "روپیهٔ سری‌لانکا",
+ "symbol": "LKR"
+ },
+ "SCR": {
+ "name": "روپیهٔ سیشل",
+ "symbol": "SCR"
+ },
+ "MVR": {
+ "name": "روپیهٔ مالدیو",
+ "symbol": "MVR"
+ },
+ "MUR": {
+ "name": "روپیهٔ موریس",
+ "symbol": "MUR"
+ },
+ "NPR": {
+ "name": "روپیهٔ نپال",
+ "symbol": "NPR"
+ },
+ "INR": {
+ "name": "روپیهٔ هند",
+ "symbol": "₹"
+ },
+ "IRR": {
+ "name": "ریال ایران",
+ "symbol": "ریال"
+ },
+ "SAR": {
+ "name": "ریال سعودی",
+ "symbol": "SAR"
+ },
+ "OMR": {
+ "name": "ریال عمان",
+ "symbol": "OMR"
+ },
+ "QAR": {
+ "name": "ریال قطر",
+ "symbol": "QAR"
+ },
+ "YER": {
+ "name": "ریال یمن",
+ "symbol": "YER"
+ },
+ "MYR": {
+ "name": "رینگیت مالزی",
+ "symbol": "MYR"
+ },
+ "KHR": {
+ "name": "ری‌یل کامبوج",
+ "symbol": "KHR"
+ },
+ "PLN": {
+ "name": "زواتی لهستان",
+ "symbol": "PLN"
+ },
+ "TJS": {
+ "name": "سامانی تاجیکستان",
+ "symbol": "TJS"
+ },
+ "GHS": {
+ "name": "سدی غنا",
+ "symbol": "GHS"
+ },
+ "UZS": {
+ "name": "سوم ازبکستان",
+ "symbol": "UZS"
+ },
+ "KGS": {
+ "name": "سوم قرقیزستان",
+ "symbol": "KGS"
+ },
+ "ILS": {
+ "name": "شقل جدید اسرائیل",
+ "symbol": "₪"
+ },
+ "UGX": {
+ "name": "شیلینگ اوگاندا",
+ "symbol": "UGX"
+ },
+ "TZS": {
+ "name": "شیلینگ تانزانیا",
+ "symbol": "TZS"
+ },
+ "SOS": {
+ "name": "شیلینگ سومالی",
+ "symbol": "SOS"
+ },
+ "KES": {
+ "name": "شیلینگ کنیا",
+ "symbol": "KES"
+ },
+ "XOF": {
+ "name": "Ùرانک CFA غرب Ø¢Ùریقا",
+ "symbol": "CFA"
+ },
+ "XAF": {
+ "name": "Ùرانک CFA مرکز Ø¢Ùریقا",
+ "symbol": "FCFA"
+ },
+ "XPF": {
+ "name": "Ùرانک CFP",
+ "symbol": "CFPF"
+ },
+ "BIF": {
+ "name": "Ùرانک بوروندی",
+ "symbol": "BIF"
+ },
+ "DJF": {
+ "name": "Ùرانک جیبوتی",
+ "symbol": "DJF"
+ },
+ "RWF": {
+ "name": "Ùرانک رواندا",
+ "symbol": "RWF"
+ },
+ "CHF": {
+ "name": "Ùرانک سوئیس",
+ "symbol": "CHF"
+ },
+ "CDF": {
+ "name": "Ùرانک Ú©Ù†Ú¯Ùˆ",
+ "symbol": "CDF"
+ },
+ "KMF": {
+ "name": "Ùرانک کومورو",
+ "symbol": "KMF"
+ },
+ "GNF": {
+ "name": "Ùرانک گینه",
+ "symbol": "GNF"
+ },
+ "AWG": {
+ "name": "Ùلورین آروبا",
+ "symbol": "AWG"
+ },
+ "HUF": {
+ "name": "Ùورینت مجارستان",
+ "symbol": "HUF"
+ },
+ "GTQ": {
+ "name": "کتزال گواتمالا",
+ "symbol": "GTQ"
+ },
+ "DKK": {
+ "name": "کرون دانمارک",
+ "symbol": "DKK"
+ },
+ "SEK": {
+ "name": "کرون سوئد",
+ "symbol": "SEK"
+ },
+ "NOK": {
+ "name": "کرون نروژ",
+ "symbol": "NOK"
+ },
+ "ISK": {
+ "name": "کرونای ایسلند",
+ "symbol": "ISK"
+ },
+ "ZMW": {
+ "name": "کواچای زامبیا",
+ "symbol": "ZMW"
+ },
+ "MWK": {
+ "name": "کواچای مالاوی",
+ "symbol": "MWK"
+ },
+ "AOA": {
+ "name": "کوانزای آنگولا",
+ "symbol": "AOA"
+ },
+ "NIO": {
+ "name": "کوردوبای نیکاراگوئه",
+ "symbol": "NIO"
+ },
+ "CZK": {
+ "name": "کورونای جمهوری چک",
+ "symbol": "CZK"
+ },
+ "CRC": {
+ "name": "کولون کاستاریکا",
+ "symbol": "CRC"
+ },
+ "HRK": {
+ "name": "کونای کرواسی",
+ "symbol": "HRK"
+ },
+ "MMK": {
+ "name": "کیات میانمار",
+ "symbol": "MMK"
+ },
+ "LAK": {
+ "name": "کیپ لائوس",
+ "symbol": "LAK"
+ },
+ "PGK": {
+ "name": "کینای پاپوا گینهٔ نو",
+ "symbol": "PGK"
+ },
+ "PYG": {
+ "name": "گوارانی پاراگوئه",
+ "symbol": "PYG"
+ },
+ "HTG": {
+ "name": "گورد هائیتی",
+ "symbol": "HTG"
+ },
+ "ANG": {
+ "name": "گیلدر آنتیل هلند",
+ "symbol": "ANG"
+ },
+ "GEL": {
+ "name": "لاری گرجستان",
+ "symbol": "GEL"
+ },
+ "SLL": {
+ "name": "لئون سیرالئون",
+ "symbol": "SLL"
+ },
+ "RON": {
+ "name": "لئوی رومانی",
+ "symbol": "RON"
+ },
+ "MDL": {
+ "name": "لئوی مولداوی",
+ "symbol": "MDL"
+ },
+ "BGN": {
+ "name": "ل٠بلغارستان",
+ "symbol": "BGN"
+ },
+ "ALL": {
+ "name": "لک آلبانی",
+ "symbol": "ALL"
+ },
+ "HNL": {
+ "name": "لمپیرای هندوراس",
+ "symbol": "HNL"
+ },
+ "LSL": {
+ "name": "لوتی لسوتو",
+ "symbol": "LSL"
+ },
+ "LTL": {
+ "name": "لیتاس لیتوانی",
+ "symbol": "LTL"
+ },
+ "TRY": {
+ "name": "لیرهٔ ترکیه",
+ "symbol": "TRY"
+ },
+ "SDG": {
+ "name": "لیرهٔ سودان",
+ "symbol": "SDG"
+ },
+ "SYP": {
+ "name": "لیرهٔ سوریه",
+ "symbol": "SYP"
+ },
+ "LBP": {
+ "name": "لیرهٔ لبنان",
+ "symbol": "LBP"
+ },
+ "EGP": {
+ "name": "لیرهٔ مصر",
+ "symbol": "EGP"
+ },
+ "SZL": {
+ "name": "لیلانگنی سوازیلند",
+ "symbol": "SZL"
+ },
+ "BAM": {
+ "name": "مارک تبدیل‌پذیر بوسنی و هرزگوین",
+ "symbol": "BAM"
+ },
+ "MZN": {
+ "name": "متیکال موزامبیک",
+ "symbol": "MZN"
+ },
+ "TMT": {
+ "name": "منات ترکمنستان",
+ "symbol": "TMT"
+ },
+ "AZN": {
+ "name": "منات جمهوری آذربایجان",
+ "symbol": "AZN"
+ },
+ "ERN": {
+ "name": "ناکÙای اریتره",
+ "symbol": "ERN"
+ },
+ "NGN": {
+ "name": "نایرای نیجریه",
+ "symbol": "NGN"
+ },
+ "PEN": {
+ "name": "نوئووسول پرو",
+ "symbol": "PEN"
+ },
+ "VUV": {
+ "name": "واتوی وانوواتو",
+ "symbol": "VUV"
+ },
+ "KRW": {
+ "name": "وون کرهٔ جنوبی",
+ "symbol": "â‚©"
+ },
+ "KPW": {
+ "name": "وون کرهٔ شمالی",
+ "symbol": "KPW"
+ },
+ "UAH": {
+ "name": "هریونیای اوکراین",
+ "symbol": "UAH"
+ },
+ "JPY": {
+ "name": "ین ژاپن",
+ "symbol": "Â¥"
+ },
+ "CNY": {
+ "name": "یوآن چین",
+ "symbol": "Â¥CN"
+ },
+ "EUR": {
+ "name": "یورو",
+ "symbol": "€"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/currency/ff.json b/library/intl/resources/currency/ff.json
new file mode 100644
index 000000000..e3f6bbe17
--- /dev/null
+++ b/library/intl/resources/currency/ff.json
@@ -0,0 +1,634 @@
+{
+ "AFN": {
+ "name": "AFN",
+ "symbol": "AFN"
+ },
+ "ALL": {
+ "name": "ALL",
+ "symbol": "ALL"
+ },
+ "AMD": {
+ "name": "AMD",
+ "symbol": "AMD"
+ },
+ "ANG": {
+ "name": "ANG",
+ "symbol": "ANG"
+ },
+ "MGA": {
+ "name": "Ariyari Madagaskaar",
+ "symbol": "MGA"
+ },
+ "ARS": {
+ "name": "ARS",
+ "symbol": "ARS"
+ },
+ "AWG": {
+ "name": "AWG",
+ "symbol": "AWG"
+ },
+ "AZN": {
+ "name": "AZN",
+ "symbol": "AZN"
+ },
+ "BAM": {
+ "name": "BAM",
+ "symbol": "BAM"
+ },
+ "BBD": {
+ "name": "BBD",
+ "symbol": "BBD"
+ },
+ "BDT": {
+ "name": "BDT",
+ "symbol": "BDT"
+ },
+ "BGN": {
+ "name": "BGN",
+ "symbol": "BGN"
+ },
+ "ETB": {
+ "name": "Biir Ecoppi",
+ "symbol": "ETB"
+ },
+ "BMD": {
+ "name": "BMD",
+ "symbol": "BMD"
+ },
+ "BND": {
+ "name": "BND",
+ "symbol": "BND"
+ },
+ "BOB": {
+ "name": "BOB",
+ "symbol": "BOB"
+ },
+ "BRL": {
+ "name": "BRL",
+ "symbol": "R$"
+ },
+ "BSD": {
+ "name": "BSD",
+ "symbol": "BSD"
+ },
+ "BTN": {
+ "name": "BTN",
+ "symbol": "BTN"
+ },
+ "BYR": {
+ "name": "BYR",
+ "symbol": "BYR"
+ },
+ "BZD": {
+ "name": "BZD",
+ "symbol": "BZD"
+ },
+ "CLP": {
+ "name": "CLP",
+ "symbol": "CLP"
+ },
+ "COP": {
+ "name": "COP",
+ "symbol": "COP"
+ },
+ "CRC": {
+ "name": "CRC",
+ "symbol": "CRC"
+ },
+ "CUC": {
+ "name": "CUC",
+ "symbol": "CUC"
+ },
+ "CUP": {
+ "name": "CUP",
+ "symbol": "CUP"
+ },
+ "CZK": {
+ "name": "CZK",
+ "symbol": "CZK"
+ },
+ "GMD": {
+ "name": "Dalasi Gammbi",
+ "symbol": "GMD"
+ },
+ "DZD": {
+ "name": "Dinaar Alaseri",
+ "symbol": "DZD"
+ },
+ "BHD": {
+ "name": "Dinaar Bahrayn",
+ "symbol": "BHD"
+ },
+ "LYD": {
+ "name": "Dinaar Libi",
+ "symbol": "LYD"
+ },
+ "TND": {
+ "name": "Dinaar Tunisii",
+ "symbol": "TND"
+ },
+ "MAD": {
+ "name": "Diraham Maruk",
+ "symbol": "MAD"
+ },
+ "AED": {
+ "name": "Dirham Emiraati Araab DentuÉ—i",
+ "symbol": "AED"
+ },
+ "DKK": {
+ "name": "DKK",
+ "symbol": "DKK"
+ },
+ "STD": {
+ "name": "Dobra Sawo Tome e Prensipe",
+ "symbol": "STD"
+ },
+ "USD": {
+ "name": "Dolaar Dowlaaji DentuÉ—i",
+ "symbol": "US$"
+ },
+ "CAD": {
+ "name": "Dolaar Kandaaa",
+ "symbol": "CA$"
+ },
+ "LRD": {
+ "name": "Dolaar Liberiyaa",
+ "symbol": "LRD"
+ },
+ "NAD": {
+ "name": "Dolaar Namibii",
+ "symbol": "NAD"
+ },
+ "AUD": {
+ "name": "Dolaar Ostaraalii",
+ "symbol": "A$"
+ },
+ "DOP": {
+ "name": "DOP",
+ "symbol": "DOP"
+ },
+ "CVE": {
+ "name": "Eskudoo Kap Weer",
+ "symbol": "CVE"
+ },
+ "DJF": {
+ "name": "Faraa Jibutii",
+ "symbol": "DJF"
+ },
+ "KMF": {
+ "name": "Faraa Komoor",
+ "symbol": "KMF"
+ },
+ "CDF": {
+ "name": "Faraa Konngo",
+ "symbol": "CDF"
+ },
+ "RWF": {
+ "name": "Faraa Ruwanndaa",
+ "symbol": "RWF"
+ },
+ "CHF": {
+ "name": "Faraa Suwiis",
+ "symbol": "CHF"
+ },
+ "FJD": {
+ "name": "FJD",
+ "symbol": "FJD"
+ },
+ "FKP": {
+ "name": "FKP",
+ "symbol": "FKP"
+ },
+ "GEL": {
+ "name": "GEL",
+ "symbol": "GEL"
+ },
+ "GHS": {
+ "name": "GHS",
+ "symbol": "GHS"
+ },
+ "GIP": {
+ "name": "GIP",
+ "symbol": "GIP"
+ },
+ "GNF": {
+ "name": "GNF",
+ "symbol": "GNF"
+ },
+ "GTQ": {
+ "name": "GTQ",
+ "symbol": "GTQ"
+ },
+ "GYD": {
+ "name": "GYD",
+ "symbol": "GYD"
+ },
+ "HKD": {
+ "name": "HKD",
+ "symbol": "HK$"
+ },
+ "HNL": {
+ "name": "HNL",
+ "symbol": "HNL"
+ },
+ "HRK": {
+ "name": "HRK",
+ "symbol": "HRK"
+ },
+ "HTG": {
+ "name": "HTG",
+ "symbol": "HTG"
+ },
+ "HUF": {
+ "name": "HUF",
+ "symbol": "HUF"
+ },
+ "IDR": {
+ "name": "IDR",
+ "symbol": "IDR"
+ },
+ "ILS": {
+ "name": "ILS",
+ "symbol": "₪"
+ },
+ "IQD": {
+ "name": "IQD",
+ "symbol": "IQD"
+ },
+ "IRR": {
+ "name": "IRR",
+ "symbol": "IRR"
+ },
+ "ISK": {
+ "name": "ISK",
+ "symbol": "ISK"
+ },
+ "JMD": {
+ "name": "JMD",
+ "symbol": "JMD"
+ },
+ "JOD": {
+ "name": "JOD",
+ "symbol": "JOD"
+ },
+ "KGS": {
+ "name": "KGS",
+ "symbol": "KGS"
+ },
+ "KHR": {
+ "name": "KHR",
+ "symbol": "KHR"
+ },
+ "KPW": {
+ "name": "KPW",
+ "symbol": "KPW"
+ },
+ "KRW": {
+ "name": "KRW",
+ "symbol": "â‚©"
+ },
+ "MWK": {
+ "name": "Kuwacca Malaawi",
+ "symbol": "MWK"
+ },
+ "ZMW": {
+ "name": "Kuwacca Sammbi",
+ "symbol": "ZMW"
+ },
+ "AOA": {
+ "name": "Kwansaa Anngolaa",
+ "symbol": "AOA"
+ },
+ "KWD": {
+ "name": "KWD",
+ "symbol": "KWD"
+ },
+ "KYD": {
+ "name": "KYD",
+ "symbol": "KYD"
+ },
+ "KZT": {
+ "name": "KZT",
+ "symbol": "KZT"
+ },
+ "LAK": {
+ "name": "LAK",
+ "symbol": "LAK"
+ },
+ "LBP": {
+ "name": "LBP",
+ "symbol": "LBP"
+ },
+ "SLL": {
+ "name": "Lewoon Seraa Liyon",
+ "symbol": "SLL"
+ },
+ "EGP": {
+ "name": "Liibar Ejipt",
+ "symbol": "EGP"
+ },
+ "SHP": {
+ "name": "Liibar Sent Helen",
+ "symbol": "SHP"
+ },
+ "GBP": {
+ "name": "Liibar Sterling",
+ "symbol": "£"
+ },
+ "SDG": {
+ "name": "Liibar Sudaan",
+ "symbol": "SDG"
+ },
+ "SZL": {
+ "name": "Lilangeni Swaasilannda",
+ "symbol": "SZL"
+ },
+ "LKR": {
+ "name": "LKR",
+ "symbol": "LKR"
+ },
+ "LSL": {
+ "name": "Loti Lesotoo",
+ "symbol": "LSL"
+ },
+ "LTL": {
+ "name": "LTL",
+ "symbol": "LTL"
+ },
+ "XAF": {
+ "name": "MbuuÉ—i Seefaa BEAC",
+ "symbol": "FCFA"
+ },
+ "BIF": {
+ "name": "MbuuÉ—u Burunndi",
+ "symbol": "BIF"
+ },
+ "XOF": {
+ "name": "MbuuÉ—u Seefaa BCEAO",
+ "symbol": "CFA"
+ },
+ "MDL": {
+ "name": "MDL",
+ "symbol": "MDL"
+ },
+ "MKD": {
+ "name": "MKD",
+ "symbol": "MKD"
+ },
+ "MMK": {
+ "name": "MMK",
+ "symbol": "MMK"
+ },
+ "MNT": {
+ "name": "MNT",
+ "symbol": "MNT"
+ },
+ "MOP": {
+ "name": "MOP",
+ "symbol": "MOP"
+ },
+ "MVR": {
+ "name": "MVR",
+ "symbol": "MVR"
+ },
+ "MXN": {
+ "name": "MXN",
+ "symbol": "MX$"
+ },
+ "MYR": {
+ "name": "MYR",
+ "symbol": "MYR"
+ },
+ "MZN": {
+ "name": "MZN",
+ "symbol": "MZN"
+ },
+ "ERN": {
+ "name": "Nafka Eriteree",
+ "symbol": "ERN"
+ },
+ "NGN": {
+ "name": "Nayraa Nijeriyaa",
+ "symbol": "NGN"
+ },
+ "NIO": {
+ "name": "NIO",
+ "symbol": "NIO"
+ },
+ "NOK": {
+ "name": "NOK",
+ "symbol": "NOK"
+ },
+ "NPR": {
+ "name": "NPR",
+ "symbol": "NPR"
+ },
+ "NZD": {
+ "name": "NZD",
+ "symbol": "NZ$"
+ },
+ "OMR": {
+ "name": "OMR",
+ "symbol": "OMR"
+ },
+ "EUR": {
+ "name": "Oroo",
+ "symbol": "€"
+ },
+ "PAB": {
+ "name": "PAB",
+ "symbol": "PAB"
+ },
+ "PEN": {
+ "name": "PEN",
+ "symbol": "PEN"
+ },
+ "PGK": {
+ "name": "PGK",
+ "symbol": "PGK"
+ },
+ "PHP": {
+ "name": "PHP",
+ "symbol": "PHP"
+ },
+ "PKR": {
+ "name": "PKR",
+ "symbol": "PKR"
+ },
+ "PLN": {
+ "name": "PLN",
+ "symbol": "PLN"
+ },
+ "BWP": {
+ "name": "Pulaa Botwanaa",
+ "symbol": "BWP"
+ },
+ "PYG": {
+ "name": "PYG",
+ "symbol": "PYG"
+ },
+ "QAR": {
+ "name": "QAR",
+ "symbol": "QAR"
+ },
+ "ZAR": {
+ "name": "Rannda Afrik BÅ‹ Worgo",
+ "symbol": "ZAR"
+ },
+ "SAR": {
+ "name": "Riyaal Arabi Sawdit",
+ "symbol": "SAR"
+ },
+ "RON": {
+ "name": "RON",
+ "symbol": "RON"
+ },
+ "RSD": {
+ "name": "RSD",
+ "symbol": "RSD"
+ },
+ "RUB": {
+ "name": "RUB",
+ "symbol": "RUB"
+ },
+ "INR": {
+ "name": "Rupii Enndo",
+ "symbol": "₹"
+ },
+ "MUR": {
+ "name": "Rupii Moriis",
+ "symbol": "MUR"
+ },
+ "SCR": {
+ "name": "Rupii Seysel",
+ "symbol": "SCR"
+ },
+ "SBD": {
+ "name": "SBD",
+ "symbol": "SBD"
+ },
+ "SEK": {
+ "name": "SEK",
+ "symbol": "SEK"
+ },
+ "SGD": {
+ "name": "SGD",
+ "symbol": "SGD"
+ },
+ "KES": {
+ "name": "Siling Keñaa",
+ "symbol": "KES"
+ },
+ "SOS": {
+ "name": "Siling Soomali",
+ "symbol": "SOS"
+ },
+ "TZS": {
+ "name": "Siling Tansanii",
+ "symbol": "TZS"
+ },
+ "UGX": {
+ "name": "Siling Uganndaa",
+ "symbol": "UGX"
+ },
+ "SRD": {
+ "name": "SRD",
+ "symbol": "SRD"
+ },
+ "SSP": {
+ "name": "SSP",
+ "symbol": "SSP"
+ },
+ "SVC": {
+ "name": "SVC",
+ "symbol": "SVC"
+ },
+ "SYP": {
+ "name": "SYP",
+ "symbol": "SYP"
+ },
+ "THB": {
+ "name": "THB",
+ "symbol": "THB"
+ },
+ "TJS": {
+ "name": "TJS",
+ "symbol": "TJS"
+ },
+ "TMT": {
+ "name": "TMT",
+ "symbol": "TMT"
+ },
+ "TOP": {
+ "name": "TOP",
+ "symbol": "TOP"
+ },
+ "TRY": {
+ "name": "TRY",
+ "symbol": "TRY"
+ },
+ "TTD": {
+ "name": "TTD",
+ "symbol": "TTD"
+ },
+ "TWD": {
+ "name": "TWD",
+ "symbol": "NT$"
+ },
+ "UAH": {
+ "name": "UAH",
+ "symbol": "UAH"
+ },
+ "MRO": {
+ "name": "Ugiyya Muritani",
+ "symbol": "MRO"
+ },
+ "UYU": {
+ "name": "UYU",
+ "symbol": "UYU"
+ },
+ "UZS": {
+ "name": "UZS",
+ "symbol": "UZS"
+ },
+ "VEF": {
+ "name": "VEF",
+ "symbol": "VEF"
+ },
+ "VND": {
+ "name": "VND",
+ "symbol": "â‚«"
+ },
+ "VUV": {
+ "name": "VUV",
+ "symbol": "VUV"
+ },
+ "WST": {
+ "name": "WST",
+ "symbol": "WST"
+ },
+ "XCD": {
+ "name": "XCD",
+ "symbol": "EC$"
+ },
+ "XPF": {
+ "name": "XPF",
+ "symbol": "CFPF"
+ },
+ "JPY": {
+ "name": "Yen Sapoo",
+ "symbol": "JPÂ¥"
+ },
+ "YER": {
+ "name": "YER",
+ "symbol": "YER"
+ },
+ "CNY": {
+ "name": "Yuam Siin",
+ "symbol": "CNÂ¥"
+ },
+ "ZWL": {
+ "name": "ZWL",
+ "symbol": "ZWL"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/currency/fi.json b/library/intl/resources/currency/fi.json
new file mode 100644
index 000000000..c86cc0d33
--- /dev/null
+++ b/library/intl/resources/currency/fi.json
@@ -0,0 +1,634 @@
+{
+ "AFN": {
+ "name": "Afganistanin afgaani",
+ "symbol": "AFN"
+ },
+ "ANG": {
+ "name": "Alankomaiden Antillien guldeni",
+ "symbol": "ANG"
+ },
+ "ALL": {
+ "name": "Albanian lek",
+ "symbol": "ALL"
+ },
+ "DZD": {
+ "name": "Algerian dinaari",
+ "symbol": "DZD"
+ },
+ "AOA": {
+ "name": "Angolan kwanza",
+ "symbol": "AOA"
+ },
+ "AED": {
+ "name": "Arabiemiirikuntien dirhami",
+ "symbol": "AED"
+ },
+ "ARS": {
+ "name": "Argentiinan peso",
+ "symbol": "ARS"
+ },
+ "AMD": {
+ "name": "Armenian dram",
+ "symbol": "AMD"
+ },
+ "AWG": {
+ "name": "Aruban floriini",
+ "symbol": "AWG"
+ },
+ "AUD": {
+ "name": "Australian dollari",
+ "symbol": "AUD"
+ },
+ "AZN": {
+ "name": "Azerbaidžanin manat",
+ "symbol": "AZN"
+ },
+ "BSD": {
+ "name": "Bahaman dollari",
+ "symbol": "BSD"
+ },
+ "BHD": {
+ "name": "Bahrainin dinaari",
+ "symbol": "BHD"
+ },
+ "BDT": {
+ "name": "Bangladeshin taka",
+ "symbol": "BDT"
+ },
+ "BBD": {
+ "name": "Barbadosin dollari",
+ "symbol": "BBD"
+ },
+ "BZD": {
+ "name": "Belizen dollari",
+ "symbol": "BZD"
+ },
+ "BMD": {
+ "name": "Bermudan dollari",
+ "symbol": "BMD"
+ },
+ "BTN": {
+ "name": "Bhutanin ngultrum",
+ "symbol": "BTN"
+ },
+ "BOB": {
+ "name": "Bolivian boliviano",
+ "symbol": "BOB"
+ },
+ "BAM": {
+ "name": "Bosnia-Hertsegovinan vaihdettava markka",
+ "symbol": "BAM"
+ },
+ "BWP": {
+ "name": "Botswanan pula",
+ "symbol": "BWP"
+ },
+ "BRL": {
+ "name": "Brasilian real",
+ "symbol": "BRL"
+ },
+ "BND": {
+ "name": "Brunein dollari",
+ "symbol": "BND"
+ },
+ "BGN": {
+ "name": "Bulgarian lev",
+ "symbol": "BGN"
+ },
+ "BIF": {
+ "name": "Burundin frangi",
+ "symbol": "BIF"
+ },
+ "KYD": {
+ "name": "Caymansaarten dollari",
+ "symbol": "KYD"
+ },
+ "XOF": {
+ "name": "CFA-frangi BCEAO",
+ "symbol": "CFA"
+ },
+ "XAF": {
+ "name": "CFA-frangi BEAC",
+ "symbol": "FCFA"
+ },
+ "XPF": {
+ "name": "CFP-frangi",
+ "symbol": "XPF"
+ },
+ "CLP": {
+ "name": "Chilen peso",
+ "symbol": "CLP"
+ },
+ "CRC": {
+ "name": "Costa Rican colon",
+ "symbol": "CRC"
+ },
+ "DJF": {
+ "name": "Djiboutin frangi",
+ "symbol": "DJF"
+ },
+ "DOP": {
+ "name": "Dominikaanisen tasavallan peso",
+ "symbol": "DOP"
+ },
+ "EGP": {
+ "name": "Egyptin punta",
+ "symbol": "EGP"
+ },
+ "SVC": {
+ "name": "El Salvadorin colon",
+ "symbol": "SVC"
+ },
+ "GBP": {
+ "name": "Englannin punta",
+ "symbol": "£"
+ },
+ "ERN": {
+ "name": "Eritrean nakfa",
+ "symbol": "ERN"
+ },
+ "ZAR": {
+ "name": "Etelä-Afrikan randi",
+ "symbol": "ZAR"
+ },
+ "KRW": {
+ "name": "Etelä-Korean won",
+ "symbol": "KRW"
+ },
+ "SSP": {
+ "name": "Etelä-Sudanin punta",
+ "symbol": "SSP"
+ },
+ "ETB": {
+ "name": "Etiopian birr",
+ "symbol": "ETB"
+ },
+ "EUR": {
+ "name": "euro",
+ "symbol": "€"
+ },
+ "FKP": {
+ "name": "Falklandinsaarten punta",
+ "symbol": "FKP"
+ },
+ "FJD": {
+ "name": "Fidžin dollari",
+ "symbol": "FJD"
+ },
+ "PHP": {
+ "name": "Filippiinien peso",
+ "symbol": "PHP"
+ },
+ "GMD": {
+ "name": "Gambian dalasi",
+ "symbol": "GMD"
+ },
+ "GEL": {
+ "name": "Georgian lari",
+ "symbol": "GEL"
+ },
+ "GHS": {
+ "name": "Ghanan cedi",
+ "symbol": "GHS"
+ },
+ "GIP": {
+ "name": "Gibraltarin punta",
+ "symbol": "GIP"
+ },
+ "GTQ": {
+ "name": "Guatemalan quetzal",
+ "symbol": "GTQ"
+ },
+ "GNF": {
+ "name": "Guinean frangi",
+ "symbol": "GNF"
+ },
+ "GYD": {
+ "name": "Guyanan dollari",
+ "symbol": "GYD"
+ },
+ "HTG": {
+ "name": "Haitin gourde",
+ "symbol": "HTG"
+ },
+ "HNL": {
+ "name": "Hondurasin lempira",
+ "symbol": "HNL"
+ },
+ "HKD": {
+ "name": "Hongkongin dollari",
+ "symbol": "HKD"
+ },
+ "IDR": {
+ "name": "Indonesian rupia",
+ "symbol": "IDR"
+ },
+ "INR": {
+ "name": "Intian rupia",
+ "symbol": "INR"
+ },
+ "IQD": {
+ "name": "Irakin dinaari",
+ "symbol": "IQD"
+ },
+ "IRR": {
+ "name": "Iranin rial",
+ "symbol": "IRR"
+ },
+ "ISK": {
+ "name": "Islannin kruunu",
+ "symbol": "ISK"
+ },
+ "ILS": {
+ "name": "Israelin uusi sekeli",
+ "symbol": "ILS"
+ },
+ "XCD": {
+ "name": "Itä-Karibian dollari",
+ "symbol": "XCD"
+ },
+ "JMD": {
+ "name": "Jamaikan dollari",
+ "symbol": "JMD"
+ },
+ "JPY": {
+ "name": "Japanin jeni",
+ "symbol": "Â¥"
+ },
+ "YER": {
+ "name": "Jemenin rial",
+ "symbol": "YER"
+ },
+ "JOD": {
+ "name": "Jordanian dinaari",
+ "symbol": "JOD"
+ },
+ "KHR": {
+ "name": "Kambodžan riel",
+ "symbol": "KHR"
+ },
+ "CAD": {
+ "name": "Kanadan dollari",
+ "symbol": "CAD"
+ },
+ "CVE": {
+ "name": "Kap Verden escudo",
+ "symbol": "CVE"
+ },
+ "KZT": {
+ "name": "Kazakstanin tenge",
+ "symbol": "KZT"
+ },
+ "KES": {
+ "name": "Kenian Å¡illinki",
+ "symbol": "KES"
+ },
+ "CNY": {
+ "name": "Kiinan yuan",
+ "symbol": "CNY"
+ },
+ "KGS": {
+ "name": "Kirgisian som",
+ "symbol": "KGS"
+ },
+ "COP": {
+ "name": "Kolumbian peso",
+ "symbol": "COP"
+ },
+ "KMF": {
+ "name": "Komorien frangi",
+ "symbol": "KMF"
+ },
+ "CDF": {
+ "name": "Kongon frangi",
+ "symbol": "CDF"
+ },
+ "HRK": {
+ "name": "Kroatian kuna",
+ "symbol": "HRK"
+ },
+ "CUP": {
+ "name": "Kuuban peso",
+ "symbol": "CUP"
+ },
+ "CUC": {
+ "name": "Kuuban vaihdettava peso",
+ "symbol": "CUC"
+ },
+ "KWD": {
+ "name": "Kuwaitin dinaari",
+ "symbol": "KWD"
+ },
+ "LAK": {
+ "name": "Laosin kip",
+ "symbol": "LAK"
+ },
+ "LSL": {
+ "name": "Lesothon loti",
+ "symbol": "LSL"
+ },
+ "LBP": {
+ "name": "Libanonin punta",
+ "symbol": "LBP"
+ },
+ "LRD": {
+ "name": "Liberian dollari",
+ "symbol": "LRD"
+ },
+ "LYD": {
+ "name": "Libyan dinaari",
+ "symbol": "LYD"
+ },
+ "LTL": {
+ "name": "Liettuan liti",
+ "symbol": "LTL"
+ },
+ "MOP": {
+ "name": "Macaon pataca",
+ "symbol": "MOP"
+ },
+ "MGA": {
+ "name": "Madagaskarin ariary",
+ "symbol": "MGA"
+ },
+ "MKD": {
+ "name": "Makedonian denaari",
+ "symbol": "MKD"
+ },
+ "MWK": {
+ "name": "Malawin kwacha",
+ "symbol": "MWK"
+ },
+ "MVR": {
+ "name": "Malediivien rufiyaa",
+ "symbol": "MVR"
+ },
+ "MYR": {
+ "name": "Malesian ringgit",
+ "symbol": "MYR"
+ },
+ "MAD": {
+ "name": "Marokon dirhami",
+ "symbol": "MAD"
+ },
+ "MRO": {
+ "name": "Mauritanian ouguiya",
+ "symbol": "MRO"
+ },
+ "MUR": {
+ "name": "Mauritiuksen rupia",
+ "symbol": "MUR"
+ },
+ "MXN": {
+ "name": "Meksikon peso",
+ "symbol": "MXN"
+ },
+ "MDL": {
+ "name": "Moldovan leu",
+ "symbol": "MDL"
+ },
+ "MNT": {
+ "name": "Mongolian tugrik",
+ "symbol": "MNT"
+ },
+ "MZN": {
+ "name": "Mosambikin metical",
+ "symbol": "MZN"
+ },
+ "MMK": {
+ "name": "Myanmarin kyat",
+ "symbol": "MMK"
+ },
+ "NAD": {
+ "name": "Namibian dollari",
+ "symbol": "NAD"
+ },
+ "NPR": {
+ "name": "Nepalin rupia",
+ "symbol": "NPR"
+ },
+ "NIO": {
+ "name": "Nicaraguan cordoba",
+ "symbol": "NIO"
+ },
+ "NGN": {
+ "name": "Nigerian naira",
+ "symbol": "NGN"
+ },
+ "NOK": {
+ "name": "Norjan kruunu",
+ "symbol": "NOK"
+ },
+ "OMR": {
+ "name": "Omanin rial",
+ "symbol": "OMR"
+ },
+ "PKR": {
+ "name": "Pakistanin rupia",
+ "symbol": "PKR"
+ },
+ "PAB": {
+ "name": "Panaman balboa",
+ "symbol": "PAB"
+ },
+ "PGK": {
+ "name": "Papua-Uuden-Guinean kina",
+ "symbol": "PGK"
+ },
+ "PYG": {
+ "name": "Paraguayn guarani",
+ "symbol": "PYG"
+ },
+ "PEN": {
+ "name": "Perun uusi sol",
+ "symbol": "PEN"
+ },
+ "KPW": {
+ "name": "Pohjois-Korean won",
+ "symbol": "KPW"
+ },
+ "PLN": {
+ "name": "Puolan zloty",
+ "symbol": "PLN"
+ },
+ "QAR": {
+ "name": "Qatarin rial",
+ "symbol": "QAR"
+ },
+ "RON": {
+ "name": "Romanian leu",
+ "symbol": "RON"
+ },
+ "RWF": {
+ "name": "Ruandan frangi",
+ "symbol": "RWF"
+ },
+ "SEK": {
+ "name": "Ruotsin kruunu",
+ "symbol": "SEK"
+ },
+ "SHP": {
+ "name": "Saint Helenan punta",
+ "symbol": "SHP"
+ },
+ "SBD": {
+ "name": "Salomonsaarten dollari",
+ "symbol": "SBD"
+ },
+ "ZMW": {
+ "name": "Sambian kwacha",
+ "symbol": "ZMW"
+ },
+ "WST": {
+ "name": "Samoan tala",
+ "symbol": "WST"
+ },
+ "STD": {
+ "name": "São Tomén ja Príncipen dobra",
+ "symbol": "STD"
+ },
+ "SAR": {
+ "name": "Saudi-Arabian rial",
+ "symbol": "SAR"
+ },
+ "RSD": {
+ "name": "Serbian dinaari",
+ "symbol": "RSD"
+ },
+ "SCR": {
+ "name": "Seychellien rupia",
+ "symbol": "SCR"
+ },
+ "SLL": {
+ "name": "Sierra Leonen leone",
+ "symbol": "SLL"
+ },
+ "SGD": {
+ "name": "Singaporen dollari",
+ "symbol": "SGD"
+ },
+ "SOS": {
+ "name": "Somalian Å¡illinki",
+ "symbol": "SOS"
+ },
+ "LKR": {
+ "name": "Sri Lankan rupia",
+ "symbol": "LKR"
+ },
+ "SDG": {
+ "name": "Sudanin punta",
+ "symbol": "SDG"
+ },
+ "SRD": {
+ "name": "Surinamin dollari",
+ "symbol": "SRD"
+ },
+ "CHF": {
+ "name": "Sveitsin frangi",
+ "symbol": "CHF"
+ },
+ "SZL": {
+ "name": "Swazimaan lilangeni",
+ "symbol": "SZL"
+ },
+ "SYP": {
+ "name": "Syyrian punta",
+ "symbol": "SYP"
+ },
+ "TJS": {
+ "name": "Tadžikistanin somoni",
+ "symbol": "TJS"
+ },
+ "TWD": {
+ "name": "Taiwanin uusi dollari",
+ "symbol": "TWD"
+ },
+ "TZS": {
+ "name": "Tansanian Å¡illinki",
+ "symbol": "TZS"
+ },
+ "DKK": {
+ "name": "Tanskan kruunu",
+ "symbol": "DKK"
+ },
+ "THB": {
+ "name": "Thaimaan baht",
+ "symbol": "THB"
+ },
+ "TOP": {
+ "name": "Tongan pa’anga",
+ "symbol": "TOP"
+ },
+ "TTD": {
+ "name": "Trinidadin ja Tobagon dollari",
+ "symbol": "TTD"
+ },
+ "CZK": {
+ "name": "TÅ¡ekin koruna",
+ "symbol": "CZK"
+ },
+ "TND": {
+ "name": "Tunisian dinaari",
+ "symbol": "TND"
+ },
+ "TRY": {
+ "name": "Turkin liira",
+ "symbol": "TRY"
+ },
+ "TMT": {
+ "name": "Turkmenistanin manat",
+ "symbol": "TMT"
+ },
+ "UGX": {
+ "name": "Ugandan Å¡illinki",
+ "symbol": "UGX"
+ },
+ "UAH": {
+ "name": "Ukrainan hryvnia",
+ "symbol": "UAH"
+ },
+ "HUF": {
+ "name": "Unkarin forintti",
+ "symbol": "HUF"
+ },
+ "UYU": {
+ "name": "Uruguayn peso",
+ "symbol": "UYU"
+ },
+ "NZD": {
+ "name": "Uuden-Seelannin dollari",
+ "symbol": "NZD"
+ },
+ "UZS": {
+ "name": "Uzbekistanin som",
+ "symbol": "UZS"
+ },
+ "BYR": {
+ "name": "Valko-Venäjän rupla",
+ "symbol": "BYR"
+ },
+ "VUV": {
+ "name": "Vanuatun vatu",
+ "symbol": "VUV"
+ },
+ "VEF": {
+ "name": "Venezuelan bolivar",
+ "symbol": "VEF"
+ },
+ "RUB": {
+ "name": "Venäjän rupla",
+ "symbol": "RUB"
+ },
+ "VND": {
+ "name": "Vietnamin dong",
+ "symbol": "VND"
+ },
+ "USD": {
+ "name": "Yhdysvaltain dollari",
+ "symbol": "$"
+ },
+ "ZWL": {
+ "name": "Zimbabwen dollari (2009)",
+ "symbol": "ZWL"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/currency/fil.json b/library/intl/resources/currency/fil.json
new file mode 100644
index 000000000..78101b28e
--- /dev/null
+++ b/library/intl/resources/currency/fil.json
@@ -0,0 +1,634 @@
+{
+ "AFN": {
+ "name": "Afghan Afghani",
+ "symbol": "AFN"
+ },
+ "ALL": {
+ "name": "Albanian Lek",
+ "symbol": "ALL"
+ },
+ "DZD": {
+ "name": "Algerian Dinar",
+ "symbol": "DZD"
+ },
+ "AOA": {
+ "name": "Angolan Kwanza",
+ "symbol": "AOA"
+ },
+ "ARS": {
+ "name": "Argentine Peso",
+ "symbol": "ARS"
+ },
+ "AMD": {
+ "name": "Armenian Dram",
+ "symbol": "AMD"
+ },
+ "AWG": {
+ "name": "Aruban Florin",
+ "symbol": "AWG"
+ },
+ "AZN": {
+ "name": "Azerbaijani Manat",
+ "symbol": "AZN"
+ },
+ "BHD": {
+ "name": "Bahraini Dinar",
+ "symbol": "BHD"
+ },
+ "BDT": {
+ "name": "Bangladeshi Taka",
+ "symbol": "BDT"
+ },
+ "BYR": {
+ "name": "Belarusian Ruble",
+ "symbol": "BYR"
+ },
+ "BTN": {
+ "name": "Bhutanese Ngultrum",
+ "symbol": "BTN"
+ },
+ "BOB": {
+ "name": "Bolivian Boliviano",
+ "symbol": "BOB"
+ },
+ "BAM": {
+ "name": "Bosnia-Herzegovina Convertible Mark",
+ "symbol": "BAM"
+ },
+ "BWP": {
+ "name": "Botswanan Pula",
+ "symbol": "BWP"
+ },
+ "BRL": {
+ "name": "Brazilian Real",
+ "symbol": "R$"
+ },
+ "GBP": {
+ "name": "British Pound Sterling",
+ "symbol": "£"
+ },
+ "BGN": {
+ "name": "Bulgarian Lev",
+ "symbol": "BGN"
+ },
+ "BIF": {
+ "name": "Burundian Franc",
+ "symbol": "BIF"
+ },
+ "KHR": {
+ "name": "Cambodian Riel",
+ "symbol": "KHR"
+ },
+ "CVE": {
+ "name": "Cape Verdean Escudo",
+ "symbol": "CVE"
+ },
+ "XOF": {
+ "name": "CFA Franc BCEAO",
+ "symbol": "CFA"
+ },
+ "XAF": {
+ "name": "CFA Franc BEAC",
+ "symbol": "FCFA"
+ },
+ "XPF": {
+ "name": "CFP Franc",
+ "symbol": "CFPF"
+ },
+ "CNY": {
+ "name": "Chinese Yuan",
+ "symbol": "CNÂ¥"
+ },
+ "KMF": {
+ "name": "Comorian Franc",
+ "symbol": "KMF"
+ },
+ "CUC": {
+ "name": "Convertible na Piso ng Cuba",
+ "symbol": "CUC"
+ },
+ "CDF": {
+ "name": "Congolese Franc",
+ "symbol": "CDF"
+ },
+ "CRC": {
+ "name": "Costa Rican Colón",
+ "symbol": "CRC"
+ },
+ "HRK": {
+ "name": "Croatian Kuna",
+ "symbol": "HRK"
+ },
+ "CZK": {
+ "name": "Czech Republic Koruna",
+ "symbol": "CZK"
+ },
+ "DKK": {
+ "name": "Denmark Krone",
+ "symbol": "DKK"
+ },
+ "DJF": {
+ "name": "Djiboutian Franc",
+ "symbol": "DJF"
+ },
+ "AUD": {
+ "name": "Dolyar ng Australya",
+ "symbol": "A$"
+ },
+ "BSD": {
+ "name": "Dolyar ng Bahamas",
+ "symbol": "BSD"
+ },
+ "BBD": {
+ "name": "Dolyar ng Barbados",
+ "symbol": "BBD"
+ },
+ "BZD": {
+ "name": "Dolyar ng Belize",
+ "symbol": "BZD"
+ },
+ "BMD": {
+ "name": "Dolyar ng Bermuda",
+ "symbol": "BMD"
+ },
+ "BND": {
+ "name": "Dolyar ng Brunei",
+ "symbol": "BND"
+ },
+ "CAD": {
+ "name": "Dolyar ng Canada",
+ "symbol": "CA$"
+ },
+ "KYD": {
+ "name": "Dolyar ng Cayman Islands",
+ "symbol": "KYD"
+ },
+ "FJD": {
+ "name": "Dolyar ng Fiji",
+ "symbol": "FJD"
+ },
+ "GYD": {
+ "name": "Dolyar ng Guyanese",
+ "symbol": "GYD"
+ },
+ "HKD": {
+ "name": "Dolyar ng Hong Kong",
+ "symbol": "HK$"
+ },
+ "JMD": {
+ "name": "Dolyar ng Jamaica",
+ "symbol": "JMD"
+ },
+ "LRD": {
+ "name": "Dolyar ng Liberia",
+ "symbol": "LRD"
+ },
+ "NAD": {
+ "name": "Dolyar ng Namibia",
+ "symbol": "NAD"
+ },
+ "TWD": {
+ "name": "Dolyar ng New Taiwan",
+ "symbol": "NT$"
+ },
+ "NZD": {
+ "name": "Dolyar ng New Zealand",
+ "symbol": "NZ$"
+ },
+ "XCD": {
+ "name": "Dolyar ng Silangang Caribbean",
+ "symbol": "EC$"
+ },
+ "SGD": {
+ "name": "Dolyar ng Singapore",
+ "symbol": "SGD"
+ },
+ "SBD": {
+ "name": "Dolyar ng Solomon Islands",
+ "symbol": "SBD"
+ },
+ "SRD": {
+ "name": "Dolyar ng Suriname",
+ "symbol": "SRD"
+ },
+ "TTD": {
+ "name": "Dolyar ng Trinidad and Tobago",
+ "symbol": "TTD"
+ },
+ "USD": {
+ "name": "Dolyar ng US",
+ "symbol": "$"
+ },
+ "EGP": {
+ "name": "Egyptian Pound",
+ "symbol": "EGP"
+ },
+ "ERN": {
+ "name": "Eritrean Nakfa",
+ "symbol": "ERN"
+ },
+ "ETB": {
+ "name": "Ethiopian Birr",
+ "symbol": "ETB"
+ },
+ "EUR": {
+ "name": "Euro",
+ "symbol": "€"
+ },
+ "FKP": {
+ "name": "Falkland Islands Pound",
+ "symbol": "FKP"
+ },
+ "GMD": {
+ "name": "Gambian Dalasi",
+ "symbol": "GMD"
+ },
+ "GEL": {
+ "name": "Georgian Lari",
+ "symbol": "GEL"
+ },
+ "GHS": {
+ "name": "Ghanaian Cedi",
+ "symbol": "GHS"
+ },
+ "GIP": {
+ "name": "Gibraltar Pound",
+ "symbol": "GIP"
+ },
+ "GTQ": {
+ "name": "Guatemalan Quetzal",
+ "symbol": "GTQ"
+ },
+ "GNF": {
+ "name": "Guinean Franc",
+ "symbol": "GNF"
+ },
+ "HTG": {
+ "name": "Haitian Gourde",
+ "symbol": "HTG"
+ },
+ "HNL": {
+ "name": "Honduran Lempira",
+ "symbol": "HNL"
+ },
+ "HUF": {
+ "name": "Hungarian Forint",
+ "symbol": "HUF"
+ },
+ "ISK": {
+ "name": "Icelandic Króna",
+ "symbol": "ISK"
+ },
+ "INR": {
+ "name": "Indian Rupee",
+ "symbol": "₹"
+ },
+ "IDR": {
+ "name": "Indonesian Rupiah",
+ "symbol": "IDR"
+ },
+ "IRR": {
+ "name": "Iranian Rial",
+ "symbol": "IRR"
+ },
+ "IQD": {
+ "name": "Iraqi Dinar",
+ "symbol": "IQD"
+ },
+ "ILS": {
+ "name": "Israeli New Sheqel",
+ "symbol": "₪"
+ },
+ "JPY": {
+ "name": "Japanese Yen",
+ "symbol": "Â¥"
+ },
+ "JOD": {
+ "name": "Jordanian Dinar",
+ "symbol": "JOD"
+ },
+ "KZT": {
+ "name": "Kazakhstani Tenge",
+ "symbol": "KZT"
+ },
+ "KES": {
+ "name": "Kenyan Shilling",
+ "symbol": "KES"
+ },
+ "KWD": {
+ "name": "Kuwaiti Dinar",
+ "symbol": "KWD"
+ },
+ "KGS": {
+ "name": "Kyrgystani Som",
+ "symbol": "KGS"
+ },
+ "LAK": {
+ "name": "Laotian Kip",
+ "symbol": "LAK"
+ },
+ "LBP": {
+ "name": "Lebanese Pound",
+ "symbol": "LBP"
+ },
+ "LSL": {
+ "name": "Lesotho Loti",
+ "symbol": "LSL"
+ },
+ "LYD": {
+ "name": "Libyan Dinar",
+ "symbol": "LYD"
+ },
+ "LTL": {
+ "name": "Lithuanian Litas",
+ "symbol": "LTL"
+ },
+ "MOP": {
+ "name": "Macanese Pataca",
+ "symbol": "MOP"
+ },
+ "MKD": {
+ "name": "Macedonian Denar",
+ "symbol": "MKD"
+ },
+ "MGA": {
+ "name": "Malagasy Ariary",
+ "symbol": "MGA"
+ },
+ "MWK": {
+ "name": "Malawian Kwacha",
+ "symbol": "MWK"
+ },
+ "MYR": {
+ "name": "Malaysian Ringgit",
+ "symbol": "MYR"
+ },
+ "MVR": {
+ "name": "Maldivian Rufiyaa",
+ "symbol": "MVR"
+ },
+ "MRO": {
+ "name": "Mauritanian Ouguiya",
+ "symbol": "MRO"
+ },
+ "MUR": {
+ "name": "Mauritian Rupee",
+ "symbol": "MUR"
+ },
+ "MDL": {
+ "name": "Moldovan Leu",
+ "symbol": "MDL"
+ },
+ "MNT": {
+ "name": "Mongolian Tugrik",
+ "symbol": "MNT"
+ },
+ "MAD": {
+ "name": "Moroccan Dirham",
+ "symbol": "MAD"
+ },
+ "MZN": {
+ "name": "Mozambican Metical",
+ "symbol": "MZN"
+ },
+ "MMK": {
+ "name": "Myanmar Kyat",
+ "symbol": "MMK"
+ },
+ "NPR": {
+ "name": "Nepalese Rupee",
+ "symbol": "NPR"
+ },
+ "ANG": {
+ "name": "Netherlands Antillean Guilder",
+ "symbol": "ANG"
+ },
+ "NIO": {
+ "name": "Nicaraguan Córdoba",
+ "symbol": "NIO"
+ },
+ "NGN": {
+ "name": "Nigerian Naira",
+ "symbol": "NGN"
+ },
+ "KPW": {
+ "name": "North Korean Won",
+ "symbol": "KPW"
+ },
+ "NOK": {
+ "name": "Norwegian Krone",
+ "symbol": "NOK"
+ },
+ "OMR": {
+ "name": "Omani Rial",
+ "symbol": "OMR"
+ },
+ "PKR": {
+ "name": "Pakistani Rupee",
+ "symbol": "PKR"
+ },
+ "PAB": {
+ "name": "Panamanian Balboa",
+ "symbol": "PAB"
+ },
+ "PGK": {
+ "name": "Papua New Guinean Kina",
+ "symbol": "PGK"
+ },
+ "PYG": {
+ "name": "Paraguayan Guarani",
+ "symbol": "PYG"
+ },
+ "PEN": {
+ "name": "Peruvian Nuevo Sol",
+ "symbol": "PEN"
+ },
+ "CLP": {
+ "name": "Piso ng Chile",
+ "symbol": "CLP"
+ },
+ "COP": {
+ "name": "Piso ng Colombia",
+ "symbol": "COP"
+ },
+ "CUP": {
+ "name": "Piso ng Cuba",
+ "symbol": "CUP"
+ },
+ "DOP": {
+ "name": "Piso ng Dominican",
+ "symbol": "DOP"
+ },
+ "MXN": {
+ "name": "Piso ng Mexico",
+ "symbol": "MX$"
+ },
+ "PHP": {
+ "name": "Piso ng Pilipinas",
+ "symbol": "₱"
+ },
+ "UYU": {
+ "name": "Piso ng Uruguay",
+ "symbol": "UYU"
+ },
+ "PLN": {
+ "name": "Polish Zloty",
+ "symbol": "PLN"
+ },
+ "QAR": {
+ "name": "Qatari Rial",
+ "symbol": "QAR"
+ },
+ "RON": {
+ "name": "Romanian Leu",
+ "symbol": "RON"
+ },
+ "RUB": {
+ "name": "Russian Ruble",
+ "symbol": "RUB"
+ },
+ "RWF": {
+ "name": "Rwandan Franc",
+ "symbol": "RWF"
+ },
+ "SHP": {
+ "name": "Saint Helena Pound",
+ "symbol": "SHP"
+ },
+ "WST": {
+ "name": "Samoan Tala",
+ "symbol": "WST"
+ },
+ "STD": {
+ "name": "Sao Tome and Principe Dobra",
+ "symbol": "STD"
+ },
+ "SAR": {
+ "name": "Saudi Riyal",
+ "symbol": "SAR"
+ },
+ "RSD": {
+ "name": "Serbian Dinar",
+ "symbol": "RSD"
+ },
+ "SCR": {
+ "name": "Seychellois Rupee",
+ "symbol": "SCR"
+ },
+ "SLL": {
+ "name": "Sierra Leonean Leone",
+ "symbol": "SLL"
+ },
+ "SOS": {
+ "name": "Somali Shilling",
+ "symbol": "SOS"
+ },
+ "ZAR": {
+ "name": "South African Rand",
+ "symbol": "ZAR"
+ },
+ "KRW": {
+ "name": "South Korean Won",
+ "symbol": "â‚©"
+ },
+ "SSP": {
+ "name": "South Sudanese Pound",
+ "symbol": "SSP"
+ },
+ "LKR": {
+ "name": "Sri Lankan Rupee",
+ "symbol": "LKR"
+ },
+ "SDG": {
+ "name": "Sudanese Pound",
+ "symbol": "SDG"
+ },
+ "SVC": {
+ "name": "SVC",
+ "symbol": "SVC"
+ },
+ "SZL": {
+ "name": "Swazi Lilangeni",
+ "symbol": "SZL"
+ },
+ "SEK": {
+ "name": "Swedish Krona",
+ "symbol": "SEK"
+ },
+ "CHF": {
+ "name": "Swiss Franc",
+ "symbol": "CHF"
+ },
+ "SYP": {
+ "name": "Syrian Pound",
+ "symbol": "SYP"
+ },
+ "TJS": {
+ "name": "Tajikistani Somoni",
+ "symbol": "TJS"
+ },
+ "TZS": {
+ "name": "Tanzanian Shilling",
+ "symbol": "TZS"
+ },
+ "THB": {
+ "name": "Thai Baht",
+ "symbol": "฿"
+ },
+ "TOP": {
+ "name": "Tongan Paʻanga",
+ "symbol": "TOP"
+ },
+ "TND": {
+ "name": "Tunisian Dinar",
+ "symbol": "TND"
+ },
+ "TRY": {
+ "name": "Turkish Lira",
+ "symbol": "TRY"
+ },
+ "TMT": {
+ "name": "Turkmenistani Manat",
+ "symbol": "TMT"
+ },
+ "UGX": {
+ "name": "Ugandan Shilling",
+ "symbol": "UGX"
+ },
+ "UAH": {
+ "name": "Ukrainian Hryvnia",
+ "symbol": "UAH"
+ },
+ "AED": {
+ "name": "United Arab Emirates Dirham",
+ "symbol": "AED"
+ },
+ "UZS": {
+ "name": "Uzbekistan Som",
+ "symbol": "UZS"
+ },
+ "VUV": {
+ "name": "Vanuatu Vatu",
+ "symbol": "VUV"
+ },
+ "VEF": {
+ "name": "Venezuelan Bolívar",
+ "symbol": "VEF"
+ },
+ "VND": {
+ "name": "Vietnamese Dong",
+ "symbol": "â‚«"
+ },
+ "YER": {
+ "name": "Yemeni Rial",
+ "symbol": "YER"
+ },
+ "ZMW": {
+ "name": "Zambian Kwacha",
+ "symbol": "ZMW"
+ },
+ "ZWL": {
+ "name": "ZWL",
+ "symbol": "ZWL"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/currency/fo.json b/library/intl/resources/currency/fo.json
new file mode 100644
index 000000000..71b2801fb
--- /dev/null
+++ b/library/intl/resources/currency/fo.json
@@ -0,0 +1,634 @@
+{
+ "AED": {
+ "name": "AED",
+ "symbol": "AED"
+ },
+ "AFN": {
+ "name": "AFN",
+ "symbol": "AFN"
+ },
+ "ALL": {
+ "name": "ALL",
+ "symbol": "ALL"
+ },
+ "AMD": {
+ "name": "AMD",
+ "symbol": "AMD"
+ },
+ "ANG": {
+ "name": "ANG",
+ "symbol": "ANG"
+ },
+ "AOA": {
+ "name": "AOA",
+ "symbol": "AOA"
+ },
+ "ARS": {
+ "name": "ARS",
+ "symbol": "ARS"
+ },
+ "AUD": {
+ "name": "AUD",
+ "symbol": "A$"
+ },
+ "AWG": {
+ "name": "AWG",
+ "symbol": "AWG"
+ },
+ "AZN": {
+ "name": "AZN",
+ "symbol": "AZN"
+ },
+ "BAM": {
+ "name": "BAM",
+ "symbol": "BAM"
+ },
+ "BBD": {
+ "name": "BBD",
+ "symbol": "BBD"
+ },
+ "BDT": {
+ "name": "BDT",
+ "symbol": "BDT"
+ },
+ "BGN": {
+ "name": "BGN",
+ "symbol": "BGN"
+ },
+ "BHD": {
+ "name": "BHD",
+ "symbol": "BHD"
+ },
+ "BIF": {
+ "name": "BIF",
+ "symbol": "BIF"
+ },
+ "BMD": {
+ "name": "BMD",
+ "symbol": "BMD"
+ },
+ "BND": {
+ "name": "BND",
+ "symbol": "BND"
+ },
+ "BOB": {
+ "name": "BOB",
+ "symbol": "BOB"
+ },
+ "BRL": {
+ "name": "BRL",
+ "symbol": "R$"
+ },
+ "BSD": {
+ "name": "BSD",
+ "symbol": "BSD"
+ },
+ "BTN": {
+ "name": "BTN",
+ "symbol": "BTN"
+ },
+ "BWP": {
+ "name": "BWP",
+ "symbol": "BWP"
+ },
+ "BYR": {
+ "name": "BYR",
+ "symbol": "BYR"
+ },
+ "BZD": {
+ "name": "BZD",
+ "symbol": "BZD"
+ },
+ "CAD": {
+ "name": "CAD",
+ "symbol": "CA$"
+ },
+ "CDF": {
+ "name": "CDF",
+ "symbol": "CDF"
+ },
+ "CHF": {
+ "name": "CHF",
+ "symbol": "CHF"
+ },
+ "CLP": {
+ "name": "CLP",
+ "symbol": "CLP"
+ },
+ "CNY": {
+ "name": "CNY",
+ "symbol": "CNÂ¥"
+ },
+ "COP": {
+ "name": "COP",
+ "symbol": "COP"
+ },
+ "CRC": {
+ "name": "CRC",
+ "symbol": "CRC"
+ },
+ "CUC": {
+ "name": "CUC",
+ "symbol": "CUC"
+ },
+ "CUP": {
+ "name": "CUP",
+ "symbol": "CUP"
+ },
+ "CVE": {
+ "name": "CVE",
+ "symbol": "CVE"
+ },
+ "CZK": {
+ "name": "CZK",
+ "symbol": "CZK"
+ },
+ "DJF": {
+ "name": "DJF",
+ "symbol": "DJF"
+ },
+ "DKK": {
+ "name": "donsk króna",
+ "symbol": "kr"
+ },
+ "DOP": {
+ "name": "DOP",
+ "symbol": "DOP"
+ },
+ "DZD": {
+ "name": "DZD",
+ "symbol": "DZD"
+ },
+ "EGP": {
+ "name": "EGP",
+ "symbol": "EGP"
+ },
+ "ERN": {
+ "name": "ERN",
+ "symbol": "ERN"
+ },
+ "ETB": {
+ "name": "ETB",
+ "symbol": "ETB"
+ },
+ "EUR": {
+ "name": "euro",
+ "symbol": "€"
+ },
+ "FJD": {
+ "name": "FJD",
+ "symbol": "FJD"
+ },
+ "FKP": {
+ "name": "FKP",
+ "symbol": "FKP"
+ },
+ "GBP": {
+ "name": "GBP",
+ "symbol": "£"
+ },
+ "GEL": {
+ "name": "GEL",
+ "symbol": "GEL"
+ },
+ "GHS": {
+ "name": "GHS",
+ "symbol": "GHS"
+ },
+ "GIP": {
+ "name": "GIP",
+ "symbol": "GIP"
+ },
+ "GMD": {
+ "name": "GMD",
+ "symbol": "GMD"
+ },
+ "GNF": {
+ "name": "GNF",
+ "symbol": "GNF"
+ },
+ "GTQ": {
+ "name": "GTQ",
+ "symbol": "GTQ"
+ },
+ "GYD": {
+ "name": "GYD",
+ "symbol": "GYD"
+ },
+ "HKD": {
+ "name": "HKD",
+ "symbol": "HK$"
+ },
+ "HNL": {
+ "name": "HNL",
+ "symbol": "HNL"
+ },
+ "HRK": {
+ "name": "HRK",
+ "symbol": "HRK"
+ },
+ "HTG": {
+ "name": "HTG",
+ "symbol": "HTG"
+ },
+ "HUF": {
+ "name": "HUF",
+ "symbol": "HUF"
+ },
+ "IDR": {
+ "name": "IDR",
+ "symbol": "IDR"
+ },
+ "ILS": {
+ "name": "ILS",
+ "symbol": "₪"
+ },
+ "INR": {
+ "name": "INR",
+ "symbol": "₹"
+ },
+ "IQD": {
+ "name": "IQD",
+ "symbol": "IQD"
+ },
+ "IRR": {
+ "name": "IRR",
+ "symbol": "IRR"
+ },
+ "ISK": {
+ "name": "íslendsk króna",
+ "symbol": "ISK"
+ },
+ "JMD": {
+ "name": "JMD",
+ "symbol": "JMD"
+ },
+ "JOD": {
+ "name": "JOD",
+ "symbol": "JOD"
+ },
+ "JPY": {
+ "name": "JPY",
+ "symbol": "JPÂ¥"
+ },
+ "KES": {
+ "name": "KES",
+ "symbol": "KES"
+ },
+ "KGS": {
+ "name": "KGS",
+ "symbol": "KGS"
+ },
+ "KHR": {
+ "name": "KHR",
+ "symbol": "KHR"
+ },
+ "KMF": {
+ "name": "KMF",
+ "symbol": "KMF"
+ },
+ "KPW": {
+ "name": "KPW",
+ "symbol": "KPW"
+ },
+ "KRW": {
+ "name": "KRW",
+ "symbol": "â‚©"
+ },
+ "KWD": {
+ "name": "KWD",
+ "symbol": "KWD"
+ },
+ "KYD": {
+ "name": "KYD",
+ "symbol": "KYD"
+ },
+ "KZT": {
+ "name": "KZT",
+ "symbol": "KZT"
+ },
+ "LAK": {
+ "name": "LAK",
+ "symbol": "LAK"
+ },
+ "LBP": {
+ "name": "LBP",
+ "symbol": "LBP"
+ },
+ "LKR": {
+ "name": "LKR",
+ "symbol": "LKR"
+ },
+ "LRD": {
+ "name": "LRD",
+ "symbol": "LRD"
+ },
+ "LSL": {
+ "name": "LSL",
+ "symbol": "LSL"
+ },
+ "LTL": {
+ "name": "LTL",
+ "symbol": "LTL"
+ },
+ "LYD": {
+ "name": "LYD",
+ "symbol": "LYD"
+ },
+ "MAD": {
+ "name": "MAD",
+ "symbol": "MAD"
+ },
+ "MDL": {
+ "name": "MDL",
+ "symbol": "MDL"
+ },
+ "MGA": {
+ "name": "MGA",
+ "symbol": "MGA"
+ },
+ "MKD": {
+ "name": "MKD",
+ "symbol": "MKD"
+ },
+ "MMK": {
+ "name": "MMK",
+ "symbol": "MMK"
+ },
+ "MNT": {
+ "name": "MNT",
+ "symbol": "MNT"
+ },
+ "MOP": {
+ "name": "MOP",
+ "symbol": "MOP"
+ },
+ "MRO": {
+ "name": "MRO",
+ "symbol": "MRO"
+ },
+ "MUR": {
+ "name": "MUR",
+ "symbol": "MUR"
+ },
+ "MVR": {
+ "name": "MVR",
+ "symbol": "MVR"
+ },
+ "MWK": {
+ "name": "MWK",
+ "symbol": "MWK"
+ },
+ "MXN": {
+ "name": "MXN",
+ "symbol": "MX$"
+ },
+ "MYR": {
+ "name": "MYR",
+ "symbol": "MYR"
+ },
+ "MZN": {
+ "name": "MZN",
+ "symbol": "MZN"
+ },
+ "NAD": {
+ "name": "NAD",
+ "symbol": "NAD"
+ },
+ "NGN": {
+ "name": "NGN",
+ "symbol": "NGN"
+ },
+ "NIO": {
+ "name": "NIO",
+ "symbol": "NIO"
+ },
+ "NOK": {
+ "name": "norsk króna",
+ "symbol": "NOK"
+ },
+ "NPR": {
+ "name": "NPR",
+ "symbol": "NPR"
+ },
+ "NZD": {
+ "name": "NZD",
+ "symbol": "NZ$"
+ },
+ "OMR": {
+ "name": "OMR",
+ "symbol": "OMR"
+ },
+ "PAB": {
+ "name": "PAB",
+ "symbol": "PAB"
+ },
+ "PEN": {
+ "name": "PEN",
+ "symbol": "PEN"
+ },
+ "PGK": {
+ "name": "PGK",
+ "symbol": "PGK"
+ },
+ "PHP": {
+ "name": "PHP",
+ "symbol": "PHP"
+ },
+ "PKR": {
+ "name": "PKR",
+ "symbol": "PKR"
+ },
+ "PLN": {
+ "name": "PLN",
+ "symbol": "PLN"
+ },
+ "PYG": {
+ "name": "PYG",
+ "symbol": "PYG"
+ },
+ "QAR": {
+ "name": "QAR",
+ "symbol": "QAR"
+ },
+ "RON": {
+ "name": "RON",
+ "symbol": "RON"
+ },
+ "RSD": {
+ "name": "RSD",
+ "symbol": "RSD"
+ },
+ "RUB": {
+ "name": "RUB",
+ "symbol": "RUB"
+ },
+ "RWF": {
+ "name": "RWF",
+ "symbol": "RWF"
+ },
+ "SAR": {
+ "name": "SAR",
+ "symbol": "SAR"
+ },
+ "SBD": {
+ "name": "SBD",
+ "symbol": "SBD"
+ },
+ "SCR": {
+ "name": "SCR",
+ "symbol": "SCR"
+ },
+ "SDG": {
+ "name": "SDG",
+ "symbol": "SDG"
+ },
+ "SGD": {
+ "name": "SGD",
+ "symbol": "SGD"
+ },
+ "SHP": {
+ "name": "SHP",
+ "symbol": "SHP"
+ },
+ "SLL": {
+ "name": "SLL",
+ "symbol": "SLL"
+ },
+ "SOS": {
+ "name": "SOS",
+ "symbol": "SOS"
+ },
+ "SRD": {
+ "name": "SRD",
+ "symbol": "SRD"
+ },
+ "SSP": {
+ "name": "SSP",
+ "symbol": "SSP"
+ },
+ "STD": {
+ "name": "STD",
+ "symbol": "STD"
+ },
+ "SVC": {
+ "name": "SVC",
+ "symbol": "SVC"
+ },
+ "SEK": {
+ "name": "svensk króna",
+ "symbol": "SEK"
+ },
+ "SYP": {
+ "name": "SYP",
+ "symbol": "SYP"
+ },
+ "SZL": {
+ "name": "SZL",
+ "symbol": "SZL"
+ },
+ "THB": {
+ "name": "THB",
+ "symbol": "THB"
+ },
+ "TJS": {
+ "name": "TJS",
+ "symbol": "TJS"
+ },
+ "TMT": {
+ "name": "TMT",
+ "symbol": "TMT"
+ },
+ "TND": {
+ "name": "TND",
+ "symbol": "TND"
+ },
+ "TOP": {
+ "name": "TOP",
+ "symbol": "TOP"
+ },
+ "TRY": {
+ "name": "TRY",
+ "symbol": "TRY"
+ },
+ "TTD": {
+ "name": "TTD",
+ "symbol": "TTD"
+ },
+ "TWD": {
+ "name": "TWD",
+ "symbol": "NT$"
+ },
+ "TZS": {
+ "name": "TZS",
+ "symbol": "TZS"
+ },
+ "UAH": {
+ "name": "UAH",
+ "symbol": "UAH"
+ },
+ "UGX": {
+ "name": "UGX",
+ "symbol": "UGX"
+ },
+ "USD": {
+ "name": "USD",
+ "symbol": "US$"
+ },
+ "UYU": {
+ "name": "UYU",
+ "symbol": "UYU"
+ },
+ "UZS": {
+ "name": "UZS",
+ "symbol": "UZS"
+ },
+ "VEF": {
+ "name": "VEF",
+ "symbol": "VEF"
+ },
+ "VND": {
+ "name": "VND",
+ "symbol": "â‚«"
+ },
+ "VUV": {
+ "name": "VUV",
+ "symbol": "VUV"
+ },
+ "WST": {
+ "name": "WST",
+ "symbol": "WST"
+ },
+ "XAF": {
+ "name": "XAF",
+ "symbol": "FCFA"
+ },
+ "XCD": {
+ "name": "XCD",
+ "symbol": "EC$"
+ },
+ "XOF": {
+ "name": "XOF",
+ "symbol": "CFA"
+ },
+ "XPF": {
+ "name": "XPF",
+ "symbol": "CFPF"
+ },
+ "YER": {
+ "name": "YER",
+ "symbol": "YER"
+ },
+ "ZAR": {
+ "name": "ZAR",
+ "symbol": "ZAR"
+ },
+ "ZMW": {
+ "name": "ZMW",
+ "symbol": "ZMW"
+ },
+ "ZWL": {
+ "name": "ZWL",
+ "symbol": "ZWL"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/currency/fr-CA.json b/library/intl/resources/currency/fr-CA.json
new file mode 100644
index 000000000..93d2ddc07
--- /dev/null
+++ b/library/intl/resources/currency/fr-CA.json
@@ -0,0 +1,634 @@
+{
+ "AFN": {
+ "name": "afghani afghan",
+ "symbol": "AFN"
+ },
+ "MGA": {
+ "name": "ariary malgache",
+ "symbol": "MGA"
+ },
+ "THB": {
+ "name": "baht thaïlandais",
+ "symbol": "THB"
+ },
+ "PAB": {
+ "name": "balboa panaméen",
+ "symbol": "PAB"
+ },
+ "ETB": {
+ "name": "birr éthiopien",
+ "symbol": "ETB"
+ },
+ "VEF": {
+ "name": "bolivar vénézuélien",
+ "symbol": "VEF"
+ },
+ "BOB": {
+ "name": "boliviano bolivien",
+ "symbol": "BOB"
+ },
+ "GHS": {
+ "name": "cédi ghanéen",
+ "symbol": "GHS"
+ },
+ "CRC": {
+ "name": "colón costaricain",
+ "symbol": "CRC"
+ },
+ "SVC": {
+ "name": "colón salvadorien",
+ "symbol": "SVC"
+ },
+ "NIO": {
+ "name": "córdoba oro nicaraguayen",
+ "symbol": "NIO"
+ },
+ "DKK": {
+ "name": "couronne danoise",
+ "symbol": "DKK"
+ },
+ "ISK": {
+ "name": "couronne islandaise",
+ "symbol": "ISK"
+ },
+ "NOK": {
+ "name": "couronne norvégienne",
+ "symbol": "NOK"
+ },
+ "SEK": {
+ "name": "couronne suédoise",
+ "symbol": "SEK"
+ },
+ "CZK": {
+ "name": "couronne tchèque",
+ "symbol": "CZK"
+ },
+ "GMD": {
+ "name": "dalasi gambien",
+ "symbol": "GMD"
+ },
+ "MKD": {
+ "name": "denar macédonien",
+ "symbol": "MKD"
+ },
+ "DZD": {
+ "name": "dinar algérien",
+ "symbol": "DZD"
+ },
+ "BHD": {
+ "name": "dinar bahreïni",
+ "symbol": "BHD"
+ },
+ "IQD": {
+ "name": "dinar irakien",
+ "symbol": "IQD"
+ },
+ "JOD": {
+ "name": "dinar jordanien",
+ "symbol": "JOD"
+ },
+ "KWD": {
+ "name": "dinar koweïtien",
+ "symbol": "KWD"
+ },
+ "LYD": {
+ "name": "dinar libyen",
+ "symbol": "LYD"
+ },
+ "RSD": {
+ "name": "dinar serbe",
+ "symbol": "RSD"
+ },
+ "TND": {
+ "name": "dinar tunisien",
+ "symbol": "TND"
+ },
+ "AED": {
+ "name": "dirham des Émirats arabes unis",
+ "symbol": "AED"
+ },
+ "MAD": {
+ "name": "dirham marocain",
+ "symbol": "MAD"
+ },
+ "STD": {
+ "name": "dobra santoméen",
+ "symbol": "STD"
+ },
+ "AUD": {
+ "name": "dollar australien",
+ "symbol": "$ AU"
+ },
+ "BSD": {
+ "name": "dollar bahaméen",
+ "symbol": "BSD"
+ },
+ "BBD": {
+ "name": "dollar barbadien",
+ "symbol": "BBD"
+ },
+ "BZD": {
+ "name": "dollar bélizéen",
+ "symbol": "BZD"
+ },
+ "BMD": {
+ "name": "dollar bermudien",
+ "symbol": "BMD"
+ },
+ "BND": {
+ "name": "dollar brunéien",
+ "symbol": "BND"
+ },
+ "CAD": {
+ "name": "dollar canadien",
+ "symbol": "$"
+ },
+ "HKD": {
+ "name": "dollar de Hong Kong",
+ "symbol": "$ HK"
+ },
+ "SGD": {
+ "name": "dollar de Singapour",
+ "symbol": "$ SG"
+ },
+ "TTD": {
+ "name": "dollar de Trinité-et-Tobago",
+ "symbol": "TTD"
+ },
+ "XCD": {
+ "name": "dollar des Caraïbes orientales",
+ "symbol": "XCD"
+ },
+ "USD": {
+ "name": "dollar des États-Unis",
+ "symbol": "$ US"
+ },
+ "KYD": {
+ "name": "dollar des îles Caïmans",
+ "symbol": "KYD"
+ },
+ "SBD": {
+ "name": "dollar des îles Salomon",
+ "symbol": "SBD"
+ },
+ "GYD": {
+ "name": "dollar du Guyana",
+ "symbol": "GYD"
+ },
+ "SRD": {
+ "name": "dollar du Suriname",
+ "symbol": "SRD"
+ },
+ "FJD": {
+ "name": "dollar fidjien",
+ "symbol": "FJD"
+ },
+ "JMD": {
+ "name": "dollar jamaïcain",
+ "symbol": "JMD"
+ },
+ "LRD": {
+ "name": "dollar libérien",
+ "symbol": "LRD"
+ },
+ "NAD": {
+ "name": "dollar namibien",
+ "symbol": "NAD"
+ },
+ "NZD": {
+ "name": "dollar néo-zélandais",
+ "symbol": "$ NZ"
+ },
+ "ZWL": {
+ "name": "dollar zimbabwéen (2009)",
+ "symbol": "ZWL"
+ },
+ "VND": {
+ "name": "dông vietnamien",
+ "symbol": "VND"
+ },
+ "AMD": {
+ "name": "dram arménien",
+ "symbol": "AMD"
+ },
+ "CVE": {
+ "name": "escudo du Cap-Vert",
+ "symbol": "CVE"
+ },
+ "EUR": {
+ "name": "euro",
+ "symbol": "€"
+ },
+ "ANG": {
+ "name": "florin antillais",
+ "symbol": "ANG"
+ },
+ "AWG": {
+ "name": "florin arubais",
+ "symbol": "AWG"
+ },
+ "HUF": {
+ "name": "forint hongrois",
+ "symbol": "HUF"
+ },
+ "BIF": {
+ "name": "franc burundais",
+ "symbol": "BIF"
+ },
+ "XOF": {
+ "name": "franc CFA (BCEAO)",
+ "symbol": "XOF"
+ },
+ "XAF": {
+ "name": "franc CFA (BEAC)",
+ "symbol": "XAF"
+ },
+ "XPF": {
+ "name": "franc CFP",
+ "symbol": "XPF"
+ },
+ "KMF": {
+ "name": "franc comorien",
+ "symbol": "KMF"
+ },
+ "CDF": {
+ "name": "franc congolais",
+ "symbol": "CDF"
+ },
+ "DJF": {
+ "name": "franc djiboutien",
+ "symbol": "DJF"
+ },
+ "GNF": {
+ "name": "franc guinéen",
+ "symbol": "GNF"
+ },
+ "RWF": {
+ "name": "franc rwandais",
+ "symbol": "RWF"
+ },
+ "CHF": {
+ "name": "franc suisse",
+ "symbol": "CHF"
+ },
+ "HTG": {
+ "name": "gourde haïtienne",
+ "symbol": "HTG"
+ },
+ "PYG": {
+ "name": "guaraní paraguayen",
+ "symbol": "PYG"
+ },
+ "UAH": {
+ "name": "hryvnia ukrainienne",
+ "symbol": "UAH"
+ },
+ "PGK": {
+ "name": "kina papou-néo-guinéen",
+ "symbol": "PGK"
+ },
+ "LAK": {
+ "name": "kip laotien",
+ "symbol": "LAK"
+ },
+ "HRK": {
+ "name": "kuna croate",
+ "symbol": "HRK"
+ },
+ "MWK": {
+ "name": "kwacha malawite",
+ "symbol": "MWK"
+ },
+ "ZMW": {
+ "name": "kwacha zambien",
+ "symbol": "ZMW"
+ },
+ "AOA": {
+ "name": "kwanza angolais",
+ "symbol": "AOA"
+ },
+ "MMK": {
+ "name": "kyat myanmarais",
+ "symbol": "MMK"
+ },
+ "GEL": {
+ "name": "lari géorgien",
+ "symbol": "GEL"
+ },
+ "ALL": {
+ "name": "lek albanais",
+ "symbol": "ALL"
+ },
+ "HNL": {
+ "name": "lempira hondurien",
+ "symbol": "HNL"
+ },
+ "SLL": {
+ "name": "leone sierra-léonais",
+ "symbol": "SLL"
+ },
+ "MDL": {
+ "name": "leu moldave",
+ "symbol": "MDL"
+ },
+ "RON": {
+ "name": "leu roumain",
+ "symbol": "RON"
+ },
+ "BGN": {
+ "name": "lev bulgare",
+ "symbol": "BGN"
+ },
+ "SZL": {
+ "name": "lilangeni swazi",
+ "symbol": "SZL"
+ },
+ "LTL": {
+ "name": "litas lituanien",
+ "symbol": "LTL"
+ },
+ "GIP": {
+ "name": "livre de Gibraltar",
+ "symbol": "GIP"
+ },
+ "SHP": {
+ "name": "livre de Sainte-Hélène",
+ "symbol": "SHP"
+ },
+ "FKP": {
+ "name": "livre des ÃŽles Malouines",
+ "symbol": "FKP"
+ },
+ "EGP": {
+ "name": "livre égyptienne",
+ "symbol": "EGP"
+ },
+ "LBP": {
+ "name": "livre libanaise",
+ "symbol": "LBP"
+ },
+ "SDG": {
+ "name": "livre soudanaise",
+ "symbol": "SDG"
+ },
+ "GBP": {
+ "name": "livre sterling",
+ "symbol": "£"
+ },
+ "SSP": {
+ "name": "livre sud-soudanaise",
+ "symbol": "SSP"
+ },
+ "SYP": {
+ "name": "livre syrienne",
+ "symbol": "SYP"
+ },
+ "TRY": {
+ "name": "livre turque",
+ "symbol": "TRY"
+ },
+ "LSL": {
+ "name": "loti lesothan",
+ "symbol": "lLS"
+ },
+ "AZN": {
+ "name": "manat azerbaïdjanais",
+ "symbol": "AZN"
+ },
+ "BAM": {
+ "name": "mark convertible bosniaque",
+ "symbol": "BAM"
+ },
+ "MZN": {
+ "name": "metical mozambicain",
+ "symbol": "MZN"
+ },
+ "ERN": {
+ "name": "nafka érythréen",
+ "symbol": "ERN"
+ },
+ "NGN": {
+ "name": "naira nigérian",
+ "symbol": "NGN"
+ },
+ "BTN": {
+ "name": "ngultrum bouthanais",
+ "symbol": "BTN"
+ },
+ "TWD": {
+ "name": "nouveau dollar taïwanais",
+ "symbol": "TWD"
+ },
+ "TMT": {
+ "name": "nouveau manat turkmène",
+ "symbol": "TMT"
+ },
+ "ILS": {
+ "name": "nouveau shekel israélien",
+ "symbol": "ILS"
+ },
+ "PEN": {
+ "name": "nouveau sol péruvien",
+ "symbol": "PEN"
+ },
+ "MRO": {
+ "name": "ouguiya mauritanien",
+ "symbol": "MRO"
+ },
+ "TOP": {
+ "name": "pa’anga",
+ "symbol": "TOP"
+ },
+ "MOP": {
+ "name": "pataca macanaise",
+ "symbol": "MOP"
+ },
+ "ARS": {
+ "name": "peso argentin",
+ "symbol": "ARS"
+ },
+ "CLP": {
+ "name": "peso chilien",
+ "symbol": "CLP"
+ },
+ "COP": {
+ "name": "peso colombien",
+ "symbol": "COP"
+ },
+ "CUP": {
+ "name": "peso cubain",
+ "symbol": "CUP"
+ },
+ "CUC": {
+ "name": "peso cubain convertible",
+ "symbol": "CUC"
+ },
+ "DOP": {
+ "name": "peso dominicain",
+ "symbol": "DOP"
+ },
+ "MXN": {
+ "name": "peso mexicain",
+ "symbol": "MXN"
+ },
+ "PHP": {
+ "name": "peso philippin",
+ "symbol": "PHP"
+ },
+ "UYU": {
+ "name": "peso uruguayen",
+ "symbol": "UYU"
+ },
+ "BWP": {
+ "name": "pula botswanais",
+ "symbol": "BWP"
+ },
+ "GTQ": {
+ "name": "quetzal guatémaltèque",
+ "symbol": "GTQ"
+ },
+ "ZAR": {
+ "name": "rand sud-africain",
+ "symbol": "ZAR"
+ },
+ "BRL": {
+ "name": "réal brésilien",
+ "symbol": "R$"
+ },
+ "IRR": {
+ "name": "rial iranien",
+ "symbol": "IRR"
+ },
+ "OMR": {
+ "name": "rial omanais",
+ "symbol": "OMR"
+ },
+ "SAR": {
+ "name": "rial saoudien",
+ "symbol": "SAR"
+ },
+ "YER": {
+ "name": "rial yéménite",
+ "symbol": "YER"
+ },
+ "KHR": {
+ "name": "riel cambodgien",
+ "symbol": "KHR"
+ },
+ "MYR": {
+ "name": "ringgit malais",
+ "symbol": "MYR"
+ },
+ "QAR": {
+ "name": "riyal du Qatar",
+ "symbol": "QAR"
+ },
+ "BYR": {
+ "name": "rouble biélorusse",
+ "symbol": "BYR"
+ },
+ "RUB": {
+ "name": "rouble russe",
+ "symbol": "RUB"
+ },
+ "SCR": {
+ "name": "roupie des Seychelles",
+ "symbol": "SCR"
+ },
+ "INR": {
+ "name": "roupie indienne",
+ "symbol": "INR"
+ },
+ "IDR": {
+ "name": "roupie indonésienne",
+ "symbol": "IDR"
+ },
+ "MUR": {
+ "name": "roupie mauricienne",
+ "symbol": "MUR"
+ },
+ "NPR": {
+ "name": "roupie népalaise",
+ "symbol": "NPR"
+ },
+ "PKR": {
+ "name": "roupie pakistanaise",
+ "symbol": "PKR"
+ },
+ "LKR": {
+ "name": "roupie srilankaise",
+ "symbol": "LKR"
+ },
+ "MVR": {
+ "name": "rufiyaa maldivien",
+ "symbol": "MVR"
+ },
+ "KES": {
+ "name": "shilling kényan",
+ "symbol": "KES"
+ },
+ "UGX": {
+ "name": "shilling ougandais",
+ "symbol": "UGX"
+ },
+ "SOS": {
+ "name": "shilling somalien",
+ "symbol": "SOS"
+ },
+ "TZS": {
+ "name": "shilling tanzanien",
+ "symbol": "TZS"
+ },
+ "KGS": {
+ "name": "som kirghize",
+ "symbol": "KGS"
+ },
+ "TJS": {
+ "name": "somoni tadjik",
+ "symbol": "TJS"
+ },
+ "UZS": {
+ "name": "sum ouzbek",
+ "symbol": "UZS"
+ },
+ "BDT": {
+ "name": "taka bangladeshi",
+ "symbol": "BDT"
+ },
+ "WST": {
+ "name": "tala",
+ "symbol": "WST"
+ },
+ "KZT": {
+ "name": "tenge kazakh",
+ "symbol": "KZT"
+ },
+ "MNT": {
+ "name": "tugrik mongol",
+ "symbol": "MNT"
+ },
+ "VUV": {
+ "name": "vatu",
+ "symbol": "VUV"
+ },
+ "KPW": {
+ "name": "won nord-coréen",
+ "symbol": "KPW"
+ },
+ "KRW": {
+ "name": "won sud-coréen",
+ "symbol": "KRW"
+ },
+ "JPY": {
+ "name": "yen japonais",
+ "symbol": "Â¥"
+ },
+ "CNY": {
+ "name": "yuan renminbi chinois",
+ "symbol": "CNÂ¥"
+ },
+ "PLN": {
+ "name": "zloty polonais",
+ "symbol": "PLN"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/currency/fr.json b/library/intl/resources/currency/fr.json
new file mode 100644
index 000000000..848251d4c
--- /dev/null
+++ b/library/intl/resources/currency/fr.json
@@ -0,0 +1,634 @@
+{
+ "AFN": {
+ "name": "afghani afghan",
+ "symbol": "AFN"
+ },
+ "MGA": {
+ "name": "ariary malgache",
+ "symbol": "MGA"
+ },
+ "THB": {
+ "name": "baht thaïlandais",
+ "symbol": "฿"
+ },
+ "PAB": {
+ "name": "balboa panaméen",
+ "symbol": "PAB"
+ },
+ "ETB": {
+ "name": "birr éthiopien",
+ "symbol": "ETB"
+ },
+ "VEF": {
+ "name": "bolivar vénézuélien",
+ "symbol": "VEF"
+ },
+ "BOB": {
+ "name": "boliviano bolivien",
+ "symbol": "BOB"
+ },
+ "GHS": {
+ "name": "cédi ghanéen",
+ "symbol": "GHS"
+ },
+ "CRC": {
+ "name": "colón costaricain",
+ "symbol": "CRC"
+ },
+ "SVC": {
+ "name": "colón salvadorien",
+ "symbol": "SVC"
+ },
+ "NIO": {
+ "name": "córdoba oro nicaraguayen",
+ "symbol": "NIO"
+ },
+ "DKK": {
+ "name": "couronne danoise",
+ "symbol": "DKK"
+ },
+ "ISK": {
+ "name": "couronne islandaise",
+ "symbol": "ISK"
+ },
+ "NOK": {
+ "name": "couronne norvégienne",
+ "symbol": "NOK"
+ },
+ "SEK": {
+ "name": "couronne suédoise",
+ "symbol": "SEK"
+ },
+ "CZK": {
+ "name": "couronne tchèque",
+ "symbol": "CZK"
+ },
+ "GMD": {
+ "name": "dalasi gambien",
+ "symbol": "GMD"
+ },
+ "MKD": {
+ "name": "denar macédonien",
+ "symbol": "MKD"
+ },
+ "DZD": {
+ "name": "dinar algérien",
+ "symbol": "DZD"
+ },
+ "BHD": {
+ "name": "dinar bahreïni",
+ "symbol": "BHD"
+ },
+ "IQD": {
+ "name": "dinar irakien",
+ "symbol": "IQD"
+ },
+ "JOD": {
+ "name": "dinar jordanien",
+ "symbol": "JOD"
+ },
+ "KWD": {
+ "name": "dinar koweïtien",
+ "symbol": "KWD"
+ },
+ "LYD": {
+ "name": "dinar libyen",
+ "symbol": "LYD"
+ },
+ "RSD": {
+ "name": "dinar serbe",
+ "symbol": "RSD"
+ },
+ "TND": {
+ "name": "dinar tunisien",
+ "symbol": "TND"
+ },
+ "AED": {
+ "name": "dirham des Émirats arabes unis",
+ "symbol": "AED"
+ },
+ "MAD": {
+ "name": "dirham marocain",
+ "symbol": "MAD"
+ },
+ "STD": {
+ "name": "dobra santoméen",
+ "symbol": "STD"
+ },
+ "AUD": {
+ "name": "dollar australien",
+ "symbol": "$AU"
+ },
+ "BSD": {
+ "name": "dollar bahaméen",
+ "symbol": "$BS"
+ },
+ "BBD": {
+ "name": "dollar barbadien",
+ "symbol": "BBD"
+ },
+ "BZD": {
+ "name": "dollar bélizéen",
+ "symbol": "$BZ"
+ },
+ "BMD": {
+ "name": "dollar bermudien",
+ "symbol": "$BM"
+ },
+ "BND": {
+ "name": "dollar brunéien",
+ "symbol": "$BN"
+ },
+ "CAD": {
+ "name": "dollar canadien",
+ "symbol": "$CA"
+ },
+ "HKD": {
+ "name": "dollar de Hong Kong",
+ "symbol": "HKD"
+ },
+ "SGD": {
+ "name": "dollar de Singapour",
+ "symbol": "$SG"
+ },
+ "XCD": {
+ "name": "dollar des Caraïbes orientales",
+ "symbol": "XCD"
+ },
+ "USD": {
+ "name": "dollar des États-Unis",
+ "symbol": "$US"
+ },
+ "KYD": {
+ "name": "dollar des îles Caïmans",
+ "symbol": "KYD"
+ },
+ "SBD": {
+ "name": "dollar des îles Salomon",
+ "symbol": "$SB"
+ },
+ "GYD": {
+ "name": "dollar du Guyana",
+ "symbol": "GYD"
+ },
+ "FJD": {
+ "name": "dollar fidjien",
+ "symbol": "$FJ"
+ },
+ "JMD": {
+ "name": "dollar jamaïcain",
+ "symbol": "JMD"
+ },
+ "LRD": {
+ "name": "dollar libérien",
+ "symbol": "LRD"
+ },
+ "NAD": {
+ "name": "dollar namibien",
+ "symbol": "$NA"
+ },
+ "NZD": {
+ "name": "dollar néo-zélandais",
+ "symbol": "$NZ"
+ },
+ "SRD": {
+ "name": "dollar surinamais",
+ "symbol": "$SR"
+ },
+ "TTD": {
+ "name": "dollar trinidadien",
+ "symbol": "$TT"
+ },
+ "ZWL": {
+ "name": "dollar zimbabwéen (2009)",
+ "symbol": "ZWL"
+ },
+ "VND": {
+ "name": "dông vietnamien",
+ "symbol": "â‚«"
+ },
+ "AMD": {
+ "name": "dram arménien",
+ "symbol": "AMD"
+ },
+ "CVE": {
+ "name": "escudo capverdien",
+ "symbol": "CVE"
+ },
+ "EUR": {
+ "name": "euro",
+ "symbol": "€"
+ },
+ "ANG": {
+ "name": "florin antillais",
+ "symbol": "ANG"
+ },
+ "AWG": {
+ "name": "florin arubais",
+ "symbol": "AWG"
+ },
+ "HUF": {
+ "name": "forint hongrois",
+ "symbol": "HUF"
+ },
+ "BIF": {
+ "name": "franc burundais",
+ "symbol": "BIF"
+ },
+ "XOF": {
+ "name": "franc CFA (BCEAO)",
+ "symbol": "CFA"
+ },
+ "XAF": {
+ "name": "franc CFA (BEAC)",
+ "symbol": "FCFA"
+ },
+ "XPF": {
+ "name": "franc CFP",
+ "symbol": "FCFP"
+ },
+ "KMF": {
+ "name": "franc comorien",
+ "symbol": "KMF"
+ },
+ "CDF": {
+ "name": "franc congolais",
+ "symbol": "CDF"
+ },
+ "DJF": {
+ "name": "franc djiboutien",
+ "symbol": "DJF"
+ },
+ "GNF": {
+ "name": "franc guinéen",
+ "symbol": "GNF"
+ },
+ "RWF": {
+ "name": "franc rwandais",
+ "symbol": "RWF"
+ },
+ "CHF": {
+ "name": "franc suisse",
+ "symbol": "CHF"
+ },
+ "HTG": {
+ "name": "gourde haïtienne",
+ "symbol": "HTG"
+ },
+ "PYG": {
+ "name": "guaraní paraguayen",
+ "symbol": "PYG"
+ },
+ "UAH": {
+ "name": "hryvnia ukrainienne",
+ "symbol": "UAH"
+ },
+ "PGK": {
+ "name": "kina papouan-néo-guinéen",
+ "symbol": "PGK"
+ },
+ "LAK": {
+ "name": "kip loatien",
+ "symbol": "LAK"
+ },
+ "HRK": {
+ "name": "kuna croate",
+ "symbol": "HRK"
+ },
+ "MWK": {
+ "name": "kwacha malawite",
+ "symbol": "MWK"
+ },
+ "ZMW": {
+ "name": "kwacha zambien",
+ "symbol": "ZMW"
+ },
+ "AOA": {
+ "name": "kwanza angolais",
+ "symbol": "AOA"
+ },
+ "MMK": {
+ "name": "kyat myanmarais",
+ "symbol": "MMK"
+ },
+ "GEL": {
+ "name": "lari géorgien",
+ "symbol": "GEL"
+ },
+ "ALL": {
+ "name": "lek albanais",
+ "symbol": "ALL"
+ },
+ "HNL": {
+ "name": "lempira hondurien",
+ "symbol": "HNL"
+ },
+ "SLL": {
+ "name": "leone sierra-léonais",
+ "symbol": "SLL"
+ },
+ "MDL": {
+ "name": "leu moldave",
+ "symbol": "MDL"
+ },
+ "RON": {
+ "name": "leu roumain",
+ "symbol": "RON"
+ },
+ "BGN": {
+ "name": "lev bulgare",
+ "symbol": "BGN"
+ },
+ "SZL": {
+ "name": "lilangeni swazi",
+ "symbol": "SZL"
+ },
+ "LTL": {
+ "name": "litas lituanien",
+ "symbol": "LTL"
+ },
+ "GIP": {
+ "name": "livre de Gibraltar",
+ "symbol": "£GI"
+ },
+ "SHP": {
+ "name": "livre de Sainte-Hélène",
+ "symbol": "SHP"
+ },
+ "FKP": {
+ "name": "livre des Falkland",
+ "symbol": "£FK"
+ },
+ "EGP": {
+ "name": "livre égyptienne",
+ "symbol": "EGP"
+ },
+ "LBP": {
+ "name": "livre libanaise",
+ "symbol": "£LB"
+ },
+ "SDG": {
+ "name": "livre soudanaise",
+ "symbol": "SDG"
+ },
+ "GBP": {
+ "name": "livre sterling",
+ "symbol": "£GB"
+ },
+ "SSP": {
+ "name": "livre sud-soudanaise",
+ "symbol": "SSP"
+ },
+ "SYP": {
+ "name": "livre syrienne",
+ "symbol": "SYP"
+ },
+ "TRY": {
+ "name": "livre turque",
+ "symbol": "TRY"
+ },
+ "LSL": {
+ "name": "loti lesothan",
+ "symbol": "lLS"
+ },
+ "AZN": {
+ "name": "manat azéri",
+ "symbol": "AZN"
+ },
+ "BAM": {
+ "name": "mark convertible bosniaque",
+ "symbol": "BAM"
+ },
+ "MZN": {
+ "name": "metical mozambicain",
+ "symbol": "MZN"
+ },
+ "ERN": {
+ "name": "nafka érythréen",
+ "symbol": "ERN"
+ },
+ "NGN": {
+ "name": "naira nigérian",
+ "symbol": "NGN"
+ },
+ "BTN": {
+ "name": "ngultrum bouthanais",
+ "symbol": "BTN"
+ },
+ "TWD": {
+ "name": "nouveau dollar taïwanais",
+ "symbol": "TWD"
+ },
+ "TMT": {
+ "name": "nouveau manat turkmène",
+ "symbol": "TMT"
+ },
+ "ILS": {
+ "name": "nouveau shekel israélien",
+ "symbol": "₪"
+ },
+ "PEN": {
+ "name": "nouveau sol péruvien",
+ "symbol": "PEN"
+ },
+ "MRO": {
+ "name": "ouguiya mauritanien",
+ "symbol": "MRO"
+ },
+ "TOP": {
+ "name": "pa’anga tongan",
+ "symbol": "TOP"
+ },
+ "MOP": {
+ "name": "pataca macanaise",
+ "symbol": "MOP"
+ },
+ "ARS": {
+ "name": "peso argentin",
+ "symbol": "$AR"
+ },
+ "CLP": {
+ "name": "peso chilien",
+ "symbol": "$CL"
+ },
+ "COP": {
+ "name": "peso colombien",
+ "symbol": "$CO"
+ },
+ "CUP": {
+ "name": "peso cubain",
+ "symbol": "CUP"
+ },
+ "CUC": {
+ "name": "peso cubain convertible",
+ "symbol": "CUC"
+ },
+ "DOP": {
+ "name": "peso dominicain",
+ "symbol": "DOP"
+ },
+ "MXN": {
+ "name": "peso mexicain",
+ "symbol": "$MX"
+ },
+ "PHP": {
+ "name": "peso philippin",
+ "symbol": "PHP"
+ },
+ "UYU": {
+ "name": "peso uruguayen",
+ "symbol": "$UY"
+ },
+ "BWP": {
+ "name": "pula botswanais",
+ "symbol": "BWP"
+ },
+ "GTQ": {
+ "name": "quetzal guatémaltèque",
+ "symbol": "GTQ"
+ },
+ "ZAR": {
+ "name": "rand sud-africain",
+ "symbol": "ZAR"
+ },
+ "BRL": {
+ "name": "réal brésilien",
+ "symbol": "R$"
+ },
+ "IRR": {
+ "name": "rial iranien",
+ "symbol": "IRR"
+ },
+ "OMR": {
+ "name": "rial omanais",
+ "symbol": "OMR"
+ },
+ "QAR": {
+ "name": "rial qatari",
+ "symbol": "QAR"
+ },
+ "SAR": {
+ "name": "rial saoudien",
+ "symbol": "SAR"
+ },
+ "YER": {
+ "name": "rial yéménite",
+ "symbol": "YER"
+ },
+ "KHR": {
+ "name": "riel cambodgien",
+ "symbol": "KHR"
+ },
+ "MYR": {
+ "name": "ringgit malais",
+ "symbol": "MYR"
+ },
+ "BYR": {
+ "name": "rouble biélorusse",
+ "symbol": "BYR"
+ },
+ "RUB": {
+ "name": "rouble russe",
+ "symbol": "RUB"
+ },
+ "SCR": {
+ "name": "roupie des Seychelles",
+ "symbol": "SCR"
+ },
+ "INR": {
+ "name": "roupie indienne",
+ "symbol": "₹"
+ },
+ "IDR": {
+ "name": "roupie indonésienne",
+ "symbol": "IDR"
+ },
+ "MUR": {
+ "name": "roupie mauricienne",
+ "symbol": "MUR"
+ },
+ "NPR": {
+ "name": "roupie népalaise",
+ "symbol": "NPR"
+ },
+ "PKR": {
+ "name": "roupie pakistanaise",
+ "symbol": "PKR"
+ },
+ "LKR": {
+ "name": "roupie srilankaise",
+ "symbol": "LKR"
+ },
+ "MVR": {
+ "name": "rufiyaa maldivien",
+ "symbol": "MVR"
+ },
+ "KES": {
+ "name": "shilling kényan",
+ "symbol": "KES"
+ },
+ "UGX": {
+ "name": "shilling ougandais",
+ "symbol": "UGX"
+ },
+ "SOS": {
+ "name": "shilling somalien",
+ "symbol": "SOS"
+ },
+ "TZS": {
+ "name": "shilling tanzanien",
+ "symbol": "TZS"
+ },
+ "KGS": {
+ "name": "som kirghize",
+ "symbol": "KGS"
+ },
+ "TJS": {
+ "name": "somoni tadjik",
+ "symbol": "TJS"
+ },
+ "UZS": {
+ "name": "sum ouzbek",
+ "symbol": "UZS"
+ },
+ "BDT": {
+ "name": "taka bangladeshi",
+ "symbol": "BDT"
+ },
+ "WST": {
+ "name": "tala samoan",
+ "symbol": "WS$"
+ },
+ "KZT": {
+ "name": "tenge kazakh",
+ "symbol": "KZT"
+ },
+ "MNT": {
+ "name": "tugrik mongol",
+ "symbol": "MNT"
+ },
+ "VUV": {
+ "name": "vatu vanuatuan",
+ "symbol": "VUV"
+ },
+ "KPW": {
+ "name": "won nord-coréen",
+ "symbol": "KPW"
+ },
+ "KRW": {
+ "name": "won sud-coréen",
+ "symbol": "â‚©"
+ },
+ "JPY": {
+ "name": "yen japonais",
+ "symbol": "JPY"
+ },
+ "CNY": {
+ "name": "yuan renminbi chinois",
+ "symbol": "CNY"
+ },
+ "PLN": {
+ "name": "zloty polonais",
+ "symbol": "PLN"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/currency/fur.json b/library/intl/resources/currency/fur.json
new file mode 100644
index 000000000..70f49a170
--- /dev/null
+++ b/library/intl/resources/currency/fur.json
@@ -0,0 +1,634 @@
+{
+ "AED": {
+ "name": "AED",
+ "symbol": "AED"
+ },
+ "AFN": {
+ "name": "AFN",
+ "symbol": "AFN"
+ },
+ "ALL": {
+ "name": "ALL",
+ "symbol": "ALL"
+ },
+ "ANG": {
+ "name": "ANG",
+ "symbol": "ANG"
+ },
+ "AOA": {
+ "name": "AOA",
+ "symbol": "AOA"
+ },
+ "AWG": {
+ "name": "AWG",
+ "symbol": "AWG"
+ },
+ "AZN": {
+ "name": "AZN",
+ "symbol": "AZN"
+ },
+ "THB": {
+ "name": "baht tailandês",
+ "symbol": "THB"
+ },
+ "BAM": {
+ "name": "BAM",
+ "symbol": "BAM"
+ },
+ "BBD": {
+ "name": "BBD",
+ "symbol": "BBD"
+ },
+ "BDT": {
+ "name": "BDT",
+ "symbol": "BDT"
+ },
+ "BGN": {
+ "name": "BGN",
+ "symbol": "BGN"
+ },
+ "BHD": {
+ "name": "BHD",
+ "symbol": "BHD"
+ },
+ "BMD": {
+ "name": "BMD",
+ "symbol": "BMD"
+ },
+ "BOB": {
+ "name": "BOB",
+ "symbol": "BOB"
+ },
+ "BSD": {
+ "name": "BSD",
+ "symbol": "BSD"
+ },
+ "BTN": {
+ "name": "BTN",
+ "symbol": "BTN"
+ },
+ "BWP": {
+ "name": "BWP",
+ "symbol": "BWP"
+ },
+ "BZD": {
+ "name": "BZD",
+ "symbol": "BZD"
+ },
+ "CDF": {
+ "name": "CDF",
+ "symbol": "CDF"
+ },
+ "CLP": {
+ "name": "CLP",
+ "symbol": "CLP"
+ },
+ "COP": {
+ "name": "COP",
+ "symbol": "COP"
+ },
+ "NIO": {
+ "name": "Córdoba oro nicaraguan",
+ "symbol": "NIO"
+ },
+ "DKK": {
+ "name": "corone danese",
+ "symbol": "DKK"
+ },
+ "CZK": {
+ "name": "Corone de Republiche Ceche",
+ "symbol": "CZK"
+ },
+ "NOK": {
+ "name": "corone norvegjese",
+ "symbol": "NOK"
+ },
+ "SEK": {
+ "name": "corone svedese",
+ "symbol": "SEK"
+ },
+ "CRC": {
+ "name": "CRC",
+ "symbol": "CRC"
+ },
+ "CUC": {
+ "name": "CUC",
+ "symbol": "CUC"
+ },
+ "CVE": {
+ "name": "CVE",
+ "symbol": "CVE"
+ },
+ "DZD": {
+ "name": "Dinar algerin",
+ "symbol": "DZD"
+ },
+ "RSD": {
+ "name": "Dinar serp",
+ "symbol": "RSD"
+ },
+ "DJF": {
+ "name": "DJF",
+ "symbol": "DJF"
+ },
+ "USD": {
+ "name": "dolar american",
+ "symbol": "US$"
+ },
+ "AUD": {
+ "name": "dolar australian",
+ "symbol": "A$"
+ },
+ "CAD": {
+ "name": "dolar canadês",
+ "symbol": "CA$"
+ },
+ "BND": {
+ "name": "Dolar dal Brunei",
+ "symbol": "BND"
+ },
+ "HKD": {
+ "name": "dolar di Hong Kong",
+ "symbol": "HK$"
+ },
+ "NAD": {
+ "name": "Dolar namibian",
+ "symbol": "NAD"
+ },
+ "NZD": {
+ "name": "Dollar neozelandês",
+ "symbol": "NZ$"
+ },
+ "DOP": {
+ "name": "DOP",
+ "symbol": "DOP"
+ },
+ "AMD": {
+ "name": "Dram armen",
+ "symbol": "AMD"
+ },
+ "EGP": {
+ "name": "EGP",
+ "symbol": "EGP"
+ },
+ "ERN": {
+ "name": "ERN",
+ "symbol": "ERN"
+ },
+ "ETB": {
+ "name": "ETB",
+ "symbol": "ETB"
+ },
+ "EUR": {
+ "name": "euro",
+ "symbol": "€"
+ },
+ "FJD": {
+ "name": "FJD",
+ "symbol": "FJD"
+ },
+ "FKP": {
+ "name": "FKP",
+ "symbol": "FKP"
+ },
+ "BIF": {
+ "name": "Franc burundês",
+ "symbol": "BIF"
+ },
+ "CHF": {
+ "name": "franc svuizar",
+ "symbol": "CHF"
+ },
+ "GEL": {
+ "name": "GEL",
+ "symbol": "GEL"
+ },
+ "GHS": {
+ "name": "GHS",
+ "symbol": "GHS"
+ },
+ "GIP": {
+ "name": "GIP",
+ "symbol": "GIP"
+ },
+ "GMD": {
+ "name": "GMD",
+ "symbol": "GMD"
+ },
+ "GNF": {
+ "name": "GNF",
+ "symbol": "GNF"
+ },
+ "TWD": {
+ "name": "gnûf dolar taiwanês",
+ "symbol": "NT$"
+ },
+ "GTQ": {
+ "name": "GTQ",
+ "symbol": "GTQ"
+ },
+ "GYD": {
+ "name": "GYD",
+ "symbol": "GYD"
+ },
+ "HNL": {
+ "name": "HNL",
+ "symbol": "HNL"
+ },
+ "HTG": {
+ "name": "HTG",
+ "symbol": "HTG"
+ },
+ "HUF": {
+ "name": "HUF",
+ "symbol": "HUF"
+ },
+ "ILS": {
+ "name": "ILS",
+ "symbol": "₪"
+ },
+ "IQD": {
+ "name": "IQD",
+ "symbol": "IQD"
+ },
+ "ISK": {
+ "name": "ISK",
+ "symbol": "ISK"
+ },
+ "JMD": {
+ "name": "JMD",
+ "symbol": "JMD"
+ },
+ "JOD": {
+ "name": "JOD",
+ "symbol": "JOD"
+ },
+ "KES": {
+ "name": "KES",
+ "symbol": "KES"
+ },
+ "KGS": {
+ "name": "KGS",
+ "symbol": "KGS"
+ },
+ "KHR": {
+ "name": "KHR",
+ "symbol": "KHR"
+ },
+ "KMF": {
+ "name": "KMF",
+ "symbol": "KMF"
+ },
+ "KPW": {
+ "name": "KPW",
+ "symbol": "KPW"
+ },
+ "HRK": {
+ "name": "Kuna cravuate",
+ "symbol": "HRK"
+ },
+ "KWD": {
+ "name": "KWD",
+ "symbol": "KWD"
+ },
+ "KYD": {
+ "name": "KYD",
+ "symbol": "KYD"
+ },
+ "KZT": {
+ "name": "KZT",
+ "symbol": "KZT"
+ },
+ "LAK": {
+ "name": "LAK",
+ "symbol": "LAK"
+ },
+ "LBP": {
+ "name": "LBP",
+ "symbol": "LBP"
+ },
+ "TRY": {
+ "name": "lire turche",
+ "symbol": "TRY"
+ },
+ "LKR": {
+ "name": "LKR",
+ "symbol": "LKR"
+ },
+ "LRD": {
+ "name": "LRD",
+ "symbol": "LRD"
+ },
+ "LSL": {
+ "name": "LSL",
+ "symbol": "LSL"
+ },
+ "LTL": {
+ "name": "LTL",
+ "symbol": "LTL"
+ },
+ "LYD": {
+ "name": "LYD",
+ "symbol": "LYD"
+ },
+ "MAD": {
+ "name": "MAD",
+ "symbol": "MAD"
+ },
+ "MDL": {
+ "name": "MDL",
+ "symbol": "MDL"
+ },
+ "MGA": {
+ "name": "MGA",
+ "symbol": "MGA"
+ },
+ "MKD": {
+ "name": "MKD",
+ "symbol": "MKD"
+ },
+ "MMK": {
+ "name": "MMK",
+ "symbol": "MMK"
+ },
+ "MNT": {
+ "name": "MNT",
+ "symbol": "MNT"
+ },
+ "MOP": {
+ "name": "MOP",
+ "symbol": "MOP"
+ },
+ "MRO": {
+ "name": "MRO",
+ "symbol": "MRO"
+ },
+ "MUR": {
+ "name": "MUR",
+ "symbol": "MUR"
+ },
+ "MVR": {
+ "name": "MVR",
+ "symbol": "MVR"
+ },
+ "MWK": {
+ "name": "MWK",
+ "symbol": "MWK"
+ },
+ "MYR": {
+ "name": "MYR",
+ "symbol": "MYR"
+ },
+ "MZN": {
+ "name": "MZN",
+ "symbol": "MZN"
+ },
+ "NGN": {
+ "name": "NGN",
+ "symbol": "NGN"
+ },
+ "NPR": {
+ "name": "NPR",
+ "symbol": "NPR"
+ },
+ "OMR": {
+ "name": "OMR",
+ "symbol": "OMR"
+ },
+ "PAB": {
+ "name": "PAB",
+ "symbol": "PAB"
+ },
+ "PEN": {
+ "name": "PEN",
+ "symbol": "PEN"
+ },
+ "ARS": {
+ "name": "Peso argjentin",
+ "symbol": "ARS"
+ },
+ "CUP": {
+ "name": "Peso cuban",
+ "symbol": "CUP"
+ },
+ "MXN": {
+ "name": "peso messican",
+ "symbol": "MX$"
+ },
+ "PGK": {
+ "name": "PGK",
+ "symbol": "PGK"
+ },
+ "PHP": {
+ "name": "PHP",
+ "symbol": "PHP"
+ },
+ "PYG": {
+ "name": "PYG",
+ "symbol": "PYG"
+ },
+ "QAR": {
+ "name": "QAR",
+ "symbol": "QAR"
+ },
+ "ZAR": {
+ "name": "rand sudafrican",
+ "symbol": "ZAR"
+ },
+ "BRL": {
+ "name": "real brasilian",
+ "symbol": "R$"
+ },
+ "IRR": {
+ "name": "Rial iranian",
+ "symbol": "IRR"
+ },
+ "SAR": {
+ "name": "riyal de Arabie Saudite",
+ "symbol": "SAR"
+ },
+ "RON": {
+ "name": "RON",
+ "symbol": "RON"
+ },
+ "BYR": {
+ "name": "Rubli bielorùs",
+ "symbol": "BYR"
+ },
+ "RUB": {
+ "name": "rubli rus",
+ "symbol": "RUB"
+ },
+ "IDR": {
+ "name": "rupiah indonesiane",
+ "symbol": "IDR"
+ },
+ "INR": {
+ "name": "rupie indiane",
+ "symbol": "₹"
+ },
+ "PKR": {
+ "name": "Rupie pachistane",
+ "symbol": "PKR"
+ },
+ "RWF": {
+ "name": "RWF",
+ "symbol": "RWF"
+ },
+ "SBD": {
+ "name": "SBD",
+ "symbol": "SBD"
+ },
+ "SCR": {
+ "name": "SCR",
+ "symbol": "SCR"
+ },
+ "SDG": {
+ "name": "SDG",
+ "symbol": "SDG"
+ },
+ "SGD": {
+ "name": "SGD",
+ "symbol": "SGD"
+ },
+ "SHP": {
+ "name": "SHP",
+ "symbol": "SHP"
+ },
+ "SLL": {
+ "name": "SLL",
+ "symbol": "SLL"
+ },
+ "SOS": {
+ "name": "SOS",
+ "symbol": "SOS"
+ },
+ "SRD": {
+ "name": "SRD",
+ "symbol": "SRD"
+ },
+ "SSP": {
+ "name": "SSP",
+ "symbol": "SSP"
+ },
+ "STD": {
+ "name": "STD",
+ "symbol": "STD"
+ },
+ "GBP": {
+ "name": "sterline britaniche",
+ "symbol": "£"
+ },
+ "SVC": {
+ "name": "SVC",
+ "symbol": "SVC"
+ },
+ "SYP": {
+ "name": "SYP",
+ "symbol": "SYP"
+ },
+ "SZL": {
+ "name": "SZL",
+ "symbol": "SZL"
+ },
+ "TJS": {
+ "name": "TJS",
+ "symbol": "TJS"
+ },
+ "TMT": {
+ "name": "TMT",
+ "symbol": "TMT"
+ },
+ "TND": {
+ "name": "TND",
+ "symbol": "TND"
+ },
+ "TOP": {
+ "name": "TOP",
+ "symbol": "TOP"
+ },
+ "TTD": {
+ "name": "TTD",
+ "symbol": "TTD"
+ },
+ "TZS": {
+ "name": "TZS",
+ "symbol": "TZS"
+ },
+ "UAH": {
+ "name": "UAH",
+ "symbol": "UAH"
+ },
+ "UGX": {
+ "name": "UGX",
+ "symbol": "UGX"
+ },
+ "UYU": {
+ "name": "UYU",
+ "symbol": "UYU"
+ },
+ "UZS": {
+ "name": "UZS",
+ "symbol": "UZS"
+ },
+ "VEF": {
+ "name": "VEF",
+ "symbol": "VEF"
+ },
+ "VND": {
+ "name": "VND",
+ "symbol": "â‚«"
+ },
+ "VUV": {
+ "name": "VUV",
+ "symbol": "VUV"
+ },
+ "KRW": {
+ "name": "won de Coree dal Sud",
+ "symbol": "â‚©"
+ },
+ "WST": {
+ "name": "WST",
+ "symbol": "WST"
+ },
+ "XAF": {
+ "name": "XAF",
+ "symbol": "FCFA"
+ },
+ "XCD": {
+ "name": "XCD",
+ "symbol": "EC$"
+ },
+ "XOF": {
+ "name": "XOF",
+ "symbol": "CFA"
+ },
+ "XPF": {
+ "name": "XPF",
+ "symbol": "CFPF"
+ },
+ "JPY": {
+ "name": "yen gjaponês",
+ "symbol": "JPÂ¥"
+ },
+ "YER": {
+ "name": "YER",
+ "symbol": "YER"
+ },
+ "CNY": {
+ "name": "yuan cinês",
+ "symbol": "CNÂ¥"
+ },
+ "PLN": {
+ "name": "zloty polac",
+ "symbol": "PLN"
+ },
+ "ZMW": {
+ "name": "ZMW",
+ "symbol": "ZMW"
+ },
+ "ZWL": {
+ "name": "ZWL",
+ "symbol": "ZWL"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/currency/fy.json b/library/intl/resources/currency/fy.json
new file mode 100644
index 000000000..0c3f71931
--- /dev/null
+++ b/library/intl/resources/currency/fy.json
@@ -0,0 +1,634 @@
+{
+ "AFN": {
+ "name": "Afghaanske afghani",
+ "symbol": "AFN"
+ },
+ "ALL": {
+ "name": "Albanese lek",
+ "symbol": "ALL"
+ },
+ "DZD": {
+ "name": "Algerynske dinar",
+ "symbol": "DZD"
+ },
+ "USD": {
+ "name": "Amerikaanske dollar",
+ "symbol": "US$"
+ },
+ "AOA": {
+ "name": "Angolese kwanza",
+ "symbol": "AOA"
+ },
+ "ARS": {
+ "name": "Argentynske peso",
+ "symbol": "ARS"
+ },
+ "AMD": {
+ "name": "Armeense dram",
+ "symbol": "AMD"
+ },
+ "AWG": {
+ "name": "Arubaanske gulden",
+ "symbol": "AWG"
+ },
+ "AUD": {
+ "name": "Australyske dollar",
+ "symbol": "AU$"
+ },
+ "AZN": {
+ "name": "Azerbeidzjaanske manat",
+ "symbol": "AZN"
+ },
+ "BSD": {
+ "name": "Bahamaanske dollar",
+ "symbol": "BSD"
+ },
+ "BHD": {
+ "name": "Bahreinse dinar",
+ "symbol": "BHD"
+ },
+ "BBD": {
+ "name": "Barbadaanske dollar",
+ "symbol": "BBD"
+ },
+ "BZD": {
+ "name": "Belizaanske dollar",
+ "symbol": "BZD"
+ },
+ "BDT": {
+ "name": "Bengalese taka",
+ "symbol": "BDT"
+ },
+ "BMD": {
+ "name": "Bermuda-dollar",
+ "symbol": "BMD"
+ },
+ "BTN": {
+ "name": "Bhutaanske ngultrum",
+ "symbol": "BTN"
+ },
+ "BOB": {
+ "name": "Boliviaanske boliviano",
+ "symbol": "BOB"
+ },
+ "BAM": {
+ "name": "Bosnyske convertibele mark",
+ "symbol": "BAM"
+ },
+ "BWP": {
+ "name": "Botswaanske pula",
+ "symbol": "BWP"
+ },
+ "BRL": {
+ "name": "Braziliaanske real",
+ "symbol": "R$"
+ },
+ "GBP": {
+ "name": "Brits pûn sterling",
+ "symbol": "£"
+ },
+ "BND": {
+ "name": "Bruneise dollar",
+ "symbol": "BND"
+ },
+ "BGN": {
+ "name": "Bulgaarse lev",
+ "symbol": "BGN"
+ },
+ "BIF": {
+ "name": "Burundese frank",
+ "symbol": "BIF"
+ },
+ "CAD": {
+ "name": "Canadese dollar",
+ "symbol": "C$"
+ },
+ "KYD": {
+ "name": "Caymaneilânske dollar",
+ "symbol": "KYD"
+ },
+ "XOF": {
+ "name": "CFA-franc BCEAO",
+ "symbol": "CFA"
+ },
+ "XAF": {
+ "name": "CFA-frank",
+ "symbol": "FCFA"
+ },
+ "XPF": {
+ "name": "CFP-franc",
+ "symbol": "XPF"
+ },
+ "CDF": {
+ "name": "Congolese frank",
+ "symbol": "CDF"
+ },
+ "CRC": {
+ "name": "Costaricaanske colón",
+ "symbol": "CRC"
+ },
+ "DKK": {
+ "name": "Deenske kroon",
+ "symbol": "DKK"
+ },
+ "DJF": {
+ "name": "Djiboutiaanske frank",
+ "symbol": "DJF"
+ },
+ "DOP": {
+ "name": "Dominikaanske peso",
+ "symbol": "DOP"
+ },
+ "XCD": {
+ "name": "East-Karibyske dollar",
+ "symbol": "EC$"
+ },
+ "EGP": {
+ "name": "Egyptysk pûn",
+ "symbol": "EGP"
+ },
+ "ERN": {
+ "name": "Eritrese nakfa",
+ "symbol": "ERN"
+ },
+ "ETB": {
+ "name": "Ethiopyske birr",
+ "symbol": "ETB"
+ },
+ "EUR": {
+ "name": "Euro",
+ "symbol": "€"
+ },
+ "FKP": {
+ "name": "Falklâneilânske pûn",
+ "symbol": "FKP"
+ },
+ "VEF": {
+ "name": "Fenezolaanske bolivar",
+ "symbol": "VEF"
+ },
+ "VND": {
+ "name": "Fietnameeske dong",
+ "symbol": "â‚«"
+ },
+ "FJD": {
+ "name": "Fiji-dollar",
+ "symbol": "FJ$"
+ },
+ "PHP": {
+ "name": "Filipynske peso",
+ "symbol": "PHP"
+ },
+ "GMD": {
+ "name": "Gambiaanske dalasi",
+ "symbol": "GMD"
+ },
+ "GEL": {
+ "name": "Georgyske lari",
+ "symbol": "GEL"
+ },
+ "GHS": {
+ "name": "Ghanese cedi",
+ "symbol": "GHS"
+ },
+ "GIP": {
+ "name": "Gibraltarees pûn",
+ "symbol": "GIP"
+ },
+ "GTQ": {
+ "name": "Guatemalteekse quetzal",
+ "symbol": "GTQ"
+ },
+ "GNF": {
+ "name": "Guinese franc",
+ "symbol": "GNF"
+ },
+ "GYD": {
+ "name": "Guyaanske dollar",
+ "symbol": "GYD"
+ },
+ "HTG": {
+ "name": "Haïtiaanske gourde",
+ "symbol": "HTG"
+ },
+ "HNL": {
+ "name": "Hondurese lempira",
+ "symbol": "HNL"
+ },
+ "HUF": {
+ "name": "Hongaarse forint",
+ "symbol": "HUF"
+ },
+ "HKD": {
+ "name": "Hongkongske dollar",
+ "symbol": "HK$"
+ },
+ "INR": {
+ "name": "Indiase roepie",
+ "symbol": "₹"
+ },
+ "IDR": {
+ "name": "Indonesyske roepia",
+ "symbol": "IDR"
+ },
+ "IQD": {
+ "name": "Iraakse dinar",
+ "symbol": "IQD"
+ },
+ "IRR": {
+ "name": "Iraanske rial",
+ "symbol": "IRR"
+ },
+ "ILS": {
+ "name": "Israëlyske nieuwe shekel",
+ "symbol": "₪"
+ },
+ "JMD": {
+ "name": "Jamaikaanske dollar",
+ "symbol": "JMD"
+ },
+ "JPY": {
+ "name": "Japanse yen",
+ "symbol": "JPÂ¥"
+ },
+ "YER": {
+ "name": "Jemenityske rial",
+ "symbol": "YER"
+ },
+ "JOD": {
+ "name": "Jordaanske dinar",
+ "symbol": "JOD"
+ },
+ "CVE": {
+ "name": "Kaapverdyske escudo",
+ "symbol": "CVE"
+ },
+ "KHR": {
+ "name": "Kambodjaanske riel",
+ "symbol": "KHR"
+ },
+ "QAR": {
+ "name": "Katarese rial",
+ "symbol": "QAR"
+ },
+ "KZT": {
+ "name": "Kazachstaanske tenge",
+ "symbol": "KZT"
+ },
+ "KES": {
+ "name": "Keniaanske shilling",
+ "symbol": "KES"
+ },
+ "KGS": {
+ "name": "Kirgizyske som",
+ "symbol": "KGS"
+ },
+ "KWD": {
+ "name": "Koeweitse dinar",
+ "symbol": "KWD"
+ },
+ "COP": {
+ "name": "Kolombiaanske peso",
+ "symbol": "COP"
+ },
+ "KMF": {
+ "name": "Komorese frank",
+ "symbol": "KMF"
+ },
+ "HRK": {
+ "name": "Kroatyske kuna",
+ "symbol": "HRK"
+ },
+ "CUC": {
+ "name": "Kubaanske convertibele peso",
+ "symbol": "CUC"
+ },
+ "CUP": {
+ "name": "Kubaanske peso",
+ "symbol": "CUP"
+ },
+ "LAK": {
+ "name": "Laotiaanske kip",
+ "symbol": "LAK"
+ },
+ "LSL": {
+ "name": "Lesothaanske loti",
+ "symbol": "LSL"
+ },
+ "LBP": {
+ "name": "Libaneeske pûn",
+ "symbol": "LBP"
+ },
+ "LRD": {
+ "name": "Liberiaanske dollar",
+ "symbol": "LRD"
+ },
+ "LYD": {
+ "name": "Libyske dinar",
+ "symbol": "LYD"
+ },
+ "LTL": {
+ "name": "Litouwse litas",
+ "symbol": "LTL"
+ },
+ "MOP": {
+ "name": "Macause pataca",
+ "symbol": "MOP"
+ },
+ "MKD": {
+ "name": "Macedonyske denar",
+ "symbol": "MKD"
+ },
+ "MGA": {
+ "name": "Malagassyske ariary",
+ "symbol": "MGA"
+ },
+ "MWK": {
+ "name": "Malawyske kwacha",
+ "symbol": "MWK"
+ },
+ "MVR": {
+ "name": "Maldivyske rufiyaa",
+ "symbol": "MVR"
+ },
+ "MYR": {
+ "name": "Maleisyske ringgit",
+ "symbol": "MYR"
+ },
+ "MAD": {
+ "name": "Marokkaanske dirham",
+ "symbol": "MAD"
+ },
+ "MRO": {
+ "name": "Mauritaanske ouguiya",
+ "symbol": "MRO"
+ },
+ "MUR": {
+ "name": "Mauritiaanske roepie",
+ "symbol": "MUR"
+ },
+ "MXN": {
+ "name": "Meksikaanske peso",
+ "symbol": "MX$"
+ },
+ "MDL": {
+ "name": "Moldavyske leu",
+ "symbol": "MDL"
+ },
+ "MNT": {
+ "name": "Mongoalske tugrik",
+ "symbol": "MNT"
+ },
+ "MZN": {
+ "name": "Mozambikaanske metical",
+ "symbol": "MZN"
+ },
+ "MMK": {
+ "name": "Myanmarese kyat",
+ "symbol": "MMK"
+ },
+ "NAD": {
+ "name": "Namibyske dollar",
+ "symbol": "NAD"
+ },
+ "ANG": {
+ "name": "Nederlânsk-Antilliaanske gûne",
+ "symbol": "ANG"
+ },
+ "NPR": {
+ "name": "Nepalese roepie",
+ "symbol": "NPR"
+ },
+ "NIO": {
+ "name": "Nicaraguaanske córdoba",
+ "symbol": "NIO"
+ },
+ "NGN": {
+ "name": "Nigeriaanske naira",
+ "symbol": "NGN"
+ },
+ "NZD": {
+ "name": "Nij-Seelânske dollar",
+ "symbol": "NZ$"
+ },
+ "TWD": {
+ "name": "Nije Taiwanese dollar",
+ "symbol": "NT$"
+ },
+ "KPW": {
+ "name": "Noard-Koreaanske won",
+ "symbol": "KPW"
+ },
+ "NOK": {
+ "name": "Noarske kroon",
+ "symbol": "NOK"
+ },
+ "UGX": {
+ "name": "Oegandese shilling",
+ "symbol": "UGX"
+ },
+ "UAH": {
+ "name": "Oekraïense hryvnia",
+ "symbol": "UAH"
+ },
+ "UZS": {
+ "name": "Oezbekistaanske sum",
+ "symbol": "UZS"
+ },
+ "OMR": {
+ "name": "Omaanske rial",
+ "symbol": "OMR"
+ },
+ "PKR": {
+ "name": "Pakistaanske roepie",
+ "symbol": "PKR"
+ },
+ "PAB": {
+ "name": "Panamese balboa",
+ "symbol": "PAB"
+ },
+ "PGK": {
+ "name": "Papuaanske kina",
+ "symbol": "PGK"
+ },
+ "PYG": {
+ "name": "Paraguayaanske guarani",
+ "symbol": "PYG"
+ },
+ "PEN": {
+ "name": "Peruaanske nieuwe sol",
+ "symbol": "PEN"
+ },
+ "PLN": {
+ "name": "Poalske zloty",
+ "symbol": "PLN"
+ },
+ "RON": {
+ "name": "Roemeenske leu",
+ "symbol": "RON"
+ },
+ "RUB": {
+ "name": "Russyske roebel",
+ "symbol": "RUB"
+ },
+ "RWF": {
+ "name": "Rwandese frank",
+ "symbol": "RWF"
+ },
+ "SBD": {
+ "name": "Salomon-dollar",
+ "symbol": "SI$"
+ },
+ "SVC": {
+ "name": "Salvadoraanske colón",
+ "symbol": "SVC"
+ },
+ "ZMW": {
+ "name": "Sambiaanske kwacha",
+ "symbol": "ZMW"
+ },
+ "WST": {
+ "name": "Samoaanske tala",
+ "symbol": "WST"
+ },
+ "STD": {
+ "name": "Santomese dobra",
+ "symbol": "STD"
+ },
+ "SAR": {
+ "name": "Saoedi-Arabyske riyal",
+ "symbol": "SAR"
+ },
+ "RSD": {
+ "name": "Servyske dinar",
+ "symbol": "RSD"
+ },
+ "SCR": {
+ "name": "Seychelse roepie",
+ "symbol": "SCR"
+ },
+ "SLL": {
+ "name": "Sierraleoonse leone",
+ "symbol": "SLL"
+ },
+ "CLP": {
+ "name": "Sileenske peso",
+ "symbol": "CLP"
+ },
+ "ZWL": {
+ "name": "Simbabwaanske dollar (2009)",
+ "symbol": "ZWL"
+ },
+ "CNY": {
+ "name": "Sineeske yuan renminbi",
+ "symbol": "CNÂ¥"
+ },
+ "SGD": {
+ "name": "Singaporese dollar",
+ "symbol": "SGD"
+ },
+ "SHP": {
+ "name": "Sint-Heleenske pûn",
+ "symbol": "SHP"
+ },
+ "SDG": {
+ "name": "Soedaneeske pûn",
+ "symbol": "SDG"
+ },
+ "SOS": {
+ "name": "Somalyske shilling",
+ "symbol": "SOS"
+ },
+ "LKR": {
+ "name": "Sri Lankaanske roepie",
+ "symbol": "LKR"
+ },
+ "ZAR": {
+ "name": "Sûd-Afrikaanske rand",
+ "symbol": "ZAR"
+ },
+ "KRW": {
+ "name": "Sûd-Koreaanske won",
+ "symbol": "â‚©"
+ },
+ "SSP": {
+ "name": "Sûd-Soedaneeske pûn",
+ "symbol": "SSP"
+ },
+ "SRD": {
+ "name": "Surinaamske dollar",
+ "symbol": "SRD"
+ },
+ "SZL": {
+ "name": "Swazyske lilangeni",
+ "symbol": "SZL"
+ },
+ "SEK": {
+ "name": "Sweedske kroon",
+ "symbol": "SEK"
+ },
+ "SYP": {
+ "name": "Syrysk pûn",
+ "symbol": "SYP"
+ },
+ "TJS": {
+ "name": "Tadzjikistaanske somoni",
+ "symbol": "TJS"
+ },
+ "TZS": {
+ "name": "Tanzaniaanske shilling",
+ "symbol": "TZS"
+ },
+ "THB": {
+ "name": "Thaise baht",
+ "symbol": "฿"
+ },
+ "TOP": {
+ "name": "Tongaanske paʻanga",
+ "symbol": "TOP"
+ },
+ "TTD": {
+ "name": "Trinidad en Tobago-dollar",
+ "symbol": "TTD"
+ },
+ "CZK": {
+ "name": "Tsjechyske kroon",
+ "symbol": "CZK"
+ },
+ "TND": {
+ "name": "Tunesyske dinar",
+ "symbol": "TND"
+ },
+ "TMT": {
+ "name": "Turkmeense manat",
+ "symbol": "TMT"
+ },
+ "TRY": {
+ "name": "Turkse lira",
+ "symbol": "TRY"
+ },
+ "UYU": {
+ "name": "Uruguayaanske peso",
+ "symbol": "UYU"
+ },
+ "VUV": {
+ "name": "Vanuatuaanske vatu",
+ "symbol": "VUV"
+ },
+ "AED": {
+ "name": "Verenigde Arabyske Emiraten-dirham",
+ "symbol": "AED"
+ },
+ "BYR": {
+ "name": "Wit-Russyske roebel",
+ "symbol": "BYR"
+ },
+ "ISK": {
+ "name": "Yslânske kroon",
+ "symbol": "ISK"
+ },
+ "CHF": {
+ "name": "Zwitserse frank",
+ "symbol": "CHF"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/currency/ga.json b/library/intl/resources/currency/ga.json
new file mode 100644
index 000000000..e0ad08f53
--- /dev/null
+++ b/library/intl/resources/currency/ga.json
@@ -0,0 +1,634 @@
+{
+ "AFN": {
+ "name": "Afghani na hAfganastáine",
+ "symbol": "AFN"
+ },
+ "MGA": {
+ "name": "Ariary Mhadagascar",
+ "symbol": "MGA"
+ },
+ "THB": {
+ "name": "Baht na Téalainne",
+ "symbol": "฿"
+ },
+ "PAB": {
+ "name": "Balboa Phanama",
+ "symbol": "PAB"
+ },
+ "ETB": {
+ "name": "Birr na hAetóipe",
+ "symbol": "ETB"
+ },
+ "VEF": {
+ "name": "Bolívar Veiniséala",
+ "symbol": "VEF"
+ },
+ "BOB": {
+ "name": "Boliviano",
+ "symbol": "BOB"
+ },
+ "GHS": {
+ "name": "Cedi Ghána",
+ "symbol": "GHS"
+ },
+ "CRC": {
+ "name": "Colón Chósta Ríce",
+ "symbol": "CRC"
+ },
+ "SVC": {
+ "name": "Colón na Salvadóire",
+ "symbol": "SVC"
+ },
+ "NIO": {
+ "name": "Córdoba Nicearagua",
+ "symbol": "NIO"
+ },
+ "DKK": {
+ "name": "Coróin na Danmhairge",
+ "symbol": "DKK"
+ },
+ "NOK": {
+ "name": "Coróin na hIorua",
+ "symbol": "NOK"
+ },
+ "SEK": {
+ "name": "Coróin na Sualainne",
+ "symbol": "SEK"
+ },
+ "GMD": {
+ "name": "Dalasi na Gaimbia",
+ "symbol": "GMD"
+ },
+ "MKD": {
+ "name": "Denar na Macadóine",
+ "symbol": "MKD"
+ },
+ "BHD": {
+ "name": "Dinar Bhairéin",
+ "symbol": "BHD"
+ },
+ "KWD": {
+ "name": "Dinar Chuáit",
+ "symbol": "KWD"
+ },
+ "DZD": {
+ "name": "Dinar na hAilgéire",
+ "symbol": "DZD"
+ },
+ "IQD": {
+ "name": "Dinar na hIaráice",
+ "symbol": "IQD"
+ },
+ "JOD": {
+ "name": "Dinar na hIordáine",
+ "symbol": "JOD"
+ },
+ "LYD": {
+ "name": "Dinar na Libia",
+ "symbol": "LYD"
+ },
+ "RSD": {
+ "name": "Dinar na Seirbia",
+ "symbol": "RSD"
+ },
+ "TND": {
+ "name": "Dinar na Túinéise",
+ "symbol": "TND"
+ },
+ "AED": {
+ "name": "Dirham Aontas na nÉimíríochtaí Arabacha",
+ "symbol": "AED"
+ },
+ "MAD": {
+ "name": "Dirham Mharacó",
+ "symbol": "MAD"
+ },
+ "STD": {
+ "name": "Dobra São Tomé agus Príncipe",
+ "symbol": "STD"
+ },
+ "BBD": {
+ "name": "Dollar Bharbadós",
+ "symbol": "BBD"
+ },
+ "BMD": {
+ "name": "Dollar Bheirmiúda",
+ "symbol": "BMD"
+ },
+ "BND": {
+ "name": "Dollar Bhrúiné",
+ "symbol": "BND"
+ },
+ "CAD": {
+ "name": "Dollar Cheanada",
+ "symbol": "CA$"
+ },
+ "FJD": {
+ "name": "Dollar Fhidsí",
+ "symbol": "FJD"
+ },
+ "HKD": {
+ "name": "Dollar Hong Cong",
+ "symbol": "HK$"
+ },
+ "BZD": {
+ "name": "Dollar na Beilíse",
+ "symbol": "BZD"
+ },
+ "XCD": {
+ "name": "Dollar na Cairibe Thoir",
+ "symbol": "EC$"
+ },
+ "GYD": {
+ "name": "Dollar na Guáine",
+ "symbol": "GYD"
+ },
+ "AUD": {
+ "name": "Dollar na hAstráile",
+ "symbol": "A$"
+ },
+ "JMD": {
+ "name": "Dollar na hIamáice",
+ "symbol": "JMD"
+ },
+ "LRD": {
+ "name": "Dollar na Libéire",
+ "symbol": "LRD"
+ },
+ "BSD": {
+ "name": "Dollar na mBahámaí",
+ "symbol": "BSD"
+ },
+ "NAD": {
+ "name": "Dollar na Namaibe",
+ "symbol": "NAD"
+ },
+ "NZD": {
+ "name": "Dollar na Nua-Shéalainne",
+ "symbol": "NZ$"
+ },
+ "TWD": {
+ "name": "Dollar Nua na Téaváine",
+ "symbol": "NT$"
+ },
+ "KYD": {
+ "name": "Dollar Oileáin Cayman",
+ "symbol": "KYD"
+ },
+ "SBD": {
+ "name": "Dollar Oileáin Sholomón",
+ "symbol": "SBD"
+ },
+ "TTD": {
+ "name": "Dollar Oileán na Tríonóide agus Tobága",
+ "symbol": "TTD"
+ },
+ "USD": {
+ "name": "Dollar S.A.M.",
+ "symbol": "$"
+ },
+ "SGD": {
+ "name": "Dollar Shingeapór",
+ "symbol": "SGD"
+ },
+ "SRD": {
+ "name": "Dollar Shuranam",
+ "symbol": "SRD"
+ },
+ "VND": {
+ "name": "Dong Vítneam",
+ "symbol": "â‚«"
+ },
+ "AMD": {
+ "name": "Dram na hAirméine",
+ "symbol": "AMD"
+ },
+ "CVE": {
+ "name": "Escudo Rinn Verde",
+ "symbol": "CVE"
+ },
+ "EUR": {
+ "name": "Euro",
+ "symbol": "€"
+ },
+ "AWG": {
+ "name": "Flóirín Arúba",
+ "symbol": "AWG"
+ },
+ "HUF": {
+ "name": "Forint na hUngáire",
+ "symbol": "HUF"
+ },
+ "CDF": {
+ "name": "Franc an Chongó",
+ "symbol": "CDF"
+ },
+ "XOF": {
+ "name": "Franc CFA Iarthar na hAfraice",
+ "symbol": "CFA"
+ },
+ "XAF": {
+ "name": "Franc CFA na hAfraice Láir",
+ "symbol": "FCFA"
+ },
+ "XPF": {
+ "name": "Franc CFP",
+ "symbol": "CFPF"
+ },
+ "DJF": {
+ "name": "Franc Djibouti",
+ "symbol": "DJF"
+ },
+ "BIF": {
+ "name": "Franc na Burúine",
+ "symbol": "BIF"
+ },
+ "GNF": {
+ "name": "Franc na Guine",
+ "symbol": "GNF"
+ },
+ "CHF": {
+ "name": "Franc na hEilvéise",
+ "symbol": "CHF"
+ },
+ "KMF": {
+ "name": "Franc Oileáin Chomóra",
+ "symbol": "KMF"
+ },
+ "RWF": {
+ "name": "Franc Ruanda",
+ "symbol": "RWF"
+ },
+ "ANG": {
+ "name": "Gildear Aintillí na hÃsiltíre",
+ "symbol": "ANG"
+ },
+ "HTG": {
+ "name": "Gourde Háítí",
+ "symbol": "HTG"
+ },
+ "PYG": {
+ "name": "Guaraní Pharagua",
+ "symbol": "PYG"
+ },
+ "UAH": {
+ "name": "Hryvnia na hÚcráine",
+ "symbol": "UAH"
+ },
+ "PGK": {
+ "name": "Kina Nua-Ghuine Phapua",
+ "symbol": "PGK"
+ },
+ "LAK": {
+ "name": "Kip Laos",
+ "symbol": "LAK"
+ },
+ "CZK": {
+ "name": "Koruna Phoblacht na Seice",
+ "symbol": "CZK"
+ },
+ "ISK": {
+ "name": "Króna na hÃoslainne",
+ "symbol": "ISK"
+ },
+ "HRK": {
+ "name": "Kuna na Cróite",
+ "symbol": "HRK"
+ },
+ "MWK": {
+ "name": "Kwacha na Maláive",
+ "symbol": "MWK"
+ },
+ "ZMW": {
+ "name": "Kwacha na Saimbia",
+ "symbol": "ZMW"
+ },
+ "AOA": {
+ "name": "Kwanza Angóla",
+ "symbol": "AOA"
+ },
+ "MMK": {
+ "name": "Kyat Mhaenmar",
+ "symbol": "MMK"
+ },
+ "GEL": {
+ "name": "Lari na Seoirsia",
+ "symbol": "GEL"
+ },
+ "ALL": {
+ "name": "Lek na hAlbáine",
+ "symbol": "ALL"
+ },
+ "HNL": {
+ "name": "Lempira Hondúras",
+ "symbol": "HNL"
+ },
+ "SLL": {
+ "name": "Leone Shiarra Leon",
+ "symbol": "SLL"
+ },
+ "MDL": {
+ "name": "Leu na Moldóive",
+ "symbol": "MDL"
+ },
+ "RON": {
+ "name": "Leu na Rómáine",
+ "symbol": "RON"
+ },
+ "BGN": {
+ "name": "Lev na Bulgáire",
+ "symbol": "BGN"
+ },
+ "SZL": {
+ "name": "Lilangeni na Suasalainne",
+ "symbol": "SZL"
+ },
+ "TRY": {
+ "name": "Lira na Tuirce",
+ "symbol": "TRY"
+ },
+ "LTL": {
+ "name": "Litas na Liotuáine",
+ "symbol": "LTL"
+ },
+ "LSL": {
+ "name": "Loti Leosóta",
+ "symbol": "LSL"
+ },
+ "AZN": {
+ "name": "Manat na hAsarbaiseáine",
+ "symbol": "AZN"
+ },
+ "TMT": {
+ "name": "Manat na Tuircméanastáine",
+ "symbol": "TMT"
+ },
+ "BAM": {
+ "name": "Marg Inmhalartaithe na Boisnia-Heirseagaivéine",
+ "symbol": "BAM"
+ },
+ "MZN": {
+ "name": "Metical Mhósaimbíc",
+ "symbol": "MZN"
+ },
+ "NGN": {
+ "name": "Naira na Nigéire",
+ "symbol": "NGN"
+ },
+ "ERN": {
+ "name": "Nakfa na hEiritré",
+ "symbol": "ERN"
+ },
+ "BTN": {
+ "name": "Ngultrum na Bútáine",
+ "symbol": "BTN"
+ },
+ "PEN": {
+ "name": "Nuevo Sol Pheiriú",
+ "symbol": "PEN"
+ },
+ "MRO": {
+ "name": "Ouguiya na Máratáine",
+ "symbol": "MRO"
+ },
+ "TOP": {
+ "name": "Paʻanga Thonga",
+ "symbol": "TOP"
+ },
+ "MOP": {
+ "name": "Pataca Mhacao",
+ "symbol": "MOP"
+ },
+ "CUP": {
+ "name": "Peso Chúba",
+ "symbol": "CUP"
+ },
+ "CUC": {
+ "name": "Peso Inmhalartaithe Chúba",
+ "symbol": "CUC"
+ },
+ "MXN": {
+ "name": "Peso Mheicsiceo",
+ "symbol": "MX$"
+ },
+ "COP": {
+ "name": "Peso na Colóime",
+ "symbol": "COP"
+ },
+ "ARS": {
+ "name": "Peso na hAirgintíne",
+ "symbol": "ARS"
+ },
+ "PHP": {
+ "name": "Peso na nOileán Filipíneach",
+ "symbol": "PHP"
+ },
+ "DOP": {
+ "name": "Peso na Poblachta Doiminicí",
+ "symbol": "DOP"
+ },
+ "CLP": {
+ "name": "Peso na Sile",
+ "symbol": "CLP"
+ },
+ "UYU": {
+ "name": "Peso Uragua",
+ "symbol": "UYU"
+ },
+ "BWP": {
+ "name": "Pula na Botsuáine",
+ "symbol": "BWP"
+ },
+ "GIP": {
+ "name": "Punt Ghiobráltar",
+ "symbol": "GIP"
+ },
+ "EGP": {
+ "name": "Punt na hÉigipte",
+ "symbol": "EGP"
+ },
+ "LBP": {
+ "name": "Punt na Liobáine",
+ "symbol": "LBP"
+ },
+ "SYP": {
+ "name": "Punt na Siria",
+ "symbol": "SYP"
+ },
+ "SDG": {
+ "name": "Punt na Súdáine",
+ "symbol": "SDG"
+ },
+ "SSP": {
+ "name": "Punt na Súdáine Theas",
+ "symbol": "SSP"
+ },
+ "FKP": {
+ "name": "Punt Oileáin Fháclainne",
+ "symbol": "FKP"
+ },
+ "SHP": {
+ "name": "Punt San Héilin",
+ "symbol": "SHP"
+ },
+ "GBP": {
+ "name": "Punt Steirling",
+ "symbol": "£"
+ },
+ "GTQ": {
+ "name": "Quetzal Ghuatamala",
+ "symbol": "GTQ"
+ },
+ "ZAR": {
+ "name": "Rand na hAfraice Theas",
+ "symbol": "ZAR"
+ },
+ "BRL": {
+ "name": "Real na Brasaíle",
+ "symbol": "R$"
+ },
+ "YER": {
+ "name": "Rial Éimin",
+ "symbol": "YER"
+ },
+ "IRR": {
+ "name": "Rial na hIaráine",
+ "symbol": "IRR"
+ },
+ "OMR": {
+ "name": "Rial Óman",
+ "symbol": "OMR"
+ },
+ "KHR": {
+ "name": "Riel na Cambóide",
+ "symbol": "KHR"
+ },
+ "MYR": {
+ "name": "Ringgit na Malaeisia",
+ "symbol": "MYR"
+ },
+ "QAR": {
+ "name": "Riyal Chatar",
+ "symbol": "QAR"
+ },
+ "SAR": {
+ "name": "Riyal na hAraibe Sádaí",
+ "symbol": "SAR"
+ },
+ "BYR": {
+ "name": "Rúbal na Bealarúise",
+ "symbol": "BYR"
+ },
+ "RUB": {
+ "name": "Rúbal na Rúise",
+ "symbol": "RUB"
+ },
+ "MVR": {
+ "name": "Rufiyaa Oileáin Mhaildíve",
+ "symbol": "MVR"
+ },
+ "INR": {
+ "name": "Rúipí na hIndia",
+ "symbol": "₹"
+ },
+ "PKR": {
+ "name": "Rúipí na Pacastáine",
+ "symbol": "PKR"
+ },
+ "SCR": {
+ "name": "Rúipí na Séiséal",
+ "symbol": "SCR"
+ },
+ "NPR": {
+ "name": "Rúipí Neipeal",
+ "symbol": "NPR"
+ },
+ "MUR": {
+ "name": "Rúipí Oileán Mhuirís",
+ "symbol": "MUR"
+ },
+ "LKR": {
+ "name": "Rúipí Shrí Lanca",
+ "symbol": "LKR"
+ },
+ "IDR": {
+ "name": "Rupiah na hIndinéise",
+ "symbol": "IDR"
+ },
+ "KES": {
+ "name": "Scilling na Céinia",
+ "symbol": "KES"
+ },
+ "SOS": {
+ "name": "Scilling na Somáile",
+ "symbol": "SOS"
+ },
+ "TZS": {
+ "name": "Scilling na Tansáine",
+ "symbol": "TZS"
+ },
+ "UGX": {
+ "name": "Scilling Uganda",
+ "symbol": "UGX"
+ },
+ "ILS": {
+ "name": "Seiceal Nua Iosrael",
+ "symbol": "₪"
+ },
+ "KGS": {
+ "name": "Som na Cirgeastáine",
+ "symbol": "KGS"
+ },
+ "TJS": {
+ "name": "Somoni na Táidsíceastáine",
+ "symbol": "TJS"
+ },
+ "UZS": {
+ "name": "Sum na hÚisbéiceastáine",
+ "symbol": "UZS"
+ },
+ "BDT": {
+ "name": "Taka na Banglaidéise",
+ "symbol": "BDT"
+ },
+ "WST": {
+ "name": "Tala Shamó",
+ "symbol": "WST"
+ },
+ "KZT": {
+ "name": "Tenge na Casacstáine",
+ "symbol": "KZT"
+ },
+ "MNT": {
+ "name": "Tugrik na Mongóile",
+ "symbol": "MNT"
+ },
+ "VUV": {
+ "name": "Vatu Vanuatú",
+ "symbol": "VUV"
+ },
+ "KRW": {
+ "name": "Won na Cóiré Theas",
+ "symbol": "â‚©"
+ },
+ "KPW": {
+ "name": "Won na Cóiré Thuaidh",
+ "symbol": "KPW"
+ },
+ "JPY": {
+ "name": "Yen na Seapáine",
+ "symbol": "Â¥"
+ },
+ "CNY": {
+ "name": "Yuan na Síne",
+ "symbol": "CNÂ¥"
+ },
+ "PLN": {
+ "name": "Zloty na Polainne",
+ "symbol": "PLN"
+ },
+ "ZWL": {
+ "name": "ZWL",
+ "symbol": "ZWL"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/currency/gd.json b/library/intl/resources/currency/gd.json
new file mode 100644
index 000000000..af3986af0
--- /dev/null
+++ b/library/intl/resources/currency/gd.json
@@ -0,0 +1,634 @@
+{
+ "AFN": {
+ "name": "Afghani Afghanach",
+ "symbol": "AFN"
+ },
+ "MGA": {
+ "name": "Ariary Madagasgarach",
+ "symbol": "MGA"
+ },
+ "THB": {
+ "name": "Baht Tàidheach",
+ "symbol": "฿"
+ },
+ "PAB": {
+ "name": "Balboa Panamach",
+ "symbol": "PAB"
+ },
+ "ETB": {
+ "name": "Birr Itiopach",
+ "symbol": "ETB"
+ },
+ "VEF": {
+ "name": "Bolívar Bheinisealach",
+ "symbol": "VEF"
+ },
+ "BOB": {
+ "name": "Boliviano Boilibhiach",
+ "symbol": "BOB"
+ },
+ "GHS": {
+ "name": "Cedi Gànach",
+ "symbol": "GHS"
+ },
+ "CRC": {
+ "name": "Colón Costa Rìceach",
+ "symbol": "CRC"
+ },
+ "SVC": {
+ "name": "Colón Salbhadorach",
+ "symbol": "SVC"
+ },
+ "NIO": {
+ "name": "Córdoba Niocaragach",
+ "symbol": "NIO"
+ },
+ "GMD": {
+ "name": "Dalasi Gaimbitheach",
+ "symbol": "GMD"
+ },
+ "MKD": {
+ "name": "Denar Masadonach",
+ "symbol": "MKD"
+ },
+ "DZD": {
+ "name": "Dinar Aildireach",
+ "symbol": "DZD"
+ },
+ "BHD": {
+ "name": "Dinar Bachraineach",
+ "symbol": "BHD"
+ },
+ "KWD": {
+ "name": "Dinar Cuibhèiteach",
+ "symbol": "KWD"
+ },
+ "IQD": {
+ "name": "Dinar Ioràcach",
+ "symbol": "IQD"
+ },
+ "JOD": {
+ "name": "Dinar Iòrdanach",
+ "symbol": "JOD"
+ },
+ "LYD": {
+ "name": "Dinar Libitheach",
+ "symbol": "LYD"
+ },
+ "RSD": {
+ "name": "Dinar Sèirbeach",
+ "symbol": "RSD"
+ },
+ "TND": {
+ "name": "Dinar Tuiniseach",
+ "symbol": "TND"
+ },
+ "MAD": {
+ "name": "Dirham Morocach",
+ "symbol": "MAD"
+ },
+ "AED": {
+ "name": "Dirham nan Iomaratan Arabach Aonaichte",
+ "symbol": "AED"
+ },
+ "STD": {
+ "name": "Dobra São Tomé agus Príncipe",
+ "symbol": "STD"
+ },
+ "AUD": {
+ "name": "Dolar Astràilianach",
+ "symbol": "A$"
+ },
+ "BBD": {
+ "name": "Dolar Barbadach",
+ "symbol": "BBD"
+ },
+ "BSD": {
+ "name": "Dolar Bathamach",
+ "symbol": "BSD"
+ },
+ "BMD": {
+ "name": "Dolar Bearmùdach",
+ "symbol": "BMD"
+ },
+ "BZD": {
+ "name": "Dolar Beilìseach",
+ "symbol": "BZD"
+ },
+ "BND": {
+ "name": "Dolar Brùnaigheach",
+ "symbol": "BND"
+ },
+ "KYD": {
+ "name": "Dolar Caimeanach",
+ "symbol": "KYD"
+ },
+ "CAD": {
+ "name": "Dolar Canadach",
+ "symbol": "CA$"
+ },
+ "XCD": {
+ "name": "Dolar Caraibeach earach",
+ "symbol": "EC$"
+ },
+ "JMD": {
+ "name": "Dolar Diameugach",
+ "symbol": "JMD"
+ },
+ "SBD": {
+ "name": "Dolar Eileanan Sholaimh",
+ "symbol": "SBD"
+ },
+ "FJD": {
+ "name": "Dolar Fìditheach",
+ "symbol": "FJD"
+ },
+ "GYD": {
+ "name": "Dolar Guidheànach",
+ "symbol": "GYD"
+ },
+ "HKD": {
+ "name": "Dolar Hong Kong",
+ "symbol": "HK$"
+ },
+ "LRD": {
+ "name": "Dolar Libèireach",
+ "symbol": "LRD"
+ },
+ "NAD": {
+ "name": "Dolar Naimibitheach",
+ "symbol": "NAD"
+ },
+ "USD": {
+ "name": "Dolar nan Stàitean Aonaichte",
+ "symbol": "$"
+ },
+ "NZD": {
+ "name": "Dolar Shealainn Nuaidh",
+ "symbol": "NZ$"
+ },
+ "SGD": {
+ "name": "Dolar Singeapòrach",
+ "symbol": "SGD"
+ },
+ "ZWL": {
+ "name": "Dolar Sìombabuthach (2009)",
+ "symbol": "ZWL"
+ },
+ "SRD": {
+ "name": "Dolar Suranamach",
+ "symbol": "SRD"
+ },
+ "TTD": {
+ "name": "Dolar Thrianaid agus Thobago",
+ "symbol": "TTD"
+ },
+ "TWD": {
+ "name": "Dolar ùr Taidh-Bhànach",
+ "symbol": "NT$"
+ },
+ "VND": {
+ "name": "Dong Bhiet-Namach",
+ "symbol": "â‚«"
+ },
+ "AMD": {
+ "name": "Dram Airmeineach",
+ "symbol": "AMD"
+ },
+ "EUR": {
+ "name": "Eòro",
+ "symbol": "€"
+ },
+ "CVE": {
+ "name": "Escudo a’ Chip Uaine",
+ "symbol": "CVE"
+ },
+ "AWG": {
+ "name": "Florin Arùbach",
+ "symbol": "AWG"
+ },
+ "HUF": {
+ "name": "Forint Ungaireach",
+ "symbol": "HUF"
+ },
+ "BIF": {
+ "name": "Franc Burundaidheach",
+ "symbol": "BIF"
+ },
+ "XOF": {
+ "name": "Franc CFA Afraga an Iar",
+ "symbol": "CFA"
+ },
+ "XAF": {
+ "name": "Franc CFA Meadhan-Afragach",
+ "symbol": "FCFA"
+ },
+ "XPF": {
+ "name": "Franc CFP",
+ "symbol": "CFPF"
+ },
+ "KMF": {
+ "name": "Franc Comorosach",
+ "symbol": "KMF"
+ },
+ "CDF": {
+ "name": "Franc Congothach",
+ "symbol": "CDF"
+ },
+ "DJF": {
+ "name": "Franc Diobùtaidheach",
+ "symbol": "DJF"
+ },
+ "CHF": {
+ "name": "Franc Eilbheiseach",
+ "symbol": "CHF"
+ },
+ "GNF": {
+ "name": "Franc Ginitheach",
+ "symbol": "GNF"
+ },
+ "RWF": {
+ "name": "Franc Rubhandach",
+ "symbol": "RWF"
+ },
+ "HTG": {
+ "name": "Gourde Haidhteach",
+ "symbol": "HTG"
+ },
+ "PYG": {
+ "name": "Guaraní Paraguaidheach",
+ "symbol": "PYG"
+ },
+ "ANG": {
+ "name": "Gulden Eileanan Aintilia nan Tìrean Ìsle",
+ "symbol": "ANG"
+ },
+ "UAH": {
+ "name": "Hryvnia Ucràineach",
+ "symbol": "UAH"
+ },
+ "PGK": {
+ "name": "Kina Ghini Nuaidh Paputhaiche",
+ "symbol": "PGK"
+ },
+ "LAK": {
+ "name": "Kip Làthosach",
+ "symbol": "LAK"
+ },
+ "CZK": {
+ "name": "Koruna Seiceach",
+ "symbol": "CZK"
+ },
+ "ISK": {
+ "name": "Króna Innis Tìleach",
+ "symbol": "ISK"
+ },
+ "SEK": {
+ "name": "Krona Suaineach",
+ "symbol": "SEK"
+ },
+ "DKK": {
+ "name": "Krone Danmhairgeach",
+ "symbol": "DKK"
+ },
+ "NOK": {
+ "name": "Krone Nirribheach",
+ "symbol": "NOK"
+ },
+ "HRK": {
+ "name": "Kuna Cròthaiseach",
+ "symbol": "HRK"
+ },
+ "MWK": {
+ "name": "Kwacha Malabhaidheach",
+ "symbol": "MWK"
+ },
+ "ZMW": {
+ "name": "Kwacha Sàimbitheach",
+ "symbol": "ZMW"
+ },
+ "AOA": {
+ "name": "Kwanza Angòlach",
+ "symbol": "AOA"
+ },
+ "MMK": {
+ "name": "Kyat Miànmarach",
+ "symbol": "MMK"
+ },
+ "GEL": {
+ "name": "Lari Cairtbheileach",
+ "symbol": "GEL"
+ },
+ "ALL": {
+ "name": "Lek Albàineach",
+ "symbol": "ALL"
+ },
+ "HNL": {
+ "name": "Lempira Hondùrach",
+ "symbol": "HNL"
+ },
+ "SLL": {
+ "name": "Leone Siarra Leòmhannach",
+ "symbol": "SLL"
+ },
+ "MDL": {
+ "name": "Leu Moldobhach",
+ "symbol": "MDL"
+ },
+ "RON": {
+ "name": "Leu Romàineach",
+ "symbol": "RON"
+ },
+ "BGN": {
+ "name": "Lev Bulgarach",
+ "symbol": "BGN"
+ },
+ "SZL": {
+ "name": "Lilangeni Suasaidheach",
+ "symbol": "SZL"
+ },
+ "TRY": {
+ "name": "Lira Turcach",
+ "symbol": "TRY"
+ },
+ "LTL": {
+ "name": "Litas Liotuaineach",
+ "symbol": "LTL"
+ },
+ "LSL": {
+ "name": "Loti Leasotach",
+ "symbol": "LSL"
+ },
+ "AZN": {
+ "name": "Manat Asarbaideànach",
+ "symbol": "AZN"
+ },
+ "TMT": {
+ "name": "Manat Turcmanach",
+ "symbol": "TMT"
+ },
+ "BAM": {
+ "name": "Mark iompachail Bhosna agus Hearsagobhana",
+ "symbol": "BAM"
+ },
+ "MZN": {
+ "name": "Metical Mòsaimbiceach",
+ "symbol": "MZN"
+ },
+ "NGN": {
+ "name": "Naira Nigèiriach",
+ "symbol": "NGN"
+ },
+ "ERN": {
+ "name": "Nakfa Eartrach",
+ "symbol": "ERN"
+ },
+ "BTN": {
+ "name": "Ngultrum Butànach",
+ "symbol": "BTN"
+ },
+ "MRO": {
+ "name": "Ouguiya Moratàineach",
+ "symbol": "MRO"
+ },
+ "TOP": {
+ "name": "Paʻanga Tongach",
+ "symbol": "TOP"
+ },
+ "MOP": {
+ "name": "Pataca Macàthuach",
+ "symbol": "MOP"
+ },
+ "ARS": {
+ "name": "Peso Argantaineach",
+ "symbol": "ARS"
+ },
+ "COP": {
+ "name": "Peso Coloimbeach",
+ "symbol": "COP"
+ },
+ "CUP": {
+ "name": "Peso Cùbach",
+ "symbol": "CUP"
+ },
+ "DOP": {
+ "name": "Peso Doiminiceach",
+ "symbol": "DOP"
+ },
+ "PHP": {
+ "name": "Peso Filipineach",
+ "symbol": "PHP"
+ },
+ "CUC": {
+ "name": "Peso iompachail Cùbach",
+ "symbol": "CUC"
+ },
+ "MXN": {
+ "name": "Peso Meagsagach",
+ "symbol": "MX$"
+ },
+ "CLP": {
+ "name": "Peso Sileach",
+ "symbol": "CLP"
+ },
+ "UYU": {
+ "name": "Peso Uruguaidheach",
+ "symbol": "UYU"
+ },
+ "BWP": {
+ "name": "Pula Botsuanach",
+ "symbol": "BWP"
+ },
+ "GIP": {
+ "name": "Punnd Diobraltarach",
+ "symbol": "GIP"
+ },
+ "SHP": {
+ "name": "Punnd Eilean Naomh Eilidh",
+ "symbol": "SHP"
+ },
+ "EGP": {
+ "name": "Punnd Èipheiteach",
+ "symbol": "EGP"
+ },
+ "FKP": {
+ "name": "Punnd Fàclannach",
+ "symbol": "FKP"
+ },
+ "LBP": {
+ "name": "Punnd Leabanach",
+ "symbol": "LBP"
+ },
+ "GBP": {
+ "name": "Punnd Sasannach",
+ "symbol": "£"
+ },
+ "SYP": {
+ "name": "Punnd Siridheach",
+ "symbol": "SYP"
+ },
+ "SSP": {
+ "name": "Punnd Sudàin a Deas",
+ "symbol": "SSP"
+ },
+ "SDG": {
+ "name": "Punnd Sudànach",
+ "symbol": "SDG"
+ },
+ "GTQ": {
+ "name": "Quetzal Guatamalach",
+ "symbol": "GTQ"
+ },
+ "ZAR": {
+ "name": "Rand Afraga a Deas",
+ "symbol": "ZAR"
+ },
+ "BRL": {
+ "name": "Real Braisileach",
+ "symbol": "R$"
+ },
+ "QAR": {
+ "name": "Rial Catarach",
+ "symbol": "QAR"
+ },
+ "YER": {
+ "name": "Rial Eamanach",
+ "symbol": "YER"
+ },
+ "IRR": {
+ "name": "Rial Iorànach",
+ "symbol": "IRR"
+ },
+ "OMR": {
+ "name": "Rial Omànach",
+ "symbol": "OMR"
+ },
+ "KHR": {
+ "name": "Riel Cambuideach",
+ "symbol": "KHR"
+ },
+ "MYR": {
+ "name": "Ringgit Malaidheach",
+ "symbol": "MYR"
+ },
+ "SAR": {
+ "name": "Riyal Sabhdach",
+ "symbol": "SAR"
+ },
+ "BYR": {
+ "name": "Rùbal Bealaruiseach",
+ "symbol": "BYR"
+ },
+ "RUB": {
+ "name": "Rùbal Ruiseach",
+ "symbol": "RUB"
+ },
+ "MVR": {
+ "name": "Rufiyaa Maladaibheach",
+ "symbol": "MVR"
+ },
+ "INR": {
+ "name": "Rupee Innseanach",
+ "symbol": "₹"
+ },
+ "MUR": {
+ "name": "Rupee Moiriseasach",
+ "symbol": "MUR"
+ },
+ "NPR": {
+ "name": "Rupee Neapàlach",
+ "symbol": "NPR"
+ },
+ "PKR": {
+ "name": "Rupee Pagastànach",
+ "symbol": "PKR"
+ },
+ "SCR": {
+ "name": "Rupee Seiseallach",
+ "symbol": "SCR"
+ },
+ "LKR": {
+ "name": "Rupee Sri Lancach",
+ "symbol": "LKR"
+ },
+ "IDR": {
+ "name": "Rupiah Innd-Innseach",
+ "symbol": "IDR"
+ },
+ "ILS": {
+ "name": "Sheqel ùr Iosraeleach",
+ "symbol": "₪"
+ },
+ "KES": {
+ "name": "Shilling Ceineach",
+ "symbol": "KES"
+ },
+ "SOS": {
+ "name": "Shilling Somàilitheach",
+ "symbol": "SOS"
+ },
+ "TZS": {
+ "name": "Shilling Tansanaidheach",
+ "symbol": "TZS"
+ },
+ "UGX": {
+ "name": "Shilling Ugandach",
+ "symbol": "UGX"
+ },
+ "PEN": {
+ "name": "Sol ùr Pearùthach",
+ "symbol": "PEN"
+ },
+ "KGS": {
+ "name": "Som Cìorgasach",
+ "symbol": "KGS"
+ },
+ "UZS": {
+ "name": "Som Usbagach",
+ "symbol": "UZS"
+ },
+ "TJS": {
+ "name": "Somoni Taidigeach",
+ "symbol": "TJS"
+ },
+ "BDT": {
+ "name": "Taka Bangladaiseach",
+ "symbol": "BDT"
+ },
+ "WST": {
+ "name": "Tala Samothach",
+ "symbol": "WST"
+ },
+ "KZT": {
+ "name": "Tenge Casachach",
+ "symbol": "KZT"
+ },
+ "MNT": {
+ "name": "Tugrik Mongolach",
+ "symbol": "MNT"
+ },
+ "VUV": {
+ "name": "Vatu Vanuatuthach",
+ "symbol": "VUV"
+ },
+ "KRW": {
+ "name": "Won Choirèa a Deas",
+ "symbol": "â‚©"
+ },
+ "KPW": {
+ "name": "Won Choirèa a Tuath",
+ "symbol": "KPW"
+ },
+ "JPY": {
+ "name": "Yen Seapanach",
+ "symbol": "JPÂ¥"
+ },
+ "CNY": {
+ "name": "Yuan Sìneach",
+ "symbol": "CNÂ¥"
+ },
+ "PLN": {
+ "name": "Złoty Pòlainneach",
+ "symbol": "PLN"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/currency/gl.json b/library/intl/resources/currency/gl.json
new file mode 100644
index 000000000..dd76c8479
--- /dev/null
+++ b/library/intl/resources/currency/gl.json
@@ -0,0 +1,634 @@
+{
+ "AFN": {
+ "name": "Afgani afgano",
+ "symbol": "AFN"
+ },
+ "MGA": {
+ "name": "Ariary malgaxe",
+ "symbol": "MGA"
+ },
+ "THB": {
+ "name": "Baht tailandés",
+ "symbol": "฿"
+ },
+ "PAB": {
+ "name": "Balboa panameño",
+ "symbol": "PAB"
+ },
+ "ETB": {
+ "name": "Birr etíope",
+ "symbol": "ETB"
+ },
+ "VEF": {
+ "name": "Bolívar venezolano",
+ "symbol": "VEF"
+ },
+ "BOB": {
+ "name": "Boliviano",
+ "symbol": "BOB"
+ },
+ "GHS": {
+ "name": "Cedi de Gana",
+ "symbol": "GHS"
+ },
+ "KES": {
+ "name": "Chelín kenyano",
+ "symbol": "KES"
+ },
+ "SOS": {
+ "name": "Chelín somalí",
+ "symbol": "SOS"
+ },
+ "TZS": {
+ "name": "Chelín tanzano",
+ "symbol": "TZS"
+ },
+ "UGX": {
+ "name": "Chelín ugandés",
+ "symbol": "UGX"
+ },
+ "CRC": {
+ "name": "Colón costarricense",
+ "symbol": "CRC"
+ },
+ "SVC": {
+ "name": "Colón salvadoreño",
+ "symbol": "SVC"
+ },
+ "NIO": {
+ "name": "Córdoba de ouro nicaragüense",
+ "symbol": "NIO"
+ },
+ "CZK": {
+ "name": "Coroa checa",
+ "symbol": "CZK"
+ },
+ "DKK": {
+ "name": "Coroa dinamarquesa",
+ "symbol": "DKK"
+ },
+ "ISK": {
+ "name": "Coroa islandesa",
+ "symbol": "ISK"
+ },
+ "NOK": {
+ "name": "Coroa norueguesa",
+ "symbol": "NOK"
+ },
+ "SEK": {
+ "name": "Coroa sueca",
+ "symbol": "SEK"
+ },
+ "GMD": {
+ "name": "Dalasi gambiano",
+ "symbol": "GMD"
+ },
+ "DZD": {
+ "name": "Dinar alxeriano",
+ "symbol": "DZD"
+ },
+ "BHD": {
+ "name": "Dinar de Baréin",
+ "symbol": "BHD"
+ },
+ "IQD": {
+ "name": "Dinar iraquí",
+ "symbol": "IQD"
+ },
+ "KWD": {
+ "name": "Dinar kuwaití",
+ "symbol": "KWD"
+ },
+ "LYD": {
+ "name": "Dinar libio",
+ "symbol": "LYD"
+ },
+ "MKD": {
+ "name": "Dinar macedonio",
+ "symbol": "MKD"
+ },
+ "RSD": {
+ "name": "Dinar serbio",
+ "symbol": "RSD"
+ },
+ "TND": {
+ "name": "Dinar tunesino",
+ "symbol": "TND"
+ },
+ "JOD": {
+ "name": "Dinar xordano",
+ "symbol": "JOD"
+ },
+ "AED": {
+ "name": "Dirham dos Emiratos Ãrabes Unidos",
+ "symbol": "AED"
+ },
+ "MAD": {
+ "name": "Dirham marroquí",
+ "symbol": "MAD"
+ },
+ "STD": {
+ "name": "Dobra de San Tomé e Príncipe",
+ "symbol": "STD"
+ },
+ "AUD": {
+ "name": "Dólar australiano",
+ "symbol": "$A"
+ },
+ "BZD": {
+ "name": "Dólar beliceño",
+ "symbol": "BZD"
+ },
+ "CAD": {
+ "name": "Dólar canadiano",
+ "symbol": "$CA"
+ },
+ "XCD": {
+ "name": "Dólar Caribe-Leste",
+ "symbol": "EC$"
+ },
+ "BSD": {
+ "name": "Dólar das Bahamas",
+ "symbol": "BSD"
+ },
+ "BMD": {
+ "name": "Dólar das Bemudas",
+ "symbol": "BMD"
+ },
+ "KYD": {
+ "name": "Dólar das Illas Caimán",
+ "symbol": "KYD"
+ },
+ "SBD": {
+ "name": "Dólar das Illas Salomón",
+ "symbol": "SBD"
+ },
+ "BBD": {
+ "name": "Dólar de Barbados",
+ "symbol": "BBD"
+ },
+ "BND": {
+ "name": "Dólar de Brunei",
+ "symbol": "BND"
+ },
+ "HKD": {
+ "name": "Dólar de Hong Kong",
+ "symbol": "$HK"
+ },
+ "SGD": {
+ "name": "Dólar de Singapur",
+ "symbol": "SGD"
+ },
+ "TTD": {
+ "name": "Dólar de Trinidade e Tobago",
+ "symbol": "TTD"
+ },
+ "USD": {
+ "name": "Dólar estadounidense",
+ "symbol": "$"
+ },
+ "FJD": {
+ "name": "Dólar fixiano",
+ "symbol": "FJD"
+ },
+ "GYD": {
+ "name": "Dólar güianés",
+ "symbol": "GYD"
+ },
+ "LRD": {
+ "name": "Dólar liberiano",
+ "symbol": "LRD"
+ },
+ "NAD": {
+ "name": "Dólar namibio",
+ "symbol": "NAD"
+ },
+ "NZD": {
+ "name": "Dólar neozelandés",
+ "symbol": "NZ$"
+ },
+ "SRD": {
+ "name": "Dólar surinamés",
+ "symbol": "SRD"
+ },
+ "JMD": {
+ "name": "Dólar xamaicano",
+ "symbol": "JMD"
+ },
+ "VND": {
+ "name": "Dong vietnamita",
+ "symbol": "â‚«"
+ },
+ "AMD": {
+ "name": "Dram armenio",
+ "symbol": "AMD"
+ },
+ "CVE": {
+ "name": "Escudo caboverdiano",
+ "symbol": "CVE"
+ },
+ "EUR": {
+ "name": "Euro",
+ "symbol": "€"
+ },
+ "AWG": {
+ "name": "Florín arubeño",
+ "symbol": "AWG"
+ },
+ "ANG": {
+ "name": "Florín das Antillas Neerlandesas",
+ "symbol": "ANG"
+ },
+ "HUF": {
+ "name": "Florín húngaro",
+ "symbol": "HUF"
+ },
+ "BIF": {
+ "name": "Franco burundés",
+ "symbol": "BIF"
+ },
+ "XOF": {
+ "name": "Franco CFA BCEAO",
+ "symbol": "CFA"
+ },
+ "XAF": {
+ "name": "Franco CFA BEAC",
+ "symbol": "FCFA"
+ },
+ "XPF": {
+ "name": "Franco CFP",
+ "symbol": "CFPF"
+ },
+ "KMF": {
+ "name": "Franco comoriano",
+ "symbol": "KMF"
+ },
+ "CDF": {
+ "name": "Franco congolés",
+ "symbol": "CDF"
+ },
+ "GNF": {
+ "name": "Franco guineano",
+ "symbol": "GNF"
+ },
+ "RWF": {
+ "name": "Franco ruandés",
+ "symbol": "RWF"
+ },
+ "CHF": {
+ "name": "Franco suízo",
+ "symbol": "CHF"
+ },
+ "DJF": {
+ "name": "Franco xibutiano",
+ "symbol": "DJF"
+ },
+ "HTG": {
+ "name": "Gourde haitiano",
+ "symbol": "HTG"
+ },
+ "UAH": {
+ "name": "Grivna ucraína",
+ "symbol": "UAH"
+ },
+ "PYG": {
+ "name": "Guaraní paraguaio",
+ "symbol": "PYG"
+ },
+ "JPY": {
+ "name": "Ien xaponés",
+ "symbol": "Â¥JP"
+ },
+ "CNY": {
+ "name": "Iuán chinés",
+ "symbol": "CNÂ¥"
+ },
+ "MMK": {
+ "name": "Kiat birmano",
+ "symbol": "MMK"
+ },
+ "PGK": {
+ "name": "Kina de Papúa Nova Guinea",
+ "symbol": "PGK"
+ },
+ "LAK": {
+ "name": "Kip laosiano",
+ "symbol": "LAK"
+ },
+ "HRK": {
+ "name": "Kuna croata",
+ "symbol": "HRK"
+ },
+ "MWK": {
+ "name": "Kwacha de Malaui",
+ "symbol": "MWK"
+ },
+ "ZMW": {
+ "name": "Kwacha zambiano",
+ "symbol": "ZMW"
+ },
+ "AOA": {
+ "name": "Kwanza angoleño",
+ "symbol": "AOA"
+ },
+ "GEL": {
+ "name": "Lari xeorxiano",
+ "symbol": "GEL"
+ },
+ "ALL": {
+ "name": "Lek albanés",
+ "symbol": "ALL"
+ },
+ "HNL": {
+ "name": "Lempira hondureño",
+ "symbol": "HNL"
+ },
+ "SLL": {
+ "name": "Leone de Serra Leoa",
+ "symbol": "SLL"
+ },
+ "MDL": {
+ "name": "Leu moldavo",
+ "symbol": "MDL"
+ },
+ "RON": {
+ "name": "Leu romanés",
+ "symbol": "RON"
+ },
+ "BGN": {
+ "name": "Lev búlgaro",
+ "symbol": "BGN"
+ },
+ "FKP": {
+ "name": "Libra das Malvinas",
+ "symbol": "FKP"
+ },
+ "SHP": {
+ "name": "Libra de Santa Helena",
+ "symbol": "SHP"
+ },
+ "GIP": {
+ "name": "Libra de Xibraltar",
+ "symbol": "GIP"
+ },
+ "GBP": {
+ "name": "Libra esterlina",
+ "symbol": "£"
+ },
+ "EGP": {
+ "name": "Libra exipcia",
+ "symbol": "EGP"
+ },
+ "LBP": {
+ "name": "Libra libanesa",
+ "symbol": "LBP"
+ },
+ "SYP": {
+ "name": "Libra siria",
+ "symbol": "SYP"
+ },
+ "SDG": {
+ "name": "Libra sudanesa",
+ "symbol": "SDG"
+ },
+ "SSP": {
+ "name": "Libra sursudanesa",
+ "symbol": "SSP"
+ },
+ "SZL": {
+ "name": "Lilanxeni de Suacilandia",
+ "symbol": "SZL"
+ },
+ "TRY": {
+ "name": "Lira turca",
+ "symbol": "TRY"
+ },
+ "LTL": {
+ "name": "Litas lituana",
+ "symbol": "LTL"
+ },
+ "LSL": {
+ "name": "Loti de Lesoto",
+ "symbol": "LSL"
+ },
+ "AZN": {
+ "name": "Manat acerbaixano",
+ "symbol": "AZN"
+ },
+ "TMT": {
+ "name": "Manat turcomano",
+ "symbol": "TMT"
+ },
+ "BAM": {
+ "name": "Marco convertible de Bosnia e Hercegovina",
+ "symbol": "BAM"
+ },
+ "MZN": {
+ "name": "Metical de Mozambique",
+ "symbol": "MZN"
+ },
+ "NGN": {
+ "name": "Naira nixeriano",
+ "symbol": "NGN"
+ },
+ "ERN": {
+ "name": "Nakfa eritreo",
+ "symbol": "ERN"
+ },
+ "BTN": {
+ "name": "Ngultrum butanés",
+ "symbol": "BTN"
+ },
+ "TWD": {
+ "name": "Novo dólar taiwanés",
+ "symbol": "$NT"
+ },
+ "ILS": {
+ "name": "Novo shequel israelí",
+ "symbol": "₪"
+ },
+ "MRO": {
+ "name": "Ouguiya mauritano",
+ "symbol": "MRO"
+ },
+ "TOP": {
+ "name": "Paʻanga de Tonga",
+ "symbol": "TOP"
+ },
+ "MOP": {
+ "name": "Pataca de Macau",
+ "symbol": "MOP"
+ },
+ "ARS": {
+ "name": "Peso arxentino",
+ "symbol": "ARS"
+ },
+ "CLP": {
+ "name": "Peso chileno",
+ "symbol": "CLP"
+ },
+ "COP": {
+ "name": "Peso colombiano",
+ "symbol": "COP"
+ },
+ "CUP": {
+ "name": "Peso cubano",
+ "symbol": "CUP"
+ },
+ "CUC": {
+ "name": "Peso cubano convertible",
+ "symbol": "CUC"
+ },
+ "DOP": {
+ "name": "Peso dominicano",
+ "symbol": "DOP"
+ },
+ "PHP": {
+ "name": "Peso filipino",
+ "symbol": "PHP"
+ },
+ "MXN": {
+ "name": "Peso mexicano",
+ "symbol": "$MX"
+ },
+ "UYU": {
+ "name": "Peso uruguaio",
+ "symbol": "UYU"
+ },
+ "BWP": {
+ "name": "Pula botsuano",
+ "symbol": "BWP"
+ },
+ "GTQ": {
+ "name": "Quetzal guatemalteco",
+ "symbol": "GTQ"
+ },
+ "ZAR": {
+ "name": "Rand sudafricano",
+ "symbol": "ZAR"
+ },
+ "BRL": {
+ "name": "Real brasileiro",
+ "symbol": "$R"
+ },
+ "YER": {
+ "name": "Rial iemení",
+ "symbol": "YER"
+ },
+ "IRR": {
+ "name": "Rial iraniano",
+ "symbol": "IRR"
+ },
+ "OMR": {
+ "name": "Rial omaní",
+ "symbol": "OMR"
+ },
+ "QAR": {
+ "name": "Rial qatarí",
+ "symbol": "QAR"
+ },
+ "SAR": {
+ "name": "Rial saudita",
+ "symbol": "SAR"
+ },
+ "KHR": {
+ "name": "Riel camboxano",
+ "symbol": "KHR"
+ },
+ "MYR": {
+ "name": "Ringgit malaio",
+ "symbol": "MYR"
+ },
+ "BYR": {
+ "name": "Rublo bielorruso",
+ "symbol": "BYR"
+ },
+ "RUB": {
+ "name": "Rublo ruso",
+ "symbol": "RUB"
+ },
+ "MUR": {
+ "name": "Rupia de Mauricio",
+ "symbol": "MUR"
+ },
+ "SCR": {
+ "name": "Rupia de Seixeles",
+ "symbol": "SCR"
+ },
+ "LKR": {
+ "name": "Rupia de Sri Lanka",
+ "symbol": "LKR"
+ },
+ "INR": {
+ "name": "Rupia india",
+ "symbol": "₹"
+ },
+ "IDR": {
+ "name": "Rupia indonesia",
+ "symbol": "IDR"
+ },
+ "MVR": {
+ "name": "Rupia maldiva",
+ "symbol": "MVR"
+ },
+ "NPR": {
+ "name": "Rupia nepalesa",
+ "symbol": "NPR"
+ },
+ "PKR": {
+ "name": "Rupia paquistaní",
+ "symbol": "PKR"
+ },
+ "PEN": {
+ "name": "Sol novo peruano",
+ "symbol": "PEN"
+ },
+ "KGS": {
+ "name": "Som quirguizo",
+ "symbol": "KGS"
+ },
+ "UZS": {
+ "name": "Som usbeco",
+ "symbol": "UZS"
+ },
+ "TJS": {
+ "name": "Somoni taxico",
+ "symbol": "TJS"
+ },
+ "BDT": {
+ "name": "Taka de Bangladesh",
+ "symbol": "BDT"
+ },
+ "WST": {
+ "name": "Tala samoano",
+ "symbol": "WST"
+ },
+ "KZT": {
+ "name": "Tenge casaco",
+ "symbol": "KZT"
+ },
+ "MNT": {
+ "name": "Tugrik mongol",
+ "symbol": "MNT"
+ },
+ "VUV": {
+ "name": "Vatu vanuatense",
+ "symbol": "VUV"
+ },
+ "KPW": {
+ "name": "Won norcoreano",
+ "symbol": "KPW"
+ },
+ "KRW": {
+ "name": "Won surcoreano",
+ "symbol": "â‚©"
+ },
+ "PLN": {
+ "name": "Zloty polaco",
+ "symbol": "PLN"
+ },
+ "ZWL": {
+ "name": "ZWL",
+ "symbol": "ZWL"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/currency/gsw.json b/library/intl/resources/currency/gsw.json
new file mode 100644
index 000000000..573c61104
--- /dev/null
+++ b/library/intl/resources/currency/gsw.json
@@ -0,0 +1,634 @@
+{
+ "AFN": {
+ "name": "Afghani",
+ "symbol": "AFN"
+ },
+ "EGP": {
+ "name": "Ägüptischs Pfund",
+ "symbol": "EGP"
+ },
+ "DZD": {
+ "name": "Algeerischi Dinar",
+ "symbol": "DZD"
+ },
+ "ARS": {
+ "name": "Argentinische Peso",
+ "symbol": "ARS"
+ },
+ "AWG": {
+ "name": "Aruba Florin",
+ "symbol": "AWG"
+ },
+ "AZN": {
+ "name": "Aserbeidschanische Manat",
+ "symbol": "AZN"
+ },
+ "ETB": {
+ "name": "Äthiopische Birr",
+ "symbol": "ETB"
+ },
+ "AUD": {
+ "name": "Auschtralische Dollar",
+ "symbol": "A$"
+ },
+ "BSD": {
+ "name": "Bahama-Dollar",
+ "symbol": "BSD"
+ },
+ "BHD": {
+ "name": "Bahrain-Dinar",
+ "symbol": "BHD"
+ },
+ "THB": {
+ "name": "Baht",
+ "symbol": "THB"
+ },
+ "PAB": {
+ "name": "Balboa",
+ "symbol": "PAB"
+ },
+ "BBD": {
+ "name": "Barbados-Dollar",
+ "symbol": "BBD"
+ },
+ "BYR": {
+ "name": "Belarus Rubel (nöi)",
+ "symbol": "BYR"
+ },
+ "BZD": {
+ "name": "Belize-Dollar",
+ "symbol": "BZD"
+ },
+ "BMD": {
+ "name": "Bermuda-Dollar",
+ "symbol": "BMD"
+ },
+ "BTN": {
+ "name": "Bhutanische Ngultrum",
+ "symbol": "BTN"
+ },
+ "VEF": {
+ "name": "Bolivar",
+ "symbol": "VEF"
+ },
+ "BOB": {
+ "name": "Boliviano",
+ "symbol": "BOB"
+ },
+ "BWP": {
+ "name": "Botswanische Pula",
+ "symbol": "BWP"
+ },
+ "BRL": {
+ "name": "Brasilianische Real",
+ "symbol": "R$"
+ },
+ "BND": {
+ "name": "Brunei-Dollar",
+ "symbol": "BND"
+ },
+ "BGN": {
+ "name": "Bulgarische Lew",
+ "symbol": "BGN"
+ },
+ "BIF": {
+ "name": "Burundi-Franc",
+ "symbol": "BIF"
+ },
+ "XAF": {
+ "name": "CFA-Franc (Äquatoriaal)",
+ "symbol": "FCFA"
+ },
+ "XOF": {
+ "name": "CFA-Franc (Wescht)",
+ "symbol": "CFA"
+ },
+ "XPF": {
+ "name": "CFP-Franc",
+ "symbol": "CFPF"
+ },
+ "CRC": {
+ "name": "Costa Rica Colon",
+ "symbol": "CRC"
+ },
+ "CUC": {
+ "name": "CUC",
+ "symbol": "CUC"
+ },
+ "MKD": {
+ "name": "Denar",
+ "symbol": "MKD"
+ },
+ "STD": {
+ "name": "Dobra",
+ "symbol": "STD"
+ },
+ "VND": {
+ "name": "Dong",
+ "symbol": "â‚«"
+ },
+ "AMD": {
+ "name": "Dram",
+ "symbol": "AMD"
+ },
+ "DJF": {
+ "name": "Dschibuti-Franc",
+ "symbol": "DJF"
+ },
+ "SVC": {
+ "name": "El-Salvador-Colon",
+ "symbol": "SVC"
+ },
+ "ERN": {
+ "name": "Eritreische Nakfa",
+ "symbol": "ERN"
+ },
+ "EUR": {
+ "name": "Euro",
+ "symbol": "€"
+ },
+ "FKP": {
+ "name": "Falkland-Pfund",
+ "symbol": "FKP"
+ },
+ "FJD": {
+ "name": "Fidschi Dollar",
+ "symbol": "FJD"
+ },
+ "HUF": {
+ "name": "Forint",
+ "symbol": "HUF"
+ },
+ "GMD": {
+ "name": "Gambische Dalasi",
+ "symbol": "GMD"
+ },
+ "GEL": {
+ "name": "Georgische Lari",
+ "symbol": "GEL"
+ },
+ "GHS": {
+ "name": "Ghanaische Cedi (GHS)",
+ "symbol": "GHS"
+ },
+ "GIP": {
+ "name": "Gibraltar-Pfund",
+ "symbol": "GIP"
+ },
+ "HTG": {
+ "name": "Gourde",
+ "symbol": "HTG"
+ },
+ "PYG": {
+ "name": "Guarani",
+ "symbol": "PYG"
+ },
+ "GNF": {
+ "name": "Guinea-Franc",
+ "symbol": "GNF"
+ },
+ "GYD": {
+ "name": "Guyana-Dollar",
+ "symbol": "GYD"
+ },
+ "HKD": {
+ "name": "Hongkong-Dollar",
+ "symbol": "HK$"
+ },
+ "UAH": {
+ "name": "Hryvnia",
+ "symbol": "UAH"
+ },
+ "ISK": {
+ "name": "Iisländischi Chroone",
+ "symbol": "ISK"
+ },
+ "INR": {
+ "name": "Indischi Rupie",
+ "symbol": "₹"
+ },
+ "IDR": {
+ "name": "Indonesischi Rupie",
+ "symbol": "IDR"
+ },
+ "IQD": {
+ "name": "Irak-Dinar",
+ "symbol": "IQD"
+ },
+ "JMD": {
+ "name": "Jamaika-Dollar",
+ "symbol": "JMD"
+ },
+ "YER": {
+ "name": "Jeme-Rial",
+ "symbol": "YER"
+ },
+ "JOD": {
+ "name": "Jordaanische Dinar",
+ "symbol": "JOD"
+ },
+ "KYD": {
+ "name": "Kaiman-Dollar",
+ "symbol": "KYD"
+ },
+ "CAD": {
+ "name": "Kanadische Dollar",
+ "symbol": "CA$"
+ },
+ "CVE": {
+ "name": "Kap Verde Escudo",
+ "symbol": "CVE"
+ },
+ "QAR": {
+ "name": "Katar-Riyal",
+ "symbol": "QAR"
+ },
+ "KES": {
+ "name": "Kenia-Schilling",
+ "symbol": "KES"
+ },
+ "PGK": {
+ "name": "Kina",
+ "symbol": "PGK"
+ },
+ "LAK": {
+ "name": "Kip",
+ "symbol": "LAK"
+ },
+ "COP": {
+ "name": "Kolumbianische Peso",
+ "symbol": "COP"
+ },
+ "KMF": {
+ "name": "Komore-Franc",
+ "symbol": "KMF"
+ },
+ "CDF": {
+ "name": "Kongolesische Franc",
+ "symbol": "CDF"
+ },
+ "BAM": {
+ "name": "Konvertierbari Mark vo Bosnie und Herzegowina",
+ "symbol": "BAM"
+ },
+ "CUP": {
+ "name": "Kubanische Peso",
+ "symbol": "CUP"
+ },
+ "HRK": {
+ "name": "Kuna",
+ "symbol": "HRK"
+ },
+ "KWD": {
+ "name": "Kuwait-Dinar",
+ "symbol": "KWD"
+ },
+ "ZMW": {
+ "name": "Kwacha",
+ "symbol": "ZMW"
+ },
+ "AOA": {
+ "name": "Kwanza",
+ "symbol": "AOA"
+ },
+ "MMK": {
+ "name": "Kyat",
+ "symbol": "MMK"
+ },
+ "ALL": {
+ "name": "Lek",
+ "symbol": "ALL"
+ },
+ "HNL": {
+ "name": "Lempira",
+ "symbol": "HNL"
+ },
+ "SLL": {
+ "name": "Leone",
+ "symbol": "SLL"
+ },
+ "LBP": {
+ "name": "Libaneesischs Pfund",
+ "symbol": "LBP"
+ },
+ "LRD": {
+ "name": "Liberiaanische Dollar",
+ "symbol": "LRD"
+ },
+ "SZL": {
+ "name": "Lilangeni",
+ "symbol": "SZL"
+ },
+ "LTL": {
+ "name": "Litauische Litas",
+ "symbol": "LTL"
+ },
+ "LSL": {
+ "name": "Loti",
+ "symbol": "LSL"
+ },
+ "LYD": {
+ "name": "Lüübische Dinar",
+ "symbol": "LYD"
+ },
+ "MGA": {
+ "name": "Madagaschkar-Ariary",
+ "symbol": "MGA"
+ },
+ "MWK": {
+ "name": "Malawi-Kwacha",
+ "symbol": "MWK"
+ },
+ "MYR": {
+ "name": "Malaysische Ringgit",
+ "symbol": "MYR"
+ },
+ "MAD": {
+ "name": "Marokkanische Dirham",
+ "symbol": "MAD"
+ },
+ "MUR": {
+ "name": "Maurizius-Rupie",
+ "symbol": "MUR"
+ },
+ "MZN": {
+ "name": "Metical",
+ "symbol": "MZN"
+ },
+ "MXN": {
+ "name": "Mexikanische Peso",
+ "symbol": "MX$"
+ },
+ "MDL": {
+ "name": "Moldau-Löi",
+ "symbol": "MDL"
+ },
+ "NGN": {
+ "name": "Naira",
+ "symbol": "NGN"
+ },
+ "NAD": {
+ "name": "Namibia-Dollar",
+ "symbol": "NAD"
+ },
+ "NPR": {
+ "name": "Nepaleesischi Rupie",
+ "symbol": "NPR"
+ },
+ "NZD": {
+ "name": "Neuseeland-Dollar",
+ "symbol": "NZ$"
+ },
+ "NIO": {
+ "name": "Nicaragua-Córdoba",
+ "symbol": "NIO"
+ },
+ "ANG": {
+ "name": "Niderländischi-Antille-Gulde",
+ "symbol": "ANG"
+ },
+ "PEN": {
+ "name": "Nöie Sol",
+ "symbol": "PEN"
+ },
+ "TWD": {
+ "name": "Nöii Taiwan-Dollar",
+ "symbol": "NT$"
+ },
+ "TRY": {
+ "name": "Nöii Türkischi Liire",
+ "symbol": "TRY"
+ },
+ "KPW": {
+ "name": "Nordkoreanische Won",
+ "symbol": "KPW"
+ },
+ "NOK": {
+ "name": "Norweegischi Chroone",
+ "symbol": "NOK"
+ },
+ "XCD": {
+ "name": "Oschtkaribische Dollar",
+ "symbol": "EC$"
+ },
+ "MRO": {
+ "name": "Ouguiya",
+ "symbol": "MRO"
+ },
+ "TOP": {
+ "name": "Paʻanga",
+ "symbol": "TOP"
+ },
+ "PKR": {
+ "name": "Pakischtanischi Rupie",
+ "symbol": "PKR"
+ },
+ "MOP": {
+ "name": "Pataca",
+ "symbol": "MOP"
+ },
+ "GBP": {
+ "name": "Pfund Schtörling",
+ "symbol": "£"
+ },
+ "PHP": {
+ "name": "Philippiinische Peso",
+ "symbol": "PHP"
+ },
+ "GTQ": {
+ "name": "Quetzal",
+ "symbol": "GTQ"
+ },
+ "ZAR": {
+ "name": "Rand",
+ "symbol": "ZAR"
+ },
+ "CNY": {
+ "name": "Renminbi Yuan",
+ "symbol": "CNÂ¥"
+ },
+ "IRR": {
+ "name": "Rial",
+ "symbol": "IRR"
+ },
+ "OMR": {
+ "name": "Rial Omani",
+ "symbol": "OMR"
+ },
+ "KHR": {
+ "name": "Riel",
+ "symbol": "KHR"
+ },
+ "RWF": {
+ "name": "Ruanda-Franc",
+ "symbol": "RWF"
+ },
+ "MVR": {
+ "name": "Rufiyaa",
+ "symbol": "MVR"
+ },
+ "RON": {
+ "name": "Rumäänische Löi",
+ "symbol": "RON"
+ },
+ "RUB": {
+ "name": "Russische Rubel",
+ "symbol": "RUB"
+ },
+ "SBD": {
+ "name": "Salomone-Dollar",
+ "symbol": "SBD"
+ },
+ "SAR": {
+ "name": "Saudi-Riyal",
+ "symbol": "SAR"
+ },
+ "ILS": {
+ "name": "Schekel",
+ "symbol": "₪"
+ },
+ "SEK": {
+ "name": "Schweedischi Chroone",
+ "symbol": "SEK"
+ },
+ "CHF": {
+ "name": "Schwiizer Franke",
+ "symbol": "CHF"
+ },
+ "RSD": {
+ "name": "Serbische Dinar",
+ "symbol": "RSD"
+ },
+ "SCR": {
+ "name": "Seyschelle-Rupie",
+ "symbol": "SCR"
+ },
+ "SGD": {
+ "name": "Singapur-Dollar",
+ "symbol": "SGD"
+ },
+ "KGS": {
+ "name": "Som",
+ "symbol": "KGS"
+ },
+ "SOS": {
+ "name": "Somalia-Schilling",
+ "symbol": "SOS"
+ },
+ "LKR": {
+ "name": "Sri-Lanka-Rupie",
+ "symbol": "LKR"
+ },
+ "SHP": {
+ "name": "St.-Helena-Pfund",
+ "symbol": "SHP"
+ },
+ "SDG": {
+ "name": "Sudaneesischs Pfund",
+ "symbol": "SDG"
+ },
+ "SRD": {
+ "name": "Surinamische Dollar",
+ "symbol": "SRD"
+ },
+ "KRW": {
+ "name": "Süüdkoreanische Won",
+ "symbol": "â‚©"
+ },
+ "SSP": {
+ "name": "Süüdsudaneesischs Pfund",
+ "symbol": "SSP"
+ },
+ "SYP": {
+ "name": "Süürischs Pfund",
+ "symbol": "SYP"
+ },
+ "TJS": {
+ "name": "Tadschikischtan-Somoni",
+ "symbol": "TJS"
+ },
+ "BDT": {
+ "name": "Taka",
+ "symbol": "BDT"
+ },
+ "WST": {
+ "name": "Tala",
+ "symbol": "WST"
+ },
+ "DKK": {
+ "name": "Tänischi Chroone",
+ "symbol": "DKK"
+ },
+ "TZS": {
+ "name": "Tansania-Schilling",
+ "symbol": "TZS"
+ },
+ "KZT": {
+ "name": "Tenge",
+ "symbol": "KZT"
+ },
+ "TMT": {
+ "name": "TMT",
+ "symbol": "TMT"
+ },
+ "DOP": {
+ "name": "Tominikanische Peso",
+ "symbol": "DOP"
+ },
+ "TTD": {
+ "name": "Trinidad-und-Tobago-Dollar",
+ "symbol": "TTD"
+ },
+ "CZK": {
+ "name": "Tschechischi Chroone",
+ "symbol": "CZK"
+ },
+ "CLP": {
+ "name": "Tschileenische Peso",
+ "symbol": "CLP"
+ },
+ "MNT": {
+ "name": "Tugrik",
+ "symbol": "MNT"
+ },
+ "TND": {
+ "name": "Tuneesische Dinar",
+ "symbol": "TND"
+ },
+ "AED": {
+ "name": "UAE Dirham",
+ "symbol": "AED"
+ },
+ "UGX": {
+ "name": "Uganda-Schilling",
+ "symbol": "UGX"
+ },
+ "UYU": {
+ "name": "Uruguayische Peso",
+ "symbol": "UYU"
+ },
+ "USD": {
+ "name": "US-Dollar",
+ "symbol": "$"
+ },
+ "UZS": {
+ "name": "Usbeekischtan-Sum",
+ "symbol": "UZS"
+ },
+ "VUV": {
+ "name": "Vatu",
+ "symbol": "VUV"
+ },
+ "JPY": {
+ "name": "Yen",
+ "symbol": "Â¥"
+ },
+ "PLN": {
+ "name": "Zloty",
+ "symbol": "PLN"
+ },
+ "ZWL": {
+ "name": "ZWL",
+ "symbol": "ZWL"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/currency/gu.json b/library/intl/resources/currency/gu.json
new file mode 100644
index 000000000..8e795a255
--- /dev/null
+++ b/library/intl/resources/currency/gu.json
@@ -0,0 +1,634 @@
+{
+ "XOF": {
+ "name": "[CFA] ફà«àª°à«‡àª‚ક [BCEAO]",
+ "symbol": "CFA"
+ },
+ "XAF": {
+ "name": "[CFA] ફà«àª°à«‡àª‚ક [BEAC]",
+ "symbol": "FCFA"
+ },
+ "XPF": {
+ "name": "[CFP] ફà«àª°à«‡àª‚ક",
+ "symbol": "CFPF"
+ },
+ "SVC": {
+ "name": "SVC",
+ "symbol": "SVC"
+ },
+ "ZWL": {
+ "name": "ZWL",
+ "symbol": "ZWL"
+ },
+ "AOA": {
+ "name": "અંગોલિયન કà«àªµàª¾àª¨à«àªàª¾",
+ "symbol": "AOA"
+ },
+ "AZN": {
+ "name": "અàªàª°àª¬à«ˆàªœàª¾àª¨à«€ મનાત",
+ "symbol": "AZN"
+ },
+ "AFN": {
+ "name": "અફà«àª—ાન અફà«àª—ાની",
+ "symbol": "AFN"
+ },
+ "AWG": {
+ "name": "અરà«àª¬àª¨ ફà«àª²à«‹àª°àª¿àª¨",
+ "symbol": "AWG"
+ },
+ "ARS": {
+ "name": "અરà«àªœà«‡àª¨à«àªŸà«€àª¨àª¾ પેસો",
+ "symbol": "ARS"
+ },
+ "AMD": {
+ "name": "અરà«àª®à«‡àª¨àª¿àª¯àª¨ ડà«àª°à«‡àª®",
+ "symbol": "AMD"
+ },
+ "DZD": {
+ "name": "અલà«àªœàª¿àª°àª¿àª¯àª¨ દિનાર",
+ "symbol": "DZD"
+ },
+ "ALL": {
+ "name": "અલà«àª¬à«‡àª¨àª¿àª¯àª¨ લેક",
+ "symbol": "ALL"
+ },
+ "ISK": {
+ "name": "આઇસલેનà«àª¡àª¿àª• કà«àª°à«‹àª¨àª¾",
+ "symbol": "ISK"
+ },
+ "EGP": {
+ "name": "ઇજિપà«àª¤àª¿àª¯àª¨ પાઉનà«àª¡",
+ "symbol": "EGP"
+ },
+ "ILS": {
+ "name": "ઇàªàª°àª¾àª¯à«‡àª²à«€ નà«àª¯à« શેકલ",
+ "symbol": "₪"
+ },
+ "ETB": {
+ "name": "ઇથિયોપીયન બિર",
+ "symbol": "ETB"
+ },
+ "IDR": {
+ "name": "ઇનà«àª¡à«‹àª¨à«‡àª¶àª¿àª¯àª¨ રૂપિયા",
+ "symbol": "IDR"
+ },
+ "IQD": {
+ "name": "ઇરાકી દિનાર",
+ "symbol": "IQD"
+ },
+ "IRR": {
+ "name": "ઇરાનિયન રિયાલ",
+ "symbol": "IRR"
+ },
+ "XCD": {
+ "name": "ઇસà«àªŸ કેરિબિયન ડોલર",
+ "symbol": "EC$"
+ },
+ "UZS": {
+ "name": "ઉàªà«àª¬à«‡àª•àª¿àª¸à«àª¤àª¾àª¨ સોમ",
+ "symbol": "UZS"
+ },
+ "KPW": {
+ "name": "ઉતà«àª¤àª° કોરિયન વન",
+ "symbol": "KPW"
+ },
+ "UYU": {
+ "name": "ઉરà«àª—à«àªµà«‡àª¯àª¨ પેસો",
+ "symbol": "UYU"
+ },
+ "ERN": {
+ "name": "àªàª°àª¿àªŸà«àª°à«‡àª¯àª¨ નકà«àª«àª¾",
+ "symbol": "ERN"
+ },
+ "AUD": {
+ "name": "ઑસà«àªŸà«àª°à«‡àª²àª¿àª¯àª¨ ડૉલર",
+ "symbol": "A$"
+ },
+ "OMR": {
+ "name": "ઓમાની રિયાલ",
+ "symbol": "OMR"
+ },
+ "KZT": {
+ "name": "કàªàª¾àª•àª¿àª¸à«àª¤àª¾àª¨à«€ ટેંગ",
+ "symbol": "KZT"
+ },
+ "QAR": {
+ "name": "કતારી રિયાલ",
+ "symbol": "QAR"
+ },
+ "KGS": {
+ "name": "કિરà«àª—િસà«àª¤àª¾àª¨à«€ સોમ",
+ "symbol": "KGS"
+ },
+ "KWD": {
+ "name": "કà«àªµà«ˆàª¤à«€ દિનાર",
+ "symbol": "KWD"
+ },
+ "CAD": {
+ "name": "કેનેડિયન ડૉલર",
+ "symbol": "CA$"
+ },
+ "KES": {
+ "name": "કેનà«àª¯à«‡àª¨ શિલિંગ",
+ "symbol": "KES"
+ },
+ "CVE": {
+ "name": "કેપ વરà«àª¦àª¿àª¯àª¨ àªàª¸à«àª•à«àª¡à«‹",
+ "symbol": "CVE"
+ },
+ "KHR": {
+ "name": "કેમà«àª¬à«‹àª¡àª¿àª¯àª¨ રીઅલ",
+ "symbol": "KHR"
+ },
+ "KYD": {
+ "name": "કેયમેન આઇલેંડà«àª¸ ડોલર",
+ "symbol": "KYD"
+ },
+ "CDF": {
+ "name": "કોંગોલિઠફà«àª°à«‡àª‚ક",
+ "symbol": "CDF"
+ },
+ "KMF": {
+ "name": "કોમોરિઅન ફà«àª°à«‡àª‚ક",
+ "symbol": "KMF"
+ },
+ "COP": {
+ "name": "કોલમà«àª¬àª¿àª¯àª¨ પેસો",
+ "symbol": "COP"
+ },
+ "CRC": {
+ "name": "કોસà«àªŸàª¾ રિકન કોલોન",
+ "symbol": "CRC"
+ },
+ "CUP": {
+ "name": "કà«àª¯à«àª¬àª¨ પેસો",
+ "symbol": "CUP"
+ },
+ "CUC": {
+ "name": "કà«àª¯à«àª¬àª¨ રૂપાંતર યોગà«àª¯ પેસો",
+ "symbol": "CUC"
+ },
+ "HRK": {
+ "name": "કà«àª°à«‹àªàª¶àª¿àª¯àª¨ કà«àª¯à«àª¨àª¾",
+ "symbol": "HRK"
+ },
+ "GYD": {
+ "name": "ગયાનિઠડોલર",
+ "symbol": "GYD"
+ },
+ "GNF": {
+ "name": "ગિનીયન ફà«àª°à«‡àª‚ક",
+ "symbol": "GNF"
+ },
+ "GMD": {
+ "name": "ગેમà«àª¬àª¿àª¯àª¨ દલાસી",
+ "symbol": "GMD"
+ },
+ "GTQ": {
+ "name": "ગà«àªµàª¾àªŸà«‡àª®àª¾àª²àª¾ કà«àª‡àªŸà«àªàª²",
+ "symbol": "GTQ"
+ },
+ "GHS": {
+ "name": "ઘાનાઇયન સેડી",
+ "symbol": "GHS"
+ },
+ "CNY": {
+ "name": "ચાઇનિઠયà«àª†àª¨",
+ "symbol": "CNÂ¥"
+ },
+ "CLP": {
+ "name": "ચિલિઅન પેસો",
+ "symbol": "CLP"
+ },
+ "CZK": {
+ "name": "ચેક રીપબà«àª²àª¿àª• કોરà«àª¨àª¾",
+ "symbol": "CZK"
+ },
+ "JMD": {
+ "name": "જમૈકિયન ડોલર",
+ "symbol": "JMD"
+ },
+ "JPY": {
+ "name": "જાપાનીઠયેન",
+ "symbol": "JPÂ¥"
+ },
+ "DJF": {
+ "name": "જિબà«àªŸàª¿àª¯àª¨ ફà«àª°à«‡àª‚ક",
+ "symbol": "DJF"
+ },
+ "GIP": {
+ "name": "જીબà«àª°àª¾àª²à«àªŸàª° પાઉનà«àª¡",
+ "symbol": "GIP"
+ },
+ "JOD": {
+ "name": "જોરà«àª¡àª¨àª¿àª¯àª¨ દિનાર",
+ "symbol": "JOD"
+ },
+ "GEL": {
+ "name": "જà«àª¯à«‹àª°à«àªœàª¿àª…ન લારી",
+ "symbol": "GEL"
+ },
+ "ZMW": {
+ "name": "àªàª¾àª®à«àª¬àª¿àª¯àª¨ કà«àªµàª¾àªšàª¾",
+ "symbol": "ZMW"
+ },
+ "TOP": {
+ "name": "ટોંગન પ’અંગા",
+ "symbol": "TOP"
+ },
+ "TND": {
+ "name": "ટà«àª¯à«àª¨àª¿àª¶àª¿àª¯àª¨ દિનાર",
+ "symbol": "TND"
+ },
+ "DKK": {
+ "name": "ડેનિશ કà«àª°à«‹àª¨",
+ "symbol": "DKK"
+ },
+ "DOP": {
+ "name": "ડોમિનિકન પેસો",
+ "symbol": "DOP"
+ },
+ "TJS": {
+ "name": "તાજિકિસà«àª¤àª¾àª¨à«€ સોમોની",
+ "symbol": "TJS"
+ },
+ "TZS": {
+ "name": "તાનà«àªàª¾àª¨àª¿àª¯àª¨ શિલિંગ",
+ "symbol": "TZS"
+ },
+ "TMT": {
+ "name": "તà«àª°à«àª•àª®à«‡àª¨àª¿àª¸à«àª¤àª¾àª¨à«€ મનત",
+ "symbol": "TMT"
+ },
+ "TRY": {
+ "name": "તà«àª°à«àª•àª¿àª¶ લિરા",
+ "symbol": "TRY"
+ },
+ "TTD": {
+ "name": "તà«àª°àª¿àª¨àª¿àª¦àª¾àª¦ અને ટોબેગો ડોલર",
+ "symbol": "TTD"
+ },
+ "THB": {
+ "name": "થાઇ બાહà«àª¤",
+ "symbol": "฿"
+ },
+ "ZAR": {
+ "name": "દકà«àª·àª¿àª£ આફà«àª°àª¿àª•à«€ રેંડ",
+ "symbol": "ZAR"
+ },
+ "KRW": {
+ "name": "દકà«àª·àª¿àª£ કોરિયન વન",
+ "symbol": "â‚©"
+ },
+ "SSP": {
+ "name": "દકà«àª·àª¿àª£ સà«àª¦àª¾àª¨àª¿àª પાઉનà«àª¡",
+ "symbol": "SSP"
+ },
+ "NGN": {
+ "name": "નાઇજીરિયન નૈરા",
+ "symbol": "NGN"
+ },
+ "NAD": {
+ "name": "નામિબિયન ડોલર",
+ "symbol": "NAD"
+ },
+ "NIO": {
+ "name": "નિકારાગà«àª…ન કોરà«àª¡à«‹àª¬àª¾",
+ "symbol": "NIO"
+ },
+ "ANG": {
+ "name": "નેધરલેંડ àªàª‚ટિલિન ગિલà«àª¡àª°",
+ "symbol": "ANG"
+ },
+ "NPR": {
+ "name": "નેપાલિઠરૂપી",
+ "symbol": "NPR"
+ },
+ "NOK": {
+ "name": "નૉરà«àªµà«‡àªœàª¿àª¯àª¨ કà«àª°à«‹àª¨",
+ "symbol": "NOK"
+ },
+ "TWD": {
+ "name": "નà«àª¯à« તાઇવાન ડૉલર",
+ "symbol": "NT$"
+ },
+ "NZD": {
+ "name": "નà«àª¯à«‚àªàª¿àª²à«‡àª‚ડ ડૉલર",
+ "symbol": "NZ$"
+ },
+ "PAB": {
+ "name": "પનામેનિયન બાલà«àª¬à«‹àª†",
+ "symbol": "PAB"
+ },
+ "PYG": {
+ "name": "પરાગà«àªµà«‡àª¯àª¨ ગà«àª†àª°àª¾àª¨à«€",
+ "symbol": "PYG"
+ },
+ "PKR": {
+ "name": "પાકિસà«àª¤àª¾àª¨à«€ રૂપી",
+ "symbol": "PKR"
+ },
+ "PGK": {
+ "name": "પાપà«àª† નà«àª¯à«‚ ગિનીયન કિના",
+ "symbol": "PGK"
+ },
+ "PEN": {
+ "name": "પેરà«àªµàª¿àª¯àª¨ નà«àª¯à«àªµà«‹ સોલ",
+ "symbol": "PEN"
+ },
+ "PLN": {
+ "name": "પોલિસ àªà«àª²à«‹àªŸà«€",
+ "symbol": "PLN"
+ },
+ "FJD": {
+ "name": "ફિજિઅન ડોલર",
+ "symbol": "FJD"
+ },
+ "PHP": {
+ "name": "ફિલીપાઇન પેસો",
+ "symbol": "PHP"
+ },
+ "FKP": {
+ "name": "ફૉકલેનà«àª¡ આઇલેંડà«àª¸ પાઉનà«àª¡",
+ "symbol": "FKP"
+ },
+ "BMD": {
+ "name": "બરà«àª®à«àª¡àª¨ ડોલર",
+ "symbol": "BMD"
+ },
+ "BGN": {
+ "name": "બલà«àª—ેરીયન લેવ",
+ "symbol": "BGN"
+ },
+ "BSD": {
+ "name": "બહામિયન ડોલર",
+ "symbol": "BSD"
+ },
+ "BDT": {
+ "name": "બાંગલાદેશી ટાકા",
+ "symbol": "BDT"
+ },
+ "BBD": {
+ "name": "બારà«àª¬àª¾àª¡àª¿àª¯àª¨ ડોલર",
+ "symbol": "BBD"
+ },
+ "BIF": {
+ "name": "બà«àª°à«àª¨à«àª¡àª¿àª¯àª¨ ફà«àª°à«‡àª‚ક",
+ "symbol": "BIF"
+ },
+ "BYR": {
+ "name": "બેલારà«àª¶àª¿àª¯àª¨ રૂબલ",
+ "symbol": "BYR"
+ },
+ "BZD": {
+ "name": "બેલિઠડોલર",
+ "symbol": "BZD"
+ },
+ "BHD": {
+ "name": "બેહરિની દિનાર",
+ "symbol": "BHD"
+ },
+ "BWP": {
+ "name": "બોતà«àª¸àªµàª¾àª¨àª¨ પà«àª²àª¾",
+ "symbol": "BWP"
+ },
+ "BOB": {
+ "name": "બોલિવિયન બોલિવિયાનો",
+ "symbol": "BOB"
+ },
+ "BAM": {
+ "name": "બોસà«àª¨àª¿àª¯àª¾ અને હરà«àªà«‡àª—ોવિના રૂપાંતર યોગà«àª¯ મારà«àª•",
+ "symbol": "BAM"
+ },
+ "BRL": {
+ "name": "બà«àª°àª¾àªàª¿àª²à«€àª¯àª¨ રિઆલ",
+ "symbol": "R$"
+ },
+ "GBP": {
+ "name": "બà«àª°àª¿àªŸàª¿àª¶ પાઉનà«àª¡ સà«àªŸàª°à«àª²àª¿àª‚ગ",
+ "symbol": "£"
+ },
+ "BND": {
+ "name": "બà«àª°à«àª¨à«‡àª‡ ડોલર",
+ "symbol": "BND"
+ },
+ "INR": {
+ "name": "ભારતીય રૂપિયા",
+ "symbol": "₹"
+ },
+ "BTN": {
+ "name": "ભà«àª¤àª¾àª¨àª¿àª àªàª‚ગà«àª²à«àª¤à«àª°àª®",
+ "symbol": "BTN"
+ },
+ "MYR": {
+ "name": "મલેશિયન રિંગà«àª—ેટ",
+ "symbol": "MYR"
+ },
+ "MOP": {
+ "name": "માકાનિઠપતાકા",
+ "symbol": "MOP"
+ },
+ "MGA": {
+ "name": "માલાગેસી અરીઆરી",
+ "symbol": "MGA"
+ },
+ "MWK": {
+ "name": "માલાવિયન કà«àªµàª¾àªšàª¾",
+ "symbol": "MWK"
+ },
+ "MVR": {
+ "name": "માલà«àª¦àª¿àªµàª¿àª¯àª¨ રà«àª«àª¿àª¯àª¾",
+ "symbol": "MVR"
+ },
+ "MXN": {
+ "name": "મેકà«àª¸àª¿àª•àª¨ પેસો",
+ "symbol": "MX$"
+ },
+ "MKD": {
+ "name": "મેસેડોનિયન દિનાર",
+ "symbol": "MKD"
+ },
+ "MNT": {
+ "name": "મોંગોલિયન ટગરિક",
+ "symbol": "MNT"
+ },
+ "MZN": {
+ "name": "મોàªàª¾àª®à«àª¬àª¿àª•àª¨ મેટિકલ",
+ "symbol": "MZN"
+ },
+ "MRO": {
+ "name": "મોરીશેનિયન ઓગà«àª¯àª¾",
+ "symbol": "MRO"
+ },
+ "MUR": {
+ "name": "મોરેશીઅન રૂપી",
+ "symbol": "MUR"
+ },
+ "MAD": {
+ "name": "મોરોકà«àª•àª¨ દિરહામ",
+ "symbol": "MAD"
+ },
+ "MDL": {
+ "name": "મોલડોવેન લિયà«",
+ "symbol": "MDL"
+ },
+ "MMK": {
+ "name": "મà«àª¯àª¾àª‚માર કà«àª¯àª¾àª¤",
+ "symbol": "MMK"
+ },
+ "USD": {
+ "name": "યà«àªàª¸ ડોલર",
+ "symbol": "US$"
+ },
+ "UAH": {
+ "name": "યà«àª•à«àª°à«‡àª¨àª¿àª¯àª¨ હà«àª°àª¿àªµàª¿àª¨àª¿àª¯àª¾",
+ "symbol": "UAH"
+ },
+ "UGX": {
+ "name": "યà«àª—ાંડન શિલિંગ",
+ "symbol": "UGX"
+ },
+ "AED": {
+ "name": "યà«àª¨àª¾àªˆàªŸà«‡àª¡ આરબ અમિરાત દિરહામ",
+ "symbol": "AED"
+ },
+ "EUR": {
+ "name": "યà«àª°à«‹",
+ "symbol": "€"
+ },
+ "YER": {
+ "name": "યેમેની રિઆલ",
+ "symbol": "YER"
+ },
+ "RWF": {
+ "name": "રવાંડન ફà«àª°à«‡àª‚ક",
+ "symbol": "RWF"
+ },
+ "RUB": {
+ "name": "રશિયન રબલ",
+ "symbol": "RUB"
+ },
+ "RON": {
+ "name": "રોમાનિયન લેઉ",
+ "symbol": "RON"
+ },
+ "LAK": {
+ "name": "લાઓશિયન કિપ",
+ "symbol": "LAK"
+ },
+ "LTL": {
+ "name": "લિથà«àªàª¨àª¿àª¯àª¨ લિતાસ",
+ "symbol": "LTL"
+ },
+ "LRD": {
+ "name": "લિબેરિયન ડોલર",
+ "symbol": "LRD"
+ },
+ "LYD": {
+ "name": "લિબà«àª¯àª¨ દિનાર",
+ "symbol": "LYD"
+ },
+ "LBP": {
+ "name": "લેબેનિઠપાઉનà«àª¡",
+ "symbol": "LBP"
+ },
+ "LSL": {
+ "name": "લેસોથો લોતી",
+ "symbol": "LSL"
+ },
+ "VUV": {
+ "name": "વનૌતૠવાતà«",
+ "symbol": "VUV"
+ },
+ "VND": {
+ "name": "વિયેતનામીસ ડોંગ",
+ "symbol": "â‚«"
+ },
+ "VEF": {
+ "name": "વેનેàªà«àªàª²àª¨ બોલિવર",
+ "symbol": "VEF"
+ },
+ "LKR": {
+ "name": "શà«àª°à«€ લંકન રૂપી",
+ "symbol": "LKR"
+ },
+ "WST": {
+ "name": "સમોઅન તાલા",
+ "symbol": "WST"
+ },
+ "RSD": {
+ "name": "સરà«àª¬àª¿àª¯àª¨ દિનાર",
+ "symbol": "RSD"
+ },
+ "SYP": {
+ "name": "સાઇરિયન પાઉનà«àª¡",
+ "symbol": "SYP"
+ },
+ "SAR": {
+ "name": "સાઉદી રિયાલ",
+ "symbol": "SAR"
+ },
+ "STD": {
+ "name": "સાઓ ટૉમ àªàª¨à«àª¡ પà«àª°àª¿àª‚સાઇપ ડોબà«àª°àª¾",
+ "symbol": "STD"
+ },
+ "SGD": {
+ "name": "સિંગાપà«àª° ડૉલર",
+ "symbol": "SGD"
+ },
+ "SLL": {
+ "name": "સિàªàª°àª¾ લિઓનિઅન લિઓન",
+ "symbol": "SLL"
+ },
+ "SDG": {
+ "name": "સà«àª¦àª¾àª¨àª¿àª પાઉનà«àª¡",
+ "symbol": "SDG"
+ },
+ "SRD": {
+ "name": "સૂરીનામિઠડોલર",
+ "symbol": "SRD"
+ },
+ "SHP": {
+ "name": "સેંટ હેલેના પાઉનà«àª¡",
+ "symbol": "SHP"
+ },
+ "SCR": {
+ "name": "સેશેલોઈ રૂપી",
+ "symbol": "SCR"
+ },
+ "SOS": {
+ "name": "સોમાલી શિલિંગ",
+ "symbol": "SOS"
+ },
+ "SBD": {
+ "name": "સોલોમન આઇલેંડà«àª¸ ડોલર",
+ "symbol": "SBD"
+ },
+ "SZL": {
+ "name": "સà«àªµàª¾àªà«€ લિલાનà«àª—ેની",
+ "symbol": "SZL"
+ },
+ "CHF": {
+ "name": "સà«àªµàª¿àª¸ ફà«àª°à«‡àª‚ક",
+ "symbol": "CHF"
+ },
+ "SEK": {
+ "name": "સà«àªµà«€àª¡àª¿àª¶ કà«àª°à«‹àª¨àª¾",
+ "symbol": "SEK"
+ },
+ "HUF": {
+ "name": "હંગેરીયન ફોરિનà«àª¤",
+ "symbol": "HUF"
+ },
+ "HTG": {
+ "name": "હાઇટિઇન ગોરà«àª¡",
+ "symbol": "HTG"
+ },
+ "HKD": {
+ "name": "હોંગ કોંગ ડૉલર",
+ "symbol": "HK$"
+ },
+ "HNL": {
+ "name": "હોનà«àª¡à«àª¯à«àª°àª¨ લેમà«àªªàª¿àª°àª¾",
+ "symbol": "HNL"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/currency/guz.json b/library/intl/resources/currency/guz.json
new file mode 100644
index 000000000..4401f9af7
--- /dev/null
+++ b/library/intl/resources/currency/guz.json
@@ -0,0 +1,634 @@
+{
+ "AFN": {
+ "name": "AFN",
+ "symbol": "AFN"
+ },
+ "ALL": {
+ "name": "ALL",
+ "symbol": "ALL"
+ },
+ "AMD": {
+ "name": "AMD",
+ "symbol": "AMD"
+ },
+ "ANG": {
+ "name": "ANG",
+ "symbol": "ANG"
+ },
+ "MGA": {
+ "name": "Ariary ya Bukini",
+ "symbol": "MGA"
+ },
+ "ARS": {
+ "name": "ARS",
+ "symbol": "ARS"
+ },
+ "AWG": {
+ "name": "AWG",
+ "symbol": "AWG"
+ },
+ "AZN": {
+ "name": "AZN",
+ "symbol": "AZN"
+ },
+ "BAM": {
+ "name": "BAM",
+ "symbol": "BAM"
+ },
+ "BBD": {
+ "name": "BBD",
+ "symbol": "BBD"
+ },
+ "BDT": {
+ "name": "BDT",
+ "symbol": "BDT"
+ },
+ "BGN": {
+ "name": "BGN",
+ "symbol": "BGN"
+ },
+ "ETB": {
+ "name": "Bir ya Uhabeshi",
+ "symbol": "ETB"
+ },
+ "BMD": {
+ "name": "BMD",
+ "symbol": "BMD"
+ },
+ "BND": {
+ "name": "BND",
+ "symbol": "BND"
+ },
+ "BOB": {
+ "name": "BOB",
+ "symbol": "BOB"
+ },
+ "BRL": {
+ "name": "BRL",
+ "symbol": "R$"
+ },
+ "BSD": {
+ "name": "BSD",
+ "symbol": "BSD"
+ },
+ "BTN": {
+ "name": "BTN",
+ "symbol": "BTN"
+ },
+ "BYR": {
+ "name": "BYR",
+ "symbol": "BYR"
+ },
+ "BZD": {
+ "name": "BZD",
+ "symbol": "BZD"
+ },
+ "CLP": {
+ "name": "CLP",
+ "symbol": "CLP"
+ },
+ "COP": {
+ "name": "COP",
+ "symbol": "COP"
+ },
+ "CRC": {
+ "name": "CRC",
+ "symbol": "CRC"
+ },
+ "CUC": {
+ "name": "CUC",
+ "symbol": "CUC"
+ },
+ "CUP": {
+ "name": "CUP",
+ "symbol": "CUP"
+ },
+ "CZK": {
+ "name": "CZK",
+ "symbol": "CZK"
+ },
+ "GMD": {
+ "name": "Dalasi ya Gambia",
+ "symbol": "GMD"
+ },
+ "DZD": {
+ "name": "Dinari ya Aljeria",
+ "symbol": "DZD"
+ },
+ "BHD": {
+ "name": "Dinari ya Bahareni",
+ "symbol": "BHD"
+ },
+ "LYD": {
+ "name": "Dinari ya Libya",
+ "symbol": "LYD"
+ },
+ "TND": {
+ "name": "Dinari ya Tunisia",
+ "symbol": "TND"
+ },
+ "AED": {
+ "name": "Dirham ya Falme za Kiarabu",
+ "symbol": "AED"
+ },
+ "MAD": {
+ "name": "Dirham ya Moroko",
+ "symbol": "MAD"
+ },
+ "DKK": {
+ "name": "DKK",
+ "symbol": "DKK"
+ },
+ "STD": {
+ "name": "Dobra ya Sao Tome na Principe",
+ "symbol": "STD"
+ },
+ "AUD": {
+ "name": "Dola ya Australia",
+ "symbol": "A$"
+ },
+ "CAD": {
+ "name": "Dola ya Kanada",
+ "symbol": "CA$"
+ },
+ "LRD": {
+ "name": "Dola ya Liberia",
+ "symbol": "LRD"
+ },
+ "USD": {
+ "name": "Dola ya Marekani",
+ "symbol": "US$"
+ },
+ "NAD": {
+ "name": "Dola ya Namibia",
+ "symbol": "NAD"
+ },
+ "DOP": {
+ "name": "DOP",
+ "symbol": "DOP"
+ },
+ "CVE": {
+ "name": "Eskudo ya Kepuvede",
+ "symbol": "CVE"
+ },
+ "XOF": {
+ "name": "Faranga CFA BCEAO",
+ "symbol": "CFA"
+ },
+ "XAF": {
+ "name": "Faranga CFA BEAC",
+ "symbol": "FCFA"
+ },
+ "BIF": {
+ "name": "Faranga ya Burundi",
+ "symbol": "BIF"
+ },
+ "DJF": {
+ "name": "Faranga ya Jibuti",
+ "symbol": "DJF"
+ },
+ "KMF": {
+ "name": "Faranga ya Komoro",
+ "symbol": "KMF"
+ },
+ "CDF": {
+ "name": "Faranga ya Kongo",
+ "symbol": "CDF"
+ },
+ "RWF": {
+ "name": "Faranga ya Rwanda",
+ "symbol": "RWF"
+ },
+ "CHF": {
+ "name": "Faranga ya Uswisi",
+ "symbol": "CHF"
+ },
+ "FJD": {
+ "name": "FJD",
+ "symbol": "FJD"
+ },
+ "FKP": {
+ "name": "FKP",
+ "symbol": "FKP"
+ },
+ "GEL": {
+ "name": "GEL",
+ "symbol": "GEL"
+ },
+ "GHS": {
+ "name": "GHS",
+ "symbol": "GHS"
+ },
+ "GIP": {
+ "name": "GIP",
+ "symbol": "GIP"
+ },
+ "GNF": {
+ "name": "GNF",
+ "symbol": "GNF"
+ },
+ "GTQ": {
+ "name": "GTQ",
+ "symbol": "GTQ"
+ },
+ "GYD": {
+ "name": "GYD",
+ "symbol": "GYD"
+ },
+ "HKD": {
+ "name": "HKD",
+ "symbol": "HK$"
+ },
+ "HNL": {
+ "name": "HNL",
+ "symbol": "HNL"
+ },
+ "HRK": {
+ "name": "HRK",
+ "symbol": "HRK"
+ },
+ "HTG": {
+ "name": "HTG",
+ "symbol": "HTG"
+ },
+ "HUF": {
+ "name": "HUF",
+ "symbol": "HUF"
+ },
+ "IDR": {
+ "name": "IDR",
+ "symbol": "IDR"
+ },
+ "ILS": {
+ "name": "ILS",
+ "symbol": "₪"
+ },
+ "IQD": {
+ "name": "IQD",
+ "symbol": "IQD"
+ },
+ "IRR": {
+ "name": "IRR",
+ "symbol": "IRR"
+ },
+ "ISK": {
+ "name": "ISK",
+ "symbol": "ISK"
+ },
+ "JMD": {
+ "name": "JMD",
+ "symbol": "JMD"
+ },
+ "JOD": {
+ "name": "JOD",
+ "symbol": "JOD"
+ },
+ "KGS": {
+ "name": "KGS",
+ "symbol": "KGS"
+ },
+ "KHR": {
+ "name": "KHR",
+ "symbol": "KHR"
+ },
+ "KPW": {
+ "name": "KPW",
+ "symbol": "KPW"
+ },
+ "KRW": {
+ "name": "KRW",
+ "symbol": "â‚©"
+ },
+ "MWK": {
+ "name": "Kwacha ya Malawi",
+ "symbol": "MWK"
+ },
+ "ZMW": {
+ "name": "Kwacha ya Zambia",
+ "symbol": "ZMW"
+ },
+ "AOA": {
+ "name": "Kwanza ya Angola",
+ "symbol": "AOA"
+ },
+ "KWD": {
+ "name": "KWD",
+ "symbol": "KWD"
+ },
+ "KYD": {
+ "name": "KYD",
+ "symbol": "KYD"
+ },
+ "KZT": {
+ "name": "KZT",
+ "symbol": "KZT"
+ },
+ "LAK": {
+ "name": "LAK",
+ "symbol": "LAK"
+ },
+ "LBP": {
+ "name": "LBP",
+ "symbol": "LBP"
+ },
+ "SLL": {
+ "name": "Leoni",
+ "symbol": "SLL"
+ },
+ "SZL": {
+ "name": "Lilangeni",
+ "symbol": "SZL"
+ },
+ "LKR": {
+ "name": "LKR",
+ "symbol": "LKR"
+ },
+ "LSL": {
+ "name": "Loti ya Lesoto",
+ "symbol": "LSL"
+ },
+ "LTL": {
+ "name": "LTL",
+ "symbol": "LTL"
+ },
+ "MDL": {
+ "name": "MDL",
+ "symbol": "MDL"
+ },
+ "MKD": {
+ "name": "MKD",
+ "symbol": "MKD"
+ },
+ "MMK": {
+ "name": "MMK",
+ "symbol": "MMK"
+ },
+ "MNT": {
+ "name": "MNT",
+ "symbol": "MNT"
+ },
+ "MOP": {
+ "name": "MOP",
+ "symbol": "MOP"
+ },
+ "MVR": {
+ "name": "MVR",
+ "symbol": "MVR"
+ },
+ "MXN": {
+ "name": "MXN",
+ "symbol": "MX$"
+ },
+ "MYR": {
+ "name": "MYR",
+ "symbol": "MYR"
+ },
+ "MZN": {
+ "name": "MZN",
+ "symbol": "MZN"
+ },
+ "NGN": {
+ "name": "Naira ya Nijeria",
+ "symbol": "NGN"
+ },
+ "ERN": {
+ "name": "Nakfa ya Eritrea",
+ "symbol": "ERN"
+ },
+ "NIO": {
+ "name": "NIO",
+ "symbol": "NIO"
+ },
+ "NOK": {
+ "name": "NOK",
+ "symbol": "NOK"
+ },
+ "NPR": {
+ "name": "NPR",
+ "symbol": "NPR"
+ },
+ "NZD": {
+ "name": "NZD",
+ "symbol": "NZ$"
+ },
+ "OMR": {
+ "name": "OMR",
+ "symbol": "OMR"
+ },
+ "PAB": {
+ "name": "PAB",
+ "symbol": "PAB"
+ },
+ "EGP": {
+ "name": "Pauni ya Misri",
+ "symbol": "EGP"
+ },
+ "SHP": {
+ "name": "Pauni ya Santahelena",
+ "symbol": "SHP"
+ },
+ "SDG": {
+ "name": "Pauni ya Sudani",
+ "symbol": "SDG"
+ },
+ "GBP": {
+ "name": "Pauni ya Uingereza",
+ "symbol": "£"
+ },
+ "PEN": {
+ "name": "PEN",
+ "symbol": "PEN"
+ },
+ "PGK": {
+ "name": "PGK",
+ "symbol": "PGK"
+ },
+ "PHP": {
+ "name": "PHP",
+ "symbol": "PHP"
+ },
+ "PKR": {
+ "name": "PKR",
+ "symbol": "PKR"
+ },
+ "PLN": {
+ "name": "PLN",
+ "symbol": "PLN"
+ },
+ "BWP": {
+ "name": "Pula ya Botswana",
+ "symbol": "BWP"
+ },
+ "PYG": {
+ "name": "PYG",
+ "symbol": "PYG"
+ },
+ "QAR": {
+ "name": "QAR",
+ "symbol": "QAR"
+ },
+ "ZAR": {
+ "name": "Randi ya Afrika Kusini",
+ "symbol": "ZAR"
+ },
+ "SAR": {
+ "name": "Riyal ya Saudia",
+ "symbol": "SAR"
+ },
+ "RON": {
+ "name": "RON",
+ "symbol": "RON"
+ },
+ "RSD": {
+ "name": "RSD",
+ "symbol": "RSD"
+ },
+ "RUB": {
+ "name": "RUB",
+ "symbol": "RUB"
+ },
+ "INR": {
+ "name": "Rupia ya India",
+ "symbol": "₹"
+ },
+ "MUR": {
+ "name": "Rupia ya Morisi",
+ "symbol": "MUR"
+ },
+ "SCR": {
+ "name": "Rupia ya Shelisheli",
+ "symbol": "SCR"
+ },
+ "JPY": {
+ "name": "Sarafu ya Kijapani",
+ "symbol": "JPÂ¥"
+ },
+ "SBD": {
+ "name": "SBD",
+ "symbol": "SBD"
+ },
+ "SEK": {
+ "name": "SEK",
+ "symbol": "SEK"
+ },
+ "SGD": {
+ "name": "SGD",
+ "symbol": "SGD"
+ },
+ "KES": {
+ "name": "Shilingi ya Kenya",
+ "symbol": "Ksh"
+ },
+ "SOS": {
+ "name": "Shilingi ya Somalia",
+ "symbol": "SOS"
+ },
+ "TZS": {
+ "name": "Shilingi ya Tanzania",
+ "symbol": "TZS"
+ },
+ "UGX": {
+ "name": "Shilingi ya Uganda",
+ "symbol": "UGX"
+ },
+ "SRD": {
+ "name": "SRD",
+ "symbol": "SRD"
+ },
+ "SSP": {
+ "name": "SSP",
+ "symbol": "SSP"
+ },
+ "SVC": {
+ "name": "SVC",
+ "symbol": "SVC"
+ },
+ "SYP": {
+ "name": "SYP",
+ "symbol": "SYP"
+ },
+ "THB": {
+ "name": "THB",
+ "symbol": "THB"
+ },
+ "TJS": {
+ "name": "TJS",
+ "symbol": "TJS"
+ },
+ "TMT": {
+ "name": "TMT",
+ "symbol": "TMT"
+ },
+ "TOP": {
+ "name": "TOP",
+ "symbol": "TOP"
+ },
+ "TRY": {
+ "name": "TRY",
+ "symbol": "TRY"
+ },
+ "TTD": {
+ "name": "TTD",
+ "symbol": "TTD"
+ },
+ "TWD": {
+ "name": "TWD",
+ "symbol": "NT$"
+ },
+ "UAH": {
+ "name": "UAH",
+ "symbol": "UAH"
+ },
+ "MRO": {
+ "name": "Ugwiya ya Moritania",
+ "symbol": "MRO"
+ },
+ "UYU": {
+ "name": "UYU",
+ "symbol": "UYU"
+ },
+ "UZS": {
+ "name": "UZS",
+ "symbol": "UZS"
+ },
+ "VEF": {
+ "name": "VEF",
+ "symbol": "VEF"
+ },
+ "VND": {
+ "name": "VND",
+ "symbol": "â‚«"
+ },
+ "VUV": {
+ "name": "VUV",
+ "symbol": "VUV"
+ },
+ "WST": {
+ "name": "WST",
+ "symbol": "WST"
+ },
+ "XCD": {
+ "name": "XCD",
+ "symbol": "EC$"
+ },
+ "XPF": {
+ "name": "XPF",
+ "symbol": "CFPF"
+ },
+ "YER": {
+ "name": "YER",
+ "symbol": "YER"
+ },
+ "CNY": {
+ "name": "Yuan Renminbi ya China",
+ "symbol": "CNÂ¥"
+ },
+ "EUR": {
+ "name": "Yuro",
+ "symbol": "€"
+ },
+ "ZWL": {
+ "name": "ZWL",
+ "symbol": "ZWL"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/currency/ha.json b/library/intl/resources/currency/ha.json
new file mode 100644
index 000000000..dfaa389e5
--- /dev/null
+++ b/library/intl/resources/currency/ha.json
@@ -0,0 +1,634 @@
+{
+ "AFN": {
+ "name": "AFN",
+ "symbol": "AFN"
+ },
+ "ALL": {
+ "name": "ALL",
+ "symbol": "ALL"
+ },
+ "AMD": {
+ "name": "AMD",
+ "symbol": "AMD"
+ },
+ "ANG": {
+ "name": "ANG",
+ "symbol": "ANG"
+ },
+ "ARS": {
+ "name": "ARS",
+ "symbol": "ARS"
+ },
+ "AWG": {
+ "name": "AWG",
+ "symbol": "AWG"
+ },
+ "AZN": {
+ "name": "AZN",
+ "symbol": "AZN"
+ },
+ "BAM": {
+ "name": "BAM",
+ "symbol": "BAM"
+ },
+ "BBD": {
+ "name": "BBD",
+ "symbol": "BBD"
+ },
+ "BDT": {
+ "name": "BDT",
+ "symbol": "BDT"
+ },
+ "BGN": {
+ "name": "BGN",
+ "symbol": "BGN"
+ },
+ "BMD": {
+ "name": "BMD",
+ "symbol": "BMD"
+ },
+ "BND": {
+ "name": "BND",
+ "symbol": "BND"
+ },
+ "BOB": {
+ "name": "BOB",
+ "symbol": "BOB"
+ },
+ "BRL": {
+ "name": "BRL",
+ "symbol": "R$"
+ },
+ "BSD": {
+ "name": "BSD",
+ "symbol": "BSD"
+ },
+ "BTN": {
+ "name": "BTN",
+ "symbol": "BTN"
+ },
+ "BYR": {
+ "name": "BYR",
+ "symbol": "BYR"
+ },
+ "BZD": {
+ "name": "BZD",
+ "symbol": "BZD"
+ },
+ "CLP": {
+ "name": "CLP",
+ "symbol": "CLP"
+ },
+ "COP": {
+ "name": "COP",
+ "symbol": "COP"
+ },
+ "CRC": {
+ "name": "CRC",
+ "symbol": "CRC"
+ },
+ "CUC": {
+ "name": "CUC",
+ "symbol": "CUC"
+ },
+ "CUP": {
+ "name": "CUP",
+ "symbol": "CUP"
+ },
+ "CZK": {
+ "name": "CZK",
+ "symbol": "CZK"
+ },
+ "USD": {
+ "name": "Dalar Amurka",
+ "symbol": "US$"
+ },
+ "CAD": {
+ "name": "Dalar Kanada",
+ "symbol": "CA$"
+ },
+ "LRD": {
+ "name": "Dalar Laberiya",
+ "symbol": "LRD"
+ },
+ "NAD": {
+ "name": "Dalar Namibiya",
+ "symbol": "NAD"
+ },
+ "AUD": {
+ "name": "Dalar Ostareliya",
+ "symbol": "A$"
+ },
+ "DKK": {
+ "name": "DKK",
+ "symbol": "DKK"
+ },
+ "DOP": {
+ "name": "DOP",
+ "symbol": "DOP"
+ },
+ "GBP": {
+ "name": "Fam kin Ingila",
+ "symbol": "£"
+ },
+ "EGP": {
+ "name": "Fam kin Masar",
+ "symbol": "EGP"
+ },
+ "SHP": {
+ "name": "Fam kin San Helena",
+ "symbol": "SHP"
+ },
+ "SDG": {
+ "name": "Fam kin Sudan",
+ "symbol": "SDG"
+ },
+ "FJD": {
+ "name": "FJD",
+ "symbol": "FJD"
+ },
+ "FKP": {
+ "name": "FKP",
+ "symbol": "FKP"
+ },
+ "GEL": {
+ "name": "GEL",
+ "symbol": "GEL"
+ },
+ "GHS": {
+ "name": "GHS",
+ "symbol": "GHS"
+ },
+ "GIP": {
+ "name": "GIP",
+ "symbol": "GIP"
+ },
+ "GNF": {
+ "name": "GNF",
+ "symbol": "GNF"
+ },
+ "GTQ": {
+ "name": "GTQ",
+ "symbol": "GTQ"
+ },
+ "GYD": {
+ "name": "GYD",
+ "symbol": "GYD"
+ },
+ "HKD": {
+ "name": "HKD",
+ "symbol": "HK$"
+ },
+ "HNL": {
+ "name": "HNL",
+ "symbol": "HNL"
+ },
+ "HRK": {
+ "name": "HRK",
+ "symbol": "HRK"
+ },
+ "HTG": {
+ "name": "HTG",
+ "symbol": "HTG"
+ },
+ "HUF": {
+ "name": "HUF",
+ "symbol": "HUF"
+ },
+ "IDR": {
+ "name": "IDR",
+ "symbol": "IDR"
+ },
+ "ILS": {
+ "name": "ILS",
+ "symbol": "₪"
+ },
+ "IQD": {
+ "name": "IQD",
+ "symbol": "IQD"
+ },
+ "IRR": {
+ "name": "IRR",
+ "symbol": "IRR"
+ },
+ "ISK": {
+ "name": "ISK",
+ "symbol": "ISK"
+ },
+ "JMD": {
+ "name": "JMD",
+ "symbol": "JMD"
+ },
+ "JOD": {
+ "name": "JOD",
+ "symbol": "JOD"
+ },
+ "KGS": {
+ "name": "KGS",
+ "symbol": "KGS"
+ },
+ "KHR": {
+ "name": "KHR",
+ "symbol": "KHR"
+ },
+ "KPW": {
+ "name": "KPW",
+ "symbol": "KPW"
+ },
+ "KRW": {
+ "name": "KRW",
+ "symbol": "â‚©"
+ },
+ "ZAR": {
+ "name": "KuÉ—in Afirka Ta Kudu",
+ "symbol": "ZAR"
+ },
+ "DZD": {
+ "name": "KuÉ—in Aljeriya",
+ "symbol": "DZD"
+ },
+ "AOA": {
+ "name": "KuÉ—in Angola",
+ "symbol": "AOA"
+ },
+ "BHD": {
+ "name": "KuÉ—in Baharan",
+ "symbol": "BHD"
+ },
+ "BWP": {
+ "name": "KuÉ—in Baswana",
+ "symbol": "BWP"
+ },
+ "BIF": {
+ "name": "KuÉ—in Burundi",
+ "symbol": "BIF"
+ },
+ "CNY": {
+ "name": "KuÉ—in Caina\/Sin",
+ "symbol": "CNÂ¥"
+ },
+ "ERN": {
+ "name": "KuÉ—in Eritireya",
+ "symbol": "ERN"
+ },
+ "GMD": {
+ "name": "KuÉ—in Gambiya",
+ "symbol": "GMD"
+ },
+ "ETB": {
+ "name": "KuÉ—in Habasha",
+ "symbol": "ETB"
+ },
+ "AED": {
+ "name": "KuÉ—in HaÉ—aÉ—É—iyar Daular Larabawa",
+ "symbol": "AED"
+ },
+ "INR": {
+ "name": "KuÉ—in Indiya",
+ "symbol": "₹"
+ },
+ "JPY": {
+ "name": "KuÉ—in Japan",
+ "symbol": "JPÂ¥"
+ },
+ "DJF": {
+ "name": "KuÉ—in Jibuti",
+ "symbol": "DJF"
+ },
+ "CDF": {
+ "name": "KuÉ—in Kongo",
+ "symbol": "CDF"
+ },
+ "KMF": {
+ "name": "KuÉ—in Kwamoras",
+ "symbol": "KMF"
+ },
+ "LSL": {
+ "name": "KuÉ—in Lesoto",
+ "symbol": "LSL"
+ },
+ "LYD": {
+ "name": "KuÉ—in Libiya",
+ "symbol": "LYD"
+ },
+ "SZL": {
+ "name": "KuÉ—in Lilangeni",
+ "symbol": "SZL"
+ },
+ "MGA": {
+ "name": "KuÉ—in Madagaskar",
+ "symbol": "MGA"
+ },
+ "MWK": {
+ "name": "KuÉ—in Malawi",
+ "symbol": "MWK"
+ },
+ "MAD": {
+ "name": "KuÉ—in Maroko",
+ "symbol": "MAD"
+ },
+ "MRO": {
+ "name": "KuÉ—in Moritaniya",
+ "symbol": "MRO"
+ },
+ "MUR": {
+ "name": "KuÉ—in Moritus",
+ "symbol": "MUR"
+ },
+ "RWF": {
+ "name": "KuÉ—in Ruwanda",
+ "symbol": "RWF"
+ },
+ "SCR": {
+ "name": "KuÉ—in Saishal",
+ "symbol": "SCR"
+ },
+ "SLL": {
+ "name": "KuÉ—in Salewo",
+ "symbol": "SLL"
+ },
+ "STD": {
+ "name": "KuÉ—in Sawo Tome da Paransip",
+ "symbol": "STD"
+ },
+ "XAF": {
+ "name": "KuÉ—in Sefa na Afirka Ta Tsakiya",
+ "symbol": "FCFA"
+ },
+ "XOF": {
+ "name": "KuÉ—in Sefa na Afirka Ta Yamma",
+ "symbol": "CFA"
+ },
+ "CHF": {
+ "name": "KuÉ—in Suwizalan",
+ "symbol": "CHF"
+ },
+ "TND": {
+ "name": "KuÉ—in Tunisiya",
+ "symbol": "TND"
+ },
+ "CVE": {
+ "name": "KuÉ—in Tsibiran Kap Barde",
+ "symbol": "CVE"
+ },
+ "ZMW": {
+ "name": "KuÉ—in Zambiya",
+ "symbol": "ZMW"
+ },
+ "KWD": {
+ "name": "KWD",
+ "symbol": "KWD"
+ },
+ "KYD": {
+ "name": "KYD",
+ "symbol": "KYD"
+ },
+ "KZT": {
+ "name": "KZT",
+ "symbol": "KZT"
+ },
+ "LAK": {
+ "name": "LAK",
+ "symbol": "LAK"
+ },
+ "LBP": {
+ "name": "LBP",
+ "symbol": "LBP"
+ },
+ "LKR": {
+ "name": "LKR",
+ "symbol": "LKR"
+ },
+ "LTL": {
+ "name": "LTL",
+ "symbol": "LTL"
+ },
+ "MDL": {
+ "name": "MDL",
+ "symbol": "MDL"
+ },
+ "MKD": {
+ "name": "MKD",
+ "symbol": "MKD"
+ },
+ "MMK": {
+ "name": "MMK",
+ "symbol": "MMK"
+ },
+ "MNT": {
+ "name": "MNT",
+ "symbol": "MNT"
+ },
+ "MOP": {
+ "name": "MOP",
+ "symbol": "MOP"
+ },
+ "MVR": {
+ "name": "MVR",
+ "symbol": "MVR"
+ },
+ "MXN": {
+ "name": "MXN",
+ "symbol": "MX$"
+ },
+ "MYR": {
+ "name": "MYR",
+ "symbol": "MYR"
+ },
+ "MZN": {
+ "name": "MZN",
+ "symbol": "MZN"
+ },
+ "NGN": {
+ "name": "Naira",
+ "symbol": "₦"
+ },
+ "NIO": {
+ "name": "NIO",
+ "symbol": "NIO"
+ },
+ "NOK": {
+ "name": "NOK",
+ "symbol": "NOK"
+ },
+ "NPR": {
+ "name": "NPR",
+ "symbol": "NPR"
+ },
+ "NZD": {
+ "name": "NZD",
+ "symbol": "NZ$"
+ },
+ "OMR": {
+ "name": "OMR",
+ "symbol": "OMR"
+ },
+ "PAB": {
+ "name": "PAB",
+ "symbol": "PAB"
+ },
+ "PEN": {
+ "name": "PEN",
+ "symbol": "PEN"
+ },
+ "PGK": {
+ "name": "PGK",
+ "symbol": "PGK"
+ },
+ "PHP": {
+ "name": "PHP",
+ "symbol": "PHP"
+ },
+ "PKR": {
+ "name": "PKR",
+ "symbol": "PKR"
+ },
+ "PLN": {
+ "name": "PLN",
+ "symbol": "PLN"
+ },
+ "PYG": {
+ "name": "PYG",
+ "symbol": "PYG"
+ },
+ "QAR": {
+ "name": "QAR",
+ "symbol": "QAR"
+ },
+ "SAR": {
+ "name": "Riyal",
+ "symbol": "SAR"
+ },
+ "RON": {
+ "name": "RON",
+ "symbol": "RON"
+ },
+ "RSD": {
+ "name": "RSD",
+ "symbol": "RSD"
+ },
+ "RUB": {
+ "name": "RUB",
+ "symbol": "RUB"
+ },
+ "SBD": {
+ "name": "SBD",
+ "symbol": "SBD"
+ },
+ "SEK": {
+ "name": "SEK",
+ "symbol": "SEK"
+ },
+ "SGD": {
+ "name": "SGD",
+ "symbol": "SGD"
+ },
+ "SRD": {
+ "name": "SRD",
+ "symbol": "SRD"
+ },
+ "SSP": {
+ "name": "SSP",
+ "symbol": "SSP"
+ },
+ "UGX": {
+ "name": "Sule Yuganda",
+ "symbol": "UGX"
+ },
+ "KES": {
+ "name": "Sulen Kenya",
+ "symbol": "KES"
+ },
+ "SOS": {
+ "name": "Sulen Somaliya",
+ "symbol": "SOS"
+ },
+ "TZS": {
+ "name": "Sulen Tanzaniya",
+ "symbol": "TZS"
+ },
+ "SVC": {
+ "name": "SVC",
+ "symbol": "SVC"
+ },
+ "SYP": {
+ "name": "SYP",
+ "symbol": "SYP"
+ },
+ "THB": {
+ "name": "THB",
+ "symbol": "THB"
+ },
+ "TJS": {
+ "name": "TJS",
+ "symbol": "TJS"
+ },
+ "TMT": {
+ "name": "TMT",
+ "symbol": "TMT"
+ },
+ "TOP": {
+ "name": "TOP",
+ "symbol": "TOP"
+ },
+ "TRY": {
+ "name": "TRY",
+ "symbol": "TRY"
+ },
+ "TTD": {
+ "name": "TTD",
+ "symbol": "TTD"
+ },
+ "TWD": {
+ "name": "TWD",
+ "symbol": "NT$"
+ },
+ "UAH": {
+ "name": "UAH",
+ "symbol": "UAH"
+ },
+ "UYU": {
+ "name": "UYU",
+ "symbol": "UYU"
+ },
+ "UZS": {
+ "name": "UZS",
+ "symbol": "UZS"
+ },
+ "VEF": {
+ "name": "VEF",
+ "symbol": "VEF"
+ },
+ "VND": {
+ "name": "VND",
+ "symbol": "â‚«"
+ },
+ "VUV": {
+ "name": "VUV",
+ "symbol": "VUV"
+ },
+ "WST": {
+ "name": "WST",
+ "symbol": "WST"
+ },
+ "XCD": {
+ "name": "XCD",
+ "symbol": "EC$"
+ },
+ "XPF": {
+ "name": "XPF",
+ "symbol": "CFPF"
+ },
+ "YER": {
+ "name": "YER",
+ "symbol": "YER"
+ },
+ "EUR": {
+ "name": "Yuro",
+ "symbol": "€"
+ },
+ "ZWL": {
+ "name": "ZWL",
+ "symbol": "ZWL"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/currency/he.json b/library/intl/resources/currency/he.json
new file mode 100644
index 000000000..2b98751c7
--- /dev/null
+++ b/library/intl/resources/currency/he.json
@@ -0,0 +1,634 @@
+{
+ "ZWL": {
+ "name": "ZWL",
+ "symbol": "ZWL"
+ },
+ "MRO": {
+ "name": "×וגוויה מ×וריטני",
+ "symbol": "MRO"
+ },
+ "EUR": {
+ "name": "×ירו",
+ "symbol": "€"
+ },
+ "CVE": {
+ "name": "×סקודו ×›×£ ורדה",
+ "symbol": "CVE"
+ },
+ "AFN": {
+ "name": "×פגני ×פגני",
+ "symbol": "AFN"
+ },
+ "MGA": {
+ "name": "×רי×רי מלגשי",
+ "symbol": "MGA"
+ },
+ "THB": {
+ "name": "בהט ת×ילנדי",
+ "symbol": "฿"
+ },
+ "BOB": {
+ "name": "בוליבי×נו",
+ "symbol": "BOB"
+ },
+ "VEF": {
+ "name": "בוליבר ונצו×לי",
+ "symbol": "VEF"
+ },
+ "ETB": {
+ "name": "ביר ×תיופי",
+ "symbol": "ETB"
+ },
+ "PAB": {
+ "name": "בלבו××” פנמי",
+ "symbol": "PAB"
+ },
+ "PYG": {
+ "name": "גוורני פר×גוו××™",
+ "symbol": "PYG"
+ },
+ "HTG": {
+ "name": "גורד ×”×יטי",
+ "symbol": "HTG"
+ },
+ "ANG": {
+ "name": "גילדר של ×”×× ×˜×™×œ×™× ×”×”×•×œ× ×“×™×™×",
+ "symbol": "ANG"
+ },
+ "UAH": {
+ "name": "גריבנה ×וקר××™× ×™",
+ "symbol": "UAH"
+ },
+ "STD": {
+ "name": "דוברה של סן טומה ופרינסיפה",
+ "symbol": "STD"
+ },
+ "AUD": {
+ "name": "דולר ×וסטרלי",
+ "symbol": "A$"
+ },
+ "SBD": {
+ "name": "דולר ××™×™ שלמה",
+ "symbol": "SBD"
+ },
+ "USD": {
+ "name": "דולר ×מריק××™",
+ "symbol": "$"
+ },
+ "BSD": {
+ "name": "דולר בה×מי",
+ "symbol": "BSD"
+ },
+ "BZD": {
+ "name": "דולר בליזי",
+ "symbol": "BZD"
+ },
+ "BBD": {
+ "name": "דולר ברבדי×× ×™",
+ "symbol": "BBD"
+ },
+ "BND": {
+ "name": "דולר ברוניי",
+ "symbol": "BND"
+ },
+ "BMD": {
+ "name": "דולר ברמודה",
+ "symbol": "BMD"
+ },
+ "JMD": {
+ "name": "דולר ג׳מייקני",
+ "symbol": "JMD"
+ },
+ "GYD": {
+ "name": "דולר ×’×™×× ×™",
+ "symbol": "GYD"
+ },
+ "HKD": {
+ "name": "דולר הונג קונגי",
+ "symbol": "HK$"
+ },
+ "TWD": {
+ "name": "דולר טייוו×× ×™ חדש",
+ "symbol": "NT$"
+ },
+ "TTD": {
+ "name": "דולר טרינידדי",
+ "symbol": "TTD"
+ },
+ "LRD": {
+ "name": "דולר ליברי",
+ "symbol": "LRD"
+ },
+ "XCD": {
+ "name": "דולר מזרח קריבי",
+ "symbol": "EC$"
+ },
+ "NZD": {
+ "name": "דולר ניו זילנדי",
+ "symbol": "NZ$"
+ },
+ "NAD": {
+ "name": "דולר נמיבי",
+ "symbol": "NAD"
+ },
+ "SRD": {
+ "name": "דולר סורינ×מי",
+ "symbol": "SRD"
+ },
+ "SGD": {
+ "name": "דולר סינגפורי",
+ "symbol": "SGD"
+ },
+ "FJD": {
+ "name": "דולר פיג׳י",
+ "symbol": "FJD"
+ },
+ "KYD": {
+ "name": "דולר קיימ×× ×™",
+ "symbol": "KYD"
+ },
+ "CAD": {
+ "name": "דולר קנדי",
+ "symbol": "CA$"
+ },
+ "VND": {
+ "name": "דונג וייטנ×מי",
+ "symbol": "â‚«"
+ },
+ "DZD": {
+ "name": "דינר ×לג׳ירי",
+ "symbol": "DZD"
+ },
+ "BHD": {
+ "name": "דינר בחרייני",
+ "symbol": "BHD"
+ },
+ "TND": {
+ "name": "דינר טוניס××™",
+ "symbol": "TND"
+ },
+ "JOD": {
+ "name": "דינר ירדני",
+ "symbol": "JOD"
+ },
+ "KWD": {
+ "name": "דינר כוויתי",
+ "symbol": "KWD"
+ },
+ "LYD": {
+ "name": "דינר לובי",
+ "symbol": "LYD"
+ },
+ "MKD": {
+ "name": "דינר מקדוני",
+ "symbol": "MKD"
+ },
+ "RSD": {
+ "name": "דינר סרבי",
+ "symbol": "RSD"
+ },
+ "IQD": {
+ "name": "דינר עירקי",
+ "symbol": "IQD"
+ },
+ "MAD": {
+ "name": "×“×™×¨×”× ×ž×¨×•×§××™",
+ "symbol": "MAD"
+ },
+ "AED": {
+ "name": "×“×™×¨×”× ×©×œ ×יחוד הנסיכויות הערביות",
+ "symbol": "AED"
+ },
+ "GMD": {
+ "name": "דל×סי גמבי",
+ "symbol": "GMD"
+ },
+ "AMD": {
+ "name": "דר×× ×רמני",
+ "symbol": "AMD"
+ },
+ "VUV": {
+ "name": "ו×טו של ונו×טו",
+ "symbol": "VUV"
+ },
+ "KRW": {
+ "name": "וון דרו×-קורי×× ×™",
+ "symbol": "â‚©"
+ },
+ "KPW": {
+ "name": "וון צפון-קורי×× ×™",
+ "symbol": "KPW"
+ },
+ "PLN": {
+ "name": "זלוטי פולני",
+ "symbol": "PLN"
+ },
+ "WST": {
+ "name": "ט×לה סמו××™",
+ "symbol": "WST"
+ },
+ "BDT": {
+ "name": "ט×קה בנגלדשי",
+ "symbol": "BDT"
+ },
+ "MNT": {
+ "name": "טוגריק מונגולי",
+ "symbol": "MNT"
+ },
+ "KZT": {
+ "name": "טנגה קזחסטני",
+ "symbol": "KZT"
+ },
+ "CNY": {
+ "name": "יו×ן סיני",
+ "symbol": "CNÂ¥"
+ },
+ "JPY": {
+ "name": "ין יפני",
+ "symbol": "JPÂ¥"
+ },
+ "DKK": {
+ "name": "כתר דני",
+ "symbol": "DKK"
+ },
+ "NOK": {
+ "name": "כתר נורבגי",
+ "symbol": "NOK"
+ },
+ "SEK": {
+ "name": "כתר שוודי",
+ "symbol": "SEK"
+ },
+ "RON": {
+ "name": "ל×ו רומני",
+ "symbol": "RON"
+ },
+ "BGN": {
+ "name": "לב בולגרי",
+ "symbol": "BGN"
+ },
+ "LSL": {
+ "name": "לוטי לסותי",
+ "symbol": "LSL"
+ },
+ "MDL": {
+ "name": "לי×ו מולדובני",
+ "symbol": "MDL"
+ },
+ "SLL": {
+ "name": "לי×ון סיירה ל×וני",
+ "symbol": "SLL"
+ },
+ "LTL": {
+ "name": "×œ×™×˜× ×œ×™×˜××™",
+ "symbol": "LTL"
+ },
+ "SZL": {
+ "name": "לילנגני סווזי",
+ "symbol": "SZL"
+ },
+ "SSP": {
+ "name": "לירה דרו×-סודנית",
+ "symbol": "SSP"
+ },
+ "TRY": {
+ "name": "לירה טורקית חדשה",
+ "symbol": "TRY"
+ },
+ "LBP": {
+ "name": "לירה לבנונית",
+ "symbol": "LBP"
+ },
+ "EGP": {
+ "name": "לירה מצרית",
+ "symbol": "EGP"
+ },
+ "SDG": {
+ "name": "לירה סודנית",
+ "symbol": "SDG"
+ },
+ "SYP": {
+ "name": "לירה סורית",
+ "symbol": "SYP"
+ },
+ "GBP": {
+ "name": "לירה שטרלינג",
+ "symbol": "£"
+ },
+ "FKP": {
+ "name": "לירה של ××™×™ פוקלנד",
+ "symbol": "FKP"
+ },
+ "HNL": {
+ "name": "למפירה הונדורי",
+ "symbol": "HNL"
+ },
+ "ALL": {
+ "name": "לק ×לבני",
+ "symbol": "ALL"
+ },
+ "GEL": {
+ "name": "לרי ×’×ורגי",
+ "symbol": "GEL"
+ },
+ "AZN": {
+ "name": "מ×× ×ט ×זרביג׳ני",
+ "symbol": "AZN"
+ },
+ "TMT": {
+ "name": "מ×× ×ט טורקמני",
+ "symbol": "TMT"
+ },
+ "BAM": {
+ "name": "מ×רק בר המרה של בוסניה־הרצגובינה",
+ "symbol": "BAM"
+ },
+ "MZN": {
+ "name": "מטיקל מוזמביני",
+ "symbol": "MZN"
+ },
+ "NGN": {
+ "name": "× ×ירה ניגרי",
+ "symbol": "NGN"
+ },
+ "ERN": {
+ "name": "× ×קפה ×ריתר××™",
+ "symbol": "ERN"
+ },
+ "BTN": {
+ "name": "× ×’×•×œ×˜×¨×•× ×‘×”×•×˜× ×™",
+ "symbol": "BTN"
+ },
+ "GHS": {
+ "name": "סדי ×’×× ×™",
+ "symbol": "GHS"
+ },
+ "PEN": {
+ "name": "סול פרו×× ×™ חדש",
+ "symbol": "PEN"
+ },
+ "UZS": {
+ "name": "×¡×•× ×וזבקי",
+ "symbol": "UZS"
+ },
+ "KGS": {
+ "name": "×¡×•× ×§×™×¨×’×™×–×™",
+ "symbol": "KGS"
+ },
+ "TJS": {
+ "name": "סומוני טג׳קיסטני",
+ "symbol": "TJS"
+ },
+ "GIP": {
+ "name": "פ×ונד גיברלטר",
+ "symbol": "GIP"
+ },
+ "SHP": {
+ "name": "פ×ונד סנט הלני",
+ "symbol": "SHP"
+ },
+ "TOP": {
+ "name": "פ×× ×’×” טונגי",
+ "symbol": "TOP"
+ },
+ "BWP": {
+ "name": "פולה בוצוו×× ×™",
+ "symbol": "BWP"
+ },
+ "HUF": {
+ "name": "פורינט הונגרי",
+ "symbol": "HUF"
+ },
+ "DOP": {
+ "name": "פזו דומיניקני",
+ "symbol": "DOP"
+ },
+ "MXN": {
+ "name": "פזו מקסיקני",
+ "symbol": "MX$"
+ },
+ "PHP": {
+ "name": "פזו פיליפיני",
+ "symbol": "PHP"
+ },
+ "CUP": {
+ "name": "פזו קובני",
+ "symbol": "CUP"
+ },
+ "CUC": {
+ "name": "פזו קובני להמרה",
+ "symbol": "CUC"
+ },
+ "MOP": {
+ "name": "פטקה של מק×ו",
+ "symbol": "MOP"
+ },
+ "AWG": {
+ "name": "פלורין של ×רובה",
+ "symbol": "AWG"
+ },
+ "UYU": {
+ "name": "פסו ×ורוגוו××™",
+ "symbol": "UYU"
+ },
+ "ARS": {
+ "name": "פסו ×רגנטינ××™",
+ "symbol": "ARS"
+ },
+ "CLP": {
+ "name": "פסו צ׳יל×× ×™",
+ "symbol": "CLP"
+ },
+ "COP": {
+ "name": "פסו קולומבי×× ×™",
+ "symbol": "COP"
+ },
+ "XOF": {
+ "name": "פרנק CFA BCEAO",
+ "symbol": "CFA"
+ },
+ "XAF": {
+ "name": "פרנק CFA BEAC",
+ "symbol": "FCFA"
+ },
+ "BIF": {
+ "name": "פרנק בורונדי",
+ "symbol": "BIF"
+ },
+ "DJF": {
+ "name": "פרנק ג׳יבוטי",
+ "symbol": "DJF"
+ },
+ "GNF": {
+ "name": "פרנק ×’×™× ××™",
+ "symbol": "GNF"
+ },
+ "XPF": {
+ "name": "פרנק פולינזיה הצרפתית",
+ "symbol": "CFPF"
+ },
+ "KMF": {
+ "name": "פרנק קומורו××™",
+ "symbol": "KMF"
+ },
+ "CDF": {
+ "name": "פרנק קונגולזי",
+ "symbol": "CDF"
+ },
+ "RWF": {
+ "name": "פרנק רו×נדי",
+ "symbol": "RWF"
+ },
+ "CHF": {
+ "name": "פרנק שוויצרי",
+ "symbol": "CHF"
+ },
+ "AOA": {
+ "name": "קו×× ×–×” ×נגולי",
+ "symbol": "AOA"
+ },
+ "MWK": {
+ "name": "קו×צ׳ה מל×וי",
+ "symbol": "MWK"
+ },
+ "ZMW": {
+ "name": "קוו×צ׳ה זמבית",
+ "symbol": "ZMW"
+ },
+ "SVC": {
+ "name": "קולון סלבדורי",
+ "symbol": "SVC"
+ },
+ "CRC": {
+ "name": "קולון קוסטה־ריקני",
+ "symbol": "CRC"
+ },
+ "HRK": {
+ "name": "קונה קרו×טי",
+ "symbol": "HRK"
+ },
+ "NIO": {
+ "name": "קורדובה ניקר××’×™",
+ "symbol": "NIO"
+ },
+ "CZK": {
+ "name": "קורונה צ׳כית",
+ "symbol": "CZK"
+ },
+ "MMK": {
+ "name": "קי×ט מי×נמרי",
+ "symbol": "MMK"
+ },
+ "PGK": {
+ "name": "קינה של פפו××” ×’×™× ××” החדשה",
+ "symbol": "PGK"
+ },
+ "LAK": {
+ "name": "קיפ ל××™",
+ "symbol": "LAK"
+ },
+ "GTQ": {
+ "name": "קצל גו×טמלי",
+ "symbol": "GTQ"
+ },
+ "ISK": {
+ "name": "קרונה ×יסלנדית",
+ "symbol": "ISK"
+ },
+ "ZAR": {
+ "name": "ר×נד ×“×¨×•× ×פריק××™",
+ "symbol": "ZAR"
+ },
+ "BYR": {
+ "name": "רובל בלרוסי",
+ "symbol": "BYR"
+ },
+ "RUB": {
+ "name": "רובל רוסי",
+ "symbol": "RUB"
+ },
+ "INR": {
+ "name": "רופי הודי",
+ "symbol": "₹"
+ },
+ "MUR": {
+ "name": "רופי מ×וריציני",
+ "symbol": "MUR"
+ },
+ "NPR": {
+ "name": "רופי נפ×לי",
+ "symbol": "NPR"
+ },
+ "SCR": {
+ "name": "רופי סיישלי",
+ "symbol": "SCR"
+ },
+ "LKR": {
+ "name": "רופי סרי לנקי",
+ "symbol": "LKR"
+ },
+ "PKR": {
+ "name": "רופי פקיסטני",
+ "symbol": "PKR"
+ },
+ "IDR": {
+ "name": "רופיה ×ינדונזית",
+ "symbol": "IDR"
+ },
+ "MVR": {
+ "name": "רופיה מלדיבית",
+ "symbol": "MVR"
+ },
+ "IRR": {
+ "name": "רי×ל ×יר×× ×™",
+ "symbol": "IRR"
+ },
+ "BRL": {
+ "name": "רי×ל ברזיל××™",
+ "symbol": "R$"
+ },
+ "SAR": {
+ "name": "רי×ל סעודי",
+ "symbol": "SAR"
+ },
+ "OMR": {
+ "name": "רי×ל עומ×× ×™",
+ "symbol": "OMR"
+ },
+ "QAR": {
+ "name": "רי×ל קט×רי",
+ "symbol": "QAR"
+ },
+ "YER": {
+ "name": "רי×ל תימני",
+ "symbol": "YER"
+ },
+ "KHR": {
+ "name": "ריל קמבודי",
+ "symbol": "KHR"
+ },
+ "MYR": {
+ "name": "רינגיט מלזי",
+ "symbol": "MYR"
+ },
+ "ILS": {
+ "name": "ש״ח",
+ "symbol": "₪"
+ },
+ "UGX": {
+ "name": "שילינג ×וגנדי",
+ "symbol": "UGX"
+ },
+ "TZS": {
+ "name": "שילינג טנזני",
+ "symbol": "TZS"
+ },
+ "SOS": {
+ "name": "שילינג סומ×לי",
+ "symbol": "SOS"
+ },
+ "KES": {
+ "name": "שילינג קניי×תי",
+ "symbol": "KES"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/currency/hi.json b/library/intl/resources/currency/hi.json
new file mode 100644
index 000000000..cda5b772b
--- /dev/null
+++ b/library/intl/resources/currency/hi.json
@@ -0,0 +1,634 @@
+{
+ "XOF": {
+ "name": "[CFA] फ़à¥à¤°à¥ˆà¤‚क [BCEAO]",
+ "symbol": "CFA"
+ },
+ "XAF": {
+ "name": "[CFA] फ़à¥à¤°à¥ˆà¤‚क [BEAC]",
+ "symbol": "FCFA"
+ },
+ "XPF": {
+ "name": "[CFP] फ़à¥à¤°à¥ˆà¤‚क",
+ "symbol": "CFPF"
+ },
+ "SVC": {
+ "name": "SVC",
+ "symbol": "SVC"
+ },
+ "ZWL": {
+ "name": "ZWL",
+ "symbol": "ZWL"
+ },
+ "AOA": {
+ "name": "अंगोला कà¥à¤µà¤¾à¤‚ज़ा",
+ "symbol": "AOA"
+ },
+ "AZN": {
+ "name": "अज़रबैजानी मैनेट",
+ "symbol": "AZN"
+ },
+ "AFN": {
+ "name": "अफ़गान अफ़गानी",
+ "symbol": "AFN"
+ },
+ "AWG": {
+ "name": "अरूबाई फ़à¥à¤²à¥‹à¤°à¤¿à¤¨",
+ "symbol": "AWG"
+ },
+ "ARS": {
+ "name": "अरà¥à¤œà¥‡à¤‚टीनी पीसो",
+ "symbol": "ARS"
+ },
+ "DZD": {
+ "name": "अलà¥à¤œà¥€à¤°à¤¿à¤¯à¤¾à¤ˆ दिनार",
+ "symbol": "DZD"
+ },
+ "ALL": {
+ "name": "अलà¥à¤¬à¤¾à¤¨à¤¿à¤¯à¤¾à¤ˆ लेक",
+ "symbol": "ALL"
+ },
+ "ISK": {
+ "name": "आइसलैंडिक कà¥à¤°à¥‹à¤¨à¤¾",
+ "symbol": "ISK"
+ },
+ "AMD": {
+ "name": "आरà¥à¤®à¥‡à¤¨à¤¿à¤¯à¤¾à¤ˆ दà¥à¤°à¤¾à¤®",
+ "symbol": "AMD"
+ },
+ "IDR": {
+ "name": "इंडोनेशियाई रà¥à¤ªà¤¿à¤¯à¤¾",
+ "symbol": "IDR"
+ },
+ "ILS": {
+ "name": "इज़राइली नà¥à¤¯à¥‚ शेकेल",
+ "symbol": "₪"
+ },
+ "ETB": {
+ "name": "इथियोपियन बिर",
+ "symbol": "ETB"
+ },
+ "IQD": {
+ "name": "इराकी दिनार",
+ "symbol": "IQD"
+ },
+ "ERN": {
+ "name": "इरीटà¥à¤°à¤¿à¤¯à¤¨ नाकà¥à¤«à¤¼à¤¾",
+ "symbol": "ERN"
+ },
+ "IRR": {
+ "name": "ईरानी रियाल",
+ "symbol": "IRR"
+ },
+ "UZS": {
+ "name": "उज़à¥à¤¬à¥‡à¤•à¤¿à¤¸à¥à¤¤à¤¾à¤¨ सोम",
+ "symbol": "UZS"
+ },
+ "KPW": {
+ "name": "उतà¥à¤¤à¤° कोरियाई वॉन",
+ "symbol": "KPW"
+ },
+ "UYU": {
+ "name": "उरà¥à¤—à¥à¤µà¤¿à¤¯à¤¨ पीसो",
+ "symbol": "UYU"
+ },
+ "AUD": {
+ "name": "ऑसà¥à¤Ÿà¥à¤°à¥‡à¤²à¤¿à¤¯à¤¾à¤ˆ डॉलर",
+ "symbol": "A$"
+ },
+ "OMR": {
+ "name": "ओमानी रियाल",
+ "symbol": "OMR"
+ },
+ "KHR": {
+ "name": "कंबोडियाई रियाल",
+ "symbol": "KHR"
+ },
+ "KZT": {
+ "name": "कज़ाखिसà¥à¤¤à¤¾à¤¨à¥€ टेंज़",
+ "symbol": "KZT"
+ },
+ "QAR": {
+ "name": "क़तरी रियाल",
+ "symbol": "QAR"
+ },
+ "CAD": {
+ "name": "कनाडाई डॉलर",
+ "symbol": "CA$"
+ },
+ "KGS": {
+ "name": "किरà¥à¤—िसà¥à¤¤à¤¾à¤¨à¥€ सोम",
+ "symbol": "KGS"
+ },
+ "KWD": {
+ "name": "कà¥à¤µà¥ˆà¤¤à¥€ दिनार",
+ "symbol": "KWD"
+ },
+ "KES": {
+ "name": "केनà¥à¤¯à¤¾à¤ˆ शिलिंग",
+ "symbol": "KES"
+ },
+ "CVE": {
+ "name": "केप वरà¥à¤¡ à¤à¤¸à¥à¤•à¥‚डो",
+ "symbol": "CVE"
+ },
+ "KYD": {
+ "name": "कैमेन दà¥à¤µà¥€à¤ªà¤¸à¤®à¥‚ह डॉलर",
+ "symbol": "KYD"
+ },
+ "CDF": {
+ "name": "कोंगोली फ़à¥à¤°à¥ˆà¤‚क",
+ "symbol": "CDF"
+ },
+ "KMF": {
+ "name": "कोमोरियन फ़à¥à¤°à¥ˆà¤‚क",
+ "symbol": "KMF"
+ },
+ "COP": {
+ "name": "कोलंबियाई पीसो",
+ "symbol": "COP"
+ },
+ "CRC": {
+ "name": "कोसà¥à¤Ÿà¤¾ रिका कोलोन",
+ "symbol": "CRC"
+ },
+ "CUC": {
+ "name": "कà¥à¤¯à¥‚बाई परिवरà¥à¤¤à¤¨à¥€à¤¯ पीसो",
+ "symbol": "CUC"
+ },
+ "CUP": {
+ "name": "कà¥à¤¯à¥‚बाई पीसो",
+ "symbol": "CUP"
+ },
+ "HRK": {
+ "name": "कà¥à¤°à¥‹à¤à¤¶à¤¿à¤¯à¤¾à¤ˆ कà¥à¤¨à¤¾",
+ "symbol": "HRK"
+ },
+ "GYD": {
+ "name": "गयानीज़ डॉलर",
+ "symbol": "GYD"
+ },
+ "GNF": {
+ "name": "गिनीयन फ़à¥à¤°à¥ˆà¤‚क",
+ "symbol": "GNF"
+ },
+ "GMD": {
+ "name": "गैंबियन डलासी",
+ "symbol": "GMD"
+ },
+ "GTQ": {
+ "name": "गà¥à¤µà¤¾à¤Ÿà¥‡à¤®à¤¾à¤²à¤¾ कà¥à¤µà¥‡à¤Ÿà¤œà¤¼à¤²",
+ "symbol": "GTQ"
+ },
+ "GHS": {
+ "name": "घानियन सेडी",
+ "symbol": "GHS"
+ },
+ "CLP": {
+ "name": "चिली पीसो",
+ "symbol": "CLP"
+ },
+ "CNY": {
+ "name": "चीनी यà¥à¤†à¤¨",
+ "symbol": "CNÂ¥"
+ },
+ "CZK": {
+ "name": "चेक गणराजà¥à¤¯ कोरà¥à¤¨à¤¾",
+ "symbol": "CZK"
+ },
+ "JMD": {
+ "name": "जमैकन डॉलर",
+ "symbol": "JMD"
+ },
+ "JPY": {
+ "name": "जापानी येन",
+ "symbol": "JPÂ¥"
+ },
+ "ZMW": {
+ "name": "ज़ामà¥à¤¬à¤¿à¤¯à¤¨ कà¥à¤µà¤¾à¤šà¤¾",
+ "symbol": "ZMW"
+ },
+ "DJF": {
+ "name": "जिबूती फ़à¥à¤°à¥ˆà¤‚क",
+ "symbol": "DJF"
+ },
+ "GIP": {
+ "name": "जिबà¥à¤°à¤¾à¤²à¥à¤Ÿà¤° पाउंड",
+ "symbol": "GIP"
+ },
+ "GEL": {
+ "name": "जॉरà¥à¤œà¤¿à¤¯à¤¨ लारी",
+ "symbol": "GEL"
+ },
+ "JOD": {
+ "name": "जॉरà¥à¤¡à¤¨à¤¿à¤¯à¤¨ दिनार",
+ "symbol": "JOD"
+ },
+ "TOP": {
+ "name": "टोंगन पांगा",
+ "symbol": "TOP"
+ },
+ "TND": {
+ "name": "टà¥à¤¯à¥‚नीशियाई दिनार",
+ "symbol": "TND"
+ },
+ "DKK": {
+ "name": "डैनिश कà¥à¤°à¥‹à¤¨",
+ "symbol": "DKK"
+ },
+ "DOP": {
+ "name": "डोमिनिकन पीसो",
+ "symbol": "DOP"
+ },
+ "TZS": {
+ "name": "तंज़ानियाई शिलिंग",
+ "symbol": "TZS"
+ },
+ "TJS": {
+ "name": "ताजिकिसà¥à¤¤à¤¾à¤¨à¥€ सोमोनी",
+ "symbol": "TJS"
+ },
+ "TMT": {
+ "name": "तà¥à¤°à¥à¤•à¤®à¥‡à¤¨à¤¿à¤¸à¥à¤¤à¤¾à¤¨à¥€ मैनत",
+ "symbol": "TMT"
+ },
+ "TRY": {
+ "name": "तà¥à¤°à¥à¤•à¥€ लीरा",
+ "symbol": "TRY"
+ },
+ "TTD": {
+ "name": "तà¥à¤°à¤¿à¤¨à¤¿à¤¦à¤¾à¤¦ और टोबैगो डॉलर",
+ "symbol": "TTD"
+ },
+ "THB": {
+ "name": "थाई बहत",
+ "symbol": "฿"
+ },
+ "ZAR": {
+ "name": "दकà¥à¤·à¤¿à¤£ अफ़à¥à¤°à¥€à¤•à¥€ रैंड",
+ "symbol": "ZAR"
+ },
+ "KRW": {
+ "name": "दकà¥à¤·à¤¿à¤£ कोरियाई वॉन",
+ "symbol": "â‚©"
+ },
+ "SSP": {
+ "name": "दकà¥à¤·à¤¿à¤£ सूडानी पाउंड",
+ "symbol": "SSP"
+ },
+ "TWD": {
+ "name": "नया ताईवानी डॉलर",
+ "symbol": "NT$"
+ },
+ "NGN": {
+ "name": "नाइजीरियाई नाइरा",
+ "symbol": "NGN"
+ },
+ "NAD": {
+ "name": "नामीबियाई डॉलर",
+ "symbol": "NAD"
+ },
+ "NIO": {
+ "name": "निकारागà¥à¤…न कोरडोबा",
+ "symbol": "NIO"
+ },
+ "ANG": {
+ "name": "नीदरलैंड à¤à¤‚टीलियन गिलà¥à¤¡à¤°",
+ "symbol": "ANG"
+ },
+ "NPR": {
+ "name": "नेपाली रà¥à¤ªà¤¯à¤¾",
+ "symbol": "NPR"
+ },
+ "NOK": {
+ "name": "नॉरà¥à¤µà¥‡à¤œà¤¿à¤¯à¤¨ कà¥à¤°à¥‹à¤¨",
+ "symbol": "NOK"
+ },
+ "NZD": {
+ "name": "नà¥à¤¯à¥‚ज़ीलैंड डॉलर",
+ "symbol": "NZ$"
+ },
+ "PAB": {
+ "name": "पनामेनियन बैलà¥à¤¬à¥‹à¤†",
+ "symbol": "PAB"
+ },
+ "PKR": {
+ "name": "पाकिसà¥à¤¤à¤¾à¤¨à¥€ रà¥à¤ªà¤¯à¤¾",
+ "symbol": "PKR"
+ },
+ "PGK": {
+ "name": "पापà¥à¤† नà¥à¤¯à¥‚ गिनीयन किना",
+ "symbol": "PGK"
+ },
+ "XCD": {
+ "name": "पूरà¥à¤µà¥€ कैरिबियाई डॉलर",
+ "symbol": "EC$"
+ },
+ "PEN": {
+ "name": "पेरूवियन नà¥à¤à¤µà¥‹ सोल",
+ "symbol": "PEN"
+ },
+ "PYG": {
+ "name": "पैरागà¥à¤µà¤¿à¤¯à¤¨ गà¥à¤†à¤°à¤¾à¤¨à¥€",
+ "symbol": "PYG"
+ },
+ "PLN": {
+ "name": "पोलिश ज़à¥à¤²à¥‰à¤Ÿà¥€",
+ "symbol": "PLN"
+ },
+ "FJD": {
+ "name": "फ़िजी डॉलर",
+ "symbol": "FJD"
+ },
+ "PHP": {
+ "name": "फ़िलिपीनी पीसो",
+ "symbol": "PHP"
+ },
+ "FKP": {
+ "name": "फ़ॉकलैंड दà¥à¤µà¥€à¤ªà¤¸à¤®à¥‚ह पाउंड",
+ "symbol": "FKP"
+ },
+ "BMD": {
+ "name": "बरमूडा डॉलर",
+ "symbol": "BMD"
+ },
+ "BHD": {
+ "name": "बहरीनी दिनार",
+ "symbol": "BHD"
+ },
+ "BSD": {
+ "name": "बहामाई डॉलर",
+ "symbol": "BSD"
+ },
+ "BDT": {
+ "name": "बांगà¥à¤²à¤¾à¤¦à¥‡à¤¶à¥€ टका",
+ "symbol": "BDT"
+ },
+ "BBD": {
+ "name": "बारà¥à¤¬à¥‡à¤¡à¤¿à¤¯à¤¨ डॉलर",
+ "symbol": "BBD"
+ },
+ "BIF": {
+ "name": "बà¥à¤°à¥‚ंडी फ़à¥à¤°à¥ˆà¤‚क",
+ "symbol": "BIF"
+ },
+ "BGN": {
+ "name": "बà¥à¤²à¥à¤—ारियाई लेव",
+ "symbol": "BGN"
+ },
+ "BYR": {
+ "name": "बेलारूसी रूबल",
+ "symbol": "BYR"
+ },
+ "BZD": {
+ "name": "बेलीज़ डॉलर",
+ "symbol": "BZD"
+ },
+ "BWP": {
+ "name": "बोतà¥à¤¸à¤µà¤¾à¤¨à¤¿à¤¯à¤¾à¤ˆ पà¥à¤²à¤¾",
+ "symbol": "BWP"
+ },
+ "BOB": {
+ "name": "बोलिवियाई बोलिवियानो",
+ "symbol": "BOB"
+ },
+ "BAM": {
+ "name": "बोसà¥à¤¨à¤¿à¤¯à¤¾ हरà¥à¤œà¤¼à¥‡à¤—ोविना परिवरà¥à¤¤à¤¨à¥€à¤¯ मारà¥à¤•",
+ "symbol": "BAM"
+ },
+ "BRL": {
+ "name": "बà¥à¤°à¤¾à¤œà¤¼à¥€à¤²à¥€ रियाल",
+ "symbol": "R$"
+ },
+ "GBP": {
+ "name": "बà¥à¤°à¤¿à¤Ÿà¤¿à¤¶ पाउंड सà¥à¤Ÿà¤°à¥à¤²à¤¿à¤‚ग",
+ "symbol": "£"
+ },
+ "BND": {
+ "name": "बà¥à¤°à¥‚नेई डॉलर",
+ "symbol": "BND"
+ },
+ "INR": {
+ "name": "भारतीय रà¥à¤ªà¤¯à¤¾",
+ "symbol": "₹"
+ },
+ "BTN": {
+ "name": "भूटानी नंगलटà¥à¤°à¤®",
+ "symbol": "BTN"
+ },
+ "MNT": {
+ "name": "मंगोलियाई टगरिक",
+ "symbol": "MNT"
+ },
+ "MYR": {
+ "name": "मलेशियाई रिंगित",
+ "symbol": "MYR"
+ },
+ "MVR": {
+ "name": "मालदीवी रà¥à¤«à¤¼à¤¿à¤¯à¤¾",
+ "symbol": "MVR"
+ },
+ "MGA": {
+ "name": "मालागासी आरियरी",
+ "symbol": "MGA"
+ },
+ "MWK": {
+ "name": "मालावियन कà¥à¤µà¤¾à¤šà¤¾",
+ "symbol": "MWK"
+ },
+ "EGP": {
+ "name": "मिसà¥à¤° पाउंड",
+ "symbol": "EGP"
+ },
+ "MOP": {
+ "name": "मेकानीज़ पाटाका",
+ "symbol": "MOP"
+ },
+ "MXN": {
+ "name": "मैकà¥à¤¸à¤¿à¤•à¤¨ पीसो",
+ "symbol": "MX$"
+ },
+ "MKD": {
+ "name": "मैसीडोनियन दिनार",
+ "symbol": "MKD"
+ },
+ "MUR": {
+ "name": "मॉरिशियन रà¥à¤ªà¤¯à¤¾",
+ "symbol": "MUR"
+ },
+ "MRO": {
+ "name": "मॉरीटेनियन ओगà¥à¤‡à¤¯à¤¾",
+ "symbol": "MRO"
+ },
+ "MZN": {
+ "name": "मोज़ामà¥à¤¬à¤¿à¤•à¤¨ मेटिकल",
+ "symbol": "MZN"
+ },
+ "MAD": {
+ "name": "मोरकà¥à¤•à¥‹ दिरहम",
+ "symbol": "MAD"
+ },
+ "MDL": {
+ "name": "मोलà¥à¤¡à¥‹à¤µà¤¨ लियू",
+ "symbol": "MDL"
+ },
+ "MMK": {
+ "name": "मà¥à¤¯à¤¾à¤‚मार कà¥à¤¯à¤¾à¤Ÿ",
+ "symbol": "MMK"
+ },
+ "YER": {
+ "name": "यमनी रियाल",
+ "symbol": "YER"
+ },
+ "UGX": {
+ "name": "यà¥à¤—ांडाई शिलिंग",
+ "symbol": "UGX"
+ },
+ "USD": {
+ "name": "यूà¤à¤¸ डॉलर",
+ "symbol": "$"
+ },
+ "UAH": {
+ "name": "यूकà¥à¤°à¥‡à¤¨à¤¿à¤¯à¤¨ रिवà¥à¤¨à¤¿à¤¯à¤¾",
+ "symbol": "UAH"
+ },
+ "EUR": {
+ "name": "यूरो",
+ "symbol": "€"
+ },
+ "RWF": {
+ "name": "रवांडाई फ़à¥à¤°à¥ˆà¤‚क",
+ "symbol": "RWF"
+ },
+ "RUB": {
+ "name": "रूसी रूबल",
+ "symbol": "RUB"
+ },
+ "RON": {
+ "name": "रोमानियाई लà¥à¤¯à¥‚",
+ "symbol": "RON"
+ },
+ "LRD": {
+ "name": "लाइबेरियाई डॉलर",
+ "symbol": "LRD"
+ },
+ "LAK": {
+ "name": "लाओशियन किप",
+ "symbol": "LAK"
+ },
+ "LTL": {
+ "name": "लिथà¥à¤†à¤¨à¤¿à¤¯à¤¾à¤ˆ लितास",
+ "symbol": "LTL"
+ },
+ "LYD": {
+ "name": "लीबियाई दिनार",
+ "symbol": "LYD"
+ },
+ "LBP": {
+ "name": "लेबनानी पाउंड",
+ "symbol": "LBP"
+ },
+ "LSL": {
+ "name": "लेसोथो लोटी",
+ "symbol": "LSL"
+ },
+ "VUV": {
+ "name": "वनà¥à¤†à¤¤à¥‚ वातू",
+ "symbol": "VUV"
+ },
+ "VND": {
+ "name": "वियतनामी डोंग",
+ "symbol": "â‚«"
+ },
+ "VEF": {
+ "name": "वेनेज़à¥à¤à¤²à¤¾ बोलिवर",
+ "symbol": "VEF"
+ },
+ "LKR": {
+ "name": "शà¥à¤°à¥€à¤²à¤‚काई रà¥à¤ªà¤¯à¤¾",
+ "symbol": "LKR"
+ },
+ "AED": {
+ "name": "संयà¥à¤•à¥à¤¤ अरब अमीरात दिरहाम",
+ "symbol": "AED"
+ },
+ "SAR": {
+ "name": "सउदी रियाल",
+ "symbol": "SAR"
+ },
+ "WST": {
+ "name": "समोआई ताला",
+ "symbol": "WST"
+ },
+ "RSD": {
+ "name": "सरà¥à¤¬à¤¿à¤¯à¤¨ दिनार",
+ "symbol": "RSD"
+ },
+ "STD": {
+ "name": "साओ तोम और पà¥à¤°à¤¿à¤‚सिपे डोबरा",
+ "symbol": "STD"
+ },
+ "SGD": {
+ "name": "सिंगापà¥à¤° डॉलर",
+ "symbol": "SGD"
+ },
+ "SLL": {
+ "name": "सिà¤à¤°à¤¾ लियोनियन लियोन",
+ "symbol": "SLL"
+ },
+ "SYP": {
+ "name": "सीरियाई पाउंड",
+ "symbol": "SYP"
+ },
+ "SDG": {
+ "name": "सूडानी पाउंड",
+ "symbol": "SDG"
+ },
+ "SRD": {
+ "name": "सूरीनामी डॉलर",
+ "symbol": "SRD"
+ },
+ "SHP": {
+ "name": "सेंट हेलेना पाउंड",
+ "symbol": "SHP"
+ },
+ "SCR": {
+ "name": "सेशेलà¥à¤¸à¤¿à¤¯à¤¾à¤ˆ रà¥à¤ªà¤¯à¤¾",
+ "symbol": "SCR"
+ },
+ "SOS": {
+ "name": "सोमाली शिलिंग",
+ "symbol": "SOS"
+ },
+ "SBD": {
+ "name": "सोलोमन दà¥à¤µà¥€à¤ªà¤¸à¤®à¥‚ह डॉलर",
+ "symbol": "SBD"
+ },
+ "SZL": {
+ "name": "सà¥à¤µà¤¾à¤œà¤¼à¥€ लिलांजेनी",
+ "symbol": "SZL"
+ },
+ "CHF": {
+ "name": "सà¥à¤µà¤¿à¤¸ फ़à¥à¤°à¥ˆà¤‚क",
+ "symbol": "CHF"
+ },
+ "SEK": {
+ "name": "सà¥à¤µà¥€à¤¡à¥€à¤¶ कà¥à¤°à¥‹à¤¨à¤¾",
+ "symbol": "SEK"
+ },
+ "HUF": {
+ "name": "हंगेरियन फ़ोरिंट",
+ "symbol": "HUF"
+ },
+ "HKD": {
+ "name": "हाà¤à¤—काà¤à¤— डॉलर",
+ "symbol": "HK$"
+ },
+ "HTG": {
+ "name": "हैतियाई गरà¥à¤¡",
+ "symbol": "HTG"
+ },
+ "HNL": {
+ "name": "होंडà¥à¤°à¤¨ लेमà¥à¤ªà¤¿à¤°à¤¾",
+ "symbol": "HNL"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/currency/hr.json b/library/intl/resources/currency/hr.json
new file mode 100644
index 000000000..6c307d952
--- /dev/null
+++ b/library/intl/resources/currency/hr.json
@@ -0,0 +1,634 @@
+{
+ "AFN": {
+ "name": "afganistanski afgani",
+ "symbol": "AFN"
+ },
+ "ALL": {
+ "name": "albanski lek",
+ "symbol": "ALL"
+ },
+ "DZD": {
+ "name": "alžirski dinar",
+ "symbol": "DZD"
+ },
+ "USD": {
+ "name": "ameriÄki dolar",
+ "symbol": "USD"
+ },
+ "AOA": {
+ "name": "angolska kvanza",
+ "symbol": "AOA"
+ },
+ "ARS": {
+ "name": "argentinski pezo",
+ "symbol": "ARS"
+ },
+ "AMD": {
+ "name": "armenski dram",
+ "symbol": "AMD"
+ },
+ "AWG": {
+ "name": "arupski florin",
+ "symbol": "AWG"
+ },
+ "AUD": {
+ "name": "australski dolar",
+ "symbol": "AUD"
+ },
+ "AZN": {
+ "name": "azerbajdžanski manat",
+ "symbol": "AZN"
+ },
+ "BSD": {
+ "name": "bahamski dolar",
+ "symbol": "BSD"
+ },
+ "BHD": {
+ "name": "bahreinski dinar",
+ "symbol": "BHD"
+ },
+ "BDT": {
+ "name": "bangladeška taka",
+ "symbol": "BDT"
+ },
+ "BBD": {
+ "name": "barbadoski dolar",
+ "symbol": "BBD"
+ },
+ "BZD": {
+ "name": "belizeanski dolar",
+ "symbol": "BZD"
+ },
+ "BMD": {
+ "name": "bermudski dolar",
+ "symbol": "BMD"
+ },
+ "BYR": {
+ "name": "bjeloruska rublja",
+ "symbol": "BYR"
+ },
+ "BWP": {
+ "name": "bocvanska pula",
+ "symbol": "BWP"
+ },
+ "BOB": {
+ "name": "bolivijski bolivijano",
+ "symbol": "BOB"
+ },
+ "BRL": {
+ "name": "brazilski real",
+ "symbol": "BRL"
+ },
+ "GBP": {
+ "name": "britanska funta",
+ "symbol": "GBP"
+ },
+ "BND": {
+ "name": "brunejski dolar",
+ "symbol": "BND"
+ },
+ "BGN": {
+ "name": "bugarski lev",
+ "symbol": "BGN"
+ },
+ "BIF": {
+ "name": "burundski franak",
+ "symbol": "BIF"
+ },
+ "BTN": {
+ "name": "butanski ngultrum",
+ "symbol": "BTN"
+ },
+ "XOF": {
+ "name": "CFA franak BCEAO",
+ "symbol": "CFA"
+ },
+ "XAF": {
+ "name": "CFA franak BEAC",
+ "symbol": "FCFA"
+ },
+ "XPF": {
+ "name": "CFP franak",
+ "symbol": "XPF"
+ },
+ "CZK": {
+ "name": "ÄeÅ¡ka kruna",
+ "symbol": "CZK"
+ },
+ "CLP": {
+ "name": "Äileanski pezo",
+ "symbol": "CLP"
+ },
+ "DKK": {
+ "name": "danska kruna",
+ "symbol": "DKK"
+ },
+ "STD": {
+ "name": "dobra Svetog Tome i Principa",
+ "symbol": "STD"
+ },
+ "DOP": {
+ "name": "dominikanski pezo",
+ "symbol": "DOP"
+ },
+ "DJF": {
+ "name": "džibutski franak",
+ "symbol": "DJF"
+ },
+ "EGP": {
+ "name": "egipatska funta",
+ "symbol": "EGP"
+ },
+ "ERN": {
+ "name": "eritrejska nakfa",
+ "symbol": "ERN"
+ },
+ "ETB": {
+ "name": "etiopski bir",
+ "symbol": "ETB"
+ },
+ "EUR": {
+ "name": "euro",
+ "symbol": "EUR"
+ },
+ "FKP": {
+ "name": "falklandska funta",
+ "symbol": "FKP"
+ },
+ "FJD": {
+ "name": "fidžijski dolar",
+ "symbol": "FJD"
+ },
+ "PHP": {
+ "name": "filipinski pezo",
+ "symbol": "PHP"
+ },
+ "GMD": {
+ "name": "gambijski dalas",
+ "symbol": "GMD"
+ },
+ "GHS": {
+ "name": "ganski cedi",
+ "symbol": "GHS"
+ },
+ "GIP": {
+ "name": "gibraltarska funta",
+ "symbol": "GIP"
+ },
+ "GEL": {
+ "name": "gruzijski lari",
+ "symbol": "GEL"
+ },
+ "GYD": {
+ "name": "gvajanski dolar",
+ "symbol": "GYD"
+ },
+ "GTQ": {
+ "name": "gvatemalski kvecal",
+ "symbol": "GTQ"
+ },
+ "GNF": {
+ "name": "gvinejski franak",
+ "symbol": "GNF"
+ },
+ "HTG": {
+ "name": "haićanski gourd",
+ "symbol": "HTG"
+ },
+ "HNL": {
+ "name": "honduraška lempira",
+ "symbol": "HNL"
+ },
+ "HKD": {
+ "name": "hongkonški dolar",
+ "symbol": "HKD"
+ },
+ "HRK": {
+ "name": "hrvatska kuna",
+ "symbol": "HRK"
+ },
+ "INR": {
+ "name": "indijska rupija",
+ "symbol": "INR"
+ },
+ "IDR": {
+ "name": "indonezijska rupija",
+ "symbol": "IDR"
+ },
+ "IQD": {
+ "name": "iraÄki dinar",
+ "symbol": "IQD"
+ },
+ "IRR": {
+ "name": "iranski rijal",
+ "symbol": "IRR"
+ },
+ "ISK": {
+ "name": "islandska kruna",
+ "symbol": "ISK"
+ },
+ "XCD": {
+ "name": "istoÄnokaripski dolar",
+ "symbol": "XCD"
+ },
+ "JMD": {
+ "name": "jamajÄanski dolar",
+ "symbol": "JMD"
+ },
+ "JPY": {
+ "name": "japanski jen",
+ "symbol": "JPY"
+ },
+ "YER": {
+ "name": "jemenski rial",
+ "symbol": "YER"
+ },
+ "JOD": {
+ "name": "jordanski dinar",
+ "symbol": "JOD"
+ },
+ "ZAR": {
+ "name": "južnoafriÄki rand",
+ "symbol": "ZAR"
+ },
+ "KRW": {
+ "name": "južnokorejski won",
+ "symbol": "KRW"
+ },
+ "SSP": {
+ "name": "južnosudanska funta",
+ "symbol": "SSP"
+ },
+ "KYD": {
+ "name": "kajmanski dolar",
+ "symbol": "KYD"
+ },
+ "KHR": {
+ "name": "kambođanski rijal",
+ "symbol": "KHR"
+ },
+ "CAD": {
+ "name": "kanadski dolar",
+ "symbol": "CAD"
+ },
+ "QAR": {
+ "name": "katarski rial",
+ "symbol": "QAR"
+ },
+ "KZT": {
+ "name": "kazahstanski tenge",
+ "symbol": "KZT"
+ },
+ "KES": {
+ "name": "kenijski Å¡iling",
+ "symbol": "KES"
+ },
+ "PGK": {
+ "name": "kina Papue Nove Gvineje",
+ "symbol": "PGK"
+ },
+ "CNY": {
+ "name": "kineski yuan",
+ "symbol": "CNY"
+ },
+ "KGS": {
+ "name": "kirgiski som",
+ "symbol": "KGS"
+ },
+ "COP": {
+ "name": "kolumbijski pezo",
+ "symbol": "COP"
+ },
+ "KMF": {
+ "name": "komorski franak",
+ "symbol": "KMF"
+ },
+ "CDF": {
+ "name": "kongoanski franak",
+ "symbol": "CDF"
+ },
+ "BAM": {
+ "name": "konvertibilna marka",
+ "symbol": "BAM"
+ },
+ "CRC": {
+ "name": "kostarikanski kolon",
+ "symbol": "CRC"
+ },
+ "CUC": {
+ "name": "kubanski konvertibilni pezo",
+ "symbol": "CUC"
+ },
+ "CUP": {
+ "name": "kubanski pezo",
+ "symbol": "CUP"
+ },
+ "KWD": {
+ "name": "kuvajtski dinar",
+ "symbol": "KWD"
+ },
+ "LAK": {
+ "name": "laoski kip",
+ "symbol": "LAK"
+ },
+ "LSL": {
+ "name": "lesoto loti",
+ "symbol": "LSL"
+ },
+ "LBP": {
+ "name": "libanonska funta",
+ "symbol": "LBP"
+ },
+ "LRD": {
+ "name": "liberijski dolar",
+ "symbol": "LRD"
+ },
+ "LYD": {
+ "name": "libijski dinar",
+ "symbol": "LYD"
+ },
+ "LTL": {
+ "name": "litavski litas",
+ "symbol": "LTL"
+ },
+ "MGA": {
+ "name": "madagaskarski ariary",
+ "symbol": "MGA"
+ },
+ "HUF": {
+ "name": "mađarska forinta",
+ "symbol": "HUF"
+ },
+ "MOP": {
+ "name": "makaoška pataka",
+ "symbol": "MOP"
+ },
+ "MKD": {
+ "name": "makedonski denar",
+ "symbol": "MKD"
+ },
+ "MWK": {
+ "name": "malavijska kvaÄa",
+ "symbol": "MWK"
+ },
+ "MVR": {
+ "name": "maldivijska rufija",
+ "symbol": "MVR"
+ },
+ "MYR": {
+ "name": "malezijski ringit",
+ "symbol": "MYR"
+ },
+ "MAD": {
+ "name": "marokanski dirham",
+ "symbol": "MAD"
+ },
+ "MUR": {
+ "name": "mauricijska rupija",
+ "symbol": "MUR"
+ },
+ "MRO": {
+ "name": "mauritanijska ouguja",
+ "symbol": "MRO"
+ },
+ "MXN": {
+ "name": "meksiÄki pezo",
+ "symbol": "MXN"
+ },
+ "MMK": {
+ "name": "mjanmarski kjat",
+ "symbol": "MMK"
+ },
+ "MDL": {
+ "name": "moldavski lej",
+ "symbol": "MDL"
+ },
+ "MNT": {
+ "name": "mongolski tugrik",
+ "symbol": "MNT"
+ },
+ "MZN": {
+ "name": "mozambiÄki metikal",
+ "symbol": "MZN"
+ },
+ "NAD": {
+ "name": "namibijski dolar",
+ "symbol": "NAD"
+ },
+ "NPR": {
+ "name": "nepalska rupija",
+ "symbol": "NPR"
+ },
+ "NGN": {
+ "name": "nigerijska naira",
+ "symbol": "NGN"
+ },
+ "NIO": {
+ "name": "nikaragvanska zlatna kordoba",
+ "symbol": "NIO"
+ },
+ "ANG": {
+ "name": "nizozemskoantilski gulden",
+ "symbol": "ANG"
+ },
+ "NOK": {
+ "name": "norveška kruna",
+ "symbol": "NOK"
+ },
+ "ILS": {
+ "name": "novi izraelski Å¡ekel",
+ "symbol": "ILS"
+ },
+ "TWD": {
+ "name": "novotajvanski dolar",
+ "symbol": "TWD"
+ },
+ "NZD": {
+ "name": "novozelandski dolar",
+ "symbol": "NZD"
+ },
+ "OMR": {
+ "name": "omanski rijal",
+ "symbol": "OMR"
+ },
+ "PKR": {
+ "name": "pakistanska rupija",
+ "symbol": "PKR"
+ },
+ "PAB": {
+ "name": "panamska balboa",
+ "symbol": "PAB"
+ },
+ "PYG": {
+ "name": "paragvajski gvarani",
+ "symbol": "PYG"
+ },
+ "PEN": {
+ "name": "peruanski novi sol",
+ "symbol": "PEN"
+ },
+ "PLN": {
+ "name": "poljska zlota",
+ "symbol": "PLN"
+ },
+ "RWF": {
+ "name": "ruandski franak",
+ "symbol": "RWF"
+ },
+ "RON": {
+ "name": "rumunjski lej",
+ "symbol": "RON"
+ },
+ "RUB": {
+ "name": "ruska rublja",
+ "symbol": "RUB"
+ },
+ "SVC": {
+ "name": "salvadorski kolon",
+ "symbol": "SVC"
+ },
+ "WST": {
+ "name": "samoanska tala",
+ "symbol": "WST"
+ },
+ "SAR": {
+ "name": "saudijski rial",
+ "symbol": "SAR"
+ },
+ "SCR": {
+ "name": "sejšelska rupija",
+ "symbol": "SCR"
+ },
+ "SLL": {
+ "name": "sijeraleonski leone",
+ "symbol": "SLL"
+ },
+ "SGD": {
+ "name": "singapurski dolar",
+ "symbol": "SGD"
+ },
+ "SYP": {
+ "name": "sirijska funta",
+ "symbol": "SYP"
+ },
+ "KPW": {
+ "name": "sjevernokorejski won",
+ "symbol": "KPW"
+ },
+ "SBD": {
+ "name": "solmonskootoÄni dolar",
+ "symbol": "SBD"
+ },
+ "SOS": {
+ "name": "somalijski Å¡iling",
+ "symbol": "SOS"
+ },
+ "RSD": {
+ "name": "srpski dinar",
+ "symbol": "RSD"
+ },
+ "SDG": {
+ "name": "sudanska funta",
+ "symbol": "SDG"
+ },
+ "SRD": {
+ "name": "surinamski dolar",
+ "symbol": "SRD"
+ },
+ "SZL": {
+ "name": "svazi lilangeni",
+ "symbol": "SZL"
+ },
+ "SHP": {
+ "name": "svetohelenska funta",
+ "symbol": "SHP"
+ },
+ "LKR": {
+ "name": "Å¡rilankanska rupija",
+ "symbol": "LKR"
+ },
+ "SEK": {
+ "name": "Å¡vedska kruna",
+ "symbol": "SEK"
+ },
+ "CHF": {
+ "name": "Å¡vicarski franak",
+ "symbol": "CHF"
+ },
+ "TJS": {
+ "name": "tadžikistanski somoni",
+ "symbol": "TJS"
+ },
+ "THB": {
+ "name": "tajlandski baht",
+ "symbol": "THB"
+ },
+ "TZS": {
+ "name": "tanzanijski Å¡iling",
+ "symbol": "TZS"
+ },
+ "TOP": {
+ "name": "tongaška pa’anga",
+ "symbol": "TOP"
+ },
+ "TTD": {
+ "name": "trininadtobaški dolar",
+ "symbol": "TTD"
+ },
+ "TND": {
+ "name": "tuniski dinar",
+ "symbol": "TND"
+ },
+ "TMT": {
+ "name": "turkmenistanski manat",
+ "symbol": "TMT"
+ },
+ "TRY": {
+ "name": "turska lira",
+ "symbol": "TRY"
+ },
+ "AED": {
+ "name": "UAE dirham",
+ "symbol": "AED"
+ },
+ "UGX": {
+ "name": "ugandski Å¡iling",
+ "symbol": "UGX"
+ },
+ "UAH": {
+ "name": "ukrajinska hrivnja",
+ "symbol": "UAH"
+ },
+ "UYU": {
+ "name": "urugvajski pezo",
+ "symbol": "UYU"
+ },
+ "UZS": {
+ "name": "uzbekistanski som",
+ "symbol": "UZS"
+ },
+ "VUV": {
+ "name": "vanuatuški vatu",
+ "symbol": "VUV"
+ },
+ "VEF": {
+ "name": "venezuelanski bolivar",
+ "symbol": "VEF"
+ },
+ "VND": {
+ "name": "vijetnamski dong",
+ "symbol": "VND"
+ },
+ "ZMW": {
+ "name": "zambijska kvaÄa",
+ "symbol": "ZMW"
+ },
+ "CVE": {
+ "name": "zelenortski eskudo",
+ "symbol": "CVE"
+ },
+ "ZWL": {
+ "name": "zimbabveanski dolar (2009)",
+ "symbol": "ZWL"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/currency/hsb.json b/library/intl/resources/currency/hsb.json
new file mode 100644
index 000000000..fd3873959
--- /dev/null
+++ b/library/intl/resources/currency/hsb.json
@@ -0,0 +1,634 @@
+{
+ "AFN": {
+ "name": "afghaniski afghani",
+ "symbol": "AFN"
+ },
+ "ALL": {
+ "name": "albanski lek",
+ "symbol": "ALL"
+ },
+ "DZD": {
+ "name": "algeriski dinar",
+ "symbol": "DZD"
+ },
+ "USD": {
+ "name": "ameriski dolar",
+ "symbol": "$"
+ },
+ "AOA": {
+ "name": "angolska kwanza",
+ "symbol": "AOA"
+ },
+ "ARS": {
+ "name": "argentinski peso",
+ "symbol": "ARS"
+ },
+ "AMD": {
+ "name": "armenski dram",
+ "symbol": "AMD"
+ },
+ "AWG": {
+ "name": "aruba-florin",
+ "symbol": "AWG"
+ },
+ "AUD": {
+ "name": "awstralski dolar",
+ "symbol": "AUD"
+ },
+ "AZN": {
+ "name": "azerbajdźanski manat",
+ "symbol": "AZN"
+ },
+ "BSD": {
+ "name": "bahamaski dolar",
+ "symbol": "BSD"
+ },
+ "BHD": {
+ "name": "bahrainski dinar",
+ "symbol": "BHD"
+ },
+ "BDT": {
+ "name": "bangladešska taka",
+ "symbol": "BDT"
+ },
+ "BBD": {
+ "name": "barbadoski dolar",
+ "symbol": "BBD"
+ },
+ "BZD": {
+ "name": "belizeski dolar",
+ "symbol": "BZD"
+ },
+ "BYR": {
+ "name": "běłoruski rubl",
+ "symbol": "BYR"
+ },
+ "BMD": {
+ "name": "bermudaski dolar",
+ "symbol": "BMD"
+ },
+ "BTN": {
+ "name": "bhutanski ngultrum",
+ "symbol": "BTN"
+ },
+ "BGN": {
+ "name": "bołharski lew",
+ "symbol": "BGN"
+ },
+ "BOB": {
+ "name": "boliwiski boliviano",
+ "symbol": "BOB"
+ },
+ "BAM": {
+ "name": "bosniska konwertibelna hriwna",
+ "symbol": "BAM"
+ },
+ "BWP": {
+ "name": "botswanska pula",
+ "symbol": "BWP"
+ },
+ "BRL": {
+ "name": "brazilski real",
+ "symbol": "R$"
+ },
+ "GBP": {
+ "name": "britiski punt",
+ "symbol": "£"
+ },
+ "BND": {
+ "name": "bruneiski dolar",
+ "symbol": "BND"
+ },
+ "BIF": {
+ "name": "burundiski frank",
+ "symbol": "BIF"
+ },
+ "CZK": {
+ "name": "ÄÄ›ska króna",
+ "symbol": "CZK"
+ },
+ "XOF": {
+ "name": "CFA-frank (BCEAO)",
+ "symbol": "CFA"
+ },
+ "XAF": {
+ "name": "CFA-frank (BEAC)",
+ "symbol": "FCFA"
+ },
+ "XPF": {
+ "name": "CFP-frank",
+ "symbol": "CFPF"
+ },
+ "CLP": {
+ "name": "chilski peso",
+ "symbol": "CLP"
+ },
+ "CNY": {
+ "name": "chinski yuan",
+ "symbol": "CNÂ¥"
+ },
+ "HRK": {
+ "name": "chorwatska kuna",
+ "symbol": "HRK"
+ },
+ "DKK": {
+ "name": "danska króna",
+ "symbol": "DKK"
+ },
+ "DOP": {
+ "name": "dominikanski peso",
+ "symbol": "DOP"
+ },
+ "DJF": {
+ "name": "dźibutiski frank",
+ "symbol": "DJF"
+ },
+ "EGP": {
+ "name": "egyptowski punt",
+ "symbol": "EGP"
+ },
+ "SVC": {
+ "name": "el salvadorski colón",
+ "symbol": "SVC"
+ },
+ "ERN": {
+ "name": "eritrejska nakfa",
+ "symbol": "ERN"
+ },
+ "ETB": {
+ "name": "etiopiski birr",
+ "symbol": "ETB"
+ },
+ "EUR": {
+ "name": "euro",
+ "symbol": "€"
+ },
+ "FKP": {
+ "name": "falklandski punt",
+ "symbol": "FKP"
+ },
+ "FJD": {
+ "name": "fidźiski dolar",
+ "symbol": "FJD"
+ },
+ "PHP": {
+ "name": "filipinski peso",
+ "symbol": "PHP"
+ },
+ "GMD": {
+ "name": "gambiski dalasi",
+ "symbol": "GMD"
+ },
+ "GEL": {
+ "name": "georgiski lari",
+ "symbol": "GEL"
+ },
+ "GHS": {
+ "name": "ghanaski cedi",
+ "symbol": "GHS"
+ },
+ "GIP": {
+ "name": "gibraltarski punt",
+ "symbol": "GIP"
+ },
+ "GNF": {
+ "name": "ginejski frank",
+ "symbol": "GNF"
+ },
+ "GTQ": {
+ "name": "guatemalski quetzal",
+ "symbol": "GTQ"
+ },
+ "GYD": {
+ "name": "guyanski dolar",
+ "symbol": "GYD"
+ },
+ "HTG": {
+ "name": "haitiska gourda",
+ "symbol": "HTG"
+ },
+ "HNL": {
+ "name": "honduraska lempira",
+ "symbol": "HNL"
+ },
+ "HKD": {
+ "name": "hongkongski dolar",
+ "symbol": "HK$"
+ },
+ "INR": {
+ "name": "indiska rupija",
+ "symbol": "₹"
+ },
+ "IDR": {
+ "name": "indoneska rupija",
+ "symbol": "IDR"
+ },
+ "IQD": {
+ "name": "irakski dinar",
+ "symbol": "IQD"
+ },
+ "IRR": {
+ "name": "iranski rial",
+ "symbol": "IRR"
+ },
+ "ISK": {
+ "name": "islandska króna",
+ "symbol": "ISK"
+ },
+ "ILS": {
+ "name": "israelski nowy Å¡ekel",
+ "symbol": "₪"
+ },
+ "JMD": {
+ "name": "jamaiski dolar",
+ "symbol": "JMD"
+ },
+ "JPY": {
+ "name": "japanski yen",
+ "symbol": "Â¥"
+ },
+ "YER": {
+ "name": "jemenski rial",
+ "symbol": "YER"
+ },
+ "JOD": {
+ "name": "jordaniski dinar",
+ "symbol": "JOD"
+ },
+ "ZAR": {
+ "name": "južnoafriski rand",
+ "symbol": "ZAR"
+ },
+ "KRW": {
+ "name": "južnokorejski won",
+ "symbol": "â‚©"
+ },
+ "SSP": {
+ "name": "južnosudanski punt",
+ "symbol": "SSP"
+ },
+ "KYD": {
+ "name": "kajmanski dolar",
+ "symbol": "KYD"
+ },
+ "KHR": {
+ "name": "kambodźaski riel",
+ "symbol": "KHR"
+ },
+ "CAD": {
+ "name": "kanadiski dolar",
+ "symbol": "CA$"
+ },
+ "CVE": {
+ "name": "kapverdski escudo",
+ "symbol": "CVE"
+ },
+ "QAR": {
+ "name": "katarski rial",
+ "symbol": "QAR"
+ },
+ "KZT": {
+ "name": "kazachski tenge",
+ "symbol": "KZT"
+ },
+ "KES": {
+ "name": "keniaski Å¡iling",
+ "symbol": "KES"
+ },
+ "KGS": {
+ "name": "kirgiski som",
+ "symbol": "KGS"
+ },
+ "COP": {
+ "name": "kolumbiski peso",
+ "symbol": "COP"
+ },
+ "KMF": {
+ "name": "komorski frank",
+ "symbol": "KMF"
+ },
+ "CDF": {
+ "name": "kongoski frank",
+ "symbol": "CDF"
+ },
+ "CRC": {
+ "name": "kosta-rikaski colón",
+ "symbol": "CRC"
+ },
+ "CUC": {
+ "name": "kubaski konwertibelny peso",
+ "symbol": "CUC"
+ },
+ "CUP": {
+ "name": "kubaski peso",
+ "symbol": "CUP"
+ },
+ "KWD": {
+ "name": "kuwaitski dinar",
+ "symbol": "KWD"
+ },
+ "LAK": {
+ "name": "laoski kip",
+ "symbol": "LAK"
+ },
+ "LBP": {
+ "name": "libanonski punt",
+ "symbol": "LBP"
+ },
+ "LRD": {
+ "name": "liberiski dolar",
+ "symbol": "LRD"
+ },
+ "LYD": {
+ "name": "libyski dinar",
+ "symbol": "LYD"
+ },
+ "LTL": {
+ "name": "litawski litas",
+ "symbol": "LTL"
+ },
+ "LSL": {
+ "name": "LSL",
+ "symbol": "LSL"
+ },
+ "MOP": {
+ "name": "macaoska pataka",
+ "symbol": "MOP"
+ },
+ "MGA": {
+ "name": "madagaskarski ariary",
+ "symbol": "MGA"
+ },
+ "HUF": {
+ "name": "madźarski forint",
+ "symbol": "HUF"
+ },
+ "MKD": {
+ "name": "makedonski denar",
+ "symbol": "MKD"
+ },
+ "MYR": {
+ "name": "malajziski ringgit",
+ "symbol": "MYR"
+ },
+ "MWK": {
+ "name": "malawiski kwacha",
+ "symbol": "MWK"
+ },
+ "MVR": {
+ "name": "malediwiska rupija",
+ "symbol": "MVR"
+ },
+ "MAD": {
+ "name": "marokkoski dirham",
+ "symbol": "MAD"
+ },
+ "MUR": {
+ "name": "mauritiuska rupija",
+ "symbol": "MUR"
+ },
+ "MRO": {
+ "name": "mawretanska ouguiya",
+ "symbol": "MRO"
+ },
+ "MXN": {
+ "name": "mexiski peso",
+ "symbol": "MX$"
+ },
+ "MDL": {
+ "name": "moldawski leu",
+ "symbol": "MDL"
+ },
+ "MNT": {
+ "name": "mongolski tugrik",
+ "symbol": "MNT"
+ },
+ "MZN": {
+ "name": "mosambikski metical",
+ "symbol": "MZN"
+ },
+ "MMK": {
+ "name": "myanmarski kyat",
+ "symbol": "MMK"
+ },
+ "NAD": {
+ "name": "namibiski dolar",
+ "symbol": "NAD"
+ },
+ "NPR": {
+ "name": "nepalska rupija",
+ "symbol": "NPR"
+ },
+ "NGN": {
+ "name": "nigeriski naira",
+ "symbol": "NGN"
+ },
+ "NIO": {
+ "name": "nikaraguaski cordoba",
+ "symbol": "NIO"
+ },
+ "ANG": {
+ "name": "nižozemsko-antilski gulden",
+ "symbol": "ANG"
+ },
+ "NOK": {
+ "name": "norwegska króna",
+ "symbol": "NOK"
+ },
+ "NZD": {
+ "name": "nowoseelandski dolar",
+ "symbol": "NZ$"
+ },
+ "TWD": {
+ "name": "nowy taiwanski dolar",
+ "symbol": "NT$"
+ },
+ "OMR": {
+ "name": "omanski rial",
+ "symbol": "OMR"
+ },
+ "PKR": {
+ "name": "pakistanska rupija",
+ "symbol": "PKR"
+ },
+ "PAB": {
+ "name": "panamaski balboa",
+ "symbol": "PAB"
+ },
+ "PGK": {
+ "name": "papua-nowoginejski kina",
+ "symbol": "PGK"
+ },
+ "PYG": {
+ "name": "paraguayski guarani",
+ "symbol": "PYG"
+ },
+ "PEN": {
+ "name": "peruski nowy sol",
+ "symbol": "PEN"
+ },
+ "PLN": {
+ "name": "pólski złoty",
+ "symbol": "zł"
+ },
+ "RWF": {
+ "name": "ruandiski frank",
+ "symbol": "RWF"
+ },
+ "RON": {
+ "name": "rumunski leu",
+ "symbol": "RON"
+ },
+ "RUB": {
+ "name": "ruski rubl",
+ "symbol": "RUB"
+ },
+ "SBD": {
+ "name": "salomonski dolar",
+ "symbol": "SBD"
+ },
+ "ZMW": {
+ "name": "sambiski kwacha",
+ "symbol": "ZMW"
+ },
+ "WST": {
+ "name": "samoaski tala",
+ "symbol": "WST"
+ },
+ "STD": {
+ "name": "são tomeski dobra",
+ "symbol": "STD"
+ },
+ "SAR": {
+ "name": "saudi-arabski rial",
+ "symbol": "SAR"
+ },
+ "RSD": {
+ "name": "serbiski dinar",
+ "symbol": "RSD"
+ },
+ "KPW": {
+ "name": "sewjernokorejski won",
+ "symbol": "KPW"
+ },
+ "SCR": {
+ "name": "seychellska rupija",
+ "symbol": "SCR"
+ },
+ "SLL": {
+ "name": "sierra-leoneski leone",
+ "symbol": "SLL"
+ },
+ "SGD": {
+ "name": "singapurski dolar",
+ "symbol": "SGD"
+ },
+ "SOS": {
+ "name": "somaliski Å¡iling",
+ "symbol": "SOS"
+ },
+ "LKR": {
+ "name": "sri-lankaska rupija",
+ "symbol": "LKR"
+ },
+ "SHP": {
+ "name": "St. Helenski punt",
+ "symbol": "SHP"
+ },
+ "SDG": {
+ "name": "sudanski punt",
+ "symbol": "SDG"
+ },
+ "SRD": {
+ "name": "surinamski dolar",
+ "symbol": "SRD"
+ },
+ "SZL": {
+ "name": "swasiski lilangeni",
+ "symbol": "SZL"
+ },
+ "SEK": {
+ "name": "šwedska króna",
+ "symbol": "SEK"
+ },
+ "CHF": {
+ "name": "Å¡wicarski frank",
+ "symbol": "CHF"
+ },
+ "SYP": {
+ "name": "syriski punt",
+ "symbol": "SYP"
+ },
+ "TJS": {
+ "name": "tadźikski somoni",
+ "symbol": "TJS"
+ },
+ "TZS": {
+ "name": "tansaniski Å¡iling",
+ "symbol": "TZS"
+ },
+ "THB": {
+ "name": "thaiski baht",
+ "symbol": "฿"
+ },
+ "TOP": {
+ "name": "tongaski paʻanga",
+ "symbol": "TOP"
+ },
+ "TTD": {
+ "name": "trinidad-tobagoski dolar",
+ "symbol": "TTD"
+ },
+ "TND": {
+ "name": "tuneziski dinar",
+ "symbol": "TND"
+ },
+ "TMT": {
+ "name": "turkmenski manat",
+ "symbol": "TMT"
+ },
+ "TRY": {
+ "name": "turkowska lira",
+ "symbol": "TRY"
+ },
+ "UGX": {
+ "name": "ugandaski Å¡iling",
+ "symbol": "UGX"
+ },
+ "UAH": {
+ "name": "ukrainska hriwna",
+ "symbol": "UAH"
+ },
+ "UYU": {
+ "name": "uruguayski peso",
+ "symbol": "UYU"
+ },
+ "UZS": {
+ "name": "uzbekski sum",
+ "symbol": "UZS"
+ },
+ "VUV": {
+ "name": "vanuatuski vatu",
+ "symbol": "VUV"
+ },
+ "VEF": {
+ "name": "venezuelski bolívar",
+ "symbol": "VEF"
+ },
+ "VND": {
+ "name": "vietnamski dong",
+ "symbol": "â‚«"
+ },
+ "XCD": {
+ "name": "wuchodnokaribiski dolar",
+ "symbol": "EC$"
+ },
+ "AED": {
+ "name": "ZAE dirham",
+ "symbol": "AED"
+ },
+ "ZWL": {
+ "name": "ZWL",
+ "symbol": "ZWL"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/currency/hu.json b/library/intl/resources/currency/hu.json
new file mode 100644
index 000000000..f7413c6af
--- /dev/null
+++ b/library/intl/resources/currency/hu.json
@@ -0,0 +1,634 @@
+{
+ "AFN": {
+ "name": "afgán afghani",
+ "symbol": "AFN"
+ },
+ "ALL": {
+ "name": "albán lek",
+ "symbol": "ALL"
+ },
+ "DZD": {
+ "name": "algériai dínár",
+ "symbol": "DZD"
+ },
+ "AOA": {
+ "name": "angolai kwanza",
+ "symbol": "AOA"
+ },
+ "ARS": {
+ "name": "argentin peso",
+ "symbol": "ARS"
+ },
+ "AWG": {
+ "name": "arubai florin",
+ "symbol": "AWG"
+ },
+ "AUD": {
+ "name": "ausztrál dollár",
+ "symbol": "AUD"
+ },
+ "AZN": {
+ "name": "azerbajdzsáni manat",
+ "symbol": "AZN"
+ },
+ "BSD": {
+ "name": "bahamai dollár",
+ "symbol": "BSD"
+ },
+ "BHD": {
+ "name": "bahreini dinár",
+ "symbol": "BHD"
+ },
+ "BDT": {
+ "name": "bangladesi taka",
+ "symbol": "BDT"
+ },
+ "BBD": {
+ "name": "barbadosi dollár",
+ "symbol": "BBD"
+ },
+ "BZD": {
+ "name": "belize-i dollár",
+ "symbol": "BZD"
+ },
+ "BMD": {
+ "name": "bermudai dollár",
+ "symbol": "BMD"
+ },
+ "BTN": {
+ "name": "bhutáni ngultrum",
+ "symbol": "BTN"
+ },
+ "BGN": {
+ "name": "bolgár új leva",
+ "symbol": "BGN"
+ },
+ "BOB": {
+ "name": "bolíviai boliviano",
+ "symbol": "BOB"
+ },
+ "BAM": {
+ "name": "bosznia-hercegovinai konvertibilis márka",
+ "symbol": "BAM"
+ },
+ "BWP": {
+ "name": "botswanai pula",
+ "symbol": "BWP"
+ },
+ "BRL": {
+ "name": "brazil real",
+ "symbol": "BRL"
+ },
+ "GBP": {
+ "name": "brit font sterling",
+ "symbol": "GBP"
+ },
+ "BND": {
+ "name": "brunei dollár",
+ "symbol": "BND"
+ },
+ "BIF": {
+ "name": "burundi frank",
+ "symbol": "BIF"
+ },
+ "CVE": {
+ "name": "Cape Verde-i escudo",
+ "symbol": "CVE"
+ },
+ "XOF": {
+ "name": "CFA frank BCEAO",
+ "symbol": "CFA"
+ },
+ "XAF": {
+ "name": "CFA frank BEAC",
+ "symbol": "FCFA"
+ },
+ "CLP": {
+ "name": "chilei peso",
+ "symbol": "CLP"
+ },
+ "KMF": {
+ "name": "comorei frank",
+ "symbol": "KMF"
+ },
+ "CRC": {
+ "name": "Costa Rica-i colon",
+ "symbol": "CRC"
+ },
+ "CZK": {
+ "name": "cseh korona",
+ "symbol": "CZK"
+ },
+ "XPF": {
+ "name": "csendes-óceáni valutaközösségi frank",
+ "symbol": "CFPF"
+ },
+ "DKK": {
+ "name": "dán korona",
+ "symbol": "DKK"
+ },
+ "ZAR": {
+ "name": "dél-afrikai rand",
+ "symbol": "ZAR"
+ },
+ "KRW": {
+ "name": "dél-koreai won",
+ "symbol": "KRW"
+ },
+ "SSP": {
+ "name": "dél-szudáni font",
+ "symbol": "SSP"
+ },
+ "DOP": {
+ "name": "dominikai peso",
+ "symbol": "DOP"
+ },
+ "DJF": {
+ "name": "dzsibuti frank",
+ "symbol": "DJF"
+ },
+ "AED": {
+ "name": "EAE-dirham",
+ "symbol": "AED"
+ },
+ "EGP": {
+ "name": "egyiptomi font",
+ "symbol": "EGP"
+ },
+ "ERN": {
+ "name": "eritreai nakfa",
+ "symbol": "ERN"
+ },
+ "KPW": {
+ "name": "észak-koreai won",
+ "symbol": "KPW"
+ },
+ "ETB": {
+ "name": "etiópiai birr",
+ "symbol": "ETB"
+ },
+ "EUR": {
+ "name": "euró",
+ "symbol": "EUR"
+ },
+ "FKP": {
+ "name": "falkland-szigeteki font",
+ "symbol": "FKP"
+ },
+ "BYR": {
+ "name": "fehérorosz rubel",
+ "symbol": "BYR"
+ },
+ "FJD": {
+ "name": "fidzsi dollár",
+ "symbol": "FJD"
+ },
+ "PHP": {
+ "name": "fülöp-szigeteki peso",
+ "symbol": "PHP"
+ },
+ "GMD": {
+ "name": "gambiai dalasi",
+ "symbol": "GMD"
+ },
+ "GHS": {
+ "name": "ghánai cedi",
+ "symbol": "GHS"
+ },
+ "GIP": {
+ "name": "gibraltári font",
+ "symbol": "GIP"
+ },
+ "GEL": {
+ "name": "grúz lari",
+ "symbol": "GEL"
+ },
+ "GTQ": {
+ "name": "guatemalai quetzal",
+ "symbol": "GTQ"
+ },
+ "GNF": {
+ "name": "guineai frank",
+ "symbol": "GNF"
+ },
+ "GYD": {
+ "name": "guyanai dollár",
+ "symbol": "GYD"
+ },
+ "HTG": {
+ "name": "haiti gourde",
+ "symbol": "HTG"
+ },
+ "HNL": {
+ "name": "hodurasi lempira",
+ "symbol": "HNL"
+ },
+ "ANG": {
+ "name": "holland antilláki forint",
+ "symbol": "ANG"
+ },
+ "HKD": {
+ "name": "hongkongi dollár",
+ "symbol": "HKD"
+ },
+ "HRK": {
+ "name": "horvát kuna",
+ "symbol": "HRK"
+ },
+ "INR": {
+ "name": "indiai rúpia",
+ "symbol": "INR"
+ },
+ "IDR": {
+ "name": "indonéz rúpia",
+ "symbol": "IDR"
+ },
+ "IQD": {
+ "name": "iraki dínár",
+ "symbol": "IQD"
+ },
+ "IRR": {
+ "name": "iráni rial",
+ "symbol": "IRR"
+ },
+ "ISK": {
+ "name": "izlandi korona",
+ "symbol": "ISK"
+ },
+ "ILS": {
+ "name": "izraeli új sékel",
+ "symbol": "ILS"
+ },
+ "JMD": {
+ "name": "jamaicai dollár",
+ "symbol": "JMD"
+ },
+ "JPY": {
+ "name": "japán jen",
+ "symbol": "Â¥"
+ },
+ "YER": {
+ "name": "jemeni rial",
+ "symbol": "YER"
+ },
+ "JOD": {
+ "name": "jordániai dínár",
+ "symbol": "JOD"
+ },
+ "KYD": {
+ "name": "kajmán-szigeteki dollár",
+ "symbol": "KYD"
+ },
+ "KHR": {
+ "name": "kambodzsai riel",
+ "symbol": "KHR"
+ },
+ "CAD": {
+ "name": "kanadai dollár",
+ "symbol": "CAD"
+ },
+ "QAR": {
+ "name": "katari rial",
+ "symbol": "QAR"
+ },
+ "KZT": {
+ "name": "kazahsztáni tenge",
+ "symbol": "KZT"
+ },
+ "XCD": {
+ "name": "kelet-karibi dollár",
+ "symbol": "XCD"
+ },
+ "KES": {
+ "name": "kenyai shilling",
+ "symbol": "KES"
+ },
+ "CNY": {
+ "name": "kínai jüan",
+ "symbol": "CNY"
+ },
+ "KGS": {
+ "name": "kirgizisztáni szom",
+ "symbol": "KGS"
+ },
+ "COP": {
+ "name": "kolumbiai peso",
+ "symbol": "COP"
+ },
+ "CDF": {
+ "name": "kongói frank",
+ "symbol": "CDF"
+ },
+ "CUC": {
+ "name": "kubai konvertibilis peso",
+ "symbol": "CUC"
+ },
+ "CUP": {
+ "name": "kubai peso",
+ "symbol": "CUP"
+ },
+ "KWD": {
+ "name": "kuvaiti dínár",
+ "symbol": "KWD"
+ },
+ "LAK": {
+ "name": "laoszi kip",
+ "symbol": "LAK"
+ },
+ "PLN": {
+ "name": "lengyel zloty",
+ "symbol": "PLN"
+ },
+ "LSL": {
+ "name": "Lesothoi loti",
+ "symbol": "LSL"
+ },
+ "LBP": {
+ "name": "libanoni font",
+ "symbol": "LBP"
+ },
+ "LRD": {
+ "name": "libériai dollár",
+ "symbol": "LRD"
+ },
+ "LYD": {
+ "name": "líbiai dínár",
+ "symbol": "LYD"
+ },
+ "LTL": {
+ "name": "litvániai litas",
+ "symbol": "LTL"
+ },
+ "MKD": {
+ "name": "macedon dínár",
+ "symbol": "MKD"
+ },
+ "MGA": {
+ "name": "madagaszkári ariary",
+ "symbol": "MGA"
+ },
+ "HUF": {
+ "name": "magyar forint",
+ "symbol": "HUF"
+ },
+ "MOP": {
+ "name": "makaói pataca",
+ "symbol": "MOP"
+ },
+ "MYR": {
+ "name": "malajziai ringgit",
+ "symbol": "MYR"
+ },
+ "MWK": {
+ "name": "malawi kwacha",
+ "symbol": "MWK"
+ },
+ "MVR": {
+ "name": "maldív-szigeteki rufiyaa",
+ "symbol": "MVR"
+ },
+ "MAD": {
+ "name": "marokkói dirham",
+ "symbol": "MAD"
+ },
+ "MRO": {
+ "name": "mauritániai ouguiya",
+ "symbol": "MRO"
+ },
+ "MUR": {
+ "name": "mauritiusi rúpia",
+ "symbol": "MUR"
+ },
+ "MXN": {
+ "name": "mexikói peso",
+ "symbol": "MXN"
+ },
+ "MMK": {
+ "name": "mianmari kyat",
+ "symbol": "MMK"
+ },
+ "MDL": {
+ "name": "moldován lei",
+ "symbol": "MDL"
+ },
+ "MNT": {
+ "name": "mongóliai tugrik",
+ "symbol": "MNT"
+ },
+ "MZN": {
+ "name": "mozambiki metikális",
+ "symbol": "MZN"
+ },
+ "NAD": {
+ "name": "namíbiai dollár",
+ "symbol": "NAD"
+ },
+ "NPR": {
+ "name": "nepáli rúpia",
+ "symbol": "NPR"
+ },
+ "NIO": {
+ "name": "nicaraguai córdoba",
+ "symbol": "NIO"
+ },
+ "NGN": {
+ "name": "nigériai naira",
+ "symbol": "NGN"
+ },
+ "NOK": {
+ "name": "norvég korona",
+ "symbol": "NOK"
+ },
+ "WST": {
+ "name": "nyugat-szamoai tala",
+ "symbol": "WST"
+ },
+ "OMR": {
+ "name": "ománi rial",
+ "symbol": "OMR"
+ },
+ "RUB": {
+ "name": "orosz rubel",
+ "symbol": "RUB"
+ },
+ "AMD": {
+ "name": "örmény dram",
+ "symbol": "AMD"
+ },
+ "PKR": {
+ "name": "pakisztáni rúpia",
+ "symbol": "PKR"
+ },
+ "PAB": {
+ "name": "panamai balboa",
+ "symbol": "PAB"
+ },
+ "PGK": {
+ "name": "pápua új-guineai kina",
+ "symbol": "PGK"
+ },
+ "PYG": {
+ "name": "paraguayi guarani",
+ "symbol": "PYG"
+ },
+ "PEN": {
+ "name": "perui sol nuevo",
+ "symbol": "PEN"
+ },
+ "RON": {
+ "name": "román lej",
+ "symbol": "RON"
+ },
+ "RWF": {
+ "name": "ruandai frank",
+ "symbol": "RWF"
+ },
+ "SBD": {
+ "name": "salamon-szigeteki dollár",
+ "symbol": "SBD"
+ },
+ "SVC": {
+ "name": "Salvadori colón",
+ "symbol": "SVC"
+ },
+ "STD": {
+ "name": "São Tomé és Príncipe-i dobra",
+ "symbol": "STD"
+ },
+ "SCR": {
+ "name": "seychelle-szigeteki rúpia",
+ "symbol": "SCR"
+ },
+ "SLL": {
+ "name": "Sierra Leone-i leone",
+ "symbol": "SLL"
+ },
+ "LKR": {
+ "name": "Srí Lanka-i rúpia",
+ "symbol": "LKR"
+ },
+ "SRD": {
+ "name": "suriname-i dollár",
+ "symbol": "SRD"
+ },
+ "CHF": {
+ "name": "svájci frank",
+ "symbol": "CHF"
+ },
+ "SEK": {
+ "name": "svéd korona",
+ "symbol": "SEK"
+ },
+ "SAR": {
+ "name": "szaúdi riyal",
+ "symbol": "SAR"
+ },
+ "SHP": {
+ "name": "Szent Ilona-i font",
+ "symbol": "SHP"
+ },
+ "RSD": {
+ "name": "szerb dínár",
+ "symbol": "RSD"
+ },
+ "SGD": {
+ "name": "szingapúri dollár",
+ "symbol": "SGD"
+ },
+ "SYP": {
+ "name": "szíriai font",
+ "symbol": "SYP"
+ },
+ "SOS": {
+ "name": "szomáli shilling",
+ "symbol": "SOS"
+ },
+ "SDG": {
+ "name": "szudáni font",
+ "symbol": "SDG"
+ },
+ "SZL": {
+ "name": "szváziföldi lilangeni",
+ "symbol": "SZL"
+ },
+ "TJS": {
+ "name": "tádzsikisztáni somoni",
+ "symbol": "TJS"
+ },
+ "TWD": {
+ "name": "tajvani új dollár",
+ "symbol": "TWD"
+ },
+ "TZS": {
+ "name": "tanzániai shilling",
+ "symbol": "TZS"
+ },
+ "THB": {
+ "name": "thai baht",
+ "symbol": "THB"
+ },
+ "TOP": {
+ "name": "tongai paanga",
+ "symbol": "TOP"
+ },
+ "TRY": {
+ "name": "török líra",
+ "symbol": "TRY"
+ },
+ "TTD": {
+ "name": "Trinidad és Tobago-i dollár",
+ "symbol": "TTD"
+ },
+ "TND": {
+ "name": "tunéziai dínár",
+ "symbol": "TND"
+ },
+ "TMT": {
+ "name": "türkmenisztáni manat",
+ "symbol": "TMT"
+ },
+ "UGX": {
+ "name": "ugandai shilling",
+ "symbol": "UGX"
+ },
+ "NZD": {
+ "name": "új-zélandi dollár",
+ "symbol": "NZD"
+ },
+ "UAH": {
+ "name": "ukrán hrivnya",
+ "symbol": "UAH"
+ },
+ "UYU": {
+ "name": "uruguay-i peso",
+ "symbol": "UYU"
+ },
+ "USD": {
+ "name": "USA-dollár",
+ "symbol": "USD"
+ },
+ "UZS": {
+ "name": "üzbegisztáni szum",
+ "symbol": "UZS"
+ },
+ "VUV": {
+ "name": "vanuatui vatu",
+ "symbol": "VUV"
+ },
+ "VEF": {
+ "name": "venezuelai bolivar",
+ "symbol": "VEF"
+ },
+ "VND": {
+ "name": "vietnami dong",
+ "symbol": "VND"
+ },
+ "ZMW": {
+ "name": "zambiai kwacha",
+ "symbol": "ZMW"
+ },
+ "ZWL": {
+ "name": "Zimbabwei dollár (2009)",
+ "symbol": "ZWL"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/currency/hy.json b/library/intl/resources/currency/hy.json
new file mode 100644
index 000000000..46c14a30c
--- /dev/null
+++ b/library/intl/resources/currency/hy.json
@@ -0,0 +1,634 @@
+{
+ "LSL": {
+ "name": "LSL",
+ "symbol": "LSL"
+ },
+ "SVC": {
+ "name": "SVC",
+ "symbol": "SVC"
+ },
+ "ZWL": {
+ "name": "ZWL",
+ "symbol": "ZWL"
+ },
+ "AZN": {
+ "name": "Ô±Õ¤Ö€Õ¢Õ¥Õ»Õ¡Õ¶Õ¡Õ¯Õ¡Õ¶ Õ´Õ¡Õ¶Õ¡Õ©",
+ "symbol": "AZN"
+ },
+ "ALL": {
+ "name": "Ô±Õ¬Õ¢Õ¡Õ¶Õ¡Õ¯Õ¡Õ¶ Õ¬Õ¥Õ¯",
+ "symbol": "ALL"
+ },
+ "DZD": {
+ "name": "Ô±Õ¬ÕªÕ«Ö€Õ¡Õ¯Õ¡Õ¶ Õ¤Õ«Õ¶Õ¡Ö€",
+ "symbol": "DZD"
+ },
+ "USD": {
+ "name": "Ô±Õ„Õ† Õ¤Õ¸Õ¬Õ¡Ö€",
+ "symbol": "$"
+ },
+ "AOA": {
+ "name": "Ô±Õ¶Õ£Õ¸Õ¬Õ¡Õ¯Õ¡Õ¶ Õ¯Õ¾Õ¡Õ¶Õ¦Õ¡",
+ "symbol": "AOA"
+ },
+ "AUD": {
+ "name": "Ô±Õ¾Õ½Õ¿Ö€Õ¡Õ¬Õ¡Õ¯Õ¡Õ¶ Õ¤Õ¸Õ¬Õ¡Ö€",
+ "symbol": "A$"
+ },
+ "AED": {
+ "name": "Ô±Ö€Õ¡Õ¢Õ¡Õ¯Õ¡Õ¶ Õ„Õ«Õ¡ÖÕµÕ¡Õ¬ Ô·Õ´Õ«Ö€Õ¸Ö‚Õ©ÕµÕ¸Ö‚Õ¶Õ¶Õ¥Ö€Õ« Õ¤Õ«Ö€Õ°Õ¡Õ´",
+ "symbol": "AED"
+ },
+ "ARS": {
+ "name": "Ô±Ö€Õ£Õ¥Õ¶Õ¿Õ«Õ¶Õ¡Õ¯Õ¡Õ¶ ÕºÕ¥Õ½Õ¸",
+ "symbol": "ARS"
+ },
+ "AWG": {
+ "name": "Ô±Ö€Õ¸Ö‚Õ¢Õ¡Õ¯Õ¡Õ¶ Ö†Õ¬Õ¸Ö€Õ«Õ¶",
+ "symbol": "AWG"
+ },
+ "XCD": {
+ "name": "Ô±Ö€Ö‡Õ¥Õ¬Õ¡Õ¯Õ¡Ö€Õ«Õ¢ÕµÕ¡Õ¶ Õ¤Õ¸Õ¬Õ¡Ö€",
+ "symbol": "EC$"
+ },
+ "AFN": {
+ "name": "Ô±Ö†Õ²Õ¡Õ¶Õ¡Õ¯Õ¡Õ¶ Õ¡Ö†Õ²Õ¡Õ¶Õ«",
+ "symbol": "AFN"
+ },
+ "XOF": {
+ "name": "Ô±Ö†Ö€Õ«Õ¯Õ¡Õ¯Õ¡Õ¶ Ö†Õ«Õ¶Õ¡Õ¶Õ½Õ¡Õ¯Õ¡Õ¶ Õ°Õ¡Õ´Õ¡ÕµÕ¶Ö„Õ« Ö†Ö€Õ¡Õ¶Õ¯ BCEAO",
+ "symbol": "CFA"
+ },
+ "XAF": {
+ "name": "Ô±Ö†Ö€Õ«Õ¯Õ¡Õ¯Õ¡Õ¶ Ö†Õ«Õ¶Õ¡Õ¶Õ½Õ¡Õ¯Õ¡Õ¶ Õ°Õ¡Õ´Õ¡ÕµÕ¶Ö„Õ« Ö†Ö€Õ¡Õ¶Õ¯ BEAC",
+ "symbol": "FCFA"
+ },
+ "BSD": {
+ "name": "Ô²Õ¡Õ°Õ¡Õ´Õ¡Õ¯Õ¡Õ¶ Õ¤Õ¸Õ¬Õ¡Ö€",
+ "symbol": "BSD"
+ },
+ "BHD": {
+ "name": "Ô²Õ¡Õ°Ö€Õ¥ÕµÕ¶Õ¡Õ¯Õ¡Õ¶ Õ¤Õ«Õ¶Õ¡Ö€",
+ "symbol": "BHD"
+ },
+ "BDT": {
+ "name": "Ô²Õ¡Õ¶Õ£Õ¬Õ¡Õ¤Õ¥Õ·Õ« Õ¿Õ¡Õ¯Õ¡",
+ "symbol": "BDT"
+ },
+ "BBD": {
+ "name": "Ô²Õ¡Ö€Õ¢Õ¡Õ¤Õ¸Õ½ÕµÕ¡Õ¶ Õ¤Õ¸Õ¬Õ¡Ö€",
+ "symbol": "BBD"
+ },
+ "BYR": {
+ "name": "Ô²Õ¥Õ¬Õ¡Õ¼Õ¸Ö‚Õ½Õ¡Õ¯Õ¡Õ¶ Õ¼Õ¸Ö‚Õ¢Õ¬Õ«",
+ "symbol": "BYR"
+ },
+ "BZD": {
+ "name": "Ô²Õ¥Õ¬Õ«Õ¦Õ« Õ¤Õ¸Õ¬Õ¡Ö€",
+ "symbol": "BZD"
+ },
+ "BMD": {
+ "name": "Ô²Õ¥Ö€Õ´Õ¸Ö‚Õ¤ÕµÕ¡Õ¶ Õ¤Õ¸Õ¬Õ¡Ö€",
+ "symbol": "BMD"
+ },
+ "BWP": {
+ "name": "Ô²Õ¸Õ©Õ½Õ¾Õ¡Õ¶Õ¡Õ¯Õ¡Õ¶ ÕºÕ¸Ö‚Õ¬Õ¡",
+ "symbol": "BWP"
+ },
+ "BOB": {
+ "name": "Ô²Õ¸Õ¬Õ«Õ¾Õ«Õ¡Õ¯Õ¡Õ¶ Õ¢Õ¸Õ¬Õ«Õ¾Õ«Õ¡Õ¶Õ¸",
+ "symbol": "BOB"
+ },
+ "BAM": {
+ "name": "Ô²Õ¸Õ½Õ¶Õ«Õ¡ Ö‡ Õ€Õ¥Ö€ÖÕ¥Õ£Õ¸Õ¾Õ«Õ¶Õ¡ÕµÕ« ÖƒÕ¸Õ­Õ¡Ö€Õ¯Õ¥Õ¬Õ« Õ´Õ¡Ö€Õ¯Õ¡",
+ "symbol": "BAM"
+ },
+ "BTN": {
+ "name": "Ô²Õ¸Ö‚Õ©Õ¡Õ¶Õ¡Õ¯Õ¡Õ¶ Õ¶Õ£Õ¸Ö‚Õ¬Õ¿Ö€Õ¸Ö‚Õ´",
+ "symbol": "BTN"
+ },
+ "BGN": {
+ "name": "Ô²Õ¸Ö‚Õ¬Õ²Õ¡Ö€Õ¡Õ¯Õ¡Õ¶ Õ¬Ö‡",
+ "symbol": "BGN"
+ },
+ "BIF": {
+ "name": "Ô²Õ¸Ö‚Ö€Õ¸Ö‚Õ¶Õ¤Õ«Õ« Ö†Ö€Õ¡Õ¶Õ¯",
+ "symbol": "BIF"
+ },
+ "BRL": {
+ "name": "Ô²Ö€Õ¡Õ¦Õ«Õ¬Õ¡Õ¯Õ¡Õ¶ Õ¼Õ¥Õ¡Õ¬",
+ "symbol": "R$"
+ },
+ "GBP": {
+ "name": "Ô²Ö€Õ«Õ¿Õ¡Õ¶Õ¡Õ¯Õ¡Õ¶ Ö†Õ¸Ö‚Õ¶Õ¿ Õ½Õ¿Õ¥Õ¼Õ¬Õ«Õ¶Õ£",
+ "symbol": "£"
+ },
+ "BND": {
+ "name": "Ô²Ö€Õ¸Ö‚Õ¶Õ¥ÕµÕ¡Õ¯Õ¡Õ¶ Õ¤Õ¸Õ¬Õ¡Ö€",
+ "symbol": "BND"
+ },
+ "GMD": {
+ "name": "Ô³Õ¡Õ´Õ¢Õ«Õ¡Õ¯Õ¡Õ¶ Õ¤Õ¡Õ¬Õ¡Õ½Õ«",
+ "symbol": "GMD"
+ },
+ "GYD": {
+ "name": "Ô³Õ¡ÕµÕ¡Õ¶Õ¡Õ¯Õ¡Õ¶ Õ¤Õ¸Õ¬Õ¡Ö€",
+ "symbol": "GYD"
+ },
+ "GHS": {
+ "name": "Ô³Õ¡Õ¶Õ¡Õ¯Õ¡Õ¶ Õ½Õ¥Õ¤Õ«",
+ "symbol": "GHS"
+ },
+ "GTQ": {
+ "name": "Ô³Õ¾Õ¡Õ¿Õ¥Õ´Õ¡Õ¬Õ¡Õ¯Õ¡Õ¶ Õ¯Õ¥Õ¿Õ½Õ¡Õ¬",
+ "symbol": "GTQ"
+ },
+ "GNF": {
+ "name": "Ô³Õ¾Õ«Õ¶Õ¥Õ¡Õ¯Õ¡Õ¶ Ö†Ö€Õ¡Õ¶Õ¯",
+ "symbol": "GNF"
+ },
+ "DKK": {
+ "name": "Ô´Õ¡Õ¶Õ«Õ¡Õ¯Õ¡Õ¶ Õ¯Ö€Õ¸Õ¶Õ¡",
+ "symbol": "DKK"
+ },
+ "DOP": {
+ "name": "Ô´Õ¸Õ´Õ«Õ¶Õ«Õ¯Õ¡Õ¯Õ¡Õ¶ ÕºÕ¥Õ½Õ¸",
+ "symbol": "DOP"
+ },
+ "EGP": {
+ "name": "ÔµÕ£Õ«ÕºÕ¿Õ¡Õ¯Õ¡Õ¶ Ö†Õ¸Ö‚Õ¶Õ¿",
+ "symbol": "EGP"
+ },
+ "ETB": {
+ "name": "ÔµÕ©Õ¸Õ¾ÕºÕ¡Õ¯Õ¡Õ¶ Õ¢Õ«Ö€",
+ "symbol": "ETB"
+ },
+ "YER": {
+ "name": "ÔµÕ´Õ¥Õ¶Õ¡Õ¯Õ¡Õ¶ Õ¼Õ«Õ¡Õ¬",
+ "symbol": "YER"
+ },
+ "EUR": {
+ "name": "ÔµÕ¾Ö€Õ¸",
+ "symbol": "€"
+ },
+ "ZMW": {
+ "name": "Ô¶Õ¡Õ´Õ¢Õ«Õ¡Õ¯Õ¡Õ¶ Õ¯Õ¾Õ¡Õ¹Õ¡",
+ "symbol": "ZMW"
+ },
+ "ERN": {
+ "name": "Ô·Ö€Õ«Õ©Ö€Õ¥Õ¡Õ¯Õ¡Õ¶ Õ¶Õ¡Õ¯Ö†Õ¡",
+ "symbol": "ERN"
+ },
+ "THB": {
+ "name": "Ô¹Õ¡Õ«Õ¬Õ¡Õ¶Õ¤Õ¡Õ¯Õ¡Õ¶ Õ¢Õ¡Õ¿",
+ "symbol": "฿"
+ },
+ "TWD": {
+ "name": "Ô¹Õ¡ÕµÕ¾Õ¡Õ¶Õ¡Õ¯Õ¡Õ¶ Õ¶Õ¸Ö€ Õ¤Õ¸Õ¬Õ¡Ö€",
+ "symbol": "NT$"
+ },
+ "TND": {
+ "name": "Ô¹Õ¸Ö‚Õ¶Õ«Õ½Õ¡Õ¯Õ¡Õ¶ Õ¤Õ«Õ¶Õ¡Ö€",
+ "symbol": "TND"
+ },
+ "TRY": {
+ "name": "Ô¹Õ¸Ö‚Ö€Ö„Õ¡Õ¯Õ¡Õ¶ Õ¬Õ«Ö€Õ¡",
+ "symbol": "TRY"
+ },
+ "TMT": {
+ "name": "Ô¹Õ¸Ö‚Ö€Ö„Õ´Õ¥Õ¶Õ¡Õ¯Õ¡Õ¶ Õ´Õ¡Õ¶Õ¡Õ©",
+ "symbol": "TMT"
+ },
+ "IDR": {
+ "name": "Ô»Õ¶Õ¤Õ¸Õ¶Õ¥Õ¦Õ¡Õ¯Õ¡Õ¶ Õ¼Õ¸Ö‚ÖƒÕ«",
+ "symbol": "IDR"
+ },
+ "ISK": {
+ "name": "Ô»Õ½Õ¬Õ¡Õ¶Õ¤Õ¡Õ¯Õ¡Õ¶ Õ¯Ö€Õ¸Õ¶Õ¡",
+ "symbol": "ISK"
+ },
+ "ILS": {
+ "name": "Ô»Õ½Ö€Õ¡ÕµÕ¥Õ¬Õ« Õ¶Õ¸Ö€ Õ·Õ¥Õ¯Õ¥Õ¬",
+ "symbol": "₪"
+ },
+ "IRR": {
+ "name": "Ô»Ö€Õ¡Õ¶Õ¡Õ¯Õ¡Õ¶ Õ¼Õ«Õ¡Õ¬",
+ "symbol": "IRR"
+ },
+ "IQD": {
+ "name": "Ô»Ö€Õ¡Ö„ÕµÕ¡Õ¶ Õ¤Õ«Õ¶Õ¡Ö€",
+ "symbol": "IQD"
+ },
+ "LKR": {
+ "name": "Ô¼Õ¡Õ¶Õ¯Õ«Õ¡Õ¯Õ¡Õ¶ Õ¼Õ¸Ö‚ÖƒÕ«",
+ "symbol": "LKR"
+ },
+ "LAK": {
+ "name": "Ô¼Õ¡Õ¸Õ½Õ¡Õ¯Õ¡Õ¶ Õ¯Õ«Õº",
+ "symbol": "LAK"
+ },
+ "PLN": {
+ "name": "Ô¼Õ¥Õ°Õ¡Õ¯Õ¡Õ¶ Õ¦Õ¬Õ¸Õ¿Õ«",
+ "symbol": "PLN"
+ },
+ "LBP": {
+ "name": "Ô¼Õ«Õ¢Õ¡Õ¶Õ¡Õ¶Õ¡Õ¯Õ¡Õ¶ Ö†Õ¸Ö‚Õ¶Õ¿",
+ "symbol": "LBP"
+ },
+ "LRD": {
+ "name": "Ô¼Õ«Õ¢Õ¥Ö€Õ«Õ¡Õ¯Õ¡Õ¶ Õ¤Õ¸Õ¬Õ¡Ö€",
+ "symbol": "LRD"
+ },
+ "LYD": {
+ "name": "Ô¼Õ«Õ¢Õ«Õ¡Õ¯Õ¡Õ¶ Õ¤Õ«Õ¶Õ¡Ö€",
+ "symbol": "LYD"
+ },
+ "LTL": {
+ "name": "Ô¼Õ«Õ¿Õ¾Õ¡Õ¯Õ¡Õ¶ Õ¬Õ«Õ¿",
+ "symbol": "LTL"
+ },
+ "HRK": {
+ "name": "Ô½Õ¸Ö€Õ¾Õ¡Õ©Õ¡Õ¯Õ¡Õ¶ Õ¯Õ¸Ö‚Õ¶Õ¡",
+ "symbol": "HRK"
+ },
+ "CVE": {
+ "name": "Ô¿Õ¡Õ¢Õ¸ ÕŽÕ¥Ö€Õ¤Õ¥Õ« Õ§Õ½Õ¯Õ¸Ö‚Õ¤Õ¸",
+ "symbol": "CVE"
+ },
+ "KHR": {
+ "name": "Ô¿Õ¡Õ´Õ¢Õ¸Õ»Õ¡Õ¯Õ¡Õ¶ Õ¼Õ«Õ¥Õ¬",
+ "symbol": "KHR"
+ },
+ "KYD": {
+ "name": "Ô¿Õ¡ÕµÕ´Õ¡Õ¶ÕµÕ¡Õ¶ Õ¯Õ²Õ¦Õ«Õ¶Õ¥Ö€Õ« Õ¤Õ¸Õ¬Õ¡Ö€",
+ "symbol": "KYD"
+ },
+ "CAD": {
+ "name": "Ô¿Õ¡Õ¶Õ¡Õ¤Õ¡Õ¯Õ¡Õ¶ Õ¤Õ¸Õ¬Õ¡Ö€",
+ "symbol": "CA$"
+ },
+ "KPW": {
+ "name": "Ô¿ÔºÔ´Õ€-Õ« Õ¾Õ¸Õ¶Õ¡",
+ "symbol": "KPW"
+ },
+ "COP": {
+ "name": "Ô¿Õ¸Õ¬Õ¸Ö‚Õ´Õ¢Õ«Õ¡Õ¯Õ¡Õ¶ ÕºÕ¥Õ½Õ¸",
+ "symbol": "COP"
+ },
+ "KMF": {
+ "name": "Ô¿Õ¸Õ´Õ¸Ö€ÕµÕ¡Õ¶ Õ¯Õ²Õ¦Õ«Õ¶Õ¥Ö€Õ« Ö†Ö€Õ¡Õ¶Õ¯",
+ "symbol": "KMF"
+ },
+ "CDF": {
+ "name": "Ô¿Õ¸Õ¶Õ£Õ¸ÕµÕ« Ö†Ö€Õ¡Õ¶Õ¯",
+ "symbol": "CDF"
+ },
+ "CRC": {
+ "name": "Կոստա Ռիկայի կոլոն",
+ "symbol": "CRC"
+ },
+ "CUP": {
+ "name": "Ô¿Õ¸Ö‚Õ¢Õ¡Õ¯Õ¡Õ¶ ÕºÕ¥Õ½Õ¸",
+ "symbol": "CUP"
+ },
+ "CUC": {
+ "name": "Ô¿Õ¸Ö‚Õ¢Õ¡Õ¯Õ¡Õ¶ ÖƒÕ¸Õ­Õ¡Ö€Õ¯Õ¥Õ¬Õ« ÕºÕ¥Õ½Õ¸",
+ "symbol": "CUC"
+ },
+ "XPF": {
+ "name": "Ô¿ÕŠÕ– Ö†Ö€Õ¡Õ¶Õ¯",
+ "symbol": "CFPF"
+ },
+ "HTG": {
+ "name": "Õ€Õ¡Õ«Õ©ÕµÕ¡Õ¶ Õ£Õ¸Ö‚Ö€Õ¤",
+ "symbol": "HTG"
+ },
+ "AMD": {
+ "name": "Õ€Õ¡ÕµÕ¯Õ¡Õ¯Õ¡Õ¶ Õ¤Ö€Õ¡Õ´",
+ "symbol": "Ö"
+ },
+ "ZAR": {
+ "name": "Õ€Õ¡Ö€Õ¡Õ¾Õ¡Ö†Ö€Õ«Õ¯Õ¡Õ¯Õ¡Õ¶ Õ¼Õ¥Õ¶Õ¤",
+ "symbol": "ZAR"
+ },
+ "KRW": {
+ "name": "Õ€Õ¡Ö€Õ¡Õ¾Õ¯Õ¸Ö€Õ¥Õ¡Õ¯Õ¡Õ¶ Õ¾Õ¸Õ¶Õ¡",
+ "symbol": "â‚©"
+ },
+ "SSP": {
+ "name": "Õ€Õ¡Ö€Õ¡Õ¾Õ½Õ¸Ö‚Õ¤Õ¡Õ¶Õ¡Õ¯Õ¡Õ¶ Ö†Õ¸Ö‚Õ¶Õ¿",
+ "symbol": "SSP"
+ },
+ "INR": {
+ "name": "Õ€Õ¶Õ¤Õ¯Õ¡Õ¯Õ¡Õ¶ Õ¼Õ¸Ö‚ÖƒÕ«",
+ "symbol": "₹"
+ },
+ "HNL": {
+ "name": "Õ€Õ¸Õ¶Õ¤Õ¸Ö‚Ö€Õ¡Õ½Õ¡Õ¯Õ¡Õ¶ Õ¬Õ¥Õ´ÕºÖ€Õ«Õ¡",
+ "symbol": "HNL"
+ },
+ "HKD": {
+ "name": "Õ€Õ¸Õ¶Õ¯Õ¸Õ¶Õ£Õ« Õ¤Õ¸Õ¬Õ¡Ö€",
+ "symbol": "HK$"
+ },
+ "JOD": {
+ "name": "Õ€Õ¸Ö€Õ¤Õ¡Õ¶Õ¡Õ¶Õ¡Õ¯Õ¡Õ¶ Õ¤Õ«Õ¶Õ¡Ö€",
+ "symbol": "JOD"
+ },
+ "HUF": {
+ "name": "Õ€Õ¸Ö‚Õ¶Õ£Õ¡Ö€Õ¡Õ¯Õ¡Õ¶ Ö†Õ¸Ö€Õ«Õ¶Õ¿",
+ "symbol": "HUF"
+ },
+ "KZT": {
+ "name": "Õ‚Õ¡Õ¦Õ¡Õ­Õ¡Õ¯Õ¡Õ¶ Õ¿Õ¥Õ¶Õ£Õ¥",
+ "symbol": "KZT"
+ },
+ "KGS": {
+ "name": "Õ‚Ö€Õ²Õ¦Õ¡Õ¯Õ¡Õ¶ Õ½Õ¸Õ´",
+ "symbol": "KGS"
+ },
+ "JPY": {
+ "name": "ÕƒÕ¡ÕºÕ¸Õ¶Õ¡Õ¯Õ¡Õ¶ Õ«Õ¥Õ¶",
+ "symbol": "JPÂ¥"
+ },
+ "MGA": {
+ "name": "Õ„Õ¡Õ¤Õ¡Õ£Õ¡Õ½Õ¯Õ¡Ö€Õ« Õ¡Ö€Õ«Õ¡Ö€Õ«",
+ "symbol": "MGA"
+ },
+ "MYR": {
+ "name": "Õ„Õ¡Õ¬Õ¡ÕµÕ¦Õ«Õ¡Õ¯Õ¡Õ¶ Õ¼Õ«Õ¶Õ£Õ«Õ¿",
+ "symbol": "MYR"
+ },
+ "MWK": {
+ "name": "Õ„Õ¡Õ¬Õ¡Õ¾Õ«Õ¡Õ¯Õ¡Õ¶ Õ¯Õ¾Õ¡Õ¹Õ¡",
+ "symbol": "MWK"
+ },
+ "MVR": {
+ "name": "Õ„Õ¡Õ¬Õ¤Õ«Õ¾ÕµÕ¡Õ¶ Õ¼Õ¸Ö‚Ö†Õ«Õ¡",
+ "symbol": "MVR"
+ },
+ "MOP": {
+ "name": "Õ„Õ¡Õ¯Õ¡Õ¸ÕµÕ« ÕºÕ¡Õ¿Õ¡Õ¯Õ¡",
+ "symbol": "MOP"
+ },
+ "MKD": {
+ "name": "Õ„Õ¡Õ¯Õ¥Õ¤Õ¸Õ¶Õ¡Õ¯Õ¡Õ¶ Õ¤Õ¥Õ¶Õ¡Ö€",
+ "symbol": "MKD"
+ },
+ "MUR": {
+ "name": "Õ„Õ¡Õ¾Ö€Õ«Õ¯Õ¡Õ¯Õ¡Õ¶ Õ¼Õ¸Ö‚ÖƒÕ«",
+ "symbol": "MUR"
+ },
+ "MRO": {
+ "name": "Õ„Õ¡Õ¾Ö€Õ«Õ¿Õ¡Õ¶Õ¡Õ¯Õ¡Õ¶ Õ¸Ö‚Õ£Õ«ÕµÕ¡",
+ "symbol": "MRO"
+ },
+ "MAD": {
+ "name": "Õ„Õ¡Ö€Õ¸Õ¯Õ¡Õ¯Õ¡Õ¶ Õ¤Õ«Ö€Õ°Õ¡Õ´",
+ "symbol": "MAD"
+ },
+ "MXN": {
+ "name": "Õ„Õ¥Ö„Õ½Õ«Õ¯Õ¡Õ¯Õ¡Õ¶ ÕºÕ¥Õ½Õ¸",
+ "symbol": "MX$"
+ },
+ "MMK": {
+ "name": "Õ„ÕµÕ¡Õ¶Õ´Õ¡Õ¯Õ¡Õ¶ Õ¯ÕµÕ¡Õ¿",
+ "symbol": "MMK"
+ },
+ "MZN": {
+ "name": "Õ„Õ¸Õ¦Õ¡Õ´Õ¢Õ«Õ¯ÕµÕ¡Õ¶ Õ´Õ¥Õ¿Õ«Õ¯Õ¡Õ¬",
+ "symbol": "MZN"
+ },
+ "MDL": {
+ "name": "Õ„Õ¸Õ¬Õ¤Õ¸Õ¾Õ¡Õ¯Õ¡Õ¶ Õ¬Õ¥Õµ",
+ "symbol": "MDL"
+ },
+ "MNT": {
+ "name": "Õ„Õ¸Õ¶Õ²Õ¸Õ¬Õ¡Õ¯Õ¡Õ¶ Õ¿Õ¸Ö‚Õ£Ö€Õ«Õ¯",
+ "symbol": "MNT"
+ },
+ "NAD": {
+ "name": "Õ†Õ¡Õ´Õ«Õ¢Õ«Õ¡Õ¯Õ¡Õ¶ Õ¤Õ¸Õ¬Õ¡Ö€",
+ "symbol": "NAD"
+ },
+ "NPR": {
+ "name": "Õ†Õ¥ÕºÕ¡Õ¬Õ¡Õ¯Õ¡Õ¶ Õ¼Õ¸Ö‚ÖƒÕ«",
+ "symbol": "NPR"
+ },
+ "NGN": {
+ "name": "Õ†Õ«Õ£Õ¥Ö€Õ«Õ¡Õ¯Õ¡Õ¶ Õ¶Õ¡ÕµÖ€Õ¡",
+ "symbol": "NGN"
+ },
+ "ANG": {
+ "name": "Õ†Õ«Õ¤Õ¥Ö€Õ¬Õ¡Õ¶Õ¤Õ¡Õ¯Õ¡Õ¶ Ô±Õ¶Õ¿Õ«Õ¬Õ¶Õ¥Ö€Õ« Õ£Õ¸Ö‚Õ¬Õ¤Õ¥Õ¶",
+ "symbol": "ANG"
+ },
+ "NIO": {
+ "name": "Õ†Õ«Õ¯Õ¡Ö€Õ¡Õ£Õ¸Ö‚Õ¡Õ¯Õ¡Õ¶ Õ¯Õ¸Ö€Õ¤Õ¸Õ¢Õ¡",
+ "symbol": "NIO"
+ },
+ "NZD": {
+ "name": "Õ†Õ¸Ö€Õ¦Õ¥Õ¬Õ¡Õ¶Õ¤Õ¡Õ¯Õ¡Õ¶ Õ¤Õ¸Õ¬Õ¡Ö€",
+ "symbol": "NZ$"
+ },
+ "NOK": {
+ "name": "Õ†Õ¸Ö€Õ¾Õ¥Õ£Õ¡Õ¯Õ¡Õ¶ Õ¯Ö€Õ¸Õ¶Õ¡",
+ "symbol": "NOK"
+ },
+ "SEK": {
+ "name": "Õ‡Õ¾Õ¥Õ¤Õ¡Õ¯Õ¡Õ¶ Õ¯Ö€Õ¸Õ¶Õ¡",
+ "symbol": "SEK"
+ },
+ "CHF": {
+ "name": "Õ‡Õ¾Õ¥ÕµÖÕ¡Ö€Õ¡Õ¯Õ¡Õ¶ Ö†Ö€Õ¡Õ¶Õ¯",
+ "symbol": "CHF"
+ },
+ "UGX": {
+ "name": "ÕˆÖ‚Õ£Õ¡Õ¶Õ¤Õ¡Õ¯Õ¡Õ¶ Õ·Õ«Õ¬Õ«Õ¶Õ£",
+ "symbol": "UGX"
+ },
+ "UZS": {
+ "name": "ÕˆÖ‚Õ¦Õ¢Õ¥Õ¯Õ¡Õ¯Õ¡Õ¶ Õ½Õ¸Ö‚Õ´",
+ "symbol": "UZS"
+ },
+ "UAH": {
+ "name": "ÕˆÖ‚Õ¯Ö€Õ¡Õ«Õ¶Õ¡Õ¯Õ¡Õ¶ Õ£Ö€Õ«Õ¾Õ¶Õ¡",
+ "symbol": "UAH"
+ },
+ "UYU": {
+ "name": "ÕˆÖ‚Ö€Õ¸Ö‚Õ£Õ¾Õ¡ÕµÕ¡Õ¯Õ¡Õ¶ ÕºÕ¥Õ½Õ¸",
+ "symbol": "UYU"
+ },
+ "CZK": {
+ "name": "Õ‰Õ¥Õ­Õ¡Õ¯Õ¡Õ¶ Õ¯Ö€Õ¸Õ¶Õ¡",
+ "symbol": "CZK"
+ },
+ "CLP": {
+ "name": "Õ‰Õ«Õ¬Õ«Õ¡Õ¯Õ¡Õ¶ ÕºÕ¥Õ½Õ¸",
+ "symbol": "CLP"
+ },
+ "CNY": {
+ "name": "Õ‰Õ«Õ¶Õ¡Õ¯Õ¡Õ¶ ÕµÕ¸Ö‚Õ¡Õ¶",
+ "symbol": "CNÂ¥"
+ },
+ "PKR": {
+ "name": "ÕŠÕ¡Õ¯Õ«Õ½Õ¿Õ¡Õ¶Õ¡Õ¯Õ¡Õ¶ Õ¼Õ¸Ö‚ÖƒÕ«",
+ "symbol": "PKR"
+ },
+ "PAB": {
+ "name": "ÕŠÕ¡Õ¶Õ¡Õ´Õ¡Õ¯Õ¡Õ¶ Õ¢Õ¡Õ¬Õ¢Õ¸Õ¡",
+ "symbol": "PAB"
+ },
+ "PGK": {
+ "name": "ÕŠÕ¡ÕºÕ¸Ö‚Õ¡-Õ†Õ¸Ö€ Ô³Õ¾Õ«Õ¶Õ¥Õ¡ÕµÕ« Õ¯Õ«Õ¶Õ¡",
+ "symbol": "PGK"
+ },
+ "PYG": {
+ "name": "ÕŠÕ¡Ö€Õ¡Õ£Õ¾Õ¡ÕµÕ¡Õ¯Õ¡Õ¶ Õ£Õ¸Ö‚Õ¡Ö€Õ¡Õ¶Õ«",
+ "symbol": "PYG"
+ },
+ "PEN": {
+ "name": "ÕŠÕ¥Ö€Õ¸Ö‚Õ« Õ¶Õ¸Ö€ Õ½Õ¸Õ¬",
+ "symbol": "PEN"
+ },
+ "JMD": {
+ "name": "Õ‹Õ¡Õ´Õ¡ÕµÕ¯Õ¡Õ¯Õ¡Õ¶ Õ¤Õ¸Õ¬Õ¡Ö€",
+ "symbol": "JMD"
+ },
+ "DJF": {
+ "name": "Õ‹Õ«Õ¢Õ¸Ö‚Õ©Õ«Õ« Ö†Ö€Õ¡Õ¶Õ¯",
+ "symbol": "DJF"
+ },
+ "GIP": {
+ "name": "Õ‹Õ«Õ¢Ö€Õ¡Õ¬Õ©Õ¡Ö€Õ« Ö†Õ¸Ö‚Õ¶Õ¿",
+ "symbol": "GIP"
+ },
+ "RWF": {
+ "name": "Ռուանդական ֆրանկ",
+ "symbol": "RWF"
+ },
+ "RON": {
+ "name": "Ռումինական լեյ",
+ "symbol": "RON"
+ },
+ "RUB": {
+ "name": "Ռուսական ռուբլի",
+ "symbol": "RUB"
+ },
+ "WST": {
+ "name": "ÕÕ¡Õ´Õ¸Õ¡Õ¯Õ¡Õ¶ Õ¿Õ¡Õ¬Õ¡",
+ "symbol": "WST"
+ },
+ "STD": {
+ "name": "ÕÕ¡Õ¶ ÕÕ¸Õ´Õ¥ Ö‡ ÕŠÖ€Õ«Õ¶Õ½Õ«ÕºÕ«Õ« Õ¤Õ¸Õ¢Ö€Õ¡",
+ "symbol": "STD"
+ },
+ "SAR": {
+ "name": "ÕÕ¡Õ¸Ö‚Õ¤ÕµÕ¡Õ¶ Ô±Ö€Õ¡Õ¢Õ«Õ¡ÕµÕ« Õ¼Õ«Õ¡Õ¬",
+ "symbol": "SAR"
+ },
+ "SCR": {
+ "name": "ÕÕ¥ÕµÕ·Õ¥Õ¬ÕµÕ¡Õ¶ Õ¯Õ²Õ¦Õ«Õ¶Õ¥Ö€Õ« Õ¼Õ¸Ö‚ÖƒÕ«",
+ "symbol": "SCR"
+ },
+ "RSD": {
+ "name": "ÕÕ¥Ö€Õ¢Õ¡Õ¯Õ¡Õ¶ Õ¤Õ«Õ¶Õ¡Ö€",
+ "symbol": "RSD"
+ },
+ "SLL": {
+ "name": "ÕÕ«Õ¥Ö€Õ¡-Ô¼Õ¥Õ¸Õ¶Õ¥Õ« Õ¬Õ¥Õ¸Õ¶Õ¥",
+ "symbol": "SLL"
+ },
+ "SGD": {
+ "name": "ÕÕ«Õ¶Õ£Õ¡ÕºÕ¸Ö‚Ö€ÕµÕ¡Õ¶ Õ¤Õ¸Õ¬Õ¡Ö€",
+ "symbol": "SGD"
+ },
+ "SYP": {
+ "name": "ÕÕ«Ö€Õ«Õ¡Õ¯Õ¡Õ¶ Ö†Õ¸Ö‚Õ¶Õ¿",
+ "symbol": "SYP"
+ },
+ "SBD": {
+ "name": "ÕÕ¸Õ²Õ¸Õ´Õ¸Õ¶ÕµÕ¡Õ¶ Õ¯Õ²Õ¦Õ«Õ¶Õ¥Ö€Õ« Õ¤Õ¸Õ¬Õ¡Ö€",
+ "symbol": "SBD"
+ },
+ "SOS": {
+ "name": "ÕÕ¸Õ´Õ¡Õ¬Õ«Õ¡Õ¯Õ¡Õ¶ Õ·Õ«Õ¬Õ«Õ¶Õ£",
+ "symbol": "SOS"
+ },
+ "SDG": {
+ "name": "ÕÕ¸Ö‚Õ¤Õ¡Õ¶Õ¡Õ¯Õ¡Õ¶ Ö†Õ¸Ö‚Õ¶Õ¿",
+ "symbol": "SDG"
+ },
+ "SHP": {
+ "name": "ÕÕ¸Ö‚Ö€Õ¢ Õ€Õ¥Õ²Õ«Õ¶Õ¥Õ« Õ¯Õ²Õ¦Õ¸Ö‚ Ö†Õ¸Ö‚Õ¶Õ¿",
+ "symbol": "SHP"
+ },
+ "SRD": {
+ "name": "ÕÕ¸Ö‚Ö€Õ«Õ¶Õ¡Õ´Õ¡Õ¯Õ¡Õ¶ Õ¤Õ¸Õ¬Õ¡Ö€",
+ "symbol": "SRD"
+ },
+ "SZL": {
+ "name": "ÕÕ¾Õ¡Õ¦Õ«Õ¬Õ¥Õ¶Õ¤Õ¡Õ¯Õ¡Õ¶ Õ¬Õ«Õ¬Õ¡Õ¶Õ£Õ¥Õ¶Õ«",
+ "symbol": "SZL"
+ },
+ "VUV": {
+ "name": "ÕŽÕ¡Õ¶Õ¸Ö‚Õ¡Õ¿Õ¸Ö‚Õ« Õ¾Õ¡Õ¿Õ¸Ö‚",
+ "symbol": "VUV"
+ },
+ "VEF": {
+ "name": "ÕŽÕ¥Õ¶Õ¥Õ½Õ¸Ö‚Õ¥Õ¬Õ¡Õ¯Õ¡Õ¶ Õ¢Õ¸Õ¬Õ«Õ¾Õ¡Ö€",
+ "symbol": "VEF"
+ },
+ "VND": {
+ "name": "ÕŽÕ«Õ¥Õ¿Õ¶Õ¡Õ´Õ¡Õ¯Õ¡Õ¶ Õ¤Õ¸Õ¶Õ£",
+ "symbol": "â‚«"
+ },
+ "GEL": {
+ "name": "ÕŽÖ€Õ¡ÖÕ¡Õ¯Õ¡Õ¶ Õ¬Õ¡Ö€Õ«",
+ "symbol": "GEL"
+ },
+ "TZS": {
+ "name": "ÕÕ¡Õ¶Õ¦Õ¡Õ¶Õ«Õ¡Õ¯Õ¡Õ¶ Õ·Õ«Õ¬Õ«Õ¶Õ£",
+ "symbol": "TZS"
+ },
+ "TJS": {
+ "name": "ÕÕ¡Õ»Õ«Õ¯Õ¡Õ¯Õ¡Õ¶ Õ½Õ¸Õ´Õ¸Õ¶Õ«",
+ "symbol": "TJS"
+ },
+ "TOP": {
+ "name": "ÕÕ¸Õ¶Õ£Õ¡ÕµÕ« ÕºÕ¡Õ¡Õ¶Õ£Õ¡",
+ "symbol": "TOP"
+ },
+ "TTD": {
+ "name": "ÕÖ€Õ«Õ¶Õ«Õ¤Õ¡Õ¤ Ö‡ ÕÕ¸Õ¢Õ¡Õ£Õ¸ÕµÕ« Õ¤Õ¸Õ¬Õ¡Ö€",
+ "symbol": "TTD"
+ },
+ "QAR": {
+ "name": "Õ”Õ¡Õ©Õ¡Ö€Õ¡Õ¯Õ¡Õ¶ Õ¼Õ«Õ¡Õ¬",
+ "symbol": "QAR"
+ },
+ "KES": {
+ "name": "Õ”Õ¥Õ¶Õ«Õ¡Õ¯Õ¡Õ¶ Õ·Õ«Õ¬Õ«Õ¶Õ£",
+ "symbol": "KES"
+ },
+ "KWD": {
+ "name": "Õ”Õ¸Ö‚Õ¾Õ¥ÕµÕ©Õ¡Õ¯Õ¡Õ¶ Õ¤Õ«Õ¶Õ¡Ö€",
+ "symbol": "KWD"
+ },
+ "OMR": {
+ "name": "Õ•Õ´Õ¡Õ¶Õ¡Õ¯Õ¡Õ¶ Õ¼Õ«Õ¡Õ¬",
+ "symbol": "OMR"
+ },
+ "PHP": {
+ "name": "Õ–Õ«Õ¬Õ«ÕºÕ«Õ¶Õ¡Õ¯Õ¡Õ¶ ÕºÕ¥Õ½Õ¸",
+ "symbol": "PHP"
+ },
+ "FJD": {
+ "name": "Õ–Õ«Õ»Õ«Õ¡Õ¯Õ¡Õ¶ Õ¤Õ¸Õ¬Õ¡Ö€",
+ "symbol": "FJD"
+ },
+ "FKP": {
+ "name": "Õ–Õ¸Õ¬Õ¯Õ¬Õ¥Õ¶Õ¤ÕµÕ¡Õ¶ Õ¯Õ²Õ¦Õ«Õ¶Õ¥Ö€ Ö†Õ¸Ö‚Õ¶Õ¿",
+ "symbol": "FKP"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/currency/id.json b/library/intl/resources/currency/id.json
new file mode 100644
index 000000000..3e27f70c9
--- /dev/null
+++ b/library/intl/resources/currency/id.json
@@ -0,0 +1,634 @@
+{
+ "AFN": {
+ "name": "Afgani Afganistan",
+ "symbol": "AFN"
+ },
+ "MGA": {
+ "name": "Ariary Madagaskar",
+ "symbol": "MGA"
+ },
+ "THB": {
+ "name": "Baht Thailand",
+ "symbol": "฿"
+ },
+ "PAB": {
+ "name": "Balboa Panama",
+ "symbol": "PAB"
+ },
+ "ETB": {
+ "name": "Birr Etiopia",
+ "symbol": "ETB"
+ },
+ "VEF": {
+ "name": "Bolivar Venezuela",
+ "symbol": "VEF"
+ },
+ "BOB": {
+ "name": "Boliviano",
+ "symbol": "BOB"
+ },
+ "GHS": {
+ "name": "Cedi Ghana",
+ "symbol": "GHS"
+ },
+ "SVC": {
+ "name": "Colon El Savador",
+ "symbol": "SVC"
+ },
+ "CRC": {
+ "name": "Colon Kosta Rika",
+ "symbol": "CRC"
+ },
+ "NIO": {
+ "name": "Cordoba Nikaragua",
+ "symbol": "NIO"
+ },
+ "GMD": {
+ "name": "Dalasi Gambia",
+ "symbol": "GMD"
+ },
+ "MKD": {
+ "name": "Denar Makedonia",
+ "symbol": "MKD"
+ },
+ "DZD": {
+ "name": "Dinar Algeria",
+ "symbol": "DZD"
+ },
+ "BHD": {
+ "name": "Dinar Bahrain",
+ "symbol": "BHD"
+ },
+ "IQD": {
+ "name": "Dinar Irak",
+ "symbol": "IQD"
+ },
+ "KWD": {
+ "name": "Dinar Kuwait",
+ "symbol": "KWD"
+ },
+ "LYD": {
+ "name": "Dinar Libya",
+ "symbol": "LYD"
+ },
+ "RSD": {
+ "name": "Dinar Serbia",
+ "symbol": "RSD"
+ },
+ "TND": {
+ "name": "Dinar Tunisia",
+ "symbol": "TND"
+ },
+ "JOD": {
+ "name": "Dinar Yordania",
+ "symbol": "JOD"
+ },
+ "MAD": {
+ "name": "Dirham Maroko",
+ "symbol": "MAD"
+ },
+ "AED": {
+ "name": "Dirham Uni Emirat Arab",
+ "symbol": "AED"
+ },
+ "STD": {
+ "name": "Dobra Sao Tome dan Principe",
+ "symbol": "STD"
+ },
+ "USD": {
+ "name": "Dolar Amerika Serikat",
+ "symbol": "US$"
+ },
+ "AUD": {
+ "name": "Dolar Australia",
+ "symbol": "AU$"
+ },
+ "BSD": {
+ "name": "Dolar Bahama",
+ "symbol": "BSD"
+ },
+ "BBD": {
+ "name": "Dolar Barbados",
+ "symbol": "BBD"
+ },
+ "TWD": {
+ "name": "Dolar Baru Taiwan",
+ "symbol": "NT$"
+ },
+ "BZD": {
+ "name": "Dolar Belize",
+ "symbol": "BZD"
+ },
+ "BMD": {
+ "name": "Dolar Bermuda",
+ "symbol": "BMD"
+ },
+ "BND": {
+ "name": "Dolar Brunei",
+ "symbol": "BND"
+ },
+ "FJD": {
+ "name": "Dolar Fiji",
+ "symbol": "FJD"
+ },
+ "GYD": {
+ "name": "Dolar Guyana",
+ "symbol": "GYD"
+ },
+ "HKD": {
+ "name": "Dolar Hong Kong",
+ "symbol": "HK$"
+ },
+ "JMD": {
+ "name": "Dolar Jamaika",
+ "symbol": "JMD"
+ },
+ "CAD": {
+ "name": "Dolar Kanada",
+ "symbol": "CA$"
+ },
+ "XCD": {
+ "name": "Dolar Karibia Timur",
+ "symbol": "EC$"
+ },
+ "KYD": {
+ "name": "Dolar Kepulauan Cayman",
+ "symbol": "KYD"
+ },
+ "SBD": {
+ "name": "Dolar Kepulauan Solomon",
+ "symbol": "SBD"
+ },
+ "LRD": {
+ "name": "Dolar Liberia",
+ "symbol": "LRD"
+ },
+ "NAD": {
+ "name": "Dolar Namibia",
+ "symbol": "NAD"
+ },
+ "NZD": {
+ "name": "Dolar Selandia Baru",
+ "symbol": "NZ$"
+ },
+ "SGD": {
+ "name": "Dolar Singapura",
+ "symbol": "SGD"
+ },
+ "SRD": {
+ "name": "Dolar Suriname",
+ "symbol": "SRD"
+ },
+ "TTD": {
+ "name": "Dolar Trinidad dan Tobago",
+ "symbol": "TTD"
+ },
+ "ZWL": {
+ "name": "Dolar Zimbabwe (2009)",
+ "symbol": "ZWL"
+ },
+ "VND": {
+ "name": "Dong Vietnam",
+ "symbol": "â‚«"
+ },
+ "AMD": {
+ "name": "Dram Armenia",
+ "symbol": "AMD"
+ },
+ "CVE": {
+ "name": "Escudo Tanjung Verde",
+ "symbol": "CVE"
+ },
+ "EUR": {
+ "name": "Euro",
+ "symbol": "€"
+ },
+ "AWG": {
+ "name": "Florin Aruba",
+ "symbol": "AWG"
+ },
+ "HUF": {
+ "name": "Forint Hungaria",
+ "symbol": "HUF"
+ },
+ "BIF": {
+ "name": "Franc Burundi",
+ "symbol": "BIF"
+ },
+ "XOF": {
+ "name": "Franc CFA BCEAO",
+ "symbol": "CFA"
+ },
+ "XAF": {
+ "name": "Franc CFA BEAC",
+ "symbol": "FCFA"
+ },
+ "XPF": {
+ "name": "Franc CFP",
+ "symbol": "CFPF"
+ },
+ "GNF": {
+ "name": "Franc Guinea",
+ "symbol": "GNF"
+ },
+ "DJF": {
+ "name": "Franc Jibuti",
+ "symbol": "DJF"
+ },
+ "KMF": {
+ "name": "Franc Komoro",
+ "symbol": "KMF"
+ },
+ "CDF": {
+ "name": "Franc Kongo",
+ "symbol": "CDF"
+ },
+ "RWF": {
+ "name": "Franc Rwanda",
+ "symbol": "RWF"
+ },
+ "CHF": {
+ "name": "Franc Swiss",
+ "symbol": "CHF"
+ },
+ "HTG": {
+ "name": "Gourde Haiti",
+ "symbol": "HTG"
+ },
+ "PYG": {
+ "name": "Guarani Paraguay",
+ "symbol": "PYG"
+ },
+ "ANG": {
+ "name": "Guilder Antilla Belanda",
+ "symbol": "ANG"
+ },
+ "UAH": {
+ "name": "Hryvnia Ukraina",
+ "symbol": "UAH"
+ },
+ "PGK": {
+ "name": "Kina Papua Nugini",
+ "symbol": "PGK"
+ },
+ "LAK": {
+ "name": "Kip Laos",
+ "symbol": "LAK"
+ },
+ "CZK": {
+ "name": "Koruna Cheska",
+ "symbol": "CZK"
+ },
+ "ISK": {
+ "name": "Krona Islandia",
+ "symbol": "ISK"
+ },
+ "SEK": {
+ "name": "Krona Swedia",
+ "symbol": "SEK"
+ },
+ "DKK": {
+ "name": "Krone Denmark",
+ "symbol": "DKK"
+ },
+ "NOK": {
+ "name": "Krone Norwegia",
+ "symbol": "NOK"
+ },
+ "HRK": {
+ "name": "Kuna Kroasia",
+ "symbol": "HRK"
+ },
+ "MWK": {
+ "name": "Kwacha Malawi",
+ "symbol": "MWK"
+ },
+ "ZMW": {
+ "name": "Kwacha Zambia",
+ "symbol": "ZMW"
+ },
+ "AOA": {
+ "name": "Kwanza Angola",
+ "symbol": "AOA"
+ },
+ "MMK": {
+ "name": "Kyat Myanmar",
+ "symbol": "MMK"
+ },
+ "GEL": {
+ "name": "Lari Georgia",
+ "symbol": "GEL"
+ },
+ "ALL": {
+ "name": "Lek Albania",
+ "symbol": "ALL"
+ },
+ "HNL": {
+ "name": "Lempira Honduras",
+ "symbol": "HNL"
+ },
+ "SLL": {
+ "name": "Leone Sierra Leone",
+ "symbol": "SLL"
+ },
+ "MDL": {
+ "name": "Leu Moldova",
+ "symbol": "MDL"
+ },
+ "RON": {
+ "name": "Leu Rumania",
+ "symbol": "RON"
+ },
+ "BGN": {
+ "name": "Lev Bulgaria",
+ "symbol": "BGN"
+ },
+ "SZL": {
+ "name": "Lilangeni Swaziland",
+ "symbol": "SZL"
+ },
+ "TRY": {
+ "name": "Lira Turki",
+ "symbol": "TRY"
+ },
+ "LTL": {
+ "name": "Litas Lituania",
+ "symbol": "LTL"
+ },
+ "LSL": {
+ "name": "Loti Lesotho",
+ "symbol": "LSL"
+ },
+ "AZN": {
+ "name": "Manat Azerbaijan",
+ "symbol": "AZN"
+ },
+ "TMT": {
+ "name": "Manat Turkimenistan",
+ "symbol": "TMT"
+ },
+ "BAM": {
+ "name": "Mark Konvertibel Bosnia-Herzegovina",
+ "symbol": "BAM"
+ },
+ "MZN": {
+ "name": "Metical Mozambik",
+ "symbol": "MZN"
+ },
+ "NGN": {
+ "name": "Naira Nigeria",
+ "symbol": "NGN"
+ },
+ "ERN": {
+ "name": "Nakfa Eritrea",
+ "symbol": "ERN"
+ },
+ "BTN": {
+ "name": "Ngultrum Bhutan",
+ "symbol": "BTN"
+ },
+ "PEN": {
+ "name": "Nuevo Sol Peru",
+ "symbol": "PEN"
+ },
+ "MRO": {
+ "name": "Ouguiya Mauritania",
+ "symbol": "MRO"
+ },
+ "TOP": {
+ "name": "Paʻanga Tonga",
+ "symbol": "TOP"
+ },
+ "MOP": {
+ "name": "Pataca Makau",
+ "symbol": "MOP"
+ },
+ "ARS": {
+ "name": "Peso Argentina",
+ "symbol": "ARS"
+ },
+ "CLP": {
+ "name": "Peso Cile",
+ "symbol": "CLP"
+ },
+ "DOP": {
+ "name": "Peso Dominika",
+ "symbol": "DOP"
+ },
+ "PHP": {
+ "name": "Peso Filipina",
+ "symbol": "PHP"
+ },
+ "COP": {
+ "name": "Peso Kolombia",
+ "symbol": "COP"
+ },
+ "CUC": {
+ "name": "Peso Konvertibel Kuba",
+ "symbol": "CUC"
+ },
+ "CUP": {
+ "name": "Peso Kuba",
+ "symbol": "CUP"
+ },
+ "MXN": {
+ "name": "Peso Meksiko",
+ "symbol": "MX$"
+ },
+ "UYU": {
+ "name": "Peso Uruguay",
+ "symbol": "$U"
+ },
+ "PLN": {
+ "name": "Polandia Zloty",
+ "symbol": "PLN"
+ },
+ "GIP": {
+ "name": "Pound Gibraltar",
+ "symbol": "GIP"
+ },
+ "FKP": {
+ "name": "Pound Kepulauan Falkland",
+ "symbol": "FKP"
+ },
+ "LBP": {
+ "name": "Pound Lebanon",
+ "symbol": "LBP"
+ },
+ "EGP": {
+ "name": "Pound Mesir",
+ "symbol": "EGP"
+ },
+ "SHP": {
+ "name": "Pound Saint Helena",
+ "symbol": "SHP"
+ },
+ "GBP": {
+ "name": "Pound Sterling Inggris",
+ "symbol": "£"
+ },
+ "SDG": {
+ "name": "Pound Sudan",
+ "symbol": "SDG"
+ },
+ "SSP": {
+ "name": "Pound Sudan Selatan",
+ "symbol": "SSP"
+ },
+ "SYP": {
+ "name": "Pound Suriah",
+ "symbol": "SYP"
+ },
+ "BWP": {
+ "name": "Pula Botswana",
+ "symbol": "BWP"
+ },
+ "GTQ": {
+ "name": "Quetzal Guatemala",
+ "symbol": "GTQ"
+ },
+ "ZAR": {
+ "name": "Rand Afrika Selatan",
+ "symbol": "ZAR"
+ },
+ "BRL": {
+ "name": "Real Brasil",
+ "symbol": "R$"
+ },
+ "IRR": {
+ "name": "Rial Iran",
+ "symbol": "IRR"
+ },
+ "OMR": {
+ "name": "Rial Oman",
+ "symbol": "OMR"
+ },
+ "QAR": {
+ "name": "Rial Qatar",
+ "symbol": "QAR"
+ },
+ "YER": {
+ "name": "Rial Yaman",
+ "symbol": "YER"
+ },
+ "KHR": {
+ "name": "Riel Kamboja",
+ "symbol": "KHR"
+ },
+ "MYR": {
+ "name": "Ringgit Malaysia",
+ "symbol": "MYR"
+ },
+ "SAR": {
+ "name": "Riyal Arab Saudi",
+ "symbol": "SAR"
+ },
+ "BYR": {
+ "name": "Rubel Belarusia",
+ "symbol": "BYR"
+ },
+ "RUB": {
+ "name": "Rubel Rusia",
+ "symbol": "RUB"
+ },
+ "MVR": {
+ "name": "Rufiyaa Maladewa",
+ "symbol": "MVR"
+ },
+ "INR": {
+ "name": "Rupee India",
+ "symbol": "Rs"
+ },
+ "MUR": {
+ "name": "Rupee Mauritius",
+ "symbol": "MUR"
+ },
+ "NPR": {
+ "name": "Rupee Nepal",
+ "symbol": "NPR"
+ },
+ "PKR": {
+ "name": "Rupee Pakistan",
+ "symbol": "PKR"
+ },
+ "SCR": {
+ "name": "Rupee Seychelles",
+ "symbol": "SCR"
+ },
+ "LKR": {
+ "name": "Rupee Sri Lanka",
+ "symbol": "LKR"
+ },
+ "IDR": {
+ "name": "Rupiah Indonesia",
+ "symbol": "Rp"
+ },
+ "ILS": {
+ "name": "Shekel Baru Israel",
+ "symbol": "₪"
+ },
+ "KES": {
+ "name": "Shilling Kenya",
+ "symbol": "KES"
+ },
+ "SOS": {
+ "name": "Shilling Somalia",
+ "symbol": "SOS"
+ },
+ "TZS": {
+ "name": "Shilling Tanzania",
+ "symbol": "TZS"
+ },
+ "UGX": {
+ "name": "Shilling Uganda",
+ "symbol": "UGX"
+ },
+ "KGS": {
+ "name": "Som Kirgistan",
+ "symbol": "KGS"
+ },
+ "UZS": {
+ "name": "Som Uzbekistan",
+ "symbol": "UZS"
+ },
+ "TJS": {
+ "name": "Somoni Tajikistan",
+ "symbol": "TJS"
+ },
+ "BDT": {
+ "name": "Taka Bangladesh",
+ "symbol": "BDT"
+ },
+ "WST": {
+ "name": "Tala Samoa",
+ "symbol": "WST"
+ },
+ "KZT": {
+ "name": "Tenge Kazakstan",
+ "symbol": "KZT"
+ },
+ "MNT": {
+ "name": "Tugrik Mongolia",
+ "symbol": "MNT"
+ },
+ "VUV": {
+ "name": "Vatu Vanuatu",
+ "symbol": "VUV"
+ },
+ "KRW": {
+ "name": "Won Korea Selatan",
+ "symbol": "â‚©"
+ },
+ "KPW": {
+ "name": "Won Korea Utara",
+ "symbol": "KPW"
+ },
+ "JPY": {
+ "name": "Yen Jepang",
+ "symbol": "JPÂ¥"
+ },
+ "CNY": {
+ "name": "Yuan China",
+ "symbol": "CNÂ¥"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/currency/is.json b/library/intl/resources/currency/is.json
new file mode 100644
index 000000000..e2d74d04a
--- /dev/null
+++ b/library/intl/resources/currency/is.json
@@ -0,0 +1,634 @@
+{
+ "AFN": {
+ "name": "Afgani",
+ "symbol": "AFN"
+ },
+ "ALL": {
+ "name": "Albanskt lek",
+ "symbol": "ALL"
+ },
+ "DZD": {
+ "name": "Alsírskur denari",
+ "symbol": "DZD"
+ },
+ "AOA": {
+ "name": "Angólsk kvansa",
+ "symbol": "AOA"
+ },
+ "AED": {
+ "name": "Arabískt dírham",
+ "symbol": "AED"
+ },
+ "ARS": {
+ "name": "Argentínskur pesi",
+ "symbol": "ARS"
+ },
+ "AMD": {
+ "name": "Armenskt dramm",
+ "symbol": "AMD"
+ },
+ "AWG": {
+ "name": "Arúbönsk flórína",
+ "symbol": "AWG"
+ },
+ "AZN": {
+ "name": "Aserskt manat",
+ "symbol": "AZN"
+ },
+ "XCD": {
+ "name": "Austurkarabískur dalur",
+ "symbol": "EC$"
+ },
+ "AUD": {
+ "name": "Ãstralskur dalur",
+ "symbol": "AUD"
+ },
+ "BSD": {
+ "name": "Bahamadalur",
+ "symbol": "BSD"
+ },
+ "PAB": {
+ "name": "Balbói",
+ "symbol": "PAB"
+ },
+ "USD": {
+ "name": "Bandaríkjadalur",
+ "symbol": "USD"
+ },
+ "BDT": {
+ "name": "Bangladessk taka",
+ "symbol": "BDT"
+ },
+ "BBD": {
+ "name": "Barbadoskur dalur",
+ "symbol": "BBD"
+ },
+ "BHD": {
+ "name": "Bareinskur denari",
+ "symbol": "BHD"
+ },
+ "BZD": {
+ "name": "Belískur dalur",
+ "symbol": "BZD"
+ },
+ "BMD": {
+ "name": "Bermúdadalur",
+ "symbol": "BMD"
+ },
+ "BWP": {
+ "name": "Botsvönsk púla",
+ "symbol": "BWP"
+ },
+ "BOB": {
+ "name": "Bólivíani",
+ "symbol": "BOB"
+ },
+ "BRL": {
+ "name": "Brasilískt ríal",
+ "symbol": "BRL"
+ },
+ "BND": {
+ "name": "Brúneiskur dalur",
+ "symbol": "BND"
+ },
+ "BGN": {
+ "name": "Búlgarskt lef",
+ "symbol": "BGN"
+ },
+ "BIF": {
+ "name": "Búrúndískur franki",
+ "symbol": "BIF"
+ },
+ "BTN": {
+ "name": "Bútanskt núltrum",
+ "symbol": "BTN"
+ },
+ "KYD": {
+ "name": "Caymaneyskur dalur",
+ "symbol": "KYD"
+ },
+ "DJF": {
+ "name": "Djíbútískur franki",
+ "symbol": "DJF"
+ },
+ "DOP": {
+ "name": "Dóminískur pesi",
+ "symbol": "DOP"
+ },
+ "DKK": {
+ "name": "Dönsk króna",
+ "symbol": "DKK"
+ },
+ "EGP": {
+ "name": "Egypskt pund",
+ "symbol": "EGP"
+ },
+ "SVC": {
+ "name": "El Salvador Colon",
+ "symbol": "SVC"
+ },
+ "ERN": {
+ "name": "Erítresk nakfa",
+ "symbol": "ERN"
+ },
+ "EUR": {
+ "name": "Evra",
+ "symbol": "EUR"
+ },
+ "ETB": {
+ "name": "Eþíópískt birr",
+ "symbol": "ETB"
+ },
+ "FKP": {
+ "name": "Falklenskt pund",
+ "symbol": "FKP"
+ },
+ "PHP": {
+ "name": "Filippseyskur pesi",
+ "symbol": "PHP"
+ },
+ "FJD": {
+ "name": "Fídjeyskur dalur",
+ "symbol": "FJD"
+ },
+ "GMD": {
+ "name": "Gambískur dalasi",
+ "symbol": "GMD"
+ },
+ "GHS": {
+ "name": "Ganverskur sedi",
+ "symbol": "GHS"
+ },
+ "GEL": {
+ "name": "Georgískur lari",
+ "symbol": "GEL"
+ },
+ "GIP": {
+ "name": "Gíbraltarspund",
+ "symbol": "GIP"
+ },
+ "GNF": {
+ "name": "Gíneufranki",
+ "symbol": "GNF"
+ },
+ "CVE": {
+ "name": "Grænhöfðeyskur skúti",
+ "symbol": "CVE"
+ },
+ "GTQ": {
+ "name": "Gvatemalskt kvesal",
+ "symbol": "GTQ"
+ },
+ "GYD": {
+ "name": "Gvæjanskur dalur",
+ "symbol": "GYD"
+ },
+ "HTG": {
+ "name": "Haítískur gúrdi",
+ "symbol": "HTG"
+ },
+ "SHP": {
+ "name": "Helenskt pund",
+ "symbol": "SHP"
+ },
+ "ANG": {
+ "name": "Hollenskt Antillugyllini",
+ "symbol": "ANG"
+ },
+ "HNL": {
+ "name": "Hondúrsk lempíra",
+ "symbol": "HNL"
+ },
+ "HKD": {
+ "name": "Hong Kong-dalur",
+ "symbol": "HK$"
+ },
+ "BYR": {
+ "name": "Hvítrússnesk rúbla",
+ "symbol": "BYR"
+ },
+ "IDR": {
+ "name": "Indónesísk rúpía",
+ "symbol": "IDR"
+ },
+ "INR": {
+ "name": "Indversk rúpía",
+ "symbol": "INR"
+ },
+ "IQD": {
+ "name": "Ãrakskur denari",
+ "symbol": "IQD"
+ },
+ "IRR": {
+ "name": "Ãranskt ríal",
+ "symbol": "IRR"
+ },
+ "ISK": {
+ "name": "Ãslensk króna",
+ "symbol": "ISK"
+ },
+ "JMD": {
+ "name": "Jamaískur dalur",
+ "symbol": "JMD"
+ },
+ "JPY": {
+ "name": "Japanskt jen",
+ "symbol": "JPÂ¥"
+ },
+ "YER": {
+ "name": "Jemenskt ríal",
+ "symbol": "YER"
+ },
+ "JOD": {
+ "name": "Jórdanskur denari",
+ "symbol": "JOD"
+ },
+ "KHR": {
+ "name": "Kambódískt ríal",
+ "symbol": "KHR"
+ },
+ "CAD": {
+ "name": "Kanadískur dalur",
+ "symbol": "CAD"
+ },
+ "KZT": {
+ "name": "Kasakst tengi",
+ "symbol": "KZT"
+ },
+ "QAR": {
+ "name": "Katarskt ríal",
+ "symbol": "QAR"
+ },
+ "KES": {
+ "name": "Kenískur skildingur",
+ "symbol": "KES"
+ },
+ "KGS": {
+ "name": "Kirgiskt som",
+ "symbol": "KGS"
+ },
+ "CNY": {
+ "name": "Kínverskt júan",
+ "symbol": "CNÂ¥"
+ },
+ "CDF": {
+ "name": "Kongóskur franki",
+ "symbol": "CDF"
+ },
+ "CRC": {
+ "name": "Kostarískt kólon",
+ "symbol": "CRC"
+ },
+ "COP": {
+ "name": "Kólumbískur pesi",
+ "symbol": "COP"
+ },
+ "KMF": {
+ "name": "Kómoreyskur franki",
+ "symbol": "KMF"
+ },
+ "HRK": {
+ "name": "Króatísk kúna",
+ "symbol": "HRK"
+ },
+ "CUP": {
+ "name": "Kúbverskur pesi",
+ "symbol": "CUP"
+ },
+ "CUC": {
+ "name": "Kúbverskur skiptanlegur pesi",
+ "symbol": "CUC"
+ },
+ "KWD": {
+ "name": "Kúveiskur denari",
+ "symbol": "KWD"
+ },
+ "LAK": {
+ "name": "Laoskt kip",
+ "symbol": "LAK"
+ },
+ "LSL": {
+ "name": "Lesotho Loti",
+ "symbol": "LSL"
+ },
+ "LTL": {
+ "name": "Litháískt lít",
+ "symbol": "LTL"
+ },
+ "LBP": {
+ "name": "Líbanskt pund",
+ "symbol": "LBP"
+ },
+ "LRD": {
+ "name": "Líberískur dalur",
+ "symbol": "LRD"
+ },
+ "LYD": {
+ "name": "Líbískur denari",
+ "symbol": "LYD"
+ },
+ "MGA": {
+ "name": "Madagaskararjari",
+ "symbol": "MGA"
+ },
+ "MOP": {
+ "name": "Makaópataka",
+ "symbol": "MOP"
+ },
+ "MKD": {
+ "name": "Makedónskur denari",
+ "symbol": "MKD"
+ },
+ "MYR": {
+ "name": "Malasískt ringit",
+ "symbol": "MYR"
+ },
+ "MWK": {
+ "name": "Malavísk kvaka",
+ "symbol": "MWK"
+ },
+ "MVR": {
+ "name": "Maldíveysk rúpía",
+ "symbol": "MVR"
+ },
+ "MAD": {
+ "name": "Marokkóskt dírham",
+ "symbol": "MAD"
+ },
+ "MUR": {
+ "name": "Máritísk rúpía",
+ "symbol": "MUR"
+ },
+ "MRO": {
+ "name": "Máritönsk úgía",
+ "symbol": "MRO"
+ },
+ "MXN": {
+ "name": "Mexíkóskur pesi",
+ "symbol": "MXN"
+ },
+ "XAF": {
+ "name": "Miðafrískur franki",
+ "symbol": "FCFA"
+ },
+ "MMK": {
+ "name": "Mjanmarskt kjat",
+ "symbol": "MMK"
+ },
+ "MDL": {
+ "name": "Moldavískt lei",
+ "symbol": "MDL"
+ },
+ "MNT": {
+ "name": "Mongólskur túríkur",
+ "symbol": "MNT"
+ },
+ "MZN": {
+ "name": "Mósambískt metikal",
+ "symbol": "MZN"
+ },
+ "NAD": {
+ "name": "Namibískur dalur",
+ "symbol": "NAD"
+ },
+ "NPR": {
+ "name": "Nepölsk rúpía",
+ "symbol": "NPR"
+ },
+ "NGN": {
+ "name": "Nígerísk næra",
+ "symbol": "NGN"
+ },
+ "NIO": {
+ "name": "Níkarögsk kordóva",
+ "symbol": "NIO"
+ },
+ "KPW": {
+ "name": "Norðurkóreskt vonn",
+ "symbol": "KPW"
+ },
+ "NOK": {
+ "name": "Norsk króna",
+ "symbol": "NOK"
+ },
+ "ILS": {
+ "name": "Nýr ísraelskur sikill",
+ "symbol": "₪"
+ },
+ "NZD": {
+ "name": "Nýsjálenskur dalur",
+ "symbol": "NZD"
+ },
+ "OMR": {
+ "name": "Ómanskt ríal",
+ "symbol": "OMR"
+ },
+ "PKR": {
+ "name": "Pakistönsk rúpía",
+ "symbol": "PKR"
+ },
+ "PGK": {
+ "name": "Papúsk kína",
+ "symbol": "PGK"
+ },
+ "PYG": {
+ "name": "Paragvæskt gvaraní",
+ "symbol": "PYG"
+ },
+ "PEN": {
+ "name": "Perúskt sól",
+ "symbol": "PEN"
+ },
+ "XPF": {
+ "name": "Pólinesískur franki",
+ "symbol": "CFPF"
+ },
+ "PLN": {
+ "name": "Pólskt slot",
+ "symbol": "PLN"
+ },
+ "RWF": {
+ "name": "Rúandskur franki",
+ "symbol": "RWF"
+ },
+ "RON": {
+ "name": "Rúmenskt lei",
+ "symbol": "RON"
+ },
+ "RUB": {
+ "name": "Rússnesk rúbla",
+ "symbol": "RUB"
+ },
+ "SBD": {
+ "name": "Salómonseyskur dalur",
+ "symbol": "SBD"
+ },
+ "ZMW": {
+ "name": "Sambísk kvaka",
+ "symbol": "ZMW"
+ },
+ "WST": {
+ "name": "Samóatala",
+ "symbol": "WST"
+ },
+ "STD": {
+ "name": "Saó Tóme og Prinsípe-dóbra",
+ "symbol": "STD"
+ },
+ "SAR": {
+ "name": "Sádiarabískt ríal",
+ "symbol": "SAR"
+ },
+ "RSD": {
+ "name": "Serbneskur denari",
+ "symbol": "RSD"
+ },
+ "SCR": {
+ "name": "Seychellesrúpía",
+ "symbol": "SCR"
+ },
+ "SGD": {
+ "name": "Singapúrskur dalur",
+ "symbol": "SGD"
+ },
+ "SLL": {
+ "name": "Síerraleónsk ljóna",
+ "symbol": "SLL"
+ },
+ "CLP": {
+ "name": "Síleskur pesi",
+ "symbol": "CLP"
+ },
+ "BAM": {
+ "name": "Skiptanlegt Bosníu og Hersegóvínu-mark",
+ "symbol": "BAM"
+ },
+ "SOS": {
+ "name": "Sómalískur skildingur",
+ "symbol": "SOS"
+ },
+ "LKR": {
+ "name": "Srílönsk rúpía",
+ "symbol": "LKR"
+ },
+ "GBP": {
+ "name": "Sterlingspund",
+ "symbol": "GBP"
+ },
+ "ZAR": {
+ "name": "Suðurafrískt rand",
+ "symbol": "ZAR"
+ },
+ "KRW": {
+ "name": "Suðurkóreskt vonn",
+ "symbol": "KRW"
+ },
+ "SSP": {
+ "name": "Suðursúdanskt pund",
+ "symbol": "SSP"
+ },
+ "SDG": {
+ "name": "Súdanskt pund",
+ "symbol": "SDG"
+ },
+ "SRD": {
+ "name": "Súrínamdalur",
+ "symbol": "SRD"
+ },
+ "SZL": {
+ "name": "Svasílenskur lílangeni",
+ "symbol": "SZL"
+ },
+ "CHF": {
+ "name": "Svissneskur franki",
+ "symbol": "CHF"
+ },
+ "SYP": {
+ "name": "Sýrlenskt pund",
+ "symbol": "SYP"
+ },
+ "SEK": {
+ "name": "Sænsk króna",
+ "symbol": "SEK"
+ },
+ "TJS": {
+ "name": "Tadsjikskur sómóni",
+ "symbol": "TJS"
+ },
+ "THB": {
+ "name": "Taílenskt bat",
+ "symbol": "THB"
+ },
+ "TWD": {
+ "name": "Taívanskur dalur",
+ "symbol": "TWD"
+ },
+ "TZS": {
+ "name": "Tansanískur skildingur",
+ "symbol": "TZS"
+ },
+ "CZK": {
+ "name": "Tékknesk króna",
+ "symbol": "CZK"
+ },
+ "TOP": {
+ "name": "Tongapanga",
+ "symbol": "TOP"
+ },
+ "TTD": {
+ "name": "Trínidad og Tóbagó-dalur",
+ "symbol": "TTD"
+ },
+ "TND": {
+ "name": "Túniskur denari",
+ "symbol": "TND"
+ },
+ "TMT": {
+ "name": "Túrkmenskt manat",
+ "symbol": "TMT"
+ },
+ "TRY": {
+ "name": "Tyrknesk líra",
+ "symbol": "TRY"
+ },
+ "HUF": {
+ "name": "Ungversk fórinta",
+ "symbol": "HUF"
+ },
+ "UGX": {
+ "name": "Úgandskur skildingur",
+ "symbol": "UGX"
+ },
+ "UAH": {
+ "name": "Úkraínsk hrinja",
+ "symbol": "UAH"
+ },
+ "UYU": {
+ "name": "Úrúgvæskur pesi",
+ "symbol": "UYU"
+ },
+ "UZS": {
+ "name": "Úsbekskt súm",
+ "symbol": "UZS"
+ },
+ "VUV": {
+ "name": "Vanúatúskt vatú",
+ "symbol": "VUV"
+ },
+ "VEF": {
+ "name": "Venesúelskur bólívari",
+ "symbol": "VEF"
+ },
+ "XOF": {
+ "name": "Vesturafrískur franki",
+ "symbol": "CFA"
+ },
+ "VND": {
+ "name": "Víetnamskt dong",
+ "symbol": "VND"
+ },
+ "ZWL": {
+ "name": "ZWL",
+ "symbol": "ZWL"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/currency/it.json b/library/intl/resources/currency/it.json
new file mode 100644
index 000000000..7928fc3dc
--- /dev/null
+++ b/library/intl/resources/currency/it.json
@@ -0,0 +1,634 @@
+{
+ "AFN": {
+ "name": "Afghani",
+ "symbol": "AFN"
+ },
+ "MGA": {
+ "name": "Ariary Malgascio",
+ "symbol": "MGA"
+ },
+ "THB": {
+ "name": "Baht thailandese",
+ "symbol": "฿"
+ },
+ "PAB": {
+ "name": "Balboa di Panama",
+ "symbol": "PAB"
+ },
+ "ETB": {
+ "name": "Birr Etiopico",
+ "symbol": "ETB"
+ },
+ "VEF": {
+ "name": "Bolívar Venezuelano",
+ "symbol": "VEF"
+ },
+ "BOB": {
+ "name": "Boliviano",
+ "symbol": "BOB"
+ },
+ "GHS": {
+ "name": "Cedi ghanese",
+ "symbol": "GHS"
+ },
+ "CRC": {
+ "name": "Colón Costaricano",
+ "symbol": "CRC"
+ },
+ "SVC": {
+ "name": "Colón Salvadoregno",
+ "symbol": "SVC"
+ },
+ "NIO": {
+ "name": "Córdoba Nicaraguense",
+ "symbol": "NIO"
+ },
+ "CZK": {
+ "name": "Corona Ceca",
+ "symbol": "CZK"
+ },
+ "DKK": {
+ "name": "Corona danese",
+ "symbol": "DKK"
+ },
+ "ISK": {
+ "name": "Corona islandese",
+ "symbol": "ISK"
+ },
+ "NOK": {
+ "name": "Corona norvegese",
+ "symbol": "NOK"
+ },
+ "SEK": {
+ "name": "Corona svedese",
+ "symbol": "SEK"
+ },
+ "GMD": {
+ "name": "Dalasi del Gambia",
+ "symbol": "GMD"
+ },
+ "DZD": {
+ "name": "Dinaro Algerino",
+ "symbol": "DZD"
+ },
+ "BHD": {
+ "name": "Dinaro del Bahrein",
+ "symbol": "BHD"
+ },
+ "JOD": {
+ "name": "Dinaro giordano",
+ "symbol": "JOD"
+ },
+ "IQD": {
+ "name": "Dinaro iracheno",
+ "symbol": "IQD"
+ },
+ "KWD": {
+ "name": "Dinaro kuwaitiano",
+ "symbol": "KWD"
+ },
+ "LYD": {
+ "name": "Dinaro Libico",
+ "symbol": "LYD"
+ },
+ "MKD": {
+ "name": "Dinaro Macedone",
+ "symbol": "MKD"
+ },
+ "RSD": {
+ "name": "Dinaro Serbo",
+ "symbol": "RSD"
+ },
+ "TND": {
+ "name": "Dinaro Tunisino",
+ "symbol": "TND"
+ },
+ "AED": {
+ "name": "Dirham degli Emirati Arabi Uniti",
+ "symbol": "AED"
+ },
+ "MAD": {
+ "name": "Dirham Marocchino",
+ "symbol": "MAD"
+ },
+ "STD": {
+ "name": "Dobra di Sao Tomé e Principe",
+ "symbol": "STD"
+ },
+ "AUD": {
+ "name": "Dollaro Australiano",
+ "symbol": "A$"
+ },
+ "CAD": {
+ "name": "Dollaro Canadese",
+ "symbol": "CA$"
+ },
+ "XCD": {
+ "name": "Dollaro dei Caraibi Orientali",
+ "symbol": "EC$"
+ },
+ "BZD": {
+ "name": "Dollaro del Belize",
+ "symbol": "BZD"
+ },
+ "BND": {
+ "name": "Dollaro del Brunei",
+ "symbol": "BND"
+ },
+ "GYD": {
+ "name": "Dollaro della Guyana",
+ "symbol": "GYD"
+ },
+ "BSD": {
+ "name": "Dollaro delle Bahamas",
+ "symbol": "BSD"
+ },
+ "BMD": {
+ "name": "Dollaro delle Bermuda",
+ "symbol": "BMD"
+ },
+ "FJD": {
+ "name": "Dollaro delle Figi",
+ "symbol": "FJD"
+ },
+ "KYD": {
+ "name": "Dollaro delle Isole Cayman",
+ "symbol": "KYD"
+ },
+ "SBD": {
+ "name": "Dollaro delle Isole Solomon",
+ "symbol": "SBD"
+ },
+ "BBD": {
+ "name": "Dollaro di Barbados",
+ "symbol": "BBD"
+ },
+ "HKD": {
+ "name": "Dollaro di Hong Kong",
+ "symbol": "HKD"
+ },
+ "SGD": {
+ "name": "Dollaro di Singapore",
+ "symbol": "SGD"
+ },
+ "TTD": {
+ "name": "Dollaro di Trinidad e Tobago",
+ "symbol": "TTD"
+ },
+ "JMD": {
+ "name": "Dollaro Giamaicano",
+ "symbol": "JMD"
+ },
+ "LRD": {
+ "name": "Dollaro Liberiano",
+ "symbol": "LRD"
+ },
+ "NAD": {
+ "name": "Dollaro Namibiano",
+ "symbol": "NAD"
+ },
+ "NZD": {
+ "name": "Dollaro Neozelandese",
+ "symbol": "NZ$"
+ },
+ "USD": {
+ "name": "Dollaro Statunitense",
+ "symbol": "US$"
+ },
+ "SRD": {
+ "name": "Dollaro Surinamese",
+ "symbol": "SRD"
+ },
+ "ZWL": {
+ "name": "Dollaro Zimbabwiano (2009)",
+ "symbol": "ZWL"
+ },
+ "VND": {
+ "name": "Dong Vietnamita",
+ "symbol": "â‚«"
+ },
+ "AMD": {
+ "name": "Dram armeno",
+ "symbol": "AMD"
+ },
+ "CVE": {
+ "name": "Escudo del Capo Verde",
+ "symbol": "CVE"
+ },
+ "EUR": {
+ "name": "Euro",
+ "symbol": "€"
+ },
+ "ANG": {
+ "name": "Fiorino delle Antille Olandesi",
+ "symbol": "ANG"
+ },
+ "AWG": {
+ "name": "Fiorino di Aruba",
+ "symbol": "AWG"
+ },
+ "HUF": {
+ "name": "Fiorino Ungherese",
+ "symbol": "HUF"
+ },
+ "XOF": {
+ "name": "Franco CFA BCEAO",
+ "symbol": "CFA"
+ },
+ "XAF": {
+ "name": "Franco CFA BEAC",
+ "symbol": "FCFA"
+ },
+ "XPF": {
+ "name": "Franco CFP",
+ "symbol": "CFPF"
+ },
+ "KMF": {
+ "name": "Franco Comoriano",
+ "symbol": "KMF"
+ },
+ "CDF": {
+ "name": "Franco Congolese",
+ "symbol": "CDF"
+ },
+ "BIF": {
+ "name": "Franco del Burundi",
+ "symbol": "BIF"
+ },
+ "GNF": {
+ "name": "Franco della Guinea",
+ "symbol": "GNF"
+ },
+ "DJF": {
+ "name": "Franco Gibutiano",
+ "symbol": "DJF"
+ },
+ "RWF": {
+ "name": "Franco Ruandese",
+ "symbol": "RWF"
+ },
+ "CHF": {
+ "name": "Franco svizzero",
+ "symbol": "CHF"
+ },
+ "HTG": {
+ "name": "Gourde Haitiano",
+ "symbol": "HTG"
+ },
+ "UAH": {
+ "name": "Grivnia Ucraina",
+ "symbol": "UAH"
+ },
+ "PYG": {
+ "name": "Guaraní del Paraguay",
+ "symbol": "PYG"
+ },
+ "PGK": {
+ "name": "Kina della Papua Nuova Guinea",
+ "symbol": "PGK"
+ },
+ "LAK": {
+ "name": "Kip Laotiano",
+ "symbol": "LAK"
+ },
+ "HRK": {
+ "name": "Kuna Croata",
+ "symbol": "HRK"
+ },
+ "ZMW": {
+ "name": "Kwacha dello Zambia",
+ "symbol": "ZMW"
+ },
+ "MWK": {
+ "name": "Kwacha Malawiano",
+ "symbol": "MWK"
+ },
+ "AOA": {
+ "name": "Kwanza Angolano",
+ "symbol": "AOA"
+ },
+ "MMK": {
+ "name": "Kyat di Myanmar",
+ "symbol": "MMK"
+ },
+ "GEL": {
+ "name": "Lari georgiano",
+ "symbol": "GEL"
+ },
+ "ALL": {
+ "name": "Lek Albanese",
+ "symbol": "ALL"
+ },
+ "HNL": {
+ "name": "Lempira Honduregna",
+ "symbol": "HNL"
+ },
+ "SLL": {
+ "name": "Leone della Sierra Leone",
+ "symbol": "SLL"
+ },
+ "MDL": {
+ "name": "Leu Moldavo",
+ "symbol": "MDL"
+ },
+ "RON": {
+ "name": "Leu Rumeno",
+ "symbol": "RON"
+ },
+ "BGN": {
+ "name": "Lev bulgaro",
+ "symbol": "BGN"
+ },
+ "SZL": {
+ "name": "Lilangeni dello Swaziland",
+ "symbol": "SZL"
+ },
+ "LBP": {
+ "name": "Lira libanese",
+ "symbol": "LBP"
+ },
+ "SYP": {
+ "name": "Lira siriana",
+ "symbol": "SYP"
+ },
+ "TRY": {
+ "name": "Lira turca",
+ "symbol": "TRY"
+ },
+ "LTL": {
+ "name": "Litas lituano",
+ "symbol": "LTL"
+ },
+ "LSL": {
+ "name": "Loti del Lesotho",
+ "symbol": "LSL"
+ },
+ "AZN": {
+ "name": "Manat azero",
+ "symbol": "AZN"
+ },
+ "TMT": {
+ "name": "Manat Turkmeno",
+ "symbol": "TMT"
+ },
+ "BAM": {
+ "name": "Marco Conv. Bosnia-Erzegovina",
+ "symbol": "BAM"
+ },
+ "MZN": {
+ "name": "Metical mozambicano",
+ "symbol": "MZN"
+ },
+ "NGN": {
+ "name": "Naira Nigeriana",
+ "symbol": "NGN"
+ },
+ "ERN": {
+ "name": "Nakfa Eritreo",
+ "symbol": "ERN"
+ },
+ "BTN": {
+ "name": "Ngultrum Butanese",
+ "symbol": "BTN"
+ },
+ "TWD": {
+ "name": "Nuovo dollaro taiwanese",
+ "symbol": "TWD"
+ },
+ "ILS": {
+ "name": "Nuovo siclo israeliano",
+ "symbol": "₪"
+ },
+ "MRO": {
+ "name": "Ouguiya della Mauritania",
+ "symbol": "MRO"
+ },
+ "TOP": {
+ "name": "Paʻanga di Tonga",
+ "symbol": "TOP"
+ },
+ "MOP": {
+ "name": "Pataca di Macao",
+ "symbol": "MOP"
+ },
+ "ARS": {
+ "name": "Peso Argentino",
+ "symbol": "ARS"
+ },
+ "CLP": {
+ "name": "Peso Cileno",
+ "symbol": "CLP"
+ },
+ "COP": {
+ "name": "Peso Colombiano",
+ "symbol": "COP"
+ },
+ "CUP": {
+ "name": "Peso Cubano",
+ "symbol": "CUP"
+ },
+ "CUC": {
+ "name": "Peso Cubano Convertibile",
+ "symbol": "CUC"
+ },
+ "PHP": {
+ "name": "Peso delle Filippine",
+ "symbol": "PHP"
+ },
+ "DOP": {
+ "name": "Peso Dominicano",
+ "symbol": "DOP"
+ },
+ "MXN": {
+ "name": "Peso Messicano",
+ "symbol": "MXN"
+ },
+ "UYU": {
+ "name": "Peso Uruguaiano",
+ "symbol": "UYU"
+ },
+ "BWP": {
+ "name": "Pula del Botswana",
+ "symbol": "BWP"
+ },
+ "GTQ": {
+ "name": "Quetzal Guatemalteco",
+ "symbol": "GTQ"
+ },
+ "ZAR": {
+ "name": "Rand Sudafricano",
+ "symbol": "ZAR"
+ },
+ "BRL": {
+ "name": "Real Brasiliano",
+ "symbol": "BRL"
+ },
+ "CNY": {
+ "name": "Renminbi cinese",
+ "symbol": "CNÂ¥"
+ },
+ "QAR": {
+ "name": "Rial del Qatar",
+ "symbol": "QAR"
+ },
+ "OMR": {
+ "name": "Rial dell’Oman",
+ "symbol": "OMR"
+ },
+ "IRR": {
+ "name": "Rial Iraniano",
+ "symbol": "IRR"
+ },
+ "KHR": {
+ "name": "Riel Cambogiano",
+ "symbol": "KHR"
+ },
+ "MYR": {
+ "name": "Ringgit della Malesia",
+ "symbol": "MYR"
+ },
+ "SAR": {
+ "name": "Riyal saudita",
+ "symbol": "SAR"
+ },
+ "YER": {
+ "name": "Riyal yemenita",
+ "symbol": "YER"
+ },
+ "BYR": {
+ "name": "Rublo Bielorussia",
+ "symbol": "BYR"
+ },
+ "RUB": {
+ "name": "Rublo Russo",
+ "symbol": "RUB"
+ },
+ "MVR": {
+ "name": "Rufiyaa delle Maldive",
+ "symbol": "MVR"
+ },
+ "PKR": {
+ "name": "Rupia del Pakistan",
+ "symbol": "PKR"
+ },
+ "SCR": {
+ "name": "Rupia delle Seychelles",
+ "symbol": "SCR"
+ },
+ "LKR": {
+ "name": "Rupia di Sri Lanka",
+ "symbol": "LKR"
+ },
+ "INR": {
+ "name": "Rupia Indiana",
+ "symbol": "₹"
+ },
+ "IDR": {
+ "name": "Rupia Indonesiana",
+ "symbol": "IDR"
+ },
+ "MUR": {
+ "name": "Rupia Mauriziana",
+ "symbol": "MUR"
+ },
+ "NPR": {
+ "name": "Rupia Nepalese",
+ "symbol": "NPR"
+ },
+ "TZS": {
+ "name": "Scellino della Tanzania",
+ "symbol": "TZS"
+ },
+ "KES": {
+ "name": "Scellino Keniota",
+ "symbol": "KES"
+ },
+ "SOS": {
+ "name": "Scellino Somalo",
+ "symbol": "SOS"
+ },
+ "UGX": {
+ "name": "Scellino Ugandese",
+ "symbol": "UGX"
+ },
+ "PEN": {
+ "name": "Sol Nuevo Peruviano",
+ "symbol": "PEN"
+ },
+ "KGS": {
+ "name": "Som Kirghiso",
+ "symbol": "KGS"
+ },
+ "TJS": {
+ "name": "Somoni del Tajikistan",
+ "symbol": "TJS"
+ },
+ "FKP": {
+ "name": "Sterlina delle Falkland",
+ "symbol": "FKP"
+ },
+ "GIP": {
+ "name": "Sterlina di Gibilterra",
+ "symbol": "GIP"
+ },
+ "SHP": {
+ "name": "Sterlina di Sant’Elena",
+ "symbol": "SHP"
+ },
+ "EGP": {
+ "name": "Sterlina Egiziana",
+ "symbol": "EGP"
+ },
+ "GBP": {
+ "name": "Sterlina Inglese",
+ "symbol": "£"
+ },
+ "SDG": {
+ "name": "Sterlina Sudanese",
+ "symbol": "SDG"
+ },
+ "SSP": {
+ "name": "Sterlina sudsudanese",
+ "symbol": "SSP"
+ },
+ "UZS": {
+ "name": "Sum dell’Uzbekistan",
+ "symbol": "UZS"
+ },
+ "BDT": {
+ "name": "Taka Bangladese",
+ "symbol": "BDT"
+ },
+ "WST": {
+ "name": "Tala della Samoa Occidentale",
+ "symbol": "WST"
+ },
+ "KZT": {
+ "name": "Tenge kazako",
+ "symbol": "KZT"
+ },
+ "MNT": {
+ "name": "Tugrik mongolo",
+ "symbol": "MNT"
+ },
+ "VUV": {
+ "name": "Vatu di Vanuatu",
+ "symbol": "VUV"
+ },
+ "KPW": {
+ "name": "Won Nordcoreano",
+ "symbol": "KPW"
+ },
+ "KRW": {
+ "name": "Won Sudcoreano",
+ "symbol": "KRW"
+ },
+ "JPY": {
+ "name": "Yen giapponese",
+ "symbol": "JPY"
+ },
+ "PLN": {
+ "name": "ZÅ‚oty polacco",
+ "symbol": "PLN"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/currency/ja.json b/library/intl/resources/currency/ja.json
new file mode 100644
index 000000000..f7457feb9
--- /dev/null
+++ b/library/intl/resources/currency/ja.json
@@ -0,0 +1,634 @@
+{
+ "XOF": {
+ "name": "CFA フラン(BCEAO)",
+ "symbol": "CFA"
+ },
+ "XAF": {
+ "name": "CFA フラン(BEAC)",
+ "symbol": "FCFA"
+ },
+ "XPF": {
+ "name": "CFP フラン",
+ "symbol": "CFPF"
+ },
+ "ISK": {
+ "name": "アイスランド クローナ",
+ "symbol": "ISK"
+ },
+ "AZN": {
+ "name": "アゼルãƒã‚¤ã‚¸ãƒ£ãƒ³ マナト",
+ "symbol": "AZN"
+ },
+ "AFN": {
+ "name": "アフガニー",
+ "symbol": "AFN"
+ },
+ "AED": {
+ "name": "アラブ首長国連邦ディルãƒãƒ ",
+ "symbol": "AED"
+ },
+ "DZD": {
+ "name": "アルジェリア ディナール",
+ "symbol": "DZD"
+ },
+ "ARS": {
+ "name": "アルゼンãƒãƒ³ ペソ",
+ "symbol": "ARS"
+ },
+ "AWG": {
+ "name": "アルムギルダー",
+ "symbol": "AWG"
+ },
+ "ALL": {
+ "name": "アルãƒãƒ‹ã‚¢ レク",
+ "symbol": "ALL"
+ },
+ "AMD": {
+ "name": "アルメニア ドラム",
+ "symbol": "AMD"
+ },
+ "YER": {
+ "name": "イエメン リアル",
+ "symbol": "YER"
+ },
+ "ILS": {
+ "name": "イスラエル新シェケル",
+ "symbol": "₪"
+ },
+ "IQD": {
+ "name": "イラク ディナール",
+ "symbol": "IQD"
+ },
+ "IRR": {
+ "name": "イラン リアル",
+ "symbol": "IRR"
+ },
+ "INR": {
+ "name": "インド ルピー",
+ "symbol": "₹"
+ },
+ "IDR": {
+ "name": "インドãƒã‚·ã‚¢ ルピア",
+ "symbol": "IDR"
+ },
+ "UGX": {
+ "name": "ウガンダ シリング",
+ "symbol": "UGX"
+ },
+ "UAH": {
+ "name": "ウクライナ グリブナ",
+ "symbol": "UAH"
+ },
+ "UZS": {
+ "name": "ウズベキスタン スム",
+ "symbol": "UZS"
+ },
+ "UYU": {
+ "name": "ウルグアイ ペソ",
+ "symbol": "UYU"
+ },
+ "EGP": {
+ "name": "エジプト ãƒãƒ³ãƒ‰",
+ "symbol": "EGP"
+ },
+ "ETB": {
+ "name": "エãƒã‚ªãƒ”ã‚¢ ブル",
+ "symbol": "ETB"
+ },
+ "ERN": {
+ "name": "エリトリア ナクファ",
+ "symbol": "ERN"
+ },
+ "SVC": {
+ "name": "エルサルãƒãƒ‰ãƒ« コロン",
+ "symbol": "SVC"
+ },
+ "AUD": {
+ "name": "オーストラリア ドル",
+ "symbol": "AU$"
+ },
+ "OMR": {
+ "name": "オマーン リアル",
+ "symbol": "OMR"
+ },
+ "ANG": {
+ "name": "オランダ領アンティル ギルダー",
+ "symbol": "ANG"
+ },
+ "GHS": {
+ "name": "ガーナ セディ",
+ "symbol": "GHS"
+ },
+ "CVE": {
+ "name": "カーボベルデ エスクード",
+ "symbol": "CVE"
+ },
+ "GYD": {
+ "name": "ガイアナ ドル",
+ "symbol": "GYD"
+ },
+ "KZT": {
+ "name": "カザフスタン テンゲ",
+ "symbol": "KZT"
+ },
+ "QAR": {
+ "name": "カタール リアル",
+ "symbol": "QAR"
+ },
+ "CAD": {
+ "name": "カナダ ドル",
+ "symbol": "CA$"
+ },
+ "GMD": {
+ "name": "ガンビア ダラシ",
+ "symbol": "GMD"
+ },
+ "KHR": {
+ "name": "カンボジア リエル",
+ "symbol": "KHR"
+ },
+ "GNF": {
+ "name": "ギニア フラン",
+ "symbol": "GNF"
+ },
+ "CUP": {
+ "name": "キュームペソ",
+ "symbol": "CUP"
+ },
+ "CUC": {
+ "name": "キューム兌æ›ãƒšã‚½",
+ "symbol": "CUC"
+ },
+ "KGS": {
+ "name": "キルギスタン ソム",
+ "symbol": "KGS"
+ },
+ "GTQ": {
+ "name": "グアテマラ ケツァル",
+ "symbol": "GTQ"
+ },
+ "KWD": {
+ "name": "クウェート ディナール",
+ "symbol": "KWD"
+ },
+ "GEL": {
+ "name": "グルジア ラリ",
+ "symbol": "GEL"
+ },
+ "HRK": {
+ "name": "クロアãƒã‚¢ クーナ",
+ "symbol": "HRK"
+ },
+ "AOA": {
+ "name": "クワンザ",
+ "symbol": "AOA"
+ },
+ "KYD": {
+ "name": "ケイマン諸島 ドル",
+ "symbol": "KYD"
+ },
+ "KES": {
+ "name": "ケニア シリング",
+ "symbol": "KES"
+ },
+ "CRC": {
+ "name": "コスタリカ コロン",
+ "symbol": "CRC"
+ },
+ "KMF": {
+ "name": "コモロ フラン",
+ "symbol": "KMF"
+ },
+ "COP": {
+ "name": "コロンビア ペソ",
+ "symbol": "COP"
+ },
+ "CDF": {
+ "name": "コンゴ フラン",
+ "symbol": "CDF"
+ },
+ "SAR": {
+ "name": "サウジ リヤル",
+ "symbol": "SAR"
+ },
+ "WST": {
+ "name": "サモア タラ",
+ "symbol": "WST"
+ },
+ "STD": {
+ "name": "サントメ・プリンシペ ドブラ",
+ "symbol": "STD"
+ },
+ "ZMW": {
+ "name": "ザンビア クワãƒãƒ£",
+ "symbol": "ZMW"
+ },
+ "SLL": {
+ "name": "シエラレオムレオン",
+ "symbol": "SLL"
+ },
+ "DJF": {
+ "name": "ジブムフラン",
+ "symbol": "DJF"
+ },
+ "GIP": {
+ "name": "ジブラルタル ãƒãƒ³ãƒ‰",
+ "symbol": "GIP"
+ },
+ "JMD": {
+ "name": "ジャマイカ ドル",
+ "symbol": "JMD"
+ },
+ "SYP": {
+ "name": "シリア ãƒãƒ³ãƒ‰",
+ "symbol": "SYP"
+ },
+ "SGD": {
+ "name": "シンガãƒãƒ¼ãƒ« ドル",
+ "symbol": "SGD"
+ },
+ "ZWL": {
+ "name": "ジンãƒãƒ–エ ドル (2009)",
+ "symbol": "ZWL"
+ },
+ "CHF": {
+ "name": "スイス フラン",
+ "symbol": "CHF"
+ },
+ "SEK": {
+ "name": "スウェーデン クローナ",
+ "symbol": "SEK"
+ },
+ "SDG": {
+ "name": "スーダン ãƒãƒ³ãƒ‰",
+ "symbol": "SDG"
+ },
+ "SRD": {
+ "name": "スリナム ドル",
+ "symbol": "SRD"
+ },
+ "LKR": {
+ "name": "スリランカ ルピー",
+ "symbol": "LKR"
+ },
+ "SZL": {
+ "name": "スワジランド リランゲニ",
+ "symbol": "SZL"
+ },
+ "SCR": {
+ "name": "セーシェル ルピー",
+ "symbol": "SCR"
+ },
+ "SHP": {
+ "name": "セントヘレナ島 ãƒãƒ³ãƒ‰",
+ "symbol": "SHP"
+ },
+ "SOS": {
+ "name": "ソマリア シリング",
+ "symbol": "SOS"
+ },
+ "SBD": {
+ "name": "ソロモン諸島 ドル",
+ "symbol": "SBD"
+ },
+ "THB": {
+ "name": "タイ ãƒãƒ¼ãƒ„",
+ "symbol": "฿"
+ },
+ "TJS": {
+ "name": "タジキスタン ソモニ",
+ "symbol": "TJS"
+ },
+ "TZS": {
+ "name": "タンザニア シリング",
+ "symbol": "TZS"
+ },
+ "CZK": {
+ "name": "ãƒã‚§ã‚³ コルナ",
+ "symbol": "CZK"
+ },
+ "TND": {
+ "name": "ãƒãƒ¥ãƒ‹ã‚¸ã‚¢ ディナール",
+ "symbol": "TND"
+ },
+ "CLP": {
+ "name": "ãƒãƒª ペソ",
+ "symbol": "CLP"
+ },
+ "RSD": {
+ "name": "ディナール (セルビア)",
+ "symbol": "RSD"
+ },
+ "DKK": {
+ "name": "デンマーク クローãƒ",
+ "symbol": "DKK"
+ },
+ "DOP": {
+ "name": "ドミニカ ペソ",
+ "symbol": "DOP"
+ },
+ "TTD": {
+ "name": "トリニダードトãƒã‚´ ドル",
+ "symbol": "TTD"
+ },
+ "TMT": {
+ "name": "トルクメニスタン マナト",
+ "symbol": "TMT"
+ },
+ "TOP": {
+ "name": "トンガ パ・アンガ",
+ "symbol": "TOP"
+ },
+ "NGN": {
+ "name": "ナイジェリア ナイラ",
+ "symbol": "NGN"
+ },
+ "NAD": {
+ "name": "ナミビア ドル",
+ "symbol": "NAD"
+ },
+ "NIO": {
+ "name": "ニカラグア コルドムオロ",
+ "symbol": "NIO"
+ },
+ "NZD": {
+ "name": "ニュージーランド ドル",
+ "symbol": "NZ$"
+ },
+ "NPR": {
+ "name": "ãƒãƒ‘ール ルピー",
+ "symbol": "NPR"
+ },
+ "NOK": {
+ "name": "ノルウェー クローãƒ",
+ "symbol": "NOK"
+ },
+ "BHD": {
+ "name": "ãƒãƒ¼ãƒ¬ãƒ¼ãƒ³ ディナール",
+ "symbol": "BHD"
+ },
+ "HTG": {
+ "name": "ãƒã‚¤ãƒ グールド",
+ "symbol": "HTG"
+ },
+ "PKR": {
+ "name": "パキスタン ルピー",
+ "symbol": "PKR"
+ },
+ "PAB": {
+ "name": "パナマ ãƒãƒ«ãƒœã‚¢",
+ "symbol": "PAB"
+ },
+ "VUV": {
+ "name": "ãƒãƒŒã‚¢ãƒ„ ãƒãƒ„",
+ "symbol": "VUV"
+ },
+ "BSD": {
+ "name": "ãƒãƒãƒž ドル",
+ "symbol": "BSD"
+ },
+ "PGK": {
+ "name": "パプアニューギニア キナ",
+ "symbol": "PGK"
+ },
+ "BMD": {
+ "name": "ãƒãƒŸãƒ¥ãƒ¼ãƒ€ ドル",
+ "symbol": "BMD"
+ },
+ "PYG": {
+ "name": "パラグアイ グアラニ",
+ "symbol": "PYG"
+ },
+ "BBD": {
+ "name": "ãƒãƒ«ãƒãƒ‰ã‚¹ ドル",
+ "symbol": "BBD"
+ },
+ "HUF": {
+ "name": "ãƒãƒ³ã‚¬ãƒªãƒ¼ フォリント",
+ "symbol": "HUF"
+ },
+ "BDT": {
+ "name": "ãƒãƒ³ã‚°ãƒ©ãƒ‡ã‚·ãƒ¥ ã‚¿ã‚«",
+ "symbol": "BDT"
+ },
+ "FJD": {
+ "name": "フィジー諸島 ドル",
+ "symbol": "FJD"
+ },
+ "PHP": {
+ "name": "フィリピン ペソ",
+ "symbol": "PHP"
+ },
+ "BTN": {
+ "name": "ブータン ニュルタム",
+ "symbol": "BTN"
+ },
+ "FKP": {
+ "name": "フォークランド(マルビナス)諸島 ãƒãƒ³ãƒ‰",
+ "symbol": "FKP"
+ },
+ "BRL": {
+ "name": "ブラジル レアル",
+ "symbol": "R$"
+ },
+ "BGN": {
+ "name": "ブルガリア 新レフ",
+ "symbol": "BGN"
+ },
+ "BND": {
+ "name": "ブルãƒã‚¤ ドル",
+ "symbol": "BND"
+ },
+ "BIF": {
+ "name": "ブルンジ フラン",
+ "symbol": "BIF"
+ },
+ "VND": {
+ "name": "ベトナム ドン",
+ "symbol": "â‚«"
+ },
+ "VEF": {
+ "name": "ベãƒã‚ºã‚¨ãƒ© ボリãƒãƒ«",
+ "symbol": "VEF"
+ },
+ "BYR": {
+ "name": "ベラルーシ ルーブル",
+ "symbol": "BYR"
+ },
+ "BZD": {
+ "name": "ベリーズ ドル",
+ "symbol": "BZD"
+ },
+ "PEN": {
+ "name": "ペルー 新ソル",
+ "symbol": "PEN"
+ },
+ "PLN": {
+ "name": "ãƒãƒ¼ãƒ©ãƒ³ãƒ‰ ズウォティ",
+ "symbol": "PLN"
+ },
+ "BAM": {
+ "name": "ボスニア マルク (BAM)",
+ "symbol": "BAM"
+ },
+ "BWP": {
+ "name": "ボツワナ プラ",
+ "symbol": "BWP"
+ },
+ "BOB": {
+ "name": "ボリビア ボリビアーノ",
+ "symbol": "BOB"
+ },
+ "HNL": {
+ "name": "ホンジュラス レンピラ",
+ "symbol": "HNL"
+ },
+ "MOP": {
+ "name": "マカオ パタカ",
+ "symbol": "MOP"
+ },
+ "MKD": {
+ "name": "マケドニア デナル",
+ "symbol": "MKD"
+ },
+ "MGA": {
+ "name": "マダガスカル アリアリ",
+ "symbol": "MGA"
+ },
+ "MWK": {
+ "name": "マラウィ クワãƒãƒ£",
+ "symbol": "MWK"
+ },
+ "MYR": {
+ "name": "マレーシア リンギット",
+ "symbol": "MYR"
+ },
+ "MMK": {
+ "name": "ミャンマー ãƒãƒ£ãƒƒãƒˆ",
+ "symbol": "MMK"
+ },
+ "MXN": {
+ "name": "メキシコ ペソ",
+ "symbol": "MX$"
+ },
+ "MUR": {
+ "name": "モーリシャス ルピー",
+ "symbol": "MUR"
+ },
+ "MRO": {
+ "name": "モーリタニア ウギア",
+ "symbol": "MRO"
+ },
+ "MZN": {
+ "name": "モザンビーク メティカル",
+ "symbol": "MZN"
+ },
+ "MVR": {
+ "name": "モルディブ諸島 ルフィア",
+ "symbol": "MVR"
+ },
+ "MDL": {
+ "name": "モルドムレイ",
+ "symbol": "MDL"
+ },
+ "MAD": {
+ "name": "モロッコ ディルãƒãƒ ",
+ "symbol": "MAD"
+ },
+ "MNT": {
+ "name": "モンゴル トグログ",
+ "symbol": "MNT"
+ },
+ "EUR": {
+ "name": "ユーロ",
+ "symbol": "€"
+ },
+ "JOD": {
+ "name": "ヨルダン ディナール",
+ "symbol": "JOD"
+ },
+ "LAK": {
+ "name": "ラオス キープ",
+ "symbol": "LAK"
+ },
+ "LTL": {
+ "name": "リトアニア リタス",
+ "symbol": "LTL"
+ },
+ "LYD": {
+ "name": "リビア ディナール",
+ "symbol": "LYD"
+ },
+ "LRD": {
+ "name": "リベリア ドル",
+ "symbol": "LRD"
+ },
+ "RON": {
+ "name": "ルーマニア レイ",
+ "symbol": "RON"
+ },
+ "RWF": {
+ "name": "ルワンダ フラン",
+ "symbol": "RWF"
+ },
+ "LSL": {
+ "name": "レソト ロティ",
+ "symbol": "LSL"
+ },
+ "LBP": {
+ "name": "レãƒãƒŽãƒ³ ãƒãƒ³ãƒ‰",
+ "symbol": "LBP"
+ },
+ "RUB": {
+ "name": "ロシア ルーブル",
+ "symbol": "RUB"
+ },
+ "GBP": {
+ "name": "英国ãƒãƒ³ãƒ‰",
+ "symbol": "£"
+ },
+ "KRW": {
+ "name": "韓国 ウォン",
+ "symbol": "₩"
+ },
+ "HKD": {
+ "name": "香港ドル",
+ "symbol": "HK$"
+ },
+ "TRY": {
+ "name": "新トルコリラ",
+ "symbol": "TRY"
+ },
+ "TWD": {
+ "name": "æ–°å°æ¹¾ãƒ‰ãƒ«",
+ "symbol": "NT$"
+ },
+ "CNY": {
+ "name": "中国人民元",
+ "symbol": "å…ƒ"
+ },
+ "XCD": {
+ "name": "æ±ã‚«ãƒªãƒ– ドル",
+ "symbol": "EC$"
+ },
+ "ZAR": {
+ "name": "å—アフリカ ランド",
+ "symbol": "ZAR"
+ },
+ "SSP": {
+ "name": "å—スーダン・ãƒãƒ³ãƒ‰",
+ "symbol": "SSP"
+ },
+ "JPY": {
+ "name": "日本円",
+ "symbol": "ï¿¥"
+ },
+ "USD": {
+ "name": "米ドル",
+ "symbol": "$"
+ },
+ "KPW": {
+ "name": "北æœé®® ウォン",
+ "symbol": "KPW"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/currency/jgo.json b/library/intl/resources/currency/jgo.json
new file mode 100644
index 000000000..6a68ab95c
--- /dev/null
+++ b/library/intl/resources/currency/jgo.json
@@ -0,0 +1,634 @@
+{
+ "AED": {
+ "name": "AED",
+ "symbol": "AED"
+ },
+ "AFN": {
+ "name": "AFN",
+ "symbol": "AFN"
+ },
+ "ALL": {
+ "name": "ALL",
+ "symbol": "ALL"
+ },
+ "AMD": {
+ "name": "AMD",
+ "symbol": "AMD"
+ },
+ "ANG": {
+ "name": "ANG",
+ "symbol": "ANG"
+ },
+ "AOA": {
+ "name": "AOA",
+ "symbol": "AOA"
+ },
+ "ARS": {
+ "name": "ARS",
+ "symbol": "ARS"
+ },
+ "AUD": {
+ "name": "AUD",
+ "symbol": "A$"
+ },
+ "AWG": {
+ "name": "AWG",
+ "symbol": "AWG"
+ },
+ "AZN": {
+ "name": "AZN",
+ "symbol": "AZN"
+ },
+ "BAM": {
+ "name": "BAM",
+ "symbol": "BAM"
+ },
+ "BBD": {
+ "name": "BBD",
+ "symbol": "BBD"
+ },
+ "BDT": {
+ "name": "BDT",
+ "symbol": "BDT"
+ },
+ "BGN": {
+ "name": "BGN",
+ "symbol": "BGN"
+ },
+ "BHD": {
+ "name": "BHD",
+ "symbol": "BHD"
+ },
+ "BIF": {
+ "name": "BIF",
+ "symbol": "BIF"
+ },
+ "BMD": {
+ "name": "BMD",
+ "symbol": "BMD"
+ },
+ "BND": {
+ "name": "BND",
+ "symbol": "BND"
+ },
+ "BOB": {
+ "name": "BOB",
+ "symbol": "BOB"
+ },
+ "BRL": {
+ "name": "BRL",
+ "symbol": "R$"
+ },
+ "BSD": {
+ "name": "BSD",
+ "symbol": "BSD"
+ },
+ "BTN": {
+ "name": "BTN",
+ "symbol": "BTN"
+ },
+ "BWP": {
+ "name": "BWP",
+ "symbol": "BWP"
+ },
+ "BYR": {
+ "name": "BYR",
+ "symbol": "BYR"
+ },
+ "BZD": {
+ "name": "BZD",
+ "symbol": "BZD"
+ },
+ "CDF": {
+ "name": "CDF",
+ "symbol": "CDF"
+ },
+ "CHF": {
+ "name": "CHF",
+ "symbol": "CHF"
+ },
+ "CLP": {
+ "name": "CLP",
+ "symbol": "CLP"
+ },
+ "CNY": {
+ "name": "CNY",
+ "symbol": "CNÂ¥"
+ },
+ "COP": {
+ "name": "COP",
+ "symbol": "COP"
+ },
+ "CRC": {
+ "name": "CRC",
+ "symbol": "CRC"
+ },
+ "CUC": {
+ "name": "CUC",
+ "symbol": "CUC"
+ },
+ "CUP": {
+ "name": "CUP",
+ "symbol": "CUP"
+ },
+ "CVE": {
+ "name": "CVE",
+ "symbol": "CVE"
+ },
+ "CZK": {
+ "name": "CZK",
+ "symbol": "CZK"
+ },
+ "DJF": {
+ "name": "DJF",
+ "symbol": "DJF"
+ },
+ "DKK": {
+ "name": "DKK",
+ "symbol": "DKK"
+ },
+ "DOP": {
+ "name": "DOP",
+ "symbol": "DOP"
+ },
+ "DZD": {
+ "name": "DZD",
+ "symbol": "DZD"
+ },
+ "EGP": {
+ "name": "EGP",
+ "symbol": "EGP"
+ },
+ "ERN": {
+ "name": "ERN",
+ "symbol": "ERN"
+ },
+ "ETB": {
+ "name": "ETB",
+ "symbol": "ETB"
+ },
+ "XAF": {
+ "name": "Fɛlâŋ",
+ "symbol": "FCFA"
+ },
+ "FJD": {
+ "name": "FJD",
+ "symbol": "FJD"
+ },
+ "FKP": {
+ "name": "FKP",
+ "symbol": "FKP"
+ },
+ "GBP": {
+ "name": "GBP",
+ "symbol": "£"
+ },
+ "GEL": {
+ "name": "GEL",
+ "symbol": "GEL"
+ },
+ "GHS": {
+ "name": "GHS",
+ "symbol": "GHS"
+ },
+ "GIP": {
+ "name": "GIP",
+ "symbol": "GIP"
+ },
+ "GMD": {
+ "name": "GMD",
+ "symbol": "GMD"
+ },
+ "GNF": {
+ "name": "GNF",
+ "symbol": "GNF"
+ },
+ "GTQ": {
+ "name": "GTQ",
+ "symbol": "GTQ"
+ },
+ "GYD": {
+ "name": "GYD",
+ "symbol": "GYD"
+ },
+ "HKD": {
+ "name": "HKD",
+ "symbol": "HK$"
+ },
+ "HNL": {
+ "name": "HNL",
+ "symbol": "HNL"
+ },
+ "HRK": {
+ "name": "HRK",
+ "symbol": "HRK"
+ },
+ "HTG": {
+ "name": "HTG",
+ "symbol": "HTG"
+ },
+ "HUF": {
+ "name": "HUF",
+ "symbol": "HUF"
+ },
+ "IDR": {
+ "name": "IDR",
+ "symbol": "IDR"
+ },
+ "ILS": {
+ "name": "ILS",
+ "symbol": "₪"
+ },
+ "INR": {
+ "name": "INR",
+ "symbol": "₹"
+ },
+ "IQD": {
+ "name": "IQD",
+ "symbol": "IQD"
+ },
+ "IRR": {
+ "name": "IRR",
+ "symbol": "IRR"
+ },
+ "ISK": {
+ "name": "ISK",
+ "symbol": "ISK"
+ },
+ "JMD": {
+ "name": "JMD",
+ "symbol": "JMD"
+ },
+ "JOD": {
+ "name": "JOD",
+ "symbol": "JOD"
+ },
+ "JPY": {
+ "name": "JPY",
+ "symbol": "JPÂ¥"
+ },
+ "KES": {
+ "name": "KES",
+ "symbol": "KES"
+ },
+ "KGS": {
+ "name": "KGS",
+ "symbol": "KGS"
+ },
+ "KHR": {
+ "name": "KHR",
+ "symbol": "KHR"
+ },
+ "KMF": {
+ "name": "KMF",
+ "symbol": "KMF"
+ },
+ "KPW": {
+ "name": "KPW",
+ "symbol": "KPW"
+ },
+ "KRW": {
+ "name": "KRW",
+ "symbol": "â‚©"
+ },
+ "KWD": {
+ "name": "KWD",
+ "symbol": "KWD"
+ },
+ "KYD": {
+ "name": "KYD",
+ "symbol": "KYD"
+ },
+ "KZT": {
+ "name": "KZT",
+ "symbol": "KZT"
+ },
+ "LAK": {
+ "name": "LAK",
+ "symbol": "LAK"
+ },
+ "LBP": {
+ "name": "LBP",
+ "symbol": "LBP"
+ },
+ "LKR": {
+ "name": "LKR",
+ "symbol": "LKR"
+ },
+ "LRD": {
+ "name": "LRD",
+ "symbol": "LRD"
+ },
+ "LSL": {
+ "name": "LSL",
+ "symbol": "LSL"
+ },
+ "LTL": {
+ "name": "LTL",
+ "symbol": "LTL"
+ },
+ "LYD": {
+ "name": "LYD",
+ "symbol": "LYD"
+ },
+ "MAD": {
+ "name": "MAD",
+ "symbol": "MAD"
+ },
+ "MDL": {
+ "name": "MDL",
+ "symbol": "MDL"
+ },
+ "MGA": {
+ "name": "MGA",
+ "symbol": "MGA"
+ },
+ "MKD": {
+ "name": "MKD",
+ "symbol": "MKD"
+ },
+ "MMK": {
+ "name": "MMK",
+ "symbol": "MMK"
+ },
+ "MNT": {
+ "name": "MNT",
+ "symbol": "MNT"
+ },
+ "MOP": {
+ "name": "MOP",
+ "symbol": "MOP"
+ },
+ "MRO": {
+ "name": "MRO",
+ "symbol": "MRO"
+ },
+ "MUR": {
+ "name": "MUR",
+ "symbol": "MUR"
+ },
+ "MVR": {
+ "name": "MVR",
+ "symbol": "MVR"
+ },
+ "MWK": {
+ "name": "MWK",
+ "symbol": "MWK"
+ },
+ "MXN": {
+ "name": "MXN",
+ "symbol": "MX$"
+ },
+ "MYR": {
+ "name": "MYR",
+ "symbol": "MYR"
+ },
+ "MZN": {
+ "name": "MZN",
+ "symbol": "MZN"
+ },
+ "NAD": {
+ "name": "NAD",
+ "symbol": "NAD"
+ },
+ "USD": {
+ "name": "NdÉ”Ìla-AmÉ›lîk",
+ "symbol": "US$"
+ },
+ "CAD": {
+ "name": "NdÉ”Ìla-Kanandâ",
+ "symbol": "CA$"
+ },
+ "NGN": {
+ "name": "NGN",
+ "symbol": "NGN"
+ },
+ "NIO": {
+ "name": "NIO",
+ "symbol": "NIO"
+ },
+ "NOK": {
+ "name": "NOK",
+ "symbol": "NOK"
+ },
+ "NPR": {
+ "name": "NPR",
+ "symbol": "NPR"
+ },
+ "NZD": {
+ "name": "NZD",
+ "symbol": "NZ$"
+ },
+ "OMR": {
+ "name": "OMR",
+ "symbol": "OMR"
+ },
+ "PAB": {
+ "name": "PAB",
+ "symbol": "PAB"
+ },
+ "PEN": {
+ "name": "PEN",
+ "symbol": "PEN"
+ },
+ "PGK": {
+ "name": "PGK",
+ "symbol": "PGK"
+ },
+ "PHP": {
+ "name": "PHP",
+ "symbol": "PHP"
+ },
+ "PKR": {
+ "name": "PKR",
+ "symbol": "PKR"
+ },
+ "PLN": {
+ "name": "PLN",
+ "symbol": "PLN"
+ },
+ "PYG": {
+ "name": "PYG",
+ "symbol": "PYG"
+ },
+ "QAR": {
+ "name": "QAR",
+ "symbol": "QAR"
+ },
+ "RON": {
+ "name": "RON",
+ "symbol": "RON"
+ },
+ "RSD": {
+ "name": "RSD",
+ "symbol": "RSD"
+ },
+ "RUB": {
+ "name": "RUB",
+ "symbol": "RUB"
+ },
+ "RWF": {
+ "name": "RWF",
+ "symbol": "RWF"
+ },
+ "SAR": {
+ "name": "SAR",
+ "symbol": "SAR"
+ },
+ "SBD": {
+ "name": "SBD",
+ "symbol": "SBD"
+ },
+ "SCR": {
+ "name": "SCR",
+ "symbol": "SCR"
+ },
+ "SDG": {
+ "name": "SDG",
+ "symbol": "SDG"
+ },
+ "SEK": {
+ "name": "SEK",
+ "symbol": "SEK"
+ },
+ "SGD": {
+ "name": "SGD",
+ "symbol": "SGD"
+ },
+ "SHP": {
+ "name": "SHP",
+ "symbol": "SHP"
+ },
+ "SLL": {
+ "name": "SLL",
+ "symbol": "SLL"
+ },
+ "SOS": {
+ "name": "SOS",
+ "symbol": "SOS"
+ },
+ "SRD": {
+ "name": "SRD",
+ "symbol": "SRD"
+ },
+ "SSP": {
+ "name": "SSP",
+ "symbol": "SSP"
+ },
+ "STD": {
+ "name": "STD",
+ "symbol": "STD"
+ },
+ "SVC": {
+ "name": "SVC",
+ "symbol": "SVC"
+ },
+ "SYP": {
+ "name": "SYP",
+ "symbol": "SYP"
+ },
+ "SZL": {
+ "name": "SZL",
+ "symbol": "SZL"
+ },
+ "THB": {
+ "name": "THB",
+ "symbol": "THB"
+ },
+ "TJS": {
+ "name": "TJS",
+ "symbol": "TJS"
+ },
+ "TMT": {
+ "name": "TMT",
+ "symbol": "TMT"
+ },
+ "TND": {
+ "name": "TND",
+ "symbol": "TND"
+ },
+ "TOP": {
+ "name": "TOP",
+ "symbol": "TOP"
+ },
+ "TRY": {
+ "name": "TRY",
+ "symbol": "TRY"
+ },
+ "TTD": {
+ "name": "TTD",
+ "symbol": "TTD"
+ },
+ "TWD": {
+ "name": "TWD",
+ "symbol": "NT$"
+ },
+ "TZS": {
+ "name": "TZS",
+ "symbol": "TZS"
+ },
+ "UAH": {
+ "name": "UAH",
+ "symbol": "UAH"
+ },
+ "UGX": {
+ "name": "UGX",
+ "symbol": "UGX"
+ },
+ "UYU": {
+ "name": "UYU",
+ "symbol": "UYU"
+ },
+ "UZS": {
+ "name": "UZS",
+ "symbol": "UZS"
+ },
+ "EUR": {
+ "name": "É„ÌlÉ”",
+ "symbol": "€"
+ },
+ "VEF": {
+ "name": "VEF",
+ "symbol": "VEF"
+ },
+ "VND": {
+ "name": "VND",
+ "symbol": "â‚«"
+ },
+ "VUV": {
+ "name": "VUV",
+ "symbol": "VUV"
+ },
+ "WST": {
+ "name": "WST",
+ "symbol": "WST"
+ },
+ "XCD": {
+ "name": "XCD",
+ "symbol": "EC$"
+ },
+ "XOF": {
+ "name": "XOF",
+ "symbol": "CFA"
+ },
+ "XPF": {
+ "name": "XPF",
+ "symbol": "CFPF"
+ },
+ "YER": {
+ "name": "YER",
+ "symbol": "YER"
+ },
+ "ZAR": {
+ "name": "ZAR",
+ "symbol": "ZAR"
+ },
+ "ZMW": {
+ "name": "ZMW",
+ "symbol": "ZMW"
+ },
+ "ZWL": {
+ "name": "ZWL",
+ "symbol": "ZWL"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/currency/jmc.json b/library/intl/resources/currency/jmc.json
new file mode 100644
index 000000000..655670a30
--- /dev/null
+++ b/library/intl/resources/currency/jmc.json
@@ -0,0 +1,634 @@
+{
+ "AFN": {
+ "name": "AFN",
+ "symbol": "AFN"
+ },
+ "ALL": {
+ "name": "ALL",
+ "symbol": "ALL"
+ },
+ "AMD": {
+ "name": "AMD",
+ "symbol": "AMD"
+ },
+ "ANG": {
+ "name": "ANG",
+ "symbol": "ANG"
+ },
+ "ARS": {
+ "name": "ARS",
+ "symbol": "ARS"
+ },
+ "AWG": {
+ "name": "AWG",
+ "symbol": "AWG"
+ },
+ "AZN": {
+ "name": "AZN",
+ "symbol": "AZN"
+ },
+ "BAM": {
+ "name": "BAM",
+ "symbol": "BAM"
+ },
+ "BBD": {
+ "name": "BBD",
+ "symbol": "BBD"
+ },
+ "BDT": {
+ "name": "BDT",
+ "symbol": "BDT"
+ },
+ "BGN": {
+ "name": "BGN",
+ "symbol": "BGN"
+ },
+ "ETB": {
+ "name": "Bir ya Uhabeshi",
+ "symbol": "ETB"
+ },
+ "BMD": {
+ "name": "BMD",
+ "symbol": "BMD"
+ },
+ "BND": {
+ "name": "BND",
+ "symbol": "BND"
+ },
+ "BOB": {
+ "name": "BOB",
+ "symbol": "BOB"
+ },
+ "BRL": {
+ "name": "BRL",
+ "symbol": "R$"
+ },
+ "BSD": {
+ "name": "BSD",
+ "symbol": "BSD"
+ },
+ "BTN": {
+ "name": "BTN",
+ "symbol": "BTN"
+ },
+ "BYR": {
+ "name": "BYR",
+ "symbol": "BYR"
+ },
+ "BZD": {
+ "name": "BZD",
+ "symbol": "BZD"
+ },
+ "CLP": {
+ "name": "CLP",
+ "symbol": "CLP"
+ },
+ "COP": {
+ "name": "COP",
+ "symbol": "COP"
+ },
+ "CRC": {
+ "name": "CRC",
+ "symbol": "CRC"
+ },
+ "CUC": {
+ "name": "CUC",
+ "symbol": "CUC"
+ },
+ "CUP": {
+ "name": "CUP",
+ "symbol": "CUP"
+ },
+ "CZK": {
+ "name": "CZK",
+ "symbol": "CZK"
+ },
+ "GMD": {
+ "name": "Dalasi ya Gambia",
+ "symbol": "GMD"
+ },
+ "DZD": {
+ "name": "Dinari ya Aljeria",
+ "symbol": "DZD"
+ },
+ "BHD": {
+ "name": "Dinari ya Bahareni",
+ "symbol": "BHD"
+ },
+ "LYD": {
+ "name": "Dinari ya Libya",
+ "symbol": "LYD"
+ },
+ "SDG": {
+ "name": "Dinari ya Sudani",
+ "symbol": "SDG"
+ },
+ "TND": {
+ "name": "Dinari ya Tunisia",
+ "symbol": "TND"
+ },
+ "AED": {
+ "name": "Dirham ya Falme za Kiarabu",
+ "symbol": "AED"
+ },
+ "MAD": {
+ "name": "Dirham ya Moroko",
+ "symbol": "MAD"
+ },
+ "DKK": {
+ "name": "DKK",
+ "symbol": "DKK"
+ },
+ "STD": {
+ "name": "Dobra ya Sao Tome na Principe",
+ "symbol": "STD"
+ },
+ "AUD": {
+ "name": "Dola ya Australia",
+ "symbol": "A$"
+ },
+ "CAD": {
+ "name": "Dola ya Kanada",
+ "symbol": "CA$"
+ },
+ "LRD": {
+ "name": "Dola ya Liberia",
+ "symbol": "LRD"
+ },
+ "USD": {
+ "name": "Dola ya Marekani",
+ "symbol": "US$"
+ },
+ "NAD": {
+ "name": "Dola ya Namibia",
+ "symbol": "NAD"
+ },
+ "DOP": {
+ "name": "DOP",
+ "symbol": "DOP"
+ },
+ "CVE": {
+ "name": "Eskudo ya Kepuvede",
+ "symbol": "CVE"
+ },
+ "XOF": {
+ "name": "Faranga CFA BCEAO",
+ "symbol": "CFA"
+ },
+ "XAF": {
+ "name": "Faranga CFA BEAC",
+ "symbol": "FCFA"
+ },
+ "MGA": {
+ "name": "Faranga ya Bukini",
+ "symbol": "MGA"
+ },
+ "BIF": {
+ "name": "Faranga ya Burundi",
+ "symbol": "BIF"
+ },
+ "DJF": {
+ "name": "Faranga ya Jibuti",
+ "symbol": "DJF"
+ },
+ "KMF": {
+ "name": "Faranga ya Komoro",
+ "symbol": "KMF"
+ },
+ "CDF": {
+ "name": "Faranga ya Kongo",
+ "symbol": "CDF"
+ },
+ "RWF": {
+ "name": "Faranga ya Rwanda",
+ "symbol": "RWF"
+ },
+ "CHF": {
+ "name": "Faranga ya Uswisi",
+ "symbol": "CHF"
+ },
+ "FJD": {
+ "name": "FJD",
+ "symbol": "FJD"
+ },
+ "FKP": {
+ "name": "FKP",
+ "symbol": "FKP"
+ },
+ "GEL": {
+ "name": "GEL",
+ "symbol": "GEL"
+ },
+ "GHS": {
+ "name": "GHS",
+ "symbol": "GHS"
+ },
+ "GIP": {
+ "name": "GIP",
+ "symbol": "GIP"
+ },
+ "GNF": {
+ "name": "GNF",
+ "symbol": "GNF"
+ },
+ "GTQ": {
+ "name": "GTQ",
+ "symbol": "GTQ"
+ },
+ "GYD": {
+ "name": "GYD",
+ "symbol": "GYD"
+ },
+ "HKD": {
+ "name": "HKD",
+ "symbol": "HK$"
+ },
+ "HNL": {
+ "name": "HNL",
+ "symbol": "HNL"
+ },
+ "HRK": {
+ "name": "HRK",
+ "symbol": "HRK"
+ },
+ "HTG": {
+ "name": "HTG",
+ "symbol": "HTG"
+ },
+ "HUF": {
+ "name": "HUF",
+ "symbol": "HUF"
+ },
+ "IDR": {
+ "name": "IDR",
+ "symbol": "IDR"
+ },
+ "ILS": {
+ "name": "ILS",
+ "symbol": "₪"
+ },
+ "IQD": {
+ "name": "IQD",
+ "symbol": "IQD"
+ },
+ "IRR": {
+ "name": "IRR",
+ "symbol": "IRR"
+ },
+ "ISK": {
+ "name": "ISK",
+ "symbol": "ISK"
+ },
+ "JMD": {
+ "name": "JMD",
+ "symbol": "JMD"
+ },
+ "JOD": {
+ "name": "JOD",
+ "symbol": "JOD"
+ },
+ "KGS": {
+ "name": "KGS",
+ "symbol": "KGS"
+ },
+ "KHR": {
+ "name": "KHR",
+ "symbol": "KHR"
+ },
+ "KPW": {
+ "name": "KPW",
+ "symbol": "KPW"
+ },
+ "KRW": {
+ "name": "KRW",
+ "symbol": "â‚©"
+ },
+ "MWK": {
+ "name": "Kwacha ya Malawi",
+ "symbol": "MWK"
+ },
+ "ZMW": {
+ "name": "Kwacha ya Zambia",
+ "symbol": "ZMW"
+ },
+ "AOA": {
+ "name": "Kwanza ya Angola",
+ "symbol": "AOA"
+ },
+ "KWD": {
+ "name": "KWD",
+ "symbol": "KWD"
+ },
+ "KYD": {
+ "name": "KYD",
+ "symbol": "KYD"
+ },
+ "KZT": {
+ "name": "KZT",
+ "symbol": "KZT"
+ },
+ "LAK": {
+ "name": "LAK",
+ "symbol": "LAK"
+ },
+ "LBP": {
+ "name": "LBP",
+ "symbol": "LBP"
+ },
+ "SLL": {
+ "name": "Leoni",
+ "symbol": "SLL"
+ },
+ "SZL": {
+ "name": "Lilangeni",
+ "symbol": "SZL"
+ },
+ "LKR": {
+ "name": "LKR",
+ "symbol": "LKR"
+ },
+ "LSL": {
+ "name": "Loti ya Lesoto",
+ "symbol": "LSL"
+ },
+ "LTL": {
+ "name": "LTL",
+ "symbol": "LTL"
+ },
+ "MDL": {
+ "name": "MDL",
+ "symbol": "MDL"
+ },
+ "MKD": {
+ "name": "MKD",
+ "symbol": "MKD"
+ },
+ "MMK": {
+ "name": "MMK",
+ "symbol": "MMK"
+ },
+ "MNT": {
+ "name": "MNT",
+ "symbol": "MNT"
+ },
+ "MOP": {
+ "name": "MOP",
+ "symbol": "MOP"
+ },
+ "MVR": {
+ "name": "MVR",
+ "symbol": "MVR"
+ },
+ "MXN": {
+ "name": "MXN",
+ "symbol": "MX$"
+ },
+ "MYR": {
+ "name": "MYR",
+ "symbol": "MYR"
+ },
+ "MZN": {
+ "name": "MZN",
+ "symbol": "MZN"
+ },
+ "NGN": {
+ "name": "Naira ya Nijeria",
+ "symbol": "NGN"
+ },
+ "ERN": {
+ "name": "Nakfa ya Eritrea",
+ "symbol": "ERN"
+ },
+ "NIO": {
+ "name": "NIO",
+ "symbol": "NIO"
+ },
+ "NOK": {
+ "name": "NOK",
+ "symbol": "NOK"
+ },
+ "NPR": {
+ "name": "NPR",
+ "symbol": "NPR"
+ },
+ "NZD": {
+ "name": "NZD",
+ "symbol": "NZ$"
+ },
+ "OMR": {
+ "name": "OMR",
+ "symbol": "OMR"
+ },
+ "PAB": {
+ "name": "PAB",
+ "symbol": "PAB"
+ },
+ "EGP": {
+ "name": "Pauni ya Misri",
+ "symbol": "EGP"
+ },
+ "SHP": {
+ "name": "Pauni ya Santahelena",
+ "symbol": "SHP"
+ },
+ "GBP": {
+ "name": "Pauni ya Uingereza",
+ "symbol": "£"
+ },
+ "PEN": {
+ "name": "PEN",
+ "symbol": "PEN"
+ },
+ "PGK": {
+ "name": "PGK",
+ "symbol": "PGK"
+ },
+ "PHP": {
+ "name": "PHP",
+ "symbol": "PHP"
+ },
+ "PKR": {
+ "name": "PKR",
+ "symbol": "PKR"
+ },
+ "PLN": {
+ "name": "PLN",
+ "symbol": "PLN"
+ },
+ "BWP": {
+ "name": "Pula ya Botswana",
+ "symbol": "BWP"
+ },
+ "PYG": {
+ "name": "PYG",
+ "symbol": "PYG"
+ },
+ "QAR": {
+ "name": "QAR",
+ "symbol": "QAR"
+ },
+ "ZAR": {
+ "name": "Randi ya Afrika Kusini",
+ "symbol": "ZAR"
+ },
+ "SAR": {
+ "name": "Riyal ya Saudia",
+ "symbol": "SAR"
+ },
+ "RON": {
+ "name": "RON",
+ "symbol": "RON"
+ },
+ "RSD": {
+ "name": "RSD",
+ "symbol": "RSD"
+ },
+ "RUB": {
+ "name": "RUB",
+ "symbol": "RUB"
+ },
+ "INR": {
+ "name": "Rupia ya India",
+ "symbol": "₹"
+ },
+ "MUR": {
+ "name": "Rupia ya Morisi",
+ "symbol": "MUR"
+ },
+ "SCR": {
+ "name": "Rupia ya Shelisheli",
+ "symbol": "SCR"
+ },
+ "JPY": {
+ "name": "Sarafu ya Kijapani",
+ "symbol": "JPÂ¥"
+ },
+ "SBD": {
+ "name": "SBD",
+ "symbol": "SBD"
+ },
+ "SEK": {
+ "name": "SEK",
+ "symbol": "SEK"
+ },
+ "SGD": {
+ "name": "SGD",
+ "symbol": "SGD"
+ },
+ "KES": {
+ "name": "Shilingi ya Kenya",
+ "symbol": "KES"
+ },
+ "SOS": {
+ "name": "Shilingi ya Somalia",
+ "symbol": "SOS"
+ },
+ "TZS": {
+ "name": "Shilingi ya Tanzania",
+ "symbol": "TSh"
+ },
+ "UGX": {
+ "name": "Shilingi ya Uganda",
+ "symbol": "UGX"
+ },
+ "SRD": {
+ "name": "SRD",
+ "symbol": "SRD"
+ },
+ "SSP": {
+ "name": "SSP",
+ "symbol": "SSP"
+ },
+ "SVC": {
+ "name": "SVC",
+ "symbol": "SVC"
+ },
+ "SYP": {
+ "name": "SYP",
+ "symbol": "SYP"
+ },
+ "THB": {
+ "name": "THB",
+ "symbol": "THB"
+ },
+ "TJS": {
+ "name": "TJS",
+ "symbol": "TJS"
+ },
+ "TMT": {
+ "name": "TMT",
+ "symbol": "TMT"
+ },
+ "TOP": {
+ "name": "TOP",
+ "symbol": "TOP"
+ },
+ "TRY": {
+ "name": "TRY",
+ "symbol": "TRY"
+ },
+ "TTD": {
+ "name": "TTD",
+ "symbol": "TTD"
+ },
+ "TWD": {
+ "name": "TWD",
+ "symbol": "NT$"
+ },
+ "UAH": {
+ "name": "UAH",
+ "symbol": "UAH"
+ },
+ "MRO": {
+ "name": "Ugwiya ya Moritania",
+ "symbol": "MRO"
+ },
+ "UYU": {
+ "name": "UYU",
+ "symbol": "UYU"
+ },
+ "UZS": {
+ "name": "UZS",
+ "symbol": "UZS"
+ },
+ "VEF": {
+ "name": "VEF",
+ "symbol": "VEF"
+ },
+ "VND": {
+ "name": "VND",
+ "symbol": "â‚«"
+ },
+ "VUV": {
+ "name": "VUV",
+ "symbol": "VUV"
+ },
+ "WST": {
+ "name": "WST",
+ "symbol": "WST"
+ },
+ "XCD": {
+ "name": "XCD",
+ "symbol": "EC$"
+ },
+ "XPF": {
+ "name": "XPF",
+ "symbol": "CFPF"
+ },
+ "YER": {
+ "name": "YER",
+ "symbol": "YER"
+ },
+ "CNY": {
+ "name": "Yuan Renminbi ya China",
+ "symbol": "CNÂ¥"
+ },
+ "EUR": {
+ "name": "Yuro",
+ "symbol": "€"
+ },
+ "ZWL": {
+ "name": "ZWL",
+ "symbol": "ZWL"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/currency/ka.json b/library/intl/resources/currency/ka.json
new file mode 100644
index 000000000..c9e686882
--- /dev/null
+++ b/library/intl/resources/currency/ka.json
@@ -0,0 +1,634 @@
+{
+ "XOF": {
+ "name": "(CFA) ფრáƒáƒœáƒ™áƒ˜ (BCEAO)",
+ "symbol": "CFA"
+ },
+ "XAF": {
+ "name": "CFA ფრáƒáƒœáƒ™áƒ˜ (BEAC)",
+ "symbol": "FCFA"
+ },
+ "XPF": {
+ "name": "CFP ფრáƒáƒœáƒ™áƒ˜",
+ "symbol": "CFPF"
+ },
+ "LSL": {
+ "name": "LSL",
+ "symbol": "LSL"
+ },
+ "SVC": {
+ "name": "SVC",
+ "symbol": "SVC"
+ },
+ "ZWL": {
+ "name": "ZWL",
+ "symbol": "ZWL"
+ },
+ "AUD": {
+ "name": "áƒáƒ•áƒ¡áƒ¢áƒ áƒáƒšáƒ˜áƒ£áƒ áƒ˜ დáƒáƒšáƒáƒ áƒ˜",
+ "symbol": "AUD"
+ },
+ "AFN": {
+ "name": "áƒáƒ•áƒ¦áƒáƒœáƒ£áƒ áƒ˜ áƒáƒ•áƒ¦áƒáƒœáƒ˜",
+ "symbol": "AFN"
+ },
+ "AZN": {
+ "name": "áƒáƒ–ერბáƒáƒ˜áƒ¯áƒáƒœáƒ£áƒšáƒ˜ მáƒáƒœáƒáƒ—ი",
+ "symbol": "AZN"
+ },
+ "ALL": {
+ "name": "áƒáƒšáƒ‘áƒáƒœáƒ£áƒ áƒ˜ ლეკი",
+ "symbol": "ALL"
+ },
+ "DZD": {
+ "name": "áƒáƒšáƒŸáƒ˜áƒ áƒ£áƒšáƒ˜ დინáƒáƒ áƒ˜",
+ "symbol": "DZD"
+ },
+ "AOA": {
+ "name": "áƒáƒœáƒ’áƒáƒšáƒ£áƒ áƒ˜ კვáƒáƒœáƒ–áƒ",
+ "symbol": "AOA"
+ },
+ "AED": {
+ "name": "áƒáƒ áƒáƒ‘თრგáƒáƒ”რთიáƒáƒœáƒ”ბული სáƒáƒáƒ›áƒ˜áƒ áƒáƒ”ბის დირჰáƒáƒ›áƒ˜",
+ "symbol": "AED"
+ },
+ "ARS": {
+ "name": "áƒáƒ áƒ’ენტინული პესáƒ",
+ "symbol": "ARS"
+ },
+ "AWG": {
+ "name": "áƒáƒ áƒ£áƒ‘áƒáƒœáƒ£áƒšáƒ˜ გულდენი",
+ "symbol": "AWG"
+ },
+ "XCD": {
+ "name": "áƒáƒ¦áƒ›áƒáƒ¡áƒáƒ•áƒšáƒ”თ კáƒáƒ áƒ˜áƒ‘იული დáƒáƒšáƒáƒ áƒ˜",
+ "symbol": "EC$"
+ },
+ "USD": {
+ "name": "áƒáƒ¨áƒ¨ დáƒáƒšáƒáƒ áƒ˜",
+ "symbol": "US$"
+ },
+ "NZD": {
+ "name": "áƒáƒ®áƒáƒšáƒ˜ ზელáƒáƒœáƒ“იის დáƒáƒšáƒáƒ áƒ˜",
+ "symbol": "NZD"
+ },
+ "TRY": {
+ "name": "áƒáƒ®áƒáƒšáƒ˜ თურქული ლირáƒ",
+ "symbol": "TRY"
+ },
+ "BDT": {
+ "name": "ბáƒáƒœáƒ’ლáƒáƒ“ეშური ტáƒáƒ™áƒ",
+ "symbol": "BDT"
+ },
+ "BBD": {
+ "name": "ბáƒáƒ áƒ‘áƒáƒ“áƒáƒ¡áƒ£áƒšáƒ˜ დáƒáƒšáƒáƒ áƒ˜",
+ "symbol": "BBD"
+ },
+ "BSD": {
+ "name": "ბáƒáƒ°áƒáƒ›áƒ£áƒ áƒ˜ დáƒáƒšáƒáƒ áƒ˜",
+ "symbol": "BSD"
+ },
+ "BHD": {
+ "name": "ბáƒáƒ°áƒ áƒ”ინული დინáƒáƒ áƒ˜",
+ "symbol": "BHD"
+ },
+ "BZD": {
+ "name": "ბელიზის დáƒáƒšáƒáƒ áƒ˜",
+ "symbol": "BZD"
+ },
+ "BYR": {
+ "name": "ბელáƒáƒ áƒ£áƒ¡áƒ£áƒšáƒ˜ რუბლი",
+ "symbol": "BYR"
+ },
+ "BMD": {
+ "name": "ბერმუდული დáƒáƒšáƒáƒ áƒ˜",
+ "symbol": "BMD"
+ },
+ "BOB": {
+ "name": "ბáƒáƒšáƒ˜áƒ•áƒ˜áƒ£áƒ áƒ˜ ბáƒáƒšáƒ˜áƒ•áƒ˜áƒáƒœáƒ",
+ "symbol": "BOB"
+ },
+ "BAM": {
+ "name": "ბáƒáƒ¡áƒœáƒ˜áƒ დრჰერცáƒáƒ’áƒáƒ•áƒ˜áƒœáƒáƒ¡ კáƒáƒœáƒ•áƒ”რტირებáƒáƒ“ი მáƒáƒ áƒ™áƒ",
+ "symbol": "BAM"
+ },
+ "BWP": {
+ "name": "ბáƒáƒªáƒ•áƒáƒœáƒ£áƒ áƒ˜ პულáƒ",
+ "symbol": "BWP"
+ },
+ "BRL": {
+ "name": "ბრáƒáƒ–ილიური რეáƒáƒšáƒ˜",
+ "symbol": "R$"
+ },
+ "GBP": {
+ "name": "ბრიტáƒáƒœáƒ£áƒšáƒ˜ გირვáƒáƒœáƒ¥áƒ სტერლინგი",
+ "symbol": "£"
+ },
+ "BND": {
+ "name": "ბრუნეული დáƒáƒšáƒáƒ áƒ˜",
+ "symbol": "BND"
+ },
+ "BGN": {
+ "name": "ბულგáƒáƒ áƒ£áƒšáƒ˜ ლევი",
+ "symbol": "BGN"
+ },
+ "BIF": {
+ "name": "ბურუნდიული ფრáƒáƒœáƒ™áƒ˜",
+ "symbol": "BIF"
+ },
+ "BTN": {
+ "name": "ბუტáƒáƒœáƒ£áƒ áƒ˜ ნგულტრუმი",
+ "symbol": "BTN"
+ },
+ "GYD": {
+ "name": "გáƒáƒ˜áƒáƒœáƒ£áƒ áƒ˜ დáƒáƒšáƒáƒ áƒ˜",
+ "symbol": "GYD"
+ },
+ "GMD": {
+ "name": "გáƒáƒ›áƒ‘იური დáƒáƒšáƒáƒ¡áƒ˜",
+ "symbol": "GMD"
+ },
+ "GHS": {
+ "name": "გáƒáƒœáƒ£áƒ áƒ˜ სედი",
+ "symbol": "GHS"
+ },
+ "GTQ": {
+ "name": "გვáƒáƒ¢áƒ”მáƒáƒšáƒ£áƒ áƒ˜ კეტსáƒáƒšáƒ˜",
+ "symbol": "GTQ"
+ },
+ "GNF": {
+ "name": "გვინეური ფრáƒáƒœáƒ™áƒ˜",
+ "symbol": "GNF"
+ },
+ "GIP": {
+ "name": "გიბრáƒáƒšáƒ¢áƒáƒ áƒ£áƒšáƒ˜ ფუნტი",
+ "symbol": "GIP"
+ },
+ "DKK": {
+ "name": "დáƒáƒœáƒ˜áƒ£áƒ áƒ˜ კრáƒáƒœáƒ",
+ "symbol": "DKK"
+ },
+ "DOP": {
+ "name": "დáƒáƒ›áƒ˜áƒœáƒ˜áƒ™áƒ£áƒ áƒ˜ პესáƒ",
+ "symbol": "DOP"
+ },
+ "EGP": {
+ "name": "ეგვიპტური გირვáƒáƒœáƒ¥áƒ",
+ "symbol": "EGP"
+ },
+ "EUR": {
+ "name": "ევრáƒ",
+ "symbol": "€"
+ },
+ "ETB": {
+ "name": "ეთიáƒáƒžáƒ˜áƒ£áƒ áƒ˜ ბირი",
+ "symbol": "ETB"
+ },
+ "IQD": {
+ "name": "ერáƒáƒ§áƒ£áƒšáƒ˜ დინáƒáƒ áƒ˜",
+ "symbol": "IQD"
+ },
+ "ERN": {
+ "name": "ერიტრეის ნáƒáƒ™áƒ¤áƒ",
+ "symbol": "ERN"
+ },
+ "VUV": {
+ "name": "ვáƒáƒœáƒ£áƒáƒ¢áƒ£áƒ¡ ვáƒáƒ¢áƒ£",
+ "symbol": "VUV"
+ },
+ "VEF": {
+ "name": "ვენესუელის ბáƒáƒšáƒ˜áƒ•áƒáƒ áƒ˜",
+ "symbol": "VEF"
+ },
+ "VND": {
+ "name": "ვიეტნáƒáƒ›áƒ£áƒ áƒ˜ დáƒáƒœáƒ’ი",
+ "symbol": "VND"
+ },
+ "ZMW": {
+ "name": "ზáƒáƒ›áƒ‘იური კვáƒáƒ­áƒ",
+ "symbol": "ZMW"
+ },
+ "TMT": {
+ "name": "თურქმენეთის მáƒáƒœáƒáƒ—ი",
+ "symbol": "TMT"
+ },
+ "JMD": {
+ "name": "იáƒáƒ›áƒáƒ˜áƒ™áƒ£áƒ áƒ˜ დáƒáƒšáƒáƒ áƒ˜",
+ "symbol": "JMD"
+ },
+ "JPY": {
+ "name": "იáƒáƒžáƒáƒœáƒ£áƒ áƒ˜ იენი",
+ "symbol": "JPY"
+ },
+ "YER": {
+ "name": "იემენის რეáƒáƒšáƒ˜",
+ "symbol": "YER"
+ },
+ "IDR": {
+ "name": "ინდáƒáƒœáƒ”ზიური რუპიáƒ",
+ "symbol": "IDR"
+ },
+ "INR": {
+ "name": "ინდური რუპიáƒ",
+ "symbol": "INR"
+ },
+ "JOD": {
+ "name": "იáƒáƒ áƒ“áƒáƒœáƒ˜áƒ£áƒšáƒ˜ დáƒáƒšáƒáƒ áƒ˜",
+ "symbol": "JOD"
+ },
+ "IRR": {
+ "name": "ირáƒáƒœáƒ£áƒšáƒ˜ რიáƒáƒšáƒ˜",
+ "symbol": "IRR"
+ },
+ "ISK": {
+ "name": "ისლáƒáƒœáƒ“იური კრáƒáƒœáƒ",
+ "symbol": "ISK"
+ },
+ "ILS": {
+ "name": "ისრáƒáƒ”ლის áƒáƒ®áƒáƒšáƒ˜ შეკელი",
+ "symbol": "ILS"
+ },
+ "CVE": {
+ "name": "კáƒáƒ‘áƒ-ვერდეს ესკუდáƒ",
+ "symbol": "CVE"
+ },
+ "KYD": {
+ "name": "კáƒáƒ˜áƒ›áƒáƒœáƒ˜áƒ¡ კუნძულების დáƒáƒšáƒáƒ áƒ˜",
+ "symbol": "KYD"
+ },
+ "KHR": {
+ "name": "კáƒáƒ›áƒ‘áƒáƒ¯áƒ£áƒ áƒ˜ რიელი",
+ "symbol": "KHR"
+ },
+ "CAD": {
+ "name": "კáƒáƒœáƒáƒ“ური დáƒáƒšáƒáƒ áƒ˜",
+ "symbol": "CA$"
+ },
+ "QAR": {
+ "name": "კáƒáƒ¢áƒáƒ áƒ˜áƒ¡ რიáƒáƒšáƒ˜",
+ "symbol": "QAR"
+ },
+ "KES": {
+ "name": "კენიური შილინგი",
+ "symbol": "KES"
+ },
+ "COP": {
+ "name": "კáƒáƒšáƒ£áƒ›áƒ‘იური პესáƒ",
+ "symbol": "COP"
+ },
+ "KMF": {
+ "name": "კáƒáƒ›áƒáƒ áƒ£áƒšáƒ˜ ფრáƒáƒœáƒ™áƒ˜",
+ "symbol": "KMF"
+ },
+ "CDF": {
+ "name": "კáƒáƒœáƒ’áƒáƒ¡ ფრáƒáƒœáƒ™áƒ˜",
+ "symbol": "CDF"
+ },
+ "CRC": {
+ "name": "კáƒáƒ¡áƒ¢áƒ-რიკული კáƒáƒšáƒáƒœáƒ˜",
+ "symbol": "CRC"
+ },
+ "CUC": {
+ "name": "კუბური კáƒáƒœáƒ•áƒ”რტირებáƒáƒ“ი პესáƒ",
+ "symbol": "CUC"
+ },
+ "CUP": {
+ "name": "კუბური პესáƒ",
+ "symbol": "CUP"
+ },
+ "LAK": {
+ "name": "ლáƒáƒáƒ¡áƒ£áƒ áƒ˜ კიპი",
+ "symbol": "LAK"
+ },
+ "LBP": {
+ "name": "ლიბáƒáƒœáƒ£áƒ áƒ˜ ფუნტი",
+ "symbol": "LBP"
+ },
+ "LRD": {
+ "name": "ლიბერიული დáƒáƒšáƒáƒ áƒ˜",
+ "symbol": "LRD"
+ },
+ "LYD": {
+ "name": "ლიბიური დინáƒáƒ áƒ˜",
+ "symbol": "LYD"
+ },
+ "LTL": {
+ "name": "ლიტვური ლიტáƒ",
+ "symbol": "LTL"
+ },
+ "MGA": {
+ "name": "მáƒáƒ“áƒáƒ’áƒáƒ¡áƒ™áƒáƒ áƒ˜áƒ¡ áƒáƒ áƒ˜áƒáƒ áƒ˜",
+ "symbol": "MGA"
+ },
+ "MUR": {
+ "name": "მáƒáƒ•áƒ áƒ˜áƒ¢áƒáƒœáƒ£áƒšáƒ˜ რუპიáƒ",
+ "symbol": "MUR"
+ },
+ "MRO": {
+ "name": "მáƒáƒ•áƒ áƒ˜áƒ¢áƒáƒœáƒ£áƒšáƒ˜ უგიáƒ",
+ "symbol": "MRO"
+ },
+ "MOP": {
+ "name": "მáƒáƒ™áƒáƒ£áƒ¡ პáƒáƒ¢áƒáƒ™áƒ",
+ "symbol": "MOP"
+ },
+ "MKD": {
+ "name": "მáƒáƒ™áƒ”დáƒáƒœáƒ˜áƒ£áƒ áƒ˜ დინáƒáƒ áƒ˜",
+ "symbol": "MKD"
+ },
+ "MWK": {
+ "name": "მáƒáƒšáƒáƒ•áƒ˜áƒ£áƒ áƒ˜ კვáƒáƒ©áƒ",
+ "symbol": "MWK"
+ },
+ "MYR": {
+ "name": "მáƒáƒšáƒáƒ˜áƒ–იური რინგიტი",
+ "symbol": "MYR"
+ },
+ "MVR": {
+ "name": "მáƒáƒšáƒ“ივური რუფიáƒ",
+ "symbol": "MVR"
+ },
+ "MAD": {
+ "name": "მáƒáƒ áƒáƒ™áƒáƒ¡ დირჰáƒáƒ›áƒ˜",
+ "symbol": "MAD"
+ },
+ "MXN": {
+ "name": "მექსიკური პესáƒ",
+ "symbol": "MX$"
+ },
+ "MMK": {
+ "name": "მიáƒáƒœáƒ›áƒáƒ áƒ˜áƒ¡ კიáƒáƒ¢áƒ˜",
+ "symbol": "MMK"
+ },
+ "MZN": {
+ "name": "მáƒáƒ–áƒáƒ›áƒ‘იკური მეტიკáƒáƒšáƒ˜",
+ "symbol": "MZN"
+ },
+ "MDL": {
+ "name": "მáƒáƒšáƒ“áƒáƒ•áƒ£áƒ áƒ˜ ლეუ",
+ "symbol": "MDL"
+ },
+ "MNT": {
+ "name": "მáƒáƒœáƒ¦áƒáƒšáƒ£áƒ áƒ˜ ტუგრიკი",
+ "symbol": "MNT"
+ },
+ "NAD": {
+ "name": "ნáƒáƒ›áƒ˜áƒ‘იური დáƒáƒšáƒáƒ áƒ˜",
+ "symbol": "NAD"
+ },
+ "NPR": {
+ "name": "ნეპáƒáƒšáƒ£áƒ áƒ˜ რუპიáƒ",
+ "symbol": "NPR"
+ },
+ "NGN": {
+ "name": "ნიგერიული ნáƒáƒ˜áƒ áƒ",
+ "symbol": "NGN"
+ },
+ "ANG": {
+ "name": "ნიდერლáƒáƒœáƒ“ების áƒáƒœáƒ¢áƒ˜áƒšáƒ”ბის გულდენი",
+ "symbol": "ANG"
+ },
+ "NIO": {
+ "name": "ნიკáƒáƒ áƒáƒ’უული კáƒáƒ áƒ“áƒáƒ‘áƒ",
+ "symbol": "NIO"
+ },
+ "NOK": {
+ "name": "ნáƒáƒ áƒ•áƒ”გიული კრáƒáƒœáƒ",
+ "symbol": "NOK"
+ },
+ "OMR": {
+ "name": "áƒáƒ›áƒáƒœáƒ˜áƒ¡ რიáƒáƒšáƒ˜",
+ "symbol": "OMR"
+ },
+ "PKR": {
+ "name": "პáƒáƒ™áƒ˜áƒ¡áƒ¢áƒáƒœáƒ£áƒ áƒ˜ რუპიáƒ",
+ "symbol": "PKR"
+ },
+ "PAB": {
+ "name": "პáƒáƒœáƒáƒ›áƒ£áƒ áƒ˜ ბáƒáƒšáƒ‘áƒáƒ",
+ "symbol": "PAB"
+ },
+ "PGK": {
+ "name": "პáƒáƒžáƒ£áƒ-áƒáƒ®áƒáƒšáƒ˜ გვინეის კინáƒ",
+ "symbol": "PGK"
+ },
+ "PYG": {
+ "name": "პáƒáƒ áƒáƒ’ვáƒáƒ£áƒšáƒ˜ გუáƒáƒ áƒáƒœáƒ˜",
+ "symbol": "PYG"
+ },
+ "PEN": {
+ "name": "პერუს áƒáƒ®áƒáƒšáƒ˜ სáƒáƒšáƒ˜",
+ "symbol": "PEN"
+ },
+ "PLN": {
+ "name": "პáƒáƒšáƒáƒœáƒ£áƒ áƒ˜ ზლáƒáƒ¢áƒ˜",
+ "symbol": "PLN"
+ },
+ "RWF": {
+ "name": "რუáƒáƒœáƒ“ული ფრáƒáƒœáƒ™áƒ˜",
+ "symbol": "RWF"
+ },
+ "RON": {
+ "name": "რუმინული ლეუ",
+ "symbol": "RON"
+ },
+ "RUB": {
+ "name": "რუსული რუბლი",
+ "symbol": "RUB"
+ },
+ "WST": {
+ "name": "სáƒáƒ›áƒáƒ£áƒ áƒ˜ ტáƒáƒšáƒ",
+ "symbol": "WST"
+ },
+ "ZAR": {
+ "name": "სáƒáƒ›áƒ®áƒ áƒ”თ áƒáƒ¤áƒ áƒ˜áƒ™áƒ£áƒšáƒ˜ რáƒáƒœáƒ“ი",
+ "symbol": "ZAR"
+ },
+ "KRW": {
+ "name": "სáƒáƒ›áƒ®áƒ áƒ”თ კáƒáƒ áƒ”ული ვáƒáƒœáƒ˜",
+ "symbol": "KRW"
+ },
+ "SSP": {
+ "name": "სáƒáƒ›áƒ®áƒ áƒ”თ სუდáƒáƒœáƒ£áƒ áƒ˜ ფუნტი",
+ "symbol": "SSP"
+ },
+ "STD": {
+ "name": "სáƒáƒœ-ტáƒáƒ›áƒ” დრპრინსიპის დáƒáƒ‘რáƒ",
+ "symbol": "STD"
+ },
+ "SAR": {
+ "name": "სáƒáƒ£áƒ“ის áƒáƒ áƒáƒ‘ეთის რიáƒáƒšáƒ˜",
+ "symbol": "SAR"
+ },
+ "SCR": {
+ "name": "სეიშელური რუპიáƒ",
+ "symbol": "SCR"
+ },
+ "RSD": {
+ "name": "სერბული დინáƒáƒ áƒ˜",
+ "symbol": "RSD"
+ },
+ "SZL": {
+ "name": "სვáƒáƒ–ილენდის ლილáƒáƒœáƒ’ენი",
+ "symbol": "SZL"
+ },
+ "SLL": {
+ "name": "სიერáƒ-ლეáƒáƒœáƒ”ს ლეáƒáƒœáƒ”",
+ "symbol": "SLL"
+ },
+ "SGD": {
+ "name": "სინგáƒáƒžáƒ£áƒ áƒ˜áƒ¡ დáƒáƒšáƒáƒ áƒ˜",
+ "symbol": "SGD"
+ },
+ "SYP": {
+ "name": "სირიული ფუნტი",
+ "symbol": "SYP"
+ },
+ "SBD": {
+ "name": "სáƒáƒšáƒáƒ›áƒáƒœáƒ˜áƒ¡ კუნძულების დáƒáƒšáƒáƒ áƒ˜",
+ "symbol": "SBD"
+ },
+ "SOS": {
+ "name": "სáƒáƒ›áƒáƒšáƒ£áƒ áƒ˜ შილინგი",
+ "symbol": "SOS"
+ },
+ "AMD": {
+ "name": "სáƒáƒ›áƒ®áƒ£áƒ áƒ˜ დრáƒáƒ›áƒ˜",
+ "symbol": "AMD"
+ },
+ "SDG": {
+ "name": "სუდáƒáƒœáƒ£áƒ áƒ˜ ფუნტი",
+ "symbol": "SDG"
+ },
+ "SRD": {
+ "name": "სურინáƒáƒ›áƒ£áƒšáƒ˜ დáƒáƒšáƒáƒ áƒ˜",
+ "symbol": "SRD"
+ },
+ "TWD": {
+ "name": "ტáƒáƒ˜áƒ•áƒáƒœáƒ£áƒ áƒ˜ áƒáƒ®áƒáƒšáƒ˜ დáƒáƒšáƒáƒ áƒ˜",
+ "symbol": "NT$"
+ },
+ "THB": {
+ "name": "ტáƒáƒ˜áƒšáƒáƒœáƒ“ური ბáƒáƒ¢áƒ˜",
+ "symbol": "THB"
+ },
+ "TZS": {
+ "name": "ტáƒáƒœáƒ–áƒáƒœáƒ˜áƒ£áƒ áƒ˜ შილინგი",
+ "symbol": "TZS"
+ },
+ "TJS": {
+ "name": "ტáƒáƒ¯áƒ˜áƒ™áƒ£áƒ áƒ˜ სáƒáƒ›áƒáƒœáƒ˜",
+ "symbol": "TJS"
+ },
+ "TOP": {
+ "name": "ტáƒáƒœáƒ’áƒáƒœáƒ£áƒ áƒ˜ პáƒáƒáƒœáƒ’áƒ",
+ "symbol": "TOP"
+ },
+ "TTD": {
+ "name": "ტრინიდáƒáƒ“ დრტáƒáƒ‘áƒáƒ’áƒáƒ¡ დáƒáƒšáƒáƒ áƒ˜",
+ "symbol": "TTD"
+ },
+ "TND": {
+ "name": "ტუნისური დინáƒáƒ áƒ˜",
+ "symbol": "TND"
+ },
+ "UGX": {
+ "name": "უგáƒáƒœáƒ“ური შილინგი",
+ "symbol": "UGX"
+ },
+ "UZS": {
+ "name": "უზბეკური სუმი",
+ "symbol": "UZS"
+ },
+ "UAH": {
+ "name": "უკრáƒáƒ˜áƒœáƒ£áƒšáƒ˜ გრივნáƒ",
+ "symbol": "UAH"
+ },
+ "HUF": {
+ "name": "უნგრული ფáƒáƒ áƒ˜áƒœáƒ¢áƒ˜",
+ "symbol": "HUF"
+ },
+ "UYU": {
+ "name": "ურუგვáƒáƒ˜áƒ¡ პესáƒ",
+ "symbol": "UYU"
+ },
+ "PHP": {
+ "name": "ფილიპინური პესáƒ",
+ "symbol": "PHP"
+ },
+ "FJD": {
+ "name": "ფიჯის დáƒáƒšáƒáƒ áƒ˜",
+ "symbol": "FJD"
+ },
+ "FKP": {
+ "name": "ფáƒáƒšáƒ™áƒšáƒ”ნდის კუნძულების ფუნტი",
+ "symbol": "FKP"
+ },
+ "GEL": {
+ "name": "ქáƒáƒ áƒ—ული ლáƒáƒ áƒ˜",
+ "symbol": "GEL"
+ },
+ "KWD": {
+ "name": "ქუვეითური დინáƒáƒ áƒ˜",
+ "symbol": "KWD"
+ },
+ "KZT": {
+ "name": "ყáƒáƒ–áƒáƒ®áƒ£áƒ áƒ˜ ტენგე",
+ "symbol": "KZT"
+ },
+ "KGS": {
+ "name": "ყირგიზული სáƒáƒ›áƒ˜",
+ "symbol": "KGS"
+ },
+ "SEK": {
+ "name": "შვედური კრáƒáƒœáƒ",
+ "symbol": "SEK"
+ },
+ "CHF": {
+ "name": "შვეიცáƒáƒ áƒ˜áƒ£áƒšáƒ˜ ფრáƒáƒœáƒ™áƒ˜",
+ "symbol": "CHF"
+ },
+ "LKR": {
+ "name": "შრი-ლáƒáƒœáƒ™áƒ£áƒ áƒ˜ რუპიáƒ",
+ "symbol": "LKR"
+ },
+ "CZK": {
+ "name": "ჩეხური კრáƒáƒœáƒ",
+ "symbol": "CZK"
+ },
+ "CLP": {
+ "name": "ჩილეს პესáƒ",
+ "symbol": "CLP"
+ },
+ "CNY": {
+ "name": "ჩინური იუáƒáƒœáƒ˜",
+ "symbol": "CNY"
+ },
+ "KPW": {
+ "name": "ჩრდილáƒáƒ”თ კáƒáƒ áƒ”ული ვáƒáƒœáƒ˜",
+ "symbol": "KPW"
+ },
+ "SHP": {
+ "name": "წმ. ელენეს კუნძულის ფუნტი",
+ "symbol": "SHP"
+ },
+ "HRK": {
+ "name": "ხáƒáƒ áƒ•áƒáƒ¢áƒ£áƒšáƒ˜ კუნáƒ",
+ "symbol": "HRK"
+ },
+ "DJF": {
+ "name": "ჯიბუტის ფრáƒáƒœáƒ™áƒ˜",
+ "symbol": "DJF"
+ },
+ "HTG": {
+ "name": "ჰáƒáƒ˜áƒ¢áƒ£áƒ áƒ˜ გურდი",
+ "symbol": "HTG"
+ },
+ "HNL": {
+ "name": "ჰáƒáƒœáƒ“ურáƒáƒ¡áƒ£áƒšáƒ˜ ლემპირáƒ",
+ "symbol": "HNL"
+ },
+ "HKD": {
+ "name": "ჰáƒáƒœáƒ™áƒáƒœáƒ’ის დáƒáƒšáƒáƒ áƒ˜",
+ "symbol": "HKD"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/currency/kab.json b/library/intl/resources/currency/kab.json
new file mode 100644
index 000000000..5481b7680
--- /dev/null
+++ b/library/intl/resources/currency/kab.json
@@ -0,0 +1,634 @@
+{
+ "ETB": {
+ "name": "Abir Utyupi",
+ "symbol": "ETB"
+ },
+ "KES": {
+ "name": "Aciling Akini",
+ "symbol": "KES"
+ },
+ "SOS": {
+ "name": "Aciling Aá¹£umali",
+ "symbol": "SOS"
+ },
+ "TZS": {
+ "name": "Aciling Aṭanẓani",
+ "symbol": "TZS"
+ },
+ "UGX": {
+ "name": "Aciling Awgandi",
+ "symbol": "UGX"
+ },
+ "GMD": {
+ "name": "Adalasi Agambi",
+ "symbol": "GMD"
+ },
+ "BHD": {
+ "name": "Adinar Abaḥrini",
+ "symbol": "BHD"
+ },
+ "LYD": {
+ "name": "Adinar Alibi",
+ "symbol": "LYD"
+ },
+ "TND": {
+ "name": "Adinar Atunsi",
+ "symbol": "TND"
+ },
+ "DZD": {
+ "name": "Adinar Azzayri",
+ "symbol": "DA"
+ },
+ "MAD": {
+ "name": "Adirham Amerruki",
+ "symbol": "MAD"
+ },
+ "AED": {
+ "name": "Adirham n Tgeldunin Taɛrabin Yedduklen",
+ "symbol": "AED"
+ },
+ "CAD": {
+ "name": "Adular Akanadi",
+ "symbol": "CA$"
+ },
+ "LRD": {
+ "name": "Adular Alibiri",
+ "symbol": "LRD"
+ },
+ "NAD": {
+ "name": "Adular Anamibi",
+ "symbol": "NAD"
+ },
+ "AUD": {
+ "name": "Adular n Lusá¹­rali",
+ "symbol": "A$"
+ },
+ "USD": {
+ "name": "Adular WD",
+ "symbol": "US$"
+ },
+ "AFN": {
+ "name": "AFN",
+ "symbol": "AFN"
+ },
+ "BIF": {
+ "name": "Afrank Aburandi",
+ "symbol": "BIF"
+ },
+ "DJF": {
+ "name": "Afrank Ajibuti",
+ "symbol": "DJF"
+ },
+ "KMF": {
+ "name": "Afrank Akamiruni",
+ "symbol": "KMF"
+ },
+ "CDF": {
+ "name": "Afrank Akunguli",
+ "symbol": "CDF"
+ },
+ "RWF": {
+ "name": "Afrank Aruwandi",
+ "symbol": "RWF"
+ },
+ "CHF": {
+ "name": "Afrank Aswis",
+ "symbol": "CHF"
+ },
+ "XAF": {
+ "name": "Afrank BCEA CFA",
+ "symbol": "FCFA"
+ },
+ "XOF": {
+ "name": "Afrank BCEAO CFA",
+ "symbol": "CFA"
+ },
+ "MRO": {
+ "name": "Agiya Amuriá¹­ani",
+ "symbol": "MRO"
+ },
+ "CVE": {
+ "name": "Akabuviradinu Askudi",
+ "symbol": "CVE"
+ },
+ "MWK": {
+ "name": "Akwaca Amalawi",
+ "symbol": "MWK"
+ },
+ "ZMW": {
+ "name": "Akwaca Azambi",
+ "symbol": "ZMW"
+ },
+ "AOA": {
+ "name": "Akwanza n Ungula",
+ "symbol": "AOA"
+ },
+ "SZL": {
+ "name": "Alilangini",
+ "symbol": "SZL"
+ },
+ "ALL": {
+ "name": "ALL",
+ "symbol": "ALL"
+ },
+ "LSL": {
+ "name": "Aluá¹­i Alizuá¹­i",
+ "symbol": "LSL"
+ },
+ "SLL": {
+ "name": "Alyun",
+ "symbol": "SLL"
+ },
+ "AMD": {
+ "name": "AMD",
+ "symbol": "AMD"
+ },
+ "ERN": {
+ "name": "Anakfa Iritiri",
+ "symbol": "ERN"
+ },
+ "NGN": {
+ "name": "Anayra Anijiri",
+ "symbol": "NGN"
+ },
+ "ANG": {
+ "name": "ANG",
+ "symbol": "ANG"
+ },
+ "BWP": {
+ "name": "Apula Abusá¹­wanan",
+ "symbol": "BWP"
+ },
+ "EGP": {
+ "name": "Apund Amaá¹£ri",
+ "symbol": "EGP"
+ },
+ "SHP": {
+ "name": "Apund Asant Ilini",
+ "symbol": "SHP"
+ },
+ "SDG": {
+ "name": "Apund Asudani",
+ "symbol": "SDG"
+ },
+ "GBP": {
+ "name": "Apund Sterling Aglizi",
+ "symbol": "£"
+ },
+ "ZAR": {
+ "name": "Arand Afriqi n Wadda",
+ "symbol": "ZAR"
+ },
+ "ARS": {
+ "name": "ARS",
+ "symbol": "ARS"
+ },
+ "INR": {
+ "name": "Arupi Ahendi",
+ "symbol": "₹"
+ },
+ "MUR": {
+ "name": "Arupi Amurisi",
+ "symbol": "MUR"
+ },
+ "SCR": {
+ "name": "Arupi Aseycili",
+ "symbol": "SCR"
+ },
+ "SAR": {
+ "name": "Aryal Asuɛudi",
+ "symbol": "SAR"
+ },
+ "MGA": {
+ "name": "Aryari Amalgac",
+ "symbol": "MGA"
+ },
+ "STD": {
+ "name": "Asw Ṭum d Udubra Amenzay",
+ "symbol": "STD"
+ },
+ "AWG": {
+ "name": "AWG",
+ "symbol": "AWG"
+ },
+ "JPY": {
+ "name": "Ayen Ajappuni",
+ "symbol": "JPÂ¥"
+ },
+ "CNY": {
+ "name": "Ayuwan Renminbi Acinwa",
+ "symbol": "CNÂ¥"
+ },
+ "AZN": {
+ "name": "AZN",
+ "symbol": "AZN"
+ },
+ "BAM": {
+ "name": "BAM",
+ "symbol": "BAM"
+ },
+ "BBD": {
+ "name": "BBD",
+ "symbol": "BBD"
+ },
+ "BDT": {
+ "name": "BDT",
+ "symbol": "BDT"
+ },
+ "BGN": {
+ "name": "BGN",
+ "symbol": "BGN"
+ },
+ "BMD": {
+ "name": "BMD",
+ "symbol": "BMD"
+ },
+ "BND": {
+ "name": "BND",
+ "symbol": "BND"
+ },
+ "BOB": {
+ "name": "BOB",
+ "symbol": "BOB"
+ },
+ "BRL": {
+ "name": "BRL",
+ "symbol": "R$"
+ },
+ "BSD": {
+ "name": "BSD",
+ "symbol": "BSD"
+ },
+ "BTN": {
+ "name": "BTN",
+ "symbol": "BTN"
+ },
+ "BYR": {
+ "name": "BYR",
+ "symbol": "BYR"
+ },
+ "BZD": {
+ "name": "BZD",
+ "symbol": "BZD"
+ },
+ "CLP": {
+ "name": "CLP",
+ "symbol": "CLP"
+ },
+ "COP": {
+ "name": "COP",
+ "symbol": "COP"
+ },
+ "CRC": {
+ "name": "CRC",
+ "symbol": "CRC"
+ },
+ "CUC": {
+ "name": "CUC",
+ "symbol": "CUC"
+ },
+ "CUP": {
+ "name": "CUP",
+ "symbol": "CUP"
+ },
+ "CZK": {
+ "name": "CZK",
+ "symbol": "CZK"
+ },
+ "DKK": {
+ "name": "DKK",
+ "symbol": "DKK"
+ },
+ "DOP": {
+ "name": "DOP",
+ "symbol": "DOP"
+ },
+ "FJD": {
+ "name": "FJD",
+ "symbol": "FJD"
+ },
+ "FKP": {
+ "name": "FKP",
+ "symbol": "FKP"
+ },
+ "GEL": {
+ "name": "GEL",
+ "symbol": "GEL"
+ },
+ "GHS": {
+ "name": "GHS",
+ "symbol": "GHS"
+ },
+ "GIP": {
+ "name": "GIP",
+ "symbol": "GIP"
+ },
+ "GNF": {
+ "name": "GNF",
+ "symbol": "GNF"
+ },
+ "GTQ": {
+ "name": "GTQ",
+ "symbol": "GTQ"
+ },
+ "GYD": {
+ "name": "GYD",
+ "symbol": "GYD"
+ },
+ "HKD": {
+ "name": "HKD",
+ "symbol": "HK$"
+ },
+ "HNL": {
+ "name": "HNL",
+ "symbol": "HNL"
+ },
+ "HRK": {
+ "name": "HRK",
+ "symbol": "HRK"
+ },
+ "HTG": {
+ "name": "HTG",
+ "symbol": "HTG"
+ },
+ "HUF": {
+ "name": "HUF",
+ "symbol": "HUF"
+ },
+ "IDR": {
+ "name": "IDR",
+ "symbol": "IDR"
+ },
+ "ILS": {
+ "name": "ILS",
+ "symbol": "₪"
+ },
+ "IQD": {
+ "name": "IQD",
+ "symbol": "IQD"
+ },
+ "IRR": {
+ "name": "IRR",
+ "symbol": "IRR"
+ },
+ "ISK": {
+ "name": "ISK",
+ "symbol": "ISK"
+ },
+ "JMD": {
+ "name": "JMD",
+ "symbol": "JMD"
+ },
+ "JOD": {
+ "name": "JOD",
+ "symbol": "JOD"
+ },
+ "KGS": {
+ "name": "KGS",
+ "symbol": "KGS"
+ },
+ "KHR": {
+ "name": "KHR",
+ "symbol": "KHR"
+ },
+ "KPW": {
+ "name": "KPW",
+ "symbol": "KPW"
+ },
+ "KRW": {
+ "name": "KRW",
+ "symbol": "â‚©"
+ },
+ "KWD": {
+ "name": "KWD",
+ "symbol": "KWD"
+ },
+ "KYD": {
+ "name": "KYD",
+ "symbol": "KYD"
+ },
+ "KZT": {
+ "name": "KZT",
+ "symbol": "KZT"
+ },
+ "LAK": {
+ "name": "LAK",
+ "symbol": "LAK"
+ },
+ "LBP": {
+ "name": "LBP",
+ "symbol": "LBP"
+ },
+ "LKR": {
+ "name": "LKR",
+ "symbol": "LKR"
+ },
+ "LTL": {
+ "name": "LTL",
+ "symbol": "LTL"
+ },
+ "MDL": {
+ "name": "MDL",
+ "symbol": "MDL"
+ },
+ "MKD": {
+ "name": "MKD",
+ "symbol": "MKD"
+ },
+ "MMK": {
+ "name": "MMK",
+ "symbol": "MMK"
+ },
+ "MNT": {
+ "name": "MNT",
+ "symbol": "MNT"
+ },
+ "MOP": {
+ "name": "MOP",
+ "symbol": "MOP"
+ },
+ "MVR": {
+ "name": "MVR",
+ "symbol": "MVR"
+ },
+ "MXN": {
+ "name": "MXN",
+ "symbol": "MX$"
+ },
+ "MYR": {
+ "name": "MYR",
+ "symbol": "MYR"
+ },
+ "MZN": {
+ "name": "MZN",
+ "symbol": "MZN"
+ },
+ "NIO": {
+ "name": "NIO",
+ "symbol": "NIO"
+ },
+ "NOK": {
+ "name": "NOK",
+ "symbol": "NOK"
+ },
+ "NPR": {
+ "name": "NPR",
+ "symbol": "NPR"
+ },
+ "NZD": {
+ "name": "NZD",
+ "symbol": "NZ$"
+ },
+ "OMR": {
+ "name": "OMR",
+ "symbol": "OMR"
+ },
+ "PAB": {
+ "name": "PAB",
+ "symbol": "PAB"
+ },
+ "PEN": {
+ "name": "PEN",
+ "symbol": "PEN"
+ },
+ "PGK": {
+ "name": "PGK",
+ "symbol": "PGK"
+ },
+ "PHP": {
+ "name": "PHP",
+ "symbol": "PHP"
+ },
+ "PKR": {
+ "name": "PKR",
+ "symbol": "PKR"
+ },
+ "PLN": {
+ "name": "PLN",
+ "symbol": "PLN"
+ },
+ "PYG": {
+ "name": "PYG",
+ "symbol": "PYG"
+ },
+ "QAR": {
+ "name": "QAR",
+ "symbol": "QAR"
+ },
+ "RON": {
+ "name": "RON",
+ "symbol": "RON"
+ },
+ "RSD": {
+ "name": "RSD",
+ "symbol": "RSD"
+ },
+ "RUB": {
+ "name": "RUB",
+ "symbol": "RUB"
+ },
+ "SBD": {
+ "name": "SBD",
+ "symbol": "SBD"
+ },
+ "SEK": {
+ "name": "SEK",
+ "symbol": "SEK"
+ },
+ "SGD": {
+ "name": "SGD",
+ "symbol": "SGD"
+ },
+ "SRD": {
+ "name": "SRD",
+ "symbol": "SRD"
+ },
+ "SSP": {
+ "name": "SSP",
+ "symbol": "SSP"
+ },
+ "SVC": {
+ "name": "SVC",
+ "symbol": "SVC"
+ },
+ "SYP": {
+ "name": "SYP",
+ "symbol": "SYP"
+ },
+ "THB": {
+ "name": "THB",
+ "symbol": "THB"
+ },
+ "TJS": {
+ "name": "TJS",
+ "symbol": "TJS"
+ },
+ "TMT": {
+ "name": "TMT",
+ "symbol": "TMT"
+ },
+ "TOP": {
+ "name": "TOP",
+ "symbol": "TOP"
+ },
+ "TRY": {
+ "name": "TRY",
+ "symbol": "TRY"
+ },
+ "TTD": {
+ "name": "TTD",
+ "symbol": "TTD"
+ },
+ "TWD": {
+ "name": "TWD",
+ "symbol": "NT$"
+ },
+ "UAH": {
+ "name": "UAH",
+ "symbol": "UAH"
+ },
+ "EUR": {
+ "name": "Uru",
+ "symbol": "€"
+ },
+ "UYU": {
+ "name": "UYU",
+ "symbol": "UYU"
+ },
+ "UZS": {
+ "name": "UZS",
+ "symbol": "UZS"
+ },
+ "VEF": {
+ "name": "VEF",
+ "symbol": "VEF"
+ },
+ "VND": {
+ "name": "VND",
+ "symbol": "â‚«"
+ },
+ "VUV": {
+ "name": "VUV",
+ "symbol": "VUV"
+ },
+ "WST": {
+ "name": "WST",
+ "symbol": "WST"
+ },
+ "XCD": {
+ "name": "XCD",
+ "symbol": "EC$"
+ },
+ "XPF": {
+ "name": "XPF",
+ "symbol": "CFPF"
+ },
+ "YER": {
+ "name": "YER",
+ "symbol": "YER"
+ },
+ "ZWL": {
+ "name": "ZWL",
+ "symbol": "ZWL"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/currency/kam.json b/library/intl/resources/currency/kam.json
new file mode 100644
index 000000000..b62741d41
--- /dev/null
+++ b/library/intl/resources/currency/kam.json
@@ -0,0 +1,634 @@
+{
+ "AFN": {
+ "name": "AFN",
+ "symbol": "AFN"
+ },
+ "ALL": {
+ "name": "ALL",
+ "symbol": "ALL"
+ },
+ "AMD": {
+ "name": "AMD",
+ "symbol": "AMD"
+ },
+ "ANG": {
+ "name": "ANG",
+ "symbol": "ANG"
+ },
+ "MGA": {
+ "name": "Ariary ya Bukini",
+ "symbol": "MGA"
+ },
+ "ARS": {
+ "name": "ARS",
+ "symbol": "ARS"
+ },
+ "AWG": {
+ "name": "AWG",
+ "symbol": "AWG"
+ },
+ "AZN": {
+ "name": "AZN",
+ "symbol": "AZN"
+ },
+ "BAM": {
+ "name": "BAM",
+ "symbol": "BAM"
+ },
+ "BBD": {
+ "name": "BBD",
+ "symbol": "BBD"
+ },
+ "BDT": {
+ "name": "BDT",
+ "symbol": "BDT"
+ },
+ "BGN": {
+ "name": "BGN",
+ "symbol": "BGN"
+ },
+ "ETB": {
+ "name": "Bir ya Uhabeshi",
+ "symbol": "ETB"
+ },
+ "BMD": {
+ "name": "BMD",
+ "symbol": "BMD"
+ },
+ "BND": {
+ "name": "BND",
+ "symbol": "BND"
+ },
+ "BOB": {
+ "name": "BOB",
+ "symbol": "BOB"
+ },
+ "BRL": {
+ "name": "BRL",
+ "symbol": "R$"
+ },
+ "BSD": {
+ "name": "BSD",
+ "symbol": "BSD"
+ },
+ "BTN": {
+ "name": "BTN",
+ "symbol": "BTN"
+ },
+ "BYR": {
+ "name": "BYR",
+ "symbol": "BYR"
+ },
+ "BZD": {
+ "name": "BZD",
+ "symbol": "BZD"
+ },
+ "CLP": {
+ "name": "CLP",
+ "symbol": "CLP"
+ },
+ "COP": {
+ "name": "COP",
+ "symbol": "COP"
+ },
+ "CRC": {
+ "name": "CRC",
+ "symbol": "CRC"
+ },
+ "CUC": {
+ "name": "CUC",
+ "symbol": "CUC"
+ },
+ "CUP": {
+ "name": "CUP",
+ "symbol": "CUP"
+ },
+ "CZK": {
+ "name": "CZK",
+ "symbol": "CZK"
+ },
+ "DZD": {
+ "name": "Dinari ya Aljeria",
+ "symbol": "DZD"
+ },
+ "BHD": {
+ "name": "Dinari ya Bahareni",
+ "symbol": "BHD"
+ },
+ "LYD": {
+ "name": "Dinari ya Libya",
+ "symbol": "LYD"
+ },
+ "AED": {
+ "name": "Dirham ya Falme za Kiarabu",
+ "symbol": "AED"
+ },
+ "MAD": {
+ "name": "Dirham ya Moroko",
+ "symbol": "MAD"
+ },
+ "DKK": {
+ "name": "DKK",
+ "symbol": "DKK"
+ },
+ "STD": {
+ "name": "Dobra ya Sao Tome na Principe",
+ "symbol": "STD"
+ },
+ "LRD": {
+ "name": "Dola ya Liberia",
+ "symbol": "LRD"
+ },
+ "DOP": {
+ "name": "DOP",
+ "symbol": "DOP"
+ },
+ "CVE": {
+ "name": "Eskudo ya Kepuvede",
+ "symbol": "CVE"
+ },
+ "XOF": {
+ "name": "Faranga CFA BCEAO",
+ "symbol": "CFA"
+ },
+ "XAF": {
+ "name": "Faranga CFA BEAC",
+ "symbol": "FCFA"
+ },
+ "BIF": {
+ "name": "Faranga ya Burundi",
+ "symbol": "BIF"
+ },
+ "DJF": {
+ "name": "Faranga ya Jibuti",
+ "symbol": "DJF"
+ },
+ "KMF": {
+ "name": "Faranga ya Komoro",
+ "symbol": "KMF"
+ },
+ "CDF": {
+ "name": "Faranga ya Kongo",
+ "symbol": "CDF"
+ },
+ "RWF": {
+ "name": "Faranga ya Rwanda",
+ "symbol": "RWF"
+ },
+ "CHF": {
+ "name": "Faranga ya Uswisi",
+ "symbol": "CHF"
+ },
+ "FJD": {
+ "name": "FJD",
+ "symbol": "FJD"
+ },
+ "FKP": {
+ "name": "FKP",
+ "symbol": "FKP"
+ },
+ "GEL": {
+ "name": "GEL",
+ "symbol": "GEL"
+ },
+ "GHS": {
+ "name": "GHS",
+ "symbol": "GHS"
+ },
+ "GIP": {
+ "name": "GIP",
+ "symbol": "GIP"
+ },
+ "GNF": {
+ "name": "GNF",
+ "symbol": "GNF"
+ },
+ "GTQ": {
+ "name": "GTQ",
+ "symbol": "GTQ"
+ },
+ "GYD": {
+ "name": "GYD",
+ "symbol": "GYD"
+ },
+ "HKD": {
+ "name": "HKD",
+ "symbol": "HK$"
+ },
+ "HNL": {
+ "name": "HNL",
+ "symbol": "HNL"
+ },
+ "HRK": {
+ "name": "HRK",
+ "symbol": "HRK"
+ },
+ "HTG": {
+ "name": "HTG",
+ "symbol": "HTG"
+ },
+ "HUF": {
+ "name": "HUF",
+ "symbol": "HUF"
+ },
+ "IDR": {
+ "name": "IDR",
+ "symbol": "IDR"
+ },
+ "ILS": {
+ "name": "ILS",
+ "symbol": "₪"
+ },
+ "IQD": {
+ "name": "IQD",
+ "symbol": "IQD"
+ },
+ "IRR": {
+ "name": "IRR",
+ "symbol": "IRR"
+ },
+ "ISK": {
+ "name": "ISK",
+ "symbol": "ISK"
+ },
+ "JMD": {
+ "name": "JMD",
+ "symbol": "JMD"
+ },
+ "JOD": {
+ "name": "JOD",
+ "symbol": "JOD"
+ },
+ "KGS": {
+ "name": "KGS",
+ "symbol": "KGS"
+ },
+ "KHR": {
+ "name": "KHR",
+ "symbol": "KHR"
+ },
+ "KPW": {
+ "name": "KPW",
+ "symbol": "KPW"
+ },
+ "KRW": {
+ "name": "KRW",
+ "symbol": "â‚©"
+ },
+ "MWK": {
+ "name": "Kwacha ya Malawi",
+ "symbol": "MWK"
+ },
+ "ZMW": {
+ "name": "Kwacha ya Zambia",
+ "symbol": "ZMW"
+ },
+ "AOA": {
+ "name": "Kwanza ya Angola",
+ "symbol": "AOA"
+ },
+ "KWD": {
+ "name": "KWD",
+ "symbol": "KWD"
+ },
+ "KYD": {
+ "name": "KYD",
+ "symbol": "KYD"
+ },
+ "KZT": {
+ "name": "KZT",
+ "symbol": "KZT"
+ },
+ "LAK": {
+ "name": "LAK",
+ "symbol": "LAK"
+ },
+ "LBP": {
+ "name": "LBP",
+ "symbol": "LBP"
+ },
+ "SLL": {
+ "name": "Leoni",
+ "symbol": "SLL"
+ },
+ "SZL": {
+ "name": "Lilangeni",
+ "symbol": "SZL"
+ },
+ "LKR": {
+ "name": "LKR",
+ "symbol": "LKR"
+ },
+ "LSL": {
+ "name": "Loti ya Lesoto",
+ "symbol": "LSL"
+ },
+ "LTL": {
+ "name": "LTL",
+ "symbol": "LTL"
+ },
+ "MDL": {
+ "name": "MDL",
+ "symbol": "MDL"
+ },
+ "MKD": {
+ "name": "MKD",
+ "symbol": "MKD"
+ },
+ "MMK": {
+ "name": "MMK",
+ "symbol": "MMK"
+ },
+ "MNT": {
+ "name": "MNT",
+ "symbol": "MNT"
+ },
+ "MOP": {
+ "name": "MOP",
+ "symbol": "MOP"
+ },
+ "MVR": {
+ "name": "MVR",
+ "symbol": "MVR"
+ },
+ "MXN": {
+ "name": "MXN",
+ "symbol": "MX$"
+ },
+ "MYR": {
+ "name": "MYR",
+ "symbol": "MYR"
+ },
+ "MZN": {
+ "name": "MZN",
+ "symbol": "MZN"
+ },
+ "NGN": {
+ "name": "Naira ya Nijeria",
+ "symbol": "NGN"
+ },
+ "ERN": {
+ "name": "Nakfa ya Eritrea",
+ "symbol": "ERN"
+ },
+ "GMD": {
+ "name": "Ndalasi ya Gambia",
+ "symbol": "GMD"
+ },
+ "TND": {
+ "name": "Ndinari ya Tunisia",
+ "symbol": "TND"
+ },
+ "AUD": {
+ "name": "Ndola ya Australia",
+ "symbol": "A$"
+ },
+ "CAD": {
+ "name": "Ndola ya Kanada",
+ "symbol": "CA$"
+ },
+ "USD": {
+ "name": "Ndola ya Marekani",
+ "symbol": "US$"
+ },
+ "NAD": {
+ "name": "Ndola ya Namibia",
+ "symbol": "NAD"
+ },
+ "NIO": {
+ "name": "NIO",
+ "symbol": "NIO"
+ },
+ "NOK": {
+ "name": "NOK",
+ "symbol": "NOK"
+ },
+ "NPR": {
+ "name": "NPR",
+ "symbol": "NPR"
+ },
+ "NZD": {
+ "name": "NZD",
+ "symbol": "NZ$"
+ },
+ "OMR": {
+ "name": "OMR",
+ "symbol": "OMR"
+ },
+ "PAB": {
+ "name": "PAB",
+ "symbol": "PAB"
+ },
+ "GBP": {
+ "name": "Pauni ya Uingereza",
+ "symbol": "£"
+ },
+ "PEN": {
+ "name": "PEN",
+ "symbol": "PEN"
+ },
+ "PGK": {
+ "name": "PGK",
+ "symbol": "PGK"
+ },
+ "PHP": {
+ "name": "PHP",
+ "symbol": "PHP"
+ },
+ "PKR": {
+ "name": "PKR",
+ "symbol": "PKR"
+ },
+ "PLN": {
+ "name": "PLN",
+ "symbol": "PLN"
+ },
+ "BWP": {
+ "name": "Pula ya Botswana",
+ "symbol": "BWP"
+ },
+ "PYG": {
+ "name": "PYG",
+ "symbol": "PYG"
+ },
+ "QAR": {
+ "name": "QAR",
+ "symbol": "QAR"
+ },
+ "ZAR": {
+ "name": "Randi ya Afrika Kusini",
+ "symbol": "ZAR"
+ },
+ "SAR": {
+ "name": "Riyal ya Saudia",
+ "symbol": "SAR"
+ },
+ "RON": {
+ "name": "RON",
+ "symbol": "RON"
+ },
+ "RSD": {
+ "name": "RSD",
+ "symbol": "RSD"
+ },
+ "RUB": {
+ "name": "RUB",
+ "symbol": "RUB"
+ },
+ "INR": {
+ "name": "Rupia ya India",
+ "symbol": "₹"
+ },
+ "MUR": {
+ "name": "Rupia ya Morisi",
+ "symbol": "MUR"
+ },
+ "SCR": {
+ "name": "Rupia ya Shelisheli",
+ "symbol": "SCR"
+ },
+ "JPY": {
+ "name": "Sarafu ya Kijapani",
+ "symbol": "JPÂ¥"
+ },
+ "SBD": {
+ "name": "SBD",
+ "symbol": "SBD"
+ },
+ "SEK": {
+ "name": "SEK",
+ "symbol": "SEK"
+ },
+ "SGD": {
+ "name": "SGD",
+ "symbol": "SGD"
+ },
+ "KES": {
+ "name": "Silingi ya Kenya",
+ "symbol": "Ksh"
+ },
+ "SOS": {
+ "name": "Silingi ya Somalia",
+ "symbol": "SOS"
+ },
+ "TZS": {
+ "name": "Silingi ya Tanzania",
+ "symbol": "TZS"
+ },
+ "UGX": {
+ "name": "Silingi ya Uganda",
+ "symbol": "UGX"
+ },
+ "SRD": {
+ "name": "SRD",
+ "symbol": "SRD"
+ },
+ "SSP": {
+ "name": "SSP",
+ "symbol": "SSP"
+ },
+ "SVC": {
+ "name": "SVC",
+ "symbol": "SVC"
+ },
+ "SYP": {
+ "name": "SYP",
+ "symbol": "SYP"
+ },
+ "THB": {
+ "name": "THB",
+ "symbol": "THB"
+ },
+ "TJS": {
+ "name": "TJS",
+ "symbol": "TJS"
+ },
+ "TMT": {
+ "name": "TMT",
+ "symbol": "TMT"
+ },
+ "TOP": {
+ "name": "TOP",
+ "symbol": "TOP"
+ },
+ "TRY": {
+ "name": "TRY",
+ "symbol": "TRY"
+ },
+ "TTD": {
+ "name": "TTD",
+ "symbol": "TTD"
+ },
+ "TWD": {
+ "name": "TWD",
+ "symbol": "NT$"
+ },
+ "UAH": {
+ "name": "UAH",
+ "symbol": "UAH"
+ },
+ "MRO": {
+ "name": "Ugwiya ya Moritania",
+ "symbol": "MRO"
+ },
+ "UYU": {
+ "name": "UYU",
+ "symbol": "UYU"
+ },
+ "UZS": {
+ "name": "UZS",
+ "symbol": "UZS"
+ },
+ "EGP": {
+ "name": "Vaundi ya Misili",
+ "symbol": "EGP"
+ },
+ "SHP": {
+ "name": "Vaũndi ya Santahelena",
+ "symbol": "SHP"
+ },
+ "SDG": {
+ "name": "Vaũndi ya Sudani",
+ "symbol": "SDG"
+ },
+ "VEF": {
+ "name": "VEF",
+ "symbol": "VEF"
+ },
+ "VND": {
+ "name": "VND",
+ "symbol": "â‚«"
+ },
+ "VUV": {
+ "name": "VUV",
+ "symbol": "VUV"
+ },
+ "WST": {
+ "name": "WST",
+ "symbol": "WST"
+ },
+ "XCD": {
+ "name": "XCD",
+ "symbol": "EC$"
+ },
+ "XPF": {
+ "name": "XPF",
+ "symbol": "CFPF"
+ },
+ "YER": {
+ "name": "YER",
+ "symbol": "YER"
+ },
+ "CNY": {
+ "name": "Yuan Renminbi ya China",
+ "symbol": "CNÂ¥"
+ },
+ "EUR": {
+ "name": "Yuro",
+ "symbol": "€"
+ },
+ "ZWL": {
+ "name": "ZWL",
+ "symbol": "ZWL"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/currency/kde.json b/library/intl/resources/currency/kde.json
new file mode 100644
index 000000000..108576f07
--- /dev/null
+++ b/library/intl/resources/currency/kde.json
@@ -0,0 +1,634 @@
+{
+ "AFN": {
+ "name": "AFN",
+ "symbol": "AFN"
+ },
+ "ALL": {
+ "name": "ALL",
+ "symbol": "ALL"
+ },
+ "AMD": {
+ "name": "AMD",
+ "symbol": "AMD"
+ },
+ "ANG": {
+ "name": "ANG",
+ "symbol": "ANG"
+ },
+ "ARS": {
+ "name": "ARS",
+ "symbol": "ARS"
+ },
+ "AWG": {
+ "name": "AWG",
+ "symbol": "AWG"
+ },
+ "AZN": {
+ "name": "AZN",
+ "symbol": "AZN"
+ },
+ "BAM": {
+ "name": "BAM",
+ "symbol": "BAM"
+ },
+ "BBD": {
+ "name": "BBD",
+ "symbol": "BBD"
+ },
+ "BDT": {
+ "name": "BDT",
+ "symbol": "BDT"
+ },
+ "BGN": {
+ "name": "BGN",
+ "symbol": "BGN"
+ },
+ "ETB": {
+ "name": "Bir ya Uhabeshi",
+ "symbol": "ETB"
+ },
+ "BMD": {
+ "name": "BMD",
+ "symbol": "BMD"
+ },
+ "BND": {
+ "name": "BND",
+ "symbol": "BND"
+ },
+ "BOB": {
+ "name": "BOB",
+ "symbol": "BOB"
+ },
+ "BRL": {
+ "name": "BRL",
+ "symbol": "R$"
+ },
+ "BSD": {
+ "name": "BSD",
+ "symbol": "BSD"
+ },
+ "BTN": {
+ "name": "BTN",
+ "symbol": "BTN"
+ },
+ "BYR": {
+ "name": "BYR",
+ "symbol": "BYR"
+ },
+ "BZD": {
+ "name": "BZD",
+ "symbol": "BZD"
+ },
+ "CLP": {
+ "name": "CLP",
+ "symbol": "CLP"
+ },
+ "COP": {
+ "name": "COP",
+ "symbol": "COP"
+ },
+ "CRC": {
+ "name": "CRC",
+ "symbol": "CRC"
+ },
+ "CUC": {
+ "name": "CUC",
+ "symbol": "CUC"
+ },
+ "CUP": {
+ "name": "CUP",
+ "symbol": "CUP"
+ },
+ "CZK": {
+ "name": "CZK",
+ "symbol": "CZK"
+ },
+ "GMD": {
+ "name": "Dalasi ya Gambia",
+ "symbol": "GMD"
+ },
+ "DZD": {
+ "name": "Dinari ya Aljeria",
+ "symbol": "DZD"
+ },
+ "BHD": {
+ "name": "Dinari ya Bahareni",
+ "symbol": "BHD"
+ },
+ "LYD": {
+ "name": "Dinari ya Libya",
+ "symbol": "LYD"
+ },
+ "SDG": {
+ "name": "Dinari ya Sudani",
+ "symbol": "SDG"
+ },
+ "TND": {
+ "name": "Dinari ya Tunisia",
+ "symbol": "TND"
+ },
+ "AED": {
+ "name": "Dirham ya Falme za Chiarabu",
+ "symbol": "AED"
+ },
+ "MAD": {
+ "name": "Dirham ya Moroko",
+ "symbol": "MAD"
+ },
+ "DKK": {
+ "name": "DKK",
+ "symbol": "DKK"
+ },
+ "STD": {
+ "name": "Dobra ya Sao Tome na Principe",
+ "symbol": "STD"
+ },
+ "AUD": {
+ "name": "Dola ya Australia",
+ "symbol": "A$"
+ },
+ "CAD": {
+ "name": "Dola ya Kanada",
+ "symbol": "CA$"
+ },
+ "LRD": {
+ "name": "Dola ya Liberia",
+ "symbol": "LRD"
+ },
+ "USD": {
+ "name": "Dola ya Marekani",
+ "symbol": "US$"
+ },
+ "NAD": {
+ "name": "Dola ya Namibia",
+ "symbol": "NAD"
+ },
+ "DOP": {
+ "name": "DOP",
+ "symbol": "DOP"
+ },
+ "CVE": {
+ "name": "Eskudo ya Kepuvede",
+ "symbol": "CVE"
+ },
+ "XOF": {
+ "name": "Faranga CFA BCEAO",
+ "symbol": "CFA"
+ },
+ "XAF": {
+ "name": "Faranga CFA BEAC",
+ "symbol": "FCFA"
+ },
+ "MGA": {
+ "name": "Faranga ya Bukini",
+ "symbol": "MGA"
+ },
+ "BIF": {
+ "name": "Faranga ya Burundi",
+ "symbol": "BIF"
+ },
+ "DJF": {
+ "name": "Faranga ya Jibuti",
+ "symbol": "DJF"
+ },
+ "KMF": {
+ "name": "Faranga ya Komoro",
+ "symbol": "KMF"
+ },
+ "CDF": {
+ "name": "Faranga ya Kongo",
+ "symbol": "CDF"
+ },
+ "RWF": {
+ "name": "Faranga ya Rwanda",
+ "symbol": "RWF"
+ },
+ "CHF": {
+ "name": "Faranga ya Uswisi",
+ "symbol": "CHF"
+ },
+ "FJD": {
+ "name": "FJD",
+ "symbol": "FJD"
+ },
+ "FKP": {
+ "name": "FKP",
+ "symbol": "FKP"
+ },
+ "GEL": {
+ "name": "GEL",
+ "symbol": "GEL"
+ },
+ "GHS": {
+ "name": "GHS",
+ "symbol": "GHS"
+ },
+ "GIP": {
+ "name": "GIP",
+ "symbol": "GIP"
+ },
+ "GNF": {
+ "name": "GNF",
+ "symbol": "GNF"
+ },
+ "GTQ": {
+ "name": "GTQ",
+ "symbol": "GTQ"
+ },
+ "GYD": {
+ "name": "GYD",
+ "symbol": "GYD"
+ },
+ "HKD": {
+ "name": "HKD",
+ "symbol": "HK$"
+ },
+ "HNL": {
+ "name": "HNL",
+ "symbol": "HNL"
+ },
+ "HRK": {
+ "name": "HRK",
+ "symbol": "HRK"
+ },
+ "HTG": {
+ "name": "HTG",
+ "symbol": "HTG"
+ },
+ "HUF": {
+ "name": "HUF",
+ "symbol": "HUF"
+ },
+ "IDR": {
+ "name": "IDR",
+ "symbol": "IDR"
+ },
+ "ILS": {
+ "name": "ILS",
+ "symbol": "₪"
+ },
+ "IQD": {
+ "name": "IQD",
+ "symbol": "IQD"
+ },
+ "IRR": {
+ "name": "IRR",
+ "symbol": "IRR"
+ },
+ "ISK": {
+ "name": "ISK",
+ "symbol": "ISK"
+ },
+ "JMD": {
+ "name": "JMD",
+ "symbol": "JMD"
+ },
+ "JOD": {
+ "name": "JOD",
+ "symbol": "JOD"
+ },
+ "KGS": {
+ "name": "KGS",
+ "symbol": "KGS"
+ },
+ "KHR": {
+ "name": "KHR",
+ "symbol": "KHR"
+ },
+ "KPW": {
+ "name": "KPW",
+ "symbol": "KPW"
+ },
+ "KRW": {
+ "name": "KRW",
+ "symbol": "â‚©"
+ },
+ "MWK": {
+ "name": "Kwacha ya Malawi",
+ "symbol": "MWK"
+ },
+ "ZMW": {
+ "name": "Kwacha ya Zambia",
+ "symbol": "ZMW"
+ },
+ "AOA": {
+ "name": "Kwanza ya Angola",
+ "symbol": "AOA"
+ },
+ "KWD": {
+ "name": "KWD",
+ "symbol": "KWD"
+ },
+ "KYD": {
+ "name": "KYD",
+ "symbol": "KYD"
+ },
+ "KZT": {
+ "name": "KZT",
+ "symbol": "KZT"
+ },
+ "LAK": {
+ "name": "LAK",
+ "symbol": "LAK"
+ },
+ "LBP": {
+ "name": "LBP",
+ "symbol": "LBP"
+ },
+ "SLL": {
+ "name": "Leoni",
+ "symbol": "SLL"
+ },
+ "SZL": {
+ "name": "Lilangeni",
+ "symbol": "SZL"
+ },
+ "LKR": {
+ "name": "LKR",
+ "symbol": "LKR"
+ },
+ "LSL": {
+ "name": "Loti ya Lesoto",
+ "symbol": "LSL"
+ },
+ "LTL": {
+ "name": "LTL",
+ "symbol": "LTL"
+ },
+ "MDL": {
+ "name": "MDL",
+ "symbol": "MDL"
+ },
+ "MKD": {
+ "name": "MKD",
+ "symbol": "MKD"
+ },
+ "MMK": {
+ "name": "MMK",
+ "symbol": "MMK"
+ },
+ "MNT": {
+ "name": "MNT",
+ "symbol": "MNT"
+ },
+ "MOP": {
+ "name": "MOP",
+ "symbol": "MOP"
+ },
+ "MVR": {
+ "name": "MVR",
+ "symbol": "MVR"
+ },
+ "MXN": {
+ "name": "MXN",
+ "symbol": "MX$"
+ },
+ "MYR": {
+ "name": "MYR",
+ "symbol": "MYR"
+ },
+ "MZN": {
+ "name": "MZN",
+ "symbol": "MZN"
+ },
+ "NGN": {
+ "name": "Naira ya Nijeria",
+ "symbol": "NGN"
+ },
+ "ERN": {
+ "name": "Nakfa ya Eritrea",
+ "symbol": "ERN"
+ },
+ "NIO": {
+ "name": "NIO",
+ "symbol": "NIO"
+ },
+ "NOK": {
+ "name": "NOK",
+ "symbol": "NOK"
+ },
+ "NPR": {
+ "name": "NPR",
+ "symbol": "NPR"
+ },
+ "NZD": {
+ "name": "NZD",
+ "symbol": "NZ$"
+ },
+ "OMR": {
+ "name": "OMR",
+ "symbol": "OMR"
+ },
+ "PAB": {
+ "name": "PAB",
+ "symbol": "PAB"
+ },
+ "EGP": {
+ "name": "Pauni ya Misri",
+ "symbol": "EGP"
+ },
+ "SHP": {
+ "name": "Pauni ya Santahelena",
+ "symbol": "SHP"
+ },
+ "GBP": {
+ "name": "Pauni ya Uingereza",
+ "symbol": "£"
+ },
+ "PEN": {
+ "name": "PEN",
+ "symbol": "PEN"
+ },
+ "PGK": {
+ "name": "PGK",
+ "symbol": "PGK"
+ },
+ "PHP": {
+ "name": "PHP",
+ "symbol": "PHP"
+ },
+ "PKR": {
+ "name": "PKR",
+ "symbol": "PKR"
+ },
+ "PLN": {
+ "name": "PLN",
+ "symbol": "PLN"
+ },
+ "BWP": {
+ "name": "Pula ya Botswana",
+ "symbol": "BWP"
+ },
+ "PYG": {
+ "name": "PYG",
+ "symbol": "PYG"
+ },
+ "QAR": {
+ "name": "QAR",
+ "symbol": "QAR"
+ },
+ "ZAR": {
+ "name": "Randi ya Afrika Kusini",
+ "symbol": "ZAR"
+ },
+ "SAR": {
+ "name": "Riyal ya Saudia",
+ "symbol": "SAR"
+ },
+ "RON": {
+ "name": "RON",
+ "symbol": "RON"
+ },
+ "RSD": {
+ "name": "RSD",
+ "symbol": "RSD"
+ },
+ "RUB": {
+ "name": "RUB",
+ "symbol": "RUB"
+ },
+ "INR": {
+ "name": "Rupia ya India",
+ "symbol": "₹"
+ },
+ "MUR": {
+ "name": "Rupia ya Morisi",
+ "symbol": "MUR"
+ },
+ "SCR": {
+ "name": "Rupia ya Shelisheli",
+ "symbol": "SCR"
+ },
+ "JPY": {
+ "name": "Sarafu ya Chijapani",
+ "symbol": "JPÂ¥"
+ },
+ "SBD": {
+ "name": "SBD",
+ "symbol": "SBD"
+ },
+ "SEK": {
+ "name": "SEK",
+ "symbol": "SEK"
+ },
+ "SGD": {
+ "name": "SGD",
+ "symbol": "SGD"
+ },
+ "KES": {
+ "name": "Shilingi ya Kenya",
+ "symbol": "KES"
+ },
+ "SOS": {
+ "name": "Shilingi ya Somalia",
+ "symbol": "SOS"
+ },
+ "TZS": {
+ "name": "Shilingi ya Tanzania",
+ "symbol": "TSh"
+ },
+ "UGX": {
+ "name": "Shilingi ya Uganda",
+ "symbol": "UGX"
+ },
+ "SRD": {
+ "name": "SRD",
+ "symbol": "SRD"
+ },
+ "SSP": {
+ "name": "SSP",
+ "symbol": "SSP"
+ },
+ "SVC": {
+ "name": "SVC",
+ "symbol": "SVC"
+ },
+ "SYP": {
+ "name": "SYP",
+ "symbol": "SYP"
+ },
+ "THB": {
+ "name": "THB",
+ "symbol": "THB"
+ },
+ "TJS": {
+ "name": "TJS",
+ "symbol": "TJS"
+ },
+ "TMT": {
+ "name": "TMT",
+ "symbol": "TMT"
+ },
+ "TOP": {
+ "name": "TOP",
+ "symbol": "TOP"
+ },
+ "TRY": {
+ "name": "TRY",
+ "symbol": "TRY"
+ },
+ "TTD": {
+ "name": "TTD",
+ "symbol": "TTD"
+ },
+ "TWD": {
+ "name": "TWD",
+ "symbol": "NT$"
+ },
+ "UAH": {
+ "name": "UAH",
+ "symbol": "UAH"
+ },
+ "MRO": {
+ "name": "Ugwiya ya Moritania",
+ "symbol": "MRO"
+ },
+ "UYU": {
+ "name": "UYU",
+ "symbol": "UYU"
+ },
+ "UZS": {
+ "name": "UZS",
+ "symbol": "UZS"
+ },
+ "VEF": {
+ "name": "VEF",
+ "symbol": "VEF"
+ },
+ "VND": {
+ "name": "VND",
+ "symbol": "â‚«"
+ },
+ "VUV": {
+ "name": "VUV",
+ "symbol": "VUV"
+ },
+ "WST": {
+ "name": "WST",
+ "symbol": "WST"
+ },
+ "XCD": {
+ "name": "XCD",
+ "symbol": "EC$"
+ },
+ "XPF": {
+ "name": "XPF",
+ "symbol": "CFPF"
+ },
+ "YER": {
+ "name": "YER",
+ "symbol": "YER"
+ },
+ "CNY": {
+ "name": "Yuan Renminbi ya China",
+ "symbol": "CNÂ¥"
+ },
+ "EUR": {
+ "name": "Yuro",
+ "symbol": "€"
+ },
+ "ZWL": {
+ "name": "ZWL",
+ "symbol": "ZWL"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/currency/kea.json b/library/intl/resources/currency/kea.json
new file mode 100644
index 000000000..efc07ee0f
--- /dev/null
+++ b/library/intl/resources/currency/kea.json
@@ -0,0 +1,634 @@
+{
+ "AFN": {
+ "name": "AFN",
+ "symbol": "AFN"
+ },
+ "ALL": {
+ "name": "ALL",
+ "symbol": "ALL"
+ },
+ "AMD": {
+ "name": "AMD",
+ "symbol": "AMD"
+ },
+ "ANG": {
+ "name": "ANG",
+ "symbol": "ANG"
+ },
+ "MGA": {
+ "name": "Ariari di Madagaskar",
+ "symbol": "MGA"
+ },
+ "ARS": {
+ "name": "ARS",
+ "symbol": "ARS"
+ },
+ "AWG": {
+ "name": "AWG",
+ "symbol": "AWG"
+ },
+ "AZN": {
+ "name": "AZN",
+ "symbol": "AZN"
+ },
+ "THB": {
+ "name": "Baht tailandes",
+ "symbol": "฿"
+ },
+ "BAM": {
+ "name": "BAM",
+ "symbol": "BAM"
+ },
+ "BBD": {
+ "name": "BBD",
+ "symbol": "BBD"
+ },
+ "BDT": {
+ "name": "BDT",
+ "symbol": "BDT"
+ },
+ "BGN": {
+ "name": "BGN",
+ "symbol": "BGN"
+ },
+ "ETB": {
+ "name": "Bir etiopi",
+ "symbol": "ETB"
+ },
+ "BMD": {
+ "name": "BMD",
+ "symbol": "BMD"
+ },
+ "BND": {
+ "name": "BND",
+ "symbol": "BND"
+ },
+ "BOB": {
+ "name": "BOB",
+ "symbol": "BOB"
+ },
+ "BSD": {
+ "name": "BSD",
+ "symbol": "BSD"
+ },
+ "BTN": {
+ "name": "BTN",
+ "symbol": "BTN"
+ },
+ "BYR": {
+ "name": "BYR",
+ "symbol": "BYR"
+ },
+ "BZD": {
+ "name": "BZD",
+ "symbol": "BZD"
+ },
+ "CLP": {
+ "name": "CLP",
+ "symbol": "CLP"
+ },
+ "COP": {
+ "name": "COP",
+ "symbol": "COP"
+ },
+ "CRC": {
+ "name": "CRC",
+ "symbol": "CRC"
+ },
+ "CUC": {
+ "name": "CUC",
+ "symbol": "CUC"
+ },
+ "CUP": {
+ "name": "CUP",
+ "symbol": "CUP"
+ },
+ "CZK": {
+ "name": "CZK",
+ "symbol": "CZK"
+ },
+ "GMD": {
+ "name": "Dalasi",
+ "symbol": "GMD"
+ },
+ "DZD": {
+ "name": "Dinar arjelinu",
+ "symbol": "DZD"
+ },
+ "BHD": {
+ "name": "Dinar di Barain",
+ "symbol": "BHD"
+ },
+ "LYD": {
+ "name": "Dinar libiu",
+ "symbol": "LYD"
+ },
+ "TND": {
+ "name": "Dinar tunizianu",
+ "symbol": "TND"
+ },
+ "AED": {
+ "name": "Diren di Emiradus Arabi Unidu",
+ "symbol": "AED"
+ },
+ "MAD": {
+ "name": "Diren marokinu",
+ "symbol": "MAD"
+ },
+ "STD": {
+ "name": "Dobra di Sãu Tume i Prinsipi",
+ "symbol": "STD"
+ },
+ "AUD": {
+ "name": "Dola australianu",
+ "symbol": "AU$"
+ },
+ "HKD": {
+ "name": "Dola di Ong Kong",
+ "symbol": "HK$"
+ },
+ "CAD": {
+ "name": "Dola kanadianu",
+ "symbol": "CA$"
+ },
+ "LRD": {
+ "name": "Dola liberianu",
+ "symbol": "LRD"
+ },
+ "USD": {
+ "name": "Dola merkanu",
+ "symbol": "US$"
+ },
+ "NAD": {
+ "name": "Dola namibianu",
+ "symbol": "NAD"
+ },
+ "TWD": {
+ "name": "Dola Novu di Taiwan",
+ "symbol": "NT$"
+ },
+ "DOP": {
+ "name": "DOP",
+ "symbol": "DOP"
+ },
+ "EUR": {
+ "name": "Euro",
+ "symbol": "€"
+ },
+ "FJD": {
+ "name": "FJD",
+ "symbol": "FJD"
+ },
+ "FKP": {
+ "name": "FKP",
+ "symbol": "FKP"
+ },
+ "BIF": {
+ "name": "Franku borundes",
+ "symbol": "BIF"
+ },
+ "XOF": {
+ "name": "Franku CFA BCEAO",
+ "symbol": "CFA"
+ },
+ "XAF": {
+ "name": "Franku CFA BEAC",
+ "symbol": "FCFA"
+ },
+ "DJF": {
+ "name": "Franku di Djibuti",
+ "symbol": "DJF"
+ },
+ "KMF": {
+ "name": "Franku di Komoris",
+ "symbol": "KMF"
+ },
+ "CDF": {
+ "name": "Franku kongoles",
+ "symbol": "CDF"
+ },
+ "RWF": {
+ "name": "Franku ruandes",
+ "symbol": "RWF"
+ },
+ "CHF": {
+ "name": "Franku suisu",
+ "symbol": "CHF"
+ },
+ "GEL": {
+ "name": "GEL",
+ "symbol": "GEL"
+ },
+ "GHS": {
+ "name": "GHS",
+ "symbol": "GHS"
+ },
+ "GIP": {
+ "name": "GIP",
+ "symbol": "GIP"
+ },
+ "GNF": {
+ "name": "GNF",
+ "symbol": "GNF"
+ },
+ "GTQ": {
+ "name": "GTQ",
+ "symbol": "GTQ"
+ },
+ "GYD": {
+ "name": "GYD",
+ "symbol": "GYD"
+ },
+ "HNL": {
+ "name": "HNL",
+ "symbol": "HNL"
+ },
+ "HRK": {
+ "name": "HRK",
+ "symbol": "HRK"
+ },
+ "HTG": {
+ "name": "HTG",
+ "symbol": "HTG"
+ },
+ "HUF": {
+ "name": "HUF",
+ "symbol": "HUF"
+ },
+ "JPY": {
+ "name": "Ieni japones",
+ "symbol": "JPÂ¥"
+ },
+ "ILS": {
+ "name": "ILS",
+ "symbol": "₪"
+ },
+ "IQD": {
+ "name": "IQD",
+ "symbol": "IQD"
+ },
+ "IRR": {
+ "name": "IRR",
+ "symbol": "IRR"
+ },
+ "ISK": {
+ "name": "ISK",
+ "symbol": "ISK"
+ },
+ "CNY": {
+ "name": "Iuan xines",
+ "symbol": "CNÂ¥"
+ },
+ "JMD": {
+ "name": "JMD",
+ "symbol": "JMD"
+ },
+ "JOD": {
+ "name": "JOD",
+ "symbol": "JOD"
+ },
+ "KGS": {
+ "name": "KGS",
+ "symbol": "KGS"
+ },
+ "KHR": {
+ "name": "KHR",
+ "symbol": "KHR"
+ },
+ "KPW": {
+ "name": "KPW",
+ "symbol": "KPW"
+ },
+ "AOA": {
+ "name": "Kuanza",
+ "symbol": "AOA"
+ },
+ "MWK": {
+ "name": "Kuaxa di Malaui",
+ "symbol": "MWK"
+ },
+ "ZMW": {
+ "name": "Kuaxa zambianu",
+ "symbol": "ZMW"
+ },
+ "DKK": {
+ "name": "Kuroa dinamarkeza",
+ "symbol": "DKK"
+ },
+ "NOK": {
+ "name": "Kuroa norueges",
+ "symbol": "NOK"
+ },
+ "SEK": {
+ "name": "Kuroa sueku",
+ "symbol": "SEK"
+ },
+ "KWD": {
+ "name": "KWD",
+ "symbol": "KWD"
+ },
+ "KYD": {
+ "name": "KYD",
+ "symbol": "KYD"
+ },
+ "KZT": {
+ "name": "KZT",
+ "symbol": "KZT"
+ },
+ "LAK": {
+ "name": "LAK",
+ "symbol": "LAK"
+ },
+ "LBP": {
+ "name": "LBP",
+ "symbol": "LBP"
+ },
+ "SLL": {
+ "name": "Leone di Sera Leoa",
+ "symbol": "SLL"
+ },
+ "SHP": {
+ "name": "Libra di Santa Ilena",
+ "symbol": "SHP"
+ },
+ "EGP": {
+ "name": "Libra ejipsiu",
+ "symbol": "EGP"
+ },
+ "GBP": {
+ "name": "Libra sterlina britaniku",
+ "symbol": "£"
+ },
+ "SDG": {
+ "name": "Libra sudanes",
+ "symbol": "SDG"
+ },
+ "SZL": {
+ "name": "Lilanjeni",
+ "symbol": "SZL"
+ },
+ "TRY": {
+ "name": "Lira turku",
+ "symbol": "TRY"
+ },
+ "LKR": {
+ "name": "LKR",
+ "symbol": "LKR"
+ },
+ "LSL": {
+ "name": "Loti di Lezotu",
+ "symbol": "LSL"
+ },
+ "LTL": {
+ "name": "LTL",
+ "symbol": "LTL"
+ },
+ "MDL": {
+ "name": "MDL",
+ "symbol": "MDL"
+ },
+ "MKD": {
+ "name": "MKD",
+ "symbol": "MKD"
+ },
+ "MMK": {
+ "name": "MMK",
+ "symbol": "MMK"
+ },
+ "MNT": {
+ "name": "MNT",
+ "symbol": "MNT"
+ },
+ "MOP": {
+ "name": "MOP",
+ "symbol": "MOP"
+ },
+ "MVR": {
+ "name": "MVR",
+ "symbol": "MVR"
+ },
+ "MYR": {
+ "name": "MYR",
+ "symbol": "MYR"
+ },
+ "MZN": {
+ "name": "MZN",
+ "symbol": "MZN"
+ },
+ "ERN": {
+ "name": "Nafka di Eritreia",
+ "symbol": "ERN"
+ },
+ "NGN": {
+ "name": "Naira",
+ "symbol": "NGN"
+ },
+ "NIO": {
+ "name": "NIO",
+ "symbol": "NIO"
+ },
+ "NPR": {
+ "name": "NPR",
+ "symbol": "NPR"
+ },
+ "NZD": {
+ "name": "NZD",
+ "symbol": "NZ$"
+ },
+ "OMR": {
+ "name": "OMR",
+ "symbol": "OMR"
+ },
+ "MRO": {
+ "name": "Ougia",
+ "symbol": "MRO"
+ },
+ "PAB": {
+ "name": "PAB",
+ "symbol": "PAB"
+ },
+ "PEN": {
+ "name": "PEN",
+ "symbol": "PEN"
+ },
+ "MXN": {
+ "name": "Pezu mexikanu",
+ "symbol": "MX$"
+ },
+ "PGK": {
+ "name": "PGK",
+ "symbol": "PGK"
+ },
+ "PHP": {
+ "name": "PHP",
+ "symbol": "PHP"
+ },
+ "PKR": {
+ "name": "PKR",
+ "symbol": "PKR"
+ },
+ "BWP": {
+ "name": "Pula di Botsuana",
+ "symbol": "BWP"
+ },
+ "PYG": {
+ "name": "PYG",
+ "symbol": "PYG"
+ },
+ "QAR": {
+ "name": "QAR",
+ "symbol": "QAR"
+ },
+ "ZAR": {
+ "name": "Rand sulafrikanu",
+ "symbol": "ZAR"
+ },
+ "BRL": {
+ "name": "Rial brazileru",
+ "symbol": "R$"
+ },
+ "SAR": {
+ "name": "Rial saudita",
+ "symbol": "SAR"
+ },
+ "RON": {
+ "name": "RON",
+ "symbol": "RON"
+ },
+ "RSD": {
+ "name": "RSD",
+ "symbol": "RSD"
+ },
+ "RUB": {
+ "name": "Rublu rusu",
+ "symbol": "RUB"
+ },
+ "MUR": {
+ "name": "Rupia di Maurisias",
+ "symbol": "MUR"
+ },
+ "SCR": {
+ "name": "Rupia di Seixelis",
+ "symbol": "SCR"
+ },
+ "INR": {
+ "name": "Rupia indianu",
+ "symbol": "₹"
+ },
+ "IDR": {
+ "name": "Rupia indoneziu",
+ "symbol": "IDR"
+ },
+ "SBD": {
+ "name": "SBD",
+ "symbol": "SBD"
+ },
+ "SGD": {
+ "name": "SGD",
+ "symbol": "SGD"
+ },
+ "CVE": {
+ "name": "Skudu Kabuverdianu",
+ "symbol": "​"
+ },
+ "SRD": {
+ "name": "SRD",
+ "symbol": "SRD"
+ },
+ "SSP": {
+ "name": "SSP",
+ "symbol": "SSP"
+ },
+ "SVC": {
+ "name": "SVC",
+ "symbol": "SVC"
+ },
+ "SYP": {
+ "name": "SYP",
+ "symbol": "SYP"
+ },
+ "TJS": {
+ "name": "TJS",
+ "symbol": "TJS"
+ },
+ "TMT": {
+ "name": "TMT",
+ "symbol": "TMT"
+ },
+ "TOP": {
+ "name": "TOP",
+ "symbol": "TOP"
+ },
+ "TTD": {
+ "name": "TTD",
+ "symbol": "TTD"
+ },
+ "UAH": {
+ "name": "UAH",
+ "symbol": "UAH"
+ },
+ "UYU": {
+ "name": "UYU",
+ "symbol": "UYU"
+ },
+ "UZS": {
+ "name": "UZS",
+ "symbol": "UZS"
+ },
+ "VEF": {
+ "name": "VEF",
+ "symbol": "VEF"
+ },
+ "VND": {
+ "name": "VND",
+ "symbol": "â‚«"
+ },
+ "VUV": {
+ "name": "VUV",
+ "symbol": "VUV"
+ },
+ "KRW": {
+ "name": "Won sul-koreanu",
+ "symbol": "â‚©"
+ },
+ "WST": {
+ "name": "WST",
+ "symbol": "WST"
+ },
+ "XCD": {
+ "name": "XCD",
+ "symbol": "EC$"
+ },
+ "TZS": {
+ "name": "Xelin di Tanzania",
+ "symbol": "TZS"
+ },
+ "KES": {
+ "name": "Xelin kenianu",
+ "symbol": "KES"
+ },
+ "SOS": {
+ "name": "Xelin somalianu",
+ "symbol": "SOS"
+ },
+ "UGX": {
+ "name": "Xelin ugandensi",
+ "symbol": "UGX"
+ },
+ "XPF": {
+ "name": "XPF",
+ "symbol": "CFPF"
+ },
+ "YER": {
+ "name": "YER",
+ "symbol": "YER"
+ },
+ "PLN": {
+ "name": "Zloty polaku",
+ "symbol": "PLN"
+ },
+ "ZWL": {
+ "name": "ZWL",
+ "symbol": "ZWL"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/currency/khq.json b/library/intl/resources/currency/khq.json
new file mode 100644
index 000000000..c75824e61
--- /dev/null
+++ b/library/intl/resources/currency/khq.json
@@ -0,0 +1,634 @@
+{
+ "AFN": {
+ "name": "AFN",
+ "symbol": "AFN"
+ },
+ "ALL": {
+ "name": "ALL",
+ "symbol": "ALL"
+ },
+ "DZD": {
+ "name": "Alžeeri Dinar",
+ "symbol": "DZD"
+ },
+ "AMD": {
+ "name": "AMD",
+ "symbol": "AMD"
+ },
+ "USD": {
+ "name": "Ameriki Dollar",
+ "symbol": "US$"
+ },
+ "ANG": {
+ "name": "ANG",
+ "symbol": "ANG"
+ },
+ "AOA": {
+ "name": "Angoola Kwanza",
+ "symbol": "AOA"
+ },
+ "ARS": {
+ "name": "ARS",
+ "symbol": "ARS"
+ },
+ "AWG": {
+ "name": "AWG",
+ "symbol": "AWG"
+ },
+ "AZN": {
+ "name": "AZN",
+ "symbol": "AZN"
+ },
+ "BHD": {
+ "name": "Bahareen Dinar",
+ "symbol": "BHD"
+ },
+ "BAM": {
+ "name": "BAM",
+ "symbol": "BAM"
+ },
+ "BBD": {
+ "name": "BBD",
+ "symbol": "BBD"
+ },
+ "BDT": {
+ "name": "BDT",
+ "symbol": "BDT"
+ },
+ "BGN": {
+ "name": "BGN",
+ "symbol": "BGN"
+ },
+ "BMD": {
+ "name": "BMD",
+ "symbol": "BMD"
+ },
+ "BND": {
+ "name": "BND",
+ "symbol": "BND"
+ },
+ "BOB": {
+ "name": "BOB",
+ "symbol": "BOB"
+ },
+ "BWP": {
+ "name": "Botswaana Pund",
+ "symbol": "BWP"
+ },
+ "GBP": {
+ "name": "Britin Pund",
+ "symbol": "£"
+ },
+ "BRL": {
+ "name": "BRL",
+ "symbol": "R$"
+ },
+ "BSD": {
+ "name": "BSD",
+ "symbol": "BSD"
+ },
+ "BTN": {
+ "name": "BTN",
+ "symbol": "BTN"
+ },
+ "BIF": {
+ "name": "Burundi Fraŋ",
+ "symbol": "BIF"
+ },
+ "BYR": {
+ "name": "BYR",
+ "symbol": "BYR"
+ },
+ "BZD": {
+ "name": "BZD",
+ "symbol": "BZD"
+ },
+ "XOF": {
+ "name": "CFA Fraŋ (BCEAO)",
+ "symbol": "CFA"
+ },
+ "XAF": {
+ "name": "CFA Fraŋ (BEAC)",
+ "symbol": "FCFA"
+ },
+ "CLP": {
+ "name": "CLP",
+ "symbol": "CLP"
+ },
+ "COP": {
+ "name": "COP",
+ "symbol": "COP"
+ },
+ "CRC": {
+ "name": "CRC",
+ "symbol": "CRC"
+ },
+ "CUC": {
+ "name": "CUC",
+ "symbol": "CUC"
+ },
+ "CUP": {
+ "name": "CUP",
+ "symbol": "CUP"
+ },
+ "CZK": {
+ "name": "CZK",
+ "symbol": "CZK"
+ },
+ "DKK": {
+ "name": "DKK",
+ "symbol": "DKK"
+ },
+ "DOP": {
+ "name": "DOP",
+ "symbol": "DOP"
+ },
+ "ETB": {
+ "name": "Ecioopi Birr",
+ "symbol": "ETB"
+ },
+ "EUR": {
+ "name": "Eero",
+ "symbol": "€"
+ },
+ "ERN": {
+ "name": "Eritree Nafka",
+ "symbol": "ERN"
+ },
+ "FJD": {
+ "name": "FJD",
+ "symbol": "FJD"
+ },
+ "FKP": {
+ "name": "FKP",
+ "symbol": "FKP"
+ },
+ "GMD": {
+ "name": "Gambi Dalasi",
+ "symbol": "GMD"
+ },
+ "GEL": {
+ "name": "GEL",
+ "symbol": "GEL"
+ },
+ "GHS": {
+ "name": "GHS",
+ "symbol": "GHS"
+ },
+ "GIP": {
+ "name": "GIP",
+ "symbol": "GIP"
+ },
+ "GNF": {
+ "name": "GNF",
+ "symbol": "GNF"
+ },
+ "GTQ": {
+ "name": "GTQ",
+ "symbol": "GTQ"
+ },
+ "GYD": {
+ "name": "GYD",
+ "symbol": "GYD"
+ },
+ "ZAR": {
+ "name": "Hawasa Afriki Rand",
+ "symbol": "ZAR"
+ },
+ "HKD": {
+ "name": "HKD",
+ "symbol": "HK$"
+ },
+ "HNL": {
+ "name": "HNL",
+ "symbol": "HNL"
+ },
+ "HRK": {
+ "name": "HRK",
+ "symbol": "HRK"
+ },
+ "HTG": {
+ "name": "HTG",
+ "symbol": "HTG"
+ },
+ "HUF": {
+ "name": "HUF",
+ "symbol": "HUF"
+ },
+ "IDR": {
+ "name": "IDR",
+ "symbol": "IDR"
+ },
+ "ILS": {
+ "name": "ILS",
+ "symbol": "₪"
+ },
+ "INR": {
+ "name": "Indu Rupii",
+ "symbol": "₹"
+ },
+ "IQD": {
+ "name": "IQD",
+ "symbol": "IQD"
+ },
+ "IRR": {
+ "name": "IRR",
+ "symbol": "IRR"
+ },
+ "ISK": {
+ "name": "ISK",
+ "symbol": "ISK"
+ },
+ "JPY": {
+ "name": "Jaapoŋ Yen",
+ "symbol": "JPÂ¥"
+ },
+ "DJF": {
+ "name": "Jibuuti Fraŋ",
+ "symbol": "DJF"
+ },
+ "JMD": {
+ "name": "JMD",
+ "symbol": "JMD"
+ },
+ "JOD": {
+ "name": "JOD",
+ "symbol": "JOD"
+ },
+ "CAD": {
+ "name": "Kanaada Dollar",
+ "symbol": "CA$"
+ },
+ "CVE": {
+ "name": "Kapuver Escudo",
+ "symbol": "CVE"
+ },
+ "KES": {
+ "name": "Keeniya Šiiliŋ",
+ "symbol": "KES"
+ },
+ "KGS": {
+ "name": "KGS",
+ "symbol": "KGS"
+ },
+ "KHR": {
+ "name": "KHR",
+ "symbol": "KHR"
+ },
+ "KMF": {
+ "name": "Komoor Fraŋ",
+ "symbol": "KMF"
+ },
+ "CDF": {
+ "name": "Kongo Fraŋ",
+ "symbol": "CDF"
+ },
+ "KPW": {
+ "name": "KPW",
+ "symbol": "KPW"
+ },
+ "KRW": {
+ "name": "KRW",
+ "symbol": "â‚©"
+ },
+ "KWD": {
+ "name": "KWD",
+ "symbol": "KWD"
+ },
+ "KYD": {
+ "name": "KYD",
+ "symbol": "KYD"
+ },
+ "KZT": {
+ "name": "KZT",
+ "symbol": "KZT"
+ },
+ "AED": {
+ "name": "Laaraw Immaara Margantey Dirham",
+ "symbol": "AED"
+ },
+ "LAK": {
+ "name": "LAK",
+ "symbol": "LAK"
+ },
+ "LBP": {
+ "name": "LBP",
+ "symbol": "LBP"
+ },
+ "SLL": {
+ "name": "Leeon",
+ "symbol": "SLL"
+ },
+ "LSL": {
+ "name": "Leezoto Loti",
+ "symbol": "LSL"
+ },
+ "LRD": {
+ "name": "Liberia Dollar",
+ "symbol": "LRD"
+ },
+ "LYD": {
+ "name": "Liibi Dinar",
+ "symbol": "LYD"
+ },
+ "SZL": {
+ "name": "Lilangeni",
+ "symbol": "SZL"
+ },
+ "LKR": {
+ "name": "LKR",
+ "symbol": "LKR"
+ },
+ "LTL": {
+ "name": "LTL",
+ "symbol": "LTL"
+ },
+ "MAD": {
+ "name": "Maarok Dirham",
+ "symbol": "MAD"
+ },
+ "MWK": {
+ "name": "Malaawi Kwaca",
+ "symbol": "MWK"
+ },
+ "MGA": {
+ "name": "Malgaaši Fraŋ",
+ "symbol": "MGA"
+ },
+ "MDL": {
+ "name": "MDL",
+ "symbol": "MDL"
+ },
+ "EGP": {
+ "name": "Misra Pund",
+ "symbol": "EGP"
+ },
+ "MKD": {
+ "name": "MKD",
+ "symbol": "MKD"
+ },
+ "MMK": {
+ "name": "MMK",
+ "symbol": "MMK"
+ },
+ "MNT": {
+ "name": "MNT",
+ "symbol": "MNT"
+ },
+ "MUR": {
+ "name": "Mooris Rupii",
+ "symbol": "MUR"
+ },
+ "MRO": {
+ "name": "Mooritaani Ugiya",
+ "symbol": "MRO"
+ },
+ "MOP": {
+ "name": "MOP",
+ "symbol": "MOP"
+ },
+ "MVR": {
+ "name": "MVR",
+ "symbol": "MVR"
+ },
+ "MXN": {
+ "name": "MXN",
+ "symbol": "MX$"
+ },
+ "MYR": {
+ "name": "MYR",
+ "symbol": "MYR"
+ },
+ "MZN": {
+ "name": "MZN",
+ "symbol": "MZN"
+ },
+ "NGN": {
+ "name": "Naajiriya Neera",
+ "symbol": "NGN"
+ },
+ "NAD": {
+ "name": "Naamibi Dollar",
+ "symbol": "NAD"
+ },
+ "NIO": {
+ "name": "NIO",
+ "symbol": "NIO"
+ },
+ "NOK": {
+ "name": "NOK",
+ "symbol": "NOK"
+ },
+ "NPR": {
+ "name": "NPR",
+ "symbol": "NPR"
+ },
+ "NZD": {
+ "name": "NZD",
+ "symbol": "NZ$"
+ },
+ "OMR": {
+ "name": "OMR",
+ "symbol": "OMR"
+ },
+ "AUD": {
+ "name": "Ostraali Dollar",
+ "symbol": "A$"
+ },
+ "PAB": {
+ "name": "PAB",
+ "symbol": "PAB"
+ },
+ "PEN": {
+ "name": "PEN",
+ "symbol": "PEN"
+ },
+ "PGK": {
+ "name": "PGK",
+ "symbol": "PGK"
+ },
+ "PHP": {
+ "name": "PHP",
+ "symbol": "PHP"
+ },
+ "PKR": {
+ "name": "PKR",
+ "symbol": "PKR"
+ },
+ "PLN": {
+ "name": "PLN",
+ "symbol": "PLN"
+ },
+ "PYG": {
+ "name": "PYG",
+ "symbol": "PYG"
+ },
+ "QAR": {
+ "name": "QAR",
+ "symbol": "QAR"
+ },
+ "RON": {
+ "name": "RON",
+ "symbol": "RON"
+ },
+ "RSD": {
+ "name": "RSD",
+ "symbol": "RSD"
+ },
+ "RUB": {
+ "name": "RUB",
+ "symbol": "RUB"
+ },
+ "RWF": {
+ "name": "Rwanda Fraŋ",
+ "symbol": "RWF"
+ },
+ "STD": {
+ "name": "Sao Tome nda Prinsipe Dobra",
+ "symbol": "STD"
+ },
+ "SAR": {
+ "name": "Saudiya Riyal",
+ "symbol": "SAR"
+ },
+ "SBD": {
+ "name": "SBD",
+ "symbol": "SBD"
+ },
+ "SCR": {
+ "name": "Seešel Rupii",
+ "symbol": "SCR"
+ },
+ "SEK": {
+ "name": "SEK",
+ "symbol": "SEK"
+ },
+ "SHP": {
+ "name": "Seŋ Helena Fraŋ",
+ "symbol": "SHP"
+ },
+ "SGD": {
+ "name": "SGD",
+ "symbol": "SGD"
+ },
+ "CNY": {
+ "name": "Sinwa Yuan Renminbi",
+ "symbol": "CNÂ¥"
+ },
+ "SOS": {
+ "name": "Somaali Šiiliŋ",
+ "symbol": "SOS"
+ },
+ "SRD": {
+ "name": "SRD",
+ "symbol": "SRD"
+ },
+ "SSP": {
+ "name": "SSP",
+ "symbol": "SSP"
+ },
+ "SDG": {
+ "name": "Suudaŋ Dinar",
+ "symbol": "SDG"
+ },
+ "SVC": {
+ "name": "SVC",
+ "symbol": "SVC"
+ },
+ "CHF": {
+ "name": "Swisu Fraŋ",
+ "symbol": "CHF"
+ },
+ "SYP": {
+ "name": "SYP",
+ "symbol": "SYP"
+ },
+ "TZS": {
+ "name": "Tanzaani Šiiliŋ",
+ "symbol": "TZS"
+ },
+ "THB": {
+ "name": "THB",
+ "symbol": "THB"
+ },
+ "TJS": {
+ "name": "TJS",
+ "symbol": "TJS"
+ },
+ "TMT": {
+ "name": "TMT",
+ "symbol": "TMT"
+ },
+ "TOP": {
+ "name": "TOP",
+ "symbol": "TOP"
+ },
+ "TRY": {
+ "name": "TRY",
+ "symbol": "TRY"
+ },
+ "TTD": {
+ "name": "TTD",
+ "symbol": "TTD"
+ },
+ "TND": {
+ "name": "Tunizi Dinar",
+ "symbol": "TND"
+ },
+ "TWD": {
+ "name": "TWD",
+ "symbol": "NT$"
+ },
+ "UAH": {
+ "name": "UAH",
+ "symbol": "UAH"
+ },
+ "UGX": {
+ "name": "Uganda Šiiliŋ",
+ "symbol": "UGX"
+ },
+ "UYU": {
+ "name": "UYU",
+ "symbol": "UYU"
+ },
+ "UZS": {
+ "name": "UZS",
+ "symbol": "UZS"
+ },
+ "VEF": {
+ "name": "VEF",
+ "symbol": "VEF"
+ },
+ "VND": {
+ "name": "VND",
+ "symbol": "â‚«"
+ },
+ "VUV": {
+ "name": "VUV",
+ "symbol": "VUV"
+ },
+ "WST": {
+ "name": "WST",
+ "symbol": "WST"
+ },
+ "XCD": {
+ "name": "XCD",
+ "symbol": "EC$"
+ },
+ "XPF": {
+ "name": "XPF",
+ "symbol": "CFPF"
+ },
+ "YER": {
+ "name": "YER",
+ "symbol": "YER"
+ },
+ "ZMW": {
+ "name": "Zambi Kwaca",
+ "symbol": "ZMW"
+ },
+ "ZWL": {
+ "name": "ZWL",
+ "symbol": "ZWL"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/currency/ki.json b/library/intl/resources/currency/ki.json
new file mode 100644
index 000000000..a2b41bced
--- /dev/null
+++ b/library/intl/resources/currency/ki.json
@@ -0,0 +1,634 @@
+{
+ "AFN": {
+ "name": "AFN",
+ "symbol": "AFN"
+ },
+ "ALL": {
+ "name": "ALL",
+ "symbol": "ALL"
+ },
+ "AMD": {
+ "name": "AMD",
+ "symbol": "AMD"
+ },
+ "ANG": {
+ "name": "ANG",
+ "symbol": "ANG"
+ },
+ "MGA": {
+ "name": "Ariary ya Bukini",
+ "symbol": "MGA"
+ },
+ "ARS": {
+ "name": "ARS",
+ "symbol": "ARS"
+ },
+ "AWG": {
+ "name": "AWG",
+ "symbol": "AWG"
+ },
+ "AZN": {
+ "name": "AZN",
+ "symbol": "AZN"
+ },
+ "BAM": {
+ "name": "BAM",
+ "symbol": "BAM"
+ },
+ "BBD": {
+ "name": "BBD",
+ "symbol": "BBD"
+ },
+ "BDT": {
+ "name": "BDT",
+ "symbol": "BDT"
+ },
+ "BGN": {
+ "name": "BGN",
+ "symbol": "BGN"
+ },
+ "ETB": {
+ "name": "Bir ya Uhabeshi",
+ "symbol": "ETB"
+ },
+ "BMD": {
+ "name": "BMD",
+ "symbol": "BMD"
+ },
+ "BND": {
+ "name": "BND",
+ "symbol": "BND"
+ },
+ "BOB": {
+ "name": "BOB",
+ "symbol": "BOB"
+ },
+ "BRL": {
+ "name": "BRL",
+ "symbol": "R$"
+ },
+ "BSD": {
+ "name": "BSD",
+ "symbol": "BSD"
+ },
+ "BTN": {
+ "name": "BTN",
+ "symbol": "BTN"
+ },
+ "BYR": {
+ "name": "BYR",
+ "symbol": "BYR"
+ },
+ "BZD": {
+ "name": "BZD",
+ "symbol": "BZD"
+ },
+ "SOS": {
+ "name": "ciringi cia cumarĩ",
+ "symbol": "SOS"
+ },
+ "TZS": {
+ "name": "ciringi cia Tanizania",
+ "symbol": "TZS"
+ },
+ "UGX": {
+ "name": "ciringi cia Ũganda",
+ "symbol": "UGX"
+ },
+ "KES": {
+ "name": "Ciringi ya Kenya",
+ "symbol": "Ksh"
+ },
+ "CLP": {
+ "name": "CLP",
+ "symbol": "CLP"
+ },
+ "COP": {
+ "name": "COP",
+ "symbol": "COP"
+ },
+ "CRC": {
+ "name": "CRC",
+ "symbol": "CRC"
+ },
+ "CUC": {
+ "name": "CUC",
+ "symbol": "CUC"
+ },
+ "CUP": {
+ "name": "CUP",
+ "symbol": "CUP"
+ },
+ "CZK": {
+ "name": "CZK",
+ "symbol": "CZK"
+ },
+ "GMD": {
+ "name": "Dalasi ya Gambia",
+ "symbol": "GMD"
+ },
+ "DZD": {
+ "name": "Dinari ya Aljeria",
+ "symbol": "DZD"
+ },
+ "BHD": {
+ "name": "Dinari ya Bahareni",
+ "symbol": "BHD"
+ },
+ "LYD": {
+ "name": "Dinari ya Libya",
+ "symbol": "LYD"
+ },
+ "TND": {
+ "name": "Dinari ya Tunisia",
+ "symbol": "TND"
+ },
+ "AED": {
+ "name": "Dirham ya Falme za Kiarabu",
+ "symbol": "AED"
+ },
+ "MAD": {
+ "name": "Dirham ya Moroko",
+ "symbol": "MAD"
+ },
+ "DKK": {
+ "name": "DKK",
+ "symbol": "DKK"
+ },
+ "STD": {
+ "name": "Dobra ya Sao Tome na Principe",
+ "symbol": "STD"
+ },
+ "AUD": {
+ "name": "Dola ya Australia",
+ "symbol": "A$"
+ },
+ "LRD": {
+ "name": "Dola ya Liberia",
+ "symbol": "LRD"
+ },
+ "NAD": {
+ "name": "Dola ya Namibia",
+ "symbol": "NAD"
+ },
+ "DOP": {
+ "name": "DOP",
+ "symbol": "DOP"
+ },
+ "CVE": {
+ "name": "Eskudo ya Kepuvede",
+ "symbol": "CVE"
+ },
+ "XOF": {
+ "name": "Faranga CFA BCEAO",
+ "symbol": "CFA"
+ },
+ "XAF": {
+ "name": "Faranga CFA BEAC",
+ "symbol": "FCFA"
+ },
+ "BIF": {
+ "name": "Faranga ya Burundi",
+ "symbol": "BIF"
+ },
+ "DJF": {
+ "name": "Faranga ya Jibuti",
+ "symbol": "DJF"
+ },
+ "KMF": {
+ "name": "Faranga ya Komoro",
+ "symbol": "KMF"
+ },
+ "CDF": {
+ "name": "Faranga ya Kongo",
+ "symbol": "CDF"
+ },
+ "RWF": {
+ "name": "Faranga ya Rwanda",
+ "symbol": "RWF"
+ },
+ "CHF": {
+ "name": "Faranga ya Uswisi",
+ "symbol": "CHF"
+ },
+ "FJD": {
+ "name": "FJD",
+ "symbol": "FJD"
+ },
+ "FKP": {
+ "name": "FKP",
+ "symbol": "FKP"
+ },
+ "GEL": {
+ "name": "GEL",
+ "symbol": "GEL"
+ },
+ "GHS": {
+ "name": "GHS",
+ "symbol": "GHS"
+ },
+ "GIP": {
+ "name": "GIP",
+ "symbol": "GIP"
+ },
+ "GNF": {
+ "name": "GNF",
+ "symbol": "GNF"
+ },
+ "GTQ": {
+ "name": "GTQ",
+ "symbol": "GTQ"
+ },
+ "GYD": {
+ "name": "GYD",
+ "symbol": "GYD"
+ },
+ "HKD": {
+ "name": "HKD",
+ "symbol": "HK$"
+ },
+ "HNL": {
+ "name": "HNL",
+ "symbol": "HNL"
+ },
+ "HRK": {
+ "name": "HRK",
+ "symbol": "HRK"
+ },
+ "HTG": {
+ "name": "HTG",
+ "symbol": "HTG"
+ },
+ "HUF": {
+ "name": "HUF",
+ "symbol": "HUF"
+ },
+ "IDR": {
+ "name": "IDR",
+ "symbol": "IDR"
+ },
+ "ILS": {
+ "name": "ILS",
+ "symbol": "₪"
+ },
+ "IQD": {
+ "name": "IQD",
+ "symbol": "IQD"
+ },
+ "IRR": {
+ "name": "IRR",
+ "symbol": "IRR"
+ },
+ "ISK": {
+ "name": "ISK",
+ "symbol": "ISK"
+ },
+ "JMD": {
+ "name": "JMD",
+ "symbol": "JMD"
+ },
+ "JOD": {
+ "name": "JOD",
+ "symbol": "JOD"
+ },
+ "KGS": {
+ "name": "KGS",
+ "symbol": "KGS"
+ },
+ "KHR": {
+ "name": "KHR",
+ "symbol": "KHR"
+ },
+ "KPW": {
+ "name": "KPW",
+ "symbol": "KPW"
+ },
+ "KRW": {
+ "name": "KRW",
+ "symbol": "â‚©"
+ },
+ "MWK": {
+ "name": "Kwacha ya Malawi",
+ "symbol": "MWK"
+ },
+ "ZMW": {
+ "name": "Kwacha ya Zambia",
+ "symbol": "ZMW"
+ },
+ "AOA": {
+ "name": "Kwanza ya Angola",
+ "symbol": "AOA"
+ },
+ "KWD": {
+ "name": "KWD",
+ "symbol": "KWD"
+ },
+ "KYD": {
+ "name": "KYD",
+ "symbol": "KYD"
+ },
+ "KZT": {
+ "name": "KZT",
+ "symbol": "KZT"
+ },
+ "LAK": {
+ "name": "LAK",
+ "symbol": "LAK"
+ },
+ "LBP": {
+ "name": "LBP",
+ "symbol": "LBP"
+ },
+ "SLL": {
+ "name": "Leoni",
+ "symbol": "SLL"
+ },
+ "SZL": {
+ "name": "Lilangeni",
+ "symbol": "SZL"
+ },
+ "LKR": {
+ "name": "LKR",
+ "symbol": "LKR"
+ },
+ "LSL": {
+ "name": "Loti ya Lesoto",
+ "symbol": "LSL"
+ },
+ "LTL": {
+ "name": "LTL",
+ "symbol": "LTL"
+ },
+ "GBP": {
+ "name": "Mbauini cia Ngeretha",
+ "symbol": "£"
+ },
+ "MDL": {
+ "name": "MDL",
+ "symbol": "MDL"
+ },
+ "MKD": {
+ "name": "MKD",
+ "symbol": "MKD"
+ },
+ "MMK": {
+ "name": "MMK",
+ "symbol": "MMK"
+ },
+ "MNT": {
+ "name": "MNT",
+ "symbol": "MNT"
+ },
+ "MOP": {
+ "name": "MOP",
+ "symbol": "MOP"
+ },
+ "MVR": {
+ "name": "MVR",
+ "symbol": "MVR"
+ },
+ "MXN": {
+ "name": "MXN",
+ "symbol": "MX$"
+ },
+ "MYR": {
+ "name": "MYR",
+ "symbol": "MYR"
+ },
+ "MZN": {
+ "name": "MZN",
+ "symbol": "MZN"
+ },
+ "NGN": {
+ "name": "Naira ya Nijeria",
+ "symbol": "NGN"
+ },
+ "ERN": {
+ "name": "Nakfa ya Eritrea",
+ "symbol": "ERN"
+ },
+ "USD": {
+ "name": "Ndora cia Amerika",
+ "symbol": "US$"
+ },
+ "CAD": {
+ "name": "Ndora ya Kananda",
+ "symbol": "CA$"
+ },
+ "NIO": {
+ "name": "NIO",
+ "symbol": "NIO"
+ },
+ "NOK": {
+ "name": "NOK",
+ "symbol": "NOK"
+ },
+ "NPR": {
+ "name": "NPR",
+ "symbol": "NPR"
+ },
+ "NZD": {
+ "name": "NZD",
+ "symbol": "NZ$"
+ },
+ "OMR": {
+ "name": "OMR",
+ "symbol": "OMR"
+ },
+ "PAB": {
+ "name": "PAB",
+ "symbol": "PAB"
+ },
+ "EGP": {
+ "name": "Pauni ya Misri",
+ "symbol": "EGP"
+ },
+ "SHP": {
+ "name": "Pauni ya Santahelena",
+ "symbol": "SHP"
+ },
+ "SDG": {
+ "name": "Pauni ya Sudani",
+ "symbol": "SDG"
+ },
+ "PEN": {
+ "name": "PEN",
+ "symbol": "PEN"
+ },
+ "PGK": {
+ "name": "PGK",
+ "symbol": "PGK"
+ },
+ "PHP": {
+ "name": "PHP",
+ "symbol": "PHP"
+ },
+ "PKR": {
+ "name": "PKR",
+ "symbol": "PKR"
+ },
+ "PLN": {
+ "name": "PLN",
+ "symbol": "PLN"
+ },
+ "BWP": {
+ "name": "Pula ya Botswana",
+ "symbol": "BWP"
+ },
+ "PYG": {
+ "name": "PYG",
+ "symbol": "PYG"
+ },
+ "QAR": {
+ "name": "QAR",
+ "symbol": "QAR"
+ },
+ "ZAR": {
+ "name": "Randi ya Afrika Kusini",
+ "symbol": "ZAR"
+ },
+ "SAR": {
+ "name": "Riyal ya Saudia",
+ "symbol": "SAR"
+ },
+ "RON": {
+ "name": "RON",
+ "symbol": "RON"
+ },
+ "RSD": {
+ "name": "RSD",
+ "symbol": "RSD"
+ },
+ "RUB": {
+ "name": "RUB",
+ "symbol": "RUB"
+ },
+ "INR": {
+ "name": "Rubia rwa India",
+ "symbol": "₹"
+ },
+ "MUR": {
+ "name": "Rupia ya Morisi",
+ "symbol": "MUR"
+ },
+ "SCR": {
+ "name": "Rupia ya Shelisheli",
+ "symbol": "SCR"
+ },
+ "JPY": {
+ "name": "Sarafu ya Kijapani",
+ "symbol": "JPÂ¥"
+ },
+ "SBD": {
+ "name": "SBD",
+ "symbol": "SBD"
+ },
+ "SEK": {
+ "name": "SEK",
+ "symbol": "SEK"
+ },
+ "SGD": {
+ "name": "SGD",
+ "symbol": "SGD"
+ },
+ "SRD": {
+ "name": "SRD",
+ "symbol": "SRD"
+ },
+ "SSP": {
+ "name": "SSP",
+ "symbol": "SSP"
+ },
+ "SVC": {
+ "name": "SVC",
+ "symbol": "SVC"
+ },
+ "SYP": {
+ "name": "SYP",
+ "symbol": "SYP"
+ },
+ "THB": {
+ "name": "THB",
+ "symbol": "THB"
+ },
+ "TJS": {
+ "name": "TJS",
+ "symbol": "TJS"
+ },
+ "TMT": {
+ "name": "TMT",
+ "symbol": "TMT"
+ },
+ "TOP": {
+ "name": "TOP",
+ "symbol": "TOP"
+ },
+ "TRY": {
+ "name": "TRY",
+ "symbol": "TRY"
+ },
+ "TTD": {
+ "name": "TTD",
+ "symbol": "TTD"
+ },
+ "TWD": {
+ "name": "TWD",
+ "symbol": "NT$"
+ },
+ "UAH": {
+ "name": "UAH",
+ "symbol": "UAH"
+ },
+ "MRO": {
+ "name": "Ugwiya ya Moritania",
+ "symbol": "MRO"
+ },
+ "UYU": {
+ "name": "UYU",
+ "symbol": "UYU"
+ },
+ "UZS": {
+ "name": "UZS",
+ "symbol": "UZS"
+ },
+ "VEF": {
+ "name": "VEF",
+ "symbol": "VEF"
+ },
+ "VND": {
+ "name": "VND",
+ "symbol": "â‚«"
+ },
+ "VUV": {
+ "name": "VUV",
+ "symbol": "VUV"
+ },
+ "WST": {
+ "name": "WST",
+ "symbol": "WST"
+ },
+ "XCD": {
+ "name": "XCD",
+ "symbol": "EC$"
+ },
+ "XPF": {
+ "name": "XPF",
+ "symbol": "CFPF"
+ },
+ "YER": {
+ "name": "YER",
+ "symbol": "YER"
+ },
+ "CNY": {
+ "name": "Yuan Renminbi ya China",
+ "symbol": "CNÂ¥"
+ },
+ "EUR": {
+ "name": "Yuro",
+ "symbol": "€"
+ },
+ "ZWL": {
+ "name": "ZWL",
+ "symbol": "ZWL"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/currency/kk.json b/library/intl/resources/currency/kk.json
new file mode 100644
index 000000000..3a2e18c7f
--- /dev/null
+++ b/library/intl/resources/currency/kk.json
@@ -0,0 +1,634 @@
+{
+ "LSL": {
+ "name": "LSL",
+ "symbol": "LSL"
+ },
+ "SVC": {
+ "name": "SVC",
+ "symbol": "SVC"
+ },
+ "ZWL": {
+ "name": "ZWL",
+ "symbol": "ZWL"
+ },
+ "AUD": {
+ "name": "ÐвÑÑ‚Ñ€Ð°Ð»Ð¸Ñ Ð´Ð¾Ð»Ð»Ð°Ñ€Ñ‹",
+ "symbol": "A$"
+ },
+ "USD": {
+ "name": "ÐҚШ доллары",
+ "symbol": "$"
+ },
+ "ALL": {
+ "name": "ÐÐ»Ð±Ð°Ð½Ð¸Ñ Ð»ÐµÐºÑ–",
+ "symbol": "ALL"
+ },
+ "DZD": {
+ "name": "Ðлжир динары",
+ "symbol": "DZD"
+ },
+ "AOA": {
+ "name": "Ðнгола кванзаÑÑ‹",
+ "symbol": "AOA"
+ },
+ "ARS": {
+ "name": "Ðргентина пеÑоÑÑ‹",
+ "symbol": "ARS"
+ },
+ "AMD": {
+ "name": "ÐÑ€Ð¼ÐµÐ½Ð¸Ñ Ð´Ñ€Ð°Ð¼Ñ‹",
+ "symbol": "AMD"
+ },
+ "AWG": {
+ "name": "Ðрубан флоринÑÑ‹",
+ "symbol": "AWG"
+ },
+ "AFN": {
+ "name": "ÐуғаныÑтан афганиі",
+ "symbol": "AFN"
+ },
+ "AZN": {
+ "name": "Әзірбайжан манаты",
+ "symbol": "AZN"
+ },
+ "SHP": {
+ "name": "Әулие Елена аралы фунты",
+ "symbol": "SHP"
+ },
+ "BSD": {
+ "name": "Багам доллары",
+ "symbol": "BSD"
+ },
+ "BDT": {
+ "name": "Бангладеш такаÑÑ‹",
+ "symbol": "BDT"
+ },
+ "BBD": {
+ "name": "Ð‘Ð°Ñ€Ð±Ð°Ð´Ð¾Ñ Ð´Ð¾Ð»Ð»Ð°Ñ€Ñ‹",
+ "symbol": "BBD"
+ },
+ "BHD": {
+ "name": "Бахрейн динары",
+ "symbol": "BHD"
+ },
+ "BYR": {
+ "name": "Ð‘ÐµÐ»Ð°Ñ€ÑƒÑ Ñ€ÑƒÐ±Ð»Ñ–",
+ "symbol": "BYR"
+ },
+ "BZD": {
+ "name": "Белиз доллары",
+ "symbol": "BZD"
+ },
+ "BMD": {
+ "name": "Бермуд доллары",
+ "symbol": "БД"
+ },
+ "BGN": {
+ "name": "Болгар леві",
+ "symbol": "BGN"
+ },
+ "BOB": {
+ "name": "Ð‘Ð¾Ð»Ð¸Ð²Ð¸Ñ Ð±Ð¾Ð»Ð¸Ð²Ð¸Ð°Ð½Ð¾ÑÑ‹",
+ "symbol": "BOB"
+ },
+ "BAM": {
+ "name": "БоÑÐ½Ð¸Ñ Ð¶Ó™Ð½Ðµ Герцеговина айырбаÑталмалы маркаÑÑ‹",
+ "symbol": "BAM"
+ },
+ "BWP": {
+ "name": "БотÑвана пулаÑÑ‹",
+ "symbol": "BWP"
+ },
+ "BRL": {
+ "name": "Ð‘Ñ€Ð°Ð·Ð¸Ð»Ð¸Ñ Ñ€ÐµÐ°Ð»Ñ‹",
+ "symbol": "R$"
+ },
+ "GBP": {
+ "name": "Ð‘Ñ€Ð¸Ñ‚Ð°Ð½Ð¸Ñ Ñ„ÑƒÐ½Ñ‚Ñ‹",
+ "symbol": "£"
+ },
+ "BND": {
+ "name": "Бруней доллары",
+ "symbol": "BND"
+ },
+ "BIF": {
+ "name": "Бурунди франкы",
+ "symbol": "BIF"
+ },
+ "BTN": {
+ "name": "Бутан нгултрумы",
+ "symbol": "BTN"
+ },
+ "VUV": {
+ "name": "Вануату ватуы",
+ "symbol": "VUV"
+ },
+ "HUF": {
+ "name": "Венгер форинты",
+ "symbol": "HUF"
+ },
+ "VEF": {
+ "name": "ВенеÑуÑла боливары",
+ "symbol": "VEF"
+ },
+ "VND": {
+ "name": "Вьетнам донгы",
+ "symbol": "â‚«"
+ },
+ "HTG": {
+ "name": "Гаити гурды",
+ "symbol": "HTG"
+ },
+ "GYD": {
+ "name": "Гайана доллары",
+ "symbol": "GYD"
+ },
+ "GMD": {
+ "name": "Ð“Ð°Ð¼Ð±Ð¸Ñ Ð´Ð°Ð»Ð°Ñиі",
+ "symbol": "GMD"
+ },
+ "GHS": {
+ "name": "Гана Ñедиі",
+ "symbol": "GHS"
+ },
+ "GTQ": {
+ "name": "Гватемала кетÑалі",
+ "symbol": "GTQ"
+ },
+ "GNF": {
+ "name": "Гвиней франкы",
+ "symbol": "GNF"
+ },
+ "GIP": {
+ "name": "Гибралтар фунты",
+ "symbol": "GIP"
+ },
+ "HNL": {
+ "name": "Ð“Ð¾Ð½Ð´ÑƒÑ€Ð°Ñ Ð»ÐµÐ¼Ð¿Ð¸Ñ€Ð°cÑ‹",
+ "symbol": "HNL"
+ },
+ "HKD": {
+ "name": "Гонконг доллары",
+ "symbol": "HK$"
+ },
+ "GEL": {
+ "name": "Ð“Ñ€ÑƒÐ·Ð¸Ñ Ð»Ð°Ñ€Ð¸Ñ–",
+ "symbol": "GEL"
+ },
+ "DKK": {
+ "name": "Дат кроны",
+ "symbol": "DKK"
+ },
+ "DJF": {
+ "name": "Джибути франкы",
+ "symbol": "DJF"
+ },
+ "AED": {
+ "name": "Дихрам (БÐЭ)",
+ "symbol": "AED"
+ },
+ "DOP": {
+ "name": "Доминикан пеÑоÑÑ‹",
+ "symbol": "DOP"
+ },
+ "EUR": {
+ "name": "Еуро",
+ "symbol": "€"
+ },
+ "NZD": {
+ "name": "Жаңа Ð—ÐµÐ»Ð°Ð½Ð´Ð¸Ñ Ð´Ð¾Ð»Ð»Ð°Ñ€Ñ‹",
+ "symbol": "NZ$"
+ },
+ "TWD": {
+ "name": "Жаңа Тайван доллары",
+ "symbol": "NT$"
+ },
+ "JPY": {
+ "name": "Жапон иені",
+ "symbol": "JPÂ¥"
+ },
+ "ZMW": {
+ "name": "Ð—Ð°Ð¼Ð±Ð¸Ñ ÐºÐ²Ð°Ñ‡Ð°ÑÑ‹",
+ "symbol": "ZMW"
+ },
+ "ILS": {
+ "name": "Израиль жаңа шекелі",
+ "symbol": "₪"
+ },
+ "IDR": {
+ "name": "Ð˜Ð½Ð´Ð¾Ð½ÐµÐ·Ð¸Ñ Ñ€ÑƒÐ¿Ð¸Ñ–",
+ "symbol": "IDR"
+ },
+ "IQD": {
+ "name": "Ирак динары",
+ "symbol": "IQD"
+ },
+ "IRR": {
+ "name": "Иран риалы",
+ "symbol": "IRR"
+ },
+ "ISK": {
+ "name": "ИÑÐ»Ð°Ð½Ð´Ð¸Ñ ÐºÑ€Ð¾Ð½Ð°ÑÑ‹",
+ "symbol": "ISK"
+ },
+ "YER": {
+ "name": "Йемен риалы",
+ "symbol": "YER"
+ },
+ "JOD": {
+ "name": "Ð™Ð¾Ñ€Ð´Ð°Ð½Ð¸Ñ Ð´Ð¸Ð½Ð°Ñ€Ñ‹",
+ "symbol": "JOD"
+ },
+ "CVE": {
+ "name": "Кабо-Верде ÑÑкудоÑÑ‹",
+ "symbol": "CVE"
+ },
+ "KYD": {
+ "name": "Кайман аралдары доллары",
+ "symbol": "KYD"
+ },
+ "KHR": {
+ "name": "Камбоджа риелі",
+ "symbol": "KHR"
+ },
+ "CAD": {
+ "name": "Канада доллары",
+ "symbol": "КД$"
+ },
+ "QAR": {
+ "name": "Катар риалы",
+ "symbol": "QAR"
+ },
+ "KES": {
+ "name": "ÐšÐµÐ½Ð¸Ñ ÑˆÐ¸Ð»Ð»Ð¸Ð½Ð³Ñ–",
+ "symbol": "KES"
+ },
+ "COP": {
+ "name": "ÐšÐ¾Ð»ÑƒÐ¼Ð±Ð¸Ñ Ð¿ÐµÑоÑÑ‹",
+ "symbol": "COP"
+ },
+ "KMF": {
+ "name": "Комор аралдары франкы",
+ "symbol": "KMF"
+ },
+ "CDF": {
+ "name": "Конго франкы",
+ "symbol": "CDF"
+ },
+ "CRC": {
+ "name": "КоÑта-рика колоны",
+ "symbol": "CRC"
+ },
+ "CUC": {
+ "name": "Куба айырбаÑталмалы пеÑоÑÑ‹",
+ "symbol": "CUC"
+ },
+ "CUP": {
+ "name": "Куба пеÑоÑÑ‹",
+ "symbol": "CUP"
+ },
+ "KWD": {
+ "name": "Кувейт динары",
+ "symbol": "KWD"
+ },
+ "XAF": {
+ "name": "КФРВЕÐС франкы",
+ "symbol": "FCFA"
+ },
+ "XOF": {
+ "name": "КФРВСЕÐО франкы",
+ "symbol": "CFA"
+ },
+ "XPF": {
+ "name": "КФП франкы",
+ "symbol": "CFPF"
+ },
+ "KZT": {
+ "name": "ҚазақÑтан теңгеÑÑ–",
+ "symbol": "₸"
+ },
+ "KGS": {
+ "name": "ҚырғызÑтан Ñомы",
+ "symbol": "KGS"
+ },
+ "CNY": {
+ "name": "Қытай юаны",
+ "symbol": "CNÂ¥"
+ },
+ "LAK": {
+ "name": "Ð›Ð°Ð¾Ñ ÐºÐ¸Ð¿Ñ–",
+ "symbol": "LAK"
+ },
+ "LRD": {
+ "name": "Ð›Ð¸Ð±ÐµÑ€Ð¸Ñ Ð´Ð¾Ð»Ð»Ð°Ñ€Ñ‹",
+ "symbol": "LRD"
+ },
+ "LBP": {
+ "name": "Ливан фунты",
+ "symbol": "LBP"
+ },
+ "LYD": {
+ "name": "Ð›Ð¸Ð²Ð¸Ñ Ð´Ð¸Ð½Ð°Ñ€Ñ‹",
+ "symbol": "LYD"
+ },
+ "LTL": {
+ "name": "Литва литы",
+ "symbol": "LTL"
+ },
+ "MUR": {
+ "name": "Маврикий рупиÑÑÑ‹",
+ "symbol": "MUR"
+ },
+ "MRO": {
+ "name": "ÐœÐ°Ð²Ñ€Ð¸Ñ‚Ð°Ð½Ð¸Ñ ÑƒÐ³Ð¸ÑÑÑ‹",
+ "symbol": "MRO"
+ },
+ "MOP": {
+ "name": "Макао патакаÑÑ‹",
+ "symbol": "MOP"
+ },
+ "MKD": {
+ "name": "ÐœÐ°ÐºÐµÐ´Ð¾Ð½Ð¸Ñ Ð´Ð¸Ð½Ð°Ñ€Ñ‹",
+ "symbol": "MKD"
+ },
+ "MWK": {
+ "name": "Малави квачаÑÑ‹",
+ "symbol": "MWK"
+ },
+ "MGA": {
+ "name": "МалагаÑи ариариы",
+ "symbol": "MGA"
+ },
+ "MYR": {
+ "name": "ÐœÐ°Ð»Ð°Ð¹Ð·Ð¸Ñ Ñ€Ð¸Ð½Ð³Ð³Ð¸Ñ‚Ñ–",
+ "symbol": "MYR"
+ },
+ "MVR": {
+ "name": "Мальдив руфиÑÑÑ‹",
+ "symbol": "MVR"
+ },
+ "MAD": {
+ "name": "Марокко дирхамы",
+ "symbol": "MAD"
+ },
+ "MXN": {
+ "name": "МекÑика пеÑÑоÑÑ‹",
+ "symbol": "MX$"
+ },
+ "MZN": {
+ "name": "Мозамбик метикалы",
+ "symbol": "MZN"
+ },
+ "MDL": {
+ "name": "Молдава лейі",
+ "symbol": "MDL"
+ },
+ "MNT": {
+ "name": "ÐœÐ¾Ò£Ò“Ð¾Ð»Ð¸Ñ Ñ‚ÑƒÐ³Ñ€Ð¸ÐºÐ°ÑÑ‹",
+ "symbol": "MNT"
+ },
+ "EGP": {
+ "name": "МыÑÑ‹Ñ€ фунты",
+ "symbol": "EGP"
+ },
+ "MMK": {
+ "name": "МьÑнма кьÑÑ‚Ñ‹",
+ "symbol": "MMK"
+ },
+ "NAD": {
+ "name": "ÐÐ°Ð¼Ð¸Ð±Ð¸Ñ Ð´Ð¾Ð»Ð»Ð°Ñ€Ñ‹",
+ "symbol": "NAD"
+ },
+ "NPR": {
+ "name": "Ðепал рупиі",
+ "symbol": "NPR"
+ },
+ "NGN": {
+ "name": "ÐÐ¸Ð³ÐµÑ€Ð¸Ñ Ð½Ð°Ð¹Ñ€Ð°ÑÑ‹",
+ "symbol": "NGN"
+ },
+ "ANG": {
+ "name": "Ðидерланд антиль гульдені",
+ "symbol": "ANG"
+ },
+ "NIO": {
+ "name": "Ðикарагуа кордобаÑÑ‹",
+ "symbol": "NIO"
+ },
+ "NOK": {
+ "name": "ÐÐ¾Ñ€Ð²ÐµÐ³Ð¸Ñ ÐºÑ€Ð¾Ð½Ñ‹",
+ "symbol": "NOK"
+ },
+ "OMR": {
+ "name": "Оман риалы",
+ "symbol": "OMR"
+ },
+ "ZAR": {
+ "name": "ОңтүÑтік Ðфрика Ñ€Ñнді",
+ "symbol": "ZAR"
+ },
+ "KRW": {
+ "name": "ОңтүÑтік ÐšÐ¾Ñ€ÐµÑ Ð²Ð¾Ð½Ñ‹",
+ "symbol": "â‚©"
+ },
+ "SSP": {
+ "name": "ОңтүÑтік Судан фунты",
+ "symbol": "SSP"
+ },
+ "UZS": {
+ "name": "ӨзбекÑтан Ñомы",
+ "symbol": "UZS"
+ },
+ "PAB": {
+ "name": "Панама бальбоаÑÑ‹",
+ "symbol": "PAB"
+ },
+ "PGK": {
+ "name": "Папуа - Жаңа Ð“Ð²Ð¸Ð½ÐµÑ ÐºÐ¸Ð½Ð°ÑÑ‹",
+ "symbol": "PGK"
+ },
+ "PYG": {
+ "name": "Парагвай гуараниі",
+ "symbol": "PYG"
+ },
+ "PKR": {
+ "name": "ПәкіÑтан рупиі",
+ "symbol": "PKR"
+ },
+ "PEN": {
+ "name": "Перу жаңа Ñолі",
+ "symbol": "PEN"
+ },
+ "PLN": {
+ "name": "Польша злотаÑÑ‹",
+ "symbol": "PLN"
+ },
+ "RUB": {
+ "name": "РеÑей рубль",
+ "symbol": "руб."
+ },
+ "RWF": {
+ "name": "Руанда франкы",
+ "symbol": "RWF"
+ },
+ "RON": {
+ "name": "Ð ÑƒÐ¼Ñ‹Ð½Ð¸Ñ Ð»ÐµÐ¹Ñ–",
+ "symbol": "RON"
+ },
+ "WST": {
+ "name": "Самоа талаÑÑ‹",
+ "symbol": "WST"
+ },
+ "STD": {
+ "name": "Сант-Томе мен ПринÑипи добраÑÑ‹",
+ "symbol": "STD"
+ },
+ "SAR": {
+ "name": "Сауд ÐÑ€Ð°Ð±Ð¸Ñ Ñ€Ð¸Ð°Ð»Ñ‹",
+ "symbol": "SAR"
+ },
+ "SZL": {
+ "name": "Свазиленд лилангениі",
+ "symbol": "SZL"
+ },
+ "SCR": {
+ "name": "Сейшель рупиÑÑÑ‹",
+ "symbol": "SCR"
+ },
+ "RSD": {
+ "name": "Ð¡ÐµÑ€Ð±Ð¸Ñ Ð´Ð¸Ð½Ð°Ñ€Ñ‹",
+ "symbol": "RSD"
+ },
+ "SGD": {
+ "name": "Сингапур доллары",
+ "symbol": "SGD"
+ },
+ "SYP": {
+ "name": "Ð¡Ð¸Ñ€Ð¸Ñ Ñ„ÑƒÐ½Ñ‚Ñ‹",
+ "symbol": "SYP"
+ },
+ "SBD": {
+ "name": "Соломон аралдары доллары",
+ "symbol": "SBD"
+ },
+ "KPW": {
+ "name": "СолтүÑтік ÐšÐ¾Ñ€ÐµÑ Ð²Ð¾Ð½Ñ‹",
+ "symbol": "KPW"
+ },
+ "SOS": {
+ "name": "Сомали шиллингі",
+ "symbol": "SOS"
+ },
+ "SDG": {
+ "name": "Судан фунты",
+ "symbol": "SDG"
+ },
+ "SRD": {
+ "name": "Суринам доллары",
+ "symbol": "SRD"
+ },
+ "SLL": {
+ "name": "Сьерра-Леоне леонеÑÑ‹",
+ "symbol": "SLL"
+ },
+ "THB": {
+ "name": "Тай баты",
+ "symbol": "฿"
+ },
+ "TZS": {
+ "name": "Ð¢Ð°Ð½Ð·Ð°Ð½Ð¸Ñ ÑˆÐ¸Ð»Ð»Ð¸Ð½Ð³Ñ–",
+ "symbol": "TZS"
+ },
+ "TJS": {
+ "name": "ТәжікÑтан Ñомониі",
+ "symbol": "TJS"
+ },
+ "TOP": {
+ "name": "Тонга паангаÑÑ‹",
+ "symbol": "TOP"
+ },
+ "TTD": {
+ "name": "Тринидад пен Тобаго доллары",
+ "symbol": "TTD"
+ },
+ "TND": {
+ "name": "Ð¢ÑƒÐ½Ð¸Ñ Ð´Ð¸Ð½Ð°Ñ€Ñ‹",
+ "symbol": "TND"
+ },
+ "TRY": {
+ "name": "Түрік лираÑÑ‹",
+ "symbol": "TRY"
+ },
+ "TMT": {
+ "name": "ТүрікменÑтан манаты",
+ "symbol": "TMT"
+ },
+ "UGX": {
+ "name": "Уганда шиллингі",
+ "symbol": "UGX"
+ },
+ "UAH": {
+ "name": "Украина гривнаÑÑ‹",
+ "symbol": "UAH"
+ },
+ "UYU": {
+ "name": "Уругвай пеÑоÑÑ‹",
+ "symbol": "UYU"
+ },
+ "INR": {
+ "name": "Үнді рупиÑÑÑ‹",
+ "symbol": "₹"
+ },
+ "FJD": {
+ "name": "Фиджи доллары",
+ "symbol": "FJD"
+ },
+ "PHP": {
+ "name": "Филиппин пеÑоÑÑ‹",
+ "symbol": "PHP"
+ },
+ "FKP": {
+ "name": "Фолкленд аралдарының фунты",
+ "symbol": "FKP"
+ },
+ "HRK": {
+ "name": "Ð¥Ð¾Ñ€Ð²Ð°Ñ‚Ð¸Ñ ÐºÑƒÐ½Ð°ÑÑ‹",
+ "symbol": "HRK"
+ },
+ "CZK": {
+ "name": "Чех кронаÑÑ‹",
+ "symbol": "CZK"
+ },
+ "CLP": {
+ "name": "Чили пеÑоÑÑ‹",
+ "symbol": "CLP"
+ },
+ "SEK": {
+ "name": "Швед кроны",
+ "symbol": "SEK"
+ },
+ "CHF": {
+ "name": "Ð¨Ð²ÐµÐ¹Ñ†Ð°Ñ€Ð¸Ñ Ñ„Ñ€Ð°Ð½ÐºÑ‹",
+ "symbol": "CHF"
+ },
+ "LKR": {
+ "name": "Шри-Ланка рупиÑÑÑ‹",
+ "symbol": "LKR"
+ },
+ "XCD": {
+ "name": "Ð¨Ñ‹Ò“Ñ‹Ñ ÐšÐ°Ñ€Ð¸Ð± доллары",
+ "symbol": "EC$"
+ },
+ "ERN": {
+ "name": "Эритрей накфаÑÑ‹",
+ "symbol": "ERN"
+ },
+ "ETB": {
+ "name": "Ð­Ñ„Ð¸Ð¾Ð¿Ð¸Ñ Ð±Ñ‹Ñ€Ñ‹",
+ "symbol": "ETB"
+ },
+ "JMD": {
+ "name": "Ямайка доллары",
+ "symbol": "JMD"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/currency/kl.json b/library/intl/resources/currency/kl.json
new file mode 100644
index 000000000..203a4485e
--- /dev/null
+++ b/library/intl/resources/currency/kl.json
@@ -0,0 +1,634 @@
+{
+ "AED": {
+ "name": "AED",
+ "symbol": "AED"
+ },
+ "AFN": {
+ "name": "AFN",
+ "symbol": "AFN"
+ },
+ "ALL": {
+ "name": "ALL",
+ "symbol": "ALL"
+ },
+ "AMD": {
+ "name": "AMD",
+ "symbol": "AMD"
+ },
+ "ANG": {
+ "name": "ANG",
+ "symbol": "ANG"
+ },
+ "AOA": {
+ "name": "AOA",
+ "symbol": "AOA"
+ },
+ "ARS": {
+ "name": "ARS",
+ "symbol": "ARS"
+ },
+ "AUD": {
+ "name": "AUD",
+ "symbol": "A$"
+ },
+ "AWG": {
+ "name": "AWG",
+ "symbol": "AWG"
+ },
+ "AZN": {
+ "name": "AZN",
+ "symbol": "AZN"
+ },
+ "BAM": {
+ "name": "BAM",
+ "symbol": "BAM"
+ },
+ "BBD": {
+ "name": "BBD",
+ "symbol": "BBD"
+ },
+ "BDT": {
+ "name": "BDT",
+ "symbol": "BDT"
+ },
+ "BGN": {
+ "name": "BGN",
+ "symbol": "BGN"
+ },
+ "BHD": {
+ "name": "BHD",
+ "symbol": "BHD"
+ },
+ "BIF": {
+ "name": "BIF",
+ "symbol": "BIF"
+ },
+ "BMD": {
+ "name": "BMD",
+ "symbol": "BMD"
+ },
+ "BND": {
+ "name": "BND",
+ "symbol": "BND"
+ },
+ "BOB": {
+ "name": "BOB",
+ "symbol": "BOB"
+ },
+ "BRL": {
+ "name": "BRL",
+ "symbol": "R$"
+ },
+ "BSD": {
+ "name": "BSD",
+ "symbol": "BSD"
+ },
+ "BTN": {
+ "name": "BTN",
+ "symbol": "BTN"
+ },
+ "BWP": {
+ "name": "BWP",
+ "symbol": "BWP"
+ },
+ "BYR": {
+ "name": "BYR",
+ "symbol": "BYR"
+ },
+ "BZD": {
+ "name": "BZD",
+ "symbol": "BZD"
+ },
+ "CAD": {
+ "name": "CAD",
+ "symbol": "CA$"
+ },
+ "CDF": {
+ "name": "CDF",
+ "symbol": "CDF"
+ },
+ "CHF": {
+ "name": "CHF",
+ "symbol": "CHF"
+ },
+ "CLP": {
+ "name": "CLP",
+ "symbol": "CLP"
+ },
+ "CNY": {
+ "name": "CNY",
+ "symbol": "CNÂ¥"
+ },
+ "COP": {
+ "name": "COP",
+ "symbol": "COP"
+ },
+ "CRC": {
+ "name": "CRC",
+ "symbol": "CRC"
+ },
+ "CUC": {
+ "name": "CUC",
+ "symbol": "CUC"
+ },
+ "CUP": {
+ "name": "CUP",
+ "symbol": "CUP"
+ },
+ "CVE": {
+ "name": "CVE",
+ "symbol": "CVE"
+ },
+ "CZK": {
+ "name": "CZK",
+ "symbol": "CZK"
+ },
+ "DKK": {
+ "name": "danmarkimut koruuni",
+ "symbol": "kr."
+ },
+ "DJF": {
+ "name": "DJF",
+ "symbol": "DJF"
+ },
+ "DOP": {
+ "name": "DOP",
+ "symbol": "DOP"
+ },
+ "DZD": {
+ "name": "DZD",
+ "symbol": "DZD"
+ },
+ "EGP": {
+ "name": "EGP",
+ "symbol": "EGP"
+ },
+ "ERN": {
+ "name": "ERN",
+ "symbol": "ERN"
+ },
+ "ETB": {
+ "name": "ETB",
+ "symbol": "ETB"
+ },
+ "EUR": {
+ "name": "euro",
+ "symbol": "€"
+ },
+ "FJD": {
+ "name": "FJD",
+ "symbol": "FJD"
+ },
+ "FKP": {
+ "name": "FKP",
+ "symbol": "FKP"
+ },
+ "GBP": {
+ "name": "GBP",
+ "symbol": "£"
+ },
+ "GEL": {
+ "name": "GEL",
+ "symbol": "GEL"
+ },
+ "GHS": {
+ "name": "GHS",
+ "symbol": "GHS"
+ },
+ "GIP": {
+ "name": "GIP",
+ "symbol": "GIP"
+ },
+ "GMD": {
+ "name": "GMD",
+ "symbol": "GMD"
+ },
+ "GNF": {
+ "name": "GNF",
+ "symbol": "GNF"
+ },
+ "GTQ": {
+ "name": "GTQ",
+ "symbol": "GTQ"
+ },
+ "GYD": {
+ "name": "GYD",
+ "symbol": "GYD"
+ },
+ "HKD": {
+ "name": "HKD",
+ "symbol": "HK$"
+ },
+ "HNL": {
+ "name": "HNL",
+ "symbol": "HNL"
+ },
+ "HRK": {
+ "name": "HRK",
+ "symbol": "HRK"
+ },
+ "HTG": {
+ "name": "HTG",
+ "symbol": "HTG"
+ },
+ "HUF": {
+ "name": "HUF",
+ "symbol": "HUF"
+ },
+ "IDR": {
+ "name": "IDR",
+ "symbol": "IDR"
+ },
+ "ILS": {
+ "name": "ILS",
+ "symbol": "₪"
+ },
+ "INR": {
+ "name": "INR",
+ "symbol": "₹"
+ },
+ "IQD": {
+ "name": "IQD",
+ "symbol": "IQD"
+ },
+ "IRR": {
+ "name": "IRR",
+ "symbol": "IRR"
+ },
+ "ISK": {
+ "name": "ISK",
+ "symbol": "ISK"
+ },
+ "JMD": {
+ "name": "JMD",
+ "symbol": "JMD"
+ },
+ "JOD": {
+ "name": "JOD",
+ "symbol": "JOD"
+ },
+ "JPY": {
+ "name": "JPY",
+ "symbol": "JPÂ¥"
+ },
+ "KES": {
+ "name": "KES",
+ "symbol": "KES"
+ },
+ "KGS": {
+ "name": "KGS",
+ "symbol": "KGS"
+ },
+ "KHR": {
+ "name": "KHR",
+ "symbol": "KHR"
+ },
+ "KMF": {
+ "name": "KMF",
+ "symbol": "KMF"
+ },
+ "KPW": {
+ "name": "KPW",
+ "symbol": "KPW"
+ },
+ "KRW": {
+ "name": "KRW",
+ "symbol": "â‚©"
+ },
+ "KWD": {
+ "name": "KWD",
+ "symbol": "KWD"
+ },
+ "KYD": {
+ "name": "KYD",
+ "symbol": "KYD"
+ },
+ "KZT": {
+ "name": "KZT",
+ "symbol": "KZT"
+ },
+ "LAK": {
+ "name": "LAK",
+ "symbol": "LAK"
+ },
+ "LBP": {
+ "name": "LBP",
+ "symbol": "LBP"
+ },
+ "LKR": {
+ "name": "LKR",
+ "symbol": "LKR"
+ },
+ "LRD": {
+ "name": "LRD",
+ "symbol": "LRD"
+ },
+ "LSL": {
+ "name": "LSL",
+ "symbol": "LSL"
+ },
+ "LTL": {
+ "name": "LTL",
+ "symbol": "LTL"
+ },
+ "LYD": {
+ "name": "LYD",
+ "symbol": "LYD"
+ },
+ "MAD": {
+ "name": "MAD",
+ "symbol": "MAD"
+ },
+ "MDL": {
+ "name": "MDL",
+ "symbol": "MDL"
+ },
+ "MGA": {
+ "name": "MGA",
+ "symbol": "MGA"
+ },
+ "MKD": {
+ "name": "MKD",
+ "symbol": "MKD"
+ },
+ "MMK": {
+ "name": "MMK",
+ "symbol": "MMK"
+ },
+ "MNT": {
+ "name": "MNT",
+ "symbol": "MNT"
+ },
+ "MOP": {
+ "name": "MOP",
+ "symbol": "MOP"
+ },
+ "MRO": {
+ "name": "MRO",
+ "symbol": "MRO"
+ },
+ "MUR": {
+ "name": "MUR",
+ "symbol": "MUR"
+ },
+ "MVR": {
+ "name": "MVR",
+ "symbol": "MVR"
+ },
+ "MWK": {
+ "name": "MWK",
+ "symbol": "MWK"
+ },
+ "MXN": {
+ "name": "MXN",
+ "symbol": "MX$"
+ },
+ "MYR": {
+ "name": "MYR",
+ "symbol": "MYR"
+ },
+ "MZN": {
+ "name": "MZN",
+ "symbol": "MZN"
+ },
+ "NAD": {
+ "name": "NAD",
+ "symbol": "NAD"
+ },
+ "NGN": {
+ "name": "NGN",
+ "symbol": "NGN"
+ },
+ "NIO": {
+ "name": "NIO",
+ "symbol": "NIO"
+ },
+ "NOK": {
+ "name": "norskit koruuni",
+ "symbol": "Nkr"
+ },
+ "NPR": {
+ "name": "NPR",
+ "symbol": "NPR"
+ },
+ "NZD": {
+ "name": "NZD",
+ "symbol": "NZ$"
+ },
+ "OMR": {
+ "name": "OMR",
+ "symbol": "OMR"
+ },
+ "PAB": {
+ "name": "PAB",
+ "symbol": "PAB"
+ },
+ "PEN": {
+ "name": "PEN",
+ "symbol": "PEN"
+ },
+ "PGK": {
+ "name": "PGK",
+ "symbol": "PGK"
+ },
+ "PHP": {
+ "name": "PHP",
+ "symbol": "PHP"
+ },
+ "PKR": {
+ "name": "PKR",
+ "symbol": "PKR"
+ },
+ "PLN": {
+ "name": "PLN",
+ "symbol": "PLN"
+ },
+ "PYG": {
+ "name": "PYG",
+ "symbol": "PYG"
+ },
+ "QAR": {
+ "name": "QAR",
+ "symbol": "QAR"
+ },
+ "RON": {
+ "name": "RON",
+ "symbol": "RON"
+ },
+ "RSD": {
+ "name": "RSD",
+ "symbol": "RSD"
+ },
+ "RUB": {
+ "name": "RUB",
+ "symbol": "RUB"
+ },
+ "RWF": {
+ "name": "RWF",
+ "symbol": "RWF"
+ },
+ "SAR": {
+ "name": "SAR",
+ "symbol": "SAR"
+ },
+ "SBD": {
+ "name": "SBD",
+ "symbol": "SBD"
+ },
+ "SCR": {
+ "name": "SCR",
+ "symbol": "SCR"
+ },
+ "SDG": {
+ "name": "SDG",
+ "symbol": "SDG"
+ },
+ "SGD": {
+ "name": "SGD",
+ "symbol": "SGD"
+ },
+ "SHP": {
+ "name": "SHP",
+ "symbol": "SHP"
+ },
+ "SLL": {
+ "name": "SLL",
+ "symbol": "SLL"
+ },
+ "SOS": {
+ "name": "SOS",
+ "symbol": "SOS"
+ },
+ "SRD": {
+ "name": "SRD",
+ "symbol": "SRD"
+ },
+ "SSP": {
+ "name": "SSP",
+ "symbol": "SSP"
+ },
+ "STD": {
+ "name": "STD",
+ "symbol": "STD"
+ },
+ "SVC": {
+ "name": "SVC",
+ "symbol": "SVC"
+ },
+ "SEK": {
+ "name": "svenskit koruuni",
+ "symbol": "Skr"
+ },
+ "SYP": {
+ "name": "SYP",
+ "symbol": "SYP"
+ },
+ "SZL": {
+ "name": "SZL",
+ "symbol": "SZL"
+ },
+ "THB": {
+ "name": "THB",
+ "symbol": "THB"
+ },
+ "TJS": {
+ "name": "TJS",
+ "symbol": "TJS"
+ },
+ "TMT": {
+ "name": "TMT",
+ "symbol": "TMT"
+ },
+ "TND": {
+ "name": "TND",
+ "symbol": "TND"
+ },
+ "TOP": {
+ "name": "TOP",
+ "symbol": "TOP"
+ },
+ "TRY": {
+ "name": "TRY",
+ "symbol": "TRY"
+ },
+ "TTD": {
+ "name": "TTD",
+ "symbol": "TTD"
+ },
+ "TWD": {
+ "name": "TWD",
+ "symbol": "NT$"
+ },
+ "TZS": {
+ "name": "TZS",
+ "symbol": "TZS"
+ },
+ "UAH": {
+ "name": "UAH",
+ "symbol": "UAH"
+ },
+ "UGX": {
+ "name": "UGX",
+ "symbol": "UGX"
+ },
+ "USD": {
+ "name": "USD",
+ "symbol": "US$"
+ },
+ "UYU": {
+ "name": "UYU",
+ "symbol": "UYU"
+ },
+ "UZS": {
+ "name": "UZS",
+ "symbol": "UZS"
+ },
+ "VEF": {
+ "name": "VEF",
+ "symbol": "VEF"
+ },
+ "VND": {
+ "name": "VND",
+ "symbol": "â‚«"
+ },
+ "VUV": {
+ "name": "VUV",
+ "symbol": "VUV"
+ },
+ "WST": {
+ "name": "WST",
+ "symbol": "WST"
+ },
+ "XAF": {
+ "name": "XAF",
+ "symbol": "FCFA"
+ },
+ "XCD": {
+ "name": "XCD",
+ "symbol": "EC$"
+ },
+ "XOF": {
+ "name": "XOF",
+ "symbol": "CFA"
+ },
+ "XPF": {
+ "name": "XPF",
+ "symbol": "CFPF"
+ },
+ "YER": {
+ "name": "YER",
+ "symbol": "YER"
+ },
+ "ZAR": {
+ "name": "ZAR",
+ "symbol": "ZAR"
+ },
+ "ZMW": {
+ "name": "ZMW",
+ "symbol": "ZMW"
+ },
+ "ZWL": {
+ "name": "ZWL",
+ "symbol": "ZWL"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/currency/kln.json b/library/intl/resources/currency/kln.json
new file mode 100644
index 000000000..f9a2db672
--- /dev/null
+++ b/library/intl/resources/currency/kln.json
@@ -0,0 +1,634 @@
+{
+ "AFN": {
+ "name": "AFN",
+ "symbol": "AFN"
+ },
+ "ALL": {
+ "name": "ALL",
+ "symbol": "ALL"
+ },
+ "AMD": {
+ "name": "AMD",
+ "symbol": "AMD"
+ },
+ "ANG": {
+ "name": "ANG",
+ "symbol": "ANG"
+ },
+ "ARS": {
+ "name": "ARS",
+ "symbol": "ARS"
+ },
+ "AWG": {
+ "name": "AWG",
+ "symbol": "AWG"
+ },
+ "AZN": {
+ "name": "AZN",
+ "symbol": "AZN"
+ },
+ "BAM": {
+ "name": "BAM",
+ "symbol": "BAM"
+ },
+ "BBD": {
+ "name": "BBD",
+ "symbol": "BBD"
+ },
+ "BDT": {
+ "name": "BDT",
+ "symbol": "BDT"
+ },
+ "BGN": {
+ "name": "BGN",
+ "symbol": "BGN"
+ },
+ "BMD": {
+ "name": "BMD",
+ "symbol": "BMD"
+ },
+ "BND": {
+ "name": "BND",
+ "symbol": "BND"
+ },
+ "BOB": {
+ "name": "BOB",
+ "symbol": "BOB"
+ },
+ "BRL": {
+ "name": "BRL",
+ "symbol": "R$"
+ },
+ "BSD": {
+ "name": "BSD",
+ "symbol": "BSD"
+ },
+ "BTN": {
+ "name": "BTN",
+ "symbol": "BTN"
+ },
+ "BYR": {
+ "name": "BYR",
+ "symbol": "BYR"
+ },
+ "BZD": {
+ "name": "BZD",
+ "symbol": "BZD"
+ },
+ "CLP": {
+ "name": "CLP",
+ "symbol": "CLP"
+ },
+ "COP": {
+ "name": "COP",
+ "symbol": "COP"
+ },
+ "CRC": {
+ "name": "CRC",
+ "symbol": "CRC"
+ },
+ "CUC": {
+ "name": "CUC",
+ "symbol": "CUC"
+ },
+ "CUP": {
+ "name": "CUP",
+ "symbol": "CUP"
+ },
+ "CZK": {
+ "name": "CZK",
+ "symbol": "CZK"
+ },
+ "DKK": {
+ "name": "DKK",
+ "symbol": "DKK"
+ },
+ "AUD": {
+ "name": "Dolaitab Australian",
+ "symbol": "A$"
+ },
+ "CAD": {
+ "name": "Dolaitab Kanada",
+ "symbol": "CA$"
+ },
+ "LRD": {
+ "name": "Dolaitab Liberia",
+ "symbol": "LRD"
+ },
+ "NAD": {
+ "name": "Dolaitab Namibia",
+ "symbol": "NAD"
+ },
+ "USD": {
+ "name": "Dolaitab ya Amareka",
+ "symbol": "US$"
+ },
+ "DOP": {
+ "name": "DOP",
+ "symbol": "DOP"
+ },
+ "FJD": {
+ "name": "FJD",
+ "symbol": "FJD"
+ },
+ "FKP": {
+ "name": "FKP",
+ "symbol": "FKP"
+ },
+ "GEL": {
+ "name": "GEL",
+ "symbol": "GEL"
+ },
+ "GHS": {
+ "name": "GHS",
+ "symbol": "GHS"
+ },
+ "GIP": {
+ "name": "GIP",
+ "symbol": "GIP"
+ },
+ "GNF": {
+ "name": "GNF",
+ "symbol": "GNF"
+ },
+ "GTQ": {
+ "name": "GTQ",
+ "symbol": "GTQ"
+ },
+ "GYD": {
+ "name": "GYD",
+ "symbol": "GYD"
+ },
+ "HKD": {
+ "name": "HKD",
+ "symbol": "HK$"
+ },
+ "HNL": {
+ "name": "HNL",
+ "symbol": "HNL"
+ },
+ "HRK": {
+ "name": "HRK",
+ "symbol": "HRK"
+ },
+ "HTG": {
+ "name": "HTG",
+ "symbol": "HTG"
+ },
+ "HUF": {
+ "name": "HUF",
+ "symbol": "HUF"
+ },
+ "IDR": {
+ "name": "IDR",
+ "symbol": "IDR"
+ },
+ "ILS": {
+ "name": "ILS",
+ "symbol": "₪"
+ },
+ "IQD": {
+ "name": "IQD",
+ "symbol": "IQD"
+ },
+ "IRR": {
+ "name": "IRR",
+ "symbol": "IRR"
+ },
+ "ISK": {
+ "name": "ISK",
+ "symbol": "ISK"
+ },
+ "JMD": {
+ "name": "JMD",
+ "symbol": "JMD"
+ },
+ "JOD": {
+ "name": "JOD",
+ "symbol": "JOD"
+ },
+ "KGS": {
+ "name": "KGS",
+ "symbol": "KGS"
+ },
+ "KHR": {
+ "name": "KHR",
+ "symbol": "KHR"
+ },
+ "KPW": {
+ "name": "KPW",
+ "symbol": "KPW"
+ },
+ "KRW": {
+ "name": "KRW",
+ "symbol": "â‚©"
+ },
+ "ZMW": {
+ "name": "Kwachaitab Zambia",
+ "symbol": "ZMW"
+ },
+ "KWD": {
+ "name": "KWD",
+ "symbol": "KWD"
+ },
+ "KYD": {
+ "name": "KYD",
+ "symbol": "KYD"
+ },
+ "KZT": {
+ "name": "KZT",
+ "symbol": "KZT"
+ },
+ "LAK": {
+ "name": "LAK",
+ "symbol": "LAK"
+ },
+ "LBP": {
+ "name": "LBP",
+ "symbol": "LBP"
+ },
+ "SLL": {
+ "name": "Leonit",
+ "symbol": "SLL"
+ },
+ "SZL": {
+ "name": "Lilangenit",
+ "symbol": "SZL"
+ },
+ "LKR": {
+ "name": "LKR",
+ "symbol": "LKR"
+ },
+ "LTL": {
+ "name": "LTL",
+ "symbol": "LTL"
+ },
+ "MDL": {
+ "name": "MDL",
+ "symbol": "MDL"
+ },
+ "MKD": {
+ "name": "MKD",
+ "symbol": "MKD"
+ },
+ "MMK": {
+ "name": "MMK",
+ "symbol": "MMK"
+ },
+ "MNT": {
+ "name": "MNT",
+ "symbol": "MNT"
+ },
+ "MOP": {
+ "name": "MOP",
+ "symbol": "MOP"
+ },
+ "MVR": {
+ "name": "MVR",
+ "symbol": "MVR"
+ },
+ "MXN": {
+ "name": "MXN",
+ "symbol": "MX$"
+ },
+ "MYR": {
+ "name": "MYR",
+ "symbol": "MYR"
+ },
+ "MZN": {
+ "name": "MZN",
+ "symbol": "MZN"
+ },
+ "NIO": {
+ "name": "NIO",
+ "symbol": "NIO"
+ },
+ "NOK": {
+ "name": "NOK",
+ "symbol": "NOK"
+ },
+ "NPR": {
+ "name": "NPR",
+ "symbol": "NPR"
+ },
+ "NZD": {
+ "name": "NZD",
+ "symbol": "NZ$"
+ },
+ "OMR": {
+ "name": "OMR",
+ "symbol": "OMR"
+ },
+ "PAB": {
+ "name": "PAB",
+ "symbol": "PAB"
+ },
+ "EGP": {
+ "name": "Pauditab Misri",
+ "symbol": "EGP"
+ },
+ "PEN": {
+ "name": "PEN",
+ "symbol": "PEN"
+ },
+ "PGK": {
+ "name": "PGK",
+ "symbol": "PGK"
+ },
+ "PHP": {
+ "name": "PHP",
+ "symbol": "PHP"
+ },
+ "PKR": {
+ "name": "PKR",
+ "symbol": "PKR"
+ },
+ "PLN": {
+ "name": "PLN",
+ "symbol": "PLN"
+ },
+ "SHP": {
+ "name": "Pouditab helena ne tilil",
+ "symbol": "SHP"
+ },
+ "SDG": {
+ "name": "Pouditab Sudan",
+ "symbol": "SDG"
+ },
+ "GBP": {
+ "name": "pounditab Uingereza",
+ "symbol": "£"
+ },
+ "PYG": {
+ "name": "PYG",
+ "symbol": "PYG"
+ },
+ "QAR": {
+ "name": "QAR",
+ "symbol": "QAR"
+ },
+ "DZD": {
+ "name": "Rabisiekab Algerian",
+ "symbol": "DZD"
+ },
+ "AOA": {
+ "name": "Rabisiekab Angolan",
+ "symbol": "AOA"
+ },
+ "BHD": {
+ "name": "Rabisiekab Bahrain",
+ "symbol": "BHD"
+ },
+ "BWP": {
+ "name": "Rabisiekab Botswana",
+ "symbol": "BWP"
+ },
+ "BIF": {
+ "name": "Rabisiekab Burundi",
+ "symbol": "BIF"
+ },
+ "XOF": {
+ "name": "Rabisiekab CFA BCEAO",
+ "symbol": "CFA"
+ },
+ "XAF": {
+ "name": "Rabisiekab CFA BEAC",
+ "symbol": "FCFA"
+ },
+ "CNY": {
+ "name": "Rabisiekab China",
+ "symbol": "CNÂ¥"
+ },
+ "CDF": {
+ "name": "Rabisiekab Congo",
+ "symbol": "CDF"
+ },
+ "ERN": {
+ "name": "Rabisiekab Eritrea",
+ "symbol": "ERN"
+ },
+ "ETB": {
+ "name": "Rabisiekab Ethiopia",
+ "symbol": "ETB"
+ },
+ "GMD": {
+ "name": "Rabisiekab Gambia",
+ "symbol": "GMD"
+ },
+ "INR": {
+ "name": "Rabisiekab India",
+ "symbol": "₹"
+ },
+ "JPY": {
+ "name": "Rabisiekab Japan",
+ "symbol": "JPÂ¥"
+ },
+ "DJF": {
+ "name": "Rabisiekab Jibuti",
+ "symbol": "DJF"
+ },
+ "CVE": {
+ "name": "Rabisiekab Kepuvede",
+ "symbol": "CVE"
+ },
+ "AED": {
+ "name": "Rabisiekab Kibagegeitab arabuk",
+ "symbol": "AED"
+ },
+ "KMF": {
+ "name": "Rabisiekab Komoro",
+ "symbol": "KMF"
+ },
+ "LSL": {
+ "name": "Rabisiekab Lesoto",
+ "symbol": "LSL"
+ },
+ "LYD": {
+ "name": "Rabisiekab Libya",
+ "symbol": "LYD"
+ },
+ "MGA": {
+ "name": "Rabisiekab Malagasy",
+ "symbol": "MGA"
+ },
+ "MRO": {
+ "name": "Rabisiekab Mauritania",
+ "symbol": "MRO"
+ },
+ "MUR": {
+ "name": "Rabisiekab Mauritius",
+ "symbol": "MUR"
+ },
+ "MAD": {
+ "name": "Rabisiekab Moroccan",
+ "symbol": "MAD"
+ },
+ "NGN": {
+ "name": "Rabisiekab Nigeria",
+ "symbol": "NGN"
+ },
+ "RWF": {
+ "name": "Rabisiekab Rwanda",
+ "symbol": "RWF"
+ },
+ "STD": {
+ "name": "Rabisiekab Sao Tome ak Principe",
+ "symbol": "STD"
+ },
+ "SAR": {
+ "name": "Rabisiekab Saudia",
+ "symbol": "SAR"
+ },
+ "SCR": {
+ "name": "Rabisiekab Shelisheli",
+ "symbol": "SCR"
+ },
+ "CHF": {
+ "name": "Rabisiekab Swiss",
+ "symbol": "CHF"
+ },
+ "TND": {
+ "name": "RabisiekabTunisia",
+ "symbol": "TND"
+ },
+ "MWK": {
+ "name": "Rabisiekaby Malawi",
+ "symbol": "MWK"
+ },
+ "ZAR": {
+ "name": "Randitab Afrika nebo murot tai",
+ "symbol": "ZAR"
+ },
+ "RON": {
+ "name": "RON",
+ "symbol": "RON"
+ },
+ "RSD": {
+ "name": "RSD",
+ "symbol": "RSD"
+ },
+ "RUB": {
+ "name": "RUB",
+ "symbol": "RUB"
+ },
+ "SBD": {
+ "name": "SBD",
+ "symbol": "SBD"
+ },
+ "SEK": {
+ "name": "SEK",
+ "symbol": "SEK"
+ },
+ "SGD": {
+ "name": "SGD",
+ "symbol": "SGD"
+ },
+ "SOS": {
+ "name": "siligitab Somalia",
+ "symbol": "SOS"
+ },
+ "TZS": {
+ "name": "silingitab Tanzania",
+ "symbol": "TZS"
+ },
+ "UGX": {
+ "name": "Silingitab Uganda",
+ "symbol": "UGX"
+ },
+ "KES": {
+ "name": "Silingitab ya Kenya",
+ "symbol": "Ksh"
+ },
+ "SRD": {
+ "name": "SRD",
+ "symbol": "SRD"
+ },
+ "SSP": {
+ "name": "SSP",
+ "symbol": "SSP"
+ },
+ "SVC": {
+ "name": "SVC",
+ "symbol": "SVC"
+ },
+ "SYP": {
+ "name": "SYP",
+ "symbol": "SYP"
+ },
+ "THB": {
+ "name": "THB",
+ "symbol": "THB"
+ },
+ "TJS": {
+ "name": "TJS",
+ "symbol": "TJS"
+ },
+ "TMT": {
+ "name": "TMT",
+ "symbol": "TMT"
+ },
+ "TOP": {
+ "name": "TOP",
+ "symbol": "TOP"
+ },
+ "TRY": {
+ "name": "TRY",
+ "symbol": "TRY"
+ },
+ "TTD": {
+ "name": "TTD",
+ "symbol": "TTD"
+ },
+ "TWD": {
+ "name": "TWD",
+ "symbol": "NT$"
+ },
+ "UAH": {
+ "name": "UAH",
+ "symbol": "UAH"
+ },
+ "UYU": {
+ "name": "UYU",
+ "symbol": "UYU"
+ },
+ "UZS": {
+ "name": "UZS",
+ "symbol": "UZS"
+ },
+ "VEF": {
+ "name": "VEF",
+ "symbol": "VEF"
+ },
+ "VND": {
+ "name": "VND",
+ "symbol": "â‚«"
+ },
+ "VUV": {
+ "name": "VUV",
+ "symbol": "VUV"
+ },
+ "WST": {
+ "name": "WST",
+ "symbol": "WST"
+ },
+ "XCD": {
+ "name": "XCD",
+ "symbol": "EC$"
+ },
+ "XPF": {
+ "name": "XPF",
+ "symbol": "CFPF"
+ },
+ "YER": {
+ "name": "YER",
+ "symbol": "YER"
+ },
+ "EUR": {
+ "name": "Yuroit",
+ "symbol": "€"
+ },
+ "ZWL": {
+ "name": "ZWL",
+ "symbol": "ZWL"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/currency/km.json b/library/intl/resources/currency/km.json
new file mode 100644
index 000000000..037654774
--- /dev/null
+++ b/library/intl/resources/currency/km.json
@@ -0,0 +1,634 @@
+{
+ "LSL": {
+ "name": "LSL",
+ "symbol": "LSL"
+ },
+ "SVC": {
+ "name": "SVC",
+ "symbol": "SVC"
+ },
+ "ZWL": {
+ "name": "ZWL",
+ "symbol": "ZWL"
+ },
+ "CZK": {
+ "name": "កូរុណា​សាធារណៈ​ឆáŸáž€",
+ "symbol": "CZK"
+ },
+ "CRC": {
+ "name": "កូឡុង​កូស្ážáž¶ážšáž¸áž€áž¶",
+ "symbol": "CRC"
+ },
+ "SEK": {
+ "name": "ក្រូណា​ស៊ុយអែáž",
+ "symbol": "SEK"
+ },
+ "ISK": {
+ "name": "ក្រូណា​អ៊ីស្លង់",
+ "symbol": "ISK"
+ },
+ "DKK": {
+ "name": "ក្រូណáŸâ€‹ážŠáž¶ážŽáž¶áž˜áŸ‰áž¶áž€áŸ‹",
+ "symbol": "DKK"
+ },
+ "NOK": {
+ "name": "ក្រូណáŸâ€‹áž“áŸážšážœáŸ‰áŸ",
+ "symbol": "NOK"
+ },
+ "MWK": {
+ "name": "ក្វាចា​ម៉ាឡាវី",
+ "symbol": "MWK"
+ },
+ "ZMW": {
+ "name": "ក្វាចា​សំប៊ី",
+ "symbol": "ZMW"
+ },
+ "AOA": {
+ "name": "ក្វាន់ហ្សា​អង់ហ្គោឡា",
+ "symbol": "AOA"
+ },
+ "NIO": {
+ "name": "ážážŒáž¼áž”ា​នីការ៉ាហ្គា",
+ "symbol": "NIO"
+ },
+ "PGK": {
+ "name": "គីណា​ប៉ាពូនូហ្គីណáŸ",
+ "symbol": "PGK"
+ },
+ "LAK": {
+ "name": "គីប​ឡាវ",
+ "symbol": "LAK"
+ },
+ "MMK": {
+ "name": "គីយ៉ាážâ€‹áž—ូមា",
+ "symbol": "MMK"
+ },
+ "HRK": {
+ "name": "គូណា​ក្រូអាáž",
+ "symbol": "HRK"
+ },
+ "HTG": {
+ "name": "គោឌី​ហៃទី",
+ "symbol": "HTG"
+ },
+ "BTN": {
+ "name": "ញូលážáŸ’រឹម​ប៊ូážáž„់",
+ "symbol": "BTN"
+ },
+ "PEN": {
+ "name": "ញូវ៉ូសូល​ប៉áŸážšáž¼",
+ "symbol": "PEN"
+ },
+ "GMD": {
+ "name": "ដាឡាស៊ី​ហ្គំប៊ី",
+ "symbol": "GMD"
+ },
+ "VND": {
+ "name": "ដុង​វៀážážŽáž¶áž˜",
+ "symbol": "â‚«"
+ },
+ "CAD": {
+ "name": "ដុល្លារ​កាណាដា",
+ "symbol": "CA$"
+ },
+ "XCD": {
+ "name": "ដុល្លារ​ការ៉ាប៊ីន​ážáž¶áž„​កើáž",
+ "symbol": "EC$"
+ },
+ "KYD": {
+ "name": "ដុល្លារ​កោះ​កៃម៉ែន",
+ "symbol": "KYD"
+ },
+ "SBD": {
+ "name": "ដុល្លារ​កោះ​សូឡូម៉ុង",
+ "symbol": "SBD"
+ },
+ "NAD": {
+ "name": "ដុល្លារ​ណាមីប៊ី",
+ "symbol": "NAD"
+ },
+ "TWD": {
+ "name": "ដុល្លារ​ážáŸƒážœáŸ‰áž¶áž“់",
+ "symbol": "NT$"
+ },
+ "TTD": {
+ "name": "ដុល្លារ​ទ្រីនីដាដ áž“áž·áž„ážáž¼áž”ាហ្គោ",
+ "symbol": "TTD"
+ },
+ "NZD": {
+ "name": "ដុល្លារ​នូវែលសáŸáž¡áž„់",
+ "symbol": "NZ$"
+ },
+ "BBD": {
+ "name": "ដុល្លារ​បាបាដុស",
+ "symbol": "BBD"
+ },
+ "BSD": {
+ "name": "ដុល្លារ​បាហាម៉ា",
+ "symbol": "BSD"
+ },
+ "BMD": {
+ "name": "ដុល្លារ​ប៊ឺមុយដា",
+ "symbol": "BMD"
+ },
+ "BZD": {
+ "name": "ដុល្លារ​បáŸáž›áž¸",
+ "symbol": "BZD"
+ },
+ "BND": {
+ "name": "ដុល្លារ​ប្រុយណáŸ",
+ "symbol": "BND"
+ },
+ "LRD": {
+ "name": "ដុល្លារ​លីប៊ី",
+ "symbol": "LRD"
+ },
+ "SGD": {
+ "name": "ដុល្លារ​​សិង្ហបូរី",
+ "symbol": "SGD"
+ },
+ "SRD": {
+ "name": "ដុល្លារ​សូរីណាម",
+ "symbol": "SRD"
+ },
+ "HKD": {
+ "name": "ដុល្លារ​ហុងកុង",
+ "symbol": "HK$"
+ },
+ "GYD": {
+ "name": "ដុល្លារ​ហ្គីយ៉ាន",
+ "symbol": "GYD"
+ },
+ "FJD": {
+ "name": "ដុល្លារ​ហ្វីជី",
+ "symbol": "FJD"
+ },
+ "JMD": {
+ "name": "ដុល្លារ​ហ្សាម៉ាអ៊ីក",
+ "symbol": "JMD"
+ },
+ "USD": {
+ "name": "ដុល្លារ​អាមáŸážšáž·áž€",
+ "symbol": "$"
+ },
+ "AUD": {
+ "name": "ដុល្លារ​អូស្ážáŸ’រាលី",
+ "symbol": "A$"
+ },
+ "AMD": {
+ "name": "ដ្រាំ​អាមáŸáž“ី",
+ "symbol": "AMD"
+ },
+ "KWD": {
+ "name": "ឌីណា​គុយវ៉ែáž",
+ "symbol": "KWD"
+ },
+ "TND": {
+ "name": "ឌីណា​ទុយនីស៊ី",
+ "symbol": "TND"
+ },
+ "BHD": {
+ "name": "ឌីណា​បារ៉ែន",
+ "symbol": "BHD"
+ },
+ "MKD": {
+ "name": "ឌីណា​ម៉ាសáŸážŠáŸ’វាន",
+ "symbol": "MKD"
+ },
+ "LYD": {
+ "name": "ឌីណា​លីប៊ី",
+ "symbol": "LYD"
+ },
+ "RSD": {
+ "name": "ឌីណា​សើប",
+ "symbol": "RSD"
+ },
+ "JOD": {
+ "name": "ឌីណា​ហ្ស៊កដានី",
+ "symbol": "JOD"
+ },
+ "DZD": {
+ "name": "ឌីណា​អាល់ស៊áŸážšáž¸",
+ "symbol": "DZD"
+ },
+ "IQD": {
+ "name": "ឌីណា​អ៊ីរ៉ាក់",
+ "symbol": "IQD"
+ },
+ "STD": {
+ "name": "ឌូប្រា​សៅážáž¼áž˜áŸ‰áŸ និងប្រាំងស៊ីប",
+ "symbol": "STD"
+ },
+ "MAD": {
+ "name": "ឌៀរហាំ​ម៉ារ៉ុក",
+ "symbol": "MAD"
+ },
+ "AED": {
+ "name": "ឌៀរហាំ​អáŸáž˜áž¸ážšáŸ‰áž¶ážáž¢áž¶ážšáŸ‰áž¶áž”់រួម",
+ "symbol": "AED"
+ },
+ "ERN": {
+ "name": "ណាក់ហ្វា​អáŸážšáž¸ážáŸ’ážšáŸ",
+ "symbol": "ERN"
+ },
+ "NGN": {
+ "name": "ណៃរ៉ា​នីហ្សáŸážšáž¸áž™áŸ‰áž¶",
+ "symbol": "NGN"
+ },
+ "KZT": {
+ "name": "ážáž„់ហ្គី​កាហ្សាក់ស្ážáž¶áž“",
+ "symbol": "KZT"
+ },
+ "BDT": {
+ "name": "ážáž¶áž€áž¶â€‹áž”ង់ក្លាដែស",
+ "symbol": "BDT"
+ },
+ "WST": {
+ "name": "ážáž¶áž¡áž¶â€‹ážŸáž¶áž˜áŸážš",
+ "symbol": "WST"
+ },
+ "MNT": {
+ "name": "ទូរីក​ម៉ុងហ្គោលី",
+ "symbol": "MNT"
+ },
+ "ETB": {
+ "name": "ប៊áŸážšâ€‹áž¢áŸážáŸ’យូពី",
+ "symbol": "ETB"
+ },
+ "THB": {
+ "name": "បាážâ€‹ážáŸƒ",
+ "symbol": "฿"
+ },
+ "MOP": {
+ "name": "ប៉ាážáž¶áž€áž¶â€‹áž˜áŸ‰áž¶áž€áž¶ážœ",
+ "symbol": "MOP"
+ },
+ "PAB": {
+ "name": "បាល់ប៉ៅ​ប៉ាណាម៉ា",
+ "symbol": "PAB"
+ },
+ "TOP": {
+ "name": "ប៉ាអង់កា​ážáž»áž„ហ្គា",
+ "symbol": "TOP"
+ },
+ "MXN": {
+ "name": "ប៉ីហ្សូ​ម៉ិកស៉ិក",
+ "symbol": "MX$"
+ },
+ "COP": {
+ "name": "ប៉ឺហ្សូ​កូឡុំប៊ី",
+ "symbol": "COP"
+ },
+ "CUP": {
+ "name": "ប៉ឺហ្សូ​គុយបា",
+ "symbol": "CUP"
+ },
+ "DOP": {
+ "name": "ប៉ឺហ្សូ​ដូមីនីក",
+ "symbol": "DOP"
+ },
+ "CLP": {
+ "name": "ប៉ឺហ្សូ​ស៊ីលី",
+ "symbol": "CLP"
+ },
+ "PHP": {
+ "name": "ប៉ឺហ្សូ​ហ្វីលីពីន",
+ "symbol": "PHP"
+ },
+ "CUC": {
+ "name": "ប៉ឺហ្សូ​អាច​បម្លែង​បាន​គុយបា",
+ "symbol": "CUC"
+ },
+ "ARS": {
+ "name": "ប៉ឺហ្សូ​អាហ្សង់ទីន",
+ "symbol": "ARS"
+ },
+ "UYU": {
+ "name": "ប៉ឺហ្សូអ៊ុយរូហ្គាយ",
+ "symbol": "UYU"
+ },
+ "VEF": {
+ "name": "ប៊ូលីវ៉ា​វ៉áŸážŽáŸážŸáŸŠáž»áž™áž¢áŸáž¡áž¶",
+ "symbol": "VEF"
+ },
+ "BOB": {
+ "name": "បូលីវីណូ​បូលីវី",
+ "symbol": "BOB"
+ },
+ "FKP": {
+ "name": "ផោន​កោះ​ហ្វក់ឡែន",
+ "symbol": "FKP"
+ },
+ "LBP": {
+ "name": "ផោន​លីបង់",
+ "symbol": "LBP"
+ },
+ "SYP": {
+ "name": "ផោន​ស៊ីរី",
+ "symbol": "SYP"
+ },
+ "SDG": {
+ "name": "ផោន​ស៊ូដង់",
+ "symbol": "SDG"
+ },
+ "SSP": {
+ "name": "ផោន​ស៊ូដង់​ážáž¶áž„​ážáŸ’បូង",
+ "symbol": "SSP"
+ },
+ "SHP": {
+ "name": "ផោន​សាំងហáŸáž¡áŸážŽáž¶",
+ "symbol": "SHP"
+ },
+ "GBP": {
+ "name": "ផោនស្ទែរលិញ​ចក្រភព​អង់គ្លáŸážŸ",
+ "symbol": "£"
+ },
+ "GIP": {
+ "name": "ផោន​ហ្ស៊ីប្រាល់ážáž¶",
+ "symbol": "GIP"
+ },
+ "EGP": {
+ "name": "ផោន​​អáŸáž áŸ’សីប",
+ "symbol": "EGP"
+ },
+ "BWP": {
+ "name": "ពូឡា​បុážážŸáŸ’វាណា",
+ "symbol": "BWP"
+ },
+ "BAM": {
+ "name": "ម៉ាក​អាច​បម្លែង​បាន​បូស្នី",
+ "symbol": "BAM"
+ },
+ "TMT": {
+ "name": "ម៉ាណាážâ€‹ážáž½áž€áž˜áŸ‰áŸáž“ីស្ážáž¶áž“",
+ "symbol": "TMT"
+ },
+ "AZN": {
+ "name": "ម៉ាណាážâ€‹áž¢áž¶ážŸáŸŠáŸ‚បៃហ្សង់",
+ "symbol": "AZN"
+ },
+ "MZN": {
+ "name": "មីទីážáž›â€‹áž˜áŸ‰áž¼ážŸáŸ†áž”៊ិក",
+ "symbol": "MZN"
+ },
+ "CNY": {
+ "name": "យ៉ន់​ចិន",
+ "symbol": "CNÂ¥"
+ },
+ "JPY": {
+ "name": "áž™áŸáž“​ជប៉ុន",
+ "symbol": "JPÂ¥"
+ },
+ "ZAR": {
+ "name": "រ៉ង់​អាព្រិក​ážáž¶áž„​ážáŸ’បូង",
+ "symbol": "ZAR"
+ },
+ "MYR": {
+ "name": "រីងហ្គីážâ€‹áž˜áŸ‰áž¶áž¡áŸážŸáŸŠáž¸",
+ "symbol": "MYR"
+ },
+ "SAR": {
+ "name": "រីយ៉ាល​អារ៉ាប៊ីសាអូឌីáž",
+ "symbol": "SAR"
+ },
+ "BYR": {
+ "name": "រ៉ូបល​បáŸáž¡áž¶ážšáž»ážŸ",
+ "symbol": "BYR"
+ },
+ "RUB": {
+ "name": "រ៉ូបល​រុស្ស៊ី",
+ "symbol": "RUB"
+ },
+ "NPR": {
+ "name": "រ៉ូពី​នáŸáž”៉ាល់",
+ "symbol": "NPR"
+ },
+ "PKR": {
+ "name": "រ៉ូពី​ប៉ាគីស្ážáž¶áž“",
+ "symbol": "PKR"
+ },
+ "MUR": {
+ "name": "រ៉ូពី​ម៉ូរីážáž¶áž“ី",
+ "symbol": "MUR"
+ },
+ "SCR": {
+ "name": "រ៉ូពី​សីស្ហែល",
+ "symbol": "SCR"
+ },
+ "LKR": {
+ "name": "រ៉ូពី​ស្រីលង្ការ",
+ "symbol": "LKR"
+ },
+ "INR": {
+ "name": "រ៉ូពី​ឥណ្ឌា",
+ "symbol": "₹"
+ },
+ "IDR": {
+ "name": "រ៉ូពីឥណ្ឌូណáŸážŸáŸŠáž¸",
+ "symbol": "IDR"
+ },
+ "MVR": {
+ "name": "រ៉ូហ្វីយ៉ា​ម៉ាល់ឌីវ",
+ "symbol": "MVR"
+ },
+ "KHR": {
+ "name": "រៀល​កម្ពុជា",
+ "symbol": "៛"
+ },
+ "QAR": {
+ "name": "រៀល​កាážáž¶",
+ "symbol": "QAR"
+ },
+ "BRL": {
+ "name": "រៀល​ប្រáŸážŸáŸŠáž¸áž›",
+ "symbol": "R$"
+ },
+ "YER": {
+ "name": "រៀល​យáŸáž˜áŸ‰áŸ‚áž“",
+ "symbol": "YER"
+ },
+ "OMR": {
+ "name": "រៀល​រូម៉ានី",
+ "symbol": "OMR"
+ },
+ "IRR": {
+ "name": "រៀល​អ៊ីរ៉ង់",
+ "symbol": "IRR"
+ },
+ "ALL": {
+ "name": "លិក​អាល់បានី",
+ "symbol": "ALL"
+ },
+ "HNL": {
+ "name": "លិមពីរ៉ា​ហុងឌូរ៉ាស",
+ "symbol": "HNL"
+ },
+ "LTL": {
+ "name": "លីážáž¶â€‹áž›áž¸áž‘ុយអានី",
+ "symbol": "LTL"
+ },
+ "TRY": {
+ "name": "លីរ៉ា​ទួគី",
+ "symbol": "TRY"
+ },
+ "BGN": {
+ "name": "លីវ​ប៊ុលហ្គារី",
+ "symbol": "BGN"
+ },
+ "SZL": {
+ "name": "លីឡាងហ្គីនី​ស្វាស៊ីឡង់",
+ "symbol": "SZL"
+ },
+ "SLL": {
+ "name": "លីអ៊ុន​សៀរ៉ាឡáŸáž¢áž¼áž“",
+ "symbol": "SLL"
+ },
+ "MDL": {
+ "name": "លូ​ម៉ុលដាវី",
+ "symbol": "MDL"
+ },
+ "RON": {
+ "name": "លូ​រូម៉ានី",
+ "symbol": "RON"
+ },
+ "VUV": {
+ "name": "វ៉ាទូ​វ៉ានូទូ",
+ "symbol": "VUV"
+ },
+ "KPW": {
+ "name": "វូន​កូរ៉áŸâ€‹ážáž¶áž„​ជើង",
+ "symbol": "KPW"
+ },
+ "KRW": {
+ "name": "វូន​កូរ៉áŸâ€‹ážáž¶áž„​ážáŸ’បូង",
+ "symbol": "â‚©"
+ },
+ "GHS": {
+ "name": "ស៊ីឌី​ហ្គាណា",
+ "symbol": "GHS"
+ },
+ "KES": {
+ "name": "ស៊ីលិញ​កáŸáž“យ៉ា",
+ "symbol": "KES"
+ },
+ "TZS": {
+ "name": "ស៊ីលិញ​ážáž„់សានី",
+ "symbol": "TZS"
+ },
+ "SOS": {
+ "name": "ស៊ីលិញ​សូម៉ាលី",
+ "symbol": "SOS"
+ },
+ "UGX": {
+ "name": "ស៊ីលិញ​អ៊ូហ្គង់ដា",
+ "symbol": "UGX"
+ },
+ "KGS": {
+ "name": "សុម​កៀហ្ស៊ីស៊ីស្ážáž¶áž“",
+ "symbol": "KGS"
+ },
+ "UZS": {
+ "name": "សុម​អ៊ូសបáŸáž‚ីស្ážáž¶áž“",
+ "symbol": "UZS"
+ },
+ "TJS": {
+ "name": "សូមុនី​ážáž¶áž áŸ’ស៊ីគីស្ážáž¶áž“",
+ "symbol": "TJS"
+ },
+ "ILS": {
+ "name": "ស្ស៊ីហ្គែល​អ៊ីស្រាអែល",
+ "symbol": "₪"
+ },
+ "UAH": {
+ "name": "ហ៊ូនីយ៉ា​អ៊ុយក្រែន",
+ "symbol": "UAH"
+ },
+ "ANG": {
+ "name": "ហ្គីឌិន​ហុល្លង់​អង់ទីលៀន",
+ "symbol": "ANG"
+ },
+ "GTQ": {
+ "name": "ហ្គីស្សាល​ក្វាážáŸáž˜áŸ‰áž¶áž¡áž¶",
+ "symbol": "GTQ"
+ },
+ "PYG": {
+ "name": "ហ្គូរីនី​ប៉ារ៉ាហ្គាយ",
+ "symbol": "PYG"
+ },
+ "HUF": {
+ "name": "ហ្វូរីន​ហុងគ្រី",
+ "symbol": "HUF"
+ },
+ "XOF": {
+ "name": "ហ្វ្រង់ BCEAO CFA",
+ "symbol": "CFA"
+ },
+ "XAF": {
+ "name": "ហ្វ្រង់ BEAC CFA",
+ "symbol": "FCFA"
+ },
+ "XPF": {
+ "name": "ហ្វ្រង់ CFP",
+ "symbol": "CFPF"
+ },
+ "CHF": {
+ "name": "ហ្វ្រង់ ស្វីស",
+ "symbol": "CHF"
+ },
+ "CDF": {
+ "name": "ហ្វ្រង់​កុងហ្គោ",
+ "symbol": "CDF"
+ },
+ "KMF": {
+ "name": "ហ្វ្រង់​កូមáŸážš",
+ "symbol": "KMF"
+ },
+ "DJF": {
+ "name": "ហ្វ្រង់​ជីប៊ូទី",
+ "symbol": "DJF"
+ },
+ "BIF": {
+ "name": "ហ្វ្រង់​ប៊ូរុនឌី",
+ "symbol": "BIF"
+ },
+ "RWF": {
+ "name": "ហ្វ្រង់​រវ៉ាន់ដា",
+ "symbol": "RWF"
+ },
+ "GNF": {
+ "name": "ហ្វ្រង់​ហ្គីណáŸ",
+ "symbol": "GNF"
+ },
+ "AWG": {
+ "name": "ហ្វ្រáŸážšážšáž·áž‰â€‹áž¢áž¶ážšáŸ‰áž¼áž”ា",
+ "symbol": "AWG"
+ },
+ "PLN": {
+ "name": "ហ្សូទី​ប៉ូឡូញ",
+ "symbol": "PLN"
+ },
+ "GEL": {
+ "name": "ឡារី​​ហ្សកហ្ស៊ី",
+ "symbol": "GEL"
+ },
+ "MGA": {
+ "name": "អារៀរី​ម៉ាឡាហ្គាស៊ី",
+ "symbol": "MGA"
+ },
+ "AFN": {
+ "name": "អាហ្វហ្គានី​អាហ្វហ្គានីស្ážáž¶áž“",
+ "symbol": "AFN"
+ },
+ "CVE": {
+ "name": "អ៊ីស្កូឌូ​កាប់វែរ",
+ "symbol": "CVE"
+ },
+ "EUR": {
+ "name": "អឺរ៉ូ",
+ "symbol": "€"
+ },
+ "MRO": {
+ "name": "អ៊ូហ្គីយ៉ា​ម៉ូរីážáž¶áž“ី",
+ "symbol": "MRO"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/currency/kn.json b/library/intl/resources/currency/kn.json
new file mode 100644
index 000000000..60a4577be
--- /dev/null
+++ b/library/intl/resources/currency/kn.json
@@ -0,0 +1,634 @@
+{
+ "XOF": {
+ "name": "CFA ಫà³à²°à²¾à²‚ಕೠBCEAO",
+ "symbol": "CFA"
+ },
+ "XAF": {
+ "name": "CFA ಫà³à²°à²¾à²‚ಕೠBEAC",
+ "symbol": "FCFA"
+ },
+ "XPF": {
+ "name": "CFP ಫà³à²°à²¾à²‚ಕà³",
+ "symbol": "CFPF"
+ },
+ "SVC": {
+ "name": "SVC",
+ "symbol": "SVC"
+ },
+ "ZWL": {
+ "name": "ZWL",
+ "symbol": "ZWL"
+ },
+ "AOA": {
+ "name": "ಅಂಗೋಲಾದ ಕà³à²µà²¾à²¨à³à²à²¾",
+ "symbol": "AOA"
+ },
+ "AZN": {
+ "name": "ಅà²à²°à³â€Œà²¬à³ˆà²œà²¾à²¨à²¿ ಮನಾತà³",
+ "symbol": "AZN"
+ },
+ "AFN": {
+ "name": "ಅಫà³â€Œà²˜à²¨à³ ಅಫಗಾನಿ",
+ "symbol": "AFN"
+ },
+ "USD": {
+ "name": "ಅಮೆರಿಕದ ಡಾಲರà³â€Œ",
+ "symbol": "$"
+ },
+ "AWG": {
+ "name": "ಅರà³à²¬à²¨à³ ಫà³à²²à³Šà²°à³€à²¨à³â€Œâ€Œ",
+ "symbol": "AWG"
+ },
+ "ARS": {
+ "name": "ಅರà³à²œà³†à²‚ಟಿನಾ ಪೆಸೊ",
+ "symbol": "ARS"
+ },
+ "AMD": {
+ "name": "ಅರà³à²®à³†à²¨à²¿à²¯à²¨à³ ಡà³à²°à²¾à²®à³",
+ "symbol": "AMD"
+ },
+ "DZD": {
+ "name": "ಅಲà³à²—ೇರಿಯನೠದಿನಾರà³",
+ "symbol": "DZD"
+ },
+ "ALL": {
+ "name": "ಅಲà³â€Œà²¬à³‡à²¨à²¿à²¯à²¨à³ ಲೆಕà³",
+ "symbol": "ALL"
+ },
+ "AUD": {
+ "name": "ಆಸà³à²Ÿà³à²°à³‡à²²à²¿à²¯à²¨à³ ಡಾಲರà³â€Œ",
+ "symbol": "A$"
+ },
+ "IDR": {
+ "name": "ಇಂಡೊನೇಷà³à²¯à²¾ ರà³à²ªà³ˆ",
+ "symbol": "IDR"
+ },
+ "ETB": {
+ "name": "ಇಥಿಯೋಪಿಯನೠಬಿರà³",
+ "symbol": "ETB"
+ },
+ "IQD": {
+ "name": "ಇರಾಖಿಯನೠದಿನಾರà³",
+ "symbol": "IQD"
+ },
+ "IRR": {
+ "name": "ಇರಾನಿಯನೠರಿಯಲà³",
+ "symbol": "IRR"
+ },
+ "ILS": {
+ "name": "ಇಸà³à²°à³‡à²²à²¿ ನà³à²¯à³‚ ಶೇಖಲà³",
+ "symbol": "₪"
+ },
+ "EGP": {
+ "name": "ಈಜಿಪà³à²·à²¿à²¯à²¨à³ ಪೌಂಡà³â€",
+ "symbol": "EGP"
+ },
+ "UAH": {
+ "name": "ಉಕà³à²°à³‡à²¨à²¿à²¯à²¨à³ ಹà³à²°à²¿à²µà³à²¨à³€à²¯",
+ "symbol": "UAH"
+ },
+ "UGX": {
+ "name": "ಉಗಾಂಡನೠಶಿಲà³à²²à²¿à²‚ಗà³",
+ "symbol": "UGX"
+ },
+ "UZS": {
+ "name": "ಉಜà³à²¬à³‡à²•à²¿à²¸à³à²¤à²¾à²¨à³ ಸೊಮà³",
+ "symbol": "UZS"
+ },
+ "KPW": {
+ "name": "ಉತà³à²¤à²° ಕೊರಿಯನೠವೋನà³",
+ "symbol": "KPW"
+ },
+ "UYU": {
+ "name": "ಉರà³à²—à³à²µà³†à²¯ ಪೆಸೊ",
+ "symbol": "UYU"
+ },
+ "ERN": {
+ "name": "ಎರಿತà³à²°à²¿à²¯à²¨à³ ನಕà³à²«à²¾",
+ "symbol": "ERN"
+ },
+ "ISK": {
+ "name": "à²à²¸à³â€Œà²²à³à²¯à²¾à²‚ಡಿಕೠಕà³à²°à³‹à²¨à²¾",
+ "symbol": "ISK"
+ },
+ "OMR": {
+ "name": "ಒಮಾನಿ ರಿಯಲà³",
+ "symbol": "OMR"
+ },
+ "KZT": {
+ "name": "ಕಜಾಕಿಸà³à²¤à²¾à²¨à²¿ ತೆಂಗೆ",
+ "symbol": "KZT"
+ },
+ "CDF": {
+ "name": "ಕಾಂಗೋಲೀಸೠಫà³à²°à²¾à²‚ಕà³",
+ "symbol": "CDF"
+ },
+ "KHR": {
+ "name": "ಕಾಂಬೋಡಿಯನೠರಿಯಲà³",
+ "symbol": "KHR"
+ },
+ "KGS": {
+ "name": "ಕಿರà³à²—ಿಸà³à²¤à²¾à²¨à²¿ ಸೋಮà³",
+ "symbol": "KGS"
+ },
+ "KWD": {
+ "name": "ಕà³à²µà³ˆà²¤à³€ ದಿನಾರà³",
+ "symbol": "KWD"
+ },
+ "CAD": {
+ "name": "ಕೆನಡಾದ ಡಾಲರà³",
+ "symbol": "CA$"
+ },
+ "KES": {
+ "name": "ಕೆನà³à²¯à²¨à³ ಶಿಲà³à²²à²¿à²‚ಗà³",
+ "symbol": "KES"
+ },
+ "KYD": {
+ "name": "ಕೆಮà³à²¯à²¾à²¨à³â€Œ à²à²²à³à²¯à²¾à²‚ಡà³â€Œà²¨ ಡಾಲರà³â€Œ",
+ "symbol": "KYD"
+ },
+ "CVE": {
+ "name": "ಕೇಪೠವರà³à²¡à²¿à²¨à³ ಎಸà³â€Œà²•à³‚ಡೊ",
+ "symbol": "CVE"
+ },
+ "KMF": {
+ "name": "ಕೊಮೊರಿಯನೠಫà³à²°à²¾à²‚ಕà³",
+ "symbol": "KMF"
+ },
+ "COP": {
+ "name": "ಕೊಲೊಂಬಿಯೋದ ಪೆಸೊ",
+ "symbol": "COP"
+ },
+ "CRC": {
+ "name": "ಕೋಸà³à²Ÿ ರಿಕನೠಕೊಲನà³",
+ "symbol": "CRC"
+ },
+ "CUC": {
+ "name": "ಕà³à²¯à³à²¬à²¾à²¦ ಪರಿವರà³à²¤à²¨à³€à²¯ ಪೆಸೊ",
+ "symbol": "CUC"
+ },
+ "CUP": {
+ "name": "ಕà³à²¯à³‚ಬಾದ ಪೆಸೊ",
+ "symbol": "CUP"
+ },
+ "HRK": {
+ "name": "ಕà³à²°à³Šà²¯à³†à²·à³à²¯à²¾à²¦ ಕೂನಾ",
+ "symbol": "HRK"
+ },
+ "QAR": {
+ "name": "ಖತಾರಿ ರಿಯಲà³",
+ "symbol": "QAR"
+ },
+ "GNF": {
+ "name": "ಗಿನಿಯನೠಫà³à²°à²¾à²‚ಕà³",
+ "symbol": "GNF"
+ },
+ "GIP": {
+ "name": "ಗಿಬà³à²°à²¾à²²à³à²Ÿà²°à³ ಪೌಂಡà³",
+ "symbol": "GIP"
+ },
+ "GYD": {
+ "name": "ಗà³à²¯à²¾à²¨à³€à²¸à³â€Œ ಡಾಲರà³â€Œ",
+ "symbol": "GYD"
+ },
+ "GMD": {
+ "name": "ಗà³à²¯à²¾à²‚ಬಿಯಾದ ದಲಾಸಿ",
+ "symbol": "GMD"
+ },
+ "GTQ": {
+ "name": "ಗà³à²µà²¾à²Ÿà³†à²®à²¾à²²à²¾à²¦ ಕà³à²¯à²¿à²Ÿà³à²¸à²²à³â€Œâ€Œ",
+ "symbol": "GTQ"
+ },
+ "GHS": {
+ "name": "ಘಾನಾದ ಸೆದಿ",
+ "symbol": "GHS"
+ },
+ "CLP": {
+ "name": "ಚಿಲಿಯ ಪೆಸೊ",
+ "symbol": "CLP"
+ },
+ "CNY": {
+ "name": "ಚೈನೀಸೠಯà³à²µà²¾à²¨à³",
+ "symbol": "CNÂ¥"
+ },
+ "JPY": {
+ "name": "ಜಪಾನೀಸೠಯೆನà³",
+ "symbol": "JPÂ¥"
+ },
+ "JMD": {
+ "name": "ಜಮೈಕನೠಡಾಲರà³",
+ "symbol": "JMD"
+ },
+ "ZMW": {
+ "name": "ಜಾಂಬಿಯಾ ಕà³à²µà²¾à²š",
+ "symbol": "ZMW"
+ },
+ "GEL": {
+ "name": "ಜಾರà³à²œà²¿à²¯à²¾à²¦ ಲಾರಿ",
+ "symbol": "GEL"
+ },
+ "DJF": {
+ "name": "ಜಿಬೊಟಿಯನೠಫà³à²°à²¾à²‚ಕà³",
+ "symbol": "DJF"
+ },
+ "JOD": {
+ "name": "ಜೋರà³à²¡à²¾à²¨à²¿à²¯à²¨à³ ದಿನಾರà³",
+ "symbol": "JOD"
+ },
+ "CZK": {
+ "name": "à²à³†à²•à³ ಗಣರಾಜà³à²¯ ಕೊರೂನ",
+ "symbol": "CZK"
+ },
+ "TRY": {
+ "name": "ಟರà³à²•à²¿à²¶à³ ಲಿರಾ",
+ "symbol": "TRY"
+ },
+ "TMT": {
+ "name": "ಟರà³à²•à³â€à²®à³†à²¨à²¿à²¸à³à²¤à²¾à²¨à³ ಮನಾತà³",
+ "symbol": "TMT"
+ },
+ "TOP": {
+ "name": "ಟೊಂಗಾ ಪಾಂಗ",
+ "symbol": "TOP"
+ },
+ "TTD": {
+ "name": "ಟà³à²°à²¿à²¨à²¿à²¡à²¾à²¡à³ ಮತà³à²¤à³ ಟೊಬಾಗೊ ಡಾಲರà³",
+ "symbol": "TTD"
+ },
+ "DOP": {
+ "name": "ಡೊಮಿನಿಕನೠಪೆಸೊ",
+ "symbol": "DOP"
+ },
+ "DKK": {
+ "name": "ಡà³à²¯à²¾à²¨à²¿à²¶à³ ಕà³à²°à³‹à²¨à³",
+ "symbol": "DKK"
+ },
+ "TJS": {
+ "name": "ತಜಕಿಸà³à²¤à²¾à²¨à²¿ ಸೊಮೋನಿ",
+ "symbol": "TJS"
+ },
+ "TZS": {
+ "name": "ತಾನà³â€Œà²œà³‡à²¨à²¿à²¯à²¨à³ ಶಿಲà³à²²à²¿à²‚ಗà³",
+ "symbol": "TZS"
+ },
+ "TND": {
+ "name": "ತà³à²¨à³€à²¸à²¿à²¯à²¨à³ ದಿನಾರà³",
+ "symbol": "TND"
+ },
+ "THB": {
+ "name": "ಥಾಯೠಬಹà³à²¤à³",
+ "symbol": "฿"
+ },
+ "ZAR": {
+ "name": "ದಕà³à²·à²¿à²£ ಆಫà³à²°à²¿à²•à²¨à³ ರಾಂಡà³",
+ "symbol": "ZAR"
+ },
+ "KRW": {
+ "name": "ದಕà³à²·à²¿à²£ ಕೊರಿಯನೠವೊನà³",
+ "symbol": "â‚©"
+ },
+ "SSP": {
+ "name": "ದಕà³à²·à²¿à²£ ಸೂಡಾನೀಸೠಪೌಂಡà³â€",
+ "symbol": "SSP"
+ },
+ "NAD": {
+ "name": "ನಮೀಬಿಯನೠಡಾಲರà³",
+ "symbol": "NAD"
+ },
+ "NOK": {
+ "name": "ನಾರà³à²µà³‡à²¯ ಕà³à²°à³‹à²¨à³",
+ "symbol": "NOK"
+ },
+ "NIO": {
+ "name": "ನಿಕಾರಗà³à²µà²¾à²¦ ಕರà³à²¦à³Šà²¬à²¾",
+ "symbol": "NIO"
+ },
+ "ANG": {
+ "name": "ನೆದರà³à²²à³†à²‚ಡà³à²¸à³ ಆಂಟಿಲಿಯನೠಗಿಲà³à²¡à²°à³",
+ "symbol": "ANG"
+ },
+ "NPR": {
+ "name": "ನೇಪಾಳದ ರà³à²ªà³€",
+ "symbol": "NPR"
+ },
+ "NGN": {
+ "name": "ನೈಜೀರಿಯಾದ ನೇರಾ",
+ "symbol": "NGN"
+ },
+ "TWD": {
+ "name": "ನà³à²¯à³‚ ತೈವಾನೠಡಾಲರà³",
+ "symbol": "NT$"
+ },
+ "NZD": {
+ "name": "ನà³à²¯à³‚ಜಿಲà³à²¯à²¾à²‚ಡೠಡಾಲರà³",
+ "symbol": "NZ$"
+ },
+ "PAB": {
+ "name": "ಪನಾಮಾನಿಯನೠಬಲà³à²¬à³‹à²µà²¾",
+ "symbol": "PAB"
+ },
+ "PGK": {
+ "name": "ಪಪà³à²µà²¾ ನà³à²¯à³‚ ಗಿನಿಯನೠಕಿನಾ",
+ "symbol": "PGK"
+ },
+ "PKR": {
+ "name": "ಪಾಕಿಸà³à²¤à²¾à²¨à²¦ ರà³à²ªà³€",
+ "symbol": "PKR"
+ },
+ "XCD": {
+ "name": "ಪೂರà³à²µ ಕೆರೀಬಿಯನೠಡಾಲರà³",
+ "symbol": "EC$"
+ },
+ "PYG": {
+ "name": "ಪೆರà³à²—à³à²µà³‡à²¯ ಗà³à²µà²¾à²°à²¨à³€",
+ "symbol": "PYG"
+ },
+ "PEN": {
+ "name": "ಪೆರà³à²µà²¿à²¯à²¨à³ ನà³à²¯à³†à²µà³Š ಸೊಲà³",
+ "symbol": "PEN"
+ },
+ "PLN": {
+ "name": "ಪೊಲಿಶೠà²à³à²²à³‹à²Ÿà²¿",
+ "symbol": "PLN"
+ },
+ "FKP": {
+ "name": "ಫಾಲà³à²•à³â€Œà²²à³à²¯à²¾à²‚ಡೠದà³à²µà³€à²ªà²—ಳ ಪೌಂಡà³",
+ "symbol": "FKP"
+ },
+ "FJD": {
+ "name": "ಫಿಜಿಯನೠಡಾಲರà³",
+ "symbol": "FJD"
+ },
+ "PHP": {
+ "name": "ಫಿಲಿಪà³à²ªà³ˆà²¨à³ ಪೆಸೊ",
+ "symbol": "PHP"
+ },
+ "BBD": {
+ "name": "ಬರà³à²¬à²¾à²¡à²¿à²¯à²¨à³ ಡಾಲರà³",
+ "symbol": "BBD"
+ },
+ "BMD": {
+ "name": "ಬರà³à²®à³à²¡à²¨à³ ಡಾಲರà³",
+ "symbol": "BMD"
+ },
+ "BGN": {
+ "name": "ಬಲà³à²—ೇರಿಯನೠಲೆವà³",
+ "symbol": "BGN"
+ },
+ "BSD": {
+ "name": "ಬಹಾಮಿಯನೠಡಾಲರà³",
+ "symbol": "BSD"
+ },
+ "BHD": {
+ "name": "ಬಹà³â€Œâ€Œà²°à³ˆà²¨à²¿ ದಿನಾರà³",
+ "symbol": "BHD"
+ },
+ "BDT": {
+ "name": "ಬಾಂಗà³à²²à²¾à²¦à³‡à²¶à²¦ ಟಾಕಾ",
+ "symbol": "BDT"
+ },
+ "BIF": {
+ "name": "ಬà³à²°à³à²‚ದಿಯನೠಫà³à²°à²¾à²‚ಕà³",
+ "symbol": "BIF"
+ },
+ "BYR": {
+ "name": "ಬೆಲಾರà³à²¸à²¿à²¯à²¨à³ ರೂಬಲà³",
+ "symbol": "BYR"
+ },
+ "BZD": {
+ "name": "ಬೆಲೀಜೠಡಾಲರà³",
+ "symbol": "BZD"
+ },
+ "BOB": {
+ "name": "ಬೊಲಿವಿಯಾದ ಬೊಲಿವಿಯಾನೊ",
+ "symbol": "BOB"
+ },
+ "BWP": {
+ "name": "ಬೋಟà³à²¸à³â€Œà²µà²¾à²¨à²¨à³ ಪà³à²²à²¾",
+ "symbol": "BWP"
+ },
+ "BAM": {
+ "name": "ಬೋಸà³à²¨à²¿à²¯à²¾-ಹರà³à²œà³â€Œà²—ೋವಿನ ಪರಿವರà³à²¤à²¨à³€à²¯ ಗà³à²°à³à²¤à³",
+ "symbol": "BAM"
+ },
+ "GBP": {
+ "name": "ಬà³à²°à²¿à²Ÿà³€à²·à³ ಪೌಂಡೠಸà³à²Ÿà³†à²°à³à²²à²¿à²‚ಗà³",
+ "symbol": "£"
+ },
+ "BND": {
+ "name": "ಬà³à²°à³‚ನಿ ಡಾಲರà³",
+ "symbol": "BND"
+ },
+ "BRL": {
+ "name": "ಬà³à²°à³†à²œà²¿à²²à²¿à²¯à²¨à³â€Œ ರಿಯಲà³",
+ "symbol": "R$"
+ },
+ "INR": {
+ "name": "ಭಾರತೀಯ ರà³à²ªà²¾à²¯à²¿",
+ "symbol": "₹"
+ },
+ "BTN": {
+ "name": "ಭೂತಾನೀಸೠನà³à²²à³à²¤à²°à²®à³",
+ "symbol": "BTN"
+ },
+ "MNT": {
+ "name": "ಮಂಗೋಲಿಯಾದ ತà³à²—à³à²°à²¿à²•à³â€Œâ€Œ",
+ "symbol": "MNT"
+ },
+ "MOP": {
+ "name": "ಮಕà³à²¯à³‚ದ ಪಟಕಾ",
+ "symbol": "MOP"
+ },
+ "MGA": {
+ "name": "ಮಲಗಾಸಿ ಅರಿಯಾರಿ",
+ "symbol": "MGA"
+ },
+ "MWK": {
+ "name": "ಮಲಾವಿಯ ಕà³à²µà²¾à²š",
+ "symbol": "MWK"
+ },
+ "MYR": {
+ "name": "ಮಲೇಶಿಯನೠರಿಂಗಿಟà³à²Ÿà³",
+ "symbol": "MYR"
+ },
+ "MDL": {
+ "name": "ಮಲà³à²¦à³‹à²µà²¾à²¦ ಲೆವೂ",
+ "symbol": "MDL"
+ },
+ "MUR": {
+ "name": "ಮಾರಿಷಿಯನೠರà³à²ªà²¿",
+ "symbol": "MUR"
+ },
+ "MVR": {
+ "name": "ಮಾಲà³à²¡à³€à²µà²¿à²¯à²¨à³ ರà³à²«à²¿à²¯à²¾",
+ "symbol": "MVR"
+ },
+ "MXN": {
+ "name": "ಮೆಕà³à²¸à²¿à²•à³Šà²¦ ಪೆಸೊ",
+ "symbol": "MX$"
+ },
+ "MKD": {
+ "name": "ಮೆಸಡೋನಿಯನೠದಿನಾರà³",
+ "symbol": "MKD"
+ },
+ "MZN": {
+ "name": "ಮೊà²à²¾à²‚ಬಿಕನೠಮೆಟಿಕಲà³",
+ "symbol": "MZN"
+ },
+ "MAD": {
+ "name": "ಮೊರೊಕನೠದಿರà³â€Œà²¹à²®à³",
+ "symbol": "MAD"
+ },
+ "MRO": {
+ "name": "ಮೌರೀಶಿಯನಿಯನೠಒಗಿಯ",
+ "symbol": "MRO"
+ },
+ "MMK": {
+ "name": "ಮà³à²¯à²¾à²¨à³à²®à²¾à²°à³ ಕà³à²¯à²¾à²Ÿà³",
+ "symbol": "MMK"
+ },
+ "EUR": {
+ "name": "ಯೂರೊ",
+ "symbol": "€"
+ },
+ "YER": {
+ "name": "ಯೆಮೆನಿ ರಿಯಲà³",
+ "symbol": "YER"
+ },
+ "RUB": {
+ "name": "ರಶಿಯನೠರೂಬಲà³",
+ "symbol": "RUB"
+ },
+ "RWF": {
+ "name": "ರà³à²µà²¾à²‚ಡನೠಫà³à²°à²¾à²‚ಕà³",
+ "symbol": "RWF"
+ },
+ "RON": {
+ "name": "ರೊಮೇನಿಯನೠಲೆವà³",
+ "symbol": "RON"
+ },
+ "LTL": {
+ "name": "ಲಿಥà³à²¨à²¿à²¯à²¨à³â€Œ ಲಿತಾಸà³â€Œ",
+ "symbol": "LTL"
+ },
+ "LYD": {
+ "name": "ಲಿಬಿಯಾದ ದಿನಾರà³â€Œ",
+ "symbol": "LYD"
+ },
+ "LRD": {
+ "name": "ಲಿಬೇರಿಯನೠಡಾಲರà³",
+ "symbol": "LRD"
+ },
+ "LBP": {
+ "name": "ಲೆಬೆನೀಸೠಪೌಂಡà³",
+ "symbol": "LBP"
+ },
+ "LSL": {
+ "name": "ಲೆಸೊತೊ ಲೊತಿ",
+ "symbol": "LSL"
+ },
+ "LAK": {
+ "name": "ಲೋಟಿಯನೠಕಿಪà³",
+ "symbol": "LAK"
+ },
+ "VUV": {
+ "name": "ವನೂತೠವತà³",
+ "symbol": "VUV"
+ },
+ "VND": {
+ "name": "ವಿಯೆಟà³à²¨à²¾à²®à³€à²¸à³ ಡಾಂಗà³",
+ "symbol": "â‚«"
+ },
+ "VEF": {
+ "name": "ವೆನಿಜà³à²²à²¿à²¯à²¨à³ ಬೊಲಿವರà³",
+ "symbol": "VEF"
+ },
+ "LKR": {
+ "name": "ಶà³à²°à³€à²²à²‚ಕಾದ ರà³à²ªà³€",
+ "symbol": "LKR"
+ },
+ "AED": {
+ "name": "ಸಂಯà³à²•à³à²¤ ಅರಬà³â€Œ ಎಮಿರೇಟà³â€Œâ€Œà²—ಳ ದಿರಾಮà³â€Œâ€Œ",
+ "symbol": "AED"
+ },
+ "WST": {
+ "name": "ಸಮೋನೠತಲಾ",
+ "symbol": "WST"
+ },
+ "STD": {
+ "name": "ಸಾವೊ ಟೋಮೠಮತà³à²¤à³ ಪà³à²°à²¿à²¨à³à²¸à²¿à²ªà³ ದೊಬà³à²°à²¾",
+ "symbol": "STD"
+ },
+ "SGD": {
+ "name": "ಸಿಂಗಾಪà³à²°à³ ಡಾಲರà³â€Œ",
+ "symbol": "SGD"
+ },
+ "SLL": {
+ "name": "ಸಿಯೆರಾ ಲಿಯೋನಿಯನೠಲಿಯೋನà³",
+ "symbol": "SLL"
+ },
+ "SYP": {
+ "name": "ಸಿರಿಯನೠಪೌಂಡà³",
+ "symbol": "SYP"
+ },
+ "SDG": {
+ "name": "ಸà³à²¡à²¾à²¨à³€à²¸à³ ಪೌಂಡà³",
+ "symbol": "SDG"
+ },
+ "SRD": {
+ "name": "ಸà³à²°à²¿à²¨à²¾à²®à³€à²¸à³ ಡಾಲರà³",
+ "symbol": "SRD"
+ },
+ "SCR": {
+ "name": "ಸೆಚೊಲಿಯೊಸೠರà³à²ªà²¿",
+ "symbol": "SCR"
+ },
+ "RSD": {
+ "name": "ಸೆರà³à²¬à²¿à²¯à²¨à³ ದಿನಾರà³",
+ "symbol": "RSD"
+ },
+ "SHP": {
+ "name": "ಸೇಂಟೠಹೆಲೇನಾ ಪೌಂಡà³",
+ "symbol": "SHP"
+ },
+ "SOS": {
+ "name": "ಸೊಮಾಲಿ ಶಿಲà³à²²à²¿à²‚ಗà³",
+ "symbol": "SOS"
+ },
+ "SBD": {
+ "name": "ಸೊಲೊಮನೠದà³à²µà³€à²ªà²—ಳ ಡಾಲರà³",
+ "symbol": "SBD"
+ },
+ "SAR": {
+ "name": "ಸೌದಿ ರಿಯಾಲà³",
+ "symbol": "SAR"
+ },
+ "SZL": {
+ "name": "ಸà³à²µà²¾à²œà²¿ ಲಿಲಂಗೆನಿ",
+ "symbol": "SZL"
+ },
+ "CHF": {
+ "name": "ಸà³à²µà²¿à²¸à³ ಫà³à²°à²¾à²‚ಕà³",
+ "symbol": "CHF"
+ },
+ "SEK": {
+ "name": "ಸà³à²µà³€à²¡à²¿à²·à³ ಕà³à²°à³‹à²¨à²¾",
+ "symbol": "SEK"
+ },
+ "HUF": {
+ "name": "ಹಂಗೇರಿಯನೠಫೋರಿಂಟà³",
+ "symbol": "HUF"
+ },
+ "HKD": {
+ "name": "ಹಾಂಗೠಕಾಂಗೠಡಾಲರà³",
+ "symbol": "HK$"
+ },
+ "HTG": {
+ "name": "ಹೈಟಿಯ ಗೋರà³à²¦à³†",
+ "symbol": "HTG"
+ },
+ "HNL": {
+ "name": "ಹೊಂಡà³à²°à²¾à²¨à³â€Œ ಲೆಂಪಿರಾ",
+ "symbol": "HNL"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/currency/ko.json b/library/intl/resources/currency/ko.json
new file mode 100644
index 000000000..82409da16
--- /dev/null
+++ b/library/intl/resources/currency/ko.json
@@ -0,0 +1,634 @@
+{
+ "XOF": {
+ "name": "CFA 프랑 BCEAO",
+ "symbol": "CFA"
+ },
+ "XAF": {
+ "name": "CFA 프랑 BEAC",
+ "symbol": "FCFA"
+ },
+ "XPF": {
+ "name": "CFP 프랑",
+ "symbol": "CFPF"
+ },
+ "GHS": {
+ "name": "가나 시디",
+ "symbol": "GHS"
+ },
+ "GYD": {
+ "name": "ê°€ì´ì•„나 달러",
+ "symbol": "GYD"
+ },
+ "GMD": {
+ "name": "ê°ë¹„ì•„ 달ë¼ì‹œ",
+ "symbol": "GMD"
+ },
+ "GTQ": {
+ "name": "과테ë§ë¼ 케트살",
+ "symbol": "GTQ"
+ },
+ "GNF": {
+ "name": "기니 프랑",
+ "symbol": "GNF"
+ },
+ "NAD": {
+ "name": "나미비아 달러",
+ "symbol": "NAD"
+ },
+ "SSP": {
+ "name": "남수단 파운드",
+ "symbol": "SSP"
+ },
+ "ZAR": {
+ "name": "남아프리카 랜드",
+ "symbol": "ZAR"
+ },
+ "ANG": {
+ "name": "네ëœëž€ë“œë ¹ 안틸레스 길ë”",
+ "symbol": "ANG"
+ },
+ "NPR": {
+ "name": "네팔 루피",
+ "symbol": "NPR"
+ },
+ "NOK": {
+ "name": "ë…¸ë¥´ì›¨ì´ í¬ë¡œë„¤",
+ "symbol": "NOK"
+ },
+ "NZD": {
+ "name": "뉴질랜드 달러",
+ "symbol": "NZ$"
+ },
+ "NGN": {
+ "name": "니제르 나ì´ë¼",
+ "symbol": "NGN"
+ },
+ "NIO": {
+ "name": "니카ë¼ê³¼ 코르ë„ë°” 오로",
+ "symbol": "NIO"
+ },
+ "KRW": {
+ "name": "대한민국 ì›",
+ "symbol": "â‚©"
+ },
+ "DKK": {
+ "name": "ë´ë§ˆí¬ í¬ë¡œë„¤",
+ "symbol": "DKK"
+ },
+ "DOP": {
+ "name": "ë„미니카 페소",
+ "symbol": "DOP"
+ },
+ "XCD": {
+ "name": "ë™ì¹´ë¦¬ë¸Œ 달러",
+ "symbol": "EC$"
+ },
+ "LAK": {
+ "name": "ë¼ì˜¤ìŠ¤ 키프",
+ "symbol": "LAK"
+ },
+ "LRD": {
+ "name": "ë¼ì´ë² ë¦¬ì•„ 달러",
+ "symbol": "LRD"
+ },
+ "RUB": {
+ "name": "러시아 루블",
+ "symbol": "RUB"
+ },
+ "LBP": {
+ "name": "레바논 파운드",
+ "symbol": "LBP"
+ },
+ "LSL": {
+ "name": "레소토 로티",
+ "symbol": "LSL"
+ },
+ "RON": {
+ "name": "루마니아 레우",
+ "symbol": "RON"
+ },
+ "RWF": {
+ "name": "르완다 프랑",
+ "symbol": "RWF"
+ },
+ "LYD": {
+ "name": "리비아 디나르",
+ "symbol": "LYD"
+ },
+ "LTL": {
+ "name": "리투아니아 리타",
+ "symbol": "LTL"
+ },
+ "MGA": {
+ "name": "마다가스카르 아리아리",
+ "symbol": "MGA"
+ },
+ "MOP": {
+ "name": "마카오 파타카",
+ "symbol": "MOP"
+ },
+ "MKD": {
+ "name": "마케ë„니아 디나르",
+ "symbol": "MKD"
+ },
+ "MWK": {
+ "name": "ë§ë¼ìœ„ ì½°ì³",
+ "symbol": "MWK"
+ },
+ "MYR": {
+ "name": "ë§ë ˆì´ì‹œì•„ ë§ê¹ƒ",
+ "symbol": "MYR"
+ },
+ "MXN": {
+ "name": "멕시코 페소",
+ "symbol": "MX$"
+ },
+ "MAD": {
+ "name": "모로코 디렘",
+ "symbol": "MAD"
+ },
+ "MUR": {
+ "name": "모리셔스 루피",
+ "symbol": "MUR"
+ },
+ "MRO": {
+ "name": "모리타니 우기야",
+ "symbol": "MRO"
+ },
+ "MZN": {
+ "name": "ëª¨ìž ë¹„í¬ ë©”í‹°ì¹¼",
+ "symbol": "MZN"
+ },
+ "MDL": {
+ "name": "몰ë„ë°” ë ˆì´",
+ "symbol": "MDL"
+ },
+ "MVR": {
+ "name": "몰디브 ì œë„ ë£¨í”¼ì•„",
+ "symbol": "MVR"
+ },
+ "MNT": {
+ "name": "몽골 투그릭",
+ "symbol": "MNT"
+ },
+ "USD": {
+ "name": "미국 달러",
+ "symbol": "US$"
+ },
+ "MMK": {
+ "name": "미얀마 키ì–",
+ "symbol": "MMK"
+ },
+ "VUV": {
+ "name": "바누아투 바투",
+ "symbol": "VUV"
+ },
+ "BHD": {
+ "name": "ë°”ë ˆì¸ ë””ë‚˜ë¥´",
+ "symbol": "BHD"
+ },
+ "BBD": {
+ "name": "바베ì´ë„스 달러",
+ "symbol": "BBD"
+ },
+ "BSD": {
+ "name": "바하마 달러",
+ "symbol": "BSD"
+ },
+ "BDT": {
+ "name": "방글ë¼ë°ì‹œ 타카",
+ "symbol": "BDT"
+ },
+ "BMD": {
+ "name": "버뮤다 달러",
+ "symbol": "BMD"
+ },
+ "VEF": {
+ "name": "ë² ë„¤ìˆ˜ì—˜ë¼ ë³¼ë¦¬ë°”ë¥´",
+ "symbol": "VEF"
+ },
+ "VND": {
+ "name": "베트남 ë™",
+ "symbol": "â‚«"
+ },
+ "BYR": {
+ "name": "벨ë¼ë£¨ìŠ¤ 루블",
+ "symbol": "BYR"
+ },
+ "BZD": {
+ "name": "벨리즈 달러",
+ "symbol": "BZD"
+ },
+ "BAM": {
+ "name": "보스니아-헤르체고비나 태환 마르í¬",
+ "symbol": "BAM"
+ },
+ "BWP": {
+ "name": "보츠와나 í´ë¼",
+ "symbol": "BWP"
+ },
+ "BOB": {
+ "name": "볼리비아노",
+ "symbol": "BOB"
+ },
+ "BND": {
+ "name": "ë¶€ë£¨ë‚˜ì´ ë‹¬ëŸ¬",
+ "symbol": "BND"
+ },
+ "BIF": {
+ "name": "부룬디 프랑",
+ "symbol": "BIF"
+ },
+ "BTN": {
+ "name": "부탄 눌투눔",
+ "symbol": "BTN"
+ },
+ "BGN": {
+ "name": "불가리아 레프",
+ "symbol": "BGN"
+ },
+ "BRL": {
+ "name": "브ë¼ì§ˆ 레알",
+ "symbol": "R$"
+ },
+ "SAR": {
+ "name": "사우디아ë¼ë¹„ì•„ 리얄",
+ "symbol": "SAR"
+ },
+ "STD": {
+ "name": "ìƒíˆ¬ë©” 프린시페 ë„브ë¼",
+ "symbol": "STD"
+ },
+ "WST": {
+ "name": "ì„œ 사모아 탈ë¼",
+ "symbol": "WST"
+ },
+ "RSD": {
+ "name": "세르비아 디나르",
+ "symbol": "RSD"
+ },
+ "SCR": {
+ "name": "세ì´ì…¸ 루피",
+ "symbol": "SCR"
+ },
+ "SHP": {
+ "name": "세ì¸íŠ¸í—¬ë ˆë‚˜ 파운드",
+ "symbol": "SHP"
+ },
+ "SOS": {
+ "name": "소ë§ë¦¬ì•„ 실ë§",
+ "symbol": "SOS"
+ },
+ "SBD": {
+ "name": "솔로몬 ì œë„ ë‹¬ëŸ¬",
+ "symbol": "SBD"
+ },
+ "SDG": {
+ "name": "수단 파운드",
+ "symbol": "SDG"
+ },
+ "SRD": {
+ "name": "수리남 달러",
+ "symbol": "SRD"
+ },
+ "LKR": {
+ "name": "스리랑카 루피",
+ "symbol": "LKR"
+ },
+ "SZL": {
+ "name": "스와질란드 릴랑게니",
+ "symbol": "SZL"
+ },
+ "SEK": {
+ "name": "ìŠ¤ì›¨ë´ í¬ë¡œë‚˜",
+ "symbol": "SEK"
+ },
+ "CHF": {
+ "name": "스위스 프랑",
+ "symbol": "CHF"
+ },
+ "SYP": {
+ "name": "시리아 파운드",
+ "symbol": "SYP"
+ },
+ "SLL": {
+ "name": "ì‹œì—ë¼ë¦¬ì˜¨ 리온",
+ "symbol": "SLL"
+ },
+ "TWD": {
+ "name": "ì‹  타ì´ì™„ 달러",
+ "symbol": "NT$"
+ },
+ "TRY": {
+ "name": "ì‹  터키 리ë¼",
+ "symbol": "TRY"
+ },
+ "SGD": {
+ "name": "ì‹±ê°€í´ ë‹¬ëŸ¬",
+ "symbol": "SGD"
+ },
+ "AED": {
+ "name": "ì•„ëžì—미리트 디르함",
+ "symbol": "AED"
+ },
+ "AWG": {
+ "name": "아루바 플로린",
+ "symbol": "AWG"
+ },
+ "AMD": {
+ "name": "아르메니아 드람",
+ "symbol": "AMD"
+ },
+ "ARS": {
+ "name": "아르헨티나 페소",
+ "symbol": "ARS"
+ },
+ "ISK": {
+ "name": "ì•„ì´ìŠ¬ëž€ë“œ í¬ë¡œë‚˜",
+ "symbol": "ISK"
+ },
+ "AZN": {
+ "name": "아제르바ì´ìž” 마나트",
+ "symbol": "AZN"
+ },
+ "AFN": {
+ "name": "아프가니스탄 아프가니",
+ "symbol": "AFN"
+ },
+ "ALL": {
+ "name": "알바니아 ë ˆí¬",
+ "symbol": "ALL"
+ },
+ "DZD": {
+ "name": "알제리 디나르",
+ "symbol": "DZD"
+ },
+ "AOA": {
+ "name": "ì•™ê³¨ë¼ ì½´ìž",
+ "symbol": "AOA"
+ },
+ "ERN": {
+ "name": "ì—리트리아 나í¬íŒŒ",
+ "symbol": "ERN"
+ },
+ "SVC": {
+ "name": "엘살바ë„르 콜론",
+ "symbol": "SVC"
+ },
+ "YER": {
+ "name": "예멘 리알",
+ "symbol": "YER"
+ },
+ "OMR": {
+ "name": "오만 리얄",
+ "symbol": "OMR"
+ },
+ "HNL": {
+ "name": "온ë‘ë¼ìŠ¤ 렘피ë¼",
+ "symbol": "HNL"
+ },
+ "JOD": {
+ "name": "요르단 디나르",
+ "symbol": "JOD"
+ },
+ "UGX": {
+ "name": "우간다 실ë§",
+ "symbol": "UGX"
+ },
+ "UYU": {
+ "name": "ìš°ë£¨ê³¼ì´ íŽ˜ì†Œ 우루과요",
+ "symbol": "UYU"
+ },
+ "UZS": {
+ "name": "우즈베키스탄 숨",
+ "symbol": "UZS"
+ },
+ "UAH": {
+ "name": "ìš°í¬ë¼ì´ë‚˜ 그리브나",
+ "symbol": "UAH"
+ },
+ "EUR": {
+ "name": "유로",
+ "symbol": "€"
+ },
+ "ETB": {
+ "name": "ì´ë””오피아 비르",
+ "symbol": "ETB"
+ },
+ "IQD": {
+ "name": "ì´ë¼í¬ 디나르",
+ "symbol": "IQD"
+ },
+ "IRR": {
+ "name": "ì´ëž€ 리얄",
+ "symbol": "IRR"
+ },
+ "ILS": {
+ "name": "ì´ìŠ¤ë¼ì—˜ 신권 세켈",
+ "symbol": "₪"
+ },
+ "EGP": {
+ "name": "ì´ì§‘트 파운드",
+ "symbol": "EGP"
+ },
+ "INR": {
+ "name": "ì¸ë„ 루피",
+ "symbol": "₹"
+ },
+ "IDR": {
+ "name": "ì¸ë„네시아 루피아",
+ "symbol": "IDR"
+ },
+ "JPY": {
+ "name": "ì¼ë³¸ 엔화",
+ "symbol": "JPÂ¥"
+ },
+ "JMD": {
+ "name": "ìžë©”ì´ì¹´ 달러",
+ "symbol": "JMD"
+ },
+ "ZMW": {
+ "name": "잠비아 ì½°ì³",
+ "symbol": "ZMW"
+ },
+ "KPW": {
+ "name": "ì¡°ì„  ë¯¼ì£¼ì£¼ì˜ ì¸ë¯¼ 공화국 ì›",
+ "symbol": "KPW"
+ },
+ "GEL": {
+ "name": "조지아 ë¼ë¦¬",
+ "symbol": "GEL"
+ },
+ "CNY": {
+ "name": "중국 위안화",
+ "symbol": "CNÂ¥"
+ },
+ "DJF": {
+ "name": "지부티 프랑",
+ "symbol": "DJF"
+ },
+ "GIP": {
+ "name": "지브롤터 파운드",
+ "symbol": "GIP"
+ },
+ "ZWL": {
+ "name": "ì§ë°”브웨 달러 (2009)",
+ "symbol": "ZWL"
+ },
+ "CZK": {
+ "name": "체코 공화국 코루나",
+ "symbol": "CZK"
+ },
+ "CLP": {
+ "name": "칠레 페소",
+ "symbol": "CLP"
+ },
+ "CVE": {
+ "name": "ì¹´ë³´ë² ë¥´ë° ì—스쿠ë„",
+ "symbol": "CVE"
+ },
+ "KZT": {
+ "name": "ì¹´ìží스탄 í…게",
+ "symbol": "KZT"
+ },
+ "QAR": {
+ "name": "카타르 리얄",
+ "symbol": "QAR"
+ },
+ "KHR": {
+ "name": "캄보디아 리얄",
+ "symbol": "KHR"
+ },
+ "CAD": {
+ "name": "ìºë‚˜ë‹¤ 달러",
+ "symbol": "CA$"
+ },
+ "KES": {
+ "name": "ì¼€ëƒ ì‹¤ë§",
+ "symbol": "KES"
+ },
+ "KYD": {
+ "name": "ì¼€ì´ë§¨ ì œë„ ë‹¬ëŸ¬",
+ "symbol": "KYD"
+ },
+ "KMF": {
+ "name": "코모르 프랑",
+ "symbol": "KMF"
+ },
+ "CRC": {
+ "name": "코스타리카 콜론",
+ "symbol": "CRC"
+ },
+ "COP": {
+ "name": "콜롬비아 페소",
+ "symbol": "COP"
+ },
+ "CDF": {
+ "name": "콩고 프랑 콩골ë¼ìŠ¤",
+ "symbol": "CDF"
+ },
+ "CUC": {
+ "name": "쿠바 태환 페소",
+ "symbol": "CUC"
+ },
+ "CUP": {
+ "name": "쿠바 페소",
+ "symbol": "CUP"
+ },
+ "KWD": {
+ "name": "쿠웨ì´íŠ¸ 디나르",
+ "symbol": "KWD"
+ },
+ "HRK": {
+ "name": "í¬ë¡œì•„í‹°ì•„ 쿠나",
+ "symbol": "HRK"
+ },
+ "KGS": {
+ "name": "키르기스스탄 솜",
+ "symbol": "KGS"
+ },
+ "TJS": {
+ "name": "타지키스탄 소모니",
+ "symbol": "TJS"
+ },
+ "TZS": {
+ "name": "탄ìžë‹ˆì•„ 실ë§",
+ "symbol": "TZS"
+ },
+ "THB": {
+ "name": "태국 바트",
+ "symbol": "฿"
+ },
+ "TOP": {
+ "name": "통가 파앙가",
+ "symbol": "TOP"
+ },
+ "TMT": {
+ "name": "투르í¬ë©”니스탄 마나트",
+ "symbol": "TMT"
+ },
+ "TND": {
+ "name": "튀니지 디나르",
+ "symbol": "TND"
+ },
+ "TTD": {
+ "name": "트리니다드 토바고 달러",
+ "symbol": "TTD"
+ },
+ "PAB": {
+ "name": "파나마 발보아",
+ "symbol": "PAB"
+ },
+ "PYG": {
+ "name": "파ë¼ê³¼ì´ ê³¼ë¼ë‹ˆ",
+ "symbol": "PYG"
+ },
+ "GBP": {
+ "name": "파운드",
+ "symbol": "£"
+ },
+ "PKR": {
+ "name": "파키스탄 루피",
+ "symbol": "PKR"
+ },
+ "PGK": {
+ "name": "파푸아뉴기니 키나",
+ "symbol": "PGK"
+ },
+ "PEN": {
+ "name": "페루 누ì—ë³´ 솔",
+ "symbol": "PEN"
+ },
+ "FKP": {
+ "name": "í¬í´ëžœë“œì œë„ 파운드",
+ "symbol": "FKP"
+ },
+ "PLN": {
+ "name": "í´ëž€ë“œ ì¦ë¡œí‹°",
+ "symbol": "PLN"
+ },
+ "FJD": {
+ "name": "피지 달러",
+ "symbol": "FJD"
+ },
+ "PHP": {
+ "name": "필리핀 페소",
+ "symbol": "PHP"
+ },
+ "HTG": {
+ "name": "하ì´í‹° 구르드",
+ "symbol": "HTG"
+ },
+ "HUF": {
+ "name": "í—가리 í¬ë¦°íŠ¸",
+ "symbol": "HUF"
+ },
+ "AUD": {
+ "name": "호주 달러",
+ "symbol": "AU$"
+ },
+ "HKD": {
+ "name": "í™ì½© 달러",
+ "symbol": "HK$"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/currency/ks.json b/library/intl/resources/currency/ks.json
new file mode 100644
index 000000000..0ce1b1582
--- /dev/null
+++ b/library/intl/resources/currency/ks.json
@@ -0,0 +1,634 @@
+{
+ "CUC": {
+ "name": "CUC",
+ "symbol": "CUC"
+ },
+ "CVE": {
+ "name": "CVE",
+ "symbol": "CVE"
+ },
+ "DJF": {
+ "name": "DJF",
+ "symbol": "DJF"
+ },
+ "SCR": {
+ "name": "SCR",
+ "symbol": "SCR"
+ },
+ "SLL": {
+ "name": "SLL",
+ "symbol": "SLL"
+ },
+ "SSP": {
+ "name": "SSP",
+ "symbol": "SSP"
+ },
+ "STD": {
+ "name": "STD",
+ "symbol": "STD"
+ },
+ "TMT": {
+ "name": "TMT",
+ "symbol": "TMT"
+ },
+ "ZWL": {
+ "name": "ZWL",
+ "symbol": "ZWL"
+ },
+ "AZN": {
+ "name": "آزَرباجانی مَنَٹ",
+ "symbol": "AZN"
+ },
+ "AUD": {
+ "name": "آسٹریلÙیَن ڈالَر",
+ "symbol": "A$"
+ },
+ "ARS": {
+ "name": "أرجَنٹیٖن Ù¾Ùسو",
+ "symbol": "ARS"
+ },
+ "ALL": {
+ "name": "اٮ۪لبینÙیَن Ù„ÙÚ©",
+ "symbol": "ALL"
+ },
+ "DZD": {
+ "name": "اٮ۪لجیرÙیَن ڈیٖنار",
+ "symbol": "DZD"
+ },
+ "AOA": {
+ "name": "اٮ۪نگولَن کوانزا",
+ "symbol": "AOA"
+ },
+ "UZS": {
+ "name": "اÙبیکÙستان سوم",
+ "symbol": "UZS"
+ },
+ "ETB": {
+ "name": "اÙتھوپÙیَن بÙر",
+ "symbol": "ETB"
+ },
+ "EGP": {
+ "name": "اÙجÙپٹÙیَن Ù¾ÙŽÙˆÙÙ†Ú‘",
+ "symbol": "EGP"
+ },
+ "AMD": {
+ "name": "اَرمانٮ۪ن ڈرٛٮ۪م",
+ "symbol": "AMD"
+ },
+ "AWG": {
+ "name": "اَروبَن ÙÙلورÙÙ†",
+ "symbol": "AWG"
+ },
+ "UYU": {
+ "name": "اÙروٗگایَن پیٚسو",
+ "symbol": "UYU"
+ },
+ "ILS": {
+ "name": "اÙزرٲیÙÙ„ÛŒ Ù†Ù”ÙˆÛ Ø´Ù®ÛªÙ‚Ù•Ù„",
+ "symbol": "₪"
+ },
+ "AFN": {
+ "name": "اÙغان اÙغٲنی",
+ "symbol": "AFN"
+ },
+ "UGX": {
+ "name": "اÙگاداÛÙÚ© Ø´ÙÙ„ÙÙ†Ù›Ú¯",
+ "symbol": "UGX"
+ },
+ "IDR": {
+ "name": "اÙنڑونیشیاÛÙÚ© رÙÙ¾ÙیاÛ",
+ "symbol": "IDR"
+ },
+ "OMR": {
+ "name": "اومÙÙ†ÛŒ رÙیال",
+ "symbol": "OMR"
+ },
+ "IQD": {
+ "name": "ایٖراقÙÚ© دیٖنار",
+ "symbol": "IQD"
+ },
+ "IRR": {
+ "name": "ایٖرانÙÚ© رÙیال",
+ "symbol": "IRR"
+ },
+ "ISK": {
+ "name": "اَیسلینٛڑÙÚ© کرٛونا",
+ "symbol": "ISK"
+ },
+ "BBD": {
+ "name": "بابیڑÙیَن ڈالَر",
+ "symbol": "BBD"
+ },
+ "BHD": {
+ "name": "بحریٖنی دیٖنار",
+ "symbol": "BHD"
+ },
+ "BRL": {
+ "name": "برٛازیٖلین رÙیَل",
+ "symbol": "R$"
+ },
+ "GBP": {
+ "name": "برطٲنوی پاونٛڑ سٹٔرلÙÙ†Ù›Ú¯",
+ "symbol": "£"
+ },
+ "BMD": {
+ "name": "بٔرمیوٗڑَن ڈالَر",
+ "symbol": "BMD"
+ },
+ "BIF": {
+ "name": "بÙرÙÙ†Ú‘Ùین Ùرینٛک",
+ "symbol": "BIF"
+ },
+ "BND": {
+ "name": "برٛونی ڈالَر",
+ "symbol": "BND"
+ },
+ "BZD": {
+ "name": "بÙÙ„Ùزی ڈالر",
+ "symbol": "BZD"
+ },
+ "BYR": {
+ "name": "بÙلیروشÙیَن رÙبٕل",
+ "symbol": "BYR"
+ },
+ "BDT": {
+ "name": "بَنگلادیٖشی ٹَکا",
+ "symbol": "BDT"
+ },
+ "BSD": {
+ "name": "بÛامÙیَن ڈالر",
+ "symbol": "BSD"
+ },
+ "BWP": {
+ "name": "بوٹٕسوانَن Ù¾Ùلا",
+ "symbol": "BWP"
+ },
+ "BTN": {
+ "name": "بوٗٹینیٖز Ù†Ú¯Ùلٹرٛم",
+ "symbol": "BTN"
+ },
+ "BAM": {
+ "name": "بوزنÙیاÛَرزÙگووÙنا کَنوٲٹیبٕل مارٕک",
+ "symbol": "BAM"
+ },
+ "BOB": {
+ "name": "بولÙÙˆÙیَن بولوینو",
+ "symbol": "BOB"
+ },
+ "BGN": {
+ "name": "بیلگیرÙیَن Ûاڑ Ù„ÙÙˆ",
+ "symbol": "BGN"
+ },
+ "PKR": {
+ "name": "پاکÙØ³ØªÙ²Ù†Û Ø±Û„Ù¾ÙŽÛ’",
+ "symbol": "PKR"
+ },
+ "PAB": {
+ "name": "پانامانÙیَن بالبوز",
+ "symbol": "PAB"
+ },
+ "PYG": {
+ "name": "پٮ۪رٮ۪گیوٗوَیَن Ú¯Ùعارانی",
+ "symbol": "PYG"
+ },
+ "PEN": {
+ "name": "پٔریوٗوÙیَن نیوٗاوز سولٕز",
+ "symbol": "PEN"
+ },
+ "PHP": {
+ "name": "Ù¾Ú¾ÙÙ„ÙپایÙÙ”Ù† پٮ۪سو",
+ "symbol": "PHP"
+ },
+ "PLN": {
+ "name": "پولÙØ´ زلوٹی",
+ "symbol": "PLN"
+ },
+ "TJS": {
+ "name": "تاجÙکتانÙÚ© سَمونی",
+ "symbol": "TJS"
+ },
+ "TRY": {
+ "name": "تÙرکیÛÙÚ© لیرا",
+ "symbol": "TRY"
+ },
+ "TZS": {
+ "name": "تَنزانیاÛÙÚ© Ø´ÙÙ„ÙÙ†Ù›Ú¯",
+ "symbol": "TZS"
+ },
+ "THB": {
+ "name": "تھایھک بات",
+ "symbol": "THB"
+ },
+ "TTD": {
+ "name": "ٹرÙÙ†Û٠ڈیڈ تÛÙ• ٹوبیگو ڈالَر",
+ "symbol": "TTD"
+ },
+ "TND": {
+ "name": "Ù¹ÙنیشیاÛÙÚ© دیٖنار",
+ "symbol": "TND"
+ },
+ "TOP": {
+ "name": "ٹونگَن پانٛگا",
+ "symbol": "TOP"
+ },
+ "JPY": {
+ "name": "جاپانÙÚ© یَن",
+ "symbol": "JPÂ¥"
+ },
+ "GEL": {
+ "name": "جارجÙیَن لاری",
+ "symbol": "GEL"
+ },
+ "JOD": {
+ "name": "جَرڑینیاÛÙÚ© دیٖنار",
+ "symbol": "JOD"
+ },
+ "JMD": {
+ "name": "جَمَیکاÛÙÚ© ڑالَر",
+ "symbol": "JMD"
+ },
+ "KPW": {
+ "name": "جنوٗبی کورÙیَن ÙˆÙŽÙ†",
+ "symbol": "KPW"
+ },
+ "CLP": {
+ "name": "Ú†ÙÙ„ÙÙ† Ù¾Ùسو",
+ "symbol": "CLP"
+ },
+ "CZK": {
+ "name": "چیک کوریٖنا",
+ "symbol": "CZK"
+ },
+ "CNY": {
+ "name": "چینیٖز یَن رÙنمÙنبی",
+ "symbol": "CNÂ¥"
+ },
+ "HKD": {
+ "name": "حانٛگ کانٛگÙÚ© ڑالَر",
+ "symbol": "HK$"
+ },
+ "HUF": {
+ "name": "حَنگیرÙیَن ÙورÙÙ†Ù›Ù¹",
+ "symbol": "HUF"
+ },
+ "HNL": {
+ "name": "حونڑورنÙÚ© لٮ۪مپیٖرا",
+ "symbol": "HNL"
+ },
+ "HTG": {
+ "name": "حیشَنÙÚ© Ú¯ÙˆÚ‘",
+ "symbol": "HTG"
+ },
+ "DKK": {
+ "name": "ÚˆÙ”Ù†ÙØ´ کرٛون",
+ "symbol": "DKK"
+ },
+ "DOP": {
+ "name": "ڈومÙÙ†ÙÚ©ÙŽÙ† Ù¾Ùسو",
+ "symbol": "DOP"
+ },
+ "ERN": {
+ "name": "رÙٹریٖن Ù†ÙŽÙکا",
+ "symbol": "ERN"
+ },
+ "RUB": {
+ "name": "رٔشیَن رَبٕل",
+ "symbol": "RUB"
+ },
+ "RWF": {
+ "name": "روانٛڑَن Ùرانٛک",
+ "symbol": "RWF"
+ },
+ "RON": {
+ "name": "رومانÙیَن لٮ۪یوٗ",
+ "symbol": "RON"
+ },
+ "ZMW": {
+ "name": "زÙمبابیÙÚ© کواچا",
+ "symbol": "ZMW"
+ },
+ "ZAR": {
+ "name": "ساوÙتھ اÙریٖکاÛÙÚ© رینڈ",
+ "symbol": "ZAR"
+ },
+ "KRW": {
+ "name": "ساوتھ کورÙیَن ÙˆÙŽÙ†",
+ "symbol": "â‚©"
+ },
+ "RSD": {
+ "name": "سٔربÙیَن دیٖنار",
+ "symbol": "RSD"
+ },
+ "LKR": {
+ "name": "سری لَنکاÛÙ•Ú† رۄپَے",
+ "symbol": "LKR"
+ },
+ "SRD": {
+ "name": "سÙریٖنامÙÚ© ڈالَر",
+ "symbol": "SRD"
+ },
+ "SVC": {
+ "name": "سَلویدَرÙÚ© کولَن",
+ "symbol": "SVC"
+ },
+ "WST": {
+ "name": "سَمون تَلا",
+ "symbol": "WST"
+ },
+ "SGD": {
+ "name": "سÙنگاپورÙÚ© ڈالَر",
+ "symbol": "SGD"
+ },
+ "SZL": {
+ "name": "سوازی Ù„Ùلَنگیٚنی",
+ "symbol": "SZL"
+ },
+ "SAR": {
+ "name": "سودیٖیÙÚ© رÙیال",
+ "symbol": "SAR"
+ },
+ "SDG": {
+ "name": "سوٗڈانÙÚ© پونٛڈ",
+ "symbol": "SDG"
+ },
+ "CHF": {
+ "name": "سÙÙˆÙز Ùریک",
+ "symbol": "CHF"
+ },
+ "SBD": {
+ "name": "سولَمَن جٔزیٖرÙÚ© ڈالَر",
+ "symbol": "SBD"
+ },
+ "SOS": {
+ "name": "سومالی Ø´ÙÙ„ÙÙ†Ù›Ú¯",
+ "symbol": "SOS"
+ },
+ "SEK": {
+ "name": "سویٖڈÙØ´ کَرونا",
+ "symbol": "SEK"
+ },
+ "XAF": {
+ "name": "سی ایٚ٠اے Ùرینک بی ایٖ اے سی",
+ "symbol": "FCFA"
+ },
+ "XOF": {
+ "name": "سی ایٚ٠اے Ùرینک بی سی ایٖ اے او",
+ "symbol": "CFA"
+ },
+ "XPF": {
+ "name": "سی ایٚ٠پی Ùرینک",
+ "symbol": "CFPF"
+ },
+ "SYP": {
+ "name": "سیٖریاÛÙÚ© پونٛڈ",
+ "symbol": "SYP"
+ },
+ "SHP": {
+ "name": "سینٹ ÛیلÙنا پونٛڈ",
+ "symbol": "SHP"
+ },
+ "FJD": {
+ "name": "ÙÙجین ڈالر",
+ "symbol": "FJD"
+ },
+ "FKP": {
+ "name": "ÙیکلینٛڑÙس آیلینٛڑ پونٛڑ",
+ "symbol": "FKP"
+ },
+ "QAR": {
+ "name": "قطاری رÙیال",
+ "symbol": "QAR"
+ },
+ "KWD": {
+ "name": "Ù‚ÙویتÙÚ© دیٖنار",
+ "symbol": "KWD"
+ },
+ "KES": {
+ "name": "کٮ۪نیَن Ø´ÙÙ„ÙÙ†Ù›Ú¯",
+ "symbol": "KES"
+ },
+ "KGS": {
+ "name": "Ú©ÙرگÙستانÙÚ© سوم",
+ "symbol": "KGS"
+ },
+ "HRK": {
+ "name": "کروایشنÙÚ© کوٗنا",
+ "symbol": "HRK"
+ },
+ "KZT": {
+ "name": "کزاکÙستان ٹینٛج",
+ "symbol": "KZT"
+ },
+ "KHR": {
+ "name": "کَمبوڑÙیاÛÙÚ© رÙیال",
+ "symbol": "KHR"
+ },
+ "CRC": {
+ "name": "کوسٹا رÙÚ©ÙŽÙ† کولَن",
+ "symbol": "CRC"
+ },
+ "COP": {
+ "name": "کولَمبÙین Ù¾Ùسو",
+ "symbol": "COP"
+ },
+ "KMF": {
+ "name": "کومورÙیَن Ùرٛینٛک",
+ "symbol": "KMF"
+ },
+ "CDF": {
+ "name": "کونٛگولیٖز Ùرٛیک",
+ "symbol": "CDF"
+ },
+ "KYD": {
+ "name": "کیمین ججیٖرÙÚ© ڑالَر",
+ "symbol": "KYD"
+ },
+ "CAD": {
+ "name": "کینَڑÙیَن ڈالر",
+ "symbol": "CA$"
+ },
+ "CUP": {
+ "name": "کیوٗبَن Ù¾Ùسو",
+ "symbol": "CUP"
+ },
+ "GIP": {
+ "name": "Ú¯Ùبریلٹَر پَاونٛڑ",
+ "symbol": "GIP"
+ },
+ "GNF": {
+ "name": "Ú¯ÙÙ†Ùیَن Ùرٛینٛک",
+ "symbol": "GNF"
+ },
+ "GHS": {
+ "name": "گَنیٚیَن سٮ۪ڑی",
+ "symbol": "GHS"
+ },
+ "GTQ": {
+ "name": "گواٹَمالَن قیوٗٹزَل",
+ "symbol": "GTQ"
+ },
+ "GMD": {
+ "name": "گیمبÙیاÛÙÚ© دلاسی",
+ "symbol": "GMD"
+ },
+ "GYD": {
+ "name": "گَیَنیٖزÙÚ© ڑالَر",
+ "symbol": "GYD"
+ },
+ "LYD": {
+ "name": "Ù„Ùبیَن دیٖنار",
+ "symbol": "LYD"
+ },
+ "LTL": {
+ "name": "Ù„ÙتھوینÙیَن Ù„Ùٹاس",
+ "symbol": "LTL"
+ },
+ "LSL": {
+ "name": "Ù„Ùسوتھو لوٹی",
+ "symbol": "LSL"
+ },
+ "LAK": {
+ "name": "لَوٹÙیَن Ú©ÙÙ¾",
+ "symbol": "LAK"
+ },
+ "LBP": {
+ "name": "لیبنیٖزÙÚ© پاونٛڑ",
+ "symbol": "LBP"
+ },
+ "LRD": {
+ "name": "لَیبیرÙیَن ڑالَر",
+ "symbol": "LRD"
+ },
+ "MVR": {
+ "name": "مالدÙیٖوÙیَن رÙÙÙیا",
+ "symbol": "MVR"
+ },
+ "MOP": {
+ "name": "مٮ۪کانیٖز پَٹاکا",
+ "symbol": "MOP"
+ },
+ "MKD": {
+ "name": "مٮ۪کَڑونÙیَن دیٖنار",
+ "symbol": "MKD"
+ },
+ "MXN": {
+ "name": "مٮ۪کسÙÚ©ÙŽÙ† پٮ۪سو",
+ "symbol": "MX$"
+ },
+ "MGA": {
+ "name": "مٮ۪لٮ۪گیسی اٮ۪ریَری",
+ "symbol": "MGA"
+ },
+ "MWK": {
+ "name": "مٮ۪لیوÙیَن کواچا",
+ "symbol": "MWK"
+ },
+ "AED": {
+ "name": "Ù…ÙØªØ­Ø¯Û Ø¹Ø±Ø¨ اÙمارات دÙرÛÙ…",
+ "symbol": "AED"
+ },
+ "XCD": {
+ "name": "مَشرÙÙ‚ÛŒ کیرÙبÙیَن ڈالَر",
+ "symbol": "EC$"
+ },
+ "MYR": {
+ "name": "مَلیشÙیَن رÙÙ†Ù›Ú¯ÙÙ¹",
+ "symbol": "MYR"
+ },
+ "MUR": {
+ "name": "مورٮ۪شÙیاÛÙ•Ú† رۄپَے",
+ "symbol": "MUR"
+ },
+ "MRO": {
+ "name": "مورÙٹینÙیَن عوگیوٗیا",
+ "symbol": "MRO"
+ },
+ "MAD": {
+ "name": "موروکَن دÙرÛÙŽÙ…",
+ "symbol": "MAD"
+ },
+ "MZN": {
+ "name": "موزیمبÙÚ©ÙŽÙ† مٮ۪ٹÙÚ©ÙŽÙ„",
+ "symbol": "MZN"
+ },
+ "MDL": {
+ "name": "مولڑووین لیوٗ",
+ "symbol": "MDL"
+ },
+ "MNT": {
+ "name": "مۄنگولÙیَن Ù¹ÙگرÙÚ©",
+ "symbol": "MNT"
+ },
+ "MMK": {
+ "name": "Ù…Ùیانما کیاٹ",
+ "symbol": "MMK"
+ },
+ "NAD": {
+ "name": "نامÙبÙیَن ڑالَر",
+ "symbol": "NAD"
+ },
+ "ANG": {
+ "name": "نایدَرلینٛڑ اٮ۪نٹٕلیٖیَن Ú¯Ùلڑَر",
+ "symbol": "ANG"
+ },
+ "NIO": {
+ "name": "Ù†Ùکٮ۪راگÙوٮ۪ن کورڑوبا اورو",
+ "symbol": "NIO"
+ },
+ "NOK": {
+ "name": "نورویٚیÙÙ†ÙÚ© کرٛون",
+ "symbol": "NOK"
+ },
+ "NZD": {
+ "name": "Ù†ÙوزیٖلینٛڑÙÚ© ڑالَر",
+ "symbol": "NZ$"
+ },
+ "TWD": {
+ "name": "نوٚو تیوانÙÚ© ڈالَر",
+ "symbol": "NT$"
+ },
+ "NPR": {
+ "name": "نیپالٕچ رۄپَے",
+ "symbol": "NPR"
+ },
+ "NGN": {
+ "name": "نَیجیرÙیَن ڑالَر",
+ "symbol": "NGN"
+ },
+ "PGK": {
+ "name": "نیوٗ پیپÙعا Ú¯ÙÙ†Ùیَن کیٖنا",
+ "symbol": "PGK"
+ },
+ "INR": {
+ "name": "ÛÙندÙØ³ØªÙ²Ù†Û Ø±Û„Ù¾ÙŽÛ’",
+ "symbol": "₹"
+ },
+ "VUV": {
+ "name": "وَنوٗاَتوٗ وَتوٗ",
+ "symbol": "VUV"
+ },
+ "VEF": {
+ "name": "وینٕزوٗلیÙÚ© بولÙوَر",
+ "symbol": "VEF"
+ },
+ "VND": {
+ "name": "ÙˆÙیَنَمÙÚ© ڈانٛگ",
+ "symbol": "â‚«"
+ },
+ "YER": {
+ "name": "یَمنÙÚ© رÙیال",
+ "symbol": "YER"
+ },
+ "USD": {
+ "name": "یوٗ ایٚس ڈالَر",
+ "symbol": "US$"
+ },
+ "EUR": {
+ "name": "یوٗرو",
+ "symbol": "€"
+ },
+ "UAH": {
+ "name": "یوٗکرینیاÛÙÚ© ÛرÙÙˆÙنیا",
+ "symbol": "UAH"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/currency/ksb.json b/library/intl/resources/currency/ksb.json
new file mode 100644
index 000000000..14978eb04
--- /dev/null
+++ b/library/intl/resources/currency/ksb.json
@@ -0,0 +1,634 @@
+{
+ "AFN": {
+ "name": "AFN",
+ "symbol": "AFN"
+ },
+ "ALL": {
+ "name": "ALL",
+ "symbol": "ALL"
+ },
+ "AMD": {
+ "name": "AMD",
+ "symbol": "AMD"
+ },
+ "ANG": {
+ "name": "ANG",
+ "symbol": "ANG"
+ },
+ "ARS": {
+ "name": "ARS",
+ "symbol": "ARS"
+ },
+ "AWG": {
+ "name": "AWG",
+ "symbol": "AWG"
+ },
+ "AZN": {
+ "name": "AZN",
+ "symbol": "AZN"
+ },
+ "BAM": {
+ "name": "BAM",
+ "symbol": "BAM"
+ },
+ "BBD": {
+ "name": "BBD",
+ "symbol": "BBD"
+ },
+ "BDT": {
+ "name": "BDT",
+ "symbol": "BDT"
+ },
+ "BGN": {
+ "name": "BGN",
+ "symbol": "BGN"
+ },
+ "ETB": {
+ "name": "bil ya Uhabeshi",
+ "symbol": "ETB"
+ },
+ "BMD": {
+ "name": "BMD",
+ "symbol": "BMD"
+ },
+ "BND": {
+ "name": "BND",
+ "symbol": "BND"
+ },
+ "BOB": {
+ "name": "BOB",
+ "symbol": "BOB"
+ },
+ "BRL": {
+ "name": "BRL",
+ "symbol": "R$"
+ },
+ "BSD": {
+ "name": "BSD",
+ "symbol": "BSD"
+ },
+ "BTN": {
+ "name": "BTN",
+ "symbol": "BTN"
+ },
+ "BYR": {
+ "name": "BYR",
+ "symbol": "BYR"
+ },
+ "BZD": {
+ "name": "BZD",
+ "symbol": "BZD"
+ },
+ "CLP": {
+ "name": "CLP",
+ "symbol": "CLP"
+ },
+ "COP": {
+ "name": "COP",
+ "symbol": "COP"
+ },
+ "CRC": {
+ "name": "CRC",
+ "symbol": "CRC"
+ },
+ "CUC": {
+ "name": "CUC",
+ "symbol": "CUC"
+ },
+ "CUP": {
+ "name": "CUP",
+ "symbol": "CUP"
+ },
+ "CZK": {
+ "name": "CZK",
+ "symbol": "CZK"
+ },
+ "GMD": {
+ "name": "dalasi ya Gambia",
+ "symbol": "GMD"
+ },
+ "AED": {
+ "name": "dilham ya Falme za Kialabu",
+ "symbol": "AED"
+ },
+ "MAD": {
+ "name": "dilham ya Moloko",
+ "symbol": "MAD"
+ },
+ "DZD": {
+ "name": "dinali ya Aljelia",
+ "symbol": "DZD"
+ },
+ "BHD": {
+ "name": "dinali ya Bahaleni",
+ "symbol": "BHD"
+ },
+ "LYD": {
+ "name": "dinali ya Libya",
+ "symbol": "LYD"
+ },
+ "SDG": {
+ "name": "dinali ya Sudani",
+ "symbol": "SDG"
+ },
+ "TND": {
+ "name": "dinali ya Tunisia",
+ "symbol": "TND"
+ },
+ "DKK": {
+ "name": "DKK",
+ "symbol": "DKK"
+ },
+ "STD": {
+ "name": "dobla ya Sao Tome na Plincipe",
+ "symbol": "STD"
+ },
+ "AUD": {
+ "name": "dola ya Austlalia",
+ "symbol": "A$"
+ },
+ "CAD": {
+ "name": "dola ya Kanada",
+ "symbol": "CA$"
+ },
+ "LRD": {
+ "name": "dola ya Libelia",
+ "symbol": "LRD"
+ },
+ "USD": {
+ "name": "dola ya Malekani",
+ "symbol": "US$"
+ },
+ "NAD": {
+ "name": "dola ya Namibia",
+ "symbol": "NAD"
+ },
+ "DOP": {
+ "name": "DOP",
+ "symbol": "DOP"
+ },
+ "CVE": {
+ "name": "eskudo ya Kepuvede",
+ "symbol": "CVE"
+ },
+ "XOF": {
+ "name": "falanga CFA BCEAO",
+ "symbol": "CFA"
+ },
+ "XAF": {
+ "name": "falanga CFA BEAC",
+ "symbol": "FCFA"
+ },
+ "MGA": {
+ "name": "falanga ya Bukini",
+ "symbol": "MGA"
+ },
+ "BIF": {
+ "name": "falanga ya Bulundi",
+ "symbol": "BIF"
+ },
+ "DJF": {
+ "name": "falanga ya Jibuti",
+ "symbol": "DJF"
+ },
+ "KMF": {
+ "name": "falanga ya Komolo",
+ "symbol": "KMF"
+ },
+ "CDF": {
+ "name": "falanga ya Kongo",
+ "symbol": "CDF"
+ },
+ "RWF": {
+ "name": "falanga ya Lwanda",
+ "symbol": "RWF"
+ },
+ "CHF": {
+ "name": "falanga ya Uswisi",
+ "symbol": "CHF"
+ },
+ "FJD": {
+ "name": "FJD",
+ "symbol": "FJD"
+ },
+ "FKP": {
+ "name": "FKP",
+ "symbol": "FKP"
+ },
+ "GEL": {
+ "name": "GEL",
+ "symbol": "GEL"
+ },
+ "GHS": {
+ "name": "GHS",
+ "symbol": "GHS"
+ },
+ "GIP": {
+ "name": "GIP",
+ "symbol": "GIP"
+ },
+ "GNF": {
+ "name": "GNF",
+ "symbol": "GNF"
+ },
+ "GTQ": {
+ "name": "GTQ",
+ "symbol": "GTQ"
+ },
+ "GYD": {
+ "name": "GYD",
+ "symbol": "GYD"
+ },
+ "HKD": {
+ "name": "HKD",
+ "symbol": "HK$"
+ },
+ "HNL": {
+ "name": "HNL",
+ "symbol": "HNL"
+ },
+ "HRK": {
+ "name": "HRK",
+ "symbol": "HRK"
+ },
+ "HTG": {
+ "name": "HTG",
+ "symbol": "HTG"
+ },
+ "HUF": {
+ "name": "HUF",
+ "symbol": "HUF"
+ },
+ "IDR": {
+ "name": "IDR",
+ "symbol": "IDR"
+ },
+ "ILS": {
+ "name": "ILS",
+ "symbol": "₪"
+ },
+ "IQD": {
+ "name": "IQD",
+ "symbol": "IQD"
+ },
+ "IRR": {
+ "name": "IRR",
+ "symbol": "IRR"
+ },
+ "ISK": {
+ "name": "ISK",
+ "symbol": "ISK"
+ },
+ "JMD": {
+ "name": "JMD",
+ "symbol": "JMD"
+ },
+ "JOD": {
+ "name": "JOD",
+ "symbol": "JOD"
+ },
+ "KGS": {
+ "name": "KGS",
+ "symbol": "KGS"
+ },
+ "KHR": {
+ "name": "KHR",
+ "symbol": "KHR"
+ },
+ "KPW": {
+ "name": "KPW",
+ "symbol": "KPW"
+ },
+ "KRW": {
+ "name": "KRW",
+ "symbol": "â‚©"
+ },
+ "MWK": {
+ "name": "kwacha ya Malawi",
+ "symbol": "MWK"
+ },
+ "ZMW": {
+ "name": "kwacha ya Zambia",
+ "symbol": "ZMW"
+ },
+ "AOA": {
+ "name": "kwanza ya Angola",
+ "symbol": "AOA"
+ },
+ "KWD": {
+ "name": "KWD",
+ "symbol": "KWD"
+ },
+ "KYD": {
+ "name": "KYD",
+ "symbol": "KYD"
+ },
+ "KZT": {
+ "name": "KZT",
+ "symbol": "KZT"
+ },
+ "LAK": {
+ "name": "LAK",
+ "symbol": "LAK"
+ },
+ "ZAR": {
+ "name": "landi ya Aflika Kusini",
+ "symbol": "ZAR"
+ },
+ "LBP": {
+ "name": "LBP",
+ "symbol": "LBP"
+ },
+ "SLL": {
+ "name": "leoni",
+ "symbol": "SLL"
+ },
+ "SZL": {
+ "name": "lilangeni",
+ "symbol": "SZL"
+ },
+ "SAR": {
+ "name": "liyal ya Saudia",
+ "symbol": "SAR"
+ },
+ "LKR": {
+ "name": "LKR",
+ "symbol": "LKR"
+ },
+ "LSL": {
+ "name": "loti ya Lesoto",
+ "symbol": "LSL"
+ },
+ "LTL": {
+ "name": "LTL",
+ "symbol": "LTL"
+ },
+ "INR": {
+ "name": "lupia ya India",
+ "symbol": "₹"
+ },
+ "MUR": {
+ "name": "lupia ya Molisi",
+ "symbol": "MUR"
+ },
+ "SCR": {
+ "name": "lupia ya Shelisheli",
+ "symbol": "SCR"
+ },
+ "MDL": {
+ "name": "MDL",
+ "symbol": "MDL"
+ },
+ "MKD": {
+ "name": "MKD",
+ "symbol": "MKD"
+ },
+ "MMK": {
+ "name": "MMK",
+ "symbol": "MMK"
+ },
+ "MNT": {
+ "name": "MNT",
+ "symbol": "MNT"
+ },
+ "MOP": {
+ "name": "MOP",
+ "symbol": "MOP"
+ },
+ "MVR": {
+ "name": "MVR",
+ "symbol": "MVR"
+ },
+ "MXN": {
+ "name": "MXN",
+ "symbol": "MX$"
+ },
+ "MYR": {
+ "name": "MYR",
+ "symbol": "MYR"
+ },
+ "MZN": {
+ "name": "MZN",
+ "symbol": "MZN"
+ },
+ "NGN": {
+ "name": "naila ya Naijelia",
+ "symbol": "NGN"
+ },
+ "ERN": {
+ "name": "nakfa ya Elitlea",
+ "symbol": "ERN"
+ },
+ "NIO": {
+ "name": "NIO",
+ "symbol": "NIO"
+ },
+ "NOK": {
+ "name": "NOK",
+ "symbol": "NOK"
+ },
+ "NPR": {
+ "name": "NPR",
+ "symbol": "NPR"
+ },
+ "NZD": {
+ "name": "NZD",
+ "symbol": "NZ$"
+ },
+ "OMR": {
+ "name": "OMR",
+ "symbol": "OMR"
+ },
+ "PAB": {
+ "name": "PAB",
+ "symbol": "PAB"
+ },
+ "EGP": {
+ "name": "pauni ya Misli",
+ "symbol": "EGP"
+ },
+ "SHP": {
+ "name": "pauni ya Santahelena",
+ "symbol": "SHP"
+ },
+ "GBP": {
+ "name": "pauni ya Uingeeza",
+ "symbol": "£"
+ },
+ "PEN": {
+ "name": "PEN",
+ "symbol": "PEN"
+ },
+ "PGK": {
+ "name": "PGK",
+ "symbol": "PGK"
+ },
+ "PHP": {
+ "name": "PHP",
+ "symbol": "PHP"
+ },
+ "PKR": {
+ "name": "PKR",
+ "symbol": "PKR"
+ },
+ "PLN": {
+ "name": "PLN",
+ "symbol": "PLN"
+ },
+ "BWP": {
+ "name": "pula ya Botswana",
+ "symbol": "BWP"
+ },
+ "PYG": {
+ "name": "PYG",
+ "symbol": "PYG"
+ },
+ "QAR": {
+ "name": "QAR",
+ "symbol": "QAR"
+ },
+ "RON": {
+ "name": "RON",
+ "symbol": "RON"
+ },
+ "RSD": {
+ "name": "RSD",
+ "symbol": "RSD"
+ },
+ "RUB": {
+ "name": "RUB",
+ "symbol": "RUB"
+ },
+ "JPY": {
+ "name": "salafu ya Kijapani",
+ "symbol": "JPÂ¥"
+ },
+ "SBD": {
+ "name": "SBD",
+ "symbol": "SBD"
+ },
+ "SEK": {
+ "name": "SEK",
+ "symbol": "SEK"
+ },
+ "SGD": {
+ "name": "SGD",
+ "symbol": "SGD"
+ },
+ "KES": {
+ "name": "shilingi ya Kenya",
+ "symbol": "KES"
+ },
+ "SOS": {
+ "name": "shilingi ya Somalia",
+ "symbol": "SOS"
+ },
+ "TZS": {
+ "name": "shilingi ya Tanzania",
+ "symbol": "TSh"
+ },
+ "UGX": {
+ "name": "shilingi ya Uganda",
+ "symbol": "UGX"
+ },
+ "SRD": {
+ "name": "SRD",
+ "symbol": "SRD"
+ },
+ "SSP": {
+ "name": "SSP",
+ "symbol": "SSP"
+ },
+ "SVC": {
+ "name": "SVC",
+ "symbol": "SVC"
+ },
+ "SYP": {
+ "name": "SYP",
+ "symbol": "SYP"
+ },
+ "THB": {
+ "name": "THB",
+ "symbol": "THB"
+ },
+ "TJS": {
+ "name": "TJS",
+ "symbol": "TJS"
+ },
+ "TMT": {
+ "name": "TMT",
+ "symbol": "TMT"
+ },
+ "TOP": {
+ "name": "TOP",
+ "symbol": "TOP"
+ },
+ "TRY": {
+ "name": "TRY",
+ "symbol": "TRY"
+ },
+ "TTD": {
+ "name": "TTD",
+ "symbol": "TTD"
+ },
+ "TWD": {
+ "name": "TWD",
+ "symbol": "NT$"
+ },
+ "UAH": {
+ "name": "UAH",
+ "symbol": "UAH"
+ },
+ "MRO": {
+ "name": "ugwiya ya Molitania",
+ "symbol": "MRO"
+ },
+ "UYU": {
+ "name": "UYU",
+ "symbol": "UYU"
+ },
+ "UZS": {
+ "name": "UZS",
+ "symbol": "UZS"
+ },
+ "VEF": {
+ "name": "VEF",
+ "symbol": "VEF"
+ },
+ "VND": {
+ "name": "VND",
+ "symbol": "â‚«"
+ },
+ "VUV": {
+ "name": "VUV",
+ "symbol": "VUV"
+ },
+ "WST": {
+ "name": "WST",
+ "symbol": "WST"
+ },
+ "XCD": {
+ "name": "XCD",
+ "symbol": "EC$"
+ },
+ "XPF": {
+ "name": "XPF",
+ "symbol": "CFPF"
+ },
+ "CNY": {
+ "name": "yaun lenminbi ya China",
+ "symbol": "CNÂ¥"
+ },
+ "YER": {
+ "name": "YER",
+ "symbol": "YER"
+ },
+ "EUR": {
+ "name": "yulo",
+ "symbol": "€"
+ },
+ "ZWL": {
+ "name": "ZWL",
+ "symbol": "ZWL"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/currency/ksf.json b/library/intl/resources/currency/ksf.json
new file mode 100644
index 000000000..4ac12ffae
--- /dev/null
+++ b/library/intl/resources/currency/ksf.json
@@ -0,0 +1,634 @@
+{
+ "AFN": {
+ "name": "AFN",
+ "symbol": "AFN"
+ },
+ "ALL": {
+ "name": "ALL",
+ "symbol": "ALL"
+ },
+ "AMD": {
+ "name": "AMD",
+ "symbol": "AMD"
+ },
+ "ANG": {
+ "name": "ANG",
+ "symbol": "ANG"
+ },
+ "ARS": {
+ "name": "ARS",
+ "symbol": "ARS"
+ },
+ "AWG": {
+ "name": "AWG",
+ "symbol": "AWG"
+ },
+ "AZN": {
+ "name": "AZN",
+ "symbol": "AZN"
+ },
+ "BAM": {
+ "name": "BAM",
+ "symbol": "BAM"
+ },
+ "BBD": {
+ "name": "BBD",
+ "symbol": "BBD"
+ },
+ "BDT": {
+ "name": "BDT",
+ "symbol": "BDT"
+ },
+ "BGN": {
+ "name": "BGN",
+ "symbol": "BGN"
+ },
+ "BMD": {
+ "name": "BMD",
+ "symbol": "BMD"
+ },
+ "BND": {
+ "name": "BND",
+ "symbol": "BND"
+ },
+ "BOB": {
+ "name": "BOB",
+ "symbol": "BOB"
+ },
+ "BRL": {
+ "name": "BRL",
+ "symbol": "R$"
+ },
+ "BSD": {
+ "name": "BSD",
+ "symbol": "BSD"
+ },
+ "BTN": {
+ "name": "BTN",
+ "symbol": "BTN"
+ },
+ "BYR": {
+ "name": "BYR",
+ "symbol": "BYR"
+ },
+ "BZD": {
+ "name": "BZD",
+ "symbol": "BZD"
+ },
+ "CLP": {
+ "name": "CLP",
+ "symbol": "CLP"
+ },
+ "COP": {
+ "name": "COP",
+ "symbol": "COP"
+ },
+ "CRC": {
+ "name": "CRC",
+ "symbol": "CRC"
+ },
+ "CUC": {
+ "name": "CUC",
+ "symbol": "CUC"
+ },
+ "CUP": {
+ "name": "CUP",
+ "symbol": "CUP"
+ },
+ "CZK": {
+ "name": "CZK",
+ "symbol": "CZK"
+ },
+ "DKK": {
+ "name": "DKK",
+ "symbol": "DKK"
+ },
+ "DOP": {
+ "name": "DOP",
+ "symbol": "DOP"
+ },
+ "FJD": {
+ "name": "FJD",
+ "symbol": "FJD"
+ },
+ "FKP": {
+ "name": "FKP",
+ "symbol": "FKP"
+ },
+ "XAF": {
+ "name": "fráŋ",
+ "symbol": "FCFA"
+ },
+ "GEL": {
+ "name": "GEL",
+ "symbol": "GEL"
+ },
+ "GHS": {
+ "name": "GHS",
+ "symbol": "GHS"
+ },
+ "GIP": {
+ "name": "GIP",
+ "symbol": "GIP"
+ },
+ "GNF": {
+ "name": "GNF",
+ "symbol": "GNF"
+ },
+ "GTQ": {
+ "name": "GTQ",
+ "symbol": "GTQ"
+ },
+ "GYD": {
+ "name": "GYD",
+ "symbol": "GYD"
+ },
+ "HKD": {
+ "name": "HKD",
+ "symbol": "HK$"
+ },
+ "HNL": {
+ "name": "HNL",
+ "symbol": "HNL"
+ },
+ "HRK": {
+ "name": "HRK",
+ "symbol": "HRK"
+ },
+ "HTG": {
+ "name": "HTG",
+ "symbol": "HTG"
+ },
+ "HUF": {
+ "name": "HUF",
+ "symbol": "HUF"
+ },
+ "IDR": {
+ "name": "IDR",
+ "symbol": "IDR"
+ },
+ "ILS": {
+ "name": "ILS",
+ "symbol": "₪"
+ },
+ "IQD": {
+ "name": "IQD",
+ "symbol": "IQD"
+ },
+ "IRR": {
+ "name": "IRR",
+ "symbol": "IRR"
+ },
+ "ISK": {
+ "name": "ISK",
+ "symbol": "ISK"
+ },
+ "JMD": {
+ "name": "JMD",
+ "symbol": "JMD"
+ },
+ "JOD": {
+ "name": "JOD",
+ "symbol": "JOD"
+ },
+ "KGS": {
+ "name": "KGS",
+ "symbol": "KGS"
+ },
+ "KHR": {
+ "name": "KHR",
+ "symbol": "KHR"
+ },
+ "KPW": {
+ "name": "KPW",
+ "symbol": "KPW"
+ },
+ "KRW": {
+ "name": "KRW",
+ "symbol": "â‚©"
+ },
+ "KWD": {
+ "name": "KWD",
+ "symbol": "KWD"
+ },
+ "KYD": {
+ "name": "KYD",
+ "symbol": "KYD"
+ },
+ "KZT": {
+ "name": "KZT",
+ "symbol": "KZT"
+ },
+ "LAK": {
+ "name": "LAK",
+ "symbol": "LAK"
+ },
+ "LBP": {
+ "name": "LBP",
+ "symbol": "LBP"
+ },
+ "LKR": {
+ "name": "LKR",
+ "symbol": "LKR"
+ },
+ "LTL": {
+ "name": "LTL",
+ "symbol": "LTL"
+ },
+ "MDL": {
+ "name": "MDL",
+ "symbol": "MDL"
+ },
+ "MKD": {
+ "name": "MKD",
+ "symbol": "MKD"
+ },
+ "MMK": {
+ "name": "MMK",
+ "symbol": "MMK"
+ },
+ "MNT": {
+ "name": "MNT",
+ "symbol": "MNT"
+ },
+ "MOP": {
+ "name": "MOP",
+ "symbol": "MOP"
+ },
+ "ZAR": {
+ "name": "mÉ”ni mÇ Ã¡ afrik anÇ a sud",
+ "symbol": "ZAR"
+ },
+ "XOF": {
+ "name": "mÉ”ni mÇ Ã¡ afríka aná wÉ›s",
+ "symbol": "CFA"
+ },
+ "DZD": {
+ "name": "mÉ”ni mÇ Ã¡ aljÉ›rí",
+ "symbol": "DZD"
+ },
+ "USD": {
+ "name": "mÉ”ni mÇ Ã¡ amÉ›rika",
+ "symbol": "US$"
+ },
+ "AOA": {
+ "name": "mÉ”ni mÇ Ã¡ angóla",
+ "symbol": "AOA"
+ },
+ "SAR": {
+ "name": "mÉ”ni mÇ Ã¡ arabí saodí",
+ "symbol": "SAR"
+ },
+ "BHD": {
+ "name": "mÉ”ni mÇ Ã¡ barÇÌn",
+ "symbol": "BHD"
+ },
+ "AED": {
+ "name": "mÉ”ni mÇ Ã¡ bÇlɔŋ bÇ kaksa bÉ› táatáaÅ‹zÇn",
+ "symbol": "AED"
+ },
+ "BWP": {
+ "name": "mÉ”ni mÇ Ã¡ botswana",
+ "symbol": "BWP"
+ },
+ "BIF": {
+ "name": "mÉ”ni mÇ Ã¡ burundí",
+ "symbol": "BIF"
+ },
+ "CNY": {
+ "name": "mÉ”ni mÇ Ã¡ cín",
+ "symbol": "CNÂ¥"
+ },
+ "DJF": {
+ "name": "mÉ”ni mÇ Ã¡ dyibutí",
+ "symbol": "DJF"
+ },
+ "EGP": {
+ "name": "mÉ”ni mÇ Ã¡ É›jípt",
+ "symbol": "EGP"
+ },
+ "ERN": {
+ "name": "mÉ”ni mÇ Ã¡ É›ritrÉ›Ì",
+ "symbol": "ERN"
+ },
+ "ETB": {
+ "name": "mÉ”ni mÇ Ã¡ É›tyÉ”pí",
+ "symbol": "ETB"
+ },
+ "GMD": {
+ "name": "mÉ”ni mÇ Ã¡ gambí",
+ "symbol": "GMD"
+ },
+ "INR": {
+ "name": "mÉ”ni mÇ Ã¡ indí",
+ "symbol": "₹"
+ },
+ "GBP": {
+ "name": "mÉ”ni mÇ Ã¡ ingÉ›rís",
+ "symbol": "£"
+ },
+ "JPY": {
+ "name": "mÉ”ni mÇ Ã¡ japÉ”ÌÅ‹",
+ "symbol": "JPÂ¥"
+ },
+ "CAD": {
+ "name": "mÉ”ni mÇ Ã¡ kanada",
+ "symbol": "CA$"
+ },
+ "CVE": {
+ "name": "mÉ”ni mÇ Ã¡ kapvÉ›r",
+ "symbol": "CVE"
+ },
+ "KES": {
+ "name": "mÉ”ni mÇ Ã¡ kÉ›nya",
+ "symbol": "KES"
+ },
+ "KMF": {
+ "name": "mÉ”ni mÇ Ã¡ komÉ”r",
+ "symbol": "KMF"
+ },
+ "CDF": {
+ "name": "mÉ”ni mÇ Ã¡ kÉ”ngó",
+ "symbol": "CDF"
+ },
+ "LSL": {
+ "name": "mÉ”ni mÇ Ã¡ lÇsóto",
+ "symbol": "LSL"
+ },
+ "LRD": {
+ "name": "mÉ”ni mÇ Ã¡ libÉ›rya",
+ "symbol": "LRD"
+ },
+ "LYD": {
+ "name": "mÉ”ni mÇ Ã¡ libí",
+ "symbol": "LYD"
+ },
+ "MGA": {
+ "name": "mÉ”ni mÇ Ã¡ madagaska",
+ "symbol": "MGA"
+ },
+ "MWK": {
+ "name": "mÉ”ni mÇ Ã¡ malawi",
+ "symbol": "MWK"
+ },
+ "MAD": {
+ "name": "mÉ”ni mÇ Ã¡ marÉ”k",
+ "symbol": "MAD"
+ },
+ "MUR": {
+ "name": "mÉ”ni mÇ Ã¡ mwarís",
+ "symbol": "MUR"
+ },
+ "MRO": {
+ "name": "mÉ”ni mÇ Ã¡ mwaritaní",
+ "symbol": "MRO"
+ },
+ "NAD": {
+ "name": "mÉ”ni mÇ Ã¡ namibí",
+ "symbol": "NAD"
+ },
+ "NGN": {
+ "name": "mÉ”ni mÇ Ã¡ nijÉ›Ìrya",
+ "symbol": "NGN"
+ },
+ "AUD": {
+ "name": "mÉ”ni mÇ Ã¡ É”stralí",
+ "symbol": "A$"
+ },
+ "EUR": {
+ "name": "mÉ”ni mÇ Ã¡ pÉ›rÉ›sÇÌ",
+ "symbol": "€"
+ },
+ "RWF": {
+ "name": "mÉ”ni mÇ Ã¡ rwanda",
+ "symbol": "RWF"
+ },
+ "STD": {
+ "name": "mÉ”ni mÇ Ã¡ saotomÉ›Ì ri priÅ‹sib",
+ "symbol": "STD"
+ },
+ "SCR": {
+ "name": "mÉ”ni mÇ Ã¡ sÉ›cÉ›l",
+ "symbol": "SCR"
+ },
+ "SHP": {
+ "name": "mÉ”ni mÇ Ã¡ sÉ›ntÉ›Ìlen",
+ "symbol": "SHP"
+ },
+ "SOS": {
+ "name": "mÉ”ni mÇ Ã¡ somalí",
+ "symbol": "SOS"
+ },
+ "SDG": {
+ "name": "mÉ”ni mÇ Ã¡ sudan",
+ "symbol": "SDG"
+ },
+ "SZL": {
+ "name": "mÉ”ni mÇ Ã¡ swazilan",
+ "symbol": "SZL"
+ },
+ "CHF": {
+ "name": "mÉ”ni mÇ Ã¡ swís",
+ "symbol": "CHF"
+ },
+ "SLL": {
+ "name": "mÉ”ni mÇ Ã¡ syÉ›raleon",
+ "symbol": "SLL"
+ },
+ "TZS": {
+ "name": "mÉ”ni mÇ Ã¡ tanzaní",
+ "symbol": "TZS"
+ },
+ "TND": {
+ "name": "mÉ”ni mÇ Ã¡ tunÉ›sí",
+ "symbol": "TND"
+ },
+ "UGX": {
+ "name": "mÉ”ni mÇ Ã¡ uganda",
+ "symbol": "UGX"
+ },
+ "ZMW": {
+ "name": "mÉ”ni mÇ Ã¡ zambí",
+ "symbol": "ZMW"
+ },
+ "MVR": {
+ "name": "MVR",
+ "symbol": "MVR"
+ },
+ "MXN": {
+ "name": "MXN",
+ "symbol": "MX$"
+ },
+ "MYR": {
+ "name": "MYR",
+ "symbol": "MYR"
+ },
+ "MZN": {
+ "name": "MZN",
+ "symbol": "MZN"
+ },
+ "NIO": {
+ "name": "NIO",
+ "symbol": "NIO"
+ },
+ "NOK": {
+ "name": "NOK",
+ "symbol": "NOK"
+ },
+ "NPR": {
+ "name": "NPR",
+ "symbol": "NPR"
+ },
+ "NZD": {
+ "name": "NZD",
+ "symbol": "NZ$"
+ },
+ "OMR": {
+ "name": "OMR",
+ "symbol": "OMR"
+ },
+ "PAB": {
+ "name": "PAB",
+ "symbol": "PAB"
+ },
+ "PEN": {
+ "name": "PEN",
+ "symbol": "PEN"
+ },
+ "PGK": {
+ "name": "PGK",
+ "symbol": "PGK"
+ },
+ "PHP": {
+ "name": "PHP",
+ "symbol": "PHP"
+ },
+ "PKR": {
+ "name": "PKR",
+ "symbol": "PKR"
+ },
+ "PLN": {
+ "name": "PLN",
+ "symbol": "PLN"
+ },
+ "PYG": {
+ "name": "PYG",
+ "symbol": "PYG"
+ },
+ "QAR": {
+ "name": "QAR",
+ "symbol": "QAR"
+ },
+ "RON": {
+ "name": "RON",
+ "symbol": "RON"
+ },
+ "RSD": {
+ "name": "RSD",
+ "symbol": "RSD"
+ },
+ "RUB": {
+ "name": "RUB",
+ "symbol": "RUB"
+ },
+ "SBD": {
+ "name": "SBD",
+ "symbol": "SBD"
+ },
+ "SEK": {
+ "name": "SEK",
+ "symbol": "SEK"
+ },
+ "SGD": {
+ "name": "SGD",
+ "symbol": "SGD"
+ },
+ "SRD": {
+ "name": "SRD",
+ "symbol": "SRD"
+ },
+ "SSP": {
+ "name": "SSP",
+ "symbol": "SSP"
+ },
+ "SVC": {
+ "name": "SVC",
+ "symbol": "SVC"
+ },
+ "SYP": {
+ "name": "SYP",
+ "symbol": "SYP"
+ },
+ "THB": {
+ "name": "THB",
+ "symbol": "THB"
+ },
+ "TJS": {
+ "name": "TJS",
+ "symbol": "TJS"
+ },
+ "TMT": {
+ "name": "TMT",
+ "symbol": "TMT"
+ },
+ "TOP": {
+ "name": "TOP",
+ "symbol": "TOP"
+ },
+ "TRY": {
+ "name": "TRY",
+ "symbol": "TRY"
+ },
+ "TTD": {
+ "name": "TTD",
+ "symbol": "TTD"
+ },
+ "TWD": {
+ "name": "TWD",
+ "symbol": "NT$"
+ },
+ "UAH": {
+ "name": "UAH",
+ "symbol": "UAH"
+ },
+ "UYU": {
+ "name": "UYU",
+ "symbol": "UYU"
+ },
+ "UZS": {
+ "name": "UZS",
+ "symbol": "UZS"
+ },
+ "VEF": {
+ "name": "VEF",
+ "symbol": "VEF"
+ },
+ "VND": {
+ "name": "VND",
+ "symbol": "â‚«"
+ },
+ "VUV": {
+ "name": "VUV",
+ "symbol": "VUV"
+ },
+ "WST": {
+ "name": "WST",
+ "symbol": "WST"
+ },
+ "XCD": {
+ "name": "XCD",
+ "symbol": "EC$"
+ },
+ "XPF": {
+ "name": "XPF",
+ "symbol": "CFPF"
+ },
+ "YER": {
+ "name": "YER",
+ "symbol": "YER"
+ },
+ "ZWL": {
+ "name": "ZWL",
+ "symbol": "ZWL"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/currency/ksh.json b/library/intl/resources/currency/ksh.json
new file mode 100644
index 000000000..c7441e096
--- /dev/null
+++ b/library/intl/resources/currency/ksh.json
@@ -0,0 +1,634 @@
+{
+ "AFN": {
+ "name": "Afjahni",
+ "symbol": "AFN"
+ },
+ "ARS": {
+ "name": "ajentiinesche Peeso",
+ "symbol": "ARS"
+ },
+ "EGP": {
+ "name": "äjiptesche Pongk",
+ "symbol": "EGP"
+ },
+ "ALL": {
+ "name": "albaanesche Lek",
+ "symbol": "ALL"
+ },
+ "DZD": {
+ "name": "aljeresche Denaa",
+ "symbol": "DZD"
+ },
+ "USD": {
+ "name": "ammärrikaanesche Dollaa",
+ "symbol": "US$"
+ },
+ "AOA": {
+ "name": "angjolaanesche Kwansa",
+ "symbol": "AOA"
+ },
+ "AMD": {
+ "name": "armeenesche Dram",
+ "symbol": "AMD"
+ },
+ "AWG": {
+ "name": "arubesche Florin",
+ "symbol": "AWG"
+ },
+ "SVC": {
+ "name": "asalvadorejaanesche Cosan",
+ "symbol": "SVC"
+ },
+ "AZN": {
+ "name": "Asserbaidschaani Manat",
+ "symbol": "AZN"
+ },
+ "ETB": {
+ "name": "ätejoopesche Birr",
+ "symbol": "ETB"
+ },
+ "AUD": {
+ "name": "austraalesche Dollaa",
+ "symbol": "A$"
+ },
+ "BHD": {
+ "name": "Bachrainesche Denaa",
+ "symbol": "BHD"
+ },
+ "BSD": {
+ "name": "bahama’sche Dollaa",
+ "symbol": "BSD"
+ },
+ "BBD": {
+ "name": "Barbados-Dollaa",
+ "symbol": "BBD"
+ },
+ "BZD": {
+ "name": "belizjaanesche Dollaa",
+ "symbol": "BZD"
+ },
+ "BMD": {
+ "name": "Bermuuda-Dollaa",
+ "symbol": "BMD"
+ },
+ "BTN": {
+ "name": "bhutanesesche Ngultrum",
+ "symbol": "BTN"
+ },
+ "BOB": {
+ "name": "Bollivijano",
+ "symbol": "BOB"
+ },
+ "BRL": {
+ "name": "brasilljaanesche Real",
+ "symbol": "R$"
+ },
+ "GBP": {
+ "name": "brittesche £",
+ "symbol": "£"
+ },
+ "BND": {
+ "name": "Brunei-Dollaa",
+ "symbol": "BND"
+ },
+ "BGN": {
+ "name": "buljaaresche Lev",
+ "symbol": "BGN"
+ },
+ "MMK": {
+ "name": "burmeesesche Kyat",
+ "symbol": "MMK"
+ },
+ "BIF": {
+ "name": "burundesche Frang",
+ "symbol": "BIF"
+ },
+ "DKK": {
+ "name": "dänesche Kruhne",
+ "symbol": "DKK"
+ },
+ "AED": {
+ "name": "de vereineschte arraabesche Emiraate ier Dirham",
+ "symbol": "AED"
+ },
+ "STD": {
+ "name": "Dobra vun São Tomé un Príncipe",
+ "symbol": "STD"
+ },
+ "TTD": {
+ "name": "Dollaa uß Trinidad un Tobääjo",
+ "symbol": "TTD"
+ },
+ "DOP": {
+ "name": "dommenikaanesche Peesos",
+ "symbol": "DOP"
+ },
+ "EUR": {
+ "name": "Euro",
+ "symbol": "€"
+ },
+ "FJD": {
+ "name": "Fidschi-Dollaa",
+ "symbol": "FJD"
+ },
+ "PHP": {
+ "name": "fillipiinesche Pesos",
+ "symbol": "PHP"
+ },
+ "XOF": {
+ "name": "Frang uß de Älfebeinköß",
+ "symbol": "CFA"
+ },
+ "DJF": {
+ "name": "Frang uß Dschibuti",
+ "symbol": "DJF"
+ },
+ "HTG": {
+ "name": "haiitesche Gourde",
+ "symbol": "HTG"
+ },
+ "HNL": {
+ "name": "hondureanesche Lempira",
+ "symbol": "HNL"
+ },
+ "HKD": {
+ "name": "Hongkong-Dollaa",
+ "symbol": "HK$"
+ },
+ "INR": {
+ "name": "indesche Ruupije",
+ "symbol": "₹"
+ },
+ "IDR": {
+ "name": "indoneesesche Ruupije",
+ "symbol": "IDR"
+ },
+ "IQD": {
+ "name": "iraakesche Denaa",
+ "symbol": "IQD"
+ },
+ "ISK": {
+ "name": "ißländesche Kruhne",
+ "symbol": "ISK"
+ },
+ "ILS": {
+ "name": "ißraeelesche Schekel",
+ "symbol": "₪"
+ },
+ "JMD": {
+ "name": "jamaikaanesche Dollaa",
+ "symbol": "JMD"
+ },
+ "GMD": {
+ "name": "jambesche Dalasi",
+ "symbol": "GMD"
+ },
+ "GHS": {
+ "name": "janaaesche Cedi",
+ "symbol": "GHS"
+ },
+ "JPY": {
+ "name": "japaanesche Jen",
+ "symbol": "JPÂ¥"
+ },
+ "YER": {
+ "name": "jemenitesche Rijal",
+ "symbol": "YER"
+ },
+ "GEL": {
+ "name": "jeorjesche Lari",
+ "symbol": "GEL"
+ },
+ "GIP": {
+ "name": "jibraltaa’sche Pongk",
+ "symbol": "GIP"
+ },
+ "GNF": {
+ "name": "Jineea-Frang",
+ "symbol": "GNF"
+ },
+ "JOD": {
+ "name": "Jordaanesche Dollaa",
+ "symbol": "JOD"
+ },
+ "GYD": {
+ "name": "Juaana-Dollaa",
+ "symbol": "GYD"
+ },
+ "GTQ": {
+ "name": "juatemalesche Quetzal",
+ "symbol": "GTQ"
+ },
+ "KYD": {
+ "name": "Kaimann-Dollaa",
+ "symbol": "KYD"
+ },
+ "KHR": {
+ "name": "kambodschaanesche Riel",
+ "symbol": "KHR"
+ },
+ "CAD": {
+ "name": "kannaadesche Dollaa",
+ "symbol": "CA$"
+ },
+ "CVE": {
+ "name": "kapverdesche Eskuudos",
+ "symbol": "CVE"
+ },
+ "KZT": {
+ "name": "kasakesche Tenge",
+ "symbol": "KZT"
+ },
+ "QAR": {
+ "name": "kataaresche Rijal",
+ "symbol": "QAR"
+ },
+ "KES": {
+ "name": "Kenjaanesche Schillinge",
+ "symbol": "KES"
+ },
+ "KGS": {
+ "name": "kirjiisesche Som",
+ "symbol": "KGS"
+ },
+ "XAF": {
+ "name": "Kmmeruhner Frang",
+ "symbol": "FCFA"
+ },
+ "COP": {
+ "name": "kolumbesche Peso",
+ "symbol": "COP"
+ },
+ "KMF": {
+ "name": "kommooresche Frang",
+ "symbol": "KMF"
+ },
+ "CDF": {
+ "name": "kongjoleesesche Frang",
+ "symbol": "CDF"
+ },
+ "CRC": {
+ "name": "koßtarikaanesche Colón",
+ "symbol": "CRC"
+ },
+ "HRK": {
+ "name": "krowaatesche Kuna",
+ "symbol": "HRK"
+ },
+ "CUP": {
+ "name": "kubaanesche Peesos",
+ "symbol": "CUP"
+ },
+ "KWD": {
+ "name": "kuwaitesche Denaa",
+ "symbol": "KWD"
+ },
+ "LSL": {
+ "name": "lesoothesche Loti",
+ "symbol": "LSL"
+ },
+ "LBP": {
+ "name": "libaneesesche Pongk",
+ "symbol": "LBP"
+ },
+ "LRD": {
+ "name": "liberijaanesche Dollaa",
+ "symbol": "LRD"
+ },
+ "LYD": {
+ "name": "libesche Denaa",
+ "symbol": "LYD"
+ },
+ "LTL": {
+ "name": "littouesche Litas",
+ "symbol": "LTL"
+ },
+ "LAK": {
+ "name": "loaatesche Kip",
+ "symbol": "LAK"
+ },
+ "MGA": {
+ "name": "madajaskesche Ariary",
+ "symbol": "MGA"
+ },
+ "MOP": {
+ "name": "makaneesesche Pataca",
+ "symbol": "MOP"
+ },
+ "MWK": {
+ "name": "malaawesche Kwache",
+ "symbol": "MWK"
+ },
+ "MYR": {
+ "name": "malaisesche Ringgit",
+ "symbol": "MYR"
+ },
+ "MVR": {
+ "name": "mallediivesche Rufiyaa",
+ "symbol": "MVR"
+ },
+ "MAD": {
+ "name": "marrokaanesche Dirhamm",
+ "symbol": "MAD"
+ },
+ "MRO": {
+ "name": "mauretanesche Ouguiya",
+ "symbol": "MRO"
+ },
+ "MUR": {
+ "name": "maurizjahnesche Ruupije",
+ "symbol": "MUR"
+ },
+ "MKD": {
+ "name": "mazedoonesche Denaa",
+ "symbol": "MKD"
+ },
+ "MXN": {
+ "name": "mexekaanesche Peeso",
+ "symbol": "MX$"
+ },
+ "MDL": {
+ "name": "moldaavesche Leu",
+ "symbol": "MDL"
+ },
+ "MNT": {
+ "name": "mongjoolesche Tugrik",
+ "symbol": "MNT"
+ },
+ "MZN": {
+ "name": "mossambikaanesche Metical",
+ "symbol": "MZN"
+ },
+ "ERN": {
+ "name": "Nafka uß Erritreja",
+ "symbol": "ERN"
+ },
+ "NAD": {
+ "name": "namiibesche Dollaa",
+ "symbol": "NAD"
+ },
+ "ANG": {
+ "name": "neederlängsch antillesche Jullde",
+ "symbol": "ANG"
+ },
+ "NPR": {
+ "name": "nepaleesesche Ruupije",
+ "symbol": "NPR"
+ },
+ "TWD": {
+ "name": "neu taiwaneesesche Dollaa",
+ "symbol": "NT$"
+ },
+ "NZD": {
+ "name": "neuseeländesche Dollaa",
+ "symbol": "NZ$"
+ },
+ "NGN": {
+ "name": "nijerijaanesche Naira",
+ "symbol": "NGN"
+ },
+ "NIO": {
+ "name": "nikarajaanesche Córdoba",
+ "symbol": "NIO"
+ },
+ "KPW": {
+ "name": "noodkorejaansche Won",
+ "symbol": "KPW"
+ },
+ "NOK": {
+ "name": "norrweejesche Kruhne",
+ "symbol": "NOK"
+ },
+ "OMR": {
+ "name": "ommaanesche Rijal",
+ "symbol": "OMR"
+ },
+ "CUC": {
+ "name": "ömtuuschbaa kubaanesche Pesos",
+ "symbol": "CUC"
+ },
+ "BAM": {
+ "name": "ömtuuschbaa Mark us Boßnije un dä Hächejovvina",
+ "symbol": "BAM"
+ },
+ "XCD": {
+ "name": "oß-karribbesche Dollaa",
+ "symbol": "EC$"
+ },
+ "PKR": {
+ "name": "pakestaanesche Ruupije",
+ "symbol": "PKR"
+ },
+ "PAB": {
+ "name": "pannameesesche Balboa",
+ "symbol": "PAB"
+ },
+ "PGK": {
+ "name": "papua neujinejaanesche Kina",
+ "symbol": "PGK"
+ },
+ "PYG": {
+ "name": "parajuaanesche Juarani",
+ "symbol": "PYG"
+ },
+ "PEN": {
+ "name": "perruaanesche Nuevo Sol",
+ "symbol": "PEN"
+ },
+ "IRR": {
+ "name": "persesche Rial",
+ "symbol": "IRR"
+ },
+ "XPF": {
+ "name": "polineesesche Frang",
+ "symbol": "CFPF"
+ },
+ "PLN": {
+ "name": "polnesche ZÅ‚oty",
+ "symbol": "PLN"
+ },
+ "FKP": {
+ "name": "Pongk vun de Falkland-Enselle",
+ "symbol": "FKP"
+ },
+ "BWP": {
+ "name": "Pula us Bozwaana",
+ "symbol": "BWP"
+ },
+ "RON": {
+ "name": "romäänesche Leu",
+ "symbol": "RON"
+ },
+ "RWF": {
+ "name": "ruandesche Frang",
+ "symbol": "RWF"
+ },
+ "RUB": {
+ "name": "russesche Ruubel",
+ "symbol": "RUB"
+ },
+ "ZMW": {
+ "name": "sambesche Kwacha",
+ "symbol": "ZMW"
+ },
+ "WST": {
+ "name": "samowaanesche Tala",
+ "symbol": "WST"
+ },
+ "RSD": {
+ "name": "särbesche Denaare",
+ "symbol": "RSD"
+ },
+ "SAR": {
+ "name": "saudesche Rijal",
+ "symbol": "SAR"
+ },
+ "CLP": {
+ "name": "schileenesche Peeso",
+ "symbol": "CLP"
+ },
+ "CNY": {
+ "name": "schineesesche Yuan Renminbi",
+ "symbol": "CNÂ¥"
+ },
+ "LKR": {
+ "name": "schrilankesche Ruupije",
+ "symbol": "LKR"
+ },
+ "SEK": {
+ "name": "schweedesche Kruhne",
+ "symbol": "SEK"
+ },
+ "CHF": {
+ "name": "schweijzer Fränkli",
+ "symbol": "CHF"
+ },
+ "SCR": {
+ "name": "seischellesche Ruupije",
+ "symbol": "SCR"
+ },
+ "ZWL": {
+ "name": "simbabwesche Dollaa (2009)",
+ "symbol": "ZWL"
+ },
+ "SGD": {
+ "name": "singjapurejaanesche Dollaa",
+ "symbol": "SGD"
+ },
+ "ZAR": {
+ "name": "södaffrekaanesche Rand",
+ "symbol": "ZAR"
+ },
+ "SSP": {
+ "name": "södsudaneesesche Pongk",
+ "symbol": "SSP"
+ },
+ "SBD": {
+ "name": "solomonesche Dollaa",
+ "symbol": "SBD"
+ },
+ "SOS": {
+ "name": "somaalesche Schillenge",
+ "symbol": "SOS"
+ },
+ "KRW": {
+ "name": "söödkorejaansche Won",
+ "symbol": "â‚©"
+ },
+ "SLL": {
+ "name": "ẞjärra-lejoneesesche Leone",
+ "symbol": "SLL"
+ },
+ "SDG": {
+ "name": "sudaneesesche Pongk",
+ "symbol": "SDG"
+ },
+ "SRD": {
+ "name": "sürinameesesche Dollaa",
+ "symbol": "SRD"
+ },
+ "SYP": {
+ "name": "süüresche Pund",
+ "symbol": "SYP"
+ },
+ "SZL": {
+ "name": "swasiländesche Lilangeni",
+ "symbol": "SZL"
+ },
+ "TJS": {
+ "name": "tadschikißtaanesche Somoni",
+ "symbol": "TJS"
+ },
+ "THB": {
+ "name": "tailändesche Baht",
+ "symbol": "THB"
+ },
+ "BDT": {
+ "name": "Taka us Bangladäsch",
+ "symbol": "BDT"
+ },
+ "TZS": {
+ "name": "tansaanesche Schillenge",
+ "symbol": "TZS"
+ },
+ "TOP": {
+ "name": "tongjanes Paʻangache",
+ "symbol": "TOP"
+ },
+ "TRY": {
+ "name": "törkesche Liire",
+ "symbol": "TRY"
+ },
+ "CZK": {
+ "name": "tschäschesche Kruhne",
+ "symbol": "CZK"
+ },
+ "TND": {
+ "name": "tuneesesche Denaa",
+ "symbol": "TND"
+ },
+ "TMT": {
+ "name": "turkmeneßtaanesche Manat",
+ "symbol": "TMT"
+ },
+ "UGX": {
+ "name": "ujandesche Schillenge",
+ "symbol": "UGX"
+ },
+ "UAH": {
+ "name": "ukraijnesche Hryvnia",
+ "symbol": "UAH"
+ },
+ "HUF": {
+ "name": "unjarresche Forint",
+ "symbol": "HUF"
+ },
+ "UYU": {
+ "name": "urrujuwaische Peeso",
+ "symbol": "UYU"
+ },
+ "UZS": {
+ "name": "ußbeekesche Som",
+ "symbol": "UZS"
+ },
+ "VUV": {
+ "name": "vanuatesche Vatu",
+ "symbol": "VUV"
+ },
+ "VEF": {
+ "name": "venezuelaanesche Bolívar",
+ "symbol": "VEF"
+ },
+ "VND": {
+ "name": "vijätnammeesesche Dong",
+ "symbol": "â‚«"
+ },
+ "BYR": {
+ "name": "wiißrußesche Rubel",
+ "symbol": "BYR"
+ },
+ "SHP": {
+ "name": "Zint-Hellena-Pongk",
+ "symbol": "SHP"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/currency/ky.json b/library/intl/resources/currency/ky.json
new file mode 100644
index 000000000..bdab1fa2a
--- /dev/null
+++ b/library/intl/resources/currency/ky.json
@@ -0,0 +1,634 @@
+{
+ "LSL": {
+ "name": "LSL",
+ "symbol": "LSL"
+ },
+ "SVC": {
+ "name": "SVC",
+ "symbol": "SVC"
+ },
+ "ZWL": {
+ "name": "ZWL",
+ "symbol": "ZWL"
+ },
+ "AUD": {
+ "name": "ÐвÑÑ‚Ñ€Ð°Ð»Ð¸Ñ Ð´Ð¾Ð»Ð»Ð°Ñ€Ñ‹",
+ "symbol": "AUD"
+ },
+ "AZN": {
+ "name": "Ðзербайжан манаты",
+ "symbol": "AZN"
+ },
+ "USD": {
+ "name": "ÐКШ доллары",
+ "symbol": "USD"
+ },
+ "ALL": {
+ "name": "албан леги",
+ "symbol": "ALL"
+ },
+ "DZD": {
+ "name": "Ðлжир динары",
+ "symbol": "DZD"
+ },
+ "AOA": {
+ "name": "Ðнгола кванзаÑÑ‹",
+ "symbol": "AOA"
+ },
+ "ARS": {
+ "name": "аргентина пеÑоÑу",
+ "symbol": "ARS"
+ },
+ "AMD": {
+ "name": "ÐÑ€Ð¼ÐµÐ½Ð¸Ñ Ð´Ñ€Ð°Ð¼Ñ‹",
+ "symbol": "AMD"
+ },
+ "AWG": {
+ "name": "аруба флорини",
+ "symbol": "AWG"
+ },
+ "AFN": {
+ "name": "ÐфганÑтан афганиÑи",
+ "symbol": "AFN"
+ },
+ "BSD": {
+ "name": "багама доллары",
+ "symbol": "BSD"
+ },
+ "BDT": {
+ "name": "Бангладеш такаÑÑ‹",
+ "symbol": "BDT"
+ },
+ "BBD": {
+ "name": "Ð±Ð°Ñ€Ð±Ð°Ð´Ð¾Ñ Ð´Ð¾Ð»Ð»Ð°Ñ€Ñ‹",
+ "symbol": "BBD"
+ },
+ "BHD": {
+ "name": "Бахрейн динары",
+ "symbol": "BHD"
+ },
+ "BYR": {
+ "name": "беларуÑÑŒ рублу",
+ "symbol": "BYR"
+ },
+ "BZD": {
+ "name": "белиз доллары",
+ "symbol": "BZD"
+ },
+ "BMD": {
+ "name": "бермуд доллары",
+ "symbol": "BMD"
+ },
+ "AED": {
+ "name": "Бириккен Ðраб Эмираттары дирхамы",
+ "symbol": "AED"
+ },
+ "BGN": {
+ "name": "болгар левиÑи",
+ "symbol": "BGN"
+ },
+ "BOB": {
+ "name": "Ð±Ð¾Ð»Ð¸Ð²Ð¸Ñ Ð±Ð¾Ð»Ð¸Ð²Ð¸Ð°Ð½Ð¾Ñу",
+ "symbol": "BOB"
+ },
+ "BAM": {
+ "name": "боÑниÑ-герцоговина жүгүртөлмөлүү маркаÑÑ‹",
+ "symbol": "BAM"
+ },
+ "BWP": {
+ "name": "БотÑвана пулаÑÑ‹",
+ "symbol": "BWP"
+ },
+ "BRL": {
+ "name": "Ð±Ñ€Ð°Ð·Ð¸Ð»Ð¸Ñ Ñ€ÐµÐ°Ð»Ñ‹",
+ "symbol": "BRL"
+ },
+ "GBP": {
+ "name": "Ð±Ñ€Ð¸Ñ‚Ð°Ð½Ð¸Ñ Ñ„ÑƒÐ½Ñ‚ Ñтерлинги",
+ "symbol": "GBP"
+ },
+ "BND": {
+ "name": "Бруней доллары",
+ "symbol": "BND"
+ },
+ "BIF": {
+ "name": "Бурунди франкы",
+ "symbol": "BIF"
+ },
+ "BTN": {
+ "name": "Бутан нгултруму",
+ "symbol": "BTN"
+ },
+ "VUV": {
+ "name": "Вануату ватуÑу",
+ "symbol": "VUV"
+ },
+ "HUF": {
+ "name": "венгр форинти",
+ "symbol": "HUF"
+ },
+ "VEF": {
+ "name": "венеÑуÑла боливары",
+ "symbol": "VEF"
+ },
+ "VND": {
+ "name": "Вьетнам доӊу",
+ "symbol": "â‚«"
+ },
+ "HTG": {
+ "name": "гаити гурдуÑу",
+ "symbol": "HTG"
+ },
+ "GMD": {
+ "name": "Ð“Ð°Ð¼Ð±Ð¸Ñ Ð´Ð°Ð»Ð°ÑиÑи",
+ "symbol": "GMD"
+ },
+ "GHS": {
+ "name": "Гана ÑедиÑи",
+ "symbol": "GHS"
+ },
+ "GTQ": {
+ "name": "гватемала кетÑалы",
+ "symbol": "GTQ"
+ },
+ "GIP": {
+ "name": "гибралтар фунту",
+ "symbol": "GIP"
+ },
+ "GNF": {
+ "name": "Гине франкы",
+ "symbol": "GNF"
+ },
+ "HNL": {
+ "name": "Ð³Ð¾Ð½Ð´ÑƒÑ€Ð°Ñ Ð»ÐµÐ¼Ð¿Ð¸Ñ€Ð°ÑÑ‹",
+ "symbol": "HNL"
+ },
+ "HKD": {
+ "name": "Гоӊ Коӊ доллары",
+ "symbol": "HKD"
+ },
+ "GEL": {
+ "name": "Ð“Ñ€ÑƒÐ·Ð¸Ñ Ð»Ð°Ñ€Ð¸Ñи",
+ "symbol": "GEL"
+ },
+ "GYD": {
+ "name": "гуйана доллары",
+ "symbol": "GYD"
+ },
+ "DKK": {
+ "name": "Ð´Ð°Ð½Ð¸Ñ ÐºÑ€Ð¾Ð½Ñƒ",
+ "symbol": "DKK"
+ },
+ "DOP": {
+ "name": "доминикан пеÑоÑу",
+ "symbol": "DOP"
+ },
+ "EUR": {
+ "name": "Евро",
+ "symbol": "€"
+ },
+ "NZD": {
+ "name": "Жаӊы Ð—ÐµÐ»Ð°Ð½Ð´Ð¸Ñ Ð´Ð¾Ð»Ð»Ð°Ñ€Ñ‹",
+ "symbol": "NZD"
+ },
+ "JPY": {
+ "name": "Жапан йени",
+ "symbol": "JPÂ¥"
+ },
+ "DJF": {
+ "name": "Жибути франкы",
+ "symbol": "DJF"
+ },
+ "ZMW": {
+ "name": "Ð—Ð°Ð¼Ð±Ð¸Ñ ÐºÐ²Ð°Ñ‡Ð°ÑÑ‹",
+ "symbol": "ZMW"
+ },
+ "ILS": {
+ "name": "Израил жаӊы шегели",
+ "symbol": "ILS"
+ },
+ "INR": {
+ "name": "Ð˜Ð½Ð´Ð¸Ñ Ñ€ÑƒÐ¿Ð¸Ñи",
+ "symbol": "INR"
+ },
+ "IDR": {
+ "name": "Ð˜Ð½Ð´Ð¾Ð½ÐµÐ·Ð¸Ñ Ñ€ÑƒÐ¿Ð¸Ð¹Ð°ÑÑ‹",
+ "symbol": "IDR"
+ },
+ "IQD": {
+ "name": "Ирак динары",
+ "symbol": "IQD"
+ },
+ "IRR": {
+ "name": "Иран риалы",
+ "symbol": "IRR"
+ },
+ "ISK": {
+ "name": "иÑÐ»Ð°Ð½Ð´Ð¸Ñ ÐºÑ€Ð¾Ð½Ñƒ",
+ "symbol": "ISK"
+ },
+ "YER": {
+ "name": "Йемен риалы",
+ "symbol": "YER"
+ },
+ "JOD": {
+ "name": "Ð™Ð¾Ñ€Ð´Ð°Ð½Ð¸Ñ Ð´Ð¸Ð½Ð°Ñ€Ñ‹",
+ "symbol": "JOD"
+ },
+ "CVE": {
+ "name": "Кабо-Верде ÑÑкудоÑу",
+ "symbol": "CVE"
+ },
+ "KZT": {
+ "name": "КазакÑтан теӊгеÑи",
+ "symbol": "KZT"
+ },
+ "KYD": {
+ "name": "кайман доллары",
+ "symbol": "KYD"
+ },
+ "KHR": {
+ "name": "Камбожа риели",
+ "symbol": "KHR"
+ },
+ "CAD": {
+ "name": "канада доллары",
+ "symbol": "CAD"
+ },
+ "QAR": {
+ "name": "Катар риалы",
+ "symbol": "QAR"
+ },
+ "KES": {
+ "name": "ÐšÐµÐ½Ð¸Ñ ÑˆÐ¸Ð»Ð»Ð¸Ð½Ð³Ð¸",
+ "symbol": "KES"
+ },
+ "COP": {
+ "name": "ÐºÐ¾Ð»ÑƒÐ¼Ð±Ð¸Ñ Ð¿ÐµÑоÑу",
+ "symbol": "COP"
+ },
+ "KMF": {
+ "name": "ÐšÐ¾Ð¼Ð¾Ñ€Ð¾Ñ Ñ„Ñ€Ð°Ð½ÐºÑ‹",
+ "symbol": "KMF"
+ },
+ "CDF": {
+ "name": "Конго франкы",
+ "symbol": "CDF"
+ },
+ "CRC": {
+ "name": "коÑта-рика колону",
+ "symbol": "CRC"
+ },
+ "CUC": {
+ "name": "куба жүгүртүлмөлүү пеÑоÑу",
+ "symbol": "CUC"
+ },
+ "CUP": {
+ "name": "куба пеÑоÑу",
+ "symbol": "CUP"
+ },
+ "KWD": {
+ "name": "Кувейт динары",
+ "symbol": "KWD"
+ },
+ "XAF": {
+ "name": "КФРВЕÐС франкы",
+ "symbol": "FCFA"
+ },
+ "XOF": {
+ "name": "КФРВСЕÐО франкы",
+ "symbol": "CFA"
+ },
+ "XPF": {
+ "name": "КФП франкы",
+ "symbol": "CFPF"
+ },
+ "KGS": {
+ "name": "КыргызÑтан Ñому",
+ "symbol": "Ñом"
+ },
+ "CNY": {
+ "name": "Кытай юаны",
+ "symbol": "CNÂ¥"
+ },
+ "LAK": {
+ "name": "Ð›Ð°Ð¾Ñ ÐºÐ¸Ð±Ð¸",
+ "symbol": "LAK"
+ },
+ "LRD": {
+ "name": "Ð›Ð¸Ð±ÐµÑ€Ð¸Ñ Ð´Ð¾Ð»Ð»Ð°Ñ€Ñ‹",
+ "symbol": "LRD"
+ },
+ "LBP": {
+ "name": "Ливан фунту",
+ "symbol": "LBP"
+ },
+ "LYD": {
+ "name": "Ð›Ð¸Ð²Ð¸Ñ Ð´Ð¸Ð½Ð°Ñ€Ñ‹",
+ "symbol": "LYD"
+ },
+ "LTL": {
+ "name": "литва литаÑÑ‹",
+ "symbol": "LTL"
+ },
+ "MUR": {
+ "name": "Мавританий рупиÑи",
+ "symbol": "MUR"
+ },
+ "MRO": {
+ "name": "ÐœÐ°Ð²Ñ€Ð¸Ñ‚Ð°Ð½Ð¸Ñ ÑƒÐ³Ð¸ÑÑÑ‹",
+ "symbol": "MRO"
+ },
+ "MGA": {
+ "name": "МадагаÑкар ариариÑи",
+ "symbol": "MGA"
+ },
+ "MOP": {
+ "name": "Макау патакаÑÑ‹",
+ "symbol": "MOP"
+ },
+ "MKD": {
+ "name": "македон денары",
+ "symbol": "MKD"
+ },
+ "MWK": {
+ "name": "Малави квачаÑÑ‹",
+ "symbol": "MWK"
+ },
+ "MYR": {
+ "name": "ÐœÐ°Ð»Ð°Ð¹Ð·Ð¸Ñ Ñ€Ð¸Ð½Ð³Ð³Ð¸Ñ‚Ð¸",
+ "symbol": "MYR"
+ },
+ "MVR": {
+ "name": "Малдив РуфийаÑÑ‹",
+ "symbol": "MVR"
+ },
+ "MAD": {
+ "name": "Марокко дирхамы",
+ "symbol": "MAD"
+ },
+ "MXN": {
+ "name": "мекÑика пеÑоÑу",
+ "symbol": "MXN"
+ },
+ "EGP": {
+ "name": "МиÑир фунту",
+ "symbol": "EGP"
+ },
+ "MMK": {
+ "name": "Мйанмар кйаты",
+ "symbol": "MMK"
+ },
+ "MZN": {
+ "name": "Мозамбик метикалы",
+ "symbol": "MZN"
+ },
+ "MDL": {
+ "name": "молдован лейи",
+ "symbol": "MDL"
+ },
+ "MNT": {
+ "name": "Монгол тугриги",
+ "symbol": "MNT"
+ },
+ "NAD": {
+ "name": "ÐÐ°Ð¼Ð¸Ð±Ð¸Ñ Ð´Ð¾Ð»Ð»Ð°Ñ€Ñ‹",
+ "symbol": "NAD"
+ },
+ "NPR": {
+ "name": "Ðепал рупиÑи",
+ "symbol": "NPR"
+ },
+ "NGN": {
+ "name": "ÐÐ¸Ð³ÐµÑ€Ð¸Ñ Ð½Ð°Ð¹Ñ€Ð°ÑÑ‹",
+ "symbol": "NGN"
+ },
+ "ANG": {
+ "name": "нидерланд-антил гулдени",
+ "symbol": "ANG"
+ },
+ "NIO": {
+ "name": "никарагуа кордобаÑÑ‹",
+ "symbol": "NIO"
+ },
+ "NOK": {
+ "name": "Ð½Ð¾Ñ€Ð²ÐµÐ³Ð¸Ñ ÐºÑ€Ð¾Ð½Ñƒ",
+ "symbol": "NOK"
+ },
+ "OMR": {
+ "name": "Оман риалы",
+ "symbol": "OMR"
+ },
+ "RUB": {
+ "name": "Ð¾Ñ€ÑƒÑ Ñ€ÑƒÐ±Ð»Ñƒ",
+ "symbol": "RUB"
+ },
+ "UZS": {
+ "name": "ӨзбекÑтан Ñому",
+ "symbol": "UZS"
+ },
+ "PKR": {
+ "name": "ПакиÑтан рупиÑи",
+ "symbol": "PKR"
+ },
+ "PAB": {
+ "name": "панама балбоаÑÑ‹",
+ "symbol": "PAB"
+ },
+ "PGK": {
+ "name": "Папуа Жаӊы Гине кинаÑÑ‹",
+ "symbol": "PGK"
+ },
+ "PYG": {
+ "name": "парагвай гуараниÑи",
+ "symbol": "PYG"
+ },
+ "PEN": {
+ "name": "перу нуÑво Ñолу",
+ "symbol": "PEN"
+ },
+ "PLN": {
+ "name": "польша злотыйы",
+ "symbol": "PLN"
+ },
+ "RWF": {
+ "name": "Руанда франкы",
+ "symbol": "RWF"
+ },
+ "RON": {
+ "name": "румын лейи",
+ "symbol": "RON"
+ },
+ "WST": {
+ "name": "Самоа талаÑÑ‹",
+ "symbol": "WST"
+ },
+ "STD": {
+ "name": "Сао Томе жана ПринÑипе добраÑÑ‹",
+ "symbol": "STD"
+ },
+ "SAR": {
+ "name": "Сауд риалы",
+ "symbol": "SAR"
+ },
+ "SZL": {
+ "name": "Свази лилангени",
+ "symbol": "SZL"
+ },
+ "SCR": {
+ "name": "Сейшел рупиÑи",
+ "symbol": "SCR"
+ },
+ "RSD": {
+ "name": "Ñерб динары",
+ "symbol": "RSD"
+ },
+ "SLL": {
+ "name": "Сиерра-Леоне леонеÑи",
+ "symbol": "SLL"
+ },
+ "SGD": {
+ "name": "Сингапур доллары",
+ "symbol": "SGD"
+ },
+ "SYP": {
+ "name": "Ð¡Ð¸Ñ€Ð¸Ñ Ñ„ÑƒÐ½Ñ‚Ñƒ",
+ "symbol": "SYP"
+ },
+ "SBD": {
+ "name": "Соломон доллары",
+ "symbol": "SBD"
+ },
+ "SOS": {
+ "name": "Сомали шиллинги",
+ "symbol": "SOS"
+ },
+ "SDG": {
+ "name": "Судан фунту",
+ "symbol": "SDG"
+ },
+ "SRD": {
+ "name": "Ñуринам доллары",
+ "symbol": "SRD"
+ },
+ "TJS": {
+ "name": "ТажикÑтан ÑомониÑи",
+ "symbol": "TJS"
+ },
+ "THB": {
+ "name": "Тай баты",
+ "symbol": "฿"
+ },
+ "TWD": {
+ "name": "Тайвань жаӊы доллары",
+ "symbol": "TWD"
+ },
+ "TZS": {
+ "name": "Ð¢Ð°Ð½Ð·Ð°Ð½Ð¸Ñ ÑˆÐ¸Ð»Ð»Ð¸Ð½Ð³Ð¸",
+ "symbol": "TZS"
+ },
+ "TOP": {
+ "name": "Тонга паангаÑÑ‹",
+ "symbol": "TOP"
+ },
+ "TTD": {
+ "name": "тринидад жана тобаго доллары",
+ "symbol": "TTD"
+ },
+ "TND": {
+ "name": "Ð¢ÑƒÐ½Ð¸Ñ Ð´Ð¸Ð½Ð°Ñ€Ñ‹",
+ "symbol": "TND"
+ },
+ "KPW": {
+ "name": "Түндүк ÐšÐ¾Ñ€ÐµÑ ÑƒÐ¾Ð½Ñƒ",
+ "symbol": "KPW"
+ },
+ "TRY": {
+ "name": "Ð¢Ò¯Ñ€ÐºÐ¸Ñ Ð»Ð¸Ñ€Ð°ÑÑ‹",
+ "symbol": "TRY"
+ },
+ "TMT": {
+ "name": "ТүркмөнÑтан манаты",
+ "symbol": "TMT"
+ },
+ "ZAR": {
+ "name": "Түштүк Ðфрика ранды",
+ "symbol": "ZAR"
+ },
+ "KRW": {
+ "name": "Түштүк ÐšÐ¾Ñ€ÐµÑ ÑƒÐ¾Ð½Ñƒ",
+ "symbol": "KRW"
+ },
+ "SSP": {
+ "name": "Түштүк Судан фунту",
+ "symbol": "SSP"
+ },
+ "UGX": {
+ "name": "Уганда шиллинги",
+ "symbol": "UGX"
+ },
+ "UAH": {
+ "name": "украин гривени",
+ "symbol": "UAH"
+ },
+ "UYU": {
+ "name": "уругвай пеÑоÑу",
+ "symbol": "UYU"
+ },
+ "FJD": {
+ "name": "Фижи доллары",
+ "symbol": "FJD"
+ },
+ "PHP": {
+ "name": "Филиппин пеÑоÑу",
+ "symbol": "PHP"
+ },
+ "FKP": {
+ "name": "фолкленд аралдарынын фунту",
+ "symbol": "FKP"
+ },
+ "HRK": {
+ "name": "хорват кунаÑÑ‹",
+ "symbol": "HRK"
+ },
+ "CZK": {
+ "name": "чех кронаÑÑ‹",
+ "symbol": "CZK"
+ },
+ "CLP": {
+ "name": "чили пеÑоÑу",
+ "symbol": "CLP"
+ },
+ "XCD": {
+ "name": "чыгыш кариб доллары",
+ "symbol": "XCD"
+ },
+ "CHF": {
+ "name": "ÑˆÐ²ÐµÐ¹Ñ†Ð°Ñ€Ð¸Ñ Ñ„Ñ€Ð°Ð½ÐºÑ‹",
+ "symbol": "CHF"
+ },
+ "SEK": {
+ "name": "ÑˆÐ²ÐµÑ†Ð¸Ñ ÐºÑ€Ð¾Ð½Ñƒ",
+ "symbol": "SEK"
+ },
+ "LKR": {
+ "name": "Шри Ланка рупиÑи",
+ "symbol": "LKR"
+ },
+ "SHP": {
+ "name": "Ыйык Елена фунту",
+ "symbol": "SHP"
+ },
+ "ERN": {
+ "name": "Эритреа накфаÑÑ‹",
+ "symbol": "ERN"
+ },
+ "ETB": {
+ "name": "Ð­Ñ„Ð¸Ð¾Ð¿Ð¸Ñ Ð±Ð¸Ñ€Ñ€Ð¸",
+ "symbol": "ETB"
+ },
+ "JMD": {
+ "name": "Ñмайка доллары",
+ "symbol": "JMD"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/currency/lag.json b/library/intl/resources/currency/lag.json
new file mode 100644
index 000000000..ddfa28c20
--- /dev/null
+++ b/library/intl/resources/currency/lag.json
@@ -0,0 +1,634 @@
+{
+ "AFN": {
+ "name": "AFN",
+ "symbol": "AFN"
+ },
+ "ALL": {
+ "name": "ALL",
+ "symbol": "ALL"
+ },
+ "AMD": {
+ "name": "AMD",
+ "symbol": "AMD"
+ },
+ "ANG": {
+ "name": "ANG",
+ "symbol": "ANG"
+ },
+ "ARS": {
+ "name": "ARS",
+ "symbol": "ARS"
+ },
+ "AWG": {
+ "name": "AWG",
+ "symbol": "AWG"
+ },
+ "AZN": {
+ "name": "AZN",
+ "symbol": "AZN"
+ },
+ "BAM": {
+ "name": "BAM",
+ "symbol": "BAM"
+ },
+ "BBD": {
+ "name": "BBD",
+ "symbol": "BBD"
+ },
+ "BDT": {
+ "name": "BDT",
+ "symbol": "BDT"
+ },
+ "BGN": {
+ "name": "BGN",
+ "symbol": "BGN"
+ },
+ "ETB": {
+ "name": "Bíiri ya Ʉhabéeshi",
+ "symbol": "ETB"
+ },
+ "BMD": {
+ "name": "BMD",
+ "symbol": "BMD"
+ },
+ "BND": {
+ "name": "BND",
+ "symbol": "BND"
+ },
+ "BOB": {
+ "name": "BOB",
+ "symbol": "BOB"
+ },
+ "BRL": {
+ "name": "BRL",
+ "symbol": "R$"
+ },
+ "BSD": {
+ "name": "BSD",
+ "symbol": "BSD"
+ },
+ "BTN": {
+ "name": "BTN",
+ "symbol": "BTN"
+ },
+ "BYR": {
+ "name": "BYR",
+ "symbol": "BYR"
+ },
+ "BZD": {
+ "name": "BZD",
+ "symbol": "BZD"
+ },
+ "CLP": {
+ "name": "CLP",
+ "symbol": "CLP"
+ },
+ "COP": {
+ "name": "COP",
+ "symbol": "COP"
+ },
+ "CRC": {
+ "name": "CRC",
+ "symbol": "CRC"
+ },
+ "CUC": {
+ "name": "CUC",
+ "symbol": "CUC"
+ },
+ "CUP": {
+ "name": "CUP",
+ "symbol": "CUP"
+ },
+ "CZK": {
+ "name": "CZK",
+ "symbol": "CZK"
+ },
+ "GMD": {
+ "name": "Daláasi ya Gámbia",
+ "symbol": "GMD"
+ },
+ "DZD": {
+ "name": "Dináairi ya Alijéria",
+ "symbol": "DZD"
+ },
+ "BHD": {
+ "name": "Dináari ya Baharéeni",
+ "symbol": "BHD"
+ },
+ "LYD": {
+ "name": "Dináari ya Líbia",
+ "symbol": "LYD"
+ },
+ "TND": {
+ "name": "Dináari ya Tunísia",
+ "symbol": "TND"
+ },
+ "MAD": {
+ "name": "Diriháamu ya Moróoko",
+ "symbol": "MAD"
+ },
+ "AED": {
+ "name": "Diriháamu ya Ʉtemi wa Kɨaráabu",
+ "symbol": "AED"
+ },
+ "DKK": {
+ "name": "DKK",
+ "symbol": "DKK"
+ },
+ "STD": {
+ "name": "Dóbura ya SaoTóome na Pirínsipe",
+ "symbol": "STD"
+ },
+ "USD": {
+ "name": "Dóola ya AmerɨÌka",
+ "symbol": "US$"
+ },
+ "AUD": {
+ "name": "Dóola ya Ausitereelía",
+ "symbol": "A$"
+ },
+ "CAD": {
+ "name": "Dóola ya Kánada",
+ "symbol": "CA$"
+ },
+ "LRD": {
+ "name": "Dóola ya Libéria",
+ "symbol": "LRD"
+ },
+ "NAD": {
+ "name": "Dóola ya Namíbia",
+ "symbol": "NAD"
+ },
+ "DOP": {
+ "name": "DOP",
+ "symbol": "DOP"
+ },
+ "CVE": {
+ "name": "Esikúudo ya Kepuvéede",
+ "symbol": "CVE"
+ },
+ "CHF": {
+ "name": "Faráaka ya Uswíisi",
+ "symbol": "CHF"
+ },
+ "BIF": {
+ "name": "Faráanga ya Burúundi",
+ "symbol": "BIF"
+ },
+ "XOF": {
+ "name": "Faráanga ya CFA BCEAO",
+ "symbol": "CFA"
+ },
+ "XAF": {
+ "name": "Faráanga ya CFA BEAC",
+ "symbol": "FCFA"
+ },
+ "DJF": {
+ "name": "Faráanga ya Jibóuti",
+ "symbol": "DJF"
+ },
+ "KMF": {
+ "name": "Faráanga ya Komóoro",
+ "symbol": "KMF"
+ },
+ "CDF": {
+ "name": "Faráanga ya Kóongo",
+ "symbol": "CDF"
+ },
+ "RWF": {
+ "name": "Faráanga ya Rwáanda",
+ "symbol": "RWF"
+ },
+ "FJD": {
+ "name": "FJD",
+ "symbol": "FJD"
+ },
+ "FKP": {
+ "name": "FKP",
+ "symbol": "FKP"
+ },
+ "GEL": {
+ "name": "GEL",
+ "symbol": "GEL"
+ },
+ "GHS": {
+ "name": "GHS",
+ "symbol": "GHS"
+ },
+ "GIP": {
+ "name": "GIP",
+ "symbol": "GIP"
+ },
+ "GNF": {
+ "name": "GNF",
+ "symbol": "GNF"
+ },
+ "GTQ": {
+ "name": "GTQ",
+ "symbol": "GTQ"
+ },
+ "GYD": {
+ "name": "GYD",
+ "symbol": "GYD"
+ },
+ "HKD": {
+ "name": "HKD",
+ "symbol": "HK$"
+ },
+ "HNL": {
+ "name": "HNL",
+ "symbol": "HNL"
+ },
+ "HRK": {
+ "name": "HRK",
+ "symbol": "HRK"
+ },
+ "HTG": {
+ "name": "HTG",
+ "symbol": "HTG"
+ },
+ "HUF": {
+ "name": "HUF",
+ "symbol": "HUF"
+ },
+ "IDR": {
+ "name": "IDR",
+ "symbol": "IDR"
+ },
+ "ILS": {
+ "name": "ILS",
+ "symbol": "₪"
+ },
+ "IQD": {
+ "name": "IQD",
+ "symbol": "IQD"
+ },
+ "IRR": {
+ "name": "IRR",
+ "symbol": "IRR"
+ },
+ "ISK": {
+ "name": "ISK",
+ "symbol": "ISK"
+ },
+ "JMD": {
+ "name": "JMD",
+ "symbol": "JMD"
+ },
+ "JOD": {
+ "name": "JOD",
+ "symbol": "JOD"
+ },
+ "KGS": {
+ "name": "KGS",
+ "symbol": "KGS"
+ },
+ "KHR": {
+ "name": "KHR",
+ "symbol": "KHR"
+ },
+ "KPW": {
+ "name": "KPW",
+ "symbol": "KPW"
+ },
+ "KRW": {
+ "name": "KRW",
+ "symbol": "â‚©"
+ },
+ "MWK": {
+ "name": "Kwáacha ya Maláawi",
+ "symbol": "MWK"
+ },
+ "AOA": {
+ "name": "Kwáanza ya Angóola",
+ "symbol": "AOA"
+ },
+ "ZMW": {
+ "name": "Kwácha ya Sámbia",
+ "symbol": "ZMW"
+ },
+ "KWD": {
+ "name": "KWD",
+ "symbol": "KWD"
+ },
+ "KYD": {
+ "name": "KYD",
+ "symbol": "KYD"
+ },
+ "KZT": {
+ "name": "KZT",
+ "symbol": "KZT"
+ },
+ "LAK": {
+ "name": "LAK",
+ "symbol": "LAK"
+ },
+ "LBP": {
+ "name": "LBP",
+ "symbol": "LBP"
+ },
+ "SLL": {
+ "name": "Leóoni",
+ "symbol": "SLL"
+ },
+ "SZL": {
+ "name": "Lilengéeni",
+ "symbol": "SZL"
+ },
+ "LKR": {
+ "name": "LKR",
+ "symbol": "LKR"
+ },
+ "LSL": {
+ "name": "Lóoti ya Lesóoto",
+ "symbol": "LSL"
+ },
+ "LTL": {
+ "name": "LTL",
+ "symbol": "LTL"
+ },
+ "MDL": {
+ "name": "MDL",
+ "symbol": "MDL"
+ },
+ "MKD": {
+ "name": "MKD",
+ "symbol": "MKD"
+ },
+ "MMK": {
+ "name": "MMK",
+ "symbol": "MMK"
+ },
+ "MNT": {
+ "name": "MNT",
+ "symbol": "MNT"
+ },
+ "MOP": {
+ "name": "MOP",
+ "symbol": "MOP"
+ },
+ "MGA": {
+ "name": "Mpía ya bukini",
+ "symbol": "MGA"
+ },
+ "MVR": {
+ "name": "MVR",
+ "symbol": "MVR"
+ },
+ "MXN": {
+ "name": "MXN",
+ "symbol": "MX$"
+ },
+ "MYR": {
+ "name": "MYR",
+ "symbol": "MYR"
+ },
+ "MZN": {
+ "name": "MZN",
+ "symbol": "MZN"
+ },
+ "NGN": {
+ "name": "Naíira ya Niijéria",
+ "symbol": "NGN"
+ },
+ "ERN": {
+ "name": "Nákɨfa ya Eriterea",
+ "symbol": "ERN"
+ },
+ "NIO": {
+ "name": "NIO",
+ "symbol": "NIO"
+ },
+ "NOK": {
+ "name": "NOK",
+ "symbol": "NOK"
+ },
+ "NPR": {
+ "name": "NPR",
+ "symbol": "NPR"
+ },
+ "NZD": {
+ "name": "NZD",
+ "symbol": "NZ$"
+ },
+ "OMR": {
+ "name": "OMR",
+ "symbol": "OMR"
+ },
+ "PAB": {
+ "name": "PAB",
+ "symbol": "PAB"
+ },
+ "EGP": {
+ "name": "Páundi ya Mísiri",
+ "symbol": "EGP"
+ },
+ "SHP": {
+ "name": "Páundi ya Mʉtakatíifu Heléena",
+ "symbol": "SHP"
+ },
+ "SDG": {
+ "name": "Páundi ya Sudáani",
+ "symbol": "SDG"
+ },
+ "GBP": {
+ "name": "Páundi ya Ʉɨngɨréesa",
+ "symbol": "£"
+ },
+ "PEN": {
+ "name": "PEN",
+ "symbol": "PEN"
+ },
+ "PGK": {
+ "name": "PGK",
+ "symbol": "PGK"
+ },
+ "PHP": {
+ "name": "PHP",
+ "symbol": "PHP"
+ },
+ "PKR": {
+ "name": "PKR",
+ "symbol": "PKR"
+ },
+ "PLN": {
+ "name": "PLN",
+ "symbol": "PLN"
+ },
+ "BWP": {
+ "name": "Púula ya Botiswáana",
+ "symbol": "BWP"
+ },
+ "PYG": {
+ "name": "PYG",
+ "symbol": "PYG"
+ },
+ "QAR": {
+ "name": "QAR",
+ "symbol": "QAR"
+ },
+ "ZAR": {
+ "name": "Ráandi ya Afɨrɨka ya Saame",
+ "symbol": "ZAR"
+ },
+ "SAR": {
+ "name": "Riyáali ya Saudía",
+ "symbol": "SAR"
+ },
+ "RON": {
+ "name": "RON",
+ "symbol": "RON"
+ },
+ "RSD": {
+ "name": "RSD",
+ "symbol": "RSD"
+ },
+ "RUB": {
+ "name": "RUB",
+ "symbol": "RUB"
+ },
+ "INR": {
+ "name": "Rupía ya Ãndia",
+ "symbol": "₹"
+ },
+ "MUR": {
+ "name": "Rupía ya Moríisi",
+ "symbol": "MUR"
+ },
+ "SCR": {
+ "name": "Rupía ya Shelishéeli",
+ "symbol": "SCR"
+ },
+ "SBD": {
+ "name": "SBD",
+ "symbol": "SBD"
+ },
+ "SEK": {
+ "name": "SEK",
+ "symbol": "SEK"
+ },
+ "SGD": {
+ "name": "SGD",
+ "symbol": "SGD"
+ },
+ "KES": {
+ "name": "Shilíingi ya Kéenya",
+ "symbol": "KES"
+ },
+ "SOS": {
+ "name": "Shilíingi ya Somália",
+ "symbol": "SOS"
+ },
+ "TZS": {
+ "name": "Shilíingi ya Taansanía",
+ "symbol": "TSh"
+ },
+ "UGX": {
+ "name": "Shilíingi ya Ugáanda",
+ "symbol": "UGX"
+ },
+ "SRD": {
+ "name": "SRD",
+ "symbol": "SRD"
+ },
+ "SSP": {
+ "name": "SSP",
+ "symbol": "SSP"
+ },
+ "SVC": {
+ "name": "SVC",
+ "symbol": "SVC"
+ },
+ "SYP": {
+ "name": "SYP",
+ "symbol": "SYP"
+ },
+ "THB": {
+ "name": "THB",
+ "symbol": "THB"
+ },
+ "TJS": {
+ "name": "TJS",
+ "symbol": "TJS"
+ },
+ "TMT": {
+ "name": "TMT",
+ "symbol": "TMT"
+ },
+ "TOP": {
+ "name": "TOP",
+ "symbol": "TOP"
+ },
+ "TRY": {
+ "name": "TRY",
+ "symbol": "TRY"
+ },
+ "TTD": {
+ "name": "TTD",
+ "symbol": "TTD"
+ },
+ "TWD": {
+ "name": "TWD",
+ "symbol": "NT$"
+ },
+ "UAH": {
+ "name": "UAH",
+ "symbol": "UAH"
+ },
+ "MRO": {
+ "name": "Ungwíiya ya Moritánia",
+ "symbol": "MRO"
+ },
+ "UYU": {
+ "name": "UYU",
+ "symbol": "UYU"
+ },
+ "UZS": {
+ "name": "UZS",
+ "symbol": "UZS"
+ },
+ "VEF": {
+ "name": "VEF",
+ "symbol": "VEF"
+ },
+ "VND": {
+ "name": "VND",
+ "symbol": "â‚«"
+ },
+ "VUV": {
+ "name": "VUV",
+ "symbol": "VUV"
+ },
+ "WST": {
+ "name": "WST",
+ "symbol": "WST"
+ },
+ "XCD": {
+ "name": "XCD",
+ "symbol": "EC$"
+ },
+ "XPF": {
+ "name": "XPF",
+ "symbol": "CFPF"
+ },
+ "JPY": {
+ "name": "Yéeni ya Japáani",
+ "symbol": "JPÂ¥"
+ },
+ "YER": {
+ "name": "YER",
+ "symbol": "YER"
+ },
+ "CNY": {
+ "name": "Yúani Renimínibi ya Chíina",
+ "symbol": "CNÂ¥"
+ },
+ "EUR": {
+ "name": "Yúuro",
+ "symbol": "€"
+ },
+ "ZWL": {
+ "name": "ZWL",
+ "symbol": "ZWL"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/currency/lb.json b/library/intl/resources/currency/lb.json
new file mode 100644
index 000000000..ea1cf873c
--- /dev/null
+++ b/library/intl/resources/currency/lb.json
@@ -0,0 +1,634 @@
+{
+ "AFN": {
+ "name": "Afghanesch Afghani",
+ "symbol": "AFN"
+ },
+ "ALL": {
+ "name": "Albanesche Lek",
+ "symbol": "ALL"
+ },
+ "DZD": {
+ "name": "Algereschen Dinar",
+ "symbol": "DZD"
+ },
+ "AOA": {
+ "name": "Angolanesche Kwanza",
+ "symbol": "AOA"
+ },
+ "ANG": {
+ "name": "Antillen-Gulden",
+ "symbol": "ANG"
+ },
+ "ARS": {
+ "name": "Argentinesche Peso",
+ "symbol": "ARS"
+ },
+ "AMD": {
+ "name": "Armeneschen Dram",
+ "symbol": "AMD"
+ },
+ "AWG": {
+ "name": "Aruba-Florin",
+ "symbol": "AWG"
+ },
+ "AZN": {
+ "name": "Aserbaidschan-Manat",
+ "symbol": "AZN"
+ },
+ "AUD": {
+ "name": "Australeschen Dollar",
+ "symbol": "AU$"
+ },
+ "BSD": {
+ "name": "Bahama-Dollar",
+ "symbol": "BSD"
+ },
+ "BHD": {
+ "name": "Bahrain-Dinar",
+ "symbol": "BHD"
+ },
+ "BDT": {
+ "name": "Bangladesch-Taka",
+ "symbol": "BDT"
+ },
+ "BBD": {
+ "name": "Barbados-Dollar",
+ "symbol": "BBD"
+ },
+ "BZD": {
+ "name": "Belize-Dollar",
+ "symbol": "BZD"
+ },
+ "BMD": {
+ "name": "Bermuda-Dollar",
+ "symbol": "BMD"
+ },
+ "BTN": {
+ "name": "Bhutan-Ngultrum",
+ "symbol": "BTN"
+ },
+ "BOB": {
+ "name": "Bolivianesche Boliviano",
+ "symbol": "BOB"
+ },
+ "BAM": {
+ "name": "Bosnien an Herzegowina Konvertéierbar Mark",
+ "symbol": "BAM"
+ },
+ "BWP": {
+ "name": "Botswanesch Pula",
+ "symbol": "BWP"
+ },
+ "BRL": {
+ "name": "Brasilianesche Real",
+ "symbol": "R$"
+ },
+ "GBP": {
+ "name": "Britescht Pond Sterling",
+ "symbol": "£"
+ },
+ "BND": {
+ "name": "Brunei-Dollar",
+ "symbol": "BND"
+ },
+ "BGN": {
+ "name": "Bulgaresch Lew",
+ "symbol": "BGN"
+ },
+ "BIF": {
+ "name": "Burundi-Frang",
+ "symbol": "BIF"
+ },
+ "XOF": {
+ "name": "CFA-Frang (BCEAO)",
+ "symbol": "CFA"
+ },
+ "XAF": {
+ "name": "CFA-Frang (BEAC)",
+ "symbol": "FCFA"
+ },
+ "XPF": {
+ "name": "CFP-Frang",
+ "symbol": "CFPF"
+ },
+ "CLP": {
+ "name": "Chilenesche Peso",
+ "symbol": "CLP"
+ },
+ "CRC": {
+ "name": "Costa-Rica-Colón",
+ "symbol": "CRC"
+ },
+ "DKK": {
+ "name": "Dänesch Kroun",
+ "symbol": "DKK"
+ },
+ "DOP": {
+ "name": "Dominikanesche Peso",
+ "symbol": "DOP"
+ },
+ "DJF": {
+ "name": "Dschibuti-Frang",
+ "symbol": "DJF"
+ },
+ "EGP": {
+ "name": "Egyptescht Pond",
+ "symbol": "EGP"
+ },
+ "SVC": {
+ "name": "El-Salvador-Colón",
+ "symbol": "SVC"
+ },
+ "ERN": {
+ "name": "Eritréieschen Nakfa",
+ "symbol": "ERN"
+ },
+ "ETB": {
+ "name": "Ethiopescht Birr",
+ "symbol": "ETB"
+ },
+ "EUR": {
+ "name": "Euro",
+ "symbol": "€"
+ },
+ "FKP": {
+ "name": "Falkland-Pond",
+ "symbol": "FKP"
+ },
+ "FJD": {
+ "name": "Fidschi-Dollar",
+ "symbol": "FJD"
+ },
+ "GMD": {
+ "name": "Gambia-Dalasi",
+ "symbol": "GMD"
+ },
+ "GEL": {
+ "name": "Georgesche Lari",
+ "symbol": "GEL"
+ },
+ "GHS": {
+ "name": "Ghanaeschen Cedi",
+ "symbol": "GHS"
+ },
+ "GIP": {
+ "name": "Gibraltar-Pond",
+ "symbol": "GIP"
+ },
+ "GTQ": {
+ "name": "Guatemaltekesche Quetzal",
+ "symbol": "GTQ"
+ },
+ "GNF": {
+ "name": "Guinea-Frang",
+ "symbol": "GNF"
+ },
+ "GYD": {
+ "name": "Guyana-Dollar",
+ "symbol": "GYD"
+ },
+ "HTG": {
+ "name": "Haitianesch Gourde",
+ "symbol": "HTG"
+ },
+ "HNL": {
+ "name": "Honduras-Lempira",
+ "symbol": "HNL"
+ },
+ "HKD": {
+ "name": "Hong-Kong-Dollar",
+ "symbol": "HK$"
+ },
+ "INR": {
+ "name": "Indesch Rupie",
+ "symbol": "₹"
+ },
+ "IDR": {
+ "name": "Indonesesch Rupiah",
+ "symbol": "IDR"
+ },
+ "IQD": {
+ "name": "Irakeschen Dinar",
+ "symbol": "IQD"
+ },
+ "IRR": {
+ "name": "Iranesch Rial",
+ "symbol": "IRR"
+ },
+ "ISK": {
+ "name": "Islännesch Kroun",
+ "symbol": "ISK"
+ },
+ "ILS": {
+ "name": "Israeleschen Neie Schekel",
+ "symbol": "₪"
+ },
+ "JMD": {
+ "name": "Jamaika-Dollar",
+ "symbol": "JMD"
+ },
+ "JPY": {
+ "name": "Japanesche Yen",
+ "symbol": "Â¥"
+ },
+ "YER": {
+ "name": "Jemen-Rial",
+ "symbol": "YER"
+ },
+ "JOD": {
+ "name": "Jordaneschen Dinar",
+ "symbol": "JOD"
+ },
+ "KYD": {
+ "name": "Kaiman-Dollar",
+ "symbol": "KYD"
+ },
+ "KHR": {
+ "name": "Kambodschanesche Riel",
+ "symbol": "KHR"
+ },
+ "CAD": {
+ "name": "Kanadeschen Dollar",
+ "symbol": "CA$"
+ },
+ "CVE": {
+ "name": "Kap-Verde-Escudo",
+ "symbol": "CVE"
+ },
+ "KZT": {
+ "name": "Kasacheschen Tenge",
+ "symbol": "KZT"
+ },
+ "QAR": {
+ "name": "Katar-Riyal",
+ "symbol": "QAR"
+ },
+ "KES": {
+ "name": "Kenia-Schilling",
+ "symbol": "KES"
+ },
+ "KGS": {
+ "name": "Kirgisesche Som",
+ "symbol": "KGS"
+ },
+ "COP": {
+ "name": "Kolumbianesche Peso",
+ "symbol": "COP"
+ },
+ "KMF": {
+ "name": "Komore-Frang",
+ "symbol": "KMF"
+ },
+ "CDF": {
+ "name": "Kongo-Frang",
+ "symbol": "CDF"
+ },
+ "HRK": {
+ "name": "Kroatesche Kuna",
+ "symbol": "HRK"
+ },
+ "CUP": {
+ "name": "Kubanesche Peso",
+ "symbol": "CUP"
+ },
+ "CUC": {
+ "name": "Kubanesche Peso (konvertibel)",
+ "symbol": "CUC"
+ },
+ "KWD": {
+ "name": "Kuwait-Dinar",
+ "symbol": "KWD"
+ },
+ "ZMW": {
+ "name": "Kwacha",
+ "symbol": "ZMW"
+ },
+ "LAK": {
+ "name": "Laoteschen Kip",
+ "symbol": "LAK"
+ },
+ "LBP": {
+ "name": "Libanesescht Pond",
+ "symbol": "LBP"
+ },
+ "LRD": {
+ "name": "Liberianeschen Dollar",
+ "symbol": "LRD"
+ },
+ "LYD": {
+ "name": "Libeschen Dinar",
+ "symbol": "LYD"
+ },
+ "LTL": {
+ "name": "Litauesche Litas",
+ "symbol": "LTL"
+ },
+ "LSL": {
+ "name": "Loti",
+ "symbol": "LSL"
+ },
+ "MOP": {
+ "name": "Macau-Pataca",
+ "symbol": "MOP"
+ },
+ "MGA": {
+ "name": "Madagaskar-Ariary",
+ "symbol": "MGA"
+ },
+ "MWK": {
+ "name": "Malawi-Kwacha",
+ "symbol": "MWK"
+ },
+ "MYR": {
+ "name": "Malayseschen Ringgit",
+ "symbol": "MYR"
+ },
+ "MVR": {
+ "name": "Maldiven-Rupie",
+ "symbol": "MVR"
+ },
+ "MAD": {
+ "name": "Marokkaneschen Dirham",
+ "symbol": "MAD"
+ },
+ "MRO": {
+ "name": "Mauretaneschen Ouguiya",
+ "symbol": "MRO"
+ },
+ "MUR": {
+ "name": "Mauritius-Rupie",
+ "symbol": "MUR"
+ },
+ "MKD": {
+ "name": "Mazedoneschen Denar",
+ "symbol": "MKD"
+ },
+ "MXN": {
+ "name": "Mexikanesche Peso",
+ "symbol": "MX$"
+ },
+ "MDL": {
+ "name": "Moldawesche Leu",
+ "symbol": "MDL"
+ },
+ "MNT": {
+ "name": "Mongoleschen Tögrög",
+ "symbol": "MNT"
+ },
+ "MZN": {
+ "name": "Mosambikanesche Metical",
+ "symbol": "MZN"
+ },
+ "MMK": {
+ "name": "Myanmaresche Kyat",
+ "symbol": "MMK"
+ },
+ "NAD": {
+ "name": "Namibia-Dollar",
+ "symbol": "NAD"
+ },
+ "TWD": {
+ "name": "Neien Taiwan-Dollar",
+ "symbol": "NT$"
+ },
+ "NZD": {
+ "name": "Neiséiland-Dollar",
+ "symbol": "NZ$"
+ },
+ "NPR": {
+ "name": "Nepalesesch Rupie",
+ "symbol": "NPR"
+ },
+ "NIO": {
+ "name": "Nicaraguanesche Córdoba",
+ "symbol": "NIO"
+ },
+ "NGN": {
+ "name": "Nigerianeschen Naira",
+ "symbol": "NGN"
+ },
+ "KPW": {
+ "name": "Nordkoreanesche Won",
+ "symbol": "KPW"
+ },
+ "NOK": {
+ "name": "Norwegesch Kroun",
+ "symbol": "NOK"
+ },
+ "OMR": {
+ "name": "Omanesche Rial",
+ "symbol": "OMR"
+ },
+ "XCD": {
+ "name": "Ostkaribeschen Dollar",
+ "symbol": "EC$"
+ },
+ "PKR": {
+ "name": "Pakistanesch Rupie",
+ "symbol": "PKR"
+ },
+ "PAB": {
+ "name": "Panamaesche Balboa",
+ "symbol": "PAB"
+ },
+ "PGK": {
+ "name": "Papua-Neiguinéiesche Kina",
+ "symbol": "PGK"
+ },
+ "PYG": {
+ "name": "Paraguayeschen Guaraní",
+ "symbol": "PYG"
+ },
+ "PEN": {
+ "name": "Peruaneschen Neie Sol",
+ "symbol": "PEN"
+ },
+ "PHP": {
+ "name": "Philippinnesche Peso",
+ "symbol": "PHP"
+ },
+ "PLN": {
+ "name": "Polneschen Zloty",
+ "symbol": "PLN"
+ },
+ "CNY": {
+ "name": "Renminbi Yuan",
+ "symbol": "CNÂ¥"
+ },
+ "RWF": {
+ "name": "Ruanda-Frang",
+ "symbol": "RWF"
+ },
+ "RON": {
+ "name": "Rumänesche Leu",
+ "symbol": "RON"
+ },
+ "RUB": {
+ "name": "Russesche Rubel",
+ "symbol": "RUB"
+ },
+ "SBD": {
+ "name": "Salomonen-Dollar",
+ "symbol": "SBD"
+ },
+ "WST": {
+ "name": "Samoaneschen Tala",
+ "symbol": "WST"
+ },
+ "STD": {
+ "name": "São-toméeschen Dobra",
+ "symbol": "STD"
+ },
+ "SAR": {
+ "name": "Saudi-Rial",
+ "symbol": "SAR"
+ },
+ "CHF": {
+ "name": "Schwäizer Frang",
+ "symbol": "CHF"
+ },
+ "SEK": {
+ "name": "Schwedesch Kroun",
+ "symbol": "SEK"
+ },
+ "RSD": {
+ "name": "Serbeschen Dinar",
+ "symbol": "RSD"
+ },
+ "SCR": {
+ "name": "Seychellen-Rupie",
+ "symbol": "SCR"
+ },
+ "SLL": {
+ "name": "Sierra-leonesche Leone",
+ "symbol": "SLL"
+ },
+ "ZWL": {
+ "name": "Simbabwe-Dollar (2009)",
+ "symbol": "ZWL"
+ },
+ "SGD": {
+ "name": "Singapur-Dollar",
+ "symbol": "SGD"
+ },
+ "SOS": {
+ "name": "Somalia-Schilling",
+ "symbol": "SOS"
+ },
+ "LKR": {
+ "name": "Sri-Lanka-Rupie",
+ "symbol": "LKR"
+ },
+ "SHP": {
+ "name": "St. Helena-Pond",
+ "symbol": "SHP"
+ },
+ "ZAR": {
+ "name": "Südafrikanesche Rand",
+ "symbol": "ZAR"
+ },
+ "SDG": {
+ "name": "Sudanesescht Pond",
+ "symbol": "SDG"
+ },
+ "KRW": {
+ "name": "Südkoreanesche Won",
+ "symbol": "â‚©"
+ },
+ "SSP": {
+ "name": "Südsudanesescht Pond",
+ "symbol": "SSP"
+ },
+ "SRD": {
+ "name": "Surinameschen Dollar",
+ "symbol": "SRD"
+ },
+ "SZL": {
+ "name": "Swasilännesche Lilangeni",
+ "symbol": "SZL"
+ },
+ "SYP": {
+ "name": "Syrescht Pond",
+ "symbol": "SYP"
+ },
+ "TJS": {
+ "name": "Tadschikistan-Somoni",
+ "symbol": "TJS"
+ },
+ "TZS": {
+ "name": "Tansania-Schilling",
+ "symbol": "TZS"
+ },
+ "THB": {
+ "name": "Thailännesche Baht",
+ "symbol": "฿"
+ },
+ "TRY": {
+ "name": "Tierkesch Lira",
+ "symbol": "TRY"
+ },
+ "TOP": {
+ "name": "Tongaeschen Paʻanga",
+ "symbol": "TOP"
+ },
+ "TTD": {
+ "name": "Trinidad-an-Tobago-Dollar",
+ "symbol": "TTD"
+ },
+ "CZK": {
+ "name": "Tschechesch Kroun",
+ "symbol": "CZK"
+ },
+ "TND": {
+ "name": "Tuneseschen Dinar",
+ "symbol": "TND"
+ },
+ "TMT": {
+ "name": "Turkmenistan-Manat",
+ "symbol": "TMT"
+ },
+ "UGX": {
+ "name": "Uganda-Schilling",
+ "symbol": "UGX"
+ },
+ "UAH": {
+ "name": "Ukraineschen Hrywnja",
+ "symbol": "UAH"
+ },
+ "HUF": {
+ "name": "Ungaresche Forint",
+ "symbol": "HUF"
+ },
+ "UYU": {
+ "name": "Uruguayesche Peso",
+ "symbol": "UYU"
+ },
+ "USD": {
+ "name": "US-Dollar",
+ "symbol": "$"
+ },
+ "UZS": {
+ "name": "Usbekistan-Sum",
+ "symbol": "UZS"
+ },
+ "AED": {
+ "name": "VAE-Dirham",
+ "symbol": "AED"
+ },
+ "VUV": {
+ "name": "Vanuatu-Vatu",
+ "symbol": "VUV"
+ },
+ "VEF": {
+ "name": "Venezolanesche Bolívar",
+ "symbol": "VEF"
+ },
+ "VND": {
+ "name": "Vietnameseschen Dong",
+ "symbol": "â‚«"
+ },
+ "BYR": {
+ "name": "Wäissrussesche Rubel",
+ "symbol": "BYR"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/currency/lg.json b/library/intl/resources/currency/lg.json
new file mode 100644
index 000000000..c5d3ebfa3
--- /dev/null
+++ b/library/intl/resources/currency/lg.json
@@ -0,0 +1,634 @@
+{
+ "AFN": {
+ "name": "AFN",
+ "symbol": "AFN"
+ },
+ "ALL": {
+ "name": "ALL",
+ "symbol": "ALL"
+ },
+ "AMD": {
+ "name": "AMD",
+ "symbol": "AMD"
+ },
+ "ANG": {
+ "name": "ANG",
+ "symbol": "ANG"
+ },
+ "ARS": {
+ "name": "ARS",
+ "symbol": "ARS"
+ },
+ "AWG": {
+ "name": "AWG",
+ "symbol": "AWG"
+ },
+ "AZN": {
+ "name": "AZN",
+ "symbol": "AZN"
+ },
+ "BAM": {
+ "name": "BAM",
+ "symbol": "BAM"
+ },
+ "BBD": {
+ "name": "BBD",
+ "symbol": "BBD"
+ },
+ "BDT": {
+ "name": "BDT",
+ "symbol": "BDT"
+ },
+ "BGN": {
+ "name": "BGN",
+ "symbol": "BGN"
+ },
+ "ETB": {
+ "name": "Biiru ey’Esyopya",
+ "symbol": "ETB"
+ },
+ "BMD": {
+ "name": "BMD",
+ "symbol": "BMD"
+ },
+ "BND": {
+ "name": "BND",
+ "symbol": "BND"
+ },
+ "BOB": {
+ "name": "BOB",
+ "symbol": "BOB"
+ },
+ "BRL": {
+ "name": "BRL",
+ "symbol": "R$"
+ },
+ "BSD": {
+ "name": "BSD",
+ "symbol": "BSD"
+ },
+ "BTN": {
+ "name": "BTN",
+ "symbol": "BTN"
+ },
+ "BYR": {
+ "name": "BYR",
+ "symbol": "BYR"
+ },
+ "BZD": {
+ "name": "BZD",
+ "symbol": "BZD"
+ },
+ "CLP": {
+ "name": "CLP",
+ "symbol": "CLP"
+ },
+ "COP": {
+ "name": "COP",
+ "symbol": "COP"
+ },
+ "CRC": {
+ "name": "CRC",
+ "symbol": "CRC"
+ },
+ "CUC": {
+ "name": "CUC",
+ "symbol": "CUC"
+ },
+ "CUP": {
+ "name": "CUP",
+ "symbol": "CUP"
+ },
+ "CZK": {
+ "name": "CZK",
+ "symbol": "CZK"
+ },
+ "GMD": {
+ "name": "Dalasi ey’eGambya",
+ "symbol": "GMD"
+ },
+ "DZD": {
+ "name": "Dinaali ey’Aligerya",
+ "symbol": "DZD"
+ },
+ "BHD": {
+ "name": "Dinaali ey’eBaareeni",
+ "symbol": "BHD"
+ },
+ "LYD": {
+ "name": "Dinaali ey’eLibya",
+ "symbol": "LYD"
+ },
+ "SDG": {
+ "name": "Dinaali ey’eSudaani",
+ "symbol": "SDG"
+ },
+ "TND": {
+ "name": "Dinaali ey’eTunizya",
+ "symbol": "TND"
+ },
+ "MAD": {
+ "name": "Diraamu ey’eMoroko",
+ "symbol": "MAD"
+ },
+ "AED": {
+ "name": "Diraamu eya Emireeti",
+ "symbol": "AED"
+ },
+ "DKK": {
+ "name": "DKK",
+ "symbol": "DKK"
+ },
+ "STD": {
+ "name": "Dobura ey’eSantome ne Purincipe",
+ "symbol": "STD"
+ },
+ "USD": {
+ "name": "Doola ey’Amerika",
+ "symbol": "US$"
+ },
+ "AUD": {
+ "name": "Doola ey’Awusiturelya",
+ "symbol": "A$"
+ },
+ "CAD": {
+ "name": "Doola ey’eKanada",
+ "symbol": "CA$"
+ },
+ "LRD": {
+ "name": "Doola ey’eLiberya",
+ "symbol": "LRD"
+ },
+ "NAD": {
+ "name": "Doola ey’eNamibiya",
+ "symbol": "NAD"
+ },
+ "DOP": {
+ "name": "DOP",
+ "symbol": "DOP"
+ },
+ "CVE": {
+ "name": "Esikudo ey’Keepu Veredi",
+ "symbol": "CVE"
+ },
+ "BIF": {
+ "name": "Faranga ey’eburundi",
+ "symbol": "BIF"
+ },
+ "DJF": {
+ "name": "Faranga ey’eJjibuti",
+ "symbol": "DJF"
+ },
+ "KMF": {
+ "name": "Faranga ey’eKomoro",
+ "symbol": "KMF"
+ },
+ "CDF": {
+ "name": "Faranga ey’eKongo",
+ "symbol": "CDF"
+ },
+ "MGA": {
+ "name": "Faranga ey’eMalagase",
+ "symbol": "MGA"
+ },
+ "RWF": {
+ "name": "Faranga ey’eRwanda",
+ "symbol": "RWF"
+ },
+ "CHF": {
+ "name": "Faranga ey’eSwitizirandi",
+ "symbol": "CHF"
+ },
+ "XOF": {
+ "name": "Faranga ey’omu Afirika ey’ebugwanjuba",
+ "symbol": "CFA"
+ },
+ "XAF": {
+ "name": "Faranga ey’omu Afirika eya wakati",
+ "symbol": "FCFA"
+ },
+ "FJD": {
+ "name": "FJD",
+ "symbol": "FJD"
+ },
+ "FKP": {
+ "name": "FKP",
+ "symbol": "FKP"
+ },
+ "GEL": {
+ "name": "GEL",
+ "symbol": "GEL"
+ },
+ "GHS": {
+ "name": "GHS",
+ "symbol": "GHS"
+ },
+ "GIP": {
+ "name": "GIP",
+ "symbol": "GIP"
+ },
+ "GNF": {
+ "name": "GNF",
+ "symbol": "GNF"
+ },
+ "GTQ": {
+ "name": "GTQ",
+ "symbol": "GTQ"
+ },
+ "GYD": {
+ "name": "GYD",
+ "symbol": "GYD"
+ },
+ "HKD": {
+ "name": "HKD",
+ "symbol": "HK$"
+ },
+ "HNL": {
+ "name": "HNL",
+ "symbol": "HNL"
+ },
+ "HRK": {
+ "name": "HRK",
+ "symbol": "HRK"
+ },
+ "HTG": {
+ "name": "HTG",
+ "symbol": "HTG"
+ },
+ "HUF": {
+ "name": "HUF",
+ "symbol": "HUF"
+ },
+ "IDR": {
+ "name": "IDR",
+ "symbol": "IDR"
+ },
+ "ILS": {
+ "name": "ILS",
+ "symbol": "₪"
+ },
+ "IQD": {
+ "name": "IQD",
+ "symbol": "IQD"
+ },
+ "IRR": {
+ "name": "IRR",
+ "symbol": "IRR"
+ },
+ "ISK": {
+ "name": "ISK",
+ "symbol": "ISK"
+ },
+ "JMD": {
+ "name": "JMD",
+ "symbol": "JMD"
+ },
+ "JOD": {
+ "name": "JOD",
+ "symbol": "JOD"
+ },
+ "KGS": {
+ "name": "KGS",
+ "symbol": "KGS"
+ },
+ "KHR": {
+ "name": "KHR",
+ "symbol": "KHR"
+ },
+ "KPW": {
+ "name": "KPW",
+ "symbol": "KPW"
+ },
+ "KRW": {
+ "name": "KRW",
+ "symbol": "â‚©"
+ },
+ "MWK": {
+ "name": "Kwaca ey’eMalawi",
+ "symbol": "MWK"
+ },
+ "ZMW": {
+ "name": "Kwaca ey’eZambya",
+ "symbol": "ZMW"
+ },
+ "AOA": {
+ "name": "Kwanza ey’Angola",
+ "symbol": "AOA"
+ },
+ "KWD": {
+ "name": "KWD",
+ "symbol": "KWD"
+ },
+ "KYD": {
+ "name": "KYD",
+ "symbol": "KYD"
+ },
+ "KZT": {
+ "name": "KZT",
+ "symbol": "KZT"
+ },
+ "LAK": {
+ "name": "LAK",
+ "symbol": "LAK"
+ },
+ "LBP": {
+ "name": "LBP",
+ "symbol": "LBP"
+ },
+ "SLL": {
+ "name": "Lewone",
+ "symbol": "SLL"
+ },
+ "SZL": {
+ "name": "Lilangeni",
+ "symbol": "SZL"
+ },
+ "LKR": {
+ "name": "LKR",
+ "symbol": "LKR"
+ },
+ "LSL": {
+ "name": "Loti ey’eLesoso",
+ "symbol": "LSL"
+ },
+ "LTL": {
+ "name": "LTL",
+ "symbol": "LTL"
+ },
+ "MDL": {
+ "name": "MDL",
+ "symbol": "MDL"
+ },
+ "MKD": {
+ "name": "MKD",
+ "symbol": "MKD"
+ },
+ "MMK": {
+ "name": "MMK",
+ "symbol": "MMK"
+ },
+ "MNT": {
+ "name": "MNT",
+ "symbol": "MNT"
+ },
+ "MOP": {
+ "name": "MOP",
+ "symbol": "MOP"
+ },
+ "MVR": {
+ "name": "MVR",
+ "symbol": "MVR"
+ },
+ "MXN": {
+ "name": "MXN",
+ "symbol": "MX$"
+ },
+ "MYR": {
+ "name": "MYR",
+ "symbol": "MYR"
+ },
+ "MZN": {
+ "name": "MZN",
+ "symbol": "MZN"
+ },
+ "ERN": {
+ "name": "Nakifa ey’Eritureya",
+ "symbol": "ERN"
+ },
+ "NGN": {
+ "name": "Nayira ey’eNayijerya",
+ "symbol": "NGN"
+ },
+ "NIO": {
+ "name": "NIO",
+ "symbol": "NIO"
+ },
+ "NOK": {
+ "name": "NOK",
+ "symbol": "NOK"
+ },
+ "NPR": {
+ "name": "NPR",
+ "symbol": "NPR"
+ },
+ "NZD": {
+ "name": "NZD",
+ "symbol": "NZ$"
+ },
+ "OMR": {
+ "name": "OMR",
+ "symbol": "OMR"
+ },
+ "PAB": {
+ "name": "PAB",
+ "symbol": "PAB"
+ },
+ "GBP": {
+ "name": "Pawundi ey’eBungereza",
+ "symbol": "£"
+ },
+ "EGP": {
+ "name": "Pawundi ey’eMisiri",
+ "symbol": "EGP"
+ },
+ "SHP": {
+ "name": "Pawundi ey’eSenti Herena",
+ "symbol": "SHP"
+ },
+ "PEN": {
+ "name": "PEN",
+ "symbol": "PEN"
+ },
+ "PGK": {
+ "name": "PGK",
+ "symbol": "PGK"
+ },
+ "PHP": {
+ "name": "PHP",
+ "symbol": "PHP"
+ },
+ "PKR": {
+ "name": "PKR",
+ "symbol": "PKR"
+ },
+ "PLN": {
+ "name": "PLN",
+ "symbol": "PLN"
+ },
+ "BWP": {
+ "name": "Pula ey’eBotiswana",
+ "symbol": "BWP"
+ },
+ "PYG": {
+ "name": "PYG",
+ "symbol": "PYG"
+ },
+ "QAR": {
+ "name": "QAR",
+ "symbol": "QAR"
+ },
+ "ZAR": {
+ "name": "Randi ey’eSawusafirika",
+ "symbol": "ZAR"
+ },
+ "SAR": {
+ "name": "Riyaali ey’eBuwarabu",
+ "symbol": "SAR"
+ },
+ "RON": {
+ "name": "RON",
+ "symbol": "RON"
+ },
+ "RSD": {
+ "name": "RSD",
+ "symbol": "RSD"
+ },
+ "RUB": {
+ "name": "RUB",
+ "symbol": "RUB"
+ },
+ "INR": {
+ "name": "Rupiya ey’eBuyindi",
+ "symbol": "₹"
+ },
+ "MUR": {
+ "name": "Rupiya ey’eMawurisyasi",
+ "symbol": "MUR"
+ },
+ "SCR": {
+ "name": "Rupiya ey’eSesere",
+ "symbol": "SCR"
+ },
+ "SBD": {
+ "name": "SBD",
+ "symbol": "SBD"
+ },
+ "SEK": {
+ "name": "SEK",
+ "symbol": "SEK"
+ },
+ "SGD": {
+ "name": "SGD",
+ "symbol": "SGD"
+ },
+ "KES": {
+ "name": "Silingi ey’eKenya",
+ "symbol": "KES"
+ },
+ "SOS": {
+ "name": "Silingi ey’eSomaliya",
+ "symbol": "SOS"
+ },
+ "TZS": {
+ "name": "Silingi ey’eTanzaniya",
+ "symbol": "TZS"
+ },
+ "UGX": {
+ "name": "Silingi eya Yuganda",
+ "symbol": "USh"
+ },
+ "SRD": {
+ "name": "SRD",
+ "symbol": "SRD"
+ },
+ "SSP": {
+ "name": "SSP",
+ "symbol": "SSP"
+ },
+ "SVC": {
+ "name": "SVC",
+ "symbol": "SVC"
+ },
+ "SYP": {
+ "name": "SYP",
+ "symbol": "SYP"
+ },
+ "THB": {
+ "name": "THB",
+ "symbol": "THB"
+ },
+ "TJS": {
+ "name": "TJS",
+ "symbol": "TJS"
+ },
+ "TMT": {
+ "name": "TMT",
+ "symbol": "TMT"
+ },
+ "TOP": {
+ "name": "TOP",
+ "symbol": "TOP"
+ },
+ "TRY": {
+ "name": "TRY",
+ "symbol": "TRY"
+ },
+ "TTD": {
+ "name": "TTD",
+ "symbol": "TTD"
+ },
+ "TWD": {
+ "name": "TWD",
+ "symbol": "NT$"
+ },
+ "UAH": {
+ "name": "UAH",
+ "symbol": "UAH"
+ },
+ "UYU": {
+ "name": "UYU",
+ "symbol": "UYU"
+ },
+ "UZS": {
+ "name": "UZS",
+ "symbol": "UZS"
+ },
+ "VEF": {
+ "name": "VEF",
+ "symbol": "VEF"
+ },
+ "VND": {
+ "name": "VND",
+ "symbol": "â‚«"
+ },
+ "VUV": {
+ "name": "VUV",
+ "symbol": "VUV"
+ },
+ "WST": {
+ "name": "WST",
+ "symbol": "WST"
+ },
+ "MRO": {
+ "name": "Wugwiya ey’eMawritenya",
+ "symbol": "MRO"
+ },
+ "XCD": {
+ "name": "XCD",
+ "symbol": "EC$"
+ },
+ "XPF": {
+ "name": "XPF",
+ "symbol": "CFPF"
+ },
+ "JPY": {
+ "name": "Yeni ey’eJapani",
+ "symbol": "JPÂ¥"
+ },
+ "YER": {
+ "name": "YER",
+ "symbol": "YER"
+ },
+ "EUR": {
+ "name": "Yuro",
+ "symbol": "€"
+ },
+ "CNY": {
+ "name": "Yuwani Reniminibi ey’eCayina",
+ "symbol": "CNÂ¥"
+ },
+ "ZWL": {
+ "name": "ZWL",
+ "symbol": "ZWL"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/currency/ln.json b/library/intl/resources/currency/ln.json
new file mode 100644
index 000000000..6bb60052f
--- /dev/null
+++ b/library/intl/resources/currency/ln.json
@@ -0,0 +1,634 @@
+{
+ "AFN": {
+ "name": "AFN",
+ "symbol": "AFN"
+ },
+ "ALL": {
+ "name": "ALL",
+ "symbol": "ALL"
+ },
+ "AMD": {
+ "name": "AMD",
+ "symbol": "AMD"
+ },
+ "ANG": {
+ "name": "ANG",
+ "symbol": "ANG"
+ },
+ "AWG": {
+ "name": "AWG",
+ "symbol": "AWG"
+ },
+ "AZN": {
+ "name": "AZN",
+ "symbol": "AZN"
+ },
+ "PAB": {
+ "name": "Balboa",
+ "symbol": "PAB"
+ },
+ "BAM": {
+ "name": "BAM",
+ "symbol": "BAM"
+ },
+ "BBD": {
+ "name": "BBD",
+ "symbol": "BBD"
+ },
+ "BDT": {
+ "name": "BDT",
+ "symbol": "BDT"
+ },
+ "BGN": {
+ "name": "BGN",
+ "symbol": "BGN"
+ },
+ "ETB": {
+ "name": "Birɛ ya Etsiópi",
+ "symbol": "ETB"
+ },
+ "BMD": {
+ "name": "BMD",
+ "symbol": "BMD"
+ },
+ "BND": {
+ "name": "BND",
+ "symbol": "BND"
+ },
+ "BOB": {
+ "name": "Boliviano",
+ "symbol": "BOB"
+ },
+ "BSD": {
+ "name": "BSD",
+ "symbol": "BSD"
+ },
+ "BTN": {
+ "name": "BTN",
+ "symbol": "BTN"
+ },
+ "BYR": {
+ "name": "BYR",
+ "symbol": "BYR"
+ },
+ "BZD": {
+ "name": "BZD",
+ "symbol": "BZD"
+ },
+ "GHS": {
+ "name": "Cedi",
+ "symbol": "GHS"
+ },
+ "CRC": {
+ "name": "Colon ya Kosta Rika",
+ "symbol": "CRC"
+ },
+ "CUC": {
+ "name": "CUC",
+ "symbol": "CUC"
+ },
+ "GMD": {
+ "name": "Dalasi ya Gambi",
+ "symbol": "GMD"
+ },
+ "DZD": {
+ "name": "DinarÉ› ya Alizeri",
+ "symbol": "DZD"
+ },
+ "BHD": {
+ "name": "Dinarɛ ya Bahrɛnɛ",
+ "symbol": "BHD"
+ },
+ "LYD": {
+ "name": "Dinarɛ ya Libí",
+ "symbol": "LYD"
+ },
+ "SDG": {
+ "name": "Dinarɛ ya Sudá",
+ "symbol": "SDG"
+ },
+ "TND": {
+ "name": "DinarÉ› ya Tinizi",
+ "symbol": "TND"
+ },
+ "MAD": {
+ "name": "Dirihame ya MarokÉ›",
+ "symbol": "MAD"
+ },
+ "AED": {
+ "name": "Dirihamɛ ya Lémila alabo",
+ "symbol": "AED"
+ },
+ "STD": {
+ "name": "Dobra ya Sao Tomé mpé Presipe",
+ "symbol": "STD"
+ },
+ "USD": {
+ "name": "DolarÉ› ya Ameriki",
+ "symbol": "US$"
+ },
+ "CAD": {
+ "name": "Dolarɛ ya Kanadá",
+ "symbol": "CA$"
+ },
+ "LRD": {
+ "name": "DolarÉ› ya Liberya",
+ "symbol": "LRD"
+ },
+ "NAD": {
+ "name": "DolarÉ› ya Namibi",
+ "symbol": "NAD"
+ },
+ "AUD": {
+ "name": "DolarÉ› ya Ositali",
+ "symbol": "A$"
+ },
+ "CVE": {
+ "name": "Esikudo ya Kapevɛrɛ",
+ "symbol": "CVE"
+ },
+ "EUR": {
+ "name": "ÆlÉ”Ì",
+ "symbol": "€"
+ },
+ "XOF": {
+ "name": "Falánga CFA BCEAO",
+ "symbol": "CFA"
+ },
+ "XAF": {
+ "name": "Falánga CFA BEAC",
+ "symbol": "FCFA"
+ },
+ "BIF": {
+ "name": "Falánga ya Burundi",
+ "symbol": "BIF"
+ },
+ "DJF": {
+ "name": "Falánga ya Dzibuti",
+ "symbol": "DJF"
+ },
+ "GNF": {
+ "name": "Falánga ya Gine",
+ "symbol": "GNF"
+ },
+ "KMF": {
+ "name": "Falánga ya Komoro",
+ "symbol": "KMF"
+ },
+ "CDF": {
+ "name": "Falánga ya Kongó",
+ "symbol": "FC"
+ },
+ "MGA": {
+ "name": "Falánga ya Madagasikarɛ",
+ "symbol": "MGA"
+ },
+ "RWF": {
+ "name": "Falánga ya Rwanda",
+ "symbol": "RWF"
+ },
+ "CHF": {
+ "name": "Falánga ya Swisɛ",
+ "symbol": "CHF"
+ },
+ "FJD": {
+ "name": "FJD",
+ "symbol": "FJD"
+ },
+ "FKP": {
+ "name": "FKP",
+ "symbol": "FKP"
+ },
+ "GEL": {
+ "name": "GEL",
+ "symbol": "GEL"
+ },
+ "GIP": {
+ "name": "GIP",
+ "symbol": "GIP"
+ },
+ "GTQ": {
+ "name": "GTQ",
+ "symbol": "GTQ"
+ },
+ "PYG": {
+ "name": "Guarani",
+ "symbol": "PYG"
+ },
+ "HTG": {
+ "name": "Gurde",
+ "symbol": "HTG"
+ },
+ "GYD": {
+ "name": "GYD",
+ "symbol": "GYD"
+ },
+ "HKD": {
+ "name": "HKD",
+ "symbol": "HK$"
+ },
+ "HNL": {
+ "name": "HNL",
+ "symbol": "HNL"
+ },
+ "HRK": {
+ "name": "HRK",
+ "symbol": "HRK"
+ },
+ "HUF": {
+ "name": "HUF",
+ "symbol": "HUF"
+ },
+ "IDR": {
+ "name": "IDR",
+ "symbol": "IDR"
+ },
+ "ILS": {
+ "name": "ILS",
+ "symbol": "₪"
+ },
+ "IQD": {
+ "name": "IQD",
+ "symbol": "IQD"
+ },
+ "IRR": {
+ "name": "IRR",
+ "symbol": "IRR"
+ },
+ "JMD": {
+ "name": "JMD",
+ "symbol": "JMD"
+ },
+ "JOD": {
+ "name": "JOD",
+ "symbol": "JOD"
+ },
+ "KGS": {
+ "name": "KGS",
+ "symbol": "KGS"
+ },
+ "KHR": {
+ "name": "KHR",
+ "symbol": "KHR"
+ },
+ "KPW": {
+ "name": "KPW",
+ "symbol": "KPW"
+ },
+ "KRW": {
+ "name": "KRW",
+ "symbol": "â‚©"
+ },
+ "AOA": {
+ "name": "Kwanza ya Angóla",
+ "symbol": "AOA"
+ },
+ "MWK": {
+ "name": "Kwasha ya Malawi",
+ "symbol": "MWK"
+ },
+ "ZMW": {
+ "name": "Kwasha ya Zambi",
+ "symbol": "ZMW"
+ },
+ "KWD": {
+ "name": "KWD",
+ "symbol": "KWD"
+ },
+ "KYD": {
+ "name": "KYD",
+ "symbol": "KYD"
+ },
+ "KZT": {
+ "name": "KZT",
+ "symbol": "KZT"
+ },
+ "LAK": {
+ "name": "LAK",
+ "symbol": "LAK"
+ },
+ "LBP": {
+ "name": "LBP",
+ "symbol": "LBP"
+ },
+ "SLL": {
+ "name": "LeonÉ›",
+ "symbol": "SLL"
+ },
+ "SZL": {
+ "name": "Lilangeni",
+ "symbol": "SZL"
+ },
+ "LTL": {
+ "name": "Litas ya Litwani",
+ "symbol": "LTL"
+ },
+ "LKR": {
+ "name": "LKR",
+ "symbol": "LKR"
+ },
+ "LSL": {
+ "name": "Loti ya Lesóto",
+ "symbol": "LSL"
+ },
+ "MDL": {
+ "name": "MDL",
+ "symbol": "MDL"
+ },
+ "MKD": {
+ "name": "MKD",
+ "symbol": "MKD"
+ },
+ "MMK": {
+ "name": "MMK",
+ "symbol": "MMK"
+ },
+ "MNT": {
+ "name": "MNT",
+ "symbol": "MNT"
+ },
+ "MOP": {
+ "name": "MOP",
+ "symbol": "MOP"
+ },
+ "CZK": {
+ "name": "Motolé Sheki",
+ "symbol": "CZK"
+ },
+ "DKK": {
+ "name": "Motolé ya Danemark",
+ "symbol": "DKK"
+ },
+ "ISK": {
+ "name": "Motolé ya Islandi",
+ "symbol": "ISK"
+ },
+ "NOK": {
+ "name": "Motolé ya Norvej",
+ "symbol": "NOK"
+ },
+ "SEK": {
+ "name": "Motolé ya Swédi",
+ "symbol": "SEK"
+ },
+ "MVR": {
+ "name": "MVR",
+ "symbol": "MVR"
+ },
+ "MYR": {
+ "name": "MYR",
+ "symbol": "MYR"
+ },
+ "MZN": {
+ "name": "MZN",
+ "symbol": "MZN"
+ },
+ "NGN": {
+ "name": "Naira ya Nizerya",
+ "symbol": "NGN"
+ },
+ "ERN": {
+ "name": "Nakfa ya ElitlÉ›",
+ "symbol": "ERN"
+ },
+ "NIO": {
+ "name": "NIO",
+ "symbol": "NIO"
+ },
+ "NPR": {
+ "name": "NPR",
+ "symbol": "NPR"
+ },
+ "NZD": {
+ "name": "NZD",
+ "symbol": "NZ$"
+ },
+ "OMR": {
+ "name": "OMR",
+ "symbol": "OMR"
+ },
+ "GBP": {
+ "name": "PaunÉ› ya AngÉ›lÉ›tÉ›ÌlÉ›",
+ "symbol": "£"
+ },
+ "EGP": {
+ "name": "Paunɛ ya Ezípitɛ",
+ "symbol": "EGP"
+ },
+ "SHP": {
+ "name": "Paunɛ ya Sántu elena",
+ "symbol": "SHP"
+ },
+ "DOP": {
+ "name": "Peso Dominikani",
+ "symbol": "DOP"
+ },
+ "ARS": {
+ "name": "Peso y’Argentina",
+ "symbol": "ARS"
+ },
+ "COP": {
+ "name": "Peso ya Kolombi",
+ "symbol": "COP"
+ },
+ "CUP": {
+ "name": "Peso ya Kuba",
+ "symbol": "CUP"
+ },
+ "MXN": {
+ "name": "Peso ya Mexiko",
+ "symbol": "MX$"
+ },
+ "CLP": {
+ "name": "Peso ya Shili",
+ "symbol": "CLP"
+ },
+ "PGK": {
+ "name": "PGK",
+ "symbol": "PGK"
+ },
+ "PHP": {
+ "name": "PHP",
+ "symbol": "PHP"
+ },
+ "PKR": {
+ "name": "PKR",
+ "symbol": "PKR"
+ },
+ "PLN": {
+ "name": "PLN",
+ "symbol": "PLN"
+ },
+ "BWP": {
+ "name": "Pula ya Botswana",
+ "symbol": "BWP"
+ },
+ "QAR": {
+ "name": "QAR",
+ "symbol": "QAR"
+ },
+ "ZAR": {
+ "name": "Randɛ ya Afríka Súdi",
+ "symbol": "ZAR"
+ },
+ "BRL": {
+ "name": "Real ya Brazil",
+ "symbol": "R$"
+ },
+ "SAR": {
+ "name": "RiyalÉ› ya Alabi SawuditÉ›",
+ "symbol": "SAR"
+ },
+ "RON": {
+ "name": "RON",
+ "symbol": "RON"
+ },
+ "RSD": {
+ "name": "RSD",
+ "symbol": "RSD"
+ },
+ "RUB": {
+ "name": "RUB",
+ "symbol": "RUB"
+ },
+ "INR": {
+ "name": "Rupi ya ÃndÉ›",
+ "symbol": "₹"
+ },
+ "MUR": {
+ "name": "Rupi ya Morisi",
+ "symbol": "MUR"
+ },
+ "SCR": {
+ "name": "Rupi ya Sɛshɛlɛ",
+ "symbol": "SCR"
+ },
+ "SBD": {
+ "name": "SBD",
+ "symbol": "SBD"
+ },
+ "SGD": {
+ "name": "SGD",
+ "symbol": "SGD"
+ },
+ "KES": {
+ "name": "ShilingÉ› ya Kenya",
+ "symbol": "KES"
+ },
+ "SOS": {
+ "name": "ShilingÉ› ya Somali",
+ "symbol": "SOS"
+ },
+ "TZS": {
+ "name": "ShilingÉ› ya Tanzani",
+ "symbol": "TZS"
+ },
+ "UGX": {
+ "name": "ShilingÉ› ya Uganda",
+ "symbol": "UGX"
+ },
+ "PEN": {
+ "name": "Sol Sika",
+ "symbol": "PEN"
+ },
+ "SRD": {
+ "name": "SRD",
+ "symbol": "SRD"
+ },
+ "SSP": {
+ "name": "SSP",
+ "symbol": "SSP"
+ },
+ "SVC": {
+ "name": "SVC",
+ "symbol": "SVC"
+ },
+ "SYP": {
+ "name": "SYP",
+ "symbol": "SYP"
+ },
+ "THB": {
+ "name": "THB",
+ "symbol": "THB"
+ },
+ "TJS": {
+ "name": "TJS",
+ "symbol": "TJS"
+ },
+ "TMT": {
+ "name": "TMT",
+ "symbol": "TMT"
+ },
+ "TOP": {
+ "name": "TOP",
+ "symbol": "TOP"
+ },
+ "TRY": {
+ "name": "TRY",
+ "symbol": "TRY"
+ },
+ "TTD": {
+ "name": "TTD",
+ "symbol": "TTD"
+ },
+ "TWD": {
+ "name": "TWD",
+ "symbol": "NT$"
+ },
+ "UAH": {
+ "name": "UAH",
+ "symbol": "UAH"
+ },
+ "MRO": {
+ "name": "Ugwiya ya Moritani",
+ "symbol": "MRO"
+ },
+ "UYU": {
+ "name": "UYU",
+ "symbol": "UYU"
+ },
+ "UZS": {
+ "name": "UZS",
+ "symbol": "UZS"
+ },
+ "VEF": {
+ "name": "VEF",
+ "symbol": "VEF"
+ },
+ "VND": {
+ "name": "VND",
+ "symbol": "â‚«"
+ },
+ "VUV": {
+ "name": "VUV",
+ "symbol": "VUV"
+ },
+ "WST": {
+ "name": "WST",
+ "symbol": "WST"
+ },
+ "XCD": {
+ "name": "XCD",
+ "symbol": "EC$"
+ },
+ "XPF": {
+ "name": "XPF",
+ "symbol": "CFPF"
+ },
+ "JPY": {
+ "name": "Yeni ya ZapÉ”",
+ "symbol": "JPÂ¥"
+ },
+ "YER": {
+ "name": "YER",
+ "symbol": "YER"
+ },
+ "CNY": {
+ "name": "YuanÉ› Renminbi ya SinÉ›",
+ "symbol": "CNÂ¥"
+ },
+ "ZWL": {
+ "name": "ZWL",
+ "symbol": "ZWL"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/currency/lo.json b/library/intl/resources/currency/lo.json
new file mode 100644
index 000000000..7ce15ae01
--- /dev/null
+++ b/library/intl/resources/currency/lo.json
@@ -0,0 +1,634 @@
+{
+ "PYG": {
+ "name": "àºàº§àº²àº£àº²àº™àºµ ປາຣາàºàº§àº²àº",
+ "symbol": "PYG"
+ },
+ "GYD": {
+ "name": "àºàº²àºâ€‹àº¢àº²â€‹àº™àºµâ€‹àºª ໂດ​ລ່າ",
+ "symbol": "GYD"
+ },
+ "KHR": {
+ "name": "àºàº³â€‹àº›àº¹â€‹à»€àºˆàº ຣຽວ",
+ "symbol": "KHR"
+ },
+ "GNF": {
+ "name": "àºàº´â€‹àº™àº½àº™ ຟຣັງ",
+ "symbol": "GNF"
+ },
+ "GIP": {
+ "name": "àºàº´àºšâ€‹àº£àº²â€‹àº—າ ພາ​ວດ໌",
+ "symbol": "GIP"
+ },
+ "GTQ": {
+ "name": "àºàº»àº§à»€àº•àº¡àº²àº¥àº²àº™ ເຄັດຊອນ",
+ "symbol": "GTQ"
+ },
+ "KRW": {
+ "name": "ເàºàº»àº²â€‹àº«àº¥àºµà»ƒàº•à»‰ ວອນ",
+ "symbol": "â‚©"
+ },
+ "KPW": {
+ "name": "ເàºàº»àº²â€‹àº«àº¥àºµâ€‹à»€à»œàº·àº­ ວອນ",
+ "symbol": "KPW"
+ },
+ "GMD": {
+ "name": "​à»àºàº¡â€‹àºšàº½àº™ ດາ​ລາ​ຊິ",
+ "symbol": "GMD"
+ },
+ "SVC": {
+ "name": "ໂàºàº¥àº­àº‡ ເອàºàº²àº§àº²àº”à»",
+ "symbol": "SVC"
+ },
+ "KGS": {
+ "name": "ຄ​ຣີ​àºàº´àºªâ€‹â€‹àº–າ​ນິ ໂຊມ",
+ "symbol": "KGS"
+ },
+ "CDF": {
+ "name": "ຄອງ​ໂàºâ€‹àº¥àºµàºª ຟຣັງ",
+ "symbol": "CDF"
+ },
+ "KZT": {
+ "name": "ຄາ​ຊັàºâ€‹àºªàº°â€‹àº–າ​ນິ ເຕັງ​ເຈ",
+ "symbol": "KZT"
+ },
+ "QAR": {
+ "name": "ຄາ​ຕາ​ຣິ ຣຽວ",
+ "symbol": "QAR"
+ },
+ "CUC": {
+ "name": "ຄິວà»àºšàº™ ຄອນເວີດຕິໂບ ເປໂຊ",
+ "symbol": "CUC"
+ },
+ "CUP": {
+ "name": "ຄິວà»àºšàº™ ເປໂຊ",
+ "symbol": "CUP"
+ },
+ "KWD": {
+ "name": "ຄູ​ເວ​ຕິ ດິ​ນາ",
+ "symbol": "KWD"
+ },
+ "KES": {
+ "name": "ເຄນ​ຢັນ ຊິວ​ລິງ",
+ "symbol": "KES"
+ },
+ "CVE": {
+ "name": "ເຄບ ເວີດ​ດີນ ເອ​ສ​ຄູ​ໂດ",
+ "symbol": "CVE"
+ },
+ "KYD": {
+ "name": "ເຄ​à»àº¡àº™ ໄອ​à»àº¥àº™ ໂດ​ລ່າ",
+ "symbol": "KYD"
+ },
+ "CRC": {
+ "name": "ໂຄສຕາ ຣິàºàº±àº™ ໂຄລອນ",
+ "symbol": "CRC"
+ },
+ "KMF": {
+ "name": "ໂຄ​ໂມ​ຣຽນ ຟຣັງ",
+ "symbol": "KMF"
+ },
+ "HRK": {
+ "name": "ໂຄຣ​ເອ​ທຽນ ຄູ​ນາ",
+ "symbol": "HRK"
+ },
+ "CZK": {
+ "name": "ໂຄ​ຣູ​ນາ ເຊàº",
+ "symbol": "CZK"
+ },
+ "COP": {
+ "name": "ໂຄ​ລົມ​ບຽນ ເປ​ໂຊ",
+ "symbol": "COP"
+ },
+ "GEL": {
+ "name": "ຈà»â€‹àºˆàº½àº™ ລາ​ຣິ",
+ "symbol": "GEL"
+ },
+ "JOD": {
+ "name": "ຈà»â€‹à»àº”​ນຽນ ດິ​ນາ",
+ "symbol": "JOD"
+ },
+ "JMD": {
+ "name": "​ຈາ​ໄມ​àºàº±àº™ ໂດ​ລ່າ",
+ "symbol": "JMD"
+ },
+ "CNY": {
+ "name": "ຈີນ ຢວນ",
+ "symbol": "CNÂ¥"
+ },
+ "SZL": {
+ "name": "ສະ​ວາ​ຊິ ລິ​ລັນ​àºàº´â€‹àº™àºµ",
+ "symbol": "SZL"
+ },
+ "CHF": {
+ "name": "ສະ​ວິ​ສ ຟ​ຣັງ",
+ "symbol": "CHF"
+ },
+ "SEK": {
+ "name": "ສະ​ວີ​ດິ​ຊ ໂຄຣ​ນາ",
+ "symbol": "SEK"
+ },
+ "AED": {
+ "name": "ສະ​ຫະ​ລັດ​ອາ​ຣັບ​ອາ​ມິ​ເຣດ ເດີ​à»àº®àº¡",
+ "symbol": "AED"
+ },
+ "SGD": {
+ "name": "ສິງ​àºàº°â€‹à»‚ປ ໂດ​ລ່າ",
+ "symbol": "SGD"
+ },
+ "LKR": {
+ "name": "ສີ​ລັງ​àºàº² ຣູ​ປີ",
+ "symbol": "LKR"
+ },
+ "WST": {
+ "name": "ຊາ​ໂມນ ທາ​ລາ",
+ "symbol": "WST"
+ },
+ "SAR": {
+ "name": "ຊາ​ອູ​ດິ ຣິ​ຢອນ",
+ "symbol": "SAR"
+ },
+ "CLP": {
+ "name": "ຊິ​ລຽນ ເປ​ໂຊ",
+ "symbol": "CLP"
+ },
+ "SYP": {
+ "name": "ຊີ​ຣຽນ ພາວດ໌",
+ "symbol": "SYP"
+ },
+ "XPF": {
+ "name": "ຊີ​ເອັບ​ພີ ຟຣັງ",
+ "symbol": "CFPF"
+ },
+ "SDG": {
+ "name": "ຊູ​ດານ​ນີ​ສ ພາວດ໌",
+ "symbol": "SDG"
+ },
+ "SRD": {
+ "name": "ຊູ​ຣິ​ນາ​ມີ​ສ ໂດ​ລ່າ",
+ "symbol": "SRD"
+ },
+ "SCR": {
+ "name": "ເຊ​ເຊວ​ລອàºâ€‹àºªà»Œ ຣູ​ປີ",
+ "symbol": "SCR"
+ },
+ "SLL": {
+ "name": "ເຊàºâ€‹àº™àº² ​ເລໂອ​ນຽນ ເລ​ໂອນ",
+ "symbol": "SLL"
+ },
+ "GHS": {
+ "name": "ເຊ​ດິ àºàº²â€‹àº™àº²â€‹àº­àº½àº™",
+ "symbol": "GHS"
+ },
+ "SHP": {
+ "name": "ເຊນ ເຮ​ເລ​ນາ ພາວດ໌",
+ "symbol": "SHP"
+ },
+ "RSD": {
+ "name": "ເຊີ​ບຽນ ດິ​ນາ",
+ "symbol": "RSD"
+ },
+ "STD": {
+ "name": "ເຊົາ ໂທ​ເມ à»àº­àº™ ພ​ຣິນ​ຊິ​ປີ ໂດບຣາ",
+ "symbol": "STD"
+ },
+ "SSP": {
+ "name": "ເຊົາ​ທ໌ ຊູ​ດານ​ນີ​ສ ພາວດ໌",
+ "symbol": "SSP"
+ },
+ "ZAR": {
+ "name": "ເຊົາທ໌ ອາ​ຟຣິ​àºàº±àº™ à»àº£àº™àº”໌",
+ "symbol": "ZAR"
+ },
+ "ZMW": {
+ "name": "à»àºŠàº¡â€‹àºšàº½àº™ ຄວາ​ຊາ",
+ "symbol": "ZMW"
+ },
+ "SOS": {
+ "name": "ໂຊ​ມາ​ລິ ຊິວ​ລິງ",
+ "symbol": "SOS"
+ },
+ "SBD": {
+ "name": "ໂຊ​ໂລມອນ ໄອ​à»àº¥àº™ ໂດ​ລ່າ",
+ "symbol": "SBD"
+ },
+ "JPY": {
+ "name": "àºàºµà»ˆâ€‹àº›àº¸à»ˆàº™ ເຢນ",
+ "symbol": "JPÂ¥"
+ },
+ "ZWL": {
+ "name": "ດອນລາ ຊິມບັບເວ (2009)",
+ "symbol": "ZWL"
+ },
+ "DJF": {
+ "name": "​ດິ​ບູ​ຈຽນ ຟຣັງ",
+ "symbol": "DJF"
+ },
+ "DKK": {
+ "name": "à»àº”ນ​ນິ​ຊ ໂຄຣນ",
+ "symbol": "DKK"
+ },
+ "DOP": {
+ "name": "ໂດ​ມິ​ນິ​àºàº±àº™ ເປ​ໂຊ",
+ "symbol": "DOP"
+ },
+ "BBD": {
+ "name": "ໂດລ່າ ບາບາດຽນ",
+ "symbol": "BBD"
+ },
+ "BSD": {
+ "name": "ໂດລ່າ ບາຮາມຽນ",
+ "symbol": "BSD"
+ },
+ "CAD": {
+ "name": "ໂດລ່າຄານາດາ",
+ "symbol": "CA$"
+ },
+ "USD": {
+ "name": "​ໂດ​ລ່າ​ສະ​ຫະ​ລັດຯ",
+ "symbol": "US$"
+ },
+ "BZD": {
+ "name": "ໂດ​ລ່າ​ເບ​ລິ​ຊ",
+ "symbol": "BZD"
+ },
+ "BMD": {
+ "name": "ໂດ​ລ່າ​ເບີ​ມິວ​ດາ",
+ "symbol": "BMD"
+ },
+ "TOP": {
+ "name": "ຕອງ​àºàº±àº™ ປາ​ອັງ​àºàº²",
+ "symbol": "TOP"
+ },
+ "TND": {
+ "name": "ຕູ​ນິ​ຊຽນ ດິ​ນາ",
+ "symbol": "TND"
+ },
+ "TMT": {
+ "name": "ເຕີàºâ€‹à»€àº¡â€‹àº™àº´â€‹àºªâ€‹àº–າ​ນິ ມາ​ນັດ",
+ "symbol": "TMT"
+ },
+ "TRY": {
+ "name": "ເຕີ​àºàº´â€‹àºŠ ລິ​ຣາ",
+ "symbol": "TRY"
+ },
+ "TTD": {
+ "name": "ທ​ຣິ​ນິ​à»àº”ດ à»àº­àº™ ໂທ​ບາ​ໂຠໂດ​ລ່າ",
+ "symbol": "TTD"
+ },
+ "TJS": {
+ "name": "ທາ​ຈິ​àºàº´â€‹â€‹àº–າ​ນິ ໂຊ​ໂມ​ນິ",
+ "symbol": "TJS"
+ },
+ "TZS": {
+ "name": "ທານ​ຊາ​ນຽນ ຊິວ​ລິງ",
+ "symbol": "TZS"
+ },
+ "THB": {
+ "name": "ໄທ ບາດ",
+ "symbol": "฿"
+ },
+ "NOK": {
+ "name": "ນà»â€‹à»€àº§â€‹àºàº½àº™ ​ໂຄຣນ",
+ "symbol": "NOK"
+ },
+ "NAD": {
+ "name": "ນາ​ມິ​ບຽນ ໂດ​ລ່າ",
+ "symbol": "NAD"
+ },
+ "NIO": {
+ "name": "ນິàºàº²àº£àº²àºàº§àº™ ໂຄໂດບາ",
+ "symbol": "NIO"
+ },
+ "TWD": {
+ "name": "ນິວ ໄຕ້​ຫວັນ ໂດ​ລ່າ",
+ "symbol": "NT$"
+ },
+ "NZD": {
+ "name": "ນິວ​ຊີ​à»àº¥àº™ ໂດ​ລ່າ",
+ "symbol": "NZ$"
+ },
+ "ANG": {
+ "name": "ເນ​ເທີ​à»àº¥àº™ à»àº­àº™â€‹àº•àº´â€‹àº¥àº½àº™ àºàº´àº§â€‹à»€àº”ີ",
+ "symbol": "ANG"
+ },
+ "NPR": {
+ "name": "ເນ​ປານ ຣູ​ປີ",
+ "symbol": "NPR"
+ },
+ "NGN": {
+ "name": "ໄນ​ຣາ ​ໄນເຈີ​ຣຽນ",
+ "symbol": "NGN"
+ },
+ "BRL": {
+ "name": "ບຣາ​ຊິ​ລຽນ ຣຽວ",
+ "symbol": "R$"
+ },
+ "BND": {
+ "name": "ບຣູ​ໄນ ໂດ​ລ່າ",
+ "symbol": "BND"
+ },
+ "BAM": {
+ "name": "ບອ​ສ​ເນàº-ເຮີ​ເຊ​ໂàºàº§àº´â€‹àº™àº² ຄອນ​ເວີດ​ຕິ​ໂບ ມາàº",
+ "symbol": "BAM"
+ },
+ "BWP": {
+ "name": "ບອດ​ສະ​ວາ​ນານ ພູ​ລາ",
+ "symbol": "BWP"
+ },
+ "BGN": {
+ "name": "ບັງ​àºàº²â€‹àº£àº½àº™ ເລບ",
+ "symbol": "BGN"
+ },
+ "BDT": {
+ "name": "ບັງ​ຄລາ​ເທດ ຕາ​àºàº²",
+ "symbol": "BDT"
+ },
+ "BHD": {
+ "name": "ບາ​ໄຣ​ນິ ດິ​ນາ",
+ "symbol": "BHD"
+ },
+ "BIF": {
+ "name": "ບຸ​ຣັນ​ດຽນ ຟຣັງ",
+ "symbol": "BIF"
+ },
+ "BYR": {
+ "name": "ເບ​ລາ​ຣຸ​ສ​ຊຽນ ຣູ​ເບິນ",
+ "symbol": "BYR"
+ },
+ "BOB": {
+ "name": "ໂບ​ລິ​ວຽນ ໂບ​ລິ​ເວàºâ€‹à»‚ນ",
+ "symbol": "BOB"
+ },
+ "PKR": {
+ "name": "ປາ​àºàº´â€‹àºªàº–ານ ຣູ​ປີ",
+ "symbol": "PKR"
+ },
+ "PGK": {
+ "name": "ປາ​ປົວ ນິວ àºàº´â€‹àº™àº½àº™ àºàº´â€‹àº™àº²",
+ "symbol": "PGK"
+ },
+ "PEN": {
+ "name": "ເປ​ຣູ​ວຽນ ນູ​ໂວ ໂຊ​ລ໌",
+ "symbol": "PEN"
+ },
+ "PLN": {
+ "name": "ໂປ​ລິ​ຊ ຊະ​ລà»â€‹àº•àºµ",
+ "symbol": "PLN"
+ },
+ "PAB": {
+ "name": "ພານາມານຽນ ບອນບົວ",
+ "symbol": "PAB"
+ },
+ "GBP": {
+ "name": "ພາວ​ດ໌ ສະ​ເຕີ​ຣິງ (ອັງ​àºàº´àº”)",
+ "symbol": "£"
+ },
+ "BTN": {
+ "name": "ພູ​ຖານ ງຸນດຣັມ",
+ "symbol": "BTN"
+ },
+ "XAF": {
+ "name": "ຟຣັງ ເຊຟານ ທະນາຄານລັດອາຟຣິàºàº²àºàº²àº‡",
+ "symbol": "FCFA"
+ },
+ "FKP": {
+ "name": "ຟອ​ລ໌àºâ€‹à»àº¥àº™ ໄອ​à»àº¥àº™â€‹àºªà»Œ ພາວ​ດ໌",
+ "symbol": "FKP"
+ },
+ "XOF": {
+ "name": "ຟັງເຊຟານ ອາຟຣິàºàº²àº•àº²à»€àº§àº±àº™àº•àº»àº",
+ "symbol": "CFA"
+ },
+ "FJD": {
+ "name": "ຟິ​ຈຽນ ໂດ​ລ່າ",
+ "symbol": "FJD"
+ },
+ "PHP": {
+ "name": "ຟິ​ລິບ​ປິນ ເປ​ໂຊ",
+ "symbol": "PHP"
+ },
+ "MAD": {
+ "name": "ມà»â€‹àº£àº±àº­àºâ€‹à»àº„ນ​ ເດີ​à»àº®àº¡",
+ "symbol": "MAD"
+ },
+ "MNT": {
+ "name": "ມອງ​ໂàºâ€‹àº¥àº½àº™ ຕູàºàº£àº´àº",
+ "symbol": "MNT"
+ },
+ "MDL": {
+ "name": "ມອນ​ໂດ​à»àº§àº™ ເລ​ອູ",
+ "symbol": "MDL"
+ },
+ "MVR": {
+ "name": "ມັ​ລ​ດິ​ວຽນ ຣູ​ຟິ​ຢາ",
+ "symbol": "MVR"
+ },
+ "MOP": {
+ "name": "ມາ​ເàºàº»à»‰àº² ປາ​​ຕາ​àºàº²",
+ "symbol": "MOP"
+ },
+ "MGA": {
+ "name": "ມາ​ລາ​àºàº²â€‹àºŠàºµ ອາ​ເຣàºâ€‹àº£àºµ",
+ "symbol": "MGA"
+ },
+ "MWK": {
+ "name": "ມາ​ລາ​ວຽນ ຄວາ​ຊາ",
+ "symbol": "MWK"
+ },
+ "MYR": {
+ "name": "ມາ​ເລ​ເຊຠຣິງ​àºàº´àº”",
+ "symbol": "MYR"
+ },
+ "MRO": {
+ "name": "ມົວ​ຣິ​ທາ​ນຽນ ອູ​àºàº´àº§â€‹àº¢àº²",
+ "symbol": "MRO"
+ },
+ "MMK": {
+ "name": "ມຽນ​ມາ ຈ໊າດ",
+ "symbol": "MMK"
+ },
+ "MXN": {
+ "name": "ເມັàºàºŠàº´àºàº±àº™ ເປໂຊ",
+ "symbol": "MX$"
+ },
+ "MUR": {
+ "name": "ເມົາ​ຣິ​ທຽນ ຣູ​ປີ",
+ "symbol": "MUR"
+ },
+ "MKD": {
+ "name": "à»àº¡àº±àºâ€‹à»€àºŠâ€‹à»‚ດ​ນຽນ ເດ​ນາ",
+ "symbol": "MKD"
+ },
+ "MZN": {
+ "name": "ໂມ​à»àºŠàº¡â€‹àºšàº´â€‹àºàº±àº™ ເມ​ທິ​ຄອນ",
+ "symbol": "MZN"
+ },
+ "UAH": {
+ "name": "ຢູ​ເຄຣ​ນຽນ ຮະ​ຣີບ​ເນàº",
+ "symbol": "UAH"
+ },
+ "EUR": {
+ "name": "ຢູ​ໂຣ",
+ "symbol": "€"
+ },
+ "YER": {
+ "name": "ເຢ​ເມ​ນິ ຣຽວ",
+ "symbol": "YER"
+ },
+ "RWF": {
+ "name": "ຣະ​ວັນ​ດັນ ຟຣັງ",
+ "symbol": "RWF"
+ },
+ "RUB": {
+ "name": "ຣັສ​ຊຽນ ຣູ​ເບິນ",
+ "symbol": "RUB"
+ },
+ "RON": {
+ "name": "ໂຣ​ມາ​ນຽນ ເລ​ອູ",
+ "symbol": "RON"
+ },
+ "LAK": {
+ "name": "ລາວ àºàºµàºš",
+ "symbol": "â‚­"
+ },
+ "LTL": {
+ "name": "ລິ​ທົວ​ນຽນ ລິ​ທັ​ສ",
+ "symbol": "LTL"
+ },
+ "LYD": {
+ "name": "ລິບ​ບຽນ ດິ​ນາ",
+ "symbol": "LYD"
+ },
+ "LRD": {
+ "name": "ລິ​ເບີ​ຣຽນ ໂດ​ລ່າ",
+ "symbol": "LRD"
+ },
+ "LBP": {
+ "name": "ເລ​ບາ​ນີ​ສ ພາວດ໌",
+ "symbol": "LBP"
+ },
+ "LSL": {
+ "name": "ໂລຕິ ເລໂຊໂຕ",
+ "symbol": "LSL"
+ },
+ "VUV": {
+ "name": "​ວາ​ນົວ​ຕູ ວາ​ຕູ",
+ "symbol": "VUV"
+ },
+ "VEF": {
+ "name": "ເວ​ເນ​ຊູ​ເອ​ລັນ ໂບ​ລິ​ວາ",
+ "symbol": "VEF"
+ },
+ "VND": {
+ "name": "ຫວຽດ​ນາມ ດົງ",
+ "symbol": "â‚«"
+ },
+ "AUD": {
+ "name": "ອອສ​ເຕຣ​ລຽນ ໂດ​ລ່າ",
+ "symbol": "A$"
+ },
+ "AWG": {
+ "name": "ອະຣູà»àºšàº™ ຟລà»àº£àº´àº™",
+ "symbol": "AWG"
+ },
+ "AFN": {
+ "name": "ອັຟ​àºàº±àº™ ອັຟ​àºàº²â€‹àº™àº´",
+ "symbol": "AFN"
+ },
+ "DZD": {
+ "name": "ອັລ​ເຈີ​ຣຽນ ດິ​ນາ",
+ "symbol": "DZD"
+ },
+ "ALL": {
+ "name": "ອັລ​ບາ​ນຽນ ເລàº",
+ "symbol": "ALL"
+ },
+ "ARS": {
+ "name": "ອາ​ເຈນ​ທິ​ນາ ເປ​ໂຊ",
+ "symbol": "ARS"
+ },
+ "AZN": {
+ "name": "ອາ​ເຊີ​ໄບ​ຈາ​ນິ ມາ​ນັດ",
+ "symbol": "AZN"
+ },
+ "AMD": {
+ "name": "ອາ​ເມ​ນຽນ à»àº”ຣມ",
+ "symbol": "AMD"
+ },
+ "ILS": {
+ "name": "ອິສ​ຣາ​ເອວ​ລິ ນິວ ເຊ​ເàºàº§",
+ "symbol": "₪"
+ },
+ "INR": {
+ "name": "ອິນ​ເດຠຣູ​ປີ",
+ "symbol": "₹"
+ },
+ "IDR": {
+ "name": "ອິນ​ໂດ​ເນ​ຊຽນ ໂດ​ລ່າ",
+ "symbol": "IDR"
+ },
+ "IQD": {
+ "name": "ອິ​ຣັàºâ€‹àºàº´ ດິ​ນາ",
+ "symbol": "IQD"
+ },
+ "IRR": {
+ "name": "ອິ​ຣາ​ນິ ຣຽວ",
+ "symbol": "IRR"
+ },
+ "ERN": {
+ "name": "ອິ​ຣິ​ທຣຽນ à»àº™àºâ€‹àºŸâ€‹àº²",
+ "symbol": "ERN"
+ },
+ "XCD": {
+ "name": "ອີ​ສ ຄາ​ຣິ​ບຽນ ໂດ​ລ່າ",
+ "symbol": "EC$"
+ },
+ "EGP": {
+ "name": "ອີ​ຢິບ​ທຽນ ພາວດ໌",
+ "symbol": "EGP"
+ },
+ "UZS": {
+ "name": "ອຸສ​ເບ​àºàº´â€‹àºªâ€‹àº–ານ ໂຊມ",
+ "symbol": "UZS"
+ },
+ "UGX": {
+ "name": "ອູ​àºàº±àº™â€‹àº”ັນ ຊິວ​ລິງ",
+ "symbol": "UGX"
+ },
+ "UYU": {
+ "name": "ອູ​ຣຸ​àºàº»àº§â€‹àº¢àº²àº™ ເປ​ໂຊ",
+ "symbol": "UYU"
+ },
+ "ETB": {
+ "name": "ເອ​ທິ​ໂອ​ປຽນ ເບີ​ຣ໌",
+ "symbol": "ETB"
+ },
+ "AOA": {
+ "name": "à»àº­àº‡â€‹à»‚àºâ€‹àº¥àº±àº™ ຄວນ​ຊາ",
+ "symbol": "AOA"
+ },
+ "OMR": {
+ "name": "ໂອ​ມາ​ນິ ຣຽວ",
+ "symbol": "OMR"
+ },
+ "ISK": {
+ "name": "ໄອ​ສ໌​à»àº¥àº™â€‹àº”ິຠໂຄຣ​ນາ",
+ "symbol": "ISK"
+ },
+ "HKD": {
+ "name": "ຮອງ​àºàº»àº‡ ໂດ​ລ່າ",
+ "symbol": "HK$"
+ },
+ "HNL": {
+ "name": "ຮອນດູà»àº£àº™ ເລມພິຣາ",
+ "symbol": "HNL"
+ },
+ "HUF": {
+ "name": "ຮັງ​àºàº²â€‹àº£àº½àº™ ຟà»â€‹àº£àº´àº™",
+ "symbol": "HUF"
+ },
+ "HTG": {
+ "name": "ໄຮ​ຕຽນ àºàº»àº§â€‹à»€àº”",
+ "symbol": "HTG"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/currency/lt.json b/library/intl/resources/currency/lt.json
new file mode 100644
index 000000000..3035cdf12
--- /dev/null
+++ b/library/intl/resources/currency/lt.json
@@ -0,0 +1,634 @@
+{
+ "AFN": {
+ "name": "Afganistano afganis",
+ "symbol": "AFN"
+ },
+ "ALL": {
+ "name": "Albanijos lekas",
+ "symbol": "ALL"
+ },
+ "DZD": {
+ "name": "Alžyro dinaras",
+ "symbol": "DZD"
+ },
+ "AOA": {
+ "name": "Angolos kvanza",
+ "symbol": "AOA"
+ },
+ "ARS": {
+ "name": "Argentinos pesas",
+ "symbol": "ARS"
+ },
+ "AMD": {
+ "name": "ArmÄ—nijos dramas",
+ "symbol": "AMD"
+ },
+ "AWG": {
+ "name": "Arubos guldenas",
+ "symbol": "AWG"
+ },
+ "AUD": {
+ "name": "Australijos doleris",
+ "symbol": "AUD"
+ },
+ "AZN": {
+ "name": "Azerbaidžano manatas",
+ "symbol": "AZN"
+ },
+ "BSD": {
+ "name": "Bahamų doleris",
+ "symbol": "BSD"
+ },
+ "BHD": {
+ "name": "Bahreino dinaras",
+ "symbol": "BHD"
+ },
+ "BYR": {
+ "name": "Baltarusijos rublis",
+ "symbol": "BYR"
+ },
+ "BDT": {
+ "name": "Bangladešo taka",
+ "symbol": "BDT"
+ },
+ "BBD": {
+ "name": "Barbadoso doleris",
+ "symbol": "BBD"
+ },
+ "BZD": {
+ "name": "Belizo doleris",
+ "symbol": "BZD"
+ },
+ "BMD": {
+ "name": "Bermudos doleris",
+ "symbol": "BMD"
+ },
+ "BOB": {
+ "name": "Bolivijos bolivijanas",
+ "symbol": "BOB"
+ },
+ "BAM": {
+ "name": "Bosnijos ir Hercegovinos konvertuojamoji markÄ—",
+ "symbol": "BAM"
+ },
+ "BWP": {
+ "name": "Botsvanos pula",
+ "symbol": "BWP"
+ },
+ "BRL": {
+ "name": "Brazilijos realas",
+ "symbol": "BRL"
+ },
+ "BND": {
+ "name": "BrunÄ—jaus doleris",
+ "symbol": "BND"
+ },
+ "BGN": {
+ "name": "Bulgarijos levas",
+ "symbol": "BGN"
+ },
+ "BIF": {
+ "name": "Burundžio frankas",
+ "symbol": "BIF"
+ },
+ "BTN": {
+ "name": "Butano ngultrumas",
+ "symbol": "BTN"
+ },
+ "XOF": {
+ "name": "CFA BCEAO frankas",
+ "symbol": "XOF"
+ },
+ "XAF": {
+ "name": "CFA BEAC frankas",
+ "symbol": "XAF"
+ },
+ "XPF": {
+ "name": "CFP frankas",
+ "symbol": "XPF"
+ },
+ "CZK": {
+ "name": "ÄŒekijos krona",
+ "symbol": "CZK"
+ },
+ "CLP": {
+ "name": "ÄŒilÄ—s pesas",
+ "symbol": "CLP"
+ },
+ "DKK": {
+ "name": "Danijos krona",
+ "symbol": "DKK"
+ },
+ "GBP": {
+ "name": "Didžiosios Britanijos svaras sterlingų",
+ "symbol": "GBP"
+ },
+ "DOP": {
+ "name": "Dominikos pesas",
+ "symbol": "DOP"
+ },
+ "DJF": {
+ "name": "DžibuÄio frankas",
+ "symbol": "DJF"
+ },
+ "EGP": {
+ "name": "Egipto svaras",
+ "symbol": "EGP"
+ },
+ "ERN": {
+ "name": "EritrÄ—jos nakfa",
+ "symbol": "ERN"
+ },
+ "ETB": {
+ "name": "Etiopijos biras",
+ "symbol": "ETB"
+ },
+ "EUR": {
+ "name": "Euras",
+ "symbol": "EUR"
+ },
+ "FKP": {
+ "name": "Falklando salų svaras",
+ "symbol": "FKP"
+ },
+ "FJD": {
+ "name": "Fidžio doleris",
+ "symbol": "FJD"
+ },
+ "PHP": {
+ "name": "Filipinų pesas",
+ "symbol": "PHP"
+ },
+ "GYD": {
+ "name": "Gajanos doleris",
+ "symbol": "GYD"
+ },
+ "GMD": {
+ "name": "Gambijos dalasis",
+ "symbol": "GMD"
+ },
+ "GHS": {
+ "name": "Ganos sedis",
+ "symbol": "GHS"
+ },
+ "GIP": {
+ "name": "Gibraltaro svaras",
+ "symbol": "GIP"
+ },
+ "GEL": {
+ "name": "Gruzijos laris",
+ "symbol": "GEL"
+ },
+ "GTQ": {
+ "name": "Gvatemalos ketcalis",
+ "symbol": "GTQ"
+ },
+ "GNF": {
+ "name": "GvinÄ—jos frankas",
+ "symbol": "GNF"
+ },
+ "HTG": {
+ "name": "HaiÄio gurdas",
+ "symbol": "HTG"
+ },
+ "HNL": {
+ "name": "Hondūro lempira",
+ "symbol": "HNL"
+ },
+ "HKD": {
+ "name": "Honkongo doleris",
+ "symbol": "HKD"
+ },
+ "INR": {
+ "name": "Indijos rupija",
+ "symbol": "INR"
+ },
+ "IDR": {
+ "name": "Indonezijos rupija",
+ "symbol": "IDR"
+ },
+ "IQD": {
+ "name": "Irako dinaras",
+ "symbol": "IQD"
+ },
+ "IRR": {
+ "name": "Irano rialas",
+ "symbol": "IRR"
+ },
+ "ISK": {
+ "name": "Islandijos krona",
+ "symbol": "ISK"
+ },
+ "ILS": {
+ "name": "Izraelio naujasis Å¡ekelis",
+ "symbol": "ILS"
+ },
+ "JMD": {
+ "name": "Jamaikos doleris",
+ "symbol": "JMD"
+ },
+ "JPY": {
+ "name": "Japonijos jena",
+ "symbol": "JPY"
+ },
+ "USD": {
+ "name": "JAV doleris",
+ "symbol": "USD"
+ },
+ "YER": {
+ "name": "Jemeno rialas",
+ "symbol": "YER"
+ },
+ "JOD": {
+ "name": "Jordanijos dinaras",
+ "symbol": "JOD"
+ },
+ "AED": {
+ "name": "Jungtinių Arabų Emyratų dirhamas",
+ "symbol": "AED"
+ },
+ "KYD": {
+ "name": "Kaimanų salų doleris",
+ "symbol": "KYD"
+ },
+ "KHR": {
+ "name": "Kambodžos rielis",
+ "symbol": "KHR"
+ },
+ "CAD": {
+ "name": "Kanados doleris",
+ "symbol": "CAD"
+ },
+ "QAR": {
+ "name": "Kataro rialas",
+ "symbol": "QAR"
+ },
+ "KZT": {
+ "name": "Kazachstano tengÄ—",
+ "symbol": "KZT"
+ },
+ "KES": {
+ "name": "Kenijos Å¡ilingas",
+ "symbol": "KES"
+ },
+ "CNY": {
+ "name": "Kinijos ženminbi juanis",
+ "symbol": "CNY"
+ },
+ "KGS": {
+ "name": "Kirgizijos somas",
+ "symbol": "KGS"
+ },
+ "COP": {
+ "name": "Kolumbijos pesas",
+ "symbol": "COP"
+ },
+ "KMF": {
+ "name": "Komoro frankas",
+ "symbol": "KMF"
+ },
+ "CDF": {
+ "name": "Kongo frankas",
+ "symbol": "CDF"
+ },
+ "CRC": {
+ "name": "Kosta Rikos kolonas",
+ "symbol": "CRC"
+ },
+ "HRK": {
+ "name": "Kroatijos kuna",
+ "symbol": "HRK"
+ },
+ "CUC": {
+ "name": "Kubos konvertuojamasis pesas",
+ "symbol": "CUC"
+ },
+ "CUP": {
+ "name": "Kubos pesas",
+ "symbol": "CUP"
+ },
+ "KWD": {
+ "name": "Kuveito dinaras",
+ "symbol": "KWD"
+ },
+ "LAK": {
+ "name": "Laoso kipas",
+ "symbol": "LAK"
+ },
+ "PLN": {
+ "name": "Lenkijos zlotas",
+ "symbol": "PLN"
+ },
+ "LSL": {
+ "name": "Lesoto lotis",
+ "symbol": "LSL"
+ },
+ "LBP": {
+ "name": "Libano svaras",
+ "symbol": "LBP"
+ },
+ "LRD": {
+ "name": "Liberijos doleris",
+ "symbol": "LRD"
+ },
+ "LYD": {
+ "name": "Libijos dinaras",
+ "symbol": "LYD"
+ },
+ "LTL": {
+ "name": "Lietuvos litas",
+ "symbol": "LTL"
+ },
+ "MGA": {
+ "name": "Madagaskaro ariaris",
+ "symbol": "MGA"
+ },
+ "MOP": {
+ "name": "Makao pataka",
+ "symbol": "MOP"
+ },
+ "MKD": {
+ "name": "Makedonijos denaras",
+ "symbol": "MKD"
+ },
+ "MYR": {
+ "name": "Malaizijos ringitas",
+ "symbol": "MYR"
+ },
+ "MWK": {
+ "name": "Malavio kvaÄa",
+ "symbol": "MWK"
+ },
+ "MVR": {
+ "name": "Maldyvų rufija",
+ "symbol": "MVR"
+ },
+ "MAD": {
+ "name": "Maroko dirhamas",
+ "symbol": "MAD"
+ },
+ "MUR": {
+ "name": "Mauricijaus rupija",
+ "symbol": "MUR"
+ },
+ "MRO": {
+ "name": "Mauritanijos ugija",
+ "symbol": "MRO"
+ },
+ "MXN": {
+ "name": "Meksikos pesas",
+ "symbol": "MXN"
+ },
+ "MMK": {
+ "name": "Mianmaro kijatas",
+ "symbol": "MMK"
+ },
+ "MDL": {
+ "name": "Moldovos lÄ—ja",
+ "symbol": "MDL"
+ },
+ "MNT": {
+ "name": "Mongolijos tugrikas",
+ "symbol": "MNT"
+ },
+ "MZN": {
+ "name": "Mozambiko metikalis",
+ "symbol": "MZN"
+ },
+ "NAD": {
+ "name": "Namibijos doleris",
+ "symbol": "NAD"
+ },
+ "NZD": {
+ "name": "Naujosios Zelandijos doleris",
+ "symbol": "NZD"
+ },
+ "NPR": {
+ "name": "Nepalo rupija",
+ "symbol": "NPR"
+ },
+ "NGN": {
+ "name": "Nigerijos naira",
+ "symbol": "NGN"
+ },
+ "NIO": {
+ "name": "Nikaragvos kordoba",
+ "symbol": "NIO"
+ },
+ "NOK": {
+ "name": "Norvegijos krona",
+ "symbol": "NOK"
+ },
+ "ANG": {
+ "name": "Olandijos Antilų guldenas",
+ "symbol": "ANG"
+ },
+ "OMR": {
+ "name": "Omano rialas",
+ "symbol": "OMR"
+ },
+ "PKR": {
+ "name": "Pakistano rupija",
+ "symbol": "PKR"
+ },
+ "PAB": {
+ "name": "Panamos balboja",
+ "symbol": "PAB"
+ },
+ "PGK": {
+ "name": "Papua Naujosios GvinÄ—jos kina",
+ "symbol": "PGK"
+ },
+ "PYG": {
+ "name": "Paragvajaus guaranis",
+ "symbol": "PYG"
+ },
+ "PEN": {
+ "name": "Peru naujasis solis",
+ "symbol": "PEN"
+ },
+ "ZAR": {
+ "name": "Pietų Afrikos Respublikos randas",
+ "symbol": "ZAR"
+ },
+ "KRW": {
+ "name": "Pietų Korėjos vonas",
+ "symbol": "KRW"
+ },
+ "SSP": {
+ "name": "Pietų Sudano svaras",
+ "symbol": "SSP"
+ },
+ "XCD": {
+ "name": "Rytų Karibų doleris",
+ "symbol": "XCD"
+ },
+ "RWF": {
+ "name": "Ruandos frankas",
+ "symbol": "RWF"
+ },
+ "RON": {
+ "name": "Rumunijos lÄ—ja",
+ "symbol": "RON"
+ },
+ "RUB": {
+ "name": "Rusijos rublis",
+ "symbol": "RUB"
+ },
+ "SBD": {
+ "name": "Saliamono salų doleris",
+ "symbol": "SBD"
+ },
+ "SVC": {
+ "name": "Salvadoro kolonas",
+ "symbol": "SVC"
+ },
+ "WST": {
+ "name": "Samoa tala",
+ "symbol": "WST"
+ },
+ "STD": {
+ "name": "San TomÄ—s ir PrincipÄ—s dobra",
+ "symbol": "STD"
+ },
+ "SAR": {
+ "name": "Saudo Arabijos rijalas",
+ "symbol": "SAR"
+ },
+ "SCR": {
+ "name": "Seišelių rupija",
+ "symbol": "SCR"
+ },
+ "RSD": {
+ "name": "Serbijos dinaras",
+ "symbol": "RSD"
+ },
+ "SLL": {
+ "name": "Siera LeonÄ—s leonÄ—",
+ "symbol": "SLL"
+ },
+ "SGD": {
+ "name": "Singapūro doleris",
+ "symbol": "SGD"
+ },
+ "SYP": {
+ "name": "Sirijos svaras",
+ "symbol": "SYP"
+ },
+ "SOS": {
+ "name": "Somalio Å¡ilingas",
+ "symbol": "SOS"
+ },
+ "SDG": {
+ "name": "Sudano svaras",
+ "symbol": "SDG"
+ },
+ "SRD": {
+ "name": "Surimano doleris",
+ "symbol": "SRD"
+ },
+ "SZL": {
+ "name": "Svazilando lilangenis",
+ "symbol": "SZL"
+ },
+ "KPW": {
+ "name": "Å iaurÄ—s KorÄ—jos vonas",
+ "symbol": "KPW"
+ },
+ "LKR": {
+ "name": "Å ri Lankos rupija",
+ "symbol": "LKR"
+ },
+ "SHP": {
+ "name": "Šv. Elenos salų svaras",
+ "symbol": "SHP"
+ },
+ "SEK": {
+ "name": "Å vedijos krona",
+ "symbol": "SEK"
+ },
+ "CHF": {
+ "name": "Å veicarijos frankas",
+ "symbol": "CHF"
+ },
+ "TJS": {
+ "name": "Tadžikistano somonis",
+ "symbol": "TJS"
+ },
+ "THB": {
+ "name": "Tailando batas",
+ "symbol": "THB"
+ },
+ "TWD": {
+ "name": "Taivano naujasis doleris",
+ "symbol": "TWD"
+ },
+ "TZS": {
+ "name": "Tanzanijos Å¡ilingas",
+ "symbol": "TZS"
+ },
+ "TOP": {
+ "name": "Tongo paanga",
+ "symbol": "TOP"
+ },
+ "TTD": {
+ "name": "Trinidado ir Tobago doleris",
+ "symbol": "TTD"
+ },
+ "TND": {
+ "name": "Tuniso dinaras",
+ "symbol": "TND"
+ },
+ "TRY": {
+ "name": "Turkijos lira",
+ "symbol": "TRY"
+ },
+ "TMT": {
+ "name": "TurkmÄ—nistano manatas",
+ "symbol": "TMT"
+ },
+ "UGX": {
+ "name": "Ugandos Å¡ilingas",
+ "symbol": "UGX"
+ },
+ "UAH": {
+ "name": "Ukrainos grivina",
+ "symbol": "UAH"
+ },
+ "UYU": {
+ "name": "Urugvajaus pesas",
+ "symbol": "UYU"
+ },
+ "UZS": {
+ "name": "Uzbekistano sumas",
+ "symbol": "UZS"
+ },
+ "VUV": {
+ "name": "Vanuatu vatas",
+ "symbol": "VUV"
+ },
+ "VEF": {
+ "name": "Venesuelos bolivaras",
+ "symbol": "VEF"
+ },
+ "HUF": {
+ "name": "Vengrijos forintas",
+ "symbol": "HUF"
+ },
+ "VND": {
+ "name": "Vietnamo dongas",
+ "symbol": "VND"
+ },
+ "ZMW": {
+ "name": "Zambijos kvaÄa",
+ "symbol": "ZMW"
+ },
+ "ZWL": {
+ "name": "ZimbabvÄ—s doleris (2009)",
+ "symbol": "ZWL"
+ },
+ "CVE": {
+ "name": "Žaliojo Kyšulio eskudas",
+ "symbol": "CVE"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/currency/lu.json b/library/intl/resources/currency/lu.json
new file mode 100644
index 000000000..a82c98852
--- /dev/null
+++ b/library/intl/resources/currency/lu.json
@@ -0,0 +1,634 @@
+{
+ "AFN": {
+ "name": "AFN",
+ "symbol": "AFN"
+ },
+ "ALL": {
+ "name": "ALL",
+ "symbol": "ALL"
+ },
+ "AMD": {
+ "name": "AMD",
+ "symbol": "AMD"
+ },
+ "ANG": {
+ "name": "ANG",
+ "symbol": "ANG"
+ },
+ "ARS": {
+ "name": "ARS",
+ "symbol": "ARS"
+ },
+ "AWG": {
+ "name": "AWG",
+ "symbol": "AWG"
+ },
+ "AZN": {
+ "name": "AZN",
+ "symbol": "AZN"
+ },
+ "BAM": {
+ "name": "BAM",
+ "symbol": "BAM"
+ },
+ "BBD": {
+ "name": "BBD",
+ "symbol": "BBD"
+ },
+ "BDT": {
+ "name": "BDT",
+ "symbol": "BDT"
+ },
+ "BGN": {
+ "name": "BGN",
+ "symbol": "BGN"
+ },
+ "ETB": {
+ "name": "Bira wa Etshiopi",
+ "symbol": "ETB"
+ },
+ "BMD": {
+ "name": "BMD",
+ "symbol": "BMD"
+ },
+ "BND": {
+ "name": "BND",
+ "symbol": "BND"
+ },
+ "BOB": {
+ "name": "BOB",
+ "symbol": "BOB"
+ },
+ "BRL": {
+ "name": "BRL",
+ "symbol": "R$"
+ },
+ "BSD": {
+ "name": "BSD",
+ "symbol": "BSD"
+ },
+ "BTN": {
+ "name": "BTN",
+ "symbol": "BTN"
+ },
+ "BYR": {
+ "name": "BYR",
+ "symbol": "BYR"
+ },
+ "BZD": {
+ "name": "BZD",
+ "symbol": "BZD"
+ },
+ "CLP": {
+ "name": "CLP",
+ "symbol": "CLP"
+ },
+ "COP": {
+ "name": "COP",
+ "symbol": "COP"
+ },
+ "CRC": {
+ "name": "CRC",
+ "symbol": "CRC"
+ },
+ "CUC": {
+ "name": "CUC",
+ "symbol": "CUC"
+ },
+ "CUP": {
+ "name": "CUP",
+ "symbol": "CUP"
+ },
+ "CZK": {
+ "name": "CZK",
+ "symbol": "CZK"
+ },
+ "DKK": {
+ "name": "DKK",
+ "symbol": "DKK"
+ },
+ "STD": {
+ "name": "Dobra wa Sao Tome ne Presipe",
+ "symbol": "STD"
+ },
+ "DOP": {
+ "name": "DOP",
+ "symbol": "DOP"
+ },
+ "CVE": {
+ "name": "Esikuludo wa Kapevere",
+ "symbol": "CVE"
+ },
+ "FJD": {
+ "name": "FJD",
+ "symbol": "FJD"
+ },
+ "FKP": {
+ "name": "FKP",
+ "symbol": "FKP"
+ },
+ "GEL": {
+ "name": "GEL",
+ "symbol": "GEL"
+ },
+ "GHS": {
+ "name": "GHS",
+ "symbol": "GHS"
+ },
+ "GIP": {
+ "name": "GIP",
+ "symbol": "GIP"
+ },
+ "GNF": {
+ "name": "GNF",
+ "symbol": "GNF"
+ },
+ "GTQ": {
+ "name": "GTQ",
+ "symbol": "GTQ"
+ },
+ "GYD": {
+ "name": "GYD",
+ "symbol": "GYD"
+ },
+ "HKD": {
+ "name": "HKD",
+ "symbol": "HK$"
+ },
+ "HNL": {
+ "name": "HNL",
+ "symbol": "HNL"
+ },
+ "HRK": {
+ "name": "HRK",
+ "symbol": "HRK"
+ },
+ "HTG": {
+ "name": "HTG",
+ "symbol": "HTG"
+ },
+ "HUF": {
+ "name": "HUF",
+ "symbol": "HUF"
+ },
+ "IDR": {
+ "name": "IDR",
+ "symbol": "IDR"
+ },
+ "ILS": {
+ "name": "ILS",
+ "symbol": "₪"
+ },
+ "IQD": {
+ "name": "IQD",
+ "symbol": "IQD"
+ },
+ "EUR": {
+ "name": "Iro",
+ "symbol": "€"
+ },
+ "IRR": {
+ "name": "IRR",
+ "symbol": "IRR"
+ },
+ "ISK": {
+ "name": "ISK",
+ "symbol": "ISK"
+ },
+ "JMD": {
+ "name": "JMD",
+ "symbol": "JMD"
+ },
+ "JOD": {
+ "name": "JOD",
+ "symbol": "JOD"
+ },
+ "KGS": {
+ "name": "KGS",
+ "symbol": "KGS"
+ },
+ "KHR": {
+ "name": "KHR",
+ "symbol": "KHR"
+ },
+ "KPW": {
+ "name": "KPW",
+ "symbol": "KPW"
+ },
+ "KRW": {
+ "name": "KRW",
+ "symbol": "â‚©"
+ },
+ "AOA": {
+ "name": "Kwanza wa Angola",
+ "symbol": "AOA"
+ },
+ "MWK": {
+ "name": "Kwasha wa Malawi",
+ "symbol": "MWK"
+ },
+ "ZMW": {
+ "name": "Kwasha wa Zambi",
+ "symbol": "ZMW"
+ },
+ "KWD": {
+ "name": "KWD",
+ "symbol": "KWD"
+ },
+ "KYD": {
+ "name": "KYD",
+ "symbol": "KYD"
+ },
+ "KZT": {
+ "name": "KZT",
+ "symbol": "KZT"
+ },
+ "LAK": {
+ "name": "LAK",
+ "symbol": "LAK"
+ },
+ "LBP": {
+ "name": "LBP",
+ "symbol": "LBP"
+ },
+ "SLL": {
+ "name": "Leone",
+ "symbol": "SLL"
+ },
+ "SZL": {
+ "name": "Lilangeni",
+ "symbol": "SZL"
+ },
+ "LKR": {
+ "name": "LKR",
+ "symbol": "LKR"
+ },
+ "LSL": {
+ "name": "Loti wa Lesoto",
+ "symbol": "LSL"
+ },
+ "LTL": {
+ "name": "LTL",
+ "symbol": "LTL"
+ },
+ "MDL": {
+ "name": "MDL",
+ "symbol": "MDL"
+ },
+ "MKD": {
+ "name": "MKD",
+ "symbol": "MKD"
+ },
+ "MMK": {
+ "name": "MMK",
+ "symbol": "MMK"
+ },
+ "MNT": {
+ "name": "MNT",
+ "symbol": "MNT"
+ },
+ "MOP": {
+ "name": "MOP",
+ "symbol": "MOP"
+ },
+ "MVR": {
+ "name": "MVR",
+ "symbol": "MVR"
+ },
+ "MXN": {
+ "name": "MXN",
+ "symbol": "MX$"
+ },
+ "MYR": {
+ "name": "MYR",
+ "symbol": "MYR"
+ },
+ "MZN": {
+ "name": "MZN",
+ "symbol": "MZN"
+ },
+ "NGN": {
+ "name": "Naira wa Nizerya",
+ "symbol": "NGN"
+ },
+ "ERN": {
+ "name": "Nakfa wa Elitle",
+ "symbol": "ERN"
+ },
+ "GMD": {
+ "name": "Ndalasi wa Ngambi",
+ "symbol": "GMD"
+ },
+ "DZD": {
+ "name": "Ndina wa Alijeri",
+ "symbol": "DZD"
+ },
+ "BHD": {
+ "name": "Ndina wa Bahrene",
+ "symbol": "BHD"
+ },
+ "LYD": {
+ "name": "Ndina wa Libi",
+ "symbol": "LYD"
+ },
+ "SDG": {
+ "name": "Ndina wa Suda",
+ "symbol": "SDG"
+ },
+ "TND": {
+ "name": "Ndina wa Tinizi",
+ "symbol": "TND"
+ },
+ "AED": {
+ "name": "Ndiriha wa Lemila alabu",
+ "symbol": "AED"
+ },
+ "MAD": {
+ "name": "Ndiriha wa Maroke",
+ "symbol": "MAD"
+ },
+ "USD": {
+ "name": "Ndola wa Ameriki",
+ "symbol": "US$"
+ },
+ "CAD": {
+ "name": "Ndola wa Kanada",
+ "symbol": "CA$"
+ },
+ "LRD": {
+ "name": "Ndola wa Liberya",
+ "symbol": "LRD"
+ },
+ "NAD": {
+ "name": "Ndola wa Namibi",
+ "symbol": "NAD"
+ },
+ "AUD": {
+ "name": "Ndola wa Ositali",
+ "symbol": "A$"
+ },
+ "XOF": {
+ "name": "Nfalanga CFA BCEAO",
+ "symbol": "CFA"
+ },
+ "XAF": {
+ "name": "Nfalanga CFA BEAC",
+ "symbol": "FCFA"
+ },
+ "BIF": {
+ "name": "Nfalanga wa Bulundi",
+ "symbol": "BIF"
+ },
+ "DJF": {
+ "name": "Nfalanga wa Dzibuti",
+ "symbol": "DJF"
+ },
+ "KMF": {
+ "name": "Nfalanga wa Komoru",
+ "symbol": "KMF"
+ },
+ "CDF": {
+ "name": "Nfalanga wa Kongu",
+ "symbol": "FC"
+ },
+ "MGA": {
+ "name": "Nfalanga wa Madagasikare",
+ "symbol": "MGA"
+ },
+ "RWF": {
+ "name": "Nfalanga wa Rwanda",
+ "symbol": "RWF"
+ },
+ "CHF": {
+ "name": "Nfalanga wa Swise",
+ "symbol": "CHF"
+ },
+ "NIO": {
+ "name": "NIO",
+ "symbol": "NIO"
+ },
+ "NOK": {
+ "name": "NOK",
+ "symbol": "NOK"
+ },
+ "NPR": {
+ "name": "NPR",
+ "symbol": "NPR"
+ },
+ "KES": {
+ "name": "Nshili wa Kenya",
+ "symbol": "KES"
+ },
+ "SOS": {
+ "name": "Nshili wa Somali",
+ "symbol": "SOS"
+ },
+ "TZS": {
+ "name": "Nshili wa Tanzani",
+ "symbol": "TZS"
+ },
+ "UGX": {
+ "name": "Nshili wa Uganda",
+ "symbol": "UGX"
+ },
+ "NZD": {
+ "name": "NZD",
+ "symbol": "NZ$"
+ },
+ "OMR": {
+ "name": "OMR",
+ "symbol": "OMR"
+ },
+ "PAB": {
+ "name": "PAB",
+ "symbol": "PAB"
+ },
+ "GBP": {
+ "name": "Pauni wa Angeletele",
+ "symbol": "£"
+ },
+ "EGP": {
+ "name": "Pauni wa Mushidi",
+ "symbol": "EGP"
+ },
+ "SHP": {
+ "name": "Pauni wa Santu Elena",
+ "symbol": "SHP"
+ },
+ "PEN": {
+ "name": "PEN",
+ "symbol": "PEN"
+ },
+ "PGK": {
+ "name": "PGK",
+ "symbol": "PGK"
+ },
+ "PHP": {
+ "name": "PHP",
+ "symbol": "PHP"
+ },
+ "PKR": {
+ "name": "PKR",
+ "symbol": "PKR"
+ },
+ "PLN": {
+ "name": "PLN",
+ "symbol": "PLN"
+ },
+ "BWP": {
+ "name": "Pula wa Botswana",
+ "symbol": "BWP"
+ },
+ "PYG": {
+ "name": "PYG",
+ "symbol": "PYG"
+ },
+ "QAR": {
+ "name": "QAR",
+ "symbol": "QAR"
+ },
+ "ZAR": {
+ "name": "Rande wa Afrika wa Mwinshi",
+ "symbol": "ZAR"
+ },
+ "SAR": {
+ "name": "Riyale wa Alabu Nsawu",
+ "symbol": "SAR"
+ },
+ "RON": {
+ "name": "RON",
+ "symbol": "RON"
+ },
+ "RSD": {
+ "name": "RSD",
+ "symbol": "RSD"
+ },
+ "RUB": {
+ "name": "RUB",
+ "symbol": "RUB"
+ },
+ "INR": {
+ "name": "Rupi wa Inde",
+ "symbol": "₹"
+ },
+ "MUR": {
+ "name": "Rupia wa Morisi",
+ "symbol": "MUR"
+ },
+ "SCR": {
+ "name": "Rupya wa Seshele",
+ "symbol": "SCR"
+ },
+ "SBD": {
+ "name": "SBD",
+ "symbol": "SBD"
+ },
+ "SEK": {
+ "name": "SEK",
+ "symbol": "SEK"
+ },
+ "SGD": {
+ "name": "SGD",
+ "symbol": "SGD"
+ },
+ "SRD": {
+ "name": "SRD",
+ "symbol": "SRD"
+ },
+ "SSP": {
+ "name": "SSP",
+ "symbol": "SSP"
+ },
+ "SVC": {
+ "name": "SVC",
+ "symbol": "SVC"
+ },
+ "SYP": {
+ "name": "SYP",
+ "symbol": "SYP"
+ },
+ "THB": {
+ "name": "THB",
+ "symbol": "THB"
+ },
+ "TJS": {
+ "name": "TJS",
+ "symbol": "TJS"
+ },
+ "TMT": {
+ "name": "TMT",
+ "symbol": "TMT"
+ },
+ "TOP": {
+ "name": "TOP",
+ "symbol": "TOP"
+ },
+ "TRY": {
+ "name": "TRY",
+ "symbol": "TRY"
+ },
+ "TTD": {
+ "name": "TTD",
+ "symbol": "TTD"
+ },
+ "TWD": {
+ "name": "TWD",
+ "symbol": "NT$"
+ },
+ "UAH": {
+ "name": "UAH",
+ "symbol": "UAH"
+ },
+ "MRO": {
+ "name": "Ugwiya wa Moritani",
+ "symbol": "MRO"
+ },
+ "UYU": {
+ "name": "UYU",
+ "symbol": "UYU"
+ },
+ "UZS": {
+ "name": "UZS",
+ "symbol": "UZS"
+ },
+ "VEF": {
+ "name": "VEF",
+ "symbol": "VEF"
+ },
+ "VND": {
+ "name": "VND",
+ "symbol": "â‚«"
+ },
+ "VUV": {
+ "name": "VUV",
+ "symbol": "VUV"
+ },
+ "WST": {
+ "name": "WST",
+ "symbol": "WST"
+ },
+ "XCD": {
+ "name": "XCD",
+ "symbol": "EC$"
+ },
+ "XPF": {
+ "name": "XPF",
+ "symbol": "CFPF"
+ },
+ "JPY": {
+ "name": "Yeni wa ZapÉ”",
+ "symbol": "JPÂ¥"
+ },
+ "YER": {
+ "name": "YER",
+ "symbol": "YER"
+ },
+ "CNY": {
+ "name": "Yuani Renminbi wa Shine",
+ "symbol": "CNÂ¥"
+ },
+ "ZWL": {
+ "name": "ZWL",
+ "symbol": "ZWL"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/currency/luo.json b/library/intl/resources/currency/luo.json
new file mode 100644
index 000000000..82027831e
--- /dev/null
+++ b/library/intl/resources/currency/luo.json
@@ -0,0 +1,634 @@
+{
+ "AFN": {
+ "name": "AFN",
+ "symbol": "AFN"
+ },
+ "ALL": {
+ "name": "ALL",
+ "symbol": "ALL"
+ },
+ "AMD": {
+ "name": "AMD",
+ "symbol": "AMD"
+ },
+ "ANG": {
+ "name": "ANG",
+ "symbol": "ANG"
+ },
+ "MGA": {
+ "name": "Ariary ya Bukini",
+ "symbol": "MGA"
+ },
+ "ARS": {
+ "name": "ARS",
+ "symbol": "ARS"
+ },
+ "AWG": {
+ "name": "AWG",
+ "symbol": "AWG"
+ },
+ "AZN": {
+ "name": "AZN",
+ "symbol": "AZN"
+ },
+ "BAM": {
+ "name": "BAM",
+ "symbol": "BAM"
+ },
+ "BBD": {
+ "name": "BBD",
+ "symbol": "BBD"
+ },
+ "BDT": {
+ "name": "BDT",
+ "symbol": "BDT"
+ },
+ "BGN": {
+ "name": "BGN",
+ "symbol": "BGN"
+ },
+ "ETB": {
+ "name": "Birr mar Ethiopia",
+ "symbol": "ETB"
+ },
+ "BMD": {
+ "name": "BMD",
+ "symbol": "BMD"
+ },
+ "BND": {
+ "name": "BND",
+ "symbol": "BND"
+ },
+ "BOB": {
+ "name": "BOB",
+ "symbol": "BOB"
+ },
+ "BRL": {
+ "name": "BRL",
+ "symbol": "R$"
+ },
+ "BSD": {
+ "name": "BSD",
+ "symbol": "BSD"
+ },
+ "BTN": {
+ "name": "BTN",
+ "symbol": "BTN"
+ },
+ "BYR": {
+ "name": "BYR",
+ "symbol": "BYR"
+ },
+ "BZD": {
+ "name": "BZD",
+ "symbol": "BZD"
+ },
+ "CLP": {
+ "name": "CLP",
+ "symbol": "CLP"
+ },
+ "COP": {
+ "name": "COP",
+ "symbol": "COP"
+ },
+ "CRC": {
+ "name": "CRC",
+ "symbol": "CRC"
+ },
+ "CUC": {
+ "name": "CUC",
+ "symbol": "CUC"
+ },
+ "CUP": {
+ "name": "CUP",
+ "symbol": "CUP"
+ },
+ "CZK": {
+ "name": "CZK",
+ "symbol": "CZK"
+ },
+ "GMD": {
+ "name": "Dalasi ya Gambia",
+ "symbol": "GMD"
+ },
+ "DZD": {
+ "name": "Dinari ya Aljeria",
+ "symbol": "DZD"
+ },
+ "BHD": {
+ "name": "Dinari ya Bahareni",
+ "symbol": "BHD"
+ },
+ "LYD": {
+ "name": "Dinari ya Libya",
+ "symbol": "LYD"
+ },
+ "TND": {
+ "name": "Dinari ya Tunisia",
+ "symbol": "TND"
+ },
+ "AED": {
+ "name": "Dirham ya Falme za Kiarabu",
+ "symbol": "AED"
+ },
+ "MAD": {
+ "name": "Dirham ya Moroko",
+ "symbol": "MAD"
+ },
+ "DKK": {
+ "name": "DKK",
+ "symbol": "DKK"
+ },
+ "STD": {
+ "name": "Dobra ya Sao Tome na Principe",
+ "symbol": "STD"
+ },
+ "USD": {
+ "name": "Dola",
+ "symbol": "US$"
+ },
+ "CAD": {
+ "name": "Dola mar Kanada",
+ "symbol": "CA$"
+ },
+ "LRD": {
+ "name": "Dola mar Liberia",
+ "symbol": "LRD"
+ },
+ "AUD": {
+ "name": "Dola ya Australia",
+ "symbol": "A$"
+ },
+ "NAD": {
+ "name": "Dola ya Namibia",
+ "symbol": "NAD"
+ },
+ "DOP": {
+ "name": "DOP",
+ "symbol": "DOP"
+ },
+ "CVE": {
+ "name": "Eskudo ya Kepuvede",
+ "symbol": "CVE"
+ },
+ "XOF": {
+ "name": "Faranga CFA BCEAO",
+ "symbol": "CFA"
+ },
+ "XAF": {
+ "name": "Faranga CFA BEAC",
+ "symbol": "FCFA"
+ },
+ "BIF": {
+ "name": "Faranga ya Burundi",
+ "symbol": "BIF"
+ },
+ "DJF": {
+ "name": "Faranga ya Jibuti",
+ "symbol": "DJF"
+ },
+ "KMF": {
+ "name": "Faranga ya Komoro",
+ "symbol": "KMF"
+ },
+ "CDF": {
+ "name": "Faranga ya Kongo",
+ "symbol": "CDF"
+ },
+ "RWF": {
+ "name": "Faranga ya Rwanda",
+ "symbol": "RWF"
+ },
+ "CHF": {
+ "name": "Faranga ya Uswisi",
+ "symbol": "CHF"
+ },
+ "FJD": {
+ "name": "FJD",
+ "symbol": "FJD"
+ },
+ "FKP": {
+ "name": "FKP",
+ "symbol": "FKP"
+ },
+ "GEL": {
+ "name": "GEL",
+ "symbol": "GEL"
+ },
+ "GHS": {
+ "name": "GHS",
+ "symbol": "GHS"
+ },
+ "GIP": {
+ "name": "GIP",
+ "symbol": "GIP"
+ },
+ "GNF": {
+ "name": "GNF",
+ "symbol": "GNF"
+ },
+ "GTQ": {
+ "name": "GTQ",
+ "symbol": "GTQ"
+ },
+ "GYD": {
+ "name": "GYD",
+ "symbol": "GYD"
+ },
+ "HKD": {
+ "name": "HKD",
+ "symbol": "HK$"
+ },
+ "HNL": {
+ "name": "HNL",
+ "symbol": "HNL"
+ },
+ "HRK": {
+ "name": "HRK",
+ "symbol": "HRK"
+ },
+ "HTG": {
+ "name": "HTG",
+ "symbol": "HTG"
+ },
+ "HUF": {
+ "name": "HUF",
+ "symbol": "HUF"
+ },
+ "IDR": {
+ "name": "IDR",
+ "symbol": "IDR"
+ },
+ "ILS": {
+ "name": "ILS",
+ "symbol": "₪"
+ },
+ "IQD": {
+ "name": "IQD",
+ "symbol": "IQD"
+ },
+ "IRR": {
+ "name": "IRR",
+ "symbol": "IRR"
+ },
+ "ISK": {
+ "name": "ISK",
+ "symbol": "ISK"
+ },
+ "JMD": {
+ "name": "JMD",
+ "symbol": "JMD"
+ },
+ "JOD": {
+ "name": "JOD",
+ "symbol": "JOD"
+ },
+ "KGS": {
+ "name": "KGS",
+ "symbol": "KGS"
+ },
+ "KHR": {
+ "name": "KHR",
+ "symbol": "KHR"
+ },
+ "KPW": {
+ "name": "KPW",
+ "symbol": "KPW"
+ },
+ "KRW": {
+ "name": "KRW",
+ "symbol": "â‚©"
+ },
+ "MWK": {
+ "name": "Kwacha ya Malawi",
+ "symbol": "MWK"
+ },
+ "ZMW": {
+ "name": "Kwacha ya Zambia",
+ "symbol": "ZMW"
+ },
+ "AOA": {
+ "name": "Kwanza ya Angola",
+ "symbol": "AOA"
+ },
+ "KWD": {
+ "name": "KWD",
+ "symbol": "KWD"
+ },
+ "KYD": {
+ "name": "KYD",
+ "symbol": "KYD"
+ },
+ "KZT": {
+ "name": "KZT",
+ "symbol": "KZT"
+ },
+ "LAK": {
+ "name": "LAK",
+ "symbol": "LAK"
+ },
+ "LBP": {
+ "name": "LBP",
+ "symbol": "LBP"
+ },
+ "SLL": {
+ "name": "Leoni",
+ "symbol": "SLL"
+ },
+ "SZL": {
+ "name": "Lilangeni",
+ "symbol": "SZL"
+ },
+ "LKR": {
+ "name": "LKR",
+ "symbol": "LKR"
+ },
+ "LSL": {
+ "name": "Loti ya Lesoto",
+ "symbol": "LSL"
+ },
+ "LTL": {
+ "name": "LTL",
+ "symbol": "LTL"
+ },
+ "MDL": {
+ "name": "MDL",
+ "symbol": "MDL"
+ },
+ "MKD": {
+ "name": "MKD",
+ "symbol": "MKD"
+ },
+ "MMK": {
+ "name": "MMK",
+ "symbol": "MMK"
+ },
+ "MNT": {
+ "name": "MNT",
+ "symbol": "MNT"
+ },
+ "MOP": {
+ "name": "MOP",
+ "symbol": "MOP"
+ },
+ "MVR": {
+ "name": "MVR",
+ "symbol": "MVR"
+ },
+ "MXN": {
+ "name": "MXN",
+ "symbol": "MX$"
+ },
+ "MYR": {
+ "name": "MYR",
+ "symbol": "MYR"
+ },
+ "MZN": {
+ "name": "MZN",
+ "symbol": "MZN"
+ },
+ "NGN": {
+ "name": "Naira ya Nijeria",
+ "symbol": "NGN"
+ },
+ "ERN": {
+ "name": "Nakfa ya Eritrea",
+ "symbol": "ERN"
+ },
+ "NIO": {
+ "name": "NIO",
+ "symbol": "NIO"
+ },
+ "NOK": {
+ "name": "NOK",
+ "symbol": "NOK"
+ },
+ "NPR": {
+ "name": "NPR",
+ "symbol": "NPR"
+ },
+ "NZD": {
+ "name": "NZD",
+ "symbol": "NZ$"
+ },
+ "OMR": {
+ "name": "OMR",
+ "symbol": "OMR"
+ },
+ "PAB": {
+ "name": "PAB",
+ "symbol": "PAB"
+ },
+ "EGP": {
+ "name": "Paund mar Misri",
+ "symbol": "EGP"
+ },
+ "GBP": {
+ "name": "Pauni mar Uingereza",
+ "symbol": "£"
+ },
+ "SHP": {
+ "name": "Pauni ya Santahelena",
+ "symbol": "SHP"
+ },
+ "SDG": {
+ "name": "Pauni ya Sudani",
+ "symbol": "SDG"
+ },
+ "PEN": {
+ "name": "PEN",
+ "symbol": "PEN"
+ },
+ "PGK": {
+ "name": "PGK",
+ "symbol": "PGK"
+ },
+ "PHP": {
+ "name": "PHP",
+ "symbol": "PHP"
+ },
+ "PKR": {
+ "name": "PKR",
+ "symbol": "PKR"
+ },
+ "PLN": {
+ "name": "PLN",
+ "symbol": "PLN"
+ },
+ "BWP": {
+ "name": "Pula mar Botswana",
+ "symbol": "BWP"
+ },
+ "PYG": {
+ "name": "PYG",
+ "symbol": "PYG"
+ },
+ "QAR": {
+ "name": "QAR",
+ "symbol": "QAR"
+ },
+ "ZAR": {
+ "name": "Randi ya Afrika Kusini",
+ "symbol": "ZAR"
+ },
+ "SAR": {
+ "name": "Riyal ya Saudia",
+ "symbol": "SAR"
+ },
+ "RON": {
+ "name": "RON",
+ "symbol": "RON"
+ },
+ "RSD": {
+ "name": "RSD",
+ "symbol": "RSD"
+ },
+ "RUB": {
+ "name": "RUB",
+ "symbol": "RUB"
+ },
+ "INR": {
+ "name": "Rupia ya India",
+ "symbol": "₹"
+ },
+ "MUR": {
+ "name": "Rupia ya Morisi",
+ "symbol": "MUR"
+ },
+ "SCR": {
+ "name": "Rupia ya Shelisheli",
+ "symbol": "SCR"
+ },
+ "SBD": {
+ "name": "SBD",
+ "symbol": "SBD"
+ },
+ "SEK": {
+ "name": "SEK",
+ "symbol": "SEK"
+ },
+ "SGD": {
+ "name": "SGD",
+ "symbol": "SGD"
+ },
+ "SOS": {
+ "name": "Shilingi ya Somalia",
+ "symbol": "SOS"
+ },
+ "TZS": {
+ "name": "Shilingi ya Tanzania",
+ "symbol": "TZS"
+ },
+ "UGX": {
+ "name": "Shilingi ya Uganda",
+ "symbol": "UGX"
+ },
+ "KES": {
+ "name": "Siling mar Kenya",
+ "symbol": "Ksh"
+ },
+ "SRD": {
+ "name": "SRD",
+ "symbol": "SRD"
+ },
+ "SSP": {
+ "name": "SSP",
+ "symbol": "SSP"
+ },
+ "SVC": {
+ "name": "SVC",
+ "symbol": "SVC"
+ },
+ "SYP": {
+ "name": "SYP",
+ "symbol": "SYP"
+ },
+ "THB": {
+ "name": "THB",
+ "symbol": "THB"
+ },
+ "TJS": {
+ "name": "TJS",
+ "symbol": "TJS"
+ },
+ "TMT": {
+ "name": "TMT",
+ "symbol": "TMT"
+ },
+ "TOP": {
+ "name": "TOP",
+ "symbol": "TOP"
+ },
+ "TRY": {
+ "name": "TRY",
+ "symbol": "TRY"
+ },
+ "TTD": {
+ "name": "TTD",
+ "symbol": "TTD"
+ },
+ "TWD": {
+ "name": "TWD",
+ "symbol": "NT$"
+ },
+ "UAH": {
+ "name": "UAH",
+ "symbol": "UAH"
+ },
+ "MRO": {
+ "name": "Ugwiya ya Moritania",
+ "symbol": "MRO"
+ },
+ "UYU": {
+ "name": "UYU",
+ "symbol": "UYU"
+ },
+ "UZS": {
+ "name": "UZS",
+ "symbol": "UZS"
+ },
+ "VEF": {
+ "name": "VEF",
+ "symbol": "VEF"
+ },
+ "VND": {
+ "name": "VND",
+ "symbol": "â‚«"
+ },
+ "VUV": {
+ "name": "VUV",
+ "symbol": "VUV"
+ },
+ "WST": {
+ "name": "WST",
+ "symbol": "WST"
+ },
+ "XCD": {
+ "name": "XCD",
+ "symbol": "EC$"
+ },
+ "XPF": {
+ "name": "XPF",
+ "symbol": "CFPF"
+ },
+ "JPY": {
+ "name": "Yen mar Japan",
+ "symbol": "JPÂ¥"
+ },
+ "YER": {
+ "name": "YER",
+ "symbol": "YER"
+ },
+ "CNY": {
+ "name": "Yuan Renminbi ya China",
+ "symbol": "CNÂ¥"
+ },
+ "EUR": {
+ "name": "Yuro",
+ "symbol": "€"
+ },
+ "ZWL": {
+ "name": "ZWL",
+ "symbol": "ZWL"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/currency/luy.json b/library/intl/resources/currency/luy.json
new file mode 100644
index 000000000..b92aaa572
--- /dev/null
+++ b/library/intl/resources/currency/luy.json
@@ -0,0 +1,634 @@
+{
+ "AFN": {
+ "name": "AFN",
+ "symbol": "AFN"
+ },
+ "ALL": {
+ "name": "ALL",
+ "symbol": "ALL"
+ },
+ "AMD": {
+ "name": "AMD",
+ "symbol": "AMD"
+ },
+ "ANG": {
+ "name": "ANG",
+ "symbol": "ANG"
+ },
+ "MGA": {
+ "name": "Ariary ya Bukini",
+ "symbol": "MGA"
+ },
+ "ARS": {
+ "name": "ARS",
+ "symbol": "ARS"
+ },
+ "AWG": {
+ "name": "AWG",
+ "symbol": "AWG"
+ },
+ "AZN": {
+ "name": "AZN",
+ "symbol": "AZN"
+ },
+ "BAM": {
+ "name": "BAM",
+ "symbol": "BAM"
+ },
+ "BBD": {
+ "name": "BBD",
+ "symbol": "BBD"
+ },
+ "BDT": {
+ "name": "BDT",
+ "symbol": "BDT"
+ },
+ "BGN": {
+ "name": "BGN",
+ "symbol": "BGN"
+ },
+ "ETB": {
+ "name": "Bir ya Uhabeshi",
+ "symbol": "ETB"
+ },
+ "BMD": {
+ "name": "BMD",
+ "symbol": "BMD"
+ },
+ "BND": {
+ "name": "BND",
+ "symbol": "BND"
+ },
+ "BOB": {
+ "name": "BOB",
+ "symbol": "BOB"
+ },
+ "BRL": {
+ "name": "BRL",
+ "symbol": "R$"
+ },
+ "BSD": {
+ "name": "BSD",
+ "symbol": "BSD"
+ },
+ "BTN": {
+ "name": "BTN",
+ "symbol": "BTN"
+ },
+ "BYR": {
+ "name": "BYR",
+ "symbol": "BYR"
+ },
+ "BZD": {
+ "name": "BZD",
+ "symbol": "BZD"
+ },
+ "CLP": {
+ "name": "CLP",
+ "symbol": "CLP"
+ },
+ "COP": {
+ "name": "COP",
+ "symbol": "COP"
+ },
+ "CRC": {
+ "name": "CRC",
+ "symbol": "CRC"
+ },
+ "CUC": {
+ "name": "CUC",
+ "symbol": "CUC"
+ },
+ "CUP": {
+ "name": "CUP",
+ "symbol": "CUP"
+ },
+ "CZK": {
+ "name": "CZK",
+ "symbol": "CZK"
+ },
+ "GMD": {
+ "name": "Dalasi ya Gambia",
+ "symbol": "GMD"
+ },
+ "DZD": {
+ "name": "Dinari ya Aljeria",
+ "symbol": "DZD"
+ },
+ "BHD": {
+ "name": "Dinari ya Bahareni",
+ "symbol": "BHD"
+ },
+ "LYD": {
+ "name": "Dinari ya Libya",
+ "symbol": "LYD"
+ },
+ "TND": {
+ "name": "Dinari ya Tunisia",
+ "symbol": "TND"
+ },
+ "AED": {
+ "name": "Dirham ya Falme za Kiarabu",
+ "symbol": "AED"
+ },
+ "MAD": {
+ "name": "Dirham ya Moroko",
+ "symbol": "MAD"
+ },
+ "DKK": {
+ "name": "DKK",
+ "symbol": "DKK"
+ },
+ "STD": {
+ "name": "Dobra ya Sao Tome na Principe",
+ "symbol": "STD"
+ },
+ "AUD": {
+ "name": "Dola ya Australia",
+ "symbol": "A$"
+ },
+ "CAD": {
+ "name": "Dola ya Kanada",
+ "symbol": "CA$"
+ },
+ "LRD": {
+ "name": "Dola ya Liberia",
+ "symbol": "LRD"
+ },
+ "USD": {
+ "name": "Dola ya Marekani",
+ "symbol": "US$"
+ },
+ "NAD": {
+ "name": "Dola ya Namibia",
+ "symbol": "NAD"
+ },
+ "DOP": {
+ "name": "DOP",
+ "symbol": "DOP"
+ },
+ "CVE": {
+ "name": "Eskudo ya Kepuvede",
+ "symbol": "CVE"
+ },
+ "XOF": {
+ "name": "Faranga CFA BCEAO",
+ "symbol": "CFA"
+ },
+ "XAF": {
+ "name": "Faranga CFA BEAC",
+ "symbol": "FCFA"
+ },
+ "BIF": {
+ "name": "Faranga ya Burundi",
+ "symbol": "BIF"
+ },
+ "DJF": {
+ "name": "Faranga ya Jibuti",
+ "symbol": "DJF"
+ },
+ "KMF": {
+ "name": "Faranga ya Komoro",
+ "symbol": "KMF"
+ },
+ "CDF": {
+ "name": "Faranga ya Kongo",
+ "symbol": "CDF"
+ },
+ "RWF": {
+ "name": "Faranga ya Rwanda",
+ "symbol": "RWF"
+ },
+ "CHF": {
+ "name": "Faranga ya Uswisi",
+ "symbol": "CHF"
+ },
+ "FJD": {
+ "name": "FJD",
+ "symbol": "FJD"
+ },
+ "FKP": {
+ "name": "FKP",
+ "symbol": "FKP"
+ },
+ "GEL": {
+ "name": "GEL",
+ "symbol": "GEL"
+ },
+ "GHS": {
+ "name": "GHS",
+ "symbol": "GHS"
+ },
+ "GIP": {
+ "name": "GIP",
+ "symbol": "GIP"
+ },
+ "GNF": {
+ "name": "GNF",
+ "symbol": "GNF"
+ },
+ "GTQ": {
+ "name": "GTQ",
+ "symbol": "GTQ"
+ },
+ "GYD": {
+ "name": "GYD",
+ "symbol": "GYD"
+ },
+ "HKD": {
+ "name": "HKD",
+ "symbol": "HK$"
+ },
+ "HNL": {
+ "name": "HNL",
+ "symbol": "HNL"
+ },
+ "HRK": {
+ "name": "HRK",
+ "symbol": "HRK"
+ },
+ "HTG": {
+ "name": "HTG",
+ "symbol": "HTG"
+ },
+ "HUF": {
+ "name": "HUF",
+ "symbol": "HUF"
+ },
+ "IDR": {
+ "name": "IDR",
+ "symbol": "IDR"
+ },
+ "ILS": {
+ "name": "ILS",
+ "symbol": "₪"
+ },
+ "IQD": {
+ "name": "IQD",
+ "symbol": "IQD"
+ },
+ "IRR": {
+ "name": "IRR",
+ "symbol": "IRR"
+ },
+ "ISK": {
+ "name": "ISK",
+ "symbol": "ISK"
+ },
+ "JMD": {
+ "name": "JMD",
+ "symbol": "JMD"
+ },
+ "JOD": {
+ "name": "JOD",
+ "symbol": "JOD"
+ },
+ "KGS": {
+ "name": "KGS",
+ "symbol": "KGS"
+ },
+ "KHR": {
+ "name": "KHR",
+ "symbol": "KHR"
+ },
+ "KPW": {
+ "name": "KPW",
+ "symbol": "KPW"
+ },
+ "KRW": {
+ "name": "KRW",
+ "symbol": "â‚©"
+ },
+ "MWK": {
+ "name": "Kwacha ya Malawi",
+ "symbol": "MWK"
+ },
+ "ZMW": {
+ "name": "Kwacha ya Zambia",
+ "symbol": "ZMW"
+ },
+ "AOA": {
+ "name": "Kwanza ya Angola",
+ "symbol": "AOA"
+ },
+ "KWD": {
+ "name": "KWD",
+ "symbol": "KWD"
+ },
+ "KYD": {
+ "name": "KYD",
+ "symbol": "KYD"
+ },
+ "KZT": {
+ "name": "KZT",
+ "symbol": "KZT"
+ },
+ "LAK": {
+ "name": "LAK",
+ "symbol": "LAK"
+ },
+ "LBP": {
+ "name": "LBP",
+ "symbol": "LBP"
+ },
+ "SLL": {
+ "name": "Leoni",
+ "symbol": "SLL"
+ },
+ "SZL": {
+ "name": "Lilangeni",
+ "symbol": "SZL"
+ },
+ "LKR": {
+ "name": "LKR",
+ "symbol": "LKR"
+ },
+ "LSL": {
+ "name": "Loti ya Lesoto",
+ "symbol": "LSL"
+ },
+ "LTL": {
+ "name": "LTL",
+ "symbol": "LTL"
+ },
+ "MDL": {
+ "name": "MDL",
+ "symbol": "MDL"
+ },
+ "MKD": {
+ "name": "MKD",
+ "symbol": "MKD"
+ },
+ "MMK": {
+ "name": "MMK",
+ "symbol": "MMK"
+ },
+ "MNT": {
+ "name": "MNT",
+ "symbol": "MNT"
+ },
+ "MOP": {
+ "name": "MOP",
+ "symbol": "MOP"
+ },
+ "MVR": {
+ "name": "MVR",
+ "symbol": "MVR"
+ },
+ "MXN": {
+ "name": "MXN",
+ "symbol": "MX$"
+ },
+ "MYR": {
+ "name": "MYR",
+ "symbol": "MYR"
+ },
+ "MZN": {
+ "name": "MZN",
+ "symbol": "MZN"
+ },
+ "NGN": {
+ "name": "Naira ya Nijeria",
+ "symbol": "NGN"
+ },
+ "ERN": {
+ "name": "Nakfa ya Eritrea",
+ "symbol": "ERN"
+ },
+ "NIO": {
+ "name": "NIO",
+ "symbol": "NIO"
+ },
+ "NOK": {
+ "name": "NOK",
+ "symbol": "NOK"
+ },
+ "NPR": {
+ "name": "NPR",
+ "symbol": "NPR"
+ },
+ "NZD": {
+ "name": "NZD",
+ "symbol": "NZ$"
+ },
+ "OMR": {
+ "name": "OMR",
+ "symbol": "OMR"
+ },
+ "PAB": {
+ "name": "PAB",
+ "symbol": "PAB"
+ },
+ "EGP": {
+ "name": "Pauni ya Misri",
+ "symbol": "EGP"
+ },
+ "SHP": {
+ "name": "Pauni ya Santahelena",
+ "symbol": "SHP"
+ },
+ "SDG": {
+ "name": "Pauni ya Sudani",
+ "symbol": "SDG"
+ },
+ "GBP": {
+ "name": "Pauni ya Uingereza",
+ "symbol": "£"
+ },
+ "PEN": {
+ "name": "PEN",
+ "symbol": "PEN"
+ },
+ "PGK": {
+ "name": "PGK",
+ "symbol": "PGK"
+ },
+ "PHP": {
+ "name": "PHP",
+ "symbol": "PHP"
+ },
+ "PKR": {
+ "name": "PKR",
+ "symbol": "PKR"
+ },
+ "PLN": {
+ "name": "PLN",
+ "symbol": "PLN"
+ },
+ "BWP": {
+ "name": "Pula ya Botswana",
+ "symbol": "BWP"
+ },
+ "PYG": {
+ "name": "PYG",
+ "symbol": "PYG"
+ },
+ "QAR": {
+ "name": "QAR",
+ "symbol": "QAR"
+ },
+ "ZAR": {
+ "name": "Randi ya Afrika Kusini",
+ "symbol": "ZAR"
+ },
+ "SAR": {
+ "name": "Riyal ya Saudia",
+ "symbol": "SAR"
+ },
+ "RON": {
+ "name": "RON",
+ "symbol": "RON"
+ },
+ "RSD": {
+ "name": "RSD",
+ "symbol": "RSD"
+ },
+ "RUB": {
+ "name": "RUB",
+ "symbol": "RUB"
+ },
+ "INR": {
+ "name": "Rupia ya India",
+ "symbol": "₹"
+ },
+ "MUR": {
+ "name": "Rupia ya Morisi",
+ "symbol": "MUR"
+ },
+ "SCR": {
+ "name": "Rupia ya Shelisheli",
+ "symbol": "SCR"
+ },
+ "JPY": {
+ "name": "Sarafu ya Kijapani",
+ "symbol": "JPÂ¥"
+ },
+ "SBD": {
+ "name": "SBD",
+ "symbol": "SBD"
+ },
+ "SEK": {
+ "name": "SEK",
+ "symbol": "SEK"
+ },
+ "SGD": {
+ "name": "SGD",
+ "symbol": "SGD"
+ },
+ "SOS": {
+ "name": "Shilingi ya Somalia",
+ "symbol": "SOS"
+ },
+ "KES": {
+ "name": "Sirinji ya Kenya",
+ "symbol": "Ksh"
+ },
+ "TZS": {
+ "name": "Sirinji ya Tanzania",
+ "symbol": "TZS"
+ },
+ "UGX": {
+ "name": "Sirinji ya Uganda",
+ "symbol": "UGX"
+ },
+ "SRD": {
+ "name": "SRD",
+ "symbol": "SRD"
+ },
+ "SSP": {
+ "name": "SSP",
+ "symbol": "SSP"
+ },
+ "SVC": {
+ "name": "SVC",
+ "symbol": "SVC"
+ },
+ "SYP": {
+ "name": "SYP",
+ "symbol": "SYP"
+ },
+ "THB": {
+ "name": "THB",
+ "symbol": "THB"
+ },
+ "TJS": {
+ "name": "TJS",
+ "symbol": "TJS"
+ },
+ "TMT": {
+ "name": "TMT",
+ "symbol": "TMT"
+ },
+ "TOP": {
+ "name": "TOP",
+ "symbol": "TOP"
+ },
+ "TRY": {
+ "name": "TRY",
+ "symbol": "TRY"
+ },
+ "TTD": {
+ "name": "TTD",
+ "symbol": "TTD"
+ },
+ "TWD": {
+ "name": "TWD",
+ "symbol": "NT$"
+ },
+ "UAH": {
+ "name": "UAH",
+ "symbol": "UAH"
+ },
+ "MRO": {
+ "name": "Ugwiya ya Moritania",
+ "symbol": "MRO"
+ },
+ "UYU": {
+ "name": "UYU",
+ "symbol": "UYU"
+ },
+ "UZS": {
+ "name": "UZS",
+ "symbol": "UZS"
+ },
+ "VEF": {
+ "name": "VEF",
+ "symbol": "VEF"
+ },
+ "VND": {
+ "name": "VND",
+ "symbol": "â‚«"
+ },
+ "VUV": {
+ "name": "VUV",
+ "symbol": "VUV"
+ },
+ "WST": {
+ "name": "WST",
+ "symbol": "WST"
+ },
+ "XCD": {
+ "name": "XCD",
+ "symbol": "EC$"
+ },
+ "XPF": {
+ "name": "XPF",
+ "symbol": "CFPF"
+ },
+ "YER": {
+ "name": "YER",
+ "symbol": "YER"
+ },
+ "CNY": {
+ "name": "Yuan Renminbi ya China",
+ "symbol": "CNÂ¥"
+ },
+ "EUR": {
+ "name": "Yuro",
+ "symbol": "€"
+ },
+ "ZWL": {
+ "name": "ZWL",
+ "symbol": "ZWL"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/currency/lv.json b/library/intl/resources/currency/lv.json
new file mode 100644
index 000000000..72837602a
--- /dev/null
+++ b/library/intl/resources/currency/lv.json
@@ -0,0 +1,634 @@
+{
+ "AFN": {
+ "name": "AfganistÄnas afgÄns",
+ "symbol": "AFN"
+ },
+ "ALL": {
+ "name": "AlbÄnijas leks",
+ "symbol": "ALL"
+ },
+ "DZD": {
+ "name": "Alžīrijas dinÄrs",
+ "symbol": "DZD"
+ },
+ "AOA": {
+ "name": "Angolas kvanza",
+ "symbol": "AOA"
+ },
+ "AED": {
+ "name": "Apvienoto ArÄbu EmirÄtu dirhÄ“ms",
+ "symbol": "AED"
+ },
+ "ARS": {
+ "name": "Argentīnas peso",
+ "symbol": "ARS"
+ },
+ "AMD": {
+ "name": "Armēnijas drams",
+ "symbol": "AMD"
+ },
+ "AWG": {
+ "name": "Arubas guldenis",
+ "symbol": "AWG"
+ },
+ "USD": {
+ "name": "ASV dolÄrs",
+ "symbol": "$"
+ },
+ "AUD": {
+ "name": "AustrÄlijas dolÄrs",
+ "symbol": "AU$"
+ },
+ "XCD": {
+ "name": "AustrumkarÄ«bu dolÄrs",
+ "symbol": "EC$"
+ },
+ "AZN": {
+ "name": "AzerbaidžÄnas manats",
+ "symbol": "AZN"
+ },
+ "BSD": {
+ "name": "Bahamu dolÄrs",
+ "symbol": "BSD"
+ },
+ "BHD": {
+ "name": "Bahreinas dinÄrs",
+ "symbol": "BHD"
+ },
+ "BYR": {
+ "name": "Baltkrievijas rubelis",
+ "symbol": "BYR"
+ },
+ "BDT": {
+ "name": "Bangladešas taka",
+ "symbol": "BDT"
+ },
+ "BBD": {
+ "name": "Barbadosas dolÄrs",
+ "symbol": "BBD"
+ },
+ "BZD": {
+ "name": "Belizas dolÄrs",
+ "symbol": "BZD"
+ },
+ "BMD": {
+ "name": "Bermudu dolÄrs",
+ "symbol": "BMD"
+ },
+ "BOB": {
+ "name": "Bolīvijas boliviano",
+ "symbol": "BOB"
+ },
+ "BAM": {
+ "name": "Bosnijas un Hercogovinas marka",
+ "symbol": "BAM"
+ },
+ "BWP": {
+ "name": "Botsvanas pula",
+ "symbol": "BWP"
+ },
+ "BRL": {
+ "name": "BrazÄ«lijas reÄls",
+ "symbol": "R$"
+ },
+ "BND": {
+ "name": "Brunejas dolÄrs",
+ "symbol": "BND"
+ },
+ "BGN": {
+ "name": "BulgÄrijas leva",
+ "symbol": "BGN"
+ },
+ "BIF": {
+ "name": "Burundi franks",
+ "symbol": "BIF"
+ },
+ "BTN": {
+ "name": "ButÄnas ngultrums",
+ "symbol": "BTN"
+ },
+ "XAF": {
+ "name": "CentrÄlÄfrikas CFA franks",
+ "symbol": "FCFA"
+ },
+ "XPF": {
+ "name": "CFP franks",
+ "symbol": "CFPF"
+ },
+ "CZK": {
+ "name": "ÄŒehijas krona",
+ "symbol": "CZK"
+ },
+ "CLP": {
+ "name": "Čīles peso",
+ "symbol": "CLP"
+ },
+ "DKK": {
+ "name": "DÄnijas krona",
+ "symbol": "DKK"
+ },
+ "ZAR": {
+ "name": "DienvidÄfrikas rends",
+ "symbol": "ZAR"
+ },
+ "KRW": {
+ "name": "Dienvidkorejas vona",
+ "symbol": "â‚©"
+ },
+ "SSP": {
+ "name": "DienvidsudÄnas mÄrciņa",
+ "symbol": "SSP"
+ },
+ "DOP": {
+ "name": "DominikÄnas peso",
+ "symbol": "DOP"
+ },
+ "DJF": {
+ "name": "Džibutijas franks",
+ "symbol": "DJF"
+ },
+ "EGP": {
+ "name": "Ä’Ä£iptes mÄrciņa",
+ "symbol": "EGP"
+ },
+ "EUR": {
+ "name": "eiro",
+ "symbol": "€"
+ },
+ "ERN": {
+ "name": "Eritrejas nakfa",
+ "symbol": "ERN"
+ },
+ "ETB": {
+ "name": "Etiopijas birs",
+ "symbol": "ETB"
+ },
+ "FJD": {
+ "name": "Fidži dolÄrs",
+ "symbol": "FJD"
+ },
+ "PHP": {
+ "name": "Filipīnu peso",
+ "symbol": "PHP"
+ },
+ "FKP": {
+ "name": "Folklenda Salu mÄrciņa",
+ "symbol": "FKP"
+ },
+ "GYD": {
+ "name": "GajÄnas dolÄrs",
+ "symbol": "GYD"
+ },
+ "GMD": {
+ "name": "Gambijas dalasi",
+ "symbol": "GMD"
+ },
+ "GHS": {
+ "name": "Ganas sedi",
+ "symbol": "GHS"
+ },
+ "GIP": {
+ "name": "GibraltÄra mÄrciņa",
+ "symbol": "GIP"
+ },
+ "GEL": {
+ "name": "Gruzijas lari",
+ "symbol": "GEL"
+ },
+ "GTQ": {
+ "name": "Gvatemalas ketsals",
+ "symbol": "GTQ"
+ },
+ "GNF": {
+ "name": "Gvinejas franks",
+ "symbol": "GNF"
+ },
+ "HTG": {
+ "name": "Haiti gurds",
+ "symbol": "HTG"
+ },
+ "HNL": {
+ "name": "Hondurasas lempīra",
+ "symbol": "HNL"
+ },
+ "HKD": {
+ "name": "Honkongas dolÄrs",
+ "symbol": "HK$"
+ },
+ "HRK": {
+ "name": "HorvÄtijas kuna",
+ "symbol": "HRK"
+ },
+ "INR": {
+ "name": "Indijas rūpija",
+ "symbol": "₹"
+ },
+ "IDR": {
+ "name": "Indonēzijas rūpija",
+ "symbol": "IDR"
+ },
+ "IQD": {
+ "name": "IrÄkas dinÄrs",
+ "symbol": "IQD"
+ },
+ "IRR": {
+ "name": "IrÄnas riÄls",
+ "symbol": "IRR"
+ },
+ "ISK": {
+ "name": "Īslandes krona",
+ "symbol": "ISK"
+ },
+ "ILS": {
+ "name": "Izraēlas šekelis",
+ "symbol": "₪"
+ },
+ "JMD": {
+ "name": "Jamaikas dolÄrs",
+ "symbol": "JMD"
+ },
+ "JPY": {
+ "name": "JapÄnas jena",
+ "symbol": "Â¥"
+ },
+ "NZD": {
+ "name": "JaunzÄ“landes dolÄrs",
+ "symbol": "NZ$"
+ },
+ "YER": {
+ "name": "Jemenas riÄls",
+ "symbol": "YER"
+ },
+ "JOD": {
+ "name": "JordÄnas dinÄrs",
+ "symbol": "JOD"
+ },
+ "CVE": {
+ "name": "Kaboverdes eskudo",
+ "symbol": "CVE"
+ },
+ "KYD": {
+ "name": "Kaimanu salu dolÄrs",
+ "symbol": "KYD"
+ },
+ "KHR": {
+ "name": "Kambodžas riels",
+ "symbol": "KHR"
+ },
+ "CAD": {
+ "name": "KanÄdas dolÄrs",
+ "symbol": "CA$"
+ },
+ "QAR": {
+ "name": "Kataras riÄls",
+ "symbol": "QAR"
+ },
+ "KZT": {
+ "name": "KazahstÄnas tenge",
+ "symbol": "KZT"
+ },
+ "CDF": {
+ "name": "KDR franks",
+ "symbol": "CDF"
+ },
+ "KES": {
+ "name": "Kenijas šiliņš",
+ "symbol": "KES"
+ },
+ "KGS": {
+ "name": "KirgizstÄnas soms",
+ "symbol": "KGS"
+ },
+ "COP": {
+ "name": "Kolumbijas peso",
+ "symbol": "COP"
+ },
+ "KMF": {
+ "name": "Komoru franks",
+ "symbol": "KMF"
+ },
+ "CRC": {
+ "name": "Kostarikas kolons",
+ "symbol": "CRC"
+ },
+ "RUB": {
+ "name": "Krievijas rublis",
+ "symbol": "RUB"
+ },
+ "CUC": {
+ "name": "Kubas konvertējamais peso",
+ "symbol": "CUC"
+ },
+ "CUP": {
+ "name": "Kubas peso",
+ "symbol": "CUP"
+ },
+ "KWD": {
+ "name": "Kuveitas dinÄrs",
+ "symbol": "KWD"
+ },
+ "CNY": {
+ "name": "Ķīnas juaņs",
+ "symbol": "CNÂ¥"
+ },
+ "LAK": {
+ "name": "Laosas kips",
+ "symbol": "LAK"
+ },
+ "LSL": {
+ "name": "Lesoto loti",
+ "symbol": "LSL"
+ },
+ "LBP": {
+ "name": "LibÄnas mÄrciņa",
+ "symbol": "LBP"
+ },
+ "LRD": {
+ "name": "LibÄ“rijas dolÄrs",
+ "symbol": "LRD"
+ },
+ "LYD": {
+ "name": "LÄ«bijas dinÄrs",
+ "symbol": "LYD"
+ },
+ "GBP": {
+ "name": "LielbritÄnijas sterliņu mÄrciņa",
+ "symbol": "£"
+ },
+ "LTL": {
+ "name": "Lietuvas lits",
+ "symbol": "LTL"
+ },
+ "MGA": {
+ "name": "Madagaskaras ariari",
+ "symbol": "MGA"
+ },
+ "MOP": {
+ "name": "Makao pataka",
+ "symbol": "MOP"
+ },
+ "MKD": {
+ "name": "MaÄ·edonijas denÄrs",
+ "symbol": "MKD"
+ },
+ "MYR": {
+ "name": "Malaizijas ringits",
+ "symbol": "MYR"
+ },
+ "MWK": {
+ "name": "MalÄvijas kvaÄa",
+ "symbol": "MWK"
+ },
+ "MVR": {
+ "name": "Maldīvijas rūfija",
+ "symbol": "MVR"
+ },
+ "MAD": {
+ "name": "Marokas dirhēms",
+ "symbol": "MAD"
+ },
+ "MUR": {
+ "name": "Maurīcijas rūpija",
+ "symbol": "MUR"
+ },
+ "MRO": {
+ "name": "MauritÄnijas ugija",
+ "symbol": "MRO"
+ },
+ "MXN": {
+ "name": "Meksikas peso",
+ "symbol": "MX$"
+ },
+ "MMK": {
+ "name": "Mjanmas kjats",
+ "symbol": "MMK"
+ },
+ "MDL": {
+ "name": "Moldovas leja",
+ "symbol": "MDL"
+ },
+ "MNT": {
+ "name": "Mongolijas tugriks",
+ "symbol": "MNT"
+ },
+ "MZN": {
+ "name": "Mozambikas metikals",
+ "symbol": "MZN"
+ },
+ "NAD": {
+ "name": "NamÄ«bijas dolÄrs",
+ "symbol": "NAD"
+ },
+ "NPR": {
+ "name": "NepÄlas rÅ«pija",
+ "symbol": "NPR"
+ },
+ "ANG": {
+ "name": "Nīderlandes Antiļu guldenis",
+ "symbol": "ANG"
+ },
+ "NGN": {
+ "name": "Nigērijas naira",
+ "symbol": "NGN"
+ },
+ "NIO": {
+ "name": "Nikaragvas kordoba",
+ "symbol": "NIO"
+ },
+ "NOK": {
+ "name": "Norvēģijas krona",
+ "symbol": "NOK"
+ },
+ "OMR": {
+ "name": "OmÄnas riÄls",
+ "symbol": "OMR"
+ },
+ "PKR": {
+ "name": "PakistÄnas rÅ«pija",
+ "symbol": "PKR"
+ },
+ "PAB": {
+ "name": "Panamas balboa",
+ "symbol": "PAB"
+ },
+ "PGK": {
+ "name": "Papua-Jaungvinejas kina",
+ "symbol": "PGK"
+ },
+ "PYG": {
+ "name": "Paragvajas guarani",
+ "symbol": "PYG"
+ },
+ "PEN": {
+ "name": "Peru jaunais sols",
+ "symbol": "PEN"
+ },
+ "PLN": {
+ "name": "Polijas zlots",
+ "symbol": "PLN"
+ },
+ "XOF": {
+ "name": "RietumÄfrikas CFA franks",
+ "symbol": "CFA"
+ },
+ "RWF": {
+ "name": "Ruandas franks",
+ "symbol": "RWF"
+ },
+ "RON": {
+ "name": "RumÄnijas leja",
+ "symbol": "RON"
+ },
+ "SVC": {
+ "name": "Salvadoras kolons",
+ "symbol": "SVC"
+ },
+ "WST": {
+ "name": "Samoa tala",
+ "symbol": "WST"
+ },
+ "STD": {
+ "name": "Santome un Prinsipi dobra",
+ "symbol": "STD"
+ },
+ "SAR": {
+ "name": "SaÅ«da riÄls",
+ "symbol": "SAR"
+ },
+ "SCR": {
+ "name": "Seišelu salu rūpija",
+ "symbol": "SCR"
+ },
+ "RSD": {
+ "name": "Serbijas dinÄrs",
+ "symbol": "RSD"
+ },
+ "SGD": {
+ "name": "SingapÅ«ras dolÄrs",
+ "symbol": "SGD"
+ },
+ "SYP": {
+ "name": "SÄ«rijas mÄrciņa",
+ "symbol": "SYP"
+ },
+ "SLL": {
+ "name": "Sjerraleones leone",
+ "symbol": "SLL"
+ },
+ "SOS": {
+ "name": "SomÄlijas Å¡iliņš",
+ "symbol": "SOS"
+ },
+ "SDG": {
+ "name": "SudÄnas mÄrciņa",
+ "symbol": "SDG"
+ },
+ "SRD": {
+ "name": "Surinamas dolÄrs",
+ "symbol": "SRD"
+ },
+ "SHP": {
+ "name": "Sv.HelÄ“nas salas mÄrciņa",
+ "symbol": "SHP"
+ },
+ "SZL": {
+ "name": "Svazilendas lilangeni",
+ "symbol": "SZL"
+ },
+ "LKR": {
+ "name": "Šrilankas rūpija",
+ "symbol": "LKR"
+ },
+ "CHF": {
+ "name": "Å veices franks",
+ "symbol": "CHF"
+ },
+ "TJS": {
+ "name": "TadžikistÄnas somons",
+ "symbol": "TJS"
+ },
+ "TWD": {
+ "name": "TaivÄnas jaunais dolÄrs",
+ "symbol": "NT$"
+ },
+ "THB": {
+ "name": "Taizemes bÄts",
+ "symbol": "฿"
+ },
+ "TZS": {
+ "name": "TanzÄnijas Å¡iliņš",
+ "symbol": "TZS"
+ },
+ "TOP": {
+ "name": "Tongas paanga",
+ "symbol": "TOP"
+ },
+ "TTD": {
+ "name": "TrinidÄdas un TobÄgo dolÄrs",
+ "symbol": "TTD"
+ },
+ "TND": {
+ "name": "Tunisijas dinÄrs",
+ "symbol": "TND"
+ },
+ "TRY": {
+ "name": "Turcijas lira",
+ "symbol": "TRY"
+ },
+ "TMT": {
+ "name": "TurkmenistÄnas manats",
+ "symbol": "TMT"
+ },
+ "UGX": {
+ "name": "Ugandas šiliņš",
+ "symbol": "UGX"
+ },
+ "UAH": {
+ "name": "Ukrainas grivna",
+ "symbol": "UAH"
+ },
+ "HUF": {
+ "name": "UngÄrijas forints",
+ "symbol": "HUF"
+ },
+ "UYU": {
+ "name": "Urugvajas peso",
+ "symbol": "UYU"
+ },
+ "UZS": {
+ "name": "UzbekistÄnas sums",
+ "symbol": "UZS"
+ },
+ "VUV": {
+ "name": "Vanuatu vatu",
+ "symbol": "VUV"
+ },
+ "VEF": {
+ "name": "VenecuÄ“las bolivÄrs",
+ "symbol": "VEF"
+ },
+ "VND": {
+ "name": "Vjetnamas dongi",
+ "symbol": "â‚«"
+ },
+ "SBD": {
+ "name": "ZÄlamana Salu dolÄrs",
+ "symbol": "SBD"
+ },
+ "ZMW": {
+ "name": "Zambijas kvaÄa",
+ "symbol": "ZMW"
+ },
+ "KPW": {
+ "name": "Ziemeļkorejas vona",
+ "symbol": "KPW"
+ },
+ "ZWL": {
+ "name": "Zimbabves dolÄrs (2009)",
+ "symbol": "ZWL"
+ },
+ "SEK": {
+ "name": "Zviedrijas krona",
+ "symbol": "SEK"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/currency/mas.json b/library/intl/resources/currency/mas.json
new file mode 100644
index 000000000..150439fe3
--- /dev/null
+++ b/library/intl/resources/currency/mas.json
@@ -0,0 +1,634 @@
+{
+ "AFN": {
+ "name": "AFN",
+ "symbol": "AFN"
+ },
+ "ALL": {
+ "name": "ALL",
+ "symbol": "ALL"
+ },
+ "AMD": {
+ "name": "AMD",
+ "symbol": "AMD"
+ },
+ "ANG": {
+ "name": "ANG",
+ "symbol": "ANG"
+ },
+ "ARS": {
+ "name": "ARS",
+ "symbol": "ARS"
+ },
+ "AWG": {
+ "name": "AWG",
+ "symbol": "AWG"
+ },
+ "AZN": {
+ "name": "AZN",
+ "symbol": "AZN"
+ },
+ "BAM": {
+ "name": "BAM",
+ "symbol": "BAM"
+ },
+ "BBD": {
+ "name": "BBD",
+ "symbol": "BBD"
+ },
+ "BDT": {
+ "name": "BDT",
+ "symbol": "BDT"
+ },
+ "BGN": {
+ "name": "BGN",
+ "symbol": "BGN"
+ },
+ "BMD": {
+ "name": "BMD",
+ "symbol": "BMD"
+ },
+ "BND": {
+ "name": "BND",
+ "symbol": "BND"
+ },
+ "BOB": {
+ "name": "BOB",
+ "symbol": "BOB"
+ },
+ "BRL": {
+ "name": "BRL",
+ "symbol": "R$"
+ },
+ "BSD": {
+ "name": "BSD",
+ "symbol": "BSD"
+ },
+ "BTN": {
+ "name": "BTN",
+ "symbol": "BTN"
+ },
+ "BYR": {
+ "name": "BYR",
+ "symbol": "BYR"
+ },
+ "BZD": {
+ "name": "BZD",
+ "symbol": "BZD"
+ },
+ "CLP": {
+ "name": "CLP",
+ "symbol": "CLP"
+ },
+ "COP": {
+ "name": "COP",
+ "symbol": "COP"
+ },
+ "CRC": {
+ "name": "CRC",
+ "symbol": "CRC"
+ },
+ "CUC": {
+ "name": "CUC",
+ "symbol": "CUC"
+ },
+ "CUP": {
+ "name": "CUP",
+ "symbol": "CUP"
+ },
+ "CZK": {
+ "name": "CZK",
+ "symbol": "CZK"
+ },
+ "DKK": {
+ "name": "DKK",
+ "symbol": "DKK"
+ },
+ "DOP": {
+ "name": "DOP",
+ "symbol": "DOP"
+ },
+ "FJD": {
+ "name": "FJD",
+ "symbol": "FJD"
+ },
+ "FKP": {
+ "name": "FKP",
+ "symbol": "FKP"
+ },
+ "GEL": {
+ "name": "GEL",
+ "symbol": "GEL"
+ },
+ "GHS": {
+ "name": "GHS",
+ "symbol": "GHS"
+ },
+ "GIP": {
+ "name": "GIP",
+ "symbol": "GIP"
+ },
+ "GNF": {
+ "name": "GNF",
+ "symbol": "GNF"
+ },
+ "GTQ": {
+ "name": "GTQ",
+ "symbol": "GTQ"
+ },
+ "GYD": {
+ "name": "GYD",
+ "symbol": "GYD"
+ },
+ "HKD": {
+ "name": "HKD",
+ "symbol": "HK$"
+ },
+ "HNL": {
+ "name": "HNL",
+ "symbol": "HNL"
+ },
+ "HRK": {
+ "name": "HRK",
+ "symbol": "HRK"
+ },
+ "HTG": {
+ "name": "HTG",
+ "symbol": "HTG"
+ },
+ "HUF": {
+ "name": "HUF",
+ "symbol": "HUF"
+ },
+ "IDR": {
+ "name": "IDR",
+ "symbol": "IDR"
+ },
+ "ILS": {
+ "name": "ILS",
+ "symbol": "₪"
+ },
+ "IQD": {
+ "name": "IQD",
+ "symbol": "IQD"
+ },
+ "ZAR": {
+ "name": "Iropiyianí e Afrika Kusini",
+ "symbol": "ZAR"
+ },
+ "DZD": {
+ "name": "Iropiyianí e Algeria",
+ "symbol": "DZD"
+ },
+ "AOA": {
+ "name": "Iropiyianí e Angola",
+ "symbol": "AOA"
+ },
+ "AUD": {
+ "name": "Iropiyianí e Austria",
+ "symbol": "A$"
+ },
+ "BHD": {
+ "name": "Iropiyianí e Bahareini",
+ "symbol": "BHD"
+ },
+ "BWP": {
+ "name": "Iropiyianí e Botswana",
+ "symbol": "BWP"
+ },
+ "MGA": {
+ "name": "Iropiyianí e Bukini",
+ "symbol": "MGA"
+ },
+ "BIF": {
+ "name": "Iropiyianí e Burundi",
+ "symbol": "BIF"
+ },
+ "XOF": {
+ "name": "Iropiyianí e CFA BCEAO",
+ "symbol": "CFA"
+ },
+ "XAF": {
+ "name": "Iropiyianí e CFA BEAC",
+ "symbol": "FCFA"
+ },
+ "CNY": {
+ "name": "Iropiyianí e China",
+ "symbol": "CNÂ¥"
+ },
+ "ERN": {
+ "name": "Iropiyianí e Eritrea",
+ "symbol": "ERN"
+ },
+ "GMD": {
+ "name": "Iropiyianí e Gambia",
+ "symbol": "GMD"
+ },
+ "INR": {
+ "name": "Iropiyianí e India",
+ "symbol": "₹"
+ },
+ "JPY": {
+ "name": "Iropiyianí e Japani",
+ "symbol": "JPÂ¥"
+ },
+ "DJF": {
+ "name": "Iropiyianí e Jibuti",
+ "symbol": "DJF"
+ },
+ "CAD": {
+ "name": "Iropiyianí e Kanada",
+ "symbol": "CA$"
+ },
+ "KES": {
+ "name": "Iropiyianí e Kenya",
+ "symbol": "Ksh"
+ },
+ "CVE": {
+ "name": "Iropiyianí e Kepuvede",
+ "symbol": "CVE"
+ },
+ "KMF": {
+ "name": "Iropiyianí e Komoro",
+ "symbol": "KMF"
+ },
+ "CDF": {
+ "name": "Iropiyianí e Kongo",
+ "symbol": "CDF"
+ },
+ "SLL": {
+ "name": "Iropiyianí e leoni",
+ "symbol": "SLL"
+ },
+ "LSL": {
+ "name": "Iropiyianí e Lesoto",
+ "symbol": "LSL"
+ },
+ "LRD": {
+ "name": "Iropiyianí e Liberia",
+ "symbol": "LRD"
+ },
+ "LYD": {
+ "name": "Iropiyianí e Libya",
+ "symbol": "LYD"
+ },
+ "SZL": {
+ "name": "Iropiyianí e lilangeni",
+ "symbol": "SZL"
+ },
+ "MWK": {
+ "name": "Iropiyianí e Malawi",
+ "symbol": "MWK"
+ },
+ "EGP": {
+ "name": "Iropiyianí e Misri",
+ "symbol": "EGP"
+ },
+ "MUR": {
+ "name": "Iropiyianí e Morisi",
+ "symbol": "MUR"
+ },
+ "MRO": {
+ "name": "Iropiyianí e Moritania",
+ "symbol": "MRO"
+ },
+ "MAD": {
+ "name": "Iropiyianí e Moroko",
+ "symbol": "MAD"
+ },
+ "NAD": {
+ "name": "Iropiyianí e Namibia",
+ "symbol": "NAD"
+ },
+ "NGN": {
+ "name": "Iropiyianí e Nijeria",
+ "symbol": "NGN"
+ },
+ "GBP": {
+ "name": "Iropiyianí e NkɨÌresa",
+ "symbol": "£"
+ },
+ "RWF": {
+ "name": "Iropiyianí e Rwanda",
+ "symbol": "RWF"
+ },
+ "ZMW": {
+ "name": "Iropiyianí e Sambia",
+ "symbol": "ZMW"
+ },
+ "SHP": {
+ "name": "Iropiyianí e Santahelena",
+ "symbol": "SHP"
+ },
+ "STD": {
+ "name": "Iropiyianí e Saotome",
+ "symbol": "STD"
+ },
+ "SAR": {
+ "name": "Iropiyianí e Saudi",
+ "symbol": "SAR"
+ },
+ "SCR": {
+ "name": "Iropiyianí e Shelisheli",
+ "symbol": "SCR"
+ },
+ "SOS": {
+ "name": "Iropiyianí e Somalia",
+ "symbol": "SOS"
+ },
+ "SDG": {
+ "name": "Iropiyianí e Sudani",
+ "symbol": "SDG"
+ },
+ "TZS": {
+ "name": "Iropiyianí e Tanzania",
+ "symbol": "TZS"
+ },
+ "TND": {
+ "name": "Iropiyianí e Tunisia",
+ "symbol": "TND"
+ },
+ "UGX": {
+ "name": "Iropiyianí e Uganda",
+ "symbol": "UGX"
+ },
+ "ETB": {
+ "name": "Iropiyianí e Uhabeshi",
+ "symbol": "ETB"
+ },
+ "CHF": {
+ "name": "Iropiyianí e Uswisi",
+ "symbol": "CHF"
+ },
+ "EUR": {
+ "name": "Iropiyianí e yuro",
+ "symbol": "€"
+ },
+ "USD": {
+ "name": "Iropiyianí É”Ìɔ̄ lamarekani",
+ "symbol": "US$"
+ },
+ "AED": {
+ "name": "Iropiyianí É”Ìɔ̄ lmarabu",
+ "symbol": "AED"
+ },
+ "IRR": {
+ "name": "IRR",
+ "symbol": "IRR"
+ },
+ "ISK": {
+ "name": "ISK",
+ "symbol": "ISK"
+ },
+ "JMD": {
+ "name": "JMD",
+ "symbol": "JMD"
+ },
+ "JOD": {
+ "name": "JOD",
+ "symbol": "JOD"
+ },
+ "KGS": {
+ "name": "KGS",
+ "symbol": "KGS"
+ },
+ "KHR": {
+ "name": "KHR",
+ "symbol": "KHR"
+ },
+ "KPW": {
+ "name": "KPW",
+ "symbol": "KPW"
+ },
+ "KRW": {
+ "name": "KRW",
+ "symbol": "â‚©"
+ },
+ "KWD": {
+ "name": "KWD",
+ "symbol": "KWD"
+ },
+ "KYD": {
+ "name": "KYD",
+ "symbol": "KYD"
+ },
+ "KZT": {
+ "name": "KZT",
+ "symbol": "KZT"
+ },
+ "LAK": {
+ "name": "LAK",
+ "symbol": "LAK"
+ },
+ "LBP": {
+ "name": "LBP",
+ "symbol": "LBP"
+ },
+ "LKR": {
+ "name": "LKR",
+ "symbol": "LKR"
+ },
+ "LTL": {
+ "name": "LTL",
+ "symbol": "LTL"
+ },
+ "MDL": {
+ "name": "MDL",
+ "symbol": "MDL"
+ },
+ "MKD": {
+ "name": "MKD",
+ "symbol": "MKD"
+ },
+ "MMK": {
+ "name": "MMK",
+ "symbol": "MMK"
+ },
+ "MNT": {
+ "name": "MNT",
+ "symbol": "MNT"
+ },
+ "MOP": {
+ "name": "MOP",
+ "symbol": "MOP"
+ },
+ "MVR": {
+ "name": "MVR",
+ "symbol": "MVR"
+ },
+ "MXN": {
+ "name": "MXN",
+ "symbol": "MX$"
+ },
+ "MYR": {
+ "name": "MYR",
+ "symbol": "MYR"
+ },
+ "MZN": {
+ "name": "MZN",
+ "symbol": "MZN"
+ },
+ "NIO": {
+ "name": "NIO",
+ "symbol": "NIO"
+ },
+ "NOK": {
+ "name": "NOK",
+ "symbol": "NOK"
+ },
+ "NPR": {
+ "name": "NPR",
+ "symbol": "NPR"
+ },
+ "NZD": {
+ "name": "NZD",
+ "symbol": "NZ$"
+ },
+ "OMR": {
+ "name": "OMR",
+ "symbol": "OMR"
+ },
+ "PAB": {
+ "name": "PAB",
+ "symbol": "PAB"
+ },
+ "PEN": {
+ "name": "PEN",
+ "symbol": "PEN"
+ },
+ "PGK": {
+ "name": "PGK",
+ "symbol": "PGK"
+ },
+ "PHP": {
+ "name": "PHP",
+ "symbol": "PHP"
+ },
+ "PKR": {
+ "name": "PKR",
+ "symbol": "PKR"
+ },
+ "PLN": {
+ "name": "PLN",
+ "symbol": "PLN"
+ },
+ "PYG": {
+ "name": "PYG",
+ "symbol": "PYG"
+ },
+ "QAR": {
+ "name": "QAR",
+ "symbol": "QAR"
+ },
+ "RON": {
+ "name": "RON",
+ "symbol": "RON"
+ },
+ "RSD": {
+ "name": "RSD",
+ "symbol": "RSD"
+ },
+ "RUB": {
+ "name": "RUB",
+ "symbol": "RUB"
+ },
+ "SBD": {
+ "name": "SBD",
+ "symbol": "SBD"
+ },
+ "SEK": {
+ "name": "SEK",
+ "symbol": "SEK"
+ },
+ "SGD": {
+ "name": "SGD",
+ "symbol": "SGD"
+ },
+ "SRD": {
+ "name": "SRD",
+ "symbol": "SRD"
+ },
+ "SSP": {
+ "name": "SSP",
+ "symbol": "SSP"
+ },
+ "SVC": {
+ "name": "SVC",
+ "symbol": "SVC"
+ },
+ "SYP": {
+ "name": "SYP",
+ "symbol": "SYP"
+ },
+ "THB": {
+ "name": "THB",
+ "symbol": "THB"
+ },
+ "TJS": {
+ "name": "TJS",
+ "symbol": "TJS"
+ },
+ "TMT": {
+ "name": "TMT",
+ "symbol": "TMT"
+ },
+ "TOP": {
+ "name": "TOP",
+ "symbol": "TOP"
+ },
+ "TRY": {
+ "name": "TRY",
+ "symbol": "TRY"
+ },
+ "TTD": {
+ "name": "TTD",
+ "symbol": "TTD"
+ },
+ "TWD": {
+ "name": "TWD",
+ "symbol": "NT$"
+ },
+ "UAH": {
+ "name": "UAH",
+ "symbol": "UAH"
+ },
+ "UYU": {
+ "name": "UYU",
+ "symbol": "UYU"
+ },
+ "UZS": {
+ "name": "UZS",
+ "symbol": "UZS"
+ },
+ "VEF": {
+ "name": "VEF",
+ "symbol": "VEF"
+ },
+ "VND": {
+ "name": "VND",
+ "symbol": "â‚«"
+ },
+ "VUV": {
+ "name": "VUV",
+ "symbol": "VUV"
+ },
+ "WST": {
+ "name": "WST",
+ "symbol": "WST"
+ },
+ "XCD": {
+ "name": "XCD",
+ "symbol": "EC$"
+ },
+ "XPF": {
+ "name": "XPF",
+ "symbol": "CFPF"
+ },
+ "YER": {
+ "name": "YER",
+ "symbol": "YER"
+ },
+ "ZWL": {
+ "name": "ZWL",
+ "symbol": "ZWL"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/currency/mer.json b/library/intl/resources/currency/mer.json
new file mode 100644
index 000000000..ca2586a0c
--- /dev/null
+++ b/library/intl/resources/currency/mer.json
@@ -0,0 +1,634 @@
+{
+ "AFN": {
+ "name": "AFN",
+ "symbol": "AFN"
+ },
+ "ALL": {
+ "name": "ALL",
+ "symbol": "ALL"
+ },
+ "AMD": {
+ "name": "AMD",
+ "symbol": "AMD"
+ },
+ "ANG": {
+ "name": "ANG",
+ "symbol": "ANG"
+ },
+ "MGA": {
+ "name": "Ariarĩ ya Bukini",
+ "symbol": "MGA"
+ },
+ "ARS": {
+ "name": "ARS",
+ "symbol": "ARS"
+ },
+ "AWG": {
+ "name": "AWG",
+ "symbol": "AWG"
+ },
+ "AZN": {
+ "name": "AZN",
+ "symbol": "AZN"
+ },
+ "BAM": {
+ "name": "BAM",
+ "symbol": "BAM"
+ },
+ "BBD": {
+ "name": "BBD",
+ "symbol": "BBD"
+ },
+ "BDT": {
+ "name": "BDT",
+ "symbol": "BDT"
+ },
+ "BGN": {
+ "name": "BGN",
+ "symbol": "BGN"
+ },
+ "ETB": {
+ "name": "Bĩrũ ya Ithiopia",
+ "symbol": "ETB"
+ },
+ "BMD": {
+ "name": "BMD",
+ "symbol": "BMD"
+ },
+ "BND": {
+ "name": "BND",
+ "symbol": "BND"
+ },
+ "BOB": {
+ "name": "BOB",
+ "symbol": "BOB"
+ },
+ "BRL": {
+ "name": "BRL",
+ "symbol": "R$"
+ },
+ "BSD": {
+ "name": "BSD",
+ "symbol": "BSD"
+ },
+ "BTN": {
+ "name": "BTN",
+ "symbol": "BTN"
+ },
+ "BYR": {
+ "name": "BYR",
+ "symbol": "BYR"
+ },
+ "BZD": {
+ "name": "BZD",
+ "symbol": "BZD"
+ },
+ "CLP": {
+ "name": "CLP",
+ "symbol": "CLP"
+ },
+ "COP": {
+ "name": "COP",
+ "symbol": "COP"
+ },
+ "CRC": {
+ "name": "CRC",
+ "symbol": "CRC"
+ },
+ "CUC": {
+ "name": "CUC",
+ "symbol": "CUC"
+ },
+ "CUP": {
+ "name": "CUP",
+ "symbol": "CUP"
+ },
+ "CZK": {
+ "name": "CZK",
+ "symbol": "CZK"
+ },
+ "GMD": {
+ "name": "Dalasi ya Gambia",
+ "symbol": "GMD"
+ },
+ "DZD": {
+ "name": "Dinari ya Anjĩria",
+ "symbol": "DZD"
+ },
+ "BHD": {
+ "name": "Dinari ya Baharini",
+ "symbol": "BHD"
+ },
+ "LYD": {
+ "name": "Dinari ya Libya",
+ "symbol": "LYD"
+ },
+ "TND": {
+ "name": "Dinari ya Tunisia",
+ "symbol": "TND"
+ },
+ "AED": {
+ "name": "Dirham ya Falme cia Kiarabu",
+ "symbol": "AED"
+ },
+ "MAD": {
+ "name": "Dirham ya Moroko",
+ "symbol": "MAD"
+ },
+ "DKK": {
+ "name": "DKK",
+ "symbol": "DKK"
+ },
+ "STD": {
+ "name": "Dobra ya Sao Tome na Principe",
+ "symbol": "STD"
+ },
+ "USD": {
+ "name": "Dola ya Amerika",
+ "symbol": "US$"
+ },
+ "AUD": {
+ "name": "Dola ya Austrĩlia",
+ "symbol": "A$"
+ },
+ "CAD": {
+ "name": "Dola ya Kanada",
+ "symbol": "CA$"
+ },
+ "LRD": {
+ "name": "Dola ya Liberia",
+ "symbol": "LRD"
+ },
+ "NAD": {
+ "name": "Dola ya Namibia",
+ "symbol": "NAD"
+ },
+ "DOP": {
+ "name": "DOP",
+ "symbol": "DOP"
+ },
+ "CVE": {
+ "name": "Eskudo ya Kepuvede",
+ "symbol": "CVE"
+ },
+ "XOF": {
+ "name": "Faranga CFA BCEAO",
+ "symbol": "CFA"
+ },
+ "XAF": {
+ "name": "Faranga CFA BEAC",
+ "symbol": "FCFA"
+ },
+ "BIF": {
+ "name": "Faranga ya Burundi",
+ "symbol": "BIF"
+ },
+ "DJF": {
+ "name": "Faranga ya Jibuti",
+ "symbol": "DJF"
+ },
+ "KMF": {
+ "name": "Faranga ya Komoro",
+ "symbol": "KMF"
+ },
+ "CDF": {
+ "name": "Faranga ya Kongo",
+ "symbol": "CDF"
+ },
+ "RWF": {
+ "name": "Faranga ya Rwanda",
+ "symbol": "RWF"
+ },
+ "CHF": {
+ "name": "Faranga ya Swisilandi",
+ "symbol": "CHF"
+ },
+ "FJD": {
+ "name": "FJD",
+ "symbol": "FJD"
+ },
+ "FKP": {
+ "name": "FKP",
+ "symbol": "FKP"
+ },
+ "GEL": {
+ "name": "GEL",
+ "symbol": "GEL"
+ },
+ "GHS": {
+ "name": "GHS",
+ "symbol": "GHS"
+ },
+ "GIP": {
+ "name": "GIP",
+ "symbol": "GIP"
+ },
+ "GNF": {
+ "name": "GNF",
+ "symbol": "GNF"
+ },
+ "GTQ": {
+ "name": "GTQ",
+ "symbol": "GTQ"
+ },
+ "GYD": {
+ "name": "GYD",
+ "symbol": "GYD"
+ },
+ "HKD": {
+ "name": "HKD",
+ "symbol": "HK$"
+ },
+ "HNL": {
+ "name": "HNL",
+ "symbol": "HNL"
+ },
+ "HRK": {
+ "name": "HRK",
+ "symbol": "HRK"
+ },
+ "HTG": {
+ "name": "HTG",
+ "symbol": "HTG"
+ },
+ "HUF": {
+ "name": "HUF",
+ "symbol": "HUF"
+ },
+ "IDR": {
+ "name": "IDR",
+ "symbol": "IDR"
+ },
+ "ILS": {
+ "name": "ILS",
+ "symbol": "₪"
+ },
+ "IQD": {
+ "name": "IQD",
+ "symbol": "IQD"
+ },
+ "IRR": {
+ "name": "IRR",
+ "symbol": "IRR"
+ },
+ "ISK": {
+ "name": "ISK",
+ "symbol": "ISK"
+ },
+ "JMD": {
+ "name": "JMD",
+ "symbol": "JMD"
+ },
+ "JOD": {
+ "name": "JOD",
+ "symbol": "JOD"
+ },
+ "KGS": {
+ "name": "KGS",
+ "symbol": "KGS"
+ },
+ "KHR": {
+ "name": "KHR",
+ "symbol": "KHR"
+ },
+ "KPW": {
+ "name": "KPW",
+ "symbol": "KPW"
+ },
+ "KRW": {
+ "name": "KRW",
+ "symbol": "â‚©"
+ },
+ "MWK": {
+ "name": "Kwacha ya Malawi",
+ "symbol": "MWK"
+ },
+ "ZMW": {
+ "name": "Kwacha ya Zambia",
+ "symbol": "ZMW"
+ },
+ "AOA": {
+ "name": "Kwanza ya Angola",
+ "symbol": "AOA"
+ },
+ "KWD": {
+ "name": "KWD",
+ "symbol": "KWD"
+ },
+ "KYD": {
+ "name": "KYD",
+ "symbol": "KYD"
+ },
+ "KZT": {
+ "name": "KZT",
+ "symbol": "KZT"
+ },
+ "LAK": {
+ "name": "LAK",
+ "symbol": "LAK"
+ },
+ "LBP": {
+ "name": "LBP",
+ "symbol": "LBP"
+ },
+ "SLL": {
+ "name": "Leoni",
+ "symbol": "SLL"
+ },
+ "SZL": {
+ "name": "Lilangeni",
+ "symbol": "SZL"
+ },
+ "LKR": {
+ "name": "LKR",
+ "symbol": "LKR"
+ },
+ "LSL": {
+ "name": "Loti ya Lesoto",
+ "symbol": "LSL"
+ },
+ "LTL": {
+ "name": "LTL",
+ "symbol": "LTL"
+ },
+ "MDL": {
+ "name": "MDL",
+ "symbol": "MDL"
+ },
+ "MKD": {
+ "name": "MKD",
+ "symbol": "MKD"
+ },
+ "MMK": {
+ "name": "MMK",
+ "symbol": "MMK"
+ },
+ "MNT": {
+ "name": "MNT",
+ "symbol": "MNT"
+ },
+ "MOP": {
+ "name": "MOP",
+ "symbol": "MOP"
+ },
+ "MVR": {
+ "name": "MVR",
+ "symbol": "MVR"
+ },
+ "MXN": {
+ "name": "MXN",
+ "symbol": "MX$"
+ },
+ "MYR": {
+ "name": "MYR",
+ "symbol": "MYR"
+ },
+ "MZN": {
+ "name": "MZN",
+ "symbol": "MZN"
+ },
+ "NGN": {
+ "name": "Naira ya Nijeria",
+ "symbol": "NGN"
+ },
+ "ERN": {
+ "name": "Nakfa ya Eritrea",
+ "symbol": "ERN"
+ },
+ "NIO": {
+ "name": "NIO",
+ "symbol": "NIO"
+ },
+ "NOK": {
+ "name": "NOK",
+ "symbol": "NOK"
+ },
+ "NPR": {
+ "name": "NPR",
+ "symbol": "NPR"
+ },
+ "NZD": {
+ "name": "NZD",
+ "symbol": "NZ$"
+ },
+ "OMR": {
+ "name": "OMR",
+ "symbol": "OMR"
+ },
+ "PAB": {
+ "name": "PAB",
+ "symbol": "PAB"
+ },
+ "EGP": {
+ "name": "Paũndi ya Misri",
+ "symbol": "EGP"
+ },
+ "GBP": {
+ "name": "Paũndi ya Ngeretha",
+ "symbol": "£"
+ },
+ "SHP": {
+ "name": "Paũndi ya Santahelena",
+ "symbol": "SHP"
+ },
+ "SDG": {
+ "name": "Paũndi ya Sudani",
+ "symbol": "SDG"
+ },
+ "PEN": {
+ "name": "PEN",
+ "symbol": "PEN"
+ },
+ "PGK": {
+ "name": "PGK",
+ "symbol": "PGK"
+ },
+ "PHP": {
+ "name": "PHP",
+ "symbol": "PHP"
+ },
+ "PKR": {
+ "name": "PKR",
+ "symbol": "PKR"
+ },
+ "PLN": {
+ "name": "PLN",
+ "symbol": "PLN"
+ },
+ "BWP": {
+ "name": "Pula ya Botswana",
+ "symbol": "BWP"
+ },
+ "PYG": {
+ "name": "PYG",
+ "symbol": "PYG"
+ },
+ "QAR": {
+ "name": "QAR",
+ "symbol": "QAR"
+ },
+ "ZAR": {
+ "name": "Randi ya Afrika ya Sauthi",
+ "symbol": "ZAR"
+ },
+ "SAR": {
+ "name": "Riyal ya Saudi Arĩbia",
+ "symbol": "SAR"
+ },
+ "RON": {
+ "name": "RON",
+ "symbol": "RON"
+ },
+ "RSD": {
+ "name": "RSD",
+ "symbol": "RSD"
+ },
+ "RUB": {
+ "name": "RUB",
+ "symbol": "RUB"
+ },
+ "INR": {
+ "name": "Rupia ya India",
+ "symbol": "₹"
+ },
+ "MUR": {
+ "name": "Rupia ya Maurĩtiasi",
+ "symbol": "MUR"
+ },
+ "SCR": {
+ "name": "Rupia ya Shelisheli",
+ "symbol": "SCR"
+ },
+ "JPY": {
+ "name": "Sarafu ya japani",
+ "symbol": "JPÂ¥"
+ },
+ "SBD": {
+ "name": "SBD",
+ "symbol": "SBD"
+ },
+ "SEK": {
+ "name": "SEK",
+ "symbol": "SEK"
+ },
+ "SGD": {
+ "name": "SGD",
+ "symbol": "SGD"
+ },
+ "KES": {
+ "name": "Shilingi ya Kenya",
+ "symbol": "Ksh"
+ },
+ "SOS": {
+ "name": "Shilingi ya Somalia",
+ "symbol": "SOS"
+ },
+ "TZS": {
+ "name": "Shilingi ya Tanzania",
+ "symbol": "TZS"
+ },
+ "UGX": {
+ "name": "Shilingi ya Uganda",
+ "symbol": "UGX"
+ },
+ "SRD": {
+ "name": "SRD",
+ "symbol": "SRD"
+ },
+ "SSP": {
+ "name": "SSP",
+ "symbol": "SSP"
+ },
+ "SVC": {
+ "name": "SVC",
+ "symbol": "SVC"
+ },
+ "SYP": {
+ "name": "SYP",
+ "symbol": "SYP"
+ },
+ "THB": {
+ "name": "THB",
+ "symbol": "THB"
+ },
+ "TJS": {
+ "name": "TJS",
+ "symbol": "TJS"
+ },
+ "TMT": {
+ "name": "TMT",
+ "symbol": "TMT"
+ },
+ "TOP": {
+ "name": "TOP",
+ "symbol": "TOP"
+ },
+ "TRY": {
+ "name": "TRY",
+ "symbol": "TRY"
+ },
+ "TTD": {
+ "name": "TTD",
+ "symbol": "TTD"
+ },
+ "TWD": {
+ "name": "TWD",
+ "symbol": "NT$"
+ },
+ "UAH": {
+ "name": "UAH",
+ "symbol": "UAH"
+ },
+ "MRO": {
+ "name": "Ugwiya ya Mauritania",
+ "symbol": "MRO"
+ },
+ "UYU": {
+ "name": "UYU",
+ "symbol": "UYU"
+ },
+ "UZS": {
+ "name": "UZS",
+ "symbol": "UZS"
+ },
+ "VEF": {
+ "name": "VEF",
+ "symbol": "VEF"
+ },
+ "VND": {
+ "name": "VND",
+ "symbol": "â‚«"
+ },
+ "VUV": {
+ "name": "VUV",
+ "symbol": "VUV"
+ },
+ "WST": {
+ "name": "WST",
+ "symbol": "WST"
+ },
+ "XCD": {
+ "name": "XCD",
+ "symbol": "EC$"
+ },
+ "XPF": {
+ "name": "XPF",
+ "symbol": "CFPF"
+ },
+ "YER": {
+ "name": "YER",
+ "symbol": "YER"
+ },
+ "CNY": {
+ "name": "Yuan Renminbi ya China",
+ "symbol": "CNÂ¥"
+ },
+ "EUR": {
+ "name": "Yuro",
+ "symbol": "€"
+ },
+ "ZWL": {
+ "name": "ZWL",
+ "symbol": "ZWL"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/currency/mfe.json b/library/intl/resources/currency/mfe.json
new file mode 100644
index 000000000..9bde9c3cf
--- /dev/null
+++ b/library/intl/resources/currency/mfe.json
@@ -0,0 +1,634 @@
+{
+ "AFN": {
+ "name": "AFN",
+ "symbol": "AFN"
+ },
+ "ALL": {
+ "name": "ALL",
+ "symbol": "ALL"
+ },
+ "AMD": {
+ "name": "AMD",
+ "symbol": "AMD"
+ },
+ "ANG": {
+ "name": "ANG",
+ "symbol": "ANG"
+ },
+ "ARS": {
+ "name": "ARS",
+ "symbol": "ARS"
+ },
+ "AWG": {
+ "name": "AWG",
+ "symbol": "AWG"
+ },
+ "AZN": {
+ "name": "AZN",
+ "symbol": "AZN"
+ },
+ "BAM": {
+ "name": "BAM",
+ "symbol": "BAM"
+ },
+ "BBD": {
+ "name": "BBD",
+ "symbol": "BBD"
+ },
+ "BDT": {
+ "name": "BDT",
+ "symbol": "BDT"
+ },
+ "BGN": {
+ "name": "BGN",
+ "symbol": "BGN"
+ },
+ "ETB": {
+ "name": "birr etiopien",
+ "symbol": "ETB"
+ },
+ "BMD": {
+ "name": "BMD",
+ "symbol": "BMD"
+ },
+ "BND": {
+ "name": "BND",
+ "symbol": "BND"
+ },
+ "BOB": {
+ "name": "BOB",
+ "symbol": "BOB"
+ },
+ "BRL": {
+ "name": "BRL",
+ "symbol": "R$"
+ },
+ "BSD": {
+ "name": "BSD",
+ "symbol": "BSD"
+ },
+ "BTN": {
+ "name": "BTN",
+ "symbol": "BTN"
+ },
+ "BYR": {
+ "name": "BYR",
+ "symbol": "BYR"
+ },
+ "BZD": {
+ "name": "BZD",
+ "symbol": "BZD"
+ },
+ "CLP": {
+ "name": "CLP",
+ "symbol": "CLP"
+ },
+ "COP": {
+ "name": "COP",
+ "symbol": "COP"
+ },
+ "CRC": {
+ "name": "CRC",
+ "symbol": "CRC"
+ },
+ "CUC": {
+ "name": "CUC",
+ "symbol": "CUC"
+ },
+ "CUP": {
+ "name": "CUP",
+ "symbol": "CUP"
+ },
+ "CZK": {
+ "name": "CZK",
+ "symbol": "CZK"
+ },
+ "GMD": {
+ "name": "dalasi gambien",
+ "symbol": "GMD"
+ },
+ "DZD": {
+ "name": "dinar alzerien",
+ "symbol": "DZD"
+ },
+ "BHD": {
+ "name": "dinar bahreïn",
+ "symbol": "BHD"
+ },
+ "LYD": {
+ "name": "dinar libien",
+ "symbol": "LYD"
+ },
+ "SDG": {
+ "name": "dinar soudane",
+ "symbol": "SDG"
+ },
+ "TND": {
+ "name": "dinar tinizien",
+ "symbol": "TND"
+ },
+ "AED": {
+ "name": "dirham Emira arab ini",
+ "symbol": "AED"
+ },
+ "MAD": {
+ "name": "dirham marokin",
+ "symbol": "MAD"
+ },
+ "DKK": {
+ "name": "DKK",
+ "symbol": "DKK"
+ },
+ "STD": {
+ "name": "dobra santomeen",
+ "symbol": "STD"
+ },
+ "USD": {
+ "name": "dolar amerikin",
+ "symbol": "US$"
+ },
+ "CAD": {
+ "name": "dolar kanadien",
+ "symbol": "CA$"
+ },
+ "LRD": {
+ "name": "dolar liberien",
+ "symbol": "LRD"
+ },
+ "NAD": {
+ "name": "dolar namibien",
+ "symbol": "NAD"
+ },
+ "AUD": {
+ "name": "dolar ostralien",
+ "symbol": "A$"
+ },
+ "DOP": {
+ "name": "DOP",
+ "symbol": "DOP"
+ },
+ "CVE": {
+ "name": "eskudo kapverdien",
+ "symbol": "CVE"
+ },
+ "EUR": {
+ "name": "euro",
+ "symbol": "€"
+ },
+ "FJD": {
+ "name": "FJD",
+ "symbol": "FJD"
+ },
+ "FKP": {
+ "name": "FKP",
+ "symbol": "FKP"
+ },
+ "BIF": {
+ "name": "fran burunde",
+ "symbol": "BIF"
+ },
+ "XOF": {
+ "name": "fran CFA (BCEAO)",
+ "symbol": "CFA"
+ },
+ "XAF": {
+ "name": "fran CFA (BEAC)",
+ "symbol": "FCFA"
+ },
+ "DJF": {
+ "name": "fran djiboutien",
+ "symbol": "DJF"
+ },
+ "KMF": {
+ "name": "fran komorien",
+ "symbol": "KMF"
+ },
+ "CDF": {
+ "name": "fran kongole",
+ "symbol": "CDF"
+ },
+ "MGA": {
+ "name": "fran malgas",
+ "symbol": "MGA"
+ },
+ "RWF": {
+ "name": "fran rwande",
+ "symbol": "RWF"
+ },
+ "CHF": {
+ "name": "fran swis",
+ "symbol": "CHF"
+ },
+ "GEL": {
+ "name": "GEL",
+ "symbol": "GEL"
+ },
+ "GHS": {
+ "name": "GHS",
+ "symbol": "GHS"
+ },
+ "GIP": {
+ "name": "GIP",
+ "symbol": "GIP"
+ },
+ "GNF": {
+ "name": "GNF",
+ "symbol": "GNF"
+ },
+ "GTQ": {
+ "name": "GTQ",
+ "symbol": "GTQ"
+ },
+ "GYD": {
+ "name": "GYD",
+ "symbol": "GYD"
+ },
+ "HKD": {
+ "name": "HKD",
+ "symbol": "HK$"
+ },
+ "HNL": {
+ "name": "HNL",
+ "symbol": "HNL"
+ },
+ "HRK": {
+ "name": "HRK",
+ "symbol": "HRK"
+ },
+ "HTG": {
+ "name": "HTG",
+ "symbol": "HTG"
+ },
+ "HUF": {
+ "name": "HUF",
+ "symbol": "HUF"
+ },
+ "IDR": {
+ "name": "IDR",
+ "symbol": "IDR"
+ },
+ "ILS": {
+ "name": "ILS",
+ "symbol": "₪"
+ },
+ "IQD": {
+ "name": "IQD",
+ "symbol": "IQD"
+ },
+ "IRR": {
+ "name": "IRR",
+ "symbol": "IRR"
+ },
+ "ISK": {
+ "name": "ISK",
+ "symbol": "ISK"
+ },
+ "JMD": {
+ "name": "JMD",
+ "symbol": "JMD"
+ },
+ "JOD": {
+ "name": "JOD",
+ "symbol": "JOD"
+ },
+ "KGS": {
+ "name": "KGS",
+ "symbol": "KGS"
+ },
+ "KHR": {
+ "name": "KHR",
+ "symbol": "KHR"
+ },
+ "KPW": {
+ "name": "KPW",
+ "symbol": "KPW"
+ },
+ "KRW": {
+ "name": "KRW",
+ "symbol": "â‚©"
+ },
+ "MWK": {
+ "name": "kwacha malawit",
+ "symbol": "MWK"
+ },
+ "ZMW": {
+ "name": "kwacha zanbien",
+ "symbol": "ZMW"
+ },
+ "AOA": {
+ "name": "kwanza angole",
+ "symbol": "AOA"
+ },
+ "KWD": {
+ "name": "KWD",
+ "symbol": "KWD"
+ },
+ "KYD": {
+ "name": "KYD",
+ "symbol": "KYD"
+ },
+ "KZT": {
+ "name": "KZT",
+ "symbol": "KZT"
+ },
+ "LAK": {
+ "name": "LAK",
+ "symbol": "LAK"
+ },
+ "LBP": {
+ "name": "LBP",
+ "symbol": "LBP"
+ },
+ "SLL": {
+ "name": "leonn Sierra-Leone",
+ "symbol": "SLL"
+ },
+ "SZL": {
+ "name": "lilangeni swazi",
+ "symbol": "SZL"
+ },
+ "EGP": {
+ "name": "liv ezipsien",
+ "symbol": "EGP"
+ },
+ "SHP": {
+ "name": "liv Sainte-Hélène",
+ "symbol": "SHP"
+ },
+ "GBP": {
+ "name": "liv sterlin",
+ "symbol": "£"
+ },
+ "LKR": {
+ "name": "LKR",
+ "symbol": "LKR"
+ },
+ "LSL": {
+ "name": "loti lezoto",
+ "symbol": "LSL"
+ },
+ "LTL": {
+ "name": "LTL",
+ "symbol": "LTL"
+ },
+ "MDL": {
+ "name": "MDL",
+ "symbol": "MDL"
+ },
+ "MKD": {
+ "name": "MKD",
+ "symbol": "MKD"
+ },
+ "MMK": {
+ "name": "MMK",
+ "symbol": "MMK"
+ },
+ "MNT": {
+ "name": "MNT",
+ "symbol": "MNT"
+ },
+ "MOP": {
+ "name": "MOP",
+ "symbol": "MOP"
+ },
+ "MVR": {
+ "name": "MVR",
+ "symbol": "MVR"
+ },
+ "MXN": {
+ "name": "MXN",
+ "symbol": "MX$"
+ },
+ "MYR": {
+ "name": "MYR",
+ "symbol": "MYR"
+ },
+ "MZN": {
+ "name": "MZN",
+ "symbol": "MZN"
+ },
+ "ERN": {
+ "name": "nafka erythreen",
+ "symbol": "ERN"
+ },
+ "NGN": {
+ "name": "naira nizerian",
+ "symbol": "NGN"
+ },
+ "NIO": {
+ "name": "NIO",
+ "symbol": "NIO"
+ },
+ "NOK": {
+ "name": "NOK",
+ "symbol": "NOK"
+ },
+ "NPR": {
+ "name": "NPR",
+ "symbol": "NPR"
+ },
+ "NZD": {
+ "name": "NZD",
+ "symbol": "NZ$"
+ },
+ "OMR": {
+ "name": "OMR",
+ "symbol": "OMR"
+ },
+ "MRO": {
+ "name": "ouguiya moritanien",
+ "symbol": "MRO"
+ },
+ "PAB": {
+ "name": "PAB",
+ "symbol": "PAB"
+ },
+ "PEN": {
+ "name": "PEN",
+ "symbol": "PEN"
+ },
+ "PGK": {
+ "name": "PGK",
+ "symbol": "PGK"
+ },
+ "PHP": {
+ "name": "PHP",
+ "symbol": "PHP"
+ },
+ "PKR": {
+ "name": "PKR",
+ "symbol": "PKR"
+ },
+ "PLN": {
+ "name": "PLN",
+ "symbol": "PLN"
+ },
+ "BWP": {
+ "name": "pula ya botswane",
+ "symbol": "BWP"
+ },
+ "PYG": {
+ "name": "PYG",
+ "symbol": "PYG"
+ },
+ "QAR": {
+ "name": "QAR",
+ "symbol": "QAR"
+ },
+ "ZAR": {
+ "name": "rand sid-afrikin",
+ "symbol": "ZAR"
+ },
+ "SAR": {
+ "name": "rial saoudien",
+ "symbol": "SAR"
+ },
+ "RON": {
+ "name": "RON",
+ "symbol": "RON"
+ },
+ "INR": {
+ "name": "roupi",
+ "symbol": "₹"
+ },
+ "MUR": {
+ "name": "roupi morisien",
+ "symbol": "Rs"
+ },
+ "SCR": {
+ "name": "roupi seselwa",
+ "symbol": "SCR"
+ },
+ "RSD": {
+ "name": "RSD",
+ "symbol": "RSD"
+ },
+ "RUB": {
+ "name": "RUB",
+ "symbol": "RUB"
+ },
+ "SBD": {
+ "name": "SBD",
+ "symbol": "SBD"
+ },
+ "SEK": {
+ "name": "SEK",
+ "symbol": "SEK"
+ },
+ "SGD": {
+ "name": "SGD",
+ "symbol": "SGD"
+ },
+ "KES": {
+ "name": "shiling kenyan",
+ "symbol": "KES"
+ },
+ "UGX": {
+ "name": "shiling ougande",
+ "symbol": "UGX"
+ },
+ "TZS": {
+ "name": "shiling tanzanien",
+ "symbol": "TZS"
+ },
+ "SOS": {
+ "name": "shilingi somalien",
+ "symbol": "SOS"
+ },
+ "SRD": {
+ "name": "SRD",
+ "symbol": "SRD"
+ },
+ "SSP": {
+ "name": "SSP",
+ "symbol": "SSP"
+ },
+ "SVC": {
+ "name": "SVC",
+ "symbol": "SVC"
+ },
+ "SYP": {
+ "name": "SYP",
+ "symbol": "SYP"
+ },
+ "THB": {
+ "name": "THB",
+ "symbol": "THB"
+ },
+ "TJS": {
+ "name": "TJS",
+ "symbol": "TJS"
+ },
+ "TMT": {
+ "name": "TMT",
+ "symbol": "TMT"
+ },
+ "TOP": {
+ "name": "TOP",
+ "symbol": "TOP"
+ },
+ "TRY": {
+ "name": "TRY",
+ "symbol": "TRY"
+ },
+ "TTD": {
+ "name": "TTD",
+ "symbol": "TTD"
+ },
+ "TWD": {
+ "name": "TWD",
+ "symbol": "NT$"
+ },
+ "UAH": {
+ "name": "UAH",
+ "symbol": "UAH"
+ },
+ "UYU": {
+ "name": "UYU",
+ "symbol": "UYU"
+ },
+ "UZS": {
+ "name": "UZS",
+ "symbol": "UZS"
+ },
+ "VEF": {
+ "name": "VEF",
+ "symbol": "VEF"
+ },
+ "VND": {
+ "name": "VND",
+ "symbol": "â‚«"
+ },
+ "VUV": {
+ "name": "VUV",
+ "symbol": "VUV"
+ },
+ "WST": {
+ "name": "WST",
+ "symbol": "WST"
+ },
+ "XCD": {
+ "name": "XCD",
+ "symbol": "EC$"
+ },
+ "XPF": {
+ "name": "XPF",
+ "symbol": "CFPF"
+ },
+ "JPY": {
+ "name": "yen zapone",
+ "symbol": "JPÂ¥"
+ },
+ "YER": {
+ "name": "YER",
+ "symbol": "YER"
+ },
+ "CNY": {
+ "name": "yuan renminbi sinwa",
+ "symbol": "CNÂ¥"
+ },
+ "ZWL": {
+ "name": "ZWL",
+ "symbol": "ZWL"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/currency/mg.json b/library/intl/resources/currency/mg.json
new file mode 100644
index 000000000..d652606bb
--- /dev/null
+++ b/library/intl/resources/currency/mg.json
@@ -0,0 +1,634 @@
+{
+ "AFN": {
+ "name": "AFN",
+ "symbol": "AFN"
+ },
+ "ALL": {
+ "name": "ALL",
+ "symbol": "ALL"
+ },
+ "AMD": {
+ "name": "AMD",
+ "symbol": "AMD"
+ },
+ "ANG": {
+ "name": "ANG",
+ "symbol": "ANG"
+ },
+ "MGA": {
+ "name": "Ariary",
+ "symbol": "Ar"
+ },
+ "ARS": {
+ "name": "ARS",
+ "symbol": "ARS"
+ },
+ "AWG": {
+ "name": "AWG",
+ "symbol": "AWG"
+ },
+ "AZN": {
+ "name": "AZN",
+ "symbol": "AZN"
+ },
+ "BAM": {
+ "name": "BAM",
+ "symbol": "BAM"
+ },
+ "BBD": {
+ "name": "BBD",
+ "symbol": "BBD"
+ },
+ "BDT": {
+ "name": "BDT",
+ "symbol": "BDT"
+ },
+ "BGN": {
+ "name": "BGN",
+ "symbol": "BGN"
+ },
+ "ETB": {
+ "name": "Bir etiopianina",
+ "symbol": "ETB"
+ },
+ "BMD": {
+ "name": "BMD",
+ "symbol": "BMD"
+ },
+ "BND": {
+ "name": "BND",
+ "symbol": "BND"
+ },
+ "BOB": {
+ "name": "BOB",
+ "symbol": "BOB"
+ },
+ "BRL": {
+ "name": "BRL",
+ "symbol": "R$"
+ },
+ "BSD": {
+ "name": "BSD",
+ "symbol": "BSD"
+ },
+ "BTN": {
+ "name": "BTN",
+ "symbol": "BTN"
+ },
+ "BYR": {
+ "name": "BYR",
+ "symbol": "BYR"
+ },
+ "BZD": {
+ "name": "BZD",
+ "symbol": "BZD"
+ },
+ "CLP": {
+ "name": "CLP",
+ "symbol": "CLP"
+ },
+ "COP": {
+ "name": "COP",
+ "symbol": "COP"
+ },
+ "CRC": {
+ "name": "CRC",
+ "symbol": "CRC"
+ },
+ "CUC": {
+ "name": "CUC",
+ "symbol": "CUC"
+ },
+ "CUP": {
+ "name": "CUP",
+ "symbol": "CUP"
+ },
+ "CZK": {
+ "name": "CZK",
+ "symbol": "CZK"
+ },
+ "GMD": {
+ "name": "Dalasi gambianina",
+ "symbol": "GMD"
+ },
+ "BHD": {
+ "name": "dinar bahreïni",
+ "symbol": "BHD"
+ },
+ "TND": {
+ "name": "Dinar tonizianina",
+ "symbol": "TND"
+ },
+ "DZD": {
+ "name": "Dinara alzerianina",
+ "symbol": "DZD"
+ },
+ "LYD": {
+ "name": "Dinara Libyanina",
+ "symbol": "LYD"
+ },
+ "SDG": {
+ "name": "Dinara Sodaney",
+ "symbol": "SDG"
+ },
+ "AED": {
+ "name": "Dirham",
+ "symbol": "AED"
+ },
+ "MAD": {
+ "name": "Dirham marokianina",
+ "symbol": "MAD"
+ },
+ "DKK": {
+ "name": "DKK",
+ "symbol": "DKK"
+ },
+ "STD": {
+ "name": "Dobra",
+ "symbol": "STD"
+ },
+ "USD": {
+ "name": "Dolara amerikanina",
+ "symbol": "US$"
+ },
+ "AUD": {
+ "name": "Dolara aostralianina",
+ "symbol": "A$"
+ },
+ "CAD": {
+ "name": "Dôlara Kanadianina",
+ "symbol": "CA$"
+ },
+ "LRD": {
+ "name": "Dôlara Liberianina",
+ "symbol": "LRD"
+ },
+ "NAD": {
+ "name": "Dolara namibianina",
+ "symbol": "NAD"
+ },
+ "DOP": {
+ "name": "DOP",
+ "symbol": "DOP"
+ },
+ "EUR": {
+ "name": "Eoro",
+ "symbol": "€"
+ },
+ "CVE": {
+ "name": "Escudo",
+ "symbol": "CVE"
+ },
+ "BIF": {
+ "name": "Farantsa Borondi",
+ "symbol": "BIF"
+ },
+ "XOF": {
+ "name": "Farantsa CFA (BCEAO)",
+ "symbol": "CFA"
+ },
+ "XAF": {
+ "name": "Farantsa CFA (BEAC)",
+ "symbol": "FCFA"
+ },
+ "DJF": {
+ "name": "Farantsa Djibotianina",
+ "symbol": "DJF"
+ },
+ "KMF": {
+ "name": "Farantsa Komorianina",
+ "symbol": "KMF"
+ },
+ "CDF": {
+ "name": "Farantsa kôngôley",
+ "symbol": "CDF"
+ },
+ "RWF": {
+ "name": "Farantsa Roande",
+ "symbol": "RWF"
+ },
+ "CHF": {
+ "name": "Farantsa soisa",
+ "symbol": "CHF"
+ },
+ "FJD": {
+ "name": "FJD",
+ "symbol": "FJD"
+ },
+ "FKP": {
+ "name": "FKP",
+ "symbol": "FKP"
+ },
+ "GEL": {
+ "name": "GEL",
+ "symbol": "GEL"
+ },
+ "GHS": {
+ "name": "GHS",
+ "symbol": "GHS"
+ },
+ "GIP": {
+ "name": "GIP",
+ "symbol": "GIP"
+ },
+ "GNF": {
+ "name": "GNF",
+ "symbol": "GNF"
+ },
+ "GTQ": {
+ "name": "GTQ",
+ "symbol": "GTQ"
+ },
+ "GYD": {
+ "name": "GYD",
+ "symbol": "GYD"
+ },
+ "HKD": {
+ "name": "HKD",
+ "symbol": "HK$"
+ },
+ "HNL": {
+ "name": "HNL",
+ "symbol": "HNL"
+ },
+ "HRK": {
+ "name": "HRK",
+ "symbol": "HRK"
+ },
+ "HTG": {
+ "name": "HTG",
+ "symbol": "HTG"
+ },
+ "HUF": {
+ "name": "HUF",
+ "symbol": "HUF"
+ },
+ "IDR": {
+ "name": "IDR",
+ "symbol": "IDR"
+ },
+ "ILS": {
+ "name": "ILS",
+ "symbol": "₪"
+ },
+ "IQD": {
+ "name": "IQD",
+ "symbol": "IQD"
+ },
+ "IRR": {
+ "name": "IRR",
+ "symbol": "IRR"
+ },
+ "ISK": {
+ "name": "ISK",
+ "symbol": "ISK"
+ },
+ "JMD": {
+ "name": "JMD",
+ "symbol": "JMD"
+ },
+ "JOD": {
+ "name": "JOD",
+ "symbol": "JOD"
+ },
+ "KGS": {
+ "name": "KGS",
+ "symbol": "KGS"
+ },
+ "KHR": {
+ "name": "KHR",
+ "symbol": "KHR"
+ },
+ "KPW": {
+ "name": "KPW",
+ "symbol": "KPW"
+ },
+ "KRW": {
+ "name": "KRW",
+ "symbol": "â‚©"
+ },
+ "MWK": {
+ "name": "kwacha malawite",
+ "symbol": "MWK"
+ },
+ "ZMW": {
+ "name": "Kwacha zambianina",
+ "symbol": "ZMW"
+ },
+ "AOA": {
+ "name": "kwanza angoley",
+ "symbol": "AOA"
+ },
+ "KWD": {
+ "name": "KWD",
+ "symbol": "KWD"
+ },
+ "KYD": {
+ "name": "KYD",
+ "symbol": "KYD"
+ },
+ "KZT": {
+ "name": "KZT",
+ "symbol": "KZT"
+ },
+ "LAK": {
+ "name": "LAK",
+ "symbol": "LAK"
+ },
+ "LBP": {
+ "name": "LBP",
+ "symbol": "LBP"
+ },
+ "SLL": {
+ "name": "Leone",
+ "symbol": "SLL"
+ },
+ "SZL": {
+ "name": "Lilangeni",
+ "symbol": "SZL"
+ },
+ "SHP": {
+ "name": "livre de Sainte-Hélène",
+ "symbol": "SHP"
+ },
+ "GBP": {
+ "name": "livre sterling",
+ "symbol": "£"
+ },
+ "LKR": {
+ "name": "LKR",
+ "symbol": "LKR"
+ },
+ "LSL": {
+ "name": "Loti",
+ "symbol": "LSL"
+ },
+ "LTL": {
+ "name": "LTL",
+ "symbol": "LTL"
+ },
+ "MDL": {
+ "name": "MDL",
+ "symbol": "MDL"
+ },
+ "MKD": {
+ "name": "MKD",
+ "symbol": "MKD"
+ },
+ "MMK": {
+ "name": "MMK",
+ "symbol": "MMK"
+ },
+ "MNT": {
+ "name": "MNT",
+ "symbol": "MNT"
+ },
+ "MOP": {
+ "name": "MOP",
+ "symbol": "MOP"
+ },
+ "MVR": {
+ "name": "MVR",
+ "symbol": "MVR"
+ },
+ "MXN": {
+ "name": "MXN",
+ "symbol": "MX$"
+ },
+ "MYR": {
+ "name": "MYR",
+ "symbol": "MYR"
+ },
+ "MZN": {
+ "name": "MZN",
+ "symbol": "MZN"
+ },
+ "NGN": {
+ "name": "Naira nigerianina",
+ "symbol": "NGN"
+ },
+ "ERN": {
+ "name": "Nakfà Eritreanina",
+ "symbol": "ERN"
+ },
+ "NIO": {
+ "name": "NIO",
+ "symbol": "NIO"
+ },
+ "NOK": {
+ "name": "NOK",
+ "symbol": "NOK"
+ },
+ "NPR": {
+ "name": "NPR",
+ "symbol": "NPR"
+ },
+ "NZD": {
+ "name": "NZD",
+ "symbol": "NZ$"
+ },
+ "OMR": {
+ "name": "OMR",
+ "symbol": "OMR"
+ },
+ "MRO": {
+ "name": "Ouguiya moritanianina",
+ "symbol": "MRO"
+ },
+ "PAB": {
+ "name": "PAB",
+ "symbol": "PAB"
+ },
+ "PEN": {
+ "name": "PEN",
+ "symbol": "PEN"
+ },
+ "PGK": {
+ "name": "PGK",
+ "symbol": "PGK"
+ },
+ "PHP": {
+ "name": "PHP",
+ "symbol": "PHP"
+ },
+ "PKR": {
+ "name": "PKR",
+ "symbol": "PKR"
+ },
+ "PLN": {
+ "name": "PLN",
+ "symbol": "PLN"
+ },
+ "BWP": {
+ "name": "Pola botsoaney",
+ "symbol": "BWP"
+ },
+ "PYG": {
+ "name": "PYG",
+ "symbol": "PYG"
+ },
+ "QAR": {
+ "name": "QAR",
+ "symbol": "QAR"
+ },
+ "ZAR": {
+ "name": "Rand afrikanina tatsimo",
+ "symbol": "ZAR"
+ },
+ "SAR": {
+ "name": "Rial saodianina",
+ "symbol": "SAR"
+ },
+ "RON": {
+ "name": "RON",
+ "symbol": "RON"
+ },
+ "INR": {
+ "name": "Ropia Indianina",
+ "symbol": "₹"
+ },
+ "MUR": {
+ "name": "Ropia maorisianina",
+ "symbol": "MUR"
+ },
+ "SCR": {
+ "name": "Ropia Seysheloà",
+ "symbol": "SCR"
+ },
+ "RSD": {
+ "name": "RSD",
+ "symbol": "RSD"
+ },
+ "RUB": {
+ "name": "RUB",
+ "symbol": "RUB"
+ },
+ "SBD": {
+ "name": "SBD",
+ "symbol": "SBD"
+ },
+ "SEK": {
+ "name": "SEK",
+ "symbol": "SEK"
+ },
+ "SGD": {
+ "name": "SGD",
+ "symbol": "SGD"
+ },
+ "KES": {
+ "name": "Shilling kenianina",
+ "symbol": "KES"
+ },
+ "UGX": {
+ "name": "Shilling ogandianina",
+ "symbol": "UGX"
+ },
+ "SOS": {
+ "name": "Shilling somalianina",
+ "symbol": "SOS"
+ },
+ "TZS": {
+ "name": "Shilling tanzanianina",
+ "symbol": "TZS"
+ },
+ "SRD": {
+ "name": "SRD",
+ "symbol": "SRD"
+ },
+ "SSP": {
+ "name": "SSP",
+ "symbol": "SSP"
+ },
+ "SVC": {
+ "name": "SVC",
+ "symbol": "SVC"
+ },
+ "SYP": {
+ "name": "SYP",
+ "symbol": "SYP"
+ },
+ "THB": {
+ "name": "THB",
+ "symbol": "THB"
+ },
+ "TJS": {
+ "name": "TJS",
+ "symbol": "TJS"
+ },
+ "TMT": {
+ "name": "TMT",
+ "symbol": "TMT"
+ },
+ "TOP": {
+ "name": "TOP",
+ "symbol": "TOP"
+ },
+ "TRY": {
+ "name": "TRY",
+ "symbol": "TRY"
+ },
+ "TTD": {
+ "name": "TTD",
+ "symbol": "TTD"
+ },
+ "TWD": {
+ "name": "TWD",
+ "symbol": "NT$"
+ },
+ "UAH": {
+ "name": "UAH",
+ "symbol": "UAH"
+ },
+ "UYU": {
+ "name": "UYU",
+ "symbol": "UYU"
+ },
+ "UZS": {
+ "name": "UZS",
+ "symbol": "UZS"
+ },
+ "VEF": {
+ "name": "VEF",
+ "symbol": "VEF"
+ },
+ "VND": {
+ "name": "VND",
+ "symbol": "â‚«"
+ },
+ "EGP": {
+ "name": "vola venty ejipsiana",
+ "symbol": "EGP"
+ },
+ "VUV": {
+ "name": "VUV",
+ "symbol": "VUV"
+ },
+ "WST": {
+ "name": "WST",
+ "symbol": "WST"
+ },
+ "XCD": {
+ "name": "XCD",
+ "symbol": "EC$"
+ },
+ "XPF": {
+ "name": "XPF",
+ "symbol": "CFPF"
+ },
+ "JPY": {
+ "name": "Yen Japoney",
+ "symbol": "JPÂ¥"
+ },
+ "YER": {
+ "name": "YER",
+ "symbol": "YER"
+ },
+ "CNY": {
+ "name": "Yoan sinoa Renminbi",
+ "symbol": "CNÂ¥"
+ },
+ "ZWL": {
+ "name": "ZWL",
+ "symbol": "ZWL"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/currency/mgh.json b/library/intl/resources/currency/mgh.json
new file mode 100644
index 000000000..787e5005c
--- /dev/null
+++ b/library/intl/resources/currency/mgh.json
@@ -0,0 +1,634 @@
+{
+ "AED": {
+ "name": "AED",
+ "symbol": "AED"
+ },
+ "AFN": {
+ "name": "AFN",
+ "symbol": "AFN"
+ },
+ "ALL": {
+ "name": "ALL",
+ "symbol": "ALL"
+ },
+ "AMD": {
+ "name": "AMD",
+ "symbol": "AMD"
+ },
+ "ANG": {
+ "name": "ANG",
+ "symbol": "ANG"
+ },
+ "AOA": {
+ "name": "AOA",
+ "symbol": "AOA"
+ },
+ "ARS": {
+ "name": "ARS",
+ "symbol": "ARS"
+ },
+ "AUD": {
+ "name": "AUD",
+ "symbol": "A$"
+ },
+ "AWG": {
+ "name": "AWG",
+ "symbol": "AWG"
+ },
+ "AZN": {
+ "name": "AZN",
+ "symbol": "AZN"
+ },
+ "BAM": {
+ "name": "BAM",
+ "symbol": "BAM"
+ },
+ "BBD": {
+ "name": "BBD",
+ "symbol": "BBD"
+ },
+ "BDT": {
+ "name": "BDT",
+ "symbol": "BDT"
+ },
+ "BGN": {
+ "name": "BGN",
+ "symbol": "BGN"
+ },
+ "BHD": {
+ "name": "BHD",
+ "symbol": "BHD"
+ },
+ "BIF": {
+ "name": "BIF",
+ "symbol": "BIF"
+ },
+ "BMD": {
+ "name": "BMD",
+ "symbol": "BMD"
+ },
+ "BND": {
+ "name": "BND",
+ "symbol": "BND"
+ },
+ "BOB": {
+ "name": "BOB",
+ "symbol": "BOB"
+ },
+ "BRL": {
+ "name": "BRL",
+ "symbol": "R$"
+ },
+ "BSD": {
+ "name": "BSD",
+ "symbol": "BSD"
+ },
+ "BTN": {
+ "name": "BTN",
+ "symbol": "BTN"
+ },
+ "BWP": {
+ "name": "BWP",
+ "symbol": "BWP"
+ },
+ "BYR": {
+ "name": "BYR",
+ "symbol": "BYR"
+ },
+ "BZD": {
+ "name": "BZD",
+ "symbol": "BZD"
+ },
+ "CAD": {
+ "name": "CAD",
+ "symbol": "CA$"
+ },
+ "CDF": {
+ "name": "CDF",
+ "symbol": "CDF"
+ },
+ "CHF": {
+ "name": "CHF",
+ "symbol": "CHF"
+ },
+ "CLP": {
+ "name": "CLP",
+ "symbol": "CLP"
+ },
+ "CNY": {
+ "name": "CNY",
+ "symbol": "CNÂ¥"
+ },
+ "COP": {
+ "name": "COP",
+ "symbol": "COP"
+ },
+ "CRC": {
+ "name": "CRC",
+ "symbol": "CRC"
+ },
+ "CUC": {
+ "name": "CUC",
+ "symbol": "CUC"
+ },
+ "CUP": {
+ "name": "CUP",
+ "symbol": "CUP"
+ },
+ "CVE": {
+ "name": "CVE",
+ "symbol": "CVE"
+ },
+ "CZK": {
+ "name": "CZK",
+ "symbol": "CZK"
+ },
+ "DJF": {
+ "name": "DJF",
+ "symbol": "DJF"
+ },
+ "DKK": {
+ "name": "DKK",
+ "symbol": "DKK"
+ },
+ "DOP": {
+ "name": "DOP",
+ "symbol": "DOP"
+ },
+ "DZD": {
+ "name": "DZD",
+ "symbol": "DZD"
+ },
+ "EGP": {
+ "name": "EGP",
+ "symbol": "EGP"
+ },
+ "ERN": {
+ "name": "ERN",
+ "symbol": "ERN"
+ },
+ "ETB": {
+ "name": "ETB",
+ "symbol": "ETB"
+ },
+ "EUR": {
+ "name": "EUR",
+ "symbol": "€"
+ },
+ "FJD": {
+ "name": "FJD",
+ "symbol": "FJD"
+ },
+ "FKP": {
+ "name": "FKP",
+ "symbol": "FKP"
+ },
+ "GBP": {
+ "name": "GBP",
+ "symbol": "£"
+ },
+ "GEL": {
+ "name": "GEL",
+ "symbol": "GEL"
+ },
+ "GHS": {
+ "name": "GHS",
+ "symbol": "GHS"
+ },
+ "GIP": {
+ "name": "GIP",
+ "symbol": "GIP"
+ },
+ "GMD": {
+ "name": "GMD",
+ "symbol": "GMD"
+ },
+ "GNF": {
+ "name": "GNF",
+ "symbol": "GNF"
+ },
+ "GTQ": {
+ "name": "GTQ",
+ "symbol": "GTQ"
+ },
+ "GYD": {
+ "name": "GYD",
+ "symbol": "GYD"
+ },
+ "HKD": {
+ "name": "HKD",
+ "symbol": "HK$"
+ },
+ "HNL": {
+ "name": "HNL",
+ "symbol": "HNL"
+ },
+ "HRK": {
+ "name": "HRK",
+ "symbol": "HRK"
+ },
+ "HTG": {
+ "name": "HTG",
+ "symbol": "HTG"
+ },
+ "HUF": {
+ "name": "HUF",
+ "symbol": "HUF"
+ },
+ "IDR": {
+ "name": "IDR",
+ "symbol": "IDR"
+ },
+ "ILS": {
+ "name": "ILS",
+ "symbol": "₪"
+ },
+ "INR": {
+ "name": "INR",
+ "symbol": "₹"
+ },
+ "IQD": {
+ "name": "IQD",
+ "symbol": "IQD"
+ },
+ "IRR": {
+ "name": "IRR",
+ "symbol": "IRR"
+ },
+ "ISK": {
+ "name": "ISK",
+ "symbol": "ISK"
+ },
+ "JMD": {
+ "name": "JMD",
+ "symbol": "JMD"
+ },
+ "JOD": {
+ "name": "JOD",
+ "symbol": "JOD"
+ },
+ "JPY": {
+ "name": "JPY",
+ "symbol": "JPÂ¥"
+ },
+ "KES": {
+ "name": "KES",
+ "symbol": "KES"
+ },
+ "KGS": {
+ "name": "KGS",
+ "symbol": "KGS"
+ },
+ "KHR": {
+ "name": "KHR",
+ "symbol": "KHR"
+ },
+ "KMF": {
+ "name": "KMF",
+ "symbol": "KMF"
+ },
+ "KPW": {
+ "name": "KPW",
+ "symbol": "KPW"
+ },
+ "KRW": {
+ "name": "KRW",
+ "symbol": "â‚©"
+ },
+ "KWD": {
+ "name": "KWD",
+ "symbol": "KWD"
+ },
+ "KYD": {
+ "name": "KYD",
+ "symbol": "KYD"
+ },
+ "KZT": {
+ "name": "KZT",
+ "symbol": "KZT"
+ },
+ "LAK": {
+ "name": "LAK",
+ "symbol": "LAK"
+ },
+ "LBP": {
+ "name": "LBP",
+ "symbol": "LBP"
+ },
+ "LKR": {
+ "name": "LKR",
+ "symbol": "LKR"
+ },
+ "LRD": {
+ "name": "LRD",
+ "symbol": "LRD"
+ },
+ "LSL": {
+ "name": "LSL",
+ "symbol": "LSL"
+ },
+ "LTL": {
+ "name": "LTL",
+ "symbol": "LTL"
+ },
+ "LYD": {
+ "name": "LYD",
+ "symbol": "LYD"
+ },
+ "MAD": {
+ "name": "MAD",
+ "symbol": "MAD"
+ },
+ "MDL": {
+ "name": "MDL",
+ "symbol": "MDL"
+ },
+ "MGA": {
+ "name": "MGA",
+ "symbol": "MGA"
+ },
+ "MKD": {
+ "name": "MKD",
+ "symbol": "MKD"
+ },
+ "MMK": {
+ "name": "MMK",
+ "symbol": "MMK"
+ },
+ "MNT": {
+ "name": "MNT",
+ "symbol": "MNT"
+ },
+ "MOP": {
+ "name": "MOP",
+ "symbol": "MOP"
+ },
+ "MRO": {
+ "name": "MRO",
+ "symbol": "MRO"
+ },
+ "MUR": {
+ "name": "MUR",
+ "symbol": "MUR"
+ },
+ "MVR": {
+ "name": "MVR",
+ "symbol": "MVR"
+ },
+ "MWK": {
+ "name": "MWK",
+ "symbol": "MWK"
+ },
+ "MXN": {
+ "name": "MXN",
+ "symbol": "MX$"
+ },
+ "MYR": {
+ "name": "MYR",
+ "symbol": "MYR"
+ },
+ "MZN": {
+ "name": "MZN",
+ "symbol": "MTn"
+ },
+ "NAD": {
+ "name": "NAD",
+ "symbol": "NAD"
+ },
+ "NGN": {
+ "name": "NGN",
+ "symbol": "NGN"
+ },
+ "NIO": {
+ "name": "NIO",
+ "symbol": "NIO"
+ },
+ "NOK": {
+ "name": "NOK",
+ "symbol": "NOK"
+ },
+ "NPR": {
+ "name": "NPR",
+ "symbol": "NPR"
+ },
+ "NZD": {
+ "name": "NZD",
+ "symbol": "NZ$"
+ },
+ "OMR": {
+ "name": "OMR",
+ "symbol": "OMR"
+ },
+ "PAB": {
+ "name": "PAB",
+ "symbol": "PAB"
+ },
+ "PEN": {
+ "name": "PEN",
+ "symbol": "PEN"
+ },
+ "PGK": {
+ "name": "PGK",
+ "symbol": "PGK"
+ },
+ "PHP": {
+ "name": "PHP",
+ "symbol": "PHP"
+ },
+ "PKR": {
+ "name": "PKR",
+ "symbol": "PKR"
+ },
+ "PLN": {
+ "name": "PLN",
+ "symbol": "PLN"
+ },
+ "PYG": {
+ "name": "PYG",
+ "symbol": "PYG"
+ },
+ "QAR": {
+ "name": "QAR",
+ "symbol": "QAR"
+ },
+ "RON": {
+ "name": "RON",
+ "symbol": "RON"
+ },
+ "RSD": {
+ "name": "RSD",
+ "symbol": "RSD"
+ },
+ "RUB": {
+ "name": "RUB",
+ "symbol": "RUB"
+ },
+ "RWF": {
+ "name": "RWF",
+ "symbol": "RWF"
+ },
+ "SAR": {
+ "name": "SAR",
+ "symbol": "SAR"
+ },
+ "SBD": {
+ "name": "SBD",
+ "symbol": "SBD"
+ },
+ "SCR": {
+ "name": "SCR",
+ "symbol": "SCR"
+ },
+ "SDG": {
+ "name": "SDG",
+ "symbol": "SDG"
+ },
+ "SEK": {
+ "name": "SEK",
+ "symbol": "SEK"
+ },
+ "SGD": {
+ "name": "SGD",
+ "symbol": "SGD"
+ },
+ "SHP": {
+ "name": "SHP",
+ "symbol": "SHP"
+ },
+ "SLL": {
+ "name": "SLL",
+ "symbol": "SLL"
+ },
+ "SOS": {
+ "name": "SOS",
+ "symbol": "SOS"
+ },
+ "SRD": {
+ "name": "SRD",
+ "symbol": "SRD"
+ },
+ "SSP": {
+ "name": "SSP",
+ "symbol": "SSP"
+ },
+ "STD": {
+ "name": "STD",
+ "symbol": "STD"
+ },
+ "SVC": {
+ "name": "SVC",
+ "symbol": "SVC"
+ },
+ "SYP": {
+ "name": "SYP",
+ "symbol": "SYP"
+ },
+ "SZL": {
+ "name": "SZL",
+ "symbol": "SZL"
+ },
+ "THB": {
+ "name": "THB",
+ "symbol": "THB"
+ },
+ "TJS": {
+ "name": "TJS",
+ "symbol": "TJS"
+ },
+ "TMT": {
+ "name": "TMT",
+ "symbol": "TMT"
+ },
+ "TND": {
+ "name": "TND",
+ "symbol": "TND"
+ },
+ "TOP": {
+ "name": "TOP",
+ "symbol": "TOP"
+ },
+ "TRY": {
+ "name": "TRY",
+ "symbol": "TRY"
+ },
+ "TTD": {
+ "name": "TTD",
+ "symbol": "TTD"
+ },
+ "TWD": {
+ "name": "TWD",
+ "symbol": "NT$"
+ },
+ "TZS": {
+ "name": "TZS",
+ "symbol": "TZS"
+ },
+ "UAH": {
+ "name": "UAH",
+ "symbol": "UAH"
+ },
+ "UGX": {
+ "name": "UGX",
+ "symbol": "UGX"
+ },
+ "USD": {
+ "name": "USD",
+ "symbol": "US$"
+ },
+ "UYU": {
+ "name": "UYU",
+ "symbol": "UYU"
+ },
+ "UZS": {
+ "name": "UZS",
+ "symbol": "UZS"
+ },
+ "VEF": {
+ "name": "VEF",
+ "symbol": "VEF"
+ },
+ "VND": {
+ "name": "VND",
+ "symbol": "â‚«"
+ },
+ "VUV": {
+ "name": "VUV",
+ "symbol": "VUV"
+ },
+ "WST": {
+ "name": "WST",
+ "symbol": "WST"
+ },
+ "XAF": {
+ "name": "XAF",
+ "symbol": "FCFA"
+ },
+ "XCD": {
+ "name": "XCD",
+ "symbol": "EC$"
+ },
+ "XOF": {
+ "name": "XOF",
+ "symbol": "CFA"
+ },
+ "XPF": {
+ "name": "XPF",
+ "symbol": "CFPF"
+ },
+ "YER": {
+ "name": "YER",
+ "symbol": "YER"
+ },
+ "ZAR": {
+ "name": "ZAR",
+ "symbol": "ZAR"
+ },
+ "ZMW": {
+ "name": "ZMW",
+ "symbol": "ZMW"
+ },
+ "ZWL": {
+ "name": "ZWL",
+ "symbol": "ZWL"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/currency/mk.json b/library/intl/resources/currency/mk.json
new file mode 100644
index 000000000..743e02a19
--- /dev/null
+++ b/library/intl/resources/currency/mk.json
@@ -0,0 +1,634 @@
+{
+ "XAF": {
+ "name": "XAF",
+ "symbol": "FCFA"
+ },
+ "XOF": {
+ "name": "XOF",
+ "symbol": "CFA"
+ },
+ "ZWL": {
+ "name": "ZWL",
+ "symbol": "ZWL"
+ },
+ "AFN": {
+ "name": "ÐвганиÑтанÑки авгани",
+ "symbol": "AFN"
+ },
+ "AUD": {
+ "name": "ÐвÑтралиÑки долар",
+ "symbol": "AUD"
+ },
+ "AZN": {
+ "name": "ÐзербејџанÑки манат",
+ "symbol": "AZN"
+ },
+ "ALL": {
+ "name": "ÐлбанÑки Лек",
+ "symbol": "ALL"
+ },
+ "DZD": {
+ "name": "ÐлжирÑки Динар",
+ "symbol": "DZD"
+ },
+ "USD": {
+ "name": "ÐмериканÑки долар",
+ "symbol": "US$"
+ },
+ "AOA": {
+ "name": "ÐнголÑка Кванза",
+ "symbol": "AOA"
+ },
+ "ARS": {
+ "name": "ÐргентинÑки ПезоÑ",
+ "symbol": "ARS"
+ },
+ "AWG": {
+ "name": "ÐрубиÑки флорин",
+ "symbol": "AWG"
+ },
+ "BDT": {
+ "name": "Бангладешка така",
+ "symbol": "BDT"
+ },
+ "BBD": {
+ "name": "БарбадоÑки долар",
+ "symbol": "BBD"
+ },
+ "BSD": {
+ "name": "БахамÑки долар",
+ "symbol": "BSD"
+ },
+ "BHD": {
+ "name": "БахреинÑки Динар",
+ "symbol": "BHD"
+ },
+ "BZD": {
+ "name": "БелизиÑки Долар",
+ "symbol": "BZD"
+ },
+ "BYR": {
+ "name": "БелоруÑка рубља",
+ "symbol": "BYR"
+ },
+ "BMD": {
+ "name": "БермудÑки долар",
+ "symbol": "BMD"
+ },
+ "BOB": {
+ "name": "БоливиÑки боливиано",
+ "symbol": "BOB"
+ },
+ "BAM": {
+ "name": "БоÑанÑко-ХерцеговÑка конвертибилна марка",
+ "symbol": "BAM"
+ },
+ "BWP": {
+ "name": "БоцванÑка Пула",
+ "symbol": "BWP"
+ },
+ "BRL": {
+ "name": "БразилÑки реал",
+ "symbol": "R$"
+ },
+ "GBP": {
+ "name": "БританÑка Фунта",
+ "symbol": "GBP"
+ },
+ "BND": {
+ "name": "БрунејÑки долар",
+ "symbol": "BND"
+ },
+ "BGN": {
+ "name": "БугарÑки лев",
+ "symbol": "BGN"
+ },
+ "BIF": {
+ "name": "БурундиÑки Франк",
+ "symbol": "BIF"
+ },
+ "BTN": {
+ "name": "БутанÑки нгултрум",
+ "symbol": "BTN"
+ },
+ "VUV": {
+ "name": "ВанатÑки вату",
+ "symbol": "VUV"
+ },
+ "VEF": {
+ "name": "ВенецуелÑки боливар",
+ "symbol": "VEF"
+ },
+ "VND": {
+ "name": "ВиетнамÑки донг",
+ "symbol": "VND"
+ },
+ "GMD": {
+ "name": "ГамбиÑки далаÑи",
+ "symbol": "GMD"
+ },
+ "GHS": {
+ "name": "ГанÑки Ñеди",
+ "symbol": "GHS"
+ },
+ "GTQ": {
+ "name": "ГватемалÑки кветцал",
+ "symbol": "GTQ"
+ },
+ "GYD": {
+ "name": "ГвијанÑки Долар",
+ "symbol": "GYD"
+ },
+ "GNF": {
+ "name": "ГвинејÑки франк",
+ "symbol": "GNF"
+ },
+ "GIP": {
+ "name": "ГибралтарÑка фунта",
+ "symbol": "GIP"
+ },
+ "GEL": {
+ "name": "ГрузиÑки лари",
+ "symbol": "GEL"
+ },
+ "DKK": {
+ "name": "ДанÑка круна",
+ "symbol": "DKK"
+ },
+ "STD": {
+ "name": "Добра на Сао Томе и ПринÑипе",
+ "symbol": "STD"
+ },
+ "KYD": {
+ "name": "Долар на кајманÑки оÑтрови",
+ "symbol": "KYD"
+ },
+ "TTD": {
+ "name": "Долар на Тринидад и Тобаго",
+ "symbol": "TTD"
+ },
+ "DOP": {
+ "name": "ДоминиканÑки ПезоÑ",
+ "symbol": "DOP"
+ },
+ "EUR": {
+ "name": "Евро",
+ "symbol": "€"
+ },
+ "EGP": {
+ "name": "ЕгипетÑка Фунта",
+ "symbol": "EGP"
+ },
+ "ERN": {
+ "name": "ЕритрејÑка Ðакфа",
+ "symbol": "ERN"
+ },
+ "AMD": {
+ "name": "ЕрмениÑки Драм",
+ "symbol": "AMD"
+ },
+ "ETB": {
+ "name": "ЕтиопиÑки Бир",
+ "symbol": "ETB"
+ },
+ "ZMW": {
+ "name": "ЗамбијÑка квача",
+ "symbol": "ZMW"
+ },
+ "CVE": {
+ "name": "Зелено’ртÑки еÑкудо",
+ "symbol": "CVE"
+ },
+ "ILS": {
+ "name": "ИзраелÑки нов шекел",
+ "symbol": "ILS"
+ },
+ "INR": {
+ "name": "ИндијÑка рупија",
+ "symbol": "INR"
+ },
+ "IDR": {
+ "name": "ИндонезиÑка рупија",
+ "symbol": "IDR"
+ },
+ "IRR": {
+ "name": "ИранÑки риал",
+ "symbol": "IRR"
+ },
+ "IQD": {
+ "name": "Ирачки динар",
+ "symbol": "IQD"
+ },
+ "ISK": {
+ "name": "ИÑландÑка крона",
+ "symbol": "ISK"
+ },
+ "XCD": {
+ "name": "ИÑточно карибиÑки долар",
+ "symbol": "EC$"
+ },
+ "JMD": {
+ "name": "ЈамајканÑки долар",
+ "symbol": "JMD"
+ },
+ "JPY": {
+ "name": "ЈапонÑки јен",
+ "symbol": "JPY"
+ },
+ "YER": {
+ "name": "ЈеменÑки риал",
+ "symbol": "YER"
+ },
+ "JOD": {
+ "name": "ЈорданÑки динар",
+ "symbol": "JOD"
+ },
+ "ZAR": {
+ "name": "Јужно афрички ранд",
+ "symbol": "ZAR"
+ },
+ "KRW": {
+ "name": "Јужно корејÑки вон",
+ "symbol": "KRW"
+ },
+ "SSP": {
+ "name": "ЈужноÑуданÑка фунта",
+ "symbol": "SSP"
+ },
+ "KZT": {
+ "name": "КазахÑтанÑка тенга",
+ "symbol": "KZT"
+ },
+ "KHR": {
+ "name": "КамбоџиÑки рел",
+ "symbol": "KHR"
+ },
+ "CAD": {
+ "name": "КанадÑки долар",
+ "symbol": "CA$"
+ },
+ "QAR": {
+ "name": "КатарÑки риал",
+ "symbol": "QAR"
+ },
+ "KES": {
+ "name": "КениÑки шилинг",
+ "symbol": "KES"
+ },
+ "CNY": {
+ "name": "КинеÑки јуан",
+ "symbol": "CNY"
+ },
+ "KGS": {
+ "name": "КиргиÑтанÑки Ñом",
+ "symbol": "KGS"
+ },
+ "COP": {
+ "name": "КолумбиÑки ПезоÑ",
+ "symbol": "COP"
+ },
+ "KMF": {
+ "name": "КоморÑки долар",
+ "symbol": "KMF"
+ },
+ "CDF": {
+ "name": "КонголÑки франк",
+ "symbol": "CDF"
+ },
+ "CRC": {
+ "name": "КоÑтариканÑки колон",
+ "symbol": "CRC"
+ },
+ "CUP": {
+ "name": "КубанÑки пезоÑ",
+ "symbol": "CUP"
+ },
+ "CUC": {
+ "name": "КубанÑки Ð¿ÐµÐ·Ð¾Ñ (конвертибилен)",
+ "symbol": "CUC"
+ },
+ "KWD": {
+ "name": "КувајтÑки динар",
+ "symbol": "KWD"
+ },
+ "LAK": {
+ "name": "ЛаоÑки кип",
+ "symbol": "LAK"
+ },
+ "LSL": {
+ "name": "ЛеÑотÑко лоти",
+ "symbol": "LSL"
+ },
+ "LBP": {
+ "name": "ЛибанÑка фунта",
+ "symbol": "LBP"
+ },
+ "LRD": {
+ "name": "ЛибериÑки долар",
+ "symbol": "LRD"
+ },
+ "LYD": {
+ "name": "ЛибијÑки динар",
+ "symbol": "LYD"
+ },
+ "LTL": {
+ "name": "ЛитваниÑка лита",
+ "symbol": "LTL"
+ },
+ "MUR": {
+ "name": "МавританÑка рупија",
+ "symbol": "MUR"
+ },
+ "MRO": {
+ "name": "МавританÑка угија",
+ "symbol": "MRO"
+ },
+ "MOP": {
+ "name": "Макао патака",
+ "symbol": "MOP"
+ },
+ "MKD": {
+ "name": "МакедонÑки денар",
+ "symbol": "ден"
+ },
+ "MWK": {
+ "name": "МалавиÑка квача",
+ "symbol": "MWK"
+ },
+ "MGA": {
+ "name": "МалагаÑиÑки ариари",
+ "symbol": "MGA"
+ },
+ "MYR": {
+ "name": "МалазиÑки рингит",
+ "symbol": "MYR"
+ },
+ "MVR": {
+ "name": "МалдивиÑка руфија",
+ "symbol": "MVR"
+ },
+ "MAD": {
+ "name": "МароканÑки Дирхам",
+ "symbol": "MAD"
+ },
+ "MXN": {
+ "name": "МекÑиканÑки пезоÑ",
+ "symbol": "MX$"
+ },
+ "MMK": {
+ "name": "МјанмарÑки киат",
+ "symbol": "MMK"
+ },
+ "MZN": {
+ "name": "МозамбиÑки метикал",
+ "symbol": "MZN"
+ },
+ "MDL": {
+ "name": "МолдавÑки леу",
+ "symbol": "MDL"
+ },
+ "MNT": {
+ "name": "МонголиÑки тугрик",
+ "symbol": "MNT"
+ },
+ "NAD": {
+ "name": "ÐамибиÑки долар",
+ "symbol": "NAD"
+ },
+ "NPR": {
+ "name": "ÐепалÑка рупија",
+ "symbol": "NPR"
+ },
+ "NGN": {
+ "name": "ÐигериÑка наира",
+ "symbol": "NGN"
+ },
+ "NIO": {
+ "name": "ÐикарагванÑка кордоба",
+ "symbol": "NIO"
+ },
+ "NZD": {
+ "name": "ÐовозеландÑки долар",
+ "symbol": "NZD"
+ },
+ "NOK": {
+ "name": "Ðорвешка круна",
+ "symbol": "NOK"
+ },
+ "AED": {
+ "name": "Обединети ÐрапÑки Емирати Дирхам",
+ "symbol": "AED"
+ },
+ "OMR": {
+ "name": "ОманÑки риал",
+ "symbol": "OMR"
+ },
+ "PKR": {
+ "name": "ПакиÑтанÑка рупија",
+ "symbol": "PKR"
+ },
+ "PAB": {
+ "name": "ПанамÑка балбоа",
+ "symbol": "PAB"
+ },
+ "PGK": {
+ "name": "Папуа новогвинејÑка кина",
+ "symbol": "PGK"
+ },
+ "PYG": {
+ "name": "ПарагвајÑка гуарана",
+ "symbol": "PYG"
+ },
+ "PEN": {
+ "name": "ПеруанÑки нов Ñол",
+ "symbol": "PEN"
+ },
+ "PLN": {
+ "name": "ПолÑка злота",
+ "symbol": "PLN"
+ },
+ "RON": {
+ "name": "РоманÑка леи",
+ "symbol": "RON"
+ },
+ "RWF": {
+ "name": "РуандÑки франк",
+ "symbol": "RWF"
+ },
+ "RUB": {
+ "name": "РуÑка рубља",
+ "symbol": "RUB"
+ },
+ "SVC": {
+ "name": "СалвадорÑки колон",
+ "symbol": "SVC"
+ },
+ "WST": {
+ "name": "СамоанÑка тала",
+ "symbol": "WST"
+ },
+ "SAR": {
+ "name": "СаудиÑки ријал",
+ "symbol": "SAR"
+ },
+ "SZL": {
+ "name": "СвазилендÑки лиланген",
+ "symbol": "SZL"
+ },
+ "KPW": {
+ "name": "Северно корејÑки вон",
+ "symbol": "KPW"
+ },
+ "SCR": {
+ "name": "СејшелÑка рупија",
+ "symbol": "SCR"
+ },
+ "SLL": {
+ "name": "СиералеонÑко леоне",
+ "symbol": "SLL"
+ },
+ "SGD": {
+ "name": "СингапурÑки долар",
+ "symbol": "SGD"
+ },
+ "SYP": {
+ "name": "СиријÑка фунта",
+ "symbol": "SYP"
+ },
+ "SBD": {
+ "name": "СоломонÑки долар",
+ "symbol": "SBD"
+ },
+ "SOS": {
+ "name": "СомалијÑки шилинг",
+ "symbol": "SOS"
+ },
+ "RSD": {
+ "name": "СрпÑки динар",
+ "symbol": "RSD"
+ },
+ "SDG": {
+ "name": "СуданÑка фунта",
+ "symbol": "SDG"
+ },
+ "SRD": {
+ "name": "СуринамÑки долар",
+ "symbol": "SRD"
+ },
+ "THB": {
+ "name": "Таи бат",
+ "symbol": "THB"
+ },
+ "TWD": {
+ "name": "ТајванÑки нов долар",
+ "symbol": "TWD"
+ },
+ "TZS": {
+ "name": "ТанзаниÑки шилинг",
+ "symbol": "TZS"
+ },
+ "TJS": {
+ "name": "ТаџикиÑтанÑки Ñомони",
+ "symbol": "TJS"
+ },
+ "TOP": {
+ "name": "ТонганÑка панга",
+ "symbol": "TOP"
+ },
+ "TND": {
+ "name": "ТунизиÑки динар",
+ "symbol": "TND"
+ },
+ "TMT": {
+ "name": "ТуркмениÑÑ‚. манат",
+ "symbol": "TMT"
+ },
+ "TRY": {
+ "name": "ТурÑка лира",
+ "symbol": "TRY"
+ },
+ "UGX": {
+ "name": "УгандиÑки шилинг",
+ "symbol": "UGX"
+ },
+ "UZS": {
+ "name": "УзбекиÑтанÑки Ñом",
+ "symbol": "UZS"
+ },
+ "UAH": {
+ "name": "УкраинÑка хривнија",
+ "symbol": "UAH"
+ },
+ "HUF": {
+ "name": "УнгарÑка форинта",
+ "symbol": "HUF"
+ },
+ "UYU": {
+ "name": "УругвајÑки пезоÑ",
+ "symbol": "UYU"
+ },
+ "PHP": {
+ "name": "ФилипинÑки пезоÑ",
+ "symbol": "PHP"
+ },
+ "FJD": {
+ "name": "ФиџиÑки долар",
+ "symbol": "FJD"
+ },
+ "FKP": {
+ "name": "ФолкландÑка фунта",
+ "symbol": "FKP"
+ },
+ "SHP": {
+ "name": "Фунта на Света Елена",
+ "symbol": "SHP"
+ },
+ "HTG": {
+ "name": "ХаитÑки гурд",
+ "symbol": "HTG"
+ },
+ "ANG": {
+ "name": "ХоландÑки антилÑки гилдер",
+ "symbol": "ANG"
+ },
+ "HKD": {
+ "name": "Хонгконшки долар",
+ "symbol": "HKD"
+ },
+ "HNL": {
+ "name": "ХондурÑка лемпира",
+ "symbol": "HNL"
+ },
+ "HRK": {
+ "name": "ХрватÑка Куна",
+ "symbol": "HRK"
+ },
+ "XPF": {
+ "name": "ЦФП франк",
+ "symbol": "CFPF"
+ },
+ "CZK": {
+ "name": "Чешка корона",
+ "symbol": "CZK"
+ },
+ "CLP": {
+ "name": "ЧилеанÑки пезоÑ",
+ "symbol": "CLP"
+ },
+ "DJF": {
+ "name": "Ðибути франк",
+ "symbol": "DJF"
+ },
+ "CHF": {
+ "name": "ШвајцарÑки Франк",
+ "symbol": "CHF"
+ },
+ "SEK": {
+ "name": "ШведÑка круна",
+ "symbol": "SEK"
+ },
+ "LKR": {
+ "name": "ШриланканÑка рупија",
+ "symbol": "LKR"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/currency/ml.json b/library/intl/resources/currency/ml.json
new file mode 100644
index 000000000..ec7c58867
--- /dev/null
+++ b/library/intl/resources/currency/ml.json
@@ -0,0 +1,634 @@
+{
+ "XOF": {
+ "name": "CFA à´«àµà´°à´¾à´™àµà´•àµ BCEAO",
+ "symbol": "CFA"
+ },
+ "XAF": {
+ "name": "CFA à´«àµà´°à´¾à´™àµà´•àµ BEAC",
+ "symbol": "FCFA"
+ },
+ "XPF": {
+ "name": "CFP à´«àµà´°à´¾à´™àµà´•àµ",
+ "symbol": "CFPF"
+ },
+ "ZWL": {
+ "name": "ZWL",
+ "symbol": "ZWL"
+ },
+ "AFN": {
+ "name": "à´…à´«àµâ€Œà´—ാൻ à´…à´«àµâ€Œâ€Œà´—ാനി",
+ "symbol": "AFN"
+ },
+ "AOA": {
+ "name": "അംഗോളൻ â€à´•àµà´µà´¾àµ»à´¸",
+ "symbol": "AOA"
+ },
+ "ARS": {
+ "name": "അർജൻറീൻ പെസോ",
+ "symbol": "ARS"
+ },
+ "AMD": {
+ "name": "അർമേനിയൻ à´¡àµà´°à´¾à´‚",
+ "symbol": "AMD"
+ },
+ "ALL": {
+ "name": "അൽബേനിയൻ ലെകàµ",
+ "symbol": "ALL"
+ },
+ "AZN": {
+ "name": "അസർബൈജാനി മനതàµ",
+ "symbol": "AZN"
+ },
+ "DZD": {
+ "name": "അൾജീരിയൻ ദിനാർ",
+ "symbol": "DZD"
+ },
+ "AWG": {
+ "name": "അറൂബൻ à´«àµà´²àµ‹à´±à´¿àµ»",
+ "symbol": "AWG"
+ },
+ "IDR": {
+ "name": "ഇനàµà´¤àµ‹à´¨àµ‡à´·àµà´¯àµ» à´±àµà´ªà´¿à´¯",
+ "symbol": "IDR"
+ },
+ "INR": {
+ "name": "ഇനàµà´¤àµà´¯àµ» രൂപ",
+ "symbol": "₹"
+ },
+ "ILS": {
+ "name": "ഇസàµà´°à´¾à´¯àµ‡à´²à´¿ à´¨àµà´¯àµ‚ ഷെകàµà´•àµ†àµ½",
+ "symbol": "₪"
+ },
+ "IQD": {
+ "name": "ഇറാഖി ദിനാർ",
+ "symbol": "IQD"
+ },
+ "IRR": {
+ "name": "ഇറാനിയൻ റിയാൽ",
+ "symbol": "IRR"
+ },
+ "EGP": {
+ "name": "ഈജിപàµâ€Œà´·àµà´¯àµ» പൗണàµà´Ÿàµ",
+ "symbol": "EGP"
+ },
+ "UAH": {
+ "name": "ഉകàµà´°àµ‡à´¨à´¿à´¯àµ» à´¹àµà´°à´¿à´µàµâ€Œà´¨à´¿à´¯",
+ "symbol": "UAH"
+ },
+ "UGX": {
+ "name": "ഉഗാണàµà´Ÿàµ» à´·à´¿à´²àµà´²à´¿à´‚à´—àµ",
+ "symbol": "UGX"
+ },
+ "KPW": {
+ "name": "ഉതàµà´¤à´° കൊറിയൻ വോൺ",
+ "symbol": "KPW"
+ },
+ "UZS": {
+ "name": "ഉസàµâ€Œà´¬àµ†à´•àµà´•à´¿à´¸àµà´¥à´¾àµ» സോം",
+ "symbol": "UZS"
+ },
+ "UYU": {
+ "name": "ഉറàµà´—àµà´µàµ‡à´¯àµ» പെസോ",
+ "symbol": "UYU"
+ },
+ "ETB": {
+ "name": "à´Žà´¤àµà´¯àµ‹à´ªàµà´¯àµ» ബിർ",
+ "symbol": "ETB"
+ },
+ "SVC": {
+ "name": "എൽ സാൽവഡോർ കോളൻ",
+ "symbol": "SVC"
+ },
+ "ERN": {
+ "name": "എറിതàµà´°à´¿à´¯àµ» നകàµà´«",
+ "symbol": "ERN"
+ },
+ "ISK": {
+ "name": "à´à´¸àµâ€Œà´²à´¾àµ»à´¡à´¿à´•àµ à´•àµà´°àµ‹à´£",
+ "symbol": "ISK"
+ },
+ "OMR": {
+ "name": "ഒമാനി റിയാൽ",
+ "symbol": "OMR"
+ },
+ "AUD": {
+ "name": "à´“à´¸àµà´Ÿàµà´°àµ‡à´²à´¿à´¯àµ» ഡോളർ",
+ "symbol": "A$"
+ },
+ "CAD": {
+ "name": "കനേഡിയൻ ഡോളർ",
+ "symbol": "CA$"
+ },
+ "KHR": {
+ "name": "കംബോഡിയൻ റീൽ",
+ "symbol": "KHR"
+ },
+ "KZT": {
+ "name": "കസാകàµà´•à´¿à´¸àµà´¥à´¾àµ» ടെംഗെ",
+ "symbol": "KZT"
+ },
+ "KGS": {
+ "name": "കിർഗിസàµà´¥à´¾à´¨à´¿ സോം",
+ "symbol": "KGS"
+ },
+ "XCD": {
+ "name": "à´•à´¿à´´à´•àµà´•àµ» കരീബിയൻ ഡോളർ",
+ "symbol": "EC$"
+ },
+ "KWD": {
+ "name": "à´•àµà´µàµˆà´±àµà´±à´¿ ദിനാർ",
+ "symbol": "KWD"
+ },
+ "KES": {
+ "name": "കെനിയൻ à´·à´¿à´²àµà´²à´¿à´‚à´—àµ",
+ "symbol": "KES"
+ },
+ "CVE": {
+ "name": "കേപൠവെർദിയൻ à´Žà´¸àµâ€Œà´•àµà´¯àµà´¡àµ‹",
+ "symbol": "CVE"
+ },
+ "KYD": {
+ "name": "കേമാൻ à´à´²àµ»à´¡àµâ€Œà´¸àµ ഡോളർ",
+ "symbol": "KYD"
+ },
+ "KMF": {
+ "name": "കൊമോറിയൻ à´«àµà´°à´¾à´™àµà´•àµ",
+ "symbol": "KMF"
+ },
+ "COP": {
+ "name": "കൊളംബിയൻ പെസോ",
+ "symbol": "COP"
+ },
+ "CDF": {
+ "name": "കോങàµà´•à´³àµ€à´¸àµ à´«àµà´°à´¾à´™àµà´•àµ",
+ "symbol": "CDF"
+ },
+ "CRC": {
+ "name": "കോസàµà´±àµà´±à´¾ റികàµà´•àµ» കോളൻ",
+ "symbol": "CRC"
+ },
+ "CUC": {
+ "name": "à´•àµà´¯àµ‚ബൻ കൺവേർടàµà´Ÿà´¬à´¿àµ¾ പെസോ",
+ "symbol": "CUC"
+ },
+ "CUP": {
+ "name": "à´•àµà´¯àµ‚ബൻ പെസോ",
+ "symbol": "CUP"
+ },
+ "HRK": {
+ "name": "à´•àµà´°àµŠà´¯àµ‡à´·àµ» à´•àµà´¯àµà´¨",
+ "symbol": "HRK"
+ },
+ "QAR": {
+ "name": "à´–à´¤àµà´¤àµ¼ റിയാൽ",
+ "symbol": "QAR"
+ },
+ "GYD": {
+ "name": "ഗയാനീസൠഡോളർ",
+ "symbol": "GYD"
+ },
+ "GMD": {
+ "name": "ഗാംബിയൻ ദലാസി",
+ "symbol": "GMD"
+ },
+ "GNF": {
+ "name": "ഗിനിയൻ à´«àµà´°à´¾à´™àµà´•àµ",
+ "symbol": "GNF"
+ },
+ "GTQ": {
+ "name": "à´—àµà´µà´¾à´Ÿàµà´Ÿà´¿à´®à´¾à´²àµ» à´•àµà´µàµ†à´±àµà´±àµâ€Œà´¸àµ½",
+ "symbol": "GTQ"
+ },
+ "GHS": {
+ "name": "ഘാനയൻ കെഡി",
+ "symbol": "GHS"
+ },
+ "CLP": {
+ "name": "ചിലിയൻ പെസോ",
+ "symbol": "CLP"
+ },
+ "CZK": {
+ "name": "ചെകàµà´•àµ റിപàµà´ªà´¬àµà´²à´¿à´•àµ കൊരàµà´£",
+ "symbol": "CZK"
+ },
+ "CNY": {
+ "name": "ചൈനീസൠയàµà´µà´¾àµ»",
+ "symbol": "CNÂ¥"
+ },
+ "JPY": {
+ "name": "ജപàµà´ªà´¾à´¨àµ€à´¸àµ യെൻ",
+ "symbol": "Â¥"
+ },
+ "JMD": {
+ "name": "ജമൈകàµà´•àµ» ഡോളർ",
+ "symbol": "JMD"
+ },
+ "GIP": {
+ "name": "ജിബàµà´°à´¾àµ¾à´Ÿàµà´Ÿàµ¼ പൗണàµà´Ÿàµ",
+ "symbol": "GIP"
+ },
+ "GEL": {
+ "name": "ജോർജàµà´œà´¿à´¯àµ» ലാറി",
+ "symbol": "GEL"
+ },
+ "JOD": {
+ "name": "ജോർദàµà´¦à´¾à´¨à´¿à´¯àµ» ദിനാർ",
+ "symbol": "JOD"
+ },
+ "TRY": {
+ "name": "ടർകàµà´•à´¿à´·àµ ലിറ",
+ "symbol": "TRY"
+ },
+ "TZS": {
+ "name": "ടാൻസാനിയൻ à´·à´¿à´²àµà´²à´¿à´‚à´—àµ",
+ "symbol": "TZS"
+ },
+ "TND": {
+ "name": "à´Ÿàµà´£àµ€à´·àµà´¯àµ» ദിനാർ",
+ "symbol": "TND"
+ },
+ "TOP": {
+ "name": "ടോംഗൻ പാംഗ",
+ "symbol": "TOP"
+ },
+ "TTD": {
+ "name": "à´Ÿàµà´°à´¿à´¨à´¿à´¡à´¾à´¡àµ à´…à´¨àµà´±àµ à´Ÿàµà´¬à´¾à´—ോ ഡോളർ",
+ "symbol": "TTD"
+ },
+ "DKK": {
+ "name": "ഡാനിഷൠകàµà´°àµ‹à´£àµ†",
+ "symbol": "DKK"
+ },
+ "DOP": {
+ "name": "ഡൊമിനികàµà´•àµ» പെസോ",
+ "symbol": "DOP"
+ },
+ "TJS": {
+ "name": "താജികàµà´•à´¿à´¸àµà´¥à´¾à´¨à´¿ സൊമോനി",
+ "symbol": "TJS"
+ },
+ "THB": {
+ "name": "തായൠബടàµà´Ÿàµ",
+ "symbol": "฿"
+ },
+ "TMT": {
+ "name": "à´¤àµàµ¼à´•àµà´•àµâ€Œà´®àµ†à´¨à´¿à´¸àµà´¥à´¾à´¨à´¿ മനതàµ",
+ "symbol": "TMT"
+ },
+ "KRW": {
+ "name": "ദകàµà´·à´¿à´£ കൊറിയൻ വോൺ",
+ "symbol": "â‚©"
+ },
+ "SSP": {
+ "name": "ദകàµà´·à´¿à´£ à´¸àµà´¡à´¾à´¨àµ€à´¸àµ പൗണàµà´Ÿàµ",
+ "symbol": "SSP"
+ },
+ "ZAR": {
+ "name": "ദകàµà´·à´¿à´£à´¾à´«àµà´°à´¿à´•àµà´•àµ» റാൻഡàµ",
+ "symbol": "ZAR"
+ },
+ "DJF": {
+ "name": "ദിജിബൗടàµà´Ÿà´¿à´¯àµ» à´«àµà´°à´¾à´™àµà´•àµ",
+ "symbol": "DJF"
+ },
+ "NAD": {
+ "name": "നമീബിയൻ ഡോളർ",
+ "symbol": "NAD"
+ },
+ "NIO": {
+ "name": "നികàµà´•à´°à´¾à´—àµà´µàµ» കോർഡോബ",
+ "symbol": "NIO"
+ },
+ "ANG": {
+ "name": "നെതർലാൻഡàµâ€Œà´¸àµ ആനàµà´±à´¿à´²àµ» ഗിൽഡർ",
+ "symbol": "ANG"
+ },
+ "NPR": {
+ "name": "നേപàµà´ªà´¾à´³àµ€à´¸àµ à´±àµà´ªàµà´ªàµ€",
+ "symbol": "NPR"
+ },
+ "NGN": {
+ "name": "നൈജീരിയൻ നൈറ",
+ "symbol": "NGN"
+ },
+ "NOK": {
+ "name": "നോർവീജിയൻ à´•àµà´°àµ‹à´£àµ†",
+ "symbol": "NOK"
+ },
+ "TWD": {
+ "name": "à´¨àµà´¯àµ‚ തായàµâ€Œà´µà´¾àµ» ഡോളർ",
+ "symbol": "NT$"
+ },
+ "NZD": {
+ "name": "à´¨àµà´¯àµ‚സിലാനàµà´±àµ ഡോളർ",
+ "symbol": "NZ$"
+ },
+ "PAB": {
+ "name": "പനാമനിയൻ ബാൽബോവ",
+ "symbol": "PAB"
+ },
+ "PYG": {
+ "name": "പരാഗàµà´µàµ‡à´¯àµ» à´—àµà´µà´°à´¨àµ€",
+ "symbol": "PYG"
+ },
+ "PKR": {
+ "name": "പാകàµà´•à´¿à´¸àµà´¥à´¾à´¨à´¿ à´±àµà´ªàµà´ªàµ€",
+ "symbol": "PKR"
+ },
+ "PGK": {
+ "name": "പാപàµà´ªàµà´µ à´¨àµà´¯àµ‚ ഗിനിയൻ à´•à´¿à´¨",
+ "symbol": "PGK"
+ },
+ "PEN": {
+ "name": "പെറàµà´µà´¿à´¯àµ» à´¨àµà´¯àµ‚വോ സോൾ",
+ "symbol": "PEN"
+ },
+ "PLN": {
+ "name": "പോളിഷൠസàµà´²àµ‹à´Ÿàµà´Ÿà´¿",
+ "symbol": "PLN"
+ },
+ "FKP": {
+ "name": "ഫാകàµà´•àµâ€Œà´²à´¾à´¨àµà´±àµ à´¦àµà´µàµ€à´ªàµà´•à´³àµà´Ÿàµ† പൗണàµà´Ÿàµ",
+ "symbol": "FKP"
+ },
+ "FJD": {
+ "name": "ഫിജിയൻ ഡോളർ",
+ "symbol": "FJD"
+ },
+ "PHP": {
+ "name": "ഫിലിപàµà´ªàµ€à´¨à´¿ പെസോ",
+ "symbol": "PHP"
+ },
+ "BDT": {
+ "name": "ബംഗàµà´²à´¾à´¦àµ‡à´¶à´¿ ടാകàµà´•",
+ "symbol": "BDT"
+ },
+ "BSD": {
+ "name": "ബഹാമിയൻ ഡോളർ",
+ "symbol": "BSD"
+ },
+ "BHD": {
+ "name": "ബഹàµà´±àµˆà´¨à´¿ ദിനാർ",
+ "symbol": "BHD"
+ },
+ "BGN": {
+ "name": "ബൾഗേറിയൻ ലെവàµ",
+ "symbol": "BGN"
+ },
+ "BIF": {
+ "name": "ബറàµà´£àµà´Ÿà´¿à´¯àµ» à´«àµà´°à´¾à´™àµà´•àµ",
+ "symbol": "BIF"
+ },
+ "BBD": {
+ "name": "ബാർബഡോസൠഡോളർ",
+ "symbol": "BBD"
+ },
+ "BMD": {
+ "name": "ബെർമàµà´¡àµ» ഡോളർ",
+ "symbol": "BMD"
+ },
+ "BYR": {
+ "name": "ബെലാറàµà´·àµà´¯àµ» റൂബിൾ",
+ "symbol": "BYR"
+ },
+ "BZD": {
+ "name": "ബെലീസൠഡോളർ",
+ "symbol": "BZD"
+ },
+ "BOB": {
+ "name": "ബൊളീവിയൻ ബൊളിവിയാനോ",
+ "symbol": "BOB"
+ },
+ "BWP": {
+ "name": "ബോടàµâ€Œà´¸àµà´µà´¾à´¨àµ» à´ªàµà´¯àµà´²",
+ "symbol": "BWP"
+ },
+ "BAM": {
+ "name": "ബോസàµâ€Œà´¨à´¿à´¯-ഹെർസഗോവിന കൺവേർടàµà´Ÿà´¬à´¿àµ¾ മാർകàµà´•àµ",
+ "symbol": "BAM"
+ },
+ "BRL": {
+ "name": "à´¬àµà´°à´¸àµ€à´²à´¿à´¯àµ» റിയാൽ",
+ "symbol": "R$"
+ },
+ "GBP": {
+ "name": "à´¬àµà´°à´¿à´Ÿàµà´Ÿàµ€à´·àµ പൗണàµà´Ÿàµ à´¸àµâ€Œà´±àµà´±àµ†àµ¼à´²à´¿à´‚à´—àµ",
+ "symbol": "£"
+ },
+ "BND": {
+ "name": "à´¬àµà´°àµ‚ണൈ ഡോളർ",
+ "symbol": "BND"
+ },
+ "BTN": {
+ "name": "ഭൂടàµà´Ÿà´¾à´¨àµ€à´¸àµ ഗൾടàµà´°à´‚",
+ "symbol": "BTN"
+ },
+ "MOP": {
+ "name": "മകാനീസൠപതാകàµà´•",
+ "symbol": "MOP"
+ },
+ "MGA": {
+ "name": "മഡഗാസി à´à´°à´¿à´¯à´±à´¿",
+ "symbol": "MGA"
+ },
+ "MNT": {
+ "name": "മംഗോളിയൻ à´¤àµà´—àµà´°à´¿à´•àµ",
+ "symbol": "MNT"
+ },
+ "MWK": {
+ "name": "മലാവിയൻ à´•àµà´µà´šàµà´šà´¾",
+ "symbol": "MWK"
+ },
+ "MYR": {
+ "name": "മലേഷàµà´¯àµ» റിംഗിറàµà´±àµ",
+ "symbol": "MYR"
+ },
+ "MVR": {
+ "name": "മാൽദീവിയൻ à´±àµà´«à´¿à´¯",
+ "symbol": "MVR"
+ },
+ "MKD": {
+ "name": "മാസിഡോണിയൻ ദിനാർ",
+ "symbol": "MKD"
+ },
+ "MXN": {
+ "name": "മെകàµà´¸à´¿à´•àµà´•àµ» പെസോ",
+ "symbol": "MX$"
+ },
+ "MZN": {
+ "name": "മൊസാംബികàµà´•àµ» മെറàµà´±à´¿à´•àµà´•àµ½",
+ "symbol": "MZN"
+ },
+ "MDL": {
+ "name": "മൊൾഡോവൻ ലിയàµ",
+ "symbol": "MDL"
+ },
+ "MAD": {
+ "name": "മൊറോകàµà´•àµ» ദിർഹം",
+ "symbol": "MAD"
+ },
+ "MRO": {
+ "name": "മൗറിറàµà´±àµ‡à´¨à´¿à´¯àµ» ഔഗിയ",
+ "symbol": "MRO"
+ },
+ "MUR": {
+ "name": "മൗറീഷàµà´¯àµ» à´±àµà´ªàµà´ªàµ€",
+ "symbol": "MUR"
+ },
+ "MMK": {
+ "name": "à´®àµà´¯à´¾àµ»à´®à´¾àµ¼ à´•àµà´¯à´¾à´Ÿàµ",
+ "symbol": "MMK"
+ },
+ "USD": {
+ "name": "à´¯àµ.à´Žà´¸àµ. ഡോളർ",
+ "symbol": "$"
+ },
+ "AED": {
+ "name": "à´¯àµà´£àµˆà´±àµà´±à´¡àµ അറബൠഎമിറേറàµà´±àµà´¸àµ ദിർഹം",
+ "symbol": "AED"
+ },
+ "EUR": {
+ "name": "യൂറോ",
+ "symbol": "€"
+ },
+ "YER": {
+ "name": "യെമനി റിയാൽ",
+ "symbol": "YER"
+ },
+ "LAK": {
+ "name": "ലാവോഷിയൻ à´•à´¿à´ªàµ",
+ "symbol": "LAK"
+ },
+ "LTL": {
+ "name": "ലിതàµà´µà´¾à´¨à´¿à´¯àµ» ലിറàµà´±à´¾à´¸àµ",
+ "symbol": "LTL"
+ },
+ "LYD": {
+ "name": "ലിബിയൻ ദിനാർ",
+ "symbol": "LYD"
+ },
+ "LBP": {
+ "name": "ലെബനീസൠപൗണàµà´Ÿàµ",
+ "symbol": "LBP"
+ },
+ "LSL": {
+ "name": "ലെസോതോ ലോതàµà´¤à´¿",
+ "symbol": "LSL"
+ },
+ "LRD": {
+ "name": "ലൈബീരിയൻ ഡോളർ",
+ "symbol": "LRD"
+ },
+ "VUV": {
+ "name": "വനàµà´µà´¾à´¤àµ വാതàµ",
+ "symbol": "VUV"
+ },
+ "VND": {
+ "name": "വിയറàµà´±àµà´¨à´¾à´®àµ€à´¸àµ ഡോങàµ",
+ "symbol": "â‚«"
+ },
+ "VEF": {
+ "name": "വെനിസàµà´µàµ‡à´²àµ» ബൊളീവർ",
+ "symbol": "VEF"
+ },
+ "LKR": {
+ "name": "à´¶àµà´°àµ€à´²à´™àµà´•àµ» à´±àµà´ªàµà´ªàµ€",
+ "symbol": "LKR"
+ },
+ "WST": {
+ "name": "സമോവൻ താല",
+ "symbol": "WST"
+ },
+ "ZMW": {
+ "name": "സാംബിയൻ à´•àµà´µà´¾à´šàµà´š",
+ "symbol": "ZMW"
+ },
+ "STD": {
+ "name": "സാവോ ടോമി ആൻഡൠപàµà´°à´¿àµ»à´¸à´¿à´ªàµ† ഡോബàµà´°",
+ "symbol": "STD"
+ },
+ "SGD": {
+ "name": "സിംഗപàµà´ªàµ‚ർ ഡോളർ",
+ "symbol": "SGD"
+ },
+ "SLL": {
+ "name": "സിയെറ ലിയോണിയൻ ലിയോൺ",
+ "symbol": "SLL"
+ },
+ "SYP": {
+ "name": "സിറിയൻ പൗണàµà´Ÿàµ",
+ "symbol": "SYP"
+ },
+ "SCR": {
+ "name": "സീഷെലോയിസൠറàµà´ªàµà´ªàµ€",
+ "symbol": "SCR"
+ },
+ "SDG": {
+ "name": "à´¸àµà´¡à´¾à´¨àµ€à´¸àµ പൗണàµà´Ÿàµ",
+ "symbol": "SDG"
+ },
+ "SRD": {
+ "name": "à´¸àµà´°à´¿à´¨àµ†à´¯à´¿à´®à´¿à´¸àµ ഡോളർ",
+ "symbol": "SRD"
+ },
+ "SHP": {
+ "name": "സെനàµà´±àµ ഹെലീന പൗണàµà´Ÿàµ",
+ "symbol": "SHP"
+ },
+ "RSD": {
+ "name": "സെർബിയൻ ദിനാർ",
+ "symbol": "RSD"
+ },
+ "SOS": {
+ "name": "സോമാലി à´·à´¿à´²àµà´²à´¿à´‚à´—àµ",
+ "symbol": "SOS"
+ },
+ "SBD": {
+ "name": "സോളമൻ à´¦àµà´µàµ€à´ªàµà´•à´³àµà´Ÿàµ† ഡോളർ",
+ "symbol": "SBD"
+ },
+ "SAR": {
+ "name": "സൗദി റിയാൽ",
+ "symbol": "SAR"
+ },
+ "SZL": {
+ "name": "à´¸àµà´µà´¾à´¸à´¿ ലിലാംഗനി",
+ "symbol": "SZL"
+ },
+ "CHF": {
+ "name": "à´¸àµà´µà´¿à´¸àµ à´«àµà´°à´¾à´™àµà´•àµ",
+ "symbol": "CHF"
+ },
+ "SEK": {
+ "name": "à´¸àµà´µàµ€à´¡à´¿à´·àµ à´•àµà´°àµ‹à´£",
+ "symbol": "SEK"
+ },
+ "HUF": {
+ "name": "ഹംഗേറിയൻ ഫോറിനàµà´±àµ",
+ "symbol": "HUF"
+ },
+ "HTG": {
+ "name": "ഹെയàµâ€Œà´¤à´¿à´¯àµ» ഗൂർഡàµ",
+ "symbol": "HTG"
+ },
+ "HKD": {
+ "name": "ഹോങàµà´•àµ‹à´™àµà´™àµ ഡോളർ",
+ "symbol": "HK$"
+ },
+ "HNL": {
+ "name": "ഹോണàµà´Ÿàµà´±àµ» ലെംപിറ",
+ "symbol": "HNL"
+ },
+ "RUB": {
+ "name": "റഷàµà´¯àµ» റൂബിൾ",
+ "symbol": "RUB"
+ },
+ "RWF": {
+ "name": "à´±àµà´µà´¾à´£àµà´Ÿàµ» à´«àµà´°à´¾à´™àµà´•àµ",
+ "symbol": "RWF"
+ },
+ "RON": {
+ "name": "റൊമാനിയൻ ലെയàµ",
+ "symbol": "RON"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/currency/mn.json b/library/intl/resources/currency/mn.json
new file mode 100644
index 000000000..f0f2c73e2
--- /dev/null
+++ b/library/intl/resources/currency/mn.json
@@ -0,0 +1,634 @@
+{
+ "XPF": {
+ "name": "CFP франк",
+ "symbol": "CFPF"
+ },
+ "LSL": {
+ "name": "LSL",
+ "symbol": "LSL"
+ },
+ "SVC": {
+ "name": "SVC",
+ "symbol": "SVC"
+ },
+ "ZWL": {
+ "name": "ZWL",
+ "symbol": "ZWL"
+ },
+ "AUD": {
+ "name": "авÑтрали доллар",
+ "symbol": "A$"
+ },
+ "AZN": {
+ "name": "азербайжаны манат",
+ "symbol": "AZN"
+ },
+ "ALL": {
+ "name": "албанийн лек",
+ "symbol": "ALL"
+ },
+ "DZD": {
+ "name": "алжир доллар",
+ "symbol": "DZD"
+ },
+ "USD": {
+ "name": "америк доллар",
+ "symbol": "$"
+ },
+ "AOA": {
+ "name": "Ðнгол кванза",
+ "symbol": "AOA"
+ },
+ "AED": {
+ "name": "арабын нÑгдÑÑн Ñмиратын дирхам",
+ "symbol": "AED"
+ },
+ "ARS": {
+ "name": "аргентин пеÑо",
+ "symbol": "ARS"
+ },
+ "AMD": {
+ "name": "арменийн драм",
+ "symbol": "AMD"
+ },
+ "AWG": {
+ "name": "арубын флорин",
+ "symbol": "AWG"
+ },
+ "AFN": {
+ "name": "афганиÑтаний афгани",
+ "symbol": "AFN"
+ },
+ "BSD": {
+ "name": "багам доллар",
+ "symbol": "BSD"
+ },
+ "NPR": {
+ "name": "балба рупи",
+ "symbol": "NPR"
+ },
+ "BDT": {
+ "name": "бангладешийн така",
+ "symbol": "BDT"
+ },
+ "BBD": {
+ "name": "Ð±Ð°Ñ€Ð±Ð°Ð´Ð¾Ñ Ð´Ð¾Ð»Ð»Ð°Ñ€",
+ "symbol": "BBD"
+ },
+ "BHD": {
+ "name": "бахрейн динар",
+ "symbol": "BHD"
+ },
+ "BYR": {
+ "name": "Ð±ÐµÐ»Ð°Ñ€ÑƒÑ Ñ€ÑƒÐ±Ð»ÑŒ",
+ "symbol": "BYR"
+ },
+ "BZD": {
+ "name": "белиз доллар",
+ "symbol": "BZD"
+ },
+ "BMD": {
+ "name": "бермуд доллар",
+ "symbol": "BMD"
+ },
+ "BGN": {
+ "name": "болгарийн лев",
+ "symbol": "BGN"
+ },
+ "BOB": {
+ "name": "боливи боливиано",
+ "symbol": "BOB"
+ },
+ "BAM": {
+ "name": "боÑни-герцеговин хөрвөгч марк",
+ "symbol": "BAM"
+ },
+ "BWP": {
+ "name": "БотÑвани пула",
+ "symbol": "BWP"
+ },
+ "BRL": {
+ "name": "бразилийн рил",
+ "symbol": "R$"
+ },
+ "GBP": {
+ "name": "британийн фунт Ñтерлинг",
+ "symbol": "£"
+ },
+ "BND": {
+ "name": "бруней доллар",
+ "symbol": "BND"
+ },
+ "BIF": {
+ "name": "Бурунд франк",
+ "symbol": "BIF"
+ },
+ "BTN": {
+ "name": "бутаны нгултрум",
+ "symbol": "BTN"
+ },
+ "VUV": {
+ "name": "вануатугийн вату",
+ "symbol": "VUV"
+ },
+ "VEF": {
+ "name": "венеÑуÑлийн боливар",
+ "symbol": "VEF"
+ },
+ "VND": {
+ "name": "вьетнамын донг",
+ "symbol": "â‚«"
+ },
+ "GYD": {
+ "name": "гайана доллар",
+ "symbol": "GYD"
+ },
+ "HTG": {
+ "name": "гайтийн гоурд",
+ "symbol": "HTG"
+ },
+ "GMD": {
+ "name": "Гамби далаÑи",
+ "symbol": "GMD"
+ },
+ "GHS": {
+ "name": "Гана Ñеди",
+ "symbol": "GHS"
+ },
+ "GTQ": {
+ "name": "гватемалийн кецал",
+ "symbol": "GTQ"
+ },
+ "GNF": {
+ "name": "Гвиней франк",
+ "symbol": "GNF"
+ },
+ "GIP": {
+ "name": "гибралтар паунд",
+ "symbol": "GIP"
+ },
+ "HNL": {
+ "name": "гондураÑын лемпира",
+ "symbol": "HNL"
+ },
+ "GEL": {
+ "name": "гүржийн лари",
+ "symbol": "GEL"
+ },
+ "DKK": {
+ "name": "данийн крон",
+ "symbol": "DKK"
+ },
+ "DOP": {
+ "name": "доминикын пеÑо",
+ "symbol": "DOP"
+ },
+ "EUR": {
+ "name": "евро",
+ "symbol": "€"
+ },
+ "EGP": {
+ "name": "египет паунд",
+ "symbol": "EGP"
+ },
+ "DJF": {
+ "name": "Жибоути франк",
+ "symbol": "DJF"
+ },
+ "ZMW": {
+ "name": "Замби квача",
+ "symbol": "ZMW"
+ },
+ "XCD": {
+ "name": "зүүн карибийн доллар",
+ "symbol": "EC$"
+ },
+ "ILS": {
+ "name": "израйлийн ÑˆÐ¸Ð½Ñ ÑˆÐµÐºÐµÐ»",
+ "symbol": "₪"
+ },
+ "IDR": {
+ "name": "индонези рупи",
+ "symbol": "IDR"
+ },
+ "IQD": {
+ "name": "ирак динар",
+ "symbol": "IQD"
+ },
+ "IRR": {
+ "name": "иран риал",
+ "symbol": "IRR"
+ },
+ "ISK": {
+ "name": "иÑландийн крон",
+ "symbol": "ISK"
+ },
+ "YER": {
+ "name": "йемен риал",
+ "symbol": "YER"
+ },
+ "JOD": {
+ "name": "йордан динар",
+ "symbol": "JOD"
+ },
+ "CVE": {
+ "name": "Кабо-Верде ÑÑкудо",
+ "symbol": "CVE"
+ },
+ "KZT": {
+ "name": "казахын Ñ‚ÑнгÑ",
+ "symbol": "KZT"
+ },
+ "KYD": {
+ "name": "кайман арлын доллар",
+ "symbol": "KYD"
+ },
+ "KHR": {
+ "name": "камбож риел",
+ "symbol": "KHR"
+ },
+ "CAD": {
+ "name": "канад доллар",
+ "symbol": "CA$"
+ },
+ "QAR": {
+ "name": "катар риал",
+ "symbol": "QAR"
+ },
+ "KES": {
+ "name": "Кени шиллинг",
+ "symbol": "KES"
+ },
+ "COP": {
+ "name": "колумбын пеÑо",
+ "symbol": "COP"
+ },
+ "KMF": {
+ "name": "Комор франк",
+ "symbol": "KMF"
+ },
+ "CDF": {
+ "name": "Конго франк",
+ "symbol": "CDF"
+ },
+ "CRC": {
+ "name": "коÑта рикагийн колон",
+ "symbol": "CRC"
+ },
+ "CUP": {
+ "name": "кубийн пеÑо",
+ "symbol": "CUP"
+ },
+ "CUC": {
+ "name": "кубийн хөрвөгч пеÑо",
+ "symbol": "CUC"
+ },
+ "KWD": {
+ "name": "кувейт динар",
+ "symbol": "KWD"
+ },
+ "KGS": {
+ "name": "кыргызын Ñом",
+ "symbol": "KGS"
+ },
+ "LAK": {
+ "name": "лаоÑын кип",
+ "symbol": "LAK"
+ },
+ "LRD": {
+ "name": "Либери доллар",
+ "symbol": "LRD"
+ },
+ "LBP": {
+ "name": "ливан паунд",
+ "symbol": "LBP"
+ },
+ "LYD": {
+ "name": "ливи доллар",
+ "symbol": "LYD"
+ },
+ "LTL": {
+ "name": "литвийн литаÑ",
+ "symbol": "LTL"
+ },
+ "MRO": {
+ "name": "Мавритан угиÑ",
+ "symbol": "MRO"
+ },
+ "MUR": {
+ "name": "Мавритын рупи",
+ "symbol": "MUR"
+ },
+ "MOP": {
+ "name": "макаогийн патака",
+ "symbol": "MOP"
+ },
+ "MKD": {
+ "name": "македони динар",
+ "symbol": "MKD"
+ },
+ "MWK": {
+ "name": "Малави квача",
+ "symbol": "MWK"
+ },
+ "MYR": {
+ "name": "малайзын рингит",
+ "symbol": "MYR"
+ },
+ "MGA": {
+ "name": "Малайн ариари",
+ "symbol": "MGA"
+ },
+ "MVR": {
+ "name": "мальдив руфиÑ",
+ "symbol": "MVR"
+ },
+ "MAD": {
+ "name": "мароккогийн дирхам",
+ "symbol": "MAD"
+ },
+ "MXN": {
+ "name": "мекÑикийн пеÑо",
+ "symbol": "MX$"
+ },
+ "MZN": {
+ "name": "Мозамбик метикал",
+ "symbol": "MZN"
+ },
+ "MDL": {
+ "name": "молдавийн леу",
+ "symbol": "MDL"
+ },
+ "MMK": {
+ "name": "мьÑнмарын киат",
+ "symbol": "MMK"
+ },
+ "NAD": {
+ "name": "Ðамиби доллар",
+ "symbol": "NAD"
+ },
+ "NGN": {
+ "name": "Ðигери найра",
+ "symbol": "NGN"
+ },
+ "ANG": {
+ "name": "нидерландын Ð°Ð½Ñ‚Ð¸Ð»Ð»ÑŠÑ Ð³ÑƒÐ»Ð´ÐµÑ€",
+ "symbol": "ANG"
+ },
+ "NIO": {
+ "name": "никарагуагийн кордоба",
+ "symbol": "NIO"
+ },
+ "NOK": {
+ "name": "норвегийн крон",
+ "symbol": "NOK"
+ },
+ "OMR": {
+ "name": "омани риал",
+ "symbol": "OMR"
+ },
+ "RUB": {
+ "name": "Ð¾Ñ€Ð¾Ñ Ñ€ÑƒÐ±Ð»ÑŒ",
+ "symbol": "RUB"
+ },
+ "ZAR": {
+ "name": "Өмнөд Ðфрикийн ранд",
+ "symbol": "ZAR"
+ },
+ "KRW": {
+ "name": "өмнөд ÑÐ¾Ð»Ð¾Ð½Ð³Ð¾Ñ Ð²Ð¾Ð½",
+ "symbol": "â‚©"
+ },
+ "SSP": {
+ "name": "өмнөд Ñудан паунд",
+ "symbol": "SSP"
+ },
+ "PKR": {
+ "name": "пакиÑтан рупи",
+ "symbol": "PKR"
+ },
+ "PAB": {
+ "name": "панамын бальбоа",
+ "symbol": "PAB"
+ },
+ "PGK": {
+ "name": "папуа-ÑˆÐ¸Ð½Ñ Ð³Ð²Ð¸Ð½ÐµÐ¹Ð½ кина",
+ "symbol": "PGK"
+ },
+ "PYG": {
+ "name": "парагвайн гуарани",
+ "symbol": "PYG"
+ },
+ "PEN": {
+ "name": "перугийн невоÑоль",
+ "symbol": "PEN"
+ },
+ "PLN": {
+ "name": "польшийн злот",
+ "symbol": "PLN"
+ },
+ "RWF": {
+ "name": "Руанд франк",
+ "symbol": "RWF"
+ },
+ "RON": {
+ "name": "румыны леу",
+ "symbol": "RON"
+ },
+ "WST": {
+ "name": "Ñамоагийн тала",
+ "symbol": "WST"
+ },
+ "STD": {
+ "name": "Сан-Томе ба ПринÑипи добра",
+ "symbol": "STD"
+ },
+ "SAR": {
+ "name": "Ñауди риал",
+ "symbol": "SAR"
+ },
+ "SZL": {
+ "name": "Свазиланд лилангени",
+ "symbol": "SZL"
+ },
+ "SCR": {
+ "name": "Сейшел рупи",
+ "symbol": "SCR"
+ },
+ "SHP": {
+ "name": "Сент Хелена паунд",
+ "symbol": "SHP"
+ },
+ "RSD": {
+ "name": "Ñерб динар",
+ "symbol": "RSD"
+ },
+ "SGD": {
+ "name": "Ñингапур доллар",
+ "symbol": "SGD"
+ },
+ "SYP": {
+ "name": "Ñири паунд",
+ "symbol": "SYP"
+ },
+ "SBD": {
+ "name": "Ñоломон арлын доллар",
+ "symbol": "SBD"
+ },
+ "SOS": {
+ "name": "Сомали шиллинг",
+ "symbol": "SOS"
+ },
+ "SDG": {
+ "name": "Ñудан паунд",
+ "symbol": "SDG"
+ },
+ "SRD": {
+ "name": "Ñуринам доллар",
+ "symbol": "SRD"
+ },
+ "SLL": {
+ "name": "Сьерра Леоне леоне",
+ "symbol": "SLL"
+ },
+ "TJS": {
+ "name": "тажикийн Ñомон",
+ "symbol": "TJS"
+ },
+ "THB": {
+ "name": "тайландын бат",
+ "symbol": "฿"
+ },
+ "TZS": {
+ "name": "Танзани шиллинг",
+ "symbol": "TZS"
+ },
+ "TOP": {
+ "name": "тонгагийн панга",
+ "symbol": "TOP"
+ },
+ "MNT": {
+ "name": "төгрөг",
+ "symbol": "â‚®"
+ },
+ "TTD": {
+ "name": "тринидад ба тобаго доллар",
+ "symbol": "TTD"
+ },
+ "TND": {
+ "name": "Ñ‚ÑƒÐ½Ð¸Ñ Ð´Ð¾Ð»Ð»Ð°Ñ€",
+ "symbol": "TND"
+ },
+ "TRY": {
+ "name": "туркийн лира",
+ "symbol": "TRY"
+ },
+ "TMT": {
+ "name": "туркмен манат",
+ "symbol": "TMT"
+ },
+ "UGX": {
+ "name": "Уганд шиллинг",
+ "symbol": "UGX"
+ },
+ "UZS": {
+ "name": "узбекын Ñом",
+ "symbol": "UZS"
+ },
+ "UAH": {
+ "name": "украйны гривнÑ",
+ "symbol": "UAH"
+ },
+ "HUF": {
+ "name": "унгарийн форинт",
+ "symbol": "HUF"
+ },
+ "UYU": {
+ "name": "уругвайн пеÑо",
+ "symbol": "UYU"
+ },
+ "FJD": {
+ "name": "фижи доллар",
+ "symbol": "FJD"
+ },
+ "PHP": {
+ "name": "филиппин пеÑо",
+ "symbol": "PHP"
+ },
+ "FKP": {
+ "name": "фолклÑнд арлын паунд",
+ "symbol": "FKP"
+ },
+ "XOF": {
+ "name": "Франк КФРBCЕÐО",
+ "symbol": "CFA"
+ },
+ "XAF": {
+ "name": "Франк КФРBEAC",
+ "symbol": "FCFA"
+ },
+ "KPW": {
+ "name": "хойд ÑÐ¾Ð»Ð¾Ð½Ð³Ð¾Ñ Ð²Ð¾Ð½",
+ "symbol": "KPW"
+ },
+ "HKD": {
+ "name": "хонгконг доллар",
+ "symbol": "HK$"
+ },
+ "HRK": {
+ "name": "хорватын куна",
+ "symbol": "HRK"
+ },
+ "CNY": {
+ "name": "Ñ…Ñтад юань",
+ "symbol": "CNÂ¥"
+ },
+ "CZK": {
+ "name": "чехийн коруна",
+ "symbol": "CZK"
+ },
+ "CLP": {
+ "name": "чилийн пеÑо",
+ "symbol": "CLP"
+ },
+ "SEK": {
+ "name": "шведийн крон",
+ "symbol": "SEK"
+ },
+ "CHF": {
+ "name": "швейцарь франк",
+ "symbol": "CHF"
+ },
+ "NZD": {
+ "name": "ÑˆÐ¸Ð½Ñ Ð·ÐµÐ»Ð°Ð½Ð´ доллар",
+ "symbol": "NZ$"
+ },
+ "TWD": {
+ "name": "ÑˆÐ¸Ð½Ñ Ñ‚Ð°Ð¹Ð²Ð°Ð½ доллар",
+ "symbol": "NT$"
+ },
+ "LKR": {
+ "name": "шри-ланк рупи",
+ "symbol": "LKR"
+ },
+ "INR": {
+ "name": "ÑнÑÑ‚Ñ…Ñг рупи",
+ "symbol": "₹"
+ },
+ "ERN": {
+ "name": "Эритрей накфа",
+ "symbol": "ERN"
+ },
+ "ETB": {
+ "name": "Этиоп бирр",
+ "symbol": "ETB"
+ },
+ "JMD": {
+ "name": "Ñмайк доллар",
+ "symbol": "JMD"
+ },
+ "JPY": {
+ "name": "Ñпон иен",
+ "symbol": "JPÂ¥"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/currency/mr.json b/library/intl/resources/currency/mr.json
new file mode 100644
index 000000000..df2614e5b
--- /dev/null
+++ b/library/intl/resources/currency/mr.json
@@ -0,0 +1,634 @@
+{
+ "XOF": {
+ "name": "[CFA] फà¥à¤°à¤à¤• [BCEAO]",
+ "symbol": "CFA"
+ },
+ "XAF": {
+ "name": "[CFA] फà¥à¤°à¤à¤• [BEAC]",
+ "symbol": "FCFA"
+ },
+ "XPF": {
+ "name": "[CFP] फà¥à¤°à¤à¤•",
+ "symbol": "CFPF"
+ },
+ "SVC": {
+ "name": "SVC",
+ "symbol": "SVC"
+ },
+ "ZWL": {
+ "name": "ZWL",
+ "symbol": "ZWL"
+ },
+ "AOA": {
+ "name": "अà¤à¤—ोलन कà¥à¤µà¥…नà¥à¤à¤¾",
+ "symbol": "AOA"
+ },
+ "AZN": {
+ "name": "अà¤à¤°à¤¬à¥ˆà¤à¤¾à¤¨à¥€ मानाट",
+ "symbol": "AZN"
+ },
+ "AFN": {
+ "name": "अफगाण अफगाणी",
+ "symbol": "AFN"
+ },
+ "AWG": {
+ "name": "अरà¥à¤¬à¤¾ फà¥à¤²à¥‹à¤°à¤¿à¤¨",
+ "symbol": "AWG"
+ },
+ "ARS": {
+ "name": "अरà¥à¤œà¥‡à¤‚टाइन पेसो",
+ "symbol": "ARS"
+ },
+ "DZD": {
+ "name": "अलà¥à¤œà¥‡à¤°à¤¿à¤¯à¤¨ दिनार",
+ "symbol": "DZD"
+ },
+ "ALL": {
+ "name": "अलà¥à¤¬à¤¾à¤¨à¤¿à¤¯à¤¨ लेक",
+ "symbol": "ALL"
+ },
+ "ISK": {
+ "name": "आइसलà¤à¤¡à¤¿à¤• कà¥à¤°à¥‹à¤¨à¤¾",
+ "symbol": "ISK"
+ },
+ "AMD": {
+ "name": "आरà¥à¤®à¥‡à¤¨à¤¿à¤¯à¤¨ दà¥à¤°à¥…म",
+ "symbol": "AMD"
+ },
+ "IDR": {
+ "name": "इंडोनेशियन रà¥à¤ªà¥ˆà¤¯à¤¾à¤¹",
+ "symbol": "IDR"
+ },
+ "EGP": {
+ "name": "इजिपà¥à¤¶à¤¿à¤¯à¤¨ पाउंड",
+ "symbol": "EGP"
+ },
+ "ETB": {
+ "name": "इथिओपियन बिर",
+ "symbol": "ETB"
+ },
+ "IQD": {
+ "name": "इराकी दिनार",
+ "symbol": "IQD"
+ },
+ "IRR": {
+ "name": "इराणी रियाल",
+ "symbol": "IRR"
+ },
+ "ERN": {
+ "name": "इरिटà¥à¤°à¤¿à¤¯à¤¨ नाफà¥à¤•à¤¾",
+ "symbol": "ERN"
+ },
+ "ILS": {
+ "name": "ईसà¥à¤¤à¥à¤°à¤¾à¤¯à¤²à¥€ नà¥à¤¯à¥‚ शेकेल",
+ "symbol": "₪"
+ },
+ "UZS": {
+ "name": "उà¤à¤¬à¥‡à¤•à¤¿à¤¸à¥à¤¤à¤¾à¤¨ सॉम",
+ "symbol": "UZS"
+ },
+ "KPW": {
+ "name": "उतà¥à¤¤à¤° कोरियन वॉन",
+ "symbol": "KPW"
+ },
+ "UYU": {
+ "name": "उरà¥à¤—à¥à¤µà¥‡à¤šà¤¾ पेसो",
+ "symbol": "UYU"
+ },
+ "AUD": {
+ "name": "ऑसà¥à¤Ÿà¥à¤°à¥‡à¤²à¤¿à¤¯à¤¨ डॉलर",
+ "symbol": "A$"
+ },
+ "OMR": {
+ "name": "ओमानी रियाल",
+ "symbol": "OMR"
+ },
+ "KHR": {
+ "name": "कंबोडियन रियेल",
+ "symbol": "KHR"
+ },
+ "KZT": {
+ "name": "कà¤à¤¾à¤•à¤¿à¤¸à¥à¤¤à¤¾à¤¨à¥€ तेंगे",
+ "symbol": "KZT"
+ },
+ "QAR": {
+ "name": "कतारी रियाल",
+ "symbol": "QAR"
+ },
+ "CDF": {
+ "name": "काà¤à¤—ोलीज फà¥à¤°à¤à¤•",
+ "symbol": "CDF"
+ },
+ "KGS": {
+ "name": "किरगिसà¥à¤¤à¤¾à¤¨à¥€ सॉम",
+ "symbol": "KGS"
+ },
+ "KWD": {
+ "name": "कà¥à¤µà¥ˆà¤¤à¥€ दिनार",
+ "symbol": "KWD"
+ },
+ "CAD": {
+ "name": "कॅनडियन डॉलर",
+ "symbol": "CA$"
+ },
+ "KES": {
+ "name": "केनियन शिलिंग",
+ "symbol": "KES"
+ },
+ "CVE": {
+ "name": "केप वà¥à¤¹à¤°à¥à¤¡à¥‡à¤¯à¤¨ à¤à¤¸à¥à¤•à¥à¤¡à¥‹",
+ "symbol": "CVE"
+ },
+ "KYD": {
+ "name": "केमेन आयलॅंड डॉलर",
+ "symbol": "KYD"
+ },
+ "COP": {
+ "name": "कोलंबियन पेसो",
+ "symbol": "COP"
+ },
+ "KMF": {
+ "name": "कोलोरियन फà¥à¤°à¤à¤•",
+ "symbol": "KMF"
+ },
+ "CRC": {
+ "name": "कोसà¥à¤Ÿà¤¾ रिका कोलोन",
+ "symbol": "CRC"
+ },
+ "CUP": {
+ "name": "कà¥à¤¯à¥‚बन पेसो",
+ "symbol": "CUP"
+ },
+ "CUC": {
+ "name": "कà¥à¤¯à¥‚बन विनिमय पेसो",
+ "symbol": "CUC"
+ },
+ "HRK": {
+ "name": "कà¥à¤°à¥‹à¤à¤¶à¤¿à¤¯à¤¨ कूना",
+ "symbol": "HRK"
+ },
+ "GYD": {
+ "name": "गयाना डॉलर",
+ "symbol": "GYD"
+ },
+ "GMD": {
+ "name": "गामà¥à¤¬à¤¿à¤¯à¤¨ डालासी",
+ "symbol": "GMD"
+ },
+ "GNF": {
+ "name": "गिनी फà¥à¤°à¤à¤•",
+ "symbol": "GNF"
+ },
+ "GTQ": {
+ "name": "गà¥à¤µà¤¾à¤Ÿà¥‡à¤®à¤¾à¤²à¤¾à¤šà¥‡ कà¥à¤µà¥‡à¤¤à¥à¤à¤¾à¤²",
+ "symbol": "GTQ"
+ },
+ "GHS": {
+ "name": "घानीयन सेडी",
+ "symbol": "GHS"
+ },
+ "CLP": {
+ "name": "चिली पेसो",
+ "symbol": "CLP"
+ },
+ "CNY": {
+ "name": "चीनी यà¥à¤†à¤¨",
+ "symbol": "CNÂ¥"
+ },
+ "JPY": {
+ "name": "जपानी येन",
+ "symbol": "JPÂ¥"
+ },
+ "JMD": {
+ "name": "जमैकन डॉलर",
+ "symbol": "JMD"
+ },
+ "DJF": {
+ "name": "जिबौटियन फà¥à¤°à¤à¤•",
+ "symbol": "DJF"
+ },
+ "GIP": {
+ "name": "जिबà¥à¤°à¤¾à¤²à¥à¤Ÿà¤° पाउंड",
+ "symbol": "GIP"
+ },
+ "GEL": {
+ "name": "जॉरà¥à¤œà¤¿à¤¯à¤¨ लारी",
+ "symbol": "GEL"
+ },
+ "JOD": {
+ "name": "जॉरà¥à¤¡à¤¨à¤¿à¤¯à¤¨ दिनार",
+ "symbol": "JOD"
+ },
+ "ZMW": {
+ "name": "à¤à¤¾à¤‚बियन कà¥à¤µà¤¾à¤šà¤¾",
+ "symbol": "ZMW"
+ },
+ "CZK": {
+ "name": "à¤à¥‡à¤• पà¥à¤°à¤œà¤¾à¤¸à¤¤à¥à¤¤à¤¾à¤• कोरà¥à¤¨à¤¾",
+ "symbol": "CZK"
+ },
+ "TZS": {
+ "name": "टांà¤à¤¾à¤¨à¤¿à¤¯à¤¨ शिलिंग",
+ "symbol": "TZS"
+ },
+ "TOP": {
+ "name": "टोंगा पाआंगा",
+ "symbol": "TOP"
+ },
+ "TND": {
+ "name": "टà¥à¤¯à¥‚निशियन दिनार",
+ "symbol": "TND"
+ },
+ "DKK": {
+ "name": "डॅनिश कà¥à¤°à¥‹à¤¨",
+ "symbol": "DKK"
+ },
+ "DOP": {
+ "name": "डोमिनिकन पेसो",
+ "symbol": "DOP"
+ },
+ "TJS": {
+ "name": "ताजकीसà¥à¤¤à¤¾à¤¨à¥€ सोमोनी",
+ "symbol": "TJS"
+ },
+ "TMT": {
+ "name": "तà¥à¤°à¥à¤•à¤®à¥‡à¤¨à¤¿à¤¸à¥à¤¤à¤¾à¤¨à¥€ मानाट",
+ "symbol": "TMT"
+ },
+ "TRY": {
+ "name": "तà¥à¤°à¥à¤•à¥€ लिरा",
+ "symbol": "TRY"
+ },
+ "TTD": {
+ "name": "तà¥à¤°à¤¿à¤¨à¤¿à¤¦à¤¾à¤¦ आणि टोबॅगो डॉलर",
+ "symbol": "TTD"
+ },
+ "THB": {
+ "name": "थाई बाहत",
+ "symbol": "฿"
+ },
+ "ZAR": {
+ "name": "दकà¥à¤·à¤¿à¤£ आफà¥à¤°à¤¿à¤•à¥€ रà¤à¤¡",
+ "symbol": "ZAR"
+ },
+ "KRW": {
+ "name": "दकà¥à¤·à¤¿à¤£ कोरियन वॉन",
+ "symbol": "â‚©"
+ },
+ "SSP": {
+ "name": "दकà¥à¤·à¤¿à¤£ सà¥à¤¦à¤¾à¤¨à¥€ पाउंड",
+ "symbol": "SSP"
+ },
+ "NAD": {
+ "name": "नमिबियन डॉलर",
+ "symbol": "NAD"
+ },
+ "NGN": {
+ "name": "नायजेरियन नायरा",
+ "symbol": "NGN"
+ },
+ "NIO": {
+ "name": "निकारागà¥à¤µà¥‡à¤šà¤¾ कोरà¥à¤¡à¥‹à¤¬à¤¾",
+ "symbol": "NIO"
+ },
+ "ANG": {
+ "name": "नेदरलà¤à¤¡à¤šà¤¾ अà¤à¤Ÿà¤¿à¤²à¥€à¤¨ गिलà¥à¤¡à¤°",
+ "symbol": "ANG"
+ },
+ "NPR": {
+ "name": "नेपाळी रà¥à¤ªà¤¯à¤¾",
+ "symbol": "NPR"
+ },
+ "NOK": {
+ "name": "नॉरà¥à¤µà¥‡à¤œà¤¿à¤¯à¤¨ कà¥à¤°à¥‹à¤¨",
+ "symbol": "NOK"
+ },
+ "TWD": {
+ "name": "नà¥à¤¯à¥‚ तैवान डॉलर",
+ "symbol": "NT$"
+ },
+ "NZD": {
+ "name": "नà¥à¤¯à¥‚à¤à¥€à¤²à¤à¤¡ डॉलर",
+ "symbol": "NZ$"
+ },
+ "PAB": {
+ "name": "पनामा बालà¥à¤¬à¥‹à¤†",
+ "symbol": "PAB"
+ },
+ "PYG": {
+ "name": "परागà¥à¤µà¥‡ गà¥à¤µà¤¾à¤°à¤¾à¤¨à¥€",
+ "symbol": "PYG"
+ },
+ "PKR": {
+ "name": "पाकिसà¥à¤¤à¤¾à¤¨à¥€ रà¥à¤ªà¤¯à¤¾",
+ "symbol": "PKR"
+ },
+ "PGK": {
+ "name": "पापà¥à¤† नà¥à¤¯à¥‚ गिनीयन किना",
+ "symbol": "PGK"
+ },
+ "XCD": {
+ "name": "पूरà¥à¤µ कॅरीबियन डॉलर",
+ "symbol": "EC$"
+ },
+ "PEN": {
+ "name": "पेरà¥à¤µà¤¿à¤¯à¤¨ नà¥à¤‡à¤µà¥à¤¹à¥‹ सोल",
+ "symbol": "PEN"
+ },
+ "PLN": {
+ "name": "पोलिश à¤à¥à¤²à¥‰à¤Ÿà¥€",
+ "symbol": "PLN"
+ },
+ "FJD": {
+ "name": "फिजियन डॉलर",
+ "symbol": "FJD"
+ },
+ "PHP": {
+ "name": "फिलिपिनी पेसो",
+ "symbol": "PHP"
+ },
+ "FKP": {
+ "name": "फॉकलंड आयलंड पाउंड",
+ "symbol": "FKP"
+ },
+ "BMD": {
+ "name": "बरà¥à¤®à¥à¤¡à¤¾ डॉलर",
+ "symbol": "BMD"
+ },
+ "BGN": {
+ "name": "बलà¥à¤—ेरियन लेव",
+ "symbol": "BGN"
+ },
+ "BSD": {
+ "name": "बहामी डॉलर",
+ "symbol": "BSD"
+ },
+ "BDT": {
+ "name": "बांगलादेशी टका",
+ "symbol": "BDT"
+ },
+ "BBD": {
+ "name": "बारà¥à¤¬à¤¾à¤¡à¤¿à¤¯à¤¨ डॉलर",
+ "symbol": "BBD"
+ },
+ "BHD": {
+ "name": "बाहरिनी दिनार",
+ "symbol": "BHD"
+ },
+ "BIF": {
+ "name": "बà¥à¤°à¥à¤¡à¤¿à¤¯à¤¨ फà¥à¤°à¤à¤•",
+ "symbol": "BIF"
+ },
+ "BYR": {
+ "name": "बेलारà¥à¤¶à¤¿à¤¯à¤¨ रà¥à¤¬à¤²",
+ "symbol": "BYR"
+ },
+ "BZD": {
+ "name": "बेलीठडॉलर",
+ "symbol": "BZD"
+ },
+ "BWP": {
+ "name": "बोटà¥à¤¸à¤µà¤¾à¤¨à¤¾ पà¥à¤²à¤¾",
+ "symbol": "BWP"
+ },
+ "BOB": {
+ "name": "बोलिवà¥à¤¹à¤¿à¤¯à¤¨ बोलिवà¥à¤¹à¤¿à¤¯à¤¾à¤¨à¥‹",
+ "symbol": "BOB"
+ },
+ "BAM": {
+ "name": "बोसà¥à¤¨à¤¿à¤¯à¤¾-हरà¥à¤œà¥‡à¤—ोविना विनिमय मारà¥à¤•",
+ "symbol": "BAM"
+ },
+ "BRL": {
+ "name": "बà¥à¤°à¤¾à¤à¤¿à¤²à¤¿à¤¯à¤¨ रियाल",
+ "symbol": "R$"
+ },
+ "GBP": {
+ "name": "बà¥à¤°à¤¿à¤Ÿà¤¿à¤¶ पाऊंड सà¥à¤Ÿà¤°à¥à¤²à¤¿à¤‚ग",
+ "symbol": "£"
+ },
+ "BND": {
+ "name": "बà¥à¤°à¥à¤¨à¥‡à¤ˆ डॉलर",
+ "symbol": "BND"
+ },
+ "INR": {
+ "name": "भारतीय रà¥à¤ªà¤¯à¤¾",
+ "symbol": "₹"
+ },
+ "BTN": {
+ "name": "भूतानी à¤à¤‚गलà¥à¤Ÿà¥à¤°à¤®",
+ "symbol": "BTN"
+ },
+ "MNT": {
+ "name": "मंगोलियन टà¥à¤—à¥à¤°à¤¿à¤•",
+ "symbol": "MNT"
+ },
+ "MYR": {
+ "name": "मलेशियन रिंगिट",
+ "symbol": "MYR"
+ },
+ "MVR": {
+ "name": "मालदीवियन रà¥à¤«à¤¿à¤¯à¤¾",
+ "symbol": "MVR"
+ },
+ "MGA": {
+ "name": "मालागासी à¤à¤°à¤¿à¤¯à¤¾à¤°à¥€",
+ "symbol": "MGA"
+ },
+ "MWK": {
+ "name": "मालावियन कà¥à¤µà¤¾à¤šà¤¾",
+ "symbol": "MWK"
+ },
+ "MOP": {
+ "name": "मॅकॅनीजॠपटाका",
+ "symbol": "MOP"
+ },
+ "MKD": {
+ "name": "मॅसेडोनियन देनार",
+ "symbol": "MKD"
+ },
+ "MXN": {
+ "name": "मेकà¥à¤¸à¤¿à¤•à¥‹ पेसो",
+ "symbol": "MX$"
+ },
+ "MRO": {
+ "name": "मॉरिटानियन ओगिया",
+ "symbol": "MRO"
+ },
+ "MUR": {
+ "name": "मॉरिशियन रà¥à¤ªà¥€",
+ "symbol": "MUR"
+ },
+ "MZN": {
+ "name": "मोà¤à¤¾à¤‚बिकन मेटिकल",
+ "symbol": "MZN"
+ },
+ "MAD": {
+ "name": "मोरोकà¥à¤•à¥‹ दिरहॅम",
+ "symbol": "MAD"
+ },
+ "MDL": {
+ "name": "मोलà¥à¤¡à¥‹à¤µà¤¨ लेउ",
+ "symbol": "MDL"
+ },
+ "MMK": {
+ "name": "मà¥à¤¯à¤¾à¤¨à¤®à¤¾à¤° कà¥à¤¯à¤¾à¤Ÿ",
+ "symbol": "MMK"
+ },
+ "UAH": {
+ "name": "यà¥à¤•à¥à¤°à¥‡à¤¨à¤¿à¤¯à¤¨ रिवनिया",
+ "symbol": "UAH"
+ },
+ "UGX": {
+ "name": "यà¥à¤—ांडा शिलिंग",
+ "symbol": "UGX"
+ },
+ "EUR": {
+ "name": "यà¥à¤°à¥‹",
+ "symbol": "€"
+ },
+ "USD": {
+ "name": "यूà¤à¤¸ डॉलर",
+ "symbol": "$"
+ },
+ "YER": {
+ "name": "येमेनी रियाल",
+ "symbol": "YER"
+ },
+ "RWF": {
+ "name": "रवांडा फà¥à¤°à¤à¤•",
+ "symbol": "RWF"
+ },
+ "RUB": {
+ "name": "रशियन रà¥à¤¬à¤²",
+ "symbol": "RUB"
+ },
+ "RON": {
+ "name": "रोमानियन लेऊ",
+ "symbol": "RON"
+ },
+ "LRD": {
+ "name": "लाइबेरियन डॉलर",
+ "symbol": "LRD"
+ },
+ "LTL": {
+ "name": "लिथà¥à¤†à¤¨à¤¿à¤¯à¤¨ लिटास",
+ "symbol": "LTL"
+ },
+ "LYD": {
+ "name": "लिबियाचा दिनार",
+ "symbol": "LYD"
+ },
+ "LAK": {
+ "name": "लेओशियन किप",
+ "symbol": "LAK"
+ },
+ "LBP": {
+ "name": "लेबनीज पाउंड",
+ "symbol": "LBP"
+ },
+ "LSL": {
+ "name": "लेसोटो लोटी",
+ "symbol": "LSL"
+ },
+ "VUV": {
+ "name": "वानाटॠवाटà¥",
+ "symbol": "VUV"
+ },
+ "VND": {
+ "name": "वà¥à¤¹à¤¿à¤à¤¤à¤¨à¤¾à¤®à¥€ डोंग",
+ "symbol": "â‚«"
+ },
+ "VEF": {
+ "name": "वà¥à¤¹à¥‡à¤¨à¥‡à¤à¥à¤à¤²à¤¾ बोलिवà¥à¤¹à¤¾à¤°",
+ "symbol": "VEF"
+ },
+ "LKR": {
+ "name": "शà¥à¤°à¥€à¤²à¤‚कन रà¥à¤ªà¥€",
+ "symbol": "LKR"
+ },
+ "AED": {
+ "name": "संयà¥à¤•à¥à¤¤ अरब अमीरात दिरहॅम",
+ "symbol": "AED"
+ },
+ "RSD": {
+ "name": "सरà¥à¤¬à¤¿à¤¯à¤¨ दिनार",
+ "symbol": "RSD"
+ },
+ "STD": {
+ "name": "साओ टोम आणि पà¥à¤°à¤¿à¤¨à¥à¤¸à¤¿à¤ªà¥‡ डोबरा",
+ "symbol": "STD"
+ },
+ "WST": {
+ "name": "सामोअन टाला",
+ "symbol": "WST"
+ },
+ "SGD": {
+ "name": "सिंगापूर डॉलर",
+ "symbol": "SGD"
+ },
+ "SLL": {
+ "name": "सिà¤à¤°à¤¾ लिऑनचा लिऑन",
+ "symbol": "SLL"
+ },
+ "SYP": {
+ "name": "सीरियन पाउंड",
+ "symbol": "SYP"
+ },
+ "SDG": {
+ "name": "सà¥à¤¦à¤¾à¤¨à¥€ पाउंड",
+ "symbol": "SDG"
+ },
+ "SRD": {
+ "name": "सà¥à¤°à¤¿à¤¨à¤¾à¤®à¥€ डॉलर",
+ "symbol": "SRD"
+ },
+ "SHP": {
+ "name": "सेंट हेलेना पाउंड",
+ "symbol": "SHP"
+ },
+ "SCR": {
+ "name": "सेशेलोईस रà¥à¤ªà¥€",
+ "symbol": "SCR"
+ },
+ "SOS": {
+ "name": "सोमाली शिलिंग",
+ "symbol": "SOS"
+ },
+ "SBD": {
+ "name": "सोलोमन आयलà¤à¤¡à¥à¤¸ डॉलर",
+ "symbol": "SBD"
+ },
+ "SAR": {
+ "name": "सौदी रियाल",
+ "symbol": "SAR"
+ },
+ "SZL": {
+ "name": "सà¥à¤µà¤¾à¤à¥€ लीलांगेनी",
+ "symbol": "SZL"
+ },
+ "CHF": {
+ "name": "सà¥à¤µà¤¿à¤¸ फà¥à¤°à¤à¤•",
+ "symbol": "CHF"
+ },
+ "SEK": {
+ "name": "सà¥à¤µà¥€à¤¡à¤¿à¤¶ कà¥à¤°à¥‹à¤¨à¤¾",
+ "symbol": "SEK"
+ },
+ "HUF": {
+ "name": "हंगेरियन फॉरिनà¥à¤Ÿ",
+ "symbol": "HUF"
+ },
+ "HKD": {
+ "name": "हाà¤à¤—काà¤à¤— डॉलर",
+ "symbol": "HK$"
+ },
+ "HTG": {
+ "name": "हैती गोअरà¥à¤¡",
+ "symbol": "HTG"
+ },
+ "HNL": {
+ "name": "होंडà¥à¤°à¤¾ लेमà¥à¤ªà¤¿à¤¯à¤°à¤¾",
+ "symbol": "HNL"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/currency/ms.json b/library/intl/resources/currency/ms.json
new file mode 100644
index 000000000..cbecbb720
--- /dev/null
+++ b/library/intl/resources/currency/ms.json
@@ -0,0 +1,634 @@
+{
+ "AFN": {
+ "name": "Afghani Afghanistan",
+ "symbol": "AFN"
+ },
+ "MGA": {
+ "name": "Ariary Malagasy",
+ "symbol": "MGA"
+ },
+ "THB": {
+ "name": "Baht Thai",
+ "symbol": "฿"
+ },
+ "PAB": {
+ "name": "Balboa Panama",
+ "symbol": "PAB"
+ },
+ "ETB": {
+ "name": "Birr Ethiopia",
+ "symbol": "ETB"
+ },
+ "VEF": {
+ "name": "Bolivar Venezuela",
+ "symbol": "VEF"
+ },
+ "BOB": {
+ "name": "Boliviano Bolivia",
+ "symbol": "BOB"
+ },
+ "GHS": {
+ "name": "Cedi Ghana",
+ "symbol": "GHS"
+ },
+ "CRC": {
+ "name": "Colon Costa Rica",
+ "symbol": "CRC"
+ },
+ "NIO": {
+ "name": "Cordoba Nicaragua",
+ "symbol": "NIO"
+ },
+ "GMD": {
+ "name": "Dalasi Gambia",
+ "symbol": "GMD"
+ },
+ "MKD": {
+ "name": "Denar Macedonia",
+ "symbol": "MKD"
+ },
+ "DZD": {
+ "name": "Dinar Algeria",
+ "symbol": "DZD"
+ },
+ "BHD": {
+ "name": "Dinar Bahrain",
+ "symbol": "BHD"
+ },
+ "IQD": {
+ "name": "Dinar Iraq",
+ "symbol": "IQD"
+ },
+ "JOD": {
+ "name": "Dinar Jordan",
+ "symbol": "JOD"
+ },
+ "KWD": {
+ "name": "Dinar Kuwait",
+ "symbol": "KWD"
+ },
+ "LYD": {
+ "name": "Dinar Libya",
+ "symbol": "LYD"
+ },
+ "RSD": {
+ "name": "Dinar Serbia",
+ "symbol": "RSD"
+ },
+ "TND": {
+ "name": "Dinar Tunisia",
+ "symbol": "TND"
+ },
+ "AED": {
+ "name": "Dirham Emiriah Arab Bersatu",
+ "symbol": "AED"
+ },
+ "MAD": {
+ "name": "Dirham Maghribi",
+ "symbol": "MAD"
+ },
+ "STD": {
+ "name": "Dobra Sao Tome dan Principe",
+ "symbol": "STD"
+ },
+ "USD": {
+ "name": "Dolar AS",
+ "symbol": "USD"
+ },
+ "AUD": {
+ "name": "Dolar Australia",
+ "symbol": "A$"
+ },
+ "BSD": {
+ "name": "Dolar Bahamas",
+ "symbol": "BSD"
+ },
+ "BBD": {
+ "name": "Dolar Barbados",
+ "symbol": "BBD"
+ },
+ "BZD": {
+ "name": "Dolar Belize",
+ "symbol": "BZD"
+ },
+ "BMD": {
+ "name": "Dolar Bermuda",
+ "symbol": "BMD"
+ },
+ "BND": {
+ "name": "Dolar Brunei",
+ "symbol": "BND"
+ },
+ "XCD": {
+ "name": "Dolar Caribbean Timur",
+ "symbol": "EC$"
+ },
+ "FJD": {
+ "name": "Dolar Fiji",
+ "symbol": "FJD"
+ },
+ "GYD": {
+ "name": "Dolar Guyana",
+ "symbol": "GYD"
+ },
+ "HKD": {
+ "name": "Dolar Hong Kong",
+ "symbol": "HK$"
+ },
+ "JMD": {
+ "name": "Dolar Jamaica",
+ "symbol": "JMD"
+ },
+ "CAD": {
+ "name": "Dolar Kanada",
+ "symbol": "CAD"
+ },
+ "KYD": {
+ "name": "Dolar Kepulauan Cayman",
+ "symbol": "KYD"
+ },
+ "SBD": {
+ "name": "Dolar Kepulauan Solomon",
+ "symbol": "SBD"
+ },
+ "LRD": {
+ "name": "Dolar Liberia",
+ "symbol": "LRD"
+ },
+ "NAD": {
+ "name": "Dolar Namibia",
+ "symbol": "NAD"
+ },
+ "NZD": {
+ "name": "Dolar New Zealand",
+ "symbol": "NZ$"
+ },
+ "SGD": {
+ "name": "Dolar Singapura",
+ "symbol": "SGD"
+ },
+ "SRD": {
+ "name": "Dolar Surinam",
+ "symbol": "SRD"
+ },
+ "TWD": {
+ "name": "Dolar Taiwan Baru",
+ "symbol": "NT$"
+ },
+ "TTD": {
+ "name": "Dolar Trinidad dan Tobago",
+ "symbol": "TTD"
+ },
+ "VND": {
+ "name": "Dong Vietnam",
+ "symbol": "â‚«"
+ },
+ "AMD": {
+ "name": "Dram Armenia",
+ "symbol": "AMD"
+ },
+ "ERN": {
+ "name": "ERN",
+ "symbol": "ERN"
+ },
+ "CVE": {
+ "name": "Escudo Tanjung Verde",
+ "symbol": "CVE"
+ },
+ "EUR": {
+ "name": "Euro",
+ "symbol": "€"
+ },
+ "AWG": {
+ "name": "Florin Aruba",
+ "symbol": "AWG"
+ },
+ "HUF": {
+ "name": "Forint Hungary",
+ "symbol": "HUF"
+ },
+ "BIF": {
+ "name": "Franc Burundia",
+ "symbol": "BIF"
+ },
+ "XOF": {
+ "name": "Franc CFA BCEAO",
+ "symbol": "CFA"
+ },
+ "XAF": {
+ "name": "Franc CFA BEAC",
+ "symbol": "FCFA"
+ },
+ "XPF": {
+ "name": "Franc CFP",
+ "symbol": "CFPF"
+ },
+ "KMF": {
+ "name": "Franc Comoria",
+ "symbol": "KMF"
+ },
+ "CDF": {
+ "name": "Franc Congo",
+ "symbol": "CDF"
+ },
+ "DJF": {
+ "name": "Franc Djibouti",
+ "symbol": "DJF"
+ },
+ "GNF": {
+ "name": "Franc Guinea",
+ "symbol": "GNF"
+ },
+ "RWF": {
+ "name": "Franc Rwanda",
+ "symbol": "RWF"
+ },
+ "CHF": {
+ "name": "Franc Switzerland",
+ "symbol": "CHF"
+ },
+ "HTG": {
+ "name": "Gourde Haiti",
+ "symbol": "HTG"
+ },
+ "PYG": {
+ "name": "Guarani Paraguay",
+ "symbol": "PYG"
+ },
+ "ANG": {
+ "name": "Guilder Antillean Netherland",
+ "symbol": "ANG"
+ },
+ "UAH": {
+ "name": "Hryvnia Ukraine",
+ "symbol": "UAH"
+ },
+ "PGK": {
+ "name": "Kina Papua New Guinea",
+ "symbol": "PGK"
+ },
+ "LAK": {
+ "name": "Kip Laos",
+ "symbol": "LAK"
+ },
+ "CZK": {
+ "name": "Koruna Republik Czech",
+ "symbol": "CZK"
+ },
+ "ISK": {
+ "name": "Krona Iceland",
+ "symbol": "ISK"
+ },
+ "SEK": {
+ "name": "Krona Sweden",
+ "symbol": "SEK"
+ },
+ "DKK": {
+ "name": "Krone Denmark",
+ "symbol": "DKK"
+ },
+ "NOK": {
+ "name": "Krone Norway",
+ "symbol": "NOK"
+ },
+ "HRK": {
+ "name": "Kuna Croatia",
+ "symbol": "HRK"
+ },
+ "MWK": {
+ "name": "Kwacha Malawi",
+ "symbol": "MWK"
+ },
+ "ZMW": {
+ "name": "Kwacha Zambia",
+ "symbol": "ZMW"
+ },
+ "AOA": {
+ "name": "Kwanza Angola",
+ "symbol": "AOA"
+ },
+ "MMK": {
+ "name": "Kyat Myanma",
+ "symbol": "MMK"
+ },
+ "GEL": {
+ "name": "Lari Georgia",
+ "symbol": "GEL"
+ },
+ "ALL": {
+ "name": "Lek Albania",
+ "symbol": "ALL"
+ },
+ "HNL": {
+ "name": "Lempira Honduras",
+ "symbol": "HNL"
+ },
+ "SLL": {
+ "name": "Leone Sierra Leone",
+ "symbol": "SLL"
+ },
+ "MDL": {
+ "name": "Leu Moldova",
+ "symbol": "MDL"
+ },
+ "RON": {
+ "name": "Leu Romania",
+ "symbol": "RON"
+ },
+ "BGN": {
+ "name": "Lev Bulgaria",
+ "symbol": "BGN"
+ },
+ "SZL": {
+ "name": "Lilangeni Swazi",
+ "symbol": "SZL"
+ },
+ "TRY": {
+ "name": "Lira Turki",
+ "symbol": "TRY"
+ },
+ "LTL": {
+ "name": "Litas Lithuania",
+ "symbol": "LTL"
+ },
+ "LSL": {
+ "name": "Loti Lesotho",
+ "symbol": "LSL"
+ },
+ "AZN": {
+ "name": "Manat Azerbaijan",
+ "symbol": "AZN"
+ },
+ "TMT": {
+ "name": "Manat Turkmenistan",
+ "symbol": "TMT"
+ },
+ "BAM": {
+ "name": "Mark Boleh Tukar Bosnia-Herzegovina",
+ "symbol": "BAM"
+ },
+ "MZN": {
+ "name": "Metikal Mozambique",
+ "symbol": "MZN"
+ },
+ "NGN": {
+ "name": "Naira Nigeria",
+ "symbol": "NGN"
+ },
+ "BTN": {
+ "name": "Ngultrum Bhutan",
+ "symbol": "BTN"
+ },
+ "PEN": {
+ "name": "Nuevo Sol Peru",
+ "symbol": "PEN"
+ },
+ "MRO": {
+ "name": "Ouguiya Mauritania",
+ "symbol": "MRO"
+ },
+ "MOP": {
+ "name": "Pataca Macau",
+ "symbol": "MOP"
+ },
+ "GIP": {
+ "name": "Paun Gibraltar",
+ "symbol": "GIP"
+ },
+ "FKP": {
+ "name": "Paun Kepulauan Falkland",
+ "symbol": "FKP"
+ },
+ "LBP": {
+ "name": "Paun Lubnan",
+ "symbol": "LBP"
+ },
+ "EGP": {
+ "name": "Paun Mesir",
+ "symbol": "EGP"
+ },
+ "SHP": {
+ "name": "Paun Saint Helena",
+ "symbol": "SHP"
+ },
+ "GBP": {
+ "name": "Paun Sterling British",
+ "symbol": "£"
+ },
+ "SDG": {
+ "name": "Paun Sudan",
+ "symbol": "SDG"
+ },
+ "SSP": {
+ "name": "Paun Sudan selatan",
+ "symbol": "SSP"
+ },
+ "SYP": {
+ "name": "Paun Syria",
+ "symbol": "SYP"
+ },
+ "ARS": {
+ "name": "Peso Argentina",
+ "symbol": "ARS"
+ },
+ "CUC": {
+ "name": "Peso Boleh Tukar Cuba",
+ "symbol": "CUC"
+ },
+ "CLP": {
+ "name": "Peso Chile",
+ "symbol": "CLP"
+ },
+ "COP": {
+ "name": "Peso Colombia",
+ "symbol": "COP"
+ },
+ "CUP": {
+ "name": "Peso Cuba",
+ "symbol": "CUP"
+ },
+ "DOP": {
+ "name": "Peso Dominican",
+ "symbol": "DOP"
+ },
+ "PHP": {
+ "name": "Peso Filipina",
+ "symbol": "PHP"
+ },
+ "MXN": {
+ "name": "Peso Mexico",
+ "symbol": "MXN"
+ },
+ "BWP": {
+ "name": "Pula Botswana",
+ "symbol": "BWP"
+ },
+ "GTQ": {
+ "name": "Quetzal Guatemala",
+ "symbol": "GTQ"
+ },
+ "ZAR": {
+ "name": "Rand Afrika Selatan",
+ "symbol": "ZAR"
+ },
+ "BRL": {
+ "name": "Real Brazil",
+ "symbol": "R$"
+ },
+ "IRR": {
+ "name": "Rial Iran",
+ "symbol": "IRR"
+ },
+ "OMR": {
+ "name": "Rial Oman",
+ "symbol": "OMR"
+ },
+ "QAR": {
+ "name": "Rial Qatar",
+ "symbol": "QAR"
+ },
+ "YER": {
+ "name": "Rial Yaman",
+ "symbol": "YER"
+ },
+ "KHR": {
+ "name": "Riel Kemboja",
+ "symbol": "KHR"
+ },
+ "MYR": {
+ "name": "Ringgit Malaysia",
+ "symbol": "RM"
+ },
+ "SAR": {
+ "name": "Riyal Saudi",
+ "symbol": "SAR"
+ },
+ "BYR": {
+ "name": "Ruble Belarus",
+ "symbol": "BYR"
+ },
+ "RUB": {
+ "name": "Ruble Rusia",
+ "symbol": "RUB"
+ },
+ "MVR": {
+ "name": "Rufiyaa Maldives",
+ "symbol": "MVR"
+ },
+ "INR": {
+ "name": "Rupee India",
+ "symbol": "₹"
+ },
+ "MUR": {
+ "name": "Rupee Mauritia",
+ "symbol": "MUR"
+ },
+ "NPR": {
+ "name": "Rupee Nepal",
+ "symbol": "NPR"
+ },
+ "PKR": {
+ "name": "Rupee Pakistan",
+ "symbol": "PKR"
+ },
+ "SCR": {
+ "name": "Rupee Seychelles",
+ "symbol": "SCR"
+ },
+ "LKR": {
+ "name": "Rupee Sri Lanka",
+ "symbol": "LKR"
+ },
+ "IDR": {
+ "name": "Rupiah Indonesia",
+ "symbol": "IDR"
+ },
+ "ILS": {
+ "name": "Sheqel Baru Israel",
+ "symbol": "₪"
+ },
+ "KGS": {
+ "name": "Som Kyrgystani",
+ "symbol": "KGS"
+ },
+ "UZS": {
+ "name": "Som Uzbekistan",
+ "symbol": "UZS"
+ },
+ "TJS": {
+ "name": "Somoni Tajikistan",
+ "symbol": "TJS"
+ },
+ "SVC": {
+ "name": "SVC",
+ "symbol": "SVC"
+ },
+ "KES": {
+ "name": "Syiling Kenya",
+ "symbol": "KES"
+ },
+ "SOS": {
+ "name": "Syiling Somali",
+ "symbol": "SOS"
+ },
+ "TZS": {
+ "name": "Syiling Tanzania",
+ "symbol": "TZS"
+ },
+ "UGX": {
+ "name": "Syiling Uganda",
+ "symbol": "UGX"
+ },
+ "BDT": {
+ "name": "Taka Bangladesh",
+ "symbol": "BDT"
+ },
+ "WST": {
+ "name": "Tala Samoa",
+ "symbol": "WST"
+ },
+ "KZT": {
+ "name": "Tenge Kazakhstan",
+ "symbol": "KZT"
+ },
+ "TOP": {
+ "name": "Tongan Paʻanga",
+ "symbol": "TOP"
+ },
+ "MNT": {
+ "name": "Tugrik Mongolia",
+ "symbol": "MNT"
+ },
+ "UYU": {
+ "name": "UYU",
+ "symbol": "UYU"
+ },
+ "VUV": {
+ "name": "Vatu Vanuatu",
+ "symbol": "VUV"
+ },
+ "KRW": {
+ "name": "Won Korea Selatan",
+ "symbol": "â‚©"
+ },
+ "KPW": {
+ "name": "Won Korea Utara",
+ "symbol": "KPW"
+ },
+ "JPY": {
+ "name": "Yen Jepun",
+ "symbol": "JPÂ¥"
+ },
+ "CNY": {
+ "name": "Yuan Cina",
+ "symbol": "CNÂ¥"
+ },
+ "PLN": {
+ "name": "Zloty Poland",
+ "symbol": "PLN"
+ },
+ "ZWL": {
+ "name": "ZWL",
+ "symbol": "ZWL"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/currency/mt.json b/library/intl/resources/currency/mt.json
new file mode 100644
index 000000000..18f1b4991
--- /dev/null
+++ b/library/intl/resources/currency/mt.json
@@ -0,0 +1,634 @@
+{
+ "AED": {
+ "name": "AED",
+ "symbol": "AED"
+ },
+ "AFN": {
+ "name": "AFN",
+ "symbol": "AFN"
+ },
+ "ALL": {
+ "name": "ALL",
+ "symbol": "ALL"
+ },
+ "AMD": {
+ "name": "AMD",
+ "symbol": "AMD"
+ },
+ "ANG": {
+ "name": "ANG",
+ "symbol": "ANG"
+ },
+ "AOA": {
+ "name": "AOA",
+ "symbol": "AOA"
+ },
+ "ARS": {
+ "name": "ARS",
+ "symbol": "ARS"
+ },
+ "AUD": {
+ "name": "AUD",
+ "symbol": "A$"
+ },
+ "AWG": {
+ "name": "AWG",
+ "symbol": "AWG"
+ },
+ "AZN": {
+ "name": "AZN",
+ "symbol": "AZN"
+ },
+ "BAM": {
+ "name": "BAM",
+ "symbol": "BAM"
+ },
+ "BBD": {
+ "name": "BBD",
+ "symbol": "BBD"
+ },
+ "BDT": {
+ "name": "BDT",
+ "symbol": "BDT"
+ },
+ "BGN": {
+ "name": "BGN",
+ "symbol": "BGN"
+ },
+ "BHD": {
+ "name": "BHD",
+ "symbol": "BHD"
+ },
+ "BIF": {
+ "name": "BIF",
+ "symbol": "BIF"
+ },
+ "BMD": {
+ "name": "BMD",
+ "symbol": "BMD"
+ },
+ "BND": {
+ "name": "BND",
+ "symbol": "BND"
+ },
+ "BOB": {
+ "name": "BOB",
+ "symbol": "BOB"
+ },
+ "BRL": {
+ "name": "BRL",
+ "symbol": "R$"
+ },
+ "BSD": {
+ "name": "BSD",
+ "symbol": "BSD"
+ },
+ "BTN": {
+ "name": "BTN",
+ "symbol": "BTN"
+ },
+ "BWP": {
+ "name": "BWP",
+ "symbol": "BWP"
+ },
+ "BYR": {
+ "name": "BYR",
+ "symbol": "BYR"
+ },
+ "BZD": {
+ "name": "BZD",
+ "symbol": "BZD"
+ },
+ "CAD": {
+ "name": "CAD",
+ "symbol": "CA$"
+ },
+ "CDF": {
+ "name": "CDF",
+ "symbol": "CDF"
+ },
+ "CHF": {
+ "name": "CHF",
+ "symbol": "CHF"
+ },
+ "CLP": {
+ "name": "CLP",
+ "symbol": "CLP"
+ },
+ "CNY": {
+ "name": "CNY",
+ "symbol": "CNÂ¥"
+ },
+ "COP": {
+ "name": "COP",
+ "symbol": "COP"
+ },
+ "CRC": {
+ "name": "CRC",
+ "symbol": "CRC"
+ },
+ "CUC": {
+ "name": "CUC",
+ "symbol": "CUC"
+ },
+ "CUP": {
+ "name": "CUP",
+ "symbol": "CUP"
+ },
+ "CVE": {
+ "name": "CVE",
+ "symbol": "CVE"
+ },
+ "CZK": {
+ "name": "CZK",
+ "symbol": "CZK"
+ },
+ "DJF": {
+ "name": "DJF",
+ "symbol": "DJF"
+ },
+ "DKK": {
+ "name": "DKK",
+ "symbol": "DKK"
+ },
+ "DOP": {
+ "name": "DOP",
+ "symbol": "DOP"
+ },
+ "DZD": {
+ "name": "DZD",
+ "symbol": "DZD"
+ },
+ "EGP": {
+ "name": "EGP",
+ "symbol": "EGP"
+ },
+ "ERN": {
+ "name": "ERN",
+ "symbol": "ERN"
+ },
+ "ETB": {
+ "name": "ETB",
+ "symbol": "ETB"
+ },
+ "EUR": {
+ "name": "ewro",
+ "symbol": "€"
+ },
+ "FJD": {
+ "name": "FJD",
+ "symbol": "FJD"
+ },
+ "FKP": {
+ "name": "FKP",
+ "symbol": "FKP"
+ },
+ "GBP": {
+ "name": "GBP",
+ "symbol": "£"
+ },
+ "GEL": {
+ "name": "GEL",
+ "symbol": "GEL"
+ },
+ "GHS": {
+ "name": "GHS",
+ "symbol": "GHS"
+ },
+ "GIP": {
+ "name": "GIP",
+ "symbol": "GIP"
+ },
+ "GMD": {
+ "name": "GMD",
+ "symbol": "GMD"
+ },
+ "GNF": {
+ "name": "GNF",
+ "symbol": "GNF"
+ },
+ "GTQ": {
+ "name": "GTQ",
+ "symbol": "GTQ"
+ },
+ "GYD": {
+ "name": "GYD",
+ "symbol": "GYD"
+ },
+ "HKD": {
+ "name": "HKD",
+ "symbol": "HK$"
+ },
+ "HNL": {
+ "name": "HNL",
+ "symbol": "HNL"
+ },
+ "HRK": {
+ "name": "HRK",
+ "symbol": "HRK"
+ },
+ "HTG": {
+ "name": "HTG",
+ "symbol": "HTG"
+ },
+ "HUF": {
+ "name": "HUF",
+ "symbol": "HUF"
+ },
+ "IDR": {
+ "name": "IDR",
+ "symbol": "IDR"
+ },
+ "ILS": {
+ "name": "ILS",
+ "symbol": "₪"
+ },
+ "INR": {
+ "name": "INR",
+ "symbol": "₹"
+ },
+ "IQD": {
+ "name": "IQD",
+ "symbol": "IQD"
+ },
+ "IRR": {
+ "name": "IRR",
+ "symbol": "IRR"
+ },
+ "ISK": {
+ "name": "ISK",
+ "symbol": "ISK"
+ },
+ "JMD": {
+ "name": "JMD",
+ "symbol": "JMD"
+ },
+ "JOD": {
+ "name": "JOD",
+ "symbol": "JOD"
+ },
+ "JPY": {
+ "name": "JPY",
+ "symbol": "JPÂ¥"
+ },
+ "KES": {
+ "name": "KES",
+ "symbol": "KES"
+ },
+ "KGS": {
+ "name": "KGS",
+ "symbol": "KGS"
+ },
+ "KHR": {
+ "name": "KHR",
+ "symbol": "KHR"
+ },
+ "KMF": {
+ "name": "KMF",
+ "symbol": "KMF"
+ },
+ "KPW": {
+ "name": "KPW",
+ "symbol": "KPW"
+ },
+ "KRW": {
+ "name": "KRW",
+ "symbol": "â‚©"
+ },
+ "KWD": {
+ "name": "KWD",
+ "symbol": "KWD"
+ },
+ "KYD": {
+ "name": "KYD",
+ "symbol": "KYD"
+ },
+ "KZT": {
+ "name": "KZT",
+ "symbol": "KZT"
+ },
+ "LAK": {
+ "name": "LAK",
+ "symbol": "LAK"
+ },
+ "LBP": {
+ "name": "LBP",
+ "symbol": "LBP"
+ },
+ "LKR": {
+ "name": "LKR",
+ "symbol": "LKR"
+ },
+ "LRD": {
+ "name": "LRD",
+ "symbol": "LRD"
+ },
+ "LSL": {
+ "name": "LSL",
+ "symbol": "LSL"
+ },
+ "LTL": {
+ "name": "LTL",
+ "symbol": "LTL"
+ },
+ "LYD": {
+ "name": "LYD",
+ "symbol": "LYD"
+ },
+ "MAD": {
+ "name": "MAD",
+ "symbol": "MAD"
+ },
+ "MDL": {
+ "name": "MDL",
+ "symbol": "MDL"
+ },
+ "MGA": {
+ "name": "MGA",
+ "symbol": "MGA"
+ },
+ "MKD": {
+ "name": "MKD",
+ "symbol": "MKD"
+ },
+ "MMK": {
+ "name": "MMK",
+ "symbol": "MMK"
+ },
+ "MNT": {
+ "name": "MNT",
+ "symbol": "MNT"
+ },
+ "MOP": {
+ "name": "MOP",
+ "symbol": "MOP"
+ },
+ "MRO": {
+ "name": "MRO",
+ "symbol": "MRO"
+ },
+ "MUR": {
+ "name": "MUR",
+ "symbol": "MUR"
+ },
+ "MVR": {
+ "name": "MVR",
+ "symbol": "MVR"
+ },
+ "MWK": {
+ "name": "MWK",
+ "symbol": "MWK"
+ },
+ "MXN": {
+ "name": "MXN",
+ "symbol": "MX$"
+ },
+ "MYR": {
+ "name": "MYR",
+ "symbol": "MYR"
+ },
+ "MZN": {
+ "name": "MZN",
+ "symbol": "MZN"
+ },
+ "NAD": {
+ "name": "NAD",
+ "symbol": "NAD"
+ },
+ "NGN": {
+ "name": "NGN",
+ "symbol": "NGN"
+ },
+ "NIO": {
+ "name": "NIO",
+ "symbol": "NIO"
+ },
+ "NOK": {
+ "name": "NOK",
+ "symbol": "NOK"
+ },
+ "NPR": {
+ "name": "NPR",
+ "symbol": "NPR"
+ },
+ "NZD": {
+ "name": "NZD",
+ "symbol": "NZ$"
+ },
+ "OMR": {
+ "name": "OMR",
+ "symbol": "OMR"
+ },
+ "PAB": {
+ "name": "PAB",
+ "symbol": "PAB"
+ },
+ "PEN": {
+ "name": "PEN",
+ "symbol": "PEN"
+ },
+ "PGK": {
+ "name": "PGK",
+ "symbol": "PGK"
+ },
+ "PHP": {
+ "name": "PHP",
+ "symbol": "PHP"
+ },
+ "PKR": {
+ "name": "PKR",
+ "symbol": "PKR"
+ },
+ "PLN": {
+ "name": "PLN",
+ "symbol": "PLN"
+ },
+ "PYG": {
+ "name": "PYG",
+ "symbol": "PYG"
+ },
+ "QAR": {
+ "name": "QAR",
+ "symbol": "QAR"
+ },
+ "RON": {
+ "name": "RON",
+ "symbol": "RON"
+ },
+ "RSD": {
+ "name": "RSD",
+ "symbol": "RSD"
+ },
+ "RUB": {
+ "name": "RUB",
+ "symbol": "RUB"
+ },
+ "RWF": {
+ "name": "RWF",
+ "symbol": "RWF"
+ },
+ "SAR": {
+ "name": "SAR",
+ "symbol": "SAR"
+ },
+ "SBD": {
+ "name": "SBD",
+ "symbol": "SBD"
+ },
+ "SCR": {
+ "name": "SCR",
+ "symbol": "SCR"
+ },
+ "SDG": {
+ "name": "SDG",
+ "symbol": "SDG"
+ },
+ "SEK": {
+ "name": "SEK",
+ "symbol": "SEK"
+ },
+ "SGD": {
+ "name": "SGD",
+ "symbol": "SGD"
+ },
+ "SHP": {
+ "name": "SHP",
+ "symbol": "SHP"
+ },
+ "SLL": {
+ "name": "SLL",
+ "symbol": "SLL"
+ },
+ "SOS": {
+ "name": "SOS",
+ "symbol": "SOS"
+ },
+ "SRD": {
+ "name": "SRD",
+ "symbol": "SRD"
+ },
+ "SSP": {
+ "name": "SSP",
+ "symbol": "SSP"
+ },
+ "STD": {
+ "name": "STD",
+ "symbol": "STD"
+ },
+ "SVC": {
+ "name": "SVC",
+ "symbol": "SVC"
+ },
+ "SYP": {
+ "name": "SYP",
+ "symbol": "SYP"
+ },
+ "SZL": {
+ "name": "SZL",
+ "symbol": "SZL"
+ },
+ "THB": {
+ "name": "THB",
+ "symbol": "THB"
+ },
+ "TJS": {
+ "name": "TJS",
+ "symbol": "TJS"
+ },
+ "TMT": {
+ "name": "TMT",
+ "symbol": "TMT"
+ },
+ "TND": {
+ "name": "TND",
+ "symbol": "TND"
+ },
+ "TOP": {
+ "name": "TOP",
+ "symbol": "TOP"
+ },
+ "TRY": {
+ "name": "TRY",
+ "symbol": "TRY"
+ },
+ "TTD": {
+ "name": "TTD",
+ "symbol": "TTD"
+ },
+ "TWD": {
+ "name": "TWD",
+ "symbol": "NT$"
+ },
+ "TZS": {
+ "name": "TZS",
+ "symbol": "TZS"
+ },
+ "UAH": {
+ "name": "UAH",
+ "symbol": "UAH"
+ },
+ "UGX": {
+ "name": "UGX",
+ "symbol": "UGX"
+ },
+ "USD": {
+ "name": "USD",
+ "symbol": "US$"
+ },
+ "UYU": {
+ "name": "UYU",
+ "symbol": "UYU"
+ },
+ "UZS": {
+ "name": "UZS",
+ "symbol": "UZS"
+ },
+ "VEF": {
+ "name": "VEF",
+ "symbol": "VEF"
+ },
+ "VND": {
+ "name": "VND",
+ "symbol": "â‚«"
+ },
+ "VUV": {
+ "name": "VUV",
+ "symbol": "VUV"
+ },
+ "WST": {
+ "name": "WST",
+ "symbol": "WST"
+ },
+ "XAF": {
+ "name": "XAF",
+ "symbol": "FCFA"
+ },
+ "XCD": {
+ "name": "XCD",
+ "symbol": "EC$"
+ },
+ "XOF": {
+ "name": "XOF",
+ "symbol": "CFA"
+ },
+ "XPF": {
+ "name": "XPF",
+ "symbol": "CFPF"
+ },
+ "YER": {
+ "name": "YER",
+ "symbol": "YER"
+ },
+ "ZAR": {
+ "name": "ZAR",
+ "symbol": "ZAR"
+ },
+ "ZMW": {
+ "name": "ZMW",
+ "symbol": "ZMW"
+ },
+ "ZWL": {
+ "name": "ZWL",
+ "symbol": "ZWL"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/currency/mua.json b/library/intl/resources/currency/mua.json
new file mode 100644
index 000000000..135efb022
--- /dev/null
+++ b/library/intl/resources/currency/mua.json
@@ -0,0 +1,634 @@
+{
+ "AFN": {
+ "name": "AFN",
+ "symbol": "AFN"
+ },
+ "ALL": {
+ "name": "ALL",
+ "symbol": "ALL"
+ },
+ "AMD": {
+ "name": "AMD",
+ "symbol": "AMD"
+ },
+ "ANG": {
+ "name": "ANG",
+ "symbol": "ANG"
+ },
+ "ARS": {
+ "name": "ARS",
+ "symbol": "ARS"
+ },
+ "AWG": {
+ "name": "AWG",
+ "symbol": "AWG"
+ },
+ "AZN": {
+ "name": "AZN",
+ "symbol": "AZN"
+ },
+ "BAM": {
+ "name": "BAM",
+ "symbol": "BAM"
+ },
+ "BBD": {
+ "name": "BBD",
+ "symbol": "BBD"
+ },
+ "BDT": {
+ "name": "BDT",
+ "symbol": "BDT"
+ },
+ "BGN": {
+ "name": "BGN",
+ "symbol": "BGN"
+ },
+ "BMD": {
+ "name": "BMD",
+ "symbol": "BMD"
+ },
+ "BND": {
+ "name": "BND",
+ "symbol": "BND"
+ },
+ "BOB": {
+ "name": "BOB",
+ "symbol": "BOB"
+ },
+ "BRL": {
+ "name": "BRL",
+ "symbol": "R$"
+ },
+ "BSD": {
+ "name": "BSD",
+ "symbol": "BSD"
+ },
+ "BTN": {
+ "name": "BTN",
+ "symbol": "BTN"
+ },
+ "BYR": {
+ "name": "BYR",
+ "symbol": "BYR"
+ },
+ "BZD": {
+ "name": "BZD",
+ "symbol": "BZD"
+ },
+ "CLP": {
+ "name": "CLP",
+ "symbol": "CLP"
+ },
+ "COP": {
+ "name": "COP",
+ "symbol": "COP"
+ },
+ "CRC": {
+ "name": "CRC",
+ "symbol": "CRC"
+ },
+ "CUC": {
+ "name": "CUC",
+ "symbol": "CUC"
+ },
+ "CUP": {
+ "name": "CUP",
+ "symbol": "CUP"
+ },
+ "CZK": {
+ "name": "CZK",
+ "symbol": "CZK"
+ },
+ "DKK": {
+ "name": "DKK",
+ "symbol": "DKK"
+ },
+ "DOP": {
+ "name": "DOP",
+ "symbol": "DOP"
+ },
+ "FJD": {
+ "name": "FJD",
+ "symbol": "FJD"
+ },
+ "FKP": {
+ "name": "FKP",
+ "symbol": "FKP"
+ },
+ "GEL": {
+ "name": "GEL",
+ "symbol": "GEL"
+ },
+ "GHS": {
+ "name": "GHS",
+ "symbol": "GHS"
+ },
+ "GIP": {
+ "name": "GIP",
+ "symbol": "GIP"
+ },
+ "GNF": {
+ "name": "GNF",
+ "symbol": "GNF"
+ },
+ "GTQ": {
+ "name": "GTQ",
+ "symbol": "GTQ"
+ },
+ "GYD": {
+ "name": "GYD",
+ "symbol": "GYD"
+ },
+ "HKD": {
+ "name": "HKD",
+ "symbol": "HK$"
+ },
+ "HNL": {
+ "name": "HNL",
+ "symbol": "HNL"
+ },
+ "HRK": {
+ "name": "HRK",
+ "symbol": "HRK"
+ },
+ "HTG": {
+ "name": "HTG",
+ "symbol": "HTG"
+ },
+ "HUF": {
+ "name": "HUF",
+ "symbol": "HUF"
+ },
+ "IDR": {
+ "name": "IDR",
+ "symbol": "IDR"
+ },
+ "ILS": {
+ "name": "ILS",
+ "symbol": "₪"
+ },
+ "IQD": {
+ "name": "IQD",
+ "symbol": "IQD"
+ },
+ "IRR": {
+ "name": "IRR",
+ "symbol": "IRR"
+ },
+ "ISK": {
+ "name": "ISK",
+ "symbol": "ISK"
+ },
+ "JMD": {
+ "name": "JMD",
+ "symbol": "JMD"
+ },
+ "JOD": {
+ "name": "JOD",
+ "symbol": "JOD"
+ },
+ "KGS": {
+ "name": "KGS",
+ "symbol": "KGS"
+ },
+ "KHR": {
+ "name": "KHR",
+ "symbol": "KHR"
+ },
+ "KPW": {
+ "name": "KPW",
+ "symbol": "KPW"
+ },
+ "KRW": {
+ "name": "KRW",
+ "symbol": "â‚©"
+ },
+ "KWD": {
+ "name": "KWD",
+ "symbol": "KWD"
+ },
+ "KYD": {
+ "name": "KYD",
+ "symbol": "KYD"
+ },
+ "KZT": {
+ "name": "KZT",
+ "symbol": "KZT"
+ },
+ "LAK": {
+ "name": "LAK",
+ "symbol": "LAK"
+ },
+ "LBP": {
+ "name": "LBP",
+ "symbol": "LBP"
+ },
+ "LKR": {
+ "name": "LKR",
+ "symbol": "LKR"
+ },
+ "LTL": {
+ "name": "LTL",
+ "symbol": "LTL"
+ },
+ "MDL": {
+ "name": "MDL",
+ "symbol": "MDL"
+ },
+ "MKD": {
+ "name": "MKD",
+ "symbol": "MKD"
+ },
+ "MMK": {
+ "name": "MMK",
+ "symbol": "MMK"
+ },
+ "MNT": {
+ "name": "MNT",
+ "symbol": "MNT"
+ },
+ "MOP": {
+ "name": "MOP",
+ "symbol": "MOP"
+ },
+ "MVR": {
+ "name": "MVR",
+ "symbol": "MVR"
+ },
+ "MXN": {
+ "name": "MXN",
+ "symbol": "MX$"
+ },
+ "MYR": {
+ "name": "MYR",
+ "symbol": "MYR"
+ },
+ "MZN": {
+ "name": "MZN",
+ "symbol": "MZN"
+ },
+ "NIO": {
+ "name": "NIO",
+ "symbol": "NIO"
+ },
+ "NOK": {
+ "name": "NOK",
+ "symbol": "NOK"
+ },
+ "NPR": {
+ "name": "NPR",
+ "symbol": "NPR"
+ },
+ "NZD": {
+ "name": "NZD",
+ "symbol": "NZ$"
+ },
+ "OMR": {
+ "name": "OMR",
+ "symbol": "OMR"
+ },
+ "PAB": {
+ "name": "PAB",
+ "symbol": "PAB"
+ },
+ "PEN": {
+ "name": "PEN",
+ "symbol": "PEN"
+ },
+ "PGK": {
+ "name": "PGK",
+ "symbol": "PGK"
+ },
+ "PHP": {
+ "name": "PHP",
+ "symbol": "PHP"
+ },
+ "PKR": {
+ "name": "PKR",
+ "symbol": "PKR"
+ },
+ "PLN": {
+ "name": "PLN",
+ "symbol": "PLN"
+ },
+ "PYG": {
+ "name": "PYG",
+ "symbol": "PYG"
+ },
+ "QAR": {
+ "name": "QAR",
+ "symbol": "QAR"
+ },
+ "RON": {
+ "name": "RON",
+ "symbol": "RON"
+ },
+ "RSD": {
+ "name": "RSD",
+ "symbol": "RSD"
+ },
+ "RUB": {
+ "name": "RUB",
+ "symbol": "RUB"
+ },
+ "SBD": {
+ "name": "SBD",
+ "symbol": "SBD"
+ },
+ "SEK": {
+ "name": "SEK",
+ "symbol": "SEK"
+ },
+ "SGD": {
+ "name": "SGD",
+ "symbol": "SGD"
+ },
+ "ZAR": {
+ "name": "Solai Africa nekÇsÇÅ‹",
+ "symbol": "ZAR"
+ },
+ "DZD": {
+ "name": "solai Algerya",
+ "symbol": "DZD"
+ },
+ "USD": {
+ "name": "Solai Amerika",
+ "symbol": "US$"
+ },
+ "AOA": {
+ "name": "solai Angola",
+ "symbol": "AOA"
+ },
+ "AED": {
+ "name": "Solai Arabiya",
+ "symbol": "AED"
+ },
+ "AUD": {
+ "name": "solai Australya",
+ "symbol": "A$"
+ },
+ "BHD": {
+ "name": "solai Barenya",
+ "symbol": "BHD"
+ },
+ "XOF": {
+ "name": "solai BCEAO",
+ "symbol": "CFA"
+ },
+ "XAF": {
+ "name": "solai BEAC",
+ "symbol": "FCFA"
+ },
+ "BWP": {
+ "name": "solai Botswana",
+ "symbol": "BWP"
+ },
+ "GBP": {
+ "name": "solai Britaniya",
+ "symbol": "£"
+ },
+ "BIF": {
+ "name": "solai Burundi",
+ "symbol": "BIF"
+ },
+ "DJF": {
+ "name": "solai Djibouti",
+ "symbol": "DJF"
+ },
+ "EGP": {
+ "name": "solai Egypt",
+ "symbol": "EGP"
+ },
+ "ERN": {
+ "name": "solai Eritre",
+ "symbol": "ERN"
+ },
+ "ETB": {
+ "name": "solai Etiopia",
+ "symbol": "ETB"
+ },
+ "EUR": {
+ "name": "solai Euro",
+ "symbol": "€"
+ },
+ "GMD": {
+ "name": "solai Gambiya",
+ "symbol": "GMD"
+ },
+ "SHP": {
+ "name": "Solai Helena",
+ "symbol": "SHP"
+ },
+ "INR": {
+ "name": "solai India",
+ "symbol": "₹"
+ },
+ "JPY": {
+ "name": "solai Japoŋ",
+ "symbol": "JPÂ¥"
+ },
+ "CAD": {
+ "name": "solai Kanada",
+ "symbol": "CA$"
+ },
+ "CVE": {
+ "name": "solai Kapverdiya",
+ "symbol": "CVE"
+ },
+ "KES": {
+ "name": "solai Kenia",
+ "symbol": "KES"
+ },
+ "KMF": {
+ "name": "solai Komorya",
+ "symbol": "KMF"
+ },
+ "CDF": {
+ "name": "solai Kongo",
+ "symbol": "CDF"
+ },
+ "LSL": {
+ "name": "solai Lesotho",
+ "symbol": "LSL"
+ },
+ "LRD": {
+ "name": "solai Liberiya",
+ "symbol": "LRD"
+ },
+ "LYD": {
+ "name": "solai Libya",
+ "symbol": "LYD"
+ },
+ "MGA": {
+ "name": "Solai Malagasya",
+ "symbol": "MGA"
+ },
+ "MWK": {
+ "name": "Solai Malawi",
+ "symbol": "MWK"
+ },
+ "MAD": {
+ "name": "Solai Marok",
+ "symbol": "MAD"
+ },
+ "MUR": {
+ "name": "Solai MauricÇ",
+ "symbol": "MUR"
+ },
+ "MRO": {
+ "name": "Solai Mauritaniya",
+ "symbol": "MRO"
+ },
+ "NAD": {
+ "name": "Solai Namibiya",
+ "symbol": "NAD"
+ },
+ "NGN": {
+ "name": "Solai Nigeriya",
+ "symbol": "NGN"
+ },
+ "RWF": {
+ "name": "Solai Rwanda",
+ "symbol": "RWF"
+ },
+ "SCR": {
+ "name": "Solai Saichel",
+ "symbol": "SCR"
+ },
+ "STD": {
+ "name": "Solai Sao Tome",
+ "symbol": "STD"
+ },
+ "SAR": {
+ "name": "Solai Saudiya",
+ "symbol": "SAR"
+ },
+ "SLL": {
+ "name": "solai Sierra leonÇ",
+ "symbol": "SLL"
+ },
+ "SOS": {
+ "name": "Solai Somaliya",
+ "symbol": "SOS"
+ },
+ "SDG": {
+ "name": "Solai Sudaŋ ma dii ne dinar",
+ "symbol": "SDG"
+ },
+ "SZL": {
+ "name": "solai Swaziland",
+ "symbol": "SZL"
+ },
+ "CHF": {
+ "name": "Solai Swiss",
+ "symbol": "CHF"
+ },
+ "CNY": {
+ "name": "solai Syiŋ",
+ "symbol": "CNÂ¥"
+ },
+ "TZS": {
+ "name": "Solai Tanzaniya",
+ "symbol": "TZS"
+ },
+ "TND": {
+ "name": "Solai Tunisiya",
+ "symbol": "TND"
+ },
+ "UGX": {
+ "name": "Solai Uganda",
+ "symbol": "UGX"
+ },
+ "ZMW": {
+ "name": "Solai Zambiya",
+ "symbol": "ZMW"
+ },
+ "SRD": {
+ "name": "SRD",
+ "symbol": "SRD"
+ },
+ "SSP": {
+ "name": "SSP",
+ "symbol": "SSP"
+ },
+ "SVC": {
+ "name": "SVC",
+ "symbol": "SVC"
+ },
+ "SYP": {
+ "name": "SYP",
+ "symbol": "SYP"
+ },
+ "THB": {
+ "name": "THB",
+ "symbol": "THB"
+ },
+ "TJS": {
+ "name": "TJS",
+ "symbol": "TJS"
+ },
+ "TMT": {
+ "name": "TMT",
+ "symbol": "TMT"
+ },
+ "TOP": {
+ "name": "TOP",
+ "symbol": "TOP"
+ },
+ "TRY": {
+ "name": "TRY",
+ "symbol": "TRY"
+ },
+ "TTD": {
+ "name": "TTD",
+ "symbol": "TTD"
+ },
+ "TWD": {
+ "name": "TWD",
+ "symbol": "NT$"
+ },
+ "UAH": {
+ "name": "UAH",
+ "symbol": "UAH"
+ },
+ "UYU": {
+ "name": "UYU",
+ "symbol": "UYU"
+ },
+ "UZS": {
+ "name": "UZS",
+ "symbol": "UZS"
+ },
+ "VEF": {
+ "name": "VEF",
+ "symbol": "VEF"
+ },
+ "VND": {
+ "name": "VND",
+ "symbol": "â‚«"
+ },
+ "VUV": {
+ "name": "VUV",
+ "symbol": "VUV"
+ },
+ "WST": {
+ "name": "WST",
+ "symbol": "WST"
+ },
+ "XCD": {
+ "name": "XCD",
+ "symbol": "EC$"
+ },
+ "XPF": {
+ "name": "XPF",
+ "symbol": "CFPF"
+ },
+ "YER": {
+ "name": "YER",
+ "symbol": "YER"
+ },
+ "ZWL": {
+ "name": "ZWL",
+ "symbol": "ZWL"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/currency/my.json b/library/intl/resources/currency/my.json
new file mode 100644
index 000000000..0b184fdbe
--- /dev/null
+++ b/library/intl/resources/currency/my.json
@@ -0,0 +1,634 @@
+{
+ "LSL": {
+ "name": "LSL",
+ "symbol": "LSL"
+ },
+ "SVC": {
+ "name": "SVC",
+ "symbol": "SVC"
+ },
+ "XPF": {
+ "name": "XPFဖရန့်",
+ "symbol": "CFPF"
+ },
+ "ZWL": {
+ "name": "ZWL",
+ "symbol": "ZWL"
+ },
+ "CAD": {
+ "name": "ကနေဒါ ဒေါ်လာ",
+ "symbol": "CA$"
+ },
+ "QAR": {
+ "name": "ကာá€á€¬á€›á€®á€¡á€±á€¬á€ºá€œá€º",
+ "symbol": "QAR"
+ },
+ "KWD": {
+ "name": "ကူá€á€­á€á€ºá€’ီနာ",
+ "symbol": "KWD"
+ },
+ "KYD": {
+ "name": "ကေမန် ကျွန်းစု ဒေါ်လာ",
+ "symbol": "KYD"
+ },
+ "CRC": {
+ "name": "ကော့စ်á€á€¬á€›á€®á€€á€¬ á€á€­á€¯á€œá€¯á€¶á€¸",
+ "symbol": "CRC"
+ },
+ "KMF": {
+ "name": "ကိုမိုရိုစ် ဖရန့်",
+ "symbol": "KMF"
+ },
+ "COP": {
+ "name": "ကိုလံဘီယာ ပီဆို",
+ "symbol": "COP"
+ },
+ "KES": {
+ "name": "ကင်ညာသျှီလင်",
+ "symbol": "KES"
+ },
+ "XAF": {
+ "name": "ကင်မရွန်းဖရန့်",
+ "symbol": "FCFA"
+ },
+ "KHR": {
+ "name": "ကမ္ဘောဒီးယား ရီးယဲ",
+ "symbol": "KHR"
+ },
+ "CUP": {
+ "name": "ကျူးဘား ပီဆို",
+ "symbol": "CUP"
+ },
+ "CDF": {
+ "name": "ကွန်ဂို ဖရန့်",
+ "symbol": "CDF"
+ },
+ "KGS": {
+ "name": "á€á€›á€°á€‚စ်စá€á€”်ဆော်မ်",
+ "symbol": "KGS"
+ },
+ "KZT": {
+ "name": "á€á€›á€°á€‚စ်စá€á€”်ထိန်ဂျီ",
+ "symbol": "KZT"
+ },
+ "HRK": {
+ "name": "á€á€›á€­á€¯á€¡á€±á€¸á€›á€¾á€¬á€¸á€á€°á€¸á€”ာ",
+ "symbol": "HRK"
+ },
+ "CVE": {
+ "name": "á€á€±á€·á€•á€ºá€—ာဒူ အက်စ်á€á€°á€’ို",
+ "symbol": "CVE"
+ },
+ "CLP": {
+ "name": "á€á€»á€®á€œá€® ပီဆို",
+ "symbol": "CLP"
+ },
+ "CZK": {
+ "name": "á€á€»á€€á€ºá€á€­á€¯á€›á€­á€¯á€”ာ",
+ "symbol": "CZK"
+ },
+ "GHS": {
+ "name": "ဂါနာ ဆဲဒီ",
+ "symbol": "GHS"
+ },
+ "GNF": {
+ "name": "ဂီးနီ ဖရန့်",
+ "symbol": "GNF"
+ },
+ "GYD": {
+ "name": "ဂူရာနာ ဒေါ်လာ",
+ "symbol": "GYD"
+ },
+ "GMD": {
+ "name": "ဂန်ဘီယာ ဒါလာစီ",
+ "symbol": "GMD"
+ },
+ "JPY": {
+ "name": "ဂျပန်ယန်း",
+ "symbol": "JPÂ¥"
+ },
+ "JMD": {
+ "name": "ဂျမေကာ ဒေါ်လာ",
+ "symbol": "JMD"
+ },
+ "GIP": {
+ "name": "ဂျီဘရော်လ်á€á€¬ ပေါင်",
+ "symbol": "GIP"
+ },
+ "DJF": {
+ "name": "ဂျီဘူá€á€® ဖရန့်",
+ "symbol": "DJF"
+ },
+ "GEL": {
+ "name": "ဂျော်ဂျီယာလားရီ",
+ "symbol": "GEL"
+ },
+ "JOD": {
+ "name": "ဂျော်ဒန်ဒီနား",
+ "symbol": "JOD"
+ },
+ "GTQ": {
+ "name": "ဂွာá€á€®á€™á€¬á€œá€¬ á€á€€á€ºá€‡á€±á€¬á€ºá€œá€º",
+ "symbol": "GTQ"
+ },
+ "WST": {
+ "name": "စမိုအထားလာ",
+ "symbol": "WST"
+ },
+ "SGD": {
+ "name": "စင်္ကာပူ ဒေါ်လာ",
+ "symbol": "SGD"
+ },
+ "STD": {
+ "name": "စိန့်á€á€­á€¯á€™á€®á€”ှင့်ပရင်စီပ့် ဒိုဘရာ",
+ "symbol": "STD"
+ },
+ "SHP": {
+ "name": "စိန့်ဟဲလီနာ ပေါင်",
+ "symbol": "SHP"
+ },
+ "SZL": {
+ "name": "စွာဇီလန်လီလန်းဂီနီ",
+ "symbol": "SZL"
+ },
+ "RSD": {
+ "name": "ဆားဘီးယားဒယ်နား",
+ "symbol": "RSD"
+ },
+ "SLL": {
+ "name": "ဆီအဲရာ လီအိုနီယန် လီအိုနီ",
+ "symbol": "SLL"
+ },
+ "SYP": {
+ "name": "ဆီးရီးယား ပေါင်",
+ "symbol": "SYP"
+ },
+ "SDG": {
+ "name": "ဆူဒန် ပေါင်",
+ "symbol": "SDG"
+ },
+ "SRD": {
+ "name": "ဆူရီနိမ်း ဒေါ်လာ",
+ "symbol": "SRD"
+ },
+ "SCR": {
+ "name": "ဆေးရှလ်ရူးပီး",
+ "symbol": "SCR"
+ },
+ "SAR": {
+ "name": "ဆော်ဒီအာရေးဗီးယားရီယော်လ်",
+ "symbol": "SAR"
+ },
+ "SBD": {
+ "name": "ဆော်လမွန်ကျွန်းစု ဒေါ်လာ",
+ "symbol": "SBD"
+ },
+ "SOS": {
+ "name": "ဆိုမာလီသျှီလင်",
+ "symbol": "SOS"
+ },
+ "SEK": {
+ "name": "ဆွီဒင် á€á€›á€­á€¯á€á€¬",
+ "symbol": "SEK"
+ },
+ "CHF": {
+ "name": "ဆွစ် ဖရန့်",
+ "symbol": "CHF"
+ },
+ "ZMW": {
+ "name": "ဇင်ဘာဘွေá€á€½á€«á€¸á€á€»á€¬",
+ "symbol": "ZMW"
+ },
+ "CNY": {
+ "name": "á€á€›á€¯á€á€º ယွမ်",
+ "symbol": "CNÂ¥"
+ },
+ "TJS": {
+ "name": "á€á€¬á€‚ျီကစ္စá€á€”်ဆိုမိုနီ",
+ "symbol": "TJS"
+ },
+ "TND": {
+ "name": "á€á€°á€”ီရှားဒီနာ",
+ "symbol": "TND"
+ },
+ "TRY": {
+ "name": "á€á€°á€›á€€á€® လိုင်ရာ",
+ "symbol": "TRY"
+ },
+ "TMT": {
+ "name": "á€á€¬á€á€ºá€™á€®á€”့စ်á€á€”်မာနá€á€º",
+ "symbol": "TMT"
+ },
+ "KRW": {
+ "name": "á€á€±á€¬á€„်ကိုးရီးယား á€á€™á€º",
+ "symbol": "â‚©"
+ },
+ "SSP": {
+ "name": "á€á€±á€¬á€„်ဆူဒန်ပေါင်",
+ "symbol": "SSP"
+ },
+ "ZAR": {
+ "name": "á€á€±á€¬á€„်အဖရိက ရန်း",
+ "symbol": "ZAR"
+ },
+ "TZS": {
+ "name": "á€á€”်ဇန်းနီးယားသျှီလင်",
+ "symbol": "TZS"
+ },
+ "TOP": {
+ "name": "á€á€½á€”်ဂါဗန်ဂါ",
+ "symbol": "TOP"
+ },
+ "TTD": {
+ "name": "ထရိုင်နီဒá€á€ºá€”ှင့်á€á€­á€¯á€˜á€¬á€‚ိုဒေါ်လာ",
+ "symbol": "TTD"
+ },
+ "TWD": {
+ "name": "ထိုင်á€á€™á€º ဒေါ်လာအသစ်",
+ "symbol": "NT$"
+ },
+ "THB": {
+ "name": "ထိုင်းဘá€á€º",
+ "symbol": "฿"
+ },
+ "DOP": {
+ "name": "ဒိုမီနီကန် ပီဆို",
+ "symbol": "DOP"
+ },
+ "DKK": {
+ "name": "ဒိန်းမá€á€ºá€á€›á€­á€¯á€á€¬",
+ "symbol": "DKK"
+ },
+ "NZD": {
+ "name": "နယူးဇီလန် ဒေါ်လာ",
+ "symbol": "NZ$"
+ },
+ "NIO": {
+ "name": "နီကာရာဂွာ á€á€­á€¯á€¸á€’ိုဘာ",
+ "symbol": "NIO"
+ },
+ "NPR": {
+ "name": "နီပေါ ရူပီး",
+ "symbol": "NPR"
+ },
+ "NOK": {
+ "name": "နော်á€á€± á€á€›á€­á€¯á€á€¬",
+ "symbol": "NOK"
+ },
+ "NGN": {
+ "name": "နိုင်ဂျီးရီးယားနိုင်းရာ",
+ "symbol": "NGN"
+ },
+ "CUC": {
+ "name": "နိုင်ငံá€á€¼á€¬á€¸á€„ွေလဲလှယ်နိုင်သော ကျူးဘားပီဆိုငွေ",
+ "symbol": "CUC"
+ },
+ "NAD": {
+ "name": "နမ်မီးဘီးယား ဒေါ်လာ",
+ "symbol": "NAD"
+ },
+ "ANG": {
+ "name": "နယ်သာလန် အန်á€á€®á€œá€”် ဂင်းဒါး",
+ "symbol": "ANG"
+ },
+ "PAB": {
+ "name": "ပနားမား ဘလ်ဘိုးအာ",
+ "symbol": "PAB"
+ },
+ "PKR": {
+ "name": "ပါကစ္စá€á€”် ရူပီး",
+ "symbol": "PKR"
+ },
+ "PGK": {
+ "name": "ပါပူရာနယူးဂီနီá€á€®á€¸á€”ာ",
+ "symbol": "PGK"
+ },
+ "PYG": {
+ "name": "ပါရာဂွေးဂွါးအ်နီး",
+ "symbol": "PYG"
+ },
+ "PEN": {
+ "name": "ပီရူး နူအီဗိုဆိုးလ်",
+ "symbol": "PEN"
+ },
+ "PLN": {
+ "name": "ပိုလန် ဇ‌လော့á€á€®",
+ "symbol": "PLN"
+ },
+ "PHP": {
+ "name": "ဖိလစ်ပိုင် ပီဆို",
+ "symbol": "PHP"
+ },
+ "FJD": {
+ "name": "ဖီဂျီ ဒေါ်လာ",
+ "symbol": "FJD"
+ },
+ "FKP": {
+ "name": "ဖောက်ကလန် ကျွန်းစု ပေါင်",
+ "symbol": "FKP"
+ },
+ "VUV": {
+ "name": "ဗာနုအာá€á€°á€—ားထူ",
+ "symbol": "VUV"
+ },
+ "VND": {
+ "name": "ဗီယက်နမ် ဒေါင်",
+ "symbol": "â‚«"
+ },
+ "VEF": {
+ "name": "ဗင်နီဇွဲလား ဘိုလီဗာ",
+ "symbol": "VEF"
+ },
+ "GBP": {
+ "name": "ဗြိá€á€­á€žá€»á€¾ ပေါင်",
+ "symbol": "£"
+ },
+ "BRL": {
+ "name": "ဘရာဇီး ရီးယဲ",
+ "symbol": "R$"
+ },
+ "BND": {
+ "name": "ဘရူနိုင်း ဒေါ်လာ",
+ "symbol": "BND"
+ },
+ "BSD": {
+ "name": "ဘဟားမား ဒေါ်လာ",
+ "symbol": "BSD"
+ },
+ "BBD": {
+ "name": "ဘာဘဒီယံဒေါ်လာ",
+ "symbol": "BBD"
+ },
+ "BMD": {
+ "name": "ဘာမူဒါ ဒေါ်လာ",
+ "symbol": "BMD"
+ },
+ "BHD": {
+ "name": "ဘာရိန်းဒီနား",
+ "symbol": "BHD"
+ },
+ "BYR": {
+ "name": "ဘီလာရုစ် ရူဘယ်",
+ "symbol": "BYR"
+ },
+ "BGN": {
+ "name": "ဘူဂေးရီးယားလက်ဖ်",
+ "symbol": "BGN"
+ },
+ "BTN": {
+ "name": "ဘူá€á€”်အံဂါလ်ထရန်",
+ "symbol": "BTN"
+ },
+ "BIF": {
+ "name": "ဘူရွန်ဒီ ဖရန့်",
+ "symbol": "BIF"
+ },
+ "BZD": {
+ "name": "ဘေလီဇ် ဒေါ်လာ",
+ "symbol": "BZD"
+ },
+ "BAM": {
+ "name": "ဘော့စနီးယား နှင့် ဟာဇီဂိုဘီးနားမá€á€ºá€€á€º",
+ "symbol": "BAM"
+ },
+ "BWP": {
+ "name": "ဘော့စ်á€á€«á€”ာ ပုလ",
+ "symbol": "BWP"
+ },
+ "BOB": {
+ "name": "ဘိုလီဘီယံ ဘိုလီဘီအားနို",
+ "symbol": "BOB"
+ },
+ "BDT": {
+ "name": "ဘင်္ဂလားဒေ့ရှ် á€á€¬á€€á€¬",
+ "symbol": "BDT"
+ },
+ "MOP": {
+ "name": "မကာအိုပါá€á€¬á€¸á€€á€¬á€¸",
+ "symbol": "MOP"
+ },
+ "MGA": {
+ "name": "မလာဂစ်စီ အရီရရီ ငွေကြေး",
+ "symbol": "MGA"
+ },
+ "MYR": {
+ "name": "မလေးရှား ရင်းဂစ်",
+ "symbol": "MYR"
+ },
+ "MKD": {
+ "name": "မာစီဒိုးနီးယားဒီနာ",
+ "symbol": "MKD"
+ },
+ "MWK": {
+ "name": "မာလာá€á€®á€á€½á€«á€¸á€á€»á€¬",
+ "symbol": "MWK"
+ },
+ "MRO": {
+ "name": "မောရီá€á€¬á€”ီအာအူဂီးယာ",
+ "symbol": "MRO"
+ },
+ "MUR": {
+ "name": "မော်ရေရှားစ် ရူပီ",
+ "symbol": "MUR"
+ },
+ "MVR": {
+ "name": "မော်လ်ဒိုက်ရူးဖီရာ",
+ "symbol": "MVR"
+ },
+ "MZN": {
+ "name": "မိုဇန်ဘစ်မက်á€á€®á€á€šá€ºá€œá€º",
+ "symbol": "MZN"
+ },
+ "MAD": {
+ "name": "မိုရိုကို ဒရမ်",
+ "symbol": "MAD"
+ },
+ "MXN": {
+ "name": "မက္ကဆီကို ပီဆို",
+ "symbol": "MX$"
+ },
+ "MDL": {
+ "name": "မောလ်ဒိုဗာလယ်အို",
+ "symbol": "MDL"
+ },
+ "KPW": {
+ "name": "မြောက်ကိုးရီးယား á€á€™á€º",
+ "symbol": "KPW"
+ },
+ "MMK": {
+ "name": "မြန်မာကျပ်",
+ "symbol": "K"
+ },
+ "MNT": {
+ "name": "မွန်ဂိုးလီးယားထူးဂရá€á€º",
+ "symbol": "MNT"
+ },
+ "YER": {
+ "name": "ယီမင်ရီအော်လ်",
+ "symbol": "YER"
+ },
+ "UAH": {
+ "name": "ယူကရိန်း",
+ "symbol": "UAH"
+ },
+ "UGX": {
+ "name": "ယူဂန္ဓာသျှီလင်",
+ "symbol": "UGX"
+ },
+ "EUR": {
+ "name": "ယူရို",
+ "symbol": "€"
+ },
+ "RWF": {
+ "name": "ရá€á€”်ဒါ ဖရန့်",
+ "symbol": "RWF"
+ },
+ "RUB": {
+ "name": "ရုရှ ရူဘယ်",
+ "symbol": "RUB"
+ },
+ "RON": {
+ "name": "ရိုမေးနီယားလယ်အို",
+ "symbol": "RON"
+ },
+ "LAK": {
+ "name": "လာအိုá€á€­á€•á€º",
+ "symbol": "LAK"
+ },
+ "LYD": {
+ "name": "လီဗျာ ဒီနာ",
+ "symbol": "LYD"
+ },
+ "LBP": {
+ "name": "လက်ဘနွန် ပေါင်",
+ "symbol": "LBP"
+ },
+ "LRD": {
+ "name": "လိုင်ဘေးရီးယား ဒေါ်လာ",
+ "symbol": "LRD"
+ },
+ "LTL": {
+ "name": "လစ်သူယေးနီးယားလီá€á€¬á€¸á€…်",
+ "symbol": "LTL"
+ },
+ "LKR": {
+ "name": "သီရိလင်္ကာ ရူပီး",
+ "symbol": "LKR"
+ },
+ "HTG": {
+ "name": "ဟေá€á€®á€‚ူးအော်ဒ်",
+ "symbol": "HTG"
+ },
+ "HKD": {
+ "name": "ဟောင်ကောင် ဒေါ်လာ",
+ "symbol": "HK$"
+ },
+ "HUF": {
+ "name": "ဟန်ဂေရီယံဖော်ရင့်á€á€º",
+ "symbol": "HUF"
+ },
+ "HNL": {
+ "name": "ဟွန်ဒူးရပ်စ် လန်းပီးရာ",
+ "symbol": "HNL"
+ },
+ "AZN": {
+ "name": "အဇာဘိုင်ဂျန်မာနá€á€º",
+ "symbol": "AZN"
+ },
+ "USD": {
+ "name": "အမေရိကန် ဒေါ်လာ",
+ "symbol": "US$"
+ },
+ "AWG": {
+ "name": "အရူဘန် ဂင်းဒါး",
+ "symbol": "AWG"
+ },
+ "XCD": {
+ "name": "အရှေ့ကာရီဘီယံဒေါ်လာ",
+ "symbol": "EC$"
+ },
+ "ARS": {
+ "name": "အာဂျင်á€á€®á€¸á€”ား ပီဆို",
+ "symbol": "ARS"
+ },
+ "AFN": {
+ "name": "အာဖဂန်အာဖဂါနီ",
+ "symbol": "AFN"
+ },
+ "AMD": {
+ "name": "အာမေးနီးယားဒရမ်း",
+ "symbol": "AMD"
+ },
+ "AED": {
+ "name": "အာရပ်ဒူဟမ်း",
+ "symbol": "AED"
+ },
+ "EGP": {
+ "name": "အီဂျစ် ပေါင်",
+ "symbol": "EGP"
+ },
+ "ERN": {
+ "name": "အီရီá€á€›á€®á€¡á€¬á€”ာ့á€á€ºá€–ာ",
+ "symbol": "ERN"
+ },
+ "IRR": {
+ "name": "အီရန်ရီအော်လ်",
+ "symbol": "IRR"
+ },
+ "IQD": {
+ "name": "အီရပ်ဒီနား",
+ "symbol": "IQD"
+ },
+ "ETB": {
+ "name": "အီသီယိုးပီးယားဘီးယာ",
+ "symbol": "ETB"
+ },
+ "UZS": {
+ "name": "ဥဘက်ကစ္စá€á€”်ဆော်မ်",
+ "symbol": "UZS"
+ },
+ "UYU": {
+ "name": "ဥရုဂွေးပီဆို",
+ "symbol": "UYU"
+ },
+ "DZD": {
+ "name": "အဲလ်ဂျီရီယန် ဒီနာ",
+ "symbol": "DZD"
+ },
+ "AUD": {
+ "name": "ဩစá€á€¼á€±á€¸á€œá€» ဒေါ်လာ",
+ "symbol": "A$"
+ },
+ "OMR": {
+ "name": "အိုမန်ရီအော်လ်",
+ "symbol": "OMR"
+ },
+ "ISK": {
+ "name": "အိုက်စလန် á€á€›á€­á€¯á€á€¬",
+ "symbol": "ISK"
+ },
+ "AOA": {
+ "name": "အင်ဂိုလာ ကန်ဇာ",
+ "symbol": "AOA"
+ },
+ "IDR": {
+ "name": "အင်ဒိုနီးရှား ရူပီးယား",
+ "symbol": "IDR"
+ },
+ "XOF": {
+ "name": "အိုင်ဗရီးကိုးစ်ဖရန့်",
+ "symbol": "CFA"
+ },
+ "ILS": {
+ "name": "အစ္စရေးရှဲကလ်အသစ်",
+ "symbol": "₪"
+ },
+ "INR": {
+ "name": "အိန္ဒိယ ရူပီး",
+ "symbol": "₹"
+ },
+ "ALL": {
+ "name": "အယ်လ်ဘီးနီးယားလီá€á€º",
+ "symbol": "ALL"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/currency/naq.json b/library/intl/resources/currency/naq.json
new file mode 100644
index 000000000..c6d0c0180
--- /dev/null
+++ b/library/intl/resources/currency/naq.json
@@ -0,0 +1,634 @@
+{
+ "AFN": {
+ "name": "AFN",
+ "symbol": "AFN"
+ },
+ "DZD": {
+ "name": "Algerian Dinar",
+ "symbol": "DZD"
+ },
+ "ALL": {
+ "name": "ALL",
+ "symbol": "ALL"
+ },
+ "AMD": {
+ "name": "AMD",
+ "symbol": "AMD"
+ },
+ "ANG": {
+ "name": "ANG",
+ "symbol": "ANG"
+ },
+ "AOA": {
+ "name": "Angolan Kwanzab",
+ "symbol": "AOA"
+ },
+ "ARS": {
+ "name": "ARS",
+ "symbol": "ARS"
+ },
+ "AUD": {
+ "name": "Australian Dollari",
+ "symbol": "A$"
+ },
+ "AWG": {
+ "name": "AWG",
+ "symbol": "AWG"
+ },
+ "AZN": {
+ "name": "AZN",
+ "symbol": "AZN"
+ },
+ "BHD": {
+ "name": "Bahrain Dinar",
+ "symbol": "BHD"
+ },
+ "BAM": {
+ "name": "BAM",
+ "symbol": "BAM"
+ },
+ "BBD": {
+ "name": "BBD",
+ "symbol": "BBD"
+ },
+ "BDT": {
+ "name": "BDT",
+ "symbol": "BDT"
+ },
+ "BGN": {
+ "name": "BGN",
+ "symbol": "BGN"
+ },
+ "BMD": {
+ "name": "BMD",
+ "symbol": "BMD"
+ },
+ "BND": {
+ "name": "BND",
+ "symbol": "BND"
+ },
+ "BOB": {
+ "name": "BOB",
+ "symbol": "BOB"
+ },
+ "BWP": {
+ "name": "Botswanan Pulab",
+ "symbol": "BWP"
+ },
+ "GBP": {
+ "name": "British Ponds",
+ "symbol": "£"
+ },
+ "BRL": {
+ "name": "BRL",
+ "symbol": "R$"
+ },
+ "BSD": {
+ "name": "BSD",
+ "symbol": "BSD"
+ },
+ "BTN": {
+ "name": "BTN",
+ "symbol": "BTN"
+ },
+ "BIF": {
+ "name": "Burundi Franc",
+ "symbol": "BIF"
+ },
+ "BYR": {
+ "name": "BYR",
+ "symbol": "BYR"
+ },
+ "BZD": {
+ "name": "BZD",
+ "symbol": "BZD"
+ },
+ "CAD": {
+ "name": "Canadian Dollari",
+ "symbol": "CA$"
+ },
+ "XOF": {
+ "name": "CFA Franc BCEAO",
+ "symbol": "CFA"
+ },
+ "XAF": {
+ "name": "CFA Franc BEAC",
+ "symbol": "FCFA"
+ },
+ "CNY": {
+ "name": "Chinese Yuan Renminbi",
+ "symbol": "CNÂ¥"
+ },
+ "CLP": {
+ "name": "CLP",
+ "symbol": "CLP"
+ },
+ "KMF": {
+ "name": "Comorian Franc",
+ "symbol": "KMF"
+ },
+ "CDF": {
+ "name": "Congolese Franc",
+ "symbol": "CDF"
+ },
+ "COP": {
+ "name": "COP",
+ "symbol": "COP"
+ },
+ "CRC": {
+ "name": "CRC",
+ "symbol": "CRC"
+ },
+ "CUC": {
+ "name": "CUC",
+ "symbol": "CUC"
+ },
+ "CUP": {
+ "name": "CUP",
+ "symbol": "CUP"
+ },
+ "CZK": {
+ "name": "CZK",
+ "symbol": "CZK"
+ },
+ "DJF": {
+ "name": "Djibouti Franc",
+ "symbol": "DJF"
+ },
+ "DKK": {
+ "name": "DKK",
+ "symbol": "DKK"
+ },
+ "DOP": {
+ "name": "DOP",
+ "symbol": "DOP"
+ },
+ "EGP": {
+ "name": "Egytian Ponds",
+ "symbol": "EGP"
+ },
+ "ERN": {
+ "name": "Eritreian Nakfa",
+ "symbol": "ERN"
+ },
+ "CVE": {
+ "name": "Escudo Caboverdiano",
+ "symbol": "CVE"
+ },
+ "ETB": {
+ "name": "Ethiopian Birr",
+ "symbol": "ETB"
+ },
+ "EUR": {
+ "name": "Eurob",
+ "symbol": "€"
+ },
+ "FJD": {
+ "name": "FJD",
+ "symbol": "FJD"
+ },
+ "FKP": {
+ "name": "FKP",
+ "symbol": "FKP"
+ },
+ "GMD": {
+ "name": "Gambia Dalasi",
+ "symbol": "GMD"
+ },
+ "GEL": {
+ "name": "GEL",
+ "symbol": "GEL"
+ },
+ "GHS": {
+ "name": "GHS",
+ "symbol": "GHS"
+ },
+ "GIP": {
+ "name": "GIP",
+ "symbol": "GIP"
+ },
+ "GNF": {
+ "name": "GNF",
+ "symbol": "GNF"
+ },
+ "GTQ": {
+ "name": "GTQ",
+ "symbol": "GTQ"
+ },
+ "GYD": {
+ "name": "GYD",
+ "symbol": "GYD"
+ },
+ "HKD": {
+ "name": "HKD",
+ "symbol": "HK$"
+ },
+ "HNL": {
+ "name": "HNL",
+ "symbol": "HNL"
+ },
+ "HRK": {
+ "name": "HRK",
+ "symbol": "HRK"
+ },
+ "HTG": {
+ "name": "HTG",
+ "symbol": "HTG"
+ },
+ "HUF": {
+ "name": "HUF",
+ "symbol": "HUF"
+ },
+ "IDR": {
+ "name": "IDR",
+ "symbol": "IDR"
+ },
+ "ILS": {
+ "name": "ILS",
+ "symbol": "₪"
+ },
+ "INR": {
+ "name": "Indian Rupee",
+ "symbol": "₹"
+ },
+ "IQD": {
+ "name": "IQD",
+ "symbol": "IQD"
+ },
+ "IRR": {
+ "name": "IRR",
+ "symbol": "IRR"
+ },
+ "ISK": {
+ "name": "ISK",
+ "symbol": "ISK"
+ },
+ "JPY": {
+ "name": "Japanese Yenni",
+ "symbol": "JPÂ¥"
+ },
+ "JMD": {
+ "name": "JMD",
+ "symbol": "JMD"
+ },
+ "JOD": {
+ "name": "JOD",
+ "symbol": "JOD"
+ },
+ "KES": {
+ "name": "Kenyan Shilling",
+ "symbol": "KES"
+ },
+ "KGS": {
+ "name": "KGS",
+ "symbol": "KGS"
+ },
+ "KHR": {
+ "name": "KHR",
+ "symbol": "KHR"
+ },
+ "KPW": {
+ "name": "KPW",
+ "symbol": "KPW"
+ },
+ "KRW": {
+ "name": "KRW",
+ "symbol": "â‚©"
+ },
+ "KWD": {
+ "name": "KWD",
+ "symbol": "KWD"
+ },
+ "KYD": {
+ "name": "KYD",
+ "symbol": "KYD"
+ },
+ "KZT": {
+ "name": "KZT",
+ "symbol": "KZT"
+ },
+ "LAK": {
+ "name": "LAK",
+ "symbol": "LAK"
+ },
+ "LBP": {
+ "name": "LBP",
+ "symbol": "LBP"
+ },
+ "SLL": {
+ "name": "Leone",
+ "symbol": "SLL"
+ },
+ "LSL": {
+ "name": "Lesotho Loti",
+ "symbol": "LSL"
+ },
+ "LRD": {
+ "name": "Liberian Dollar",
+ "symbol": "LRD"
+ },
+ "LYD": {
+ "name": "Libyan Dinar",
+ "symbol": "LYD"
+ },
+ "SZL": {
+ "name": "Lilangeni",
+ "symbol": "SZL"
+ },
+ "LKR": {
+ "name": "LKR",
+ "symbol": "LKR"
+ },
+ "LTL": {
+ "name": "LTL",
+ "symbol": "LTL"
+ },
+ "MGA": {
+ "name": "Malagasy Franc",
+ "symbol": "MGA"
+ },
+ "MWK": {
+ "name": "Malawian Kwachab",
+ "symbol": "MWK"
+ },
+ "MRO": {
+ "name": "Mauritania Ouguiya",
+ "symbol": "MRO"
+ },
+ "MUR": {
+ "name": "Mauritius Rupeeb",
+ "symbol": "MUR"
+ },
+ "MDL": {
+ "name": "MDL",
+ "symbol": "MDL"
+ },
+ "MKD": {
+ "name": "MKD",
+ "symbol": "MKD"
+ },
+ "MMK": {
+ "name": "MMK",
+ "symbol": "MMK"
+ },
+ "MNT": {
+ "name": "MNT",
+ "symbol": "MNT"
+ },
+ "MOP": {
+ "name": "MOP",
+ "symbol": "MOP"
+ },
+ "MAD": {
+ "name": "Moroccan Dirham",
+ "symbol": "MAD"
+ },
+ "MVR": {
+ "name": "MVR",
+ "symbol": "MVR"
+ },
+ "MXN": {
+ "name": "MXN",
+ "symbol": "MX$"
+ },
+ "MYR": {
+ "name": "MYR",
+ "symbol": "MYR"
+ },
+ "MZN": {
+ "name": "MZN",
+ "symbol": "MZN"
+ },
+ "NAD": {
+ "name": "Namibia Dollari",
+ "symbol": "$"
+ },
+ "NGN": {
+ "name": "Nigerian Naira",
+ "symbol": "NGN"
+ },
+ "NIO": {
+ "name": "NIO",
+ "symbol": "NIO"
+ },
+ "NOK": {
+ "name": "NOK",
+ "symbol": "NOK"
+ },
+ "NPR": {
+ "name": "NPR",
+ "symbol": "NPR"
+ },
+ "NZD": {
+ "name": "NZD",
+ "symbol": "NZ$"
+ },
+ "OMR": {
+ "name": "OMR",
+ "symbol": "OMR"
+ },
+ "PAB": {
+ "name": "PAB",
+ "symbol": "PAB"
+ },
+ "PEN": {
+ "name": "PEN",
+ "symbol": "PEN"
+ },
+ "PGK": {
+ "name": "PGK",
+ "symbol": "PGK"
+ },
+ "PHP": {
+ "name": "PHP",
+ "symbol": "PHP"
+ },
+ "PKR": {
+ "name": "PKR",
+ "symbol": "PKR"
+ },
+ "PLN": {
+ "name": "PLN",
+ "symbol": "PLN"
+ },
+ "PYG": {
+ "name": "PYG",
+ "symbol": "PYG"
+ },
+ "QAR": {
+ "name": "QAR",
+ "symbol": "QAR"
+ },
+ "RON": {
+ "name": "RON",
+ "symbol": "RON"
+ },
+ "RSD": {
+ "name": "RSD",
+ "symbol": "RSD"
+ },
+ "RUB": {
+ "name": "RUB",
+ "symbol": "RUB"
+ },
+ "RWF": {
+ "name": "Rwanda Franci",
+ "symbol": "RWF"
+ },
+ "STD": {
+ "name": "Sao Tome and Principe Dobra",
+ "symbol": "STD"
+ },
+ "SAR": {
+ "name": "Saudi Riyal",
+ "symbol": "SAR"
+ },
+ "SBD": {
+ "name": "SBD",
+ "symbol": "SBD"
+ },
+ "SEK": {
+ "name": "SEK",
+ "symbol": "SEK"
+ },
+ "SCR": {
+ "name": "Seychelles Rupee",
+ "symbol": "SCR"
+ },
+ "SGD": {
+ "name": "SGD",
+ "symbol": "SGD"
+ },
+ "SOS": {
+ "name": "Somali Shillings",
+ "symbol": "SOS"
+ },
+ "ZAR": {
+ "name": "South African Randi",
+ "symbol": "ZAR"
+ },
+ "SRD": {
+ "name": "SRD",
+ "symbol": "SRD"
+ },
+ "SSP": {
+ "name": "SSP",
+ "symbol": "SSP"
+ },
+ "SHP": {
+ "name": "St Helena Ponds",
+ "symbol": "SHP"
+ },
+ "SDG": {
+ "name": "Sudanese Dinar",
+ "symbol": "SDG"
+ },
+ "SVC": {
+ "name": "SVC",
+ "symbol": "SVC"
+ },
+ "CHF": {
+ "name": "Swiss Franci",
+ "symbol": "CHF"
+ },
+ "SYP": {
+ "name": "SYP",
+ "symbol": "SYP"
+ },
+ "TZS": {
+ "name": "Tanzanian Shillings",
+ "symbol": "TZS"
+ },
+ "THB": {
+ "name": "THB",
+ "symbol": "THB"
+ },
+ "TJS": {
+ "name": "TJS",
+ "symbol": "TJS"
+ },
+ "TMT": {
+ "name": "TMT",
+ "symbol": "TMT"
+ },
+ "TOP": {
+ "name": "TOP",
+ "symbol": "TOP"
+ },
+ "TRY": {
+ "name": "TRY",
+ "symbol": "TRY"
+ },
+ "TTD": {
+ "name": "TTD",
+ "symbol": "TTD"
+ },
+ "TND": {
+ "name": "Tunisian Dinar",
+ "symbol": "TND"
+ },
+ "TWD": {
+ "name": "TWD",
+ "symbol": "NT$"
+ },
+ "UAH": {
+ "name": "UAH",
+ "symbol": "UAH"
+ },
+ "UGX": {
+ "name": "Ugandan Shillings",
+ "symbol": "UGX"
+ },
+ "AED": {
+ "name": "United Arab Emirates Dirham",
+ "symbol": "AED"
+ },
+ "USD": {
+ "name": "US Dollari",
+ "symbol": "US$"
+ },
+ "UYU": {
+ "name": "UYU",
+ "symbol": "UYU"
+ },
+ "UZS": {
+ "name": "UZS",
+ "symbol": "UZS"
+ },
+ "VEF": {
+ "name": "VEF",
+ "symbol": "VEF"
+ },
+ "VND": {
+ "name": "VND",
+ "symbol": "â‚«"
+ },
+ "VUV": {
+ "name": "VUV",
+ "symbol": "VUV"
+ },
+ "WST": {
+ "name": "WST",
+ "symbol": "WST"
+ },
+ "XCD": {
+ "name": "XCD",
+ "symbol": "EC$"
+ },
+ "XPF": {
+ "name": "XPF",
+ "symbol": "CFPF"
+ },
+ "YER": {
+ "name": "YER",
+ "symbol": "YER"
+ },
+ "ZMW": {
+ "name": "Zambian Kwachab",
+ "symbol": "ZMW"
+ },
+ "ZWL": {
+ "name": "ZWL",
+ "symbol": "ZWL"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/currency/nb.json b/library/intl/resources/currency/nb.json
new file mode 100644
index 000000000..4c47f844d
--- /dev/null
+++ b/library/intl/resources/currency/nb.json
@@ -0,0 +1,634 @@
+{
+ "AFN": {
+ "name": "afghansk afghani",
+ "symbol": "AFN"
+ },
+ "ALL": {
+ "name": "albanske lek",
+ "symbol": "ALL"
+ },
+ "DZD": {
+ "name": "algeriske dinarer",
+ "symbol": "DZD"
+ },
+ "USD": {
+ "name": "amerikanske dollar",
+ "symbol": "USD"
+ },
+ "AOA": {
+ "name": "angolanske kwanza",
+ "symbol": "AOA"
+ },
+ "ARS": {
+ "name": "argentinske pesos",
+ "symbol": "ARS"
+ },
+ "AMD": {
+ "name": "armenske dram",
+ "symbol": "AMD"
+ },
+ "AWG": {
+ "name": "arubiske floriner",
+ "symbol": "AWG"
+ },
+ "AZN": {
+ "name": "aserbajdsjanske manat",
+ "symbol": "AZN"
+ },
+ "AUD": {
+ "name": "australske dollar",
+ "symbol": "AUD"
+ },
+ "BSD": {
+ "name": "bahamanske dollar",
+ "symbol": "BSD"
+ },
+ "BHD": {
+ "name": "bahrainske dinarer",
+ "symbol": "BHD"
+ },
+ "BDT": {
+ "name": "bangladeshiske taka",
+ "symbol": "BDT"
+ },
+ "BBD": {
+ "name": "barbadiske dollar",
+ "symbol": "BBD"
+ },
+ "BZD": {
+ "name": "beliziske dollar",
+ "symbol": "BZD"
+ },
+ "BMD": {
+ "name": "bermudiske dollar",
+ "symbol": "BMD"
+ },
+ "BTN": {
+ "name": "bhutanske ngultrum",
+ "symbol": "BTN"
+ },
+ "BOB": {
+ "name": "bolivianske boliviano",
+ "symbol": "BOB"
+ },
+ "BAM": {
+ "name": "bosnisk-hercegovinske konvertible mark",
+ "symbol": "BAM"
+ },
+ "BWP": {
+ "name": "botswanske pula",
+ "symbol": "BWP"
+ },
+ "BRL": {
+ "name": "brasilianske real",
+ "symbol": "BRL"
+ },
+ "GBP": {
+ "name": "britiske pund sterling",
+ "symbol": "£"
+ },
+ "BND": {
+ "name": "bruneiske dollar",
+ "symbol": "BND"
+ },
+ "BGN": {
+ "name": "bulgarske lev",
+ "symbol": "BGN"
+ },
+ "BIF": {
+ "name": "burundiske franc",
+ "symbol": "BIF"
+ },
+ "KYD": {
+ "name": "caymanske dollar",
+ "symbol": "KYD"
+ },
+ "XPF": {
+ "name": "CFP-franc",
+ "symbol": "XPF"
+ },
+ "CLP": {
+ "name": "chilenske pesos",
+ "symbol": "CLP"
+ },
+ "COP": {
+ "name": "colombianske pesos",
+ "symbol": "COP"
+ },
+ "CRC": {
+ "name": "costaricanske colón",
+ "symbol": "CRC"
+ },
+ "DKK": {
+ "name": "danske kroner",
+ "symbol": "DKK"
+ },
+ "DJF": {
+ "name": "djiboutiske franc",
+ "symbol": "DJF"
+ },
+ "DOP": {
+ "name": "dominikanske pesos",
+ "symbol": "DOP"
+ },
+ "EGP": {
+ "name": "egyptiske pund",
+ "symbol": "EGP"
+ },
+ "AED": {
+ "name": "emiratarabiske dirham",
+ "symbol": "AED"
+ },
+ "ERN": {
+ "name": "eritreiske nakfa",
+ "symbol": "ERN"
+ },
+ "ETB": {
+ "name": "etiopiske birr",
+ "symbol": "ETB"
+ },
+ "EUR": {
+ "name": "euro",
+ "symbol": "€"
+ },
+ "FKP": {
+ "name": "falklandspund",
+ "symbol": "FKP"
+ },
+ "FJD": {
+ "name": "fijianske dollar",
+ "symbol": "FJD"
+ },
+ "PHP": {
+ "name": "filippinske pesos",
+ "symbol": "PHP"
+ },
+ "GMD": {
+ "name": "gambiske dalasi",
+ "symbol": "GMD"
+ },
+ "GEL": {
+ "name": "georgiske lari",
+ "symbol": "GEL"
+ },
+ "GHS": {
+ "name": "ghanesiske cedi",
+ "symbol": "GHS"
+ },
+ "GIP": {
+ "name": "gibraltarske pund",
+ "symbol": "GIP"
+ },
+ "GTQ": {
+ "name": "guatemalanske quetzal",
+ "symbol": "GTQ"
+ },
+ "GNF": {
+ "name": "guineanske franc",
+ "symbol": "GNF"
+ },
+ "GYD": {
+ "name": "guyanske dollar",
+ "symbol": "GYD"
+ },
+ "HTG": {
+ "name": "haitiske gourde",
+ "symbol": "HTG"
+ },
+ "HNL": {
+ "name": "honduranske lempira",
+ "symbol": "HNL"
+ },
+ "HKD": {
+ "name": "Hongkong-dollar",
+ "symbol": "HKD"
+ },
+ "BYR": {
+ "name": "hviterussiske rubler",
+ "symbol": "BYR"
+ },
+ "INR": {
+ "name": "indiske rupier",
+ "symbol": "INR"
+ },
+ "IDR": {
+ "name": "indonesiske rupier",
+ "symbol": "IDR"
+ },
+ "IQD": {
+ "name": "irakske dinarer",
+ "symbol": "IQD"
+ },
+ "IRR": {
+ "name": "iranske rialer",
+ "symbol": "IRR"
+ },
+ "ISK": {
+ "name": "islandske kroner",
+ "symbol": "ISK"
+ },
+ "JMD": {
+ "name": "jamaikanske dollar",
+ "symbol": "JMD"
+ },
+ "JPY": {
+ "name": "japanske yen",
+ "symbol": "JPY"
+ },
+ "YER": {
+ "name": "jemenittiske rialer",
+ "symbol": "YER"
+ },
+ "JOD": {
+ "name": "jordanske dinarer",
+ "symbol": "JOD"
+ },
+ "KHR": {
+ "name": "kambodsjanske riel",
+ "symbol": "KHR"
+ },
+ "CAD": {
+ "name": "kanadiske dollar",
+ "symbol": "CAD"
+ },
+ "CVE": {
+ "name": "kappverdiske escudos",
+ "symbol": "CVE"
+ },
+ "KZT": {
+ "name": "kasakhstanske tenge",
+ "symbol": "KZT"
+ },
+ "KES": {
+ "name": "kenyanske shilling",
+ "symbol": "KES"
+ },
+ "CNY": {
+ "name": "kinesiske yuan",
+ "symbol": "CNY"
+ },
+ "KGS": {
+ "name": "kirgisiske som",
+ "symbol": "KGS"
+ },
+ "KMF": {
+ "name": "komoriske franc",
+ "symbol": "KMF"
+ },
+ "CDF": {
+ "name": "kongolesiske franc",
+ "symbol": "CDF"
+ },
+ "HRK": {
+ "name": "kroatiske kuna",
+ "symbol": "HRK"
+ },
+ "CUC": {
+ "name": "kubanske konvertible pesos",
+ "symbol": "CUC"
+ },
+ "CUP": {
+ "name": "kubanske pesos",
+ "symbol": "CUP"
+ },
+ "KWD": {
+ "name": "kuwaitiske dinarer",
+ "symbol": "KWD"
+ },
+ "LAK": {
+ "name": "laotiske kip",
+ "symbol": "LAK"
+ },
+ "LSL": {
+ "name": "lesothiske loti",
+ "symbol": "LSL"
+ },
+ "LBP": {
+ "name": "libanesiske pund",
+ "symbol": "LBP"
+ },
+ "LRD": {
+ "name": "liberiske dollar",
+ "symbol": "LRD"
+ },
+ "LYD": {
+ "name": "libyske dinarer",
+ "symbol": "LYD"
+ },
+ "LTL": {
+ "name": "litauiske lita",
+ "symbol": "LTL"
+ },
+ "MGA": {
+ "name": "madagassiske ariary",
+ "symbol": "MGA"
+ },
+ "MOP": {
+ "name": "makaoiske pataca",
+ "symbol": "MOP"
+ },
+ "MKD": {
+ "name": "makedonske denarer",
+ "symbol": "MKD"
+ },
+ "MWK": {
+ "name": "malawiske kwacha",
+ "symbol": "MWK"
+ },
+ "MYR": {
+ "name": "malaysiske ringgit",
+ "symbol": "MYR"
+ },
+ "MVR": {
+ "name": "maldiviske rufiyaa",
+ "symbol": "MVR"
+ },
+ "MAD": {
+ "name": "marokkanske dirham",
+ "symbol": "MAD"
+ },
+ "MRO": {
+ "name": "mauritanske ouguiya",
+ "symbol": "MRO"
+ },
+ "MUR": {
+ "name": "mauritiske rupier",
+ "symbol": "MUR"
+ },
+ "MXN": {
+ "name": "meksikanske pesos",
+ "symbol": "MXN"
+ },
+ "MDL": {
+ "name": "moldovske leu",
+ "symbol": "MDL"
+ },
+ "MNT": {
+ "name": "mongolske tugrik",
+ "symbol": "MNT"
+ },
+ "MZN": {
+ "name": "mosambikiske metical",
+ "symbol": "MZN"
+ },
+ "MMK": {
+ "name": "myanmarske kyat",
+ "symbol": "MMK"
+ },
+ "NAD": {
+ "name": "namibiske dollar",
+ "symbol": "NAD"
+ },
+ "ANG": {
+ "name": "nederlandske antillegylden",
+ "symbol": "ANG"
+ },
+ "NPR": {
+ "name": "nepalske rupier",
+ "symbol": "NPR"
+ },
+ "NZD": {
+ "name": "newzealandske dollar",
+ "symbol": "NZD"
+ },
+ "NIO": {
+ "name": "nicaraguanske córdoba",
+ "symbol": "NIO"
+ },
+ "NGN": {
+ "name": "nigerianske naira",
+ "symbol": "NGN"
+ },
+ "KPW": {
+ "name": "nordkoreanske won",
+ "symbol": "KPW"
+ },
+ "NOK": {
+ "name": "norske kroner",
+ "symbol": "kr"
+ },
+ "ILS": {
+ "name": "nye israelske shekler",
+ "symbol": "ILS"
+ },
+ "TWD": {
+ "name": "nye taiwanske dollar",
+ "symbol": "TWD"
+ },
+ "OMR": {
+ "name": "omanske rialer",
+ "symbol": "OMR"
+ },
+ "PKR": {
+ "name": "pakistanske rupier",
+ "symbol": "PKR"
+ },
+ "PAB": {
+ "name": "panamanske balboa",
+ "symbol": "PAB"
+ },
+ "PGK": {
+ "name": "papuanske kina",
+ "symbol": "PGK"
+ },
+ "PYG": {
+ "name": "paraguayanske guarani",
+ "symbol": "PYG"
+ },
+ "PEN": {
+ "name": "peruanske nuevo sol",
+ "symbol": "PEN"
+ },
+ "PLN": {
+ "name": "polske zloty",
+ "symbol": "PLN"
+ },
+ "QAR": {
+ "name": "qatarske rialer",
+ "symbol": "QAR"
+ },
+ "RON": {
+ "name": "rumenske leu",
+ "symbol": "RON"
+ },
+ "RUB": {
+ "name": "russiske rubler",
+ "symbol": "RUB"
+ },
+ "RWF": {
+ "name": "rwandiske franc",
+ "symbol": "RWF"
+ },
+ "SBD": {
+ "name": "salomonske dollar",
+ "symbol": "SBD"
+ },
+ "SVC": {
+ "name": "salvadoranske colon",
+ "symbol": "SVC"
+ },
+ "WST": {
+ "name": "samoanske tala",
+ "symbol": "WST"
+ },
+ "SHP": {
+ "name": "sankthelenske pund",
+ "symbol": "SHP"
+ },
+ "STD": {
+ "name": "São Tomé og Príncipe-dobra",
+ "symbol": "STD"
+ },
+ "SAR": {
+ "name": "saudiarabiske riyaler",
+ "symbol": "SAR"
+ },
+ "XAF": {
+ "name": "sentralafrikanske CFA-franc",
+ "symbol": "XAF"
+ },
+ "RSD": {
+ "name": "serbiske dinarer",
+ "symbol": "RSD"
+ },
+ "SCR": {
+ "name": "seychelliske rupier",
+ "symbol": "SCR"
+ },
+ "SLL": {
+ "name": "sierraleonske leone",
+ "symbol": "SLL"
+ },
+ "SGD": {
+ "name": "singaporske dollar",
+ "symbol": "SGD"
+ },
+ "SOS": {
+ "name": "somaliske shilling",
+ "symbol": "SOS"
+ },
+ "LKR": {
+ "name": "srilankiske rupier",
+ "symbol": "LKR"
+ },
+ "SDG": {
+ "name": "sudanske pund",
+ "symbol": "SDG"
+ },
+ "SRD": {
+ "name": "surinamske dollar",
+ "symbol": "SRD"
+ },
+ "CHF": {
+ "name": "sveitsiske franc",
+ "symbol": "CHF"
+ },
+ "SEK": {
+ "name": "svenske kroner",
+ "symbol": "SEK"
+ },
+ "SZL": {
+ "name": "swazilandske lilangeni",
+ "symbol": "SZL"
+ },
+ "SYP": {
+ "name": "syriske pund",
+ "symbol": "SYP"
+ },
+ "ZAR": {
+ "name": "sørafrikanske rand",
+ "symbol": "ZAR"
+ },
+ "KRW": {
+ "name": "sørkoreanske won",
+ "symbol": "KRW"
+ },
+ "SSP": {
+ "name": "sørsudanske pund",
+ "symbol": "SSP"
+ },
+ "TJS": {
+ "name": "tadsjikiske somoni",
+ "symbol": "TJS"
+ },
+ "TZS": {
+ "name": "tanzanianske shilling",
+ "symbol": "TZS"
+ },
+ "THB": {
+ "name": "thailandske baht",
+ "symbol": "THB"
+ },
+ "TOP": {
+ "name": "tonganske paʻanga",
+ "symbol": "TOP"
+ },
+ "TTD": {
+ "name": "trinidadiske dollar",
+ "symbol": "TTD"
+ },
+ "CZK": {
+ "name": "tsjekkiske koruna",
+ "symbol": "CZK"
+ },
+ "TND": {
+ "name": "tunisiske dinarer",
+ "symbol": "TND"
+ },
+ "TMT": {
+ "name": "turkmenske manat",
+ "symbol": "TMT"
+ },
+ "TRY": {
+ "name": "tyrkiske lire",
+ "symbol": "TRY"
+ },
+ "UGX": {
+ "name": "ugandiske shilling",
+ "symbol": "UGX"
+ },
+ "UAH": {
+ "name": "ukrainske hryvnia",
+ "symbol": "UAH"
+ },
+ "HUF": {
+ "name": "ungarske forinter",
+ "symbol": "HUF"
+ },
+ "UYU": {
+ "name": "uruguayanske pesos",
+ "symbol": "UYU"
+ },
+ "UZS": {
+ "name": "usbekiske som",
+ "symbol": "UZS"
+ },
+ "VUV": {
+ "name": "vanuatiske vatu",
+ "symbol": "VUV"
+ },
+ "VEF": {
+ "name": "venezuelanske bolivar",
+ "symbol": "VEF"
+ },
+ "XOF": {
+ "name": "vestafrikanske CFA-franc",
+ "symbol": "CFA"
+ },
+ "VND": {
+ "name": "vietnamesiske dong",
+ "symbol": "VND"
+ },
+ "ZMW": {
+ "name": "zambiske kwacha",
+ "symbol": "ZMW"
+ },
+ "ZWL": {
+ "name": "zimbabwisk dollar (2009)",
+ "symbol": "ZWL"
+ },
+ "XCD": {
+ "name": "østkaribiske dollar",
+ "symbol": "XCD"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/currency/nd.json b/library/intl/resources/currency/nd.json
new file mode 100644
index 000000000..21a9284a1
--- /dev/null
+++ b/library/intl/resources/currency/nd.json
@@ -0,0 +1,634 @@
+{
+ "AFN": {
+ "name": "AFN",
+ "symbol": "AFN"
+ },
+ "ALL": {
+ "name": "ALL",
+ "symbol": "ALL"
+ },
+ "AMD": {
+ "name": "AMD",
+ "symbol": "AMD"
+ },
+ "ANG": {
+ "name": "ANG",
+ "symbol": "ANG"
+ },
+ "ARS": {
+ "name": "ARS",
+ "symbol": "ARS"
+ },
+ "AWG": {
+ "name": "AWG",
+ "symbol": "AWG"
+ },
+ "AZN": {
+ "name": "AZN",
+ "symbol": "AZN"
+ },
+ "BAM": {
+ "name": "BAM",
+ "symbol": "BAM"
+ },
+ "BBD": {
+ "name": "BBD",
+ "symbol": "BBD"
+ },
+ "BDT": {
+ "name": "BDT",
+ "symbol": "BDT"
+ },
+ "BGN": {
+ "name": "BGN",
+ "symbol": "BGN"
+ },
+ "BMD": {
+ "name": "BMD",
+ "symbol": "BMD"
+ },
+ "BND": {
+ "name": "BND",
+ "symbol": "BND"
+ },
+ "BOB": {
+ "name": "BOB",
+ "symbol": "BOB"
+ },
+ "BRL": {
+ "name": "BRL",
+ "symbol": "R$"
+ },
+ "BSD": {
+ "name": "BSD",
+ "symbol": "BSD"
+ },
+ "BTN": {
+ "name": "BTN",
+ "symbol": "BTN"
+ },
+ "BYR": {
+ "name": "BYR",
+ "symbol": "BYR"
+ },
+ "BZD": {
+ "name": "BZD",
+ "symbol": "BZD"
+ },
+ "CLP": {
+ "name": "CLP",
+ "symbol": "CLP"
+ },
+ "COP": {
+ "name": "COP",
+ "symbol": "COP"
+ },
+ "CRC": {
+ "name": "CRC",
+ "symbol": "CRC"
+ },
+ "CUC": {
+ "name": "CUC",
+ "symbol": "CUC"
+ },
+ "CUP": {
+ "name": "CUP",
+ "symbol": "CUP"
+ },
+ "CZK": {
+ "name": "CZK",
+ "symbol": "CZK"
+ },
+ "GMD": {
+ "name": "Dalasi yase Gambia",
+ "symbol": "GMD"
+ },
+ "DZD": {
+ "name": "Dinali yase Aljeriya",
+ "symbol": "DZD"
+ },
+ "BHD": {
+ "name": "Dinari yase Bhahareni",
+ "symbol": "BHD"
+ },
+ "LYD": {
+ "name": "Dinari yase Libya",
+ "symbol": "LYD"
+ },
+ "SDG": {
+ "name": "Dinari yase Sudani",
+ "symbol": "SDG"
+ },
+ "TND": {
+ "name": "Dinari yase Tunisiya",
+ "symbol": "TND"
+ },
+ "MAD": {
+ "name": "Dirham yase Morokho",
+ "symbol": "MAD"
+ },
+ "DKK": {
+ "name": "DKK",
+ "symbol": "DKK"
+ },
+ "STD": {
+ "name": "Dobra yase Sao Tome lo Principe",
+ "symbol": "STD"
+ },
+ "AED": {
+ "name": "Dola laseArab",
+ "symbol": "AED"
+ },
+ "ETB": {
+ "name": "Dola laseEthiopia",
+ "symbol": "ETB"
+ },
+ "USD": {
+ "name": "Dola yase Amelika",
+ "symbol": "US$"
+ },
+ "AUD": {
+ "name": "Dola yase Australia",
+ "symbol": "A$"
+ },
+ "CAD": {
+ "name": "Dola yase Khanada",
+ "symbol": "CA$"
+ },
+ "LRD": {
+ "name": "Dola yase Libheriya",
+ "symbol": "LRD"
+ },
+ "NAD": {
+ "name": "Dola yase Namibiya",
+ "symbol": "NAD"
+ },
+ "DOP": {
+ "name": "DOP",
+ "symbol": "DOP"
+ },
+ "CVE": {
+ "name": "Escudo Caboverdiano",
+ "symbol": "CVE"
+ },
+ "FJD": {
+ "name": "FJD",
+ "symbol": "FJD"
+ },
+ "FKP": {
+ "name": "FKP",
+ "symbol": "FKP"
+ },
+ "XOF": {
+ "name": "Fulenki CFA BCEAO",
+ "symbol": "CFA"
+ },
+ "XAF": {
+ "name": "Fulenki CFA BEAC",
+ "symbol": "FCFA"
+ },
+ "BIF": {
+ "name": "Fulenki yase Bhurundi",
+ "symbol": "BIF"
+ },
+ "DJF": {
+ "name": "Fulenki yase Jibhuthi",
+ "symbol": "DJF"
+ },
+ "KMF": {
+ "name": "Fulenki yase Khomoro",
+ "symbol": "KMF"
+ },
+ "CDF": {
+ "name": "Fulenki yase Khongo",
+ "symbol": "CDF"
+ },
+ "MGA": {
+ "name": "Fulenki yase Malagasi",
+ "symbol": "MGA"
+ },
+ "RWF": {
+ "name": "Fulenki yase Ruwanda",
+ "symbol": "RWF"
+ },
+ "CHF": {
+ "name": "Fulenki yase Swisi",
+ "symbol": "CHF"
+ },
+ "GEL": {
+ "name": "GEL",
+ "symbol": "GEL"
+ },
+ "GHS": {
+ "name": "GHS",
+ "symbol": "GHS"
+ },
+ "GIP": {
+ "name": "GIP",
+ "symbol": "GIP"
+ },
+ "GNF": {
+ "name": "GNF",
+ "symbol": "GNF"
+ },
+ "GTQ": {
+ "name": "GTQ",
+ "symbol": "GTQ"
+ },
+ "GYD": {
+ "name": "GYD",
+ "symbol": "GYD"
+ },
+ "HKD": {
+ "name": "HKD",
+ "symbol": "HK$"
+ },
+ "HNL": {
+ "name": "HNL",
+ "symbol": "HNL"
+ },
+ "HRK": {
+ "name": "HRK",
+ "symbol": "HRK"
+ },
+ "HTG": {
+ "name": "HTG",
+ "symbol": "HTG"
+ },
+ "HUF": {
+ "name": "HUF",
+ "symbol": "HUF"
+ },
+ "IDR": {
+ "name": "IDR",
+ "symbol": "IDR"
+ },
+ "ILS": {
+ "name": "ILS",
+ "symbol": "₪"
+ },
+ "IQD": {
+ "name": "IQD",
+ "symbol": "IQD"
+ },
+ "IRR": {
+ "name": "IRR",
+ "symbol": "IRR"
+ },
+ "ISK": {
+ "name": "ISK",
+ "symbol": "ISK"
+ },
+ "JMD": {
+ "name": "JMD",
+ "symbol": "JMD"
+ },
+ "JOD": {
+ "name": "JOD",
+ "symbol": "JOD"
+ },
+ "KGS": {
+ "name": "KGS",
+ "symbol": "KGS"
+ },
+ "KHR": {
+ "name": "KHR",
+ "symbol": "KHR"
+ },
+ "KPW": {
+ "name": "KPW",
+ "symbol": "KPW"
+ },
+ "KRW": {
+ "name": "KRW",
+ "symbol": "â‚©"
+ },
+ "MWK": {
+ "name": "Kwacha yase Malawi",
+ "symbol": "MWK"
+ },
+ "ZMW": {
+ "name": "Kwacha yase Zambiya",
+ "symbol": "ZMW"
+ },
+ "AOA": {
+ "name": "Kwanza yase Angola",
+ "symbol": "AOA"
+ },
+ "KWD": {
+ "name": "KWD",
+ "symbol": "KWD"
+ },
+ "KYD": {
+ "name": "KYD",
+ "symbol": "KYD"
+ },
+ "KZT": {
+ "name": "KZT",
+ "symbol": "KZT"
+ },
+ "LAK": {
+ "name": "LAK",
+ "symbol": "LAK"
+ },
+ "LBP": {
+ "name": "LBP",
+ "symbol": "LBP"
+ },
+ "SLL": {
+ "name": "Leyoni",
+ "symbol": "SLL"
+ },
+ "SZL": {
+ "name": "Lilangeni",
+ "symbol": "SZL"
+ },
+ "LKR": {
+ "name": "LKR",
+ "symbol": "LKR"
+ },
+ "LSL": {
+ "name": "Lothi yase Lesotho",
+ "symbol": "LSL"
+ },
+ "LTL": {
+ "name": "LTL",
+ "symbol": "LTL"
+ },
+ "MDL": {
+ "name": "MDL",
+ "symbol": "MDL"
+ },
+ "MKD": {
+ "name": "MKD",
+ "symbol": "MKD"
+ },
+ "MMK": {
+ "name": "MMK",
+ "symbol": "MMK"
+ },
+ "MNT": {
+ "name": "MNT",
+ "symbol": "MNT"
+ },
+ "MOP": {
+ "name": "MOP",
+ "symbol": "MOP"
+ },
+ "MVR": {
+ "name": "MVR",
+ "symbol": "MVR"
+ },
+ "MXN": {
+ "name": "MXN",
+ "symbol": "MX$"
+ },
+ "MYR": {
+ "name": "MYR",
+ "symbol": "MYR"
+ },
+ "MZN": {
+ "name": "MZN",
+ "symbol": "MZN"
+ },
+ "ERN": {
+ "name": "Nakfa yase Eritrea",
+ "symbol": "ERN"
+ },
+ "NGN": {
+ "name": "Nayira yase Nijeriya",
+ "symbol": "NGN"
+ },
+ "NIO": {
+ "name": "NIO",
+ "symbol": "NIO"
+ },
+ "NOK": {
+ "name": "NOK",
+ "symbol": "NOK"
+ },
+ "NPR": {
+ "name": "NPR",
+ "symbol": "NPR"
+ },
+ "NZD": {
+ "name": "NZD",
+ "symbol": "NZ$"
+ },
+ "OMR": {
+ "name": "OMR",
+ "symbol": "OMR"
+ },
+ "PAB": {
+ "name": "PAB",
+ "symbol": "PAB"
+ },
+ "PEN": {
+ "name": "PEN",
+ "symbol": "PEN"
+ },
+ "PGK": {
+ "name": "PGK",
+ "symbol": "PGK"
+ },
+ "EGP": {
+ "name": "Phawundi laseGibhide",
+ "symbol": "EGP"
+ },
+ "GBP": {
+ "name": "Phawundi yase Ngilandi",
+ "symbol": "£"
+ },
+ "SHP": {
+ "name": "Phawundindi laseSt Helena",
+ "symbol": "SHP"
+ },
+ "PHP": {
+ "name": "PHP",
+ "symbol": "PHP"
+ },
+ "BWP": {
+ "name": "Phula yase Botswana",
+ "symbol": "BWP"
+ },
+ "PKR": {
+ "name": "PKR",
+ "symbol": "PKR"
+ },
+ "PLN": {
+ "name": "PLN",
+ "symbol": "PLN"
+ },
+ "PYG": {
+ "name": "PYG",
+ "symbol": "PYG"
+ },
+ "QAR": {
+ "name": "QAR",
+ "symbol": "QAR"
+ },
+ "ZAR": {
+ "name": "Randi yase Afrika ye Zanzi",
+ "symbol": "ZAR"
+ },
+ "SAR": {
+ "name": "Riyal yase Saudi",
+ "symbol": "SAR"
+ },
+ "RON": {
+ "name": "RON",
+ "symbol": "RON"
+ },
+ "RSD": {
+ "name": "RSD",
+ "symbol": "RSD"
+ },
+ "RUB": {
+ "name": "RUB",
+ "symbol": "RUB"
+ },
+ "INR": {
+ "name": "Rupi yase Indiya",
+ "symbol": "₹"
+ },
+ "MUR": {
+ "name": "Rupi yase Morishasi",
+ "symbol": "MUR"
+ },
+ "SCR": {
+ "name": "Rupi yase Seyisheli",
+ "symbol": "SCR"
+ },
+ "SBD": {
+ "name": "SBD",
+ "symbol": "SBD"
+ },
+ "SEK": {
+ "name": "SEK",
+ "symbol": "SEK"
+ },
+ "SGD": {
+ "name": "SGD",
+ "symbol": "SGD"
+ },
+ "KES": {
+ "name": "Shilingi yase Kenya",
+ "symbol": "KES"
+ },
+ "SOS": {
+ "name": "Shilingi yase Somaliya",
+ "symbol": "SOS"
+ },
+ "TZS": {
+ "name": "Shilingi yase Tanzaniya",
+ "symbol": "TZS"
+ },
+ "UGX": {
+ "name": "Shilingi yase Uganda",
+ "symbol": "UGX"
+ },
+ "SRD": {
+ "name": "SRD",
+ "symbol": "SRD"
+ },
+ "SSP": {
+ "name": "SSP",
+ "symbol": "SSP"
+ },
+ "SVC": {
+ "name": "SVC",
+ "symbol": "SVC"
+ },
+ "SYP": {
+ "name": "SYP",
+ "symbol": "SYP"
+ },
+ "THB": {
+ "name": "THB",
+ "symbol": "THB"
+ },
+ "TJS": {
+ "name": "TJS",
+ "symbol": "TJS"
+ },
+ "TMT": {
+ "name": "TMT",
+ "symbol": "TMT"
+ },
+ "TOP": {
+ "name": "TOP",
+ "symbol": "TOP"
+ },
+ "TRY": {
+ "name": "TRY",
+ "symbol": "TRY"
+ },
+ "TTD": {
+ "name": "TTD",
+ "symbol": "TTD"
+ },
+ "TWD": {
+ "name": "TWD",
+ "symbol": "NT$"
+ },
+ "UAH": {
+ "name": "UAH",
+ "symbol": "UAH"
+ },
+ "MRO": {
+ "name": "Ugwiya yase Moritaniya",
+ "symbol": "MRO"
+ },
+ "UYU": {
+ "name": "UYU",
+ "symbol": "UYU"
+ },
+ "UZS": {
+ "name": "UZS",
+ "symbol": "UZS"
+ },
+ "VEF": {
+ "name": "VEF",
+ "symbol": "VEF"
+ },
+ "VND": {
+ "name": "VND",
+ "symbol": "â‚«"
+ },
+ "VUV": {
+ "name": "VUV",
+ "symbol": "VUV"
+ },
+ "WST": {
+ "name": "WST",
+ "symbol": "WST"
+ },
+ "XCD": {
+ "name": "XCD",
+ "symbol": "EC$"
+ },
+ "XPF": {
+ "name": "XPF",
+ "symbol": "CFPF"
+ },
+ "JPY": {
+ "name": "Yeni yase Japhani",
+ "symbol": "JPÂ¥"
+ },
+ "YER": {
+ "name": "YER",
+ "symbol": "YER"
+ },
+ "CNY": {
+ "name": "Yuan Renminbi yase China",
+ "symbol": "CNÂ¥"
+ },
+ "EUR": {
+ "name": "Yuro",
+ "symbol": "€"
+ },
+ "ZWL": {
+ "name": "ZWL",
+ "symbol": "ZWL"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/currency/ne-IN.json b/library/intl/resources/currency/ne-IN.json
new file mode 100644
index 000000000..a4703e899
--- /dev/null
+++ b/library/intl/resources/currency/ne-IN.json
@@ -0,0 +1,634 @@
+{
+ "LSL": {
+ "name": "LSL",
+ "symbol": "LSL"
+ },
+ "SVC": {
+ "name": "SVC",
+ "symbol": "SVC"
+ },
+ "ZWL": {
+ "name": "ZWL",
+ "symbol": "ZWL"
+ },
+ "AZN": {
+ "name": "अजरबैजानी मानात",
+ "symbol": "AZN"
+ },
+ "AFN": {
+ "name": "अफà¥à¤—ान अफà¥à¤—ानी",
+ "symbol": "AFN"
+ },
+ "USD": {
+ "name": "अमेरिकी डलर",
+ "symbol": "US$"
+ },
+ "ARS": {
+ "name": "अरà¥à¤œà¥‡à¤¨à¥à¤Ÿà¤¿à¤¨à¥€ पेसो",
+ "symbol": "ARS"
+ },
+ "DZD": {
+ "name": "अलà¥à¤œà¥‡à¤°à¤¿à¤¯à¤¾à¤²à¥€ डिनार",
+ "symbol": "DZD"
+ },
+ "ALL": {
+ "name": "अलà¥à¤¬à¤¾à¤¨à¤¿à¤¯à¤¨ लेक",
+ "symbol": "ALL"
+ },
+ "AUD": {
+ "name": "अषà¥à¤Ÿà¥à¤°à¥‡à¤²à¤¿à¤¯à¤¨ डलर",
+ "symbol": "A$"
+ },
+ "ISK": {
+ "name": "आइसलà¥à¤¯à¤¾à¤£à¥à¤¡à¤¿à¤• कà¥à¤°à¥‹à¤¨à¤¾",
+ "symbol": "ISK"
+ },
+ "AWG": {
+ "name": "आरूबन फà¥à¤²à¥‹à¤°à¤¿à¤¨",
+ "symbol": "AWG"
+ },
+ "AMD": {
+ "name": "आरà¥à¤®à¥‡à¤¨à¤¿à¤¯à¤¾à¤²à¥€ डà¥à¤°à¤¾à¤®",
+ "symbol": "AMD"
+ },
+ "ILS": {
+ "name": "इजरायली नयाठशेकेल",
+ "symbol": "₪"
+ },
+ "EGP": {
+ "name": "इजिपà¥à¤¸à¤¿à¤¯à¤¨ पाउनà¥à¤¡",
+ "symbol": "EGP"
+ },
+ "IDR": {
+ "name": "इणà¥à¤¡à¥‹à¤¨à¥‡à¤¶à¤¿à¤¯à¤¾à¤²à¥€ रूपियाà¤",
+ "symbol": "IDR"
+ },
+ "ETB": {
+ "name": "इथियोपियाली बिर",
+ "symbol": "ETB"
+ },
+ "IQD": {
+ "name": "इराकी डिनार",
+ "symbol": "IQD"
+ },
+ "IRR": {
+ "name": "इरानियाली रियाल",
+ "symbol": "IRR"
+ },
+ "UZS": {
+ "name": "उजà¥à¤¬à¥‡à¤•à¤¿à¤¸à¥à¤¤à¤¾à¤¨ सोम",
+ "symbol": "UZS"
+ },
+ "KPW": {
+ "name": "उतà¥à¤¤à¤° कोरियाली वन",
+ "symbol": "KPW"
+ },
+ "UYU": {
+ "name": "उरूगà¥à¤µà¤¾à¤¯à¤¾à¤²à¥€ पेसो",
+ "symbol": "UYU"
+ },
+ "AOA": {
+ "name": "à¤à¤™à¥à¤—ोलान कà¥à¤µà¤¾à¤¨à¥à¤œà¤¾",
+ "symbol": "AOA"
+ },
+ "ERN": {
+ "name": "à¤à¤°à¤¿à¤Ÿà¥à¤°à¤¿à¤¯à¤¨ नाकà¥à¤«à¤¾",
+ "symbol": "ERN"
+ },
+ "OMR": {
+ "name": "ओमनी रियल",
+ "symbol": "OMR"
+ },
+ "CDF": {
+ "name": "कङà¥à¤—ोली फà¥à¤°à¤¾à¤¨à¥à¤•",
+ "symbol": "CDF"
+ },
+ "QAR": {
+ "name": "कतारी रियल",
+ "symbol": "QAR"
+ },
+ "KHR": {
+ "name": "कमà¥à¤¬à¥‹à¤¡à¤¿à¤¨à¥‡à¤¯à¤¾à¤²à¥€ रियल",
+ "symbol": "KHR"
+ },
+ "KZT": {
+ "name": "काजाखसà¥à¤¤à¤¾à¤¨à¥€ टेनà¥à¤œ",
+ "symbol": "KZT"
+ },
+ "KGS": {
+ "name": "किरà¥à¤—िसà¥à¤¤à¤¾à¤¨à¥€ सोम",
+ "symbol": "KGS"
+ },
+ "KWD": {
+ "name": "कà¥à¤µà¥‡à¤¤à¥€ डिनार",
+ "symbol": "KWD"
+ },
+ "KES": {
+ "name": "केनà¥à¤¯à¤¾à¤²à¥€ शिलिङ",
+ "symbol": "KES"
+ },
+ "CVE": {
+ "name": "केप भरà¥à¤¡à¤¿à¤¯à¤¨ à¤à¤¸à¥à¤•à¥à¤¡à¥‹",
+ "symbol": "CVE"
+ },
+ "KYD": {
+ "name": "केमà¥à¤¯à¤¾à¤¨ टापà¥à¤¹à¤°à¥‚का डलर",
+ "symbol": "KYD"
+ },
+ "KMF": {
+ "name": "कोमोरियन फà¥à¤°à¤¾à¤¨à¥à¤•",
+ "symbol": "KMF"
+ },
+ "COP": {
+ "name": "कोलमà¥à¤µà¤¿à¤¯à¤¨ पेसो",
+ "symbol": "COP"
+ },
+ "CRC": {
+ "name": "कोषà¥à¤Ÿà¤¾à¤°à¤¿à¤•à¤¨ कोलोन",
+ "symbol": "CRC"
+ },
+ "CAD": {
+ "name": "कà¥à¤¯à¤¾à¤¨à¤¾à¤¡à¤¿à¤¯à¤¾à¤²à¥€ डलर",
+ "symbol": "CA$"
+ },
+ "CUP": {
+ "name": "कà¥à¤¯à¥‚वाली पेसो",
+ "symbol": "CUP"
+ },
+ "CUC": {
+ "name": "कà¥à¤¯à¥‚वाली रूपानà¥à¤¤à¤°à¤£à¤¯à¥‹à¤—à¥à¤¯ पेसो",
+ "symbol": "CUC"
+ },
+ "HRK": {
+ "name": "कà¥à¤°à¥‹à¤à¤¶à¤¿à¤¯à¤¾à¤²à¥€ कà¥à¤¨à¤¾",
+ "symbol": "HRK"
+ },
+ "GYD": {
+ "name": "गाइनिज डलर",
+ "symbol": "GYD"
+ },
+ "GMD": {
+ "name": "गामà¥à¤µà¤¿à¤¯à¤¾à¤²à¥€ डालासी",
+ "symbol": "GMD"
+ },
+ "GNF": {
+ "name": "गिनियाली फà¥à¤°à¤¾à¤¨à¥à¤•",
+ "symbol": "GNF"
+ },
+ "GTQ": {
+ "name": "गà¥à¤µà¤¾à¤Ÿà¥‡à¤®à¤¾à¤²à¤¾ कà¥à¤µà¥‡à¤Ÿà¥à¤œà¤¾à¤²",
+ "symbol": "GTQ"
+ },
+ "GHS": {
+ "name": "घानाली सेडी",
+ "symbol": "GHS"
+ },
+ "CNY": {
+ "name": "चिनिà¤à¤¯à¤¾ यà¥à¤†à¤¨",
+ "symbol": "CNÂ¥"
+ },
+ "CLP": {
+ "name": "चिलियन पेसो",
+ "symbol": "CLP"
+ },
+ "CZK": {
+ "name": "चेख गणतञà¥à¤¤à¥à¤° कोरूना",
+ "symbol": "CZK"
+ },
+ "JMD": {
+ "name": "जमाइकाली डलर",
+ "symbol": "JMD"
+ },
+ "GEL": {
+ "name": "जरà¥à¤œà¤¿à¤¯à¤¾à¤²à¥€ लारी",
+ "symbol": "GEL"
+ },
+ "JPY": {
+ "name": "जापानी येन",
+ "symbol": "JPÂ¥"
+ },
+ "ZMW": {
+ "name": "जामà¥à¤¬à¤¿à¤¯à¤¾à¤²à¥€ कà¥à¤µà¤¾à¤šà¤¾",
+ "symbol": "ZMW"
+ },
+ "DJF": {
+ "name": "जिबौंटियाली फà¥à¤°à¤¾à¤¨à¥à¤•",
+ "symbol": "DJF"
+ },
+ "GIP": {
+ "name": "जिबà¥à¤°à¤¾à¤²à¥à¤Ÿà¤° पाउणà¥à¤¡",
+ "symbol": "GIP"
+ },
+ "JOD": {
+ "name": "जोरà¥à¤¡à¤¾à¤¨à¤¿à¤¯à¤¾à¤²à¥€ डलर",
+ "symbol": "JOD"
+ },
+ "TOP": {
+ "name": "टङà¥à¤—न पाङà¥à¤—ा",
+ "symbol": "TOP"
+ },
+ "TRY": {
+ "name": "टरà¥à¤•à¤¿à¤¶ लिरा",
+ "symbol": "TRY"
+ },
+ "TND": {
+ "name": "टà¥à¤¨à¤¿à¤¸à¤¿à¤¯à¤¾à¤²à¥€ डिनार",
+ "symbol": "TND"
+ },
+ "TMT": {
+ "name": "टà¥à¤°à¥à¤•à¥à¤®à¥‡à¤¨à¤¿à¤¸à¥à¤¤à¤¾à¤¨à¥€ मानात",
+ "symbol": "TMT"
+ },
+ "DOP": {
+ "name": "डोमिनिकन पेसो",
+ "symbol": "DOP"
+ },
+ "DKK": {
+ "name": "डà¥à¤¯à¤¾à¤¨à¤¿à¤¶ कà¥à¤°à¥‹à¤¨",
+ "symbol": "DKK"
+ },
+ "TJS": {
+ "name": "ताजिकà¥à¤¸à¥à¤¤à¤¾à¤¨à¥€ सोमोनी",
+ "symbol": "TJS"
+ },
+ "TZS": {
+ "name": "ताञà¥à¤œà¤¾à¤¨à¤¿à¤¯à¤¾à¤²à¥€ शिलिङ",
+ "symbol": "TZS"
+ },
+ "TTD": {
+ "name": "तà¥à¤°à¤¿à¤¨à¤¿à¤¡à¤¾à¤¡ र टोबागो डलर",
+ "symbol": "TTD"
+ },
+ "THB": {
+ "name": "थाई भाट",
+ "symbol": "฿"
+ },
+ "ZAR": {
+ "name": "दकà¥à¤·à¤¿à¤£ अफà¥à¤°à¤¿à¤•à¥€ रà¥â€à¤¯à¤¾à¤¨à¥à¤¡",
+ "symbol": "ZAR"
+ },
+ "KRW": {
+ "name": "दकà¥à¤·à¤¿à¤£ कोरियाली वन",
+ "symbol": "â‚©"
+ },
+ "SSP": {
+ "name": "दकà¥à¤·à¤¿à¤£ सà¥à¤¡à¤¾à¤¨à¥€ पाउनà¥à¤¡",
+ "symbol": "SSP"
+ },
+ "TWD": {
+ "name": "नयाठताइवान डलर",
+ "symbol": "NT$"
+ },
+ "NOK": {
+ "name": "नरà¥à¤µà¥‡à¤œà¤¿à¤¯à¤¾à¤²à¥€ कà¥à¤°à¥‹à¤¨",
+ "symbol": "NOK"
+ },
+ "NGN": {
+ "name": "नाइजेरियन नाइरा",
+ "symbol": "NGN"
+ },
+ "NAD": {
+ "name": "नामिबियन डलर",
+ "symbol": "NAD"
+ },
+ "NIO": {
+ "name": "निकारागà¥à¤µà¤¾à¤¨ कोरà¥à¤¡à¥‹à¤µà¤¾",
+ "symbol": "NIO"
+ },
+ "ANG": {
+ "name": "नेदरलà¥à¤¯à¤¾à¤£à¥à¤¡à¥à¤¸ à¤à¤¨à¥à¤Ÿà¤¿à¤²à¤¿à¤¯à¤¨ गिलà¥à¤¡à¤°",
+ "symbol": "ANG"
+ },
+ "NPR": {
+ "name": "नेपाली रूपैयाà¤",
+ "symbol": "नेरू"
+ },
+ "NZD": {
+ "name": "नà¥à¤¯à¥‚जिलà¥à¤¯à¤¾à¤£à¥à¤¡ डलर",
+ "symbol": "NZ$"
+ },
+ "PGK": {
+ "name": "पपà¥à¤† नà¥à¤¯à¥‚ गिनियाली किना",
+ "symbol": "PGK"
+ },
+ "PKR": {
+ "name": "पाकिसà¥à¤¤à¤¾à¤¨à¥€ रूपियाà¤",
+ "symbol": "PKR"
+ },
+ "PAB": {
+ "name": "पानामानियाली बालà¥à¤¬à¥‹à¤†",
+ "symbol": "PAB"
+ },
+ "PYG": {
+ "name": "पारागà¥à¤¯à¤¾à¤²à¥€ गà¥à¤°à¤¾à¤¨à¥€",
+ "symbol": "PYG"
+ },
+ "XCD": {
+ "name": "पूरà¥à¤µà¥€ कà¥à¤¯à¤¾à¤°à¤¿à¤¬à¤¿à¤¯à¤¨ डलर",
+ "symbol": "EC$"
+ },
+ "PEN": {
+ "name": "पेरूभियाली नà¥à¤¯à¥‚भो सोल",
+ "symbol": "PEN"
+ },
+ "PLN": {
+ "name": "पोलिश जà¥à¤²à¥‹à¤Ÿà¤¾à¤ˆ",
+ "symbol": "PLN"
+ },
+ "FKP": {
+ "name": "फकà¥â€Œà¤²à¥à¤¯à¤¾à¤£à¥à¤¡ टापà¥à¤¹à¤°à¥‚का पाउनà¥à¤¡",
+ "symbol": "FKP"
+ },
+ "FJD": {
+ "name": "फिजीयाली डलर",
+ "symbol": "FJD"
+ },
+ "PHP": {
+ "name": "फिलिपिनी पेसो",
+ "symbol": "PHP"
+ },
+ "BDT": {
+ "name": "बङà¥à¤—लादेशी टाका",
+ "symbol": "BDT"
+ },
+ "BBD": {
+ "name": "बरà¥à¤¬à¤¾à¤¡à¤¿à¤¯à¤¨ डलर",
+ "symbol": "BBD"
+ },
+ "BMD": {
+ "name": "बरà¥à¤®à¥à¤¡à¤¨ डलर",
+ "symbol": "BMD"
+ },
+ "BSD": {
+ "name": "बहामियाली डलर",
+ "symbol": "BSD"
+ },
+ "BHD": {
+ "name": "बाहारैनी डिनार",
+ "symbol": "BHD"
+ },
+ "BIF": {
+ "name": "बà¥à¤°à¥‚णà¥à¤¡à¤¿à¤¯à¤¾à¤²à¥€ फà¥à¤°à¤¾à¤¨à¥à¤•",
+ "symbol": "BIF"
+ },
+ "BGN": {
+ "name": "बà¥à¤²à¥à¤—ारियाली लेभ",
+ "symbol": "BGN"
+ },
+ "GBP": {
+ "name": "बेलायती पाउणà¥à¤¡ सà¥à¤Ÿà¤°à¥à¤²à¤¿à¤™",
+ "symbol": "£"
+ },
+ "BYR": {
+ "name": "बेलारूसी रूबल",
+ "symbol": "BYR"
+ },
+ "BWP": {
+ "name": "बोटà¥à¤¸à¤µà¤¾à¤¨à¤¾à¤¨ पà¥à¤²à¤¾",
+ "symbol": "BWP"
+ },
+ "BOB": {
+ "name": "बोलिभियन बोलिभियानो",
+ "symbol": "BOB"
+ },
+ "BAM": {
+ "name": "बोसà¥à¤¨à¤¿à¤¯à¤¾-हरà¥à¤œà¤—ोभिनिया रूपानà¥à¤¤à¤°à¤¯à¥‹à¤—à¥à¤¯ मारà¥à¤•",
+ "symbol": "BAM"
+ },
+ "BRL": {
+ "name": "बà¥à¤°à¤¾à¤œà¤¿à¤²à¤¿à¤¯à¤¨ रियल",
+ "symbol": "R$"
+ },
+ "BND": {
+ "name": "बà¥à¤°à¥à¤¨à¤¾à¤ˆ डलर",
+ "symbol": "BND"
+ },
+ "VUV": {
+ "name": "भानà¥à¤†à¤¤à¥‚ भातà¥",
+ "symbol": "VUV"
+ },
+ "INR": {
+ "name": "भारतीय रूपिà¤à¤¯à¤¾",
+ "symbol": "₹"
+ },
+ "VND": {
+ "name": "भियतनामी डङà¥",
+ "symbol": "â‚«"
+ },
+ "BTN": {
+ "name": "भà¥à¤Ÿà¤¾à¤¨à¥€ à¤à¤¨à¥â€Œà¤—à¥à¤²à¥à¤Ÿà¥à¤°à¥à¤®",
+ "symbol": "BTN"
+ },
+ "VEF": {
+ "name": "भेनेजà¥à¤à¤²à¤¨ बोलिभर",
+ "symbol": "VEF"
+ },
+ "MNT": {
+ "name": "मङà¥à¤—ोलियाली टà¥à¤—à¥à¤°à¤¿à¤•",
+ "symbol": "MNT"
+ },
+ "MWK": {
+ "name": "मलाविअन कà¥à¤µà¤¾à¤šà¤¾",
+ "symbol": "MWK"
+ },
+ "MYR": {
+ "name": "मलेशियाली रिङà¥à¤—ेट",
+ "symbol": "MYR"
+ },
+ "MRO": {
+ "name": "माउरिटानियानली औगà¥à¤‡à¤¯à¤¾",
+ "symbol": "MRO"
+ },
+ "MUR": {
+ "name": "माउरिटियन रूपी",
+ "symbol": "MUR"
+ },
+ "MOP": {
+ "name": "माकानिज पटाका",
+ "symbol": "MOP"
+ },
+ "MVR": {
+ "name": "मालडिभियाली रूफियाà¤",
+ "symbol": "MVR"
+ },
+ "MGA": {
+ "name": "मालागासी à¤à¤°à¤¿à¤†à¤°à¥€",
+ "symbol": "MGA"
+ },
+ "MDL": {
+ "name": "मालà¥à¤¡à¥‹à¤­à¤¨ लेउ",
+ "symbol": "MDL"
+ },
+ "MXN": {
+ "name": "मेकà¥à¤¸à¤¿à¤•à¤¨ पेसो",
+ "symbol": "MX$"
+ },
+ "MZN": {
+ "name": "मोजामà¥à¤µà¤¿à¤•à¤¨ मेटिकल",
+ "symbol": "MZN"
+ },
+ "MAD": {
+ "name": "मोरोकà¥à¤•à¤¾à¤²à¥€ डिरà¥â€Œà¤¹à¤¾à¤®",
+ "symbol": "MAD"
+ },
+ "MMK": {
+ "name": "मà¥à¤¯à¤¾à¤¨à¥à¤®à¤¾ कà¥à¤¯à¤¾à¤Ÿ",
+ "symbol": "MMK"
+ },
+ "MKD": {
+ "name": "मà¥à¤¯à¤¾à¤¸à¥‡à¤¡à¥‹à¤¨à¤¿à¤¯à¤¾à¤²à¥€ डेनार",
+ "symbol": "MKD"
+ },
+ "UAH": {
+ "name": "यà¥à¤•à¥à¤°à¥‡à¤¨à¥€ हिरà¥à¤­à¤¿à¤¨à¤¿à¤¯à¤¾",
+ "symbol": "UAH"
+ },
+ "UGX": {
+ "name": "यà¥à¤—ाणà¥à¤¡à¤¾à¤²à¥€ शिलिङ",
+ "symbol": "UGX"
+ },
+ "EUR": {
+ "name": "यà¥à¤°à¥‹",
+ "symbol": "€"
+ },
+ "YER": {
+ "name": "येमेनी रियाल",
+ "symbol": "YER"
+ },
+ "RUB": {
+ "name": "रूसी रूबल",
+ "symbol": "RUB"
+ },
+ "RON": {
+ "name": "रोमानियाली लेऊ",
+ "symbol": "RON"
+ },
+ "RWF": {
+ "name": "रà¥â€Œà¤µà¤¾à¤£à¥à¤¡à¤¾à¤²à¥€ फà¥à¤°à¤¾à¤¨à¥à¤•",
+ "symbol": "RWF"
+ },
+ "LAK": {
+ "name": "लाओशियन किप",
+ "symbol": "LAK"
+ },
+ "LTL": {
+ "name": "लिथà¥à¤¨à¤¿à¤¯à¤¾à¤²à¥€ लिटास",
+ "symbol": "LTL"
+ },
+ "LRD": {
+ "name": "लिबेरियाली डलर",
+ "symbol": "LRD"
+ },
+ "LYD": {
+ "name": "लिवियाली डिनार",
+ "symbol": "LYD"
+ },
+ "LBP": {
+ "name": "लेबनाली पाउनà¥à¤¡",
+ "symbol": "LBP"
+ },
+ "BZD": {
+ "name": "वेलिज डलर",
+ "symbol": "BZD"
+ },
+ "LKR": {
+ "name": "शà¥à¤°à¥€à¤²à¤™à¥à¤•à¤¾à¤²à¥€ रूपिया",
+ "symbol": "LKR"
+ },
+ "AED": {
+ "name": "संयà¥à¤•à¥à¤¤ अरब à¤à¤®à¤¿à¤°à¤¾à¤Ÿà¥à¤¸ डिरà¥à¤¹à¤¾à¤®",
+ "symbol": "AED"
+ },
+ "RSD": {
+ "name": "सरà¥à¤¬à¤¿à¤¯à¤¾à¤²à¥€ डिनार",
+ "symbol": "RSD"
+ },
+ "SAR": {
+ "name": "साउदी रियालहरू",
+ "symbol": "SAR"
+ },
+ "STD": {
+ "name": "साओ टोम र पà¥à¤°à¤¿à¤¨à¥à¤¸à¤¿à¤ª डोबà¥à¤°à¤¾",
+ "symbol": "STD"
+ },
+ "WST": {
+ "name": "सामोआन ताला",
+ "symbol": "WST"
+ },
+ "SGD": {
+ "name": "सिङà¥à¤—ापà¥à¤° डलर",
+ "symbol": "SGD"
+ },
+ "SLL": {
+ "name": "सियरा लियोनेन लियोन",
+ "symbol": "SLL"
+ },
+ "SYP": {
+ "name": "सिरियाली पाउनà¥à¤¡",
+ "symbol": "SYP"
+ },
+ "XAF": {
+ "name": "सीà¤à¤«à¥â€Œà¤ फà¥à¤°à¤¾à¤¨à¥à¤• बीइà¤à¤¸à¥€",
+ "symbol": "FCFA"
+ },
+ "XOF": {
+ "name": "सीà¤à¤«à¥â€Œà¤ फà¥à¤°à¤¾à¤¨à¥à¤• बीसीइà¤à¤“",
+ "symbol": "CFA"
+ },
+ "XPF": {
+ "name": "सीà¤à¤«à¥â€Œà¤ªà¥€ फà¥à¤°à¤¾à¤¨à¥à¤•",
+ "symbol": "CFPF"
+ },
+ "SDG": {
+ "name": "सà¥à¤¡à¤¾à¤¨à¥€ पाउनà¥à¤¡",
+ "symbol": "SDG"
+ },
+ "SRD": {
+ "name": "सà¥à¤°à¤¿à¤¨à¤¾à¤®à¤¿à¤œ डलर",
+ "symbol": "SRD"
+ },
+ "SCR": {
+ "name": "सेचेलोइस रूपी",
+ "symbol": "SCR"
+ },
+ "SHP": {
+ "name": "सेनà¥à¤Ÿ हेलेना पाउनà¥à¤¡",
+ "symbol": "SHP"
+ },
+ "SOS": {
+ "name": "सोमाली शिलिङ",
+ "symbol": "SOS"
+ },
+ "SBD": {
+ "name": "सोलोमन टापà¥à¤¹à¤°à¥‚का डलर",
+ "symbol": "SBD"
+ },
+ "SZL": {
+ "name": "सà¥à¤µà¤¾à¤œà¥€ लिलानà¥à¤—ेनी",
+ "symbol": "SZL"
+ },
+ "SEK": {
+ "name": "सà¥à¤µà¤¿à¤¡à¤¿à¤¶ कà¥à¤°à¥‹à¤¨à¤¾",
+ "symbol": "SEK"
+ },
+ "CHF": {
+ "name": "सà¥à¤µà¤¿à¤¸à¥ फà¥à¤°à¥ˆà¤™à¥à¤•",
+ "symbol": "CHF"
+ },
+ "HKD": {
+ "name": "हङकङ डलर",
+ "symbol": "HK$"
+ },
+ "HUF": {
+ "name": "हङà¥à¤—ेरियन फोरिनà¥à¤Ÿ",
+ "symbol": "HUF"
+ },
+ "HTG": {
+ "name": "हैटियाली गà¥à¤°à¥à¤¡",
+ "symbol": "HTG"
+ },
+ "HNL": {
+ "name": "होनà¥à¤¡à¥à¤°à¤¾à¤¨ लेमà¥à¤ªà¤¿à¤°à¤¾",
+ "symbol": "HNL"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/currency/ne.json b/library/intl/resources/currency/ne.json
new file mode 100644
index 000000000..2cebfcca8
--- /dev/null
+++ b/library/intl/resources/currency/ne.json
@@ -0,0 +1,634 @@
+{
+ "LSL": {
+ "name": "LSL",
+ "symbol": "LSL"
+ },
+ "SVC": {
+ "name": "SVC",
+ "symbol": "SVC"
+ },
+ "ZWL": {
+ "name": "ZWL",
+ "symbol": "ZWL"
+ },
+ "AZN": {
+ "name": "अजरबैजानी मानात",
+ "symbol": "AZN"
+ },
+ "AFN": {
+ "name": "अफà¥à¤—ान अफà¥à¤—ानी",
+ "symbol": "AFN"
+ },
+ "USD": {
+ "name": "अमेरिकी डलर",
+ "symbol": "US$"
+ },
+ "ARS": {
+ "name": "अरà¥à¤œà¥‡à¤¨à¥à¤Ÿà¤¿à¤¨à¥€ पेसो",
+ "symbol": "ARS"
+ },
+ "DZD": {
+ "name": "अलà¥à¤œà¥‡à¤°à¤¿à¤¯à¤¾à¤²à¥€ डिनार",
+ "symbol": "DZD"
+ },
+ "ALL": {
+ "name": "अलà¥à¤¬à¤¾à¤¨à¤¿à¤¯à¤¨ लेक",
+ "symbol": "ALL"
+ },
+ "AUD": {
+ "name": "अषà¥à¤Ÿà¥à¤°à¥‡à¤²à¤¿à¤¯à¤¨ डलर",
+ "symbol": "A$"
+ },
+ "ISK": {
+ "name": "आइसलà¥à¤¯à¤¾à¤£à¥à¤¡à¤¿à¤• कà¥à¤°à¥‹à¤¨à¤¾",
+ "symbol": "ISK"
+ },
+ "AWG": {
+ "name": "आरूबन फà¥à¤²à¥‹à¤°à¤¿à¤¨",
+ "symbol": "AWG"
+ },
+ "AMD": {
+ "name": "आरà¥à¤®à¥‡à¤¨à¤¿à¤¯à¤¾à¤²à¥€ डà¥à¤°à¤¾à¤®",
+ "symbol": "AMD"
+ },
+ "ILS": {
+ "name": "इजरायली नयाठशेकेल",
+ "symbol": "₪"
+ },
+ "EGP": {
+ "name": "इजिपà¥à¤¸à¤¿à¤¯à¤¨ पाउनà¥à¤¡",
+ "symbol": "EGP"
+ },
+ "IDR": {
+ "name": "इणà¥à¤¡à¥‹à¤¨à¥‡à¤¶à¤¿à¤¯à¤¾à¤²à¥€ रूपियाà¤",
+ "symbol": "IDR"
+ },
+ "ETB": {
+ "name": "इथियोपियाली बिर",
+ "symbol": "ETB"
+ },
+ "IQD": {
+ "name": "इराकी डिनार",
+ "symbol": "IQD"
+ },
+ "IRR": {
+ "name": "इरानियाली रियाल",
+ "symbol": "IRR"
+ },
+ "UZS": {
+ "name": "उजà¥à¤¬à¥‡à¤•à¤¿à¤¸à¥à¤¤à¤¾à¤¨ सोम",
+ "symbol": "UZS"
+ },
+ "KPW": {
+ "name": "उतà¥à¤¤à¤° कोरियाली वन",
+ "symbol": "KPW"
+ },
+ "UYU": {
+ "name": "उरूगà¥à¤µà¤¾à¤¯à¤¾à¤²à¥€ पेसो",
+ "symbol": "UYU"
+ },
+ "AOA": {
+ "name": "à¤à¤™à¥à¤—ोलान कà¥à¤µà¤¾à¤¨à¥à¤œà¤¾",
+ "symbol": "AOA"
+ },
+ "ERN": {
+ "name": "à¤à¤°à¤¿à¤Ÿà¥à¤°à¤¿à¤¯à¤¨ नाकà¥à¤«à¤¾",
+ "symbol": "ERN"
+ },
+ "OMR": {
+ "name": "ओमनी रियल",
+ "symbol": "OMR"
+ },
+ "CDF": {
+ "name": "कङà¥à¤—ोली फà¥à¤°à¤¾à¤¨à¥à¤•",
+ "symbol": "CDF"
+ },
+ "QAR": {
+ "name": "कतारी रियल",
+ "symbol": "QAR"
+ },
+ "KHR": {
+ "name": "कमà¥à¤¬à¥‹à¤¡à¤¿à¤¨à¥‡à¤¯à¤¾à¤²à¥€ रियल",
+ "symbol": "KHR"
+ },
+ "KZT": {
+ "name": "काजाखसà¥à¤¤à¤¾à¤¨à¥€ टेनà¥à¤œ",
+ "symbol": "KZT"
+ },
+ "KGS": {
+ "name": "किरà¥à¤—िसà¥à¤¤à¤¾à¤¨à¥€ सोम",
+ "symbol": "KGS"
+ },
+ "KWD": {
+ "name": "कà¥à¤µà¥‡à¤¤à¥€ डिनार",
+ "symbol": "KWD"
+ },
+ "KES": {
+ "name": "केनà¥à¤¯à¤¾à¤²à¥€ शिलिङ",
+ "symbol": "KES"
+ },
+ "CVE": {
+ "name": "केप भरà¥à¤¡à¤¿à¤¯à¤¨ à¤à¤¸à¥à¤•à¥à¤¡à¥‹",
+ "symbol": "CVE"
+ },
+ "KYD": {
+ "name": "केमà¥à¤¯à¤¾à¤¨ टापà¥à¤¹à¤°à¥‚का डलर",
+ "symbol": "KYD"
+ },
+ "KMF": {
+ "name": "कोमोरियन फà¥à¤°à¤¾à¤¨à¥à¤•",
+ "symbol": "KMF"
+ },
+ "COP": {
+ "name": "कोलमà¥à¤µà¤¿à¤¯à¤¨ पेसो",
+ "symbol": "COP"
+ },
+ "CRC": {
+ "name": "कोषà¥à¤Ÿà¤¾à¤°à¤¿à¤•à¤¨ कोलोन",
+ "symbol": "CRC"
+ },
+ "CAD": {
+ "name": "कà¥à¤¯à¤¾à¤¨à¤¾à¤¡à¤¿à¤¯à¤¾à¤²à¥€ डलर",
+ "symbol": "CA$"
+ },
+ "CUP": {
+ "name": "कà¥à¤¯à¥‚वाली पेसो",
+ "symbol": "CUP"
+ },
+ "CUC": {
+ "name": "कà¥à¤¯à¥‚वाली रूपानà¥à¤¤à¤°à¤£à¤¯à¥‹à¤—à¥à¤¯ पेसो",
+ "symbol": "CUC"
+ },
+ "HRK": {
+ "name": "कà¥à¤°à¥‹à¤à¤¶à¤¿à¤¯à¤¾à¤²à¥€ कà¥à¤¨à¤¾",
+ "symbol": "HRK"
+ },
+ "GYD": {
+ "name": "गाइनिज डलर",
+ "symbol": "GYD"
+ },
+ "GMD": {
+ "name": "गामà¥à¤µà¤¿à¤¯à¤¾à¤²à¥€ डालासी",
+ "symbol": "GMD"
+ },
+ "GNF": {
+ "name": "गिनियाली फà¥à¤°à¤¾à¤¨à¥à¤•",
+ "symbol": "GNF"
+ },
+ "GTQ": {
+ "name": "गà¥à¤µà¤¾à¤Ÿà¥‡à¤®à¤¾à¤²à¤¾ कà¥à¤µà¥‡à¤Ÿà¥à¤œà¤¾à¤²",
+ "symbol": "GTQ"
+ },
+ "GHS": {
+ "name": "घानाली सेडी",
+ "symbol": "GHS"
+ },
+ "CNY": {
+ "name": "चिनिà¤à¤¯à¤¾ यà¥à¤†à¤¨",
+ "symbol": "CNÂ¥"
+ },
+ "CLP": {
+ "name": "चिलियन पेसो",
+ "symbol": "CLP"
+ },
+ "CZK": {
+ "name": "चेख गणतञà¥à¤¤à¥à¤° कोरूना",
+ "symbol": "CZK"
+ },
+ "JMD": {
+ "name": "जमाइकाली डलर",
+ "symbol": "JMD"
+ },
+ "GEL": {
+ "name": "जरà¥à¤œà¤¿à¤¯à¤¾à¤²à¥€ लारी",
+ "symbol": "GEL"
+ },
+ "JPY": {
+ "name": "जापानी येन",
+ "symbol": "JPÂ¥"
+ },
+ "ZMW": {
+ "name": "जामà¥à¤¬à¤¿à¤¯à¤¾à¤²à¥€ कà¥à¤µà¤¾à¤šà¤¾",
+ "symbol": "ZMW"
+ },
+ "DJF": {
+ "name": "जिबौंटियाली फà¥à¤°à¤¾à¤¨à¥à¤•",
+ "symbol": "DJF"
+ },
+ "GIP": {
+ "name": "जिबà¥à¤°à¤¾à¤²à¥à¤Ÿà¤° पाउणà¥à¤¡",
+ "symbol": "GIP"
+ },
+ "JOD": {
+ "name": "जोरà¥à¤¡à¤¾à¤¨à¤¿à¤¯à¤¾à¤²à¥€ डलर",
+ "symbol": "JOD"
+ },
+ "TOP": {
+ "name": "टङà¥à¤—न पाङà¥à¤—ा",
+ "symbol": "TOP"
+ },
+ "TRY": {
+ "name": "टरà¥à¤•à¤¿à¤¶ लिरा",
+ "symbol": "TRY"
+ },
+ "TND": {
+ "name": "टà¥à¤¨à¤¿à¤¸à¤¿à¤¯à¤¾à¤²à¥€ डिनार",
+ "symbol": "TND"
+ },
+ "TMT": {
+ "name": "टà¥à¤°à¥à¤•à¥à¤®à¥‡à¤¨à¤¿à¤¸à¥à¤¤à¤¾à¤¨à¥€ मानात",
+ "symbol": "TMT"
+ },
+ "DOP": {
+ "name": "डोमिनिकन पेसो",
+ "symbol": "DOP"
+ },
+ "DKK": {
+ "name": "डà¥à¤¯à¤¾à¤¨à¤¿à¤¶ कà¥à¤°à¥‹à¤¨",
+ "symbol": "DKK"
+ },
+ "TJS": {
+ "name": "ताजिकà¥à¤¸à¥à¤¤à¤¾à¤¨à¥€ सोमोनी",
+ "symbol": "TJS"
+ },
+ "TZS": {
+ "name": "ताञà¥à¤œà¤¾à¤¨à¤¿à¤¯à¤¾à¤²à¥€ शिलिङ",
+ "symbol": "TZS"
+ },
+ "TTD": {
+ "name": "तà¥à¤°à¤¿à¤¨à¤¿à¤¡à¤¾à¤¡ र टोबागो डलर",
+ "symbol": "TTD"
+ },
+ "THB": {
+ "name": "थाई भाट",
+ "symbol": "฿"
+ },
+ "ZAR": {
+ "name": "दकà¥à¤·à¤¿à¤£ अफà¥à¤°à¤¿à¤•à¥€ रà¥â€à¤¯à¤¾à¤¨à¥à¤¡",
+ "symbol": "ZAR"
+ },
+ "KRW": {
+ "name": "दकà¥à¤·à¤¿à¤£ कोरियाली वन",
+ "symbol": "â‚©"
+ },
+ "SSP": {
+ "name": "दकà¥à¤·à¤¿à¤£ सà¥à¤¡à¤¾à¤¨à¥€ पाउनà¥à¤¡",
+ "symbol": "SSP"
+ },
+ "TWD": {
+ "name": "नयाठताइवान डलर",
+ "symbol": "NT$"
+ },
+ "NOK": {
+ "name": "नरà¥à¤µà¥‡à¤œà¤¿à¤¯à¤¾à¤²à¥€ कà¥à¤°à¥‹à¤¨",
+ "symbol": "NOK"
+ },
+ "NGN": {
+ "name": "नाइजेरियन नाइरा",
+ "symbol": "NGN"
+ },
+ "NAD": {
+ "name": "नामिबियन डलर",
+ "symbol": "NAD"
+ },
+ "NIO": {
+ "name": "निकारागà¥à¤µà¤¾à¤¨ कोरà¥à¤¡à¥‹à¤µà¤¾",
+ "symbol": "NIO"
+ },
+ "ANG": {
+ "name": "नेदरलà¥à¤¯à¤¾à¤£à¥à¤¡à¥à¤¸ à¤à¤¨à¥à¤Ÿà¤¿à¤²à¤¿à¤¯à¤¨ गिलà¥à¤¡à¤°",
+ "symbol": "ANG"
+ },
+ "NPR": {
+ "name": "नेपाली रूपैयाà¤",
+ "symbol": "नेरू"
+ },
+ "NZD": {
+ "name": "नà¥à¤¯à¥‚जिलà¥à¤¯à¤¾à¤£à¥à¤¡ डलर",
+ "symbol": "NZ$"
+ },
+ "PGK": {
+ "name": "पपà¥à¤† नà¥à¤¯à¥‚ गिनियाली किना",
+ "symbol": "PGK"
+ },
+ "PKR": {
+ "name": "पाकिसà¥à¤¤à¤¾à¤¨à¥€ रूपियाà¤",
+ "symbol": "PKR"
+ },
+ "PAB": {
+ "name": "पानामानियाली बालà¥à¤¬à¥‹à¤†",
+ "symbol": "PAB"
+ },
+ "PYG": {
+ "name": "पारागà¥à¤¯à¤¾à¤²à¥€ गà¥à¤°à¤¾à¤¨à¥€",
+ "symbol": "PYG"
+ },
+ "XCD": {
+ "name": "पूरà¥à¤µà¥€ कà¥à¤¯à¤¾à¤°à¤¿à¤¬à¤¿à¤¯à¤¨ डलर",
+ "symbol": "EC$"
+ },
+ "PEN": {
+ "name": "पेरूभियाली नà¥à¤¯à¥‚भो सोल",
+ "symbol": "PEN"
+ },
+ "PLN": {
+ "name": "पोलिश जà¥à¤²à¥‹à¤Ÿà¤¾à¤ˆ",
+ "symbol": "PLN"
+ },
+ "FKP": {
+ "name": "फकà¥â€Œà¤²à¥à¤¯à¤¾à¤£à¥à¤¡ टापà¥à¤¹à¤°à¥‚का पाउनà¥à¤¡",
+ "symbol": "FKP"
+ },
+ "FJD": {
+ "name": "फिजीयाली डलर",
+ "symbol": "FJD"
+ },
+ "PHP": {
+ "name": "फिलिपिनी पेसो",
+ "symbol": "PHP"
+ },
+ "BDT": {
+ "name": "बङà¥à¤—लादेशी टाका",
+ "symbol": "BDT"
+ },
+ "BBD": {
+ "name": "बरà¥à¤¬à¤¾à¤¡à¤¿à¤¯à¤¨ डलर",
+ "symbol": "BBD"
+ },
+ "BMD": {
+ "name": "बरà¥à¤®à¥à¤¡à¤¨ डलर",
+ "symbol": "BMD"
+ },
+ "BSD": {
+ "name": "बहामियाली डलर",
+ "symbol": "BSD"
+ },
+ "BHD": {
+ "name": "बाहारैनी डिनार",
+ "symbol": "BHD"
+ },
+ "BIF": {
+ "name": "बà¥à¤°à¥‚णà¥à¤¡à¤¿à¤¯à¤¾à¤²à¥€ फà¥à¤°à¤¾à¤¨à¥à¤•",
+ "symbol": "BIF"
+ },
+ "BGN": {
+ "name": "बà¥à¤²à¥à¤—ारियाली लेभ",
+ "symbol": "BGN"
+ },
+ "GBP": {
+ "name": "बेलायती पाउणà¥à¤¡ सà¥à¤Ÿà¤°à¥à¤²à¤¿à¤™",
+ "symbol": "£"
+ },
+ "BYR": {
+ "name": "बेलारूसी रूबल",
+ "symbol": "BYR"
+ },
+ "BWP": {
+ "name": "बोटà¥à¤¸à¤µà¤¾à¤¨à¤¾à¤¨ पà¥à¤²à¤¾",
+ "symbol": "BWP"
+ },
+ "BOB": {
+ "name": "बोलिभियन बोलिभियानो",
+ "symbol": "BOB"
+ },
+ "BAM": {
+ "name": "बोसà¥à¤¨à¤¿à¤¯à¤¾-हरà¥à¤œà¤—ोभिनिया रूपानà¥à¤¤à¤°à¤¯à¥‹à¤—à¥à¤¯ मारà¥à¤•",
+ "symbol": "BAM"
+ },
+ "BRL": {
+ "name": "बà¥à¤°à¤¾à¤œà¤¿à¤²à¤¿à¤¯à¤¨ रियल",
+ "symbol": "R$"
+ },
+ "BND": {
+ "name": "बà¥à¤°à¥à¤¨à¤¾à¤ˆ डलर",
+ "symbol": "BND"
+ },
+ "VUV": {
+ "name": "भानà¥à¤†à¤¤à¥‚ भातà¥",
+ "symbol": "VUV"
+ },
+ "INR": {
+ "name": "भारती रूपिà¤à¤¯à¤¾",
+ "symbol": "₹"
+ },
+ "VND": {
+ "name": "भियतनामी डङà¥",
+ "symbol": "â‚«"
+ },
+ "BTN": {
+ "name": "भà¥à¤Ÿà¤¾à¤¨à¥€ à¤à¤¨à¥â€Œà¤—à¥à¤²à¥à¤Ÿà¥à¤°à¥à¤®",
+ "symbol": "BTN"
+ },
+ "VEF": {
+ "name": "भेनेजà¥à¤à¤²à¤¨ बोलिभर",
+ "symbol": "VEF"
+ },
+ "MNT": {
+ "name": "मङà¥à¤—ोलियाली टà¥à¤—à¥à¤°à¤¿à¤•",
+ "symbol": "MNT"
+ },
+ "MWK": {
+ "name": "मलाविअन कà¥à¤µà¤¾à¤šà¤¾",
+ "symbol": "MWK"
+ },
+ "MYR": {
+ "name": "मलेशियाली रिङà¥à¤—ेट",
+ "symbol": "MYR"
+ },
+ "MRO": {
+ "name": "माउरिटानियानली औगà¥à¤‡à¤¯à¤¾",
+ "symbol": "MRO"
+ },
+ "MUR": {
+ "name": "माउरिटियन रूपी",
+ "symbol": "MUR"
+ },
+ "MOP": {
+ "name": "माकानिज पटाका",
+ "symbol": "MOP"
+ },
+ "MVR": {
+ "name": "मालडिभियाली रूफियाà¤",
+ "symbol": "MVR"
+ },
+ "MGA": {
+ "name": "मालागासी à¤à¤°à¤¿à¤†à¤°à¥€",
+ "symbol": "MGA"
+ },
+ "MDL": {
+ "name": "मालà¥à¤¡à¥‹à¤­à¤¨ लेउ",
+ "symbol": "MDL"
+ },
+ "MXN": {
+ "name": "मेकà¥à¤¸à¤¿à¤•à¤¨ पेसो",
+ "symbol": "MX$"
+ },
+ "MZN": {
+ "name": "मोजामà¥à¤µà¤¿à¤•à¤¨ मेटिकल",
+ "symbol": "MZN"
+ },
+ "MAD": {
+ "name": "मोरोकà¥à¤•à¤¾à¤²à¥€ डिरà¥â€Œà¤¹à¤¾à¤®",
+ "symbol": "MAD"
+ },
+ "MMK": {
+ "name": "मà¥à¤¯à¤¾à¤¨à¥à¤®à¤¾ कà¥à¤¯à¤¾à¤Ÿ",
+ "symbol": "MMK"
+ },
+ "MKD": {
+ "name": "मà¥à¤¯à¤¾à¤¸à¥‡à¤¡à¥‹à¤¨à¤¿à¤¯à¤¾à¤²à¥€ डेनार",
+ "symbol": "MKD"
+ },
+ "UAH": {
+ "name": "यà¥à¤•à¥à¤°à¥‡à¤¨à¥€ हिरà¥à¤­à¤¿à¤¨à¤¿à¤¯à¤¾",
+ "symbol": "UAH"
+ },
+ "UGX": {
+ "name": "यà¥à¤—ाणà¥à¤¡à¤¾à¤²à¥€ शिलिङ",
+ "symbol": "UGX"
+ },
+ "EUR": {
+ "name": "यà¥à¤°à¥‹",
+ "symbol": "€"
+ },
+ "YER": {
+ "name": "येमेनी रियाल",
+ "symbol": "YER"
+ },
+ "RUB": {
+ "name": "रूसी रूबल",
+ "symbol": "RUB"
+ },
+ "RON": {
+ "name": "रोमानियाली लेऊ",
+ "symbol": "RON"
+ },
+ "RWF": {
+ "name": "रà¥â€Œà¤µà¤¾à¤£à¥à¤¡à¤¾à¤²à¥€ फà¥à¤°à¤¾à¤¨à¥à¤•",
+ "symbol": "RWF"
+ },
+ "LAK": {
+ "name": "लाओशियन किप",
+ "symbol": "LAK"
+ },
+ "LTL": {
+ "name": "लिथà¥à¤¨à¤¿à¤¯à¤¾à¤²à¥€ लिटास",
+ "symbol": "LTL"
+ },
+ "LRD": {
+ "name": "लिबेरियाली डलर",
+ "symbol": "LRD"
+ },
+ "LYD": {
+ "name": "लिवियाली डिनार",
+ "symbol": "LYD"
+ },
+ "LBP": {
+ "name": "लेबनाली पाउनà¥à¤¡",
+ "symbol": "LBP"
+ },
+ "BZD": {
+ "name": "वेलिज डलर",
+ "symbol": "BZD"
+ },
+ "LKR": {
+ "name": "शà¥à¤°à¥€à¤²à¤™à¥à¤•à¤¾à¤²à¥€ रूपिया",
+ "symbol": "LKR"
+ },
+ "AED": {
+ "name": "संयà¥à¤•à¥à¤¤ अरब à¤à¤®à¤¿à¤°à¤¾à¤Ÿà¥à¤¸ डिरà¥à¤¹à¤¾à¤®",
+ "symbol": "AED"
+ },
+ "RSD": {
+ "name": "सरà¥à¤¬à¤¿à¤¯à¤¾à¤²à¥€ डिनार",
+ "symbol": "RSD"
+ },
+ "SAR": {
+ "name": "साउदी रियालहरू",
+ "symbol": "SAR"
+ },
+ "STD": {
+ "name": "साओ टोम र पà¥à¤°à¤¿à¤¨à¥à¤¸à¤¿à¤ª डोबà¥à¤°à¤¾",
+ "symbol": "STD"
+ },
+ "WST": {
+ "name": "सामोआन ताला",
+ "symbol": "WST"
+ },
+ "SGD": {
+ "name": "सिङà¥à¤—ापà¥à¤° डलर",
+ "symbol": "SGD"
+ },
+ "SLL": {
+ "name": "सियरा लियोनेन लियोन",
+ "symbol": "SLL"
+ },
+ "SYP": {
+ "name": "सिरियाली पाउनà¥à¤¡",
+ "symbol": "SYP"
+ },
+ "XAF": {
+ "name": "सीà¤à¤«à¥â€Œà¤ फà¥à¤°à¤¾à¤¨à¥à¤• बीइà¤à¤¸à¥€",
+ "symbol": "FCFA"
+ },
+ "XOF": {
+ "name": "सीà¤à¤«à¥â€Œà¤ फà¥à¤°à¤¾à¤¨à¥à¤• बीसीइà¤à¤“",
+ "symbol": "CFA"
+ },
+ "XPF": {
+ "name": "सीà¤à¤«à¥â€Œà¤ªà¥€ फà¥à¤°à¤¾à¤¨à¥à¤•",
+ "symbol": "CFPF"
+ },
+ "SDG": {
+ "name": "सà¥à¤¡à¤¾à¤¨à¥€ पाउनà¥à¤¡",
+ "symbol": "SDG"
+ },
+ "SRD": {
+ "name": "सà¥à¤°à¤¿à¤¨à¤¾à¤®à¤¿à¤œ डलर",
+ "symbol": "SRD"
+ },
+ "SCR": {
+ "name": "सेचेलोइस रूपी",
+ "symbol": "SCR"
+ },
+ "SHP": {
+ "name": "सेनà¥à¤Ÿ हेलेना पाउनà¥à¤¡",
+ "symbol": "SHP"
+ },
+ "SOS": {
+ "name": "सोमाली शिलिङ",
+ "symbol": "SOS"
+ },
+ "SBD": {
+ "name": "सोलोमन टापà¥à¤¹à¤°à¥‚का डलर",
+ "symbol": "SBD"
+ },
+ "SZL": {
+ "name": "सà¥à¤µà¤¾à¤œà¥€ लिलानà¥à¤—ेनी",
+ "symbol": "SZL"
+ },
+ "SEK": {
+ "name": "सà¥à¤µà¤¿à¤¡à¤¿à¤¶ कà¥à¤°à¥‹à¤¨à¤¾",
+ "symbol": "SEK"
+ },
+ "CHF": {
+ "name": "सà¥à¤µà¤¿à¤¸à¥ फà¥à¤°à¥ˆà¤™à¥à¤•",
+ "symbol": "CHF"
+ },
+ "HKD": {
+ "name": "हङकङ डलर",
+ "symbol": "HK$"
+ },
+ "HUF": {
+ "name": "हङà¥à¤—ेरियन फोरिनà¥à¤Ÿ",
+ "symbol": "HUF"
+ },
+ "HTG": {
+ "name": "हैटियाली गà¥à¤°à¥à¤¡",
+ "symbol": "HTG"
+ },
+ "HNL": {
+ "name": "होनà¥à¤¡à¥à¤°à¤¾à¤¨ लेमà¥à¤ªà¤¿à¤°à¤¾",
+ "symbol": "HNL"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/currency/nl.json b/library/intl/resources/currency/nl.json
new file mode 100644
index 000000000..5b8db07bd
--- /dev/null
+++ b/library/intl/resources/currency/nl.json
@@ -0,0 +1,634 @@
+{
+ "AFN": {
+ "name": "Afghaanse afghani",
+ "symbol": "AFN"
+ },
+ "ALL": {
+ "name": "Albanese lek",
+ "symbol": "ALL"
+ },
+ "DZD": {
+ "name": "Algerijnse dinar",
+ "symbol": "DZD"
+ },
+ "USD": {
+ "name": "Amerikaanse dollar",
+ "symbol": "US$"
+ },
+ "AOA": {
+ "name": "Angolese kwanza",
+ "symbol": "AOA"
+ },
+ "ARS": {
+ "name": "Argentijnse peso",
+ "symbol": "ARS"
+ },
+ "AMD": {
+ "name": "Armeense dram",
+ "symbol": "AMD"
+ },
+ "AWG": {
+ "name": "Arubaanse gulden",
+ "symbol": "AWG"
+ },
+ "AUD": {
+ "name": "Australische dollar",
+ "symbol": "AU$"
+ },
+ "AZN": {
+ "name": "Azerbeidzjaanse manat",
+ "symbol": "AZN"
+ },
+ "BSD": {
+ "name": "Bahamaanse dollar",
+ "symbol": "BSD"
+ },
+ "BHD": {
+ "name": "Bahreinse dinar",
+ "symbol": "BHD"
+ },
+ "BBD": {
+ "name": "Barbadaanse dollar",
+ "symbol": "BBD"
+ },
+ "BZD": {
+ "name": "Belizaanse dollar",
+ "symbol": "BZD"
+ },
+ "BDT": {
+ "name": "Bengalese taka",
+ "symbol": "BDT"
+ },
+ "BMD": {
+ "name": "Bermuda-dollar",
+ "symbol": "BMD"
+ },
+ "BTN": {
+ "name": "Bhutaanse ngultrum",
+ "symbol": "BTN"
+ },
+ "BOB": {
+ "name": "Boliviaanse boliviano",
+ "symbol": "BOB"
+ },
+ "BAM": {
+ "name": "Bosnische convertibele mark",
+ "symbol": "BAM"
+ },
+ "BWP": {
+ "name": "Botswaanse pula",
+ "symbol": "BWP"
+ },
+ "BRL": {
+ "name": "Braziliaanse real",
+ "symbol": "R$"
+ },
+ "GBP": {
+ "name": "Brits pond sterling",
+ "symbol": "£"
+ },
+ "BND": {
+ "name": "Bruneise dollar",
+ "symbol": "BND"
+ },
+ "BGN": {
+ "name": "Bulgaarse lev",
+ "symbol": "BGN"
+ },
+ "BIF": {
+ "name": "Burundese frank",
+ "symbol": "BIF"
+ },
+ "KHR": {
+ "name": "Cambodjaanse riel",
+ "symbol": "KHR"
+ },
+ "CAD": {
+ "name": "Canadese dollar",
+ "symbol": "C$"
+ },
+ "KYD": {
+ "name": "Caymaneilandse dollar",
+ "symbol": "KYD"
+ },
+ "XOF": {
+ "name": "CFA-franc BCEAO",
+ "symbol": "CFA"
+ },
+ "XAF": {
+ "name": "CFA-frank",
+ "symbol": "FCFA"
+ },
+ "XPF": {
+ "name": "CFP-franc",
+ "symbol": "XPF"
+ },
+ "CLP": {
+ "name": "Chileense peso",
+ "symbol": "CLP"
+ },
+ "CNY": {
+ "name": "Chinese yuan renminbi",
+ "symbol": "CNÂ¥"
+ },
+ "COP": {
+ "name": "Colombiaanse peso",
+ "symbol": "COP"
+ },
+ "KMF": {
+ "name": "Comorese frank",
+ "symbol": "KMF"
+ },
+ "CDF": {
+ "name": "Congolese frank",
+ "symbol": "CDF"
+ },
+ "CRC": {
+ "name": "Costa Ricaanse colon",
+ "symbol": "CRC"
+ },
+ "CUC": {
+ "name": "Cubaanse convertibele peso",
+ "symbol": "CUC"
+ },
+ "CUP": {
+ "name": "Cubaanse peso",
+ "symbol": "CUP"
+ },
+ "DKK": {
+ "name": "Deense kroon",
+ "symbol": "DKK"
+ },
+ "DJF": {
+ "name": "Djiboutiaanse frank",
+ "symbol": "DJF"
+ },
+ "DOP": {
+ "name": "Dominicaanse peso",
+ "symbol": "DOP"
+ },
+ "EGP": {
+ "name": "Egyptisch pond",
+ "symbol": "EGP"
+ },
+ "ERN": {
+ "name": "Eritrese nakfa",
+ "symbol": "ERN"
+ },
+ "ETB": {
+ "name": "Ethiopische birr",
+ "symbol": "ETB"
+ },
+ "EUR": {
+ "name": "Euro",
+ "symbol": "€"
+ },
+ "FKP": {
+ "name": "Falklandeilands pond",
+ "symbol": "FKP"
+ },
+ "FJD": {
+ "name": "Fiji-dollar",
+ "symbol": "FJ$"
+ },
+ "PHP": {
+ "name": "Filipijnse peso",
+ "symbol": "PHP"
+ },
+ "GMD": {
+ "name": "Gambiaanse dalasi",
+ "symbol": "GMD"
+ },
+ "GEL": {
+ "name": "Georgische lari",
+ "symbol": "GEL"
+ },
+ "GHS": {
+ "name": "Ghanese cedi",
+ "symbol": "GHS"
+ },
+ "GIP": {
+ "name": "Gibraltarees pond",
+ "symbol": "GIP"
+ },
+ "GTQ": {
+ "name": "Guatemalteekse quetzal",
+ "symbol": "GTQ"
+ },
+ "GNF": {
+ "name": "Guinese franc",
+ "symbol": "GNF"
+ },
+ "GYD": {
+ "name": "Guyaanse dollar",
+ "symbol": "GYD"
+ },
+ "HTG": {
+ "name": "Haïtiaanse gourde",
+ "symbol": "HTG"
+ },
+ "HNL": {
+ "name": "Hondurese lempira",
+ "symbol": "HNL"
+ },
+ "HUF": {
+ "name": "Hongaarse forint",
+ "symbol": "HUF"
+ },
+ "HKD": {
+ "name": "Hongkongse dollar",
+ "symbol": "HK$"
+ },
+ "ISK": {
+ "name": "IJslandse kroon",
+ "symbol": "ISK"
+ },
+ "INR": {
+ "name": "Indiase roepie",
+ "symbol": "₹"
+ },
+ "IDR": {
+ "name": "Indonesische roepia",
+ "symbol": "IDR"
+ },
+ "IQD": {
+ "name": "Iraakse dinar",
+ "symbol": "IQD"
+ },
+ "IRR": {
+ "name": "Iraanse rial",
+ "symbol": "IRR"
+ },
+ "ILS": {
+ "name": "Israëlische nieuwe shekel",
+ "symbol": "₪"
+ },
+ "JMD": {
+ "name": "Jamaicaanse dollar",
+ "symbol": "JMD"
+ },
+ "JPY": {
+ "name": "Japanse yen",
+ "symbol": "JPÂ¥"
+ },
+ "YER": {
+ "name": "Jemenitische rial",
+ "symbol": "YER"
+ },
+ "JOD": {
+ "name": "Jordaanse dinar",
+ "symbol": "JOD"
+ },
+ "CVE": {
+ "name": "Kaapverdische escudo",
+ "symbol": "CVE"
+ },
+ "KZT": {
+ "name": "Kazachse tenge",
+ "symbol": "KZT"
+ },
+ "KES": {
+ "name": "Keniaanse shilling",
+ "symbol": "KES"
+ },
+ "KGS": {
+ "name": "Kirgizische som",
+ "symbol": "KGS"
+ },
+ "KWD": {
+ "name": "Koeweitse dinar",
+ "symbol": "KWD"
+ },
+ "HRK": {
+ "name": "Kroatische kuna",
+ "symbol": "HRK"
+ },
+ "LAK": {
+ "name": "Laotiaanse kip",
+ "symbol": "LAK"
+ },
+ "LSL": {
+ "name": "Lesothaanse loti",
+ "symbol": "LSL"
+ },
+ "LBP": {
+ "name": "Libanees pond",
+ "symbol": "LBP"
+ },
+ "LRD": {
+ "name": "Liberiaanse dollar",
+ "symbol": "LRD"
+ },
+ "LYD": {
+ "name": "Libische dinar",
+ "symbol": "LYD"
+ },
+ "LTL": {
+ "name": "Litouwse litas",
+ "symbol": "LTL"
+ },
+ "MOP": {
+ "name": "Macause pataca",
+ "symbol": "MOP"
+ },
+ "MKD": {
+ "name": "Macedonische denar",
+ "symbol": "MKD"
+ },
+ "MGA": {
+ "name": "Malagassische ariary",
+ "symbol": "MGA"
+ },
+ "MWK": {
+ "name": "Malawische kwacha",
+ "symbol": "MWK"
+ },
+ "MVR": {
+ "name": "Maldivische rufiyaa",
+ "symbol": "MVR"
+ },
+ "MYR": {
+ "name": "Maleisische ringgit",
+ "symbol": "MYR"
+ },
+ "MAD": {
+ "name": "Marokkaanse dirham",
+ "symbol": "MAD"
+ },
+ "MRO": {
+ "name": "Mauritaanse ouguiya",
+ "symbol": "MRO"
+ },
+ "MUR": {
+ "name": "Mauritiaanse roepie",
+ "symbol": "MUR"
+ },
+ "MXN": {
+ "name": "Mexicaanse peso",
+ "symbol": "MX$"
+ },
+ "MDL": {
+ "name": "Moldavische leu",
+ "symbol": "MDL"
+ },
+ "MNT": {
+ "name": "Mongoolse tugrik",
+ "symbol": "MNT"
+ },
+ "MZN": {
+ "name": "Mozambikaanse metical",
+ "symbol": "MZN"
+ },
+ "MMK": {
+ "name": "Myanmarese kyat",
+ "symbol": "MMK"
+ },
+ "NAD": {
+ "name": "Namibische dollar",
+ "symbol": "NAD"
+ },
+ "ANG": {
+ "name": "Nederlands-Antilliaanse gulden",
+ "symbol": "ANG"
+ },
+ "NPR": {
+ "name": "Nepalese roepie",
+ "symbol": "NPR"
+ },
+ "NIO": {
+ "name": "Nicaraguaanse córdoba",
+ "symbol": "NIO"
+ },
+ "NZD": {
+ "name": "Nieuw-Zeelandse dollar",
+ "symbol": "NZ$"
+ },
+ "TWD": {
+ "name": "Nieuwe Taiwanese dollar",
+ "symbol": "NT$"
+ },
+ "NGN": {
+ "name": "Nigeriaanse naira",
+ "symbol": "NGN"
+ },
+ "KPW": {
+ "name": "Noord-Koreaanse won",
+ "symbol": "KPW"
+ },
+ "NOK": {
+ "name": "Noorse kroon",
+ "symbol": "NOK"
+ },
+ "UGX": {
+ "name": "Oegandese shilling",
+ "symbol": "UGX"
+ },
+ "UAH": {
+ "name": "Oekraïense hryvnia",
+ "symbol": "UAH"
+ },
+ "UZS": {
+ "name": "Oezbeekse sum",
+ "symbol": "UZS"
+ },
+ "OMR": {
+ "name": "Omaanse rial",
+ "symbol": "OMR"
+ },
+ "XCD": {
+ "name": "Oost-Caribische dollar",
+ "symbol": "EC$"
+ },
+ "PKR": {
+ "name": "Pakistaanse roepie",
+ "symbol": "PKR"
+ },
+ "PAB": {
+ "name": "Panamese balboa",
+ "symbol": "PAB"
+ },
+ "PGK": {
+ "name": "Papoea-Nieuw-Guinese kina",
+ "symbol": "PGK"
+ },
+ "PYG": {
+ "name": "Paraguayaanse guarani",
+ "symbol": "PYG"
+ },
+ "PEN": {
+ "name": "Peruaanse nieuwe sol",
+ "symbol": "PEN"
+ },
+ "PLN": {
+ "name": "Poolse zloty",
+ "symbol": "PLN"
+ },
+ "QAR": {
+ "name": "Qatarese rial",
+ "symbol": "QAR"
+ },
+ "RON": {
+ "name": "Roemeense leu",
+ "symbol": "RON"
+ },
+ "RUB": {
+ "name": "Russische roebel",
+ "symbol": "RUB"
+ },
+ "RWF": {
+ "name": "Rwandese frank",
+ "symbol": "RWF"
+ },
+ "SBD": {
+ "name": "Salomon-dollar",
+ "symbol": "SI$"
+ },
+ "SVC": {
+ "name": "Salvadoraanse colón",
+ "symbol": "SVC"
+ },
+ "WST": {
+ "name": "Samoaanse tala",
+ "symbol": "WST"
+ },
+ "STD": {
+ "name": "Santomese dobra",
+ "symbol": "STD"
+ },
+ "SAR": {
+ "name": "Saoedi-Arabische riyal",
+ "symbol": "SAR"
+ },
+ "RSD": {
+ "name": "Servische dinar",
+ "symbol": "RSD"
+ },
+ "SCR": {
+ "name": "Seychelse roepie",
+ "symbol": "SCR"
+ },
+ "SLL": {
+ "name": "Sierraleoonse leone",
+ "symbol": "SLL"
+ },
+ "SGD": {
+ "name": "Singaporese dollar",
+ "symbol": "SGD"
+ },
+ "SHP": {
+ "name": "Sint-Heleens pond",
+ "symbol": "SHP"
+ },
+ "SDG": {
+ "name": "Soedanees pond",
+ "symbol": "SDG"
+ },
+ "SOS": {
+ "name": "Somalische shilling",
+ "symbol": "SOS"
+ },
+ "LKR": {
+ "name": "Sri Lankaanse roepie",
+ "symbol": "LKR"
+ },
+ "SRD": {
+ "name": "Surinaamse dollar",
+ "symbol": "SRD"
+ },
+ "SZL": {
+ "name": "Swazische lilangeni",
+ "symbol": "SZL"
+ },
+ "SYP": {
+ "name": "Syrisch pond",
+ "symbol": "SYP"
+ },
+ "TJS": {
+ "name": "Tadzjiekse somoni",
+ "symbol": "TJS"
+ },
+ "TZS": {
+ "name": "Tanzaniaanse shilling",
+ "symbol": "TZS"
+ },
+ "THB": {
+ "name": "Thaise baht",
+ "symbol": "฿"
+ },
+ "TOP": {
+ "name": "Tongaanse paʻanga",
+ "symbol": "TOP"
+ },
+ "TTD": {
+ "name": "Trinidad en Tobago-dollar",
+ "symbol": "TTD"
+ },
+ "CZK": {
+ "name": "Tsjechische kroon",
+ "symbol": "CZK"
+ },
+ "TND": {
+ "name": "Tunesische dinar",
+ "symbol": "TND"
+ },
+ "TMT": {
+ "name": "Turkmeense manat",
+ "symbol": "TMT"
+ },
+ "TRY": {
+ "name": "Turkse lira",
+ "symbol": "TRY"
+ },
+ "UYU": {
+ "name": "Uruguayaanse peso",
+ "symbol": "UYU"
+ },
+ "VUV": {
+ "name": "Vanuatuaanse vatu",
+ "symbol": "VUV"
+ },
+ "VEF": {
+ "name": "Venezolaanse bolivar",
+ "symbol": "VEF"
+ },
+ "AED": {
+ "name": "Verenigde Arabische Emiraten-dirham",
+ "symbol": "AED"
+ },
+ "VND": {
+ "name": "Vietnamese dong",
+ "symbol": "â‚«"
+ },
+ "BYR": {
+ "name": "Wit-Russische roebel",
+ "symbol": "BYR"
+ },
+ "ZMW": {
+ "name": "Zambiaanse kwacha",
+ "symbol": "ZMW"
+ },
+ "ZWL": {
+ "name": "Zimbabwaanse dollar (2009)",
+ "symbol": "ZWL"
+ },
+ "ZAR": {
+ "name": "Zuid-Afrikaanse rand",
+ "symbol": "ZAR"
+ },
+ "KRW": {
+ "name": "Zuid-Koreaanse won",
+ "symbol": "â‚©"
+ },
+ "SSP": {
+ "name": "Zuid-Soedanees pond",
+ "symbol": "SSP"
+ },
+ "SEK": {
+ "name": "Zweedse kroon",
+ "symbol": "SEK"
+ },
+ "CHF": {
+ "name": "Zwitserse frank",
+ "symbol": "CHF"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/currency/nmg.json b/library/intl/resources/currency/nmg.json
new file mode 100644
index 000000000..06722f742
--- /dev/null
+++ b/library/intl/resources/currency/nmg.json
@@ -0,0 +1,634 @@
+{
+ "AFN": {
+ "name": "AFN",
+ "symbol": "AFN"
+ },
+ "ALL": {
+ "name": "ALL",
+ "symbol": "ALL"
+ },
+ "AMD": {
+ "name": "AMD",
+ "symbol": "AMD"
+ },
+ "ANG": {
+ "name": "ANG",
+ "symbol": "ANG"
+ },
+ "ARS": {
+ "name": "ARS",
+ "symbol": "ARS"
+ },
+ "AWG": {
+ "name": "AWG",
+ "symbol": "AWG"
+ },
+ "AZN": {
+ "name": "AZN",
+ "symbol": "AZN"
+ },
+ "BAM": {
+ "name": "BAM",
+ "symbol": "BAM"
+ },
+ "BBD": {
+ "name": "BBD",
+ "symbol": "BBD"
+ },
+ "BDT": {
+ "name": "BDT",
+ "symbol": "BDT"
+ },
+ "BGN": {
+ "name": "BGN",
+ "symbol": "BGN"
+ },
+ "BMD": {
+ "name": "BMD",
+ "symbol": "BMD"
+ },
+ "BND": {
+ "name": "BND",
+ "symbol": "BND"
+ },
+ "BOB": {
+ "name": "BOB",
+ "symbol": "BOB"
+ },
+ "BRL": {
+ "name": "BRL",
+ "symbol": "R$"
+ },
+ "BSD": {
+ "name": "BSD",
+ "symbol": "BSD"
+ },
+ "BTN": {
+ "name": "BTN",
+ "symbol": "BTN"
+ },
+ "BYR": {
+ "name": "BYR",
+ "symbol": "BYR"
+ },
+ "BZD": {
+ "name": "BZD",
+ "symbol": "BZD"
+ },
+ "CLP": {
+ "name": "CLP",
+ "symbol": "CLP"
+ },
+ "COP": {
+ "name": "COP",
+ "symbol": "COP"
+ },
+ "CRC": {
+ "name": "CRC",
+ "symbol": "CRC"
+ },
+ "CUC": {
+ "name": "CUC",
+ "symbol": "CUC"
+ },
+ "CUP": {
+ "name": "CUP",
+ "symbol": "CUP"
+ },
+ "CZK": {
+ "name": "CZK",
+ "symbol": "CZK"
+ },
+ "DKK": {
+ "name": "DKK",
+ "symbol": "DKK"
+ },
+ "DOP": {
+ "name": "DOP",
+ "symbol": "DOP"
+ },
+ "USD": {
+ "name": "DÉ”ÌllÉ” Amɛŕka",
+ "symbol": "US$"
+ },
+ "CAD": {
+ "name": "DÉ”ÌllÉ” Kanada",
+ "symbol": "CA$"
+ },
+ "LRD": {
+ "name": "DÉ”ÌllÉ” Liberia",
+ "symbol": "LRD"
+ },
+ "NAD": {
+ "name": "DÉ”ÌllÉ” Namibia",
+ "symbol": "NAD"
+ },
+ "AUD": {
+ "name": "DÉ”ÌllÉ” Ɔstralia",
+ "symbol": "A$"
+ },
+ "EUR": {
+ "name": "Euro",
+ "symbol": "€"
+ },
+ "FJD": {
+ "name": "FJD",
+ "symbol": "FJD"
+ },
+ "FKP": {
+ "name": "FKP",
+ "symbol": "FKP"
+ },
+ "CDF": {
+ "name": "Fraŋ bó Kongolɛ̌",
+ "symbol": "CDF"
+ },
+ "KMF": {
+ "name": "Fraŋ bó Kɔmɔr",
+ "symbol": "KMF"
+ },
+ "BIF": {
+ "name": "Fraŋ Burundi",
+ "symbol": "BIF"
+ },
+ "XOF": {
+ "name": "Fraŋ CFA BCEAO",
+ "symbol": "CFA"
+ },
+ "XAF": {
+ "name": "Fraŋ CFA BEAC",
+ "symbol": "FCFA"
+ },
+ "DJF": {
+ "name": "Fraŋ Jibuti",
+ "symbol": "DJF"
+ },
+ "RWF": {
+ "name": "Fraŋ Rwanda",
+ "symbol": "RWF"
+ },
+ "CHF": {
+ "name": "Fraŋ Suisse",
+ "symbol": "CHF"
+ },
+ "GEL": {
+ "name": "GEL",
+ "symbol": "GEL"
+ },
+ "GHS": {
+ "name": "GHS",
+ "symbol": "GHS"
+ },
+ "GIP": {
+ "name": "GIP",
+ "symbol": "GIP"
+ },
+ "GNF": {
+ "name": "GNF",
+ "symbol": "GNF"
+ },
+ "GTQ": {
+ "name": "GTQ",
+ "symbol": "GTQ"
+ },
+ "GYD": {
+ "name": "GYD",
+ "symbol": "GYD"
+ },
+ "HKD": {
+ "name": "HKD",
+ "symbol": "HK$"
+ },
+ "HNL": {
+ "name": "HNL",
+ "symbol": "HNL"
+ },
+ "HRK": {
+ "name": "HRK",
+ "symbol": "HRK"
+ },
+ "HTG": {
+ "name": "HTG",
+ "symbol": "HTG"
+ },
+ "HUF": {
+ "name": "HUF",
+ "symbol": "HUF"
+ },
+ "IDR": {
+ "name": "IDR",
+ "symbol": "IDR"
+ },
+ "ILS": {
+ "name": "ILS",
+ "symbol": "₪"
+ },
+ "IQD": {
+ "name": "IQD",
+ "symbol": "IQD"
+ },
+ "IRR": {
+ "name": "IRR",
+ "symbol": "IRR"
+ },
+ "ISK": {
+ "name": "ISK",
+ "symbol": "ISK"
+ },
+ "JMD": {
+ "name": "JMD",
+ "symbol": "JMD"
+ },
+ "JOD": {
+ "name": "JOD",
+ "symbol": "JOD"
+ },
+ "KGS": {
+ "name": "KGS",
+ "symbol": "KGS"
+ },
+ "KHR": {
+ "name": "KHR",
+ "symbol": "KHR"
+ },
+ "KPW": {
+ "name": "KPW",
+ "symbol": "KPW"
+ },
+ "KRW": {
+ "name": "KRW",
+ "symbol": "â‚©"
+ },
+ "KWD": {
+ "name": "KWD",
+ "symbol": "KWD"
+ },
+ "KYD": {
+ "name": "KYD",
+ "symbol": "KYD"
+ },
+ "KZT": {
+ "name": "KZT",
+ "symbol": "KZT"
+ },
+ "LAK": {
+ "name": "LAK",
+ "symbol": "LAK"
+ },
+ "LBP": {
+ "name": "LBP",
+ "symbol": "LBP"
+ },
+ "LKR": {
+ "name": "LKR",
+ "symbol": "LKR"
+ },
+ "LTL": {
+ "name": "LTL",
+ "symbol": "LTL"
+ },
+ "MDL": {
+ "name": "MDL",
+ "symbol": "MDL"
+ },
+ "MKD": {
+ "name": "MKD",
+ "symbol": "MKD"
+ },
+ "MMK": {
+ "name": "MMK",
+ "symbol": "MMK"
+ },
+ "MNT": {
+ "name": "MNT",
+ "symbol": "MNT"
+ },
+ "MOP": {
+ "name": "MOP",
+ "symbol": "MOP"
+ },
+ "ZAR": {
+ "name": "Mɔn Afrik yí sí",
+ "symbol": "ZAR"
+ },
+ "EGP": {
+ "name": "Mɔn Ägyptɛn",
+ "symbol": "EGP"
+ },
+ "DZD": {
+ "name": "Mɔn Algeria",
+ "symbol": "DZD"
+ },
+ "AOA": {
+ "name": "Mɔn Angola",
+ "symbol": "AOA"
+ },
+ "AED": {
+ "name": "Mɔn B ´Arabe",
+ "symbol": "AED"
+ },
+ "BHD": {
+ "name": "Mɔn Bahrein",
+ "symbol": "BHD"
+ },
+ "CNY": {
+ "name": "Mɔn bó Chinois",
+ "symbol": "CNÂ¥"
+ },
+ "BWP": {
+ "name": "Mɔn Botswana",
+ "symbol": "BWP"
+ },
+ "ERN": {
+ "name": "Mɔn Erytré",
+ "symbol": "ERN"
+ },
+ "ETB": {
+ "name": "Mɔn Ethiopia",
+ "symbol": "ETB"
+ },
+ "GMD": {
+ "name": "Mɔn Gambia",
+ "symbol": "GMD"
+ },
+ "INR": {
+ "name": "Mɔn India",
+ "symbol": "₹"
+ },
+ "JPY": {
+ "name": "Mɔn Japɔn",
+ "symbol": "JPÂ¥"
+ },
+ "CVE": {
+ "name": "Mɔn Kapvɛrt",
+ "symbol": "CVE"
+ },
+ "KES": {
+ "name": "Mɔn Kɛnya",
+ "symbol": "KES"
+ },
+ "SLL": {
+ "name": "Mɔn Leɔne",
+ "symbol": "SLL"
+ },
+ "LSL": {
+ "name": "Mɔn Lesoto",
+ "symbol": "LSL"
+ },
+ "LYD": {
+ "name": "Mɔn Libya",
+ "symbol": "LYD"
+ },
+ "SZL": {
+ "name": "Mɔn Ligangeni",
+ "symbol": "SZL"
+ },
+ "SHP": {
+ "name": "Mɔn má Saint Lina",
+ "symbol": "SHP"
+ },
+ "MGA": {
+ "name": "Mɔn Madagaskar",
+ "symbol": "MGA"
+ },
+ "MWK": {
+ "name": "Mɔn Malawi",
+ "symbol": "MWK"
+ },
+ "MAD": {
+ "name": "Mɔn Marɔk",
+ "symbol": "MAD"
+ },
+ "MUR": {
+ "name": "Mɔn Moriss",
+ "symbol": "MUR"
+ },
+ "MRO": {
+ "name": "Mɔn Moritania",
+ "symbol": "MRO"
+ },
+ "GBP": {
+ "name": "Mɔn Ngɛ̄lɛ̄n",
+ "symbol": "£"
+ },
+ "STD": {
+ "name": "Mɔn Sao tomé na prinship",
+ "symbol": "STD"
+ },
+ "SAR": {
+ "name": "Mɔn Saudi Arabia",
+ "symbol": "SAR"
+ },
+ "SCR": {
+ "name": "Mɔn Seychɛlle",
+ "symbol": "SCR"
+ },
+ "SOS": {
+ "name": "Mɔn Somalía",
+ "symbol": "SOS"
+ },
+ "SDG": {
+ "name": "Mɔn Sudan",
+ "symbol": "SDG"
+ },
+ "TZS": {
+ "name": "Mɔn Tanzania",
+ "symbol": "TZS"
+ },
+ "TND": {
+ "name": "Mɔn Tunisia",
+ "symbol": "TND"
+ },
+ "UGX": {
+ "name": "Mɔn Uganda",
+ "symbol": "UGX"
+ },
+ "ZMW": {
+ "name": "Mɔn Zambia",
+ "symbol": "ZMW"
+ },
+ "MVR": {
+ "name": "MVR",
+ "symbol": "MVR"
+ },
+ "MXN": {
+ "name": "MXN",
+ "symbol": "MX$"
+ },
+ "MYR": {
+ "name": "MYR",
+ "symbol": "MYR"
+ },
+ "MZN": {
+ "name": "MZN",
+ "symbol": "MZN"
+ },
+ "NGN": {
+ "name": "Naïra Nigeria",
+ "symbol": "NGN"
+ },
+ "NIO": {
+ "name": "NIO",
+ "symbol": "NIO"
+ },
+ "NOK": {
+ "name": "NOK",
+ "symbol": "NOK"
+ },
+ "NPR": {
+ "name": "NPR",
+ "symbol": "NPR"
+ },
+ "NZD": {
+ "name": "NZD",
+ "symbol": "NZ$"
+ },
+ "OMR": {
+ "name": "OMR",
+ "symbol": "OMR"
+ },
+ "PAB": {
+ "name": "PAB",
+ "symbol": "PAB"
+ },
+ "PEN": {
+ "name": "PEN",
+ "symbol": "PEN"
+ },
+ "PGK": {
+ "name": "PGK",
+ "symbol": "PGK"
+ },
+ "PHP": {
+ "name": "PHP",
+ "symbol": "PHP"
+ },
+ "PKR": {
+ "name": "PKR",
+ "symbol": "PKR"
+ },
+ "PLN": {
+ "name": "PLN",
+ "symbol": "PLN"
+ },
+ "PYG": {
+ "name": "PYG",
+ "symbol": "PYG"
+ },
+ "QAR": {
+ "name": "QAR",
+ "symbol": "QAR"
+ },
+ "RON": {
+ "name": "RON",
+ "symbol": "RON"
+ },
+ "RSD": {
+ "name": "RSD",
+ "symbol": "RSD"
+ },
+ "RUB": {
+ "name": "RUB",
+ "symbol": "RUB"
+ },
+ "SBD": {
+ "name": "SBD",
+ "symbol": "SBD"
+ },
+ "SEK": {
+ "name": "SEK",
+ "symbol": "SEK"
+ },
+ "SGD": {
+ "name": "SGD",
+ "symbol": "SGD"
+ },
+ "SRD": {
+ "name": "SRD",
+ "symbol": "SRD"
+ },
+ "SSP": {
+ "name": "SSP",
+ "symbol": "SSP"
+ },
+ "SVC": {
+ "name": "SVC",
+ "symbol": "SVC"
+ },
+ "SYP": {
+ "name": "SYP",
+ "symbol": "SYP"
+ },
+ "THB": {
+ "name": "THB",
+ "symbol": "THB"
+ },
+ "TJS": {
+ "name": "TJS",
+ "symbol": "TJS"
+ },
+ "TMT": {
+ "name": "TMT",
+ "symbol": "TMT"
+ },
+ "TOP": {
+ "name": "TOP",
+ "symbol": "TOP"
+ },
+ "TRY": {
+ "name": "TRY",
+ "symbol": "TRY"
+ },
+ "TTD": {
+ "name": "TTD",
+ "symbol": "TTD"
+ },
+ "TWD": {
+ "name": "TWD",
+ "symbol": "NT$"
+ },
+ "UAH": {
+ "name": "UAH",
+ "symbol": "UAH"
+ },
+ "UYU": {
+ "name": "UYU",
+ "symbol": "UYU"
+ },
+ "UZS": {
+ "name": "UZS",
+ "symbol": "UZS"
+ },
+ "VEF": {
+ "name": "VEF",
+ "symbol": "VEF"
+ },
+ "VND": {
+ "name": "VND",
+ "symbol": "â‚«"
+ },
+ "VUV": {
+ "name": "VUV",
+ "symbol": "VUV"
+ },
+ "WST": {
+ "name": "WST",
+ "symbol": "WST"
+ },
+ "XCD": {
+ "name": "XCD",
+ "symbol": "EC$"
+ },
+ "XPF": {
+ "name": "XPF",
+ "symbol": "CFPF"
+ },
+ "YER": {
+ "name": "YER",
+ "symbol": "YER"
+ },
+ "ZWL": {
+ "name": "ZWL",
+ "symbol": "ZWL"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/currency/nn.json b/library/intl/resources/currency/nn.json
new file mode 100644
index 000000000..cc9301092
--- /dev/null
+++ b/library/intl/resources/currency/nn.json
@@ -0,0 +1,634 @@
+{
+ "AFN": {
+ "name": "afghani",
+ "symbol": "AFN"
+ },
+ "ALL": {
+ "name": "albansk lek",
+ "symbol": "ALL"
+ },
+ "DZD": {
+ "name": "algerisk dinar",
+ "symbol": "DZD"
+ },
+ "USD": {
+ "name": "amerikansk dollar",
+ "symbol": "US$"
+ },
+ "AOA": {
+ "name": "angolsk kwanza",
+ "symbol": "AOA"
+ },
+ "ARS": {
+ "name": "argentinsk peso",
+ "symbol": "ARS"
+ },
+ "AMD": {
+ "name": "armensk dram",
+ "symbol": "AMD"
+ },
+ "AWG": {
+ "name": "arubisk gylden",
+ "symbol": "AWG"
+ },
+ "AZN": {
+ "name": "aserbajdsjansk manat",
+ "symbol": "AZN"
+ },
+ "XCD": {
+ "name": "austkaribisk dollar",
+ "symbol": "EC$"
+ },
+ "AUD": {
+ "name": "australsk dollar",
+ "symbol": "A$"
+ },
+ "BSD": {
+ "name": "bahamisk dollar",
+ "symbol": "BSD"
+ },
+ "BHD": {
+ "name": "bahrainsk dinar",
+ "symbol": "BHD"
+ },
+ "BDT": {
+ "name": "bangladeshisk taka",
+ "symbol": "BDT"
+ },
+ "BBD": {
+ "name": "barbadisk dollar",
+ "symbol": "BBD"
+ },
+ "BZD": {
+ "name": "belizisk dollar",
+ "symbol": "BZD"
+ },
+ "BMD": {
+ "name": "bermudisk dollar",
+ "symbol": "BMD"
+ },
+ "BTN": {
+ "name": "bhutansk ngultrum",
+ "symbol": "BTN"
+ },
+ "BOB": {
+ "name": "boliviano",
+ "symbol": "BOB"
+ },
+ "BAM": {
+ "name": "bosnisk-hercegovinsk mark (konvertibel)",
+ "symbol": "BAM"
+ },
+ "BWP": {
+ "name": "botswansk pula",
+ "symbol": "BWP"
+ },
+ "BRL": {
+ "name": "brasiliansk real",
+ "symbol": "R$"
+ },
+ "GBP": {
+ "name": "britisk pund sterling",
+ "symbol": "£"
+ },
+ "BND": {
+ "name": "bruneisk dollar",
+ "symbol": "BND"
+ },
+ "BGN": {
+ "name": "bulgarsk ny lev",
+ "symbol": "BGN"
+ },
+ "BIF": {
+ "name": "burundisk franc",
+ "symbol": "BIF"
+ },
+ "KYD": {
+ "name": "caymansk dollar",
+ "symbol": "KYD"
+ },
+ "XOF": {
+ "name": "CFA franc BCEAO",
+ "symbol": "CFA"
+ },
+ "XAF": {
+ "name": "CFA franc BEAC",
+ "symbol": "FCFA"
+ },
+ "XPF": {
+ "name": "CFP franc",
+ "symbol": "CFPF"
+ },
+ "CLP": {
+ "name": "chilensk peso",
+ "symbol": "CLP"
+ },
+ "COP": {
+ "name": "colombiansk peso",
+ "symbol": "COP"
+ },
+ "CRC": {
+ "name": "costaricansk colon",
+ "symbol": "CRC"
+ },
+ "CUC": {
+ "name": "CUC",
+ "symbol": "CUC"
+ },
+ "DKK": {
+ "name": "dansk krone",
+ "symbol": "DKK"
+ },
+ "DJF": {
+ "name": "djiboutisk franc",
+ "symbol": "DJF"
+ },
+ "DOP": {
+ "name": "dominikansk peso",
+ "symbol": "DOP"
+ },
+ "EGP": {
+ "name": "egyptisk pund",
+ "symbol": "EGP"
+ },
+ "ERN": {
+ "name": "eritreisk nakfa",
+ "symbol": "ERN"
+ },
+ "ETB": {
+ "name": "etiopisk birr",
+ "symbol": "ETB"
+ },
+ "EUR": {
+ "name": "euro",
+ "symbol": "€"
+ },
+ "FKP": {
+ "name": "Falkland-pund",
+ "symbol": "FKP"
+ },
+ "FJD": {
+ "name": "fijiansk dollar",
+ "symbol": "FJD"
+ },
+ "PHP": {
+ "name": "filippinsk peso",
+ "symbol": "PHP"
+ },
+ "GMD": {
+ "name": "gambisk dalasi",
+ "symbol": "GMD"
+ },
+ "GEL": {
+ "name": "georgisk lari",
+ "symbol": "GEL"
+ },
+ "GHS": {
+ "name": "ghanesisk cedi",
+ "symbol": "GHS"
+ },
+ "GIP": {
+ "name": "gibraltarsk pund",
+ "symbol": "GIP"
+ },
+ "GTQ": {
+ "name": "guatemalansk quetzal",
+ "symbol": "GTQ"
+ },
+ "GNF": {
+ "name": "guineansk franc",
+ "symbol": "GNF"
+ },
+ "GYD": {
+ "name": "guyansk dollar",
+ "symbol": "GYD"
+ },
+ "HTG": {
+ "name": "haitisk gourde",
+ "symbol": "HTG"
+ },
+ "HNL": {
+ "name": "honduransk lempira",
+ "symbol": "HNL"
+ },
+ "HKD": {
+ "name": "Hongkong-dollar",
+ "symbol": "HK$"
+ },
+ "INR": {
+ "name": "indisk rupi",
+ "symbol": "₹"
+ },
+ "IDR": {
+ "name": "indonesisk rupi",
+ "symbol": "IDR"
+ },
+ "IQD": {
+ "name": "iraksk dinar",
+ "symbol": "IQD"
+ },
+ "IRR": {
+ "name": "iransk rial",
+ "symbol": "IRR"
+ },
+ "ISK": {
+ "name": "islandsk krone",
+ "symbol": "ISK"
+ },
+ "ILS": {
+ "name": "israelsk ny shekel",
+ "symbol": "₪"
+ },
+ "JMD": {
+ "name": "jamaikansk dollar",
+ "symbol": "JMD"
+ },
+ "JPY": {
+ "name": "japansk yen",
+ "symbol": "JPÂ¥"
+ },
+ "YER": {
+ "name": "jemenittisk rial",
+ "symbol": "YER"
+ },
+ "JOD": {
+ "name": "jordansk dinar",
+ "symbol": "JOD"
+ },
+ "KHR": {
+ "name": "kambodsjansk riel",
+ "symbol": "KHR"
+ },
+ "CAD": {
+ "name": "kanadisk dollar",
+ "symbol": "CA$"
+ },
+ "CVE": {
+ "name": "kappverdisk escudo",
+ "symbol": "CVE"
+ },
+ "KZT": {
+ "name": "kasakhstansk tenge",
+ "symbol": "KZT"
+ },
+ "KES": {
+ "name": "kenyansk shilling",
+ "symbol": "KES"
+ },
+ "CNY": {
+ "name": "kinesisk yuan renminbi",
+ "symbol": "CNÂ¥"
+ },
+ "KGS": {
+ "name": "kirgisisk som",
+ "symbol": "KGS"
+ },
+ "KMF": {
+ "name": "komorisk franc",
+ "symbol": "KMF"
+ },
+ "CDF": {
+ "name": "kongolesisk franc",
+ "symbol": "CDF"
+ },
+ "HRK": {
+ "name": "kroatisk kuna",
+ "symbol": "HRK"
+ },
+ "CUP": {
+ "name": "kubansk peso",
+ "symbol": "CUP"
+ },
+ "KWD": {
+ "name": "kuwaitisk dinar",
+ "symbol": "KWD"
+ },
+ "BYR": {
+ "name": "kviterussisk rubel",
+ "symbol": "BYR"
+ },
+ "LAK": {
+ "name": "laotisk kip",
+ "symbol": "LAK"
+ },
+ "LSL": {
+ "name": "lesothisk loti",
+ "symbol": "LSL"
+ },
+ "LBP": {
+ "name": "libanesisk pund",
+ "symbol": "LBP"
+ },
+ "LRD": {
+ "name": "liberisk dollar",
+ "symbol": "LRD"
+ },
+ "LYD": {
+ "name": "libysk dinar",
+ "symbol": "LYD"
+ },
+ "LTL": {
+ "name": "litauisk lita",
+ "symbol": "LTL"
+ },
+ "MGA": {
+ "name": "madagassisk ariary",
+ "symbol": "MGA"
+ },
+ "MOP": {
+ "name": "makaosk pataca",
+ "symbol": "MOP"
+ },
+ "MKD": {
+ "name": "makedonsk denar",
+ "symbol": "MKD"
+ },
+ "MWK": {
+ "name": "malawisk kwacha",
+ "symbol": "MWK"
+ },
+ "MYR": {
+ "name": "malaysisk ringgit",
+ "symbol": "MYR"
+ },
+ "MVR": {
+ "name": "maldivisk rufiyaa",
+ "symbol": "MVR"
+ },
+ "MAD": {
+ "name": "marokkansk dirham",
+ "symbol": "MAD"
+ },
+ "MRO": {
+ "name": "mauritansk ouguiya",
+ "symbol": "MRO"
+ },
+ "MUR": {
+ "name": "mauritansk rupi",
+ "symbol": "MUR"
+ },
+ "MXN": {
+ "name": "meksikansk peso",
+ "symbol": "MX$"
+ },
+ "MDL": {
+ "name": "moldovsk leu",
+ "symbol": "MDL"
+ },
+ "MNT": {
+ "name": "mongolsk tugrik",
+ "symbol": "MNT"
+ },
+ "MZN": {
+ "name": "mosambikisk metical",
+ "symbol": "MZN"
+ },
+ "MMK": {
+ "name": "myanmarsk kyat",
+ "symbol": "MMK"
+ },
+ "NAD": {
+ "name": "namibisk dollar",
+ "symbol": "NAD"
+ },
+ "ANG": {
+ "name": "nederlansk antillegylden",
+ "symbol": "ANG"
+ },
+ "NPR": {
+ "name": "nepalsk rupi",
+ "symbol": "NPR"
+ },
+ "NZD": {
+ "name": "new zealandsk dollar",
+ "symbol": "NZ$"
+ },
+ "NIO": {
+ "name": "nicaraguansk cordoba oro",
+ "symbol": "NIO"
+ },
+ "NGN": {
+ "name": "nigeriansk naira",
+ "symbol": "NGN"
+ },
+ "KPW": {
+ "name": "nordkoreansk won",
+ "symbol": "KPW"
+ },
+ "NOK": {
+ "name": "norsk krone",
+ "symbol": "kr"
+ },
+ "OMR": {
+ "name": "omansk rial",
+ "symbol": "OMR"
+ },
+ "PKR": {
+ "name": "pakistansk rupi",
+ "symbol": "PKR"
+ },
+ "PAB": {
+ "name": "panamansk balboa",
+ "symbol": "PAB"
+ },
+ "PGK": {
+ "name": "papuansk kina",
+ "symbol": "PGK"
+ },
+ "PYG": {
+ "name": "paraguayansk guarani",
+ "symbol": "PYG"
+ },
+ "PEN": {
+ "name": "peruansk nuevo sol",
+ "symbol": "PEN"
+ },
+ "PLN": {
+ "name": "polsk zloty",
+ "symbol": "PLN"
+ },
+ "QAR": {
+ "name": "qatarsk rial",
+ "symbol": "QAR"
+ },
+ "RON": {
+ "name": "rumensk leu",
+ "symbol": "RON"
+ },
+ "RUB": {
+ "name": "russisk rubel",
+ "symbol": "RUB"
+ },
+ "RWF": {
+ "name": "rwandisk franc",
+ "symbol": "RWF"
+ },
+ "SBD": {
+ "name": "salomonsk dollar",
+ "symbol": "SBD"
+ },
+ "SVC": {
+ "name": "salvadoransk colon",
+ "symbol": "SVC"
+ },
+ "SHP": {
+ "name": "sankthelensk pund",
+ "symbol": "SHP"
+ },
+ "STD": {
+ "name": "Sao Tome og Principe-dobra",
+ "symbol": "STD"
+ },
+ "SAR": {
+ "name": "saudiarabisk rial",
+ "symbol": "SAR"
+ },
+ "RSD": {
+ "name": "serbisk dinar",
+ "symbol": "RSD"
+ },
+ "SCR": {
+ "name": "seychellisk rupi",
+ "symbol": "SCR"
+ },
+ "SLL": {
+ "name": "sierraleonsk leone",
+ "symbol": "SLL"
+ },
+ "SGD": {
+ "name": "singaporsk dollar",
+ "symbol": "SGD"
+ },
+ "SOS": {
+ "name": "somalisk shilling",
+ "symbol": "SOS"
+ },
+ "LKR": {
+ "name": "srilankisk rupi",
+ "symbol": "LKR"
+ },
+ "SSP": {
+ "name": "SSP",
+ "symbol": "SSP"
+ },
+ "SDG": {
+ "name": "sudansk pund",
+ "symbol": "SDG"
+ },
+ "SRD": {
+ "name": "surinamsk dollar",
+ "symbol": "SRD"
+ },
+ "CHF": {
+ "name": "sveitsisk franc",
+ "symbol": "CHF"
+ },
+ "SEK": {
+ "name": "svensk krone",
+ "symbol": "SEK"
+ },
+ "SZL": {
+ "name": "swazilandsk lilangeni",
+ "symbol": "SZL"
+ },
+ "SYP": {
+ "name": "syrisk pund",
+ "symbol": "SYP"
+ },
+ "ZAR": {
+ "name": "sørafrikansk rand",
+ "symbol": "ZAR"
+ },
+ "KRW": {
+ "name": "sørkoreansk won",
+ "symbol": "â‚©"
+ },
+ "TJS": {
+ "name": "tadsjikisk somoni",
+ "symbol": "TJS"
+ },
+ "TWD": {
+ "name": "taiwansk ny dollar",
+ "symbol": "NT$"
+ },
+ "TZS": {
+ "name": "tanzaniansk shilling",
+ "symbol": "TZS"
+ },
+ "THB": {
+ "name": "thailandsk baht",
+ "symbol": "THB"
+ },
+ "TMT": {
+ "name": "TMT",
+ "symbol": "TMT"
+ },
+ "TOP": {
+ "name": "tongansk paʻanga",
+ "symbol": "TOP"
+ },
+ "TTD": {
+ "name": "trinidadisk dollar",
+ "symbol": "TTD"
+ },
+ "CZK": {
+ "name": "tsjekkisk koruna",
+ "symbol": "CZK"
+ },
+ "TND": {
+ "name": "tunisisk dinar",
+ "symbol": "TND"
+ },
+ "TRY": {
+ "name": "tyrkisk lire",
+ "symbol": "TRY"
+ },
+ "AED": {
+ "name": "UAE dirham",
+ "symbol": "AED"
+ },
+ "UGX": {
+ "name": "ugandisk shilling",
+ "symbol": "UGX"
+ },
+ "UAH": {
+ "name": "ukrainsk hryvnia",
+ "symbol": "UAH"
+ },
+ "HUF": {
+ "name": "ungarsk forint",
+ "symbol": "HUF"
+ },
+ "UYU": {
+ "name": "uruguayansk peso",
+ "symbol": "UYU"
+ },
+ "UZS": {
+ "name": "usbekisk sum",
+ "symbol": "UZS"
+ },
+ "VUV": {
+ "name": "vanuatuisk vatu",
+ "symbol": "VUV"
+ },
+ "VEF": {
+ "name": "venezuelansk bolivar",
+ "symbol": "VEF"
+ },
+ "WST": {
+ "name": "vestsamoisk tala",
+ "symbol": "WST"
+ },
+ "VND": {
+ "name": "vietnamesisk dong",
+ "symbol": "â‚«"
+ },
+ "ZMW": {
+ "name": "zambisk kwacha",
+ "symbol": "ZMW"
+ },
+ "ZWL": {
+ "name": "ZWL",
+ "symbol": "ZWL"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/currency/nus.json b/library/intl/resources/currency/nus.json
new file mode 100644
index 000000000..d7e43ee93
--- /dev/null
+++ b/library/intl/resources/currency/nus.json
@@ -0,0 +1,634 @@
+{
+ "AED": {
+ "name": "AED",
+ "symbol": "AED"
+ },
+ "AFN": {
+ "name": "AFN",
+ "symbol": "AFN"
+ },
+ "ALL": {
+ "name": "ALL",
+ "symbol": "ALL"
+ },
+ "AMD": {
+ "name": "AMD",
+ "symbol": "AMD"
+ },
+ "ANG": {
+ "name": "ANG",
+ "symbol": "ANG"
+ },
+ "AOA": {
+ "name": "AOA",
+ "symbol": "AOA"
+ },
+ "ARS": {
+ "name": "ARS",
+ "symbol": "ARS"
+ },
+ "AUD": {
+ "name": "AUD",
+ "symbol": "A$"
+ },
+ "AWG": {
+ "name": "AWG",
+ "symbol": "AWG"
+ },
+ "AZN": {
+ "name": "AZN",
+ "symbol": "AZN"
+ },
+ "BAM": {
+ "name": "BAM",
+ "symbol": "BAM"
+ },
+ "BBD": {
+ "name": "BBD",
+ "symbol": "BBD"
+ },
+ "BDT": {
+ "name": "BDT",
+ "symbol": "BDT"
+ },
+ "BGN": {
+ "name": "BGN",
+ "symbol": "BGN"
+ },
+ "BHD": {
+ "name": "BHD",
+ "symbol": "BHD"
+ },
+ "BIF": {
+ "name": "BIF",
+ "symbol": "BIF"
+ },
+ "BMD": {
+ "name": "BMD",
+ "symbol": "BMD"
+ },
+ "BND": {
+ "name": "BND",
+ "symbol": "BND"
+ },
+ "BOB": {
+ "name": "BOB",
+ "symbol": "BOB"
+ },
+ "BRL": {
+ "name": "BRL",
+ "symbol": "R$"
+ },
+ "BSD": {
+ "name": "BSD",
+ "symbol": "BSD"
+ },
+ "BTN": {
+ "name": "BTN",
+ "symbol": "BTN"
+ },
+ "BWP": {
+ "name": "BWP",
+ "symbol": "BWP"
+ },
+ "BYR": {
+ "name": "BYR",
+ "symbol": "BYR"
+ },
+ "BZD": {
+ "name": "BZD",
+ "symbol": "BZD"
+ },
+ "CAD": {
+ "name": "CAD",
+ "symbol": "CA$"
+ },
+ "CDF": {
+ "name": "CDF",
+ "symbol": "CDF"
+ },
+ "CHF": {
+ "name": "CHF",
+ "symbol": "CHF"
+ },
+ "CLP": {
+ "name": "CLP",
+ "symbol": "CLP"
+ },
+ "CNY": {
+ "name": "CNY",
+ "symbol": "CNÂ¥"
+ },
+ "COP": {
+ "name": "COP",
+ "symbol": "COP"
+ },
+ "CRC": {
+ "name": "CRC",
+ "symbol": "CRC"
+ },
+ "CUC": {
+ "name": "CUC",
+ "symbol": "CUC"
+ },
+ "CUP": {
+ "name": "CUP",
+ "symbol": "CUP"
+ },
+ "CVE": {
+ "name": "CVE",
+ "symbol": "CVE"
+ },
+ "CZK": {
+ "name": "CZK",
+ "symbol": "CZK"
+ },
+ "DJF": {
+ "name": "DJF",
+ "symbol": "DJF"
+ },
+ "DKK": {
+ "name": "DKK",
+ "symbol": "DKK"
+ },
+ "DOP": {
+ "name": "DOP",
+ "symbol": "DOP"
+ },
+ "DZD": {
+ "name": "DZD",
+ "symbol": "DZD"
+ },
+ "EGP": {
+ "name": "EGP",
+ "symbol": "EGP"
+ },
+ "ERN": {
+ "name": "ERN",
+ "symbol": "ERN"
+ },
+ "ETB": {
+ "name": "ETB",
+ "symbol": "ETB"
+ },
+ "EUR": {
+ "name": "EUR",
+ "symbol": "€"
+ },
+ "FJD": {
+ "name": "FJD",
+ "symbol": "FJD"
+ },
+ "FKP": {
+ "name": "FKP",
+ "symbol": "FKP"
+ },
+ "GBP": {
+ "name": "GBP",
+ "symbol": "£"
+ },
+ "GEL": {
+ "name": "GEL",
+ "symbol": "GEL"
+ },
+ "GHS": {
+ "name": "GHS",
+ "symbol": "GHS"
+ },
+ "GIP": {
+ "name": "GIP",
+ "symbol": "GIP"
+ },
+ "GMD": {
+ "name": "GMD",
+ "symbol": "GMD"
+ },
+ "GNF": {
+ "name": "GNF",
+ "symbol": "GNF"
+ },
+ "GTQ": {
+ "name": "GTQ",
+ "symbol": "GTQ"
+ },
+ "GYD": {
+ "name": "GYD",
+ "symbol": "GYD"
+ },
+ "HKD": {
+ "name": "HKD",
+ "symbol": "HK$"
+ },
+ "HNL": {
+ "name": "HNL",
+ "symbol": "HNL"
+ },
+ "HRK": {
+ "name": "HRK",
+ "symbol": "HRK"
+ },
+ "HTG": {
+ "name": "HTG",
+ "symbol": "HTG"
+ },
+ "HUF": {
+ "name": "HUF",
+ "symbol": "HUF"
+ },
+ "IDR": {
+ "name": "IDR",
+ "symbol": "IDR"
+ },
+ "ILS": {
+ "name": "ILS",
+ "symbol": "₪"
+ },
+ "INR": {
+ "name": "INR",
+ "symbol": "₹"
+ },
+ "IQD": {
+ "name": "IQD",
+ "symbol": "IQD"
+ },
+ "IRR": {
+ "name": "IRR",
+ "symbol": "IRR"
+ },
+ "ISK": {
+ "name": "ISK",
+ "symbol": "ISK"
+ },
+ "JMD": {
+ "name": "JMD",
+ "symbol": "JMD"
+ },
+ "JOD": {
+ "name": "JOD",
+ "symbol": "JOD"
+ },
+ "JPY": {
+ "name": "JPY",
+ "symbol": "JPÂ¥"
+ },
+ "KES": {
+ "name": "KES",
+ "symbol": "KES"
+ },
+ "KGS": {
+ "name": "KGS",
+ "symbol": "KGS"
+ },
+ "KHR": {
+ "name": "KHR",
+ "symbol": "KHR"
+ },
+ "KMF": {
+ "name": "KMF",
+ "symbol": "KMF"
+ },
+ "KPW": {
+ "name": "KPW",
+ "symbol": "KPW"
+ },
+ "KRW": {
+ "name": "KRW",
+ "symbol": "â‚©"
+ },
+ "KWD": {
+ "name": "KWD",
+ "symbol": "KWD"
+ },
+ "KYD": {
+ "name": "KYD",
+ "symbol": "KYD"
+ },
+ "KZT": {
+ "name": "KZT",
+ "symbol": "KZT"
+ },
+ "LAK": {
+ "name": "LAK",
+ "symbol": "LAK"
+ },
+ "LBP": {
+ "name": "LBP",
+ "symbol": "LBP"
+ },
+ "LKR": {
+ "name": "LKR",
+ "symbol": "LKR"
+ },
+ "LRD": {
+ "name": "LRD",
+ "symbol": "LRD"
+ },
+ "LSL": {
+ "name": "LSL",
+ "symbol": "LSL"
+ },
+ "LTL": {
+ "name": "LTL",
+ "symbol": "LTL"
+ },
+ "LYD": {
+ "name": "LYD",
+ "symbol": "LYD"
+ },
+ "MAD": {
+ "name": "MAD",
+ "symbol": "MAD"
+ },
+ "MDL": {
+ "name": "MDL",
+ "symbol": "MDL"
+ },
+ "MGA": {
+ "name": "MGA",
+ "symbol": "MGA"
+ },
+ "MKD": {
+ "name": "MKD",
+ "symbol": "MKD"
+ },
+ "MMK": {
+ "name": "MMK",
+ "symbol": "MMK"
+ },
+ "MNT": {
+ "name": "MNT",
+ "symbol": "MNT"
+ },
+ "MOP": {
+ "name": "MOP",
+ "symbol": "MOP"
+ },
+ "MRO": {
+ "name": "MRO",
+ "symbol": "MRO"
+ },
+ "MUR": {
+ "name": "MUR",
+ "symbol": "MUR"
+ },
+ "MVR": {
+ "name": "MVR",
+ "symbol": "MVR"
+ },
+ "MWK": {
+ "name": "MWK",
+ "symbol": "MWK"
+ },
+ "MXN": {
+ "name": "MXN",
+ "symbol": "MX$"
+ },
+ "MYR": {
+ "name": "MYR",
+ "symbol": "MYR"
+ },
+ "MZN": {
+ "name": "MZN",
+ "symbol": "MZN"
+ },
+ "NAD": {
+ "name": "NAD",
+ "symbol": "NAD"
+ },
+ "NGN": {
+ "name": "NGN",
+ "symbol": "NGN"
+ },
+ "NIO": {
+ "name": "NIO",
+ "symbol": "NIO"
+ },
+ "NOK": {
+ "name": "NOK",
+ "symbol": "NOK"
+ },
+ "NPR": {
+ "name": "NPR",
+ "symbol": "NPR"
+ },
+ "NZD": {
+ "name": "NZD",
+ "symbol": "NZ$"
+ },
+ "OMR": {
+ "name": "OMR",
+ "symbol": "OMR"
+ },
+ "PAB": {
+ "name": "PAB",
+ "symbol": "PAB"
+ },
+ "PEN": {
+ "name": "PEN",
+ "symbol": "PEN"
+ },
+ "PGK": {
+ "name": "PGK",
+ "symbol": "PGK"
+ },
+ "PHP": {
+ "name": "PHP",
+ "symbol": "PHP"
+ },
+ "PKR": {
+ "name": "PKR",
+ "symbol": "PKR"
+ },
+ "PLN": {
+ "name": "PLN",
+ "symbol": "PLN"
+ },
+ "PYG": {
+ "name": "PYG",
+ "symbol": "PYG"
+ },
+ "QAR": {
+ "name": "QAR",
+ "symbol": "QAR"
+ },
+ "RON": {
+ "name": "RON",
+ "symbol": "RON"
+ },
+ "RSD": {
+ "name": "RSD",
+ "symbol": "RSD"
+ },
+ "RUB": {
+ "name": "RUB",
+ "symbol": "RUB"
+ },
+ "RWF": {
+ "name": "RWF",
+ "symbol": "RWF"
+ },
+ "SAR": {
+ "name": "SAR",
+ "symbol": "SAR"
+ },
+ "SBD": {
+ "name": "SBD",
+ "symbol": "SBD"
+ },
+ "SCR": {
+ "name": "SCR",
+ "symbol": "SCR"
+ },
+ "SDG": {
+ "name": "SDG",
+ "symbol": "SDG"
+ },
+ "SEK": {
+ "name": "SEK",
+ "symbol": "SEK"
+ },
+ "SGD": {
+ "name": "SGD",
+ "symbol": "SGD"
+ },
+ "SHP": {
+ "name": "SHP",
+ "symbol": "SHP"
+ },
+ "SLL": {
+ "name": "SLL",
+ "symbol": "SLL"
+ },
+ "SOS": {
+ "name": "SOS",
+ "symbol": "SOS"
+ },
+ "SRD": {
+ "name": "SRD",
+ "symbol": "SRD"
+ },
+ "SSP": {
+ "name": "SSP",
+ "symbol": "SSP"
+ },
+ "STD": {
+ "name": "STD",
+ "symbol": "STD"
+ },
+ "SVC": {
+ "name": "SVC",
+ "symbol": "SVC"
+ },
+ "SYP": {
+ "name": "SYP",
+ "symbol": "SYP"
+ },
+ "SZL": {
+ "name": "SZL",
+ "symbol": "SZL"
+ },
+ "THB": {
+ "name": "THB",
+ "symbol": "THB"
+ },
+ "TJS": {
+ "name": "TJS",
+ "symbol": "TJS"
+ },
+ "TMT": {
+ "name": "TMT",
+ "symbol": "TMT"
+ },
+ "TND": {
+ "name": "TND",
+ "symbol": "TND"
+ },
+ "TOP": {
+ "name": "TOP",
+ "symbol": "TOP"
+ },
+ "TRY": {
+ "name": "TRY",
+ "symbol": "TRY"
+ },
+ "TTD": {
+ "name": "TTD",
+ "symbol": "TTD"
+ },
+ "TWD": {
+ "name": "TWD",
+ "symbol": "NT$"
+ },
+ "TZS": {
+ "name": "TZS",
+ "symbol": "TZS"
+ },
+ "UAH": {
+ "name": "UAH",
+ "symbol": "UAH"
+ },
+ "UGX": {
+ "name": "UGX",
+ "symbol": "UGX"
+ },
+ "USD": {
+ "name": "USD",
+ "symbol": "US$"
+ },
+ "UYU": {
+ "name": "UYU",
+ "symbol": "UYU"
+ },
+ "UZS": {
+ "name": "UZS",
+ "symbol": "UZS"
+ },
+ "VEF": {
+ "name": "VEF",
+ "symbol": "VEF"
+ },
+ "VND": {
+ "name": "VND",
+ "symbol": "â‚«"
+ },
+ "VUV": {
+ "name": "VUV",
+ "symbol": "VUV"
+ },
+ "WST": {
+ "name": "WST",
+ "symbol": "WST"
+ },
+ "XAF": {
+ "name": "XAF",
+ "symbol": "FCFA"
+ },
+ "XCD": {
+ "name": "XCD",
+ "symbol": "EC$"
+ },
+ "XOF": {
+ "name": "XOF",
+ "symbol": "CFA"
+ },
+ "XPF": {
+ "name": "XPF",
+ "symbol": "CFPF"
+ },
+ "YER": {
+ "name": "YER",
+ "symbol": "YER"
+ },
+ "ZAR": {
+ "name": "ZAR",
+ "symbol": "ZAR"
+ },
+ "ZMW": {
+ "name": "ZMW",
+ "symbol": "ZMW"
+ },
+ "ZWL": {
+ "name": "ZWL",
+ "symbol": "ZWL"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/currency/nyn.json b/library/intl/resources/currency/nyn.json
new file mode 100644
index 000000000..38f4d562b
--- /dev/null
+++ b/library/intl/resources/currency/nyn.json
@@ -0,0 +1,634 @@
+{
+ "AFN": {
+ "name": "AFN",
+ "symbol": "AFN"
+ },
+ "ALL": {
+ "name": "ALL",
+ "symbol": "ALL"
+ },
+ "AMD": {
+ "name": "AMD",
+ "symbol": "AMD"
+ },
+ "ANG": {
+ "name": "ANG",
+ "symbol": "ANG"
+ },
+ "MGA": {
+ "name": "Ariari ya Maragariita",
+ "symbol": "MGA"
+ },
+ "ARS": {
+ "name": "ARS",
+ "symbol": "ARS"
+ },
+ "AWG": {
+ "name": "AWG",
+ "symbol": "AWG"
+ },
+ "AZN": {
+ "name": "AZN",
+ "symbol": "AZN"
+ },
+ "BAM": {
+ "name": "BAM",
+ "symbol": "BAM"
+ },
+ "BBD": {
+ "name": "BBD",
+ "symbol": "BBD"
+ },
+ "BDT": {
+ "name": "BDT",
+ "symbol": "BDT"
+ },
+ "BGN": {
+ "name": "BGN",
+ "symbol": "BGN"
+ },
+ "ETB": {
+ "name": "Birr ya Ethiopiya",
+ "symbol": "ETB"
+ },
+ "BMD": {
+ "name": "BMD",
+ "symbol": "BMD"
+ },
+ "BND": {
+ "name": "BND",
+ "symbol": "BND"
+ },
+ "BOB": {
+ "name": "BOB",
+ "symbol": "BOB"
+ },
+ "BRL": {
+ "name": "BRL",
+ "symbol": "R$"
+ },
+ "BSD": {
+ "name": "BSD",
+ "symbol": "BSD"
+ },
+ "BTN": {
+ "name": "BTN",
+ "symbol": "BTN"
+ },
+ "BYR": {
+ "name": "BYR",
+ "symbol": "BYR"
+ },
+ "BZD": {
+ "name": "BZD",
+ "symbol": "BZD"
+ },
+ "CLP": {
+ "name": "CLP",
+ "symbol": "CLP"
+ },
+ "COP": {
+ "name": "COP",
+ "symbol": "COP"
+ },
+ "CRC": {
+ "name": "CRC",
+ "symbol": "CRC"
+ },
+ "CUC": {
+ "name": "CUC",
+ "symbol": "CUC"
+ },
+ "CUP": {
+ "name": "CUP",
+ "symbol": "CUP"
+ },
+ "CZK": {
+ "name": "CZK",
+ "symbol": "CZK"
+ },
+ "GMD": {
+ "name": "Dalasi ya Gambia",
+ "symbol": "GMD"
+ },
+ "DZD": {
+ "name": "Dinari ya Arigyeriya",
+ "symbol": "DZD"
+ },
+ "BHD": {
+ "name": "Dinari ya Bahareni",
+ "symbol": "BHD"
+ },
+ "LYD": {
+ "name": "Dinari ya Libya",
+ "symbol": "LYD"
+ },
+ "SDG": {
+ "name": "Dinari ya Sudani",
+ "symbol": "SDG"
+ },
+ "TND": {
+ "name": "Dinari ya Tunisia",
+ "symbol": "TND"
+ },
+ "AED": {
+ "name": "Dirham za Buharabu",
+ "symbol": "AED"
+ },
+ "MAD": {
+ "name": "Dirram ya Moroko",
+ "symbol": "MAD"
+ },
+ "DKK": {
+ "name": "DKK",
+ "symbol": "DKK"
+ },
+ "STD": {
+ "name": "Dobra ya Sao Tome na Purinsipo",
+ "symbol": "STD"
+ },
+ "USD": {
+ "name": "Doora ya America",
+ "symbol": "US$"
+ },
+ "AUD": {
+ "name": "Doora ya Austureeriya",
+ "symbol": "A$"
+ },
+ "CAD": {
+ "name": "Doora ya Kanada",
+ "symbol": "CA$"
+ },
+ "LRD": {
+ "name": "Doora ya Liberia",
+ "symbol": "LRD"
+ },
+ "NAD": {
+ "name": "Doora ya Namibiya",
+ "symbol": "NAD"
+ },
+ "DOP": {
+ "name": "DOP",
+ "symbol": "DOP"
+ },
+ "SOS": {
+ "name": "Eshiringi ya Somalia",
+ "symbol": "SOS"
+ },
+ "TZS": {
+ "name": "Eshiringi ya Tanzania",
+ "symbol": "TZS"
+ },
+ "UGX": {
+ "name": "Eshiringi ya Uganda",
+ "symbol": "USh"
+ },
+ "CVE": {
+ "name": "Eskudo ya Kepuvede",
+ "symbol": "CVE"
+ },
+ "BIF": {
+ "name": "Faranga ya Burundi",
+ "symbol": "BIF"
+ },
+ "XOF": {
+ "name": "Faranga ya CFA BCEAO",
+ "symbol": "CFA"
+ },
+ "XAF": {
+ "name": "Faranga ya CFA BEAC",
+ "symbol": "FCFA"
+ },
+ "DJF": {
+ "name": "Faranga ya Gyibuti",
+ "symbol": "DJF"
+ },
+ "KMF": {
+ "name": "Faranga ya Komoro",
+ "symbol": "KMF"
+ },
+ "CDF": {
+ "name": "Faranga ya Kongo",
+ "symbol": "CDF"
+ },
+ "RWF": {
+ "name": "Faranga ya Rwanda",
+ "symbol": "RWF"
+ },
+ "CHF": {
+ "name": "Faranga ya Swisi",
+ "symbol": "CHF"
+ },
+ "FJD": {
+ "name": "FJD",
+ "symbol": "FJD"
+ },
+ "FKP": {
+ "name": "FKP",
+ "symbol": "FKP"
+ },
+ "GEL": {
+ "name": "GEL",
+ "symbol": "GEL"
+ },
+ "GHS": {
+ "name": "GHS",
+ "symbol": "GHS"
+ },
+ "GIP": {
+ "name": "GIP",
+ "symbol": "GIP"
+ },
+ "GNF": {
+ "name": "GNF",
+ "symbol": "GNF"
+ },
+ "GTQ": {
+ "name": "GTQ",
+ "symbol": "GTQ"
+ },
+ "GYD": {
+ "name": "GYD",
+ "symbol": "GYD"
+ },
+ "HKD": {
+ "name": "HKD",
+ "symbol": "HK$"
+ },
+ "HNL": {
+ "name": "HNL",
+ "symbol": "HNL"
+ },
+ "HRK": {
+ "name": "HRK",
+ "symbol": "HRK"
+ },
+ "HTG": {
+ "name": "HTG",
+ "symbol": "HTG"
+ },
+ "HUF": {
+ "name": "HUF",
+ "symbol": "HUF"
+ },
+ "IDR": {
+ "name": "IDR",
+ "symbol": "IDR"
+ },
+ "ILS": {
+ "name": "ILS",
+ "symbol": "₪"
+ },
+ "IQD": {
+ "name": "IQD",
+ "symbol": "IQD"
+ },
+ "IRR": {
+ "name": "IRR",
+ "symbol": "IRR"
+ },
+ "ISK": {
+ "name": "ISK",
+ "symbol": "ISK"
+ },
+ "JMD": {
+ "name": "JMD",
+ "symbol": "JMD"
+ },
+ "JOD": {
+ "name": "JOD",
+ "symbol": "JOD"
+ },
+ "KGS": {
+ "name": "KGS",
+ "symbol": "KGS"
+ },
+ "KHR": {
+ "name": "KHR",
+ "symbol": "KHR"
+ },
+ "KPW": {
+ "name": "KPW",
+ "symbol": "KPW"
+ },
+ "KRW": {
+ "name": "KRW",
+ "symbol": "â‚©"
+ },
+ "MWK": {
+ "name": "Kwaca ya Malawi",
+ "symbol": "MWK"
+ },
+ "ZMW": {
+ "name": "Kwacha ya Zambia",
+ "symbol": "ZMW"
+ },
+ "AOA": {
+ "name": "Kwanza ya Angora",
+ "symbol": "AOA"
+ },
+ "KWD": {
+ "name": "KWD",
+ "symbol": "KWD"
+ },
+ "KYD": {
+ "name": "KYD",
+ "symbol": "KYD"
+ },
+ "KZT": {
+ "name": "KZT",
+ "symbol": "KZT"
+ },
+ "LAK": {
+ "name": "LAK",
+ "symbol": "LAK"
+ },
+ "LBP": {
+ "name": "LBP",
+ "symbol": "LBP"
+ },
+ "SLL": {
+ "name": "Leone",
+ "symbol": "SLL"
+ },
+ "SZL": {
+ "name": "Lilangeni",
+ "symbol": "SZL"
+ },
+ "LKR": {
+ "name": "LKR",
+ "symbol": "LKR"
+ },
+ "LSL": {
+ "name": "Loti ya Lesoto",
+ "symbol": "LSL"
+ },
+ "LTL": {
+ "name": "LTL",
+ "symbol": "LTL"
+ },
+ "MDL": {
+ "name": "MDL",
+ "symbol": "MDL"
+ },
+ "MKD": {
+ "name": "MKD",
+ "symbol": "MKD"
+ },
+ "MMK": {
+ "name": "MMK",
+ "symbol": "MMK"
+ },
+ "MNT": {
+ "name": "MNT",
+ "symbol": "MNT"
+ },
+ "MOP": {
+ "name": "MOP",
+ "symbol": "MOP"
+ },
+ "MVR": {
+ "name": "MVR",
+ "symbol": "MVR"
+ },
+ "MXN": {
+ "name": "MXN",
+ "symbol": "MX$"
+ },
+ "MYR": {
+ "name": "MYR",
+ "symbol": "MYR"
+ },
+ "MZN": {
+ "name": "MZN",
+ "symbol": "MZN"
+ },
+ "NGN": {
+ "name": "Naira ya Naigyeriya",
+ "symbol": "NGN"
+ },
+ "ERN": {
+ "name": "Nakfa ya Eritireya",
+ "symbol": "ERN"
+ },
+ "NIO": {
+ "name": "NIO",
+ "symbol": "NIO"
+ },
+ "NOK": {
+ "name": "NOK",
+ "symbol": "NOK"
+ },
+ "NPR": {
+ "name": "NPR",
+ "symbol": "NPR"
+ },
+ "NZD": {
+ "name": "NZD",
+ "symbol": "NZ$"
+ },
+ "OMR": {
+ "name": "OMR",
+ "symbol": "OMR"
+ },
+ "MRO": {
+ "name": "Ougwiya ya Mouriteeniya",
+ "symbol": "MRO"
+ },
+ "PAB": {
+ "name": "PAB",
+ "symbol": "PAB"
+ },
+ "GBP": {
+ "name": "Paundi ya Bungyereza",
+ "symbol": "£"
+ },
+ "EGP": {
+ "name": "Paundi ya Misiri",
+ "symbol": "EGP"
+ },
+ "SHP": {
+ "name": "Paundi ya Senti Herena",
+ "symbol": "SHP"
+ },
+ "PEN": {
+ "name": "PEN",
+ "symbol": "PEN"
+ },
+ "PGK": {
+ "name": "PGK",
+ "symbol": "PGK"
+ },
+ "PHP": {
+ "name": "PHP",
+ "symbol": "PHP"
+ },
+ "PKR": {
+ "name": "PKR",
+ "symbol": "PKR"
+ },
+ "PLN": {
+ "name": "PLN",
+ "symbol": "PLN"
+ },
+ "BWP": {
+ "name": "Pura ya Botswana",
+ "symbol": "BWP"
+ },
+ "PYG": {
+ "name": "PYG",
+ "symbol": "PYG"
+ },
+ "QAR": {
+ "name": "QAR",
+ "symbol": "QAR"
+ },
+ "ZAR": {
+ "name": "Randi ya Sausi Afirika",
+ "symbol": "ZAR"
+ },
+ "SAR": {
+ "name": "Riya ya Saudi",
+ "symbol": "SAR"
+ },
+ "RON": {
+ "name": "RON",
+ "symbol": "RON"
+ },
+ "RSD": {
+ "name": "RSD",
+ "symbol": "RSD"
+ },
+ "RUB": {
+ "name": "RUB",
+ "symbol": "RUB"
+ },
+ "MUR": {
+ "name": "Rupiiha ya Mauritiasi",
+ "symbol": "MUR"
+ },
+ "SCR": {
+ "name": "Rupiiha ya Sherisheri",
+ "symbol": "SCR"
+ },
+ "INR": {
+ "name": "Rupiya ya India",
+ "symbol": "₹"
+ },
+ "SBD": {
+ "name": "SBD",
+ "symbol": "SBD"
+ },
+ "SEK": {
+ "name": "SEK",
+ "symbol": "SEK"
+ },
+ "SGD": {
+ "name": "SGD",
+ "symbol": "SGD"
+ },
+ "KES": {
+ "name": "Shiringi ya Kenya",
+ "symbol": "KES"
+ },
+ "SRD": {
+ "name": "SRD",
+ "symbol": "SRD"
+ },
+ "SSP": {
+ "name": "SSP",
+ "symbol": "SSP"
+ },
+ "SVC": {
+ "name": "SVC",
+ "symbol": "SVC"
+ },
+ "SYP": {
+ "name": "SYP",
+ "symbol": "SYP"
+ },
+ "THB": {
+ "name": "THB",
+ "symbol": "THB"
+ },
+ "TJS": {
+ "name": "TJS",
+ "symbol": "TJS"
+ },
+ "TMT": {
+ "name": "TMT",
+ "symbol": "TMT"
+ },
+ "TOP": {
+ "name": "TOP",
+ "symbol": "TOP"
+ },
+ "TRY": {
+ "name": "TRY",
+ "symbol": "TRY"
+ },
+ "TTD": {
+ "name": "TTD",
+ "symbol": "TTD"
+ },
+ "TWD": {
+ "name": "TWD",
+ "symbol": "NT$"
+ },
+ "UAH": {
+ "name": "UAH",
+ "symbol": "UAH"
+ },
+ "UYU": {
+ "name": "UYU",
+ "symbol": "UYU"
+ },
+ "UZS": {
+ "name": "UZS",
+ "symbol": "UZS"
+ },
+ "VEF": {
+ "name": "VEF",
+ "symbol": "VEF"
+ },
+ "VND": {
+ "name": "VND",
+ "symbol": "â‚«"
+ },
+ "VUV": {
+ "name": "VUV",
+ "symbol": "VUV"
+ },
+ "WST": {
+ "name": "WST",
+ "symbol": "WST"
+ },
+ "XCD": {
+ "name": "XCD",
+ "symbol": "EC$"
+ },
+ "XPF": {
+ "name": "XPF",
+ "symbol": "CFPF"
+ },
+ "JPY": {
+ "name": "Yeni ya Japaani",
+ "symbol": "JPÂ¥"
+ },
+ "YER": {
+ "name": "YER",
+ "symbol": "YER"
+ },
+ "CNY": {
+ "name": "Yuan Renminbi ya China",
+ "symbol": "CNÂ¥"
+ },
+ "EUR": {
+ "name": "Yuro",
+ "symbol": "€"
+ },
+ "ZWL": {
+ "name": "ZWL",
+ "symbol": "ZWL"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/currency/or.json b/library/intl/resources/currency/or.json
new file mode 100644
index 000000000..3366914d6
--- /dev/null
+++ b/library/intl/resources/currency/or.json
@@ -0,0 +1,634 @@
+{
+ "AED": {
+ "name": "AED",
+ "symbol": "AED"
+ },
+ "AFN": {
+ "name": "AFN",
+ "symbol": "AFN"
+ },
+ "ALL": {
+ "name": "ALL",
+ "symbol": "ALL"
+ },
+ "AMD": {
+ "name": "AMD",
+ "symbol": "AMD"
+ },
+ "ANG": {
+ "name": "ANG",
+ "symbol": "ANG"
+ },
+ "AOA": {
+ "name": "AOA",
+ "symbol": "AOA"
+ },
+ "ARS": {
+ "name": "ARS",
+ "symbol": "ARS"
+ },
+ "AUD": {
+ "name": "AUD",
+ "symbol": "A$"
+ },
+ "AWG": {
+ "name": "AWG",
+ "symbol": "AWG"
+ },
+ "AZN": {
+ "name": "AZN",
+ "symbol": "AZN"
+ },
+ "BAM": {
+ "name": "BAM",
+ "symbol": "BAM"
+ },
+ "BBD": {
+ "name": "BBD",
+ "symbol": "BBD"
+ },
+ "BDT": {
+ "name": "BDT",
+ "symbol": "BDT"
+ },
+ "BGN": {
+ "name": "BGN",
+ "symbol": "BGN"
+ },
+ "BHD": {
+ "name": "BHD",
+ "symbol": "BHD"
+ },
+ "BIF": {
+ "name": "BIF",
+ "symbol": "BIF"
+ },
+ "BMD": {
+ "name": "BMD",
+ "symbol": "BMD"
+ },
+ "BND": {
+ "name": "BND",
+ "symbol": "BND"
+ },
+ "BOB": {
+ "name": "BOB",
+ "symbol": "BOB"
+ },
+ "BRL": {
+ "name": "BRL",
+ "symbol": "R$"
+ },
+ "BSD": {
+ "name": "BSD",
+ "symbol": "BSD"
+ },
+ "BTN": {
+ "name": "BTN",
+ "symbol": "BTN"
+ },
+ "BWP": {
+ "name": "BWP",
+ "symbol": "BWP"
+ },
+ "BYR": {
+ "name": "BYR",
+ "symbol": "BYR"
+ },
+ "BZD": {
+ "name": "BZD",
+ "symbol": "BZD"
+ },
+ "CAD": {
+ "name": "CAD",
+ "symbol": "CA$"
+ },
+ "CDF": {
+ "name": "CDF",
+ "symbol": "CDF"
+ },
+ "CHF": {
+ "name": "CHF",
+ "symbol": "CHF"
+ },
+ "CLP": {
+ "name": "CLP",
+ "symbol": "CLP"
+ },
+ "CNY": {
+ "name": "CNY",
+ "symbol": "CNÂ¥"
+ },
+ "COP": {
+ "name": "COP",
+ "symbol": "COP"
+ },
+ "CRC": {
+ "name": "CRC",
+ "symbol": "CRC"
+ },
+ "CUC": {
+ "name": "CUC",
+ "symbol": "CUC"
+ },
+ "CUP": {
+ "name": "CUP",
+ "symbol": "CUP"
+ },
+ "CVE": {
+ "name": "CVE",
+ "symbol": "CVE"
+ },
+ "CZK": {
+ "name": "CZK",
+ "symbol": "CZK"
+ },
+ "DJF": {
+ "name": "DJF",
+ "symbol": "DJF"
+ },
+ "DKK": {
+ "name": "DKK",
+ "symbol": "DKK"
+ },
+ "DOP": {
+ "name": "DOP",
+ "symbol": "DOP"
+ },
+ "DZD": {
+ "name": "DZD",
+ "symbol": "DZD"
+ },
+ "EGP": {
+ "name": "EGP",
+ "symbol": "EGP"
+ },
+ "ERN": {
+ "name": "ERN",
+ "symbol": "ERN"
+ },
+ "ETB": {
+ "name": "ETB",
+ "symbol": "ETB"
+ },
+ "EUR": {
+ "name": "EUR",
+ "symbol": "€"
+ },
+ "FJD": {
+ "name": "FJD",
+ "symbol": "FJD"
+ },
+ "FKP": {
+ "name": "FKP",
+ "symbol": "FKP"
+ },
+ "GBP": {
+ "name": "GBP",
+ "symbol": "£"
+ },
+ "GEL": {
+ "name": "GEL",
+ "symbol": "GEL"
+ },
+ "GHS": {
+ "name": "GHS",
+ "symbol": "GHS"
+ },
+ "GIP": {
+ "name": "GIP",
+ "symbol": "GIP"
+ },
+ "GMD": {
+ "name": "GMD",
+ "symbol": "GMD"
+ },
+ "GNF": {
+ "name": "GNF",
+ "symbol": "GNF"
+ },
+ "GTQ": {
+ "name": "GTQ",
+ "symbol": "GTQ"
+ },
+ "GYD": {
+ "name": "GYD",
+ "symbol": "GYD"
+ },
+ "HKD": {
+ "name": "HKD",
+ "symbol": "HK$"
+ },
+ "HNL": {
+ "name": "HNL",
+ "symbol": "HNL"
+ },
+ "HRK": {
+ "name": "HRK",
+ "symbol": "HRK"
+ },
+ "HTG": {
+ "name": "HTG",
+ "symbol": "HTG"
+ },
+ "HUF": {
+ "name": "HUF",
+ "symbol": "HUF"
+ },
+ "IDR": {
+ "name": "IDR",
+ "symbol": "IDR"
+ },
+ "ILS": {
+ "name": "ILS",
+ "symbol": "₪"
+ },
+ "IQD": {
+ "name": "IQD",
+ "symbol": "IQD"
+ },
+ "IRR": {
+ "name": "IRR",
+ "symbol": "IRR"
+ },
+ "ISK": {
+ "name": "ISK",
+ "symbol": "ISK"
+ },
+ "JMD": {
+ "name": "JMD",
+ "symbol": "JMD"
+ },
+ "JOD": {
+ "name": "JOD",
+ "symbol": "JOD"
+ },
+ "JPY": {
+ "name": "JPY",
+ "symbol": "JPÂ¥"
+ },
+ "KES": {
+ "name": "KES",
+ "symbol": "KES"
+ },
+ "KGS": {
+ "name": "KGS",
+ "symbol": "KGS"
+ },
+ "KHR": {
+ "name": "KHR",
+ "symbol": "KHR"
+ },
+ "KMF": {
+ "name": "KMF",
+ "symbol": "KMF"
+ },
+ "KPW": {
+ "name": "KPW",
+ "symbol": "KPW"
+ },
+ "KRW": {
+ "name": "KRW",
+ "symbol": "â‚©"
+ },
+ "KWD": {
+ "name": "KWD",
+ "symbol": "KWD"
+ },
+ "KYD": {
+ "name": "KYD",
+ "symbol": "KYD"
+ },
+ "KZT": {
+ "name": "KZT",
+ "symbol": "KZT"
+ },
+ "LAK": {
+ "name": "LAK",
+ "symbol": "LAK"
+ },
+ "LBP": {
+ "name": "LBP",
+ "symbol": "LBP"
+ },
+ "LKR": {
+ "name": "LKR",
+ "symbol": "LKR"
+ },
+ "LRD": {
+ "name": "LRD",
+ "symbol": "LRD"
+ },
+ "LSL": {
+ "name": "LSL",
+ "symbol": "LSL"
+ },
+ "LTL": {
+ "name": "LTL",
+ "symbol": "LTL"
+ },
+ "LYD": {
+ "name": "LYD",
+ "symbol": "LYD"
+ },
+ "MAD": {
+ "name": "MAD",
+ "symbol": "MAD"
+ },
+ "MDL": {
+ "name": "MDL",
+ "symbol": "MDL"
+ },
+ "MGA": {
+ "name": "MGA",
+ "symbol": "MGA"
+ },
+ "MKD": {
+ "name": "MKD",
+ "symbol": "MKD"
+ },
+ "MMK": {
+ "name": "MMK",
+ "symbol": "MMK"
+ },
+ "MNT": {
+ "name": "MNT",
+ "symbol": "MNT"
+ },
+ "MOP": {
+ "name": "MOP",
+ "symbol": "MOP"
+ },
+ "MRO": {
+ "name": "MRO",
+ "symbol": "MRO"
+ },
+ "MUR": {
+ "name": "MUR",
+ "symbol": "MUR"
+ },
+ "MVR": {
+ "name": "MVR",
+ "symbol": "MVR"
+ },
+ "MWK": {
+ "name": "MWK",
+ "symbol": "MWK"
+ },
+ "MXN": {
+ "name": "MXN",
+ "symbol": "MX$"
+ },
+ "MYR": {
+ "name": "MYR",
+ "symbol": "MYR"
+ },
+ "MZN": {
+ "name": "MZN",
+ "symbol": "MZN"
+ },
+ "NAD": {
+ "name": "NAD",
+ "symbol": "NAD"
+ },
+ "NGN": {
+ "name": "NGN",
+ "symbol": "NGN"
+ },
+ "NIO": {
+ "name": "NIO",
+ "symbol": "NIO"
+ },
+ "NOK": {
+ "name": "NOK",
+ "symbol": "NOK"
+ },
+ "NPR": {
+ "name": "NPR",
+ "symbol": "NPR"
+ },
+ "NZD": {
+ "name": "NZD",
+ "symbol": "NZ$"
+ },
+ "OMR": {
+ "name": "OMR",
+ "symbol": "OMR"
+ },
+ "PAB": {
+ "name": "PAB",
+ "symbol": "PAB"
+ },
+ "PEN": {
+ "name": "PEN",
+ "symbol": "PEN"
+ },
+ "PGK": {
+ "name": "PGK",
+ "symbol": "PGK"
+ },
+ "PHP": {
+ "name": "PHP",
+ "symbol": "PHP"
+ },
+ "PKR": {
+ "name": "PKR",
+ "symbol": "PKR"
+ },
+ "PLN": {
+ "name": "PLN",
+ "symbol": "PLN"
+ },
+ "PYG": {
+ "name": "PYG",
+ "symbol": "PYG"
+ },
+ "QAR": {
+ "name": "QAR",
+ "symbol": "QAR"
+ },
+ "RON": {
+ "name": "RON",
+ "symbol": "RON"
+ },
+ "RSD": {
+ "name": "RSD",
+ "symbol": "RSD"
+ },
+ "RUB": {
+ "name": "RUB",
+ "symbol": "RUB"
+ },
+ "RWF": {
+ "name": "RWF",
+ "symbol": "RWF"
+ },
+ "SAR": {
+ "name": "SAR",
+ "symbol": "SAR"
+ },
+ "SBD": {
+ "name": "SBD",
+ "symbol": "SBD"
+ },
+ "SCR": {
+ "name": "SCR",
+ "symbol": "SCR"
+ },
+ "SDG": {
+ "name": "SDG",
+ "symbol": "SDG"
+ },
+ "SEK": {
+ "name": "SEK",
+ "symbol": "SEK"
+ },
+ "SGD": {
+ "name": "SGD",
+ "symbol": "SGD"
+ },
+ "SHP": {
+ "name": "SHP",
+ "symbol": "SHP"
+ },
+ "SLL": {
+ "name": "SLL",
+ "symbol": "SLL"
+ },
+ "SOS": {
+ "name": "SOS",
+ "symbol": "SOS"
+ },
+ "SRD": {
+ "name": "SRD",
+ "symbol": "SRD"
+ },
+ "SSP": {
+ "name": "SSP",
+ "symbol": "SSP"
+ },
+ "STD": {
+ "name": "STD",
+ "symbol": "STD"
+ },
+ "SVC": {
+ "name": "SVC",
+ "symbol": "SVC"
+ },
+ "SYP": {
+ "name": "SYP",
+ "symbol": "SYP"
+ },
+ "SZL": {
+ "name": "SZL",
+ "symbol": "SZL"
+ },
+ "THB": {
+ "name": "THB",
+ "symbol": "THB"
+ },
+ "TJS": {
+ "name": "TJS",
+ "symbol": "TJS"
+ },
+ "TMT": {
+ "name": "TMT",
+ "symbol": "TMT"
+ },
+ "TND": {
+ "name": "TND",
+ "symbol": "TND"
+ },
+ "TOP": {
+ "name": "TOP",
+ "symbol": "TOP"
+ },
+ "TRY": {
+ "name": "TRY",
+ "symbol": "TRY"
+ },
+ "TTD": {
+ "name": "TTD",
+ "symbol": "TTD"
+ },
+ "TWD": {
+ "name": "TWD",
+ "symbol": "NT$"
+ },
+ "TZS": {
+ "name": "TZS",
+ "symbol": "TZS"
+ },
+ "UAH": {
+ "name": "UAH",
+ "symbol": "UAH"
+ },
+ "UGX": {
+ "name": "UGX",
+ "symbol": "UGX"
+ },
+ "USD": {
+ "name": "USD",
+ "symbol": "US$"
+ },
+ "UYU": {
+ "name": "UYU",
+ "symbol": "UYU"
+ },
+ "UZS": {
+ "name": "UZS",
+ "symbol": "UZS"
+ },
+ "VEF": {
+ "name": "VEF",
+ "symbol": "VEF"
+ },
+ "VND": {
+ "name": "VND",
+ "symbol": "â‚«"
+ },
+ "VUV": {
+ "name": "VUV",
+ "symbol": "VUV"
+ },
+ "WST": {
+ "name": "WST",
+ "symbol": "WST"
+ },
+ "XAF": {
+ "name": "XAF",
+ "symbol": "FCFA"
+ },
+ "XCD": {
+ "name": "XCD",
+ "symbol": "EC$"
+ },
+ "XOF": {
+ "name": "XOF",
+ "symbol": "CFA"
+ },
+ "XPF": {
+ "name": "XPF",
+ "symbol": "CFPF"
+ },
+ "YER": {
+ "name": "YER",
+ "symbol": "YER"
+ },
+ "ZAR": {
+ "name": "ZAR",
+ "symbol": "ZAR"
+ },
+ "ZMW": {
+ "name": "ZMW",
+ "symbol": "ZMW"
+ },
+ "ZWL": {
+ "name": "ZWL",
+ "symbol": "ZWL"
+ },
+ "INR": {
+ "name": "ଟଙକା",
+ "symbol": "₹"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/currency/pa.json b/library/intl/resources/currency/pa.json
new file mode 100644
index 000000000..9c0bf94be
--- /dev/null
+++ b/library/intl/resources/currency/pa.json
@@ -0,0 +1,634 @@
+{
+ "LSL": {
+ "name": "LSL",
+ "symbol": "LSL"
+ },
+ "SVC": {
+ "name": "SVC",
+ "symbol": "SVC"
+ },
+ "ZWL": {
+ "name": "ZWL",
+ "symbol": "ZWL"
+ },
+ "UZS": {
+ "name": "ਉਜ਼ਬੇਕਿਸਤਾਨ ਸੋਮ",
+ "symbol": "UZS"
+ },
+ "KPW": {
+ "name": "ਉੱਤਰੀ ਕੋਰੀਆਈ ਵੋਨ",
+ "symbol": "KPW"
+ },
+ "UYU": {
+ "name": "ਉਰੂਗà©à¨µà¨¾à¨‡à¨¨ ਪੇਸੋ",
+ "symbol": "UYU"
+ },
+ "OMR": {
+ "name": "ਓਮਾਨੀ ਰਿਆਲ",
+ "symbol": "OMR"
+ },
+ "AOA": {
+ "name": "ਅੰਗੋਲਾ ਕਵਾਂਜਾ",
+ "symbol": "AOA"
+ },
+ "AZN": {
+ "name": "ਅਜ਼ਰਬਾਈਜਾਨ ਮਾਨਤ",
+ "symbol": "AZN"
+ },
+ "AFN": {
+ "name": "ਅਫ਼ਗਾਨ ਅਫ਼ਗਾਨੀ",
+ "symbol": "AFN"
+ },
+ "ARS": {
+ "name": "ਅਰਜਨਟੀਨੀ ਪੇਸੋ",
+ "symbol": "ARS"
+ },
+ "AMD": {
+ "name": "ਅਰਮੀਨੀਆਈ ਦਰਮ",
+ "symbol": "AMD"
+ },
+ "AWG": {
+ "name": "ਅਰੂਬਨ ਫਲੋਰਿਨ",
+ "symbol": "AWG"
+ },
+ "DZD": {
+ "name": "ਅਲਜੀਰਿਆਈ ਦਿਨਾਰ",
+ "symbol": "DZD"
+ },
+ "ALL": {
+ "name": "ਅਲਬਾਨੀਆਈ ਲੇਕ",
+ "symbol": "ALL"
+ },
+ "ISK": {
+ "name": "ਆਈਸਲੈਂਡਿਕ ਕਰੌਨ",
+ "symbol": "ISK"
+ },
+ "AUD": {
+ "name": "ਆਸਟà©à¨°à©‡à¨²à©€à¨†à¨ˆ ਡਾਲਰ",
+ "symbol": "A$"
+ },
+ "ILS": {
+ "name": "ਇਜ਼ਰਾਈਲੀ ਨਵੀਂ ਸ਼ੇਕੇਲ",
+ "symbol": "₪"
+ },
+ "IDR": {
+ "name": "ਇੰਡੋਨੇਸ਼ੀਆਈ ਰà©à¨ªà¨¿à¨†à¨¹",
+ "symbol": "IDR"
+ },
+ "ETB": {
+ "name": "ਇਥੋਪੀਆਈ ਬਿਰ",
+ "symbol": "ETB"
+ },
+ "IQD": {
+ "name": "ਇਰਾਕੀ ਦਿਨਾਰ",
+ "symbol": "IQD"
+ },
+ "ERN": {
+ "name": "ਇਰੀਟà©à¨°à¨¿à¨†à¨ˆ ਨਾਫ਼ਾ",
+ "symbol": "ERN"
+ },
+ "IRR": {
+ "name": "ਈਰਾਨੀ ਰਿਆਲ",
+ "symbol": "IRR"
+ },
+ "AED": {
+ "name": "ਸੰਯà©à¨•à¨¤ ਅਰਬ ਅਮੀਰਾਤ ਦਿਰਹਾਮ",
+ "symbol": "AED"
+ },
+ "RSD": {
+ "name": "ਸਰਬੀਆਈ ਦਿਨਾਰ",
+ "symbol": "RSD"
+ },
+ "SZL": {
+ "name": "ਸਵਾਜ਼ੀ ਲਾਇਲੈਂਗਨੀ",
+ "symbol": "SZL"
+ },
+ "CHF": {
+ "name": "ਸਵਿਸ ਫà©à¨°à©ˆà¨‚ਕ",
+ "symbol": "CHF"
+ },
+ "SEK": {
+ "name": "ਸਵੀਡਿਸ਼ ਕਰੋਨਾ",
+ "symbol": "SEK"
+ },
+ "LKR": {
+ "name": "ਸà©à¨°à©€à¨²à©°à¨•à¨¾à¨ˆ ਰà©à¨ªà¨‡à¨†",
+ "symbol": "LKR"
+ },
+ "STD": {
+ "name": "ਸਾਉ ਟੋਮੀ à¨à¨‚ਡ ਪà©à¨°à¨¿à©°à¨¸à¨ªà©€ ਡੋਬਰਾ",
+ "symbol": "STD"
+ },
+ "SAR": {
+ "name": "ਸਾਊਦੀ ਰਿਆਲ",
+ "symbol": "SAR"
+ },
+ "WST": {
+ "name": "ਸਾਮੋਆਈ ਤਾਲਾ",
+ "symbol": "WST"
+ },
+ "SLL": {
+ "name": "ਸਿà¨à¨°à¨¾ ਲਿਓਨੀਅਨ ਲਿਓਨ",
+ "symbol": "SLL"
+ },
+ "SGD": {
+ "name": "ਸਿੰਗਾਪà©à¨° ਡਾਲਰ",
+ "symbol": "SGD"
+ },
+ "SYP": {
+ "name": "ਸੀਰੀਆਈ ਪੌਂਡ",
+ "symbol": "SYP"
+ },
+ "SDG": {
+ "name": "ਸੂਡਾਨੀ ਪੌਂਡ",
+ "symbol": "SDG"
+ },
+ "SRD": {
+ "name": "ਸੂਰੀਨਾਮੀ ਡਾਲਰ",
+ "symbol": "SRD"
+ },
+ "SCR": {
+ "name": "ਸੇਸ਼ਲਸ ਰà©à¨ªà¨‡à¨†",
+ "symbol": "SCR"
+ },
+ "SHP": {
+ "name": "ਸੇਂਟ ਹੇਲੇਨਾ ਪੌਂਡ",
+ "symbol": "SHP"
+ },
+ "SOS": {
+ "name": "ਸੋਮਾਲੀ ਸ਼ਿਲਿੰਗ",
+ "symbol": "SOS"
+ },
+ "SBD": {
+ "name": "ਸੋਲੋਮਨ ਆਈਲੈਂਡਸ ਡਾਲਰ",
+ "symbol": "SBD"
+ },
+ "HUF": {
+ "name": "ਹੰਗਰੀ ਫੋਰਿੰਟ",
+ "symbol": "HUF"
+ },
+ "HKD": {
+ "name": "ਹਾਂਗ ਕਾਂਗ ਡਾਲਰ",
+ "symbol": "HK$"
+ },
+ "HNL": {
+ "name": "ਹਾਨਡੂਰਨ ਲੇਮਪਿਰਾ",
+ "symbol": "HNL"
+ },
+ "HTG": {
+ "name": "ਹੈਤੀ ਗੌਰਡੇ",
+ "symbol": "HTG"
+ },
+ "KZT": {
+ "name": "ਕਜ਼ਾਖਸਤਾਨੀ ਤੇਂਗੇ",
+ "symbol": "KZT"
+ },
+ "QAR": {
+ "name": "ਕਤਰੀ ਰਿਆਲ",
+ "symbol": "QAR"
+ },
+ "KHR": {
+ "name": "ਕੰਬੋਡੀਆਈ ਰੀਅਲ",
+ "symbol": "KHR"
+ },
+ "HRK": {
+ "name": "ਕਰੋà¨à¨¸à¨¼à©€à¨†à¨ˆ ਕà©à¨¨à¨¾",
+ "symbol": "HRK"
+ },
+ "CDF": {
+ "name": "ਕਾਂਗੋਲੀਜ਼ ਫà©à¨°à©ˆà¨‚ਕ",
+ "symbol": "CDF"
+ },
+ "CUP": {
+ "name": "ਕਿਊਬਨ ਪੇਸੋ",
+ "symbol": "CUP"
+ },
+ "CUC": {
+ "name": "ਕਿਊਬਨ ਬਦਲਣਯੋਗ ਪੇਸੋ",
+ "symbol": "CUC"
+ },
+ "KGS": {
+ "name": "ਕਿਰਗਿਸਤਾਨੀ ਸੋਮ",
+ "symbol": "KGS"
+ },
+ "KES": {
+ "name": "ਕੀਨੀਆਈ ਸ਼ਿਲਿੰਗ",
+ "symbol": "KES"
+ },
+ "KWD": {
+ "name": "ਕà©à¨µà©ˆà¨¤à©€ ਦਿਨਾਰ",
+ "symbol": "KWD"
+ },
+ "CAD": {
+ "name": "ਕੇਨੇਡਿਆਈ ਡਾਲਰ",
+ "symbol": "CA$"
+ },
+ "CVE": {
+ "name": "ਕੇਪ ਵਰਡੀਅਨ ਸਕੂਡੋ",
+ "symbol": "CVE"
+ },
+ "KYD": {
+ "name": "ਕੇਮੈਨ ਆਈਲੈਂਡਸ ਡਾਲਰ",
+ "symbol": "KYD"
+ },
+ "CRC": {
+ "name": "ਕੋਸਟਾ ਰੀਕਨ ਕੋਲਨ",
+ "symbol": "CRC"
+ },
+ "KMF": {
+ "name": "ਕੋਮੋਰੀਅਨ ਫà©à¨°à©ˆà¨‚ਕ",
+ "symbol": "KMF"
+ },
+ "COP": {
+ "name": "ਕੋਲੰਬਿਆਈ ਪੇਸੋ",
+ "symbol": "COP"
+ },
+ "GNF": {
+ "name": "ਗਿਨੀ ਫà©à¨°à©ˆà¨‚ਕ",
+ "symbol": "GNF"
+ },
+ "GTQ": {
+ "name": "ਗà©à¨†à¨Ÿà©‡à¨®à¨¾à¨²à¨¾ ਕà©à¨à¨Ÿà¨œà¨¼à¨²",
+ "symbol": "GTQ"
+ },
+ "GYD": {
+ "name": "ਗà©à¨†à¨¨à¨¾à¨†à¨ˆ ਡਾਲਰ",
+ "symbol": "GYD"
+ },
+ "GMD": {
+ "name": "ਗੈਂਬੀਆਈ ਦਲਾਸੀ",
+ "symbol": "GMD"
+ },
+ "GHS": {
+ "name": "ਘਾਨਾਈ ਸੇਡੀ",
+ "symbol": "GHS"
+ },
+ "CLP": {
+ "name": "ਚਿਲੀ ਪੇਸੋ",
+ "symbol": "CLP"
+ },
+ "CNY": {
+ "name": "ਚੀਨੀ ਯà©à¨†à¨¨",
+ "symbol": "CNÂ¥"
+ },
+ "CZK": {
+ "name": "ਚੈਕ ਗਣਰਾਜ ਕੋਰà©à¨¨à¨¾",
+ "symbol": "CZK"
+ },
+ "JPY": {
+ "name": "ਜਪਾਨੀ ਯੇਨ",
+ "symbol": "JPÂ¥"
+ },
+ "JMD": {
+ "name": "ਜਮਾਇਕਨ ਡਾਲਰ",
+ "symbol": "JMD"
+ },
+ "ZMW": {
+ "name": "ਜ਼ਾਮਬੀਆਈ ਕਵਾਚਾ",
+ "symbol": "ZMW"
+ },
+ "GEL": {
+ "name": "ਜਾਰਜੀਆਈ ਲਾਰੀ",
+ "symbol": "GEL"
+ },
+ "JOD": {
+ "name": "ਜਾਰਡਨ ਦਿਨਾਰ",
+ "symbol": "JOD"
+ },
+ "GIP": {
+ "name": "ਜਿਬਰਾਲਟਰ ਪੌਂਡ",
+ "symbol": "GIP"
+ },
+ "DJF": {
+ "name": "ਜ਼ੀਬੂਤੀਅਨ ਫà©à¨°à©ˆà¨‚ਕ",
+ "symbol": "DJF"
+ },
+ "TTD": {
+ "name": "ਟà©à¨°à¨¿à¨¨à©€à¨¡à¨¾à¨¡ ਅਤੇ ਟੋਬਾਗੋ ਡਾਲਰ",
+ "symbol": "TTD"
+ },
+ "TND": {
+ "name": "ਟਿਉਨੀਸ਼ੀਆਈ ਦਿਨਾਰ",
+ "symbol": "TND"
+ },
+ "TOP": {
+ "name": "ਟੌਂਗਨ ਪੈਂਗਾ",
+ "symbol": "TOP"
+ },
+ "DKK": {
+ "name": "ਡੈਨਿਸ਼ ਕਰੌਨ",
+ "symbol": "DKK"
+ },
+ "DOP": {
+ "name": "ਡੌਮਿਨਿਕਨ ਪੇਸੋ",
+ "symbol": "DOP"
+ },
+ "TZS": {
+ "name": "ਤਨਜ਼ਾਨੀਆਈ ਸ਼ਿਲਿੰਗ",
+ "symbol": "TZS"
+ },
+ "TJS": {
+ "name": "ਤਾਜਿਕਿਸਤਾਨੀ ਸੋਮੋਨੀ",
+ "symbol": "TJS"
+ },
+ "TMT": {
+ "name": "ਤà©à¨°à¨•à¨®à©‡à¨¨à¨¿à¨¸à¨¤à¨¾à¨¨à©€ ਮਾਨਤ",
+ "symbol": "TMT"
+ },
+ "TRY": {
+ "name": "ਤà©à¨°à¨•à©€ ਲੀਰਾ",
+ "symbol": "TRY"
+ },
+ "THB": {
+ "name": "ਥਾਈ ਬਾਹਤ",
+ "symbol": "฿"
+ },
+ "ZAR": {
+ "name": "ਦੱਖਣੀ ਅਫਰੀਕੀ ਰੈਂਡ",
+ "symbol": "ZAR"
+ },
+ "SSP": {
+ "name": "ਦੱਖਣੀ ਸੂਡਾਨੀ ਪੌਂਡ",
+ "symbol": "SSP"
+ },
+ "KRW": {
+ "name": "ਦੱਖਣੀ ਕੋਰੀਆਈ ਵੋਨ",
+ "symbol": "â‚©"
+ },
+ "TWD": {
+ "name": "ਨਵਾਂ ਤਾਇਵਾਨ ਡਾਲਰ",
+ "symbol": "NT$"
+ },
+ "NGN": {
+ "name": "ਨਾਇਜੀਰੀਆਈ ਨਾਇਰਾ",
+ "symbol": "NGN"
+ },
+ "NAD": {
+ "name": "ਨਾਮੀਬੀਆਈ ਡਾਲਰ",
+ "symbol": "NAD"
+ },
+ "NOK": {
+ "name": "ਨਾਰਵੇਜੀਆਈ ਕਰੌਨ",
+ "symbol": "NOK"
+ },
+ "NZD": {
+ "name": "ਨਿਊਜ਼ੀਲੈਂਡ ਡਾਲਰ",
+ "symbol": "NZ$"
+ },
+ "NIO": {
+ "name": "ਨਿਕਾਰਾਗà©à¨†à¨ˆ ਕੋਰਡੋਬਾ",
+ "symbol": "NIO"
+ },
+ "ANG": {
+ "name": "ਨੀਦਰਲੈਂਡਸ à¨à¨‚ਟੀਲੀਅਨ ਗਿਲਡਰ",
+ "symbol": "ANG"
+ },
+ "NPR": {
+ "name": "ਨੇਪਾਲੀ ਰà©à¨ªà¨‡à¨†",
+ "symbol": "NPR"
+ },
+ "PAB": {
+ "name": "ਪਨਾਮੇਨੀਅਨ ਬਾਲਬੋਆ",
+ "symbol": "PAB"
+ },
+ "PKR": {
+ "name": "ਪਾਕਿਸਤਾਨੀ ਰà©à¨ªà¨‡à¨†",
+ "symbol": "PKR"
+ },
+ "PGK": {
+ "name": "ਪਾਪੂਆ ਨਿਊ ਗਿਨੀਆਈ ਕੀਨਾ",
+ "symbol": "PGK"
+ },
+ "XCD": {
+ "name": "ਪੂਰਬੀ ਕੈਰੇਬੀਅਨ ਡਾਲਰ",
+ "symbol": "EC$"
+ },
+ "PEN": {
+ "name": "ਪੇਰੂਵੀਅਨ ਨਿਊਵੋ ਸੋਲ",
+ "symbol": "PEN"
+ },
+ "PYG": {
+ "name": "ਪੈਰਾਗà©à¨µà¨¾à¨‡à¨¨ ਗà©à¨†à¨°à¨¾à¨¨à©€",
+ "symbol": "PYG"
+ },
+ "PLN": {
+ "name": "ਪੋਲੈਂਡੀ ਜ਼ਲੌਟੀ",
+ "symbol": "PLN"
+ },
+ "XOF": {
+ "name": "ਫà©à¨°à©ˆà¨‚ਕ (CFA BCEAO)",
+ "symbol": "CFA"
+ },
+ "XAF": {
+ "name": "ਫà©à¨°à©ˆà¨‚ਕ (CFA BEAC)",
+ "symbol": "FCFA"
+ },
+ "XPF": {
+ "name": "ਫà©à¨°à©ˆà¨‚ਕ (CFP)",
+ "symbol": "CFPF"
+ },
+ "FKP": {
+ "name": "ਫ਼ਾਕਲੈਂਡ ਆਈਲੈਂਡਸ ਪੌਂਡ",
+ "symbol": "FKP"
+ },
+ "FJD": {
+ "name": "ਫ਼ਿਜ਼ੀ ਡਾਲਰ",
+ "symbol": "FJD"
+ },
+ "PHP": {
+ "name": "ਫਿਲਿਪੀਨੀ ਪੇਸੋ",
+ "symbol": "PHP"
+ },
+ "BHD": {
+ "name": "ਬਹਿਰੀਨੀ ਦਿਨਾਰ",
+ "symbol": "BHD"
+ },
+ "BDT": {
+ "name": "ਬੰਗਲਾਦੇਸ਼ੀ ਟਕਾ",
+ "symbol": "BDT"
+ },
+ "BMD": {
+ "name": "ਬਰਮੂਡਾ ਡਾਲਰ",
+ "symbol": "BMD"
+ },
+ "BND": {
+ "name": "ਬਰੂਨੇਈ ਡਾਲਰ",
+ "symbol": "BND"
+ },
+ "BRL": {
+ "name": "ਬà©à¨°à¨¾à¨œà¨¼à©€à¨²à©€à¨†à¨ˆ ਰੀਅਲ",
+ "symbol": "R$"
+ },
+ "GBP": {
+ "name": "ਬà©à¨°à¨¿à¨Ÿà¨¿à¨¸à¨¼ ਪੌਂਡ ਸਟਰਲਿੰਗ",
+ "symbol": "£"
+ },
+ "BSD": {
+ "name": "ਬਾਹਾਮੀਅਨ ਡਾਲਰ",
+ "symbol": "BSD"
+ },
+ "BBD": {
+ "name": "ਬਾਰਬਾਡੀਅਨ ਡਾਲਰ",
+ "symbol": "BBD"
+ },
+ "BIF": {
+ "name": "ਬà©à¨°à©à©°à¨¡à©€à¨†à¨ˆ ਫà©à¨°à©ˆà¨‚ਕ",
+ "symbol": "BIF"
+ },
+ "BGN": {
+ "name": "ਬà©à¨²à¨—ਾਰੀਆਈ ਲੇਵ",
+ "symbol": "BGN"
+ },
+ "BYR": {
+ "name": "ਬੇਲਾਰੂਸੀ ਰੂਬਲ",
+ "symbol": "BYR"
+ },
+ "BZD": {
+ "name": "ਬੇਲੀਜ਼ ਡਾਲਰ",
+ "symbol": "BZD"
+ },
+ "BAM": {
+ "name": "ਬੋਸਨੀਆ-ਹਰਜ਼ੇਗੋਵੀਨਾ ਬਦਲਣਯੋਗ ਮਾਰਕ",
+ "symbol": "BAM"
+ },
+ "BWP": {
+ "name": "ਬੋਟਸਵਾਨਾ ਪà©à¨²à¨¾",
+ "symbol": "BWP"
+ },
+ "BOB": {
+ "name": "ਬੋਲੀਵੀਅਨ ਬੋਲੀਵੀਅਨੋ",
+ "symbol": "BOB"
+ },
+ "INR": {
+ "name": "ਭਾਰਤੀ ਰà©à¨ªà¨‡à¨†",
+ "symbol": "₹"
+ },
+ "BTN": {
+ "name": "ਭੂਟਾਨੀ à¨à¨‚ਗਲਟà©à¨°à¨®",
+ "symbol": "BTN"
+ },
+ "MNT": {
+ "name": "ਮੰਗੋਲੀਆਈ ਤà©à¨—ਰਿਕ",
+ "symbol": "MNT"
+ },
+ "MYR": {
+ "name": "ਮਲੇਸ਼ੀਆਈ ਰਿੰਗਿਟ",
+ "symbol": "MYR"
+ },
+ "MVR": {
+ "name": "ਮਾਲਦੀਵੀ ਰà©à¨«à©€à¨†",
+ "symbol": "MVR"
+ },
+ "MGA": {
+ "name": "ਮਾਲਾਗਾਸੀ ਅਰਾਇਰੀ",
+ "symbol": "MGA"
+ },
+ "MWK": {
+ "name": "ਮਾਲਾਵੀਆਈ ਕਵਾਚਾ",
+ "symbol": "MWK"
+ },
+ "MMK": {
+ "name": "ਮਿਆਂਮਾਰ ਕਿਆਤ",
+ "symbol": "MMK"
+ },
+ "EGP": {
+ "name": "ਮਿਸਰੀ ਪੌਂਡ",
+ "symbol": "EGP"
+ },
+ "MOP": {
+ "name": "ਮੇਕਾਨੀ ਪਟਾਕਾ",
+ "symbol": "MOP"
+ },
+ "MXN": {
+ "name": "ਮੈਕਸੀਕਨ ਪੇਸੋ",
+ "symbol": "MX$"
+ },
+ "MKD": {
+ "name": "ਮੈਕਡੋਨੀਆਈ ਡੇਨਾਰ",
+ "symbol": "MKD"
+ },
+ "MZN": {
+ "name": "ਮੋਜ਼ਾਮਬੀਕਨ ਮੈਟੀਕਲ",
+ "symbol": "MZN"
+ },
+ "MAD": {
+ "name": "ਮੋਰੱਕਨ ਦਿਰਹਾਮ",
+ "symbol": "MAD"
+ },
+ "MRO": {
+ "name": "ਮੋਰਿਟਾਨੀਆਈ ਊਗੀਆ",
+ "symbol": "MRO"
+ },
+ "MDL": {
+ "name": "ਮੋਲਡੋਵਨ ਲੇਉ",
+ "symbol": "MDL"
+ },
+ "MUR": {
+ "name": "ਮੌਰਿਸ਼ੀਆਈ ਰà©à¨ªà¨‡à¨†",
+ "symbol": "MUR"
+ },
+ "YER": {
+ "name": "ਯਮਨੀ ਰਿਆਲ",
+ "symbol": "YER"
+ },
+ "USD": {
+ "name": "ਯੂ.à¨à¨¸. ਡਾਲਰ",
+ "symbol": "US$"
+ },
+ "UAH": {
+ "name": "ਯੂਕਰੇਨੀਆਈ ਰਿਵਨਿਆ",
+ "symbol": "UAH"
+ },
+ "UGX": {
+ "name": "ਯੂਗਾਂਡੀਆਈ ਸ਼ਿਲਿੰਗ",
+ "symbol": "UGX"
+ },
+ "EUR": {
+ "name": "ਯੂਰੋ",
+ "symbol": "€"
+ },
+ "RWF": {
+ "name": "ਰਵਾਂਡਨ ਫà©à¨°à©ˆà¨‚ਕ",
+ "symbol": "RWF"
+ },
+ "RUB": {
+ "name": "ਰੂਸੀ ਰੂਬਲ",
+ "symbol": "RUB"
+ },
+ "RON": {
+ "name": "ਰੋਮਾਨੀਆਈ ਲੇਉ",
+ "symbol": "RON"
+ },
+ "LAK": {
+ "name": "ਲਾਓਟਿਆਈ ਕਿਪ",
+ "symbol": "LAK"
+ },
+ "LRD": {
+ "name": "ਲਾਈਬੀਰੀਆਈ ਡਾਲਰ",
+ "symbol": "LRD"
+ },
+ "LTL": {
+ "name": "ਲਿਥà©à¨†à¨¨à©€à¨†à¨ˆ ਲਿਤਾਸ",
+ "symbol": "LTL"
+ },
+ "LYD": {
+ "name": "ਲੀਬੀਅਨ ਦਿਨਾਰ",
+ "symbol": "LYD"
+ },
+ "LBP": {
+ "name": "ਲੈਬਨਾਨੀ ਪੌਂਡ",
+ "symbol": "LBP"
+ },
+ "VUV": {
+ "name": "ਵਾਨੂਆਟੂ ਵਾਟੂ",
+ "symbol": "VUV"
+ },
+ "VND": {
+ "name": "ਵੀਅਤਨਾਮੀ ਡੋਂਗ",
+ "symbol": "â‚«"
+ },
+ "VEF": {
+ "name": "ਵੇਨੇਜ਼ੂà¨à¨²à¨¨ ਬੋਲੀਵਰ",
+ "symbol": "VEF"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/currency/pl.json b/library/intl/resources/currency/pl.json
new file mode 100644
index 000000000..a83973d7a
--- /dev/null
+++ b/library/intl/resources/currency/pl.json
@@ -0,0 +1,634 @@
+{
+ "AFN": {
+ "name": "afgani",
+ "symbol": "AFN"
+ },
+ "MGA": {
+ "name": "ariary malgaski",
+ "symbol": "MGA"
+ },
+ "THB": {
+ "name": "baht tajski",
+ "symbol": "THB"
+ },
+ "PAB": {
+ "name": "balboa panamski",
+ "symbol": "PAB"
+ },
+ "ETB": {
+ "name": "birr etiopski",
+ "symbol": "ETB"
+ },
+ "BOB": {
+ "name": "boliviano",
+ "symbol": "BOB"
+ },
+ "VEF": {
+ "name": "boliwar wenezuelski",
+ "symbol": "VEF"
+ },
+ "GHS": {
+ "name": "cedi ghański",
+ "symbol": "GHS"
+ },
+ "CRC": {
+ "name": "colon kostarykański",
+ "symbol": "CRC"
+ },
+ "SVC": {
+ "name": "colon salwadorski",
+ "symbol": "SVC"
+ },
+ "NIO": {
+ "name": "cordoba nikaraguańska",
+ "symbol": "NIO"
+ },
+ "GMD": {
+ "name": "dalasi gambijskie",
+ "symbol": "GMD"
+ },
+ "MKD": {
+ "name": "denar macedoński",
+ "symbol": "MKD"
+ },
+ "DZD": {
+ "name": "dinar algierski",
+ "symbol": "DZD"
+ },
+ "BHD": {
+ "name": "dinar bahrański",
+ "symbol": "BHD"
+ },
+ "IQD": {
+ "name": "dinar iracki",
+ "symbol": "IQD"
+ },
+ "JOD": {
+ "name": "dinar jordański",
+ "symbol": "JOD"
+ },
+ "KWD": {
+ "name": "dinar kuwejcki",
+ "symbol": "KWD"
+ },
+ "LYD": {
+ "name": "dinar libijski",
+ "symbol": "LYD"
+ },
+ "RSD": {
+ "name": "dinar serbski",
+ "symbol": "RSD"
+ },
+ "TND": {
+ "name": "dinar tunezyjski",
+ "symbol": "TND"
+ },
+ "AED": {
+ "name": "dirham arabski",
+ "symbol": "AED"
+ },
+ "MAD": {
+ "name": "dirham marokański",
+ "symbol": "MAD"
+ },
+ "STD": {
+ "name": "dobra Wysp Świętego Tomasza i Książęcej",
+ "symbol": "STD"
+ },
+ "USD": {
+ "name": "dolar amerykański",
+ "symbol": "USD"
+ },
+ "AUD": {
+ "name": "dolar australijski",
+ "symbol": "AUD"
+ },
+ "BSD": {
+ "name": "dolar bahamski",
+ "symbol": "BSD"
+ },
+ "BBD": {
+ "name": "dolar Barbadosu",
+ "symbol": "BBD"
+ },
+ "BZD": {
+ "name": "dolar belizeński",
+ "symbol": "BZD"
+ },
+ "BMD": {
+ "name": "dolar bermudzki",
+ "symbol": "BMD"
+ },
+ "BND": {
+ "name": "dolar brunejski",
+ "symbol": "BND"
+ },
+ "FJD": {
+ "name": "dolar fidżi",
+ "symbol": "FJD"
+ },
+ "GYD": {
+ "name": "dolar gujański",
+ "symbol": "GYD"
+ },
+ "HKD": {
+ "name": "dolar hongkoński",
+ "symbol": "HKD"
+ },
+ "JMD": {
+ "name": "dolar jamajski",
+ "symbol": "JMD"
+ },
+ "KYD": {
+ "name": "dolar kajmański",
+ "symbol": "KYD"
+ },
+ "CAD": {
+ "name": "dolar kanadyjski",
+ "symbol": "CAD"
+ },
+ "LRD": {
+ "name": "dolar liberyjski",
+ "symbol": "LRD"
+ },
+ "NAD": {
+ "name": "dolar namibijski",
+ "symbol": "NAD"
+ },
+ "NZD": {
+ "name": "dolar nowozelandzki",
+ "symbol": "NZD"
+ },
+ "SGD": {
+ "name": "dolar singapurski",
+ "symbol": "SGD"
+ },
+ "SRD": {
+ "name": "dolar surinamski",
+ "symbol": "SRD"
+ },
+ "TTD": {
+ "name": "dolar Trynidadu i Tobago",
+ "symbol": "TTD"
+ },
+ "XCD": {
+ "name": "dolar wschodniokaraibski",
+ "symbol": "EC$"
+ },
+ "SBD": {
+ "name": "dolar Wysp Salomona",
+ "symbol": "SBD"
+ },
+ "ZWL": {
+ "name": "dolar Zimbabwe (2009)",
+ "symbol": "ZWL"
+ },
+ "VND": {
+ "name": "dong wietnamski",
+ "symbol": "VND"
+ },
+ "AMD": {
+ "name": "dram armeński",
+ "symbol": "AMD"
+ },
+ "CVE": {
+ "name": "escudo zielonoprzylÄ…dkowe",
+ "symbol": "CVE"
+ },
+ "EUR": {
+ "name": "euro",
+ "symbol": "€"
+ },
+ "AWG": {
+ "name": "florin arubański",
+ "symbol": "AWG"
+ },
+ "HUF": {
+ "name": "forint węgierski",
+ "symbol": "HUF"
+ },
+ "BIF": {
+ "name": "frank burundyjski",
+ "symbol": "BIF"
+ },
+ "XOF": {
+ "name": "frank CFA",
+ "symbol": "CFA"
+ },
+ "XAF": {
+ "name": "frank CFA BEAC",
+ "symbol": "FCFA"
+ },
+ "XPF": {
+ "name": "frank CFP",
+ "symbol": "CFPF"
+ },
+ "DJF": {
+ "name": "frank dżibutyjski",
+ "symbol": "DJF"
+ },
+ "GNF": {
+ "name": "frank gwinejski",
+ "symbol": "GNF"
+ },
+ "KMF": {
+ "name": "frank komoryjski",
+ "symbol": "KMF"
+ },
+ "CDF": {
+ "name": "frank kongijski",
+ "symbol": "CDF"
+ },
+ "RWF": {
+ "name": "frank ruandyjski",
+ "symbol": "RWF"
+ },
+ "CHF": {
+ "name": "frank szwajcarski",
+ "symbol": "CHF"
+ },
+ "EGP": {
+ "name": "funt egipski",
+ "symbol": "EGP"
+ },
+ "FKP": {
+ "name": "funt falklandzki",
+ "symbol": "FKP"
+ },
+ "GIP": {
+ "name": "funt gibraltarski",
+ "symbol": "GIP"
+ },
+ "LBP": {
+ "name": "funt libański",
+ "symbol": "LBP"
+ },
+ "SSP": {
+ "name": "funt południowosudański",
+ "symbol": "SSP"
+ },
+ "SDG": {
+ "name": "funt sudański",
+ "symbol": "SDG"
+ },
+ "SYP": {
+ "name": "funt syryjski",
+ "symbol": "SYP"
+ },
+ "GBP": {
+ "name": "funt szterling",
+ "symbol": "GBP"
+ },
+ "SHP": {
+ "name": "funt Wyspy Świętej Heleny",
+ "symbol": "SHP"
+ },
+ "HTG": {
+ "name": "gourde haitańskie",
+ "symbol": "HTG"
+ },
+ "PYG": {
+ "name": "guarani paragwajskie",
+ "symbol": "PYG"
+ },
+ "ANG": {
+ "name": "gulden antylski",
+ "symbol": "ANG"
+ },
+ "UAH": {
+ "name": "hrywna ukraińska",
+ "symbol": "UAH"
+ },
+ "JPY": {
+ "name": "jen japoński",
+ "symbol": "JPY"
+ },
+ "CNY": {
+ "name": "juan chiński",
+ "symbol": "CNY"
+ },
+ "MMK": {
+ "name": "kiat birmański",
+ "symbol": "MMK"
+ },
+ "PGK": {
+ "name": "kina Papua Nowa Gwinea",
+ "symbol": "PGK"
+ },
+ "LAK": {
+ "name": "kip laotański",
+ "symbol": "LAK"
+ },
+ "CZK": {
+ "name": "korona czeska",
+ "symbol": "CZK"
+ },
+ "DKK": {
+ "name": "korona duńska",
+ "symbol": "DKK"
+ },
+ "ISK": {
+ "name": "korona islandzka",
+ "symbol": "ISK"
+ },
+ "NOK": {
+ "name": "korona norweska",
+ "symbol": "NOK"
+ },
+ "SEK": {
+ "name": "korona szwedzka",
+ "symbol": "SEK"
+ },
+ "HRK": {
+ "name": "kuna chorwacka",
+ "symbol": "HRK"
+ },
+ "MWK": {
+ "name": "kwacha malawska",
+ "symbol": "MWK"
+ },
+ "ZMW": {
+ "name": "kwacha zambijska",
+ "symbol": "ZMW"
+ },
+ "AOA": {
+ "name": "kwanza angolańska",
+ "symbol": "AOA"
+ },
+ "GEL": {
+ "name": "lari gruzińskie",
+ "symbol": "GEL"
+ },
+ "MDL": {
+ "name": "lej mołdawski",
+ "symbol": "MDL"
+ },
+ "RON": {
+ "name": "lej rumuński",
+ "symbol": "RON"
+ },
+ "ALL": {
+ "name": "lek albański",
+ "symbol": "ALL"
+ },
+ "HNL": {
+ "name": "lempira honduraska",
+ "symbol": "HNL"
+ },
+ "SLL": {
+ "name": "leone sierraleoński",
+ "symbol": "SLL"
+ },
+ "BGN": {
+ "name": "lew bułgarski",
+ "symbol": "BGN"
+ },
+ "SZL": {
+ "name": "lilangeni Suazi",
+ "symbol": "SZL"
+ },
+ "TRY": {
+ "name": "lira turecka",
+ "symbol": "TRY"
+ },
+ "LTL": {
+ "name": "lit litewski",
+ "symbol": "LTL"
+ },
+ "LSL": {
+ "name": "loti Lesoto",
+ "symbol": "LSL"
+ },
+ "AZN": {
+ "name": "manat azerski",
+ "symbol": "AZN"
+ },
+ "TMT": {
+ "name": "manat turkmeński",
+ "symbol": "TMT"
+ },
+ "BAM": {
+ "name": "marka zamienna Bośni i Hercegowiny",
+ "symbol": "BAM"
+ },
+ "MZN": {
+ "name": "metical mozambicki",
+ "symbol": "MZN"
+ },
+ "NGN": {
+ "name": "naira nigeryjska",
+ "symbol": "NGN"
+ },
+ "ERN": {
+ "name": "nakfa erytrejska",
+ "symbol": "ERN"
+ },
+ "BTN": {
+ "name": "ngultrum bhutański",
+ "symbol": "BTN"
+ },
+ "TWD": {
+ "name": "nowy dolar tajwański",
+ "symbol": "TWD"
+ },
+ "PEN": {
+ "name": "nowy sol peruwiański",
+ "symbol": "PEN"
+ },
+ "ILS": {
+ "name": "nowy szekel izraelski",
+ "symbol": "ILS"
+ },
+ "MRO": {
+ "name": "ouguiya mauretańska",
+ "symbol": "MRO"
+ },
+ "TOP": {
+ "name": "pa’anga tongijska",
+ "symbol": "TOP"
+ },
+ "MOP": {
+ "name": "pataca Makau",
+ "symbol": "MOP"
+ },
+ "ARS": {
+ "name": "peso argentyńskie",
+ "symbol": "ARS"
+ },
+ "CLP": {
+ "name": "peso chilijskie",
+ "symbol": "CLP"
+ },
+ "DOP": {
+ "name": "peso dominikańskie",
+ "symbol": "DOP"
+ },
+ "PHP": {
+ "name": "peso filipińskie",
+ "symbol": "PHP"
+ },
+ "COP": {
+ "name": "peso kolumbijskie",
+ "symbol": "COP"
+ },
+ "CUP": {
+ "name": "peso kubańskie",
+ "symbol": "CUP"
+ },
+ "CUC": {
+ "name": "peso kubańskie wymienialne",
+ "symbol": "CUC"
+ },
+ "MXN": {
+ "name": "peso meksykańskie",
+ "symbol": "MXN"
+ },
+ "UYU": {
+ "name": "peso urugwajskie",
+ "symbol": "UYU"
+ },
+ "BWP": {
+ "name": "pula botswańska",
+ "symbol": "BWP"
+ },
+ "GTQ": {
+ "name": "quetzal gwatemalski",
+ "symbol": "GTQ"
+ },
+ "ZAR": {
+ "name": "rand południowoafrykański",
+ "symbol": "ZAR"
+ },
+ "BRL": {
+ "name": "real brazylijski",
+ "symbol": "R$"
+ },
+ "IRR": {
+ "name": "rial irański",
+ "symbol": "IRR"
+ },
+ "YER": {
+ "name": "rial jemeński",
+ "symbol": "YER"
+ },
+ "QAR": {
+ "name": "rial katarski",
+ "symbol": "QAR"
+ },
+ "OMR": {
+ "name": "rial omański",
+ "symbol": "OMR"
+ },
+ "SAR": {
+ "name": "rial saudyjski",
+ "symbol": "SAR"
+ },
+ "KHR": {
+ "name": "riel kambodżański",
+ "symbol": "KHR"
+ },
+ "MYR": {
+ "name": "ringgit malezyjski",
+ "symbol": "MYR"
+ },
+ "BYR": {
+ "name": "rubel białoruski",
+ "symbol": "BYR"
+ },
+ "RUB": {
+ "name": "rubel rosyjski",
+ "symbol": "RUB"
+ },
+ "IDR": {
+ "name": "rupia indonezyjska",
+ "symbol": "IDR"
+ },
+ "INR": {
+ "name": "rupia indyjska",
+ "symbol": "INR"
+ },
+ "LKR": {
+ "name": "rupia lankijska",
+ "symbol": "LKR"
+ },
+ "MVR": {
+ "name": "rupia malediwska",
+ "symbol": "MVR"
+ },
+ "MUR": {
+ "name": "rupia maurytyjska",
+ "symbol": "MUR"
+ },
+ "NPR": {
+ "name": "rupia nepalska",
+ "symbol": "NPR"
+ },
+ "PKR": {
+ "name": "rupia pakistańska",
+ "symbol": "PKR"
+ },
+ "SCR": {
+ "name": "rupia seszelska",
+ "symbol": "SCR"
+ },
+ "KGS": {
+ "name": "som kirgiski",
+ "symbol": "KGS"
+ },
+ "UZS": {
+ "name": "som uzbecki",
+ "symbol": "UZS"
+ },
+ "TJS": {
+ "name": "somoni tadżyckie",
+ "symbol": "TJS"
+ },
+ "KES": {
+ "name": "szyling kenijski",
+ "symbol": "KES"
+ },
+ "SOS": {
+ "name": "szyling somalijski",
+ "symbol": "SOS"
+ },
+ "TZS": {
+ "name": "szyling tanzański",
+ "symbol": "TZS"
+ },
+ "UGX": {
+ "name": "szyling ugandyjski",
+ "symbol": "UGX"
+ },
+ "BDT": {
+ "name": "taka bengalska",
+ "symbol": "BDT"
+ },
+ "WST": {
+ "name": "tala samoańska",
+ "symbol": "WST"
+ },
+ "KZT": {
+ "name": "tenge kazachskie",
+ "symbol": "KZT"
+ },
+ "MNT": {
+ "name": "tugrik mongolski",
+ "symbol": "MNT"
+ },
+ "VUV": {
+ "name": "vatu Vanuatu",
+ "symbol": "VUV"
+ },
+ "KRW": {
+ "name": "won południowokoreański",
+ "symbol": "KRW"
+ },
+ "KPW": {
+ "name": "won północnokoreański",
+ "symbol": "KPW"
+ },
+ "PLN": {
+ "name": "złoty polski",
+ "symbol": "zł"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/currency/ps.json b/library/intl/resources/currency/ps.json
new file mode 100644
index 000000000..7b16abf01
--- /dev/null
+++ b/library/intl/resources/currency/ps.json
@@ -0,0 +1,634 @@
+{
+ "AED": {
+ "name": "AED",
+ "symbol": "AED"
+ },
+ "ALL": {
+ "name": "ALL",
+ "symbol": "ALL"
+ },
+ "AMD": {
+ "name": "AMD",
+ "symbol": "AMD"
+ },
+ "ANG": {
+ "name": "ANG",
+ "symbol": "ANG"
+ },
+ "AOA": {
+ "name": "AOA",
+ "symbol": "AOA"
+ },
+ "ARS": {
+ "name": "ARS",
+ "symbol": "ARS"
+ },
+ "AUD": {
+ "name": "AUD",
+ "symbol": "A$"
+ },
+ "AWG": {
+ "name": "AWG",
+ "symbol": "AWG"
+ },
+ "AZN": {
+ "name": "AZN",
+ "symbol": "AZN"
+ },
+ "BAM": {
+ "name": "BAM",
+ "symbol": "BAM"
+ },
+ "BBD": {
+ "name": "BBD",
+ "symbol": "BBD"
+ },
+ "BDT": {
+ "name": "BDT",
+ "symbol": "BDT"
+ },
+ "BGN": {
+ "name": "BGN",
+ "symbol": "BGN"
+ },
+ "BHD": {
+ "name": "BHD",
+ "symbol": "BHD"
+ },
+ "BIF": {
+ "name": "BIF",
+ "symbol": "BIF"
+ },
+ "BMD": {
+ "name": "BMD",
+ "symbol": "BMD"
+ },
+ "BND": {
+ "name": "BND",
+ "symbol": "BND"
+ },
+ "BOB": {
+ "name": "BOB",
+ "symbol": "BOB"
+ },
+ "BRL": {
+ "name": "BRL",
+ "symbol": "R$"
+ },
+ "BSD": {
+ "name": "BSD",
+ "symbol": "BSD"
+ },
+ "BTN": {
+ "name": "BTN",
+ "symbol": "BTN"
+ },
+ "BWP": {
+ "name": "BWP",
+ "symbol": "BWP"
+ },
+ "BYR": {
+ "name": "BYR",
+ "symbol": "BYR"
+ },
+ "BZD": {
+ "name": "BZD",
+ "symbol": "BZD"
+ },
+ "CAD": {
+ "name": "CAD",
+ "symbol": "CA$"
+ },
+ "CDF": {
+ "name": "CDF",
+ "symbol": "CDF"
+ },
+ "CHF": {
+ "name": "CHF",
+ "symbol": "CHF"
+ },
+ "CLP": {
+ "name": "CLP",
+ "symbol": "CLP"
+ },
+ "CNY": {
+ "name": "CNY",
+ "symbol": "CNÂ¥"
+ },
+ "COP": {
+ "name": "COP",
+ "symbol": "COP"
+ },
+ "CRC": {
+ "name": "CRC",
+ "symbol": "CRC"
+ },
+ "CUC": {
+ "name": "CUC",
+ "symbol": "CUC"
+ },
+ "CUP": {
+ "name": "CUP",
+ "symbol": "CUP"
+ },
+ "CVE": {
+ "name": "CVE",
+ "symbol": "CVE"
+ },
+ "CZK": {
+ "name": "CZK",
+ "symbol": "CZK"
+ },
+ "DJF": {
+ "name": "DJF",
+ "symbol": "DJF"
+ },
+ "DKK": {
+ "name": "DKK",
+ "symbol": "DKK"
+ },
+ "DOP": {
+ "name": "DOP",
+ "symbol": "DOP"
+ },
+ "DZD": {
+ "name": "DZD",
+ "symbol": "DZD"
+ },
+ "EGP": {
+ "name": "EGP",
+ "symbol": "EGP"
+ },
+ "ERN": {
+ "name": "ERN",
+ "symbol": "ERN"
+ },
+ "ETB": {
+ "name": "ETB",
+ "symbol": "ETB"
+ },
+ "EUR": {
+ "name": "EUR",
+ "symbol": "€"
+ },
+ "FJD": {
+ "name": "FJD",
+ "symbol": "FJD"
+ },
+ "FKP": {
+ "name": "FKP",
+ "symbol": "FKP"
+ },
+ "GBP": {
+ "name": "GBP",
+ "symbol": "£"
+ },
+ "GEL": {
+ "name": "GEL",
+ "symbol": "GEL"
+ },
+ "GHS": {
+ "name": "GHS",
+ "symbol": "GHS"
+ },
+ "GIP": {
+ "name": "GIP",
+ "symbol": "GIP"
+ },
+ "GMD": {
+ "name": "GMD",
+ "symbol": "GMD"
+ },
+ "GNF": {
+ "name": "GNF",
+ "symbol": "GNF"
+ },
+ "GTQ": {
+ "name": "GTQ",
+ "symbol": "GTQ"
+ },
+ "GYD": {
+ "name": "GYD",
+ "symbol": "GYD"
+ },
+ "HKD": {
+ "name": "HKD",
+ "symbol": "HK$"
+ },
+ "HNL": {
+ "name": "HNL",
+ "symbol": "HNL"
+ },
+ "HRK": {
+ "name": "HRK",
+ "symbol": "HRK"
+ },
+ "HTG": {
+ "name": "HTG",
+ "symbol": "HTG"
+ },
+ "HUF": {
+ "name": "HUF",
+ "symbol": "HUF"
+ },
+ "IDR": {
+ "name": "IDR",
+ "symbol": "IDR"
+ },
+ "ILS": {
+ "name": "ILS",
+ "symbol": "₪"
+ },
+ "INR": {
+ "name": "INR",
+ "symbol": "₹"
+ },
+ "IQD": {
+ "name": "IQD",
+ "symbol": "IQD"
+ },
+ "IRR": {
+ "name": "IRR",
+ "symbol": "IRR"
+ },
+ "ISK": {
+ "name": "ISK",
+ "symbol": "ISK"
+ },
+ "JMD": {
+ "name": "JMD",
+ "symbol": "JMD"
+ },
+ "JOD": {
+ "name": "JOD",
+ "symbol": "JOD"
+ },
+ "JPY": {
+ "name": "JPY",
+ "symbol": "JPÂ¥"
+ },
+ "KES": {
+ "name": "KES",
+ "symbol": "KES"
+ },
+ "KGS": {
+ "name": "KGS",
+ "symbol": "KGS"
+ },
+ "KHR": {
+ "name": "KHR",
+ "symbol": "KHR"
+ },
+ "KMF": {
+ "name": "KMF",
+ "symbol": "KMF"
+ },
+ "KPW": {
+ "name": "KPW",
+ "symbol": "KPW"
+ },
+ "KRW": {
+ "name": "KRW",
+ "symbol": "â‚©"
+ },
+ "KWD": {
+ "name": "KWD",
+ "symbol": "KWD"
+ },
+ "KYD": {
+ "name": "KYD",
+ "symbol": "KYD"
+ },
+ "KZT": {
+ "name": "KZT",
+ "symbol": "KZT"
+ },
+ "LAK": {
+ "name": "LAK",
+ "symbol": "LAK"
+ },
+ "LBP": {
+ "name": "LBP",
+ "symbol": "LBP"
+ },
+ "LKR": {
+ "name": "LKR",
+ "symbol": "LKR"
+ },
+ "LRD": {
+ "name": "LRD",
+ "symbol": "LRD"
+ },
+ "LSL": {
+ "name": "LSL",
+ "symbol": "LSL"
+ },
+ "LTL": {
+ "name": "LTL",
+ "symbol": "LTL"
+ },
+ "LYD": {
+ "name": "LYD",
+ "symbol": "LYD"
+ },
+ "MAD": {
+ "name": "MAD",
+ "symbol": "MAD"
+ },
+ "MDL": {
+ "name": "MDL",
+ "symbol": "MDL"
+ },
+ "MGA": {
+ "name": "MGA",
+ "symbol": "MGA"
+ },
+ "MKD": {
+ "name": "MKD",
+ "symbol": "MKD"
+ },
+ "MMK": {
+ "name": "MMK",
+ "symbol": "MMK"
+ },
+ "MNT": {
+ "name": "MNT",
+ "symbol": "MNT"
+ },
+ "MOP": {
+ "name": "MOP",
+ "symbol": "MOP"
+ },
+ "MRO": {
+ "name": "MRO",
+ "symbol": "MRO"
+ },
+ "MUR": {
+ "name": "MUR",
+ "symbol": "MUR"
+ },
+ "MVR": {
+ "name": "MVR",
+ "symbol": "MVR"
+ },
+ "MWK": {
+ "name": "MWK",
+ "symbol": "MWK"
+ },
+ "MXN": {
+ "name": "MXN",
+ "symbol": "MX$"
+ },
+ "MYR": {
+ "name": "MYR",
+ "symbol": "MYR"
+ },
+ "MZN": {
+ "name": "MZN",
+ "symbol": "MZN"
+ },
+ "NAD": {
+ "name": "NAD",
+ "symbol": "NAD"
+ },
+ "NGN": {
+ "name": "NGN",
+ "symbol": "NGN"
+ },
+ "NIO": {
+ "name": "NIO",
+ "symbol": "NIO"
+ },
+ "NOK": {
+ "name": "NOK",
+ "symbol": "NOK"
+ },
+ "NPR": {
+ "name": "NPR",
+ "symbol": "NPR"
+ },
+ "NZD": {
+ "name": "NZD",
+ "symbol": "NZ$"
+ },
+ "OMR": {
+ "name": "OMR",
+ "symbol": "OMR"
+ },
+ "PAB": {
+ "name": "PAB",
+ "symbol": "PAB"
+ },
+ "PEN": {
+ "name": "PEN",
+ "symbol": "PEN"
+ },
+ "PGK": {
+ "name": "PGK",
+ "symbol": "PGK"
+ },
+ "PHP": {
+ "name": "PHP",
+ "symbol": "PHP"
+ },
+ "PKR": {
+ "name": "PKR",
+ "symbol": "PKR"
+ },
+ "PLN": {
+ "name": "PLN",
+ "symbol": "PLN"
+ },
+ "PYG": {
+ "name": "PYG",
+ "symbol": "PYG"
+ },
+ "QAR": {
+ "name": "QAR",
+ "symbol": "QAR"
+ },
+ "RON": {
+ "name": "RON",
+ "symbol": "RON"
+ },
+ "RSD": {
+ "name": "RSD",
+ "symbol": "RSD"
+ },
+ "RUB": {
+ "name": "RUB",
+ "symbol": "RUB"
+ },
+ "RWF": {
+ "name": "RWF",
+ "symbol": "RWF"
+ },
+ "SAR": {
+ "name": "SAR",
+ "symbol": "SAR"
+ },
+ "SBD": {
+ "name": "SBD",
+ "symbol": "SBD"
+ },
+ "SCR": {
+ "name": "SCR",
+ "symbol": "SCR"
+ },
+ "SDG": {
+ "name": "SDG",
+ "symbol": "SDG"
+ },
+ "SEK": {
+ "name": "SEK",
+ "symbol": "SEK"
+ },
+ "SGD": {
+ "name": "SGD",
+ "symbol": "SGD"
+ },
+ "SHP": {
+ "name": "SHP",
+ "symbol": "SHP"
+ },
+ "SLL": {
+ "name": "SLL",
+ "symbol": "SLL"
+ },
+ "SOS": {
+ "name": "SOS",
+ "symbol": "SOS"
+ },
+ "SRD": {
+ "name": "SRD",
+ "symbol": "SRD"
+ },
+ "SSP": {
+ "name": "SSP",
+ "symbol": "SSP"
+ },
+ "STD": {
+ "name": "STD",
+ "symbol": "STD"
+ },
+ "SVC": {
+ "name": "SVC",
+ "symbol": "SVC"
+ },
+ "SYP": {
+ "name": "SYP",
+ "symbol": "SYP"
+ },
+ "SZL": {
+ "name": "SZL",
+ "symbol": "SZL"
+ },
+ "THB": {
+ "name": "THB",
+ "symbol": "THB"
+ },
+ "TJS": {
+ "name": "TJS",
+ "symbol": "TJS"
+ },
+ "TMT": {
+ "name": "TMT",
+ "symbol": "TMT"
+ },
+ "TND": {
+ "name": "TND",
+ "symbol": "TND"
+ },
+ "TOP": {
+ "name": "TOP",
+ "symbol": "TOP"
+ },
+ "TRY": {
+ "name": "TRY",
+ "symbol": "TRY"
+ },
+ "TTD": {
+ "name": "TTD",
+ "symbol": "TTD"
+ },
+ "TWD": {
+ "name": "TWD",
+ "symbol": "NT$"
+ },
+ "TZS": {
+ "name": "TZS",
+ "symbol": "TZS"
+ },
+ "UAH": {
+ "name": "UAH",
+ "symbol": "UAH"
+ },
+ "UGX": {
+ "name": "UGX",
+ "symbol": "UGX"
+ },
+ "USD": {
+ "name": "USD",
+ "symbol": "US$"
+ },
+ "UYU": {
+ "name": "UYU",
+ "symbol": "UYU"
+ },
+ "UZS": {
+ "name": "UZS",
+ "symbol": "UZS"
+ },
+ "VEF": {
+ "name": "VEF",
+ "symbol": "VEF"
+ },
+ "VND": {
+ "name": "VND",
+ "symbol": "â‚«"
+ },
+ "VUV": {
+ "name": "VUV",
+ "symbol": "VUV"
+ },
+ "WST": {
+ "name": "WST",
+ "symbol": "WST"
+ },
+ "XAF": {
+ "name": "XAF",
+ "symbol": "FCFA"
+ },
+ "XCD": {
+ "name": "XCD",
+ "symbol": "EC$"
+ },
+ "XOF": {
+ "name": "XOF",
+ "symbol": "CFA"
+ },
+ "XPF": {
+ "name": "XPF",
+ "symbol": "CFPF"
+ },
+ "YER": {
+ "name": "YER",
+ "symbol": "YER"
+ },
+ "ZAR": {
+ "name": "ZAR",
+ "symbol": "ZAR"
+ },
+ "ZMW": {
+ "name": "ZMW",
+ "symbol": "ZMW"
+ },
+ "ZWL": {
+ "name": "ZWL",
+ "symbol": "ZWL"
+ },
+ "AFN": {
+ "name": "اÙغانÛ",
+ "symbol": "Ø‹"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/currency/pt-AO.json b/library/intl/resources/currency/pt-AO.json
new file mode 100644
index 000000000..844336fb4
--- /dev/null
+++ b/library/intl/resources/currency/pt-AO.json
@@ -0,0 +1,634 @@
+{
+ "AFN": {
+ "name": "Afegani do Afeganistão",
+ "symbol": "AFN"
+ },
+ "MGA": {
+ "name": "Ariari de Madagáscar",
+ "symbol": "MGA"
+ },
+ "THB": {
+ "name": "Baht da Tailândia",
+ "symbol": "฿"
+ },
+ "PAB": {
+ "name": "Balboa do Panamá",
+ "symbol": "PAB"
+ },
+ "ETB": {
+ "name": "Birr etíope",
+ "symbol": "ETB"
+ },
+ "VEF": {
+ "name": "Bolívar venezuelano",
+ "symbol": "VEF"
+ },
+ "BOB": {
+ "name": "Boliviano",
+ "symbol": "BOB"
+ },
+ "GHS": {
+ "name": "Cedi de Gana",
+ "symbol": "GHS"
+ },
+ "SVC": {
+ "name": "Colom salvadorenho",
+ "symbol": "SVC"
+ },
+ "CRC": {
+ "name": "Colon costa-riquenho",
+ "symbol": "CRC"
+ },
+ "NIO": {
+ "name": "Córdoba de ouro da Nicarágua",
+ "symbol": "NIO"
+ },
+ "CZK": {
+ "name": "Coroa checa",
+ "symbol": "CZK"
+ },
+ "DKK": {
+ "name": "Coroa dinamarquesa",
+ "symbol": "DKK"
+ },
+ "ISK": {
+ "name": "Coroa islandesa",
+ "symbol": "ISK"
+ },
+ "NOK": {
+ "name": "Coroa norueguesa",
+ "symbol": "NOK"
+ },
+ "SEK": {
+ "name": "Coroa sueca",
+ "symbol": "SEK"
+ },
+ "GMD": {
+ "name": "Dalasi da Gâmbia",
+ "symbol": "GMD"
+ },
+ "DZD": {
+ "name": "Dinar argelino",
+ "symbol": "DZD"
+ },
+ "BHD": {
+ "name": "Dinar baremita",
+ "symbol": "BHD"
+ },
+ "IQD": {
+ "name": "Dinar iraquiano",
+ "symbol": "IQD"
+ },
+ "JOD": {
+ "name": "Dinar jordaniano",
+ "symbol": "JOD"
+ },
+ "KWD": {
+ "name": "Dinar kuwaitiano",
+ "symbol": "KWD"
+ },
+ "LYD": {
+ "name": "Dinar líbio",
+ "symbol": "LYD"
+ },
+ "MKD": {
+ "name": "Dinar macedónio",
+ "symbol": "MKD"
+ },
+ "RSD": {
+ "name": "Dinar sérvio",
+ "symbol": "RSD"
+ },
+ "TND": {
+ "name": "Dinar tunisino",
+ "symbol": "TND"
+ },
+ "AED": {
+ "name": "Dirham dos Emirados Ãrabes Unidos",
+ "symbol": "AED"
+ },
+ "MAD": {
+ "name": "Dirham marroquino",
+ "symbol": "MAD"
+ },
+ "STD": {
+ "name": "Dobra de São Tomé e Príncipe",
+ "symbol": "STD"
+ },
+ "AUD": {
+ "name": "Dólar australiano",
+ "symbol": "AU$"
+ },
+ "BBD": {
+ "name": "Dólar barbadense",
+ "symbol": "BBD"
+ },
+ "BZD": {
+ "name": "Dólar belizense",
+ "symbol": "BZD"
+ },
+ "BMD": {
+ "name": "Dólar bermudense",
+ "symbol": "BMD"
+ },
+ "BND": {
+ "name": "Dólar bruneíno",
+ "symbol": "BND"
+ },
+ "CAD": {
+ "name": "Dólar canadiano",
+ "symbol": "CA$"
+ },
+ "GYD": {
+ "name": "Dólar da Guiana",
+ "symbol": "GYD"
+ },
+ "NAD": {
+ "name": "Dólar da Namíbia",
+ "symbol": "NAD"
+ },
+ "BSD": {
+ "name": "Dólar das Bahamas",
+ "symbol": "BSD"
+ },
+ "XCD": {
+ "name": "Dólar das Caraíbas Orientais",
+ "symbol": "EC$"
+ },
+ "KYD": {
+ "name": "Dólar das Ilhas Caimão",
+ "symbol": "KYD"
+ },
+ "SBD": {
+ "name": "Dólar das Ilhas Salomão",
+ "symbol": "SBD"
+ },
+ "FJD": {
+ "name": "Dólar de Fiji",
+ "symbol": "FJD"
+ },
+ "HKD": {
+ "name": "Dólar de Hong Kong",
+ "symbol": "HK$"
+ },
+ "SGD": {
+ "name": "Dólar de Singapura",
+ "symbol": "SGD"
+ },
+ "TTD": {
+ "name": "Dólar de Trindade e Tobago",
+ "symbol": "TTD"
+ },
+ "SRD": {
+ "name": "Dólar do Suriname",
+ "symbol": "SRD"
+ },
+ "ZWL": {
+ "name": "Dólar do Zimbábue (2009)",
+ "symbol": "ZWL"
+ },
+ "USD": {
+ "name": "Dólar dos Estados Unidos",
+ "symbol": "US$"
+ },
+ "JMD": {
+ "name": "Dólar jamaicano",
+ "symbol": "JMD"
+ },
+ "LRD": {
+ "name": "Dólar liberiano",
+ "symbol": "LRD"
+ },
+ "NZD": {
+ "name": "Dólar neozelandês",
+ "symbol": "NZ$"
+ },
+ "VND": {
+ "name": "Dong vietnamita",
+ "symbol": "â‚«"
+ },
+ "AMD": {
+ "name": "Dram arménio",
+ "symbol": "AMD"
+ },
+ "CVE": {
+ "name": "Escudo cabo-verdiano",
+ "symbol": "CVE"
+ },
+ "EUR": {
+ "name": "Euro",
+ "symbol": "€"
+ },
+ "ANG": {
+ "name": "Florim das Antilhas Holandesas",
+ "symbol": "ANG"
+ },
+ "AWG": {
+ "name": "Florim de Aruba",
+ "symbol": "AWG"
+ },
+ "HUF": {
+ "name": "Forint húngaro",
+ "symbol": "HUF"
+ },
+ "BIF": {
+ "name": "Franco burundiano",
+ "symbol": "BIF"
+ },
+ "XOF": {
+ "name": "Franco CFA (BCEAO)",
+ "symbol": "CFA"
+ },
+ "XAF": {
+ "name": "Franco CFA (BEAC)",
+ "symbol": "FCFA"
+ },
+ "XPF": {
+ "name": "Franco CFP",
+ "symbol": "CFPF"
+ },
+ "KMF": {
+ "name": "Franco comoriano",
+ "symbol": "KMF"
+ },
+ "CDF": {
+ "name": "Franco congolês",
+ "symbol": "CDF"
+ },
+ "GNF": {
+ "name": "Franco guineense",
+ "symbol": "GNF"
+ },
+ "DJF": {
+ "name": "Franco jibutiano",
+ "symbol": "DJF"
+ },
+ "RWF": {
+ "name": "Franco ruandês",
+ "symbol": "RWF"
+ },
+ "CHF": {
+ "name": "Franco suíço",
+ "symbol": "CHF"
+ },
+ "HTG": {
+ "name": "Gourde haitiano",
+ "symbol": "HTG"
+ },
+ "PYG": {
+ "name": "Guarani paraguaio",
+ "symbol": "PYG"
+ },
+ "UAH": {
+ "name": "Hryvnia da Ucrânia",
+ "symbol": "UAH"
+ },
+ "JPY": {
+ "name": "Iene japonês",
+ "symbol": "JPÂ¥"
+ },
+ "PGK": {
+ "name": "Kina da Papua-Nova Guiné",
+ "symbol": "PGK"
+ },
+ "LAK": {
+ "name": "Kip de Laos",
+ "symbol": "LAK"
+ },
+ "HRK": {
+ "name": "Kuna croata",
+ "symbol": "HRK"
+ },
+ "MWK": {
+ "name": "Kwacha do Malawi",
+ "symbol": "MWK"
+ },
+ "ZMW": {
+ "name": "Kwacha zambiano",
+ "symbol": "ZMW"
+ },
+ "AOA": {
+ "name": "Kwanza angolano",
+ "symbol": "Kz"
+ },
+ "MMK": {
+ "name": "Kyat de Mianmar",
+ "symbol": "MMK"
+ },
+ "GEL": {
+ "name": "Lari georgiano",
+ "symbol": "GEL"
+ },
+ "ALL": {
+ "name": "Lek albanês",
+ "symbol": "ALL"
+ },
+ "HNL": {
+ "name": "Lempira das Honduras",
+ "symbol": "HNL"
+ },
+ "SLL": {
+ "name": "Leone de Serra Leoa",
+ "symbol": "SLL"
+ },
+ "MDL": {
+ "name": "Leu moldavo",
+ "symbol": "MDL"
+ },
+ "RON": {
+ "name": "Leu romeno",
+ "symbol": "RON"
+ },
+ "BGN": {
+ "name": "Lev búlgaro",
+ "symbol": "BGN"
+ },
+ "FKP": {
+ "name": "Libra das Ilhas Falkland",
+ "symbol": "FKP"
+ },
+ "GIP": {
+ "name": "Libra de Gibraltar",
+ "symbol": "GIP"
+ },
+ "SHP": {
+ "name": "Libra de Santa Helena",
+ "symbol": "SHP"
+ },
+ "EGP": {
+ "name": "Libra egípcia",
+ "symbol": "EGP"
+ },
+ "GBP": {
+ "name": "Libra esterlina britânica",
+ "symbol": "£"
+ },
+ "LBP": {
+ "name": "Libra libanesa",
+ "symbol": "LBP"
+ },
+ "SYP": {
+ "name": "Libra síria",
+ "symbol": "SYP"
+ },
+ "SDG": {
+ "name": "Libra sudanesa",
+ "symbol": "SDG"
+ },
+ "SSP": {
+ "name": "Libra sul-sudanesa",
+ "symbol": "SSP"
+ },
+ "SZL": {
+ "name": "Lilangeni da Suazilândia",
+ "symbol": "SZL"
+ },
+ "TRY": {
+ "name": "Lira turca",
+ "symbol": "TRY"
+ },
+ "LTL": {
+ "name": "Litas da Lituânia",
+ "symbol": "LTL"
+ },
+ "LSL": {
+ "name": "Loti do Lesoto",
+ "symbol": "LSL"
+ },
+ "AZN": {
+ "name": "Manat do Azerbaijão",
+ "symbol": "AZN"
+ },
+ "TMT": {
+ "name": "Manat do Turquemenistão",
+ "symbol": "TMT"
+ },
+ "BAM": {
+ "name": "Marco bósnio-herzegóvino conversível",
+ "symbol": "BAM"
+ },
+ "MZN": {
+ "name": "Metical de Moçambique",
+ "symbol": "MZN"
+ },
+ "NGN": {
+ "name": "Naira nigeriana",
+ "symbol": "NGN"
+ },
+ "ERN": {
+ "name": "Nakfa da Eritreia",
+ "symbol": "ERN"
+ },
+ "BTN": {
+ "name": "Ngultrum do Butão",
+ "symbol": "BTN"
+ },
+ "TWD": {
+ "name": "Novo dólar taiwanês",
+ "symbol": "NT$"
+ },
+ "PEN": {
+ "name": "Novo sol peruano",
+ "symbol": "PEN"
+ },
+ "MRO": {
+ "name": "Ouguiya da Mauritânia",
+ "symbol": "MRO"
+ },
+ "TOP": {
+ "name": "Paʻanga de Tonga",
+ "symbol": "TOP"
+ },
+ "MOP": {
+ "name": "Pataca de Macau",
+ "symbol": "MOP"
+ },
+ "ARS": {
+ "name": "Peso argentino",
+ "symbol": "ARS"
+ },
+ "CLP": {
+ "name": "Peso chileno",
+ "symbol": "CLP"
+ },
+ "COP": {
+ "name": "Peso colombiano",
+ "symbol": "COP"
+ },
+ "CUP": {
+ "name": "Peso cubano",
+ "symbol": "CUP"
+ },
+ "CUC": {
+ "name": "Peso cubano conversível",
+ "symbol": "CUC"
+ },
+ "DOP": {
+ "name": "Peso dominicano",
+ "symbol": "DOP"
+ },
+ "PHP": {
+ "name": "Peso filipino",
+ "symbol": "PHP"
+ },
+ "MXN": {
+ "name": "Peso mexicano",
+ "symbol": "MX$"
+ },
+ "UYU": {
+ "name": "Peso uruguaio",
+ "symbol": "UYU"
+ },
+ "BWP": {
+ "name": "Pula de Botswana",
+ "symbol": "BWP"
+ },
+ "GTQ": {
+ "name": "Quetzal da Guatemala",
+ "symbol": "GTQ"
+ },
+ "ZAR": {
+ "name": "Rand sul-africano",
+ "symbol": "ZAR"
+ },
+ "BRL": {
+ "name": "Real brasileiro",
+ "symbol": "R$"
+ },
+ "OMR": {
+ "name": "Rial de Omã",
+ "symbol": "OMR"
+ },
+ "QAR": {
+ "name": "Rial do Catar",
+ "symbol": "QAR"
+ },
+ "YER": {
+ "name": "Rial iemenita",
+ "symbol": "YER"
+ },
+ "IRR": {
+ "name": "Rial iraniano",
+ "symbol": "IRR"
+ },
+ "SAR": {
+ "name": "Rial saudita",
+ "symbol": "SAR"
+ },
+ "KHR": {
+ "name": "Riel cambojano",
+ "symbol": "KHR"
+ },
+ "MYR": {
+ "name": "Ringgit malaio",
+ "symbol": "MYR"
+ },
+ "BYR": {
+ "name": "Rublo bielorrusso",
+ "symbol": "BYR"
+ },
+ "RUB": {
+ "name": "Rublo russo",
+ "symbol": "RUB"
+ },
+ "MVR": {
+ "name": "Rupia das Ilhas Maldivas",
+ "symbol": "MVR"
+ },
+ "LKR": {
+ "name": "Rupia do Sri Lanka",
+ "symbol": "LKR"
+ },
+ "INR": {
+ "name": "Rupia indiana",
+ "symbol": "₹"
+ },
+ "IDR": {
+ "name": "Rupia indonésia",
+ "symbol": "IDR"
+ },
+ "MUR": {
+ "name": "Rupia mauriciana",
+ "symbol": "MUR"
+ },
+ "NPR": {
+ "name": "Rupia nepalesa",
+ "symbol": "NPR"
+ },
+ "PKR": {
+ "name": "Rupia paquistanesa",
+ "symbol": "PKR"
+ },
+ "SCR": {
+ "name": "Rupia seichelense",
+ "symbol": "SCR"
+ },
+ "ILS": {
+ "name": "Sheqel novo israelita",
+ "symbol": "₪"
+ },
+ "KGS": {
+ "name": "Som do Quirguistão",
+ "symbol": "KGS"
+ },
+ "UZS": {
+ "name": "Som do Uzbequistão",
+ "symbol": "UZS"
+ },
+ "TJS": {
+ "name": "Somoni do Tajaquistão",
+ "symbol": "TJS"
+ },
+ "BDT": {
+ "name": "Taka de Bangladesh",
+ "symbol": "BDT"
+ },
+ "WST": {
+ "name": "Tala samoano",
+ "symbol": "WST"
+ },
+ "KZT": {
+ "name": "Tenge do Cazaquistão",
+ "symbol": "KZT"
+ },
+ "MNT": {
+ "name": "Tugrik da Mongólia",
+ "symbol": "MNT"
+ },
+ "VUV": {
+ "name": "Vatu de Vanuatu",
+ "symbol": "VUV"
+ },
+ "KPW": {
+ "name": "Won norte-coreano",
+ "symbol": "KPW"
+ },
+ "KRW": {
+ "name": "Won sul-coreano",
+ "symbol": "â‚©"
+ },
+ "KES": {
+ "name": "Xelim queniano",
+ "symbol": "KES"
+ },
+ "SOS": {
+ "name": "Xelim somali",
+ "symbol": "SOS"
+ },
+ "TZS": {
+ "name": "Xelim tanzaniano",
+ "symbol": "TZS"
+ },
+ "UGX": {
+ "name": "Xelim ugandense",
+ "symbol": "UGX"
+ },
+ "CNY": {
+ "name": "Yuan chinês",
+ "symbol": "CNÂ¥"
+ },
+ "PLN": {
+ "name": "Zloti polaco",
+ "symbol": "PLN"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/currency/pt-CV.json b/library/intl/resources/currency/pt-CV.json
new file mode 100644
index 000000000..b9dd815a0
--- /dev/null
+++ b/library/intl/resources/currency/pt-CV.json
@@ -0,0 +1,634 @@
+{
+ "AFN": {
+ "name": "Afegani do Afeganistão",
+ "symbol": "AFN"
+ },
+ "MGA": {
+ "name": "Ariari de Madagáscar",
+ "symbol": "MGA"
+ },
+ "THB": {
+ "name": "Baht da Tailândia",
+ "symbol": "฿"
+ },
+ "PAB": {
+ "name": "Balboa do Panamá",
+ "symbol": "PAB"
+ },
+ "ETB": {
+ "name": "Birr etíope",
+ "symbol": "ETB"
+ },
+ "VEF": {
+ "name": "Bolívar venezuelano",
+ "symbol": "VEF"
+ },
+ "BOB": {
+ "name": "Boliviano",
+ "symbol": "BOB"
+ },
+ "GHS": {
+ "name": "Cedi de Gana",
+ "symbol": "GHS"
+ },
+ "SVC": {
+ "name": "Colom salvadorenho",
+ "symbol": "SVC"
+ },
+ "CRC": {
+ "name": "Colon costa-riquenho",
+ "symbol": "CRC"
+ },
+ "NIO": {
+ "name": "Córdoba de ouro da Nicarágua",
+ "symbol": "NIO"
+ },
+ "CZK": {
+ "name": "Coroa checa",
+ "symbol": "CZK"
+ },
+ "DKK": {
+ "name": "Coroa dinamarquesa",
+ "symbol": "DKK"
+ },
+ "ISK": {
+ "name": "Coroa islandesa",
+ "symbol": "ISK"
+ },
+ "NOK": {
+ "name": "Coroa norueguesa",
+ "symbol": "NOK"
+ },
+ "SEK": {
+ "name": "Coroa sueca",
+ "symbol": "SEK"
+ },
+ "GMD": {
+ "name": "Dalasi da Gâmbia",
+ "symbol": "GMD"
+ },
+ "DZD": {
+ "name": "Dinar argelino",
+ "symbol": "DZD"
+ },
+ "BHD": {
+ "name": "Dinar baremita",
+ "symbol": "BHD"
+ },
+ "IQD": {
+ "name": "Dinar iraquiano",
+ "symbol": "IQD"
+ },
+ "JOD": {
+ "name": "Dinar jordaniano",
+ "symbol": "JOD"
+ },
+ "KWD": {
+ "name": "Dinar kuwaitiano",
+ "symbol": "KWD"
+ },
+ "LYD": {
+ "name": "Dinar líbio",
+ "symbol": "LYD"
+ },
+ "MKD": {
+ "name": "Dinar macedónio",
+ "symbol": "MKD"
+ },
+ "RSD": {
+ "name": "Dinar sérvio",
+ "symbol": "RSD"
+ },
+ "TND": {
+ "name": "Dinar tunisino",
+ "symbol": "TND"
+ },
+ "AED": {
+ "name": "Dirham dos Emirados Ãrabes Unidos",
+ "symbol": "AED"
+ },
+ "MAD": {
+ "name": "Dirham marroquino",
+ "symbol": "MAD"
+ },
+ "STD": {
+ "name": "Dobra de São Tomé e Príncipe",
+ "symbol": "STD"
+ },
+ "AUD": {
+ "name": "Dólar australiano",
+ "symbol": "AU$"
+ },
+ "BBD": {
+ "name": "Dólar barbadense",
+ "symbol": "BBD"
+ },
+ "BZD": {
+ "name": "Dólar belizense",
+ "symbol": "BZD"
+ },
+ "BMD": {
+ "name": "Dólar bermudense",
+ "symbol": "BMD"
+ },
+ "BND": {
+ "name": "Dólar bruneíno",
+ "symbol": "BND"
+ },
+ "CAD": {
+ "name": "Dólar canadiano",
+ "symbol": "CA$"
+ },
+ "GYD": {
+ "name": "Dólar da Guiana",
+ "symbol": "GYD"
+ },
+ "NAD": {
+ "name": "Dólar da Namíbia",
+ "symbol": "NAD"
+ },
+ "BSD": {
+ "name": "Dólar das Bahamas",
+ "symbol": "BSD"
+ },
+ "XCD": {
+ "name": "Dólar das Caraíbas Orientais",
+ "symbol": "EC$"
+ },
+ "KYD": {
+ "name": "Dólar das Ilhas Caimão",
+ "symbol": "KYD"
+ },
+ "SBD": {
+ "name": "Dólar das Ilhas Salomão",
+ "symbol": "SBD"
+ },
+ "FJD": {
+ "name": "Dólar de Fiji",
+ "symbol": "FJD"
+ },
+ "HKD": {
+ "name": "Dólar de Hong Kong",
+ "symbol": "HK$"
+ },
+ "SGD": {
+ "name": "Dólar de Singapura",
+ "symbol": "SGD"
+ },
+ "TTD": {
+ "name": "Dólar de Trindade e Tobago",
+ "symbol": "TTD"
+ },
+ "SRD": {
+ "name": "Dólar do Suriname",
+ "symbol": "SRD"
+ },
+ "ZWL": {
+ "name": "Dólar do Zimbábue (2009)",
+ "symbol": "ZWL"
+ },
+ "USD": {
+ "name": "Dólar dos Estados Unidos",
+ "symbol": "US$"
+ },
+ "JMD": {
+ "name": "Dólar jamaicano",
+ "symbol": "JMD"
+ },
+ "LRD": {
+ "name": "Dólar liberiano",
+ "symbol": "LRD"
+ },
+ "NZD": {
+ "name": "Dólar neozelandês",
+ "symbol": "NZ$"
+ },
+ "VND": {
+ "name": "Dong vietnamita",
+ "symbol": "â‚«"
+ },
+ "AMD": {
+ "name": "Dram arménio",
+ "symbol": "AMD"
+ },
+ "CVE": {
+ "name": "Escudo cabo-verdiano",
+ "symbol": "​"
+ },
+ "EUR": {
+ "name": "Euro",
+ "symbol": "€"
+ },
+ "ANG": {
+ "name": "Florim das Antilhas Holandesas",
+ "symbol": "ANG"
+ },
+ "AWG": {
+ "name": "Florim de Aruba",
+ "symbol": "AWG"
+ },
+ "HUF": {
+ "name": "Forint húngaro",
+ "symbol": "HUF"
+ },
+ "BIF": {
+ "name": "Franco burundiano",
+ "symbol": "BIF"
+ },
+ "XOF": {
+ "name": "Franco CFA (BCEAO)",
+ "symbol": "CFA"
+ },
+ "XAF": {
+ "name": "Franco CFA (BEAC)",
+ "symbol": "FCFA"
+ },
+ "XPF": {
+ "name": "Franco CFP",
+ "symbol": "CFPF"
+ },
+ "KMF": {
+ "name": "Franco comoriano",
+ "symbol": "KMF"
+ },
+ "CDF": {
+ "name": "Franco congolês",
+ "symbol": "CDF"
+ },
+ "GNF": {
+ "name": "Franco guineense",
+ "symbol": "GNF"
+ },
+ "DJF": {
+ "name": "Franco jibutiano",
+ "symbol": "DJF"
+ },
+ "RWF": {
+ "name": "Franco ruandês",
+ "symbol": "RWF"
+ },
+ "CHF": {
+ "name": "Franco suíço",
+ "symbol": "CHF"
+ },
+ "HTG": {
+ "name": "Gourde haitiano",
+ "symbol": "HTG"
+ },
+ "PYG": {
+ "name": "Guarani paraguaio",
+ "symbol": "PYG"
+ },
+ "UAH": {
+ "name": "Hryvnia da Ucrânia",
+ "symbol": "UAH"
+ },
+ "JPY": {
+ "name": "Iene japonês",
+ "symbol": "JPÂ¥"
+ },
+ "PGK": {
+ "name": "Kina da Papua-Nova Guiné",
+ "symbol": "PGK"
+ },
+ "LAK": {
+ "name": "Kip de Laos",
+ "symbol": "LAK"
+ },
+ "HRK": {
+ "name": "Kuna croata",
+ "symbol": "HRK"
+ },
+ "MWK": {
+ "name": "Kwacha do Malawi",
+ "symbol": "MWK"
+ },
+ "ZMW": {
+ "name": "Kwacha zambiano",
+ "symbol": "ZMW"
+ },
+ "AOA": {
+ "name": "Kwanza angolano",
+ "symbol": "AOA"
+ },
+ "MMK": {
+ "name": "Kyat de Mianmar",
+ "symbol": "MMK"
+ },
+ "GEL": {
+ "name": "Lari georgiano",
+ "symbol": "GEL"
+ },
+ "ALL": {
+ "name": "Lek albanês",
+ "symbol": "ALL"
+ },
+ "HNL": {
+ "name": "Lempira das Honduras",
+ "symbol": "HNL"
+ },
+ "SLL": {
+ "name": "Leone de Serra Leoa",
+ "symbol": "SLL"
+ },
+ "MDL": {
+ "name": "Leu moldavo",
+ "symbol": "MDL"
+ },
+ "RON": {
+ "name": "Leu romeno",
+ "symbol": "RON"
+ },
+ "BGN": {
+ "name": "Lev búlgaro",
+ "symbol": "BGN"
+ },
+ "FKP": {
+ "name": "Libra das Ilhas Falkland",
+ "symbol": "FKP"
+ },
+ "GIP": {
+ "name": "Libra de Gibraltar",
+ "symbol": "GIP"
+ },
+ "SHP": {
+ "name": "Libra de Santa Helena",
+ "symbol": "SHP"
+ },
+ "EGP": {
+ "name": "Libra egípcia",
+ "symbol": "EGP"
+ },
+ "GBP": {
+ "name": "Libra esterlina britânica",
+ "symbol": "£"
+ },
+ "LBP": {
+ "name": "Libra libanesa",
+ "symbol": "LBP"
+ },
+ "SYP": {
+ "name": "Libra síria",
+ "symbol": "SYP"
+ },
+ "SDG": {
+ "name": "Libra sudanesa",
+ "symbol": "SDG"
+ },
+ "SSP": {
+ "name": "Libra sul-sudanesa",
+ "symbol": "SSP"
+ },
+ "SZL": {
+ "name": "Lilangeni da Suazilândia",
+ "symbol": "SZL"
+ },
+ "TRY": {
+ "name": "Lira turca",
+ "symbol": "TRY"
+ },
+ "LTL": {
+ "name": "Litas da Lituânia",
+ "symbol": "LTL"
+ },
+ "LSL": {
+ "name": "Loti do Lesoto",
+ "symbol": "LSL"
+ },
+ "AZN": {
+ "name": "Manat do Azerbaijão",
+ "symbol": "AZN"
+ },
+ "TMT": {
+ "name": "Manat do Turquemenistão",
+ "symbol": "TMT"
+ },
+ "BAM": {
+ "name": "Marco bósnio-herzegóvino conversível",
+ "symbol": "BAM"
+ },
+ "MZN": {
+ "name": "Metical de Moçambique",
+ "symbol": "MZN"
+ },
+ "NGN": {
+ "name": "Naira nigeriana",
+ "symbol": "NGN"
+ },
+ "ERN": {
+ "name": "Nakfa da Eritreia",
+ "symbol": "ERN"
+ },
+ "BTN": {
+ "name": "Ngultrum do Butão",
+ "symbol": "BTN"
+ },
+ "TWD": {
+ "name": "Novo dólar taiwanês",
+ "symbol": "NT$"
+ },
+ "PEN": {
+ "name": "Novo sol peruano",
+ "symbol": "PEN"
+ },
+ "MRO": {
+ "name": "Ouguiya da Mauritânia",
+ "symbol": "MRO"
+ },
+ "TOP": {
+ "name": "Paʻanga de Tonga",
+ "symbol": "TOP"
+ },
+ "MOP": {
+ "name": "Pataca de Macau",
+ "symbol": "MOP"
+ },
+ "ARS": {
+ "name": "Peso argentino",
+ "symbol": "ARS"
+ },
+ "CLP": {
+ "name": "Peso chileno",
+ "symbol": "CLP"
+ },
+ "COP": {
+ "name": "Peso colombiano",
+ "symbol": "COP"
+ },
+ "CUP": {
+ "name": "Peso cubano",
+ "symbol": "CUP"
+ },
+ "CUC": {
+ "name": "Peso cubano conversível",
+ "symbol": "CUC"
+ },
+ "DOP": {
+ "name": "Peso dominicano",
+ "symbol": "DOP"
+ },
+ "PHP": {
+ "name": "Peso filipino",
+ "symbol": "PHP"
+ },
+ "MXN": {
+ "name": "Peso mexicano",
+ "symbol": "MX$"
+ },
+ "UYU": {
+ "name": "Peso uruguaio",
+ "symbol": "UYU"
+ },
+ "BWP": {
+ "name": "Pula de Botswana",
+ "symbol": "BWP"
+ },
+ "GTQ": {
+ "name": "Quetzal da Guatemala",
+ "symbol": "GTQ"
+ },
+ "ZAR": {
+ "name": "Rand sul-africano",
+ "symbol": "ZAR"
+ },
+ "BRL": {
+ "name": "Real brasileiro",
+ "symbol": "R$"
+ },
+ "OMR": {
+ "name": "Rial de Omã",
+ "symbol": "OMR"
+ },
+ "QAR": {
+ "name": "Rial do Catar",
+ "symbol": "QAR"
+ },
+ "YER": {
+ "name": "Rial iemenita",
+ "symbol": "YER"
+ },
+ "IRR": {
+ "name": "Rial iraniano",
+ "symbol": "IRR"
+ },
+ "SAR": {
+ "name": "Rial saudita",
+ "symbol": "SAR"
+ },
+ "KHR": {
+ "name": "Riel cambojano",
+ "symbol": "KHR"
+ },
+ "MYR": {
+ "name": "Ringgit malaio",
+ "symbol": "MYR"
+ },
+ "BYR": {
+ "name": "Rublo bielorrusso",
+ "symbol": "BYR"
+ },
+ "RUB": {
+ "name": "Rublo russo",
+ "symbol": "RUB"
+ },
+ "MVR": {
+ "name": "Rupia das Ilhas Maldivas",
+ "symbol": "MVR"
+ },
+ "LKR": {
+ "name": "Rupia do Sri Lanka",
+ "symbol": "LKR"
+ },
+ "INR": {
+ "name": "Rupia indiana",
+ "symbol": "₹"
+ },
+ "IDR": {
+ "name": "Rupia indonésia",
+ "symbol": "IDR"
+ },
+ "MUR": {
+ "name": "Rupia mauriciana",
+ "symbol": "MUR"
+ },
+ "NPR": {
+ "name": "Rupia nepalesa",
+ "symbol": "NPR"
+ },
+ "PKR": {
+ "name": "Rupia paquistanesa",
+ "symbol": "PKR"
+ },
+ "SCR": {
+ "name": "Rupia seichelense",
+ "symbol": "SCR"
+ },
+ "ILS": {
+ "name": "Sheqel novo israelita",
+ "symbol": "₪"
+ },
+ "KGS": {
+ "name": "Som do Quirguistão",
+ "symbol": "KGS"
+ },
+ "UZS": {
+ "name": "Som do Uzbequistão",
+ "symbol": "UZS"
+ },
+ "TJS": {
+ "name": "Somoni do Tajaquistão",
+ "symbol": "TJS"
+ },
+ "BDT": {
+ "name": "Taka de Bangladesh",
+ "symbol": "BDT"
+ },
+ "WST": {
+ "name": "Tala samoano",
+ "symbol": "WST"
+ },
+ "KZT": {
+ "name": "Tenge do Cazaquistão",
+ "symbol": "KZT"
+ },
+ "MNT": {
+ "name": "Tugrik da Mongólia",
+ "symbol": "MNT"
+ },
+ "VUV": {
+ "name": "Vatu de Vanuatu",
+ "symbol": "VUV"
+ },
+ "KPW": {
+ "name": "Won norte-coreano",
+ "symbol": "KPW"
+ },
+ "KRW": {
+ "name": "Won sul-coreano",
+ "symbol": "â‚©"
+ },
+ "KES": {
+ "name": "Xelim queniano",
+ "symbol": "KES"
+ },
+ "SOS": {
+ "name": "Xelim somali",
+ "symbol": "SOS"
+ },
+ "TZS": {
+ "name": "Xelim tanzaniano",
+ "symbol": "TZS"
+ },
+ "UGX": {
+ "name": "Xelim ugandense",
+ "symbol": "UGX"
+ },
+ "CNY": {
+ "name": "Yuan chinês",
+ "symbol": "CNÂ¥"
+ },
+ "PLN": {
+ "name": "Zloti polaco",
+ "symbol": "PLN"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/currency/pt-GW.json b/library/intl/resources/currency/pt-GW.json
new file mode 100644
index 000000000..55534de6d
--- /dev/null
+++ b/library/intl/resources/currency/pt-GW.json
@@ -0,0 +1,634 @@
+{
+ "AFN": {
+ "name": "Afegani do Afeganistão",
+ "symbol": "AFN"
+ },
+ "MGA": {
+ "name": "Ariari de Madagáscar",
+ "symbol": "MGA"
+ },
+ "THB": {
+ "name": "Baht da Tailândia",
+ "symbol": "฿"
+ },
+ "PAB": {
+ "name": "Balboa do Panamá",
+ "symbol": "PAB"
+ },
+ "ETB": {
+ "name": "Birr etíope",
+ "symbol": "ETB"
+ },
+ "VEF": {
+ "name": "Bolívar venezuelano",
+ "symbol": "VEF"
+ },
+ "BOB": {
+ "name": "Boliviano",
+ "symbol": "BOB"
+ },
+ "GHS": {
+ "name": "Cedi de Gana",
+ "symbol": "GHS"
+ },
+ "SVC": {
+ "name": "Colom salvadorenho",
+ "symbol": "SVC"
+ },
+ "CRC": {
+ "name": "Colon costa-riquenho",
+ "symbol": "CRC"
+ },
+ "NIO": {
+ "name": "Córdoba de ouro da Nicarágua",
+ "symbol": "NIO"
+ },
+ "CZK": {
+ "name": "Coroa checa",
+ "symbol": "CZK"
+ },
+ "DKK": {
+ "name": "Coroa dinamarquesa",
+ "symbol": "DKK"
+ },
+ "ISK": {
+ "name": "Coroa islandesa",
+ "symbol": "ISK"
+ },
+ "NOK": {
+ "name": "Coroa norueguesa",
+ "symbol": "NOK"
+ },
+ "SEK": {
+ "name": "Coroa sueca",
+ "symbol": "SEK"
+ },
+ "GMD": {
+ "name": "Dalasi da Gâmbia",
+ "symbol": "GMD"
+ },
+ "DZD": {
+ "name": "Dinar argelino",
+ "symbol": "DZD"
+ },
+ "BHD": {
+ "name": "Dinar baremita",
+ "symbol": "BHD"
+ },
+ "IQD": {
+ "name": "Dinar iraquiano",
+ "symbol": "IQD"
+ },
+ "JOD": {
+ "name": "Dinar jordaniano",
+ "symbol": "JOD"
+ },
+ "KWD": {
+ "name": "Dinar kuwaitiano",
+ "symbol": "KWD"
+ },
+ "LYD": {
+ "name": "Dinar líbio",
+ "symbol": "LYD"
+ },
+ "MKD": {
+ "name": "Dinar macedónio",
+ "symbol": "MKD"
+ },
+ "RSD": {
+ "name": "Dinar sérvio",
+ "symbol": "RSD"
+ },
+ "TND": {
+ "name": "Dinar tunisino",
+ "symbol": "TND"
+ },
+ "AED": {
+ "name": "Dirham dos Emirados Ãrabes Unidos",
+ "symbol": "AED"
+ },
+ "MAD": {
+ "name": "Dirham marroquino",
+ "symbol": "MAD"
+ },
+ "STD": {
+ "name": "Dobra de São Tomé e Príncipe",
+ "symbol": "STD"
+ },
+ "AUD": {
+ "name": "Dólar australiano",
+ "symbol": "AU$"
+ },
+ "BBD": {
+ "name": "Dólar barbadense",
+ "symbol": "BBD"
+ },
+ "BZD": {
+ "name": "Dólar belizense",
+ "symbol": "BZD"
+ },
+ "BMD": {
+ "name": "Dólar bermudense",
+ "symbol": "BMD"
+ },
+ "BND": {
+ "name": "Dólar bruneíno",
+ "symbol": "BND"
+ },
+ "CAD": {
+ "name": "Dólar canadiano",
+ "symbol": "CA$"
+ },
+ "GYD": {
+ "name": "Dólar da Guiana",
+ "symbol": "GYD"
+ },
+ "NAD": {
+ "name": "Dólar da Namíbia",
+ "symbol": "NAD"
+ },
+ "BSD": {
+ "name": "Dólar das Bahamas",
+ "symbol": "BSD"
+ },
+ "XCD": {
+ "name": "Dólar das Caraíbas Orientais",
+ "symbol": "EC$"
+ },
+ "KYD": {
+ "name": "Dólar das Ilhas Caimão",
+ "symbol": "KYD"
+ },
+ "SBD": {
+ "name": "Dólar das Ilhas Salomão",
+ "symbol": "SBD"
+ },
+ "FJD": {
+ "name": "Dólar de Fiji",
+ "symbol": "FJD"
+ },
+ "HKD": {
+ "name": "Dólar de Hong Kong",
+ "symbol": "HK$"
+ },
+ "SGD": {
+ "name": "Dólar de Singapura",
+ "symbol": "SGD"
+ },
+ "TTD": {
+ "name": "Dólar de Trindade e Tobago",
+ "symbol": "TTD"
+ },
+ "SRD": {
+ "name": "Dólar do Suriname",
+ "symbol": "SRD"
+ },
+ "ZWL": {
+ "name": "Dólar do Zimbábue (2009)",
+ "symbol": "ZWL"
+ },
+ "USD": {
+ "name": "Dólar dos Estados Unidos",
+ "symbol": "US$"
+ },
+ "JMD": {
+ "name": "Dólar jamaicano",
+ "symbol": "JMD"
+ },
+ "LRD": {
+ "name": "Dólar liberiano",
+ "symbol": "LRD"
+ },
+ "NZD": {
+ "name": "Dólar neozelandês",
+ "symbol": "NZ$"
+ },
+ "VND": {
+ "name": "Dong vietnamita",
+ "symbol": "â‚«"
+ },
+ "AMD": {
+ "name": "Dram arménio",
+ "symbol": "AMD"
+ },
+ "CVE": {
+ "name": "Escudo cabo-verdiano",
+ "symbol": "CVE"
+ },
+ "EUR": {
+ "name": "Euro",
+ "symbol": "€"
+ },
+ "ANG": {
+ "name": "Florim das Antilhas Holandesas",
+ "symbol": "ANG"
+ },
+ "AWG": {
+ "name": "Florim de Aruba",
+ "symbol": "AWG"
+ },
+ "HUF": {
+ "name": "Forint húngaro",
+ "symbol": "HUF"
+ },
+ "BIF": {
+ "name": "Franco burundiano",
+ "symbol": "BIF"
+ },
+ "XOF": {
+ "name": "Franco CFA (BCEAO)",
+ "symbol": "CFA"
+ },
+ "XAF": {
+ "name": "Franco CFA (BEAC)",
+ "symbol": "FCFA"
+ },
+ "XPF": {
+ "name": "Franco CFP",
+ "symbol": "CFPF"
+ },
+ "KMF": {
+ "name": "Franco comoriano",
+ "symbol": "KMF"
+ },
+ "CDF": {
+ "name": "Franco congolês",
+ "symbol": "CDF"
+ },
+ "GNF": {
+ "name": "Franco guineense",
+ "symbol": "GNF"
+ },
+ "DJF": {
+ "name": "Franco jibutiano",
+ "symbol": "DJF"
+ },
+ "RWF": {
+ "name": "Franco ruandês",
+ "symbol": "RWF"
+ },
+ "CHF": {
+ "name": "Franco suíço",
+ "symbol": "CHF"
+ },
+ "HTG": {
+ "name": "Gourde haitiano",
+ "symbol": "HTG"
+ },
+ "PYG": {
+ "name": "Guarani paraguaio",
+ "symbol": "PYG"
+ },
+ "UAH": {
+ "name": "Hryvnia da Ucrânia",
+ "symbol": "UAH"
+ },
+ "JPY": {
+ "name": "Iene japonês",
+ "symbol": "JPÂ¥"
+ },
+ "PGK": {
+ "name": "Kina da Papua-Nova Guiné",
+ "symbol": "PGK"
+ },
+ "LAK": {
+ "name": "Kip de Laos",
+ "symbol": "LAK"
+ },
+ "HRK": {
+ "name": "Kuna croata",
+ "symbol": "HRK"
+ },
+ "MWK": {
+ "name": "Kwacha do Malawi",
+ "symbol": "MWK"
+ },
+ "ZMW": {
+ "name": "Kwacha zambiano",
+ "symbol": "ZMW"
+ },
+ "AOA": {
+ "name": "Kwanza angolano",
+ "symbol": "AOA"
+ },
+ "MMK": {
+ "name": "Kyat de Mianmar",
+ "symbol": "MMK"
+ },
+ "GEL": {
+ "name": "Lari georgiano",
+ "symbol": "GEL"
+ },
+ "ALL": {
+ "name": "Lek albanês",
+ "symbol": "ALL"
+ },
+ "HNL": {
+ "name": "Lempira das Honduras",
+ "symbol": "HNL"
+ },
+ "SLL": {
+ "name": "Leone de Serra Leoa",
+ "symbol": "SLL"
+ },
+ "MDL": {
+ "name": "Leu moldavo",
+ "symbol": "MDL"
+ },
+ "RON": {
+ "name": "Leu romeno",
+ "symbol": "RON"
+ },
+ "BGN": {
+ "name": "Lev búlgaro",
+ "symbol": "BGN"
+ },
+ "FKP": {
+ "name": "Libra das Ilhas Falkland",
+ "symbol": "FKP"
+ },
+ "GIP": {
+ "name": "Libra de Gibraltar",
+ "symbol": "GIP"
+ },
+ "SHP": {
+ "name": "Libra de Santa Helena",
+ "symbol": "SHP"
+ },
+ "EGP": {
+ "name": "Libra egípcia",
+ "symbol": "EGP"
+ },
+ "GBP": {
+ "name": "Libra esterlina britânica",
+ "symbol": "£"
+ },
+ "LBP": {
+ "name": "Libra libanesa",
+ "symbol": "LBP"
+ },
+ "SYP": {
+ "name": "Libra síria",
+ "symbol": "SYP"
+ },
+ "SDG": {
+ "name": "Libra sudanesa",
+ "symbol": "SDG"
+ },
+ "SSP": {
+ "name": "Libra sul-sudanesa",
+ "symbol": "SSP"
+ },
+ "SZL": {
+ "name": "Lilangeni da Suazilândia",
+ "symbol": "SZL"
+ },
+ "TRY": {
+ "name": "Lira turca",
+ "symbol": "TRY"
+ },
+ "LTL": {
+ "name": "Litas da Lituânia",
+ "symbol": "LTL"
+ },
+ "LSL": {
+ "name": "Loti do Lesoto",
+ "symbol": "LSL"
+ },
+ "AZN": {
+ "name": "Manat do Azerbaijão",
+ "symbol": "AZN"
+ },
+ "TMT": {
+ "name": "Manat do Turquemenistão",
+ "symbol": "TMT"
+ },
+ "BAM": {
+ "name": "Marco bósnio-herzegóvino conversível",
+ "symbol": "BAM"
+ },
+ "MZN": {
+ "name": "Metical de Moçambique",
+ "symbol": "MZN"
+ },
+ "NGN": {
+ "name": "Naira nigeriana",
+ "symbol": "NGN"
+ },
+ "ERN": {
+ "name": "Nakfa da Eritreia",
+ "symbol": "ERN"
+ },
+ "BTN": {
+ "name": "Ngultrum do Butão",
+ "symbol": "BTN"
+ },
+ "TWD": {
+ "name": "Novo dólar taiwanês",
+ "symbol": "NT$"
+ },
+ "PEN": {
+ "name": "Novo sol peruano",
+ "symbol": "PEN"
+ },
+ "MRO": {
+ "name": "Ouguiya da Mauritânia",
+ "symbol": "MRO"
+ },
+ "TOP": {
+ "name": "Paʻanga de Tonga",
+ "symbol": "TOP"
+ },
+ "MOP": {
+ "name": "Pataca de Macau",
+ "symbol": "MOP"
+ },
+ "ARS": {
+ "name": "Peso argentino",
+ "symbol": "ARS"
+ },
+ "CLP": {
+ "name": "Peso chileno",
+ "symbol": "CLP"
+ },
+ "COP": {
+ "name": "Peso colombiano",
+ "symbol": "COP"
+ },
+ "CUP": {
+ "name": "Peso cubano",
+ "symbol": "CUP"
+ },
+ "CUC": {
+ "name": "Peso cubano conversível",
+ "symbol": "CUC"
+ },
+ "DOP": {
+ "name": "Peso dominicano",
+ "symbol": "DOP"
+ },
+ "PHP": {
+ "name": "Peso filipino",
+ "symbol": "PHP"
+ },
+ "MXN": {
+ "name": "Peso mexicano",
+ "symbol": "MX$"
+ },
+ "UYU": {
+ "name": "Peso uruguaio",
+ "symbol": "UYU"
+ },
+ "BWP": {
+ "name": "Pula de Botswana",
+ "symbol": "BWP"
+ },
+ "GTQ": {
+ "name": "Quetzal da Guatemala",
+ "symbol": "GTQ"
+ },
+ "ZAR": {
+ "name": "Rand sul-africano",
+ "symbol": "ZAR"
+ },
+ "BRL": {
+ "name": "Real brasileiro",
+ "symbol": "R$"
+ },
+ "OMR": {
+ "name": "Rial de Omã",
+ "symbol": "OMR"
+ },
+ "QAR": {
+ "name": "Rial do Catar",
+ "symbol": "QAR"
+ },
+ "YER": {
+ "name": "Rial iemenita",
+ "symbol": "YER"
+ },
+ "IRR": {
+ "name": "Rial iraniano",
+ "symbol": "IRR"
+ },
+ "SAR": {
+ "name": "Rial saudita",
+ "symbol": "SAR"
+ },
+ "KHR": {
+ "name": "Riel cambojano",
+ "symbol": "KHR"
+ },
+ "MYR": {
+ "name": "Ringgit malaio",
+ "symbol": "MYR"
+ },
+ "BYR": {
+ "name": "Rublo bielorrusso",
+ "symbol": "BYR"
+ },
+ "RUB": {
+ "name": "Rublo russo",
+ "symbol": "RUB"
+ },
+ "MVR": {
+ "name": "Rupia das Ilhas Maldivas",
+ "symbol": "MVR"
+ },
+ "LKR": {
+ "name": "Rupia do Sri Lanka",
+ "symbol": "LKR"
+ },
+ "INR": {
+ "name": "Rupia indiana",
+ "symbol": "₹"
+ },
+ "IDR": {
+ "name": "Rupia indonésia",
+ "symbol": "IDR"
+ },
+ "MUR": {
+ "name": "Rupia mauriciana",
+ "symbol": "MUR"
+ },
+ "NPR": {
+ "name": "Rupia nepalesa",
+ "symbol": "NPR"
+ },
+ "PKR": {
+ "name": "Rupia paquistanesa",
+ "symbol": "PKR"
+ },
+ "SCR": {
+ "name": "Rupia seichelense",
+ "symbol": "SCR"
+ },
+ "ILS": {
+ "name": "Sheqel novo israelita",
+ "symbol": "₪"
+ },
+ "KGS": {
+ "name": "Som do Quirguistão",
+ "symbol": "KGS"
+ },
+ "UZS": {
+ "name": "Som do Uzbequistão",
+ "symbol": "UZS"
+ },
+ "TJS": {
+ "name": "Somoni do Tajaquistão",
+ "symbol": "TJS"
+ },
+ "BDT": {
+ "name": "Taka de Bangladesh",
+ "symbol": "BDT"
+ },
+ "WST": {
+ "name": "Tala samoano",
+ "symbol": "WST"
+ },
+ "KZT": {
+ "name": "Tenge do Cazaquistão",
+ "symbol": "KZT"
+ },
+ "MNT": {
+ "name": "Tugrik da Mongólia",
+ "symbol": "MNT"
+ },
+ "VUV": {
+ "name": "Vatu de Vanuatu",
+ "symbol": "VUV"
+ },
+ "KPW": {
+ "name": "Won norte-coreano",
+ "symbol": "KPW"
+ },
+ "KRW": {
+ "name": "Won sul-coreano",
+ "symbol": "â‚©"
+ },
+ "KES": {
+ "name": "Xelim queniano",
+ "symbol": "KES"
+ },
+ "SOS": {
+ "name": "Xelim somali",
+ "symbol": "SOS"
+ },
+ "TZS": {
+ "name": "Xelim tanzaniano",
+ "symbol": "TZS"
+ },
+ "UGX": {
+ "name": "Xelim ugandense",
+ "symbol": "UGX"
+ },
+ "CNY": {
+ "name": "Yuan chinês",
+ "symbol": "CNÂ¥"
+ },
+ "PLN": {
+ "name": "Zloti polaco",
+ "symbol": "PLN"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/currency/pt-MO.json b/library/intl/resources/currency/pt-MO.json
new file mode 100644
index 000000000..0847a2776
--- /dev/null
+++ b/library/intl/resources/currency/pt-MO.json
@@ -0,0 +1,634 @@
+{
+ "AFN": {
+ "name": "Afegani do Afeganistão",
+ "symbol": "AFN"
+ },
+ "MGA": {
+ "name": "Ariari de Madagáscar",
+ "symbol": "MGA"
+ },
+ "THB": {
+ "name": "Baht da Tailândia",
+ "symbol": "฿"
+ },
+ "PAB": {
+ "name": "Balboa do Panamá",
+ "symbol": "PAB"
+ },
+ "ETB": {
+ "name": "Birr etíope",
+ "symbol": "ETB"
+ },
+ "VEF": {
+ "name": "Bolívar venezuelano",
+ "symbol": "VEF"
+ },
+ "BOB": {
+ "name": "Boliviano",
+ "symbol": "BOB"
+ },
+ "GHS": {
+ "name": "Cedi de Gana",
+ "symbol": "GHS"
+ },
+ "SVC": {
+ "name": "Colom salvadorenho",
+ "symbol": "SVC"
+ },
+ "CRC": {
+ "name": "Colon costa-riquenho",
+ "symbol": "CRC"
+ },
+ "NIO": {
+ "name": "Córdoba de ouro da Nicarágua",
+ "symbol": "NIO"
+ },
+ "CZK": {
+ "name": "Coroa checa",
+ "symbol": "CZK"
+ },
+ "DKK": {
+ "name": "Coroa dinamarquesa",
+ "symbol": "DKK"
+ },
+ "ISK": {
+ "name": "Coroa islandesa",
+ "symbol": "ISK"
+ },
+ "NOK": {
+ "name": "Coroa norueguesa",
+ "symbol": "NOK"
+ },
+ "SEK": {
+ "name": "Coroa sueca",
+ "symbol": "SEK"
+ },
+ "GMD": {
+ "name": "Dalasi da Gâmbia",
+ "symbol": "GMD"
+ },
+ "DZD": {
+ "name": "Dinar argelino",
+ "symbol": "DZD"
+ },
+ "BHD": {
+ "name": "Dinar baremita",
+ "symbol": "BHD"
+ },
+ "IQD": {
+ "name": "Dinar iraquiano",
+ "symbol": "IQD"
+ },
+ "JOD": {
+ "name": "Dinar jordaniano",
+ "symbol": "JOD"
+ },
+ "KWD": {
+ "name": "Dinar kuwaitiano",
+ "symbol": "KWD"
+ },
+ "LYD": {
+ "name": "Dinar líbio",
+ "symbol": "LYD"
+ },
+ "MKD": {
+ "name": "Dinar macedónio",
+ "symbol": "MKD"
+ },
+ "RSD": {
+ "name": "Dinar sérvio",
+ "symbol": "RSD"
+ },
+ "TND": {
+ "name": "Dinar tunisino",
+ "symbol": "TND"
+ },
+ "AED": {
+ "name": "Dirham dos Emirados Ãrabes Unidos",
+ "symbol": "AED"
+ },
+ "MAD": {
+ "name": "Dirham marroquino",
+ "symbol": "MAD"
+ },
+ "STD": {
+ "name": "Dobra de São Tomé e Príncipe",
+ "symbol": "STD"
+ },
+ "AUD": {
+ "name": "Dólar australiano",
+ "symbol": "AU$"
+ },
+ "BBD": {
+ "name": "Dólar barbadense",
+ "symbol": "BBD"
+ },
+ "BZD": {
+ "name": "Dólar belizense",
+ "symbol": "BZD"
+ },
+ "BMD": {
+ "name": "Dólar bermudense",
+ "symbol": "BMD"
+ },
+ "BND": {
+ "name": "Dólar bruneíno",
+ "symbol": "BND"
+ },
+ "CAD": {
+ "name": "Dólar canadiano",
+ "symbol": "CA$"
+ },
+ "GYD": {
+ "name": "Dólar da Guiana",
+ "symbol": "GYD"
+ },
+ "NAD": {
+ "name": "Dólar da Namíbia",
+ "symbol": "NAD"
+ },
+ "BSD": {
+ "name": "Dólar das Bahamas",
+ "symbol": "BSD"
+ },
+ "XCD": {
+ "name": "Dólar das Caraíbas Orientais",
+ "symbol": "EC$"
+ },
+ "KYD": {
+ "name": "Dólar das Ilhas Caimão",
+ "symbol": "KYD"
+ },
+ "SBD": {
+ "name": "Dólar das Ilhas Salomão",
+ "symbol": "SBD"
+ },
+ "FJD": {
+ "name": "Dólar de Fiji",
+ "symbol": "FJD"
+ },
+ "HKD": {
+ "name": "Dólar de Hong Kong",
+ "symbol": "HK$"
+ },
+ "SGD": {
+ "name": "Dólar de Singapura",
+ "symbol": "SGD"
+ },
+ "TTD": {
+ "name": "Dólar de Trindade e Tobago",
+ "symbol": "TTD"
+ },
+ "SRD": {
+ "name": "Dólar do Suriname",
+ "symbol": "SRD"
+ },
+ "ZWL": {
+ "name": "Dólar do Zimbábue (2009)",
+ "symbol": "ZWL"
+ },
+ "USD": {
+ "name": "Dólar dos Estados Unidos",
+ "symbol": "US$"
+ },
+ "JMD": {
+ "name": "Dólar jamaicano",
+ "symbol": "JMD"
+ },
+ "LRD": {
+ "name": "Dólar liberiano",
+ "symbol": "LRD"
+ },
+ "NZD": {
+ "name": "Dólar neozelandês",
+ "symbol": "NZ$"
+ },
+ "VND": {
+ "name": "Dong vietnamita",
+ "symbol": "â‚«"
+ },
+ "AMD": {
+ "name": "Dram arménio",
+ "symbol": "AMD"
+ },
+ "CVE": {
+ "name": "Escudo cabo-verdiano",
+ "symbol": "CVE"
+ },
+ "EUR": {
+ "name": "Euro",
+ "symbol": "€"
+ },
+ "ANG": {
+ "name": "Florim das Antilhas Holandesas",
+ "symbol": "ANG"
+ },
+ "AWG": {
+ "name": "Florim de Aruba",
+ "symbol": "AWG"
+ },
+ "HUF": {
+ "name": "Forint húngaro",
+ "symbol": "HUF"
+ },
+ "BIF": {
+ "name": "Franco burundiano",
+ "symbol": "BIF"
+ },
+ "XOF": {
+ "name": "Franco CFA (BCEAO)",
+ "symbol": "CFA"
+ },
+ "XAF": {
+ "name": "Franco CFA (BEAC)",
+ "symbol": "FCFA"
+ },
+ "XPF": {
+ "name": "Franco CFP",
+ "symbol": "CFPF"
+ },
+ "KMF": {
+ "name": "Franco comoriano",
+ "symbol": "KMF"
+ },
+ "CDF": {
+ "name": "Franco congolês",
+ "symbol": "CDF"
+ },
+ "GNF": {
+ "name": "Franco guineense",
+ "symbol": "GNF"
+ },
+ "DJF": {
+ "name": "Franco jibutiano",
+ "symbol": "DJF"
+ },
+ "RWF": {
+ "name": "Franco ruandês",
+ "symbol": "RWF"
+ },
+ "CHF": {
+ "name": "Franco suíço",
+ "symbol": "CHF"
+ },
+ "HTG": {
+ "name": "Gourde haitiano",
+ "symbol": "HTG"
+ },
+ "PYG": {
+ "name": "Guarani paraguaio",
+ "symbol": "PYG"
+ },
+ "UAH": {
+ "name": "Hryvnia da Ucrânia",
+ "symbol": "UAH"
+ },
+ "JPY": {
+ "name": "Iene japonês",
+ "symbol": "JPÂ¥"
+ },
+ "PGK": {
+ "name": "Kina da Papua-Nova Guiné",
+ "symbol": "PGK"
+ },
+ "LAK": {
+ "name": "Kip de Laos",
+ "symbol": "LAK"
+ },
+ "HRK": {
+ "name": "Kuna croata",
+ "symbol": "HRK"
+ },
+ "MWK": {
+ "name": "Kwacha do Malawi",
+ "symbol": "MWK"
+ },
+ "ZMW": {
+ "name": "Kwacha zambiano",
+ "symbol": "ZMW"
+ },
+ "AOA": {
+ "name": "Kwanza angolano",
+ "symbol": "AOA"
+ },
+ "MMK": {
+ "name": "Kyat de Mianmar",
+ "symbol": "MMK"
+ },
+ "GEL": {
+ "name": "Lari georgiano",
+ "symbol": "GEL"
+ },
+ "ALL": {
+ "name": "Lek albanês",
+ "symbol": "ALL"
+ },
+ "HNL": {
+ "name": "Lempira das Honduras",
+ "symbol": "HNL"
+ },
+ "SLL": {
+ "name": "Leone de Serra Leoa",
+ "symbol": "SLL"
+ },
+ "MDL": {
+ "name": "Leu moldavo",
+ "symbol": "MDL"
+ },
+ "RON": {
+ "name": "Leu romeno",
+ "symbol": "RON"
+ },
+ "BGN": {
+ "name": "Lev búlgaro",
+ "symbol": "BGN"
+ },
+ "FKP": {
+ "name": "Libra das Ilhas Falkland",
+ "symbol": "FKP"
+ },
+ "GIP": {
+ "name": "Libra de Gibraltar",
+ "symbol": "GIP"
+ },
+ "SHP": {
+ "name": "Libra de Santa Helena",
+ "symbol": "SHP"
+ },
+ "EGP": {
+ "name": "Libra egípcia",
+ "symbol": "EGP"
+ },
+ "GBP": {
+ "name": "Libra esterlina britânica",
+ "symbol": "£"
+ },
+ "LBP": {
+ "name": "Libra libanesa",
+ "symbol": "LBP"
+ },
+ "SYP": {
+ "name": "Libra síria",
+ "symbol": "SYP"
+ },
+ "SDG": {
+ "name": "Libra sudanesa",
+ "symbol": "SDG"
+ },
+ "SSP": {
+ "name": "Libra sul-sudanesa",
+ "symbol": "SSP"
+ },
+ "SZL": {
+ "name": "Lilangeni da Suazilândia",
+ "symbol": "SZL"
+ },
+ "TRY": {
+ "name": "Lira turca",
+ "symbol": "TRY"
+ },
+ "LTL": {
+ "name": "Litas da Lituânia",
+ "symbol": "LTL"
+ },
+ "LSL": {
+ "name": "Loti do Lesoto",
+ "symbol": "LSL"
+ },
+ "AZN": {
+ "name": "Manat do Azerbaijão",
+ "symbol": "AZN"
+ },
+ "TMT": {
+ "name": "Manat do Turquemenistão",
+ "symbol": "TMT"
+ },
+ "BAM": {
+ "name": "Marco bósnio-herzegóvino conversível",
+ "symbol": "BAM"
+ },
+ "MZN": {
+ "name": "Metical de Moçambique",
+ "symbol": "MZN"
+ },
+ "NGN": {
+ "name": "Naira nigeriana",
+ "symbol": "NGN"
+ },
+ "ERN": {
+ "name": "Nakfa da Eritreia",
+ "symbol": "ERN"
+ },
+ "BTN": {
+ "name": "Ngultrum do Butão",
+ "symbol": "BTN"
+ },
+ "TWD": {
+ "name": "Novo dólar taiwanês",
+ "symbol": "NT$"
+ },
+ "PEN": {
+ "name": "Novo sol peruano",
+ "symbol": "PEN"
+ },
+ "MRO": {
+ "name": "Ouguiya da Mauritânia",
+ "symbol": "MRO"
+ },
+ "TOP": {
+ "name": "Paʻanga de Tonga",
+ "symbol": "TOP"
+ },
+ "MOP": {
+ "name": "Pataca de Macau",
+ "symbol": "MOP$"
+ },
+ "ARS": {
+ "name": "Peso argentino",
+ "symbol": "ARS"
+ },
+ "CLP": {
+ "name": "Peso chileno",
+ "symbol": "CLP"
+ },
+ "COP": {
+ "name": "Peso colombiano",
+ "symbol": "COP"
+ },
+ "CUP": {
+ "name": "Peso cubano",
+ "symbol": "CUP"
+ },
+ "CUC": {
+ "name": "Peso cubano conversível",
+ "symbol": "CUC"
+ },
+ "DOP": {
+ "name": "Peso dominicano",
+ "symbol": "DOP"
+ },
+ "PHP": {
+ "name": "Peso filipino",
+ "symbol": "PHP"
+ },
+ "MXN": {
+ "name": "Peso mexicano",
+ "symbol": "MX$"
+ },
+ "UYU": {
+ "name": "Peso uruguaio",
+ "symbol": "UYU"
+ },
+ "BWP": {
+ "name": "Pula de Botswana",
+ "symbol": "BWP"
+ },
+ "GTQ": {
+ "name": "Quetzal da Guatemala",
+ "symbol": "GTQ"
+ },
+ "ZAR": {
+ "name": "Rand sul-africano",
+ "symbol": "ZAR"
+ },
+ "BRL": {
+ "name": "Real brasileiro",
+ "symbol": "R$"
+ },
+ "OMR": {
+ "name": "Rial de Omã",
+ "symbol": "OMR"
+ },
+ "QAR": {
+ "name": "Rial do Catar",
+ "symbol": "QAR"
+ },
+ "YER": {
+ "name": "Rial iemenita",
+ "symbol": "YER"
+ },
+ "IRR": {
+ "name": "Rial iraniano",
+ "symbol": "IRR"
+ },
+ "SAR": {
+ "name": "Rial saudita",
+ "symbol": "SAR"
+ },
+ "KHR": {
+ "name": "Riel cambojano",
+ "symbol": "KHR"
+ },
+ "MYR": {
+ "name": "Ringgit malaio",
+ "symbol": "MYR"
+ },
+ "BYR": {
+ "name": "Rublo bielorrusso",
+ "symbol": "BYR"
+ },
+ "RUB": {
+ "name": "Rublo russo",
+ "symbol": "RUB"
+ },
+ "MVR": {
+ "name": "Rupia das Ilhas Maldivas",
+ "symbol": "MVR"
+ },
+ "LKR": {
+ "name": "Rupia do Sri Lanka",
+ "symbol": "LKR"
+ },
+ "INR": {
+ "name": "Rupia indiana",
+ "symbol": "₹"
+ },
+ "IDR": {
+ "name": "Rupia indonésia",
+ "symbol": "IDR"
+ },
+ "MUR": {
+ "name": "Rupia mauriciana",
+ "symbol": "MUR"
+ },
+ "NPR": {
+ "name": "Rupia nepalesa",
+ "symbol": "NPR"
+ },
+ "PKR": {
+ "name": "Rupia paquistanesa",
+ "symbol": "PKR"
+ },
+ "SCR": {
+ "name": "Rupia seichelense",
+ "symbol": "SCR"
+ },
+ "ILS": {
+ "name": "Sheqel novo israelita",
+ "symbol": "₪"
+ },
+ "KGS": {
+ "name": "Som do Quirguistão",
+ "symbol": "KGS"
+ },
+ "UZS": {
+ "name": "Som do Uzbequistão",
+ "symbol": "UZS"
+ },
+ "TJS": {
+ "name": "Somoni do Tajaquistão",
+ "symbol": "TJS"
+ },
+ "BDT": {
+ "name": "Taka de Bangladesh",
+ "symbol": "BDT"
+ },
+ "WST": {
+ "name": "Tala samoano",
+ "symbol": "WST"
+ },
+ "KZT": {
+ "name": "Tenge do Cazaquistão",
+ "symbol": "KZT"
+ },
+ "MNT": {
+ "name": "Tugrik da Mongólia",
+ "symbol": "MNT"
+ },
+ "VUV": {
+ "name": "Vatu de Vanuatu",
+ "symbol": "VUV"
+ },
+ "KPW": {
+ "name": "Won norte-coreano",
+ "symbol": "KPW"
+ },
+ "KRW": {
+ "name": "Won sul-coreano",
+ "symbol": "â‚©"
+ },
+ "KES": {
+ "name": "Xelim queniano",
+ "symbol": "KES"
+ },
+ "SOS": {
+ "name": "Xelim somali",
+ "symbol": "SOS"
+ },
+ "TZS": {
+ "name": "Xelim tanzaniano",
+ "symbol": "TZS"
+ },
+ "UGX": {
+ "name": "Xelim ugandense",
+ "symbol": "UGX"
+ },
+ "CNY": {
+ "name": "Yuan chinês",
+ "symbol": "CNÂ¥"
+ },
+ "PLN": {
+ "name": "Zloti polaco",
+ "symbol": "PLN"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/currency/pt-MZ.json b/library/intl/resources/currency/pt-MZ.json
new file mode 100644
index 000000000..ddc75ff04
--- /dev/null
+++ b/library/intl/resources/currency/pt-MZ.json
@@ -0,0 +1,634 @@
+{
+ "AFN": {
+ "name": "Afegani do Afeganistão",
+ "symbol": "AFN"
+ },
+ "MGA": {
+ "name": "Ariari de Madagáscar",
+ "symbol": "MGA"
+ },
+ "THB": {
+ "name": "Baht da Tailândia",
+ "symbol": "฿"
+ },
+ "PAB": {
+ "name": "Balboa do Panamá",
+ "symbol": "PAB"
+ },
+ "ETB": {
+ "name": "Birr etíope",
+ "symbol": "ETB"
+ },
+ "VEF": {
+ "name": "Bolívar venezuelano",
+ "symbol": "VEF"
+ },
+ "BOB": {
+ "name": "Boliviano",
+ "symbol": "BOB"
+ },
+ "GHS": {
+ "name": "Cedi de Gana",
+ "symbol": "GHS"
+ },
+ "SVC": {
+ "name": "Colom salvadorenho",
+ "symbol": "SVC"
+ },
+ "CRC": {
+ "name": "Colon costa-riquenho",
+ "symbol": "CRC"
+ },
+ "NIO": {
+ "name": "Córdoba de ouro da Nicarágua",
+ "symbol": "NIO"
+ },
+ "CZK": {
+ "name": "Coroa checa",
+ "symbol": "CZK"
+ },
+ "DKK": {
+ "name": "Coroa dinamarquesa",
+ "symbol": "DKK"
+ },
+ "ISK": {
+ "name": "Coroa islandesa",
+ "symbol": "ISK"
+ },
+ "NOK": {
+ "name": "Coroa norueguesa",
+ "symbol": "NOK"
+ },
+ "SEK": {
+ "name": "Coroa sueca",
+ "symbol": "SEK"
+ },
+ "GMD": {
+ "name": "Dalasi da Gâmbia",
+ "symbol": "GMD"
+ },
+ "DZD": {
+ "name": "Dinar argelino",
+ "symbol": "DZD"
+ },
+ "BHD": {
+ "name": "Dinar baremita",
+ "symbol": "BHD"
+ },
+ "IQD": {
+ "name": "Dinar iraquiano",
+ "symbol": "IQD"
+ },
+ "JOD": {
+ "name": "Dinar jordaniano",
+ "symbol": "JOD"
+ },
+ "KWD": {
+ "name": "Dinar kuwaitiano",
+ "symbol": "KWD"
+ },
+ "LYD": {
+ "name": "Dinar líbio",
+ "symbol": "LYD"
+ },
+ "MKD": {
+ "name": "Dinar macedónio",
+ "symbol": "MKD"
+ },
+ "RSD": {
+ "name": "Dinar sérvio",
+ "symbol": "RSD"
+ },
+ "TND": {
+ "name": "Dinar tunisino",
+ "symbol": "TND"
+ },
+ "AED": {
+ "name": "Dirham dos Emirados Ãrabes Unidos",
+ "symbol": "AED"
+ },
+ "MAD": {
+ "name": "Dirham marroquino",
+ "symbol": "MAD"
+ },
+ "STD": {
+ "name": "Dobra de São Tomé e Príncipe",
+ "symbol": "STD"
+ },
+ "AUD": {
+ "name": "Dólar australiano",
+ "symbol": "AU$"
+ },
+ "BBD": {
+ "name": "Dólar barbadense",
+ "symbol": "BBD"
+ },
+ "BZD": {
+ "name": "Dólar belizense",
+ "symbol": "BZD"
+ },
+ "BMD": {
+ "name": "Dólar bermudense",
+ "symbol": "BMD"
+ },
+ "BND": {
+ "name": "Dólar bruneíno",
+ "symbol": "BND"
+ },
+ "CAD": {
+ "name": "Dólar canadiano",
+ "symbol": "CA$"
+ },
+ "GYD": {
+ "name": "Dólar da Guiana",
+ "symbol": "GYD"
+ },
+ "NAD": {
+ "name": "Dólar da Namíbia",
+ "symbol": "NAD"
+ },
+ "BSD": {
+ "name": "Dólar das Bahamas",
+ "symbol": "BSD"
+ },
+ "XCD": {
+ "name": "Dólar das Caraíbas Orientais",
+ "symbol": "EC$"
+ },
+ "KYD": {
+ "name": "Dólar das Ilhas Caimão",
+ "symbol": "KYD"
+ },
+ "SBD": {
+ "name": "Dólar das Ilhas Salomão",
+ "symbol": "SBD"
+ },
+ "FJD": {
+ "name": "Dólar de Fiji",
+ "symbol": "FJD"
+ },
+ "HKD": {
+ "name": "Dólar de Hong Kong",
+ "symbol": "HK$"
+ },
+ "SGD": {
+ "name": "Dólar de Singapura",
+ "symbol": "SGD"
+ },
+ "TTD": {
+ "name": "Dólar de Trindade e Tobago",
+ "symbol": "TTD"
+ },
+ "SRD": {
+ "name": "Dólar do Suriname",
+ "symbol": "SRD"
+ },
+ "ZWL": {
+ "name": "Dólar do Zimbábue (2009)",
+ "symbol": "ZWL"
+ },
+ "USD": {
+ "name": "Dólar dos Estados Unidos",
+ "symbol": "US$"
+ },
+ "JMD": {
+ "name": "Dólar jamaicano",
+ "symbol": "JMD"
+ },
+ "LRD": {
+ "name": "Dólar liberiano",
+ "symbol": "LRD"
+ },
+ "NZD": {
+ "name": "Dólar neozelandês",
+ "symbol": "NZ$"
+ },
+ "VND": {
+ "name": "Dong vietnamita",
+ "symbol": "â‚«"
+ },
+ "AMD": {
+ "name": "Dram arménio",
+ "symbol": "AMD"
+ },
+ "CVE": {
+ "name": "Escudo cabo-verdiano",
+ "symbol": "CVE"
+ },
+ "EUR": {
+ "name": "Euro",
+ "symbol": "€"
+ },
+ "ANG": {
+ "name": "Florim das Antilhas Holandesas",
+ "symbol": "ANG"
+ },
+ "AWG": {
+ "name": "Florim de Aruba",
+ "symbol": "AWG"
+ },
+ "HUF": {
+ "name": "Forint húngaro",
+ "symbol": "HUF"
+ },
+ "BIF": {
+ "name": "Franco burundiano",
+ "symbol": "BIF"
+ },
+ "XOF": {
+ "name": "Franco CFA (BCEAO)",
+ "symbol": "CFA"
+ },
+ "XAF": {
+ "name": "Franco CFA (BEAC)",
+ "symbol": "FCFA"
+ },
+ "XPF": {
+ "name": "Franco CFP",
+ "symbol": "CFPF"
+ },
+ "KMF": {
+ "name": "Franco comoriano",
+ "symbol": "KMF"
+ },
+ "CDF": {
+ "name": "Franco congolês",
+ "symbol": "CDF"
+ },
+ "GNF": {
+ "name": "Franco guineense",
+ "symbol": "GNF"
+ },
+ "DJF": {
+ "name": "Franco jibutiano",
+ "symbol": "DJF"
+ },
+ "RWF": {
+ "name": "Franco ruandês",
+ "symbol": "RWF"
+ },
+ "CHF": {
+ "name": "Franco suíço",
+ "symbol": "CHF"
+ },
+ "HTG": {
+ "name": "Gourde haitiano",
+ "symbol": "HTG"
+ },
+ "PYG": {
+ "name": "Guarani paraguaio",
+ "symbol": "PYG"
+ },
+ "UAH": {
+ "name": "Hryvnia da Ucrânia",
+ "symbol": "UAH"
+ },
+ "JPY": {
+ "name": "Iene japonês",
+ "symbol": "JPÂ¥"
+ },
+ "PGK": {
+ "name": "Kina da Papua-Nova Guiné",
+ "symbol": "PGK"
+ },
+ "LAK": {
+ "name": "Kip de Laos",
+ "symbol": "LAK"
+ },
+ "HRK": {
+ "name": "Kuna croata",
+ "symbol": "HRK"
+ },
+ "MWK": {
+ "name": "Kwacha do Malawi",
+ "symbol": "MWK"
+ },
+ "ZMW": {
+ "name": "Kwacha zambiano",
+ "symbol": "ZMW"
+ },
+ "AOA": {
+ "name": "Kwanza angolano",
+ "symbol": "AOA"
+ },
+ "MMK": {
+ "name": "Kyat de Mianmar",
+ "symbol": "MMK"
+ },
+ "GEL": {
+ "name": "Lari georgiano",
+ "symbol": "GEL"
+ },
+ "ALL": {
+ "name": "Lek albanês",
+ "symbol": "ALL"
+ },
+ "HNL": {
+ "name": "Lempira das Honduras",
+ "symbol": "HNL"
+ },
+ "SLL": {
+ "name": "Leone de Serra Leoa",
+ "symbol": "SLL"
+ },
+ "MDL": {
+ "name": "Leu moldavo",
+ "symbol": "MDL"
+ },
+ "RON": {
+ "name": "Leu romeno",
+ "symbol": "RON"
+ },
+ "BGN": {
+ "name": "Lev búlgaro",
+ "symbol": "BGN"
+ },
+ "FKP": {
+ "name": "Libra das Ilhas Falkland",
+ "symbol": "FKP"
+ },
+ "GIP": {
+ "name": "Libra de Gibraltar",
+ "symbol": "GIP"
+ },
+ "SHP": {
+ "name": "Libra de Santa Helena",
+ "symbol": "SHP"
+ },
+ "EGP": {
+ "name": "Libra egípcia",
+ "symbol": "EGP"
+ },
+ "GBP": {
+ "name": "Libra esterlina britânica",
+ "symbol": "£"
+ },
+ "LBP": {
+ "name": "Libra libanesa",
+ "symbol": "LBP"
+ },
+ "SYP": {
+ "name": "Libra síria",
+ "symbol": "SYP"
+ },
+ "SDG": {
+ "name": "Libra sudanesa",
+ "symbol": "SDG"
+ },
+ "SSP": {
+ "name": "Libra sul-sudanesa",
+ "symbol": "SSP"
+ },
+ "SZL": {
+ "name": "Lilangeni da Suazilândia",
+ "symbol": "SZL"
+ },
+ "TRY": {
+ "name": "Lira turca",
+ "symbol": "TRY"
+ },
+ "LTL": {
+ "name": "Litas da Lituânia",
+ "symbol": "LTL"
+ },
+ "LSL": {
+ "name": "Loti do Lesoto",
+ "symbol": "LSL"
+ },
+ "AZN": {
+ "name": "Manat do Azerbaijão",
+ "symbol": "AZN"
+ },
+ "TMT": {
+ "name": "Manat do Turquemenistão",
+ "symbol": "TMT"
+ },
+ "BAM": {
+ "name": "Marco bósnio-herzegóvino conversível",
+ "symbol": "BAM"
+ },
+ "MZN": {
+ "name": "Metical de Moçambique",
+ "symbol": "MTn"
+ },
+ "NGN": {
+ "name": "Naira nigeriana",
+ "symbol": "NGN"
+ },
+ "ERN": {
+ "name": "Nakfa da Eritreia",
+ "symbol": "ERN"
+ },
+ "BTN": {
+ "name": "Ngultrum do Butão",
+ "symbol": "BTN"
+ },
+ "TWD": {
+ "name": "Novo dólar taiwanês",
+ "symbol": "NT$"
+ },
+ "PEN": {
+ "name": "Novo sol peruano",
+ "symbol": "PEN"
+ },
+ "MRO": {
+ "name": "Ouguiya da Mauritânia",
+ "symbol": "MRO"
+ },
+ "TOP": {
+ "name": "Paʻanga de Tonga",
+ "symbol": "TOP"
+ },
+ "MOP": {
+ "name": "Pataca de Macau",
+ "symbol": "MOP"
+ },
+ "ARS": {
+ "name": "Peso argentino",
+ "symbol": "ARS"
+ },
+ "CLP": {
+ "name": "Peso chileno",
+ "symbol": "CLP"
+ },
+ "COP": {
+ "name": "Peso colombiano",
+ "symbol": "COP"
+ },
+ "CUP": {
+ "name": "Peso cubano",
+ "symbol": "CUP"
+ },
+ "CUC": {
+ "name": "Peso cubano conversível",
+ "symbol": "CUC"
+ },
+ "DOP": {
+ "name": "Peso dominicano",
+ "symbol": "DOP"
+ },
+ "PHP": {
+ "name": "Peso filipino",
+ "symbol": "PHP"
+ },
+ "MXN": {
+ "name": "Peso mexicano",
+ "symbol": "MX$"
+ },
+ "UYU": {
+ "name": "Peso uruguaio",
+ "symbol": "UYU"
+ },
+ "BWP": {
+ "name": "Pula de Botswana",
+ "symbol": "BWP"
+ },
+ "GTQ": {
+ "name": "Quetzal da Guatemala",
+ "symbol": "GTQ"
+ },
+ "ZAR": {
+ "name": "Rand sul-africano",
+ "symbol": "ZAR"
+ },
+ "BRL": {
+ "name": "Real brasileiro",
+ "symbol": "R$"
+ },
+ "OMR": {
+ "name": "Rial de Omã",
+ "symbol": "OMR"
+ },
+ "QAR": {
+ "name": "Rial do Catar",
+ "symbol": "QAR"
+ },
+ "YER": {
+ "name": "Rial iemenita",
+ "symbol": "YER"
+ },
+ "IRR": {
+ "name": "Rial iraniano",
+ "symbol": "IRR"
+ },
+ "SAR": {
+ "name": "Rial saudita",
+ "symbol": "SAR"
+ },
+ "KHR": {
+ "name": "Riel cambojano",
+ "symbol": "KHR"
+ },
+ "MYR": {
+ "name": "Ringgit malaio",
+ "symbol": "MYR"
+ },
+ "BYR": {
+ "name": "Rublo bielorrusso",
+ "symbol": "BYR"
+ },
+ "RUB": {
+ "name": "Rublo russo",
+ "symbol": "RUB"
+ },
+ "MVR": {
+ "name": "Rupia das Ilhas Maldivas",
+ "symbol": "MVR"
+ },
+ "LKR": {
+ "name": "Rupia do Sri Lanka",
+ "symbol": "LKR"
+ },
+ "INR": {
+ "name": "Rupia indiana",
+ "symbol": "₹"
+ },
+ "IDR": {
+ "name": "Rupia indonésia",
+ "symbol": "IDR"
+ },
+ "MUR": {
+ "name": "Rupia mauriciana",
+ "symbol": "MUR"
+ },
+ "NPR": {
+ "name": "Rupia nepalesa",
+ "symbol": "NPR"
+ },
+ "PKR": {
+ "name": "Rupia paquistanesa",
+ "symbol": "PKR"
+ },
+ "SCR": {
+ "name": "Rupia seichelense",
+ "symbol": "SCR"
+ },
+ "ILS": {
+ "name": "Sheqel novo israelita",
+ "symbol": "₪"
+ },
+ "KGS": {
+ "name": "Som do Quirguistão",
+ "symbol": "KGS"
+ },
+ "UZS": {
+ "name": "Som do Uzbequistão",
+ "symbol": "UZS"
+ },
+ "TJS": {
+ "name": "Somoni do Tajaquistão",
+ "symbol": "TJS"
+ },
+ "BDT": {
+ "name": "Taka de Bangladesh",
+ "symbol": "BDT"
+ },
+ "WST": {
+ "name": "Tala samoano",
+ "symbol": "WST"
+ },
+ "KZT": {
+ "name": "Tenge do Cazaquistão",
+ "symbol": "KZT"
+ },
+ "MNT": {
+ "name": "Tugrik da Mongólia",
+ "symbol": "MNT"
+ },
+ "VUV": {
+ "name": "Vatu de Vanuatu",
+ "symbol": "VUV"
+ },
+ "KPW": {
+ "name": "Won norte-coreano",
+ "symbol": "KPW"
+ },
+ "KRW": {
+ "name": "Won sul-coreano",
+ "symbol": "â‚©"
+ },
+ "KES": {
+ "name": "Xelim queniano",
+ "symbol": "KES"
+ },
+ "SOS": {
+ "name": "Xelim somali",
+ "symbol": "SOS"
+ },
+ "TZS": {
+ "name": "Xelim tanzaniano",
+ "symbol": "TZS"
+ },
+ "UGX": {
+ "name": "Xelim ugandense",
+ "symbol": "UGX"
+ },
+ "CNY": {
+ "name": "Yuan chinês",
+ "symbol": "CNÂ¥"
+ },
+ "PLN": {
+ "name": "Zloti polaco",
+ "symbol": "PLN"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/currency/pt-PT.json b/library/intl/resources/currency/pt-PT.json
new file mode 100644
index 000000000..55534de6d
--- /dev/null
+++ b/library/intl/resources/currency/pt-PT.json
@@ -0,0 +1,634 @@
+{
+ "AFN": {
+ "name": "Afegani do Afeganistão",
+ "symbol": "AFN"
+ },
+ "MGA": {
+ "name": "Ariari de Madagáscar",
+ "symbol": "MGA"
+ },
+ "THB": {
+ "name": "Baht da Tailândia",
+ "symbol": "฿"
+ },
+ "PAB": {
+ "name": "Balboa do Panamá",
+ "symbol": "PAB"
+ },
+ "ETB": {
+ "name": "Birr etíope",
+ "symbol": "ETB"
+ },
+ "VEF": {
+ "name": "Bolívar venezuelano",
+ "symbol": "VEF"
+ },
+ "BOB": {
+ "name": "Boliviano",
+ "symbol": "BOB"
+ },
+ "GHS": {
+ "name": "Cedi de Gana",
+ "symbol": "GHS"
+ },
+ "SVC": {
+ "name": "Colom salvadorenho",
+ "symbol": "SVC"
+ },
+ "CRC": {
+ "name": "Colon costa-riquenho",
+ "symbol": "CRC"
+ },
+ "NIO": {
+ "name": "Córdoba de ouro da Nicarágua",
+ "symbol": "NIO"
+ },
+ "CZK": {
+ "name": "Coroa checa",
+ "symbol": "CZK"
+ },
+ "DKK": {
+ "name": "Coroa dinamarquesa",
+ "symbol": "DKK"
+ },
+ "ISK": {
+ "name": "Coroa islandesa",
+ "symbol": "ISK"
+ },
+ "NOK": {
+ "name": "Coroa norueguesa",
+ "symbol": "NOK"
+ },
+ "SEK": {
+ "name": "Coroa sueca",
+ "symbol": "SEK"
+ },
+ "GMD": {
+ "name": "Dalasi da Gâmbia",
+ "symbol": "GMD"
+ },
+ "DZD": {
+ "name": "Dinar argelino",
+ "symbol": "DZD"
+ },
+ "BHD": {
+ "name": "Dinar baremita",
+ "symbol": "BHD"
+ },
+ "IQD": {
+ "name": "Dinar iraquiano",
+ "symbol": "IQD"
+ },
+ "JOD": {
+ "name": "Dinar jordaniano",
+ "symbol": "JOD"
+ },
+ "KWD": {
+ "name": "Dinar kuwaitiano",
+ "symbol": "KWD"
+ },
+ "LYD": {
+ "name": "Dinar líbio",
+ "symbol": "LYD"
+ },
+ "MKD": {
+ "name": "Dinar macedónio",
+ "symbol": "MKD"
+ },
+ "RSD": {
+ "name": "Dinar sérvio",
+ "symbol": "RSD"
+ },
+ "TND": {
+ "name": "Dinar tunisino",
+ "symbol": "TND"
+ },
+ "AED": {
+ "name": "Dirham dos Emirados Ãrabes Unidos",
+ "symbol": "AED"
+ },
+ "MAD": {
+ "name": "Dirham marroquino",
+ "symbol": "MAD"
+ },
+ "STD": {
+ "name": "Dobra de São Tomé e Príncipe",
+ "symbol": "STD"
+ },
+ "AUD": {
+ "name": "Dólar australiano",
+ "symbol": "AU$"
+ },
+ "BBD": {
+ "name": "Dólar barbadense",
+ "symbol": "BBD"
+ },
+ "BZD": {
+ "name": "Dólar belizense",
+ "symbol": "BZD"
+ },
+ "BMD": {
+ "name": "Dólar bermudense",
+ "symbol": "BMD"
+ },
+ "BND": {
+ "name": "Dólar bruneíno",
+ "symbol": "BND"
+ },
+ "CAD": {
+ "name": "Dólar canadiano",
+ "symbol": "CA$"
+ },
+ "GYD": {
+ "name": "Dólar da Guiana",
+ "symbol": "GYD"
+ },
+ "NAD": {
+ "name": "Dólar da Namíbia",
+ "symbol": "NAD"
+ },
+ "BSD": {
+ "name": "Dólar das Bahamas",
+ "symbol": "BSD"
+ },
+ "XCD": {
+ "name": "Dólar das Caraíbas Orientais",
+ "symbol": "EC$"
+ },
+ "KYD": {
+ "name": "Dólar das Ilhas Caimão",
+ "symbol": "KYD"
+ },
+ "SBD": {
+ "name": "Dólar das Ilhas Salomão",
+ "symbol": "SBD"
+ },
+ "FJD": {
+ "name": "Dólar de Fiji",
+ "symbol": "FJD"
+ },
+ "HKD": {
+ "name": "Dólar de Hong Kong",
+ "symbol": "HK$"
+ },
+ "SGD": {
+ "name": "Dólar de Singapura",
+ "symbol": "SGD"
+ },
+ "TTD": {
+ "name": "Dólar de Trindade e Tobago",
+ "symbol": "TTD"
+ },
+ "SRD": {
+ "name": "Dólar do Suriname",
+ "symbol": "SRD"
+ },
+ "ZWL": {
+ "name": "Dólar do Zimbábue (2009)",
+ "symbol": "ZWL"
+ },
+ "USD": {
+ "name": "Dólar dos Estados Unidos",
+ "symbol": "US$"
+ },
+ "JMD": {
+ "name": "Dólar jamaicano",
+ "symbol": "JMD"
+ },
+ "LRD": {
+ "name": "Dólar liberiano",
+ "symbol": "LRD"
+ },
+ "NZD": {
+ "name": "Dólar neozelandês",
+ "symbol": "NZ$"
+ },
+ "VND": {
+ "name": "Dong vietnamita",
+ "symbol": "â‚«"
+ },
+ "AMD": {
+ "name": "Dram arménio",
+ "symbol": "AMD"
+ },
+ "CVE": {
+ "name": "Escudo cabo-verdiano",
+ "symbol": "CVE"
+ },
+ "EUR": {
+ "name": "Euro",
+ "symbol": "€"
+ },
+ "ANG": {
+ "name": "Florim das Antilhas Holandesas",
+ "symbol": "ANG"
+ },
+ "AWG": {
+ "name": "Florim de Aruba",
+ "symbol": "AWG"
+ },
+ "HUF": {
+ "name": "Forint húngaro",
+ "symbol": "HUF"
+ },
+ "BIF": {
+ "name": "Franco burundiano",
+ "symbol": "BIF"
+ },
+ "XOF": {
+ "name": "Franco CFA (BCEAO)",
+ "symbol": "CFA"
+ },
+ "XAF": {
+ "name": "Franco CFA (BEAC)",
+ "symbol": "FCFA"
+ },
+ "XPF": {
+ "name": "Franco CFP",
+ "symbol": "CFPF"
+ },
+ "KMF": {
+ "name": "Franco comoriano",
+ "symbol": "KMF"
+ },
+ "CDF": {
+ "name": "Franco congolês",
+ "symbol": "CDF"
+ },
+ "GNF": {
+ "name": "Franco guineense",
+ "symbol": "GNF"
+ },
+ "DJF": {
+ "name": "Franco jibutiano",
+ "symbol": "DJF"
+ },
+ "RWF": {
+ "name": "Franco ruandês",
+ "symbol": "RWF"
+ },
+ "CHF": {
+ "name": "Franco suíço",
+ "symbol": "CHF"
+ },
+ "HTG": {
+ "name": "Gourde haitiano",
+ "symbol": "HTG"
+ },
+ "PYG": {
+ "name": "Guarani paraguaio",
+ "symbol": "PYG"
+ },
+ "UAH": {
+ "name": "Hryvnia da Ucrânia",
+ "symbol": "UAH"
+ },
+ "JPY": {
+ "name": "Iene japonês",
+ "symbol": "JPÂ¥"
+ },
+ "PGK": {
+ "name": "Kina da Papua-Nova Guiné",
+ "symbol": "PGK"
+ },
+ "LAK": {
+ "name": "Kip de Laos",
+ "symbol": "LAK"
+ },
+ "HRK": {
+ "name": "Kuna croata",
+ "symbol": "HRK"
+ },
+ "MWK": {
+ "name": "Kwacha do Malawi",
+ "symbol": "MWK"
+ },
+ "ZMW": {
+ "name": "Kwacha zambiano",
+ "symbol": "ZMW"
+ },
+ "AOA": {
+ "name": "Kwanza angolano",
+ "symbol": "AOA"
+ },
+ "MMK": {
+ "name": "Kyat de Mianmar",
+ "symbol": "MMK"
+ },
+ "GEL": {
+ "name": "Lari georgiano",
+ "symbol": "GEL"
+ },
+ "ALL": {
+ "name": "Lek albanês",
+ "symbol": "ALL"
+ },
+ "HNL": {
+ "name": "Lempira das Honduras",
+ "symbol": "HNL"
+ },
+ "SLL": {
+ "name": "Leone de Serra Leoa",
+ "symbol": "SLL"
+ },
+ "MDL": {
+ "name": "Leu moldavo",
+ "symbol": "MDL"
+ },
+ "RON": {
+ "name": "Leu romeno",
+ "symbol": "RON"
+ },
+ "BGN": {
+ "name": "Lev búlgaro",
+ "symbol": "BGN"
+ },
+ "FKP": {
+ "name": "Libra das Ilhas Falkland",
+ "symbol": "FKP"
+ },
+ "GIP": {
+ "name": "Libra de Gibraltar",
+ "symbol": "GIP"
+ },
+ "SHP": {
+ "name": "Libra de Santa Helena",
+ "symbol": "SHP"
+ },
+ "EGP": {
+ "name": "Libra egípcia",
+ "symbol": "EGP"
+ },
+ "GBP": {
+ "name": "Libra esterlina britânica",
+ "symbol": "£"
+ },
+ "LBP": {
+ "name": "Libra libanesa",
+ "symbol": "LBP"
+ },
+ "SYP": {
+ "name": "Libra síria",
+ "symbol": "SYP"
+ },
+ "SDG": {
+ "name": "Libra sudanesa",
+ "symbol": "SDG"
+ },
+ "SSP": {
+ "name": "Libra sul-sudanesa",
+ "symbol": "SSP"
+ },
+ "SZL": {
+ "name": "Lilangeni da Suazilândia",
+ "symbol": "SZL"
+ },
+ "TRY": {
+ "name": "Lira turca",
+ "symbol": "TRY"
+ },
+ "LTL": {
+ "name": "Litas da Lituânia",
+ "symbol": "LTL"
+ },
+ "LSL": {
+ "name": "Loti do Lesoto",
+ "symbol": "LSL"
+ },
+ "AZN": {
+ "name": "Manat do Azerbaijão",
+ "symbol": "AZN"
+ },
+ "TMT": {
+ "name": "Manat do Turquemenistão",
+ "symbol": "TMT"
+ },
+ "BAM": {
+ "name": "Marco bósnio-herzegóvino conversível",
+ "symbol": "BAM"
+ },
+ "MZN": {
+ "name": "Metical de Moçambique",
+ "symbol": "MZN"
+ },
+ "NGN": {
+ "name": "Naira nigeriana",
+ "symbol": "NGN"
+ },
+ "ERN": {
+ "name": "Nakfa da Eritreia",
+ "symbol": "ERN"
+ },
+ "BTN": {
+ "name": "Ngultrum do Butão",
+ "symbol": "BTN"
+ },
+ "TWD": {
+ "name": "Novo dólar taiwanês",
+ "symbol": "NT$"
+ },
+ "PEN": {
+ "name": "Novo sol peruano",
+ "symbol": "PEN"
+ },
+ "MRO": {
+ "name": "Ouguiya da Mauritânia",
+ "symbol": "MRO"
+ },
+ "TOP": {
+ "name": "Paʻanga de Tonga",
+ "symbol": "TOP"
+ },
+ "MOP": {
+ "name": "Pataca de Macau",
+ "symbol": "MOP"
+ },
+ "ARS": {
+ "name": "Peso argentino",
+ "symbol": "ARS"
+ },
+ "CLP": {
+ "name": "Peso chileno",
+ "symbol": "CLP"
+ },
+ "COP": {
+ "name": "Peso colombiano",
+ "symbol": "COP"
+ },
+ "CUP": {
+ "name": "Peso cubano",
+ "symbol": "CUP"
+ },
+ "CUC": {
+ "name": "Peso cubano conversível",
+ "symbol": "CUC"
+ },
+ "DOP": {
+ "name": "Peso dominicano",
+ "symbol": "DOP"
+ },
+ "PHP": {
+ "name": "Peso filipino",
+ "symbol": "PHP"
+ },
+ "MXN": {
+ "name": "Peso mexicano",
+ "symbol": "MX$"
+ },
+ "UYU": {
+ "name": "Peso uruguaio",
+ "symbol": "UYU"
+ },
+ "BWP": {
+ "name": "Pula de Botswana",
+ "symbol": "BWP"
+ },
+ "GTQ": {
+ "name": "Quetzal da Guatemala",
+ "symbol": "GTQ"
+ },
+ "ZAR": {
+ "name": "Rand sul-africano",
+ "symbol": "ZAR"
+ },
+ "BRL": {
+ "name": "Real brasileiro",
+ "symbol": "R$"
+ },
+ "OMR": {
+ "name": "Rial de Omã",
+ "symbol": "OMR"
+ },
+ "QAR": {
+ "name": "Rial do Catar",
+ "symbol": "QAR"
+ },
+ "YER": {
+ "name": "Rial iemenita",
+ "symbol": "YER"
+ },
+ "IRR": {
+ "name": "Rial iraniano",
+ "symbol": "IRR"
+ },
+ "SAR": {
+ "name": "Rial saudita",
+ "symbol": "SAR"
+ },
+ "KHR": {
+ "name": "Riel cambojano",
+ "symbol": "KHR"
+ },
+ "MYR": {
+ "name": "Ringgit malaio",
+ "symbol": "MYR"
+ },
+ "BYR": {
+ "name": "Rublo bielorrusso",
+ "symbol": "BYR"
+ },
+ "RUB": {
+ "name": "Rublo russo",
+ "symbol": "RUB"
+ },
+ "MVR": {
+ "name": "Rupia das Ilhas Maldivas",
+ "symbol": "MVR"
+ },
+ "LKR": {
+ "name": "Rupia do Sri Lanka",
+ "symbol": "LKR"
+ },
+ "INR": {
+ "name": "Rupia indiana",
+ "symbol": "₹"
+ },
+ "IDR": {
+ "name": "Rupia indonésia",
+ "symbol": "IDR"
+ },
+ "MUR": {
+ "name": "Rupia mauriciana",
+ "symbol": "MUR"
+ },
+ "NPR": {
+ "name": "Rupia nepalesa",
+ "symbol": "NPR"
+ },
+ "PKR": {
+ "name": "Rupia paquistanesa",
+ "symbol": "PKR"
+ },
+ "SCR": {
+ "name": "Rupia seichelense",
+ "symbol": "SCR"
+ },
+ "ILS": {
+ "name": "Sheqel novo israelita",
+ "symbol": "₪"
+ },
+ "KGS": {
+ "name": "Som do Quirguistão",
+ "symbol": "KGS"
+ },
+ "UZS": {
+ "name": "Som do Uzbequistão",
+ "symbol": "UZS"
+ },
+ "TJS": {
+ "name": "Somoni do Tajaquistão",
+ "symbol": "TJS"
+ },
+ "BDT": {
+ "name": "Taka de Bangladesh",
+ "symbol": "BDT"
+ },
+ "WST": {
+ "name": "Tala samoano",
+ "symbol": "WST"
+ },
+ "KZT": {
+ "name": "Tenge do Cazaquistão",
+ "symbol": "KZT"
+ },
+ "MNT": {
+ "name": "Tugrik da Mongólia",
+ "symbol": "MNT"
+ },
+ "VUV": {
+ "name": "Vatu de Vanuatu",
+ "symbol": "VUV"
+ },
+ "KPW": {
+ "name": "Won norte-coreano",
+ "symbol": "KPW"
+ },
+ "KRW": {
+ "name": "Won sul-coreano",
+ "symbol": "â‚©"
+ },
+ "KES": {
+ "name": "Xelim queniano",
+ "symbol": "KES"
+ },
+ "SOS": {
+ "name": "Xelim somali",
+ "symbol": "SOS"
+ },
+ "TZS": {
+ "name": "Xelim tanzaniano",
+ "symbol": "TZS"
+ },
+ "UGX": {
+ "name": "Xelim ugandense",
+ "symbol": "UGX"
+ },
+ "CNY": {
+ "name": "Yuan chinês",
+ "symbol": "CNÂ¥"
+ },
+ "PLN": {
+ "name": "Zloti polaco",
+ "symbol": "PLN"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/currency/pt-ST.json b/library/intl/resources/currency/pt-ST.json
new file mode 100644
index 000000000..b43b0f85a
--- /dev/null
+++ b/library/intl/resources/currency/pt-ST.json
@@ -0,0 +1,634 @@
+{
+ "AFN": {
+ "name": "Afegani do Afeganistão",
+ "symbol": "AFN"
+ },
+ "MGA": {
+ "name": "Ariari de Madagáscar",
+ "symbol": "MGA"
+ },
+ "THB": {
+ "name": "Baht da Tailândia",
+ "symbol": "฿"
+ },
+ "PAB": {
+ "name": "Balboa do Panamá",
+ "symbol": "PAB"
+ },
+ "ETB": {
+ "name": "Birr etíope",
+ "symbol": "ETB"
+ },
+ "VEF": {
+ "name": "Bolívar venezuelano",
+ "symbol": "VEF"
+ },
+ "BOB": {
+ "name": "Boliviano",
+ "symbol": "BOB"
+ },
+ "GHS": {
+ "name": "Cedi de Gana",
+ "symbol": "GHS"
+ },
+ "SVC": {
+ "name": "Colom salvadorenho",
+ "symbol": "SVC"
+ },
+ "CRC": {
+ "name": "Colon costa-riquenho",
+ "symbol": "CRC"
+ },
+ "NIO": {
+ "name": "Córdoba de ouro da Nicarágua",
+ "symbol": "NIO"
+ },
+ "CZK": {
+ "name": "Coroa checa",
+ "symbol": "CZK"
+ },
+ "DKK": {
+ "name": "Coroa dinamarquesa",
+ "symbol": "DKK"
+ },
+ "ISK": {
+ "name": "Coroa islandesa",
+ "symbol": "ISK"
+ },
+ "NOK": {
+ "name": "Coroa norueguesa",
+ "symbol": "NOK"
+ },
+ "SEK": {
+ "name": "Coroa sueca",
+ "symbol": "SEK"
+ },
+ "GMD": {
+ "name": "Dalasi da Gâmbia",
+ "symbol": "GMD"
+ },
+ "DZD": {
+ "name": "Dinar argelino",
+ "symbol": "DZD"
+ },
+ "BHD": {
+ "name": "Dinar baremita",
+ "symbol": "BHD"
+ },
+ "IQD": {
+ "name": "Dinar iraquiano",
+ "symbol": "IQD"
+ },
+ "JOD": {
+ "name": "Dinar jordaniano",
+ "symbol": "JOD"
+ },
+ "KWD": {
+ "name": "Dinar kuwaitiano",
+ "symbol": "KWD"
+ },
+ "LYD": {
+ "name": "Dinar líbio",
+ "symbol": "LYD"
+ },
+ "MKD": {
+ "name": "Dinar macedónio",
+ "symbol": "MKD"
+ },
+ "RSD": {
+ "name": "Dinar sérvio",
+ "symbol": "RSD"
+ },
+ "TND": {
+ "name": "Dinar tunisino",
+ "symbol": "TND"
+ },
+ "AED": {
+ "name": "Dirham dos Emirados Ãrabes Unidos",
+ "symbol": "AED"
+ },
+ "MAD": {
+ "name": "Dirham marroquino",
+ "symbol": "MAD"
+ },
+ "STD": {
+ "name": "Dobra de São Tomé e Príncipe",
+ "symbol": "Db"
+ },
+ "AUD": {
+ "name": "Dólar australiano",
+ "symbol": "AU$"
+ },
+ "BBD": {
+ "name": "Dólar barbadense",
+ "symbol": "BBD"
+ },
+ "BZD": {
+ "name": "Dólar belizense",
+ "symbol": "BZD"
+ },
+ "BMD": {
+ "name": "Dólar bermudense",
+ "symbol": "BMD"
+ },
+ "BND": {
+ "name": "Dólar bruneíno",
+ "symbol": "BND"
+ },
+ "CAD": {
+ "name": "Dólar canadiano",
+ "symbol": "CA$"
+ },
+ "GYD": {
+ "name": "Dólar da Guiana",
+ "symbol": "GYD"
+ },
+ "NAD": {
+ "name": "Dólar da Namíbia",
+ "symbol": "NAD"
+ },
+ "BSD": {
+ "name": "Dólar das Bahamas",
+ "symbol": "BSD"
+ },
+ "XCD": {
+ "name": "Dólar das Caraíbas Orientais",
+ "symbol": "EC$"
+ },
+ "KYD": {
+ "name": "Dólar das Ilhas Caimão",
+ "symbol": "KYD"
+ },
+ "SBD": {
+ "name": "Dólar das Ilhas Salomão",
+ "symbol": "SBD"
+ },
+ "FJD": {
+ "name": "Dólar de Fiji",
+ "symbol": "FJD"
+ },
+ "HKD": {
+ "name": "Dólar de Hong Kong",
+ "symbol": "HK$"
+ },
+ "SGD": {
+ "name": "Dólar de Singapura",
+ "symbol": "SGD"
+ },
+ "TTD": {
+ "name": "Dólar de Trindade e Tobago",
+ "symbol": "TTD"
+ },
+ "SRD": {
+ "name": "Dólar do Suriname",
+ "symbol": "SRD"
+ },
+ "ZWL": {
+ "name": "Dólar do Zimbábue (2009)",
+ "symbol": "ZWL"
+ },
+ "USD": {
+ "name": "Dólar dos Estados Unidos",
+ "symbol": "US$"
+ },
+ "JMD": {
+ "name": "Dólar jamaicano",
+ "symbol": "JMD"
+ },
+ "LRD": {
+ "name": "Dólar liberiano",
+ "symbol": "LRD"
+ },
+ "NZD": {
+ "name": "Dólar neozelandês",
+ "symbol": "NZ$"
+ },
+ "VND": {
+ "name": "Dong vietnamita",
+ "symbol": "â‚«"
+ },
+ "AMD": {
+ "name": "Dram arménio",
+ "symbol": "AMD"
+ },
+ "CVE": {
+ "name": "Escudo cabo-verdiano",
+ "symbol": "CVE"
+ },
+ "EUR": {
+ "name": "Euro",
+ "symbol": "€"
+ },
+ "ANG": {
+ "name": "Florim das Antilhas Holandesas",
+ "symbol": "ANG"
+ },
+ "AWG": {
+ "name": "Florim de Aruba",
+ "symbol": "AWG"
+ },
+ "HUF": {
+ "name": "Forint húngaro",
+ "symbol": "HUF"
+ },
+ "BIF": {
+ "name": "Franco burundiano",
+ "symbol": "BIF"
+ },
+ "XOF": {
+ "name": "Franco CFA (BCEAO)",
+ "symbol": "CFA"
+ },
+ "XAF": {
+ "name": "Franco CFA (BEAC)",
+ "symbol": "FCFA"
+ },
+ "XPF": {
+ "name": "Franco CFP",
+ "symbol": "CFPF"
+ },
+ "KMF": {
+ "name": "Franco comoriano",
+ "symbol": "KMF"
+ },
+ "CDF": {
+ "name": "Franco congolês",
+ "symbol": "CDF"
+ },
+ "GNF": {
+ "name": "Franco guineense",
+ "symbol": "GNF"
+ },
+ "DJF": {
+ "name": "Franco jibutiano",
+ "symbol": "DJF"
+ },
+ "RWF": {
+ "name": "Franco ruandês",
+ "symbol": "RWF"
+ },
+ "CHF": {
+ "name": "Franco suíço",
+ "symbol": "CHF"
+ },
+ "HTG": {
+ "name": "Gourde haitiano",
+ "symbol": "HTG"
+ },
+ "PYG": {
+ "name": "Guarani paraguaio",
+ "symbol": "PYG"
+ },
+ "UAH": {
+ "name": "Hryvnia da Ucrânia",
+ "symbol": "UAH"
+ },
+ "JPY": {
+ "name": "Iene japonês",
+ "symbol": "JPÂ¥"
+ },
+ "PGK": {
+ "name": "Kina da Papua-Nova Guiné",
+ "symbol": "PGK"
+ },
+ "LAK": {
+ "name": "Kip de Laos",
+ "symbol": "LAK"
+ },
+ "HRK": {
+ "name": "Kuna croata",
+ "symbol": "HRK"
+ },
+ "MWK": {
+ "name": "Kwacha do Malawi",
+ "symbol": "MWK"
+ },
+ "ZMW": {
+ "name": "Kwacha zambiano",
+ "symbol": "ZMW"
+ },
+ "AOA": {
+ "name": "Kwanza angolano",
+ "symbol": "AOA"
+ },
+ "MMK": {
+ "name": "Kyat de Mianmar",
+ "symbol": "MMK"
+ },
+ "GEL": {
+ "name": "Lari georgiano",
+ "symbol": "GEL"
+ },
+ "ALL": {
+ "name": "Lek albanês",
+ "symbol": "ALL"
+ },
+ "HNL": {
+ "name": "Lempira das Honduras",
+ "symbol": "HNL"
+ },
+ "SLL": {
+ "name": "Leone de Serra Leoa",
+ "symbol": "SLL"
+ },
+ "MDL": {
+ "name": "Leu moldavo",
+ "symbol": "MDL"
+ },
+ "RON": {
+ "name": "Leu romeno",
+ "symbol": "RON"
+ },
+ "BGN": {
+ "name": "Lev búlgaro",
+ "symbol": "BGN"
+ },
+ "FKP": {
+ "name": "Libra das Ilhas Falkland",
+ "symbol": "FKP"
+ },
+ "GIP": {
+ "name": "Libra de Gibraltar",
+ "symbol": "GIP"
+ },
+ "SHP": {
+ "name": "Libra de Santa Helena",
+ "symbol": "SHP"
+ },
+ "EGP": {
+ "name": "Libra egípcia",
+ "symbol": "EGP"
+ },
+ "GBP": {
+ "name": "Libra esterlina britânica",
+ "symbol": "£"
+ },
+ "LBP": {
+ "name": "Libra libanesa",
+ "symbol": "LBP"
+ },
+ "SYP": {
+ "name": "Libra síria",
+ "symbol": "SYP"
+ },
+ "SDG": {
+ "name": "Libra sudanesa",
+ "symbol": "SDG"
+ },
+ "SSP": {
+ "name": "Libra sul-sudanesa",
+ "symbol": "SSP"
+ },
+ "SZL": {
+ "name": "Lilangeni da Suazilândia",
+ "symbol": "SZL"
+ },
+ "TRY": {
+ "name": "Lira turca",
+ "symbol": "TRY"
+ },
+ "LTL": {
+ "name": "Litas da Lituânia",
+ "symbol": "LTL"
+ },
+ "LSL": {
+ "name": "Loti do Lesoto",
+ "symbol": "LSL"
+ },
+ "AZN": {
+ "name": "Manat do Azerbaijão",
+ "symbol": "AZN"
+ },
+ "TMT": {
+ "name": "Manat do Turquemenistão",
+ "symbol": "TMT"
+ },
+ "BAM": {
+ "name": "Marco bósnio-herzegóvino conversível",
+ "symbol": "BAM"
+ },
+ "MZN": {
+ "name": "Metical de Moçambique",
+ "symbol": "MZN"
+ },
+ "NGN": {
+ "name": "Naira nigeriana",
+ "symbol": "NGN"
+ },
+ "ERN": {
+ "name": "Nakfa da Eritreia",
+ "symbol": "ERN"
+ },
+ "BTN": {
+ "name": "Ngultrum do Butão",
+ "symbol": "BTN"
+ },
+ "TWD": {
+ "name": "Novo dólar taiwanês",
+ "symbol": "NT$"
+ },
+ "PEN": {
+ "name": "Novo sol peruano",
+ "symbol": "PEN"
+ },
+ "MRO": {
+ "name": "Ouguiya da Mauritânia",
+ "symbol": "MRO"
+ },
+ "TOP": {
+ "name": "Paʻanga de Tonga",
+ "symbol": "TOP"
+ },
+ "MOP": {
+ "name": "Pataca de Macau",
+ "symbol": "MOP"
+ },
+ "ARS": {
+ "name": "Peso argentino",
+ "symbol": "ARS"
+ },
+ "CLP": {
+ "name": "Peso chileno",
+ "symbol": "CLP"
+ },
+ "COP": {
+ "name": "Peso colombiano",
+ "symbol": "COP"
+ },
+ "CUP": {
+ "name": "Peso cubano",
+ "symbol": "CUP"
+ },
+ "CUC": {
+ "name": "Peso cubano conversível",
+ "symbol": "CUC"
+ },
+ "DOP": {
+ "name": "Peso dominicano",
+ "symbol": "DOP"
+ },
+ "PHP": {
+ "name": "Peso filipino",
+ "symbol": "PHP"
+ },
+ "MXN": {
+ "name": "Peso mexicano",
+ "symbol": "MX$"
+ },
+ "UYU": {
+ "name": "Peso uruguaio",
+ "symbol": "UYU"
+ },
+ "BWP": {
+ "name": "Pula de Botswana",
+ "symbol": "BWP"
+ },
+ "GTQ": {
+ "name": "Quetzal da Guatemala",
+ "symbol": "GTQ"
+ },
+ "ZAR": {
+ "name": "Rand sul-africano",
+ "symbol": "ZAR"
+ },
+ "BRL": {
+ "name": "Real brasileiro",
+ "symbol": "R$"
+ },
+ "OMR": {
+ "name": "Rial de Omã",
+ "symbol": "OMR"
+ },
+ "QAR": {
+ "name": "Rial do Catar",
+ "symbol": "QAR"
+ },
+ "YER": {
+ "name": "Rial iemenita",
+ "symbol": "YER"
+ },
+ "IRR": {
+ "name": "Rial iraniano",
+ "symbol": "IRR"
+ },
+ "SAR": {
+ "name": "Rial saudita",
+ "symbol": "SAR"
+ },
+ "KHR": {
+ "name": "Riel cambojano",
+ "symbol": "KHR"
+ },
+ "MYR": {
+ "name": "Ringgit malaio",
+ "symbol": "MYR"
+ },
+ "BYR": {
+ "name": "Rublo bielorrusso",
+ "symbol": "BYR"
+ },
+ "RUB": {
+ "name": "Rublo russo",
+ "symbol": "RUB"
+ },
+ "MVR": {
+ "name": "Rupia das Ilhas Maldivas",
+ "symbol": "MVR"
+ },
+ "LKR": {
+ "name": "Rupia do Sri Lanka",
+ "symbol": "LKR"
+ },
+ "INR": {
+ "name": "Rupia indiana",
+ "symbol": "₹"
+ },
+ "IDR": {
+ "name": "Rupia indonésia",
+ "symbol": "IDR"
+ },
+ "MUR": {
+ "name": "Rupia mauriciana",
+ "symbol": "MUR"
+ },
+ "NPR": {
+ "name": "Rupia nepalesa",
+ "symbol": "NPR"
+ },
+ "PKR": {
+ "name": "Rupia paquistanesa",
+ "symbol": "PKR"
+ },
+ "SCR": {
+ "name": "Rupia seichelense",
+ "symbol": "SCR"
+ },
+ "ILS": {
+ "name": "Sheqel novo israelita",
+ "symbol": "₪"
+ },
+ "KGS": {
+ "name": "Som do Quirguistão",
+ "symbol": "KGS"
+ },
+ "UZS": {
+ "name": "Som do Uzbequistão",
+ "symbol": "UZS"
+ },
+ "TJS": {
+ "name": "Somoni do Tajaquistão",
+ "symbol": "TJS"
+ },
+ "BDT": {
+ "name": "Taka de Bangladesh",
+ "symbol": "BDT"
+ },
+ "WST": {
+ "name": "Tala samoano",
+ "symbol": "WST"
+ },
+ "KZT": {
+ "name": "Tenge do Cazaquistão",
+ "symbol": "KZT"
+ },
+ "MNT": {
+ "name": "Tugrik da Mongólia",
+ "symbol": "MNT"
+ },
+ "VUV": {
+ "name": "Vatu de Vanuatu",
+ "symbol": "VUV"
+ },
+ "KPW": {
+ "name": "Won norte-coreano",
+ "symbol": "KPW"
+ },
+ "KRW": {
+ "name": "Won sul-coreano",
+ "symbol": "â‚©"
+ },
+ "KES": {
+ "name": "Xelim queniano",
+ "symbol": "KES"
+ },
+ "SOS": {
+ "name": "Xelim somali",
+ "symbol": "SOS"
+ },
+ "TZS": {
+ "name": "Xelim tanzaniano",
+ "symbol": "TZS"
+ },
+ "UGX": {
+ "name": "Xelim ugandense",
+ "symbol": "UGX"
+ },
+ "CNY": {
+ "name": "Yuan chinês",
+ "symbol": "CNÂ¥"
+ },
+ "PLN": {
+ "name": "Zloti polaco",
+ "symbol": "PLN"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/currency/pt-TL.json b/library/intl/resources/currency/pt-TL.json
new file mode 100644
index 000000000..55534de6d
--- /dev/null
+++ b/library/intl/resources/currency/pt-TL.json
@@ -0,0 +1,634 @@
+{
+ "AFN": {
+ "name": "Afegani do Afeganistão",
+ "symbol": "AFN"
+ },
+ "MGA": {
+ "name": "Ariari de Madagáscar",
+ "symbol": "MGA"
+ },
+ "THB": {
+ "name": "Baht da Tailândia",
+ "symbol": "฿"
+ },
+ "PAB": {
+ "name": "Balboa do Panamá",
+ "symbol": "PAB"
+ },
+ "ETB": {
+ "name": "Birr etíope",
+ "symbol": "ETB"
+ },
+ "VEF": {
+ "name": "Bolívar venezuelano",
+ "symbol": "VEF"
+ },
+ "BOB": {
+ "name": "Boliviano",
+ "symbol": "BOB"
+ },
+ "GHS": {
+ "name": "Cedi de Gana",
+ "symbol": "GHS"
+ },
+ "SVC": {
+ "name": "Colom salvadorenho",
+ "symbol": "SVC"
+ },
+ "CRC": {
+ "name": "Colon costa-riquenho",
+ "symbol": "CRC"
+ },
+ "NIO": {
+ "name": "Córdoba de ouro da Nicarágua",
+ "symbol": "NIO"
+ },
+ "CZK": {
+ "name": "Coroa checa",
+ "symbol": "CZK"
+ },
+ "DKK": {
+ "name": "Coroa dinamarquesa",
+ "symbol": "DKK"
+ },
+ "ISK": {
+ "name": "Coroa islandesa",
+ "symbol": "ISK"
+ },
+ "NOK": {
+ "name": "Coroa norueguesa",
+ "symbol": "NOK"
+ },
+ "SEK": {
+ "name": "Coroa sueca",
+ "symbol": "SEK"
+ },
+ "GMD": {
+ "name": "Dalasi da Gâmbia",
+ "symbol": "GMD"
+ },
+ "DZD": {
+ "name": "Dinar argelino",
+ "symbol": "DZD"
+ },
+ "BHD": {
+ "name": "Dinar baremita",
+ "symbol": "BHD"
+ },
+ "IQD": {
+ "name": "Dinar iraquiano",
+ "symbol": "IQD"
+ },
+ "JOD": {
+ "name": "Dinar jordaniano",
+ "symbol": "JOD"
+ },
+ "KWD": {
+ "name": "Dinar kuwaitiano",
+ "symbol": "KWD"
+ },
+ "LYD": {
+ "name": "Dinar líbio",
+ "symbol": "LYD"
+ },
+ "MKD": {
+ "name": "Dinar macedónio",
+ "symbol": "MKD"
+ },
+ "RSD": {
+ "name": "Dinar sérvio",
+ "symbol": "RSD"
+ },
+ "TND": {
+ "name": "Dinar tunisino",
+ "symbol": "TND"
+ },
+ "AED": {
+ "name": "Dirham dos Emirados Ãrabes Unidos",
+ "symbol": "AED"
+ },
+ "MAD": {
+ "name": "Dirham marroquino",
+ "symbol": "MAD"
+ },
+ "STD": {
+ "name": "Dobra de São Tomé e Príncipe",
+ "symbol": "STD"
+ },
+ "AUD": {
+ "name": "Dólar australiano",
+ "symbol": "AU$"
+ },
+ "BBD": {
+ "name": "Dólar barbadense",
+ "symbol": "BBD"
+ },
+ "BZD": {
+ "name": "Dólar belizense",
+ "symbol": "BZD"
+ },
+ "BMD": {
+ "name": "Dólar bermudense",
+ "symbol": "BMD"
+ },
+ "BND": {
+ "name": "Dólar bruneíno",
+ "symbol": "BND"
+ },
+ "CAD": {
+ "name": "Dólar canadiano",
+ "symbol": "CA$"
+ },
+ "GYD": {
+ "name": "Dólar da Guiana",
+ "symbol": "GYD"
+ },
+ "NAD": {
+ "name": "Dólar da Namíbia",
+ "symbol": "NAD"
+ },
+ "BSD": {
+ "name": "Dólar das Bahamas",
+ "symbol": "BSD"
+ },
+ "XCD": {
+ "name": "Dólar das Caraíbas Orientais",
+ "symbol": "EC$"
+ },
+ "KYD": {
+ "name": "Dólar das Ilhas Caimão",
+ "symbol": "KYD"
+ },
+ "SBD": {
+ "name": "Dólar das Ilhas Salomão",
+ "symbol": "SBD"
+ },
+ "FJD": {
+ "name": "Dólar de Fiji",
+ "symbol": "FJD"
+ },
+ "HKD": {
+ "name": "Dólar de Hong Kong",
+ "symbol": "HK$"
+ },
+ "SGD": {
+ "name": "Dólar de Singapura",
+ "symbol": "SGD"
+ },
+ "TTD": {
+ "name": "Dólar de Trindade e Tobago",
+ "symbol": "TTD"
+ },
+ "SRD": {
+ "name": "Dólar do Suriname",
+ "symbol": "SRD"
+ },
+ "ZWL": {
+ "name": "Dólar do Zimbábue (2009)",
+ "symbol": "ZWL"
+ },
+ "USD": {
+ "name": "Dólar dos Estados Unidos",
+ "symbol": "US$"
+ },
+ "JMD": {
+ "name": "Dólar jamaicano",
+ "symbol": "JMD"
+ },
+ "LRD": {
+ "name": "Dólar liberiano",
+ "symbol": "LRD"
+ },
+ "NZD": {
+ "name": "Dólar neozelandês",
+ "symbol": "NZ$"
+ },
+ "VND": {
+ "name": "Dong vietnamita",
+ "symbol": "â‚«"
+ },
+ "AMD": {
+ "name": "Dram arménio",
+ "symbol": "AMD"
+ },
+ "CVE": {
+ "name": "Escudo cabo-verdiano",
+ "symbol": "CVE"
+ },
+ "EUR": {
+ "name": "Euro",
+ "symbol": "€"
+ },
+ "ANG": {
+ "name": "Florim das Antilhas Holandesas",
+ "symbol": "ANG"
+ },
+ "AWG": {
+ "name": "Florim de Aruba",
+ "symbol": "AWG"
+ },
+ "HUF": {
+ "name": "Forint húngaro",
+ "symbol": "HUF"
+ },
+ "BIF": {
+ "name": "Franco burundiano",
+ "symbol": "BIF"
+ },
+ "XOF": {
+ "name": "Franco CFA (BCEAO)",
+ "symbol": "CFA"
+ },
+ "XAF": {
+ "name": "Franco CFA (BEAC)",
+ "symbol": "FCFA"
+ },
+ "XPF": {
+ "name": "Franco CFP",
+ "symbol": "CFPF"
+ },
+ "KMF": {
+ "name": "Franco comoriano",
+ "symbol": "KMF"
+ },
+ "CDF": {
+ "name": "Franco congolês",
+ "symbol": "CDF"
+ },
+ "GNF": {
+ "name": "Franco guineense",
+ "symbol": "GNF"
+ },
+ "DJF": {
+ "name": "Franco jibutiano",
+ "symbol": "DJF"
+ },
+ "RWF": {
+ "name": "Franco ruandês",
+ "symbol": "RWF"
+ },
+ "CHF": {
+ "name": "Franco suíço",
+ "symbol": "CHF"
+ },
+ "HTG": {
+ "name": "Gourde haitiano",
+ "symbol": "HTG"
+ },
+ "PYG": {
+ "name": "Guarani paraguaio",
+ "symbol": "PYG"
+ },
+ "UAH": {
+ "name": "Hryvnia da Ucrânia",
+ "symbol": "UAH"
+ },
+ "JPY": {
+ "name": "Iene japonês",
+ "symbol": "JPÂ¥"
+ },
+ "PGK": {
+ "name": "Kina da Papua-Nova Guiné",
+ "symbol": "PGK"
+ },
+ "LAK": {
+ "name": "Kip de Laos",
+ "symbol": "LAK"
+ },
+ "HRK": {
+ "name": "Kuna croata",
+ "symbol": "HRK"
+ },
+ "MWK": {
+ "name": "Kwacha do Malawi",
+ "symbol": "MWK"
+ },
+ "ZMW": {
+ "name": "Kwacha zambiano",
+ "symbol": "ZMW"
+ },
+ "AOA": {
+ "name": "Kwanza angolano",
+ "symbol": "AOA"
+ },
+ "MMK": {
+ "name": "Kyat de Mianmar",
+ "symbol": "MMK"
+ },
+ "GEL": {
+ "name": "Lari georgiano",
+ "symbol": "GEL"
+ },
+ "ALL": {
+ "name": "Lek albanês",
+ "symbol": "ALL"
+ },
+ "HNL": {
+ "name": "Lempira das Honduras",
+ "symbol": "HNL"
+ },
+ "SLL": {
+ "name": "Leone de Serra Leoa",
+ "symbol": "SLL"
+ },
+ "MDL": {
+ "name": "Leu moldavo",
+ "symbol": "MDL"
+ },
+ "RON": {
+ "name": "Leu romeno",
+ "symbol": "RON"
+ },
+ "BGN": {
+ "name": "Lev búlgaro",
+ "symbol": "BGN"
+ },
+ "FKP": {
+ "name": "Libra das Ilhas Falkland",
+ "symbol": "FKP"
+ },
+ "GIP": {
+ "name": "Libra de Gibraltar",
+ "symbol": "GIP"
+ },
+ "SHP": {
+ "name": "Libra de Santa Helena",
+ "symbol": "SHP"
+ },
+ "EGP": {
+ "name": "Libra egípcia",
+ "symbol": "EGP"
+ },
+ "GBP": {
+ "name": "Libra esterlina britânica",
+ "symbol": "£"
+ },
+ "LBP": {
+ "name": "Libra libanesa",
+ "symbol": "LBP"
+ },
+ "SYP": {
+ "name": "Libra síria",
+ "symbol": "SYP"
+ },
+ "SDG": {
+ "name": "Libra sudanesa",
+ "symbol": "SDG"
+ },
+ "SSP": {
+ "name": "Libra sul-sudanesa",
+ "symbol": "SSP"
+ },
+ "SZL": {
+ "name": "Lilangeni da Suazilândia",
+ "symbol": "SZL"
+ },
+ "TRY": {
+ "name": "Lira turca",
+ "symbol": "TRY"
+ },
+ "LTL": {
+ "name": "Litas da Lituânia",
+ "symbol": "LTL"
+ },
+ "LSL": {
+ "name": "Loti do Lesoto",
+ "symbol": "LSL"
+ },
+ "AZN": {
+ "name": "Manat do Azerbaijão",
+ "symbol": "AZN"
+ },
+ "TMT": {
+ "name": "Manat do Turquemenistão",
+ "symbol": "TMT"
+ },
+ "BAM": {
+ "name": "Marco bósnio-herzegóvino conversível",
+ "symbol": "BAM"
+ },
+ "MZN": {
+ "name": "Metical de Moçambique",
+ "symbol": "MZN"
+ },
+ "NGN": {
+ "name": "Naira nigeriana",
+ "symbol": "NGN"
+ },
+ "ERN": {
+ "name": "Nakfa da Eritreia",
+ "symbol": "ERN"
+ },
+ "BTN": {
+ "name": "Ngultrum do Butão",
+ "symbol": "BTN"
+ },
+ "TWD": {
+ "name": "Novo dólar taiwanês",
+ "symbol": "NT$"
+ },
+ "PEN": {
+ "name": "Novo sol peruano",
+ "symbol": "PEN"
+ },
+ "MRO": {
+ "name": "Ouguiya da Mauritânia",
+ "symbol": "MRO"
+ },
+ "TOP": {
+ "name": "Paʻanga de Tonga",
+ "symbol": "TOP"
+ },
+ "MOP": {
+ "name": "Pataca de Macau",
+ "symbol": "MOP"
+ },
+ "ARS": {
+ "name": "Peso argentino",
+ "symbol": "ARS"
+ },
+ "CLP": {
+ "name": "Peso chileno",
+ "symbol": "CLP"
+ },
+ "COP": {
+ "name": "Peso colombiano",
+ "symbol": "COP"
+ },
+ "CUP": {
+ "name": "Peso cubano",
+ "symbol": "CUP"
+ },
+ "CUC": {
+ "name": "Peso cubano conversível",
+ "symbol": "CUC"
+ },
+ "DOP": {
+ "name": "Peso dominicano",
+ "symbol": "DOP"
+ },
+ "PHP": {
+ "name": "Peso filipino",
+ "symbol": "PHP"
+ },
+ "MXN": {
+ "name": "Peso mexicano",
+ "symbol": "MX$"
+ },
+ "UYU": {
+ "name": "Peso uruguaio",
+ "symbol": "UYU"
+ },
+ "BWP": {
+ "name": "Pula de Botswana",
+ "symbol": "BWP"
+ },
+ "GTQ": {
+ "name": "Quetzal da Guatemala",
+ "symbol": "GTQ"
+ },
+ "ZAR": {
+ "name": "Rand sul-africano",
+ "symbol": "ZAR"
+ },
+ "BRL": {
+ "name": "Real brasileiro",
+ "symbol": "R$"
+ },
+ "OMR": {
+ "name": "Rial de Omã",
+ "symbol": "OMR"
+ },
+ "QAR": {
+ "name": "Rial do Catar",
+ "symbol": "QAR"
+ },
+ "YER": {
+ "name": "Rial iemenita",
+ "symbol": "YER"
+ },
+ "IRR": {
+ "name": "Rial iraniano",
+ "symbol": "IRR"
+ },
+ "SAR": {
+ "name": "Rial saudita",
+ "symbol": "SAR"
+ },
+ "KHR": {
+ "name": "Riel cambojano",
+ "symbol": "KHR"
+ },
+ "MYR": {
+ "name": "Ringgit malaio",
+ "symbol": "MYR"
+ },
+ "BYR": {
+ "name": "Rublo bielorrusso",
+ "symbol": "BYR"
+ },
+ "RUB": {
+ "name": "Rublo russo",
+ "symbol": "RUB"
+ },
+ "MVR": {
+ "name": "Rupia das Ilhas Maldivas",
+ "symbol": "MVR"
+ },
+ "LKR": {
+ "name": "Rupia do Sri Lanka",
+ "symbol": "LKR"
+ },
+ "INR": {
+ "name": "Rupia indiana",
+ "symbol": "₹"
+ },
+ "IDR": {
+ "name": "Rupia indonésia",
+ "symbol": "IDR"
+ },
+ "MUR": {
+ "name": "Rupia mauriciana",
+ "symbol": "MUR"
+ },
+ "NPR": {
+ "name": "Rupia nepalesa",
+ "symbol": "NPR"
+ },
+ "PKR": {
+ "name": "Rupia paquistanesa",
+ "symbol": "PKR"
+ },
+ "SCR": {
+ "name": "Rupia seichelense",
+ "symbol": "SCR"
+ },
+ "ILS": {
+ "name": "Sheqel novo israelita",
+ "symbol": "₪"
+ },
+ "KGS": {
+ "name": "Som do Quirguistão",
+ "symbol": "KGS"
+ },
+ "UZS": {
+ "name": "Som do Uzbequistão",
+ "symbol": "UZS"
+ },
+ "TJS": {
+ "name": "Somoni do Tajaquistão",
+ "symbol": "TJS"
+ },
+ "BDT": {
+ "name": "Taka de Bangladesh",
+ "symbol": "BDT"
+ },
+ "WST": {
+ "name": "Tala samoano",
+ "symbol": "WST"
+ },
+ "KZT": {
+ "name": "Tenge do Cazaquistão",
+ "symbol": "KZT"
+ },
+ "MNT": {
+ "name": "Tugrik da Mongólia",
+ "symbol": "MNT"
+ },
+ "VUV": {
+ "name": "Vatu de Vanuatu",
+ "symbol": "VUV"
+ },
+ "KPW": {
+ "name": "Won norte-coreano",
+ "symbol": "KPW"
+ },
+ "KRW": {
+ "name": "Won sul-coreano",
+ "symbol": "â‚©"
+ },
+ "KES": {
+ "name": "Xelim queniano",
+ "symbol": "KES"
+ },
+ "SOS": {
+ "name": "Xelim somali",
+ "symbol": "SOS"
+ },
+ "TZS": {
+ "name": "Xelim tanzaniano",
+ "symbol": "TZS"
+ },
+ "UGX": {
+ "name": "Xelim ugandense",
+ "symbol": "UGX"
+ },
+ "CNY": {
+ "name": "Yuan chinês",
+ "symbol": "CNÂ¥"
+ },
+ "PLN": {
+ "name": "Zloti polaco",
+ "symbol": "PLN"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/currency/pt.json b/library/intl/resources/currency/pt.json
new file mode 100644
index 000000000..a884a1b21
--- /dev/null
+++ b/library/intl/resources/currency/pt.json
@@ -0,0 +1,634 @@
+{
+ "AFN": {
+ "name": "Afegane afegão",
+ "symbol": "AFN"
+ },
+ "MGA": {
+ "name": "Ariary malgaxe",
+ "symbol": "MGA"
+ },
+ "THB": {
+ "name": "Baht tailandês",
+ "symbol": "฿"
+ },
+ "PAB": {
+ "name": "Balboa panamenha",
+ "symbol": "PAB"
+ },
+ "ETB": {
+ "name": "Birr etíope",
+ "symbol": "ETB"
+ },
+ "VEF": {
+ "name": "Bolívar venezuelano",
+ "symbol": "VEF"
+ },
+ "BOB": {
+ "name": "Boliviano",
+ "symbol": "BOB"
+ },
+ "GHS": {
+ "name": "Cedi ganês",
+ "symbol": "GHS"
+ },
+ "SVC": {
+ "name": "Colom salvadorenho",
+ "symbol": "SVC"
+ },
+ "CRC": {
+ "name": "Colón costarriquenho",
+ "symbol": "CRC"
+ },
+ "NIO": {
+ "name": "Córdoba nicaraguense",
+ "symbol": "NIO"
+ },
+ "DKK": {
+ "name": "Coroa dinamarquesa",
+ "symbol": "DKK"
+ },
+ "ISK": {
+ "name": "Coroa islandesa",
+ "symbol": "ISK"
+ },
+ "NOK": {
+ "name": "Coroa norueguesa",
+ "symbol": "NOK"
+ },
+ "SEK": {
+ "name": "Coroa sueca",
+ "symbol": "SEK"
+ },
+ "CZK": {
+ "name": "Coroa tcheca",
+ "symbol": "CZK"
+ },
+ "GMD": {
+ "name": "Dalasi gambiano",
+ "symbol": "GMD"
+ },
+ "DZD": {
+ "name": "Dinar argelino",
+ "symbol": "DZD"
+ },
+ "BHD": {
+ "name": "Dinar bareinita",
+ "symbol": "BHD"
+ },
+ "IQD": {
+ "name": "Dinar iraquiano",
+ "symbol": "IQD"
+ },
+ "JOD": {
+ "name": "Dinar jordaniano",
+ "symbol": "JOD"
+ },
+ "KWD": {
+ "name": "Dinar kuwaitiano",
+ "symbol": "KWD"
+ },
+ "LYD": {
+ "name": "Dinar líbio",
+ "symbol": "LYD"
+ },
+ "MKD": {
+ "name": "Dinar macedônio",
+ "symbol": "MKD"
+ },
+ "RSD": {
+ "name": "Dinar sérvio",
+ "symbol": "RSD"
+ },
+ "TND": {
+ "name": "Dinar tunisiano",
+ "symbol": "TND"
+ },
+ "AED": {
+ "name": "Dirrã dos Emirados Ãrabes Unidos",
+ "symbol": "AED"
+ },
+ "MAD": {
+ "name": "Dirrã marroquino",
+ "symbol": "MAD"
+ },
+ "STD": {
+ "name": "Dobra de São Tomé e Príncipe",
+ "symbol": "STD"
+ },
+ "USD": {
+ "name": "Dólar americano",
+ "symbol": "US$"
+ },
+ "AUD": {
+ "name": "Dólar australiano",
+ "symbol": "AU$"
+ },
+ "BSD": {
+ "name": "Dólar bahamense",
+ "symbol": "BSD"
+ },
+ "BBD": {
+ "name": "Dólar barbadense",
+ "symbol": "BBD"
+ },
+ "BZD": {
+ "name": "Dólar belizenho",
+ "symbol": "BZD"
+ },
+ "BMD": {
+ "name": "Dólar bermudense",
+ "symbol": "BMD"
+ },
+ "BND": {
+ "name": "Dólar bruneano",
+ "symbol": "BND"
+ },
+ "CAD": {
+ "name": "Dólar canadense",
+ "symbol": "CA$"
+ },
+ "KYD": {
+ "name": "Dólar das Ilhas Caiman",
+ "symbol": "KYD"
+ },
+ "SBD": {
+ "name": "Dólar das Ilhas Salomão",
+ "symbol": "SBD"
+ },
+ "HKD": {
+ "name": "Dólar de Hong Kong",
+ "symbol": "HK$"
+ },
+ "TTD": {
+ "name": "Dólar de Trinidad e Tobago",
+ "symbol": "TTD"
+ },
+ "XCD": {
+ "name": "Dólar do Caribe Oriental",
+ "symbol": "EC$"
+ },
+ "ZWL": {
+ "name": "Dólar do Zimbábue (2009)",
+ "symbol": "ZWL"
+ },
+ "FJD": {
+ "name": "Dólar fijiano",
+ "symbol": "FJD"
+ },
+ "GYD": {
+ "name": "Dólar guianense",
+ "symbol": "GYD"
+ },
+ "JMD": {
+ "name": "Dólar jamaicano",
+ "symbol": "JMD"
+ },
+ "LRD": {
+ "name": "Dólar liberiano",
+ "symbol": "LRD"
+ },
+ "NAD": {
+ "name": "Dólar namibiano",
+ "symbol": "NAD"
+ },
+ "NZD": {
+ "name": "Dólar neozelandês",
+ "symbol": "NZ$"
+ },
+ "SGD": {
+ "name": "Dólar singapuriano",
+ "symbol": "SGD"
+ },
+ "SRD": {
+ "name": "Dólar surinamês",
+ "symbol": "SRD"
+ },
+ "VND": {
+ "name": "Dong vietnamita",
+ "symbol": "â‚«"
+ },
+ "AMD": {
+ "name": "Dram armênio",
+ "symbol": "AMD"
+ },
+ "CVE": {
+ "name": "Escudo cabo-verdiano",
+ "symbol": "CVE"
+ },
+ "EUR": {
+ "name": "Euro",
+ "symbol": "€"
+ },
+ "AWG": {
+ "name": "Florim arubano",
+ "symbol": "AWG"
+ },
+ "ANG": {
+ "name": "Florim das Antilhas Holandesas",
+ "symbol": "ANG"
+ },
+ "HUF": {
+ "name": "Forint húngaro",
+ "symbol": "HUF"
+ },
+ "BIF": {
+ "name": "Franco burundiano",
+ "symbol": "BIF"
+ },
+ "XOF": {
+ "name": "Franco CFA de BCEAO",
+ "symbol": "CFA"
+ },
+ "XAF": {
+ "name": "Franco CFA de BEAC",
+ "symbol": "FCFA"
+ },
+ "XPF": {
+ "name": "Franco CFP",
+ "symbol": "CFPF"
+ },
+ "KMF": {
+ "name": "Franco comorense",
+ "symbol": "KMF"
+ },
+ "CDF": {
+ "name": "Franco congolês",
+ "symbol": "CDF"
+ },
+ "DJF": {
+ "name": "Franco djibutiense",
+ "symbol": "DJF"
+ },
+ "GNF": {
+ "name": "Franco guineano",
+ "symbol": "GNF"
+ },
+ "RWF": {
+ "name": "Franco ruandês",
+ "symbol": "RWF"
+ },
+ "CHF": {
+ "name": "Franco suíço",
+ "symbol": "CHF"
+ },
+ "HTG": {
+ "name": "Gourde haitiano",
+ "symbol": "HTG"
+ },
+ "PYG": {
+ "name": "Guarani paraguaio",
+ "symbol": "PYG"
+ },
+ "UAH": {
+ "name": "Hryvnia ucraniano",
+ "symbol": "UAH"
+ },
+ "JPY": {
+ "name": "Iene japonês",
+ "symbol": "JPÂ¥"
+ },
+ "PGK": {
+ "name": "Kina papuásia",
+ "symbol": "PGK"
+ },
+ "LAK": {
+ "name": "Kip laosiano",
+ "symbol": "LAK"
+ },
+ "HRK": {
+ "name": "Kuna croata",
+ "symbol": "HRK"
+ },
+ "MWK": {
+ "name": "Kwacha malawiana",
+ "symbol": "MWK"
+ },
+ "ZMW": {
+ "name": "Kwacha zambiano",
+ "symbol": "ZMW"
+ },
+ "AOA": {
+ "name": "Kwanza angolano",
+ "symbol": "AOA"
+ },
+ "MMK": {
+ "name": "Kyat mianmarense",
+ "symbol": "MMK"
+ },
+ "GEL": {
+ "name": "Lari georgiano",
+ "symbol": "GEL"
+ },
+ "ALL": {
+ "name": "Lek albanês",
+ "symbol": "ALL"
+ },
+ "HNL": {
+ "name": "Lempira hondurenha",
+ "symbol": "HNL"
+ },
+ "SLL": {
+ "name": "Leone de Serra Leoa",
+ "symbol": "SLL"
+ },
+ "MDL": {
+ "name": "Leu moldávio",
+ "symbol": "MDL"
+ },
+ "RON": {
+ "name": "Leu romeno",
+ "symbol": "RON"
+ },
+ "BGN": {
+ "name": "Lev búlgaro",
+ "symbol": "BGN"
+ },
+ "GIP": {
+ "name": "Libra de Gibraltar",
+ "symbol": "GIP"
+ },
+ "SHP": {
+ "name": "Libra de Santa Helena",
+ "symbol": "SHP"
+ },
+ "EGP": {
+ "name": "Libra egípcia",
+ "symbol": "EGP"
+ },
+ "GBP": {
+ "name": "Libra esterlina britânica",
+ "symbol": "£"
+ },
+ "LBP": {
+ "name": "Libra libanesa",
+ "symbol": "LBP"
+ },
+ "FKP": {
+ "name": "Libra malvinense",
+ "symbol": "FKP"
+ },
+ "SYP": {
+ "name": "Libra síria",
+ "symbol": "SYP"
+ },
+ "SDG": {
+ "name": "Libra sudanesa",
+ "symbol": "SDG"
+ },
+ "SSP": {
+ "name": "Libra sul-sudanesa",
+ "symbol": "SSP"
+ },
+ "SZL": {
+ "name": "Lilangeni suazi",
+ "symbol": "SZL"
+ },
+ "TRY": {
+ "name": "Lira turca",
+ "symbol": "TRY"
+ },
+ "LTL": {
+ "name": "Litas lituano",
+ "symbol": "LTL"
+ },
+ "LSL": {
+ "name": "Loti do Lesoto",
+ "symbol": "LSL"
+ },
+ "AZN": {
+ "name": "Manat azeri",
+ "symbol": "AZN"
+ },
+ "TMT": {
+ "name": "Manat turcomeno",
+ "symbol": "TMT"
+ },
+ "BAM": {
+ "name": "Marco bósnio-herzegovino conversível",
+ "symbol": "BAM"
+ },
+ "MZN": {
+ "name": "Metical moçambicano",
+ "symbol": "MZN"
+ },
+ "NGN": {
+ "name": "Naira nigeriana",
+ "symbol": "NGN"
+ },
+ "ERN": {
+ "name": "Nakfa da Eritreia",
+ "symbol": "ERN"
+ },
+ "BTN": {
+ "name": "Ngultrum butanês",
+ "symbol": "BTN"
+ },
+ "TWD": {
+ "name": "Novo dólar taiwanês",
+ "symbol": "NT$"
+ },
+ "PEN": {
+ "name": "Novo sol peruano",
+ "symbol": "PEN"
+ },
+ "MRO": {
+ "name": "Ouguiya mauritana",
+ "symbol": "MRO"
+ },
+ "TOP": {
+ "name": "Paʻanga tonganesa",
+ "symbol": "TOP"
+ },
+ "MOP": {
+ "name": "Pataca macaense",
+ "symbol": "MOP"
+ },
+ "ARS": {
+ "name": "Peso argentino",
+ "symbol": "ARS"
+ },
+ "CLP": {
+ "name": "Peso chileno",
+ "symbol": "CLP"
+ },
+ "COP": {
+ "name": "Peso colombiano",
+ "symbol": "COP"
+ },
+ "CUP": {
+ "name": "Peso cubano",
+ "symbol": "CUP"
+ },
+ "CUC": {
+ "name": "Peso cubano conversível",
+ "symbol": "CUC"
+ },
+ "DOP": {
+ "name": "Peso dominicano",
+ "symbol": "DOP"
+ },
+ "PHP": {
+ "name": "Peso filipino",
+ "symbol": "PHP"
+ },
+ "MXN": {
+ "name": "Peso mexicano",
+ "symbol": "MX$"
+ },
+ "UYU": {
+ "name": "Peso uruguaio",
+ "symbol": "UYU"
+ },
+ "BWP": {
+ "name": "Pula botsuanesa",
+ "symbol": "BWP"
+ },
+ "GTQ": {
+ "name": "Quetzal guatemalense",
+ "symbol": "GTQ"
+ },
+ "ZAR": {
+ "name": "Rand sul-africano",
+ "symbol": "ZAR"
+ },
+ "BRL": {
+ "name": "Real brasileiro",
+ "symbol": "R$"
+ },
+ "QAR": {
+ "name": "Rial catariano",
+ "symbol": "QAR"
+ },
+ "YER": {
+ "name": "Rial iemenita",
+ "symbol": "YER"
+ },
+ "IRR": {
+ "name": "Rial iraniano",
+ "symbol": "IRR"
+ },
+ "OMR": {
+ "name": "Rial omanense",
+ "symbol": "OMR"
+ },
+ "KHR": {
+ "name": "Riel cambojano",
+ "symbol": "KHR"
+ },
+ "MYR": {
+ "name": "Ringgit malaio",
+ "symbol": "MYR"
+ },
+ "SAR": {
+ "name": "Riyal saudita",
+ "symbol": "SAR"
+ },
+ "BYR": {
+ "name": "Rublo bielorrusso",
+ "symbol": "BYR"
+ },
+ "RUB": {
+ "name": "Rublo russo",
+ "symbol": "RUB"
+ },
+ "LKR": {
+ "name": "Rupia ceilandesa",
+ "symbol": "LKR"
+ },
+ "INR": {
+ "name": "Rupia indiana",
+ "symbol": "₹"
+ },
+ "IDR": {
+ "name": "Rupia indonésia",
+ "symbol": "IDR"
+ },
+ "MVR": {
+ "name": "Rupia maldiva",
+ "symbol": "MVR"
+ },
+ "MUR": {
+ "name": "Rupia mauriciana",
+ "symbol": "MUR"
+ },
+ "NPR": {
+ "name": "Rupia nepalesa",
+ "symbol": "NPR"
+ },
+ "PKR": {
+ "name": "Rupia paquistanesa",
+ "symbol": "PKR"
+ },
+ "SCR": {
+ "name": "Rupia seichelense",
+ "symbol": "SCR"
+ },
+ "ILS": {
+ "name": "Sheqel novo israelita",
+ "symbol": "₪"
+ },
+ "KGS": {
+ "name": "Som quirguiz",
+ "symbol": "KGS"
+ },
+ "UZS": {
+ "name": "Som uzbeque",
+ "symbol": "UZS"
+ },
+ "TJS": {
+ "name": "Somoni tadjique",
+ "symbol": "TJS"
+ },
+ "BDT": {
+ "name": "Taka bengalesa",
+ "symbol": "BDT"
+ },
+ "WST": {
+ "name": "Tala samoano",
+ "symbol": "WST"
+ },
+ "KZT": {
+ "name": "Tenge cazaque",
+ "symbol": "KZT"
+ },
+ "MNT": {
+ "name": "Tugrik mongol",
+ "symbol": "MNT"
+ },
+ "VUV": {
+ "name": "Vatu vanuatuense",
+ "symbol": "VUV"
+ },
+ "KPW": {
+ "name": "Won norte-coreano",
+ "symbol": "KPW"
+ },
+ "KRW": {
+ "name": "Won sul-coreano",
+ "symbol": "â‚©"
+ },
+ "KES": {
+ "name": "Xelim queniano",
+ "symbol": "KES"
+ },
+ "SOS": {
+ "name": "Xelim somaliano",
+ "symbol": "SOS"
+ },
+ "TZS": {
+ "name": "Xelim tanzaniano",
+ "symbol": "TZS"
+ },
+ "UGX": {
+ "name": "Xelim ugandense",
+ "symbol": "UGX"
+ },
+ "CNY": {
+ "name": "Yuan chinês",
+ "symbol": "CNÂ¥"
+ },
+ "PLN": {
+ "name": "Zloti polonês",
+ "symbol": "PLN"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/currency/rm.json b/library/intl/resources/currency/rm.json
new file mode 100644
index 000000000..8efa15337
--- /dev/null
+++ b/library/intl/resources/currency/rm.json
@@ -0,0 +1,634 @@
+{
+ "AFN": {
+ "name": "afghani",
+ "symbol": "AFN"
+ },
+ "MGA": {
+ "name": "ariary madagasc",
+ "symbol": "MGA"
+ },
+ "THB": {
+ "name": "baht tailandais",
+ "symbol": "THB"
+ },
+ "PAB": {
+ "name": "balboa dal Panama",
+ "symbol": "PAB"
+ },
+ "ETB": {
+ "name": "birr etiopic",
+ "symbol": "ETB"
+ },
+ "VEF": {
+ "name": "bolivar venezuelan",
+ "symbol": "VEF"
+ },
+ "BOB": {
+ "name": "boliviano",
+ "symbol": "BOB"
+ },
+ "GHS": {
+ "name": "cedi ghanais",
+ "symbol": "GHS"
+ },
+ "SVC": {
+ "name": "colon da l’El Salvador",
+ "symbol": "SVC"
+ },
+ "CRC": {
+ "name": "colon da la Costa Rica",
+ "symbol": "CRC"
+ },
+ "NIO": {
+ "name": "cordoba oro nicaraguan",
+ "symbol": "NIO"
+ },
+ "DKK": {
+ "name": "cruna danaisa",
+ "symbol": "DKK"
+ },
+ "ISK": {
+ "name": "cruna islandaisa",
+ "symbol": "ISK"
+ },
+ "NOK": {
+ "name": "cruna norvegiaisa",
+ "symbol": "NOK"
+ },
+ "SEK": {
+ "name": "cruna svedaisa",
+ "symbol": "SEK"
+ },
+ "CZK": {
+ "name": "cruna tscheca",
+ "symbol": "CZK"
+ },
+ "CUC": {
+ "name": "CUC",
+ "symbol": "CUC"
+ },
+ "GMD": {
+ "name": "dalasi gambic",
+ "symbol": "GMD"
+ },
+ "DZD": {
+ "name": "dinar algerian",
+ "symbol": "DZD"
+ },
+ "MKD": {
+ "name": "dinar da la Macedonia",
+ "symbol": "MKD"
+ },
+ "BHD": {
+ "name": "dinar dal Bahrain",
+ "symbol": "BHD"
+ },
+ "KWD": {
+ "name": "dinar dal Kuwait",
+ "symbol": "KWD"
+ },
+ "IQD": {
+ "name": "dinar iracais",
+ "symbol": "IQD"
+ },
+ "JOD": {
+ "name": "dinar jordanic",
+ "symbol": "JOD"
+ },
+ "LYD": {
+ "name": "dinar libic",
+ "symbol": "LYD"
+ },
+ "RSD": {
+ "name": "dinar serb",
+ "symbol": "RSD"
+ },
+ "TND": {
+ "name": "dinar tunesian",
+ "symbol": "TND"
+ },
+ "AED": {
+ "name": "dirham dals Emirats Arabs Unids",
+ "symbol": "AED"
+ },
+ "MAD": {
+ "name": "dirham marocan",
+ "symbol": "MAD"
+ },
+ "STD": {
+ "name": "dobra da São Tomé e Principe",
+ "symbol": "STD"
+ },
+ "AUD": {
+ "name": "dollar australian",
+ "symbol": "A$"
+ },
+ "CAD": {
+ "name": "dollar canadais",
+ "symbol": "CA$"
+ },
+ "BBD": {
+ "name": "dollar da Barbados",
+ "symbol": "BBD"
+ },
+ "HKD": {
+ "name": "dollar da Hongkong",
+ "symbol": "HK$"
+ },
+ "XCD": {
+ "name": "dollar da la Caribica Orientala",
+ "symbol": "EC$"
+ },
+ "GYD": {
+ "name": "dollar da la Guyana",
+ "symbol": "GYD"
+ },
+ "NZD": {
+ "name": "dollar da la Nova Zelanda",
+ "symbol": "NZ$"
+ },
+ "BSD": {
+ "name": "dollar da las Bahamas",
+ "symbol": "BSD"
+ },
+ "BMD": {
+ "name": "dollar da las Bermudas",
+ "symbol": "BMD"
+ },
+ "KYD": {
+ "name": "dollar da las Inslas Cayman",
+ "symbol": "KYD"
+ },
+ "SBD": {
+ "name": "dollar da las Salomonas",
+ "symbol": "SBD"
+ },
+ "TTD": {
+ "name": "dollar da Trinidad e Tobago",
+ "symbol": "TTD"
+ },
+ "BZD": {
+ "name": "dollar dal Belize",
+ "symbol": "BZD"
+ },
+ "BND": {
+ "name": "dollar dal Brunei",
+ "symbol": "BND"
+ },
+ "FJD": {
+ "name": "dollar dal Fidschi",
+ "symbol": "FJD"
+ },
+ "SGD": {
+ "name": "dollar dal Singapur",
+ "symbol": "SGD"
+ },
+ "USD": {
+ "name": "dollar dals Stadis Unids da l’America",
+ "symbol": "$"
+ },
+ "JMD": {
+ "name": "dollar giamaican",
+ "symbol": "JMD"
+ },
+ "LRD": {
+ "name": "dollar liberian",
+ "symbol": "LRD"
+ },
+ "NAD": {
+ "name": "dollar namibian",
+ "symbol": "NAD"
+ },
+ "SRD": {
+ "name": "dollar surinam",
+ "symbol": "SRD"
+ },
+ "VND": {
+ "name": "dong vietnamais",
+ "symbol": "â‚«"
+ },
+ "AMD": {
+ "name": "dram armen",
+ "symbol": "AMD"
+ },
+ "CVE": {
+ "name": "escudo dal Cap Verd",
+ "symbol": "CVE"
+ },
+ "EUR": {
+ "name": "euro",
+ "symbol": "€"
+ },
+ "AWG": {
+ "name": "flurin da l’Aruba",
+ "symbol": "AWG"
+ },
+ "ANG": {
+ "name": "flurin da las Antillas Olandaisas",
+ "symbol": "ANG"
+ },
+ "HUF": {
+ "name": "forint ungarais",
+ "symbol": "HUF"
+ },
+ "XOF": {
+ "name": "franc CFA BCEAO",
+ "symbol": "CFA"
+ },
+ "XAF": {
+ "name": "franc CFA BEAC",
+ "symbol": "FCFA"
+ },
+ "XPF": {
+ "name": "franc CFP",
+ "symbol": "CFPF"
+ },
+ "KMF": {
+ "name": "franc comorian",
+ "symbol": "KMF"
+ },
+ "CDF": {
+ "name": "franc congolais",
+ "symbol": "CDF"
+ },
+ "GNF": {
+ "name": "franc da la Guinea",
+ "symbol": "GNF"
+ },
+ "BIF": {
+ "name": "franc dal Burundi",
+ "symbol": "BIF"
+ },
+ "DJF": {
+ "name": "franc dal Dschibuti",
+ "symbol": "DJF"
+ },
+ "RWF": {
+ "name": "franc ruandais",
+ "symbol": "RWF"
+ },
+ "CHF": {
+ "name": "franc svizzer",
+ "symbol": "CHF"
+ },
+ "GIP": {
+ "name": "glivra da Gibraltar",
+ "symbol": "GIP"
+ },
+ "SHP": {
+ "name": "glivra da Sontg’Elena",
+ "symbol": "SHP"
+ },
+ "FKP": {
+ "name": "glivra dal Falkland",
+ "symbol": "FKP"
+ },
+ "EGP": {
+ "name": "glivra egipziana",
+ "symbol": "EGP"
+ },
+ "LBP": {
+ "name": "glivra libanaisa",
+ "symbol": "LBP"
+ },
+ "SYP": {
+ "name": "glivra siriana",
+ "symbol": "SYP"
+ },
+ "GBP": {
+ "name": "glivra sterlina",
+ "symbol": "£"
+ },
+ "SDG": {
+ "name": "glivra sudanaisa",
+ "symbol": "SDG"
+ },
+ "HTG": {
+ "name": "gourde haitian",
+ "symbol": "HTG"
+ },
+ "PYG": {
+ "name": "guarani paraguaian",
+ "symbol": "PYG"
+ },
+ "UAH": {
+ "name": "hryvnia ucranais",
+ "symbol": "UAH"
+ },
+ "PGK": {
+ "name": "kina da la Papua Nova Guinea",
+ "symbol": "PGK"
+ },
+ "LAK": {
+ "name": "kip laot",
+ "symbol": "LAK"
+ },
+ "HRK": {
+ "name": "kuna croata",
+ "symbol": "HRK"
+ },
+ "ZMW": {
+ "name": "kwacha da la sambia",
+ "symbol": "ZMW"
+ },
+ "MWK": {
+ "name": "kwacha dal Malawi",
+ "symbol": "MWK"
+ },
+ "AOA": {
+ "name": "kwanza angolan",
+ "symbol": "AOA"
+ },
+ "MMK": {
+ "name": "Kyat dal Myanmar",
+ "symbol": "MMK"
+ },
+ "GEL": {
+ "name": "lari georgian",
+ "symbol": "GEL"
+ },
+ "ALL": {
+ "name": "lek",
+ "symbol": "ALL"
+ },
+ "HNL": {
+ "name": "lempira hondurian",
+ "symbol": "HNL"
+ },
+ "SLL": {
+ "name": "leone da la Sierra Leone",
+ "symbol": "SLL"
+ },
+ "MDL": {
+ "name": "leu moldav",
+ "symbol": "MDL"
+ },
+ "RON": {
+ "name": "leu rumen",
+ "symbol": "RON"
+ },
+ "SZL": {
+ "name": "lilangeni dal Swaziland",
+ "symbol": "SZL"
+ },
+ "LTL": {
+ "name": "litas lituan",
+ "symbol": "LTL"
+ },
+ "LSL": {
+ "name": "loti dal Lesotho",
+ "symbol": "LSL"
+ },
+ "AZN": {
+ "name": "manat aserbaidschanic",
+ "symbol": "AZN"
+ },
+ "BAM": {
+ "name": "marc convertibel bosniac",
+ "symbol": "BAM"
+ },
+ "MZN": {
+ "name": "metical dal mozambican",
+ "symbol": "MZN"
+ },
+ "NGN": {
+ "name": "naira nigeriana",
+ "symbol": "NGN"
+ },
+ "ERN": {
+ "name": "nakfa eritreic",
+ "symbol": "ERN"
+ },
+ "BTN": {
+ "name": "ngultrum butanais",
+ "symbol": "BTN"
+ },
+ "TWD": {
+ "name": "nov dollar taiwanais",
+ "symbol": "NT$"
+ },
+ "BGN": {
+ "name": "nov lev bulgar",
+ "symbol": "BGN"
+ },
+ "PEN": {
+ "name": "nov sol peruan",
+ "symbol": "PEN"
+ },
+ "TRY": {
+ "name": "nova lira tirca",
+ "symbol": "TRY"
+ },
+ "MRO": {
+ "name": "ouguiya da la Mauretania",
+ "symbol": "MRO"
+ },
+ "TOP": {
+ "name": "pa’anga da Tonga",
+ "symbol": "TOP"
+ },
+ "MOP": {
+ "name": "pataca dal Macao",
+ "symbol": "MOP"
+ },
+ "ARS": {
+ "name": "peso argentin",
+ "symbol": "ARS"
+ },
+ "CLP": {
+ "name": "peso chilen",
+ "symbol": "CLP"
+ },
+ "COP": {
+ "name": "peso columbian",
+ "symbol": "COP"
+ },
+ "CUP": {
+ "name": "peso cuban",
+ "symbol": "CUP"
+ },
+ "UYU": {
+ "name": "peso da l’Uruguay",
+ "symbol": "UYU"
+ },
+ "DOP": {
+ "name": "peso dominican",
+ "symbol": "DOP"
+ },
+ "PHP": {
+ "name": "peso filippin",
+ "symbol": "PHP"
+ },
+ "MXN": {
+ "name": "peso mexican",
+ "symbol": "MX$"
+ },
+ "BWP": {
+ "name": "pula da la Botswana",
+ "symbol": "BWP"
+ },
+ "GTQ": {
+ "name": "quetzal da la Guatemala",
+ "symbol": "GTQ"
+ },
+ "ZAR": {
+ "name": "rand sidafrican",
+ "symbol": "ZAR"
+ },
+ "BRL": {
+ "name": "real brasilian",
+ "symbol": "R$"
+ },
+ "OMR": {
+ "name": "rial da l’Oman",
+ "symbol": "OMR"
+ },
+ "YER": {
+ "name": "rial dal Jemen",
+ "symbol": "YER"
+ },
+ "IRR": {
+ "name": "rial iranais",
+ "symbol": "IRR"
+ },
+ "KHR": {
+ "name": "riel cambodschan",
+ "symbol": "KHR"
+ },
+ "MYR": {
+ "name": "ringgit da la Malaisia",
+ "symbol": "MYR"
+ },
+ "QAR": {
+ "name": "riyal da Katar",
+ "symbol": "QAR"
+ },
+ "SAR": {
+ "name": "riyal saudit",
+ "symbol": "SAR"
+ },
+ "BYR": {
+ "name": "rubel bieloruss",
+ "symbol": "BYR"
+ },
+ "RUB": {
+ "name": "rubel russ (nov)",
+ "symbol": "RUB"
+ },
+ "MVR": {
+ "name": "rufiyaa da las Maledivas",
+ "symbol": "MVR"
+ },
+ "LKR": {
+ "name": "rupia da la Sri Lanka",
+ "symbol": "LKR"
+ },
+ "SCR": {
+ "name": "rupia da las Seychellas",
+ "symbol": "SCR"
+ },
+ "MUR": {
+ "name": "rupia dal Mauritius",
+ "symbol": "MUR"
+ },
+ "INR": {
+ "name": "rupia indica",
+ "symbol": "₹"
+ },
+ "IDR": {
+ "name": "rupia indonaisa",
+ "symbol": "IDR"
+ },
+ "NPR": {
+ "name": "rupia nepalaisa",
+ "symbol": "NPR"
+ },
+ "PKR": {
+ "name": "rupia pakistana",
+ "symbol": "PKR"
+ },
+ "KES": {
+ "name": "schilling kenian",
+ "symbol": "KES"
+ },
+ "SOS": {
+ "name": "schilling somalian",
+ "symbol": "SOS"
+ },
+ "TZS": {
+ "name": "schilling tansanian",
+ "symbol": "TZS"
+ },
+ "UGX": {
+ "name": "schilling ugandais",
+ "symbol": "UGX"
+ },
+ "ILS": {
+ "name": "sheqel",
+ "symbol": "₪"
+ },
+ "KGS": {
+ "name": "som kirghis",
+ "symbol": "KGS"
+ },
+ "TJS": {
+ "name": "somoni dal Tadschikistan",
+ "symbol": "TJS"
+ },
+ "SSP": {
+ "name": "SSP",
+ "symbol": "SSP"
+ },
+ "UZS": {
+ "name": "sum usbec",
+ "symbol": "UZS"
+ },
+ "BDT": {
+ "name": "taka bangladais",
+ "symbol": "BDT"
+ },
+ "WST": {
+ "name": "tala da la Samoa",
+ "symbol": "WST"
+ },
+ "KZT": {
+ "name": "tenge casac",
+ "symbol": "KZT"
+ },
+ "TMT": {
+ "name": "TMT",
+ "symbol": "TMT"
+ },
+ "MNT": {
+ "name": "tugrik mongolic",
+ "symbol": "MNT"
+ },
+ "VUV": {
+ "name": "vatu dal Vanuatu",
+ "symbol": "VUV"
+ },
+ "KPW": {
+ "name": "won da la Corea dal Nord",
+ "symbol": "KPW"
+ },
+ "KRW": {
+ "name": "won da la Corea dal Sid",
+ "symbol": "â‚©"
+ },
+ "JPY": {
+ "name": "yen giapunais",
+ "symbol": "JPÂ¥"
+ },
+ "CNY": {
+ "name": "yuan renminbi chinais",
+ "symbol": "CNÂ¥"
+ },
+ "PLN": {
+ "name": "zloty polac",
+ "symbol": "PLN"
+ },
+ "ZWL": {
+ "name": "ZWL",
+ "symbol": "ZWL"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/currency/rn.json b/library/intl/resources/currency/rn.json
new file mode 100644
index 000000000..907437e53
--- /dev/null
+++ b/library/intl/resources/currency/rn.json
@@ -0,0 +1,634 @@
+{
+ "AFN": {
+ "name": "AFN",
+ "symbol": "AFN"
+ },
+ "ALL": {
+ "name": "ALL",
+ "symbol": "ALL"
+ },
+ "AMD": {
+ "name": "AMD",
+ "symbol": "AMD"
+ },
+ "ANG": {
+ "name": "ANG",
+ "symbol": "ANG"
+ },
+ "ARS": {
+ "name": "ARS",
+ "symbol": "ARS"
+ },
+ "AWG": {
+ "name": "AWG",
+ "symbol": "AWG"
+ },
+ "AZN": {
+ "name": "AZN",
+ "symbol": "AZN"
+ },
+ "BAM": {
+ "name": "BAM",
+ "symbol": "BAM"
+ },
+ "BBD": {
+ "name": "BBD",
+ "symbol": "BBD"
+ },
+ "BDT": {
+ "name": "BDT",
+ "symbol": "BDT"
+ },
+ "BGN": {
+ "name": "BGN",
+ "symbol": "BGN"
+ },
+ "BMD": {
+ "name": "BMD",
+ "symbol": "BMD"
+ },
+ "BND": {
+ "name": "BND",
+ "symbol": "BND"
+ },
+ "BOB": {
+ "name": "BOB",
+ "symbol": "BOB"
+ },
+ "BRL": {
+ "name": "BRL",
+ "symbol": "R$"
+ },
+ "BSD": {
+ "name": "BSD",
+ "symbol": "BSD"
+ },
+ "BTN": {
+ "name": "BTN",
+ "symbol": "BTN"
+ },
+ "BYR": {
+ "name": "BYR",
+ "symbol": "BYR"
+ },
+ "BZD": {
+ "name": "BZD",
+ "symbol": "BZD"
+ },
+ "CLP": {
+ "name": "CLP",
+ "symbol": "CLP"
+ },
+ "COP": {
+ "name": "COP",
+ "symbol": "COP"
+ },
+ "CRC": {
+ "name": "CRC",
+ "symbol": "CRC"
+ },
+ "CUC": {
+ "name": "CUC",
+ "symbol": "CUC"
+ },
+ "CUP": {
+ "name": "CUP",
+ "symbol": "CUP"
+ },
+ "CZK": {
+ "name": "CZK",
+ "symbol": "CZK"
+ },
+ "DKK": {
+ "name": "DKK",
+ "symbol": "DKK"
+ },
+ "DOP": {
+ "name": "DOP",
+ "symbol": "DOP"
+ },
+ "FJD": {
+ "name": "FJD",
+ "symbol": "FJD"
+ },
+ "FKP": {
+ "name": "FKP",
+ "symbol": "FKP"
+ },
+ "GEL": {
+ "name": "GEL",
+ "symbol": "GEL"
+ },
+ "GHS": {
+ "name": "GHS",
+ "symbol": "GHS"
+ },
+ "GIP": {
+ "name": "GIP",
+ "symbol": "GIP"
+ },
+ "GNF": {
+ "name": "GNF",
+ "symbol": "GNF"
+ },
+ "GTQ": {
+ "name": "GTQ",
+ "symbol": "GTQ"
+ },
+ "GYD": {
+ "name": "GYD",
+ "symbol": "GYD"
+ },
+ "HKD": {
+ "name": "HKD",
+ "symbol": "HK$"
+ },
+ "HNL": {
+ "name": "HNL",
+ "symbol": "HNL"
+ },
+ "HRK": {
+ "name": "HRK",
+ "symbol": "HRK"
+ },
+ "HTG": {
+ "name": "HTG",
+ "symbol": "HTG"
+ },
+ "HUF": {
+ "name": "HUF",
+ "symbol": "HUF"
+ },
+ "ETB": {
+ "name": "Ibiri ryo muri Etiyopiya",
+ "symbol": "ETB"
+ },
+ "GMD": {
+ "name": "Idalasi ryo muri Gambiya",
+ "symbol": "GMD"
+ },
+ "BHD": {
+ "name": "Idinari ry’iribahireyini",
+ "symbol": "BHD"
+ },
+ "LYD": {
+ "name": "Idinari rya Libiya",
+ "symbol": "LYD"
+ },
+ "DZD": {
+ "name": "Idinari ryo muri Alijeriya",
+ "symbol": "DZD"
+ },
+ "TND": {
+ "name": "Idinari ryo muri Tuniziya",
+ "symbol": "TND"
+ },
+ "AED": {
+ "name": "Idiramu ryo muri Leta Zunze Ubumwe z’Abarabu",
+ "symbol": "AED"
+ },
+ "MAD": {
+ "name": "Idiramu ryo muri Maroke",
+ "symbol": "MAD"
+ },
+ "STD": {
+ "name": "Idobura ryo muri Sawotome na Perensipe",
+ "symbol": "STD"
+ },
+ "USD": {
+ "name": "Idolari ry’abanyamerika",
+ "symbol": "US$"
+ },
+ "CAD": {
+ "name": "Idolari rya Kanada",
+ "symbol": "CA$"
+ },
+ "LRD": {
+ "name": "Idolari rya Liberiya",
+ "symbol": "LRD"
+ },
+ "NAD": {
+ "name": "Idolari rya Namibiya",
+ "symbol": "NAD"
+ },
+ "AUD": {
+ "name": "Idolari ryo muri Ositaraliya",
+ "symbol": "A$"
+ },
+ "IDR": {
+ "name": "IDR",
+ "symbol": "IDR"
+ },
+ "RWF": {
+ "name": "Ifaranga ry’u Rwanda",
+ "symbol": "RWF"
+ },
+ "BIF": {
+ "name": "Ifaranga ry’Uburundi",
+ "symbol": "FBu"
+ },
+ "CHF": {
+ "name": "Ifaranga ry’Ubusuwisi",
+ "symbol": "CHF"
+ },
+ "KMF": {
+ "name": "Ifaranga rya Komore",
+ "symbol": "KMF"
+ },
+ "CDF": {
+ "name": "Ifaranga rya Kongo",
+ "symbol": "CDF"
+ },
+ "DJF": {
+ "name": "Ifaranga ryo muri Jibuti",
+ "symbol": "DJF"
+ },
+ "MWK": {
+ "name": "Ikwaca ryo muri Malawi",
+ "symbol": "MWK"
+ },
+ "ZMW": {
+ "name": "Ikwaca ryo muri Zambiya",
+ "symbol": "ZMW"
+ },
+ "AOA": {
+ "name": "Ikwanza ryo muri Angola",
+ "symbol": "AOA"
+ },
+ "SLL": {
+ "name": "Ilewone",
+ "symbol": "SLL"
+ },
+ "SZL": {
+ "name": "Ililangeni",
+ "symbol": "SZL"
+ },
+ "LSL": {
+ "name": "Iloti ryo muro Lesoto",
+ "symbol": "LSL"
+ },
+ "ILS": {
+ "name": "ILS",
+ "symbol": "₪"
+ },
+ "NGN": {
+ "name": "Inayira ryo muri Nijeriya",
+ "symbol": "NGN"
+ },
+ "EGP": {
+ "name": "Ipawundi rya Misiri",
+ "symbol": "EGP"
+ },
+ "SHP": {
+ "name": "Ipawundi rya Sente Helena",
+ "symbol": "SHP"
+ },
+ "SDG": {
+ "name": "Ipawundi rya Sudani",
+ "symbol": "SDG"
+ },
+ "GBP": {
+ "name": "Ipawundi ryo mu Bwongereza",
+ "symbol": "£"
+ },
+ "BWP": {
+ "name": "Ipula ryo muri Botswana",
+ "symbol": "BWP"
+ },
+ "IQD": {
+ "name": "IQD",
+ "symbol": "IQD"
+ },
+ "ZAR": {
+ "name": "Irandi ryo muri Afurika y’Epfo",
+ "symbol": "ZAR"
+ },
+ "CVE": {
+ "name": "Irikaboveridiyano ryo muri Esikudo",
+ "symbol": "CVE"
+ },
+ "ERN": {
+ "name": "Irinakufa ryo muri Eritereya",
+ "symbol": "ERN"
+ },
+ "SAR": {
+ "name": "Iriyari ryo muri Arabiya Sawudite",
+ "symbol": "SAR"
+ },
+ "MGA": {
+ "name": "Iriyari ryo muri Madagasikari",
+ "symbol": "MGA"
+ },
+ "IRR": {
+ "name": "IRR",
+ "symbol": "IRR"
+ },
+ "MUR": {
+ "name": "Irupiya ryo mu birwa bya Morise",
+ "symbol": "MUR"
+ },
+ "SCR": {
+ "name": "Irupiya ryo mu birwa bya Sayisheli",
+ "symbol": "SCR"
+ },
+ "INR": {
+ "name": "Irupiya ryo mu Buhindi",
+ "symbol": "₹"
+ },
+ "UGX": {
+ "name": "Ishilingi ry’Ubugande",
+ "symbol": "UGX"
+ },
+ "KES": {
+ "name": "Ishilingi rya Kenya",
+ "symbol": "KES"
+ },
+ "TZS": {
+ "name": "Ishilingi rya Tanzaniya",
+ "symbol": "TZS"
+ },
+ "SOS": {
+ "name": "Ishilingi ryo muri Somaliya",
+ "symbol": "SOS"
+ },
+ "ISK": {
+ "name": "ISK",
+ "symbol": "ISK"
+ },
+ "JPY": {
+ "name": "Iyeni ry’Ubuyapani",
+ "symbol": "JPÂ¥"
+ },
+ "EUR": {
+ "name": "Iyero",
+ "symbol": "€"
+ },
+ "CNY": {
+ "name": "Iyuwani ryo mu Bushinwa",
+ "symbol": "CNÂ¥"
+ },
+ "JMD": {
+ "name": "JMD",
+ "symbol": "JMD"
+ },
+ "JOD": {
+ "name": "JOD",
+ "symbol": "JOD"
+ },
+ "KGS": {
+ "name": "KGS",
+ "symbol": "KGS"
+ },
+ "KHR": {
+ "name": "KHR",
+ "symbol": "KHR"
+ },
+ "KPW": {
+ "name": "KPW",
+ "symbol": "KPW"
+ },
+ "KRW": {
+ "name": "KRW",
+ "symbol": "â‚©"
+ },
+ "KWD": {
+ "name": "KWD",
+ "symbol": "KWD"
+ },
+ "KYD": {
+ "name": "KYD",
+ "symbol": "KYD"
+ },
+ "KZT": {
+ "name": "KZT",
+ "symbol": "KZT"
+ },
+ "LAK": {
+ "name": "LAK",
+ "symbol": "LAK"
+ },
+ "LBP": {
+ "name": "LBP",
+ "symbol": "LBP"
+ },
+ "LKR": {
+ "name": "LKR",
+ "symbol": "LKR"
+ },
+ "LTL": {
+ "name": "LTL",
+ "symbol": "LTL"
+ },
+ "MDL": {
+ "name": "MDL",
+ "symbol": "MDL"
+ },
+ "MKD": {
+ "name": "MKD",
+ "symbol": "MKD"
+ },
+ "MMK": {
+ "name": "MMK",
+ "symbol": "MMK"
+ },
+ "MNT": {
+ "name": "MNT",
+ "symbol": "MNT"
+ },
+ "MOP": {
+ "name": "MOP",
+ "symbol": "MOP"
+ },
+ "MVR": {
+ "name": "MVR",
+ "symbol": "MVR"
+ },
+ "MXN": {
+ "name": "MXN",
+ "symbol": "MX$"
+ },
+ "MYR": {
+ "name": "MYR",
+ "symbol": "MYR"
+ },
+ "MZN": {
+ "name": "MZN",
+ "symbol": "MZN"
+ },
+ "NIO": {
+ "name": "NIO",
+ "symbol": "NIO"
+ },
+ "NOK": {
+ "name": "NOK",
+ "symbol": "NOK"
+ },
+ "NPR": {
+ "name": "NPR",
+ "symbol": "NPR"
+ },
+ "NZD": {
+ "name": "NZD",
+ "symbol": "NZ$"
+ },
+ "OMR": {
+ "name": "OMR",
+ "symbol": "OMR"
+ },
+ "PAB": {
+ "name": "PAB",
+ "symbol": "PAB"
+ },
+ "PEN": {
+ "name": "PEN",
+ "symbol": "PEN"
+ },
+ "PGK": {
+ "name": "PGK",
+ "symbol": "PGK"
+ },
+ "PHP": {
+ "name": "PHP",
+ "symbol": "PHP"
+ },
+ "PKR": {
+ "name": "PKR",
+ "symbol": "PKR"
+ },
+ "PLN": {
+ "name": "PLN",
+ "symbol": "PLN"
+ },
+ "PYG": {
+ "name": "PYG",
+ "symbol": "PYG"
+ },
+ "QAR": {
+ "name": "QAR",
+ "symbol": "QAR"
+ },
+ "RON": {
+ "name": "RON",
+ "symbol": "RON"
+ },
+ "RSD": {
+ "name": "RSD",
+ "symbol": "RSD"
+ },
+ "RUB": {
+ "name": "RUB",
+ "symbol": "RUB"
+ },
+ "SBD": {
+ "name": "SBD",
+ "symbol": "SBD"
+ },
+ "SEK": {
+ "name": "SEK",
+ "symbol": "SEK"
+ },
+ "SGD": {
+ "name": "SGD",
+ "symbol": "SGD"
+ },
+ "SRD": {
+ "name": "SRD",
+ "symbol": "SRD"
+ },
+ "SSP": {
+ "name": "SSP",
+ "symbol": "SSP"
+ },
+ "SVC": {
+ "name": "SVC",
+ "symbol": "SVC"
+ },
+ "SYP": {
+ "name": "SYP",
+ "symbol": "SYP"
+ },
+ "THB": {
+ "name": "THB",
+ "symbol": "THB"
+ },
+ "TJS": {
+ "name": "TJS",
+ "symbol": "TJS"
+ },
+ "TMT": {
+ "name": "TMT",
+ "symbol": "TMT"
+ },
+ "TOP": {
+ "name": "TOP",
+ "symbol": "TOP"
+ },
+ "TRY": {
+ "name": "TRY",
+ "symbol": "TRY"
+ },
+ "TTD": {
+ "name": "TTD",
+ "symbol": "TTD"
+ },
+ "TWD": {
+ "name": "TWD",
+ "symbol": "NT$"
+ },
+ "UAH": {
+ "name": "UAH",
+ "symbol": "UAH"
+ },
+ "MRO": {
+ "name": "Ugwiya ryo muri Moritaniya",
+ "symbol": "MRO"
+ },
+ "UYU": {
+ "name": "UYU",
+ "symbol": "UYU"
+ },
+ "UZS": {
+ "name": "UZS",
+ "symbol": "UZS"
+ },
+ "VEF": {
+ "name": "VEF",
+ "symbol": "VEF"
+ },
+ "VND": {
+ "name": "VND",
+ "symbol": "â‚«"
+ },
+ "VUV": {
+ "name": "VUV",
+ "symbol": "VUV"
+ },
+ "WST": {
+ "name": "WST",
+ "symbol": "WST"
+ },
+ "XAF": {
+ "name": "XAF",
+ "symbol": "FCFA"
+ },
+ "XCD": {
+ "name": "XCD",
+ "symbol": "EC$"
+ },
+ "XOF": {
+ "name": "XOF",
+ "symbol": "CFA"
+ },
+ "XPF": {
+ "name": "XPF",
+ "symbol": "CFPF"
+ },
+ "YER": {
+ "name": "YER",
+ "symbol": "YER"
+ },
+ "ZWL": {
+ "name": "ZWL",
+ "symbol": "ZWL"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/currency/ro.json b/library/intl/resources/currency/ro.json
new file mode 100644
index 000000000..e509ea215
--- /dev/null
+++ b/library/intl/resources/currency/ro.json
@@ -0,0 +1,634 @@
+{
+ "AFN": {
+ "name": "afgani afgan",
+ "symbol": "AFN"
+ },
+ "MGA": {
+ "name": "ariary malgaÈ™",
+ "symbol": "MGA"
+ },
+ "THB": {
+ "name": "baht thailandez",
+ "symbol": "THB"
+ },
+ "PAB": {
+ "name": "balboa panameză",
+ "symbol": "PAB"
+ },
+ "ETB": {
+ "name": "birr etiopian",
+ "symbol": "ETB"
+ },
+ "VEF": {
+ "name": "bolivar venezuelean",
+ "symbol": "VEF"
+ },
+ "BOB": {
+ "name": "boliviano bolivian",
+ "symbol": "BOB"
+ },
+ "GHS": {
+ "name": "cedi ghanez",
+ "symbol": "GHS"
+ },
+ "CRC": {
+ "name": "colon costarican",
+ "symbol": "CRC"
+ },
+ "SVC": {
+ "name": "colon El Salvador",
+ "symbol": "SVC"
+ },
+ "NIO": {
+ "name": "cordoba nicaraguană",
+ "symbol": "NIO"
+ },
+ "CZK": {
+ "name": "coroană cehă",
+ "symbol": "CZK"
+ },
+ "DKK": {
+ "name": "coroană daneză",
+ "symbol": "DKK"
+ },
+ "ISK": {
+ "name": "coroană islandeză",
+ "symbol": "ISK"
+ },
+ "NOK": {
+ "name": "coroană norvegiană",
+ "symbol": "NOK"
+ },
+ "SEK": {
+ "name": "coroană suedeză",
+ "symbol": "SEK"
+ },
+ "GMD": {
+ "name": "dalasi din Gambia",
+ "symbol": "GMD"
+ },
+ "DZD": {
+ "name": "dinar algerian",
+ "symbol": "DZD"
+ },
+ "BHD": {
+ "name": "dinar din Bahrain",
+ "symbol": "BHD"
+ },
+ "JOD": {
+ "name": "dinar iordanian",
+ "symbol": "JOD"
+ },
+ "IQD": {
+ "name": "dinar irakian",
+ "symbol": "IQD"
+ },
+ "KWD": {
+ "name": "dinar kuweitian",
+ "symbol": "KWD"
+ },
+ "LYD": {
+ "name": "dinar libian",
+ "symbol": "LYD"
+ },
+ "MKD": {
+ "name": "dinar macedonean",
+ "symbol": "MKD"
+ },
+ "RSD": {
+ "name": "dinar sârbesc",
+ "symbol": "RSD"
+ },
+ "TND": {
+ "name": "dinar tunisian",
+ "symbol": "TND"
+ },
+ "AED": {
+ "name": "dirham din Emiratele Arabe Unite",
+ "symbol": "AED"
+ },
+ "MAD": {
+ "name": "dirham marocan",
+ "symbol": "MAD"
+ },
+ "STD": {
+ "name": "dobra Sao Tome și Principe",
+ "symbol": "STD"
+ },
+ "USD": {
+ "name": "dolar american",
+ "symbol": "USD"
+ },
+ "AUD": {
+ "name": "dolar australian",
+ "symbol": "AUD"
+ },
+ "BBD": {
+ "name": "dolar Barbados",
+ "symbol": "BBD"
+ },
+ "CAD": {
+ "name": "dolar canadian",
+ "symbol": "CAD"
+ },
+ "BSD": {
+ "name": "dolar din Bahamas",
+ "symbol": "BSD"
+ },
+ "BZD": {
+ "name": "dolar din Belize",
+ "symbol": "BZD"
+ },
+ "BMD": {
+ "name": "dolar din Bermuda",
+ "symbol": "BMD"
+ },
+ "BND": {
+ "name": "dolar din Brunei",
+ "symbol": "BND"
+ },
+ "XCD": {
+ "name": "dolar din Caraibele de Est",
+ "symbol": "XCD"
+ },
+ "HKD": {
+ "name": "dolar din Hong Kong",
+ "symbol": "HKD"
+ },
+ "KYD": {
+ "name": "dolar din Insulele Cayman",
+ "symbol": "KYD"
+ },
+ "SBD": {
+ "name": "dolar din Insulele Solomon",
+ "symbol": "SBD"
+ },
+ "TTD": {
+ "name": "dolar din Trinidad-Tobago",
+ "symbol": "TTD"
+ },
+ "FJD": {
+ "name": "dolar fijian",
+ "symbol": "FJD"
+ },
+ "GYD": {
+ "name": "dolar guyanez",
+ "symbol": "GYD"
+ },
+ "JMD": {
+ "name": "dolar jamaican",
+ "symbol": "JMD"
+ },
+ "LRD": {
+ "name": "dolar liberian",
+ "symbol": "LRD"
+ },
+ "NAD": {
+ "name": "dolar namibian",
+ "symbol": "NAD"
+ },
+ "NZD": {
+ "name": "dolar neozeelandez",
+ "symbol": "NZD"
+ },
+ "TWD": {
+ "name": "dolar nou din Taiwan",
+ "symbol": "TWD"
+ },
+ "SGD": {
+ "name": "dolar Singapore",
+ "symbol": "SGD"
+ },
+ "SRD": {
+ "name": "dolar surinamez",
+ "symbol": "SRD"
+ },
+ "ZWL": {
+ "name": "dolar Zimbabwe (2009)",
+ "symbol": "ZWL"
+ },
+ "VND": {
+ "name": "dong vietnamez",
+ "symbol": "VND"
+ },
+ "AMD": {
+ "name": "dram armenesc",
+ "symbol": "AMD"
+ },
+ "CVE": {
+ "name": "escudo din Capul Verde",
+ "symbol": "CVE"
+ },
+ "EUR": {
+ "name": "euro",
+ "symbol": "EUR"
+ },
+ "AWG": {
+ "name": "florin aruban",
+ "symbol": "AWG"
+ },
+ "HUF": {
+ "name": "forint maghiar",
+ "symbol": "HUF"
+ },
+ "BIF": {
+ "name": "franc burundez",
+ "symbol": "BIF"
+ },
+ "XOF": {
+ "name": "franc CFA BCEAO",
+ "symbol": "CFA"
+ },
+ "XAF": {
+ "name": "franc CFA BEAC",
+ "symbol": "FCFA"
+ },
+ "XPF": {
+ "name": "franc CFP",
+ "symbol": "CFPF"
+ },
+ "KMF": {
+ "name": "franc comorian",
+ "symbol": "KMF"
+ },
+ "CDF": {
+ "name": "franc congolez",
+ "symbol": "CDF"
+ },
+ "DJF": {
+ "name": "franc djiboutian",
+ "symbol": "DJF"
+ },
+ "CHF": {
+ "name": "franc elvețian",
+ "symbol": "CHF"
+ },
+ "GNF": {
+ "name": "franc guineean",
+ "symbol": "GNF"
+ },
+ "RWF": {
+ "name": "franc rwandez",
+ "symbol": "RWF"
+ },
+ "HTG": {
+ "name": "gourde din Haiti",
+ "symbol": "HTG"
+ },
+ "PYG": {
+ "name": "guarani paraguayan",
+ "symbol": "PYG"
+ },
+ "ANG": {
+ "name": "gulden din Antilele Olandeze",
+ "symbol": "ANG"
+ },
+ "UAH": {
+ "name": "hryvna ucraineană",
+ "symbol": "UAH"
+ },
+ "PGK": {
+ "name": "kina din Papua-Noua Guinee",
+ "symbol": "PGK"
+ },
+ "LAK": {
+ "name": "kip laoțian",
+ "symbol": "LAK"
+ },
+ "HRK": {
+ "name": "kuna croată",
+ "symbol": "HRK"
+ },
+ "MWK": {
+ "name": "kwacha malawiană",
+ "symbol": "MWK"
+ },
+ "ZMW": {
+ "name": "kwacha zambian",
+ "symbol": "ZMW"
+ },
+ "AOA": {
+ "name": "kwanza angoleză",
+ "symbol": "AOA"
+ },
+ "MMK": {
+ "name": "kyat din Myanmar",
+ "symbol": "MMK"
+ },
+ "GEL": {
+ "name": "lari georgian",
+ "symbol": "GEL"
+ },
+ "ALL": {
+ "name": "leka albaneză",
+ "symbol": "ALL"
+ },
+ "HNL": {
+ "name": "lempira honduriană",
+ "symbol": "HNL"
+ },
+ "SLL": {
+ "name": "leone din Sierra Leone",
+ "symbol": "SLL"
+ },
+ "MDL": {
+ "name": "leu moldovenesc",
+ "symbol": "MDL"
+ },
+ "RON": {
+ "name": "leu românesc",
+ "symbol": "RON"
+ },
+ "BGN": {
+ "name": "leva bulgărească",
+ "symbol": "BGN"
+ },
+ "SZL": {
+ "name": "lilangeni din Swaziland",
+ "symbol": "SZL"
+ },
+ "GIP": {
+ "name": "liră din Gibraltar",
+ "symbol": "GIP"
+ },
+ "FKP": {
+ "name": "liră din Insulele Falkland",
+ "symbol": "FKP"
+ },
+ "EGP": {
+ "name": "liră egipteană",
+ "symbol": "EGP"
+ },
+ "SHP": {
+ "name": "liră Insula Sf. Elena",
+ "symbol": "SHP"
+ },
+ "LBP": {
+ "name": "liră libaneză",
+ "symbol": "LBP"
+ },
+ "SYP": {
+ "name": "liră siriană",
+ "symbol": "SYP"
+ },
+ "GBP": {
+ "name": "liră sterlină",
+ "symbol": "GBP"
+ },
+ "SSP": {
+ "name": "liră sud-sudaneză",
+ "symbol": "SSP"
+ },
+ "SDG": {
+ "name": "liră sudaneză",
+ "symbol": "SDG"
+ },
+ "TRY": {
+ "name": "liră turcească",
+ "symbol": "TRY"
+ },
+ "LTL": {
+ "name": "litu lituanian",
+ "symbol": "LTL"
+ },
+ "LSL": {
+ "name": "loti lesothian",
+ "symbol": "LSL"
+ },
+ "AZN": {
+ "name": "manat azer",
+ "symbol": "AZN"
+ },
+ "TMT": {
+ "name": "manat turkmen",
+ "symbol": "TMT"
+ },
+ "BAM": {
+ "name": "marcă convertibilă din Bosnia și Herțegovina",
+ "symbol": "BAM"
+ },
+ "MZN": {
+ "name": "metical mozambican",
+ "symbol": "MZN"
+ },
+ "NGN": {
+ "name": "naira nigeriană",
+ "symbol": "NGN"
+ },
+ "ERN": {
+ "name": "nakfa eritreeană",
+ "symbol": "ERN"
+ },
+ "BTN": {
+ "name": "ngultrum din Bhutan",
+ "symbol": "BTN"
+ },
+ "MRO": {
+ "name": "ouguiya mauritană",
+ "symbol": "MRO"
+ },
+ "TOP": {
+ "name": "pa’anga tongană",
+ "symbol": "TOP"
+ },
+ "MOP": {
+ "name": "pataca din Macao",
+ "symbol": "MOP"
+ },
+ "ARS": {
+ "name": "peso argentinian",
+ "symbol": "ARS"
+ },
+ "CLP": {
+ "name": "peso chilian",
+ "symbol": "CLP"
+ },
+ "COP": {
+ "name": "peso columbian",
+ "symbol": "COP"
+ },
+ "CUP": {
+ "name": "peso cubanez",
+ "symbol": "CUP"
+ },
+ "CUC": {
+ "name": "peso cubanez convertibil",
+ "symbol": "CUC"
+ },
+ "DOP": {
+ "name": "peso dominican",
+ "symbol": "DOP"
+ },
+ "PHP": {
+ "name": "peso filipinez",
+ "symbol": "PHP"
+ },
+ "MXN": {
+ "name": "peso mexican",
+ "symbol": "MXN"
+ },
+ "UYU": {
+ "name": "peso uruguayan",
+ "symbol": "UYU"
+ },
+ "BWP": {
+ "name": "pula Botswana",
+ "symbol": "BWP"
+ },
+ "GTQ": {
+ "name": "quetzal guatemalez",
+ "symbol": "GTQ"
+ },
+ "ZAR": {
+ "name": "rand sud-african",
+ "symbol": "ZAR"
+ },
+ "BRL": {
+ "name": "real brazilian",
+ "symbol": "BRL"
+ },
+ "IRR": {
+ "name": "rial iranian",
+ "symbol": "IRR"
+ },
+ "OMR": {
+ "name": "rial omanez",
+ "symbol": "OMR"
+ },
+ "QAR": {
+ "name": "rial qatarian",
+ "symbol": "QAR"
+ },
+ "SAR": {
+ "name": "rial saudit",
+ "symbol": "SAR"
+ },
+ "YER": {
+ "name": "rial yemenit",
+ "symbol": "YER"
+ },
+ "KHR": {
+ "name": "riel cambodgian",
+ "symbol": "KHR"
+ },
+ "MYR": {
+ "name": "ringgit malaiezian",
+ "symbol": "MYR"
+ },
+ "BYR": {
+ "name": "rublă belarusă",
+ "symbol": "BYR"
+ },
+ "RUB": {
+ "name": "rublă rusească",
+ "symbol": "RUB"
+ },
+ "MVR": {
+ "name": "rufiyaa maldiviană",
+ "symbol": "MVR"
+ },
+ "SCR": {
+ "name": "rupie din Seychelles",
+ "symbol": "SCR"
+ },
+ "LKR": {
+ "name": "rupie din Sri Lanka",
+ "symbol": "LKR"
+ },
+ "INR": {
+ "name": "rupie indiană",
+ "symbol": "INR"
+ },
+ "IDR": {
+ "name": "rupie indoneziană",
+ "symbol": "IDR"
+ },
+ "MUR": {
+ "name": "rupie mauritiană",
+ "symbol": "MUR"
+ },
+ "NPR": {
+ "name": "rupie nepaleză",
+ "symbol": "NPR"
+ },
+ "PKR": {
+ "name": "rupie pakistaneză",
+ "symbol": "PKR"
+ },
+ "PEN": {
+ "name": "sol nou peruvian",
+ "symbol": "PEN"
+ },
+ "KGS": {
+ "name": "som kârgâz",
+ "symbol": "KGS"
+ },
+ "TJS": {
+ "name": "somoni tadjic",
+ "symbol": "TJS"
+ },
+ "UZS": {
+ "name": "sum Uzbekistan",
+ "symbol": "UZS"
+ },
+ "ILS": {
+ "name": "șechel israelian nou",
+ "symbol": "ILS"
+ },
+ "KES": {
+ "name": "șiling kenyan",
+ "symbol": "KES"
+ },
+ "SOS": {
+ "name": "șiling somalez",
+ "symbol": "SOS"
+ },
+ "TZS": {
+ "name": "șiling tanzanian",
+ "symbol": "TZS"
+ },
+ "UGX": {
+ "name": "șiling ugandez",
+ "symbol": "UGX"
+ },
+ "BDT": {
+ "name": "taka din Bangladesh",
+ "symbol": "BDT"
+ },
+ "WST": {
+ "name": "tala samoană",
+ "symbol": "WST"
+ },
+ "KZT": {
+ "name": "tenge kazahă",
+ "symbol": "KZT"
+ },
+ "MNT": {
+ "name": "tugrik mongol",
+ "symbol": "MNT"
+ },
+ "VUV": {
+ "name": "vatu din Vanuatu",
+ "symbol": "VUV"
+ },
+ "KPW": {
+ "name": "won nord-coreean",
+ "symbol": "KPW"
+ },
+ "KRW": {
+ "name": "won sud-coreean",
+ "symbol": "KRW"
+ },
+ "JPY": {
+ "name": "yen japonez",
+ "symbol": "JPY"
+ },
+ "CNY": {
+ "name": "yuan chinezesc",
+ "symbol": "CNY"
+ },
+ "PLN": {
+ "name": "zlot polonez",
+ "symbol": "PLN"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/currency/rof.json b/library/intl/resources/currency/rof.json
new file mode 100644
index 000000000..154a48d65
--- /dev/null
+++ b/library/intl/resources/currency/rof.json
@@ -0,0 +1,634 @@
+{
+ "AFN": {
+ "name": "AFN",
+ "symbol": "AFN"
+ },
+ "ALL": {
+ "name": "ALL",
+ "symbol": "ALL"
+ },
+ "AMD": {
+ "name": "AMD",
+ "symbol": "AMD"
+ },
+ "ANG": {
+ "name": "ANG",
+ "symbol": "ANG"
+ },
+ "ARS": {
+ "name": "ARS",
+ "symbol": "ARS"
+ },
+ "AWG": {
+ "name": "AWG",
+ "symbol": "AWG"
+ },
+ "AZN": {
+ "name": "AZN",
+ "symbol": "AZN"
+ },
+ "BAM": {
+ "name": "BAM",
+ "symbol": "BAM"
+ },
+ "BBD": {
+ "name": "BBD",
+ "symbol": "BBD"
+ },
+ "BDT": {
+ "name": "BDT",
+ "symbol": "BDT"
+ },
+ "BGN": {
+ "name": "BGN",
+ "symbol": "BGN"
+ },
+ "BMD": {
+ "name": "BMD",
+ "symbol": "BMD"
+ },
+ "BND": {
+ "name": "BND",
+ "symbol": "BND"
+ },
+ "BOB": {
+ "name": "BOB",
+ "symbol": "BOB"
+ },
+ "BRL": {
+ "name": "BRL",
+ "symbol": "R$"
+ },
+ "BSD": {
+ "name": "BSD",
+ "symbol": "BSD"
+ },
+ "BTN": {
+ "name": "BTN",
+ "symbol": "BTN"
+ },
+ "BYR": {
+ "name": "BYR",
+ "symbol": "BYR"
+ },
+ "BZD": {
+ "name": "BZD",
+ "symbol": "BZD"
+ },
+ "CLP": {
+ "name": "CLP",
+ "symbol": "CLP"
+ },
+ "COP": {
+ "name": "COP",
+ "symbol": "COP"
+ },
+ "CRC": {
+ "name": "CRC",
+ "symbol": "CRC"
+ },
+ "CUC": {
+ "name": "CUC",
+ "symbol": "CUC"
+ },
+ "CUP": {
+ "name": "CUP",
+ "symbol": "CUP"
+ },
+ "CZK": {
+ "name": "CZK",
+ "symbol": "CZK"
+ },
+ "DKK": {
+ "name": "DKK",
+ "symbol": "DKK"
+ },
+ "DOP": {
+ "name": "DOP",
+ "symbol": "DOP"
+ },
+ "FJD": {
+ "name": "FJD",
+ "symbol": "FJD"
+ },
+ "FKP": {
+ "name": "FKP",
+ "symbol": "FKP"
+ },
+ "GEL": {
+ "name": "GEL",
+ "symbol": "GEL"
+ },
+ "GHS": {
+ "name": "GHS",
+ "symbol": "GHS"
+ },
+ "GIP": {
+ "name": "GIP",
+ "symbol": "GIP"
+ },
+ "GNF": {
+ "name": "GNF",
+ "symbol": "GNF"
+ },
+ "GTQ": {
+ "name": "GTQ",
+ "symbol": "GTQ"
+ },
+ "GYD": {
+ "name": "GYD",
+ "symbol": "GYD"
+ },
+ "ZAR": {
+ "name": "heleri sa Afrika Kusini",
+ "symbol": "ZAR"
+ },
+ "DZD": {
+ "name": "heleri sa Aljeria",
+ "symbol": "DZD"
+ },
+ "AOA": {
+ "name": "heleri sa Angola",
+ "symbol": "AOA"
+ },
+ "AUD": {
+ "name": "heleri sa Australia",
+ "symbol": "A$"
+ },
+ "BHD": {
+ "name": "heleri sa Bahareni",
+ "symbol": "BHD"
+ },
+ "BWP": {
+ "name": "heleri sa Botswana",
+ "symbol": "BWP"
+ },
+ "MGA": {
+ "name": "heleri sa Bukini",
+ "symbol": "MGA"
+ },
+ "BIF": {
+ "name": "heleri sa Burundi",
+ "symbol": "BIF"
+ },
+ "XOF": {
+ "name": "heleri sa CFA BCEAO",
+ "symbol": "CFA"
+ },
+ "XAF": {
+ "name": "heleri sa CFA BEAC",
+ "symbol": "FCFA"
+ },
+ "CNY": {
+ "name": "heleri sa China",
+ "symbol": "CNÂ¥"
+ },
+ "ERN": {
+ "name": "heleri sa Eritrea",
+ "symbol": "ERN"
+ },
+ "AED": {
+ "name": "heleri sa Falme za Kiarabu",
+ "symbol": "AED"
+ },
+ "GMD": {
+ "name": "heleri sa Gambia",
+ "symbol": "GMD"
+ },
+ "INR": {
+ "name": "heleri sa India",
+ "symbol": "₹"
+ },
+ "JPY": {
+ "name": "heleri sa Japani",
+ "symbol": "JPÂ¥"
+ },
+ "DJF": {
+ "name": "heleri sa Jibuti",
+ "symbol": "DJF"
+ },
+ "CAD": {
+ "name": "heleri sa Kanada",
+ "symbol": "CA$"
+ },
+ "KES": {
+ "name": "heleri sa Kenya",
+ "symbol": "KES"
+ },
+ "CVE": {
+ "name": "heleri sa Kepuvede",
+ "symbol": "CVE"
+ },
+ "KMF": {
+ "name": "heleri sa Komoro",
+ "symbol": "KMF"
+ },
+ "CDF": {
+ "name": "heleri sa Kongo",
+ "symbol": "CDF"
+ },
+ "LSL": {
+ "name": "heleri sa Lesoto",
+ "symbol": "LSL"
+ },
+ "LRD": {
+ "name": "heleri sa Liberia",
+ "symbol": "LRD"
+ },
+ "LYD": {
+ "name": "heleri sa Libya",
+ "symbol": "LYD"
+ },
+ "MWK": {
+ "name": "heleri sa Malawi",
+ "symbol": "MWK"
+ },
+ "USD": {
+ "name": "heleri sa Marekani",
+ "symbol": "US$"
+ },
+ "EGP": {
+ "name": "heleri sa Misri",
+ "symbol": "EGP"
+ },
+ "MUR": {
+ "name": "heleri sa Morisi",
+ "symbol": "MUR"
+ },
+ "MRO": {
+ "name": "heleri sa Moritania",
+ "symbol": "MRO"
+ },
+ "MAD": {
+ "name": "heleri sa Moroko",
+ "symbol": "MAD"
+ },
+ "NAD": {
+ "name": "heleri sa Namibia",
+ "symbol": "NAD"
+ },
+ "NGN": {
+ "name": "heleri sa Nijeria",
+ "symbol": "NGN"
+ },
+ "RWF": {
+ "name": "heleri sa Rwanda",
+ "symbol": "RWF"
+ },
+ "SHP": {
+ "name": "heleri sa Santahelena",
+ "symbol": "SHP"
+ },
+ "STD": {
+ "name": "heleri sa Sao Tome na Principe",
+ "symbol": "STD"
+ },
+ "SAR": {
+ "name": "heleri sa Saudia",
+ "symbol": "SAR"
+ },
+ "SCR": {
+ "name": "heleri sa Shelisheli",
+ "symbol": "SCR"
+ },
+ "SOS": {
+ "name": "heleri sa Somalia",
+ "symbol": "SOS"
+ },
+ "SDG": {
+ "name": "heleri sa Sudani",
+ "symbol": "SDG"
+ },
+ "TZS": {
+ "name": "heleri sa Tanzania",
+ "symbol": "TSh"
+ },
+ "TND": {
+ "name": "heleri sa Tunisia",
+ "symbol": "TND"
+ },
+ "UGX": {
+ "name": "heleri sa Uganda",
+ "symbol": "UGX"
+ },
+ "ETB": {
+ "name": "heleri sa Uhabeshi",
+ "symbol": "ETB"
+ },
+ "GBP": {
+ "name": "heleri sa Uingereza",
+ "symbol": "£"
+ },
+ "CHF": {
+ "name": "heleri sa Uswisi",
+ "symbol": "CHF"
+ },
+ "ZMW": {
+ "name": "heleri sa Zambia",
+ "symbol": "ZMW"
+ },
+ "HKD": {
+ "name": "HKD",
+ "symbol": "HK$"
+ },
+ "HNL": {
+ "name": "HNL",
+ "symbol": "HNL"
+ },
+ "HRK": {
+ "name": "HRK",
+ "symbol": "HRK"
+ },
+ "HTG": {
+ "name": "HTG",
+ "symbol": "HTG"
+ },
+ "HUF": {
+ "name": "HUF",
+ "symbol": "HUF"
+ },
+ "IDR": {
+ "name": "IDR",
+ "symbol": "IDR"
+ },
+ "ILS": {
+ "name": "ILS",
+ "symbol": "₪"
+ },
+ "IQD": {
+ "name": "IQD",
+ "symbol": "IQD"
+ },
+ "IRR": {
+ "name": "IRR",
+ "symbol": "IRR"
+ },
+ "ISK": {
+ "name": "ISK",
+ "symbol": "ISK"
+ },
+ "JMD": {
+ "name": "JMD",
+ "symbol": "JMD"
+ },
+ "JOD": {
+ "name": "JOD",
+ "symbol": "JOD"
+ },
+ "KGS": {
+ "name": "KGS",
+ "symbol": "KGS"
+ },
+ "KHR": {
+ "name": "KHR",
+ "symbol": "KHR"
+ },
+ "KPW": {
+ "name": "KPW",
+ "symbol": "KPW"
+ },
+ "KRW": {
+ "name": "KRW",
+ "symbol": "â‚©"
+ },
+ "KWD": {
+ "name": "KWD",
+ "symbol": "KWD"
+ },
+ "KYD": {
+ "name": "KYD",
+ "symbol": "KYD"
+ },
+ "KZT": {
+ "name": "KZT",
+ "symbol": "KZT"
+ },
+ "LAK": {
+ "name": "LAK",
+ "symbol": "LAK"
+ },
+ "LBP": {
+ "name": "LBP",
+ "symbol": "LBP"
+ },
+ "SLL": {
+ "name": "leoni",
+ "symbol": "SLL"
+ },
+ "SZL": {
+ "name": "lilangeni",
+ "symbol": "SZL"
+ },
+ "LKR": {
+ "name": "LKR",
+ "symbol": "LKR"
+ },
+ "LTL": {
+ "name": "LTL",
+ "symbol": "LTL"
+ },
+ "MDL": {
+ "name": "MDL",
+ "symbol": "MDL"
+ },
+ "MKD": {
+ "name": "MKD",
+ "symbol": "MKD"
+ },
+ "MMK": {
+ "name": "MMK",
+ "symbol": "MMK"
+ },
+ "MNT": {
+ "name": "MNT",
+ "symbol": "MNT"
+ },
+ "MOP": {
+ "name": "MOP",
+ "symbol": "MOP"
+ },
+ "MVR": {
+ "name": "MVR",
+ "symbol": "MVR"
+ },
+ "MXN": {
+ "name": "MXN",
+ "symbol": "MX$"
+ },
+ "MYR": {
+ "name": "MYR",
+ "symbol": "MYR"
+ },
+ "MZN": {
+ "name": "MZN",
+ "symbol": "MZN"
+ },
+ "NIO": {
+ "name": "NIO",
+ "symbol": "NIO"
+ },
+ "NOK": {
+ "name": "NOK",
+ "symbol": "NOK"
+ },
+ "NPR": {
+ "name": "NPR",
+ "symbol": "NPR"
+ },
+ "NZD": {
+ "name": "NZD",
+ "symbol": "NZ$"
+ },
+ "OMR": {
+ "name": "OMR",
+ "symbol": "OMR"
+ },
+ "PAB": {
+ "name": "PAB",
+ "symbol": "PAB"
+ },
+ "PEN": {
+ "name": "PEN",
+ "symbol": "PEN"
+ },
+ "PGK": {
+ "name": "PGK",
+ "symbol": "PGK"
+ },
+ "PHP": {
+ "name": "PHP",
+ "symbol": "PHP"
+ },
+ "PKR": {
+ "name": "PKR",
+ "symbol": "PKR"
+ },
+ "PLN": {
+ "name": "PLN",
+ "symbol": "PLN"
+ },
+ "PYG": {
+ "name": "PYG",
+ "symbol": "PYG"
+ },
+ "QAR": {
+ "name": "QAR",
+ "symbol": "QAR"
+ },
+ "RON": {
+ "name": "RON",
+ "symbol": "RON"
+ },
+ "RSD": {
+ "name": "RSD",
+ "symbol": "RSD"
+ },
+ "RUB": {
+ "name": "RUB",
+ "symbol": "RUB"
+ },
+ "SBD": {
+ "name": "SBD",
+ "symbol": "SBD"
+ },
+ "SEK": {
+ "name": "SEK",
+ "symbol": "SEK"
+ },
+ "SGD": {
+ "name": "SGD",
+ "symbol": "SGD"
+ },
+ "SRD": {
+ "name": "SRD",
+ "symbol": "SRD"
+ },
+ "SSP": {
+ "name": "SSP",
+ "symbol": "SSP"
+ },
+ "SVC": {
+ "name": "SVC",
+ "symbol": "SVC"
+ },
+ "SYP": {
+ "name": "SYP",
+ "symbol": "SYP"
+ },
+ "THB": {
+ "name": "THB",
+ "symbol": "THB"
+ },
+ "TJS": {
+ "name": "TJS",
+ "symbol": "TJS"
+ },
+ "TMT": {
+ "name": "TMT",
+ "symbol": "TMT"
+ },
+ "TOP": {
+ "name": "TOP",
+ "symbol": "TOP"
+ },
+ "TRY": {
+ "name": "TRY",
+ "symbol": "TRY"
+ },
+ "TTD": {
+ "name": "TTD",
+ "symbol": "TTD"
+ },
+ "TWD": {
+ "name": "TWD",
+ "symbol": "NT$"
+ },
+ "UAH": {
+ "name": "UAH",
+ "symbol": "UAH"
+ },
+ "UYU": {
+ "name": "UYU",
+ "symbol": "UYU"
+ },
+ "UZS": {
+ "name": "UZS",
+ "symbol": "UZS"
+ },
+ "VEF": {
+ "name": "VEF",
+ "symbol": "VEF"
+ },
+ "VND": {
+ "name": "VND",
+ "symbol": "â‚«"
+ },
+ "VUV": {
+ "name": "VUV",
+ "symbol": "VUV"
+ },
+ "WST": {
+ "name": "WST",
+ "symbol": "WST"
+ },
+ "XCD": {
+ "name": "XCD",
+ "symbol": "EC$"
+ },
+ "XPF": {
+ "name": "XPF",
+ "symbol": "CFPF"
+ },
+ "YER": {
+ "name": "YER",
+ "symbol": "YER"
+ },
+ "EUR": {
+ "name": "yuro",
+ "symbol": "€"
+ },
+ "ZWL": {
+ "name": "ZWL",
+ "symbol": "ZWL"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/currency/ru.json b/library/intl/resources/currency/ru.json
new file mode 100644
index 000000000..71520f89b
--- /dev/null
+++ b/library/intl/resources/currency/ru.json
@@ -0,0 +1,634 @@
+{
+ "AUD": {
+ "name": "ÐвÑтралийÑкий доллар",
+ "symbol": "A$"
+ },
+ "AZN": {
+ "name": "ÐзербайджанÑкий манат",
+ "symbol": "AZN"
+ },
+ "ALL": {
+ "name": "ÐлбанÑкий лек",
+ "symbol": "ALL"
+ },
+ "DZD": {
+ "name": "ÐлжирÑкий динар",
+ "symbol": "DZD"
+ },
+ "GBP": {
+ "name": "ÐнглийÑкий фунт Ñтерлингов",
+ "symbol": "£"
+ },
+ "AOA": {
+ "name": "ÐнгольÑÐºÐ°Ñ ÐºÐ²Ð°Ð½Ð·Ð°",
+ "symbol": "AOA"
+ },
+ "ARS": {
+ "name": "ÐргентинÑкое пеÑо",
+ "symbol": "ARS"
+ },
+ "AMD": {
+ "name": "ÐрмÑнÑкий драм",
+ "symbol": "AMD"
+ },
+ "AWG": {
+ "name": "ÐрубанÑкий флорин",
+ "symbol": "AWG"
+ },
+ "AFN": {
+ "name": "ÐфганÑкий афгани",
+ "symbol": "AFN"
+ },
+ "BSD": {
+ "name": "БагамÑкий доллар",
+ "symbol": "BSD"
+ },
+ "BDT": {
+ "name": "БангладешÑÐºÐ°Ñ Ñ‚Ð°ÐºÐ°",
+ "symbol": "BDT"
+ },
+ "BBD": {
+ "name": "БарбадоÑÑкий доллар",
+ "symbol": "BBD"
+ },
+ "BHD": {
+ "name": "БахрейнÑкий динар",
+ "symbol": "BHD"
+ },
+ "BZD": {
+ "name": "БелизÑкий доллар",
+ "symbol": "BZD"
+ },
+ "BYR": {
+ "name": "БелоруÑÑкий рубль",
+ "symbol": "BYR"
+ },
+ "BMD": {
+ "name": "БермудÑкий доллар",
+ "symbol": "BMD"
+ },
+ "BGN": {
+ "name": "БолгарÑкий лев",
+ "symbol": "BGN"
+ },
+ "BOB": {
+ "name": "БоливийÑкий боливиано",
+ "symbol": "BOB"
+ },
+ "BWP": {
+ "name": "БотÑванÑÐºÐ°Ñ Ð¿ÑƒÐ»Ð°",
+ "symbol": "BWP"
+ },
+ "BRL": {
+ "name": "БразильÑкий реал",
+ "symbol": "R$"
+ },
+ "BND": {
+ "name": "БрунейÑкий доллар",
+ "symbol": "BND"
+ },
+ "BIF": {
+ "name": "БурундийÑкий франк",
+ "symbol": "BIF"
+ },
+ "BTN": {
+ "name": "БутанÑкий нгултрум",
+ "symbol": "BTN"
+ },
+ "VUV": {
+ "name": "Вату Вануату",
+ "symbol": "VUV"
+ },
+ "HUF": {
+ "name": "ВенгерÑкий форинт",
+ "symbol": "HUF"
+ },
+ "VEF": {
+ "name": "ВенеÑуÑльÑкий боливар",
+ "symbol": "VEF"
+ },
+ "XCD": {
+ "name": "ВоÑточно-карибÑкий доллар",
+ "symbol": "EC$"
+ },
+ "VND": {
+ "name": "ВьетнамÑкий донг",
+ "symbol": "â‚«"
+ },
+ "HTG": {
+ "name": "ГаитÑнÑкий гурд",
+ "symbol": "HTG"
+ },
+ "GYD": {
+ "name": "ГайанÑкий доллар",
+ "symbol": "GYD"
+ },
+ "GMD": {
+ "name": "ГамбийÑкий далаÑи",
+ "symbol": "GMD"
+ },
+ "GHS": {
+ "name": "ГанÑкий Ñеди",
+ "symbol": "GHS"
+ },
+ "GTQ": {
+ "name": "ГватемальÑкий кетÑаль",
+ "symbol": "GTQ"
+ },
+ "GNF": {
+ "name": "ГвинейÑкий франк",
+ "symbol": "GNF"
+ },
+ "GIP": {
+ "name": "ГибралтарÑкий фунт",
+ "symbol": "GIP"
+ },
+ "HNL": {
+ "name": "ГондураÑÑÐºÐ°Ñ Ð»ÐµÐ¼Ð¿Ð¸Ñ€Ð°",
+ "symbol": "HNL"
+ },
+ "HKD": {
+ "name": "ГонконгÑкий доллар",
+ "symbol": "HK$"
+ },
+ "GEL": {
+ "name": "ГрузинÑкий лари",
+ "symbol": "GEL"
+ },
+ "DKK": {
+ "name": "ДатÑÐºÐ°Ñ ÐºÑ€Ð¾Ð½Ð°",
+ "symbol": "DKK"
+ },
+ "AED": {
+ "name": "Дирхам ОÐЭ",
+ "symbol": "AED"
+ },
+ "STD": {
+ "name": "Добра Сант-Томе и ПринÑипи",
+ "symbol": "STD"
+ },
+ "ZWL": {
+ "name": "Доллар Зимбабве (2009)",
+ "symbol": "ZWL"
+ },
+ "KYD": {
+ "name": "Доллар Каймановых оÑтровов",
+ "symbol": "KYD"
+ },
+ "NAD": {
+ "name": "Доллар Ðамибии",
+ "symbol": "NAD"
+ },
+ "SBD": {
+ "name": "Доллар Соломоновых оÑтровов",
+ "symbol": "SBD"
+ },
+ "USD": {
+ "name": "Доллар СШÐ",
+ "symbol": "$"
+ },
+ "TTD": {
+ "name": "Доллар Тринидада и Тобаго",
+ "symbol": "TTD"
+ },
+ "FJD": {
+ "name": "Доллар Фиджи",
+ "symbol": "FJD"
+ },
+ "DOP": {
+ "name": "ДоминиканÑкое пеÑо",
+ "symbol": "DOP"
+ },
+ "EUR": {
+ "name": "Евро",
+ "symbol": "€"
+ },
+ "EGP": {
+ "name": "ЕгипетÑкий фунт",
+ "symbol": "EGP"
+ },
+ "ZMW": {
+ "name": "ЗамбийÑÐºÐ°Ñ ÐºÐ²Ð°Ñ‡Ð°",
+ "symbol": "ZMW"
+ },
+ "INR": {
+ "name": "ИндийÑÐºÐ°Ñ Ñ€ÑƒÐ¿Ð¸Ñ",
+ "symbol": "₹"
+ },
+ "IDR": {
+ "name": "ИндонезийÑÐºÐ°Ñ Ñ€ÑƒÐ¿Ð¸Ñ",
+ "symbol": "IDR"
+ },
+ "JOD": {
+ "name": "ИорданÑкий динар",
+ "symbol": "JOD"
+ },
+ "IQD": {
+ "name": "ИракÑкий динар",
+ "symbol": "IQD"
+ },
+ "IRR": {
+ "name": "ИранÑкий риал",
+ "symbol": "IRR"
+ },
+ "ISK": {
+ "name": "ИÑландÑÐºÐ°Ñ ÐºÑ€Ð¾Ð½Ð°",
+ "symbol": "ISK"
+ },
+ "YER": {
+ "name": "ЙеменÑкий риал",
+ "symbol": "YER"
+ },
+ "KZT": {
+ "name": "КазахÑкий тенге",
+ "symbol": "KZT"
+ },
+ "KHR": {
+ "name": "КамбоджийÑкий риель",
+ "symbol": "KHR"
+ },
+ "CAD": {
+ "name": "КанадÑкий доллар",
+ "symbol": "CA$"
+ },
+ "QAR": {
+ "name": "КатарÑкий риал",
+ "symbol": "QAR"
+ },
+ "KES": {
+ "name": "КенийÑкий шиллинг",
+ "symbol": "KES"
+ },
+ "PGK": {
+ "name": "Кина Папуа — Ðовой Гвинеи",
+ "symbol": "PGK"
+ },
+ "KGS": {
+ "name": "КиргизÑкий Ñом",
+ "symbol": "KGS"
+ },
+ "CNY": {
+ "name": "КитайÑкий юань",
+ "symbol": "CNÂ¥"
+ },
+ "COP": {
+ "name": "КолумбийÑкое пеÑо",
+ "symbol": "COP"
+ },
+ "BAM": {
+ "name": "ÐšÐ¾Ð½Ð²ÐµÑ€Ñ‚Ð¸Ñ€ÑƒÐµÐ¼Ð°Ñ Ð¼Ð°Ñ€ÐºÐ° БоÑнии и Герцеговины",
+ "symbol": "BAM"
+ },
+ "CDF": {
+ "name": "КонголезÑкий франк",
+ "symbol": "CDF"
+ },
+ "CRC": {
+ "name": "КоÑтариканÑкий колон",
+ "symbol": "CRC"
+ },
+ "CUC": {
+ "name": "КубинÑкое конвертируемое пеÑо",
+ "symbol": "CUC"
+ },
+ "CUP": {
+ "name": "КубинÑкое пеÑо",
+ "symbol": "CUP"
+ },
+ "KWD": {
+ "name": "КувейтÑкий динар",
+ "symbol": "KWD"
+ },
+ "LAK": {
+ "name": "ЛаоÑÑкий кип",
+ "symbol": "LAK"
+ },
+ "SLL": {
+ "name": "Леоне",
+ "symbol": "SLL"
+ },
+ "LRD": {
+ "name": "ЛиберийÑкий доллар",
+ "symbol": "LRD"
+ },
+ "LBP": {
+ "name": "ЛиванÑкий фунт",
+ "symbol": "LBP"
+ },
+ "LYD": {
+ "name": "ЛивийÑкий динар",
+ "symbol": "LYD"
+ },
+ "LTL": {
+ "name": "ЛитовÑкий лит",
+ "symbol": "LTL"
+ },
+ "LSL": {
+ "name": "Лоти",
+ "symbol": "LSL"
+ },
+ "MUR": {
+ "name": "МаврикийÑÐºÐ°Ñ Ñ€ÑƒÐ¿Ð¸Ñ",
+ "symbol": "MUR"
+ },
+ "MRO": {
+ "name": "МавританÑÐºÐ°Ñ ÑƒÐ³Ð¸Ñ",
+ "symbol": "MRO"
+ },
+ "MKD": {
+ "name": "МакедонÑкий динар",
+ "symbol": "MKD"
+ },
+ "MWK": {
+ "name": "МалавийÑÐºÐ°Ñ ÐºÐ²Ð°Ñ‡Ð°",
+ "symbol": "MWK"
+ },
+ "MGA": {
+ "name": "МалагаÑийÑкий ариари",
+ "symbol": "MGA"
+ },
+ "MYR": {
+ "name": "МалайзийÑкий ринггит",
+ "symbol": "MYR"
+ },
+ "MVR": {
+ "name": "МальдивÑÐºÐ°Ñ Ñ€ÑƒÑ„Ð¸Ñ",
+ "symbol": "MVR"
+ },
+ "MAD": {
+ "name": "МарокканÑкий дирхам",
+ "symbol": "MAD"
+ },
+ "MXN": {
+ "name": "МекÑиканÑкое пеÑо",
+ "symbol": "MX$"
+ },
+ "MZN": {
+ "name": "МозамбикÑкий метикал",
+ "symbol": "MZN"
+ },
+ "MDL": {
+ "name": "МолдавÑкий лей",
+ "symbol": "MDL"
+ },
+ "MNT": {
+ "name": "МонгольÑкий тугрик",
+ "symbol": "MNT"
+ },
+ "MMK": {
+ "name": "МьÑнманÑкий кьÑÑ‚",
+ "symbol": "MMK"
+ },
+ "ERN": {
+ "name": "Ðакфа",
+ "symbol": "ERN"
+ },
+ "NPR": {
+ "name": "ÐепальÑÐºÐ°Ñ Ñ€ÑƒÐ¿Ð¸Ñ",
+ "symbol": "NPR"
+ },
+ "NGN": {
+ "name": "ÐигерийÑÐºÐ°Ñ Ð½Ð°Ð¹Ñ€Ð°",
+ "symbol": "NGN"
+ },
+ "ANG": {
+ "name": "ÐидерландÑкий антильÑкий гульден",
+ "symbol": "ANG"
+ },
+ "NIO": {
+ "name": "ÐикарагуанÑÐºÐ°Ñ ÐºÐ¾Ñ€Ð´Ð¾Ð±Ð°",
+ "symbol": "NIO"
+ },
+ "NZD": {
+ "name": "ÐовозеландÑкий доллар",
+ "symbol": "NZ$"
+ },
+ "ILS": {
+ "name": "Ðовый израильÑкий шекель",
+ "symbol": "₪"
+ },
+ "TWD": {
+ "name": "Ðовый тайваньÑкий доллар",
+ "symbol": "NT$"
+ },
+ "NOK": {
+ "name": "ÐорвежÑÐºÐ°Ñ ÐºÑ€Ð¾Ð½Ð°",
+ "symbol": "NOK"
+ },
+ "OMR": {
+ "name": "ОманÑкий риал",
+ "symbol": "OMR"
+ },
+ "PKR": {
+ "name": "ПакиÑтанÑÐºÐ°Ñ Ñ€ÑƒÐ¿Ð¸Ñ",
+ "symbol": "PKR"
+ },
+ "PAB": {
+ "name": "ПанамÑкое бальбоа",
+ "symbol": "PAB"
+ },
+ "PYG": {
+ "name": "ПарагвайÑкий гуарани",
+ "symbol": "PYG"
+ },
+ "MOP": {
+ "name": "Патака Макао",
+ "symbol": "MOP"
+ },
+ "PEN": {
+ "name": "ПеруанÑкий новый Ñоль",
+ "symbol": "PEN"
+ },
+ "PLN": {
+ "name": "ПольÑкий злотый",
+ "symbol": "PLN"
+ },
+ "RUB": {
+ "name": "РоÑÑийÑкий рубль",
+ "symbol": "руб."
+ },
+ "RON": {
+ "name": "РумынÑкий лей",
+ "symbol": "RON"
+ },
+ "SVC": {
+ "name": "СальвадорÑкий колон",
+ "symbol": "SVC"
+ },
+ "WST": {
+ "name": "СамоанÑÐºÐ°Ñ Ñ‚Ð°Ð»Ð°",
+ "symbol": "WST"
+ },
+ "SAR": {
+ "name": "СаудовÑкий риал",
+ "symbol": "SAR"
+ },
+ "SZL": {
+ "name": "СвазилендÑкий лилангени",
+ "symbol": "SZL"
+ },
+ "KPW": {
+ "name": "СеверокорейÑÐºÐ°Ñ Ð²Ð¾Ð½Ð°",
+ "symbol": "KPW"
+ },
+ "SCR": {
+ "name": "СейшельÑÐºÐ°Ñ Ñ€ÑƒÐ¿Ð¸Ñ",
+ "symbol": "SCR"
+ },
+ "RSD": {
+ "name": "СербÑкий динар",
+ "symbol": "RSD"
+ },
+ "SGD": {
+ "name": "СингапурÑкий доллар",
+ "symbol": "SGD"
+ },
+ "SYP": {
+ "name": "СирийÑкий фунт",
+ "symbol": "SYP"
+ },
+ "SOS": {
+ "name": "СомалийÑкий шиллинг",
+ "symbol": "SOS"
+ },
+ "SDG": {
+ "name": "СуданÑкий фунт",
+ "symbol": "SDG"
+ },
+ "SRD": {
+ "name": "СуринамÑкий доллар",
+ "symbol": "SRD"
+ },
+ "TJS": {
+ "name": "ТаджикÑкий Ñомони",
+ "symbol": "TJS"
+ },
+ "THB": {
+ "name": "ТаиландÑкий бат",
+ "symbol": "฿"
+ },
+ "TZS": {
+ "name": "ТанзанийÑкий шиллинг",
+ "symbol": "TZS"
+ },
+ "TOP": {
+ "name": "ТонганÑÐºÐ°Ñ Ð¿Ð°Ð°Ð½Ð³Ð°",
+ "symbol": "TOP"
+ },
+ "TND": {
+ "name": "ТуниÑÑкий динар",
+ "symbol": "TND"
+ },
+ "TRY": {
+ "name": "Ð¢ÑƒÑ€ÐµÑ†ÐºÐ°Ñ Ð»Ð¸Ñ€Ð°",
+ "symbol": "TRY"
+ },
+ "TMT": {
+ "name": "ТуркменÑкий новый манат",
+ "symbol": "ТМТ"
+ },
+ "UGX": {
+ "name": "УгандийÑкий шиллинг",
+ "symbol": "UGX"
+ },
+ "UZS": {
+ "name": "УзбекÑкий Ñум",
+ "symbol": "UZS"
+ },
+ "UAH": {
+ "name": "УкраинÑÐºÐ°Ñ Ð³Ñ€Ð¸Ð²Ð½Ð°",
+ "symbol": "â‚´"
+ },
+ "UYU": {
+ "name": "УругвайÑкое пеÑо",
+ "symbol": "UYU"
+ },
+ "PHP": {
+ "name": "ФилиппинÑкое пеÑо",
+ "symbol": "PHP"
+ },
+ "DJF": {
+ "name": "Франк Джибути",
+ "symbol": "DJF"
+ },
+ "KMF": {
+ "name": "Франк КоморÑких оÑтровов",
+ "symbol": "KMF"
+ },
+ "XAF": {
+ "name": "Франк КФРВЕÐС",
+ "symbol": "FCFA"
+ },
+ "XOF": {
+ "name": "Франк КФРВСЕÐО",
+ "symbol": "CFA"
+ },
+ "RWF": {
+ "name": "Франк Руанды",
+ "symbol": "RWF"
+ },
+ "XPF": {
+ "name": "ФранцузÑкий тихоокеанÑкий франк",
+ "symbol": "CFPF"
+ },
+ "SHP": {
+ "name": "Фунт оÑтрова СвÑтой Елены",
+ "symbol": "SHP"
+ },
+ "FKP": {
+ "name": "Фунт ФолклендÑких оÑтровов",
+ "symbol": "FKP"
+ },
+ "HRK": {
+ "name": "ХорватÑÐºÐ°Ñ ÐºÑƒÐ½Ð°",
+ "symbol": "HRK"
+ },
+ "CZK": {
+ "name": "ЧешÑÐºÐ°Ñ ÐºÑ€Ð¾Ð½Ð°",
+ "symbol": "CZK"
+ },
+ "CLP": {
+ "name": "ЧилийÑкое пеÑо",
+ "symbol": "CLP"
+ },
+ "SEK": {
+ "name": "ШведÑÐºÐ°Ñ ÐºÑ€Ð¾Ð½Ð°",
+ "symbol": "SEK"
+ },
+ "CHF": {
+ "name": "ШвейцарÑкий франк",
+ "symbol": "CHF"
+ },
+ "LKR": {
+ "name": "Шри-ЛанкийÑÐºÐ°Ñ Ñ€ÑƒÐ¿Ð¸Ñ",
+ "symbol": "LKR"
+ },
+ "CVE": {
+ "name": "ЭÑкудо Кабо-Верде",
+ "symbol": "CVE"
+ },
+ "ETB": {
+ "name": "ЭфиопÑкий быр",
+ "symbol": "ETB"
+ },
+ "ZAR": {
+ "name": "ЮжноафриканÑкий Ñ€Ñнд",
+ "symbol": "ZAR"
+ },
+ "KRW": {
+ "name": "ЮжнокорейÑÐºÐ°Ñ Ð²Ð¾Ð½Ð°",
+ "symbol": "â‚©"
+ },
+ "SSP": {
+ "name": "ЮжноÑуданÑкий фунт",
+ "symbol": "SSP"
+ },
+ "JMD": {
+ "name": "ЯмайÑкий доллар",
+ "symbol": "JMD"
+ },
+ "JPY": {
+ "name": "ЯпонÑÐºÐ°Ñ Ð¸ÐµÐ½Ð°",
+ "symbol": "Â¥"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/currency/rwk.json b/library/intl/resources/currency/rwk.json
new file mode 100644
index 000000000..655670a30
--- /dev/null
+++ b/library/intl/resources/currency/rwk.json
@@ -0,0 +1,634 @@
+{
+ "AFN": {
+ "name": "AFN",
+ "symbol": "AFN"
+ },
+ "ALL": {
+ "name": "ALL",
+ "symbol": "ALL"
+ },
+ "AMD": {
+ "name": "AMD",
+ "symbol": "AMD"
+ },
+ "ANG": {
+ "name": "ANG",
+ "symbol": "ANG"
+ },
+ "ARS": {
+ "name": "ARS",
+ "symbol": "ARS"
+ },
+ "AWG": {
+ "name": "AWG",
+ "symbol": "AWG"
+ },
+ "AZN": {
+ "name": "AZN",
+ "symbol": "AZN"
+ },
+ "BAM": {
+ "name": "BAM",
+ "symbol": "BAM"
+ },
+ "BBD": {
+ "name": "BBD",
+ "symbol": "BBD"
+ },
+ "BDT": {
+ "name": "BDT",
+ "symbol": "BDT"
+ },
+ "BGN": {
+ "name": "BGN",
+ "symbol": "BGN"
+ },
+ "ETB": {
+ "name": "Bir ya Uhabeshi",
+ "symbol": "ETB"
+ },
+ "BMD": {
+ "name": "BMD",
+ "symbol": "BMD"
+ },
+ "BND": {
+ "name": "BND",
+ "symbol": "BND"
+ },
+ "BOB": {
+ "name": "BOB",
+ "symbol": "BOB"
+ },
+ "BRL": {
+ "name": "BRL",
+ "symbol": "R$"
+ },
+ "BSD": {
+ "name": "BSD",
+ "symbol": "BSD"
+ },
+ "BTN": {
+ "name": "BTN",
+ "symbol": "BTN"
+ },
+ "BYR": {
+ "name": "BYR",
+ "symbol": "BYR"
+ },
+ "BZD": {
+ "name": "BZD",
+ "symbol": "BZD"
+ },
+ "CLP": {
+ "name": "CLP",
+ "symbol": "CLP"
+ },
+ "COP": {
+ "name": "COP",
+ "symbol": "COP"
+ },
+ "CRC": {
+ "name": "CRC",
+ "symbol": "CRC"
+ },
+ "CUC": {
+ "name": "CUC",
+ "symbol": "CUC"
+ },
+ "CUP": {
+ "name": "CUP",
+ "symbol": "CUP"
+ },
+ "CZK": {
+ "name": "CZK",
+ "symbol": "CZK"
+ },
+ "GMD": {
+ "name": "Dalasi ya Gambia",
+ "symbol": "GMD"
+ },
+ "DZD": {
+ "name": "Dinari ya Aljeria",
+ "symbol": "DZD"
+ },
+ "BHD": {
+ "name": "Dinari ya Bahareni",
+ "symbol": "BHD"
+ },
+ "LYD": {
+ "name": "Dinari ya Libya",
+ "symbol": "LYD"
+ },
+ "SDG": {
+ "name": "Dinari ya Sudani",
+ "symbol": "SDG"
+ },
+ "TND": {
+ "name": "Dinari ya Tunisia",
+ "symbol": "TND"
+ },
+ "AED": {
+ "name": "Dirham ya Falme za Kiarabu",
+ "symbol": "AED"
+ },
+ "MAD": {
+ "name": "Dirham ya Moroko",
+ "symbol": "MAD"
+ },
+ "DKK": {
+ "name": "DKK",
+ "symbol": "DKK"
+ },
+ "STD": {
+ "name": "Dobra ya Sao Tome na Principe",
+ "symbol": "STD"
+ },
+ "AUD": {
+ "name": "Dola ya Australia",
+ "symbol": "A$"
+ },
+ "CAD": {
+ "name": "Dola ya Kanada",
+ "symbol": "CA$"
+ },
+ "LRD": {
+ "name": "Dola ya Liberia",
+ "symbol": "LRD"
+ },
+ "USD": {
+ "name": "Dola ya Marekani",
+ "symbol": "US$"
+ },
+ "NAD": {
+ "name": "Dola ya Namibia",
+ "symbol": "NAD"
+ },
+ "DOP": {
+ "name": "DOP",
+ "symbol": "DOP"
+ },
+ "CVE": {
+ "name": "Eskudo ya Kepuvede",
+ "symbol": "CVE"
+ },
+ "XOF": {
+ "name": "Faranga CFA BCEAO",
+ "symbol": "CFA"
+ },
+ "XAF": {
+ "name": "Faranga CFA BEAC",
+ "symbol": "FCFA"
+ },
+ "MGA": {
+ "name": "Faranga ya Bukini",
+ "symbol": "MGA"
+ },
+ "BIF": {
+ "name": "Faranga ya Burundi",
+ "symbol": "BIF"
+ },
+ "DJF": {
+ "name": "Faranga ya Jibuti",
+ "symbol": "DJF"
+ },
+ "KMF": {
+ "name": "Faranga ya Komoro",
+ "symbol": "KMF"
+ },
+ "CDF": {
+ "name": "Faranga ya Kongo",
+ "symbol": "CDF"
+ },
+ "RWF": {
+ "name": "Faranga ya Rwanda",
+ "symbol": "RWF"
+ },
+ "CHF": {
+ "name": "Faranga ya Uswisi",
+ "symbol": "CHF"
+ },
+ "FJD": {
+ "name": "FJD",
+ "symbol": "FJD"
+ },
+ "FKP": {
+ "name": "FKP",
+ "symbol": "FKP"
+ },
+ "GEL": {
+ "name": "GEL",
+ "symbol": "GEL"
+ },
+ "GHS": {
+ "name": "GHS",
+ "symbol": "GHS"
+ },
+ "GIP": {
+ "name": "GIP",
+ "symbol": "GIP"
+ },
+ "GNF": {
+ "name": "GNF",
+ "symbol": "GNF"
+ },
+ "GTQ": {
+ "name": "GTQ",
+ "symbol": "GTQ"
+ },
+ "GYD": {
+ "name": "GYD",
+ "symbol": "GYD"
+ },
+ "HKD": {
+ "name": "HKD",
+ "symbol": "HK$"
+ },
+ "HNL": {
+ "name": "HNL",
+ "symbol": "HNL"
+ },
+ "HRK": {
+ "name": "HRK",
+ "symbol": "HRK"
+ },
+ "HTG": {
+ "name": "HTG",
+ "symbol": "HTG"
+ },
+ "HUF": {
+ "name": "HUF",
+ "symbol": "HUF"
+ },
+ "IDR": {
+ "name": "IDR",
+ "symbol": "IDR"
+ },
+ "ILS": {
+ "name": "ILS",
+ "symbol": "₪"
+ },
+ "IQD": {
+ "name": "IQD",
+ "symbol": "IQD"
+ },
+ "IRR": {
+ "name": "IRR",
+ "symbol": "IRR"
+ },
+ "ISK": {
+ "name": "ISK",
+ "symbol": "ISK"
+ },
+ "JMD": {
+ "name": "JMD",
+ "symbol": "JMD"
+ },
+ "JOD": {
+ "name": "JOD",
+ "symbol": "JOD"
+ },
+ "KGS": {
+ "name": "KGS",
+ "symbol": "KGS"
+ },
+ "KHR": {
+ "name": "KHR",
+ "symbol": "KHR"
+ },
+ "KPW": {
+ "name": "KPW",
+ "symbol": "KPW"
+ },
+ "KRW": {
+ "name": "KRW",
+ "symbol": "â‚©"
+ },
+ "MWK": {
+ "name": "Kwacha ya Malawi",
+ "symbol": "MWK"
+ },
+ "ZMW": {
+ "name": "Kwacha ya Zambia",
+ "symbol": "ZMW"
+ },
+ "AOA": {
+ "name": "Kwanza ya Angola",
+ "symbol": "AOA"
+ },
+ "KWD": {
+ "name": "KWD",
+ "symbol": "KWD"
+ },
+ "KYD": {
+ "name": "KYD",
+ "symbol": "KYD"
+ },
+ "KZT": {
+ "name": "KZT",
+ "symbol": "KZT"
+ },
+ "LAK": {
+ "name": "LAK",
+ "symbol": "LAK"
+ },
+ "LBP": {
+ "name": "LBP",
+ "symbol": "LBP"
+ },
+ "SLL": {
+ "name": "Leoni",
+ "symbol": "SLL"
+ },
+ "SZL": {
+ "name": "Lilangeni",
+ "symbol": "SZL"
+ },
+ "LKR": {
+ "name": "LKR",
+ "symbol": "LKR"
+ },
+ "LSL": {
+ "name": "Loti ya Lesoto",
+ "symbol": "LSL"
+ },
+ "LTL": {
+ "name": "LTL",
+ "symbol": "LTL"
+ },
+ "MDL": {
+ "name": "MDL",
+ "symbol": "MDL"
+ },
+ "MKD": {
+ "name": "MKD",
+ "symbol": "MKD"
+ },
+ "MMK": {
+ "name": "MMK",
+ "symbol": "MMK"
+ },
+ "MNT": {
+ "name": "MNT",
+ "symbol": "MNT"
+ },
+ "MOP": {
+ "name": "MOP",
+ "symbol": "MOP"
+ },
+ "MVR": {
+ "name": "MVR",
+ "symbol": "MVR"
+ },
+ "MXN": {
+ "name": "MXN",
+ "symbol": "MX$"
+ },
+ "MYR": {
+ "name": "MYR",
+ "symbol": "MYR"
+ },
+ "MZN": {
+ "name": "MZN",
+ "symbol": "MZN"
+ },
+ "NGN": {
+ "name": "Naira ya Nijeria",
+ "symbol": "NGN"
+ },
+ "ERN": {
+ "name": "Nakfa ya Eritrea",
+ "symbol": "ERN"
+ },
+ "NIO": {
+ "name": "NIO",
+ "symbol": "NIO"
+ },
+ "NOK": {
+ "name": "NOK",
+ "symbol": "NOK"
+ },
+ "NPR": {
+ "name": "NPR",
+ "symbol": "NPR"
+ },
+ "NZD": {
+ "name": "NZD",
+ "symbol": "NZ$"
+ },
+ "OMR": {
+ "name": "OMR",
+ "symbol": "OMR"
+ },
+ "PAB": {
+ "name": "PAB",
+ "symbol": "PAB"
+ },
+ "EGP": {
+ "name": "Pauni ya Misri",
+ "symbol": "EGP"
+ },
+ "SHP": {
+ "name": "Pauni ya Santahelena",
+ "symbol": "SHP"
+ },
+ "GBP": {
+ "name": "Pauni ya Uingereza",
+ "symbol": "£"
+ },
+ "PEN": {
+ "name": "PEN",
+ "symbol": "PEN"
+ },
+ "PGK": {
+ "name": "PGK",
+ "symbol": "PGK"
+ },
+ "PHP": {
+ "name": "PHP",
+ "symbol": "PHP"
+ },
+ "PKR": {
+ "name": "PKR",
+ "symbol": "PKR"
+ },
+ "PLN": {
+ "name": "PLN",
+ "symbol": "PLN"
+ },
+ "BWP": {
+ "name": "Pula ya Botswana",
+ "symbol": "BWP"
+ },
+ "PYG": {
+ "name": "PYG",
+ "symbol": "PYG"
+ },
+ "QAR": {
+ "name": "QAR",
+ "symbol": "QAR"
+ },
+ "ZAR": {
+ "name": "Randi ya Afrika Kusini",
+ "symbol": "ZAR"
+ },
+ "SAR": {
+ "name": "Riyal ya Saudia",
+ "symbol": "SAR"
+ },
+ "RON": {
+ "name": "RON",
+ "symbol": "RON"
+ },
+ "RSD": {
+ "name": "RSD",
+ "symbol": "RSD"
+ },
+ "RUB": {
+ "name": "RUB",
+ "symbol": "RUB"
+ },
+ "INR": {
+ "name": "Rupia ya India",
+ "symbol": "₹"
+ },
+ "MUR": {
+ "name": "Rupia ya Morisi",
+ "symbol": "MUR"
+ },
+ "SCR": {
+ "name": "Rupia ya Shelisheli",
+ "symbol": "SCR"
+ },
+ "JPY": {
+ "name": "Sarafu ya Kijapani",
+ "symbol": "JPÂ¥"
+ },
+ "SBD": {
+ "name": "SBD",
+ "symbol": "SBD"
+ },
+ "SEK": {
+ "name": "SEK",
+ "symbol": "SEK"
+ },
+ "SGD": {
+ "name": "SGD",
+ "symbol": "SGD"
+ },
+ "KES": {
+ "name": "Shilingi ya Kenya",
+ "symbol": "KES"
+ },
+ "SOS": {
+ "name": "Shilingi ya Somalia",
+ "symbol": "SOS"
+ },
+ "TZS": {
+ "name": "Shilingi ya Tanzania",
+ "symbol": "TSh"
+ },
+ "UGX": {
+ "name": "Shilingi ya Uganda",
+ "symbol": "UGX"
+ },
+ "SRD": {
+ "name": "SRD",
+ "symbol": "SRD"
+ },
+ "SSP": {
+ "name": "SSP",
+ "symbol": "SSP"
+ },
+ "SVC": {
+ "name": "SVC",
+ "symbol": "SVC"
+ },
+ "SYP": {
+ "name": "SYP",
+ "symbol": "SYP"
+ },
+ "THB": {
+ "name": "THB",
+ "symbol": "THB"
+ },
+ "TJS": {
+ "name": "TJS",
+ "symbol": "TJS"
+ },
+ "TMT": {
+ "name": "TMT",
+ "symbol": "TMT"
+ },
+ "TOP": {
+ "name": "TOP",
+ "symbol": "TOP"
+ },
+ "TRY": {
+ "name": "TRY",
+ "symbol": "TRY"
+ },
+ "TTD": {
+ "name": "TTD",
+ "symbol": "TTD"
+ },
+ "TWD": {
+ "name": "TWD",
+ "symbol": "NT$"
+ },
+ "UAH": {
+ "name": "UAH",
+ "symbol": "UAH"
+ },
+ "MRO": {
+ "name": "Ugwiya ya Moritania",
+ "symbol": "MRO"
+ },
+ "UYU": {
+ "name": "UYU",
+ "symbol": "UYU"
+ },
+ "UZS": {
+ "name": "UZS",
+ "symbol": "UZS"
+ },
+ "VEF": {
+ "name": "VEF",
+ "symbol": "VEF"
+ },
+ "VND": {
+ "name": "VND",
+ "symbol": "â‚«"
+ },
+ "VUV": {
+ "name": "VUV",
+ "symbol": "VUV"
+ },
+ "WST": {
+ "name": "WST",
+ "symbol": "WST"
+ },
+ "XCD": {
+ "name": "XCD",
+ "symbol": "EC$"
+ },
+ "XPF": {
+ "name": "XPF",
+ "symbol": "CFPF"
+ },
+ "YER": {
+ "name": "YER",
+ "symbol": "YER"
+ },
+ "CNY": {
+ "name": "Yuan Renminbi ya China",
+ "symbol": "CNÂ¥"
+ },
+ "EUR": {
+ "name": "Yuro",
+ "symbol": "€"
+ },
+ "ZWL": {
+ "name": "ZWL",
+ "symbol": "ZWL"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/currency/saq.json b/library/intl/resources/currency/saq.json
new file mode 100644
index 000000000..4202a5ffb
--- /dev/null
+++ b/library/intl/resources/currency/saq.json
@@ -0,0 +1,634 @@
+{
+ "AFN": {
+ "name": "AFN",
+ "symbol": "AFN"
+ },
+ "ALL": {
+ "name": "ALL",
+ "symbol": "ALL"
+ },
+ "AMD": {
+ "name": "AMD",
+ "symbol": "AMD"
+ },
+ "ANG": {
+ "name": "ANG",
+ "symbol": "ANG"
+ },
+ "ARS": {
+ "name": "ARS",
+ "symbol": "ARS"
+ },
+ "AWG": {
+ "name": "AWG",
+ "symbol": "AWG"
+ },
+ "AZN": {
+ "name": "AZN",
+ "symbol": "AZN"
+ },
+ "BAM": {
+ "name": "BAM",
+ "symbol": "BAM"
+ },
+ "BBD": {
+ "name": "BBD",
+ "symbol": "BBD"
+ },
+ "BDT": {
+ "name": "BDT",
+ "symbol": "BDT"
+ },
+ "BGN": {
+ "name": "BGN",
+ "symbol": "BGN"
+ },
+ "BMD": {
+ "name": "BMD",
+ "symbol": "BMD"
+ },
+ "BND": {
+ "name": "BND",
+ "symbol": "BND"
+ },
+ "BOB": {
+ "name": "BOB",
+ "symbol": "BOB"
+ },
+ "BRL": {
+ "name": "BRL",
+ "symbol": "R$"
+ },
+ "BSD": {
+ "name": "BSD",
+ "symbol": "BSD"
+ },
+ "BTN": {
+ "name": "BTN",
+ "symbol": "BTN"
+ },
+ "BYR": {
+ "name": "BYR",
+ "symbol": "BYR"
+ },
+ "BZD": {
+ "name": "BZD",
+ "symbol": "BZD"
+ },
+ "CLP": {
+ "name": "CLP",
+ "symbol": "CLP"
+ },
+ "COP": {
+ "name": "COP",
+ "symbol": "COP"
+ },
+ "CRC": {
+ "name": "CRC",
+ "symbol": "CRC"
+ },
+ "CUC": {
+ "name": "CUC",
+ "symbol": "CUC"
+ },
+ "CUP": {
+ "name": "CUP",
+ "symbol": "CUP"
+ },
+ "CZK": {
+ "name": "CZK",
+ "symbol": "CZK"
+ },
+ "DKK": {
+ "name": "DKK",
+ "symbol": "DKK"
+ },
+ "LRD": {
+ "name": "Dola eel Liberia",
+ "symbol": "LRD"
+ },
+ "USD": {
+ "name": "Dola eel Marekani",
+ "symbol": "US$"
+ },
+ "DOP": {
+ "name": "DOP",
+ "symbol": "DOP"
+ },
+ "FJD": {
+ "name": "FJD",
+ "symbol": "FJD"
+ },
+ "FKP": {
+ "name": "FKP",
+ "symbol": "FKP"
+ },
+ "GEL": {
+ "name": "GEL",
+ "symbol": "GEL"
+ },
+ "GHS": {
+ "name": "GHS",
+ "symbol": "GHS"
+ },
+ "GIP": {
+ "name": "GIP",
+ "symbol": "GIP"
+ },
+ "GNF": {
+ "name": "GNF",
+ "symbol": "GNF"
+ },
+ "GTQ": {
+ "name": "GTQ",
+ "symbol": "GTQ"
+ },
+ "GYD": {
+ "name": "GYD",
+ "symbol": "GYD"
+ },
+ "HKD": {
+ "name": "HKD",
+ "symbol": "HK$"
+ },
+ "HNL": {
+ "name": "HNL",
+ "symbol": "HNL"
+ },
+ "HRK": {
+ "name": "HRK",
+ "symbol": "HRK"
+ },
+ "HTG": {
+ "name": "HTG",
+ "symbol": "HTG"
+ },
+ "HUF": {
+ "name": "HUF",
+ "symbol": "HUF"
+ },
+ "IDR": {
+ "name": "IDR",
+ "symbol": "IDR"
+ },
+ "ILS": {
+ "name": "ILS",
+ "symbol": "₪"
+ },
+ "IQD": {
+ "name": "IQD",
+ "symbol": "IQD"
+ },
+ "IRR": {
+ "name": "IRR",
+ "symbol": "IRR"
+ },
+ "ISK": {
+ "name": "ISK",
+ "symbol": "ISK"
+ },
+ "JMD": {
+ "name": "JMD",
+ "symbol": "JMD"
+ },
+ "JOD": {
+ "name": "JOD",
+ "symbol": "JOD"
+ },
+ "KGS": {
+ "name": "KGS",
+ "symbol": "KGS"
+ },
+ "KHR": {
+ "name": "KHR",
+ "symbol": "KHR"
+ },
+ "KPW": {
+ "name": "KPW",
+ "symbol": "KPW"
+ },
+ "KRW": {
+ "name": "KRW",
+ "symbol": "â‚©"
+ },
+ "KWD": {
+ "name": "KWD",
+ "symbol": "KWD"
+ },
+ "KYD": {
+ "name": "KYD",
+ "symbol": "KYD"
+ },
+ "KZT": {
+ "name": "KZT",
+ "symbol": "KZT"
+ },
+ "LAK": {
+ "name": "LAK",
+ "symbol": "LAK"
+ },
+ "LBP": {
+ "name": "LBP",
+ "symbol": "LBP"
+ },
+ "SLL": {
+ "name": "Leoni",
+ "symbol": "SLL"
+ },
+ "SZL": {
+ "name": "Lilangeni",
+ "symbol": "SZL"
+ },
+ "LKR": {
+ "name": "LKR",
+ "symbol": "LKR"
+ },
+ "LTL": {
+ "name": "LTL",
+ "symbol": "LTL"
+ },
+ "MDL": {
+ "name": "MDL",
+ "symbol": "MDL"
+ },
+ "MKD": {
+ "name": "MKD",
+ "symbol": "MKD"
+ },
+ "MMK": {
+ "name": "MMK",
+ "symbol": "MMK"
+ },
+ "MNT": {
+ "name": "MNT",
+ "symbol": "MNT"
+ },
+ "MOP": {
+ "name": "MOP",
+ "symbol": "MOP"
+ },
+ "MVR": {
+ "name": "MVR",
+ "symbol": "MVR"
+ },
+ "MXN": {
+ "name": "MXN",
+ "symbol": "MX$"
+ },
+ "MYR": {
+ "name": "MYR",
+ "symbol": "MYR"
+ },
+ "MZN": {
+ "name": "MZN",
+ "symbol": "MZN"
+ },
+ "NIO": {
+ "name": "NIO",
+ "symbol": "NIO"
+ },
+ "ZAR": {
+ "name": "Njilingi eel Afrika Kusini",
+ "symbol": "ZAR"
+ },
+ "DZD": {
+ "name": "Njilingi eel Aljeria",
+ "symbol": "DZD"
+ },
+ "AOA": {
+ "name": "Njilingi eel Angola",
+ "symbol": "AOA"
+ },
+ "AUD": {
+ "name": "Njilingi eel Australia",
+ "symbol": "A$"
+ },
+ "BHD": {
+ "name": "Njilingi eel Bahareni",
+ "symbol": "BHD"
+ },
+ "BWP": {
+ "name": "Njilingi eel Botswana",
+ "symbol": "BWP"
+ },
+ "MGA": {
+ "name": "Njilingi eel Bukini",
+ "symbol": "MGA"
+ },
+ "BIF": {
+ "name": "Njilingi eel Burundi",
+ "symbol": "BIF"
+ },
+ "XOF": {
+ "name": "Njilingi eel CFA BCEAO",
+ "symbol": "CFA"
+ },
+ "XAF": {
+ "name": "Njilingi eel CFA BEAC",
+ "symbol": "FCFA"
+ },
+ "CNY": {
+ "name": "Njilingi eel China",
+ "symbol": "CNÂ¥"
+ },
+ "ERN": {
+ "name": "Njilingi eel Eritrea",
+ "symbol": "ERN"
+ },
+ "AED": {
+ "name": "Njilingi eel Falme za Kiarabu",
+ "symbol": "AED"
+ },
+ "GMD": {
+ "name": "Njilingi eel Gambia",
+ "symbol": "GMD"
+ },
+ "INR": {
+ "name": "Njilingi eel India",
+ "symbol": "₹"
+ },
+ "DJF": {
+ "name": "Njilingi eel Jibuti",
+ "symbol": "DJF"
+ },
+ "CAD": {
+ "name": "Njilingi eel Kanada",
+ "symbol": "CA$"
+ },
+ "KES": {
+ "name": "Njilingi eel Kenya",
+ "symbol": "Ksh"
+ },
+ "CVE": {
+ "name": "Njilingi eel Kepuvede",
+ "symbol": "CVE"
+ },
+ "JPY": {
+ "name": "Njilingi eel Kijapani",
+ "symbol": "JPÂ¥"
+ },
+ "KMF": {
+ "name": "Njilingi eel Komoro",
+ "symbol": "KMF"
+ },
+ "CDF": {
+ "name": "Njilingi eel Kongo",
+ "symbol": "CDF"
+ },
+ "LSL": {
+ "name": "Njilingi eel Lesoto",
+ "symbol": "LSL"
+ },
+ "LYD": {
+ "name": "Njilingi eel Libya",
+ "symbol": "LYD"
+ },
+ "MWK": {
+ "name": "Njilingi eel Malawi",
+ "symbol": "MWK"
+ },
+ "EGP": {
+ "name": "Njilingi eel Misri",
+ "symbol": "EGP"
+ },
+ "MUR": {
+ "name": "Njilingi eel Morisi",
+ "symbol": "MUR"
+ },
+ "MRO": {
+ "name": "Njilingi eel Moritania",
+ "symbol": "MRO"
+ },
+ "MAD": {
+ "name": "Njilingi eel Moroko",
+ "symbol": "MAD"
+ },
+ "NAD": {
+ "name": "Njilingi eel Namibia",
+ "symbol": "NAD"
+ },
+ "NGN": {
+ "name": "Njilingi eel Nijeria",
+ "symbol": "NGN"
+ },
+ "RWF": {
+ "name": "Njilingi eel Rwanda",
+ "symbol": "RWF"
+ },
+ "STD": {
+ "name": "Njilingi eel Sao Tome na Principe",
+ "symbol": "STD"
+ },
+ "SAR": {
+ "name": "Njilingi eel Saudia",
+ "symbol": "SAR"
+ },
+ "SCR": {
+ "name": "Njilingi eel Shelisheli",
+ "symbol": "SCR"
+ },
+ "SOS": {
+ "name": "Njilingi eel Somalia",
+ "symbol": "SOS"
+ },
+ "TZS": {
+ "name": "Njilingi eel Tanzania",
+ "symbol": "TZS"
+ },
+ "TND": {
+ "name": "Njilingi eel Tunisia",
+ "symbol": "TND"
+ },
+ "UGX": {
+ "name": "Njilingi eel Uganda",
+ "symbol": "UGX"
+ },
+ "ETB": {
+ "name": "Njilingi eel Uhabeshi",
+ "symbol": "ETB"
+ },
+ "GBP": {
+ "name": "Njilingi eel Uingereza",
+ "symbol": "£"
+ },
+ "CHF": {
+ "name": "Njilingi eel Uswisi",
+ "symbol": "CHF"
+ },
+ "ZMW": {
+ "name": "Njilingi eel Zambia",
+ "symbol": "ZMW"
+ },
+ "NOK": {
+ "name": "NOK",
+ "symbol": "NOK"
+ },
+ "NPR": {
+ "name": "NPR",
+ "symbol": "NPR"
+ },
+ "NZD": {
+ "name": "NZD",
+ "symbol": "NZ$"
+ },
+ "OMR": {
+ "name": "OMR",
+ "symbol": "OMR"
+ },
+ "PAB": {
+ "name": "PAB",
+ "symbol": "PAB"
+ },
+ "SHP": {
+ "name": "Paunt eel Santahelena",
+ "symbol": "SHP"
+ },
+ "SDG": {
+ "name": "Paunt eel Sudani",
+ "symbol": "SDG"
+ },
+ "PEN": {
+ "name": "PEN",
+ "symbol": "PEN"
+ },
+ "PGK": {
+ "name": "PGK",
+ "symbol": "PGK"
+ },
+ "PHP": {
+ "name": "PHP",
+ "symbol": "PHP"
+ },
+ "PKR": {
+ "name": "PKR",
+ "symbol": "PKR"
+ },
+ "PLN": {
+ "name": "PLN",
+ "symbol": "PLN"
+ },
+ "PYG": {
+ "name": "PYG",
+ "symbol": "PYG"
+ },
+ "QAR": {
+ "name": "QAR",
+ "symbol": "QAR"
+ },
+ "RON": {
+ "name": "RON",
+ "symbol": "RON"
+ },
+ "RSD": {
+ "name": "RSD",
+ "symbol": "RSD"
+ },
+ "RUB": {
+ "name": "RUB",
+ "symbol": "RUB"
+ },
+ "SBD": {
+ "name": "SBD",
+ "symbol": "SBD"
+ },
+ "SEK": {
+ "name": "SEK",
+ "symbol": "SEK"
+ },
+ "SGD": {
+ "name": "SGD",
+ "symbol": "SGD"
+ },
+ "SRD": {
+ "name": "SRD",
+ "symbol": "SRD"
+ },
+ "SSP": {
+ "name": "SSP",
+ "symbol": "SSP"
+ },
+ "SVC": {
+ "name": "SVC",
+ "symbol": "SVC"
+ },
+ "SYP": {
+ "name": "SYP",
+ "symbol": "SYP"
+ },
+ "THB": {
+ "name": "THB",
+ "symbol": "THB"
+ },
+ "TJS": {
+ "name": "TJS",
+ "symbol": "TJS"
+ },
+ "TMT": {
+ "name": "TMT",
+ "symbol": "TMT"
+ },
+ "TOP": {
+ "name": "TOP",
+ "symbol": "TOP"
+ },
+ "TRY": {
+ "name": "TRY",
+ "symbol": "TRY"
+ },
+ "TTD": {
+ "name": "TTD",
+ "symbol": "TTD"
+ },
+ "TWD": {
+ "name": "TWD",
+ "symbol": "NT$"
+ },
+ "UAH": {
+ "name": "UAH",
+ "symbol": "UAH"
+ },
+ "UYU": {
+ "name": "UYU",
+ "symbol": "UYU"
+ },
+ "UZS": {
+ "name": "UZS",
+ "symbol": "UZS"
+ },
+ "VEF": {
+ "name": "VEF",
+ "symbol": "VEF"
+ },
+ "VND": {
+ "name": "VND",
+ "symbol": "â‚«"
+ },
+ "VUV": {
+ "name": "VUV",
+ "symbol": "VUV"
+ },
+ "WST": {
+ "name": "WST",
+ "symbol": "WST"
+ },
+ "XCD": {
+ "name": "XCD",
+ "symbol": "EC$"
+ },
+ "XPF": {
+ "name": "XPF",
+ "symbol": "CFPF"
+ },
+ "YER": {
+ "name": "YER",
+ "symbol": "YER"
+ },
+ "EUR": {
+ "name": "Yuro",
+ "symbol": "€"
+ },
+ "ZWL": {
+ "name": "ZWL",
+ "symbol": "ZWL"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/currency/sbp.json b/library/intl/resources/currency/sbp.json
new file mode 100644
index 000000000..d3cde118e
--- /dev/null
+++ b/library/intl/resources/currency/sbp.json
@@ -0,0 +1,634 @@
+{
+ "AFN": {
+ "name": "AFN",
+ "symbol": "AFN"
+ },
+ "ALL": {
+ "name": "ALL",
+ "symbol": "ALL"
+ },
+ "AMD": {
+ "name": "AMD",
+ "symbol": "AMD"
+ },
+ "ANG": {
+ "name": "ANG",
+ "symbol": "ANG"
+ },
+ "ARS": {
+ "name": "ARS",
+ "symbol": "ARS"
+ },
+ "AWG": {
+ "name": "AWG",
+ "symbol": "AWG"
+ },
+ "AZN": {
+ "name": "AZN",
+ "symbol": "AZN"
+ },
+ "BAM": {
+ "name": "BAM",
+ "symbol": "BAM"
+ },
+ "BBD": {
+ "name": "BBD",
+ "symbol": "BBD"
+ },
+ "BDT": {
+ "name": "BDT",
+ "symbol": "BDT"
+ },
+ "BGN": {
+ "name": "BGN",
+ "symbol": "BGN"
+ },
+ "BMD": {
+ "name": "BMD",
+ "symbol": "BMD"
+ },
+ "BND": {
+ "name": "BND",
+ "symbol": "BND"
+ },
+ "BOB": {
+ "name": "BOB",
+ "symbol": "BOB"
+ },
+ "BRL": {
+ "name": "BRL",
+ "symbol": "R$"
+ },
+ "BSD": {
+ "name": "BSD",
+ "symbol": "BSD"
+ },
+ "BTN": {
+ "name": "BTN",
+ "symbol": "BTN"
+ },
+ "BYR": {
+ "name": "BYR",
+ "symbol": "BYR"
+ },
+ "BZD": {
+ "name": "BZD",
+ "symbol": "BZD"
+ },
+ "CLP": {
+ "name": "CLP",
+ "symbol": "CLP"
+ },
+ "COP": {
+ "name": "COP",
+ "symbol": "COP"
+ },
+ "CRC": {
+ "name": "CRC",
+ "symbol": "CRC"
+ },
+ "CUC": {
+ "name": "CUC",
+ "symbol": "CUC"
+ },
+ "CUP": {
+ "name": "CUP",
+ "symbol": "CUP"
+ },
+ "CZK": {
+ "name": "CZK",
+ "symbol": "CZK"
+ },
+ "DKK": {
+ "name": "DKK",
+ "symbol": "DKK"
+ },
+ "DOP": {
+ "name": "DOP",
+ "symbol": "DOP"
+ },
+ "FJD": {
+ "name": "FJD",
+ "symbol": "FJD"
+ },
+ "FKP": {
+ "name": "FKP",
+ "symbol": "FKP"
+ },
+ "GEL": {
+ "name": "GEL",
+ "symbol": "GEL"
+ },
+ "GHS": {
+ "name": "GHS",
+ "symbol": "GHS"
+ },
+ "GIP": {
+ "name": "GIP",
+ "symbol": "GIP"
+ },
+ "GNF": {
+ "name": "GNF",
+ "symbol": "GNF"
+ },
+ "GTQ": {
+ "name": "GTQ",
+ "symbol": "GTQ"
+ },
+ "GYD": {
+ "name": "GYD",
+ "symbol": "GYD"
+ },
+ "HKD": {
+ "name": "HKD",
+ "symbol": "HK$"
+ },
+ "HNL": {
+ "name": "HNL",
+ "symbol": "HNL"
+ },
+ "HRK": {
+ "name": "HRK",
+ "symbol": "HRK"
+ },
+ "HTG": {
+ "name": "HTG",
+ "symbol": "HTG"
+ },
+ "HUF": {
+ "name": "HUF",
+ "symbol": "HUF"
+ },
+ "IDR": {
+ "name": "IDR",
+ "symbol": "IDR"
+ },
+ "ZAR": {
+ "name": "Ihela ya Afilika Kusini",
+ "symbol": "ZAR"
+ },
+ "DZD": {
+ "name": "Ihela ya Alijeliya",
+ "symbol": "DZD"
+ },
+ "AOA": {
+ "name": "Ihela ya Angola",
+ "symbol": "AOA"
+ },
+ "AUD": {
+ "name": "Ihela ya Awusitilaliya",
+ "symbol": "A$"
+ },
+ "BHD": {
+ "name": "Ihela ya Bahaleni",
+ "symbol": "BHD"
+ },
+ "BWP": {
+ "name": "Ihela ya Botiswana",
+ "symbol": "BWP"
+ },
+ "MGA": {
+ "name": "Ihela ya Bukini",
+ "symbol": "MGA"
+ },
+ "BIF": {
+ "name": "Ihela ya Bulundi",
+ "symbol": "BIF"
+ },
+ "XOF": {
+ "name": "Ihela ya CFA BCEAO",
+ "symbol": "CFA"
+ },
+ "XAF": {
+ "name": "Ihela ya CFA BEAC",
+ "symbol": "FCFA"
+ },
+ "ERN": {
+ "name": "Ihela ya Elitileya",
+ "symbol": "ERN"
+ },
+ "GMD": {
+ "name": "Ihela ya Gambiya",
+ "symbol": "GMD"
+ },
+ "INR": {
+ "name": "Ihela ya Indiya",
+ "symbol": "₹"
+ },
+ "JPY": {
+ "name": "Ihela ya Japani",
+ "symbol": "JPÂ¥"
+ },
+ "DJF": {
+ "name": "Ihela ya Jibuti",
+ "symbol": "DJF"
+ },
+ "CAD": {
+ "name": "Ihela ya Kanada",
+ "symbol": "CA$"
+ },
+ "KES": {
+ "name": "Ihela ya Kenya",
+ "symbol": "KES"
+ },
+ "CVE": {
+ "name": "Ihela ya Kepuvede",
+ "symbol": "CVE"
+ },
+ "KMF": {
+ "name": "Ihela ya Komolo",
+ "symbol": "KMF"
+ },
+ "CDF": {
+ "name": "Ihela ya Kongo",
+ "symbol": "CDF"
+ },
+ "LSL": {
+ "name": "Ihela ya Lesoto",
+ "symbol": "LSL"
+ },
+ "LRD": {
+ "name": "Ihela ya Libeliya",
+ "symbol": "LRD"
+ },
+ "LYD": {
+ "name": "Ihela ya Libiya",
+ "symbol": "LYD"
+ },
+ "RWF": {
+ "name": "Ihela ya Lwanda",
+ "symbol": "RWF"
+ },
+ "MWK": {
+ "name": "Ihela ya Malawi",
+ "symbol": "MWK"
+ },
+ "USD": {
+ "name": "Ihela ya Malekani",
+ "symbol": "US$"
+ },
+ "EGP": {
+ "name": "Ihela ya Misili",
+ "symbol": "EGP"
+ },
+ "MUR": {
+ "name": "Ihela ya Molisi",
+ "symbol": "MUR"
+ },
+ "MRO": {
+ "name": "Ihela ya Molitaniya",
+ "symbol": "MRO"
+ },
+ "MAD": {
+ "name": "Ihela ya Moloko",
+ "symbol": "MAD"
+ },
+ "NAD": {
+ "name": "Ihela ya Namibiya",
+ "symbol": "NAD"
+ },
+ "NGN": {
+ "name": "Ihela ya Nijeliya",
+ "symbol": "NGN"
+ },
+ "ZMW": {
+ "name": "Ihela ya Sambiya",
+ "symbol": "ZMW"
+ },
+ "SHP": {
+ "name": "Ihela ya Santahelena",
+ "symbol": "SHP"
+ },
+ "STD": {
+ "name": "Ihela ya Sao Tome ni Pilinsipe",
+ "symbol": "STD"
+ },
+ "SAR": {
+ "name": "Ihela ya Sawudiya",
+ "symbol": "SAR"
+ },
+ "SCR": {
+ "name": "Ihela ya Shelisheli",
+ "symbol": "SCR"
+ },
+ "CNY": {
+ "name": "Ihela ya Shina",
+ "symbol": "CNÂ¥"
+ },
+ "AED": {
+ "name": "Ihela ya Shitwa sha Shiyalabu",
+ "symbol": "AED"
+ },
+ "SLL": {
+ "name": "Ihela ya Siela Liyoni",
+ "symbol": "SLL"
+ },
+ "SOS": {
+ "name": "Ihela ya Somaliya",
+ "symbol": "SOS"
+ },
+ "SDG": {
+ "name": "Ihela ya Sudani",
+ "symbol": "SDG"
+ },
+ "TZS": {
+ "name": "Ihela ya Tansaniya",
+ "symbol": "TSh"
+ },
+ "TND": {
+ "name": "Ihela ya Tunisiya",
+ "symbol": "TND"
+ },
+ "UGX": {
+ "name": "Ihela ya Uganda",
+ "symbol": "UGX"
+ },
+ "ETB": {
+ "name": "Ihela ya Uhabeshi",
+ "symbol": "ETB"
+ },
+ "EUR": {
+ "name": "Ihela ya Ulaya",
+ "symbol": "€"
+ },
+ "SZL": {
+ "name": "Ihela ya Uswasi",
+ "symbol": "SZL"
+ },
+ "CHF": {
+ "name": "Ihela ya Uswisi",
+ "symbol": "CHF"
+ },
+ "GBP": {
+ "name": "Ihela ya Uwingelesa",
+ "symbol": "£"
+ },
+ "ILS": {
+ "name": "ILS",
+ "symbol": "₪"
+ },
+ "IQD": {
+ "name": "IQD",
+ "symbol": "IQD"
+ },
+ "IRR": {
+ "name": "IRR",
+ "symbol": "IRR"
+ },
+ "ISK": {
+ "name": "ISK",
+ "symbol": "ISK"
+ },
+ "JMD": {
+ "name": "JMD",
+ "symbol": "JMD"
+ },
+ "JOD": {
+ "name": "JOD",
+ "symbol": "JOD"
+ },
+ "KGS": {
+ "name": "KGS",
+ "symbol": "KGS"
+ },
+ "KHR": {
+ "name": "KHR",
+ "symbol": "KHR"
+ },
+ "KPW": {
+ "name": "KPW",
+ "symbol": "KPW"
+ },
+ "KRW": {
+ "name": "KRW",
+ "symbol": "â‚©"
+ },
+ "KWD": {
+ "name": "KWD",
+ "symbol": "KWD"
+ },
+ "KYD": {
+ "name": "KYD",
+ "symbol": "KYD"
+ },
+ "KZT": {
+ "name": "KZT",
+ "symbol": "KZT"
+ },
+ "LAK": {
+ "name": "LAK",
+ "symbol": "LAK"
+ },
+ "LBP": {
+ "name": "LBP",
+ "symbol": "LBP"
+ },
+ "LKR": {
+ "name": "LKR",
+ "symbol": "LKR"
+ },
+ "LTL": {
+ "name": "LTL",
+ "symbol": "LTL"
+ },
+ "MDL": {
+ "name": "MDL",
+ "symbol": "MDL"
+ },
+ "MKD": {
+ "name": "MKD",
+ "symbol": "MKD"
+ },
+ "MMK": {
+ "name": "MMK",
+ "symbol": "MMK"
+ },
+ "MNT": {
+ "name": "MNT",
+ "symbol": "MNT"
+ },
+ "MOP": {
+ "name": "MOP",
+ "symbol": "MOP"
+ },
+ "MVR": {
+ "name": "MVR",
+ "symbol": "MVR"
+ },
+ "MXN": {
+ "name": "MXN",
+ "symbol": "MX$"
+ },
+ "MYR": {
+ "name": "MYR",
+ "symbol": "MYR"
+ },
+ "MZN": {
+ "name": "MZN",
+ "symbol": "MZN"
+ },
+ "NIO": {
+ "name": "NIO",
+ "symbol": "NIO"
+ },
+ "NOK": {
+ "name": "NOK",
+ "symbol": "NOK"
+ },
+ "NPR": {
+ "name": "NPR",
+ "symbol": "NPR"
+ },
+ "NZD": {
+ "name": "NZD",
+ "symbol": "NZ$"
+ },
+ "OMR": {
+ "name": "OMR",
+ "symbol": "OMR"
+ },
+ "PAB": {
+ "name": "PAB",
+ "symbol": "PAB"
+ },
+ "PEN": {
+ "name": "PEN",
+ "symbol": "PEN"
+ },
+ "PGK": {
+ "name": "PGK",
+ "symbol": "PGK"
+ },
+ "PHP": {
+ "name": "PHP",
+ "symbol": "PHP"
+ },
+ "PKR": {
+ "name": "PKR",
+ "symbol": "PKR"
+ },
+ "PLN": {
+ "name": "PLN",
+ "symbol": "PLN"
+ },
+ "PYG": {
+ "name": "PYG",
+ "symbol": "PYG"
+ },
+ "QAR": {
+ "name": "QAR",
+ "symbol": "QAR"
+ },
+ "RON": {
+ "name": "RON",
+ "symbol": "RON"
+ },
+ "RSD": {
+ "name": "RSD",
+ "symbol": "RSD"
+ },
+ "RUB": {
+ "name": "RUB",
+ "symbol": "RUB"
+ },
+ "SBD": {
+ "name": "SBD",
+ "symbol": "SBD"
+ },
+ "SEK": {
+ "name": "SEK",
+ "symbol": "SEK"
+ },
+ "SGD": {
+ "name": "SGD",
+ "symbol": "SGD"
+ },
+ "SRD": {
+ "name": "SRD",
+ "symbol": "SRD"
+ },
+ "SSP": {
+ "name": "SSP",
+ "symbol": "SSP"
+ },
+ "SVC": {
+ "name": "SVC",
+ "symbol": "SVC"
+ },
+ "SYP": {
+ "name": "SYP",
+ "symbol": "SYP"
+ },
+ "THB": {
+ "name": "THB",
+ "symbol": "THB"
+ },
+ "TJS": {
+ "name": "TJS",
+ "symbol": "TJS"
+ },
+ "TMT": {
+ "name": "TMT",
+ "symbol": "TMT"
+ },
+ "TOP": {
+ "name": "TOP",
+ "symbol": "TOP"
+ },
+ "TRY": {
+ "name": "TRY",
+ "symbol": "TRY"
+ },
+ "TTD": {
+ "name": "TTD",
+ "symbol": "TTD"
+ },
+ "TWD": {
+ "name": "TWD",
+ "symbol": "NT$"
+ },
+ "UAH": {
+ "name": "UAH",
+ "symbol": "UAH"
+ },
+ "UYU": {
+ "name": "UYU",
+ "symbol": "UYU"
+ },
+ "UZS": {
+ "name": "UZS",
+ "symbol": "UZS"
+ },
+ "VEF": {
+ "name": "VEF",
+ "symbol": "VEF"
+ },
+ "VND": {
+ "name": "VND",
+ "symbol": "â‚«"
+ },
+ "VUV": {
+ "name": "VUV",
+ "symbol": "VUV"
+ },
+ "WST": {
+ "name": "WST",
+ "symbol": "WST"
+ },
+ "XCD": {
+ "name": "XCD",
+ "symbol": "EC$"
+ },
+ "XPF": {
+ "name": "XPF",
+ "symbol": "CFPF"
+ },
+ "YER": {
+ "name": "YER",
+ "symbol": "YER"
+ },
+ "ZWL": {
+ "name": "ZWL",
+ "symbol": "ZWL"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/currency/se.json b/library/intl/resources/currency/se.json
new file mode 100644
index 000000000..20cc838e3
--- /dev/null
+++ b/library/intl/resources/currency/se.json
@@ -0,0 +1,634 @@
+{
+ "AED": {
+ "name": "AED",
+ "symbol": "AED"
+ },
+ "AFN": {
+ "name": "AFN",
+ "symbol": "AFN"
+ },
+ "ALL": {
+ "name": "ALL",
+ "symbol": "ALL"
+ },
+ "AMD": {
+ "name": "AMD",
+ "symbol": "AMD"
+ },
+ "ANG": {
+ "name": "ANG",
+ "symbol": "ANG"
+ },
+ "AOA": {
+ "name": "AOA",
+ "symbol": "AOA"
+ },
+ "ARS": {
+ "name": "ARS",
+ "symbol": "ARS"
+ },
+ "AUD": {
+ "name": "AUD",
+ "symbol": "A$"
+ },
+ "AWG": {
+ "name": "AWG",
+ "symbol": "AWG"
+ },
+ "AZN": {
+ "name": "AZN",
+ "symbol": "AZN"
+ },
+ "BAM": {
+ "name": "BAM",
+ "symbol": "BAM"
+ },
+ "BBD": {
+ "name": "BBD",
+ "symbol": "BBD"
+ },
+ "BDT": {
+ "name": "BDT",
+ "symbol": "BDT"
+ },
+ "BGN": {
+ "name": "BGN",
+ "symbol": "BGN"
+ },
+ "BHD": {
+ "name": "BHD",
+ "symbol": "BHD"
+ },
+ "BIF": {
+ "name": "BIF",
+ "symbol": "BIF"
+ },
+ "BMD": {
+ "name": "BMD",
+ "symbol": "BMD"
+ },
+ "BND": {
+ "name": "BND",
+ "symbol": "BND"
+ },
+ "BOB": {
+ "name": "BOB",
+ "symbol": "BOB"
+ },
+ "BRL": {
+ "name": "BRL",
+ "symbol": "R$"
+ },
+ "BSD": {
+ "name": "BSD",
+ "symbol": "BSD"
+ },
+ "BTN": {
+ "name": "BTN",
+ "symbol": "BTN"
+ },
+ "BWP": {
+ "name": "BWP",
+ "symbol": "BWP"
+ },
+ "BYR": {
+ "name": "BYR",
+ "symbol": "BYR"
+ },
+ "BZD": {
+ "name": "BZD",
+ "symbol": "BZD"
+ },
+ "CAD": {
+ "name": "CAD",
+ "symbol": "CA$"
+ },
+ "CDF": {
+ "name": "CDF",
+ "symbol": "CDF"
+ },
+ "CHF": {
+ "name": "CHF",
+ "symbol": "CHF"
+ },
+ "CLP": {
+ "name": "CLP",
+ "symbol": "CLP"
+ },
+ "CNY": {
+ "name": "CNY",
+ "symbol": "CNÂ¥"
+ },
+ "COP": {
+ "name": "COP",
+ "symbol": "COP"
+ },
+ "CRC": {
+ "name": "CRC",
+ "symbol": "CRC"
+ },
+ "CUC": {
+ "name": "CUC",
+ "symbol": "CUC"
+ },
+ "CUP": {
+ "name": "CUP",
+ "symbol": "CUP"
+ },
+ "CVE": {
+ "name": "CVE",
+ "symbol": "CVE"
+ },
+ "CZK": {
+ "name": "CZK",
+ "symbol": "CZK"
+ },
+ "DJF": {
+ "name": "DJF",
+ "symbol": "DJF"
+ },
+ "DKK": {
+ "name": "DKK",
+ "symbol": "Dkr"
+ },
+ "DOP": {
+ "name": "DOP",
+ "symbol": "DOP"
+ },
+ "DZD": {
+ "name": "DZD",
+ "symbol": "DZD"
+ },
+ "EGP": {
+ "name": "EGP",
+ "symbol": "EGP"
+ },
+ "ERN": {
+ "name": "ERN",
+ "symbol": "ERN"
+ },
+ "ETB": {
+ "name": "ETB",
+ "symbol": "ETB"
+ },
+ "EUR": {
+ "name": "euro",
+ "symbol": "€"
+ },
+ "FJD": {
+ "name": "FJD",
+ "symbol": "FJD"
+ },
+ "FKP": {
+ "name": "FKP",
+ "symbol": "FKP"
+ },
+ "GBP": {
+ "name": "GBP",
+ "symbol": "£"
+ },
+ "GEL": {
+ "name": "GEL",
+ "symbol": "GEL"
+ },
+ "GHS": {
+ "name": "GHS",
+ "symbol": "GHS"
+ },
+ "GIP": {
+ "name": "GIP",
+ "symbol": "GIP"
+ },
+ "GMD": {
+ "name": "GMD",
+ "symbol": "GMD"
+ },
+ "GNF": {
+ "name": "GNF",
+ "symbol": "GNF"
+ },
+ "GTQ": {
+ "name": "GTQ",
+ "symbol": "GTQ"
+ },
+ "GYD": {
+ "name": "GYD",
+ "symbol": "GYD"
+ },
+ "HKD": {
+ "name": "HKD",
+ "symbol": "HK$"
+ },
+ "HNL": {
+ "name": "HNL",
+ "symbol": "HNL"
+ },
+ "HRK": {
+ "name": "HRK",
+ "symbol": "HRK"
+ },
+ "HTG": {
+ "name": "HTG",
+ "symbol": "HTG"
+ },
+ "HUF": {
+ "name": "HUF",
+ "symbol": "HUF"
+ },
+ "IDR": {
+ "name": "IDR",
+ "symbol": "IDR"
+ },
+ "ILS": {
+ "name": "ILS",
+ "symbol": "₪"
+ },
+ "INR": {
+ "name": "INR",
+ "symbol": "₹"
+ },
+ "IQD": {
+ "name": "IQD",
+ "symbol": "IQD"
+ },
+ "IRR": {
+ "name": "IRR",
+ "symbol": "IRR"
+ },
+ "ISK": {
+ "name": "ISK",
+ "symbol": "ISK"
+ },
+ "JMD": {
+ "name": "JMD",
+ "symbol": "JMD"
+ },
+ "JOD": {
+ "name": "JOD",
+ "symbol": "JOD"
+ },
+ "JPY": {
+ "name": "JPY",
+ "symbol": "JPÂ¥"
+ },
+ "KES": {
+ "name": "KES",
+ "symbol": "KES"
+ },
+ "KGS": {
+ "name": "KGS",
+ "symbol": "KGS"
+ },
+ "KHR": {
+ "name": "KHR",
+ "symbol": "KHR"
+ },
+ "KMF": {
+ "name": "KMF",
+ "symbol": "KMF"
+ },
+ "KPW": {
+ "name": "KPW",
+ "symbol": "KPW"
+ },
+ "KRW": {
+ "name": "KRW",
+ "symbol": "â‚©"
+ },
+ "KWD": {
+ "name": "KWD",
+ "symbol": "KWD"
+ },
+ "KYD": {
+ "name": "KYD",
+ "symbol": "KYD"
+ },
+ "KZT": {
+ "name": "KZT",
+ "symbol": "KZT"
+ },
+ "LAK": {
+ "name": "LAK",
+ "symbol": "LAK"
+ },
+ "LBP": {
+ "name": "LBP",
+ "symbol": "LBP"
+ },
+ "LKR": {
+ "name": "LKR",
+ "symbol": "LKR"
+ },
+ "LRD": {
+ "name": "LRD",
+ "symbol": "LRD"
+ },
+ "LSL": {
+ "name": "LSL",
+ "symbol": "LSL"
+ },
+ "LTL": {
+ "name": "LTL",
+ "symbol": "LTL"
+ },
+ "LYD": {
+ "name": "LYD",
+ "symbol": "LYD"
+ },
+ "MAD": {
+ "name": "MAD",
+ "symbol": "MAD"
+ },
+ "MDL": {
+ "name": "MDL",
+ "symbol": "MDL"
+ },
+ "MGA": {
+ "name": "MGA",
+ "symbol": "MGA"
+ },
+ "MKD": {
+ "name": "MKD",
+ "symbol": "MKD"
+ },
+ "MMK": {
+ "name": "MMK",
+ "symbol": "MMK"
+ },
+ "MNT": {
+ "name": "MNT",
+ "symbol": "MNT"
+ },
+ "MOP": {
+ "name": "MOP",
+ "symbol": "MOP"
+ },
+ "MRO": {
+ "name": "MRO",
+ "symbol": "MRO"
+ },
+ "MUR": {
+ "name": "MUR",
+ "symbol": "MUR"
+ },
+ "MVR": {
+ "name": "MVR",
+ "symbol": "MVR"
+ },
+ "MWK": {
+ "name": "MWK",
+ "symbol": "MWK"
+ },
+ "MXN": {
+ "name": "MXN",
+ "symbol": "MX$"
+ },
+ "MYR": {
+ "name": "MYR",
+ "symbol": "MYR"
+ },
+ "MZN": {
+ "name": "MZN",
+ "symbol": "MZN"
+ },
+ "NAD": {
+ "name": "NAD",
+ "symbol": "NAD"
+ },
+ "NGN": {
+ "name": "NGN",
+ "symbol": "NGN"
+ },
+ "NIO": {
+ "name": "NIO",
+ "symbol": "NIO"
+ },
+ "NOK": {
+ "name": "norgga kruvdno",
+ "symbol": "kr"
+ },
+ "NPR": {
+ "name": "NPR",
+ "symbol": "NPR"
+ },
+ "NZD": {
+ "name": "NZD",
+ "symbol": "NZ$"
+ },
+ "OMR": {
+ "name": "OMR",
+ "symbol": "OMR"
+ },
+ "PAB": {
+ "name": "PAB",
+ "symbol": "PAB"
+ },
+ "PEN": {
+ "name": "PEN",
+ "symbol": "PEN"
+ },
+ "PGK": {
+ "name": "PGK",
+ "symbol": "PGK"
+ },
+ "PHP": {
+ "name": "PHP",
+ "symbol": "PHP"
+ },
+ "PKR": {
+ "name": "PKR",
+ "symbol": "PKR"
+ },
+ "PLN": {
+ "name": "PLN",
+ "symbol": "PLN"
+ },
+ "PYG": {
+ "name": "PYG",
+ "symbol": "PYG"
+ },
+ "QAR": {
+ "name": "QAR",
+ "symbol": "QAR"
+ },
+ "RON": {
+ "name": "RON",
+ "symbol": "RON"
+ },
+ "RSD": {
+ "name": "RSD",
+ "symbol": "RSD"
+ },
+ "RUB": {
+ "name": "RUB",
+ "symbol": "RUB"
+ },
+ "SEK": {
+ "name": "ruoŧŧa kruvdno",
+ "symbol": "Skr"
+ },
+ "RWF": {
+ "name": "RWF",
+ "symbol": "RWF"
+ },
+ "SAR": {
+ "name": "SAR",
+ "symbol": "SAR"
+ },
+ "SBD": {
+ "name": "SBD",
+ "symbol": "SBD"
+ },
+ "SCR": {
+ "name": "SCR",
+ "symbol": "SCR"
+ },
+ "SDG": {
+ "name": "SDG",
+ "symbol": "SDG"
+ },
+ "SGD": {
+ "name": "SGD",
+ "symbol": "SGD"
+ },
+ "SHP": {
+ "name": "SHP",
+ "symbol": "SHP"
+ },
+ "SLL": {
+ "name": "SLL",
+ "symbol": "SLL"
+ },
+ "SOS": {
+ "name": "SOS",
+ "symbol": "SOS"
+ },
+ "SRD": {
+ "name": "SRD",
+ "symbol": "SRD"
+ },
+ "SSP": {
+ "name": "SSP",
+ "symbol": "SSP"
+ },
+ "STD": {
+ "name": "STD",
+ "symbol": "STD"
+ },
+ "SVC": {
+ "name": "SVC",
+ "symbol": "SVC"
+ },
+ "SYP": {
+ "name": "SYP",
+ "symbol": "SYP"
+ },
+ "SZL": {
+ "name": "SZL",
+ "symbol": "SZL"
+ },
+ "THB": {
+ "name": "THB",
+ "symbol": "฿"
+ },
+ "TJS": {
+ "name": "TJS",
+ "symbol": "TJS"
+ },
+ "TMT": {
+ "name": "TMT",
+ "symbol": "TMT"
+ },
+ "TND": {
+ "name": "TND",
+ "symbol": "TND"
+ },
+ "TOP": {
+ "name": "TOP",
+ "symbol": "TOP"
+ },
+ "TRY": {
+ "name": "TRY",
+ "symbol": "TRY"
+ },
+ "TTD": {
+ "name": "TTD",
+ "symbol": "TTD"
+ },
+ "TWD": {
+ "name": "TWD",
+ "symbol": "NT$"
+ },
+ "TZS": {
+ "name": "TZS",
+ "symbol": "TZS"
+ },
+ "UAH": {
+ "name": "UAH",
+ "symbol": "UAH"
+ },
+ "UGX": {
+ "name": "UGX",
+ "symbol": "UGX"
+ },
+ "USD": {
+ "name": "USD",
+ "symbol": "US$"
+ },
+ "UYU": {
+ "name": "UYU",
+ "symbol": "UYU"
+ },
+ "UZS": {
+ "name": "UZS",
+ "symbol": "UZS"
+ },
+ "VEF": {
+ "name": "VEF",
+ "symbol": "VEF"
+ },
+ "VND": {
+ "name": "VND",
+ "symbol": "â‚«"
+ },
+ "VUV": {
+ "name": "VUV",
+ "symbol": "VUV"
+ },
+ "WST": {
+ "name": "WST",
+ "symbol": "WST"
+ },
+ "XAF": {
+ "name": "XAF",
+ "symbol": "FCFA"
+ },
+ "XCD": {
+ "name": "XCD",
+ "symbol": "EC$"
+ },
+ "XOF": {
+ "name": "XOF",
+ "symbol": "CFA"
+ },
+ "XPF": {
+ "name": "XPF",
+ "symbol": "CFPF"
+ },
+ "YER": {
+ "name": "YER",
+ "symbol": "YER"
+ },
+ "ZAR": {
+ "name": "ZAR",
+ "symbol": "ZAR"
+ },
+ "ZMW": {
+ "name": "ZMW",
+ "symbol": "ZMW"
+ },
+ "ZWL": {
+ "name": "ZWL",
+ "symbol": "ZWL"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/currency/seh.json b/library/intl/resources/currency/seh.json
new file mode 100644
index 000000000..119049148
--- /dev/null
+++ b/library/intl/resources/currency/seh.json
@@ -0,0 +1,634 @@
+{
+ "AFN": {
+ "name": "AFN",
+ "symbol": "AFN"
+ },
+ "ALL": {
+ "name": "ALL",
+ "symbol": "ALL"
+ },
+ "AMD": {
+ "name": "AMD",
+ "symbol": "AMD"
+ },
+ "ANG": {
+ "name": "ANG",
+ "symbol": "ANG"
+ },
+ "ARS": {
+ "name": "ARS",
+ "symbol": "ARS"
+ },
+ "AWG": {
+ "name": "AWG",
+ "symbol": "AWG"
+ },
+ "AZN": {
+ "name": "AZN",
+ "symbol": "AZN"
+ },
+ "BAM": {
+ "name": "BAM",
+ "symbol": "BAM"
+ },
+ "BBD": {
+ "name": "BBD",
+ "symbol": "BBD"
+ },
+ "BDT": {
+ "name": "BDT",
+ "symbol": "BDT"
+ },
+ "BGN": {
+ "name": "BGN",
+ "symbol": "BGN"
+ },
+ "ETB": {
+ "name": "Birr etíope",
+ "symbol": "ETB"
+ },
+ "BMD": {
+ "name": "BMD",
+ "symbol": "BMD"
+ },
+ "BND": {
+ "name": "BND",
+ "symbol": "BND"
+ },
+ "BOB": {
+ "name": "BOB",
+ "symbol": "BOB"
+ },
+ "BRL": {
+ "name": "BRL",
+ "symbol": "R$"
+ },
+ "BSD": {
+ "name": "BSD",
+ "symbol": "BSD"
+ },
+ "BTN": {
+ "name": "BTN",
+ "symbol": "BTN"
+ },
+ "BYR": {
+ "name": "BYR",
+ "symbol": "BYR"
+ },
+ "BZD": {
+ "name": "BZD",
+ "symbol": "BZD"
+ },
+ "CLP": {
+ "name": "CLP",
+ "symbol": "CLP"
+ },
+ "COP": {
+ "name": "COP",
+ "symbol": "COP"
+ },
+ "CRC": {
+ "name": "CRC",
+ "symbol": "CRC"
+ },
+ "MWK": {
+ "name": "Cuacha do Maláui",
+ "symbol": "MWK"
+ },
+ "ZMW": {
+ "name": "Cuacha zambiano",
+ "symbol": "ZMW"
+ },
+ "AOA": {
+ "name": "Cuanza angolano",
+ "symbol": "AOA"
+ },
+ "CUC": {
+ "name": "CUC",
+ "symbol": "CUC"
+ },
+ "CUP": {
+ "name": "CUP",
+ "symbol": "CUP"
+ },
+ "CZK": {
+ "name": "CZK",
+ "symbol": "CZK"
+ },
+ "GMD": {
+ "name": "Dalasi de Gâmbia",
+ "symbol": "GMD"
+ },
+ "DZD": {
+ "name": "Dinar argelino",
+ "symbol": "DZD"
+ },
+ "BHD": {
+ "name": "Dinar bareinita",
+ "symbol": "BHD"
+ },
+ "LYD": {
+ "name": "Dinar líbio",
+ "symbol": "LYD"
+ },
+ "SDG": {
+ "name": "Dinar sudanês",
+ "symbol": "SDG"
+ },
+ "TND": {
+ "name": "Dinar tunisiano",
+ "symbol": "TND"
+ },
+ "AED": {
+ "name": "Dirém dos Emirados Ãrabes Unidos",
+ "symbol": "AED"
+ },
+ "MAD": {
+ "name": "Dirém marroquino",
+ "symbol": "MAD"
+ },
+ "DKK": {
+ "name": "DKK",
+ "symbol": "DKK"
+ },
+ "STD": {
+ "name": "Dobra de São Tomé e Príncipe",
+ "symbol": "STD"
+ },
+ "AUD": {
+ "name": "Dólar australiano",
+ "symbol": "A$"
+ },
+ "CAD": {
+ "name": "Dólar canadense",
+ "symbol": "CA$"
+ },
+ "NAD": {
+ "name": "Dólar da Namíbia",
+ "symbol": "NAD"
+ },
+ "LRD": {
+ "name": "Dólar liberiano",
+ "symbol": "LRD"
+ },
+ "USD": {
+ "name": "Dólar norte-americano",
+ "symbol": "US$"
+ },
+ "DOP": {
+ "name": "DOP",
+ "symbol": "DOP"
+ },
+ "CVE": {
+ "name": "Escudo cabo-verdiano",
+ "symbol": "CVE"
+ },
+ "EUR": {
+ "name": "Euro",
+ "symbol": "€"
+ },
+ "FJD": {
+ "name": "FJD",
+ "symbol": "FJD"
+ },
+ "FKP": {
+ "name": "FKP",
+ "symbol": "FKP"
+ },
+ "XOF": {
+ "name": "Franco CFA BCEAO",
+ "symbol": "CFA"
+ },
+ "XAF": {
+ "name": "Franco CFA BEAC",
+ "symbol": "FCFA"
+ },
+ "CDF": {
+ "name": "Franco congolês",
+ "symbol": "CDF"
+ },
+ "KMF": {
+ "name": "Franco de Comores",
+ "symbol": "KMF"
+ },
+ "MGA": {
+ "name": "Franco de Madagascar",
+ "symbol": "MGA"
+ },
+ "BIF": {
+ "name": "Franco do Burundi",
+ "symbol": "BIF"
+ },
+ "DJF": {
+ "name": "Franco do Djibuti",
+ "symbol": "DJF"
+ },
+ "RWF": {
+ "name": "Franco ruandês",
+ "symbol": "RWF"
+ },
+ "CHF": {
+ "name": "Franco suíço",
+ "symbol": "CHF"
+ },
+ "GEL": {
+ "name": "GEL",
+ "symbol": "GEL"
+ },
+ "GHS": {
+ "name": "GHS",
+ "symbol": "GHS"
+ },
+ "GIP": {
+ "name": "GIP",
+ "symbol": "GIP"
+ },
+ "GNF": {
+ "name": "GNF",
+ "symbol": "GNF"
+ },
+ "GTQ": {
+ "name": "GTQ",
+ "symbol": "GTQ"
+ },
+ "GYD": {
+ "name": "GYD",
+ "symbol": "GYD"
+ },
+ "HKD": {
+ "name": "HKD",
+ "symbol": "HK$"
+ },
+ "HNL": {
+ "name": "HNL",
+ "symbol": "HNL"
+ },
+ "HRK": {
+ "name": "HRK",
+ "symbol": "HRK"
+ },
+ "HTG": {
+ "name": "HTG",
+ "symbol": "HTG"
+ },
+ "HUF": {
+ "name": "HUF",
+ "symbol": "HUF"
+ },
+ "IDR": {
+ "name": "IDR",
+ "symbol": "IDR"
+ },
+ "JPY": {
+ "name": "Iene japonês",
+ "symbol": "JPÂ¥"
+ },
+ "ILS": {
+ "name": "ILS",
+ "symbol": "₪"
+ },
+ "IQD": {
+ "name": "IQD",
+ "symbol": "IQD"
+ },
+ "IRR": {
+ "name": "IRR",
+ "symbol": "IRR"
+ },
+ "ISK": {
+ "name": "ISK",
+ "symbol": "ISK"
+ },
+ "JMD": {
+ "name": "JMD",
+ "symbol": "JMD"
+ },
+ "JOD": {
+ "name": "JOD",
+ "symbol": "JOD"
+ },
+ "KGS": {
+ "name": "KGS",
+ "symbol": "KGS"
+ },
+ "KHR": {
+ "name": "KHR",
+ "symbol": "KHR"
+ },
+ "KPW": {
+ "name": "KPW",
+ "symbol": "KPW"
+ },
+ "KRW": {
+ "name": "KRW",
+ "symbol": "â‚©"
+ },
+ "KWD": {
+ "name": "KWD",
+ "symbol": "KWD"
+ },
+ "KYD": {
+ "name": "KYD",
+ "symbol": "KYD"
+ },
+ "KZT": {
+ "name": "KZT",
+ "symbol": "KZT"
+ },
+ "LAK": {
+ "name": "LAK",
+ "symbol": "LAK"
+ },
+ "LBP": {
+ "name": "LBP",
+ "symbol": "LBP"
+ },
+ "SLL": {
+ "name": "Leone de Serra Leoa",
+ "symbol": "SLL"
+ },
+ "SHP": {
+ "name": "Libra de Santa Helena",
+ "symbol": "SHP"
+ },
+ "EGP": {
+ "name": "Libra egípcia",
+ "symbol": "EGP"
+ },
+ "GBP": {
+ "name": "Libra esterlina britânica",
+ "symbol": "£"
+ },
+ "SZL": {
+ "name": "Lilangeni da Suazilândia",
+ "symbol": "SZL"
+ },
+ "LKR": {
+ "name": "LKR",
+ "symbol": "LKR"
+ },
+ "LSL": {
+ "name": "Loti do Lesoto",
+ "symbol": "LSL"
+ },
+ "LTL": {
+ "name": "LTL",
+ "symbol": "LTL"
+ },
+ "MDL": {
+ "name": "MDL",
+ "symbol": "MDL"
+ },
+ "MZN": {
+ "name": "Metical de Moçambique",
+ "symbol": "MTn"
+ },
+ "MKD": {
+ "name": "MKD",
+ "symbol": "MKD"
+ },
+ "MMK": {
+ "name": "MMK",
+ "symbol": "MMK"
+ },
+ "MNT": {
+ "name": "MNT",
+ "symbol": "MNT"
+ },
+ "MOP": {
+ "name": "MOP",
+ "symbol": "MOP"
+ },
+ "MVR": {
+ "name": "MVR",
+ "symbol": "MVR"
+ },
+ "MXN": {
+ "name": "MXN",
+ "symbol": "MX$"
+ },
+ "MYR": {
+ "name": "MYR",
+ "symbol": "MYR"
+ },
+ "NGN": {
+ "name": "Naira nigeriana",
+ "symbol": "NGN"
+ },
+ "ERN": {
+ "name": "Nakfa da Eritréia",
+ "symbol": "ERN"
+ },
+ "NIO": {
+ "name": "NIO",
+ "symbol": "NIO"
+ },
+ "NOK": {
+ "name": "NOK",
+ "symbol": "NOK"
+ },
+ "NPR": {
+ "name": "NPR",
+ "symbol": "NPR"
+ },
+ "NZD": {
+ "name": "NZD",
+ "symbol": "NZ$"
+ },
+ "OMR": {
+ "name": "OMR",
+ "symbol": "OMR"
+ },
+ "MRO": {
+ "name": "Ouguiya da Mauritânia",
+ "symbol": "MRO"
+ },
+ "PAB": {
+ "name": "PAB",
+ "symbol": "PAB"
+ },
+ "PEN": {
+ "name": "PEN",
+ "symbol": "PEN"
+ },
+ "PGK": {
+ "name": "PGK",
+ "symbol": "PGK"
+ },
+ "PHP": {
+ "name": "PHP",
+ "symbol": "PHP"
+ },
+ "PKR": {
+ "name": "PKR",
+ "symbol": "PKR"
+ },
+ "PLN": {
+ "name": "PLN",
+ "symbol": "PLN"
+ },
+ "BWP": {
+ "name": "Pula botsuanesa",
+ "symbol": "BWP"
+ },
+ "PYG": {
+ "name": "PYG",
+ "symbol": "PYG"
+ },
+ "QAR": {
+ "name": "QAR",
+ "symbol": "QAR"
+ },
+ "ZAR": {
+ "name": "Rand sul-africano",
+ "symbol": "ZAR"
+ },
+ "SAR": {
+ "name": "Rial saudita",
+ "symbol": "SAR"
+ },
+ "RON": {
+ "name": "RON",
+ "symbol": "RON"
+ },
+ "RSD": {
+ "name": "RSD",
+ "symbol": "RSD"
+ },
+ "RUB": {
+ "name": "RUB",
+ "symbol": "RUB"
+ },
+ "SCR": {
+ "name": "Rupia das Seychelles",
+ "symbol": "SCR"
+ },
+ "MUR": {
+ "name": "Rupia de Maurício",
+ "symbol": "MUR"
+ },
+ "INR": {
+ "name": "Rúpia indiana",
+ "symbol": "₹"
+ },
+ "SBD": {
+ "name": "SBD",
+ "symbol": "SBD"
+ },
+ "SEK": {
+ "name": "SEK",
+ "symbol": "SEK"
+ },
+ "SGD": {
+ "name": "SGD",
+ "symbol": "SGD"
+ },
+ "SRD": {
+ "name": "SRD",
+ "symbol": "SRD"
+ },
+ "SSP": {
+ "name": "SSP",
+ "symbol": "SSP"
+ },
+ "SVC": {
+ "name": "SVC",
+ "symbol": "SVC"
+ },
+ "SYP": {
+ "name": "SYP",
+ "symbol": "SYP"
+ },
+ "THB": {
+ "name": "THB",
+ "symbol": "THB"
+ },
+ "TJS": {
+ "name": "TJS",
+ "symbol": "TJS"
+ },
+ "TMT": {
+ "name": "TMT",
+ "symbol": "TMT"
+ },
+ "TOP": {
+ "name": "TOP",
+ "symbol": "TOP"
+ },
+ "TRY": {
+ "name": "TRY",
+ "symbol": "TRY"
+ },
+ "TTD": {
+ "name": "TTD",
+ "symbol": "TTD"
+ },
+ "TWD": {
+ "name": "TWD",
+ "symbol": "NT$"
+ },
+ "UAH": {
+ "name": "UAH",
+ "symbol": "UAH"
+ },
+ "UYU": {
+ "name": "UYU",
+ "symbol": "UYU"
+ },
+ "UZS": {
+ "name": "UZS",
+ "symbol": "UZS"
+ },
+ "VEF": {
+ "name": "VEF",
+ "symbol": "VEF"
+ },
+ "VND": {
+ "name": "VND",
+ "symbol": "â‚«"
+ },
+ "VUV": {
+ "name": "VUV",
+ "symbol": "VUV"
+ },
+ "WST": {
+ "name": "WST",
+ "symbol": "WST"
+ },
+ "XCD": {
+ "name": "XCD",
+ "symbol": "EC$"
+ },
+ "TZS": {
+ "name": "Xelim da Tanzânia",
+ "symbol": "TZS"
+ },
+ "KES": {
+ "name": "Xelim queniano",
+ "symbol": "KES"
+ },
+ "SOS": {
+ "name": "Xelim somali",
+ "symbol": "SOS"
+ },
+ "UGX": {
+ "name": "Xelim ugandense (1966–1987)",
+ "symbol": "UGX"
+ },
+ "XPF": {
+ "name": "XPF",
+ "symbol": "CFPF"
+ },
+ "YER": {
+ "name": "YER",
+ "symbol": "YER"
+ },
+ "CNY": {
+ "name": "Yuan Renminbi chinês",
+ "symbol": "CNÂ¥"
+ },
+ "ZWL": {
+ "name": "ZWL",
+ "symbol": "ZWL"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/currency/ses.json b/library/intl/resources/currency/ses.json
new file mode 100644
index 000000000..c75824e61
--- /dev/null
+++ b/library/intl/resources/currency/ses.json
@@ -0,0 +1,634 @@
+{
+ "AFN": {
+ "name": "AFN",
+ "symbol": "AFN"
+ },
+ "ALL": {
+ "name": "ALL",
+ "symbol": "ALL"
+ },
+ "DZD": {
+ "name": "Alžeeri Dinar",
+ "symbol": "DZD"
+ },
+ "AMD": {
+ "name": "AMD",
+ "symbol": "AMD"
+ },
+ "USD": {
+ "name": "Ameriki Dollar",
+ "symbol": "US$"
+ },
+ "ANG": {
+ "name": "ANG",
+ "symbol": "ANG"
+ },
+ "AOA": {
+ "name": "Angoola Kwanza",
+ "symbol": "AOA"
+ },
+ "ARS": {
+ "name": "ARS",
+ "symbol": "ARS"
+ },
+ "AWG": {
+ "name": "AWG",
+ "symbol": "AWG"
+ },
+ "AZN": {
+ "name": "AZN",
+ "symbol": "AZN"
+ },
+ "BHD": {
+ "name": "Bahareen Dinar",
+ "symbol": "BHD"
+ },
+ "BAM": {
+ "name": "BAM",
+ "symbol": "BAM"
+ },
+ "BBD": {
+ "name": "BBD",
+ "symbol": "BBD"
+ },
+ "BDT": {
+ "name": "BDT",
+ "symbol": "BDT"
+ },
+ "BGN": {
+ "name": "BGN",
+ "symbol": "BGN"
+ },
+ "BMD": {
+ "name": "BMD",
+ "symbol": "BMD"
+ },
+ "BND": {
+ "name": "BND",
+ "symbol": "BND"
+ },
+ "BOB": {
+ "name": "BOB",
+ "symbol": "BOB"
+ },
+ "BWP": {
+ "name": "Botswaana Pund",
+ "symbol": "BWP"
+ },
+ "GBP": {
+ "name": "Britin Pund",
+ "symbol": "£"
+ },
+ "BRL": {
+ "name": "BRL",
+ "symbol": "R$"
+ },
+ "BSD": {
+ "name": "BSD",
+ "symbol": "BSD"
+ },
+ "BTN": {
+ "name": "BTN",
+ "symbol": "BTN"
+ },
+ "BIF": {
+ "name": "Burundi Fraŋ",
+ "symbol": "BIF"
+ },
+ "BYR": {
+ "name": "BYR",
+ "symbol": "BYR"
+ },
+ "BZD": {
+ "name": "BZD",
+ "symbol": "BZD"
+ },
+ "XOF": {
+ "name": "CFA Fraŋ (BCEAO)",
+ "symbol": "CFA"
+ },
+ "XAF": {
+ "name": "CFA Fraŋ (BEAC)",
+ "symbol": "FCFA"
+ },
+ "CLP": {
+ "name": "CLP",
+ "symbol": "CLP"
+ },
+ "COP": {
+ "name": "COP",
+ "symbol": "COP"
+ },
+ "CRC": {
+ "name": "CRC",
+ "symbol": "CRC"
+ },
+ "CUC": {
+ "name": "CUC",
+ "symbol": "CUC"
+ },
+ "CUP": {
+ "name": "CUP",
+ "symbol": "CUP"
+ },
+ "CZK": {
+ "name": "CZK",
+ "symbol": "CZK"
+ },
+ "DKK": {
+ "name": "DKK",
+ "symbol": "DKK"
+ },
+ "DOP": {
+ "name": "DOP",
+ "symbol": "DOP"
+ },
+ "ETB": {
+ "name": "Ecioopi Birr",
+ "symbol": "ETB"
+ },
+ "EUR": {
+ "name": "Eero",
+ "symbol": "€"
+ },
+ "ERN": {
+ "name": "Eritree Nafka",
+ "symbol": "ERN"
+ },
+ "FJD": {
+ "name": "FJD",
+ "symbol": "FJD"
+ },
+ "FKP": {
+ "name": "FKP",
+ "symbol": "FKP"
+ },
+ "GMD": {
+ "name": "Gambi Dalasi",
+ "symbol": "GMD"
+ },
+ "GEL": {
+ "name": "GEL",
+ "symbol": "GEL"
+ },
+ "GHS": {
+ "name": "GHS",
+ "symbol": "GHS"
+ },
+ "GIP": {
+ "name": "GIP",
+ "symbol": "GIP"
+ },
+ "GNF": {
+ "name": "GNF",
+ "symbol": "GNF"
+ },
+ "GTQ": {
+ "name": "GTQ",
+ "symbol": "GTQ"
+ },
+ "GYD": {
+ "name": "GYD",
+ "symbol": "GYD"
+ },
+ "ZAR": {
+ "name": "Hawasa Afriki Rand",
+ "symbol": "ZAR"
+ },
+ "HKD": {
+ "name": "HKD",
+ "symbol": "HK$"
+ },
+ "HNL": {
+ "name": "HNL",
+ "symbol": "HNL"
+ },
+ "HRK": {
+ "name": "HRK",
+ "symbol": "HRK"
+ },
+ "HTG": {
+ "name": "HTG",
+ "symbol": "HTG"
+ },
+ "HUF": {
+ "name": "HUF",
+ "symbol": "HUF"
+ },
+ "IDR": {
+ "name": "IDR",
+ "symbol": "IDR"
+ },
+ "ILS": {
+ "name": "ILS",
+ "symbol": "₪"
+ },
+ "INR": {
+ "name": "Indu Rupii",
+ "symbol": "₹"
+ },
+ "IQD": {
+ "name": "IQD",
+ "symbol": "IQD"
+ },
+ "IRR": {
+ "name": "IRR",
+ "symbol": "IRR"
+ },
+ "ISK": {
+ "name": "ISK",
+ "symbol": "ISK"
+ },
+ "JPY": {
+ "name": "Jaapoŋ Yen",
+ "symbol": "JPÂ¥"
+ },
+ "DJF": {
+ "name": "Jibuuti Fraŋ",
+ "symbol": "DJF"
+ },
+ "JMD": {
+ "name": "JMD",
+ "symbol": "JMD"
+ },
+ "JOD": {
+ "name": "JOD",
+ "symbol": "JOD"
+ },
+ "CAD": {
+ "name": "Kanaada Dollar",
+ "symbol": "CA$"
+ },
+ "CVE": {
+ "name": "Kapuver Escudo",
+ "symbol": "CVE"
+ },
+ "KES": {
+ "name": "Keeniya Šiiliŋ",
+ "symbol": "KES"
+ },
+ "KGS": {
+ "name": "KGS",
+ "symbol": "KGS"
+ },
+ "KHR": {
+ "name": "KHR",
+ "symbol": "KHR"
+ },
+ "KMF": {
+ "name": "Komoor Fraŋ",
+ "symbol": "KMF"
+ },
+ "CDF": {
+ "name": "Kongo Fraŋ",
+ "symbol": "CDF"
+ },
+ "KPW": {
+ "name": "KPW",
+ "symbol": "KPW"
+ },
+ "KRW": {
+ "name": "KRW",
+ "symbol": "â‚©"
+ },
+ "KWD": {
+ "name": "KWD",
+ "symbol": "KWD"
+ },
+ "KYD": {
+ "name": "KYD",
+ "symbol": "KYD"
+ },
+ "KZT": {
+ "name": "KZT",
+ "symbol": "KZT"
+ },
+ "AED": {
+ "name": "Laaraw Immaara Margantey Dirham",
+ "symbol": "AED"
+ },
+ "LAK": {
+ "name": "LAK",
+ "symbol": "LAK"
+ },
+ "LBP": {
+ "name": "LBP",
+ "symbol": "LBP"
+ },
+ "SLL": {
+ "name": "Leeon",
+ "symbol": "SLL"
+ },
+ "LSL": {
+ "name": "Leezoto Loti",
+ "symbol": "LSL"
+ },
+ "LRD": {
+ "name": "Liberia Dollar",
+ "symbol": "LRD"
+ },
+ "LYD": {
+ "name": "Liibi Dinar",
+ "symbol": "LYD"
+ },
+ "SZL": {
+ "name": "Lilangeni",
+ "symbol": "SZL"
+ },
+ "LKR": {
+ "name": "LKR",
+ "symbol": "LKR"
+ },
+ "LTL": {
+ "name": "LTL",
+ "symbol": "LTL"
+ },
+ "MAD": {
+ "name": "Maarok Dirham",
+ "symbol": "MAD"
+ },
+ "MWK": {
+ "name": "Malaawi Kwaca",
+ "symbol": "MWK"
+ },
+ "MGA": {
+ "name": "Malgaaši Fraŋ",
+ "symbol": "MGA"
+ },
+ "MDL": {
+ "name": "MDL",
+ "symbol": "MDL"
+ },
+ "EGP": {
+ "name": "Misra Pund",
+ "symbol": "EGP"
+ },
+ "MKD": {
+ "name": "MKD",
+ "symbol": "MKD"
+ },
+ "MMK": {
+ "name": "MMK",
+ "symbol": "MMK"
+ },
+ "MNT": {
+ "name": "MNT",
+ "symbol": "MNT"
+ },
+ "MUR": {
+ "name": "Mooris Rupii",
+ "symbol": "MUR"
+ },
+ "MRO": {
+ "name": "Mooritaani Ugiya",
+ "symbol": "MRO"
+ },
+ "MOP": {
+ "name": "MOP",
+ "symbol": "MOP"
+ },
+ "MVR": {
+ "name": "MVR",
+ "symbol": "MVR"
+ },
+ "MXN": {
+ "name": "MXN",
+ "symbol": "MX$"
+ },
+ "MYR": {
+ "name": "MYR",
+ "symbol": "MYR"
+ },
+ "MZN": {
+ "name": "MZN",
+ "symbol": "MZN"
+ },
+ "NGN": {
+ "name": "Naajiriya Neera",
+ "symbol": "NGN"
+ },
+ "NAD": {
+ "name": "Naamibi Dollar",
+ "symbol": "NAD"
+ },
+ "NIO": {
+ "name": "NIO",
+ "symbol": "NIO"
+ },
+ "NOK": {
+ "name": "NOK",
+ "symbol": "NOK"
+ },
+ "NPR": {
+ "name": "NPR",
+ "symbol": "NPR"
+ },
+ "NZD": {
+ "name": "NZD",
+ "symbol": "NZ$"
+ },
+ "OMR": {
+ "name": "OMR",
+ "symbol": "OMR"
+ },
+ "AUD": {
+ "name": "Ostraali Dollar",
+ "symbol": "A$"
+ },
+ "PAB": {
+ "name": "PAB",
+ "symbol": "PAB"
+ },
+ "PEN": {
+ "name": "PEN",
+ "symbol": "PEN"
+ },
+ "PGK": {
+ "name": "PGK",
+ "symbol": "PGK"
+ },
+ "PHP": {
+ "name": "PHP",
+ "symbol": "PHP"
+ },
+ "PKR": {
+ "name": "PKR",
+ "symbol": "PKR"
+ },
+ "PLN": {
+ "name": "PLN",
+ "symbol": "PLN"
+ },
+ "PYG": {
+ "name": "PYG",
+ "symbol": "PYG"
+ },
+ "QAR": {
+ "name": "QAR",
+ "symbol": "QAR"
+ },
+ "RON": {
+ "name": "RON",
+ "symbol": "RON"
+ },
+ "RSD": {
+ "name": "RSD",
+ "symbol": "RSD"
+ },
+ "RUB": {
+ "name": "RUB",
+ "symbol": "RUB"
+ },
+ "RWF": {
+ "name": "Rwanda Fraŋ",
+ "symbol": "RWF"
+ },
+ "STD": {
+ "name": "Sao Tome nda Prinsipe Dobra",
+ "symbol": "STD"
+ },
+ "SAR": {
+ "name": "Saudiya Riyal",
+ "symbol": "SAR"
+ },
+ "SBD": {
+ "name": "SBD",
+ "symbol": "SBD"
+ },
+ "SCR": {
+ "name": "Seešel Rupii",
+ "symbol": "SCR"
+ },
+ "SEK": {
+ "name": "SEK",
+ "symbol": "SEK"
+ },
+ "SHP": {
+ "name": "Seŋ Helena Fraŋ",
+ "symbol": "SHP"
+ },
+ "SGD": {
+ "name": "SGD",
+ "symbol": "SGD"
+ },
+ "CNY": {
+ "name": "Sinwa Yuan Renminbi",
+ "symbol": "CNÂ¥"
+ },
+ "SOS": {
+ "name": "Somaali Šiiliŋ",
+ "symbol": "SOS"
+ },
+ "SRD": {
+ "name": "SRD",
+ "symbol": "SRD"
+ },
+ "SSP": {
+ "name": "SSP",
+ "symbol": "SSP"
+ },
+ "SDG": {
+ "name": "Suudaŋ Dinar",
+ "symbol": "SDG"
+ },
+ "SVC": {
+ "name": "SVC",
+ "symbol": "SVC"
+ },
+ "CHF": {
+ "name": "Swisu Fraŋ",
+ "symbol": "CHF"
+ },
+ "SYP": {
+ "name": "SYP",
+ "symbol": "SYP"
+ },
+ "TZS": {
+ "name": "Tanzaani Šiiliŋ",
+ "symbol": "TZS"
+ },
+ "THB": {
+ "name": "THB",
+ "symbol": "THB"
+ },
+ "TJS": {
+ "name": "TJS",
+ "symbol": "TJS"
+ },
+ "TMT": {
+ "name": "TMT",
+ "symbol": "TMT"
+ },
+ "TOP": {
+ "name": "TOP",
+ "symbol": "TOP"
+ },
+ "TRY": {
+ "name": "TRY",
+ "symbol": "TRY"
+ },
+ "TTD": {
+ "name": "TTD",
+ "symbol": "TTD"
+ },
+ "TND": {
+ "name": "Tunizi Dinar",
+ "symbol": "TND"
+ },
+ "TWD": {
+ "name": "TWD",
+ "symbol": "NT$"
+ },
+ "UAH": {
+ "name": "UAH",
+ "symbol": "UAH"
+ },
+ "UGX": {
+ "name": "Uganda Šiiliŋ",
+ "symbol": "UGX"
+ },
+ "UYU": {
+ "name": "UYU",
+ "symbol": "UYU"
+ },
+ "UZS": {
+ "name": "UZS",
+ "symbol": "UZS"
+ },
+ "VEF": {
+ "name": "VEF",
+ "symbol": "VEF"
+ },
+ "VND": {
+ "name": "VND",
+ "symbol": "â‚«"
+ },
+ "VUV": {
+ "name": "VUV",
+ "symbol": "VUV"
+ },
+ "WST": {
+ "name": "WST",
+ "symbol": "WST"
+ },
+ "XCD": {
+ "name": "XCD",
+ "symbol": "EC$"
+ },
+ "XPF": {
+ "name": "XPF",
+ "symbol": "CFPF"
+ },
+ "YER": {
+ "name": "YER",
+ "symbol": "YER"
+ },
+ "ZMW": {
+ "name": "Zambi Kwaca",
+ "symbol": "ZMW"
+ },
+ "ZWL": {
+ "name": "ZWL",
+ "symbol": "ZWL"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/currency/sg.json b/library/intl/resources/currency/sg.json
new file mode 100644
index 000000000..051bbdb34
--- /dev/null
+++ b/library/intl/resources/currency/sg.json
@@ -0,0 +1,634 @@
+{
+ "AFN": {
+ "name": "AFN",
+ "symbol": "AFN"
+ },
+ "ALL": {
+ "name": "ALL",
+ "symbol": "ALL"
+ },
+ "AMD": {
+ "name": "AMD",
+ "symbol": "AMD"
+ },
+ "ANG": {
+ "name": "ANG",
+ "symbol": "ANG"
+ },
+ "MGA": {
+ "name": "ariâri tî Madagasikära",
+ "symbol": "MGA"
+ },
+ "ARS": {
+ "name": "ARS",
+ "symbol": "ARS"
+ },
+ "AWG": {
+ "name": "AWG",
+ "symbol": "AWG"
+ },
+ "AZN": {
+ "name": "AZN",
+ "symbol": "AZN"
+ },
+ "BAM": {
+ "name": "BAM",
+ "symbol": "BAM"
+ },
+ "BBD": {
+ "name": "BBD",
+ "symbol": "BBD"
+ },
+ "BDT": {
+ "name": "BDT",
+ "symbol": "BDT"
+ },
+ "BGN": {
+ "name": "BGN",
+ "symbol": "BGN"
+ },
+ "ETB": {
+ "name": "bir tî Etiopïi",
+ "symbol": "ETB"
+ },
+ "BMD": {
+ "name": "BMD",
+ "symbol": "BMD"
+ },
+ "BND": {
+ "name": "BND",
+ "symbol": "BND"
+ },
+ "BOB": {
+ "name": "BOB",
+ "symbol": "BOB"
+ },
+ "BRL": {
+ "name": "BRL",
+ "symbol": "R$"
+ },
+ "BSD": {
+ "name": "BSD",
+ "symbol": "BSD"
+ },
+ "BTN": {
+ "name": "BTN",
+ "symbol": "BTN"
+ },
+ "BYR": {
+ "name": "BYR",
+ "symbol": "BYR"
+ },
+ "BZD": {
+ "name": "BZD",
+ "symbol": "BZD"
+ },
+ "CLP": {
+ "name": "CLP",
+ "symbol": "CLP"
+ },
+ "COP": {
+ "name": "COP",
+ "symbol": "COP"
+ },
+ "CRC": {
+ "name": "CRC",
+ "symbol": "CRC"
+ },
+ "CUC": {
+ "name": "CUC",
+ "symbol": "CUC"
+ },
+ "CUP": {
+ "name": "CUP",
+ "symbol": "CUP"
+ },
+ "CZK": {
+ "name": "CZK",
+ "symbol": "CZK"
+ },
+ "GMD": {
+ "name": "dalasi tî gambïi",
+ "symbol": "GMD"
+ },
+ "LYD": {
+ "name": "dinäar tî Libïi",
+ "symbol": "LYD"
+ },
+ "TND": {
+ "name": "dinära tî Tunizïi",
+ "symbol": "TND"
+ },
+ "DZD": {
+ "name": "dinäri tî Alzerïi",
+ "symbol": "DZD"
+ },
+ "AED": {
+ "name": "dirâm tî âEmirâti tî Arâbo Ôko",
+ "symbol": "AED"
+ },
+ "MAD": {
+ "name": "dirâm tî Marôko",
+ "symbol": "MAD"
+ },
+ "DKK": {
+ "name": "DKK",
+ "symbol": "DKK"
+ },
+ "STD": {
+ "name": "dôbra tî Sâô Tomë na Prinsîpe",
+ "symbol": "STD"
+ },
+ "USD": {
+ "name": "dol$ara ttî äLetäa-Ôko tî Amerîka",
+ "symbol": "US$"
+ },
+ "CAD": {
+ "name": "dolära tî kanadäa",
+ "symbol": "CA$"
+ },
+ "LRD": {
+ "name": "dolära tî Liberïa",
+ "symbol": "LRD"
+ },
+ "NAD": {
+ "name": "dolära tî Namibïi",
+ "symbol": "NAD"
+ },
+ "AUD": {
+ "name": "dolära tî Ostralïi",
+ "symbol": "A$"
+ },
+ "BHD": {
+ "name": "dolùara tî Bahrâina",
+ "symbol": "BHD"
+ },
+ "DOP": {
+ "name": "DOP",
+ "symbol": "DOP"
+ },
+ "CVE": {
+ "name": "eskûêdo tî Kâpo-Vêre",
+ "symbol": "CVE"
+ },
+ "XOF": {
+ "name": "farânga CFA (BCEAO)",
+ "symbol": "CFA"
+ },
+ "XAF": {
+ "name": "farânga CFA (BEAC)",
+ "symbol": "FCFA"
+ },
+ "BIF": {
+ "name": "farânga tî Burundïi",
+ "symbol": "BIF"
+ },
+ "DJF": {
+ "name": "farânga tî Dibutïi",
+ "symbol": "DJF"
+ },
+ "KMF": {
+ "name": "farânga tî Kömôro",
+ "symbol": "KMF"
+ },
+ "CDF": {
+ "name": "farânga tî Kongöo",
+ "symbol": "CDF"
+ },
+ "RWF": {
+ "name": "farânga tî Ruandäa",
+ "symbol": "RWF"
+ },
+ "CHF": {
+ "name": "farânga tî Sûîsi",
+ "symbol": "CHF"
+ },
+ "FJD": {
+ "name": "FJD",
+ "symbol": "FJD"
+ },
+ "FKP": {
+ "name": "FKP",
+ "symbol": "FKP"
+ },
+ "GEL": {
+ "name": "GEL",
+ "symbol": "GEL"
+ },
+ "GHS": {
+ "name": "GHS",
+ "symbol": "GHS"
+ },
+ "GIP": {
+ "name": "GIP",
+ "symbol": "GIP"
+ },
+ "GNF": {
+ "name": "GNF",
+ "symbol": "GNF"
+ },
+ "GTQ": {
+ "name": "GTQ",
+ "symbol": "GTQ"
+ },
+ "GYD": {
+ "name": "GYD",
+ "symbol": "GYD"
+ },
+ "HKD": {
+ "name": "HKD",
+ "symbol": "HK$"
+ },
+ "HNL": {
+ "name": "HNL",
+ "symbol": "HNL"
+ },
+ "HRK": {
+ "name": "HRK",
+ "symbol": "HRK"
+ },
+ "HTG": {
+ "name": "HTG",
+ "symbol": "HTG"
+ },
+ "HUF": {
+ "name": "HUF",
+ "symbol": "HUF"
+ },
+ "IDR": {
+ "name": "IDR",
+ "symbol": "IDR"
+ },
+ "ILS": {
+ "name": "ILS",
+ "symbol": "₪"
+ },
+ "IQD": {
+ "name": "IQD",
+ "symbol": "IQD"
+ },
+ "IRR": {
+ "name": "IRR",
+ "symbol": "IRR"
+ },
+ "ISK": {
+ "name": "ISK",
+ "symbol": "ISK"
+ },
+ "JMD": {
+ "name": "JMD",
+ "symbol": "JMD"
+ },
+ "JOD": {
+ "name": "JOD",
+ "symbol": "JOD"
+ },
+ "KGS": {
+ "name": "KGS",
+ "symbol": "KGS"
+ },
+ "KHR": {
+ "name": "KHR",
+ "symbol": "KHR"
+ },
+ "KPW": {
+ "name": "KPW",
+ "symbol": "KPW"
+ },
+ "KRW": {
+ "name": "KRW",
+ "symbol": "â‚©"
+ },
+ "AOA": {
+ "name": "kwânza tî Angoläa",
+ "symbol": "AOA"
+ },
+ "MWK": {
+ "name": "kwâtia tî Malawïi",
+ "symbol": "MWK"
+ },
+ "ZMW": {
+ "name": "kwâtia tî Zambïi",
+ "symbol": "ZMW"
+ },
+ "KWD": {
+ "name": "KWD",
+ "symbol": "KWD"
+ },
+ "KYD": {
+ "name": "KYD",
+ "symbol": "KYD"
+ },
+ "KZT": {
+ "name": "KZT",
+ "symbol": "KZT"
+ },
+ "LAK": {
+ "name": "LAK",
+ "symbol": "LAK"
+ },
+ "LBP": {
+ "name": "LBP",
+ "symbol": "LBP"
+ },
+ "SLL": {
+ "name": "leône tî Sierâ-Leône",
+ "symbol": "SLL"
+ },
+ "SZL": {
+ "name": "lilangùeni tî Swazïlânde",
+ "symbol": "SZL"
+ },
+ "LKR": {
+ "name": "LKR",
+ "symbol": "LKR"
+ },
+ "LSL": {
+ "name": "loti tî Lesôtho",
+ "symbol": "LSL"
+ },
+ "LTL": {
+ "name": "LTL",
+ "symbol": "LTL"
+ },
+ "MDL": {
+ "name": "MDL",
+ "symbol": "MDL"
+ },
+ "MKD": {
+ "name": "MKD",
+ "symbol": "MKD"
+ },
+ "MMK": {
+ "name": "MMK",
+ "symbol": "MMK"
+ },
+ "MNT": {
+ "name": "MNT",
+ "symbol": "MNT"
+ },
+ "MOP": {
+ "name": "MOP",
+ "symbol": "MOP"
+ },
+ "MVR": {
+ "name": "MVR",
+ "symbol": "MVR"
+ },
+ "MXN": {
+ "name": "MXN",
+ "symbol": "MX$"
+ },
+ "MYR": {
+ "name": "MYR",
+ "symbol": "MYR"
+ },
+ "MZN": {
+ "name": "MZN",
+ "symbol": "MZN"
+ },
+ "NGN": {
+ "name": "nâîra tî Nizerïa",
+ "symbol": "NGN"
+ },
+ "ERN": {
+ "name": "nakafa tî Eritrëe",
+ "symbol": "ERN"
+ },
+ "NIO": {
+ "name": "NIO",
+ "symbol": "NIO"
+ },
+ "NOK": {
+ "name": "NOK",
+ "symbol": "NOK"
+ },
+ "NPR": {
+ "name": "NPR",
+ "symbol": "NPR"
+ },
+ "NZD": {
+ "name": "NZD",
+ "symbol": "NZ$"
+ },
+ "OMR": {
+ "name": "OMR",
+ "symbol": "OMR"
+ },
+ "PAB": {
+ "name": "PAB",
+ "symbol": "PAB"
+ },
+ "PEN": {
+ "name": "PEN",
+ "symbol": "PEN"
+ },
+ "PGK": {
+ "name": "PGK",
+ "symbol": "PGK"
+ },
+ "PHP": {
+ "name": "PHP",
+ "symbol": "PHP"
+ },
+ "PKR": {
+ "name": "PKR",
+ "symbol": "PKR"
+ },
+ "PLN": {
+ "name": "PLN",
+ "symbol": "PLN"
+ },
+ "GBP": {
+ "name": "pôndo tî Anglëe",
+ "symbol": "£"
+ },
+ "EGP": {
+ "name": "pôndo tî Kâmitâ",
+ "symbol": "EGP"
+ },
+ "SDG": {
+ "name": "pôndo tî Sudäan",
+ "symbol": "SDG"
+ },
+ "SHP": {
+ "name": "pôndo tî Zûâ Sênt-Helêna",
+ "symbol": "SHP"
+ },
+ "BWP": {
+ "name": "pûla tî Botswana",
+ "symbol": "BWP"
+ },
+ "PYG": {
+ "name": "PYG",
+ "symbol": "PYG"
+ },
+ "QAR": {
+ "name": "QAR",
+ "symbol": "QAR"
+ },
+ "ZAR": {
+ "name": "rânde tî Mbongo-Afrîka",
+ "symbol": "ZAR"
+ },
+ "SAR": {
+ "name": "riâli tî Saûdi Arabïi",
+ "symbol": "SAR"
+ },
+ "RON": {
+ "name": "RON",
+ "symbol": "RON"
+ },
+ "RSD": {
+ "name": "RSD",
+ "symbol": "RSD"
+ },
+ "RUB": {
+ "name": "RUB",
+ "symbol": "RUB"
+ },
+ "INR": {
+ "name": "rupïi tî Ênnde",
+ "symbol": "₹"
+ },
+ "MUR": {
+ "name": "rupïi tî Mörîsi",
+ "symbol": "MUR"
+ },
+ "SCR": {
+ "name": "rupïi tî Sëyshêle",
+ "symbol": "SCR"
+ },
+ "SBD": {
+ "name": "SBD",
+ "symbol": "SBD"
+ },
+ "SEK": {
+ "name": "SEK",
+ "symbol": "SEK"
+ },
+ "SGD": {
+ "name": "SGD",
+ "symbol": "SGD"
+ },
+ "KES": {
+ "name": "shilîngi tî Kenyäa",
+ "symbol": "KES"
+ },
+ "SOS": {
+ "name": "shilîngi tî Somalïi",
+ "symbol": "SOS"
+ },
+ "TZS": {
+ "name": "shilîngi tî Tanzanïi",
+ "symbol": "TZS"
+ },
+ "UGX": {
+ "name": "shilîngi tî Ugandäa",
+ "symbol": "UGX"
+ },
+ "SRD": {
+ "name": "SRD",
+ "symbol": "SRD"
+ },
+ "SSP": {
+ "name": "SSP",
+ "symbol": "SSP"
+ },
+ "SVC": {
+ "name": "SVC",
+ "symbol": "SVC"
+ },
+ "SYP": {
+ "name": "SYP",
+ "symbol": "SYP"
+ },
+ "THB": {
+ "name": "THB",
+ "symbol": "THB"
+ },
+ "TJS": {
+ "name": "TJS",
+ "symbol": "TJS"
+ },
+ "TMT": {
+ "name": "TMT",
+ "symbol": "TMT"
+ },
+ "TOP": {
+ "name": "TOP",
+ "symbol": "TOP"
+ },
+ "TRY": {
+ "name": "TRY",
+ "symbol": "TRY"
+ },
+ "TTD": {
+ "name": "TTD",
+ "symbol": "TTD"
+ },
+ "TWD": {
+ "name": "TWD",
+ "symbol": "NT$"
+ },
+ "UAH": {
+ "name": "UAH",
+ "symbol": "UAH"
+ },
+ "MRO": {
+ "name": "ugîya tî Moritanïi",
+ "symbol": "MRO"
+ },
+ "UYU": {
+ "name": "UYU",
+ "symbol": "UYU"
+ },
+ "UZS": {
+ "name": "UZS",
+ "symbol": "UZS"
+ },
+ "VEF": {
+ "name": "VEF",
+ "symbol": "VEF"
+ },
+ "VND": {
+ "name": "VND",
+ "symbol": "â‚«"
+ },
+ "VUV": {
+ "name": "VUV",
+ "symbol": "VUV"
+ },
+ "WST": {
+ "name": "WST",
+ "symbol": "WST"
+ },
+ "XCD": {
+ "name": "XCD",
+ "symbol": "EC$"
+ },
+ "XPF": {
+ "name": "XPF",
+ "symbol": "CFPF"
+ },
+ "JPY": {
+ "name": "yêni tî Zapön",
+ "symbol": "JPÂ¥"
+ },
+ "YER": {
+ "name": "YER",
+ "symbol": "YER"
+ },
+ "CNY": {
+ "name": "yuan renminbi tî Shîni",
+ "symbol": "CNÂ¥"
+ },
+ "EUR": {
+ "name": "zoröo",
+ "symbol": "€"
+ },
+ "ZWL": {
+ "name": "ZWL",
+ "symbol": "ZWL"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/currency/shi-Latn.json b/library/intl/resources/currency/shi-Latn.json
new file mode 100644
index 000000000..5eb2b53d7
--- /dev/null
+++ b/library/intl/resources/currency/shi-Latn.json
@@ -0,0 +1,634 @@
+{
+ "BWP": {
+ "name": "abula n butswana",
+ "symbol": "BWP"
+ },
+ "KES": {
+ "name": "acilin n kinya",
+ "symbol": "KES"
+ },
+ "SOS": {
+ "name": "acilin n ṣṣumal",
+ "symbol": "SOS"
+ },
+ "TZS": {
+ "name": "acilin n ṭanẓanya",
+ "symbol": "TZS"
+ },
+ "UGX": {
+ "name": "acilin n uɣanda",
+ "symbol": "UGX"
+ },
+ "BHD": {
+ "name": "adinar n bḥrayn",
+ "symbol": "BHD"
+ },
+ "DZD": {
+ "name": "adinar n dzayr",
+ "symbol": "DZD"
+ },
+ "LYD": {
+ "name": "adinar n libya",
+ "symbol": "LYD"
+ },
+ "SDG": {
+ "name": "adinar n ssudan",
+ "symbol": "SDG"
+ },
+ "TND": {
+ "name": "adinar n tuns",
+ "symbol": "TND"
+ },
+ "AED": {
+ "name": "adrim n limarat",
+ "symbol": "AED"
+ },
+ "MAD": {
+ "name": "adrim n lmɣrib",
+ "symbol": "MAD"
+ },
+ "STD": {
+ "name": "adubra n saná¹­umi",
+ "symbol": "STD"
+ },
+ "USD": {
+ "name": "adular n iwunak imunn",
+ "symbol": "US$"
+ },
+ "CAD": {
+ "name": "adular n kanada",
+ "symbol": "CA$"
+ },
+ "LRD": {
+ "name": "adular n libirya",
+ "symbol": "LRD"
+ },
+ "NAD": {
+ "name": "adular n namibya",
+ "symbol": "NAD"
+ },
+ "AUD": {
+ "name": "adular n ustralya",
+ "symbol": "A$"
+ },
+ "AFN": {
+ "name": "AFN",
+ "symbol": "AFN"
+ },
+ "RWF": {
+ "name": "afrank n rwanda",
+ "symbol": "RWF"
+ },
+ "CHF": {
+ "name": "afrank n swisra",
+ "symbol": "CHF"
+ },
+ "GBP": {
+ "name": "ajnih astrlini n nngliz",
+ "symbol": "£"
+ },
+ "EGP": {
+ "name": "ajnih n miṣṛ",
+ "symbol": "EGP"
+ },
+ "SHP": {
+ "name": "ajnih n santilin",
+ "symbol": "SHP"
+ },
+ "ZMW": {
+ "name": "akwaca n zambya",
+ "symbol": "ZMW"
+ },
+ "ALL": {
+ "name": "ALL",
+ "symbol": "ALL"
+ },
+ "AMD": {
+ "name": "AMD",
+ "symbol": "AMD"
+ },
+ "ANG": {
+ "name": "ANG",
+ "symbol": "ANG"
+ },
+ "ZAR": {
+ "name": "arand n afriqya n iffus",
+ "symbol": "ZAR"
+ },
+ "ARS": {
+ "name": "ARS",
+ "symbol": "ARS"
+ },
+ "INR": {
+ "name": "arubi n lhind",
+ "symbol": "₹"
+ },
+ "MUR": {
+ "name": "arubi n muris",
+ "symbol": "MUR"
+ },
+ "SCR": {
+ "name": "arubi n ssicil",
+ "symbol": "SCR"
+ },
+ "SAR": {
+ "name": "aryal n ssaɛudiya",
+ "symbol": "SAR"
+ },
+ "AWG": {
+ "name": "AWG",
+ "symbol": "AWG"
+ },
+ "CNY": {
+ "name": "ayan n ccinwa",
+ "symbol": "CNÂ¥"
+ },
+ "JPY": {
+ "name": "ayan n lyaban",
+ "symbol": "JPÂ¥"
+ },
+ "AZN": {
+ "name": "AZN",
+ "symbol": "AZN"
+ },
+ "BAM": {
+ "name": "BAM",
+ "symbol": "BAM"
+ },
+ "BBD": {
+ "name": "BBD",
+ "symbol": "BBD"
+ },
+ "BDT": {
+ "name": "BDT",
+ "symbol": "BDT"
+ },
+ "BGN": {
+ "name": "BGN",
+ "symbol": "BGN"
+ },
+ "ETB": {
+ "name": "bir n ityubya",
+ "symbol": "ETB"
+ },
+ "BMD": {
+ "name": "BMD",
+ "symbol": "BMD"
+ },
+ "BND": {
+ "name": "BND",
+ "symbol": "BND"
+ },
+ "BOB": {
+ "name": "BOB",
+ "symbol": "BOB"
+ },
+ "BRL": {
+ "name": "BRL",
+ "symbol": "R$"
+ },
+ "BSD": {
+ "name": "BSD",
+ "symbol": "BSD"
+ },
+ "BTN": {
+ "name": "BTN",
+ "symbol": "BTN"
+ },
+ "BYR": {
+ "name": "BYR",
+ "symbol": "BYR"
+ },
+ "BZD": {
+ "name": "BZD",
+ "symbol": "BZD"
+ },
+ "CLP": {
+ "name": "CLP",
+ "symbol": "CLP"
+ },
+ "COP": {
+ "name": "COP",
+ "symbol": "COP"
+ },
+ "CRC": {
+ "name": "CRC",
+ "symbol": "CRC"
+ },
+ "CUC": {
+ "name": "CUC",
+ "symbol": "CUC"
+ },
+ "CUP": {
+ "name": "CUP",
+ "symbol": "CUP"
+ },
+ "CZK": {
+ "name": "CZK",
+ "symbol": "CZK"
+ },
+ "GMD": {
+ "name": "dalasi n gambya",
+ "symbol": "GMD"
+ },
+ "DKK": {
+ "name": "DKK",
+ "symbol": "DKK"
+ },
+ "DOP": {
+ "name": "DOP",
+ "symbol": "DOP"
+ },
+ "FJD": {
+ "name": "FJD",
+ "symbol": "FJD"
+ },
+ "FKP": {
+ "name": "FKP",
+ "symbol": "FKP"
+ },
+ "BIF": {
+ "name": "frank n burundi",
+ "symbol": "BIF"
+ },
+ "DJF": {
+ "name": "frank n djibuti",
+ "symbol": "DJF"
+ },
+ "CDF": {
+ "name": "frank n kungu",
+ "symbol": "CDF"
+ },
+ "MGA": {
+ "name": "frank n madaɣacqar",
+ "symbol": "MGA"
+ },
+ "KMF": {
+ "name": "frank n qumuá¹›",
+ "symbol": "KMF"
+ },
+ "XAF": {
+ "name": "frank á¹£ifa",
+ "symbol": "FCFA"
+ },
+ "XOF": {
+ "name": "frank á¹£ifa bisaw",
+ "symbol": "CFA"
+ },
+ "GEL": {
+ "name": "GEL",
+ "symbol": "GEL"
+ },
+ "GHS": {
+ "name": "GHS",
+ "symbol": "GHS"
+ },
+ "GIP": {
+ "name": "GIP",
+ "symbol": "GIP"
+ },
+ "GNF": {
+ "name": "GNF",
+ "symbol": "GNF"
+ },
+ "GTQ": {
+ "name": "GTQ",
+ "symbol": "GTQ"
+ },
+ "GYD": {
+ "name": "GYD",
+ "symbol": "GYD"
+ },
+ "HKD": {
+ "name": "HKD",
+ "symbol": "HK$"
+ },
+ "HNL": {
+ "name": "HNL",
+ "symbol": "HNL"
+ },
+ "HRK": {
+ "name": "HRK",
+ "symbol": "HRK"
+ },
+ "HTG": {
+ "name": "HTG",
+ "symbol": "HTG"
+ },
+ "HUF": {
+ "name": "HUF",
+ "symbol": "HUF"
+ },
+ "IDR": {
+ "name": "IDR",
+ "symbol": "IDR"
+ },
+ "ILS": {
+ "name": "ILS",
+ "symbol": "₪"
+ },
+ "IQD": {
+ "name": "IQD",
+ "symbol": "IQD"
+ },
+ "IRR": {
+ "name": "IRR",
+ "symbol": "IRR"
+ },
+ "ISK": {
+ "name": "ISK",
+ "symbol": "ISK"
+ },
+ "CVE": {
+ "name": "iskudu n kabbirdi",
+ "symbol": "CVE"
+ },
+ "JMD": {
+ "name": "JMD",
+ "symbol": "JMD"
+ },
+ "JOD": {
+ "name": "JOD",
+ "symbol": "JOD"
+ },
+ "KGS": {
+ "name": "KGS",
+ "symbol": "KGS"
+ },
+ "KHR": {
+ "name": "KHR",
+ "symbol": "KHR"
+ },
+ "KPW": {
+ "name": "KPW",
+ "symbol": "KPW"
+ },
+ "KRW": {
+ "name": "KRW",
+ "symbol": "â‚©"
+ },
+ "MWK": {
+ "name": "kwaca n malawi",
+ "symbol": "MWK"
+ },
+ "AOA": {
+ "name": "kwanza n angula",
+ "symbol": "AOA"
+ },
+ "KWD": {
+ "name": "KWD",
+ "symbol": "KWD"
+ },
+ "KYD": {
+ "name": "KYD",
+ "symbol": "KYD"
+ },
+ "KZT": {
+ "name": "KZT",
+ "symbol": "KZT"
+ },
+ "LAK": {
+ "name": "LAK",
+ "symbol": "LAK"
+ },
+ "LBP": {
+ "name": "LBP",
+ "symbol": "LBP"
+ },
+ "SZL": {
+ "name": "lilanjini",
+ "symbol": "SZL"
+ },
+ "SLL": {
+ "name": "liyun",
+ "symbol": "SLL"
+ },
+ "LKR": {
+ "name": "LKR",
+ "symbol": "LKR"
+ },
+ "LTL": {
+ "name": "LTL",
+ "symbol": "LTL"
+ },
+ "LSL": {
+ "name": "luti n liá¹£uá¹­u",
+ "symbol": "LSL"
+ },
+ "MDL": {
+ "name": "MDL",
+ "symbol": "MDL"
+ },
+ "MKD": {
+ "name": "MKD",
+ "symbol": "MKD"
+ },
+ "MMK": {
+ "name": "MMK",
+ "symbol": "MMK"
+ },
+ "MNT": {
+ "name": "MNT",
+ "symbol": "MNT"
+ },
+ "MOP": {
+ "name": "MOP",
+ "symbol": "MOP"
+ },
+ "MVR": {
+ "name": "MVR",
+ "symbol": "MVR"
+ },
+ "MXN": {
+ "name": "MXN",
+ "symbol": "MX$"
+ },
+ "MYR": {
+ "name": "MYR",
+ "symbol": "MYR"
+ },
+ "MZN": {
+ "name": "MZN",
+ "symbol": "MZN"
+ },
+ "ERN": {
+ "name": "nafka n iritirya",
+ "symbol": "ERN"
+ },
+ "NGN": {
+ "name": "nayra n nijirya",
+ "symbol": "NGN"
+ },
+ "NIO": {
+ "name": "NIO",
+ "symbol": "NIO"
+ },
+ "NOK": {
+ "name": "NOK",
+ "symbol": "NOK"
+ },
+ "NPR": {
+ "name": "NPR",
+ "symbol": "NPR"
+ },
+ "NZD": {
+ "name": "NZD",
+ "symbol": "NZ$"
+ },
+ "OMR": {
+ "name": "OMR",
+ "symbol": "OMR"
+ },
+ "PAB": {
+ "name": "PAB",
+ "symbol": "PAB"
+ },
+ "PEN": {
+ "name": "PEN",
+ "symbol": "PEN"
+ },
+ "PGK": {
+ "name": "PGK",
+ "symbol": "PGK"
+ },
+ "PHP": {
+ "name": "PHP",
+ "symbol": "PHP"
+ },
+ "PKR": {
+ "name": "PKR",
+ "symbol": "PKR"
+ },
+ "PLN": {
+ "name": "PLN",
+ "symbol": "PLN"
+ },
+ "PYG": {
+ "name": "PYG",
+ "symbol": "PYG"
+ },
+ "QAR": {
+ "name": "QAR",
+ "symbol": "QAR"
+ },
+ "RON": {
+ "name": "RON",
+ "symbol": "RON"
+ },
+ "RSD": {
+ "name": "RSD",
+ "symbol": "RSD"
+ },
+ "RUB": {
+ "name": "RUB",
+ "symbol": "RUB"
+ },
+ "SBD": {
+ "name": "SBD",
+ "symbol": "SBD"
+ },
+ "SEK": {
+ "name": "SEK",
+ "symbol": "SEK"
+ },
+ "SGD": {
+ "name": "SGD",
+ "symbol": "SGD"
+ },
+ "SRD": {
+ "name": "SRD",
+ "symbol": "SRD"
+ },
+ "SSP": {
+ "name": "SSP",
+ "symbol": "SSP"
+ },
+ "SVC": {
+ "name": "SVC",
+ "symbol": "SVC"
+ },
+ "SYP": {
+ "name": "SYP",
+ "symbol": "SYP"
+ },
+ "THB": {
+ "name": "THB",
+ "symbol": "THB"
+ },
+ "TJS": {
+ "name": "TJS",
+ "symbol": "TJS"
+ },
+ "TMT": {
+ "name": "TMT",
+ "symbol": "TMT"
+ },
+ "TOP": {
+ "name": "TOP",
+ "symbol": "TOP"
+ },
+ "TRY": {
+ "name": "TRY",
+ "symbol": "TRY"
+ },
+ "TTD": {
+ "name": "TTD",
+ "symbol": "TTD"
+ },
+ "TWD": {
+ "name": "TWD",
+ "symbol": "NT$"
+ },
+ "UAH": {
+ "name": "UAH",
+ "symbol": "UAH"
+ },
+ "MRO": {
+ "name": "uqiyya n muá¹›iá¹­anya",
+ "symbol": "MRO"
+ },
+ "EUR": {
+ "name": "uru",
+ "symbol": "€"
+ },
+ "UYU": {
+ "name": "UYU",
+ "symbol": "UYU"
+ },
+ "UZS": {
+ "name": "UZS",
+ "symbol": "UZS"
+ },
+ "VEF": {
+ "name": "VEF",
+ "symbol": "VEF"
+ },
+ "VND": {
+ "name": "VND",
+ "symbol": "â‚«"
+ },
+ "VUV": {
+ "name": "VUV",
+ "symbol": "VUV"
+ },
+ "WST": {
+ "name": "WST",
+ "symbol": "WST"
+ },
+ "XCD": {
+ "name": "XCD",
+ "symbol": "EC$"
+ },
+ "XPF": {
+ "name": "XPF",
+ "symbol": "CFPF"
+ },
+ "YER": {
+ "name": "YER",
+ "symbol": "YER"
+ },
+ "ZWL": {
+ "name": "ZWL",
+ "symbol": "ZWL"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/currency/shi.json b/library/intl/resources/currency/shi.json
new file mode 100644
index 000000000..51578e02c
--- /dev/null
+++ b/library/intl/resources/currency/shi.json
@@ -0,0 +1,634 @@
+{
+ "AFN": {
+ "name": "AFN",
+ "symbol": "AFN"
+ },
+ "ALL": {
+ "name": "ALL",
+ "symbol": "ALL"
+ },
+ "AMD": {
+ "name": "AMD",
+ "symbol": "AMD"
+ },
+ "ANG": {
+ "name": "ANG",
+ "symbol": "ANG"
+ },
+ "ARS": {
+ "name": "ARS",
+ "symbol": "ARS"
+ },
+ "AWG": {
+ "name": "AWG",
+ "symbol": "AWG"
+ },
+ "AZN": {
+ "name": "AZN",
+ "symbol": "AZN"
+ },
+ "BAM": {
+ "name": "BAM",
+ "symbol": "BAM"
+ },
+ "BBD": {
+ "name": "BBD",
+ "symbol": "BBD"
+ },
+ "BDT": {
+ "name": "BDT",
+ "symbol": "BDT"
+ },
+ "BGN": {
+ "name": "BGN",
+ "symbol": "BGN"
+ },
+ "BMD": {
+ "name": "BMD",
+ "symbol": "BMD"
+ },
+ "BND": {
+ "name": "BND",
+ "symbol": "BND"
+ },
+ "BOB": {
+ "name": "BOB",
+ "symbol": "BOB"
+ },
+ "BRL": {
+ "name": "BRL",
+ "symbol": "R$"
+ },
+ "BSD": {
+ "name": "BSD",
+ "symbol": "BSD"
+ },
+ "BTN": {
+ "name": "BTN",
+ "symbol": "BTN"
+ },
+ "BYR": {
+ "name": "BYR",
+ "symbol": "BYR"
+ },
+ "BZD": {
+ "name": "BZD",
+ "symbol": "BZD"
+ },
+ "CLP": {
+ "name": "CLP",
+ "symbol": "CLP"
+ },
+ "COP": {
+ "name": "COP",
+ "symbol": "COP"
+ },
+ "CRC": {
+ "name": "CRC",
+ "symbol": "CRC"
+ },
+ "CUC": {
+ "name": "CUC",
+ "symbol": "CUC"
+ },
+ "CUP": {
+ "name": "CUP",
+ "symbol": "CUP"
+ },
+ "CZK": {
+ "name": "CZK",
+ "symbol": "CZK"
+ },
+ "DKK": {
+ "name": "DKK",
+ "symbol": "DKK"
+ },
+ "DOP": {
+ "name": "DOP",
+ "symbol": "DOP"
+ },
+ "FJD": {
+ "name": "FJD",
+ "symbol": "FJD"
+ },
+ "FKP": {
+ "name": "FKP",
+ "symbol": "FKP"
+ },
+ "GEL": {
+ "name": "GEL",
+ "symbol": "GEL"
+ },
+ "GHS": {
+ "name": "GHS",
+ "symbol": "GHS"
+ },
+ "GIP": {
+ "name": "GIP",
+ "symbol": "GIP"
+ },
+ "GNF": {
+ "name": "GNF",
+ "symbol": "GNF"
+ },
+ "GTQ": {
+ "name": "GTQ",
+ "symbol": "GTQ"
+ },
+ "GYD": {
+ "name": "GYD",
+ "symbol": "GYD"
+ },
+ "HKD": {
+ "name": "HKD",
+ "symbol": "HK$"
+ },
+ "HNL": {
+ "name": "HNL",
+ "symbol": "HNL"
+ },
+ "HRK": {
+ "name": "HRK",
+ "symbol": "HRK"
+ },
+ "HTG": {
+ "name": "HTG",
+ "symbol": "HTG"
+ },
+ "HUF": {
+ "name": "HUF",
+ "symbol": "HUF"
+ },
+ "IDR": {
+ "name": "IDR",
+ "symbol": "IDR"
+ },
+ "ILS": {
+ "name": "ILS",
+ "symbol": "₪"
+ },
+ "IQD": {
+ "name": "IQD",
+ "symbol": "IQD"
+ },
+ "IRR": {
+ "name": "IRR",
+ "symbol": "IRR"
+ },
+ "ISK": {
+ "name": "ISK",
+ "symbol": "ISK"
+ },
+ "JMD": {
+ "name": "JMD",
+ "symbol": "JMD"
+ },
+ "JOD": {
+ "name": "JOD",
+ "symbol": "JOD"
+ },
+ "KGS": {
+ "name": "KGS",
+ "symbol": "KGS"
+ },
+ "KHR": {
+ "name": "KHR",
+ "symbol": "KHR"
+ },
+ "KPW": {
+ "name": "KPW",
+ "symbol": "KPW"
+ },
+ "KRW": {
+ "name": "KRW",
+ "symbol": "â‚©"
+ },
+ "KWD": {
+ "name": "KWD",
+ "symbol": "KWD"
+ },
+ "KYD": {
+ "name": "KYD",
+ "symbol": "KYD"
+ },
+ "KZT": {
+ "name": "KZT",
+ "symbol": "KZT"
+ },
+ "LAK": {
+ "name": "LAK",
+ "symbol": "LAK"
+ },
+ "LBP": {
+ "name": "LBP",
+ "symbol": "LBP"
+ },
+ "LKR": {
+ "name": "LKR",
+ "symbol": "LKR"
+ },
+ "LTL": {
+ "name": "LTL",
+ "symbol": "LTL"
+ },
+ "MDL": {
+ "name": "MDL",
+ "symbol": "MDL"
+ },
+ "MKD": {
+ "name": "MKD",
+ "symbol": "MKD"
+ },
+ "MMK": {
+ "name": "MMK",
+ "symbol": "MMK"
+ },
+ "MNT": {
+ "name": "MNT",
+ "symbol": "MNT"
+ },
+ "MOP": {
+ "name": "MOP",
+ "symbol": "MOP"
+ },
+ "MVR": {
+ "name": "MVR",
+ "symbol": "MVR"
+ },
+ "MXN": {
+ "name": "MXN",
+ "symbol": "MX$"
+ },
+ "MYR": {
+ "name": "MYR",
+ "symbol": "MYR"
+ },
+ "MZN": {
+ "name": "MZN",
+ "symbol": "MZN"
+ },
+ "NIO": {
+ "name": "NIO",
+ "symbol": "NIO"
+ },
+ "NOK": {
+ "name": "NOK",
+ "symbol": "NOK"
+ },
+ "NPR": {
+ "name": "NPR",
+ "symbol": "NPR"
+ },
+ "NZD": {
+ "name": "NZD",
+ "symbol": "NZ$"
+ },
+ "OMR": {
+ "name": "OMR",
+ "symbol": "OMR"
+ },
+ "PAB": {
+ "name": "PAB",
+ "symbol": "PAB"
+ },
+ "PEN": {
+ "name": "PEN",
+ "symbol": "PEN"
+ },
+ "PGK": {
+ "name": "PGK",
+ "symbol": "PGK"
+ },
+ "PHP": {
+ "name": "PHP",
+ "symbol": "PHP"
+ },
+ "PKR": {
+ "name": "PKR",
+ "symbol": "PKR"
+ },
+ "PLN": {
+ "name": "PLN",
+ "symbol": "PLN"
+ },
+ "PYG": {
+ "name": "PYG",
+ "symbol": "PYG"
+ },
+ "QAR": {
+ "name": "QAR",
+ "symbol": "QAR"
+ },
+ "RON": {
+ "name": "RON",
+ "symbol": "RON"
+ },
+ "RSD": {
+ "name": "RSD",
+ "symbol": "RSD"
+ },
+ "RUB": {
+ "name": "RUB",
+ "symbol": "RUB"
+ },
+ "SBD": {
+ "name": "SBD",
+ "symbol": "SBD"
+ },
+ "SEK": {
+ "name": "SEK",
+ "symbol": "SEK"
+ },
+ "SGD": {
+ "name": "SGD",
+ "symbol": "SGD"
+ },
+ "SRD": {
+ "name": "SRD",
+ "symbol": "SRD"
+ },
+ "SSP": {
+ "name": "SSP",
+ "symbol": "SSP"
+ },
+ "SVC": {
+ "name": "SVC",
+ "symbol": "SVC"
+ },
+ "SYP": {
+ "name": "SYP",
+ "symbol": "SYP"
+ },
+ "THB": {
+ "name": "THB",
+ "symbol": "THB"
+ },
+ "TJS": {
+ "name": "TJS",
+ "symbol": "TJS"
+ },
+ "TMT": {
+ "name": "TMT",
+ "symbol": "TMT"
+ },
+ "TOP": {
+ "name": "TOP",
+ "symbol": "TOP"
+ },
+ "TRY": {
+ "name": "TRY",
+ "symbol": "TRY"
+ },
+ "TTD": {
+ "name": "TTD",
+ "symbol": "TTD"
+ },
+ "TWD": {
+ "name": "TWD",
+ "symbol": "NT$"
+ },
+ "UAH": {
+ "name": "UAH",
+ "symbol": "UAH"
+ },
+ "UYU": {
+ "name": "UYU",
+ "symbol": "UYU"
+ },
+ "UZS": {
+ "name": "UZS",
+ "symbol": "UZS"
+ },
+ "VEF": {
+ "name": "VEF",
+ "symbol": "VEF"
+ },
+ "VND": {
+ "name": "VND",
+ "symbol": "â‚«"
+ },
+ "VUV": {
+ "name": "VUV",
+ "symbol": "VUV"
+ },
+ "WST": {
+ "name": "WST",
+ "symbol": "WST"
+ },
+ "XCD": {
+ "name": "XCD",
+ "symbol": "EC$"
+ },
+ "XPF": {
+ "name": "XPF",
+ "symbol": "CFPF"
+ },
+ "YER": {
+ "name": "YER",
+ "symbol": "YER"
+ },
+ "ZWL": {
+ "name": "ZWL",
+ "symbol": "ZWL"
+ },
+ "BWP": {
+ "name": "ⴰⴱⵓâµâ´° ⵠⴱⵓⵜⵙⵡⴰâµâ´°",
+ "symbol": "BWP"
+ },
+ "BHD": {
+ "name": "ⴰⴷⵉâµâ´°âµ” ⵠⴱⵃⵔⴰⵢâµ",
+ "symbol": "BHD"
+ },
+ "DZD": {
+ "name": "ⴰⴷⵉâµâ´°âµ” ⵠⴷⵣⴰⵢⵔ",
+ "symbol": "DZD"
+ },
+ "LYD": {
+ "name": "ⴰⴷⵉâµâ´°âµ” âµ âµâµ‰â´±âµ¢â´°",
+ "symbol": "LYD"
+ },
+ "SDG": {
+ "name": "ⴰⴷⵉâµâ´°âµ” ⵠⵙⵙⵓⴷⴰâµ",
+ "symbol": "SDG"
+ },
+ "TND": {
+ "name": "ⴰⴷⵉâµâ´°âµ” ⵠⵜⵓâµâµ™",
+ "symbol": "TND"
+ },
+ "STD": {
+ "name": "ⴰⴷⵓⴱⵔⴰ ⵠⵙⴰâµâµŸâµ“ⵎⵉ",
+ "symbol": "STD"
+ },
+ "CAD": {
+ "name": "ⴰⴷⵓâµâ´°âµ” ⵠⴽⴰâµâ´°â´·â´°",
+ "symbol": "CA$"
+ },
+ "USD": {
+ "name": "ⴰⴷⵓâµâ´°âµ” ⵠⵉⵡⵓâµâ´°â´½ ⵉⵎⵓâµâµ",
+ "symbol": "US$"
+ },
+ "LRD": {
+ "name": "ⴰⴷⵓâµâ´°âµ” âµ âµâµ‰â´±âµ‰âµ”ⵢⴰ",
+ "symbol": "LRD"
+ },
+ "NAD": {
+ "name": "ⴰⴷⵓâµâ´°âµ” âµ âµâ´°âµŽâµ‰â´±âµ¢â´°",
+ "symbol": "NAD"
+ },
+ "AUD": {
+ "name": "ⴰⴷⵓâµâ´°âµ” ⵠⵓⵙⵜⵔⴰâµâµ¢â´°",
+ "symbol": "A$"
+ },
+ "AED": {
+ "name": "ⴰⴷⵔⵉⵎ âµ âµâµ‰âµŽâ´°âµ”ⴰⵜ",
+ "symbol": "AED"
+ },
+ "MAD": {
+ "name": "ⴰⴷⵔⵉⵎ âµ âµâµŽâµ–ⵔⵉⴱ",
+ "symbol": "MAD"
+ },
+ "RWF": {
+ "name": "ⴰⴼⵔⴰâµâ´½ ⵠⵔⵡⴰâµâ´·â´°",
+ "symbol": "RWF"
+ },
+ "CHF": {
+ "name": "ⴰⴼⵔⴰâµâ´½ ⵠⵙⵡⵉⵙⵔⴰ",
+ "symbol": "CHF"
+ },
+ "ZMW": {
+ "name": "ⴰⴽⵡⴰⵛⴰ ⵠⵣⴰⵎⴱⵢⴰ",
+ "symbol": "ZMW"
+ },
+ "GBP": {
+ "name": "ⴰⵊâµâµ‰âµ€ ⴰⵙⵜⵔâµâµ‰âµâµ‰ âµ âµâµâ´³âµâµ‰âµ£",
+ "symbol": "£"
+ },
+ "EGP": {
+ "name": "ⴰⵊâµâµ‰âµ€ ⵠⵎⵉⵚⵕ",
+ "symbol": "EGP"
+ },
+ "SHP": {
+ "name": "ⴰⵊâµâµ‰âµ€ ⵠⵙⴰâµâµœâµ‰âµâµ‰âµ",
+ "symbol": "SHP"
+ },
+ "ZAR": {
+ "name": "ⴰⵔⴰâµâ´· ⵠⴰⴼⵔⵉⵇⵢⴰ ⵠⵉⴼⴼⵓⵙ",
+ "symbol": "ZAR"
+ },
+ "INR": {
+ "name": "ⴰⵔⵓⴱⵉ âµ âµâµ€âµ‰âµâ´·",
+ "symbol": "₹"
+ },
+ "MUR": {
+ "name": "ⴰⵔⵓⴱⵉ ⵠⵎⵓⵔⵉⵙ",
+ "symbol": "MUR"
+ },
+ "SCR": {
+ "name": "ⴰⵔⵓⴱⵉ ⵠⵙⵙⵉⵛⵉâµ",
+ "symbol": "SCR"
+ },
+ "SAR": {
+ "name": "ⴰⵔⵢⴰⵠⵠⵙⵙⴰⵄⵓⴷⵉⵢⴰ",
+ "symbol": "SAR"
+ },
+ "KES": {
+ "name": "ⴰⵛⵉâµâµ‰âµ ⵠⴽⵉâµâµ¢â´°",
+ "symbol": "KES"
+ },
+ "UGX": {
+ "name": "ⴰⵛⵉâµâµ‰âµ ⵠⵓⵖⴰâµâ´·â´°",
+ "symbol": "UGX"
+ },
+ "SOS": {
+ "name": "ⴰⵛⵉâµâµ‰âµ ⵠⵚⵚⵓⵎⴰâµ",
+ "symbol": "SOS"
+ },
+ "TZS": {
+ "name": "ⴰⵛⵉâµâµ‰âµ ⵠⵟⴰâµâµ¥â´°âµâµ¢â´°",
+ "symbol": "TZS"
+ },
+ "JPY": {
+ "name": "ⴰⵢⴰⵠⵠâµâµ¢â´°â´±â´°âµ",
+ "symbol": "JPÂ¥"
+ },
+ "CNY": {
+ "name": "ⴰⵢⴰⵠⵠⵛⵛⵉâµâµ¡â´°",
+ "symbol": "CNÂ¥"
+ },
+ "ETB": {
+ "name": "ⴱⵉⵔ ⵠⵉⵜⵢⵓⴱⵢⴰ",
+ "symbol": "ETB"
+ },
+ "GMD": {
+ "name": "â´·â´°âµâ´°âµ™âµ‰ ⵠⴳⴰⵎⴱⵢⴰ",
+ "symbol": "GMD"
+ },
+ "BIF": {
+ "name": "ⴼⵔⴰâµâ´½ ⵠⴱⵓⵔⵓâµâ´·âµ‰",
+ "symbol": "BIF"
+ },
+ "DJF": {
+ "name": "ⴼⵔⴰâµâ´½ ⵠⴷⵊⵉⴱⵓⵜⵉ",
+ "symbol": "DJF"
+ },
+ "CDF": {
+ "name": "ⴼⵔⴰâµâ´½ ⵠⴽⵓâµâ´³âµ“",
+ "symbol": "CDF"
+ },
+ "KMF": {
+ "name": "ⴼⵔⴰâµâ´½ ⵠⵇⵓⵎⵓⵕ",
+ "symbol": "KMF"
+ },
+ "MGA": {
+ "name": "ⴼⵔⴰâµâ´½ ⵠⵎⴰⴷⴰⵖⴰⵛⵇⴰⵔ",
+ "symbol": "MGA"
+ },
+ "XAF": {
+ "name": "ⴼⵔⴰâµâ´½ ⵚⵉⴼⴰ",
+ "symbol": "FCFA"
+ },
+ "XOF": {
+ "name": "ⴼⵔⴰâµâ´½ ⵚⵉⴼⴰ ⴱⵉⵙⴰⵡ",
+ "symbol": "CFA"
+ },
+ "AOA": {
+ "name": "ⴽⵡⴰâµâµ£â´° âµ â´°âµâ´³âµ“âµâ´°",
+ "symbol": "AOA"
+ },
+ "MWK": {
+ "name": "ⴽⵡⴰⵛⴰ ⵠⵎⴰâµâ´°âµ¡âµ‰",
+ "symbol": "MWK"
+ },
+ "CVE": {
+ "name": "ⵉⵙⴽⵓⴷⵓ ⵠⴽⴰⴱⴱⵉⵔⴷⵉ",
+ "symbol": "CVE"
+ },
+ "SZL": {
+ "name": "âµâµ‰âµâ´°âµâµŠâµ‰âµâµ‰",
+ "symbol": "SZL"
+ },
+ "SLL": {
+ "name": "âµâµ‰âµ¢âµ“âµ",
+ "symbol": "SLL"
+ },
+ "LSL": {
+ "name": "âµâµ“ⵜⵉ âµ âµâµ‰âµšâµ“ⵟⵓ",
+ "symbol": "LSL"
+ },
+ "ERN": {
+ "name": "âµâ´°â´¼â´½â´° ⵠⵉⵔⵉⵜⵉⵔⵢⴰ",
+ "symbol": "ERN"
+ },
+ "NGN": {
+ "name": "âµâ´°âµ¢âµ”â´° âµ âµâµ‰âµŠâµ‰âµ”ⵢⴰ",
+ "symbol": "NGN"
+ },
+ "MRO": {
+ "name": "ⵓⵇⵉⵢⵢⴰ ⵠⵎⵓⵕⵉⵟⴰâµâµ¢â´°",
+ "symbol": "MRO"
+ },
+ "EUR": {
+ "name": "ⵓⵔⵓ",
+ "symbol": "€"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/currency/si.json b/library/intl/resources/currency/si.json
new file mode 100644
index 000000000..49143a06d
--- /dev/null
+++ b/library/intl/resources/currency/si.json
@@ -0,0 +1,634 @@
+{
+ "LSL": {
+ "name": "LSL",
+ "symbol": "LSL"
+ },
+ "SVC": {
+ "name": "SVC",
+ "symbol": "SVC"
+ },
+ "ZWL": {
+ "name": "ZWL",
+ "symbol": "ZWL"
+ },
+ "ISK": {
+ "name": "අයිස්ලන්තික ක්â€à¶»à·à¶±à·",
+ "symbol": "ISK"
+ },
+ "AWG": {
+ "name": "අරූබà·à¶±à·” ෆ්ලà·à¶»à·’න්",
+ "symbol": "AWG"
+ },
+ "AZN": {
+ "name": "අසර්බයිජà·à¶±à·” මනà·à¶§à·Š",
+ "symbol": "AZN"
+ },
+ "ARS": {
+ "name": "ආර්ජන්ටින෠පෙසà·",
+ "symbol": "ARS"
+ },
+ "AMD": {
+ "name": "ආර්මේනියà·à¶±à·” ඩ්â€à¶»à·‘ම්",
+ "symbol": "AMD"
+ },
+ "AOA": {
+ "name": "ඇන්ගà·à¶½à·à¶±à·” ක්වන්සà·",
+ "symbol": "AOA"
+ },
+ "USD": {
+ "name": "ඇමරිකà·à¶±à·” ඩොලර්",
+ "symbol": "US$"
+ },
+ "DZD": {
+ "name": "ඇල්ගේරියà·à¶±à·” ඩිනà·à¶»à·Š",
+ "symbol": "DZD"
+ },
+ "ALL": {
+ "name": "ඇල්බේනියà·à¶±à·” ලෙක්",
+ "symbol": "ALL"
+ },
+ "AFN": {
+ "name": "ඇෆ්ගනිථà·à¶± ඇෆ්ගනි",
+ "symbol": "AFN"
+ },
+ "ETB": {
+ "name": "ඉතියà·à¶´à·’යà·à¶±à·” බීර්",
+ "symbol": "ETB"
+ },
+ "INR": {
+ "name": "ඉන්දියà·à¶±à·” රුපියල්",
+ "symbol": "₹"
+ },
+ "IDR": {
+ "name": "ඉන්දුනීසියà·à¶±à·” රුපියà·",
+ "symbol": "IDR"
+ },
+ "IQD": {
+ "name": "ඉරà·à¶š ඩිනà·à¶»à·Š",
+ "symbol": "IQD"
+ },
+ "IRR": {
+ "name": "ඉරà·à¶± රියà·à¶½à·Š",
+ "symbol": "IRR"
+ },
+ "EGP": {
+ "name": "ඊජිප්තු පවුම්",
+ "symbol": "EGP"
+ },
+ "ILS": {
+ "name": "ඊà·à·Šâ€à¶»à·à¶ºà¶½ නව à·à·™à¶šà¶½à·Š",
+ "symbol": "₪"
+ },
+ "UGX": {
+ "name": "උගන්ඩ෠à·à·’ලිං",
+ "symbol": "UGX"
+ },
+ "KPW": {
+ "name": "උතුරු කොරියà·à¶±à·” වොන්",
+ "symbol": "KPW"
+ },
+ "UYU": {
+ "name": "උරුගුවේ පෙසà·",
+ "symbol": "UYU"
+ },
+ "UZS": {
+ "name": "උස්බෙකිස්ථà·à¶± සම්",
+ "symbol": "UZS"
+ },
+ "AED": {
+ "name": "එක්සත් අරà·à¶¶à·’ එමිරේට්ස් ඩිරà·à¶¸à·Š",
+ "symbol": "AED"
+ },
+ "ERN": {
+ "name": "එරිත්â€à¶»à·’යà·à¶±à·” නà·à¶šà·Šà·†à·",
+ "symbol": "ERN"
+ },
+ "AUD": {
+ "name": "ඔස්ට්â€à¶»à·šà¶½à·’යà·à¶±à·” ඩොලර්",
+ "symbol": "A$"
+ },
+ "OMR": {
+ "name": "ඕමà·à¶±à·Š රියà·à¶½à·Š",
+ "symbol": "OMR"
+ },
+ "QAR": {
+ "name": "කටà·à¶»à·Š රියà·à¶½à·Š",
+ "symbol": "QAR"
+ },
+ "KZT": {
+ "name": "කසකස්ථà·à¶± ටෙන්ග",
+ "symbol": "KZT"
+ },
+ "KHR": {
+ "name": "කà·à¶¸à·Šà¶¶à·à¶¢ රියේල්",
+ "symbol": "KHR"
+ },
+ "CAD": {
+ "name": "කà·à¶±à·šà¶©à·’යà·à¶±à·” ඩොලර්",
+ "symbol": "CA$"
+ },
+ "CUP": {
+ "name": "කියුබà·à¶±à·” පà·à·ƒà·",
+ "symbol": "CUP"
+ },
+ "KGS": {
+ "name": "කිරිගිස්ථà·à¶± සම්",
+ "symbol": "KGS"
+ },
+ "KWD": {
+ "name": "කුවේට් ඩිනà·à¶»à·Š",
+ "symbol": "KWD"
+ },
+ "KES": {
+ "name": "කෙන්යà·à¶±à·” à·à·’ලිං",
+ "symbol": "KES"
+ },
+ "CVE": {
+ "name": "කේප් වර්ඩ් එස්කියුඩà·",
+ "symbol": "CVE"
+ },
+ "KYD": {
+ "name": "කේමන් දූපත් ඩොලර්",
+ "symbol": "KYD"
+ },
+ "CDF": {
+ "name": "කොංග෠ෆ්â€à¶»à·‘න්ක්",
+ "symbol": "CDF"
+ },
+ "KMF": {
+ "name": "කොමොරියà·à¶±à·” ෆ්â€à¶»à·‘න්ක්",
+ "symbol": "KMF"
+ },
+ "COP": {
+ "name": "කොලොම්බියà·à¶±à·” පෙසà·",
+ "symbol": "COP"
+ },
+ "CRC": {
+ "name": "කොස්ට රික෠කොලà·à¶±à·Š",
+ "symbol": "CRC"
+ },
+ "HRK": {
+ "name": "ක්â€à¶»à·œà¶’ෂියà·à¶±à·” කූනà·",
+ "symbol": "HRK"
+ },
+ "GYD": {
+ "name": "ගයන෠ඩොලර්",
+ "symbol": "GYD"
+ },
+ "GMD": {
+ "name": "ගà·à¶¸à·Šà¶¶à·’යà·à¶±à·” දලà·à·ƒà·’",
+ "symbol": "GMD"
+ },
+ "GNF": {
+ "name": "ගිනියà·à¶±à·” ෆ්රෑන්ක්",
+ "symbol": "GNF"
+ },
+ "GTQ": {
+ "name": "ගà·à¶­à¶¸à·à¶½à·à¶±à·” ක්වෙට්සල්",
+ "symbol": "GTQ"
+ },
+ "GHS": {
+ "name": "à¶à·à¶±à· සෙඩි",
+ "symbol": "GHS"
+ },
+ "CLP": {
+ "name": "චිලි පà·à·ƒà·",
+ "symbol": "CLP"
+ },
+ "CNY": {
+ "name": "චීන යුආන්",
+ "symbol": "CNÂ¥"
+ },
+ "CZK": {
+ "name": "චෙක් රිපබ්ලික් කොරූනà·",
+ "symbol": "CZK"
+ },
+ "JPY": {
+ "name": "ජපන් යෙන්",
+ "symbol": "JPÂ¥"
+ },
+ "JMD": {
+ "name": "ජà·à¶¸à·™à¶ºà·’කà·à¶±à·” ඩොලර්",
+ "symbol": "JMD"
+ },
+ "DJF": {
+ "name": "ජිබූති ෆ්â€à¶»à·‘න්ක්",
+ "symbol": "DJF"
+ },
+ "GIP": {
+ "name": "ජිබ්â€à¶»à·à¶½à·Šà¶§à· පවුම්",
+ "symbol": "GIP"
+ },
+ "GEL": {
+ "name": "ජà·à¶¢à·’යà·à¶±à·” ලà·à¶»à·“",
+ "symbol": "GEL"
+ },
+ "JOD": {
+ "name": "ජà·à¶»à·Šà¶¯à·à¶±à·Š ඩිනà·à¶»à·Š",
+ "symbol": "JOD"
+ },
+ "TZS": {
+ "name": "ටà·à¶±à·Šà·ƒà·à¶±à·’යà·à¶±à·” à·à·’ලිං",
+ "symbol": "TZS"
+ },
+ "TND": {
+ "name": "ටියුනීසියà·à¶±à·” ඩිනà·à¶»à·Š",
+ "symbol": "TND"
+ },
+ "TOP": {
+ "name": "ටොංගà·à¶±à·” පà·à¶±à·Šà¶œà·",
+ "symbol": "TOP"
+ },
+ "TTD": {
+ "name": "ට්â€à¶»à·’නිඩෑඩ් සහ ටොබෑග෠ඩොලර්",
+ "symbol": "TTD"
+ },
+ "DKK": {
+ "name": "ඩà·à¶±à·’à·‚à·Š ක්â€à¶»à·à¶±à·Š",
+ "symbol": "DKK"
+ },
+ "DOP": {
+ "name": "ඩොමිනිකà·à¶±à·” පෙසà·",
+ "symbol": "DOP"
+ },
+ "TMT": {
+ "name": "තක්මෙනිස්ථà·à¶± මනà·à¶§à·Š",
+ "symbol": "TMT"
+ },
+ "TJS": {
+ "name": "තජිකිස්ථà·à¶± සමොනි",
+ "symbol": "TJS"
+ },
+ "THB": {
+ "name": "තà·à¶ºà·’ බà·à¶­à·Š",
+ "symbol": "฿"
+ },
+ "TRY": {
+ "name": "තුර්කි ලිරà·",
+ "symbol": "TRY"
+ },
+ "ZAR": {
+ "name": "දකුණු අප්â€à¶»à·’කà·à¶±à·” රà·à¶±à·Šà¶©à·Š",
+ "symbol": "ZAR"
+ },
+ "KRW": {
+ "name": "දකුණු කොරියà·à¶±à·” වොන්",
+ "symbol": "â‚©"
+ },
+ "SSP": {
+ "name": "දකුණු සුඩà·à¶± පවුම්",
+ "symbol": "SSP"
+ },
+ "NGN": {
+ "name": "නයිජීරියà·à¶±à·” නයිරà·",
+ "symbol": "NGN"
+ },
+ "TWD": {
+ "name": "නව තà·à¶ºà·’à·€à·à¶± ඩොලර්",
+ "symbol": "NT$"
+ },
+ "NZD": {
+ "name": "නවසීලන්ත ඩොලර්",
+ "symbol": "NZ$"
+ },
+ "XCD": {
+ "name": "නà·à¶œà·™à¶±à·„ිර කà·à¶»à·’බියà·à¶±à·” ඩොලර්",
+ "symbol": "EC$"
+ },
+ "NAD": {
+ "name": "නà·à¶¸à·“බියà·à¶±à·” ඩොලර්",
+ "symbol": "NAD"
+ },
+ "NIO": {
+ "name": "නිකරගුවà·à¶±à·” කොඩà·à¶¶à·",
+ "symbol": "NIO"
+ },
+ "ANG": {
+ "name": "නෙදර්ලන්ත ඇන්ටිලියන් ගිල්ඩර්",
+ "symbol": "ANG"
+ },
+ "NPR": {
+ "name": "නේපà·à¶½ රුපියල්",
+ "symbol": "NPR"
+ },
+ "NOK": {
+ "name": "නොර්වීජියන් ක්â€à¶»à·à¶±à·Š",
+ "symbol": "NOK"
+ },
+ "PKR": {
+ "name": "පà·à¶šà·’ස්ථà·à¶± රුපියල්",
+ "symbol": "PKR"
+ },
+ "PAB": {
+ "name": "පà·à¶±à¶¸à· බà·à¶½à·Šà¶¶à·",
+ "symbol": "PAB"
+ },
+ "PGK": {
+ "name": "පà·à¶´à·”ව෠නිව් ගිනියà·à¶±à·” කිනà·",
+ "symbol": "PGK"
+ },
+ "PYG": {
+ "name": "පà·à¶»à¶œà·”වේ ගුවරà·à¶±à·’",
+ "symbol": "PYG"
+ },
+ "PHP": {
+ "name": "පිලිපීන පෙසà·",
+ "symbol": "PHP"
+ },
+ "PEN": {
+ "name": "පේරු නියුව෠සොල්",
+ "symbol": "PEN"
+ },
+ "PLN": {
+ "name": "පොලිෂ් ස්ලොටි",
+ "symbol": "PLN"
+ },
+ "XPF": {
+ "name": "ප්â€à¶»à¶‚෠පොලිනීසියà·à¶±à·” ෆ්â€à¶»à·‘න්ක්",
+ "symbol": "CFPF"
+ },
+ "BDT": {
+ "name": "බංග්ලà·à¶¯à·šà·à·Š ටකà·",
+ "symbol": "BDT"
+ },
+ "BMD": {
+ "name": "බර්මියුඩà·à¶±à·” ඩොලර්",
+ "symbol": "BMD"
+ },
+ "BGN": {
+ "name": "බල්ගේරියà·à¶±à·” ලිව්",
+ "symbol": "BGN"
+ },
+ "BSD": {
+ "name": "බහමà·à¶±à·” ඩොලර්",
+ "symbol": "BSD"
+ },
+ "BHD": {
+ "name": "බහරේන් ඩිනà·à¶»à·Š",
+ "symbol": "BHD"
+ },
+ "BBD": {
+ "name": "බà·à¶¶à·šà¶©à·’යà·à¶±à·” ඩොලර්",
+ "symbol": "BBD"
+ },
+ "BIF": {
+ "name": "බුරුන්දි ෆ්â€à¶»à·‘න්ක්",
+ "symbol": "BIF"
+ },
+ "MMK": {
+ "name": "බුරුම ක්යà·à¶§à·Š",
+ "symbol": "MMK"
+ },
+ "BND": {
+ "name": "බෘනà·à¶ºà·’ ඩොලර්",
+ "symbol": "BND"
+ },
+ "BYR": {
+ "name": "බෙලරූස් රූබල්",
+ "symbol": "BYR"
+ },
+ "BZD": {
+ "name": "බෙලීස් ඩොලර්",
+ "symbol": "BZD"
+ },
+ "BWP": {
+ "name": "බොට්ස්වà·à¶±à· පුලà·",
+ "symbol": "BWP"
+ },
+ "BOB": {
+ "name": "බොලිවියà·à¶±à·” බොලිවියà·à¶±à·",
+ "symbol": "BOB"
+ },
+ "BAM": {
+ "name": "බොස්නිය෠හර්සගොවීන෠පරිවර්ත්â€à¶º මà·à¶»à·Šà¶šà·Š",
+ "symbol": "BAM"
+ },
+ "BRL": {
+ "name": "බ්â€à¶»à·ƒà·“ල රියල්",
+ "symbol": "R$"
+ },
+ "GBP": {
+ "name": "බ්â€à¶»à·’තà·à¶±à·Šâ€à¶º ස්ටර්ලින් පවුම්",
+ "symbol": "£"
+ },
+ "BTN": {
+ "name": "භූතà·à¶± නගුල්ට්â€à¶»à¶¸à·Š",
+ "symbol": "BTN"
+ },
+ "MGA": {
+ "name": "මලගà·à·ƒà·’ අරියà·à¶»à·’",
+ "symbol": "MGA"
+ },
+ "MWK": {
+ "name": "මලà·à·€à·’ ක්වà·à¶ à·",
+ "symbol": "MWK"
+ },
+ "CUC": {
+ "name": "මà·à¶»à·”කළ à·„à·à¶šà·’ කියුබà·à¶±à·” පà·à·ƒà·",
+ "symbol": "CUC"
+ },
+ "MVR": {
+ "name": "මà·à¶½à¶¯à·’වයින් රුෆියà·",
+ "symbol": "MVR"
+ },
+ "MOP": {
+ "name": "මà·à¶šà¶±à·“ස් පටකà·",
+ "symbol": "MOP"
+ },
+ "MYR": {
+ "name": "මà·à¶½à·šà·ƒà·’යà·à¶±à·” රින්ගිට්",
+ "symbol": "MYR"
+ },
+ "MKD": {
+ "name": "මà·à·ƒà¶©à·à¶±à·’යà·à¶±à·” ඩිනà·à¶»à·Š",
+ "symbol": "MKD"
+ },
+ "MUR": {
+ "name": "මුරිසියà·à¶±à·” රුපියල්",
+ "symbol": "MUR"
+ },
+ "MRO": {
+ "name": "මුරුසි ඔයිගුයියà·",
+ "symbol": "MRO"
+ },
+ "MXN": {
+ "name": "මෙක්සිකà·à¶±à·” ඩොලර්",
+ "symbol": "MX$"
+ },
+ "MNT": {
+ "name": "මොන්ගà·à¶½à·’යà·à¶±à·” ටග්â€à¶»à·’ක්",
+ "symbol": "MNT"
+ },
+ "MAD": {
+ "name": "මොරොක්ක෠ඩිර්හà·à¶¸à·Š",
+ "symbol": "MAD"
+ },
+ "MZN": {
+ "name": "මොසà·à¶¸à·Šà¶¶à·’කන් මෙටිකල්",
+ "symbol": "MZN"
+ },
+ "MDL": {
+ "name": "මà·à¶½à·Šà¶©à·à·€à·à¶±à·” ලෙව්",
+ "symbol": "MDL"
+ },
+ "UAH": {
+ "name": "යුක්රේන à·„à·Šâ€à¶»à·’ව්නියà·",
+ "symbol": "UAH"
+ },
+ "EUR": {
+ "name": "යුරà·",
+ "symbol": "€"
+ },
+ "YER": {
+ "name": "යේමන රියà·à¶½à·Š",
+ "symbol": "YER"
+ },
+ "RWF": {
+ "name": "රුවන්ඩ෠ෆ්â€à¶»à·‘න්ක්",
+ "symbol": "RWF"
+ },
+ "RUB": {
+ "name": "රුසියන් රූබල්",
+ "symbol": "RUB"
+ },
+ "RON": {
+ "name": "රොමේනියà·à¶±à·” ලෙව්",
+ "symbol": "RON"
+ },
+ "LRD": {
+ "name": "ලයිබේරියà·à¶±à·” ඩොලර්",
+ "symbol": "LRD"
+ },
+ "LAK": {
+ "name": "ලà·à¶•à·ƒà·Š කිප්",
+ "symbol": "LAK"
+ },
+ "LTL": {
+ "name": "ලිතුවේනියà·à¶±à·”",
+ "symbol": "LTL"
+ },
+ "LYD": {
+ "name": "ලිබියà·à¶±à·” ඩිනà·à¶»à·Š",
+ "symbol": "LYD"
+ },
+ "LBP": {
+ "name": "ලෙබනන පවුම්",
+ "symbol": "LBP"
+ },
+ "VUV": {
+ "name": "වනුවà·à¶§à·” à·€à·à¶§à·”",
+ "symbol": "VUV"
+ },
+ "VND": {
+ "name": "වියට්නà·à¶¸ ඩොන්",
+ "symbol": "â‚«"
+ },
+ "VEF": {
+ "name": "වෙනිසියුලà·à¶±à·” බොලිවර්",
+ "symbol": "VEF"
+ },
+ "SHP": {
+ "name": "à·à·à¶±à·Šà¶­ හෙලේන෠පවුම්",
+ "symbol": "SHP"
+ },
+ "LKR": {
+ "name": "à·à·Šâ€à¶»à·“ ලංක෠රුපියල",
+ "symbol": "රු."
+ },
+ "RSD": {
+ "name": "සර්බියà·à¶±à·” ඩිනà·à¶»à·Š",
+ "symbol": "RSD"
+ },
+ "SAR": {
+ "name": "සවුදි රියà·à¶½à·Š",
+ "symbol": "SAR"
+ },
+ "STD": {
+ "name": "à·ƒà·à¶• තà·à¶¸à·Š සහ ප්â€à¶»à·’න්සිප් දොබ්â€à¶»à·",
+ "symbol": "STD"
+ },
+ "WST": {
+ "name": "à·ƒà·à¶¸à·à·€à· ටà·à¶½à·",
+ "symbol": "WST"
+ },
+ "ZMW": {
+ "name": "à·ƒà·à¶¸à·Šà¶¶à·’යà·à¶±à·” ක්වà·à¶ à·",
+ "symbol": "ZMW"
+ },
+ "SGD": {
+ "name": "සිංගප්පූරු ඩොලර්",
+ "symbol": "SGD"
+ },
+ "SLL": {
+ "name": "සියර෠ලියොන් ලියොන්",
+ "symbol": "SLL"
+ },
+ "SYP": {
+ "name": "සිරියà·à¶±à·” පවුම්",
+ "symbol": "SYP"
+ },
+ "XAF": {
+ "name": "සිෆ්එ ෆ්රෑන්ක් බිඊඑසි",
+ "symbol": "FCFA"
+ },
+ "XOF": {
+ "name": "සිෆ්එ ෆ්රෑන්ක් බිසීඊඑඔ",
+ "symbol": "සිෆ්එ"
+ },
+ "SCR": {
+ "name": "සීෂෙලියà·à¶±à·” රුපියල",
+ "symbol": "SCR"
+ },
+ "SDG": {
+ "name": "සුඩà·à¶± පවුම්",
+ "symbol": "SDG"
+ },
+ "SRD": {
+ "name": "සුරිනà·à¶¸à·Š ඩොලර්",
+ "symbol": "SRD"
+ },
+ "SBD": {
+ "name": "සොලමන් දූපත් ඩොලර්",
+ "symbol": "SBD"
+ },
+ "SOS": {
+ "name": "à·ƒà·à¶¸à·à¶½à·’යà·à¶±à·” à·à·’ලිං",
+ "symbol": "SOS"
+ },
+ "SZL": {
+ "name": "ස්වà·à·ƒà·’ ලිලන්ජනි",
+ "symbol": "SZL"
+ },
+ "CHF": {
+ "name": "ස්විස් ෆ්â€à¶»à·‘න්ක්",
+ "symbol": "CHF"
+ },
+ "SEK": {
+ "name": "ස්වෙඩිෂ් ක්â€à¶»à·à¶±à·",
+ "symbol": "SEK"
+ },
+ "HUF": {
+ "name": "හංගේරියà·à¶±à·” ෆරින්ට්",
+ "symbol": "HUF"
+ },
+ "HTG": {
+ "name": "හයිටි ගà·à¶»à·Šà¶©à·Š",
+ "symbol": "HTG"
+ },
+ "HKD": {
+ "name": "හොංකොං ඩොලර්",
+ "symbol": "HK$"
+ },
+ "HNL": {
+ "name": "හොන්ඩුරà·à¶±à·” ලෙම්පිරà·",
+ "symbol": "HNL"
+ },
+ "FJD": {
+ "name": "ෆිජියන් ඩොලර්",
+ "symbol": "FJD"
+ },
+ "FKP": {
+ "name": "à·†à·à¶šà·Šà¶½à¶±à·Šà¶©à·Š දූපත් පවුම්",
+ "symbol": "FKP"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/currency/sk.json b/library/intl/resources/currency/sk.json
new file mode 100644
index 000000000..18ee29641
--- /dev/null
+++ b/library/intl/resources/currency/sk.json
@@ -0,0 +1,634 @@
+{
+ "AFN": {
+ "name": "afganský afgání",
+ "symbol": "AFN"
+ },
+ "ALL": {
+ "name": "albánsky lek",
+ "symbol": "ALL"
+ },
+ "DZD": {
+ "name": "alžírsky dinár",
+ "symbol": "DZD"
+ },
+ "USD": {
+ "name": "americký dolár",
+ "symbol": "USD"
+ },
+ "AOA": {
+ "name": "angolská kwanza",
+ "symbol": "AOA"
+ },
+ "ANG": {
+ "name": "antilský gulden",
+ "symbol": "ANG"
+ },
+ "ARS": {
+ "name": "argentínske peso",
+ "symbol": "ARS"
+ },
+ "AMD": {
+ "name": "arménsky dram",
+ "symbol": "AMD"
+ },
+ "AWG": {
+ "name": "arubský gulden",
+ "symbol": "AWG"
+ },
+ "AUD": {
+ "name": "austrálsky dolár",
+ "symbol": "AUD"
+ },
+ "AZN": {
+ "name": "azerbajdžanský manat",
+ "symbol": "AZN"
+ },
+ "BSD": {
+ "name": "bahamský dolár",
+ "symbol": "BSD"
+ },
+ "BHD": {
+ "name": "bahrajnský dinár",
+ "symbol": "BHD"
+ },
+ "BDT": {
+ "name": "bangladéšska taka",
+ "symbol": "BDT"
+ },
+ "BBD": {
+ "name": "barbadoský dolár",
+ "symbol": "BBD"
+ },
+ "BZD": {
+ "name": "belizský dolár",
+ "symbol": "BZD"
+ },
+ "BMD": {
+ "name": "bermudský dolár",
+ "symbol": "BMD"
+ },
+ "BTN": {
+ "name": "bhutánsky ngultrum",
+ "symbol": "BTN"
+ },
+ "BYR": {
+ "name": "bieloruský rubeľ",
+ "symbol": "BYR"
+ },
+ "BOB": {
+ "name": "bolívijské boliviano",
+ "symbol": "BOB"
+ },
+ "BWP": {
+ "name": "botswanská pula",
+ "symbol": "BWP"
+ },
+ "BRL": {
+ "name": "brazílsky real",
+ "symbol": "BRL"
+ },
+ "GBP": {
+ "name": "britská libra",
+ "symbol": "GBP"
+ },
+ "BND": {
+ "name": "brunejský dolár",
+ "symbol": "BND"
+ },
+ "BGN": {
+ "name": "bulharský lev",
+ "symbol": "BGN"
+ },
+ "BIF": {
+ "name": "burundský frank",
+ "symbol": "BIF"
+ },
+ "XPF": {
+ "name": "CFP frank",
+ "symbol": "CFPF"
+ },
+ "CZK": {
+ "name": "Äeská koruna",
+ "symbol": "CZK"
+ },
+ "CLP": {
+ "name": "Äilské peso",
+ "symbol": "CLP"
+ },
+ "CNY": {
+ "name": "Äínsky jüan",
+ "symbol": "CNY"
+ },
+ "DKK": {
+ "name": "dánska koruna",
+ "symbol": "DKK"
+ },
+ "DOP": {
+ "name": "dominikánske peso",
+ "symbol": "DOP"
+ },
+ "DJF": {
+ "name": "džibutský frank",
+ "symbol": "DJF"
+ },
+ "EGP": {
+ "name": "egyptská libra",
+ "symbol": "EGP"
+ },
+ "ERN": {
+ "name": "eritrejská nakfa",
+ "symbol": "ERN"
+ },
+ "ETB": {
+ "name": "etiópsky birr",
+ "symbol": "ETB"
+ },
+ "EUR": {
+ "name": "euro",
+ "symbol": "€"
+ },
+ "FKP": {
+ "name": "falklandská libra",
+ "symbol": "FKP"
+ },
+ "FJD": {
+ "name": "fidžijský dolár",
+ "symbol": "FJD"
+ },
+ "PHP": {
+ "name": "filipínske peso",
+ "symbol": "PHP"
+ },
+ "GMD": {
+ "name": "gambijské dalasi",
+ "symbol": "GMD"
+ },
+ "GHS": {
+ "name": "ghanské cedi",
+ "symbol": "GHS"
+ },
+ "GIP": {
+ "name": "gibraltárska libra",
+ "symbol": "GIP"
+ },
+ "GEL": {
+ "name": "gruzínske lari",
+ "symbol": "GEL"
+ },
+ "GTQ": {
+ "name": "guatemalský quetzal",
+ "symbol": "GTQ"
+ },
+ "GNF": {
+ "name": "guinejský frank",
+ "symbol": "GNF"
+ },
+ "GYD": {
+ "name": "guyanský dolár",
+ "symbol": "GYD"
+ },
+ "HTG": {
+ "name": "haitské gourde",
+ "symbol": "HTG"
+ },
+ "HNL": {
+ "name": "honduraská lempira",
+ "symbol": "HNL"
+ },
+ "HKD": {
+ "name": "hongkonský dolár",
+ "symbol": "HKD"
+ },
+ "HRK": {
+ "name": "chorvátska kuna",
+ "symbol": "HRK"
+ },
+ "INR": {
+ "name": "indická rupia",
+ "symbol": "INR"
+ },
+ "IDR": {
+ "name": "indonézska rupia",
+ "symbol": "IDR"
+ },
+ "IQD": {
+ "name": "iracký dinár",
+ "symbol": "IQD"
+ },
+ "IRR": {
+ "name": "iránsky rial",
+ "symbol": "IRR"
+ },
+ "ISK": {
+ "name": "islandská koruna",
+ "symbol": "ISK"
+ },
+ "ILS": {
+ "name": "izraelský šekel",
+ "symbol": "NIS"
+ },
+ "JMD": {
+ "name": "jamajský dolár",
+ "symbol": "JMD"
+ },
+ "JPY": {
+ "name": "japonský jen",
+ "symbol": "JPY"
+ },
+ "YER": {
+ "name": "jemenský rial",
+ "symbol": "YER"
+ },
+ "JOD": {
+ "name": "jordánsky dinár",
+ "symbol": "JOD"
+ },
+ "ZAR": {
+ "name": "juhoafrický rand",
+ "symbol": "ZAR"
+ },
+ "KRW": {
+ "name": "juhokórejský won",
+ "symbol": "KRW"
+ },
+ "SSP": {
+ "name": "juhosudánska libra",
+ "symbol": "SSP"
+ },
+ "KYD": {
+ "name": "kajmanský dolár",
+ "symbol": "KYD"
+ },
+ "KHR": {
+ "name": "kambodžský riel",
+ "symbol": "KHR"
+ },
+ "CAD": {
+ "name": "kanadský dolár",
+ "symbol": "CAD"
+ },
+ "CVE": {
+ "name": "kapverdské escudo",
+ "symbol": "CVE"
+ },
+ "QAR": {
+ "name": "katarský rial",
+ "symbol": "QAR"
+ },
+ "KZT": {
+ "name": "kazašské tenge",
+ "symbol": "KZT"
+ },
+ "KES": {
+ "name": "kenský šiling",
+ "symbol": "KES"
+ },
+ "KGS": {
+ "name": "kirgizský som",
+ "symbol": "KGS"
+ },
+ "COP": {
+ "name": "kolumbijské peso",
+ "symbol": "COP"
+ },
+ "KMF": {
+ "name": "komorský frank",
+ "symbol": "KMF"
+ },
+ "BAM": {
+ "name": "konvertibilná marka",
+ "symbol": "BAM"
+ },
+ "CDF": {
+ "name": "konžský frank",
+ "symbol": "CDF"
+ },
+ "CRC": {
+ "name": "kostarický colón",
+ "symbol": "CRC"
+ },
+ "CUC": {
+ "name": "kubánske konvertibilné peso",
+ "symbol": "CUC"
+ },
+ "CUP": {
+ "name": "kubánske peso",
+ "symbol": "CUP"
+ },
+ "KWD": {
+ "name": "kuvajtský dinár",
+ "symbol": "KWD"
+ },
+ "LAK": {
+ "name": "laoský kip",
+ "symbol": "LAK"
+ },
+ "LSL": {
+ "name": "Lesothský loti",
+ "symbol": "LSL"
+ },
+ "LBP": {
+ "name": "libanonská libra",
+ "symbol": "LBP"
+ },
+ "LRD": {
+ "name": "libérijský dolár",
+ "symbol": "LRD"
+ },
+ "LYD": {
+ "name": "líbyjský dinár",
+ "symbol": "LYD"
+ },
+ "LTL": {
+ "name": "litovský litas",
+ "symbol": "LTL"
+ },
+ "MOP": {
+ "name": "macajská pataca",
+ "symbol": "MOP"
+ },
+ "MKD": {
+ "name": "macedónsky denár",
+ "symbol": "MKD"
+ },
+ "HUF": {
+ "name": "maÄarský forint",
+ "symbol": "HUF"
+ },
+ "MYR": {
+ "name": "malajzijský ringgit",
+ "symbol": "MYR"
+ },
+ "MWK": {
+ "name": "malawijská kwacha",
+ "symbol": "MWK"
+ },
+ "MVR": {
+ "name": "maldivská rupia",
+ "symbol": "MVR"
+ },
+ "MGA": {
+ "name": "malgašský ariary",
+ "symbol": "MGA"
+ },
+ "MAD": {
+ "name": "marocký dirham",
+ "symbol": "MAD"
+ },
+ "MUR": {
+ "name": "maurícijská rupia",
+ "symbol": "MUR"
+ },
+ "MRO": {
+ "name": "mauritánska ukija",
+ "symbol": "MRO"
+ },
+ "MXN": {
+ "name": "mexické peso",
+ "symbol": "MX$"
+ },
+ "MMK": {
+ "name": "mjanmarský kyat",
+ "symbol": "MMK"
+ },
+ "MDL": {
+ "name": "moldavský lei",
+ "symbol": "MDL"
+ },
+ "MNT": {
+ "name": "mongolský tugrik",
+ "symbol": "MNT"
+ },
+ "MZN": {
+ "name": "mozambický metical",
+ "symbol": "MZN"
+ },
+ "NAD": {
+ "name": "namíbijský dolár",
+ "symbol": "NAD"
+ },
+ "NPR": {
+ "name": "nepálska rupia",
+ "symbol": "NPR"
+ },
+ "NGN": {
+ "name": "nigérijská naira",
+ "symbol": "NGN"
+ },
+ "NIO": {
+ "name": "nikaragujská córdoba",
+ "symbol": "NIO"
+ },
+ "NOK": {
+ "name": "nórska koruna",
+ "symbol": "NOK"
+ },
+ "NZD": {
+ "name": "novozélandský dolár",
+ "symbol": "NZD"
+ },
+ "TWD": {
+ "name": "nový taiwanský dolár",
+ "symbol": "TWD"
+ },
+ "OMR": {
+ "name": "ománsky rial",
+ "symbol": "OMR"
+ },
+ "PKR": {
+ "name": "pakistanská rupia",
+ "symbol": "PKR"
+ },
+ "PAB": {
+ "name": "panamská balboa",
+ "symbol": "PAB"
+ },
+ "PGK": {
+ "name": "papuánska kina",
+ "symbol": "PGK"
+ },
+ "PYG": {
+ "name": "paraguajské guaraní",
+ "symbol": "PYG"
+ },
+ "PEN": {
+ "name": "peruánsky nový sol",
+ "symbol": "PEN"
+ },
+ "PLN": {
+ "name": "poľský zlotý",
+ "symbol": "PLN"
+ },
+ "RON": {
+ "name": "rumunský lei",
+ "symbol": "RON"
+ },
+ "RUB": {
+ "name": "ruský rubeľ",
+ "symbol": "RUB"
+ },
+ "RWF": {
+ "name": "rwandský frank",
+ "symbol": "RWF"
+ },
+ "AED": {
+ "name": "SAE dirham",
+ "symbol": "AED"
+ },
+ "SVC": {
+ "name": "Salvádorský colón",
+ "symbol": "SVC"
+ },
+ "WST": {
+ "name": "samojská tala",
+ "symbol": "WST"
+ },
+ "SAR": {
+ "name": "saudskoarabský rial",
+ "symbol": "SAR"
+ },
+ "KPW": {
+ "name": "severokórejský won",
+ "symbol": "KPW"
+ },
+ "SCR": {
+ "name": "seychelská rupia",
+ "symbol": "SCR"
+ },
+ "SLL": {
+ "name": "sierraleonský leone",
+ "symbol": "SLL"
+ },
+ "SGD": {
+ "name": "singapurský dolár",
+ "symbol": "SGD"
+ },
+ "SOS": {
+ "name": "somálsky šiling",
+ "symbol": "SOS"
+ },
+ "RSD": {
+ "name": "srbský dinár",
+ "symbol": "RSD"
+ },
+ "LKR": {
+ "name": "srílanská rupia",
+ "symbol": "LKR"
+ },
+ "XAF": {
+ "name": "stredoafrický frank",
+ "symbol": "FCFA"
+ },
+ "SDG": {
+ "name": "sudánska libra",
+ "symbol": "SDG"
+ },
+ "SRD": {
+ "name": "surinamský dolár",
+ "symbol": "SRD"
+ },
+ "SZL": {
+ "name": "svazijské lilangeni",
+ "symbol": "SZL"
+ },
+ "SHP": {
+ "name": "svätohelenská libra",
+ "symbol": "SHP"
+ },
+ "STD": {
+ "name": "svätotomášska dobra",
+ "symbol": "STD"
+ },
+ "SYP": {
+ "name": "sýrska libra",
+ "symbol": "SYP"
+ },
+ "SBD": {
+ "name": "šalamúnsky dolár",
+ "symbol": "SBD"
+ },
+ "CHF": {
+ "name": "Å¡vajÄiarsky frank",
+ "symbol": "CHF"
+ },
+ "SEK": {
+ "name": "švédska koruna",
+ "symbol": "SEK"
+ },
+ "TJS": {
+ "name": "tadžické somoni",
+ "symbol": "TJS"
+ },
+ "TZS": {
+ "name": "tanzánsky šiling",
+ "symbol": "TZS"
+ },
+ "THB": {
+ "name": "thajský baht",
+ "symbol": "THB"
+ },
+ "TOP": {
+ "name": "tongská paʻanga",
+ "symbol": "TOP"
+ },
+ "TTD": {
+ "name": "trinidadsko-tobažský dolár",
+ "symbol": "TTD"
+ },
+ "TND": {
+ "name": "tuniský dinár",
+ "symbol": "TND"
+ },
+ "TRY": {
+ "name": "turecká líra",
+ "symbol": "TRY"
+ },
+ "TMT": {
+ "name": "turkménsky manat",
+ "symbol": "TMT"
+ },
+ "UGX": {
+ "name": "ugandský šiling",
+ "symbol": "UGX"
+ },
+ "UAH": {
+ "name": "ukrajinská hrivna",
+ "symbol": "UAH"
+ },
+ "UYU": {
+ "name": "uruguajské peso",
+ "symbol": "UYU"
+ },
+ "UZS": {
+ "name": "uzbecký sum",
+ "symbol": "UZS"
+ },
+ "VUV": {
+ "name": "vanuatské vatu",
+ "symbol": "VUV"
+ },
+ "VEF": {
+ "name": "venezuelský bolívar",
+ "symbol": "VEF"
+ },
+ "VND": {
+ "name": "vietnamský dong",
+ "symbol": "VND"
+ },
+ "XCD": {
+ "name": "východokaribský dolár",
+ "symbol": "EC$"
+ },
+ "ZMW": {
+ "name": "zambijská kwacha",
+ "symbol": "ZMW"
+ },
+ "XOF": {
+ "name": "západoafrický frank",
+ "symbol": "CFA"
+ },
+ "ZWL": {
+ "name": "Zimbabwiansky dolár (2009)",
+ "symbol": "ZWL"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/currency/sl.json b/library/intl/resources/currency/sl.json
new file mode 100644
index 000000000..3da025916
--- /dev/null
+++ b/library/intl/resources/currency/sl.json
@@ -0,0 +1,634 @@
+{
+ "AFN": {
+ "name": "afgani",
+ "symbol": "AFN"
+ },
+ "ALL": {
+ "name": "albanski lek",
+ "symbol": "ALL"
+ },
+ "DZD": {
+ "name": "alžirski dinar",
+ "symbol": "DZD"
+ },
+ "USD": {
+ "name": "ameriški dolar",
+ "symbol": "$"
+ },
+ "AOA": {
+ "name": "angolska kvanza",
+ "symbol": "AOA"
+ },
+ "ARS": {
+ "name": "argentinski peso",
+ "symbol": "ARS"
+ },
+ "AMD": {
+ "name": "armenski dram",
+ "symbol": "AMD"
+ },
+ "AWG": {
+ "name": "arubski florin",
+ "symbol": "AWG"
+ },
+ "AUD": {
+ "name": "avstralski dolar",
+ "symbol": "A$"
+ },
+ "AZN": {
+ "name": "azerbajdžanski manat",
+ "symbol": "AZN"
+ },
+ "BSD": {
+ "name": "bahamski dolar",
+ "symbol": "BSD"
+ },
+ "BHD": {
+ "name": "bahranski dinar",
+ "symbol": "BHD"
+ },
+ "BDT": {
+ "name": "bangladeška taka",
+ "symbol": "BDT"
+ },
+ "BBD": {
+ "name": "barbadoški dolar",
+ "symbol": "BBD"
+ },
+ "BZD": {
+ "name": "belizejski dolar",
+ "symbol": "BZD"
+ },
+ "BYR": {
+ "name": "beloruski rubelj",
+ "symbol": "BYR"
+ },
+ "BMD": {
+ "name": "bermudski dolar",
+ "symbol": "BMD"
+ },
+ "BWP": {
+ "name": "bocvanska pula",
+ "symbol": "BWP"
+ },
+ "BGN": {
+ "name": "bolgarski lev",
+ "symbol": "BGN"
+ },
+ "BOB": {
+ "name": "bolivijski boliviano",
+ "symbol": "BOB"
+ },
+ "BAM": {
+ "name": "bosansko-hercegovska konvertibilna marka",
+ "symbol": "BAM"
+ },
+ "BRL": {
+ "name": "brazilski real",
+ "symbol": "R$"
+ },
+ "GBP": {
+ "name": "britanski funt",
+ "symbol": "£"
+ },
+ "BND": {
+ "name": "brunejski dolar",
+ "symbol": "BND"
+ },
+ "BIF": {
+ "name": "burundski frank",
+ "symbol": "BIF"
+ },
+ "BTN": {
+ "name": "butanski ngultrum",
+ "symbol": "BTN"
+ },
+ "XOF": {
+ "name": "CFA frank BCEAO",
+ "symbol": "CFA"
+ },
+ "XAF": {
+ "name": "CFA frank BEAC",
+ "symbol": "FCFA"
+ },
+ "XPF": {
+ "name": "CFP frank",
+ "symbol": "CFPF"
+ },
+ "CZK": {
+ "name": "ÄeÅ¡ka krona",
+ "symbol": "CZK"
+ },
+ "CLP": {
+ "name": "Äilski peso",
+ "symbol": "CLP"
+ },
+ "DKK": {
+ "name": "danska krona",
+ "symbol": "DKK"
+ },
+ "AED": {
+ "name": "dirham Združenih arabskih emiratov",
+ "symbol": "AED"
+ },
+ "TTD": {
+ "name": "dolar Trinidada in Tobaga",
+ "symbol": "TTD"
+ },
+ "DOP": {
+ "name": "dominikanski peso",
+ "symbol": "DOP"
+ },
+ "DJF": {
+ "name": "džibutski frank",
+ "symbol": "DJF"
+ },
+ "EGP": {
+ "name": "egiptovski funt",
+ "symbol": "EGP"
+ },
+ "ERN": {
+ "name": "eritrejska nakfa",
+ "symbol": "ERN"
+ },
+ "ETB": {
+ "name": "etiopski bir",
+ "symbol": "ETB"
+ },
+ "EUR": {
+ "name": "evro",
+ "symbol": "€"
+ },
+ "FKP": {
+ "name": "falklandski funt",
+ "symbol": "FKP"
+ },
+ "FJD": {
+ "name": "fidžijski dolar",
+ "symbol": "FJD"
+ },
+ "PHP": {
+ "name": "filipinski peso",
+ "symbol": "PHP"
+ },
+ "SHP": {
+ "name": "funt Sv. Helene",
+ "symbol": "SHP"
+ },
+ "GMD": {
+ "name": "gambijski dalasi",
+ "symbol": "GMD"
+ },
+ "GHS": {
+ "name": "ganski cedi",
+ "symbol": "GHS"
+ },
+ "GIP": {
+ "name": "gibraltarski funt",
+ "symbol": "GIP"
+ },
+ "GEL": {
+ "name": "gruzijski lari",
+ "symbol": "GEL"
+ },
+ "GYD": {
+ "name": "gvajanski dolar",
+ "symbol": "GYD"
+ },
+ "GTQ": {
+ "name": "gvatemalski kecal",
+ "symbol": "GTQ"
+ },
+ "GNF": {
+ "name": "gvinejski frank",
+ "symbol": "GNF"
+ },
+ "HTG": {
+ "name": "haitski gurd",
+ "symbol": "HTG"
+ },
+ "HNL": {
+ "name": "honduraška lempira",
+ "symbol": "HNL"
+ },
+ "HKD": {
+ "name": "hongkonški dolar",
+ "symbol": "HK$"
+ },
+ "HRK": {
+ "name": "hrvaška kuna",
+ "symbol": "HRK"
+ },
+ "INR": {
+ "name": "indijska rupija",
+ "symbol": "₹"
+ },
+ "IDR": {
+ "name": "indonezijska rupija",
+ "symbol": "IDR"
+ },
+ "IRR": {
+ "name": "iranski rial",
+ "symbol": "IRR"
+ },
+ "IQD": {
+ "name": "iraški dinar",
+ "symbol": "IQD"
+ },
+ "ISK": {
+ "name": "islandska krona",
+ "symbol": "ISK"
+ },
+ "ILS": {
+ "name": "izraelski Å¡ekel",
+ "symbol": "₪"
+ },
+ "JMD": {
+ "name": "jamajški dolar",
+ "symbol": "JMD"
+ },
+ "JPY": {
+ "name": "japonski jen",
+ "symbol": "Â¥"
+ },
+ "YER": {
+ "name": "jemenski rial",
+ "symbol": "YER"
+ },
+ "JOD": {
+ "name": "jordanski dinar",
+ "symbol": "JOD"
+ },
+ "ZAR": {
+ "name": "južnoafriški rand",
+ "symbol": "ZAR"
+ },
+ "KRW": {
+ "name": "južnokorejski von",
+ "symbol": "â‚©"
+ },
+ "SSP": {
+ "name": "južnosudanski funt",
+ "symbol": "SSP"
+ },
+ "KYD": {
+ "name": "kajmanski dolar",
+ "symbol": "KYD"
+ },
+ "KHR": {
+ "name": "kamboški riel",
+ "symbol": "KHR"
+ },
+ "CAD": {
+ "name": "kanadski dolar",
+ "symbol": "CAD"
+ },
+ "QAR": {
+ "name": "katarski rial",
+ "symbol": "QAR"
+ },
+ "KZT": {
+ "name": "kazahstanski tenge",
+ "symbol": "KZT"
+ },
+ "KES": {
+ "name": "kenijski Å¡iling",
+ "symbol": "KES"
+ },
+ "PGK": {
+ "name": "kina Papue Nove Gvineje",
+ "symbol": "PGK"
+ },
+ "KGS": {
+ "name": "kirgiški som",
+ "symbol": "KGS"
+ },
+ "CNY": {
+ "name": "kitajski juan renminbi",
+ "symbol": "CNÂ¥"
+ },
+ "COP": {
+ "name": "kolumbijski peso",
+ "symbol": "COP"
+ },
+ "KMF": {
+ "name": "komorski frank",
+ "symbol": "KMF"
+ },
+ "CDF": {
+ "name": "kongoški frank",
+ "symbol": "CDF"
+ },
+ "CRC": {
+ "name": "kostariški kolon",
+ "symbol": "CRC"
+ },
+ "CUC": {
+ "name": "kubanski konvertibilni peso",
+ "symbol": "CUC"
+ },
+ "CUP": {
+ "name": "kubanski peso",
+ "symbol": "CUP"
+ },
+ "KWD": {
+ "name": "kuvajtski dinar",
+ "symbol": "KWD"
+ },
+ "LAK": {
+ "name": "laoški kip",
+ "symbol": "LAK"
+ },
+ "LSL": {
+ "name": "lesoški loti",
+ "symbol": "LSL"
+ },
+ "LBP": {
+ "name": "libanonski funt",
+ "symbol": "LBP"
+ },
+ "LRD": {
+ "name": "liberijski dolar",
+ "symbol": "LRD"
+ },
+ "LYD": {
+ "name": "libijski dinar",
+ "symbol": "LYD"
+ },
+ "LTL": {
+ "name": "litovski litas",
+ "symbol": "LTL"
+ },
+ "HUF": {
+ "name": "madžarski forint",
+ "symbol": "HUF"
+ },
+ "MOP": {
+ "name": "makavska pataka",
+ "symbol": "MOP"
+ },
+ "MKD": {
+ "name": "makedonski denar",
+ "symbol": "MKD"
+ },
+ "MWK": {
+ "name": "malavijska kvaÄa",
+ "symbol": "MWK"
+ },
+ "MVR": {
+ "name": "maldivska rufija",
+ "symbol": "MVR"
+ },
+ "MYR": {
+ "name": "malezijski ringit",
+ "symbol": "MYR"
+ },
+ "MGA": {
+ "name": "malgaški ariarij",
+ "symbol": "MGA"
+ },
+ "MAD": {
+ "name": "maroški dirham",
+ "symbol": "MAD"
+ },
+ "MRO": {
+ "name": "mavretanska uguija",
+ "symbol": "MRO"
+ },
+ "MUR": {
+ "name": "mavricijska rupija",
+ "symbol": "MUR"
+ },
+ "MXN": {
+ "name": "mehiški peso",
+ "symbol": "MX$"
+ },
+ "MMK": {
+ "name": "mjanmarski kjat",
+ "symbol": "MMK"
+ },
+ "MDL": {
+ "name": "moldavijski leu",
+ "symbol": "MDL"
+ },
+ "MNT": {
+ "name": "mongolski tugrik",
+ "symbol": "MNT"
+ },
+ "MZN": {
+ "name": "mozambiški metikal",
+ "symbol": "MZN"
+ },
+ "NAD": {
+ "name": "namibijski dolar",
+ "symbol": "NAD"
+ },
+ "NPR": {
+ "name": "nepalska rupija",
+ "symbol": "NPR"
+ },
+ "NGN": {
+ "name": "nigerijska naira",
+ "symbol": "NGN"
+ },
+ "NIO": {
+ "name": "nikaraška zlata kordova",
+ "symbol": "NIO"
+ },
+ "ANG": {
+ "name": "nizozemsko-antilski gulden",
+ "symbol": "ANG"
+ },
+ "NOK": {
+ "name": "norveška krona",
+ "symbol": "NOK"
+ },
+ "TRY": {
+ "name": "nova turška lira",
+ "symbol": "TRY"
+ },
+ "TWD": {
+ "name": "novi tajvanski dolar",
+ "symbol": "NT$"
+ },
+ "NZD": {
+ "name": "novozelandski dolar",
+ "symbol": "NZ$"
+ },
+ "OMR": {
+ "name": "omanski rial",
+ "symbol": "OMR"
+ },
+ "PKR": {
+ "name": "pakistanska rupija",
+ "symbol": "PKR"
+ },
+ "PAB": {
+ "name": "panamska balboa",
+ "symbol": "PAB"
+ },
+ "PYG": {
+ "name": "paragvajski gvarani",
+ "symbol": "PYG"
+ },
+ "PEN": {
+ "name": "perujski novi sol",
+ "symbol": "PEN"
+ },
+ "PLN": {
+ "name": "poljski novi zlot",
+ "symbol": "PLN"
+ },
+ "RON": {
+ "name": "romunski leu",
+ "symbol": "RON"
+ },
+ "RWF": {
+ "name": "ruandski frank",
+ "symbol": "RWF"
+ },
+ "RUB": {
+ "name": "ruski rubelj",
+ "symbol": "RUB"
+ },
+ "SVC": {
+ "name": "salvadorski kolon",
+ "symbol": "SVC"
+ },
+ "WST": {
+ "name": "samoanska tala",
+ "symbol": "WST"
+ },
+ "STD": {
+ "name": "saotomejska dobra",
+ "symbol": "STD"
+ },
+ "SAR": {
+ "name": "saudski rial",
+ "symbol": "SAR"
+ },
+ "SCR": {
+ "name": "sejšelska rupija",
+ "symbol": "SCR"
+ },
+ "KPW": {
+ "name": "severnokorejski von",
+ "symbol": "KPW"
+ },
+ "SLL": {
+ "name": "sieraleonski leone",
+ "symbol": "SLL"
+ },
+ "SGD": {
+ "name": "singapurski dolar",
+ "symbol": "SGD"
+ },
+ "SYP": {
+ "name": "sirijski funt",
+ "symbol": "SYP"
+ },
+ "SBD": {
+ "name": "solomonski dolar",
+ "symbol": "SBD"
+ },
+ "SOS": {
+ "name": "somalski Å¡iling",
+ "symbol": "SOS"
+ },
+ "RSD": {
+ "name": "srbski dinar",
+ "symbol": "RSD"
+ },
+ "SDG": {
+ "name": "sudanski funt",
+ "symbol": "SDG"
+ },
+ "SRD": {
+ "name": "surinamski dolar",
+ "symbol": "SRD"
+ },
+ "SZL": {
+ "name": "svazijski lilangeni",
+ "symbol": "SZL"
+ },
+ "LKR": {
+ "name": "šrilanška rupija",
+ "symbol": "LKR"
+ },
+ "SEK": {
+ "name": "Å¡vedska krona",
+ "symbol": "SEK"
+ },
+ "CHF": {
+ "name": "Å¡vicarski frank",
+ "symbol": "CHF"
+ },
+ "TJS": {
+ "name": "tadžikistanski somoni",
+ "symbol": "TJS"
+ },
+ "THB": {
+ "name": "tajski baht",
+ "symbol": "฿"
+ },
+ "TZS": {
+ "name": "tanzanijski Å¡iling",
+ "symbol": "TZS"
+ },
+ "TOP": {
+ "name": "tongovska paanga",
+ "symbol": "TOP"
+ },
+ "TND": {
+ "name": "tunizijski dinar",
+ "symbol": "TND"
+ },
+ "TMT": {
+ "name": "turkmenistanski novi manat",
+ "symbol": "TMT"
+ },
+ "UGX": {
+ "name": "ugandski Å¡iling",
+ "symbol": "UGX"
+ },
+ "UAH": {
+ "name": "ukrajinska grivna",
+ "symbol": "UAH"
+ },
+ "UYU": {
+ "name": "urugvajski peso",
+ "symbol": "UYU"
+ },
+ "UZS": {
+ "name": "uzbeški sum",
+ "symbol": "UZS"
+ },
+ "VUV": {
+ "name": "vanuatujski vatu",
+ "symbol": "VUV"
+ },
+ "VEF": {
+ "name": "venezuelski bolivar",
+ "symbol": "VEF"
+ },
+ "VND": {
+ "name": "vientnamski dong",
+ "symbol": "â‚«"
+ },
+ "XCD": {
+ "name": "vzhodnokaribski dolar",
+ "symbol": "EC$"
+ },
+ "ZMW": {
+ "name": "zambijska kvaÄa",
+ "symbol": "ZMW"
+ },
+ "CVE": {
+ "name": "zelenortski eskudo",
+ "symbol": "CVE"
+ },
+ "ZWL": {
+ "name": "zimbabvejski dolar (2009)",
+ "symbol": "ZWL"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/currency/sn.json b/library/intl/resources/currency/sn.json
new file mode 100644
index 000000000..56f9d154f
--- /dev/null
+++ b/library/intl/resources/currency/sn.json
@@ -0,0 +1,634 @@
+{
+ "AFN": {
+ "name": "AFN",
+ "symbol": "AFN"
+ },
+ "ALL": {
+ "name": "ALL",
+ "symbol": "ALL"
+ },
+ "AMD": {
+ "name": "AMD",
+ "symbol": "AMD"
+ },
+ "ANG": {
+ "name": "ANG",
+ "symbol": "ANG"
+ },
+ "ARS": {
+ "name": "ARS",
+ "symbol": "ARS"
+ },
+ "AWG": {
+ "name": "AWG",
+ "symbol": "AWG"
+ },
+ "AZN": {
+ "name": "AZN",
+ "symbol": "AZN"
+ },
+ "BAM": {
+ "name": "BAM",
+ "symbol": "BAM"
+ },
+ "BBD": {
+ "name": "BBD",
+ "symbol": "BBD"
+ },
+ "BDT": {
+ "name": "BDT",
+ "symbol": "BDT"
+ },
+ "BGN": {
+ "name": "BGN",
+ "symbol": "BGN"
+ },
+ "BMD": {
+ "name": "BMD",
+ "symbol": "BMD"
+ },
+ "BND": {
+ "name": "BND",
+ "symbol": "BND"
+ },
+ "BOB": {
+ "name": "BOB",
+ "symbol": "BOB"
+ },
+ "BRL": {
+ "name": "BRL",
+ "symbol": "R$"
+ },
+ "BSD": {
+ "name": "BSD",
+ "symbol": "BSD"
+ },
+ "BTN": {
+ "name": "BTN",
+ "symbol": "BTN"
+ },
+ "BYR": {
+ "name": "BYR",
+ "symbol": "BYR"
+ },
+ "BZD": {
+ "name": "BZD",
+ "symbol": "BZD"
+ },
+ "CLP": {
+ "name": "CLP",
+ "symbol": "CLP"
+ },
+ "COP": {
+ "name": "COP",
+ "symbol": "COP"
+ },
+ "CRC": {
+ "name": "CRC",
+ "symbol": "CRC"
+ },
+ "CUC": {
+ "name": "CUC",
+ "symbol": "CUC"
+ },
+ "CUP": {
+ "name": "CUP",
+ "symbol": "CUP"
+ },
+ "CZK": {
+ "name": "CZK",
+ "symbol": "CZK"
+ },
+ "GMD": {
+ "name": "Dalasi ye Gambia",
+ "symbol": "GMD"
+ },
+ "DZD": {
+ "name": "Dhinari re Aljeria",
+ "symbol": "DZD"
+ },
+ "BHD": {
+ "name": "Dhinari re Bhahareni",
+ "symbol": "BHD"
+ },
+ "CVE": {
+ "name": "Dhora re Escudo",
+ "symbol": "CVE"
+ },
+ "ETB": {
+ "name": "Dhora re Etiopia",
+ "symbol": "ETB"
+ },
+ "LYD": {
+ "name": "Dinari re Libya",
+ "symbol": "LYD"
+ },
+ "SDG": {
+ "name": "Dinari re Sudani",
+ "symbol": "SDG"
+ },
+ "TND": {
+ "name": "Dinari re Tunisia",
+ "symbol": "TND"
+ },
+ "AED": {
+ "name": "Diramu re United Arab Emirates",
+ "symbol": "AED"
+ },
+ "MAD": {
+ "name": "Dirham ye Moroko",
+ "symbol": "MAD"
+ },
+ "DKK": {
+ "name": "DKK",
+ "symbol": "DKK"
+ },
+ "STD": {
+ "name": "Dobra re Sao Tome ne Principe",
+ "symbol": "STD"
+ },
+ "DOP": {
+ "name": "DOP",
+ "symbol": "DOP"
+ },
+ "USD": {
+ "name": "Dora re Amerika",
+ "symbol": "US$"
+ },
+ "AUD": {
+ "name": "Dora re Australia",
+ "symbol": "A$"
+ },
+ "CAD": {
+ "name": "Dora re Kanada",
+ "symbol": "CA$"
+ },
+ "LRD": {
+ "name": "Dora re Liberia",
+ "symbol": "LRD"
+ },
+ "NAD": {
+ "name": "Dora re Namibia",
+ "symbol": "NAD"
+ },
+ "FJD": {
+ "name": "FJD",
+ "symbol": "FJD"
+ },
+ "FKP": {
+ "name": "FKP",
+ "symbol": "FKP"
+ },
+ "XOF": {
+ "name": "Furenki CFA BCEAO",
+ "symbol": "CFA"
+ },
+ "XAF": {
+ "name": "Furenki CFA BEAC",
+ "symbol": "FCFA"
+ },
+ "BIF": {
+ "name": "Furenki re Bhurundi",
+ "symbol": "BIF"
+ },
+ "DJF": {
+ "name": "Furenki re Jibhuti",
+ "symbol": "DJF"
+ },
+ "KMF": {
+ "name": "Furenki re Komoro",
+ "symbol": "KMF"
+ },
+ "CDF": {
+ "name": "Furenki re Kongo",
+ "symbol": "CDF"
+ },
+ "MGA": {
+ "name": "Furenki re Malagasi",
+ "symbol": "MGA"
+ },
+ "RWF": {
+ "name": "Furenki re Ruwanda",
+ "symbol": "RWF"
+ },
+ "CHF": {
+ "name": "Furenki re Swisi",
+ "symbol": "CHF"
+ },
+ "GEL": {
+ "name": "GEL",
+ "symbol": "GEL"
+ },
+ "GHS": {
+ "name": "GHS",
+ "symbol": "GHS"
+ },
+ "GIP": {
+ "name": "GIP",
+ "symbol": "GIP"
+ },
+ "GNF": {
+ "name": "GNF",
+ "symbol": "GNF"
+ },
+ "GTQ": {
+ "name": "GTQ",
+ "symbol": "GTQ"
+ },
+ "GYD": {
+ "name": "GYD",
+ "symbol": "GYD"
+ },
+ "HKD": {
+ "name": "HKD",
+ "symbol": "HK$"
+ },
+ "HNL": {
+ "name": "HNL",
+ "symbol": "HNL"
+ },
+ "HRK": {
+ "name": "HRK",
+ "symbol": "HRK"
+ },
+ "HTG": {
+ "name": "HTG",
+ "symbol": "HTG"
+ },
+ "HUF": {
+ "name": "HUF",
+ "symbol": "HUF"
+ },
+ "IDR": {
+ "name": "IDR",
+ "symbol": "IDR"
+ },
+ "ILS": {
+ "name": "ILS",
+ "symbol": "₪"
+ },
+ "IQD": {
+ "name": "IQD",
+ "symbol": "IQD"
+ },
+ "IRR": {
+ "name": "IRR",
+ "symbol": "IRR"
+ },
+ "ISK": {
+ "name": "ISK",
+ "symbol": "ISK"
+ },
+ "JMD": {
+ "name": "JMD",
+ "symbol": "JMD"
+ },
+ "JOD": {
+ "name": "JOD",
+ "symbol": "JOD"
+ },
+ "KGS": {
+ "name": "KGS",
+ "symbol": "KGS"
+ },
+ "KHR": {
+ "name": "KHR",
+ "symbol": "KHR"
+ },
+ "KPW": {
+ "name": "KPW",
+ "symbol": "KPW"
+ },
+ "KRW": {
+ "name": "KRW",
+ "symbol": "â‚©"
+ },
+ "MWK": {
+ "name": "Kwacha ye Malawi",
+ "symbol": "MWK"
+ },
+ "ZMW": {
+ "name": "Kwacha ye Zambia",
+ "symbol": "ZMW"
+ },
+ "AOA": {
+ "name": "Kwanza ye Angola",
+ "symbol": "AOA"
+ },
+ "KWD": {
+ "name": "KWD",
+ "symbol": "KWD"
+ },
+ "KYD": {
+ "name": "KYD",
+ "symbol": "KYD"
+ },
+ "KZT": {
+ "name": "KZT",
+ "symbol": "KZT"
+ },
+ "LAK": {
+ "name": "LAK",
+ "symbol": "LAK"
+ },
+ "LBP": {
+ "name": "LBP",
+ "symbol": "LBP"
+ },
+ "SLL": {
+ "name": "Leoni",
+ "symbol": "SLL"
+ },
+ "SZL": {
+ "name": "Lilangeni",
+ "symbol": "SZL"
+ },
+ "LKR": {
+ "name": "LKR",
+ "symbol": "LKR"
+ },
+ "LSL": {
+ "name": "Loti ye Lesoto",
+ "symbol": "LSL"
+ },
+ "LTL": {
+ "name": "LTL",
+ "symbol": "LTL"
+ },
+ "MDL": {
+ "name": "MDL",
+ "symbol": "MDL"
+ },
+ "MKD": {
+ "name": "MKD",
+ "symbol": "MKD"
+ },
+ "MMK": {
+ "name": "MMK",
+ "symbol": "MMK"
+ },
+ "MNT": {
+ "name": "MNT",
+ "symbol": "MNT"
+ },
+ "MOP": {
+ "name": "MOP",
+ "symbol": "MOP"
+ },
+ "MVR": {
+ "name": "MVR",
+ "symbol": "MVR"
+ },
+ "MXN": {
+ "name": "MXN",
+ "symbol": "MX$"
+ },
+ "MYR": {
+ "name": "MYR",
+ "symbol": "MYR"
+ },
+ "MZN": {
+ "name": "MZN",
+ "symbol": "MZN"
+ },
+ "NGN": {
+ "name": "Naira ye Nijeria",
+ "symbol": "NGN"
+ },
+ "ERN": {
+ "name": "Nakfa re Eritrea",
+ "symbol": "ERN"
+ },
+ "NIO": {
+ "name": "NIO",
+ "symbol": "NIO"
+ },
+ "NOK": {
+ "name": "NOK",
+ "symbol": "NOK"
+ },
+ "NPR": {
+ "name": "NPR",
+ "symbol": "NPR"
+ },
+ "NZD": {
+ "name": "NZD",
+ "symbol": "NZ$"
+ },
+ "OMR": {
+ "name": "OMR",
+ "symbol": "OMR"
+ },
+ "PAB": {
+ "name": "PAB",
+ "symbol": "PAB"
+ },
+ "EGP": {
+ "name": "Paundi re Ijipita",
+ "symbol": "EGP"
+ },
+ "SHP": {
+ "name": "Paundi re Senti Helena",
+ "symbol": "SHP"
+ },
+ "GBP": {
+ "name": "Paundi ye Bhiriteni",
+ "symbol": "£"
+ },
+ "PEN": {
+ "name": "PEN",
+ "symbol": "PEN"
+ },
+ "PGK": {
+ "name": "PGK",
+ "symbol": "PGK"
+ },
+ "PHP": {
+ "name": "PHP",
+ "symbol": "PHP"
+ },
+ "PKR": {
+ "name": "PKR",
+ "symbol": "PKR"
+ },
+ "PLN": {
+ "name": "PLN",
+ "symbol": "PLN"
+ },
+ "BWP": {
+ "name": "Pura re Botswana",
+ "symbol": "BWP"
+ },
+ "PYG": {
+ "name": "PYG",
+ "symbol": "PYG"
+ },
+ "QAR": {
+ "name": "QAR",
+ "symbol": "QAR"
+ },
+ "ZAR": {
+ "name": "Randi",
+ "symbol": "ZAR"
+ },
+ "SAR": {
+ "name": "Riyali re Saudi",
+ "symbol": "SAR"
+ },
+ "RON": {
+ "name": "RON",
+ "symbol": "RON"
+ },
+ "RSD": {
+ "name": "RSD",
+ "symbol": "RSD"
+ },
+ "RUB": {
+ "name": "RUB",
+ "symbol": "RUB"
+ },
+ "INR": {
+ "name": "Rupe re India",
+ "symbol": "₹"
+ },
+ "SCR": {
+ "name": "Rupi re Seyisheri",
+ "symbol": "SCR"
+ },
+ "MUR": {
+ "name": "Rupi ye Morishasi",
+ "symbol": "MUR"
+ },
+ "SBD": {
+ "name": "SBD",
+ "symbol": "SBD"
+ },
+ "SEK": {
+ "name": "SEK",
+ "symbol": "SEK"
+ },
+ "SGD": {
+ "name": "SGD",
+ "symbol": "SGD"
+ },
+ "SOS": {
+ "name": "Shiringi re Somalia",
+ "symbol": "SOS"
+ },
+ "TZS": {
+ "name": "Shiringi re Tanzania",
+ "symbol": "TZS"
+ },
+ "UGX": {
+ "name": "Shiringi re Uganda",
+ "symbol": "UGX"
+ },
+ "KES": {
+ "name": "Shiringi ye Kenya",
+ "symbol": "KES"
+ },
+ "SRD": {
+ "name": "SRD",
+ "symbol": "SRD"
+ },
+ "SSP": {
+ "name": "SSP",
+ "symbol": "SSP"
+ },
+ "SVC": {
+ "name": "SVC",
+ "symbol": "SVC"
+ },
+ "SYP": {
+ "name": "SYP",
+ "symbol": "SYP"
+ },
+ "THB": {
+ "name": "THB",
+ "symbol": "THB"
+ },
+ "TJS": {
+ "name": "TJS",
+ "symbol": "TJS"
+ },
+ "TMT": {
+ "name": "TMT",
+ "symbol": "TMT"
+ },
+ "TOP": {
+ "name": "TOP",
+ "symbol": "TOP"
+ },
+ "TRY": {
+ "name": "TRY",
+ "symbol": "TRY"
+ },
+ "TTD": {
+ "name": "TTD",
+ "symbol": "TTD"
+ },
+ "TWD": {
+ "name": "TWD",
+ "symbol": "NT$"
+ },
+ "UAH": {
+ "name": "UAH",
+ "symbol": "UAH"
+ },
+ "MRO": {
+ "name": "Ugwiya ye Moritania",
+ "symbol": "MRO"
+ },
+ "UYU": {
+ "name": "UYU",
+ "symbol": "UYU"
+ },
+ "UZS": {
+ "name": "UZS",
+ "symbol": "UZS"
+ },
+ "VEF": {
+ "name": "VEF",
+ "symbol": "VEF"
+ },
+ "VND": {
+ "name": "VND",
+ "symbol": "â‚«"
+ },
+ "VUV": {
+ "name": "VUV",
+ "symbol": "VUV"
+ },
+ "WST": {
+ "name": "WST",
+ "symbol": "WST"
+ },
+ "XCD": {
+ "name": "XCD",
+ "symbol": "EC$"
+ },
+ "XPF": {
+ "name": "XPF",
+ "symbol": "CFPF"
+ },
+ "JPY": {
+ "name": "Yeni ye Japani",
+ "symbol": "JPÂ¥"
+ },
+ "YER": {
+ "name": "YER",
+ "symbol": "YER"
+ },
+ "CNY": {
+ "name": "Yuan Renminbi ye China",
+ "symbol": "CNÂ¥"
+ },
+ "EUR": {
+ "name": "Yuro",
+ "symbol": "€"
+ },
+ "ZWL": {
+ "name": "ZWL",
+ "symbol": "ZWL"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/currency/so.json b/library/intl/resources/currency/so.json
new file mode 100644
index 000000000..95d95398c
--- /dev/null
+++ b/library/intl/resources/currency/so.json
@@ -0,0 +1,634 @@
+{
+ "AED": {
+ "name": "AED",
+ "symbol": "AED"
+ },
+ "AFN": {
+ "name": "AFN",
+ "symbol": "AFN"
+ },
+ "ALL": {
+ "name": "ALL",
+ "symbol": "ALL"
+ },
+ "AMD": {
+ "name": "AMD",
+ "symbol": "AMD"
+ },
+ "ANG": {
+ "name": "ANG",
+ "symbol": "ANG"
+ },
+ "AOA": {
+ "name": "AOA",
+ "symbol": "AOA"
+ },
+ "ARS": {
+ "name": "ARS",
+ "symbol": "ARS"
+ },
+ "AUD": {
+ "name": "AUD",
+ "symbol": "A$"
+ },
+ "AWG": {
+ "name": "AWG",
+ "symbol": "AWG"
+ },
+ "AZN": {
+ "name": "AZN",
+ "symbol": "AZN"
+ },
+ "BAM": {
+ "name": "BAM",
+ "symbol": "BAM"
+ },
+ "BBD": {
+ "name": "BBD",
+ "symbol": "BBD"
+ },
+ "BDT": {
+ "name": "BDT",
+ "symbol": "BDT"
+ },
+ "BGN": {
+ "name": "BGN",
+ "symbol": "BGN"
+ },
+ "BHD": {
+ "name": "BHD",
+ "symbol": "BHD"
+ },
+ "BIF": {
+ "name": "BIF",
+ "symbol": "BIF"
+ },
+ "ETB": {
+ "name": "Birta Itoobbiya",
+ "symbol": "ETB"
+ },
+ "BMD": {
+ "name": "BMD",
+ "symbol": "BMD"
+ },
+ "BND": {
+ "name": "BND",
+ "symbol": "BND"
+ },
+ "BOB": {
+ "name": "BOB",
+ "symbol": "BOB"
+ },
+ "BRL": {
+ "name": "BRL",
+ "symbol": "R$"
+ },
+ "BSD": {
+ "name": "BSD",
+ "symbol": "BSD"
+ },
+ "BTN": {
+ "name": "BTN",
+ "symbol": "BTN"
+ },
+ "BWP": {
+ "name": "BWP",
+ "symbol": "BWP"
+ },
+ "BYR": {
+ "name": "BYR",
+ "symbol": "BYR"
+ },
+ "BZD": {
+ "name": "BZD",
+ "symbol": "BZD"
+ },
+ "CAD": {
+ "name": "CAD",
+ "symbol": "CA$"
+ },
+ "CDF": {
+ "name": "CDF",
+ "symbol": "CDF"
+ },
+ "CHF": {
+ "name": "CHF",
+ "symbol": "CHF"
+ },
+ "CLP": {
+ "name": "CLP",
+ "symbol": "CLP"
+ },
+ "CNY": {
+ "name": "CNY",
+ "symbol": "CNÂ¥"
+ },
+ "COP": {
+ "name": "COP",
+ "symbol": "COP"
+ },
+ "CRC": {
+ "name": "CRC",
+ "symbol": "CRC"
+ },
+ "CUC": {
+ "name": "CUC",
+ "symbol": "CUC"
+ },
+ "CUP": {
+ "name": "CUP",
+ "symbol": "CUP"
+ },
+ "CVE": {
+ "name": "CVE",
+ "symbol": "CVE"
+ },
+ "CZK": {
+ "name": "CZK",
+ "symbol": "CZK"
+ },
+ "DKK": {
+ "name": "DKK",
+ "symbol": "DKK"
+ },
+ "USD": {
+ "name": "Doollar maraykan",
+ "symbol": "US$"
+ },
+ "DOP": {
+ "name": "DOP",
+ "symbol": "DOP"
+ },
+ "DZD": {
+ "name": "DZD",
+ "symbol": "DZD"
+ },
+ "EGP": {
+ "name": "EGP",
+ "symbol": "EGP"
+ },
+ "ERN": {
+ "name": "ERN",
+ "symbol": "ERN"
+ },
+ "DJF": {
+ "name": "Faran Jabbuuti",
+ "symbol": "DJF"
+ },
+ "FJD": {
+ "name": "FJD",
+ "symbol": "FJD"
+ },
+ "FKP": {
+ "name": "FKP",
+ "symbol": "FKP"
+ },
+ "GBP": {
+ "name": "GBP",
+ "symbol": "£"
+ },
+ "GEL": {
+ "name": "GEL",
+ "symbol": "GEL"
+ },
+ "GHS": {
+ "name": "GHS",
+ "symbol": "GHS"
+ },
+ "GIP": {
+ "name": "GIP",
+ "symbol": "GIP"
+ },
+ "GMD": {
+ "name": "GMD",
+ "symbol": "GMD"
+ },
+ "GNF": {
+ "name": "GNF",
+ "symbol": "GNF"
+ },
+ "GTQ": {
+ "name": "GTQ",
+ "symbol": "GTQ"
+ },
+ "GYD": {
+ "name": "GYD",
+ "symbol": "GYD"
+ },
+ "HKD": {
+ "name": "HKD",
+ "symbol": "HK$"
+ },
+ "HNL": {
+ "name": "HNL",
+ "symbol": "HNL"
+ },
+ "HRK": {
+ "name": "HRK",
+ "symbol": "HRK"
+ },
+ "HTG": {
+ "name": "HTG",
+ "symbol": "HTG"
+ },
+ "HUF": {
+ "name": "HUF",
+ "symbol": "HUF"
+ },
+ "IDR": {
+ "name": "IDR",
+ "symbol": "IDR"
+ },
+ "ILS": {
+ "name": "ILS",
+ "symbol": "₪"
+ },
+ "INR": {
+ "name": "INR",
+ "symbol": "₹"
+ },
+ "IQD": {
+ "name": "IQD",
+ "symbol": "IQD"
+ },
+ "IRR": {
+ "name": "IRR",
+ "symbol": "IRR"
+ },
+ "ISK": {
+ "name": "ISK",
+ "symbol": "ISK"
+ },
+ "JMD": {
+ "name": "JMD",
+ "symbol": "JMD"
+ },
+ "JOD": {
+ "name": "JOD",
+ "symbol": "JOD"
+ },
+ "JPY": {
+ "name": "JPY",
+ "symbol": "JPÂ¥"
+ },
+ "KES": {
+ "name": "KES",
+ "symbol": "KES"
+ },
+ "KGS": {
+ "name": "KGS",
+ "symbol": "KGS"
+ },
+ "KHR": {
+ "name": "KHR",
+ "symbol": "KHR"
+ },
+ "KMF": {
+ "name": "KMF",
+ "symbol": "KMF"
+ },
+ "KPW": {
+ "name": "KPW",
+ "symbol": "KPW"
+ },
+ "KRW": {
+ "name": "KRW",
+ "symbol": "â‚©"
+ },
+ "KWD": {
+ "name": "KWD",
+ "symbol": "KWD"
+ },
+ "KYD": {
+ "name": "KYD",
+ "symbol": "KYD"
+ },
+ "KZT": {
+ "name": "KZT",
+ "symbol": "KZT"
+ },
+ "LAK": {
+ "name": "LAK",
+ "symbol": "LAK"
+ },
+ "LBP": {
+ "name": "LBP",
+ "symbol": "LBP"
+ },
+ "LKR": {
+ "name": "LKR",
+ "symbol": "LKR"
+ },
+ "LRD": {
+ "name": "LRD",
+ "symbol": "LRD"
+ },
+ "LSL": {
+ "name": "LSL",
+ "symbol": "LSL"
+ },
+ "LTL": {
+ "name": "LTL",
+ "symbol": "LTL"
+ },
+ "LYD": {
+ "name": "LYD",
+ "symbol": "LYD"
+ },
+ "MAD": {
+ "name": "MAD",
+ "symbol": "MAD"
+ },
+ "MDL": {
+ "name": "MDL",
+ "symbol": "MDL"
+ },
+ "MGA": {
+ "name": "MGA",
+ "symbol": "MGA"
+ },
+ "MKD": {
+ "name": "MKD",
+ "symbol": "MKD"
+ },
+ "MMK": {
+ "name": "MMK",
+ "symbol": "MMK"
+ },
+ "MNT": {
+ "name": "MNT",
+ "symbol": "MNT"
+ },
+ "MOP": {
+ "name": "MOP",
+ "symbol": "MOP"
+ },
+ "MRO": {
+ "name": "MRO",
+ "symbol": "MRO"
+ },
+ "MUR": {
+ "name": "MUR",
+ "symbol": "MUR"
+ },
+ "MVR": {
+ "name": "MVR",
+ "symbol": "MVR"
+ },
+ "MWK": {
+ "name": "MWK",
+ "symbol": "MWK"
+ },
+ "MXN": {
+ "name": "MXN",
+ "symbol": "MX$"
+ },
+ "MYR": {
+ "name": "MYR",
+ "symbol": "MYR"
+ },
+ "MZN": {
+ "name": "MZN",
+ "symbol": "MZN"
+ },
+ "NAD": {
+ "name": "NAD",
+ "symbol": "NAD"
+ },
+ "NGN": {
+ "name": "NGN",
+ "symbol": "NGN"
+ },
+ "NIO": {
+ "name": "NIO",
+ "symbol": "NIO"
+ },
+ "NOK": {
+ "name": "NOK",
+ "symbol": "NOK"
+ },
+ "NPR": {
+ "name": "NPR",
+ "symbol": "NPR"
+ },
+ "NZD": {
+ "name": "NZD",
+ "symbol": "NZ$"
+ },
+ "OMR": {
+ "name": "OMR",
+ "symbol": "OMR"
+ },
+ "PAB": {
+ "name": "PAB",
+ "symbol": "PAB"
+ },
+ "PEN": {
+ "name": "PEN",
+ "symbol": "PEN"
+ },
+ "PGK": {
+ "name": "PGK",
+ "symbol": "PGK"
+ },
+ "PHP": {
+ "name": "PHP",
+ "symbol": "PHP"
+ },
+ "PKR": {
+ "name": "PKR",
+ "symbol": "PKR"
+ },
+ "PLN": {
+ "name": "PLN",
+ "symbol": "PLN"
+ },
+ "PYG": {
+ "name": "PYG",
+ "symbol": "PYG"
+ },
+ "QAR": {
+ "name": "QAR",
+ "symbol": "QAR"
+ },
+ "SAR": {
+ "name": "Riyaalka Sacuudiga",
+ "symbol": "SAR"
+ },
+ "RON": {
+ "name": "RON",
+ "symbol": "RON"
+ },
+ "RSD": {
+ "name": "RSD",
+ "symbol": "RSD"
+ },
+ "RUB": {
+ "name": "RUB",
+ "symbol": "RUB"
+ },
+ "RWF": {
+ "name": "RWF",
+ "symbol": "RWF"
+ },
+ "SBD": {
+ "name": "SBD",
+ "symbol": "SBD"
+ },
+ "SCR": {
+ "name": "SCR",
+ "symbol": "SCR"
+ },
+ "SDG": {
+ "name": "SDG",
+ "symbol": "SDG"
+ },
+ "SEK": {
+ "name": "SEK",
+ "symbol": "SEK"
+ },
+ "SGD": {
+ "name": "SGD",
+ "symbol": "SGD"
+ },
+ "SOS": {
+ "name": "Shilin soomaali",
+ "symbol": "S"
+ },
+ "TZS": {
+ "name": "Shilin Tansaani",
+ "symbol": "TZS"
+ },
+ "SHP": {
+ "name": "SHP",
+ "symbol": "SHP"
+ },
+ "SLL": {
+ "name": "SLL",
+ "symbol": "SLL"
+ },
+ "SRD": {
+ "name": "SRD",
+ "symbol": "SRD"
+ },
+ "SSP": {
+ "name": "SSP",
+ "symbol": "SSP"
+ },
+ "STD": {
+ "name": "STD",
+ "symbol": "STD"
+ },
+ "SVC": {
+ "name": "SVC",
+ "symbol": "SVC"
+ },
+ "SYP": {
+ "name": "SYP",
+ "symbol": "SYP"
+ },
+ "SZL": {
+ "name": "SZL",
+ "symbol": "SZL"
+ },
+ "THB": {
+ "name": "THB",
+ "symbol": "THB"
+ },
+ "TJS": {
+ "name": "TJS",
+ "symbol": "TJS"
+ },
+ "TMT": {
+ "name": "TMT",
+ "symbol": "TMT"
+ },
+ "TND": {
+ "name": "TND",
+ "symbol": "TND"
+ },
+ "TOP": {
+ "name": "TOP",
+ "symbol": "TOP"
+ },
+ "TRY": {
+ "name": "TRY",
+ "symbol": "TRY"
+ },
+ "TTD": {
+ "name": "TTD",
+ "symbol": "TTD"
+ },
+ "TWD": {
+ "name": "TWD",
+ "symbol": "NT$"
+ },
+ "UAH": {
+ "name": "UAH",
+ "symbol": "UAH"
+ },
+ "UGX": {
+ "name": "UGX",
+ "symbol": "UGX"
+ },
+ "UYU": {
+ "name": "UYU",
+ "symbol": "UYU"
+ },
+ "UZS": {
+ "name": "UZS",
+ "symbol": "UZS"
+ },
+ "VEF": {
+ "name": "VEF",
+ "symbol": "VEF"
+ },
+ "VND": {
+ "name": "VND",
+ "symbol": "â‚«"
+ },
+ "VUV": {
+ "name": "VUV",
+ "symbol": "VUV"
+ },
+ "WST": {
+ "name": "WST",
+ "symbol": "WST"
+ },
+ "XAF": {
+ "name": "XAF",
+ "symbol": "FCFA"
+ },
+ "XCD": {
+ "name": "XCD",
+ "symbol": "EC$"
+ },
+ "XOF": {
+ "name": "XOF",
+ "symbol": "CFA"
+ },
+ "XPF": {
+ "name": "XPF",
+ "symbol": "CFPF"
+ },
+ "YER": {
+ "name": "YER",
+ "symbol": "YER"
+ },
+ "EUR": {
+ "name": "Yuuroo",
+ "symbol": "€"
+ },
+ "ZAR": {
+ "name": "ZAR",
+ "symbol": "ZAR"
+ },
+ "ZMW": {
+ "name": "ZMW",
+ "symbol": "ZMW"
+ },
+ "ZWL": {
+ "name": "ZWL",
+ "symbol": "ZWL"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/currency/sq.json b/library/intl/resources/currency/sq.json
new file mode 100644
index 000000000..89f842436
--- /dev/null
+++ b/library/intl/resources/currency/sq.json
@@ -0,0 +1,634 @@
+{
+ "AFN": {
+ "name": "Afgani afgan",
+ "symbol": "AFN"
+ },
+ "MGA": {
+ "name": "Arieri malagez",
+ "symbol": "MGA"
+ },
+ "PAB": {
+ "name": "Balboa panameze",
+ "symbol": "PAB"
+ },
+ "THB": {
+ "name": "Bata tajlandeze",
+ "symbol": "฿"
+ },
+ "ETB": {
+ "name": "Bira etiopiane",
+ "symbol": "ETB"
+ },
+ "VEF": {
+ "name": "Bolivari venezuelian",
+ "symbol": "VEF"
+ },
+ "BOB": {
+ "name": "Boliviani i Bolivisë",
+ "symbol": "BOB"
+ },
+ "GMD": {
+ "name": "Dalasi gambian",
+ "symbol": "GMD"
+ },
+ "MKD": {
+ "name": "Denari maqedonas",
+ "symbol": "MKD"
+ },
+ "DZD": {
+ "name": "Dinari algjerian",
+ "symbol": "DZD"
+ },
+ "BHD": {
+ "name": "Dinari i Bahreinit",
+ "symbol": "BHD"
+ },
+ "IQD": {
+ "name": "Dinari irakian",
+ "symbol": "IQD"
+ },
+ "JOD": {
+ "name": "Dinari jordanez",
+ "symbol": "JOD"
+ },
+ "KWD": {
+ "name": "Dinari kuvajtian",
+ "symbol": "KWD"
+ },
+ "LYD": {
+ "name": "Dinari libian",
+ "symbol": "LYD"
+ },
+ "RSD": {
+ "name": "Dinari serb",
+ "symbol": "RSD"
+ },
+ "TND": {
+ "name": "Dinari tunizian",
+ "symbol": "TND"
+ },
+ "AED": {
+ "name": "Dirhami i Emirateve të Bashkuara Arabe",
+ "symbol": "AED"
+ },
+ "MAD": {
+ "name": "Dirhami maroken",
+ "symbol": "MAD"
+ },
+ "STD": {
+ "name": "Dobra e Sao Tomes dhe Prinsipes",
+ "symbol": "STD"
+ },
+ "USD": {
+ "name": "Dollari amerikan",
+ "symbol": "US$"
+ },
+ "AUD": {
+ "name": "Dollari australian",
+ "symbol": "A$"
+ },
+ "BBD": {
+ "name": "Dollari barbadian",
+ "symbol": "BBD"
+ },
+ "BMD": {
+ "name": "Dollari e Bermudeve",
+ "symbol": "BMD"
+ },
+ "GYD": {
+ "name": "Dollari guajanez",
+ "symbol": "GYD"
+ },
+ "BSD": {
+ "name": "Dollari i Bahamasit",
+ "symbol": "BSD"
+ },
+ "BND": {
+ "name": "Dollari i Bruneit",
+ "symbol": "BND"
+ },
+ "FJD": {
+ "name": "Dollari i Fixhit",
+ "symbol": "FJD"
+ },
+ "HKD": {
+ "name": "Dollari i Hong Kongut",
+ "symbol": "HK$"
+ },
+ "BZD": {
+ "name": "Dollari i Ishujve Belize",
+ "symbol": "BZD"
+ },
+ "KYD": {
+ "name": "Dollari i Ishujve Kajman",
+ "symbol": "KYD"
+ },
+ "SBD": {
+ "name": "Dollari i Ishujve Solomon",
+ "symbol": "SBD"
+ },
+ "XCD": {
+ "name": "Dollari i Karaibeve Lindore",
+ "symbol": "EC$"
+ },
+ "NAD": {
+ "name": "Dollari i Namibisë",
+ "symbol": "NAD"
+ },
+ "SGD": {
+ "name": "Dollari i Singaporit",
+ "symbol": "SGD"
+ },
+ "TTD": {
+ "name": "Dollari i Trinidadit dhe Tobagos",
+ "symbol": "TTD"
+ },
+ "NZD": {
+ "name": "Dollari i Zelandës së Re",
+ "symbol": "NZ$"
+ },
+ "CAD": {
+ "name": "Dollari kanadez",
+ "symbol": "CA$"
+ },
+ "LRD": {
+ "name": "Dollari liberian",
+ "symbol": "LRD"
+ },
+ "SRD": {
+ "name": "Dollari surinamez",
+ "symbol": "SRD"
+ },
+ "TWD": {
+ "name": "Dollari tajvanez",
+ "symbol": "NT$"
+ },
+ "JMD": {
+ "name": "Dollari xhamajkan",
+ "symbol": "JMD"
+ },
+ "VND": {
+ "name": "Donga vietnameze",
+ "symbol": "â‚«"
+ },
+ "AMD": {
+ "name": "Dramia armene",
+ "symbol": "AMD"
+ },
+ "CVE": {
+ "name": "Eskudoja e Kepit të Gjelbër",
+ "symbol": "CVE"
+ },
+ "EUR": {
+ "name": "Euroja",
+ "symbol": "€"
+ },
+ "AWG": {
+ "name": "Florini aruban",
+ "symbol": "AWG"
+ },
+ "HUF": {
+ "name": "Forinta hungareze",
+ "symbol": "HUF"
+ },
+ "BIF": {
+ "name": "Franga burundiane",
+ "symbol": "BIF"
+ },
+ "XOF": {
+ "name": "Franga e Bregut të Fildishtë",
+ "symbol": "CFA"
+ },
+ "XPF": {
+ "name": "Franga franceze e Polinezisë",
+ "symbol": "CFPF"
+ },
+ "GNF": {
+ "name": "Franga guinease",
+ "symbol": "GNF"
+ },
+ "XAF": {
+ "name": "Franga kamerunase",
+ "symbol": "FCFA"
+ },
+ "KMF": {
+ "name": "Franga komore",
+ "symbol": "KMF"
+ },
+ "CDF": {
+ "name": "Franga kongole",
+ "symbol": "CDF"
+ },
+ "RWF": {
+ "name": "Franga ruandeze",
+ "symbol": "RWF"
+ },
+ "DJF": {
+ "name": "Franga xhibutiane",
+ "symbol": "DJF"
+ },
+ "CHF": {
+ "name": "Franga zvicerane",
+ "symbol": "CHF"
+ },
+ "ANG": {
+ "name": "Gilderi antilian holandez",
+ "symbol": "ANG"
+ },
+ "PYG": {
+ "name": "Guarani paraguaian",
+ "symbol": "PYG"
+ },
+ "HTG": {
+ "name": "Gurdi haitian",
+ "symbol": "HTG"
+ },
+ "JPY": {
+ "name": "Jeni japonez",
+ "symbol": "JPÂ¥"
+ },
+ "CNY": {
+ "name": "Juani kinez",
+ "symbol": "CNÂ¥"
+ },
+ "MMK": {
+ "name": "Kiata e Mianmarit",
+ "symbol": "MMK"
+ },
+ "PGK": {
+ "name": "Kina e Papua-Guineas së Re",
+ "symbol": "PGK"
+ },
+ "LAK": {
+ "name": "Kipa e Laosit",
+ "symbol": "LAK"
+ },
+ "CRC": {
+ "name": "Koloni kostarikan",
+ "symbol": "CRC"
+ },
+ "NIO": {
+ "name": "Kordoba nikaraguane",
+ "symbol": "NIO"
+ },
+ "DKK": {
+ "name": "Korona daneze",
+ "symbol": "DKK"
+ },
+ "ISK": {
+ "name": "Korona islandeze",
+ "symbol": "ISK"
+ },
+ "NOK": {
+ "name": "Korona norvegjeze",
+ "symbol": "NOK"
+ },
+ "SEK": {
+ "name": "Korona suedeze",
+ "symbol": "SEK"
+ },
+ "CZK": {
+ "name": "Koruna e Republikës Çeke",
+ "symbol": "CZK"
+ },
+ "ZMW": {
+ "name": "Kuaça e Zambikut",
+ "symbol": "ZMW"
+ },
+ "MWK": {
+ "name": "Kuaça malaviane",
+ "symbol": "MWK"
+ },
+ "AOA": {
+ "name": "Kuanza e Angolës",
+ "symbol": "AOA"
+ },
+ "GTQ": {
+ "name": "Kuecali i Guatemalës",
+ "symbol": "GTQ"
+ },
+ "HRK": {
+ "name": "Kuna kroate",
+ "symbol": "HRK"
+ },
+ "GEL": {
+ "name": "Laria gjeorgjiane",
+ "symbol": "GEL"
+ },
+ "ALL": {
+ "name": "Leku shqiptar",
+ "symbol": "Lekë"
+ },
+ "HNL": {
+ "name": "Lempira hondurase",
+ "symbol": "HNL"
+ },
+ "SLL": {
+ "name": "Leoni i Sierra Leones",
+ "symbol": "SLL"
+ },
+ "MDL": {
+ "name": "Leu moldav",
+ "symbol": "MDL"
+ },
+ "RON": {
+ "name": "Leu rumun",
+ "symbol": "RON"
+ },
+ "BGN": {
+ "name": "Leva bullgare",
+ "symbol": "BGN"
+ },
+ "SZL": {
+ "name": "Lilangeni i Svazilandit",
+ "symbol": "SZL"
+ },
+ "TRY": {
+ "name": "Lira turke",
+ "symbol": "TRY"
+ },
+ "LTL": {
+ "name": "Lita lituaneze",
+ "symbol": "LTL"
+ },
+ "LSL": {
+ "name": "LSL",
+ "symbol": "LSL"
+ },
+ "AZN": {
+ "name": "Manata e Azerbajxhanit",
+ "symbol": "AZN"
+ },
+ "TMT": {
+ "name": "Manata turkmene",
+ "symbol": "TMT"
+ },
+ "BAM": {
+ "name": "Marka e Bosnjë-Hercegovinës [e shkëmbyeshme]",
+ "symbol": "BAM"
+ },
+ "MZN": {
+ "name": "Metikali i Mozambikut",
+ "symbol": "MZN"
+ },
+ "NGN": {
+ "name": "Naira nigeriane",
+ "symbol": "NGN"
+ },
+ "ERN": {
+ "name": "Nakfa e Eritresë",
+ "symbol": "ERN"
+ },
+ "BTN": {
+ "name": "Ngultrumi butanez",
+ "symbol": "BTN"
+ },
+ "TOP": {
+ "name": "Panga tongane",
+ "symbol": "TOP"
+ },
+ "MOP": {
+ "name": "Pataka e Makaos",
+ "symbol": "MOP"
+ },
+ "ARS": {
+ "name": "Pezoja argjentinase",
+ "symbol": "ARS"
+ },
+ "DOP": {
+ "name": "Pezoja dominikane",
+ "symbol": "DOP"
+ },
+ "PHP": {
+ "name": "Pezoja filipinase",
+ "symbol": "PHP"
+ },
+ "CLP": {
+ "name": "Pezoja kiliane",
+ "symbol": "CLP"
+ },
+ "COP": {
+ "name": "Pezoja kolumbiane",
+ "symbol": "COP"
+ },
+ "CUP": {
+ "name": "Pezoja kubane",
+ "symbol": "CUP"
+ },
+ "CUC": {
+ "name": "Pezoja kubane e shkëmbyeshme",
+ "symbol": "CUC"
+ },
+ "MXN": {
+ "name": "Pezoja meksikane",
+ "symbol": "MX$"
+ },
+ "UYU": {
+ "name": "Pezoja uruguaiane",
+ "symbol": "UYU"
+ },
+ "BWP": {
+ "name": "Pula botsvane",
+ "symbol": "BWP"
+ },
+ "ZAR": {
+ "name": "Randa afrikano-jugore",
+ "symbol": "ZAR"
+ },
+ "BRL": {
+ "name": "Reali brazilian",
+ "symbol": "R$"
+ },
+ "YER": {
+ "name": "Riali i Jemenit",
+ "symbol": "YER"
+ },
+ "QAR": {
+ "name": "Riali i Katarit",
+ "symbol": "QAR"
+ },
+ "OMR": {
+ "name": "Riali i Omanit",
+ "symbol": "OMR"
+ },
+ "IRR": {
+ "name": "Riali iranian",
+ "symbol": "IRR"
+ },
+ "KHR": {
+ "name": "Riali kamboxhian",
+ "symbol": "KHR"
+ },
+ "SAR": {
+ "name": "Riali saudit",
+ "symbol": "SAR"
+ },
+ "MYR": {
+ "name": "Ringiti malajzian",
+ "symbol": "MYR"
+ },
+ "UAH": {
+ "name": "Rivnia ukrainase",
+ "symbol": "UAH"
+ },
+ "BYR": {
+ "name": "Rubla bjelloruse",
+ "symbol": "BYR"
+ },
+ "RUB": {
+ "name": "Rubla ruse",
+ "symbol": "RUB"
+ },
+ "MVR": {
+ "name": "Rufiu i Maldivit",
+ "symbol": "MVR"
+ },
+ "SCR": {
+ "name": "Rupia e Ishujve Sejçelë",
+ "symbol": "SCR"
+ },
+ "LKR": {
+ "name": "Rupia e Sri Lankës",
+ "symbol": "LKR"
+ },
+ "INR": {
+ "name": "Rupia indiane",
+ "symbol": "₹"
+ },
+ "IDR": {
+ "name": "Rupia indoneziane",
+ "symbol": "IDR"
+ },
+ "MUR": {
+ "name": "Rupia mauritiane",
+ "symbol": "MUR"
+ },
+ "NPR": {
+ "name": "Rupia nepaleze",
+ "symbol": "NPR"
+ },
+ "PKR": {
+ "name": "Rupia pakistaneze",
+ "symbol": "PKR"
+ },
+ "GHS": {
+ "name": "Sejda ganeze",
+ "symbol": "GHS"
+ },
+ "PEN": {
+ "name": "Sola nuevo-peruane",
+ "symbol": "PEN"
+ },
+ "KGS": {
+ "name": "Soma kirgize",
+ "symbol": "KGS"
+ },
+ "UZS": {
+ "name": "Soma uzbeke",
+ "symbol": "UZS"
+ },
+ "TJS": {
+ "name": "Somona taxhike",
+ "symbol": "TJS"
+ },
+ "GBP": {
+ "name": "Sterlina britanike",
+ "symbol": "£"
+ },
+ "GIP": {
+ "name": "Sterlina e Gjibraltarit",
+ "symbol": "GIP"
+ },
+ "LBP": {
+ "name": "Sterlina libaneze",
+ "symbol": "LBP"
+ },
+ "SYP": {
+ "name": "Sterlina siriane",
+ "symbol": "SYP"
+ },
+ "FKP": {
+ "name": "Stërlina e Ishujve Folkland",
+ "symbol": "FKP"
+ },
+ "SHP": {
+ "name": "Stërlina e Ishullit të Shën Helenës",
+ "symbol": "SHP"
+ },
+ "SSP": {
+ "name": "Stërlina e Sudanit të Jugut",
+ "symbol": "SSP"
+ },
+ "EGP": {
+ "name": "Stërlina egjiptiane",
+ "symbol": "EGP"
+ },
+ "SDG": {
+ "name": "Stërlina sudaneze",
+ "symbol": "SDG"
+ },
+ "SVC": {
+ "name": "SVC",
+ "symbol": "SVC"
+ },
+ "ILS": {
+ "name": "Shekeli izrealit",
+ "symbol": "₪"
+ },
+ "TZS": {
+ "name": "Shilinga e Tanzanisë",
+ "symbol": "TZS"
+ },
+ "KES": {
+ "name": "Shilinga keniane",
+ "symbol": "KES"
+ },
+ "SOS": {
+ "name": "Shilinga somaleze",
+ "symbol": "SOS"
+ },
+ "UGX": {
+ "name": "Shilinga ugandeze",
+ "symbol": "UGX"
+ },
+ "BDT": {
+ "name": "Taka e Bangladeshit",
+ "symbol": "BDT"
+ },
+ "WST": {
+ "name": "Tala samoane",
+ "symbol": "WST"
+ },
+ "KZT": {
+ "name": "Tenga kazake",
+ "symbol": "KZT"
+ },
+ "MNT": {
+ "name": "Tugrika mongole",
+ "symbol": "MNT"
+ },
+ "MRO": {
+ "name": "Ugija mauritane",
+ "symbol": "MRO"
+ },
+ "KRW": {
+ "name": "Uoni koreano-jugor",
+ "symbol": "â‚©"
+ },
+ "KPW": {
+ "name": "Uoni koreano-verior",
+ "symbol": "KPW"
+ },
+ "VUV": {
+ "name": "Vatuja e Vanuatusë",
+ "symbol": "VUV"
+ },
+ "PLN": {
+ "name": "Zllota polake",
+ "symbol": "PLN"
+ },
+ "ZWL": {
+ "name": "ZWL",
+ "symbol": "ZWL"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/currency/sr-Cyrl-BA.json b/library/intl/resources/currency/sr-Cyrl-BA.json
new file mode 100644
index 000000000..1bc85c78b
--- /dev/null
+++ b/library/intl/resources/currency/sr-Cyrl-BA.json
@@ -0,0 +1,634 @@
+{
+ "XAF": {
+ "name": "CFA франак BEAC",
+ "symbol": "FCFA"
+ },
+ "XPF": {
+ "name": "CFP франак",
+ "symbol": "CFPF"
+ },
+ "ERN": {
+ "name": "EритрејÑка накфa",
+ "symbol": "ERN"
+ },
+ "KHR": {
+ "name": "KамбоџанÑки ријел",
+ "symbol": "KHR"
+ },
+ "TJS": {
+ "name": "TаџихиÑтанÑки Ñомон",
+ "symbol": "TJS"
+ },
+ "AFN": {
+ "name": "ÐвганиÑтанÑки авгани",
+ "symbol": "AFN"
+ },
+ "AZN": {
+ "name": "ÐзербејџанÑки манат",
+ "symbol": "AZN"
+ },
+ "ALL": {
+ "name": "ÐлбанÑки лек",
+ "symbol": "ALL"
+ },
+ "DZD": {
+ "name": "ÐлжирÑки динар",
+ "symbol": "DZD"
+ },
+ "USD": {
+ "name": "Ðмерички долар",
+ "symbol": "US$"
+ },
+ "AOA": {
+ "name": "ÐнголÑка кванза",
+ "symbol": "AOA"
+ },
+ "ARS": {
+ "name": "ÐргентинÑки пезоÑ",
+ "symbol": "ARS"
+ },
+ "AWG": {
+ "name": "ÐрубанÑки флорин",
+ "symbol": "AWG"
+ },
+ "AUD": {
+ "name": "ÐуÑтралијÑки долар",
+ "symbol": "AUD"
+ },
+ "BDT": {
+ "name": "Бангладешка така",
+ "symbol": "BDT"
+ },
+ "BBD": {
+ "name": "Барбадошки долар",
+ "symbol": "BBD"
+ },
+ "BSD": {
+ "name": "БахамÑки долар",
+ "symbol": "BSD"
+ },
+ "BHD": {
+ "name": "БахреинÑки динар",
+ "symbol": "BHD"
+ },
+ "BZD": {
+ "name": "БелиÑки долар",
+ "symbol": "BZD"
+ },
+ "BYR": {
+ "name": "БелоруÑка рубља",
+ "symbol": "[BYR]"
+ },
+ "BMD": {
+ "name": "БермудÑки долар",
+ "symbol": "BMD"
+ },
+ "BOB": {
+ "name": "БоливијÑки Боливиано",
+ "symbol": "BOB"
+ },
+ "BWP": {
+ "name": "БоцванÑка пула",
+ "symbol": "BWP"
+ },
+ "BRL": {
+ "name": "БразилÑки реал",
+ "symbol": "R$"
+ },
+ "GBP": {
+ "name": "БританÑка фунта Ñтерлинга",
+ "symbol": "£"
+ },
+ "BND": {
+ "name": "БрунејÑки долар",
+ "symbol": "BND"
+ },
+ "BGN": {
+ "name": "БугарÑки лев",
+ "symbol": "[BGN]"
+ },
+ "BIF": {
+ "name": "БурундÑки франак",
+ "symbol": "BIF"
+ },
+ "BTN": {
+ "name": "БутанÑки нгултрум",
+ "symbol": "BTN"
+ },
+ "VUV": {
+ "name": "ВануатÑки вату",
+ "symbol": "VUV"
+ },
+ "VEF": {
+ "name": "ВенецуеланÑки боливар",
+ "symbol": "VEF"
+ },
+ "VND": {
+ "name": "ВијетнамÑки донг",
+ "symbol": "VND"
+ },
+ "GMD": {
+ "name": "ГамбијÑки далаÑи",
+ "symbol": "GMD"
+ },
+ "GHS": {
+ "name": "ГанÑки Ñеди",
+ "symbol": "GHS"
+ },
+ "GYD": {
+ "name": "ГвајанÑки долар",
+ "symbol": "GYD"
+ },
+ "GTQ": {
+ "name": "ГватемалÑки кецал",
+ "symbol": "GTQ"
+ },
+ "GNF": {
+ "name": "ГвинејÑки франак",
+ "symbol": "GNF"
+ },
+ "GIP": {
+ "name": "ГибралтарÑка фунта",
+ "symbol": "GIP"
+ },
+ "GEL": {
+ "name": "ГрузијÑки лари",
+ "symbol": "GEL"
+ },
+ "DKK": {
+ "name": "ДанÑка круна",
+ "symbol": "DKK"
+ },
+ "DOP": {
+ "name": "ДоминиканÑки пезоÑ",
+ "symbol": "DOP"
+ },
+ "EUR": {
+ "name": "Евро",
+ "symbol": "€"
+ },
+ "EGP": {
+ "name": "ЕгипатÑка фунта",
+ "symbol": "EGP"
+ },
+ "ETB": {
+ "name": "ЕтиопијÑки бир",
+ "symbol": "ETB"
+ },
+ "ZMW": {
+ "name": "ЗамбијÑка квача",
+ "symbol": "ZMW"
+ },
+ "CVE": {
+ "name": "ЗеленортÑки еÑкудо",
+ "symbol": "CVE"
+ },
+ "ZWL": {
+ "name": "ЗимбабвеанÑки долар (2009)",
+ "symbol": "ZWL"
+ },
+ "ILS": {
+ "name": "ИзраелÑки нови шекел",
+ "symbol": "₪"
+ },
+ "INR": {
+ "name": "ИндијÑка рупија",
+ "symbol": "₹"
+ },
+ "IDR": {
+ "name": "ИндонежанÑка рупија",
+ "symbol": "IDR"
+ },
+ "IRR": {
+ "name": "ИранÑки риjал",
+ "symbol": "IRR"
+ },
+ "IQD": {
+ "name": "Ирачки динар",
+ "symbol": "IQD"
+ },
+ "ISK": {
+ "name": "ИÑландÑка круна",
+ "symbol": "ISK"
+ },
+ "XCD": {
+ "name": "ИÑточнокарипÑки долар",
+ "symbol": "EC$"
+ },
+ "JMD": {
+ "name": "ЈамајчанÑки долар",
+ "symbol": "JMD"
+ },
+ "JPY": {
+ "name": "ЈапанÑки јен",
+ "symbol": "Â¥"
+ },
+ "YER": {
+ "name": "ЈеменÑки риjал",
+ "symbol": "YER"
+ },
+ "AMD": {
+ "name": "ЈерменÑки драм",
+ "symbol": "AMD"
+ },
+ "JOD": {
+ "name": "ЈорданÑки динар",
+ "symbol": "JOD"
+ },
+ "ZAR": {
+ "name": "Јужно-афрички ранд",
+ "symbol": "ZAR"
+ },
+ "KRW": {
+ "name": "ЈужнокорејÑки Вон",
+ "symbol": "KRW"
+ },
+ "SSP": {
+ "name": "ЈужноÑуданÑка фунта",
+ "symbol": "SSP"
+ },
+ "KZT": {
+ "name": "КазахÑтанÑки тенге",
+ "symbol": "KZT"
+ },
+ "KYD": {
+ "name": "КајманÑки долар",
+ "symbol": "KYD"
+ },
+ "CAD": {
+ "name": "КанадÑки долар",
+ "symbol": "CA$"
+ },
+ "QAR": {
+ "name": "КатарÑки ријал",
+ "symbol": "QAR"
+ },
+ "KES": {
+ "name": "КенијÑки шилинг",
+ "symbol": "KES"
+ },
+ "CNY": {
+ "name": "КинеÑки јуан",
+ "symbol": "CNÂ¥"
+ },
+ "KGS": {
+ "name": "КиргиÑтанÑки Ñом",
+ "symbol": "KGS"
+ },
+ "COP": {
+ "name": "КолумбијÑки пезоÑ",
+ "symbol": "COP"
+ },
+ "KMF": {
+ "name": "КоморÑки франак",
+ "symbol": "KMF"
+ },
+ "BAM": {
+ "name": "Конвертибилна Марка",
+ "symbol": "КМ"
+ },
+ "CDF": {
+ "name": "КонгоанÑки франак",
+ "symbol": "CDF"
+ },
+ "CRC": {
+ "name": "КоÑтариканÑки колон",
+ "symbol": "CRC"
+ },
+ "CUC": {
+ "name": "КубанÑки конвертибилни пезоÑ",
+ "symbol": "CUC"
+ },
+ "CUP": {
+ "name": "КубанÑки пезоÑ",
+ "symbol": "CUP"
+ },
+ "KWD": {
+ "name": "КувајтÑки динар",
+ "symbol": "KWD"
+ },
+ "LAK": {
+ "name": "Лаошки кип",
+ "symbol": "LAK"
+ },
+ "LSL": {
+ "name": "ЛеÑото лоти",
+ "symbol": "LSL"
+ },
+ "LBP": {
+ "name": "ЛибанÑка фунта",
+ "symbol": "LBP"
+ },
+ "LRD": {
+ "name": "ЛиберијÑки долар",
+ "symbol": "LRD"
+ },
+ "LYD": {
+ "name": "ЛибијÑки динар",
+ "symbol": "LYD"
+ },
+ "LTL": {
+ "name": "ЛитванÑки литаÑ",
+ "symbol": "LTL"
+ },
+ "HUF": {
+ "name": "МађарÑка форинта",
+ "symbol": "HUF"
+ },
+ "MOP": {
+ "name": "Маканишка патака",
+ "symbol": "MOP"
+ },
+ "MKD": {
+ "name": "МакедонÑки денар",
+ "symbol": "MKD"
+ },
+ "MWK": {
+ "name": "МалавијÑка квача",
+ "symbol": "MWK"
+ },
+ "MGA": {
+ "name": "МалагаÑијÑки ариари",
+ "symbol": "MGA"
+ },
+ "MVR": {
+ "name": "МалдивÑка руфија",
+ "symbol": "MVR"
+ },
+ "MYR": {
+ "name": "МалезијÑки ринггит",
+ "symbol": "MYR"
+ },
+ "MAD": {
+ "name": "МароканÑки дирхам",
+ "symbol": "MAD"
+ },
+ "MRO": {
+ "name": "МауританијÑка oгија",
+ "symbol": "MRO"
+ },
+ "MUR": {
+ "name": "МаурицијÑка рупија",
+ "symbol": "MUR"
+ },
+ "MXN": {
+ "name": "МекÑички пезоÑ",
+ "symbol": "MX$"
+ },
+ "MMK": {
+ "name": "МјанмарÑки кјат",
+ "symbol": "MMK"
+ },
+ "MZN": {
+ "name": "МозамбијÑки метикал",
+ "symbol": "MZN"
+ },
+ "MDL": {
+ "name": "МолдавÑки леј",
+ "symbol": "MDL"
+ },
+ "MNT": {
+ "name": "МонголÑки тугрик",
+ "symbol": "MNT"
+ },
+ "NAD": {
+ "name": "ÐамибијÑки долар",
+ "symbol": "NAD"
+ },
+ "NPR": {
+ "name": "ÐепалÑкa рупиja",
+ "symbol": "NPR"
+ },
+ "NGN": {
+ "name": "ÐигеријÑка наира",
+ "symbol": "NGN"
+ },
+ "NIO": {
+ "name": "ÐикарагванÑка златна кордоба",
+ "symbol": "NIO"
+ },
+ "TWD": {
+ "name": "Ðови тајванÑки долар",
+ "symbol": "NT$"
+ },
+ "NZD": {
+ "name": "ÐовозеландÑки долар",
+ "symbol": "NZD"
+ },
+ "NOK": {
+ "name": "Ðорвешка круна",
+ "symbol": "NOK"
+ },
+ "OMR": {
+ "name": "ОманÑки ријал",
+ "symbol": "OMR"
+ },
+ "PKR": {
+ "name": "ПакиÑтанÑкa рупиja",
+ "symbol": "PKR"
+ },
+ "PAB": {
+ "name": "ПанамÑка балбоа",
+ "symbol": "PAB"
+ },
+ "PGK": {
+ "name": "ПапуанÑка кина",
+ "symbol": "PGK"
+ },
+ "PYG": {
+ "name": "ПарагвајÑки гварани",
+ "symbol": "PYG"
+ },
+ "PEN": {
+ "name": "ПеруанÑки нуево Ñол",
+ "symbol": "PEN"
+ },
+ "PLN": {
+ "name": "ПољÑки злот",
+ "symbol": "PLN"
+ },
+ "RWF": {
+ "name": "РуандÑки франак",
+ "symbol": "RWF"
+ },
+ "RON": {
+ "name": "РумунÑки леј (1952–2006)",
+ "symbol": "RON"
+ },
+ "RUB": {
+ "name": "РуÑка рубља",
+ "symbol": "RUB"
+ },
+ "SVC": {
+ "name": "СалвадорÑки колон",
+ "symbol": "SVC"
+ },
+ "WST": {
+ "name": "СамоанÑка тала",
+ "symbol": "WST"
+ },
+ "STD": {
+ "name": "Сао Томе и Принципе добра",
+ "symbol": "STD"
+ },
+ "SAR": {
+ "name": "СаудијÑки ријал",
+ "symbol": "SAR"
+ },
+ "SHP": {
+ "name": "Св. јеленÑка фунта",
+ "symbol": "SHP"
+ },
+ "SZL": {
+ "name": "Свази лилангени",
+ "symbol": "SZL"
+ },
+ "KPW": {
+ "name": "СевернокорејÑки вон",
+ "symbol": "KPW"
+ },
+ "SCR": {
+ "name": "СејшелÑка рупија",
+ "symbol": "SCR"
+ },
+ "SLL": {
+ "name": "Сијера-леоншки леоне",
+ "symbol": "SLL"
+ },
+ "SGD": {
+ "name": "СингапурÑки долар",
+ "symbol": "SGD"
+ },
+ "SYP": {
+ "name": "СиријÑка фунта",
+ "symbol": "SYP"
+ },
+ "SBD": {
+ "name": "СоломонÑки долар",
+ "symbol": "SBD"
+ },
+ "SOS": {
+ "name": "СомалијÑки шилинг",
+ "symbol": "SOS"
+ },
+ "RSD": {
+ "name": "СрпÑки динар",
+ "symbol": "RSD"
+ },
+ "SDG": {
+ "name": "СуданÑка фунта",
+ "symbol": "SDG"
+ },
+ "SRD": {
+ "name": "СуринамÑки долар",
+ "symbol": "SRD"
+ },
+ "THB": {
+ "name": "ТајландÑки бат",
+ "symbol": "THB"
+ },
+ "TZS": {
+ "name": "ТанзанијÑки шилинг",
+ "symbol": "TZS"
+ },
+ "TOP": {
+ "name": "Тонгоншка Панга",
+ "symbol": "TOP"
+ },
+ "TTD": {
+ "name": "Тринидад-тобагошки долар",
+ "symbol": "TTD"
+ },
+ "TND": {
+ "name": "ТуниÑки динар",
+ "symbol": "TND"
+ },
+ "TMT": {
+ "name": "ТуркмениÑтанÑки манат",
+ "symbol": "TMT"
+ },
+ "TRY": {
+ "name": "ТурÑка лира",
+ "symbol": "TRY"
+ },
+ "AED": {
+ "name": "УÐЕ дирхам",
+ "symbol": "AED"
+ },
+ "UGX": {
+ "name": "УгандÑки шилинг",
+ "symbol": "UGX"
+ },
+ "UZS": {
+ "name": "УзбекиÑтанÑки Ñом",
+ "symbol": "UZS"
+ },
+ "UAH": {
+ "name": "УкрајинÑка гривна",
+ "symbol": "UAH"
+ },
+ "UYU": {
+ "name": "УругвајÑки пезоÑ",
+ "symbol": "UYU"
+ },
+ "PHP": {
+ "name": "ФилипинÑки пезоÑ",
+ "symbol": "PHP"
+ },
+ "FJD": {
+ "name": "ФиџијÑки долар",
+ "symbol": "FJD"
+ },
+ "FKP": {
+ "name": "ФокландÑка фунта",
+ "symbol": "FKP"
+ },
+ "HTG": {
+ "name": "ХаићанÑки гурд",
+ "symbol": "HTG"
+ },
+ "ANG": {
+ "name": "ХоландÑкоантилÑки гулден",
+ "symbol": "ANG"
+ },
+ "HKD": {
+ "name": "Хонгконшки долар",
+ "symbol": "HK$"
+ },
+ "HNL": {
+ "name": "Хондурашка лемпира",
+ "symbol": "HNL"
+ },
+ "HRK": {
+ "name": "ХрватÑка куна",
+ "symbol": "HRK"
+ },
+ "XOF": {
+ "name": "ЦФРфранак БЦЕÐО",
+ "symbol": "CFA"
+ },
+ "CZK": {
+ "name": "Чешка круна",
+ "symbol": "CZK"
+ },
+ "CLP": {
+ "name": "ЧилеанÑки пезоÑ",
+ "symbol": "CLP"
+ },
+ "DJF": {
+ "name": "ÐибутанÑки франак",
+ "symbol": "DJF"
+ },
+ "CHF": {
+ "name": "ШвајцарÑки франак",
+ "symbol": "CHF"
+ },
+ "SEK": {
+ "name": "ШведÑка круна",
+ "symbol": "SEK"
+ },
+ "LKR": {
+ "name": "ШриланканÑкa рупиja",
+ "symbol": "LKR"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/currency/sr-Latn-BA.json b/library/intl/resources/currency/sr-Latn-BA.json
new file mode 100644
index 000000000..fe30ad268
--- /dev/null
+++ b/library/intl/resources/currency/sr-Latn-BA.json
@@ -0,0 +1,634 @@
+{
+ "ALL": {
+ "name": "Albanski lek",
+ "symbol": "ALL"
+ },
+ "DZD": {
+ "name": "Alžirski dinar",
+ "symbol": "DZD"
+ },
+ "USD": {
+ "name": "AmeriÄki dolar",
+ "symbol": "US$"
+ },
+ "AOA": {
+ "name": "Angolska kvanza",
+ "symbol": "AOA"
+ },
+ "ARS": {
+ "name": "Argentinski pezos",
+ "symbol": "ARS"
+ },
+ "AWG": {
+ "name": "Arubanski florin",
+ "symbol": "AWG"
+ },
+ "AUD": {
+ "name": "Australijski dolar",
+ "symbol": "AUD"
+ },
+ "AFN": {
+ "name": "Avganistanski avgani",
+ "symbol": "AFN"
+ },
+ "AZN": {
+ "name": "Azerbejdžanski manat",
+ "symbol": "AZN"
+ },
+ "BSD": {
+ "name": "Bahamski dolar",
+ "symbol": "BSD"
+ },
+ "BHD": {
+ "name": "Bahreinski dinar",
+ "symbol": "BHD"
+ },
+ "BDT": {
+ "name": "Bangladeška taka",
+ "symbol": "BDT"
+ },
+ "BBD": {
+ "name": "Barbadoški dolar",
+ "symbol": "BBD"
+ },
+ "BZD": {
+ "name": "Beliski dolar",
+ "symbol": "BZD"
+ },
+ "BYR": {
+ "name": "Beloruska rublja",
+ "symbol": "[BYR]"
+ },
+ "BMD": {
+ "name": "Bermudski dolar",
+ "symbol": "BMD"
+ },
+ "BWP": {
+ "name": "Bocvanska pula",
+ "symbol": "BWP"
+ },
+ "BOB": {
+ "name": "Bolivijski Boliviano",
+ "symbol": "BOB"
+ },
+ "BRL": {
+ "name": "Brazilski real",
+ "symbol": "R$"
+ },
+ "GBP": {
+ "name": "Britanska funta sterlinga",
+ "symbol": "£"
+ },
+ "BND": {
+ "name": "Brunejski dolar",
+ "symbol": "BND"
+ },
+ "BGN": {
+ "name": "Bugarski lev",
+ "symbol": "[BGN]"
+ },
+ "BIF": {
+ "name": "Burundski franak",
+ "symbol": "BIF"
+ },
+ "BTN": {
+ "name": "Butanski ngultrum",
+ "symbol": "BTN"
+ },
+ "XOF": {
+ "name": "CFA franak BCEAO",
+ "symbol": "CFA"
+ },
+ "XAF": {
+ "name": "CFA franak BEAC",
+ "symbol": "FCFA"
+ },
+ "XPF": {
+ "name": "CFP franak",
+ "symbol": "CFPF"
+ },
+ "CZK": {
+ "name": "Češka kruna",
+ "symbol": "CZK"
+ },
+ "CLP": {
+ "name": "ÄŒileanski pezos",
+ "symbol": "CLP"
+ },
+ "DKK": {
+ "name": "Danska kruna",
+ "symbol": "DKK"
+ },
+ "DOP": {
+ "name": "Dominikanski pezos",
+ "symbol": "DOP"
+ },
+ "DJF": {
+ "name": "Džibutanski franak",
+ "symbol": "DJF"
+ },
+ "EGP": {
+ "name": "Egipatska funta",
+ "symbol": "EGP"
+ },
+ "ERN": {
+ "name": "Eritrejska nakfa",
+ "symbol": "ERN"
+ },
+ "ETB": {
+ "name": "Etiopijski bir",
+ "symbol": "ETB"
+ },
+ "EUR": {
+ "name": "Evro",
+ "symbol": "€"
+ },
+ "FJD": {
+ "name": "Fidžijski dolar",
+ "symbol": "FJD"
+ },
+ "PHP": {
+ "name": "Filipinski pezos",
+ "symbol": "PHP"
+ },
+ "FKP": {
+ "name": "Foklandska funta",
+ "symbol": "FKP"
+ },
+ "GMD": {
+ "name": "Gambijski dalasi",
+ "symbol": "GMD"
+ },
+ "GHS": {
+ "name": "Ganski sedi",
+ "symbol": "GHS"
+ },
+ "GIP": {
+ "name": "Gibraltarska funta",
+ "symbol": "GIP"
+ },
+ "GEL": {
+ "name": "Gruzijski lari",
+ "symbol": "GEL"
+ },
+ "GYD": {
+ "name": "Gvajanski dolar",
+ "symbol": "GYD"
+ },
+ "GTQ": {
+ "name": "Gvatemalski kecal",
+ "symbol": "GTQ"
+ },
+ "GNF": {
+ "name": "Gvinejski franak",
+ "symbol": "GNF"
+ },
+ "HTG": {
+ "name": "Haićanski gurd",
+ "symbol": "HTG"
+ },
+ "ANG": {
+ "name": "Holandskoantilski gulden",
+ "symbol": "ANG"
+ },
+ "HNL": {
+ "name": "Honduraška lempira",
+ "symbol": "HNL"
+ },
+ "HKD": {
+ "name": "Hongkonški dolar",
+ "symbol": "HK$"
+ },
+ "HRK": {
+ "name": "Hrvatska kuna",
+ "symbol": "HRK"
+ },
+ "INR": {
+ "name": "Indijska rupija",
+ "symbol": "₹"
+ },
+ "IDR": {
+ "name": "Indonežanska rupija",
+ "symbol": "IDR"
+ },
+ "IQD": {
+ "name": "IraÄki dinar",
+ "symbol": "IQD"
+ },
+ "IRR": {
+ "name": "Iranski rijal",
+ "symbol": "IRR"
+ },
+ "ISK": {
+ "name": "Islandska kruna",
+ "symbol": "ISK"
+ },
+ "XCD": {
+ "name": "IstoÄnokaripski dolar",
+ "symbol": "EC$"
+ },
+ "ILS": {
+ "name": "Izraelski novi Å¡ekel",
+ "symbol": "₪"
+ },
+ "JMD": {
+ "name": "JamajÄanski dolar",
+ "symbol": "JMD"
+ },
+ "JPY": {
+ "name": "Japanski jen",
+ "symbol": "Â¥"
+ },
+ "YER": {
+ "name": "Jemenski rijal",
+ "symbol": "YER"
+ },
+ "AMD": {
+ "name": "Jermenski dram",
+ "symbol": "AMD"
+ },
+ "JOD": {
+ "name": "Jordanski dinar",
+ "symbol": "JOD"
+ },
+ "ZAR": {
+ "name": "Južno-afriÄki rand",
+ "symbol": "ZAR"
+ },
+ "KRW": {
+ "name": "Južnokorejski Von",
+ "symbol": "KRW"
+ },
+ "SSP": {
+ "name": "Južnosudanska funta",
+ "symbol": "SSP"
+ },
+ "KYD": {
+ "name": "Kajmanski dolar",
+ "symbol": "KYD"
+ },
+ "KHR": {
+ "name": "Kambodžanski rijel",
+ "symbol": "KHR"
+ },
+ "CAD": {
+ "name": "Kanadski dolar",
+ "symbol": "CA$"
+ },
+ "QAR": {
+ "name": "Katarski rijal",
+ "symbol": "QAR"
+ },
+ "KZT": {
+ "name": "Kazahstanski tenge",
+ "symbol": "KZT"
+ },
+ "KES": {
+ "name": "Kenijski Å¡iling",
+ "symbol": "KES"
+ },
+ "CNY": {
+ "name": "Kineski juan",
+ "symbol": "CNÂ¥"
+ },
+ "KGS": {
+ "name": "Kirgistanski som",
+ "symbol": "KGS"
+ },
+ "COP": {
+ "name": "Kolumbijski pezos",
+ "symbol": "COP"
+ },
+ "KMF": {
+ "name": "Komorski franak",
+ "symbol": "KMF"
+ },
+ "CDF": {
+ "name": "Kongoanski franak",
+ "symbol": "CDF"
+ },
+ "BAM": {
+ "name": "Konvertibilna Marka",
+ "symbol": "KM"
+ },
+ "CRC": {
+ "name": "Kostarikanski kolon",
+ "symbol": "CRC"
+ },
+ "CUC": {
+ "name": "Kubanski konvertibilni pezos",
+ "symbol": "CUC"
+ },
+ "CUP": {
+ "name": "Kubanski pezos",
+ "symbol": "CUP"
+ },
+ "KWD": {
+ "name": "Kuvajtski dinar",
+ "symbol": "KWD"
+ },
+ "LAK": {
+ "name": "Laoški kip",
+ "symbol": "LAK"
+ },
+ "LSL": {
+ "name": "Lesoto loti",
+ "symbol": "LSL"
+ },
+ "LBP": {
+ "name": "Libanska funta",
+ "symbol": "LBP"
+ },
+ "LRD": {
+ "name": "Liberijski dolar",
+ "symbol": "LRD"
+ },
+ "LYD": {
+ "name": "Libijski dinar",
+ "symbol": "LYD"
+ },
+ "LTL": {
+ "name": "Litvanski litas",
+ "symbol": "LTL"
+ },
+ "HUF": {
+ "name": "Mađarska forinta",
+ "symbol": "HUF"
+ },
+ "MOP": {
+ "name": "Makaniška pataka",
+ "symbol": "MOP"
+ },
+ "MKD": {
+ "name": "Makedonski denar",
+ "symbol": "MKD"
+ },
+ "MGA": {
+ "name": "Malagasijski ariari",
+ "symbol": "MGA"
+ },
+ "MWK": {
+ "name": "Malavijska kvaÄa",
+ "symbol": "MWK"
+ },
+ "MVR": {
+ "name": "Maldivska rufija",
+ "symbol": "MVR"
+ },
+ "MYR": {
+ "name": "Malezijski ringgit",
+ "symbol": "MYR"
+ },
+ "MAD": {
+ "name": "Marokanski dirham",
+ "symbol": "MAD"
+ },
+ "MUR": {
+ "name": "Mauricijska rupija",
+ "symbol": "MUR"
+ },
+ "MRO": {
+ "name": "Mauritanijska ogija",
+ "symbol": "MRO"
+ },
+ "MXN": {
+ "name": "MeksiÄki pezos",
+ "symbol": "MX$"
+ },
+ "MMK": {
+ "name": "Mjanmarski kjat",
+ "symbol": "MMK"
+ },
+ "MDL": {
+ "name": "Moldavski lej",
+ "symbol": "MDL"
+ },
+ "MNT": {
+ "name": "Mongolski tugrik",
+ "symbol": "MNT"
+ },
+ "MZN": {
+ "name": "Mozambijski metikal",
+ "symbol": "MZN"
+ },
+ "NAD": {
+ "name": "Namibijski dolar",
+ "symbol": "NAD"
+ },
+ "NPR": {
+ "name": "Nepalska rupija",
+ "symbol": "NPR"
+ },
+ "NGN": {
+ "name": "Nigerijska naira",
+ "symbol": "NGN"
+ },
+ "NIO": {
+ "name": "Nikaragvanska zlatna kordoba",
+ "symbol": "NIO"
+ },
+ "NOK": {
+ "name": "Norveška kruna",
+ "symbol": "NOK"
+ },
+ "TWD": {
+ "name": "Novi tajvanski dolar",
+ "symbol": "NT$"
+ },
+ "NZD": {
+ "name": "Novozelandski dolar",
+ "symbol": "NZD"
+ },
+ "OMR": {
+ "name": "Omanski rijal",
+ "symbol": "OMR"
+ },
+ "PKR": {
+ "name": "Pakistanska rupija",
+ "symbol": "PKR"
+ },
+ "PAB": {
+ "name": "Panamska balboa",
+ "symbol": "PAB"
+ },
+ "PGK": {
+ "name": "Papuanska kina",
+ "symbol": "PGK"
+ },
+ "PYG": {
+ "name": "Paragvajski gvarani",
+ "symbol": "PYG"
+ },
+ "PEN": {
+ "name": "Peruanski nuevo sol",
+ "symbol": "PEN"
+ },
+ "PLN": {
+ "name": "Poljski zlot",
+ "symbol": "PLN"
+ },
+ "RWF": {
+ "name": "Ruandski franak",
+ "symbol": "RWF"
+ },
+ "RON": {
+ "name": "Rumunski lej (1952–2006)",
+ "symbol": "RON"
+ },
+ "RUB": {
+ "name": "Ruska rublja",
+ "symbol": "RUB"
+ },
+ "SVC": {
+ "name": "Salvadorski kolon",
+ "symbol": "SVC"
+ },
+ "WST": {
+ "name": "Samoanska tala",
+ "symbol": "WST"
+ },
+ "STD": {
+ "name": "Sao Tome i Principe dobra",
+ "symbol": "STD"
+ },
+ "SAR": {
+ "name": "Saudijski rijal",
+ "symbol": "SAR"
+ },
+ "SCR": {
+ "name": "Sejšelska rupija",
+ "symbol": "SCR"
+ },
+ "KPW": {
+ "name": "Severnokorejski von",
+ "symbol": "KPW"
+ },
+ "SLL": {
+ "name": "Sijera-leonški leone",
+ "symbol": "SLL"
+ },
+ "SGD": {
+ "name": "Singapurski dolar",
+ "symbol": "SGD"
+ },
+ "SYP": {
+ "name": "Sirijska funta",
+ "symbol": "SYP"
+ },
+ "SBD": {
+ "name": "Solomonski dolar",
+ "symbol": "SBD"
+ },
+ "SOS": {
+ "name": "Somalijski Å¡iling",
+ "symbol": "SOS"
+ },
+ "RSD": {
+ "name": "Srpski dinar",
+ "symbol": "RSD"
+ },
+ "SDG": {
+ "name": "Sudanska funta",
+ "symbol": "SDG"
+ },
+ "SRD": {
+ "name": "Surinamski dolar",
+ "symbol": "SRD"
+ },
+ "SHP": {
+ "name": "Sv. jelenska funta",
+ "symbol": "SHP"
+ },
+ "SZL": {
+ "name": "Svazi lilangeni",
+ "symbol": "SZL"
+ },
+ "LKR": {
+ "name": "Å rilankanska rupija",
+ "symbol": "LKR"
+ },
+ "CHF": {
+ "name": "Å vajcarski franak",
+ "symbol": "CHF"
+ },
+ "SEK": {
+ "name": "Å vedska kruna",
+ "symbol": "SEK"
+ },
+ "TJS": {
+ "name": "Tadžihistanski somon",
+ "symbol": "TJS"
+ },
+ "THB": {
+ "name": "Tajlandski bat",
+ "symbol": "THB"
+ },
+ "TZS": {
+ "name": "Tanzanijski Å¡iling",
+ "symbol": "TZS"
+ },
+ "TOP": {
+ "name": "Tongonška Panga",
+ "symbol": "TOP"
+ },
+ "TTD": {
+ "name": "Trinidad-tobagoški dolar",
+ "symbol": "TTD"
+ },
+ "TND": {
+ "name": "Tuniski dinar",
+ "symbol": "TND"
+ },
+ "TMT": {
+ "name": "Turkmenistanski manat",
+ "symbol": "TMT"
+ },
+ "TRY": {
+ "name": "Turska lira",
+ "symbol": "TRY"
+ },
+ "AED": {
+ "name": "UAE dirham",
+ "symbol": "AED"
+ },
+ "UGX": {
+ "name": "Ugandski Å¡iling",
+ "symbol": "UGX"
+ },
+ "UAH": {
+ "name": "Ukrajinska grivna",
+ "symbol": "UAH"
+ },
+ "UYU": {
+ "name": "Urugvajski pezos",
+ "symbol": "UYU"
+ },
+ "UZS": {
+ "name": "Uzbekistanski som",
+ "symbol": "UZS"
+ },
+ "VUV": {
+ "name": "Vanuatski vatu",
+ "symbol": "VUV"
+ },
+ "VEF": {
+ "name": "Venecuelanski bolivar",
+ "symbol": "VEF"
+ },
+ "VND": {
+ "name": "Vijetnamski dong",
+ "symbol": "VND"
+ },
+ "ZMW": {
+ "name": "Zambijska kvaÄa",
+ "symbol": "ZMW"
+ },
+ "CVE": {
+ "name": "Zelenortski eskudo",
+ "symbol": "CVE"
+ },
+ "ZWL": {
+ "name": "Zimbabveanski dolar (2009)",
+ "symbol": "ZWL"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/currency/sr-Latn.json b/library/intl/resources/currency/sr-Latn.json
new file mode 100644
index 000000000..b62497a07
--- /dev/null
+++ b/library/intl/resources/currency/sr-Latn.json
@@ -0,0 +1,634 @@
+{
+ "ALL": {
+ "name": "Albanski lek",
+ "symbol": "ALL"
+ },
+ "DZD": {
+ "name": "Alžirski dinar",
+ "symbol": "DZD"
+ },
+ "USD": {
+ "name": "AmeriÄki dolar",
+ "symbol": "US$"
+ },
+ "AOA": {
+ "name": "Angolska kvanza",
+ "symbol": "AOA"
+ },
+ "ARS": {
+ "name": "Argentinski pezos",
+ "symbol": "ARS"
+ },
+ "AWG": {
+ "name": "Arubanski florin",
+ "symbol": "AWG"
+ },
+ "AUD": {
+ "name": "Australijski dolar",
+ "symbol": "AUD"
+ },
+ "AFN": {
+ "name": "Avganistanski avgani",
+ "symbol": "AFN"
+ },
+ "AZN": {
+ "name": "Azerbejdžanski manat",
+ "symbol": "AZN"
+ },
+ "BSD": {
+ "name": "Bahamski dolar",
+ "symbol": "BSD"
+ },
+ "BHD": {
+ "name": "Bahreinski dinar",
+ "symbol": "BHD"
+ },
+ "BDT": {
+ "name": "Bangladeška taka",
+ "symbol": "BDT"
+ },
+ "BBD": {
+ "name": "Barbadoški dolar",
+ "symbol": "BBD"
+ },
+ "BZD": {
+ "name": "Beliski dolar",
+ "symbol": "BZD"
+ },
+ "BYR": {
+ "name": "Beloruska rublja",
+ "symbol": "[BYR]"
+ },
+ "BMD": {
+ "name": "Bermudski dolar",
+ "symbol": "BMD"
+ },
+ "BWP": {
+ "name": "Bocvanska pula",
+ "symbol": "BWP"
+ },
+ "BOB": {
+ "name": "Bolivijski Boliviano",
+ "symbol": "BOB"
+ },
+ "BAM": {
+ "name": "Bosansko-hercegovaÄka konvertibilna marka",
+ "symbol": "KM"
+ },
+ "BRL": {
+ "name": "Brazilski real",
+ "symbol": "R$"
+ },
+ "GBP": {
+ "name": "Britanska funta sterlinga",
+ "symbol": "£"
+ },
+ "BND": {
+ "name": "Brunejski dolar",
+ "symbol": "BND"
+ },
+ "BGN": {
+ "name": "Bugarski lev",
+ "symbol": "[BGN]"
+ },
+ "BIF": {
+ "name": "Burundski franak",
+ "symbol": "BIF"
+ },
+ "BTN": {
+ "name": "Butanski ngultrum",
+ "symbol": "BTN"
+ },
+ "XOF": {
+ "name": "CFA franak BCEAO",
+ "symbol": "CFA"
+ },
+ "XAF": {
+ "name": "CFA franak BEAC",
+ "symbol": "FCFA"
+ },
+ "XPF": {
+ "name": "CFP franak",
+ "symbol": "CFPF"
+ },
+ "CZK": {
+ "name": "Češka kruna",
+ "symbol": "CZK"
+ },
+ "CLP": {
+ "name": "ÄŒileanski pezos",
+ "symbol": "CLP"
+ },
+ "DKK": {
+ "name": "Danska kruna",
+ "symbol": "DKK"
+ },
+ "DOP": {
+ "name": "Dominikanski pezos",
+ "symbol": "DOP"
+ },
+ "DJF": {
+ "name": "Džibutanski franak",
+ "symbol": "DJF"
+ },
+ "EGP": {
+ "name": "Egipatska funta",
+ "symbol": "EGP"
+ },
+ "ERN": {
+ "name": "Eritrejska nakfa",
+ "symbol": "ERN"
+ },
+ "ETB": {
+ "name": "Etiopijski bir",
+ "symbol": "ETB"
+ },
+ "EUR": {
+ "name": "Evro",
+ "symbol": "€"
+ },
+ "FJD": {
+ "name": "Fidžijski dolar",
+ "symbol": "FJD"
+ },
+ "PHP": {
+ "name": "Filipinski pezos",
+ "symbol": "PHP"
+ },
+ "FKP": {
+ "name": "Foklandska funta",
+ "symbol": "FKP"
+ },
+ "GMD": {
+ "name": "Gambijski dalasi",
+ "symbol": "GMD"
+ },
+ "GHS": {
+ "name": "Ganski sedi",
+ "symbol": "GHS"
+ },
+ "GIP": {
+ "name": "Gibraltarska funta",
+ "symbol": "GIP"
+ },
+ "GEL": {
+ "name": "Gruzijski lari",
+ "symbol": "GEL"
+ },
+ "GYD": {
+ "name": "Gvajanski dolar",
+ "symbol": "GYD"
+ },
+ "GTQ": {
+ "name": "Gvatemalski kecal",
+ "symbol": "GTQ"
+ },
+ "GNF": {
+ "name": "Gvinejski franak",
+ "symbol": "GNF"
+ },
+ "HTG": {
+ "name": "Haićanski gurd",
+ "symbol": "HTG"
+ },
+ "ANG": {
+ "name": "Holandskoantilski gulden",
+ "symbol": "ANG"
+ },
+ "HNL": {
+ "name": "Honduraška lempira",
+ "symbol": "HNL"
+ },
+ "HKD": {
+ "name": "Hongkonški dolar",
+ "symbol": "HK$"
+ },
+ "HRK": {
+ "name": "Hrvatska kuna",
+ "symbol": "HRK"
+ },
+ "INR": {
+ "name": "Indijska rupija",
+ "symbol": "₹"
+ },
+ "IDR": {
+ "name": "Indonežanska rupija",
+ "symbol": "IDR"
+ },
+ "IQD": {
+ "name": "IraÄki dinar",
+ "symbol": "IQD"
+ },
+ "IRR": {
+ "name": "Iranski rijal",
+ "symbol": "IRR"
+ },
+ "ISK": {
+ "name": "Islandska kruna",
+ "symbol": "ISK"
+ },
+ "XCD": {
+ "name": "IstoÄnokaripski dolar",
+ "symbol": "EC$"
+ },
+ "ILS": {
+ "name": "Izraelski novi Å¡ekel",
+ "symbol": "₪"
+ },
+ "JMD": {
+ "name": "JamajÄanski dolar",
+ "symbol": "JMD"
+ },
+ "JPY": {
+ "name": "Japanski jen",
+ "symbol": "Â¥"
+ },
+ "YER": {
+ "name": "Jemenski rijal",
+ "symbol": "YER"
+ },
+ "AMD": {
+ "name": "Jermenski dram",
+ "symbol": "AMD"
+ },
+ "JOD": {
+ "name": "Jordanski dinar",
+ "symbol": "JOD"
+ },
+ "ZAR": {
+ "name": "Južno-afriÄki rand",
+ "symbol": "ZAR"
+ },
+ "KRW": {
+ "name": "Južnokorejski Von",
+ "symbol": "KRW"
+ },
+ "SSP": {
+ "name": "Južnosudanska funta",
+ "symbol": "SSP"
+ },
+ "KYD": {
+ "name": "Kajmanski dolar",
+ "symbol": "KYD"
+ },
+ "KHR": {
+ "name": "Kambodžanski rijel",
+ "symbol": "KHR"
+ },
+ "CAD": {
+ "name": "Kanadski dolar",
+ "symbol": "CA$"
+ },
+ "QAR": {
+ "name": "Katarski rijal",
+ "symbol": "QAR"
+ },
+ "KZT": {
+ "name": "Kazahstanski tenge",
+ "symbol": "KZT"
+ },
+ "KES": {
+ "name": "Kenijski Å¡iling",
+ "symbol": "KES"
+ },
+ "CNY": {
+ "name": "Kineski juan",
+ "symbol": "CNÂ¥"
+ },
+ "KGS": {
+ "name": "Kirgistanski som",
+ "symbol": "KGS"
+ },
+ "COP": {
+ "name": "Kolumbijski pezos",
+ "symbol": "COP"
+ },
+ "KMF": {
+ "name": "Komorski franak",
+ "symbol": "KMF"
+ },
+ "CDF": {
+ "name": "Kongoanski franak",
+ "symbol": "CDF"
+ },
+ "CRC": {
+ "name": "Kostarikanski kolon",
+ "symbol": "CRC"
+ },
+ "CUC": {
+ "name": "Kubanski konvertibilni pezos",
+ "symbol": "CUC"
+ },
+ "CUP": {
+ "name": "Kubanski pezos",
+ "symbol": "CUP"
+ },
+ "KWD": {
+ "name": "Kuvajtski dinar",
+ "symbol": "KWD"
+ },
+ "LAK": {
+ "name": "Laoški kip",
+ "symbol": "LAK"
+ },
+ "LSL": {
+ "name": "Lesoto loti",
+ "symbol": "LSL"
+ },
+ "LBP": {
+ "name": "Libanska funta",
+ "symbol": "LBP"
+ },
+ "LRD": {
+ "name": "Liberijski dolar",
+ "symbol": "LRD"
+ },
+ "LYD": {
+ "name": "Libijski dinar",
+ "symbol": "LYD"
+ },
+ "LTL": {
+ "name": "Litvanski litas",
+ "symbol": "LTL"
+ },
+ "HUF": {
+ "name": "Mađarska forinta",
+ "symbol": "HUF"
+ },
+ "MOP": {
+ "name": "Makaniška pataka",
+ "symbol": "MOP"
+ },
+ "MKD": {
+ "name": "Makedonski denar",
+ "symbol": "MKD"
+ },
+ "MGA": {
+ "name": "Malagasijski ariari",
+ "symbol": "MGA"
+ },
+ "MWK": {
+ "name": "Malavijska kvaÄa",
+ "symbol": "MWK"
+ },
+ "MVR": {
+ "name": "Maldivska rufija",
+ "symbol": "MVR"
+ },
+ "MYR": {
+ "name": "Malezijski ringgit",
+ "symbol": "MYR"
+ },
+ "MAD": {
+ "name": "Marokanski dirham",
+ "symbol": "MAD"
+ },
+ "MUR": {
+ "name": "Mauricijska rupija",
+ "symbol": "MUR"
+ },
+ "MRO": {
+ "name": "Mauritanijska ogija",
+ "symbol": "MRO"
+ },
+ "MXN": {
+ "name": "MeksiÄki pezos",
+ "symbol": "MX$"
+ },
+ "MMK": {
+ "name": "Mjanmarski kjat",
+ "symbol": "MMK"
+ },
+ "MDL": {
+ "name": "Moldavski lej",
+ "symbol": "MDL"
+ },
+ "MNT": {
+ "name": "Mongolski tugrik",
+ "symbol": "MNT"
+ },
+ "MZN": {
+ "name": "Mozambijski metikal",
+ "symbol": "MZN"
+ },
+ "NAD": {
+ "name": "Namibijski dolar",
+ "symbol": "NAD"
+ },
+ "NPR": {
+ "name": "Nepalska rupija",
+ "symbol": "NPR"
+ },
+ "NGN": {
+ "name": "Nigerijska naira",
+ "symbol": "NGN"
+ },
+ "NIO": {
+ "name": "Nikaragvanska zlatna kordoba",
+ "symbol": "NIO"
+ },
+ "NOK": {
+ "name": "Norveška kruna",
+ "symbol": "NOK"
+ },
+ "TWD": {
+ "name": "Novi tajvanski dolar",
+ "symbol": "NT$"
+ },
+ "NZD": {
+ "name": "Novozelandski dolar",
+ "symbol": "NZD"
+ },
+ "OMR": {
+ "name": "Omanski rijal",
+ "symbol": "OMR"
+ },
+ "PKR": {
+ "name": "Pakistanska rupija",
+ "symbol": "PKR"
+ },
+ "PAB": {
+ "name": "Panamska balboa",
+ "symbol": "PAB"
+ },
+ "PGK": {
+ "name": "Papuanska kina",
+ "symbol": "PGK"
+ },
+ "PYG": {
+ "name": "Paragvajski gvarani",
+ "symbol": "PYG"
+ },
+ "PEN": {
+ "name": "Peruanski nuevo sol",
+ "symbol": "PEN"
+ },
+ "PLN": {
+ "name": "Poljski zlot",
+ "symbol": "PLN"
+ },
+ "RWF": {
+ "name": "Ruandski franak",
+ "symbol": "RWF"
+ },
+ "RON": {
+ "name": "Rumunski lej (1952–2006)",
+ "symbol": "RON"
+ },
+ "RUB": {
+ "name": "Ruska rublja",
+ "symbol": "RUB"
+ },
+ "SVC": {
+ "name": "Salvadorski kolon",
+ "symbol": "SVC"
+ },
+ "WST": {
+ "name": "Samoanska tala",
+ "symbol": "WST"
+ },
+ "STD": {
+ "name": "Sao Tome i Principe dobra",
+ "symbol": "STD"
+ },
+ "SAR": {
+ "name": "Saudijski rijal",
+ "symbol": "SAR"
+ },
+ "SCR": {
+ "name": "Sejšelska rupija",
+ "symbol": "SCR"
+ },
+ "KPW": {
+ "name": "Severnokorejski von",
+ "symbol": "KPW"
+ },
+ "SLL": {
+ "name": "Sijera-leonški leone",
+ "symbol": "SLL"
+ },
+ "SGD": {
+ "name": "Singapurski dolar",
+ "symbol": "SGD"
+ },
+ "SYP": {
+ "name": "Sirijska funta",
+ "symbol": "SYP"
+ },
+ "SBD": {
+ "name": "Solomonski dolar",
+ "symbol": "SBD"
+ },
+ "SOS": {
+ "name": "Somalijski Å¡iling",
+ "symbol": "SOS"
+ },
+ "RSD": {
+ "name": "Srpski dinar",
+ "symbol": "RSD"
+ },
+ "SDG": {
+ "name": "Sudanska funta",
+ "symbol": "SDG"
+ },
+ "SRD": {
+ "name": "Surinamski dolar",
+ "symbol": "SRD"
+ },
+ "SHP": {
+ "name": "Sv. jelenska funta",
+ "symbol": "SHP"
+ },
+ "SZL": {
+ "name": "Svazi lilangeni",
+ "symbol": "SZL"
+ },
+ "LKR": {
+ "name": "Å rilankanska rupija",
+ "symbol": "LKR"
+ },
+ "CHF": {
+ "name": "Å vajcarski franak",
+ "symbol": "CHF"
+ },
+ "SEK": {
+ "name": "Å vedska kruna",
+ "symbol": "SEK"
+ },
+ "TJS": {
+ "name": "Tadžihistanski somon",
+ "symbol": "TJS"
+ },
+ "THB": {
+ "name": "Tajlandski bat",
+ "symbol": "THB"
+ },
+ "TZS": {
+ "name": "Tanzanijski Å¡iling",
+ "symbol": "TZS"
+ },
+ "TOP": {
+ "name": "Tongonška Panga",
+ "symbol": "TOP"
+ },
+ "TTD": {
+ "name": "Trinidad-tobagoški dolar",
+ "symbol": "TTD"
+ },
+ "TND": {
+ "name": "Tuniski dinar",
+ "symbol": "TND"
+ },
+ "TMT": {
+ "name": "Turkmenistanski manat",
+ "symbol": "TMT"
+ },
+ "TRY": {
+ "name": "Turska lira",
+ "symbol": "TRY"
+ },
+ "AED": {
+ "name": "UAE dirham",
+ "symbol": "AED"
+ },
+ "UGX": {
+ "name": "Ugandski Å¡iling",
+ "symbol": "UGX"
+ },
+ "UAH": {
+ "name": "Ukrajinska grivna",
+ "symbol": "UAH"
+ },
+ "UYU": {
+ "name": "Urugvajski pezos",
+ "symbol": "UYU"
+ },
+ "UZS": {
+ "name": "Uzbekistanski som",
+ "symbol": "UZS"
+ },
+ "VUV": {
+ "name": "Vanuatski vatu",
+ "symbol": "VUV"
+ },
+ "VEF": {
+ "name": "Venecuelanski bolivar",
+ "symbol": "VEF"
+ },
+ "VND": {
+ "name": "Vijetnamski dong",
+ "symbol": "VND"
+ },
+ "ZMW": {
+ "name": "Zambijska kvaÄa",
+ "symbol": "ZMW"
+ },
+ "CVE": {
+ "name": "Zelenortski eskudo",
+ "symbol": "CVE"
+ },
+ "ZWL": {
+ "name": "Zimbabveanski dolar (2009)",
+ "symbol": "ZWL"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/currency/sr.json b/library/intl/resources/currency/sr.json
new file mode 100644
index 000000000..c7f741abc
--- /dev/null
+++ b/library/intl/resources/currency/sr.json
@@ -0,0 +1,634 @@
+{
+ "XAF": {
+ "name": "CFA франак BEAC",
+ "symbol": "FCFA"
+ },
+ "XPF": {
+ "name": "CFP франак",
+ "symbol": "CFPF"
+ },
+ "ERN": {
+ "name": "EритрејÑка накфa",
+ "symbol": "ERN"
+ },
+ "KHR": {
+ "name": "KамбоџанÑки ријел",
+ "symbol": "KHR"
+ },
+ "TJS": {
+ "name": "TаџихиÑтанÑки Ñомон",
+ "symbol": "TJS"
+ },
+ "AFN": {
+ "name": "ÐвганиÑтанÑки авгани",
+ "symbol": "AFN"
+ },
+ "AZN": {
+ "name": "ÐзербејџанÑки манат",
+ "symbol": "AZN"
+ },
+ "ALL": {
+ "name": "ÐлбанÑки лек",
+ "symbol": "ALL"
+ },
+ "DZD": {
+ "name": "ÐлжирÑки динар",
+ "symbol": "DZD"
+ },
+ "USD": {
+ "name": "Ðмерички долар",
+ "symbol": "US$"
+ },
+ "AOA": {
+ "name": "ÐнголÑка кванза",
+ "symbol": "AOA"
+ },
+ "ARS": {
+ "name": "ÐргентинÑки пезоÑ",
+ "symbol": "ARS"
+ },
+ "AWG": {
+ "name": "ÐрубанÑки флорин",
+ "symbol": "AWG"
+ },
+ "AUD": {
+ "name": "ÐуÑтралијÑки долар",
+ "symbol": "AUD"
+ },
+ "BDT": {
+ "name": "Бангладешка така",
+ "symbol": "BDT"
+ },
+ "BBD": {
+ "name": "Барбадошки долар",
+ "symbol": "BBD"
+ },
+ "BSD": {
+ "name": "БахамÑки долар",
+ "symbol": "BSD"
+ },
+ "BHD": {
+ "name": "БахреинÑки динар",
+ "symbol": "BHD"
+ },
+ "BZD": {
+ "name": "БелиÑки долар",
+ "symbol": "BZD"
+ },
+ "BYR": {
+ "name": "БелоруÑка рубља",
+ "symbol": "[BYR]"
+ },
+ "BMD": {
+ "name": "БермудÑки долар",
+ "symbol": "BMD"
+ },
+ "BOB": {
+ "name": "БоливијÑки Боливиано",
+ "symbol": "BOB"
+ },
+ "BAM": {
+ "name": "БоÑанÑко-херцеговачка конвертибилна марка",
+ "symbol": "КМ"
+ },
+ "BWP": {
+ "name": "БоцванÑка пула",
+ "symbol": "BWP"
+ },
+ "BRL": {
+ "name": "БразилÑки реал",
+ "symbol": "R$"
+ },
+ "GBP": {
+ "name": "БританÑка фунта Ñтерлинга",
+ "symbol": "£"
+ },
+ "BND": {
+ "name": "БрунејÑки долар",
+ "symbol": "BND"
+ },
+ "BGN": {
+ "name": "БугарÑки лев",
+ "symbol": "[BGN]"
+ },
+ "BIF": {
+ "name": "БурундÑки франак",
+ "symbol": "BIF"
+ },
+ "BTN": {
+ "name": "БутанÑки нгултрум",
+ "symbol": "BTN"
+ },
+ "VUV": {
+ "name": "ВануатÑки вату",
+ "symbol": "VUV"
+ },
+ "VEF": {
+ "name": "ВенецуеланÑки боливар",
+ "symbol": "VEF"
+ },
+ "VND": {
+ "name": "ВијетнамÑки донг",
+ "symbol": "VND"
+ },
+ "GMD": {
+ "name": "ГамбијÑки далаÑи",
+ "symbol": "GMD"
+ },
+ "GHS": {
+ "name": "ГанÑки Ñеди",
+ "symbol": "GHS"
+ },
+ "GYD": {
+ "name": "ГвајанÑки долар",
+ "symbol": "GYD"
+ },
+ "GTQ": {
+ "name": "ГватемалÑки кецал",
+ "symbol": "GTQ"
+ },
+ "GNF": {
+ "name": "ГвинејÑки франак",
+ "symbol": "GNF"
+ },
+ "GIP": {
+ "name": "ГибралтарÑка фунта",
+ "symbol": "GIP"
+ },
+ "GEL": {
+ "name": "ГрузијÑки лари",
+ "symbol": "GEL"
+ },
+ "DKK": {
+ "name": "ДанÑка круна",
+ "symbol": "DKK"
+ },
+ "DOP": {
+ "name": "ДоминиканÑки пезоÑ",
+ "symbol": "DOP"
+ },
+ "EUR": {
+ "name": "Евро",
+ "symbol": "€"
+ },
+ "EGP": {
+ "name": "ЕгипатÑка фунта",
+ "symbol": "EGP"
+ },
+ "ETB": {
+ "name": "ЕтиопијÑки бир",
+ "symbol": "ETB"
+ },
+ "ZMW": {
+ "name": "ЗамбијÑка квача",
+ "symbol": "ZMW"
+ },
+ "CVE": {
+ "name": "ЗеленортÑки еÑкудо",
+ "symbol": "CVE"
+ },
+ "ZWL": {
+ "name": "ЗимбабвеанÑки долар (2009)",
+ "symbol": "ZWL"
+ },
+ "ILS": {
+ "name": "ИзраелÑки нови шекел",
+ "symbol": "₪"
+ },
+ "INR": {
+ "name": "ИндијÑка рупија",
+ "symbol": "₹"
+ },
+ "IDR": {
+ "name": "ИндонежанÑка рупија",
+ "symbol": "IDR"
+ },
+ "IRR": {
+ "name": "ИранÑки риjал",
+ "symbol": "IRR"
+ },
+ "IQD": {
+ "name": "Ирачки динар",
+ "symbol": "IQD"
+ },
+ "ISK": {
+ "name": "ИÑландÑка круна",
+ "symbol": "ISK"
+ },
+ "XCD": {
+ "name": "ИÑточнокарипÑки долар",
+ "symbol": "EC$"
+ },
+ "JMD": {
+ "name": "ЈамајчанÑки долар",
+ "symbol": "JMD"
+ },
+ "JPY": {
+ "name": "ЈапанÑки јен",
+ "symbol": "Â¥"
+ },
+ "YER": {
+ "name": "ЈеменÑки риjал",
+ "symbol": "YER"
+ },
+ "AMD": {
+ "name": "ЈерменÑки драм",
+ "symbol": "AMD"
+ },
+ "JOD": {
+ "name": "ЈорданÑки динар",
+ "symbol": "JOD"
+ },
+ "ZAR": {
+ "name": "Јужно-афрички ранд",
+ "symbol": "ZAR"
+ },
+ "KRW": {
+ "name": "ЈужнокорејÑки Вон",
+ "symbol": "KRW"
+ },
+ "SSP": {
+ "name": "ЈужноÑуданÑка фунта",
+ "symbol": "SSP"
+ },
+ "KZT": {
+ "name": "КазахÑтанÑки тенге",
+ "symbol": "KZT"
+ },
+ "KYD": {
+ "name": "КајманÑки долар",
+ "symbol": "KYD"
+ },
+ "CAD": {
+ "name": "КанадÑки долар",
+ "symbol": "CA$"
+ },
+ "QAR": {
+ "name": "КатарÑки ријал",
+ "symbol": "QAR"
+ },
+ "KES": {
+ "name": "КенијÑки шилинг",
+ "symbol": "KES"
+ },
+ "CNY": {
+ "name": "КинеÑки јуан",
+ "symbol": "CNÂ¥"
+ },
+ "KGS": {
+ "name": "КиргиÑтанÑки Ñом",
+ "symbol": "KGS"
+ },
+ "COP": {
+ "name": "КолумбијÑки пезоÑ",
+ "symbol": "COP"
+ },
+ "KMF": {
+ "name": "КоморÑки франак",
+ "symbol": "KMF"
+ },
+ "CDF": {
+ "name": "КонгоанÑки франак",
+ "symbol": "CDF"
+ },
+ "CRC": {
+ "name": "КоÑтариканÑки колон",
+ "symbol": "CRC"
+ },
+ "CUC": {
+ "name": "КубанÑки конвертибилни пезоÑ",
+ "symbol": "CUC"
+ },
+ "CUP": {
+ "name": "КубанÑки пезоÑ",
+ "symbol": "CUP"
+ },
+ "KWD": {
+ "name": "КувајтÑки динар",
+ "symbol": "KWD"
+ },
+ "LAK": {
+ "name": "Лаошки кип",
+ "symbol": "LAK"
+ },
+ "LSL": {
+ "name": "ЛеÑото лоти",
+ "symbol": "LSL"
+ },
+ "LBP": {
+ "name": "ЛибанÑка фунта",
+ "symbol": "LBP"
+ },
+ "LRD": {
+ "name": "ЛиберијÑки долар",
+ "symbol": "LRD"
+ },
+ "LYD": {
+ "name": "ЛибијÑки динар",
+ "symbol": "LYD"
+ },
+ "LTL": {
+ "name": "ЛитванÑки литаÑ",
+ "symbol": "LTL"
+ },
+ "HUF": {
+ "name": "МађарÑка форинта",
+ "symbol": "HUF"
+ },
+ "MOP": {
+ "name": "Маканишка патака",
+ "symbol": "MOP"
+ },
+ "MKD": {
+ "name": "МакедонÑки денар",
+ "symbol": "MKD"
+ },
+ "MWK": {
+ "name": "МалавијÑка квача",
+ "symbol": "MWK"
+ },
+ "MGA": {
+ "name": "МалагаÑијÑки ариари",
+ "symbol": "MGA"
+ },
+ "MVR": {
+ "name": "МалдивÑка руфија",
+ "symbol": "MVR"
+ },
+ "MYR": {
+ "name": "МалезијÑки ринггит",
+ "symbol": "MYR"
+ },
+ "MAD": {
+ "name": "МароканÑки дирхам",
+ "symbol": "MAD"
+ },
+ "MRO": {
+ "name": "МауританијÑка oгија",
+ "symbol": "MRO"
+ },
+ "MUR": {
+ "name": "МаурицијÑка рупија",
+ "symbol": "MUR"
+ },
+ "MXN": {
+ "name": "МекÑички пезоÑ",
+ "symbol": "MX$"
+ },
+ "MMK": {
+ "name": "МјанмарÑки кјат",
+ "symbol": "MMK"
+ },
+ "MZN": {
+ "name": "МозамбијÑки метикал",
+ "symbol": "MZN"
+ },
+ "MDL": {
+ "name": "МолдавÑки леј",
+ "symbol": "MDL"
+ },
+ "MNT": {
+ "name": "МонголÑки тугрик",
+ "symbol": "MNT"
+ },
+ "NAD": {
+ "name": "ÐамибијÑки долар",
+ "symbol": "NAD"
+ },
+ "NPR": {
+ "name": "ÐепалÑкa рупиja",
+ "symbol": "NPR"
+ },
+ "NGN": {
+ "name": "ÐигеријÑка наира",
+ "symbol": "NGN"
+ },
+ "NIO": {
+ "name": "ÐикарагванÑка златна кордоба",
+ "symbol": "NIO"
+ },
+ "TWD": {
+ "name": "Ðови тајванÑки долар",
+ "symbol": "NT$"
+ },
+ "NZD": {
+ "name": "ÐовозеландÑки долар",
+ "symbol": "NZD"
+ },
+ "NOK": {
+ "name": "Ðорвешка круна",
+ "symbol": "NOK"
+ },
+ "OMR": {
+ "name": "ОманÑки ријал",
+ "symbol": "OMR"
+ },
+ "PKR": {
+ "name": "ПакиÑтанÑкa рупиja",
+ "symbol": "PKR"
+ },
+ "PAB": {
+ "name": "ПанамÑка балбоа",
+ "symbol": "PAB"
+ },
+ "PGK": {
+ "name": "ПапуанÑка кина",
+ "symbol": "PGK"
+ },
+ "PYG": {
+ "name": "ПарагвајÑки гварани",
+ "symbol": "PYG"
+ },
+ "PEN": {
+ "name": "ПеруанÑки нуево Ñол",
+ "symbol": "PEN"
+ },
+ "PLN": {
+ "name": "ПољÑки злот",
+ "symbol": "PLN"
+ },
+ "RWF": {
+ "name": "РуандÑки франак",
+ "symbol": "RWF"
+ },
+ "RON": {
+ "name": "РумунÑки леј (1952–2006)",
+ "symbol": "RON"
+ },
+ "RUB": {
+ "name": "РуÑка рубља",
+ "symbol": "RUB"
+ },
+ "SVC": {
+ "name": "СалвадорÑки колон",
+ "symbol": "SVC"
+ },
+ "WST": {
+ "name": "СамоанÑка тала",
+ "symbol": "WST"
+ },
+ "STD": {
+ "name": "Сао Томе и Принципе добра",
+ "symbol": "STD"
+ },
+ "SAR": {
+ "name": "СаудијÑки ријал",
+ "symbol": "SAR"
+ },
+ "SHP": {
+ "name": "Св. јеленÑка фунта",
+ "symbol": "SHP"
+ },
+ "SZL": {
+ "name": "Свази лилангени",
+ "symbol": "SZL"
+ },
+ "KPW": {
+ "name": "СевернокорејÑки вон",
+ "symbol": "KPW"
+ },
+ "SCR": {
+ "name": "СејшелÑка рупија",
+ "symbol": "SCR"
+ },
+ "SLL": {
+ "name": "Сијера-леоншки леоне",
+ "symbol": "SLL"
+ },
+ "SGD": {
+ "name": "СингапурÑки долар",
+ "symbol": "SGD"
+ },
+ "SYP": {
+ "name": "СиријÑка фунта",
+ "symbol": "SYP"
+ },
+ "SBD": {
+ "name": "СоломонÑки долар",
+ "symbol": "SBD"
+ },
+ "SOS": {
+ "name": "СомалијÑки шилинг",
+ "symbol": "SOS"
+ },
+ "RSD": {
+ "name": "СрпÑки динар",
+ "symbol": "RSD"
+ },
+ "SDG": {
+ "name": "СуданÑка фунта",
+ "symbol": "SDG"
+ },
+ "SRD": {
+ "name": "СуринамÑки долар",
+ "symbol": "SRD"
+ },
+ "THB": {
+ "name": "ТајландÑки бат",
+ "symbol": "THB"
+ },
+ "TZS": {
+ "name": "ТанзанијÑки шилинг",
+ "symbol": "TZS"
+ },
+ "TOP": {
+ "name": "Тонгоншка Панга",
+ "symbol": "TOP"
+ },
+ "TTD": {
+ "name": "Тринидад-тобагошки долар",
+ "symbol": "TTD"
+ },
+ "TND": {
+ "name": "ТуниÑки динар",
+ "symbol": "TND"
+ },
+ "TMT": {
+ "name": "ТуркмениÑтанÑки манат",
+ "symbol": "TMT"
+ },
+ "TRY": {
+ "name": "ТурÑка лира",
+ "symbol": "TRY"
+ },
+ "AED": {
+ "name": "УÐЕ дирхам",
+ "symbol": "AED"
+ },
+ "UGX": {
+ "name": "УгандÑки шилинг",
+ "symbol": "UGX"
+ },
+ "UZS": {
+ "name": "УзбекиÑтанÑки Ñом",
+ "symbol": "UZS"
+ },
+ "UAH": {
+ "name": "УкрајинÑка гривна",
+ "symbol": "UAH"
+ },
+ "UYU": {
+ "name": "УругвајÑки пезоÑ",
+ "symbol": "UYU"
+ },
+ "PHP": {
+ "name": "ФилипинÑки пезоÑ",
+ "symbol": "PHP"
+ },
+ "FJD": {
+ "name": "ФиџијÑки долар",
+ "symbol": "FJD"
+ },
+ "FKP": {
+ "name": "ФокландÑка фунта",
+ "symbol": "FKP"
+ },
+ "HTG": {
+ "name": "ХаићанÑки гурд",
+ "symbol": "HTG"
+ },
+ "ANG": {
+ "name": "ХоландÑкоантилÑки гулден",
+ "symbol": "ANG"
+ },
+ "HKD": {
+ "name": "Хонгконшки долар",
+ "symbol": "HK$"
+ },
+ "HNL": {
+ "name": "Хондурашка лемпира",
+ "symbol": "HNL"
+ },
+ "HRK": {
+ "name": "ХрватÑка куна",
+ "symbol": "HRK"
+ },
+ "XOF": {
+ "name": "ЦФРфранак БЦЕÐО",
+ "symbol": "CFA"
+ },
+ "CZK": {
+ "name": "Чешка круна",
+ "symbol": "CZK"
+ },
+ "CLP": {
+ "name": "ЧилеанÑки пезоÑ",
+ "symbol": "CLP"
+ },
+ "DJF": {
+ "name": "ÐибутанÑки франак",
+ "symbol": "DJF"
+ },
+ "CHF": {
+ "name": "ШвајцарÑки франак",
+ "symbol": "CHF"
+ },
+ "SEK": {
+ "name": "ШведÑка круна",
+ "symbol": "SEK"
+ },
+ "LKR": {
+ "name": "ШриланканÑкa рупиja",
+ "symbol": "LKR"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/currency/sv.json b/library/intl/resources/currency/sv.json
new file mode 100644
index 000000000..08dd8008a
--- /dev/null
+++ b/library/intl/resources/currency/sv.json
@@ -0,0 +1,634 @@
+{
+ "AFN": {
+ "name": "afghansk afghani",
+ "symbol": "AFN"
+ },
+ "ALL": {
+ "name": "albansk lek",
+ "symbol": "ALL"
+ },
+ "DZD": {
+ "name": "algerisk dinar",
+ "symbol": "DZD"
+ },
+ "AOA": {
+ "name": "angolansk kwanza",
+ "symbol": "AOA"
+ },
+ "ARS": {
+ "name": "argentinsk peso",
+ "symbol": "ARS"
+ },
+ "AMD": {
+ "name": "armenisk dram",
+ "symbol": "AMD"
+ },
+ "AWG": {
+ "name": "arubansk florin",
+ "symbol": "AWG"
+ },
+ "AUD": {
+ "name": "australisk dollar",
+ "symbol": "AUD"
+ },
+ "AZN": {
+ "name": "azerbajdzjansk manat",
+ "symbol": "AZN"
+ },
+ "BSD": {
+ "name": "bahamansk dollar",
+ "symbol": "BS$"
+ },
+ "BHD": {
+ "name": "bahrainsk dinar",
+ "symbol": "BHD"
+ },
+ "BDT": {
+ "name": "bangladeshisk taka",
+ "symbol": "BDT"
+ },
+ "BBD": {
+ "name": "Barbados-dollar",
+ "symbol": "Bds$"
+ },
+ "BZD": {
+ "name": "belizisk dollar",
+ "symbol": "BZ$"
+ },
+ "BMD": {
+ "name": "Bermuda-dollar",
+ "symbol": "BM$"
+ },
+ "BTN": {
+ "name": "bhutanesisk ngultrum",
+ "symbol": "BTN"
+ },
+ "BOB": {
+ "name": "boliviansk boliviano",
+ "symbol": "BOB"
+ },
+ "BAM": {
+ "name": "bosnisk-hercegovinsk mark (konvertibel)",
+ "symbol": "BAM"
+ },
+ "BWP": {
+ "name": "botswansk pula",
+ "symbol": "BWP"
+ },
+ "BRL": {
+ "name": "brasiliansk real",
+ "symbol": "BR$"
+ },
+ "GBP": {
+ "name": "brittiskt pund",
+ "symbol": "GBP"
+ },
+ "BND": {
+ "name": "bruneisk dollar",
+ "symbol": "BND"
+ },
+ "BGN": {
+ "name": "bulgarisk lev",
+ "symbol": "BGN"
+ },
+ "BIF": {
+ "name": "burundisk franc",
+ "symbol": "BIF"
+ },
+ "KYD": {
+ "name": "Cayman-dollar",
+ "symbol": "KYD"
+ },
+ "XAF": {
+ "name": "centralafrikansk franc",
+ "symbol": "FCFA"
+ },
+ "XPF": {
+ "name": "CFP-franc",
+ "symbol": "CFPF"
+ },
+ "CLP": {
+ "name": "chilensk peso",
+ "symbol": "CLP"
+ },
+ "COP": {
+ "name": "colombiansk peso",
+ "symbol": "COP"
+ },
+ "CRC": {
+ "name": "costarikansk colón",
+ "symbol": "CRC"
+ },
+ "DKK": {
+ "name": "dansk krona",
+ "symbol": "Dkr"
+ },
+ "DJF": {
+ "name": "djiboutisk franc",
+ "symbol": "DJF"
+ },
+ "DOP": {
+ "name": "dominikansk peso",
+ "symbol": "RD$"
+ },
+ "EGP": {
+ "name": "egyptiskt pund",
+ "symbol": "EG£"
+ },
+ "ERN": {
+ "name": "eritreansk nakfa",
+ "symbol": "ERN"
+ },
+ "ETB": {
+ "name": "etiopisk birr",
+ "symbol": "ETB"
+ },
+ "EUR": {
+ "name": "euro",
+ "symbol": "€"
+ },
+ "FKP": {
+ "name": "Falklandspund",
+ "symbol": "FKP"
+ },
+ "FJD": {
+ "name": "Fijidollar",
+ "symbol": "FJD"
+ },
+ "PHP": {
+ "name": "filippinsk peso",
+ "symbol": "PHP"
+ },
+ "AED": {
+ "name": "Förenade Arabemiratens dirham",
+ "symbol": "AED"
+ },
+ "GMD": {
+ "name": "gambisk dalasi",
+ "symbol": "GMD"
+ },
+ "GEL": {
+ "name": "georgisk lari",
+ "symbol": "GEL"
+ },
+ "GHS": {
+ "name": "ghanansk cedi",
+ "symbol": "GHS"
+ },
+ "GIP": {
+ "name": "gibraltiskt pund",
+ "symbol": "GIP"
+ },
+ "GTQ": {
+ "name": "guatemalansk quetzal",
+ "symbol": "GTQ"
+ },
+ "GNF": {
+ "name": "guineansk franc",
+ "symbol": "GNF"
+ },
+ "GYD": {
+ "name": "guyanansk dollar",
+ "symbol": "GYD"
+ },
+ "HTG": {
+ "name": "haitisk gourde",
+ "symbol": "HTG"
+ },
+ "HNL": {
+ "name": "honduransk lempira",
+ "symbol": "HNL"
+ },
+ "HKD": {
+ "name": "Hongkongdollar",
+ "symbol": "HKD"
+ },
+ "INR": {
+ "name": "indisk rupie",
+ "symbol": "INR"
+ },
+ "IDR": {
+ "name": "indonesisk rupiah",
+ "symbol": "IDR"
+ },
+ "IQD": {
+ "name": "irakisk dinar",
+ "symbol": "IQD"
+ },
+ "IRR": {
+ "name": "iransk rial",
+ "symbol": "IRR"
+ },
+ "ISK": {
+ "name": "isländsk krona",
+ "symbol": "Ikr"
+ },
+ "ILS": {
+ "name": "israelisk ny shekel",
+ "symbol": "₪"
+ },
+ "JMD": {
+ "name": "Jamaica-dollar",
+ "symbol": "JM$"
+ },
+ "JPY": {
+ "name": "japansk yen",
+ "symbol": "JPY"
+ },
+ "YER": {
+ "name": "jemenitisk rial",
+ "symbol": "YER"
+ },
+ "JOD": {
+ "name": "jordansk dinar",
+ "symbol": "JOD"
+ },
+ "KHR": {
+ "name": "kambodjansk riel",
+ "symbol": "KHR"
+ },
+ "CAD": {
+ "name": "kanadensisk dollar",
+ "symbol": "CAN$"
+ },
+ "CVE": {
+ "name": "kapverdisk escudo",
+ "symbol": "CVE"
+ },
+ "KZT": {
+ "name": "kazakisk tenge",
+ "symbol": "KZT"
+ },
+ "KES": {
+ "name": "kenyansk shilling",
+ "symbol": "KES"
+ },
+ "CNY": {
+ "name": "kinesisk yuan",
+ "symbol": "CNY"
+ },
+ "KGS": {
+ "name": "kirgizisk som",
+ "symbol": "KGS"
+ },
+ "KMF": {
+ "name": "komorisk franc",
+ "symbol": "KMF"
+ },
+ "CDF": {
+ "name": "kongolesisk franc",
+ "symbol": "CDF"
+ },
+ "HRK": {
+ "name": "kroatisk kuna",
+ "symbol": "HRK"
+ },
+ "CUP": {
+ "name": "kubansk peso",
+ "symbol": "CUP"
+ },
+ "CUC": {
+ "name": "kubansk peso (konvertibel)",
+ "symbol": "CUC"
+ },
+ "KWD": {
+ "name": "kuwaitisk dinar",
+ "symbol": "KWD"
+ },
+ "LAK": {
+ "name": "laotisk kip",
+ "symbol": "LAK"
+ },
+ "LSL": {
+ "name": "lesothisk loti",
+ "symbol": "LSL"
+ },
+ "LBP": {
+ "name": "libanesiskt pund",
+ "symbol": "LBP"
+ },
+ "LRD": {
+ "name": "liberiansk dollar",
+ "symbol": "LRD"
+ },
+ "LYD": {
+ "name": "libysk dinar",
+ "symbol": "LYD"
+ },
+ "LTL": {
+ "name": "litauisk litas",
+ "symbol": "LTL"
+ },
+ "MOP": {
+ "name": "macaosk pataca",
+ "symbol": "MOP"
+ },
+ "MGA": {
+ "name": "madagaskisk ariary",
+ "symbol": "MGA"
+ },
+ "MKD": {
+ "name": "makedonisk denar",
+ "symbol": "MKD"
+ },
+ "MWK": {
+ "name": "malawisk kwacha",
+ "symbol": "MWK"
+ },
+ "MYR": {
+ "name": "malaysisk ringgit",
+ "symbol": "MYR"
+ },
+ "MVR": {
+ "name": "maldivisk rufiyaa",
+ "symbol": "MVR"
+ },
+ "MAD": {
+ "name": "marockansk dirham",
+ "symbol": "MAD"
+ },
+ "MRO": {
+ "name": "mauretansk ouquiya",
+ "symbol": "MRO"
+ },
+ "MUR": {
+ "name": "mauritisk rupie",
+ "symbol": "MUR"
+ },
+ "MXN": {
+ "name": "mexikansk peso",
+ "symbol": "MX$"
+ },
+ "MZN": {
+ "name": "moçambikisk metical",
+ "symbol": "MZN"
+ },
+ "MDL": {
+ "name": "moldavisk leu",
+ "symbol": "MDL"
+ },
+ "MNT": {
+ "name": "mongolisk tögrög",
+ "symbol": "MNT"
+ },
+ "MMK": {
+ "name": "myanmarisk kyat",
+ "symbol": "MMK"
+ },
+ "NAD": {
+ "name": "namibisk dollar",
+ "symbol": "NAD"
+ },
+ "ANG": {
+ "name": "Nederländska Antillernas gulden",
+ "symbol": "ANG"
+ },
+ "NPR": {
+ "name": "nepalesisk rupie",
+ "symbol": "NPR"
+ },
+ "NIO": {
+ "name": "nicaraguansk córdoba",
+ "symbol": "NIO"
+ },
+ "NGN": {
+ "name": "nigeriansk naira",
+ "symbol": "NGN"
+ },
+ "KPW": {
+ "name": "nordkoreansk won",
+ "symbol": "KPW"
+ },
+ "NOK": {
+ "name": "norsk krona",
+ "symbol": "Nkr"
+ },
+ "NZD": {
+ "name": "nyzeeländsk dollar",
+ "symbol": "NZD"
+ },
+ "OMR": {
+ "name": "omansk rial",
+ "symbol": "OMR"
+ },
+ "PKR": {
+ "name": "pakistansk rupie",
+ "symbol": "PKR"
+ },
+ "PAB": {
+ "name": "panamansk balboa",
+ "symbol": "PAB"
+ },
+ "PGK": {
+ "name": "papuansk kina",
+ "symbol": "PGK"
+ },
+ "PYG": {
+ "name": "paraguayansk guarani",
+ "symbol": "PYG"
+ },
+ "PEN": {
+ "name": "peruansk nuevo sol",
+ "symbol": "PEN"
+ },
+ "PLN": {
+ "name": "polsk zloty",
+ "symbol": "PLN"
+ },
+ "QAR": {
+ "name": "qatarisk rial",
+ "symbol": "QAR"
+ },
+ "RON": {
+ "name": "rumänsk leu",
+ "symbol": "RON"
+ },
+ "RWF": {
+ "name": "rwandisk franc",
+ "symbol": "RWF"
+ },
+ "RUB": {
+ "name": "rysk rubel",
+ "symbol": "RUB"
+ },
+ "SHP": {
+ "name": "S:t Helena-pund",
+ "symbol": "SHP"
+ },
+ "SBD": {
+ "name": "Salomondollar",
+ "symbol": "SBD"
+ },
+ "SVC": {
+ "name": "salvadoransk colón",
+ "symbol": "SVC"
+ },
+ "STD": {
+ "name": "saotomeansk dobra",
+ "symbol": "STD"
+ },
+ "SAR": {
+ "name": "saudisk riyal",
+ "symbol": "SAR"
+ },
+ "CHF": {
+ "name": "schweizisk franc",
+ "symbol": "CHF"
+ },
+ "RSD": {
+ "name": "serbisk dinar",
+ "symbol": "RSD"
+ },
+ "SCR": {
+ "name": "seychellisk rupie",
+ "symbol": "SCR"
+ },
+ "SLL": {
+ "name": "sierraleonsk leone",
+ "symbol": "SLL"
+ },
+ "SGD": {
+ "name": "singaporiansk dollar",
+ "symbol": "SGD"
+ },
+ "SOS": {
+ "name": "somalisk shilling",
+ "symbol": "SOS"
+ },
+ "LKR": {
+ "name": "srilankesisk rupie",
+ "symbol": "LKR"
+ },
+ "SDG": {
+ "name": "sudanesiskt pund",
+ "symbol": "SDG"
+ },
+ "SRD": {
+ "name": "surinamesisk dollar",
+ "symbol": "SRD"
+ },
+ "SEK": {
+ "name": "svensk krona",
+ "symbol": "kr"
+ },
+ "SZL": {
+ "name": "swaziländsk lilangeni",
+ "symbol": "SZL"
+ },
+ "ZAR": {
+ "name": "sydafrikansk rand",
+ "symbol": "ZAR"
+ },
+ "KRW": {
+ "name": "sydkoreansk won",
+ "symbol": "KRW"
+ },
+ "SSP": {
+ "name": "sydsudanesiskt pund",
+ "symbol": "SSP"
+ },
+ "SYP": {
+ "name": "syriskt pund",
+ "symbol": "SYP"
+ },
+ "TJS": {
+ "name": "tadzjikisk somoni",
+ "symbol": "TJS"
+ },
+ "TWD": {
+ "name": "Taiwandollar",
+ "symbol": "TWD"
+ },
+ "TZS": {
+ "name": "tanzanisk shilling",
+ "symbol": "TZS"
+ },
+ "THB": {
+ "name": "thailändsk baht",
+ "symbol": "THB"
+ },
+ "CZK": {
+ "name": "tjeckisk koruna",
+ "symbol": "CZK"
+ },
+ "TOP": {
+ "name": "tongansk paʻanga",
+ "symbol": "TOP"
+ },
+ "TTD": {
+ "name": "Trinidad och Tobago-dollar",
+ "symbol": "TTD"
+ },
+ "TND": {
+ "name": "tunisisk dinar",
+ "symbol": "TND"
+ },
+ "TRY": {
+ "name": "turkisk lira",
+ "symbol": "TRY"
+ },
+ "TMT": {
+ "name": "turkmenistansk manat",
+ "symbol": "TMT"
+ },
+ "UGX": {
+ "name": "ugandisk shilling",
+ "symbol": "UGX"
+ },
+ "UAH": {
+ "name": "ukrainsk hryvnia",
+ "symbol": "UAH"
+ },
+ "HUF": {
+ "name": "ungersk forint",
+ "symbol": "HUF"
+ },
+ "UYU": {
+ "name": "uruguayansk peso",
+ "symbol": "UYU"
+ },
+ "USD": {
+ "name": "US-dollar",
+ "symbol": "US$"
+ },
+ "UZS": {
+ "name": "uzbekisk sum",
+ "symbol": "UZS"
+ },
+ "VUV": {
+ "name": "vanuatisk vatu",
+ "symbol": "VUV"
+ },
+ "VEF": {
+ "name": "venezuelansk bolívar",
+ "symbol": "VEF"
+ },
+ "VND": {
+ "name": "vietnamesisk dong",
+ "symbol": "VND"
+ },
+ "BYR": {
+ "name": "vitrysk rubel",
+ "symbol": "BYR"
+ },
+ "XOF": {
+ "name": "västafrikansk franc",
+ "symbol": "CFA"
+ },
+ "WST": {
+ "name": "västsamoansk tala",
+ "symbol": "WST"
+ },
+ "ZMW": {
+ "name": "zambisk kwacha",
+ "symbol": "ZMW"
+ },
+ "ZWL": {
+ "name": "Zimbabwe-dollar (2009)",
+ "symbol": "ZWL"
+ },
+ "XCD": {
+ "name": "östkaribisk dollar",
+ "symbol": "EC$"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/currency/sw.json b/library/intl/resources/currency/sw.json
new file mode 100644
index 000000000..5ae8d2a46
--- /dev/null
+++ b/library/intl/resources/currency/sw.json
@@ -0,0 +1,634 @@
+{
+ "AFN": {
+ "name": "Afghani ya Afuganistani",
+ "symbol": "AFN"
+ },
+ "MGA": {
+ "name": "Ariari ya Madagaska",
+ "symbol": "MGA"
+ },
+ "THB": {
+ "name": "Baht ya Tailandi",
+ "symbol": "฿"
+ },
+ "PAB": {
+ "name": "Balboa ya Panama",
+ "symbol": "PAB"
+ },
+ "ETB": {
+ "name": "birr ya Uhabeshi",
+ "symbol": "ETB"
+ },
+ "VEF": {
+ "name": "Bolivar ya Venezuela",
+ "symbol": "VEF"
+ },
+ "BOB": {
+ "name": "Boliviano ya Bolivia",
+ "symbol": "BOB"
+ },
+ "GHS": {
+ "name": "Cedi ya Ghana",
+ "symbol": "GHS"
+ },
+ "XAF": {
+ "name": "CFA faranga ya BEAC",
+ "symbol": "FCFA"
+ },
+ "XOF": {
+ "name": "CFA faranga za BCEAO",
+ "symbol": "CFA"
+ },
+ "CRC": {
+ "name": "Colon ya Kostarika",
+ "symbol": "CRC"
+ },
+ "BAM": {
+ "name": "Convertible Mark ya Bosnia na Hezegovina",
+ "symbol": "BAM"
+ },
+ "NIO": {
+ "name": "Cordoba ya Nikaragua",
+ "symbol": "NIO"
+ },
+ "GMD": {
+ "name": "dalasi ya Gambia",
+ "symbol": "GMD"
+ },
+ "MKD": {
+ "name": "Denar ya Masedonia",
+ "symbol": "MKD"
+ },
+ "RSD": {
+ "name": "Dinar ya Serbia",
+ "symbol": "RSD"
+ },
+ "DZD": {
+ "name": "dinari ya Aljeria",
+ "symbol": "DZD"
+ },
+ "BHD": {
+ "name": "dinari ya Bahareni",
+ "symbol": "BHD"
+ },
+ "IQD": {
+ "name": "Dinari ya Iraki",
+ "symbol": "IQD"
+ },
+ "KWD": {
+ "name": "Dinari ya Kuwaiti",
+ "symbol": "KWD"
+ },
+ "LYD": {
+ "name": "dinari ya Libya",
+ "symbol": "LYD"
+ },
+ "TND": {
+ "name": "dinari ya Tunisia",
+ "symbol": "TND"
+ },
+ "JOD": {
+ "name": "Dinari ya Yordani",
+ "symbol": "JOD"
+ },
+ "AED": {
+ "name": "dirham ya Falme za Kiarabu",
+ "symbol": "AED"
+ },
+ "MAD": {
+ "name": "dirham ya Moroko",
+ "symbol": "MAD"
+ },
+ "STD": {
+ "name": "dobra ya Sao Tome na Principe",
+ "symbol": "STD"
+ },
+ "AUD": {
+ "name": "dola ya Australia",
+ "symbol": "A$"
+ },
+ "BSD": {
+ "name": "Dola ya Bahamas",
+ "symbol": "BSD"
+ },
+ "BBD": {
+ "name": "Dola ya Barbados",
+ "symbol": "BBD"
+ },
+ "BZD": {
+ "name": "Dola ya Belize",
+ "symbol": "BZD"
+ },
+ "BMD": {
+ "name": "Dola ya Bermuda",
+ "symbol": "BMD"
+ },
+ "BND": {
+ "name": "Dola ya Brunei",
+ "symbol": "BND"
+ },
+ "FJD": {
+ "name": "Dola ya Fiji",
+ "symbol": "FJD"
+ },
+ "GYD": {
+ "name": "Dola ya Guyana",
+ "symbol": "GYD"
+ },
+ "HKD": {
+ "name": "Dola ya Hong Kong",
+ "symbol": "HK$"
+ },
+ "JMD": {
+ "name": "Dola ya Jamaica",
+ "symbol": "JMD"
+ },
+ "CAD": {
+ "name": "dola ya Kanada",
+ "symbol": "CA$"
+ },
+ "XCD": {
+ "name": "Dola ya Karibea ya Mashariki",
+ "symbol": "EC$"
+ },
+ "LRD": {
+ "name": "dola ya Liberia",
+ "symbol": "LRD"
+ },
+ "USD": {
+ "name": "dola ya Marekani",
+ "symbol": "US$"
+ },
+ "NAD": {
+ "name": "dola ya Namibia",
+ "symbol": "NAD"
+ },
+ "NZD": {
+ "name": "Dola ya Nyuzilandi",
+ "symbol": "NZ$"
+ },
+ "SGD": {
+ "name": "Dola ya Singapore",
+ "symbol": "SGD"
+ },
+ "SRD": {
+ "name": "Dola ya Suriname",
+ "symbol": "SRD"
+ },
+ "TWD": {
+ "name": "Dola ya Taiwan",
+ "symbol": "NT$"
+ },
+ "TTD": {
+ "name": "Dola ya Trinidad na Tobago",
+ "symbol": "TTD"
+ },
+ "KYD": {
+ "name": "Dola ya Visiwa vya Cayman",
+ "symbol": "KYD"
+ },
+ "SBD": {
+ "name": "Dola ya Visiwa vya Solomon",
+ "symbol": "SBD"
+ },
+ "VND": {
+ "name": "Dong ya Vietinamu",
+ "symbol": "â‚«"
+ },
+ "AMD": {
+ "name": "Dram ya Armenia",
+ "symbol": "AMD"
+ },
+ "CVE": {
+ "name": "eskudo ya Kepuvede",
+ "symbol": "CVE"
+ },
+ "BIF": {
+ "name": "faranga ya Burundi",
+ "symbol": "BIF"
+ },
+ "XPF": {
+ "name": "Faranga ya CFP",
+ "symbol": "CFPF"
+ },
+ "GNF": {
+ "name": "faranga ya Guinea",
+ "symbol": "GNF"
+ },
+ "DJF": {
+ "name": "faranga ya Jibuti",
+ "symbol": "DJF"
+ },
+ "KMF": {
+ "name": "faranga ya Komoro",
+ "symbol": "KMF"
+ },
+ "CDF": {
+ "name": "faranga ya Kongo",
+ "symbol": "CDF"
+ },
+ "RWF": {
+ "name": "faranga ya Rwanda",
+ "symbol": "RWF"
+ },
+ "CHF": {
+ "name": "faranga ya Uswisi",
+ "symbol": "CHF"
+ },
+ "AWG": {
+ "name": "Florin ya Aruba",
+ "symbol": "AWG"
+ },
+ "HUF": {
+ "name": "Forint ya Hungaria",
+ "symbol": "HUF"
+ },
+ "HTG": {
+ "name": "Gourde ya Haiti",
+ "symbol": "HTG"
+ },
+ "PYG": {
+ "name": "Guarani ya Paragwai",
+ "symbol": "PYG"
+ },
+ "ANG": {
+ "name": "Guilder ya Antili za Kiholanzi",
+ "symbol": "ANG"
+ },
+ "UAH": {
+ "name": "Hryvnia ya Ukrania",
+ "symbol": "UAH"
+ },
+ "PGK": {
+ "name": "Kina ya Papua New Guinea",
+ "symbol": "PGK"
+ },
+ "LAK": {
+ "name": "Kip ya Laosi",
+ "symbol": "LAK"
+ },
+ "CZK": {
+ "name": "Koruna ya Jamhuri ya Cheki",
+ "symbol": "CZK"
+ },
+ "ISK": {
+ "name": "Krona ya Isilandi",
+ "symbol": "ISK"
+ },
+ "SEK": {
+ "name": "Krona ya Uswidi",
+ "symbol": "SEK"
+ },
+ "DKK": {
+ "name": "Krone ya Denmaki",
+ "symbol": "DKK"
+ },
+ "NOK": {
+ "name": "Krone ya Norwe",
+ "symbol": "NOK"
+ },
+ "HRK": {
+ "name": "Kuna ya Kroeshia",
+ "symbol": "HRK"
+ },
+ "MWK": {
+ "name": "kwacha ya Malawi",
+ "symbol": "MWK"
+ },
+ "ZMW": {
+ "name": "kwacha ya Zambia",
+ "symbol": "ZMW"
+ },
+ "AOA": {
+ "name": "kwanza ya Angola",
+ "symbol": "AOA"
+ },
+ "MMK": {
+ "name": "Kyat ya Myama",
+ "symbol": "MMK"
+ },
+ "GEL": {
+ "name": "Lari ya Georgia",
+ "symbol": "GEL"
+ },
+ "ALL": {
+ "name": "Lek ya Albania",
+ "symbol": "ALL"
+ },
+ "HNL": {
+ "name": "Lempira ya Hondurasi",
+ "symbol": "HNL"
+ },
+ "SLL": {
+ "name": "leoni",
+ "symbol": "SLL"
+ },
+ "MDL": {
+ "name": "Leu ya Moldova",
+ "symbol": "MDL"
+ },
+ "RON": {
+ "name": "Leu ya Romania",
+ "symbol": "RON"
+ },
+ "BGN": {
+ "name": "Lev ya Bulgaria",
+ "symbol": "BGN"
+ },
+ "SZL": {
+ "name": "lilangeni",
+ "symbol": "SZL"
+ },
+ "TRY": {
+ "name": "Lira ya Uturuki",
+ "symbol": "TRY"
+ },
+ "LTL": {
+ "name": "Litas ya Lithuania",
+ "symbol": "LTL"
+ },
+ "LSL": {
+ "name": "loti ya Lesoto",
+ "symbol": "LSL"
+ },
+ "AZN": {
+ "name": "Manat ya Azebaijani",
+ "symbol": "AZN"
+ },
+ "TMT": {
+ "name": "Manat ya Turukimenistani",
+ "symbol": "TMT"
+ },
+ "MZN": {
+ "name": "Metikali ya Msumbiji",
+ "symbol": "MZN"
+ },
+ "NGN": {
+ "name": "naira ya Nijeria",
+ "symbol": "NGN"
+ },
+ "ERN": {
+ "name": "nakfa ya Eritrea",
+ "symbol": "ERN"
+ },
+ "BTN": {
+ "name": "Ngultrum ya Bhutan",
+ "symbol": "BTN"
+ },
+ "PEN": {
+ "name": "Nuevo Sol ya Peru",
+ "symbol": "PEN"
+ },
+ "MRO": {
+ "name": "Ouguiya ya Moritania",
+ "symbol": "MRO"
+ },
+ "TOP": {
+ "name": "Paʻanga ya Tonga",
+ "symbol": "TOP"
+ },
+ "MOP": {
+ "name": "Pataca ya Macau",
+ "symbol": "MOP"
+ },
+ "GIP": {
+ "name": "Pauni ya Gibraltar",
+ "symbol": "GIP"
+ },
+ "LBP": {
+ "name": "Pauni ya Lebanon",
+ "symbol": "LBP"
+ },
+ "EGP": {
+ "name": "pauni ya Misri",
+ "symbol": "EGP"
+ },
+ "SHP": {
+ "name": "pauni ya Santahelena",
+ "symbol": "SHP"
+ },
+ "SDG": {
+ "name": "pauni ya Sudani",
+ "symbol": "SDG"
+ },
+ "SSP": {
+ "name": "pauni ya Sudani Kusini",
+ "symbol": "SSP"
+ },
+ "SYP": {
+ "name": "Pauni ya Syria",
+ "symbol": "SYP"
+ },
+ "GBP": {
+ "name": "pauni ya Uingereza",
+ "symbol": "£"
+ },
+ "FKP": {
+ "name": "Pauni ya Visiwa vya Falkland",
+ "symbol": "FKP"
+ },
+ "ARS": {
+ "name": "Peso ya Ajentina",
+ "symbol": "ARS"
+ },
+ "CLP": {
+ "name": "Peso ya Chile",
+ "symbol": "CLP"
+ },
+ "CUP": {
+ "name": "Peso ya Cuba",
+ "symbol": "CUP"
+ },
+ "CUC": {
+ "name": "Peso ya Cuba Inayoweza Kubadilishwa",
+ "symbol": "CUC"
+ },
+ "DOP": {
+ "name": "Peso ya Dominika",
+ "symbol": "DOP"
+ },
+ "COP": {
+ "name": "Peso ya Kolombia",
+ "symbol": "COP"
+ },
+ "MXN": {
+ "name": "Peso ya Meksiko",
+ "symbol": "MX$"
+ },
+ "PHP": {
+ "name": "Peso ya Ufilipino",
+ "symbol": "PHP"
+ },
+ "UYU": {
+ "name": "Peso ya Urugwai",
+ "symbol": "UYU"
+ },
+ "BWP": {
+ "name": "pula ya Botswana",
+ "symbol": "BWP"
+ },
+ "GTQ": {
+ "name": "Quetzal ya Guatemala",
+ "symbol": "GTQ"
+ },
+ "ZAR": {
+ "name": "randi ya Afrika Kusini",
+ "symbol": "ZAR"
+ },
+ "BRL": {
+ "name": "Real ya Brazil",
+ "symbol": "R$"
+ },
+ "IRR": {
+ "name": "Rial ya Iran",
+ "symbol": "IRR"
+ },
+ "QAR": {
+ "name": "Rial ya Katari",
+ "symbol": "QAR"
+ },
+ "OMR": {
+ "name": "Rial ya Omani",
+ "symbol": "OMR"
+ },
+ "YER": {
+ "name": "Rial ya Yemeni",
+ "symbol": "YER"
+ },
+ "KHR": {
+ "name": "Riel ya Kambodia",
+ "symbol": "KHR"
+ },
+ "MYR": {
+ "name": "Ringgit ya Malaysia",
+ "symbol": "MYR"
+ },
+ "SAR": {
+ "name": "riyal ya Saudia",
+ "symbol": "SAR"
+ },
+ "BYR": {
+ "name": "Ruble ya Belarusi",
+ "symbol": "BYR"
+ },
+ "RUB": {
+ "name": "Ruble ya Urusi",
+ "symbol": "RUB"
+ },
+ "MVR": {
+ "name": "Rufiyaa ya Maldivi",
+ "symbol": "MVR"
+ },
+ "INR": {
+ "name": "rupia ya India",
+ "symbol": "₹"
+ },
+ "MUR": {
+ "name": "rupia ya Morisi",
+ "symbol": "MUR"
+ },
+ "NPR": {
+ "name": "Rupia ya Nepali",
+ "symbol": "NPR"
+ },
+ "PKR": {
+ "name": "Rupia ya Pakistani",
+ "symbol": "PKR"
+ },
+ "LKR": {
+ "name": "Rupia ya Sirilanka",
+ "symbol": "LKR"
+ },
+ "SCR": {
+ "name": "rupia ya Ushelisheli",
+ "symbol": "SCR"
+ },
+ "IDR": {
+ "name": "Rupiah ya Indonesia",
+ "symbol": "IDR"
+ },
+ "ILS": {
+ "name": "Sheqel Mpya ya Israeli",
+ "symbol": "₪"
+ },
+ "KES": {
+ "name": "shilingi ya Kenya",
+ "symbol": "Ksh"
+ },
+ "SOS": {
+ "name": "shilingi ya Somalia",
+ "symbol": "SOS"
+ },
+ "TZS": {
+ "name": "shilingi ya Tanzania",
+ "symbol": "TSh"
+ },
+ "UGX": {
+ "name": "shilingi ya Uganda",
+ "symbol": "UGX"
+ },
+ "KGS": {
+ "name": "Som ya Kirigistani",
+ "symbol": "KGS"
+ },
+ "UZS": {
+ "name": "Som ya Uzibekistani",
+ "symbol": "UZS"
+ },
+ "TJS": {
+ "name": "Somoni ya Tajikistani",
+ "symbol": "TJS"
+ },
+ "SVC": {
+ "name": "SVC",
+ "symbol": "SVC"
+ },
+ "BDT": {
+ "name": "Taka ya Bangladeshi",
+ "symbol": "BDT"
+ },
+ "WST": {
+ "name": "Tala ya Samoa",
+ "symbol": "WST"
+ },
+ "KZT": {
+ "name": "Tenge ya Kazakistani",
+ "symbol": "KZT"
+ },
+ "MNT": {
+ "name": "Tugrik ya Mongolia",
+ "symbol": "MNT"
+ },
+ "VUV": {
+ "name": "Vatu ya Vanuatu",
+ "symbol": "VUV"
+ },
+ "KPW": {
+ "name": "Won ya Korea Kaskazini",
+ "symbol": "KPW"
+ },
+ "KRW": {
+ "name": "Won ya Korea Kusini",
+ "symbol": "â‚©"
+ },
+ "JPY": {
+ "name": "Yen ya Japani",
+ "symbol": "JPÂ¥"
+ },
+ "CNY": {
+ "name": "yuan ya Uchina",
+ "symbol": "CNÂ¥"
+ },
+ "EUR": {
+ "name": "yuro",
+ "symbol": "€"
+ },
+ "PLN": {
+ "name": "Zloty ya Polandi",
+ "symbol": "PLN"
+ },
+ "ZWL": {
+ "name": "ZWL",
+ "symbol": "ZWL"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/currency/swc.json b/library/intl/resources/currency/swc.json
new file mode 100644
index 000000000..5c1e38f95
--- /dev/null
+++ b/library/intl/resources/currency/swc.json
@@ -0,0 +1,634 @@
+{
+ "AFN": {
+ "name": "AFN",
+ "symbol": "AFN"
+ },
+ "ALL": {
+ "name": "ALL",
+ "symbol": "ALL"
+ },
+ "AMD": {
+ "name": "AMD",
+ "symbol": "AMD"
+ },
+ "ANG": {
+ "name": "ANG",
+ "symbol": "ANG"
+ },
+ "MGA": {
+ "name": "Ariary ya Bukini",
+ "symbol": "MGA"
+ },
+ "ARS": {
+ "name": "ARS",
+ "symbol": "ARS"
+ },
+ "AWG": {
+ "name": "AWG",
+ "symbol": "AWG"
+ },
+ "AZN": {
+ "name": "AZN",
+ "symbol": "AZN"
+ },
+ "BAM": {
+ "name": "BAM",
+ "symbol": "BAM"
+ },
+ "BBD": {
+ "name": "BBD",
+ "symbol": "BBD"
+ },
+ "BDT": {
+ "name": "BDT",
+ "symbol": "BDT"
+ },
+ "BGN": {
+ "name": "BGN",
+ "symbol": "BGN"
+ },
+ "ETB": {
+ "name": "Bir ya Uhabeshi",
+ "symbol": "ETB"
+ },
+ "BMD": {
+ "name": "BMD",
+ "symbol": "BMD"
+ },
+ "BND": {
+ "name": "BND",
+ "symbol": "BND"
+ },
+ "BOB": {
+ "name": "BOB",
+ "symbol": "BOB"
+ },
+ "BRL": {
+ "name": "BRL",
+ "symbol": "R$"
+ },
+ "BSD": {
+ "name": "BSD",
+ "symbol": "BSD"
+ },
+ "BTN": {
+ "name": "BTN",
+ "symbol": "BTN"
+ },
+ "BYR": {
+ "name": "BYR",
+ "symbol": "BYR"
+ },
+ "BZD": {
+ "name": "BZD",
+ "symbol": "BZD"
+ },
+ "CLP": {
+ "name": "CLP",
+ "symbol": "CLP"
+ },
+ "COP": {
+ "name": "COP",
+ "symbol": "COP"
+ },
+ "CRC": {
+ "name": "CRC",
+ "symbol": "CRC"
+ },
+ "CUC": {
+ "name": "CUC",
+ "symbol": "CUC"
+ },
+ "CUP": {
+ "name": "CUP",
+ "symbol": "CUP"
+ },
+ "CZK": {
+ "name": "CZK",
+ "symbol": "CZK"
+ },
+ "GMD": {
+ "name": "Dalasi ya Gambia",
+ "symbol": "GMD"
+ },
+ "DZD": {
+ "name": "Dinari ya Aljeria",
+ "symbol": "DZD"
+ },
+ "BHD": {
+ "name": "Dinari ya Bahareni",
+ "symbol": "BHD"
+ },
+ "LYD": {
+ "name": "Dinari ya Libya",
+ "symbol": "LYD"
+ },
+ "TND": {
+ "name": "Dinari ya Tunisia",
+ "symbol": "TND"
+ },
+ "AED": {
+ "name": "Dirham ya Falme za Kiarabu",
+ "symbol": "AED"
+ },
+ "MAD": {
+ "name": "Dirham ya Moroko",
+ "symbol": "MAD"
+ },
+ "DKK": {
+ "name": "DKK",
+ "symbol": "DKK"
+ },
+ "STD": {
+ "name": "Dobra ya Sao Tome na Principe",
+ "symbol": "STD"
+ },
+ "AUD": {
+ "name": "Dola ya Australia",
+ "symbol": "A$"
+ },
+ "CAD": {
+ "name": "Dola ya Kanada",
+ "symbol": "CA$"
+ },
+ "LRD": {
+ "name": "Dola ya Liberia",
+ "symbol": "LRD"
+ },
+ "USD": {
+ "name": "Dola ya Marekani",
+ "symbol": "US$"
+ },
+ "NAD": {
+ "name": "Dola ya Namibia",
+ "symbol": "NAD"
+ },
+ "DOP": {
+ "name": "DOP",
+ "symbol": "DOP"
+ },
+ "CVE": {
+ "name": "Eskudo ya Kepuvede",
+ "symbol": "CVE"
+ },
+ "XOF": {
+ "name": "Faranga CFA BCEAO",
+ "symbol": "CFA"
+ },
+ "XAF": {
+ "name": "Faranga CFA BEAC",
+ "symbol": "FCFA"
+ },
+ "BIF": {
+ "name": "Faranga ya Burundi",
+ "symbol": "BIF"
+ },
+ "DJF": {
+ "name": "Faranga ya Jibuti",
+ "symbol": "DJF"
+ },
+ "KMF": {
+ "name": "Faranga ya Komoro",
+ "symbol": "KMF"
+ },
+ "CDF": {
+ "name": "Faranga ya Kongo",
+ "symbol": "FC"
+ },
+ "RWF": {
+ "name": "Faranga ya Rwanda",
+ "symbol": "RWF"
+ },
+ "CHF": {
+ "name": "Faranga ya Uswisi",
+ "symbol": "CHF"
+ },
+ "FJD": {
+ "name": "FJD",
+ "symbol": "FJD"
+ },
+ "FKP": {
+ "name": "FKP",
+ "symbol": "FKP"
+ },
+ "GEL": {
+ "name": "GEL",
+ "symbol": "GEL"
+ },
+ "GHS": {
+ "name": "GHS",
+ "symbol": "GHS"
+ },
+ "GIP": {
+ "name": "GIP",
+ "symbol": "GIP"
+ },
+ "GNF": {
+ "name": "GNF",
+ "symbol": "GNF"
+ },
+ "GTQ": {
+ "name": "GTQ",
+ "symbol": "GTQ"
+ },
+ "GYD": {
+ "name": "GYD",
+ "symbol": "GYD"
+ },
+ "HKD": {
+ "name": "HKD",
+ "symbol": "HK$"
+ },
+ "HNL": {
+ "name": "HNL",
+ "symbol": "HNL"
+ },
+ "HRK": {
+ "name": "HRK",
+ "symbol": "HRK"
+ },
+ "HTG": {
+ "name": "HTG",
+ "symbol": "HTG"
+ },
+ "HUF": {
+ "name": "HUF",
+ "symbol": "HUF"
+ },
+ "IDR": {
+ "name": "IDR",
+ "symbol": "IDR"
+ },
+ "ILS": {
+ "name": "ILS",
+ "symbol": "₪"
+ },
+ "IQD": {
+ "name": "IQD",
+ "symbol": "IQD"
+ },
+ "IRR": {
+ "name": "IRR",
+ "symbol": "IRR"
+ },
+ "ISK": {
+ "name": "ISK",
+ "symbol": "ISK"
+ },
+ "JMD": {
+ "name": "JMD",
+ "symbol": "JMD"
+ },
+ "JOD": {
+ "name": "JOD",
+ "symbol": "JOD"
+ },
+ "KGS": {
+ "name": "KGS",
+ "symbol": "KGS"
+ },
+ "KHR": {
+ "name": "KHR",
+ "symbol": "KHR"
+ },
+ "KPW": {
+ "name": "KPW",
+ "symbol": "KPW"
+ },
+ "KRW": {
+ "name": "KRW",
+ "symbol": "â‚©"
+ },
+ "MWK": {
+ "name": "Kwacha ya Malawi",
+ "symbol": "MWK"
+ },
+ "ZMW": {
+ "name": "Kwacha ya Zambia",
+ "symbol": "ZMW"
+ },
+ "AOA": {
+ "name": "Kwanza ya Angola",
+ "symbol": "AOA"
+ },
+ "KWD": {
+ "name": "KWD",
+ "symbol": "KWD"
+ },
+ "KYD": {
+ "name": "KYD",
+ "symbol": "KYD"
+ },
+ "KZT": {
+ "name": "KZT",
+ "symbol": "KZT"
+ },
+ "LAK": {
+ "name": "LAK",
+ "symbol": "LAK"
+ },
+ "LBP": {
+ "name": "LBP",
+ "symbol": "LBP"
+ },
+ "SLL": {
+ "name": "Leoni",
+ "symbol": "SLL"
+ },
+ "SZL": {
+ "name": "Lilangeni",
+ "symbol": "SZL"
+ },
+ "LKR": {
+ "name": "LKR",
+ "symbol": "LKR"
+ },
+ "LSL": {
+ "name": "Loti ya Lesoto",
+ "symbol": "LSL"
+ },
+ "LTL": {
+ "name": "LTL",
+ "symbol": "LTL"
+ },
+ "MDL": {
+ "name": "MDL",
+ "symbol": "MDL"
+ },
+ "MKD": {
+ "name": "MKD",
+ "symbol": "MKD"
+ },
+ "MMK": {
+ "name": "MMK",
+ "symbol": "MMK"
+ },
+ "MNT": {
+ "name": "MNT",
+ "symbol": "MNT"
+ },
+ "MOP": {
+ "name": "MOP",
+ "symbol": "MOP"
+ },
+ "MVR": {
+ "name": "MVR",
+ "symbol": "MVR"
+ },
+ "MXN": {
+ "name": "MXN",
+ "symbol": "MX$"
+ },
+ "MYR": {
+ "name": "MYR",
+ "symbol": "MYR"
+ },
+ "MZN": {
+ "name": "MZN",
+ "symbol": "MZN"
+ },
+ "NGN": {
+ "name": "Naira ya Nijeria",
+ "symbol": "NGN"
+ },
+ "ERN": {
+ "name": "Nakfa ya Eritrea",
+ "symbol": "ERN"
+ },
+ "NIO": {
+ "name": "NIO",
+ "symbol": "NIO"
+ },
+ "NOK": {
+ "name": "NOK",
+ "symbol": "NOK"
+ },
+ "NPR": {
+ "name": "NPR",
+ "symbol": "NPR"
+ },
+ "NZD": {
+ "name": "NZD",
+ "symbol": "NZ$"
+ },
+ "OMR": {
+ "name": "OMR",
+ "symbol": "OMR"
+ },
+ "PAB": {
+ "name": "PAB",
+ "symbol": "PAB"
+ },
+ "EGP": {
+ "name": "Pauni ya Misri",
+ "symbol": "EGP"
+ },
+ "SHP": {
+ "name": "Pauni ya Santahelena",
+ "symbol": "SHP"
+ },
+ "SDG": {
+ "name": "Pauni ya Sudani",
+ "symbol": "SDG"
+ },
+ "GBP": {
+ "name": "Pauni ya Uingereza",
+ "symbol": "£"
+ },
+ "PEN": {
+ "name": "PEN",
+ "symbol": "PEN"
+ },
+ "PGK": {
+ "name": "PGK",
+ "symbol": "PGK"
+ },
+ "PHP": {
+ "name": "PHP",
+ "symbol": "PHP"
+ },
+ "PKR": {
+ "name": "PKR",
+ "symbol": "PKR"
+ },
+ "PLN": {
+ "name": "PLN",
+ "symbol": "PLN"
+ },
+ "BWP": {
+ "name": "Pula ya Botswana",
+ "symbol": "BWP"
+ },
+ "PYG": {
+ "name": "PYG",
+ "symbol": "PYG"
+ },
+ "QAR": {
+ "name": "QAR",
+ "symbol": "QAR"
+ },
+ "ZAR": {
+ "name": "Randi ya Afrika Kusini",
+ "symbol": "ZAR"
+ },
+ "SAR": {
+ "name": "Riyal ya Saudia",
+ "symbol": "SAR"
+ },
+ "RON": {
+ "name": "RON",
+ "symbol": "RON"
+ },
+ "RSD": {
+ "name": "RSD",
+ "symbol": "RSD"
+ },
+ "RUB": {
+ "name": "RUB",
+ "symbol": "RUB"
+ },
+ "INR": {
+ "name": "Rupia ya India",
+ "symbol": "₹"
+ },
+ "MUR": {
+ "name": "Rupia ya Morisi",
+ "symbol": "MUR"
+ },
+ "SCR": {
+ "name": "Rupia ya Shelisheli",
+ "symbol": "SCR"
+ },
+ "JPY": {
+ "name": "Sarafu ya Kijapani",
+ "symbol": "JPÂ¥"
+ },
+ "SBD": {
+ "name": "SBD",
+ "symbol": "SBD"
+ },
+ "SEK": {
+ "name": "SEK",
+ "symbol": "SEK"
+ },
+ "SGD": {
+ "name": "SGD",
+ "symbol": "SGD"
+ },
+ "KES": {
+ "name": "Shilingi ya Kenya",
+ "symbol": "KES"
+ },
+ "SOS": {
+ "name": "Shilingi ya Somalia",
+ "symbol": "SOS"
+ },
+ "TZS": {
+ "name": "Shilingi ya Tanzania",
+ "symbol": "TZS"
+ },
+ "UGX": {
+ "name": "Shilingi ya Uganda",
+ "symbol": "UGX"
+ },
+ "SRD": {
+ "name": "SRD",
+ "symbol": "SRD"
+ },
+ "SSP": {
+ "name": "SSP",
+ "symbol": "SSP"
+ },
+ "SVC": {
+ "name": "SVC",
+ "symbol": "SVC"
+ },
+ "SYP": {
+ "name": "SYP",
+ "symbol": "SYP"
+ },
+ "THB": {
+ "name": "THB",
+ "symbol": "THB"
+ },
+ "TJS": {
+ "name": "TJS",
+ "symbol": "TJS"
+ },
+ "TMT": {
+ "name": "TMT",
+ "symbol": "TMT"
+ },
+ "TOP": {
+ "name": "TOP",
+ "symbol": "TOP"
+ },
+ "TRY": {
+ "name": "TRY",
+ "symbol": "TRY"
+ },
+ "TTD": {
+ "name": "TTD",
+ "symbol": "TTD"
+ },
+ "TWD": {
+ "name": "TWD",
+ "symbol": "NT$"
+ },
+ "UAH": {
+ "name": "UAH",
+ "symbol": "UAH"
+ },
+ "MRO": {
+ "name": "Ugwiya ya Moritania",
+ "symbol": "MRO"
+ },
+ "UYU": {
+ "name": "UYU",
+ "symbol": "UYU"
+ },
+ "UZS": {
+ "name": "UZS",
+ "symbol": "UZS"
+ },
+ "VEF": {
+ "name": "VEF",
+ "symbol": "VEF"
+ },
+ "VND": {
+ "name": "VND",
+ "symbol": "â‚«"
+ },
+ "VUV": {
+ "name": "VUV",
+ "symbol": "VUV"
+ },
+ "WST": {
+ "name": "WST",
+ "symbol": "WST"
+ },
+ "XCD": {
+ "name": "XCD",
+ "symbol": "EC$"
+ },
+ "XPF": {
+ "name": "XPF",
+ "symbol": "CFPF"
+ },
+ "YER": {
+ "name": "YER",
+ "symbol": "YER"
+ },
+ "CNY": {
+ "name": "Yuan Renminbi ya China",
+ "symbol": "CNÂ¥"
+ },
+ "EUR": {
+ "name": "Yuro",
+ "symbol": "€"
+ },
+ "ZWL": {
+ "name": "ZWL",
+ "symbol": "ZWL"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/currency/ta-MY.json b/library/intl/resources/currency/ta-MY.json
new file mode 100644
index 000000000..d563b0f7a
--- /dev/null
+++ b/library/intl/resources/currency/ta-MY.json
@@ -0,0 +1,634 @@
+{
+ "XOF": {
+ "name": "CFA ஃபà¯à®°à®¾à®™à¯à®•à¯ BCEAO",
+ "symbol": "CFA"
+ },
+ "SVC": {
+ "name": "SVC",
+ "symbol": "SVC"
+ },
+ "ZWL": {
+ "name": "ZWL",
+ "symbol": "ZWL"
+ },
+ "AOA": {
+ "name": "à®…à®™à¯à®•à¯‹à®²à®©à¯ கà¯à®µà®¾à®©à¯à®¸à®¾",
+ "symbol": "AOA"
+ },
+ "AZN": {
+ "name": "அசரà¯à®ªà¯ˆà®œà®¾à®©à®¿ மனதà¯",
+ "symbol": "AZN"
+ },
+ "USD": {
+ "name": "அமெரிகà¯à®• டாலரà¯",
+ "symbol": "$"
+ },
+ "ARS": {
+ "name": "à®…à®°à¯à®œà¯†à®©à¯à®Ÿà®¿à®©à®¾ பேசோ",
+ "symbol": "ARS"
+ },
+ "AWG": {
+ "name": "à®…à®°à¯à®ªà®©à¯ ஃபà¯à®³à¯‹à®°à®¿à®©à¯",
+ "symbol": "AWG"
+ },
+ "ALL": {
+ "name": "அலà¯à®ªà¯‡à®©à®¿à®¯à®©à¯ லெகà¯",
+ "symbol": "ALL"
+ },
+ "DZD": {
+ "name": "அலà¯à®œà¯€à®°à®¿à®¯à®©à¯ தினாரà¯",
+ "symbol": "DZD"
+ },
+ "AFN": {
+ "name": "ஆஃபà¯à®•à®¾à®©à¯ ஆஃபà¯à®•à®¾à®©à®¿",
+ "symbol": "AFN"
+ },
+ "AMD": {
+ "name": "ஆரà¯à®®à¯‡à®©à®¿à®¯à®©à¯ டà¯à®°à®¾à®®à¯",
+ "symbol": "AMD"
+ },
+ "AUD": {
+ "name": "ஆஸà¯à®¤à®¿à®°à¯‡à®²à®¿à®¯ டாலரà¯",
+ "symbol": "A$"
+ },
+ "INR": {
+ "name": "இநà¯à®¤à®¿à®¯ ரூபாயà¯",
+ "symbol": "₹"
+ },
+ "IDR": {
+ "name": "இநà¯à®¤à¯‹à®©à¯‡à®·à®¿à®¯à®©à¯ à®°à¯à®ªà®¿à®¯à®¾",
+ "symbol": "IDR"
+ },
+ "IRR": {
+ "name": "இரானியன௠ரியாலà¯",
+ "symbol": "IRR"
+ },
+ "ERN": {
+ "name": "இரிடிரியன௠நகà¯à®ƒà®ªà®¾",
+ "symbol": "ERN"
+ },
+ "LKR": {
+ "name": "இலஙà¯à®•à¯ˆ ரூபாயà¯",
+ "symbol": "LKR"
+ },
+ "ILS": {
+ "name": "இஸà¯à®°à¯‡à®²à®¿ நியூ ஷிகேலà¯",
+ "symbol": "₪"
+ },
+ "IQD": {
+ "name": "ஈராகà¯à®•à®¿ தினாரà¯",
+ "symbol": "IQD"
+ },
+ "UAH": {
+ "name": "உகà¯à®°à¯ˆà®©à®¿à®¯à®©à¯ ஹிரைவà¯à®©à®¿à®¯à®¾",
+ "symbol": "UAH"
+ },
+ "UGX": {
+ "name": "உகாணà¯à®Ÿà®©à¯ ஷிலà¯à®²à®¿à®™à¯",
+ "symbol": "UGX"
+ },
+ "UYU": {
+ "name": "உரà¯à®•à¯à®µà¯‡à®¯à®©à¯ பேசோ",
+ "symbol": "UYU"
+ },
+ "UZS": {
+ "name": "உஸà¯à®ªà¯†à®•à¯à®•à®¿à®¸à¯à®¤à®¾à®©à¯ சோமà¯",
+ "symbol": "UZS"
+ },
+ "EGP": {
+ "name": "எகிபà¯à®¤à®¿à®¯ பவà¯à®£à¯à®Ÿà¯",
+ "symbol": "EGP"
+ },
+ "ETB": {
+ "name": "எதà¯à®¤à®¿à®¯à¯‹à®ªà¯à®ªà®¿à®¯à®©à¯ பிரà¯",
+ "symbol": "ETB"
+ },
+ "YER": {
+ "name": "à®à®®à®©à®¿ ரியாலà¯",
+ "symbol": "YER"
+ },
+ "AED": {
+ "name": "à®à®•à¯à®•à®¿à®¯ அரப௠எமிரேடà¯à®¸à¯ திரà¯à®¹à®®à¯",
+ "symbol": "AED"
+ },
+ "ISK": {
+ "name": "à®à®¸à¯à®²à®¾à®£à¯à®Ÿà®¿à®•à¯ கà¯à®°à¯‹à®©à®¾",
+ "symbol": "ISK"
+ },
+ "OMR": {
+ "name": "ஓமானி ரியாலà¯",
+ "symbol": "OMR"
+ },
+ "XAF": {
+ "name": "ஃபà¯à®°à®¾à®™à¯à®•à¯ (CFA BEAC)",
+ "symbol": "FCFA"
+ },
+ "XPF": {
+ "name": "ஃபà¯à®°à®¾à®™à¯à®•à¯ (CFP)",
+ "symbol": "CFPF"
+ },
+ "FKP": {
+ "name": "ஃபாகà¯à®²à®¾à®¨à¯à®¤à¯ தீவà¯à®•à®³à¯ பவà¯à®£à¯à®Ÿà¯",
+ "symbol": "FKP"
+ },
+ "FJD": {
+ "name": "ஃபிஜியன௠டாலரà¯",
+ "symbol": "FJD"
+ },
+ "QAR": {
+ "name": "கதà¯à®¤à®¾à®°à®¿ ரியாலà¯",
+ "symbol": "QAR"
+ },
+ "KHR": {
+ "name": "கமà¯à®ªà¯‹à®Ÿà®¿à®¯à®©à¯ ரியெலà¯",
+ "symbol": "KHR"
+ },
+ "KMF": {
+ "name": "கமோரியன௠ஃபà¯à®°à®¾à®™à¯à®•à¯",
+ "symbol": "KMF"
+ },
+ "GYD": {
+ "name": "கயானீஸ௠டாலரà¯",
+ "symbol": "GYD"
+ },
+ "CAD": {
+ "name": "கனடியன௠டாலரà¯",
+ "symbol": "CA$"
+ },
+ "KZT": {
+ "name": "கஸகஸà¯à®¤à®¾à®©à®¿ டெனà¯à®•à¯‡",
+ "symbol": "KZT"
+ },
+ "CDF": {
+ "name": "காஙà¯à®•à¯‹à®²à¯€à®¸à¯ ஃபà¯à®°à®¾à®™à¯à®•à¯",
+ "symbol": "CDF"
+ },
+ "GHS": {
+ "name": "கானயன௠சேடி",
+ "symbol": "GHS"
+ },
+ "GIP": {
+ "name": "கிபà¯à®°à®¾à®²à¯à®Ÿà®°à¯ பவà¯à®£à¯à®Ÿà¯",
+ "symbol": "GIP"
+ },
+ "CUC": {
+ "name": "கியூபன௠கனà¯à®µà¯†à®°à¯à®Ÿà®¿à®ªà®¿à®²à¯ பேசோ",
+ "symbol": "CUC"
+ },
+ "CUP": {
+ "name": "கியூபன௠பெசோ",
+ "symbol": "CUP"
+ },
+ "KGS": {
+ "name": "கிரà¯à®•à®¿à®¸à¯à®¤à®¾à®©à®¿ சோமà¯",
+ "symbol": "KGS"
+ },
+ "XCD": {
+ "name": "கிழகà¯à®•à¯ கரீபியன௠டாலரà¯",
+ "symbol": "EC$"
+ },
+ "GNF": {
+ "name": "கினியன௠ஃபà¯à®°à®¾à®™à¯à®•à¯",
+ "symbol": "GNF"
+ },
+ "HRK": {
+ "name": "கà¯à®°à¯‹à®·à®¿à®¯à®©à¯ கà¯à®©à®¾",
+ "symbol": "HRK"
+ },
+ "GTQ": {
+ "name": "கà¯à®µà®¾à®Ÿà¯†à®®à¯†à®²à®©à¯ கà¯à®¯à¯‚டà¯à®¸à®²à¯",
+ "symbol": "GTQ"
+ },
+ "KWD": {
+ "name": "கà¯à®µà¯ˆà®¤à¯à®¤à®¿ தினாரà¯",
+ "symbol": "KWD"
+ },
+ "KES": {
+ "name": "கெனà¯à®¯à®©à¯ ஷிலà¯à®²à®¿à®™à¯",
+ "symbol": "KES"
+ },
+ "CVE": {
+ "name": "கேப௠வெரà¯à®Ÿà®¿à®¯à®©à¯ எஸà¯à®•à¯à®Ÿà¯‹",
+ "symbol": "CVE"
+ },
+ "GMD": {
+ "name": "கேமà¯à®ªà®¿à®¯à®©à¯ தலாசி",
+ "symbol": "GMD"
+ },
+ "KYD": {
+ "name": "கேமன௠தீவà¯à®•à®³à¯ டாலரà¯",
+ "symbol": "KYD"
+ },
+ "COP": {
+ "name": "கொலமà¯à®ªà®¿à®¯à®©à¯ பெசோ",
+ "symbol": "COP"
+ },
+ "CRC": {
+ "name": "கோஸà¯à®Ÿà®¾ ரிகன௠கொலோனà¯",
+ "symbol": "CRC"
+ },
+ "WST": {
+ "name": "சமோவான௠தாலா",
+ "symbol": "WST"
+ },
+ "SAR": {
+ "name": "சவà¯à®¤à®¿ ரியாலà¯",
+ "symbol": "SAR"
+ },
+ "SBD": {
+ "name": "சாலமன௠தீவà¯à®•à®³à¯ டாலரà¯",
+ "symbol": "SBD"
+ },
+ "STD": {
+ "name": "சாவ௠டோமி மறà¯à®±à¯à®®à¯ பிரினà¯à®¸à¯à®ªà®¿ டோபà¯à®°à®¾",
+ "symbol": "STD"
+ },
+ "SGD": {
+ "name": "சிஙà¯à®•à®ªà¯à®ªà¯‚ர௠டாலரà¯",
+ "symbol": "S$"
+ },
+ "SCR": {
+ "name": "சிசீலோயிஸ௠ரà¯à®ªà¯€",
+ "symbol": "SCR"
+ },
+ "SLL": {
+ "name": "சியாரா லியோனியன௠லியோனà¯",
+ "symbol": "SLL"
+ },
+ "SYP": {
+ "name": "சிரியன௠பவà¯à®£à¯à®Ÿà¯",
+ "symbol": "SYP"
+ },
+ "CLP": {
+ "name": "சிலியன௠பெசோ",
+ "symbol": "CLP"
+ },
+ "CNY": {
+ "name": "சீன யà¯à®µà®¾à®©à¯",
+ "symbol": "CNÂ¥"
+ },
+ "SRD": {
+ "name": "சà¯à®°à®¿à®©à®¾à®®à¯€à®¸à¯ டாலரà¯",
+ "symbol": "SRD"
+ },
+ "SZL": {
+ "name": "சà¯à®µà®¾à®¸à®¿ லிலாஙà¯à®•à®©à®¿",
+ "symbol": "SZL"
+ },
+ "CHF": {
+ "name": "சà¯à®µà®¿à®¸à¯ ஃபà¯à®°à®¾à®™à¯à®•à¯",
+ "symbol": "CHF"
+ },
+ "SDG": {
+ "name": "சூடானீஸ௠பவà¯à®£à¯à®Ÿà¯",
+ "symbol": "SDG"
+ },
+ "CZK": {
+ "name": "செக௠கà¯à®Ÿà®¿à®¯à®°à®šà¯ கொரà¯à®©à®¾",
+ "symbol": "CZK"
+ },
+ "SHP": {
+ "name": "செயினà¯à®Ÿà¯ ஹெலேனா பவà¯à®£à¯à®Ÿà¯",
+ "symbol": "SHP"
+ },
+ "RSD": {
+ "name": "செரà¯à®ªà®¿à®¯à®©à¯ தினாரà¯",
+ "symbol": "RSD"
+ },
+ "SOS": {
+ "name": "சோமாலி ஷிலà¯à®²à®¿à®™à¯",
+ "symbol": "SOS"
+ },
+ "DKK": {
+ "name": "டானிஷ௠கà¯à®°à¯‹à®©à¯",
+ "symbol": "DKK"
+ },
+ "TTD": {
+ "name": "டிரினாட௠மறà¯à®±à¯à®®à¯ டோபாகோ டாலரà¯",
+ "symbol": "TTD"
+ },
+ "DOP": {
+ "name": "டொமினிகà¯à®•à®©à¯ பேசோ",
+ "symbol": "DOP"
+ },
+ "TZS": {
+ "name": "தனà¯à®¸à®¾à®©à®¿à®¯à®©à¯ ஷிலà¯à®²à®¿à®™à¯",
+ "symbol": "TZS"
+ },
+ "TJS": {
+ "name": "தஜிகிஸà¯à®¤à®¾à®©à®¿ சோமோனி",
+ "symbol": "TJS"
+ },
+ "THB": {
+ "name": "தாய௠பாடà¯",
+ "symbol": "฿"
+ },
+ "TMT": {
+ "name": "தà¯à®°à¯à®•à¯à®®à¯‡à®©à®¿à®¸à¯à®¤à®¾à®©à®¿ மனதà¯",
+ "symbol": "TMT"
+ },
+ "TRY": {
+ "name": "தà¯à®°à¯à®•à¯à®•à®¿à®·à¯ லீரா",
+ "symbol": "TRY"
+ },
+ "TND": {
+ "name": "தà¯à®©à®¿à®·à®¿à®¯à®©à¯ தினாரà¯",
+ "symbol": "TND"
+ },
+ "SSP": {
+ "name": "தெறà¯à®•à¯ சூடானீஸ௠பவà¯à®£à¯à®Ÿà¯",
+ "symbol": "SSP"
+ },
+ "ZAR": {
+ "name": "தென௠ஆபà¯à®°à®¿à®•à¯à®• ராணà¯à®Ÿà¯",
+ "symbol": "ZAR"
+ },
+ "KRW": {
+ "name": "தென௠கொரிய வானà¯",
+ "symbol": "â‚©"
+ },
+ "TOP": {
+ "name": "தொஙà¯à®•à®¾à®©à¯ பஙà¯à®•à®¾",
+ "symbol": "TOP"
+ },
+ "NAD": {
+ "name": "நமீபியன௠டாலரà¯",
+ "symbol": "NAD"
+ },
+ "NOK": {
+ "name": "நாரà¯à®µà¯‡à®œà®¿à®¯à®©à¯ கà¯à®°à¯‹à®©à¯",
+ "symbol": "NOK"
+ },
+ "NIO": {
+ "name": "நிகாராகà¯à®µà®¾à®©à¯ கோரà¯à®Ÿà¯‹à®ªà®¾",
+ "symbol": "NIO"
+ },
+ "NZD": {
+ "name": "நியூசிலாநà¯à®¤à¯ டாலரà¯",
+ "symbol": "NZ$"
+ },
+ "ANG": {
+ "name": "நெதரà¯à®²à¯‡à®£à¯à®Ÿà¯à®¸à¯ அனà¯à®Ÿà®¿à®²à®¿à®¯à®©à¯ கிலà¯à®Ÿà®°à¯",
+ "symbol": "ANG"
+ },
+ "NPR": {
+ "name": "நேபாளீஸ௠ரூபாயà¯",
+ "symbol": "NPR"
+ },
+ "NGN": {
+ "name": "நைஜீரியன௠நைரா",
+ "symbol": "NGN"
+ },
+ "BDT": {
+ "name": "பஙà¯à®•à®³à®¾à®¤à¯‡à®·à®¿ டாகா",
+ "symbol": "BDT"
+ },
+ "PGK": {
+ "name": "பபà¯à®µà®¾ நியூ கினியன௠கினா",
+ "symbol": "PGK"
+ },
+ "PYG": {
+ "name": "பராகà¯à®µà®©à¯ கà¯à®µà®¾à®°à®¾à®©à®¿",
+ "symbol": "PYG"
+ },
+ "PAB": {
+ "name": "பனாமானியன௠பாலà¯à®ªà¯‹à®ªà®¾",
+ "symbol": "PAB"
+ },
+ "BHD": {
+ "name": "பஹà¯à®°à¯ˆà®©à®¿ தினாரà¯",
+ "symbol": "BHD"
+ },
+ "BSD": {
+ "name": "பஹாமியன௠டாலரà¯",
+ "symbol": "BSD"
+ },
+ "PKR": {
+ "name": "பாகிஸà¯à®¤à®¾à®©à®¿ ரூபாயà¯",
+ "symbol": "PKR"
+ },
+ "BBD": {
+ "name": "பாரà¯à®ªà¯‡à®Ÿà®¿à®¯à®©à¯ டாலரà¯",
+ "symbol": "BBD"
+ },
+ "GBP": {
+ "name": "பிரிடà¯à®Ÿà®¿à®·à¯ பவà¯à®£à¯à®Ÿà¯ ஸà¯à®Ÿà¯†à®°à¯à®²à®¿à®™à¯",
+ "symbol": "£"
+ },
+ "BRL": {
+ "name": "பிரேசிலியன௠ரியாலà¯",
+ "symbol": "R$"
+ },
+ "PHP": {
+ "name": "பிலிபà¯à®ªà¯ˆà®©à¯ பெசோ",
+ "symbol": "PHP"
+ },
+ "TWD": {
+ "name": "பà¯à®¤à®¿à®¯ தைவான௠டாலரà¯",
+ "symbol": "NT$"
+ },
+ "BIF": {
+ "name": "பà¯à®°à¯à®£à¯à®Ÿà®¿à®¯à®©à¯ ஃபà¯à®°à®¾à®™à¯à®•à¯",
+ "symbol": "BIF"
+ },
+ "BND": {
+ "name": "பà¯à®°à¯‚னே டாலரà¯",
+ "symbol": "BND"
+ },
+ "BGN": {
+ "name": "பà¯à®²à¯à®•à¯‡à®°à®¿à®¯à®©à¯ லெவà¯",
+ "symbol": "BGN"
+ },
+ "BTN": {
+ "name": "பூடà¯à®Ÿà®¾à®©à®¿à®·à¯ நிகà¯à®²à¯à®Ÿà¯à®°à®®à¯",
+ "symbol": "BTN"
+ },
+ "BMD": {
+ "name": "பெரà¯à®®à¯à®Ÿà®©à¯ டாலரà¯",
+ "symbol": "BMD"
+ },
+ "PEN": {
+ "name": "பெரà¯à®µà®¿à®¯à®©à¯ நியூவோ சோலà¯",
+ "symbol": "PEN"
+ },
+ "BYR": {
+ "name": "பெலரà¯à®šà®¿à®¯à®©à¯ ரூபிலà¯",
+ "symbol": "BYR"
+ },
+ "BZD": {
+ "name": "பெலீஷ௠டாலரà¯",
+ "symbol": "BZD"
+ },
+ "BOB": {
+ "name": "பொலிவியன௠பொலிவியானோ",
+ "symbol": "BOB"
+ },
+ "BWP": {
+ "name": "போடà¯à®¸à¯à®µà®¾à®©à®¾ பà¯à®²à®¾",
+ "symbol": "BWP"
+ },
+ "PLN": {
+ "name": "போலிஷ௠ஸà¯à®²à®¾à®Ÿà¯à®Ÿà®¿",
+ "symbol": "PLN"
+ },
+ "BAM": {
+ "name": "போஸà¯à®©à®¿à®¯à®¾-ஹெரà¯à®¸à¯‡à®•à¯‹à®µà®¿à®©à®¾ கனà¯à®µà¯†à®°à¯à®Ÿà®¿à®ªà®¿à®²à¯ மாரà¯à®•à¯",
+ "symbol": "BAM"
+ },
+ "MNT": {
+ "name": "மஙà¯à®•à¯‹à®²à®¿à®¯à®©à¯ டà¯à®•à¯à®°à®¿à®•à¯",
+ "symbol": "MNT"
+ },
+ "MGA": {
+ "name": "மலகாசி à®à®°à®¿à®¯à®°à®¿",
+ "symbol": "MGA"
+ },
+ "MWK": {
+ "name": "மலாவியன௠கà¯à®µà®¾à®šà¯à®šà®¾",
+ "symbol": "MWK"
+ },
+ "MYR": {
+ "name": "மலேசிய ரிஙà¯à®•à®¿à®Ÿà¯",
+ "symbol": "RM"
+ },
+ "MDL": {
+ "name": "மாலà¯à®Ÿà¯‹à®µà®©à¯ லியூ",
+ "symbol": "MDL"
+ },
+ "MVR": {
+ "name": "மாலதà¯à®¤à¯€à®µà¯ à®°à¯à®ƒà®ªà®¿à®¯à®¾",
+ "symbol": "MVR"
+ },
+ "MMK": {
+ "name": "மியானà¯à®®à®°à¯ கியாதà¯",
+ "symbol": "MMK"
+ },
+ "MXN": {
+ "name": "மெகà¯à®¸à®¿à®•à®©à¯ பெசோ",
+ "symbol": "MX$"
+ },
+ "MOP": {
+ "name": "மெகனீஸ௠படாகா",
+ "symbol": "MOP"
+ },
+ "MKD": {
+ "name": "மெசிடோனியன௠தினாரà¯",
+ "symbol": "MKD"
+ },
+ "MZN": {
+ "name": "மொசாமà¯à®ªà®¿à®•à¯‡à®©à¯ மெடிகலà¯",
+ "symbol": "MZN"
+ },
+ "MAD": {
+ "name": "மொராகà¯à®•à¯‹ திரà¯à®¹à®¾à®®à¯",
+ "symbol": "MAD"
+ },
+ "MRO": {
+ "name": "மொரிஷியனியன௠ஒகà¯à®¯à¯à®¯à®¾",
+ "symbol": "MRO"
+ },
+ "MUR": {
+ "name": "மொரீஷியன௠ரà¯à®ªà¯€",
+ "symbol": "MUR"
+ },
+ "EUR": {
+ "name": "யூரோ",
+ "symbol": "€"
+ },
+ "RUB": {
+ "name": "ரஷியன௠ரூபிளà¯",
+ "symbol": "RUB"
+ },
+ "RWF": {
+ "name": "à®°à¯à®µà®¾à®£à¯à®Ÿà®¾ ஃபà¯à®°à®¾à®™à¯à®•à¯",
+ "symbol": "RWF"
+ },
+ "RON": {
+ "name": "ரோமானியன௠லியூ",
+ "symbol": "RON"
+ },
+ "LAK": {
+ "name": "லவà¯à®Ÿà¯à®Ÿà®¿à®¯à®©à¯ கிபà¯",
+ "symbol": "LAK"
+ },
+ "LTL": {
+ "name": "லிதà¯à®µà¯‡à®©à®¿à®¯à®©à¯ லிடஸà¯",
+ "symbol": "LTL"
+ },
+ "LYD": {
+ "name": "லிபியன௠தினாரà¯",
+ "symbol": "LYD"
+ },
+ "LSL": {
+ "name": "லெசோதோ லோடà¯à®Ÿà®¿",
+ "symbol": "LSL"
+ },
+ "LBP": {
+ "name": "லெபனீஸ௠பவà¯à®£à¯à®Ÿà¯",
+ "symbol": "LBP"
+ },
+ "LRD": {
+ "name": "லைபீரியன௠டாலரà¯",
+ "symbol": "LRD"
+ },
+ "KPW": {
+ "name": "வட கொரிய வானà¯",
+ "symbol": "KPW"
+ },
+ "VUV": {
+ "name": "வனà¯à®µà®¾à®Ÿà¯à®Ÿà¯ வாடà¯à®Ÿà¯",
+ "symbol": "VUV"
+ },
+ "VND": {
+ "name": "வியடà¯à®¨à®¾à®®à¯€à®¸à¯ டாஙà¯",
+ "symbol": "â‚«"
+ },
+ "VEF": {
+ "name": "வெனிசà¯à®²à®¿à®¯à®©à¯ போலிவரà¯",
+ "symbol": "VEF"
+ },
+ "JPY": {
+ "name": "ஜபà¯à®ªà®¾à®©à®¿à®¯ யெனà¯",
+ "symbol": "Â¥"
+ },
+ "JMD": {
+ "name": "ஜமைகà¯à®•à®¾à®©à¯ டாலரà¯",
+ "symbol": "JMD"
+ },
+ "DJF": {
+ "name": "ஜிபவà¯à®Ÿà®¿à®¯à¯†à®©à¯ ஃபà¯à®°à®¾à®™à¯à®•à¯",
+ "symbol": "DJF"
+ },
+ "GEL": {
+ "name": "ஜியாரà¯à®œà®¿à®¯à®©à¯ லாரி",
+ "symbol": "GEL"
+ },
+ "JOD": {
+ "name": "ஜோரà¯à®Ÿà®¾à®©à®¿à®¯à®©à¯ டைனரà¯",
+ "symbol": "JOD"
+ },
+ "SEK": {
+ "name": "ஸà¯à®µà¯‡à®¤à®¿à®·à¯ கà¯à®°à¯‹à®©à®¾",
+ "symbol": "SEK"
+ },
+ "ZMW": {
+ "name": "ஸாமà¯à®ªà®¿à®¯à®©à¯ கà¯à®µà®¾à®šà®¾",
+ "symbol": "ZMW"
+ },
+ "HUF": {
+ "name": "ஹஙà¯à®•à¯‡à®°à®¿à®¯à®©à¯ ஃபோரினà¯à®Ÿà¯",
+ "symbol": "HUF"
+ },
+ "HTG": {
+ "name": "ஹயேதà¯à®¤à®¿à®¯à®©à¯ கோரà¯à®Ÿà¯‡",
+ "symbol": "HTG"
+ },
+ "HKD": {
+ "name": "ஹாஙà¯à®•à®¾à®™à¯ டாலரà¯",
+ "symbol": "HK$"
+ },
+ "HNL": {
+ "name": "ஹோனà¯à®Ÿà¯‚ரன௠லெமà¯à®ªà¯€à®°à®¾",
+ "symbol": "HNL"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/currency/ta-SG.json b/library/intl/resources/currency/ta-SG.json
new file mode 100644
index 000000000..be3db0c1d
--- /dev/null
+++ b/library/intl/resources/currency/ta-SG.json
@@ -0,0 +1,634 @@
+{
+ "XOF": {
+ "name": "CFA ஃபà¯à®°à®¾à®™à¯à®•à¯ BCEAO",
+ "symbol": "CFA"
+ },
+ "SVC": {
+ "name": "SVC",
+ "symbol": "SVC"
+ },
+ "ZWL": {
+ "name": "ZWL",
+ "symbol": "ZWL"
+ },
+ "AOA": {
+ "name": "à®…à®™à¯à®•à¯‹à®²à®©à¯ கà¯à®µà®¾à®©à¯à®¸à®¾",
+ "symbol": "AOA"
+ },
+ "AZN": {
+ "name": "அசரà¯à®ªà¯ˆà®œà®¾à®©à®¿ மனதà¯",
+ "symbol": "AZN"
+ },
+ "USD": {
+ "name": "அமெரிகà¯à®• டாலரà¯",
+ "symbol": "US$"
+ },
+ "ARS": {
+ "name": "à®…à®°à¯à®œà¯†à®©à¯à®Ÿà®¿à®©à®¾ பேசோ",
+ "symbol": "ARS"
+ },
+ "AWG": {
+ "name": "à®…à®°à¯à®ªà®©à¯ ஃபà¯à®³à¯‹à®°à®¿à®©à¯",
+ "symbol": "AWG"
+ },
+ "ALL": {
+ "name": "அலà¯à®ªà¯‡à®©à®¿à®¯à®©à¯ லெகà¯",
+ "symbol": "ALL"
+ },
+ "DZD": {
+ "name": "அலà¯à®œà¯€à®°à®¿à®¯à®©à¯ தினாரà¯",
+ "symbol": "DZD"
+ },
+ "AFN": {
+ "name": "ஆஃபà¯à®•à®¾à®©à¯ ஆஃபà¯à®•à®¾à®©à®¿",
+ "symbol": "AFN"
+ },
+ "AMD": {
+ "name": "ஆரà¯à®®à¯‡à®©à®¿à®¯à®©à¯ டà¯à®°à®¾à®®à¯",
+ "symbol": "AMD"
+ },
+ "AUD": {
+ "name": "ஆஸà¯à®¤à®¿à®°à¯‡à®²à®¿à®¯ டாலரà¯",
+ "symbol": "A$"
+ },
+ "INR": {
+ "name": "இநà¯à®¤à®¿à®¯ ரூபாயà¯",
+ "symbol": "₹"
+ },
+ "IDR": {
+ "name": "இநà¯à®¤à¯‹à®©à¯‡à®·à®¿à®¯à®©à¯ à®°à¯à®ªà®¿à®¯à®¾",
+ "symbol": "IDR"
+ },
+ "IRR": {
+ "name": "இரானியன௠ரியாலà¯",
+ "symbol": "IRR"
+ },
+ "ERN": {
+ "name": "இரிடிரியன௠நகà¯à®ƒà®ªà®¾",
+ "symbol": "ERN"
+ },
+ "LKR": {
+ "name": "இலஙà¯à®•à¯ˆ ரூபாயà¯",
+ "symbol": "LKR"
+ },
+ "ILS": {
+ "name": "இஸà¯à®°à¯‡à®²à®¿ நியூ ஷிகேலà¯",
+ "symbol": "₪"
+ },
+ "IQD": {
+ "name": "ஈராகà¯à®•à®¿ தினாரà¯",
+ "symbol": "IQD"
+ },
+ "UAH": {
+ "name": "உகà¯à®°à¯ˆà®©à®¿à®¯à®©à¯ ஹிரைவà¯à®©à®¿à®¯à®¾",
+ "symbol": "UAH"
+ },
+ "UGX": {
+ "name": "உகாணà¯à®Ÿà®©à¯ ஷிலà¯à®²à®¿à®™à¯",
+ "symbol": "UGX"
+ },
+ "UYU": {
+ "name": "உரà¯à®•à¯à®µà¯‡à®¯à®©à¯ பேசோ",
+ "symbol": "UYU"
+ },
+ "UZS": {
+ "name": "உஸà¯à®ªà¯†à®•à¯à®•à®¿à®¸à¯à®¤à®¾à®©à¯ சோமà¯",
+ "symbol": "UZS"
+ },
+ "EGP": {
+ "name": "எகிபà¯à®¤à®¿à®¯ பவà¯à®£à¯à®Ÿà¯",
+ "symbol": "EGP"
+ },
+ "ETB": {
+ "name": "எதà¯à®¤à®¿à®¯à¯‹à®ªà¯à®ªà®¿à®¯à®©à¯ பிரà¯",
+ "symbol": "ETB"
+ },
+ "YER": {
+ "name": "à®à®®à®©à®¿ ரியாலà¯",
+ "symbol": "YER"
+ },
+ "AED": {
+ "name": "à®à®•à¯à®•à®¿à®¯ அரப௠எமிரேடà¯à®¸à¯ திரà¯à®¹à®®à¯",
+ "symbol": "AED"
+ },
+ "ISK": {
+ "name": "à®à®¸à¯à®²à®¾à®£à¯à®Ÿà®¿à®•à¯ கà¯à®°à¯‹à®©à®¾",
+ "symbol": "ISK"
+ },
+ "OMR": {
+ "name": "ஓமானி ரியாலà¯",
+ "symbol": "OMR"
+ },
+ "XAF": {
+ "name": "ஃபà¯à®°à®¾à®™à¯à®•à¯ (CFA BEAC)",
+ "symbol": "FCFA"
+ },
+ "XPF": {
+ "name": "ஃபà¯à®°à®¾à®™à¯à®•à¯ (CFP)",
+ "symbol": "CFPF"
+ },
+ "FKP": {
+ "name": "ஃபாகà¯à®²à®¾à®¨à¯à®¤à¯ தீவà¯à®•à®³à¯ பவà¯à®£à¯à®Ÿà¯",
+ "symbol": "FKP"
+ },
+ "FJD": {
+ "name": "ஃபிஜியன௠டாலரà¯",
+ "symbol": "FJD"
+ },
+ "QAR": {
+ "name": "கதà¯à®¤à®¾à®°à®¿ ரியாலà¯",
+ "symbol": "QAR"
+ },
+ "KHR": {
+ "name": "கமà¯à®ªà¯‹à®Ÿà®¿à®¯à®©à¯ ரியெலà¯",
+ "symbol": "KHR"
+ },
+ "KMF": {
+ "name": "கமோரியன௠ஃபà¯à®°à®¾à®™à¯à®•à¯",
+ "symbol": "KMF"
+ },
+ "GYD": {
+ "name": "கயானீஸ௠டாலரà¯",
+ "symbol": "GYD"
+ },
+ "CAD": {
+ "name": "கனடியன௠டாலரà¯",
+ "symbol": "CA$"
+ },
+ "KZT": {
+ "name": "கஸகஸà¯à®¤à®¾à®©à®¿ டெனà¯à®•à¯‡",
+ "symbol": "KZT"
+ },
+ "CDF": {
+ "name": "காஙà¯à®•à¯‹à®²à¯€à®¸à¯ ஃபà¯à®°à®¾à®™à¯à®•à¯",
+ "symbol": "CDF"
+ },
+ "GHS": {
+ "name": "கானயன௠சேடி",
+ "symbol": "GHS"
+ },
+ "GIP": {
+ "name": "கிபà¯à®°à®¾à®²à¯à®Ÿà®°à¯ பவà¯à®£à¯à®Ÿà¯",
+ "symbol": "GIP"
+ },
+ "CUC": {
+ "name": "கியூபன௠கனà¯à®µà¯†à®°à¯à®Ÿà®¿à®ªà®¿à®²à¯ பேசோ",
+ "symbol": "CUC"
+ },
+ "CUP": {
+ "name": "கியூபன௠பெசோ",
+ "symbol": "CUP"
+ },
+ "KGS": {
+ "name": "கிரà¯à®•à®¿à®¸à¯à®¤à®¾à®©à®¿ சோமà¯",
+ "symbol": "KGS"
+ },
+ "XCD": {
+ "name": "கிழகà¯à®•à¯ கரீபியன௠டாலரà¯",
+ "symbol": "EC$"
+ },
+ "GNF": {
+ "name": "கினியன௠ஃபà¯à®°à®¾à®™à¯à®•à¯",
+ "symbol": "GNF"
+ },
+ "HRK": {
+ "name": "கà¯à®°à¯‹à®·à®¿à®¯à®©à¯ கà¯à®©à®¾",
+ "symbol": "HRK"
+ },
+ "GTQ": {
+ "name": "கà¯à®µà®¾à®Ÿà¯†à®®à¯†à®²à®©à¯ கà¯à®¯à¯‚டà¯à®¸à®²à¯",
+ "symbol": "GTQ"
+ },
+ "KWD": {
+ "name": "கà¯à®µà¯ˆà®¤à¯à®¤à®¿ தினாரà¯",
+ "symbol": "KWD"
+ },
+ "KES": {
+ "name": "கெனà¯à®¯à®©à¯ ஷிலà¯à®²à®¿à®™à¯",
+ "symbol": "KES"
+ },
+ "CVE": {
+ "name": "கேப௠வெரà¯à®Ÿà®¿à®¯à®©à¯ எஸà¯à®•à¯à®Ÿà¯‹",
+ "symbol": "CVE"
+ },
+ "GMD": {
+ "name": "கேமà¯à®ªà®¿à®¯à®©à¯ தலாசி",
+ "symbol": "GMD"
+ },
+ "KYD": {
+ "name": "கேமன௠தீவà¯à®•à®³à¯ டாலரà¯",
+ "symbol": "KYD"
+ },
+ "COP": {
+ "name": "கொலமà¯à®ªà®¿à®¯à®©à¯ பெசோ",
+ "symbol": "COP"
+ },
+ "CRC": {
+ "name": "கோஸà¯à®Ÿà®¾ ரிகன௠கொலோனà¯",
+ "symbol": "CRC"
+ },
+ "WST": {
+ "name": "சமோவான௠தாலா",
+ "symbol": "WST"
+ },
+ "SAR": {
+ "name": "சவà¯à®¤à®¿ ரியாலà¯",
+ "symbol": "SAR"
+ },
+ "SBD": {
+ "name": "சாலமன௠தீவà¯à®•à®³à¯ டாலரà¯",
+ "symbol": "SBD"
+ },
+ "STD": {
+ "name": "சாவ௠டோமி மறà¯à®±à¯à®®à¯ பிரினà¯à®¸à¯à®ªà®¿ டோபà¯à®°à®¾",
+ "symbol": "STD"
+ },
+ "SGD": {
+ "name": "சிஙà¯à®•à®ªà¯à®ªà¯‚ர௠டாலரà¯",
+ "symbol": "$"
+ },
+ "SCR": {
+ "name": "சிசீலோயிஸ௠ரà¯à®ªà¯€",
+ "symbol": "SCR"
+ },
+ "SLL": {
+ "name": "சியாரா லியோனியன௠லியோனà¯",
+ "symbol": "SLL"
+ },
+ "SYP": {
+ "name": "சிரியன௠பவà¯à®£à¯à®Ÿà¯",
+ "symbol": "SYP"
+ },
+ "CLP": {
+ "name": "சிலியன௠பெசோ",
+ "symbol": "CLP"
+ },
+ "CNY": {
+ "name": "சீன யà¯à®µà®¾à®©à¯",
+ "symbol": "CNÂ¥"
+ },
+ "SRD": {
+ "name": "சà¯à®°à®¿à®©à®¾à®®à¯€à®¸à¯ டாலரà¯",
+ "symbol": "SRD"
+ },
+ "SZL": {
+ "name": "சà¯à®µà®¾à®¸à®¿ லிலாஙà¯à®•à®©à®¿",
+ "symbol": "SZL"
+ },
+ "CHF": {
+ "name": "சà¯à®µà®¿à®¸à¯ ஃபà¯à®°à®¾à®™à¯à®•à¯",
+ "symbol": "CHF"
+ },
+ "SDG": {
+ "name": "சூடானீஸ௠பவà¯à®£à¯à®Ÿà¯",
+ "symbol": "SDG"
+ },
+ "CZK": {
+ "name": "செக௠கà¯à®Ÿà®¿à®¯à®°à®šà¯ கொரà¯à®©à®¾",
+ "symbol": "CZK"
+ },
+ "SHP": {
+ "name": "செயினà¯à®Ÿà¯ ஹெலேனா பவà¯à®£à¯à®Ÿà¯",
+ "symbol": "SHP"
+ },
+ "RSD": {
+ "name": "செரà¯à®ªà®¿à®¯à®©à¯ தினாரà¯",
+ "symbol": "RSD"
+ },
+ "SOS": {
+ "name": "சோமாலி ஷிலà¯à®²à®¿à®™à¯",
+ "symbol": "SOS"
+ },
+ "DKK": {
+ "name": "டானிஷ௠கà¯à®°à¯‹à®©à¯",
+ "symbol": "DKK"
+ },
+ "TTD": {
+ "name": "டிரினாட௠மறà¯à®±à¯à®®à¯ டோபாகோ டாலரà¯",
+ "symbol": "TTD"
+ },
+ "DOP": {
+ "name": "டொமினிகà¯à®•à®©à¯ பேசோ",
+ "symbol": "DOP"
+ },
+ "TZS": {
+ "name": "தனà¯à®¸à®¾à®©à®¿à®¯à®©à¯ ஷிலà¯à®²à®¿à®™à¯",
+ "symbol": "TZS"
+ },
+ "TJS": {
+ "name": "தஜிகிஸà¯à®¤à®¾à®©à®¿ சோமோனி",
+ "symbol": "TJS"
+ },
+ "THB": {
+ "name": "தாய௠பாடà¯",
+ "symbol": "฿"
+ },
+ "TMT": {
+ "name": "தà¯à®°à¯à®•à¯à®®à¯‡à®©à®¿à®¸à¯à®¤à®¾à®©à®¿ மனதà¯",
+ "symbol": "TMT"
+ },
+ "TRY": {
+ "name": "தà¯à®°à¯à®•à¯à®•à®¿à®·à¯ லீரா",
+ "symbol": "TRY"
+ },
+ "TND": {
+ "name": "தà¯à®©à®¿à®·à®¿à®¯à®©à¯ தினாரà¯",
+ "symbol": "TND"
+ },
+ "SSP": {
+ "name": "தெறà¯à®•à¯ சூடானீஸ௠பவà¯à®£à¯à®Ÿà¯",
+ "symbol": "SSP"
+ },
+ "ZAR": {
+ "name": "தென௠ஆபà¯à®°à®¿à®•à¯à®• ராணà¯à®Ÿà¯",
+ "symbol": "ZAR"
+ },
+ "KRW": {
+ "name": "தென௠கொரிய வானà¯",
+ "symbol": "â‚©"
+ },
+ "TOP": {
+ "name": "தொஙà¯à®•à®¾à®©à¯ பஙà¯à®•à®¾",
+ "symbol": "TOP"
+ },
+ "NAD": {
+ "name": "நமீபியன௠டாலரà¯",
+ "symbol": "NAD"
+ },
+ "NOK": {
+ "name": "நாரà¯à®µà¯‡à®œà®¿à®¯à®©à¯ கà¯à®°à¯‹à®©à¯",
+ "symbol": "NOK"
+ },
+ "NIO": {
+ "name": "நிகாராகà¯à®µà®¾à®©à¯ கோரà¯à®Ÿà¯‹à®ªà®¾",
+ "symbol": "NIO"
+ },
+ "NZD": {
+ "name": "நியூசிலாநà¯à®¤à¯ டாலரà¯",
+ "symbol": "NZ$"
+ },
+ "ANG": {
+ "name": "நெதரà¯à®²à¯‡à®£à¯à®Ÿà¯à®¸à¯ அனà¯à®Ÿà®¿à®²à®¿à®¯à®©à¯ கிலà¯à®Ÿà®°à¯",
+ "symbol": "ANG"
+ },
+ "NPR": {
+ "name": "நேபாளீஸ௠ரூபாயà¯",
+ "symbol": "NPR"
+ },
+ "NGN": {
+ "name": "நைஜீரியன௠நைரா",
+ "symbol": "NGN"
+ },
+ "BDT": {
+ "name": "பஙà¯à®•à®³à®¾à®¤à¯‡à®·à®¿ டாகா",
+ "symbol": "BDT"
+ },
+ "PGK": {
+ "name": "பபà¯à®µà®¾ நியூ கினியன௠கினா",
+ "symbol": "PGK"
+ },
+ "PYG": {
+ "name": "பராகà¯à®µà®©à¯ கà¯à®µà®¾à®°à®¾à®©à®¿",
+ "symbol": "PYG"
+ },
+ "PAB": {
+ "name": "பனாமானியன௠பாலà¯à®ªà¯‹à®ªà®¾",
+ "symbol": "PAB"
+ },
+ "BHD": {
+ "name": "பஹà¯à®°à¯ˆà®©à®¿ தினாரà¯",
+ "symbol": "BHD"
+ },
+ "BSD": {
+ "name": "பஹாமியன௠டாலரà¯",
+ "symbol": "BSD"
+ },
+ "PKR": {
+ "name": "பாகிஸà¯à®¤à®¾à®©à®¿ ரூபாயà¯",
+ "symbol": "PKR"
+ },
+ "BBD": {
+ "name": "பாரà¯à®ªà¯‡à®Ÿà®¿à®¯à®©à¯ டாலரà¯",
+ "symbol": "BBD"
+ },
+ "GBP": {
+ "name": "பிரிடà¯à®Ÿà®¿à®·à¯ பவà¯à®£à¯à®Ÿà¯ ஸà¯à®Ÿà¯†à®°à¯à®²à®¿à®™à¯",
+ "symbol": "£"
+ },
+ "BRL": {
+ "name": "பிரேசிலியன௠ரியாலà¯",
+ "symbol": "R$"
+ },
+ "PHP": {
+ "name": "பிலிபà¯à®ªà¯ˆà®©à¯ பெசோ",
+ "symbol": "PHP"
+ },
+ "TWD": {
+ "name": "பà¯à®¤à®¿à®¯ தைவான௠டாலரà¯",
+ "symbol": "NT$"
+ },
+ "BIF": {
+ "name": "பà¯à®°à¯à®£à¯à®Ÿà®¿à®¯à®©à¯ ஃபà¯à®°à®¾à®™à¯à®•à¯",
+ "symbol": "BIF"
+ },
+ "BND": {
+ "name": "பà¯à®°à¯‚னே டாலரà¯",
+ "symbol": "BND"
+ },
+ "BGN": {
+ "name": "பà¯à®²à¯à®•à¯‡à®°à®¿à®¯à®©à¯ லெவà¯",
+ "symbol": "BGN"
+ },
+ "BTN": {
+ "name": "பூடà¯à®Ÿà®¾à®©à®¿à®·à¯ நிகà¯à®²à¯à®Ÿà¯à®°à®®à¯",
+ "symbol": "BTN"
+ },
+ "BMD": {
+ "name": "பெரà¯à®®à¯à®Ÿà®©à¯ டாலரà¯",
+ "symbol": "BMD"
+ },
+ "PEN": {
+ "name": "பெரà¯à®µà®¿à®¯à®©à¯ நியூவோ சோலà¯",
+ "symbol": "PEN"
+ },
+ "BYR": {
+ "name": "பெலரà¯à®šà®¿à®¯à®©à¯ ரூபிலà¯",
+ "symbol": "BYR"
+ },
+ "BZD": {
+ "name": "பெலீஷ௠டாலரà¯",
+ "symbol": "BZD"
+ },
+ "BOB": {
+ "name": "பொலிவியன௠பொலிவியானோ",
+ "symbol": "BOB"
+ },
+ "BWP": {
+ "name": "போடà¯à®¸à¯à®µà®¾à®©à®¾ பà¯à®²à®¾",
+ "symbol": "BWP"
+ },
+ "PLN": {
+ "name": "போலிஷ௠ஸà¯à®²à®¾à®Ÿà¯à®Ÿà®¿",
+ "symbol": "PLN"
+ },
+ "BAM": {
+ "name": "போஸà¯à®©à®¿à®¯à®¾-ஹெரà¯à®¸à¯‡à®•à¯‹à®µà®¿à®©à®¾ கனà¯à®µà¯†à®°à¯à®Ÿà®¿à®ªà®¿à®²à¯ மாரà¯à®•à¯",
+ "symbol": "BAM"
+ },
+ "MNT": {
+ "name": "மஙà¯à®•à¯‹à®²à®¿à®¯à®©à¯ டà¯à®•à¯à®°à®¿à®•à¯",
+ "symbol": "MNT"
+ },
+ "MGA": {
+ "name": "மலகாசி à®à®°à®¿à®¯à®°à®¿",
+ "symbol": "MGA"
+ },
+ "MWK": {
+ "name": "மலாவியன௠கà¯à®µà®¾à®šà¯à®šà®¾",
+ "symbol": "MWK"
+ },
+ "MYR": {
+ "name": "மலேசிய ரிஙà¯à®•à®¿à®Ÿà¯",
+ "symbol": "RM"
+ },
+ "MDL": {
+ "name": "மாலà¯à®Ÿà¯‹à®µà®©à¯ லியூ",
+ "symbol": "MDL"
+ },
+ "MVR": {
+ "name": "மாலதà¯à®¤à¯€à®µà¯ à®°à¯à®ƒà®ªà®¿à®¯à®¾",
+ "symbol": "MVR"
+ },
+ "MMK": {
+ "name": "மியானà¯à®®à®°à¯ கியாதà¯",
+ "symbol": "MMK"
+ },
+ "MXN": {
+ "name": "மெகà¯à®¸à®¿à®•à®©à¯ பெசோ",
+ "symbol": "MX$"
+ },
+ "MOP": {
+ "name": "மெகனீஸ௠படாகா",
+ "symbol": "MOP"
+ },
+ "MKD": {
+ "name": "மெசிடோனியன௠தினாரà¯",
+ "symbol": "MKD"
+ },
+ "MZN": {
+ "name": "மொசாமà¯à®ªà®¿à®•à¯‡à®©à¯ மெடிகலà¯",
+ "symbol": "MZN"
+ },
+ "MAD": {
+ "name": "மொராகà¯à®•à¯‹ திரà¯à®¹à®¾à®®à¯",
+ "symbol": "MAD"
+ },
+ "MRO": {
+ "name": "மொரிஷியனியன௠ஒகà¯à®¯à¯à®¯à®¾",
+ "symbol": "MRO"
+ },
+ "MUR": {
+ "name": "மொரீஷியன௠ரà¯à®ªà¯€",
+ "symbol": "MUR"
+ },
+ "EUR": {
+ "name": "யூரோ",
+ "symbol": "€"
+ },
+ "RUB": {
+ "name": "ரஷியன௠ரூபிளà¯",
+ "symbol": "RUB"
+ },
+ "RWF": {
+ "name": "à®°à¯à®µà®¾à®£à¯à®Ÿà®¾ ஃபà¯à®°à®¾à®™à¯à®•à¯",
+ "symbol": "RWF"
+ },
+ "RON": {
+ "name": "ரோமானியன௠லியூ",
+ "symbol": "RON"
+ },
+ "LAK": {
+ "name": "லவà¯à®Ÿà¯à®Ÿà®¿à®¯à®©à¯ கிபà¯",
+ "symbol": "LAK"
+ },
+ "LTL": {
+ "name": "லிதà¯à®µà¯‡à®©à®¿à®¯à®©à¯ லிடஸà¯",
+ "symbol": "LTL"
+ },
+ "LYD": {
+ "name": "லிபியன௠தினாரà¯",
+ "symbol": "LYD"
+ },
+ "LSL": {
+ "name": "லெசோதோ லோடà¯à®Ÿà®¿",
+ "symbol": "LSL"
+ },
+ "LBP": {
+ "name": "லெபனீஸ௠பவà¯à®£à¯à®Ÿà¯",
+ "symbol": "LBP"
+ },
+ "LRD": {
+ "name": "லைபீரியன௠டாலரà¯",
+ "symbol": "LRD"
+ },
+ "KPW": {
+ "name": "வட கொரிய வானà¯",
+ "symbol": "KPW"
+ },
+ "VUV": {
+ "name": "வனà¯à®µà®¾à®Ÿà¯à®Ÿà¯ வாடà¯à®Ÿà¯",
+ "symbol": "VUV"
+ },
+ "VND": {
+ "name": "வியடà¯à®¨à®¾à®®à¯€à®¸à¯ டாஙà¯",
+ "symbol": "â‚«"
+ },
+ "VEF": {
+ "name": "வெனிசà¯à®²à®¿à®¯à®©à¯ போலிவரà¯",
+ "symbol": "VEF"
+ },
+ "JPY": {
+ "name": "ஜபà¯à®ªà®¾à®©à®¿à®¯ யெனà¯",
+ "symbol": "Â¥"
+ },
+ "JMD": {
+ "name": "ஜமைகà¯à®•à®¾à®©à¯ டாலரà¯",
+ "symbol": "JMD"
+ },
+ "DJF": {
+ "name": "ஜிபவà¯à®Ÿà®¿à®¯à¯†à®©à¯ ஃபà¯à®°à®¾à®™à¯à®•à¯",
+ "symbol": "DJF"
+ },
+ "GEL": {
+ "name": "ஜியாரà¯à®œà®¿à®¯à®©à¯ லாரி",
+ "symbol": "GEL"
+ },
+ "JOD": {
+ "name": "ஜோரà¯à®Ÿà®¾à®©à®¿à®¯à®©à¯ டைனரà¯",
+ "symbol": "JOD"
+ },
+ "SEK": {
+ "name": "ஸà¯à®µà¯‡à®¤à®¿à®·à¯ கà¯à®°à¯‹à®©à®¾",
+ "symbol": "SEK"
+ },
+ "ZMW": {
+ "name": "ஸாமà¯à®ªà®¿à®¯à®©à¯ கà¯à®µà®¾à®šà®¾",
+ "symbol": "ZMW"
+ },
+ "HUF": {
+ "name": "ஹஙà¯à®•à¯‡à®°à®¿à®¯à®©à¯ ஃபோரினà¯à®Ÿà¯",
+ "symbol": "HUF"
+ },
+ "HTG": {
+ "name": "ஹயேதà¯à®¤à®¿à®¯à®©à¯ கோரà¯à®Ÿà¯‡",
+ "symbol": "HTG"
+ },
+ "HKD": {
+ "name": "ஹாஙà¯à®•à®¾à®™à¯ டாலரà¯",
+ "symbol": "HK$"
+ },
+ "HNL": {
+ "name": "ஹோனà¯à®Ÿà¯‚ரன௠லெமà¯à®ªà¯€à®°à®¾",
+ "symbol": "HNL"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/currency/ta.json b/library/intl/resources/currency/ta.json
new file mode 100644
index 000000000..5af042dda
--- /dev/null
+++ b/library/intl/resources/currency/ta.json
@@ -0,0 +1,634 @@
+{
+ "XOF": {
+ "name": "CFA ஃபà¯à®°à®¾à®™à¯à®•à¯ BCEAO",
+ "symbol": "CFA"
+ },
+ "SVC": {
+ "name": "SVC",
+ "symbol": "SVC"
+ },
+ "ZWL": {
+ "name": "ZWL",
+ "symbol": "ZWL"
+ },
+ "AOA": {
+ "name": "à®…à®™à¯à®•à¯‹à®²à®©à¯ கà¯à®µà®¾à®©à¯à®¸à®¾",
+ "symbol": "AOA"
+ },
+ "AZN": {
+ "name": "அசரà¯à®ªà¯ˆà®œà®¾à®©à®¿ மனதà¯",
+ "symbol": "AZN"
+ },
+ "USD": {
+ "name": "அமெரிகà¯à®• டாலரà¯",
+ "symbol": "$"
+ },
+ "ARS": {
+ "name": "à®…à®°à¯à®œà¯†à®©à¯à®Ÿà®¿à®©à®¾ பேசோ",
+ "symbol": "ARS"
+ },
+ "AWG": {
+ "name": "à®…à®°à¯à®ªà®©à¯ ஃபà¯à®³à¯‹à®°à®¿à®©à¯",
+ "symbol": "AWG"
+ },
+ "ALL": {
+ "name": "அலà¯à®ªà¯‡à®©à®¿à®¯à®©à¯ லெகà¯",
+ "symbol": "ALL"
+ },
+ "DZD": {
+ "name": "அலà¯à®œà¯€à®°à®¿à®¯à®©à¯ தினாரà¯",
+ "symbol": "DZD"
+ },
+ "AFN": {
+ "name": "ஆஃபà¯à®•à®¾à®©à¯ ஆஃபà¯à®•à®¾à®©à®¿",
+ "symbol": "AFN"
+ },
+ "AMD": {
+ "name": "ஆரà¯à®®à¯‡à®©à®¿à®¯à®©à¯ டà¯à®°à®¾à®®à¯",
+ "symbol": "AMD"
+ },
+ "AUD": {
+ "name": "ஆஸà¯à®¤à®¿à®°à¯‡à®²à®¿à®¯ டாலரà¯",
+ "symbol": "A$"
+ },
+ "INR": {
+ "name": "இநà¯à®¤à®¿à®¯ ரூபாயà¯",
+ "symbol": "₹"
+ },
+ "IDR": {
+ "name": "இநà¯à®¤à¯‹à®©à¯‡à®·à®¿à®¯à®©à¯ à®°à¯à®ªà®¿à®¯à®¾",
+ "symbol": "IDR"
+ },
+ "IRR": {
+ "name": "இரானியன௠ரியாலà¯",
+ "symbol": "IRR"
+ },
+ "ERN": {
+ "name": "இரிடிரியன௠நகà¯à®ƒà®ªà®¾",
+ "symbol": "ERN"
+ },
+ "LKR": {
+ "name": "இலஙà¯à®•à¯ˆ ரூபாயà¯",
+ "symbol": "LKR"
+ },
+ "ILS": {
+ "name": "இஸà¯à®°à¯‡à®²à®¿ நியூ ஷிகேலà¯",
+ "symbol": "₪"
+ },
+ "IQD": {
+ "name": "ஈராகà¯à®•à®¿ தினாரà¯",
+ "symbol": "IQD"
+ },
+ "UAH": {
+ "name": "உகà¯à®°à¯ˆà®©à®¿à®¯à®©à¯ ஹிரைவà¯à®©à®¿à®¯à®¾",
+ "symbol": "UAH"
+ },
+ "UGX": {
+ "name": "உகாணà¯à®Ÿà®©à¯ ஷிலà¯à®²à®¿à®™à¯",
+ "symbol": "UGX"
+ },
+ "UYU": {
+ "name": "உரà¯à®•à¯à®µà¯‡à®¯à®©à¯ பேசோ",
+ "symbol": "UYU"
+ },
+ "UZS": {
+ "name": "உஸà¯à®ªà¯†à®•à¯à®•à®¿à®¸à¯à®¤à®¾à®©à¯ சோமà¯",
+ "symbol": "UZS"
+ },
+ "EGP": {
+ "name": "எகிபà¯à®¤à®¿à®¯ பவà¯à®£à¯à®Ÿà¯",
+ "symbol": "EGP"
+ },
+ "ETB": {
+ "name": "எதà¯à®¤à®¿à®¯à¯‹à®ªà¯à®ªà®¿à®¯à®©à¯ பிரà¯",
+ "symbol": "ETB"
+ },
+ "YER": {
+ "name": "à®à®®à®©à®¿ ரியாலà¯",
+ "symbol": "YER"
+ },
+ "AED": {
+ "name": "à®à®•à¯à®•à®¿à®¯ அரப௠எமிரேடà¯à®¸à¯ திரà¯à®¹à®®à¯",
+ "symbol": "AED"
+ },
+ "ISK": {
+ "name": "à®à®¸à¯à®²à®¾à®£à¯à®Ÿà®¿à®•à¯ கà¯à®°à¯‹à®©à®¾",
+ "symbol": "ISK"
+ },
+ "OMR": {
+ "name": "ஓமானி ரியாலà¯",
+ "symbol": "OMR"
+ },
+ "XAF": {
+ "name": "ஃபà¯à®°à®¾à®™à¯à®•à¯ (CFA BEAC)",
+ "symbol": "FCFA"
+ },
+ "XPF": {
+ "name": "ஃபà¯à®°à®¾à®™à¯à®•à¯ (CFP)",
+ "symbol": "CFPF"
+ },
+ "FKP": {
+ "name": "ஃபாகà¯à®²à®¾à®¨à¯à®¤à¯ தீவà¯à®•à®³à¯ பவà¯à®£à¯à®Ÿà¯",
+ "symbol": "FKP"
+ },
+ "FJD": {
+ "name": "ஃபிஜியன௠டாலரà¯",
+ "symbol": "FJD"
+ },
+ "QAR": {
+ "name": "கதà¯à®¤à®¾à®°à®¿ ரியாலà¯",
+ "symbol": "QAR"
+ },
+ "KHR": {
+ "name": "கமà¯à®ªà¯‹à®Ÿà®¿à®¯à®©à¯ ரியெலà¯",
+ "symbol": "KHR"
+ },
+ "KMF": {
+ "name": "கமோரியன௠ஃபà¯à®°à®¾à®™à¯à®•à¯",
+ "symbol": "KMF"
+ },
+ "GYD": {
+ "name": "கயானீஸ௠டாலரà¯",
+ "symbol": "GYD"
+ },
+ "CAD": {
+ "name": "கனடியன௠டாலரà¯",
+ "symbol": "CA$"
+ },
+ "KZT": {
+ "name": "கஸகஸà¯à®¤à®¾à®©à®¿ டெனà¯à®•à¯‡",
+ "symbol": "KZT"
+ },
+ "CDF": {
+ "name": "காஙà¯à®•à¯‹à®²à¯€à®¸à¯ ஃபà¯à®°à®¾à®™à¯à®•à¯",
+ "symbol": "CDF"
+ },
+ "GHS": {
+ "name": "கானயன௠சேடி",
+ "symbol": "GHS"
+ },
+ "GIP": {
+ "name": "கிபà¯à®°à®¾à®²à¯à®Ÿà®°à¯ பவà¯à®£à¯à®Ÿà¯",
+ "symbol": "GIP"
+ },
+ "CUC": {
+ "name": "கியூபன௠கனà¯à®µà¯†à®°à¯à®Ÿà®¿à®ªà®¿à®²à¯ பேசோ",
+ "symbol": "CUC"
+ },
+ "CUP": {
+ "name": "கியூபன௠பெசோ",
+ "symbol": "CUP"
+ },
+ "KGS": {
+ "name": "கிரà¯à®•à®¿à®¸à¯à®¤à®¾à®©à®¿ சோமà¯",
+ "symbol": "KGS"
+ },
+ "XCD": {
+ "name": "கிழகà¯à®•à¯ கரீபியன௠டாலரà¯",
+ "symbol": "EC$"
+ },
+ "GNF": {
+ "name": "கினியன௠ஃபà¯à®°à®¾à®™à¯à®•à¯",
+ "symbol": "GNF"
+ },
+ "HRK": {
+ "name": "கà¯à®°à¯‹à®·à®¿à®¯à®©à¯ கà¯à®©à®¾",
+ "symbol": "HRK"
+ },
+ "GTQ": {
+ "name": "கà¯à®µà®¾à®Ÿà¯†à®®à¯†à®²à®©à¯ கà¯à®¯à¯‚டà¯à®¸à®²à¯",
+ "symbol": "GTQ"
+ },
+ "KWD": {
+ "name": "கà¯à®µà¯ˆà®¤à¯à®¤à®¿ தினாரà¯",
+ "symbol": "KWD"
+ },
+ "KES": {
+ "name": "கெனà¯à®¯à®©à¯ ஷிலà¯à®²à®¿à®™à¯",
+ "symbol": "KES"
+ },
+ "CVE": {
+ "name": "கேப௠வெரà¯à®Ÿà®¿à®¯à®©à¯ எஸà¯à®•à¯à®Ÿà¯‹",
+ "symbol": "CVE"
+ },
+ "GMD": {
+ "name": "கேமà¯à®ªà®¿à®¯à®©à¯ தலாசி",
+ "symbol": "GMD"
+ },
+ "KYD": {
+ "name": "கேமன௠தீவà¯à®•à®³à¯ டாலரà¯",
+ "symbol": "KYD"
+ },
+ "COP": {
+ "name": "கொலமà¯à®ªà®¿à®¯à®©à¯ பெசோ",
+ "symbol": "COP"
+ },
+ "CRC": {
+ "name": "கோஸà¯à®Ÿà®¾ ரிகன௠கொலோனà¯",
+ "symbol": "CRC"
+ },
+ "WST": {
+ "name": "சமோவான௠தாலா",
+ "symbol": "WST"
+ },
+ "SAR": {
+ "name": "சவà¯à®¤à®¿ ரியாலà¯",
+ "symbol": "SAR"
+ },
+ "SBD": {
+ "name": "சாலமன௠தீவà¯à®•à®³à¯ டாலரà¯",
+ "symbol": "SBD"
+ },
+ "STD": {
+ "name": "சாவ௠டோமி மறà¯à®±à¯à®®à¯ பிரினà¯à®¸à¯à®ªà®¿ டோபà¯à®°à®¾",
+ "symbol": "STD"
+ },
+ "SGD": {
+ "name": "சிஙà¯à®•à®ªà¯à®ªà¯‚ர௠டாலரà¯",
+ "symbol": "SGD"
+ },
+ "SCR": {
+ "name": "சிசீலோயிஸ௠ரà¯à®ªà¯€",
+ "symbol": "SCR"
+ },
+ "SLL": {
+ "name": "சியாரா லியோனியன௠லியோனà¯",
+ "symbol": "SLL"
+ },
+ "SYP": {
+ "name": "சிரியன௠பவà¯à®£à¯à®Ÿà¯",
+ "symbol": "SYP"
+ },
+ "CLP": {
+ "name": "சிலியன௠பெசோ",
+ "symbol": "CLP"
+ },
+ "CNY": {
+ "name": "சீன யà¯à®µà®¾à®©à¯",
+ "symbol": "CNÂ¥"
+ },
+ "SRD": {
+ "name": "சà¯à®°à®¿à®©à®¾à®®à¯€à®¸à¯ டாலரà¯",
+ "symbol": "SRD"
+ },
+ "SZL": {
+ "name": "சà¯à®µà®¾à®¸à®¿ லிலாஙà¯à®•à®©à®¿",
+ "symbol": "SZL"
+ },
+ "CHF": {
+ "name": "சà¯à®µà®¿à®¸à¯ ஃபà¯à®°à®¾à®™à¯à®•à¯",
+ "symbol": "CHF"
+ },
+ "SDG": {
+ "name": "சூடானீஸ௠பவà¯à®£à¯à®Ÿà¯",
+ "symbol": "SDG"
+ },
+ "CZK": {
+ "name": "செக௠கà¯à®Ÿà®¿à®¯à®°à®šà¯ கொரà¯à®©à®¾",
+ "symbol": "CZK"
+ },
+ "SHP": {
+ "name": "செயினà¯à®Ÿà¯ ஹெலேனா பவà¯à®£à¯à®Ÿà¯",
+ "symbol": "SHP"
+ },
+ "RSD": {
+ "name": "செரà¯à®ªà®¿à®¯à®©à¯ தினாரà¯",
+ "symbol": "RSD"
+ },
+ "SOS": {
+ "name": "சோமாலி ஷிலà¯à®²à®¿à®™à¯",
+ "symbol": "SOS"
+ },
+ "DKK": {
+ "name": "டானிஷ௠கà¯à®°à¯‹à®©à¯",
+ "symbol": "DKK"
+ },
+ "TTD": {
+ "name": "டிரினாட௠மறà¯à®±à¯à®®à¯ டோபாகோ டாலரà¯",
+ "symbol": "TTD"
+ },
+ "DOP": {
+ "name": "டொமினிகà¯à®•à®©à¯ பேசோ",
+ "symbol": "DOP"
+ },
+ "TZS": {
+ "name": "தனà¯à®¸à®¾à®©à®¿à®¯à®©à¯ ஷிலà¯à®²à®¿à®™à¯",
+ "symbol": "TZS"
+ },
+ "TJS": {
+ "name": "தஜிகிஸà¯à®¤à®¾à®©à®¿ சோமோனி",
+ "symbol": "TJS"
+ },
+ "THB": {
+ "name": "தாய௠பாடà¯",
+ "symbol": "฿"
+ },
+ "TMT": {
+ "name": "தà¯à®°à¯à®•à¯à®®à¯‡à®©à®¿à®¸à¯à®¤à®¾à®©à®¿ மனதà¯",
+ "symbol": "TMT"
+ },
+ "TRY": {
+ "name": "தà¯à®°à¯à®•à¯à®•à®¿à®·à¯ லீரா",
+ "symbol": "TRY"
+ },
+ "TND": {
+ "name": "தà¯à®©à®¿à®·à®¿à®¯à®©à¯ தினாரà¯",
+ "symbol": "TND"
+ },
+ "SSP": {
+ "name": "தெறà¯à®•à¯ சூடானீஸ௠பவà¯à®£à¯à®Ÿà¯",
+ "symbol": "SSP"
+ },
+ "ZAR": {
+ "name": "தென௠ஆபà¯à®°à®¿à®•à¯à®• ராணà¯à®Ÿà¯",
+ "symbol": "ZAR"
+ },
+ "KRW": {
+ "name": "தென௠கொரிய வானà¯",
+ "symbol": "â‚©"
+ },
+ "TOP": {
+ "name": "தொஙà¯à®•à®¾à®©à¯ பஙà¯à®•à®¾",
+ "symbol": "TOP"
+ },
+ "NAD": {
+ "name": "நமீபியன௠டாலரà¯",
+ "symbol": "NAD"
+ },
+ "NOK": {
+ "name": "நாரà¯à®µà¯‡à®œà®¿à®¯à®©à¯ கà¯à®°à¯‹à®©à¯",
+ "symbol": "NOK"
+ },
+ "NIO": {
+ "name": "நிகாராகà¯à®µà®¾à®©à¯ கோரà¯à®Ÿà¯‹à®ªà®¾",
+ "symbol": "NIO"
+ },
+ "NZD": {
+ "name": "நியூசிலாநà¯à®¤à¯ டாலரà¯",
+ "symbol": "NZ$"
+ },
+ "ANG": {
+ "name": "நெதரà¯à®²à¯‡à®£à¯à®Ÿà¯à®¸à¯ அனà¯à®Ÿà®¿à®²à®¿à®¯à®©à¯ கிலà¯à®Ÿà®°à¯",
+ "symbol": "ANG"
+ },
+ "NPR": {
+ "name": "நேபாளீஸ௠ரூபாயà¯",
+ "symbol": "NPR"
+ },
+ "NGN": {
+ "name": "நைஜீரியன௠நைரா",
+ "symbol": "NGN"
+ },
+ "BDT": {
+ "name": "பஙà¯à®•à®³à®¾à®¤à¯‡à®·à®¿ டாகா",
+ "symbol": "BDT"
+ },
+ "PGK": {
+ "name": "பபà¯à®µà®¾ நியூ கினியன௠கினா",
+ "symbol": "PGK"
+ },
+ "PYG": {
+ "name": "பராகà¯à®µà®©à¯ கà¯à®µà®¾à®°à®¾à®©à®¿",
+ "symbol": "PYG"
+ },
+ "PAB": {
+ "name": "பனாமானியன௠பாலà¯à®ªà¯‹à®ªà®¾",
+ "symbol": "PAB"
+ },
+ "BHD": {
+ "name": "பஹà¯à®°à¯ˆà®©à®¿ தினாரà¯",
+ "symbol": "BHD"
+ },
+ "BSD": {
+ "name": "பஹாமியன௠டாலரà¯",
+ "symbol": "BSD"
+ },
+ "PKR": {
+ "name": "பாகிஸà¯à®¤à®¾à®©à®¿ ரூபாயà¯",
+ "symbol": "PKR"
+ },
+ "BBD": {
+ "name": "பாரà¯à®ªà¯‡à®Ÿà®¿à®¯à®©à¯ டாலரà¯",
+ "symbol": "BBD"
+ },
+ "GBP": {
+ "name": "பிரிடà¯à®Ÿà®¿à®·à¯ பவà¯à®£à¯à®Ÿà¯ ஸà¯à®Ÿà¯†à®°à¯à®²à®¿à®™à¯",
+ "symbol": "£"
+ },
+ "BRL": {
+ "name": "பிரேசிலியன௠ரியாலà¯",
+ "symbol": "R$"
+ },
+ "PHP": {
+ "name": "பிலிபà¯à®ªà¯ˆà®©à¯ பெசோ",
+ "symbol": "PHP"
+ },
+ "TWD": {
+ "name": "பà¯à®¤à®¿à®¯ தைவான௠டாலரà¯",
+ "symbol": "NT$"
+ },
+ "BIF": {
+ "name": "பà¯à®°à¯à®£à¯à®Ÿà®¿à®¯à®©à¯ ஃபà¯à®°à®¾à®™à¯à®•à¯",
+ "symbol": "BIF"
+ },
+ "BND": {
+ "name": "பà¯à®°à¯‚னே டாலரà¯",
+ "symbol": "BND"
+ },
+ "BGN": {
+ "name": "பà¯à®²à¯à®•à¯‡à®°à®¿à®¯à®©à¯ லெவà¯",
+ "symbol": "BGN"
+ },
+ "BTN": {
+ "name": "பூடà¯à®Ÿà®¾à®©à®¿à®·à¯ நிகà¯à®²à¯à®Ÿà¯à®°à®®à¯",
+ "symbol": "BTN"
+ },
+ "BMD": {
+ "name": "பெரà¯à®®à¯à®Ÿà®©à¯ டாலரà¯",
+ "symbol": "BMD"
+ },
+ "PEN": {
+ "name": "பெரà¯à®µà®¿à®¯à®©à¯ நியூவோ சோலà¯",
+ "symbol": "PEN"
+ },
+ "BYR": {
+ "name": "பெலரà¯à®šà®¿à®¯à®©à¯ ரூபிலà¯",
+ "symbol": "BYR"
+ },
+ "BZD": {
+ "name": "பெலீஷ௠டாலரà¯",
+ "symbol": "BZD"
+ },
+ "BOB": {
+ "name": "பொலிவியன௠பொலிவியானோ",
+ "symbol": "BOB"
+ },
+ "BWP": {
+ "name": "போடà¯à®¸à¯à®µà®¾à®©à®¾ பà¯à®²à®¾",
+ "symbol": "BWP"
+ },
+ "PLN": {
+ "name": "போலிஷ௠ஸà¯à®²à®¾à®Ÿà¯à®Ÿà®¿",
+ "symbol": "PLN"
+ },
+ "BAM": {
+ "name": "போஸà¯à®©à®¿à®¯à®¾-ஹெரà¯à®¸à¯‡à®•à¯‹à®µà®¿à®©à®¾ கனà¯à®µà¯†à®°à¯à®Ÿà®¿à®ªà®¿à®²à¯ மாரà¯à®•à¯",
+ "symbol": "BAM"
+ },
+ "MNT": {
+ "name": "மஙà¯à®•à¯‹à®²à®¿à®¯à®©à¯ டà¯à®•à¯à®°à®¿à®•à¯",
+ "symbol": "MNT"
+ },
+ "MGA": {
+ "name": "மலகாசி à®à®°à®¿à®¯à®°à®¿",
+ "symbol": "MGA"
+ },
+ "MWK": {
+ "name": "மலாவியன௠கà¯à®µà®¾à®šà¯à®šà®¾",
+ "symbol": "MWK"
+ },
+ "MYR": {
+ "name": "மலேஷியன௠ரிஙà¯à®•à®¿à®¤à¯",
+ "symbol": "MYR"
+ },
+ "MDL": {
+ "name": "மாலà¯à®Ÿà¯‹à®µà®©à¯ லியூ",
+ "symbol": "MDL"
+ },
+ "MVR": {
+ "name": "மாலதà¯à®¤à¯€à®µà¯ à®°à¯à®ƒà®ªà®¿à®¯à®¾",
+ "symbol": "MVR"
+ },
+ "MMK": {
+ "name": "மியானà¯à®®à®°à¯ கியாதà¯",
+ "symbol": "MMK"
+ },
+ "MXN": {
+ "name": "மெகà¯à®¸à®¿à®•à®©à¯ பெசோ",
+ "symbol": "MX$"
+ },
+ "MOP": {
+ "name": "மெகனீஸ௠படாகா",
+ "symbol": "MOP"
+ },
+ "MKD": {
+ "name": "மெசிடோனியன௠தினாரà¯",
+ "symbol": "MKD"
+ },
+ "MZN": {
+ "name": "மொசாமà¯à®ªà®¿à®•à¯‡à®©à¯ மெடிகலà¯",
+ "symbol": "MZN"
+ },
+ "MAD": {
+ "name": "மொராகà¯à®•à¯‹ திரà¯à®¹à®¾à®®à¯",
+ "symbol": "MAD"
+ },
+ "MRO": {
+ "name": "மொரிஷியனியன௠ஒகà¯à®¯à¯à®¯à®¾",
+ "symbol": "MRO"
+ },
+ "MUR": {
+ "name": "மொரீஷியன௠ரà¯à®ªà¯€",
+ "symbol": "MUR"
+ },
+ "EUR": {
+ "name": "யூரோ",
+ "symbol": "€"
+ },
+ "RUB": {
+ "name": "ரஷியன௠ரூபிளà¯",
+ "symbol": "RUB"
+ },
+ "RWF": {
+ "name": "à®°à¯à®µà®¾à®£à¯à®Ÿà®¾ ஃபà¯à®°à®¾à®™à¯à®•à¯",
+ "symbol": "RWF"
+ },
+ "RON": {
+ "name": "ரோமானியன௠லியூ",
+ "symbol": "RON"
+ },
+ "LAK": {
+ "name": "லவà¯à®Ÿà¯à®Ÿà®¿à®¯à®©à¯ கிபà¯",
+ "symbol": "LAK"
+ },
+ "LTL": {
+ "name": "லிதà¯à®µà¯‡à®©à®¿à®¯à®©à¯ லிடஸà¯",
+ "symbol": "LTL"
+ },
+ "LYD": {
+ "name": "லிபியன௠தினாரà¯",
+ "symbol": "LYD"
+ },
+ "LSL": {
+ "name": "லெசோதோ லோடà¯à®Ÿà®¿",
+ "symbol": "LSL"
+ },
+ "LBP": {
+ "name": "லெபனீஸ௠பவà¯à®£à¯à®Ÿà¯",
+ "symbol": "LBP"
+ },
+ "LRD": {
+ "name": "லைபீரியன௠டாலரà¯",
+ "symbol": "LRD"
+ },
+ "KPW": {
+ "name": "வட கொரிய வானà¯",
+ "symbol": "KPW"
+ },
+ "VUV": {
+ "name": "வனà¯à®µà®¾à®Ÿà¯à®Ÿà¯ வாடà¯à®Ÿà¯",
+ "symbol": "VUV"
+ },
+ "VND": {
+ "name": "வியடà¯à®¨à®¾à®®à¯€à®¸à¯ டாஙà¯",
+ "symbol": "â‚«"
+ },
+ "VEF": {
+ "name": "வெனிசà¯à®²à®¿à®¯à®©à¯ போலிவரà¯",
+ "symbol": "VEF"
+ },
+ "JPY": {
+ "name": "ஜபà¯à®ªà®¾à®©à®¿à®¯ யெனà¯",
+ "symbol": "Â¥"
+ },
+ "JMD": {
+ "name": "ஜமைகà¯à®•à®¾à®©à¯ டாலரà¯",
+ "symbol": "JMD"
+ },
+ "DJF": {
+ "name": "ஜிபவà¯à®Ÿà®¿à®¯à¯†à®©à¯ ஃபà¯à®°à®¾à®™à¯à®•à¯",
+ "symbol": "DJF"
+ },
+ "GEL": {
+ "name": "ஜியாரà¯à®œà®¿à®¯à®©à¯ லாரி",
+ "symbol": "GEL"
+ },
+ "JOD": {
+ "name": "ஜோரà¯à®Ÿà®¾à®©à®¿à®¯à®©à¯ டைனரà¯",
+ "symbol": "JOD"
+ },
+ "SEK": {
+ "name": "ஸà¯à®µà¯‡à®¤à®¿à®·à¯ கà¯à®°à¯‹à®©à®¾",
+ "symbol": "SEK"
+ },
+ "ZMW": {
+ "name": "ஸாமà¯à®ªà®¿à®¯à®©à¯ கà¯à®µà®¾à®šà®¾",
+ "symbol": "ZMW"
+ },
+ "HUF": {
+ "name": "ஹஙà¯à®•à¯‡à®°à®¿à®¯à®©à¯ ஃபோரினà¯à®Ÿà¯",
+ "symbol": "HUF"
+ },
+ "HTG": {
+ "name": "ஹயேதà¯à®¤à®¿à®¯à®©à¯ கோரà¯à®Ÿà¯‡",
+ "symbol": "HTG"
+ },
+ "HKD": {
+ "name": "ஹாஙà¯à®•à®¾à®™à¯ டாலரà¯",
+ "symbol": "HK$"
+ },
+ "HNL": {
+ "name": "ஹோனà¯à®Ÿà¯‚ரன௠லெமà¯à®ªà¯€à®°à®¾",
+ "symbol": "HNL"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/currency/te.json b/library/intl/resources/currency/te.json
new file mode 100644
index 000000000..1b7457159
--- /dev/null
+++ b/library/intl/resources/currency/te.json
@@ -0,0 +1,634 @@
+{
+ "SVC": {
+ "name": "SVC",
+ "symbol": "SVC"
+ },
+ "ZWL": {
+ "name": "ZWL",
+ "symbol": "ZWL"
+ },
+ "AOA": {
+ "name": "అంగోలానౠకà±à°µà°¾à°¨à±â€Œà°œà°¾",
+ "symbol": "AOA"
+ },
+ "AZN": {
+ "name": "అజరà±à°¬à±ˆà°œà°¾à°¨à± మానటà±",
+ "symbol": "AZN"
+ },
+ "AMD": {
+ "name": "అమెరికనౠడà±à°°à°¾à°®à±",
+ "symbol": "AMD"
+ },
+ "USD": {
+ "name": "అమెరికా డాలరà±",
+ "symbol": "$"
+ },
+ "AWG": {
+ "name": "à°…à°°à±à°¬à°¨à± à°«à±à°²à±‹à°°à°¿à°¨à±",
+ "symbol": "AWG"
+ },
+ "ARS": {
+ "name": "à°…à°°à±à°œà±†à°‚టీనా పెసో",
+ "symbol": "ARS"
+ },
+ "DZD": {
+ "name": "à°…à°²à±à°œà±€à°°à°¿à°¯à°¨à± దీనారà±",
+ "symbol": "DZD"
+ },
+ "AFN": {
+ "name": "ఆఫà±à°˜à°¾à°¨à± ఆఫà±à°˜à°¾à°¨à°¿",
+ "symbol": "AFN"
+ },
+ "ALL": {
+ "name": "ఆలà±à°¬à±‡à°¨à°¿à°¯à°¨à± లేకà±",
+ "symbol": "ALL"
+ },
+ "AUD": {
+ "name": "ఆసà±à°Ÿà±à°°à±‡à°²à°¿à°¯à°¨à± డాలరà±",
+ "symbol": "A$"
+ },
+ "IDR": {
+ "name": "ఇండోనేషియా రూపాయి",
+ "symbol": "IDR"
+ },
+ "ETB": {
+ "name": "ఇథియోపియనౠబరà±",
+ "symbol": "ETB"
+ },
+ "IQD": {
+ "name": "ఇరాకీ దీనారà±",
+ "symbol": "IQD"
+ },
+ "IRR": {
+ "name": "ఇరానియనౠరీయలà±",
+ "symbol": "IRR"
+ },
+ "EGP": {
+ "name": "ఈజిపà±à°·à°¿à°¯à°¨à± పౌండà±",
+ "symbol": "EGP"
+ },
+ "UAH": {
+ "name": "ఉకà±à°°à°¯à°¿à°¨à°¿à°¯à°¨à± à°¹à±à°°à°¿à°µà±â€Œà°¨à°¿à°¯à°¾",
+ "symbol": "UAH"
+ },
+ "UZS": {
+ "name": "ఉజà±â€Œà°¬à±†à°•à°¿à°¸à±à°¤à°¾à°¨à± సౌమà±",
+ "symbol": "UZS"
+ },
+ "KPW": {
+ "name": "ఉతà±à°¤à°° కొరియా వోనà±",
+ "symbol": "KPW"
+ },
+ "UYU": {
+ "name": "ఉరà±à°—à±à°µà±†à°¯à°¨à± పెసో",
+ "symbol": "UYU"
+ },
+ "YER": {
+ "name": "à°Žà°®à±à°¨à±€ రీయలà±",
+ "symbol": "YER"
+ },
+ "ERN": {
+ "name": "à°Žà°°à°¿à°Ÿà±à°°à±€à°¨à± నకà±à°«à°¾",
+ "symbol": "ERN"
+ },
+ "ILS": {
+ "name": "à°à°°à°¾à°¯à°¿à°²à°¿ à°¨à±à°¯à±‚ షెకà±à°¯à±†à°²à±",
+ "symbol": "₪"
+ },
+ "ISK": {
+ "name": "à°à°¸à±à°²à°¾à°‚à°¡à°¿à°•à± à°•à±à°°à±‹à°¨à°¾",
+ "symbol": "ISK"
+ },
+ "OMR": {
+ "name": "ఒమాని రీయలà±",
+ "symbol": "OMR"
+ },
+ "KHR": {
+ "name": "కాంబోడియనౠరీలà±",
+ "symbol": "KHR"
+ },
+ "KGS": {
+ "name": "à°•à°¿à°°à±à°—à°¿à°¸à±à°¥à°¾à°¨à°¿ సౌమà±",
+ "symbol": "KGS"
+ },
+ "KWD": {
+ "name": "à°•à±à°µà±ˆà°Ÿà± దీనారà±",
+ "symbol": "KWD"
+ },
+ "CAD": {
+ "name": "కెనడియనౠడాలరà±",
+ "symbol": "CA$"
+ },
+ "KES": {
+ "name": "కెనà±à°¯à°¾à°¨à± à°·à°¿à°²à±à°²à°¿à°‚à°—à±",
+ "symbol": "KES"
+ },
+ "CVE": {
+ "name": "కేపౠవెరà±à°¡à°¿à°¯à°¨à± à°Žà°¸à±à°•à±à°¡à±‹",
+ "symbol": "CVE"
+ },
+ "KYD": {
+ "name": "కేమానౠదీవà±à°² డాలరà±",
+ "symbol": "KYD"
+ },
+ "CDF": {
+ "name": "కొంగోలిసౠఫà±à°°à°¾à°‚à°•à±",
+ "symbol": "CDF"
+ },
+ "KMF": {
+ "name": "కొమోరియనౠఫà±à°°à°¾à°‚à°•à±",
+ "symbol": "KMF"
+ },
+ "COP": {
+ "name": "కొలంబియనౠపెసో",
+ "symbol": "COP"
+ },
+ "CRC": {
+ "name": "కోసà±à°Ÿà°¾ రికనౠకోలోనà±",
+ "symbol": "CRC"
+ },
+ "CUC": {
+ "name": "à°•à±à°¯à±‚బనౠకనà±à°µà°°à±à°Ÿà°¬à±à°²à± పెసో",
+ "symbol": "CUC"
+ },
+ "CUP": {
+ "name": "à°•à±à°¯à±‚బనౠపెసో",
+ "symbol": "CUP"
+ },
+ "TWD": {
+ "name": "à°•à±à°°à±Šà°¤à±à°¤ తైవానౠడాలరà±",
+ "symbol": "NT$"
+ },
+ "HRK": {
+ "name": "à°•à±à°°à±Šà°¯à±‡à°·à°¿à°¯à°¨à± à°•à±à°¯à±‚à°¨",
+ "symbol": "HRK"
+ },
+ "QAR": {
+ "name": "à°•à±à°µà°¾à°Ÿà°°à°¿ రీయలà±",
+ "symbol": "QAR"
+ },
+ "KZT": {
+ "name": "ఖజికిసà±à°¥à°¾à°¨à± టెంగే",
+ "symbol": "KZT"
+ },
+ "GMD": {
+ "name": "గాంబియనౠదలాసి",
+ "symbol": "GMD"
+ },
+ "GHS": {
+ "name": "గానెయనౠసెడి",
+ "symbol": "GHS"
+ },
+ "GYD": {
+ "name": "à°—à±à°¯à°¨à°¿à°¯à°¾à°¸à± డాలరà±",
+ "symbol": "GYD"
+ },
+ "GTQ": {
+ "name": "à°—à±à°¯à±à°Ÿà±†à°®à°¾à°²à°¨à± à°•à±à°µà±†à°Ÿà±â€Œà°œà°²à±",
+ "symbol": "GTQ"
+ },
+ "GNF": {
+ "name": "à°—à±à°µà°¿à°¨à°¿à°¯à°¨à± à°«à±à°°à°¾à°‚à°•à±",
+ "symbol": "GNF"
+ },
+ "CLP": {
+ "name": "చిలియనౠపెసో",
+ "symbol": "CLP"
+ },
+ "CZK": {
+ "name": "చెకౠరిపబà±à°²à°¿à°•à± కోరà±à°¨à°¾",
+ "symbol": "CZK"
+ },
+ "CNY": {
+ "name": "చైనా దేశ à°¯à±à°µà°¾à°¨à±",
+ "symbol": "CNÂ¥"
+ },
+ "JPY": {
+ "name": "జపానౠదేశ యెసà±",
+ "symbol": "JPÂ¥"
+ },
+ "JMD": {
+ "name": "జమైకనౠడాలరà±",
+ "symbol": "JMD"
+ },
+ "ZMW": {
+ "name": "జాంబియనౠకà±à°µà°¾à°šà°¾",
+ "symbol": "ZMW"
+ },
+ "GEL": {
+ "name": "జారà±à°œà°¿à°¯à°¨à± లారి",
+ "symbol": "GEL"
+ },
+ "DJF": {
+ "name": "జిబోటియనౠఫà±à°°à°¾à°‚à°•à±",
+ "symbol": "DJF"
+ },
+ "GIP": {
+ "name": "జిబà±à°°à°²à±â€Œà°Ÿà±‚రౠపౌండà±",
+ "symbol": "GIP"
+ },
+ "JOD": {
+ "name": "జోరà±â€Œà°¡à°¾à°¨à°¿à°¯à°¨à± దీనారà±",
+ "symbol": "JOD"
+ },
+ "TZS": {
+ "name": "టాంజానియనౠషిలà±à°²à°¿à°‚à°—à±",
+ "symbol": "TZS"
+ },
+ "TOP": {
+ "name": "టోంగానౠపాంʻగా",
+ "symbol": "TOP"
+ },
+ "TTD": {
+ "name": "à°Ÿà±à°°à°¿à°¨à°¿à°¡à°¾à°¡à± మరియౠటొబాగో డాలరà±",
+ "symbol": "TTD"
+ },
+ "DKK": {
+ "name": "డానిషౠకà±à°°à±‹à°¨à±",
+ "symbol": "DKK"
+ },
+ "DOP": {
+ "name": "డోమినికనౠపెసో",
+ "symbol": "DOP"
+ },
+ "TJS": {
+ "name": "తజికిసà±à°¥à°¾à°¨à± సమోని",
+ "symbol": "TJS"
+ },
+ "TND": {
+ "name": "à°¤à±à°¨à±€à°·à°¿à°¯à°¨à± దీనారà±",
+ "symbol": "TND"
+ },
+ "TRY": {
+ "name": "à°¤à±à°°à±à°•à°¿à°·à± లిరా",
+ "symbol": "TRY"
+ },
+ "TMT": {
+ "name": "à°¤à±à°°à±à°•à±â€Œà°®à±†à°¨à°¿à°¸à±à°¥à°¾à°¨à°¿ మనాటà±",
+ "symbol": "TMT"
+ },
+ "XCD": {
+ "name": "తూరà±à°ªà± కరీబియనౠడాలరà±",
+ "symbol": "EC$"
+ },
+ "THB": {
+ "name": "థాయౠబాటà±",
+ "symbol": "฿"
+ },
+ "ZAR": {
+ "name": "దకà±à°·à°¿à°£ ఆఫà±à°°à°¿à°•à°¾ à°°à±à°¯à°¾à°‚à°¡à±",
+ "symbol": "ZAR"
+ },
+ "KRW": {
+ "name": "దకà±à°·à°¿à°£ కొరియా వోనà±",
+ "symbol": "â‚©"
+ },
+ "SSP": {
+ "name": "దకà±à°·à°¿à°£ à°¸à±à°¡à°¾à°¨à±€à°¸à± పౌండà±",
+ "symbol": "SSP"
+ },
+ "NAD": {
+ "name": "నమిబియనౠడాలరà±",
+ "symbol": "NAD"
+ },
+ "NOK": {
+ "name": "నారà±à°µà±‡à°œà±€à°¯à°¨à± à°•à±à°°à±‹à°¨à±",
+ "symbol": "NOK"
+ },
+ "NIO": {
+ "name": "నికరగà±à°¯à±à°¯à°¨à± కొరà±â€Œà°¡à±à°¬à±",
+ "symbol": "NIO"
+ },
+ "ANG": {
+ "name": "నెదరà±à°²à°¾à°‚à°¡à±à°¸à± యాంటిలà±à°²à°¿à°¯à°¨à± à°—à°¿à°²à±â€Œà°¡à°°à±",
+ "symbol": "ANG"
+ },
+ "NPR": {
+ "name": "నేపాలీయà±à°² రూపాయి",
+ "symbol": "NPR"
+ },
+ "NGN": {
+ "name": "నైజీరియనౠనైరా",
+ "symbol": "NGN"
+ },
+ "NZD": {
+ "name": "à°¨à±à°¯à±‚జిలాండౠడాలరà±",
+ "symbol": "NZ$"
+ },
+ "PAB": {
+ "name": "పనామనియనౠబలà±à°¬à±‹à°µ",
+ "symbol": "PAB"
+ },
+ "PGK": {
+ "name": "పపà±à°¯à±‚ à°¨à±à°¯à±‚ à°—à±à°¯à°¿à°¨à°¿à°¯à°¨à± కినా",
+ "symbol": "PGK"
+ },
+ "PYG": {
+ "name": "పరగà±à°µà°¾à°¯à°¨à± à°—à±à°µà°¾à°°à°¨à°¿",
+ "symbol": "PYG"
+ },
+ "PKR": {
+ "name": "పాకిసà±à°¥à°¾à°¨à± రూపాయి",
+ "symbol": "PKR"
+ },
+ "PEN": {
+ "name": "పెరà±à°µà°¿à°¯à°¨à± à°¨à±à°¯à±‚వో సోలà±",
+ "symbol": "PEN"
+ },
+ "PLN": {
+ "name": "పోలిషౠజà±à°²à±‹à°Ÿà±€",
+ "symbol": "PLN"
+ },
+ "FKP": {
+ "name": "ఫాకà±â€Œà°²à±à°¯à°¾à°‚డౠదీవà±à°²à± పౌండà±",
+ "symbol": "FKP"
+ },
+ "PHP": {
+ "name": "ఫిలిపà±à°ªà°¿à°¨à± పెసో",
+ "symbol": "PHP"
+ },
+ "FJD": {
+ "name": "ఫీజియనౠడాలరà±",
+ "symbol": "FJD"
+ },
+ "BBD": {
+ "name": "బరà±à°¬à°¾à°¡à°¿à°¯à°¨à± డాలరà±",
+ "symbol": "BBD"
+ },
+ "BGN": {
+ "name": "బలà±à°—ేరియనౠలేవà±",
+ "symbol": "BGN"
+ },
+ "BSD": {
+ "name": "బహామియనౠడాలరà±",
+ "symbol": "BSD"
+ },
+ "BHD": {
+ "name": "బహà±à°°à±ˆà°¨à°¿ దీనారà±",
+ "symbol": "BHD"
+ },
+ "BDT": {
+ "name": "బాంగà±à°²à°¾à°¦à±‡à°¶à± టాకా",
+ "symbol": "BDT"
+ },
+ "BIF": {
+ "name": "à°¬à±à°°à°¿à°‚డియనౠఫà±à°°à°¾à°‚à°•à±",
+ "symbol": "BIF"
+ },
+ "BMD": {
+ "name": "బెరà±à°®à±à°¡à°¨à± డాలరà±",
+ "symbol": "BMD"
+ },
+ "BYR": {
+ "name": "బెలరూసియనౠరూబలà±",
+ "symbol": "BYR"
+ },
+ "BZD": {
+ "name": "బెలీజౠడాలరà±",
+ "symbol": "BZD"
+ },
+ "BOB": {
+ "name": "బొలీవియనౠబొలీవియానో",
+ "symbol": "BOB"
+ },
+ "BWP": {
+ "name": "బోటà±à°¸à±â€Œà°µà°¾à°¨à°¾ à°ªà±à°²à°¾",
+ "symbol": "BWP"
+ },
+ "BAM": {
+ "name": "బోసà±à°¨à°¿à°¯à°¾-హెరà±à°œà°—ోవినా మారà±à°ªà°¿à°¡à°¿ చెయà±à°¯à°—లిగే మారà±à°•à±",
+ "symbol": "BAM"
+ },
+ "GBP": {
+ "name": "à°¬à±à°°à°¿à°Ÿà°¿à°·à± పౌండౠసà±à°Ÿà±†à°°à±à°²à°¿à°‚à°—à±",
+ "symbol": "£"
+ },
+ "BND": {
+ "name": "à°¬à±à°°à±‚నై డాలరà±",
+ "symbol": "BND"
+ },
+ "BRL": {
+ "name": "à°¬à±à°°à±†à°œà°¿à°²à°¿à°¯à°¨à± రియలà±",
+ "symbol": "R$"
+ },
+ "BTN": {
+ "name": "భూటానీయà±à°² à°—à±à°²à±â€Œà°Ÿà±à°°à±à°®à±",
+ "symbol": "BTN"
+ },
+ "MNT": {
+ "name": "మంగోలియనౠటà±à°—à±à°°à°¿à°•à±",
+ "symbol": "MNT"
+ },
+ "MOP": {
+ "name": "మకనీసౠపటాక",
+ "symbol": "MOP"
+ },
+ "MMK": {
+ "name": "మయనà±à°®à°¾à°°à± à°•à±à°¯à°¾à°Ÿà±",
+ "symbol": "MMK"
+ },
+ "MGA": {
+ "name": "మలగసీ అరియరీ",
+ "symbol": "MGA"
+ },
+ "MWK": {
+ "name": "మలావియనౠకà±à°µà°¾à°šà°¾",
+ "symbol": "MWK"
+ },
+ "MYR": {
+ "name": "మలేషియా à°°à°¿à°‚à°—à±à°—à°¿à°Ÿà±",
+ "symbol": "MYR"
+ },
+ "MUR": {
+ "name": "మారిషనౠరూపాయి",
+ "symbol": "MUR"
+ },
+ "MVR": {
+ "name": "మాలà±à°¦à±€à°µà°¿à°¯à°¨à± à°°à±à°«à°¿à°¯à°¾",
+ "symbol": "MVR"
+ },
+ "MXN": {
+ "name": "మెకà±à°¸à°¿à°•à°¨à± పెసో",
+ "symbol": "MX$"
+ },
+ "MKD": {
+ "name": "మెసిడోనియనౠదినారà±",
+ "symbol": "MKD"
+ },
+ "MZN": {
+ "name": "మొజాంబికనౠమెటికలà±",
+ "symbol": "MZN"
+ },
+ "MAD": {
+ "name": "మోరోకనౠదిరà±à°¹à±à°®à±",
+ "symbol": "MAD"
+ },
+ "MDL": {
+ "name": "మోలà±â€Œà°¡à±‹à°µà°¨à± à°²à±à°¯à±‚",
+ "symbol": "MDL"
+ },
+ "MRO": {
+ "name": "మౌరిటానియనౠఒగà±à°¯à°¿à°¯à°¾",
+ "symbol": "MRO"
+ },
+ "UGX": {
+ "name": "à°¯à±à°—ండనౠషిలà±à°²à°¿à°‚à°—à±",
+ "symbol": "UGX"
+ },
+ "AED": {
+ "name": "à°¯à±à°¨à±ˆà°Ÿà±†à°¡à± ఆరబౠఎమిరేటà±à°¸à± దిరామà±",
+ "symbol": "AED"
+ },
+ "EUR": {
+ "name": "à°¯à±à°°à±Š",
+ "symbol": "€"
+ },
+ "RUB": {
+ "name": "à°°à°·à±à°¯à°¨à± రూబలà±",
+ "symbol": "RUB"
+ },
+ "INR": {
+ "name": "రూపాయి",
+ "symbol": "₹"
+ },
+ "RON": {
+ "name": "రోమానియానౠలెయà±",
+ "symbol": "RON"
+ },
+ "RWF": {
+ "name": "à°°à±à°µà°¾à°¨à°¡à°¾à°¨à± à°«à±à°°à°¾à°‚à°•à±",
+ "symbol": "RWF"
+ },
+ "LAK": {
+ "name": "లాటియనౠకిపà±",
+ "symbol": "LAK"
+ },
+ "LTL": {
+ "name": "లిథోనియనౠలీటాసà±",
+ "symbol": "LTL"
+ },
+ "LYD": {
+ "name": "లిబియనౠదీనారà±",
+ "symbol": "LYD"
+ },
+ "LRD": {
+ "name": "లిబేరియనౠడాలరà±",
+ "symbol": "LRD"
+ },
+ "LBP": {
+ "name": "లెబనీసౠపౌండà±",
+ "symbol": "LBP"
+ },
+ "LSL": {
+ "name": "లెసోధో లోటి",
+ "symbol": "LSL"
+ },
+ "VUV": {
+ "name": "వనాటౠవటà±",
+ "symbol": "VUV"
+ },
+ "VND": {
+ "name": "వియతà±à°¨à°¾à°®à±€à°¯à±à°² డాంగà±",
+ "symbol": "â‚«"
+ },
+ "VEF": {
+ "name": "వెనà±à°œà±à°²à°¾ బోలివరà±",
+ "symbol": "VEF"
+ },
+ "LKR": {
+ "name": "à°¶à±à°°à±€à°²à°‚à°• రూపాయి",
+ "symbol": "LKR"
+ },
+ "WST": {
+ "name": "సమోయనౠతాలా",
+ "symbol": "WST"
+ },
+ "STD": {
+ "name": "సావో టోమౠమరియౠపà±à°°à°¿à°¨à±à°¸à°¿à°ªà°¿ డోబà±à°°à°¾",
+ "symbol": "STD"
+ },
+ "XAF": {
+ "name": "సిఎఫà±â€Œà°Ž à°«à±à°°à°¾à°‚కౠబిఇà°à°¸à°¿",
+ "symbol": "FCFA"
+ },
+ "XOF": {
+ "name": "సిఎఫà±â€Œà°Ž à°«à±à°°à°¾à°‚కౠబిసిఈà°à°“",
+ "symbol": "CFA"
+ },
+ "XPF": {
+ "name": "సిఎఫà±â€Œà°ªà°¿ à°«à±à°°à°¾à°‚à°•à±",
+ "symbol": "CFPF"
+ },
+ "SGD": {
+ "name": "సింగపూరౠడాలరà±",
+ "symbol": "SGD"
+ },
+ "SYP": {
+ "name": "సిరీయనౠపౌండà±",
+ "symbol": "SYP"
+ },
+ "SLL": {
+ "name": "సీయిరౠలియోనియనౠలీయోనà±",
+ "symbol": "SLL"
+ },
+ "SDG": {
+ "name": "à°¸à±à°¡à°¾à°¨à±€à°¸à± పౌండà±",
+ "symbol": "SDG"
+ },
+ "SRD": {
+ "name": "à°¸à±à°°à°¿à°¨à°¾à°®à±€à°¯à±à°² డాలరà±",
+ "symbol": "SRD"
+ },
+ "SHP": {
+ "name": "సెయింటౠహెలెనా పౌండà±",
+ "symbol": "SHP"
+ },
+ "SCR": {
+ "name": "సెయిచెలà±à°²à±‹à°¯à°¿à°¸à± రూపాయి",
+ "symbol": "SCR"
+ },
+ "RSD": {
+ "name": "సెరà±à°¬à°¿à°¯à°¨à± దీనారà±",
+ "symbol": "RSD"
+ },
+ "SOS": {
+ "name": "సొమాలి à°·à°¿à°²à±à°²à°¿à°‚à°—à±",
+ "symbol": "SOS"
+ },
+ "SBD": {
+ "name": "సోలోమనౠదీవà±à°² డాలరà±",
+ "symbol": "SBD"
+ },
+ "SAR": {
+ "name": "సౌది రియలà±",
+ "symbol": "SAR"
+ },
+ "SZL": {
+ "name": "à°¸à±à°µà°¾à°œà°¿ లిలానà±à°—ేని",
+ "symbol": "SZL"
+ },
+ "CHF": {
+ "name": "à°¸à±à°µà°¿à°¸à± à°«à±à°°à°¾à°‚à°•à±",
+ "symbol": "CHF"
+ },
+ "SEK": {
+ "name": "à°¸à±à°µà±€à°¡à°¿à°·à± à°•à±à°°à±‹à°¨à°¾",
+ "symbol": "SEK"
+ },
+ "HUF": {
+ "name": "హంగేరియనౠఫోరినà±à°Ÿà±",
+ "symbol": "HUF"
+ },
+ "HKD": {
+ "name": "హాంకాంగౠడాలరà±",
+ "symbol": "HK$"
+ },
+ "HTG": {
+ "name": "హైటియనౠగà±à°µà±‹à°°à±à°¡à±‡",
+ "symbol": "HTG"
+ },
+ "HNL": {
+ "name": "హోండà±à°°à°¨à± లెమిపిరా",
+ "symbol": "HNL"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/currency/teo.json b/library/intl/resources/currency/teo.json
new file mode 100644
index 000000000..f80416729
--- /dev/null
+++ b/library/intl/resources/currency/teo.json
@@ -0,0 +1,634 @@
+{
+ "AFN": {
+ "name": "AFN",
+ "symbol": "AFN"
+ },
+ "ALL": {
+ "name": "ALL",
+ "symbol": "ALL"
+ },
+ "AMD": {
+ "name": "AMD",
+ "symbol": "AMD"
+ },
+ "ANG": {
+ "name": "ANG",
+ "symbol": "ANG"
+ },
+ "ZAR": {
+ "name": "Ango’otol lok’ Afrika Kusini",
+ "symbol": "ZAR"
+ },
+ "DZD": {
+ "name": "Ango’otol lok’ Aljeria",
+ "symbol": "DZD"
+ },
+ "AOA": {
+ "name": "Ango’otol lok’ Angola",
+ "symbol": "AOA"
+ },
+ "AUD": {
+ "name": "Ango’otol lok’ Australia",
+ "symbol": "A$"
+ },
+ "BHD": {
+ "name": "Ango’otol lok’ Bahareni",
+ "symbol": "BHD"
+ },
+ "BWP": {
+ "name": "Ango’otol lok’ Botswana",
+ "symbol": "BWP"
+ },
+ "MGA": {
+ "name": "Ango’otol lok’ Bukini",
+ "symbol": "MGA"
+ },
+ "BIF": {
+ "name": "Ango’otol lok’ Burundi",
+ "symbol": "BIF"
+ },
+ "XOF": {
+ "name": "Ango’otol lok’ CFA BCEAO",
+ "symbol": "CFA"
+ },
+ "XAF": {
+ "name": "Ango’otol lok’ CFA BEAC",
+ "symbol": "FCFA"
+ },
+ "CNY": {
+ "name": "Ango’otol lok’ China",
+ "symbol": "CNÂ¥"
+ },
+ "ERN": {
+ "name": "Ango’otol lok’ Eritrea",
+ "symbol": "ERN"
+ },
+ "AED": {
+ "name": "Ango’otol lok’ Falme za Kiarabu",
+ "symbol": "AED"
+ },
+ "INR": {
+ "name": "Ango’otol lok’ India",
+ "symbol": "₹"
+ },
+ "DJF": {
+ "name": "Ango’otol lok’ Jibuti",
+ "symbol": "DJF"
+ },
+ "KES": {
+ "name": "Ango’otol lok’ Kenya",
+ "symbol": "KES"
+ },
+ "CVE": {
+ "name": "Ango’otol lok’ Kepuvede",
+ "symbol": "CVE"
+ },
+ "JPY": {
+ "name": "Ango’otol lok’ Kijapani",
+ "symbol": "JPÂ¥"
+ },
+ "KMF": {
+ "name": "Ango’otol lok’ Komoro",
+ "symbol": "KMF"
+ },
+ "CDF": {
+ "name": "Ango’otol lok’ Kongo",
+ "symbol": "CDF"
+ },
+ "LSL": {
+ "name": "Ango’otol lok’ Lesoto",
+ "symbol": "LSL"
+ },
+ "LYD": {
+ "name": "Ango’otol lok’ Libya",
+ "symbol": "LYD"
+ },
+ "MWK": {
+ "name": "Ango’otol lok’ Malawi",
+ "symbol": "MWK"
+ },
+ "MUR": {
+ "name": "Ango’otol lok’ Morisi",
+ "symbol": "MUR"
+ },
+ "MRO": {
+ "name": "Ango’otol lok’ Moritania",
+ "symbol": "MRO"
+ },
+ "MAD": {
+ "name": "Ango’otol lok’ Moroko",
+ "symbol": "MAD"
+ },
+ "NAD": {
+ "name": "Ango’otol lok’ Namibia",
+ "symbol": "NAD"
+ },
+ "NGN": {
+ "name": "Ango’otol lok’ Nijeria",
+ "symbol": "NGN"
+ },
+ "RWF": {
+ "name": "Ango’otol lok’ Rwanda",
+ "symbol": "RWF"
+ },
+ "SHP": {
+ "name": "Ango’otol lok’ Santahelena",
+ "symbol": "SHP"
+ },
+ "STD": {
+ "name": "Ango’otol lok’ Sao Tome na Principe",
+ "symbol": "STD"
+ },
+ "SAR": {
+ "name": "Ango’otol lok’ Saudia",
+ "symbol": "SAR"
+ },
+ "SCR": {
+ "name": "Ango’otol lok’ Shelisheli",
+ "symbol": "SCR"
+ },
+ "SOS": {
+ "name": "Ango’otol lok’ Somalia",
+ "symbol": "SOS"
+ },
+ "TZS": {
+ "name": "Ango’otol lok’ Tanzania",
+ "symbol": "TZS"
+ },
+ "TND": {
+ "name": "Ango’otol lok’ Tunisia",
+ "symbol": "TND"
+ },
+ "UGX": {
+ "name": "Ango’otol lok’ Uganda",
+ "symbol": "USh"
+ },
+ "ETB": {
+ "name": "Ango’otol lok’ Uhabeshi",
+ "symbol": "ETB"
+ },
+ "CHF": {
+ "name": "Ango’otol lok’ Uswisi",
+ "symbol": "CHF"
+ },
+ "ZMW": {
+ "name": "Ango’otol lok’ Zambia",
+ "symbol": "ZMW"
+ },
+ "ARS": {
+ "name": "ARS",
+ "symbol": "ARS"
+ },
+ "AWG": {
+ "name": "AWG",
+ "symbol": "AWG"
+ },
+ "AZN": {
+ "name": "AZN",
+ "symbol": "AZN"
+ },
+ "BAM": {
+ "name": "BAM",
+ "symbol": "BAM"
+ },
+ "BBD": {
+ "name": "BBD",
+ "symbol": "BBD"
+ },
+ "BDT": {
+ "name": "BDT",
+ "symbol": "BDT"
+ },
+ "BGN": {
+ "name": "BGN",
+ "symbol": "BGN"
+ },
+ "BMD": {
+ "name": "BMD",
+ "symbol": "BMD"
+ },
+ "BND": {
+ "name": "BND",
+ "symbol": "BND"
+ },
+ "BOB": {
+ "name": "BOB",
+ "symbol": "BOB"
+ },
+ "BRL": {
+ "name": "BRL",
+ "symbol": "R$"
+ },
+ "BSD": {
+ "name": "BSD",
+ "symbol": "BSD"
+ },
+ "BTN": {
+ "name": "BTN",
+ "symbol": "BTN"
+ },
+ "BYR": {
+ "name": "BYR",
+ "symbol": "BYR"
+ },
+ "BZD": {
+ "name": "BZD",
+ "symbol": "BZD"
+ },
+ "CLP": {
+ "name": "CLP",
+ "symbol": "CLP"
+ },
+ "COP": {
+ "name": "COP",
+ "symbol": "COP"
+ },
+ "CRC": {
+ "name": "CRC",
+ "symbol": "CRC"
+ },
+ "CUC": {
+ "name": "CUC",
+ "symbol": "CUC"
+ },
+ "CUP": {
+ "name": "CUP",
+ "symbol": "CUP"
+ },
+ "CZK": {
+ "name": "CZK",
+ "symbol": "CZK"
+ },
+ "GMD": {
+ "name": "Dalasi ya Gambia",
+ "symbol": "GMD"
+ },
+ "DKK": {
+ "name": "DKK",
+ "symbol": "DKK"
+ },
+ "DOP": {
+ "name": "DOP",
+ "symbol": "DOP"
+ },
+ "USD": {
+ "name": "edola lok’ Amareka",
+ "symbol": "US$"
+ },
+ "LRD": {
+ "name": "edola lok’ Liberia",
+ "symbol": "LRD"
+ },
+ "CAD": {
+ "name": "Edola lok’Kanada",
+ "symbol": "CA$"
+ },
+ "EGP": {
+ "name": "Epaunt lok’ Misri",
+ "symbol": "EGP"
+ },
+ "SDG": {
+ "name": "Epaunt Lok’ Sudan",
+ "symbol": "SDG"
+ },
+ "GBP": {
+ "name": "Epaunt lok’ Uingereza",
+ "symbol": "£"
+ },
+ "FJD": {
+ "name": "FJD",
+ "symbol": "FJD"
+ },
+ "FKP": {
+ "name": "FKP",
+ "symbol": "FKP"
+ },
+ "GEL": {
+ "name": "GEL",
+ "symbol": "GEL"
+ },
+ "GHS": {
+ "name": "GHS",
+ "symbol": "GHS"
+ },
+ "GIP": {
+ "name": "GIP",
+ "symbol": "GIP"
+ },
+ "GNF": {
+ "name": "GNF",
+ "symbol": "GNF"
+ },
+ "GTQ": {
+ "name": "GTQ",
+ "symbol": "GTQ"
+ },
+ "GYD": {
+ "name": "GYD",
+ "symbol": "GYD"
+ },
+ "HKD": {
+ "name": "HKD",
+ "symbol": "HK$"
+ },
+ "HNL": {
+ "name": "HNL",
+ "symbol": "HNL"
+ },
+ "HRK": {
+ "name": "HRK",
+ "symbol": "HRK"
+ },
+ "HTG": {
+ "name": "HTG",
+ "symbol": "HTG"
+ },
+ "HUF": {
+ "name": "HUF",
+ "symbol": "HUF"
+ },
+ "IDR": {
+ "name": "IDR",
+ "symbol": "IDR"
+ },
+ "ILS": {
+ "name": "ILS",
+ "symbol": "₪"
+ },
+ "IQD": {
+ "name": "IQD",
+ "symbol": "IQD"
+ },
+ "IRR": {
+ "name": "IRR",
+ "symbol": "IRR"
+ },
+ "ISK": {
+ "name": "ISK",
+ "symbol": "ISK"
+ },
+ "JMD": {
+ "name": "JMD",
+ "symbol": "JMD"
+ },
+ "JOD": {
+ "name": "JOD",
+ "symbol": "JOD"
+ },
+ "KGS": {
+ "name": "KGS",
+ "symbol": "KGS"
+ },
+ "KHR": {
+ "name": "KHR",
+ "symbol": "KHR"
+ },
+ "KPW": {
+ "name": "KPW",
+ "symbol": "KPW"
+ },
+ "KRW": {
+ "name": "KRW",
+ "symbol": "â‚©"
+ },
+ "KWD": {
+ "name": "KWD",
+ "symbol": "KWD"
+ },
+ "KYD": {
+ "name": "KYD",
+ "symbol": "KYD"
+ },
+ "KZT": {
+ "name": "KZT",
+ "symbol": "KZT"
+ },
+ "LAK": {
+ "name": "LAK",
+ "symbol": "LAK"
+ },
+ "LBP": {
+ "name": "LBP",
+ "symbol": "LBP"
+ },
+ "SLL": {
+ "name": "Leoni",
+ "symbol": "SLL"
+ },
+ "SZL": {
+ "name": "Lilangeni",
+ "symbol": "SZL"
+ },
+ "LKR": {
+ "name": "LKR",
+ "symbol": "LKR"
+ },
+ "LTL": {
+ "name": "LTL",
+ "symbol": "LTL"
+ },
+ "MDL": {
+ "name": "MDL",
+ "symbol": "MDL"
+ },
+ "MKD": {
+ "name": "MKD",
+ "symbol": "MKD"
+ },
+ "MMK": {
+ "name": "MMK",
+ "symbol": "MMK"
+ },
+ "MNT": {
+ "name": "MNT",
+ "symbol": "MNT"
+ },
+ "MOP": {
+ "name": "MOP",
+ "symbol": "MOP"
+ },
+ "MVR": {
+ "name": "MVR",
+ "symbol": "MVR"
+ },
+ "MXN": {
+ "name": "MXN",
+ "symbol": "MX$"
+ },
+ "MYR": {
+ "name": "MYR",
+ "symbol": "MYR"
+ },
+ "MZN": {
+ "name": "MZN",
+ "symbol": "MZN"
+ },
+ "NIO": {
+ "name": "NIO",
+ "symbol": "NIO"
+ },
+ "NOK": {
+ "name": "NOK",
+ "symbol": "NOK"
+ },
+ "NPR": {
+ "name": "NPR",
+ "symbol": "NPR"
+ },
+ "NZD": {
+ "name": "NZD",
+ "symbol": "NZ$"
+ },
+ "OMR": {
+ "name": "OMR",
+ "symbol": "OMR"
+ },
+ "PAB": {
+ "name": "PAB",
+ "symbol": "PAB"
+ },
+ "PEN": {
+ "name": "PEN",
+ "symbol": "PEN"
+ },
+ "PGK": {
+ "name": "PGK",
+ "symbol": "PGK"
+ },
+ "PHP": {
+ "name": "PHP",
+ "symbol": "PHP"
+ },
+ "PKR": {
+ "name": "PKR",
+ "symbol": "PKR"
+ },
+ "PLN": {
+ "name": "PLN",
+ "symbol": "PLN"
+ },
+ "PYG": {
+ "name": "PYG",
+ "symbol": "PYG"
+ },
+ "QAR": {
+ "name": "QAR",
+ "symbol": "QAR"
+ },
+ "RON": {
+ "name": "RON",
+ "symbol": "RON"
+ },
+ "RSD": {
+ "name": "RSD",
+ "symbol": "RSD"
+ },
+ "RUB": {
+ "name": "RUB",
+ "symbol": "RUB"
+ },
+ "SBD": {
+ "name": "SBD",
+ "symbol": "SBD"
+ },
+ "SEK": {
+ "name": "SEK",
+ "symbol": "SEK"
+ },
+ "SGD": {
+ "name": "SGD",
+ "symbol": "SGD"
+ },
+ "SRD": {
+ "name": "SRD",
+ "symbol": "SRD"
+ },
+ "SSP": {
+ "name": "SSP",
+ "symbol": "SSP"
+ },
+ "SVC": {
+ "name": "SVC",
+ "symbol": "SVC"
+ },
+ "SYP": {
+ "name": "SYP",
+ "symbol": "SYP"
+ },
+ "THB": {
+ "name": "THB",
+ "symbol": "THB"
+ },
+ "TJS": {
+ "name": "TJS",
+ "symbol": "TJS"
+ },
+ "TMT": {
+ "name": "TMT",
+ "symbol": "TMT"
+ },
+ "TOP": {
+ "name": "TOP",
+ "symbol": "TOP"
+ },
+ "TRY": {
+ "name": "TRY",
+ "symbol": "TRY"
+ },
+ "TTD": {
+ "name": "TTD",
+ "symbol": "TTD"
+ },
+ "TWD": {
+ "name": "TWD",
+ "symbol": "NT$"
+ },
+ "UAH": {
+ "name": "UAH",
+ "symbol": "UAH"
+ },
+ "UYU": {
+ "name": "UYU",
+ "symbol": "UYU"
+ },
+ "UZS": {
+ "name": "UZS",
+ "symbol": "UZS"
+ },
+ "VEF": {
+ "name": "VEF",
+ "symbol": "VEF"
+ },
+ "VND": {
+ "name": "VND",
+ "symbol": "â‚«"
+ },
+ "VUV": {
+ "name": "VUV",
+ "symbol": "VUV"
+ },
+ "WST": {
+ "name": "WST",
+ "symbol": "WST"
+ },
+ "XCD": {
+ "name": "XCD",
+ "symbol": "EC$"
+ },
+ "XPF": {
+ "name": "XPF",
+ "symbol": "CFPF"
+ },
+ "YER": {
+ "name": "YER",
+ "symbol": "YER"
+ },
+ "EUR": {
+ "name": "Yuro",
+ "symbol": "€"
+ },
+ "ZWL": {
+ "name": "ZWL",
+ "symbol": "ZWL"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/currency/th.json b/library/intl/resources/currency/th.json
new file mode 100644
index 000000000..b011356a8
--- /dev/null
+++ b/library/intl/resources/currency/th.json
@@ -0,0 +1,634 @@
+{
+ "AOA": {
+ "name": "à¸à¸§à¸²à¸™à¸‹à¸²à¹à¸­à¸‡à¹‚à¸à¸¥à¸²",
+ "symbol": "AOA"
+ },
+ "PYG": {
+ "name": "à¸à¸§à¸²à¸£à¸²à¸™à¸µà¸›à¸²à¸£à¸²à¸à¸§à¸±à¸¢",
+ "symbol": "PYG"
+ },
+ "NIO": {
+ "name": "à¸à¸­à¸£à¹Œà¹‚ดบานิà¸à¸²à¸£à¸²à¸à¸±à¸§",
+ "symbol": "NIO"
+ },
+ "ANG": {
+ "name": "à¸à¸´à¸¥à¹€à¸”อร์เนเธอร์à¹à¸¥à¸™à¸”์à¹à¸­à¸™à¸—ิลลิส",
+ "symbol": "ANG"
+ },
+ "PGK": {
+ "name": "à¸à¸µà¸™à¸²à¸›à¸²à¸›à¸±à¸§à¸™à¸´à¸§à¸à¸´à¸™à¸µ",
+ "symbol": "PGK"
+ },
+ "LAK": {
+ "name": "à¸à¸µà¸šà¸¥à¸²à¸§",
+ "symbol": "LAK"
+ },
+ "HTG": {
+ "name": "à¸à¸¹à¸£à¹Œà¸”เฮติ",
+ "symbol": "HTG"
+ },
+ "CRC": {
+ "name": "โà¸à¸¥à¸­à¸‡à¸„อสตาริà¸à¸²",
+ "symbol": "CRC"
+ },
+ "ZMW": {
+ "name": "ควาชาà¹à¸‹à¸¡à¹€à¸šà¸µà¸¢",
+ "symbol": "ZMW"
+ },
+ "MWK": {
+ "name": "ควาชามาลาวี",
+ "symbol": "MWK"
+ },
+ "HRK": {
+ "name": "คูนาโครเอเชีย",
+ "symbol": "HRK"
+ },
+ "GTQ": {
+ "name": "เควตซัลà¸à¸±à¸§à¹€à¸•à¸¡à¸²à¸¥à¸²",
+ "symbol": "GTQ"
+ },
+ "DKK": {
+ "name": "โครนเดนมาร์à¸",
+ "symbol": "DKK"
+ },
+ "NOK": {
+ "name": "โครนนอร์เวย์",
+ "symbol": "NOK"
+ },
+ "SEK": {
+ "name": "โครนาสวีเดน",
+ "symbol": "SEK"
+ },
+ "ISK": {
+ "name": "โครนาไอซ์à¹à¸¥à¸™à¸”์",
+ "symbol": "ISK"
+ },
+ "CZK": {
+ "name": "โครูนาสาธารณรัà¸à¹€à¸Šà¹‡à¸",
+ "symbol": "CZK"
+ },
+ "SVC": {
+ "name": "โคลอนเอลซัลวาดอร์",
+ "symbol": "SVC"
+ },
+ "MMK": {
+ "name": "จ๊าตพม่า",
+ "symbol": "MMK"
+ },
+ "KES": {
+ "name": "ชิลลิ่งเคนยา",
+ "symbol": "KES"
+ },
+ "SOS": {
+ "name": "ชิลลิงโซมาเลีย",
+ "symbol": "SOS"
+ },
+ "TZS": {
+ "name": "ชิลลิงà¹à¸—นซาเนีย",
+ "symbol": "TZS"
+ },
+ "UGX": {
+ "name": "ชิลลิงยูà¸à¸±à¸™à¸”า",
+ "symbol": "UGX"
+ },
+ "PLN": {
+ "name": "ซลอตีโปà¹à¸¥à¸™à¸”์",
+ "symbol": "PLN"
+ },
+ "KGS": {
+ "name": "ซอมคีร์à¸à¸µà¸‹à¸ªà¸–าน",
+ "symbol": "KGS"
+ },
+ "UZS": {
+ "name": "ซอมอุซเบà¸à¸´à¸ªà¸–าน",
+ "symbol": "UZS"
+ },
+ "GHS": {
+ "name": "เซดีà¸à¸²à¸™à¸²",
+ "symbol": "GHS"
+ },
+ "TJS": {
+ "name": "โซโมนิทาจิà¸à¸´à¸ªà¸–าน",
+ "symbol": "TJS"
+ },
+ "VND": {
+ "name": "ดองเวียดนาม",
+ "symbol": "â‚«"
+ },
+ "STD": {
+ "name": "ดอบราเซาตูเมà¹à¸¥à¸°à¸›à¸£à¸´à¸™à¸‹à¸´à¸›à¸µ",
+ "symbol": "STD"
+ },
+ "GYD": {
+ "name": "ดอลลาร์à¸à¸²à¸¢à¸­à¸²à¸™à¸²",
+ "symbol": "GYD"
+ },
+ "CAD": {
+ "name": "ดอลลาร์à¹à¸„นาดา",
+ "symbol": "CA$"
+ },
+ "XCD": {
+ "name": "ดอลลาร์à¹à¸„ริบเบียนตะวันออà¸",
+ "symbol": "EC$"
+ },
+ "JMD": {
+ "name": "ดอลลาร์จาเมà¸à¸²",
+ "symbol": "JMD"
+ },
+ "ZWL": {
+ "name": "ดอลลาร์ซิมบับเว (2009)",
+ "symbol": "ZWL"
+ },
+ "SRD": {
+ "name": "ดอลลาร์ซูรินาเม",
+ "symbol": "SRD"
+ },
+ "TTD": {
+ "name": "ดอลลาร์ตรินิà¹à¸”ดà¹à¸¥à¸°à¹‚ตเบโà¸",
+ "symbol": "TTD"
+ },
+ "TWD": {
+ "name": "ดอลลาร์ไต้หวันใหม่",
+ "symbol": "NT$"
+ },
+ "NAD": {
+ "name": "ดอลลาร์นามิเบีย",
+ "symbol": "NAD"
+ },
+ "NZD": {
+ "name": "ดอลลาร์นิวซีà¹à¸¥à¸™à¸”์",
+ "symbol": "NZ$"
+ },
+ "BND": {
+ "name": "ดอลลาร์บรูไน",
+ "symbol": "BND"
+ },
+ "BBD": {
+ "name": "ดอลลาร์บาร์เบโดส",
+ "symbol": "BBD"
+ },
+ "BSD": {
+ "name": "ดอลลาร์บาฮามาส",
+ "symbol": "BSD"
+ },
+ "BZD": {
+ "name": "ดอลลาร์เบลีซ",
+ "symbol": "BZD"
+ },
+ "BMD": {
+ "name": "ดอลลาร์เบอร์มิวดา",
+ "symbol": "BMD"
+ },
+ "FJD": {
+ "name": "ดอลลาร์ฟิจิ",
+ "symbol": "FJD"
+ },
+ "LRD": {
+ "name": "ดอลลาร์ไลบีเรีย",
+ "symbol": "LRD"
+ },
+ "USD": {
+ "name": "ดอลลาร์สหรัà¸",
+ "symbol": "US$"
+ },
+ "SGD": {
+ "name": "ดอลลาร์สิงคโปร์",
+ "symbol": "SGD"
+ },
+ "KYD": {
+ "name": "ดอลลาร์หมู่เà¸à¸²à¸°à¹€à¸„ย์à¹à¸¡à¸™",
+ "symbol": "KYD"
+ },
+ "SBD": {
+ "name": "ดอลลาร์หมู่เà¸à¸²à¸°à¹‚ซโลมอน",
+ "symbol": "SBD"
+ },
+ "AUD": {
+ "name": "ดอลลาร์ออสเตรเลีย",
+ "symbol": "AU$"
+ },
+ "HKD": {
+ "name": "ดอลลาร์ฮ่องà¸à¸‡",
+ "symbol": "HK$"
+ },
+ "GMD": {
+ "name": "ดาลาซีà¹à¸à¸¡à¹€à¸šà¸µà¸¢",
+ "symbol": "GMD"
+ },
+ "KWD": {
+ "name": "ดีนาร์คูเวต",
+ "symbol": "KWD"
+ },
+ "JOD": {
+ "name": "ดีนาร์จอร์à¹à¸”น",
+ "symbol": "JOD"
+ },
+ "RSD": {
+ "name": "ดีนาร์เซอร์เบีย",
+ "symbol": "RSD"
+ },
+ "TND": {
+ "name": "ดีนาร์ตูนิเซีย",
+ "symbol": "TND"
+ },
+ "BHD": {
+ "name": "ดีนาร์บาห์เรน",
+ "symbol": "BHD"
+ },
+ "MKD": {
+ "name": "ดีนาร์มาซิโดเนีย",
+ "symbol": "MKD"
+ },
+ "LYD": {
+ "name": "ดีนาร์ลิเบีย",
+ "symbol": "LYD"
+ },
+ "IQD": {
+ "name": "ดีนาร์อิรัà¸",
+ "symbol": "IQD"
+ },
+ "DZD": {
+ "name": "ดีนาร์à¹à¸­à¸¥à¸ˆà¸µà¹€à¸£à¸µà¸¢",
+ "symbol": "DZD"
+ },
+ "MAD": {
+ "name": "ดีà¹à¸£à¸«à¹Œà¸¡à¹‚มร็อà¸à¹‚à¸",
+ "symbol": "MAD"
+ },
+ "AED": {
+ "name": "เดอร์à¹à¸®à¸¡à¸ªà¸«à¸£à¸±à¸à¸­à¸²à¸«à¸£à¸±à¸šà¹€à¸­à¸¡à¸´à¹€à¸£à¸•à¸ªà¹Œ",
+ "symbol": "AED"
+ },
+ "AMD": {
+ "name": "à¹à¸”รมอาร์เมเนีย",
+ "symbol": "AMD"
+ },
+ "BDT": {
+ "name": "ตาà¸à¸²à¸šà¸±à¸‡à¸à¸¥à¸²à¹€à¸—ศ",
+ "symbol": "BDT"
+ },
+ "WST": {
+ "name": "ทาลาซามัว",
+ "symbol": "WST"
+ },
+ "MNT": {
+ "name": "ทูà¸à¸£à¸´à¸à¸¡à¸­à¸‡à¹‚à¸à¹€à¸¥à¸µà¸¢",
+ "symbol": "MNT"
+ },
+ "KZT": {
+ "name": "เทงเจคาซัคสถาน",
+ "symbol": "KZT"
+ },
+ "ILS": {
+ "name": "นิวเชเà¸à¸¥à¸­à¸´à¸ªà¸£à¸²à¹€à¸­à¸¥",
+ "symbol": "₪"
+ },
+ "PEN": {
+ "name": "นูโวซอลเปรู",
+ "symbol": "PEN"
+ },
+ "ERN": {
+ "name": "à¹à¸™à¸à¸Ÿà¸²à¹€à¸­à¸£à¸´à¹€à¸—รีย",
+ "symbol": "ERN"
+ },
+ "NGN": {
+ "name": "ไนราไนจีเรีย",
+ "symbol": "NGN"
+ },
+ "PAB": {
+ "name": "บัลบัวปานามา",
+ "symbol": "PAB"
+ },
+ "THB": {
+ "name": "บาทไทย",
+ "symbol": "THB"
+ },
+ "ETB": {
+ "name": "เบอรร์เอธิโอเปีย",
+ "symbol": "ETB"
+ },
+ "VEF": {
+ "name": "โบลิวาร์เวเนซุเอลา",
+ "symbol": "VEF"
+ },
+ "BOB": {
+ "name": "โบลิเวียโนโบลิเวีย",
+ "symbol": "BOB"
+ },
+ "SYP": {
+ "name": "ปอนด์ซีเรีย",
+ "symbol": "SYP"
+ },
+ "SDG": {
+ "name": "ปอนด์ซูดาน",
+ "symbol": "SDG"
+ },
+ "SSP": {
+ "name": "ปอนด์ซูดานใต้",
+ "symbol": "SSP"
+ },
+ "SHP": {
+ "name": "ปอนด์เซนต์เฮเลนา",
+ "symbol": "SHP"
+ },
+ "GIP": {
+ "name": "ปอนด์ยิบรอลตาร์",
+ "symbol": "GIP"
+ },
+ "LBP": {
+ "name": "ปอนด์เลบานอน",
+ "symbol": "LBP"
+ },
+ "GBP": {
+ "name": "ปอนด์สเตอร์ลิง (สหราชอาณาจัà¸à¸£)",
+ "symbol": "£"
+ },
+ "FKP": {
+ "name": "ปอนด์หมู่เà¸à¸²à¸°à¸Ÿà¸­à¸¥à¹Œà¸à¹à¸¥à¸™à¸”์",
+ "symbol": "FKP"
+ },
+ "EGP": {
+ "name": "ปอนด์อียิปต์",
+ "symbol": "EGP"
+ },
+ "MOP": {
+ "name": "ปาตาà¸à¸²à¸¡à¸²à¹€à¸à¹Šà¸²",
+ "symbol": "MOP"
+ },
+ "BWP": {
+ "name": "ปูลาบอตสวานา",
+ "symbol": "BWP"
+ },
+ "CUP": {
+ "name": "เปโซคิวบา",
+ "symbol": "CUP"
+ },
+ "CUC": {
+ "name": "เปโซคิวบา (à¹à¸›à¸¥à¸‡à¸ªà¸ à¸²à¸ž)",
+ "symbol": "CUC"
+ },
+ "COP": {
+ "name": "เปโซโคลอมเบีย",
+ "symbol": "COP"
+ },
+ "CLP": {
+ "name": "เปโซชิลี",
+ "symbol": "CLP"
+ },
+ "DOP": {
+ "name": "เปโซโดมินิà¸à¸±à¸™",
+ "symbol": "DOP"
+ },
+ "PHP": {
+ "name": "เปโซฟิลิปปินส์",
+ "symbol": "PHP"
+ },
+ "MXN": {
+ "name": "เปโซเม็à¸à¸‹à¸´à¹‚à¸",
+ "symbol": "MX$"
+ },
+ "ARS": {
+ "name": "เปโซอาร์เจนตินา",
+ "symbol": "ARS"
+ },
+ "UYU": {
+ "name": "เปโซอุรุà¸à¸§à¸±à¸¢",
+ "symbol": "UYU"
+ },
+ "TOP": {
+ "name": "พาà¹à¸­à¸‡à¸à¸²à¸•à¸­à¸‡à¸à¸²",
+ "symbol": "TOP"
+ },
+ "GNF": {
+ "name": "ฟรังà¸à¹Œà¸à¸´à¸™à¸µ",
+ "symbol": "GNF"
+ },
+ "CDF": {
+ "name": "ฟรังà¸à¹Œà¸„องโà¸",
+ "symbol": "CDF"
+ },
+ "KMF": {
+ "name": "ฟรังà¸à¹Œà¸„อโมโรส",
+ "symbol": "KMF"
+ },
+ "DJF": {
+ "name": "ฟรังà¸à¹Œà¸ˆà¸´à¸šà¸¹à¸•à¸µ",
+ "symbol": "DJF"
+ },
+ "XPF": {
+ "name": "ฟรังà¸à¹Œà¸‹à¸µà¹€à¸­à¸Ÿà¸žà¸µ",
+ "symbol": "CFPF"
+ },
+ "XOF": {
+ "name": "ฟรังà¸à¹Œà¹€à¸‹à¸Ÿà¸²à¸˜à¸™à¸²à¸„ารà¸à¸¥à¸²à¸‡à¸£à¸±à¸à¹à¸­à¸Ÿà¸£à¸´à¸à¸²à¸•à¸°à¸§à¸±à¸™à¸•à¸",
+ "symbol": "CFA"
+ },
+ "XAF": {
+ "name": "ฟรังà¸à¹Œà¹€à¸‹à¸Ÿà¸²à¸˜à¸™à¸²à¸„ารรัà¸à¹à¸­à¸Ÿà¸£à¸´à¸à¸²à¸à¸¥à¸²à¸‡",
+ "symbol": "FCFA"
+ },
+ "BIF": {
+ "name": "ฟรังà¸à¹Œà¸šà¸¸à¸£à¸¸à¸™à¸”ี",
+ "symbol": "BIF"
+ },
+ "RWF": {
+ "name": "ฟรังà¸à¹Œà¸£à¸§à¸±à¸™à¸”า",
+ "symbol": "RWF"
+ },
+ "CHF": {
+ "name": "ฟรังà¸à¹Œà¸ªà¸§à¸´à¸ª",
+ "symbol": "CHF"
+ },
+ "AWG": {
+ "name": "ฟลอรินอารูบา",
+ "symbol": "AWG"
+ },
+ "HUF": {
+ "name": "ฟอรินต์ฮังà¸à¸²à¸£à¸µ",
+ "symbol": "HUF"
+ },
+ "TMT": {
+ "name": "มานัตเติร์à¸à¹€à¸¡à¸™à¸´à¸ªà¸–าน",
+ "symbol": "TMT"
+ },
+ "AZN": {
+ "name": "มานัตอาเซอร์ไบจาน",
+ "symbol": "AZN"
+ },
+ "BAM": {
+ "name": "มาร์à¸à¸šà¸­à¸ªà¹€à¸™à¸µà¸¢-เฮอร์เซโà¸à¸§à¸µà¸™à¸²",
+ "symbol": "BAM"
+ },
+ "MZN": {
+ "name": "เมติคัลโมซัมบิà¸",
+ "symbol": "MZN"
+ },
+ "EUR": {
+ "name": "ยูโร",
+ "symbol": "€"
+ },
+ "JPY": {
+ "name": "เยนà¸à¸µà¹ˆà¸›à¸¸à¹ˆà¸™",
+ "symbol": "Â¥"
+ },
+ "MYR": {
+ "name": "ริงà¸à¸´à¸•à¸¡à¸²à¹€à¸¥à¹€à¸‹à¸µà¸¢",
+ "symbol": "MYR"
+ },
+ "SAR": {
+ "name": "ริยัลซาอุดีอาระเบีย",
+ "symbol": "SAR"
+ },
+ "BYR": {
+ "name": "รูเบิลเบลารุส",
+ "symbol": "BYR"
+ },
+ "RUB": {
+ "name": "รูเบิลรัสเซีย",
+ "symbol": "RUB"
+ },
+ "SCR": {
+ "name": "รูปีเซเชลส์",
+ "symbol": "SCR"
+ },
+ "NPR": {
+ "name": "รูปีเนปาล",
+ "symbol": "NPR"
+ },
+ "PKR": {
+ "name": "รูปีปาà¸à¸µà¸ªà¸–าน",
+ "symbol": "PKR"
+ },
+ "MUR": {
+ "name": "รูปีมอริเชียส",
+ "symbol": "MUR"
+ },
+ "LKR": {
+ "name": "รูปีศรีลังà¸à¸²",
+ "symbol": "LKR"
+ },
+ "INR": {
+ "name": "รูปีอินเดีย",
+ "symbol": "₹"
+ },
+ "IDR": {
+ "name": "รูเปียห์อินโดนีเซีย",
+ "symbol": "IDR"
+ },
+ "MVR": {
+ "name": "รูฟิยามัลดีฟส์",
+ "symbol": "MVR"
+ },
+ "KHR": {
+ "name": "เรียลà¸à¸±à¸¡à¸žà¸¹à¸Šà¸²",
+ "symbol": "KHR"
+ },
+ "QAR": {
+ "name": "เรียลà¸à¸²à¸•à¸²à¸£à¹Œ",
+ "symbol": "QAR"
+ },
+ "BRL": {
+ "name": "เรียลบราซิล",
+ "symbol": "R$"
+ },
+ "YER": {
+ "name": "เรียลเยเมน",
+ "symbol": "YER"
+ },
+ "IRR": {
+ "name": "เรียลอิหร่าน",
+ "symbol": "IRR"
+ },
+ "OMR": {
+ "name": "เรียลโอมาน",
+ "symbol": "OMR"
+ },
+ "ZAR": {
+ "name": "à¹à¸£à¸™à¸”์à¹à¸­à¸Ÿà¸£à¸´à¸à¸²à¹ƒà¸•à¹‰",
+ "symbol": "ZAR"
+ },
+ "GEL": {
+ "name": "ลารีจอร์เจีย",
+ "symbol": "GEL"
+ },
+ "SZL": {
+ "name": "ลิลันเจนีสวาซิ",
+ "symbol": "SZL"
+ },
+ "MDL": {
+ "name": "ลิวมอลโดวา",
+ "symbol": "MDL"
+ },
+ "RON": {
+ "name": "ลิวโรมาเนีย",
+ "symbol": "RON"
+ },
+ "LTL": {
+ "name": "ลีตัสลิทัวเนีย",
+ "symbol": "LTL"
+ },
+ "TRY": {
+ "name": "ลีราตุรà¸à¸µ",
+ "symbol": "TRY"
+ },
+ "SLL": {
+ "name": "ลีโอนเซียร์ราลีโอน",
+ "symbol": "SLL"
+ },
+ "ALL": {
+ "name": "เลà¸à¹à¸­à¸¥à¹€à¸šà¹€à¸™à¸µà¸¢",
+ "symbol": "ALL"
+ },
+ "BGN": {
+ "name": "เลฟบัลà¹à¸à¹€à¸£à¸µà¸¢",
+ "symbol": "BGN"
+ },
+ "HNL": {
+ "name": "เลมปิราฮอนดูรัส",
+ "symbol": "HNL"
+ },
+ "LSL": {
+ "name": "โลตีเลโซโท",
+ "symbol": "LSL"
+ },
+ "KRW": {
+ "name": "วอนเà¸à¸²à¸«à¸¥à¸µà¹ƒà¸•à¹‰",
+ "symbol": "â‚©"
+ },
+ "KPW": {
+ "name": "วอนเà¸à¸²à¸«à¸¥à¸µà¹€à¸«à¸™à¸·à¸­",
+ "symbol": "KPW"
+ },
+ "VUV": {
+ "name": "วาตูวานูอาตู",
+ "symbol": "VUV"
+ },
+ "CNY": {
+ "name": "หยวนจีน",
+ "symbol": "CNÂ¥"
+ },
+ "AFN": {
+ "name": "อัฟà¸à¸²à¸™à¸´à¸­à¸±à¸Ÿà¸à¸²à¸™à¸´à¸ªà¸–าน",
+ "symbol": "AFN"
+ },
+ "MGA": {
+ "name": "อาเรียรีมาลาà¸à¸²à¸‹à¸µ",
+ "symbol": "MGA"
+ },
+ "MRO": {
+ "name": "อูà¸à¸µà¸¢à¸²à¸¡à¸­à¸£à¸´à¹€à¸•à¹€à¸™à¸µà¸¢",
+ "symbol": "MRO"
+ },
+ "BTN": {
+ "name": "เอ็งà¸à¸¸à¸¥à¸•à¸£à¸±à¸¡à¸ à¸¹à¸à¸²à¸™",
+ "symbol": "BTN"
+ },
+ "CVE": {
+ "name": "เอสคูโดเคปเวิร์ด",
+ "symbol": "CVE"
+ },
+ "UAH": {
+ "name": "ฮรีฟเนียยูเครน",
+ "symbol": "UAH"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/currency/ti.json b/library/intl/resources/currency/ti.json
new file mode 100644
index 000000000..2713a98f5
--- /dev/null
+++ b/library/intl/resources/currency/ti.json
@@ -0,0 +1,634 @@
+{
+ "AED": {
+ "name": "AED",
+ "symbol": "AED"
+ },
+ "AFN": {
+ "name": "AFN",
+ "symbol": "AFN"
+ },
+ "ALL": {
+ "name": "ALL",
+ "symbol": "ALL"
+ },
+ "AMD": {
+ "name": "AMD",
+ "symbol": "AMD"
+ },
+ "ANG": {
+ "name": "ANG",
+ "symbol": "ANG"
+ },
+ "AOA": {
+ "name": "AOA",
+ "symbol": "AOA"
+ },
+ "ARS": {
+ "name": "ARS",
+ "symbol": "ARS"
+ },
+ "AUD": {
+ "name": "AUD",
+ "symbol": "A$"
+ },
+ "AWG": {
+ "name": "AWG",
+ "symbol": "AWG"
+ },
+ "AZN": {
+ "name": "AZN",
+ "symbol": "AZN"
+ },
+ "BAM": {
+ "name": "BAM",
+ "symbol": "BAM"
+ },
+ "BBD": {
+ "name": "BBD",
+ "symbol": "BBD"
+ },
+ "BDT": {
+ "name": "BDT",
+ "symbol": "BDT"
+ },
+ "BGN": {
+ "name": "BGN",
+ "symbol": "BGN"
+ },
+ "BHD": {
+ "name": "BHD",
+ "symbol": "BHD"
+ },
+ "BIF": {
+ "name": "BIF",
+ "symbol": "BIF"
+ },
+ "BMD": {
+ "name": "BMD",
+ "symbol": "BMD"
+ },
+ "BND": {
+ "name": "BND",
+ "symbol": "BND"
+ },
+ "BOB": {
+ "name": "BOB",
+ "symbol": "BOB"
+ },
+ "BSD": {
+ "name": "BSD",
+ "symbol": "BSD"
+ },
+ "BTN": {
+ "name": "BTN",
+ "symbol": "BTN"
+ },
+ "BWP": {
+ "name": "BWP",
+ "symbol": "BWP"
+ },
+ "BYR": {
+ "name": "BYR",
+ "symbol": "BYR"
+ },
+ "BZD": {
+ "name": "BZD",
+ "symbol": "BZD"
+ },
+ "CAD": {
+ "name": "CAD",
+ "symbol": "CA$"
+ },
+ "CDF": {
+ "name": "CDF",
+ "symbol": "CDF"
+ },
+ "CHF": {
+ "name": "CHF",
+ "symbol": "CHF"
+ },
+ "CLP": {
+ "name": "CLP",
+ "symbol": "CLP"
+ },
+ "COP": {
+ "name": "COP",
+ "symbol": "COP"
+ },
+ "CRC": {
+ "name": "CRC",
+ "symbol": "CRC"
+ },
+ "CUC": {
+ "name": "CUC",
+ "symbol": "CUC"
+ },
+ "CUP": {
+ "name": "CUP",
+ "symbol": "CUP"
+ },
+ "CVE": {
+ "name": "CVE",
+ "symbol": "CVE"
+ },
+ "CZK": {
+ "name": "CZK",
+ "symbol": "CZK"
+ },
+ "DJF": {
+ "name": "DJF",
+ "symbol": "DJF"
+ },
+ "DKK": {
+ "name": "DKK",
+ "symbol": "DKK"
+ },
+ "DOP": {
+ "name": "DOP",
+ "symbol": "DOP"
+ },
+ "DZD": {
+ "name": "DZD",
+ "symbol": "DZD"
+ },
+ "EGP": {
+ "name": "EGP",
+ "symbol": "EGP"
+ },
+ "ERN": {
+ "name": "ERN",
+ "symbol": "ERN"
+ },
+ "FJD": {
+ "name": "FJD",
+ "symbol": "FJD"
+ },
+ "FKP": {
+ "name": "FKP",
+ "symbol": "FKP"
+ },
+ "GEL": {
+ "name": "GEL",
+ "symbol": "GEL"
+ },
+ "GHS": {
+ "name": "GHS",
+ "symbol": "GHS"
+ },
+ "GIP": {
+ "name": "GIP",
+ "symbol": "GIP"
+ },
+ "GMD": {
+ "name": "GMD",
+ "symbol": "GMD"
+ },
+ "GNF": {
+ "name": "GNF",
+ "symbol": "GNF"
+ },
+ "GTQ": {
+ "name": "GTQ",
+ "symbol": "GTQ"
+ },
+ "GYD": {
+ "name": "GYD",
+ "symbol": "GYD"
+ },
+ "HKD": {
+ "name": "HKD",
+ "symbol": "HK$"
+ },
+ "HNL": {
+ "name": "HNL",
+ "symbol": "HNL"
+ },
+ "HRK": {
+ "name": "HRK",
+ "symbol": "HRK"
+ },
+ "HTG": {
+ "name": "HTG",
+ "symbol": "HTG"
+ },
+ "HUF": {
+ "name": "HUF",
+ "symbol": "HUF"
+ },
+ "IDR": {
+ "name": "IDR",
+ "symbol": "IDR"
+ },
+ "ILS": {
+ "name": "ILS",
+ "symbol": "₪"
+ },
+ "IQD": {
+ "name": "IQD",
+ "symbol": "IQD"
+ },
+ "IRR": {
+ "name": "IRR",
+ "symbol": "IRR"
+ },
+ "ISK": {
+ "name": "ISK",
+ "symbol": "ISK"
+ },
+ "JMD": {
+ "name": "JMD",
+ "symbol": "JMD"
+ },
+ "JOD": {
+ "name": "JOD",
+ "symbol": "JOD"
+ },
+ "KES": {
+ "name": "KES",
+ "symbol": "KES"
+ },
+ "KGS": {
+ "name": "KGS",
+ "symbol": "KGS"
+ },
+ "KHR": {
+ "name": "KHR",
+ "symbol": "KHR"
+ },
+ "KMF": {
+ "name": "KMF",
+ "symbol": "KMF"
+ },
+ "KPW": {
+ "name": "KPW",
+ "symbol": "KPW"
+ },
+ "KRW": {
+ "name": "KRW",
+ "symbol": "â‚©"
+ },
+ "KWD": {
+ "name": "KWD",
+ "symbol": "KWD"
+ },
+ "KYD": {
+ "name": "KYD",
+ "symbol": "KYD"
+ },
+ "KZT": {
+ "name": "KZT",
+ "symbol": "KZT"
+ },
+ "LAK": {
+ "name": "LAK",
+ "symbol": "LAK"
+ },
+ "LBP": {
+ "name": "LBP",
+ "symbol": "LBP"
+ },
+ "LKR": {
+ "name": "LKR",
+ "symbol": "LKR"
+ },
+ "LRD": {
+ "name": "LRD",
+ "symbol": "LRD"
+ },
+ "LSL": {
+ "name": "LSL",
+ "symbol": "LSL"
+ },
+ "LTL": {
+ "name": "LTL",
+ "symbol": "LTL"
+ },
+ "LYD": {
+ "name": "LYD",
+ "symbol": "LYD"
+ },
+ "MAD": {
+ "name": "MAD",
+ "symbol": "MAD"
+ },
+ "MDL": {
+ "name": "MDL",
+ "symbol": "MDL"
+ },
+ "MGA": {
+ "name": "MGA",
+ "symbol": "MGA"
+ },
+ "MKD": {
+ "name": "MKD",
+ "symbol": "MKD"
+ },
+ "MMK": {
+ "name": "MMK",
+ "symbol": "MMK"
+ },
+ "MNT": {
+ "name": "MNT",
+ "symbol": "MNT"
+ },
+ "MOP": {
+ "name": "MOP",
+ "symbol": "MOP"
+ },
+ "MRO": {
+ "name": "MRO",
+ "symbol": "MRO"
+ },
+ "MUR": {
+ "name": "MUR",
+ "symbol": "MUR"
+ },
+ "MVR": {
+ "name": "MVR",
+ "symbol": "MVR"
+ },
+ "MWK": {
+ "name": "MWK",
+ "symbol": "MWK"
+ },
+ "MXN": {
+ "name": "MXN",
+ "symbol": "MX$"
+ },
+ "MYR": {
+ "name": "MYR",
+ "symbol": "MYR"
+ },
+ "MZN": {
+ "name": "MZN",
+ "symbol": "MZN"
+ },
+ "NAD": {
+ "name": "NAD",
+ "symbol": "NAD"
+ },
+ "NGN": {
+ "name": "NGN",
+ "symbol": "NGN"
+ },
+ "NIO": {
+ "name": "NIO",
+ "symbol": "NIO"
+ },
+ "NOK": {
+ "name": "NOK",
+ "symbol": "NOK"
+ },
+ "NPR": {
+ "name": "NPR",
+ "symbol": "NPR"
+ },
+ "NZD": {
+ "name": "NZD",
+ "symbol": "NZ$"
+ },
+ "OMR": {
+ "name": "OMR",
+ "symbol": "OMR"
+ },
+ "PAB": {
+ "name": "PAB",
+ "symbol": "PAB"
+ },
+ "PEN": {
+ "name": "PEN",
+ "symbol": "PEN"
+ },
+ "PGK": {
+ "name": "PGK",
+ "symbol": "PGK"
+ },
+ "PHP": {
+ "name": "PHP",
+ "symbol": "PHP"
+ },
+ "PKR": {
+ "name": "PKR",
+ "symbol": "PKR"
+ },
+ "PLN": {
+ "name": "PLN",
+ "symbol": "PLN"
+ },
+ "PYG": {
+ "name": "PYG",
+ "symbol": "PYG"
+ },
+ "QAR": {
+ "name": "QAR",
+ "symbol": "QAR"
+ },
+ "RON": {
+ "name": "RON",
+ "symbol": "RON"
+ },
+ "RSD": {
+ "name": "RSD",
+ "symbol": "RSD"
+ },
+ "RWF": {
+ "name": "RWF",
+ "symbol": "RWF"
+ },
+ "SAR": {
+ "name": "SAR",
+ "symbol": "SAR"
+ },
+ "SBD": {
+ "name": "SBD",
+ "symbol": "SBD"
+ },
+ "SCR": {
+ "name": "SCR",
+ "symbol": "SCR"
+ },
+ "SDG": {
+ "name": "SDG",
+ "symbol": "SDG"
+ },
+ "SEK": {
+ "name": "SEK",
+ "symbol": "SEK"
+ },
+ "SGD": {
+ "name": "SGD",
+ "symbol": "SGD"
+ },
+ "SHP": {
+ "name": "SHP",
+ "symbol": "SHP"
+ },
+ "SLL": {
+ "name": "SLL",
+ "symbol": "SLL"
+ },
+ "SOS": {
+ "name": "SOS",
+ "symbol": "SOS"
+ },
+ "SRD": {
+ "name": "SRD",
+ "symbol": "SRD"
+ },
+ "SSP": {
+ "name": "SSP",
+ "symbol": "SSP"
+ },
+ "STD": {
+ "name": "STD",
+ "symbol": "STD"
+ },
+ "SVC": {
+ "name": "SVC",
+ "symbol": "SVC"
+ },
+ "SYP": {
+ "name": "SYP",
+ "symbol": "SYP"
+ },
+ "SZL": {
+ "name": "SZL",
+ "symbol": "SZL"
+ },
+ "THB": {
+ "name": "THB",
+ "symbol": "THB"
+ },
+ "TJS": {
+ "name": "TJS",
+ "symbol": "TJS"
+ },
+ "TMT": {
+ "name": "TMT",
+ "symbol": "TMT"
+ },
+ "TND": {
+ "name": "TND",
+ "symbol": "TND"
+ },
+ "TOP": {
+ "name": "TOP",
+ "symbol": "TOP"
+ },
+ "TRY": {
+ "name": "TRY",
+ "symbol": "TRY"
+ },
+ "TTD": {
+ "name": "TTD",
+ "symbol": "TTD"
+ },
+ "TWD": {
+ "name": "TWD",
+ "symbol": "NT$"
+ },
+ "TZS": {
+ "name": "TZS",
+ "symbol": "TZS"
+ },
+ "UAH": {
+ "name": "UAH",
+ "symbol": "UAH"
+ },
+ "UGX": {
+ "name": "UGX",
+ "symbol": "UGX"
+ },
+ "UYU": {
+ "name": "UYU",
+ "symbol": "UYU"
+ },
+ "UZS": {
+ "name": "UZS",
+ "symbol": "UZS"
+ },
+ "VEF": {
+ "name": "VEF",
+ "symbol": "VEF"
+ },
+ "VND": {
+ "name": "VND",
+ "symbol": "â‚«"
+ },
+ "VUV": {
+ "name": "VUV",
+ "symbol": "VUV"
+ },
+ "WST": {
+ "name": "WST",
+ "symbol": "WST"
+ },
+ "XAF": {
+ "name": "XAF",
+ "symbol": "FCFA"
+ },
+ "XCD": {
+ "name": "XCD",
+ "symbol": "EC$"
+ },
+ "XOF": {
+ "name": "XOF",
+ "symbol": "CFA"
+ },
+ "XPF": {
+ "name": "XPF",
+ "symbol": "CFPF"
+ },
+ "YER": {
+ "name": "YER",
+ "symbol": "YER"
+ },
+ "ZAR": {
+ "name": "ZAR",
+ "symbol": "ZAR"
+ },
+ "ZMW": {
+ "name": "ZMW",
+ "symbol": "ZMW"
+ },
+ "ZWL": {
+ "name": "ZWL",
+ "symbol": "ZWL"
+ },
+ "EUR": {
+ "name": "አá‹áˆ®",
+ "symbol": "€"
+ },
+ "INR": {
+ "name": "የሕንድ ሩá’",
+ "symbol": "₹"
+ },
+ "RUB": {
+ "name": "የራሻ ሩብáˆ",
+ "symbol": "RUB"
+ },
+ "BRL": {
+ "name": "የብራዚሠሪáˆ",
+ "symbol": "R$"
+ },
+ "CNY": {
+ "name": "የቻይና ዩአን ረንሚንቢ",
+ "symbol": "CNÂ¥"
+ },
+ "USD": {
+ "name": "የአሜሪካን ዶላር",
+ "symbol": "US$"
+ },
+ "ETB": {
+ "name": "የኢትዮጵያ ብር",
+ "symbol": "Br"
+ },
+ "GBP": {
+ "name": "የእንáŒáˆŠá‹ á“á‹áŠ•á‹µ ስተርሊንáŒ",
+ "symbol": "£"
+ },
+ "JPY": {
+ "name": "የጃá“ን የን",
+ "symbol": "JPÂ¥"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/currency/to.json b/library/intl/resources/currency/to.json
new file mode 100644
index 000000000..b77641714
--- /dev/null
+++ b/library/intl/resources/currency/to.json
@@ -0,0 +1,634 @@
+{
+ "AED": {
+ "name": "AED",
+ "symbol": "AED"
+ },
+ "AFN": {
+ "name": "AFN",
+ "symbol": "AFN"
+ },
+ "ALL": {
+ "name": "ALL",
+ "symbol": "ALL"
+ },
+ "AMD": {
+ "name": "AMD",
+ "symbol": "AMD"
+ },
+ "ANG": {
+ "name": "ANG",
+ "symbol": "ANG"
+ },
+ "AOA": {
+ "name": "AOA",
+ "symbol": "AOA"
+ },
+ "ARS": {
+ "name": "ARS",
+ "symbol": "ARS"
+ },
+ "AUD": {
+ "name": "AUD",
+ "symbol": "AUD$"
+ },
+ "AWG": {
+ "name": "AWG",
+ "symbol": "AWG"
+ },
+ "AZN": {
+ "name": "AZN",
+ "symbol": "AZN"
+ },
+ "BAM": {
+ "name": "BAM",
+ "symbol": "BAM"
+ },
+ "BBD": {
+ "name": "BBD",
+ "symbol": "BBD"
+ },
+ "BDT": {
+ "name": "BDT",
+ "symbol": "BDT"
+ },
+ "BGN": {
+ "name": "BGN",
+ "symbol": "BGN"
+ },
+ "BHD": {
+ "name": "BHD",
+ "symbol": "BHD"
+ },
+ "BIF": {
+ "name": "BIF",
+ "symbol": "BIF"
+ },
+ "BMD": {
+ "name": "BMD",
+ "symbol": "BMD"
+ },
+ "BND": {
+ "name": "BND",
+ "symbol": "BND"
+ },
+ "BOB": {
+ "name": "BOB",
+ "symbol": "BOB"
+ },
+ "BRL": {
+ "name": "BRL",
+ "symbol": "R$"
+ },
+ "BSD": {
+ "name": "BSD",
+ "symbol": "BSD"
+ },
+ "BTN": {
+ "name": "BTN",
+ "symbol": "BTN"
+ },
+ "BWP": {
+ "name": "BWP",
+ "symbol": "BWP"
+ },
+ "BYR": {
+ "name": "BYR",
+ "symbol": "BYR"
+ },
+ "BZD": {
+ "name": "BZD",
+ "symbol": "BZD"
+ },
+ "CAD": {
+ "name": "CAD",
+ "symbol": "CA$"
+ },
+ "CDF": {
+ "name": "CDF",
+ "symbol": "CDF"
+ },
+ "CHF": {
+ "name": "CHF",
+ "symbol": "CHF"
+ },
+ "CLP": {
+ "name": "CLP",
+ "symbol": "CLP"
+ },
+ "CNY": {
+ "name": "CNY",
+ "symbol": "CNÂ¥"
+ },
+ "COP": {
+ "name": "COP",
+ "symbol": "COP"
+ },
+ "CRC": {
+ "name": "CRC",
+ "symbol": "CRC"
+ },
+ "CUC": {
+ "name": "CUC",
+ "symbol": "CUC"
+ },
+ "CUP": {
+ "name": "CUP",
+ "symbol": "CUP"
+ },
+ "CVE": {
+ "name": "CVE",
+ "symbol": "CVE"
+ },
+ "CZK": {
+ "name": "CZK",
+ "symbol": "CZK"
+ },
+ "DJF": {
+ "name": "DJF",
+ "symbol": "DJF"
+ },
+ "DKK": {
+ "name": "DKK",
+ "symbol": "DKK"
+ },
+ "DOP": {
+ "name": "DOP",
+ "symbol": "DOP"
+ },
+ "DZD": {
+ "name": "DZD",
+ "symbol": "DZD"
+ },
+ "EGP": {
+ "name": "EGP",
+ "symbol": "EGP"
+ },
+ "ERN": {
+ "name": "ERN",
+ "symbol": "ERN"
+ },
+ "ETB": {
+ "name": "ETB",
+ "symbol": "ETB"
+ },
+ "EUR": {
+ "name": "EUR",
+ "symbol": "€"
+ },
+ "FJD": {
+ "name": "FJD",
+ "symbol": "FJD"
+ },
+ "FKP": {
+ "name": "FKP",
+ "symbol": "FKP"
+ },
+ "GBP": {
+ "name": "GBP",
+ "symbol": "£"
+ },
+ "GEL": {
+ "name": "GEL",
+ "symbol": "GEL"
+ },
+ "GHS": {
+ "name": "GHS",
+ "symbol": "GHS"
+ },
+ "GIP": {
+ "name": "GIP",
+ "symbol": "GIP"
+ },
+ "GMD": {
+ "name": "GMD",
+ "symbol": "GMD"
+ },
+ "GNF": {
+ "name": "GNF",
+ "symbol": "GNF"
+ },
+ "GTQ": {
+ "name": "GTQ",
+ "symbol": "GTQ"
+ },
+ "GYD": {
+ "name": "GYD",
+ "symbol": "GYD"
+ },
+ "HKD": {
+ "name": "HKD",
+ "symbol": "HK$"
+ },
+ "HNL": {
+ "name": "HNL",
+ "symbol": "HNL"
+ },
+ "HRK": {
+ "name": "HRK",
+ "symbol": "HRK"
+ },
+ "HTG": {
+ "name": "HTG",
+ "symbol": "HTG"
+ },
+ "HUF": {
+ "name": "HUF",
+ "symbol": "HUF"
+ },
+ "IDR": {
+ "name": "IDR",
+ "symbol": "IDR"
+ },
+ "ILS": {
+ "name": "ILS",
+ "symbol": "₪"
+ },
+ "INR": {
+ "name": "INR",
+ "symbol": "₹"
+ },
+ "IQD": {
+ "name": "IQD",
+ "symbol": "IQD"
+ },
+ "IRR": {
+ "name": "IRR",
+ "symbol": "IRR"
+ },
+ "ISK": {
+ "name": "ISK",
+ "symbol": "ISK"
+ },
+ "JMD": {
+ "name": "JMD",
+ "symbol": "JMD"
+ },
+ "JOD": {
+ "name": "JOD",
+ "symbol": "JOD"
+ },
+ "JPY": {
+ "name": "JPY",
+ "symbol": "JPÂ¥"
+ },
+ "KES": {
+ "name": "KES",
+ "symbol": "KES"
+ },
+ "KGS": {
+ "name": "KGS",
+ "symbol": "KGS"
+ },
+ "KHR": {
+ "name": "KHR",
+ "symbol": "KHR"
+ },
+ "KMF": {
+ "name": "KMF",
+ "symbol": "KMF"
+ },
+ "KPW": {
+ "name": "KPW",
+ "symbol": "KPW"
+ },
+ "KRW": {
+ "name": "KRW",
+ "symbol": "â‚©"
+ },
+ "KWD": {
+ "name": "KWD",
+ "symbol": "KWD"
+ },
+ "KYD": {
+ "name": "KYD",
+ "symbol": "KYD"
+ },
+ "KZT": {
+ "name": "KZT",
+ "symbol": "KZT"
+ },
+ "LAK": {
+ "name": "LAK",
+ "symbol": "LAK"
+ },
+ "LBP": {
+ "name": "LBP",
+ "symbol": "LBP"
+ },
+ "LKR": {
+ "name": "LKR",
+ "symbol": "LKR"
+ },
+ "LRD": {
+ "name": "LRD",
+ "symbol": "LRD"
+ },
+ "LSL": {
+ "name": "LSL",
+ "symbol": "LSL"
+ },
+ "LTL": {
+ "name": "LTL",
+ "symbol": "LTL"
+ },
+ "LYD": {
+ "name": "LYD",
+ "symbol": "LYD"
+ },
+ "MAD": {
+ "name": "MAD",
+ "symbol": "MAD"
+ },
+ "MDL": {
+ "name": "MDL",
+ "symbol": "MDL"
+ },
+ "MGA": {
+ "name": "MGA",
+ "symbol": "MGA"
+ },
+ "MKD": {
+ "name": "MKD",
+ "symbol": "MKD"
+ },
+ "MMK": {
+ "name": "MMK",
+ "symbol": "MMK"
+ },
+ "MNT": {
+ "name": "MNT",
+ "symbol": "MNT"
+ },
+ "MOP": {
+ "name": "MOP",
+ "symbol": "MOP"
+ },
+ "MRO": {
+ "name": "MRO",
+ "symbol": "MRO"
+ },
+ "MUR": {
+ "name": "MUR",
+ "symbol": "MUR"
+ },
+ "MVR": {
+ "name": "MVR",
+ "symbol": "MVR"
+ },
+ "MWK": {
+ "name": "MWK",
+ "symbol": "MWK"
+ },
+ "MXN": {
+ "name": "MXN",
+ "symbol": "MX$"
+ },
+ "MYR": {
+ "name": "MYR",
+ "symbol": "MYR"
+ },
+ "MZN": {
+ "name": "MZN",
+ "symbol": "MZN"
+ },
+ "NAD": {
+ "name": "NAD",
+ "symbol": "NAD"
+ },
+ "NGN": {
+ "name": "NGN",
+ "symbol": "NGN"
+ },
+ "NIO": {
+ "name": "NIO",
+ "symbol": "NIO"
+ },
+ "NOK": {
+ "name": "NOK",
+ "symbol": "NOK"
+ },
+ "NPR": {
+ "name": "NPR",
+ "symbol": "NPR"
+ },
+ "NZD": {
+ "name": "NZD",
+ "symbol": "NZD$"
+ },
+ "OMR": {
+ "name": "OMR",
+ "symbol": "OMR"
+ },
+ "PAB": {
+ "name": "PAB",
+ "symbol": "PAB"
+ },
+ "TOP": {
+ "name": "Paʻanga fakatonga",
+ "symbol": "T$"
+ },
+ "PEN": {
+ "name": "PEN",
+ "symbol": "PEN"
+ },
+ "PGK": {
+ "name": "PGK",
+ "symbol": "PGK"
+ },
+ "PHP": {
+ "name": "PHP",
+ "symbol": "PHP"
+ },
+ "PKR": {
+ "name": "PKR",
+ "symbol": "PKR"
+ },
+ "PLN": {
+ "name": "PLN",
+ "symbol": "PLN"
+ },
+ "PYG": {
+ "name": "PYG",
+ "symbol": "PYG"
+ },
+ "QAR": {
+ "name": "QAR",
+ "symbol": "QAR"
+ },
+ "RON": {
+ "name": "RON",
+ "symbol": "RON"
+ },
+ "RSD": {
+ "name": "RSD",
+ "symbol": "RSD"
+ },
+ "RUB": {
+ "name": "RUB",
+ "symbol": "RUB"
+ },
+ "RWF": {
+ "name": "RWF",
+ "symbol": "RWF"
+ },
+ "SAR": {
+ "name": "SAR",
+ "symbol": "SAR"
+ },
+ "SBD": {
+ "name": "SBD",
+ "symbol": "SBD"
+ },
+ "SCR": {
+ "name": "SCR",
+ "symbol": "SCR"
+ },
+ "SDG": {
+ "name": "SDG",
+ "symbol": "SDG"
+ },
+ "SEK": {
+ "name": "SEK",
+ "symbol": "SEK"
+ },
+ "SGD": {
+ "name": "SGD",
+ "symbol": "SGD"
+ },
+ "SHP": {
+ "name": "SHP",
+ "symbol": "SHP"
+ },
+ "SLL": {
+ "name": "SLL",
+ "symbol": "SLL"
+ },
+ "SOS": {
+ "name": "SOS",
+ "symbol": "SOS"
+ },
+ "SRD": {
+ "name": "SRD",
+ "symbol": "SRD"
+ },
+ "SSP": {
+ "name": "SSP",
+ "symbol": "SSP"
+ },
+ "STD": {
+ "name": "STD",
+ "symbol": "STD"
+ },
+ "SVC": {
+ "name": "SVC",
+ "symbol": "SVC"
+ },
+ "SYP": {
+ "name": "SYP",
+ "symbol": "SYP"
+ },
+ "SZL": {
+ "name": "SZL",
+ "symbol": "SZL"
+ },
+ "WST": {
+ "name": "Tala fakahaʻamoa",
+ "symbol": "WST"
+ },
+ "THB": {
+ "name": "THB",
+ "symbol": "THB"
+ },
+ "TJS": {
+ "name": "TJS",
+ "symbol": "TJS"
+ },
+ "TMT": {
+ "name": "TMT",
+ "symbol": "TMT"
+ },
+ "TND": {
+ "name": "TND",
+ "symbol": "TND"
+ },
+ "TRY": {
+ "name": "TRY",
+ "symbol": "TRY"
+ },
+ "TTD": {
+ "name": "TTD",
+ "symbol": "TTD"
+ },
+ "TWD": {
+ "name": "TWD",
+ "symbol": "NT$"
+ },
+ "TZS": {
+ "name": "TZS",
+ "symbol": "TZS"
+ },
+ "UAH": {
+ "name": "UAH",
+ "symbol": "UAH"
+ },
+ "UGX": {
+ "name": "UGX",
+ "symbol": "UGX"
+ },
+ "USD": {
+ "name": "USD",
+ "symbol": "US$"
+ },
+ "UYU": {
+ "name": "UYU",
+ "symbol": "UYU"
+ },
+ "UZS": {
+ "name": "UZS",
+ "symbol": "UZS"
+ },
+ "VEF": {
+ "name": "VEF",
+ "symbol": "VEF"
+ },
+ "VND": {
+ "name": "VND",
+ "symbol": "â‚«"
+ },
+ "VUV": {
+ "name": "VUV",
+ "symbol": "VUV"
+ },
+ "XAF": {
+ "name": "XAF",
+ "symbol": "FCFA"
+ },
+ "XCD": {
+ "name": "XCD",
+ "symbol": "EC$"
+ },
+ "XOF": {
+ "name": "XOF",
+ "symbol": "CFA"
+ },
+ "XPF": {
+ "name": "XPF",
+ "symbol": "CFPF"
+ },
+ "YER": {
+ "name": "YER",
+ "symbol": "YER"
+ },
+ "ZAR": {
+ "name": "ZAR",
+ "symbol": "ZAR"
+ },
+ "ZMW": {
+ "name": "ZMW",
+ "symbol": "ZMW"
+ },
+ "ZWL": {
+ "name": "ZWL",
+ "symbol": "ZWL"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/currency/tr.json b/library/intl/resources/currency/tr.json
new file mode 100644
index 000000000..5e90ba0ba
--- /dev/null
+++ b/library/intl/resources/currency/tr.json
@@ -0,0 +1,634 @@
+{
+ "USD": {
+ "name": "ABD Doları",
+ "symbol": "$"
+ },
+ "AFN": {
+ "name": "Afganistan Afganisi",
+ "symbol": "AFN"
+ },
+ "AOA": {
+ "name": "Angola Kvanzası",
+ "symbol": "AOA"
+ },
+ "ARS": {
+ "name": "Arjantin Pesosu",
+ "symbol": "ARS"
+ },
+ "ALL": {
+ "name": "Arnavutluk Leki",
+ "symbol": "ALL"
+ },
+ "AWG": {
+ "name": "Aruba Florini",
+ "symbol": "AWG"
+ },
+ "AUD": {
+ "name": "Avustralya Doları",
+ "symbol": "AU$"
+ },
+ "AZN": {
+ "name": "Azerbaycan Manatı",
+ "symbol": "AZN"
+ },
+ "BSD": {
+ "name": "Bahama Doları",
+ "symbol": "BSD"
+ },
+ "BHD": {
+ "name": "Bahreyn Dinarı",
+ "symbol": "BHD"
+ },
+ "BDT": {
+ "name": "Bangladeş Takası",
+ "symbol": "BDT"
+ },
+ "BBD": {
+ "name": "Barbados Doları",
+ "symbol": "BBD"
+ },
+ "BZD": {
+ "name": "Belize Doları",
+ "symbol": "BZD"
+ },
+ "BMD": {
+ "name": "Bermuda Doları",
+ "symbol": "BMD"
+ },
+ "BYR": {
+ "name": "Beyaz Rusya Rublesi",
+ "symbol": "BYR"
+ },
+ "BTN": {
+ "name": "Bhutan Ngultrumu",
+ "symbol": "BTN"
+ },
+ "AED": {
+ "name": "BirleÅŸik Arap Emirlikleri Dirhemi",
+ "symbol": "AED"
+ },
+ "BOB": {
+ "name": "Bolivya Bolivyanosu",
+ "symbol": "BOB"
+ },
+ "BWP": {
+ "name": "Botsvana Pulası",
+ "symbol": "BWP"
+ },
+ "BRL": {
+ "name": "Brezilya Reali",
+ "symbol": "R$"
+ },
+ "BND": {
+ "name": "Brunei Doları",
+ "symbol": "BND"
+ },
+ "BGN": {
+ "name": "Bulgar Levası",
+ "symbol": "BGN"
+ },
+ "BIF": {
+ "name": "Burundi Frangı",
+ "symbol": "BIF"
+ },
+ "CVE": {
+ "name": "Cape Verde Esküdosu",
+ "symbol": "CVE"
+ },
+ "KYD": {
+ "name": "Cayman Adaları Doları",
+ "symbol": "KYD"
+ },
+ "GIP": {
+ "name": "Cebelitarık Lirası",
+ "symbol": "GIP"
+ },
+ "DZD": {
+ "name": "Cezayir Dinarı",
+ "symbol": "DZD"
+ },
+ "XOF": {
+ "name": "CFA Frangı BCEAO",
+ "symbol": "CFA"
+ },
+ "XAF": {
+ "name": "CFA Frangı BEAC",
+ "symbol": "FCFA"
+ },
+ "XPF": {
+ "name": "CFP Frangı",
+ "symbol": "CFPF"
+ },
+ "DJF": {
+ "name": "Cibuti Frangı",
+ "symbol": "DJF"
+ },
+ "CZK": {
+ "name": "Çek Cumhuriyeti Korunası",
+ "symbol": "CZK"
+ },
+ "CNY": {
+ "name": "Çin Yuanı",
+ "symbol": "CNÂ¥"
+ },
+ "DKK": {
+ "name": "Danimarka Kronu",
+ "symbol": "DKK"
+ },
+ "XCD": {
+ "name": "Doğu Karayip Doları",
+ "symbol": "EC$"
+ },
+ "DOP": {
+ "name": "Dominik Pesosu",
+ "symbol": "DOP"
+ },
+ "SVC": {
+ "name": "El Salvador Kolonu",
+ "symbol": "SVC"
+ },
+ "IDR": {
+ "name": "Endonezya Rupiahı",
+ "symbol": "IDR"
+ },
+ "ERN": {
+ "name": "Eritre Nakfası",
+ "symbol": "ERN"
+ },
+ "AMD": {
+ "name": "Ermenistan Dramı",
+ "symbol": "AMD"
+ },
+ "ETB": {
+ "name": "Etiyopya Birri",
+ "symbol": "ETB"
+ },
+ "EUR": {
+ "name": "Euro",
+ "symbol": "€"
+ },
+ "FKP": {
+ "name": "Falkland Adaları Lirası",
+ "symbol": "FKP"
+ },
+ "MAD": {
+ "name": "Fas Dirhemi",
+ "symbol": "MAD"
+ },
+ "FJD": {
+ "name": "Fiji Doları",
+ "symbol": "FJD"
+ },
+ "PHP": {
+ "name": "Filipinler Pesosu",
+ "symbol": "PHP"
+ },
+ "GMD": {
+ "name": "Gambiya Dalasisi",
+ "symbol": "GMD"
+ },
+ "GHS": {
+ "name": "Gana Sedisi",
+ "symbol": "GHS"
+ },
+ "GNF": {
+ "name": "Gine Frangı",
+ "symbol": "GNF"
+ },
+ "GTQ": {
+ "name": "Guatemala Quetzalı",
+ "symbol": "GTQ"
+ },
+ "GYD": {
+ "name": "Guyana Doları",
+ "symbol": "GYD"
+ },
+ "ZAR": {
+ "name": "Güney Afrika Randı",
+ "symbol": "ZAR"
+ },
+ "KRW": {
+ "name": "Güney Kore Wonu",
+ "symbol": "â‚©"
+ },
+ "SSP": {
+ "name": "Güney Sudan Lirası",
+ "symbol": "SSP"
+ },
+ "GEL": {
+ "name": "Gürcistan Larisi",
+ "symbol": "GEL"
+ },
+ "HTG": {
+ "name": "Haiti Gurdu",
+ "symbol": "HTG"
+ },
+ "HRK": {
+ "name": "Hırvatistan Kunası",
+ "symbol": "HRK"
+ },
+ "INR": {
+ "name": "Hindistan Rupisi",
+ "symbol": "₹"
+ },
+ "ANG": {
+ "name": "Hollanda Antilleri Guldeni",
+ "symbol": "ANG"
+ },
+ "HNL": {
+ "name": "Honduras Lempirası",
+ "symbol": "HNL"
+ },
+ "HKD": {
+ "name": "Hong Kong Doları",
+ "symbol": "HK$"
+ },
+ "IQD": {
+ "name": "Irak Dinarı",
+ "symbol": "IQD"
+ },
+ "GBP": {
+ "name": "Ä°ngiliz Sterlini",
+ "symbol": "£"
+ },
+ "IRR": {
+ "name": "Ä°ran Riyali",
+ "symbol": "IRR"
+ },
+ "SEK": {
+ "name": "İsveç Kronu",
+ "symbol": "SEK"
+ },
+ "CHF": {
+ "name": "İsviçre Frangı",
+ "symbol": "CHF"
+ },
+ "ISK": {
+ "name": "Ä°zlanda Kronu",
+ "symbol": "ISK"
+ },
+ "JMD": {
+ "name": "Jamaika Doları",
+ "symbol": "JMD"
+ },
+ "JPY": {
+ "name": "Japon Yeni",
+ "symbol": "Â¥"
+ },
+ "KHR": {
+ "name": "Kamboçya Rieli",
+ "symbol": "KHR"
+ },
+ "CAD": {
+ "name": "Kanada Doları",
+ "symbol": "CA$"
+ },
+ "QAR": {
+ "name": "Katar Riyali",
+ "symbol": "QAR"
+ },
+ "KZT": {
+ "name": "Kazakistan Tengesi",
+ "symbol": "KZT"
+ },
+ "KES": {
+ "name": "Kenya Åžilini",
+ "symbol": "KES"
+ },
+ "KGS": {
+ "name": "Kırgızistan Somu",
+ "symbol": "KGS"
+ },
+ "COP": {
+ "name": "Kolombiya Pesosu",
+ "symbol": "COP"
+ },
+ "KMF": {
+ "name": "Komorlar Frangı",
+ "symbol": "KMF"
+ },
+ "CDF": {
+ "name": "Kongo Frangı",
+ "symbol": "CDF"
+ },
+ "BAM": {
+ "name": "Konvertibl Bosna Hersek Markı",
+ "symbol": "BAM"
+ },
+ "CUC": {
+ "name": "Konvertibl Küba Pesosu",
+ "symbol": "CUC"
+ },
+ "CRC": {
+ "name": "Kosta Rika Kolonu",
+ "symbol": "CRC"
+ },
+ "KWD": {
+ "name": "Kuveyt Dinarı",
+ "symbol": "KWD"
+ },
+ "KPW": {
+ "name": "Kuzey Kore Wonu",
+ "symbol": "KPW"
+ },
+ "CUP": {
+ "name": "Küba Pesosu",
+ "symbol": "CUP"
+ },
+ "LAK": {
+ "name": "Laos Kipi",
+ "symbol": "LAK"
+ },
+ "LSL": {
+ "name": "Lesotho Lotisi",
+ "symbol": "LSL"
+ },
+ "LRD": {
+ "name": "Liberya Doları",
+ "symbol": "LRD"
+ },
+ "LYD": {
+ "name": "Libya Dinarı",
+ "symbol": "LYD"
+ },
+ "LTL": {
+ "name": "Litvanya Litası",
+ "symbol": "LTL"
+ },
+ "LBP": {
+ "name": "Lübnan Lirası",
+ "symbol": "LBP"
+ },
+ "HUF": {
+ "name": "Macar Forinti",
+ "symbol": "HUF"
+ },
+ "MGA": {
+ "name": "Madagaskar Ariarisi",
+ "symbol": "MGA"
+ },
+ "MOP": {
+ "name": "Makao Patakası",
+ "symbol": "MOP"
+ },
+ "MKD": {
+ "name": "Makedonya Dinarı",
+ "symbol": "MKD"
+ },
+ "MWK": {
+ "name": "Malavi Kvaçası",
+ "symbol": "MWK"
+ },
+ "MVR": {
+ "name": "Maldiv Rufiyaası",
+ "symbol": "MVR"
+ },
+ "MYR": {
+ "name": "Malezya Ringgiti",
+ "symbol": "MYR"
+ },
+ "MUR": {
+ "name": "Mauritius Rupisi",
+ "symbol": "MUR"
+ },
+ "MXN": {
+ "name": "Meksika Pesosu",
+ "symbol": "MX$"
+ },
+ "EGP": {
+ "name": "Mısır Lirası",
+ "symbol": "EGP"
+ },
+ "MNT": {
+ "name": "MoÄŸolistan Tugriki",
+ "symbol": "MNT"
+ },
+ "MDL": {
+ "name": "Moldova Leyi",
+ "symbol": "MDL"
+ },
+ "MRO": {
+ "name": "Moritanya Ouguiyası",
+ "symbol": "MRO"
+ },
+ "MZN": {
+ "name": "Mozambik Metikali",
+ "symbol": "MZN"
+ },
+ "MMK": {
+ "name": "Myanmar Kyatı",
+ "symbol": "MMK"
+ },
+ "NAD": {
+ "name": "Namibya Doları",
+ "symbol": "NAD"
+ },
+ "NPR": {
+ "name": "Nepal Rupisi",
+ "symbol": "NPR"
+ },
+ "NGN": {
+ "name": "Nijerya Nairası",
+ "symbol": "NGN"
+ },
+ "NIO": {
+ "name": "Nikaragua Kordobası",
+ "symbol": "NIO"
+ },
+ "NOK": {
+ "name": "Norveç Kronu",
+ "symbol": "NOK"
+ },
+ "UZS": {
+ "name": "Özbekistan Somu",
+ "symbol": "UZS"
+ },
+ "PKR": {
+ "name": "Pakistan Rupisi",
+ "symbol": "PKR"
+ },
+ "PAB": {
+ "name": "Panama Balboası",
+ "symbol": "PAB"
+ },
+ "PGK": {
+ "name": "Papua Yeni Gine Kinası",
+ "symbol": "PGK"
+ },
+ "PYG": {
+ "name": "Paraguay Guaranisi",
+ "symbol": "PYG"
+ },
+ "PEN": {
+ "name": "Peru Nuevo Solü",
+ "symbol": "PEN"
+ },
+ "PLN": {
+ "name": "Polonya Zlotisi",
+ "symbol": "PLN"
+ },
+ "RON": {
+ "name": "Romen Leyi",
+ "symbol": "RON"
+ },
+ "RWF": {
+ "name": "Ruanda Frangı",
+ "symbol": "RWF"
+ },
+ "RUB": {
+ "name": "Rus Rublesi",
+ "symbol": "RUB"
+ },
+ "SHP": {
+ "name": "Saint Helena Lirası",
+ "symbol": "SHP"
+ },
+ "WST": {
+ "name": "Samoa Talası",
+ "symbol": "WST"
+ },
+ "STD": {
+ "name": "São Tomé ve Príncipe Dobrası",
+ "symbol": "STD"
+ },
+ "SCR": {
+ "name": "SeyÅŸeller Rupisi",
+ "symbol": "SCR"
+ },
+ "RSD": {
+ "name": "Sırp Dinarı",
+ "symbol": "RSD"
+ },
+ "SLL": {
+ "name": "Sierra Leone Leonesi",
+ "symbol": "SLL"
+ },
+ "SGD": {
+ "name": "Singapur Doları",
+ "symbol": "SGD"
+ },
+ "SBD": {
+ "name": "Solomon Adaları Doları",
+ "symbol": "SBD"
+ },
+ "SOS": {
+ "name": "Somali Åžilini",
+ "symbol": "SOS"
+ },
+ "LKR": {
+ "name": "Sri Lanka Rupisi",
+ "symbol": "LKR"
+ },
+ "SDG": {
+ "name": "Sudan Lirası",
+ "symbol": "SDG"
+ },
+ "SRD": {
+ "name": "Surinam Doları",
+ "symbol": "SRD"
+ },
+ "SYP": {
+ "name": "Suriye Lirası",
+ "symbol": "SYP"
+ },
+ "SAR": {
+ "name": "Suudi Arabistan Riyali",
+ "symbol": "SAR"
+ },
+ "SZL": {
+ "name": "Svaziland Lilangenisi",
+ "symbol": "SZL"
+ },
+ "CLP": {
+ "name": "Åžili Pesosu",
+ "symbol": "CLP"
+ },
+ "TJS": {
+ "name": "Tacikistan Somonisi",
+ "symbol": "TJS"
+ },
+ "TZS": {
+ "name": "Tanzanya Åžilini",
+ "symbol": "TZS"
+ },
+ "THB": {
+ "name": "Tayland Bahtı",
+ "symbol": "฿"
+ },
+ "TOP": {
+ "name": "Tonga Paʻangası",
+ "symbol": "TOP"
+ },
+ "TTD": {
+ "name": "Trinidad ve Tobago Doları",
+ "symbol": "TTD"
+ },
+ "TND": {
+ "name": "Tunus Dinarı",
+ "symbol": "TND"
+ },
+ "TRY": {
+ "name": "Türk Lirası",
+ "symbol": "₺"
+ },
+ "TMT": {
+ "name": "Türkmenistan Manatı",
+ "symbol": "TMT"
+ },
+ "UGX": {
+ "name": "Uganda Åžilini",
+ "symbol": "UGX"
+ },
+ "UAH": {
+ "name": "Ukrayna Grivnası",
+ "symbol": "UAH"
+ },
+ "OMR": {
+ "name": "Umman Riyali",
+ "symbol": "OMR"
+ },
+ "UYU": {
+ "name": "Uruguay Pesosu",
+ "symbol": "UYU"
+ },
+ "JOD": {
+ "name": "Ürdün Dinarı",
+ "symbol": "JOD"
+ },
+ "VUV": {
+ "name": "Vanuatu Vatusu",
+ "symbol": "VUV"
+ },
+ "VEF": {
+ "name": "Venezuela Bolivarı",
+ "symbol": "VEF"
+ },
+ "VND": {
+ "name": "Vietnam Dongu",
+ "symbol": "â‚«"
+ },
+ "YER": {
+ "name": "Yemen Riyali",
+ "symbol": "YER"
+ },
+ "ILS": {
+ "name": "Yeni Ä°srail Åžekeli",
+ "symbol": "₪"
+ },
+ "TWD": {
+ "name": "Yeni Tayvan Doları",
+ "symbol": "NT$"
+ },
+ "NZD": {
+ "name": "Yeni Zelanda Doları",
+ "symbol": "NZ$"
+ },
+ "ZMW": {
+ "name": "Zambiya Kvaçası",
+ "symbol": "ZMW"
+ },
+ "ZWL": {
+ "name": "Zimbabve Doları (2009)",
+ "symbol": "ZWL"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/currency/twq.json b/library/intl/resources/currency/twq.json
new file mode 100644
index 000000000..c75824e61
--- /dev/null
+++ b/library/intl/resources/currency/twq.json
@@ -0,0 +1,634 @@
+{
+ "AFN": {
+ "name": "AFN",
+ "symbol": "AFN"
+ },
+ "ALL": {
+ "name": "ALL",
+ "symbol": "ALL"
+ },
+ "DZD": {
+ "name": "Alžeeri Dinar",
+ "symbol": "DZD"
+ },
+ "AMD": {
+ "name": "AMD",
+ "symbol": "AMD"
+ },
+ "USD": {
+ "name": "Ameriki Dollar",
+ "symbol": "US$"
+ },
+ "ANG": {
+ "name": "ANG",
+ "symbol": "ANG"
+ },
+ "AOA": {
+ "name": "Angoola Kwanza",
+ "symbol": "AOA"
+ },
+ "ARS": {
+ "name": "ARS",
+ "symbol": "ARS"
+ },
+ "AWG": {
+ "name": "AWG",
+ "symbol": "AWG"
+ },
+ "AZN": {
+ "name": "AZN",
+ "symbol": "AZN"
+ },
+ "BHD": {
+ "name": "Bahareen Dinar",
+ "symbol": "BHD"
+ },
+ "BAM": {
+ "name": "BAM",
+ "symbol": "BAM"
+ },
+ "BBD": {
+ "name": "BBD",
+ "symbol": "BBD"
+ },
+ "BDT": {
+ "name": "BDT",
+ "symbol": "BDT"
+ },
+ "BGN": {
+ "name": "BGN",
+ "symbol": "BGN"
+ },
+ "BMD": {
+ "name": "BMD",
+ "symbol": "BMD"
+ },
+ "BND": {
+ "name": "BND",
+ "symbol": "BND"
+ },
+ "BOB": {
+ "name": "BOB",
+ "symbol": "BOB"
+ },
+ "BWP": {
+ "name": "Botswaana Pund",
+ "symbol": "BWP"
+ },
+ "GBP": {
+ "name": "Britin Pund",
+ "symbol": "£"
+ },
+ "BRL": {
+ "name": "BRL",
+ "symbol": "R$"
+ },
+ "BSD": {
+ "name": "BSD",
+ "symbol": "BSD"
+ },
+ "BTN": {
+ "name": "BTN",
+ "symbol": "BTN"
+ },
+ "BIF": {
+ "name": "Burundi Fraŋ",
+ "symbol": "BIF"
+ },
+ "BYR": {
+ "name": "BYR",
+ "symbol": "BYR"
+ },
+ "BZD": {
+ "name": "BZD",
+ "symbol": "BZD"
+ },
+ "XOF": {
+ "name": "CFA Fraŋ (BCEAO)",
+ "symbol": "CFA"
+ },
+ "XAF": {
+ "name": "CFA Fraŋ (BEAC)",
+ "symbol": "FCFA"
+ },
+ "CLP": {
+ "name": "CLP",
+ "symbol": "CLP"
+ },
+ "COP": {
+ "name": "COP",
+ "symbol": "COP"
+ },
+ "CRC": {
+ "name": "CRC",
+ "symbol": "CRC"
+ },
+ "CUC": {
+ "name": "CUC",
+ "symbol": "CUC"
+ },
+ "CUP": {
+ "name": "CUP",
+ "symbol": "CUP"
+ },
+ "CZK": {
+ "name": "CZK",
+ "symbol": "CZK"
+ },
+ "DKK": {
+ "name": "DKK",
+ "symbol": "DKK"
+ },
+ "DOP": {
+ "name": "DOP",
+ "symbol": "DOP"
+ },
+ "ETB": {
+ "name": "Ecioopi Birr",
+ "symbol": "ETB"
+ },
+ "EUR": {
+ "name": "Eero",
+ "symbol": "€"
+ },
+ "ERN": {
+ "name": "Eritree Nafka",
+ "symbol": "ERN"
+ },
+ "FJD": {
+ "name": "FJD",
+ "symbol": "FJD"
+ },
+ "FKP": {
+ "name": "FKP",
+ "symbol": "FKP"
+ },
+ "GMD": {
+ "name": "Gambi Dalasi",
+ "symbol": "GMD"
+ },
+ "GEL": {
+ "name": "GEL",
+ "symbol": "GEL"
+ },
+ "GHS": {
+ "name": "GHS",
+ "symbol": "GHS"
+ },
+ "GIP": {
+ "name": "GIP",
+ "symbol": "GIP"
+ },
+ "GNF": {
+ "name": "GNF",
+ "symbol": "GNF"
+ },
+ "GTQ": {
+ "name": "GTQ",
+ "symbol": "GTQ"
+ },
+ "GYD": {
+ "name": "GYD",
+ "symbol": "GYD"
+ },
+ "ZAR": {
+ "name": "Hawasa Afriki Rand",
+ "symbol": "ZAR"
+ },
+ "HKD": {
+ "name": "HKD",
+ "symbol": "HK$"
+ },
+ "HNL": {
+ "name": "HNL",
+ "symbol": "HNL"
+ },
+ "HRK": {
+ "name": "HRK",
+ "symbol": "HRK"
+ },
+ "HTG": {
+ "name": "HTG",
+ "symbol": "HTG"
+ },
+ "HUF": {
+ "name": "HUF",
+ "symbol": "HUF"
+ },
+ "IDR": {
+ "name": "IDR",
+ "symbol": "IDR"
+ },
+ "ILS": {
+ "name": "ILS",
+ "symbol": "₪"
+ },
+ "INR": {
+ "name": "Indu Rupii",
+ "symbol": "₹"
+ },
+ "IQD": {
+ "name": "IQD",
+ "symbol": "IQD"
+ },
+ "IRR": {
+ "name": "IRR",
+ "symbol": "IRR"
+ },
+ "ISK": {
+ "name": "ISK",
+ "symbol": "ISK"
+ },
+ "JPY": {
+ "name": "Jaapoŋ Yen",
+ "symbol": "JPÂ¥"
+ },
+ "DJF": {
+ "name": "Jibuuti Fraŋ",
+ "symbol": "DJF"
+ },
+ "JMD": {
+ "name": "JMD",
+ "symbol": "JMD"
+ },
+ "JOD": {
+ "name": "JOD",
+ "symbol": "JOD"
+ },
+ "CAD": {
+ "name": "Kanaada Dollar",
+ "symbol": "CA$"
+ },
+ "CVE": {
+ "name": "Kapuver Escudo",
+ "symbol": "CVE"
+ },
+ "KES": {
+ "name": "Keeniya Šiiliŋ",
+ "symbol": "KES"
+ },
+ "KGS": {
+ "name": "KGS",
+ "symbol": "KGS"
+ },
+ "KHR": {
+ "name": "KHR",
+ "symbol": "KHR"
+ },
+ "KMF": {
+ "name": "Komoor Fraŋ",
+ "symbol": "KMF"
+ },
+ "CDF": {
+ "name": "Kongo Fraŋ",
+ "symbol": "CDF"
+ },
+ "KPW": {
+ "name": "KPW",
+ "symbol": "KPW"
+ },
+ "KRW": {
+ "name": "KRW",
+ "symbol": "â‚©"
+ },
+ "KWD": {
+ "name": "KWD",
+ "symbol": "KWD"
+ },
+ "KYD": {
+ "name": "KYD",
+ "symbol": "KYD"
+ },
+ "KZT": {
+ "name": "KZT",
+ "symbol": "KZT"
+ },
+ "AED": {
+ "name": "Laaraw Immaara Margantey Dirham",
+ "symbol": "AED"
+ },
+ "LAK": {
+ "name": "LAK",
+ "symbol": "LAK"
+ },
+ "LBP": {
+ "name": "LBP",
+ "symbol": "LBP"
+ },
+ "SLL": {
+ "name": "Leeon",
+ "symbol": "SLL"
+ },
+ "LSL": {
+ "name": "Leezoto Loti",
+ "symbol": "LSL"
+ },
+ "LRD": {
+ "name": "Liberia Dollar",
+ "symbol": "LRD"
+ },
+ "LYD": {
+ "name": "Liibi Dinar",
+ "symbol": "LYD"
+ },
+ "SZL": {
+ "name": "Lilangeni",
+ "symbol": "SZL"
+ },
+ "LKR": {
+ "name": "LKR",
+ "symbol": "LKR"
+ },
+ "LTL": {
+ "name": "LTL",
+ "symbol": "LTL"
+ },
+ "MAD": {
+ "name": "Maarok Dirham",
+ "symbol": "MAD"
+ },
+ "MWK": {
+ "name": "Malaawi Kwaca",
+ "symbol": "MWK"
+ },
+ "MGA": {
+ "name": "Malgaaši Fraŋ",
+ "symbol": "MGA"
+ },
+ "MDL": {
+ "name": "MDL",
+ "symbol": "MDL"
+ },
+ "EGP": {
+ "name": "Misra Pund",
+ "symbol": "EGP"
+ },
+ "MKD": {
+ "name": "MKD",
+ "symbol": "MKD"
+ },
+ "MMK": {
+ "name": "MMK",
+ "symbol": "MMK"
+ },
+ "MNT": {
+ "name": "MNT",
+ "symbol": "MNT"
+ },
+ "MUR": {
+ "name": "Mooris Rupii",
+ "symbol": "MUR"
+ },
+ "MRO": {
+ "name": "Mooritaani Ugiya",
+ "symbol": "MRO"
+ },
+ "MOP": {
+ "name": "MOP",
+ "symbol": "MOP"
+ },
+ "MVR": {
+ "name": "MVR",
+ "symbol": "MVR"
+ },
+ "MXN": {
+ "name": "MXN",
+ "symbol": "MX$"
+ },
+ "MYR": {
+ "name": "MYR",
+ "symbol": "MYR"
+ },
+ "MZN": {
+ "name": "MZN",
+ "symbol": "MZN"
+ },
+ "NGN": {
+ "name": "Naajiriya Neera",
+ "symbol": "NGN"
+ },
+ "NAD": {
+ "name": "Naamibi Dollar",
+ "symbol": "NAD"
+ },
+ "NIO": {
+ "name": "NIO",
+ "symbol": "NIO"
+ },
+ "NOK": {
+ "name": "NOK",
+ "symbol": "NOK"
+ },
+ "NPR": {
+ "name": "NPR",
+ "symbol": "NPR"
+ },
+ "NZD": {
+ "name": "NZD",
+ "symbol": "NZ$"
+ },
+ "OMR": {
+ "name": "OMR",
+ "symbol": "OMR"
+ },
+ "AUD": {
+ "name": "Ostraali Dollar",
+ "symbol": "A$"
+ },
+ "PAB": {
+ "name": "PAB",
+ "symbol": "PAB"
+ },
+ "PEN": {
+ "name": "PEN",
+ "symbol": "PEN"
+ },
+ "PGK": {
+ "name": "PGK",
+ "symbol": "PGK"
+ },
+ "PHP": {
+ "name": "PHP",
+ "symbol": "PHP"
+ },
+ "PKR": {
+ "name": "PKR",
+ "symbol": "PKR"
+ },
+ "PLN": {
+ "name": "PLN",
+ "symbol": "PLN"
+ },
+ "PYG": {
+ "name": "PYG",
+ "symbol": "PYG"
+ },
+ "QAR": {
+ "name": "QAR",
+ "symbol": "QAR"
+ },
+ "RON": {
+ "name": "RON",
+ "symbol": "RON"
+ },
+ "RSD": {
+ "name": "RSD",
+ "symbol": "RSD"
+ },
+ "RUB": {
+ "name": "RUB",
+ "symbol": "RUB"
+ },
+ "RWF": {
+ "name": "Rwanda Fraŋ",
+ "symbol": "RWF"
+ },
+ "STD": {
+ "name": "Sao Tome nda Prinsipe Dobra",
+ "symbol": "STD"
+ },
+ "SAR": {
+ "name": "Saudiya Riyal",
+ "symbol": "SAR"
+ },
+ "SBD": {
+ "name": "SBD",
+ "symbol": "SBD"
+ },
+ "SCR": {
+ "name": "Seešel Rupii",
+ "symbol": "SCR"
+ },
+ "SEK": {
+ "name": "SEK",
+ "symbol": "SEK"
+ },
+ "SHP": {
+ "name": "Seŋ Helena Fraŋ",
+ "symbol": "SHP"
+ },
+ "SGD": {
+ "name": "SGD",
+ "symbol": "SGD"
+ },
+ "CNY": {
+ "name": "Sinwa Yuan Renminbi",
+ "symbol": "CNÂ¥"
+ },
+ "SOS": {
+ "name": "Somaali Šiiliŋ",
+ "symbol": "SOS"
+ },
+ "SRD": {
+ "name": "SRD",
+ "symbol": "SRD"
+ },
+ "SSP": {
+ "name": "SSP",
+ "symbol": "SSP"
+ },
+ "SDG": {
+ "name": "Suudaŋ Dinar",
+ "symbol": "SDG"
+ },
+ "SVC": {
+ "name": "SVC",
+ "symbol": "SVC"
+ },
+ "CHF": {
+ "name": "Swisu Fraŋ",
+ "symbol": "CHF"
+ },
+ "SYP": {
+ "name": "SYP",
+ "symbol": "SYP"
+ },
+ "TZS": {
+ "name": "Tanzaani Šiiliŋ",
+ "symbol": "TZS"
+ },
+ "THB": {
+ "name": "THB",
+ "symbol": "THB"
+ },
+ "TJS": {
+ "name": "TJS",
+ "symbol": "TJS"
+ },
+ "TMT": {
+ "name": "TMT",
+ "symbol": "TMT"
+ },
+ "TOP": {
+ "name": "TOP",
+ "symbol": "TOP"
+ },
+ "TRY": {
+ "name": "TRY",
+ "symbol": "TRY"
+ },
+ "TTD": {
+ "name": "TTD",
+ "symbol": "TTD"
+ },
+ "TND": {
+ "name": "Tunizi Dinar",
+ "symbol": "TND"
+ },
+ "TWD": {
+ "name": "TWD",
+ "symbol": "NT$"
+ },
+ "UAH": {
+ "name": "UAH",
+ "symbol": "UAH"
+ },
+ "UGX": {
+ "name": "Uganda Šiiliŋ",
+ "symbol": "UGX"
+ },
+ "UYU": {
+ "name": "UYU",
+ "symbol": "UYU"
+ },
+ "UZS": {
+ "name": "UZS",
+ "symbol": "UZS"
+ },
+ "VEF": {
+ "name": "VEF",
+ "symbol": "VEF"
+ },
+ "VND": {
+ "name": "VND",
+ "symbol": "â‚«"
+ },
+ "VUV": {
+ "name": "VUV",
+ "symbol": "VUV"
+ },
+ "WST": {
+ "name": "WST",
+ "symbol": "WST"
+ },
+ "XCD": {
+ "name": "XCD",
+ "symbol": "EC$"
+ },
+ "XPF": {
+ "name": "XPF",
+ "symbol": "CFPF"
+ },
+ "YER": {
+ "name": "YER",
+ "symbol": "YER"
+ },
+ "ZMW": {
+ "name": "Zambi Kwaca",
+ "symbol": "ZMW"
+ },
+ "ZWL": {
+ "name": "ZWL",
+ "symbol": "ZWL"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/currency/tzm.json b/library/intl/resources/currency/tzm.json
new file mode 100644
index 000000000..88a03cc01
--- /dev/null
+++ b/library/intl/resources/currency/tzm.json
@@ -0,0 +1,634 @@
+{
+ "AFN": {
+ "name": "AFN",
+ "symbol": "AFN"
+ },
+ "ALL": {
+ "name": "ALL",
+ "symbol": "ALL"
+ },
+ "AMD": {
+ "name": "AMD",
+ "symbol": "AMD"
+ },
+ "ANG": {
+ "name": "ANG",
+ "symbol": "ANG"
+ },
+ "ARS": {
+ "name": "ARS",
+ "symbol": "ARS"
+ },
+ "MGA": {
+ "name": "Aryari Umalɣaci",
+ "symbol": "MGA"
+ },
+ "AWG": {
+ "name": "AWG",
+ "symbol": "AWG"
+ },
+ "AZN": {
+ "name": "AZN",
+ "symbol": "AZN"
+ },
+ "BAM": {
+ "name": "BAM",
+ "symbol": "BAM"
+ },
+ "BBD": {
+ "name": "BBD",
+ "symbol": "BBD"
+ },
+ "BDT": {
+ "name": "BDT",
+ "symbol": "BDT"
+ },
+ "BGN": {
+ "name": "BGN",
+ "symbol": "BGN"
+ },
+ "ETB": {
+ "name": "Birr Uyityuppi",
+ "symbol": "ETB"
+ },
+ "BMD": {
+ "name": "BMD",
+ "symbol": "BMD"
+ },
+ "BND": {
+ "name": "BND",
+ "symbol": "BND"
+ },
+ "BOB": {
+ "name": "BOB",
+ "symbol": "BOB"
+ },
+ "BRL": {
+ "name": "BRL",
+ "symbol": "R$"
+ },
+ "BSD": {
+ "name": "BSD",
+ "symbol": "BSD"
+ },
+ "BTN": {
+ "name": "BTN",
+ "symbol": "BTN"
+ },
+ "BYR": {
+ "name": "BYR",
+ "symbol": "BYR"
+ },
+ "BZD": {
+ "name": "BZD",
+ "symbol": "BZD"
+ },
+ "UGX": {
+ "name": "Cilin Uɣandi (1966–1987)",
+ "symbol": "UGX"
+ },
+ "SOS": {
+ "name": "Cilin Uá¹£umali",
+ "symbol": "SOS"
+ },
+ "TZS": {
+ "name": "Cilin Uá¹­anzani",
+ "symbol": "TZS"
+ },
+ "KES": {
+ "name": "Cillin Ukini",
+ "symbol": "KES"
+ },
+ "CLP": {
+ "name": "CLP",
+ "symbol": "CLP"
+ },
+ "COP": {
+ "name": "COP",
+ "symbol": "COP"
+ },
+ "CRC": {
+ "name": "CRC",
+ "symbol": "CRC"
+ },
+ "CUC": {
+ "name": "CUC",
+ "symbol": "CUC"
+ },
+ "CUP": {
+ "name": "CUP",
+ "symbol": "CUP"
+ },
+ "CZK": {
+ "name": "CZK",
+ "symbol": "CZK"
+ },
+ "GMD": {
+ "name": "Dalasi Agambi",
+ "symbol": "GMD"
+ },
+ "MAD": {
+ "name": "Derhem Umeṛṛuki",
+ "symbol": "MAD"
+ },
+ "AED": {
+ "name": "Derhem Uymarati",
+ "symbol": "AED"
+ },
+ "BHD": {
+ "name": "Ḍinar Ubaḥrayni",
+ "symbol": "BHD"
+ },
+ "DZD": {
+ "name": "Ḍinar Udzayri",
+ "symbol": "DZD"
+ },
+ "LYD": {
+ "name": "Ḍinar Ulibi",
+ "symbol": "LYD"
+ },
+ "TND": {
+ "name": "Ḍinar Utunsi",
+ "symbol": "TND"
+ },
+ "DKK": {
+ "name": "DKK",
+ "symbol": "DKK"
+ },
+ "DOP": {
+ "name": "DOP",
+ "symbol": "DOP"
+ },
+ "STD": {
+ "name": "Dubra Usawá¹­umi",
+ "symbol": "STD"
+ },
+ "CAD": {
+ "name": "Ḍular Ukanadi",
+ "symbol": "CA$"
+ },
+ "LRD": {
+ "name": "Ḍular Ulibiri",
+ "symbol": "LRD"
+ },
+ "USD": {
+ "name": "Ḍular Umirikani",
+ "symbol": "US$"
+ },
+ "NAD": {
+ "name": "Ḍular Unamibi",
+ "symbol": "NAD"
+ },
+ "AUD": {
+ "name": "Ḍular Usṭrali",
+ "symbol": "A$"
+ },
+ "FJD": {
+ "name": "FJD",
+ "symbol": "FJD"
+ },
+ "FKP": {
+ "name": "FKP",
+ "symbol": "FKP"
+ },
+ "XOF": {
+ "name": "Frank CFA (BCEAO)",
+ "symbol": "CFA"
+ },
+ "XAF": {
+ "name": "Frank CFA (BEAC)",
+ "symbol": "FCFA"
+ },
+ "BIF": {
+ "name": "Frank Uburundi",
+ "symbol": "BIF"
+ },
+ "DJF": {
+ "name": "Frank UÄŸibuti",
+ "symbol": "DJF"
+ },
+ "CDF": {
+ "name": "Frank Ukunguli",
+ "symbol": "CDF"
+ },
+ "KMF": {
+ "name": "Frank Uqumuri",
+ "symbol": "KMF"
+ },
+ "RWF": {
+ "name": "Frank Urwandi",
+ "symbol": "RWF"
+ },
+ "CHF": {
+ "name": "Frank Uswisri",
+ "symbol": "CHF"
+ },
+ "GEL": {
+ "name": "GEL",
+ "symbol": "GEL"
+ },
+ "GHS": {
+ "name": "GHS",
+ "symbol": "GHS"
+ },
+ "GIP": {
+ "name": "GIP",
+ "symbol": "GIP"
+ },
+ "GNF": {
+ "name": "GNF",
+ "symbol": "GNF"
+ },
+ "GTQ": {
+ "name": "GTQ",
+ "symbol": "GTQ"
+ },
+ "GYD": {
+ "name": "GYD",
+ "symbol": "GYD"
+ },
+ "HKD": {
+ "name": "HKD",
+ "symbol": "HK$"
+ },
+ "HNL": {
+ "name": "HNL",
+ "symbol": "HNL"
+ },
+ "HRK": {
+ "name": "HRK",
+ "symbol": "HRK"
+ },
+ "HTG": {
+ "name": "HTG",
+ "symbol": "HTG"
+ },
+ "HUF": {
+ "name": "HUF",
+ "symbol": "HUF"
+ },
+ "IDR": {
+ "name": "IDR",
+ "symbol": "IDR"
+ },
+ "ILS": {
+ "name": "ILS",
+ "symbol": "₪"
+ },
+ "IQD": {
+ "name": "IQD",
+ "symbol": "IQD"
+ },
+ "IRR": {
+ "name": "IRR",
+ "symbol": "IRR"
+ },
+ "ISK": {
+ "name": "ISK",
+ "symbol": "ISK"
+ },
+ "CVE": {
+ "name": "Iskudu Ukabuvirdyani",
+ "symbol": "CVE"
+ },
+ "JMD": {
+ "name": "JMD",
+ "symbol": "JMD"
+ },
+ "JOD": {
+ "name": "JOD",
+ "symbol": "JOD"
+ },
+ "EGP": {
+ "name": "Junih Umiṣṛi",
+ "symbol": "EGP"
+ },
+ "SHP": {
+ "name": "Junih Usantehilini",
+ "symbol": "SHP"
+ },
+ "GBP": {
+ "name": "Junih Usterlini Ubriá¹­ani",
+ "symbol": "£"
+ },
+ "SDG": {
+ "name": "Junih Usudani",
+ "symbol": "SDG"
+ },
+ "KGS": {
+ "name": "KGS",
+ "symbol": "KGS"
+ },
+ "KHR": {
+ "name": "KHR",
+ "symbol": "KHR"
+ },
+ "KPW": {
+ "name": "KPW",
+ "symbol": "KPW"
+ },
+ "KRW": {
+ "name": "KRW",
+ "symbol": "â‚©"
+ },
+ "MWK": {
+ "name": "KwaÄa Umalawi",
+ "symbol": "MWK"
+ },
+ "ZMW": {
+ "name": "KwaÄa Uzambi",
+ "symbol": "ZMW"
+ },
+ "AOA": {
+ "name": "Kwanza Unguli",
+ "symbol": "AOA"
+ },
+ "KWD": {
+ "name": "KWD",
+ "symbol": "KWD"
+ },
+ "KYD": {
+ "name": "KYD",
+ "symbol": "KYD"
+ },
+ "KZT": {
+ "name": "KZT",
+ "symbol": "KZT"
+ },
+ "LAK": {
+ "name": "LAK",
+ "symbol": "LAK"
+ },
+ "LBP": {
+ "name": "LBP",
+ "symbol": "LBP"
+ },
+ "SZL": {
+ "name": "Lilanjini Uswazi",
+ "symbol": "SZL"
+ },
+ "LKR": {
+ "name": "LKR",
+ "symbol": "LKR"
+ },
+ "LTL": {
+ "name": "LTL",
+ "symbol": "LTL"
+ },
+ "LSL": {
+ "name": "Luti Ulusuá¹­i",
+ "symbol": "LSL"
+ },
+ "SLL": {
+ "name": "Lyun Usirralyuni",
+ "symbol": "SLL"
+ },
+ "MDL": {
+ "name": "MDL",
+ "symbol": "MDL"
+ },
+ "MKD": {
+ "name": "MKD",
+ "symbol": "MKD"
+ },
+ "MMK": {
+ "name": "MMK",
+ "symbol": "MMK"
+ },
+ "MNT": {
+ "name": "MNT",
+ "symbol": "MNT"
+ },
+ "MOP": {
+ "name": "MOP",
+ "symbol": "MOP"
+ },
+ "MVR": {
+ "name": "MVR",
+ "symbol": "MVR"
+ },
+ "MXN": {
+ "name": "MXN",
+ "symbol": "MX$"
+ },
+ "MYR": {
+ "name": "MYR",
+ "symbol": "MYR"
+ },
+ "MZN": {
+ "name": "MZN",
+ "symbol": "MZN"
+ },
+ "ERN": {
+ "name": "Nakfa Uyritri",
+ "symbol": "ERN"
+ },
+ "NGN": {
+ "name": "Nayra Unijiri",
+ "symbol": "NGN"
+ },
+ "NIO": {
+ "name": "NIO",
+ "symbol": "NIO"
+ },
+ "NOK": {
+ "name": "NOK",
+ "symbol": "NOK"
+ },
+ "NPR": {
+ "name": "NPR",
+ "symbol": "NPR"
+ },
+ "NZD": {
+ "name": "NZD",
+ "symbol": "NZ$"
+ },
+ "OMR": {
+ "name": "OMR",
+ "symbol": "OMR"
+ },
+ "PAB": {
+ "name": "PAB",
+ "symbol": "PAB"
+ },
+ "PEN": {
+ "name": "PEN",
+ "symbol": "PEN"
+ },
+ "PGK": {
+ "name": "PGK",
+ "symbol": "PGK"
+ },
+ "PHP": {
+ "name": "PHP",
+ "symbol": "PHP"
+ },
+ "PKR": {
+ "name": "PKR",
+ "symbol": "PKR"
+ },
+ "PLN": {
+ "name": "PLN",
+ "symbol": "PLN"
+ },
+ "BWP": {
+ "name": "Pula Ubutswani",
+ "symbol": "BWP"
+ },
+ "PYG": {
+ "name": "PYG",
+ "symbol": "PYG"
+ },
+ "QAR": {
+ "name": "QAR",
+ "symbol": "QAR"
+ },
+ "ZAR": {
+ "name": "Rand Ufriki Unzul",
+ "symbol": "ZAR"
+ },
+ "RON": {
+ "name": "RON",
+ "symbol": "RON"
+ },
+ "RSD": {
+ "name": "RSD",
+ "symbol": "RSD"
+ },
+ "RUB": {
+ "name": "RUB",
+ "symbol": "RUB"
+ },
+ "INR": {
+ "name": "Rupi Uḥindi",
+ "symbol": "₹"
+ },
+ "MUR": {
+ "name": "Rupi Umurisi",
+ "symbol": "MUR"
+ },
+ "SCR": {
+ "name": "Rupi Usicili",
+ "symbol": "SCR"
+ },
+ "SAR": {
+ "name": "Ryal Usaεudi",
+ "symbol": "SAR"
+ },
+ "SBD": {
+ "name": "SBD",
+ "symbol": "SBD"
+ },
+ "SEK": {
+ "name": "SEK",
+ "symbol": "SEK"
+ },
+ "SGD": {
+ "name": "SGD",
+ "symbol": "SGD"
+ },
+ "SRD": {
+ "name": "SRD",
+ "symbol": "SRD"
+ },
+ "SSP": {
+ "name": "SSP",
+ "symbol": "SSP"
+ },
+ "SVC": {
+ "name": "SVC",
+ "symbol": "SVC"
+ },
+ "SYP": {
+ "name": "SYP",
+ "symbol": "SYP"
+ },
+ "THB": {
+ "name": "THB",
+ "symbol": "THB"
+ },
+ "TJS": {
+ "name": "TJS",
+ "symbol": "TJS"
+ },
+ "TMT": {
+ "name": "TMT",
+ "symbol": "TMT"
+ },
+ "TOP": {
+ "name": "TOP",
+ "symbol": "TOP"
+ },
+ "TRY": {
+ "name": "TRY",
+ "symbol": "TRY"
+ },
+ "TTD": {
+ "name": "TTD",
+ "symbol": "TTD"
+ },
+ "TWD": {
+ "name": "TWD",
+ "symbol": "NT$"
+ },
+ "UAH": {
+ "name": "UAH",
+ "symbol": "UAH"
+ },
+ "MRO": {
+ "name": "Uqiyya Umuritani",
+ "symbol": "MRO"
+ },
+ "EUR": {
+ "name": "Uá¹›u",
+ "symbol": "€"
+ },
+ "UYU": {
+ "name": "UYU",
+ "symbol": "UYU"
+ },
+ "UZS": {
+ "name": "UZS",
+ "symbol": "UZS"
+ },
+ "VEF": {
+ "name": "VEF",
+ "symbol": "VEF"
+ },
+ "VND": {
+ "name": "VND",
+ "symbol": "â‚«"
+ },
+ "VUV": {
+ "name": "VUV",
+ "symbol": "VUV"
+ },
+ "WST": {
+ "name": "WST",
+ "symbol": "WST"
+ },
+ "XCD": {
+ "name": "XCD",
+ "symbol": "EC$"
+ },
+ "XPF": {
+ "name": "XPF",
+ "symbol": "CFPF"
+ },
+ "JPY": {
+ "name": "Yann Ujappuni",
+ "symbol": "JPÂ¥"
+ },
+ "YER": {
+ "name": "YER",
+ "symbol": "YER"
+ },
+ "CNY": {
+ "name": "Ywan Renminbi Ucinwi",
+ "symbol": "CNÂ¥"
+ },
+ "ZWL": {
+ "name": "ZWL",
+ "symbol": "ZWL"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/currency/ug.json b/library/intl/resources/currency/ug.json
new file mode 100644
index 000000000..cace9bd23
--- /dev/null
+++ b/library/intl/resources/currency/ug.json
@@ -0,0 +1,634 @@
+{
+ "ARS": {
+ "name": "ئارگÛنتىنا Ù¾Ûسوسى",
+ "symbol": "ARS"
+ },
+ "AWG": {
+ "name": "ئارۇبان Ùىلورۇنى",
+ "symbol": "AWG"
+ },
+ "XAF": {
+ "name": "ئاÙرىقا قىتئەسى Ù¾Û‡Ù„-مۇئامىلە ئىتتىپاقى Ùرانكى",
+ "symbol": "FCFA"
+ },
+ "XOF": {
+ "name": "ئاÙرىقا قىتئەسى Ù¾Û‡Ù„-مۇئامىلە ئىتتىپاقى Ùرانكى (BCEAO)",
+ "symbol": "CFA"
+ },
+ "AFN": {
+ "name": "ئاÙغان ئاÙغانى",
+ "symbol": "AFN"
+ },
+ "ALL": {
+ "name": "ئالبانىيە Ù„Ûكى",
+ "symbol": "ALL"
+ },
+ "DZD": {
+ "name": "ئالجىرىيە دىنارى",
+ "symbol": "DZD"
+ },
+ "USD": {
+ "name": "ئامÛرىكا دوللىرى",
+ "symbol": "$"
+ },
+ "AOA": {
+ "name": "ئانگولا كۇۋانزاسى",
+ "symbol": "AOA"
+ },
+ "AUD": {
+ "name": "ئاۋسترالىيە دوللىرى",
+ "symbol": "A$"
+ },
+ "MOP": {
+ "name": "ئاۋمÛÙ† پاتاكاسى",
+ "symbol": "MOP"
+ },
+ "AMD": {
+ "name": "ئەرمÛنىيە دىرامى",
+ "symbol": "AMD"
+ },
+ "AED": {
+ "name": "ئەرەب بىرلەشمە خەلىپىلىكى دەرھەمى",
+ "symbol": "AED"
+ },
+ "AZN": {
+ "name": "ئەزەربەيجان ماناتى",
+ "symbol": "AZN"
+ },
+ "GBP": {
+ "name": "ئەنگلىيە Ùوند سىتÛرلىڭى",
+ "symbol": "£"
+ },
+ "OMR": {
+ "name": "ئومان رىيالى",
+ "symbol": "OMR"
+ },
+ "UZS": {
+ "name": "ئۆزبÛكىستان سومى",
+ "symbol": "UZS"
+ },
+ "UYU": {
+ "name": "ئۇرۇگۋاي Ù¾Ûسوسى",
+ "symbol": "UYU"
+ },
+ "UAH": {
+ "name": "ئۇكرائىنا خرىۋناسى",
+ "symbol": "UAH"
+ },
+ "UGX": {
+ "name": "ئۇگاندا شىللىڭى",
+ "symbol": "UGX"
+ },
+ "IQD": {
+ "name": "ئىراق دىنارى",
+ "symbol": "IQD"
+ },
+ "IRR": {
+ "name": "ئىران رىيالى",
+ "symbol": "IRR"
+ },
+ "ILS": {
+ "name": "ئىسرائىل ÙŠÛÚ­Ù‰ Ø´ÛÙƒÛلى",
+ "symbol": "₪"
+ },
+ "ISK": {
+ "name": "ئىسلاندىيە كروناسى",
+ "symbol": "ISK"
+ },
+ "JOD": {
+ "name": "ئىيوردانىيە دىنارى",
+ "symbol": "JOD"
+ },
+ "ERN": {
+ "name": "ئÛرىترÛÙŠÛ• ناكÙاسى",
+ "symbol": "ERN"
+ },
+ "ETB": {
+ "name": "ئÛÙىيوپىيە بىررى",
+ "symbol": "ETB"
+ },
+ "BBD": {
+ "name": "باربادوس دوللىرى",
+ "symbol": "BBD"
+ },
+ "BDT": {
+ "name": "باڭلادىش تاكاسى",
+ "symbol": "BDT"
+ },
+ "BSD": {
+ "name": "باھاما دوللىرى",
+ "symbol": "BSD"
+ },
+ "BHD": {
+ "name": "بەھرەين دىنارى",
+ "symbol": "BHD"
+ },
+ "BWP": {
+ "name": "بوتسۋانا پۇلاسى",
+ "symbol": "BWP"
+ },
+ "BAM": {
+ "name": "بوسنىيە-Ø®ÛرتسÛگوۋىنا ئالماشتۇرۇشچان ماركى",
+ "symbol": "BAM"
+ },
+ "BOB": {
+ "name": "بولىۋىيە بولىۋىيانوسى",
+ "symbol": "BOB"
+ },
+ "BTN": {
+ "name": "بۇتان نگۇلترۇمى",
+ "symbol": "BTN"
+ },
+ "BIF": {
+ "name": "بۇرۇندى Ùرانكى",
+ "symbol": "BIF"
+ },
+ "BGN": {
+ "name": "بۇلغارىيە Ù„Ûۋاسى",
+ "symbol": "BGN"
+ },
+ "BRL": {
+ "name": "بىرازىلىيە رىيالى",
+ "symbol": "R$"
+ },
+ "BND": {
+ "name": "بىرۇنÛÙŠ دوللىرى",
+ "symbol": "BND"
+ },
+ "BMD": {
+ "name": "بÛرمۇدا دوللىرى",
+ "symbol": "BMD"
+ },
+ "BYR": {
+ "name": "بÛلارۇسىيە رۇبلىسى",
+ "symbol": "BYR"
+ },
+ "BZD": {
+ "name": "بÛلىز دوللىرى",
+ "symbol": "BZD"
+ },
+ "PGK": {
+ "name": "پاپۇئا ÙŠÛÚ­Ù‰ گىۋىنÛÙŠÛ• كىناسى",
+ "symbol": "PGK"
+ },
+ "PYG": {
+ "name": "پاراگۋاي گۇئارانىسى",
+ "symbol": "PYG"
+ },
+ "PKR": {
+ "name": "پاكىستان رۇپىسى",
+ "symbol": "PKR"
+ },
+ "PAB": {
+ "name": "پاناما بالبوئاسى",
+ "symbol": "PAB"
+ },
+ "PLN": {
+ "name": "پولشا زىلوتى",
+ "symbol": "PLN"
+ },
+ "PEN": {
+ "name": "Ù¾Ûرۇ ÙŠÛÚ­Ù‰ سولى",
+ "symbol": "PEN"
+ },
+ "TJS": {
+ "name": "تاجىكىستان سومونىسى",
+ "symbol": "TJS"
+ },
+ "TZS": {
+ "name": "تانزانىيە شىللىڭى",
+ "symbol": "TZS"
+ },
+ "THB": {
+ "name": "تايلاند باختى",
+ "symbol": "THB"
+ },
+ "TOP": {
+ "name": "تونگا پائانگاسى",
+ "symbol": "TOP"
+ },
+ "TND": {
+ "name": "تۇنىس دىنارى",
+ "symbol": "TND"
+ },
+ "TMT": {
+ "name": "تۈركمەنىستان ماناتى",
+ "symbol": "TMT"
+ },
+ "TRY": {
+ "name": "تۈركىيە لىراسى",
+ "symbol": "TRY"
+ },
+ "TTD": {
+ "name": "تىرىنىداد ۋە توباگو دوللىرى",
+ "symbol": "TTD"
+ },
+ "XPF": {
+ "name": "تىنچ ئوكيان Ù¾Û‡Ù„-مۇئامىلە ئورتاق گەۋدىسى Ùرانكى",
+ "symbol": "CFPF"
+ },
+ "GIP": {
+ "name": "جەبىلتارىق Ùوند سىتÛرلىڭى",
+ "symbol": "GIP"
+ },
+ "ZAR": {
+ "name": "جەنۇبىي ئاÙرىقا راندى",
+ "symbol": "ZAR"
+ },
+ "SSP": {
+ "name": "جەنۇبىي سۇدان ÙوندستÛرلىڭى",
+ "symbol": "SSP"
+ },
+ "KRW": {
+ "name": "جەنۇبىي كورÛÙŠÛ• ۋونى",
+ "symbol": "â‚©"
+ },
+ "CNY": {
+ "name": "جۇڭگو يۈەنى",
+ "symbol": "ï¿¥"
+ },
+ "DJF": {
+ "name": "جىبۇتى Ùرانكى",
+ "symbol": "DJF"
+ },
+ "CLP": {
+ "name": "چىلى Ù¾Ûسوسى",
+ "symbol": "CLP"
+ },
+ "CZK": {
+ "name": "Ú†ÛØ® جۇمھۇرىيىتى كورۇناسى",
+ "symbol": "CZK"
+ },
+ "DKK": {
+ "name": "دانىيە كرونى",
+ "symbol": "DKK"
+ },
+ "DOP": {
+ "name": "دومىنىكا Ù¾Ûسوسى",
+ "symbol": "DOP"
+ },
+ "RUB": {
+ "name": "رۇسىيە رۇبلىسى",
+ "symbol": "RUB"
+ },
+ "RON": {
+ "name": "رۇمىنىيە Ù„Ûيى",
+ "symbol": "RON"
+ },
+ "RWF": {
+ "name": "رۋاندا Ùرانكى",
+ "symbol": "RWF"
+ },
+ "ZMW": {
+ "name": "زامبىيە كۋاچاسى",
+ "symbol": "ZMW"
+ },
+ "ZWL": {
+ "name": "Ø²Ù‰Ù…Ø¨Ø§Ø¨Û‹Û Ø¯ÙˆÙ„Ù„Ù‰Ø±Ù‰ (2009)",
+ "symbol": "ZWL"
+ },
+ "SVC": {
+ "name": "سالۋادور كولونى",
+ "symbol": "SVC"
+ },
+ "WST": {
+ "name": "ساموئا تالاسى",
+ "symbol": "WST"
+ },
+ "STD": {
+ "name": "سان-ØªÙˆÙ…Û Û‹Û• پىرىنسىپى دوبراسى",
+ "symbol": "STD"
+ },
+ "SHP": {
+ "name": "ساينىت-Ú¾ÛÙ„Ûنا ÙوندستÛرلىڭى",
+ "symbol": "SHP"
+ },
+ "SAR": {
+ "name": "سەئۇدى رىيالى",
+ "symbol": "SAR"
+ },
+ "SBD": {
+ "name": "سولومون ئاراللىرى دوللىرى",
+ "symbol": "SBD"
+ },
+ "SOS": {
+ "name": "سومالى شىللىڭى",
+ "symbol": "SOS"
+ },
+ "SDG": {
+ "name": "سۇدان ÙوندستÛرلىڭى",
+ "symbol": "SDG"
+ },
+ "SRD": {
+ "name": "سۇرىنام دوللىرى",
+ "symbol": "SRD"
+ },
+ "SYP": {
+ "name": "سۈرىيە ÙوندستÛرلىڭى",
+ "symbol": "SYP"
+ },
+ "LKR": {
+ "name": "سىرىلانكا رۇپىسى",
+ "symbol": "LKR"
+ },
+ "SGD": {
+ "name": "سىنگاپور دوللىرى",
+ "symbol": "SGD"
+ },
+ "SZL": {
+ "name": "سىۋÛزىلاند لىلانگÛنى",
+ "symbol": "SZL"
+ },
+ "RSD": {
+ "name": "سÛربىيە دىنارى",
+ "symbol": "RSD"
+ },
+ "SLL": {
+ "name": "سÛررالÛئون Ù„ÛئونÛسى",
+ "symbol": "SLL"
+ },
+ "SCR": {
+ "name": "سÛيشÛÙ„ رۇپىسى",
+ "symbol": "SCR"
+ },
+ "XCD": {
+ "name": "شەرقىي كارىب دوللىرى",
+ "symbol": "EC$"
+ },
+ "KPW": {
+ "name": "شىمالىي كورÛÙŠÛ• ۋونى",
+ "symbol": "KPW"
+ },
+ "CHF": {
+ "name": "شىۋÛتسىيە Ùرانكى",
+ "symbol": "CHF"
+ },
+ "SEK": {
+ "name": "شىۋÛتسىيە كروناسى",
+ "symbol": "SEK"
+ },
+ "HKD": {
+ "name": "شياڭگاڭ دوللىرى",
+ "symbol": "HK$"
+ },
+ "FKP": {
+ "name": "Ùالكلاند ئاراللىرى Ùوند سىتÛرلىڭى",
+ "symbol": "FKP"
+ },
+ "FJD": {
+ "name": "Ùىجى دوللىرى",
+ "symbol": "FJD"
+ },
+ "PHP": {
+ "name": "Ùىلىپپىن Ù¾Ûسوسى",
+ "symbol": "PHP"
+ },
+ "QAR": {
+ "name": "قاتار رىيالى",
+ "symbol": "QAR"
+ },
+ "KZT": {
+ "name": "قازاقىستان تەڭگىسى",
+ "symbol": "KZT"
+ },
+ "KGS": {
+ "name": "قىرغىزىستان سومى",
+ "symbol": "KGS"
+ },
+ "KHR": {
+ "name": "كامبودژا رىئÛلى",
+ "symbol": "KHR"
+ },
+ "CAD": {
+ "name": "كانادا دوللىرى",
+ "symbol": "CA$"
+ },
+ "KYD": {
+ "name": "كايمان ئاراللىرى دوللىرى",
+ "symbol": "KYD"
+ },
+ "CRC": {
+ "name": "كوستارىكا كولونى",
+ "symbol": "CRC"
+ },
+ "COP": {
+ "name": "كولومبىيە Ù¾Ûسوسى",
+ "symbol": "COP"
+ },
+ "KMF": {
+ "name": "كومورو Ùرانكى",
+ "symbol": "KMF"
+ },
+ "CDF": {
+ "name": "كونگو Ùرانكى",
+ "symbol": "CDF"
+ },
+ "CUC": {
+ "name": "كۇبا ئالماشتۇرۇشچان Ù¾Ûسوسى",
+ "symbol": "CUC"
+ },
+ "CUP": {
+ "name": "كۇبا Ù¾Ûسوسى",
+ "symbol": "CUP"
+ },
+ "KWD": {
+ "name": "كۇۋەيت دىنارى",
+ "symbol": "KWD"
+ },
+ "HRK": {
+ "name": "كىرودىيە كۇناسى",
+ "symbol": "HRK"
+ },
+ "KES": {
+ "name": "ÙƒÛنىيە شىللىڭى",
+ "symbol": "KES"
+ },
+ "GMD": {
+ "name": "گامبىيە دالاسى",
+ "symbol": "GMD"
+ },
+ "GHS": {
+ "name": "گانا سÛدىسى",
+ "symbol": "GHS"
+ },
+ "ANG": {
+ "name": "گوللاندىيەگە قاراشلىق ئانتىللÛÙ† گۇلدÛنى",
+ "symbol": "ANG"
+ },
+ "GEL": {
+ "name": "گىرۇزىيە لارىسى",
+ "symbol": "GEL"
+ },
+ "GTQ": {
+ "name": "گىۋاتÛمالا ÙƒÛ‡Û‹Ûتزالى",
+ "symbol": "GTQ"
+ },
+ "GYD": {
+ "name": "گىۋىئانا دوللىرى",
+ "symbol": "GYD"
+ },
+ "GNF": {
+ "name": "گىۋىنÛÙŠÛ• Ùرانكى",
+ "symbol": "GNF"
+ },
+ "LAK": {
+ "name": "لائوس كىپى",
+ "symbol": "LAK"
+ },
+ "LRD": {
+ "name": "لىبÛرىيە دوللىرى",
+ "symbol": "LRD"
+ },
+ "LTL": {
+ "name": "لىتۋا لىتاسى",
+ "symbol": "LTL"
+ },
+ "LBP": {
+ "name": "لىۋان Ùوند سىتÛرلىڭى",
+ "symbol": "LBP"
+ },
+ "LYD": {
+ "name": "لىۋىيە دىنارى",
+ "symbol": "LYD"
+ },
+ "LSL": {
+ "name": "Ù„Ûسوتو لوتىسى",
+ "symbol": "LSL"
+ },
+ "MGA": {
+ "name": "ماداغاسقار ئارىئارىسى",
+ "symbol": "MGA"
+ },
+ "MAD": {
+ "name": "ماراكەش دىرھەمى",
+ "symbol": "MAD"
+ },
+ "MKD": {
+ "name": "ماكÛدونىيە دىنارى",
+ "symbol": "MKD"
+ },
+ "MWK": {
+ "name": "مالاۋى كۋاچاسى",
+ "symbol": "MWK"
+ },
+ "MYR": {
+ "name": "مالايشىيا رىڭگىتى",
+ "symbol": "MYR"
+ },
+ "MVR": {
+ "name": "مالدىۋى رۇÙىياسى",
+ "symbol": "MVR"
+ },
+ "MRO": {
+ "name": "ماۋرىتانىيە ئۇگىيەسى",
+ "symbol": "MRO"
+ },
+ "MUR": {
+ "name": "ماۋرىتىئۇس رۇپىسى",
+ "symbol": "MUR"
+ },
+ "MZN": {
+ "name": "موزامبىك Ù…Ûتىكالى",
+ "symbol": "MZN"
+ },
+ "MNT": {
+ "name": "موڭغۇلىيە تۈگرىكى",
+ "symbol": "MNT"
+ },
+ "MDL": {
+ "name": "مولدوۋا Ù„ÛÛ‹Ù‰",
+ "symbol": "MDL"
+ },
+ "EGP": {
+ "name": "مىسىر Ùوند سىتÛرلىڭى",
+ "symbol": "EGP"
+ },
+ "MMK": {
+ "name": "مىيانمار كىياتى",
+ "symbol": "MMK"
+ },
+ "MXN": {
+ "name": "Ù…Ûكسىكا Ù¾Ûسوسى",
+ "symbol": "MX$"
+ },
+ "NAD": {
+ "name": "نامىبىيە دوللىرى",
+ "symbol": "NAD"
+ },
+ "NOK": {
+ "name": "نورۋÛگىيە كرونى",
+ "symbol": "NOK"
+ },
+ "NIO": {
+ "name": "نىگÛرىيە كوردوباسى",
+ "symbol": "NIO"
+ },
+ "NGN": {
+ "name": "نىگÛرىيە نايراسى",
+ "symbol": "NGN"
+ },
+ "NPR": {
+ "name": "Ù†Ûپال رۇپىسى",
+ "symbol": "NPR"
+ },
+ "HTG": {
+ "name": "ھايتى گۇردÛسى",
+ "symbol": "HTG"
+ },
+ "HNL": {
+ "name": "ھوندۇراس Ù„Ûمپىراسى",
+ "symbol": "HNL"
+ },
+ "IDR": {
+ "name": "ھىندونÛزىيە رۇپىيەسى",
+ "symbol": "IDR"
+ },
+ "INR": {
+ "name": "ھىندىستان رۇپىسى",
+ "symbol": "₹"
+ },
+ "VUV": {
+ "name": "ۋانۇئاتۇ ۋاتۇسى",
+ "symbol": "VUV"
+ },
+ "VND": {
+ "name": "ۋىيÛتنام دوڭى",
+ "symbol": "â‚«"
+ },
+ "HUF": {
+ "name": "Û‹Ûنگىرىيە ÙورÛنتى",
+ "symbol": "HUF"
+ },
+ "VEF": {
+ "name": "Û‹ÛÙ†ÛزۇئÛلا بولىۋارى",
+ "symbol": "VEF"
+ },
+ "JPY": {
+ "name": "ياپونىيە ÙŠÛنى",
+ "symbol": "JPÂ¥"
+ },
+ "JMD": {
+ "name": "يامايكا دوللىرى",
+ "symbol": "JMD"
+ },
+ "EUR": {
+ "name": "ياۋرو",
+ "symbol": "€"
+ },
+ "YER": {
+ "name": "يەمەن رىيالى",
+ "symbol": "YER"
+ },
+ "CVE": {
+ "name": "ÙŠÛشىل تۇمشۇق ئÛسكۇدوسى",
+ "symbol": "CVE"
+ },
+ "TWD": {
+ "name": "ÙŠÛÚ­Ù‰ تەيۋەن دوللىرى",
+ "symbol": "NT$"
+ },
+ "NZD": {
+ "name": "ÙŠÛÚ­Ù‰ زÛلاندىيە دوللىرى",
+ "symbol": "NZ$"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/currency/uk.json b/library/intl/resources/currency/uk.json
new file mode 100644
index 000000000..3ce9fb1cd
--- /dev/null
+++ b/library/intl/resources/currency/uk.json
@@ -0,0 +1,634 @@
+{
+ "AUD": {
+ "name": "авÑтралійÑький долар",
+ "symbol": "AUD"
+ },
+ "AZN": {
+ "name": "азербайджанÑький манат",
+ "symbol": "AZN"
+ },
+ "ALL": {
+ "name": "албанÑький лек",
+ "symbol": "ALL"
+ },
+ "DZD": {
+ "name": "алжирÑький динар",
+ "symbol": "DZD"
+ },
+ "GBP": {
+ "name": "англійÑький фунт Ñтерлінгів",
+ "symbol": "GBP"
+ },
+ "AOA": {
+ "name": "ангольÑька кванза",
+ "symbol": "AOA"
+ },
+ "ARS": {
+ "name": "аргентинÑький пеÑо",
+ "symbol": "ARS"
+ },
+ "AWG": {
+ "name": "арубÑький флорин",
+ "symbol": "AWG"
+ },
+ "AFN": {
+ "name": "афганÑький афгані",
+ "symbol": "AFN"
+ },
+ "BSD": {
+ "name": "багамÑький долар",
+ "symbol": "BSD"
+ },
+ "BDT": {
+ "name": "бангладеÑька така",
+ "symbol": "BDT"
+ },
+ "BBD": {
+ "name": "барбадоÑький долар",
+ "symbol": "BBD"
+ },
+ "BHD": {
+ "name": "бахрейнÑький динар",
+ "symbol": "BHD"
+ },
+ "BZD": {
+ "name": "белізький долар",
+ "symbol": "BZD"
+ },
+ "BMD": {
+ "name": "бермудÑький долар",
+ "symbol": "BMD"
+ },
+ "BYR": {
+ "name": "білоруÑький рубль",
+ "symbol": "BYR"
+ },
+ "BGN": {
+ "name": "болгарÑький лев",
+ "symbol": "BGN"
+ },
+ "BOB": {
+ "name": "болівійÑький болівіано",
+ "symbol": "BOB"
+ },
+ "BWP": {
+ "name": "ботÑванÑька пула",
+ "symbol": "BWP"
+ },
+ "BRL": {
+ "name": "бразильÑький реал",
+ "symbol": "BRL"
+ },
+ "BND": {
+ "name": "брунейÑький долар",
+ "symbol": "BND"
+ },
+ "BIF": {
+ "name": "бурундійÑький франк",
+ "symbol": "BIF"
+ },
+ "BTN": {
+ "name": "бутанÑький нгултрум",
+ "symbol": "BTN"
+ },
+ "VND": {
+ "name": "вʼєтнамÑький донг",
+ "symbol": "VND"
+ },
+ "VUV": {
+ "name": "вануатÑький вату",
+ "symbol": "VUV"
+ },
+ "VEF": {
+ "name": "венеÑуельÑький болівар",
+ "symbol": "VEF"
+ },
+ "AMD": {
+ "name": "вірменÑький драм",
+ "symbol": "AMD"
+ },
+ "HTG": {
+ "name": "гаїтÑнÑький гурд",
+ "symbol": "HTG"
+ },
+ "GMD": {
+ "name": "гамбійÑький далаÑÑ–",
+ "symbol": "GMD"
+ },
+ "GHS": {
+ "name": "ганÑький Ñеді",
+ "symbol": "GHS"
+ },
+ "GYD": {
+ "name": "гаÑнÑький долар",
+ "symbol": "GYD"
+ },
+ "GTQ": {
+ "name": "гватемальÑький кетÑаль",
+ "symbol": "GTQ"
+ },
+ "GNF": {
+ "name": "гвінейÑький франк",
+ "symbol": "GNF"
+ },
+ "GIP": {
+ "name": "гібралтарÑький фунт",
+ "symbol": "GIP"
+ },
+ "HNL": {
+ "name": "гондураÑька лемпіра",
+ "symbol": "HNL"
+ },
+ "HKD": {
+ "name": "гонконгÑький долар",
+ "symbol": "HKD"
+ },
+ "GEL": {
+ "name": "грузинÑький ларі",
+ "symbol": "GEL"
+ },
+ "DKK": {
+ "name": "данÑька крона",
+ "symbol": "DKK"
+ },
+ "DJF": {
+ "name": "джибутійÑький франк",
+ "symbol": "DJF"
+ },
+ "AED": {
+ "name": "дирхам ОÐЕ",
+ "symbol": "AED"
+ },
+ "STD": {
+ "name": "добра Сан-Томе Ñ– ПринÑіпі",
+ "symbol": "STD"
+ },
+ "KYD": {
+ "name": "долар Кайманових оÑтровів",
+ "symbol": "KYD"
+ },
+ "SBD": {
+ "name": "долар Соломонових ОÑтровів",
+ "symbol": "SBD"
+ },
+ "USD": {
+ "name": "долар СШÐ",
+ "symbol": "USD"
+ },
+ "TTD": {
+ "name": "долар Тринідаду і Тобаго",
+ "symbol": "TTD"
+ },
+ "DOP": {
+ "name": "домініканÑький пеÑо",
+ "symbol": "DOP"
+ },
+ "ERN": {
+ "name": "еритрейÑька накфа",
+ "symbol": "ERN"
+ },
+ "CVE": {
+ "name": "еÑкудо Кабо-Верде",
+ "symbol": "CVE"
+ },
+ "ETB": {
+ "name": "ефіопÑький бир",
+ "symbol": "ETB"
+ },
+ "EUR": {
+ "name": "євро",
+ "symbol": "EUR"
+ },
+ "EGP": {
+ "name": "єгипетÑький фунт",
+ "symbol": "EGP"
+ },
+ "YER": {
+ "name": "єменÑький ріал",
+ "symbol": "YER"
+ },
+ "ZMW": {
+ "name": "замбійÑька квача",
+ "symbol": "ZMW"
+ },
+ "XOF": {
+ "name": "західноафриканÑький франк BCEAO",
+ "symbol": "CFA"
+ },
+ "ZWL": {
+ "name": "зімбабвійÑький долар (2009)",
+ "symbol": "ZWL"
+ },
+ "ILS": {
+ "name": "ізраїльÑький новий шекель",
+ "symbol": "ILS"
+ },
+ "INR": {
+ "name": "індійÑька рупіÑ",
+ "symbol": "INR"
+ },
+ "IDR": {
+ "name": "індонезійÑька рупіÑ",
+ "symbol": "IDR"
+ },
+ "IQD": {
+ "name": "іракÑький динар",
+ "symbol": "IQD"
+ },
+ "IRR": {
+ "name": "іранÑький ріал",
+ "symbol": "IRR"
+ },
+ "ISK": {
+ "name": "Ñ–ÑландÑька крона",
+ "symbol": "ISK"
+ },
+ "JOD": {
+ "name": "йорданÑький динар",
+ "symbol": "JOD"
+ },
+ "MMK": {
+ "name": "кʼÑÑ‚ МʼÑнми",
+ "symbol": "MMK"
+ },
+ "KZT": {
+ "name": "казахÑтанÑький тенге",
+ "symbol": "KZT"
+ },
+ "KHR": {
+ "name": "камбоджійÑький рієль",
+ "symbol": "KHR"
+ },
+ "CAD": {
+ "name": "канадÑький долар",
+ "symbol": "CAD"
+ },
+ "QAR": {
+ "name": "катарÑький ріал",
+ "symbol": "QAR"
+ },
+ "KES": {
+ "name": "кенійÑький шилінг",
+ "symbol": "KES"
+ },
+ "KGS": {
+ "name": "киргизький Ñом",
+ "symbol": "KGS"
+ },
+ "CNY": {
+ "name": "китайÑький юань",
+ "symbol": "CNY"
+ },
+ "PGK": {
+ "name": "кіна Папуа Ðової Гвінеї",
+ "symbol": "PGK"
+ },
+ "COP": {
+ "name": "колумбійÑький пеÑо",
+ "symbol": "COP"
+ },
+ "KMF": {
+ "name": "коморÑький франк",
+ "symbol": "KMF"
+ },
+ "BAM": {
+ "name": "конвертована марка БоÑнії Ñ– Герцеговини",
+ "symbol": "BAM"
+ },
+ "CDF": {
+ "name": "конголезький франк",
+ "symbol": "CDF"
+ },
+ "CRC": {
+ "name": "коÑтариканÑький колон",
+ "symbol": "CRC"
+ },
+ "CUC": {
+ "name": "кубинÑький конвертований пеÑо",
+ "symbol": "CUC"
+ },
+ "CUP": {
+ "name": "кубинÑький пеÑо",
+ "symbol": "CUP"
+ },
+ "KWD": {
+ "name": "кувейтÑький динар",
+ "symbol": "KWD"
+ },
+ "LAK": {
+ "name": "лаоÑький кіп",
+ "symbol": "LAK"
+ },
+ "SLL": {
+ "name": "леоне Сьєрра-Леоне",
+ "symbol": "SLL"
+ },
+ "LSL": {
+ "name": "леÑотÑький лоті",
+ "symbol": "LSL"
+ },
+ "LTL": {
+ "name": "литовÑький літ",
+ "symbol": "LTL"
+ },
+ "LRD": {
+ "name": "ліберійÑький долар",
+ "symbol": "LRD"
+ },
+ "LBP": {
+ "name": "ліванÑький фунт",
+ "symbol": "LBP"
+ },
+ "LYD": {
+ "name": "лівійÑький динар",
+ "symbol": "LYD"
+ },
+ "MUR": {
+ "name": "маврикійÑька рупіÑ",
+ "symbol": "MUR"
+ },
+ "MRO": {
+ "name": "мавританÑька угіÑ",
+ "symbol": "MRO"
+ },
+ "MKD": {
+ "name": "македонÑький денар",
+ "symbol": "MKD"
+ },
+ "MWK": {
+ "name": "малавійÑька квача",
+ "symbol": "MWK"
+ },
+ "MGA": {
+ "name": "малагаÑійÑький аріарі",
+ "symbol": "MGA"
+ },
+ "MYR": {
+ "name": "малайзійÑький рингіт",
+ "symbol": "MYR"
+ },
+ "MVR": {
+ "name": "мальдівÑька руфіÑ",
+ "symbol": "MVR"
+ },
+ "MAD": {
+ "name": "марокканÑький дирхам",
+ "symbol": "MAD"
+ },
+ "MXN": {
+ "name": "мекÑиканÑький пеÑо",
+ "symbol": "MXN"
+ },
+ "MZN": {
+ "name": "мозамбіцький метикал",
+ "symbol": "MZN"
+ },
+ "MDL": {
+ "name": "молдовÑький лей",
+ "symbol": "MDL"
+ },
+ "MNT": {
+ "name": "монгольÑький тугрик",
+ "symbol": "MNT"
+ },
+ "NAD": {
+ "name": "намібійÑький долар",
+ "symbol": "NAD"
+ },
+ "NPR": {
+ "name": "непальÑька рупіÑ",
+ "symbol": "NPR"
+ },
+ "NGN": {
+ "name": "нігерійÑька найра",
+ "symbol": "NGN"
+ },
+ "ANG": {
+ "name": "нідерландÑький антильÑький гульден",
+ "symbol": "ANG"
+ },
+ "NIO": {
+ "name": "нікарагуанÑька кордоба оро",
+ "symbol": "NIO"
+ },
+ "TWD": {
+ "name": "новий тайванÑький долар",
+ "symbol": "TWD"
+ },
+ "NZD": {
+ "name": "новозеландÑький долар",
+ "symbol": "NZD"
+ },
+ "NOK": {
+ "name": "норвезька крона",
+ "symbol": "NOK"
+ },
+ "OMR": {
+ "name": "оманÑький ріал",
+ "symbol": "OMR"
+ },
+ "PKR": {
+ "name": "пакиÑтанÑька рупіÑ",
+ "symbol": "PKR"
+ },
+ "PAB": {
+ "name": "панамÑька бальбоа",
+ "symbol": "PAB"
+ },
+ "PYG": {
+ "name": "парагвайÑький гуарані",
+ "symbol": "PYG"
+ },
+ "MOP": {
+ "name": "патака Макао",
+ "symbol": "MOP"
+ },
+ "PEN": {
+ "name": "перуанÑький новий Ñол",
+ "symbol": "PEN"
+ },
+ "ZAR": {
+ "name": "південноафриканÑький ранд",
+ "symbol": "ZAR"
+ },
+ "KRW": {
+ "name": "південнокорейÑький вон",
+ "symbol": "KRW"
+ },
+ "SSP": {
+ "name": "південноÑуданÑький фунт",
+ "symbol": "SSP"
+ },
+ "KPW": {
+ "name": "північнокорейÑький вон",
+ "symbol": "KPW"
+ },
+ "PLN": {
+ "name": "польÑький злотий",
+ "symbol": "PLN"
+ },
+ "RUB": {
+ "name": "роÑійÑький рубль",
+ "symbol": "RUB"
+ },
+ "RWF": {
+ "name": "руандійÑький франк",
+ "symbol": "RWF"
+ },
+ "RON": {
+ "name": "румунÑький лей",
+ "symbol": "RON"
+ },
+ "SVC": {
+ "name": "ÑальвадорÑький колон",
+ "symbol": "SVC"
+ },
+ "WST": {
+ "name": "ÑамоанÑька тала",
+ "symbol": "WST"
+ },
+ "SAR": {
+ "name": "ÑаудівÑький ріал",
+ "symbol": "SAR"
+ },
+ "SZL": {
+ "name": "ÑвазілендÑький лілангені",
+ "symbol": "SZL"
+ },
+ "SCR": {
+ "name": "ÑейшельÑька рупіÑ",
+ "symbol": "SCR"
+ },
+ "RSD": {
+ "name": "ÑербÑький динар",
+ "symbol": "RSD"
+ },
+ "SYP": {
+ "name": "ÑирійÑький фунт",
+ "symbol": "SYP"
+ },
+ "SGD": {
+ "name": "ÑінгапурÑький долар",
+ "symbol": "SGD"
+ },
+ "SOS": {
+ "name": "ÑомалійÑький шилінг",
+ "symbol": "SOS"
+ },
+ "SDG": {
+ "name": "ÑуданÑький фунт",
+ "symbol": "SDG"
+ },
+ "SRD": {
+ "name": "ÑуринамÑький долар",
+ "symbol": "SRD"
+ },
+ "XCD": {
+ "name": "ÑхіднокарибÑький долар",
+ "symbol": "XCD"
+ },
+ "TJS": {
+ "name": "таджицький Ñомоні",
+ "symbol": "TJS"
+ },
+ "THB": {
+ "name": "таїландÑький бат",
+ "symbol": "THB"
+ },
+ "TZS": {
+ "name": "танзанійÑький шилінг",
+ "symbol": "TZS"
+ },
+ "TOP": {
+ "name": "тонганÑька паанга",
+ "symbol": "TOP"
+ },
+ "TND": {
+ "name": "туніÑький динар",
+ "symbol": "TND"
+ },
+ "TRY": {
+ "name": "турецька ліра",
+ "symbol": "TRY"
+ },
+ "TMT": {
+ "name": "туркменÑький манат",
+ "symbol": "TMT"
+ },
+ "UGX": {
+ "name": "угандійÑький шилінг",
+ "symbol": "UGX"
+ },
+ "HUF": {
+ "name": "угорÑький форинт",
+ "symbol": "HUF"
+ },
+ "UZS": {
+ "name": "узбецький Ñум",
+ "symbol": "UZS"
+ },
+ "UAH": {
+ "name": "українÑька гривнÑ",
+ "symbol": "â‚´"
+ },
+ "UYU": {
+ "name": "уругвайÑький пеÑо",
+ "symbol": "UYU"
+ },
+ "FJD": {
+ "name": "фіджійÑький долар",
+ "symbol": "FJD"
+ },
+ "PHP": {
+ "name": "філіппінÑький пеÑо",
+ "symbol": "PHP"
+ },
+ "XPF": {
+ "name": "французький тихоокеанÑький франк",
+ "symbol": "CFPF"
+ },
+ "SHP": {
+ "name": "фунт оÑтрова СвÑтої Єлени",
+ "symbol": "SHP"
+ },
+ "FKP": {
+ "name": "фунт ФолклендÑьких оÑтровів",
+ "symbol": "FKP"
+ },
+ "HRK": {
+ "name": "хорватÑька куна",
+ "symbol": "HRK"
+ },
+ "XAF": {
+ "name": "центральноафриканÑький франк",
+ "symbol": "FCFA"
+ },
+ "CZK": {
+ "name": "чеÑька крона",
+ "symbol": "CZK"
+ },
+ "CLP": {
+ "name": "чилійÑький пеÑо",
+ "symbol": "CLP"
+ },
+ "SEK": {
+ "name": "шведÑька крона",
+ "symbol": "SEK"
+ },
+ "CHF": {
+ "name": "швейцарÑький франк",
+ "symbol": "CHF"
+ },
+ "LKR": {
+ "name": "шрі-ланкійÑька рупіÑ",
+ "symbol": "LKR"
+ },
+ "JMD": {
+ "name": "ÑмайÑький долар",
+ "symbol": "JMD"
+ },
+ "JPY": {
+ "name": "ÑпонÑька єна",
+ "symbol": "Â¥"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/currency/ur-IN.json b/library/intl/resources/currency/ur-IN.json
new file mode 100644
index 000000000..cdc23da80
--- /dev/null
+++ b/library/intl/resources/currency/ur-IN.json
@@ -0,0 +1,634 @@
+{
+ "XOF": {
+ "name": "CFA Ùرانک BCEAO",
+ "symbol": "CFA"
+ },
+ "XAF": {
+ "name": "CFA Ùرانک BEAC",
+ "symbol": "FCFA"
+ },
+ "XPF": {
+ "name": "CFP Ùرانک",
+ "symbol": "CFPF"
+ },
+ "SVC": {
+ "name": "SVC",
+ "symbol": "SVC"
+ },
+ "ZWL": {
+ "name": "ZWL",
+ "symbol": "ZWL"
+ },
+ "ARS": {
+ "name": "ارجنٹائن پیسÛ",
+ "symbol": "ARS"
+ },
+ "JOD": {
+ "name": "اردنی دینار",
+ "symbol": "JOD"
+ },
+ "AWG": {
+ "name": "اروبن ÙلورÙÙ†",
+ "symbol": "AWG"
+ },
+ "ERN": {
+ "name": "اریٹیریائی ناکÙا",
+ "symbol": "ERN"
+ },
+ "UZS": {
+ "name": "ازبکستان سوم",
+ "symbol": "UZS"
+ },
+ "ILS": {
+ "name": "اسرائیلی نیا شیکل",
+ "symbol": "₪"
+ },
+ "AFN": {
+ "name": "اÙغان اÙغانی",
+ "symbol": "AFN"
+ },
+ "ALL": {
+ "name": "البانیا کا لیک",
+ "symbol": "ALL"
+ },
+ "DZD": {
+ "name": "الجیریائی دینار",
+ "symbol": "DZD"
+ },
+ "USD": {
+ "name": "امریکی ڈالر",
+ "symbol": "$"
+ },
+ "IDR": {
+ "name": "انڈونیشین روپیÛ",
+ "symbol": "IDR"
+ },
+ "AOA": {
+ "name": "انگولا کا کوانزا",
+ "symbol": "AOA"
+ },
+ "ETB": {
+ "name": "ایتھوپیائی بÙرّ",
+ "symbol": "ETB"
+ },
+ "IRR": {
+ "name": "ایرانی ریال",
+ "symbol": "IRR"
+ },
+ "AZN": {
+ "name": "آذربائجانی منات",
+ "symbol": "AZN"
+ },
+ "AMD": {
+ "name": "آرمینیائی ڈرم",
+ "symbol": "AMD"
+ },
+ "AUD": {
+ "name": "آسٹریلین ڈالر",
+ "symbol": "A$"
+ },
+ "ISK": {
+ "name": "آئس لينڈی کرونا",
+ "symbol": "ISK"
+ },
+ "BBD": {
+ "name": "باربیڈین ڈالر",
+ "symbol": "BBD"
+ },
+ "BHD": {
+ "name": "بحرینی دینار",
+ "symbol": "BHD"
+ },
+ "BRL": {
+ "name": "برازیلی ریئل",
+ "symbol": "R$"
+ },
+ "GBP": {
+ "name": "برطانوی پاونڈ سٹرلنگ",
+ "symbol": "£"
+ },
+ "BMD": {
+ "name": "برموڈا ڈالر",
+ "symbol": "BMD"
+ },
+ "BIF": {
+ "name": "برونڈیئن Ùرانک",
+ "symbol": "BIF"
+ },
+ "BND": {
+ "name": "برونئی ڈالر",
+ "symbol": "BND"
+ },
+ "BGN": {
+ "name": "بلغارین لیو",
+ "symbol": "BGN"
+ },
+ "BDT": {
+ "name": "Ø¨Ù†Ú¯Ù„Û Ø¯ÛŒØ´ÛŒ ٹکا",
+ "symbol": "BDT"
+ },
+ "BWP": {
+ "name": "بوتسوانا کا پولا",
+ "symbol": "BWP"
+ },
+ "BAM": {
+ "name": "بوسنیا Ûرزیگووینا کا قابل منتقلی نشان",
+ "symbol": "BAM"
+ },
+ "BOB": {
+ "name": "بولیوین بولیویانو",
+ "symbol": "BOB"
+ },
+ "BSD": {
+ "name": "بÛامانی ڈالر",
+ "symbol": "BSD"
+ },
+ "BYR": {
+ "name": "بیلاروسی روبل",
+ "symbol": "BYR"
+ },
+ "BZD": {
+ "name": "بیلائز ڈالر",
+ "symbol": "BZD"
+ },
+ "INR": {
+ "name": "بھارتی روپیÛ",
+ "symbol": "₹"
+ },
+ "BTN": {
+ "name": "بھوٹانی Ú¯Ùلٹرم",
+ "symbol": "BTN"
+ },
+ "PGK": {
+ "name": "پاپوآ نیو گنی کا کینا",
+ "symbol": "PGK"
+ },
+ "PKR": {
+ "name": "پاکستانی روپیÛ",
+ "symbol": "PKR"
+ },
+ "PAB": {
+ "name": "Ù¾Ù†Ø§Ù…Û Ú©Ø§ بالبوآ",
+ "symbol": "PAB"
+ },
+ "PLN": {
+ "name": "پولش زلوٹی",
+ "symbol": "PLN"
+ },
+ "PYG": {
+ "name": "پیراگوئے کا گوآرنی",
+ "symbol": "PYG"
+ },
+ "PEN": {
+ "name": "پیروین نیووسول",
+ "symbol": "PEN"
+ },
+ "TJS": {
+ "name": "تاجکستانی سومونی",
+ "symbol": "TJS"
+ },
+ "TMT": {
+ "name": "ترکمانستانی منات",
+ "symbol": "TMT"
+ },
+ "TRY": {
+ "name": "ترکی لیرا",
+ "symbol": "TRY"
+ },
+ "TTD": {
+ "name": "ترینیداد اور ٹوباگو کا ڈالر",
+ "symbol": "TTD"
+ },
+ "TZS": {
+ "name": "تنزانیائی شلنگ",
+ "symbol": "TZS"
+ },
+ "TND": {
+ "name": "تیونیسیائی دینار",
+ "symbol": "TND"
+ },
+ "THB": {
+ "name": "تھائی باÛت",
+ "symbol": "฿"
+ },
+ "TOP": {
+ "name": "ٹونگن پانگا",
+ "symbol": "TOP"
+ },
+ "JPY": {
+ "name": "جاپانی ین",
+ "symbol": "JPÂ¥"
+ },
+ "GEL": {
+ "name": "جارجیائی لاری",
+ "symbol": "GEL"
+ },
+ "GIP": {
+ "name": "جبل الطارق پونڈ",
+ "symbol": "GIP"
+ },
+ "DJF": {
+ "name": "جبوتی Ùرانک",
+ "symbol": "DJF"
+ },
+ "JMD": {
+ "name": "جمائیکن ڈالر",
+ "symbol": "JMD"
+ },
+ "CZK": {
+ "name": "جمÛÙˆØ±ÛŒÛ Ú†ÛŒÚ© کرونا",
+ "symbol": "CZK"
+ },
+ "ZAR": {
+ "name": "جنوبی اÙریقی رانڈ",
+ "symbol": "ZAR"
+ },
+ "SSP": {
+ "name": "جنوبی سوڈانی پاؤنڈ",
+ "symbol": "SSP"
+ },
+ "KRW": {
+ "name": "جنوبی کوریائی وون",
+ "symbol": "â‚©"
+ },
+ "CLP": {
+ "name": "چلّین پیسÛ",
+ "symbol": "CLP"
+ },
+ "CNY": {
+ "name": "چینی یوآن",
+ "symbol": "CNÂ¥"
+ },
+ "DKK": {
+ "name": "ڈنمارک کرون",
+ "symbol": "DKK"
+ },
+ "DOP": {
+ "name": "ڈومنیکن پیسو",
+ "symbol": "DOP"
+ },
+ "RWF": {
+ "name": "روانڈا کا Ùرانک",
+ "symbol": "RWF"
+ },
+ "RUB": {
+ "name": "روسی روبل",
+ "symbol": "RUB"
+ },
+ "RON": {
+ "name": "رومانیائی لیو",
+ "symbol": "RON"
+ },
+ "ZMW": {
+ "name": "زامبیائی کواچا",
+ "symbol": "ZMW"
+ },
+ "WST": {
+ "name": "ساموآئی ٹالا",
+ "symbol": "WST"
+ },
+ "STD": {
+ "name": "ساؤ ٹوم اور پرنسپے ڈوبرا",
+ "symbol": "STD"
+ },
+ "RSD": {
+ "name": "سربین دینار",
+ "symbol": "RSD"
+ },
+ "LKR": {
+ "name": "سری لنکائی روپیÛ",
+ "symbol": "LKR"
+ },
+ "SCR": {
+ "name": "سشلی کا روپیÛ",
+ "symbol": "SCR"
+ },
+ "SAR": {
+ "name": "سعودی ریال",
+ "symbol": "SAR"
+ },
+ "SGD": {
+ "name": "سنگا پور ڈالر",
+ "symbol": "SGD"
+ },
+ "SZL": {
+ "name": "سوازی لیلانجینی",
+ "symbol": "SZL"
+ },
+ "SDG": {
+ "name": "سوڈانی پاؤنڈ",
+ "symbol": "SDG"
+ },
+ "SRD": {
+ "name": "سورینامی ڈالر",
+ "symbol": "SRD"
+ },
+ "SBD": {
+ "name": "سولومن آئلینڈز ڈالر",
+ "symbol": "SBD"
+ },
+ "SEK": {
+ "name": "سویڈن کرونا",
+ "symbol": "SEK"
+ },
+ "CHF": {
+ "name": "سوئس Ùرانکس",
+ "symbol": "CHF"
+ },
+ "SHP": {
+ "name": "سینٹ Ûیلینا پاؤنڈ",
+ "symbol": "SHP"
+ },
+ "SLL": {
+ "name": "سیئرا لیون لیون",
+ "symbol": "SLL"
+ },
+ "SYP": {
+ "name": "شامی پونڈ",
+ "symbol": "SYP"
+ },
+ "KPW": {
+ "name": "شمالی کوریائی وون",
+ "symbol": "KPW"
+ },
+ "SOS": {
+ "name": "صومالی شلنگ",
+ "symbol": "SOS"
+ },
+ "IQD": {
+ "name": "عراقی دینار",
+ "symbol": "IQD"
+ },
+ "OMR": {
+ "name": "عمانی ریال",
+ "symbol": "OMR"
+ },
+ "FKP": {
+ "name": "Ùاکلینڈ آئلینڈز پونڈ",
+ "symbol": "FKP"
+ },
+ "FJD": {
+ "name": "Ùجی کا ڈالر",
+ "symbol": "FJD"
+ },
+ "PHP": {
+ "name": "Ùلپائینی پیسÛ",
+ "symbol": "PHP"
+ },
+ "CUC": {
+ "name": "قابل منتقلی کیوبائی پیسو",
+ "symbol": "CUC"
+ },
+ "KZT": {
+ "name": "قزاخستانی ٹینگ",
+ "symbol": "KZT"
+ },
+ "QAR": {
+ "name": "قطری ریال",
+ "symbol": "QAR"
+ },
+ "CDF": {
+ "name": "کانگولیز Ùرانک",
+ "symbol": "CDF"
+ },
+ "KGS": {
+ "name": "کرغستانی سوم",
+ "symbol": "KGS"
+ },
+ "HRK": {
+ "name": "کروشین کونا",
+ "symbol": "HRK"
+ },
+ "KHR": {
+ "name": "کمبوڈیائی ریئل",
+ "symbol": "KHR"
+ },
+ "CAD": {
+ "name": "کنیڈین ڈالر",
+ "symbol": "CA$"
+ },
+ "CRC": {
+ "name": "کوسٹا ریکا کولون",
+ "symbol": "CRC"
+ },
+ "COP": {
+ "name": "کولمبین پیسÛ",
+ "symbol": "COP"
+ },
+ "KMF": {
+ "name": "کوموریئن Ùرانک",
+ "symbol": "KMF"
+ },
+ "KWD": {
+ "name": "کویتی دینار",
+ "symbol": "KWD"
+ },
+ "CVE": {
+ "name": "کیپ ورڈی اسکیوڈو",
+ "symbol": "CVE"
+ },
+ "KYD": {
+ "name": "کیمین آئلینڈز ڈالر",
+ "symbol": "KYD"
+ },
+ "KES": {
+ "name": "کینیائی شلنگ",
+ "symbol": "KES"
+ },
+ "CUP": {
+ "name": "کیوبائی پیسو",
+ "symbol": "CUP"
+ },
+ "GMD": {
+ "name": "گامبیا کا ڈلاسی",
+ "symbol": "GMD"
+ },
+ "GNF": {
+ "name": "Ú¯Ù†ÛŒ Ùرانک",
+ "symbol": "GNF"
+ },
+ "GTQ": {
+ "name": "گواٹے مالا کا کوئٹزل",
+ "symbol": "GTQ"
+ },
+ "GYD": {
+ "name": "گویانیز ڈالر",
+ "symbol": "GYD"
+ },
+ "GHS": {
+ "name": "گھانی سیڈی",
+ "symbol": "GHS"
+ },
+ "LAK": {
+ "name": "لاؤشیائی Ú©ÙÙ¾",
+ "symbol": "LAK"
+ },
+ "LRD": {
+ "name": "لائبریائی ڈالر",
+ "symbol": "LRD"
+ },
+ "LBP": {
+ "name": "لبنانی پونڈ",
+ "symbol": "LBP"
+ },
+ "LYD": {
+ "name": "لیبیائی دینار",
+ "symbol": "LYD"
+ },
+ "LTL": {
+ "name": "لیتھوینیائی لیٹاس",
+ "symbol": "LTL"
+ },
+ "LSL": {
+ "name": "لیسوتھو لوٹی",
+ "symbol": "LSL"
+ },
+ "MUR": {
+ "name": "ماریشس کا روپیÛ",
+ "symbol": "MUR"
+ },
+ "MDL": {
+ "name": "مالدووی لیو",
+ "symbol": "MDL"
+ },
+ "MVR": {
+ "name": "مالدیپ کا روÙÛŒÛ",
+ "symbol": "MVR"
+ },
+ "AED": {
+ "name": "Ù…ØªØ­Ø¯Û Ø¹Ø±Ø¨ اماراتی درÛÙ…",
+ "symbol": "AED"
+ },
+ "MAD": {
+ "name": "مراکشی درÛÙ…",
+ "symbol": "MAD"
+ },
+ "XCD": {
+ "name": "مشرقی کریبیا کا ڈالر",
+ "symbol": "EC$"
+ },
+ "EGP": {
+ "name": "مصری پاؤنڈ",
+ "symbol": "EGP"
+ },
+ "MKD": {
+ "name": "مقدونیائی دینار",
+ "symbol": "MKD"
+ },
+ "MGA": {
+ "name": "ملاگاسی اریاری",
+ "symbol": "MGA"
+ },
+ "MWK": {
+ "name": "ملاوی کواچا",
+ "symbol": "MWK"
+ },
+ "MYR": {
+ "name": "ملیشیائی رنگÙÙ¹",
+ "symbol": "MYR"
+ },
+ "MNT": {
+ "name": "منگولیائی ٹگرÙ",
+ "symbol": "MNT"
+ },
+ "MRO": {
+ "name": "موریطانیائی اوگوئیا",
+ "symbol": "MRO"
+ },
+ "MZN": {
+ "name": "موزامبیقی میٹیکل",
+ "symbol": "MZN"
+ },
+ "MMK": {
+ "name": "میانما کیاٹ",
+ "symbol": "MMK"
+ },
+ "MOP": {
+ "name": "میکانیز پٹاکا",
+ "symbol": "MOP"
+ },
+ "MXN": {
+ "name": "میکسیکی پیسÛ",
+ "symbol": "MX$"
+ },
+ "NOK": {
+ "name": "ناروے کرون",
+ "symbol": "NOK"
+ },
+ "NAD": {
+ "name": "نامیبیائی ڈالر",
+ "symbol": "NAD"
+ },
+ "NGN": {
+ "name": "نائیجیریائی نائرا",
+ "symbol": "NGN"
+ },
+ "NIO": {
+ "name": "نکارا گوا کا کورڈوبا",
+ "symbol": "NIO"
+ },
+ "NPR": {
+ "name": "نیپالی روپیÛ",
+ "symbol": "NPR"
+ },
+ "ANG": {
+ "name": "نیدر لینڈز انٹیلیئن گلڈر",
+ "symbol": "ANG"
+ },
+ "TWD": {
+ "name": "نیو تائیوان ڈالر",
+ "symbol": "NT$"
+ },
+ "NZD": {
+ "name": "نیوزی لینڈ ڈالر",
+ "symbol": "NZ$"
+ },
+ "VND": {
+ "name": "ویتنامی ڈانگ",
+ "symbol": "â‚«"
+ },
+ "VEF": {
+ "name": "وینزویلا بولیور",
+ "symbol": "VEF"
+ },
+ "VUV": {
+ "name": "وینوواتو واتو",
+ "symbol": "VUV"
+ },
+ "HUF": {
+ "name": "Ûنگرین Ùورنٹ",
+ "symbol": "HUF"
+ },
+ "HNL": {
+ "name": "Ûونڈوران لیمپیرا",
+ "symbol": "HNL"
+ },
+ "HTG": {
+ "name": "Ûیتی کا گؤرڈی",
+ "symbol": "HTG"
+ },
+ "HKD": {
+ "name": "ھانگ کانگ ڈالر",
+ "symbol": "HK$"
+ },
+ "YER": {
+ "name": "یمنی ریال",
+ "symbol": "YER"
+ },
+ "EUR": {
+ "name": "یورو",
+ "symbol": "€"
+ },
+ "UYU": {
+ "name": "یوروگویان پیسو",
+ "symbol": "UYU"
+ },
+ "UAH": {
+ "name": "یوکرینیائی Ûریونیا",
+ "symbol": "UAH"
+ },
+ "UGX": {
+ "name": "یوگانڈا شلنگ",
+ "symbol": "UGX"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/currency/ur.json b/library/intl/resources/currency/ur.json
new file mode 100644
index 000000000..7bc0b1a40
--- /dev/null
+++ b/library/intl/resources/currency/ur.json
@@ -0,0 +1,634 @@
+{
+ "XOF": {
+ "name": "CFA Ùرانک BCEAO",
+ "symbol": "CFA"
+ },
+ "XAF": {
+ "name": "CFA Ùرانک BEAC",
+ "symbol": "FCFA"
+ },
+ "XPF": {
+ "name": "CFP Ùرانک",
+ "symbol": "CFPF"
+ },
+ "SVC": {
+ "name": "SVC",
+ "symbol": "SVC"
+ },
+ "ZWL": {
+ "name": "ZWL",
+ "symbol": "ZWL"
+ },
+ "ARS": {
+ "name": "ارجنٹائن پیسÛ",
+ "symbol": "ARS"
+ },
+ "JOD": {
+ "name": "اردنی دینار",
+ "symbol": "JOD"
+ },
+ "AWG": {
+ "name": "اروبن ÙلورÙÙ†",
+ "symbol": "AWG"
+ },
+ "ERN": {
+ "name": "اریٹیریا کا ناÙکا",
+ "symbol": "ERN"
+ },
+ "UZS": {
+ "name": "ازبکستان سوم",
+ "symbol": "UZS"
+ },
+ "ILS": {
+ "name": "اسرائیلی نیا شیکل",
+ "symbol": "₪"
+ },
+ "AFN": {
+ "name": "اÙغان اÙغانی",
+ "symbol": "AFN"
+ },
+ "ALL": {
+ "name": "البانیا کا لیک",
+ "symbol": "ALL"
+ },
+ "DZD": {
+ "name": "الجیریائی دینار",
+ "symbol": "DZD"
+ },
+ "USD": {
+ "name": "امریکی ڈالر",
+ "symbol": "$"
+ },
+ "IDR": {
+ "name": "انڈونیشین روپیÛ",
+ "symbol": "IDR"
+ },
+ "GBP": {
+ "name": "انگلستانی پاونڈ سٹرلنگ",
+ "symbol": "£"
+ },
+ "AOA": {
+ "name": "انگولا کا کوانزا",
+ "symbol": "AOA"
+ },
+ "ETB": {
+ "name": "ایتھوپیائی بÙرّ",
+ "symbol": "ETB"
+ },
+ "IRR": {
+ "name": "ایرانی ریال",
+ "symbol": "IRR"
+ },
+ "AZN": {
+ "name": "آذربائجانی منات",
+ "symbol": "AZN"
+ },
+ "AMD": {
+ "name": "آرمینیائی ڈرم",
+ "symbol": "AMD"
+ },
+ "AUD": {
+ "name": "آسٹریلین ڈالر",
+ "symbol": "A$"
+ },
+ "ISK": {
+ "name": "آئس لينڈی کرونا",
+ "symbol": "ISK"
+ },
+ "BBD": {
+ "name": "باربیڈین ڈالر",
+ "symbol": "BBD"
+ },
+ "BHD": {
+ "name": "بحرینی دینار",
+ "symbol": "BHD"
+ },
+ "BRL": {
+ "name": "برازیلی ریئل",
+ "symbol": "R$"
+ },
+ "BMD": {
+ "name": "برموڈا ڈالر",
+ "symbol": "BMD"
+ },
+ "BIF": {
+ "name": "برونڈیئن Ùرانک",
+ "symbol": "BIF"
+ },
+ "BND": {
+ "name": "برونئی ڈالر",
+ "symbol": "BND"
+ },
+ "BGN": {
+ "name": "بلغارین لیو",
+ "symbol": "BGN"
+ },
+ "BDT": {
+ "name": "Ø¨Ù†Ú¯Ù„Û Ø¯ÛŒØ´ÛŒ ٹکا",
+ "symbol": "BDT"
+ },
+ "BWP": {
+ "name": "بوتسوانا کا پولا",
+ "symbol": "BWP"
+ },
+ "BAM": {
+ "name": "بوسنیا Ûرزیگووینا کا قابل منتقلی نشان",
+ "symbol": "BAM"
+ },
+ "BOB": {
+ "name": "بولیوین بولیویانو",
+ "symbol": "BOB"
+ },
+ "BSD": {
+ "name": "بÛامانی ڈالر",
+ "symbol": "BSD"
+ },
+ "BYR": {
+ "name": "بیلاروسی روبل",
+ "symbol": "BYR"
+ },
+ "BZD": {
+ "name": "بیلائز ڈالر",
+ "symbol": "BZD"
+ },
+ "INR": {
+ "name": "بھارتی روپیÛ",
+ "symbol": "₹"
+ },
+ "BTN": {
+ "name": "بھوٹانی Ú¯Ùلٹرم",
+ "symbol": "BTN"
+ },
+ "PGK": {
+ "name": "پاپوآ نیو گنی کا کینا",
+ "symbol": "PGK"
+ },
+ "PKR": {
+ "name": "پاکستانی روپیÛ",
+ "symbol": "Rs"
+ },
+ "PAB": {
+ "name": "Ù¾Ù†Ø§Ù…Û Ú©Ø§ بالبوآ",
+ "symbol": "PAB"
+ },
+ "PLN": {
+ "name": "پولش زلوٹی",
+ "symbol": "PLN"
+ },
+ "PYG": {
+ "name": "پیراگوئے کا گوآرنی",
+ "symbol": "PYG"
+ },
+ "PEN": {
+ "name": "پیروین نیووسول",
+ "symbol": "PEN"
+ },
+ "TJS": {
+ "name": "تاجکستانی سومونی",
+ "symbol": "TJS"
+ },
+ "TMT": {
+ "name": "ترکمانستانی منات",
+ "symbol": "TMT"
+ },
+ "TRY": {
+ "name": "ترکی لیرا",
+ "symbol": "TRY"
+ },
+ "TTD": {
+ "name": "ترینیداد اور ٹوباگو کا ڈالر",
+ "symbol": "TTD"
+ },
+ "TZS": {
+ "name": "تنزانیائی شلنگ",
+ "symbol": "TZS"
+ },
+ "TND": {
+ "name": "تیونیسیائی دینار",
+ "symbol": "TND"
+ },
+ "THB": {
+ "name": "تھائی باÛت",
+ "symbol": "฿"
+ },
+ "TOP": {
+ "name": "ٹونگن پانگا",
+ "symbol": "TOP"
+ },
+ "JPY": {
+ "name": "جاپانی ین",
+ "symbol": "JPÂ¥"
+ },
+ "GEL": {
+ "name": "جارجیائی لاری",
+ "symbol": "GEL"
+ },
+ "GIP": {
+ "name": "جبل الطارق پونڈ",
+ "symbol": "GIP"
+ },
+ "DJF": {
+ "name": "جبوتی Ùرانک",
+ "symbol": "DJF"
+ },
+ "JMD": {
+ "name": "جمائیکن ڈالر",
+ "symbol": "JMD"
+ },
+ "CZK": {
+ "name": "جمÛÙˆØ±ÛŒÛ Ú†ÛŒÚ© کرونا",
+ "symbol": "CZK"
+ },
+ "ZAR": {
+ "name": "جنوبی اÙریقی رانڈ",
+ "symbol": "ZAR"
+ },
+ "SSP": {
+ "name": "جنوبی سوڈانی پاؤنڈ",
+ "symbol": "SSP"
+ },
+ "KRW": {
+ "name": "جنوبی کوریائی وون",
+ "symbol": "â‚©"
+ },
+ "CLP": {
+ "name": "چلّین پیسÛ",
+ "symbol": "CLP"
+ },
+ "CNY": {
+ "name": "چینی یوآن",
+ "symbol": "CNÂ¥"
+ },
+ "DKK": {
+ "name": "ڈنمارک کرونر",
+ "symbol": "DKK"
+ },
+ "DOP": {
+ "name": "ڈومنیکن پیسو",
+ "symbol": "DOP"
+ },
+ "RWF": {
+ "name": "روانڈا کا Ùرانک",
+ "symbol": "RWF"
+ },
+ "RUB": {
+ "name": "روسی روبل",
+ "symbol": "RUB"
+ },
+ "RON": {
+ "name": "رومانیائی لیو",
+ "symbol": "RON"
+ },
+ "ZMW": {
+ "name": "زامبیائی کواچا",
+ "symbol": "ZMW"
+ },
+ "WST": {
+ "name": "ساموآ کا ٹالا",
+ "symbol": "WST"
+ },
+ "STD": {
+ "name": "ساؤ ٹوم اور پرنسپے ڈوبرا",
+ "symbol": "STD"
+ },
+ "RSD": {
+ "name": "سربین دینار",
+ "symbol": "RSD"
+ },
+ "LKR": {
+ "name": "سری لنکائی روپیÛ",
+ "symbol": "LKR"
+ },
+ "SCR": {
+ "name": "سشلی کا روپیÛ",
+ "symbol": "SCR"
+ },
+ "SAR": {
+ "name": "سعودی ریال",
+ "symbol": "SAR"
+ },
+ "SGD": {
+ "name": "سنگا پور ڈالر",
+ "symbol": "SGD"
+ },
+ "SZL": {
+ "name": "سوازی لیلانجینی",
+ "symbol": "SZL"
+ },
+ "SDG": {
+ "name": "سوڈانی پاؤنڈ",
+ "symbol": "SDG"
+ },
+ "SRD": {
+ "name": "سورینامی ڈالر",
+ "symbol": "SRD"
+ },
+ "SBD": {
+ "name": "سولومن آئلینڈز ڈالر",
+ "symbol": "SBD"
+ },
+ "SEK": {
+ "name": "سویڈن کرونا",
+ "symbol": "SEK"
+ },
+ "CHF": {
+ "name": "سوئس Ùرانکس",
+ "symbol": "CHF"
+ },
+ "SHP": {
+ "name": "سینٹ Ûیلینا پاؤنڈ",
+ "symbol": "SHP"
+ },
+ "SLL": {
+ "name": "سیئرا لیون لیون",
+ "symbol": "SLL"
+ },
+ "SYP": {
+ "name": "شامی پونڈ",
+ "symbol": "SYP"
+ },
+ "KPW": {
+ "name": "شمالی کوریائی وون",
+ "symbol": "KPW"
+ },
+ "SOS": {
+ "name": "صومالی شلنگ",
+ "symbol": "SOS"
+ },
+ "IQD": {
+ "name": "عراقی دینار",
+ "symbol": "IQD"
+ },
+ "OMR": {
+ "name": "عمانی ریال",
+ "symbol": "OMR"
+ },
+ "FKP": {
+ "name": "Ùاکلینڈ آئلینڈز پونڈ",
+ "symbol": "FKP"
+ },
+ "FJD": {
+ "name": "Ùجی کا ڈالر",
+ "symbol": "FJD"
+ },
+ "PHP": {
+ "name": "Ùلپائینی پیسÛ",
+ "symbol": "PHP"
+ },
+ "KZT": {
+ "name": "قزاخستانی ٹینگ",
+ "symbol": "KZT"
+ },
+ "QAR": {
+ "name": "قطری ریال",
+ "symbol": "QAR"
+ },
+ "CDF": {
+ "name": "کانگولیز Ùرانک",
+ "symbol": "CDF"
+ },
+ "KGS": {
+ "name": "کرغستانی سوم",
+ "symbol": "KGS"
+ },
+ "HRK": {
+ "name": "کروشین کونا",
+ "symbol": "HRK"
+ },
+ "KHR": {
+ "name": "کمبوڈیائی ریئل",
+ "symbol": "KHR"
+ },
+ "CAD": {
+ "name": "کنیڈین ڈالر",
+ "symbol": "CA$"
+ },
+ "CRC": {
+ "name": "کوسٹا ریکا کا کولن",
+ "symbol": "CRC"
+ },
+ "COP": {
+ "name": "کولمبین پیسÛ",
+ "symbol": "COP"
+ },
+ "KMF": {
+ "name": "کوموریئن Ùرانک",
+ "symbol": "KMF"
+ },
+ "KWD": {
+ "name": "کویتی دینار",
+ "symbol": "KWD"
+ },
+ "CVE": {
+ "name": "کیپ ورڈی کا اسکیوڈو",
+ "symbol": "CVE"
+ },
+ "KYD": {
+ "name": "کیمین آئلینڈز ڈالر",
+ "symbol": "KYD"
+ },
+ "KES": {
+ "name": "کینیائی شلنگ",
+ "symbol": "KES"
+ },
+ "CUP": {
+ "name": "کیوبا کا پیسو",
+ "symbol": "CUP"
+ },
+ "CUC": {
+ "name": "کیوبا کا قابل منتقلی پیسو",
+ "symbol": "CUC"
+ },
+ "GMD": {
+ "name": "گامبیا کا ڈلاسی",
+ "symbol": "GMD"
+ },
+ "GNF": {
+ "name": "Ú¯Ù†ÛŒ Ùرانک",
+ "symbol": "GNF"
+ },
+ "GTQ": {
+ "name": "گواٹے مالا کا کوئٹزل",
+ "symbol": "GTQ"
+ },
+ "GYD": {
+ "name": "گویانیز ڈالر",
+ "symbol": "GYD"
+ },
+ "GHS": {
+ "name": "گھانا کا سیڈی",
+ "symbol": "GHS"
+ },
+ "LAK": {
+ "name": "لاؤشیائی Ú©ÙÙ¾",
+ "symbol": "LAK"
+ },
+ "LRD": {
+ "name": "لائبریائی ڈالر",
+ "symbol": "LRD"
+ },
+ "LBP": {
+ "name": "لبنانی پونڈ",
+ "symbol": "LBP"
+ },
+ "LYD": {
+ "name": "لیبیائی دینار",
+ "symbol": "LYD"
+ },
+ "LTL": {
+ "name": "لیتھوینیائی لیٹاس",
+ "symbol": "LTL"
+ },
+ "LSL": {
+ "name": "لیسوتھو لوٹی",
+ "symbol": "LSL"
+ },
+ "MUR": {
+ "name": "ماریشس کا روپیÛ",
+ "symbol": "MUR"
+ },
+ "MDL": {
+ "name": "مالدووی لیو",
+ "symbol": "MDL"
+ },
+ "MVR": {
+ "name": "مالدیپ کا روÙÛŒÛ",
+ "symbol": "MVR"
+ },
+ "AED": {
+ "name": "Ù…ØªØ­Ø¯Û Ø¹Ø±Ø¨ اماراتی درÛÙ…",
+ "symbol": "AED"
+ },
+ "MAD": {
+ "name": "مراکشی درÛÙ…",
+ "symbol": "MAD"
+ },
+ "XCD": {
+ "name": "مشرقی کریبیا کا ڈالر",
+ "symbol": "EC$"
+ },
+ "EGP": {
+ "name": "مصری پاؤنڈ",
+ "symbol": "EGP"
+ },
+ "MKD": {
+ "name": "مقدونیائی دینار",
+ "symbol": "MKD"
+ },
+ "MGA": {
+ "name": "ملاگاسی اریاری",
+ "symbol": "MGA"
+ },
+ "MWK": {
+ "name": "ملاوی کواچا",
+ "symbol": "MWK"
+ },
+ "MYR": {
+ "name": "ملیشیائی رنگÙÙ¹",
+ "symbol": "MYR"
+ },
+ "MNT": {
+ "name": "منگولیائی ٹگرÙ",
+ "symbol": "MNT"
+ },
+ "MRO": {
+ "name": "موریطانیائی اوگوئیا",
+ "symbol": "MRO"
+ },
+ "MZN": {
+ "name": "موزامبیقی میٹیکل",
+ "symbol": "MZN"
+ },
+ "MMK": {
+ "name": "میانما کیاٹ",
+ "symbol": "MMK"
+ },
+ "MOP": {
+ "name": "میکانیز پٹاکا",
+ "symbol": "MOP"
+ },
+ "MXN": {
+ "name": "میکسیکی پیسÛ",
+ "symbol": "MX$"
+ },
+ "NOK": {
+ "name": "ناروے کرونر",
+ "symbol": "NOK"
+ },
+ "NAD": {
+ "name": "نامیبیائی ڈالر",
+ "symbol": "NAD"
+ },
+ "NGN": {
+ "name": "نائیجیریائی نائرا",
+ "symbol": "NGN"
+ },
+ "NIO": {
+ "name": "نکارا گوا کا کورڈوبا",
+ "symbol": "NIO"
+ },
+ "NPR": {
+ "name": "نیپالی روپیÛ",
+ "symbol": "NPR"
+ },
+ "ANG": {
+ "name": "نیدر لینڈز انٹیلیئن گلڈر",
+ "symbol": "ANG"
+ },
+ "TWD": {
+ "name": "نیو تائیوان ڈالر",
+ "symbol": "NT$"
+ },
+ "NZD": {
+ "name": "نیوزی لینڈ ڈالر",
+ "symbol": "NZ$"
+ },
+ "VND": {
+ "name": "ویتنامی ڈانگ",
+ "symbol": "â‚«"
+ },
+ "VEF": {
+ "name": "وینزویلا بولیور",
+ "symbol": "VEF"
+ },
+ "VUV": {
+ "name": "وینوواتو واتو",
+ "symbol": "VUV"
+ },
+ "HUF": {
+ "name": "Ûنگرین Ùورنٹ",
+ "symbol": "HUF"
+ },
+ "HNL": {
+ "name": "Ûونڈوران لیمپیرا",
+ "symbol": "HNL"
+ },
+ "HTG": {
+ "name": "Ûیتی کا گؤرڈی",
+ "symbol": "HTG"
+ },
+ "HKD": {
+ "name": "ھانگ کانگ ڈالر",
+ "symbol": "HK$"
+ },
+ "YER": {
+ "name": "یمنی ریال",
+ "symbol": "YER"
+ },
+ "EUR": {
+ "name": "یورو",
+ "symbol": "€"
+ },
+ "UYU": {
+ "name": "یوروگویان پیسو",
+ "symbol": "UYU"
+ },
+ "UAH": {
+ "name": "یوکرینیائی Ûریونیا",
+ "symbol": "UAH"
+ },
+ "UGX": {
+ "name": "یوگانڈا شلنگ",
+ "symbol": "UGX"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/currency/uz-Cyrl.json b/library/intl/resources/currency/uz-Cyrl.json
new file mode 100644
index 000000000..b5396c691
--- /dev/null
+++ b/library/intl/resources/currency/uz-Cyrl.json
@@ -0,0 +1,634 @@
+{
+ "AED": {
+ "name": "AED",
+ "symbol": "AED"
+ },
+ "AFN": {
+ "name": "AFN",
+ "symbol": "AFN"
+ },
+ "ALL": {
+ "name": "ALL",
+ "symbol": "ALL"
+ },
+ "AMD": {
+ "name": "AMD",
+ "symbol": "AMD"
+ },
+ "AOA": {
+ "name": "AOA",
+ "symbol": "AOA"
+ },
+ "AUD": {
+ "name": "AUD",
+ "symbol": "A$"
+ },
+ "AZN": {
+ "name": "AZN",
+ "symbol": "AZN"
+ },
+ "BAM": {
+ "name": "BAM",
+ "symbol": "BAM"
+ },
+ "BDT": {
+ "name": "BDT",
+ "symbol": "BDT"
+ },
+ "BGN": {
+ "name": "BGN",
+ "symbol": "BGN"
+ },
+ "BHD": {
+ "name": "BHD",
+ "symbol": "BHD"
+ },
+ "BIF": {
+ "name": "BIF",
+ "symbol": "BIF"
+ },
+ "BND": {
+ "name": "BND",
+ "symbol": "BND"
+ },
+ "BTN": {
+ "name": "BTN",
+ "symbol": "BTN"
+ },
+ "BWP": {
+ "name": "BWP",
+ "symbol": "BWP"
+ },
+ "BYR": {
+ "name": "BYR",
+ "symbol": "BYR"
+ },
+ "CDF": {
+ "name": "CDF",
+ "symbol": "CDF"
+ },
+ "CHF": {
+ "name": "CHF",
+ "symbol": "CHF"
+ },
+ "CVE": {
+ "name": "CVE",
+ "symbol": "CVE"
+ },
+ "CZK": {
+ "name": "CZK",
+ "symbol": "CZK"
+ },
+ "DJF": {
+ "name": "DJF",
+ "symbol": "DJF"
+ },
+ "DKK": {
+ "name": "DKK",
+ "symbol": "DKK"
+ },
+ "ERN": {
+ "name": "ERN",
+ "symbol": "ERN"
+ },
+ "ETB": {
+ "name": "ETB",
+ "symbol": "ETB"
+ },
+ "FJD": {
+ "name": "FJD",
+ "symbol": "FJD"
+ },
+ "GEL": {
+ "name": "GEL",
+ "symbol": "GEL"
+ },
+ "GHS": {
+ "name": "GHS",
+ "symbol": "GHS"
+ },
+ "GIP": {
+ "name": "GIP",
+ "symbol": "GIP"
+ },
+ "GMD": {
+ "name": "GMD",
+ "symbol": "GMD"
+ },
+ "GNF": {
+ "name": "GNF",
+ "symbol": "GNF"
+ },
+ "HKD": {
+ "name": "HKD",
+ "symbol": "HK$"
+ },
+ "HRK": {
+ "name": "HRK",
+ "symbol": "HRK"
+ },
+ "HUF": {
+ "name": "HUF",
+ "symbol": "HUF"
+ },
+ "IDR": {
+ "name": "IDR",
+ "symbol": "IDR"
+ },
+ "ILS": {
+ "name": "ILS",
+ "symbol": "₪"
+ },
+ "IQD": {
+ "name": "IQD",
+ "symbol": "IQD"
+ },
+ "IRR": {
+ "name": "IRR",
+ "symbol": "IRR"
+ },
+ "ISK": {
+ "name": "ISK",
+ "symbol": "ISK"
+ },
+ "JOD": {
+ "name": "JOD",
+ "symbol": "JOD"
+ },
+ "KES": {
+ "name": "KES",
+ "symbol": "KES"
+ },
+ "KGS": {
+ "name": "KGS",
+ "symbol": "KGS"
+ },
+ "KHR": {
+ "name": "KHR",
+ "symbol": "KHR"
+ },
+ "KMF": {
+ "name": "KMF",
+ "symbol": "KMF"
+ },
+ "KPW": {
+ "name": "KPW",
+ "symbol": "KPW"
+ },
+ "KRW": {
+ "name": "KRW",
+ "symbol": "â‚©"
+ },
+ "KWD": {
+ "name": "KWD",
+ "symbol": "KWD"
+ },
+ "KZT": {
+ "name": "KZT",
+ "symbol": "KZT"
+ },
+ "LAK": {
+ "name": "LAK",
+ "symbol": "LAK"
+ },
+ "LBP": {
+ "name": "LBP",
+ "symbol": "LBP"
+ },
+ "LKR": {
+ "name": "LKR",
+ "symbol": "LKR"
+ },
+ "LRD": {
+ "name": "LRD",
+ "symbol": "LRD"
+ },
+ "LSL": {
+ "name": "LSL",
+ "symbol": "LSL"
+ },
+ "LTL": {
+ "name": "LTL",
+ "symbol": "LTL"
+ },
+ "MDL": {
+ "name": "MDL",
+ "symbol": "MDL"
+ },
+ "MGA": {
+ "name": "MGA",
+ "symbol": "MGA"
+ },
+ "MKD": {
+ "name": "MKD",
+ "symbol": "MKD"
+ },
+ "MMK": {
+ "name": "MMK",
+ "symbol": "MMK"
+ },
+ "MNT": {
+ "name": "MNT",
+ "symbol": "MNT"
+ },
+ "MOP": {
+ "name": "MOP",
+ "symbol": "MOP"
+ },
+ "MRO": {
+ "name": "MRO",
+ "symbol": "MRO"
+ },
+ "MUR": {
+ "name": "MUR",
+ "symbol": "MUR"
+ },
+ "MVR": {
+ "name": "MVR",
+ "symbol": "MVR"
+ },
+ "MWK": {
+ "name": "MWK",
+ "symbol": "MWK"
+ },
+ "MYR": {
+ "name": "MYR",
+ "symbol": "MYR"
+ },
+ "MZN": {
+ "name": "MZN",
+ "symbol": "MZN"
+ },
+ "NAD": {
+ "name": "NAD",
+ "symbol": "NAD"
+ },
+ "NGN": {
+ "name": "NGN",
+ "symbol": "NGN"
+ },
+ "NOK": {
+ "name": "NOK",
+ "symbol": "NOK"
+ },
+ "NPR": {
+ "name": "NPR",
+ "symbol": "NPR"
+ },
+ "NZD": {
+ "name": "NZD",
+ "symbol": "NZ$"
+ },
+ "OMR": {
+ "name": "OMR",
+ "symbol": "OMR"
+ },
+ "PGK": {
+ "name": "PGK",
+ "symbol": "PGK"
+ },
+ "PHP": {
+ "name": "PHP",
+ "symbol": "PHP"
+ },
+ "PKR": {
+ "name": "PKR",
+ "symbol": "PKR"
+ },
+ "PLN": {
+ "name": "PLN",
+ "symbol": "PLN"
+ },
+ "QAR": {
+ "name": "QAR",
+ "symbol": "QAR"
+ },
+ "RON": {
+ "name": "RON",
+ "symbol": "RON"
+ },
+ "RSD": {
+ "name": "RSD",
+ "symbol": "RSD"
+ },
+ "RWF": {
+ "name": "RWF",
+ "symbol": "RWF"
+ },
+ "SAR": {
+ "name": "SAR",
+ "symbol": "SAR"
+ },
+ "SBD": {
+ "name": "SBD",
+ "symbol": "SBD"
+ },
+ "SCR": {
+ "name": "SCR",
+ "symbol": "SCR"
+ },
+ "SDG": {
+ "name": "SDG",
+ "symbol": "SDG"
+ },
+ "SEK": {
+ "name": "SEK",
+ "symbol": "SEK"
+ },
+ "SGD": {
+ "name": "SGD",
+ "symbol": "SGD"
+ },
+ "SHP": {
+ "name": "SHP",
+ "symbol": "SHP"
+ },
+ "SLL": {
+ "name": "SLL",
+ "symbol": "SLL"
+ },
+ "SOS": {
+ "name": "SOS",
+ "symbol": "SOS"
+ },
+ "SSP": {
+ "name": "SSP",
+ "symbol": "SSP"
+ },
+ "STD": {
+ "name": "STD",
+ "symbol": "STD"
+ },
+ "SVC": {
+ "name": "SVC",
+ "symbol": "SVC"
+ },
+ "SYP": {
+ "name": "SYP",
+ "symbol": "SYP"
+ },
+ "SZL": {
+ "name": "SZL",
+ "symbol": "SZL"
+ },
+ "THB": {
+ "name": "THB",
+ "symbol": "฿"
+ },
+ "TJS": {
+ "name": "TJS",
+ "symbol": "TJS"
+ },
+ "TMT": {
+ "name": "TMT",
+ "symbol": "TMT"
+ },
+ "TND": {
+ "name": "TND",
+ "symbol": "TND"
+ },
+ "TOP": {
+ "name": "TOP",
+ "symbol": "TOP"
+ },
+ "TRY": {
+ "name": "TRY",
+ "symbol": "TRY"
+ },
+ "TWD": {
+ "name": "TWD",
+ "symbol": "NT$"
+ },
+ "TZS": {
+ "name": "TZS",
+ "symbol": "TZS"
+ },
+ "UAH": {
+ "name": "UAH",
+ "symbol": "UAH"
+ },
+ "UGX": {
+ "name": "UGX",
+ "symbol": "UGX"
+ },
+ "VND": {
+ "name": "VND",
+ "symbol": "â‚«"
+ },
+ "VUV": {
+ "name": "VUV",
+ "symbol": "VUV"
+ },
+ "WST": {
+ "name": "WST",
+ "symbol": "WST"
+ },
+ "XAF": {
+ "name": "XAF",
+ "symbol": "FCFA"
+ },
+ "XOF": {
+ "name": "XOF",
+ "symbol": "CFA"
+ },
+ "XPF": {
+ "name": "XPF",
+ "symbol": "CFPF"
+ },
+ "YER": {
+ "name": "YER",
+ "symbol": "YER"
+ },
+ "ZAR": {
+ "name": "ZAR",
+ "symbol": "ZAR"
+ },
+ "ZMW": {
+ "name": "ZMW",
+ "symbol": "ZMW"
+ },
+ "ZWL": {
+ "name": "ZWL",
+ "symbol": "ZWL"
+ },
+ "USD": {
+ "name": "ÐҚШ доллари",
+ "symbol": "US$"
+ },
+ "ARS": {
+ "name": "Ðргентина пеÑоÑи",
+ "symbol": "ARS"
+ },
+ "AWG": {
+ "name": "Ðруба флорини",
+ "symbol": "AWG"
+ },
+ "BSD": {
+ "name": "Багама доллари",
+ "symbol": "BSD"
+ },
+ "BBD": {
+ "name": "Ð‘Ð°Ñ€Ð±Ð°Ð´Ð¾Ñ Ð´Ð¾Ð»Ð»Ð°Ñ€Ð¸",
+ "symbol": "BBD"
+ },
+ "BZD": {
+ "name": "Белиз доллари",
+ "symbol": "BZD"
+ },
+ "BMD": {
+ "name": "Бермуда доллари",
+ "symbol": "BMD"
+ },
+ "BOB": {
+ "name": "Ð‘Ð¾Ð»Ð¸Ð²Ð¸Ñ Ð±Ð¾Ð»Ð²Ð¸Ð°Ð½Ð¸",
+ "symbol": "BOB"
+ },
+ "BRL": {
+ "name": "Бразил реали",
+ "symbol": "R$"
+ },
+ "VEF": {
+ "name": "ВенеÑуÑла боливари",
+ "symbol": "VEF"
+ },
+ "HTG": {
+ "name": "Гаити гурдаÑи",
+ "symbol": "HTG"
+ },
+ "GYD": {
+ "name": "ГаÑна доллари",
+ "symbol": "GYD"
+ },
+ "GTQ": {
+ "name": "Гватемала кветзали",
+ "symbol": "GTQ"
+ },
+ "ANG": {
+ "name": "Голланд Ðнтил гульдени",
+ "symbol": "ANG"
+ },
+ "HNL": {
+ "name": "Ð“Ð¾Ð½Ð´ÑƒÑ€Ð°Ñ Ð»ÐµÐ¼Ð¿Ð¸Ñ€Ð°Ñи",
+ "symbol": "HNL"
+ },
+ "DOP": {
+ "name": "Доминикан пеÑоÑи",
+ "symbol": "DOP"
+ },
+ "EUR": {
+ "name": "Евро",
+ "symbol": "€"
+ },
+ "DZD": {
+ "name": "Жазоир динори",
+ "symbol": "DZD"
+ },
+ "GBP": {
+ "name": "Инглиз фунт Ñтерлинги",
+ "symbol": "£"
+ },
+ "KYD": {
+ "name": "Кайман ороли Доллари",
+ "symbol": "KYD"
+ },
+ "CAD": {
+ "name": "Канада доллари",
+ "symbol": "CA$"
+ },
+ "COP": {
+ "name": "ÐšÐ¾Ð»ÑƒÐ¼Ð±Ð¸Ñ Ð¿ÐµÑоÑи",
+ "symbol": "COP"
+ },
+ "CRC": {
+ "name": "КоÑта-Рика колони",
+ "symbol": "CRC"
+ },
+ "CUC": {
+ "name": "Куба Ðйирбошлаш пеÑоÑи",
+ "symbol": "CUC"
+ },
+ "CUP": {
+ "name": "Куба пеÑоÑи",
+ "symbol": "CUP"
+ },
+ "LYD": {
+ "name": "Ð›Ð¸Ð²Ð¸Ñ Ð´Ð¸Ð½Ð¾Ñ€Ð¸",
+ "symbol": "LYD"
+ },
+ "MAD": {
+ "name": "Марокаш дирҳами",
+ "symbol": "MAD"
+ },
+ "MXN": {
+ "name": "МекÑика пеÑоÑи",
+ "symbol": "MX$"
+ },
+ "EGP": {
+ "name": "МиÑÑ€ фунти",
+ "symbol": "EGP"
+ },
+ "NIO": {
+ "name": "Ðикарагуа кордобаÑи",
+ "symbol": "NIO"
+ },
+ "PAB": {
+ "name": "Панама бальбоаÑи",
+ "symbol": "PAB"
+ },
+ "PYG": {
+ "name": "Парагвай гуарани",
+ "symbol": "PYG"
+ },
+ "PEN": {
+ "name": "Перу нуево Ñол",
+ "symbol": "PEN"
+ },
+ "RUB": {
+ "name": "Ð ÑƒÑ Ñ€ÑƒÐ±Ð»Ð¸",
+ "symbol": "RUB"
+ },
+ "SRD": {
+ "name": "Суринам доллари",
+ "symbol": "SRD"
+ },
+ "TTD": {
+ "name": "Тринидад ва Тобаго доллари",
+ "symbol": "TTD"
+ },
+ "UYU": {
+ "name": "Уругвай пеÑоÑи",
+ "symbol": "UYU"
+ },
+ "UZS": {
+ "name": "ЎзбекиÑтон Ñўм",
+ "symbol": "Ñўм"
+ },
+ "FKP": {
+ "name": "Фолькленд ороли фунти",
+ "symbol": "FKP"
+ },
+ "CNY": {
+ "name": "Хитой юани",
+ "symbol": "CNÂ¥"
+ },
+ "INR": {
+ "name": "Ҳинд рупиÑÑи",
+ "symbol": "₹"
+ },
+ "CLP": {
+ "name": "Чили пеÑоÑи",
+ "symbol": "CLP"
+ },
+ "XCD": {
+ "name": "Шарқий Кариб доллари",
+ "symbol": "EC$"
+ },
+ "JMD": {
+ "name": "Ямайка доллари",
+ "symbol": "JMD"
+ },
+ "JPY": {
+ "name": "Япон йенаÑи",
+ "symbol": "JPÂ¥"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/currency/uz.json b/library/intl/resources/currency/uz.json
new file mode 100644
index 000000000..e9d858c75
--- /dev/null
+++ b/library/intl/resources/currency/uz.json
@@ -0,0 +1,634 @@
+{
+ "AED": {
+ "name": "AED",
+ "symbol": "AED"
+ },
+ "AFN": {
+ "name": "AFN",
+ "symbol": "AFN"
+ },
+ "ALL": {
+ "name": "Alban leki",
+ "symbol": "ALL"
+ },
+ "AMD": {
+ "name": "AMD",
+ "symbol": "AMD"
+ },
+ "AOA": {
+ "name": "AOA",
+ "symbol": "AOA"
+ },
+ "USD": {
+ "name": "AQSH dollari",
+ "symbol": "US$"
+ },
+ "ARS": {
+ "name": "Argentina pesosi",
+ "symbol": "ARS"
+ },
+ "AWG": {
+ "name": "Aruba florini",
+ "symbol": "AWG"
+ },
+ "AUD": {
+ "name": "Avstraliya dollari",
+ "symbol": "A$"
+ },
+ "AZN": {
+ "name": "AZN",
+ "symbol": "AZN"
+ },
+ "BSD": {
+ "name": "Bagama dollari",
+ "symbol": "BSD"
+ },
+ "BBD": {
+ "name": "Barbados dollari",
+ "symbol": "BBD"
+ },
+ "BDT": {
+ "name": "BDT",
+ "symbol": "BDT"
+ },
+ "BYR": {
+ "name": "Belarus rubli",
+ "symbol": "BYR"
+ },
+ "BZD": {
+ "name": "Beliz dollari",
+ "symbol": "BZD"
+ },
+ "BMD": {
+ "name": "Bermuda dollari",
+ "symbol": "BMD"
+ },
+ "BHD": {
+ "name": "BHD",
+ "symbol": "BHD"
+ },
+ "BIF": {
+ "name": "BIF",
+ "symbol": "BIF"
+ },
+ "BND": {
+ "name": "BND",
+ "symbol": "BND"
+ },
+ "BGN": {
+ "name": "Bolgariya levi",
+ "symbol": "BGN"
+ },
+ "BOB": {
+ "name": "Boliviya bolivyani",
+ "symbol": "BOB"
+ },
+ "BAM": {
+ "name": "Bosniya va Gertsogovina ayriboshlash markasi",
+ "symbol": "BAM"
+ },
+ "BRL": {
+ "name": "Brazil reali",
+ "symbol": "R$"
+ },
+ "BTN": {
+ "name": "BTN",
+ "symbol": "BTN"
+ },
+ "BWP": {
+ "name": "BWP",
+ "symbol": "BWP"
+ },
+ "CDF": {
+ "name": "CDF",
+ "symbol": "CDF"
+ },
+ "CZK": {
+ "name": "Chex kronasi",
+ "symbol": "CZK"
+ },
+ "CLP": {
+ "name": "Chili pesosi",
+ "symbol": "CLP"
+ },
+ "CVE": {
+ "name": "CVE",
+ "symbol": "CVE"
+ },
+ "DKK": {
+ "name": "Daniya kronasi",
+ "symbol": "DKK"
+ },
+ "DJF": {
+ "name": "DJF",
+ "symbol": "DJF"
+ },
+ "DOP": {
+ "name": "Dominikan pesosi",
+ "symbol": "DOP"
+ },
+ "ERN": {
+ "name": "ERN",
+ "symbol": "ERN"
+ },
+ "ETB": {
+ "name": "ETB",
+ "symbol": "ETB"
+ },
+ "FJD": {
+ "name": "FJD",
+ "symbol": "FJD"
+ },
+ "FKP": {
+ "name": "Folklend oroli funti",
+ "symbol": "FKP"
+ },
+ "HTG": {
+ "name": "Gaiti gurdasi",
+ "symbol": "HTG"
+ },
+ "GYD": {
+ "name": "Gayana dollari",
+ "symbol": "GYD"
+ },
+ "GEL": {
+ "name": "GEL",
+ "symbol": "GEL"
+ },
+ "GHS": {
+ "name": "GHS",
+ "symbol": "GHS"
+ },
+ "GIP": {
+ "name": "Gibraltar funti",
+ "symbol": "GIP"
+ },
+ "GMD": {
+ "name": "GMD",
+ "symbol": "GMD"
+ },
+ "GNF": {
+ "name": "GNF",
+ "symbol": "GNF"
+ },
+ "ANG": {
+ "name": "Golland Antil guldeni",
+ "symbol": "ANG"
+ },
+ "HNL": {
+ "name": "Gonduras lempirasi",
+ "symbol": "HNL"
+ },
+ "HKD": {
+ "name": "Gonkong dollari",
+ "symbol": "HK$"
+ },
+ "GTQ": {
+ "name": "Gvatemala kvetzali",
+ "symbol": "GTQ"
+ },
+ "INR": {
+ "name": "Hind rupiyasi",
+ "symbol": "₹"
+ },
+ "HRK": {
+ "name": "Horvat kunasi",
+ "symbol": "HRK"
+ },
+ "ILS": {
+ "name": "ILS",
+ "symbol": "₪"
+ },
+ "IDR": {
+ "name": "Indoneziya rupiyasi",
+ "symbol": "IDR"
+ },
+ "GBP": {
+ "name": "Ingliz funt sterlingi",
+ "symbol": "£"
+ },
+ "IQD": {
+ "name": "IQD",
+ "symbol": "IQD"
+ },
+ "IRR": {
+ "name": "IRR",
+ "symbol": "IRR"
+ },
+ "ISK": {
+ "name": "Islandiya kronasi",
+ "symbol": "ISK"
+ },
+ "ZAR": {
+ "name": "Janubiy Afrika randi",
+ "symbol": "ZAR"
+ },
+ "KRW": {
+ "name": "Janubiy Koreya voni",
+ "symbol": "â‚©"
+ },
+ "SSP": {
+ "name": "Janubiy Sudan funti",
+ "symbol": "SSP"
+ },
+ "DZD": {
+ "name": "Jazoir dinori",
+ "symbol": "DZD"
+ },
+ "JOD": {
+ "name": "JOD",
+ "symbol": "JOD"
+ },
+ "CAD": {
+ "name": "Kanada dollari",
+ "symbol": "CA$"
+ },
+ "KYD": {
+ "name": "Kayman Orollari Dollari",
+ "symbol": "KYD"
+ },
+ "KES": {
+ "name": "KES",
+ "symbol": "KES"
+ },
+ "KGS": {
+ "name": "KGS",
+ "symbol": "KGS"
+ },
+ "KHR": {
+ "name": "KHR",
+ "symbol": "KHR"
+ },
+ "KMF": {
+ "name": "KMF",
+ "symbol": "KMF"
+ },
+ "COP": {
+ "name": "Kolumbiya pesosi",
+ "symbol": "COP"
+ },
+ "CRC": {
+ "name": "Kosta-Rika koloni",
+ "symbol": "CRC"
+ },
+ "KPW": {
+ "name": "KPW",
+ "symbol": "KPW"
+ },
+ "CUC": {
+ "name": "Kuba Ayirboshlash pesosi",
+ "symbol": "CUC"
+ },
+ "CUP": {
+ "name": "Kuba pesosi",
+ "symbol": "CUP"
+ },
+ "KWD": {
+ "name": "KWD",
+ "symbol": "KWD"
+ },
+ "KZT": {
+ "name": "KZT",
+ "symbol": "KZT"
+ },
+ "LAK": {
+ "name": "LAK",
+ "symbol": "LAK"
+ },
+ "LBP": {
+ "name": "LBP",
+ "symbol": "LBP"
+ },
+ "LTL": {
+ "name": "Litva liti",
+ "symbol": "LTL"
+ },
+ "LYD": {
+ "name": "Liviya dinori",
+ "symbol": "LYD"
+ },
+ "LKR": {
+ "name": "LKR",
+ "symbol": "LKR"
+ },
+ "LRD": {
+ "name": "LRD",
+ "symbol": "LRD"
+ },
+ "LSL": {
+ "name": "LSL",
+ "symbol": "LSL"
+ },
+ "MKD": {
+ "name": "Makedoniya dinori",
+ "symbol": "MKD"
+ },
+ "MAD": {
+ "name": "Marokash dirhami",
+ "symbol": "MAD"
+ },
+ "MXN": {
+ "name": "Meksika pesosi",
+ "symbol": "MX$"
+ },
+ "MGA": {
+ "name": "MGA",
+ "symbol": "MGA"
+ },
+ "EGP": {
+ "name": "Misr funti",
+ "symbol": "EGP"
+ },
+ "MMK": {
+ "name": "MMK",
+ "symbol": "MMK"
+ },
+ "MNT": {
+ "name": "MNT",
+ "symbol": "MNT"
+ },
+ "MDL": {
+ "name": "Moldova leusi",
+ "symbol": "MDL"
+ },
+ "MOP": {
+ "name": "MOP",
+ "symbol": "MOP"
+ },
+ "MRO": {
+ "name": "MRO",
+ "symbol": "MRO"
+ },
+ "MUR": {
+ "name": "MUR",
+ "symbol": "MUR"
+ },
+ "MVR": {
+ "name": "MVR",
+ "symbol": "MVR"
+ },
+ "MWK": {
+ "name": "MWK",
+ "symbol": "MWK"
+ },
+ "MYR": {
+ "name": "MYR",
+ "symbol": "MYR"
+ },
+ "MZN": {
+ "name": "MZN",
+ "symbol": "MZN"
+ },
+ "NAD": {
+ "name": "NAD",
+ "symbol": "NAD"
+ },
+ "NGN": {
+ "name": "NGN",
+ "symbol": "NGN"
+ },
+ "NIO": {
+ "name": "Nikaragua kordobasi",
+ "symbol": "NIO"
+ },
+ "NOK": {
+ "name": "Norvegiya kronasi",
+ "symbol": "NOK"
+ },
+ "NPR": {
+ "name": "NPR",
+ "symbol": "NPR"
+ },
+ "NZD": {
+ "name": "NZD",
+ "symbol": "NZ$"
+ },
+ "UZS": {
+ "name": "Oʻzbekiston soʻm",
+ "symbol": "soʻm"
+ },
+ "OMR": {
+ "name": "OMR",
+ "symbol": "OMR"
+ },
+ "PAB": {
+ "name": "Panama balboasi",
+ "symbol": "PAB"
+ },
+ "PYG": {
+ "name": "Paragvay guarani",
+ "symbol": "PYG"
+ },
+ "PEN": {
+ "name": "Peru noyvo soli",
+ "symbol": "PEN"
+ },
+ "PGK": {
+ "name": "PGK",
+ "symbol": "PGK"
+ },
+ "PHP": {
+ "name": "PHP",
+ "symbol": "PHP"
+ },
+ "PKR": {
+ "name": "PKR",
+ "symbol": "PKR"
+ },
+ "PLN": {
+ "name": "Polsha zlotiyi",
+ "symbol": "PLN"
+ },
+ "QAR": {
+ "name": "QAR",
+ "symbol": "QAR"
+ },
+ "RON": {
+ "name": "Rumin leusi",
+ "symbol": "RON"
+ },
+ "RUB": {
+ "name": "Rus rubli",
+ "symbol": "RUB"
+ },
+ "RWF": {
+ "name": "RWF",
+ "symbol": "RWF"
+ },
+ "SAR": {
+ "name": "Saudiya Arabistoni riyoli",
+ "symbol": "SAR"
+ },
+ "SBD": {
+ "name": "SBD",
+ "symbol": "SBD"
+ },
+ "SCR": {
+ "name": "SCR",
+ "symbol": "SCR"
+ },
+ "RSD": {
+ "name": "Serbiya dinori",
+ "symbol": "RSD"
+ },
+ "SGD": {
+ "name": "SGD",
+ "symbol": "SGD"
+ },
+ "XCD": {
+ "name": "Sharqiy Karib dollari",
+ "symbol": "EC$"
+ },
+ "SHP": {
+ "name": "SHP",
+ "symbol": "SHP"
+ },
+ "CHF": {
+ "name": "Shvetsariya franki",
+ "symbol": "CHF"
+ },
+ "SEK": {
+ "name": "Shvetsiya kronasi",
+ "symbol": "SEK"
+ },
+ "SLL": {
+ "name": "SLL",
+ "symbol": "SLL"
+ },
+ "SOS": {
+ "name": "SOS",
+ "symbol": "SOS"
+ },
+ "STD": {
+ "name": "STD",
+ "symbol": "STD"
+ },
+ "SDG": {
+ "name": "Sudan funti",
+ "symbol": "SDG"
+ },
+ "SRD": {
+ "name": "Surinam dollari",
+ "symbol": "SRD"
+ },
+ "SVC": {
+ "name": "SVC",
+ "symbol": "SVC"
+ },
+ "SYP": {
+ "name": "SYP",
+ "symbol": "SYP"
+ },
+ "SZL": {
+ "name": "SZL",
+ "symbol": "SZL"
+ },
+ "THB": {
+ "name": "Tayland bahti",
+ "symbol": "฿"
+ },
+ "TJS": {
+ "name": "TJS",
+ "symbol": "TJS"
+ },
+ "TMT": {
+ "name": "TMT",
+ "symbol": "TMT"
+ },
+ "TOP": {
+ "name": "TOP",
+ "symbol": "TOP"
+ },
+ "TTD": {
+ "name": "Trinidad va Tobago dollari",
+ "symbol": "TTD"
+ },
+ "TND": {
+ "name": "Tunis dinori",
+ "symbol": "TND"
+ },
+ "TRY": {
+ "name": "Turk lirasi",
+ "symbol": "TRY"
+ },
+ "TZS": {
+ "name": "TZS",
+ "symbol": "TZS"
+ },
+ "UGX": {
+ "name": "UGX",
+ "symbol": "UGX"
+ },
+ "UAH": {
+ "name": "Ukrain grivnasi",
+ "symbol": "UAH"
+ },
+ "UYU": {
+ "name": "Urugvay pesosi",
+ "symbol": "UYU"
+ },
+ "VEF": {
+ "name": "Venesuela bolivari",
+ "symbol": "VEF"
+ },
+ "HUF": {
+ "name": "Vengriya forinti",
+ "symbol": "HUF"
+ },
+ "VND": {
+ "name": "VND",
+ "symbol": "â‚«"
+ },
+ "VUV": {
+ "name": "VUV",
+ "symbol": "VUV"
+ },
+ "WST": {
+ "name": "WST",
+ "symbol": "WST"
+ },
+ "XAF": {
+ "name": "XAF",
+ "symbol": "FCFA"
+ },
+ "CNY": {
+ "name": "Xitoy yuani",
+ "symbol": "CNÂ¥"
+ },
+ "XOF": {
+ "name": "XOF",
+ "symbol": "CFA"
+ },
+ "XPF": {
+ "name": "XPF",
+ "symbol": "CFPF"
+ },
+ "JMD": {
+ "name": "Yamayka dollari",
+ "symbol": "JMD"
+ },
+ "TWD": {
+ "name": "Yangi Tayvan dollari",
+ "symbol": "NT$"
+ },
+ "JPY": {
+ "name": "Yapon yenasi",
+ "symbol": "JPÂ¥"
+ },
+ "YER": {
+ "name": "YER",
+ "symbol": "YER"
+ },
+ "EUR": {
+ "name": "Yevro",
+ "symbol": "€"
+ },
+ "ZMW": {
+ "name": "ZMW",
+ "symbol": "ZMW"
+ },
+ "ZWL": {
+ "name": "ZWL",
+ "symbol": "ZWL"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/currency/vai-Latn.json b/library/intl/resources/currency/vai-Latn.json
new file mode 100644
index 000000000..cfdd565b8
--- /dev/null
+++ b/library/intl/resources/currency/vai-Latn.json
@@ -0,0 +1,634 @@
+{
+ "ZAR": {
+ "name": "Afirika Kɔi Leŋŋɛ lɔ Randi",
+ "symbol": "ZAR"
+ },
+ "XOF": {
+ "name": "Ãfíríka Tele Jíí Sifa",
+ "symbol": "CFA"
+ },
+ "XAF": {
+ "name": "Ãfíríka TÉ› Sifa",
+ "symbol": "FCFA"
+ },
+ "AFN": {
+ "name": "AFN",
+ "symbol": "AFN"
+ },
+ "DZD": {
+ "name": "Agiriya Dina",
+ "symbol": "DZD"
+ },
+ "ALL": {
+ "name": "ALL",
+ "symbol": "ALL"
+ },
+ "AMD": {
+ "name": "AMD",
+ "symbol": "AMD"
+ },
+ "ANG": {
+ "name": "ANG",
+ "symbol": "ANG"
+ },
+ "AOA": {
+ "name": "Angola Kuwaŋza",
+ "symbol": "AOA"
+ },
+ "ARS": {
+ "name": "ARS",
+ "symbol": "ARS"
+ },
+ "AWG": {
+ "name": "AWG",
+ "symbol": "AWG"
+ },
+ "AZN": {
+ "name": "AZN",
+ "symbol": "AZN"
+ },
+ "BAM": {
+ "name": "BAM",
+ "symbol": "BAM"
+ },
+ "BBD": {
+ "name": "BBD",
+ "symbol": "BBD"
+ },
+ "BDT": {
+ "name": "BDT",
+ "symbol": "BDT"
+ },
+ "BGN": {
+ "name": "BGN",
+ "symbol": "BGN"
+ },
+ "BHD": {
+ "name": "Bharɛŋ Dina",
+ "symbol": "BHD"
+ },
+ "BWP": {
+ "name": "Bhosuwana Pula",
+ "symbol": "BWP"
+ },
+ "BIF": {
+ "name": "Bhurundi Furaŋki",
+ "symbol": "BIF"
+ },
+ "BMD": {
+ "name": "BMD",
+ "symbol": "BMD"
+ },
+ "BND": {
+ "name": "BND",
+ "symbol": "BND"
+ },
+ "BOB": {
+ "name": "BOB",
+ "symbol": "BOB"
+ },
+ "BRL": {
+ "name": "BRL",
+ "symbol": "R$"
+ },
+ "BSD": {
+ "name": "BSD",
+ "symbol": "BSD"
+ },
+ "BTN": {
+ "name": "BTN",
+ "symbol": "BTN"
+ },
+ "BYR": {
+ "name": "BYR",
+ "symbol": "BYR"
+ },
+ "BZD": {
+ "name": "BZD",
+ "symbol": "BZD"
+ },
+ "CNY": {
+ "name": "Chaníĩ Yuwaŋ Rɛŋmimbi",
+ "symbol": "CNÂ¥"
+ },
+ "CLP": {
+ "name": "CLP",
+ "symbol": "CLP"
+ },
+ "COP": {
+ "name": "COP",
+ "symbol": "COP"
+ },
+ "CRC": {
+ "name": "CRC",
+ "symbol": "CRC"
+ },
+ "CUC": {
+ "name": "CUC",
+ "symbol": "CUC"
+ },
+ "CUP": {
+ "name": "CUP",
+ "symbol": "CUP"
+ },
+ "CZK": {
+ "name": "CZK",
+ "symbol": "CZK"
+ },
+ "DKK": {
+ "name": "DKK",
+ "symbol": "DKK"
+ },
+ "DOP": {
+ "name": "DOP",
+ "symbol": "DOP"
+ },
+ "ERN": {
+ "name": "Æritera Nakifa",
+ "symbol": "ERN"
+ },
+ "CVE": {
+ "name": "Æsikudo CabovÉ›diyano",
+ "symbol": "CVE"
+ },
+ "FJD": {
+ "name": "FJD",
+ "symbol": "FJD"
+ },
+ "FKP": {
+ "name": "FKP",
+ "symbol": "FKP"
+ },
+ "GMD": {
+ "name": "Gambiya Dalasi",
+ "symbol": "GMD"
+ },
+ "GEL": {
+ "name": "GEL",
+ "symbol": "GEL"
+ },
+ "GHS": {
+ "name": "GHS",
+ "symbol": "GHS"
+ },
+ "GIP": {
+ "name": "GIP",
+ "symbol": "GIP"
+ },
+ "GNF": {
+ "name": "GNF",
+ "symbol": "GNF"
+ },
+ "GTQ": {
+ "name": "GTQ",
+ "symbol": "GTQ"
+ },
+ "GYD": {
+ "name": "GYD",
+ "symbol": "GYD"
+ },
+ "HKD": {
+ "name": "HKD",
+ "symbol": "HK$"
+ },
+ "HNL": {
+ "name": "HNL",
+ "symbol": "HNL"
+ },
+ "HRK": {
+ "name": "HRK",
+ "symbol": "HRK"
+ },
+ "HTG": {
+ "name": "HTG",
+ "symbol": "HTG"
+ },
+ "HUF": {
+ "name": "HUF",
+ "symbol": "HUF"
+ },
+ "IDR": {
+ "name": "IDR",
+ "symbol": "IDR"
+ },
+ "ILS": {
+ "name": "ILS",
+ "symbol": "₪"
+ },
+ "INR": {
+ "name": "Ãndiya Rupi",
+ "symbol": "₹"
+ },
+ "IQD": {
+ "name": "IQD",
+ "symbol": "IQD"
+ },
+ "IRR": {
+ "name": "IRR",
+ "symbol": "IRR"
+ },
+ "ISK": {
+ "name": "ISK",
+ "symbol": "ISK"
+ },
+ "ETB": {
+ "name": "Ãtiyopiya Bhii",
+ "symbol": "ETB"
+ },
+ "JPY": {
+ "name": "Japaniĩ Yɛŋ",
+ "symbol": "JPÂ¥"
+ },
+ "GBP": {
+ "name": "Jengési Pɔɔ̃ SitÉ›ÌliÅ‹",
+ "symbol": "£"
+ },
+ "DJF": {
+ "name": "Jibhuti Furaŋki",
+ "symbol": "DJF"
+ },
+ "JMD": {
+ "name": "JMD",
+ "symbol": "JMD"
+ },
+ "JOD": {
+ "name": "JOD",
+ "symbol": "JOD"
+ },
+ "CAD": {
+ "name": "Kanada Dala",
+ "symbol": "CA$"
+ },
+ "KES": {
+ "name": "Kénya Siyeŋ",
+ "symbol": "KES"
+ },
+ "KGS": {
+ "name": "KGS",
+ "symbol": "KGS"
+ },
+ "KHR": {
+ "name": "KHR",
+ "symbol": "KHR"
+ },
+ "KMF": {
+ "name": "Komoro Furaŋki",
+ "symbol": "KMF"
+ },
+ "CDF": {
+ "name": "Kóngo Furaŋki",
+ "symbol": "CDF"
+ },
+ "KPW": {
+ "name": "KPW",
+ "symbol": "KPW"
+ },
+ "KRW": {
+ "name": "KRW",
+ "symbol": "â‚©"
+ },
+ "KWD": {
+ "name": "KWD",
+ "symbol": "KWD"
+ },
+ "KYD": {
+ "name": "KYD",
+ "symbol": "KYD"
+ },
+ "KZT": {
+ "name": "KZT",
+ "symbol": "KZT"
+ },
+ "SAR": {
+ "name": "Lahabu Sawodi Riya",
+ "symbol": "SAR"
+ },
+ "LRD": {
+ "name": "Laibhiya Dala",
+ "symbol": "$"
+ },
+ "LAK": {
+ "name": "LAK",
+ "symbol": "LAK"
+ },
+ "LBP": {
+ "name": "LBP",
+ "symbol": "LBP"
+ },
+ "LYD": {
+ "name": "Libhiya Dina",
+ "symbol": "LYD"
+ },
+ "SZL": {
+ "name": "Lilangeni",
+ "symbol": "SZL"
+ },
+ "LSL": {
+ "name": "Lisóto Loti",
+ "symbol": "LSL"
+ },
+ "SLL": {
+ "name": "Liyɔɔ̀",
+ "symbol": "SLL"
+ },
+ "LKR": {
+ "name": "LKR",
+ "symbol": "LKR"
+ },
+ "LTL": {
+ "name": "LTL",
+ "symbol": "LTL"
+ },
+ "MGA": {
+ "name": "Malagasi Ariyari",
+ "symbol": "MGA"
+ },
+ "MWK": {
+ "name": "Malawi Kuwacha",
+ "symbol": "MWK"
+ },
+ "MDL": {
+ "name": "MDL",
+ "symbol": "MDL"
+ },
+ "EGP": {
+ "name": "Míséla Pɔɔ̃",
+ "symbol": "EGP"
+ },
+ "MKD": {
+ "name": "MKD",
+ "symbol": "MKD"
+ },
+ "MMK": {
+ "name": "MMK",
+ "symbol": "MMK"
+ },
+ "MNT": {
+ "name": "MNT",
+ "symbol": "MNT"
+ },
+ "MOP": {
+ "name": "MOP",
+ "symbol": "MOP"
+ },
+ "MUR": {
+ "name": "Mɔreshɔ Rupi",
+ "symbol": "MUR"
+ },
+ "MRO": {
+ "name": "Mɔretani Yugiya",
+ "symbol": "MRO"
+ },
+ "MAD": {
+ "name": "Mɔroko Dihami",
+ "symbol": "MAD"
+ },
+ "MVR": {
+ "name": "MVR",
+ "symbol": "MVR"
+ },
+ "MXN": {
+ "name": "MXN",
+ "symbol": "MX$"
+ },
+ "MYR": {
+ "name": "MYR",
+ "symbol": "MYR"
+ },
+ "MZN": {
+ "name": "MZN",
+ "symbol": "MZN"
+ },
+ "NGN": {
+ "name": "Naĩjiriya Naĩra",
+ "symbol": "NGN"
+ },
+ "NAD": {
+ "name": "Namibiya Dala",
+ "symbol": "NAD"
+ },
+ "NIO": {
+ "name": "NIO",
+ "symbol": "NIO"
+ },
+ "NOK": {
+ "name": "NOK",
+ "symbol": "NOK"
+ },
+ "NPR": {
+ "name": "NPR",
+ "symbol": "NPR"
+ },
+ "NZD": {
+ "name": "NZD",
+ "symbol": "NZ$"
+ },
+ "OMR": {
+ "name": "OMR",
+ "symbol": "OMR"
+ },
+ "AUD": {
+ "name": "ƆÌsituwa Dala",
+ "symbol": "A$"
+ },
+ "PAB": {
+ "name": "PAB",
+ "symbol": "PAB"
+ },
+ "PEN": {
+ "name": "PEN",
+ "symbol": "PEN"
+ },
+ "PGK": {
+ "name": "PGK",
+ "symbol": "PGK"
+ },
+ "PHP": {
+ "name": "PHP",
+ "symbol": "PHP"
+ },
+ "PKR": {
+ "name": "PKR",
+ "symbol": "PKR"
+ },
+ "PLN": {
+ "name": "PLN",
+ "symbol": "PLN"
+ },
+ "USD": {
+ "name": "Poo Dala",
+ "symbol": "US$"
+ },
+ "PYG": {
+ "name": "PYG",
+ "symbol": "PYG"
+ },
+ "QAR": {
+ "name": "QAR",
+ "symbol": "QAR"
+ },
+ "RWF": {
+ "name": "Rawunda Furaŋki",
+ "symbol": "RWF"
+ },
+ "RON": {
+ "name": "RON",
+ "symbol": "RON"
+ },
+ "RSD": {
+ "name": "RSD",
+ "symbol": "RSD"
+ },
+ "RUB": {
+ "name": "RUB",
+ "symbol": "RUB"
+ },
+ "STD": {
+ "name": "Sawo Tombe É“É› a Gbawo Dobura",
+ "symbol": "STD"
+ },
+ "SBD": {
+ "name": "SBD",
+ "symbol": "SBD"
+ },
+ "SCR": {
+ "name": "SCR",
+ "symbol": "SCR"
+ },
+ "SEK": {
+ "name": "SEK",
+ "symbol": "SEK"
+ },
+ "SGD": {
+ "name": "SGD",
+ "symbol": "SGD"
+ },
+ "SHP": {
+ "name": "Siŋ Hɛlina Pɔɔ̃",
+ "symbol": "SHP"
+ },
+ "SOS": {
+ "name": "Somaliya Siyeŋ",
+ "symbol": "SOS"
+ },
+ "SRD": {
+ "name": "SRD",
+ "symbol": "SRD"
+ },
+ "SSP": {
+ "name": "SSP",
+ "symbol": "SSP"
+ },
+ "SDG": {
+ "name": "Sudaniĩ Pɔɔ̃",
+ "symbol": "SDG"
+ },
+ "CHF": {
+ "name": "Suwesi Furaŋki",
+ "symbol": "CHF"
+ },
+ "SVC": {
+ "name": "SVC",
+ "symbol": "SVC"
+ },
+ "SYP": {
+ "name": "SYP",
+ "symbol": "SYP"
+ },
+ "TZS": {
+ "name": "Taŋzaniya Siyeŋ",
+ "symbol": "TZS"
+ },
+ "THB": {
+ "name": "THB",
+ "symbol": "THB"
+ },
+ "TJS": {
+ "name": "TJS",
+ "symbol": "TJS"
+ },
+ "TMT": {
+ "name": "TMT",
+ "symbol": "TMT"
+ },
+ "TOP": {
+ "name": "TOP",
+ "symbol": "TOP"
+ },
+ "TRY": {
+ "name": "TRY",
+ "symbol": "TRY"
+ },
+ "TTD": {
+ "name": "TTD",
+ "symbol": "TTD"
+ },
+ "TND": {
+ "name": "Tunisiya Dina",
+ "symbol": "TND"
+ },
+ "TWD": {
+ "name": "TWD",
+ "symbol": "NT$"
+ },
+ "UAH": {
+ "name": "UAH",
+ "symbol": "UAH"
+ },
+ "UYU": {
+ "name": "UYU",
+ "symbol": "UYU"
+ },
+ "UZS": {
+ "name": "UZS",
+ "symbol": "UZS"
+ },
+ "VEF": {
+ "name": "VEF",
+ "symbol": "VEF"
+ },
+ "VND": {
+ "name": "VND",
+ "symbol": "â‚«"
+ },
+ "VUV": {
+ "name": "VUV",
+ "symbol": "VUV"
+ },
+ "WST": {
+ "name": "WST",
+ "symbol": "WST"
+ },
+ "XCD": {
+ "name": "XCD",
+ "symbol": "EC$"
+ },
+ "XPF": {
+ "name": "XPF",
+ "symbol": "CFPF"
+ },
+ "YER": {
+ "name": "YER",
+ "symbol": "YER"
+ },
+ "UGX": {
+ "name": "Yuganda Siyeŋ",
+ "symbol": "UGX"
+ },
+ "AED": {
+ "name": "YunaitÉ› Arabhi Æmire Dihami",
+ "symbol": "AED"
+ },
+ "EUR": {
+ "name": "Yuro",
+ "symbol": "€"
+ },
+ "ZMW": {
+ "name": "Zambiya Kuwacha",
+ "symbol": "ZMW"
+ },
+ "ZWL": {
+ "name": "ZWL",
+ "symbol": "ZWL"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/currency/vai.json b/library/intl/resources/currency/vai.json
new file mode 100644
index 000000000..b9da1beaa
--- /dev/null
+++ b/library/intl/resources/currency/vai.json
@@ -0,0 +1,634 @@
+{
+ "AFN": {
+ "name": "AFN",
+ "symbol": "AFN"
+ },
+ "ALL": {
+ "name": "ALL",
+ "symbol": "ALL"
+ },
+ "AMD": {
+ "name": "AMD",
+ "symbol": "AMD"
+ },
+ "ANG": {
+ "name": "ANG",
+ "symbol": "ANG"
+ },
+ "ARS": {
+ "name": "ARS",
+ "symbol": "ARS"
+ },
+ "AWG": {
+ "name": "AWG",
+ "symbol": "AWG"
+ },
+ "AZN": {
+ "name": "AZN",
+ "symbol": "AZN"
+ },
+ "BAM": {
+ "name": "BAM",
+ "symbol": "BAM"
+ },
+ "BBD": {
+ "name": "BBD",
+ "symbol": "BBD"
+ },
+ "BDT": {
+ "name": "BDT",
+ "symbol": "BDT"
+ },
+ "BGN": {
+ "name": "BGN",
+ "symbol": "BGN"
+ },
+ "BMD": {
+ "name": "BMD",
+ "symbol": "BMD"
+ },
+ "BND": {
+ "name": "BND",
+ "symbol": "BND"
+ },
+ "BOB": {
+ "name": "BOB",
+ "symbol": "BOB"
+ },
+ "BRL": {
+ "name": "BRL",
+ "symbol": "R$"
+ },
+ "BSD": {
+ "name": "BSD",
+ "symbol": "BSD"
+ },
+ "BTN": {
+ "name": "BTN",
+ "symbol": "BTN"
+ },
+ "BYR": {
+ "name": "BYR",
+ "symbol": "BYR"
+ },
+ "BZD": {
+ "name": "BZD",
+ "symbol": "BZD"
+ },
+ "CLP": {
+ "name": "CLP",
+ "symbol": "CLP"
+ },
+ "COP": {
+ "name": "COP",
+ "symbol": "COP"
+ },
+ "CRC": {
+ "name": "CRC",
+ "symbol": "CRC"
+ },
+ "CUC": {
+ "name": "CUC",
+ "symbol": "CUC"
+ },
+ "CUP": {
+ "name": "CUP",
+ "symbol": "CUP"
+ },
+ "CZK": {
+ "name": "CZK",
+ "symbol": "CZK"
+ },
+ "DKK": {
+ "name": "DKK",
+ "symbol": "DKK"
+ },
+ "DOP": {
+ "name": "DOP",
+ "symbol": "DOP"
+ },
+ "FJD": {
+ "name": "FJD",
+ "symbol": "FJD"
+ },
+ "FKP": {
+ "name": "FKP",
+ "symbol": "FKP"
+ },
+ "GEL": {
+ "name": "GEL",
+ "symbol": "GEL"
+ },
+ "GHS": {
+ "name": "GHS",
+ "symbol": "GHS"
+ },
+ "GIP": {
+ "name": "GIP",
+ "symbol": "GIP"
+ },
+ "GNF": {
+ "name": "GNF",
+ "symbol": "GNF"
+ },
+ "GTQ": {
+ "name": "GTQ",
+ "symbol": "GTQ"
+ },
+ "GYD": {
+ "name": "GYD",
+ "symbol": "GYD"
+ },
+ "HKD": {
+ "name": "HKD",
+ "symbol": "HK$"
+ },
+ "HNL": {
+ "name": "HNL",
+ "symbol": "HNL"
+ },
+ "HRK": {
+ "name": "HRK",
+ "symbol": "HRK"
+ },
+ "HTG": {
+ "name": "HTG",
+ "symbol": "HTG"
+ },
+ "HUF": {
+ "name": "HUF",
+ "symbol": "HUF"
+ },
+ "IDR": {
+ "name": "IDR",
+ "symbol": "IDR"
+ },
+ "ILS": {
+ "name": "ILS",
+ "symbol": "₪"
+ },
+ "IQD": {
+ "name": "IQD",
+ "symbol": "IQD"
+ },
+ "IRR": {
+ "name": "IRR",
+ "symbol": "IRR"
+ },
+ "ISK": {
+ "name": "ISK",
+ "symbol": "ISK"
+ },
+ "JMD": {
+ "name": "JMD",
+ "symbol": "JMD"
+ },
+ "JOD": {
+ "name": "JOD",
+ "symbol": "JOD"
+ },
+ "KGS": {
+ "name": "KGS",
+ "symbol": "KGS"
+ },
+ "KHR": {
+ "name": "KHR",
+ "symbol": "KHR"
+ },
+ "KPW": {
+ "name": "KPW",
+ "symbol": "KPW"
+ },
+ "KRW": {
+ "name": "KRW",
+ "symbol": "â‚©"
+ },
+ "KWD": {
+ "name": "KWD",
+ "symbol": "KWD"
+ },
+ "KYD": {
+ "name": "KYD",
+ "symbol": "KYD"
+ },
+ "KZT": {
+ "name": "KZT",
+ "symbol": "KZT"
+ },
+ "LAK": {
+ "name": "LAK",
+ "symbol": "LAK"
+ },
+ "LBP": {
+ "name": "LBP",
+ "symbol": "LBP"
+ },
+ "LKR": {
+ "name": "LKR",
+ "symbol": "LKR"
+ },
+ "LTL": {
+ "name": "LTL",
+ "symbol": "LTL"
+ },
+ "MDL": {
+ "name": "MDL",
+ "symbol": "MDL"
+ },
+ "MKD": {
+ "name": "MKD",
+ "symbol": "MKD"
+ },
+ "MMK": {
+ "name": "MMK",
+ "symbol": "MMK"
+ },
+ "MNT": {
+ "name": "MNT",
+ "symbol": "MNT"
+ },
+ "MOP": {
+ "name": "MOP",
+ "symbol": "MOP"
+ },
+ "MVR": {
+ "name": "MVR",
+ "symbol": "MVR"
+ },
+ "MXN": {
+ "name": "MXN",
+ "symbol": "MX$"
+ },
+ "MYR": {
+ "name": "MYR",
+ "symbol": "MYR"
+ },
+ "MZN": {
+ "name": "MZN",
+ "symbol": "MZN"
+ },
+ "NIO": {
+ "name": "NIO",
+ "symbol": "NIO"
+ },
+ "NOK": {
+ "name": "NOK",
+ "symbol": "NOK"
+ },
+ "NPR": {
+ "name": "NPR",
+ "symbol": "NPR"
+ },
+ "NZD": {
+ "name": "NZD",
+ "symbol": "NZ$"
+ },
+ "OMR": {
+ "name": "OMR",
+ "symbol": "OMR"
+ },
+ "PAB": {
+ "name": "PAB",
+ "symbol": "PAB"
+ },
+ "PEN": {
+ "name": "PEN",
+ "symbol": "PEN"
+ },
+ "PGK": {
+ "name": "PGK",
+ "symbol": "PGK"
+ },
+ "PHP": {
+ "name": "PHP",
+ "symbol": "PHP"
+ },
+ "PKR": {
+ "name": "PKR",
+ "symbol": "PKR"
+ },
+ "PLN": {
+ "name": "PLN",
+ "symbol": "PLN"
+ },
+ "PYG": {
+ "name": "PYG",
+ "symbol": "PYG"
+ },
+ "QAR": {
+ "name": "QAR",
+ "symbol": "QAR"
+ },
+ "RON": {
+ "name": "RON",
+ "symbol": "RON"
+ },
+ "RSD": {
+ "name": "RSD",
+ "symbol": "RSD"
+ },
+ "RUB": {
+ "name": "RUB",
+ "symbol": "RUB"
+ },
+ "SBD": {
+ "name": "SBD",
+ "symbol": "SBD"
+ },
+ "SEK": {
+ "name": "SEK",
+ "symbol": "SEK"
+ },
+ "SGD": {
+ "name": "SGD",
+ "symbol": "SGD"
+ },
+ "SRD": {
+ "name": "SRD",
+ "symbol": "SRD"
+ },
+ "SSP": {
+ "name": "SSP",
+ "symbol": "SSP"
+ },
+ "SVC": {
+ "name": "SVC",
+ "symbol": "SVC"
+ },
+ "SYP": {
+ "name": "SYP",
+ "symbol": "SYP"
+ },
+ "THB": {
+ "name": "THB",
+ "symbol": "THB"
+ },
+ "TJS": {
+ "name": "TJS",
+ "symbol": "TJS"
+ },
+ "TMT": {
+ "name": "TMT",
+ "symbol": "TMT"
+ },
+ "TOP": {
+ "name": "TOP",
+ "symbol": "TOP"
+ },
+ "TRY": {
+ "name": "TRY",
+ "symbol": "TRY"
+ },
+ "TTD": {
+ "name": "TTD",
+ "symbol": "TTD"
+ },
+ "TWD": {
+ "name": "TWD",
+ "symbol": "NT$"
+ },
+ "UAH": {
+ "name": "UAH",
+ "symbol": "UAH"
+ },
+ "UYU": {
+ "name": "UYU",
+ "symbol": "UYU"
+ },
+ "UZS": {
+ "name": "UZS",
+ "symbol": "UZS"
+ },
+ "VEF": {
+ "name": "VEF",
+ "symbol": "VEF"
+ },
+ "VND": {
+ "name": "VND",
+ "symbol": "â‚«"
+ },
+ "VUV": {
+ "name": "VUV",
+ "symbol": "VUV"
+ },
+ "WST": {
+ "name": "WST",
+ "symbol": "WST"
+ },
+ "XAF": {
+ "name": "XAF",
+ "symbol": "FCFA"
+ },
+ "XCD": {
+ "name": "XCD",
+ "symbol": "EC$"
+ },
+ "XOF": {
+ "name": "XOF",
+ "symbol": "CFA"
+ },
+ "XPF": {
+ "name": "XPF",
+ "symbol": "CFPF"
+ },
+ "YER": {
+ "name": "YER",
+ "symbol": "YER"
+ },
+ "ZWL": {
+ "name": "ZWL",
+ "symbol": "ZWL"
+ },
+ "ERN": {
+ "name": "ꔀꔸꔳꕟ ê—ꖻꘋ",
+ "symbol": "ERN"
+ },
+ "SCR": {
+ "name": "ꔖꗼꔷ ꖩꔪ",
+ "symbol": "SCR"
+ },
+ "GBP": {
+ "name": "ꔛꔟꔻ ê—ꖻꘋ ꔻꗳꔷꘋ",
+ "symbol": "£"
+ },
+ "KES": {
+ "name": "ꔞꕰ ê”»ê”ꘋ",
+ "symbol": "KES"
+ },
+ "INR": {
+ "name": "ꔤꔺꕩ ꖩꔪ",
+ "symbol": "₹"
+ },
+ "ETB": {
+ "name": "ꔤꕿꖎꔪꕩ ꔫꔤ",
+ "symbol": "ETB"
+ },
+ "LYD": {
+ "name": "ꔷꔫꕩ ꔵꕯ",
+ "symbol": "LYD"
+ },
+ "SZL": {
+ "name": "ꔷꕞꔟꕇ",
+ "symbol": "SZL"
+ },
+ "LSL": {
+ "name": "ꔷꖇꕿ ꖃꔳ",
+ "symbol": "LSL"
+ },
+ "SLL": {
+ "name": "ꔷꗚꘋ",
+ "symbol": "SLL"
+ },
+ "SHP": {
+ "name": "ꔻꘋ ꗥꔷꕯ ê—ꖻꘋ",
+ "symbol": "SHP"
+ },
+ "DJF": {
+ "name": "ꕀꖜꔳ ꖢꕟꘋꕃ",
+ "symbol": "DJF"
+ },
+ "EGP": {
+ "name": "ꕆꔻꕞ ê—ꖻꘋ",
+ "symbol": "EGP"
+ },
+ "ZAR": {
+ "name": "ꕉꔱꔸꕪ ꗛꔤ ꔒꘋꗣ ê— ê•Ÿê˜‹ê”µ",
+ "symbol": "ZAR"
+ },
+ "DZD": {
+ "name": "ꕉꔷꕀꔸꕩ ꔵꕯ",
+ "symbol": "DZD"
+ },
+ "AOA": {
+ "name": "ꕉê–ê•ž ꖴꕎꘋꕤ",
+ "symbol": "AOA"
+ },
+ "BHD": {
+ "name": "ꕑꗸꘋ",
+ "symbol": "BHD"
+ },
+ "TZS": {
+ "name": "ꕚꘋꕤꕇꕰ ê”»ê”ꘋ",
+ "symbol": "TZS"
+ },
+ "LRD": {
+ "name": "ꕞꔤꔫꕩ ꕜꕞꕌ",
+ "symbol": "$"
+ },
+ "RWF": {
+ "name": "ꕟꖙꕡ ꖢꕟꘋꕃ",
+ "symbol": "RWF"
+ },
+ "STD": {
+ "name": "ꕢꕴ ꕿꔈ ê—ª ꕉ ê•—ê•´ ê–ꖜꕟ",
+ "symbol": "STD"
+ },
+ "SAR": {
+ "name": "ꕢꖙꔵ ꔸꕩꔷ",
+ "symbol": "SAR"
+ },
+ "ZMW": {
+ "name": "ꕤꔭꕩ ꖴꕎꕦ",
+ "symbol": "ZMW"
+ },
+ "CNY": {
+ "name": "ꕦꕇꔧ ꖳꕎꘋ ꔓꕆꘋꔬ",
+ "symbol": "CNÂ¥"
+ },
+ "JPY": {
+ "name": "ꕧê•ê•‡ê”§ ꘂꘋ",
+ "symbol": "JPÂ¥"
+ },
+ "CAD": {
+ "name": "ꕪꕯꕜ ꕜꕞꕌ",
+ "symbol": "CA$"
+ },
+ "GMD": {
+ "name": "ꕭꔭꕩ ꕜꕞꔻ",
+ "symbol": "GMD"
+ },
+ "MWK": {
+ "name": "ꕮꕞꕌꔨ ꖴꕎꕦ",
+ "symbol": "MWK"
+ },
+ "MGA": {
+ "name": "ꕮꕞꕭꕌꔻ ꕉꔸꕩꔸ",
+ "symbol": "MGA"
+ },
+ "NGN": {
+ "name": "ꕯꔤꕀꔸꕩ ꕯꔤꕟ",
+ "symbol": "NGN"
+ },
+ "NAD": {
+ "name": "ꕯꕆꔫꕩ ꕜꕞꕌ",
+ "symbol": "NAD"
+ },
+ "USD": {
+ "name": "ꕶꕱ ꕜꕞ",
+ "symbol": "US$"
+ },
+ "BWP": {
+ "name": "ꕷꖬꕎꕯ ꖛꕞ",
+ "symbol": "BWP"
+ },
+ "SOS": {
+ "name": "ꖇꕮꔷ ê”»ê”ꘋ",
+ "symbol": "SOS"
+ },
+ "CDF": {
+ "name": "ê–ê–ꕱ ꖢꕟꘋꕃ",
+ "symbol": "CDF"
+ },
+ "KMF": {
+ "name": "ê–ê–’ê–„ ꖢꕟꘋꕃ",
+ "symbol": "KMF"
+ },
+ "BIF": {
+ "name": "ꖜꖩꔺ ꖢꕟꘋꕃ",
+ "symbol": "BIF"
+ },
+ "TND": {
+ "name": "ꖤꕇꔻꕩ ꔵꕯ",
+ "symbol": "TND"
+ },
+ "CHF": {
+ "name": "ꖬꔃꕤ ꖨꕮꕊ ꖢꕟꘋꕃ",
+ "symbol": "CHF"
+ },
+ "SDG": {
+ "name": "ꖬꗵꘋ ê—ꖻꘋ",
+ "symbol": "SDG"
+ },
+ "UGX": {
+ "name": "ꖳꕭꕡ ê”»ê”ꘋ",
+ "symbol": "UGX"
+ },
+ "AED": {
+ "name": "ꖳꕯꔤꗳ ꕉꕟꔬ ꗡꕆꔓꔻ ꔵꕌꕆ",
+ "symbol": "AED"
+ },
+ "EUR": {
+ "name": "ꖳꖄ",
+ "symbol": "€"
+ },
+ "AUD": {
+ "name": "ꖺꔻꖤꔃꔷꕩ ꕜꕞꕌ",
+ "symbol": "A$"
+ },
+ "MUR": {
+ "name": "ꗞꔓꗔ ꖩꔪ",
+ "symbol": "MUR"
+ },
+ "MRO": {
+ "name": "ꗞꔸꕚꕇꕰ ꖳꕅꕩ",
+ "symbol": "MRO"
+ },
+ "MAD": {
+ "name": "ê—žê•Ÿê– ê”µê•Œê•†",
+ "symbol": "MAD"
+ },
+ "CVE": {
+ "name": "ê—¡ê”»ê–´ê– ê•ªê•·ê—²ê—¡ê”µê•©ê–†",
+ "symbol": "CVE"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/currency/vi.json b/library/intl/resources/currency/vi.json
new file mode 100644
index 000000000..0fb29e1e1
--- /dev/null
+++ b/library/intl/resources/currency/vi.json
@@ -0,0 +1,634 @@
+{
+ "AFN": {
+ "name": "Afghani Afghanistan",
+ "symbol": "AFN"
+ },
+ "MGA": {
+ "name": "Ariary Malagasy",
+ "symbol": "MGA"
+ },
+ "PAB": {
+ "name": "Balboa Panama",
+ "symbol": "PAB"
+ },
+ "EGP": {
+ "name": "Bảng Ai Cập",
+ "symbol": "EGP"
+ },
+ "GBP": {
+ "name": "Bảng Anh",
+ "symbol": "£"
+ },
+ "GIP": {
+ "name": "Bảng Gibraltar",
+ "symbol": "GIP"
+ },
+ "LBP": {
+ "name": "Bảng Li-băng",
+ "symbol": "LBP"
+ },
+ "SSP": {
+ "name": "Bảng Nam Sudan",
+ "symbol": "SSP"
+ },
+ "FKP": {
+ "name": "Bảng Quần đảo Falkland",
+ "symbol": "FKP"
+ },
+ "SHP": {
+ "name": "Bảng Saint Helena",
+ "symbol": "SHP"
+ },
+ "SDG": {
+ "name": "Bảng Sudan",
+ "symbol": "SDG"
+ },
+ "SYP": {
+ "name": "Bảng Syria",
+ "symbol": "SYP"
+ },
+ "THB": {
+ "name": "Bạt Thái Lan",
+ "symbol": "฿"
+ },
+ "ETB": {
+ "name": "Birr Ethiopia",
+ "symbol": "ETB"
+ },
+ "VEF": {
+ "name": "Bolívar Venezuela",
+ "symbol": "VEF"
+ },
+ "BOB": {
+ "name": "Boliviano Bolivia",
+ "symbol": "BOB"
+ },
+ "GHS": {
+ "name": "Cedi Ghana",
+ "symbol": "GHS"
+ },
+ "XAF": {
+ "name": "CFA Franc BEAC",
+ "symbol": "FCFA"
+ },
+ "CRC": {
+ "name": "Colón Costa Rica",
+ "symbol": "CRC"
+ },
+ "NIO": {
+ "name": "Córdoba Nicaragua",
+ "symbol": "NIO"
+ },
+ "GMD": {
+ "name": "Dalasi Gambia",
+ "symbol": "GMD"
+ },
+ "MKD": {
+ "name": "Denar Macedonia",
+ "symbol": "MKD"
+ },
+ "DZD": {
+ "name": "Dinar Algeria",
+ "symbol": "DZD"
+ },
+ "BHD": {
+ "name": "Dinar Bahrain",
+ "symbol": "BHD"
+ },
+ "IQD": {
+ "name": "Dinar I-rắc",
+ "symbol": "IQD"
+ },
+ "JOD": {
+ "name": "Dinar Jordan",
+ "symbol": "JOD"
+ },
+ "KWD": {
+ "name": "Dinar Kuwait",
+ "symbol": "KWD"
+ },
+ "LYD": {
+ "name": "Dinar Libi",
+ "symbol": "LYD"
+ },
+ "RSD": {
+ "name": "Dinar Serbia",
+ "symbol": "RSD"
+ },
+ "TND": {
+ "name": "Dinar Tunisia",
+ "symbol": "TND"
+ },
+ "MAD": {
+ "name": "Dirham Ma-rốc",
+ "symbol": "MAD"
+ },
+ "AED": {
+ "name": "Dirham UAE",
+ "symbol": "AED"
+ },
+ "STD": {
+ "name": "Dobra São Tomé và Príncipe",
+ "symbol": "STD"
+ },
+ "AMD": {
+ "name": "Dram Armenia",
+ "symbol": "AMD"
+ },
+ "AUD": {
+ "name": "Äô la Australia",
+ "symbol": "AU$"
+ },
+ "BSD": {
+ "name": "Äô la Bahamas",
+ "symbol": "BSD"
+ },
+ "BBD": {
+ "name": "Äô la Barbados",
+ "symbol": "BBD"
+ },
+ "BZD": {
+ "name": "Äô la Belize",
+ "symbol": "BZD"
+ },
+ "BMD": {
+ "name": "Äô la Bermuda",
+ "symbol": "BMD"
+ },
+ "BND": {
+ "name": "Äô la Brunei",
+ "symbol": "BND"
+ },
+ "CAD": {
+ "name": "Äô la Canada",
+ "symbol": "CA$"
+ },
+ "TWD": {
+ "name": "Äô la Äài Loan má»›i",
+ "symbol": "NT$"
+ },
+ "XCD": {
+ "name": "Äô la Äông Caribê",
+ "symbol": "EC$"
+ },
+ "FJD": {
+ "name": "Äô la Fiji",
+ "symbol": "FJD"
+ },
+ "GYD": {
+ "name": "Äô la Guyana",
+ "symbol": "GYD"
+ },
+ "HKD": {
+ "name": "Äô la Hồng Kông",
+ "symbol": "HK$"
+ },
+ "JMD": {
+ "name": "Äô la Jamaica",
+ "symbol": "JMD"
+ },
+ "LRD": {
+ "name": "Äô la Liberia",
+ "symbol": "LRD"
+ },
+ "USD": {
+ "name": "Äô la Mỹ",
+ "symbol": "US$"
+ },
+ "NAD": {
+ "name": "Äô la Namibia",
+ "symbol": "NAD"
+ },
+ "NZD": {
+ "name": "Äô la New Zealand",
+ "symbol": "NZ$"
+ },
+ "KYD": {
+ "name": "Äô la Quần đảo Cayman",
+ "symbol": "KYD"
+ },
+ "SBD": {
+ "name": "Äô la quần đảo Solomon",
+ "symbol": "SBD"
+ },
+ "SGD": {
+ "name": "Äô la Singapore",
+ "symbol": "SGD"
+ },
+ "SRD": {
+ "name": "Äô la Suriname",
+ "symbol": "SRD"
+ },
+ "TTD": {
+ "name": "Äô la Trinidad và Tobago",
+ "symbol": "TTD"
+ },
+ "SVC": {
+ "name": "Äồng Colón Salvador",
+ "symbol": "SVC"
+ },
+ "ZWL": {
+ "name": "Äồng Äô la Zimbabwe (2009)",
+ "symbol": "ZWL"
+ },
+ "LSL": {
+ "name": "Äồng loti của Lesotho",
+ "symbol": "LSL"
+ },
+ "VND": {
+ "name": "Äồng Việt Nam",
+ "symbol": "â‚«"
+ },
+ "CVE": {
+ "name": "Escudo Cape Verde",
+ "symbol": "CVE"
+ },
+ "EUR": {
+ "name": "Euro",
+ "symbol": "€"
+ },
+ "AWG": {
+ "name": "Florin Aruba",
+ "symbol": "AWG"
+ },
+ "HUF": {
+ "name": "Forint Hungaria",
+ "symbol": "HUF"
+ },
+ "BIF": {
+ "name": "Franc Burundi",
+ "symbol": "BIF"
+ },
+ "XOF": {
+ "name": "Franc CFA BCEAO",
+ "symbol": "CFA"
+ },
+ "XPF": {
+ "name": "Franc CFP",
+ "symbol": "CFPF"
+ },
+ "KMF": {
+ "name": "Franc Comoros",
+ "symbol": "KMF"
+ },
+ "CDF": {
+ "name": "Franc Congo",
+ "symbol": "CDF"
+ },
+ "DJF": {
+ "name": "Franc Djibouti",
+ "symbol": "DJF"
+ },
+ "GNF": {
+ "name": "Franc Guinea",
+ "symbol": "GNF"
+ },
+ "RWF": {
+ "name": "Franc Rwanda",
+ "symbol": "RWF"
+ },
+ "CHF": {
+ "name": "Franc Thụy sĩ",
+ "symbol": "CHF"
+ },
+ "HTG": {
+ "name": "Gourde Haiti",
+ "symbol": "HTG"
+ },
+ "PYG": {
+ "name": "Guarani Paraguay",
+ "symbol": "PYG"
+ },
+ "ANG": {
+ "name": "Guilder Tây Ấn Hà Lan",
+ "symbol": "ANG"
+ },
+ "UAH": {
+ "name": "Hryvnia Ucraina",
+ "symbol": "UAH"
+ },
+ "PGK": {
+ "name": "Kina Papua New Guinean",
+ "symbol": "PGK"
+ },
+ "LAK": {
+ "name": "Kip Lào",
+ "symbol": "LAK"
+ },
+ "CZK": {
+ "name": "Koruna Cộng hòa Séc",
+ "symbol": "CZK"
+ },
+ "ISK": {
+ "name": "Króna Iceland",
+ "symbol": "ISK"
+ },
+ "SEK": {
+ "name": "Krona Thụy Äiển",
+ "symbol": "SEK"
+ },
+ "DKK": {
+ "name": "Krone Äan Mạch",
+ "symbol": "DKK"
+ },
+ "NOK": {
+ "name": "Krone Na Uy",
+ "symbol": "NOK"
+ },
+ "HRK": {
+ "name": "Kuna Croatia",
+ "symbol": "HRK"
+ },
+ "MWK": {
+ "name": "Kwacha Malawi",
+ "symbol": "MWK"
+ },
+ "ZMW": {
+ "name": "Kwacha Zambia",
+ "symbol": "ZMW"
+ },
+ "AOA": {
+ "name": "Kwanza Angola",
+ "symbol": "AOA"
+ },
+ "MMK": {
+ "name": "Kyat Myanma",
+ "symbol": "MMK"
+ },
+ "GEL": {
+ "name": "Lari Gruzia",
+ "symbol": "GEL"
+ },
+ "ALL": {
+ "name": "Lek Albania",
+ "symbol": "ALL"
+ },
+ "HNL": {
+ "name": "Lempira Honduras",
+ "symbol": "HNL"
+ },
+ "SLL": {
+ "name": "Leone Sierra Leone",
+ "symbol": "SLL"
+ },
+ "MDL": {
+ "name": "Leu Moldova",
+ "symbol": "MDL"
+ },
+ "RON": {
+ "name": "Leu Romania",
+ "symbol": "RON"
+ },
+ "BGN": {
+ "name": "Lev Bulgaria",
+ "symbol": "BGN"
+ },
+ "TRY": {
+ "name": "Lia Thổ Nhĩ Kỳ",
+ "symbol": "TRY"
+ },
+ "SZL": {
+ "name": "Lilangeni Swaziland",
+ "symbol": "SZL"
+ },
+ "LTL": {
+ "name": "Litas Lít-va",
+ "symbol": "LTL"
+ },
+ "AZN": {
+ "name": "Manat Azerbaijan",
+ "symbol": "AZN"
+ },
+ "TMT": {
+ "name": "Manat Turkmenistan",
+ "symbol": "TMT"
+ },
+ "BAM": {
+ "name": "Mark Bosnia-Herzegovina có thể chuyển đổi",
+ "symbol": "BAM"
+ },
+ "MZN": {
+ "name": "Metical Mozambique",
+ "symbol": "MZN"
+ },
+ "NGN": {
+ "name": "Naira Nigeria",
+ "symbol": "NGN"
+ },
+ "ERN": {
+ "name": "Nakfa Eritrea",
+ "symbol": "ERN"
+ },
+ "BTN": {
+ "name": "Ngultrum Bhutan",
+ "symbol": "BTN"
+ },
+ "CNY": {
+ "name": "Nhân dân tệ",
+ "symbol": "CNÂ¥"
+ },
+ "PEN": {
+ "name": "Nuevo Sol Peru",
+ "symbol": "PEN"
+ },
+ "MRO": {
+ "name": "Ouguiya Mauritania",
+ "symbol": "MRO"
+ },
+ "TOP": {
+ "name": "Paʻanga Tonga",
+ "symbol": "TOP"
+ },
+ "MOP": {
+ "name": "Pataca Ma Cao",
+ "symbol": "MOP"
+ },
+ "ARS": {
+ "name": "Peso Argentina",
+ "symbol": "ARS"
+ },
+ "CLP": {
+ "name": "Peso Chile",
+ "symbol": "CLP"
+ },
+ "COP": {
+ "name": "Peso Colombia",
+ "symbol": "COP"
+ },
+ "CUP": {
+ "name": "Peso Cuba",
+ "symbol": "CUP"
+ },
+ "CUC": {
+ "name": "Peso Cuba có thể chuyển đổi",
+ "symbol": "CUC"
+ },
+ "DOP": {
+ "name": "Peso Dominica",
+ "symbol": "DOP"
+ },
+ "MXN": {
+ "name": "Peso Mexico",
+ "symbol": "MX$"
+ },
+ "PHP": {
+ "name": "Peso Philipin",
+ "symbol": "PHP"
+ },
+ "UYU": {
+ "name": "Peso Uruguay",
+ "symbol": "UYU"
+ },
+ "BWP": {
+ "name": "Pula Botswana",
+ "symbol": "BWP"
+ },
+ "GTQ": {
+ "name": "Quetzal Guatemala",
+ "symbol": "GTQ"
+ },
+ "ZAR": {
+ "name": "Rand Nam Phi",
+ "symbol": "ZAR"
+ },
+ "BRL": {
+ "name": "Real Braxin",
+ "symbol": "R$"
+ },
+ "IRR": {
+ "name": "Rial Iran",
+ "symbol": "IRR"
+ },
+ "OMR": {
+ "name": "Rial Oman",
+ "symbol": "OMR"
+ },
+ "QAR": {
+ "name": "Rial Qatar",
+ "symbol": "QAR"
+ },
+ "YER": {
+ "name": "Rial Yemen",
+ "symbol": "YER"
+ },
+ "KHR": {
+ "name": "Riel Campuchia",
+ "symbol": "KHR"
+ },
+ "MYR": {
+ "name": "Ringgit Malaysia",
+ "symbol": "MYR"
+ },
+ "SAR": {
+ "name": "Riyal Ả Rập Xê-út",
+ "symbol": "SAR"
+ },
+ "MVR": {
+ "name": "Rufiyaa Maldives",
+ "symbol": "MVR"
+ },
+ "BYR": {
+ "name": "Rúp Belarus",
+ "symbol": "BYR"
+ },
+ "RUB": {
+ "name": "Rúp Nga",
+ "symbol": "RUB"
+ },
+ "INR": {
+ "name": "Rupee Ấn Äá»™",
+ "symbol": "₹"
+ },
+ "MUR": {
+ "name": "Rupee Mauritius",
+ "symbol": "MUR"
+ },
+ "NPR": {
+ "name": "Rupee Nepal",
+ "symbol": "NPR"
+ },
+ "PKR": {
+ "name": "Rupee Pakistan",
+ "symbol": "PKR"
+ },
+ "SCR": {
+ "name": "Rupee Seychelles",
+ "symbol": "SCR"
+ },
+ "LKR": {
+ "name": "Rupee Sri Lanka",
+ "symbol": "LKR"
+ },
+ "IDR": {
+ "name": "Rupiah Indonesia",
+ "symbol": "IDR"
+ },
+ "SOS": {
+ "name": "Schilling Somali",
+ "symbol": "SOS"
+ },
+ "ILS": {
+ "name": "Sheqel Israel má»›i",
+ "symbol": "₪"
+ },
+ "KES": {
+ "name": "Shilling Kenya",
+ "symbol": "KES"
+ },
+ "TZS": {
+ "name": "Shilling Tanzania",
+ "symbol": "TZS"
+ },
+ "UGX": {
+ "name": "Shilling Uganda",
+ "symbol": "UGX"
+ },
+ "KGS": {
+ "name": "Som Kyrgyzstan",
+ "symbol": "KGS"
+ },
+ "UZS": {
+ "name": "Som Uzbekistan",
+ "symbol": "UZS"
+ },
+ "TJS": {
+ "name": "Somoni Tajikistan",
+ "symbol": "TJS"
+ },
+ "BDT": {
+ "name": "Taka Bangladesh",
+ "symbol": "BDT"
+ },
+ "WST": {
+ "name": "Tala Samoa",
+ "symbol": "WST"
+ },
+ "KZT": {
+ "name": "Tenge Kazakhstan",
+ "symbol": "KZT"
+ },
+ "MNT": {
+ "name": "Tugrik Mông Cổ",
+ "symbol": "MNT"
+ },
+ "VUV": {
+ "name": "Vatu Vanuatu",
+ "symbol": "VUV"
+ },
+ "KRW": {
+ "name": "Won Hàn Quốc",
+ "symbol": "â‚©"
+ },
+ "KPW": {
+ "name": "Won Triá»u Tiên",
+ "symbol": "KPW"
+ },
+ "JPY": {
+ "name": "Yên Nhật",
+ "symbol": "JPÂ¥"
+ },
+ "PLN": {
+ "name": "Zloty Ba Lan",
+ "symbol": "PLN"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/currency/vun.json b/library/intl/resources/currency/vun.json
new file mode 100644
index 000000000..655670a30
--- /dev/null
+++ b/library/intl/resources/currency/vun.json
@@ -0,0 +1,634 @@
+{
+ "AFN": {
+ "name": "AFN",
+ "symbol": "AFN"
+ },
+ "ALL": {
+ "name": "ALL",
+ "symbol": "ALL"
+ },
+ "AMD": {
+ "name": "AMD",
+ "symbol": "AMD"
+ },
+ "ANG": {
+ "name": "ANG",
+ "symbol": "ANG"
+ },
+ "ARS": {
+ "name": "ARS",
+ "symbol": "ARS"
+ },
+ "AWG": {
+ "name": "AWG",
+ "symbol": "AWG"
+ },
+ "AZN": {
+ "name": "AZN",
+ "symbol": "AZN"
+ },
+ "BAM": {
+ "name": "BAM",
+ "symbol": "BAM"
+ },
+ "BBD": {
+ "name": "BBD",
+ "symbol": "BBD"
+ },
+ "BDT": {
+ "name": "BDT",
+ "symbol": "BDT"
+ },
+ "BGN": {
+ "name": "BGN",
+ "symbol": "BGN"
+ },
+ "ETB": {
+ "name": "Bir ya Uhabeshi",
+ "symbol": "ETB"
+ },
+ "BMD": {
+ "name": "BMD",
+ "symbol": "BMD"
+ },
+ "BND": {
+ "name": "BND",
+ "symbol": "BND"
+ },
+ "BOB": {
+ "name": "BOB",
+ "symbol": "BOB"
+ },
+ "BRL": {
+ "name": "BRL",
+ "symbol": "R$"
+ },
+ "BSD": {
+ "name": "BSD",
+ "symbol": "BSD"
+ },
+ "BTN": {
+ "name": "BTN",
+ "symbol": "BTN"
+ },
+ "BYR": {
+ "name": "BYR",
+ "symbol": "BYR"
+ },
+ "BZD": {
+ "name": "BZD",
+ "symbol": "BZD"
+ },
+ "CLP": {
+ "name": "CLP",
+ "symbol": "CLP"
+ },
+ "COP": {
+ "name": "COP",
+ "symbol": "COP"
+ },
+ "CRC": {
+ "name": "CRC",
+ "symbol": "CRC"
+ },
+ "CUC": {
+ "name": "CUC",
+ "symbol": "CUC"
+ },
+ "CUP": {
+ "name": "CUP",
+ "symbol": "CUP"
+ },
+ "CZK": {
+ "name": "CZK",
+ "symbol": "CZK"
+ },
+ "GMD": {
+ "name": "Dalasi ya Gambia",
+ "symbol": "GMD"
+ },
+ "DZD": {
+ "name": "Dinari ya Aljeria",
+ "symbol": "DZD"
+ },
+ "BHD": {
+ "name": "Dinari ya Bahareni",
+ "symbol": "BHD"
+ },
+ "LYD": {
+ "name": "Dinari ya Libya",
+ "symbol": "LYD"
+ },
+ "SDG": {
+ "name": "Dinari ya Sudani",
+ "symbol": "SDG"
+ },
+ "TND": {
+ "name": "Dinari ya Tunisia",
+ "symbol": "TND"
+ },
+ "AED": {
+ "name": "Dirham ya Falme za Kiarabu",
+ "symbol": "AED"
+ },
+ "MAD": {
+ "name": "Dirham ya Moroko",
+ "symbol": "MAD"
+ },
+ "DKK": {
+ "name": "DKK",
+ "symbol": "DKK"
+ },
+ "STD": {
+ "name": "Dobra ya Sao Tome na Principe",
+ "symbol": "STD"
+ },
+ "AUD": {
+ "name": "Dola ya Australia",
+ "symbol": "A$"
+ },
+ "CAD": {
+ "name": "Dola ya Kanada",
+ "symbol": "CA$"
+ },
+ "LRD": {
+ "name": "Dola ya Liberia",
+ "symbol": "LRD"
+ },
+ "USD": {
+ "name": "Dola ya Marekani",
+ "symbol": "US$"
+ },
+ "NAD": {
+ "name": "Dola ya Namibia",
+ "symbol": "NAD"
+ },
+ "DOP": {
+ "name": "DOP",
+ "symbol": "DOP"
+ },
+ "CVE": {
+ "name": "Eskudo ya Kepuvede",
+ "symbol": "CVE"
+ },
+ "XOF": {
+ "name": "Faranga CFA BCEAO",
+ "symbol": "CFA"
+ },
+ "XAF": {
+ "name": "Faranga CFA BEAC",
+ "symbol": "FCFA"
+ },
+ "MGA": {
+ "name": "Faranga ya Bukini",
+ "symbol": "MGA"
+ },
+ "BIF": {
+ "name": "Faranga ya Burundi",
+ "symbol": "BIF"
+ },
+ "DJF": {
+ "name": "Faranga ya Jibuti",
+ "symbol": "DJF"
+ },
+ "KMF": {
+ "name": "Faranga ya Komoro",
+ "symbol": "KMF"
+ },
+ "CDF": {
+ "name": "Faranga ya Kongo",
+ "symbol": "CDF"
+ },
+ "RWF": {
+ "name": "Faranga ya Rwanda",
+ "symbol": "RWF"
+ },
+ "CHF": {
+ "name": "Faranga ya Uswisi",
+ "symbol": "CHF"
+ },
+ "FJD": {
+ "name": "FJD",
+ "symbol": "FJD"
+ },
+ "FKP": {
+ "name": "FKP",
+ "symbol": "FKP"
+ },
+ "GEL": {
+ "name": "GEL",
+ "symbol": "GEL"
+ },
+ "GHS": {
+ "name": "GHS",
+ "symbol": "GHS"
+ },
+ "GIP": {
+ "name": "GIP",
+ "symbol": "GIP"
+ },
+ "GNF": {
+ "name": "GNF",
+ "symbol": "GNF"
+ },
+ "GTQ": {
+ "name": "GTQ",
+ "symbol": "GTQ"
+ },
+ "GYD": {
+ "name": "GYD",
+ "symbol": "GYD"
+ },
+ "HKD": {
+ "name": "HKD",
+ "symbol": "HK$"
+ },
+ "HNL": {
+ "name": "HNL",
+ "symbol": "HNL"
+ },
+ "HRK": {
+ "name": "HRK",
+ "symbol": "HRK"
+ },
+ "HTG": {
+ "name": "HTG",
+ "symbol": "HTG"
+ },
+ "HUF": {
+ "name": "HUF",
+ "symbol": "HUF"
+ },
+ "IDR": {
+ "name": "IDR",
+ "symbol": "IDR"
+ },
+ "ILS": {
+ "name": "ILS",
+ "symbol": "₪"
+ },
+ "IQD": {
+ "name": "IQD",
+ "symbol": "IQD"
+ },
+ "IRR": {
+ "name": "IRR",
+ "symbol": "IRR"
+ },
+ "ISK": {
+ "name": "ISK",
+ "symbol": "ISK"
+ },
+ "JMD": {
+ "name": "JMD",
+ "symbol": "JMD"
+ },
+ "JOD": {
+ "name": "JOD",
+ "symbol": "JOD"
+ },
+ "KGS": {
+ "name": "KGS",
+ "symbol": "KGS"
+ },
+ "KHR": {
+ "name": "KHR",
+ "symbol": "KHR"
+ },
+ "KPW": {
+ "name": "KPW",
+ "symbol": "KPW"
+ },
+ "KRW": {
+ "name": "KRW",
+ "symbol": "â‚©"
+ },
+ "MWK": {
+ "name": "Kwacha ya Malawi",
+ "symbol": "MWK"
+ },
+ "ZMW": {
+ "name": "Kwacha ya Zambia",
+ "symbol": "ZMW"
+ },
+ "AOA": {
+ "name": "Kwanza ya Angola",
+ "symbol": "AOA"
+ },
+ "KWD": {
+ "name": "KWD",
+ "symbol": "KWD"
+ },
+ "KYD": {
+ "name": "KYD",
+ "symbol": "KYD"
+ },
+ "KZT": {
+ "name": "KZT",
+ "symbol": "KZT"
+ },
+ "LAK": {
+ "name": "LAK",
+ "symbol": "LAK"
+ },
+ "LBP": {
+ "name": "LBP",
+ "symbol": "LBP"
+ },
+ "SLL": {
+ "name": "Leoni",
+ "symbol": "SLL"
+ },
+ "SZL": {
+ "name": "Lilangeni",
+ "symbol": "SZL"
+ },
+ "LKR": {
+ "name": "LKR",
+ "symbol": "LKR"
+ },
+ "LSL": {
+ "name": "Loti ya Lesoto",
+ "symbol": "LSL"
+ },
+ "LTL": {
+ "name": "LTL",
+ "symbol": "LTL"
+ },
+ "MDL": {
+ "name": "MDL",
+ "symbol": "MDL"
+ },
+ "MKD": {
+ "name": "MKD",
+ "symbol": "MKD"
+ },
+ "MMK": {
+ "name": "MMK",
+ "symbol": "MMK"
+ },
+ "MNT": {
+ "name": "MNT",
+ "symbol": "MNT"
+ },
+ "MOP": {
+ "name": "MOP",
+ "symbol": "MOP"
+ },
+ "MVR": {
+ "name": "MVR",
+ "symbol": "MVR"
+ },
+ "MXN": {
+ "name": "MXN",
+ "symbol": "MX$"
+ },
+ "MYR": {
+ "name": "MYR",
+ "symbol": "MYR"
+ },
+ "MZN": {
+ "name": "MZN",
+ "symbol": "MZN"
+ },
+ "NGN": {
+ "name": "Naira ya Nijeria",
+ "symbol": "NGN"
+ },
+ "ERN": {
+ "name": "Nakfa ya Eritrea",
+ "symbol": "ERN"
+ },
+ "NIO": {
+ "name": "NIO",
+ "symbol": "NIO"
+ },
+ "NOK": {
+ "name": "NOK",
+ "symbol": "NOK"
+ },
+ "NPR": {
+ "name": "NPR",
+ "symbol": "NPR"
+ },
+ "NZD": {
+ "name": "NZD",
+ "symbol": "NZ$"
+ },
+ "OMR": {
+ "name": "OMR",
+ "symbol": "OMR"
+ },
+ "PAB": {
+ "name": "PAB",
+ "symbol": "PAB"
+ },
+ "EGP": {
+ "name": "Pauni ya Misri",
+ "symbol": "EGP"
+ },
+ "SHP": {
+ "name": "Pauni ya Santahelena",
+ "symbol": "SHP"
+ },
+ "GBP": {
+ "name": "Pauni ya Uingereza",
+ "symbol": "£"
+ },
+ "PEN": {
+ "name": "PEN",
+ "symbol": "PEN"
+ },
+ "PGK": {
+ "name": "PGK",
+ "symbol": "PGK"
+ },
+ "PHP": {
+ "name": "PHP",
+ "symbol": "PHP"
+ },
+ "PKR": {
+ "name": "PKR",
+ "symbol": "PKR"
+ },
+ "PLN": {
+ "name": "PLN",
+ "symbol": "PLN"
+ },
+ "BWP": {
+ "name": "Pula ya Botswana",
+ "symbol": "BWP"
+ },
+ "PYG": {
+ "name": "PYG",
+ "symbol": "PYG"
+ },
+ "QAR": {
+ "name": "QAR",
+ "symbol": "QAR"
+ },
+ "ZAR": {
+ "name": "Randi ya Afrika Kusini",
+ "symbol": "ZAR"
+ },
+ "SAR": {
+ "name": "Riyal ya Saudia",
+ "symbol": "SAR"
+ },
+ "RON": {
+ "name": "RON",
+ "symbol": "RON"
+ },
+ "RSD": {
+ "name": "RSD",
+ "symbol": "RSD"
+ },
+ "RUB": {
+ "name": "RUB",
+ "symbol": "RUB"
+ },
+ "INR": {
+ "name": "Rupia ya India",
+ "symbol": "₹"
+ },
+ "MUR": {
+ "name": "Rupia ya Morisi",
+ "symbol": "MUR"
+ },
+ "SCR": {
+ "name": "Rupia ya Shelisheli",
+ "symbol": "SCR"
+ },
+ "JPY": {
+ "name": "Sarafu ya Kijapani",
+ "symbol": "JPÂ¥"
+ },
+ "SBD": {
+ "name": "SBD",
+ "symbol": "SBD"
+ },
+ "SEK": {
+ "name": "SEK",
+ "symbol": "SEK"
+ },
+ "SGD": {
+ "name": "SGD",
+ "symbol": "SGD"
+ },
+ "KES": {
+ "name": "Shilingi ya Kenya",
+ "symbol": "KES"
+ },
+ "SOS": {
+ "name": "Shilingi ya Somalia",
+ "symbol": "SOS"
+ },
+ "TZS": {
+ "name": "Shilingi ya Tanzania",
+ "symbol": "TSh"
+ },
+ "UGX": {
+ "name": "Shilingi ya Uganda",
+ "symbol": "UGX"
+ },
+ "SRD": {
+ "name": "SRD",
+ "symbol": "SRD"
+ },
+ "SSP": {
+ "name": "SSP",
+ "symbol": "SSP"
+ },
+ "SVC": {
+ "name": "SVC",
+ "symbol": "SVC"
+ },
+ "SYP": {
+ "name": "SYP",
+ "symbol": "SYP"
+ },
+ "THB": {
+ "name": "THB",
+ "symbol": "THB"
+ },
+ "TJS": {
+ "name": "TJS",
+ "symbol": "TJS"
+ },
+ "TMT": {
+ "name": "TMT",
+ "symbol": "TMT"
+ },
+ "TOP": {
+ "name": "TOP",
+ "symbol": "TOP"
+ },
+ "TRY": {
+ "name": "TRY",
+ "symbol": "TRY"
+ },
+ "TTD": {
+ "name": "TTD",
+ "symbol": "TTD"
+ },
+ "TWD": {
+ "name": "TWD",
+ "symbol": "NT$"
+ },
+ "UAH": {
+ "name": "UAH",
+ "symbol": "UAH"
+ },
+ "MRO": {
+ "name": "Ugwiya ya Moritania",
+ "symbol": "MRO"
+ },
+ "UYU": {
+ "name": "UYU",
+ "symbol": "UYU"
+ },
+ "UZS": {
+ "name": "UZS",
+ "symbol": "UZS"
+ },
+ "VEF": {
+ "name": "VEF",
+ "symbol": "VEF"
+ },
+ "VND": {
+ "name": "VND",
+ "symbol": "â‚«"
+ },
+ "VUV": {
+ "name": "VUV",
+ "symbol": "VUV"
+ },
+ "WST": {
+ "name": "WST",
+ "symbol": "WST"
+ },
+ "XCD": {
+ "name": "XCD",
+ "symbol": "EC$"
+ },
+ "XPF": {
+ "name": "XPF",
+ "symbol": "CFPF"
+ },
+ "YER": {
+ "name": "YER",
+ "symbol": "YER"
+ },
+ "CNY": {
+ "name": "Yuan Renminbi ya China",
+ "symbol": "CNÂ¥"
+ },
+ "EUR": {
+ "name": "Yuro",
+ "symbol": "€"
+ },
+ "ZWL": {
+ "name": "ZWL",
+ "symbol": "ZWL"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/currency/wae.json b/library/intl/resources/currency/wae.json
new file mode 100644
index 000000000..9e0dcaa55
--- /dev/null
+++ b/library/intl/resources/currency/wae.json
@@ -0,0 +1,634 @@
+{
+ "AED": {
+ "name": "AED",
+ "symbol": "AED"
+ },
+ "AFN": {
+ "name": "AFN",
+ "symbol": "AFN"
+ },
+ "ALL": {
+ "name": "ALL",
+ "symbol": "ALL"
+ },
+ "AMD": {
+ "name": "AMD",
+ "symbol": "AMD"
+ },
+ "ANG": {
+ "name": "ANG",
+ "symbol": "ANG"
+ },
+ "AOA": {
+ "name": "AOA",
+ "symbol": "AOA"
+ },
+ "ARS": {
+ "name": "ARS",
+ "symbol": "ARS"
+ },
+ "AUD": {
+ "name": "AUD",
+ "symbol": "A$"
+ },
+ "AWG": {
+ "name": "AWG",
+ "symbol": "AWG"
+ },
+ "AZN": {
+ "name": "AZN",
+ "symbol": "AZN"
+ },
+ "BAM": {
+ "name": "BAM",
+ "symbol": "BAM"
+ },
+ "BBD": {
+ "name": "BBD",
+ "symbol": "BBD"
+ },
+ "BDT": {
+ "name": "BDT",
+ "symbol": "BDT"
+ },
+ "BGN": {
+ "name": "BGN",
+ "symbol": "BGN"
+ },
+ "BHD": {
+ "name": "BHD",
+ "symbol": "BHD"
+ },
+ "BIF": {
+ "name": "BIF",
+ "symbol": "BIF"
+ },
+ "BMD": {
+ "name": "BMD",
+ "symbol": "BMD"
+ },
+ "BND": {
+ "name": "BND",
+ "symbol": "BND"
+ },
+ "BOB": {
+ "name": "BOB",
+ "symbol": "BOB"
+ },
+ "BRL": {
+ "name": "Brasilianiši Real",
+ "symbol": "R$"
+ },
+ "BSD": {
+ "name": "BSD",
+ "symbol": "BSD"
+ },
+ "BTN": {
+ "name": "BTN",
+ "symbol": "BTN"
+ },
+ "BWP": {
+ "name": "BWP",
+ "symbol": "BWP"
+ },
+ "BYR": {
+ "name": "BYR",
+ "symbol": "BYR"
+ },
+ "BZD": {
+ "name": "BZD",
+ "symbol": "BZD"
+ },
+ "CAD": {
+ "name": "CAD",
+ "symbol": "CA$"
+ },
+ "CDF": {
+ "name": "CDF",
+ "symbol": "CDF"
+ },
+ "CHF": {
+ "name": "CHF",
+ "symbol": "CHF"
+ },
+ "CNY": {
+ "name": "Chinesiši Yuan",
+ "symbol": "CNÂ¥"
+ },
+ "CLP": {
+ "name": "CLP",
+ "symbol": "CLP"
+ },
+ "COP": {
+ "name": "COP",
+ "symbol": "COP"
+ },
+ "CRC": {
+ "name": "CRC",
+ "symbol": "CRC"
+ },
+ "CUC": {
+ "name": "CUC",
+ "symbol": "CUC"
+ },
+ "CUP": {
+ "name": "CUP",
+ "symbol": "CUP"
+ },
+ "CVE": {
+ "name": "CVE",
+ "symbol": "CVE"
+ },
+ "CZK": {
+ "name": "CZK",
+ "symbol": "CZK"
+ },
+ "DJF": {
+ "name": "DJF",
+ "symbol": "DJF"
+ },
+ "DKK": {
+ "name": "DKK",
+ "symbol": "DKK"
+ },
+ "USD": {
+ "name": "Dollar",
+ "symbol": "$"
+ },
+ "DOP": {
+ "name": "DOP",
+ "symbol": "DOP"
+ },
+ "DZD": {
+ "name": "DZD",
+ "symbol": "DZD"
+ },
+ "EGP": {
+ "name": "EGP",
+ "symbol": "EGP"
+ },
+ "ERN": {
+ "name": "ERN",
+ "symbol": "ERN"
+ },
+ "ETB": {
+ "name": "ETB",
+ "symbol": "ETB"
+ },
+ "EUR": {
+ "name": "Euro",
+ "symbol": "€"
+ },
+ "FJD": {
+ "name": "FJD",
+ "symbol": "FJD"
+ },
+ "FKP": {
+ "name": "FKP",
+ "symbol": "FKP"
+ },
+ "GEL": {
+ "name": "GEL",
+ "symbol": "GEL"
+ },
+ "GHS": {
+ "name": "GHS",
+ "symbol": "GHS"
+ },
+ "GIP": {
+ "name": "GIP",
+ "symbol": "GIP"
+ },
+ "GMD": {
+ "name": "GMD",
+ "symbol": "GMD"
+ },
+ "GNF": {
+ "name": "GNF",
+ "symbol": "GNF"
+ },
+ "GTQ": {
+ "name": "GTQ",
+ "symbol": "GTQ"
+ },
+ "GYD": {
+ "name": "GYD",
+ "symbol": "GYD"
+ },
+ "HKD": {
+ "name": "HKD",
+ "symbol": "HK$"
+ },
+ "HNL": {
+ "name": "HNL",
+ "symbol": "HNL"
+ },
+ "HRK": {
+ "name": "HRK",
+ "symbol": "HRK"
+ },
+ "HTG": {
+ "name": "HTG",
+ "symbol": "HTG"
+ },
+ "HUF": {
+ "name": "HUF",
+ "symbol": "HUF"
+ },
+ "IDR": {
+ "name": "IDR",
+ "symbol": "IDR"
+ },
+ "ILS": {
+ "name": "ILS",
+ "symbol": "₪"
+ },
+ "INR": {
+ "name": "Indiši Rupie",
+ "symbol": "₹"
+ },
+ "IQD": {
+ "name": "IQD",
+ "symbol": "IQD"
+ },
+ "IRR": {
+ "name": "IRR",
+ "symbol": "IRR"
+ },
+ "ISK": {
+ "name": "ISK",
+ "symbol": "ISK"
+ },
+ "JMD": {
+ "name": "JMD",
+ "symbol": "JMD"
+ },
+ "JOD": {
+ "name": "JOD",
+ "symbol": "JOD"
+ },
+ "KES": {
+ "name": "KES",
+ "symbol": "KES"
+ },
+ "KGS": {
+ "name": "KGS",
+ "symbol": "KGS"
+ },
+ "KHR": {
+ "name": "KHR",
+ "symbol": "KHR"
+ },
+ "KMF": {
+ "name": "KMF",
+ "symbol": "KMF"
+ },
+ "KPW": {
+ "name": "KPW",
+ "symbol": "KPW"
+ },
+ "KRW": {
+ "name": "KRW",
+ "symbol": "â‚©"
+ },
+ "KWD": {
+ "name": "KWD",
+ "symbol": "KWD"
+ },
+ "KYD": {
+ "name": "KYD",
+ "symbol": "KYD"
+ },
+ "KZT": {
+ "name": "KZT",
+ "symbol": "KZT"
+ },
+ "LAK": {
+ "name": "LAK",
+ "symbol": "LAK"
+ },
+ "LBP": {
+ "name": "LBP",
+ "symbol": "LBP"
+ },
+ "LKR": {
+ "name": "LKR",
+ "symbol": "LKR"
+ },
+ "LRD": {
+ "name": "LRD",
+ "symbol": "LRD"
+ },
+ "LSL": {
+ "name": "LSL",
+ "symbol": "LSL"
+ },
+ "LTL": {
+ "name": "LTL",
+ "symbol": "LTL"
+ },
+ "LYD": {
+ "name": "LYD",
+ "symbol": "LYD"
+ },
+ "MAD": {
+ "name": "MAD",
+ "symbol": "MAD"
+ },
+ "MDL": {
+ "name": "MDL",
+ "symbol": "MDL"
+ },
+ "MGA": {
+ "name": "MGA",
+ "symbol": "MGA"
+ },
+ "MKD": {
+ "name": "MKD",
+ "symbol": "MKD"
+ },
+ "MMK": {
+ "name": "MMK",
+ "symbol": "MMK"
+ },
+ "MNT": {
+ "name": "MNT",
+ "symbol": "MNT"
+ },
+ "MOP": {
+ "name": "MOP",
+ "symbol": "MOP"
+ },
+ "MRO": {
+ "name": "MRO",
+ "symbol": "MRO"
+ },
+ "MUR": {
+ "name": "MUR",
+ "symbol": "MUR"
+ },
+ "MVR": {
+ "name": "MVR",
+ "symbol": "MVR"
+ },
+ "MWK": {
+ "name": "MWK",
+ "symbol": "MWK"
+ },
+ "MXN": {
+ "name": "MXN",
+ "symbol": "MX$"
+ },
+ "MYR": {
+ "name": "MYR",
+ "symbol": "MYR"
+ },
+ "MZN": {
+ "name": "MZN",
+ "symbol": "MZN"
+ },
+ "NAD": {
+ "name": "NAD",
+ "symbol": "NAD"
+ },
+ "NGN": {
+ "name": "NGN",
+ "symbol": "NGN"
+ },
+ "NIO": {
+ "name": "NIO",
+ "symbol": "NIO"
+ },
+ "NOK": {
+ "name": "NOK",
+ "symbol": "NOK"
+ },
+ "NPR": {
+ "name": "NPR",
+ "symbol": "NPR"
+ },
+ "NZD": {
+ "name": "NZD",
+ "symbol": "NZ$"
+ },
+ "OMR": {
+ "name": "OMR",
+ "symbol": "OMR"
+ },
+ "PAB": {
+ "name": "PAB",
+ "symbol": "PAB"
+ },
+ "PEN": {
+ "name": "PEN",
+ "symbol": "PEN"
+ },
+ "GBP": {
+ "name": "Pfund",
+ "symbol": "£"
+ },
+ "PGK": {
+ "name": "PGK",
+ "symbol": "PGK"
+ },
+ "PHP": {
+ "name": "PHP",
+ "symbol": "PHP"
+ },
+ "PKR": {
+ "name": "PKR",
+ "symbol": "PKR"
+ },
+ "PLN": {
+ "name": "PLN",
+ "symbol": "PLN"
+ },
+ "PYG": {
+ "name": "PYG",
+ "symbol": "PYG"
+ },
+ "QAR": {
+ "name": "QAR",
+ "symbol": "QAR"
+ },
+ "RON": {
+ "name": "RON",
+ "symbol": "RON"
+ },
+ "RSD": {
+ "name": "RSD",
+ "symbol": "RSD"
+ },
+ "RUB": {
+ "name": "Rubel",
+ "symbol": "руб"
+ },
+ "RWF": {
+ "name": "RWF",
+ "symbol": "RWF"
+ },
+ "SAR": {
+ "name": "SAR",
+ "symbol": "SAR"
+ },
+ "SBD": {
+ "name": "SBD",
+ "symbol": "SBD"
+ },
+ "SCR": {
+ "name": "SCR",
+ "symbol": "SCR"
+ },
+ "SDG": {
+ "name": "SDG",
+ "symbol": "SDG"
+ },
+ "SEK": {
+ "name": "SEK",
+ "symbol": "SEK"
+ },
+ "SGD": {
+ "name": "SGD",
+ "symbol": "SGD"
+ },
+ "SHP": {
+ "name": "SHP",
+ "symbol": "SHP"
+ },
+ "SLL": {
+ "name": "SLL",
+ "symbol": "SLL"
+ },
+ "SOS": {
+ "name": "SOS",
+ "symbol": "SOS"
+ },
+ "SRD": {
+ "name": "SRD",
+ "symbol": "SRD"
+ },
+ "SSP": {
+ "name": "SSP",
+ "symbol": "SSP"
+ },
+ "STD": {
+ "name": "STD",
+ "symbol": "STD"
+ },
+ "SVC": {
+ "name": "SVC",
+ "symbol": "SVC"
+ },
+ "SYP": {
+ "name": "SYP",
+ "symbol": "SYP"
+ },
+ "SZL": {
+ "name": "SZL",
+ "symbol": "SZL"
+ },
+ "THB": {
+ "name": "THB",
+ "symbol": "THB"
+ },
+ "TJS": {
+ "name": "TJS",
+ "symbol": "TJS"
+ },
+ "TMT": {
+ "name": "TMT",
+ "symbol": "TMT"
+ },
+ "TND": {
+ "name": "TND",
+ "symbol": "TND"
+ },
+ "TOP": {
+ "name": "TOP",
+ "symbol": "TOP"
+ },
+ "TRY": {
+ "name": "TRY",
+ "symbol": "TRY"
+ },
+ "TTD": {
+ "name": "TTD",
+ "symbol": "TTD"
+ },
+ "TWD": {
+ "name": "TWD",
+ "symbol": "NT$"
+ },
+ "TZS": {
+ "name": "TZS",
+ "symbol": "TZS"
+ },
+ "UAH": {
+ "name": "UAH",
+ "symbol": "UAH"
+ },
+ "UGX": {
+ "name": "UGX",
+ "symbol": "UGX"
+ },
+ "UYU": {
+ "name": "UYU",
+ "symbol": "UYU"
+ },
+ "UZS": {
+ "name": "UZS",
+ "symbol": "UZS"
+ },
+ "VEF": {
+ "name": "VEF",
+ "symbol": "VEF"
+ },
+ "VND": {
+ "name": "VND",
+ "symbol": "â‚«"
+ },
+ "VUV": {
+ "name": "VUV",
+ "symbol": "VUV"
+ },
+ "WST": {
+ "name": "WST",
+ "symbol": "WST"
+ },
+ "XAF": {
+ "name": "XAF",
+ "symbol": "FCFA"
+ },
+ "XCD": {
+ "name": "XCD",
+ "symbol": "EC$"
+ },
+ "XOF": {
+ "name": "XOF",
+ "symbol": "CFA"
+ },
+ "XPF": {
+ "name": "XPF",
+ "symbol": "CFPF"
+ },
+ "JPY": {
+ "name": "Yen",
+ "symbol": "Â¥"
+ },
+ "YER": {
+ "name": "YER",
+ "symbol": "YER"
+ },
+ "ZAR": {
+ "name": "ZAR",
+ "symbol": "ZAR"
+ },
+ "ZMW": {
+ "name": "ZMW",
+ "symbol": "ZMW"
+ },
+ "ZWL": {
+ "name": "ZWL",
+ "symbol": "ZWL"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/currency/xog.json b/library/intl/resources/currency/xog.json
new file mode 100644
index 000000000..efca32231
--- /dev/null
+++ b/library/intl/resources/currency/xog.json
@@ -0,0 +1,634 @@
+{
+ "AFN": {
+ "name": "AFN",
+ "symbol": "AFN"
+ },
+ "ALL": {
+ "name": "ALL",
+ "symbol": "ALL"
+ },
+ "AMD": {
+ "name": "AMD",
+ "symbol": "AMD"
+ },
+ "ANG": {
+ "name": "ANG",
+ "symbol": "ANG"
+ },
+ "ARS": {
+ "name": "ARS",
+ "symbol": "ARS"
+ },
+ "AWG": {
+ "name": "AWG",
+ "symbol": "AWG"
+ },
+ "AZN": {
+ "name": "AZN",
+ "symbol": "AZN"
+ },
+ "BAM": {
+ "name": "BAM",
+ "symbol": "BAM"
+ },
+ "BBD": {
+ "name": "BBD",
+ "symbol": "BBD"
+ },
+ "BDT": {
+ "name": "BDT",
+ "symbol": "BDT"
+ },
+ "BGN": {
+ "name": "BGN",
+ "symbol": "BGN"
+ },
+ "ETB": {
+ "name": "Biiru ya Esyopya",
+ "symbol": "ETB"
+ },
+ "BMD": {
+ "name": "BMD",
+ "symbol": "BMD"
+ },
+ "BND": {
+ "name": "BND",
+ "symbol": "BND"
+ },
+ "BOB": {
+ "name": "BOB",
+ "symbol": "BOB"
+ },
+ "BRL": {
+ "name": "BRL",
+ "symbol": "R$"
+ },
+ "BSD": {
+ "name": "BSD",
+ "symbol": "BSD"
+ },
+ "BTN": {
+ "name": "BTN",
+ "symbol": "BTN"
+ },
+ "BYR": {
+ "name": "BYR",
+ "symbol": "BYR"
+ },
+ "BZD": {
+ "name": "BZD",
+ "symbol": "BZD"
+ },
+ "CLP": {
+ "name": "CLP",
+ "symbol": "CLP"
+ },
+ "COP": {
+ "name": "COP",
+ "symbol": "COP"
+ },
+ "CRC": {
+ "name": "CRC",
+ "symbol": "CRC"
+ },
+ "CUC": {
+ "name": "CUC",
+ "symbol": "CUC"
+ },
+ "CUP": {
+ "name": "CUP",
+ "symbol": "CUP"
+ },
+ "CZK": {
+ "name": "CZK",
+ "symbol": "CZK"
+ },
+ "GMD": {
+ "name": "Dalasi ya Gambya",
+ "symbol": "GMD"
+ },
+ "SDG": {
+ "name": "Dinaali ey’eSudaani",
+ "symbol": "SDG"
+ },
+ "TND": {
+ "name": "Dinaali ey’eTunizya",
+ "symbol": "TND"
+ },
+ "DZD": {
+ "name": "Dinaali y’Aligerya",
+ "symbol": "DZD"
+ },
+ "BHD": {
+ "name": "Dinaali ya Baareeni",
+ "symbol": "BHD"
+ },
+ "LYD": {
+ "name": "Dinaali ya Libya",
+ "symbol": "LYD"
+ },
+ "MAD": {
+ "name": "Diraamu ey’eMoroko",
+ "symbol": "MAD"
+ },
+ "AED": {
+ "name": "Diraamu eya Emireeti",
+ "symbol": "AED"
+ },
+ "DKK": {
+ "name": "DKK",
+ "symbol": "DKK"
+ },
+ "STD": {
+ "name": "Dobura ey’eSantome ne Purincipe",
+ "symbol": "STD"
+ },
+ "USD": {
+ "name": "Doola ey’Amerika",
+ "symbol": "US$"
+ },
+ "AUD": {
+ "name": "Doola y’Awusiturelya",
+ "symbol": "A$"
+ },
+ "CAD": {
+ "name": "Doola ya Kanada",
+ "symbol": "CA$"
+ },
+ "LRD": {
+ "name": "Doola ya Liberya",
+ "symbol": "LRD"
+ },
+ "DOP": {
+ "name": "DOP",
+ "symbol": "DOP"
+ },
+ "CVE": {
+ "name": "Esikudo ya Keepu Veredi",
+ "symbol": "CVE"
+ },
+ "MGA": {
+ "name": "Faranga ey’eMalagase",
+ "symbol": "MGA"
+ },
+ "RWF": {
+ "name": "Faranga ey’eRwanda",
+ "symbol": "RWF"
+ },
+ "CHF": {
+ "name": "Faranga ey’eSwitizirandi",
+ "symbol": "CHF"
+ },
+ "BIF": {
+ "name": "Faranga ya burundi",
+ "symbol": "BIF"
+ },
+ "DJF": {
+ "name": "Faranga ya Jjibuti",
+ "symbol": "DJF"
+ },
+ "KMF": {
+ "name": "Faranga ya Komoro",
+ "symbol": "KMF"
+ },
+ "CDF": {
+ "name": "Faranga ya Kongo",
+ "symbol": "CDF"
+ },
+ "XOF": {
+ "name": "Faranga yamu Afirika ya bugwanjuba",
+ "symbol": "CFA"
+ },
+ "XAF": {
+ "name": "Faranga yamu Afirika ya wakati",
+ "symbol": "FCFA"
+ },
+ "FJD": {
+ "name": "FJD",
+ "symbol": "FJD"
+ },
+ "FKP": {
+ "name": "FKP",
+ "symbol": "FKP"
+ },
+ "GEL": {
+ "name": "GEL",
+ "symbol": "GEL"
+ },
+ "GHS": {
+ "name": "GHS",
+ "symbol": "GHS"
+ },
+ "GIP": {
+ "name": "GIP",
+ "symbol": "GIP"
+ },
+ "GNF": {
+ "name": "GNF",
+ "symbol": "GNF"
+ },
+ "GTQ": {
+ "name": "GTQ",
+ "symbol": "GTQ"
+ },
+ "GYD": {
+ "name": "GYD",
+ "symbol": "GYD"
+ },
+ "HKD": {
+ "name": "HKD",
+ "symbol": "HK$"
+ },
+ "HNL": {
+ "name": "HNL",
+ "symbol": "HNL"
+ },
+ "HRK": {
+ "name": "HRK",
+ "symbol": "HRK"
+ },
+ "HTG": {
+ "name": "HTG",
+ "symbol": "HTG"
+ },
+ "HUF": {
+ "name": "HUF",
+ "symbol": "HUF"
+ },
+ "IDR": {
+ "name": "IDR",
+ "symbol": "IDR"
+ },
+ "ILS": {
+ "name": "ILS",
+ "symbol": "₪"
+ },
+ "IQD": {
+ "name": "IQD",
+ "symbol": "IQD"
+ },
+ "IRR": {
+ "name": "IRR",
+ "symbol": "IRR"
+ },
+ "ISK": {
+ "name": "ISK",
+ "symbol": "ISK"
+ },
+ "JMD": {
+ "name": "JMD",
+ "symbol": "JMD"
+ },
+ "JOD": {
+ "name": "JOD",
+ "symbol": "JOD"
+ },
+ "KGS": {
+ "name": "KGS",
+ "symbol": "KGS"
+ },
+ "KHR": {
+ "name": "KHR",
+ "symbol": "KHR"
+ },
+ "KPW": {
+ "name": "KPW",
+ "symbol": "KPW"
+ },
+ "KRW": {
+ "name": "KRW",
+ "symbol": "â‚©"
+ },
+ "MWK": {
+ "name": "Kwaca ey’eMalawi",
+ "symbol": "MWK"
+ },
+ "ZMW": {
+ "name": "Kwaca ey’eZambya",
+ "symbol": "ZMW"
+ },
+ "AOA": {
+ "name": "Kwanza y’Angola",
+ "symbol": "AOA"
+ },
+ "KWD": {
+ "name": "KWD",
+ "symbol": "KWD"
+ },
+ "KYD": {
+ "name": "KYD",
+ "symbol": "KYD"
+ },
+ "KZT": {
+ "name": "KZT",
+ "symbol": "KZT"
+ },
+ "LAK": {
+ "name": "LAK",
+ "symbol": "LAK"
+ },
+ "LBP": {
+ "name": "LBP",
+ "symbol": "LBP"
+ },
+ "SLL": {
+ "name": "Lewone",
+ "symbol": "SLL"
+ },
+ "SZL": {
+ "name": "Lilangeni",
+ "symbol": "SZL"
+ },
+ "LKR": {
+ "name": "LKR",
+ "symbol": "LKR"
+ },
+ "LSL": {
+ "name": "Loti ya Lesoso",
+ "symbol": "LSL"
+ },
+ "LTL": {
+ "name": "LTL",
+ "symbol": "LTL"
+ },
+ "MDL": {
+ "name": "MDL",
+ "symbol": "MDL"
+ },
+ "MKD": {
+ "name": "MKD",
+ "symbol": "MKD"
+ },
+ "MMK": {
+ "name": "MMK",
+ "symbol": "MMK"
+ },
+ "MNT": {
+ "name": "MNT",
+ "symbol": "MNT"
+ },
+ "MOP": {
+ "name": "MOP",
+ "symbol": "MOP"
+ },
+ "MVR": {
+ "name": "MVR",
+ "symbol": "MVR"
+ },
+ "MXN": {
+ "name": "MXN",
+ "symbol": "MX$"
+ },
+ "MYR": {
+ "name": "MYR",
+ "symbol": "MYR"
+ },
+ "MZN": {
+ "name": "MZN",
+ "symbol": "MZN"
+ },
+ "NAD": {
+ "name": "NAD",
+ "symbol": "NAD"
+ },
+ "ERN": {
+ "name": "Nakifa ya Eritureya",
+ "symbol": "ERN"
+ },
+ "NGN": {
+ "name": "Nayira ey’eNayijerya",
+ "symbol": "NGN"
+ },
+ "NIO": {
+ "name": "NIO",
+ "symbol": "NIO"
+ },
+ "NOK": {
+ "name": "NOK",
+ "symbol": "NOK"
+ },
+ "NPR": {
+ "name": "NPR",
+ "symbol": "NPR"
+ },
+ "NZD": {
+ "name": "NZD",
+ "symbol": "NZ$"
+ },
+ "OMR": {
+ "name": "OMR",
+ "symbol": "OMR"
+ },
+ "PAB": {
+ "name": "PAB",
+ "symbol": "PAB"
+ },
+ "SHP": {
+ "name": "Pawunda ey’eSenti Herena",
+ "symbol": "SHP"
+ },
+ "GBP": {
+ "name": "Pawunda ya Bungereza",
+ "symbol": "£"
+ },
+ "EGP": {
+ "name": "Pawunda ya Misiri",
+ "symbol": "EGP"
+ },
+ "PEN": {
+ "name": "PEN",
+ "symbol": "PEN"
+ },
+ "PGK": {
+ "name": "PGK",
+ "symbol": "PGK"
+ },
+ "PHP": {
+ "name": "PHP",
+ "symbol": "PHP"
+ },
+ "PKR": {
+ "name": "PKR",
+ "symbol": "PKR"
+ },
+ "PLN": {
+ "name": "PLN",
+ "symbol": "PLN"
+ },
+ "BWP": {
+ "name": "Pula ya Botiswana",
+ "symbol": "BWP"
+ },
+ "PYG": {
+ "name": "PYG",
+ "symbol": "PYG"
+ },
+ "QAR": {
+ "name": "QAR",
+ "symbol": "QAR"
+ },
+ "ZAR": {
+ "name": "Randi ey’eSawusafirika",
+ "symbol": "ZAR"
+ },
+ "SAR": {
+ "name": "Riyaali ey’eBuwarabu",
+ "symbol": "SAR"
+ },
+ "RON": {
+ "name": "RON",
+ "symbol": "RON"
+ },
+ "RSD": {
+ "name": "RSD",
+ "symbol": "RSD"
+ },
+ "RUB": {
+ "name": "RUB",
+ "symbol": "RUB"
+ },
+ "MUR": {
+ "name": "Rupiya ey’eMawurisyasi",
+ "symbol": "MUR"
+ },
+ "SCR": {
+ "name": "Rupiya ey’eSesere",
+ "symbol": "SCR"
+ },
+ "INR": {
+ "name": "Rupiya ya Buyindi",
+ "symbol": "₹"
+ },
+ "SBD": {
+ "name": "SBD",
+ "symbol": "SBD"
+ },
+ "SEK": {
+ "name": "SEK",
+ "symbol": "SEK"
+ },
+ "SGD": {
+ "name": "SGD",
+ "symbol": "SGD"
+ },
+ "SOS": {
+ "name": "Silingi ey’eSomaliya",
+ "symbol": "SOS"
+ },
+ "TZS": {
+ "name": "Silingi ey’eTanzaniya",
+ "symbol": "TZS"
+ },
+ "UGX": {
+ "name": "Silingi eya Yuganda",
+ "symbol": "USh"
+ },
+ "KES": {
+ "name": "Silingi ya Kenya",
+ "symbol": "KES"
+ },
+ "SRD": {
+ "name": "SRD",
+ "symbol": "SRD"
+ },
+ "SSP": {
+ "name": "SSP",
+ "symbol": "SSP"
+ },
+ "SVC": {
+ "name": "SVC",
+ "symbol": "SVC"
+ },
+ "SYP": {
+ "name": "SYP",
+ "symbol": "SYP"
+ },
+ "THB": {
+ "name": "THB",
+ "symbol": "THB"
+ },
+ "TJS": {
+ "name": "TJS",
+ "symbol": "TJS"
+ },
+ "TMT": {
+ "name": "TMT",
+ "symbol": "TMT"
+ },
+ "TOP": {
+ "name": "TOP",
+ "symbol": "TOP"
+ },
+ "TRY": {
+ "name": "TRY",
+ "symbol": "TRY"
+ },
+ "TTD": {
+ "name": "TTD",
+ "symbol": "TTD"
+ },
+ "TWD": {
+ "name": "TWD",
+ "symbol": "NT$"
+ },
+ "UAH": {
+ "name": "UAH",
+ "symbol": "UAH"
+ },
+ "UYU": {
+ "name": "UYU",
+ "symbol": "UYU"
+ },
+ "UZS": {
+ "name": "UZS",
+ "symbol": "UZS"
+ },
+ "VEF": {
+ "name": "VEF",
+ "symbol": "VEF"
+ },
+ "VND": {
+ "name": "VND",
+ "symbol": "â‚«"
+ },
+ "VUV": {
+ "name": "VUV",
+ "symbol": "VUV"
+ },
+ "WST": {
+ "name": "WST",
+ "symbol": "WST"
+ },
+ "MRO": {
+ "name": "Wugwiya ey’eMawritenya",
+ "symbol": "MRO"
+ },
+ "XCD": {
+ "name": "XCD",
+ "symbol": "EC$"
+ },
+ "XPF": {
+ "name": "XPF",
+ "symbol": "CFPF"
+ },
+ "JPY": {
+ "name": "Yeni ya Japani",
+ "symbol": "JPÂ¥"
+ },
+ "YER": {
+ "name": "YER",
+ "symbol": "YER"
+ },
+ "EUR": {
+ "name": "Yuro",
+ "symbol": "€"
+ },
+ "CNY": {
+ "name": "Yuwani Reniminibi ya Cayina",
+ "symbol": "CNÂ¥"
+ },
+ "ZWL": {
+ "name": "ZWL",
+ "symbol": "ZWL"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/currency/yav.json b/library/intl/resources/currency/yav.json
new file mode 100644
index 000000000..369e6d3c8
--- /dev/null
+++ b/library/intl/resources/currency/yav.json
@@ -0,0 +1,634 @@
+{
+ "AED": {
+ "name": "AED",
+ "symbol": "AED"
+ },
+ "AFN": {
+ "name": "AFN",
+ "symbol": "AFN"
+ },
+ "ALL": {
+ "name": "ALL",
+ "symbol": "ALL"
+ },
+ "AMD": {
+ "name": "AMD",
+ "symbol": "AMD"
+ },
+ "ANG": {
+ "name": "ANG",
+ "symbol": "ANG"
+ },
+ "ARS": {
+ "name": "ARS",
+ "symbol": "ARS"
+ },
+ "AWG": {
+ "name": "AWG",
+ "symbol": "AWG"
+ },
+ "AZN": {
+ "name": "AZN",
+ "symbol": "AZN"
+ },
+ "BAM": {
+ "name": "BAM",
+ "symbol": "BAM"
+ },
+ "BBD": {
+ "name": "BBD",
+ "symbol": "BBD"
+ },
+ "BDT": {
+ "name": "BDT",
+ "symbol": "BDT"
+ },
+ "BGN": {
+ "name": "BGN",
+ "symbol": "BGN"
+ },
+ "BMD": {
+ "name": "BMD",
+ "symbol": "BMD"
+ },
+ "BND": {
+ "name": "BND",
+ "symbol": "BND"
+ },
+ "BOB": {
+ "name": "BOB",
+ "symbol": "BOB"
+ },
+ "BRL": {
+ "name": "BRL",
+ "symbol": "R$"
+ },
+ "BSD": {
+ "name": "BSD",
+ "symbol": "BSD"
+ },
+ "BTN": {
+ "name": "BTN",
+ "symbol": "BTN"
+ },
+ "BYR": {
+ "name": "BYR",
+ "symbol": "BYR"
+ },
+ "BZD": {
+ "name": "BZD",
+ "symbol": "BZD"
+ },
+ "CHF": {
+ "name": "CHF",
+ "symbol": "CHF"
+ },
+ "CLP": {
+ "name": "CLP",
+ "symbol": "CLP"
+ },
+ "COP": {
+ "name": "COP",
+ "symbol": "COP"
+ },
+ "CRC": {
+ "name": "CRC",
+ "symbol": "CRC"
+ },
+ "CUC": {
+ "name": "CUC",
+ "symbol": "CUC"
+ },
+ "CUP": {
+ "name": "CUP",
+ "symbol": "CUP"
+ },
+ "CZK": {
+ "name": "CZK",
+ "symbol": "CZK"
+ },
+ "DKK": {
+ "name": "DKK",
+ "symbol": "DKK"
+ },
+ "DOP": {
+ "name": "DOP",
+ "symbol": "DOP"
+ },
+ "CVE": {
+ "name": "É›skúdo u kápfÉ›ÌÉ›l",
+ "symbol": "CVE"
+ },
+ "CDF": {
+ "name": "Ìfaláŋɛ u kongó",
+ "symbol": "CDF"
+ },
+ "KMF": {
+ "name": "Ìfaláŋɛ u kÉ”mÉ”ÌÉ”l",
+ "symbol": "KMF"
+ },
+ "BIF": {
+ "name": "faláŋɛ u pulundí",
+ "symbol": "BIF"
+ },
+ "DJF": {
+ "name": "Ìfaláŋɛ u síputí",
+ "symbol": "DJF"
+ },
+ "FJD": {
+ "name": "FJD",
+ "symbol": "FJD"
+ },
+ "FKP": {
+ "name": "FKP",
+ "symbol": "FKP"
+ },
+ "GEL": {
+ "name": "GEL",
+ "symbol": "GEL"
+ },
+ "GHS": {
+ "name": "GHS",
+ "symbol": "GHS"
+ },
+ "GIP": {
+ "name": "GIP",
+ "symbol": "GIP"
+ },
+ "GNF": {
+ "name": "GNF",
+ "symbol": "GNF"
+ },
+ "GTQ": {
+ "name": "GTQ",
+ "symbol": "GTQ"
+ },
+ "GYD": {
+ "name": "GYD",
+ "symbol": "GYD"
+ },
+ "HKD": {
+ "name": "HKD",
+ "symbol": "HK$"
+ },
+ "HNL": {
+ "name": "HNL",
+ "symbol": "HNL"
+ },
+ "HRK": {
+ "name": "HRK",
+ "symbol": "HRK"
+ },
+ "HTG": {
+ "name": "HTG",
+ "symbol": "HTG"
+ },
+ "HUF": {
+ "name": "HUF",
+ "symbol": "HUF"
+ },
+ "IDR": {
+ "name": "IDR",
+ "symbol": "IDR"
+ },
+ "ILS": {
+ "name": "ILS",
+ "symbol": "₪"
+ },
+ "IQD": {
+ "name": "IQD",
+ "symbol": "IQD"
+ },
+ "IRR": {
+ "name": "IRR",
+ "symbol": "IRR"
+ },
+ "ISK": {
+ "name": "ISK",
+ "symbol": "ISK"
+ },
+ "JMD": {
+ "name": "JMD",
+ "symbol": "JMD"
+ },
+ "JOD": {
+ "name": "JOD",
+ "symbol": "JOD"
+ },
+ "KGS": {
+ "name": "KGS",
+ "symbol": "KGS"
+ },
+ "KHR": {
+ "name": "KHR",
+ "symbol": "KHR"
+ },
+ "KPW": {
+ "name": "KPW",
+ "symbol": "KPW"
+ },
+ "KRW": {
+ "name": "KRW",
+ "symbol": "â‚©"
+ },
+ "AOA": {
+ "name": "kuansa wu angolá",
+ "symbol": "AOA"
+ },
+ "KWD": {
+ "name": "KWD",
+ "symbol": "KWD"
+ },
+ "KYD": {
+ "name": "KYD",
+ "symbol": "KYD"
+ },
+ "KZT": {
+ "name": "KZT",
+ "symbol": "KZT"
+ },
+ "LAK": {
+ "name": "LAK",
+ "symbol": "LAK"
+ },
+ "LBP": {
+ "name": "LBP",
+ "symbol": "LBP"
+ },
+ "GBP": {
+ "name": "lífilɛ sitelelíiŋ",
+ "symbol": "£"
+ },
+ "EGP": {
+ "name": "lífilɛ wu isípit",
+ "symbol": "EGP"
+ },
+ "LKR": {
+ "name": "LKR",
+ "symbol": "LKR"
+ },
+ "LRD": {
+ "name": "LRD",
+ "symbol": "LRD"
+ },
+ "LSL": {
+ "name": "LSL",
+ "symbol": "LSL"
+ },
+ "LTL": {
+ "name": "LTL",
+ "symbol": "LTL"
+ },
+ "LYD": {
+ "name": "LYD",
+ "symbol": "LYD"
+ },
+ "MAD": {
+ "name": "MAD",
+ "symbol": "MAD"
+ },
+ "MDL": {
+ "name": "MDL",
+ "symbol": "MDL"
+ },
+ "MGA": {
+ "name": "MGA",
+ "symbol": "MGA"
+ },
+ "MKD": {
+ "name": "MKD",
+ "symbol": "MKD"
+ },
+ "MMK": {
+ "name": "MMK",
+ "symbol": "MMK"
+ },
+ "MNT": {
+ "name": "MNT",
+ "symbol": "MNT"
+ },
+ "MOP": {
+ "name": "MOP",
+ "symbol": "MOP"
+ },
+ "MRO": {
+ "name": "MRO",
+ "symbol": "MRO"
+ },
+ "MUR": {
+ "name": "MUR",
+ "symbol": "MUR"
+ },
+ "MVR": {
+ "name": "MVR",
+ "symbol": "MVR"
+ },
+ "MWK": {
+ "name": "MWK",
+ "symbol": "MWK"
+ },
+ "MXN": {
+ "name": "MXN",
+ "symbol": "MX$"
+ },
+ "MYR": {
+ "name": "MYR",
+ "symbol": "MYR"
+ },
+ "MZN": {
+ "name": "MZN",
+ "symbol": "MZN"
+ },
+ "NAD": {
+ "name": "NAD",
+ "symbol": "NAD"
+ },
+ "ERN": {
+ "name": "náfka wu elitilée",
+ "symbol": "ERN"
+ },
+ "NGN": {
+ "name": "NGN",
+ "symbol": "NGN"
+ },
+ "NIO": {
+ "name": "NIO",
+ "symbol": "NIO"
+ },
+ "NOK": {
+ "name": "NOK",
+ "symbol": "NOK"
+ },
+ "NPR": {
+ "name": "NPR",
+ "symbol": "NPR"
+ },
+ "NZD": {
+ "name": "NZD",
+ "symbol": "NZ$"
+ },
+ "EUR": {
+ "name": "olóo",
+ "symbol": "€"
+ },
+ "OMR": {
+ "name": "OMR",
+ "symbol": "OMR"
+ },
+ "PAB": {
+ "name": "PAB",
+ "symbol": "PAB"
+ },
+ "PEN": {
+ "name": "PEN",
+ "symbol": "PEN"
+ },
+ "PGK": {
+ "name": "PGK",
+ "symbol": "PGK"
+ },
+ "PHP": {
+ "name": "PHP",
+ "symbol": "PHP"
+ },
+ "ETB": {
+ "name": "píil wu etiopí",
+ "symbol": "ETB"
+ },
+ "PKR": {
+ "name": "PKR",
+ "symbol": "PKR"
+ },
+ "PLN": {
+ "name": "PLN",
+ "symbol": "PLN"
+ },
+ "BWP": {
+ "name": "pula pu posuána",
+ "symbol": "BWP"
+ },
+ "PYG": {
+ "name": "PYG",
+ "symbol": "PYG"
+ },
+ "QAR": {
+ "name": "QAR",
+ "symbol": "QAR"
+ },
+ "RON": {
+ "name": "RON",
+ "symbol": "RON"
+ },
+ "RSD": {
+ "name": "RSD",
+ "symbol": "RSD"
+ },
+ "RUB": {
+ "name": "RUB",
+ "symbol": "RUB"
+ },
+ "RWF": {
+ "name": "RWF",
+ "symbol": "RWF"
+ },
+ "SAR": {
+ "name": "SAR",
+ "symbol": "SAR"
+ },
+ "SBD": {
+ "name": "SBD",
+ "symbol": "SBD"
+ },
+ "SCR": {
+ "name": "SCR",
+ "symbol": "SCR"
+ },
+ "SDG": {
+ "name": "SDG",
+ "symbol": "SDG"
+ },
+ "SEK": {
+ "name": "SEK",
+ "symbol": "SEK"
+ },
+ "SGD": {
+ "name": "SGD",
+ "symbol": "SGD"
+ },
+ "SHP": {
+ "name": "SHP",
+ "symbol": "SHP"
+ },
+ "KES": {
+ "name": "síliŋ u kénia",
+ "symbol": "KES"
+ },
+ "SLL": {
+ "name": "SLL",
+ "symbol": "SLL"
+ },
+ "SOS": {
+ "name": "SOS",
+ "symbol": "SOS"
+ },
+ "SRD": {
+ "name": "SRD",
+ "symbol": "SRD"
+ },
+ "SSP": {
+ "name": "SSP",
+ "symbol": "SSP"
+ },
+ "STD": {
+ "name": "STD",
+ "symbol": "STD"
+ },
+ "SVC": {
+ "name": "SVC",
+ "symbol": "SVC"
+ },
+ "SYP": {
+ "name": "SYP",
+ "symbol": "SYP"
+ },
+ "SZL": {
+ "name": "SZL",
+ "symbol": "SZL"
+ },
+ "GMD": {
+ "name": "talasí u kaambí",
+ "symbol": "GMD"
+ },
+ "THB": {
+ "name": "THB",
+ "symbol": "THB"
+ },
+ "DZD": {
+ "name": "tináal wu alselí",
+ "symbol": "DZD"
+ },
+ "BHD": {
+ "name": "tináal wu paaléen",
+ "symbol": "BHD"
+ },
+ "TJS": {
+ "name": "TJS",
+ "symbol": "TJS"
+ },
+ "TMT": {
+ "name": "TMT",
+ "symbol": "TMT"
+ },
+ "TND": {
+ "name": "TND",
+ "symbol": "TND"
+ },
+ "CAD": {
+ "name": "toláal u kanáta",
+ "symbol": "CA$"
+ },
+ "AUD": {
+ "name": "toláal wu ostalalí",
+ "symbol": "A$"
+ },
+ "TOP": {
+ "name": "TOP",
+ "symbol": "TOP"
+ },
+ "TRY": {
+ "name": "TRY",
+ "symbol": "TRY"
+ },
+ "TTD": {
+ "name": "TTD",
+ "symbol": "TTD"
+ },
+ "TWD": {
+ "name": "TWD",
+ "symbol": "NT$"
+ },
+ "TZS": {
+ "name": "TZS",
+ "symbol": "TZS"
+ },
+ "UAH": {
+ "name": "UAH",
+ "symbol": "UAH"
+ },
+ "UGX": {
+ "name": "UGX",
+ "symbol": "UGX"
+ },
+ "INR": {
+ "name": "ulupí",
+ "symbol": "₹"
+ },
+ "USD": {
+ "name": "USD",
+ "symbol": "US$"
+ },
+ "UYU": {
+ "name": "UYU",
+ "symbol": "UYU"
+ },
+ "UZS": {
+ "name": "UZS",
+ "symbol": "UZS"
+ },
+ "VEF": {
+ "name": "VEF",
+ "symbol": "VEF"
+ },
+ "VND": {
+ "name": "VND",
+ "symbol": "â‚«"
+ },
+ "VUV": {
+ "name": "VUV",
+ "symbol": "VUV"
+ },
+ "WST": {
+ "name": "WST",
+ "symbol": "WST"
+ },
+ "XAF": {
+ "name": "XAF",
+ "symbol": "FCFA"
+ },
+ "XCD": {
+ "name": "XCD",
+ "symbol": "EC$"
+ },
+ "XOF": {
+ "name": "XOF",
+ "symbol": "CFA"
+ },
+ "XPF": {
+ "name": "XPF",
+ "symbol": "CFPF"
+ },
+ "YER": {
+ "name": "YER",
+ "symbol": "YER"
+ },
+ "JPY": {
+ "name": "yÉ›ÌÉ›n u sapÉ”Ìɔŋ",
+ "symbol": "JPÂ¥"
+ },
+ "CNY": {
+ "name": "yuan ɛlɛnmimbí",
+ "symbol": "CNÂ¥"
+ },
+ "ZAR": {
+ "name": "ZAR",
+ "symbol": "ZAR"
+ },
+ "ZMW": {
+ "name": "ZMW",
+ "symbol": "ZMW"
+ },
+ "ZWL": {
+ "name": "ZWL",
+ "symbol": "ZWL"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/currency/yo-BJ.json b/library/intl/resources/currency/yo-BJ.json
new file mode 100644
index 000000000..8aee86ea1
--- /dev/null
+++ b/library/intl/resources/currency/yo-BJ.json
@@ -0,0 +1,634 @@
+{
+ "AFN": {
+ "name": "AFN",
+ "symbol": "AFN"
+ },
+ "ALL": {
+ "name": "ALL",
+ "symbol": "ALL"
+ },
+ "AMD": {
+ "name": "AMD",
+ "symbol": "AMD"
+ },
+ "ANG": {
+ "name": "ANG",
+ "symbol": "ANG"
+ },
+ "ARS": {
+ "name": "ARS",
+ "symbol": "ARS"
+ },
+ "AWG": {
+ "name": "AWG",
+ "symbol": "AWG"
+ },
+ "AZN": {
+ "name": "AZN",
+ "symbol": "AZN"
+ },
+ "BAM": {
+ "name": "BAM",
+ "symbol": "BAM"
+ },
+ "BBD": {
+ "name": "BBD",
+ "symbol": "BBD"
+ },
+ "BDT": {
+ "name": "BDT",
+ "symbol": "BDT"
+ },
+ "BGN": {
+ "name": "BGN",
+ "symbol": "BGN"
+ },
+ "ETB": {
+ "name": "Biri ti OrílÉ›Ìède Eutopia",
+ "symbol": "ETB"
+ },
+ "BMD": {
+ "name": "BMD",
+ "symbol": "BMD"
+ },
+ "BND": {
+ "name": "BND",
+ "symbol": "BND"
+ },
+ "BOB": {
+ "name": "BOB",
+ "symbol": "BOB"
+ },
+ "BRL": {
+ "name": "BRL",
+ "symbol": "R$"
+ },
+ "BSD": {
+ "name": "BSD",
+ "symbol": "BSD"
+ },
+ "BTN": {
+ "name": "BTN",
+ "symbol": "BTN"
+ },
+ "BYR": {
+ "name": "BYR",
+ "symbol": "BYR"
+ },
+ "BZD": {
+ "name": "BZD",
+ "symbol": "BZD"
+ },
+ "CLP": {
+ "name": "CLP",
+ "symbol": "CLP"
+ },
+ "COP": {
+ "name": "COP",
+ "symbol": "COP"
+ },
+ "CRC": {
+ "name": "CRC",
+ "symbol": "CRC"
+ },
+ "CUC": {
+ "name": "CUC",
+ "symbol": "CUC"
+ },
+ "CUP": {
+ "name": "CUP",
+ "symbol": "CUP"
+ },
+ "CZK": {
+ "name": "CZK",
+ "symbol": "CZK"
+ },
+ "GMD": {
+ "name": "Dalasi ti OrílÉ›Ìède Gamibia",
+ "symbol": "GMD"
+ },
+ "AED": {
+ "name": "Diami ti Awon OrílÉ›Ìède Arabu",
+ "symbol": "AED"
+ },
+ "DZD": {
+ "name": "Dina ti OrílÉ›Ìède Àlùgèríánì",
+ "symbol": "DZD"
+ },
+ "BHD": {
+ "name": "Dina ti OrílÉ›Ìède Báránì",
+ "symbol": "BHD"
+ },
+ "LYD": {
+ "name": "Dina ti OrílÉ›Ìède Libiya",
+ "symbol": "LYD"
+ },
+ "SDG": {
+ "name": "Dina ti OrílÉ›Ìède Sudani",
+ "symbol": "SDG"
+ },
+ "TND": {
+ "name": "Dina ti OrílÉ›Ìède Tunisia",
+ "symbol": "TND"
+ },
+ "MAD": {
+ "name": "Dirami ti OrílÉ›Ìède Moroko",
+ "symbol": "MAD"
+ },
+ "DKK": {
+ "name": "DKK",
+ "symbol": "DKK"
+ },
+ "STD": {
+ "name": "Dobira ti OrílÉ›Ìède Sao tome Ati Pirisipe",
+ "symbol": "STD"
+ },
+ "DOP": {
+ "name": "DOP",
+ "symbol": "DOP"
+ },
+ "USD": {
+ "name": "DÉ”la ti OrílÉ›Ìède Amerika",
+ "symbol": "US$"
+ },
+ "AUD": {
+ "name": "DÉ”la ti OrílÉ›Ìède Ãstràlìá",
+ "symbol": "A$"
+ },
+ "CAD": {
+ "name": "DÉ”la ti OrílÉ›Ìède Kánádà",
+ "symbol": "CA$"
+ },
+ "LRD": {
+ "name": "DÉ”la ti OrílÉ›Ìède Liberia",
+ "symbol": "LRD"
+ },
+ "NAD": {
+ "name": "DÉ”la ti OrílÉ›Ìède Namibia",
+ "symbol": "NAD"
+ },
+ "XAF": {
+ "name": "Faransi ti OrílÉ›Ìède BEKA",
+ "symbol": "FCFA"
+ },
+ "XOF": {
+ "name": "Faransi ti OrílÉ›Ìède BIKEAO",
+ "symbol": "CFA"
+ },
+ "BIF": {
+ "name": "Faransi ti OrílÉ›Ìède Bùùrúndì",
+ "symbol": "BIF"
+ },
+ "DJF": {
+ "name": "Faransi ti OrílÉ›Ìède Dibouti",
+ "symbol": "DJF"
+ },
+ "CDF": {
+ "name": "Faransi ti OrílÉ›Ìède Kóngò",
+ "symbol": "CDF"
+ },
+ "MGA": {
+ "name": "Faransi ti OrílÉ›Ìède Malagasi",
+ "symbol": "MGA"
+ },
+ "RWF": {
+ "name": "Faransi ti OrílÉ›Ìède Ruwanda",
+ "symbol": "RWF"
+ },
+ "KMF": {
+ "name": "Faransi ti OrílÉ›Ìède shomoriani",
+ "symbol": "KMF"
+ },
+ "CHF": {
+ "name": "Faransi ti OrílÉ›Ìède Siwisi",
+ "symbol": "CHF"
+ },
+ "FJD": {
+ "name": "FJD",
+ "symbol": "FJD"
+ },
+ "FKP": {
+ "name": "FKP",
+ "symbol": "FKP"
+ },
+ "GEL": {
+ "name": "GEL",
+ "symbol": "GEL"
+ },
+ "GHS": {
+ "name": "GHS",
+ "symbol": "GHS"
+ },
+ "GIP": {
+ "name": "GIP",
+ "symbol": "GIP"
+ },
+ "GNF": {
+ "name": "GNF",
+ "symbol": "GNF"
+ },
+ "GTQ": {
+ "name": "GTQ",
+ "symbol": "GTQ"
+ },
+ "GYD": {
+ "name": "GYD",
+ "symbol": "GYD"
+ },
+ "HKD": {
+ "name": "HKD",
+ "symbol": "HK$"
+ },
+ "HNL": {
+ "name": "HNL",
+ "symbol": "HNL"
+ },
+ "HRK": {
+ "name": "HRK",
+ "symbol": "HRK"
+ },
+ "HTG": {
+ "name": "HTG",
+ "symbol": "HTG"
+ },
+ "HUF": {
+ "name": "HUF",
+ "symbol": "HUF"
+ },
+ "IDR": {
+ "name": "IDR",
+ "symbol": "IDR"
+ },
+ "ILS": {
+ "name": "ILS",
+ "symbol": "₪"
+ },
+ "IQD": {
+ "name": "IQD",
+ "symbol": "IQD"
+ },
+ "IRR": {
+ "name": "IRR",
+ "symbol": "IRR"
+ },
+ "ISK": {
+ "name": "ISK",
+ "symbol": "ISK"
+ },
+ "JMD": {
+ "name": "JMD",
+ "symbol": "JMD"
+ },
+ "JOD": {
+ "name": "JOD",
+ "symbol": "JOD"
+ },
+ "CVE": {
+ "name": "Kabofediano ti OrílÉ›Ìède Esuodo",
+ "symbol": "CVE"
+ },
+ "MWK": {
+ "name": "Kasha ti OrílÉ›Ìède Malawi",
+ "symbol": "MWK"
+ },
+ "ZMW": {
+ "name": "Kawasha ti OrílÉ›Ìède Saabia",
+ "symbol": "ZMW"
+ },
+ "KGS": {
+ "name": "KGS",
+ "symbol": "KGS"
+ },
+ "KHR": {
+ "name": "KHR",
+ "symbol": "KHR"
+ },
+ "KPW": {
+ "name": "KPW",
+ "symbol": "KPW"
+ },
+ "KRW": {
+ "name": "KRW",
+ "symbol": "â‚©"
+ },
+ "KWD": {
+ "name": "KWD",
+ "symbol": "KWD"
+ },
+ "KYD": {
+ "name": "KYD",
+ "symbol": "KYD"
+ },
+ "KZT": {
+ "name": "KZT",
+ "symbol": "KZT"
+ },
+ "LAK": {
+ "name": "LAK",
+ "symbol": "LAK"
+ },
+ "LBP": {
+ "name": "LBP",
+ "symbol": "LBP"
+ },
+ "SZL": {
+ "name": "Lilangeni",
+ "symbol": "SZL"
+ },
+ "SLL": {
+ "name": "Lioni",
+ "symbol": "SLL"
+ },
+ "LKR": {
+ "name": "LKR",
+ "symbol": "LKR"
+ },
+ "LSL": {
+ "name": "Loti ti OrílÉ›Ìède Lesoto",
+ "symbol": "LSL"
+ },
+ "LTL": {
+ "name": "LTL",
+ "symbol": "LTL"
+ },
+ "MDL": {
+ "name": "MDL",
+ "symbol": "MDL"
+ },
+ "MKD": {
+ "name": "MKD",
+ "symbol": "MKD"
+ },
+ "MMK": {
+ "name": "MMK",
+ "symbol": "MMK"
+ },
+ "MNT": {
+ "name": "MNT",
+ "symbol": "MNT"
+ },
+ "MOP": {
+ "name": "MOP",
+ "symbol": "MOP"
+ },
+ "MVR": {
+ "name": "MVR",
+ "symbol": "MVR"
+ },
+ "MXN": {
+ "name": "MXN",
+ "symbol": "MX$"
+ },
+ "MYR": {
+ "name": "MYR",
+ "symbol": "MYR"
+ },
+ "MZN": {
+ "name": "MZN",
+ "symbol": "MZN"
+ },
+ "NGN": {
+ "name": "Naira ti OrílÉ›Ìède Nàìjíríà",
+ "symbol": "₦"
+ },
+ "ERN": {
+ "name": "Nakifa ti OrílÉ›Ìède Eriteriani",
+ "symbol": "ERN"
+ },
+ "NIO": {
+ "name": "NIO",
+ "symbol": "NIO"
+ },
+ "NOK": {
+ "name": "NOK",
+ "symbol": "NOK"
+ },
+ "NPR": {
+ "name": "NPR",
+ "symbol": "NPR"
+ },
+ "NZD": {
+ "name": "NZD",
+ "symbol": "NZ$"
+ },
+ "OMR": {
+ "name": "OMR",
+ "symbol": "OMR"
+ },
+ "MRO": {
+ "name": "Ouguiya ti OrílÉ›Ìède Maritania",
+ "symbol": "MRO"
+ },
+ "PAB": {
+ "name": "PAB",
+ "symbol": "PAB"
+ },
+ "PEN": {
+ "name": "PEN",
+ "symbol": "PEN"
+ },
+ "PGK": {
+ "name": "PGK",
+ "symbol": "PGK"
+ },
+ "PHP": {
+ "name": "PHP",
+ "symbol": "PHP"
+ },
+ "PKR": {
+ "name": "PKR",
+ "symbol": "PKR"
+ },
+ "PLN": {
+ "name": "PLN",
+ "symbol": "PLN"
+ },
+ "GBP": {
+ "name": "Pɔɔn ti OrílÉ›Ìède Bírítísì",
+ "symbol": "£"
+ },
+ "EGP": {
+ "name": "pɔɔn ti OrílÉ›Ìède Egipiti",
+ "symbol": "EGP"
+ },
+ "SHP": {
+ "name": "Pɔɔun ti OrílÉ›Ìède Ì£Elena",
+ "symbol": "SHP"
+ },
+ "BWP": {
+ "name": "Pula ti OrílÉ›Ìède Bɔ̀tìsúwánà",
+ "symbol": "BWP"
+ },
+ "PYG": {
+ "name": "PYG",
+ "symbol": "PYG"
+ },
+ "QAR": {
+ "name": "QAR",
+ "symbol": "QAR"
+ },
+ "ZAR": {
+ "name": "Randi ti OrílÉ›Ìède Ariwa Afirika",
+ "symbol": "ZAR"
+ },
+ "CNY": {
+ "name": "Reminibi ti OrílÉ›Ìède sháínà",
+ "symbol": "CNÂ¥"
+ },
+ "SAR": {
+ "name": "Riya ti OrílÉ›Ìède Saudi",
+ "symbol": "SAR"
+ },
+ "RON": {
+ "name": "RON",
+ "symbol": "RON"
+ },
+ "RSD": {
+ "name": "RSD",
+ "symbol": "RSD"
+ },
+ "RUB": {
+ "name": "RUB",
+ "symbol": "RUB"
+ },
+ "INR": {
+ "name": "Rupi ti OrílÉ›Ìède Indina",
+ "symbol": "₹"
+ },
+ "MUR": {
+ "name": "Rupi ti OrílÉ›Ìède Maritiusi",
+ "symbol": "MUR"
+ },
+ "SCR": {
+ "name": "Rupi ti OrílÉ›Ìède Sayiselesi",
+ "symbol": "SCR"
+ },
+ "SBD": {
+ "name": "SBD",
+ "symbol": "SBD"
+ },
+ "SEK": {
+ "name": "SEK",
+ "symbol": "SEK"
+ },
+ "SGD": {
+ "name": "SGD",
+ "symbol": "SGD"
+ },
+ "KES": {
+ "name": "shiili ti OrílÉ›Ìède Kenya",
+ "symbol": "KES"
+ },
+ "UGX": {
+ "name": "Siile ti OrílÉ›Ìède Uganda",
+ "symbol": "UGX"
+ },
+ "SOS": {
+ "name": "Sile ti OrílÉ›Ìède Somali",
+ "symbol": "SOS"
+ },
+ "TZS": {
+ "name": "Sile ti OrílÉ›Ìède Tansania",
+ "symbol": "TZS"
+ },
+ "SRD": {
+ "name": "SRD",
+ "symbol": "SRD"
+ },
+ "SSP": {
+ "name": "SSP",
+ "symbol": "SSP"
+ },
+ "SVC": {
+ "name": "SVC",
+ "symbol": "SVC"
+ },
+ "SYP": {
+ "name": "SYP",
+ "symbol": "SYP"
+ },
+ "THB": {
+ "name": "THB",
+ "symbol": "THB"
+ },
+ "TJS": {
+ "name": "TJS",
+ "symbol": "TJS"
+ },
+ "TMT": {
+ "name": "TMT",
+ "symbol": "TMT"
+ },
+ "TOP": {
+ "name": "TOP",
+ "symbol": "TOP"
+ },
+ "TRY": {
+ "name": "TRY",
+ "symbol": "TRY"
+ },
+ "TTD": {
+ "name": "TTD",
+ "symbol": "TTD"
+ },
+ "TWD": {
+ "name": "TWD",
+ "symbol": "NT$"
+ },
+ "UAH": {
+ "name": "UAH",
+ "symbol": "UAH"
+ },
+ "EUR": {
+ "name": "Uro",
+ "symbol": "€"
+ },
+ "UYU": {
+ "name": "UYU",
+ "symbol": "UYU"
+ },
+ "UZS": {
+ "name": "UZS",
+ "symbol": "UZS"
+ },
+ "VEF": {
+ "name": "VEF",
+ "symbol": "VEF"
+ },
+ "VND": {
+ "name": "VND",
+ "symbol": "â‚«"
+ },
+ "VUV": {
+ "name": "VUV",
+ "symbol": "VUV"
+ },
+ "AOA": {
+ "name": "Wansa ti OrílÉ›Ìède Àngólà",
+ "symbol": "AOA"
+ },
+ "WST": {
+ "name": "WST",
+ "symbol": "WST"
+ },
+ "XCD": {
+ "name": "XCD",
+ "symbol": "EC$"
+ },
+ "XPF": {
+ "name": "XPF",
+ "symbol": "CFPF"
+ },
+ "JPY": {
+ "name": "Yeni ti OrílÉ›Ìède Japani",
+ "symbol": "JPÂ¥"
+ },
+ "YER": {
+ "name": "YER",
+ "symbol": "YER"
+ },
+ "ZWL": {
+ "name": "ZWL",
+ "symbol": "ZWL"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/currency/yo.json b/library/intl/resources/currency/yo.json
new file mode 100644
index 000000000..80e5daf46
--- /dev/null
+++ b/library/intl/resources/currency/yo.json
@@ -0,0 +1,634 @@
+{
+ "AFN": {
+ "name": "AFN",
+ "symbol": "AFN"
+ },
+ "ALL": {
+ "name": "ALL",
+ "symbol": "ALL"
+ },
+ "AMD": {
+ "name": "AMD",
+ "symbol": "AMD"
+ },
+ "ANG": {
+ "name": "ANG",
+ "symbol": "ANG"
+ },
+ "ARS": {
+ "name": "ARS",
+ "symbol": "ARS"
+ },
+ "AWG": {
+ "name": "AWG",
+ "symbol": "AWG"
+ },
+ "AZN": {
+ "name": "AZN",
+ "symbol": "AZN"
+ },
+ "BAM": {
+ "name": "BAM",
+ "symbol": "BAM"
+ },
+ "BBD": {
+ "name": "BBD",
+ "symbol": "BBD"
+ },
+ "BDT": {
+ "name": "BDT",
+ "symbol": "BDT"
+ },
+ "BGN": {
+ "name": "BGN",
+ "symbol": "BGN"
+ },
+ "ETB": {
+ "name": "Biri ti OrílẹÌède Eutopia",
+ "symbol": "ETB"
+ },
+ "BMD": {
+ "name": "BMD",
+ "symbol": "BMD"
+ },
+ "BND": {
+ "name": "BND",
+ "symbol": "BND"
+ },
+ "BOB": {
+ "name": "BOB",
+ "symbol": "BOB"
+ },
+ "BRL": {
+ "name": "BRL",
+ "symbol": "R$"
+ },
+ "BSD": {
+ "name": "BSD",
+ "symbol": "BSD"
+ },
+ "BTN": {
+ "name": "BTN",
+ "symbol": "BTN"
+ },
+ "BYR": {
+ "name": "BYR",
+ "symbol": "BYR"
+ },
+ "BZD": {
+ "name": "BZD",
+ "symbol": "BZD"
+ },
+ "CLP": {
+ "name": "CLP",
+ "symbol": "CLP"
+ },
+ "COP": {
+ "name": "COP",
+ "symbol": "COP"
+ },
+ "CRC": {
+ "name": "CRC",
+ "symbol": "CRC"
+ },
+ "CUC": {
+ "name": "CUC",
+ "symbol": "CUC"
+ },
+ "CUP": {
+ "name": "CUP",
+ "symbol": "CUP"
+ },
+ "CZK": {
+ "name": "CZK",
+ "symbol": "CZK"
+ },
+ "GMD": {
+ "name": "Dalasi ti OrílẹÌède Gamibia",
+ "symbol": "GMD"
+ },
+ "AED": {
+ "name": "Diami ti Awon OrílẹÌède Arabu",
+ "symbol": "AED"
+ },
+ "DZD": {
+ "name": "Dina ti OrílẹÌède Àlùgèríánì",
+ "symbol": "DZD"
+ },
+ "BHD": {
+ "name": "Dina ti OrílẹÌède Báránì",
+ "symbol": "BHD"
+ },
+ "LYD": {
+ "name": "Dina ti OrílẹÌède Libiya",
+ "symbol": "LYD"
+ },
+ "SDG": {
+ "name": "Dina ti OrílẹÌède Sudani",
+ "symbol": "SDG"
+ },
+ "TND": {
+ "name": "Dina ti OrílẹÌède Tunisia",
+ "symbol": "TND"
+ },
+ "MAD": {
+ "name": "Dirami ti OrílẹÌède Moroko",
+ "symbol": "MAD"
+ },
+ "DKK": {
+ "name": "DKK",
+ "symbol": "DKK"
+ },
+ "STD": {
+ "name": "Dobira ti OrílẹÌède Sao tome Ati Pirisipe",
+ "symbol": "STD"
+ },
+ "DOP": {
+ "name": "DOP",
+ "symbol": "DOP"
+ },
+ "USD": {
+ "name": "Dá»la ti OrílẹÌède Amerika",
+ "symbol": "US$"
+ },
+ "AUD": {
+ "name": "Dá»la ti OrílẹÌède Ãstràlìá",
+ "symbol": "A$"
+ },
+ "CAD": {
+ "name": "Dá»la ti OrílẹÌède Kánádà",
+ "symbol": "CA$"
+ },
+ "LRD": {
+ "name": "Dá»la ti OrílẹÌède Liberia",
+ "symbol": "LRD"
+ },
+ "NAD": {
+ "name": "Dá»la ti OrílẹÌède Namibia",
+ "symbol": "NAD"
+ },
+ "XAF": {
+ "name": "Faransi ti OrílẹÌède BEKA",
+ "symbol": "FCFA"
+ },
+ "XOF": {
+ "name": "Faransi ti OrílẹÌède BIKEAO",
+ "symbol": "CFA"
+ },
+ "BIF": {
+ "name": "Faransi ti OrílẹÌède Bùùrúndì",
+ "symbol": "BIF"
+ },
+ "DJF": {
+ "name": "Faransi ti OrílẹÌède Dibouti",
+ "symbol": "DJF"
+ },
+ "CDF": {
+ "name": "Faransi ti OrílẹÌède Kóngò",
+ "symbol": "CDF"
+ },
+ "MGA": {
+ "name": "Faransi ti OrílẹÌède Malagasi",
+ "symbol": "MGA"
+ },
+ "RWF": {
+ "name": "Faransi ti OrílẹÌède Ruwanda",
+ "symbol": "RWF"
+ },
+ "CHF": {
+ "name": "Faransi ti OrílẹÌède Siwisi",
+ "symbol": "CHF"
+ },
+ "KMF": {
+ "name": "Faransi ti OrílẹÌède á¹£omoriani",
+ "symbol": "KMF"
+ },
+ "FJD": {
+ "name": "FJD",
+ "symbol": "FJD"
+ },
+ "FKP": {
+ "name": "FKP",
+ "symbol": "FKP"
+ },
+ "GEL": {
+ "name": "GEL",
+ "symbol": "GEL"
+ },
+ "GHS": {
+ "name": "GHS",
+ "symbol": "GHS"
+ },
+ "GIP": {
+ "name": "GIP",
+ "symbol": "GIP"
+ },
+ "GNF": {
+ "name": "GNF",
+ "symbol": "GNF"
+ },
+ "GTQ": {
+ "name": "GTQ",
+ "symbol": "GTQ"
+ },
+ "GYD": {
+ "name": "GYD",
+ "symbol": "GYD"
+ },
+ "HKD": {
+ "name": "HKD",
+ "symbol": "HK$"
+ },
+ "HNL": {
+ "name": "HNL",
+ "symbol": "HNL"
+ },
+ "HRK": {
+ "name": "HRK",
+ "symbol": "HRK"
+ },
+ "HTG": {
+ "name": "HTG",
+ "symbol": "HTG"
+ },
+ "HUF": {
+ "name": "HUF",
+ "symbol": "HUF"
+ },
+ "IDR": {
+ "name": "IDR",
+ "symbol": "IDR"
+ },
+ "ILS": {
+ "name": "ILS",
+ "symbol": "₪"
+ },
+ "IQD": {
+ "name": "IQD",
+ "symbol": "IQD"
+ },
+ "IRR": {
+ "name": "IRR",
+ "symbol": "IRR"
+ },
+ "ISK": {
+ "name": "ISK",
+ "symbol": "ISK"
+ },
+ "JMD": {
+ "name": "JMD",
+ "symbol": "JMD"
+ },
+ "JOD": {
+ "name": "JOD",
+ "symbol": "JOD"
+ },
+ "CVE": {
+ "name": "Kabofediano ti OrílẹÌède Esuodo",
+ "symbol": "CVE"
+ },
+ "MWK": {
+ "name": "Kaá¹£a ti OrílẹÌède Malawi",
+ "symbol": "MWK"
+ },
+ "ZMW": {
+ "name": "Kawaá¹£a ti OrílẹÌède Saabia",
+ "symbol": "ZMW"
+ },
+ "KGS": {
+ "name": "KGS",
+ "symbol": "KGS"
+ },
+ "KHR": {
+ "name": "KHR",
+ "symbol": "KHR"
+ },
+ "KPW": {
+ "name": "KPW",
+ "symbol": "KPW"
+ },
+ "KRW": {
+ "name": "KRW",
+ "symbol": "â‚©"
+ },
+ "KWD": {
+ "name": "KWD",
+ "symbol": "KWD"
+ },
+ "KYD": {
+ "name": "KYD",
+ "symbol": "KYD"
+ },
+ "KZT": {
+ "name": "KZT",
+ "symbol": "KZT"
+ },
+ "LAK": {
+ "name": "LAK",
+ "symbol": "LAK"
+ },
+ "LBP": {
+ "name": "LBP",
+ "symbol": "LBP"
+ },
+ "SZL": {
+ "name": "Lilangeni",
+ "symbol": "SZL"
+ },
+ "SLL": {
+ "name": "Lioni",
+ "symbol": "SLL"
+ },
+ "LKR": {
+ "name": "LKR",
+ "symbol": "LKR"
+ },
+ "LSL": {
+ "name": "Loti ti OrílẹÌède Lesoto",
+ "symbol": "LSL"
+ },
+ "LTL": {
+ "name": "LTL",
+ "symbol": "LTL"
+ },
+ "MDL": {
+ "name": "MDL",
+ "symbol": "MDL"
+ },
+ "MKD": {
+ "name": "MKD",
+ "symbol": "MKD"
+ },
+ "MMK": {
+ "name": "MMK",
+ "symbol": "MMK"
+ },
+ "MNT": {
+ "name": "MNT",
+ "symbol": "MNT"
+ },
+ "MOP": {
+ "name": "MOP",
+ "symbol": "MOP"
+ },
+ "MVR": {
+ "name": "MVR",
+ "symbol": "MVR"
+ },
+ "MXN": {
+ "name": "MXN",
+ "symbol": "MX$"
+ },
+ "MYR": {
+ "name": "MYR",
+ "symbol": "MYR"
+ },
+ "MZN": {
+ "name": "MZN",
+ "symbol": "MZN"
+ },
+ "NGN": {
+ "name": "Naira ti OrílẹÌède Nàìjíríà",
+ "symbol": "₦"
+ },
+ "ERN": {
+ "name": "Nakifa ti OrílẹÌède Eriteriani",
+ "symbol": "ERN"
+ },
+ "NIO": {
+ "name": "NIO",
+ "symbol": "NIO"
+ },
+ "NOK": {
+ "name": "NOK",
+ "symbol": "NOK"
+ },
+ "NPR": {
+ "name": "NPR",
+ "symbol": "NPR"
+ },
+ "NZD": {
+ "name": "NZD",
+ "symbol": "NZ$"
+ },
+ "OMR": {
+ "name": "OMR",
+ "symbol": "OMR"
+ },
+ "MRO": {
+ "name": "Ouguiya ti OrílẹÌède Maritania",
+ "symbol": "MRO"
+ },
+ "PAB": {
+ "name": "PAB",
+ "symbol": "PAB"
+ },
+ "PEN": {
+ "name": "PEN",
+ "symbol": "PEN"
+ },
+ "PGK": {
+ "name": "PGK",
+ "symbol": "PGK"
+ },
+ "PHP": {
+ "name": "PHP",
+ "symbol": "PHP"
+ },
+ "PKR": {
+ "name": "PKR",
+ "symbol": "PKR"
+ },
+ "PLN": {
+ "name": "PLN",
+ "symbol": "PLN"
+ },
+ "GBP": {
+ "name": "Pá»á»n ti OrílẹÌède Bírítísì",
+ "symbol": "£"
+ },
+ "EGP": {
+ "name": "pá»á»n ti OrílẹÌède Egipiti",
+ "symbol": "EGP"
+ },
+ "SHP": {
+ "name": "Pá»á»un ti OrílẹÌède Ì£Elena",
+ "symbol": "SHP"
+ },
+ "BWP": {
+ "name": "Pula ti OrílẹÌède Bá»Ì€tìsúwánà",
+ "symbol": "BWP"
+ },
+ "PYG": {
+ "name": "PYG",
+ "symbol": "PYG"
+ },
+ "QAR": {
+ "name": "QAR",
+ "symbol": "QAR"
+ },
+ "ZAR": {
+ "name": "Randi ti OrílẹÌède Ariwa Afirika",
+ "symbol": "ZAR"
+ },
+ "CNY": {
+ "name": "Reminibi ti OrílẹÌède ṣáínà",
+ "symbol": "CNÂ¥"
+ },
+ "SAR": {
+ "name": "Riya ti OrílẹÌède Saudi",
+ "symbol": "SAR"
+ },
+ "RON": {
+ "name": "RON",
+ "symbol": "RON"
+ },
+ "RSD": {
+ "name": "RSD",
+ "symbol": "RSD"
+ },
+ "RUB": {
+ "name": "RUB",
+ "symbol": "RUB"
+ },
+ "INR": {
+ "name": "Rupi ti OrílẹÌède Indina",
+ "symbol": "₹"
+ },
+ "MUR": {
+ "name": "Rupi ti OrílẹÌède Maritiusi",
+ "symbol": "MUR"
+ },
+ "SCR": {
+ "name": "Rupi ti OrílẹÌède Sayiselesi",
+ "symbol": "SCR"
+ },
+ "SBD": {
+ "name": "SBD",
+ "symbol": "SBD"
+ },
+ "SEK": {
+ "name": "SEK",
+ "symbol": "SEK"
+ },
+ "SGD": {
+ "name": "SGD",
+ "symbol": "SGD"
+ },
+ "UGX": {
+ "name": "Siile ti OrílẹÌède Uganda",
+ "symbol": "UGX"
+ },
+ "SOS": {
+ "name": "Sile ti OrílẹÌède Somali",
+ "symbol": "SOS"
+ },
+ "TZS": {
+ "name": "Sile ti OrílẹÌède Tansania",
+ "symbol": "TZS"
+ },
+ "SRD": {
+ "name": "SRD",
+ "symbol": "SRD"
+ },
+ "SSP": {
+ "name": "SSP",
+ "symbol": "SSP"
+ },
+ "SVC": {
+ "name": "SVC",
+ "symbol": "SVC"
+ },
+ "SYP": {
+ "name": "SYP",
+ "symbol": "SYP"
+ },
+ "KES": {
+ "name": "á¹£iili ti OrílẹÌède Kenya",
+ "symbol": "KES"
+ },
+ "THB": {
+ "name": "THB",
+ "symbol": "THB"
+ },
+ "TJS": {
+ "name": "TJS",
+ "symbol": "TJS"
+ },
+ "TMT": {
+ "name": "TMT",
+ "symbol": "TMT"
+ },
+ "TOP": {
+ "name": "TOP",
+ "symbol": "TOP"
+ },
+ "TRY": {
+ "name": "TRY",
+ "symbol": "TRY"
+ },
+ "TTD": {
+ "name": "TTD",
+ "symbol": "TTD"
+ },
+ "TWD": {
+ "name": "TWD",
+ "symbol": "NT$"
+ },
+ "UAH": {
+ "name": "UAH",
+ "symbol": "UAH"
+ },
+ "EUR": {
+ "name": "Uro",
+ "symbol": "€"
+ },
+ "UYU": {
+ "name": "UYU",
+ "symbol": "UYU"
+ },
+ "UZS": {
+ "name": "UZS",
+ "symbol": "UZS"
+ },
+ "VEF": {
+ "name": "VEF",
+ "symbol": "VEF"
+ },
+ "VND": {
+ "name": "VND",
+ "symbol": "â‚«"
+ },
+ "VUV": {
+ "name": "VUV",
+ "symbol": "VUV"
+ },
+ "AOA": {
+ "name": "Wansa ti OrílẹÌède Àngólà",
+ "symbol": "AOA"
+ },
+ "WST": {
+ "name": "WST",
+ "symbol": "WST"
+ },
+ "XCD": {
+ "name": "XCD",
+ "symbol": "EC$"
+ },
+ "XPF": {
+ "name": "XPF",
+ "symbol": "CFPF"
+ },
+ "JPY": {
+ "name": "Yeni ti OrílẹÌède Japani",
+ "symbol": "JPÂ¥"
+ },
+ "YER": {
+ "name": "YER",
+ "symbol": "YER"
+ },
+ "ZWL": {
+ "name": "ZWL",
+ "symbol": "ZWL"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/currency/zgh.json b/library/intl/resources/currency/zgh.json
new file mode 100644
index 000000000..e742e8906
--- /dev/null
+++ b/library/intl/resources/currency/zgh.json
@@ -0,0 +1,634 @@
+{
+ "AFN": {
+ "name": "AFN",
+ "symbol": "AFN"
+ },
+ "ALL": {
+ "name": "ALL",
+ "symbol": "ALL"
+ },
+ "AMD": {
+ "name": "AMD",
+ "symbol": "AMD"
+ },
+ "ANG": {
+ "name": "ANG",
+ "symbol": "ANG"
+ },
+ "ARS": {
+ "name": "ARS",
+ "symbol": "ARS"
+ },
+ "AWG": {
+ "name": "AWG",
+ "symbol": "AWG"
+ },
+ "AZN": {
+ "name": "AZN",
+ "symbol": "AZN"
+ },
+ "BAM": {
+ "name": "BAM",
+ "symbol": "BAM"
+ },
+ "BBD": {
+ "name": "BBD",
+ "symbol": "BBD"
+ },
+ "BDT": {
+ "name": "BDT",
+ "symbol": "BDT"
+ },
+ "BGN": {
+ "name": "BGN",
+ "symbol": "BGN"
+ },
+ "BMD": {
+ "name": "BMD",
+ "symbol": "BMD"
+ },
+ "BND": {
+ "name": "BND",
+ "symbol": "BND"
+ },
+ "BOB": {
+ "name": "BOB",
+ "symbol": "BOB"
+ },
+ "BRL": {
+ "name": "BRL",
+ "symbol": "R$"
+ },
+ "BSD": {
+ "name": "BSD",
+ "symbol": "BSD"
+ },
+ "BTN": {
+ "name": "BTN",
+ "symbol": "BTN"
+ },
+ "BYR": {
+ "name": "BYR",
+ "symbol": "BYR"
+ },
+ "BZD": {
+ "name": "BZD",
+ "symbol": "BZD"
+ },
+ "CLP": {
+ "name": "CLP",
+ "symbol": "CLP"
+ },
+ "COP": {
+ "name": "COP",
+ "symbol": "COP"
+ },
+ "CRC": {
+ "name": "CRC",
+ "symbol": "CRC"
+ },
+ "CUC": {
+ "name": "CUC",
+ "symbol": "CUC"
+ },
+ "CUP": {
+ "name": "CUP",
+ "symbol": "CUP"
+ },
+ "CZK": {
+ "name": "CZK",
+ "symbol": "CZK"
+ },
+ "DKK": {
+ "name": "DKK",
+ "symbol": "DKK"
+ },
+ "DOP": {
+ "name": "DOP",
+ "symbol": "DOP"
+ },
+ "FJD": {
+ "name": "FJD",
+ "symbol": "FJD"
+ },
+ "FKP": {
+ "name": "FKP",
+ "symbol": "FKP"
+ },
+ "GEL": {
+ "name": "GEL",
+ "symbol": "GEL"
+ },
+ "GIP": {
+ "name": "GIP",
+ "symbol": "GIP"
+ },
+ "GNF": {
+ "name": "GNF",
+ "symbol": "GNF"
+ },
+ "GTQ": {
+ "name": "GTQ",
+ "symbol": "GTQ"
+ },
+ "GYD": {
+ "name": "GYD",
+ "symbol": "GYD"
+ },
+ "HKD": {
+ "name": "HKD",
+ "symbol": "HK$"
+ },
+ "HNL": {
+ "name": "HNL",
+ "symbol": "HNL"
+ },
+ "HRK": {
+ "name": "HRK",
+ "symbol": "HRK"
+ },
+ "HTG": {
+ "name": "HTG",
+ "symbol": "HTG"
+ },
+ "HUF": {
+ "name": "HUF",
+ "symbol": "HUF"
+ },
+ "IDR": {
+ "name": "IDR",
+ "symbol": "IDR"
+ },
+ "ILS": {
+ "name": "ILS",
+ "symbol": "₪"
+ },
+ "IQD": {
+ "name": "IQD",
+ "symbol": "IQD"
+ },
+ "IRR": {
+ "name": "IRR",
+ "symbol": "IRR"
+ },
+ "ISK": {
+ "name": "ISK",
+ "symbol": "ISK"
+ },
+ "JMD": {
+ "name": "JMD",
+ "symbol": "JMD"
+ },
+ "JOD": {
+ "name": "JOD",
+ "symbol": "JOD"
+ },
+ "KGS": {
+ "name": "KGS",
+ "symbol": "KGS"
+ },
+ "KHR": {
+ "name": "KHR",
+ "symbol": "KHR"
+ },
+ "KPW": {
+ "name": "KPW",
+ "symbol": "KPW"
+ },
+ "KRW": {
+ "name": "KRW",
+ "symbol": "â‚©"
+ },
+ "KWD": {
+ "name": "KWD",
+ "symbol": "KWD"
+ },
+ "KYD": {
+ "name": "KYD",
+ "symbol": "KYD"
+ },
+ "KZT": {
+ "name": "KZT",
+ "symbol": "KZT"
+ },
+ "LAK": {
+ "name": "LAK",
+ "symbol": "LAK"
+ },
+ "LBP": {
+ "name": "LBP",
+ "symbol": "LBP"
+ },
+ "LKR": {
+ "name": "LKR",
+ "symbol": "LKR"
+ },
+ "LTL": {
+ "name": "LTL",
+ "symbol": "LTL"
+ },
+ "MDL": {
+ "name": "MDL",
+ "symbol": "MDL"
+ },
+ "MKD": {
+ "name": "MKD",
+ "symbol": "MKD"
+ },
+ "MMK": {
+ "name": "MMK",
+ "symbol": "MMK"
+ },
+ "MNT": {
+ "name": "MNT",
+ "symbol": "MNT"
+ },
+ "MOP": {
+ "name": "MOP",
+ "symbol": "MOP"
+ },
+ "MVR": {
+ "name": "MVR",
+ "symbol": "MVR"
+ },
+ "MXN": {
+ "name": "MXN",
+ "symbol": "MX$"
+ },
+ "MYR": {
+ "name": "MYR",
+ "symbol": "MYR"
+ },
+ "NIO": {
+ "name": "NIO",
+ "symbol": "NIO"
+ },
+ "NOK": {
+ "name": "NOK",
+ "symbol": "NOK"
+ },
+ "NPR": {
+ "name": "NPR",
+ "symbol": "NPR"
+ },
+ "NZD": {
+ "name": "NZD",
+ "symbol": "NZ$"
+ },
+ "OMR": {
+ "name": "OMR",
+ "symbol": "OMR"
+ },
+ "PAB": {
+ "name": "PAB",
+ "symbol": "PAB"
+ },
+ "PEN": {
+ "name": "PEN",
+ "symbol": "PEN"
+ },
+ "PGK": {
+ "name": "PGK",
+ "symbol": "PGK"
+ },
+ "PHP": {
+ "name": "PHP",
+ "symbol": "PHP"
+ },
+ "PKR": {
+ "name": "PKR",
+ "symbol": "PKR"
+ },
+ "PLN": {
+ "name": "PLN",
+ "symbol": "PLN"
+ },
+ "PYG": {
+ "name": "PYG",
+ "symbol": "PYG"
+ },
+ "QAR": {
+ "name": "QAR",
+ "symbol": "QAR"
+ },
+ "RON": {
+ "name": "RON",
+ "symbol": "RON"
+ },
+ "RSD": {
+ "name": "RSD",
+ "symbol": "RSD"
+ },
+ "RUB": {
+ "name": "RUB",
+ "symbol": "RUB"
+ },
+ "SBD": {
+ "name": "SBD",
+ "symbol": "SBD"
+ },
+ "SEK": {
+ "name": "SEK",
+ "symbol": "SEK"
+ },
+ "SGD": {
+ "name": "SGD",
+ "symbol": "SGD"
+ },
+ "SRD": {
+ "name": "SRD",
+ "symbol": "SRD"
+ },
+ "SSP": {
+ "name": "SSP",
+ "symbol": "SSP"
+ },
+ "SVC": {
+ "name": "SVC",
+ "symbol": "SVC"
+ },
+ "SYP": {
+ "name": "SYP",
+ "symbol": "SYP"
+ },
+ "THB": {
+ "name": "THB",
+ "symbol": "THB"
+ },
+ "TJS": {
+ "name": "TJS",
+ "symbol": "TJS"
+ },
+ "TMT": {
+ "name": "TMT",
+ "symbol": "TMT"
+ },
+ "TOP": {
+ "name": "TOP",
+ "symbol": "TOP"
+ },
+ "TRY": {
+ "name": "TRY",
+ "symbol": "TRY"
+ },
+ "TTD": {
+ "name": "TTD",
+ "symbol": "TTD"
+ },
+ "TWD": {
+ "name": "TWD",
+ "symbol": "NT$"
+ },
+ "UAH": {
+ "name": "UAH",
+ "symbol": "UAH"
+ },
+ "UYU": {
+ "name": "UYU",
+ "symbol": "UYU"
+ },
+ "UZS": {
+ "name": "UZS",
+ "symbol": "UZS"
+ },
+ "VEF": {
+ "name": "VEF",
+ "symbol": "VEF"
+ },
+ "VND": {
+ "name": "VND",
+ "symbol": "â‚«"
+ },
+ "VUV": {
+ "name": "VUV",
+ "symbol": "VUV"
+ },
+ "WST": {
+ "name": "WST",
+ "symbol": "WST"
+ },
+ "XCD": {
+ "name": "XCD",
+ "symbol": "EC$"
+ },
+ "XPF": {
+ "name": "XPF",
+ "symbol": "CFPF"
+ },
+ "YER": {
+ "name": "YER",
+ "symbol": "YER"
+ },
+ "BWP": {
+ "name": "ⴰⴱⵓâµâ´° ⵠⴱⵓⵜⵙⵡⴰâµâ´°",
+ "symbol": "BWP"
+ },
+ "BHD": {
+ "name": "ⴰⴷⵉâµâ´°âµ” ⵠⴱⵃⵔⴰⵢâµ",
+ "symbol": "BHD"
+ },
+ "DZD": {
+ "name": "ⴰⴷⵉâµâ´°âµ” ⵠⴷⵣⴰⵢⵔ",
+ "symbol": "DZD"
+ },
+ "LYD": {
+ "name": "ⴰⴷⵉâµâ´°âµ” âµ âµâµ‰â´±âµ¢â´°",
+ "symbol": "LYD"
+ },
+ "SDG": {
+ "name": "ⴰⴷⵉâµâ´°âµ” ⵠⵙⵙⵓⴷⴰâµ",
+ "symbol": "SDG"
+ },
+ "TND": {
+ "name": "ⴰⴷⵉâµâ´°âµ” ⵠⵜⵓâµâµ™",
+ "symbol": "TND"
+ },
+ "STD": {
+ "name": "ⴰⴷⵓⴱⵔⴰ ⵠⵙⴰâµâµŸâµ“ⵎⵉ",
+ "symbol": "STD"
+ },
+ "CAD": {
+ "name": "ⴰⴷⵓâµâ´°âµ” ⵠⴽⴰâµâ´°â´·â´°",
+ "symbol": "CA$"
+ },
+ "USD": {
+ "name": "ⴰⴷⵓâµâ´°âµ” ⵠⵉⵡⵓâµâ´°â´½ ⵉⵎⵓâµâµ",
+ "symbol": "US$"
+ },
+ "LRD": {
+ "name": "ⴰⴷⵓâµâ´°âµ” âµ âµâµ‰â´±âµ‰âµ”ⵢⴰ",
+ "symbol": "LRD"
+ },
+ "NAD": {
+ "name": "ⴰⴷⵓâµâ´°âµ” âµ âµâ´°âµŽâµ‰â´±âµ¢â´°",
+ "symbol": "NAD"
+ },
+ "AUD": {
+ "name": "ⴰⴷⵓâµâ´°âµ” ⵠⵓⵙⵜⵔⴰâµâµ¢â´°",
+ "symbol": "A$"
+ },
+ "ZWL": {
+ "name": "ⴰⴷⵓâµâ´°âµ” ⵠⵣⵉⵎⴱⴰⴱⵡⵉ (2009)",
+ "symbol": "ZWL"
+ },
+ "AED": {
+ "name": "ⴰⴷⵔⵉⵎ âµ âµâµ‰âµŽâ´°âµ”ⴰⵜ",
+ "symbol": "AED"
+ },
+ "MAD": {
+ "name": "ⴰⴷⵔⵉⵎ âµ âµâµŽâµ–ⵔⵉⴱ",
+ "symbol": "MAD"
+ },
+ "RWF": {
+ "name": "ⴰⴼⵔⴰâµâ´½ ⵠⵔⵡⴰâµâ´·â´°",
+ "symbol": "RWF"
+ },
+ "CHF": {
+ "name": "ⴰⴼⵔⴰâµâ´½ ⵠⵙⵡⵉⵙⵔⴰ",
+ "symbol": "CHF"
+ },
+ "ZMW": {
+ "name": "ⴰⴽⵡⴰⵛⴰ ⵠⵣⴰⵎⴱⵢⴰ",
+ "symbol": "ZMW"
+ },
+ "GBP": {
+ "name": "ⴰⵊâµâµ‰âµ€ ⴰⵙⵜⵔâµâµ‰âµâµ‰ âµ âµâµâ´³âµâµ‰âµ£",
+ "symbol": "£"
+ },
+ "EGP": {
+ "name": "ⴰⵊâµâµ‰âµ€ ⵠⵎⵉⵚⵕ",
+ "symbol": "EGP"
+ },
+ "SHP": {
+ "name": "ⴰⵊâµâµ‰âµ€ ⵠⵙⴰâµâµœâµ‰âµâµ‰âµ",
+ "symbol": "SHP"
+ },
+ "MZN": {
+ "name": "ⴰⵎⵉⵜⵉⴽⵠⵠⵎⵓⵣâµâ´±âµ‰âµ‡",
+ "symbol": "MZN"
+ },
+ "ZAR": {
+ "name": "ⴰⵔⴰâµâ´· ⵠⴰⴼⵔⵉⵇⵢⴰ ⵠⵉⴼⴼⵓⵙ",
+ "symbol": "ZAR"
+ },
+ "INR": {
+ "name": "ⴰⵔⵓⴱⵉ âµ âµâµ€âµ‰âµâ´·",
+ "symbol": "₹"
+ },
+ "MUR": {
+ "name": "ⴰⵔⵓⴱⵉ ⵠⵎⵓⵔⵉⵙ",
+ "symbol": "MUR"
+ },
+ "SCR": {
+ "name": "ⴰⵔⵓⴱⵉ ⵠⵙⵙⵉⵛⵉâµ",
+ "symbol": "SCR"
+ },
+ "SAR": {
+ "name": "ⴰⵔⵢⴰⵠⵠⵙⵙⴰⵄⵓⴷⵉⵢⴰ",
+ "symbol": "SAR"
+ },
+ "KES": {
+ "name": "ⴰⵛⵉâµâµ‰âµ ⵠⴽⵉâµâµ¢â´°",
+ "symbol": "KES"
+ },
+ "UGX": {
+ "name": "ⴰⵛⵉâµâµ‰âµ ⵠⵓⵖⴰâµâ´·â´°",
+ "symbol": "UGX"
+ },
+ "SOS": {
+ "name": "ⴰⵛⵉâµâµ‰âµ ⵠⵚⵚⵓⵎⴰâµ",
+ "symbol": "SOS"
+ },
+ "TZS": {
+ "name": "ⴰⵛⵉâµâµ‰âµ ⵠⵟⴰâµâµ¥â´°âµâµ¢â´°",
+ "symbol": "TZS"
+ },
+ "JPY": {
+ "name": "ⴰⵢⴰⵠⵠâµâµ¢â´°â´±â´°âµ",
+ "symbol": "JPÂ¥"
+ },
+ "CNY": {
+ "name": "ⴰⵢⴰⵠⵠⵛⵛⵉâµâµ¡â´°",
+ "symbol": "CNÂ¥"
+ },
+ "ETB": {
+ "name": "ⴱⵉⵔ ⵠⵉⵜⵢⵓⴱⵢⴰ",
+ "symbol": "ETB"
+ },
+ "GMD": {
+ "name": "â´·â´°âµâ´°âµ™âµ‰ ⵠⴳⴰⵎⴱⵢⴰ",
+ "symbol": "GMD"
+ },
+ "BIF": {
+ "name": "ⴼⵔⴰâµâ´½ ⵠⴱⵓⵔⵓâµâ´·âµ‰",
+ "symbol": "BIF"
+ },
+ "DJF": {
+ "name": "ⴼⵔⴰâµâ´½ ⵠⴷⵊⵉⴱⵓⵜⵉ",
+ "symbol": "DJF"
+ },
+ "CDF": {
+ "name": "ⴼⵔⴰâµâ´½ ⵠⴽⵓâµâ´³âµ“",
+ "symbol": "CDF"
+ },
+ "KMF": {
+ "name": "ⴼⵔⴰâµâ´½ ⵠⵇⵓⵎⵓⵕ",
+ "symbol": "KMF"
+ },
+ "MGA": {
+ "name": "ⴼⵔⴰâµâ´½ ⵠⵎⴰⴷⴰⵖⴰⵛⵇⴰⵔ",
+ "symbol": "MGA"
+ },
+ "XAF": {
+ "name": "ⴼⵔⴰâµâ´½ ⵚⵉⴼⴰ",
+ "symbol": "FCFA"
+ },
+ "XOF": {
+ "name": "ⴼⵔⴰâµâ´½ ⵚⵉⴼⴰ ⴱⵉⵙⴰⵡ",
+ "symbol": "CFA"
+ },
+ "AOA": {
+ "name": "ⴽⵡⴰâµâµ£â´° âµ â´°âµâ´³âµ“âµâ´°",
+ "symbol": "AOA"
+ },
+ "MWK": {
+ "name": "ⴽⵡⴰⵛⴰ ⵠⵎⴰâµâ´°âµ¡âµ‰",
+ "symbol": "MWK"
+ },
+ "CVE": {
+ "name": "ⵉⵙⴽⵓⴷⵓ ⵠⴽⴰⴱⴱⵉⵔⴷⵉ",
+ "symbol": "CVE"
+ },
+ "SZL": {
+ "name": "âµâµ‰âµâ´°âµâµŠâµ‰âµâµ‰",
+ "symbol": "SZL"
+ },
+ "SLL": {
+ "name": "âµâµ‰âµ¢âµ“âµ",
+ "symbol": "SLL"
+ },
+ "LSL": {
+ "name": "âµâµ“ⵜⵉ âµ âµâµ‰âµšâµ“ⵟⵓ",
+ "symbol": "LSL"
+ },
+ "ERN": {
+ "name": "âµâ´°â´¼â´½â´° ⵠⵉⵔⵉⵜⵉⵔⵢⴰ",
+ "symbol": "ERN"
+ },
+ "NGN": {
+ "name": "âµâ´°âµ¢âµ”â´° âµ âµâµ‰âµŠâµ‰âµ”ⵢⴰ",
+ "symbol": "NGN"
+ },
+ "MRO": {
+ "name": "ⵓⵇⵉⵢⵢⴰ ⵠⵎⵓⵕⵉⵟⴰâµâµ¢â´°",
+ "symbol": "MRO"
+ },
+ "EUR": {
+ "name": "ⵓⵔⵓ",
+ "symbol": "€"
+ },
+ "GHS": {
+ "name": "ⵙⵉⴷⵉ âµ âµ–â´°âµâ´°",
+ "symbol": "GHS"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/currency/zh-Hans-HK.json b/library/intl/resources/currency/zh-Hans-HK.json
new file mode 100644
index 000000000..6f1285083
--- /dev/null
+++ b/library/intl/resources/currency/zh-Hans-HK.json
@@ -0,0 +1,634 @@
+{
+ "ALL": {
+ "name": "阿尔巴尼亚列克",
+ "symbol": "ALL"
+ },
+ "DZD": {
+ "name": "阿尔åŠåˆ©äºšç¬¬çº³å°”",
+ "symbol": "DZD"
+ },
+ "AFN": {
+ "name": "阿富汗尼",
+ "symbol": "AFN"
+ },
+ "ARS": {
+ "name": "阿根廷比索",
+ "symbol": "ARS"
+ },
+ "AED": {
+ "name": "阿è”酋迪拉姆",
+ "symbol": "AED"
+ },
+ "AWG": {
+ "name": "阿é²å·´å¼—ç½—æž—",
+ "symbol": "AWG"
+ },
+ "OMR": {
+ "name": "阿曼里亚尔",
+ "symbol": "OMR"
+ },
+ "AZN": {
+ "name": "阿塞拜疆马纳特",
+ "symbol": "AZN"
+ },
+ "EGP": {
+ "name": "埃åŠé•‘",
+ "symbol": "EGP"
+ },
+ "ETB": {
+ "name": "埃塞俄比亚比尔",
+ "symbol": "ETB"
+ },
+ "AOA": {
+ "name": "安哥拉宽扎",
+ "symbol": "AOA"
+ },
+ "AUD": {
+ "name": "澳大利亚元",
+ "symbol": "AU$"
+ },
+ "MOP": {
+ "name": "澳门元",
+ "symbol": "MOP"
+ },
+ "BBD": {
+ "name": "巴巴多斯元",
+ "symbol": "BBD"
+ },
+ "PGK": {
+ "name": "巴布亚新几内亚基那",
+ "symbol": "PGK"
+ },
+ "BSD": {
+ "name": "巴哈马元",
+ "symbol": "BSD"
+ },
+ "PKR": {
+ "name": "巴基斯å¦å¢æ¯”",
+ "symbol": "PKR"
+ },
+ "PYG": {
+ "name": "巴拉圭瓜拉尼",
+ "symbol": "PYG"
+ },
+ "BHD": {
+ "name": "巴林第纳尔",
+ "symbol": "BHD"
+ },
+ "PAB": {
+ "name": "巴拿马巴波亚",
+ "symbol": "PAB"
+ },
+ "BRL": {
+ "name": "巴西雷亚尔",
+ "symbol": "R$"
+ },
+ "BYR": {
+ "name": "白俄罗斯å¢å¸ƒ",
+ "symbol": "BYR"
+ },
+ "BMD": {
+ "name": "百慕大元",
+ "symbol": "BMD"
+ },
+ "BGN": {
+ "name": "ä¿åŠ åˆ©äºšæ–°åˆ—å¼—",
+ "symbol": "BGN"
+ },
+ "ISK": {
+ "name": "冰岛克朗",
+ "symbol": "ISK"
+ },
+ "PLN": {
+ "name": "波兰兹罗æ",
+ "symbol": "PLN"
+ },
+ "BAM": {
+ "name": "波斯尼亚-黑塞哥维那å¯å…‘æ¢é©¬å…‹",
+ "symbol": "BAM"
+ },
+ "BOB": {
+ "name": "玻利维亚诺",
+ "symbol": "BOB"
+ },
+ "BZD": {
+ "name": "伯利兹元",
+ "symbol": "BZD"
+ },
+ "BWP": {
+ "name": "åšèŒ¨ç“¦çº³æ™®æ‹‰",
+ "symbol": "BWP"
+ },
+ "BTN": {
+ "name": "ä¸ä¸¹åŠªå°”特é²å§†",
+ "symbol": "BTN"
+ },
+ "BIF": {
+ "name": "布隆迪法郎",
+ "symbol": "BIF"
+ },
+ "KPW": {
+ "name": "æœé²œå…ƒ",
+ "symbol": "KPW"
+ },
+ "DKK": {
+ "name": "丹麦克朗",
+ "symbol": "DKK"
+ },
+ "XCD": {
+ "name": "东加勒比元",
+ "symbol": "EC$"
+ },
+ "DOP": {
+ "name": "多米尼加比索",
+ "symbol": "DOP"
+ },
+ "RUB": {
+ "name": "ä¿„ç½—æ–¯å¢å¸ƒ",
+ "symbol": "RUB"
+ },
+ "ERN": {
+ "name": "厄立特里亚纳克法",
+ "symbol": "ERN"
+ },
+ "XOF": {
+ "name": "éžæ´²é‡‘èžå…±åŒä½“法郎",
+ "symbol": "CFA"
+ },
+ "PHP": {
+ "name": "è²å¾‹å®¾æ¯”ç´¢",
+ "symbol": "PHP"
+ },
+ "FJD": {
+ "name": "æ–济元",
+ "symbol": "FJD"
+ },
+ "CVE": {
+ "name": "佛得角埃斯库多",
+ "symbol": "CVE"
+ },
+ "FKP": {
+ "name": "ç¦å…‹å…°ç¾¤å²›é•‘",
+ "symbol": "FKP"
+ },
+ "GMD": {
+ "name": "冈比亚达拉西",
+ "symbol": "GMD"
+ },
+ "CDF": {
+ "name": "刚果法郎",
+ "symbol": "CDF"
+ },
+ "HKD": {
+ "name": "港元",
+ "symbol": "HK$"
+ },
+ "COP": {
+ "name": "哥伦比亚比索",
+ "symbol": "COP"
+ },
+ "CRC": {
+ "name": "哥斯达黎加科朗",
+ "symbol": "CRC"
+ },
+ "GEL": {
+ "name": "æ ¼é²å‰äºšæ‹‰é‡Œ",
+ "symbol": "GEL"
+ },
+ "CUP": {
+ "name": "å¤å·´æ¯”ç´¢",
+ "symbol": "CUP"
+ },
+ "CUC": {
+ "name": "å¤å·´å¯å…‘æ¢æ¯”ç´¢",
+ "symbol": "CUC"
+ },
+ "GYD": {
+ "name": "圭亚那元",
+ "symbol": "GYD"
+ },
+ "KZT": {
+ "name": "哈è¨å…‹æ–¯å¦è…¾æ ¼",
+ "symbol": "KZT"
+ },
+ "HTG": {
+ "name": "海地å¤å¾·",
+ "symbol": "HTG"
+ },
+ "KRW": {
+ "name": "韩元",
+ "symbol": "₩"
+ },
+ "ANG": {
+ "name": "è·å±žå®‰çš„列斯盾",
+ "symbol": "ANG"
+ },
+ "HNL": {
+ "name": "洪都拉斯拉伦皮拉",
+ "symbol": "HNL"
+ },
+ "DJF": {
+ "name": "å‰å¸ƒæ法郎",
+ "symbol": "DJF"
+ },
+ "KGS": {
+ "name": "å‰å°”å‰æ–¯æ–¯å¦ç´¢å§†",
+ "symbol": "KGS"
+ },
+ "GNF": {
+ "name": "几内亚法郎",
+ "symbol": "GNF"
+ },
+ "CAD": {
+ "name": "加拿大元",
+ "symbol": "CA$"
+ },
+ "GHS": {
+ "name": "加纳塞地",
+ "symbol": "GHS"
+ },
+ "KHR": {
+ "name": "柬埔寨瑞尔",
+ "symbol": "KHR"
+ },
+ "CZK": {
+ "name": "æ·å…‹å…‹éƒŽ",
+ "symbol": "CZK"
+ },
+ "ZWL": {
+ "name": "津巴布韦元 (2009)",
+ "symbol": "ZWL"
+ },
+ "QAR": {
+ "name": "å¡å¡”尔里亚尔",
+ "symbol": "QAR"
+ },
+ "KYD": {
+ "name": "开曼群岛元",
+ "symbol": "KYD"
+ },
+ "KMF": {
+ "name": "科摩罗法郎",
+ "symbol": "KMF"
+ },
+ "KWD": {
+ "name": "科å¨ç‰¹ç¬¬çº³å°”",
+ "symbol": "KWD"
+ },
+ "HRK": {
+ "name": "克罗地亚库纳",
+ "symbol": "HRK"
+ },
+ "KES": {
+ "name": "肯尼亚先令",
+ "symbol": "KES"
+ },
+ "LSL": {
+ "name": "莱索托洛蒂",
+ "symbol": "LSL"
+ },
+ "LAK": {
+ "name": "è€æŒåŸºæ™®",
+ "symbol": "LAK"
+ },
+ "LBP": {
+ "name": "黎巴嫩镑",
+ "symbol": "LBP"
+ },
+ "LTL": {
+ "name": "立陶宛立特",
+ "symbol": "LTL"
+ },
+ "LRD": {
+ "name": "利比里亚元",
+ "symbol": "LRD"
+ },
+ "LYD": {
+ "name": "利比亚第纳尔",
+ "symbol": "LYD"
+ },
+ "RWF": {
+ "name": "å¢æ—ºè¾¾æ³•éƒŽ",
+ "symbol": "RWF"
+ },
+ "RON": {
+ "name": "罗马尼亚列伊",
+ "symbol": "RON"
+ },
+ "MGA": {
+ "name": "马达加斯加阿里亚里",
+ "symbol": "MGA"
+ },
+ "MVR": {
+ "name": "马尔代夫å¢è²äºš",
+ "symbol": "MVR"
+ },
+ "MWK": {
+ "name": "马拉维克瓦查",
+ "symbol": "MWK"
+ },
+ "MYR": {
+ "name": "马æ¥è¥¿äºšæž—å‰ç‰¹",
+ "symbol": "MYR"
+ },
+ "MKD": {
+ "name": "马其顿第纳尔",
+ "symbol": "MKD"
+ },
+ "MUR": {
+ "name": "毛里求斯å¢æ¯”",
+ "symbol": "MUR"
+ },
+ "MRO": {
+ "name": "毛里塔尼亚乌å‰äºš",
+ "symbol": "MRO"
+ },
+ "USD": {
+ "name": "美元",
+ "symbol": "US$"
+ },
+ "MNT": {
+ "name": "è’™å¤å›¾æ ¼é‡Œå…‹",
+ "symbol": "MNT"
+ },
+ "BDT": {
+ "name": "孟加拉塔å¡",
+ "symbol": "BDT"
+ },
+ "PEN": {
+ "name": "秘é²æ–°ç´¢å°”",
+ "symbol": "PEN"
+ },
+ "MMK": {
+ "name": "缅甸元",
+ "symbol": "MMK"
+ },
+ "MDL": {
+ "name": "摩尔多瓦列伊",
+ "symbol": "MDL"
+ },
+ "MAD": {
+ "name": "摩洛哥迪拉姆",
+ "symbol": "MAD"
+ },
+ "MZN": {
+ "name": "莫桑比克美æå¡",
+ "symbol": "MZN"
+ },
+ "MXN": {
+ "name": "墨西哥比索",
+ "symbol": "MX$"
+ },
+ "NAD": {
+ "name": "纳米比亚元",
+ "symbol": "NAD"
+ },
+ "ZAR": {
+ "name": "å—éžå…°ç‰¹",
+ "symbol": "ZAR"
+ },
+ "SSP": {
+ "name": "å—è‹ä¸¹é•‘",
+ "symbol": "SSP"
+ },
+ "NIO": {
+ "name": "尼加拉瓜科多巴",
+ "symbol": "NIO"
+ },
+ "NPR": {
+ "name": "尼泊尔å¢æ¯”",
+ "symbol": "NPR"
+ },
+ "NGN": {
+ "name": "尼日利亚奈拉",
+ "symbol": "NGN"
+ },
+ "NOK": {
+ "name": "挪å¨å…‹æœ—",
+ "symbol": "NOK"
+ },
+ "EUR": {
+ "name": "欧元",
+ "symbol": "€"
+ },
+ "CNY": {
+ "name": "人民å¸",
+ "symbol": "CNÂ¥"
+ },
+ "JPY": {
+ "name": "日元",
+ "symbol": "JPÂ¥"
+ },
+ "SEK": {
+ "name": "瑞典克朗",
+ "symbol": "SEK"
+ },
+ "CHF": {
+ "name": "瑞士法郎",
+ "symbol": "CHF"
+ },
+ "SVC": {
+ "name": "è¨å°”瓦多科朗",
+ "symbol": "SVC"
+ },
+ "WST": {
+ "name": "è¨æ‘©äºšå¡”拉",
+ "symbol": "WST"
+ },
+ "RSD": {
+ "name": "塞尔维亚第纳尔",
+ "symbol": "RSD"
+ },
+ "SLL": {
+ "name": "塞拉利昂利昂",
+ "symbol": "SLL"
+ },
+ "SCR": {
+ "name": "塞舌尔å¢æ¯”",
+ "symbol": "SCR"
+ },
+ "SAR": {
+ "name": "沙特里亚尔",
+ "symbol": "SAR"
+ },
+ "STD": {
+ "name": "圣多美和普林西比多布拉",
+ "symbol": "STD"
+ },
+ "SHP": {
+ "name": "圣赫勒拿群岛磅",
+ "symbol": "SHP"
+ },
+ "LKR": {
+ "name": "斯里兰å¡å¢æ¯”",
+ "symbol": "LKR"
+ },
+ "SZL": {
+ "name": "æ–¯å¨å£«å…°é‡Œå…°å‰å°¼",
+ "symbol": "SZL"
+ },
+ "SDG": {
+ "name": "è‹ä¸¹é•‘",
+ "symbol": "SDG"
+ },
+ "SRD": {
+ "name": "è‹é‡Œå—å…ƒ",
+ "symbol": "SRD"
+ },
+ "SBD": {
+ "name": "所罗门群岛元",
+ "symbol": "SBD"
+ },
+ "SOS": {
+ "name": "索马里先令",
+ "symbol": "SOS"
+ },
+ "TJS": {
+ "name": "å¡”å‰å…‹æ–¯å¦ç´¢èŽ«å°¼",
+ "symbol": "TJS"
+ },
+ "XPF": {
+ "name": "太平洋法郎",
+ "symbol": "CFPF"
+ },
+ "THB": {
+ "name": "æ³°é“¢",
+ "symbol": "฿"
+ },
+ "TZS": {
+ "name": "å¦æ¡‘尼亚先令",
+ "symbol": "TZS"
+ },
+ "TOP": {
+ "name": "汤加潘加",
+ "symbol": "TOP"
+ },
+ "TTD": {
+ "name": "特立尼达和多巴哥元",
+ "symbol": "TTD"
+ },
+ "TND": {
+ "name": "çªå°¼æ–¯ç¬¬çº³å°”",
+ "symbol": "TND"
+ },
+ "TRY": {
+ "name": "土耳其里拉",
+ "symbol": "TRY"
+ },
+ "TMT": {
+ "name": "土库曼斯å¦é©¬çº³ç‰¹",
+ "symbol": "TMT"
+ },
+ "VUV": {
+ "name": "瓦努阿图瓦图",
+ "symbol": "VUV"
+ },
+ "GTQ": {
+ "name": "å±åœ°é©¬æ‹‰æ ¼æŸ¥å°”",
+ "symbol": "GTQ"
+ },
+ "VEF": {
+ "name": "委内瑞拉玻利瓦尔",
+ "symbol": "VEF"
+ },
+ "BND": {
+ "name": "文莱元",
+ "symbol": "BND"
+ },
+ "UGX": {
+ "name": "乌干达先令",
+ "symbol": "UGX"
+ },
+ "UAH": {
+ "name": "乌克兰赫夫纳",
+ "symbol": "UAH"
+ },
+ "UYU": {
+ "name": "乌拉圭比索",
+ "symbol": "UYU"
+ },
+ "UZS": {
+ "name": "乌兹别克斯å¦è‹å§†",
+ "symbol": "UZS"
+ },
+ "SGD": {
+ "name": "新加å¡å…ƒ",
+ "symbol": "SGD"
+ },
+ "TWD": {
+ "name": "æ–°å°å¸",
+ "symbol": "NT$"
+ },
+ "NZD": {
+ "name": "新西兰元",
+ "symbol": "NZ$"
+ },
+ "HUF": {
+ "name": "匈牙利ç¦æž—",
+ "symbol": "HUF"
+ },
+ "SYP": {
+ "name": "å™åˆ©äºšé•‘",
+ "symbol": "SYP"
+ },
+ "JMD": {
+ "name": "牙买加元",
+ "symbol": "JMD"
+ },
+ "AMD": {
+ "name": "亚美尼亚德拉姆",
+ "symbol": "AMD"
+ },
+ "YER": {
+ "name": "也门里亚尔",
+ "symbol": "YER"
+ },
+ "IQD": {
+ "name": "伊拉克第纳尔",
+ "symbol": "IQD"
+ },
+ "IRR": {
+ "name": "伊朗里亚尔",
+ "symbol": "IRR"
+ },
+ "ILS": {
+ "name": "以色列新谢克尔",
+ "symbol": "₪"
+ },
+ "INR": {
+ "name": "å°åº¦å¢æ¯”",
+ "symbol": "₹"
+ },
+ "IDR": {
+ "name": "å°åº¦å°¼è¥¿äºšç›¾",
+ "symbol": "IDR"
+ },
+ "GBP": {
+ "name": "英镑",
+ "symbol": "£"
+ },
+ "JOD": {
+ "name": "约旦第纳尔",
+ "symbol": "JOD"
+ },
+ "VND": {
+ "name": "越å—盾",
+ "symbol": "â‚«"
+ },
+ "ZMW": {
+ "name": "赞比亚克瓦查",
+ "symbol": "ZMW"
+ },
+ "GIP": {
+ "name": "直布罗陀镑",
+ "symbol": "GIP"
+ },
+ "CLP": {
+ "name": "智利比索",
+ "symbol": "CLP"
+ },
+ "XAF": {
+ "name": "中éžé‡‘èžåˆä½œæ³•éƒŽ",
+ "symbol": "FCFA"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/currency/zh-Hans-MO.json b/library/intl/resources/currency/zh-Hans-MO.json
new file mode 100644
index 000000000..a2acb7cc9
--- /dev/null
+++ b/library/intl/resources/currency/zh-Hans-MO.json
@@ -0,0 +1,634 @@
+{
+ "ALL": {
+ "name": "阿尔巴尼亚列克",
+ "symbol": "ALL"
+ },
+ "DZD": {
+ "name": "阿尔åŠåˆ©äºšç¬¬çº³å°”",
+ "symbol": "DZD"
+ },
+ "AFN": {
+ "name": "阿富汗尼",
+ "symbol": "AFN"
+ },
+ "ARS": {
+ "name": "阿根廷比索",
+ "symbol": "ARS"
+ },
+ "AED": {
+ "name": "阿è”酋迪拉姆",
+ "symbol": "AED"
+ },
+ "AWG": {
+ "name": "阿é²å·´å¼—ç½—æž—",
+ "symbol": "AWG"
+ },
+ "OMR": {
+ "name": "阿曼里亚尔",
+ "symbol": "OMR"
+ },
+ "AZN": {
+ "name": "阿塞拜疆马纳特",
+ "symbol": "AZN"
+ },
+ "EGP": {
+ "name": "埃åŠé•‘",
+ "symbol": "EGP"
+ },
+ "ETB": {
+ "name": "埃塞俄比亚比尔",
+ "symbol": "ETB"
+ },
+ "AOA": {
+ "name": "安哥拉宽扎",
+ "symbol": "AOA"
+ },
+ "AUD": {
+ "name": "澳大利亚元",
+ "symbol": "AU$"
+ },
+ "MOP": {
+ "name": "澳门元",
+ "symbol": "MOP$"
+ },
+ "BBD": {
+ "name": "巴巴多斯元",
+ "symbol": "BBD"
+ },
+ "PGK": {
+ "name": "巴布亚新几内亚基那",
+ "symbol": "PGK"
+ },
+ "BSD": {
+ "name": "巴哈马元",
+ "symbol": "BSD"
+ },
+ "PKR": {
+ "name": "巴基斯å¦å¢æ¯”",
+ "symbol": "PKR"
+ },
+ "PYG": {
+ "name": "巴拉圭瓜拉尼",
+ "symbol": "PYG"
+ },
+ "BHD": {
+ "name": "巴林第纳尔",
+ "symbol": "BHD"
+ },
+ "PAB": {
+ "name": "巴拿马巴波亚",
+ "symbol": "PAB"
+ },
+ "BRL": {
+ "name": "巴西雷亚尔",
+ "symbol": "R$"
+ },
+ "BYR": {
+ "name": "白俄罗斯å¢å¸ƒ",
+ "symbol": "BYR"
+ },
+ "BMD": {
+ "name": "百慕大元",
+ "symbol": "BMD"
+ },
+ "BGN": {
+ "name": "ä¿åŠ åˆ©äºšæ–°åˆ—å¼—",
+ "symbol": "BGN"
+ },
+ "ISK": {
+ "name": "冰岛克朗",
+ "symbol": "ISK"
+ },
+ "PLN": {
+ "name": "波兰兹罗æ",
+ "symbol": "PLN"
+ },
+ "BAM": {
+ "name": "波斯尼亚-黑塞哥维那å¯å…‘æ¢é©¬å…‹",
+ "symbol": "BAM"
+ },
+ "BOB": {
+ "name": "玻利维亚诺",
+ "symbol": "BOB"
+ },
+ "BZD": {
+ "name": "伯利兹元",
+ "symbol": "BZD"
+ },
+ "BWP": {
+ "name": "åšèŒ¨ç“¦çº³æ™®æ‹‰",
+ "symbol": "BWP"
+ },
+ "BTN": {
+ "name": "ä¸ä¸¹åŠªå°”特é²å§†",
+ "symbol": "BTN"
+ },
+ "BIF": {
+ "name": "布隆迪法郎",
+ "symbol": "BIF"
+ },
+ "KPW": {
+ "name": "æœé²œå…ƒ",
+ "symbol": "KPW"
+ },
+ "DKK": {
+ "name": "丹麦克朗",
+ "symbol": "DKK"
+ },
+ "XCD": {
+ "name": "东加勒比元",
+ "symbol": "EC$"
+ },
+ "DOP": {
+ "name": "多米尼加比索",
+ "symbol": "DOP"
+ },
+ "RUB": {
+ "name": "ä¿„ç½—æ–¯å¢å¸ƒ",
+ "symbol": "RUB"
+ },
+ "ERN": {
+ "name": "厄立特里亚纳克法",
+ "symbol": "ERN"
+ },
+ "XOF": {
+ "name": "éžæ´²é‡‘èžå…±åŒä½“法郎",
+ "symbol": "CFA"
+ },
+ "PHP": {
+ "name": "è²å¾‹å®¾æ¯”ç´¢",
+ "symbol": "PHP"
+ },
+ "FJD": {
+ "name": "æ–济元",
+ "symbol": "FJD"
+ },
+ "CVE": {
+ "name": "佛得角埃斯库多",
+ "symbol": "CVE"
+ },
+ "FKP": {
+ "name": "ç¦å…‹å…°ç¾¤å²›é•‘",
+ "symbol": "FKP"
+ },
+ "GMD": {
+ "name": "冈比亚达拉西",
+ "symbol": "GMD"
+ },
+ "CDF": {
+ "name": "刚果法郎",
+ "symbol": "CDF"
+ },
+ "HKD": {
+ "name": "港元",
+ "symbol": "HK$"
+ },
+ "COP": {
+ "name": "哥伦比亚比索",
+ "symbol": "COP"
+ },
+ "CRC": {
+ "name": "哥斯达黎加科朗",
+ "symbol": "CRC"
+ },
+ "GEL": {
+ "name": "æ ¼é²å‰äºšæ‹‰é‡Œ",
+ "symbol": "GEL"
+ },
+ "CUP": {
+ "name": "å¤å·´æ¯”ç´¢",
+ "symbol": "CUP"
+ },
+ "CUC": {
+ "name": "å¤å·´å¯å…‘æ¢æ¯”ç´¢",
+ "symbol": "CUC"
+ },
+ "GYD": {
+ "name": "圭亚那元",
+ "symbol": "GYD"
+ },
+ "KZT": {
+ "name": "哈è¨å…‹æ–¯å¦è…¾æ ¼",
+ "symbol": "KZT"
+ },
+ "HTG": {
+ "name": "海地å¤å¾·",
+ "symbol": "HTG"
+ },
+ "KRW": {
+ "name": "韩元",
+ "symbol": "₩"
+ },
+ "ANG": {
+ "name": "è·å±žå®‰çš„列斯盾",
+ "symbol": "ANG"
+ },
+ "HNL": {
+ "name": "洪都拉斯伦皮拉",
+ "symbol": "HNL"
+ },
+ "DJF": {
+ "name": "å‰å¸ƒæ法郎",
+ "symbol": "DJF"
+ },
+ "KGS": {
+ "name": "å‰å°”å‰æ–¯æ–¯å¦ç´¢å§†",
+ "symbol": "KGS"
+ },
+ "GNF": {
+ "name": "几内亚法郎",
+ "symbol": "GNF"
+ },
+ "CAD": {
+ "name": "加拿大元",
+ "symbol": "CA$"
+ },
+ "GHS": {
+ "name": "加纳塞地",
+ "symbol": "GHS"
+ },
+ "KHR": {
+ "name": "柬埔寨瑞尔",
+ "symbol": "KHR"
+ },
+ "CZK": {
+ "name": "æ·å…‹å…‹éƒŽ",
+ "symbol": "CZK"
+ },
+ "ZWL": {
+ "name": "津巴布韦元 (2009)",
+ "symbol": "ZWL"
+ },
+ "QAR": {
+ "name": "å¡å¡”尔里亚尔",
+ "symbol": "QAR"
+ },
+ "KYD": {
+ "name": "开曼元",
+ "symbol": "KYD"
+ },
+ "KMF": {
+ "name": "科摩罗法郎",
+ "symbol": "KMF"
+ },
+ "KWD": {
+ "name": "科å¨ç‰¹ç¬¬çº³å°”",
+ "symbol": "KWD"
+ },
+ "HRK": {
+ "name": "克罗地亚库纳",
+ "symbol": "HRK"
+ },
+ "KES": {
+ "name": "肯尼亚先令",
+ "symbol": "KES"
+ },
+ "LSL": {
+ "name": "莱索托洛蒂",
+ "symbol": "LSL"
+ },
+ "LAK": {
+ "name": "è€æŒåŸºæ™®",
+ "symbol": "LAK"
+ },
+ "LBP": {
+ "name": "黎巴嫩镑",
+ "symbol": "LBP"
+ },
+ "LTL": {
+ "name": "立陶宛立特",
+ "symbol": "LTL"
+ },
+ "LRD": {
+ "name": "利比里亚元",
+ "symbol": "LRD"
+ },
+ "LYD": {
+ "name": "利比亚第纳尔",
+ "symbol": "LYD"
+ },
+ "RWF": {
+ "name": "å¢æ—ºè¾¾æ³•éƒŽ",
+ "symbol": "RWF"
+ },
+ "RON": {
+ "name": "罗马尼亚列伊",
+ "symbol": "RON"
+ },
+ "MGA": {
+ "name": "马达加斯加阿里亚里",
+ "symbol": "MGA"
+ },
+ "MVR": {
+ "name": "马尔代夫å¢è²äºš",
+ "symbol": "MVR"
+ },
+ "MWK": {
+ "name": "马拉维克瓦查",
+ "symbol": "MWK"
+ },
+ "MYR": {
+ "name": "马æ¥è¥¿äºšæž—å‰ç‰¹",
+ "symbol": "MYR"
+ },
+ "MKD": {
+ "name": "马其顿第纳尔",
+ "symbol": "MKD"
+ },
+ "MUR": {
+ "name": "毛里求斯å¢æ¯”",
+ "symbol": "MUR"
+ },
+ "MRO": {
+ "name": "毛里塔尼亚乌å‰äºš",
+ "symbol": "MRO"
+ },
+ "USD": {
+ "name": "美元",
+ "symbol": "US$"
+ },
+ "MNT": {
+ "name": "è’™å¤å›¾æ ¼é‡Œå…‹",
+ "symbol": "MNT"
+ },
+ "BDT": {
+ "name": "孟加拉塔å¡",
+ "symbol": "BDT"
+ },
+ "PEN": {
+ "name": "秘é²æ–°ç´¢å°”",
+ "symbol": "PEN"
+ },
+ "MMK": {
+ "name": "缅甸元",
+ "symbol": "MMK"
+ },
+ "MDL": {
+ "name": "摩尔多瓦列伊",
+ "symbol": "MDL"
+ },
+ "MAD": {
+ "name": "摩洛哥迪拉姆",
+ "symbol": "MAD"
+ },
+ "MZN": {
+ "name": "莫桑比克美æå¡",
+ "symbol": "MZN"
+ },
+ "MXN": {
+ "name": "墨西哥比索",
+ "symbol": "MX$"
+ },
+ "NAD": {
+ "name": "纳米比亚元",
+ "symbol": "NAD"
+ },
+ "ZAR": {
+ "name": "å—éžå…°ç‰¹",
+ "symbol": "ZAR"
+ },
+ "SSP": {
+ "name": "å—è‹ä¸¹é•‘",
+ "symbol": "SSP"
+ },
+ "NIO": {
+ "name": "尼加拉瓜科多巴",
+ "symbol": "NIO"
+ },
+ "NPR": {
+ "name": "尼泊尔å¢æ¯”",
+ "symbol": "NPR"
+ },
+ "NGN": {
+ "name": "尼日利亚奈拉",
+ "symbol": "NGN"
+ },
+ "NOK": {
+ "name": "挪å¨å…‹æœ—",
+ "symbol": "NOK"
+ },
+ "EUR": {
+ "name": "欧元",
+ "symbol": "€"
+ },
+ "CNY": {
+ "name": "人民å¸",
+ "symbol": "CNÂ¥"
+ },
+ "JPY": {
+ "name": "日元",
+ "symbol": "JPÂ¥"
+ },
+ "SEK": {
+ "name": "瑞典克朗",
+ "symbol": "SEK"
+ },
+ "CHF": {
+ "name": "瑞士法郎",
+ "symbol": "CHF"
+ },
+ "SVC": {
+ "name": "è¨å°”瓦多科朗",
+ "symbol": "SVC"
+ },
+ "WST": {
+ "name": "è¨æ‘©äºšå¡”拉",
+ "symbol": "WST"
+ },
+ "RSD": {
+ "name": "塞尔维亚第纳尔",
+ "symbol": "RSD"
+ },
+ "SLL": {
+ "name": "塞拉利昂利昂",
+ "symbol": "SLL"
+ },
+ "SCR": {
+ "name": "塞舌尔å¢æ¯”",
+ "symbol": "SCR"
+ },
+ "SAR": {
+ "name": "沙特里亚尔",
+ "symbol": "SAR"
+ },
+ "STD": {
+ "name": "圣多美和普林西比多布拉",
+ "symbol": "STD"
+ },
+ "SHP": {
+ "name": "圣赫勒拿群岛磅",
+ "symbol": "SHP"
+ },
+ "LKR": {
+ "name": "斯里兰å¡å¢æ¯”",
+ "symbol": "LKR"
+ },
+ "SZL": {
+ "name": "æ–¯å¨å£«å…°é‡Œå…°å‰å°¼",
+ "symbol": "SZL"
+ },
+ "SDG": {
+ "name": "è‹ä¸¹é•‘",
+ "symbol": "SDG"
+ },
+ "SRD": {
+ "name": "è‹é‡Œå—å…ƒ",
+ "symbol": "SRD"
+ },
+ "SBD": {
+ "name": "所罗门群岛元",
+ "symbol": "SBD"
+ },
+ "SOS": {
+ "name": "索马里先令",
+ "symbol": "SOS"
+ },
+ "TJS": {
+ "name": "å¡”å‰å…‹æ–¯å¦ç´¢èŽ«å°¼",
+ "symbol": "TJS"
+ },
+ "XPF": {
+ "name": "太平洋法郎",
+ "symbol": "CFPF"
+ },
+ "THB": {
+ "name": "æ³°é“¢",
+ "symbol": "฿"
+ },
+ "TZS": {
+ "name": "å¦æ¡‘尼亚先令",
+ "symbol": "TZS"
+ },
+ "TOP": {
+ "name": "汤加潘加",
+ "symbol": "TOP"
+ },
+ "TTD": {
+ "name": "特立尼达和多巴哥元",
+ "symbol": "TTD"
+ },
+ "TND": {
+ "name": "çªå°¼æ–¯ç¬¬çº³å°”",
+ "symbol": "TND"
+ },
+ "TRY": {
+ "name": "土耳其里拉",
+ "symbol": "TRY"
+ },
+ "TMT": {
+ "name": "土库曼斯å¦é©¬çº³ç‰¹",
+ "symbol": "TMT"
+ },
+ "VUV": {
+ "name": "瓦努阿图瓦图",
+ "symbol": "VUV"
+ },
+ "GTQ": {
+ "name": "å±åœ°é©¬æ‹‰æ ¼æŸ¥å°”",
+ "symbol": "GTQ"
+ },
+ "VEF": {
+ "name": "委内瑞拉玻利瓦尔",
+ "symbol": "VEF"
+ },
+ "BND": {
+ "name": "文莱元",
+ "symbol": "BND"
+ },
+ "UGX": {
+ "name": "乌干达先令",
+ "symbol": "UGX"
+ },
+ "UAH": {
+ "name": "乌克兰格里夫纳",
+ "symbol": "UAH"
+ },
+ "UYU": {
+ "name": "乌拉圭比索",
+ "symbol": "UYU"
+ },
+ "UZS": {
+ "name": "乌兹别克斯å¦è‹å§†",
+ "symbol": "UZS"
+ },
+ "SGD": {
+ "name": "新加å¡å…ƒ",
+ "symbol": "SGD"
+ },
+ "TWD": {
+ "name": "æ–°å°å¸",
+ "symbol": "NT$"
+ },
+ "NZD": {
+ "name": "新西兰元",
+ "symbol": "NZ$"
+ },
+ "HUF": {
+ "name": "匈牙利ç¦æž—",
+ "symbol": "HUF"
+ },
+ "SYP": {
+ "name": "å™åˆ©äºšé•‘",
+ "symbol": "SYP"
+ },
+ "JMD": {
+ "name": "牙买加元",
+ "symbol": "JMD"
+ },
+ "AMD": {
+ "name": "亚美尼亚德拉姆",
+ "symbol": "AMD"
+ },
+ "YER": {
+ "name": "也门里亚尔",
+ "symbol": "YER"
+ },
+ "IQD": {
+ "name": "伊拉克第纳尔",
+ "symbol": "IQD"
+ },
+ "IRR": {
+ "name": "伊朗里亚尔",
+ "symbol": "IRR"
+ },
+ "ILS": {
+ "name": "以色列新谢克尔",
+ "symbol": "₪"
+ },
+ "INR": {
+ "name": "å°åº¦å¢æ¯”",
+ "symbol": "₹"
+ },
+ "IDR": {
+ "name": "å°åº¦å°¼è¥¿äºšç›¾",
+ "symbol": "IDR"
+ },
+ "GBP": {
+ "name": "英镑",
+ "symbol": "£"
+ },
+ "JOD": {
+ "name": "约旦第纳尔",
+ "symbol": "JOD"
+ },
+ "VND": {
+ "name": "越å—盾",
+ "symbol": "â‚«"
+ },
+ "ZMW": {
+ "name": "赞比亚克瓦查",
+ "symbol": "ZMW"
+ },
+ "GIP": {
+ "name": "直布罗陀镑",
+ "symbol": "GIP"
+ },
+ "CLP": {
+ "name": "智利比索",
+ "symbol": "CLP"
+ },
+ "XAF": {
+ "name": "中éžé‡‘èžåˆä½œæ³•éƒŽ",
+ "symbol": "FCFA"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/currency/zh-Hans-SG.json b/library/intl/resources/currency/zh-Hans-SG.json
new file mode 100644
index 000000000..f092694fa
--- /dev/null
+++ b/library/intl/resources/currency/zh-Hans-SG.json
@@ -0,0 +1,634 @@
+{
+ "ALL": {
+ "name": "阿尔巴尼亚列克",
+ "symbol": "ALL"
+ },
+ "DZD": {
+ "name": "阿尔åŠåˆ©äºšç¬¬çº³å°”",
+ "symbol": "DZD"
+ },
+ "AFN": {
+ "name": "阿富汗尼",
+ "symbol": "AFN"
+ },
+ "ARS": {
+ "name": "阿根廷比索",
+ "symbol": "ARS"
+ },
+ "AED": {
+ "name": "阿è”酋迪拉姆",
+ "symbol": "AED"
+ },
+ "AWG": {
+ "name": "阿é²å·´å¼—ç½—æž—",
+ "symbol": "AWG"
+ },
+ "OMR": {
+ "name": "阿曼里亚尔",
+ "symbol": "OMR"
+ },
+ "AZN": {
+ "name": "阿塞拜疆马纳特",
+ "symbol": "AZN"
+ },
+ "EGP": {
+ "name": "埃åŠé•‘",
+ "symbol": "EGP"
+ },
+ "ETB": {
+ "name": "埃塞俄比亚比尔",
+ "symbol": "ETB"
+ },
+ "AOA": {
+ "name": "安哥拉宽扎",
+ "symbol": "AOA"
+ },
+ "AUD": {
+ "name": "澳大利亚元",
+ "symbol": "AU$"
+ },
+ "MOP": {
+ "name": "澳门元",
+ "symbol": "MOP"
+ },
+ "BBD": {
+ "name": "巴巴多斯元",
+ "symbol": "BBD"
+ },
+ "PGK": {
+ "name": "巴布亚新几内亚基那",
+ "symbol": "PGK"
+ },
+ "BSD": {
+ "name": "巴哈马元",
+ "symbol": "BSD"
+ },
+ "PKR": {
+ "name": "巴基斯å¦å¢æ¯”",
+ "symbol": "PKR"
+ },
+ "PYG": {
+ "name": "巴拉圭瓜拉尼",
+ "symbol": "PYG"
+ },
+ "BHD": {
+ "name": "巴林第纳尔",
+ "symbol": "BHD"
+ },
+ "PAB": {
+ "name": "巴拿马巴波亚",
+ "symbol": "PAB"
+ },
+ "BRL": {
+ "name": "巴西雷亚尔",
+ "symbol": "R$"
+ },
+ "BYR": {
+ "name": "白俄罗斯å¢å¸ƒ",
+ "symbol": "BYR"
+ },
+ "BMD": {
+ "name": "百慕大元",
+ "symbol": "BMD"
+ },
+ "BGN": {
+ "name": "ä¿åŠ åˆ©äºšæ–°åˆ—å¼—",
+ "symbol": "BGN"
+ },
+ "ISK": {
+ "name": "冰岛克朗",
+ "symbol": "ISK"
+ },
+ "PLN": {
+ "name": "波兰兹罗æ",
+ "symbol": "PLN"
+ },
+ "BAM": {
+ "name": "波斯尼亚-黑塞哥维那å¯å…‘æ¢é©¬å…‹",
+ "symbol": "BAM"
+ },
+ "BOB": {
+ "name": "玻利维亚诺",
+ "symbol": "BOB"
+ },
+ "BZD": {
+ "name": "伯利兹元",
+ "symbol": "BZD"
+ },
+ "BWP": {
+ "name": "åšèŒ¨ç“¦çº³æ™®æ‹‰",
+ "symbol": "BWP"
+ },
+ "BTN": {
+ "name": "ä¸ä¸¹åŠªå°”特é²å§†",
+ "symbol": "BTN"
+ },
+ "BIF": {
+ "name": "布隆迪法郎",
+ "symbol": "BIF"
+ },
+ "KPW": {
+ "name": "æœé²œå…ƒ",
+ "symbol": "KPW"
+ },
+ "DKK": {
+ "name": "丹麦克朗",
+ "symbol": "DKK"
+ },
+ "XCD": {
+ "name": "东加勒比元",
+ "symbol": "EC$"
+ },
+ "DOP": {
+ "name": "多米尼加比索",
+ "symbol": "DOP"
+ },
+ "RUB": {
+ "name": "ä¿„ç½—æ–¯å¢å¸ƒ",
+ "symbol": "RUB"
+ },
+ "ERN": {
+ "name": "厄立特里亚纳克法",
+ "symbol": "ERN"
+ },
+ "XOF": {
+ "name": "éžæ´²é‡‘èžå…±åŒä½“法郎",
+ "symbol": "CFA"
+ },
+ "PHP": {
+ "name": "è²å¾‹å®¾æ¯”ç´¢",
+ "symbol": "PHP"
+ },
+ "FJD": {
+ "name": "æ–济元",
+ "symbol": "FJD"
+ },
+ "CVE": {
+ "name": "佛得角埃斯库多",
+ "symbol": "CVE"
+ },
+ "FKP": {
+ "name": "ç¦å…‹å…°ç¾¤å²›é•‘",
+ "symbol": "FKP"
+ },
+ "GMD": {
+ "name": "冈比亚达拉西",
+ "symbol": "GMD"
+ },
+ "CDF": {
+ "name": "刚果法郎",
+ "symbol": "CDF"
+ },
+ "HKD": {
+ "name": "港元",
+ "symbol": "HK$"
+ },
+ "COP": {
+ "name": "哥伦比亚比索",
+ "symbol": "COP"
+ },
+ "CRC": {
+ "name": "哥斯达黎加科朗",
+ "symbol": "CRC"
+ },
+ "GEL": {
+ "name": "æ ¼é²å‰äºšæ‹‰é‡Œ",
+ "symbol": "GEL"
+ },
+ "CUP": {
+ "name": "å¤å·´æ¯”ç´¢",
+ "symbol": "CUP"
+ },
+ "CUC": {
+ "name": "å¤å·´å¯å…‘æ¢æ¯”ç´¢",
+ "symbol": "CUC"
+ },
+ "GYD": {
+ "name": "圭亚那元",
+ "symbol": "GYD"
+ },
+ "KZT": {
+ "name": "哈è¨å…‹æ–¯å¦è…¾æ ¼",
+ "symbol": "KZT"
+ },
+ "HTG": {
+ "name": "海地å¤å¾·",
+ "symbol": "HTG"
+ },
+ "KRW": {
+ "name": "韩元",
+ "symbol": "₩"
+ },
+ "ANG": {
+ "name": "è·å±žå®‰çš„列斯盾",
+ "symbol": "ANG"
+ },
+ "HNL": {
+ "name": "洪都拉斯伦皮拉",
+ "symbol": "HNL"
+ },
+ "DJF": {
+ "name": "å‰å¸ƒæ法郎",
+ "symbol": "DJF"
+ },
+ "KGS": {
+ "name": "å‰å°”å‰æ–¯æ–¯å¦ç´¢å§†",
+ "symbol": "KGS"
+ },
+ "GNF": {
+ "name": "几内亚法郎",
+ "symbol": "GNF"
+ },
+ "CAD": {
+ "name": "加拿大元",
+ "symbol": "CA$"
+ },
+ "GHS": {
+ "name": "加纳塞地",
+ "symbol": "GHS"
+ },
+ "KHR": {
+ "name": "柬埔寨瑞尔",
+ "symbol": "KHR"
+ },
+ "CZK": {
+ "name": "æ·å…‹å…‹éƒŽ",
+ "symbol": "CZK"
+ },
+ "ZWL": {
+ "name": "津巴布韦元 (2009)",
+ "symbol": "ZWL"
+ },
+ "QAR": {
+ "name": "å¡å¡”尔里亚尔",
+ "symbol": "QAR"
+ },
+ "KYD": {
+ "name": "开曼元",
+ "symbol": "KYD"
+ },
+ "KMF": {
+ "name": "科摩罗法郎",
+ "symbol": "KMF"
+ },
+ "KWD": {
+ "name": "科å¨ç‰¹ç¬¬çº³å°”",
+ "symbol": "KWD"
+ },
+ "HRK": {
+ "name": "克罗地亚库纳",
+ "symbol": "HRK"
+ },
+ "KES": {
+ "name": "肯尼亚先令",
+ "symbol": "KES"
+ },
+ "LSL": {
+ "name": "莱索托洛蒂",
+ "symbol": "LSL"
+ },
+ "LAK": {
+ "name": "è€æŒåŸºæ™®",
+ "symbol": "LAK"
+ },
+ "LBP": {
+ "name": "黎巴嫩镑",
+ "symbol": "LBP"
+ },
+ "LTL": {
+ "name": "立陶宛立特",
+ "symbol": "LTL"
+ },
+ "LRD": {
+ "name": "利比里亚元",
+ "symbol": "LRD"
+ },
+ "LYD": {
+ "name": "利比亚第纳尔",
+ "symbol": "LYD"
+ },
+ "RWF": {
+ "name": "å¢æ—ºè¾¾æ³•éƒŽ",
+ "symbol": "RWF"
+ },
+ "RON": {
+ "name": "罗马尼亚列伊",
+ "symbol": "RON"
+ },
+ "MGA": {
+ "name": "马达加斯加阿里亚里",
+ "symbol": "MGA"
+ },
+ "MVR": {
+ "name": "马尔代夫å¢è²äºš",
+ "symbol": "MVR"
+ },
+ "MWK": {
+ "name": "马拉维克瓦查",
+ "symbol": "MWK"
+ },
+ "MYR": {
+ "name": "马æ¥è¥¿äºšæž—å‰ç‰¹",
+ "symbol": "MYR"
+ },
+ "MKD": {
+ "name": "马其顿第纳尔",
+ "symbol": "MKD"
+ },
+ "MUR": {
+ "name": "毛里求斯å¢æ¯”",
+ "symbol": "MUR"
+ },
+ "MRO": {
+ "name": "毛里塔尼亚乌å‰äºš",
+ "symbol": "MRO"
+ },
+ "USD": {
+ "name": "美元",
+ "symbol": "US$"
+ },
+ "MNT": {
+ "name": "è’™å¤å›¾æ ¼é‡Œå…‹",
+ "symbol": "MNT"
+ },
+ "BDT": {
+ "name": "孟加拉塔å¡",
+ "symbol": "BDT"
+ },
+ "PEN": {
+ "name": "秘é²æ–°ç´¢å°”",
+ "symbol": "PEN"
+ },
+ "MMK": {
+ "name": "缅甸元",
+ "symbol": "MMK"
+ },
+ "MDL": {
+ "name": "摩尔多瓦列伊",
+ "symbol": "MDL"
+ },
+ "MAD": {
+ "name": "摩洛哥迪拉姆",
+ "symbol": "MAD"
+ },
+ "MZN": {
+ "name": "莫桑比克美æå¡",
+ "symbol": "MZN"
+ },
+ "MXN": {
+ "name": "墨西哥比索",
+ "symbol": "MX$"
+ },
+ "NAD": {
+ "name": "纳米比亚元",
+ "symbol": "NAD"
+ },
+ "ZAR": {
+ "name": "å—éžå…°ç‰¹",
+ "symbol": "ZAR"
+ },
+ "SSP": {
+ "name": "å—è‹ä¸¹é•‘",
+ "symbol": "SSP"
+ },
+ "NIO": {
+ "name": "尼加拉瓜科多巴",
+ "symbol": "NIO"
+ },
+ "NPR": {
+ "name": "尼泊尔å¢æ¯”",
+ "symbol": "NPR"
+ },
+ "NGN": {
+ "name": "尼日利亚奈拉",
+ "symbol": "NGN"
+ },
+ "NOK": {
+ "name": "挪å¨å…‹æœ—",
+ "symbol": "NOK"
+ },
+ "EUR": {
+ "name": "欧元",
+ "symbol": "€"
+ },
+ "CNY": {
+ "name": "人民å¸",
+ "symbol": "CNÂ¥"
+ },
+ "JPY": {
+ "name": "日元",
+ "symbol": "JPÂ¥"
+ },
+ "SEK": {
+ "name": "瑞典克朗",
+ "symbol": "SEK"
+ },
+ "CHF": {
+ "name": "瑞士法郎",
+ "symbol": "CHF"
+ },
+ "SVC": {
+ "name": "è¨å°”瓦多科朗",
+ "symbol": "SVC"
+ },
+ "WST": {
+ "name": "è¨æ‘©äºšå¡”拉",
+ "symbol": "WST"
+ },
+ "RSD": {
+ "name": "塞尔维亚第纳尔",
+ "symbol": "RSD"
+ },
+ "SLL": {
+ "name": "塞拉利昂利昂",
+ "symbol": "SLL"
+ },
+ "SCR": {
+ "name": "塞舌尔å¢æ¯”",
+ "symbol": "SCR"
+ },
+ "SAR": {
+ "name": "沙特里亚尔",
+ "symbol": "SAR"
+ },
+ "STD": {
+ "name": "圣多美和普林西比多布拉",
+ "symbol": "STD"
+ },
+ "SHP": {
+ "name": "圣赫勒拿群岛磅",
+ "symbol": "SHP"
+ },
+ "LKR": {
+ "name": "斯里兰å¡å¢æ¯”",
+ "symbol": "LKR"
+ },
+ "SZL": {
+ "name": "æ–¯å¨å£«å…°é‡Œå…°å‰å°¼",
+ "symbol": "SZL"
+ },
+ "SDG": {
+ "name": "è‹ä¸¹é•‘",
+ "symbol": "SDG"
+ },
+ "SRD": {
+ "name": "è‹é‡Œå—å…ƒ",
+ "symbol": "SRD"
+ },
+ "SBD": {
+ "name": "所罗门群岛元",
+ "symbol": "SBD"
+ },
+ "SOS": {
+ "name": "索马里先令",
+ "symbol": "SOS"
+ },
+ "TJS": {
+ "name": "å¡”å‰å…‹æ–¯å¦ç´¢èŽ«å°¼",
+ "symbol": "TJS"
+ },
+ "XPF": {
+ "name": "太平洋法郎",
+ "symbol": "CFPF"
+ },
+ "THB": {
+ "name": "æ³°é“¢",
+ "symbol": "฿"
+ },
+ "TZS": {
+ "name": "å¦æ¡‘尼亚先令",
+ "symbol": "TZS"
+ },
+ "TOP": {
+ "name": "汤加潘加",
+ "symbol": "TOP"
+ },
+ "TTD": {
+ "name": "特立尼达和多巴哥元",
+ "symbol": "TTD"
+ },
+ "TND": {
+ "name": "çªå°¼æ–¯ç¬¬çº³å°”",
+ "symbol": "TND"
+ },
+ "TRY": {
+ "name": "土耳其里拉",
+ "symbol": "TRY"
+ },
+ "TMT": {
+ "name": "土库曼斯å¦é©¬çº³ç‰¹",
+ "symbol": "TMT"
+ },
+ "VUV": {
+ "name": "瓦努阿图瓦图",
+ "symbol": "VUV"
+ },
+ "GTQ": {
+ "name": "å±åœ°é©¬æ‹‰æ ¼æŸ¥å°”",
+ "symbol": "GTQ"
+ },
+ "VEF": {
+ "name": "委内瑞拉玻利瓦尔",
+ "symbol": "VEF"
+ },
+ "BND": {
+ "name": "文莱元",
+ "symbol": "BND"
+ },
+ "UGX": {
+ "name": "乌干达先令",
+ "symbol": "UGX"
+ },
+ "UAH": {
+ "name": "乌克兰格里夫纳",
+ "symbol": "UAH"
+ },
+ "UYU": {
+ "name": "乌拉圭比索",
+ "symbol": "UYU"
+ },
+ "UZS": {
+ "name": "乌兹别克斯å¦è‹å§†",
+ "symbol": "UZS"
+ },
+ "SGD": {
+ "name": "新加å¡å…ƒ",
+ "symbol": "$"
+ },
+ "TWD": {
+ "name": "æ–°å°å¸",
+ "symbol": "NT$"
+ },
+ "NZD": {
+ "name": "新西兰元",
+ "symbol": "NZ$"
+ },
+ "HUF": {
+ "name": "匈牙利ç¦æž—",
+ "symbol": "HUF"
+ },
+ "SYP": {
+ "name": "å™åˆ©äºšé•‘",
+ "symbol": "SYP"
+ },
+ "JMD": {
+ "name": "牙买加元",
+ "symbol": "JMD"
+ },
+ "AMD": {
+ "name": "亚美尼亚德拉姆",
+ "symbol": "AMD"
+ },
+ "YER": {
+ "name": "也门里亚尔",
+ "symbol": "YER"
+ },
+ "IQD": {
+ "name": "伊拉克第纳尔",
+ "symbol": "IQD"
+ },
+ "IRR": {
+ "name": "伊朗里亚尔",
+ "symbol": "IRR"
+ },
+ "ILS": {
+ "name": "以色列新谢克尔",
+ "symbol": "₪"
+ },
+ "INR": {
+ "name": "å°åº¦å¢æ¯”",
+ "symbol": "₹"
+ },
+ "IDR": {
+ "name": "å°åº¦å°¼è¥¿äºšç›¾",
+ "symbol": "IDR"
+ },
+ "GBP": {
+ "name": "英镑",
+ "symbol": "£"
+ },
+ "JOD": {
+ "name": "约旦第纳尔",
+ "symbol": "JOD"
+ },
+ "VND": {
+ "name": "越å—盾",
+ "symbol": "â‚«"
+ },
+ "ZMW": {
+ "name": "赞比亚克瓦查",
+ "symbol": "ZMW"
+ },
+ "GIP": {
+ "name": "直布罗陀镑",
+ "symbol": "GIP"
+ },
+ "CLP": {
+ "name": "智利比索",
+ "symbol": "CLP"
+ },
+ "XAF": {
+ "name": "中éžé‡‘èžåˆä½œæ³•éƒŽ",
+ "symbol": "FCFA"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/currency/zh-Hant-HK.json b/library/intl/resources/currency/zh-Hant-HK.json
new file mode 100644
index 000000000..26ee4ec91
--- /dev/null
+++ b/library/intl/resources/currency/zh-Hant-HK.json
@@ -0,0 +1,634 @@
+{
+ "CNY": {
+ "name": "人民幣",
+ "symbol": "CNÂ¥"
+ },
+ "YER": {
+ "name": "也門里雅",
+ "symbol": "YER"
+ },
+ "TTD": {
+ "name": "åƒé‡Œé”åŠæ‰˜å·´å“¥å…ƒ",
+ "symbol": "TTD"
+ },
+ "TMT": {
+ "name": "土庫曼馬ç´ç‰¹",
+ "symbol": "TMT"
+ },
+ "BTN": {
+ "name": "ä¸ä¸¹é‚£ç‰¹å€«",
+ "symbol": "BTN"
+ },
+ "XAF": {
+ "name": "中éžæ³•éƒŽ",
+ "symbol": "FCFA"
+ },
+ "DKK": {
+ "name": "丹麥克朗",
+ "symbol": "DKK"
+ },
+ "ERN": {
+ "name": "厄立特里亞ç´å…‹æ³•",
+ "symbol": "ERN"
+ },
+ "XPF": {
+ "name": "太平洋法郎",
+ "symbol": "CFPF"
+ },
+ "BBD": {
+ "name": "巴巴多斯元",
+ "symbol": "BBD"
+ },
+ "PGK": {
+ "name": "巴布亞新畿內亞基那",
+ "symbol": "PGK"
+ },
+ "BRL": {
+ "name": "巴西里拉",
+ "symbol": "R$"
+ },
+ "PYG": {
+ "name": "巴拉圭瓜拉尼",
+ "symbol": "PYG"
+ },
+ "BHD": {
+ "name": "巴林第ç´çˆ¾",
+ "symbol": "BHD"
+ },
+ "BSD": {
+ "name": "巴哈馬元",
+ "symbol": "BSD"
+ },
+ "PAB": {
+ "name": "巴拿馬巴波亞",
+ "symbol": "PAB"
+ },
+ "PKR": {
+ "name": "巴基斯å¦ç›§æ¯”",
+ "symbol": "PKR"
+ },
+ "JPY": {
+ "name": "日圓",
+ "symbol": "Â¥"
+ },
+ "MUR": {
+ "name": "毛里求斯盧布",
+ "symbol": "MUR"
+ },
+ "MRO": {
+ "name": "毛里塔尼亞çƒå‰äºž",
+ "symbol": "MRO"
+ },
+ "JMD": {
+ "name": "牙買加元",
+ "symbol": "JMD"
+ },
+ "ILS": {
+ "name": "以色列新è¬å…‹çˆ¾",
+ "symbol": "₪"
+ },
+ "CAD": {
+ "name": "加元",
+ "symbol": "CA$"
+ },
+ "GHS": {
+ "name": "加ç´å¡žåœ°",
+ "symbol": "GHS"
+ },
+ "KPW": {
+ "name": "北韓圓",
+ "symbol": "KPW"
+ },
+ "KZT": {
+ "name": "å¡æ‰Žå…‹æ–¯å¦å¦å‰",
+ "symbol": "KZT"
+ },
+ "QAR": {
+ "name": "å¡å¡”爾里亞爾",
+ "symbol": "QAR"
+ },
+ "CUC": {
+ "name": "å¤å·´å¯è½‰æ›æŠ«ç´¢",
+ "symbol": "CUC"
+ },
+ "CUP": {
+ "name": "å¤å·´æŠ«ç´¢",
+ "symbol": "CUP"
+ },
+ "SZL": {
+ "name": "å²ç“¦æ¿Ÿè˜­é‡Œæœ—å‰å°¼",
+ "symbol": "SZL"
+ },
+ "NGN": {
+ "name": "尼日利亞奈拉",
+ "symbol": "NGN"
+ },
+ "NIO": {
+ "name": "尼加拉瓜金科多巴",
+ "symbol": "NIO"
+ },
+ "NPR": {
+ "name": "尼泊爾盧比",
+ "symbol": "NPR"
+ },
+ "BIF": {
+ "name": "布隆迪法郎",
+ "symbol": "BIF"
+ },
+ "VUV": {
+ "name": "瓦努阿圖瓦圖",
+ "symbol": "VUV"
+ },
+ "BYR": {
+ "name": "白俄羅斯盧布",
+ "symbol": "BYR"
+ },
+ "LTL": {
+ "name": "立陶宛立特",
+ "symbol": "LTL"
+ },
+ "IQD": {
+ "name": "伊拉克第ç´çˆ¾",
+ "symbol": "IQD"
+ },
+ "IRR": {
+ "name": "伊朗里亞爾",
+ "symbol": "IRR"
+ },
+ "ISK": {
+ "name": "冰島克朗",
+ "symbol": "ISK"
+ },
+ "HUF": {
+ "name": "匈牙利ç¦æž—",
+ "symbol": "HUF"
+ },
+ "IDR": {
+ "name": "å°å°¼ç›¾",
+ "symbol": "IDR"
+ },
+ "INR": {
+ "name": "å°åº¦ç›§æ¯”",
+ "symbol": "₹"
+ },
+ "GTQ": {
+ "name": "å±åœ°é¦¬æ‹‰æ ¼æŸ¥çˆ¾",
+ "symbol": "GTQ"
+ },
+ "DJF": {
+ "name": "å‰å¸ƒåœ°æ³•éƒŽ",
+ "symbol": "DJF"
+ },
+ "KGS": {
+ "name": "å‰çˆ¾å‰æ–¯ç´¢å§†",
+ "symbol": "KGS"
+ },
+ "GYD": {
+ "name": "圭亞那元",
+ "symbol": "GYD"
+ },
+ "DOP": {
+ "name": "多明尼加披索",
+ "symbol": "DOP"
+ },
+ "XOF": {
+ "name": "多哥éžæ´²å…±åŒé«”法郎",
+ "symbol": "CFA"
+ },
+ "AOA": {
+ "name": "安哥拉寬扎",
+ "symbol": "AOA"
+ },
+ "BMD": {
+ "name": "百慕é”å¹£",
+ "symbol": "BMD"
+ },
+ "WST": {
+ "name": "西薩摩亞塔拉",
+ "symbol": "WST"
+ },
+ "BZD": {
+ "name": "伯利茲元",
+ "symbol": "BZD"
+ },
+ "CVE": {
+ "name": "佛得角埃斯庫多",
+ "symbol": "CVE"
+ },
+ "HRK": {
+ "name": "克羅地亞庫ç´",
+ "symbol": "HRK"
+ },
+ "LRD": {
+ "name": "利比利亞元",
+ "symbol": "LRD"
+ },
+ "LYD": {
+ "name": "利比亞第ç´çˆ¾",
+ "symbol": "LYD"
+ },
+ "BND": {
+ "name": "汶èŠå…ƒ",
+ "symbol": "BND"
+ },
+ "SAR": {
+ "name": "沙特阿拉伯里亞爾",
+ "symbol": "SAR"
+ },
+ "ZWL": {
+ "name": "辛巴å¨å…ƒ (2009)",
+ "symbol": "ZWL"
+ },
+ "AMD": {
+ "name": "亞美尼亞德拉姆",
+ "symbol": "AMD"
+ },
+ "AZN": {
+ "name": "亞塞拜疆馬ç´ç‰¹",
+ "symbol": "AZN"
+ },
+ "TZS": {
+ "name": "å¦å°šå°¼äºžå…ˆä»¤",
+ "symbol": "TZS"
+ },
+ "VEF": {
+ "name": "委內瑞拉玻利瓦",
+ "symbol": "VEF"
+ },
+ "BDT": {
+ "name": "孟加拉塔å¡",
+ "symbol": "BDT"
+ },
+ "ZMW": {
+ "name": "尚比亞克瓦查",
+ "symbol": "ZMW"
+ },
+ "GMD": {
+ "name": "岡比亞é”拉西",
+ "symbol": "GMD"
+ },
+ "SBD": {
+ "name": "所羅門群島元",
+ "symbol": "SBD"
+ },
+ "XCD": {
+ "name": "æ±åŠ å‹’比元",
+ "symbol": "EC$"
+ },
+ "TOP": {
+ "name": "æ±åŠ æ½˜åŠ ",
+ "symbol": "TOP"
+ },
+ "BAM": {
+ "name": "波士尼亞與赫塞哥維ç´å¯è½‰æ›é¦¬å…‹",
+ "symbol": "BAM"
+ },
+ "PLN": {
+ "name": "波蘭茲羅æ",
+ "symbol": "PLN"
+ },
+ "GIP": {
+ "name": "直布羅陀鎊",
+ "symbol": "GIP"
+ },
+ "KES": {
+ "name": "肯尼亞先令",
+ "symbol": "KES"
+ },
+ "AED": {
+ "name": "阿拉伯è¯åˆé…‹é•·åœ‹è¿ªçˆ¾æ±—",
+ "symbol": "AED"
+ },
+ "ARS": {
+ "name": "阿根廷披索",
+ "symbol": "ARS"
+ },
+ "OMR": {
+ "name": "阿曼里奧",
+ "symbol": "OMR"
+ },
+ "AFN": {
+ "name": "阿富汗尼",
+ "symbol": "AFN"
+ },
+ "DZD": {
+ "name": "阿爾åŠåˆ©äºžç¬¬ç´çˆ¾",
+ "symbol": "DZD"
+ },
+ "ALL": {
+ "name": "阿爾巴尼亞列克",
+ "symbol": "ALL"
+ },
+ "AWG": {
+ "name": "阿魯巴盾",
+ "symbol": "AWG"
+ },
+ "RUB": {
+ "name": "俄羅斯盧布",
+ "symbol": "RUB"
+ },
+ "BGN": {
+ "name": "ä¿åŠ åˆ©äºžæ–°åˆ—å¼—",
+ "symbol": "BGN"
+ },
+ "ZAR": {
+ "name": "å—éžè˜­ç‰¹",
+ "symbol": "ZAR"
+ },
+ "SSP": {
+ "name": "å—蘇丹鎊",
+ "symbol": "SSP"
+ },
+ "KHR": {
+ "name": "柬埔寨瑞爾",
+ "symbol": "KHR"
+ },
+ "HNL": {
+ "name": "洪都拉斯倫皮拉",
+ "symbol": "HNL"
+ },
+ "BOB": {
+ "name": "玻利維亞諾",
+ "symbol": "BOB"
+ },
+ "KWD": {
+ "name": "科å¨ç‰¹ç¬¬ç´çˆ¾",
+ "symbol": "KWD"
+ },
+ "KMF": {
+ "name": "科摩羅法郎",
+ "symbol": "KMF"
+ },
+ "TND": {
+ "name": "çªå°¼è¥¿äºžç¬¬ç´çˆ¾",
+ "symbol": "TND"
+ },
+ "JOD": {
+ "name": "約旦第ç´çˆ¾",
+ "symbol": "JOD"
+ },
+ "USD": {
+ "name": "美元",
+ "symbol": "US$"
+ },
+ "GBP": {
+ "name": "英鎊",
+ "symbol": "£"
+ },
+ "CDF": {
+ "name": "剛果法郎",
+ "symbol": "CDF"
+ },
+ "COP": {
+ "name": "哥倫比亞披索",
+ "symbol": "COP"
+ },
+ "CRC": {
+ "name": "哥斯é”黎加科郎",
+ "symbol": "CRC"
+ },
+ "EGP": {
+ "name": "埃åŠéŽŠ",
+ "symbol": "EGP"
+ },
+ "ETB": {
+ "name": "埃塞俄比亞比爾",
+ "symbol": "ETB"
+ },
+ "NOK": {
+ "name": "挪å¨å…‹æœ—",
+ "symbol": "NOK"
+ },
+ "GEL": {
+ "name": "格魯å‰äºžæ‹‰é‡Œ",
+ "symbol": "GEL"
+ },
+ "THB": {
+ "name": "泰銖",
+ "symbol": "฿"
+ },
+ "HTG": {
+ "name": "海地å¤å¾·",
+ "symbol": "HTG"
+ },
+ "UGX": {
+ "name": "çƒå¹²é”先令",
+ "symbol": "UGX"
+ },
+ "UAH": {
+ "name": "çƒå…‹è˜­æ ¼é‡Œå¤«ç´",
+ "symbol": "UAH"
+ },
+ "UYU": {
+ "name": "çƒæ‹‰åœ­æŠ«ç´¢",
+ "symbol": "UYU"
+ },
+ "UZS": {
+ "name": "çƒèŒ²åˆ¥å…‹ç´¢å§†",
+ "symbol": "UZS"
+ },
+ "PEN": {
+ "name": "秘魯新太陽幣",
+ "symbol": "PEN"
+ },
+ "NAD": {
+ "name": "ç´ç±³æ¯”亞元",
+ "symbol": "NAD"
+ },
+ "NZD": {
+ "name": "ç´è¥¿è˜­å…ƒ",
+ "symbol": "NZ$"
+ },
+ "SOS": {
+ "name": "索馬利亞先令",
+ "symbol": "SOS"
+ },
+ "MYR": {
+ "name": "馬來西亞令å‰",
+ "symbol": "MYR"
+ },
+ "MKD": {
+ "name": "馬其頓第ç´çˆ¾",
+ "symbol": "MKD"
+ },
+ "MWK": {
+ "name": "馬拉維克瓦查",
+ "symbol": "MWK"
+ },
+ "MGA": {
+ "name": "馬é”加斯加艾瑞爾",
+ "symbol": "MGA"
+ },
+ "MVR": {
+ "name": "馬爾代夫盧éžäºž",
+ "symbol": "MVR"
+ },
+ "CZK": {
+ "name": "æ·å…‹å…‹æœ—",
+ "symbol": "CZK"
+ },
+ "SYP": {
+ "name": "敘利亞鎊",
+ "symbol": "SYP"
+ },
+ "ANG": {
+ "name": "è·å±¬å®‰åœ°åˆ—斯盾",
+ "symbol": "ANG"
+ },
+ "MZN": {
+ "name": "莫桑比克美æå¡",
+ "symbol": "MZN"
+ },
+ "BWP": {
+ "name": "åšèŒ¨ç“¦ç´æ™®æ‹‰",
+ "symbol": "BWP"
+ },
+ "GNF": {
+ "name": "幾內亞法郎",
+ "symbol": "GNF"
+ },
+ "FJD": {
+ "name": "æ–æ¿Ÿå…ƒ",
+ "symbol": "FJD"
+ },
+ "LKR": {
+ "name": "斯里蘭å¡ç›§æ¯”",
+ "symbol": "LKR"
+ },
+ "CLP": {
+ "name": "智利披索",
+ "symbol": "CLP"
+ },
+ "HKD": {
+ "name": "港元",
+ "symbol": "HK$"
+ },
+ "PHP": {
+ "name": "è²å¾‹è³“披索",
+ "symbol": "PHP"
+ },
+ "VND": {
+ "name": "越å—盾",
+ "symbol": "â‚«"
+ },
+ "KYD": {
+ "name": "開曼群島元",
+ "symbol": "KYD"
+ },
+ "TJS": {
+ "name": "å¡”å‰å…‹ç´¢èŽ«å°¼",
+ "symbol": "TJS"
+ },
+ "SLL": {
+ "name": "塞拉利昂利昂",
+ "symbol": "SLL"
+ },
+ "SCR": {
+ "name": "塞席爾盧比",
+ "symbol": "SCR"
+ },
+ "RSD": {
+ "name": "塞爾維亞第ç´çˆ¾",
+ "symbol": "RSD"
+ },
+ "TRY": {
+ "name": "新土耳其里拉",
+ "symbol": "TRY"
+ },
+ "SGD": {
+ "name": "新加å¡å…ƒ",
+ "symbol": "SGD"
+ },
+ "TWD": {
+ "name": "æ–°å°å¹£",
+ "symbol": "NT$"
+ },
+ "CHF": {
+ "name": "瑞士法郎",
+ "symbol": "CHF"
+ },
+ "SEK": {
+ "name": "瑞典克朗",
+ "symbol": "SEK"
+ },
+ "STD": {
+ "name": "è–多美和普林西比多布拉",
+ "symbol": "STD"
+ },
+ "SHP": {
+ "name": "è–赫勒拿鎊",
+ "symbol": "SHP"
+ },
+ "FKP": {
+ "name": "ç¦å…‹è˜­ç¾¤å³¶éŽŠ",
+ "symbol": "FKP"
+ },
+ "MNT": {
+ "name": "è’™å¤åœ–格里克",
+ "symbol": "MNT"
+ },
+ "LAK": {
+ "name": "寮國基普",
+ "symbol": "LAK"
+ },
+ "MDL": {
+ "name": "æ‘©æœé›²åˆ—伊",
+ "symbol": "MDL"
+ },
+ "MAD": {
+ "name": "摩洛哥迪拉姆",
+ "symbol": "MAD"
+ },
+ "EUR": {
+ "name": "æ­å…ƒ",
+ "symbol": "€"
+ },
+ "MMK": {
+ "name": "緬甸元",
+ "symbol": "MMK"
+ },
+ "LBP": {
+ "name": "黎巴嫩鎊",
+ "symbol": "LBP"
+ },
+ "MXN": {
+ "name": "墨西哥披索",
+ "symbol": "MX$"
+ },
+ "AUD": {
+ "name": "澳元",
+ "symbol": "AU$"
+ },
+ "MOP": {
+ "name": "澳門元",
+ "symbol": "MOP"
+ },
+ "RWF": {
+ "name": "盧旺é”法郎",
+ "symbol": "RWF"
+ },
+ "LSL": {
+ "name": "賴索托洛蒂",
+ "symbol": "LSL"
+ },
+ "KRW": {
+ "name": "韓圓",
+ "symbol": "â‚©"
+ },
+ "SVC": {
+ "name": "薩爾瓦多科郎",
+ "symbol": "SVC"
+ },
+ "RON": {
+ "name": "羅馬尼亞列伊",
+ "symbol": "RON"
+ },
+ "SDG": {
+ "name": "蘇丹鎊",
+ "symbol": "SDG"
+ },
+ "SRD": {
+ "name": "蘇利å—å…ƒ",
+ "symbol": "SRD"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/currency/zh-Hant-MO.json b/library/intl/resources/currency/zh-Hant-MO.json
new file mode 100644
index 000000000..f8bf02f41
--- /dev/null
+++ b/library/intl/resources/currency/zh-Hant-MO.json
@@ -0,0 +1,634 @@
+{
+ "CNY": {
+ "name": "人民幣",
+ "symbol": "CNÂ¥"
+ },
+ "YER": {
+ "name": "也門里雅",
+ "symbol": "YER"
+ },
+ "TTD": {
+ "name": "åƒé‡Œé”åŠæ‰˜å·´å“¥å…ƒ",
+ "symbol": "TTD"
+ },
+ "TMT": {
+ "name": "土庫曼馬ç´ç‰¹",
+ "symbol": "TMT"
+ },
+ "BTN": {
+ "name": "ä¸ä¸¹é‚£ç‰¹å€«",
+ "symbol": "BTN"
+ },
+ "XAF": {
+ "name": "中éžæ³•éƒŽ",
+ "symbol": "FCFA"
+ },
+ "DKK": {
+ "name": "丹麥克朗",
+ "symbol": "DKK"
+ },
+ "ERN": {
+ "name": "厄立特里亞ç´å…‹æ³•",
+ "symbol": "ERN"
+ },
+ "XPF": {
+ "name": "太平洋法郎",
+ "symbol": "CFPF"
+ },
+ "BBD": {
+ "name": "巴巴多斯元",
+ "symbol": "BBD"
+ },
+ "PGK": {
+ "name": "巴布亞新畿內亞基那",
+ "symbol": "PGK"
+ },
+ "BRL": {
+ "name": "巴西里拉",
+ "symbol": "R$"
+ },
+ "PYG": {
+ "name": "巴拉圭瓜拉尼",
+ "symbol": "PYG"
+ },
+ "BHD": {
+ "name": "巴林第ç´çˆ¾",
+ "symbol": "BHD"
+ },
+ "BSD": {
+ "name": "巴哈馬元",
+ "symbol": "BSD"
+ },
+ "PAB": {
+ "name": "巴拿馬巴波亞",
+ "symbol": "PAB"
+ },
+ "PKR": {
+ "name": "巴基斯å¦ç›§æ¯”",
+ "symbol": "PKR"
+ },
+ "JPY": {
+ "name": "日圓",
+ "symbol": "Â¥"
+ },
+ "MUR": {
+ "name": "毛里求斯盧布",
+ "symbol": "MUR"
+ },
+ "MRO": {
+ "name": "毛里塔尼亞çƒå‰äºž",
+ "symbol": "MRO"
+ },
+ "JMD": {
+ "name": "牙買加元",
+ "symbol": "JMD"
+ },
+ "ILS": {
+ "name": "以色列新è¬å…‹çˆ¾",
+ "symbol": "₪"
+ },
+ "CAD": {
+ "name": "加元",
+ "symbol": "CA$"
+ },
+ "GHS": {
+ "name": "加ç´å¡žåœ°",
+ "symbol": "GHS"
+ },
+ "KPW": {
+ "name": "北韓圓",
+ "symbol": "KPW"
+ },
+ "KZT": {
+ "name": "å¡æ‰Žå…‹æ–¯å¦å¦å‰",
+ "symbol": "KZT"
+ },
+ "QAR": {
+ "name": "å¡å¡”爾里亞爾",
+ "symbol": "QAR"
+ },
+ "CUC": {
+ "name": "å¤å·´å¯è½‰æ›æŠ«ç´¢",
+ "symbol": "CUC"
+ },
+ "CUP": {
+ "name": "å¤å·´æŠ«ç´¢",
+ "symbol": "CUP"
+ },
+ "SZL": {
+ "name": "å²ç“¦æ¿Ÿè˜­é‡Œæœ—å‰å°¼",
+ "symbol": "SZL"
+ },
+ "NGN": {
+ "name": "尼日利亞奈拉",
+ "symbol": "NGN"
+ },
+ "NIO": {
+ "name": "尼加拉瓜金科多巴",
+ "symbol": "NIO"
+ },
+ "NPR": {
+ "name": "尼泊爾盧比",
+ "symbol": "NPR"
+ },
+ "BIF": {
+ "name": "布隆迪法郎",
+ "symbol": "BIF"
+ },
+ "VUV": {
+ "name": "瓦努阿圖瓦圖",
+ "symbol": "VUV"
+ },
+ "BYR": {
+ "name": "白俄羅斯盧布",
+ "symbol": "BYR"
+ },
+ "LTL": {
+ "name": "立陶宛立特",
+ "symbol": "LTL"
+ },
+ "IQD": {
+ "name": "伊拉克第ç´çˆ¾",
+ "symbol": "IQD"
+ },
+ "IRR": {
+ "name": "伊朗里亞爾",
+ "symbol": "IRR"
+ },
+ "ISK": {
+ "name": "冰島克朗",
+ "symbol": "ISK"
+ },
+ "HUF": {
+ "name": "匈牙利ç¦æž—",
+ "symbol": "HUF"
+ },
+ "IDR": {
+ "name": "å°å°¼ç›¾",
+ "symbol": "IDR"
+ },
+ "INR": {
+ "name": "å°åº¦ç›§æ¯”",
+ "symbol": "₹"
+ },
+ "GTQ": {
+ "name": "å±åœ°é¦¬æ‹‰æ ¼æŸ¥çˆ¾",
+ "symbol": "GTQ"
+ },
+ "DJF": {
+ "name": "å‰å¸ƒåœ°æ³•éƒŽ",
+ "symbol": "DJF"
+ },
+ "KGS": {
+ "name": "å‰çˆ¾å‰æ–¯ç´¢å§†",
+ "symbol": "KGS"
+ },
+ "GYD": {
+ "name": "圭亞那元",
+ "symbol": "GYD"
+ },
+ "DOP": {
+ "name": "多明尼加披索",
+ "symbol": "DOP"
+ },
+ "XOF": {
+ "name": "多哥éžæ´²å…±åŒé«”法郎",
+ "symbol": "CFA"
+ },
+ "AOA": {
+ "name": "安哥拉寬扎",
+ "symbol": "AOA"
+ },
+ "BMD": {
+ "name": "百慕é”å¹£",
+ "symbol": "BMD"
+ },
+ "WST": {
+ "name": "西薩摩亞塔拉",
+ "symbol": "WST"
+ },
+ "BZD": {
+ "name": "伯利茲元",
+ "symbol": "BZD"
+ },
+ "CVE": {
+ "name": "佛得角埃斯庫多",
+ "symbol": "CVE"
+ },
+ "HRK": {
+ "name": "克羅地亞庫ç´",
+ "symbol": "HRK"
+ },
+ "LRD": {
+ "name": "利比利亞元",
+ "symbol": "LRD"
+ },
+ "LYD": {
+ "name": "利比亞第ç´çˆ¾",
+ "symbol": "LYD"
+ },
+ "BND": {
+ "name": "汶èŠå…ƒ",
+ "symbol": "BND"
+ },
+ "SAR": {
+ "name": "沙特阿拉伯里亞爾",
+ "symbol": "SAR"
+ },
+ "ZWL": {
+ "name": "辛巴å¨å…ƒ (2009)",
+ "symbol": "ZWL"
+ },
+ "AMD": {
+ "name": "亞美尼亞德拉姆",
+ "symbol": "AMD"
+ },
+ "AZN": {
+ "name": "亞塞拜疆馬ç´ç‰¹",
+ "symbol": "AZN"
+ },
+ "TZS": {
+ "name": "å¦å°šå°¼äºžå…ˆä»¤",
+ "symbol": "TZS"
+ },
+ "VEF": {
+ "name": "委內瑞拉玻利瓦",
+ "symbol": "VEF"
+ },
+ "BDT": {
+ "name": "孟加拉塔å¡",
+ "symbol": "BDT"
+ },
+ "ZMW": {
+ "name": "尚比亞克瓦查",
+ "symbol": "ZMW"
+ },
+ "GMD": {
+ "name": "岡比亞é”拉西",
+ "symbol": "GMD"
+ },
+ "SBD": {
+ "name": "所羅門群島元",
+ "symbol": "SBD"
+ },
+ "XCD": {
+ "name": "æ±åŠ å‹’比元",
+ "symbol": "EC$"
+ },
+ "TOP": {
+ "name": "æ±åŠ æ½˜åŠ ",
+ "symbol": "TOP"
+ },
+ "BAM": {
+ "name": "波士尼亞與赫塞哥維ç´å¯è½‰æ›é¦¬å…‹",
+ "symbol": "BAM"
+ },
+ "PLN": {
+ "name": "波蘭茲羅æ",
+ "symbol": "PLN"
+ },
+ "GIP": {
+ "name": "直布羅陀鎊",
+ "symbol": "GIP"
+ },
+ "KES": {
+ "name": "肯尼亞先令",
+ "symbol": "KES"
+ },
+ "AED": {
+ "name": "阿拉伯è¯åˆé…‹é•·åœ‹è¿ªçˆ¾æ±—",
+ "symbol": "AED"
+ },
+ "ARS": {
+ "name": "阿根廷披索",
+ "symbol": "ARS"
+ },
+ "OMR": {
+ "name": "阿曼里奧",
+ "symbol": "OMR"
+ },
+ "AFN": {
+ "name": "阿富汗尼",
+ "symbol": "AFN"
+ },
+ "DZD": {
+ "name": "阿爾åŠåˆ©äºžç¬¬ç´çˆ¾",
+ "symbol": "DZD"
+ },
+ "ALL": {
+ "name": "阿爾巴尼亞列克",
+ "symbol": "ALL"
+ },
+ "AWG": {
+ "name": "阿魯巴盾",
+ "symbol": "AWG"
+ },
+ "RUB": {
+ "name": "俄羅斯盧布",
+ "symbol": "RUB"
+ },
+ "BGN": {
+ "name": "ä¿åŠ åˆ©äºžæ–°åˆ—å¼—",
+ "symbol": "BGN"
+ },
+ "ZAR": {
+ "name": "å—éžè˜­ç‰¹",
+ "symbol": "ZAR"
+ },
+ "SSP": {
+ "name": "å—蘇丹鎊",
+ "symbol": "SSP"
+ },
+ "KHR": {
+ "name": "柬埔寨瑞爾",
+ "symbol": "KHR"
+ },
+ "HNL": {
+ "name": "洪都拉斯倫皮拉",
+ "symbol": "HNL"
+ },
+ "BOB": {
+ "name": "玻利維亞諾",
+ "symbol": "BOB"
+ },
+ "KWD": {
+ "name": "科å¨ç‰¹ç¬¬ç´çˆ¾",
+ "symbol": "KWD"
+ },
+ "KMF": {
+ "name": "科摩羅法郎",
+ "symbol": "KMF"
+ },
+ "TND": {
+ "name": "çªå°¼è¥¿äºžç¬¬ç´çˆ¾",
+ "symbol": "TND"
+ },
+ "JOD": {
+ "name": "約旦第ç´çˆ¾",
+ "symbol": "JOD"
+ },
+ "USD": {
+ "name": "美元",
+ "symbol": "US$"
+ },
+ "GBP": {
+ "name": "英鎊",
+ "symbol": "£"
+ },
+ "CDF": {
+ "name": "剛果法郎",
+ "symbol": "CDF"
+ },
+ "COP": {
+ "name": "哥倫比亞披索",
+ "symbol": "COP"
+ },
+ "CRC": {
+ "name": "哥斯é”黎加科郎",
+ "symbol": "CRC"
+ },
+ "EGP": {
+ "name": "埃åŠéŽŠ",
+ "symbol": "EGP"
+ },
+ "ETB": {
+ "name": "埃塞俄比亞比爾",
+ "symbol": "ETB"
+ },
+ "NOK": {
+ "name": "挪å¨å…‹æœ—",
+ "symbol": "NOK"
+ },
+ "GEL": {
+ "name": "格魯å‰äºžæ‹‰é‡Œ",
+ "symbol": "GEL"
+ },
+ "THB": {
+ "name": "泰銖",
+ "symbol": "฿"
+ },
+ "HTG": {
+ "name": "海地å¤å¾·",
+ "symbol": "HTG"
+ },
+ "UGX": {
+ "name": "çƒå¹²é”先令",
+ "symbol": "UGX"
+ },
+ "UAH": {
+ "name": "çƒå…‹è˜­æ ¼é‡Œå¤«ç´",
+ "symbol": "UAH"
+ },
+ "UYU": {
+ "name": "çƒæ‹‰åœ­æŠ«ç´¢",
+ "symbol": "UYU"
+ },
+ "UZS": {
+ "name": "çƒèŒ²åˆ¥å…‹ç´¢å§†",
+ "symbol": "UZS"
+ },
+ "PEN": {
+ "name": "秘魯新太陽幣",
+ "symbol": "PEN"
+ },
+ "NAD": {
+ "name": "ç´ç±³æ¯”亞元",
+ "symbol": "NAD"
+ },
+ "NZD": {
+ "name": "ç´è¥¿è˜­å…ƒ",
+ "symbol": "NZ$"
+ },
+ "SOS": {
+ "name": "索馬利亞先令",
+ "symbol": "SOS"
+ },
+ "MYR": {
+ "name": "馬來西亞令å‰",
+ "symbol": "MYR"
+ },
+ "MKD": {
+ "name": "馬其頓第ç´çˆ¾",
+ "symbol": "MKD"
+ },
+ "MWK": {
+ "name": "馬拉維克瓦查",
+ "symbol": "MWK"
+ },
+ "MGA": {
+ "name": "馬é”加斯加艾瑞爾",
+ "symbol": "MGA"
+ },
+ "MVR": {
+ "name": "馬爾代夫盧éžäºž",
+ "symbol": "MVR"
+ },
+ "CZK": {
+ "name": "æ·å…‹å…‹æœ—",
+ "symbol": "CZK"
+ },
+ "SYP": {
+ "name": "敘利亞鎊",
+ "symbol": "SYP"
+ },
+ "ANG": {
+ "name": "è·å±¬å®‰åœ°åˆ—斯盾",
+ "symbol": "ANG"
+ },
+ "MZN": {
+ "name": "莫桑比克美æå¡",
+ "symbol": "MZN"
+ },
+ "BWP": {
+ "name": "åšèŒ¨ç“¦ç´æ™®æ‹‰",
+ "symbol": "BWP"
+ },
+ "GNF": {
+ "name": "幾內亞法郎",
+ "symbol": "GNF"
+ },
+ "FJD": {
+ "name": "æ–æ¿Ÿå…ƒ",
+ "symbol": "FJD"
+ },
+ "LKR": {
+ "name": "斯里蘭å¡ç›§æ¯”",
+ "symbol": "LKR"
+ },
+ "CLP": {
+ "name": "智利披索",
+ "symbol": "CLP"
+ },
+ "HKD": {
+ "name": "港元",
+ "symbol": "HK$"
+ },
+ "PHP": {
+ "name": "è²å¾‹è³“披索",
+ "symbol": "PHP"
+ },
+ "VND": {
+ "name": "越å—盾",
+ "symbol": "â‚«"
+ },
+ "KYD": {
+ "name": "開曼群島元",
+ "symbol": "KYD"
+ },
+ "TJS": {
+ "name": "å¡”å‰å…‹ç´¢èŽ«å°¼",
+ "symbol": "TJS"
+ },
+ "SLL": {
+ "name": "塞拉利昂利昂",
+ "symbol": "SLL"
+ },
+ "SCR": {
+ "name": "塞席爾盧比",
+ "symbol": "SCR"
+ },
+ "RSD": {
+ "name": "塞爾維亞第ç´çˆ¾",
+ "symbol": "RSD"
+ },
+ "TRY": {
+ "name": "新土耳其里拉",
+ "symbol": "TRY"
+ },
+ "SGD": {
+ "name": "新加å¡å…ƒ",
+ "symbol": "SGD"
+ },
+ "TWD": {
+ "name": "æ–°å°å¹£",
+ "symbol": "NT$"
+ },
+ "CHF": {
+ "name": "瑞士法郎",
+ "symbol": "CHF"
+ },
+ "SEK": {
+ "name": "瑞典克朗",
+ "symbol": "SEK"
+ },
+ "STD": {
+ "name": "è–多美和普林西比多布拉",
+ "symbol": "STD"
+ },
+ "SHP": {
+ "name": "è–赫勒拿鎊",
+ "symbol": "SHP"
+ },
+ "FKP": {
+ "name": "ç¦å…‹è˜­ç¾¤å³¶éŽŠ",
+ "symbol": "FKP"
+ },
+ "MNT": {
+ "name": "è’™å¤åœ–格里克",
+ "symbol": "MNT"
+ },
+ "LAK": {
+ "name": "寮國基普",
+ "symbol": "LAK"
+ },
+ "MDL": {
+ "name": "æ‘©æœé›²åˆ—伊",
+ "symbol": "MDL"
+ },
+ "MAD": {
+ "name": "摩洛哥迪拉姆",
+ "symbol": "MAD"
+ },
+ "EUR": {
+ "name": "æ­å…ƒ",
+ "symbol": "€"
+ },
+ "MMK": {
+ "name": "緬甸元",
+ "symbol": "MMK"
+ },
+ "LBP": {
+ "name": "黎巴嫩鎊",
+ "symbol": "LBP"
+ },
+ "MXN": {
+ "name": "墨西哥披索",
+ "symbol": "MX$"
+ },
+ "AUD": {
+ "name": "澳元",
+ "symbol": "AU$"
+ },
+ "MOP": {
+ "name": "澳門元",
+ "symbol": "MOP$"
+ },
+ "RWF": {
+ "name": "盧旺é”法郎",
+ "symbol": "RWF"
+ },
+ "LSL": {
+ "name": "賴索托洛蒂",
+ "symbol": "LSL"
+ },
+ "KRW": {
+ "name": "韓圓",
+ "symbol": "â‚©"
+ },
+ "SVC": {
+ "name": "薩爾瓦多科郎",
+ "symbol": "SVC"
+ },
+ "RON": {
+ "name": "羅馬尼亞列伊",
+ "symbol": "RON"
+ },
+ "SDG": {
+ "name": "蘇丹鎊",
+ "symbol": "SDG"
+ },
+ "SRD": {
+ "name": "蘇利å—å…ƒ",
+ "symbol": "SRD"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/currency/zh-Hant.json b/library/intl/resources/currency/zh-Hant.json
new file mode 100644
index 000000000..7d5eb5cbc
--- /dev/null
+++ b/library/intl/resources/currency/zh-Hant.json
@@ -0,0 +1,634 @@
+{
+ "CNY": {
+ "name": "人民幣",
+ "symbol": "CNÂ¥"
+ },
+ "TTD": {
+ "name": "åƒé‡Œé”åŠæ‰˜å·´å“¥å…ƒ",
+ "symbol": "TTD"
+ },
+ "TMT": {
+ "name": "土庫曼馬ç´ç‰¹",
+ "symbol": "TMT"
+ },
+ "BTN": {
+ "name": "ä¸ä¸¹é‚£ç‰¹å€«",
+ "symbol": "BTN"
+ },
+ "DKK": {
+ "name": "丹麥克朗",
+ "symbol": "DKK"
+ },
+ "ERN": {
+ "name": "厄立特里亞ç´å…‹æ³•",
+ "symbol": "ERN"
+ },
+ "PGK": {
+ "name": "巴布亞ç´å¹¾å…§äºžåŸºé‚£",
+ "symbol": "PGK"
+ },
+ "BRL": {
+ "name": "巴西里拉",
+ "symbol": "R$"
+ },
+ "BBD": {
+ "name": "å·´è²å¤šå…ƒ",
+ "symbol": "BBD"
+ },
+ "PYG": {
+ "name": "巴拉圭瓜拉尼",
+ "symbol": "PYG"
+ },
+ "BHD": {
+ "name": "巴林第ç´çˆ¾",
+ "symbol": "BHD"
+ },
+ "BSD": {
+ "name": "巴哈馬元",
+ "symbol": "BSD"
+ },
+ "PAB": {
+ "name": "巴拿馬巴波亞",
+ "symbol": "PAB"
+ },
+ "PKR": {
+ "name": "巴基斯å¦ç›§æ¯”",
+ "symbol": "PKR"
+ },
+ "JPY": {
+ "name": "日圓",
+ "symbol": "Â¥"
+ },
+ "JMD": {
+ "name": "牙買加元",
+ "symbol": "JMD"
+ },
+ "ILS": {
+ "name": "以色列新è¬å…‹çˆ¾",
+ "symbol": "₪"
+ },
+ "CAD": {
+ "name": "加幣",
+ "symbol": "CA$"
+ },
+ "KPW": {
+ "name": "北韓圓",
+ "symbol": "KPW"
+ },
+ "KZT": {
+ "name": "å¡æ‰Žå…‹æ–¯å¦å¦å‰",
+ "symbol": "KZT"
+ },
+ "QAR": {
+ "name": "å¡é”爾里亞爾",
+ "symbol": "QAR"
+ },
+ "CUC": {
+ "name": "å¤å·´å¯è½‰æ›æŠ«ç´¢",
+ "symbol": "CUC"
+ },
+ "CUP": {
+ "name": "å¤å·´æŠ«ç´¢",
+ "symbol": "CUP"
+ },
+ "SZL": {
+ "name": "å²ç“¦æ¿Ÿè˜­é‡Œæœ—å‰å°¼",
+ "symbol": "SZL"
+ },
+ "NIO": {
+ "name": "尼加拉瓜金科多巴",
+ "symbol": "NIO"
+ },
+ "NPR": {
+ "name": "尼泊爾盧比",
+ "symbol": "NPR"
+ },
+ "GTQ": {
+ "name": "瓜地馬拉格查爾",
+ "symbol": "GTQ"
+ },
+ "GMD": {
+ "name": "甘比亞é”拉西",
+ "symbol": "GMD"
+ },
+ "BYR": {
+ "name": "白俄羅斯盧布",
+ "symbol": "BYR"
+ },
+ "LTL": {
+ "name": "立陶宛立特",
+ "symbol": "LTL"
+ },
+ "IQD": {
+ "name": "伊拉克第ç´çˆ¾",
+ "symbol": "IQD"
+ },
+ "IRR": {
+ "name": "伊朗里亞爾",
+ "symbol": "IRR"
+ },
+ "ISK": {
+ "name": "冰島克朗",
+ "symbol": "ISK"
+ },
+ "HUF": {
+ "name": "匈牙利ç¦æž—",
+ "symbol": "HUF"
+ },
+ "IDR": {
+ "name": "å°å°¼ç›¾",
+ "symbol": "IDR"
+ },
+ "INR": {
+ "name": "å°åº¦ç›§æ¯”",
+ "symbol": "₹"
+ },
+ "DJF": {
+ "name": "å‰å¸ƒåœ°æ³•éƒŽ",
+ "symbol": "DJF"
+ },
+ "KGS": {
+ "name": "å‰çˆ¾å‰æ–¯ç´¢å§†",
+ "symbol": "KGS"
+ },
+ "GYD": {
+ "name": "圭亞那元",
+ "symbol": "GYD"
+ },
+ "DOP": {
+ "name": "多明尼加披索",
+ "symbol": "DOP"
+ },
+ "AOA": {
+ "name": "安哥拉寬扎",
+ "symbol": "AOA"
+ },
+ "BMD": {
+ "name": "百慕é”å¹£",
+ "symbol": "BMD"
+ },
+ "ETB": {
+ "name": "衣索比亞比爾",
+ "symbol": "ETB"
+ },
+ "WST": {
+ "name": "西薩摩亞塔拉",
+ "symbol": "WST"
+ },
+ "HRK": {
+ "name": "克羅埃西亞庫ç´",
+ "symbol": "HRK"
+ },
+ "LYD": {
+ "name": "利比亞第ç´çˆ¾",
+ "symbol": "LYD"
+ },
+ "BND": {
+ "name": "汶èŠå…ƒ",
+ "symbol": "BND"
+ },
+ "SAR": {
+ "name": "æ²™çƒåœ°é‡Œé›…",
+ "symbol": "SAR"
+ },
+ "BZD": {
+ "name": "è²é‡Œæ–¯å…ƒ",
+ "symbol": "BZD"
+ },
+ "ZWL": {
+ "name": "辛巴å¨å…ƒ (2009)",
+ "symbol": "ZWL"
+ },
+ "AMD": {
+ "name": "亞美尼亞德拉姆",
+ "symbol": "AMD"
+ },
+ "AZN": {
+ "name": "亞塞拜然馬ç´ç‰¹",
+ "symbol": "AZN"
+ },
+ "TZS": {
+ "name": "å¦å°šå°¼äºžå…ˆä»¤",
+ "symbol": "TZS"
+ },
+ "NGN": {
+ "name": "奈åŠåˆ©äºžå¥ˆæ‹‰",
+ "symbol": "NGN"
+ },
+ "VEF": {
+ "name": "委內瑞拉玻利瓦",
+ "symbol": "VEF"
+ },
+ "BDT": {
+ "name": "孟加拉塔å¡",
+ "symbol": "BDT"
+ },
+ "ZMW": {
+ "name": "尚比亞克瓦查",
+ "symbol": "ZMW"
+ },
+ "TOP": {
+ "name": "æ±åŠ æ½˜åŠ ",
+ "symbol": "TOP"
+ },
+ "XOF": {
+ "name": "法郎 (CFA–BCEAO)",
+ "symbol": "CFA"
+ },
+ "XAF": {
+ "name": "法郎 (CFA–BEAC)",
+ "symbol": "FCFA"
+ },
+ "XPF": {
+ "name": "法郎 (CFP)",
+ "symbol": "CFPF"
+ },
+ "BAM": {
+ "name": "波士尼亞-赫塞哥維ç´å¯è½‰æ›é¦¬å…‹",
+ "symbol": "BAM"
+ },
+ "BWP": {
+ "name": "波札那普拉",
+ "symbol": "BWP"
+ },
+ "PLN": {
+ "name": "波蘭茲羅æ",
+ "symbol": "PLN"
+ },
+ "GIP": {
+ "name": "直布羅陀鎊",
+ "symbol": "GIP"
+ },
+ "KES": {
+ "name": "肯尼亞先令",
+ "symbol": "KES"
+ },
+ "AED": {
+ "name": "阿拉伯è¯åˆå¤§å…¬åœ‹è¿ªçˆ¾æ±—",
+ "symbol": "AED"
+ },
+ "ARS": {
+ "name": "阿根廷披索",
+ "symbol": "ARS"
+ },
+ "OMR": {
+ "name": "阿曼里奧",
+ "symbol": "OMR"
+ },
+ "AFN": {
+ "name": "阿富汗尼",
+ "symbol": "AFN"
+ },
+ "AWG": {
+ "name": "阿路巴盾",
+ "symbol": "AWG"
+ },
+ "DZD": {
+ "name": "阿爾åŠåˆ©äºžç¬¬ç´çˆ¾",
+ "symbol": "DZD"
+ },
+ "ALL": {
+ "name": "阿爾巴尼亞列克",
+ "symbol": "ALL"
+ },
+ "RUB": {
+ "name": "俄羅斯盧布",
+ "symbol": "RUB"
+ },
+ "BGN": {
+ "name": "ä¿åŠ åˆ©äºžæ–°åˆ—å¼—",
+ "symbol": "BGN"
+ },
+ "ZAR": {
+ "name": "å—éžè˜­ç‰¹",
+ "symbol": "ZAR"
+ },
+ "SSP": {
+ "name": "å—蘇丹鎊",
+ "symbol": "SSP"
+ },
+ "KHR": {
+ "name": "柬埔寨瑞爾",
+ "symbol": "KHR"
+ },
+ "HNL": {
+ "name": "洪都拉斯倫皮拉",
+ "symbol": "HNL"
+ },
+ "BOB": {
+ "name": "玻利維亞諾",
+ "symbol": "BOB"
+ },
+ "KWD": {
+ "name": "科å¨ç‰¹ç¬¬ç´çˆ¾",
+ "symbol": "KWD"
+ },
+ "KMF": {
+ "name": "科摩羅法郎",
+ "symbol": "KMF"
+ },
+ "TND": {
+ "name": "çªå°¼è¥¿äºžç¬¬ç´çˆ¾",
+ "symbol": "TND"
+ },
+ "JOD": {
+ "name": "約旦第ç´çˆ¾",
+ "symbol": "JOD"
+ },
+ "USD": {
+ "name": "美元",
+ "symbol": "$"
+ },
+ "GBP": {
+ "name": "英鎊",
+ "symbol": "£"
+ },
+ "MRO": {
+ "name": "茅利塔尼亞çƒå‰äºž",
+ "symbol": "MRO"
+ },
+ "GHS": {
+ "name": "迦ç´å¡žåœ°",
+ "symbol": "GHS"
+ },
+ "CDF": {
+ "name": "剛果法郎",
+ "symbol": "CDF"
+ },
+ "COP": {
+ "name": "哥倫比亞披索",
+ "symbol": "COP"
+ },
+ "CRC": {
+ "name": "哥斯大黎加科朗",
+ "symbol": "CRC"
+ },
+ "EGP": {
+ "name": "埃åŠéŽŠ",
+ "symbol": "EGP"
+ },
+ "NOK": {
+ "name": "挪å¨å…‹æœ—",
+ "symbol": "NOK"
+ },
+ "XCD": {
+ "name": "格瑞那é”å…ƒ",
+ "symbol": "EC$"
+ },
+ "THB": {
+ "name": "泰銖",
+ "symbol": "฿"
+ },
+ "HTG": {
+ "name": "海地å¤å¾·",
+ "symbol": "HTG"
+ },
+ "UGX": {
+ "name": "çƒå¹²é”先令",
+ "symbol": "UGX"
+ },
+ "UAH": {
+ "name": "çƒå…‹è˜­æ ¼é‡Œå¤«ç´",
+ "symbol": "UAH"
+ },
+ "UYU": {
+ "name": "çƒæ‹‰åœ­æŠ«ç´¢",
+ "symbol": "UYU"
+ },
+ "UZS": {
+ "name": "çƒèŒ²åˆ¥å…‹ç´¢å§†",
+ "symbol": "UZS"
+ },
+ "PEN": {
+ "name": "秘魯新太陽幣",
+ "symbol": "PEN"
+ },
+ "NAD": {
+ "name": "ç´ç±³æ¯”亞元",
+ "symbol": "NAD"
+ },
+ "NZD": {
+ "name": "ç´è¥¿è˜­å¹£",
+ "symbol": "NZ$"
+ },
+ "SOS": {
+ "name": "索馬利亞先令",
+ "symbol": "SOS"
+ },
+ "SBD": {
+ "name": "索羅門群島元",
+ "symbol": "SBD"
+ },
+ "MYR": {
+ "name": "馬來西亞令å‰",
+ "symbol": "MYR"
+ },
+ "MKD": {
+ "name": "馬其頓第ç´çˆ¾",
+ "symbol": "MKD"
+ },
+ "MWK": {
+ "name": "馬拉維克瓦查",
+ "symbol": "MWK"
+ },
+ "MGA": {
+ "name": "馬é”加斯加阿里亞里",
+ "symbol": "MGA"
+ },
+ "MVR": {
+ "name": "馬爾地夫盧éžäºž",
+ "symbol": "MVR"
+ },
+ "CZK": {
+ "name": "æ·å…‹å…‹æœ—",
+ "symbol": "CZK"
+ },
+ "SYP": {
+ "name": "敘利亞鎊",
+ "symbol": "SYP"
+ },
+ "ANG": {
+ "name": "è·å±¬å®‰åœ°åˆ—斯盾",
+ "symbol": "ANG"
+ },
+ "MZN": {
+ "name": "莫三比克梅蒂å¡çˆ¾",
+ "symbol": "MZN"
+ },
+ "GEL": {
+ "name": "喬治亞拉里",
+ "symbol": "GEL"
+ },
+ "GNF": {
+ "name": "幾內亞法郎",
+ "symbol": "GNF"
+ },
+ "FJD": {
+ "name": "æ–æ¿Ÿå…ƒ",
+ "symbol": "FJD"
+ },
+ "LKR": {
+ "name": "斯里蘭å¡ç›§æ¯”",
+ "symbol": "LKR"
+ },
+ "CLP": {
+ "name": "智利披索",
+ "symbol": "CLP"
+ },
+ "HKD": {
+ "name": "港幣",
+ "symbol": "HK$"
+ },
+ "PHP": {
+ "name": "è²å¾‹è³“披索",
+ "symbol": "PHP"
+ },
+ "VND": {
+ "name": "越å—盾",
+ "symbol": "â‚«"
+ },
+ "KYD": {
+ "name": "開曼群島元",
+ "symbol": "KYD"
+ },
+ "TJS": {
+ "name": "å¡”å‰å…‹ç´¢èŽ«å°¼",
+ "symbol": "TJS"
+ },
+ "SCR": {
+ "name": "塞席爾盧比",
+ "symbol": "SCR"
+ },
+ "RSD": {
+ "name": "塞爾維亞戴ç´",
+ "symbol": "RSD"
+ },
+ "TRY": {
+ "name": "新土耳其里拉",
+ "symbol": "TRY"
+ },
+ "SGD": {
+ "name": "新加å¡å¹£",
+ "symbol": "SGD"
+ },
+ "TWD": {
+ "name": "新臺幣",
+ "symbol": "NT$"
+ },
+ "SLL": {
+ "name": "ç…å­å±±åˆ©æ˜‚",
+ "symbol": "SLL"
+ },
+ "CHF": {
+ "name": "瑞士法郎",
+ "symbol": "CHF"
+ },
+ "SEK": {
+ "name": "瑞典克朗",
+ "symbol": "SEK"
+ },
+ "VUV": {
+ "name": "è¬é‚£æœç“¦åœ–",
+ "symbol": "VUV"
+ },
+ "STD": {
+ "name": "è–多美島和普林西比島多布拉",
+ "symbol": "STD"
+ },
+ "SHP": {
+ "name": "è–赫勒拿鎊",
+ "symbol": "SHP"
+ },
+ "YER": {
+ "name": "葉門里雅",
+ "symbol": "YER"
+ },
+ "FKP": {
+ "name": "ç¦å…‹è˜­ç¾¤å³¶éŽŠ",
+ "symbol": "FKP"
+ },
+ "CVE": {
+ "name": "維德角埃斯庫多",
+ "symbol": "CVE"
+ },
+ "MNT": {
+ "name": "è’™å¤åœ–格里克",
+ "symbol": "MNT"
+ },
+ "BIF": {
+ "name": "蒲隆地法郎",
+ "symbol": "BIF"
+ },
+ "LAK": {
+ "name": "寮國基普",
+ "symbol": "LAK"
+ },
+ "MDL": {
+ "name": "æ‘©æœé›²åˆ—伊",
+ "symbol": "MDL"
+ },
+ "MAD": {
+ "name": "摩洛哥迪拉姆",
+ "symbol": "MAD"
+ },
+ "MUR": {
+ "name": "模里西斯盧布",
+ "symbol": "MUR"
+ },
+ "EUR": {
+ "name": "æ­å…ƒ",
+ "symbol": "€"
+ },
+ "MMK": {
+ "name": "緬甸元",
+ "symbol": "MMK"
+ },
+ "LBP": {
+ "name": "黎巴嫩鎊",
+ "symbol": "LBP"
+ },
+ "MXN": {
+ "name": "墨西哥披索",
+ "symbol": "MX$"
+ },
+ "MOP": {
+ "name": "澳門元",
+ "symbol": "MOP"
+ },
+ "AUD": {
+ "name": "澳幣",
+ "symbol": "AU$"
+ },
+ "RWF": {
+ "name": "盧安é”法郎",
+ "symbol": "RWF"
+ },
+ "LRD": {
+ "name": "賴比瑞亞元",
+ "symbol": "LRD"
+ },
+ "LSL": {
+ "name": "賴索托洛蒂",
+ "symbol": "LSL"
+ },
+ "KRW": {
+ "name": "韓圓",
+ "symbol": "₩"
+ },
+ "SVC": {
+ "name": "薩爾瓦多科郎",
+ "symbol": "SVC"
+ },
+ "RON": {
+ "name": "羅馬尼亞列伊",
+ "symbol": "RON"
+ },
+ "SDG": {
+ "name": "蘇丹鎊",
+ "symbol": "SDG"
+ },
+ "SRD": {
+ "name": "蘇利å—å…ƒ",
+ "symbol": "SRD"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/currency/zh.json b/library/intl/resources/currency/zh.json
new file mode 100644
index 000000000..ad5b0336f
--- /dev/null
+++ b/library/intl/resources/currency/zh.json
@@ -0,0 +1,634 @@
+{
+ "ALL": {
+ "name": "阿尔巴尼亚列克",
+ "symbol": "ALL"
+ },
+ "DZD": {
+ "name": "阿尔åŠåˆ©äºšç¬¬çº³å°”",
+ "symbol": "DZD"
+ },
+ "AFN": {
+ "name": "阿富汗尼",
+ "symbol": "AFN"
+ },
+ "ARS": {
+ "name": "阿根廷比索",
+ "symbol": "ARS"
+ },
+ "AED": {
+ "name": "阿è”酋迪拉姆",
+ "symbol": "AED"
+ },
+ "AWG": {
+ "name": "阿é²å·´åŸºå°”å¾·å…ƒ",
+ "symbol": "AWG"
+ },
+ "OMR": {
+ "name": "阿曼里亚尔",
+ "symbol": "OMR"
+ },
+ "AZN": {
+ "name": "阿塞拜疆马纳特",
+ "symbol": "AZN"
+ },
+ "EGP": {
+ "name": "埃åŠé•‘",
+ "symbol": "EGP"
+ },
+ "ETB": {
+ "name": "埃塞俄比亚比尔",
+ "symbol": "ETB"
+ },
+ "AOA": {
+ "name": "安哥拉宽扎",
+ "symbol": "AOA"
+ },
+ "AUD": {
+ "name": "澳大利亚元",
+ "symbol": "AU$"
+ },
+ "MOP": {
+ "name": "澳门元",
+ "symbol": "MOP"
+ },
+ "BBD": {
+ "name": "巴巴多斯元",
+ "symbol": "BBD"
+ },
+ "PGK": {
+ "name": "巴布亚新几内亚基那",
+ "symbol": "PGK"
+ },
+ "BSD": {
+ "name": "巴哈马元",
+ "symbol": "BSD"
+ },
+ "PKR": {
+ "name": "巴基斯å¦å¢æ¯”",
+ "symbol": "PKR"
+ },
+ "PYG": {
+ "name": "巴拉圭瓜拉尼",
+ "symbol": "PYG"
+ },
+ "BHD": {
+ "name": "巴林第纳尔",
+ "symbol": "BHD"
+ },
+ "PAB": {
+ "name": "巴拿马巴波亚",
+ "symbol": "PAB"
+ },
+ "BRL": {
+ "name": "巴西雷亚尔",
+ "symbol": "R$"
+ },
+ "BYR": {
+ "name": "白俄罗斯å¢å¸ƒ",
+ "symbol": "BYR"
+ },
+ "BMD": {
+ "name": "百慕大元",
+ "symbol": "BMD"
+ },
+ "BGN": {
+ "name": "ä¿åŠ åˆ©äºšæ–°åˆ—å¼—",
+ "symbol": "BGN"
+ },
+ "ISK": {
+ "name": "冰岛克朗",
+ "symbol": "ISK"
+ },
+ "PLN": {
+ "name": "波兰兹罗æ",
+ "symbol": "PLN"
+ },
+ "BAM": {
+ "name": "波斯尼亚-黑塞哥维那å¯å…‘æ¢é©¬å…‹",
+ "symbol": "BAM"
+ },
+ "BOB": {
+ "name": "玻利维亚诺",
+ "symbol": "BOB"
+ },
+ "BZD": {
+ "name": "伯利兹元",
+ "symbol": "BZD"
+ },
+ "BWP": {
+ "name": "åšèŒ¨ç“¦çº³æ™®æ‹‰",
+ "symbol": "BWP"
+ },
+ "BTN": {
+ "name": "ä¸ä¸¹åŠªå°”特é²å§†",
+ "symbol": "BTN"
+ },
+ "BIF": {
+ "name": "布隆迪法郎",
+ "symbol": "BIF"
+ },
+ "KPW": {
+ "name": "æœé²œå…ƒ",
+ "symbol": "KPW"
+ },
+ "DKK": {
+ "name": "丹麦克朗",
+ "symbol": "DKK"
+ },
+ "XCD": {
+ "name": "东加勒比元",
+ "symbol": "EC$"
+ },
+ "DOP": {
+ "name": "多米尼加比索",
+ "symbol": "DOP"
+ },
+ "RUB": {
+ "name": "ä¿„ç½—æ–¯å¢å¸ƒ",
+ "symbol": "RUB"
+ },
+ "ERN": {
+ "name": "厄立特里亚纳克法",
+ "symbol": "ERN"
+ },
+ "XOF": {
+ "name": "éžæ´²é‡‘èžå…±åŒä½“法郎",
+ "symbol": "CFA"
+ },
+ "PHP": {
+ "name": "è²å¾‹å®¾æ¯”ç´¢",
+ "symbol": "PHP"
+ },
+ "FJD": {
+ "name": "æ–济元",
+ "symbol": "FJD"
+ },
+ "CVE": {
+ "name": "佛得角埃斯库多",
+ "symbol": "CVE"
+ },
+ "FKP": {
+ "name": "ç¦å…‹å…°ç¾¤å²›é•‘",
+ "symbol": "FKP"
+ },
+ "GMD": {
+ "name": "冈比亚达拉西",
+ "symbol": "GMD"
+ },
+ "CDF": {
+ "name": "刚果法郎",
+ "symbol": "CDF"
+ },
+ "HKD": {
+ "name": "港元",
+ "symbol": "HK$"
+ },
+ "COP": {
+ "name": "哥伦比亚比索",
+ "symbol": "COP"
+ },
+ "CRC": {
+ "name": "哥斯达黎加科朗",
+ "symbol": "CRC"
+ },
+ "GEL": {
+ "name": "æ ¼é²å‰äºšæ‹‰é‡Œ",
+ "symbol": "GEL"
+ },
+ "CUP": {
+ "name": "å¤å·´æ¯”ç´¢",
+ "symbol": "CUP"
+ },
+ "CUC": {
+ "name": "å¤å·´å¯å…‘æ¢æ¯”ç´¢",
+ "symbol": "CUC"
+ },
+ "GYD": {
+ "name": "圭亚那元",
+ "symbol": "GYD"
+ },
+ "KZT": {
+ "name": "哈è¨å…‹æ–¯å¦åšæˆˆ",
+ "symbol": "KZT"
+ },
+ "HTG": {
+ "name": "海地å¤å¾·",
+ "symbol": "HTG"
+ },
+ "KRW": {
+ "name": "韩元",
+ "symbol": "₩"
+ },
+ "ANG": {
+ "name": "è·å±žå®‰çš„列斯盾",
+ "symbol": "ANG"
+ },
+ "HNL": {
+ "name": "洪都拉斯伦皮拉",
+ "symbol": "HNL"
+ },
+ "DJF": {
+ "name": "å‰å¸ƒæ法郎",
+ "symbol": "DJF"
+ },
+ "KGS": {
+ "name": "å‰å°”å‰æ–¯æ–¯å¦ç´¢å§†",
+ "symbol": "KGS"
+ },
+ "GNF": {
+ "name": "几内亚法郎",
+ "symbol": "GNF"
+ },
+ "CAD": {
+ "name": "加拿大元",
+ "symbol": "CA$"
+ },
+ "GHS": {
+ "name": "加纳塞地",
+ "symbol": "GHS"
+ },
+ "KHR": {
+ "name": "柬埔寨瑞尔",
+ "symbol": "KHR"
+ },
+ "CZK": {
+ "name": "æ·å…‹å…‹éƒŽ",
+ "symbol": "CZK"
+ },
+ "ZWL": {
+ "name": "津巴布韦元 (2009)",
+ "symbol": "ZWL"
+ },
+ "QAR": {
+ "name": "å¡å¡”尔里亚尔",
+ "symbol": "QAR"
+ },
+ "KYD": {
+ "name": "开曼元",
+ "symbol": "KYD"
+ },
+ "KMF": {
+ "name": "科摩罗法郎",
+ "symbol": "KMF"
+ },
+ "KWD": {
+ "name": "科å¨ç‰¹ç¬¬çº³å°”",
+ "symbol": "KWD"
+ },
+ "HRK": {
+ "name": "克罗地亚库纳",
+ "symbol": "HRK"
+ },
+ "KES": {
+ "name": "肯尼亚先令",
+ "symbol": "KES"
+ },
+ "LSL": {
+ "name": "莱索托洛蒂",
+ "symbol": "LSL"
+ },
+ "LAK": {
+ "name": "è€æŒåŸºæ™®",
+ "symbol": "LAK"
+ },
+ "LBP": {
+ "name": "黎巴嫩镑",
+ "symbol": "LBP"
+ },
+ "LTL": {
+ "name": "立陶宛立特",
+ "symbol": "LTL"
+ },
+ "LRD": {
+ "name": "利比里亚元",
+ "symbol": "LRD"
+ },
+ "LYD": {
+ "name": "利比亚第纳尔",
+ "symbol": "LYD"
+ },
+ "RWF": {
+ "name": "å¢æ—ºè¾¾æ³•éƒŽ",
+ "symbol": "RWF"
+ },
+ "RON": {
+ "name": "罗马尼亚列伊",
+ "symbol": "RON"
+ },
+ "MGA": {
+ "name": "马达加斯加阿里亚里",
+ "symbol": "MGA"
+ },
+ "MVR": {
+ "name": "马尔代夫å¢è²äºš",
+ "symbol": "MVR"
+ },
+ "MWK": {
+ "name": "马拉维克瓦查",
+ "symbol": "MWK"
+ },
+ "MYR": {
+ "name": "马æ¥è¥¿äºšæž—å‰ç‰¹",
+ "symbol": "MYR"
+ },
+ "MKD": {
+ "name": "马其顿第纳尔",
+ "symbol": "MKD"
+ },
+ "MUR": {
+ "name": "毛里求斯å¢æ¯”",
+ "symbol": "MUR"
+ },
+ "MRO": {
+ "name": "毛里塔尼亚乌å‰äºš",
+ "symbol": "MRO"
+ },
+ "USD": {
+ "name": "美元",
+ "symbol": "US$"
+ },
+ "MNT": {
+ "name": "è’™å¤å›¾æ ¼é‡Œå…‹",
+ "symbol": "MNT"
+ },
+ "BDT": {
+ "name": "孟加拉塔å¡",
+ "symbol": "BDT"
+ },
+ "PEN": {
+ "name": "秘é²æ–°ç´¢å°”",
+ "symbol": "PEN"
+ },
+ "MMK": {
+ "name": "缅甸元",
+ "symbol": "MMK"
+ },
+ "MDL": {
+ "name": "摩尔多瓦列伊",
+ "symbol": "MDL"
+ },
+ "MAD": {
+ "name": "摩洛哥迪拉姆",
+ "symbol": "MAD"
+ },
+ "MZN": {
+ "name": "莫桑比克美æå¡",
+ "symbol": "MZN"
+ },
+ "MXN": {
+ "name": "墨西哥比索",
+ "symbol": "MX$"
+ },
+ "NAD": {
+ "name": "纳米比亚元",
+ "symbol": "NAD"
+ },
+ "ZAR": {
+ "name": "å—éžå…°ç‰¹",
+ "symbol": "ZAR"
+ },
+ "SSP": {
+ "name": "å—è‹ä¸¹é•‘",
+ "symbol": "SSP"
+ },
+ "NIO": {
+ "name": "尼加拉瓜金科多巴",
+ "symbol": "NIO"
+ },
+ "NPR": {
+ "name": "尼泊尔å¢æ¯”",
+ "symbol": "NPR"
+ },
+ "NGN": {
+ "name": "尼日利亚奈拉",
+ "symbol": "NGN"
+ },
+ "NOK": {
+ "name": "挪å¨å…‹æœ—",
+ "symbol": "NOK"
+ },
+ "EUR": {
+ "name": "欧元",
+ "symbol": "€"
+ },
+ "CNY": {
+ "name": "人民å¸",
+ "symbol": "ï¿¥"
+ },
+ "JPY": {
+ "name": "日元",
+ "symbol": "JPÂ¥"
+ },
+ "SEK": {
+ "name": "瑞典克朗",
+ "symbol": "SEK"
+ },
+ "CHF": {
+ "name": "瑞士法郎",
+ "symbol": "CHF"
+ },
+ "SVC": {
+ "name": "è¨å°”瓦多科朗",
+ "symbol": "SVC"
+ },
+ "WST": {
+ "name": "è¨æ‘©äºšå¡”拉",
+ "symbol": "WST"
+ },
+ "RSD": {
+ "name": "塞尔维亚第纳尔",
+ "symbol": "RSD"
+ },
+ "SLL": {
+ "name": "塞拉利昂利昂",
+ "symbol": "SLL"
+ },
+ "SCR": {
+ "name": "塞舌尔å¢æ¯”",
+ "symbol": "SCR"
+ },
+ "SAR": {
+ "name": "沙特里亚尔",
+ "symbol": "SAR"
+ },
+ "STD": {
+ "name": "圣多美和普林西比多布拉",
+ "symbol": "STD"
+ },
+ "SHP": {
+ "name": "圣赫勒拿群岛磅",
+ "symbol": "SHP"
+ },
+ "LKR": {
+ "name": "斯里兰å¡å¢æ¯”",
+ "symbol": "LKR"
+ },
+ "SZL": {
+ "name": "æ–¯å¨å£«å…°é‡Œå…°å‰å°¼",
+ "symbol": "SZL"
+ },
+ "SDG": {
+ "name": "è‹ä¸¹é•‘",
+ "symbol": "SDG"
+ },
+ "SRD": {
+ "name": "è‹é‡Œå—å…ƒ",
+ "symbol": "SRD"
+ },
+ "SBD": {
+ "name": "所罗门群岛元",
+ "symbol": "SBD"
+ },
+ "SOS": {
+ "name": "索马里先令",
+ "symbol": "SOS"
+ },
+ "TJS": {
+ "name": "å¡”å‰å…‹æ–¯å¦ç´¢èŽ«å°¼",
+ "symbol": "TJS"
+ },
+ "XPF": {
+ "name": "太平洋法郎",
+ "symbol": "CFPF"
+ },
+ "THB": {
+ "name": "æ³°é“¢",
+ "symbol": "฿"
+ },
+ "TZS": {
+ "name": "å¦æ¡‘尼亚先令",
+ "symbol": "TZS"
+ },
+ "TOP": {
+ "name": "汤加潘加",
+ "symbol": "TOP"
+ },
+ "TTD": {
+ "name": "特立尼达和多巴哥元",
+ "symbol": "TTD"
+ },
+ "TND": {
+ "name": "çªå°¼æ–¯ç¬¬çº³å°”",
+ "symbol": "TND"
+ },
+ "TRY": {
+ "name": "土耳其里拉",
+ "symbol": "TRY"
+ },
+ "TMT": {
+ "name": "土库曼斯å¦é©¬çº³ç‰¹",
+ "symbol": "TMT"
+ },
+ "VUV": {
+ "name": "瓦努阿图瓦图",
+ "symbol": "VUV"
+ },
+ "GTQ": {
+ "name": "å±åœ°é©¬æ‹‰æ ¼æŸ¥å°”",
+ "symbol": "GTQ"
+ },
+ "VEF": {
+ "name": "委内瑞拉玻利瓦尔",
+ "symbol": "VEF"
+ },
+ "BND": {
+ "name": "文莱元",
+ "symbol": "BND"
+ },
+ "UGX": {
+ "name": "乌干达先令",
+ "symbol": "UGX"
+ },
+ "UAH": {
+ "name": "乌克兰格里夫纳",
+ "symbol": "UAH"
+ },
+ "UYU": {
+ "name": "乌拉圭比索",
+ "symbol": "UYU"
+ },
+ "UZS": {
+ "name": "乌兹别克斯å¦è‹å§†",
+ "symbol": "UZS"
+ },
+ "SGD": {
+ "name": "新加å¡å…ƒ",
+ "symbol": "SGD"
+ },
+ "TWD": {
+ "name": "æ–°å°å¸",
+ "symbol": "NT$"
+ },
+ "NZD": {
+ "name": "新西兰元",
+ "symbol": "NZ$"
+ },
+ "HUF": {
+ "name": "匈牙利ç¦æž—",
+ "symbol": "HUF"
+ },
+ "SYP": {
+ "name": "å™åˆ©äºšé•‘",
+ "symbol": "SYP"
+ },
+ "JMD": {
+ "name": "牙买加元",
+ "symbol": "JMD"
+ },
+ "AMD": {
+ "name": "亚美尼亚德拉姆",
+ "symbol": "AMD"
+ },
+ "YER": {
+ "name": "也门里亚尔",
+ "symbol": "YER"
+ },
+ "IQD": {
+ "name": "伊拉克第纳尔",
+ "symbol": "IQD"
+ },
+ "IRR": {
+ "name": "伊朗里亚尔",
+ "symbol": "IRR"
+ },
+ "ILS": {
+ "name": "以色列新谢克尔",
+ "symbol": "₪"
+ },
+ "INR": {
+ "name": "å°åº¦å¢æ¯”",
+ "symbol": "₹"
+ },
+ "IDR": {
+ "name": "å°åº¦å°¼è¥¿äºšç›¾",
+ "symbol": "IDR"
+ },
+ "GBP": {
+ "name": "英镑",
+ "symbol": "£"
+ },
+ "JOD": {
+ "name": "约旦第纳尔",
+ "symbol": "JOD"
+ },
+ "VND": {
+ "name": "越å—盾",
+ "symbol": "â‚«"
+ },
+ "ZMW": {
+ "name": "赞比亚克瓦查",
+ "symbol": "ZMW"
+ },
+ "GIP": {
+ "name": "直布罗陀镑",
+ "symbol": "GIP"
+ },
+ "CLP": {
+ "name": "智利比索",
+ "symbol": "CLP"
+ },
+ "XAF": {
+ "name": "中éžé‡‘èžåˆä½œæ³•éƒŽ",
+ "symbol": "FCFA"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/currency/zu.json b/library/intl/resources/currency/zu.json
new file mode 100644
index 000000000..59d82092a
--- /dev/null
+++ b/library/intl/resources/currency/zu.json
@@ -0,0 +1,634 @@
+{
+ "AFN": {
+ "name": "i-Afghan Afghani",
+ "symbol": "AFN"
+ },
+ "ALL": {
+ "name": "i-Albanian Lek",
+ "symbol": "ALL"
+ },
+ "DZD": {
+ "name": "i-Algerian Dinar",
+ "symbol": "DZD"
+ },
+ "AOA": {
+ "name": "i-Angolan Kwanza",
+ "symbol": "AOA"
+ },
+ "ARS": {
+ "name": "i-Argentina Peso",
+ "symbol": "ARS"
+ },
+ "AMD": {
+ "name": "i-Armenian Dram",
+ "symbol": "AMD"
+ },
+ "AWG": {
+ "name": "i-Aruban Florin",
+ "symbol": "AWG"
+ },
+ "AUD": {
+ "name": "i-Austrilian Dollar",
+ "symbol": "A$"
+ },
+ "AZN": {
+ "name": "i-Azerbaijani Manat",
+ "symbol": "AZN"
+ },
+ "BSD": {
+ "name": "i-Bahamian Dollar",
+ "symbol": "BSD"
+ },
+ "BHD": {
+ "name": "i-Bahraini Dinar",
+ "symbol": "BHD"
+ },
+ "BDT": {
+ "name": "i-Bangladeshi Taka",
+ "symbol": "BDT"
+ },
+ "BBD": {
+ "name": "i-Barbadian Dollar",
+ "symbol": "BBD"
+ },
+ "BYR": {
+ "name": "i-Belarusian Ruble",
+ "symbol": "BYR"
+ },
+ "BZD": {
+ "name": "i-Belize Dollar",
+ "symbol": "BZD"
+ },
+ "BMD": {
+ "name": "i-Bermudan Dollar",
+ "symbol": "BMD"
+ },
+ "BTN": {
+ "name": "i-Bhutanese Ngultrum",
+ "symbol": "BTN"
+ },
+ "BOB": {
+ "name": "i-Bolivian Boliviano",
+ "symbol": "BOB"
+ },
+ "BAM": {
+ "name": "i-Bosnia-Herzegovina Convertible Mark",
+ "symbol": "BAM"
+ },
+ "BWP": {
+ "name": "i-Botswana Pula",
+ "symbol": "BWP"
+ },
+ "BRL": {
+ "name": "i-Brazilian Real",
+ "symbol": "R$"
+ },
+ "GBP": {
+ "name": "i-British Pound Sterling",
+ "symbol": "£"
+ },
+ "BND": {
+ "name": "i-Brunei Dollar",
+ "symbol": "BND"
+ },
+ "BGN": {
+ "name": "i-Bulgarian Lev",
+ "symbol": "BGN"
+ },
+ "BIF": {
+ "name": "i-Burundian Franc",
+ "symbol": "BIF"
+ },
+ "KHR": {
+ "name": "i-Cambodian Riel",
+ "symbol": "KHR"
+ },
+ "CAD": {
+ "name": "i-Candian Dollar",
+ "symbol": "CA$"
+ },
+ "CVE": {
+ "name": "i-Cape Verdean Escudo",
+ "symbol": "CVE"
+ },
+ "KYD": {
+ "name": "i-Cayman Islands Dollar",
+ "symbol": "KYD"
+ },
+ "XAF": {
+ "name": "i-CFA Franc BCEA",
+ "symbol": "FCFA"
+ },
+ "XOF": {
+ "name": "i-CFA Franc BCEAO",
+ "symbol": "CFA"
+ },
+ "XPF": {
+ "name": "i-CFP Franc",
+ "symbol": "CFPF"
+ },
+ "CLP": {
+ "name": "i-Chilean Peso",
+ "symbol": "CLP"
+ },
+ "CNY": {
+ "name": "i-Chinese Yuan",
+ "symbol": "CNÂ¥"
+ },
+ "COP": {
+ "name": "i-Colombian Peso",
+ "symbol": "COP"
+ },
+ "KMF": {
+ "name": "i-Comorian Franc",
+ "symbol": "KMF"
+ },
+ "CDF": {
+ "name": "i-Congolese Franc",
+ "symbol": "CDF"
+ },
+ "CRC": {
+ "name": "i-Costa Rican Colón",
+ "symbol": "CRC"
+ },
+ "HRK": {
+ "name": "i-Croatian Kuna",
+ "symbol": "HRK"
+ },
+ "CUC": {
+ "name": "i-Cuban Convertable Peso",
+ "symbol": "CUC"
+ },
+ "CUP": {
+ "name": "I-Cuban Peso",
+ "symbol": "CUP"
+ },
+ "CZK": {
+ "name": "i-Czech Republic Koruna",
+ "symbol": "CZK"
+ },
+ "DKK": {
+ "name": "i-Danish Krone",
+ "symbol": "DKK"
+ },
+ "AED": {
+ "name": "i-Dirham yase-United Arab Emirates",
+ "symbol": "AED"
+ },
+ "DJF": {
+ "name": "i-Djiboutian Franc",
+ "symbol": "DJF"
+ },
+ "DOP": {
+ "name": "i-Dominican Peso",
+ "symbol": "DOP"
+ },
+ "XCD": {
+ "name": "i-East Caribbean Dollar",
+ "symbol": "EC$"
+ },
+ "EGP": {
+ "name": "i-Egyptian Pound",
+ "symbol": "EGP"
+ },
+ "ERN": {
+ "name": "i-Eritrean Nakfa",
+ "symbol": "ERN"
+ },
+ "ETB": {
+ "name": "i-Ethopian Birr",
+ "symbol": "ETB"
+ },
+ "EUR": {
+ "name": "i-Euro",
+ "symbol": "€"
+ },
+ "FKP": {
+ "name": "i-Falkland Islands Pound",
+ "symbol": "FKP"
+ },
+ "FJD": {
+ "name": "i-Fijian Dollar",
+ "symbol": "FJD"
+ },
+ "GMD": {
+ "name": "i-Gambian Dalasi",
+ "symbol": "GMD"
+ },
+ "GEL": {
+ "name": "i-Georgian Lari",
+ "symbol": "GEL"
+ },
+ "GHS": {
+ "name": "i-Ghanaian Cedi",
+ "symbol": "GHS"
+ },
+ "GIP": {
+ "name": "i-Gibraltar Pound",
+ "symbol": "GIP"
+ },
+ "GTQ": {
+ "name": "i-Guatemalan Quetzal",
+ "symbol": "GTQ"
+ },
+ "GNF": {
+ "name": "i-Gunean Franc",
+ "symbol": "GNF"
+ },
+ "GYD": {
+ "name": "i-Guyanaese Dollar",
+ "symbol": "GYD"
+ },
+ "HTG": {
+ "name": "i-Haitian Gourde",
+ "symbol": "HTG"
+ },
+ "HNL": {
+ "name": "i-Honduran Lempira",
+ "symbol": "HNL"
+ },
+ "HKD": {
+ "name": "i-Hong Kong Dollar",
+ "symbol": "HK$"
+ },
+ "HUF": {
+ "name": "i-Hungarian Forint",
+ "symbol": "HUF"
+ },
+ "ISK": {
+ "name": "i-Icelandic Króna",
+ "symbol": "ISK"
+ },
+ "INR": {
+ "name": "i-Indian Rupee",
+ "symbol": "₹"
+ },
+ "IDR": {
+ "name": "i-Indonesian Rupiah",
+ "symbol": "IDR"
+ },
+ "IRR": {
+ "name": "i-Iranian Rial",
+ "symbol": "IRR"
+ },
+ "IQD": {
+ "name": "i-Iraqi Dinar",
+ "symbol": "IQD"
+ },
+ "ILS": {
+ "name": "i-Israeli New Sheqel",
+ "symbol": "₪"
+ },
+ "JMD": {
+ "name": "i-Jamaican Dollar",
+ "symbol": "JMD"
+ },
+ "JPY": {
+ "name": "i-Japanese Yen",
+ "symbol": "JPÂ¥"
+ },
+ "JOD": {
+ "name": "i-Jordanian Dinar",
+ "symbol": "JOD"
+ },
+ "KZT": {
+ "name": "i-Kazakhstani Tenge",
+ "symbol": "KZT"
+ },
+ "KES": {
+ "name": "i-Kenyan Shilling",
+ "symbol": "KES"
+ },
+ "KWD": {
+ "name": "i-Kuwaiti Dinar",
+ "symbol": "KWD"
+ },
+ "KGS": {
+ "name": "i-Kyrgystani Som",
+ "symbol": "KGS"
+ },
+ "LAK": {
+ "name": "i-Laotian Kip",
+ "symbol": "LAK"
+ },
+ "LBP": {
+ "name": "i-Lebanese Pound",
+ "symbol": "LBP"
+ },
+ "LSL": {
+ "name": "i-Lesotho Loti",
+ "symbol": "LSL"
+ },
+ "LRD": {
+ "name": "i-Liberian Dollar",
+ "symbol": "LRD"
+ },
+ "LYD": {
+ "name": "i-Libyan Dinar",
+ "symbol": "LYD"
+ },
+ "LTL": {
+ "name": "i-Lithuanian Litas",
+ "symbol": "LTL"
+ },
+ "MOP": {
+ "name": "i-Macanese Pataca",
+ "symbol": "MOP"
+ },
+ "MKD": {
+ "name": "i-Macedonian Denar",
+ "symbol": "MKD"
+ },
+ "MGA": {
+ "name": "i-Malagasy Ariary",
+ "symbol": "MGA"
+ },
+ "MWK": {
+ "name": "i-Malawian Kwacha",
+ "symbol": "MWK"
+ },
+ "MYR": {
+ "name": "i-Malaysian Ringgit",
+ "symbol": "MYR"
+ },
+ "MVR": {
+ "name": "i-Maldivian Rufiyana",
+ "symbol": "MVR"
+ },
+ "MRO": {
+ "name": "i-Mauritanian Ouguiya",
+ "symbol": "MRO"
+ },
+ "MUR": {
+ "name": "i-Mauritian Rupee",
+ "symbol": "MUR"
+ },
+ "MZN": {
+ "name": "I-Metical yase-Mozambicque",
+ "symbol": "MZN"
+ },
+ "MXN": {
+ "name": "i-Mexican Peso",
+ "symbol": "MX$"
+ },
+ "MDL": {
+ "name": "i-Moldovan Leu",
+ "symbol": "MDL"
+ },
+ "MNT": {
+ "name": "i-Mongolian Tugrik",
+ "symbol": "MNT"
+ },
+ "MAD": {
+ "name": "i-Moroccan Dirham",
+ "symbol": "MAD"
+ },
+ "MMK": {
+ "name": "i-Myanma Kyat",
+ "symbol": "MMK"
+ },
+ "NAD": {
+ "name": "i-Namibian Dollar",
+ "symbol": "NAD"
+ },
+ "NPR": {
+ "name": "i-Nepalese Rupee",
+ "symbol": "NPR"
+ },
+ "ANG": {
+ "name": "i-Netherlands Antillean Guilder",
+ "symbol": "ANG"
+ },
+ "TWD": {
+ "name": "i-New Taiwan Dollar",
+ "symbol": "NT$"
+ },
+ "NZD": {
+ "name": "i-New Zealand Dollar",
+ "symbol": "NZ$"
+ },
+ "NIO": {
+ "name": "i-Nicaraguan Córdoba",
+ "symbol": "NIO"
+ },
+ "NGN": {
+ "name": "i-Nigerian Naira",
+ "symbol": "NGN"
+ },
+ "KPW": {
+ "name": "i-North Korean Won",
+ "symbol": "KPW"
+ },
+ "NOK": {
+ "name": "i-Norwegian Krone",
+ "symbol": "NOK"
+ },
+ "OMR": {
+ "name": "i-Omani Rial",
+ "symbol": "OMR"
+ },
+ "PKR": {
+ "name": "i-Pakistani Rupee",
+ "symbol": "PKR"
+ },
+ "PAB": {
+ "name": "i-Panamanian Balboa",
+ "symbol": "PAB"
+ },
+ "PGK": {
+ "name": "i-Papua New Guinean Kina",
+ "symbol": "PGK"
+ },
+ "PYG": {
+ "name": "i-Paraguayan Guarani",
+ "symbol": "PYG"
+ },
+ "PEN": {
+ "name": "i-Peruvian Nuevo Sol",
+ "symbol": "PEN"
+ },
+ "PHP": {
+ "name": "i-Philippine Peso",
+ "symbol": "PHP"
+ },
+ "PLN": {
+ "name": "i-Polish Zloty",
+ "symbol": "PLN"
+ },
+ "QAR": {
+ "name": "i-Qatari Rial",
+ "symbol": "QAR"
+ },
+ "RON": {
+ "name": "I-Romanian Leu",
+ "symbol": "RON"
+ },
+ "RUB": {
+ "name": "i-Russian Ruble",
+ "symbol": "RUB"
+ },
+ "RWF": {
+ "name": "i-Rwandan Franc",
+ "symbol": "RWF"
+ },
+ "SHP": {
+ "name": "i-Saint Helena Pound",
+ "symbol": "SHP"
+ },
+ "WST": {
+ "name": "i-Samoan Tala",
+ "symbol": "WST"
+ },
+ "STD": {
+ "name": "i-São Tomé kanye ne-Príncipe Dobra",
+ "symbol": "STD"
+ },
+ "SAR": {
+ "name": "i-Saudi Riyal",
+ "symbol": "SAR"
+ },
+ "RSD": {
+ "name": "i-Serbian Dinar",
+ "symbol": "RSD"
+ },
+ "SCR": {
+ "name": "i-Seychellois Rupee",
+ "symbol": "SCR"
+ },
+ "SLL": {
+ "name": "i-Sierra Leonean Leone",
+ "symbol": "SLL"
+ },
+ "SGD": {
+ "name": "i-Singapore Dollar",
+ "symbol": "SGD"
+ },
+ "SBD": {
+ "name": "i-Solomon Islands Dollar",
+ "symbol": "SBD"
+ },
+ "SOS": {
+ "name": "i-Somali Shilling",
+ "symbol": "SOS"
+ },
+ "ZAR": {
+ "name": "i-South African Rand",
+ "symbol": "R"
+ },
+ "KRW": {
+ "name": "i-South Korean Won",
+ "symbol": "â‚©"
+ },
+ "LKR": {
+ "name": "i-Sri Lankan Rupee",
+ "symbol": "LKR"
+ },
+ "SDG": {
+ "name": "i-Sudanese Pound",
+ "symbol": "SDG"
+ },
+ "SRD": {
+ "name": "i-Surinamese Dollar",
+ "symbol": "SRD"
+ },
+ "SZL": {
+ "name": "i-Swazi Lilangeni",
+ "symbol": "SZL"
+ },
+ "SEK": {
+ "name": "i-Swedish Krona",
+ "symbol": "SEK"
+ },
+ "CHF": {
+ "name": "i-Swiss Franc",
+ "symbol": "CHF"
+ },
+ "SYP": {
+ "name": "i-Syrian Pound",
+ "symbol": "SYP"
+ },
+ "TJS": {
+ "name": "i-Tajikistani Somoni",
+ "symbol": "TJS"
+ },
+ "TZS": {
+ "name": "i-Tanzanian Shilling",
+ "symbol": "TZS"
+ },
+ "THB": {
+ "name": "i-Thai Baht",
+ "symbol": "฿"
+ },
+ "TOP": {
+ "name": "i-Tongan Paʻanga",
+ "symbol": "TOP"
+ },
+ "TTD": {
+ "name": "i-Trinidad and Tobago Dollar",
+ "symbol": "TTD"
+ },
+ "TND": {
+ "name": "i-Tunisian Dinar",
+ "symbol": "TND"
+ },
+ "TRY": {
+ "name": "i-Turkish Lira",
+ "symbol": "TRY"
+ },
+ "TMT": {
+ "name": "i-Turkmenistani Manat",
+ "symbol": "TMT"
+ },
+ "UGX": {
+ "name": "i-Ugandan Shilling",
+ "symbol": "UGX"
+ },
+ "UAH": {
+ "name": "i-Ukrainian Hryvnia",
+ "symbol": "UAH"
+ },
+ "UYU": {
+ "name": "i-Uruguayan Peso",
+ "symbol": "UYU"
+ },
+ "USD": {
+ "name": "i-US Dollar",
+ "symbol": "US$"
+ },
+ "UZS": {
+ "name": "i-Uzbekistan Som",
+ "symbol": "UZS"
+ },
+ "VUV": {
+ "name": "i-Vanuatu Vatu",
+ "symbol": "VUV"
+ },
+ "VEF": {
+ "name": "i-Venezuelan Bolívar",
+ "symbol": "VEF"
+ },
+ "VND": {
+ "name": "i-Vietnamese Dong",
+ "symbol": "â‚«"
+ },
+ "YER": {
+ "name": "i-Yemeni Rial",
+ "symbol": "YER"
+ },
+ "ZMW": {
+ "name": "i-Zambian Kwacha",
+ "symbol": "ZMW"
+ },
+ "SVC": {
+ "name": "SVC",
+ "symbol": "SVC"
+ },
+ "SSP": {
+ "name": "Upondo waseNingizimu Sudan",
+ "symbol": "SSP"
+ },
+ "ZWL": {
+ "name": "ZWL",
+ "symbol": "ZWL"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/language/af.json b/library/intl/resources/language/af.json
new file mode 100644
index 000000000..1b704362f
--- /dev/null
+++ b/library/intl/resources/language/af.json
@@ -0,0 +1,738 @@
+{
+ "af": {
+ "code": "af",
+ "name": "Afrikaans"
+ },
+ "agq": {
+ "code": "agq",
+ "name": "Aghem"
+ },
+ "ak": {
+ "code": "ak",
+ "name": "Akan"
+ },
+ "sq": {
+ "code": "sq",
+ "name": "Albanees"
+ },
+ "am": {
+ "code": "am",
+ "name": "Amharies"
+ },
+ "ar": {
+ "code": "ar",
+ "name": "Arabies"
+ },
+ "hy": {
+ "code": "hy",
+ "name": "Armeens"
+ },
+ "ast": {
+ "code": "ast",
+ "name": "Asturian"
+ },
+ "asa": {
+ "code": "asa",
+ "name": "Asu"
+ },
+ "az": {
+ "code": "az",
+ "name": "Azerbeidjans"
+ },
+ "ksf": {
+ "code": "ksf",
+ "name": "Bafia"
+ },
+ "bm": {
+ "code": "bm",
+ "name": "Bambara"
+ },
+ "bas": {
+ "code": "bas",
+ "name": "Basaa"
+ },
+ "eu": {
+ "code": "eu",
+ "name": "Baskies"
+ },
+ "bez": {
+ "code": "bez",
+ "name": "Bena"
+ },
+ "bn": {
+ "code": "bn",
+ "name": "Bengaals"
+ },
+ "my": {
+ "code": "my",
+ "name": "Birmaans"
+ },
+ "brx": {
+ "code": "brx",
+ "name": "Bodo"
+ },
+ "bs": {
+ "code": "bs",
+ "name": "Bosnies"
+ },
+ "br": {
+ "code": "br",
+ "name": "Bretons"
+ },
+ "bg": {
+ "code": "bg",
+ "name": "Bulgaars"
+ },
+ "chr": {
+ "code": "chr",
+ "name": "Cherokees"
+ },
+ "ksh": {
+ "code": "ksh",
+ "name": "Colognian"
+ },
+ "de-AT": {
+ "code": "de-AT",
+ "name": "de_AT"
+ },
+ "da": {
+ "code": "da",
+ "name": "Deens"
+ },
+ "de": {
+ "code": "de",
+ "name": "Duits"
+ },
+ "dz": {
+ "code": "dz",
+ "name": "Dzongkha"
+ },
+ "ebu": {
+ "code": "ebu",
+ "name": "Embu"
+ },
+ "en-AU": {
+ "code": "en-AU",
+ "name": "en_AU"
+ },
+ "en-CA": {
+ "code": "en-CA",
+ "name": "en_CA"
+ },
+ "en-GB": {
+ "code": "en-GB",
+ "name": "en_GB"
+ },
+ "en-US": {
+ "code": "en-US",
+ "name": "en_US"
+ },
+ "en": {
+ "code": "en",
+ "name": "Engels"
+ },
+ "es-ES": {
+ "code": "es-ES",
+ "name": "es_ES"
+ },
+ "es-MX": {
+ "code": "es-MX",
+ "name": "es_MX"
+ },
+ "eo": {
+ "code": "eo",
+ "name": "Esperanto"
+ },
+ "et": {
+ "code": "et",
+ "name": "Estnies"
+ },
+ "ee": {
+ "code": "ee",
+ "name": "Ewe"
+ },
+ "ewo": {
+ "code": "ewo",
+ "name": "Ewondo"
+ },
+ "fo": {
+ "code": "fo",
+ "name": "Faroees"
+ },
+ "fil": {
+ "code": "fil",
+ "name": "Filippyns"
+ },
+ "fi": {
+ "code": "fi",
+ "name": "Fins"
+ },
+ "fr-CA": {
+ "code": "fr-CA",
+ "name": "fr_CA"
+ },
+ "fr-CH": {
+ "code": "fr-CH",
+ "name": "fr_CH"
+ },
+ "fr": {
+ "code": "fr",
+ "name": "Frans"
+ },
+ "fur": {
+ "code": "fur",
+ "name": "Friulian"
+ },
+ "ff": {
+ "code": "ff",
+ "name": "Fulah"
+ },
+ "gl": {
+ "code": "gl",
+ "name": "Galisies"
+ },
+ "lg": {
+ "code": "lg",
+ "name": "Ganda"
+ },
+ "ka": {
+ "code": "ka",
+ "name": "Georgies"
+ },
+ "gu": {
+ "code": "gu",
+ "name": "Goedjarati"
+ },
+ "el": {
+ "code": "el",
+ "name": "Grieks"
+ },
+ "guz": {
+ "code": "guz",
+ "name": "Gusii"
+ },
+ "ha": {
+ "code": "ha",
+ "name": "Hausa"
+ },
+ "he": {
+ "code": "he",
+ "name": "Hebreeus"
+ },
+ "hi": {
+ "code": "hi",
+ "name": "Hindi"
+ },
+ "hu": {
+ "code": "hu",
+ "name": "Hongaars"
+ },
+ "hsb": {
+ "code": "hsb",
+ "name": "Hoog-Sorbies"
+ },
+ "ga": {
+ "code": "ga",
+ "name": "Iers"
+ },
+ "id": {
+ "code": "id",
+ "name": "Indonesies"
+ },
+ "it": {
+ "code": "it",
+ "name": "Italiaans"
+ },
+ "ja": {
+ "code": "ja",
+ "name": "Japannees"
+ },
+ "dyo": {
+ "code": "dyo",
+ "name": "Jola-Fonyi"
+ },
+ "kea": {
+ "code": "kea",
+ "name": "Kabuverdianu"
+ },
+ "kab": {
+ "code": "kab",
+ "name": "Kabyle"
+ },
+ "kl": {
+ "code": "kl",
+ "name": "Kalaallisut"
+ },
+ "kln": {
+ "code": "kln",
+ "name": "Kalenjin"
+ },
+ "kam": {
+ "code": "kam",
+ "name": "Kamba"
+ },
+ "kn": {
+ "code": "kn",
+ "name": "Kannada"
+ },
+ "ks": {
+ "code": "ks",
+ "name": "Kasjmirs"
+ },
+ "ca": {
+ "code": "ca",
+ "name": "Katalaans"
+ },
+ "kk": {
+ "code": "kk",
+ "name": "Kazaks"
+ },
+ "km": {
+ "code": "km",
+ "name": "Khmer"
+ },
+ "ki": {
+ "code": "ki",
+ "name": "Kikuyu"
+ },
+ "ky": {
+ "code": "ky",
+ "name": "Kirgisies"
+ },
+ "ko": {
+ "code": "ko",
+ "name": "Koreaans"
+ },
+ "khq": {
+ "code": "khq",
+ "name": "Koyra Chiini"
+ },
+ "ses": {
+ "code": "ses",
+ "name": "Koyraboro Senni"
+ },
+ "hr": {
+ "code": "hr",
+ "name": "Kroaties"
+ },
+ "nmg": {
+ "code": "nmg",
+ "name": "Kwasio"
+ },
+ "dsb": {
+ "code": "dsb",
+ "name": "Lae Sorbies"
+ },
+ "lag": {
+ "code": "lag",
+ "name": "Langi"
+ },
+ "lo": {
+ "code": "lo",
+ "name": "Lao"
+ },
+ "lv": {
+ "code": "lv",
+ "name": "Letties"
+ },
+ "ln": {
+ "code": "ln",
+ "name": "Lingaals"
+ },
+ "lt": {
+ "code": "lt",
+ "name": "Litaus"
+ },
+ "lu": {
+ "code": "lu",
+ "name": "Luba-Katanga"
+ },
+ "luo": {
+ "code": "luo",
+ "name": "Luo"
+ },
+ "lb": {
+ "code": "lb",
+ "name": "Luxemburgs"
+ },
+ "luy": {
+ "code": "luy",
+ "name": "Luyia"
+ },
+ "jmc": {
+ "code": "jmc",
+ "name": "Machame"
+ },
+ "mgh": {
+ "code": "mgh",
+ "name": "Makhuwa-Meetto"
+ },
+ "kde": {
+ "code": "kde",
+ "name": "Makonde"
+ },
+ "ml": {
+ "code": "ml",
+ "name": "Malabaars"
+ },
+ "ms": {
+ "code": "ms",
+ "name": "Maleis"
+ },
+ "mg": {
+ "code": "mg",
+ "name": "Malgassies"
+ },
+ "mt": {
+ "code": "mt",
+ "name": "Maltees"
+ },
+ "mr": {
+ "code": "mr",
+ "name": "Marathi"
+ },
+ "mas": {
+ "code": "mas",
+ "name": "Masai"
+ },
+ "mk": {
+ "code": "mk",
+ "name": "Masedonies"
+ },
+ "mer": {
+ "code": "mer",
+ "name": "Meru"
+ },
+ "ar-001": {
+ "code": "ar-001",
+ "name": "Moderne Standaard Arabies"
+ },
+ "ro-MD": {
+ "code": "ro-MD",
+ "name": "Moldawies"
+ },
+ "mn": {
+ "code": "mn",
+ "name": "Mongools"
+ },
+ "mfe": {
+ "code": "mfe",
+ "name": "Morisjen"
+ },
+ "mua": {
+ "code": "mua",
+ "name": "Mundang"
+ },
+ "naq": {
+ "code": "naq",
+ "name": "Nama"
+ },
+ "nl": {
+ "code": "nl",
+ "name": "Nederlands"
+ },
+ "ne": {
+ "code": "ne",
+ "name": "Nepalees"
+ },
+ "jgo": {
+ "code": "jgo",
+ "name": "Ngomba"
+ },
+ "nd": {
+ "code": "nd",
+ "name": "Noord-Ndebele"
+ },
+ "se": {
+ "code": "se",
+ "name": "Noordelike Sami"
+ },
+ "nb": {
+ "code": "nb",
+ "name": "Noorse Bokmål"
+ },
+ "nn": {
+ "code": "nn",
+ "name": "Noorweegse Nynorsk"
+ },
+ "nus": {
+ "code": "nus",
+ "name": "Nuer"
+ },
+ "nyn": {
+ "code": "nyn",
+ "name": "Nyankole"
+ },
+ "uk": {
+ "code": "uk",
+ "name": "Oekraïens"
+ },
+ "ur": {
+ "code": "ur",
+ "name": "Oerdoe"
+ },
+ "uz": {
+ "code": "uz",
+ "name": "Oezbeeks"
+ },
+ "or": {
+ "code": "or",
+ "name": "Oriya"
+ },
+ "pa": {
+ "code": "pa",
+ "name": "Pandjabi"
+ },
+ "ps": {
+ "code": "ps",
+ "name": "Pasjto"
+ },
+ "fa": {
+ "code": "fa",
+ "name": "Persies"
+ },
+ "pl": {
+ "code": "pl",
+ "name": "Pools"
+ },
+ "pt": {
+ "code": "pt",
+ "name": "Portugees"
+ },
+ "pt-BR": {
+ "code": "pt-BR",
+ "name": "pt_BR"
+ },
+ "pt-PT": {
+ "code": "pt-PT",
+ "name": "pt_PT"
+ },
+ "rm": {
+ "code": "rm",
+ "name": "Reto-Romaans"
+ },
+ "ro": {
+ "code": "ro",
+ "name": "Roemeens"
+ },
+ "rof": {
+ "code": "rof",
+ "name": "Rombo"
+ },
+ "rn": {
+ "code": "rn",
+ "name": "Rundi"
+ },
+ "ru": {
+ "code": "ru",
+ "name": "Russies"
+ },
+ "rwk": {
+ "code": "rwk",
+ "name": "Rwa"
+ },
+ "saq": {
+ "code": "saq",
+ "name": "Samburu"
+ },
+ "sg": {
+ "code": "sg",
+ "name": "Sango"
+ },
+ "sbp": {
+ "code": "sbp",
+ "name": "Sangu"
+ },
+ "seh": {
+ "code": "seh",
+ "name": "Sena"
+ },
+ "tzm": {
+ "code": "tzm",
+ "name": "Sentraal Atlas Tamazight"
+ },
+ "sr": {
+ "code": "sr",
+ "name": "Serwies"
+ },
+ "ksb": {
+ "code": "ksb",
+ "name": "Shambala"
+ },
+ "sn": {
+ "code": "sn",
+ "name": "Shona"
+ },
+ "si": {
+ "code": "si",
+ "name": "Sinhala"
+ },
+ "cgg": {
+ "code": "cgg",
+ "name": "Sjiga"
+ },
+ "zh": {
+ "code": "zh",
+ "name": "Sjinees"
+ },
+ "gd": {
+ "code": "gd",
+ "name": "Skotse Gallies"
+ },
+ "sk": {
+ "code": "sk",
+ "name": "Slowaaks"
+ },
+ "sl": {
+ "code": "sl",
+ "name": "Sloweens"
+ },
+ "xog": {
+ "code": "xog",
+ "name": "Soga"
+ },
+ "so": {
+ "code": "so",
+ "name": "Somalies"
+ },
+ "es": {
+ "code": "es",
+ "name": "Spaans"
+ },
+ "zgh": {
+ "code": "zgh",
+ "name": "Standaard Marokkaanse Tamazight"
+ },
+ "sw": {
+ "code": "sw",
+ "name": "Swahili"
+ },
+ "swc": {
+ "code": "swc",
+ "name": "Swahili (Kongo)"
+ },
+ "sv": {
+ "code": "sv",
+ "name": "Sweeds"
+ },
+ "gsw": {
+ "code": "gsw",
+ "name": "Switserse Duits"
+ },
+ "de-CH": {
+ "code": "de-CH",
+ "name": "Switserse hoog-Duits"
+ },
+ "shi": {
+ "code": "shi",
+ "name": "Tachelhit"
+ },
+ "dav": {
+ "code": "dav",
+ "name": "Taita"
+ },
+ "ta": {
+ "code": "ta",
+ "name": "Tamil"
+ },
+ "twq": {
+ "code": "twq",
+ "name": "Tasawaq"
+ },
+ "te": {
+ "code": "te",
+ "name": "Telugu"
+ },
+ "teo": {
+ "code": "teo",
+ "name": "Teso"
+ },
+ "th": {
+ "code": "th",
+ "name": "Thai"
+ },
+ "bo": {
+ "code": "bo",
+ "name": "Tibettaans"
+ },
+ "ti": {
+ "code": "ti",
+ "name": "Tigrinya"
+ },
+ "to": {
+ "code": "to",
+ "name": "Tongaans"
+ },
+ "cs": {
+ "code": "cs",
+ "name": "Tsjeggies"
+ },
+ "tr": {
+ "code": "tr",
+ "name": "Turks"
+ },
+ "ug": {
+ "code": "ug",
+ "name": "Uighur"
+ },
+ "vai": {
+ "code": "vai",
+ "name": "Vai"
+ },
+ "vi": {
+ "code": "vi",
+ "name": "Viëtnamees"
+ },
+ "nl-BE": {
+ "code": "nl-BE",
+ "name": "Vlaams"
+ },
+ "vun": {
+ "code": "vun",
+ "name": "Vunjo"
+ },
+ "cy": {
+ "code": "cy",
+ "name": "Wallies"
+ },
+ "wae": {
+ "code": "wae",
+ "name": "Walser"
+ },
+ "fy": {
+ "code": "fy",
+ "name": "Wes-Fries"
+ },
+ "be": {
+ "code": "be",
+ "name": "Wit-Russies"
+ },
+ "yav": {
+ "code": "yav",
+ "name": "Yangben"
+ },
+ "yo": {
+ "code": "yo",
+ "name": "Yoruba"
+ },
+ "is": {
+ "code": "is",
+ "name": "Yslands"
+ },
+ "dje": {
+ "code": "dje",
+ "name": "Zarma"
+ },
+ "zh-Hans": {
+ "code": "zh-Hans",
+ "name": "zh_Hans"
+ },
+ "zh-Hant": {
+ "code": "zh-Hant",
+ "name": "zh_Hant"
+ },
+ "zu": {
+ "code": "zu",
+ "name": "Zoeloe"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/language/agq.json b/library/intl/resources/language/agq.json
new file mode 100644
index 000000000..fcd1c1c03
--- /dev/null
+++ b/library/intl/resources/language/agq.json
@@ -0,0 +1,738 @@
+{
+ "af": {
+ "code": "af",
+ "name": "Afrikaans"
+ },
+ "agq": {
+ "code": "agq",
+ "name": "Aghem"
+ },
+ "ak": {
+ "code": "ak",
+ "name": "Akan"
+ },
+ "ar": {
+ "code": "ar",
+ "name": "Àlabì"
+ },
+ "sq": {
+ "code": "sq",
+ "name": "Albanian"
+ },
+ "am": {
+ "code": "am",
+ "name": "Àmalì"
+ },
+ "ar-001": {
+ "code": "ar-001",
+ "name": "ar_001"
+ },
+ "hy": {
+ "code": "hy",
+ "name": "Armenian"
+ },
+ "ast": {
+ "code": "ast",
+ "name": "Asturian"
+ },
+ "asa": {
+ "code": "asa",
+ "name": "Asu"
+ },
+ "az": {
+ "code": "az",
+ "name": "Azerbaijani"
+ },
+ "ksf": {
+ "code": "ksf",
+ "name": "Bafia"
+ },
+ "bm": {
+ "code": "bm",
+ "name": "Bambara"
+ },
+ "bas": {
+ "code": "bas",
+ "name": "Basaa"
+ },
+ "eu": {
+ "code": "eu",
+ "name": "Basque"
+ },
+ "bez": {
+ "code": "bez",
+ "name": "Bena"
+ },
+ "be": {
+ "code": "be",
+ "name": "Bɛ̀làlusàn"
+ },
+ "bn": {
+ "code": "bn",
+ "name": "Bɨ̀ŋgalì"
+ },
+ "brx": {
+ "code": "brx",
+ "name": "Bodo"
+ },
+ "bs": {
+ "code": "bs",
+ "name": "Bosnian"
+ },
+ "br": {
+ "code": "br",
+ "name": "Breton"
+ },
+ "bg": {
+ "code": "bg",
+ "name": "Bùugɨlìa"
+ },
+ "my": {
+ "code": "my",
+ "name": "Bùumɛsɛ̀"
+ },
+ "ca": {
+ "code": "ca",
+ "name": "Catalan"
+ },
+ "tzm": {
+ "code": "tzm",
+ "name": "Central Atlas Tamazight"
+ },
+ "zh": {
+ "code": "zh",
+ "name": "Chàenê"
+ },
+ "chr": {
+ "code": "chr",
+ "name": "Cherokee"
+ },
+ "cs": {
+ "code": "cs",
+ "name": "Chɛ̂"
+ },
+ "cgg": {
+ "code": "cgg",
+ "name": "Chiga"
+ },
+ "ksh": {
+ "code": "ksh",
+ "name": "Colognian"
+ },
+ "swc": {
+ "code": "swc",
+ "name": "Congo Swahili"
+ },
+ "hr": {
+ "code": "hr",
+ "name": "Croatian"
+ },
+ "da": {
+ "code": "da",
+ "name": "Danish"
+ },
+ "de-AT": {
+ "code": "de-AT",
+ "name": "de_AT"
+ },
+ "de-CH": {
+ "code": "de-CH",
+ "name": "de_CH"
+ },
+ "nl": {
+ "code": "nl",
+ "name": "Dɔ̂s"
+ },
+ "ja": {
+ "code": "ja",
+ "name": "Dzàkpànê"
+ },
+ "de": {
+ "code": "de",
+ "name": "Dzamɛ̀"
+ },
+ "dz": {
+ "code": "dz",
+ "name": "Dzongkha"
+ },
+ "ebu": {
+ "code": "ebu",
+ "name": "Embu"
+ },
+ "en-AU": {
+ "code": "en-AU",
+ "name": "en_AU"
+ },
+ "en-CA": {
+ "code": "en-CA",
+ "name": "en_CA"
+ },
+ "en-GB": {
+ "code": "en-GB",
+ "name": "en_GB"
+ },
+ "en-US": {
+ "code": "en-US",
+ "name": "en_US"
+ },
+ "hi": {
+ "code": "hi",
+ "name": "Endì"
+ },
+ "id": {
+ "code": "id",
+ "name": "Èndònɛshìa"
+ },
+ "es-ES": {
+ "code": "es-ES",
+ "name": "es_ES"
+ },
+ "es-MX": {
+ "code": "es-MX",
+ "name": "es_MX"
+ },
+ "eo": {
+ "code": "eo",
+ "name": "Esperanto"
+ },
+ "et": {
+ "code": "et",
+ "name": "Estonian"
+ },
+ "it": {
+ "code": "it",
+ "name": "Ètalìa"
+ },
+ "ee": {
+ "code": "ee",
+ "name": "Ewe"
+ },
+ "ewo": {
+ "code": "ewo",
+ "name": "Ewondo"
+ },
+ "fo": {
+ "code": "fo",
+ "name": "Faroese"
+ },
+ "fil": {
+ "code": "fil",
+ "name": "Filipino"
+ },
+ "fi": {
+ "code": "fi",
+ "name": "Finnish"
+ },
+ "fr-CA": {
+ "code": "fr-CA",
+ "name": "fr_CA"
+ },
+ "fr-CH": {
+ "code": "fr-CH",
+ "name": "fr_CH"
+ },
+ "fur": {
+ "code": "fur",
+ "name": "Friulian"
+ },
+ "ff": {
+ "code": "ff",
+ "name": "Fulah"
+ },
+ "gl": {
+ "code": "gl",
+ "name": "Galician"
+ },
+ "lg": {
+ "code": "lg",
+ "name": "Ganda"
+ },
+ "ka": {
+ "code": "ka",
+ "name": "Georgian"
+ },
+ "el": {
+ "code": "el",
+ "name": "Gɨ̀lêʔ"
+ },
+ "gu": {
+ "code": "gu",
+ "name": "Gujarati"
+ },
+ "guz": {
+ "code": "guz",
+ "name": "Gusii"
+ },
+ "he": {
+ "code": "he",
+ "name": "Hebrew"
+ },
+ "hu": {
+ "code": "hu",
+ "name": "Hɔŋgalìa"
+ },
+ "is": {
+ "code": "is",
+ "name": "Icelandic"
+ },
+ "ga": {
+ "code": "ga",
+ "name": "Irish"
+ },
+ "dyo": {
+ "code": "dyo",
+ "name": "Jola-Fonyi"
+ },
+ "kea": {
+ "code": "kea",
+ "name": "Kabuverdianu"
+ },
+ "kab": {
+ "code": "kab",
+ "name": "Kabyle"
+ },
+ "kl": {
+ "code": "kl",
+ "name": "Kalaallisut"
+ },
+ "kln": {
+ "code": "kln",
+ "name": "Kalenjin"
+ },
+ "kam": {
+ "code": "kam",
+ "name": "Kamba"
+ },
+ "kn": {
+ "code": "kn",
+ "name": "Kannada"
+ },
+ "ks": {
+ "code": "ks",
+ "name": "Kashmiri"
+ },
+ "kk": {
+ "code": "kk",
+ "name": "Kazakh"
+ },
+ "ki": {
+ "code": "ki",
+ "name": "Kikuyu"
+ },
+ "fr": {
+ "code": "fr",
+ "name": "Kɨ̀fàlàŋsi"
+ },
+ "km": {
+ "code": "km",
+ "name": "Kɨmɛ̀"
+ },
+ "en": {
+ "code": "en",
+ "name": "Kɨŋgele"
+ },
+ "ha": {
+ "code": "ha",
+ "name": "Kɨtsɔŋkaŋ"
+ },
+ "khq": {
+ "code": "khq",
+ "name": "Koyra Chiini"
+ },
+ "ses": {
+ "code": "ses",
+ "name": "Koyraboro Senni"
+ },
+ "fa": {
+ "code": "fa",
+ "name": "Kpɛɛshìa"
+ },
+ "pt": {
+ "code": "pt",
+ "name": "Kpotùwgîi"
+ },
+ "pl": {
+ "code": "pl",
+ "name": "Kpɔlìs"
+ },
+ "pa": {
+ "code": "pa",
+ "name": "Kpuwndzabì"
+ },
+ "ko": {
+ "code": "ko",
+ "name": "kùulîa"
+ },
+ "nmg": {
+ "code": "nmg",
+ "name": "Kwasio"
+ },
+ "ky": {
+ "code": "ky",
+ "name": "Kyrgyz"
+ },
+ "lag": {
+ "code": "lag",
+ "name": "Langi"
+ },
+ "lo": {
+ "code": "lo",
+ "name": "Lao"
+ },
+ "lv": {
+ "code": "lv",
+ "name": "Latvian"
+ },
+ "ln": {
+ "code": "ln",
+ "name": "Lingala"
+ },
+ "lt": {
+ "code": "lt",
+ "name": "Lithuanian"
+ },
+ "dsb": {
+ "code": "dsb",
+ "name": "Lower Sorbian"
+ },
+ "lu": {
+ "code": "lu",
+ "name": "Luba-Katanga"
+ },
+ "ro": {
+ "code": "ro",
+ "name": "Lùmanyìa"
+ },
+ "luo": {
+ "code": "luo",
+ "name": "Luo"
+ },
+ "ru": {
+ "code": "ru",
+ "name": "Lushìa"
+ },
+ "lb": {
+ "code": "lb",
+ "name": "Luxembourgish"
+ },
+ "luy": {
+ "code": "luy",
+ "name": "Luyia"
+ },
+ "mk": {
+ "code": "mk",
+ "name": "Macedonian"
+ },
+ "jmc": {
+ "code": "jmc",
+ "name": "Machame"
+ },
+ "mgh": {
+ "code": "mgh",
+ "name": "Makhuwa-Meetto"
+ },
+ "kde": {
+ "code": "kde",
+ "name": "Makonde"
+ },
+ "ms": {
+ "code": "ms",
+ "name": "Màlae"
+ },
+ "mg": {
+ "code": "mg",
+ "name": "Malagasy"
+ },
+ "ml": {
+ "code": "ml",
+ "name": "Malayalam"
+ },
+ "mt": {
+ "code": "mt",
+ "name": "Maltese"
+ },
+ "mr": {
+ "code": "mr",
+ "name": "Marathi"
+ },
+ "mas": {
+ "code": "mas",
+ "name": "Masai"
+ },
+ "mer": {
+ "code": "mer",
+ "name": "Meru"
+ },
+ "mn": {
+ "code": "mn",
+ "name": "Mongolian"
+ },
+ "mfe": {
+ "code": "mfe",
+ "name": "Morisyen"
+ },
+ "mua": {
+ "code": "mua",
+ "name": "Mundang"
+ },
+ "naq": {
+ "code": "naq",
+ "name": "Nama"
+ },
+ "ne": {
+ "code": "ne",
+ "name": "Nɛ̀kpalì"
+ },
+ "jgo": {
+ "code": "jgo",
+ "name": "Ngomba"
+ },
+ "nl-BE": {
+ "code": "nl-BE",
+ "name": "nl_BE"
+ },
+ "nd": {
+ "code": "nd",
+ "name": "North Ndebele"
+ },
+ "se": {
+ "code": "se",
+ "name": "Northern Sami"
+ },
+ "nb": {
+ "code": "nb",
+ "name": "Norwegian Bokmål"
+ },
+ "nn": {
+ "code": "nn",
+ "name": "Norwegian Nynorsk"
+ },
+ "nus": {
+ "code": "nus",
+ "name": "Nuer"
+ },
+ "nyn": {
+ "code": "nyn",
+ "name": "Nyankole"
+ },
+ "or": {
+ "code": "or",
+ "name": "Oriya"
+ },
+ "ps": {
+ "code": "ps",
+ "name": "Pashto"
+ },
+ "pt-BR": {
+ "code": "pt-BR",
+ "name": "pt_BR"
+ },
+ "pt-PT": {
+ "code": "pt-PT",
+ "name": "pt_PT"
+ },
+ "ro-MD": {
+ "code": "ro-MD",
+ "name": "ro_MD"
+ },
+ "rm": {
+ "code": "rm",
+ "name": "Romansh"
+ },
+ "rof": {
+ "code": "rof",
+ "name": "Rombo"
+ },
+ "rn": {
+ "code": "rn",
+ "name": "Rundi"
+ },
+ "rwk": {
+ "code": "rwk",
+ "name": "Rwa"
+ },
+ "saq": {
+ "code": "saq",
+ "name": "Samburu"
+ },
+ "sg": {
+ "code": "sg",
+ "name": "Sango"
+ },
+ "sbp": {
+ "code": "sbp",
+ "name": "Sangu"
+ },
+ "gd": {
+ "code": "gd",
+ "name": "Scottish Gaelic"
+ },
+ "seh": {
+ "code": "seh",
+ "name": "Sena"
+ },
+ "sr": {
+ "code": "sr",
+ "name": "Serbian"
+ },
+ "ksb": {
+ "code": "ksb",
+ "name": "Shambala"
+ },
+ "sn": {
+ "code": "sn",
+ "name": "Shona"
+ },
+ "si": {
+ "code": "si",
+ "name": "Sinhala"
+ },
+ "es": {
+ "code": "es",
+ "name": "Sɨ̀kpanìs"
+ },
+ "sk": {
+ "code": "sk",
+ "name": "Slovak"
+ },
+ "sl": {
+ "code": "sl",
+ "name": "Slovenian"
+ },
+ "xog": {
+ "code": "xog",
+ "name": "Soga"
+ },
+ "so": {
+ "code": "so",
+ "name": "Sòmalì"
+ },
+ "zgh": {
+ "code": "zgh",
+ "name": "Standard Moroccan Tamazight"
+ },
+ "sv": {
+ "code": "sv",
+ "name": "Suedìs"
+ },
+ "sw": {
+ "code": "sw",
+ "name": "Swahili"
+ },
+ "gsw": {
+ "code": "gsw",
+ "name": "Swiss German"
+ },
+ "shi": {
+ "code": "shi",
+ "name": "Tachelhit"
+ },
+ "th": {
+ "code": "th",
+ "name": "Tàe"
+ },
+ "dav": {
+ "code": "dav",
+ "name": "Taita"
+ },
+ "ta": {
+ "code": "ta",
+ "name": "Tamì"
+ },
+ "twq": {
+ "code": "twq",
+ "name": "Tasawaq"
+ },
+ "te": {
+ "code": "te",
+ "name": "Telugu"
+ },
+ "teo": {
+ "code": "teo",
+ "name": "Teso"
+ },
+ "bo": {
+ "code": "bo",
+ "name": "Tibetan"
+ },
+ "ti": {
+ "code": "ti",
+ "name": "Tigrinya"
+ },
+ "to": {
+ "code": "to",
+ "name": "Tongan"
+ },
+ "tr": {
+ "code": "tr",
+ "name": "Tʉʉkìs"
+ },
+ "uk": {
+ "code": "uk",
+ "name": "Ùkɛlɛnìa"
+ },
+ "hsb": {
+ "code": "hsb",
+ "name": "Upper Sorbian"
+ },
+ "ur": {
+ "code": "ur",
+ "name": "Uudùw"
+ },
+ "ug": {
+ "code": "ug",
+ "name": "Uyghur"
+ },
+ "uz": {
+ "code": "uz",
+ "name": "Uzbek"
+ },
+ "vai": {
+ "code": "vai",
+ "name": "Vai"
+ },
+ "vi": {
+ "code": "vi",
+ "name": "Vìyɛtnàmê"
+ },
+ "vun": {
+ "code": "vun",
+ "name": "Vunjo"
+ },
+ "wae": {
+ "code": "wae",
+ "name": "Walser"
+ },
+ "cy": {
+ "code": "cy",
+ "name": "Welsh"
+ },
+ "fy": {
+ "code": "fy",
+ "name": "Western Frisian"
+ },
+ "yav": {
+ "code": "yav",
+ "name": "Yangben"
+ },
+ "yo": {
+ "code": "yo",
+ "name": "Yulùba"
+ },
+ "dje": {
+ "code": "dje",
+ "name": "Zarma"
+ },
+ "zh-Hans": {
+ "code": "zh-Hans",
+ "name": "zh_Hans"
+ },
+ "zh-Hant": {
+ "code": "zh-Hant",
+ "name": "zh_Hant"
+ },
+ "zu": {
+ "code": "zu",
+ "name": "Zulù"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/language/ak.json b/library/intl/resources/language/ak.json
new file mode 100644
index 000000000..8cdc120a1
--- /dev/null
+++ b/library/intl/resources/language/ak.json
@@ -0,0 +1,738 @@
+{
+ "af": {
+ "code": "af",
+ "name": "Afrikaans"
+ },
+ "agq": {
+ "code": "agq",
+ "name": "Aghem"
+ },
+ "ak": {
+ "code": "ak",
+ "name": "Akan"
+ },
+ "sq": {
+ "code": "sq",
+ "name": "Albanian"
+ },
+ "am": {
+ "code": "am",
+ "name": "Amarik"
+ },
+ "ar-001": {
+ "code": "ar-001",
+ "name": "ar_001"
+ },
+ "ar": {
+ "code": "ar",
+ "name": "Arabik"
+ },
+ "hy": {
+ "code": "hy",
+ "name": "Armenian"
+ },
+ "ast": {
+ "code": "ast",
+ "name": "Asturian"
+ },
+ "asa": {
+ "code": "asa",
+ "name": "Asu"
+ },
+ "az": {
+ "code": "az",
+ "name": "Azerbaijani"
+ },
+ "ksf": {
+ "code": "ksf",
+ "name": "Bafia"
+ },
+ "bm": {
+ "code": "bm",
+ "name": "Bambara"
+ },
+ "bas": {
+ "code": "bas",
+ "name": "Basaa"
+ },
+ "eu": {
+ "code": "eu",
+ "name": "Basque"
+ },
+ "be": {
+ "code": "be",
+ "name": "Belarus kasa"
+ },
+ "bez": {
+ "code": "bez",
+ "name": "Bena"
+ },
+ "bn": {
+ "code": "bn",
+ "name": "Bengali kasa"
+ },
+ "my": {
+ "code": "my",
+ "name": "Bɛɛmis kasa"
+ },
+ "brx": {
+ "code": "brx",
+ "name": "Bodo"
+ },
+ "en": {
+ "code": "en",
+ "name": "Borɔfo"
+ },
+ "bs": {
+ "code": "bs",
+ "name": "Bosnian"
+ },
+ "bg": {
+ "code": "bg",
+ "name": "Bɔlgeria kasa"
+ },
+ "br": {
+ "code": "br",
+ "name": "Breton"
+ },
+ "ca": {
+ "code": "ca",
+ "name": "Catalan"
+ },
+ "tzm": {
+ "code": "tzm",
+ "name": "Central Atlas Tamazight"
+ },
+ "chr": {
+ "code": "chr",
+ "name": "Cherokee"
+ },
+ "cgg": {
+ "code": "cgg",
+ "name": "Chiga"
+ },
+ "ksh": {
+ "code": "ksh",
+ "name": "Colognian"
+ },
+ "swc": {
+ "code": "swc",
+ "name": "Congo Swahili"
+ },
+ "hr": {
+ "code": "hr",
+ "name": "Croatian"
+ },
+ "da": {
+ "code": "da",
+ "name": "Danish"
+ },
+ "de-AT": {
+ "code": "de-AT",
+ "name": "de_AT"
+ },
+ "de-CH": {
+ "code": "de-CH",
+ "name": "de_CH"
+ },
+ "nl": {
+ "code": "nl",
+ "name": "Dɛɛkye"
+ },
+ "dz": {
+ "code": "dz",
+ "name": "Dzongkha"
+ },
+ "ebu": {
+ "code": "ebu",
+ "name": "Embu"
+ },
+ "en-AU": {
+ "code": "en-AU",
+ "name": "en_AU"
+ },
+ "en-CA": {
+ "code": "en-CA",
+ "name": "en_CA"
+ },
+ "en-GB": {
+ "code": "en-GB",
+ "name": "en_GB"
+ },
+ "en-US": {
+ "code": "en-US",
+ "name": "en_US"
+ },
+ "es-ES": {
+ "code": "es-ES",
+ "name": "es_ES"
+ },
+ "es-MX": {
+ "code": "es-MX",
+ "name": "es_MX"
+ },
+ "eo": {
+ "code": "eo",
+ "name": "Esperanto"
+ },
+ "et": {
+ "code": "et",
+ "name": "Estonian"
+ },
+ "ee": {
+ "code": "ee",
+ "name": "Ewe"
+ },
+ "ewo": {
+ "code": "ewo",
+ "name": "Ewondo"
+ },
+ "fo": {
+ "code": "fo",
+ "name": "Faroese"
+ },
+ "fil": {
+ "code": "fil",
+ "name": "Filipino"
+ },
+ "fi": {
+ "code": "fi",
+ "name": "Finnish"
+ },
+ "fr-CA": {
+ "code": "fr-CA",
+ "name": "fr_CA"
+ },
+ "fr-CH": {
+ "code": "fr-CH",
+ "name": "fr_CH"
+ },
+ "fr": {
+ "code": "fr",
+ "name": "Frɛnkye"
+ },
+ "fur": {
+ "code": "fur",
+ "name": "Friulian"
+ },
+ "ff": {
+ "code": "ff",
+ "name": "Fulah"
+ },
+ "gl": {
+ "code": "gl",
+ "name": "Galician"
+ },
+ "lg": {
+ "code": "lg",
+ "name": "Ganda"
+ },
+ "ka": {
+ "code": "ka",
+ "name": "Georgian"
+ },
+ "el": {
+ "code": "el",
+ "name": "Greek kasa"
+ },
+ "gu": {
+ "code": "gu",
+ "name": "Gujarati"
+ },
+ "guz": {
+ "code": "guz",
+ "name": "Gusii"
+ },
+ "de": {
+ "code": "de",
+ "name": "Gyaaman"
+ },
+ "ja": {
+ "code": "ja",
+ "name": "Gyapan kasa"
+ },
+ "hu": {
+ "code": "hu",
+ "name": "Hangri kasa"
+ },
+ "ha": {
+ "code": "ha",
+ "name": "Hausa"
+ },
+ "he": {
+ "code": "he",
+ "name": "Hebrew"
+ },
+ "hi": {
+ "code": "hi",
+ "name": "Hindi"
+ },
+ "is": {
+ "code": "is",
+ "name": "Icelandic"
+ },
+ "id": {
+ "code": "id",
+ "name": "Indonihyia kasa"
+ },
+ "ga": {
+ "code": "ga",
+ "name": "Irish"
+ },
+ "it": {
+ "code": "it",
+ "name": "Italy kasa"
+ },
+ "dyo": {
+ "code": "dyo",
+ "name": "Jola-Fonyi"
+ },
+ "kea": {
+ "code": "kea",
+ "name": "Kabuverdianu"
+ },
+ "kab": {
+ "code": "kab",
+ "name": "Kabyle"
+ },
+ "kl": {
+ "code": "kl",
+ "name": "Kalaallisut"
+ },
+ "kln": {
+ "code": "kln",
+ "name": "Kalenjin"
+ },
+ "kam": {
+ "code": "kam",
+ "name": "Kamba"
+ },
+ "km": {
+ "code": "km",
+ "name": "Kambodia kasa"
+ },
+ "kn": {
+ "code": "kn",
+ "name": "Kannada"
+ },
+ "ks": {
+ "code": "ks",
+ "name": "Kashmiri"
+ },
+ "kk": {
+ "code": "kk",
+ "name": "Kazakh"
+ },
+ "ki": {
+ "code": "ki",
+ "name": "Kikuyu"
+ },
+ "ko": {
+ "code": "ko",
+ "name": "Korea kasa"
+ },
+ "khq": {
+ "code": "khq",
+ "name": "Koyra Chiini"
+ },
+ "ses": {
+ "code": "ses",
+ "name": "Koyraboro Senni"
+ },
+ "nmg": {
+ "code": "nmg",
+ "name": "Kwasio"
+ },
+ "zh": {
+ "code": "zh",
+ "name": "Kyaena kasa"
+ },
+ "cs": {
+ "code": "cs",
+ "name": "Kyɛk kasa"
+ },
+ "ky": {
+ "code": "ky",
+ "name": "Kyrgyz"
+ },
+ "lag": {
+ "code": "lag",
+ "name": "Langi"
+ },
+ "lo": {
+ "code": "lo",
+ "name": "Lao"
+ },
+ "lv": {
+ "code": "lv",
+ "name": "Latvian"
+ },
+ "ln": {
+ "code": "ln",
+ "name": "Lingala"
+ },
+ "lt": {
+ "code": "lt",
+ "name": "Lithuanian"
+ },
+ "dsb": {
+ "code": "dsb",
+ "name": "Lower Sorbian"
+ },
+ "lu": {
+ "code": "lu",
+ "name": "Luba-Katanga"
+ },
+ "luo": {
+ "code": "luo",
+ "name": "Luo"
+ },
+ "lb": {
+ "code": "lb",
+ "name": "Luxembourgish"
+ },
+ "luy": {
+ "code": "luy",
+ "name": "Luyia"
+ },
+ "mk": {
+ "code": "mk",
+ "name": "Macedonian"
+ },
+ "jmc": {
+ "code": "jmc",
+ "name": "Machame"
+ },
+ "mgh": {
+ "code": "mgh",
+ "name": "Makhuwa-Meetto"
+ },
+ "kde": {
+ "code": "kde",
+ "name": "Makonde"
+ },
+ "mg": {
+ "code": "mg",
+ "name": "Malagasy"
+ },
+ "ms": {
+ "code": "ms",
+ "name": "Malay kasa"
+ },
+ "ml": {
+ "code": "ml",
+ "name": "Malayalam"
+ },
+ "mt": {
+ "code": "mt",
+ "name": "Maltese"
+ },
+ "mr": {
+ "code": "mr",
+ "name": "Marathi"
+ },
+ "mas": {
+ "code": "mas",
+ "name": "Masai"
+ },
+ "mer": {
+ "code": "mer",
+ "name": "Meru"
+ },
+ "mn": {
+ "code": "mn",
+ "name": "Mongolian"
+ },
+ "mfe": {
+ "code": "mfe",
+ "name": "Morisyen"
+ },
+ "mua": {
+ "code": "mua",
+ "name": "Mundang"
+ },
+ "naq": {
+ "code": "naq",
+ "name": "Nama"
+ },
+ "ne": {
+ "code": "ne",
+ "name": "Nɛpal kasa"
+ },
+ "jgo": {
+ "code": "jgo",
+ "name": "Ngomba"
+ },
+ "nl-BE": {
+ "code": "nl-BE",
+ "name": "nl_BE"
+ },
+ "nd": {
+ "code": "nd",
+ "name": "North Ndebele"
+ },
+ "se": {
+ "code": "se",
+ "name": "Northern Sami"
+ },
+ "nb": {
+ "code": "nb",
+ "name": "Norwegian Bokmål"
+ },
+ "nn": {
+ "code": "nn",
+ "name": "Norwegian Nynorsk"
+ },
+ "nus": {
+ "code": "nus",
+ "name": "Nuer"
+ },
+ "nyn": {
+ "code": "nyn",
+ "name": "Nyankole"
+ },
+ "or": {
+ "code": "or",
+ "name": "Oriya"
+ },
+ "ps": {
+ "code": "ps",
+ "name": "Pashto"
+ },
+ "fa": {
+ "code": "fa",
+ "name": "Pɛɛhyia kasa"
+ },
+ "pl": {
+ "code": "pl",
+ "name": "Pɔland kasa"
+ },
+ "pt": {
+ "code": "pt",
+ "name": "Pɔɔtugal kasa"
+ },
+ "pt-BR": {
+ "code": "pt-BR",
+ "name": "pt_BR"
+ },
+ "pt-PT": {
+ "code": "pt-PT",
+ "name": "pt_PT"
+ },
+ "pa": {
+ "code": "pa",
+ "name": "Pungyabi kasa"
+ },
+ "ru": {
+ "code": "ru",
+ "name": "Rahyia kasa"
+ },
+ "ro-MD": {
+ "code": "ro-MD",
+ "name": "ro_MD"
+ },
+ "rm": {
+ "code": "rm",
+ "name": "Romansh"
+ },
+ "rof": {
+ "code": "rof",
+ "name": "Rombo"
+ },
+ "ro": {
+ "code": "ro",
+ "name": "Romenia kasa"
+ },
+ "rn": {
+ "code": "rn",
+ "name": "Rundi"
+ },
+ "rwk": {
+ "code": "rwk",
+ "name": "Rwa"
+ },
+ "saq": {
+ "code": "saq",
+ "name": "Samburu"
+ },
+ "sg": {
+ "code": "sg",
+ "name": "Sango"
+ },
+ "sbp": {
+ "code": "sbp",
+ "name": "Sangu"
+ },
+ "gd": {
+ "code": "gd",
+ "name": "Scottish Gaelic"
+ },
+ "seh": {
+ "code": "seh",
+ "name": "Sena"
+ },
+ "sr": {
+ "code": "sr",
+ "name": "Serbian"
+ },
+ "ksb": {
+ "code": "ksb",
+ "name": "Shambala"
+ },
+ "sn": {
+ "code": "sn",
+ "name": "Shona"
+ },
+ "si": {
+ "code": "si",
+ "name": "Sinhala"
+ },
+ "sk": {
+ "code": "sk",
+ "name": "Slovak"
+ },
+ "sl": {
+ "code": "sl",
+ "name": "Slovenian"
+ },
+ "xog": {
+ "code": "xog",
+ "name": "Soga"
+ },
+ "so": {
+ "code": "so",
+ "name": "Somalia kasa"
+ },
+ "es": {
+ "code": "es",
+ "name": "Spain kasa"
+ },
+ "zgh": {
+ "code": "zgh",
+ "name": "Standard Moroccan Tamazight"
+ },
+ "sw": {
+ "code": "sw",
+ "name": "Swahili"
+ },
+ "sv": {
+ "code": "sv",
+ "name": "Sweden kasa"
+ },
+ "gsw": {
+ "code": "gsw",
+ "name": "Swiss German"
+ },
+ "shi": {
+ "code": "shi",
+ "name": "Tachelhit"
+ },
+ "th": {
+ "code": "th",
+ "name": "Taeland kasa"
+ },
+ "dav": {
+ "code": "dav",
+ "name": "Taita"
+ },
+ "ta": {
+ "code": "ta",
+ "name": "Tamil kasa"
+ },
+ "twq": {
+ "code": "twq",
+ "name": "Tasawaq"
+ },
+ "te": {
+ "code": "te",
+ "name": "Telugu"
+ },
+ "teo": {
+ "code": "teo",
+ "name": "Teso"
+ },
+ "tr": {
+ "code": "tr",
+ "name": "Tɛɛki kasa"
+ },
+ "bo": {
+ "code": "bo",
+ "name": "Tibetan"
+ },
+ "ti": {
+ "code": "ti",
+ "name": "Tigrinya"
+ },
+ "to": {
+ "code": "to",
+ "name": "Tongan"
+ },
+ "uk": {
+ "code": "uk",
+ "name": "Ukren kasa"
+ },
+ "hsb": {
+ "code": "hsb",
+ "name": "Upper Sorbian"
+ },
+ "ur": {
+ "code": "ur",
+ "name": "Urdu kasa"
+ },
+ "ug": {
+ "code": "ug",
+ "name": "Uyghur"
+ },
+ "uz": {
+ "code": "uz",
+ "name": "Uzbek"
+ },
+ "vai": {
+ "code": "vai",
+ "name": "Vai"
+ },
+ "vi": {
+ "code": "vi",
+ "name": "Viɛtnam kasa"
+ },
+ "vun": {
+ "code": "vun",
+ "name": "Vunjo"
+ },
+ "wae": {
+ "code": "wae",
+ "name": "Walser"
+ },
+ "cy": {
+ "code": "cy",
+ "name": "Welsh"
+ },
+ "fy": {
+ "code": "fy",
+ "name": "Western Frisian"
+ },
+ "yav": {
+ "code": "yav",
+ "name": "Yangben"
+ },
+ "yo": {
+ "code": "yo",
+ "name": "Yoruba"
+ },
+ "dje": {
+ "code": "dje",
+ "name": "Zarma"
+ },
+ "zh-Hans": {
+ "code": "zh-Hans",
+ "name": "zh_Hans"
+ },
+ "zh-Hant": {
+ "code": "zh-Hant",
+ "name": "zh_Hant"
+ },
+ "zu": {
+ "code": "zu",
+ "name": "Zulu"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/language/am.json b/library/intl/resources/language/am.json
new file mode 100644
index 000000000..5c46a5c45
--- /dev/null
+++ b/library/intl/resources/language/am.json
@@ -0,0 +1,738 @@
+{
+ "ast": {
+ "code": "ast",
+ "name": "Asturian"
+ },
+ "bas": {
+ "code": "bas",
+ "name": "Basaa"
+ },
+ "ksh": {
+ "code": "ksh",
+ "name": "Colognian"
+ },
+ "es-MX": {
+ "code": "es-MX",
+ "name": "es_MX"
+ },
+ "ewo": {
+ "code": "ewo",
+ "name": "Ewondo"
+ },
+ "fur": {
+ "code": "fur",
+ "name": "Friulian"
+ },
+ "ff": {
+ "code": "ff",
+ "name": "Fulah"
+ },
+ "wae": {
+ "code": "wae",
+ "name": "Walser"
+ },
+ "yav": {
+ "code": "yav",
+ "name": "Yangben"
+ },
+ "hu": {
+ "code": "hu",
+ "name": "ሀንጋሪኛ"
+ },
+ "ha": {
+ "code": "ha",
+ "name": "ሃá‹áˆ³áŠ›"
+ },
+ "lu": {
+ "code": "lu",
+ "name": "ሉባ ካታንጋ"
+ },
+ "lt": {
+ "code": "lt",
+ "name": "ሉቴንያንኛ"
+ },
+ "luo": {
+ "code": "luo",
+ "name": "ሉኦ"
+ },
+ "lb": {
+ "code": "lb",
+ "name": "ሉክዘáˆá‰ áˆ­áŒˆáˆ­áŠ›"
+ },
+ "luy": {
+ "code": "luy",
+ "name": "ሉዪያ"
+ },
+ "ln": {
+ "code": "ln",
+ "name": "ሊንጋላኛ"
+ },
+ "lv": {
+ "code": "lv",
+ "name": "ላትቪያን"
+ },
+ "lag": {
+ "code": "lag",
+ "name": "ላንጊ"
+ },
+ "lo": {
+ "code": "lo",
+ "name": "ላá‹áˆµáŠ›"
+ },
+ "sq": {
+ "code": "sq",
+ "name": "áˆá‰¤áŠ’ኛ"
+ },
+ "hi": {
+ "code": "hi",
+ "name": "ሒንዱኛ"
+ },
+ "tzm": {
+ "code": "tzm",
+ "name": "መካከለኛ አትላስ ታማዚáŒá‰µ"
+ },
+ "zgh": {
+ "code": "zgh",
+ "name": "መደበኛ የሞሮኮ ታማዚáŒá‰µ"
+ },
+ "mua": {
+ "code": "mua",
+ "name": "ሙንዳንáŒ"
+ },
+ "ml": {
+ "code": "ml",
+ "name": "ማላያላáˆáŠ›"
+ },
+ "ms": {
+ "code": "ms",
+ "name": "ማላይኛ"
+ },
+ "mg": {
+ "code": "mg",
+ "name": "ማላጋስኛ"
+ },
+ "mt": {
+ "code": "mt",
+ "name": "ማáˆá‰²áˆµáŠ›"
+ },
+ "mr": {
+ "code": "mr",
+ "name": "ማራቲኛ"
+ },
+ "mas": {
+ "code": "mas",
+ "name": "ማሳይ"
+ },
+ "mk": {
+ "code": "mk",
+ "name": "ማሴዶንኛ"
+ },
+ "jmc": {
+ "code": "jmc",
+ "name": "ማቻሜኛ"
+ },
+ "mgh": {
+ "code": "mgh",
+ "name": "ማኩዋ ሜቶ"
+ },
+ "kde": {
+ "code": "kde",
+ "name": "ማኮንዴ"
+ },
+ "mer": {
+ "code": "mer",
+ "name": "ሜሩ"
+ },
+ "ro-MD": {
+ "code": "ro-MD",
+ "name": "ሞáˆá‹³á‰«á‹ŠáŠ“"
+ },
+ "mfe": {
+ "code": "mfe",
+ "name": "ሞሪሲየኛ"
+ },
+ "mn": {
+ "code": "mn",
+ "name": "ሞንጎላዊኛ"
+ },
+ "rn": {
+ "code": "rn",
+ "name": "ሩንዲኛ"
+ },
+ "ru": {
+ "code": "ru",
+ "name": "ራሽኛ"
+ },
+ "rwk": {
+ "code": "rwk",
+ "name": "ርዋ"
+ },
+ "ro": {
+ "code": "ro",
+ "name": "ሮማኒያን"
+ },
+ "rm": {
+ "code": "rm",
+ "name": "ሮማንሽ"
+ },
+ "rof": {
+ "code": "rof",
+ "name": "ሮáˆá‰¦"
+ },
+ "se": {
+ "code": "se",
+ "name": "ሰሜናዊ ሳሚ"
+ },
+ "nd": {
+ "code": "nd",
+ "name": "ሰሜን ንዴብሌ"
+ },
+ "sr": {
+ "code": "sr",
+ "name": "ሰርቢኛ"
+ },
+ "so": {
+ "code": "so",
+ "name": "ሱማáˆáŠ›"
+ },
+ "si": {
+ "code": "si",
+ "name": "ሲንሃáˆáŠ›"
+ },
+ "saq": {
+ "code": "saq",
+ "name": "ሳáˆá‰¡áˆ©"
+ },
+ "sbp": {
+ "code": "sbp",
+ "name": "ሳንጉ"
+ },
+ "sg": {
+ "code": "sg",
+ "name": "ሳንጎኛ"
+ },
+ "seh": {
+ "code": "seh",
+ "name": "ሴና"
+ },
+ "sl": {
+ "code": "sl",
+ "name": "ስሎቪኛ"
+ },
+ "sk": {
+ "code": "sk",
+ "name": "ስሎቫክኛ"
+ },
+ "sv": {
+ "code": "sv",
+ "name": "ስዊድንኛ"
+ },
+ "sw": {
+ "code": "sw",
+ "name": "ስዋሂሊኛ"
+ },
+ "es": {
+ "code": "es",
+ "name": "ስá“ኒሽ"
+ },
+ "xog": {
+ "code": "xog",
+ "name": "ሶጋ"
+ },
+ "ksb": {
+ "code": "ksb",
+ "name": "ሻáˆá‰£áˆ‹"
+ },
+ "sn": {
+ "code": "sn",
+ "name": "ሾናኛ"
+ },
+ "zh-Hans": {
+ "code": "zh-Hans",
+ "name": "ቀለሠያለ ቻይንኛ"
+ },
+ "bg": {
+ "code": "bg",
+ "name": "ቡáˆáŒ‹áˆªáŠ›"
+ },
+ "my": {
+ "code": "my",
+ "name": "ቡርማኛ"
+ },
+ "zh-Hant": {
+ "code": "zh-Hant",
+ "name": "ባህላዊ ቻይንኛ"
+ },
+ "bm": {
+ "code": "bm",
+ "name": "ባáˆá‰£áˆ­áŠ›"
+ },
+ "eu": {
+ "code": "eu",
+ "name": "ባስክኛ"
+ },
+ "ksf": {
+ "code": "ksf",
+ "name": "ባáŠá‹«"
+ },
+ "be": {
+ "code": "be",
+ "name": "ቤላራሻኛ"
+ },
+ "bez": {
+ "code": "bez",
+ "name": "ቤና"
+ },
+ "bn": {
+ "code": "bn",
+ "name": "ቤንጋሊኛ"
+ },
+ "br": {
+ "code": "br",
+ "name": "ብሬቶንኛ"
+ },
+ "bs": {
+ "code": "bs",
+ "name": "ቦስኒያንኛ"
+ },
+ "brx": {
+ "code": "brx",
+ "name": "ቦዶ"
+ },
+ "vun": {
+ "code": "vun",
+ "name": "ቩንጆ"
+ },
+ "vi": {
+ "code": "vi",
+ "name": "ቪትናáˆáŠ›"
+ },
+ "vai": {
+ "code": "vai",
+ "name": "ቫይ"
+ },
+ "te": {
+ "code": "te",
+ "name": "ተሉጉኛ"
+ },
+ "tr": {
+ "code": "tr",
+ "name": "ቱርክኛ"
+ },
+ "bo": {
+ "code": "bo",
+ "name": "ቲቤታንኛ"
+ },
+ "ta": {
+ "code": "ta",
+ "name": "ታሚáˆáŠ›"
+ },
+ "twq": {
+ "code": "twq",
+ "name": "ታሳዋቅ"
+ },
+ "shi": {
+ "code": "shi",
+ "name": "ታቼáˆáˆ‚ት"
+ },
+ "dav": {
+ "code": "dav",
+ "name": "ታይታኛ"
+ },
+ "th": {
+ "code": "th",
+ "name": "ታይኛ"
+ },
+ "teo": {
+ "code": "teo",
+ "name": "ቴሶ"
+ },
+ "ti": {
+ "code": "ti",
+ "name": "ትáŒáˆ­áŠ›"
+ },
+ "to": {
+ "code": "to",
+ "name": "ቶንጋኛ"
+ },
+ "cgg": {
+ "code": "cgg",
+ "name": "ቺጋኛ"
+ },
+ "zh": {
+ "code": "zh",
+ "name": "ቻይንኛ"
+ },
+ "chr": {
+ "code": "chr",
+ "name": "ቼሮኬኛ"
+ },
+ "cs": {
+ "code": "cs",
+ "name": "ቼክኛ"
+ },
+ "nus": {
+ "code": "nus",
+ "name": "ኑዌር"
+ },
+ "nyn": {
+ "code": "nyn",
+ "name": "ኒያንኮáˆáŠ›"
+ },
+ "naq": {
+ "code": "naq",
+ "name": "ናማ"
+ },
+ "ne": {
+ "code": "ne",
+ "name": "ኔá“ሊኛ"
+ },
+ "jgo": {
+ "code": "jgo",
+ "name": "ንጎባኛ"
+ },
+ "am": {
+ "code": "am",
+ "name": "አማርኛ"
+ },
+ "hy": {
+ "code": "hy",
+ "name": "አርመናዊ"
+ },
+ "asa": {
+ "code": "asa",
+ "name": "አሱ"
+ },
+ "ak": {
+ "code": "ak",
+ "name": "አካንኛ"
+ },
+ "az": {
+ "code": "az",
+ "name": "አዘርባጃንኛ"
+ },
+ "ga": {
+ "code": "ga",
+ "name": "አይሪሽ"
+ },
+ "is": {
+ "code": "is",
+ "name": "አይስላንድኛ"
+ },
+ "agq": {
+ "code": "agq",
+ "name": "አገáˆ"
+ },
+ "af": {
+ "code": "af",
+ "name": "አáሪካንኛ"
+ },
+ "ur": {
+ "code": "ur",
+ "name": "ኡርዱኛ"
+ },
+ "ug": {
+ "code": "ug",
+ "name": "ኡዊáŒáˆáˆ­áŠ›"
+ },
+ "uz": {
+ "code": "uz",
+ "name": "ኡá‹á‰¤áŠ­áŠ›"
+ },
+ "et": {
+ "code": "et",
+ "name": "ኢስቶኒያንኛ"
+ },
+ "ebu": {
+ "code": "ebu",
+ "name": "ኢቦኛ"
+ },
+ "id": {
+ "code": "id",
+ "name": "ኢንዶኔዥኛ"
+ },
+ "ee": {
+ "code": "ee",
+ "name": "ኢዊ"
+ },
+ "eo": {
+ "code": "eo",
+ "name": "ኤስáራንቶ"
+ },
+ "gd": {
+ "code": "gd",
+ "name": "እስኮትስ ጌáˆáŠ­áŠ›"
+ },
+ "en": {
+ "code": "en",
+ "name": "እንáŒáˆŠá‹áŠ›"
+ },
+ "or": {
+ "code": "or",
+ "name": "ኦሪያኛ"
+ },
+ "ky": {
+ "code": "ky",
+ "name": "ኪርጊá‹áŠ›"
+ },
+ "ki": {
+ "code": "ki",
+ "name": "ኪኩዩ"
+ },
+ "kln": {
+ "code": "kln",
+ "name": "ካለንጂን"
+ },
+ "kl": {
+ "code": "kl",
+ "name": "ካላሊሱትኛ"
+ },
+ "kam": {
+ "code": "kam",
+ "name": "ካáˆá‰£"
+ },
+ "ks": {
+ "code": "ks",
+ "name": "ካሽሚርኛ"
+ },
+ "kea": {
+ "code": "kea",
+ "name": "ካቡቨርዲያኑ"
+ },
+ "kab": {
+ "code": "kab",
+ "name": "ካብይáˆ"
+ },
+ "ca": {
+ "code": "ca",
+ "name": "ካታላንኛ"
+ },
+ "kn": {
+ "code": "kn",
+ "name": "ካናዳኛ"
+ },
+ "kk": {
+ "code": "kk",
+ "name": "ካዛክኛ"
+ },
+ "km": {
+ "code": "km",
+ "name": "ክመርኛ ማእከላዊ"
+ },
+ "hr": {
+ "code": "hr",
+ "name": "ክሮሽያንኛ"
+ },
+ "nmg": {
+ "code": "nmg",
+ "name": "ክዋሲዮ"
+ },
+ "ko": {
+ "code": "ko",
+ "name": "ኮሪያኛ"
+ },
+ "swc": {
+ "code": "swc",
+ "name": "ኮንጎ ስዋሂሊ"
+ },
+ "khq": {
+ "code": "khq",
+ "name": "ኮይራ ቺኒ"
+ },
+ "ses": {
+ "code": "ses",
+ "name": "ኮይራቦሮ ሴኒ"
+ },
+ "cy": {
+ "code": "cy",
+ "name": "ወáˆáˆ½"
+ },
+ "ar": {
+ "code": "ar",
+ "name": "ዓረብኛ"
+ },
+ "he": {
+ "code": "he",
+ "name": "ዕብራስጥ"
+ },
+ "ar-001": {
+ "code": "ar-001",
+ "name": "ዘመናዊ መደበኛ ዓረብኛ"
+ },
+ "zu": {
+ "code": "zu",
+ "name": "ዙሉኛ"
+ },
+ "dje": {
+ "code": "dje",
+ "name": "ዛርማኛ"
+ },
+ "hsb": {
+ "code": "hsb",
+ "name": "የላይኛዠሶርቢያንኛ"
+ },
+ "fy": {
+ "code": "fy",
+ "name": "የáˆá‹•áˆ«á‰¥ áሪስኛ"
+ },
+ "de-CH": {
+ "code": "de-CH",
+ "name": "የስዊዠከáተኛ ጀርመንኛ"
+ },
+ "gsw": {
+ "code": "gsw",
+ "name": "የስዊዠጀርመን"
+ },
+ "fr-CH": {
+ "code": "fr-CH",
+ "name": "የስዊዠáˆáˆ¨áŠ•áˆ³á‹­áŠ›"
+ },
+ "en-GB": {
+ "code": "en-GB",
+ "name": "የብሪቲሽ እንáŒáˆŠá‹áŠ›"
+ },
+ "pt-BR": {
+ "code": "pt-BR",
+ "name": "የብራዚሠá–ርቹጋáˆáŠ›"
+ },
+ "dsb": {
+ "code": "dsb",
+ "name": "የታችኛዠሶርቢያንኛ"
+ },
+ "nb": {
+ "code": "nb",
+ "name": "የኖርዌይ ቦክማáˆ"
+ },
+ "nn": {
+ "code": "nn",
+ "name": "የኖርዌይ ናይኖርስክ"
+ },
+ "en-US": {
+ "code": "en-US",
+ "name": "የአሜሪካ እንáŒáˆŠá‹áŠ›"
+ },
+ "es-ES": {
+ "code": "es-ES",
+ "name": "የአá‹áˆ®á“ እስá“ንኛ"
+ },
+ "pt-PT": {
+ "code": "pt-PT",
+ "name": "የአá‹áˆ®á“ á–ርቹጋáˆáŠ›"
+ },
+ "en-AU": {
+ "code": "en-AU",
+ "name": "የአá‹áˆµá‰µáˆ«áˆŠá‹« እንáŒáˆŠá‹áŠ›"
+ },
+ "de-AT": {
+ "code": "de-AT",
+ "name": "የኦስትሪያ ጀርመን"
+ },
+ "en-CA": {
+ "code": "en-CA",
+ "name": "የካናዳ እንáŒáˆŠá‹áŠ›"
+ },
+ "fr-CA": {
+ "code": "fr-CA",
+ "name": "የካናዳ áˆáˆ¨áŠ•áˆ³á‹­áŠ›"
+ },
+ "uk": {
+ "code": "uk",
+ "name": "ዩክሬንኛ"
+ },
+ "yo": {
+ "code": "yo",
+ "name": "ዮሩባዊኛ"
+ },
+ "nl": {
+ "code": "nl",
+ "name": "ደች"
+ },
+ "da": {
+ "code": "da",
+ "name": "ዴኒሽ"
+ },
+ "dz": {
+ "code": "dz",
+ "name": "ድዞንáŒáŠ»áŠ›"
+ },
+ "de": {
+ "code": "de",
+ "name": "ጀርመን"
+ },
+ "ja": {
+ "code": "ja",
+ "name": "ጃá“ንኛ"
+ },
+ "dyo": {
+ "code": "dyo",
+ "name": "ጆላ áŽáŠ•á‹«áŠ›"
+ },
+ "ka": {
+ "code": "ka",
+ "name": "ጆርጂያን"
+ },
+ "guz": {
+ "code": "guz",
+ "name": "ጉስሊኛ"
+ },
+ "gu": {
+ "code": "gu",
+ "name": "ጉጃርቲኛ"
+ },
+ "gl": {
+ "code": "gl",
+ "name": "ጋሊሺያ"
+ },
+ "lg": {
+ "code": "lg",
+ "name": "ጋንዳኛ"
+ },
+ "el": {
+ "code": "el",
+ "name": "áŒáˆªáŠ­áŠ›"
+ },
+ "it": {
+ "code": "it",
+ "name": "ጣሊያንኛ"
+ },
+ "fr": {
+ "code": "fr",
+ "name": "áˆáˆ¨áŠ•áˆ³á‹­áŠ›"
+ },
+ "fil": {
+ "code": "fil",
+ "name": "áŠáˆŠá’ንኛ"
+ },
+ "fi": {
+ "code": "fi",
+ "name": "áŠáŠ’ሽ"
+ },
+ "fo": {
+ "code": "fo",
+ "name": "á‹áˆ®áŠ›"
+ },
+ "nl-BE": {
+ "code": "nl-BE",
+ "name": "áሌሚሽ"
+ },
+ "fa": {
+ "code": "fa",
+ "name": "áርሺያኛ"
+ },
+ "pa": {
+ "code": "pa",
+ "name": "á‘ንጃብኛ"
+ },
+ "ps": {
+ "code": "ps",
+ "name": "á“ሽቶኛ"
+ },
+ "pl": {
+ "code": "pl",
+ "name": "á–ሊሽኛ"
+ },
+ "pt": {
+ "code": "pt",
+ "name": "á–ርቹጋáˆáŠ›"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/language/ar-AE.json b/library/intl/resources/language/ar-AE.json
new file mode 100644
index 000000000..654a748e6
--- /dev/null
+++ b/library/intl/resources/language/ar-AE.json
@@ -0,0 +1,738 @@
+{
+ "ksh": {
+ "code": "ksh",
+ "name": "Colognian"
+ },
+ "es-MX": {
+ "code": "es-MX",
+ "name": "es_MX"
+ },
+ "wae": {
+ "code": "wae",
+ "name": "Walser"
+ },
+ "asa": {
+ "code": "asa",
+ "name": "آسو"
+ },
+ "ebu": {
+ "code": "ebu",
+ "name": "إمبو"
+ },
+ "az": {
+ "code": "az",
+ "name": "الأذربيجانية"
+ },
+ "ur": {
+ "code": "ur",
+ "name": "الأردية"
+ },
+ "hy": {
+ "code": "hy",
+ "name": "الأرمينية"
+ },
+ "ast": {
+ "code": "ast",
+ "name": "الأسترية"
+ },
+ "agq": {
+ "code": "agq",
+ "name": "الأغم"
+ },
+ "ug": {
+ "code": "ug",
+ "name": "الأغورية"
+ },
+ "af": {
+ "code": "af",
+ "name": "الأÙريقانية"
+ },
+ "ak": {
+ "code": "ak",
+ "name": "الأكانية"
+ },
+ "sq": {
+ "code": "sq",
+ "name": "الألبانية"
+ },
+ "de": {
+ "code": "de",
+ "name": "الألمانية"
+ },
+ "gsw": {
+ "code": "gsw",
+ "name": "الألمانية السويسرية"
+ },
+ "de-CH": {
+ "code": "de-CH",
+ "name": "الألمانية العليا السويسرية"
+ },
+ "de-AT": {
+ "code": "de-AT",
+ "name": "الألمانية النمساوية"
+ },
+ "tzm": {
+ "code": "tzm",
+ "name": "الأمازيغية وسط الأطلس"
+ },
+ "am": {
+ "code": "am",
+ "name": "الأمهرية"
+ },
+ "or": {
+ "code": "or",
+ "name": "الأورييا"
+ },
+ "uz": {
+ "code": "uz",
+ "name": "الأوزباكية"
+ },
+ "uk": {
+ "code": "uk",
+ "name": "الأوكرانية"
+ },
+ "ga": {
+ "code": "ga",
+ "name": "الأيرلندية"
+ },
+ "is": {
+ "code": "is",
+ "name": "الأيسلاندية"
+ },
+ "es": {
+ "code": "es",
+ "name": "الإسبانية"
+ },
+ "es-ES": {
+ "code": "es-ES",
+ "name": "الإسبانية الأوروبية"
+ },
+ "eo": {
+ "code": "eo",
+ "name": "الإسبرانتو"
+ },
+ "et": {
+ "code": "et",
+ "name": "الإستونية"
+ },
+ "en": {
+ "code": "en",
+ "name": "الإنجليزية"
+ },
+ "en-AU": {
+ "code": "en-AU",
+ "name": "الإنجليزية الأسترالية"
+ },
+ "en-GB": {
+ "code": "en-GB",
+ "name": "الإنجليزية البريطانية"
+ },
+ "en-CA": {
+ "code": "en-CA",
+ "name": "الإنجليزية الكندية"
+ },
+ "en-US": {
+ "code": "en-US",
+ "name": "الإنجليزية الولايات المتحدة"
+ },
+ "id": {
+ "code": "id",
+ "name": "الإندونيسية"
+ },
+ "it": {
+ "code": "it",
+ "name": "الإيطالية"
+ },
+ "ewo": {
+ "code": "ewo",
+ "name": "الإيوندو"
+ },
+ "ee": {
+ "code": "ee",
+ "name": "الإيوي"
+ },
+ "bas": {
+ "code": "bas",
+ "name": "الباسا"
+ },
+ "bm": {
+ "code": "bm",
+ "name": "البامبارا"
+ },
+ "pt": {
+ "code": "pt",
+ "name": "البرتغالية"
+ },
+ "pt-PT": {
+ "code": "pt-PT",
+ "name": "البرتغالية الأوروبية"
+ },
+ "pt-BR": {
+ "code": "pt-BR",
+ "name": "البرتغالية البرازيلية"
+ },
+ "br": {
+ "code": "br",
+ "name": "البريتونية"
+ },
+ "ps": {
+ "code": "ps",
+ "name": "البشتونية"
+ },
+ "bg": {
+ "code": "bg",
+ "name": "البلغارية"
+ },
+ "pa": {
+ "code": "pa",
+ "name": "البنجابية"
+ },
+ "bn": {
+ "code": "bn",
+ "name": "البنغالية"
+ },
+ "brx": {
+ "code": "brx",
+ "name": "البودو"
+ },
+ "my": {
+ "code": "my",
+ "name": "البورمية"
+ },
+ "bs": {
+ "code": "bs",
+ "name": "البوسنية"
+ },
+ "nb": {
+ "code": "nb",
+ "name": "البوكمالية النرويجية"
+ },
+ "pl": {
+ "code": "pl",
+ "name": "البولندية"
+ },
+ "be": {
+ "code": "be",
+ "name": "البيلوروسية"
+ },
+ "ta": {
+ "code": "ta",
+ "name": "التاميلية"
+ },
+ "th": {
+ "code": "th",
+ "name": "التايلاندية"
+ },
+ "bo": {
+ "code": "bo",
+ "name": "التبتية"
+ },
+ "tr": {
+ "code": "tr",
+ "name": "التركية"
+ },
+ "cs": {
+ "code": "cs",
+ "name": "التشيكية"
+ },
+ "zgh": {
+ "code": "zgh",
+ "name": "التمازيغية المغربية القياسية"
+ },
+ "to": {
+ "code": "to",
+ "name": "التونغية"
+ },
+ "ti": {
+ "code": "ti",
+ "name": "التيجرينيا"
+ },
+ "te": {
+ "code": "te",
+ "name": "التيلجو"
+ },
+ "gl": {
+ "code": "gl",
+ "name": "الجاليكية"
+ },
+ "lg": {
+ "code": "lg",
+ "name": "الجاندا"
+ },
+ "ka": {
+ "code": "ka",
+ "name": "الجورجية"
+ },
+ "km": {
+ "code": "km",
+ "name": "الخميرية"
+ },
+ "da": {
+ "code": "da",
+ "name": "الدانماركية"
+ },
+ "rn": {
+ "code": "rn",
+ "name": "الرندي"
+ },
+ "ru": {
+ "code": "ru",
+ "name": "الروسية"
+ },
+ "rm": {
+ "code": "rm",
+ "name": "الرومانشية"
+ },
+ "ro": {
+ "code": "ro",
+ "name": "الرومانية"
+ },
+ "dje": {
+ "code": "dje",
+ "name": "الزارمية"
+ },
+ "zu": {
+ "code": "zu",
+ "name": "الزولو"
+ },
+ "dz": {
+ "code": "dz",
+ "name": "الزونخاية"
+ },
+ "se": {
+ "code": "se",
+ "name": "السامي الشمالي"
+ },
+ "sg": {
+ "code": "sg",
+ "name": "السانجو"
+ },
+ "sk": {
+ "code": "sk",
+ "name": "السلوÙاكية"
+ },
+ "sl": {
+ "code": "sl",
+ "name": "السلوÙانية"
+ },
+ "si": {
+ "code": "si",
+ "name": "السنهالية"
+ },
+ "sw": {
+ "code": "sw",
+ "name": "السواحلية"
+ },
+ "sv": {
+ "code": "sv",
+ "name": "السويدية"
+ },
+ "sn": {
+ "code": "sn",
+ "name": "الشونا"
+ },
+ "chr": {
+ "code": "chr",
+ "name": "الشيروكي"
+ },
+ "sr": {
+ "code": "sr",
+ "name": "الصربية"
+ },
+ "dsb": {
+ "code": "dsb",
+ "name": "الصربية السÙلى"
+ },
+ "hsb": {
+ "code": "hsb",
+ "name": "الصربية العليا"
+ },
+ "so": {
+ "code": "so",
+ "name": "الصومالية"
+ },
+ "zh": {
+ "code": "zh",
+ "name": "الصينية"
+ },
+ "zh-Hant": {
+ "code": "zh-Hant",
+ "name": "الصينية التقليدية"
+ },
+ "zh-Hans": {
+ "code": "zh-Hans",
+ "name": "الصينية المبسطة"
+ },
+ "he": {
+ "code": "he",
+ "name": "العبرية"
+ },
+ "ar": {
+ "code": "ar",
+ "name": "العربية"
+ },
+ "ar-001": {
+ "code": "ar-001",
+ "name": "العربية الرسمية الحديثة"
+ },
+ "gu": {
+ "code": "gu",
+ "name": "الغوجاراتية"
+ },
+ "guz": {
+ "code": "guz",
+ "name": "الغيزية"
+ },
+ "gd": {
+ "code": "gd",
+ "name": "الغيلية الأسكتلندية"
+ },
+ "fa": {
+ "code": "fa",
+ "name": "الÙارسية"
+ },
+ "fo": {
+ "code": "fo",
+ "name": "الÙارويز"
+ },
+ "vai": {
+ "code": "vai",
+ "name": "الÙاي"
+ },
+ "fr": {
+ "code": "fr",
+ "name": "الÙرنسية"
+ },
+ "fr-CH": {
+ "code": "fr-CH",
+ "name": "الÙرنسية السويسرية"
+ },
+ "fr-CA": {
+ "code": "fr-CA",
+ "name": "الÙرنسية الكندية"
+ },
+ "fy": {
+ "code": "fy",
+ "name": "الÙريزيان"
+ },
+ "fur": {
+ "code": "fur",
+ "name": "الÙريلايان"
+ },
+ "fil": {
+ "code": "fil",
+ "name": "الÙلبينية"
+ },
+ "ff": {
+ "code": "ff",
+ "name": "الÙلة"
+ },
+ "nl-BE": {
+ "code": "nl-BE",
+ "name": "الÙلمنك"
+ },
+ "fi": {
+ "code": "fi",
+ "name": "الÙنلندية"
+ },
+ "vi": {
+ "code": "vi",
+ "name": "الÙيتنامية"
+ },
+ "kab": {
+ "code": "kab",
+ "name": "القبيلية"
+ },
+ "ky": {
+ "code": "ky",
+ "name": "القرغيزية"
+ },
+ "kk": {
+ "code": "kk",
+ "name": "الكازاخستانية"
+ },
+ "kl": {
+ "code": "kl",
+ "name": "الكالاليست"
+ },
+ "kam": {
+ "code": "kam",
+ "name": "الكامبا"
+ },
+ "kn": {
+ "code": "kn",
+ "name": "الكانادا"
+ },
+ "ca": {
+ "code": "ca",
+ "name": "الكتالانية"
+ },
+ "hr": {
+ "code": "hr",
+ "name": "الكرواتية"
+ },
+ "ks": {
+ "code": "ks",
+ "name": "الكشميرية"
+ },
+ "ko": {
+ "code": "ko",
+ "name": "الكورية"
+ },
+ "swc": {
+ "code": "swc",
+ "name": "الكونغو السواحلية"
+ },
+ "ki": {
+ "code": "ki",
+ "name": "الكيكيو"
+ },
+ "lv": {
+ "code": "lv",
+ "name": "اللاتÙية"
+ },
+ "lo": {
+ "code": "lo",
+ "name": "اللاوية"
+ },
+ "lu": {
+ "code": "lu",
+ "name": "اللبا-كاتانجا"
+ },
+ "lt": {
+ "code": "lt",
+ "name": "اللتوانية"
+ },
+ "luo": {
+ "code": "luo",
+ "name": "اللو"
+ },
+ "lb": {
+ "code": "lb",
+ "name": "اللوكسمبرجية"
+ },
+ "ln": {
+ "code": "ln",
+ "name": "اللينجالا"
+ },
+ "mr": {
+ "code": "mr",
+ "name": "الماراثي"
+ },
+ "mas": {
+ "code": "mas",
+ "name": "الماساي"
+ },
+ "mg": {
+ "code": "mg",
+ "name": "المالاجاشية"
+ },
+ "mt": {
+ "code": "mt",
+ "name": "المالطية"
+ },
+ "ml": {
+ "code": "ml",
+ "name": "الماليالام"
+ },
+ "mk": {
+ "code": "mk",
+ "name": "المقدونية"
+ },
+ "mn": {
+ "code": "mn",
+ "name": "المنغولية"
+ },
+ "mfe": {
+ "code": "mfe",
+ "name": "المورسيانية"
+ },
+ "ro-MD": {
+ "code": "ro-MD",
+ "name": "المولدوÙية"
+ },
+ "nd": {
+ "code": "nd",
+ "name": "النديبيل الشمالي"
+ },
+ "nus": {
+ "code": "nus",
+ "name": "النوير"
+ },
+ "nyn": {
+ "code": "nyn",
+ "name": "النيانكول"
+ },
+ "ne": {
+ "code": "ne",
+ "name": "النيبالية"
+ },
+ "nn": {
+ "code": "nn",
+ "name": "النينورسك النرويجي"
+ },
+ "hi": {
+ "code": "hi",
+ "name": "الهندية"
+ },
+ "hu": {
+ "code": "hu",
+ "name": "الهنغارية"
+ },
+ "ha": {
+ "code": "ha",
+ "name": "الهوسا"
+ },
+ "nl": {
+ "code": "nl",
+ "name": "الهولندية"
+ },
+ "cy": {
+ "code": "cy",
+ "name": "الولزية"
+ },
+ "ja": {
+ "code": "ja",
+ "name": "اليابانية"
+ },
+ "yo": {
+ "code": "yo",
+ "name": "اليوروبية"
+ },
+ "el": {
+ "code": "el",
+ "name": "اليونانية"
+ },
+ "ksf": {
+ "code": "ksf",
+ "name": "باÙيا"
+ },
+ "bez": {
+ "code": "bez",
+ "name": "بينا"
+ },
+ "twq": {
+ "code": "twq",
+ "name": "تاساواق"
+ },
+ "cgg": {
+ "code": "cgg",
+ "name": "تشيغا"
+ },
+ "shi": {
+ "code": "shi",
+ "name": "تكلحيت"
+ },
+ "dav": {
+ "code": "dav",
+ "name": "تيتا"
+ },
+ "teo": {
+ "code": "teo",
+ "name": "تيسو"
+ },
+ "dyo": {
+ "code": "dyo",
+ "name": "جولا Ùونيا"
+ },
+ "rwk": {
+ "code": "rwk",
+ "name": "روا"
+ },
+ "rof": {
+ "code": "rof",
+ "name": "رومبو"
+ },
+ "saq": {
+ "code": "saq",
+ "name": "سامبورو"
+ },
+ "sbp": {
+ "code": "sbp",
+ "name": "سانغو"
+ },
+ "xog": {
+ "code": "xog",
+ "name": "سوجا"
+ },
+ "seh": {
+ "code": "seh",
+ "name": "سينا"
+ },
+ "ksb": {
+ "code": "ksb",
+ "name": "شامبالا"
+ },
+ "vun": {
+ "code": "vun",
+ "name": "Ùونجو"
+ },
+ "kea": {
+ "code": "kea",
+ "name": "كابوÙيرديانو"
+ },
+ "kln": {
+ "code": "kln",
+ "name": "كالينجين"
+ },
+ "nmg": {
+ "code": "nmg",
+ "name": "كواسيو"
+ },
+ "khq": {
+ "code": "khq",
+ "name": "كويرا تشيني"
+ },
+ "ses": {
+ "code": "ses",
+ "name": "كويرابورو سيني"
+ },
+ "lag": {
+ "code": "lag",
+ "name": "لانجي"
+ },
+ "eu": {
+ "code": "eu",
+ "name": "لغة الباسك"
+ },
+ "ms": {
+ "code": "ms",
+ "name": "لغة الملايو"
+ },
+ "luy": {
+ "code": "luy",
+ "name": "لويا"
+ },
+ "jmc": {
+ "code": "jmc",
+ "name": "ماتشيم"
+ },
+ "mgh": {
+ "code": "mgh",
+ "name": "ماخاوا-ميتو"
+ },
+ "kde": {
+ "code": "kde",
+ "name": "ماكونده"
+ },
+ "mua": {
+ "code": "mua",
+ "name": "مندنج"
+ },
+ "mer": {
+ "code": "mer",
+ "name": "ميرو"
+ },
+ "naq": {
+ "code": "naq",
+ "name": "ناما"
+ },
+ "jgo": {
+ "code": "jgo",
+ "name": "نغومبا"
+ },
+ "yav": {
+ "code": "yav",
+ "name": "يانجبن"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/language/ar-EG.json b/library/intl/resources/language/ar-EG.json
new file mode 100644
index 000000000..030eee4c6
--- /dev/null
+++ b/library/intl/resources/language/ar-EG.json
@@ -0,0 +1,738 @@
+{
+ "ebu": {
+ "code": "ebu",
+ "name": "إمبو"
+ },
+ "asa": {
+ "code": "asa",
+ "name": "الآسو"
+ },
+ "az": {
+ "code": "az",
+ "name": "الأذربيجانية"
+ },
+ "ur": {
+ "code": "ur",
+ "name": "الأردية"
+ },
+ "hy": {
+ "code": "hy",
+ "name": "الأرمينية"
+ },
+ "ast": {
+ "code": "ast",
+ "name": "الأسترية"
+ },
+ "agq": {
+ "code": "agq",
+ "name": "الأغيمية"
+ },
+ "af": {
+ "code": "af",
+ "name": "الأÙريقانية"
+ },
+ "ak": {
+ "code": "ak",
+ "name": "الأكانية"
+ },
+ "sq": {
+ "code": "sq",
+ "name": "الألبانية"
+ },
+ "de": {
+ "code": "de",
+ "name": "الألمانية"
+ },
+ "gsw": {
+ "code": "gsw",
+ "name": "الألمانية السويسرية"
+ },
+ "de-CH": {
+ "code": "de-CH",
+ "name": "الألمانية العليا السويسرية"
+ },
+ "de-AT": {
+ "code": "de-AT",
+ "name": "الألمانية النمساوية"
+ },
+ "am": {
+ "code": "am",
+ "name": "الأمهرية"
+ },
+ "or": {
+ "code": "or",
+ "name": "الأورييا"
+ },
+ "uz": {
+ "code": "uz",
+ "name": "الأوزبكية"
+ },
+ "uk": {
+ "code": "uk",
+ "name": "الأوكرانية"
+ },
+ "ug": {
+ "code": "ug",
+ "name": "الأويغورية"
+ },
+ "ga": {
+ "code": "ga",
+ "name": "الأيرلندية"
+ },
+ "is": {
+ "code": "is",
+ "name": "الأيسلاندية"
+ },
+ "es": {
+ "code": "es",
+ "name": "الإسبانية"
+ },
+ "es-ES": {
+ "code": "es-ES",
+ "name": "الإسبانية الأوروبية"
+ },
+ "es-MX": {
+ "code": "es-MX",
+ "name": "الإسبانية المكسيكية"
+ },
+ "eo": {
+ "code": "eo",
+ "name": "الإسبرانتو"
+ },
+ "et": {
+ "code": "et",
+ "name": "الإستونية"
+ },
+ "en": {
+ "code": "en",
+ "name": "الإنجليزية"
+ },
+ "en-AU": {
+ "code": "en-AU",
+ "name": "الإنجليزية الأسترالية"
+ },
+ "en-GB": {
+ "code": "en-GB",
+ "name": "الإنجليزية البريطانية"
+ },
+ "en-CA": {
+ "code": "en-CA",
+ "name": "الإنجليزية الكندية"
+ },
+ "en-US": {
+ "code": "en-US",
+ "name": "الإنجليزية الولايات المتحدة"
+ },
+ "id": {
+ "code": "id",
+ "name": "الإندونيسية"
+ },
+ "it": {
+ "code": "it",
+ "name": "الإيطالية"
+ },
+ "ewo": {
+ "code": "ewo",
+ "name": "الإيوندو"
+ },
+ "ee": {
+ "code": "ee",
+ "name": "الإيوي"
+ },
+ "bas": {
+ "code": "bas",
+ "name": "الباسا"
+ },
+ "bm": {
+ "code": "bm",
+ "name": "البامبارا"
+ },
+ "pt": {
+ "code": "pt",
+ "name": "البرتغالية"
+ },
+ "pt-PT": {
+ "code": "pt-PT",
+ "name": "البرتغالية الأوروبية"
+ },
+ "pt-BR": {
+ "code": "pt-BR",
+ "name": "البرتغالية البرازيلية"
+ },
+ "br": {
+ "code": "br",
+ "name": "البريتونية"
+ },
+ "ps": {
+ "code": "ps",
+ "name": "البشتونية"
+ },
+ "bg": {
+ "code": "bg",
+ "name": "البلغارية"
+ },
+ "pa": {
+ "code": "pa",
+ "name": "البنجابية"
+ },
+ "bn": {
+ "code": "bn",
+ "name": "البنغالية"
+ },
+ "brx": {
+ "code": "brx",
+ "name": "البودو"
+ },
+ "my": {
+ "code": "my",
+ "name": "البورمية"
+ },
+ "bs": {
+ "code": "bs",
+ "name": "البوسنية"
+ },
+ "nb": {
+ "code": "nb",
+ "name": "البوكمالية النرويجية"
+ },
+ "pl": {
+ "code": "pl",
+ "name": "البولندية"
+ },
+ "be": {
+ "code": "be",
+ "name": "البيلاروسية"
+ },
+ "shi": {
+ "code": "shi",
+ "name": "التاشلحيت"
+ },
+ "ta": {
+ "code": "ta",
+ "name": "التاميلية"
+ },
+ "th": {
+ "code": "th",
+ "name": "التايلاندية"
+ },
+ "bo": {
+ "code": "bo",
+ "name": "التبتية"
+ },
+ "tr": {
+ "code": "tr",
+ "name": "التركية"
+ },
+ "cs": {
+ "code": "cs",
+ "name": "التشيكية"
+ },
+ "tzm": {
+ "code": "tzm",
+ "name": "التمازيغية الأوسط أطلسية"
+ },
+ "zgh": {
+ "code": "zgh",
+ "name": "التمازيغية المغربية القياسية"
+ },
+ "to": {
+ "code": "to",
+ "name": "التونغية"
+ },
+ "teo": {
+ "code": "teo",
+ "name": "التيزو"
+ },
+ "ti": {
+ "code": "ti",
+ "name": "التيغرينية"
+ },
+ "te": {
+ "code": "te",
+ "name": "التيلجو"
+ },
+ "gl": {
+ "code": "gl",
+ "name": "الجاليكية"
+ },
+ "lg": {
+ "code": "lg",
+ "name": "الجاندا"
+ },
+ "ka": {
+ "code": "ka",
+ "name": "الجورجية"
+ },
+ "km": {
+ "code": "km",
+ "name": "الخميرية"
+ },
+ "da": {
+ "code": "da",
+ "name": "الدنماركية"
+ },
+ "rn": {
+ "code": "rn",
+ "name": "الرندي"
+ },
+ "rwk": {
+ "code": "rwk",
+ "name": "الروا"
+ },
+ "ru": {
+ "code": "ru",
+ "name": "الروسية"
+ },
+ "rm": {
+ "code": "rm",
+ "name": "الرومانشية"
+ },
+ "ro": {
+ "code": "ro",
+ "name": "الرومانية"
+ },
+ "rof": {
+ "code": "rof",
+ "name": "الرومبو"
+ },
+ "dje": {
+ "code": "dje",
+ "name": "الزارمية"
+ },
+ "zu": {
+ "code": "zu",
+ "name": "الزولو"
+ },
+ "dz": {
+ "code": "dz",
+ "name": "الزونخاية"
+ },
+ "saq": {
+ "code": "saq",
+ "name": "السامبورو"
+ },
+ "se": {
+ "code": "se",
+ "name": "السامي الشمالي"
+ },
+ "sg": {
+ "code": "sg",
+ "name": "السانجو"
+ },
+ "sbp": {
+ "code": "sbp",
+ "name": "السانغو"
+ },
+ "sk": {
+ "code": "sk",
+ "name": "السلوÙاكية"
+ },
+ "sl": {
+ "code": "sl",
+ "name": "السلوÙانية"
+ },
+ "si": {
+ "code": "si",
+ "name": "السنهالية"
+ },
+ "sw": {
+ "code": "sw",
+ "name": "السواحلية"
+ },
+ "xog": {
+ "code": "xog",
+ "name": "السوغا"
+ },
+ "sv": {
+ "code": "sv",
+ "name": "السويدية"
+ },
+ "seh": {
+ "code": "seh",
+ "name": "السينا"
+ },
+ "ksb": {
+ "code": "ksb",
+ "name": "الشمبالاية"
+ },
+ "sn": {
+ "code": "sn",
+ "name": "الشونا"
+ },
+ "chr": {
+ "code": "chr",
+ "name": "الشيروكية"
+ },
+ "sr": {
+ "code": "sr",
+ "name": "الصربية"
+ },
+ "dsb": {
+ "code": "dsb",
+ "name": "الصربية السÙلى"
+ },
+ "hsb": {
+ "code": "hsb",
+ "name": "الصربية العليا"
+ },
+ "so": {
+ "code": "so",
+ "name": "الصومالية"
+ },
+ "zh": {
+ "code": "zh",
+ "name": "الصينية"
+ },
+ "zh-Hant": {
+ "code": "zh-Hant",
+ "name": "الصينية التقليدية"
+ },
+ "zh-Hans": {
+ "code": "zh-Hans",
+ "name": "الصينية المبسطة"
+ },
+ "he": {
+ "code": "he",
+ "name": "العبرية"
+ },
+ "ar": {
+ "code": "ar",
+ "name": "العربية"
+ },
+ "ar-001": {
+ "code": "ar-001",
+ "name": "العربية الرسمية الحديثة"
+ },
+ "gu": {
+ "code": "gu",
+ "name": "الغوجاراتية"
+ },
+ "guz": {
+ "code": "guz",
+ "name": "الغيزية"
+ },
+ "gd": {
+ "code": "gd",
+ "name": "الغيلية الأسكتلندية"
+ },
+ "fa": {
+ "code": "fa",
+ "name": "الÙارسية"
+ },
+ "fo": {
+ "code": "fo",
+ "name": "الÙارويز"
+ },
+ "vai": {
+ "code": "vai",
+ "name": "الÙاي"
+ },
+ "fr": {
+ "code": "fr",
+ "name": "الÙرنسية"
+ },
+ "fr-CH": {
+ "code": "fr-CH",
+ "name": "الÙرنسية السويسرية"
+ },
+ "fr-CA": {
+ "code": "fr-CA",
+ "name": "الÙرنسية الكندية"
+ },
+ "fy": {
+ "code": "fy",
+ "name": "الÙريزيان"
+ },
+ "fur": {
+ "code": "fur",
+ "name": "الÙريلايان"
+ },
+ "fil": {
+ "code": "fil",
+ "name": "الÙلبينية"
+ },
+ "ff": {
+ "code": "ff",
+ "name": "الÙلة"
+ },
+ "nl-BE": {
+ "code": "nl-BE",
+ "name": "الÙلمنكية"
+ },
+ "fi": {
+ "code": "fi",
+ "name": "الÙنلندية"
+ },
+ "vun": {
+ "code": "vun",
+ "name": "الÙونجو"
+ },
+ "vi": {
+ "code": "vi",
+ "name": "الÙيتنامية"
+ },
+ "kab": {
+ "code": "kab",
+ "name": "القبيلية"
+ },
+ "kea": {
+ "code": "kea",
+ "name": "الكابوÙيرديانيوية"
+ },
+ "kk": {
+ "code": "kk",
+ "name": "الكازاخستانية"
+ },
+ "kl": {
+ "code": "kl",
+ "name": "الكالاليست"
+ },
+ "kln": {
+ "code": "kln",
+ "name": "الكالينجينية"
+ },
+ "kam": {
+ "code": "kam",
+ "name": "الكامبا"
+ },
+ "kn": {
+ "code": "kn",
+ "name": "الكانادية"
+ },
+ "ca": {
+ "code": "ca",
+ "name": "الكتالانية"
+ },
+ "hr": {
+ "code": "hr",
+ "name": "الكرواتية"
+ },
+ "ks": {
+ "code": "ks",
+ "name": "الكشميرية"
+ },
+ "ko": {
+ "code": "ko",
+ "name": "الكورية"
+ },
+ "khq": {
+ "code": "khq",
+ "name": "الكورية التشينية"
+ },
+ "ky": {
+ "code": "ky",
+ "name": "الكيرغزستانية"
+ },
+ "ki": {
+ "code": "ki",
+ "name": "الكيكيو"
+ },
+ "lv": {
+ "code": "lv",
+ "name": "اللاتÙية"
+ },
+ "lag": {
+ "code": "lag",
+ "name": "اللانغية"
+ },
+ "lo": {
+ "code": "lo",
+ "name": "اللاوية"
+ },
+ "lu": {
+ "code": "lu",
+ "name": "اللبا-كاتانجا"
+ },
+ "lt": {
+ "code": "lt",
+ "name": "اللتوانية"
+ },
+ "luo": {
+ "code": "luo",
+ "name": "اللو"
+ },
+ "lb": {
+ "code": "lb",
+ "name": "اللوكسمبرجية"
+ },
+ "ln": {
+ "code": "ln",
+ "name": "اللينجالا"
+ },
+ "jmc": {
+ "code": "jmc",
+ "name": "الماتشامية"
+ },
+ "mr": {
+ "code": "mr",
+ "name": "الماراثية"
+ },
+ "mas": {
+ "code": "mas",
+ "name": "الماساي"
+ },
+ "kde": {
+ "code": "kde",
+ "name": "الماكوندية"
+ },
+ "mg": {
+ "code": "mg",
+ "name": "المالاجاشية"
+ },
+ "mt": {
+ "code": "mt",
+ "name": "المالطية"
+ },
+ "ml": {
+ "code": "ml",
+ "name": "الماليالام"
+ },
+ "mk": {
+ "code": "mk",
+ "name": "المقدونية"
+ },
+ "mn": {
+ "code": "mn",
+ "name": "المنغولية"
+ },
+ "mfe": {
+ "code": "mfe",
+ "name": "المورسيانية"
+ },
+ "ro-MD": {
+ "code": "ro-MD",
+ "name": "المولدوÙية"
+ },
+ "mer": {
+ "code": "mer",
+ "name": "الميرو"
+ },
+ "nd": {
+ "code": "nd",
+ "name": "النديبيل الشمالي"
+ },
+ "nus": {
+ "code": "nus",
+ "name": "النوير"
+ },
+ "nyn": {
+ "code": "nyn",
+ "name": "النيانكول"
+ },
+ "ne": {
+ "code": "ne",
+ "name": "النيبالية"
+ },
+ "nn": {
+ "code": "nn",
+ "name": "النينورسك النرويجي"
+ },
+ "hi": {
+ "code": "hi",
+ "name": "الهندية"
+ },
+ "hu": {
+ "code": "hu",
+ "name": "الهنغارية"
+ },
+ "ha": {
+ "code": "ha",
+ "name": "الهوسا"
+ },
+ "nl": {
+ "code": "nl",
+ "name": "الهولندية"
+ },
+ "wae": {
+ "code": "wae",
+ "name": "الوالسر"
+ },
+ "cy": {
+ "code": "cy",
+ "name": "الولشية"
+ },
+ "ja": {
+ "code": "ja",
+ "name": "اليابانية"
+ },
+ "yav": {
+ "code": "yav",
+ "name": "اليانغبين"
+ },
+ "yo": {
+ "code": "yo",
+ "name": "اليوروبية"
+ },
+ "el": {
+ "code": "el",
+ "name": "اليونانية"
+ },
+ "bez": {
+ "code": "bez",
+ "name": "بينا"
+ },
+ "cgg": {
+ "code": "cgg",
+ "name": "تشيغا"
+ },
+ "dav": {
+ "code": "dav",
+ "name": "تيتا"
+ },
+ "dyo": {
+ "code": "dyo",
+ "name": "جولا Ùونيا"
+ },
+ "eu": {
+ "code": "eu",
+ "name": "لغة الباسك"
+ },
+ "ksf": {
+ "code": "ksf",
+ "name": "لغة الباÙيا"
+ },
+ "twq": {
+ "code": "twq",
+ "name": "لغة التاساواك"
+ },
+ "nmg": {
+ "code": "nmg",
+ "name": "لغة الكواسيو"
+ },
+ "ses": {
+ "code": "ses",
+ "name": "لغة الكوري ابروسيني"
+ },
+ "ksh": {
+ "code": "ksh",
+ "name": "لغة الكولونيان"
+ },
+ "swc": {
+ "code": "swc",
+ "name": "لغة الكونغو السواحلية"
+ },
+ "luy": {
+ "code": "luy",
+ "name": "لغة اللويا"
+ },
+ "ms": {
+ "code": "ms",
+ "name": "لغة الملايو"
+ },
+ "naq": {
+ "code": "naq",
+ "name": "لغة الناما"
+ },
+ "mgh": {
+ "code": "mgh",
+ "name": "لغة ماكوا ميتو"
+ },
+ "mua": {
+ "code": "mua",
+ "name": "مندنج"
+ },
+ "jgo": {
+ "code": "jgo",
+ "name": "نغومبا"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/language/ar.json b/library/intl/resources/language/ar.json
new file mode 100644
index 000000000..a1beaba5f
--- /dev/null
+++ b/library/intl/resources/language/ar.json
@@ -0,0 +1,738 @@
+{
+ "ksh": {
+ "code": "ksh",
+ "name": "Colognian"
+ },
+ "es-MX": {
+ "code": "es-MX",
+ "name": "es_MX"
+ },
+ "wae": {
+ "code": "wae",
+ "name": "Walser"
+ },
+ "asa": {
+ "code": "asa",
+ "name": "آسو"
+ },
+ "ebu": {
+ "code": "ebu",
+ "name": "إمبو"
+ },
+ "az": {
+ "code": "az",
+ "name": "الأذربيجانية"
+ },
+ "ur": {
+ "code": "ur",
+ "name": "الأردية"
+ },
+ "hy": {
+ "code": "hy",
+ "name": "الأرمينية"
+ },
+ "ast": {
+ "code": "ast",
+ "name": "الأسترية"
+ },
+ "agq": {
+ "code": "agq",
+ "name": "الأغم"
+ },
+ "ug": {
+ "code": "ug",
+ "name": "الأغورية"
+ },
+ "af": {
+ "code": "af",
+ "name": "الأÙريقانية"
+ },
+ "ak": {
+ "code": "ak",
+ "name": "الأكانية"
+ },
+ "sq": {
+ "code": "sq",
+ "name": "الألبانية"
+ },
+ "de": {
+ "code": "de",
+ "name": "الألمانية"
+ },
+ "gsw": {
+ "code": "gsw",
+ "name": "الألمانية السويسرية"
+ },
+ "de-CH": {
+ "code": "de-CH",
+ "name": "الألمانية العليا السويسرية"
+ },
+ "de-AT": {
+ "code": "de-AT",
+ "name": "الألمانية النمساوية"
+ },
+ "tzm": {
+ "code": "tzm",
+ "name": "الأمازيغية وسط الأطلس"
+ },
+ "am": {
+ "code": "am",
+ "name": "الأمهرية"
+ },
+ "or": {
+ "code": "or",
+ "name": "الأورييا"
+ },
+ "uz": {
+ "code": "uz",
+ "name": "الأوزباكية"
+ },
+ "uk": {
+ "code": "uk",
+ "name": "الأوكرانية"
+ },
+ "ga": {
+ "code": "ga",
+ "name": "الأيرلندية"
+ },
+ "is": {
+ "code": "is",
+ "name": "الأيسلاندية"
+ },
+ "es": {
+ "code": "es",
+ "name": "الإسبانية"
+ },
+ "es-ES": {
+ "code": "es-ES",
+ "name": "الإسبانية الأوروبية"
+ },
+ "eo": {
+ "code": "eo",
+ "name": "الإسبرانتو"
+ },
+ "et": {
+ "code": "et",
+ "name": "الإستونية"
+ },
+ "en": {
+ "code": "en",
+ "name": "الإنجليزية"
+ },
+ "en-AU": {
+ "code": "en-AU",
+ "name": "الإنجليزية الأسترالية"
+ },
+ "en-GB": {
+ "code": "en-GB",
+ "name": "الإنجليزية البريطانية"
+ },
+ "en-CA": {
+ "code": "en-CA",
+ "name": "الإنجليزية الكندية"
+ },
+ "en-US": {
+ "code": "en-US",
+ "name": "الإنجليزية الولايات المتحدة"
+ },
+ "id": {
+ "code": "id",
+ "name": "الإندونيسية"
+ },
+ "it": {
+ "code": "it",
+ "name": "الإيطالية"
+ },
+ "ewo": {
+ "code": "ewo",
+ "name": "الإيوندو"
+ },
+ "ee": {
+ "code": "ee",
+ "name": "الإيوي"
+ },
+ "bas": {
+ "code": "bas",
+ "name": "الباسا"
+ },
+ "bm": {
+ "code": "bm",
+ "name": "البامبارا"
+ },
+ "pt": {
+ "code": "pt",
+ "name": "البرتغالية"
+ },
+ "pt-PT": {
+ "code": "pt-PT",
+ "name": "البرتغالية الأوروبية"
+ },
+ "pt-BR": {
+ "code": "pt-BR",
+ "name": "البرتغالية البرازيلية"
+ },
+ "br": {
+ "code": "br",
+ "name": "البريتونية"
+ },
+ "ps": {
+ "code": "ps",
+ "name": "البشتونية"
+ },
+ "bg": {
+ "code": "bg",
+ "name": "البلغارية"
+ },
+ "pa": {
+ "code": "pa",
+ "name": "البنجابية"
+ },
+ "bn": {
+ "code": "bn",
+ "name": "البنغالية"
+ },
+ "brx": {
+ "code": "brx",
+ "name": "البودو"
+ },
+ "my": {
+ "code": "my",
+ "name": "البورمية"
+ },
+ "bs": {
+ "code": "bs",
+ "name": "البوسنية"
+ },
+ "nb": {
+ "code": "nb",
+ "name": "البوكمالية النرويجية"
+ },
+ "pl": {
+ "code": "pl",
+ "name": "البولندية"
+ },
+ "be": {
+ "code": "be",
+ "name": "البيلوروسية"
+ },
+ "ta": {
+ "code": "ta",
+ "name": "التاميلية"
+ },
+ "th": {
+ "code": "th",
+ "name": "التايلاندية"
+ },
+ "bo": {
+ "code": "bo",
+ "name": "التبتية"
+ },
+ "tr": {
+ "code": "tr",
+ "name": "التركية"
+ },
+ "cs": {
+ "code": "cs",
+ "name": "التشيكية"
+ },
+ "zgh": {
+ "code": "zgh",
+ "name": "التمازيغية المغربية القياسية"
+ },
+ "to": {
+ "code": "to",
+ "name": "التونغية"
+ },
+ "ti": {
+ "code": "ti",
+ "name": "التيجرينيا"
+ },
+ "te": {
+ "code": "te",
+ "name": "التيلجو"
+ },
+ "gl": {
+ "code": "gl",
+ "name": "الجاليكية"
+ },
+ "lg": {
+ "code": "lg",
+ "name": "الجاندا"
+ },
+ "ka": {
+ "code": "ka",
+ "name": "الجورجية"
+ },
+ "km": {
+ "code": "km",
+ "name": "الخميرية"
+ },
+ "da": {
+ "code": "da",
+ "name": "الدانماركية"
+ },
+ "rn": {
+ "code": "rn",
+ "name": "الرندي"
+ },
+ "ru": {
+ "code": "ru",
+ "name": "الروسية"
+ },
+ "rm": {
+ "code": "rm",
+ "name": "الرومانشية"
+ },
+ "ro": {
+ "code": "ro",
+ "name": "الرومانية"
+ },
+ "dje": {
+ "code": "dje",
+ "name": "الزارمية"
+ },
+ "zu": {
+ "code": "zu",
+ "name": "الزولو"
+ },
+ "dz": {
+ "code": "dz",
+ "name": "الزونخاية"
+ },
+ "se": {
+ "code": "se",
+ "name": "السامي الشمالي"
+ },
+ "sg": {
+ "code": "sg",
+ "name": "السانجو"
+ },
+ "sk": {
+ "code": "sk",
+ "name": "السلوÙاكية"
+ },
+ "sl": {
+ "code": "sl",
+ "name": "السلوÙانية"
+ },
+ "si": {
+ "code": "si",
+ "name": "السنهالية"
+ },
+ "sw": {
+ "code": "sw",
+ "name": "السواحلية"
+ },
+ "sv": {
+ "code": "sv",
+ "name": "السويدية"
+ },
+ "sn": {
+ "code": "sn",
+ "name": "الشونا"
+ },
+ "chr": {
+ "code": "chr",
+ "name": "الشيروكي"
+ },
+ "sr": {
+ "code": "sr",
+ "name": "الصربية"
+ },
+ "dsb": {
+ "code": "dsb",
+ "name": "الصربية السÙلى"
+ },
+ "hsb": {
+ "code": "hsb",
+ "name": "الصربية العليا"
+ },
+ "so": {
+ "code": "so",
+ "name": "الصومالية"
+ },
+ "zh": {
+ "code": "zh",
+ "name": "الصينية"
+ },
+ "zh-Hant": {
+ "code": "zh-Hant",
+ "name": "الصينية التقليدية"
+ },
+ "zh-Hans": {
+ "code": "zh-Hans",
+ "name": "الصينية المبسطة"
+ },
+ "he": {
+ "code": "he",
+ "name": "العبرية"
+ },
+ "ar": {
+ "code": "ar",
+ "name": "العربية"
+ },
+ "ar-001": {
+ "code": "ar-001",
+ "name": "العربية الرسمية الحديثة"
+ },
+ "gu": {
+ "code": "gu",
+ "name": "الغوجاراتية"
+ },
+ "guz": {
+ "code": "guz",
+ "name": "الغيزية"
+ },
+ "gd": {
+ "code": "gd",
+ "name": "الغيلية الأسكتلندية"
+ },
+ "fa": {
+ "code": "fa",
+ "name": "الÙارسية"
+ },
+ "fo": {
+ "code": "fo",
+ "name": "الÙارويز"
+ },
+ "vai": {
+ "code": "vai",
+ "name": "الÙاي"
+ },
+ "fr": {
+ "code": "fr",
+ "name": "الÙرنسية"
+ },
+ "fr-CH": {
+ "code": "fr-CH",
+ "name": "الÙرنسية السويسرية"
+ },
+ "fr-CA": {
+ "code": "fr-CA",
+ "name": "الÙرنسية الكندية"
+ },
+ "fy": {
+ "code": "fy",
+ "name": "الÙريزيان"
+ },
+ "fur": {
+ "code": "fur",
+ "name": "الÙريلايان"
+ },
+ "fil": {
+ "code": "fil",
+ "name": "الÙلبينية"
+ },
+ "ff": {
+ "code": "ff",
+ "name": "الÙلة"
+ },
+ "nl-BE": {
+ "code": "nl-BE",
+ "name": "الÙلمنك"
+ },
+ "fi": {
+ "code": "fi",
+ "name": "الÙنلندية"
+ },
+ "vi": {
+ "code": "vi",
+ "name": "الÙيتنامية"
+ },
+ "kab": {
+ "code": "kab",
+ "name": "القبيلية"
+ },
+ "ky": {
+ "code": "ky",
+ "name": "القرغيزية"
+ },
+ "kk": {
+ "code": "kk",
+ "name": "الكازاخستانية"
+ },
+ "kl": {
+ "code": "kl",
+ "name": "الكالاليست"
+ },
+ "kam": {
+ "code": "kam",
+ "name": "الكامبا"
+ },
+ "kn": {
+ "code": "kn",
+ "name": "الكانادا"
+ },
+ "ca": {
+ "code": "ca",
+ "name": "الكتالانية"
+ },
+ "hr": {
+ "code": "hr",
+ "name": "الكرواتية"
+ },
+ "ks": {
+ "code": "ks",
+ "name": "الكشميرية"
+ },
+ "ko": {
+ "code": "ko",
+ "name": "الكورية"
+ },
+ "swc": {
+ "code": "swc",
+ "name": "الكونغو السواحلية"
+ },
+ "ki": {
+ "code": "ki",
+ "name": "الكيكيو"
+ },
+ "lv": {
+ "code": "lv",
+ "name": "اللاتÙية"
+ },
+ "lo": {
+ "code": "lo",
+ "name": "اللاوية"
+ },
+ "lu": {
+ "code": "lu",
+ "name": "اللبا-كاتانجا"
+ },
+ "lt": {
+ "code": "lt",
+ "name": "اللتوانية"
+ },
+ "luo": {
+ "code": "luo",
+ "name": "اللو"
+ },
+ "lb": {
+ "code": "lb",
+ "name": "اللوكسمبرجية"
+ },
+ "ln": {
+ "code": "ln",
+ "name": "اللينجالا"
+ },
+ "mr": {
+ "code": "mr",
+ "name": "الماراثي"
+ },
+ "mas": {
+ "code": "mas",
+ "name": "الماساي"
+ },
+ "mg": {
+ "code": "mg",
+ "name": "المالاجاشية"
+ },
+ "mt": {
+ "code": "mt",
+ "name": "المالطية"
+ },
+ "ml": {
+ "code": "ml",
+ "name": "الماليالام"
+ },
+ "mk": {
+ "code": "mk",
+ "name": "المقدونية"
+ },
+ "mn": {
+ "code": "mn",
+ "name": "المنغولية"
+ },
+ "mfe": {
+ "code": "mfe",
+ "name": "المورسيانية"
+ },
+ "ro-MD": {
+ "code": "ro-MD",
+ "name": "المولدوÙية"
+ },
+ "nd": {
+ "code": "nd",
+ "name": "النديبيل الشمالي"
+ },
+ "nus": {
+ "code": "nus",
+ "name": "النوير"
+ },
+ "nyn": {
+ "code": "nyn",
+ "name": "النيانكول"
+ },
+ "ne": {
+ "code": "ne",
+ "name": "النيبالية"
+ },
+ "nn": {
+ "code": "nn",
+ "name": "النينورسك النرويجي"
+ },
+ "hi": {
+ "code": "hi",
+ "name": "الهندية"
+ },
+ "hu": {
+ "code": "hu",
+ "name": "الهنغارية"
+ },
+ "ha": {
+ "code": "ha",
+ "name": "الهوسا"
+ },
+ "nl": {
+ "code": "nl",
+ "name": "الهولندية"
+ },
+ "cy": {
+ "code": "cy",
+ "name": "الولزية"
+ },
+ "ja": {
+ "code": "ja",
+ "name": "اليابانية"
+ },
+ "yo": {
+ "code": "yo",
+ "name": "اليوروبية"
+ },
+ "el": {
+ "code": "el",
+ "name": "اليونانية"
+ },
+ "ksf": {
+ "code": "ksf",
+ "name": "باÙيا"
+ },
+ "bez": {
+ "code": "bez",
+ "name": "بينا"
+ },
+ "twq": {
+ "code": "twq",
+ "name": "تاساواق"
+ },
+ "shi": {
+ "code": "shi",
+ "name": "تشلحيت"
+ },
+ "cgg": {
+ "code": "cgg",
+ "name": "تشيغا"
+ },
+ "dav": {
+ "code": "dav",
+ "name": "تيتا"
+ },
+ "teo": {
+ "code": "teo",
+ "name": "تيسو"
+ },
+ "dyo": {
+ "code": "dyo",
+ "name": "جولا Ùونيا"
+ },
+ "rwk": {
+ "code": "rwk",
+ "name": "روا"
+ },
+ "rof": {
+ "code": "rof",
+ "name": "رومبو"
+ },
+ "saq": {
+ "code": "saq",
+ "name": "سامبورو"
+ },
+ "sbp": {
+ "code": "sbp",
+ "name": "سانغو"
+ },
+ "xog": {
+ "code": "xog",
+ "name": "سوجا"
+ },
+ "seh": {
+ "code": "seh",
+ "name": "سينا"
+ },
+ "ksb": {
+ "code": "ksb",
+ "name": "شامبالا"
+ },
+ "vun": {
+ "code": "vun",
+ "name": "Ùونجو"
+ },
+ "kea": {
+ "code": "kea",
+ "name": "كابوÙيرديانو"
+ },
+ "kln": {
+ "code": "kln",
+ "name": "كالينجين"
+ },
+ "nmg": {
+ "code": "nmg",
+ "name": "كواسيو"
+ },
+ "khq": {
+ "code": "khq",
+ "name": "كويرا تشيني"
+ },
+ "ses": {
+ "code": "ses",
+ "name": "كويرابورو سيني"
+ },
+ "lag": {
+ "code": "lag",
+ "name": "لانجي"
+ },
+ "eu": {
+ "code": "eu",
+ "name": "لغة الباسك"
+ },
+ "ms": {
+ "code": "ms",
+ "name": "لغة الملايو"
+ },
+ "luy": {
+ "code": "luy",
+ "name": "لويا"
+ },
+ "jmc": {
+ "code": "jmc",
+ "name": "ماتشيم"
+ },
+ "mgh": {
+ "code": "mgh",
+ "name": "ماخاوا-ميتو"
+ },
+ "kde": {
+ "code": "kde",
+ "name": "ماكونده"
+ },
+ "mua": {
+ "code": "mua",
+ "name": "مندنج"
+ },
+ "mer": {
+ "code": "mer",
+ "name": "ميرو"
+ },
+ "naq": {
+ "code": "naq",
+ "name": "ناما"
+ },
+ "jgo": {
+ "code": "jgo",
+ "name": "نغومبا"
+ },
+ "yav": {
+ "code": "yav",
+ "name": "يانجبن"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/language/asa.json b/library/intl/resources/language/asa.json
new file mode 100644
index 000000000..6a49e8f55
--- /dev/null
+++ b/library/intl/resources/language/asa.json
@@ -0,0 +1,738 @@
+{
+ "af": {
+ "code": "af",
+ "name": "Afrikaans"
+ },
+ "agq": {
+ "code": "agq",
+ "name": "Aghem"
+ },
+ "sq": {
+ "code": "sq",
+ "name": "Albanian"
+ },
+ "ar-001": {
+ "code": "ar-001",
+ "name": "ar_001"
+ },
+ "hy": {
+ "code": "hy",
+ "name": "Armenian"
+ },
+ "ast": {
+ "code": "ast",
+ "name": "Asturian"
+ },
+ "az": {
+ "code": "az",
+ "name": "Azerbaijani"
+ },
+ "ksf": {
+ "code": "ksf",
+ "name": "Bafia"
+ },
+ "bm": {
+ "code": "bm",
+ "name": "Bambara"
+ },
+ "bas": {
+ "code": "bas",
+ "name": "Basaa"
+ },
+ "eu": {
+ "code": "eu",
+ "name": "Basque"
+ },
+ "bez": {
+ "code": "bez",
+ "name": "Bena"
+ },
+ "brx": {
+ "code": "brx",
+ "name": "Bodo"
+ },
+ "bs": {
+ "code": "bs",
+ "name": "Bosnian"
+ },
+ "br": {
+ "code": "br",
+ "name": "Breton"
+ },
+ "ca": {
+ "code": "ca",
+ "name": "Catalan"
+ },
+ "tzm": {
+ "code": "tzm",
+ "name": "Central Atlas Tamazight"
+ },
+ "chr": {
+ "code": "chr",
+ "name": "Cherokee"
+ },
+ "cgg": {
+ "code": "cgg",
+ "name": "Chiga"
+ },
+ "ksh": {
+ "code": "ksh",
+ "name": "Colognian"
+ },
+ "swc": {
+ "code": "swc",
+ "name": "Congo Swahili"
+ },
+ "hr": {
+ "code": "hr",
+ "name": "Croatian"
+ },
+ "da": {
+ "code": "da",
+ "name": "Danish"
+ },
+ "de-AT": {
+ "code": "de-AT",
+ "name": "de_AT"
+ },
+ "de-CH": {
+ "code": "de-CH",
+ "name": "de_CH"
+ },
+ "dz": {
+ "code": "dz",
+ "name": "Dzongkha"
+ },
+ "ebu": {
+ "code": "ebu",
+ "name": "Embu"
+ },
+ "en-AU": {
+ "code": "en-AU",
+ "name": "en_AU"
+ },
+ "en-CA": {
+ "code": "en-CA",
+ "name": "en_CA"
+ },
+ "en-GB": {
+ "code": "en-GB",
+ "name": "en_GB"
+ },
+ "en-US": {
+ "code": "en-US",
+ "name": "en_US"
+ },
+ "es-ES": {
+ "code": "es-ES",
+ "name": "es_ES"
+ },
+ "es-MX": {
+ "code": "es-MX",
+ "name": "es_MX"
+ },
+ "eo": {
+ "code": "eo",
+ "name": "Esperanto"
+ },
+ "et": {
+ "code": "et",
+ "name": "Estonian"
+ },
+ "ee": {
+ "code": "ee",
+ "name": "Ewe"
+ },
+ "ewo": {
+ "code": "ewo",
+ "name": "Ewondo"
+ },
+ "fo": {
+ "code": "fo",
+ "name": "Faroese"
+ },
+ "fil": {
+ "code": "fil",
+ "name": "Filipino"
+ },
+ "fi": {
+ "code": "fi",
+ "name": "Finnish"
+ },
+ "fr-CA": {
+ "code": "fr-CA",
+ "name": "fr_CA"
+ },
+ "fr-CH": {
+ "code": "fr-CH",
+ "name": "fr_CH"
+ },
+ "fur": {
+ "code": "fur",
+ "name": "Friulian"
+ },
+ "ff": {
+ "code": "ff",
+ "name": "Fulah"
+ },
+ "gl": {
+ "code": "gl",
+ "name": "Galician"
+ },
+ "lg": {
+ "code": "lg",
+ "name": "Ganda"
+ },
+ "ka": {
+ "code": "ka",
+ "name": "Georgian"
+ },
+ "gu": {
+ "code": "gu",
+ "name": "Gujarati"
+ },
+ "guz": {
+ "code": "guz",
+ "name": "Gusii"
+ },
+ "he": {
+ "code": "he",
+ "name": "Hebrew"
+ },
+ "is": {
+ "code": "is",
+ "name": "Icelandic"
+ },
+ "ga": {
+ "code": "ga",
+ "name": "Irish"
+ },
+ "dyo": {
+ "code": "dyo",
+ "name": "Jola-Fonyi"
+ },
+ "kea": {
+ "code": "kea",
+ "name": "Kabuverdianu"
+ },
+ "kab": {
+ "code": "kab",
+ "name": "Kabyle"
+ },
+ "kl": {
+ "code": "kl",
+ "name": "Kalaallisut"
+ },
+ "kln": {
+ "code": "kln",
+ "name": "Kalenjin"
+ },
+ "kam": {
+ "code": "kam",
+ "name": "Kamba"
+ },
+ "kn": {
+ "code": "kn",
+ "name": "Kannada"
+ },
+ "ks": {
+ "code": "ks",
+ "name": "Kashmiri"
+ },
+ "kk": {
+ "code": "kk",
+ "name": "Kazakh"
+ },
+ "fa": {
+ "code": "fa",
+ "name": "Kiajemi"
+ },
+ "ak": {
+ "code": "ak",
+ "name": "Kiakan"
+ },
+ "am": {
+ "code": "am",
+ "name": "Kiamhari"
+ },
+ "ar": {
+ "code": "ar",
+ "name": "Kiarabu"
+ },
+ "bn": {
+ "code": "bn",
+ "name": "Kibangla"
+ },
+ "be": {
+ "code": "be",
+ "name": "Kibelarusi"
+ },
+ "bg": {
+ "code": "bg",
+ "name": "Kibulgaria"
+ },
+ "my": {
+ "code": "my",
+ "name": "Kiburma"
+ },
+ "cs": {
+ "code": "cs",
+ "name": "Kicheki"
+ },
+ "zh": {
+ "code": "zh",
+ "name": "Kichina"
+ },
+ "zu": {
+ "code": "zu",
+ "name": "Kidhulu"
+ },
+ "fr": {
+ "code": "fr",
+ "name": "Kifarantha"
+ },
+ "el": {
+ "code": "el",
+ "name": "Kigiriki"
+ },
+ "ha": {
+ "code": "ha",
+ "name": "Kihautha"
+ },
+ "hi": {
+ "code": "hi",
+ "name": "Kihindi"
+ },
+ "es": {
+ "code": "es",
+ "name": "Kihithpania"
+ },
+ "nl": {
+ "code": "nl",
+ "name": "Kiholandhi"
+ },
+ "hu": {
+ "code": "hu",
+ "name": "Kihungari"
+ },
+ "id": {
+ "code": "id",
+ "name": "Kiindonethia"
+ },
+ "en": {
+ "code": "en",
+ "name": "Kiingeredha"
+ },
+ "it": {
+ "code": "it",
+ "name": "Kiitaliaano"
+ },
+ "ja": {
+ "code": "ja",
+ "name": "Kijapani"
+ },
+ "de": {
+ "code": "de",
+ "name": "Kijerumani"
+ },
+ "km": {
+ "code": "km",
+ "name": "Kikambodia"
+ },
+ "ko": {
+ "code": "ko",
+ "name": "Kikorea"
+ },
+ "ki": {
+ "code": "ki",
+ "name": "Kikuyu"
+ },
+ "ms": {
+ "code": "ms",
+ "name": "Kimalesia"
+ },
+ "ne": {
+ "code": "ne",
+ "name": "Kinepali"
+ },
+ "asa": {
+ "code": "asa",
+ "name": "Kipare"
+ },
+ "pl": {
+ "code": "pl",
+ "name": "Kipolandi"
+ },
+ "pa": {
+ "code": "pa",
+ "name": "Kipunjabi"
+ },
+ "pt": {
+ "code": "pt",
+ "name": "Kireno"
+ },
+ "ro": {
+ "code": "ro",
+ "name": "Kiromania"
+ },
+ "ru": {
+ "code": "ru",
+ "name": "Kiruthi"
+ },
+ "th": {
+ "code": "th",
+ "name": "Kitailandi"
+ },
+ "ta": {
+ "code": "ta",
+ "name": "Kitamil"
+ },
+ "so": {
+ "code": "so",
+ "name": "Kithomali"
+ },
+ "sv": {
+ "code": "sv",
+ "name": "Kithwidi"
+ },
+ "tr": {
+ "code": "tr",
+ "name": "Kituruki"
+ },
+ "uk": {
+ "code": "uk",
+ "name": "Kiukrania"
+ },
+ "ur": {
+ "code": "ur",
+ "name": "Kiurdu"
+ },
+ "vi": {
+ "code": "vi",
+ "name": "Kivietinamu"
+ },
+ "yo": {
+ "code": "yo",
+ "name": "Kiyoruba"
+ },
+ "khq": {
+ "code": "khq",
+ "name": "Koyra Chiini"
+ },
+ "ses": {
+ "code": "ses",
+ "name": "Koyraboro Senni"
+ },
+ "nmg": {
+ "code": "nmg",
+ "name": "Kwasio"
+ },
+ "ky": {
+ "code": "ky",
+ "name": "Kyrgyz"
+ },
+ "lag": {
+ "code": "lag",
+ "name": "Langi"
+ },
+ "lo": {
+ "code": "lo",
+ "name": "Lao"
+ },
+ "lv": {
+ "code": "lv",
+ "name": "Latvian"
+ },
+ "ln": {
+ "code": "ln",
+ "name": "Lingala"
+ },
+ "lt": {
+ "code": "lt",
+ "name": "Lithuanian"
+ },
+ "dsb": {
+ "code": "dsb",
+ "name": "Lower Sorbian"
+ },
+ "lu": {
+ "code": "lu",
+ "name": "Luba-Katanga"
+ },
+ "luo": {
+ "code": "luo",
+ "name": "Luo"
+ },
+ "lb": {
+ "code": "lb",
+ "name": "Luxembourgish"
+ },
+ "luy": {
+ "code": "luy",
+ "name": "Luyia"
+ },
+ "mk": {
+ "code": "mk",
+ "name": "Macedonian"
+ },
+ "jmc": {
+ "code": "jmc",
+ "name": "Machame"
+ },
+ "mgh": {
+ "code": "mgh",
+ "name": "Makhuwa-Meetto"
+ },
+ "kde": {
+ "code": "kde",
+ "name": "Makonde"
+ },
+ "mg": {
+ "code": "mg",
+ "name": "Malagasy"
+ },
+ "ml": {
+ "code": "ml",
+ "name": "Malayalam"
+ },
+ "mt": {
+ "code": "mt",
+ "name": "Maltese"
+ },
+ "mr": {
+ "code": "mr",
+ "name": "Marathi"
+ },
+ "mas": {
+ "code": "mas",
+ "name": "Masai"
+ },
+ "mer": {
+ "code": "mer",
+ "name": "Meru"
+ },
+ "mn": {
+ "code": "mn",
+ "name": "Mongolian"
+ },
+ "mfe": {
+ "code": "mfe",
+ "name": "Morisyen"
+ },
+ "mua": {
+ "code": "mua",
+ "name": "Mundang"
+ },
+ "naq": {
+ "code": "naq",
+ "name": "Nama"
+ },
+ "jgo": {
+ "code": "jgo",
+ "name": "Ngomba"
+ },
+ "nl-BE": {
+ "code": "nl-BE",
+ "name": "nl_BE"
+ },
+ "nd": {
+ "code": "nd",
+ "name": "North Ndebele"
+ },
+ "se": {
+ "code": "se",
+ "name": "Northern Sami"
+ },
+ "nb": {
+ "code": "nb",
+ "name": "Norwegian Bokmål"
+ },
+ "nn": {
+ "code": "nn",
+ "name": "Norwegian Nynorsk"
+ },
+ "nus": {
+ "code": "nus",
+ "name": "Nuer"
+ },
+ "nyn": {
+ "code": "nyn",
+ "name": "Nyankole"
+ },
+ "or": {
+ "code": "or",
+ "name": "Oriya"
+ },
+ "ps": {
+ "code": "ps",
+ "name": "Pashto"
+ },
+ "pt-BR": {
+ "code": "pt-BR",
+ "name": "pt_BR"
+ },
+ "pt-PT": {
+ "code": "pt-PT",
+ "name": "pt_PT"
+ },
+ "ro-MD": {
+ "code": "ro-MD",
+ "name": "ro_MD"
+ },
+ "rm": {
+ "code": "rm",
+ "name": "Romansh"
+ },
+ "rof": {
+ "code": "rof",
+ "name": "Rombo"
+ },
+ "rn": {
+ "code": "rn",
+ "name": "Rundi"
+ },
+ "rwk": {
+ "code": "rwk",
+ "name": "Rwa"
+ },
+ "saq": {
+ "code": "saq",
+ "name": "Samburu"
+ },
+ "sg": {
+ "code": "sg",
+ "name": "Sango"
+ },
+ "sbp": {
+ "code": "sbp",
+ "name": "Sangu"
+ },
+ "gd": {
+ "code": "gd",
+ "name": "Scottish Gaelic"
+ },
+ "seh": {
+ "code": "seh",
+ "name": "Sena"
+ },
+ "sr": {
+ "code": "sr",
+ "name": "Serbian"
+ },
+ "ksb": {
+ "code": "ksb",
+ "name": "Shambala"
+ },
+ "sn": {
+ "code": "sn",
+ "name": "Shona"
+ },
+ "si": {
+ "code": "si",
+ "name": "Sinhala"
+ },
+ "sk": {
+ "code": "sk",
+ "name": "Slovak"
+ },
+ "sl": {
+ "code": "sl",
+ "name": "Slovenian"
+ },
+ "xog": {
+ "code": "xog",
+ "name": "Soga"
+ },
+ "zgh": {
+ "code": "zgh",
+ "name": "Standard Moroccan Tamazight"
+ },
+ "sw": {
+ "code": "sw",
+ "name": "Swahili"
+ },
+ "gsw": {
+ "code": "gsw",
+ "name": "Swiss German"
+ },
+ "shi": {
+ "code": "shi",
+ "name": "Tachelhit"
+ },
+ "dav": {
+ "code": "dav",
+ "name": "Taita"
+ },
+ "twq": {
+ "code": "twq",
+ "name": "Tasawaq"
+ },
+ "te": {
+ "code": "te",
+ "name": "Telugu"
+ },
+ "teo": {
+ "code": "teo",
+ "name": "Teso"
+ },
+ "bo": {
+ "code": "bo",
+ "name": "Tibetan"
+ },
+ "ti": {
+ "code": "ti",
+ "name": "Tigrinya"
+ },
+ "to": {
+ "code": "to",
+ "name": "Tongan"
+ },
+ "hsb": {
+ "code": "hsb",
+ "name": "Upper Sorbian"
+ },
+ "ug": {
+ "code": "ug",
+ "name": "Uyghur"
+ },
+ "uz": {
+ "code": "uz",
+ "name": "Uzbek"
+ },
+ "vai": {
+ "code": "vai",
+ "name": "Vai"
+ },
+ "vun": {
+ "code": "vun",
+ "name": "Vunjo"
+ },
+ "wae": {
+ "code": "wae",
+ "name": "Walser"
+ },
+ "cy": {
+ "code": "cy",
+ "name": "Welsh"
+ },
+ "fy": {
+ "code": "fy",
+ "name": "Western Frisian"
+ },
+ "yav": {
+ "code": "yav",
+ "name": "Yangben"
+ },
+ "dje": {
+ "code": "dje",
+ "name": "Zarma"
+ },
+ "zh-Hans": {
+ "code": "zh-Hans",
+ "name": "zh_Hans"
+ },
+ "zh-Hant": {
+ "code": "zh-Hant",
+ "name": "zh_Hant"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/language/ast.json b/library/intl/resources/language/ast.json
new file mode 100644
index 000000000..eac761f74
--- /dev/null
+++ b/library/intl/resources/language/ast.json
@@ -0,0 +1,738 @@
+{
+ "af": {
+ "code": "af",
+ "name": "afrikaans"
+ },
+ "agq": {
+ "code": "agq",
+ "name": "aghem"
+ },
+ "ak": {
+ "code": "ak",
+ "name": "Akan"
+ },
+ "sq": {
+ "code": "sq",
+ "name": "albanu"
+ },
+ "de": {
+ "code": "de",
+ "name": "alemán"
+ },
+ "gsw": {
+ "code": "gsw",
+ "name": "alemán de Suiza"
+ },
+ "hsb": {
+ "code": "hsb",
+ "name": "altu sorbiu"
+ },
+ "de-CH": {
+ "code": "de-CH",
+ "name": "altualemán de Suiza"
+ },
+ "am": {
+ "code": "am",
+ "name": "amharicu"
+ },
+ "ar": {
+ "code": "ar",
+ "name": "árabe"
+ },
+ "ar-001": {
+ "code": "ar-001",
+ "name": "árabe estándar modernu"
+ },
+ "hy": {
+ "code": "hy",
+ "name": "armeniu"
+ },
+ "ast": {
+ "code": "ast",
+ "name": "asturianu"
+ },
+ "asa": {
+ "code": "asa",
+ "name": "asu"
+ },
+ "az": {
+ "code": "az",
+ "name": "azerbaixanu"
+ },
+ "ksf": {
+ "code": "ksf",
+ "name": "bafia"
+ },
+ "bm": {
+ "code": "bm",
+ "name": "bambara"
+ },
+ "bas": {
+ "code": "bas",
+ "name": "basaa"
+ },
+ "dsb": {
+ "code": "dsb",
+ "name": "baxu sorbiu"
+ },
+ "bez": {
+ "code": "bez",
+ "name": "bena"
+ },
+ "bn": {
+ "code": "bn",
+ "name": "bengalín"
+ },
+ "be": {
+ "code": "be",
+ "name": "bielorrusu"
+ },
+ "my": {
+ "code": "my",
+ "name": "birmanu"
+ },
+ "brx": {
+ "code": "brx",
+ "name": "bodo"
+ },
+ "bs": {
+ "code": "bs",
+ "name": "bosniu"
+ },
+ "br": {
+ "code": "br",
+ "name": "bretón"
+ },
+ "bg": {
+ "code": "bg",
+ "name": "búlgaru"
+ },
+ "kea": {
+ "code": "kea",
+ "name": "cabuverdianu"
+ },
+ "ks": {
+ "code": "ks",
+ "name": "cachemirés"
+ },
+ "kn": {
+ "code": "kn",
+ "name": "canarés"
+ },
+ "ca": {
+ "code": "ca",
+ "name": "catalán"
+ },
+ "cs": {
+ "code": "cs",
+ "name": "checu"
+ },
+ "chr": {
+ "code": "chr",
+ "name": "cheroqui"
+ },
+ "cgg": {
+ "code": "cgg",
+ "name": "chiga"
+ },
+ "zh": {
+ "code": "zh",
+ "name": "chinu"
+ },
+ "zh-Hans": {
+ "code": "zh-Hans",
+ "name": "chinu simplificáu"
+ },
+ "zh-Hant": {
+ "code": "zh-Hant",
+ "name": "chinu tradicional"
+ },
+ "si": {
+ "code": "si",
+ "name": "cingalés"
+ },
+ "ksh": {
+ "code": "ksh",
+ "name": "colonianu"
+ },
+ "ko": {
+ "code": "ko",
+ "name": "coreanu"
+ },
+ "hr": {
+ "code": "hr",
+ "name": "croata"
+ },
+ "da": {
+ "code": "da",
+ "name": "danés"
+ },
+ "de-AT": {
+ "code": "de-AT",
+ "name": "de_AT"
+ },
+ "dz": {
+ "code": "dz",
+ "name": "dzongkha"
+ },
+ "ebu": {
+ "code": "ebu",
+ "name": "embú"
+ },
+ "en-AU": {
+ "code": "en-AU",
+ "name": "en_AU"
+ },
+ "es-ES": {
+ "code": "es-ES",
+ "name": "es_ES"
+ },
+ "sk": {
+ "code": "sk",
+ "name": "eslovacu"
+ },
+ "sl": {
+ "code": "sl",
+ "name": "eslovenu"
+ },
+ "es": {
+ "code": "es",
+ "name": "español"
+ },
+ "es-MX": {
+ "code": "es-MX",
+ "name": "español de México"
+ },
+ "eo": {
+ "code": "eo",
+ "name": "esperanto"
+ },
+ "et": {
+ "code": "et",
+ "name": "estoniu"
+ },
+ "ee": {
+ "code": "ee",
+ "name": "ewe"
+ },
+ "ewo": {
+ "code": "ewo",
+ "name": "ewondo"
+ },
+ "fo": {
+ "code": "fo",
+ "name": "feroés"
+ },
+ "fil": {
+ "code": "fil",
+ "name": "filipín"
+ },
+ "fi": {
+ "code": "fi",
+ "name": "finlandés"
+ },
+ "nl-BE": {
+ "code": "nl-BE",
+ "name": "flamencu"
+ },
+ "fr": {
+ "code": "fr",
+ "name": "francés"
+ },
+ "fr-CA": {
+ "code": "fr-CA",
+ "name": "francés de Canadá"
+ },
+ "fr-CH": {
+ "code": "fr-CH",
+ "name": "francés de Suiza"
+ },
+ "fy": {
+ "code": "fy",
+ "name": "frisón occidental"
+ },
+ "fur": {
+ "code": "fur",
+ "name": "friulianu"
+ },
+ "ff": {
+ "code": "ff",
+ "name": "fulah"
+ },
+ "gd": {
+ "code": "gd",
+ "name": "gaélicu escocés"
+ },
+ "cy": {
+ "code": "cy",
+ "name": "galés"
+ },
+ "gl": {
+ "code": "gl",
+ "name": "gallegu"
+ },
+ "lg": {
+ "code": "lg",
+ "name": "ganda"
+ },
+ "el": {
+ "code": "el",
+ "name": "griegu"
+ },
+ "guz": {
+ "code": "guz",
+ "name": "gusii"
+ },
+ "gu": {
+ "code": "gu",
+ "name": "guyaratí"
+ },
+ "ha": {
+ "code": "ha",
+ "name": "ḥausa"
+ },
+ "he": {
+ "code": "he",
+ "name": "hebréu"
+ },
+ "hi": {
+ "code": "hi",
+ "name": "hindi"
+ },
+ "hu": {
+ "code": "hu",
+ "name": "húngaru"
+ },
+ "id": {
+ "code": "id",
+ "name": "indonesiu"
+ },
+ "en": {
+ "code": "en",
+ "name": "inglés"
+ },
+ "en-US": {
+ "code": "en-US",
+ "name": "inglés americanu"
+ },
+ "en-CA": {
+ "code": "en-CA",
+ "name": "inglés de Canadá"
+ },
+ "en-GB": {
+ "code": "en-GB",
+ "name": "inglés de Gran Bretaña"
+ },
+ "ga": {
+ "code": "ga",
+ "name": "irlandés"
+ },
+ "is": {
+ "code": "is",
+ "name": "islandés"
+ },
+ "it": {
+ "code": "it",
+ "name": "italianu"
+ },
+ "dyo": {
+ "code": "dyo",
+ "name": "jola-fonyi"
+ },
+ "kab": {
+ "code": "kab",
+ "name": "kabileñu"
+ },
+ "kl": {
+ "code": "kl",
+ "name": "kalaallisut"
+ },
+ "kln": {
+ "code": "kln",
+ "name": "Kalenjin"
+ },
+ "kam": {
+ "code": "kam",
+ "name": "kamba"
+ },
+ "kk": {
+ "code": "kk",
+ "name": "kazaquistanín"
+ },
+ "km": {
+ "code": "km",
+ "name": "khmer"
+ },
+ "ki": {
+ "code": "ki",
+ "name": "kikuyu"
+ },
+ "ky": {
+ "code": "ky",
+ "name": "kirguistanín"
+ },
+ "khq": {
+ "code": "khq",
+ "name": "koyra chiini"
+ },
+ "ses": {
+ "code": "ses",
+ "name": "koyraboro senni"
+ },
+ "nmg": {
+ "code": "nmg",
+ "name": "kwasio"
+ },
+ "lag": {
+ "code": "lag",
+ "name": "langi"
+ },
+ "lo": {
+ "code": "lo",
+ "name": "laosianu"
+ },
+ "lv": {
+ "code": "lv",
+ "name": "letón"
+ },
+ "ln": {
+ "code": "ln",
+ "name": "lingala"
+ },
+ "lt": {
+ "code": "lt",
+ "name": "lituanu"
+ },
+ "lu": {
+ "code": "lu",
+ "name": "luba-katanga"
+ },
+ "luo": {
+ "code": "luo",
+ "name": "Luo"
+ },
+ "lb": {
+ "code": "lb",
+ "name": "luxemburgués"
+ },
+ "luy": {
+ "code": "luy",
+ "name": "luyia"
+ },
+ "mk": {
+ "code": "mk",
+ "name": "macedoniu"
+ },
+ "jmc": {
+ "code": "jmc",
+ "name": "machame"
+ },
+ "mgh": {
+ "code": "mgh",
+ "name": "makhuwa-meetto"
+ },
+ "kde": {
+ "code": "kde",
+ "name": "makonde"
+ },
+ "ml": {
+ "code": "ml",
+ "name": "malayalam"
+ },
+ "ms": {
+ "code": "ms",
+ "name": "malayu"
+ },
+ "mg": {
+ "code": "mg",
+ "name": "malgaxe"
+ },
+ "mt": {
+ "code": "mt",
+ "name": "maltés"
+ },
+ "mr": {
+ "code": "mr",
+ "name": "marathi"
+ },
+ "mas": {
+ "code": "mas",
+ "name": "masai"
+ },
+ "mer": {
+ "code": "mer",
+ "name": "meru"
+ },
+ "ro-MD": {
+ "code": "ro-MD",
+ "name": "moldavu"
+ },
+ "mn": {
+ "code": "mn",
+ "name": "mongol"
+ },
+ "mfe": {
+ "code": "mfe",
+ "name": "morisyen"
+ },
+ "mua": {
+ "code": "mua",
+ "name": "mundang"
+ },
+ "naq": {
+ "code": "naq",
+ "name": "nama"
+ },
+ "nd": {
+ "code": "nd",
+ "name": "ndebele del norte"
+ },
+ "nl": {
+ "code": "nl",
+ "name": "neerlandés"
+ },
+ "ne": {
+ "code": "ne",
+ "name": "nepalés"
+ },
+ "jgo": {
+ "code": "jgo",
+ "name": "ngomba"
+ },
+ "nb": {
+ "code": "nb",
+ "name": "noruegu Bokmål"
+ },
+ "nn": {
+ "code": "nn",
+ "name": "noruegu Nynorsk"
+ },
+ "nus": {
+ "code": "nus",
+ "name": "nuer"
+ },
+ "nyn": {
+ "code": "nyn",
+ "name": "nyankole"
+ },
+ "or": {
+ "code": "or",
+ "name": "oriya"
+ },
+ "ps": {
+ "code": "ps",
+ "name": "pashtu"
+ },
+ "fa": {
+ "code": "fa",
+ "name": "persa"
+ },
+ "pl": {
+ "code": "pl",
+ "name": "polacu"
+ },
+ "pt": {
+ "code": "pt",
+ "name": "portugués"
+ },
+ "pt-BR": {
+ "code": "pt-BR",
+ "name": "portugués del Brasil"
+ },
+ "pt-PT": {
+ "code": "pt-PT",
+ "name": "pt_PT"
+ },
+ "pa": {
+ "code": "pa",
+ "name": "punyabí"
+ },
+ "rm": {
+ "code": "rm",
+ "name": "romanche"
+ },
+ "rof": {
+ "code": "rof",
+ "name": "rombo"
+ },
+ "ro": {
+ "code": "ro",
+ "name": "rumanu"
+ },
+ "rn": {
+ "code": "rn",
+ "name": "rundi"
+ },
+ "ru": {
+ "code": "ru",
+ "name": "rusu"
+ },
+ "rwk": {
+ "code": "rwk",
+ "name": "rwa"
+ },
+ "saq": {
+ "code": "saq",
+ "name": "samburu"
+ },
+ "se": {
+ "code": "se",
+ "name": "sami del norte"
+ },
+ "sg": {
+ "code": "sg",
+ "name": "sango"
+ },
+ "sbp": {
+ "code": "sbp",
+ "name": "sangu"
+ },
+ "seh": {
+ "code": "seh",
+ "name": "sena"
+ },
+ "sr": {
+ "code": "sr",
+ "name": "serbiu"
+ },
+ "ksb": {
+ "code": "ksb",
+ "name": "shambala"
+ },
+ "sn": {
+ "code": "sn",
+ "name": "shona"
+ },
+ "xog": {
+ "code": "xog",
+ "name": "soga"
+ },
+ "so": {
+ "code": "so",
+ "name": "somalín"
+ },
+ "sw": {
+ "code": "sw",
+ "name": "suaḥili"
+ },
+ "sv": {
+ "code": "sv",
+ "name": "suecu"
+ },
+ "swc": {
+ "code": "swc",
+ "name": "swahili del Congo"
+ },
+ "shi": {
+ "code": "shi",
+ "name": "tachelhit"
+ },
+ "th": {
+ "code": "th",
+ "name": "tailandés"
+ },
+ "dav": {
+ "code": "dav",
+ "name": "taita"
+ },
+ "tzm": {
+ "code": "tzm",
+ "name": "tamazight del Atlas central"
+ },
+ "zgh": {
+ "code": "zgh",
+ "name": "tamazight estándar de Marruecos"
+ },
+ "ta": {
+ "code": "ta",
+ "name": "tamil"
+ },
+ "twq": {
+ "code": "twq",
+ "name": "tasawaq"
+ },
+ "te": {
+ "code": "te",
+ "name": "telugu"
+ },
+ "teo": {
+ "code": "teo",
+ "name": "teso"
+ },
+ "bo": {
+ "code": "bo",
+ "name": "tibetanu"
+ },
+ "ti": {
+ "code": "ti",
+ "name": "tigrinya"
+ },
+ "to": {
+ "code": "to",
+ "name": "tonganu"
+ },
+ "tr": {
+ "code": "tr",
+ "name": "turcu"
+ },
+ "uk": {
+ "code": "uk",
+ "name": "ucraín"
+ },
+ "ug": {
+ "code": "ug",
+ "name": "uigur"
+ },
+ "ur": {
+ "code": "ur",
+ "name": "Urdu"
+ },
+ "uz": {
+ "code": "uz",
+ "name": "uzbequistanín"
+ },
+ "vai": {
+ "code": "vai",
+ "name": "Vai"
+ },
+ "eu": {
+ "code": "eu",
+ "name": "vascu"
+ },
+ "vi": {
+ "code": "vi",
+ "name": "vietnamín"
+ },
+ "vun": {
+ "code": "vun",
+ "name": "vunjo"
+ },
+ "wae": {
+ "code": "wae",
+ "name": "Walser"
+ },
+ "ja": {
+ "code": "ja",
+ "name": "xaponés"
+ },
+ "ka": {
+ "code": "ka",
+ "name": "xeorxanu"
+ },
+ "yav": {
+ "code": "yav",
+ "name": "yangben"
+ },
+ "yo": {
+ "code": "yo",
+ "name": "yoruba"
+ },
+ "dje": {
+ "code": "dje",
+ "name": "zarma"
+ },
+ "zu": {
+ "code": "zu",
+ "name": "zulú"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/language/az.json b/library/intl/resources/language/az.json
new file mode 100644
index 000000000..b0af15ae4
--- /dev/null
+++ b/library/intl/resources/language/az.json
@@ -0,0 +1,738 @@
+{
+ "af": {
+ "code": "af",
+ "name": "afrikaans"
+ },
+ "ak": {
+ "code": "ak",
+ "name": "akanca"
+ },
+ "agq": {
+ "code": "agq",
+ "name": "aqhem"
+ },
+ "sq": {
+ "code": "sq",
+ "name": "alban"
+ },
+ "de": {
+ "code": "de",
+ "name": "alman"
+ },
+ "en-US": {
+ "code": "en-US",
+ "name": "Amerika ingiliscəsi"
+ },
+ "am": {
+ "code": "am",
+ "name": "amhar"
+ },
+ "ast": {
+ "code": "ast",
+ "name": "asturicÉ™"
+ },
+ "asa": {
+ "code": "asa",
+ "name": "asu"
+ },
+ "dsb": {
+ "code": "dsb",
+ "name": "aşağı sorb"
+ },
+ "en-AU": {
+ "code": "en-AU",
+ "name": "Avstraliya ingiliscəsi"
+ },
+ "de-AT": {
+ "code": "de-AT",
+ "name": "Avstriya almancası"
+ },
+ "az": {
+ "code": "az",
+ "name": "azərbaycan"
+ },
+ "ksf": {
+ "code": "ksf",
+ "name": "bafia"
+ },
+ "bm": {
+ "code": "bm",
+ "name": "bambara"
+ },
+ "bas": {
+ "code": "bas",
+ "name": "basa dili"
+ },
+ "eu": {
+ "code": "eu",
+ "name": "bask"
+ },
+ "be": {
+ "code": "be",
+ "name": "belarus"
+ },
+ "bez": {
+ "code": "bez",
+ "name": "bena"
+ },
+ "bn": {
+ "code": "bn",
+ "name": "benqal"
+ },
+ "my": {
+ "code": "my",
+ "name": "birma"
+ },
+ "brx": {
+ "code": "brx",
+ "name": "bodo"
+ },
+ "nb": {
+ "code": "nb",
+ "name": "bokmal norveç"
+ },
+ "bg": {
+ "code": "bg",
+ "name": "bolqar"
+ },
+ "bs": {
+ "code": "bs",
+ "name": "bosniak"
+ },
+ "pt-BR": {
+ "code": "pt-BR",
+ "name": "Braziliya portuqalcası"
+ },
+ "br": {
+ "code": "br",
+ "name": "Bretonca"
+ },
+ "en-GB": {
+ "code": "en-GB",
+ "name": "Britaniya ingiliscəsi"
+ },
+ "ksh": {
+ "code": "ksh",
+ "name": "Colognian"
+ },
+ "cs": {
+ "code": "cs",
+ "name": "çex"
+ },
+ "cgg": {
+ "code": "cgg",
+ "name": "çiqa"
+ },
+ "zh": {
+ "code": "zh",
+ "name": "çin"
+ },
+ "chr": {
+ "code": "chr",
+ "name": "çiroki"
+ },
+ "da": {
+ "code": "da",
+ "name": "danimarka"
+ },
+ "dyo": {
+ "code": "dyo",
+ "name": "diola"
+ },
+ "dz": {
+ "code": "dz",
+ "name": "dzonqa"
+ },
+ "ebu": {
+ "code": "ebu",
+ "name": "embu"
+ },
+ "hy": {
+ "code": "hy",
+ "name": "erməni"
+ },
+ "eo": {
+ "code": "eo",
+ "name": "esperanto"
+ },
+ "et": {
+ "code": "et",
+ "name": "eston"
+ },
+ "ee": {
+ "code": "ee",
+ "name": "eve"
+ },
+ "ewo": {
+ "code": "ewo",
+ "name": "evondo dili"
+ },
+ "zh-Hant": {
+ "code": "zh-Hant",
+ "name": "ənənəvi çin"
+ },
+ "ar": {
+ "code": "ar",
+ "name": "ərəb"
+ },
+ "fo": {
+ "code": "fo",
+ "name": "farer"
+ },
+ "fa": {
+ "code": "fa",
+ "name": "fars"
+ },
+ "fil": {
+ "code": "fil",
+ "name": "filippin"
+ },
+ "fi": {
+ "code": "fi",
+ "name": "fin"
+ },
+ "nl-BE": {
+ "code": "nl-BE",
+ "name": "flamand"
+ },
+ "fr": {
+ "code": "fr",
+ "name": "fransız"
+ },
+ "fur": {
+ "code": "fur",
+ "name": "friul dili"
+ },
+ "ff": {
+ "code": "ff",
+ "name": "fula dili"
+ },
+ "ka": {
+ "code": "ka",
+ "name": "gürcü"
+ },
+ "ha": {
+ "code": "ha",
+ "name": "hausa"
+ },
+ "hi": {
+ "code": "hi",
+ "name": "hindi"
+ },
+ "nl": {
+ "code": "nl",
+ "name": "holland"
+ },
+ "hr": {
+ "code": "hr",
+ "name": "xorvat"
+ },
+ "id": {
+ "code": "id",
+ "name": "indonez"
+ },
+ "en": {
+ "code": "en",
+ "name": "ingilis"
+ },
+ "ga": {
+ "code": "ga",
+ "name": "irland"
+ },
+ "is": {
+ "code": "is",
+ "name": "island"
+ },
+ "es": {
+ "code": "es",
+ "name": "ispan"
+ },
+ "sv": {
+ "code": "sv",
+ "name": "isveç"
+ },
+ "gsw": {
+ "code": "gsw",
+ "name": "İsveçrə almancası"
+ },
+ "fr-CH": {
+ "code": "fr-CH",
+ "name": "İsveçrə fransızcası"
+ },
+ "de-CH": {
+ "code": "de-CH",
+ "name": "İsveçrə yüksək almancası"
+ },
+ "it": {
+ "code": "it",
+ "name": "italyan"
+ },
+ "he": {
+ "code": "he",
+ "name": "ivrit"
+ },
+ "kab": {
+ "code": "kab",
+ "name": "kabile"
+ },
+ "kea": {
+ "code": "kea",
+ "name": "kabuverdian"
+ },
+ "kl": {
+ "code": "kl",
+ "name": "kalaallisut"
+ },
+ "kln": {
+ "code": "kln",
+ "name": "kalencin"
+ },
+ "kam": {
+ "code": "kam",
+ "name": "kamba"
+ },
+ "fr-CA": {
+ "code": "fr-CA",
+ "name": "Kanada fransızcası"
+ },
+ "en-CA": {
+ "code": "en-CA",
+ "name": "Kanada ingiliscəsi"
+ },
+ "kn": {
+ "code": "kn",
+ "name": "kannada"
+ },
+ "es-ES": {
+ "code": "es-ES",
+ "name": "Kastiliya ispancası"
+ },
+ "ks": {
+ "code": "ks",
+ "name": "kaÅŸmir"
+ },
+ "ca": {
+ "code": "ca",
+ "name": "katalan"
+ },
+ "km": {
+ "code": "km",
+ "name": "kxmer"
+ },
+ "ki": {
+ "code": "ki",
+ "name": "kikuyu"
+ },
+ "swc": {
+ "code": "swc",
+ "name": "Konqo suahilicəsi"
+ },
+ "ko": {
+ "code": "ko",
+ "name": "koreya"
+ },
+ "khq": {
+ "code": "khq",
+ "name": "koyra çiini"
+ },
+ "ses": {
+ "code": "ses",
+ "name": "koyraboro senni"
+ },
+ "nmg": {
+ "code": "nmg",
+ "name": "kvasio"
+ },
+ "gl": {
+ "code": "gl",
+ "name": "qalisian"
+ },
+ "lg": {
+ "code": "lg",
+ "name": "qanda"
+ },
+ "kk": {
+ "code": "kk",
+ "name": "qazax"
+ },
+ "fy": {
+ "code": "fy",
+ "name": "qərbi friz"
+ },
+ "ky": {
+ "code": "ky",
+ "name": "qırğız"
+ },
+ "gu": {
+ "code": "gu",
+ "name": "qucarat"
+ },
+ "guz": {
+ "code": "guz",
+ "name": "qusi"
+ },
+ "lag": {
+ "code": "lag",
+ "name": "langi"
+ },
+ "lo": {
+ "code": "lo",
+ "name": "laos"
+ },
+ "lv": {
+ "code": "lv",
+ "name": "latış"
+ },
+ "ln": {
+ "code": "ln",
+ "name": "linqala"
+ },
+ "lt": {
+ "code": "lt",
+ "name": "litva"
+ },
+ "lu": {
+ "code": "lu",
+ "name": "luba-katanqa"
+ },
+ "luo": {
+ "code": "luo",
+ "name": "Luo"
+ },
+ "luy": {
+ "code": "luy",
+ "name": "luyia"
+ },
+ "lb": {
+ "code": "lb",
+ "name": "lüksemburq"
+ },
+ "hu": {
+ "code": "hu",
+ "name": "macar"
+ },
+ "jmc": {
+ "code": "jmc",
+ "name": "maçam"
+ },
+ "mgh": {
+ "code": "mgh",
+ "name": "maxuva-meetto"
+ },
+ "mk": {
+ "code": "mk",
+ "name": "makedon"
+ },
+ "kde": {
+ "code": "kde",
+ "name": "makond"
+ },
+ "mg": {
+ "code": "mg",
+ "name": "malaqas"
+ },
+ "ms": {
+ "code": "ms",
+ "name": "malay"
+ },
+ "ml": {
+ "code": "ml",
+ "name": "malayalam"
+ },
+ "mt": {
+ "code": "mt",
+ "name": "malta"
+ },
+ "mr": {
+ "code": "mr",
+ "name": "marati"
+ },
+ "mas": {
+ "code": "mas",
+ "name": "masay"
+ },
+ "es-MX": {
+ "code": "es-MX",
+ "name": "Meksika ispancası"
+ },
+ "mer": {
+ "code": "mer",
+ "name": "meru"
+ },
+ "tzm": {
+ "code": "tzm",
+ "name": "Mərkəzi Atlas tamazicəsi"
+ },
+ "ar-001": {
+ "code": "ar-001",
+ "name": "Modern Standart ÆrÉ™bcÉ™"
+ },
+ "ro-MD": {
+ "code": "ro-MD",
+ "name": "moldav"
+ },
+ "mn": {
+ "code": "mn",
+ "name": "monqol"
+ },
+ "mfe": {
+ "code": "mfe",
+ "name": "morisien"
+ },
+ "mua": {
+ "code": "mua",
+ "name": "mundanq"
+ },
+ "naq": {
+ "code": "naq",
+ "name": "nama"
+ },
+ "ne": {
+ "code": "ne",
+ "name": "nepal"
+ },
+ "jgo": {
+ "code": "jgo",
+ "name": "nqomba"
+ },
+ "nus": {
+ "code": "nus",
+ "name": "nuer"
+ },
+ "nn": {
+ "code": "nn",
+ "name": "nünorsk norveç"
+ },
+ "nyn": {
+ "code": "nyn",
+ "name": "nyankol"
+ },
+ "or": {
+ "code": "or",
+ "name": "oriya"
+ },
+ "uz": {
+ "code": "uz",
+ "name": "özbək"
+ },
+ "pa": {
+ "code": "pa",
+ "name": "pəncab"
+ },
+ "pl": {
+ "code": "pl",
+ "name": "polyak"
+ },
+ "pt": {
+ "code": "pt",
+ "name": "portuqal"
+ },
+ "pt-PT": {
+ "code": "pt-PT",
+ "name": "Portuqaliya portuqalcası"
+ },
+ "ps": {
+ "code": "ps",
+ "name": "puÅŸtu"
+ },
+ "rm": {
+ "code": "rm",
+ "name": "retoroman"
+ },
+ "rof": {
+ "code": "rof",
+ "name": "rombo"
+ },
+ "rwk": {
+ "code": "rwk",
+ "name": "rua"
+ },
+ "ro": {
+ "code": "ro",
+ "name": "rumın"
+ },
+ "rn": {
+ "code": "rn",
+ "name": "rundi"
+ },
+ "ru": {
+ "code": "ru",
+ "name": "rus"
+ },
+ "zh-Hans": {
+ "code": "zh-Hans",
+ "name": "sadələşmiş çin"
+ },
+ "saq": {
+ "code": "saq",
+ "name": "samburu"
+ },
+ "sg": {
+ "code": "sg",
+ "name": "sanqo"
+ },
+ "sbp": {
+ "code": "sbp",
+ "name": "sanqu"
+ },
+ "seh": {
+ "code": "seh",
+ "name": "sena"
+ },
+ "sr": {
+ "code": "sr",
+ "name": "serb"
+ },
+ "si": {
+ "code": "si",
+ "name": "sinhal"
+ },
+ "gd": {
+ "code": "gd",
+ "name": "skot gaelik dili"
+ },
+ "sk": {
+ "code": "sk",
+ "name": "slovak"
+ },
+ "sl": {
+ "code": "sl",
+ "name": "sloven"
+ },
+ "xog": {
+ "code": "xog",
+ "name": "soqa"
+ },
+ "so": {
+ "code": "so",
+ "name": "somali"
+ },
+ "sw": {
+ "code": "sw",
+ "name": "suahili"
+ },
+ "ksb": {
+ "code": "ksb",
+ "name": "ÅŸambala"
+ },
+ "nd": {
+ "code": "nd",
+ "name": "ÅŸimali ndebele"
+ },
+ "se": {
+ "code": "se",
+ "name": "ÅŸimali sami"
+ },
+ "sn": {
+ "code": "sn",
+ "name": "ÅŸona"
+ },
+ "shi": {
+ "code": "shi",
+ "name": "taçelit"
+ },
+ "dav": {
+ "code": "dav",
+ "name": "taita"
+ },
+ "zgh": {
+ "code": "zgh",
+ "name": "tamazi"
+ },
+ "ta": {
+ "code": "ta",
+ "name": "tamil"
+ },
+ "twq": {
+ "code": "twq",
+ "name": "tasavaq"
+ },
+ "th": {
+ "code": "th",
+ "name": "tay"
+ },
+ "te": {
+ "code": "te",
+ "name": "teluqu"
+ },
+ "teo": {
+ "code": "teo",
+ "name": "teso"
+ },
+ "bo": {
+ "code": "bo",
+ "name": "tibet"
+ },
+ "ti": {
+ "code": "ti",
+ "name": "tiqrin"
+ },
+ "to": {
+ "code": "to",
+ "name": "tonqa"
+ },
+ "tr": {
+ "code": "tr",
+ "name": "türk"
+ },
+ "cy": {
+ "code": "cy",
+ "name": "uels"
+ },
+ "uk": {
+ "code": "uk",
+ "name": "ukrayna"
+ },
+ "ur": {
+ "code": "ur",
+ "name": "urdu"
+ },
+ "ug": {
+ "code": "ug",
+ "name": "uyÄŸur"
+ },
+ "vai": {
+ "code": "vai",
+ "name": "Vai"
+ },
+ "vun": {
+ "code": "vun",
+ "name": "vunyo"
+ },
+ "vi": {
+ "code": "vi",
+ "name": "vyetnam"
+ },
+ "wae": {
+ "code": "wae",
+ "name": "Walser"
+ },
+ "yav": {
+ "code": "yav",
+ "name": "Yangben"
+ },
+ "ja": {
+ "code": "ja",
+ "name": "yapon"
+ },
+ "yo": {
+ "code": "yo",
+ "name": "yoruba"
+ },
+ "hsb": {
+ "code": "hsb",
+ "name": "yuxarı sorb"
+ },
+ "el": {
+ "code": "el",
+ "name": "yunan"
+ },
+ "dje": {
+ "code": "dje",
+ "name": "zarma"
+ },
+ "zu": {
+ "code": "zu",
+ "name": "zulu"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/language/bas.json b/library/intl/resources/language/bas.json
new file mode 100644
index 000000000..fac49c2c7
--- /dev/null
+++ b/library/intl/resources/language/bas.json
@@ -0,0 +1,738 @@
+{
+ "af": {
+ "code": "af",
+ "name": "Afrikaans"
+ },
+ "agq": {
+ "code": "agq",
+ "name": "Aghem"
+ },
+ "sq": {
+ "code": "sq",
+ "name": "Albanian"
+ },
+ "ar-001": {
+ "code": "ar-001",
+ "name": "ar_001"
+ },
+ "hy": {
+ "code": "hy",
+ "name": "Armenian"
+ },
+ "ast": {
+ "code": "ast",
+ "name": "Asturian"
+ },
+ "asa": {
+ "code": "asa",
+ "name": "Asu"
+ },
+ "az": {
+ "code": "az",
+ "name": "Azerbaijani"
+ },
+ "ksf": {
+ "code": "ksf",
+ "name": "Bafia"
+ },
+ "bm": {
+ "code": "bm",
+ "name": "Bambara"
+ },
+ "eu": {
+ "code": "eu",
+ "name": "Basque"
+ },
+ "bez": {
+ "code": "bez",
+ "name": "Bena"
+ },
+ "brx": {
+ "code": "brx",
+ "name": "Bodo"
+ },
+ "bs": {
+ "code": "bs",
+ "name": "Bosnian"
+ },
+ "br": {
+ "code": "br",
+ "name": "Breton"
+ },
+ "bas": {
+ "code": "bas",
+ "name": "Æàsàa"
+ },
+ "ca": {
+ "code": "ca",
+ "name": "Catalan"
+ },
+ "tzm": {
+ "code": "tzm",
+ "name": "Central Atlas Tamazight"
+ },
+ "chr": {
+ "code": "chr",
+ "name": "Cherokee"
+ },
+ "cgg": {
+ "code": "cgg",
+ "name": "Chiga"
+ },
+ "ksh": {
+ "code": "ksh",
+ "name": "Colognian"
+ },
+ "swc": {
+ "code": "swc",
+ "name": "Congo Swahili"
+ },
+ "hr": {
+ "code": "hr",
+ "name": "Croatian"
+ },
+ "da": {
+ "code": "da",
+ "name": "Danish"
+ },
+ "de-AT": {
+ "code": "de-AT",
+ "name": "de_AT"
+ },
+ "de-CH": {
+ "code": "de-CH",
+ "name": "de_CH"
+ },
+ "dz": {
+ "code": "dz",
+ "name": "Dzongkha"
+ },
+ "ebu": {
+ "code": "ebu",
+ "name": "Embu"
+ },
+ "en-AU": {
+ "code": "en-AU",
+ "name": "en_AU"
+ },
+ "en-CA": {
+ "code": "en-CA",
+ "name": "en_CA"
+ },
+ "en-GB": {
+ "code": "en-GB",
+ "name": "en_GB"
+ },
+ "en-US": {
+ "code": "en-US",
+ "name": "en_US"
+ },
+ "es-ES": {
+ "code": "es-ES",
+ "name": "es_ES"
+ },
+ "es-MX": {
+ "code": "es-MX",
+ "name": "es_MX"
+ },
+ "eo": {
+ "code": "eo",
+ "name": "Esperanto"
+ },
+ "et": {
+ "code": "et",
+ "name": "Estonian"
+ },
+ "ee": {
+ "code": "ee",
+ "name": "Ewe"
+ },
+ "ewo": {
+ "code": "ewo",
+ "name": "Ewondo"
+ },
+ "fo": {
+ "code": "fo",
+ "name": "Faroese"
+ },
+ "fil": {
+ "code": "fil",
+ "name": "Filipino"
+ },
+ "fi": {
+ "code": "fi",
+ "name": "Finnish"
+ },
+ "fr-CA": {
+ "code": "fr-CA",
+ "name": "fr_CA"
+ },
+ "fr-CH": {
+ "code": "fr-CH",
+ "name": "fr_CH"
+ },
+ "fur": {
+ "code": "fur",
+ "name": "Friulian"
+ },
+ "ff": {
+ "code": "ff",
+ "name": "Fulah"
+ },
+ "gl": {
+ "code": "gl",
+ "name": "Galician"
+ },
+ "lg": {
+ "code": "lg",
+ "name": "Ganda"
+ },
+ "ka": {
+ "code": "ka",
+ "name": "Georgian"
+ },
+ "gu": {
+ "code": "gu",
+ "name": "Gujarati"
+ },
+ "guz": {
+ "code": "guz",
+ "name": "Gusii"
+ },
+ "he": {
+ "code": "he",
+ "name": "Hebrew"
+ },
+ "ak": {
+ "code": "ak",
+ "name": "Hɔp u akan"
+ },
+ "am": {
+ "code": "am",
+ "name": "HÉ”p u amhÄrìk"
+ },
+ "ar": {
+ "code": "ar",
+ "name": "Hɔp u arâb"
+ },
+ "bn": {
+ "code": "bn",
+ "name": "Hɔp u bɛŋgàli"
+ },
+ "be": {
+ "code": "be",
+ "name": "Hɔp u bièlòrûs"
+ },
+ "my": {
+ "code": "my",
+ "name": "Hɔp u birmàn"
+ },
+ "bg": {
+ "code": "bg",
+ "name": "Hɔp u bûlgâr"
+ },
+ "ha": {
+ "code": "ha",
+ "name": "Hɔp u ɓausa"
+ },
+ "cs": {
+ "code": "cs",
+ "name": "Hɔp u cɛ̂k"
+ },
+ "el": {
+ "code": "el",
+ "name": "Hɔp u gri ᷇kyà"
+ },
+ "hi": {
+ "code": "hi",
+ "name": "Hɔp u hindì"
+ },
+ "hu": {
+ "code": "hu",
+ "name": "Hɔp u hɔŋgrìi"
+ },
+ "id": {
+ "code": "id",
+ "name": "Hɔp u indònesìà"
+ },
+ "it": {
+ "code": "it",
+ "name": "Hɔp u italìà"
+ },
+ "de": {
+ "code": "de",
+ "name": "Hɔp u jamân"
+ },
+ "zh": {
+ "code": "zh",
+ "name": "Hɔp u kinà"
+ },
+ "km": {
+ "code": "km",
+ "name": "Hɔp u kmɛ̂r"
+ },
+ "ko": {
+ "code": "ko",
+ "name": "Hɔp u kɔrēà"
+ },
+ "ms": {
+ "code": "ms",
+ "name": "Hɔp u makɛ᷆"
+ },
+ "ne": {
+ "code": "ne",
+ "name": "Hɔp u nepa᷆l"
+ },
+ "nl": {
+ "code": "nl",
+ "name": "Hɔp u nlɛ̀ndi"
+ },
+ "en": {
+ "code": "en",
+ "name": "Hɔp u ŋgisì"
+ },
+ "es": {
+ "code": "es",
+ "name": "HÉ”p u panyÄ"
+ },
+ "pa": {
+ "code": "pa",
+ "name": "Hɔp u pɛnjàbi"
+ },
+ "fa": {
+ "code": "fa",
+ "name": "Hɔp u pɛrsìà"
+ },
+ "pl": {
+ "code": "pl",
+ "name": "Hɔp u pɔlɔ̄nà"
+ },
+ "pt": {
+ "code": "pt",
+ "name": "Hɔp u pɔtɔ̄kì"
+ },
+ "fr": {
+ "code": "fr",
+ "name": "Hɔp u pulàsi"
+ },
+ "ro": {
+ "code": "ro",
+ "name": "Hɔp u rùmanìà"
+ },
+ "ru": {
+ "code": "ru",
+ "name": "Hɔp u ruslànd"
+ },
+ "so": {
+ "code": "so",
+ "name": "Hɔp u somàlî"
+ },
+ "sv": {
+ "code": "sv",
+ "name": "Hɔp u suɛ᷆d"
+ },
+ "ta": {
+ "code": "ta",
+ "name": "Hɔp u tamu᷆l"
+ },
+ "th": {
+ "code": "th",
+ "name": "Hɔp u tây"
+ },
+ "tr": {
+ "code": "tr",
+ "name": "Hɔp u tûrk"
+ },
+ "uk": {
+ "code": "uk",
+ "name": "Hɔp u ukrǎnìà"
+ },
+ "ur": {
+ "code": "ur",
+ "name": "Hɔp u urdù"
+ },
+ "vi": {
+ "code": "vi",
+ "name": "Hɔp u vyɛ̄dnàm"
+ },
+ "ja": {
+ "code": "ja",
+ "name": "Hɔp u yapàn"
+ },
+ "yo": {
+ "code": "yo",
+ "name": "Hɔp u yorūbà"
+ },
+ "zu": {
+ "code": "zu",
+ "name": "Hɔp u zulù"
+ },
+ "is": {
+ "code": "is",
+ "name": "Icelandic"
+ },
+ "ga": {
+ "code": "ga",
+ "name": "Irish"
+ },
+ "dyo": {
+ "code": "dyo",
+ "name": "Jola-Fonyi"
+ },
+ "kea": {
+ "code": "kea",
+ "name": "Kabuverdianu"
+ },
+ "kab": {
+ "code": "kab",
+ "name": "Kabyle"
+ },
+ "kl": {
+ "code": "kl",
+ "name": "Kalaallisut"
+ },
+ "kln": {
+ "code": "kln",
+ "name": "Kalenjin"
+ },
+ "kam": {
+ "code": "kam",
+ "name": "Kamba"
+ },
+ "kn": {
+ "code": "kn",
+ "name": "Kannada"
+ },
+ "ks": {
+ "code": "ks",
+ "name": "Kashmiri"
+ },
+ "kk": {
+ "code": "kk",
+ "name": "Kazakh"
+ },
+ "ki": {
+ "code": "ki",
+ "name": "Kikuyu"
+ },
+ "khq": {
+ "code": "khq",
+ "name": "Koyra Chiini"
+ },
+ "ses": {
+ "code": "ses",
+ "name": "Koyraboro Senni"
+ },
+ "nmg": {
+ "code": "nmg",
+ "name": "Kwasio"
+ },
+ "ky": {
+ "code": "ky",
+ "name": "Kyrgyz"
+ },
+ "lag": {
+ "code": "lag",
+ "name": "Langi"
+ },
+ "lo": {
+ "code": "lo",
+ "name": "Lao"
+ },
+ "lv": {
+ "code": "lv",
+ "name": "Latvian"
+ },
+ "ln": {
+ "code": "ln",
+ "name": "Lingala"
+ },
+ "lt": {
+ "code": "lt",
+ "name": "Lithuanian"
+ },
+ "dsb": {
+ "code": "dsb",
+ "name": "Lower Sorbian"
+ },
+ "lu": {
+ "code": "lu",
+ "name": "Luba-Katanga"
+ },
+ "luo": {
+ "code": "luo",
+ "name": "Luo"
+ },
+ "lb": {
+ "code": "lb",
+ "name": "Luxembourgish"
+ },
+ "luy": {
+ "code": "luy",
+ "name": "Luyia"
+ },
+ "mk": {
+ "code": "mk",
+ "name": "Macedonian"
+ },
+ "jmc": {
+ "code": "jmc",
+ "name": "Machame"
+ },
+ "mgh": {
+ "code": "mgh",
+ "name": "Makhuwa-Meetto"
+ },
+ "kde": {
+ "code": "kde",
+ "name": "Makonde"
+ },
+ "mg": {
+ "code": "mg",
+ "name": "Malagasy"
+ },
+ "ml": {
+ "code": "ml",
+ "name": "Malayalam"
+ },
+ "mt": {
+ "code": "mt",
+ "name": "Maltese"
+ },
+ "mr": {
+ "code": "mr",
+ "name": "Marathi"
+ },
+ "mas": {
+ "code": "mas",
+ "name": "Masai"
+ },
+ "mer": {
+ "code": "mer",
+ "name": "Meru"
+ },
+ "mn": {
+ "code": "mn",
+ "name": "Mongolian"
+ },
+ "mfe": {
+ "code": "mfe",
+ "name": "Morisyen"
+ },
+ "mua": {
+ "code": "mua",
+ "name": "Mundang"
+ },
+ "naq": {
+ "code": "naq",
+ "name": "Nama"
+ },
+ "jgo": {
+ "code": "jgo",
+ "name": "Ngomba"
+ },
+ "nl-BE": {
+ "code": "nl-BE",
+ "name": "nl_BE"
+ },
+ "nd": {
+ "code": "nd",
+ "name": "North Ndebele"
+ },
+ "se": {
+ "code": "se",
+ "name": "Northern Sami"
+ },
+ "nb": {
+ "code": "nb",
+ "name": "Norwegian Bokmål"
+ },
+ "nn": {
+ "code": "nn",
+ "name": "Norwegian Nynorsk"
+ },
+ "nus": {
+ "code": "nus",
+ "name": "Nuer"
+ },
+ "nyn": {
+ "code": "nyn",
+ "name": "Nyankole"
+ },
+ "or": {
+ "code": "or",
+ "name": "Oriya"
+ },
+ "ps": {
+ "code": "ps",
+ "name": "Pashto"
+ },
+ "pt-BR": {
+ "code": "pt-BR",
+ "name": "pt_BR"
+ },
+ "pt-PT": {
+ "code": "pt-PT",
+ "name": "pt_PT"
+ },
+ "ro-MD": {
+ "code": "ro-MD",
+ "name": "ro_MD"
+ },
+ "rm": {
+ "code": "rm",
+ "name": "Romansh"
+ },
+ "rof": {
+ "code": "rof",
+ "name": "Rombo"
+ },
+ "rn": {
+ "code": "rn",
+ "name": "Rundi"
+ },
+ "rwk": {
+ "code": "rwk",
+ "name": "Rwa"
+ },
+ "saq": {
+ "code": "saq",
+ "name": "Samburu"
+ },
+ "sg": {
+ "code": "sg",
+ "name": "Sango"
+ },
+ "sbp": {
+ "code": "sbp",
+ "name": "Sangu"
+ },
+ "gd": {
+ "code": "gd",
+ "name": "Scottish Gaelic"
+ },
+ "seh": {
+ "code": "seh",
+ "name": "Sena"
+ },
+ "sr": {
+ "code": "sr",
+ "name": "Serbian"
+ },
+ "ksb": {
+ "code": "ksb",
+ "name": "Shambala"
+ },
+ "sn": {
+ "code": "sn",
+ "name": "Shona"
+ },
+ "si": {
+ "code": "si",
+ "name": "Sinhala"
+ },
+ "sk": {
+ "code": "sk",
+ "name": "Slovak"
+ },
+ "sl": {
+ "code": "sl",
+ "name": "Slovenian"
+ },
+ "xog": {
+ "code": "xog",
+ "name": "Soga"
+ },
+ "zgh": {
+ "code": "zgh",
+ "name": "Standard Moroccan Tamazight"
+ },
+ "sw": {
+ "code": "sw",
+ "name": "Swahili"
+ },
+ "gsw": {
+ "code": "gsw",
+ "name": "Swiss German"
+ },
+ "shi": {
+ "code": "shi",
+ "name": "Tachelhit"
+ },
+ "dav": {
+ "code": "dav",
+ "name": "Taita"
+ },
+ "twq": {
+ "code": "twq",
+ "name": "Tasawaq"
+ },
+ "te": {
+ "code": "te",
+ "name": "Telugu"
+ },
+ "teo": {
+ "code": "teo",
+ "name": "Teso"
+ },
+ "bo": {
+ "code": "bo",
+ "name": "Tibetan"
+ },
+ "ti": {
+ "code": "ti",
+ "name": "Tigrinya"
+ },
+ "to": {
+ "code": "to",
+ "name": "Tongan"
+ },
+ "hsb": {
+ "code": "hsb",
+ "name": "Upper Sorbian"
+ },
+ "ug": {
+ "code": "ug",
+ "name": "Uyghur"
+ },
+ "uz": {
+ "code": "uz",
+ "name": "Uzbek"
+ },
+ "vai": {
+ "code": "vai",
+ "name": "Vai"
+ },
+ "vun": {
+ "code": "vun",
+ "name": "Vunjo"
+ },
+ "wae": {
+ "code": "wae",
+ "name": "Walser"
+ },
+ "cy": {
+ "code": "cy",
+ "name": "Welsh"
+ },
+ "fy": {
+ "code": "fy",
+ "name": "Western Frisian"
+ },
+ "yav": {
+ "code": "yav",
+ "name": "Yangben"
+ },
+ "dje": {
+ "code": "dje",
+ "name": "Zarma"
+ },
+ "zh-Hans": {
+ "code": "zh-Hans",
+ "name": "zh_Hans"
+ },
+ "zh-Hant": {
+ "code": "zh-Hant",
+ "name": "zh_Hant"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/language/be.json b/library/intl/resources/language/be.json
new file mode 100644
index 000000000..3a53bd0d8
--- /dev/null
+++ b/library/intl/resources/language/be.json
@@ -0,0 +1,738 @@
+{
+ "agq": {
+ "code": "agq",
+ "name": "Aghem"
+ },
+ "ak": {
+ "code": "ak",
+ "name": "Akan"
+ },
+ "ar-001": {
+ "code": "ar-001",
+ "name": "ar_001"
+ },
+ "asa": {
+ "code": "asa",
+ "name": "Asu"
+ },
+ "ksf": {
+ "code": "ksf",
+ "name": "Bafia"
+ },
+ "bm": {
+ "code": "bm",
+ "name": "Bambara"
+ },
+ "bas": {
+ "code": "bas",
+ "name": "Basaa"
+ },
+ "bez": {
+ "code": "bez",
+ "name": "Bena"
+ },
+ "brx": {
+ "code": "brx",
+ "name": "Bodo"
+ },
+ "my": {
+ "code": "my",
+ "name": "Burmese"
+ },
+ "tzm": {
+ "code": "tzm",
+ "name": "Central Atlas Tamazight"
+ },
+ "chr": {
+ "code": "chr",
+ "name": "Cherokee"
+ },
+ "cgg": {
+ "code": "cgg",
+ "name": "Chiga"
+ },
+ "ksh": {
+ "code": "ksh",
+ "name": "Colognian"
+ },
+ "swc": {
+ "code": "swc",
+ "name": "Congo Swahili"
+ },
+ "dz": {
+ "code": "dz",
+ "name": "Dzongkha"
+ },
+ "ebu": {
+ "code": "ebu",
+ "name": "Embu"
+ },
+ "en-GB": {
+ "code": "en-GB",
+ "name": "en_GB"
+ },
+ "es-ES": {
+ "code": "es-ES",
+ "name": "es_ES"
+ },
+ "es-MX": {
+ "code": "es-MX",
+ "name": "es_MX"
+ },
+ "ee": {
+ "code": "ee",
+ "name": "Ewe"
+ },
+ "ewo": {
+ "code": "ewo",
+ "name": "Ewondo"
+ },
+ "fur": {
+ "code": "fur",
+ "name": "Friulian"
+ },
+ "ff": {
+ "code": "ff",
+ "name": "Fulah"
+ },
+ "lg": {
+ "code": "lg",
+ "name": "Ganda"
+ },
+ "guz": {
+ "code": "guz",
+ "name": "Gusii"
+ },
+ "ha": {
+ "code": "ha",
+ "name": "Hausa"
+ },
+ "dyo": {
+ "code": "dyo",
+ "name": "Jola-Fonyi"
+ },
+ "kea": {
+ "code": "kea",
+ "name": "Kabuverdianu"
+ },
+ "kab": {
+ "code": "kab",
+ "name": "Kabyle"
+ },
+ "kl": {
+ "code": "kl",
+ "name": "Kalaallisut"
+ },
+ "kln": {
+ "code": "kln",
+ "name": "Kalenjin"
+ },
+ "kam": {
+ "code": "kam",
+ "name": "Kamba"
+ },
+ "ks": {
+ "code": "ks",
+ "name": "Kashmiri"
+ },
+ "km": {
+ "code": "km",
+ "name": "Khmer"
+ },
+ "ki": {
+ "code": "ki",
+ "name": "Kikuyu"
+ },
+ "khq": {
+ "code": "khq",
+ "name": "Koyra Chiini"
+ },
+ "ses": {
+ "code": "ses",
+ "name": "Koyraboro Senni"
+ },
+ "nmg": {
+ "code": "nmg",
+ "name": "Kwasio"
+ },
+ "ky": {
+ "code": "ky",
+ "name": "Kyrgyz"
+ },
+ "lag": {
+ "code": "lag",
+ "name": "Langi"
+ },
+ "dsb": {
+ "code": "dsb",
+ "name": "Lower Sorbian"
+ },
+ "lu": {
+ "code": "lu",
+ "name": "Luba-Katanga"
+ },
+ "lb": {
+ "code": "lb",
+ "name": "Luxembourgish"
+ },
+ "luy": {
+ "code": "luy",
+ "name": "Luyia"
+ },
+ "jmc": {
+ "code": "jmc",
+ "name": "Machame"
+ },
+ "mgh": {
+ "code": "mgh",
+ "name": "Makhuwa-Meetto"
+ },
+ "kde": {
+ "code": "kde",
+ "name": "Makonde"
+ },
+ "mer": {
+ "code": "mer",
+ "name": "Meru"
+ },
+ "mfe": {
+ "code": "mfe",
+ "name": "Morisyen"
+ },
+ "mua": {
+ "code": "mua",
+ "name": "Mundang"
+ },
+ "naq": {
+ "code": "naq",
+ "name": "Nama"
+ },
+ "jgo": {
+ "code": "jgo",
+ "name": "Ngomba"
+ },
+ "nd": {
+ "code": "nd",
+ "name": "North Ndebele"
+ },
+ "se": {
+ "code": "se",
+ "name": "Northern Sami"
+ },
+ "nus": {
+ "code": "nus",
+ "name": "Nuer"
+ },
+ "nyn": {
+ "code": "nyn",
+ "name": "Nyankole"
+ },
+ "pt-PT": {
+ "code": "pt-PT",
+ "name": "pt_PT"
+ },
+ "rof": {
+ "code": "rof",
+ "name": "Rombo"
+ },
+ "rn": {
+ "code": "rn",
+ "name": "Rundi"
+ },
+ "rwk": {
+ "code": "rwk",
+ "name": "Rwa"
+ },
+ "saq": {
+ "code": "saq",
+ "name": "Samburu"
+ },
+ "sg": {
+ "code": "sg",
+ "name": "Sango"
+ },
+ "sbp": {
+ "code": "sbp",
+ "name": "Sangu"
+ },
+ "seh": {
+ "code": "seh",
+ "name": "Sena"
+ },
+ "ksb": {
+ "code": "ksb",
+ "name": "Shambala"
+ },
+ "sn": {
+ "code": "sn",
+ "name": "Shona"
+ },
+ "xog": {
+ "code": "xog",
+ "name": "Soga"
+ },
+ "zgh": {
+ "code": "zgh",
+ "name": "Standard Moroccan Tamazight"
+ },
+ "gsw": {
+ "code": "gsw",
+ "name": "Swiss German"
+ },
+ "shi": {
+ "code": "shi",
+ "name": "Tachelhit"
+ },
+ "dav": {
+ "code": "dav",
+ "name": "Taita"
+ },
+ "twq": {
+ "code": "twq",
+ "name": "Tasawaq"
+ },
+ "teo": {
+ "code": "teo",
+ "name": "Teso"
+ },
+ "bo": {
+ "code": "bo",
+ "name": "Tibetan"
+ },
+ "to": {
+ "code": "to",
+ "name": "Tongan"
+ },
+ "hsb": {
+ "code": "hsb",
+ "name": "Upper Sorbian"
+ },
+ "vai": {
+ "code": "vai",
+ "name": "Vai"
+ },
+ "vun": {
+ "code": "vun",
+ "name": "Vunjo"
+ },
+ "wae": {
+ "code": "wae",
+ "name": "Walser"
+ },
+ "yav": {
+ "code": "yav",
+ "name": "Yangben"
+ },
+ "yo": {
+ "code": "yo",
+ "name": "Yoruba"
+ },
+ "dje": {
+ "code": "dje",
+ "name": "Zarma"
+ },
+ "az": {
+ "code": "az",
+ "name": "азербайджанÑкаÑ"
+ },
+ "sq": {
+ "code": "sq",
+ "name": "албанÑкаÑ"
+ },
+ "am": {
+ "code": "am",
+ "name": "амхарÑкаÑ"
+ },
+ "en": {
+ "code": "en",
+ "name": "англійÑкаÑ"
+ },
+ "en-AU": {
+ "code": "en-AU",
+ "name": "англійÑÐºÐ°Ñ (аўÑтрал.)"
+ },
+ "en-US": {
+ "code": "en-US",
+ "name": "англійÑÐºÐ°Ñ (ЗШÐ)"
+ },
+ "en-CA": {
+ "code": "en-CA",
+ "name": "англійÑÐºÐ°Ñ (канад.)"
+ },
+ "ar": {
+ "code": "ar",
+ "name": "арабÑкаÑ"
+ },
+ "hy": {
+ "code": "hy",
+ "name": "армÑнÑкаÑ"
+ },
+ "ast": {
+ "code": "ast",
+ "name": "аÑтурыйÑкаÑ"
+ },
+ "af": {
+ "code": "af",
+ "name": "афрыкаанÑ"
+ },
+ "bg": {
+ "code": "bg",
+ "name": "балгарÑкаÑ"
+ },
+ "eu": {
+ "code": "eu",
+ "name": "баÑкÑкаÑ"
+ },
+ "bs": {
+ "code": "bs",
+ "name": "баÑнійÑкаÑ"
+ },
+ "be": {
+ "code": "be",
+ "name": "беларуÑкаÑ"
+ },
+ "bn": {
+ "code": "bn",
+ "name": "бенгальÑкаÑ"
+ },
+ "br": {
+ "code": "br",
+ "name": "брÑтонÑкаÑ"
+ },
+ "vi": {
+ "code": "vi",
+ "name": "в’етнамÑкаÑ"
+ },
+ "cy": {
+ "code": "cy",
+ "name": "валійÑкаÑ"
+ },
+ "hu": {
+ "code": "hu",
+ "name": "венгерÑкаÑ"
+ },
+ "nl": {
+ "code": "nl",
+ "name": "галандÑкаÑ"
+ },
+ "gl": {
+ "code": "gl",
+ "name": "галіÑійÑкаÑ"
+ },
+ "ka": {
+ "code": "ka",
+ "name": "грузінÑкаÑ"
+ },
+ "el": {
+ "code": "el",
+ "name": "грÑцкаÑ"
+ },
+ "gu": {
+ "code": "gu",
+ "name": "гуÑраці"
+ },
+ "da": {
+ "code": "da",
+ "name": "дацкаÑ"
+ },
+ "zu": {
+ "code": "zu",
+ "name": "зулу"
+ },
+ "id": {
+ "code": "id",
+ "name": "інданезійÑкаÑ"
+ },
+ "ga": {
+ "code": "ga",
+ "name": "ірландÑкаÑ"
+ },
+ "is": {
+ "code": "is",
+ "name": "Ñ–ÑландÑкаÑ"
+ },
+ "es": {
+ "code": "es",
+ "name": "Ñ–ÑпанÑкаÑ"
+ },
+ "it": {
+ "code": "it",
+ "name": "італьÑнÑкаÑ"
+ },
+ "he": {
+ "code": "he",
+ "name": "іўрыт"
+ },
+ "kk": {
+ "code": "kk",
+ "name": "казахÑкаÑ"
+ },
+ "kn": {
+ "code": "kn",
+ "name": "каннада"
+ },
+ "ko": {
+ "code": "ko",
+ "name": "карÑйÑкаÑ"
+ },
+ "ca": {
+ "code": "ca",
+ "name": "каталонÑкаÑ"
+ },
+ "zh": {
+ "code": "zh",
+ "name": "кітайÑкаÑ"
+ },
+ "lo": {
+ "code": "lo",
+ "name": "лаоÑкаÑ"
+ },
+ "lv": {
+ "code": "lv",
+ "name": "латышÑкаÑ"
+ },
+ "ln": {
+ "code": "ln",
+ "name": "лінгала"
+ },
+ "lt": {
+ "code": "lt",
+ "name": "літоўÑкаÑ"
+ },
+ "luo": {
+ "code": "luo",
+ "name": "луо"
+ },
+ "mk": {
+ "code": "mk",
+ "name": "македонÑкаÑ"
+ },
+ "ms": {
+ "code": "ms",
+ "name": "малайÑкаÑ"
+ },
+ "ml": {
+ "code": "ml",
+ "name": "малаÑламÑкаÑ"
+ },
+ "ro-MD": {
+ "code": "ro-MD",
+ "name": "малдаўÑкаÑ"
+ },
+ "mg": {
+ "code": "mg",
+ "name": "мальгашÑкаÑ"
+ },
+ "mt": {
+ "code": "mt",
+ "name": "мальтыйÑкаÑ"
+ },
+ "mn": {
+ "code": "mn",
+ "name": "мангольÑкаÑ"
+ },
+ "mr": {
+ "code": "mr",
+ "name": "маратхі"
+ },
+ "mas": {
+ "code": "mas",
+ "name": "маÑаі"
+ },
+ "nn": {
+ "code": "nn",
+ "name": "нарвежÑÐºÐ°Ñ (нюнорÑк)"
+ },
+ "nb": {
+ "code": "nb",
+ "name": "нарвÑÑÐºÐ°Ñ Ð±ÑƒÐºÐ¼Ð°Ð»"
+ },
+ "ne": {
+ "code": "ne",
+ "name": "непальÑкаÑ"
+ },
+ "de": {
+ "code": "de",
+ "name": "нÑмецкаÑ"
+ },
+ "de-AT": {
+ "code": "de-AT",
+ "name": "нÑÐ¼ÐµÑ†ÐºÐ°Ñ (аўÑÑ‚Ñ€.)"
+ },
+ "de-CH": {
+ "code": "de-CH",
+ "name": "нÑÐ¼ÐµÑ†ÐºÐ°Ñ (швейц.)"
+ },
+ "or": {
+ "code": "or",
+ "name": "орыÑ"
+ },
+ "pa": {
+ "code": "pa",
+ "name": "панджабі"
+ },
+ "pt": {
+ "code": "pt",
+ "name": "партугальÑкаÑ"
+ },
+ "pt-BR": {
+ "code": "pt-BR",
+ "name": "партугальÑÐºÐ°Ñ (бразіл.)"
+ },
+ "pl": {
+ "code": "pl",
+ "name": "польÑкаÑ"
+ },
+ "ps": {
+ "code": "ps",
+ "name": "пушту"
+ },
+ "ro": {
+ "code": "ro",
+ "name": "румынÑкаÑ"
+ },
+ "ru": {
+ "code": "ru",
+ "name": "руÑкаÑ"
+ },
+ "rm": {
+ "code": "rm",
+ "name": "Ñ€Ñта-раманÑкаÑ"
+ },
+ "so": {
+ "code": "so",
+ "name": "ÑамалійÑкаÑ"
+ },
+ "sr": {
+ "code": "sr",
+ "name": "ÑербÑкаÑ"
+ },
+ "si": {
+ "code": "si",
+ "name": "ÑінгальÑкаÑ"
+ },
+ "sk": {
+ "code": "sk",
+ "name": "ÑлавацкаÑ"
+ },
+ "sl": {
+ "code": "sl",
+ "name": "ÑлавенÑкаÑ"
+ },
+ "zh-Hans": {
+ "code": "zh-Hans",
+ "name": "ÑÐ¿Ñ€Ð¾ÑˆÑ‡Ð°Ð½Ð°Ñ ÐºÑ–Ñ‚Ð°Ð¹ÑкаÑ"
+ },
+ "sw": {
+ "code": "sw",
+ "name": "Ñуахілі"
+ },
+ "fil": {
+ "code": "fil",
+ "name": "тагальÑкаÑ"
+ },
+ "th": {
+ "code": "th",
+ "name": "тайÑкаÑ"
+ },
+ "ta": {
+ "code": "ta",
+ "name": "тамільÑкаÑ"
+ },
+ "zh-Hant": {
+ "code": "zh-Hant",
+ "name": "Ñ‚Ñ€Ð°Ð´Ñ‹Ñ†Ñ‹Ð¹Ð½Ð°Ñ ÐºÑ–Ñ‚Ð°Ð¹ÑкаÑ"
+ },
+ "tr": {
+ "code": "tr",
+ "name": "турÑцкаÑ"
+ },
+ "ti": {
+ "code": "ti",
+ "name": "тыгрыньÑ"
+ },
+ "te": {
+ "code": "te",
+ "name": "Ñ‚Ñлугу"
+ },
+ "uz": {
+ "code": "uz",
+ "name": "узбекÑкаÑ"
+ },
+ "ug": {
+ "code": "ug",
+ "name": "уйгурÑкаÑ"
+ },
+ "uk": {
+ "code": "uk",
+ "name": "украінÑкаÑ"
+ },
+ "ur": {
+ "code": "ur",
+ "name": "урду"
+ },
+ "fa": {
+ "code": "fa",
+ "name": "фарÑÑ–"
+ },
+ "fo": {
+ "code": "fo",
+ "name": "фарÑÑ€ÑкаÑ"
+ },
+ "fi": {
+ "code": "fi",
+ "name": "фінÑкаÑ"
+ },
+ "nl-BE": {
+ "code": "nl-BE",
+ "name": "фламандÑкаÑ"
+ },
+ "fr": {
+ "code": "fr",
+ "name": "французÑкаÑ"
+ },
+ "fr-CA": {
+ "code": "fr-CA",
+ "name": "французÑÐºÐ°Ñ (канад.)"
+ },
+ "fr-CH": {
+ "code": "fr-CH",
+ "name": "французÑÐºÐ°Ñ (швейц.)"
+ },
+ "fy": {
+ "code": "fy",
+ "name": "фрызÑкаÑ"
+ },
+ "hr": {
+ "code": "hr",
+ "name": "харвацкаÑ"
+ },
+ "hi": {
+ "code": "hi",
+ "name": "хіндзі"
+ },
+ "cs": {
+ "code": "cs",
+ "name": "чÑшÑкаÑ"
+ },
+ "gd": {
+ "code": "gd",
+ "name": "шатландÑÐºÐ°Ñ Ð³ÑльÑкаÑ"
+ },
+ "sv": {
+ "code": "sv",
+ "name": "шведÑкаÑ"
+ },
+ "eo": {
+ "code": "eo",
+ "name": "ÑÑперанта"
+ },
+ "et": {
+ "code": "et",
+ "name": "ÑÑтонÑкаÑ"
+ },
+ "ja": {
+ "code": "ja",
+ "name": "ÑпонÑкаÑ"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/language/bez.json b/library/intl/resources/language/bez.json
new file mode 100644
index 000000000..c6876e490
--- /dev/null
+++ b/library/intl/resources/language/bez.json
@@ -0,0 +1,738 @@
+{
+ "af": {
+ "code": "af",
+ "name": "Afrikaans"
+ },
+ "agq": {
+ "code": "agq",
+ "name": "Aghem"
+ },
+ "sq": {
+ "code": "sq",
+ "name": "Albanian"
+ },
+ "ar-001": {
+ "code": "ar-001",
+ "name": "ar_001"
+ },
+ "hy": {
+ "code": "hy",
+ "name": "Armenian"
+ },
+ "ast": {
+ "code": "ast",
+ "name": "Asturian"
+ },
+ "asa": {
+ "code": "asa",
+ "name": "Asu"
+ },
+ "az": {
+ "code": "az",
+ "name": "Azerbaijani"
+ },
+ "ksf": {
+ "code": "ksf",
+ "name": "Bafia"
+ },
+ "bm": {
+ "code": "bm",
+ "name": "Bambara"
+ },
+ "bas": {
+ "code": "bas",
+ "name": "Basaa"
+ },
+ "eu": {
+ "code": "eu",
+ "name": "Basque"
+ },
+ "brx": {
+ "code": "brx",
+ "name": "Bodo"
+ },
+ "bs": {
+ "code": "bs",
+ "name": "Bosnian"
+ },
+ "br": {
+ "code": "br",
+ "name": "Breton"
+ },
+ "ca": {
+ "code": "ca",
+ "name": "Catalan"
+ },
+ "tzm": {
+ "code": "tzm",
+ "name": "Central Atlas Tamazight"
+ },
+ "chr": {
+ "code": "chr",
+ "name": "Cherokee"
+ },
+ "cgg": {
+ "code": "cgg",
+ "name": "Chiga"
+ },
+ "ksh": {
+ "code": "ksh",
+ "name": "Colognian"
+ },
+ "swc": {
+ "code": "swc",
+ "name": "Congo Swahili"
+ },
+ "hr": {
+ "code": "hr",
+ "name": "Croatian"
+ },
+ "da": {
+ "code": "da",
+ "name": "Danish"
+ },
+ "de-AT": {
+ "code": "de-AT",
+ "name": "de_AT"
+ },
+ "de-CH": {
+ "code": "de-CH",
+ "name": "de_CH"
+ },
+ "dz": {
+ "code": "dz",
+ "name": "Dzongkha"
+ },
+ "ebu": {
+ "code": "ebu",
+ "name": "Embu"
+ },
+ "en-AU": {
+ "code": "en-AU",
+ "name": "en_AU"
+ },
+ "en-CA": {
+ "code": "en-CA",
+ "name": "en_CA"
+ },
+ "en-GB": {
+ "code": "en-GB",
+ "name": "en_GB"
+ },
+ "en-US": {
+ "code": "en-US",
+ "name": "en_US"
+ },
+ "es-ES": {
+ "code": "es-ES",
+ "name": "es_ES"
+ },
+ "es-MX": {
+ "code": "es-MX",
+ "name": "es_MX"
+ },
+ "eo": {
+ "code": "eo",
+ "name": "Esperanto"
+ },
+ "et": {
+ "code": "et",
+ "name": "Estonian"
+ },
+ "ee": {
+ "code": "ee",
+ "name": "Ewe"
+ },
+ "ewo": {
+ "code": "ewo",
+ "name": "Ewondo"
+ },
+ "fo": {
+ "code": "fo",
+ "name": "Faroese"
+ },
+ "fil": {
+ "code": "fil",
+ "name": "Filipino"
+ },
+ "fi": {
+ "code": "fi",
+ "name": "Finnish"
+ },
+ "fr-CA": {
+ "code": "fr-CA",
+ "name": "fr_CA"
+ },
+ "fr-CH": {
+ "code": "fr-CH",
+ "name": "fr_CH"
+ },
+ "fur": {
+ "code": "fur",
+ "name": "Friulian"
+ },
+ "ff": {
+ "code": "ff",
+ "name": "Fulah"
+ },
+ "gl": {
+ "code": "gl",
+ "name": "Galician"
+ },
+ "lg": {
+ "code": "lg",
+ "name": "Ganda"
+ },
+ "ka": {
+ "code": "ka",
+ "name": "Georgian"
+ },
+ "gu": {
+ "code": "gu",
+ "name": "Gujarati"
+ },
+ "guz": {
+ "code": "guz",
+ "name": "Gusii"
+ },
+ "he": {
+ "code": "he",
+ "name": "Hebrew"
+ },
+ "fa": {
+ "code": "fa",
+ "name": "Hiajemi"
+ },
+ "ak": {
+ "code": "ak",
+ "name": "Hiakan"
+ },
+ "am": {
+ "code": "am",
+ "name": "Hiamhari"
+ },
+ "bn": {
+ "code": "bn",
+ "name": "Hibangla"
+ },
+ "be": {
+ "code": "be",
+ "name": "Hibelarusi"
+ },
+ "bez": {
+ "code": "bez",
+ "name": "Hibena"
+ },
+ "bg": {
+ "code": "bg",
+ "name": "Hibulgaria"
+ },
+ "my": {
+ "code": "my",
+ "name": "Hiburma"
+ },
+ "cs": {
+ "code": "cs",
+ "name": "Hicheki"
+ },
+ "zh": {
+ "code": "zh",
+ "name": "Hichina"
+ },
+ "fr": {
+ "code": "fr",
+ "name": "Hifaransa"
+ },
+ "el": {
+ "code": "el",
+ "name": "Higiriki"
+ },
+ "ar": {
+ "code": "ar",
+ "name": "Hiharabu"
+ },
+ "ha": {
+ "code": "ha",
+ "name": "Hihausa"
+ },
+ "hi": {
+ "code": "hi",
+ "name": "Hihindi"
+ },
+ "es": {
+ "code": "es",
+ "name": "Hihispania"
+ },
+ "nl": {
+ "code": "nl",
+ "name": "Hiholanzi"
+ },
+ "hu": {
+ "code": "hu",
+ "name": "Hihungari"
+ },
+ "id": {
+ "code": "id",
+ "name": "Hiindonesia"
+ },
+ "en": {
+ "code": "en",
+ "name": "Hiingereza"
+ },
+ "it": {
+ "code": "it",
+ "name": "Hiitaliano"
+ },
+ "ja": {
+ "code": "ja",
+ "name": "Hijapani"
+ },
+ "de": {
+ "code": "de",
+ "name": "Hijerumani"
+ },
+ "km": {
+ "code": "km",
+ "name": "Hikambodia"
+ },
+ "ko": {
+ "code": "ko",
+ "name": "Hikorea"
+ },
+ "pt": {
+ "code": "pt",
+ "name": "Hileno"
+ },
+ "ro": {
+ "code": "ro",
+ "name": "Hilomania"
+ },
+ "ru": {
+ "code": "ru",
+ "name": "Hilusi"
+ },
+ "ms": {
+ "code": "ms",
+ "name": "Himalesia"
+ },
+ "ne": {
+ "code": "ne",
+ "name": "Hinepali"
+ },
+ "pl": {
+ "code": "pl",
+ "name": "Hipolandi"
+ },
+ "pa": {
+ "code": "pa",
+ "name": "Hipunjabi"
+ },
+ "so": {
+ "code": "so",
+ "name": "Hisomali"
+ },
+ "sv": {
+ "code": "sv",
+ "name": "Hiswidi"
+ },
+ "th": {
+ "code": "th",
+ "name": "Hitailand"
+ },
+ "ta": {
+ "code": "ta",
+ "name": "Hitamil"
+ },
+ "tr": {
+ "code": "tr",
+ "name": "Hituluki"
+ },
+ "uk": {
+ "code": "uk",
+ "name": "Hiukrania"
+ },
+ "ur": {
+ "code": "ur",
+ "name": "Hiurdu"
+ },
+ "vi": {
+ "code": "vi",
+ "name": "Hivietinamu"
+ },
+ "yo": {
+ "code": "yo",
+ "name": "Hiyoruba"
+ },
+ "zu": {
+ "code": "zu",
+ "name": "Hizulu"
+ },
+ "is": {
+ "code": "is",
+ "name": "Icelandic"
+ },
+ "ga": {
+ "code": "ga",
+ "name": "Irish"
+ },
+ "dyo": {
+ "code": "dyo",
+ "name": "Jola-Fonyi"
+ },
+ "kea": {
+ "code": "kea",
+ "name": "Kabuverdianu"
+ },
+ "kab": {
+ "code": "kab",
+ "name": "Kabyle"
+ },
+ "kl": {
+ "code": "kl",
+ "name": "Kalaallisut"
+ },
+ "kln": {
+ "code": "kln",
+ "name": "Kalenjin"
+ },
+ "kam": {
+ "code": "kam",
+ "name": "Kamba"
+ },
+ "kn": {
+ "code": "kn",
+ "name": "Kannada"
+ },
+ "ks": {
+ "code": "ks",
+ "name": "Kashmiri"
+ },
+ "kk": {
+ "code": "kk",
+ "name": "Kazakh"
+ },
+ "ki": {
+ "code": "ki",
+ "name": "Kikuyu"
+ },
+ "khq": {
+ "code": "khq",
+ "name": "Koyra Chiini"
+ },
+ "ses": {
+ "code": "ses",
+ "name": "Koyraboro Senni"
+ },
+ "nmg": {
+ "code": "nmg",
+ "name": "Kwasio"
+ },
+ "ky": {
+ "code": "ky",
+ "name": "Kyrgyz"
+ },
+ "lag": {
+ "code": "lag",
+ "name": "Langi"
+ },
+ "lo": {
+ "code": "lo",
+ "name": "Lao"
+ },
+ "lv": {
+ "code": "lv",
+ "name": "Latvian"
+ },
+ "ln": {
+ "code": "ln",
+ "name": "Lingala"
+ },
+ "lt": {
+ "code": "lt",
+ "name": "Lithuanian"
+ },
+ "dsb": {
+ "code": "dsb",
+ "name": "Lower Sorbian"
+ },
+ "lu": {
+ "code": "lu",
+ "name": "Luba-Katanga"
+ },
+ "luo": {
+ "code": "luo",
+ "name": "Luo"
+ },
+ "lb": {
+ "code": "lb",
+ "name": "Luxembourgish"
+ },
+ "luy": {
+ "code": "luy",
+ "name": "Luyia"
+ },
+ "mk": {
+ "code": "mk",
+ "name": "Macedonian"
+ },
+ "jmc": {
+ "code": "jmc",
+ "name": "Machame"
+ },
+ "mgh": {
+ "code": "mgh",
+ "name": "Makhuwa-Meetto"
+ },
+ "kde": {
+ "code": "kde",
+ "name": "Makonde"
+ },
+ "mg": {
+ "code": "mg",
+ "name": "Malagasy"
+ },
+ "ml": {
+ "code": "ml",
+ "name": "Malayalam"
+ },
+ "mt": {
+ "code": "mt",
+ "name": "Maltese"
+ },
+ "mr": {
+ "code": "mr",
+ "name": "Marathi"
+ },
+ "mas": {
+ "code": "mas",
+ "name": "Masai"
+ },
+ "mer": {
+ "code": "mer",
+ "name": "Meru"
+ },
+ "mn": {
+ "code": "mn",
+ "name": "Mongolian"
+ },
+ "mfe": {
+ "code": "mfe",
+ "name": "Morisyen"
+ },
+ "mua": {
+ "code": "mua",
+ "name": "Mundang"
+ },
+ "naq": {
+ "code": "naq",
+ "name": "Nama"
+ },
+ "jgo": {
+ "code": "jgo",
+ "name": "Ngomba"
+ },
+ "nl-BE": {
+ "code": "nl-BE",
+ "name": "nl_BE"
+ },
+ "nd": {
+ "code": "nd",
+ "name": "North Ndebele"
+ },
+ "se": {
+ "code": "se",
+ "name": "Northern Sami"
+ },
+ "nb": {
+ "code": "nb",
+ "name": "Norwegian Bokmål"
+ },
+ "nn": {
+ "code": "nn",
+ "name": "Norwegian Nynorsk"
+ },
+ "nus": {
+ "code": "nus",
+ "name": "Nuer"
+ },
+ "nyn": {
+ "code": "nyn",
+ "name": "Nyankole"
+ },
+ "or": {
+ "code": "or",
+ "name": "Oriya"
+ },
+ "ps": {
+ "code": "ps",
+ "name": "Pashto"
+ },
+ "pt-BR": {
+ "code": "pt-BR",
+ "name": "pt_BR"
+ },
+ "pt-PT": {
+ "code": "pt-PT",
+ "name": "pt_PT"
+ },
+ "ro-MD": {
+ "code": "ro-MD",
+ "name": "ro_MD"
+ },
+ "rm": {
+ "code": "rm",
+ "name": "Romansh"
+ },
+ "rof": {
+ "code": "rof",
+ "name": "Rombo"
+ },
+ "rn": {
+ "code": "rn",
+ "name": "Rundi"
+ },
+ "rwk": {
+ "code": "rwk",
+ "name": "Rwa"
+ },
+ "saq": {
+ "code": "saq",
+ "name": "Samburu"
+ },
+ "sg": {
+ "code": "sg",
+ "name": "Sango"
+ },
+ "sbp": {
+ "code": "sbp",
+ "name": "Sangu"
+ },
+ "gd": {
+ "code": "gd",
+ "name": "Scottish Gaelic"
+ },
+ "seh": {
+ "code": "seh",
+ "name": "Sena"
+ },
+ "sr": {
+ "code": "sr",
+ "name": "Serbian"
+ },
+ "ksb": {
+ "code": "ksb",
+ "name": "Shambala"
+ },
+ "sn": {
+ "code": "sn",
+ "name": "Shona"
+ },
+ "si": {
+ "code": "si",
+ "name": "Sinhala"
+ },
+ "sk": {
+ "code": "sk",
+ "name": "Slovak"
+ },
+ "sl": {
+ "code": "sl",
+ "name": "Slovenian"
+ },
+ "xog": {
+ "code": "xog",
+ "name": "Soga"
+ },
+ "zgh": {
+ "code": "zgh",
+ "name": "Standard Moroccan Tamazight"
+ },
+ "sw": {
+ "code": "sw",
+ "name": "Swahili"
+ },
+ "gsw": {
+ "code": "gsw",
+ "name": "Swiss German"
+ },
+ "shi": {
+ "code": "shi",
+ "name": "Tachelhit"
+ },
+ "dav": {
+ "code": "dav",
+ "name": "Taita"
+ },
+ "twq": {
+ "code": "twq",
+ "name": "Tasawaq"
+ },
+ "te": {
+ "code": "te",
+ "name": "Telugu"
+ },
+ "teo": {
+ "code": "teo",
+ "name": "Teso"
+ },
+ "bo": {
+ "code": "bo",
+ "name": "Tibetan"
+ },
+ "ti": {
+ "code": "ti",
+ "name": "Tigrinya"
+ },
+ "to": {
+ "code": "to",
+ "name": "Tongan"
+ },
+ "hsb": {
+ "code": "hsb",
+ "name": "Upper Sorbian"
+ },
+ "ug": {
+ "code": "ug",
+ "name": "Uyghur"
+ },
+ "uz": {
+ "code": "uz",
+ "name": "Uzbek"
+ },
+ "vai": {
+ "code": "vai",
+ "name": "Vai"
+ },
+ "vun": {
+ "code": "vun",
+ "name": "Vunjo"
+ },
+ "wae": {
+ "code": "wae",
+ "name": "Walser"
+ },
+ "cy": {
+ "code": "cy",
+ "name": "Welsh"
+ },
+ "fy": {
+ "code": "fy",
+ "name": "Western Frisian"
+ },
+ "yav": {
+ "code": "yav",
+ "name": "Yangben"
+ },
+ "dje": {
+ "code": "dje",
+ "name": "Zarma"
+ },
+ "zh-Hans": {
+ "code": "zh-Hans",
+ "name": "zh_Hans"
+ },
+ "zh-Hant": {
+ "code": "zh-Hant",
+ "name": "zh_Hant"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/language/bg.json b/library/intl/resources/language/bg.json
new file mode 100644
index 000000000..bda37f052
--- /dev/null
+++ b/library/intl/resources/language/bg.json
@@ -0,0 +1,738 @@
+{
+ "ksh": {
+ "code": "ksh",
+ "name": "Colognian"
+ },
+ "es-ES": {
+ "code": "es-ES",
+ "name": "es_ES"
+ },
+ "pt-BR": {
+ "code": "pt-BR",
+ "name": "pt_BR"
+ },
+ "pt-PT": {
+ "code": "pt-PT",
+ "name": "pt_PT"
+ },
+ "wae": {
+ "code": "wae",
+ "name": "Walser"
+ },
+ "yav": {
+ "code": "yav",
+ "name": "Yangben"
+ },
+ "en-AU": {
+ "code": "en-AU",
+ "name": "авÑтралийÑки английÑки"
+ },
+ "de-AT": {
+ "code": "de-AT",
+ "name": "авÑтрийÑки немÑки"
+ },
+ "agq": {
+ "code": "agq",
+ "name": "агем"
+ },
+ "az": {
+ "code": "az",
+ "name": "азербайджанÑки"
+ },
+ "ak": {
+ "code": "ak",
+ "name": "акан"
+ },
+ "sq": {
+ "code": "sq",
+ "name": "албанÑки"
+ },
+ "en-US": {
+ "code": "en-US",
+ "name": "американÑки английÑки"
+ },
+ "am": {
+ "code": "am",
+ "name": "амхарÑки"
+ },
+ "en": {
+ "code": "en",
+ "name": "английÑки"
+ },
+ "ar": {
+ "code": "ar",
+ "name": "арабÑки"
+ },
+ "hy": {
+ "code": "hy",
+ "name": "арменÑки"
+ },
+ "ast": {
+ "code": "ast",
+ "name": "аÑтурÑки"
+ },
+ "asa": {
+ "code": "asa",
+ "name": "аÑу"
+ },
+ "af": {
+ "code": "af",
+ "name": "африканÑ"
+ },
+ "bm": {
+ "code": "bm",
+ "name": "бамбара"
+ },
+ "bas": {
+ "code": "bas",
+ "name": "баÑа"
+ },
+ "eu": {
+ "code": "eu",
+ "name": "баÑки"
+ },
+ "ksf": {
+ "code": "ksf",
+ "name": "бафиÑ"
+ },
+ "be": {
+ "code": "be",
+ "name": "беларуÑки"
+ },
+ "bez": {
+ "code": "bez",
+ "name": "бена"
+ },
+ "bn": {
+ "code": "bn",
+ "name": "бенгалÑки"
+ },
+ "my": {
+ "code": "my",
+ "name": "бирманÑки"
+ },
+ "brx": {
+ "code": "brx",
+ "name": "бодо"
+ },
+ "bs": {
+ "code": "bs",
+ "name": "боÑненÑки"
+ },
+ "br": {
+ "code": "br",
+ "name": "бретонÑки"
+ },
+ "en-GB": {
+ "code": "en-GB",
+ "name": "британÑки английÑки"
+ },
+ "bg": {
+ "code": "bg",
+ "name": "българÑки"
+ },
+ "vai": {
+ "code": "vai",
+ "name": "ваи"
+ },
+ "vi": {
+ "code": "vi",
+ "name": "виетнамÑки"
+ },
+ "vun": {
+ "code": "vun",
+ "name": "вунджо"
+ },
+ "gl": {
+ "code": "gl",
+ "name": "галиÑийÑки"
+ },
+ "lg": {
+ "code": "lg",
+ "name": "ганда"
+ },
+ "hsb": {
+ "code": "hsb",
+ "name": "горнолужишки"
+ },
+ "kl": {
+ "code": "kl",
+ "name": "гренландÑки"
+ },
+ "ka": {
+ "code": "ka",
+ "name": "грузинÑки"
+ },
+ "el": {
+ "code": "el",
+ "name": "гръцки"
+ },
+ "gu": {
+ "code": "gu",
+ "name": "гуджарати"
+ },
+ "guz": {
+ "code": "guz",
+ "name": "гуÑии"
+ },
+ "da": {
+ "code": "da",
+ "name": "датÑки"
+ },
+ "dje": {
+ "code": "dje",
+ "name": "джерма"
+ },
+ "dz": {
+ "code": "dz",
+ "name": "дзонха"
+ },
+ "dyo": {
+ "code": "dyo",
+ "name": "диола"
+ },
+ "dsb": {
+ "code": "dsb",
+ "name": "долнолужишки"
+ },
+ "ee": {
+ "code": "ee",
+ "name": "еве"
+ },
+ "ewo": {
+ "code": "ewo",
+ "name": "евондо"
+ },
+ "ebu": {
+ "code": "ebu",
+ "name": "ембу"
+ },
+ "eo": {
+ "code": "eo",
+ "name": "еÑперанто"
+ },
+ "et": {
+ "code": "et",
+ "name": "еÑтонÑки"
+ },
+ "zu": {
+ "code": "zu",
+ "name": "зулуÑки"
+ },
+ "he": {
+ "code": "he",
+ "name": "иврит"
+ },
+ "id": {
+ "code": "id",
+ "name": "индонезийÑки"
+ },
+ "ga": {
+ "code": "ga",
+ "name": "ирландÑки"
+ },
+ "is": {
+ "code": "is",
+ "name": "иÑландÑки"
+ },
+ "es": {
+ "code": "es",
+ "name": "иÑпанÑки"
+ },
+ "it": {
+ "code": "it",
+ "name": "италианÑки"
+ },
+ "yo": {
+ "code": "yo",
+ "name": "йоруба"
+ },
+ "kab": {
+ "code": "kab",
+ "name": "кабилÑки"
+ },
+ "kea": {
+ "code": "kea",
+ "name": "кабовердианÑки"
+ },
+ "kk": {
+ "code": "kk",
+ "name": "казахÑки"
+ },
+ "kln": {
+ "code": "kln",
+ "name": "календжин"
+ },
+ "kam": {
+ "code": "kam",
+ "name": "камба"
+ },
+ "en-CA": {
+ "code": "en-CA",
+ "name": "канадÑки английÑки"
+ },
+ "fr-CA": {
+ "code": "fr-CA",
+ "name": "канадÑки френÑки"
+ },
+ "kn": {
+ "code": "kn",
+ "name": "каннада"
+ },
+ "ca": {
+ "code": "ca",
+ "name": "каталонÑки"
+ },
+ "ks": {
+ "code": "ks",
+ "name": "кашмирÑки"
+ },
+ "nmg": {
+ "code": "nmg",
+ "name": "кваÑио"
+ },
+ "ki": {
+ "code": "ki",
+ "name": "кикую"
+ },
+ "ky": {
+ "code": "ky",
+ "name": "киргизки"
+ },
+ "zh": {
+ "code": "zh",
+ "name": "китайÑки"
+ },
+ "khq": {
+ "code": "khq",
+ "name": "койра чиини"
+ },
+ "ses": {
+ "code": "ses",
+ "name": "койраборо Ñени"
+ },
+ "swc": {
+ "code": "swc",
+ "name": "конгоанÑки Ñуахили"
+ },
+ "ko": {
+ "code": "ko",
+ "name": "корейÑки"
+ },
+ "km": {
+ "code": "km",
+ "name": "кхмерÑки"
+ },
+ "lag": {
+ "code": "lag",
+ "name": "ланги"
+ },
+ "lo": {
+ "code": "lo",
+ "name": "лаоÑки"
+ },
+ "lv": {
+ "code": "lv",
+ "name": "латвийÑки"
+ },
+ "ln": {
+ "code": "ln",
+ "name": "лингала"
+ },
+ "lt": {
+ "code": "lt",
+ "name": "литовÑки"
+ },
+ "lu": {
+ "code": "lu",
+ "name": "луба катанга"
+ },
+ "luo": {
+ "code": "luo",
+ "name": "луо"
+ },
+ "luy": {
+ "code": "luy",
+ "name": "луÑ"
+ },
+ "lb": {
+ "code": "lb",
+ "name": "люкÑембургÑки"
+ },
+ "mk": {
+ "code": "mk",
+ "name": "македонÑки"
+ },
+ "kde": {
+ "code": "kde",
+ "name": "маконде"
+ },
+ "mgh": {
+ "code": "mgh",
+ "name": "макуа мето"
+ },
+ "ms": {
+ "code": "ms",
+ "name": "малайÑки"
+ },
+ "ml": {
+ "code": "ml",
+ "name": "малаÑлам"
+ },
+ "mg": {
+ "code": "mg",
+ "name": "малгашки"
+ },
+ "mt": {
+ "code": "mt",
+ "name": "малтийÑки"
+ },
+ "mr": {
+ "code": "mr",
+ "name": "марати"
+ },
+ "mas": {
+ "code": "mas",
+ "name": "маÑайÑки"
+ },
+ "jmc": {
+ "code": "jmc",
+ "name": "мачаме"
+ },
+ "es-MX": {
+ "code": "es-MX",
+ "name": "мекÑиканÑки иÑпанÑки"
+ },
+ "mer": {
+ "code": "mer",
+ "name": "меру"
+ },
+ "ro-MD": {
+ "code": "ro-MD",
+ "name": "молдовÑки"
+ },
+ "mn": {
+ "code": "mn",
+ "name": "монголÑки"
+ },
+ "mfe": {
+ "code": "mfe",
+ "name": "мориÑиен"
+ },
+ "mua": {
+ "code": "mua",
+ "name": "мунданг"
+ },
+ "naq": {
+ "code": "naq",
+ "name": "нама"
+ },
+ "jgo": {
+ "code": "jgo",
+ "name": "нгомба"
+ },
+ "de": {
+ "code": "de",
+ "name": "немÑки"
+ },
+ "ne": {
+ "code": "ne",
+ "name": "непалÑки"
+ },
+ "nyn": {
+ "code": "nyn",
+ "name": "нианколе"
+ },
+ "nl": {
+ "code": "nl",
+ "name": "нидерландÑки"
+ },
+ "nb": {
+ "code": "nb",
+ "name": "норвежки букмол"
+ },
+ "nn": {
+ "code": "nn",
+ "name": "норвежки нюношк"
+ },
+ "nus": {
+ "code": "nus",
+ "name": "нуер"
+ },
+ "zh-Hans": {
+ "code": "zh-Hans",
+ "name": "опроÑтен китайÑки"
+ },
+ "or": {
+ "code": "or",
+ "name": "ориÑ"
+ },
+ "pa": {
+ "code": "pa",
+ "name": "пенджабÑки"
+ },
+ "fa": {
+ "code": "fa",
+ "name": "перÑийÑки"
+ },
+ "pl": {
+ "code": "pl",
+ "name": "полÑки"
+ },
+ "pt": {
+ "code": "pt",
+ "name": "португалÑки"
+ },
+ "ps": {
+ "code": "ps",
+ "name": "пущу"
+ },
+ "rwk": {
+ "code": "rwk",
+ "name": "рва"
+ },
+ "rm": {
+ "code": "rm",
+ "name": "ретороманÑки"
+ },
+ "rof": {
+ "code": "rof",
+ "name": "ромбо"
+ },
+ "ro": {
+ "code": "ro",
+ "name": "румънÑки"
+ },
+ "rn": {
+ "code": "rn",
+ "name": "рунди"
+ },
+ "ru": {
+ "code": "ru",
+ "name": "руÑки"
+ },
+ "saq": {
+ "code": "saq",
+ "name": "Ñамбуру"
+ },
+ "sg": {
+ "code": "sg",
+ "name": "Ñанго"
+ },
+ "sbp": {
+ "code": "sbp",
+ "name": "Ñангу"
+ },
+ "nd": {
+ "code": "nd",
+ "name": "Ñеверен ндебеле"
+ },
+ "se": {
+ "code": "se",
+ "name": "ÑеверноÑаамÑки"
+ },
+ "seh": {
+ "code": "seh",
+ "name": "Ñена"
+ },
+ "si": {
+ "code": "si",
+ "name": "ÑинхалÑки"
+ },
+ "sk": {
+ "code": "sk",
+ "name": "Ñловашки"
+ },
+ "sl": {
+ "code": "sl",
+ "name": "ÑловенÑки"
+ },
+ "xog": {
+ "code": "xog",
+ "name": "Ñога"
+ },
+ "so": {
+ "code": "so",
+ "name": "ÑомалийÑки"
+ },
+ "sr": {
+ "code": "sr",
+ "name": "ÑръбÑки"
+ },
+ "zgh": {
+ "code": "zgh",
+ "name": "Ñтандартен мароканÑки тамазигт"
+ },
+ "sw": {
+ "code": "sw",
+ "name": "Ñуахили"
+ },
+ "ar-001": {
+ "code": "ar-001",
+ "name": "Ñъвременен Ñтандартен арабÑки"
+ },
+ "dav": {
+ "code": "dav",
+ "name": "таита"
+ },
+ "th": {
+ "code": "th",
+ "name": "тайÑки"
+ },
+ "ta": {
+ "code": "ta",
+ "name": "тамилÑки"
+ },
+ "twq": {
+ "code": "twq",
+ "name": "таÑавак"
+ },
+ "shi": {
+ "code": "shi",
+ "name": "ташелхит"
+ },
+ "te": {
+ "code": "te",
+ "name": "телугу"
+ },
+ "teo": {
+ "code": "teo",
+ "name": "теÑо"
+ },
+ "bo": {
+ "code": "bo",
+ "name": "тибетÑки"
+ },
+ "ti": {
+ "code": "ti",
+ "name": "тигринÑ"
+ },
+ "to": {
+ "code": "to",
+ "name": "тонга"
+ },
+ "zh-Hant": {
+ "code": "zh-Hant",
+ "name": "традиционен китайÑки"
+ },
+ "tr": {
+ "code": "tr",
+ "name": "турÑки"
+ },
+ "cy": {
+ "code": "cy",
+ "name": "уелÑки"
+ },
+ "uz": {
+ "code": "uz",
+ "name": "узбекÑки"
+ },
+ "ug": {
+ "code": "ug",
+ "name": "уйгурÑки"
+ },
+ "uk": {
+ "code": "uk",
+ "name": "украинÑки"
+ },
+ "hu": {
+ "code": "hu",
+ "name": "унгарÑки"
+ },
+ "ur": {
+ "code": "ur",
+ "name": "урду"
+ },
+ "fo": {
+ "code": "fo",
+ "name": "фарьорÑки"
+ },
+ "fil": {
+ "code": "fil",
+ "name": "филипинÑки"
+ },
+ "fi": {
+ "code": "fi",
+ "name": "финÑки"
+ },
+ "nl-BE": {
+ "code": "nl-BE",
+ "name": "фламандÑки"
+ },
+ "fr": {
+ "code": "fr",
+ "name": "френÑки"
+ },
+ "fy": {
+ "code": "fy",
+ "name": "фризийÑки"
+ },
+ "fur": {
+ "code": "fur",
+ "name": "фриулианÑки"
+ },
+ "ff": {
+ "code": "ff",
+ "name": "фула"
+ },
+ "ha": {
+ "code": "ha",
+ "name": "хауза"
+ },
+ "hi": {
+ "code": "hi",
+ "name": "хинди"
+ },
+ "hr": {
+ "code": "hr",
+ "name": "хърватÑки"
+ },
+ "tzm": {
+ "code": "tzm",
+ "name": "централноатлаÑки тамазигт"
+ },
+ "chr": {
+ "code": "chr",
+ "name": "чероки"
+ },
+ "cs": {
+ "code": "cs",
+ "name": "чешки"
+ },
+ "cgg": {
+ "code": "cgg",
+ "name": "чига"
+ },
+ "ksb": {
+ "code": "ksb",
+ "name": "шамбала"
+ },
+ "sv": {
+ "code": "sv",
+ "name": "шведÑки"
+ },
+ "de-CH": {
+ "code": "de-CH",
+ "name": "швейцарÑки горногерманÑки"
+ },
+ "gsw": {
+ "code": "gsw",
+ "name": "швейцарÑки немÑки"
+ },
+ "fr-CH": {
+ "code": "fr-CH",
+ "name": "швейцарÑки френÑки"
+ },
+ "sn": {
+ "code": "sn",
+ "name": "шона"
+ },
+ "gd": {
+ "code": "gd",
+ "name": "шотландÑки галÑки"
+ },
+ "ja": {
+ "code": "ja",
+ "name": "ÑпонÑки"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/language/bm.json b/library/intl/resources/language/bm.json
new file mode 100644
index 000000000..6eb659c6f
--- /dev/null
+++ b/library/intl/resources/language/bm.json
@@ -0,0 +1,738 @@
+{
+ "af": {
+ "code": "af",
+ "name": "Afrikaans"
+ },
+ "agq": {
+ "code": "agq",
+ "name": "Aghem"
+ },
+ "ak": {
+ "code": "ak",
+ "name": "akankan"
+ },
+ "sq": {
+ "code": "sq",
+ "name": "Albanian"
+ },
+ "de": {
+ "code": "de",
+ "name": "alimaɲikan"
+ },
+ "am": {
+ "code": "am",
+ "name": "amarikikan"
+ },
+ "en": {
+ "code": "en",
+ "name": "angilɛkan"
+ },
+ "ar-001": {
+ "code": "ar-001",
+ "name": "ar_001"
+ },
+ "hy": {
+ "code": "hy",
+ "name": "Armenian"
+ },
+ "ast": {
+ "code": "ast",
+ "name": "Asturian"
+ },
+ "asa": {
+ "code": "asa",
+ "name": "Asu"
+ },
+ "ha": {
+ "code": "ha",
+ "name": "awusakan"
+ },
+ "az": {
+ "code": "az",
+ "name": "Azerbaijani"
+ },
+ "ksf": {
+ "code": "ksf",
+ "name": "Bafia"
+ },
+ "bm": {
+ "code": "bm",
+ "name": "bamanakan"
+ },
+ "bas": {
+ "code": "bas",
+ "name": "Basaa"
+ },
+ "eu": {
+ "code": "eu",
+ "name": "Basque"
+ },
+ "bez": {
+ "code": "bez",
+ "name": "Bena"
+ },
+ "bn": {
+ "code": "bn",
+ "name": "bɛngalikan"
+ },
+ "my": {
+ "code": "my",
+ "name": "birimanikan"
+ },
+ "be": {
+ "code": "be",
+ "name": "biyelorisikan"
+ },
+ "brx": {
+ "code": "brx",
+ "name": "Bodo"
+ },
+ "bs": {
+ "code": "bs",
+ "name": "Bosnian"
+ },
+ "br": {
+ "code": "br",
+ "name": "Breton"
+ },
+ "bg": {
+ "code": "bg",
+ "name": "buligarikan"
+ },
+ "ca": {
+ "code": "ca",
+ "name": "Catalan"
+ },
+ "tzm": {
+ "code": "tzm",
+ "name": "Central Atlas Tamazight"
+ },
+ "cs": {
+ "code": "cs",
+ "name": "cɛkikan"
+ },
+ "chr": {
+ "code": "chr",
+ "name": "Cherokee"
+ },
+ "cgg": {
+ "code": "cgg",
+ "name": "Chiga"
+ },
+ "ksh": {
+ "code": "ksh",
+ "name": "Colognian"
+ },
+ "swc": {
+ "code": "swc",
+ "name": "Congo Swahili"
+ },
+ "hr": {
+ "code": "hr",
+ "name": "Croatian"
+ },
+ "da": {
+ "code": "da",
+ "name": "Danish"
+ },
+ "de-AT": {
+ "code": "de-AT",
+ "name": "de_AT"
+ },
+ "de-CH": {
+ "code": "de-CH",
+ "name": "de_CH"
+ },
+ "dz": {
+ "code": "dz",
+ "name": "Dzongkha"
+ },
+ "ebu": {
+ "code": "ebu",
+ "name": "Embu"
+ },
+ "en-AU": {
+ "code": "en-AU",
+ "name": "en_AU"
+ },
+ "en-CA": {
+ "code": "en-CA",
+ "name": "en_CA"
+ },
+ "en-GB": {
+ "code": "en-GB",
+ "name": "en_GB"
+ },
+ "en-US": {
+ "code": "en-US",
+ "name": "en_US"
+ },
+ "es-ES": {
+ "code": "es-ES",
+ "name": "es_ES"
+ },
+ "es-MX": {
+ "code": "es-MX",
+ "name": "es_MX"
+ },
+ "es": {
+ "code": "es",
+ "name": "esipaɲolkan"
+ },
+ "eo": {
+ "code": "eo",
+ "name": "Esperanto"
+ },
+ "et": {
+ "code": "et",
+ "name": "Estonian"
+ },
+ "ee": {
+ "code": "ee",
+ "name": "Ewe"
+ },
+ "ewo": {
+ "code": "ewo",
+ "name": "Ewondo"
+ },
+ "id": {
+ "code": "id",
+ "name": "Ændonezikan"
+ },
+ "fo": {
+ "code": "fo",
+ "name": "Faroese"
+ },
+ "fil": {
+ "code": "fil",
+ "name": "Filipino"
+ },
+ "fi": {
+ "code": "fi",
+ "name": "Finnish"
+ },
+ "fr-CA": {
+ "code": "fr-CA",
+ "name": "fr_CA"
+ },
+ "fr-CH": {
+ "code": "fr-CH",
+ "name": "fr_CH"
+ },
+ "fur": {
+ "code": "fur",
+ "name": "Friulian"
+ },
+ "ff": {
+ "code": "ff",
+ "name": "Fulah"
+ },
+ "gl": {
+ "code": "gl",
+ "name": "Galician"
+ },
+ "lg": {
+ "code": "lg",
+ "name": "Ganda"
+ },
+ "ka": {
+ "code": "ka",
+ "name": "Georgian"
+ },
+ "el": {
+ "code": "el",
+ "name": "gɛrɛsikan"
+ },
+ "gu": {
+ "code": "gu",
+ "name": "Gujarati"
+ },
+ "guz": {
+ "code": "guz",
+ "name": "Gusii"
+ },
+ "he": {
+ "code": "he",
+ "name": "Hebrew"
+ },
+ "is": {
+ "code": "is",
+ "name": "Icelandic"
+ },
+ "hi": {
+ "code": "hi",
+ "name": "inidikan"
+ },
+ "ga": {
+ "code": "ga",
+ "name": "Irish"
+ },
+ "ru": {
+ "code": "ru",
+ "name": "irisikan"
+ },
+ "it": {
+ "code": "it",
+ "name": "italikan"
+ },
+ "dyo": {
+ "code": "dyo",
+ "name": "Jola-Fonyi"
+ },
+ "kea": {
+ "code": "kea",
+ "name": "Kabuverdianu"
+ },
+ "kab": {
+ "code": "kab",
+ "name": "Kabyle"
+ },
+ "kl": {
+ "code": "kl",
+ "name": "Kalaallisut"
+ },
+ "kln": {
+ "code": "kln",
+ "name": "Kalenjin"
+ },
+ "kam": {
+ "code": "kam",
+ "name": "Kamba"
+ },
+ "km": {
+ "code": "km",
+ "name": "kambojikan"
+ },
+ "kn": {
+ "code": "kn",
+ "name": "Kannada"
+ },
+ "ks": {
+ "code": "ks",
+ "name": "Kashmiri"
+ },
+ "kk": {
+ "code": "kk",
+ "name": "Kazakh"
+ },
+ "ki": {
+ "code": "ki",
+ "name": "Kikuyu"
+ },
+ "ko": {
+ "code": "ko",
+ "name": "korekan"
+ },
+ "khq": {
+ "code": "khq",
+ "name": "Koyra Chiini"
+ },
+ "ses": {
+ "code": "ses",
+ "name": "Koyraboro Senni"
+ },
+ "nmg": {
+ "code": "nmg",
+ "name": "Kwasio"
+ },
+ "ky": {
+ "code": "ky",
+ "name": "Kyrgyz"
+ },
+ "lag": {
+ "code": "lag",
+ "name": "Langi"
+ },
+ "lo": {
+ "code": "lo",
+ "name": "Lao"
+ },
+ "ar": {
+ "code": "ar",
+ "name": "larabukan"
+ },
+ "lv": {
+ "code": "lv",
+ "name": "Latvian"
+ },
+ "ln": {
+ "code": "ln",
+ "name": "Lingala"
+ },
+ "lt": {
+ "code": "lt",
+ "name": "Lithuanian"
+ },
+ "dsb": {
+ "code": "dsb",
+ "name": "Lower Sorbian"
+ },
+ "lu": {
+ "code": "lu",
+ "name": "Luba-Katanga"
+ },
+ "luo": {
+ "code": "luo",
+ "name": "Luo"
+ },
+ "lb": {
+ "code": "lb",
+ "name": "Luxembourgish"
+ },
+ "luy": {
+ "code": "luy",
+ "name": "Luyia"
+ },
+ "mk": {
+ "code": "mk",
+ "name": "Macedonian"
+ },
+ "jmc": {
+ "code": "jmc",
+ "name": "Machame"
+ },
+ "mgh": {
+ "code": "mgh",
+ "name": "Makhuwa-Meetto"
+ },
+ "kde": {
+ "code": "kde",
+ "name": "Makonde"
+ },
+ "mg": {
+ "code": "mg",
+ "name": "Malagasy"
+ },
+ "ml": {
+ "code": "ml",
+ "name": "Malayalam"
+ },
+ "ms": {
+ "code": "ms",
+ "name": "malɛzikan"
+ },
+ "mt": {
+ "code": "mt",
+ "name": "Maltese"
+ },
+ "mr": {
+ "code": "mr",
+ "name": "Marathi"
+ },
+ "mas": {
+ "code": "mas",
+ "name": "Masai"
+ },
+ "mer": {
+ "code": "mer",
+ "name": "Meru"
+ },
+ "mn": {
+ "code": "mn",
+ "name": "Mongolian"
+ },
+ "mfe": {
+ "code": "mfe",
+ "name": "Morisyen"
+ },
+ "mua": {
+ "code": "mua",
+ "name": "Mundang"
+ },
+ "naq": {
+ "code": "naq",
+ "name": "Nama"
+ },
+ "ne": {
+ "code": "ne",
+ "name": "nepalekan"
+ },
+ "jgo": {
+ "code": "jgo",
+ "name": "Ngomba"
+ },
+ "nl-BE": {
+ "code": "nl-BE",
+ "name": "nl_BE"
+ },
+ "nd": {
+ "code": "nd",
+ "name": "North Ndebele"
+ },
+ "se": {
+ "code": "se",
+ "name": "Northern Sami"
+ },
+ "nb": {
+ "code": "nb",
+ "name": "Norwegian Bokmål"
+ },
+ "nn": {
+ "code": "nn",
+ "name": "Norwegian Nynorsk"
+ },
+ "nus": {
+ "code": "nus",
+ "name": "Nuer"
+ },
+ "nyn": {
+ "code": "nyn",
+ "name": "Nyankole"
+ },
+ "nl": {
+ "code": "nl",
+ "name": "olandekan"
+ },
+ "hu": {
+ "code": "hu",
+ "name": "oŋirikan"
+ },
+ "or": {
+ "code": "or",
+ "name": "Oriya"
+ },
+ "ps": {
+ "code": "ps",
+ "name": "Pashto"
+ },
+ "fa": {
+ "code": "fa",
+ "name": "perisanikan"
+ },
+ "pa": {
+ "code": "pa",
+ "name": "pɛnijabikan"
+ },
+ "pl": {
+ "code": "pl",
+ "name": "polonekan"
+ },
+ "pt": {
+ "code": "pt",
+ "name": "pɔritigalikan"
+ },
+ "pt-BR": {
+ "code": "pt-BR",
+ "name": "pt_BR"
+ },
+ "pt-PT": {
+ "code": "pt-PT",
+ "name": "pt_PT"
+ },
+ "ro-MD": {
+ "code": "ro-MD",
+ "name": "ro_MD"
+ },
+ "rm": {
+ "code": "rm",
+ "name": "Romansh"
+ },
+ "rof": {
+ "code": "rof",
+ "name": "Rombo"
+ },
+ "ro": {
+ "code": "ro",
+ "name": "rumanikan"
+ },
+ "rn": {
+ "code": "rn",
+ "name": "Rundi"
+ },
+ "rwk": {
+ "code": "rwk",
+ "name": "Rwa"
+ },
+ "saq": {
+ "code": "saq",
+ "name": "Samburu"
+ },
+ "sg": {
+ "code": "sg",
+ "name": "Sango"
+ },
+ "sbp": {
+ "code": "sbp",
+ "name": "Sangu"
+ },
+ "gd": {
+ "code": "gd",
+ "name": "Scottish Gaelic"
+ },
+ "seh": {
+ "code": "seh",
+ "name": "Sena"
+ },
+ "sr": {
+ "code": "sr",
+ "name": "Serbian"
+ },
+ "ksb": {
+ "code": "ksb",
+ "name": "Shambala"
+ },
+ "sn": {
+ "code": "sn",
+ "name": "Shona"
+ },
+ "si": {
+ "code": "si",
+ "name": "Sinhala"
+ },
+ "zh": {
+ "code": "zh",
+ "name": "siniwakan"
+ },
+ "sk": {
+ "code": "sk",
+ "name": "Slovak"
+ },
+ "sl": {
+ "code": "sl",
+ "name": "Slovenian"
+ },
+ "xog": {
+ "code": "xog",
+ "name": "Soga"
+ },
+ "so": {
+ "code": "so",
+ "name": "somalikan"
+ },
+ "zgh": {
+ "code": "zgh",
+ "name": "Standard Moroccan Tamazight"
+ },
+ "sv": {
+ "code": "sv",
+ "name": "suwɛdikan"
+ },
+ "sw": {
+ "code": "sw",
+ "name": "Swahili"
+ },
+ "gsw": {
+ "code": "gsw",
+ "name": "Swiss German"
+ },
+ "shi": {
+ "code": "shi",
+ "name": "Tachelhit"
+ },
+ "dav": {
+ "code": "dav",
+ "name": "Taita"
+ },
+ "ta": {
+ "code": "ta",
+ "name": "tamulikan"
+ },
+ "twq": {
+ "code": "twq",
+ "name": "Tasawaq"
+ },
+ "th": {
+ "code": "th",
+ "name": "tayikan"
+ },
+ "te": {
+ "code": "te",
+ "name": "Telugu"
+ },
+ "teo": {
+ "code": "teo",
+ "name": "Teso"
+ },
+ "bo": {
+ "code": "bo",
+ "name": "Tibetan"
+ },
+ "ti": {
+ "code": "ti",
+ "name": "Tigrinya"
+ },
+ "to": {
+ "code": "to",
+ "name": "Tongan"
+ },
+ "fr": {
+ "code": "fr",
+ "name": "tubabukan"
+ },
+ "tr": {
+ "code": "tr",
+ "name": "turikikan"
+ },
+ "uk": {
+ "code": "uk",
+ "name": "ukɛrɛnikan"
+ },
+ "hsb": {
+ "code": "hsb",
+ "name": "Upper Sorbian"
+ },
+ "ur": {
+ "code": "ur",
+ "name": "urudukan"
+ },
+ "ug": {
+ "code": "ug",
+ "name": "Uyghur"
+ },
+ "uz": {
+ "code": "uz",
+ "name": "Uzbek"
+ },
+ "vai": {
+ "code": "vai",
+ "name": "Vai"
+ },
+ "vun": {
+ "code": "vun",
+ "name": "Vunjo"
+ },
+ "wae": {
+ "code": "wae",
+ "name": "Walser"
+ },
+ "cy": {
+ "code": "cy",
+ "name": "Welsh"
+ },
+ "fy": {
+ "code": "fy",
+ "name": "Western Frisian"
+ },
+ "vi": {
+ "code": "vi",
+ "name": "wiyɛtinamukan"
+ },
+ "yav": {
+ "code": "yav",
+ "name": "Yangben"
+ },
+ "yo": {
+ "code": "yo",
+ "name": "yorubakan"
+ },
+ "ja": {
+ "code": "ja",
+ "name": "zapɔnekan"
+ },
+ "dje": {
+ "code": "dje",
+ "name": "Zarma"
+ },
+ "zh-Hans": {
+ "code": "zh-Hans",
+ "name": "zh_Hans"
+ },
+ "zh-Hant": {
+ "code": "zh-Hant",
+ "name": "zh_Hant"
+ },
+ "zu": {
+ "code": "zu",
+ "name": "zulukan"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/language/bn-IN.json b/library/intl/resources/language/bn-IN.json
new file mode 100644
index 000000000..f62fc52f4
--- /dev/null
+++ b/library/intl/resources/language/bn-IN.json
@@ -0,0 +1,738 @@
+{
+ "ksh": {
+ "code": "ksh",
+ "name": "Colognian"
+ },
+ "wae": {
+ "code": "wae",
+ "name": "Walser"
+ },
+ "yav": {
+ "code": "yav",
+ "name": "Yangben"
+ },
+ "de-AT": {
+ "code": "de-AT",
+ "name": "অসà§à¦Ÿà§à¦°à¦¿à¦¯à¦¼à¦¾à¦¨ জারমান"
+ },
+ "en-AU": {
+ "code": "en-AU",
+ "name": "অসà§à¦Ÿà§à¦°à§‡à¦²à§€à¦¯à¦¼ ইংরেজি"
+ },
+ "ga": {
+ "code": "ga",
+ "name": "আইরিশ"
+ },
+ "is": {
+ "code": "is",
+ "name": "আইসলà§à¦¯à¦¾à¦¨à§à¦¡à§€à¦¯à¦¼"
+ },
+ "ak": {
+ "code": "ak",
+ "name": "আকান"
+ },
+ "az": {
+ "code": "az",
+ "name": "আজারবাইজানী"
+ },
+ "zgh": {
+ "code": "zgh",
+ "name": "আদরà§à¦¶ মরকà§à¦•à§‹à¦¨ তামাজিগাত"
+ },
+ "ar-001": {
+ "code": "ar-001",
+ "name": "আধà§à¦¨à¦¿à¦• আদরà§à¦¶ আরবী"
+ },
+ "af": {
+ "code": "af",
+ "name": "আফà§à¦°à¦¿à¦•à¦¾à¦¨à§à¦¸"
+ },
+ "am": {
+ "code": "am",
+ "name": "আমহারিক"
+ },
+ "en-US": {
+ "code": "en-US",
+ "name": "আমেরিকার ইংরেজি"
+ },
+ "ar": {
+ "code": "ar",
+ "name": "আরবী"
+ },
+ "hy": {
+ "code": "hy",
+ "name": "আরà§à¦®à§‡à¦¨à¦¿à¦¯à¦¼"
+ },
+ "sq": {
+ "code": "sq",
+ "name": "আলবেনীয়"
+ },
+ "asa": {
+ "code": "asa",
+ "name": "আসà§"
+ },
+ "ast": {
+ "code": "ast",
+ "name": "আসà§à¦¤à§à¦°à¦¿à¦¯à¦¼"
+ },
+ "uk": {
+ "code": "uk",
+ "name": "ইউকà§à¦°à§‡à¦¨à§€à¦¯à¦¼"
+ },
+ "es-ES": {
+ "code": "es-ES",
+ "name": "ইউরোপীয় সà§à¦ªà§à¦¯à¦¾à¦¨à¦¿à¦¶"
+ },
+ "pt-PT": {
+ "code": "pt-PT",
+ "name": "ইউরোপের পরà§à¦¤à§à¦—ীজ"
+ },
+ "ewo": {
+ "code": "ewo",
+ "name": "ইওনà§à¦¡à§‹"
+ },
+ "yo": {
+ "code": "yo",
+ "name": "ইওরà§à¦¬à¦¾"
+ },
+ "en": {
+ "code": "en",
+ "name": "ইংরেজি"
+ },
+ "it": {
+ "code": "it",
+ "name": "ইতালীয়"
+ },
+ "id": {
+ "code": "id",
+ "name": "ইনà§à¦¦à§‹à¦¨à§‡à¦¶à§€à¦¯à¦¼"
+ },
+ "ug": {
+ "code": "ug",
+ "name": "উইঘà§à¦°"
+ },
+ "hsb": {
+ "code": "hsb",
+ "name": "উচà§à¦š সোরà§à¦¬à¦¿à¦¯à¦¼à¦¾à¦¨"
+ },
+ "uz": {
+ "code": "uz",
+ "name": "উজবেকীয়"
+ },
+ "or": {
+ "code": "or",
+ "name": "উড়িয়া"
+ },
+ "nd": {
+ "code": "nd",
+ "name": "উতà§à¦¤à¦° à¦à¦¨à§à¦¦à§‡à¦¬à¦¿à¦²à¦¿"
+ },
+ "se": {
+ "code": "se",
+ "name": "উতà§à¦¤à¦°à¦¾à¦žà§à¦šà¦²à§€à¦¯à¦¼ সামি"
+ },
+ "ur": {
+ "code": "ur",
+ "name": "উরà§à¦¦à§"
+ },
+ "agq": {
+ "code": "agq",
+ "name": "à¦à¦˜à§‡à¦®"
+ },
+ "ebu": {
+ "code": "ebu",
+ "name": "à¦à¦®à§à¦¬à§"
+ },
+ "ee": {
+ "code": "ee",
+ "name": "à¦à¦¯à¦¼à§‡"
+ },
+ "et": {
+ "code": "et",
+ "name": "à¦à¦¸à§à¦¤à§‹à¦¨à§€à¦¯à¦¼"
+ },
+ "eo": {
+ "code": "eo",
+ "name": "à¦à¦¸à§à¦ªà§‡à¦°à¦¾à¦¨à§à¦¤à§‹"
+ },
+ "zh-Hant": {
+ "code": "zh-Hant",
+ "name": "à¦à¦¤à¦¿à¦¹à§à¦¯à¦¬à¦¾à¦¹à¦¿ চীনা"
+ },
+ "cy": {
+ "code": "cy",
+ "name": "ওয়েলশ"
+ },
+ "swc": {
+ "code": "swc",
+ "name": "কঙà§à¦—ো সোয়াহিলি"
+ },
+ "kk": {
+ "code": "kk",
+ "name": "কাজাখ"
+ },
+ "ca": {
+ "code": "ca",
+ "name": "কাতালান"
+ },
+ "en-CA": {
+ "code": "en-CA",
+ "name": "কানাডীয় ইংরেজি"
+ },
+ "kn": {
+ "code": "kn",
+ "name": "কানà§à¦¨à¦¾à¦¡à¦¼à§€"
+ },
+ "kab": {
+ "code": "kab",
+ "name": "কাবাইলে"
+ },
+ "kea": {
+ "code": "kea",
+ "name": "কাবà§à¦­à¦¾à¦°à¦¦à¦¿à¦¯à¦¼à¦¾à¦¨à§"
+ },
+ "kam": {
+ "code": "kam",
+ "name": "কামà§à¦¬à¦¾"
+ },
+ "kln": {
+ "code": "kln",
+ "name": "কালেনজিন"
+ },
+ "ks": {
+ "code": "ks",
+ "name": "কাশà§à¦®à§€à¦°à§€"
+ },
+ "ki": {
+ "code": "ki",
+ "name": "কিকà§à§à¦‡à¦¯à¦¼à§"
+ },
+ "ky": {
+ "code": "ky",
+ "name": "কিরà§à¦—িজ"
+ },
+ "khq": {
+ "code": "khq",
+ "name": "কোয়রা চীনি"
+ },
+ "ses": {
+ "code": "ses",
+ "name": "কোয়রাবেনো সেনà§à¦¨à§€"
+ },
+ "nmg": {
+ "code": "nmg",
+ "name": "কোয়াসিও"
+ },
+ "ko": {
+ "code": "ko",
+ "name": "কোরিয়ান"
+ },
+ "fr-CA": {
+ "code": "fr-CA",
+ "name": "কà§à¦¯à¦¾à¦¨à¦¾à¦¡à¦¿à¦¯à¦¼à¦¾à¦¨ ফরাসী"
+ },
+ "kl": {
+ "code": "kl",
+ "name": "কà§à¦¯à¦¾à¦²à¦¾à¦²à§à¦²à¦¿à¦¸à§à¦Ÿ"
+ },
+ "hr": {
+ "code": "hr",
+ "name": "কà§à¦°à§‹à¦¯à¦¼à§‡à¦¶à§€à¦¯à¦¼"
+ },
+ "km": {
+ "code": "km",
+ "name": "খমের"
+ },
+ "lg": {
+ "code": "lg",
+ "name": "গানà§à¦¡à¦¾"
+ },
+ "gu": {
+ "code": "gu",
+ "name": "গà§à¦œà¦°à¦¾à¦Ÿà¦¿"
+ },
+ "guz": {
+ "code": "guz",
+ "name": "গà§à¦¸à§€"
+ },
+ "jgo": {
+ "code": "jgo",
+ "name": "গোমà§à¦¬à¦¾"
+ },
+ "gl": {
+ "code": "gl",
+ "name": "গà§à¦¯à¦¾à¦²à¦¿à¦¶à¦¿à¦¯à¦¼"
+ },
+ "el": {
+ "code": "el",
+ "name": "গà§à¦°à¦¿à¦•"
+ },
+ "cgg": {
+ "code": "cgg",
+ "name": "চিগা"
+ },
+ "zh": {
+ "code": "zh",
+ "name": "চীনা"
+ },
+ "cs": {
+ "code": "cs",
+ "name": "চেক"
+ },
+ "chr": {
+ "code": "chr",
+ "name": "চেরোকী"
+ },
+ "ka": {
+ "code": "ka",
+ "name": "জরà§à¦œà¦¿à¦¯à¦¼à¦¾à¦¨"
+ },
+ "dyo": {
+ "code": "dyo",
+ "name": "জলা-ফনী"
+ },
+ "ja": {
+ "code": "ja",
+ "name": "জাপানি"
+ },
+ "dje": {
+ "code": "dje",
+ "name": "জারà§à¦®à¦¾"
+ },
+ "de": {
+ "code": "de",
+ "name": "জারà§à¦®à¦¾à¦¨"
+ },
+ "zu": {
+ "code": "zu",
+ "name": "জà§à¦²à§"
+ },
+ "dz": {
+ "code": "dz",
+ "name": "জোঙà§à¦—া"
+ },
+ "to": {
+ "code": "to",
+ "name": "টোঙà§à¦—ান"
+ },
+ "nl": {
+ "code": "nl",
+ "name": "ডাচ"
+ },
+ "da": {
+ "code": "da",
+ "name": "ডেনিশ"
+ },
+ "dav": {
+ "code": "dav",
+ "name": "তাইতা"
+ },
+ "shi": {
+ "code": "shi",
+ "name": "তাচেলহিত"
+ },
+ "ta": {
+ "code": "ta",
+ "name": "তামিল"
+ },
+ "twq": {
+ "code": "twq",
+ "name": "তাসাওয়াক"
+ },
+ "ti": {
+ "code": "ti",
+ "name": "তিগরিনিয়া"
+ },
+ "bo": {
+ "code": "bo",
+ "name": "তিবà§à¦¬à¦¤à¦¿"
+ },
+ "tr": {
+ "code": "tr",
+ "name": "তà§à¦°à§à¦•à§€"
+ },
+ "te": {
+ "code": "te",
+ "name": "তেলেগà§"
+ },
+ "teo": {
+ "code": "teo",
+ "name": "তেসো"
+ },
+ "th": {
+ "code": "th",
+ "name": "থাই"
+ },
+ "nb": {
+ "code": "nb",
+ "name": "নরওয়েজিয়ান বোকমাল"
+ },
+ "nn": {
+ "code": "nn",
+ "name": "নরওয়েজীয়ান নিনরà§à¦¸à§à¦•"
+ },
+ "naq": {
+ "code": "naq",
+ "name": "নামা"
+ },
+ "dsb": {
+ "code": "dsb",
+ "name": "নিমà§à¦¨à¦¤à¦° সোরà§à¦¬à¦¿à¦¯à¦¼à¦¾à¦¨"
+ },
+ "nus": {
+ "code": "nus",
+ "name": "নà§à¦¯à¦¼à¦¾à¦°"
+ },
+ "ne": {
+ "code": "ne",
+ "name": "নেপালী"
+ },
+ "nyn": {
+ "code": "nyn",
+ "name": "নà§à¦¯à¦¾à¦¯à¦¼à¦¾à¦™à§à¦•à§‹à¦²à§‡"
+ },
+ "pt": {
+ "code": "pt",
+ "name": "পরà§à¦¤à§à¦—ীজ"
+ },
+ "fy": {
+ "code": "fy",
+ "name": "পশà§à¦šà¦¿à¦® ফà§à¦°à¦¿à¦¸à¦¿à¦¯à¦¼"
+ },
+ "pa": {
+ "code": "pa",
+ "name": "পাঞà§à¦œà¦¾à¦¬à§€"
+ },
+ "ps": {
+ "code": "ps",
+ "name": "পাশà§à¦¤à§"
+ },
+ "pl": {
+ "code": "pl",
+ "name": "পোলিশ"
+ },
+ "fr": {
+ "code": "fr",
+ "name": "ফরাসি"
+ },
+ "fa": {
+ "code": "fa",
+ "name": "ফারà§à¦¸à¦¿"
+ },
+ "fi": {
+ "code": "fi",
+ "name": "ফিনিশ"
+ },
+ "fil": {
+ "code": "fil",
+ "name": "ফিলিপিনো"
+ },
+ "ff": {
+ "code": "ff",
+ "name": "ফà§à¦²à¦¾à¦¹à§"
+ },
+ "fo": {
+ "code": "fo",
+ "name": "ফেরাউনি"
+ },
+ "fur": {
+ "code": "fur",
+ "name": "ফà§à¦°à¦¿à¦‰à¦²à¦¿à¦¯à¦¼à¦¾à¦¨"
+ },
+ "nl-BE": {
+ "code": "nl-BE",
+ "name": "ফà§à¦²à§‡à¦®à¦¿à¦¶"
+ },
+ "brx": {
+ "code": "brx",
+ "name": "বড়ো"
+ },
+ "my": {
+ "code": "my",
+ "name": "বরà§à¦®à¦¿"
+ },
+ "bs": {
+ "code": "bs",
+ "name": "বসনীয়ান"
+ },
+ "bn": {
+ "code": "bn",
+ "name": "বাংলা"
+ },
+ "ksf": {
+ "code": "ksf",
+ "name": "বাফিয়া"
+ },
+ "bm": {
+ "code": "bm",
+ "name": "বামবারা"
+ },
+ "bas": {
+ "code": "bas",
+ "name": "বাসা"
+ },
+ "eu": {
+ "code": "eu",
+ "name": "বাসà§à¦•"
+ },
+ "bg": {
+ "code": "bg",
+ "name": "বà§à¦²à¦—েরিয়"
+ },
+ "bez": {
+ "code": "bez",
+ "name": "বেনা"
+ },
+ "be": {
+ "code": "be",
+ "name": "বেলারà§à¦¶à¦¿à¦¯à¦¼"
+ },
+ "pt-BR": {
+ "code": "pt-BR",
+ "name": "বà§à¦°à¦¾à¦œà¦¿à¦²à§‡à¦° পরà§à¦¤à§à¦—ীজ"
+ },
+ "en-GB": {
+ "code": "en-GB",
+ "name": "বà§à¦°à¦¿à¦Ÿà¦¿à¦¶ ইংরেজি"
+ },
+ "br": {
+ "code": "br",
+ "name": "বà§à¦°à§‡à¦Ÿà¦¨"
+ },
+ "vai": {
+ "code": "vai",
+ "name": "ভাই"
+ },
+ "vi": {
+ "code": "vi",
+ "name": "ভিয়েতনামী"
+ },
+ "vun": {
+ "code": "vun",
+ "name": "ভà§à¦žà§à¦œà§‹"
+ },
+ "mn": {
+ "code": "mn",
+ "name": "মঙà§à¦—োলিয়"
+ },
+ "mfe": {
+ "code": "mfe",
+ "name": "মরিসিয়ান"
+ },
+ "ro-MD": {
+ "code": "ro-MD",
+ "name": "মলদাভিয়"
+ },
+ "mt": {
+ "code": "mt",
+ "name": "মলà§à¦Ÿà¦¿à¦¯à¦¼"
+ },
+ "jmc": {
+ "code": "jmc",
+ "name": "মাকামে"
+ },
+ "kde": {
+ "code": "kde",
+ "name": "মাকোনà§à¦¦à§‡"
+ },
+ "mgh": {
+ "code": "mgh",
+ "name": "মাখà§à¦¯à¦¼à¦¾-মেতà§à¦¤à§‹"
+ },
+ "mr": {
+ "code": "mr",
+ "name": "মারাঠি"
+ },
+ "ms": {
+ "code": "ms",
+ "name": "মালয়"
+ },
+ "mg": {
+ "code": "mg",
+ "name": "মালাগাসি"
+ },
+ "ml": {
+ "code": "ml",
+ "name": "মালায়ালাম"
+ },
+ "mas": {
+ "code": "mas",
+ "name": "মাসাই"
+ },
+ "mua": {
+ "code": "mua",
+ "name": "মà§à¦¦à¦¾à¦™à§à¦—"
+ },
+ "mer": {
+ "code": "mer",
+ "name": "মেরà§"
+ },
+ "es-MX": {
+ "code": "es-MX",
+ "name": "মà§à¦¯à¦¾à¦•à§à¦¸à¦¿à¦•à¦¾à¦¨ সà§à¦ªà§à¦¯à¦¾à¦¨à¦¿à¦¶"
+ },
+ "mk": {
+ "code": "mk",
+ "name": "মà§à¦¯à¦¾à¦¸à¦¿à¦¡à§‹à¦¨à§€à¦¯à¦¼"
+ },
+ "rof": {
+ "code": "rof",
+ "name": "রমà§à¦¬à§‹"
+ },
+ "rwk": {
+ "code": "rwk",
+ "name": "রাওয়া"
+ },
+ "rn": {
+ "code": "rn",
+ "name": "রà§à¦¨à§à¦¦à¦¿"
+ },
+ "ru": {
+ "code": "ru",
+ "name": "রà§à¦¶"
+ },
+ "ro": {
+ "code": "ro",
+ "name": "রোমানীয়"
+ },
+ "rm": {
+ "code": "rm",
+ "name": "রোমানà§à¦¸"
+ },
+ "lo": {
+ "code": "lo",
+ "name": "লাও"
+ },
+ "lag": {
+ "code": "lag",
+ "name": "লাঙà§à¦—ি"
+ },
+ "lv": {
+ "code": "lv",
+ "name": "লাতà§â€Œà¦­à§€à¦¯à¦¼"
+ },
+ "ln": {
+ "code": "ln",
+ "name": "লিঙà§à¦—ালা"
+ },
+ "lt": {
+ "code": "lt",
+ "name": "লিথà§à¦¯à¦¼à§‡à¦¨à§€à¦¯à¦¼"
+ },
+ "luy": {
+ "code": "luy",
+ "name": "লà§à¦‡à¦¯à¦¼à¦¾"
+ },
+ "lb": {
+ "code": "lb",
+ "name": "লà§à¦•à§à¦¸à§‡à¦®à¦¬à¦¾à¦°à§à¦—ীয়"
+ },
+ "lu": {
+ "code": "lu",
+ "name": "লà§à¦¬à¦¾-কাটাঙà§à¦—া"
+ },
+ "luo": {
+ "code": "luo",
+ "name": "লà§à¦¯à¦¼à§‹"
+ },
+ "ksb": {
+ "code": "ksb",
+ "name": "শামà§à¦¬à¦¾à¦²à¦¾"
+ },
+ "sn": {
+ "code": "sn",
+ "name": "শোনা"
+ },
+ "zh-Hans": {
+ "code": "zh-Hans",
+ "name": "সরলীকৃত চীনা"
+ },
+ "sbp": {
+ "code": "sbp",
+ "name": "সাঙà§à¦—à§"
+ },
+ "sg": {
+ "code": "sg",
+ "name": "সাঙà§à¦—ো"
+ },
+ "saq": {
+ "code": "saq",
+ "name": "সামবà§à¦°à§"
+ },
+ "sr": {
+ "code": "sr",
+ "name": "সারà§à¦¬à§€à¦¯à¦¼"
+ },
+ "si": {
+ "code": "si",
+ "name": "সিংহলী"
+ },
+ "sv": {
+ "code": "sv",
+ "name": "সà§à¦‡à¦¡à¦¿à¦¶"
+ },
+ "de-CH": {
+ "code": "de-CH",
+ "name": "সà§à¦‡à¦¸ উচà§à¦š জারà§à¦®à¦¾à¦¨à¦¿"
+ },
+ "gsw": {
+ "code": "gsw",
+ "name": "সà§à¦‡à¦¸ জারà§à¦®à¦¾à¦¨"
+ },
+ "fr-CH": {
+ "code": "fr-CH",
+ "name": "সà§à¦‡à¦¸ ফরাসি"
+ },
+ "seh": {
+ "code": "seh",
+ "name": "সেনা"
+ },
+ "tzm": {
+ "code": "tzm",
+ "name": "সেনà§à¦Ÿà§à¦°à¦¾à¦² আটলাস তামাজিগাত"
+ },
+ "xog": {
+ "code": "xog",
+ "name": "সোগা"
+ },
+ "so": {
+ "code": "so",
+ "name": "সোমালী"
+ },
+ "sw": {
+ "code": "sw",
+ "name": "সোয়াহিলি"
+ },
+ "gd": {
+ "code": "gd",
+ "name": "সà§à¦•à¦Ÿà¦¸-গà§à¦¯à§‡à¦²à¦¿à¦•"
+ },
+ "es": {
+ "code": "es",
+ "name": "সà§à¦ªà§à¦¯à¦¾à¦¨à¦¿à¦¶"
+ },
+ "sk": {
+ "code": "sk",
+ "name": "সà§à¦²à§‹à¦­à¦¾à¦•"
+ },
+ "sl": {
+ "code": "sl",
+ "name": "সà§à¦²à§‹à¦­à§‡à¦¨à§€à¦¯à¦¼"
+ },
+ "ha": {
+ "code": "ha",
+ "name": "হাউসা"
+ },
+ "hu": {
+ "code": "hu",
+ "name": "হাঙà§à¦—েরীয়"
+ },
+ "hi": {
+ "code": "hi",
+ "name": "হিনà§à¦¦à¦¿"
+ },
+ "he": {
+ "code": "he",
+ "name": "হিবà§à¦°à§"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/language/bn.json b/library/intl/resources/language/bn.json
new file mode 100644
index 000000000..d37c446c3
--- /dev/null
+++ b/library/intl/resources/language/bn.json
@@ -0,0 +1,738 @@
+{
+ "ksh": {
+ "code": "ksh",
+ "name": "Colognian"
+ },
+ "wae": {
+ "code": "wae",
+ "name": "Walser"
+ },
+ "yav": {
+ "code": "yav",
+ "name": "Yangben"
+ },
+ "de-AT": {
+ "code": "de-AT",
+ "name": "অসà§à¦Ÿà§à¦°à¦¿à¦¯à¦¼à¦¾à¦¨ জারà§à¦®à¦¾à¦¨à¦¿"
+ },
+ "en-AU": {
+ "code": "en-AU",
+ "name": "অসà§à¦Ÿà§à¦°à§‡à¦²à§€à¦¯à¦¼ ইংরেজি"
+ },
+ "ga": {
+ "code": "ga",
+ "name": "আইরিশ"
+ },
+ "is": {
+ "code": "is",
+ "name": "আইসলà§à¦¯à¦¾à¦¨à§à¦¡à§€à¦¯à¦¼"
+ },
+ "ak": {
+ "code": "ak",
+ "name": "আকান"
+ },
+ "az": {
+ "code": "az",
+ "name": "আজারবাইজানী"
+ },
+ "zgh": {
+ "code": "zgh",
+ "name": "আদরà§à¦¶ মরকà§à¦•à§‹à¦¨ তামাজিগাত"
+ },
+ "ar-001": {
+ "code": "ar-001",
+ "name": "আধà§à¦¨à¦¿à¦• আদরà§à¦¶ আরবী"
+ },
+ "af": {
+ "code": "af",
+ "name": "আফà§à¦°à¦¿à¦•à¦¾à¦¨à§à¦¸"
+ },
+ "am": {
+ "code": "am",
+ "name": "আমহারিক"
+ },
+ "en-US": {
+ "code": "en-US",
+ "name": "আমেরিকার ইংরেজি"
+ },
+ "ar": {
+ "code": "ar",
+ "name": "আরবী"
+ },
+ "hy": {
+ "code": "hy",
+ "name": "আরà§à¦®à§‡à¦¨à¦¿à¦¯à¦¼"
+ },
+ "sq": {
+ "code": "sq",
+ "name": "আলবেনীয়"
+ },
+ "asa": {
+ "code": "asa",
+ "name": "আসà§"
+ },
+ "ast": {
+ "code": "ast",
+ "name": "আসà§à¦¤à§à¦°à¦¿à¦¯à¦¼"
+ },
+ "uk": {
+ "code": "uk",
+ "name": "ইউকà§à¦°à§‡à¦¨à§€à¦¯à¦¼"
+ },
+ "es-ES": {
+ "code": "es-ES",
+ "name": "ইউরোপীয় সà§à¦ªà§à¦¯à¦¾à¦¨à¦¿à¦¶"
+ },
+ "pt-PT": {
+ "code": "pt-PT",
+ "name": "ইউরোপের পরà§à¦¤à§à¦—ীজ"
+ },
+ "ewo": {
+ "code": "ewo",
+ "name": "ইওনà§à¦¡à§‹"
+ },
+ "yo": {
+ "code": "yo",
+ "name": "ইওরà§à¦¬à¦¾"
+ },
+ "en": {
+ "code": "en",
+ "name": "ইংরেজি"
+ },
+ "it": {
+ "code": "it",
+ "name": "ইতালীয়"
+ },
+ "id": {
+ "code": "id",
+ "name": "ইনà§à¦¦à§‹à¦¨à§‡à¦¶à§€à¦¯à¦¼"
+ },
+ "ug": {
+ "code": "ug",
+ "name": "উইঘà§à¦°"
+ },
+ "hsb": {
+ "code": "hsb",
+ "name": "উচà§à¦š সোরà§à¦¬à¦¿à¦¯à¦¼à¦¾à¦¨"
+ },
+ "uz": {
+ "code": "uz",
+ "name": "উজবেকীয়"
+ },
+ "nd": {
+ "code": "nd",
+ "name": "উতà§à¦¤à¦° à¦à¦¨à§à¦¦à§‡à¦¬à¦¿à¦²à¦¿"
+ },
+ "se": {
+ "code": "se",
+ "name": "উতà§à¦¤à¦°à¦¾à¦žà§à¦šà¦²à§€à¦¯à¦¼ সামি"
+ },
+ "ur": {
+ "code": "ur",
+ "name": "উরà§à¦¦à§"
+ },
+ "agq": {
+ "code": "agq",
+ "name": "à¦à¦˜à§‡à¦®"
+ },
+ "ebu": {
+ "code": "ebu",
+ "name": "à¦à¦®à§à¦¬à§"
+ },
+ "ee": {
+ "code": "ee",
+ "name": "à¦à¦¯à¦¼à§‡"
+ },
+ "et": {
+ "code": "et",
+ "name": "à¦à¦¸à§à¦¤à§‹à¦¨à§€à¦¯à¦¼"
+ },
+ "eo": {
+ "code": "eo",
+ "name": "à¦à¦¸à§à¦ªà§‡à¦°à¦¾à¦¨à§à¦¤à§‹"
+ },
+ "zh-Hant": {
+ "code": "zh-Hant",
+ "name": "à¦à¦¤à¦¿à¦¹à§à¦¯à¦¬à¦¾à¦¹à¦¿ চীনা"
+ },
+ "or": {
+ "code": "or",
+ "name": "ওড়িয়া"
+ },
+ "cy": {
+ "code": "cy",
+ "name": "ওয়েলশ"
+ },
+ "swc": {
+ "code": "swc",
+ "name": "কঙà§à¦—ো সোয়াহিলি"
+ },
+ "kk": {
+ "code": "kk",
+ "name": "কাজাখ"
+ },
+ "ca": {
+ "code": "ca",
+ "name": "কাতালান"
+ },
+ "en-CA": {
+ "code": "en-CA",
+ "name": "কানাডীয় ইংরেজি"
+ },
+ "fr-CA": {
+ "code": "fr-CA",
+ "name": "কানাডীয় ফরাসি"
+ },
+ "kn": {
+ "code": "kn",
+ "name": "কানà§à¦¨à¦¾à¦¡à¦¼à§€"
+ },
+ "kab": {
+ "code": "kab",
+ "name": "কাবাইলে"
+ },
+ "kea": {
+ "code": "kea",
+ "name": "কাবà§à¦­à¦¾à¦°à¦¦à¦¿à¦¯à¦¼à¦¾à¦¨à§"
+ },
+ "kam": {
+ "code": "kam",
+ "name": "কামà§à¦¬à¦¾"
+ },
+ "kln": {
+ "code": "kln",
+ "name": "কালেনজিন"
+ },
+ "ks": {
+ "code": "ks",
+ "name": "কাশà§à¦®à§€à¦°à§€"
+ },
+ "ki": {
+ "code": "ki",
+ "name": "কিকà§à§à¦‡à¦¯à¦¼à§"
+ },
+ "ky": {
+ "code": "ky",
+ "name": "কিরà§à¦—িজ"
+ },
+ "khq": {
+ "code": "khq",
+ "name": "কোয়রা চীনি"
+ },
+ "ses": {
+ "code": "ses",
+ "name": "কোয়রাবেনো সেনà§à¦¨à§€"
+ },
+ "nmg": {
+ "code": "nmg",
+ "name": "কোয়াসিও"
+ },
+ "ko": {
+ "code": "ko",
+ "name": "কোরিয়ান"
+ },
+ "kl": {
+ "code": "kl",
+ "name": "কà§à¦¯à¦¾à¦²à¦¾à¦²à§à¦²à¦¿à¦¸à§à¦Ÿ"
+ },
+ "hr": {
+ "code": "hr",
+ "name": "কà§à¦°à§‹à¦¯à¦¼à§‡à¦¶à§€à¦¯à¦¼"
+ },
+ "km": {
+ "code": "km",
+ "name": "খমের"
+ },
+ "lg": {
+ "code": "lg",
+ "name": "গানà§à¦¡à¦¾"
+ },
+ "gu": {
+ "code": "gu",
+ "name": "গà§à¦œà¦°à¦¾à¦Ÿà¦¿"
+ },
+ "guz": {
+ "code": "guz",
+ "name": "গà§à¦¸à§€"
+ },
+ "jgo": {
+ "code": "jgo",
+ "name": "গোমà§à¦¬à¦¾"
+ },
+ "gl": {
+ "code": "gl",
+ "name": "গà§à¦¯à¦¾à¦²à¦¿à¦¶à¦¿à¦¯à¦¼"
+ },
+ "el": {
+ "code": "el",
+ "name": "গà§à¦°à¦¿à¦•"
+ },
+ "cgg": {
+ "code": "cgg",
+ "name": "চিগা"
+ },
+ "zh": {
+ "code": "zh",
+ "name": "চীনা"
+ },
+ "cs": {
+ "code": "cs",
+ "name": "চেক"
+ },
+ "chr": {
+ "code": "chr",
+ "name": "চেরোকী"
+ },
+ "ka": {
+ "code": "ka",
+ "name": "জরà§à¦œà¦¿à¦¯à¦¼à¦¾à¦¨"
+ },
+ "dyo": {
+ "code": "dyo",
+ "name": "জলা-ফনী"
+ },
+ "ja": {
+ "code": "ja",
+ "name": "জাপানি"
+ },
+ "dje": {
+ "code": "dje",
+ "name": "জারà§à¦®à¦¾"
+ },
+ "de": {
+ "code": "de",
+ "name": "জারà§à¦®à¦¾à¦¨"
+ },
+ "zu": {
+ "code": "zu",
+ "name": "জà§à¦²à§"
+ },
+ "dz": {
+ "code": "dz",
+ "name": "জোঙà§à¦—া"
+ },
+ "to": {
+ "code": "to",
+ "name": "টোঙà§à¦—ান"
+ },
+ "nl": {
+ "code": "nl",
+ "name": "ডাচ"
+ },
+ "da": {
+ "code": "da",
+ "name": "ডেনিশ"
+ },
+ "dav": {
+ "code": "dav",
+ "name": "তাইতা"
+ },
+ "shi": {
+ "code": "shi",
+ "name": "তাচেলহিত"
+ },
+ "ta": {
+ "code": "ta",
+ "name": "তামিল"
+ },
+ "twq": {
+ "code": "twq",
+ "name": "তাসাওয়াক"
+ },
+ "ti": {
+ "code": "ti",
+ "name": "তিগরিনিয়া"
+ },
+ "bo": {
+ "code": "bo",
+ "name": "তিবà§à¦¬à¦¤à¦¿"
+ },
+ "tr": {
+ "code": "tr",
+ "name": "তà§à¦°à§à¦•à§€"
+ },
+ "te": {
+ "code": "te",
+ "name": "তেলেগà§"
+ },
+ "teo": {
+ "code": "teo",
+ "name": "তেসো"
+ },
+ "th": {
+ "code": "th",
+ "name": "থাই"
+ },
+ "nb": {
+ "code": "nb",
+ "name": "নরওয়েজিয়ান বোকমাল"
+ },
+ "nn": {
+ "code": "nn",
+ "name": "নরওয়েজীয়ান নিনরà§à¦¸à§à¦•"
+ },
+ "naq": {
+ "code": "naq",
+ "name": "নামা"
+ },
+ "dsb": {
+ "code": "dsb",
+ "name": "নিমà§à¦¨à¦¤à¦° সোরà§à¦¬à¦¿à¦¯à¦¼à¦¾à¦¨"
+ },
+ "nus": {
+ "code": "nus",
+ "name": "নà§à¦¯à¦¼à¦¾à¦°"
+ },
+ "ne": {
+ "code": "ne",
+ "name": "নেপালী"
+ },
+ "nyn": {
+ "code": "nyn",
+ "name": "নà§à¦¯à¦¾à¦¯à¦¼à¦¾à¦™à§à¦•à§‹à¦²à§‡"
+ },
+ "pt": {
+ "code": "pt",
+ "name": "পরà§à¦¤à§à¦—ীজ"
+ },
+ "fy": {
+ "code": "fy",
+ "name": "পশà§à¦šà¦¿à¦® ফà§à¦°à¦¿à¦¸à¦¿à¦¯à¦¼"
+ },
+ "pa": {
+ "code": "pa",
+ "name": "পাঞà§à¦œà¦¾à¦¬à§€"
+ },
+ "ps": {
+ "code": "ps",
+ "name": "পাশà§à¦¤à§"
+ },
+ "pl": {
+ "code": "pl",
+ "name": "পোলিশ"
+ },
+ "fr": {
+ "code": "fr",
+ "name": "ফরাসি"
+ },
+ "fa": {
+ "code": "fa",
+ "name": "ফারà§à¦¸à¦¿"
+ },
+ "fi": {
+ "code": "fi",
+ "name": "ফিনিশ"
+ },
+ "fil": {
+ "code": "fil",
+ "name": "ফিলিপিনো"
+ },
+ "ff": {
+ "code": "ff",
+ "name": "ফà§à¦²à¦¾à¦¹à§"
+ },
+ "fo": {
+ "code": "fo",
+ "name": "ফেরাউনি"
+ },
+ "fur": {
+ "code": "fur",
+ "name": "ফà§à¦°à¦¿à¦‰à¦²à¦¿à¦¯à¦¼à¦¾à¦¨"
+ },
+ "nl-BE": {
+ "code": "nl-BE",
+ "name": "ফà§à¦²à§‡à¦®à¦¿à¦¶"
+ },
+ "brx": {
+ "code": "brx",
+ "name": "বড়ো"
+ },
+ "my": {
+ "code": "my",
+ "name": "বরà§à¦®à¦¿"
+ },
+ "bs": {
+ "code": "bs",
+ "name": "বসনীয়ান"
+ },
+ "bn": {
+ "code": "bn",
+ "name": "বাংলা"
+ },
+ "ksf": {
+ "code": "ksf",
+ "name": "বাফিয়া"
+ },
+ "bm": {
+ "code": "bm",
+ "name": "বামবারা"
+ },
+ "bas": {
+ "code": "bas",
+ "name": "বাসা"
+ },
+ "eu": {
+ "code": "eu",
+ "name": "বাসà§à¦•"
+ },
+ "bg": {
+ "code": "bg",
+ "name": "বà§à¦²à¦—েরিয়"
+ },
+ "bez": {
+ "code": "bez",
+ "name": "বেনা"
+ },
+ "be": {
+ "code": "be",
+ "name": "বেলারà§à¦¶à¦¿à¦¯à¦¼"
+ },
+ "pt-BR": {
+ "code": "pt-BR",
+ "name": "বà§à¦°à¦¾à¦œà¦¿à¦²à§‡à¦° পরà§à¦¤à§à¦—ীজ"
+ },
+ "en-GB": {
+ "code": "en-GB",
+ "name": "বà§à¦°à¦¿à¦Ÿà¦¿à¦¶ ইংরেজি"
+ },
+ "br": {
+ "code": "br",
+ "name": "বà§à¦°à§‡à¦Ÿà¦¨"
+ },
+ "vai": {
+ "code": "vai",
+ "name": "ভাই"
+ },
+ "vi": {
+ "code": "vi",
+ "name": "ভিয়েতনামী"
+ },
+ "vun": {
+ "code": "vun",
+ "name": "ভà§à¦žà§à¦œà§‹"
+ },
+ "mn": {
+ "code": "mn",
+ "name": "মঙà§à¦—োলিয়"
+ },
+ "mfe": {
+ "code": "mfe",
+ "name": "মরিসিয়ান"
+ },
+ "ro-MD": {
+ "code": "ro-MD",
+ "name": "মলদাভিয়"
+ },
+ "mt": {
+ "code": "mt",
+ "name": "মলà§à¦Ÿà¦¿à¦¯à¦¼"
+ },
+ "jmc": {
+ "code": "jmc",
+ "name": "মাকামে"
+ },
+ "kde": {
+ "code": "kde",
+ "name": "মাকোনà§à¦¦à§‡"
+ },
+ "mgh": {
+ "code": "mgh",
+ "name": "মাখà§à¦¯à¦¼à¦¾-মেতà§à¦¤à§‹"
+ },
+ "mr": {
+ "code": "mr",
+ "name": "মারাঠি"
+ },
+ "ms": {
+ "code": "ms",
+ "name": "মালয়"
+ },
+ "mg": {
+ "code": "mg",
+ "name": "মালাগাসি"
+ },
+ "ml": {
+ "code": "ml",
+ "name": "মালায়ালাম"
+ },
+ "mas": {
+ "code": "mas",
+ "name": "মাসাই"
+ },
+ "mua": {
+ "code": "mua",
+ "name": "মà§à¦¦à¦¾à¦™à§à¦—"
+ },
+ "mer": {
+ "code": "mer",
+ "name": "মেরà§"
+ },
+ "es-MX": {
+ "code": "es-MX",
+ "name": "মà§à¦¯à¦¾à¦•à§à¦¸à¦¿à¦•à¦¾à¦¨ সà§à¦ªà§à¦¯à¦¾à¦¨à¦¿à¦¶"
+ },
+ "mk": {
+ "code": "mk",
+ "name": "মà§à¦¯à¦¾à¦¸à¦¿à¦¡à§‹à¦¨à§€à¦¯à¦¼"
+ },
+ "rof": {
+ "code": "rof",
+ "name": "রমà§à¦¬à§‹"
+ },
+ "rwk": {
+ "code": "rwk",
+ "name": "রাওয়া"
+ },
+ "rn": {
+ "code": "rn",
+ "name": "রà§à¦¨à§à¦¦à¦¿"
+ },
+ "ru": {
+ "code": "ru",
+ "name": "রà§à¦¶"
+ },
+ "ro": {
+ "code": "ro",
+ "name": "রোমানীয়"
+ },
+ "rm": {
+ "code": "rm",
+ "name": "রোমানà§à¦¸"
+ },
+ "lo": {
+ "code": "lo",
+ "name": "লাও"
+ },
+ "lag": {
+ "code": "lag",
+ "name": "লাঙà§à¦—ি"
+ },
+ "lv": {
+ "code": "lv",
+ "name": "লাতà§â€Œà¦­à§€à¦¯à¦¼"
+ },
+ "ln": {
+ "code": "ln",
+ "name": "লিঙà§à¦—ালা"
+ },
+ "lt": {
+ "code": "lt",
+ "name": "লিথà§à¦¯à¦¼à§‡à¦¨à§€à¦¯à¦¼"
+ },
+ "luy": {
+ "code": "luy",
+ "name": "লà§à¦‡à¦¯à¦¼à¦¾"
+ },
+ "lb": {
+ "code": "lb",
+ "name": "লà§à¦•à§à¦¸à§‡à¦®à¦¬à¦¾à¦°à§à¦—ীয়"
+ },
+ "lu": {
+ "code": "lu",
+ "name": "লà§à¦¬à¦¾-কাটাঙà§à¦—া"
+ },
+ "luo": {
+ "code": "luo",
+ "name": "লà§à¦¯à¦¼à§‹"
+ },
+ "ksb": {
+ "code": "ksb",
+ "name": "শামà§à¦¬à¦¾à¦²à¦¾"
+ },
+ "sn": {
+ "code": "sn",
+ "name": "শোনা"
+ },
+ "zh-Hans": {
+ "code": "zh-Hans",
+ "name": "সরলীকৃত চীনা"
+ },
+ "sbp": {
+ "code": "sbp",
+ "name": "সাঙà§à¦—à§"
+ },
+ "sg": {
+ "code": "sg",
+ "name": "সাঙà§à¦—ো"
+ },
+ "saq": {
+ "code": "saq",
+ "name": "সামবà§à¦°à§"
+ },
+ "sr": {
+ "code": "sr",
+ "name": "সারà§à¦¬à§€à¦¯à¦¼"
+ },
+ "si": {
+ "code": "si",
+ "name": "সিংহলী"
+ },
+ "sv": {
+ "code": "sv",
+ "name": "সà§à¦‡à¦¡à¦¿à¦¶"
+ },
+ "de-CH": {
+ "code": "de-CH",
+ "name": "সà§à¦‡à¦¸ উচà§à¦š জারà§à¦®à¦¾à¦¨à¦¿"
+ },
+ "gsw": {
+ "code": "gsw",
+ "name": "সà§à¦‡à¦¸ জারà§à¦®à¦¾à¦¨"
+ },
+ "fr-CH": {
+ "code": "fr-CH",
+ "name": "সà§à¦‡à¦¸ ফরাসি"
+ },
+ "seh": {
+ "code": "seh",
+ "name": "সেনা"
+ },
+ "tzm": {
+ "code": "tzm",
+ "name": "সেনà§à¦Ÿà§à¦°à¦¾à¦² আটলাস তামাজিগাত"
+ },
+ "xog": {
+ "code": "xog",
+ "name": "সোগা"
+ },
+ "so": {
+ "code": "so",
+ "name": "সোমালী"
+ },
+ "sw": {
+ "code": "sw",
+ "name": "সোয়াহিলি"
+ },
+ "gd": {
+ "code": "gd",
+ "name": "সà§à¦•à¦Ÿà¦¸-গà§à¦¯à§‡à¦²à¦¿à¦•"
+ },
+ "es": {
+ "code": "es",
+ "name": "সà§à¦ªà§à¦¯à¦¾à¦¨à¦¿à¦¶"
+ },
+ "sk": {
+ "code": "sk",
+ "name": "সà§à¦²à§‹à¦­à¦¾à¦•"
+ },
+ "sl": {
+ "code": "sl",
+ "name": "সà§à¦²à§‹à¦­à§‡à¦¨à§€à¦¯à¦¼"
+ },
+ "ha": {
+ "code": "ha",
+ "name": "হাউসা"
+ },
+ "hu": {
+ "code": "hu",
+ "name": "হাঙà§à¦—েরীয়"
+ },
+ "hi": {
+ "code": "hi",
+ "name": "হিনà§à¦¦à¦¿"
+ },
+ "he": {
+ "code": "he",
+ "name": "হিবà§à¦°à§"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/language/bo.json b/library/intl/resources/language/bo.json
new file mode 100644
index 000000000..fe95eca3e
--- /dev/null
+++ b/library/intl/resources/language/bo.json
@@ -0,0 +1,738 @@
+{
+ "af": {
+ "code": "af",
+ "name": "Afrikaans"
+ },
+ "agq": {
+ "code": "agq",
+ "name": "Aghem"
+ },
+ "ak": {
+ "code": "ak",
+ "name": "Akan"
+ },
+ "sq": {
+ "code": "sq",
+ "name": "Albanian"
+ },
+ "am": {
+ "code": "am",
+ "name": "Amharic"
+ },
+ "ar-001": {
+ "code": "ar-001",
+ "name": "ar_001"
+ },
+ "ar": {
+ "code": "ar",
+ "name": "Arabic"
+ },
+ "hy": {
+ "code": "hy",
+ "name": "Armenian"
+ },
+ "ast": {
+ "code": "ast",
+ "name": "Asturian"
+ },
+ "asa": {
+ "code": "asa",
+ "name": "Asu"
+ },
+ "az": {
+ "code": "az",
+ "name": "Azerbaijani"
+ },
+ "ksf": {
+ "code": "ksf",
+ "name": "Bafia"
+ },
+ "bm": {
+ "code": "bm",
+ "name": "Bambara"
+ },
+ "bas": {
+ "code": "bas",
+ "name": "Basaa"
+ },
+ "eu": {
+ "code": "eu",
+ "name": "Basque"
+ },
+ "be": {
+ "code": "be",
+ "name": "Belarusian"
+ },
+ "bez": {
+ "code": "bez",
+ "name": "Bena"
+ },
+ "brx": {
+ "code": "brx",
+ "name": "Bodo"
+ },
+ "bs": {
+ "code": "bs",
+ "name": "Bosnian"
+ },
+ "br": {
+ "code": "br",
+ "name": "Breton"
+ },
+ "bg": {
+ "code": "bg",
+ "name": "Bulgarian"
+ },
+ "ca": {
+ "code": "ca",
+ "name": "Catalan"
+ },
+ "tzm": {
+ "code": "tzm",
+ "name": "Central Atlas Tamazight"
+ },
+ "chr": {
+ "code": "chr",
+ "name": "Cherokee"
+ },
+ "cgg": {
+ "code": "cgg",
+ "name": "Chiga"
+ },
+ "ksh": {
+ "code": "ksh",
+ "name": "Colognian"
+ },
+ "swc": {
+ "code": "swc",
+ "name": "Congo Swahili"
+ },
+ "hr": {
+ "code": "hr",
+ "name": "Croatian"
+ },
+ "cs": {
+ "code": "cs",
+ "name": "Czech"
+ },
+ "de-AT": {
+ "code": "de-AT",
+ "name": "de_AT"
+ },
+ "de-CH": {
+ "code": "de-CH",
+ "name": "de_CH"
+ },
+ "ebu": {
+ "code": "ebu",
+ "name": "Embu"
+ },
+ "en-AU": {
+ "code": "en-AU",
+ "name": "en_AU"
+ },
+ "es-ES": {
+ "code": "es-ES",
+ "name": "es_ES"
+ },
+ "es-MX": {
+ "code": "es-MX",
+ "name": "es_MX"
+ },
+ "eo": {
+ "code": "eo",
+ "name": "Esperanto"
+ },
+ "et": {
+ "code": "et",
+ "name": "Estonian"
+ },
+ "ee": {
+ "code": "ee",
+ "name": "Ewe"
+ },
+ "ewo": {
+ "code": "ewo",
+ "name": "Ewondo"
+ },
+ "fo": {
+ "code": "fo",
+ "name": "Faroese"
+ },
+ "fil": {
+ "code": "fil",
+ "name": "Filipino"
+ },
+ "fi": {
+ "code": "fi",
+ "name": "Finnish"
+ },
+ "fr-CA": {
+ "code": "fr-CA",
+ "name": "fr_CA"
+ },
+ "fr-CH": {
+ "code": "fr-CH",
+ "name": "fr_CH"
+ },
+ "fur": {
+ "code": "fur",
+ "name": "Friulian"
+ },
+ "ff": {
+ "code": "ff",
+ "name": "Fulah"
+ },
+ "gl": {
+ "code": "gl",
+ "name": "Galician"
+ },
+ "lg": {
+ "code": "lg",
+ "name": "Ganda"
+ },
+ "ka": {
+ "code": "ka",
+ "name": "Georgian"
+ },
+ "el": {
+ "code": "el",
+ "name": "Greek"
+ },
+ "guz": {
+ "code": "guz",
+ "name": "Gusii"
+ },
+ "ha": {
+ "code": "ha",
+ "name": "Hausa"
+ },
+ "he": {
+ "code": "he",
+ "name": "Hebrew"
+ },
+ "hu": {
+ "code": "hu",
+ "name": "Hungarian"
+ },
+ "is": {
+ "code": "is",
+ "name": "Icelandic"
+ },
+ "ga": {
+ "code": "ga",
+ "name": "Irish"
+ },
+ "dyo": {
+ "code": "dyo",
+ "name": "Jola-Fonyi"
+ },
+ "kea": {
+ "code": "kea",
+ "name": "Kabuverdianu"
+ },
+ "kab": {
+ "code": "kab",
+ "name": "Kabyle"
+ },
+ "kl": {
+ "code": "kl",
+ "name": "Kalaallisut"
+ },
+ "kln": {
+ "code": "kln",
+ "name": "Kalenjin"
+ },
+ "kam": {
+ "code": "kam",
+ "name": "Kamba"
+ },
+ "ks": {
+ "code": "ks",
+ "name": "Kashmiri"
+ },
+ "kk": {
+ "code": "kk",
+ "name": "Kazakh"
+ },
+ "km": {
+ "code": "km",
+ "name": "Khmer"
+ },
+ "ki": {
+ "code": "ki",
+ "name": "Kikuyu"
+ },
+ "khq": {
+ "code": "khq",
+ "name": "Koyra Chiini"
+ },
+ "ses": {
+ "code": "ses",
+ "name": "Koyraboro Senni"
+ },
+ "nmg": {
+ "code": "nmg",
+ "name": "Kwasio"
+ },
+ "ky": {
+ "code": "ky",
+ "name": "Kyrgyz"
+ },
+ "lag": {
+ "code": "lag",
+ "name": "Langi"
+ },
+ "lo": {
+ "code": "lo",
+ "name": "Lao"
+ },
+ "lv": {
+ "code": "lv",
+ "name": "Latvian"
+ },
+ "ln": {
+ "code": "ln",
+ "name": "Lingala"
+ },
+ "lt": {
+ "code": "lt",
+ "name": "Lithuanian"
+ },
+ "dsb": {
+ "code": "dsb",
+ "name": "Lower Sorbian"
+ },
+ "lu": {
+ "code": "lu",
+ "name": "Luba-Katanga"
+ },
+ "luo": {
+ "code": "luo",
+ "name": "Luo"
+ },
+ "lb": {
+ "code": "lb",
+ "name": "Luxembourgish"
+ },
+ "luy": {
+ "code": "luy",
+ "name": "Luyia"
+ },
+ "mk": {
+ "code": "mk",
+ "name": "Macedonian"
+ },
+ "jmc": {
+ "code": "jmc",
+ "name": "Machame"
+ },
+ "mgh": {
+ "code": "mgh",
+ "name": "Makhuwa-Meetto"
+ },
+ "kde": {
+ "code": "kde",
+ "name": "Makonde"
+ },
+ "mg": {
+ "code": "mg",
+ "name": "Malagasy"
+ },
+ "ml": {
+ "code": "ml",
+ "name": "Malayalam"
+ },
+ "mt": {
+ "code": "mt",
+ "name": "Maltese"
+ },
+ "mas": {
+ "code": "mas",
+ "name": "Masai"
+ },
+ "mer": {
+ "code": "mer",
+ "name": "Meru"
+ },
+ "mfe": {
+ "code": "mfe",
+ "name": "Morisyen"
+ },
+ "mua": {
+ "code": "mua",
+ "name": "Mundang"
+ },
+ "naq": {
+ "code": "naq",
+ "name": "Nama"
+ },
+ "jgo": {
+ "code": "jgo",
+ "name": "Ngomba"
+ },
+ "nl-BE": {
+ "code": "nl-BE",
+ "name": "nl_BE"
+ },
+ "nd": {
+ "code": "nd",
+ "name": "North Ndebele"
+ },
+ "se": {
+ "code": "se",
+ "name": "Northern Sami"
+ },
+ "nb": {
+ "code": "nb",
+ "name": "Norwegian Bokmål"
+ },
+ "nus": {
+ "code": "nus",
+ "name": "Nuer"
+ },
+ "nyn": {
+ "code": "nyn",
+ "name": "Nyankole"
+ },
+ "ps": {
+ "code": "ps",
+ "name": "Pashto"
+ },
+ "fa": {
+ "code": "fa",
+ "name": "Persian"
+ },
+ "pt-PT": {
+ "code": "pt-PT",
+ "name": "pt_PT"
+ },
+ "pa": {
+ "code": "pa",
+ "name": "Punjabi"
+ },
+ "ro-MD": {
+ "code": "ro-MD",
+ "name": "ro_MD"
+ },
+ "ro": {
+ "code": "ro",
+ "name": "Romanian"
+ },
+ "rm": {
+ "code": "rm",
+ "name": "Romansh"
+ },
+ "rof": {
+ "code": "rof",
+ "name": "Rombo"
+ },
+ "rn": {
+ "code": "rn",
+ "name": "Rundi"
+ },
+ "rwk": {
+ "code": "rwk",
+ "name": "Rwa"
+ },
+ "saq": {
+ "code": "saq",
+ "name": "Samburu"
+ },
+ "sg": {
+ "code": "sg",
+ "name": "Sango"
+ },
+ "sbp": {
+ "code": "sbp",
+ "name": "Sangu"
+ },
+ "gd": {
+ "code": "gd",
+ "name": "Scottish Gaelic"
+ },
+ "seh": {
+ "code": "seh",
+ "name": "Sena"
+ },
+ "sr": {
+ "code": "sr",
+ "name": "Serbian"
+ },
+ "ksb": {
+ "code": "ksb",
+ "name": "Shambala"
+ },
+ "sn": {
+ "code": "sn",
+ "name": "Shona"
+ },
+ "sk": {
+ "code": "sk",
+ "name": "Slovak"
+ },
+ "sl": {
+ "code": "sl",
+ "name": "Slovenian"
+ },
+ "xog": {
+ "code": "xog",
+ "name": "Soga"
+ },
+ "so": {
+ "code": "so",
+ "name": "Somali"
+ },
+ "zgh": {
+ "code": "zgh",
+ "name": "Standard Moroccan Tamazight"
+ },
+ "sw": {
+ "code": "sw",
+ "name": "Swahili"
+ },
+ "gsw": {
+ "code": "gsw",
+ "name": "Swiss German"
+ },
+ "shi": {
+ "code": "shi",
+ "name": "Tachelhit"
+ },
+ "dav": {
+ "code": "dav",
+ "name": "Taita"
+ },
+ "twq": {
+ "code": "twq",
+ "name": "Tasawaq"
+ },
+ "teo": {
+ "code": "teo",
+ "name": "Teso"
+ },
+ "ti": {
+ "code": "ti",
+ "name": "Tigrinya"
+ },
+ "to": {
+ "code": "to",
+ "name": "Tongan"
+ },
+ "hsb": {
+ "code": "hsb",
+ "name": "Upper Sorbian"
+ },
+ "uz": {
+ "code": "uz",
+ "name": "Uzbek"
+ },
+ "vai": {
+ "code": "vai",
+ "name": "Vai"
+ },
+ "vun": {
+ "code": "vun",
+ "name": "Vunjo"
+ },
+ "wae": {
+ "code": "wae",
+ "name": "Walser"
+ },
+ "cy": {
+ "code": "cy",
+ "name": "Welsh"
+ },
+ "fy": {
+ "code": "fy",
+ "name": "Western Frisian"
+ },
+ "yav": {
+ "code": "yav",
+ "name": "Yangben"
+ },
+ "yo": {
+ "code": "yo",
+ "name": "Yoruba"
+ },
+ "dje": {
+ "code": "dje",
+ "name": "Zarma"
+ },
+ "kn": {
+ "code": "kn",
+ "name": "ཀནྣ་ཌ་སà¾à½‘à¼"
+ },
+ "ko": {
+ "code": "ko",
+ "name": "à½à½¼à¼‹à½¢à½ºà¼‹à½¡à½ à½²à¼‹à½¦à¾à½‘à¼"
+ },
+ "gu": {
+ "code": "gu",
+ "name": "གུཇ་རཱà½à½²à¼‹à½¦à¾à½‘à¼"
+ },
+ "ta": {
+ "code": "ta",
+ "name": "à½à½±à¼‹à½˜à½²à½£à¼‹à½¦à¾à½‘à¼"
+ },
+ "te": {
+ "code": "te",
+ "name": "à½à½ºà¼‹à½£à½´à¼‹à½‚ུ་སà¾à½‘à¼"
+ },
+ "da": {
+ "code": "da",
+ "name": "à½à½ºà½“་མག་གི་སà¾à½‘à¼"
+ },
+ "th": {
+ "code": "th",
+ "name": "à½à½ à½ à½²à¼‹à½¡à½´à½£à¼‹à½¦à¾à½‘à¼"
+ },
+ "tr": {
+ "code": "tr",
+ "name": "à½à½´à½¢à¼‹à½à½ºà½ à½²à¼‹à½¦à¾à½‘à¼"
+ },
+ "it": {
+ "code": "it",
+ "name": "དབྱི་à½à¼‹à¼‹à½£à½ à½²à¼‹à½˜à½²à¼"
+ },
+ "en": {
+ "code": "en",
+ "name": "དབིན་ཇིའི་སà¾à½‘à¼"
+ },
+ "en-CA": {
+ "code": "en-CA",
+ "name": "དབིན་ཇིའི་སà¾à½‘༠(à½à½ºà¼‹à½“་ཌ་)"
+ },
+ "en-GB": {
+ "code": "en-GB",
+ "name": "དབིན་ཇིའི་སà¾à½‘༠(དབིན་ཇིའི་རྒྱལ་à½à½–་)"
+ },
+ "en-US": {
+ "code": "en-US",
+ "name": "དབིན་ཇིའི་སà¾à½‘༠(ཨ་རི་)"
+ },
+ "ne": {
+ "code": "ne",
+ "name": "ནེ་པ་ལི"
+ },
+ "nn": {
+ "code": "nn",
+ "name": "ནོ་à½à½ºà¼‹à½¦à¾à½‘à¼"
+ },
+ "pt-BR": {
+ "code": "pt-BR",
+ "name": "པ་ཞའི་མི༠ཕི་à½à½¼à¼‹à½¡à½ à½²à¼‹à½˜à½²à¼"
+ },
+ "pl": {
+ "code": "pl",
+ "name": "པོ་ལན་སà¾à½‘à¼"
+ },
+ "pt": {
+ "code": "pt",
+ "name": "ཕི་à½à½¼à¼‹à½¡à½ à½²à¼"
+ },
+ "bn": {
+ "code": "bn",
+ "name": "བྷང་ག་ལའི་སà¾à½‘à¼"
+ },
+ "bo": {
+ "code": "bo",
+ "name": "བོད་སà¾à½‘་"
+ },
+ "mr": {
+ "code": "mr",
+ "name": "མ་ར་à½à½²à¼‹à½¦à¾à½‘à¼"
+ },
+ "ms": {
+ "code": "ms",
+ "name": "མ་ལ་ཡ་སà¾à½‘à¼"
+ },
+ "ur": {
+ "code": "ur",
+ "name": "à½à½´à½ à½´à¼‹à½à½´à½ à½´à¼‹à½¦à¾à½‘à¼"
+ },
+ "es": {
+ "code": "es",
+ "name": "ཞི་པན་ཡའིà¼"
+ },
+ "si": {
+ "code": "si",
+ "name": "ཞི་ལན་སà¾à½‘à¼"
+ },
+ "zu": {
+ "code": "zu",
+ "name": "ཟུ་ལུ་སà¾à½‘à¼"
+ },
+ "de": {
+ "code": "de",
+ "name": "འཇར་མན་གྱིà¼"
+ },
+ "my": {
+ "code": "my",
+ "name": "འབར་མའི་སà¾à½‘à¼"
+ },
+ "uk": {
+ "code": "uk",
+ "name": "ཡུ་ཀྲ་ནི་སà¾à½‘à¼"
+ },
+ "ug": {
+ "code": "ug",
+ "name": "ཡུ་གུར་སà¾à½‘à¼"
+ },
+ "vi": {
+ "code": "vi",
+ "name": "ཡོ་ནན་སà¾à½‘à¼"
+ },
+ "zh": {
+ "code": "zh",
+ "name": "རྒྱ་སà¾à½‘་"
+ },
+ "dz": {
+ "code": "dz",
+ "name": "རྫོང་à½"
+ },
+ "ja": {
+ "code": "ja",
+ "name": "རི་པིན་སà¾à½‘་"
+ },
+ "zh-Hans": {
+ "code": "zh-Hans",
+ "name": "སྟབས་བརྡའི༠ཀྲུང་གོའིà¼"
+ },
+ "zh-Hant": {
+ "code": "zh-Hant",
+ "name": "སྲོལ་རྒྱུན་གྱིà¼"
+ },
+ "mn": {
+ "code": "mn",
+ "name": "སོག་སà¾à½‘à¼"
+ },
+ "fr": {
+ "code": "fr",
+ "name": "ཧྥ་རན་སིའི་à¼"
+ },
+ "nl": {
+ "code": "nl",
+ "name": "ཧའོ་ལན་སà¾à½‘à¼"
+ },
+ "sv": {
+ "code": "sv",
+ "name": "ཧྲུའི་à½à½“་སà¾à½‘à¼"
+ },
+ "hi": {
+ "code": "hi",
+ "name": "ཧིན་དི"
+ },
+ "id": {
+ "code": "id",
+ "name": "ཨིན་དོ་ནི་སི་སà¾à½‘à¼"
+ },
+ "ru": {
+ "code": "ru",
+ "name": "ཨུ་རུ་སུ་སà¾à½‘་"
+ },
+ "or": {
+ "code": "or",
+ "name": "ཨཽ་རི་ཡ་སà¾à½‘à¼"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/language/br.json b/library/intl/resources/language/br.json
new file mode 100644
index 000000000..56cb8c8b9
--- /dev/null
+++ b/library/intl/resources/language/br.json
@@ -0,0 +1,738 @@
+{
+ "af": {
+ "code": "af",
+ "name": "afrikaans"
+ },
+ "agq": {
+ "code": "agq",
+ "name": "aghem"
+ },
+ "ak": {
+ "code": "ak",
+ "name": "akan"
+ },
+ "de": {
+ "code": "de",
+ "name": "alamaneg"
+ },
+ "de-AT": {
+ "code": "de-AT",
+ "name": "alamaneg Aostria"
+ },
+ "gsw": {
+ "code": "gsw",
+ "name": "alamaneg Suis"
+ },
+ "de-CH": {
+ "code": "de-CH",
+ "name": "alamaneg uhel Suis"
+ },
+ "sq": {
+ "code": "sq",
+ "name": "albaneg"
+ },
+ "am": {
+ "code": "am",
+ "name": "amhareg"
+ },
+ "ar": {
+ "code": "ar",
+ "name": "arabeg"
+ },
+ "ar-001": {
+ "code": "ar-001",
+ "name": "arabeg modern"
+ },
+ "hy": {
+ "code": "hy",
+ "name": "armenianeg"
+ },
+ "ast": {
+ "code": "ast",
+ "name": "Asturian"
+ },
+ "asa": {
+ "code": "asa",
+ "name": "asu"
+ },
+ "az": {
+ "code": "az",
+ "name": "azeri"
+ },
+ "ksf": {
+ "code": "ksf",
+ "name": "Bafia"
+ },
+ "bm": {
+ "code": "bm",
+ "name": "bambara"
+ },
+ "bas": {
+ "code": "bas",
+ "name": "basaa"
+ },
+ "be": {
+ "code": "be",
+ "name": "belaruseg"
+ },
+ "bez": {
+ "code": "bez",
+ "name": "bena"
+ },
+ "bn": {
+ "code": "bn",
+ "name": "bengali"
+ },
+ "my": {
+ "code": "my",
+ "name": "birmaneg"
+ },
+ "brx": {
+ "code": "brx",
+ "name": "bodo"
+ },
+ "bs": {
+ "code": "bs",
+ "name": "bosneg"
+ },
+ "br": {
+ "code": "br",
+ "name": "brezhoneg"
+ },
+ "bg": {
+ "code": "bg",
+ "name": "bulgareg"
+ },
+ "tzm": {
+ "code": "tzm",
+ "name": "Central Atlas Tamazight"
+ },
+ "chr": {
+ "code": "chr",
+ "name": "cherokee"
+ },
+ "cgg": {
+ "code": "cgg",
+ "name": "Chiga"
+ },
+ "ksh": {
+ "code": "ksh",
+ "name": "Colognian"
+ },
+ "swc": {
+ "code": "swc",
+ "name": "Congo Swahili"
+ },
+ "da": {
+ "code": "da",
+ "name": "daneg"
+ },
+ "dz": {
+ "code": "dz",
+ "name": "dzongkha"
+ },
+ "ebu": {
+ "code": "ebu",
+ "name": "embu"
+ },
+ "eo": {
+ "code": "eo",
+ "name": "esperanteg"
+ },
+ "et": {
+ "code": "et",
+ "name": "estoneg"
+ },
+ "eu": {
+ "code": "eu",
+ "name": "euskareg"
+ },
+ "ee": {
+ "code": "ee",
+ "name": "ewe"
+ },
+ "ewo": {
+ "code": "ewo",
+ "name": "ewondo"
+ },
+ "fo": {
+ "code": "fo",
+ "name": "faeroeg"
+ },
+ "fil": {
+ "code": "fil",
+ "name": "filipineg"
+ },
+ "fi": {
+ "code": "fi",
+ "name": "finneg"
+ },
+ "nl-BE": {
+ "code": "nl-BE",
+ "name": "flandrezeg"
+ },
+ "fur": {
+ "code": "fur",
+ "name": "frioulaneg"
+ },
+ "fy": {
+ "code": "fy",
+ "name": "frizeg ar Cʼhornôg"
+ },
+ "ff": {
+ "code": "ff",
+ "name": "Fulah"
+ },
+ "gl": {
+ "code": "gl",
+ "name": "galizeg"
+ },
+ "fr": {
+ "code": "fr",
+ "name": "galleg"
+ },
+ "fr-CA": {
+ "code": "fr-CA",
+ "name": "galleg Kanada"
+ },
+ "fr-CH": {
+ "code": "fr-CH",
+ "name": "galleg Suis"
+ },
+ "lg": {
+ "code": "lg",
+ "name": "ganda"
+ },
+ "el": {
+ "code": "el",
+ "name": "gresianeg"
+ },
+ "gu": {
+ "code": "gu",
+ "name": "gujarati"
+ },
+ "guz": {
+ "code": "guz",
+ "name": "Gusii"
+ },
+ "ha": {
+ "code": "ha",
+ "name": "haousa"
+ },
+ "he": {
+ "code": "he",
+ "name": "hebraeg"
+ },
+ "hi": {
+ "code": "hi",
+ "name": "hindi"
+ },
+ "hu": {
+ "code": "hu",
+ "name": "hungareg"
+ },
+ "id": {
+ "code": "id",
+ "name": "indonezeg"
+ },
+ "is": {
+ "code": "is",
+ "name": "islandeg"
+ },
+ "it": {
+ "code": "it",
+ "name": "italianeg"
+ },
+ "ga": {
+ "code": "ga",
+ "name": "iwerzhoneg"
+ },
+ "dsb": {
+ "code": "dsb",
+ "name": "izelsorabeg"
+ },
+ "ja": {
+ "code": "ja",
+ "name": "japaneg"
+ },
+ "dyo": {
+ "code": "dyo",
+ "name": "Jola-Fonyi"
+ },
+ "ka": {
+ "code": "ka",
+ "name": "jorjianeg"
+ },
+ "kab": {
+ "code": "kab",
+ "name": "kabileg"
+ },
+ "kea": {
+ "code": "kea",
+ "name": "kabuverdianu"
+ },
+ "kl": {
+ "code": "kl",
+ "name": "Kalaallisut"
+ },
+ "kln": {
+ "code": "kln",
+ "name": "Kalenjin"
+ },
+ "kam": {
+ "code": "kam",
+ "name": "kamba"
+ },
+ "kn": {
+ "code": "kn",
+ "name": "kanareg"
+ },
+ "ks": {
+ "code": "ks",
+ "name": "kashmiri"
+ },
+ "ca": {
+ "code": "ca",
+ "name": "katalaneg"
+ },
+ "kk": {
+ "code": "kk",
+ "name": "kazak"
+ },
+ "cy": {
+ "code": "cy",
+ "name": "kembraeg"
+ },
+ "km": {
+ "code": "km",
+ "name": "khmer"
+ },
+ "ki": {
+ "code": "ki",
+ "name": "kikuyu"
+ },
+ "ky": {
+ "code": "ky",
+ "name": "kirgiz"
+ },
+ "ko": {
+ "code": "ko",
+ "name": "koreaneg"
+ },
+ "khq": {
+ "code": "khq",
+ "name": "Koyra Chiini"
+ },
+ "ses": {
+ "code": "ses",
+ "name": "Koyraboro Senni"
+ },
+ "hr": {
+ "code": "hr",
+ "name": "kroateg"
+ },
+ "nmg": {
+ "code": "nmg",
+ "name": "Kwasio"
+ },
+ "lag": {
+ "code": "lag",
+ "name": "Langi"
+ },
+ "lo": {
+ "code": "lo",
+ "name": "laoseg"
+ },
+ "lv": {
+ "code": "lv",
+ "name": "latvieg"
+ },
+ "ln": {
+ "code": "ln",
+ "name": "lingala"
+ },
+ "lt": {
+ "code": "lt",
+ "name": "lituaneg"
+ },
+ "lu": {
+ "code": "lu",
+ "name": "luba-katanga"
+ },
+ "lb": {
+ "code": "lb",
+ "name": "luksembourgeg"
+ },
+ "luo": {
+ "code": "luo",
+ "name": "Luo"
+ },
+ "luy": {
+ "code": "luy",
+ "name": "luyia"
+ },
+ "jmc": {
+ "code": "jmc",
+ "name": "Machame"
+ },
+ "mk": {
+ "code": "mk",
+ "name": "makedoneg"
+ },
+ "mgh": {
+ "code": "mgh",
+ "name": "Makhuwa-Meetto"
+ },
+ "kde": {
+ "code": "kde",
+ "name": "Makonde"
+ },
+ "ml": {
+ "code": "ml",
+ "name": "malayalam"
+ },
+ "ms": {
+ "code": "ms",
+ "name": "malayseg"
+ },
+ "mg": {
+ "code": "mg",
+ "name": "malgacheg"
+ },
+ "mt": {
+ "code": "mt",
+ "name": "malteg"
+ },
+ "mr": {
+ "code": "mr",
+ "name": "marathi"
+ },
+ "mas": {
+ "code": "mas",
+ "name": "masai"
+ },
+ "mer": {
+ "code": "mer",
+ "name": "Meru"
+ },
+ "ro-MD": {
+ "code": "ro-MD",
+ "name": "moldoveg"
+ },
+ "mn": {
+ "code": "mn",
+ "name": "mongoleg"
+ },
+ "mfe": {
+ "code": "mfe",
+ "name": "moriseg"
+ },
+ "mua": {
+ "code": "mua",
+ "name": "Mundang"
+ },
+ "naq": {
+ "code": "naq",
+ "name": "Nama"
+ },
+ "nd": {
+ "code": "nd",
+ "name": "ndebele an Norzh"
+ },
+ "nl": {
+ "code": "nl",
+ "name": "nederlandeg"
+ },
+ "ne": {
+ "code": "ne",
+ "name": "nepaleg"
+ },
+ "jgo": {
+ "code": "jgo",
+ "name": "Ngomba"
+ },
+ "nb": {
+ "code": "nb",
+ "name": "norvegeg bokmål"
+ },
+ "nn": {
+ "code": "nn",
+ "name": "norvegeg nynorsk"
+ },
+ "nus": {
+ "code": "nus",
+ "name": "Nuer"
+ },
+ "nyn": {
+ "code": "nyn",
+ "name": "nyankole"
+ },
+ "or": {
+ "code": "or",
+ "name": "oriya"
+ },
+ "ug": {
+ "code": "ug",
+ "name": "ouigoureg"
+ },
+ "ur": {
+ "code": "ur",
+ "name": "ourdou"
+ },
+ "uz": {
+ "code": "uz",
+ "name": "ouzbekeg"
+ },
+ "ps": {
+ "code": "ps",
+ "name": "pachto"
+ },
+ "fa": {
+ "code": "fa",
+ "name": "perseg"
+ },
+ "pl": {
+ "code": "pl",
+ "name": "poloneg"
+ },
+ "pt": {
+ "code": "pt",
+ "name": "portugaleg"
+ },
+ "pt-BR": {
+ "code": "pt-BR",
+ "name": "portugaleg Brazil"
+ },
+ "pt-PT": {
+ "code": "pt-PT",
+ "name": "portugaleg Europa"
+ },
+ "pa": {
+ "code": "pa",
+ "name": "punjabi"
+ },
+ "rm": {
+ "code": "rm",
+ "name": "romañcheg"
+ },
+ "rof": {
+ "code": "rof",
+ "name": "rombo"
+ },
+ "ro": {
+ "code": "ro",
+ "name": "roumaneg"
+ },
+ "rn": {
+ "code": "rn",
+ "name": "rundi"
+ },
+ "ru": {
+ "code": "ru",
+ "name": "rusianeg"
+ },
+ "rwk": {
+ "code": "rwk",
+ "name": "rwa"
+ },
+ "saq": {
+ "code": "saq",
+ "name": "Samburu"
+ },
+ "se": {
+ "code": "se",
+ "name": "sámi an Norzh"
+ },
+ "sg": {
+ "code": "sg",
+ "name": "sango"
+ },
+ "sbp": {
+ "code": "sbp",
+ "name": "Sangu"
+ },
+ "en": {
+ "code": "en",
+ "name": "saozneg"
+ },
+ "en-US": {
+ "code": "en-US",
+ "name": "saozneg Amerika"
+ },
+ "en-AU": {
+ "code": "en-AU",
+ "name": "saozneg Aostralia"
+ },
+ "en-GB": {
+ "code": "en-GB",
+ "name": "saozneg Breizh-Veur"
+ },
+ "en-CA": {
+ "code": "en-CA",
+ "name": "saozneg Kanada"
+ },
+ "seh": {
+ "code": "seh",
+ "name": "Sena"
+ },
+ "sr": {
+ "code": "sr",
+ "name": "serbeg"
+ },
+ "ksb": {
+ "code": "ksb",
+ "name": "Shambala"
+ },
+ "sn": {
+ "code": "sn",
+ "name": "shona"
+ },
+ "zh": {
+ "code": "zh",
+ "name": "sinaeg"
+ },
+ "zh-Hans": {
+ "code": "zh-Hans",
+ "name": "sinaeg eeunaet"
+ },
+ "zh-Hant": {
+ "code": "zh-Hant",
+ "name": "sinaeg hengounel"
+ },
+ "si": {
+ "code": "si",
+ "name": "singhaleg"
+ },
+ "gd": {
+ "code": "gd",
+ "name": "skoseg"
+ },
+ "sk": {
+ "code": "sk",
+ "name": "slovakeg"
+ },
+ "sl": {
+ "code": "sl",
+ "name": "sloveneg"
+ },
+ "xog": {
+ "code": "xog",
+ "name": "Soga"
+ },
+ "so": {
+ "code": "so",
+ "name": "somali"
+ },
+ "es": {
+ "code": "es",
+ "name": "spagnoleg"
+ },
+ "es-ES": {
+ "code": "es-ES",
+ "name": "spagnoleg Europa"
+ },
+ "es-MX": {
+ "code": "es-MX",
+ "name": "spagnoleg Mecʼhiko"
+ },
+ "sv": {
+ "code": "sv",
+ "name": "svedeg"
+ },
+ "sw": {
+ "code": "sw",
+ "name": "swahili"
+ },
+ "shi": {
+ "code": "shi",
+ "name": "Tachelhit"
+ },
+ "dav": {
+ "code": "dav",
+ "name": "Taita"
+ },
+ "zgh": {
+ "code": "zgh",
+ "name": "tamacheg Maroko standart"
+ },
+ "ta": {
+ "code": "ta",
+ "name": "tamileg"
+ },
+ "twq": {
+ "code": "twq",
+ "name": "Tasawaq"
+ },
+ "cs": {
+ "code": "cs",
+ "name": "tchekeg"
+ },
+ "te": {
+ "code": "te",
+ "name": "telougou"
+ },
+ "teo": {
+ "code": "teo",
+ "name": "Teso"
+ },
+ "th": {
+ "code": "th",
+ "name": "thai"
+ },
+ "bo": {
+ "code": "bo",
+ "name": "tibetaneg"
+ },
+ "ti": {
+ "code": "ti",
+ "name": "tigrigna"
+ },
+ "to": {
+ "code": "to",
+ "name": "tonga"
+ },
+ "tr": {
+ "code": "tr",
+ "name": "turkeg"
+ },
+ "hsb": {
+ "code": "hsb",
+ "name": "uhelsorabeg"
+ },
+ "uk": {
+ "code": "uk",
+ "name": "ukraineg"
+ },
+ "vai": {
+ "code": "vai",
+ "name": "Vai"
+ },
+ "vi": {
+ "code": "vi",
+ "name": "vietnameg"
+ },
+ "vun": {
+ "code": "vun",
+ "name": "Vunjo"
+ },
+ "wae": {
+ "code": "wae",
+ "name": "walser"
+ },
+ "yav": {
+ "code": "yav",
+ "name": "Yangben"
+ },
+ "yo": {
+ "code": "yo",
+ "name": "yorouba"
+ },
+ "dje": {
+ "code": "dje",
+ "name": "Zarma"
+ },
+ "zu": {
+ "code": "zu",
+ "name": "zouloueg"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/language/brx.json b/library/intl/resources/language/brx.json
new file mode 100644
index 000000000..34d707a33
--- /dev/null
+++ b/library/intl/resources/language/brx.json
@@ -0,0 +1,738 @@
+{
+ "agq": {
+ "code": "agq",
+ "name": "Aghem"
+ },
+ "ar-001": {
+ "code": "ar-001",
+ "name": "ar_001"
+ },
+ "ast": {
+ "code": "ast",
+ "name": "Asturian"
+ },
+ "asa": {
+ "code": "asa",
+ "name": "Asu"
+ },
+ "ksf": {
+ "code": "ksf",
+ "name": "Bafia"
+ },
+ "bez": {
+ "code": "bez",
+ "name": "Bena"
+ },
+ "tzm": {
+ "code": "tzm",
+ "name": "Central Atlas Tamazight"
+ },
+ "cgg": {
+ "code": "cgg",
+ "name": "Chiga"
+ },
+ "ksh": {
+ "code": "ksh",
+ "name": "Colognian"
+ },
+ "swc": {
+ "code": "swc",
+ "name": "Congo Swahili"
+ },
+ "ebu": {
+ "code": "ebu",
+ "name": "Embu"
+ },
+ "es-MX": {
+ "code": "es-MX",
+ "name": "es_MX"
+ },
+ "guz": {
+ "code": "guz",
+ "name": "Gusii"
+ },
+ "dyo": {
+ "code": "dyo",
+ "name": "Jola-Fonyi"
+ },
+ "kea": {
+ "code": "kea",
+ "name": "Kabuverdianu"
+ },
+ "kln": {
+ "code": "kln",
+ "name": "Kalenjin"
+ },
+ "khq": {
+ "code": "khq",
+ "name": "Koyra Chiini"
+ },
+ "ses": {
+ "code": "ses",
+ "name": "Koyraboro Senni"
+ },
+ "nmg": {
+ "code": "nmg",
+ "name": "Kwasio"
+ },
+ "lag": {
+ "code": "lag",
+ "name": "Langi"
+ },
+ "luy": {
+ "code": "luy",
+ "name": "Luyia"
+ },
+ "jmc": {
+ "code": "jmc",
+ "name": "Machame"
+ },
+ "mgh": {
+ "code": "mgh",
+ "name": "Makhuwa-Meetto"
+ },
+ "kde": {
+ "code": "kde",
+ "name": "Makonde"
+ },
+ "mer": {
+ "code": "mer",
+ "name": "Meru"
+ },
+ "mfe": {
+ "code": "mfe",
+ "name": "Morisyen"
+ },
+ "mua": {
+ "code": "mua",
+ "name": "Mundang"
+ },
+ "naq": {
+ "code": "naq",
+ "name": "Nama"
+ },
+ "jgo": {
+ "code": "jgo",
+ "name": "Ngomba"
+ },
+ "nus": {
+ "code": "nus",
+ "name": "Nuer"
+ },
+ "pt-BR": {
+ "code": "pt-BR",
+ "name": "pt_BR"
+ },
+ "pt-PT": {
+ "code": "pt-PT",
+ "name": "pt_PT"
+ },
+ "rof": {
+ "code": "rof",
+ "name": "Rombo"
+ },
+ "rwk": {
+ "code": "rwk",
+ "name": "Rwa"
+ },
+ "saq": {
+ "code": "saq",
+ "name": "Samburu"
+ },
+ "sbp": {
+ "code": "sbp",
+ "name": "Sangu"
+ },
+ "seh": {
+ "code": "seh",
+ "name": "Sena"
+ },
+ "ksb": {
+ "code": "ksb",
+ "name": "Shambala"
+ },
+ "xog": {
+ "code": "xog",
+ "name": "Soga"
+ },
+ "zgh": {
+ "code": "zgh",
+ "name": "Standard Moroccan Tamazight"
+ },
+ "shi": {
+ "code": "shi",
+ "name": "Tachelhit"
+ },
+ "dav": {
+ "code": "dav",
+ "name": "Taita"
+ },
+ "twq": {
+ "code": "twq",
+ "name": "Tasawaq"
+ },
+ "teo": {
+ "code": "teo",
+ "name": "Teso"
+ },
+ "vun": {
+ "code": "vun",
+ "name": "Vunjo"
+ },
+ "wae": {
+ "code": "wae",
+ "name": "Walser"
+ },
+ "yav": {
+ "code": "yav",
+ "name": "Yangben"
+ },
+ "dje": {
+ "code": "dje",
+ "name": "Zarma"
+ },
+ "ak": {
+ "code": "ak",
+ "name": "अकन"
+ },
+ "en": {
+ "code": "en",
+ "name": "अंगà¥à¤°à¥‡à¤œà¤¼à¥€"
+ },
+ "en-US": {
+ "code": "en-US",
+ "name": "अंगà¥à¤°à¥‡à¤œà¤¼à¥€ (अमरिकी)"
+ },
+ "en-AU": {
+ "code": "en-AU",
+ "name": "अंगà¥à¤°à¥‡à¤œà¤¼à¥€ (ऑसà¥à¤Ÿà¥à¤°à¥‡à¤²à¤¿à¤¯à¤¾ का)"
+ },
+ "en-CA": {
+ "code": "en-CA",
+ "name": "अंगà¥à¤°à¥‡à¤œà¤¼à¥€ (कनाडाई)"
+ },
+ "en-GB": {
+ "code": "en-GB",
+ "name": "अंगà¥à¤°à¥‡à¤œà¥€ (बà¥à¤°à¤¿à¤Ÿà¤¿à¤¶)"
+ },
+ "az": {
+ "code": "az",
+ "name": "अज़रबैजानी"
+ },
+ "af": {
+ "code": "af",
+ "name": "अफà¥à¤°à¥€à¤•à¥€"
+ },
+ "am": {
+ "code": "am",
+ "name": "अमà¥à¤¹à¤¾à¤°à¤¿à¤•à¥"
+ },
+ "ar": {
+ "code": "ar",
+ "name": "अरबी"
+ },
+ "hy": {
+ "code": "hy",
+ "name": "अरमेनियनà¥"
+ },
+ "ga": {
+ "code": "ga",
+ "name": "आईरिश"
+ },
+ "is": {
+ "code": "is",
+ "name": "आईसà¥à¤²à¥ˆà¤‚डिकà¥"
+ },
+ "sq": {
+ "code": "sq",
+ "name": "आलà¥à¤¬à¥‡à¤¨à¤¿à¤¯à¤¨à¥"
+ },
+ "id": {
+ "code": "id",
+ "name": "इनà¥à¤¡à¥‹à¤¨à¥‡à¤¶à¤¿à¤¯à¤¨à¥"
+ },
+ "it": {
+ "code": "it",
+ "name": "ईटालियनà¥"
+ },
+ "es-ES": {
+ "code": "es-ES",
+ "name": "ईवेरियाई सà¥à¤ªà¥ˆà¤¨à¤¿à¤¶"
+ },
+ "ug": {
+ "code": "ug",
+ "name": "उईग़à¥à¤°"
+ },
+ "de-CH": {
+ "code": "de-CH",
+ "name": "उचà¥à¤š सà¥à¤¤à¤°à¤¿à¤¯ सà¥à¤µà¥€à¤¸ जरà¥à¤®à¤¨"
+ },
+ "uz": {
+ "code": "uz",
+ "name": "उज़बेकà¥"
+ },
+ "or": {
+ "code": "or",
+ "name": "उड़िया"
+ },
+ "nd": {
+ "code": "nd",
+ "name": "उतà¥à¤¤à¤° नà¥à¤¦à¤¬à¥‡à¤²à¥‡"
+ },
+ "se": {
+ "code": "se",
+ "name": "उतà¥à¤¤à¤°à¥€ सामी"
+ },
+ "hsb": {
+ "code": "hsb",
+ "name": "ऊपरी सौरà¥à¤¬à¤¿à¤¯à¤¨"
+ },
+ "ur": {
+ "code": "ur",
+ "name": "ऊरà¥à¤¦à¥"
+ },
+ "ee": {
+ "code": "ee",
+ "name": "à¤à¤µà¥‡"
+ },
+ "ewo": {
+ "code": "ewo",
+ "name": "à¤à¤µà¥Œà¤‚डो"
+ },
+ "eo": {
+ "code": "eo",
+ "name": "à¤à¤¸à¥à¤ªà¥‡à¤°à¤¾à¤¨à¥à¤¤à¥‹"
+ },
+ "et": {
+ "code": "et",
+ "name": "à¤à¤¸à¥à¤Ÿà¥‹à¤¨à¤¿à¤¯à¤¨à¥"
+ },
+ "kk": {
+ "code": "kk",
+ "name": "क़ज़ाख़à¥"
+ },
+ "kn": {
+ "code": "kn",
+ "name": "कनà¥à¤¨à¤¡à¥"
+ },
+ "kam": {
+ "code": "kam",
+ "name": "कंबा"
+ },
+ "kl": {
+ "code": "kl",
+ "name": "कलालीसà¥à¤¤"
+ },
+ "ks": {
+ "code": "ks",
+ "name": "कशà¥à¤®à¤¿à¤°à¥€"
+ },
+ "ca": {
+ "code": "ca",
+ "name": "कातालानà¥"
+ },
+ "kab": {
+ "code": "kab",
+ "name": "काबीलà¥"
+ },
+ "ki": {
+ "code": "ki",
+ "name": "किकà¥à¤¯à¥"
+ },
+ "ky": {
+ "code": "ky",
+ "name": "किरग़ीज़à¥"
+ },
+ "rn": {
+ "code": "rn",
+ "name": "किरूनà¥à¤¦à¥€"
+ },
+ "ko": {
+ "code": "ko",
+ "name": "कोरीयनà¥"
+ },
+ "hr": {
+ "code": "hr",
+ "name": "कà¥à¤°à¥‹à¤à¤¶à¤¨à¥"
+ },
+ "km": {
+ "code": "km",
+ "name": "खà¥à¤®à¥‡à¤°"
+ },
+ "lg": {
+ "code": "lg",
+ "name": "गांडा"
+ },
+ "gu": {
+ "code": "gu",
+ "name": "गà¥à¤œà¤°à¤¾à¤¤à¥€"
+ },
+ "gl": {
+ "code": "gl",
+ "name": "गैलिशियनà¥"
+ },
+ "el": {
+ "code": "el",
+ "name": "गà¥à¤°à¥€à¤•"
+ },
+ "zh": {
+ "code": "zh",
+ "name": "चीनी"
+ },
+ "zh-Hant": {
+ "code": "zh-Hant",
+ "name": "चीनी (पारमà¥à¤ªà¤°à¤¿à¤•)"
+ },
+ "zh-Hans": {
+ "code": "zh-Hans",
+ "name": "चीनी (सरलीकृत)"
+ },
+ "chr": {
+ "code": "chr",
+ "name": "चीरोकी"
+ },
+ "cs": {
+ "code": "cs",
+ "name": "चेकà¥"
+ },
+ "de": {
+ "code": "de",
+ "name": "ज़रà¥à¤®à¤¨"
+ },
+ "de-AT": {
+ "code": "de-AT",
+ "name": "जरà¥à¤®à¤¨ (ऑसà¥à¤Ÿà¥à¤°à¤¿à¤¯à¤¾)"
+ },
+ "ja": {
+ "code": "ja",
+ "name": "जापानी"
+ },
+ "zu": {
+ "code": "zu",
+ "name": "ज़à¥à¤²à¥‚"
+ },
+ "ka": {
+ "code": "ka",
+ "name": "जॉरà¥à¤œà¤¿à¤¯à¤¨à¥"
+ },
+ "to": {
+ "code": "to",
+ "name": "टॉंगा"
+ },
+ "nl": {
+ "code": "nl",
+ "name": "डचà¥"
+ },
+ "da": {
+ "code": "da",
+ "name": "डैनीशà¥"
+ },
+ "ta": {
+ "code": "ta",
+ "name": "तमिळ"
+ },
+ "ti": {
+ "code": "ti",
+ "name": "तिगà¥à¤°à¥€à¤¨à¥à¤¯à¤¾"
+ },
+ "bo": {
+ "code": "bo",
+ "name": "तिबà¥à¤¬à¤¤à¥€"
+ },
+ "tr": {
+ "code": "tr",
+ "name": "तà¥à¤°à¥à¤•à¥€"
+ },
+ "te": {
+ "code": "te",
+ "name": "तेलà¥à¤—à¥"
+ },
+ "th": {
+ "code": "th",
+ "name": "थाई"
+ },
+ "ne": {
+ "code": "ne",
+ "name": "नेपाली"
+ },
+ "nn": {
+ "code": "nn",
+ "name": "नॉरà¥à¤µà¥‡à¤œà¤¿à¤¯à¤¨à¥ नीनॉरà¥à¤¸à¥à¤•à¥"
+ },
+ "nb": {
+ "code": "nb",
+ "name": "नोरà¥à¤µà¥‡à¤—ी बोकमाल"
+ },
+ "nyn": {
+ "code": "nyn",
+ "name": "नà¥à¤¯à¤¾à¤¨à¤•à¥‹à¤²à¥‡"
+ },
+ "ps": {
+ "code": "ps",
+ "name": "पख़à¥à¤¤à¥"
+ },
+ "pa": {
+ "code": "pa",
+ "name": "पंजाबी"
+ },
+ "fy": {
+ "code": "fy",
+ "name": "पशà¥à¤šà¥€à¤®à¥€ फà¥à¤°à¥€à¤œà¤¼à¤¿à¤¯à¤¨à¥"
+ },
+ "pt": {
+ "code": "pt",
+ "name": "पà¥à¤°à¥à¤¤à¤—ाली"
+ },
+ "pl": {
+ "code": "pl",
+ "name": "पोलिश"
+ },
+ "fa": {
+ "code": "fa",
+ "name": "फारà¥à¤¸à¥€"
+ },
+ "fi": {
+ "code": "fi",
+ "name": "फिनिशà¥"
+ },
+ "fo": {
+ "code": "fo",
+ "name": "फिरोज़ी"
+ },
+ "fil": {
+ "code": "fil",
+ "name": "फिलिपिनो"
+ },
+ "ff": {
+ "code": "ff",
+ "name": "फà¥à¤²à¤¾à¤¹à¥"
+ },
+ "fr": {
+ "code": "fr",
+ "name": "फà¥à¤°à¤¾à¤‚सीसी"
+ },
+ "fr-CA": {
+ "code": "fr-CA",
+ "name": "फà¥à¤°à¤¾à¤‚सीसी (कनाडाई)"
+ },
+ "fr-CH": {
+ "code": "fr-CH",
+ "name": "फà¥à¤°à¤¾à¤‚सीसी (सà¥à¤µà¥€à¤¸)"
+ },
+ "fur": {
+ "code": "fur",
+ "name": "फà¥à¤°à¥€à¤‰à¤²à¥€à¤…नà¥"
+ },
+ "nl-BE": {
+ "code": "nl-BE",
+ "name": "फà¥à¤²à¥‡à¤®à¥€"
+ },
+ "bn": {
+ "code": "bn",
+ "name": "बंगला"
+ },
+ "brx": {
+ "code": "brx",
+ "name": "बड़ो"
+ },
+ "my": {
+ "code": "my",
+ "name": "बरà¥à¤®à¥€"
+ },
+ "bg": {
+ "code": "bg",
+ "name": "बलà¥à¤—ैरियनà¥"
+ },
+ "bm": {
+ "code": "bm",
+ "name": "बांबारा"
+ },
+ "eu": {
+ "code": "eu",
+ "name": "बासà¥à¤•à¥"
+ },
+ "bas": {
+ "code": "bas",
+ "name": "बासà¥à¤•à¤¼à¥"
+ },
+ "be": {
+ "code": "be",
+ "name": "बैलोरूसियनà¥"
+ },
+ "bs": {
+ "code": "bs",
+ "name": "बोसà¥à¤¨à¤¿à¤¯à¤¾à¤ˆ"
+ },
+ "br": {
+ "code": "br",
+ "name": "बà¥à¤°à¤Ÿà¥‹à¤‚"
+ },
+ "dz": {
+ "code": "dz",
+ "name": "भà¥à¤Ÿà¤¾à¤¨à¥€"
+ },
+ "mr": {
+ "code": "mr",
+ "name": "मराठी"
+ },
+ "ml": {
+ "code": "ml",
+ "name": "मलयालम"
+ },
+ "ms": {
+ "code": "ms",
+ "name": "मलाय"
+ },
+ "mas": {
+ "code": "mas",
+ "name": "मसाई"
+ },
+ "mt": {
+ "code": "mt",
+ "name": "मालटीज़à¥"
+ },
+ "mg": {
+ "code": "mg",
+ "name": "मालागासी"
+ },
+ "mk": {
+ "code": "mk",
+ "name": "मैसेडोनियनà¥"
+ },
+ "mn": {
+ "code": "mn",
+ "name": "मोंगोलियन"
+ },
+ "ro-MD": {
+ "code": "ro-MD",
+ "name": "मोलà¥à¤¡à¥‡à¤µà¤¿à¤¯à¤¨à¥"
+ },
+ "uk": {
+ "code": "uk",
+ "name": "यूकà¥à¤°à¥‡à¤¨à¤¿à¤¯à¤¨à¥"
+ },
+ "yo": {
+ "code": "yo",
+ "name": "योरूबा"
+ },
+ "ru": {
+ "code": "ru",
+ "name": "रà¥à¤¸à¥€"
+ },
+ "ro": {
+ "code": "ro",
+ "name": "रूमानीयनà¥"
+ },
+ "rm": {
+ "code": "rm",
+ "name": "रेहà¥à¤Ÿà¥‹-रोमानà¥à¤¸"
+ },
+ "lo": {
+ "code": "lo",
+ "name": "लाओसीयनà¥"
+ },
+ "lv": {
+ "code": "lv",
+ "name": "लाटवियनॠ(लैटà¥à¤Ÿà¥€à¤¶)"
+ },
+ "ln": {
+ "code": "ln",
+ "name": "लिंगाला"
+ },
+ "lt": {
+ "code": "lt",
+ "name": "लिथà¥à¤†à¤¨à¤¿à¤¯à¤¨à¥"
+ },
+ "luo": {
+ "code": "luo",
+ "name": "लà¥à¤“"
+ },
+ "lb": {
+ "code": "lb",
+ "name": "लà¥à¤•à¥à¤¸à¤®à¤¬à¥à¤°à¥à¤—ी"
+ },
+ "lu": {
+ "code": "lu",
+ "name": "लà¥à¤¬à¤¾ कटांगा"
+ },
+ "vai": {
+ "code": "vai",
+ "name": "वाई"
+ },
+ "vi": {
+ "code": "vi",
+ "name": "वियेतनामी"
+ },
+ "cy": {
+ "code": "cy",
+ "name": "वैलà¥à¤¶à¥"
+ },
+ "sn": {
+ "code": "sn",
+ "name": "शोना"
+ },
+ "sr": {
+ "code": "sr",
+ "name": "सरà¥à¤¬à¤¿à¤¯à¤¨à¥"
+ },
+ "sg": {
+ "code": "sg",
+ "name": "सांगà¥à¤°à¥‹"
+ },
+ "si": {
+ "code": "si",
+ "name": "सींहाला"
+ },
+ "so": {
+ "code": "so",
+ "name": "सोमाली"
+ },
+ "dsb": {
+ "code": "dsb",
+ "name": "सोरà¥à¤¬à¤¿à¤¯à¤¨à¥"
+ },
+ "gd": {
+ "code": "gd",
+ "name": "सà¥à¤•à¥‰à¤Ÿà¥à¤¸à¥ गैलिकà¥"
+ },
+ "es": {
+ "code": "es",
+ "name": "सà¥à¤ªà¥ˆà¤¨à¤¿à¤¶"
+ },
+ "sk": {
+ "code": "sk",
+ "name": "सà¥à¤²à¥‹à¤µà¤¾à¤•à¥"
+ },
+ "sl": {
+ "code": "sl",
+ "name": "सà¥à¤²à¥‹à¤µà¥‡à¤¨à¤¿à¤¯à¤¨à¥"
+ },
+ "sw": {
+ "code": "sw",
+ "name": "सà¥à¤µà¤¾à¤¹à¤¿à¤²à¥€"
+ },
+ "sv": {
+ "code": "sv",
+ "name": "सà¥à¤µà¥€à¤¡à¤¿à¤¶"
+ },
+ "gsw": {
+ "code": "gsw",
+ "name": "सà¥à¤µà¥€à¤¸ जरà¥à¤®à¤¨"
+ },
+ "ha": {
+ "code": "ha",
+ "name": "हउसा"
+ },
+ "hu": {
+ "code": "hu",
+ "name": "हंगैरीयनà¥"
+ },
+ "hi": {
+ "code": "hi",
+ "name": "हिंदी"
+ },
+ "he": {
+ "code": "he",
+ "name": "हिबà¥à¤°à¥"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/language/bs-Cyrl.json b/library/intl/resources/language/bs-Cyrl.json
new file mode 100644
index 000000000..2d82ca21a
--- /dev/null
+++ b/library/intl/resources/language/bs-Cyrl.json
@@ -0,0 +1,738 @@
+{
+ "agq": {
+ "code": "agq",
+ "name": "Aghem"
+ },
+ "ar-001": {
+ "code": "ar-001",
+ "name": "ar_001"
+ },
+ "asa": {
+ "code": "asa",
+ "name": "Asu"
+ },
+ "ksf": {
+ "code": "ksf",
+ "name": "Bafia"
+ },
+ "bez": {
+ "code": "bez",
+ "name": "Bena"
+ },
+ "brx": {
+ "code": "brx",
+ "name": "Bodo"
+ },
+ "tzm": {
+ "code": "tzm",
+ "name": "Central Atlas Tamazight"
+ },
+ "cgg": {
+ "code": "cgg",
+ "name": "Chiga"
+ },
+ "ksh": {
+ "code": "ksh",
+ "name": "Colognian"
+ },
+ "swc": {
+ "code": "swc",
+ "name": "Congo Swahili"
+ },
+ "ebu": {
+ "code": "ebu",
+ "name": "Embu"
+ },
+ "es-MX": {
+ "code": "es-MX",
+ "name": "es_MX"
+ },
+ "guz": {
+ "code": "guz",
+ "name": "Gusii"
+ },
+ "dyo": {
+ "code": "dyo",
+ "name": "Jola-Fonyi"
+ },
+ "kea": {
+ "code": "kea",
+ "name": "Kabuverdianu"
+ },
+ "kln": {
+ "code": "kln",
+ "name": "Kalenjin"
+ },
+ "khq": {
+ "code": "khq",
+ "name": "Koyra Chiini"
+ },
+ "ses": {
+ "code": "ses",
+ "name": "Koyraboro Senni"
+ },
+ "nmg": {
+ "code": "nmg",
+ "name": "Kwasio"
+ },
+ "lag": {
+ "code": "lag",
+ "name": "Langi"
+ },
+ "luy": {
+ "code": "luy",
+ "name": "Luyia"
+ },
+ "jmc": {
+ "code": "jmc",
+ "name": "Machame"
+ },
+ "mgh": {
+ "code": "mgh",
+ "name": "Makhuwa-Meetto"
+ },
+ "kde": {
+ "code": "kde",
+ "name": "Makonde"
+ },
+ "mer": {
+ "code": "mer",
+ "name": "Meru"
+ },
+ "mfe": {
+ "code": "mfe",
+ "name": "Morisyen"
+ },
+ "mua": {
+ "code": "mua",
+ "name": "Mundang"
+ },
+ "naq": {
+ "code": "naq",
+ "name": "Nama"
+ },
+ "jgo": {
+ "code": "jgo",
+ "name": "Ngomba"
+ },
+ "nus": {
+ "code": "nus",
+ "name": "Nuer"
+ },
+ "rof": {
+ "code": "rof",
+ "name": "Rombo"
+ },
+ "rwk": {
+ "code": "rwk",
+ "name": "Rwa"
+ },
+ "saq": {
+ "code": "saq",
+ "name": "Samburu"
+ },
+ "sbp": {
+ "code": "sbp",
+ "name": "Sangu"
+ },
+ "seh": {
+ "code": "seh",
+ "name": "Sena"
+ },
+ "ksb": {
+ "code": "ksb",
+ "name": "Shambala"
+ },
+ "xog": {
+ "code": "xog",
+ "name": "Soga"
+ },
+ "zgh": {
+ "code": "zgh",
+ "name": "Standard Moroccan Tamazight"
+ },
+ "shi": {
+ "code": "shi",
+ "name": "Tachelhit"
+ },
+ "dav": {
+ "code": "dav",
+ "name": "Taita"
+ },
+ "twq": {
+ "code": "twq",
+ "name": "Tasawaq"
+ },
+ "teo": {
+ "code": "teo",
+ "name": "Teso"
+ },
+ "vun": {
+ "code": "vun",
+ "name": "Vunjo"
+ },
+ "wae": {
+ "code": "wae",
+ "name": "Walser"
+ },
+ "yav": {
+ "code": "yav",
+ "name": "Yangben"
+ },
+ "dje": {
+ "code": "dje",
+ "name": "Zarma"
+ },
+ "az": {
+ "code": "az",
+ "name": "азербејџанÑки"
+ },
+ "ak": {
+ "code": "ak",
+ "name": "акан"
+ },
+ "sq": {
+ "code": "sq",
+ "name": "албанÑки"
+ },
+ "am": {
+ "code": "am",
+ "name": "амхарÑки"
+ },
+ "ar": {
+ "code": "ar",
+ "name": "арапÑки"
+ },
+ "ast": {
+ "code": "ast",
+ "name": "аÑтуријÑки"
+ },
+ "en-AU": {
+ "code": "en-AU",
+ "name": "ÐуÑтралијÑки енглеÑки"
+ },
+ "de-AT": {
+ "code": "de-AT",
+ "name": "ÐуÑтријÑки немачки"
+ },
+ "af": {
+ "code": "af",
+ "name": "африканерÑки"
+ },
+ "bm": {
+ "code": "bm",
+ "name": "бамбара"
+ },
+ "bas": {
+ "code": "bas",
+ "name": "баÑа"
+ },
+ "eu": {
+ "code": "eu",
+ "name": "баÑкијÑки"
+ },
+ "be": {
+ "code": "be",
+ "name": "белоруÑки"
+ },
+ "bn": {
+ "code": "bn",
+ "name": "бенглаÑки"
+ },
+ "bs": {
+ "code": "bs",
+ "name": "боÑанÑки"
+ },
+ "pt-BR": {
+ "code": "pt-BR",
+ "name": "БразилÑки португалÑки"
+ },
+ "br": {
+ "code": "br",
+ "name": "бретонÑки"
+ },
+ "en-GB": {
+ "code": "en-GB",
+ "name": "БританÑки енглеÑки"
+ },
+ "bg": {
+ "code": "bg",
+ "name": "бугарÑки"
+ },
+ "my": {
+ "code": "my",
+ "name": "бурманÑки"
+ },
+ "vai": {
+ "code": "vai",
+ "name": "ваи"
+ },
+ "cy": {
+ "code": "cy",
+ "name": "велшки"
+ },
+ "vi": {
+ "code": "vi",
+ "name": "вијетнамÑки"
+ },
+ "gl": {
+ "code": "gl",
+ "name": "галÑки"
+ },
+ "lg": {
+ "code": "lg",
+ "name": "ганда"
+ },
+ "hsb": {
+ "code": "hsb",
+ "name": "горњи ÑорбијÑки"
+ },
+ "ka": {
+ "code": "ka",
+ "name": "грузијÑки"
+ },
+ "el": {
+ "code": "el",
+ "name": "грчки"
+ },
+ "gu": {
+ "code": "gu",
+ "name": "гуџарати"
+ },
+ "da": {
+ "code": "da",
+ "name": "данÑки"
+ },
+ "ee": {
+ "code": "ee",
+ "name": "еве"
+ },
+ "ewo": {
+ "code": "ewo",
+ "name": "евондо"
+ },
+ "en": {
+ "code": "en",
+ "name": "енглеÑки"
+ },
+ "eo": {
+ "code": "eo",
+ "name": "еÑперанто"
+ },
+ "et": {
+ "code": "et",
+ "name": "еÑтонÑки"
+ },
+ "zu": {
+ "code": "zu",
+ "name": "зулу"
+ },
+ "pt-PT": {
+ "code": "pt-PT",
+ "name": "ИберијÑки португалÑки"
+ },
+ "es-ES": {
+ "code": "es-ES",
+ "name": "ИберијÑки шпанÑки"
+ },
+ "id": {
+ "code": "id",
+ "name": "индонежанÑки"
+ },
+ "ga": {
+ "code": "ga",
+ "name": "ирÑки"
+ },
+ "is": {
+ "code": "is",
+ "name": "иÑландÑки"
+ },
+ "it": {
+ "code": "it",
+ "name": "италијанÑки"
+ },
+ "ja": {
+ "code": "ja",
+ "name": "јапанÑки"
+ },
+ "hy": {
+ "code": "hy",
+ "name": "јерменÑки"
+ },
+ "yo": {
+ "code": "yo",
+ "name": "јоруба"
+ },
+ "kab": {
+ "code": "kab",
+ "name": "кабиле"
+ },
+ "kl": {
+ "code": "kl",
+ "name": "калалиÑут"
+ },
+ "kam": {
+ "code": "kam",
+ "name": "камба"
+ },
+ "kn": {
+ "code": "kn",
+ "name": "канада"
+ },
+ "en-CA": {
+ "code": "en-CA",
+ "name": "КанадÑки енглеÑки"
+ },
+ "fr-CA": {
+ "code": "fr-CA",
+ "name": "КанадÑки француÑки"
+ },
+ "ca": {
+ "code": "ca",
+ "name": "каталонÑки"
+ },
+ "ks": {
+ "code": "ks",
+ "name": "кашмирÑки"
+ },
+ "ki": {
+ "code": "ki",
+ "name": "кикују"
+ },
+ "zh": {
+ "code": "zh",
+ "name": "кинеÑки"
+ },
+ "zh-Hans": {
+ "code": "zh-Hans",
+ "name": "кинеÑки (поједноÑтављен)"
+ },
+ "zh-Hant": {
+ "code": "zh-Hant",
+ "name": "кинеÑки (традиционални)"
+ },
+ "ky": {
+ "code": "ky",
+ "name": "киргиÑки"
+ },
+ "km": {
+ "code": "km",
+ "name": "кмерÑки"
+ },
+ "kk": {
+ "code": "kk",
+ "name": "козачки"
+ },
+ "ko": {
+ "code": "ko",
+ "name": "корејÑки"
+ },
+ "lo": {
+ "code": "lo",
+ "name": "лаоÑки"
+ },
+ "lv": {
+ "code": "lv",
+ "name": "летонÑки"
+ },
+ "ln": {
+ "code": "ln",
+ "name": "лингала"
+ },
+ "lt": {
+ "code": "lt",
+ "name": "литванÑки"
+ },
+ "lu": {
+ "code": "lu",
+ "name": "луба-катанга"
+ },
+ "lb": {
+ "code": "lb",
+ "name": "лукÑембуршки"
+ },
+ "luo": {
+ "code": "luo",
+ "name": "луо"
+ },
+ "hu": {
+ "code": "hu",
+ "name": "мађарÑки"
+ },
+ "mk": {
+ "code": "mk",
+ "name": "македонÑки"
+ },
+ "mg": {
+ "code": "mg",
+ "name": "малагаÑијÑки"
+ },
+ "ml": {
+ "code": "ml",
+ "name": "малајалам"
+ },
+ "ms": {
+ "code": "ms",
+ "name": "малајÑки"
+ },
+ "mr": {
+ "code": "mr",
+ "name": "марати"
+ },
+ "mas": {
+ "code": "mas",
+ "name": "маÑаи"
+ },
+ "mt": {
+ "code": "mt",
+ "name": "мелтешки"
+ },
+ "ro-MD": {
+ "code": "ro-MD",
+ "name": "молдавÑки"
+ },
+ "mn": {
+ "code": "mn",
+ "name": "монголÑки"
+ },
+ "de": {
+ "code": "de",
+ "name": "немачки"
+ },
+ "ne": {
+ "code": "ne",
+ "name": "непалÑки"
+ },
+ "dsb": {
+ "code": "dsb",
+ "name": "ниÑки ÑорбијанÑки"
+ },
+ "nb": {
+ "code": "nb",
+ "name": "норвешки бокмал"
+ },
+ "nn": {
+ "code": "nn",
+ "name": "норвешки њорÑк"
+ },
+ "nyn": {
+ "code": "nyn",
+ "name": "њанколе"
+ },
+ "or": {
+ "code": "or",
+ "name": "оријÑки"
+ },
+ "pa": {
+ "code": "pa",
+ "name": "панџабÑки"
+ },
+ "ps": {
+ "code": "ps",
+ "name": "паштунÑки"
+ },
+ "fa": {
+ "code": "fa",
+ "name": "перÑијÑки"
+ },
+ "pl": {
+ "code": "pl",
+ "name": "пољÑки"
+ },
+ "pt": {
+ "code": "pt",
+ "name": "португалÑки"
+ },
+ "rm": {
+ "code": "rm",
+ "name": "рето-романÑки"
+ },
+ "ro": {
+ "code": "ro",
+ "name": "румунÑки"
+ },
+ "rn": {
+ "code": "rn",
+ "name": "рунди"
+ },
+ "ru": {
+ "code": "ru",
+ "name": "руÑки"
+ },
+ "en-US": {
+ "code": "en-US",
+ "name": "СÐД енглеÑки"
+ },
+ "sg": {
+ "code": "sg",
+ "name": "Ñанго"
+ },
+ "sw": {
+ "code": "sw",
+ "name": "Ñвахили"
+ },
+ "nd": {
+ "code": "nd",
+ "name": "Ñеверни ндебеле"
+ },
+ "se": {
+ "code": "se",
+ "name": "Ñеверни Ñами"
+ },
+ "si": {
+ "code": "si",
+ "name": "ÑингалеÑки"
+ },
+ "sk": {
+ "code": "sk",
+ "name": "Ñловачки"
+ },
+ "sl": {
+ "code": "sl",
+ "name": "Ñловеначки"
+ },
+ "so": {
+ "code": "so",
+ "name": "ÑомалÑки"
+ },
+ "sr": {
+ "code": "sr",
+ "name": "ÑрпÑки"
+ },
+ "fil": {
+ "code": "fil",
+ "name": "тагалог"
+ },
+ "th": {
+ "code": "th",
+ "name": "тајландÑки"
+ },
+ "ta": {
+ "code": "ta",
+ "name": "тамилÑки"
+ },
+ "te": {
+ "code": "te",
+ "name": "телугу"
+ },
+ "bo": {
+ "code": "bo",
+ "name": "тибетанÑки"
+ },
+ "ti": {
+ "code": "ti",
+ "name": "тигриња"
+ },
+ "to": {
+ "code": "to",
+ "name": "тонга"
+ },
+ "tr": {
+ "code": "tr",
+ "name": "турÑки"
+ },
+ "uz": {
+ "code": "uz",
+ "name": "узбечки"
+ },
+ "ug": {
+ "code": "ug",
+ "name": "ујгурÑки"
+ },
+ "uk": {
+ "code": "uk",
+ "name": "украјинÑки"
+ },
+ "ur": {
+ "code": "ur",
+ "name": "урду"
+ },
+ "fo": {
+ "code": "fo",
+ "name": "фарÑки"
+ },
+ "fi": {
+ "code": "fi",
+ "name": "финÑки"
+ },
+ "nl-BE": {
+ "code": "nl-BE",
+ "name": "фламанÑки"
+ },
+ "fr": {
+ "code": "fr",
+ "name": "француÑки"
+ },
+ "fy": {
+ "code": "fy",
+ "name": "фризијÑки"
+ },
+ "fur": {
+ "code": "fur",
+ "name": "фриулијÑки"
+ },
+ "ff": {
+ "code": "ff",
+ "name": "фулах"
+ },
+ "ha": {
+ "code": "ha",
+ "name": "хауÑа"
+ },
+ "he": {
+ "code": "he",
+ "name": "хебрејÑки"
+ },
+ "hi": {
+ "code": "hi",
+ "name": "хинди"
+ },
+ "nl": {
+ "code": "nl",
+ "name": "холандÑки"
+ },
+ "hr": {
+ "code": "hr",
+ "name": "хрватÑки"
+ },
+ "chr": {
+ "code": "chr",
+ "name": "чероки"
+ },
+ "cs": {
+ "code": "cs",
+ "name": "чешки"
+ },
+ "dz": {
+ "code": "dz",
+ "name": "џонга"
+ },
+ "de-CH": {
+ "code": "de-CH",
+ "name": "ШвајцарÑки виÑоки немачки"
+ },
+ "gsw": {
+ "code": "gsw",
+ "name": "швајцарÑки немачки"
+ },
+ "fr-CH": {
+ "code": "fr-CH",
+ "name": "ШвајцарÑки француÑки"
+ },
+ "sv": {
+ "code": "sv",
+ "name": "шведÑки"
+ },
+ "gd": {
+ "code": "gd",
+ "name": "шкотÑки галÑки"
+ },
+ "sn": {
+ "code": "sn",
+ "name": "шона"
+ },
+ "es": {
+ "code": "es",
+ "name": "шпанÑки"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/language/bs.json b/library/intl/resources/language/bs.json
new file mode 100644
index 000000000..ae98240ad
--- /dev/null
+++ b/library/intl/resources/language/bs.json
@@ -0,0 +1,738 @@
+{
+ "af": {
+ "code": "af",
+ "name": "afrikanerski"
+ },
+ "agq": {
+ "code": "agq",
+ "name": "aghem"
+ },
+ "ak": {
+ "code": "ak",
+ "name": "akan"
+ },
+ "sq": {
+ "code": "sq",
+ "name": "albanski"
+ },
+ "en-US": {
+ "code": "en-US",
+ "name": "ameriÄki engleski"
+ },
+ "am": {
+ "code": "am",
+ "name": "amharski"
+ },
+ "ar": {
+ "code": "ar",
+ "name": "arapski"
+ },
+ "ast": {
+ "code": "ast",
+ "name": "asturijski"
+ },
+ "asa": {
+ "code": "asa",
+ "name": "asu"
+ },
+ "en-AU": {
+ "code": "en-AU",
+ "name": "australski engleski"
+ },
+ "de-AT": {
+ "code": "de-AT",
+ "name": "austrijski njemaÄki"
+ },
+ "az": {
+ "code": "az",
+ "name": "azerbejdžanski"
+ },
+ "ksf": {
+ "code": "ksf",
+ "name": "bafia"
+ },
+ "bm": {
+ "code": "bm",
+ "name": "bambara"
+ },
+ "bas": {
+ "code": "bas",
+ "name": "basa"
+ },
+ "eu": {
+ "code": "eu",
+ "name": "baskijski"
+ },
+ "bez": {
+ "code": "bez",
+ "name": "bena"
+ },
+ "bn": {
+ "code": "bn",
+ "name": "bengalski"
+ },
+ "be": {
+ "code": "be",
+ "name": "bjeloruski"
+ },
+ "brx": {
+ "code": "brx",
+ "name": "bodo"
+ },
+ "bs": {
+ "code": "bs",
+ "name": "bosanski"
+ },
+ "br": {
+ "code": "br",
+ "name": "bretonski"
+ },
+ "en-GB": {
+ "code": "en-GB",
+ "name": "britanski engleski"
+ },
+ "bg": {
+ "code": "bg",
+ "name": "bugarski"
+ },
+ "my": {
+ "code": "my",
+ "name": "burmanski"
+ },
+ "cs": {
+ "code": "cs",
+ "name": "ÄeÅ¡ki"
+ },
+ "cgg": {
+ "code": "cgg",
+ "name": "Äiga"
+ },
+ "chr": {
+ "code": "chr",
+ "name": "Äiroki"
+ },
+ "da": {
+ "code": "da",
+ "name": "danski"
+ },
+ "dsb": {
+ "code": "dsb",
+ "name": "donjolužiÄkosrpski"
+ },
+ "dz": {
+ "code": "dz",
+ "name": "džonga"
+ },
+ "ebu": {
+ "code": "ebu",
+ "name": "embu"
+ },
+ "en": {
+ "code": "en",
+ "name": "engleski"
+ },
+ "eo": {
+ "code": "eo",
+ "name": "esperanto"
+ },
+ "et": {
+ "code": "et",
+ "name": "estonski"
+ },
+ "ee": {
+ "code": "ee",
+ "name": "eve"
+ },
+ "ewo": {
+ "code": "ewo",
+ "name": "evondo"
+ },
+ "es-ES": {
+ "code": "es-ES",
+ "name": "evropski Å¡panski"
+ },
+ "fo": {
+ "code": "fo",
+ "name": "farski"
+ },
+ "fil": {
+ "code": "fil",
+ "name": "filipinski"
+ },
+ "fi": {
+ "code": "fi",
+ "name": "finski"
+ },
+ "nl-BE": {
+ "code": "nl-BE",
+ "name": "flamanski"
+ },
+ "fr": {
+ "code": "fr",
+ "name": "francuski"
+ },
+ "fur": {
+ "code": "fur",
+ "name": "friulijski"
+ },
+ "fy": {
+ "code": "fy",
+ "name": "frizijski"
+ },
+ "ff": {
+ "code": "ff",
+ "name": "fulah"
+ },
+ "gl": {
+ "code": "gl",
+ "name": "galski"
+ },
+ "lg": {
+ "code": "lg",
+ "name": "ganda"
+ },
+ "hsb": {
+ "code": "hsb",
+ "name": "gornjolužiÄkosrpski"
+ },
+ "de-CH": {
+ "code": "de-CH",
+ "name": "gornjonjemaÄki (Å¡vicarski)"
+ },
+ "el": {
+ "code": "el",
+ "name": "grÄki"
+ },
+ "ka": {
+ "code": "ka",
+ "name": "gruzijski"
+ },
+ "gu": {
+ "code": "gu",
+ "name": "gudžarati"
+ },
+ "guz": {
+ "code": "guz",
+ "name": "gusii"
+ },
+ "ha": {
+ "code": "ha",
+ "name": "hausa"
+ },
+ "he": {
+ "code": "he",
+ "name": "hebrejski"
+ },
+ "hi": {
+ "code": "hi",
+ "name": "hindi"
+ },
+ "nl": {
+ "code": "nl",
+ "name": "holandski"
+ },
+ "hr": {
+ "code": "hr",
+ "name": "hrvatski"
+ },
+ "id": {
+ "code": "id",
+ "name": "indonezijski"
+ },
+ "ga": {
+ "code": "ga",
+ "name": "irski"
+ },
+ "is": {
+ "code": "is",
+ "name": "islandski"
+ },
+ "it": {
+ "code": "it",
+ "name": "italijanski"
+ },
+ "ja": {
+ "code": "ja",
+ "name": "japanski"
+ },
+ "hy": {
+ "code": "hy",
+ "name": "jermenski"
+ },
+ "dyo": {
+ "code": "dyo",
+ "name": "jola-fonyi"
+ },
+ "yo": {
+ "code": "yo",
+ "name": "jorubanski"
+ },
+ "kab": {
+ "code": "kab",
+ "name": "kabile"
+ },
+ "kl": {
+ "code": "kl",
+ "name": "kalalisutski"
+ },
+ "kln": {
+ "code": "kln",
+ "name": "kalenjin"
+ },
+ "kam": {
+ "code": "kam",
+ "name": "kamba"
+ },
+ "kn": {
+ "code": "kn",
+ "name": "kanada"
+ },
+ "en-CA": {
+ "code": "en-CA",
+ "name": "kanadski engleski"
+ },
+ "fr-CA": {
+ "code": "fr-CA",
+ "name": "kanadski francuski"
+ },
+ "ks": {
+ "code": "ks",
+ "name": "kašmiri"
+ },
+ "ca": {
+ "code": "ca",
+ "name": "katalonski"
+ },
+ "kk": {
+ "code": "kk",
+ "name": "kazaÄki"
+ },
+ "ksh": {
+ "code": "ksh",
+ "name": "kelnski"
+ },
+ "ki": {
+ "code": "ki",
+ "name": "kikuju"
+ },
+ "zh": {
+ "code": "zh",
+ "name": "kineski"
+ },
+ "zh-Hans": {
+ "code": "zh-Hans",
+ "name": "kineski (pojednostavljeni)"
+ },
+ "zh-Hant": {
+ "code": "zh-Hant",
+ "name": "kineski (tradicionalni)"
+ },
+ "ky": {
+ "code": "ky",
+ "name": "kirgiski"
+ },
+ "km": {
+ "code": "km",
+ "name": "kmerski"
+ },
+ "ses": {
+ "code": "ses",
+ "name": "kojraboro seni"
+ },
+ "swc": {
+ "code": "swc",
+ "name": "kongoanski swahili"
+ },
+ "ko": {
+ "code": "ko",
+ "name": "korejski"
+ },
+ "khq": {
+ "code": "khq",
+ "name": "koyra chiini"
+ },
+ "nmg": {
+ "code": "nmg",
+ "name": "kwasio"
+ },
+ "lag": {
+ "code": "lag",
+ "name": "langi"
+ },
+ "lo": {
+ "code": "lo",
+ "name": "laoški"
+ },
+ "lv": {
+ "code": "lv",
+ "name": "letonski"
+ },
+ "ln": {
+ "code": "ln",
+ "name": "lingala"
+ },
+ "lt": {
+ "code": "lt",
+ "name": "litvanski"
+ },
+ "lu": {
+ "code": "lu",
+ "name": "luba-katanga"
+ },
+ "lb": {
+ "code": "lb",
+ "name": "luksemburški"
+ },
+ "luo": {
+ "code": "luo",
+ "name": "Luo"
+ },
+ "luy": {
+ "code": "luy",
+ "name": "luyia"
+ },
+ "jmc": {
+ "code": "jmc",
+ "name": "machame"
+ },
+ "hu": {
+ "code": "hu",
+ "name": "mađarski"
+ },
+ "mk": {
+ "code": "mk",
+ "name": "makedonski"
+ },
+ "mgh": {
+ "code": "mgh",
+ "name": "makhuwa-meetto"
+ },
+ "kde": {
+ "code": "kde",
+ "name": "makonde"
+ },
+ "mg": {
+ "code": "mg",
+ "name": "malagazijski"
+ },
+ "ml": {
+ "code": "ml",
+ "name": "malajalam"
+ },
+ "ms": {
+ "code": "ms",
+ "name": "malajski"
+ },
+ "mt": {
+ "code": "mt",
+ "name": "malteški"
+ },
+ "mr": {
+ "code": "mr",
+ "name": "marati"
+ },
+ "tzm": {
+ "code": "tzm",
+ "name": "marokanski tamazigt"
+ },
+ "mas": {
+ "code": "mas",
+ "name": "masai"
+ },
+ "mfe": {
+ "code": "mfe",
+ "name": "mauricijski kreolski"
+ },
+ "es-MX": {
+ "code": "es-MX",
+ "name": "meksiÄki Å¡panski"
+ },
+ "mer": {
+ "code": "mer",
+ "name": "meru"
+ },
+ "ar-001": {
+ "code": "ar-001",
+ "name": "moderni standardni arapski"
+ },
+ "ro-MD": {
+ "code": "ro-MD",
+ "name": "moldavski"
+ },
+ "mn": {
+ "code": "mn",
+ "name": "mongolski"
+ },
+ "mua": {
+ "code": "mua",
+ "name": "mundang"
+ },
+ "naq": {
+ "code": "naq",
+ "name": "nama"
+ },
+ "ne": {
+ "code": "ne",
+ "name": "nepalski"
+ },
+ "jgo": {
+ "code": "jgo",
+ "name": "ngomba"
+ },
+ "nb": {
+ "code": "nb",
+ "name": "norveški bokmal"
+ },
+ "nn": {
+ "code": "nn",
+ "name": "norveški njorsk"
+ },
+ "nus": {
+ "code": "nus",
+ "name": "nuer"
+ },
+ "nyn": {
+ "code": "nyn",
+ "name": "njankole"
+ },
+ "de": {
+ "code": "de",
+ "name": "njemaÄki"
+ },
+ "or": {
+ "code": "or",
+ "name": "orijski"
+ },
+ "pa": {
+ "code": "pa",
+ "name": "pandžabski"
+ },
+ "ps": {
+ "code": "ps",
+ "name": "paštunski"
+ },
+ "fa": {
+ "code": "fa",
+ "name": "perzijski"
+ },
+ "pl": {
+ "code": "pl",
+ "name": "poljski"
+ },
+ "pt": {
+ "code": "pt",
+ "name": "portugalski"
+ },
+ "pt-BR": {
+ "code": "pt-BR",
+ "name": "pt_BR"
+ },
+ "pt-PT": {
+ "code": "pt-PT",
+ "name": "pt_PT"
+ },
+ "rm": {
+ "code": "rm",
+ "name": "reto-romanski"
+ },
+ "rof": {
+ "code": "rof",
+ "name": "rombo"
+ },
+ "rwk": {
+ "code": "rwk",
+ "name": "rua"
+ },
+ "ro": {
+ "code": "ro",
+ "name": "rumunski"
+ },
+ "rn": {
+ "code": "rn",
+ "name": "rundi"
+ },
+ "ru": {
+ "code": "ru",
+ "name": "ruski"
+ },
+ "saq": {
+ "code": "saq",
+ "name": "samburu"
+ },
+ "sg": {
+ "code": "sg",
+ "name": "sango"
+ },
+ "sbp": {
+ "code": "sbp",
+ "name": "sangu"
+ },
+ "seh": {
+ "code": "seh",
+ "name": "sena"
+ },
+ "ksb": {
+ "code": "ksb",
+ "name": "shambala"
+ },
+ "si": {
+ "code": "si",
+ "name": "singaleski"
+ },
+ "nd": {
+ "code": "nd",
+ "name": "sjeverni ndebele"
+ },
+ "se": {
+ "code": "se",
+ "name": "sjeverni sami"
+ },
+ "sk": {
+ "code": "sk",
+ "name": "slovaÄki"
+ },
+ "sl": {
+ "code": "sl",
+ "name": "slovenaÄki"
+ },
+ "xog": {
+ "code": "xog",
+ "name": "soga"
+ },
+ "so": {
+ "code": "so",
+ "name": "somalski"
+ },
+ "sr": {
+ "code": "sr",
+ "name": "srpski"
+ },
+ "zgh": {
+ "code": "zgh",
+ "name": "standardni marokanski tamazigt"
+ },
+ "sw": {
+ "code": "sw",
+ "name": "svahili"
+ },
+ "gd": {
+ "code": "gd",
+ "name": "Å¡kotski galski"
+ },
+ "sn": {
+ "code": "sn",
+ "name": "Å¡ona"
+ },
+ "es": {
+ "code": "es",
+ "name": "Å¡panski"
+ },
+ "fr-CH": {
+ "code": "fr-CH",
+ "name": "Å¡vajcarski francuski"
+ },
+ "gsw": {
+ "code": "gsw",
+ "name": "Å¡vajcarski njemaÄki"
+ },
+ "sv": {
+ "code": "sv",
+ "name": "Å¡vedski"
+ },
+ "shi": {
+ "code": "shi",
+ "name": "tahelhit"
+ },
+ "dav": {
+ "code": "dav",
+ "name": "taita"
+ },
+ "th": {
+ "code": "th",
+ "name": "tajlandski"
+ },
+ "ta": {
+ "code": "ta",
+ "name": "tamilski"
+ },
+ "twq": {
+ "code": "twq",
+ "name": "tasavak"
+ },
+ "te": {
+ "code": "te",
+ "name": "telugu"
+ },
+ "teo": {
+ "code": "teo",
+ "name": "teso"
+ },
+ "bo": {
+ "code": "bo",
+ "name": "tibetanski"
+ },
+ "ti": {
+ "code": "ti",
+ "name": "tigrinja"
+ },
+ "to": {
+ "code": "to",
+ "name": "tonga"
+ },
+ "tr": {
+ "code": "tr",
+ "name": "turski"
+ },
+ "ug": {
+ "code": "ug",
+ "name": "ujgurski"
+ },
+ "uk": {
+ "code": "uk",
+ "name": "ukrajinski"
+ },
+ "ur": {
+ "code": "ur",
+ "name": "urdu"
+ },
+ "uz": {
+ "code": "uz",
+ "name": "uzbeÄki"
+ },
+ "vai": {
+ "code": "vai",
+ "name": "Vai"
+ },
+ "vi": {
+ "code": "vi",
+ "name": "vijetnamski"
+ },
+ "vun": {
+ "code": "vun",
+ "name": "vunjo"
+ },
+ "wae": {
+ "code": "wae",
+ "name": "walser"
+ },
+ "cy": {
+ "code": "cy",
+ "name": "Welsh"
+ },
+ "yav": {
+ "code": "yav",
+ "name": "yangben"
+ },
+ "dje": {
+ "code": "dje",
+ "name": "zarma"
+ },
+ "kea": {
+ "code": "kea",
+ "name": "zelenortski"
+ },
+ "zu": {
+ "code": "zu",
+ "name": "zulu"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/language/ca.json b/library/intl/resources/language/ca.json
new file mode 100644
index 000000000..c6d582ad9
--- /dev/null
+++ b/library/intl/resources/language/ca.json
@@ -0,0 +1,738 @@
+{
+ "af": {
+ "code": "af",
+ "name": "afrikaans"
+ },
+ "agq": {
+ "code": "agq",
+ "name": "aghem"
+ },
+ "ak": {
+ "code": "ak",
+ "name": "àkan"
+ },
+ "sq": {
+ "code": "sq",
+ "name": "albanès"
+ },
+ "de": {
+ "code": "de",
+ "name": "alemany"
+ },
+ "de-AT": {
+ "code": "de-AT",
+ "name": "alemany austríac"
+ },
+ "gsw": {
+ "code": "gsw",
+ "name": "alemany suís"
+ },
+ "de-CH": {
+ "code": "de-CH",
+ "name": "alt alemany suís"
+ },
+ "hsb": {
+ "code": "hsb",
+ "name": "alt sòrab"
+ },
+ "tzm": {
+ "code": "tzm",
+ "name": "amazic del Marroc central"
+ },
+ "zgh": {
+ "code": "zgh",
+ "name": "amazic estàndard marroquí"
+ },
+ "am": {
+ "code": "am",
+ "name": "amhàric"
+ },
+ "en": {
+ "code": "en",
+ "name": "anglès"
+ },
+ "en-US": {
+ "code": "en-US",
+ "name": "anglès americà"
+ },
+ "en-AU": {
+ "code": "en-AU",
+ "name": "anglès australià"
+ },
+ "en-GB": {
+ "code": "en-GB",
+ "name": "anglès britànic"
+ },
+ "en-CA": {
+ "code": "en-CA",
+ "name": "anglès canadenc"
+ },
+ "ar": {
+ "code": "ar",
+ "name": "àrab"
+ },
+ "ar-001": {
+ "code": "ar-001",
+ "name": "àrab estàndard modern"
+ },
+ "hy": {
+ "code": "hy",
+ "name": "armeni"
+ },
+ "ast": {
+ "code": "ast",
+ "name": "asturià"
+ },
+ "az": {
+ "code": "az",
+ "name": "azerbaidjanès"
+ },
+ "ksf": {
+ "code": "ksf",
+ "name": "bafia"
+ },
+ "dsb": {
+ "code": "dsb",
+ "name": "baix sòrab"
+ },
+ "bm": {
+ "code": "bm",
+ "name": "bambara"
+ },
+ "bas": {
+ "code": "bas",
+ "name": "basa"
+ },
+ "eu": {
+ "code": "eu",
+ "name": "basc"
+ },
+ "bez": {
+ "code": "bez",
+ "name": "bena"
+ },
+ "bn": {
+ "code": "bn",
+ "name": "bengalí"
+ },
+ "be": {
+ "code": "be",
+ "name": "bielorús"
+ },
+ "my": {
+ "code": "my",
+ "name": "birmà"
+ },
+ "nmg": {
+ "code": "nmg",
+ "name": "bissio"
+ },
+ "brx": {
+ "code": "brx",
+ "name": "bodo"
+ },
+ "bs": {
+ "code": "bs",
+ "name": "bosnià"
+ },
+ "br": {
+ "code": "br",
+ "name": "bretó"
+ },
+ "bg": {
+ "code": "bg",
+ "name": "búlgar"
+ },
+ "kab": {
+ "code": "kab",
+ "name": "cabilenc"
+ },
+ "ks": {
+ "code": "ks",
+ "name": "caixmiri"
+ },
+ "ca": {
+ "code": "ca",
+ "name": "català"
+ },
+ "chr": {
+ "code": "chr",
+ "name": "cherokee"
+ },
+ "cgg": {
+ "code": "cgg",
+ "name": "chiga"
+ },
+ "ksh": {
+ "code": "ksh",
+ "name": "colognian"
+ },
+ "ko": {
+ "code": "ko",
+ "name": "coreà"
+ },
+ "kea": {
+ "code": "kea",
+ "name": "crioll capverdià"
+ },
+ "hr": {
+ "code": "hr",
+ "name": "croat"
+ },
+ "da": {
+ "code": "da",
+ "name": "danès"
+ },
+ "dyo": {
+ "code": "dyo",
+ "name": "diola"
+ },
+ "dz": {
+ "code": "dz",
+ "name": "dzongka"
+ },
+ "ebu": {
+ "code": "ebu",
+ "name": "embu"
+ },
+ "sk": {
+ "code": "sk",
+ "name": "eslovac"
+ },
+ "sl": {
+ "code": "sl",
+ "name": "eslovè"
+ },
+ "es": {
+ "code": "es",
+ "name": "espanyol"
+ },
+ "es-MX": {
+ "code": "es-MX",
+ "name": "espanyol de Mèxic"
+ },
+ "es-ES": {
+ "code": "es-ES",
+ "name": "espanyol europeu"
+ },
+ "eo": {
+ "code": "eo",
+ "name": "esperanto"
+ },
+ "et": {
+ "code": "et",
+ "name": "estonià"
+ },
+ "ee": {
+ "code": "ee",
+ "name": "ewe"
+ },
+ "ewo": {
+ "code": "ewo",
+ "name": "ewondo"
+ },
+ "fo": {
+ "code": "fo",
+ "name": "feroès"
+ },
+ "fil": {
+ "code": "fil",
+ "name": "filipí"
+ },
+ "fi": {
+ "code": "fi",
+ "name": "finès"
+ },
+ "nl-BE": {
+ "code": "nl-BE",
+ "name": "flamenc"
+ },
+ "fr": {
+ "code": "fr",
+ "name": "francès"
+ },
+ "fr-CA": {
+ "code": "fr-CA",
+ "name": "francès canadenc"
+ },
+ "fr-CH": {
+ "code": "fr-CH",
+ "name": "francès suís"
+ },
+ "fy": {
+ "code": "fy",
+ "name": "frisó oriental"
+ },
+ "fur": {
+ "code": "fur",
+ "name": "friülà"
+ },
+ "ff": {
+ "code": "ff",
+ "name": "ful"
+ },
+ "gd": {
+ "code": "gd",
+ "name": "gaèlic escocès"
+ },
+ "gl": {
+ "code": "gl",
+ "name": "gallec"
+ },
+ "cy": {
+ "code": "cy",
+ "name": "gal·lès"
+ },
+ "lg": {
+ "code": "lg",
+ "name": "ganda"
+ },
+ "ka": {
+ "code": "ka",
+ "name": "georgià"
+ },
+ "el": {
+ "code": "el",
+ "name": "grec"
+ },
+ "kl": {
+ "code": "kl",
+ "name": "grenlandès"
+ },
+ "gu": {
+ "code": "gu",
+ "name": "gujarati"
+ },
+ "guz": {
+ "code": "guz",
+ "name": "gusí"
+ },
+ "ha": {
+ "code": "ha",
+ "name": "haussa"
+ },
+ "he": {
+ "code": "he",
+ "name": "hebreu"
+ },
+ "hi": {
+ "code": "hi",
+ "name": "hindi"
+ },
+ "hu": {
+ "code": "hu",
+ "name": "hongarès"
+ },
+ "id": {
+ "code": "id",
+ "name": "indonesi"
+ },
+ "yo": {
+ "code": "yo",
+ "name": "ioruba"
+ },
+ "ga": {
+ "code": "ga",
+ "name": "irlandès"
+ },
+ "is": {
+ "code": "is",
+ "name": "islandès"
+ },
+ "it": {
+ "code": "it",
+ "name": "italià"
+ },
+ "ja": {
+ "code": "ja",
+ "name": "japonès"
+ },
+ "kln": {
+ "code": "kln",
+ "name": "kalenjin"
+ },
+ "kam": {
+ "code": "kam",
+ "name": "kamba"
+ },
+ "kn": {
+ "code": "kn",
+ "name": "kannada"
+ },
+ "kk": {
+ "code": "kk",
+ "name": "kazakh"
+ },
+ "km": {
+ "code": "km",
+ "name": "khmer"
+ },
+ "ki": {
+ "code": "ki",
+ "name": "kikuiu"
+ },
+ "ky": {
+ "code": "ky",
+ "name": "kirguís"
+ },
+ "khq": {
+ "code": "khq",
+ "name": "koyra chiini"
+ },
+ "lag": {
+ "code": "lag",
+ "name": "langi"
+ },
+ "lo": {
+ "code": "lo",
+ "name": "laosià"
+ },
+ "lv": {
+ "code": "lv",
+ "name": "letó"
+ },
+ "ln": {
+ "code": "ln",
+ "name": "lingala"
+ },
+ "lt": {
+ "code": "lt",
+ "name": "lituà"
+ },
+ "lu": {
+ "code": "lu",
+ "name": "luba katanga"
+ },
+ "luo": {
+ "code": "luo",
+ "name": "Luo"
+ },
+ "lb": {
+ "code": "lb",
+ "name": "luxemburguès"
+ },
+ "luy": {
+ "code": "luy",
+ "name": "luyia"
+ },
+ "mk": {
+ "code": "mk",
+ "name": "macedoni"
+ },
+ "jmc": {
+ "code": "jmc",
+ "name": "machame"
+ },
+ "mgh": {
+ "code": "mgh",
+ "name": "makhuwa-metto"
+ },
+ "kde": {
+ "code": "kde",
+ "name": "makonde"
+ },
+ "ms": {
+ "code": "ms",
+ "name": "malai"
+ },
+ "ml": {
+ "code": "ml",
+ "name": "malaiàlam"
+ },
+ "mg": {
+ "code": "mg",
+ "name": "malgaix"
+ },
+ "mt": {
+ "code": "mt",
+ "name": "maltès"
+ },
+ "mr": {
+ "code": "mr",
+ "name": "marathi"
+ },
+ "mas": {
+ "code": "mas",
+ "name": "massai"
+ },
+ "mfe": {
+ "code": "mfe",
+ "name": "mauricià"
+ },
+ "mer": {
+ "code": "mer",
+ "name": "meru"
+ },
+ "ro-MD": {
+ "code": "ro-MD",
+ "name": "moldau"
+ },
+ "mn": {
+ "code": "mn",
+ "name": "mongol"
+ },
+ "mua": {
+ "code": "mua",
+ "name": "mundang"
+ },
+ "naq": {
+ "code": "naq",
+ "name": "nama"
+ },
+ "nd": {
+ "code": "nd",
+ "name": "ndebele septentrional"
+ },
+ "nl": {
+ "code": "nl",
+ "name": "neerlandès"
+ },
+ "ne": {
+ "code": "ne",
+ "name": "nepalès"
+ },
+ "jgo": {
+ "code": "jgo",
+ "name": "ngomba"
+ },
+ "nb": {
+ "code": "nb",
+ "name": "noruec bokmål"
+ },
+ "nn": {
+ "code": "nn",
+ "name": "noruec nynorsk"
+ },
+ "nus": {
+ "code": "nus",
+ "name": "nuer"
+ },
+ "nyn": {
+ "code": "nyn",
+ "name": "nyankole"
+ },
+ "or": {
+ "code": "or",
+ "name": "oriya"
+ },
+ "ps": {
+ "code": "ps",
+ "name": "paixtu"
+ },
+ "pa": {
+ "code": "pa",
+ "name": "panjabi"
+ },
+ "asa": {
+ "code": "asa",
+ "name": "pare"
+ },
+ "fa": {
+ "code": "fa",
+ "name": "persa"
+ },
+ "pl": {
+ "code": "pl",
+ "name": "polonès"
+ },
+ "pt": {
+ "code": "pt",
+ "name": "portuguès"
+ },
+ "pt-PT": {
+ "code": "pt-PT",
+ "name": "portuguès de Portugal"
+ },
+ "pt-BR": {
+ "code": "pt-BR",
+ "name": "portuguès del Brasil"
+ },
+ "rm": {
+ "code": "rm",
+ "name": "retoromànic"
+ },
+ "ro": {
+ "code": "ro",
+ "name": "romanès"
+ },
+ "rof": {
+ "code": "rof",
+ "name": "rombo"
+ },
+ "rn": {
+ "code": "rn",
+ "name": "rundi"
+ },
+ "ru": {
+ "code": "ru",
+ "name": "rus"
+ },
+ "rwk": {
+ "code": "rwk",
+ "name": "rwo"
+ },
+ "saq": {
+ "code": "saq",
+ "name": "samburu"
+ },
+ "se": {
+ "code": "se",
+ "name": "sami septentrional"
+ },
+ "sg": {
+ "code": "sg",
+ "name": "sango"
+ },
+ "sbp": {
+ "code": "sbp",
+ "name": "sangu"
+ },
+ "seh": {
+ "code": "seh",
+ "name": "sena"
+ },
+ "sr": {
+ "code": "sr",
+ "name": "serbi"
+ },
+ "ksb": {
+ "code": "ksb",
+ "name": "shambala"
+ },
+ "sn": {
+ "code": "sn",
+ "name": "shona"
+ },
+ "si": {
+ "code": "si",
+ "name": "singalès"
+ },
+ "xog": {
+ "code": "xog",
+ "name": "soga"
+ },
+ "so": {
+ "code": "so",
+ "name": "somali"
+ },
+ "ses": {
+ "code": "ses",
+ "name": "songhai oriental"
+ },
+ "sw": {
+ "code": "sw",
+ "name": "suahili"
+ },
+ "swc": {
+ "code": "swc",
+ "name": "suahili del Congo"
+ },
+ "sv": {
+ "code": "sv",
+ "name": "suec"
+ },
+ "th": {
+ "code": "th",
+ "name": "tailandès"
+ },
+ "dav": {
+ "code": "dav",
+ "name": "taita"
+ },
+ "shi": {
+ "code": "shi",
+ "name": "taixelhit"
+ },
+ "ta": {
+ "code": "ta",
+ "name": "tàmil"
+ },
+ "twq": {
+ "code": "twq",
+ "name": "tasawaq"
+ },
+ "te": {
+ "code": "te",
+ "name": "telugu"
+ },
+ "teo": {
+ "code": "teo",
+ "name": "teso"
+ },
+ "bo": {
+ "code": "bo",
+ "name": "tibetà"
+ },
+ "ti": {
+ "code": "ti",
+ "name": "tigrinya"
+ },
+ "to": {
+ "code": "to",
+ "name": "tongalès"
+ },
+ "tr": {
+ "code": "tr",
+ "name": "turc"
+ },
+ "cs": {
+ "code": "cs",
+ "name": "txec"
+ },
+ "uk": {
+ "code": "uk",
+ "name": "ucraïnès"
+ },
+ "ug": {
+ "code": "ug",
+ "name": "uigur"
+ },
+ "ur": {
+ "code": "ur",
+ "name": "urdú"
+ },
+ "uz": {
+ "code": "uz",
+ "name": "uzbek"
+ },
+ "vai": {
+ "code": "vai",
+ "name": "Vai"
+ },
+ "vi": {
+ "code": "vi",
+ "name": "vietnamita"
+ },
+ "vun": {
+ "code": "vun",
+ "name": "vunjo"
+ },
+ "wae": {
+ "code": "wae",
+ "name": "walser"
+ },
+ "zh": {
+ "code": "zh",
+ "name": "xinès"
+ },
+ "zh-Hans": {
+ "code": "zh-Hans",
+ "name": "xinès simplificat"
+ },
+ "zh-Hant": {
+ "code": "zh-Hant",
+ "name": "xinès tradicional"
+ },
+ "yav": {
+ "code": "yav",
+ "name": "yangben"
+ },
+ "dje": {
+ "code": "dje",
+ "name": "zarma"
+ },
+ "zu": {
+ "code": "zu",
+ "name": "zulu"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/language/cgg.json b/library/intl/resources/language/cgg.json
new file mode 100644
index 000000000..8d03b2c4a
--- /dev/null
+++ b/library/intl/resources/language/cgg.json
@@ -0,0 +1,738 @@
+{
+ "af": {
+ "code": "af",
+ "name": "Afrikaans"
+ },
+ "agq": {
+ "code": "agq",
+ "name": "Aghem"
+ },
+ "sq": {
+ "code": "sq",
+ "name": "Albanian"
+ },
+ "ar-001": {
+ "code": "ar-001",
+ "name": "ar_001"
+ },
+ "hy": {
+ "code": "hy",
+ "name": "Armenian"
+ },
+ "ast": {
+ "code": "ast",
+ "name": "Asturian"
+ },
+ "asa": {
+ "code": "asa",
+ "name": "Asu"
+ },
+ "az": {
+ "code": "az",
+ "name": "Azerbaijani"
+ },
+ "ksf": {
+ "code": "ksf",
+ "name": "Bafia"
+ },
+ "bm": {
+ "code": "bm",
+ "name": "Bambara"
+ },
+ "bas": {
+ "code": "bas",
+ "name": "Basaa"
+ },
+ "eu": {
+ "code": "eu",
+ "name": "Basque"
+ },
+ "bez": {
+ "code": "bez",
+ "name": "Bena"
+ },
+ "brx": {
+ "code": "brx",
+ "name": "Bodo"
+ },
+ "bs": {
+ "code": "bs",
+ "name": "Bosnian"
+ },
+ "br": {
+ "code": "br",
+ "name": "Breton"
+ },
+ "ca": {
+ "code": "ca",
+ "name": "Catalan"
+ },
+ "tzm": {
+ "code": "tzm",
+ "name": "Central Atlas Tamazight"
+ },
+ "chr": {
+ "code": "chr",
+ "name": "Cherokee"
+ },
+ "ksh": {
+ "code": "ksh",
+ "name": "Colognian"
+ },
+ "swc": {
+ "code": "swc",
+ "name": "Congo Swahili"
+ },
+ "hr": {
+ "code": "hr",
+ "name": "Croatian"
+ },
+ "da": {
+ "code": "da",
+ "name": "Danish"
+ },
+ "de-AT": {
+ "code": "de-AT",
+ "name": "de_AT"
+ },
+ "de-CH": {
+ "code": "de-CH",
+ "name": "de_CH"
+ },
+ "dz": {
+ "code": "dz",
+ "name": "Dzongkha"
+ },
+ "ebu": {
+ "code": "ebu",
+ "name": "Embu"
+ },
+ "en-AU": {
+ "code": "en-AU",
+ "name": "en_AU"
+ },
+ "en-CA": {
+ "code": "en-CA",
+ "name": "en_CA"
+ },
+ "en-GB": {
+ "code": "en-GB",
+ "name": "en_GB"
+ },
+ "en-US": {
+ "code": "en-US",
+ "name": "en_US"
+ },
+ "es-ES": {
+ "code": "es-ES",
+ "name": "es_ES"
+ },
+ "es-MX": {
+ "code": "es-MX",
+ "name": "es_MX"
+ },
+ "eo": {
+ "code": "eo",
+ "name": "Esperanto"
+ },
+ "et": {
+ "code": "et",
+ "name": "Estonian"
+ },
+ "ee": {
+ "code": "ee",
+ "name": "Ewe"
+ },
+ "ewo": {
+ "code": "ewo",
+ "name": "Ewondo"
+ },
+ "fo": {
+ "code": "fo",
+ "name": "Faroese"
+ },
+ "fil": {
+ "code": "fil",
+ "name": "Filipino"
+ },
+ "fi": {
+ "code": "fi",
+ "name": "Finnish"
+ },
+ "fr-CA": {
+ "code": "fr-CA",
+ "name": "fr_CA"
+ },
+ "fr-CH": {
+ "code": "fr-CH",
+ "name": "fr_CH"
+ },
+ "fur": {
+ "code": "fur",
+ "name": "Friulian"
+ },
+ "ff": {
+ "code": "ff",
+ "name": "Fulah"
+ },
+ "gl": {
+ "code": "gl",
+ "name": "Galician"
+ },
+ "lg": {
+ "code": "lg",
+ "name": "Ganda"
+ },
+ "ka": {
+ "code": "ka",
+ "name": "Georgian"
+ },
+ "gu": {
+ "code": "gu",
+ "name": "Gujarati"
+ },
+ "guz": {
+ "code": "guz",
+ "name": "Gusii"
+ },
+ "he": {
+ "code": "he",
+ "name": "Hebrew"
+ },
+ "is": {
+ "code": "is",
+ "name": "Icelandic"
+ },
+ "ga": {
+ "code": "ga",
+ "name": "Irish"
+ },
+ "dyo": {
+ "code": "dyo",
+ "name": "Jola-Fonyi"
+ },
+ "kea": {
+ "code": "kea",
+ "name": "Kabuverdianu"
+ },
+ "kab": {
+ "code": "kab",
+ "name": "Kabyle"
+ },
+ "kl": {
+ "code": "kl",
+ "name": "Kalaallisut"
+ },
+ "kln": {
+ "code": "kln",
+ "name": "Kalenjin"
+ },
+ "kam": {
+ "code": "kam",
+ "name": "Kamba"
+ },
+ "kn": {
+ "code": "kn",
+ "name": "Kannada"
+ },
+ "ks": {
+ "code": "ks",
+ "name": "Kashmiri"
+ },
+ "kk": {
+ "code": "kk",
+ "name": "Kazakh"
+ },
+ "ki": {
+ "code": "ki",
+ "name": "Kikuyu"
+ },
+ "khq": {
+ "code": "khq",
+ "name": "Koyra Chiini"
+ },
+ "ses": {
+ "code": "ses",
+ "name": "Koyraboro Senni"
+ },
+ "nmg": {
+ "code": "nmg",
+ "name": "Kwasio"
+ },
+ "ky": {
+ "code": "ky",
+ "name": "Kyrgyz"
+ },
+ "lag": {
+ "code": "lag",
+ "name": "Langi"
+ },
+ "lo": {
+ "code": "lo",
+ "name": "Lao"
+ },
+ "lv": {
+ "code": "lv",
+ "name": "Latvian"
+ },
+ "ln": {
+ "code": "ln",
+ "name": "Lingala"
+ },
+ "lt": {
+ "code": "lt",
+ "name": "Lithuanian"
+ },
+ "dsb": {
+ "code": "dsb",
+ "name": "Lower Sorbian"
+ },
+ "lu": {
+ "code": "lu",
+ "name": "Luba-Katanga"
+ },
+ "luo": {
+ "code": "luo",
+ "name": "Luo"
+ },
+ "lb": {
+ "code": "lb",
+ "name": "Luxembourgish"
+ },
+ "luy": {
+ "code": "luy",
+ "name": "Luyia"
+ },
+ "mk": {
+ "code": "mk",
+ "name": "Macedonian"
+ },
+ "jmc": {
+ "code": "jmc",
+ "name": "Machame"
+ },
+ "mgh": {
+ "code": "mgh",
+ "name": "Makhuwa-Meetto"
+ },
+ "kde": {
+ "code": "kde",
+ "name": "Makonde"
+ },
+ "mg": {
+ "code": "mg",
+ "name": "Malagasy"
+ },
+ "ml": {
+ "code": "ml",
+ "name": "Malayalam"
+ },
+ "mt": {
+ "code": "mt",
+ "name": "Maltese"
+ },
+ "mr": {
+ "code": "mr",
+ "name": "Marathi"
+ },
+ "mas": {
+ "code": "mas",
+ "name": "Masai"
+ },
+ "mer": {
+ "code": "mer",
+ "name": "Meru"
+ },
+ "mn": {
+ "code": "mn",
+ "name": "Mongolian"
+ },
+ "mfe": {
+ "code": "mfe",
+ "name": "Morisyen"
+ },
+ "mua": {
+ "code": "mua",
+ "name": "Mundang"
+ },
+ "naq": {
+ "code": "naq",
+ "name": "Nama"
+ },
+ "jgo": {
+ "code": "jgo",
+ "name": "Ngomba"
+ },
+ "nl-BE": {
+ "code": "nl-BE",
+ "name": "nl_BE"
+ },
+ "nd": {
+ "code": "nd",
+ "name": "North Ndebele"
+ },
+ "se": {
+ "code": "se",
+ "name": "Northern Sami"
+ },
+ "nb": {
+ "code": "nb",
+ "name": "Norwegian Bokmål"
+ },
+ "nn": {
+ "code": "nn",
+ "name": "Norwegian Nynorsk"
+ },
+ "nus": {
+ "code": "nus",
+ "name": "Nuer"
+ },
+ "nyn": {
+ "code": "nyn",
+ "name": "Nyankole"
+ },
+ "or": {
+ "code": "or",
+ "name": "Oriya"
+ },
+ "ur": {
+ "code": "ur",
+ "name": "Oru-Urudu"
+ },
+ "bn": {
+ "code": "bn",
+ "name": "Orubengari"
+ },
+ "be": {
+ "code": "be",
+ "name": "Oruberarusi"
+ },
+ "bg": {
+ "code": "bg",
+ "name": "Oruburugariya"
+ },
+ "my": {
+ "code": "my",
+ "name": "Oruburuma"
+ },
+ "cs": {
+ "code": "cs",
+ "name": "Oruceeki"
+ },
+ "zh": {
+ "code": "zh",
+ "name": "Oruchaina"
+ },
+ "nl": {
+ "code": "nl",
+ "name": "Orudaaki"
+ },
+ "fr": {
+ "code": "fr",
+ "name": "Orufaransa"
+ },
+ "de": {
+ "code": "de",
+ "name": "Orugirimaani"
+ },
+ "el": {
+ "code": "el",
+ "name": "Oruguriiki"
+ },
+ "hu": {
+ "code": "hu",
+ "name": "Oruhangare"
+ },
+ "ar": {
+ "code": "ar",
+ "name": "Oruharabu"
+ },
+ "ha": {
+ "code": "ha",
+ "name": "Oruhausa"
+ },
+ "hi": {
+ "code": "hi",
+ "name": "Oruhindi"
+ },
+ "id": {
+ "code": "id",
+ "name": "Oruindonezia"
+ },
+ "ja": {
+ "code": "ja",
+ "name": "Orujapaani"
+ },
+ "km": {
+ "code": "km",
+ "name": "Orukambodiya"
+ },
+ "ak": {
+ "code": "ak",
+ "name": "Orukani"
+ },
+ "ko": {
+ "code": "ko",
+ "name": "Orukoreya"
+ },
+ "uk": {
+ "code": "uk",
+ "name": "Orukuraini"
+ },
+ "tr": {
+ "code": "tr",
+ "name": "Orukuruki"
+ },
+ "ms": {
+ "code": "ms",
+ "name": "Orumalesiya"
+ },
+ "am": {
+ "code": "am",
+ "name": "Orumariki"
+ },
+ "ne": {
+ "code": "ne",
+ "name": "Orunepali"
+ },
+ "en": {
+ "code": "en",
+ "name": "Orungyereza"
+ },
+ "fa": {
+ "code": "fa",
+ "name": "Orupaasiya"
+ },
+ "pt": {
+ "code": "pt",
+ "name": "Orupocugo"
+ },
+ "pl": {
+ "code": "pl",
+ "name": "Orupoori"
+ },
+ "pa": {
+ "code": "pa",
+ "name": "Orupungyabi"
+ },
+ "ro": {
+ "code": "ro",
+ "name": "Oruromania"
+ },
+ "ru": {
+ "code": "ru",
+ "name": "Orurrasha"
+ },
+ "so": {
+ "code": "so",
+ "name": "Orusomaari"
+ },
+ "es": {
+ "code": "es",
+ "name": "Orusupaani"
+ },
+ "sv": {
+ "code": "sv",
+ "name": "Oruswidi"
+ },
+ "th": {
+ "code": "th",
+ "name": "Orutailandi"
+ },
+ "ta": {
+ "code": "ta",
+ "name": "Orutamiri"
+ },
+ "vi": {
+ "code": "vi",
+ "name": "Oruviyetinaamu"
+ },
+ "it": {
+ "code": "it",
+ "name": "Oruyitare"
+ },
+ "yo": {
+ "code": "yo",
+ "name": "Oruyoruba"
+ },
+ "zu": {
+ "code": "zu",
+ "name": "Oruzuru"
+ },
+ "ps": {
+ "code": "ps",
+ "name": "Pashto"
+ },
+ "pt-BR": {
+ "code": "pt-BR",
+ "name": "pt_BR"
+ },
+ "pt-PT": {
+ "code": "pt-PT",
+ "name": "pt_PT"
+ },
+ "ro-MD": {
+ "code": "ro-MD",
+ "name": "ro_MD"
+ },
+ "rm": {
+ "code": "rm",
+ "name": "Romansh"
+ },
+ "rof": {
+ "code": "rof",
+ "name": "Rombo"
+ },
+ "cgg": {
+ "code": "cgg",
+ "name": "Rukiga"
+ },
+ "rn": {
+ "code": "rn",
+ "name": "Rundi"
+ },
+ "rwk": {
+ "code": "rwk",
+ "name": "Rwa"
+ },
+ "saq": {
+ "code": "saq",
+ "name": "Samburu"
+ },
+ "sg": {
+ "code": "sg",
+ "name": "Sango"
+ },
+ "sbp": {
+ "code": "sbp",
+ "name": "Sangu"
+ },
+ "gd": {
+ "code": "gd",
+ "name": "Scottish Gaelic"
+ },
+ "seh": {
+ "code": "seh",
+ "name": "Sena"
+ },
+ "sr": {
+ "code": "sr",
+ "name": "Serbian"
+ },
+ "ksb": {
+ "code": "ksb",
+ "name": "Shambala"
+ },
+ "sn": {
+ "code": "sn",
+ "name": "Shona"
+ },
+ "si": {
+ "code": "si",
+ "name": "Sinhala"
+ },
+ "sk": {
+ "code": "sk",
+ "name": "Slovak"
+ },
+ "sl": {
+ "code": "sl",
+ "name": "Slovenian"
+ },
+ "xog": {
+ "code": "xog",
+ "name": "Soga"
+ },
+ "zgh": {
+ "code": "zgh",
+ "name": "Standard Moroccan Tamazight"
+ },
+ "sw": {
+ "code": "sw",
+ "name": "Swahili"
+ },
+ "gsw": {
+ "code": "gsw",
+ "name": "Swiss German"
+ },
+ "shi": {
+ "code": "shi",
+ "name": "Tachelhit"
+ },
+ "dav": {
+ "code": "dav",
+ "name": "Taita"
+ },
+ "twq": {
+ "code": "twq",
+ "name": "Tasawaq"
+ },
+ "te": {
+ "code": "te",
+ "name": "Telugu"
+ },
+ "teo": {
+ "code": "teo",
+ "name": "Teso"
+ },
+ "bo": {
+ "code": "bo",
+ "name": "Tibetan"
+ },
+ "ti": {
+ "code": "ti",
+ "name": "Tigrinya"
+ },
+ "to": {
+ "code": "to",
+ "name": "Tongan"
+ },
+ "hsb": {
+ "code": "hsb",
+ "name": "Upper Sorbian"
+ },
+ "ug": {
+ "code": "ug",
+ "name": "Uyghur"
+ },
+ "uz": {
+ "code": "uz",
+ "name": "Uzbek"
+ },
+ "vai": {
+ "code": "vai",
+ "name": "Vai"
+ },
+ "vun": {
+ "code": "vun",
+ "name": "Vunjo"
+ },
+ "wae": {
+ "code": "wae",
+ "name": "Walser"
+ },
+ "cy": {
+ "code": "cy",
+ "name": "Welsh"
+ },
+ "fy": {
+ "code": "fy",
+ "name": "Western Frisian"
+ },
+ "yav": {
+ "code": "yav",
+ "name": "Yangben"
+ },
+ "dje": {
+ "code": "dje",
+ "name": "Zarma"
+ },
+ "zh-Hans": {
+ "code": "zh-Hans",
+ "name": "zh_Hans"
+ },
+ "zh-Hant": {
+ "code": "zh-Hant",
+ "name": "zh_Hant"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/language/chr.json b/library/intl/resources/language/chr.json
new file mode 100644
index 000000000..909afb89c
--- /dev/null
+++ b/library/intl/resources/language/chr.json
@@ -0,0 +1,738 @@
+{
+ "af": {
+ "code": "af",
+ "name": "Afrikaans"
+ },
+ "agq": {
+ "code": "agq",
+ "name": "Aghem"
+ },
+ "ak": {
+ "code": "ak",
+ "name": "Akan"
+ },
+ "sq": {
+ "code": "sq",
+ "name": "Albanian"
+ },
+ "am": {
+ "code": "am",
+ "name": "Amharic"
+ },
+ "ar-001": {
+ "code": "ar-001",
+ "name": "ar_001"
+ },
+ "ar": {
+ "code": "ar",
+ "name": "Arabic"
+ },
+ "hy": {
+ "code": "hy",
+ "name": "Armenian"
+ },
+ "ast": {
+ "code": "ast",
+ "name": "Asturian"
+ },
+ "asa": {
+ "code": "asa",
+ "name": "Asu"
+ },
+ "az": {
+ "code": "az",
+ "name": "Azerbaijani"
+ },
+ "ksf": {
+ "code": "ksf",
+ "name": "Bafia"
+ },
+ "bm": {
+ "code": "bm",
+ "name": "Bambara"
+ },
+ "bas": {
+ "code": "bas",
+ "name": "Basaa"
+ },
+ "eu": {
+ "code": "eu",
+ "name": "Basque"
+ },
+ "be": {
+ "code": "be",
+ "name": "Belarusian"
+ },
+ "bez": {
+ "code": "bez",
+ "name": "Bena"
+ },
+ "bn": {
+ "code": "bn",
+ "name": "Bengali"
+ },
+ "brx": {
+ "code": "brx",
+ "name": "Bodo"
+ },
+ "bs": {
+ "code": "bs",
+ "name": "Bosnian"
+ },
+ "br": {
+ "code": "br",
+ "name": "Breton"
+ },
+ "bg": {
+ "code": "bg",
+ "name": "Bulgarian"
+ },
+ "my": {
+ "code": "my",
+ "name": "Burmese"
+ },
+ "ca": {
+ "code": "ca",
+ "name": "Catalan"
+ },
+ "tzm": {
+ "code": "tzm",
+ "name": "Central Atlas Tamazight"
+ },
+ "cgg": {
+ "code": "cgg",
+ "name": "Chiga"
+ },
+ "ksh": {
+ "code": "ksh",
+ "name": "Colognian"
+ },
+ "swc": {
+ "code": "swc",
+ "name": "Congo Swahili"
+ },
+ "hr": {
+ "code": "hr",
+ "name": "Croatian"
+ },
+ "cs": {
+ "code": "cs",
+ "name": "Czech"
+ },
+ "da": {
+ "code": "da",
+ "name": "Danish"
+ },
+ "de-AT": {
+ "code": "de-AT",
+ "name": "de_AT"
+ },
+ "de-CH": {
+ "code": "de-CH",
+ "name": "de_CH"
+ },
+ "nl": {
+ "code": "nl",
+ "name": "Dutch"
+ },
+ "dz": {
+ "code": "dz",
+ "name": "Dzongkha"
+ },
+ "ebu": {
+ "code": "ebu",
+ "name": "Embu"
+ },
+ "en-AU": {
+ "code": "en-AU",
+ "name": "en_AU"
+ },
+ "en-CA": {
+ "code": "en-CA",
+ "name": "en_CA"
+ },
+ "en-GB": {
+ "code": "en-GB",
+ "name": "en_GB"
+ },
+ "en-US": {
+ "code": "en-US",
+ "name": "en_US"
+ },
+ "es-ES": {
+ "code": "es-ES",
+ "name": "es_ES"
+ },
+ "es-MX": {
+ "code": "es-MX",
+ "name": "es_MX"
+ },
+ "eo": {
+ "code": "eo",
+ "name": "Esperanto"
+ },
+ "et": {
+ "code": "et",
+ "name": "Estonian"
+ },
+ "ee": {
+ "code": "ee",
+ "name": "Ewe"
+ },
+ "ewo": {
+ "code": "ewo",
+ "name": "Ewondo"
+ },
+ "fo": {
+ "code": "fo",
+ "name": "Faroese"
+ },
+ "fil": {
+ "code": "fil",
+ "name": "Filipino"
+ },
+ "fi": {
+ "code": "fi",
+ "name": "Finnish"
+ },
+ "fr-CA": {
+ "code": "fr-CA",
+ "name": "fr_CA"
+ },
+ "fr-CH": {
+ "code": "fr-CH",
+ "name": "fr_CH"
+ },
+ "fur": {
+ "code": "fur",
+ "name": "Friulian"
+ },
+ "ff": {
+ "code": "ff",
+ "name": "Fulah"
+ },
+ "gl": {
+ "code": "gl",
+ "name": "Galician"
+ },
+ "lg": {
+ "code": "lg",
+ "name": "Ganda"
+ },
+ "ka": {
+ "code": "ka",
+ "name": "Georgian"
+ },
+ "el": {
+ "code": "el",
+ "name": "Greek"
+ },
+ "gu": {
+ "code": "gu",
+ "name": "Gujarati"
+ },
+ "guz": {
+ "code": "guz",
+ "name": "Gusii"
+ },
+ "ha": {
+ "code": "ha",
+ "name": "Hausa"
+ },
+ "he": {
+ "code": "he",
+ "name": "Hebrew"
+ },
+ "hi": {
+ "code": "hi",
+ "name": "Hindi"
+ },
+ "hu": {
+ "code": "hu",
+ "name": "Hungarian"
+ },
+ "is": {
+ "code": "is",
+ "name": "Icelandic"
+ },
+ "id": {
+ "code": "id",
+ "name": "Indonesian"
+ },
+ "ga": {
+ "code": "ga",
+ "name": "Irish"
+ },
+ "dyo": {
+ "code": "dyo",
+ "name": "Jola-Fonyi"
+ },
+ "kea": {
+ "code": "kea",
+ "name": "Kabuverdianu"
+ },
+ "kab": {
+ "code": "kab",
+ "name": "Kabyle"
+ },
+ "kl": {
+ "code": "kl",
+ "name": "Kalaallisut"
+ },
+ "kln": {
+ "code": "kln",
+ "name": "Kalenjin"
+ },
+ "kam": {
+ "code": "kam",
+ "name": "Kamba"
+ },
+ "kn": {
+ "code": "kn",
+ "name": "Kannada"
+ },
+ "ks": {
+ "code": "ks",
+ "name": "Kashmiri"
+ },
+ "kk": {
+ "code": "kk",
+ "name": "Kazakh"
+ },
+ "km": {
+ "code": "km",
+ "name": "Khmer"
+ },
+ "ki": {
+ "code": "ki",
+ "name": "Kikuyu"
+ },
+ "ko": {
+ "code": "ko",
+ "name": "Korean"
+ },
+ "khq": {
+ "code": "khq",
+ "name": "Koyra Chiini"
+ },
+ "ses": {
+ "code": "ses",
+ "name": "Koyraboro Senni"
+ },
+ "nmg": {
+ "code": "nmg",
+ "name": "Kwasio"
+ },
+ "ky": {
+ "code": "ky",
+ "name": "Kyrgyz"
+ },
+ "lag": {
+ "code": "lag",
+ "name": "Langi"
+ },
+ "lo": {
+ "code": "lo",
+ "name": "Lao"
+ },
+ "lv": {
+ "code": "lv",
+ "name": "Latvian"
+ },
+ "ln": {
+ "code": "ln",
+ "name": "Lingala"
+ },
+ "lt": {
+ "code": "lt",
+ "name": "Lithuanian"
+ },
+ "dsb": {
+ "code": "dsb",
+ "name": "Lower Sorbian"
+ },
+ "lu": {
+ "code": "lu",
+ "name": "Luba-Katanga"
+ },
+ "luo": {
+ "code": "luo",
+ "name": "Luo"
+ },
+ "lb": {
+ "code": "lb",
+ "name": "Luxembourgish"
+ },
+ "luy": {
+ "code": "luy",
+ "name": "Luyia"
+ },
+ "mk": {
+ "code": "mk",
+ "name": "Macedonian"
+ },
+ "jmc": {
+ "code": "jmc",
+ "name": "Machame"
+ },
+ "mgh": {
+ "code": "mgh",
+ "name": "Makhuwa-Meetto"
+ },
+ "kde": {
+ "code": "kde",
+ "name": "Makonde"
+ },
+ "mg": {
+ "code": "mg",
+ "name": "Malagasy"
+ },
+ "ms": {
+ "code": "ms",
+ "name": "Malay"
+ },
+ "ml": {
+ "code": "ml",
+ "name": "Malayalam"
+ },
+ "mt": {
+ "code": "mt",
+ "name": "Maltese"
+ },
+ "mr": {
+ "code": "mr",
+ "name": "Marathi"
+ },
+ "mas": {
+ "code": "mas",
+ "name": "Masai"
+ },
+ "mer": {
+ "code": "mer",
+ "name": "Meru"
+ },
+ "mn": {
+ "code": "mn",
+ "name": "Mongolian"
+ },
+ "mfe": {
+ "code": "mfe",
+ "name": "Morisyen"
+ },
+ "mua": {
+ "code": "mua",
+ "name": "Mundang"
+ },
+ "naq": {
+ "code": "naq",
+ "name": "Nama"
+ },
+ "ne": {
+ "code": "ne",
+ "name": "Nepali"
+ },
+ "jgo": {
+ "code": "jgo",
+ "name": "Ngomba"
+ },
+ "nl-BE": {
+ "code": "nl-BE",
+ "name": "nl_BE"
+ },
+ "nd": {
+ "code": "nd",
+ "name": "North Ndebele"
+ },
+ "se": {
+ "code": "se",
+ "name": "Northern Sami"
+ },
+ "nb": {
+ "code": "nb",
+ "name": "Norwegian Bokmål"
+ },
+ "nn": {
+ "code": "nn",
+ "name": "Norwegian Nynorsk"
+ },
+ "nus": {
+ "code": "nus",
+ "name": "Nuer"
+ },
+ "nyn": {
+ "code": "nyn",
+ "name": "Nyankole"
+ },
+ "or": {
+ "code": "or",
+ "name": "Oriya"
+ },
+ "ps": {
+ "code": "ps",
+ "name": "Pashto"
+ },
+ "fa": {
+ "code": "fa",
+ "name": "Persian"
+ },
+ "pl": {
+ "code": "pl",
+ "name": "Polish"
+ },
+ "pt-BR": {
+ "code": "pt-BR",
+ "name": "pt_BR"
+ },
+ "pt-PT": {
+ "code": "pt-PT",
+ "name": "pt_PT"
+ },
+ "pa": {
+ "code": "pa",
+ "name": "Punjabi"
+ },
+ "ro-MD": {
+ "code": "ro-MD",
+ "name": "ro_MD"
+ },
+ "ro": {
+ "code": "ro",
+ "name": "Romanian"
+ },
+ "rm": {
+ "code": "rm",
+ "name": "Romansh"
+ },
+ "rof": {
+ "code": "rof",
+ "name": "Rombo"
+ },
+ "rn": {
+ "code": "rn",
+ "name": "Rundi"
+ },
+ "rwk": {
+ "code": "rwk",
+ "name": "Rwa"
+ },
+ "saq": {
+ "code": "saq",
+ "name": "Samburu"
+ },
+ "sg": {
+ "code": "sg",
+ "name": "Sango"
+ },
+ "sbp": {
+ "code": "sbp",
+ "name": "Sangu"
+ },
+ "gd": {
+ "code": "gd",
+ "name": "Scottish Gaelic"
+ },
+ "seh": {
+ "code": "seh",
+ "name": "Sena"
+ },
+ "sr": {
+ "code": "sr",
+ "name": "Serbian"
+ },
+ "ksb": {
+ "code": "ksb",
+ "name": "Shambala"
+ },
+ "sn": {
+ "code": "sn",
+ "name": "Shona"
+ },
+ "si": {
+ "code": "si",
+ "name": "Sinhala"
+ },
+ "sk": {
+ "code": "sk",
+ "name": "Slovak"
+ },
+ "sl": {
+ "code": "sl",
+ "name": "Slovenian"
+ },
+ "xog": {
+ "code": "xog",
+ "name": "Soga"
+ },
+ "so": {
+ "code": "so",
+ "name": "Somali"
+ },
+ "zgh": {
+ "code": "zgh",
+ "name": "Standard Moroccan Tamazight"
+ },
+ "sw": {
+ "code": "sw",
+ "name": "Swahili"
+ },
+ "sv": {
+ "code": "sv",
+ "name": "Swedish"
+ },
+ "gsw": {
+ "code": "gsw",
+ "name": "Swiss German"
+ },
+ "shi": {
+ "code": "shi",
+ "name": "Tachelhit"
+ },
+ "dav": {
+ "code": "dav",
+ "name": "Taita"
+ },
+ "ta": {
+ "code": "ta",
+ "name": "Tamil"
+ },
+ "twq": {
+ "code": "twq",
+ "name": "Tasawaq"
+ },
+ "te": {
+ "code": "te",
+ "name": "Telugu"
+ },
+ "teo": {
+ "code": "teo",
+ "name": "Teso"
+ },
+ "th": {
+ "code": "th",
+ "name": "Thai"
+ },
+ "bo": {
+ "code": "bo",
+ "name": "Tibetan"
+ },
+ "ti": {
+ "code": "ti",
+ "name": "Tigrinya"
+ },
+ "to": {
+ "code": "to",
+ "name": "Tongan"
+ },
+ "tr": {
+ "code": "tr",
+ "name": "Turkish"
+ },
+ "uk": {
+ "code": "uk",
+ "name": "Ukrainian"
+ },
+ "hsb": {
+ "code": "hsb",
+ "name": "Upper Sorbian"
+ },
+ "ur": {
+ "code": "ur",
+ "name": "Urdu"
+ },
+ "ug": {
+ "code": "ug",
+ "name": "Uyghur"
+ },
+ "uz": {
+ "code": "uz",
+ "name": "Uzbek"
+ },
+ "vai": {
+ "code": "vai",
+ "name": "Vai"
+ },
+ "vi": {
+ "code": "vi",
+ "name": "Vietnamese"
+ },
+ "vun": {
+ "code": "vun",
+ "name": "Vunjo"
+ },
+ "wae": {
+ "code": "wae",
+ "name": "Walser"
+ },
+ "cy": {
+ "code": "cy",
+ "name": "Welsh"
+ },
+ "fy": {
+ "code": "fy",
+ "name": "Western Frisian"
+ },
+ "yav": {
+ "code": "yav",
+ "name": "Yangben"
+ },
+ "yo": {
+ "code": "yo",
+ "name": "Yoruba"
+ },
+ "dje": {
+ "code": "dje",
+ "name": "Zarma"
+ },
+ "zh-Hans": {
+ "code": "zh-Hans",
+ "name": "zh_Hans"
+ },
+ "zh-Hant": {
+ "code": "zh-Hant",
+ "name": "zh_Hant"
+ },
+ "zu": {
+ "code": "zu",
+ "name": "Zulu"
+ },
+ "de": {
+ "code": "de",
+ "name": "Ꭰá‚á“á¥"
+ },
+ "fr": {
+ "code": "fr",
+ "name": "ᎦᎸá¥"
+ },
+ "en": {
+ "code": "en",
+ "name": "ᎩᎵá"
+ },
+ "it": {
+ "code": "it",
+ "name": "Ꭼá©áŽµá²á¥áŽ¢"
+ },
+ "pt": {
+ "code": "pt",
+ "name": "á‰á§áŽ¦áŽµ"
+ },
+ "es": {
+ "code": "es",
+ "name": "áá†á‚"
+ },
+ "zh": {
+ "code": "zh",
+ "name": "á“Ꮆá‚Ꭸ"
+ },
+ "chr": {
+ "code": "chr",
+ "name": "á£áŽ³áŽ©"
+ },
+ "ja": {
+ "code": "ja",
+ "name": "á£á©á‚á"
+ },
+ "ru": {
+ "code": "ru",
+ "name": "á²á‚Ꭲ"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/language/cs.json b/library/intl/resources/language/cs.json
new file mode 100644
index 000000000..b650d8452
--- /dev/null
+++ b/library/intl/resources/language/cs.json
@@ -0,0 +1,738 @@
+{
+ "af": {
+ "code": "af",
+ "name": "afrikánština"
+ },
+ "agq": {
+ "code": "agq",
+ "name": "aghem"
+ },
+ "ak": {
+ "code": "ak",
+ "name": "akanština"
+ },
+ "sq": {
+ "code": "sq",
+ "name": "albánština"
+ },
+ "am": {
+ "code": "am",
+ "name": "amharština"
+ },
+ "en": {
+ "code": "en",
+ "name": "angliÄtina"
+ },
+ "en-US": {
+ "code": "en-US",
+ "name": "angliÄtina (USA)"
+ },
+ "ar": {
+ "code": "ar",
+ "name": "arabština"
+ },
+ "ar-001": {
+ "code": "ar-001",
+ "name": "arabština (moderní standardní)"
+ },
+ "hy": {
+ "code": "hy",
+ "name": "arménština"
+ },
+ "ast": {
+ "code": "ast",
+ "name": "asturština"
+ },
+ "asa": {
+ "code": "asa",
+ "name": "asu"
+ },
+ "az": {
+ "code": "az",
+ "name": "ázerbájdžánština"
+ },
+ "ksf": {
+ "code": "ksf",
+ "name": "bafia"
+ },
+ "bm": {
+ "code": "bm",
+ "name": "bambarština"
+ },
+ "my": {
+ "code": "my",
+ "name": "barmština"
+ },
+ "bas": {
+ "code": "bas",
+ "name": "basa"
+ },
+ "eu": {
+ "code": "eu",
+ "name": "baskiÄtina"
+ },
+ "be": {
+ "code": "be",
+ "name": "běloruština"
+ },
+ "bez": {
+ "code": "bez",
+ "name": "bena"
+ },
+ "bn": {
+ "code": "bn",
+ "name": "bengálština"
+ },
+ "brx": {
+ "code": "brx",
+ "name": "bodoština"
+ },
+ "bs": {
+ "code": "bs",
+ "name": "bosenština"
+ },
+ "br": {
+ "code": "br",
+ "name": "bretonština"
+ },
+ "bg": {
+ "code": "bg",
+ "name": "bulharština"
+ },
+ "chr": {
+ "code": "chr",
+ "name": "ÄerokézÅ¡tina"
+ },
+ "cs": {
+ "code": "cs",
+ "name": "ÄeÅ¡tina"
+ },
+ "zh": {
+ "code": "zh",
+ "name": "ÄínÅ¡tina"
+ },
+ "zh-Hans": {
+ "code": "zh-Hans",
+ "name": "ÄínÅ¡tina (zjednoduÅ¡ená)"
+ },
+ "da": {
+ "code": "da",
+ "name": "dánština"
+ },
+ "de-AT": {
+ "code": "de-AT",
+ "name": "de_AT"
+ },
+ "dsb": {
+ "code": "dsb",
+ "name": "dolnolužická srbština"
+ },
+ "dz": {
+ "code": "dz",
+ "name": "dzongkä"
+ },
+ "ebu": {
+ "code": "ebu",
+ "name": "embu"
+ },
+ "en-AU": {
+ "code": "en-AU",
+ "name": "en_AU"
+ },
+ "en-CA": {
+ "code": "en-CA",
+ "name": "en_CA"
+ },
+ "en-GB": {
+ "code": "en-GB",
+ "name": "en_GB"
+ },
+ "es-MX": {
+ "code": "es-MX",
+ "name": "es_MX"
+ },
+ "eo": {
+ "code": "eo",
+ "name": "esperanto"
+ },
+ "et": {
+ "code": "et",
+ "name": "estonština"
+ },
+ "ee": {
+ "code": "ee",
+ "name": "eweština"
+ },
+ "ewo": {
+ "code": "ewo",
+ "name": "ewondo"
+ },
+ "fo": {
+ "code": "fo",
+ "name": "faerština"
+ },
+ "fil": {
+ "code": "fil",
+ "name": "filipínština"
+ },
+ "fi": {
+ "code": "fi",
+ "name": "finština"
+ },
+ "fr-CA": {
+ "code": "fr-CA",
+ "name": "fr_CA"
+ },
+ "fr-CH": {
+ "code": "fr-CH",
+ "name": "fr_CH"
+ },
+ "fr": {
+ "code": "fr",
+ "name": "francouzština"
+ },
+ "fy": {
+ "code": "fy",
+ "name": "fríština"
+ },
+ "ff": {
+ "code": "ff",
+ "name": "fulbština"
+ },
+ "fur": {
+ "code": "fur",
+ "name": "furlanština"
+ },
+ "gl": {
+ "code": "gl",
+ "name": "galicijština"
+ },
+ "lg": {
+ "code": "lg",
+ "name": "gandština"
+ },
+ "kl": {
+ "code": "kl",
+ "name": "grónština"
+ },
+ "ka": {
+ "code": "ka",
+ "name": "gruzínština"
+ },
+ "gu": {
+ "code": "gu",
+ "name": "gudžarátština"
+ },
+ "guz": {
+ "code": "guz",
+ "name": "gusii"
+ },
+ "ha": {
+ "code": "ha",
+ "name": "hauština"
+ },
+ "he": {
+ "code": "he",
+ "name": "hebrejština"
+ },
+ "hi": {
+ "code": "hi",
+ "name": "hindština"
+ },
+ "hsb": {
+ "code": "hsb",
+ "name": "hornolužická srbština"
+ },
+ "hr": {
+ "code": "hr",
+ "name": "chorvatština"
+ },
+ "id": {
+ "code": "id",
+ "name": "indonéština"
+ },
+ "ga": {
+ "code": "ga",
+ "name": "irština"
+ },
+ "is": {
+ "code": "is",
+ "name": "islandština"
+ },
+ "it": {
+ "code": "it",
+ "name": "italština"
+ },
+ "yav": {
+ "code": "yav",
+ "name": "jangbenština"
+ },
+ "ja": {
+ "code": "ja",
+ "name": "japonština"
+ },
+ "dyo": {
+ "code": "dyo",
+ "name": "jola-fonyi"
+ },
+ "yo": {
+ "code": "yo",
+ "name": "jorubština"
+ },
+ "kab": {
+ "code": "kab",
+ "name": "kabylština"
+ },
+ "kln": {
+ "code": "kln",
+ "name": "kalendžin"
+ },
+ "kam": {
+ "code": "kam",
+ "name": "kambština"
+ },
+ "kn": {
+ "code": "kn",
+ "name": "kannadština"
+ },
+ "kea": {
+ "code": "kea",
+ "name": "kapverdština"
+ },
+ "ks": {
+ "code": "ks",
+ "name": "kašmírština"
+ },
+ "ca": {
+ "code": "ca",
+ "name": "katalánština"
+ },
+ "kk": {
+ "code": "kk",
+ "name": "kazaština"
+ },
+ "km": {
+ "code": "km",
+ "name": "khmérština"
+ },
+ "cgg": {
+ "code": "cgg",
+ "name": "kiga"
+ },
+ "ki": {
+ "code": "ki",
+ "name": "kikujština"
+ },
+ "rn": {
+ "code": "rn",
+ "name": "kirundština"
+ },
+ "ksh": {
+ "code": "ksh",
+ "name": "kolínština"
+ },
+ "ko": {
+ "code": "ko",
+ "name": "korejština"
+ },
+ "khq": {
+ "code": "khq",
+ "name": "koyra chiini"
+ },
+ "ses": {
+ "code": "ses",
+ "name": "koyraboro senni"
+ },
+ "nmg": {
+ "code": "nmg",
+ "name": "kwasio"
+ },
+ "ky": {
+ "code": "ky",
+ "name": "kyrgyzština"
+ },
+ "lag": {
+ "code": "lag",
+ "name": "langi"
+ },
+ "lo": {
+ "code": "lo",
+ "name": "laoština"
+ },
+ "ln": {
+ "code": "ln",
+ "name": "lingalština"
+ },
+ "lt": {
+ "code": "lt",
+ "name": "litevština"
+ },
+ "lv": {
+ "code": "lv",
+ "name": "lotyština"
+ },
+ "lu": {
+ "code": "lu",
+ "name": "lubu-katanžština"
+ },
+ "lb": {
+ "code": "lb",
+ "name": "lucemburština"
+ },
+ "luy": {
+ "code": "luy",
+ "name": "luhja"
+ },
+ "luo": {
+ "code": "luo",
+ "name": "luoština"
+ },
+ "hu": {
+ "code": "hu",
+ "name": "maÄarÅ¡tina"
+ },
+ "mk": {
+ "code": "mk",
+ "name": "makedonština"
+ },
+ "mgh": {
+ "code": "mgh",
+ "name": "makhuwa-meetto"
+ },
+ "kde": {
+ "code": "kde",
+ "name": "makonde"
+ },
+ "ml": {
+ "code": "ml",
+ "name": "malajálamština"
+ },
+ "ms": {
+ "code": "ms",
+ "name": "malajština"
+ },
+ "mg": {
+ "code": "mg",
+ "name": "malgaština"
+ },
+ "mt": {
+ "code": "mt",
+ "name": "maltština"
+ },
+ "mr": {
+ "code": "mr",
+ "name": "maráthština"
+ },
+ "mas": {
+ "code": "mas",
+ "name": "masajština"
+ },
+ "jmc": {
+ "code": "jmc",
+ "name": "mašame"
+ },
+ "mfe": {
+ "code": "mfe",
+ "name": "mauricijská kreolština"
+ },
+ "mer": {
+ "code": "mer",
+ "name": "meru"
+ },
+ "ro-MD": {
+ "code": "ro-MD",
+ "name": "moldavština"
+ },
+ "mn": {
+ "code": "mn",
+ "name": "mongolština"
+ },
+ "mua": {
+ "code": "mua",
+ "name": "mundang"
+ },
+ "naq": {
+ "code": "naq",
+ "name": "namaština"
+ },
+ "nyn": {
+ "code": "nyn",
+ "name": "ňankolština"
+ },
+ "nd": {
+ "code": "nd",
+ "name": "ndebele (Zimbabwe)"
+ },
+ "de": {
+ "code": "de",
+ "name": "nÄ›mÄina"
+ },
+ "gsw": {
+ "code": "gsw",
+ "name": "nÄ›mÄina (Å výcarsko)"
+ },
+ "wae": {
+ "code": "wae",
+ "name": "nÄ›mÄina (walser)"
+ },
+ "de-CH": {
+ "code": "de-CH",
+ "name": "nÄ›mÄina standardní (Å výcarsko)"
+ },
+ "ne": {
+ "code": "ne",
+ "name": "nepálština"
+ },
+ "jgo": {
+ "code": "jgo",
+ "name": "ngomba"
+ },
+ "nl": {
+ "code": "nl",
+ "name": "nizozemština"
+ },
+ "nb": {
+ "code": "nb",
+ "name": "norština (bokmål)"
+ },
+ "nn": {
+ "code": "nn",
+ "name": "norština (nynorsk)"
+ },
+ "nus": {
+ "code": "nus",
+ "name": "nuerština"
+ },
+ "pa": {
+ "code": "pa",
+ "name": "paňdžábština"
+ },
+ "ps": {
+ "code": "ps",
+ "name": "paštština"
+ },
+ "fa": {
+ "code": "fa",
+ "name": "perština"
+ },
+ "pl": {
+ "code": "pl",
+ "name": "polština"
+ },
+ "pt": {
+ "code": "pt",
+ "name": "portugalština"
+ },
+ "pt-PT": {
+ "code": "pt-PT",
+ "name": "portugalština (Evropa)"
+ },
+ "pt-BR": {
+ "code": "pt-BR",
+ "name": "pt_BR"
+ },
+ "rm": {
+ "code": "rm",
+ "name": "rétorománština"
+ },
+ "rof": {
+ "code": "rof",
+ "name": "rombo"
+ },
+ "ro": {
+ "code": "ro",
+ "name": "rumunština"
+ },
+ "ru": {
+ "code": "ru",
+ "name": "ruština"
+ },
+ "rwk": {
+ "code": "rwk",
+ "name": "rwa"
+ },
+ "el": {
+ "code": "el",
+ "name": "Å™eÄtina"
+ },
+ "saq": {
+ "code": "saq",
+ "name": "samburu"
+ },
+ "se": {
+ "code": "se",
+ "name": "sámština (severní)"
+ },
+ "sbp": {
+ "code": "sbp",
+ "name": "sangoština"
+ },
+ "sg": {
+ "code": "sg",
+ "name": "sangština"
+ },
+ "seh": {
+ "code": "seh",
+ "name": "sena"
+ },
+ "si": {
+ "code": "si",
+ "name": "sinhálština"
+ },
+ "gd": {
+ "code": "gd",
+ "name": "skotská gaelština"
+ },
+ "sk": {
+ "code": "sk",
+ "name": "slovenština"
+ },
+ "sl": {
+ "code": "sl",
+ "name": "slovinština"
+ },
+ "xog": {
+ "code": "xog",
+ "name": "sogština"
+ },
+ "so": {
+ "code": "so",
+ "name": "somálština"
+ },
+ "sr": {
+ "code": "sr",
+ "name": "srbština"
+ },
+ "sw": {
+ "code": "sw",
+ "name": "svahilština"
+ },
+ "swc": {
+ "code": "swc",
+ "name": "svahilština (Kongo)"
+ },
+ "ksb": {
+ "code": "ksb",
+ "name": "Å¡ambala"
+ },
+ "sn": {
+ "code": "sn",
+ "name": "šonština"
+ },
+ "es": {
+ "code": "es",
+ "name": "španělština"
+ },
+ "es-ES": {
+ "code": "es-ES",
+ "name": "španělština (Evropa)"
+ },
+ "sv": {
+ "code": "sv",
+ "name": "švédština"
+ },
+ "shi": {
+ "code": "shi",
+ "name": "tachelhit"
+ },
+ "dav": {
+ "code": "dav",
+ "name": "taita"
+ },
+ "zgh": {
+ "code": "zgh",
+ "name": "tamazight (standardní marocký)"
+ },
+ "tzm": {
+ "code": "tzm",
+ "name": "tamazight (střední Maroko)"
+ },
+ "ta": {
+ "code": "ta",
+ "name": "tamilština"
+ },
+ "twq": {
+ "code": "twq",
+ "name": "tasawaq"
+ },
+ "te": {
+ "code": "te",
+ "name": "telugština"
+ },
+ "teo": {
+ "code": "teo",
+ "name": "teso"
+ },
+ "th": {
+ "code": "th",
+ "name": "thajština"
+ },
+ "bo": {
+ "code": "bo",
+ "name": "tibetština"
+ },
+ "ti": {
+ "code": "ti",
+ "name": "tigrinijština"
+ },
+ "to": {
+ "code": "to",
+ "name": "tongánština"
+ },
+ "tr": {
+ "code": "tr",
+ "name": "tureÄtina"
+ },
+ "ug": {
+ "code": "ug",
+ "name": "ujgurština"
+ },
+ "uk": {
+ "code": "uk",
+ "name": "ukrajinština"
+ },
+ "ur": {
+ "code": "ur",
+ "name": "urdština"
+ },
+ "or": {
+ "code": "or",
+ "name": "urijština"
+ },
+ "uz": {
+ "code": "uz",
+ "name": "uzbeÄtina"
+ },
+ "vai": {
+ "code": "vai",
+ "name": "Vai"
+ },
+ "cy": {
+ "code": "cy",
+ "name": "velština"
+ },
+ "vi": {
+ "code": "vi",
+ "name": "vietnamština"
+ },
+ "nl-BE": {
+ "code": "nl-BE",
+ "name": "vlámština"
+ },
+ "vun": {
+ "code": "vun",
+ "name": "vunjo"
+ },
+ "dje": {
+ "code": "dje",
+ "name": "zarmština"
+ },
+ "zh-Hant": {
+ "code": "zh-Hant",
+ "name": "zh_Hant"
+ },
+ "zu": {
+ "code": "zu",
+ "name": "zuluština"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/language/cy.json b/library/intl/resources/language/cy.json
new file mode 100644
index 000000000..fe8df481f
--- /dev/null
+++ b/library/intl/resources/language/cy.json
@@ -0,0 +1,738 @@
+{
+ "ak": {
+ "code": "ak",
+ "name": "Acaneg"
+ },
+ "af": {
+ "code": "af",
+ "name": "Affricâneg"
+ },
+ "agq": {
+ "code": "agq",
+ "name": "Aghemeg"
+ },
+ "sq": {
+ "code": "sq",
+ "name": "Albaneg"
+ },
+ "de": {
+ "code": "de",
+ "name": "Almaeneg"
+ },
+ "de-AT": {
+ "code": "de-AT",
+ "name": "Almaeneg Awstria"
+ },
+ "de-CH": {
+ "code": "de-CH",
+ "name": "Almaeneg Safonol y Swistir"
+ },
+ "gsw": {
+ "code": "gsw",
+ "name": "Almaeneg y Swistir"
+ },
+ "am": {
+ "code": "am",
+ "name": "Amhareg"
+ },
+ "ar": {
+ "code": "ar",
+ "name": "Arabeg"
+ },
+ "ar-001": {
+ "code": "ar-001",
+ "name": "Arabeg Modern Safonol"
+ },
+ "hy": {
+ "code": "hy",
+ "name": "Armeneg"
+ },
+ "az": {
+ "code": "az",
+ "name": "Aserbaijaneg"
+ },
+ "ast": {
+ "code": "ast",
+ "name": "Asturian"
+ },
+ "asa": {
+ "code": "asa",
+ "name": "Asu"
+ },
+ "ksf": {
+ "code": "ksf",
+ "name": "Baffia"
+ },
+ "bm": {
+ "code": "bm",
+ "name": "Bambareg"
+ },
+ "bas": {
+ "code": "bas",
+ "name": "Basâeg"
+ },
+ "eu": {
+ "code": "eu",
+ "name": "Basgeg"
+ },
+ "bn": {
+ "code": "bn",
+ "name": "Bengaleg"
+ },
+ "be": {
+ "code": "be",
+ "name": "Belarwseg"
+ },
+ "bez": {
+ "code": "bez",
+ "name": "Bena"
+ },
+ "brx": {
+ "code": "brx",
+ "name": "Bodo"
+ },
+ "bs": {
+ "code": "bs",
+ "name": "Bosnieg"
+ },
+ "bg": {
+ "code": "bg",
+ "name": "Bwlgareg"
+ },
+ "my": {
+ "code": "my",
+ "name": "Byrmaneg"
+ },
+ "kab": {
+ "code": "kab",
+ "name": "Cabileg"
+ },
+ "kea": {
+ "code": "kea",
+ "name": "Caboferdianeg"
+ },
+ "kam": {
+ "code": "kam",
+ "name": "Camba"
+ },
+ "kk": {
+ "code": "kk",
+ "name": "Casacheg"
+ },
+ "ks": {
+ "code": "ks",
+ "name": "Cashmireg"
+ },
+ "ca": {
+ "code": "ca",
+ "name": "Catalaneg"
+ },
+ "tzm": {
+ "code": "tzm",
+ "name": "Central Atlas Tamazight"
+ },
+ "ky": {
+ "code": "ky",
+ "name": "Cirgiseg"
+ },
+ "ko": {
+ "code": "ko",
+ "name": "Coreeg"
+ },
+ "hr": {
+ "code": "hr",
+ "name": "Croateg"
+ },
+ "ksh": {
+ "code": "ksh",
+ "name": "Cwleneg"
+ },
+ "cy": {
+ "code": "cy",
+ "name": "Cymraeg"
+ },
+ "cgg": {
+ "code": "cgg",
+ "name": "Chiga"
+ },
+ "km": {
+ "code": "km",
+ "name": "Chmereg"
+ },
+ "da": {
+ "code": "da",
+ "name": "Daneg"
+ },
+ "dz": {
+ "code": "dz",
+ "name": "Dzongkha"
+ },
+ "it": {
+ "code": "it",
+ "name": "Eidaleg"
+ },
+ "ebu": {
+ "code": "ebu",
+ "name": "Embw"
+ },
+ "eo": {
+ "code": "eo",
+ "name": "Esperanto"
+ },
+ "et": {
+ "code": "et",
+ "name": "Estoneg"
+ },
+ "ee": {
+ "code": "ee",
+ "name": "Ewe"
+ },
+ "ewo": {
+ "code": "ewo",
+ "name": "Ewondo"
+ },
+ "vai": {
+ "code": "vai",
+ "name": "Faieg"
+ },
+ "vi": {
+ "code": "vi",
+ "name": "Fietnameg"
+ },
+ "fo": {
+ "code": "fo",
+ "name": "Ffaröeg"
+ },
+ "fil": {
+ "code": "fil",
+ "name": "Ffilipineg"
+ },
+ "fi": {
+ "code": "fi",
+ "name": "Ffinneg"
+ },
+ "nl-BE": {
+ "code": "nl-BE",
+ "name": "Fflemeg"
+ },
+ "fr": {
+ "code": "fr",
+ "name": "Ffrangeg"
+ },
+ "fr-CA": {
+ "code": "fr-CA",
+ "name": "Ffrangeg Canada"
+ },
+ "fr-CH": {
+ "code": "fr-CH",
+ "name": "Ffrangeg y Swistir"
+ },
+ "fy": {
+ "code": "fy",
+ "name": "Ffriseg y Gorllewin"
+ },
+ "fur": {
+ "code": "fur",
+ "name": "Ffriwleg"
+ },
+ "ff": {
+ "code": "ff",
+ "name": "Ffwla"
+ },
+ "gd": {
+ "code": "gd",
+ "name": "Gaeleg yr Alban"
+ },
+ "gl": {
+ "code": "gl",
+ "name": "Galisieg"
+ },
+ "lg": {
+ "code": "lg",
+ "name": "Ganda"
+ },
+ "ka": {
+ "code": "ka",
+ "name": "Georgeg"
+ },
+ "el": {
+ "code": "el",
+ "name": "Groeg"
+ },
+ "guz": {
+ "code": "guz",
+ "name": "Gusii"
+ },
+ "gu": {
+ "code": "gu",
+ "name": "Gwjarati"
+ },
+ "ga": {
+ "code": "ga",
+ "name": "Gwyddeleg"
+ },
+ "jgo": {
+ "code": "jgo",
+ "name": "Ngomba"
+ },
+ "ha": {
+ "code": "ha",
+ "name": "Hawsa"
+ },
+ "he": {
+ "code": "he",
+ "name": "Hebraeg"
+ },
+ "hi": {
+ "code": "hi",
+ "name": "Hindi"
+ },
+ "hu": {
+ "code": "hu",
+ "name": "Hwngareg"
+ },
+ "id": {
+ "code": "id",
+ "name": "Indoneseg"
+ },
+ "yo": {
+ "code": "yo",
+ "name": "Iorwba"
+ },
+ "nl": {
+ "code": "nl",
+ "name": "Iseldireg"
+ },
+ "is": {
+ "code": "is",
+ "name": "Islandeg"
+ },
+ "ja": {
+ "code": "ja",
+ "name": "Japaneeg"
+ },
+ "dyo": {
+ "code": "dyo",
+ "name": "Jola-Fonyi"
+ },
+ "kl": {
+ "code": "kl",
+ "name": "Kalaallisut"
+ },
+ "kln": {
+ "code": "kln",
+ "name": "Kalenjin"
+ },
+ "kn": {
+ "code": "kn",
+ "name": "Kannada"
+ },
+ "ki": {
+ "code": "ki",
+ "name": "Kikuyu"
+ },
+ "khq": {
+ "code": "khq",
+ "name": "Koyra Chiini"
+ },
+ "ses": {
+ "code": "ses",
+ "name": "Koyraboro Senni"
+ },
+ "nmg": {
+ "code": "nmg",
+ "name": "Kwasio"
+ },
+ "lag": {
+ "code": "lag",
+ "name": "Langi"
+ },
+ "lo": {
+ "code": "lo",
+ "name": "Laoeg"
+ },
+ "lv": {
+ "code": "lv",
+ "name": "Latfieg"
+ },
+ "ln": {
+ "code": "ln",
+ "name": "Lingala"
+ },
+ "lt": {
+ "code": "lt",
+ "name": "Lithwaneg"
+ },
+ "lu": {
+ "code": "lu",
+ "name": "Luba-Katanga"
+ },
+ "lb": {
+ "code": "lb",
+ "name": "Lwcsembwrgeg"
+ },
+ "luo": {
+ "code": "luo",
+ "name": "Lŵo"
+ },
+ "luy": {
+ "code": "luy",
+ "name": "Lwyia"
+ },
+ "br": {
+ "code": "br",
+ "name": "Llydaweg"
+ },
+ "mk": {
+ "code": "mk",
+ "name": "Macedoneg"
+ },
+ "kde": {
+ "code": "kde",
+ "name": "Macondeg"
+ },
+ "mgh": {
+ "code": "mgh",
+ "name": "Makhuwa-Meetto"
+ },
+ "mg": {
+ "code": "mg",
+ "name": "Malagaseg"
+ },
+ "ml": {
+ "code": "ml",
+ "name": "Malayalam"
+ },
+ "ms": {
+ "code": "ms",
+ "name": "Maleieg"
+ },
+ "mt": {
+ "code": "mt",
+ "name": "Malteg"
+ },
+ "mr": {
+ "code": "mr",
+ "name": "Marathi"
+ },
+ "mua": {
+ "code": "mua",
+ "name": "Mas"
+ },
+ "mas": {
+ "code": "mas",
+ "name": "Masai"
+ },
+ "jmc": {
+ "code": "jmc",
+ "name": "Matsiame"
+ },
+ "mer": {
+ "code": "mer",
+ "name": "Mêrw"
+ },
+ "mn": {
+ "code": "mn",
+ "name": "Mongoleg"
+ },
+ "ro-MD": {
+ "code": "ro-MD",
+ "name": "Moldofeg"
+ },
+ "mfe": {
+ "code": "mfe",
+ "name": "Morisyen"
+ },
+ "naq": {
+ "code": "naq",
+ "name": "Nama"
+ },
+ "nd": {
+ "code": "nd",
+ "name": "Ndebele Gogleddol"
+ },
+ "ne": {
+ "code": "ne",
+ "name": "Nepaleg"
+ },
+ "nyn": {
+ "code": "nyn",
+ "name": "Niancole"
+ },
+ "nb": {
+ "code": "nb",
+ "name": "Norwyeg Bokmål"
+ },
+ "nn": {
+ "code": "nn",
+ "name": "Norwyeg Nynorsk"
+ },
+ "nus": {
+ "code": "nus",
+ "name": "Nŵereg"
+ },
+ "or": {
+ "code": "or",
+ "name": "Oriya"
+ },
+ "ps": {
+ "code": "ps",
+ "name": "Pashto"
+ },
+ "fa": {
+ "code": "fa",
+ "name": "Perseg"
+ },
+ "pt": {
+ "code": "pt",
+ "name": "Portiwgeeg"
+ },
+ "pt-BR": {
+ "code": "pt-BR",
+ "name": "Portiwgeeg Brasil"
+ },
+ "pt-PT": {
+ "code": "pt-PT",
+ "name": "Portiwgeeg Ewrop"
+ },
+ "pa": {
+ "code": "pa",
+ "name": "Pwnjabeg"
+ },
+ "pl": {
+ "code": "pl",
+ "name": "Pwyleg"
+ },
+ "rm": {
+ "code": "rm",
+ "name": "Romaunsch"
+ },
+ "rof": {
+ "code": "rof",
+ "name": "Rombo"
+ },
+ "rwk": {
+ "code": "rwk",
+ "name": "Rwa"
+ },
+ "ro": {
+ "code": "ro",
+ "name": "Rwmaneg"
+ },
+ "rn": {
+ "code": "rn",
+ "name": "Rwndi"
+ },
+ "ru": {
+ "code": "ru",
+ "name": "Rwseg"
+ },
+ "en": {
+ "code": "en",
+ "name": "Saesneg"
+ },
+ "en-US": {
+ "code": "en-US",
+ "name": "Saesneg America"
+ },
+ "en-AU": {
+ "code": "en-AU",
+ "name": "Saesneg Awstralia"
+ },
+ "en-CA": {
+ "code": "en-CA",
+ "name": "Saesneg Canada"
+ },
+ "en-GB": {
+ "code": "en-GB",
+ "name": "Saesneg Prydain"
+ },
+ "sg": {
+ "code": "sg",
+ "name": "Sango"
+ },
+ "sbp": {
+ "code": "sbp",
+ "name": "Sangw"
+ },
+ "saq": {
+ "code": "saq",
+ "name": "Sambŵrw"
+ },
+ "se": {
+ "code": "se",
+ "name": "Sami Gogleddol"
+ },
+ "es": {
+ "code": "es",
+ "name": "Sbaeneg"
+ },
+ "es-ES": {
+ "code": "es-ES",
+ "name": "Sbaeneg Ewrop"
+ },
+ "es-MX": {
+ "code": "es-MX",
+ "name": "Sbaeneg Mecsico"
+ },
+ "seh": {
+ "code": "seh",
+ "name": "Sena"
+ },
+ "sr": {
+ "code": "sr",
+ "name": "Serbeg"
+ },
+ "ksb": {
+ "code": "ksb",
+ "name": "Shambala"
+ },
+ "sn": {
+ "code": "sn",
+ "name": "Shona"
+ },
+ "si": {
+ "code": "si",
+ "name": "Sinhaleg"
+ },
+ "sk": {
+ "code": "sk",
+ "name": "Slofaceg"
+ },
+ "sl": {
+ "code": "sl",
+ "name": "Slofeneg"
+ },
+ "xog": {
+ "code": "xog",
+ "name": "Soga"
+ },
+ "so": {
+ "code": "so",
+ "name": "Somaleg"
+ },
+ "dsb": {
+ "code": "dsb",
+ "name": "Sorbeg Isaf"
+ },
+ "hsb": {
+ "code": "hsb",
+ "name": "Sorbeg Uchaf"
+ },
+ "sw": {
+ "code": "sw",
+ "name": "Swahili"
+ },
+ "swc": {
+ "code": "swc",
+ "name": "Swahili’r Congo"
+ },
+ "sv": {
+ "code": "sv",
+ "name": "Swedeg"
+ },
+ "zu": {
+ "code": "zu",
+ "name": "Swlw"
+ },
+ "shi": {
+ "code": "shi",
+ "name": "Tachelhit"
+ },
+ "dav": {
+ "code": "dav",
+ "name": "Taita"
+ },
+ "zgh": {
+ "code": "zgh",
+ "name": "Tamazight Safonol Moroco"
+ },
+ "ta": {
+ "code": "ta",
+ "name": "Tamileg"
+ },
+ "twq": {
+ "code": "twq",
+ "name": "Tasawaq"
+ },
+ "te": {
+ "code": "te",
+ "name": "Telugu"
+ },
+ "teo": {
+ "code": "teo",
+ "name": "Teso"
+ },
+ "bo": {
+ "code": "bo",
+ "name": "Tibeteg"
+ },
+ "ti": {
+ "code": "ti",
+ "name": "Tigrinya"
+ },
+ "to": {
+ "code": "to",
+ "name": "Tongeg"
+ },
+ "cs": {
+ "code": "cs",
+ "name": "Tsieceg"
+ },
+ "zh": {
+ "code": "zh",
+ "name": "Tsieineeg"
+ },
+ "zh-Hans": {
+ "code": "zh-Hans",
+ "name": "Tsieineeg Symledig"
+ },
+ "zh-Hant": {
+ "code": "zh-Hant",
+ "name": "Tsieineeg Traddodiadol"
+ },
+ "chr": {
+ "code": "chr",
+ "name": "Tsierocî"
+ },
+ "tr": {
+ "code": "tr",
+ "name": "Tyrceg"
+ },
+ "th": {
+ "code": "th",
+ "name": "Thai"
+ },
+ "ug": {
+ "code": "ug",
+ "name": "Uighur"
+ },
+ "vun": {
+ "code": "vun",
+ "name": "Vunjo"
+ },
+ "wae": {
+ "code": "wae",
+ "name": "Walser"
+ },
+ "uk": {
+ "code": "uk",
+ "name": "Wcreineg"
+ },
+ "ur": {
+ "code": "ur",
+ "name": "Wrdw"
+ },
+ "uz": {
+ "code": "uz",
+ "name": "Wsbeceg"
+ },
+ "yav": {
+ "code": "yav",
+ "name": "Yangben"
+ },
+ "dje": {
+ "code": "dje",
+ "name": "Zarmaeg"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/language/da.json b/library/intl/resources/language/da.json
new file mode 100644
index 000000000..444b19ecd
--- /dev/null
+++ b/library/intl/resources/language/da.json
@@ -0,0 +1,738 @@
+{
+ "af": {
+ "code": "af",
+ "name": "afrikaans"
+ },
+ "agq": {
+ "code": "agq",
+ "name": "aghem"
+ },
+ "ak": {
+ "code": "ak",
+ "name": "akan"
+ },
+ "sq": {
+ "code": "sq",
+ "name": "albansk"
+ },
+ "en-US": {
+ "code": "en-US",
+ "name": "amerikansk engelsk"
+ },
+ "am": {
+ "code": "am",
+ "name": "amharisk"
+ },
+ "ar": {
+ "code": "ar",
+ "name": "arabisk"
+ },
+ "hy": {
+ "code": "hy",
+ "name": "armensk"
+ },
+ "az": {
+ "code": "az",
+ "name": "aserbajdsjansk"
+ },
+ "ast": {
+ "code": "ast",
+ "name": "asturisk"
+ },
+ "asa": {
+ "code": "asa",
+ "name": "asu"
+ },
+ "en-AU": {
+ "code": "en-AU",
+ "name": "australsk engelsk"
+ },
+ "ksf": {
+ "code": "ksf",
+ "name": "bafia"
+ },
+ "bm": {
+ "code": "bm",
+ "name": "bambara"
+ },
+ "bas": {
+ "code": "bas",
+ "name": "basa"
+ },
+ "eu": {
+ "code": "eu",
+ "name": "baskisk"
+ },
+ "bez": {
+ "code": "bez",
+ "name": "bena"
+ },
+ "bn": {
+ "code": "bn",
+ "name": "bengali"
+ },
+ "brx": {
+ "code": "brx",
+ "name": "bodo"
+ },
+ "bs": {
+ "code": "bs",
+ "name": "bosnisk"
+ },
+ "pt-BR": {
+ "code": "pt-BR",
+ "name": "brasiliansk portugisisk"
+ },
+ "br": {
+ "code": "br",
+ "name": "bretonsk"
+ },
+ "en-GB": {
+ "code": "en-GB",
+ "name": "britisk engelsk"
+ },
+ "bg": {
+ "code": "bg",
+ "name": "bulgarsk"
+ },
+ "my": {
+ "code": "my",
+ "name": "burmesisk"
+ },
+ "en-CA": {
+ "code": "en-CA",
+ "name": "canadisk engelsk"
+ },
+ "fr-CA": {
+ "code": "fr-CA",
+ "name": "canadisk fransk"
+ },
+ "ca": {
+ "code": "ca",
+ "name": "catalansk"
+ },
+ "tzm": {
+ "code": "tzm",
+ "name": "centralmarokkansk tamazight"
+ },
+ "chr": {
+ "code": "chr",
+ "name": "cherokee"
+ },
+ "cgg": {
+ "code": "cgg",
+ "name": "chiga"
+ },
+ "swc": {
+ "code": "swc",
+ "name": "congolesisk swahili"
+ },
+ "da": {
+ "code": "da",
+ "name": "dansk"
+ },
+ "dz": {
+ "code": "dz",
+ "name": "dzongkha"
+ },
+ "en": {
+ "code": "en",
+ "name": "engelsk"
+ },
+ "eo": {
+ "code": "eo",
+ "name": "esperanto"
+ },
+ "et": {
+ "code": "et",
+ "name": "estisk"
+ },
+ "pt-PT": {
+ "code": "pt-PT",
+ "name": "europæisk portugisisk"
+ },
+ "es-ES": {
+ "code": "es-ES",
+ "name": "europæisk spansk"
+ },
+ "ee": {
+ "code": "ee",
+ "name": "ewe"
+ },
+ "ewo": {
+ "code": "ewo",
+ "name": "ewondo"
+ },
+ "fil": {
+ "code": "fil",
+ "name": "filippinsk"
+ },
+ "fi": {
+ "code": "fi",
+ "name": "finsk"
+ },
+ "nl-BE": {
+ "code": "nl-BE",
+ "name": "flamsk"
+ },
+ "zh-Hans": {
+ "code": "zh-Hans",
+ "name": "forenklet kinesisk"
+ },
+ "fr": {
+ "code": "fr",
+ "name": "fransk"
+ },
+ "fy": {
+ "code": "fy",
+ "name": "frisisk"
+ },
+ "fur": {
+ "code": "fur",
+ "name": "friulian"
+ },
+ "ff": {
+ "code": "ff",
+ "name": "fulah"
+ },
+ "fo": {
+ "code": "fo",
+ "name": "færøsk"
+ },
+ "gl": {
+ "code": "gl",
+ "name": "galicisk"
+ },
+ "lg": {
+ "code": "lg",
+ "name": "ganda"
+ },
+ "ka": {
+ "code": "ka",
+ "name": "georgisk"
+ },
+ "el": {
+ "code": "el",
+ "name": "græsk"
+ },
+ "kl": {
+ "code": "kl",
+ "name": "grønlandsk"
+ },
+ "gu": {
+ "code": "gu",
+ "name": "gujarati"
+ },
+ "guz": {
+ "code": "guz",
+ "name": "gusii"
+ },
+ "ha": {
+ "code": "ha",
+ "name": "hausa"
+ },
+ "he": {
+ "code": "he",
+ "name": "hebraisk"
+ },
+ "hi": {
+ "code": "hi",
+ "name": "hindi"
+ },
+ "nl": {
+ "code": "nl",
+ "name": "hollandsk"
+ },
+ "be": {
+ "code": "be",
+ "name": "hviderussisk"
+ },
+ "id": {
+ "code": "id",
+ "name": "indonesisk"
+ },
+ "ga": {
+ "code": "ga",
+ "name": "irsk"
+ },
+ "is": {
+ "code": "is",
+ "name": "islandsk"
+ },
+ "it": {
+ "code": "it",
+ "name": "italiensk"
+ },
+ "ja": {
+ "code": "ja",
+ "name": "japansk"
+ },
+ "dyo": {
+ "code": "dyo",
+ "name": "jola-fonyi"
+ },
+ "kab": {
+ "code": "kab",
+ "name": "kabylisk"
+ },
+ "kln": {
+ "code": "kln",
+ "name": "kalenjin"
+ },
+ "kam": {
+ "code": "kam",
+ "name": "kamba"
+ },
+ "kn": {
+ "code": "kn",
+ "name": "kannada"
+ },
+ "kea": {
+ "code": "kea",
+ "name": "kapverdisk"
+ },
+ "kk": {
+ "code": "kk",
+ "name": "kasakhisk"
+ },
+ "ks": {
+ "code": "ks",
+ "name": "kashmiri"
+ },
+ "km": {
+ "code": "km",
+ "name": "khmer"
+ },
+ "ebu": {
+ "code": "ebu",
+ "name": "kiembu"
+ },
+ "ki": {
+ "code": "ki",
+ "name": "kikuyu"
+ },
+ "zh": {
+ "code": "zh",
+ "name": "kinesisk"
+ },
+ "ky": {
+ "code": "ky",
+ "name": "kirgisisk"
+ },
+ "ko": {
+ "code": "ko",
+ "name": "koreansk"
+ },
+ "khq": {
+ "code": "khq",
+ "name": "koyra-chiini"
+ },
+ "ses": {
+ "code": "ses",
+ "name": "koyraboro senni"
+ },
+ "hr": {
+ "code": "hr",
+ "name": "kroatisk"
+ },
+ "nmg": {
+ "code": "nmg",
+ "name": "kwasio"
+ },
+ "ksh": {
+ "code": "ksh",
+ "name": "kölsch"
+ },
+ "lag": {
+ "code": "lag",
+ "name": "langi"
+ },
+ "lo": {
+ "code": "lo",
+ "name": "lao"
+ },
+ "lv": {
+ "code": "lv",
+ "name": "lettisk"
+ },
+ "ln": {
+ "code": "ln",
+ "name": "lingala"
+ },
+ "lt": {
+ "code": "lt",
+ "name": "litauisk"
+ },
+ "lu": {
+ "code": "lu",
+ "name": "luba-Katanga"
+ },
+ "luo": {
+ "code": "luo",
+ "name": "Luo"
+ },
+ "lb": {
+ "code": "lb",
+ "name": "luxembourgsk"
+ },
+ "luy": {
+ "code": "luy",
+ "name": "luyana"
+ },
+ "jmc": {
+ "code": "jmc",
+ "name": "machame"
+ },
+ "mk": {
+ "code": "mk",
+ "name": "makedonsk"
+ },
+ "mgh": {
+ "code": "mgh",
+ "name": "makhuwa-meetto"
+ },
+ "kde": {
+ "code": "kde",
+ "name": "makonde"
+ },
+ "mg": {
+ "code": "mg",
+ "name": "malagassisk"
+ },
+ "ms": {
+ "code": "ms",
+ "name": "malay"
+ },
+ "ml": {
+ "code": "ml",
+ "name": "malayalam"
+ },
+ "mt": {
+ "code": "mt",
+ "name": "maltesisk"
+ },
+ "mr": {
+ "code": "mr",
+ "name": "marathisk"
+ },
+ "mas": {
+ "code": "mas",
+ "name": "masai"
+ },
+ "mer": {
+ "code": "mer",
+ "name": "meru"
+ },
+ "es-MX": {
+ "code": "es-MX",
+ "name": "mexicansk spansk"
+ },
+ "ar-001": {
+ "code": "ar-001",
+ "name": "moderne standardarabisk"
+ },
+ "ro-MD": {
+ "code": "ro-MD",
+ "name": "moldovisk"
+ },
+ "mn": {
+ "code": "mn",
+ "name": "mongolsk"
+ },
+ "mfe": {
+ "code": "mfe",
+ "name": "morisyen"
+ },
+ "mua": {
+ "code": "mua",
+ "name": "mundang"
+ },
+ "naq": {
+ "code": "naq",
+ "name": "nama"
+ },
+ "dsb": {
+ "code": "dsb",
+ "name": "nedersorbisk"
+ },
+ "ne": {
+ "code": "ne",
+ "name": "nepalesisk"
+ },
+ "jgo": {
+ "code": "jgo",
+ "name": "ngomba"
+ },
+ "nd": {
+ "code": "nd",
+ "name": "nordndebele"
+ },
+ "se": {
+ "code": "se",
+ "name": "nordsamisk"
+ },
+ "nb": {
+ "code": "nb",
+ "name": "norsk bokmål"
+ },
+ "nus": {
+ "code": "nus",
+ "name": "nuer"
+ },
+ "nyn": {
+ "code": "nyn",
+ "name": "nyankole"
+ },
+ "nn": {
+ "code": "nn",
+ "name": "nynorsk"
+ },
+ "or": {
+ "code": "or",
+ "name": "oriya"
+ },
+ "ps": {
+ "code": "ps",
+ "name": "pashto"
+ },
+ "fa": {
+ "code": "fa",
+ "name": "persisk"
+ },
+ "pl": {
+ "code": "pl",
+ "name": "polsk"
+ },
+ "pt": {
+ "code": "pt",
+ "name": "portugisisk"
+ },
+ "pa": {
+ "code": "pa",
+ "name": "punjabi"
+ },
+ "rof": {
+ "code": "rof",
+ "name": "rombo"
+ },
+ "ro": {
+ "code": "ro",
+ "name": "rumænsk"
+ },
+ "rn": {
+ "code": "rn",
+ "name": "rundi"
+ },
+ "ru": {
+ "code": "ru",
+ "name": "russisk"
+ },
+ "rwk": {
+ "code": "rwk",
+ "name": "rwa"
+ },
+ "rm": {
+ "code": "rm",
+ "name": "rætoromansk"
+ },
+ "saq": {
+ "code": "saq",
+ "name": "samburu"
+ },
+ "sg": {
+ "code": "sg",
+ "name": "sango"
+ },
+ "sbp": {
+ "code": "sbp",
+ "name": "sangu"
+ },
+ "de-CH": {
+ "code": "de-CH",
+ "name": "schweizerhøjtysk"
+ },
+ "gsw": {
+ "code": "gsw",
+ "name": "schweizertysk"
+ },
+ "fr-CH": {
+ "code": "fr-CH",
+ "name": "schweizisk fransk"
+ },
+ "seh": {
+ "code": "seh",
+ "name": "sena"
+ },
+ "sr": {
+ "code": "sr",
+ "name": "serbisk"
+ },
+ "ksb": {
+ "code": "ksb",
+ "name": "shambala"
+ },
+ "sn": {
+ "code": "sn",
+ "name": "shona"
+ },
+ "si": {
+ "code": "si",
+ "name": "singalesisk"
+ },
+ "gd": {
+ "code": "gd",
+ "name": "skotsk gælisk"
+ },
+ "sk": {
+ "code": "sk",
+ "name": "slovakisk"
+ },
+ "sl": {
+ "code": "sl",
+ "name": "slovensk"
+ },
+ "xog": {
+ "code": "xog",
+ "name": "soga"
+ },
+ "so": {
+ "code": "so",
+ "name": "somalisk"
+ },
+ "es": {
+ "code": "es",
+ "name": "spansk"
+ },
+ "sv": {
+ "code": "sv",
+ "name": "svensk"
+ },
+ "sw": {
+ "code": "sw",
+ "name": "swahili"
+ },
+ "shi": {
+ "code": "shi",
+ "name": "tachelhit"
+ },
+ "dav": {
+ "code": "dav",
+ "name": "taita"
+ },
+ "zgh": {
+ "code": "zgh",
+ "name": "tamazight"
+ },
+ "ta": {
+ "code": "ta",
+ "name": "tamilsk"
+ },
+ "twq": {
+ "code": "twq",
+ "name": "tasawaq"
+ },
+ "te": {
+ "code": "te",
+ "name": "telugu"
+ },
+ "teo": {
+ "code": "teo",
+ "name": "teso"
+ },
+ "th": {
+ "code": "th",
+ "name": "thailandsk"
+ },
+ "bo": {
+ "code": "bo",
+ "name": "tibetansk"
+ },
+ "ti": {
+ "code": "ti",
+ "name": "tigrinya"
+ },
+ "cs": {
+ "code": "cs",
+ "name": "tjekkisk"
+ },
+ "to": {
+ "code": "to",
+ "name": "tongansk"
+ },
+ "zh-Hant": {
+ "code": "zh-Hant",
+ "name": "traditionelt kinesisk"
+ },
+ "tr": {
+ "code": "tr",
+ "name": "tyrkisk"
+ },
+ "de": {
+ "code": "de",
+ "name": "tysk"
+ },
+ "uk": {
+ "code": "uk",
+ "name": "ukrainsk"
+ },
+ "hu": {
+ "code": "hu",
+ "name": "ungarsk"
+ },
+ "ur": {
+ "code": "ur",
+ "name": "urdu"
+ },
+ "uz": {
+ "code": "uz",
+ "name": "usbekisk"
+ },
+ "ug": {
+ "code": "ug",
+ "name": "uygurisk"
+ },
+ "vai": {
+ "code": "vai",
+ "name": "Vai"
+ },
+ "vi": {
+ "code": "vi",
+ "name": "vietnamesisk"
+ },
+ "vun": {
+ "code": "vun",
+ "name": "vunjo"
+ },
+ "cy": {
+ "code": "cy",
+ "name": "walisisk"
+ },
+ "wae": {
+ "code": "wae",
+ "name": "walsertysk"
+ },
+ "yav": {
+ "code": "yav",
+ "name": "yangben"
+ },
+ "yo": {
+ "code": "yo",
+ "name": "yoruba"
+ },
+ "dje": {
+ "code": "dje",
+ "name": "zarma"
+ },
+ "zu": {
+ "code": "zu",
+ "name": "zulu"
+ },
+ "de-AT": {
+ "code": "de-AT",
+ "name": "østrigsk tysk"
+ },
+ "hsb": {
+ "code": "hsb",
+ "name": "øvresorbisk"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/language/dav.json b/library/intl/resources/language/dav.json
new file mode 100644
index 000000000..46ce96046
--- /dev/null
+++ b/library/intl/resources/language/dav.json
@@ -0,0 +1,738 @@
+{
+ "af": {
+ "code": "af",
+ "name": "Afrikaans"
+ },
+ "agq": {
+ "code": "agq",
+ "name": "Aghem"
+ },
+ "sq": {
+ "code": "sq",
+ "name": "Albanian"
+ },
+ "ar-001": {
+ "code": "ar-001",
+ "name": "ar_001"
+ },
+ "hy": {
+ "code": "hy",
+ "name": "Armenian"
+ },
+ "ast": {
+ "code": "ast",
+ "name": "Asturian"
+ },
+ "asa": {
+ "code": "asa",
+ "name": "Asu"
+ },
+ "az": {
+ "code": "az",
+ "name": "Azerbaijani"
+ },
+ "ksf": {
+ "code": "ksf",
+ "name": "Bafia"
+ },
+ "bm": {
+ "code": "bm",
+ "name": "Bambara"
+ },
+ "bas": {
+ "code": "bas",
+ "name": "Basaa"
+ },
+ "eu": {
+ "code": "eu",
+ "name": "Basque"
+ },
+ "bez": {
+ "code": "bez",
+ "name": "Bena"
+ },
+ "brx": {
+ "code": "brx",
+ "name": "Bodo"
+ },
+ "bs": {
+ "code": "bs",
+ "name": "Bosnian"
+ },
+ "br": {
+ "code": "br",
+ "name": "Breton"
+ },
+ "ca": {
+ "code": "ca",
+ "name": "Catalan"
+ },
+ "tzm": {
+ "code": "tzm",
+ "name": "Central Atlas Tamazight"
+ },
+ "chr": {
+ "code": "chr",
+ "name": "Cherokee"
+ },
+ "cgg": {
+ "code": "cgg",
+ "name": "Chiga"
+ },
+ "ksh": {
+ "code": "ksh",
+ "name": "Colognian"
+ },
+ "swc": {
+ "code": "swc",
+ "name": "Congo Swahili"
+ },
+ "hr": {
+ "code": "hr",
+ "name": "Croatian"
+ },
+ "da": {
+ "code": "da",
+ "name": "Danish"
+ },
+ "de-AT": {
+ "code": "de-AT",
+ "name": "de_AT"
+ },
+ "de-CH": {
+ "code": "de-CH",
+ "name": "de_CH"
+ },
+ "dz": {
+ "code": "dz",
+ "name": "Dzongkha"
+ },
+ "ebu": {
+ "code": "ebu",
+ "name": "Embu"
+ },
+ "en-AU": {
+ "code": "en-AU",
+ "name": "en_AU"
+ },
+ "en-CA": {
+ "code": "en-CA",
+ "name": "en_CA"
+ },
+ "en-GB": {
+ "code": "en-GB",
+ "name": "en_GB"
+ },
+ "en-US": {
+ "code": "en-US",
+ "name": "en_US"
+ },
+ "es-ES": {
+ "code": "es-ES",
+ "name": "es_ES"
+ },
+ "es-MX": {
+ "code": "es-MX",
+ "name": "es_MX"
+ },
+ "eo": {
+ "code": "eo",
+ "name": "Esperanto"
+ },
+ "et": {
+ "code": "et",
+ "name": "Estonian"
+ },
+ "ee": {
+ "code": "ee",
+ "name": "Ewe"
+ },
+ "ewo": {
+ "code": "ewo",
+ "name": "Ewondo"
+ },
+ "fo": {
+ "code": "fo",
+ "name": "Faroese"
+ },
+ "fil": {
+ "code": "fil",
+ "name": "Filipino"
+ },
+ "fi": {
+ "code": "fi",
+ "name": "Finnish"
+ },
+ "fr-CA": {
+ "code": "fr-CA",
+ "name": "fr_CA"
+ },
+ "fr-CH": {
+ "code": "fr-CH",
+ "name": "fr_CH"
+ },
+ "fur": {
+ "code": "fur",
+ "name": "Friulian"
+ },
+ "ff": {
+ "code": "ff",
+ "name": "Fulah"
+ },
+ "gl": {
+ "code": "gl",
+ "name": "Galician"
+ },
+ "lg": {
+ "code": "lg",
+ "name": "Ganda"
+ },
+ "ka": {
+ "code": "ka",
+ "name": "Georgian"
+ },
+ "gu": {
+ "code": "gu",
+ "name": "Gujarati"
+ },
+ "guz": {
+ "code": "guz",
+ "name": "Gusii"
+ },
+ "he": {
+ "code": "he",
+ "name": "Hebrew"
+ },
+ "is": {
+ "code": "is",
+ "name": "Icelandic"
+ },
+ "ga": {
+ "code": "ga",
+ "name": "Irish"
+ },
+ "dyo": {
+ "code": "dyo",
+ "name": "Jola-Fonyi"
+ },
+ "kea": {
+ "code": "kea",
+ "name": "Kabuverdianu"
+ },
+ "kab": {
+ "code": "kab",
+ "name": "Kabyle"
+ },
+ "kl": {
+ "code": "kl",
+ "name": "Kalaallisut"
+ },
+ "kln": {
+ "code": "kln",
+ "name": "Kalenjin"
+ },
+ "kam": {
+ "code": "kam",
+ "name": "Kamba"
+ },
+ "kn": {
+ "code": "kn",
+ "name": "Kannada"
+ },
+ "ks": {
+ "code": "ks",
+ "name": "Kashmiri"
+ },
+ "kk": {
+ "code": "kk",
+ "name": "Kazakh"
+ },
+ "fa": {
+ "code": "fa",
+ "name": "Kiajemi"
+ },
+ "ak": {
+ "code": "ak",
+ "name": "Kiakan"
+ },
+ "am": {
+ "code": "am",
+ "name": "Kiamhari"
+ },
+ "ar": {
+ "code": "ar",
+ "name": "Kiarabu"
+ },
+ "bn": {
+ "code": "bn",
+ "name": "Kibangla"
+ },
+ "be": {
+ "code": "be",
+ "name": "Kibelarusi"
+ },
+ "bg": {
+ "code": "bg",
+ "name": "Kibulgaria"
+ },
+ "my": {
+ "code": "my",
+ "name": "Kiburma"
+ },
+ "cs": {
+ "code": "cs",
+ "name": "Kichecki"
+ },
+ "zh": {
+ "code": "zh",
+ "name": "Kichina"
+ },
+ "fr": {
+ "code": "fr",
+ "name": "Kifaransa"
+ },
+ "el": {
+ "code": "el",
+ "name": "Kigiriki"
+ },
+ "ha": {
+ "code": "ha",
+ "name": "Kihausa"
+ },
+ "hi": {
+ "code": "hi",
+ "name": "Kihindi"
+ },
+ "es": {
+ "code": "es",
+ "name": "Kihispania"
+ },
+ "nl": {
+ "code": "nl",
+ "name": "Kiholanzi"
+ },
+ "hu": {
+ "code": "hu",
+ "name": "Kihungari"
+ },
+ "id": {
+ "code": "id",
+ "name": "Kiindonesia"
+ },
+ "it": {
+ "code": "it",
+ "name": "Kiitaliano"
+ },
+ "ja": {
+ "code": "ja",
+ "name": "Kijapani"
+ },
+ "de": {
+ "code": "de",
+ "name": "Kijerumani"
+ },
+ "km": {
+ "code": "km",
+ "name": "Kikambodia"
+ },
+ "ko": {
+ "code": "ko",
+ "name": "Kikorea"
+ },
+ "ki": {
+ "code": "ki",
+ "name": "Kikuyu"
+ },
+ "ms": {
+ "code": "ms",
+ "name": "Kimalesia"
+ },
+ "ne": {
+ "code": "ne",
+ "name": "Kinepali"
+ },
+ "en": {
+ "code": "en",
+ "name": "Kingereza"
+ },
+ "pl": {
+ "code": "pl",
+ "name": "Kipolandi"
+ },
+ "pa": {
+ "code": "pa",
+ "name": "Kipunjabi"
+ },
+ "pt": {
+ "code": "pt",
+ "name": "Kireno"
+ },
+ "ro": {
+ "code": "ro",
+ "name": "Kiromania"
+ },
+ "ru": {
+ "code": "ru",
+ "name": "Kirusi"
+ },
+ "so": {
+ "code": "so",
+ "name": "Kisomali"
+ },
+ "sv": {
+ "code": "sv",
+ "name": "Kiswidi"
+ },
+ "th": {
+ "code": "th",
+ "name": "Kitailandi"
+ },
+ "dav": {
+ "code": "dav",
+ "name": "Kitaita"
+ },
+ "ta": {
+ "code": "ta",
+ "name": "Kitamil"
+ },
+ "tr": {
+ "code": "tr",
+ "name": "Kituruki"
+ },
+ "uk": {
+ "code": "uk",
+ "name": "Kiukrania"
+ },
+ "ur": {
+ "code": "ur",
+ "name": "Kiurdu"
+ },
+ "vi": {
+ "code": "vi",
+ "name": "Kivietinamu"
+ },
+ "yo": {
+ "code": "yo",
+ "name": "Kiyoruba"
+ },
+ "zu": {
+ "code": "zu",
+ "name": "Kizulu"
+ },
+ "khq": {
+ "code": "khq",
+ "name": "Koyra Chiini"
+ },
+ "ses": {
+ "code": "ses",
+ "name": "Koyraboro Senni"
+ },
+ "nmg": {
+ "code": "nmg",
+ "name": "Kwasio"
+ },
+ "ky": {
+ "code": "ky",
+ "name": "Kyrgyz"
+ },
+ "lag": {
+ "code": "lag",
+ "name": "Langi"
+ },
+ "lo": {
+ "code": "lo",
+ "name": "Lao"
+ },
+ "lv": {
+ "code": "lv",
+ "name": "Latvian"
+ },
+ "ln": {
+ "code": "ln",
+ "name": "Lingala"
+ },
+ "lt": {
+ "code": "lt",
+ "name": "Lithuanian"
+ },
+ "dsb": {
+ "code": "dsb",
+ "name": "Lower Sorbian"
+ },
+ "lu": {
+ "code": "lu",
+ "name": "Luba-Katanga"
+ },
+ "luo": {
+ "code": "luo",
+ "name": "Luo"
+ },
+ "lb": {
+ "code": "lb",
+ "name": "Luxembourgish"
+ },
+ "luy": {
+ "code": "luy",
+ "name": "Luyia"
+ },
+ "mk": {
+ "code": "mk",
+ "name": "Macedonian"
+ },
+ "jmc": {
+ "code": "jmc",
+ "name": "Machame"
+ },
+ "mgh": {
+ "code": "mgh",
+ "name": "Makhuwa-Meetto"
+ },
+ "kde": {
+ "code": "kde",
+ "name": "Makonde"
+ },
+ "mg": {
+ "code": "mg",
+ "name": "Malagasy"
+ },
+ "ml": {
+ "code": "ml",
+ "name": "Malayalam"
+ },
+ "mt": {
+ "code": "mt",
+ "name": "Maltese"
+ },
+ "mr": {
+ "code": "mr",
+ "name": "Marathi"
+ },
+ "mas": {
+ "code": "mas",
+ "name": "Masai"
+ },
+ "mer": {
+ "code": "mer",
+ "name": "Meru"
+ },
+ "mn": {
+ "code": "mn",
+ "name": "Mongolian"
+ },
+ "mfe": {
+ "code": "mfe",
+ "name": "Morisyen"
+ },
+ "mua": {
+ "code": "mua",
+ "name": "Mundang"
+ },
+ "naq": {
+ "code": "naq",
+ "name": "Nama"
+ },
+ "jgo": {
+ "code": "jgo",
+ "name": "Ngomba"
+ },
+ "nl-BE": {
+ "code": "nl-BE",
+ "name": "nl_BE"
+ },
+ "nd": {
+ "code": "nd",
+ "name": "North Ndebele"
+ },
+ "se": {
+ "code": "se",
+ "name": "Northern Sami"
+ },
+ "nb": {
+ "code": "nb",
+ "name": "Norwegian Bokmål"
+ },
+ "nn": {
+ "code": "nn",
+ "name": "Norwegian Nynorsk"
+ },
+ "nus": {
+ "code": "nus",
+ "name": "Nuer"
+ },
+ "nyn": {
+ "code": "nyn",
+ "name": "Nyankole"
+ },
+ "or": {
+ "code": "or",
+ "name": "Oriya"
+ },
+ "ps": {
+ "code": "ps",
+ "name": "Pashto"
+ },
+ "pt-BR": {
+ "code": "pt-BR",
+ "name": "pt_BR"
+ },
+ "pt-PT": {
+ "code": "pt-PT",
+ "name": "pt_PT"
+ },
+ "ro-MD": {
+ "code": "ro-MD",
+ "name": "ro_MD"
+ },
+ "rm": {
+ "code": "rm",
+ "name": "Romansh"
+ },
+ "rof": {
+ "code": "rof",
+ "name": "Rombo"
+ },
+ "rn": {
+ "code": "rn",
+ "name": "Rundi"
+ },
+ "rwk": {
+ "code": "rwk",
+ "name": "Rwa"
+ },
+ "saq": {
+ "code": "saq",
+ "name": "Samburu"
+ },
+ "sg": {
+ "code": "sg",
+ "name": "Sango"
+ },
+ "sbp": {
+ "code": "sbp",
+ "name": "Sangu"
+ },
+ "gd": {
+ "code": "gd",
+ "name": "Scottish Gaelic"
+ },
+ "seh": {
+ "code": "seh",
+ "name": "Sena"
+ },
+ "sr": {
+ "code": "sr",
+ "name": "Serbian"
+ },
+ "ksb": {
+ "code": "ksb",
+ "name": "Shambala"
+ },
+ "sn": {
+ "code": "sn",
+ "name": "Shona"
+ },
+ "si": {
+ "code": "si",
+ "name": "Sinhala"
+ },
+ "sk": {
+ "code": "sk",
+ "name": "Slovak"
+ },
+ "sl": {
+ "code": "sl",
+ "name": "Slovenian"
+ },
+ "xog": {
+ "code": "xog",
+ "name": "Soga"
+ },
+ "zgh": {
+ "code": "zgh",
+ "name": "Standard Moroccan Tamazight"
+ },
+ "sw": {
+ "code": "sw",
+ "name": "Swahili"
+ },
+ "gsw": {
+ "code": "gsw",
+ "name": "Swiss German"
+ },
+ "shi": {
+ "code": "shi",
+ "name": "Tachelhit"
+ },
+ "twq": {
+ "code": "twq",
+ "name": "Tasawaq"
+ },
+ "te": {
+ "code": "te",
+ "name": "Telugu"
+ },
+ "teo": {
+ "code": "teo",
+ "name": "Teso"
+ },
+ "bo": {
+ "code": "bo",
+ "name": "Tibetan"
+ },
+ "ti": {
+ "code": "ti",
+ "name": "Tigrinya"
+ },
+ "to": {
+ "code": "to",
+ "name": "Tongan"
+ },
+ "hsb": {
+ "code": "hsb",
+ "name": "Upper Sorbian"
+ },
+ "ug": {
+ "code": "ug",
+ "name": "Uyghur"
+ },
+ "uz": {
+ "code": "uz",
+ "name": "Uzbek"
+ },
+ "vai": {
+ "code": "vai",
+ "name": "Vai"
+ },
+ "vun": {
+ "code": "vun",
+ "name": "Vunjo"
+ },
+ "wae": {
+ "code": "wae",
+ "name": "Walser"
+ },
+ "cy": {
+ "code": "cy",
+ "name": "Welsh"
+ },
+ "fy": {
+ "code": "fy",
+ "name": "Western Frisian"
+ },
+ "yav": {
+ "code": "yav",
+ "name": "Yangben"
+ },
+ "dje": {
+ "code": "dje",
+ "name": "Zarma"
+ },
+ "zh-Hans": {
+ "code": "zh-Hans",
+ "name": "zh_Hans"
+ },
+ "zh-Hant": {
+ "code": "zh-Hant",
+ "name": "zh_Hant"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/language/de-CH.json b/library/intl/resources/language/de-CH.json
new file mode 100644
index 000000000..d4711f0d2
--- /dev/null
+++ b/library/intl/resources/language/de-CH.json
@@ -0,0 +1,738 @@
+{
+ "af": {
+ "code": "af",
+ "name": "Afrikaans"
+ },
+ "agq": {
+ "code": "agq",
+ "name": "Aghem"
+ },
+ "ak": {
+ "code": "ak",
+ "name": "Akan"
+ },
+ "sq": {
+ "code": "sq",
+ "name": "Albanisch"
+ },
+ "en-US": {
+ "code": "en-US",
+ "name": "Amerikanisches Englisch"
+ },
+ "am": {
+ "code": "am",
+ "name": "Amharisch"
+ },
+ "ar": {
+ "code": "ar",
+ "name": "Arabisch"
+ },
+ "hy": {
+ "code": "hy",
+ "name": "Armenisch"
+ },
+ "az": {
+ "code": "az",
+ "name": "Aserbaidschanisch"
+ },
+ "ast": {
+ "code": "ast",
+ "name": "Asturianisch"
+ },
+ "en-AU": {
+ "code": "en-AU",
+ "name": "Australisches Englisch"
+ },
+ "ksf": {
+ "code": "ksf",
+ "name": "Bafia"
+ },
+ "bm": {
+ "code": "bm",
+ "name": "Bambara-Sprache"
+ },
+ "bas": {
+ "code": "bas",
+ "name": "Basaa-Sprache"
+ },
+ "eu": {
+ "code": "eu",
+ "name": "Baskisch"
+ },
+ "bez": {
+ "code": "bez",
+ "name": "Bena"
+ },
+ "bn": {
+ "code": "bn",
+ "name": "Bengalisch"
+ },
+ "dz": {
+ "code": "dz",
+ "name": "Bhutanisch"
+ },
+ "my": {
+ "code": "my",
+ "name": "Birmanisch"
+ },
+ "brx": {
+ "code": "brx",
+ "name": "Bodo"
+ },
+ "bs": {
+ "code": "bs",
+ "name": "Bosnisch"
+ },
+ "pt-BR": {
+ "code": "pt-BR",
+ "name": "Brasilianisches Portugiesisch"
+ },
+ "br": {
+ "code": "br",
+ "name": "Bretonisch"
+ },
+ "en-GB": {
+ "code": "en-GB",
+ "name": "Britisches Englisch"
+ },
+ "bg": {
+ "code": "bg",
+ "name": "Bulgarisch"
+ },
+ "chr": {
+ "code": "chr",
+ "name": "Cherokee"
+ },
+ "zh": {
+ "code": "zh",
+ "name": "Chinesisch"
+ },
+ "zh-Hant": {
+ "code": "zh-Hant",
+ "name": "Chinesisch (traditionell)"
+ },
+ "zh-Hans": {
+ "code": "zh-Hans",
+ "name": "Chinesisch (vereinfacht)"
+ },
+ "da": {
+ "code": "da",
+ "name": "Dänisch"
+ },
+ "de": {
+ "code": "de",
+ "name": "Deutsch"
+ },
+ "dyo": {
+ "code": "dyo",
+ "name": "Diola"
+ },
+ "ebu": {
+ "code": "ebu",
+ "name": "Embu"
+ },
+ "en": {
+ "code": "en",
+ "name": "Englisch"
+ },
+ "eo": {
+ "code": "eo",
+ "name": "Esperanto"
+ },
+ "et": {
+ "code": "et",
+ "name": "Estnisch"
+ },
+ "pt-PT": {
+ "code": "pt-PT",
+ "name": "Europäisches Portugiesisch"
+ },
+ "es-ES": {
+ "code": "es-ES",
+ "name": "Europäisches Spanisch"
+ },
+ "ee": {
+ "code": "ee",
+ "name": "Ewe"
+ },
+ "ewo": {
+ "code": "ewo",
+ "name": "Ewondo"
+ },
+ "fo": {
+ "code": "fo",
+ "name": "Färöisch"
+ },
+ "fil": {
+ "code": "fil",
+ "name": "Filipino"
+ },
+ "fi": {
+ "code": "fi",
+ "name": "Finnisch"
+ },
+ "nl-BE": {
+ "code": "nl-BE",
+ "name": "Flämisch"
+ },
+ "fr": {
+ "code": "fr",
+ "name": "Französisch"
+ },
+ "fur": {
+ "code": "fur",
+ "name": "Friulisch"
+ },
+ "ff": {
+ "code": "ff",
+ "name": "Ful"
+ },
+ "gl": {
+ "code": "gl",
+ "name": "Galizisch"
+ },
+ "lg": {
+ "code": "lg",
+ "name": "Ganda"
+ },
+ "ka": {
+ "code": "ka",
+ "name": "Georgisch"
+ },
+ "el": {
+ "code": "el",
+ "name": "Griechisch"
+ },
+ "kl": {
+ "code": "kl",
+ "name": "Grönländisch"
+ },
+ "gu": {
+ "code": "gu",
+ "name": "Gujarati"
+ },
+ "guz": {
+ "code": "guz",
+ "name": "Gusii"
+ },
+ "ha": {
+ "code": "ha",
+ "name": "Hausa"
+ },
+ "he": {
+ "code": "he",
+ "name": "Hebräisch"
+ },
+ "hi": {
+ "code": "hi",
+ "name": "Hindi"
+ },
+ "id": {
+ "code": "id",
+ "name": "Indonesisch"
+ },
+ "ga": {
+ "code": "ga",
+ "name": "Irisch"
+ },
+ "is": {
+ "code": "is",
+ "name": "Isländisch"
+ },
+ "it": {
+ "code": "it",
+ "name": "Italienisch"
+ },
+ "ja": {
+ "code": "ja",
+ "name": "Japanisch"
+ },
+ "kea": {
+ "code": "kea",
+ "name": "Kabuverdianu"
+ },
+ "kab": {
+ "code": "kab",
+ "name": "Kabylisch"
+ },
+ "kln": {
+ "code": "kln",
+ "name": "Kalenjin"
+ },
+ "kam": {
+ "code": "kam",
+ "name": "Kamba"
+ },
+ "km": {
+ "code": "km",
+ "name": "Kambodschanisch"
+ },
+ "en-CA": {
+ "code": "en-CA",
+ "name": "Kanadisches Englisch"
+ },
+ "fr-CA": {
+ "code": "fr-CA",
+ "name": "Kanadisches Französisch"
+ },
+ "kn": {
+ "code": "kn",
+ "name": "Kannada"
+ },
+ "kk": {
+ "code": "kk",
+ "name": "Kasachisch"
+ },
+ "ks": {
+ "code": "ks",
+ "name": "Kaschmirisch"
+ },
+ "ca": {
+ "code": "ca",
+ "name": "Katalanisch"
+ },
+ "ki": {
+ "code": "ki",
+ "name": "Kikuyu"
+ },
+ "ky": {
+ "code": "ky",
+ "name": "Kirgisisch"
+ },
+ "ksh": {
+ "code": "ksh",
+ "name": "Kölsch"
+ },
+ "swc": {
+ "code": "swc",
+ "name": "Kongo-Suaheli"
+ },
+ "ko": {
+ "code": "ko",
+ "name": "Koreanisch"
+ },
+ "khq": {
+ "code": "khq",
+ "name": "Koyra Chiini"
+ },
+ "ses": {
+ "code": "ses",
+ "name": "Koyra Senni"
+ },
+ "hr": {
+ "code": "hr",
+ "name": "Kroatisch"
+ },
+ "nmg": {
+ "code": "nmg",
+ "name": "Kwasio"
+ },
+ "lag": {
+ "code": "lag",
+ "name": "Langi"
+ },
+ "lo": {
+ "code": "lo",
+ "name": "Laotisch"
+ },
+ "lv": {
+ "code": "lv",
+ "name": "Lettisch"
+ },
+ "ln": {
+ "code": "ln",
+ "name": "Lingala"
+ },
+ "lt": {
+ "code": "lt",
+ "name": "Litauisch"
+ },
+ "lu": {
+ "code": "lu",
+ "name": "Luba-Katanga"
+ },
+ "luy": {
+ "code": "luy",
+ "name": "Luhya"
+ },
+ "luo": {
+ "code": "luo",
+ "name": "Luo-Sprache"
+ },
+ "lb": {
+ "code": "lb",
+ "name": "Luxemburgisch"
+ },
+ "jmc": {
+ "code": "jmc",
+ "name": "Machame"
+ },
+ "mg": {
+ "code": "mg",
+ "name": "Madagassisch"
+ },
+ "mgh": {
+ "code": "mgh",
+ "name": "Makhuwa-Meetto"
+ },
+ "kde": {
+ "code": "kde",
+ "name": "Makonde"
+ },
+ "ms": {
+ "code": "ms",
+ "name": "Malaiisch"
+ },
+ "ml": {
+ "code": "ml",
+ "name": "Malayalam"
+ },
+ "mt": {
+ "code": "mt",
+ "name": "Maltesisch"
+ },
+ "mr": {
+ "code": "mr",
+ "name": "Marathi"
+ },
+ "mas": {
+ "code": "mas",
+ "name": "Massai-Sprache"
+ },
+ "mk": {
+ "code": "mk",
+ "name": "Mazedonisch"
+ },
+ "mer": {
+ "code": "mer",
+ "name": "Meru"
+ },
+ "es-MX": {
+ "code": "es-MX",
+ "name": "Mexikanisches Spanisch"
+ },
+ "ar-001": {
+ "code": "ar-001",
+ "name": "Modernes Hocharabisch"
+ },
+ "ro-MD": {
+ "code": "ro-MD",
+ "name": "Moldauisch"
+ },
+ "mn": {
+ "code": "mn",
+ "name": "Mongolisch"
+ },
+ "mfe": {
+ "code": "mfe",
+ "name": "Morisyen"
+ },
+ "mua": {
+ "code": "mua",
+ "name": "Mundang"
+ },
+ "naq": {
+ "code": "naq",
+ "name": "Nama"
+ },
+ "ne": {
+ "code": "ne",
+ "name": "Nepalesisch"
+ },
+ "jgo": {
+ "code": "jgo",
+ "name": "Ngomba"
+ },
+ "nl": {
+ "code": "nl",
+ "name": "Niederländisch"
+ },
+ "dsb": {
+ "code": "dsb",
+ "name": "Niedersorbisch"
+ },
+ "nd": {
+ "code": "nd",
+ "name": "Nord-Ndebele-Sprache"
+ },
+ "se": {
+ "code": "se",
+ "name": "Nord-Samisch"
+ },
+ "nb": {
+ "code": "nb",
+ "name": "Norwegisch Bokmål"
+ },
+ "nn": {
+ "code": "nn",
+ "name": "Norwegisch Nynorsk"
+ },
+ "nus": {
+ "code": "nus",
+ "name": "Nuer"
+ },
+ "nyn": {
+ "code": "nyn",
+ "name": "Nyankole"
+ },
+ "hsb": {
+ "code": "hsb",
+ "name": "Obersorbisch"
+ },
+ "or": {
+ "code": "or",
+ "name": "Oriya"
+ },
+ "de-AT": {
+ "code": "de-AT",
+ "name": "Österreichisches Deutsch"
+ },
+ "pa": {
+ "code": "pa",
+ "name": "Panjabi"
+ },
+ "asa": {
+ "code": "asa",
+ "name": "Pare"
+ },
+ "ps": {
+ "code": "ps",
+ "name": "Paschtu"
+ },
+ "fa": {
+ "code": "fa",
+ "name": "Persisch"
+ },
+ "pl": {
+ "code": "pl",
+ "name": "Polnisch"
+ },
+ "pt": {
+ "code": "pt",
+ "name": "Portugiesisch"
+ },
+ "rm": {
+ "code": "rm",
+ "name": "Rätoromanisch"
+ },
+ "rof": {
+ "code": "rof",
+ "name": "Rombo"
+ },
+ "cgg": {
+ "code": "cgg",
+ "name": "Rukiga"
+ },
+ "ro": {
+ "code": "ro",
+ "name": "Rumänisch"
+ },
+ "rn": {
+ "code": "rn",
+ "name": "Rundi-Sprache"
+ },
+ "ru": {
+ "code": "ru",
+ "name": "Russisch"
+ },
+ "rwk": {
+ "code": "rwk",
+ "name": "Rwa"
+ },
+ "saq": {
+ "code": "saq",
+ "name": "Samburu"
+ },
+ "sg": {
+ "code": "sg",
+ "name": "Sango"
+ },
+ "sbp": {
+ "code": "sbp",
+ "name": "Sangu"
+ },
+ "gd": {
+ "code": "gd",
+ "name": "Schottisches Gälisch"
+ },
+ "sv": {
+ "code": "sv",
+ "name": "Schwedisch"
+ },
+ "fr-CH": {
+ "code": "fr-CH",
+ "name": "Schweizer Französisch"
+ },
+ "de-CH": {
+ "code": "de-CH",
+ "name": "Schweizer Hochdeutsch"
+ },
+ "gsw": {
+ "code": "gsw",
+ "name": "Schweizerdeutsch"
+ },
+ "seh": {
+ "code": "seh",
+ "name": "Sena"
+ },
+ "sr": {
+ "code": "sr",
+ "name": "Serbisch"
+ },
+ "ksb": {
+ "code": "ksb",
+ "name": "Shambala"
+ },
+ "sn": {
+ "code": "sn",
+ "name": "Shona"
+ },
+ "si": {
+ "code": "si",
+ "name": "Singhalesisch"
+ },
+ "sk": {
+ "code": "sk",
+ "name": "Slowakisch"
+ },
+ "sl": {
+ "code": "sl",
+ "name": "Slowenisch"
+ },
+ "xog": {
+ "code": "xog",
+ "name": "Soga"
+ },
+ "so": {
+ "code": "so",
+ "name": "Somali"
+ },
+ "es": {
+ "code": "es",
+ "name": "Spanisch"
+ },
+ "sw": {
+ "code": "sw",
+ "name": "Suaheli"
+ },
+ "dav": {
+ "code": "dav",
+ "name": "Taita"
+ },
+ "zgh": {
+ "code": "zgh",
+ "name": "Tamazight"
+ },
+ "ta": {
+ "code": "ta",
+ "name": "Tamilisch"
+ },
+ "twq": {
+ "code": "twq",
+ "name": "Tasawaq"
+ },
+ "shi": {
+ "code": "shi",
+ "name": "Taschelhit"
+ },
+ "te": {
+ "code": "te",
+ "name": "Telugu"
+ },
+ "teo": {
+ "code": "teo",
+ "name": "Teso"
+ },
+ "th": {
+ "code": "th",
+ "name": "Thailändisch"
+ },
+ "bo": {
+ "code": "bo",
+ "name": "Tibetisch"
+ },
+ "ti": {
+ "code": "ti",
+ "name": "Tigrinja"
+ },
+ "to": {
+ "code": "to",
+ "name": "Tongaisch"
+ },
+ "cs": {
+ "code": "cs",
+ "name": "Tschechisch"
+ },
+ "tr": {
+ "code": "tr",
+ "name": "Türkisch"
+ },
+ "ug": {
+ "code": "ug",
+ "name": "Uigurisch"
+ },
+ "uk": {
+ "code": "uk",
+ "name": "Ukrainisch"
+ },
+ "hu": {
+ "code": "hu",
+ "name": "Ungarisch"
+ },
+ "ur": {
+ "code": "ur",
+ "name": "Urdu"
+ },
+ "uz": {
+ "code": "uz",
+ "name": "Usbekisch"
+ },
+ "vai": {
+ "code": "vai",
+ "name": "Vai"
+ },
+ "vi": {
+ "code": "vi",
+ "name": "Vietnamesisch"
+ },
+ "vun": {
+ "code": "vun",
+ "name": "Vunjo"
+ },
+ "cy": {
+ "code": "cy",
+ "name": "Walisisch"
+ },
+ "wae": {
+ "code": "wae",
+ "name": "Walser-Dialekte"
+ },
+ "be": {
+ "code": "be",
+ "name": "Weissrussisch"
+ },
+ "fy": {
+ "code": "fy",
+ "name": "Westfriesisch"
+ },
+ "yav": {
+ "code": "yav",
+ "name": "Yangben"
+ },
+ "yo": {
+ "code": "yo",
+ "name": "Yoruba"
+ },
+ "dje": {
+ "code": "dje",
+ "name": "Zarma"
+ },
+ "tzm": {
+ "code": "tzm",
+ "name": "Zentralatlas-Tamazight"
+ },
+ "zu": {
+ "code": "zu",
+ "name": "Zulu"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/language/de.json b/library/intl/resources/language/de.json
new file mode 100644
index 000000000..f0d5bd340
--- /dev/null
+++ b/library/intl/resources/language/de.json
@@ -0,0 +1,738 @@
+{
+ "af": {
+ "code": "af",
+ "name": "Afrikaans"
+ },
+ "agq": {
+ "code": "agq",
+ "name": "Aghem"
+ },
+ "ak": {
+ "code": "ak",
+ "name": "Akan"
+ },
+ "sq": {
+ "code": "sq",
+ "name": "Albanisch"
+ },
+ "en-US": {
+ "code": "en-US",
+ "name": "Amerikanisches Englisch"
+ },
+ "am": {
+ "code": "am",
+ "name": "Amharisch"
+ },
+ "ar": {
+ "code": "ar",
+ "name": "Arabisch"
+ },
+ "hy": {
+ "code": "hy",
+ "name": "Armenisch"
+ },
+ "az": {
+ "code": "az",
+ "name": "Aserbaidschanisch"
+ },
+ "ast": {
+ "code": "ast",
+ "name": "Asturianisch"
+ },
+ "en-AU": {
+ "code": "en-AU",
+ "name": "Australisches Englisch"
+ },
+ "ksf": {
+ "code": "ksf",
+ "name": "Bafia"
+ },
+ "bm": {
+ "code": "bm",
+ "name": "Bambara-Sprache"
+ },
+ "bas": {
+ "code": "bas",
+ "name": "Basaa-Sprache"
+ },
+ "eu": {
+ "code": "eu",
+ "name": "Baskisch"
+ },
+ "bez": {
+ "code": "bez",
+ "name": "Bena"
+ },
+ "bn": {
+ "code": "bn",
+ "name": "Bengalisch"
+ },
+ "dz": {
+ "code": "dz",
+ "name": "Bhutanisch"
+ },
+ "my": {
+ "code": "my",
+ "name": "Birmanisch"
+ },
+ "brx": {
+ "code": "brx",
+ "name": "Bodo"
+ },
+ "bs": {
+ "code": "bs",
+ "name": "Bosnisch"
+ },
+ "pt-BR": {
+ "code": "pt-BR",
+ "name": "Brasilianisches Portugiesisch"
+ },
+ "br": {
+ "code": "br",
+ "name": "Bretonisch"
+ },
+ "en-GB": {
+ "code": "en-GB",
+ "name": "Britisches Englisch"
+ },
+ "bg": {
+ "code": "bg",
+ "name": "Bulgarisch"
+ },
+ "chr": {
+ "code": "chr",
+ "name": "Cherokee"
+ },
+ "zh": {
+ "code": "zh",
+ "name": "Chinesisch"
+ },
+ "zh-Hant": {
+ "code": "zh-Hant",
+ "name": "Chinesisch (traditionell)"
+ },
+ "zh-Hans": {
+ "code": "zh-Hans",
+ "name": "Chinesisch (vereinfacht)"
+ },
+ "da": {
+ "code": "da",
+ "name": "Dänisch"
+ },
+ "de": {
+ "code": "de",
+ "name": "Deutsch"
+ },
+ "dyo": {
+ "code": "dyo",
+ "name": "Diola"
+ },
+ "ebu": {
+ "code": "ebu",
+ "name": "Embu"
+ },
+ "en": {
+ "code": "en",
+ "name": "Englisch"
+ },
+ "eo": {
+ "code": "eo",
+ "name": "Esperanto"
+ },
+ "et": {
+ "code": "et",
+ "name": "Estnisch"
+ },
+ "pt-PT": {
+ "code": "pt-PT",
+ "name": "Europäisches Portugiesisch"
+ },
+ "es-ES": {
+ "code": "es-ES",
+ "name": "Europäisches Spanisch"
+ },
+ "ee": {
+ "code": "ee",
+ "name": "Ewe"
+ },
+ "ewo": {
+ "code": "ewo",
+ "name": "Ewondo"
+ },
+ "fo": {
+ "code": "fo",
+ "name": "Färöisch"
+ },
+ "fil": {
+ "code": "fil",
+ "name": "Filipino"
+ },
+ "fi": {
+ "code": "fi",
+ "name": "Finnisch"
+ },
+ "nl-BE": {
+ "code": "nl-BE",
+ "name": "Flämisch"
+ },
+ "fr": {
+ "code": "fr",
+ "name": "Französisch"
+ },
+ "fur": {
+ "code": "fur",
+ "name": "Friulisch"
+ },
+ "ff": {
+ "code": "ff",
+ "name": "Ful"
+ },
+ "gl": {
+ "code": "gl",
+ "name": "Galizisch"
+ },
+ "lg": {
+ "code": "lg",
+ "name": "Ganda"
+ },
+ "ka": {
+ "code": "ka",
+ "name": "Georgisch"
+ },
+ "el": {
+ "code": "el",
+ "name": "Griechisch"
+ },
+ "kl": {
+ "code": "kl",
+ "name": "Grönländisch"
+ },
+ "gu": {
+ "code": "gu",
+ "name": "Gujarati"
+ },
+ "guz": {
+ "code": "guz",
+ "name": "Gusii"
+ },
+ "ha": {
+ "code": "ha",
+ "name": "Hausa"
+ },
+ "he": {
+ "code": "he",
+ "name": "Hebräisch"
+ },
+ "hi": {
+ "code": "hi",
+ "name": "Hindi"
+ },
+ "id": {
+ "code": "id",
+ "name": "Indonesisch"
+ },
+ "ga": {
+ "code": "ga",
+ "name": "Irisch"
+ },
+ "is": {
+ "code": "is",
+ "name": "Isländisch"
+ },
+ "it": {
+ "code": "it",
+ "name": "Italienisch"
+ },
+ "ja": {
+ "code": "ja",
+ "name": "Japanisch"
+ },
+ "kea": {
+ "code": "kea",
+ "name": "Kabuverdianu"
+ },
+ "kab": {
+ "code": "kab",
+ "name": "Kabylisch"
+ },
+ "kln": {
+ "code": "kln",
+ "name": "Kalenjin"
+ },
+ "kam": {
+ "code": "kam",
+ "name": "Kamba"
+ },
+ "km": {
+ "code": "km",
+ "name": "Kambodschanisch"
+ },
+ "en-CA": {
+ "code": "en-CA",
+ "name": "Kanadisches Englisch"
+ },
+ "fr-CA": {
+ "code": "fr-CA",
+ "name": "Kanadisches Französisch"
+ },
+ "kn": {
+ "code": "kn",
+ "name": "Kannada"
+ },
+ "kk": {
+ "code": "kk",
+ "name": "Kasachisch"
+ },
+ "ks": {
+ "code": "ks",
+ "name": "Kaschmirisch"
+ },
+ "ca": {
+ "code": "ca",
+ "name": "Katalanisch"
+ },
+ "ki": {
+ "code": "ki",
+ "name": "Kikuyu"
+ },
+ "ky": {
+ "code": "ky",
+ "name": "Kirgisisch"
+ },
+ "ksh": {
+ "code": "ksh",
+ "name": "Kölsch"
+ },
+ "swc": {
+ "code": "swc",
+ "name": "Kongo-Suaheli"
+ },
+ "ko": {
+ "code": "ko",
+ "name": "Koreanisch"
+ },
+ "khq": {
+ "code": "khq",
+ "name": "Koyra Chiini"
+ },
+ "ses": {
+ "code": "ses",
+ "name": "Koyra Senni"
+ },
+ "hr": {
+ "code": "hr",
+ "name": "Kroatisch"
+ },
+ "nmg": {
+ "code": "nmg",
+ "name": "Kwasio"
+ },
+ "lag": {
+ "code": "lag",
+ "name": "Langi"
+ },
+ "lo": {
+ "code": "lo",
+ "name": "Laotisch"
+ },
+ "lv": {
+ "code": "lv",
+ "name": "Lettisch"
+ },
+ "ln": {
+ "code": "ln",
+ "name": "Lingala"
+ },
+ "lt": {
+ "code": "lt",
+ "name": "Litauisch"
+ },
+ "lu": {
+ "code": "lu",
+ "name": "Luba-Katanga"
+ },
+ "luy": {
+ "code": "luy",
+ "name": "Luhya"
+ },
+ "luo": {
+ "code": "luo",
+ "name": "Luo-Sprache"
+ },
+ "lb": {
+ "code": "lb",
+ "name": "Luxemburgisch"
+ },
+ "jmc": {
+ "code": "jmc",
+ "name": "Machame"
+ },
+ "mg": {
+ "code": "mg",
+ "name": "Madagassisch"
+ },
+ "mgh": {
+ "code": "mgh",
+ "name": "Makhuwa-Meetto"
+ },
+ "kde": {
+ "code": "kde",
+ "name": "Makonde"
+ },
+ "ms": {
+ "code": "ms",
+ "name": "Malaiisch"
+ },
+ "ml": {
+ "code": "ml",
+ "name": "Malayalam"
+ },
+ "mt": {
+ "code": "mt",
+ "name": "Maltesisch"
+ },
+ "mr": {
+ "code": "mr",
+ "name": "Marathi"
+ },
+ "mas": {
+ "code": "mas",
+ "name": "Massai-Sprache"
+ },
+ "mk": {
+ "code": "mk",
+ "name": "Mazedonisch"
+ },
+ "mer": {
+ "code": "mer",
+ "name": "Meru"
+ },
+ "es-MX": {
+ "code": "es-MX",
+ "name": "Mexikanisches Spanisch"
+ },
+ "ar-001": {
+ "code": "ar-001",
+ "name": "Modernes Hocharabisch"
+ },
+ "ro-MD": {
+ "code": "ro-MD",
+ "name": "Moldauisch"
+ },
+ "mn": {
+ "code": "mn",
+ "name": "Mongolisch"
+ },
+ "mfe": {
+ "code": "mfe",
+ "name": "Morisyen"
+ },
+ "mua": {
+ "code": "mua",
+ "name": "Mundang"
+ },
+ "naq": {
+ "code": "naq",
+ "name": "Nama"
+ },
+ "ne": {
+ "code": "ne",
+ "name": "Nepalesisch"
+ },
+ "jgo": {
+ "code": "jgo",
+ "name": "Ngomba"
+ },
+ "nl": {
+ "code": "nl",
+ "name": "Niederländisch"
+ },
+ "dsb": {
+ "code": "dsb",
+ "name": "Niedersorbisch"
+ },
+ "nd": {
+ "code": "nd",
+ "name": "Nord-Ndebele-Sprache"
+ },
+ "se": {
+ "code": "se",
+ "name": "Nord-Samisch"
+ },
+ "nb": {
+ "code": "nb",
+ "name": "Norwegisch Bokmål"
+ },
+ "nn": {
+ "code": "nn",
+ "name": "Norwegisch Nynorsk"
+ },
+ "nus": {
+ "code": "nus",
+ "name": "Nuer"
+ },
+ "nyn": {
+ "code": "nyn",
+ "name": "Nyankole"
+ },
+ "hsb": {
+ "code": "hsb",
+ "name": "Obersorbisch"
+ },
+ "or": {
+ "code": "or",
+ "name": "Oriya"
+ },
+ "de-AT": {
+ "code": "de-AT",
+ "name": "Österreichisches Deutsch"
+ },
+ "pa": {
+ "code": "pa",
+ "name": "Panjabi"
+ },
+ "asa": {
+ "code": "asa",
+ "name": "Pare"
+ },
+ "ps": {
+ "code": "ps",
+ "name": "Paschtu"
+ },
+ "fa": {
+ "code": "fa",
+ "name": "Persisch"
+ },
+ "pl": {
+ "code": "pl",
+ "name": "Polnisch"
+ },
+ "pt": {
+ "code": "pt",
+ "name": "Portugiesisch"
+ },
+ "rm": {
+ "code": "rm",
+ "name": "Rätoromanisch"
+ },
+ "rof": {
+ "code": "rof",
+ "name": "Rombo"
+ },
+ "cgg": {
+ "code": "cgg",
+ "name": "Rukiga"
+ },
+ "ro": {
+ "code": "ro",
+ "name": "Rumänisch"
+ },
+ "rn": {
+ "code": "rn",
+ "name": "Rundi-Sprache"
+ },
+ "ru": {
+ "code": "ru",
+ "name": "Russisch"
+ },
+ "rwk": {
+ "code": "rwk",
+ "name": "Rwa"
+ },
+ "saq": {
+ "code": "saq",
+ "name": "Samburu"
+ },
+ "sg": {
+ "code": "sg",
+ "name": "Sango"
+ },
+ "sbp": {
+ "code": "sbp",
+ "name": "Sangu"
+ },
+ "gd": {
+ "code": "gd",
+ "name": "Schottisches Gälisch"
+ },
+ "sv": {
+ "code": "sv",
+ "name": "Schwedisch"
+ },
+ "fr-CH": {
+ "code": "fr-CH",
+ "name": "Schweizer Französisch"
+ },
+ "de-CH": {
+ "code": "de-CH",
+ "name": "Schweizer Hochdeutsch"
+ },
+ "gsw": {
+ "code": "gsw",
+ "name": "Schweizerdeutsch"
+ },
+ "seh": {
+ "code": "seh",
+ "name": "Sena"
+ },
+ "sr": {
+ "code": "sr",
+ "name": "Serbisch"
+ },
+ "ksb": {
+ "code": "ksb",
+ "name": "Shambala"
+ },
+ "sn": {
+ "code": "sn",
+ "name": "Shona"
+ },
+ "si": {
+ "code": "si",
+ "name": "Singhalesisch"
+ },
+ "sk": {
+ "code": "sk",
+ "name": "Slowakisch"
+ },
+ "sl": {
+ "code": "sl",
+ "name": "Slowenisch"
+ },
+ "xog": {
+ "code": "xog",
+ "name": "Soga"
+ },
+ "so": {
+ "code": "so",
+ "name": "Somali"
+ },
+ "es": {
+ "code": "es",
+ "name": "Spanisch"
+ },
+ "sw": {
+ "code": "sw",
+ "name": "Suaheli"
+ },
+ "dav": {
+ "code": "dav",
+ "name": "Taita"
+ },
+ "zgh": {
+ "code": "zgh",
+ "name": "Tamazight"
+ },
+ "ta": {
+ "code": "ta",
+ "name": "Tamilisch"
+ },
+ "twq": {
+ "code": "twq",
+ "name": "Tasawaq"
+ },
+ "shi": {
+ "code": "shi",
+ "name": "Taschelhit"
+ },
+ "te": {
+ "code": "te",
+ "name": "Telugu"
+ },
+ "teo": {
+ "code": "teo",
+ "name": "Teso"
+ },
+ "th": {
+ "code": "th",
+ "name": "Thailändisch"
+ },
+ "bo": {
+ "code": "bo",
+ "name": "Tibetisch"
+ },
+ "ti": {
+ "code": "ti",
+ "name": "Tigrinja"
+ },
+ "to": {
+ "code": "to",
+ "name": "Tongaisch"
+ },
+ "cs": {
+ "code": "cs",
+ "name": "Tschechisch"
+ },
+ "tr": {
+ "code": "tr",
+ "name": "Türkisch"
+ },
+ "ug": {
+ "code": "ug",
+ "name": "Uigurisch"
+ },
+ "uk": {
+ "code": "uk",
+ "name": "Ukrainisch"
+ },
+ "hu": {
+ "code": "hu",
+ "name": "Ungarisch"
+ },
+ "ur": {
+ "code": "ur",
+ "name": "Urdu"
+ },
+ "uz": {
+ "code": "uz",
+ "name": "Usbekisch"
+ },
+ "vai": {
+ "code": "vai",
+ "name": "Vai"
+ },
+ "vi": {
+ "code": "vi",
+ "name": "Vietnamesisch"
+ },
+ "vun": {
+ "code": "vun",
+ "name": "Vunjo"
+ },
+ "cy": {
+ "code": "cy",
+ "name": "Walisisch"
+ },
+ "wae": {
+ "code": "wae",
+ "name": "Walser-Dialekte"
+ },
+ "be": {
+ "code": "be",
+ "name": "Weißrussisch"
+ },
+ "fy": {
+ "code": "fy",
+ "name": "Westfriesisch"
+ },
+ "yav": {
+ "code": "yav",
+ "name": "Yangben"
+ },
+ "yo": {
+ "code": "yo",
+ "name": "Yoruba"
+ },
+ "dje": {
+ "code": "dje",
+ "name": "Zarma"
+ },
+ "tzm": {
+ "code": "tzm",
+ "name": "Zentralatlas-Tamazight"
+ },
+ "zu": {
+ "code": "zu",
+ "name": "Zulu"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/language/dje.json b/library/intl/resources/language/dje.json
new file mode 100644
index 000000000..a7b9f7bb1
--- /dev/null
+++ b/library/intl/resources/language/dje.json
@@ -0,0 +1,738 @@
+{
+ "af": {
+ "code": "af",
+ "name": "Afrikaans"
+ },
+ "agq": {
+ "code": "agq",
+ "name": "Aghem"
+ },
+ "ak": {
+ "code": "ak",
+ "name": "Akan senni"
+ },
+ "sq": {
+ "code": "sq",
+ "name": "Albanian"
+ },
+ "de": {
+ "code": "de",
+ "name": "Almaŋ senni"
+ },
+ "am": {
+ "code": "am",
+ "name": "Amhaarik senni"
+ },
+ "ar-001": {
+ "code": "ar-001",
+ "name": "ar_001"
+ },
+ "hy": {
+ "code": "hy",
+ "name": "Armenian"
+ },
+ "ast": {
+ "code": "ast",
+ "name": "Asturian"
+ },
+ "asa": {
+ "code": "asa",
+ "name": "Asu"
+ },
+ "az": {
+ "code": "az",
+ "name": "Azerbaijani"
+ },
+ "ksf": {
+ "code": "ksf",
+ "name": "Bafia"
+ },
+ "bm": {
+ "code": "bm",
+ "name": "Bambara"
+ },
+ "bas": {
+ "code": "bas",
+ "name": "Basaa"
+ },
+ "eu": {
+ "code": "eu",
+ "name": "Basque"
+ },
+ "be": {
+ "code": "be",
+ "name": "Belaruus senni"
+ },
+ "bez": {
+ "code": "bez",
+ "name": "Bena"
+ },
+ "bn": {
+ "code": "bn",
+ "name": "Bengali senni"
+ },
+ "brx": {
+ "code": "brx",
+ "name": "Bodo"
+ },
+ "bs": {
+ "code": "bs",
+ "name": "Bosnian"
+ },
+ "br": {
+ "code": "br",
+ "name": "Breton"
+ },
+ "bg": {
+ "code": "bg",
+ "name": "Bulagaari senni"
+ },
+ "my": {
+ "code": "my",
+ "name": "Burme senni"
+ },
+ "ca": {
+ "code": "ca",
+ "name": "Catalan"
+ },
+ "cs": {
+ "code": "cs",
+ "name": "Cek senni"
+ },
+ "tzm": {
+ "code": "tzm",
+ "name": "Central Atlas Tamazight"
+ },
+ "chr": {
+ "code": "chr",
+ "name": "Cherokee"
+ },
+ "cgg": {
+ "code": "cgg",
+ "name": "Chiga"
+ },
+ "ksh": {
+ "code": "ksh",
+ "name": "Colognian"
+ },
+ "swc": {
+ "code": "swc",
+ "name": "Congo Swahili"
+ },
+ "hr": {
+ "code": "hr",
+ "name": "Croatian"
+ },
+ "da": {
+ "code": "da",
+ "name": "Danish"
+ },
+ "de-AT": {
+ "code": "de-AT",
+ "name": "de_AT"
+ },
+ "de-CH": {
+ "code": "de-CH",
+ "name": "de_CH"
+ },
+ "dz": {
+ "code": "dz",
+ "name": "Dzongkha"
+ },
+ "ebu": {
+ "code": "ebu",
+ "name": "Embu"
+ },
+ "en-AU": {
+ "code": "en-AU",
+ "name": "en_AU"
+ },
+ "en-CA": {
+ "code": "en-CA",
+ "name": "en_CA"
+ },
+ "en-GB": {
+ "code": "en-GB",
+ "name": "en_GB"
+ },
+ "en-US": {
+ "code": "en-US",
+ "name": "en_US"
+ },
+ "es-ES": {
+ "code": "es-ES",
+ "name": "es_ES"
+ },
+ "es-MX": {
+ "code": "es-MX",
+ "name": "es_MX"
+ },
+ "es": {
+ "code": "es",
+ "name": "Espaaɲe senni"
+ },
+ "eo": {
+ "code": "eo",
+ "name": "Esperanto"
+ },
+ "et": {
+ "code": "et",
+ "name": "Estonian"
+ },
+ "ee": {
+ "code": "ee",
+ "name": "Ewe"
+ },
+ "ewo": {
+ "code": "ewo",
+ "name": "Ewondo"
+ },
+ "fo": {
+ "code": "fo",
+ "name": "Faroese"
+ },
+ "fa": {
+ "code": "fa",
+ "name": "Farsi senni"
+ },
+ "fil": {
+ "code": "fil",
+ "name": "Filipino"
+ },
+ "fi": {
+ "code": "fi",
+ "name": "Finnish"
+ },
+ "fr-CA": {
+ "code": "fr-CA",
+ "name": "fr_CA"
+ },
+ "fr-CH": {
+ "code": "fr-CH",
+ "name": "fr_CH"
+ },
+ "fr": {
+ "code": "fr",
+ "name": "Fransee senni"
+ },
+ "fur": {
+ "code": "fur",
+ "name": "Friulian"
+ },
+ "ff": {
+ "code": "ff",
+ "name": "Fulah"
+ },
+ "gl": {
+ "code": "gl",
+ "name": "Galician"
+ },
+ "lg": {
+ "code": "lg",
+ "name": "Ganda"
+ },
+ "ka": {
+ "code": "ka",
+ "name": "Georgian"
+ },
+ "el": {
+ "code": "el",
+ "name": "Grek senni"
+ },
+ "gu": {
+ "code": "gu",
+ "name": "Gujarati"
+ },
+ "guz": {
+ "code": "guz",
+ "name": "Gusii"
+ },
+ "ha": {
+ "code": "ha",
+ "name": "Hawsance senni"
+ },
+ "he": {
+ "code": "he",
+ "name": "Hebrew"
+ },
+ "nl": {
+ "code": "nl",
+ "name": "Holandee senni"
+ },
+ "hu": {
+ "code": "hu",
+ "name": "Hungaari senni"
+ },
+ "is": {
+ "code": "is",
+ "name": "Icelandic"
+ },
+ "id": {
+ "code": "id",
+ "name": "Indoneesi senni"
+ },
+ "hi": {
+ "code": "hi",
+ "name": "Induu senni"
+ },
+ "en": {
+ "code": "en",
+ "name": "Inglisi senni"
+ },
+ "ga": {
+ "code": "ga",
+ "name": "Irish"
+ },
+ "it": {
+ "code": "it",
+ "name": "Itaali senni"
+ },
+ "ja": {
+ "code": "ja",
+ "name": "Japonee senni"
+ },
+ "dyo": {
+ "code": "dyo",
+ "name": "Jola-Fonyi"
+ },
+ "kea": {
+ "code": "kea",
+ "name": "Kabuverdianu"
+ },
+ "kab": {
+ "code": "kab",
+ "name": "Kabyle"
+ },
+ "kl": {
+ "code": "kl",
+ "name": "Kalaallisut"
+ },
+ "kln": {
+ "code": "kln",
+ "name": "Kalenjin"
+ },
+ "kam": {
+ "code": "kam",
+ "name": "Kamba"
+ },
+ "kn": {
+ "code": "kn",
+ "name": "Kannada"
+ },
+ "ks": {
+ "code": "ks",
+ "name": "Kashmiri"
+ },
+ "kk": {
+ "code": "kk",
+ "name": "Kazakh"
+ },
+ "ki": {
+ "code": "ki",
+ "name": "Kikuyu"
+ },
+ "km": {
+ "code": "km",
+ "name": "Kmeer senni"
+ },
+ "ko": {
+ "code": "ko",
+ "name": "Koree senni"
+ },
+ "khq": {
+ "code": "khq",
+ "name": "Koyra Chiini"
+ },
+ "ses": {
+ "code": "ses",
+ "name": "Koyraboro Senni"
+ },
+ "nmg": {
+ "code": "nmg",
+ "name": "Kwasio"
+ },
+ "ky": {
+ "code": "ky",
+ "name": "Kyrgyz"
+ },
+ "ar": {
+ "code": "ar",
+ "name": "Laaraw senni"
+ },
+ "lag": {
+ "code": "lag",
+ "name": "Langi"
+ },
+ "lo": {
+ "code": "lo",
+ "name": "Lao"
+ },
+ "lv": {
+ "code": "lv",
+ "name": "Latvian"
+ },
+ "ln": {
+ "code": "ln",
+ "name": "Lingala"
+ },
+ "lt": {
+ "code": "lt",
+ "name": "Lithuanian"
+ },
+ "dsb": {
+ "code": "dsb",
+ "name": "Lower Sorbian"
+ },
+ "lu": {
+ "code": "lu",
+ "name": "Luba-Katanga"
+ },
+ "luo": {
+ "code": "luo",
+ "name": "Luo"
+ },
+ "lb": {
+ "code": "lb",
+ "name": "Luxembourgish"
+ },
+ "luy": {
+ "code": "luy",
+ "name": "Luyia"
+ },
+ "mk": {
+ "code": "mk",
+ "name": "Macedonian"
+ },
+ "jmc": {
+ "code": "jmc",
+ "name": "Machame"
+ },
+ "mgh": {
+ "code": "mgh",
+ "name": "Makhuwa-Meetto"
+ },
+ "kde": {
+ "code": "kde",
+ "name": "Makonde"
+ },
+ "mg": {
+ "code": "mg",
+ "name": "Malagasy"
+ },
+ "ml": {
+ "code": "ml",
+ "name": "Malayalam"
+ },
+ "ms": {
+ "code": "ms",
+ "name": "Maleezi senni"
+ },
+ "mt": {
+ "code": "mt",
+ "name": "Maltese"
+ },
+ "mr": {
+ "code": "mr",
+ "name": "Marathi"
+ },
+ "mas": {
+ "code": "mas",
+ "name": "Masai"
+ },
+ "mer": {
+ "code": "mer",
+ "name": "Meru"
+ },
+ "mn": {
+ "code": "mn",
+ "name": "Mongolian"
+ },
+ "mfe": {
+ "code": "mfe",
+ "name": "Morisyen"
+ },
+ "mua": {
+ "code": "mua",
+ "name": "Mundang"
+ },
+ "naq": {
+ "code": "naq",
+ "name": "Nama"
+ },
+ "ne": {
+ "code": "ne",
+ "name": "Neepal senni"
+ },
+ "jgo": {
+ "code": "jgo",
+ "name": "Ngomba"
+ },
+ "nl-BE": {
+ "code": "nl-BE",
+ "name": "nl_BE"
+ },
+ "nd": {
+ "code": "nd",
+ "name": "North Ndebele"
+ },
+ "se": {
+ "code": "se",
+ "name": "Northern Sami"
+ },
+ "nb": {
+ "code": "nb",
+ "name": "Norwegian Bokmål"
+ },
+ "nn": {
+ "code": "nn",
+ "name": "Norwegian Nynorsk"
+ },
+ "nus": {
+ "code": "nus",
+ "name": "Nuer"
+ },
+ "nyn": {
+ "code": "nyn",
+ "name": "Nyankole"
+ },
+ "or": {
+ "code": "or",
+ "name": "Oriya"
+ },
+ "ps": {
+ "code": "ps",
+ "name": "Pashto"
+ },
+ "pl": {
+ "code": "pl",
+ "name": "Polonee senni"
+ },
+ "pt": {
+ "code": "pt",
+ "name": "Portugee senni"
+ },
+ "pt-BR": {
+ "code": "pt-BR",
+ "name": "pt_BR"
+ },
+ "pt-PT": {
+ "code": "pt-PT",
+ "name": "pt_PT"
+ },
+ "pa": {
+ "code": "pa",
+ "name": "Punjaabi sennii"
+ },
+ "ro-MD": {
+ "code": "ro-MD",
+ "name": "ro_MD"
+ },
+ "rm": {
+ "code": "rm",
+ "name": "Romansh"
+ },
+ "rof": {
+ "code": "rof",
+ "name": "Rombo"
+ },
+ "ro": {
+ "code": "ro",
+ "name": "Rumaani senni"
+ },
+ "rn": {
+ "code": "rn",
+ "name": "Rundi"
+ },
+ "ru": {
+ "code": "ru",
+ "name": "Ruusi senni"
+ },
+ "rwk": {
+ "code": "rwk",
+ "name": "Rwa"
+ },
+ "saq": {
+ "code": "saq",
+ "name": "Samburu"
+ },
+ "sg": {
+ "code": "sg",
+ "name": "Sango"
+ },
+ "sbp": {
+ "code": "sbp",
+ "name": "Sangu"
+ },
+ "gd": {
+ "code": "gd",
+ "name": "Scottish Gaelic"
+ },
+ "seh": {
+ "code": "seh",
+ "name": "Sena"
+ },
+ "sr": {
+ "code": "sr",
+ "name": "Serbian"
+ },
+ "ksb": {
+ "code": "ksb",
+ "name": "Shambala"
+ },
+ "sn": {
+ "code": "sn",
+ "name": "Shona"
+ },
+ "si": {
+ "code": "si",
+ "name": "Sinhala"
+ },
+ "zh": {
+ "code": "zh",
+ "name": "Sinuwa senni"
+ },
+ "sk": {
+ "code": "sk",
+ "name": "Slovak"
+ },
+ "sl": {
+ "code": "sl",
+ "name": "Slovenian"
+ },
+ "xog": {
+ "code": "xog",
+ "name": "Soga"
+ },
+ "so": {
+ "code": "so",
+ "name": "Somaali senni"
+ },
+ "zgh": {
+ "code": "zgh",
+ "name": "Standard Moroccan Tamazight"
+ },
+ "sv": {
+ "code": "sv",
+ "name": "Suweede senni"
+ },
+ "sw": {
+ "code": "sw",
+ "name": "Swahili"
+ },
+ "gsw": {
+ "code": "gsw",
+ "name": "Swiss German"
+ },
+ "th": {
+ "code": "th",
+ "name": "Taailandu senni"
+ },
+ "shi": {
+ "code": "shi",
+ "name": "Tachelhit"
+ },
+ "dav": {
+ "code": "dav",
+ "name": "Taita"
+ },
+ "ta": {
+ "code": "ta",
+ "name": "Tamil senni"
+ },
+ "twq": {
+ "code": "twq",
+ "name": "Tasawaq"
+ },
+ "te": {
+ "code": "te",
+ "name": "Telugu"
+ },
+ "teo": {
+ "code": "teo",
+ "name": "Teso"
+ },
+ "bo": {
+ "code": "bo",
+ "name": "Tibetan"
+ },
+ "ti": {
+ "code": "ti",
+ "name": "Tigrinya"
+ },
+ "to": {
+ "code": "to",
+ "name": "Tongan"
+ },
+ "tr": {
+ "code": "tr",
+ "name": "Turku senni"
+ },
+ "uk": {
+ "code": "uk",
+ "name": "Ukreen senni"
+ },
+ "hsb": {
+ "code": "hsb",
+ "name": "Upper Sorbian"
+ },
+ "ur": {
+ "code": "ur",
+ "name": "Urdu senni"
+ },
+ "ug": {
+ "code": "ug",
+ "name": "Uyghur"
+ },
+ "uz": {
+ "code": "uz",
+ "name": "Uzbek"
+ },
+ "vai": {
+ "code": "vai",
+ "name": "Vai"
+ },
+ "vi": {
+ "code": "vi",
+ "name": "Vietnaam senni"
+ },
+ "vun": {
+ "code": "vun",
+ "name": "Vunjo"
+ },
+ "wae": {
+ "code": "wae",
+ "name": "Walser"
+ },
+ "cy": {
+ "code": "cy",
+ "name": "Welsh"
+ },
+ "fy": {
+ "code": "fy",
+ "name": "Western Frisian"
+ },
+ "yav": {
+ "code": "yav",
+ "name": "Yangben"
+ },
+ "yo": {
+ "code": "yo",
+ "name": "Yorbance senni"
+ },
+ "dje": {
+ "code": "dje",
+ "name": "Zarmaciine"
+ },
+ "zh-Hans": {
+ "code": "zh-Hans",
+ "name": "zh_Hans"
+ },
+ "zh-Hant": {
+ "code": "zh-Hant",
+ "name": "zh_Hant"
+ },
+ "zu": {
+ "code": "zu",
+ "name": "Zulu senni"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/language/dsb.json b/library/intl/resources/language/dsb.json
new file mode 100644
index 000000000..d7d926ed1
--- /dev/null
+++ b/library/intl/resources/language/dsb.json
@@ -0,0 +1,738 @@
+{
+ "af": {
+ "code": "af",
+ "name": "afrikans"
+ },
+ "agq": {
+ "code": "agq",
+ "name": "aghem"
+ },
+ "ak": {
+ "code": "ak",
+ "name": "akanšćina"
+ },
+ "sq": {
+ "code": "sq",
+ "name": "albanšćina"
+ },
+ "en-US": {
+ "code": "en-US",
+ "name": "ameriska engelšćina"
+ },
+ "am": {
+ "code": "am",
+ "name": "amharšćina"
+ },
+ "ar": {
+ "code": "ar",
+ "name": "arabšćina"
+ },
+ "hy": {
+ "code": "hy",
+ "name": "armeńšćina"
+ },
+ "ast": {
+ "code": "ast",
+ "name": "asturšćina"
+ },
+ "en-AU": {
+ "code": "en-AU",
+ "name": "awstralska engelšćina"
+ },
+ "az": {
+ "code": "az",
+ "name": "azerbajdžanšćina"
+ },
+ "ksf": {
+ "code": "ksf",
+ "name": "bafia"
+ },
+ "bm": {
+ "code": "bm",
+ "name": "bambara"
+ },
+ "bas": {
+ "code": "bas",
+ "name": "Basaa"
+ },
+ "eu": {
+ "code": "eu",
+ "name": "baskišćina"
+ },
+ "be": {
+ "code": "be",
+ "name": "běłorušćina"
+ },
+ "bez": {
+ "code": "bez",
+ "name": "bena"
+ },
+ "bn": {
+ "code": "bn",
+ "name": "bengalšćina"
+ },
+ "brx": {
+ "code": "brx",
+ "name": "bodo"
+ },
+ "bs": {
+ "code": "bs",
+ "name": "bosnišćina"
+ },
+ "pt-BR": {
+ "code": "pt-BR",
+ "name": "brazilska portugalšćina"
+ },
+ "br": {
+ "code": "br",
+ "name": "bretonšćina"
+ },
+ "en-GB": {
+ "code": "en-GB",
+ "name": "britiska engelšćina"
+ },
+ "bg": {
+ "code": "bg",
+ "name": "bulgaršćina"
+ },
+ "my": {
+ "code": "my",
+ "name": "burmašćina"
+ },
+ "tzm": {
+ "code": "tzm",
+ "name": "centralnoatlaski tamazight"
+ },
+ "cs": {
+ "code": "cs",
+ "name": "Äešćina"
+ },
+ "chr": {
+ "code": "chr",
+ "name": "cherokee"
+ },
+ "cgg": {
+ "code": "cgg",
+ "name": "chiga"
+ },
+ "zh": {
+ "code": "zh",
+ "name": "chinšćina"
+ },
+ "zh-Hant": {
+ "code": "zh-Hant",
+ "name": "chinšćina (tradicionalna)"
+ },
+ "zh-Hans": {
+ "code": "zh-Hans",
+ "name": "chinšćina (zjadnorjona)"
+ },
+ "hr": {
+ "code": "hr",
+ "name": "chorwatšćina"
+ },
+ "ksh": {
+ "code": "ksh",
+ "name": "Colognian"
+ },
+ "da": {
+ "code": "da",
+ "name": "danšćina"
+ },
+ "de-AT": {
+ "code": "de-AT",
+ "name": "de_AT"
+ },
+ "de-CH": {
+ "code": "de-CH",
+ "name": "de_CH"
+ },
+ "dsb": {
+ "code": "dsb",
+ "name": "dolnoserbšćina"
+ },
+ "dz": {
+ "code": "dz",
+ "name": "dzongkha"
+ },
+ "ebu": {
+ "code": "ebu",
+ "name": "embu"
+ },
+ "en": {
+ "code": "en",
+ "name": "engelšćina"
+ },
+ "eo": {
+ "code": "eo",
+ "name": "esperanto"
+ },
+ "et": {
+ "code": "et",
+ "name": "estišćina"
+ },
+ "pt-PT": {
+ "code": "pt-PT",
+ "name": "europejska portugalšćina"
+ },
+ "es-ES": {
+ "code": "es-ES",
+ "name": "europejska špańšćina"
+ },
+ "ee": {
+ "code": "ee",
+ "name": "ewe"
+ },
+ "ewo": {
+ "code": "ewo",
+ "name": "Ewondo"
+ },
+ "fo": {
+ "code": "fo",
+ "name": "ferejšćina"
+ },
+ "fil": {
+ "code": "fil",
+ "name": "filipinšćina"
+ },
+ "fi": {
+ "code": "fi",
+ "name": "finšćina"
+ },
+ "nl-BE": {
+ "code": "nl-BE",
+ "name": "flamšćina"
+ },
+ "fr": {
+ "code": "fr",
+ "name": "francojšćina"
+ },
+ "fur": {
+ "code": "fur",
+ "name": "Friulian"
+ },
+ "fy": {
+ "code": "fy",
+ "name": "frizišćina"
+ },
+ "ff": {
+ "code": "ff",
+ "name": "Fulah"
+ },
+ "gl": {
+ "code": "gl",
+ "name": "galicišćina"
+ },
+ "lg": {
+ "code": "lg",
+ "name": "gandšćina"
+ },
+ "ka": {
+ "code": "ka",
+ "name": "georgišćina"
+ },
+ "hsb": {
+ "code": "hsb",
+ "name": "górnoserbšćina"
+ },
+ "el": {
+ "code": "el",
+ "name": "grichišćina"
+ },
+ "kl": {
+ "code": "kl",
+ "name": "grönlandšćina"
+ },
+ "gu": {
+ "code": "gu",
+ "name": "gudžaratšćina"
+ },
+ "guz": {
+ "code": "guz",
+ "name": "gusii"
+ },
+ "ha": {
+ "code": "ha",
+ "name": "hausa"
+ },
+ "he": {
+ "code": "he",
+ "name": "hebrejšćina"
+ },
+ "hi": {
+ "code": "hi",
+ "name": "hindišćina"
+ },
+ "hu": {
+ "code": "hu",
+ "name": "hungoršćina"
+ },
+ "id": {
+ "code": "id",
+ "name": "indonešćina"
+ },
+ "ga": {
+ "code": "ga",
+ "name": "iršćina"
+ },
+ "is": {
+ "code": "is",
+ "name": "islandšćina"
+ },
+ "it": {
+ "code": "it",
+ "name": "italšćina"
+ },
+ "ja": {
+ "code": "ja",
+ "name": "japańšćina"
+ },
+ "dyo": {
+ "code": "dyo",
+ "name": "jola-fonyi"
+ },
+ "yo": {
+ "code": "yo",
+ "name": "jorubšćina"
+ },
+ "kab": {
+ "code": "kab",
+ "name": "kabylšćina"
+ },
+ "kln": {
+ "code": "kln",
+ "name": "kalenjin"
+ },
+ "kam": {
+ "code": "kam",
+ "name": "kamba"
+ },
+ "km": {
+ "code": "km",
+ "name": "kambodžanšćina"
+ },
+ "en-CA": {
+ "code": "en-CA",
+ "name": "kanadiska engelšćina"
+ },
+ "fr-CA": {
+ "code": "fr-CA",
+ "name": "kanadiska francojšćina"
+ },
+ "kn": {
+ "code": "kn",
+ "name": "kannadšćina"
+ },
+ "kea": {
+ "code": "kea",
+ "name": "kapverdšćina"
+ },
+ "ks": {
+ "code": "ks",
+ "name": "kašmiršćina"
+ },
+ "ca": {
+ "code": "ca",
+ "name": "katanlanšćina"
+ },
+ "kk": {
+ "code": "kk",
+ "name": "kazachšćina"
+ },
+ "ki": {
+ "code": "ki",
+ "name": "kikuyu"
+ },
+ "ky": {
+ "code": "ky",
+ "name": "kirgišćina"
+ },
+ "rn": {
+ "code": "rn",
+ "name": "kirundišćina"
+ },
+ "swc": {
+ "code": "swc",
+ "name": "kongojska swahilišćina"
+ },
+ "ko": {
+ "code": "ko",
+ "name": "korejańšćina"
+ },
+ "khq": {
+ "code": "khq",
+ "name": "koyra chiini"
+ },
+ "ses": {
+ "code": "ses",
+ "name": "koyra senni"
+ },
+ "nmg": {
+ "code": "nmg",
+ "name": "kwasio"
+ },
+ "lag": {
+ "code": "lag",
+ "name": "langi"
+ },
+ "lo": {
+ "code": "lo",
+ "name": "laošćina"
+ },
+ "se": {
+ "code": "se",
+ "name": "lapšćina"
+ },
+ "lv": {
+ "code": "lv",
+ "name": "letišćina"
+ },
+ "ln": {
+ "code": "ln",
+ "name": "lingala"
+ },
+ "lt": {
+ "code": "lt",
+ "name": "litawšćina"
+ },
+ "lu": {
+ "code": "lu",
+ "name": "luba-katanga"
+ },
+ "luy": {
+ "code": "luy",
+ "name": "luhya"
+ },
+ "luo": {
+ "code": "luo",
+ "name": "Luo"
+ },
+ "lb": {
+ "code": "lb",
+ "name": "luxemburgšćina"
+ },
+ "jmc": {
+ "code": "jmc",
+ "name": "machame"
+ },
+ "mk": {
+ "code": "mk",
+ "name": "makedońšćina"
+ },
+ "mgh": {
+ "code": "mgh",
+ "name": "makhuwa-meetto"
+ },
+ "kde": {
+ "code": "kde",
+ "name": "makonde"
+ },
+ "ml": {
+ "code": "ml",
+ "name": "malajamšćina"
+ },
+ "ms": {
+ "code": "ms",
+ "name": "malajšćina"
+ },
+ "mg": {
+ "code": "mg",
+ "name": "malgašćina"
+ },
+ "mt": {
+ "code": "mt",
+ "name": "maltašćina"
+ },
+ "mr": {
+ "code": "mr",
+ "name": "maratišćina"
+ },
+ "mas": {
+ "code": "mas",
+ "name": "masaišćina"
+ },
+ "mfe": {
+ "code": "mfe",
+ "name": "mauriciska kreolšćina"
+ },
+ "mer": {
+ "code": "mer",
+ "name": "meru"
+ },
+ "es-MX": {
+ "code": "es-MX",
+ "name": "mexikańska špańšćina"
+ },
+ "ar-001": {
+ "code": "ar-001",
+ "name": "moderna wusokoarabšćina"
+ },
+ "ro-MD": {
+ "code": "ro-MD",
+ "name": "moldawišćina"
+ },
+ "mn": {
+ "code": "mn",
+ "name": "mongolšćina"
+ },
+ "mua": {
+ "code": "mua",
+ "name": "mundang"
+ },
+ "naq": {
+ "code": "naq",
+ "name": "nama"
+ },
+ "ne": {
+ "code": "ne",
+ "name": "nepalšćina"
+ },
+ "jgo": {
+ "code": "jgo",
+ "name": "ngomba"
+ },
+ "de": {
+ "code": "de",
+ "name": "nimšćina"
+ },
+ "nl": {
+ "code": "nl",
+ "name": "nižozemšćina"
+ },
+ "nb": {
+ "code": "nb",
+ "name": "norwegske bokmål"
+ },
+ "nn": {
+ "code": "nn",
+ "name": "norwegske nynorsk"
+ },
+ "nus": {
+ "code": "nus",
+ "name": "nuer"
+ },
+ "nyn": {
+ "code": "nyn",
+ "name": "nyankole"
+ },
+ "or": {
+ "code": "or",
+ "name": "orojišćina"
+ },
+ "pa": {
+ "code": "pa",
+ "name": "pandžabšćina"
+ },
+ "asa": {
+ "code": "asa",
+ "name": "pare"
+ },
+ "ps": {
+ "code": "ps",
+ "name": "paštunšćina"
+ },
+ "fa": {
+ "code": "fa",
+ "name": "persišćina"
+ },
+ "nd": {
+ "code": "nd",
+ "name": "pódpołnocne ndebele"
+ },
+ "pl": {
+ "code": "pl",
+ "name": "pólšćina"
+ },
+ "pt": {
+ "code": "pt",
+ "name": "portugalšćina"
+ },
+ "rm": {
+ "code": "rm",
+ "name": "retoromańšćina"
+ },
+ "rof": {
+ "code": "rof",
+ "name": "rombo"
+ },
+ "ro": {
+ "code": "ro",
+ "name": "rumunšćina"
+ },
+ "ru": {
+ "code": "ru",
+ "name": "rušćina"
+ },
+ "rwk": {
+ "code": "rwk",
+ "name": "rwa"
+ },
+ "ksb": {
+ "code": "ksb",
+ "name": "Å¡ambala"
+ },
+ "saq": {
+ "code": "saq",
+ "name": "samburu"
+ },
+ "sg": {
+ "code": "sg",
+ "name": "sango"
+ },
+ "sbp": {
+ "code": "sbp",
+ "name": "sangu"
+ },
+ "seh": {
+ "code": "seh",
+ "name": "sena"
+ },
+ "sr": {
+ "code": "sr",
+ "name": "serbišćina"
+ },
+ "si": {
+ "code": "si",
+ "name": "singalšćina"
+ },
+ "sk": {
+ "code": "sk",
+ "name": "słowakšćina"
+ },
+ "sl": {
+ "code": "sl",
+ "name": "słowjeńšćina"
+ },
+ "xog": {
+ "code": "xog",
+ "name": "soga"
+ },
+ "so": {
+ "code": "so",
+ "name": "somališćina"
+ },
+ "sn": {
+ "code": "sn",
+ "name": "šonšćina"
+ },
+ "gd": {
+ "code": "gd",
+ "name": "šotišćina"
+ },
+ "es": {
+ "code": "es",
+ "name": "špańšćina"
+ },
+ "zgh": {
+ "code": "zgh",
+ "name": "standardny marokkański tamazight"
+ },
+ "sw": {
+ "code": "sw",
+ "name": "swahilišćina"
+ },
+ "sv": {
+ "code": "sv",
+ "name": "šwedšćina"
+ },
+ "fr-CH": {
+ "code": "fr-CH",
+ "name": "šwicarska francojšćina"
+ },
+ "gsw": {
+ "code": "gsw",
+ "name": "šwicarska nimšćina"
+ },
+ "dav": {
+ "code": "dav",
+ "name": "taita"
+ },
+ "ta": {
+ "code": "ta",
+ "name": "tamilšćina"
+ },
+ "twq": {
+ "code": "twq",
+ "name": "tasawaq"
+ },
+ "shi": {
+ "code": "shi",
+ "name": "tašelhit"
+ },
+ "te": {
+ "code": "te",
+ "name": "telugšćina"
+ },
+ "teo": {
+ "code": "teo",
+ "name": "teso"
+ },
+ "th": {
+ "code": "th",
+ "name": "thailandšćina"
+ },
+ "bo": {
+ "code": "bo",
+ "name": "tibetšćina"
+ },
+ "ti": {
+ "code": "ti",
+ "name": "tigrinja"
+ },
+ "to": {
+ "code": "to",
+ "name": "tonganšćina"
+ },
+ "tr": {
+ "code": "tr",
+ "name": "turkojšćina"
+ },
+ "ug": {
+ "code": "ug",
+ "name": "ujguršćina"
+ },
+ "uk": {
+ "code": "uk",
+ "name": "ukrainšćina"
+ },
+ "ur": {
+ "code": "ur",
+ "name": "urdušćina"
+ },
+ "uz": {
+ "code": "uz",
+ "name": "usbekšćina"
+ },
+ "vai": {
+ "code": "vai",
+ "name": "Vai"
+ },
+ "vi": {
+ "code": "vi",
+ "name": "vietnamšćina"
+ },
+ "vun": {
+ "code": "vun",
+ "name": "vunjo"
+ },
+ "cy": {
+ "code": "cy",
+ "name": "walizišćina"
+ },
+ "wae": {
+ "code": "wae",
+ "name": "Walser"
+ },
+ "yav": {
+ "code": "yav",
+ "name": "Yangben"
+ },
+ "dje": {
+ "code": "dje",
+ "name": "zarma"
+ },
+ "zu": {
+ "code": "zu",
+ "name": "zulu"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/language/dyo.json b/library/intl/resources/language/dyo.json
new file mode 100644
index 000000000..34a7a81d6
--- /dev/null
+++ b/library/intl/resources/language/dyo.json
@@ -0,0 +1,738 @@
+{
+ "af": {
+ "code": "af",
+ "name": "Afrikaans"
+ },
+ "agq": {
+ "code": "agq",
+ "name": "Aghem"
+ },
+ "ak": {
+ "code": "ak",
+ "name": "akan"
+ },
+ "sq": {
+ "code": "sq",
+ "name": "Albanian"
+ },
+ "de": {
+ "code": "de",
+ "name": "alman"
+ },
+ "am": {
+ "code": "am",
+ "name": "amharik"
+ },
+ "en": {
+ "code": "en",
+ "name": "angle"
+ },
+ "ar-001": {
+ "code": "ar-001",
+ "name": "ar_001"
+ },
+ "ar": {
+ "code": "ar",
+ "name": "arab"
+ },
+ "hy": {
+ "code": "hy",
+ "name": "Armenian"
+ },
+ "ast": {
+ "code": "ast",
+ "name": "Asturian"
+ },
+ "asa": {
+ "code": "asa",
+ "name": "Asu"
+ },
+ "az": {
+ "code": "az",
+ "name": "Azerbaijani"
+ },
+ "ksf": {
+ "code": "ksf",
+ "name": "Bafia"
+ },
+ "bm": {
+ "code": "bm",
+ "name": "Bambara"
+ },
+ "bas": {
+ "code": "bas",
+ "name": "Basaa"
+ },
+ "eu": {
+ "code": "eu",
+ "name": "Basque"
+ },
+ "be": {
+ "code": "be",
+ "name": "belarus"
+ },
+ "bez": {
+ "code": "bez",
+ "name": "Bena"
+ },
+ "bn": {
+ "code": "bn",
+ "name": "bengali"
+ },
+ "my": {
+ "code": "my",
+ "name": "birmani"
+ },
+ "brx": {
+ "code": "brx",
+ "name": "Bodo"
+ },
+ "bs": {
+ "code": "bs",
+ "name": "Bosnian"
+ },
+ "br": {
+ "code": "br",
+ "name": "Breton"
+ },
+ "bg": {
+ "code": "bg",
+ "name": "bulgaari"
+ },
+ "ca": {
+ "code": "ca",
+ "name": "Catalan"
+ },
+ "tzm": {
+ "code": "tzm",
+ "name": "Central Atlas Tamazight"
+ },
+ "chr": {
+ "code": "chr",
+ "name": "Cherokee"
+ },
+ "cgg": {
+ "code": "cgg",
+ "name": "Chiga"
+ },
+ "ksh": {
+ "code": "ksh",
+ "name": "Colognian"
+ },
+ "swc": {
+ "code": "swc",
+ "name": "Congo Swahili"
+ },
+ "hr": {
+ "code": "hr",
+ "name": "Croatian"
+ },
+ "da": {
+ "code": "da",
+ "name": "Danish"
+ },
+ "de-AT": {
+ "code": "de-AT",
+ "name": "de_AT"
+ },
+ "de-CH": {
+ "code": "de-CH",
+ "name": "de_CH"
+ },
+ "dz": {
+ "code": "dz",
+ "name": "Dzongkha"
+ },
+ "ebu": {
+ "code": "ebu",
+ "name": "Embu"
+ },
+ "en-AU": {
+ "code": "en-AU",
+ "name": "en_AU"
+ },
+ "en-CA": {
+ "code": "en-CA",
+ "name": "en_CA"
+ },
+ "en-GB": {
+ "code": "en-GB",
+ "name": "en_GB"
+ },
+ "en-US": {
+ "code": "en-US",
+ "name": "en_US"
+ },
+ "hi": {
+ "code": "hi",
+ "name": "endu"
+ },
+ "es-ES": {
+ "code": "es-ES",
+ "name": "es_ES"
+ },
+ "es-MX": {
+ "code": "es-MX",
+ "name": "es_MX"
+ },
+ "es": {
+ "code": "es",
+ "name": "español"
+ },
+ "eo": {
+ "code": "eo",
+ "name": "Esperanto"
+ },
+ "et": {
+ "code": "et",
+ "name": "Estonian"
+ },
+ "ee": {
+ "code": "ee",
+ "name": "Ewe"
+ },
+ "ewo": {
+ "code": "ewo",
+ "name": "Ewondo"
+ },
+ "fo": {
+ "code": "fo",
+ "name": "Faroese"
+ },
+ "fil": {
+ "code": "fil",
+ "name": "Filipino"
+ },
+ "fi": {
+ "code": "fi",
+ "name": "Finnish"
+ },
+ "fr-CA": {
+ "code": "fr-CA",
+ "name": "fr_CA"
+ },
+ "fr-CH": {
+ "code": "fr-CH",
+ "name": "fr_CH"
+ },
+ "fr": {
+ "code": "fr",
+ "name": "franse"
+ },
+ "fur": {
+ "code": "fur",
+ "name": "Friulian"
+ },
+ "ff": {
+ "code": "ff",
+ "name": "Fulah"
+ },
+ "gl": {
+ "code": "gl",
+ "name": "Galician"
+ },
+ "lg": {
+ "code": "lg",
+ "name": "Ganda"
+ },
+ "ka": {
+ "code": "ka",
+ "name": "Georgian"
+ },
+ "el": {
+ "code": "el",
+ "name": "greek"
+ },
+ "gu": {
+ "code": "gu",
+ "name": "Gujarati"
+ },
+ "guz": {
+ "code": "guz",
+ "name": "Gusii"
+ },
+ "ha": {
+ "code": "ha",
+ "name": "hausa"
+ },
+ "he": {
+ "code": "he",
+ "name": "Hebrew"
+ },
+ "is": {
+ "code": "is",
+ "name": "Icelandic"
+ },
+ "id": {
+ "code": "id",
+ "name": "indoneesi"
+ },
+ "ga": {
+ "code": "ga",
+ "name": "Irish"
+ },
+ "it": {
+ "code": "it",
+ "name": "italien"
+ },
+ "dyo": {
+ "code": "dyo",
+ "name": "joola"
+ },
+ "kea": {
+ "code": "kea",
+ "name": "Kabuverdianu"
+ },
+ "kab": {
+ "code": "kab",
+ "name": "Kabyle"
+ },
+ "kl": {
+ "code": "kl",
+ "name": "Kalaallisut"
+ },
+ "kln": {
+ "code": "kln",
+ "name": "Kalenjin"
+ },
+ "kam": {
+ "code": "kam",
+ "name": "Kamba"
+ },
+ "kn": {
+ "code": "kn",
+ "name": "Kannada"
+ },
+ "ks": {
+ "code": "ks",
+ "name": "Kashmiri"
+ },
+ "kk": {
+ "code": "kk",
+ "name": "Kazakh"
+ },
+ "ki": {
+ "code": "ki",
+ "name": "Kikuyu"
+ },
+ "km": {
+ "code": "km",
+ "name": "kmeer"
+ },
+ "ko": {
+ "code": "ko",
+ "name": "koree"
+ },
+ "khq": {
+ "code": "khq",
+ "name": "Koyra Chiini"
+ },
+ "ses": {
+ "code": "ses",
+ "name": "Koyraboro Senni"
+ },
+ "nmg": {
+ "code": "nmg",
+ "name": "Kwasio"
+ },
+ "ky": {
+ "code": "ky",
+ "name": "Kyrgyz"
+ },
+ "lag": {
+ "code": "lag",
+ "name": "Langi"
+ },
+ "lo": {
+ "code": "lo",
+ "name": "Lao"
+ },
+ "lv": {
+ "code": "lv",
+ "name": "Latvian"
+ },
+ "ln": {
+ "code": "ln",
+ "name": "Lingala"
+ },
+ "lt": {
+ "code": "lt",
+ "name": "Lithuanian"
+ },
+ "dsb": {
+ "code": "dsb",
+ "name": "Lower Sorbian"
+ },
+ "lu": {
+ "code": "lu",
+ "name": "Luba-Katanga"
+ },
+ "luo": {
+ "code": "luo",
+ "name": "Luo"
+ },
+ "lb": {
+ "code": "lb",
+ "name": "Luxembourgish"
+ },
+ "luy": {
+ "code": "luy",
+ "name": "Luyia"
+ },
+ "mk": {
+ "code": "mk",
+ "name": "Macedonian"
+ },
+ "jmc": {
+ "code": "jmc",
+ "name": "Machame"
+ },
+ "mgh": {
+ "code": "mgh",
+ "name": "Makhuwa-Meetto"
+ },
+ "kde": {
+ "code": "kde",
+ "name": "Makonde"
+ },
+ "mg": {
+ "code": "mg",
+ "name": "Malagasy"
+ },
+ "ml": {
+ "code": "ml",
+ "name": "Malayalam"
+ },
+ "ms": {
+ "code": "ms",
+ "name": "maleesi"
+ },
+ "mt": {
+ "code": "mt",
+ "name": "Maltese"
+ },
+ "mr": {
+ "code": "mr",
+ "name": "Marathi"
+ },
+ "mas": {
+ "code": "mas",
+ "name": "Masai"
+ },
+ "mer": {
+ "code": "mer",
+ "name": "Meru"
+ },
+ "mn": {
+ "code": "mn",
+ "name": "Mongolian"
+ },
+ "mfe": {
+ "code": "mfe",
+ "name": "Morisyen"
+ },
+ "mua": {
+ "code": "mua",
+ "name": "Mundang"
+ },
+ "naq": {
+ "code": "naq",
+ "name": "Nama"
+ },
+ "nl": {
+ "code": "nl",
+ "name": "neerlande"
+ },
+ "ne": {
+ "code": "ne",
+ "name": "nepalees"
+ },
+ "jgo": {
+ "code": "jgo",
+ "name": "Ngomba"
+ },
+ "nl-BE": {
+ "code": "nl-BE",
+ "name": "nl_BE"
+ },
+ "nd": {
+ "code": "nd",
+ "name": "North Ndebele"
+ },
+ "se": {
+ "code": "se",
+ "name": "Northern Sami"
+ },
+ "nb": {
+ "code": "nb",
+ "name": "Norwegian Bokmål"
+ },
+ "nn": {
+ "code": "nn",
+ "name": "Norwegian Nynorsk"
+ },
+ "nus": {
+ "code": "nus",
+ "name": "Nuer"
+ },
+ "nyn": {
+ "code": "nyn",
+ "name": "Nyankole"
+ },
+ "hu": {
+ "code": "hu",
+ "name": "ongrua"
+ },
+ "or": {
+ "code": "or",
+ "name": "Oriya"
+ },
+ "ps": {
+ "code": "ps",
+ "name": "Pashto"
+ },
+ "pa": {
+ "code": "pa",
+ "name": "penjabi"
+ },
+ "fa": {
+ "code": "fa",
+ "name": "persan"
+ },
+ "pl": {
+ "code": "pl",
+ "name": "polonees"
+ },
+ "pt": {
+ "code": "pt",
+ "name": "portugees"
+ },
+ "pt-BR": {
+ "code": "pt-BR",
+ "name": "pt_BR"
+ },
+ "pt-PT": {
+ "code": "pt-PT",
+ "name": "pt_PT"
+ },
+ "ro-MD": {
+ "code": "ro-MD",
+ "name": "ro_MD"
+ },
+ "rm": {
+ "code": "rm",
+ "name": "Romansh"
+ },
+ "rof": {
+ "code": "rof",
+ "name": "Rombo"
+ },
+ "ro": {
+ "code": "ro",
+ "name": "rumeen"
+ },
+ "rn": {
+ "code": "rn",
+ "name": "Rundi"
+ },
+ "ru": {
+ "code": "ru",
+ "name": "rus"
+ },
+ "rwk": {
+ "code": "rwk",
+ "name": "Rwa"
+ },
+ "saq": {
+ "code": "saq",
+ "name": "Samburu"
+ },
+ "sg": {
+ "code": "sg",
+ "name": "Sango"
+ },
+ "sbp": {
+ "code": "sbp",
+ "name": "Sangu"
+ },
+ "ja": {
+ "code": "ja",
+ "name": "saponee"
+ },
+ "gd": {
+ "code": "gd",
+ "name": "Scottish Gaelic"
+ },
+ "cs": {
+ "code": "cs",
+ "name": "sek"
+ },
+ "seh": {
+ "code": "seh",
+ "name": "Sena"
+ },
+ "sr": {
+ "code": "sr",
+ "name": "Serbian"
+ },
+ "ksb": {
+ "code": "ksb",
+ "name": "Shambala"
+ },
+ "sn": {
+ "code": "sn",
+ "name": "Shona"
+ },
+ "si": {
+ "code": "si",
+ "name": "Sinhala"
+ },
+ "zh": {
+ "code": "zh",
+ "name": "sinua"
+ },
+ "sk": {
+ "code": "sk",
+ "name": "Slovak"
+ },
+ "sl": {
+ "code": "sl",
+ "name": "Slovenian"
+ },
+ "xog": {
+ "code": "xog",
+ "name": "Soga"
+ },
+ "so": {
+ "code": "so",
+ "name": "somali"
+ },
+ "zgh": {
+ "code": "zgh",
+ "name": "Standard Moroccan Tamazight"
+ },
+ "sv": {
+ "code": "sv",
+ "name": "suedi"
+ },
+ "zu": {
+ "code": "zu",
+ "name": "sulu"
+ },
+ "sw": {
+ "code": "sw",
+ "name": "Swahili"
+ },
+ "gsw": {
+ "code": "gsw",
+ "name": "Swiss German"
+ },
+ "shi": {
+ "code": "shi",
+ "name": "Tachelhit"
+ },
+ "dav": {
+ "code": "dav",
+ "name": "Taita"
+ },
+ "ta": {
+ "code": "ta",
+ "name": "tamil"
+ },
+ "twq": {
+ "code": "twq",
+ "name": "Tasawaq"
+ },
+ "th": {
+ "code": "th",
+ "name": "tay"
+ },
+ "te": {
+ "code": "te",
+ "name": "Telugu"
+ },
+ "teo": {
+ "code": "teo",
+ "name": "Teso"
+ },
+ "bo": {
+ "code": "bo",
+ "name": "Tibetan"
+ },
+ "ti": {
+ "code": "ti",
+ "name": "Tigrinya"
+ },
+ "to": {
+ "code": "to",
+ "name": "Tongan"
+ },
+ "tr": {
+ "code": "tr",
+ "name": "turki"
+ },
+ "uk": {
+ "code": "uk",
+ "name": "ukrain"
+ },
+ "hsb": {
+ "code": "hsb",
+ "name": "Upper Sorbian"
+ },
+ "ur": {
+ "code": "ur",
+ "name": "urdu"
+ },
+ "ug": {
+ "code": "ug",
+ "name": "Uyghur"
+ },
+ "uz": {
+ "code": "uz",
+ "name": "Uzbek"
+ },
+ "vai": {
+ "code": "vai",
+ "name": "Vai"
+ },
+ "vi": {
+ "code": "vi",
+ "name": "vietnam"
+ },
+ "vun": {
+ "code": "vun",
+ "name": "Vunjo"
+ },
+ "wae": {
+ "code": "wae",
+ "name": "Walser"
+ },
+ "cy": {
+ "code": "cy",
+ "name": "Welsh"
+ },
+ "fy": {
+ "code": "fy",
+ "name": "Western Frisian"
+ },
+ "yav": {
+ "code": "yav",
+ "name": "Yangben"
+ },
+ "yo": {
+ "code": "yo",
+ "name": "yoruba"
+ },
+ "dje": {
+ "code": "dje",
+ "name": "Zarma"
+ },
+ "zh-Hans": {
+ "code": "zh-Hans",
+ "name": "zh_Hans"
+ },
+ "zh-Hant": {
+ "code": "zh-Hant",
+ "name": "zh_Hant"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/language/dz.json b/library/intl/resources/language/dz.json
new file mode 100644
index 000000000..f3f2ca654
--- /dev/null
+++ b/library/intl/resources/language/dz.json
@@ -0,0 +1,738 @@
+{
+ "agq": {
+ "code": "agq",
+ "name": "Aghem"
+ },
+ "ak": {
+ "code": "ak",
+ "name": "Akan"
+ },
+ "ar-001": {
+ "code": "ar-001",
+ "name": "ar_001"
+ },
+ "ast": {
+ "code": "ast",
+ "name": "Asturian"
+ },
+ "asa": {
+ "code": "asa",
+ "name": "Asu"
+ },
+ "ksf": {
+ "code": "ksf",
+ "name": "Bafia"
+ },
+ "bm": {
+ "code": "bm",
+ "name": "Bambara"
+ },
+ "bas": {
+ "code": "bas",
+ "name": "Basaa"
+ },
+ "bez": {
+ "code": "bez",
+ "name": "Bena"
+ },
+ "brx": {
+ "code": "brx",
+ "name": "Bodo"
+ },
+ "br": {
+ "code": "br",
+ "name": "Breton"
+ },
+ "tzm": {
+ "code": "tzm",
+ "name": "Central Atlas Tamazight"
+ },
+ "chr": {
+ "code": "chr",
+ "name": "Cherokee"
+ },
+ "cgg": {
+ "code": "cgg",
+ "name": "Chiga"
+ },
+ "ksh": {
+ "code": "ksh",
+ "name": "Colognian"
+ },
+ "swc": {
+ "code": "swc",
+ "name": "Congo Swahili"
+ },
+ "ebu": {
+ "code": "ebu",
+ "name": "Embu"
+ },
+ "es-MX": {
+ "code": "es-MX",
+ "name": "es_MX"
+ },
+ "ee": {
+ "code": "ee",
+ "name": "Ewe"
+ },
+ "ewo": {
+ "code": "ewo",
+ "name": "Ewondo"
+ },
+ "fur": {
+ "code": "fur",
+ "name": "Friulian"
+ },
+ "ff": {
+ "code": "ff",
+ "name": "Fulah"
+ },
+ "lg": {
+ "code": "lg",
+ "name": "Ganda"
+ },
+ "guz": {
+ "code": "guz",
+ "name": "Gusii"
+ },
+ "dyo": {
+ "code": "dyo",
+ "name": "Jola-Fonyi"
+ },
+ "kea": {
+ "code": "kea",
+ "name": "Kabuverdianu"
+ },
+ "kab": {
+ "code": "kab",
+ "name": "Kabyle"
+ },
+ "kl": {
+ "code": "kl",
+ "name": "Kalaallisut"
+ },
+ "kln": {
+ "code": "kln",
+ "name": "Kalenjin"
+ },
+ "kam": {
+ "code": "kam",
+ "name": "Kamba"
+ },
+ "ki": {
+ "code": "ki",
+ "name": "Kikuyu"
+ },
+ "khq": {
+ "code": "khq",
+ "name": "Koyra Chiini"
+ },
+ "ses": {
+ "code": "ses",
+ "name": "Koyraboro Senni"
+ },
+ "nmg": {
+ "code": "nmg",
+ "name": "Kwasio"
+ },
+ "lag": {
+ "code": "lag",
+ "name": "Langi"
+ },
+ "ln": {
+ "code": "ln",
+ "name": "Lingala"
+ },
+ "dsb": {
+ "code": "dsb",
+ "name": "Lower Sorbian"
+ },
+ "lu": {
+ "code": "lu",
+ "name": "Luba-Katanga"
+ },
+ "luo": {
+ "code": "luo",
+ "name": "Luo"
+ },
+ "luy": {
+ "code": "luy",
+ "name": "Luyia"
+ },
+ "jmc": {
+ "code": "jmc",
+ "name": "Machame"
+ },
+ "mgh": {
+ "code": "mgh",
+ "name": "Makhuwa-Meetto"
+ },
+ "kde": {
+ "code": "kde",
+ "name": "Makonde"
+ },
+ "mas": {
+ "code": "mas",
+ "name": "Masai"
+ },
+ "mer": {
+ "code": "mer",
+ "name": "Meru"
+ },
+ "mfe": {
+ "code": "mfe",
+ "name": "Morisyen"
+ },
+ "mua": {
+ "code": "mua",
+ "name": "Mundang"
+ },
+ "naq": {
+ "code": "naq",
+ "name": "Nama"
+ },
+ "jgo": {
+ "code": "jgo",
+ "name": "Ngomba"
+ },
+ "nd": {
+ "code": "nd",
+ "name": "North Ndebele"
+ },
+ "se": {
+ "code": "se",
+ "name": "Northern Sami"
+ },
+ "nus": {
+ "code": "nus",
+ "name": "Nuer"
+ },
+ "nyn": {
+ "code": "nyn",
+ "name": "Nyankole"
+ },
+ "ro-MD": {
+ "code": "ro-MD",
+ "name": "ro_MD"
+ },
+ "rof": {
+ "code": "rof",
+ "name": "Rombo"
+ },
+ "rn": {
+ "code": "rn",
+ "name": "Rundi"
+ },
+ "rwk": {
+ "code": "rwk",
+ "name": "Rwa"
+ },
+ "saq": {
+ "code": "saq",
+ "name": "Samburu"
+ },
+ "sg": {
+ "code": "sg",
+ "name": "Sango"
+ },
+ "sbp": {
+ "code": "sbp",
+ "name": "Sangu"
+ },
+ "gd": {
+ "code": "gd",
+ "name": "Scottish Gaelic"
+ },
+ "seh": {
+ "code": "seh",
+ "name": "Sena"
+ },
+ "ksb": {
+ "code": "ksb",
+ "name": "Shambala"
+ },
+ "sn": {
+ "code": "sn",
+ "name": "Shona"
+ },
+ "xog": {
+ "code": "xog",
+ "name": "Soga"
+ },
+ "zgh": {
+ "code": "zgh",
+ "name": "Standard Moroccan Tamazight"
+ },
+ "shi": {
+ "code": "shi",
+ "name": "Tachelhit"
+ },
+ "dav": {
+ "code": "dav",
+ "name": "Taita"
+ },
+ "twq": {
+ "code": "twq",
+ "name": "Tasawaq"
+ },
+ "teo": {
+ "code": "teo",
+ "name": "Teso"
+ },
+ "hsb": {
+ "code": "hsb",
+ "name": "Upper Sorbian"
+ },
+ "vai": {
+ "code": "vai",
+ "name": "Vai"
+ },
+ "vun": {
+ "code": "vun",
+ "name": "Vunjo"
+ },
+ "wae": {
+ "code": "wae",
+ "name": "Walser"
+ },
+ "yav": {
+ "code": "yav",
+ "name": "Yangben"
+ },
+ "dje": {
+ "code": "dje",
+ "name": "Zarma"
+ },
+ "kn": {
+ "code": "kn",
+ "name": "ཀ་ན་ཌ་à½"
+ },
+ "kk": {
+ "code": "kk",
+ "name": "ཀ་ཛགས་à½"
+ },
+ "hr": {
+ "code": "hr",
+ "name": "ཀྲོ་ཨེ་ཤི་ཡཱན་à½"
+ },
+ "ks": {
+ "code": "ks",
+ "name": "ཀཱཤ་མི་རི་à½"
+ },
+ "ky": {
+ "code": "ky",
+ "name": "ཀིར་གིས་à½"
+ },
+ "ca": {
+ "code": "ca",
+ "name": "ཀེ་ཊ་ལཱན་à½"
+ },
+ "fr-CA": {
+ "code": "fr-CA",
+ "name": "ཀེ་ན་ཌི་ཡཱན་ཕྲནཅ་à½"
+ },
+ "en-CA": {
+ "code": "en-CA",
+ "name": "ཀེ་ན་ཌི་ཡཱན་ཨིང་ལིཤ་à½"
+ },
+ "ko": {
+ "code": "ko",
+ "name": "ཀོ་རི་ཡཱན་à½"
+ },
+ "km": {
+ "code": "km",
+ "name": "à½à½ºà¼‹à½˜à½ºà½¢à¼‹à½"
+ },
+ "el": {
+ "code": "el",
+ "name": "གྲིཀ་à½"
+ },
+ "gl": {
+ "code": "gl",
+ "name": "གལ་ཨིས་ཨི་ཡན་à½"
+ },
+ "gu": {
+ "code": "gu",
+ "name": "གུ་ཇ་ར་à½à½²à¼‹à½"
+ },
+ "cs": {
+ "code": "cs",
+ "name": "ཅེཀ་à½"
+ },
+ "ja": {
+ "code": "ja",
+ "name": "ཇཱ་པཱ་ནིས་à½"
+ },
+ "de": {
+ "code": "de",
+ "name": "ཇཱར་མཱན་à½"
+ },
+ "ka": {
+ "code": "ka",
+ "name": "ཇཽ་ཇི་ཡཱན་à½"
+ },
+ "tr": {
+ "code": "tr",
+ "name": "ཊཱར་ཀིཤ་à½"
+ },
+ "to": {
+ "code": "to",
+ "name": "ཊོང་གྷན་à½"
+ },
+ "nl": {
+ "code": "nl",
+ "name": "ཌཆ་à½"
+ },
+ "da": {
+ "code": "da",
+ "name": "ཌེ་ནིཤ་à½"
+ },
+ "ta": {
+ "code": "ta",
+ "name": "à½à¼‹à½˜à½²à½£à¼‹à½"
+ },
+ "ti": {
+ "code": "ti",
+ "name": "à½à½²à½‚་རི་ཉ་à½"
+ },
+ "te": {
+ "code": "te",
+ "name": "à½à½ºà¼‹à½£à½´à¼‹à½‚ུ་à½"
+ },
+ "th": {
+ "code": "th",
+ "name": "à½à½±à½ à½²à¼‹à½"
+ },
+ "fy": {
+ "code": "fy",
+ "name": "ནུབ་ཕྼི་སི་ཡན་à½"
+ },
+ "ne": {
+ "code": "ne",
+ "name": "ནེ་པཱལི་à½"
+ },
+ "nn": {
+ "code": "nn",
+ "name": "ནོར་à½à½ºà¼‹à½‡à½²à¼‹à½¡à½±à½“་ནོརསཀ་à½"
+ },
+ "nb": {
+ "code": "nb",
+ "name": "ནོར་à½à½ºà¼‹à½‡à½²à¼‹à½¡à½±à½“་བོཀ་མཱལ་à½"
+ },
+ "fa": {
+ "code": "fa",
+ "name": "པར་ཤི་ཡཱན་à½"
+ },
+ "pa": {
+ "code": "pa",
+ "name": "པཱན་ཇ་བི་à½"
+ },
+ "ps": {
+ "code": "ps",
+ "name": "པཱཤ་à½à½¼à¼‹à½"
+ },
+ "pl": {
+ "code": "pl",
+ "name": "པོ་ལིཤ་à½"
+ },
+ "pt": {
+ "code": "pt",
+ "name": "པོར་ཅུ་གིས་à½"
+ },
+ "fr": {
+ "code": "fr",
+ "name": "ཕྲནཅ་à½"
+ },
+ "nl-BE": {
+ "code": "nl-BE",
+ "name": "ཕྷེལེ་མིཤ་à½"
+ },
+ "fo": {
+ "code": "fo",
+ "name": "ཕཱ་རོ་ཨིས་à½"
+ },
+ "fi": {
+ "code": "fi",
+ "name": "ཕི་ནིཤ་à½"
+ },
+ "fil": {
+ "code": "fil",
+ "name": "ཕི་ལི་པི་ནོ་à½"
+ },
+ "bn": {
+ "code": "bn",
+ "name": "བངྒ་ལ་à½"
+ },
+ "my": {
+ "code": "my",
+ "name": "བར་མིས་à½"
+ },
+ "pt-BR": {
+ "code": "pt-BR",
+ "name": "བྲ་ཛི་ལི་ཡཱན་པོར་ཅུ་གིས་à½"
+ },
+ "en-GB": {
+ "code": "en-GB",
+ "name": "བྲི་ཊིཤ་ཨིང་ལིཤ་à½"
+ },
+ "bs": {
+ "code": "bs",
+ "name": "བྷོས་ནི་ཡཱན་à½"
+ },
+ "bg": {
+ "code": "bg",
+ "name": "བཱལ་གེ་རི་ཡཱན་à½"
+ },
+ "eu": {
+ "code": "eu",
+ "name": "བཱསཀ་à½"
+ },
+ "vi": {
+ "code": "vi",
+ "name": "བེཊ་ནཱ་མིས་à½"
+ },
+ "be": {
+ "code": "be",
+ "name": "བེལ་ཨ་རུས་à½"
+ },
+ "bo": {
+ "code": "bo",
+ "name": "བོད་à½"
+ },
+ "mr": {
+ "code": "mr",
+ "name": "མ་ར་à½à½²à¼‹à½"
+ },
+ "mg": {
+ "code": "mg",
+ "name": "མ་ལ་ག་སི་à½"
+ },
+ "ml": {
+ "code": "ml",
+ "name": "མ་ལ་ཡ་ལམ་à½"
+ },
+ "ms": {
+ "code": "ms",
+ "name": "མ་ལེ་à½"
+ },
+ "mk": {
+ "code": "mk",
+ "name": "མ་སེ་ཌོ་ནི་ཡཱན་à½"
+ },
+ "mt": {
+ "code": "mt",
+ "name": "མཱལ་ཊ་à½"
+ },
+ "ug": {
+ "code": "ug",
+ "name": "à½à½²à¼‹à½‚ུར་à½"
+ },
+ "cy": {
+ "code": "cy",
+ "name": "à½à½ºà½£à½¤à¼‹à½"
+ },
+ "zu": {
+ "code": "zu",
+ "name": "ཟུ་ལུ་à½"
+ },
+ "uk": {
+ "code": "uk",
+ "name": "ཡུ་ཀེ་རེ་ནི་ཡཱན་à½"
+ },
+ "es-ES": {
+ "code": "es-ES",
+ "name": "ཡུ་རོབ་ཀྱི་ཨིས་པེ་ནིཤ་à½"
+ },
+ "en-US": {
+ "code": "en-US",
+ "name": "ཡུ་ཨེས་ཨིང་ལིཤ་à½"
+ },
+ "yo": {
+ "code": "yo",
+ "name": "ཡོ་རུ་བ་à½"
+ },
+ "zh": {
+ "code": "zh",
+ "name": "རྒྱ་མི་à½"
+ },
+ "zh-Hans": {
+ "code": "zh-Hans",
+ "name": "རྒྱ་མི་à½à¼‹à½ à½‡à½˜à¼‹à½¦à½„མ"
+ },
+ "dz": {
+ "code": "dz",
+ "name": "རྫོང་à½"
+ },
+ "ro": {
+ "code": "ro",
+ "name": "རོ་མེ་ནི་ཡཱན་à½"
+ },
+ "rm": {
+ "code": "rm",
+ "name": "རོ་མེ་ནིཤ་à½"
+ },
+ "lb": {
+ "code": "lb",
+ "name": "ལག་ཛམ་བོརྒ་à½"
+ },
+ "lv": {
+ "code": "lv",
+ "name": "ལཊ་བི་ཡཱན་à½"
+ },
+ "lo": {
+ "code": "lo",
+ "name": "ལཱ་à½à½¼à½¦à¼‹à½"
+ },
+ "lt": {
+ "code": "lt",
+ "name": "ལི་à½à½´à¼‹à½à½ºà¼‹à½“ི་ཡཱན་à½"
+ },
+ "zh-Hant": {
+ "code": "zh-Hant",
+ "name": "སྔ་དུས་ཀྱི་རྒྱ་མི་à½"
+ },
+ "sw": {
+ "code": "sw",
+ "name": "སྭཱ་ཧི་ལི་à½"
+ },
+ "sr": {
+ "code": "sr",
+ "name": "སཱར་བྷི་ཡཱན་à½"
+ },
+ "si": {
+ "code": "si",
+ "name": "སིང་ཧ་ལ་à½"
+ },
+ "de-CH": {
+ "code": "de-CH",
+ "name": "སུ་ཡིས་གི་མà½à½¼à¼‹à½¦à½ à½²à¼‹à½‡à½±à½¢à¼‹à½˜à½±à½“་à½"
+ },
+ "gsw": {
+ "code": "gsw",
+ "name": "སུ་ཡིས་ཇཱར་མཱན་à½"
+ },
+ "fr-CH": {
+ "code": "fr-CH",
+ "name": "སུ་ཡིས་ཕྲནཅ་à½"
+ },
+ "sk": {
+ "code": "sk",
+ "name": "སུ་ལོ་བཱཀ་à½"
+ },
+ "sl": {
+ "code": "sl",
+ "name": "སུ་ལོ་བི་ནི་ཡཱན་à½"
+ },
+ "sv": {
+ "code": "sv",
+ "name": "སུའི་ཌིཤ་à½"
+ },
+ "so": {
+ "code": "so",
+ "name": "སོ་མ་ལི་à½"
+ },
+ "mn": {
+ "code": "mn",
+ "name": "སོག་པོའི་à½"
+ },
+ "ha": {
+ "code": "ha",
+ "name": "ཧà½à¼‹à½¦à¼‹à½"
+ },
+ "hu": {
+ "code": "hu",
+ "name": "ཧཱང་གྷ་རི་ཡཱན་à½"
+ },
+ "hi": {
+ "code": "hi",
+ "name": "ཧིན་དི་à½"
+ },
+ "he": {
+ "code": "he",
+ "name": "ཧེ་བྲུ་à½"
+ },
+ "az": {
+ "code": "az",
+ "name": "ཨ་ཛར་བྷའི་ཇཱན་à½"
+ },
+ "is": {
+ "code": "is",
+ "name": "ཨ་ཡིས་ལེན་ཌིཀ་à½"
+ },
+ "af": {
+ "code": "af",
+ "name": "ཨཕ་རི་ཀཱནས་à½"
+ },
+ "am": {
+ "code": "am",
+ "name": "ཨམ་ཧ་རིཀ་à½"
+ },
+ "hy": {
+ "code": "hy",
+ "name": "ཨར་མི་ནི་ཡཱན་à½"
+ },
+ "ga": {
+ "code": "ga",
+ "name": "ཨཱའི་རིཤ་à½"
+ },
+ "sq": {
+ "code": "sq",
+ "name": "ཨཱལ་བེ་ནི་ཡཱན་à½"
+ },
+ "de-AT": {
+ "code": "de-AT",
+ "name": "ཨཱོས་ཊྲི་ཡཱན་ཇཱར་མཱན་à½"
+ },
+ "en-AU": {
+ "code": "en-AU",
+ "name": "ཨཱོས་ཊྲེ་ལི་ཡཱན་ཨིང་ལིཤ་à½"
+ },
+ "it": {
+ "code": "it",
+ "name": "ཨི་ཊ་ལི་ཡཱན་à½"
+ },
+ "pt-PT": {
+ "code": "pt-PT",
+ "name": "ཨི་བེ་རི་ཡཱན་པོར་ཅུ་གིས་à½"
+ },
+ "en": {
+ "code": "en",
+ "name": "ཨིང་ལིཤ་à½"
+ },
+ "id": {
+ "code": "id",
+ "name": "ཨིན་ཌོ་ནེ་ཤི་ཡཱན་à½"
+ },
+ "es": {
+ "code": "es",
+ "name": "ཨིས་པེ་ནིཤ་à½"
+ },
+ "ru": {
+ "code": "ru",
+ "name": "ཨུ་རུ་སུའི་à½"
+ },
+ "ur": {
+ "code": "ur",
+ "name": "ཨུར་དུ་à½"
+ },
+ "uz": {
+ "code": "uz",
+ "name": "ཨུས་བེཀ་à½"
+ },
+ "ar": {
+ "code": "ar",
+ "name": "ཨེ་ར་བིཀ་à½"
+ },
+ "et": {
+ "code": "et",
+ "name": "ཨེས་ཊོ་ནི་ཡཱན་à½"
+ },
+ "eo": {
+ "code": "eo",
+ "name": "ཨེས་པ་རཱན་à½à½¼à¼‹à½"
+ },
+ "or": {
+ "code": "or",
+ "name": "ཨོ་རི་ཡ་à½"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/language/ebu.json b/library/intl/resources/language/ebu.json
new file mode 100644
index 000000000..bd8d663c7
--- /dev/null
+++ b/library/intl/resources/language/ebu.json
@@ -0,0 +1,738 @@
+{
+ "af": {
+ "code": "af",
+ "name": "Afrikaans"
+ },
+ "agq": {
+ "code": "agq",
+ "name": "Aghem"
+ },
+ "sq": {
+ "code": "sq",
+ "name": "Albanian"
+ },
+ "ar-001": {
+ "code": "ar-001",
+ "name": "ar_001"
+ },
+ "hy": {
+ "code": "hy",
+ "name": "Armenian"
+ },
+ "ast": {
+ "code": "ast",
+ "name": "Asturian"
+ },
+ "asa": {
+ "code": "asa",
+ "name": "Asu"
+ },
+ "az": {
+ "code": "az",
+ "name": "Azerbaijani"
+ },
+ "ksf": {
+ "code": "ksf",
+ "name": "Bafia"
+ },
+ "bm": {
+ "code": "bm",
+ "name": "Bambara"
+ },
+ "bas": {
+ "code": "bas",
+ "name": "Basaa"
+ },
+ "eu": {
+ "code": "eu",
+ "name": "Basque"
+ },
+ "bez": {
+ "code": "bez",
+ "name": "Bena"
+ },
+ "brx": {
+ "code": "brx",
+ "name": "Bodo"
+ },
+ "bs": {
+ "code": "bs",
+ "name": "Bosnian"
+ },
+ "br": {
+ "code": "br",
+ "name": "Breton"
+ },
+ "ca": {
+ "code": "ca",
+ "name": "Catalan"
+ },
+ "tzm": {
+ "code": "tzm",
+ "name": "Central Atlas Tamazight"
+ },
+ "chr": {
+ "code": "chr",
+ "name": "Cherokee"
+ },
+ "cgg": {
+ "code": "cgg",
+ "name": "Chiga"
+ },
+ "ksh": {
+ "code": "ksh",
+ "name": "Colognian"
+ },
+ "swc": {
+ "code": "swc",
+ "name": "Congo Swahili"
+ },
+ "hr": {
+ "code": "hr",
+ "name": "Croatian"
+ },
+ "da": {
+ "code": "da",
+ "name": "Danish"
+ },
+ "de-AT": {
+ "code": "de-AT",
+ "name": "de_AT"
+ },
+ "de-CH": {
+ "code": "de-CH",
+ "name": "de_CH"
+ },
+ "dz": {
+ "code": "dz",
+ "name": "Dzongkha"
+ },
+ "en-AU": {
+ "code": "en-AU",
+ "name": "en_AU"
+ },
+ "en-CA": {
+ "code": "en-CA",
+ "name": "en_CA"
+ },
+ "en-GB": {
+ "code": "en-GB",
+ "name": "en_GB"
+ },
+ "en-US": {
+ "code": "en-US",
+ "name": "en_US"
+ },
+ "es-ES": {
+ "code": "es-ES",
+ "name": "es_ES"
+ },
+ "es-MX": {
+ "code": "es-MX",
+ "name": "es_MX"
+ },
+ "eo": {
+ "code": "eo",
+ "name": "Esperanto"
+ },
+ "et": {
+ "code": "et",
+ "name": "Estonian"
+ },
+ "ee": {
+ "code": "ee",
+ "name": "Ewe"
+ },
+ "ewo": {
+ "code": "ewo",
+ "name": "Ewondo"
+ },
+ "fo": {
+ "code": "fo",
+ "name": "Faroese"
+ },
+ "fil": {
+ "code": "fil",
+ "name": "Filipino"
+ },
+ "fi": {
+ "code": "fi",
+ "name": "Finnish"
+ },
+ "fr-CA": {
+ "code": "fr-CA",
+ "name": "fr_CA"
+ },
+ "fr-CH": {
+ "code": "fr-CH",
+ "name": "fr_CH"
+ },
+ "fur": {
+ "code": "fur",
+ "name": "Friulian"
+ },
+ "ff": {
+ "code": "ff",
+ "name": "Fulah"
+ },
+ "gl": {
+ "code": "gl",
+ "name": "Galician"
+ },
+ "lg": {
+ "code": "lg",
+ "name": "Ganda"
+ },
+ "ka": {
+ "code": "ka",
+ "name": "Georgian"
+ },
+ "gu": {
+ "code": "gu",
+ "name": "Gujarati"
+ },
+ "guz": {
+ "code": "guz",
+ "name": "Gusii"
+ },
+ "he": {
+ "code": "he",
+ "name": "Hebrew"
+ },
+ "is": {
+ "code": "is",
+ "name": "Icelandic"
+ },
+ "ga": {
+ "code": "ga",
+ "name": "Irish"
+ },
+ "dyo": {
+ "code": "dyo",
+ "name": "Jola-Fonyi"
+ },
+ "kea": {
+ "code": "kea",
+ "name": "Kabuverdianu"
+ },
+ "kab": {
+ "code": "kab",
+ "name": "Kabyle"
+ },
+ "kl": {
+ "code": "kl",
+ "name": "Kalaallisut"
+ },
+ "kln": {
+ "code": "kln",
+ "name": "Kalenjin"
+ },
+ "kam": {
+ "code": "kam",
+ "name": "Kamba"
+ },
+ "kn": {
+ "code": "kn",
+ "name": "Kannada"
+ },
+ "ks": {
+ "code": "ks",
+ "name": "Kashmiri"
+ },
+ "kk": {
+ "code": "kk",
+ "name": "Kazakh"
+ },
+ "ak": {
+ "code": "ak",
+ "name": "KÄ©akan"
+ },
+ "am": {
+ "code": "am",
+ "name": "KÄ©amhari"
+ },
+ "fa": {
+ "code": "fa",
+ "name": "KÄ©anjemi"
+ },
+ "ar": {
+ "code": "ar",
+ "name": "KÄ©arabu"
+ },
+ "bn": {
+ "code": "bn",
+ "name": "KÄ©bangla"
+ },
+ "bg": {
+ "code": "bg",
+ "name": "KÄ©bulgaria"
+ },
+ "my": {
+ "code": "my",
+ "name": "KÄ©burma"
+ },
+ "cs": {
+ "code": "cs",
+ "name": "KÄ©cheki"
+ },
+ "zh": {
+ "code": "zh",
+ "name": "KÄ©china"
+ },
+ "ebu": {
+ "code": "ebu",
+ "name": "KÄ©embu"
+ },
+ "fr": {
+ "code": "fr",
+ "name": "KÄ©faransa"
+ },
+ "ha": {
+ "code": "ha",
+ "name": "KÄ©hausa"
+ },
+ "hi": {
+ "code": "hi",
+ "name": "Kĩhindĩ"
+ },
+ "es": {
+ "code": "es",
+ "name": "KÄ©hispania"
+ },
+ "nl": {
+ "code": "nl",
+ "name": "KÄ©holanzi"
+ },
+ "hu": {
+ "code": "hu",
+ "name": "KÄ©hungari"
+ },
+ "id": {
+ "code": "id",
+ "name": "KÄ©indonesia"
+ },
+ "it": {
+ "code": "it",
+ "name": "KÄ©italiano"
+ },
+ "km": {
+ "code": "km",
+ "name": "KÄ©kambodia"
+ },
+ "ko": {
+ "code": "ko",
+ "name": "KÄ©korea"
+ },
+ "ki": {
+ "code": "ki",
+ "name": "Kikuyu"
+ },
+ "ms": {
+ "code": "ms",
+ "name": "KÄ©malesia"
+ },
+ "be": {
+ "code": "be",
+ "name": "KÄ©mbelarusi"
+ },
+ "ne": {
+ "code": "ne",
+ "name": "KÄ©nepali"
+ },
+ "el": {
+ "code": "el",
+ "name": "KÄ©ngriki"
+ },
+ "ja": {
+ "code": "ja",
+ "name": "KÄ©njapani"
+ },
+ "de": {
+ "code": "de",
+ "name": "KÄ©njeremani"
+ },
+ "pl": {
+ "code": "pl",
+ "name": "KÄ©polandi"
+ },
+ "pa": {
+ "code": "pa",
+ "name": "KÄ©punjabi"
+ },
+ "pt": {
+ "code": "pt",
+ "name": "KÄ©reno"
+ },
+ "ro": {
+ "code": "ro",
+ "name": "KÄ©romania"
+ },
+ "ru": {
+ "code": "ru",
+ "name": "KÄ©rusi"
+ },
+ "so": {
+ "code": "so",
+ "name": "KÄ©somali"
+ },
+ "sv": {
+ "code": "sv",
+ "name": "KÄ©swidi"
+ },
+ "th": {
+ "code": "th",
+ "name": "KÄ©tailandi"
+ },
+ "ta": {
+ "code": "ta",
+ "name": "KÄ©tamil"
+ },
+ "en": {
+ "code": "en",
+ "name": "KÄ©thungu"
+ },
+ "tr": {
+ "code": "tr",
+ "name": "KÄ©turuki"
+ },
+ "uk": {
+ "code": "uk",
+ "name": "KÄ©ukrania"
+ },
+ "ur": {
+ "code": "ur",
+ "name": "KÄ©urdu"
+ },
+ "vi": {
+ "code": "vi",
+ "name": "KÄ©vietinamu"
+ },
+ "yo": {
+ "code": "yo",
+ "name": "KÄ©yoruba"
+ },
+ "zu": {
+ "code": "zu",
+ "name": "KÄ©zulu"
+ },
+ "khq": {
+ "code": "khq",
+ "name": "Koyra Chiini"
+ },
+ "ses": {
+ "code": "ses",
+ "name": "Koyraboro Senni"
+ },
+ "nmg": {
+ "code": "nmg",
+ "name": "Kwasio"
+ },
+ "ky": {
+ "code": "ky",
+ "name": "Kyrgyz"
+ },
+ "lag": {
+ "code": "lag",
+ "name": "Langi"
+ },
+ "lo": {
+ "code": "lo",
+ "name": "Lao"
+ },
+ "lv": {
+ "code": "lv",
+ "name": "Latvian"
+ },
+ "ln": {
+ "code": "ln",
+ "name": "Lingala"
+ },
+ "lt": {
+ "code": "lt",
+ "name": "Lithuanian"
+ },
+ "dsb": {
+ "code": "dsb",
+ "name": "Lower Sorbian"
+ },
+ "lu": {
+ "code": "lu",
+ "name": "Luba-Katanga"
+ },
+ "luo": {
+ "code": "luo",
+ "name": "Luo"
+ },
+ "lb": {
+ "code": "lb",
+ "name": "Luxembourgish"
+ },
+ "luy": {
+ "code": "luy",
+ "name": "Luyia"
+ },
+ "mk": {
+ "code": "mk",
+ "name": "Macedonian"
+ },
+ "jmc": {
+ "code": "jmc",
+ "name": "Machame"
+ },
+ "mgh": {
+ "code": "mgh",
+ "name": "Makhuwa-Meetto"
+ },
+ "kde": {
+ "code": "kde",
+ "name": "Makonde"
+ },
+ "mg": {
+ "code": "mg",
+ "name": "Malagasy"
+ },
+ "ml": {
+ "code": "ml",
+ "name": "Malayalam"
+ },
+ "mt": {
+ "code": "mt",
+ "name": "Maltese"
+ },
+ "mr": {
+ "code": "mr",
+ "name": "Marathi"
+ },
+ "mas": {
+ "code": "mas",
+ "name": "Masai"
+ },
+ "mer": {
+ "code": "mer",
+ "name": "Meru"
+ },
+ "mn": {
+ "code": "mn",
+ "name": "Mongolian"
+ },
+ "mfe": {
+ "code": "mfe",
+ "name": "Morisyen"
+ },
+ "mua": {
+ "code": "mua",
+ "name": "Mundang"
+ },
+ "naq": {
+ "code": "naq",
+ "name": "Nama"
+ },
+ "jgo": {
+ "code": "jgo",
+ "name": "Ngomba"
+ },
+ "nl-BE": {
+ "code": "nl-BE",
+ "name": "nl_BE"
+ },
+ "nd": {
+ "code": "nd",
+ "name": "North Ndebele"
+ },
+ "se": {
+ "code": "se",
+ "name": "Northern Sami"
+ },
+ "nb": {
+ "code": "nb",
+ "name": "Norwegian Bokmål"
+ },
+ "nn": {
+ "code": "nn",
+ "name": "Norwegian Nynorsk"
+ },
+ "nus": {
+ "code": "nus",
+ "name": "Nuer"
+ },
+ "nyn": {
+ "code": "nyn",
+ "name": "Nyankole"
+ },
+ "or": {
+ "code": "or",
+ "name": "Oriya"
+ },
+ "ps": {
+ "code": "ps",
+ "name": "Pashto"
+ },
+ "pt-BR": {
+ "code": "pt-BR",
+ "name": "pt_BR"
+ },
+ "pt-PT": {
+ "code": "pt-PT",
+ "name": "pt_PT"
+ },
+ "ro-MD": {
+ "code": "ro-MD",
+ "name": "ro_MD"
+ },
+ "rm": {
+ "code": "rm",
+ "name": "Romansh"
+ },
+ "rof": {
+ "code": "rof",
+ "name": "Rombo"
+ },
+ "rn": {
+ "code": "rn",
+ "name": "Rundi"
+ },
+ "rwk": {
+ "code": "rwk",
+ "name": "Rwa"
+ },
+ "saq": {
+ "code": "saq",
+ "name": "Samburu"
+ },
+ "sg": {
+ "code": "sg",
+ "name": "Sango"
+ },
+ "sbp": {
+ "code": "sbp",
+ "name": "Sangu"
+ },
+ "gd": {
+ "code": "gd",
+ "name": "Scottish Gaelic"
+ },
+ "seh": {
+ "code": "seh",
+ "name": "Sena"
+ },
+ "sr": {
+ "code": "sr",
+ "name": "Serbian"
+ },
+ "ksb": {
+ "code": "ksb",
+ "name": "Shambala"
+ },
+ "sn": {
+ "code": "sn",
+ "name": "Shona"
+ },
+ "si": {
+ "code": "si",
+ "name": "Sinhala"
+ },
+ "sk": {
+ "code": "sk",
+ "name": "Slovak"
+ },
+ "sl": {
+ "code": "sl",
+ "name": "Slovenian"
+ },
+ "xog": {
+ "code": "xog",
+ "name": "Soga"
+ },
+ "zgh": {
+ "code": "zgh",
+ "name": "Standard Moroccan Tamazight"
+ },
+ "sw": {
+ "code": "sw",
+ "name": "Swahili"
+ },
+ "gsw": {
+ "code": "gsw",
+ "name": "Swiss German"
+ },
+ "shi": {
+ "code": "shi",
+ "name": "Tachelhit"
+ },
+ "dav": {
+ "code": "dav",
+ "name": "Taita"
+ },
+ "twq": {
+ "code": "twq",
+ "name": "Tasawaq"
+ },
+ "te": {
+ "code": "te",
+ "name": "Telugu"
+ },
+ "teo": {
+ "code": "teo",
+ "name": "Teso"
+ },
+ "bo": {
+ "code": "bo",
+ "name": "Tibetan"
+ },
+ "ti": {
+ "code": "ti",
+ "name": "Tigrinya"
+ },
+ "to": {
+ "code": "to",
+ "name": "Tongan"
+ },
+ "hsb": {
+ "code": "hsb",
+ "name": "Upper Sorbian"
+ },
+ "ug": {
+ "code": "ug",
+ "name": "Uyghur"
+ },
+ "uz": {
+ "code": "uz",
+ "name": "Uzbek"
+ },
+ "vai": {
+ "code": "vai",
+ "name": "Vai"
+ },
+ "vun": {
+ "code": "vun",
+ "name": "Vunjo"
+ },
+ "wae": {
+ "code": "wae",
+ "name": "Walser"
+ },
+ "cy": {
+ "code": "cy",
+ "name": "Welsh"
+ },
+ "fy": {
+ "code": "fy",
+ "name": "Western Frisian"
+ },
+ "yav": {
+ "code": "yav",
+ "name": "Yangben"
+ },
+ "dje": {
+ "code": "dje",
+ "name": "Zarma"
+ },
+ "zh-Hans": {
+ "code": "zh-Hans",
+ "name": "zh_Hans"
+ },
+ "zh-Hant": {
+ "code": "zh-Hant",
+ "name": "zh_Hant"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/language/ee.json b/library/intl/resources/language/ee.json
new file mode 100644
index 000000000..05fcc120b
--- /dev/null
+++ b/library/intl/resources/language/ee.json
@@ -0,0 +1,738 @@
+{
+ "af": {
+ "code": "af",
+ "name": "afrikaangbe"
+ },
+ "agq": {
+ "code": "agq",
+ "name": "aghemgbe"
+ },
+ "sq": {
+ "code": "sq",
+ "name": "albaniagbe"
+ },
+ "am": {
+ "code": "am",
+ "name": "amhariagbe"
+ },
+ "ar-001": {
+ "code": "ar-001",
+ "name": "ar_001"
+ },
+ "ar": {
+ "code": "ar",
+ "name": "arabiagbe"
+ },
+ "hy": {
+ "code": "hy",
+ "name": "armeniagbe"
+ },
+ "asa": {
+ "code": "asa",
+ "name": "asagbe"
+ },
+ "ast": {
+ "code": "ast",
+ "name": "asturiagbe"
+ },
+ "en-AU": {
+ "code": "en-AU",
+ "name": "australiatɔwo ƒe yevugbe"
+ },
+ "de-AT": {
+ "code": "de-AT",
+ "name": "austriatɔwo ƒe germaniagbe"
+ },
+ "az": {
+ "code": "az",
+ "name": "azerbaijangbe"
+ },
+ "ksf": {
+ "code": "ksf",
+ "name": "bafiagbe"
+ },
+ "bm": {
+ "code": "bm",
+ "name": "bambaragbe"
+ },
+ "bas": {
+ "code": "bas",
+ "name": "basaagbe"
+ },
+ "eu": {
+ "code": "eu",
+ "name": "basqugbe"
+ },
+ "be": {
+ "code": "be",
+ "name": "belarusiagbe"
+ },
+ "bez": {
+ "code": "bez",
+ "name": "benagbe"
+ },
+ "bn": {
+ "code": "bn",
+ "name": "bengalgbe"
+ },
+ "zh-Hant": {
+ "code": "zh-Hant",
+ "name": "blema tsainagbe"
+ },
+ "ak": {
+ "code": "ak",
+ "name": "blugbe"
+ },
+ "brx": {
+ "code": "brx",
+ "name": "bodogbe"
+ },
+ "bs": {
+ "code": "bs",
+ "name": "bosniagbe"
+ },
+ "pt-BR": {
+ "code": "pt-BR",
+ "name": "braziltɔwo ƒe portugalgbe"
+ },
+ "br": {
+ "code": "br",
+ "name": "bretongbe"
+ },
+ "en-GB": {
+ "code": "en-GB",
+ "name": "britaintɔwo ƒe yevugbe"
+ },
+ "bg": {
+ "code": "bg",
+ "name": "bulgariagbe"
+ },
+ "my": {
+ "code": "my",
+ "name": "burmagbe"
+ },
+ "kea": {
+ "code": "kea",
+ "name": "cape verdegbe"
+ },
+ "tzm": {
+ "code": "tzm",
+ "name": "Central Atlas Tamazight"
+ },
+ "chr": {
+ "code": "chr",
+ "name": "Cherokee"
+ },
+ "cgg": {
+ "code": "cgg",
+ "name": "Chiga"
+ },
+ "ksh": {
+ "code": "ksh",
+ "name": "Colognian"
+ },
+ "swc": {
+ "code": "swc",
+ "name": "Congo Swahili"
+ },
+ "da": {
+ "code": "da",
+ "name": "denmarkgbe"
+ },
+ "ja": {
+ "code": "ja",
+ "name": "dzapangbe"
+ },
+ "nd": {
+ "code": "nd",
+ "name": "dziehe ndebelegbe"
+ },
+ "se": {
+ "code": "se",
+ "name": "dziehe samigbe"
+ },
+ "dyo": {
+ "code": "dyo",
+ "name": "dzola-fonyigbe"
+ },
+ "dz": {
+ "code": "dz",
+ "name": "dzongkhagbe"
+ },
+ "ebu": {
+ "code": "ebu",
+ "name": "embugbe"
+ },
+ "es-MX": {
+ "code": "es-MX",
+ "name": "es_MX"
+ },
+ "eo": {
+ "code": "eo",
+ "name": "esperantogbe"
+ },
+ "et": {
+ "code": "et",
+ "name": "estoniagbe"
+ },
+ "ee": {
+ "code": "ee",
+ "name": "eʋegbe"
+ },
+ "ewo": {
+ "code": "ewo",
+ "name": "ewondogbe"
+ },
+ "fo": {
+ "code": "fo",
+ "name": "faroegbe"
+ },
+ "fil": {
+ "code": "fil",
+ "name": "filipingbe"
+ },
+ "fi": {
+ "code": "fi",
+ "name": "finlanÉ–gbe"
+ },
+ "nl-BE": {
+ "code": "nl-BE",
+ "name": "flemiagbe"
+ },
+ "fr": {
+ "code": "fr",
+ "name": "fransegbe"
+ },
+ "fur": {
+ "code": "fur",
+ "name": "Friulian"
+ },
+ "ff": {
+ "code": "ff",
+ "name": "fulagbe"
+ },
+ "gl": {
+ "code": "gl",
+ "name": "galatagbe"
+ },
+ "lg": {
+ "code": "lg",
+ "name": "Ganda"
+ },
+ "de": {
+ "code": "de",
+ "name": "germaniagbe"
+ },
+ "ka": {
+ "code": "ka",
+ "name": "gɔgiagbe"
+ },
+ "el": {
+ "code": "el",
+ "name": "grisigbe"
+ },
+ "gu": {
+ "code": "gu",
+ "name": "gujarati"
+ },
+ "guz": {
+ "code": "guz",
+ "name": "Gusii"
+ },
+ "fy": {
+ "code": "fy",
+ "name": "É£etoÉ–oÆ’e frisiagbe"
+ },
+ "ha": {
+ "code": "ha",
+ "name": "hausagbe"
+ },
+ "he": {
+ "code": "he",
+ "name": "hebrigbe"
+ },
+ "hi": {
+ "code": "hi",
+ "name": "hindigbe"
+ },
+ "nl": {
+ "code": "nl",
+ "name": "hɔlandgbe"
+ },
+ "hu": {
+ "code": "hu",
+ "name": "hungarigbe"
+ },
+ "pt-PT": {
+ "code": "pt-PT",
+ "name": "iberiatɔwo ƒe portugalgbe"
+ },
+ "es-ES": {
+ "code": "es-ES",
+ "name": "iberiatɔwo ƒe spaniagbe"
+ },
+ "is": {
+ "code": "is",
+ "name": "icelanÉ–gbe"
+ },
+ "id": {
+ "code": "id",
+ "name": "indonesiagbe"
+ },
+ "ga": {
+ "code": "ga",
+ "name": "irelanÉ–gbe"
+ },
+ "it": {
+ "code": "it",
+ "name": "italiagbe"
+ },
+ "kab": {
+ "code": "kab",
+ "name": "Kabyle"
+ },
+ "kl": {
+ "code": "kl",
+ "name": "kalaalisugbe"
+ },
+ "kln": {
+ "code": "kln",
+ "name": "Kalenjin"
+ },
+ "kam": {
+ "code": "kam",
+ "name": "Kamba"
+ },
+ "fr-CA": {
+ "code": "fr-CA",
+ "name": "kanadatɔwo ƒe fransegbe"
+ },
+ "en-CA": {
+ "code": "en-CA",
+ "name": "kanadatɔwo ƒe yevugbe"
+ },
+ "kn": {
+ "code": "kn",
+ "name": "kannadagbe"
+ },
+ "ks": {
+ "code": "ks",
+ "name": "kashmirgbe"
+ },
+ "ca": {
+ "code": "ca",
+ "name": "katalagbe"
+ },
+ "kk": {
+ "code": "kk",
+ "name": "kazakhstangbe"
+ },
+ "km": {
+ "code": "km",
+ "name": "khmergbe"
+ },
+ "ki": {
+ "code": "ki",
+ "name": "Kikuyu"
+ },
+ "zh": {
+ "code": "zh",
+ "name": "kinagbe"
+ },
+ "ky": {
+ "code": "ky",
+ "name": "kirghistangbe"
+ },
+ "ko": {
+ "code": "ko",
+ "name": "koreagbe"
+ },
+ "khq": {
+ "code": "khq",
+ "name": "Koyra Chiini"
+ },
+ "ses": {
+ "code": "ses",
+ "name": "Koyraboro Senni"
+ },
+ "hr": {
+ "code": "hr",
+ "name": "kroatiagbe"
+ },
+ "nmg": {
+ "code": "nmg",
+ "name": "kwasiogbe"
+ },
+ "lb": {
+ "code": "lb",
+ "name": "laksembɔggbe"
+ },
+ "lag": {
+ "code": "lag",
+ "name": "Langi"
+ },
+ "lo": {
+ "code": "lo",
+ "name": "laogbe"
+ },
+ "lv": {
+ "code": "lv",
+ "name": "latviagbe"
+ },
+ "ln": {
+ "code": "ln",
+ "name": "lingala"
+ },
+ "lt": {
+ "code": "lt",
+ "name": "lithuaniagbe"
+ },
+ "dsb": {
+ "code": "dsb",
+ "name": "Lower Sorbian"
+ },
+ "lu": {
+ "code": "lu",
+ "name": "luba-katangagbe"
+ },
+ "luo": {
+ "code": "luo",
+ "name": "Luo"
+ },
+ "luy": {
+ "code": "luy",
+ "name": "luyiagbe"
+ },
+ "jmc": {
+ "code": "jmc",
+ "name": "Machame"
+ },
+ "mk": {
+ "code": "mk",
+ "name": "makedoniagbe"
+ },
+ "kde": {
+ "code": "kde",
+ "name": "Makonde"
+ },
+ "mgh": {
+ "code": "mgh",
+ "name": "makuwa-mitogbe"
+ },
+ "mg": {
+ "code": "mg",
+ "name": "malagasegbe"
+ },
+ "ml": {
+ "code": "ml",
+ "name": "malayagbe"
+ },
+ "ms": {
+ "code": "ms",
+ "name": "malaygbe"
+ },
+ "mt": {
+ "code": "mt",
+ "name": "maltagbe"
+ },
+ "mr": {
+ "code": "mr",
+ "name": "marathiagbe"
+ },
+ "mas": {
+ "code": "mas",
+ "name": "Masai"
+ },
+ "mer": {
+ "code": "mer",
+ "name": "Meru"
+ },
+ "mn": {
+ "code": "mn",
+ "name": "mongoliagbe"
+ },
+ "mfe": {
+ "code": "mfe",
+ "name": "Morisyen"
+ },
+ "mua": {
+ "code": "mua",
+ "name": "mundangbe"
+ },
+ "naq": {
+ "code": "naq",
+ "name": "Nama"
+ },
+ "ne": {
+ "code": "ne",
+ "name": "nepalgbe"
+ },
+ "jgo": {
+ "code": "jgo",
+ "name": "Ngomba"
+ },
+ "nb": {
+ "code": "nb",
+ "name": "nɔweigbe bokmål"
+ },
+ "nn": {
+ "code": "nn",
+ "name": "nɔweigbe ninɔsk"
+ },
+ "nus": {
+ "code": "nus",
+ "name": "nuergbe"
+ },
+ "nyn": {
+ "code": "nyn",
+ "name": "Nyankole"
+ },
+ "or": {
+ "code": "or",
+ "name": "oriyagbe"
+ },
+ "ps": {
+ "code": "ps",
+ "name": "pashtogbe"
+ },
+ "fa": {
+ "code": "fa",
+ "name": "persiagbe"
+ },
+ "pl": {
+ "code": "pl",
+ "name": "polandgbe"
+ },
+ "pt": {
+ "code": "pt",
+ "name": "pɔtugalgbe"
+ },
+ "pa": {
+ "code": "pa",
+ "name": "pundzabgbe"
+ },
+ "ro-MD": {
+ "code": "ro-MD",
+ "name": "ro_MD"
+ },
+ "ro": {
+ "code": "ro",
+ "name": "romaniagbe"
+ },
+ "rm": {
+ "code": "rm",
+ "name": "romanshgbe"
+ },
+ "rof": {
+ "code": "rof",
+ "name": "rombogbe"
+ },
+ "ru": {
+ "code": "ru",
+ "name": "rɔtsiagbe"
+ },
+ "rn": {
+ "code": "rn",
+ "name": "rundigbe"
+ },
+ "rwk": {
+ "code": "rwk",
+ "name": "rwagbe"
+ },
+ "saq": {
+ "code": "saq",
+ "name": "Samburu"
+ },
+ "sg": {
+ "code": "sg",
+ "name": "sangogbe"
+ },
+ "sbp": {
+ "code": "sbp",
+ "name": "sangugbe"
+ },
+ "seh": {
+ "code": "seh",
+ "name": "Sena"
+ },
+ "sr": {
+ "code": "sr",
+ "name": "serbiagbe"
+ },
+ "ksb": {
+ "code": "ksb",
+ "name": "Shambala"
+ },
+ "sn": {
+ "code": "sn",
+ "name": "shonagbe"
+ },
+ "si": {
+ "code": "si",
+ "name": "sinhalgbe"
+ },
+ "gd": {
+ "code": "gd",
+ "name": "skɔtlanɖ gaeliagbe"
+ },
+ "sk": {
+ "code": "sk",
+ "name": "slovakiagbe"
+ },
+ "sl": {
+ "code": "sl",
+ "name": "sloveniagbe"
+ },
+ "xog": {
+ "code": "xog",
+ "name": "Soga"
+ },
+ "so": {
+ "code": "so",
+ "name": "somaliagbe"
+ },
+ "es": {
+ "code": "es",
+ "name": "spaniagbe"
+ },
+ "zgh": {
+ "code": "zgh",
+ "name": "Standard Moroccan Tamazight"
+ },
+ "sw": {
+ "code": "sw",
+ "name": "swahili"
+ },
+ "sv": {
+ "code": "sv",
+ "name": "swedengbe"
+ },
+ "de-CH": {
+ "code": "de-CH",
+ "name": "swizerlanɖ germaniagbe kɔkɔtɔ"
+ },
+ "fr-CH": {
+ "code": "fr-CH",
+ "name": "swizerlanɖtɔwo ƒe fransegbe"
+ },
+ "gsw": {
+ "code": "gsw",
+ "name": "swizerlanɖtɔwo ƒe germaniagbe"
+ },
+ "shi": {
+ "code": "shi",
+ "name": "Tachelhit"
+ },
+ "th": {
+ "code": "th",
+ "name": "tailandgbe"
+ },
+ "dav": {
+ "code": "dav",
+ "name": "Taita"
+ },
+ "ta": {
+ "code": "ta",
+ "name": "tamilgbe"
+ },
+ "twq": {
+ "code": "twq",
+ "name": "tasawakgbe"
+ },
+ "te": {
+ "code": "te",
+ "name": "telegugbe"
+ },
+ "teo": {
+ "code": "teo",
+ "name": "Teso"
+ },
+ "tr": {
+ "code": "tr",
+ "name": "tɛkigbe"
+ },
+ "bo": {
+ "code": "bo",
+ "name": "tibetagbe"
+ },
+ "ti": {
+ "code": "ti",
+ "name": "tigrinyagbe"
+ },
+ "to": {
+ "code": "to",
+ "name": "tongagbe"
+ },
+ "zh-Hans": {
+ "code": "zh-Hans",
+ "name": "tsainagbe"
+ },
+ "cs": {
+ "code": "cs",
+ "name": "tsɛkgbe"
+ },
+ "en-US": {
+ "code": "en-US",
+ "name": "u.s.dukɔmetɔwo ƒe yevugbe"
+ },
+ "ug": {
+ "code": "ug",
+ "name": "uighurgbe"
+ },
+ "uk": {
+ "code": "uk",
+ "name": "ukraingbe"
+ },
+ "hsb": {
+ "code": "hsb",
+ "name": "Upper Sorbian"
+ },
+ "ur": {
+ "code": "ur",
+ "name": "urdugbe"
+ },
+ "uz": {
+ "code": "uz",
+ "name": "uzbekistangbe"
+ },
+ "vai": {
+ "code": "vai",
+ "name": "vaigbe"
+ },
+ "vi": {
+ "code": "vi",
+ "name": "vietnamgbe"
+ },
+ "vun": {
+ "code": "vun",
+ "name": "Vunjo"
+ },
+ "cy": {
+ "code": "cy",
+ "name": "walesgbe"
+ },
+ "wae": {
+ "code": "wae",
+ "name": "walsegbe"
+ },
+ "yav": {
+ "code": "yav",
+ "name": "yangbengbe"
+ },
+ "en": {
+ "code": "en",
+ "name": "yevugbe"
+ },
+ "yo": {
+ "code": "yo",
+ "name": "yorubagbe"
+ },
+ "dje": {
+ "code": "dje",
+ "name": "zamagbe"
+ },
+ "zu": {
+ "code": "zu",
+ "name": "zulugbe"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/language/el.json b/library/intl/resources/language/el.json
new file mode 100644
index 000000000..da61f48e4
--- /dev/null
+++ b/library/intl/resources/language/el.json
@@ -0,0 +1,738 @@
+{
+ "en": {
+ "code": "en",
+ "name": "Αγγλικά"
+ },
+ "en-US": {
+ "code": "en-US",
+ "name": "Αγγλικά ΑμεÏικής"
+ },
+ "en-AU": {
+ "code": "en-AU",
+ "name": "Αγγλικά ΑυστÏαλίας"
+ },
+ "en-GB": {
+ "code": "en-GB",
+ "name": "Αγγλικά Ηνωμένου Βασιλείου"
+ },
+ "en-CA": {
+ "code": "en-CA",
+ "name": "Αγγλικά Καναδά"
+ },
+ "agq": {
+ "code": "agq",
+ "name": "Αγκέμ"
+ },
+ "az": {
+ "code": "az",
+ "name": "ΑζεÏμπαϊτζανικά"
+ },
+ "ak": {
+ "code": "ak",
+ "name": "Ακάν"
+ },
+ "sq": {
+ "code": "sq",
+ "name": "Αλβανικά"
+ },
+ "am": {
+ "code": "am",
+ "name": "ΑμαÏικά"
+ },
+ "zh-Hans": {
+ "code": "zh-Hans",
+ "name": "Απλοποιημένα Κινεζικά"
+ },
+ "ar": {
+ "code": "ar",
+ "name": "ΑÏαβικά"
+ },
+ "hy": {
+ "code": "hy",
+ "name": "ΑÏμενικά"
+ },
+ "asa": {
+ "code": "asa",
+ "name": "Άσου"
+ },
+ "ast": {
+ "code": "ast",
+ "name": "ΑστουÏιανά"
+ },
+ "af": {
+ "code": "af",
+ "name": "ΑφÏικάανς"
+ },
+ "vai": {
+ "code": "vai",
+ "name": "Βάι"
+ },
+ "wae": {
+ "code": "wae",
+ "name": "ΒάλσεÏ"
+ },
+ "eu": {
+ "code": "eu",
+ "name": "Βασκικά"
+ },
+ "vi": {
+ "code": "vi",
+ "name": "Βιετναμικά"
+ },
+ "my": {
+ "code": "my",
+ "name": "ΒιÏμανικά"
+ },
+ "se": {
+ "code": "se",
+ "name": "Î’ÏŒÏεια Σάμι"
+ },
+ "bs": {
+ "code": "bs",
+ "name": "Βοσνιακά"
+ },
+ "bg": {
+ "code": "bg",
+ "name": "ΒουλγαÏικά"
+ },
+ "vun": {
+ "code": "vun",
+ "name": "ΒοÏντζο"
+ },
+ "br": {
+ "code": "br",
+ "name": "Î’Ïετονικά"
+ },
+ "gl": {
+ "code": "gl",
+ "name": "Γαλικιανά"
+ },
+ "fr": {
+ "code": "fr",
+ "name": "Γαλλικά"
+ },
+ "fr-CH": {
+ "code": "fr-CH",
+ "name": "Γαλλικά Ελβετίας"
+ },
+ "fr-CA": {
+ "code": "fr-CA",
+ "name": "Γαλλικά Καναδά"
+ },
+ "de": {
+ "code": "de",
+ "name": "ΓεÏμανικά"
+ },
+ "de-AT": {
+ "code": "de-AT",
+ "name": "ΓεÏμανικά ΑυστÏίας"
+ },
+ "de-CH": {
+ "code": "de-CH",
+ "name": "ΓεÏμανικά Ελβετίας"
+ },
+ "ka": {
+ "code": "ka",
+ "name": "ΓεωÏγιανά"
+ },
+ "ee": {
+ "code": "ee",
+ "name": "Γι"
+ },
+ "yav": {
+ "code": "yav",
+ "name": "Γιανγκμπέν"
+ },
+ "yo": {
+ "code": "yo",
+ "name": "ΓιοÏοÏμπα"
+ },
+ "lg": {
+ "code": "lg",
+ "name": "Γκάντα"
+ },
+ "gu": {
+ "code": "gu",
+ "name": "ΓκουγιαÏάτι"
+ },
+ "guz": {
+ "code": "guz",
+ "name": "ΓκοÏσι"
+ },
+ "hsb": {
+ "code": "hsb",
+ "name": "Γλώσσα Άνω Λουσατίας"
+ },
+ "dsb": {
+ "code": "dsb",
+ "name": "Γλώσσα Κάτω Λουσατίας"
+ },
+ "kea": {
+ "code": "kea",
+ "name": "Γλώσσα του ΠÏάσινου ΑκÏωτηÏίου"
+ },
+ "da": {
+ "code": "da",
+ "name": "Δανικά"
+ },
+ "fy": {
+ "code": "fy",
+ "name": "Δυτικά ΦÏιζιανά"
+ },
+ "he": {
+ "code": "he",
+ "name": "ΕβÏαϊκά"
+ },
+ "ewo": {
+ "code": "ewo",
+ "name": "Εγουόντο"
+ },
+ "gsw": {
+ "code": "gsw",
+ "name": "Ελβετικά ΓεÏμανικά"
+ },
+ "el": {
+ "code": "el",
+ "name": "Ελληνικά"
+ },
+ "ebu": {
+ "code": "ebu",
+ "name": "Έμπου"
+ },
+ "et": {
+ "code": "et",
+ "name": "Εσθονικά"
+ },
+ "eo": {
+ "code": "eo",
+ "name": "ΕσπεÏάντο"
+ },
+ "dje": {
+ "code": "dje",
+ "name": "ΖάÏμα"
+ },
+ "zu": {
+ "code": "zu",
+ "name": "ΖουλοÏ"
+ },
+ "bo": {
+ "code": "bo",
+ "name": "Θιβετιανά"
+ },
+ "ja": {
+ "code": "ja",
+ "name": "Ιαπωνικά"
+ },
+ "id": {
+ "code": "id",
+ "name": "Ινδονησιακά"
+ },
+ "ga": {
+ "code": "ga",
+ "name": "ΙÏλανδικά"
+ },
+ "is": {
+ "code": "is",
+ "name": "Ισλανδικά"
+ },
+ "es": {
+ "code": "es",
+ "name": "Ισπανικά"
+ },
+ "es-ES": {
+ "code": "es-ES",
+ "name": "Ισπανικά ΕυÏώπης"
+ },
+ "es-MX": {
+ "code": "es-MX",
+ "name": "Ισπανικά ΜεξικοÏ"
+ },
+ "it": {
+ "code": "it",
+ "name": "Ιταλικά"
+ },
+ "kk": {
+ "code": "kk",
+ "name": "Καζακικά"
+ },
+ "kl": {
+ "code": "kl",
+ "name": "Καλαάλισουτ"
+ },
+ "kln": {
+ "code": "kln",
+ "name": "Καλεντζίν"
+ },
+ "kam": {
+ "code": "kam",
+ "name": "Κάμπα"
+ },
+ "kab": {
+ "code": "kab",
+ "name": "Καμπίλε"
+ },
+ "km": {
+ "code": "km",
+ "name": "Καμποτζιανά"
+ },
+ "kn": {
+ "code": "kn",
+ "name": "Κανάντα"
+ },
+ "ks": {
+ "code": "ks",
+ "name": "ΚασμίÏι"
+ },
+ "ca": {
+ "code": "ca",
+ "name": "Καταλανικά"
+ },
+ "nmg": {
+ "code": "nmg",
+ "name": "Κβάσιο"
+ },
+ "ki": {
+ "code": "ki",
+ "name": "ΚικοÏγιου"
+ },
+ "zh": {
+ "code": "zh",
+ "name": "Κινεζικά"
+ },
+ "khq": {
+ "code": "khq",
+ "name": "ΚόιÏα Τσίνι"
+ },
+ "ses": {
+ "code": "ses",
+ "name": "ΚοϊÏαμπόÏο Σένι"
+ },
+ "ksh": {
+ "code": "ksh",
+ "name": "Κολωνικά"
+ },
+ "swc": {
+ "code": "swc",
+ "name": "Κονγκό Σουαχίλι"
+ },
+ "ko": {
+ "code": "ko",
+ "name": "ΚοÏεατικά"
+ },
+ "hr": {
+ "code": "hr",
+ "name": "ΚÏοατικά"
+ },
+ "ky": {
+ "code": "ky",
+ "name": "ΚυÏγιζικά"
+ },
+ "lag": {
+ "code": "lag",
+ "name": "Λάνγκι"
+ },
+ "lo": {
+ "code": "lo",
+ "name": "Λαοθιανά"
+ },
+ "lv": {
+ "code": "lv",
+ "name": "Λετονικά"
+ },
+ "be": {
+ "code": "be",
+ "name": "ΛευκοÏωσικά"
+ },
+ "lt": {
+ "code": "lt",
+ "name": "Λιθουανικά"
+ },
+ "ln": {
+ "code": "ln",
+ "name": "Λινγκάλα"
+ },
+ "lu": {
+ "code": "lu",
+ "name": "ΛοÏμπα-Κατάνγκα"
+ },
+ "lb": {
+ "code": "lb",
+ "name": "ΛουξεμβουÏγιανά"
+ },
+ "luo": {
+ "code": "luo",
+ "name": "ΛοÏο"
+ },
+ "luy": {
+ "code": "luy",
+ "name": "Λουχία"
+ },
+ "kde": {
+ "code": "kde",
+ "name": "Μακόντε"
+ },
+ "mgh": {
+ "code": "mgh",
+ "name": "ΜακοÏβα-Μέτο"
+ },
+ "mg": {
+ "code": "mg",
+ "name": "Μαλαγάσι"
+ },
+ "ml": {
+ "code": "ml",
+ "name": "Μαλαγιαλάμ"
+ },
+ "ms": {
+ "code": "ms",
+ "name": "Μαλάι"
+ },
+ "mt": {
+ "code": "mt",
+ "name": "Μαλτεζικά"
+ },
+ "mr": {
+ "code": "mr",
+ "name": "ΜαÏάθι"
+ },
+ "mas": {
+ "code": "mas",
+ "name": "Μασάι"
+ },
+ "jmc": {
+ "code": "jmc",
+ "name": "Μάχαμε"
+ },
+ "mer": {
+ "code": "mer",
+ "name": "ΜεÏοÏ"
+ },
+ "mn": {
+ "code": "mn",
+ "name": "Μογγολικά"
+ },
+ "ro-MD": {
+ "code": "ro-MD",
+ "name": "Μολδαβικά"
+ },
+ "mfe": {
+ "code": "mfe",
+ "name": "ΜοÏίσιεν"
+ },
+ "mua": {
+ "code": "mua",
+ "name": "Μουντάνγκ"
+ },
+ "bm": {
+ "code": "bm",
+ "name": "ΜπαμπάÏα"
+ },
+ "bas": {
+ "code": "bas",
+ "name": "Μπάσα"
+ },
+ "ksf": {
+ "code": "ksf",
+ "name": "Μπάφια"
+ },
+ "bez": {
+ "code": "bez",
+ "name": "Μπένα"
+ },
+ "bn": {
+ "code": "bn",
+ "name": "Μπενγκάλι"
+ },
+ "brx": {
+ "code": "brx",
+ "name": "Μπόντο"
+ },
+ "naq": {
+ "code": "naq",
+ "name": "Îάμα"
+ },
+ "jgo": {
+ "code": "jgo",
+ "name": "Îγκόμπα"
+ },
+ "ne": {
+ "code": "ne",
+ "name": "Îεπάλι"
+ },
+ "nyn": {
+ "code": "nyn",
+ "name": "Îιανκόλε"
+ },
+ "nb": {
+ "code": "nb",
+ "name": "ÎοÏβηγικά Μποκμάλ"
+ },
+ "nn": {
+ "code": "nn",
+ "name": "ÎοÏβηγικά ÎινόÏσκ"
+ },
+ "nus": {
+ "code": "nus",
+ "name": "ÎουέÏ"
+ },
+ "nd": {
+ "code": "nd",
+ "name": "Îτεμπέλε ΒοÏÏά"
+ },
+ "dz": {
+ "code": "dz",
+ "name": "Îτζόνγκχα"
+ },
+ "nl": {
+ "code": "nl",
+ "name": "Ολλανδικά"
+ },
+ "or": {
+ "code": "or",
+ "name": "ΟÏίγια"
+ },
+ "cy": {
+ "code": "cy",
+ "name": "Ουαλικά"
+ },
+ "hu": {
+ "code": "hu",
+ "name": "ΟυγγÏικά"
+ },
+ "uz": {
+ "code": "uz",
+ "name": "Ουζμπεκικά"
+ },
+ "ug": {
+ "code": "ug",
+ "name": "ΟυιγουÏικά"
+ },
+ "uk": {
+ "code": "uk",
+ "name": "ΟυκÏανικά"
+ },
+ "ur": {
+ "code": "ur",
+ "name": "ΟυÏντοÏ"
+ },
+ "pa": {
+ "code": "pa",
+ "name": "Παντζαπικά"
+ },
+ "zh-Hant": {
+ "code": "zh-Hant",
+ "name": "ΠαÏαδοσιακά Κινεζικά"
+ },
+ "ps": {
+ "code": "ps",
+ "name": "Πάστο"
+ },
+ "fa": {
+ "code": "fa",
+ "name": "ΠεÏσικά"
+ },
+ "pl": {
+ "code": "pl",
+ "name": "Πολωνικά"
+ },
+ "pt": {
+ "code": "pt",
+ "name": "ΠοÏτογαλικά"
+ },
+ "pt-BR": {
+ "code": "pt-BR",
+ "name": "ΠοÏτογαλικά Î’Ïαζιλίας"
+ },
+ "pt-PT": {
+ "code": "pt-PT",
+ "name": "ΠοÏτογαλικά ΕυÏώπης"
+ },
+ "rm": {
+ "code": "rm",
+ "name": "Ρομανικά"
+ },
+ "rof": {
+ "code": "rof",
+ "name": "Ρόμπο"
+ },
+ "rwk": {
+ "code": "rwk",
+ "name": "Ρουά"
+ },
+ "ro": {
+ "code": "ro",
+ "name": "Ρουμανικά"
+ },
+ "rn": {
+ "code": "rn",
+ "name": "ΡοÏντι"
+ },
+ "ru": {
+ "code": "ru",
+ "name": "Ρωσικά"
+ },
+ "ksb": {
+ "code": "ksb",
+ "name": "Σάμπαλα"
+ },
+ "saq": {
+ "code": "saq",
+ "name": "ΣαμποÏÏου"
+ },
+ "sg": {
+ "code": "sg",
+ "name": "Σάνγκο"
+ },
+ "sbp": {
+ "code": "sbp",
+ "name": "Σάνγκου"
+ },
+ "seh": {
+ "code": "seh",
+ "name": "Σένα"
+ },
+ "sr": {
+ "code": "sr",
+ "name": "ΣεÏβικά"
+ },
+ "si": {
+ "code": "si",
+ "name": "Σινχαλεζικά"
+ },
+ "gd": {
+ "code": "gd",
+ "name": "Σκωτικά Κελτικά"
+ },
+ "mk": {
+ "code": "mk",
+ "name": "Σλαβομακεδονικά"
+ },
+ "sk": {
+ "code": "sk",
+ "name": "Σλοβακικά"
+ },
+ "sl": {
+ "code": "sl",
+ "name": "Σλοβενικά"
+ },
+ "xog": {
+ "code": "xog",
+ "name": "Σόγκα"
+ },
+ "so": {
+ "code": "so",
+ "name": "Σομάλι"
+ },
+ "sw": {
+ "code": "sw",
+ "name": "Σουαχίλι"
+ },
+ "sv": {
+ "code": "sv",
+ "name": "Σουηδικά"
+ },
+ "ar-001": {
+ "code": "ar-001",
+ "name": "ΣÏγχÏονα Τυπικά ΑÏαβικά"
+ },
+ "sn": {
+ "code": "sn",
+ "name": "Σχόνα"
+ },
+ "th": {
+ "code": "th",
+ "name": "Ταϊλανδικά"
+ },
+ "dav": {
+ "code": "dav",
+ "name": "Τάιτα"
+ },
+ "tzm": {
+ "code": "tzm",
+ "name": "Ταμαζίτ ΚεντÏÎ¹ÎºÎ¿Ï ÎœÎ±Ïόκο"
+ },
+ "ta": {
+ "code": "ta",
+ "name": "Ταμίλ"
+ },
+ "twq": {
+ "code": "twq",
+ "name": "Τασαβάκ"
+ },
+ "shi": {
+ "code": "shi",
+ "name": "Τασελχίτ"
+ },
+ "te": {
+ "code": "te",
+ "name": "ΤελοÏγκου"
+ },
+ "teo": {
+ "code": "teo",
+ "name": "Τέσο"
+ },
+ "dyo": {
+ "code": "dyo",
+ "name": "Τζόλα-Φόνι"
+ },
+ "ti": {
+ "code": "ti",
+ "name": "ΤιγκÏίνυα"
+ },
+ "to": {
+ "code": "to",
+ "name": "Τονγκανικά"
+ },
+ "tr": {
+ "code": "tr",
+ "name": "ΤουÏκικά"
+ },
+ "chr": {
+ "code": "chr",
+ "name": "ΤσεÏόκι"
+ },
+ "cs": {
+ "code": "cs",
+ "name": "Τσεχικά"
+ },
+ "cgg": {
+ "code": "cgg",
+ "name": "Τσίγκα"
+ },
+ "zgh": {
+ "code": "zgh",
+ "name": "Τυπικά Ταμαζίγκτ ΜαÏόκου"
+ },
+ "fo": {
+ "code": "fo",
+ "name": "ΦαÏόε"
+ },
+ "fil": {
+ "code": "fil",
+ "name": "Φιλιππινεζικά"
+ },
+ "fi": {
+ "code": "fi",
+ "name": "Φινλανδικά"
+ },
+ "nl-BE": {
+ "code": "nl-BE",
+ "name": "Φλαμανδικά"
+ },
+ "ff": {
+ "code": "ff",
+ "name": "Φουλάχ"
+ },
+ "fur": {
+ "code": "fur",
+ "name": "ΦÏιοÏλιαν"
+ },
+ "ha": {
+ "code": "ha",
+ "name": "Χάουσα"
+ },
+ "hi": {
+ "code": "hi",
+ "name": "Χίντι"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/language/en-AU.json b/library/intl/resources/language/en-AU.json
new file mode 100644
index 000000000..e8870d47c
--- /dev/null
+++ b/library/intl/resources/language/en-AU.json
@@ -0,0 +1,738 @@
+{
+ "af": {
+ "code": "af",
+ "name": "Afrikaans"
+ },
+ "agq": {
+ "code": "agq",
+ "name": "Aghem"
+ },
+ "ak": {
+ "code": "ak",
+ "name": "Akan"
+ },
+ "sq": {
+ "code": "sq",
+ "name": "Albanian"
+ },
+ "am": {
+ "code": "am",
+ "name": "Amharic"
+ },
+ "ar": {
+ "code": "ar",
+ "name": "Arabic"
+ },
+ "hy": {
+ "code": "hy",
+ "name": "Armenian"
+ },
+ "ast": {
+ "code": "ast",
+ "name": "Asturian"
+ },
+ "asa": {
+ "code": "asa",
+ "name": "Asu"
+ },
+ "en-AU": {
+ "code": "en-AU",
+ "name": "Australian English"
+ },
+ "de-AT": {
+ "code": "de-AT",
+ "name": "Austrian German"
+ },
+ "az": {
+ "code": "az",
+ "name": "Azerbaijani"
+ },
+ "ksf": {
+ "code": "ksf",
+ "name": "Bafia"
+ },
+ "bm": {
+ "code": "bm",
+ "name": "Bambara"
+ },
+ "bas": {
+ "code": "bas",
+ "name": "Basaa"
+ },
+ "eu": {
+ "code": "eu",
+ "name": "Basque"
+ },
+ "be": {
+ "code": "be",
+ "name": "Belarusian"
+ },
+ "bez": {
+ "code": "bez",
+ "name": "Bena"
+ },
+ "bn": {
+ "code": "bn",
+ "name": "Bengali"
+ },
+ "brx": {
+ "code": "brx",
+ "name": "Bodo"
+ },
+ "bs": {
+ "code": "bs",
+ "name": "Bosnian"
+ },
+ "pt-BR": {
+ "code": "pt-BR",
+ "name": "Brazilian Portuguese"
+ },
+ "br": {
+ "code": "br",
+ "name": "Breton"
+ },
+ "en-GB": {
+ "code": "en-GB",
+ "name": "British English"
+ },
+ "bg": {
+ "code": "bg",
+ "name": "Bulgarian"
+ },
+ "my": {
+ "code": "my",
+ "name": "Burmese"
+ },
+ "en-CA": {
+ "code": "en-CA",
+ "name": "Canadian English"
+ },
+ "fr-CA": {
+ "code": "fr-CA",
+ "name": "Canadian French"
+ },
+ "ca": {
+ "code": "ca",
+ "name": "Catalan"
+ },
+ "tzm": {
+ "code": "tzm",
+ "name": "Central Atlas Tamazight"
+ },
+ "chr": {
+ "code": "chr",
+ "name": "Cherokee"
+ },
+ "cgg": {
+ "code": "cgg",
+ "name": "Chiga"
+ },
+ "zh": {
+ "code": "zh",
+ "name": "Chinese"
+ },
+ "ksh": {
+ "code": "ksh",
+ "name": "Colognian"
+ },
+ "swc": {
+ "code": "swc",
+ "name": "Congo Swahili"
+ },
+ "hr": {
+ "code": "hr",
+ "name": "Croatian"
+ },
+ "cs": {
+ "code": "cs",
+ "name": "Czech"
+ },
+ "da": {
+ "code": "da",
+ "name": "Danish"
+ },
+ "nl": {
+ "code": "nl",
+ "name": "Dutch"
+ },
+ "dz": {
+ "code": "dz",
+ "name": "Dzongkha"
+ },
+ "ebu": {
+ "code": "ebu",
+ "name": "Embu"
+ },
+ "en": {
+ "code": "en",
+ "name": "English"
+ },
+ "eo": {
+ "code": "eo",
+ "name": "Esperanto"
+ },
+ "et": {
+ "code": "et",
+ "name": "Estonian"
+ },
+ "pt-PT": {
+ "code": "pt-PT",
+ "name": "European Portuguese"
+ },
+ "es-ES": {
+ "code": "es-ES",
+ "name": "European Spanish"
+ },
+ "ee": {
+ "code": "ee",
+ "name": "Ewe"
+ },
+ "ewo": {
+ "code": "ewo",
+ "name": "Ewondo"
+ },
+ "fo": {
+ "code": "fo",
+ "name": "Faroese"
+ },
+ "fil": {
+ "code": "fil",
+ "name": "Filipino"
+ },
+ "fi": {
+ "code": "fi",
+ "name": "Finnish"
+ },
+ "nl-BE": {
+ "code": "nl-BE",
+ "name": "Flemish"
+ },
+ "fr": {
+ "code": "fr",
+ "name": "French"
+ },
+ "fur": {
+ "code": "fur",
+ "name": "Friulian"
+ },
+ "ff": {
+ "code": "ff",
+ "name": "Fulah"
+ },
+ "gl": {
+ "code": "gl",
+ "name": "Galician"
+ },
+ "lg": {
+ "code": "lg",
+ "name": "Ganda"
+ },
+ "ka": {
+ "code": "ka",
+ "name": "Georgian"
+ },
+ "de": {
+ "code": "de",
+ "name": "German"
+ },
+ "el": {
+ "code": "el",
+ "name": "Greek"
+ },
+ "gu": {
+ "code": "gu",
+ "name": "Gujarati"
+ },
+ "guz": {
+ "code": "guz",
+ "name": "Gusii"
+ },
+ "ha": {
+ "code": "ha",
+ "name": "Hausa"
+ },
+ "he": {
+ "code": "he",
+ "name": "Hebrew"
+ },
+ "hi": {
+ "code": "hi",
+ "name": "Hindi"
+ },
+ "hu": {
+ "code": "hu",
+ "name": "Hungarian"
+ },
+ "is": {
+ "code": "is",
+ "name": "Icelandic"
+ },
+ "id": {
+ "code": "id",
+ "name": "Indonesian"
+ },
+ "ga": {
+ "code": "ga",
+ "name": "Irish"
+ },
+ "it": {
+ "code": "it",
+ "name": "Italian"
+ },
+ "ja": {
+ "code": "ja",
+ "name": "Japanese"
+ },
+ "dyo": {
+ "code": "dyo",
+ "name": "Jola-Fonyi"
+ },
+ "kea": {
+ "code": "kea",
+ "name": "Kabuverdianu"
+ },
+ "kab": {
+ "code": "kab",
+ "name": "Kabyle"
+ },
+ "kl": {
+ "code": "kl",
+ "name": "Kalaallisut"
+ },
+ "kln": {
+ "code": "kln",
+ "name": "Kalenjin"
+ },
+ "kam": {
+ "code": "kam",
+ "name": "Kamba"
+ },
+ "kn": {
+ "code": "kn",
+ "name": "Kannada"
+ },
+ "ks": {
+ "code": "ks",
+ "name": "Kashmiri"
+ },
+ "kk": {
+ "code": "kk",
+ "name": "Kazakh"
+ },
+ "km": {
+ "code": "km",
+ "name": "Khmer"
+ },
+ "ki": {
+ "code": "ki",
+ "name": "Kikuyu"
+ },
+ "ko": {
+ "code": "ko",
+ "name": "Korean"
+ },
+ "khq": {
+ "code": "khq",
+ "name": "Koyra Chiini"
+ },
+ "ses": {
+ "code": "ses",
+ "name": "Koyraboro Senni"
+ },
+ "nmg": {
+ "code": "nmg",
+ "name": "Kwasio"
+ },
+ "ky": {
+ "code": "ky",
+ "name": "Kyrgyz"
+ },
+ "lag": {
+ "code": "lag",
+ "name": "Langi"
+ },
+ "lo": {
+ "code": "lo",
+ "name": "Lao"
+ },
+ "lv": {
+ "code": "lv",
+ "name": "Latvian"
+ },
+ "ln": {
+ "code": "ln",
+ "name": "Lingala"
+ },
+ "lt": {
+ "code": "lt",
+ "name": "Lithuanian"
+ },
+ "dsb": {
+ "code": "dsb",
+ "name": "Lower Sorbian"
+ },
+ "lu": {
+ "code": "lu",
+ "name": "Luba-Katanga"
+ },
+ "luo": {
+ "code": "luo",
+ "name": "Luo"
+ },
+ "lb": {
+ "code": "lb",
+ "name": "Luxembourgish"
+ },
+ "luy": {
+ "code": "luy",
+ "name": "Luyia"
+ },
+ "mk": {
+ "code": "mk",
+ "name": "Macedonian"
+ },
+ "jmc": {
+ "code": "jmc",
+ "name": "Machame"
+ },
+ "mgh": {
+ "code": "mgh",
+ "name": "Makhuwa-Meetto"
+ },
+ "kde": {
+ "code": "kde",
+ "name": "Makonde"
+ },
+ "mg": {
+ "code": "mg",
+ "name": "Malagasy"
+ },
+ "ms": {
+ "code": "ms",
+ "name": "Malay"
+ },
+ "ml": {
+ "code": "ml",
+ "name": "Malayalam"
+ },
+ "mt": {
+ "code": "mt",
+ "name": "Maltese"
+ },
+ "mr": {
+ "code": "mr",
+ "name": "Marathi"
+ },
+ "mas": {
+ "code": "mas",
+ "name": "Masai"
+ },
+ "mer": {
+ "code": "mer",
+ "name": "Meru"
+ },
+ "es-MX": {
+ "code": "es-MX",
+ "name": "Mexican Spanish"
+ },
+ "ar-001": {
+ "code": "ar-001",
+ "name": "Modern Standard Arabic"
+ },
+ "ro-MD": {
+ "code": "ro-MD",
+ "name": "Moldavian"
+ },
+ "mn": {
+ "code": "mn",
+ "name": "Mongolian"
+ },
+ "mfe": {
+ "code": "mfe",
+ "name": "Morisyen"
+ },
+ "mua": {
+ "code": "mua",
+ "name": "Mundang"
+ },
+ "naq": {
+ "code": "naq",
+ "name": "Nama"
+ },
+ "ne": {
+ "code": "ne",
+ "name": "Nepali"
+ },
+ "jgo": {
+ "code": "jgo",
+ "name": "Ngomba"
+ },
+ "nd": {
+ "code": "nd",
+ "name": "North Ndebele"
+ },
+ "se": {
+ "code": "se",
+ "name": "Northern Sami"
+ },
+ "nb": {
+ "code": "nb",
+ "name": "Norwegian Bokmål"
+ },
+ "nn": {
+ "code": "nn",
+ "name": "Norwegian Nynorsk"
+ },
+ "nus": {
+ "code": "nus",
+ "name": "Nuer"
+ },
+ "nyn": {
+ "code": "nyn",
+ "name": "Nyankole"
+ },
+ "or": {
+ "code": "or",
+ "name": "Oriya"
+ },
+ "ps": {
+ "code": "ps",
+ "name": "Pashto"
+ },
+ "fa": {
+ "code": "fa",
+ "name": "Persian"
+ },
+ "pl": {
+ "code": "pl",
+ "name": "Polish"
+ },
+ "pt": {
+ "code": "pt",
+ "name": "Portuguese"
+ },
+ "pa": {
+ "code": "pa",
+ "name": "Punjabi"
+ },
+ "ro": {
+ "code": "ro",
+ "name": "Romanian"
+ },
+ "rm": {
+ "code": "rm",
+ "name": "Romansh"
+ },
+ "rof": {
+ "code": "rof",
+ "name": "Rombo"
+ },
+ "rn": {
+ "code": "rn",
+ "name": "Rundi"
+ },
+ "ru": {
+ "code": "ru",
+ "name": "Russian"
+ },
+ "rwk": {
+ "code": "rwk",
+ "name": "Rwa"
+ },
+ "saq": {
+ "code": "saq",
+ "name": "Samburu"
+ },
+ "sg": {
+ "code": "sg",
+ "name": "Sango"
+ },
+ "sbp": {
+ "code": "sbp",
+ "name": "Sangu"
+ },
+ "gd": {
+ "code": "gd",
+ "name": "Scottish Gaelic"
+ },
+ "seh": {
+ "code": "seh",
+ "name": "Sena"
+ },
+ "sr": {
+ "code": "sr",
+ "name": "Serbian"
+ },
+ "ksb": {
+ "code": "ksb",
+ "name": "Shambala"
+ },
+ "sn": {
+ "code": "sn",
+ "name": "Shona"
+ },
+ "zh-Hans": {
+ "code": "zh-Hans",
+ "name": "Simplified Chinese"
+ },
+ "si": {
+ "code": "si",
+ "name": "Sinhala"
+ },
+ "sk": {
+ "code": "sk",
+ "name": "Slovak"
+ },
+ "sl": {
+ "code": "sl",
+ "name": "Slovenian"
+ },
+ "xog": {
+ "code": "xog",
+ "name": "Soga"
+ },
+ "so": {
+ "code": "so",
+ "name": "Somali"
+ },
+ "es": {
+ "code": "es",
+ "name": "Spanish"
+ },
+ "zgh": {
+ "code": "zgh",
+ "name": "Standard Moroccan Tamazight"
+ },
+ "sw": {
+ "code": "sw",
+ "name": "Swahili"
+ },
+ "sv": {
+ "code": "sv",
+ "name": "Swedish"
+ },
+ "fr-CH": {
+ "code": "fr-CH",
+ "name": "Swiss French"
+ },
+ "gsw": {
+ "code": "gsw",
+ "name": "Swiss German"
+ },
+ "de-CH": {
+ "code": "de-CH",
+ "name": "Swiss High German"
+ },
+ "shi": {
+ "code": "shi",
+ "name": "Tachelhit"
+ },
+ "dav": {
+ "code": "dav",
+ "name": "Taita"
+ },
+ "ta": {
+ "code": "ta",
+ "name": "Tamil"
+ },
+ "twq": {
+ "code": "twq",
+ "name": "Tasawaq"
+ },
+ "te": {
+ "code": "te",
+ "name": "Telugu"
+ },
+ "teo": {
+ "code": "teo",
+ "name": "Teso"
+ },
+ "th": {
+ "code": "th",
+ "name": "Thai"
+ },
+ "bo": {
+ "code": "bo",
+ "name": "Tibetan"
+ },
+ "ti": {
+ "code": "ti",
+ "name": "Tigrinya"
+ },
+ "to": {
+ "code": "to",
+ "name": "Tongan"
+ },
+ "zh-Hant": {
+ "code": "zh-Hant",
+ "name": "Traditional Chinese"
+ },
+ "tr": {
+ "code": "tr",
+ "name": "Turkish"
+ },
+ "uk": {
+ "code": "uk",
+ "name": "Ukrainian"
+ },
+ "en-US": {
+ "code": "en-US",
+ "name": "United States English"
+ },
+ "hsb": {
+ "code": "hsb",
+ "name": "Upper Sorbian"
+ },
+ "ur": {
+ "code": "ur",
+ "name": "Urdu"
+ },
+ "ug": {
+ "code": "ug",
+ "name": "Uyghur"
+ },
+ "uz": {
+ "code": "uz",
+ "name": "Uzbek"
+ },
+ "vai": {
+ "code": "vai",
+ "name": "Vai"
+ },
+ "vi": {
+ "code": "vi",
+ "name": "Vietnamese"
+ },
+ "vun": {
+ "code": "vun",
+ "name": "Vunjo"
+ },
+ "wae": {
+ "code": "wae",
+ "name": "Walser"
+ },
+ "cy": {
+ "code": "cy",
+ "name": "Welsh"
+ },
+ "fy": {
+ "code": "fy",
+ "name": "Western Frisian"
+ },
+ "yav": {
+ "code": "yav",
+ "name": "Yangben"
+ },
+ "yo": {
+ "code": "yo",
+ "name": "Yoruba"
+ },
+ "dje": {
+ "code": "dje",
+ "name": "Zarma"
+ },
+ "zu": {
+ "code": "zu",
+ "name": "Zulu"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/language/en.json b/library/intl/resources/language/en.json
new file mode 100644
index 000000000..499a392e7
--- /dev/null
+++ b/library/intl/resources/language/en.json
@@ -0,0 +1,738 @@
+{
+ "af": {
+ "code": "af",
+ "name": "Afrikaans"
+ },
+ "agq": {
+ "code": "agq",
+ "name": "Aghem"
+ },
+ "ak": {
+ "code": "ak",
+ "name": "Akan"
+ },
+ "sq": {
+ "code": "sq",
+ "name": "Albanian"
+ },
+ "en-US": {
+ "code": "en-US",
+ "name": "American English"
+ },
+ "am": {
+ "code": "am",
+ "name": "Amharic"
+ },
+ "ar": {
+ "code": "ar",
+ "name": "Arabic"
+ },
+ "hy": {
+ "code": "hy",
+ "name": "Armenian"
+ },
+ "ast": {
+ "code": "ast",
+ "name": "Asturian"
+ },
+ "asa": {
+ "code": "asa",
+ "name": "Asu"
+ },
+ "en-AU": {
+ "code": "en-AU",
+ "name": "Australian English"
+ },
+ "de-AT": {
+ "code": "de-AT",
+ "name": "Austrian German"
+ },
+ "az": {
+ "code": "az",
+ "name": "Azerbaijani"
+ },
+ "ksf": {
+ "code": "ksf",
+ "name": "Bafia"
+ },
+ "bm": {
+ "code": "bm",
+ "name": "Bambara"
+ },
+ "bas": {
+ "code": "bas",
+ "name": "Basaa"
+ },
+ "eu": {
+ "code": "eu",
+ "name": "Basque"
+ },
+ "be": {
+ "code": "be",
+ "name": "Belarusian"
+ },
+ "bez": {
+ "code": "bez",
+ "name": "Bena"
+ },
+ "bn": {
+ "code": "bn",
+ "name": "Bengali"
+ },
+ "brx": {
+ "code": "brx",
+ "name": "Bodo"
+ },
+ "bs": {
+ "code": "bs",
+ "name": "Bosnian"
+ },
+ "pt-BR": {
+ "code": "pt-BR",
+ "name": "Brazilian Portuguese"
+ },
+ "br": {
+ "code": "br",
+ "name": "Breton"
+ },
+ "en-GB": {
+ "code": "en-GB",
+ "name": "British English"
+ },
+ "bg": {
+ "code": "bg",
+ "name": "Bulgarian"
+ },
+ "my": {
+ "code": "my",
+ "name": "Burmese"
+ },
+ "en-CA": {
+ "code": "en-CA",
+ "name": "Canadian English"
+ },
+ "fr-CA": {
+ "code": "fr-CA",
+ "name": "Canadian French"
+ },
+ "ca": {
+ "code": "ca",
+ "name": "Catalan"
+ },
+ "tzm": {
+ "code": "tzm",
+ "name": "Central Atlas Tamazight"
+ },
+ "chr": {
+ "code": "chr",
+ "name": "Cherokee"
+ },
+ "cgg": {
+ "code": "cgg",
+ "name": "Chiga"
+ },
+ "zh": {
+ "code": "zh",
+ "name": "Chinese"
+ },
+ "ksh": {
+ "code": "ksh",
+ "name": "Colognian"
+ },
+ "swc": {
+ "code": "swc",
+ "name": "Congo Swahili"
+ },
+ "hr": {
+ "code": "hr",
+ "name": "Croatian"
+ },
+ "cs": {
+ "code": "cs",
+ "name": "Czech"
+ },
+ "da": {
+ "code": "da",
+ "name": "Danish"
+ },
+ "nl": {
+ "code": "nl",
+ "name": "Dutch"
+ },
+ "dz": {
+ "code": "dz",
+ "name": "Dzongkha"
+ },
+ "ebu": {
+ "code": "ebu",
+ "name": "Embu"
+ },
+ "en": {
+ "code": "en",
+ "name": "English"
+ },
+ "eo": {
+ "code": "eo",
+ "name": "Esperanto"
+ },
+ "et": {
+ "code": "et",
+ "name": "Estonian"
+ },
+ "pt-PT": {
+ "code": "pt-PT",
+ "name": "European Portuguese"
+ },
+ "es-ES": {
+ "code": "es-ES",
+ "name": "European Spanish"
+ },
+ "ee": {
+ "code": "ee",
+ "name": "Ewe"
+ },
+ "ewo": {
+ "code": "ewo",
+ "name": "Ewondo"
+ },
+ "fo": {
+ "code": "fo",
+ "name": "Faroese"
+ },
+ "fil": {
+ "code": "fil",
+ "name": "Filipino"
+ },
+ "fi": {
+ "code": "fi",
+ "name": "Finnish"
+ },
+ "nl-BE": {
+ "code": "nl-BE",
+ "name": "Flemish"
+ },
+ "fr": {
+ "code": "fr",
+ "name": "French"
+ },
+ "fur": {
+ "code": "fur",
+ "name": "Friulian"
+ },
+ "ff": {
+ "code": "ff",
+ "name": "Fulah"
+ },
+ "gl": {
+ "code": "gl",
+ "name": "Galician"
+ },
+ "lg": {
+ "code": "lg",
+ "name": "Ganda"
+ },
+ "ka": {
+ "code": "ka",
+ "name": "Georgian"
+ },
+ "de": {
+ "code": "de",
+ "name": "German"
+ },
+ "el": {
+ "code": "el",
+ "name": "Greek"
+ },
+ "gu": {
+ "code": "gu",
+ "name": "Gujarati"
+ },
+ "guz": {
+ "code": "guz",
+ "name": "Gusii"
+ },
+ "ha": {
+ "code": "ha",
+ "name": "Hausa"
+ },
+ "he": {
+ "code": "he",
+ "name": "Hebrew"
+ },
+ "hi": {
+ "code": "hi",
+ "name": "Hindi"
+ },
+ "hu": {
+ "code": "hu",
+ "name": "Hungarian"
+ },
+ "is": {
+ "code": "is",
+ "name": "Icelandic"
+ },
+ "id": {
+ "code": "id",
+ "name": "Indonesian"
+ },
+ "ga": {
+ "code": "ga",
+ "name": "Irish"
+ },
+ "it": {
+ "code": "it",
+ "name": "Italian"
+ },
+ "ja": {
+ "code": "ja",
+ "name": "Japanese"
+ },
+ "dyo": {
+ "code": "dyo",
+ "name": "Jola-Fonyi"
+ },
+ "kea": {
+ "code": "kea",
+ "name": "Kabuverdianu"
+ },
+ "kab": {
+ "code": "kab",
+ "name": "Kabyle"
+ },
+ "kl": {
+ "code": "kl",
+ "name": "Kalaallisut"
+ },
+ "kln": {
+ "code": "kln",
+ "name": "Kalenjin"
+ },
+ "kam": {
+ "code": "kam",
+ "name": "Kamba"
+ },
+ "kn": {
+ "code": "kn",
+ "name": "Kannada"
+ },
+ "ks": {
+ "code": "ks",
+ "name": "Kashmiri"
+ },
+ "kk": {
+ "code": "kk",
+ "name": "Kazakh"
+ },
+ "km": {
+ "code": "km",
+ "name": "Khmer"
+ },
+ "ki": {
+ "code": "ki",
+ "name": "Kikuyu"
+ },
+ "ko": {
+ "code": "ko",
+ "name": "Korean"
+ },
+ "khq": {
+ "code": "khq",
+ "name": "Koyra Chiini"
+ },
+ "ses": {
+ "code": "ses",
+ "name": "Koyraboro Senni"
+ },
+ "nmg": {
+ "code": "nmg",
+ "name": "Kwasio"
+ },
+ "ky": {
+ "code": "ky",
+ "name": "Kyrgyz"
+ },
+ "lag": {
+ "code": "lag",
+ "name": "Langi"
+ },
+ "lo": {
+ "code": "lo",
+ "name": "Lao"
+ },
+ "lv": {
+ "code": "lv",
+ "name": "Latvian"
+ },
+ "ln": {
+ "code": "ln",
+ "name": "Lingala"
+ },
+ "lt": {
+ "code": "lt",
+ "name": "Lithuanian"
+ },
+ "dsb": {
+ "code": "dsb",
+ "name": "Lower Sorbian"
+ },
+ "lu": {
+ "code": "lu",
+ "name": "Luba-Katanga"
+ },
+ "luo": {
+ "code": "luo",
+ "name": "Luo"
+ },
+ "lb": {
+ "code": "lb",
+ "name": "Luxembourgish"
+ },
+ "luy": {
+ "code": "luy",
+ "name": "Luyia"
+ },
+ "mk": {
+ "code": "mk",
+ "name": "Macedonian"
+ },
+ "jmc": {
+ "code": "jmc",
+ "name": "Machame"
+ },
+ "mgh": {
+ "code": "mgh",
+ "name": "Makhuwa-Meetto"
+ },
+ "kde": {
+ "code": "kde",
+ "name": "Makonde"
+ },
+ "mg": {
+ "code": "mg",
+ "name": "Malagasy"
+ },
+ "ms": {
+ "code": "ms",
+ "name": "Malay"
+ },
+ "ml": {
+ "code": "ml",
+ "name": "Malayalam"
+ },
+ "mt": {
+ "code": "mt",
+ "name": "Maltese"
+ },
+ "mr": {
+ "code": "mr",
+ "name": "Marathi"
+ },
+ "mas": {
+ "code": "mas",
+ "name": "Masai"
+ },
+ "mer": {
+ "code": "mer",
+ "name": "Meru"
+ },
+ "es-MX": {
+ "code": "es-MX",
+ "name": "Mexican Spanish"
+ },
+ "ar-001": {
+ "code": "ar-001",
+ "name": "Modern Standard Arabic"
+ },
+ "ro-MD": {
+ "code": "ro-MD",
+ "name": "Moldavian"
+ },
+ "mn": {
+ "code": "mn",
+ "name": "Mongolian"
+ },
+ "mfe": {
+ "code": "mfe",
+ "name": "Morisyen"
+ },
+ "mua": {
+ "code": "mua",
+ "name": "Mundang"
+ },
+ "naq": {
+ "code": "naq",
+ "name": "Nama"
+ },
+ "ne": {
+ "code": "ne",
+ "name": "Nepali"
+ },
+ "jgo": {
+ "code": "jgo",
+ "name": "Ngomba"
+ },
+ "nd": {
+ "code": "nd",
+ "name": "North Ndebele"
+ },
+ "se": {
+ "code": "se",
+ "name": "Northern Sami"
+ },
+ "nb": {
+ "code": "nb",
+ "name": "Norwegian Bokmål"
+ },
+ "nn": {
+ "code": "nn",
+ "name": "Norwegian Nynorsk"
+ },
+ "nus": {
+ "code": "nus",
+ "name": "Nuer"
+ },
+ "nyn": {
+ "code": "nyn",
+ "name": "Nyankole"
+ },
+ "or": {
+ "code": "or",
+ "name": "Oriya"
+ },
+ "ps": {
+ "code": "ps",
+ "name": "Pashto"
+ },
+ "fa": {
+ "code": "fa",
+ "name": "Persian"
+ },
+ "pl": {
+ "code": "pl",
+ "name": "Polish"
+ },
+ "pt": {
+ "code": "pt",
+ "name": "Portuguese"
+ },
+ "pa": {
+ "code": "pa",
+ "name": "Punjabi"
+ },
+ "ro": {
+ "code": "ro",
+ "name": "Romanian"
+ },
+ "rm": {
+ "code": "rm",
+ "name": "Romansh"
+ },
+ "rof": {
+ "code": "rof",
+ "name": "Rombo"
+ },
+ "rn": {
+ "code": "rn",
+ "name": "Rundi"
+ },
+ "ru": {
+ "code": "ru",
+ "name": "Russian"
+ },
+ "rwk": {
+ "code": "rwk",
+ "name": "Rwa"
+ },
+ "saq": {
+ "code": "saq",
+ "name": "Samburu"
+ },
+ "sg": {
+ "code": "sg",
+ "name": "Sango"
+ },
+ "sbp": {
+ "code": "sbp",
+ "name": "Sangu"
+ },
+ "gd": {
+ "code": "gd",
+ "name": "Scottish Gaelic"
+ },
+ "seh": {
+ "code": "seh",
+ "name": "Sena"
+ },
+ "sr": {
+ "code": "sr",
+ "name": "Serbian"
+ },
+ "ksb": {
+ "code": "ksb",
+ "name": "Shambala"
+ },
+ "sn": {
+ "code": "sn",
+ "name": "Shona"
+ },
+ "zh-Hans": {
+ "code": "zh-Hans",
+ "name": "Simplified Chinese"
+ },
+ "si": {
+ "code": "si",
+ "name": "Sinhala"
+ },
+ "sk": {
+ "code": "sk",
+ "name": "Slovak"
+ },
+ "sl": {
+ "code": "sl",
+ "name": "Slovenian"
+ },
+ "xog": {
+ "code": "xog",
+ "name": "Soga"
+ },
+ "so": {
+ "code": "so",
+ "name": "Somali"
+ },
+ "es": {
+ "code": "es",
+ "name": "Spanish"
+ },
+ "zgh": {
+ "code": "zgh",
+ "name": "Standard Moroccan Tamazight"
+ },
+ "sw": {
+ "code": "sw",
+ "name": "Swahili"
+ },
+ "sv": {
+ "code": "sv",
+ "name": "Swedish"
+ },
+ "fr-CH": {
+ "code": "fr-CH",
+ "name": "Swiss French"
+ },
+ "gsw": {
+ "code": "gsw",
+ "name": "Swiss German"
+ },
+ "de-CH": {
+ "code": "de-CH",
+ "name": "Swiss High German"
+ },
+ "shi": {
+ "code": "shi",
+ "name": "Tachelhit"
+ },
+ "dav": {
+ "code": "dav",
+ "name": "Taita"
+ },
+ "ta": {
+ "code": "ta",
+ "name": "Tamil"
+ },
+ "twq": {
+ "code": "twq",
+ "name": "Tasawaq"
+ },
+ "te": {
+ "code": "te",
+ "name": "Telugu"
+ },
+ "teo": {
+ "code": "teo",
+ "name": "Teso"
+ },
+ "th": {
+ "code": "th",
+ "name": "Thai"
+ },
+ "bo": {
+ "code": "bo",
+ "name": "Tibetan"
+ },
+ "ti": {
+ "code": "ti",
+ "name": "Tigrinya"
+ },
+ "to": {
+ "code": "to",
+ "name": "Tongan"
+ },
+ "zh-Hant": {
+ "code": "zh-Hant",
+ "name": "Traditional Chinese"
+ },
+ "tr": {
+ "code": "tr",
+ "name": "Turkish"
+ },
+ "uk": {
+ "code": "uk",
+ "name": "Ukrainian"
+ },
+ "hsb": {
+ "code": "hsb",
+ "name": "Upper Sorbian"
+ },
+ "ur": {
+ "code": "ur",
+ "name": "Urdu"
+ },
+ "ug": {
+ "code": "ug",
+ "name": "Uyghur"
+ },
+ "uz": {
+ "code": "uz",
+ "name": "Uzbek"
+ },
+ "vai": {
+ "code": "vai",
+ "name": "Vai"
+ },
+ "vi": {
+ "code": "vi",
+ "name": "Vietnamese"
+ },
+ "vun": {
+ "code": "vun",
+ "name": "Vunjo"
+ },
+ "wae": {
+ "code": "wae",
+ "name": "Walser"
+ },
+ "cy": {
+ "code": "cy",
+ "name": "Welsh"
+ },
+ "fy": {
+ "code": "fy",
+ "name": "Western Frisian"
+ },
+ "yav": {
+ "code": "yav",
+ "name": "Yangben"
+ },
+ "yo": {
+ "code": "yo",
+ "name": "Yoruba"
+ },
+ "dje": {
+ "code": "dje",
+ "name": "Zarma"
+ },
+ "zu": {
+ "code": "zu",
+ "name": "Zulu"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/language/eo.json b/library/intl/resources/language/eo.json
new file mode 100644
index 000000000..a86628b28
--- /dev/null
+++ b/library/intl/resources/language/eo.json
@@ -0,0 +1,738 @@
+{
+ "af": {
+ "code": "af",
+ "name": "afrikansa"
+ },
+ "agq": {
+ "code": "agq",
+ "name": "Aghem"
+ },
+ "ak": {
+ "code": "ak",
+ "name": "akana"
+ },
+ "sq": {
+ "code": "sq",
+ "name": "albana"
+ },
+ "am": {
+ "code": "am",
+ "name": "amhara"
+ },
+ "en": {
+ "code": "en",
+ "name": "angla"
+ },
+ "ar": {
+ "code": "ar",
+ "name": "araba"
+ },
+ "hy": {
+ "code": "hy",
+ "name": "armena"
+ },
+ "ast": {
+ "code": "ast",
+ "name": "Asturian"
+ },
+ "asa": {
+ "code": "asa",
+ "name": "Asu"
+ },
+ "de-AT": {
+ "code": "de-AT",
+ "name": "aÅ­stra germana"
+ },
+ "en-AU": {
+ "code": "en-AU",
+ "name": "aÅ­stralia angla"
+ },
+ "az": {
+ "code": "az",
+ "name": "azerbajÄana"
+ },
+ "ksf": {
+ "code": "ksf",
+ "name": "Bafia"
+ },
+ "bm": {
+ "code": "bm",
+ "name": "bambara"
+ },
+ "bas": {
+ "code": "bas",
+ "name": "Basaa"
+ },
+ "be": {
+ "code": "be",
+ "name": "belorusa"
+ },
+ "bez": {
+ "code": "bez",
+ "name": "Bena"
+ },
+ "bn": {
+ "code": "bn",
+ "name": "bengala"
+ },
+ "my": {
+ "code": "my",
+ "name": "birma"
+ },
+ "brx": {
+ "code": "brx",
+ "name": "bodoa"
+ },
+ "bs": {
+ "code": "bs",
+ "name": "bosnia"
+ },
+ "pt-BR": {
+ "code": "pt-BR",
+ "name": "brazilportugala"
+ },
+ "br": {
+ "code": "br",
+ "name": "bretona"
+ },
+ "en-GB": {
+ "code": "en-GB",
+ "name": "brita angla"
+ },
+ "bg": {
+ "code": "bg",
+ "name": "bulgara"
+ },
+ "rn": {
+ "code": "rn",
+ "name": "burunda"
+ },
+ "tzm": {
+ "code": "tzm",
+ "name": "Central Atlas Tamazight"
+ },
+ "cgg": {
+ "code": "cgg",
+ "name": "Chiga"
+ },
+ "ksh": {
+ "code": "ksh",
+ "name": "Colognian"
+ },
+ "swc": {
+ "code": "swc",
+ "name": "Congo Swahili"
+ },
+ "cs": {
+ "code": "cs",
+ "name": "ĉeĥa"
+ },
+ "chr": {
+ "code": "chr",
+ "name": "ĉeroka"
+ },
+ "zh": {
+ "code": "zh",
+ "name": "ĉina"
+ },
+ "zh-Hans": {
+ "code": "zh-Hans",
+ "name": "ĉina simpligita"
+ },
+ "zh-Hant": {
+ "code": "zh-Hant",
+ "name": "ĉina tradicia"
+ },
+ "da": {
+ "code": "da",
+ "name": "dana"
+ },
+ "nb": {
+ "code": "nb",
+ "name": "dannorvega"
+ },
+ "dz": {
+ "code": "dz",
+ "name": "dzonko"
+ },
+ "ebu": {
+ "code": "ebu",
+ "name": "Embu"
+ },
+ "eo": {
+ "code": "eo",
+ "name": "esperanto"
+ },
+ "et": {
+ "code": "et",
+ "name": "estona"
+ },
+ "es-ES": {
+ "code": "es-ES",
+ "name": "eÅ­ropa hispana"
+ },
+ "pt-PT": {
+ "code": "pt-PT",
+ "name": "eÅ­ropportugala"
+ },
+ "eu": {
+ "code": "eu",
+ "name": "eÅ­ska"
+ },
+ "ee": {
+ "code": "ee",
+ "name": "Ewe"
+ },
+ "ewo": {
+ "code": "ewo",
+ "name": "Ewondo"
+ },
+ "fo": {
+ "code": "fo",
+ "name": "feroa"
+ },
+ "fil": {
+ "code": "fil",
+ "name": "filipina"
+ },
+ "fi": {
+ "code": "fi",
+ "name": "finna"
+ },
+ "nl-BE": {
+ "code": "nl-BE",
+ "name": "flandra"
+ },
+ "fr": {
+ "code": "fr",
+ "name": "franca"
+ },
+ "fy": {
+ "code": "fy",
+ "name": "frisa"
+ },
+ "fur": {
+ "code": "fur",
+ "name": "Friulian"
+ },
+ "ff": {
+ "code": "ff",
+ "name": "Fulah"
+ },
+ "gd": {
+ "code": "gd",
+ "name": "gaela"
+ },
+ "gl": {
+ "code": "gl",
+ "name": "galega"
+ },
+ "lg": {
+ "code": "lg",
+ "name": "Ganda"
+ },
+ "de": {
+ "code": "de",
+ "name": "germana"
+ },
+ "el": {
+ "code": "el",
+ "name": "greka"
+ },
+ "kl": {
+ "code": "kl",
+ "name": "gronlanda"
+ },
+ "gu": {
+ "code": "gu",
+ "name": "guÄarata"
+ },
+ "guz": {
+ "code": "guz",
+ "name": "Gusii"
+ },
+ "ha": {
+ "code": "ha",
+ "name": "haÅ­sa"
+ },
+ "he": {
+ "code": "he",
+ "name": "hebrea"
+ },
+ "hi": {
+ "code": "hi",
+ "name": "hinda"
+ },
+ "es": {
+ "code": "es",
+ "name": "hispana"
+ },
+ "hu": {
+ "code": "hu",
+ "name": "hungara"
+ },
+ "id": {
+ "code": "id",
+ "name": "indonezia"
+ },
+ "ga": {
+ "code": "ga",
+ "name": "irlanda"
+ },
+ "is": {
+ "code": "is",
+ "name": "islanda"
+ },
+ "it": {
+ "code": "it",
+ "name": "itala"
+ },
+ "ja": {
+ "code": "ja",
+ "name": "japana"
+ },
+ "dyo": {
+ "code": "dyo",
+ "name": "Jola-Fonyi"
+ },
+ "yo": {
+ "code": "yo",
+ "name": "joruba"
+ },
+ "kea": {
+ "code": "kea",
+ "name": "Kabuverdianu"
+ },
+ "kab": {
+ "code": "kab",
+ "name": "Kabyle"
+ },
+ "kln": {
+ "code": "kln",
+ "name": "Kalenjin"
+ },
+ "kam": {
+ "code": "kam",
+ "name": "Kamba"
+ },
+ "en-CA": {
+ "code": "en-CA",
+ "name": "kanada angla"
+ },
+ "fr-CA": {
+ "code": "fr-CA",
+ "name": "kanada franca"
+ },
+ "kn": {
+ "code": "kn",
+ "name": "kanara"
+ },
+ "ka": {
+ "code": "ka",
+ "name": "kartvela"
+ },
+ "ks": {
+ "code": "ks",
+ "name": "kaÅmira"
+ },
+ "ca": {
+ "code": "ca",
+ "name": "kataluna"
+ },
+ "kk": {
+ "code": "kk",
+ "name": "kazaĥa"
+ },
+ "ki": {
+ "code": "ki",
+ "name": "Kikuyu"
+ },
+ "cy": {
+ "code": "cy",
+ "name": "kimra"
+ },
+ "ky": {
+ "code": "ky",
+ "name": "kirgiza"
+ },
+ "km": {
+ "code": "km",
+ "name": "kmera"
+ },
+ "ko": {
+ "code": "ko",
+ "name": "korea"
+ },
+ "khq": {
+ "code": "khq",
+ "name": "Koyra Chiini"
+ },
+ "ses": {
+ "code": "ses",
+ "name": "Koyraboro Senni"
+ },
+ "hr": {
+ "code": "hr",
+ "name": "kroata"
+ },
+ "nmg": {
+ "code": "nmg",
+ "name": "Kwasio"
+ },
+ "lag": {
+ "code": "lag",
+ "name": "Langi"
+ },
+ "lv": {
+ "code": "lv",
+ "name": "latva"
+ },
+ "lo": {
+ "code": "lo",
+ "name": "laÅ­a"
+ },
+ "ln": {
+ "code": "ln",
+ "name": "lingala"
+ },
+ "lt": {
+ "code": "lt",
+ "name": "litova"
+ },
+ "lu": {
+ "code": "lu",
+ "name": "Luba-Katanga"
+ },
+ "lb": {
+ "code": "lb",
+ "name": "luksemburga"
+ },
+ "luo": {
+ "code": "luo",
+ "name": "Luo"
+ },
+ "luy": {
+ "code": "luy",
+ "name": "Luyia"
+ },
+ "jmc": {
+ "code": "jmc",
+ "name": "Machame"
+ },
+ "mk": {
+ "code": "mk",
+ "name": "makedona"
+ },
+ "mgh": {
+ "code": "mgh",
+ "name": "Makhuwa-Meetto"
+ },
+ "kde": {
+ "code": "kde",
+ "name": "Makonde"
+ },
+ "mg": {
+ "code": "mg",
+ "name": "malagasa"
+ },
+ "ms": {
+ "code": "ms",
+ "name": "malaja"
+ },
+ "ml": {
+ "code": "ml",
+ "name": "malajalama"
+ },
+ "dsb": {
+ "code": "dsb",
+ "name": "malsuprasoraba"
+ },
+ "mt": {
+ "code": "mt",
+ "name": "malta"
+ },
+ "mr": {
+ "code": "mr",
+ "name": "marata"
+ },
+ "mas": {
+ "code": "mas",
+ "name": "Masai"
+ },
+ "es-MX": {
+ "code": "es-MX",
+ "name": "meksika hispana"
+ },
+ "mer": {
+ "code": "mer",
+ "name": "Meru"
+ },
+ "ar-001": {
+ "code": "ar-001",
+ "name": "moderna norma araba"
+ },
+ "mn": {
+ "code": "mn",
+ "name": "mongola"
+ },
+ "mfe": {
+ "code": "mfe",
+ "name": "Morisyen"
+ },
+ "mua": {
+ "code": "mua",
+ "name": "Mundang"
+ },
+ "naq": {
+ "code": "naq",
+ "name": "Nama"
+ },
+ "nl": {
+ "code": "nl",
+ "name": "nederlanda"
+ },
+ "ne": {
+ "code": "ne",
+ "name": "nepala"
+ },
+ "jgo": {
+ "code": "jgo",
+ "name": "Ngomba"
+ },
+ "nd": {
+ "code": "nd",
+ "name": "North Ndebele"
+ },
+ "se": {
+ "code": "se",
+ "name": "Northern Sami"
+ },
+ "nn": {
+ "code": "nn",
+ "name": "novnorvega"
+ },
+ "nus": {
+ "code": "nus",
+ "name": "Nuer"
+ },
+ "nyn": {
+ "code": "nyn",
+ "name": "Nyankole"
+ },
+ "or": {
+ "code": "or",
+ "name": "orijo"
+ },
+ "pa": {
+ "code": "pa",
+ "name": "panÄaba"
+ },
+ "ps": {
+ "code": "ps",
+ "name": "paÅtoa"
+ },
+ "fa": {
+ "code": "fa",
+ "name": "persa"
+ },
+ "pl": {
+ "code": "pl",
+ "name": "pola"
+ },
+ "pt": {
+ "code": "pt",
+ "name": "portugala"
+ },
+ "ro-MD": {
+ "code": "ro-MD",
+ "name": "ro_MD"
+ },
+ "rm": {
+ "code": "rm",
+ "name": "romanĉa"
+ },
+ "rof": {
+ "code": "rof",
+ "name": "Rombo"
+ },
+ "ro": {
+ "code": "ro",
+ "name": "rumana"
+ },
+ "ru": {
+ "code": "ru",
+ "name": "rusa"
+ },
+ "rwk": {
+ "code": "rwk",
+ "name": "Rwa"
+ },
+ "saq": {
+ "code": "saq",
+ "name": "Samburu"
+ },
+ "sg": {
+ "code": "sg",
+ "name": "sangoa"
+ },
+ "sbp": {
+ "code": "sbp",
+ "name": "Sangu"
+ },
+ "seh": {
+ "code": "seh",
+ "name": "Sena"
+ },
+ "sr": {
+ "code": "sr",
+ "name": "serba"
+ },
+ "ksb": {
+ "code": "ksb",
+ "name": "Shambala"
+ },
+ "si": {
+ "code": "si",
+ "name": "sinhala"
+ },
+ "sk": {
+ "code": "sk",
+ "name": "slovaka"
+ },
+ "sl": {
+ "code": "sl",
+ "name": "slovena"
+ },
+ "xog": {
+ "code": "xog",
+ "name": "Soga"
+ },
+ "so": {
+ "code": "so",
+ "name": "somala"
+ },
+ "zgh": {
+ "code": "zgh",
+ "name": "Standard Moroccan Tamazight"
+ },
+ "sw": {
+ "code": "sw",
+ "name": "svahila"
+ },
+ "sv": {
+ "code": "sv",
+ "name": "sveda"
+ },
+ "fr-CH": {
+ "code": "fr-CH",
+ "name": "svisa franca"
+ },
+ "de-CH": {
+ "code": "de-CH",
+ "name": "svisa germana"
+ },
+ "gsw": {
+ "code": "gsw",
+ "name": "Swiss German"
+ },
+ "sn": {
+ "code": "sn",
+ "name": "Åona"
+ },
+ "shi": {
+ "code": "shi",
+ "name": "Tachelhit"
+ },
+ "dav": {
+ "code": "dav",
+ "name": "Taita"
+ },
+ "th": {
+ "code": "th",
+ "name": "taja"
+ },
+ "ta": {
+ "code": "ta",
+ "name": "tamila"
+ },
+ "twq": {
+ "code": "twq",
+ "name": "Tasawaq"
+ },
+ "te": {
+ "code": "te",
+ "name": "telugua"
+ },
+ "teo": {
+ "code": "teo",
+ "name": "Teso"
+ },
+ "bo": {
+ "code": "bo",
+ "name": "tibeta"
+ },
+ "ti": {
+ "code": "ti",
+ "name": "tigraja"
+ },
+ "to": {
+ "code": "to",
+ "name": "tongaa"
+ },
+ "tr": {
+ "code": "tr",
+ "name": "turka"
+ },
+ "ug": {
+ "code": "ug",
+ "name": "ujgura"
+ },
+ "uk": {
+ "code": "uk",
+ "name": "ukraina"
+ },
+ "hsb": {
+ "code": "hsb",
+ "name": "Upper Sorbian"
+ },
+ "ur": {
+ "code": "ur",
+ "name": "urduo"
+ },
+ "en-US": {
+ "code": "en-US",
+ "name": "usona angla"
+ },
+ "uz": {
+ "code": "uz",
+ "name": "uzbeka"
+ },
+ "vai": {
+ "code": "vai",
+ "name": "Vai"
+ },
+ "vi": {
+ "code": "vi",
+ "name": "vjetnama"
+ },
+ "vun": {
+ "code": "vun",
+ "name": "Vunjo"
+ },
+ "wae": {
+ "code": "wae",
+ "name": "Walser"
+ },
+ "yav": {
+ "code": "yav",
+ "name": "Yangben"
+ },
+ "dje": {
+ "code": "dje",
+ "name": "Zarma"
+ },
+ "zu": {
+ "code": "zu",
+ "name": "zulua"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/language/es-AR.json b/library/intl/resources/language/es-AR.json
new file mode 100644
index 000000000..afeb6b6b4
--- /dev/null
+++ b/library/intl/resources/language/es-AR.json
@@ -0,0 +1,738 @@
+{
+ "af": {
+ "code": "af",
+ "name": "afrikáans"
+ },
+ "agq": {
+ "code": "agq",
+ "name": "aghem"
+ },
+ "ak": {
+ "code": "ak",
+ "name": "akan"
+ },
+ "sq": {
+ "code": "sq",
+ "name": "albanés"
+ },
+ "de": {
+ "code": "de",
+ "name": "alemán"
+ },
+ "gsw": {
+ "code": "gsw",
+ "name": "alemán (Suiza)"
+ },
+ "de-AT": {
+ "code": "de-AT",
+ "name": "alemán austríaco"
+ },
+ "de-CH": {
+ "code": "de-CH",
+ "name": "alto alemán de Suiza"
+ },
+ "am": {
+ "code": "am",
+ "name": "amárico"
+ },
+ "ar": {
+ "code": "ar",
+ "name": "árabe"
+ },
+ "ar-001": {
+ "code": "ar-001",
+ "name": "árabe estándar moderno"
+ },
+ "hy": {
+ "code": "hy",
+ "name": "armenio"
+ },
+ "ast": {
+ "code": "ast",
+ "name": "asturiano"
+ },
+ "asa": {
+ "code": "asa",
+ "name": "asu"
+ },
+ "az": {
+ "code": "az",
+ "name": "azerbaiyano"
+ },
+ "ksf": {
+ "code": "ksf",
+ "name": "bafia"
+ },
+ "bm": {
+ "code": "bm",
+ "name": "bambara"
+ },
+ "bas": {
+ "code": "bas",
+ "name": "basa"
+ },
+ "bez": {
+ "code": "bez",
+ "name": "bena"
+ },
+ "bn": {
+ "code": "bn",
+ "name": "bengalí"
+ },
+ "be": {
+ "code": "be",
+ "name": "bielorruso"
+ },
+ "my": {
+ "code": "my",
+ "name": "birmano"
+ },
+ "brx": {
+ "code": "brx",
+ "name": "bodo"
+ },
+ "nb": {
+ "code": "nb",
+ "name": "bokmal noruego"
+ },
+ "bs": {
+ "code": "bs",
+ "name": "bosnio"
+ },
+ "br": {
+ "code": "br",
+ "name": "bretón"
+ },
+ "bg": {
+ "code": "bg",
+ "name": "búlgaro"
+ },
+ "kab": {
+ "code": "kab",
+ "name": "cabila"
+ },
+ "ks": {
+ "code": "ks",
+ "name": "cachemiro"
+ },
+ "kn": {
+ "code": "kn",
+ "name": "canarés"
+ },
+ "ca": {
+ "code": "ca",
+ "name": "catalán"
+ },
+ "cs": {
+ "code": "cs",
+ "name": "checo"
+ },
+ "chr": {
+ "code": "chr",
+ "name": "cheroqui"
+ },
+ "cgg": {
+ "code": "cgg",
+ "name": "chiga"
+ },
+ "zh": {
+ "code": "zh",
+ "name": "chino"
+ },
+ "zh-Hans": {
+ "code": "zh-Hans",
+ "name": "chino simplificado"
+ },
+ "zh-Hant": {
+ "code": "zh-Hant",
+ "name": "chino tradicional"
+ },
+ "si": {
+ "code": "si",
+ "name": "cingalés"
+ },
+ "ko": {
+ "code": "ko",
+ "name": "coreano"
+ },
+ "kea": {
+ "code": "kea",
+ "name": "criollo caboverdiano"
+ },
+ "mfe": {
+ "code": "mfe",
+ "name": "criollo mauriciano"
+ },
+ "hr": {
+ "code": "hr",
+ "name": "croata"
+ },
+ "da": {
+ "code": "da",
+ "name": "danés"
+ },
+ "dz": {
+ "code": "dz",
+ "name": "dzongkha"
+ },
+ "ebu": {
+ "code": "ebu",
+ "name": "embu"
+ },
+ "sk": {
+ "code": "sk",
+ "name": "eslovaco"
+ },
+ "sl": {
+ "code": "sl",
+ "name": "esloveno"
+ },
+ "es": {
+ "code": "es",
+ "name": "español"
+ },
+ "es-ES": {
+ "code": "es-ES",
+ "name": "español de España"
+ },
+ "es-MX": {
+ "code": "es-MX",
+ "name": "español de México"
+ },
+ "eo": {
+ "code": "eo",
+ "name": "esperanto"
+ },
+ "et": {
+ "code": "et",
+ "name": "estonio"
+ },
+ "ee": {
+ "code": "ee",
+ "name": "ewé"
+ },
+ "ewo": {
+ "code": "ewo",
+ "name": "ewondo"
+ },
+ "fo": {
+ "code": "fo",
+ "name": "feroés"
+ },
+ "fil": {
+ "code": "fil",
+ "name": "filipino"
+ },
+ "fi": {
+ "code": "fi",
+ "name": "finés"
+ },
+ "nl-BE": {
+ "code": "nl-BE",
+ "name": "flamenco"
+ },
+ "fr": {
+ "code": "fr",
+ "name": "francés"
+ },
+ "fr-CA": {
+ "code": "fr-CA",
+ "name": "francés canadiense"
+ },
+ "fr-CH": {
+ "code": "fr-CH",
+ "name": "francés suizo"
+ },
+ "fy": {
+ "code": "fy",
+ "name": "frisón occidental"
+ },
+ "fur": {
+ "code": "fur",
+ "name": "friulano"
+ },
+ "ff": {
+ "code": "ff",
+ "name": "fula"
+ },
+ "gd": {
+ "code": "gd",
+ "name": "gaélico escocés"
+ },
+ "cy": {
+ "code": "cy",
+ "name": "galés"
+ },
+ "gl": {
+ "code": "gl",
+ "name": "gallego"
+ },
+ "lg": {
+ "code": "lg",
+ "name": "ganda"
+ },
+ "ka": {
+ "code": "ka",
+ "name": "georgiano"
+ },
+ "el": {
+ "code": "el",
+ "name": "griego"
+ },
+ "kl": {
+ "code": "kl",
+ "name": "groenlandés"
+ },
+ "gu": {
+ "code": "gu",
+ "name": "gujarati"
+ },
+ "guz": {
+ "code": "guz",
+ "name": "gusii"
+ },
+ "ha": {
+ "code": "ha",
+ "name": "hausa"
+ },
+ "he": {
+ "code": "he",
+ "name": "hebreo"
+ },
+ "hi": {
+ "code": "hi",
+ "name": "hindi"
+ },
+ "hu": {
+ "code": "hu",
+ "name": "húngaro"
+ },
+ "id": {
+ "code": "id",
+ "name": "indonesio"
+ },
+ "en": {
+ "code": "en",
+ "name": "inglés"
+ },
+ "en-AU": {
+ "code": "en-AU",
+ "name": "inglés australiano"
+ },
+ "en-GB": {
+ "code": "en-GB",
+ "name": "inglés británico"
+ },
+ "en-CA": {
+ "code": "en-CA",
+ "name": "inglés canadiense"
+ },
+ "en-US": {
+ "code": "en-US",
+ "name": "inglés estadounidense"
+ },
+ "ga": {
+ "code": "ga",
+ "name": "irlandés"
+ },
+ "is": {
+ "code": "is",
+ "name": "islandés"
+ },
+ "it": {
+ "code": "it",
+ "name": "italiano"
+ },
+ "ja": {
+ "code": "ja",
+ "name": "japonés"
+ },
+ "km": {
+ "code": "km",
+ "name": "jemer"
+ },
+ "dyo": {
+ "code": "dyo",
+ "name": "jola-fonyi"
+ },
+ "kln": {
+ "code": "kln",
+ "name": "kalenjin"
+ },
+ "kam": {
+ "code": "kam",
+ "name": "kamba"
+ },
+ "kk": {
+ "code": "kk",
+ "name": "kazajo"
+ },
+ "ki": {
+ "code": "ki",
+ "name": "kikuyu"
+ },
+ "ky": {
+ "code": "ky",
+ "name": "kirguís"
+ },
+ "rn": {
+ "code": "rn",
+ "name": "kiroundi"
+ },
+ "vun": {
+ "code": "vun",
+ "name": "kivunjo"
+ },
+ "ksh": {
+ "code": "ksh",
+ "name": "kölsch"
+ },
+ "khq": {
+ "code": "khq",
+ "name": "koyra chiini"
+ },
+ "ses": {
+ "code": "ses",
+ "name": "koyraboro senni"
+ },
+ "nmg": {
+ "code": "nmg",
+ "name": "kwasio"
+ },
+ "lag": {
+ "code": "lag",
+ "name": "langi"
+ },
+ "lo": {
+ "code": "lo",
+ "name": "laosiano"
+ },
+ "lv": {
+ "code": "lv",
+ "name": "letón"
+ },
+ "ln": {
+ "code": "ln",
+ "name": "lingala"
+ },
+ "lt": {
+ "code": "lt",
+ "name": "lituano"
+ },
+ "lu": {
+ "code": "lu",
+ "name": "luba-katanga"
+ },
+ "luo": {
+ "code": "luo",
+ "name": "Luo"
+ },
+ "lb": {
+ "code": "lb",
+ "name": "luxemburgués"
+ },
+ "luy": {
+ "code": "luy",
+ "name": "luyia"
+ },
+ "mk": {
+ "code": "mk",
+ "name": "macedonio"
+ },
+ "jmc": {
+ "code": "jmc",
+ "name": "machame"
+ },
+ "mgh": {
+ "code": "mgh",
+ "name": "makhuwa-meetto"
+ },
+ "kde": {
+ "code": "kde",
+ "name": "makonde"
+ },
+ "ml": {
+ "code": "ml",
+ "name": "malayalam"
+ },
+ "ms": {
+ "code": "ms",
+ "name": "malayo"
+ },
+ "mg": {
+ "code": "mg",
+ "name": "malgache"
+ },
+ "mt": {
+ "code": "mt",
+ "name": "maltés"
+ },
+ "mr": {
+ "code": "mr",
+ "name": "maratí"
+ },
+ "mas": {
+ "code": "mas",
+ "name": "masái"
+ },
+ "mer": {
+ "code": "mer",
+ "name": "meru"
+ },
+ "ro-MD": {
+ "code": "ro-MD",
+ "name": "moldavo"
+ },
+ "mn": {
+ "code": "mn",
+ "name": "mongol"
+ },
+ "mua": {
+ "code": "mua",
+ "name": "mundang"
+ },
+ "naq": {
+ "code": "naq",
+ "name": "nama"
+ },
+ "nd": {
+ "code": "nd",
+ "name": "ndebele septentrional"
+ },
+ "nl": {
+ "code": "nl",
+ "name": "neerlandés"
+ },
+ "ne": {
+ "code": "ne",
+ "name": "nepalí"
+ },
+ "jgo": {
+ "code": "jgo",
+ "name": "ngomba"
+ },
+ "nus": {
+ "code": "nus",
+ "name": "nuer"
+ },
+ "nyn": {
+ "code": "nyn",
+ "name": "nyankole"
+ },
+ "nn": {
+ "code": "nn",
+ "name": "nynorsk noruego"
+ },
+ "or": {
+ "code": "or",
+ "name": "oriya"
+ },
+ "ps": {
+ "code": "ps",
+ "name": "pastún"
+ },
+ "fa": {
+ "code": "fa",
+ "name": "persa"
+ },
+ "pl": {
+ "code": "pl",
+ "name": "polaco"
+ },
+ "pt": {
+ "code": "pt",
+ "name": "portugués"
+ },
+ "pt-BR": {
+ "code": "pt-BR",
+ "name": "portugués de Brasil"
+ },
+ "pt-PT": {
+ "code": "pt-PT",
+ "name": "portugués de Portugal"
+ },
+ "pa": {
+ "code": "pa",
+ "name": "punjabí"
+ },
+ "rm": {
+ "code": "rm",
+ "name": "retorrománico"
+ },
+ "rof": {
+ "code": "rof",
+ "name": "rombo"
+ },
+ "ro": {
+ "code": "ro",
+ "name": "rumano"
+ },
+ "ru": {
+ "code": "ru",
+ "name": "ruso"
+ },
+ "rwk": {
+ "code": "rwk",
+ "name": "rwa"
+ },
+ "saq": {
+ "code": "saq",
+ "name": "samburu"
+ },
+ "se": {
+ "code": "se",
+ "name": "sami septentrional"
+ },
+ "sg": {
+ "code": "sg",
+ "name": "sango"
+ },
+ "sbp": {
+ "code": "sbp",
+ "name": "sangu"
+ },
+ "seh": {
+ "code": "seh",
+ "name": "sena"
+ },
+ "sr": {
+ "code": "sr",
+ "name": "serbio"
+ },
+ "ksb": {
+ "code": "ksb",
+ "name": "shambala"
+ },
+ "sn": {
+ "code": "sn",
+ "name": "shona"
+ },
+ "xog": {
+ "code": "xog",
+ "name": "soga"
+ },
+ "so": {
+ "code": "so",
+ "name": "somalí"
+ },
+ "dsb": {
+ "code": "dsb",
+ "name": "sorbio inferior"
+ },
+ "hsb": {
+ "code": "hsb",
+ "name": "sorbio superior"
+ },
+ "sv": {
+ "code": "sv",
+ "name": "sueco"
+ },
+ "sw": {
+ "code": "sw",
+ "name": "swahili"
+ },
+ "swc": {
+ "code": "swc",
+ "name": "swahili del Congo"
+ },
+ "th": {
+ "code": "th",
+ "name": "tailandés"
+ },
+ "dav": {
+ "code": "dav",
+ "name": "taita"
+ },
+ "zgh": {
+ "code": "zgh",
+ "name": "tamazight"
+ },
+ "tzm": {
+ "code": "tzm",
+ "name": "tamazight del Marruecos Central"
+ },
+ "ta": {
+ "code": "ta",
+ "name": "tamil"
+ },
+ "twq": {
+ "code": "twq",
+ "name": "tasawaq"
+ },
+ "shi": {
+ "code": "shi",
+ "name": "tashelhit"
+ },
+ "te": {
+ "code": "te",
+ "name": "telugu"
+ },
+ "teo": {
+ "code": "teo",
+ "name": "teso"
+ },
+ "bo": {
+ "code": "bo",
+ "name": "tibetano"
+ },
+ "ti": {
+ "code": "ti",
+ "name": "tigriña"
+ },
+ "to": {
+ "code": "to",
+ "name": "tongano"
+ },
+ "tr": {
+ "code": "tr",
+ "name": "turco"
+ },
+ "uk": {
+ "code": "uk",
+ "name": "ucraniano"
+ },
+ "ug": {
+ "code": "ug",
+ "name": "uigur"
+ },
+ "ur": {
+ "code": "ur",
+ "name": "urdu"
+ },
+ "uz": {
+ "code": "uz",
+ "name": "uzbeko"
+ },
+ "vai": {
+ "code": "vai",
+ "name": "Vai"
+ },
+ "eu": {
+ "code": "eu",
+ "name": "vasco"
+ },
+ "vi": {
+ "code": "vi",
+ "name": "vietnamita"
+ },
+ "wae": {
+ "code": "wae",
+ "name": "walser"
+ },
+ "yav": {
+ "code": "yav",
+ "name": "yangben"
+ },
+ "yo": {
+ "code": "yo",
+ "name": "yoruba"
+ },
+ "dje": {
+ "code": "dje",
+ "name": "zarma"
+ },
+ "zu": {
+ "code": "zu",
+ "name": "zulú"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/language/es-BO.json b/library/intl/resources/language/es-BO.json
new file mode 100644
index 000000000..afeb6b6b4
--- /dev/null
+++ b/library/intl/resources/language/es-BO.json
@@ -0,0 +1,738 @@
+{
+ "af": {
+ "code": "af",
+ "name": "afrikáans"
+ },
+ "agq": {
+ "code": "agq",
+ "name": "aghem"
+ },
+ "ak": {
+ "code": "ak",
+ "name": "akan"
+ },
+ "sq": {
+ "code": "sq",
+ "name": "albanés"
+ },
+ "de": {
+ "code": "de",
+ "name": "alemán"
+ },
+ "gsw": {
+ "code": "gsw",
+ "name": "alemán (Suiza)"
+ },
+ "de-AT": {
+ "code": "de-AT",
+ "name": "alemán austríaco"
+ },
+ "de-CH": {
+ "code": "de-CH",
+ "name": "alto alemán de Suiza"
+ },
+ "am": {
+ "code": "am",
+ "name": "amárico"
+ },
+ "ar": {
+ "code": "ar",
+ "name": "árabe"
+ },
+ "ar-001": {
+ "code": "ar-001",
+ "name": "árabe estándar moderno"
+ },
+ "hy": {
+ "code": "hy",
+ "name": "armenio"
+ },
+ "ast": {
+ "code": "ast",
+ "name": "asturiano"
+ },
+ "asa": {
+ "code": "asa",
+ "name": "asu"
+ },
+ "az": {
+ "code": "az",
+ "name": "azerbaiyano"
+ },
+ "ksf": {
+ "code": "ksf",
+ "name": "bafia"
+ },
+ "bm": {
+ "code": "bm",
+ "name": "bambara"
+ },
+ "bas": {
+ "code": "bas",
+ "name": "basa"
+ },
+ "bez": {
+ "code": "bez",
+ "name": "bena"
+ },
+ "bn": {
+ "code": "bn",
+ "name": "bengalí"
+ },
+ "be": {
+ "code": "be",
+ "name": "bielorruso"
+ },
+ "my": {
+ "code": "my",
+ "name": "birmano"
+ },
+ "brx": {
+ "code": "brx",
+ "name": "bodo"
+ },
+ "nb": {
+ "code": "nb",
+ "name": "bokmal noruego"
+ },
+ "bs": {
+ "code": "bs",
+ "name": "bosnio"
+ },
+ "br": {
+ "code": "br",
+ "name": "bretón"
+ },
+ "bg": {
+ "code": "bg",
+ "name": "búlgaro"
+ },
+ "kab": {
+ "code": "kab",
+ "name": "cabila"
+ },
+ "ks": {
+ "code": "ks",
+ "name": "cachemiro"
+ },
+ "kn": {
+ "code": "kn",
+ "name": "canarés"
+ },
+ "ca": {
+ "code": "ca",
+ "name": "catalán"
+ },
+ "cs": {
+ "code": "cs",
+ "name": "checo"
+ },
+ "chr": {
+ "code": "chr",
+ "name": "cheroqui"
+ },
+ "cgg": {
+ "code": "cgg",
+ "name": "chiga"
+ },
+ "zh": {
+ "code": "zh",
+ "name": "chino"
+ },
+ "zh-Hans": {
+ "code": "zh-Hans",
+ "name": "chino simplificado"
+ },
+ "zh-Hant": {
+ "code": "zh-Hant",
+ "name": "chino tradicional"
+ },
+ "si": {
+ "code": "si",
+ "name": "cingalés"
+ },
+ "ko": {
+ "code": "ko",
+ "name": "coreano"
+ },
+ "kea": {
+ "code": "kea",
+ "name": "criollo caboverdiano"
+ },
+ "mfe": {
+ "code": "mfe",
+ "name": "criollo mauriciano"
+ },
+ "hr": {
+ "code": "hr",
+ "name": "croata"
+ },
+ "da": {
+ "code": "da",
+ "name": "danés"
+ },
+ "dz": {
+ "code": "dz",
+ "name": "dzongkha"
+ },
+ "ebu": {
+ "code": "ebu",
+ "name": "embu"
+ },
+ "sk": {
+ "code": "sk",
+ "name": "eslovaco"
+ },
+ "sl": {
+ "code": "sl",
+ "name": "esloveno"
+ },
+ "es": {
+ "code": "es",
+ "name": "español"
+ },
+ "es-ES": {
+ "code": "es-ES",
+ "name": "español de España"
+ },
+ "es-MX": {
+ "code": "es-MX",
+ "name": "español de México"
+ },
+ "eo": {
+ "code": "eo",
+ "name": "esperanto"
+ },
+ "et": {
+ "code": "et",
+ "name": "estonio"
+ },
+ "ee": {
+ "code": "ee",
+ "name": "ewé"
+ },
+ "ewo": {
+ "code": "ewo",
+ "name": "ewondo"
+ },
+ "fo": {
+ "code": "fo",
+ "name": "feroés"
+ },
+ "fil": {
+ "code": "fil",
+ "name": "filipino"
+ },
+ "fi": {
+ "code": "fi",
+ "name": "finés"
+ },
+ "nl-BE": {
+ "code": "nl-BE",
+ "name": "flamenco"
+ },
+ "fr": {
+ "code": "fr",
+ "name": "francés"
+ },
+ "fr-CA": {
+ "code": "fr-CA",
+ "name": "francés canadiense"
+ },
+ "fr-CH": {
+ "code": "fr-CH",
+ "name": "francés suizo"
+ },
+ "fy": {
+ "code": "fy",
+ "name": "frisón occidental"
+ },
+ "fur": {
+ "code": "fur",
+ "name": "friulano"
+ },
+ "ff": {
+ "code": "ff",
+ "name": "fula"
+ },
+ "gd": {
+ "code": "gd",
+ "name": "gaélico escocés"
+ },
+ "cy": {
+ "code": "cy",
+ "name": "galés"
+ },
+ "gl": {
+ "code": "gl",
+ "name": "gallego"
+ },
+ "lg": {
+ "code": "lg",
+ "name": "ganda"
+ },
+ "ka": {
+ "code": "ka",
+ "name": "georgiano"
+ },
+ "el": {
+ "code": "el",
+ "name": "griego"
+ },
+ "kl": {
+ "code": "kl",
+ "name": "groenlandés"
+ },
+ "gu": {
+ "code": "gu",
+ "name": "gujarati"
+ },
+ "guz": {
+ "code": "guz",
+ "name": "gusii"
+ },
+ "ha": {
+ "code": "ha",
+ "name": "hausa"
+ },
+ "he": {
+ "code": "he",
+ "name": "hebreo"
+ },
+ "hi": {
+ "code": "hi",
+ "name": "hindi"
+ },
+ "hu": {
+ "code": "hu",
+ "name": "húngaro"
+ },
+ "id": {
+ "code": "id",
+ "name": "indonesio"
+ },
+ "en": {
+ "code": "en",
+ "name": "inglés"
+ },
+ "en-AU": {
+ "code": "en-AU",
+ "name": "inglés australiano"
+ },
+ "en-GB": {
+ "code": "en-GB",
+ "name": "inglés británico"
+ },
+ "en-CA": {
+ "code": "en-CA",
+ "name": "inglés canadiense"
+ },
+ "en-US": {
+ "code": "en-US",
+ "name": "inglés estadounidense"
+ },
+ "ga": {
+ "code": "ga",
+ "name": "irlandés"
+ },
+ "is": {
+ "code": "is",
+ "name": "islandés"
+ },
+ "it": {
+ "code": "it",
+ "name": "italiano"
+ },
+ "ja": {
+ "code": "ja",
+ "name": "japonés"
+ },
+ "km": {
+ "code": "km",
+ "name": "jemer"
+ },
+ "dyo": {
+ "code": "dyo",
+ "name": "jola-fonyi"
+ },
+ "kln": {
+ "code": "kln",
+ "name": "kalenjin"
+ },
+ "kam": {
+ "code": "kam",
+ "name": "kamba"
+ },
+ "kk": {
+ "code": "kk",
+ "name": "kazajo"
+ },
+ "ki": {
+ "code": "ki",
+ "name": "kikuyu"
+ },
+ "ky": {
+ "code": "ky",
+ "name": "kirguís"
+ },
+ "rn": {
+ "code": "rn",
+ "name": "kiroundi"
+ },
+ "vun": {
+ "code": "vun",
+ "name": "kivunjo"
+ },
+ "ksh": {
+ "code": "ksh",
+ "name": "kölsch"
+ },
+ "khq": {
+ "code": "khq",
+ "name": "koyra chiini"
+ },
+ "ses": {
+ "code": "ses",
+ "name": "koyraboro senni"
+ },
+ "nmg": {
+ "code": "nmg",
+ "name": "kwasio"
+ },
+ "lag": {
+ "code": "lag",
+ "name": "langi"
+ },
+ "lo": {
+ "code": "lo",
+ "name": "laosiano"
+ },
+ "lv": {
+ "code": "lv",
+ "name": "letón"
+ },
+ "ln": {
+ "code": "ln",
+ "name": "lingala"
+ },
+ "lt": {
+ "code": "lt",
+ "name": "lituano"
+ },
+ "lu": {
+ "code": "lu",
+ "name": "luba-katanga"
+ },
+ "luo": {
+ "code": "luo",
+ "name": "Luo"
+ },
+ "lb": {
+ "code": "lb",
+ "name": "luxemburgués"
+ },
+ "luy": {
+ "code": "luy",
+ "name": "luyia"
+ },
+ "mk": {
+ "code": "mk",
+ "name": "macedonio"
+ },
+ "jmc": {
+ "code": "jmc",
+ "name": "machame"
+ },
+ "mgh": {
+ "code": "mgh",
+ "name": "makhuwa-meetto"
+ },
+ "kde": {
+ "code": "kde",
+ "name": "makonde"
+ },
+ "ml": {
+ "code": "ml",
+ "name": "malayalam"
+ },
+ "ms": {
+ "code": "ms",
+ "name": "malayo"
+ },
+ "mg": {
+ "code": "mg",
+ "name": "malgache"
+ },
+ "mt": {
+ "code": "mt",
+ "name": "maltés"
+ },
+ "mr": {
+ "code": "mr",
+ "name": "maratí"
+ },
+ "mas": {
+ "code": "mas",
+ "name": "masái"
+ },
+ "mer": {
+ "code": "mer",
+ "name": "meru"
+ },
+ "ro-MD": {
+ "code": "ro-MD",
+ "name": "moldavo"
+ },
+ "mn": {
+ "code": "mn",
+ "name": "mongol"
+ },
+ "mua": {
+ "code": "mua",
+ "name": "mundang"
+ },
+ "naq": {
+ "code": "naq",
+ "name": "nama"
+ },
+ "nd": {
+ "code": "nd",
+ "name": "ndebele septentrional"
+ },
+ "nl": {
+ "code": "nl",
+ "name": "neerlandés"
+ },
+ "ne": {
+ "code": "ne",
+ "name": "nepalí"
+ },
+ "jgo": {
+ "code": "jgo",
+ "name": "ngomba"
+ },
+ "nus": {
+ "code": "nus",
+ "name": "nuer"
+ },
+ "nyn": {
+ "code": "nyn",
+ "name": "nyankole"
+ },
+ "nn": {
+ "code": "nn",
+ "name": "nynorsk noruego"
+ },
+ "or": {
+ "code": "or",
+ "name": "oriya"
+ },
+ "ps": {
+ "code": "ps",
+ "name": "pastún"
+ },
+ "fa": {
+ "code": "fa",
+ "name": "persa"
+ },
+ "pl": {
+ "code": "pl",
+ "name": "polaco"
+ },
+ "pt": {
+ "code": "pt",
+ "name": "portugués"
+ },
+ "pt-BR": {
+ "code": "pt-BR",
+ "name": "portugués de Brasil"
+ },
+ "pt-PT": {
+ "code": "pt-PT",
+ "name": "portugués de Portugal"
+ },
+ "pa": {
+ "code": "pa",
+ "name": "punjabí"
+ },
+ "rm": {
+ "code": "rm",
+ "name": "retorrománico"
+ },
+ "rof": {
+ "code": "rof",
+ "name": "rombo"
+ },
+ "ro": {
+ "code": "ro",
+ "name": "rumano"
+ },
+ "ru": {
+ "code": "ru",
+ "name": "ruso"
+ },
+ "rwk": {
+ "code": "rwk",
+ "name": "rwa"
+ },
+ "saq": {
+ "code": "saq",
+ "name": "samburu"
+ },
+ "se": {
+ "code": "se",
+ "name": "sami septentrional"
+ },
+ "sg": {
+ "code": "sg",
+ "name": "sango"
+ },
+ "sbp": {
+ "code": "sbp",
+ "name": "sangu"
+ },
+ "seh": {
+ "code": "seh",
+ "name": "sena"
+ },
+ "sr": {
+ "code": "sr",
+ "name": "serbio"
+ },
+ "ksb": {
+ "code": "ksb",
+ "name": "shambala"
+ },
+ "sn": {
+ "code": "sn",
+ "name": "shona"
+ },
+ "xog": {
+ "code": "xog",
+ "name": "soga"
+ },
+ "so": {
+ "code": "so",
+ "name": "somalí"
+ },
+ "dsb": {
+ "code": "dsb",
+ "name": "sorbio inferior"
+ },
+ "hsb": {
+ "code": "hsb",
+ "name": "sorbio superior"
+ },
+ "sv": {
+ "code": "sv",
+ "name": "sueco"
+ },
+ "sw": {
+ "code": "sw",
+ "name": "swahili"
+ },
+ "swc": {
+ "code": "swc",
+ "name": "swahili del Congo"
+ },
+ "th": {
+ "code": "th",
+ "name": "tailandés"
+ },
+ "dav": {
+ "code": "dav",
+ "name": "taita"
+ },
+ "zgh": {
+ "code": "zgh",
+ "name": "tamazight"
+ },
+ "tzm": {
+ "code": "tzm",
+ "name": "tamazight del Marruecos Central"
+ },
+ "ta": {
+ "code": "ta",
+ "name": "tamil"
+ },
+ "twq": {
+ "code": "twq",
+ "name": "tasawaq"
+ },
+ "shi": {
+ "code": "shi",
+ "name": "tashelhit"
+ },
+ "te": {
+ "code": "te",
+ "name": "telugu"
+ },
+ "teo": {
+ "code": "teo",
+ "name": "teso"
+ },
+ "bo": {
+ "code": "bo",
+ "name": "tibetano"
+ },
+ "ti": {
+ "code": "ti",
+ "name": "tigriña"
+ },
+ "to": {
+ "code": "to",
+ "name": "tongano"
+ },
+ "tr": {
+ "code": "tr",
+ "name": "turco"
+ },
+ "uk": {
+ "code": "uk",
+ "name": "ucraniano"
+ },
+ "ug": {
+ "code": "ug",
+ "name": "uigur"
+ },
+ "ur": {
+ "code": "ur",
+ "name": "urdu"
+ },
+ "uz": {
+ "code": "uz",
+ "name": "uzbeko"
+ },
+ "vai": {
+ "code": "vai",
+ "name": "Vai"
+ },
+ "eu": {
+ "code": "eu",
+ "name": "vasco"
+ },
+ "vi": {
+ "code": "vi",
+ "name": "vietnamita"
+ },
+ "wae": {
+ "code": "wae",
+ "name": "walser"
+ },
+ "yav": {
+ "code": "yav",
+ "name": "yangben"
+ },
+ "yo": {
+ "code": "yo",
+ "name": "yoruba"
+ },
+ "dje": {
+ "code": "dje",
+ "name": "zarma"
+ },
+ "zu": {
+ "code": "zu",
+ "name": "zulú"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/language/es-CL.json b/library/intl/resources/language/es-CL.json
new file mode 100644
index 000000000..afeb6b6b4
--- /dev/null
+++ b/library/intl/resources/language/es-CL.json
@@ -0,0 +1,738 @@
+{
+ "af": {
+ "code": "af",
+ "name": "afrikáans"
+ },
+ "agq": {
+ "code": "agq",
+ "name": "aghem"
+ },
+ "ak": {
+ "code": "ak",
+ "name": "akan"
+ },
+ "sq": {
+ "code": "sq",
+ "name": "albanés"
+ },
+ "de": {
+ "code": "de",
+ "name": "alemán"
+ },
+ "gsw": {
+ "code": "gsw",
+ "name": "alemán (Suiza)"
+ },
+ "de-AT": {
+ "code": "de-AT",
+ "name": "alemán austríaco"
+ },
+ "de-CH": {
+ "code": "de-CH",
+ "name": "alto alemán de Suiza"
+ },
+ "am": {
+ "code": "am",
+ "name": "amárico"
+ },
+ "ar": {
+ "code": "ar",
+ "name": "árabe"
+ },
+ "ar-001": {
+ "code": "ar-001",
+ "name": "árabe estándar moderno"
+ },
+ "hy": {
+ "code": "hy",
+ "name": "armenio"
+ },
+ "ast": {
+ "code": "ast",
+ "name": "asturiano"
+ },
+ "asa": {
+ "code": "asa",
+ "name": "asu"
+ },
+ "az": {
+ "code": "az",
+ "name": "azerbaiyano"
+ },
+ "ksf": {
+ "code": "ksf",
+ "name": "bafia"
+ },
+ "bm": {
+ "code": "bm",
+ "name": "bambara"
+ },
+ "bas": {
+ "code": "bas",
+ "name": "basa"
+ },
+ "bez": {
+ "code": "bez",
+ "name": "bena"
+ },
+ "bn": {
+ "code": "bn",
+ "name": "bengalí"
+ },
+ "be": {
+ "code": "be",
+ "name": "bielorruso"
+ },
+ "my": {
+ "code": "my",
+ "name": "birmano"
+ },
+ "brx": {
+ "code": "brx",
+ "name": "bodo"
+ },
+ "nb": {
+ "code": "nb",
+ "name": "bokmal noruego"
+ },
+ "bs": {
+ "code": "bs",
+ "name": "bosnio"
+ },
+ "br": {
+ "code": "br",
+ "name": "bretón"
+ },
+ "bg": {
+ "code": "bg",
+ "name": "búlgaro"
+ },
+ "kab": {
+ "code": "kab",
+ "name": "cabila"
+ },
+ "ks": {
+ "code": "ks",
+ "name": "cachemiro"
+ },
+ "kn": {
+ "code": "kn",
+ "name": "canarés"
+ },
+ "ca": {
+ "code": "ca",
+ "name": "catalán"
+ },
+ "cs": {
+ "code": "cs",
+ "name": "checo"
+ },
+ "chr": {
+ "code": "chr",
+ "name": "cheroqui"
+ },
+ "cgg": {
+ "code": "cgg",
+ "name": "chiga"
+ },
+ "zh": {
+ "code": "zh",
+ "name": "chino"
+ },
+ "zh-Hans": {
+ "code": "zh-Hans",
+ "name": "chino simplificado"
+ },
+ "zh-Hant": {
+ "code": "zh-Hant",
+ "name": "chino tradicional"
+ },
+ "si": {
+ "code": "si",
+ "name": "cingalés"
+ },
+ "ko": {
+ "code": "ko",
+ "name": "coreano"
+ },
+ "kea": {
+ "code": "kea",
+ "name": "criollo caboverdiano"
+ },
+ "mfe": {
+ "code": "mfe",
+ "name": "criollo mauriciano"
+ },
+ "hr": {
+ "code": "hr",
+ "name": "croata"
+ },
+ "da": {
+ "code": "da",
+ "name": "danés"
+ },
+ "dz": {
+ "code": "dz",
+ "name": "dzongkha"
+ },
+ "ebu": {
+ "code": "ebu",
+ "name": "embu"
+ },
+ "sk": {
+ "code": "sk",
+ "name": "eslovaco"
+ },
+ "sl": {
+ "code": "sl",
+ "name": "esloveno"
+ },
+ "es": {
+ "code": "es",
+ "name": "español"
+ },
+ "es-ES": {
+ "code": "es-ES",
+ "name": "español de España"
+ },
+ "es-MX": {
+ "code": "es-MX",
+ "name": "español de México"
+ },
+ "eo": {
+ "code": "eo",
+ "name": "esperanto"
+ },
+ "et": {
+ "code": "et",
+ "name": "estonio"
+ },
+ "ee": {
+ "code": "ee",
+ "name": "ewé"
+ },
+ "ewo": {
+ "code": "ewo",
+ "name": "ewondo"
+ },
+ "fo": {
+ "code": "fo",
+ "name": "feroés"
+ },
+ "fil": {
+ "code": "fil",
+ "name": "filipino"
+ },
+ "fi": {
+ "code": "fi",
+ "name": "finés"
+ },
+ "nl-BE": {
+ "code": "nl-BE",
+ "name": "flamenco"
+ },
+ "fr": {
+ "code": "fr",
+ "name": "francés"
+ },
+ "fr-CA": {
+ "code": "fr-CA",
+ "name": "francés canadiense"
+ },
+ "fr-CH": {
+ "code": "fr-CH",
+ "name": "francés suizo"
+ },
+ "fy": {
+ "code": "fy",
+ "name": "frisón occidental"
+ },
+ "fur": {
+ "code": "fur",
+ "name": "friulano"
+ },
+ "ff": {
+ "code": "ff",
+ "name": "fula"
+ },
+ "gd": {
+ "code": "gd",
+ "name": "gaélico escocés"
+ },
+ "cy": {
+ "code": "cy",
+ "name": "galés"
+ },
+ "gl": {
+ "code": "gl",
+ "name": "gallego"
+ },
+ "lg": {
+ "code": "lg",
+ "name": "ganda"
+ },
+ "ka": {
+ "code": "ka",
+ "name": "georgiano"
+ },
+ "el": {
+ "code": "el",
+ "name": "griego"
+ },
+ "kl": {
+ "code": "kl",
+ "name": "groenlandés"
+ },
+ "gu": {
+ "code": "gu",
+ "name": "gujarati"
+ },
+ "guz": {
+ "code": "guz",
+ "name": "gusii"
+ },
+ "ha": {
+ "code": "ha",
+ "name": "hausa"
+ },
+ "he": {
+ "code": "he",
+ "name": "hebreo"
+ },
+ "hi": {
+ "code": "hi",
+ "name": "hindi"
+ },
+ "hu": {
+ "code": "hu",
+ "name": "húngaro"
+ },
+ "id": {
+ "code": "id",
+ "name": "indonesio"
+ },
+ "en": {
+ "code": "en",
+ "name": "inglés"
+ },
+ "en-AU": {
+ "code": "en-AU",
+ "name": "inglés australiano"
+ },
+ "en-GB": {
+ "code": "en-GB",
+ "name": "inglés británico"
+ },
+ "en-CA": {
+ "code": "en-CA",
+ "name": "inglés canadiense"
+ },
+ "en-US": {
+ "code": "en-US",
+ "name": "inglés estadounidense"
+ },
+ "ga": {
+ "code": "ga",
+ "name": "irlandés"
+ },
+ "is": {
+ "code": "is",
+ "name": "islandés"
+ },
+ "it": {
+ "code": "it",
+ "name": "italiano"
+ },
+ "ja": {
+ "code": "ja",
+ "name": "japonés"
+ },
+ "km": {
+ "code": "km",
+ "name": "jemer"
+ },
+ "dyo": {
+ "code": "dyo",
+ "name": "jola-fonyi"
+ },
+ "kln": {
+ "code": "kln",
+ "name": "kalenjin"
+ },
+ "kam": {
+ "code": "kam",
+ "name": "kamba"
+ },
+ "kk": {
+ "code": "kk",
+ "name": "kazajo"
+ },
+ "ki": {
+ "code": "ki",
+ "name": "kikuyu"
+ },
+ "ky": {
+ "code": "ky",
+ "name": "kirguís"
+ },
+ "rn": {
+ "code": "rn",
+ "name": "kiroundi"
+ },
+ "vun": {
+ "code": "vun",
+ "name": "kivunjo"
+ },
+ "ksh": {
+ "code": "ksh",
+ "name": "kölsch"
+ },
+ "khq": {
+ "code": "khq",
+ "name": "koyra chiini"
+ },
+ "ses": {
+ "code": "ses",
+ "name": "koyraboro senni"
+ },
+ "nmg": {
+ "code": "nmg",
+ "name": "kwasio"
+ },
+ "lag": {
+ "code": "lag",
+ "name": "langi"
+ },
+ "lo": {
+ "code": "lo",
+ "name": "laosiano"
+ },
+ "lv": {
+ "code": "lv",
+ "name": "letón"
+ },
+ "ln": {
+ "code": "ln",
+ "name": "lingala"
+ },
+ "lt": {
+ "code": "lt",
+ "name": "lituano"
+ },
+ "lu": {
+ "code": "lu",
+ "name": "luba-katanga"
+ },
+ "luo": {
+ "code": "luo",
+ "name": "Luo"
+ },
+ "lb": {
+ "code": "lb",
+ "name": "luxemburgués"
+ },
+ "luy": {
+ "code": "luy",
+ "name": "luyia"
+ },
+ "mk": {
+ "code": "mk",
+ "name": "macedonio"
+ },
+ "jmc": {
+ "code": "jmc",
+ "name": "machame"
+ },
+ "mgh": {
+ "code": "mgh",
+ "name": "makhuwa-meetto"
+ },
+ "kde": {
+ "code": "kde",
+ "name": "makonde"
+ },
+ "ml": {
+ "code": "ml",
+ "name": "malayalam"
+ },
+ "ms": {
+ "code": "ms",
+ "name": "malayo"
+ },
+ "mg": {
+ "code": "mg",
+ "name": "malgache"
+ },
+ "mt": {
+ "code": "mt",
+ "name": "maltés"
+ },
+ "mr": {
+ "code": "mr",
+ "name": "maratí"
+ },
+ "mas": {
+ "code": "mas",
+ "name": "masái"
+ },
+ "mer": {
+ "code": "mer",
+ "name": "meru"
+ },
+ "ro-MD": {
+ "code": "ro-MD",
+ "name": "moldavo"
+ },
+ "mn": {
+ "code": "mn",
+ "name": "mongol"
+ },
+ "mua": {
+ "code": "mua",
+ "name": "mundang"
+ },
+ "naq": {
+ "code": "naq",
+ "name": "nama"
+ },
+ "nd": {
+ "code": "nd",
+ "name": "ndebele septentrional"
+ },
+ "nl": {
+ "code": "nl",
+ "name": "neerlandés"
+ },
+ "ne": {
+ "code": "ne",
+ "name": "nepalí"
+ },
+ "jgo": {
+ "code": "jgo",
+ "name": "ngomba"
+ },
+ "nus": {
+ "code": "nus",
+ "name": "nuer"
+ },
+ "nyn": {
+ "code": "nyn",
+ "name": "nyankole"
+ },
+ "nn": {
+ "code": "nn",
+ "name": "nynorsk noruego"
+ },
+ "or": {
+ "code": "or",
+ "name": "oriya"
+ },
+ "ps": {
+ "code": "ps",
+ "name": "pastún"
+ },
+ "fa": {
+ "code": "fa",
+ "name": "persa"
+ },
+ "pl": {
+ "code": "pl",
+ "name": "polaco"
+ },
+ "pt": {
+ "code": "pt",
+ "name": "portugués"
+ },
+ "pt-BR": {
+ "code": "pt-BR",
+ "name": "portugués de Brasil"
+ },
+ "pt-PT": {
+ "code": "pt-PT",
+ "name": "portugués de Portugal"
+ },
+ "pa": {
+ "code": "pa",
+ "name": "punjabí"
+ },
+ "rm": {
+ "code": "rm",
+ "name": "retorrománico"
+ },
+ "rof": {
+ "code": "rof",
+ "name": "rombo"
+ },
+ "ro": {
+ "code": "ro",
+ "name": "rumano"
+ },
+ "ru": {
+ "code": "ru",
+ "name": "ruso"
+ },
+ "rwk": {
+ "code": "rwk",
+ "name": "rwa"
+ },
+ "saq": {
+ "code": "saq",
+ "name": "samburu"
+ },
+ "se": {
+ "code": "se",
+ "name": "sami septentrional"
+ },
+ "sg": {
+ "code": "sg",
+ "name": "sango"
+ },
+ "sbp": {
+ "code": "sbp",
+ "name": "sangu"
+ },
+ "seh": {
+ "code": "seh",
+ "name": "sena"
+ },
+ "sr": {
+ "code": "sr",
+ "name": "serbio"
+ },
+ "ksb": {
+ "code": "ksb",
+ "name": "shambala"
+ },
+ "sn": {
+ "code": "sn",
+ "name": "shona"
+ },
+ "xog": {
+ "code": "xog",
+ "name": "soga"
+ },
+ "so": {
+ "code": "so",
+ "name": "somalí"
+ },
+ "dsb": {
+ "code": "dsb",
+ "name": "sorbio inferior"
+ },
+ "hsb": {
+ "code": "hsb",
+ "name": "sorbio superior"
+ },
+ "sv": {
+ "code": "sv",
+ "name": "sueco"
+ },
+ "sw": {
+ "code": "sw",
+ "name": "swahili"
+ },
+ "swc": {
+ "code": "swc",
+ "name": "swahili del Congo"
+ },
+ "th": {
+ "code": "th",
+ "name": "tailandés"
+ },
+ "dav": {
+ "code": "dav",
+ "name": "taita"
+ },
+ "zgh": {
+ "code": "zgh",
+ "name": "tamazight"
+ },
+ "tzm": {
+ "code": "tzm",
+ "name": "tamazight del Marruecos Central"
+ },
+ "ta": {
+ "code": "ta",
+ "name": "tamil"
+ },
+ "twq": {
+ "code": "twq",
+ "name": "tasawaq"
+ },
+ "shi": {
+ "code": "shi",
+ "name": "tashelhit"
+ },
+ "te": {
+ "code": "te",
+ "name": "telugu"
+ },
+ "teo": {
+ "code": "teo",
+ "name": "teso"
+ },
+ "bo": {
+ "code": "bo",
+ "name": "tibetano"
+ },
+ "ti": {
+ "code": "ti",
+ "name": "tigriña"
+ },
+ "to": {
+ "code": "to",
+ "name": "tongano"
+ },
+ "tr": {
+ "code": "tr",
+ "name": "turco"
+ },
+ "uk": {
+ "code": "uk",
+ "name": "ucraniano"
+ },
+ "ug": {
+ "code": "ug",
+ "name": "uigur"
+ },
+ "ur": {
+ "code": "ur",
+ "name": "urdu"
+ },
+ "uz": {
+ "code": "uz",
+ "name": "uzbeko"
+ },
+ "vai": {
+ "code": "vai",
+ "name": "Vai"
+ },
+ "eu": {
+ "code": "eu",
+ "name": "vasco"
+ },
+ "vi": {
+ "code": "vi",
+ "name": "vietnamita"
+ },
+ "wae": {
+ "code": "wae",
+ "name": "walser"
+ },
+ "yav": {
+ "code": "yav",
+ "name": "yangben"
+ },
+ "yo": {
+ "code": "yo",
+ "name": "yoruba"
+ },
+ "dje": {
+ "code": "dje",
+ "name": "zarma"
+ },
+ "zu": {
+ "code": "zu",
+ "name": "zulú"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/language/es-CO.json b/library/intl/resources/language/es-CO.json
new file mode 100644
index 000000000..afeb6b6b4
--- /dev/null
+++ b/library/intl/resources/language/es-CO.json
@@ -0,0 +1,738 @@
+{
+ "af": {
+ "code": "af",
+ "name": "afrikáans"
+ },
+ "agq": {
+ "code": "agq",
+ "name": "aghem"
+ },
+ "ak": {
+ "code": "ak",
+ "name": "akan"
+ },
+ "sq": {
+ "code": "sq",
+ "name": "albanés"
+ },
+ "de": {
+ "code": "de",
+ "name": "alemán"
+ },
+ "gsw": {
+ "code": "gsw",
+ "name": "alemán (Suiza)"
+ },
+ "de-AT": {
+ "code": "de-AT",
+ "name": "alemán austríaco"
+ },
+ "de-CH": {
+ "code": "de-CH",
+ "name": "alto alemán de Suiza"
+ },
+ "am": {
+ "code": "am",
+ "name": "amárico"
+ },
+ "ar": {
+ "code": "ar",
+ "name": "árabe"
+ },
+ "ar-001": {
+ "code": "ar-001",
+ "name": "árabe estándar moderno"
+ },
+ "hy": {
+ "code": "hy",
+ "name": "armenio"
+ },
+ "ast": {
+ "code": "ast",
+ "name": "asturiano"
+ },
+ "asa": {
+ "code": "asa",
+ "name": "asu"
+ },
+ "az": {
+ "code": "az",
+ "name": "azerbaiyano"
+ },
+ "ksf": {
+ "code": "ksf",
+ "name": "bafia"
+ },
+ "bm": {
+ "code": "bm",
+ "name": "bambara"
+ },
+ "bas": {
+ "code": "bas",
+ "name": "basa"
+ },
+ "bez": {
+ "code": "bez",
+ "name": "bena"
+ },
+ "bn": {
+ "code": "bn",
+ "name": "bengalí"
+ },
+ "be": {
+ "code": "be",
+ "name": "bielorruso"
+ },
+ "my": {
+ "code": "my",
+ "name": "birmano"
+ },
+ "brx": {
+ "code": "brx",
+ "name": "bodo"
+ },
+ "nb": {
+ "code": "nb",
+ "name": "bokmal noruego"
+ },
+ "bs": {
+ "code": "bs",
+ "name": "bosnio"
+ },
+ "br": {
+ "code": "br",
+ "name": "bretón"
+ },
+ "bg": {
+ "code": "bg",
+ "name": "búlgaro"
+ },
+ "kab": {
+ "code": "kab",
+ "name": "cabila"
+ },
+ "ks": {
+ "code": "ks",
+ "name": "cachemiro"
+ },
+ "kn": {
+ "code": "kn",
+ "name": "canarés"
+ },
+ "ca": {
+ "code": "ca",
+ "name": "catalán"
+ },
+ "cs": {
+ "code": "cs",
+ "name": "checo"
+ },
+ "chr": {
+ "code": "chr",
+ "name": "cheroqui"
+ },
+ "cgg": {
+ "code": "cgg",
+ "name": "chiga"
+ },
+ "zh": {
+ "code": "zh",
+ "name": "chino"
+ },
+ "zh-Hans": {
+ "code": "zh-Hans",
+ "name": "chino simplificado"
+ },
+ "zh-Hant": {
+ "code": "zh-Hant",
+ "name": "chino tradicional"
+ },
+ "si": {
+ "code": "si",
+ "name": "cingalés"
+ },
+ "ko": {
+ "code": "ko",
+ "name": "coreano"
+ },
+ "kea": {
+ "code": "kea",
+ "name": "criollo caboverdiano"
+ },
+ "mfe": {
+ "code": "mfe",
+ "name": "criollo mauriciano"
+ },
+ "hr": {
+ "code": "hr",
+ "name": "croata"
+ },
+ "da": {
+ "code": "da",
+ "name": "danés"
+ },
+ "dz": {
+ "code": "dz",
+ "name": "dzongkha"
+ },
+ "ebu": {
+ "code": "ebu",
+ "name": "embu"
+ },
+ "sk": {
+ "code": "sk",
+ "name": "eslovaco"
+ },
+ "sl": {
+ "code": "sl",
+ "name": "esloveno"
+ },
+ "es": {
+ "code": "es",
+ "name": "español"
+ },
+ "es-ES": {
+ "code": "es-ES",
+ "name": "español de España"
+ },
+ "es-MX": {
+ "code": "es-MX",
+ "name": "español de México"
+ },
+ "eo": {
+ "code": "eo",
+ "name": "esperanto"
+ },
+ "et": {
+ "code": "et",
+ "name": "estonio"
+ },
+ "ee": {
+ "code": "ee",
+ "name": "ewé"
+ },
+ "ewo": {
+ "code": "ewo",
+ "name": "ewondo"
+ },
+ "fo": {
+ "code": "fo",
+ "name": "feroés"
+ },
+ "fil": {
+ "code": "fil",
+ "name": "filipino"
+ },
+ "fi": {
+ "code": "fi",
+ "name": "finés"
+ },
+ "nl-BE": {
+ "code": "nl-BE",
+ "name": "flamenco"
+ },
+ "fr": {
+ "code": "fr",
+ "name": "francés"
+ },
+ "fr-CA": {
+ "code": "fr-CA",
+ "name": "francés canadiense"
+ },
+ "fr-CH": {
+ "code": "fr-CH",
+ "name": "francés suizo"
+ },
+ "fy": {
+ "code": "fy",
+ "name": "frisón occidental"
+ },
+ "fur": {
+ "code": "fur",
+ "name": "friulano"
+ },
+ "ff": {
+ "code": "ff",
+ "name": "fula"
+ },
+ "gd": {
+ "code": "gd",
+ "name": "gaélico escocés"
+ },
+ "cy": {
+ "code": "cy",
+ "name": "galés"
+ },
+ "gl": {
+ "code": "gl",
+ "name": "gallego"
+ },
+ "lg": {
+ "code": "lg",
+ "name": "ganda"
+ },
+ "ka": {
+ "code": "ka",
+ "name": "georgiano"
+ },
+ "el": {
+ "code": "el",
+ "name": "griego"
+ },
+ "kl": {
+ "code": "kl",
+ "name": "groenlandés"
+ },
+ "gu": {
+ "code": "gu",
+ "name": "gujarati"
+ },
+ "guz": {
+ "code": "guz",
+ "name": "gusii"
+ },
+ "ha": {
+ "code": "ha",
+ "name": "hausa"
+ },
+ "he": {
+ "code": "he",
+ "name": "hebreo"
+ },
+ "hi": {
+ "code": "hi",
+ "name": "hindi"
+ },
+ "hu": {
+ "code": "hu",
+ "name": "húngaro"
+ },
+ "id": {
+ "code": "id",
+ "name": "indonesio"
+ },
+ "en": {
+ "code": "en",
+ "name": "inglés"
+ },
+ "en-AU": {
+ "code": "en-AU",
+ "name": "inglés australiano"
+ },
+ "en-GB": {
+ "code": "en-GB",
+ "name": "inglés británico"
+ },
+ "en-CA": {
+ "code": "en-CA",
+ "name": "inglés canadiense"
+ },
+ "en-US": {
+ "code": "en-US",
+ "name": "inglés estadounidense"
+ },
+ "ga": {
+ "code": "ga",
+ "name": "irlandés"
+ },
+ "is": {
+ "code": "is",
+ "name": "islandés"
+ },
+ "it": {
+ "code": "it",
+ "name": "italiano"
+ },
+ "ja": {
+ "code": "ja",
+ "name": "japonés"
+ },
+ "km": {
+ "code": "km",
+ "name": "jemer"
+ },
+ "dyo": {
+ "code": "dyo",
+ "name": "jola-fonyi"
+ },
+ "kln": {
+ "code": "kln",
+ "name": "kalenjin"
+ },
+ "kam": {
+ "code": "kam",
+ "name": "kamba"
+ },
+ "kk": {
+ "code": "kk",
+ "name": "kazajo"
+ },
+ "ki": {
+ "code": "ki",
+ "name": "kikuyu"
+ },
+ "ky": {
+ "code": "ky",
+ "name": "kirguís"
+ },
+ "rn": {
+ "code": "rn",
+ "name": "kiroundi"
+ },
+ "vun": {
+ "code": "vun",
+ "name": "kivunjo"
+ },
+ "ksh": {
+ "code": "ksh",
+ "name": "kölsch"
+ },
+ "khq": {
+ "code": "khq",
+ "name": "koyra chiini"
+ },
+ "ses": {
+ "code": "ses",
+ "name": "koyraboro senni"
+ },
+ "nmg": {
+ "code": "nmg",
+ "name": "kwasio"
+ },
+ "lag": {
+ "code": "lag",
+ "name": "langi"
+ },
+ "lo": {
+ "code": "lo",
+ "name": "laosiano"
+ },
+ "lv": {
+ "code": "lv",
+ "name": "letón"
+ },
+ "ln": {
+ "code": "ln",
+ "name": "lingala"
+ },
+ "lt": {
+ "code": "lt",
+ "name": "lituano"
+ },
+ "lu": {
+ "code": "lu",
+ "name": "luba-katanga"
+ },
+ "luo": {
+ "code": "luo",
+ "name": "Luo"
+ },
+ "lb": {
+ "code": "lb",
+ "name": "luxemburgués"
+ },
+ "luy": {
+ "code": "luy",
+ "name": "luyia"
+ },
+ "mk": {
+ "code": "mk",
+ "name": "macedonio"
+ },
+ "jmc": {
+ "code": "jmc",
+ "name": "machame"
+ },
+ "mgh": {
+ "code": "mgh",
+ "name": "makhuwa-meetto"
+ },
+ "kde": {
+ "code": "kde",
+ "name": "makonde"
+ },
+ "ml": {
+ "code": "ml",
+ "name": "malayalam"
+ },
+ "ms": {
+ "code": "ms",
+ "name": "malayo"
+ },
+ "mg": {
+ "code": "mg",
+ "name": "malgache"
+ },
+ "mt": {
+ "code": "mt",
+ "name": "maltés"
+ },
+ "mr": {
+ "code": "mr",
+ "name": "maratí"
+ },
+ "mas": {
+ "code": "mas",
+ "name": "masái"
+ },
+ "mer": {
+ "code": "mer",
+ "name": "meru"
+ },
+ "ro-MD": {
+ "code": "ro-MD",
+ "name": "moldavo"
+ },
+ "mn": {
+ "code": "mn",
+ "name": "mongol"
+ },
+ "mua": {
+ "code": "mua",
+ "name": "mundang"
+ },
+ "naq": {
+ "code": "naq",
+ "name": "nama"
+ },
+ "nd": {
+ "code": "nd",
+ "name": "ndebele septentrional"
+ },
+ "nl": {
+ "code": "nl",
+ "name": "neerlandés"
+ },
+ "ne": {
+ "code": "ne",
+ "name": "nepalí"
+ },
+ "jgo": {
+ "code": "jgo",
+ "name": "ngomba"
+ },
+ "nus": {
+ "code": "nus",
+ "name": "nuer"
+ },
+ "nyn": {
+ "code": "nyn",
+ "name": "nyankole"
+ },
+ "nn": {
+ "code": "nn",
+ "name": "nynorsk noruego"
+ },
+ "or": {
+ "code": "or",
+ "name": "oriya"
+ },
+ "ps": {
+ "code": "ps",
+ "name": "pastún"
+ },
+ "fa": {
+ "code": "fa",
+ "name": "persa"
+ },
+ "pl": {
+ "code": "pl",
+ "name": "polaco"
+ },
+ "pt": {
+ "code": "pt",
+ "name": "portugués"
+ },
+ "pt-BR": {
+ "code": "pt-BR",
+ "name": "portugués de Brasil"
+ },
+ "pt-PT": {
+ "code": "pt-PT",
+ "name": "portugués de Portugal"
+ },
+ "pa": {
+ "code": "pa",
+ "name": "punjabí"
+ },
+ "rm": {
+ "code": "rm",
+ "name": "retorrománico"
+ },
+ "rof": {
+ "code": "rof",
+ "name": "rombo"
+ },
+ "ro": {
+ "code": "ro",
+ "name": "rumano"
+ },
+ "ru": {
+ "code": "ru",
+ "name": "ruso"
+ },
+ "rwk": {
+ "code": "rwk",
+ "name": "rwa"
+ },
+ "saq": {
+ "code": "saq",
+ "name": "samburu"
+ },
+ "se": {
+ "code": "se",
+ "name": "sami septentrional"
+ },
+ "sg": {
+ "code": "sg",
+ "name": "sango"
+ },
+ "sbp": {
+ "code": "sbp",
+ "name": "sangu"
+ },
+ "seh": {
+ "code": "seh",
+ "name": "sena"
+ },
+ "sr": {
+ "code": "sr",
+ "name": "serbio"
+ },
+ "ksb": {
+ "code": "ksb",
+ "name": "shambala"
+ },
+ "sn": {
+ "code": "sn",
+ "name": "shona"
+ },
+ "xog": {
+ "code": "xog",
+ "name": "soga"
+ },
+ "so": {
+ "code": "so",
+ "name": "somalí"
+ },
+ "dsb": {
+ "code": "dsb",
+ "name": "sorbio inferior"
+ },
+ "hsb": {
+ "code": "hsb",
+ "name": "sorbio superior"
+ },
+ "sv": {
+ "code": "sv",
+ "name": "sueco"
+ },
+ "sw": {
+ "code": "sw",
+ "name": "swahili"
+ },
+ "swc": {
+ "code": "swc",
+ "name": "swahili del Congo"
+ },
+ "th": {
+ "code": "th",
+ "name": "tailandés"
+ },
+ "dav": {
+ "code": "dav",
+ "name": "taita"
+ },
+ "zgh": {
+ "code": "zgh",
+ "name": "tamazight"
+ },
+ "tzm": {
+ "code": "tzm",
+ "name": "tamazight del Marruecos Central"
+ },
+ "ta": {
+ "code": "ta",
+ "name": "tamil"
+ },
+ "twq": {
+ "code": "twq",
+ "name": "tasawaq"
+ },
+ "shi": {
+ "code": "shi",
+ "name": "tashelhit"
+ },
+ "te": {
+ "code": "te",
+ "name": "telugu"
+ },
+ "teo": {
+ "code": "teo",
+ "name": "teso"
+ },
+ "bo": {
+ "code": "bo",
+ "name": "tibetano"
+ },
+ "ti": {
+ "code": "ti",
+ "name": "tigriña"
+ },
+ "to": {
+ "code": "to",
+ "name": "tongano"
+ },
+ "tr": {
+ "code": "tr",
+ "name": "turco"
+ },
+ "uk": {
+ "code": "uk",
+ "name": "ucraniano"
+ },
+ "ug": {
+ "code": "ug",
+ "name": "uigur"
+ },
+ "ur": {
+ "code": "ur",
+ "name": "urdu"
+ },
+ "uz": {
+ "code": "uz",
+ "name": "uzbeko"
+ },
+ "vai": {
+ "code": "vai",
+ "name": "Vai"
+ },
+ "eu": {
+ "code": "eu",
+ "name": "vasco"
+ },
+ "vi": {
+ "code": "vi",
+ "name": "vietnamita"
+ },
+ "wae": {
+ "code": "wae",
+ "name": "walser"
+ },
+ "yav": {
+ "code": "yav",
+ "name": "yangben"
+ },
+ "yo": {
+ "code": "yo",
+ "name": "yoruba"
+ },
+ "dje": {
+ "code": "dje",
+ "name": "zarma"
+ },
+ "zu": {
+ "code": "zu",
+ "name": "zulú"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/language/es-CR.json b/library/intl/resources/language/es-CR.json
new file mode 100644
index 000000000..afeb6b6b4
--- /dev/null
+++ b/library/intl/resources/language/es-CR.json
@@ -0,0 +1,738 @@
+{
+ "af": {
+ "code": "af",
+ "name": "afrikáans"
+ },
+ "agq": {
+ "code": "agq",
+ "name": "aghem"
+ },
+ "ak": {
+ "code": "ak",
+ "name": "akan"
+ },
+ "sq": {
+ "code": "sq",
+ "name": "albanés"
+ },
+ "de": {
+ "code": "de",
+ "name": "alemán"
+ },
+ "gsw": {
+ "code": "gsw",
+ "name": "alemán (Suiza)"
+ },
+ "de-AT": {
+ "code": "de-AT",
+ "name": "alemán austríaco"
+ },
+ "de-CH": {
+ "code": "de-CH",
+ "name": "alto alemán de Suiza"
+ },
+ "am": {
+ "code": "am",
+ "name": "amárico"
+ },
+ "ar": {
+ "code": "ar",
+ "name": "árabe"
+ },
+ "ar-001": {
+ "code": "ar-001",
+ "name": "árabe estándar moderno"
+ },
+ "hy": {
+ "code": "hy",
+ "name": "armenio"
+ },
+ "ast": {
+ "code": "ast",
+ "name": "asturiano"
+ },
+ "asa": {
+ "code": "asa",
+ "name": "asu"
+ },
+ "az": {
+ "code": "az",
+ "name": "azerbaiyano"
+ },
+ "ksf": {
+ "code": "ksf",
+ "name": "bafia"
+ },
+ "bm": {
+ "code": "bm",
+ "name": "bambara"
+ },
+ "bas": {
+ "code": "bas",
+ "name": "basa"
+ },
+ "bez": {
+ "code": "bez",
+ "name": "bena"
+ },
+ "bn": {
+ "code": "bn",
+ "name": "bengalí"
+ },
+ "be": {
+ "code": "be",
+ "name": "bielorruso"
+ },
+ "my": {
+ "code": "my",
+ "name": "birmano"
+ },
+ "brx": {
+ "code": "brx",
+ "name": "bodo"
+ },
+ "nb": {
+ "code": "nb",
+ "name": "bokmal noruego"
+ },
+ "bs": {
+ "code": "bs",
+ "name": "bosnio"
+ },
+ "br": {
+ "code": "br",
+ "name": "bretón"
+ },
+ "bg": {
+ "code": "bg",
+ "name": "búlgaro"
+ },
+ "kab": {
+ "code": "kab",
+ "name": "cabila"
+ },
+ "ks": {
+ "code": "ks",
+ "name": "cachemiro"
+ },
+ "kn": {
+ "code": "kn",
+ "name": "canarés"
+ },
+ "ca": {
+ "code": "ca",
+ "name": "catalán"
+ },
+ "cs": {
+ "code": "cs",
+ "name": "checo"
+ },
+ "chr": {
+ "code": "chr",
+ "name": "cheroqui"
+ },
+ "cgg": {
+ "code": "cgg",
+ "name": "chiga"
+ },
+ "zh": {
+ "code": "zh",
+ "name": "chino"
+ },
+ "zh-Hans": {
+ "code": "zh-Hans",
+ "name": "chino simplificado"
+ },
+ "zh-Hant": {
+ "code": "zh-Hant",
+ "name": "chino tradicional"
+ },
+ "si": {
+ "code": "si",
+ "name": "cingalés"
+ },
+ "ko": {
+ "code": "ko",
+ "name": "coreano"
+ },
+ "kea": {
+ "code": "kea",
+ "name": "criollo caboverdiano"
+ },
+ "mfe": {
+ "code": "mfe",
+ "name": "criollo mauriciano"
+ },
+ "hr": {
+ "code": "hr",
+ "name": "croata"
+ },
+ "da": {
+ "code": "da",
+ "name": "danés"
+ },
+ "dz": {
+ "code": "dz",
+ "name": "dzongkha"
+ },
+ "ebu": {
+ "code": "ebu",
+ "name": "embu"
+ },
+ "sk": {
+ "code": "sk",
+ "name": "eslovaco"
+ },
+ "sl": {
+ "code": "sl",
+ "name": "esloveno"
+ },
+ "es": {
+ "code": "es",
+ "name": "español"
+ },
+ "es-ES": {
+ "code": "es-ES",
+ "name": "español de España"
+ },
+ "es-MX": {
+ "code": "es-MX",
+ "name": "español de México"
+ },
+ "eo": {
+ "code": "eo",
+ "name": "esperanto"
+ },
+ "et": {
+ "code": "et",
+ "name": "estonio"
+ },
+ "ee": {
+ "code": "ee",
+ "name": "ewé"
+ },
+ "ewo": {
+ "code": "ewo",
+ "name": "ewondo"
+ },
+ "fo": {
+ "code": "fo",
+ "name": "feroés"
+ },
+ "fil": {
+ "code": "fil",
+ "name": "filipino"
+ },
+ "fi": {
+ "code": "fi",
+ "name": "finés"
+ },
+ "nl-BE": {
+ "code": "nl-BE",
+ "name": "flamenco"
+ },
+ "fr": {
+ "code": "fr",
+ "name": "francés"
+ },
+ "fr-CA": {
+ "code": "fr-CA",
+ "name": "francés canadiense"
+ },
+ "fr-CH": {
+ "code": "fr-CH",
+ "name": "francés suizo"
+ },
+ "fy": {
+ "code": "fy",
+ "name": "frisón occidental"
+ },
+ "fur": {
+ "code": "fur",
+ "name": "friulano"
+ },
+ "ff": {
+ "code": "ff",
+ "name": "fula"
+ },
+ "gd": {
+ "code": "gd",
+ "name": "gaélico escocés"
+ },
+ "cy": {
+ "code": "cy",
+ "name": "galés"
+ },
+ "gl": {
+ "code": "gl",
+ "name": "gallego"
+ },
+ "lg": {
+ "code": "lg",
+ "name": "ganda"
+ },
+ "ka": {
+ "code": "ka",
+ "name": "georgiano"
+ },
+ "el": {
+ "code": "el",
+ "name": "griego"
+ },
+ "kl": {
+ "code": "kl",
+ "name": "groenlandés"
+ },
+ "gu": {
+ "code": "gu",
+ "name": "gujarati"
+ },
+ "guz": {
+ "code": "guz",
+ "name": "gusii"
+ },
+ "ha": {
+ "code": "ha",
+ "name": "hausa"
+ },
+ "he": {
+ "code": "he",
+ "name": "hebreo"
+ },
+ "hi": {
+ "code": "hi",
+ "name": "hindi"
+ },
+ "hu": {
+ "code": "hu",
+ "name": "húngaro"
+ },
+ "id": {
+ "code": "id",
+ "name": "indonesio"
+ },
+ "en": {
+ "code": "en",
+ "name": "inglés"
+ },
+ "en-AU": {
+ "code": "en-AU",
+ "name": "inglés australiano"
+ },
+ "en-GB": {
+ "code": "en-GB",
+ "name": "inglés británico"
+ },
+ "en-CA": {
+ "code": "en-CA",
+ "name": "inglés canadiense"
+ },
+ "en-US": {
+ "code": "en-US",
+ "name": "inglés estadounidense"
+ },
+ "ga": {
+ "code": "ga",
+ "name": "irlandés"
+ },
+ "is": {
+ "code": "is",
+ "name": "islandés"
+ },
+ "it": {
+ "code": "it",
+ "name": "italiano"
+ },
+ "ja": {
+ "code": "ja",
+ "name": "japonés"
+ },
+ "km": {
+ "code": "km",
+ "name": "jemer"
+ },
+ "dyo": {
+ "code": "dyo",
+ "name": "jola-fonyi"
+ },
+ "kln": {
+ "code": "kln",
+ "name": "kalenjin"
+ },
+ "kam": {
+ "code": "kam",
+ "name": "kamba"
+ },
+ "kk": {
+ "code": "kk",
+ "name": "kazajo"
+ },
+ "ki": {
+ "code": "ki",
+ "name": "kikuyu"
+ },
+ "ky": {
+ "code": "ky",
+ "name": "kirguís"
+ },
+ "rn": {
+ "code": "rn",
+ "name": "kiroundi"
+ },
+ "vun": {
+ "code": "vun",
+ "name": "kivunjo"
+ },
+ "ksh": {
+ "code": "ksh",
+ "name": "kölsch"
+ },
+ "khq": {
+ "code": "khq",
+ "name": "koyra chiini"
+ },
+ "ses": {
+ "code": "ses",
+ "name": "koyraboro senni"
+ },
+ "nmg": {
+ "code": "nmg",
+ "name": "kwasio"
+ },
+ "lag": {
+ "code": "lag",
+ "name": "langi"
+ },
+ "lo": {
+ "code": "lo",
+ "name": "laosiano"
+ },
+ "lv": {
+ "code": "lv",
+ "name": "letón"
+ },
+ "ln": {
+ "code": "ln",
+ "name": "lingala"
+ },
+ "lt": {
+ "code": "lt",
+ "name": "lituano"
+ },
+ "lu": {
+ "code": "lu",
+ "name": "luba-katanga"
+ },
+ "luo": {
+ "code": "luo",
+ "name": "Luo"
+ },
+ "lb": {
+ "code": "lb",
+ "name": "luxemburgués"
+ },
+ "luy": {
+ "code": "luy",
+ "name": "luyia"
+ },
+ "mk": {
+ "code": "mk",
+ "name": "macedonio"
+ },
+ "jmc": {
+ "code": "jmc",
+ "name": "machame"
+ },
+ "mgh": {
+ "code": "mgh",
+ "name": "makhuwa-meetto"
+ },
+ "kde": {
+ "code": "kde",
+ "name": "makonde"
+ },
+ "ml": {
+ "code": "ml",
+ "name": "malayalam"
+ },
+ "ms": {
+ "code": "ms",
+ "name": "malayo"
+ },
+ "mg": {
+ "code": "mg",
+ "name": "malgache"
+ },
+ "mt": {
+ "code": "mt",
+ "name": "maltés"
+ },
+ "mr": {
+ "code": "mr",
+ "name": "maratí"
+ },
+ "mas": {
+ "code": "mas",
+ "name": "masái"
+ },
+ "mer": {
+ "code": "mer",
+ "name": "meru"
+ },
+ "ro-MD": {
+ "code": "ro-MD",
+ "name": "moldavo"
+ },
+ "mn": {
+ "code": "mn",
+ "name": "mongol"
+ },
+ "mua": {
+ "code": "mua",
+ "name": "mundang"
+ },
+ "naq": {
+ "code": "naq",
+ "name": "nama"
+ },
+ "nd": {
+ "code": "nd",
+ "name": "ndebele septentrional"
+ },
+ "nl": {
+ "code": "nl",
+ "name": "neerlandés"
+ },
+ "ne": {
+ "code": "ne",
+ "name": "nepalí"
+ },
+ "jgo": {
+ "code": "jgo",
+ "name": "ngomba"
+ },
+ "nus": {
+ "code": "nus",
+ "name": "nuer"
+ },
+ "nyn": {
+ "code": "nyn",
+ "name": "nyankole"
+ },
+ "nn": {
+ "code": "nn",
+ "name": "nynorsk noruego"
+ },
+ "or": {
+ "code": "or",
+ "name": "oriya"
+ },
+ "ps": {
+ "code": "ps",
+ "name": "pastún"
+ },
+ "fa": {
+ "code": "fa",
+ "name": "persa"
+ },
+ "pl": {
+ "code": "pl",
+ "name": "polaco"
+ },
+ "pt": {
+ "code": "pt",
+ "name": "portugués"
+ },
+ "pt-BR": {
+ "code": "pt-BR",
+ "name": "portugués de Brasil"
+ },
+ "pt-PT": {
+ "code": "pt-PT",
+ "name": "portugués de Portugal"
+ },
+ "pa": {
+ "code": "pa",
+ "name": "punjabí"
+ },
+ "rm": {
+ "code": "rm",
+ "name": "retorrománico"
+ },
+ "rof": {
+ "code": "rof",
+ "name": "rombo"
+ },
+ "ro": {
+ "code": "ro",
+ "name": "rumano"
+ },
+ "ru": {
+ "code": "ru",
+ "name": "ruso"
+ },
+ "rwk": {
+ "code": "rwk",
+ "name": "rwa"
+ },
+ "saq": {
+ "code": "saq",
+ "name": "samburu"
+ },
+ "se": {
+ "code": "se",
+ "name": "sami septentrional"
+ },
+ "sg": {
+ "code": "sg",
+ "name": "sango"
+ },
+ "sbp": {
+ "code": "sbp",
+ "name": "sangu"
+ },
+ "seh": {
+ "code": "seh",
+ "name": "sena"
+ },
+ "sr": {
+ "code": "sr",
+ "name": "serbio"
+ },
+ "ksb": {
+ "code": "ksb",
+ "name": "shambala"
+ },
+ "sn": {
+ "code": "sn",
+ "name": "shona"
+ },
+ "xog": {
+ "code": "xog",
+ "name": "soga"
+ },
+ "so": {
+ "code": "so",
+ "name": "somalí"
+ },
+ "dsb": {
+ "code": "dsb",
+ "name": "sorbio inferior"
+ },
+ "hsb": {
+ "code": "hsb",
+ "name": "sorbio superior"
+ },
+ "sv": {
+ "code": "sv",
+ "name": "sueco"
+ },
+ "sw": {
+ "code": "sw",
+ "name": "swahili"
+ },
+ "swc": {
+ "code": "swc",
+ "name": "swahili del Congo"
+ },
+ "th": {
+ "code": "th",
+ "name": "tailandés"
+ },
+ "dav": {
+ "code": "dav",
+ "name": "taita"
+ },
+ "zgh": {
+ "code": "zgh",
+ "name": "tamazight"
+ },
+ "tzm": {
+ "code": "tzm",
+ "name": "tamazight del Marruecos Central"
+ },
+ "ta": {
+ "code": "ta",
+ "name": "tamil"
+ },
+ "twq": {
+ "code": "twq",
+ "name": "tasawaq"
+ },
+ "shi": {
+ "code": "shi",
+ "name": "tashelhit"
+ },
+ "te": {
+ "code": "te",
+ "name": "telugu"
+ },
+ "teo": {
+ "code": "teo",
+ "name": "teso"
+ },
+ "bo": {
+ "code": "bo",
+ "name": "tibetano"
+ },
+ "ti": {
+ "code": "ti",
+ "name": "tigriña"
+ },
+ "to": {
+ "code": "to",
+ "name": "tongano"
+ },
+ "tr": {
+ "code": "tr",
+ "name": "turco"
+ },
+ "uk": {
+ "code": "uk",
+ "name": "ucraniano"
+ },
+ "ug": {
+ "code": "ug",
+ "name": "uigur"
+ },
+ "ur": {
+ "code": "ur",
+ "name": "urdu"
+ },
+ "uz": {
+ "code": "uz",
+ "name": "uzbeko"
+ },
+ "vai": {
+ "code": "vai",
+ "name": "Vai"
+ },
+ "eu": {
+ "code": "eu",
+ "name": "vasco"
+ },
+ "vi": {
+ "code": "vi",
+ "name": "vietnamita"
+ },
+ "wae": {
+ "code": "wae",
+ "name": "walser"
+ },
+ "yav": {
+ "code": "yav",
+ "name": "yangben"
+ },
+ "yo": {
+ "code": "yo",
+ "name": "yoruba"
+ },
+ "dje": {
+ "code": "dje",
+ "name": "zarma"
+ },
+ "zu": {
+ "code": "zu",
+ "name": "zulú"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/language/es-CU.json b/library/intl/resources/language/es-CU.json
new file mode 100644
index 000000000..afeb6b6b4
--- /dev/null
+++ b/library/intl/resources/language/es-CU.json
@@ -0,0 +1,738 @@
+{
+ "af": {
+ "code": "af",
+ "name": "afrikáans"
+ },
+ "agq": {
+ "code": "agq",
+ "name": "aghem"
+ },
+ "ak": {
+ "code": "ak",
+ "name": "akan"
+ },
+ "sq": {
+ "code": "sq",
+ "name": "albanés"
+ },
+ "de": {
+ "code": "de",
+ "name": "alemán"
+ },
+ "gsw": {
+ "code": "gsw",
+ "name": "alemán (Suiza)"
+ },
+ "de-AT": {
+ "code": "de-AT",
+ "name": "alemán austríaco"
+ },
+ "de-CH": {
+ "code": "de-CH",
+ "name": "alto alemán de Suiza"
+ },
+ "am": {
+ "code": "am",
+ "name": "amárico"
+ },
+ "ar": {
+ "code": "ar",
+ "name": "árabe"
+ },
+ "ar-001": {
+ "code": "ar-001",
+ "name": "árabe estándar moderno"
+ },
+ "hy": {
+ "code": "hy",
+ "name": "armenio"
+ },
+ "ast": {
+ "code": "ast",
+ "name": "asturiano"
+ },
+ "asa": {
+ "code": "asa",
+ "name": "asu"
+ },
+ "az": {
+ "code": "az",
+ "name": "azerbaiyano"
+ },
+ "ksf": {
+ "code": "ksf",
+ "name": "bafia"
+ },
+ "bm": {
+ "code": "bm",
+ "name": "bambara"
+ },
+ "bas": {
+ "code": "bas",
+ "name": "basa"
+ },
+ "bez": {
+ "code": "bez",
+ "name": "bena"
+ },
+ "bn": {
+ "code": "bn",
+ "name": "bengalí"
+ },
+ "be": {
+ "code": "be",
+ "name": "bielorruso"
+ },
+ "my": {
+ "code": "my",
+ "name": "birmano"
+ },
+ "brx": {
+ "code": "brx",
+ "name": "bodo"
+ },
+ "nb": {
+ "code": "nb",
+ "name": "bokmal noruego"
+ },
+ "bs": {
+ "code": "bs",
+ "name": "bosnio"
+ },
+ "br": {
+ "code": "br",
+ "name": "bretón"
+ },
+ "bg": {
+ "code": "bg",
+ "name": "búlgaro"
+ },
+ "kab": {
+ "code": "kab",
+ "name": "cabila"
+ },
+ "ks": {
+ "code": "ks",
+ "name": "cachemiro"
+ },
+ "kn": {
+ "code": "kn",
+ "name": "canarés"
+ },
+ "ca": {
+ "code": "ca",
+ "name": "catalán"
+ },
+ "cs": {
+ "code": "cs",
+ "name": "checo"
+ },
+ "chr": {
+ "code": "chr",
+ "name": "cheroqui"
+ },
+ "cgg": {
+ "code": "cgg",
+ "name": "chiga"
+ },
+ "zh": {
+ "code": "zh",
+ "name": "chino"
+ },
+ "zh-Hans": {
+ "code": "zh-Hans",
+ "name": "chino simplificado"
+ },
+ "zh-Hant": {
+ "code": "zh-Hant",
+ "name": "chino tradicional"
+ },
+ "si": {
+ "code": "si",
+ "name": "cingalés"
+ },
+ "ko": {
+ "code": "ko",
+ "name": "coreano"
+ },
+ "kea": {
+ "code": "kea",
+ "name": "criollo caboverdiano"
+ },
+ "mfe": {
+ "code": "mfe",
+ "name": "criollo mauriciano"
+ },
+ "hr": {
+ "code": "hr",
+ "name": "croata"
+ },
+ "da": {
+ "code": "da",
+ "name": "danés"
+ },
+ "dz": {
+ "code": "dz",
+ "name": "dzongkha"
+ },
+ "ebu": {
+ "code": "ebu",
+ "name": "embu"
+ },
+ "sk": {
+ "code": "sk",
+ "name": "eslovaco"
+ },
+ "sl": {
+ "code": "sl",
+ "name": "esloveno"
+ },
+ "es": {
+ "code": "es",
+ "name": "español"
+ },
+ "es-ES": {
+ "code": "es-ES",
+ "name": "español de España"
+ },
+ "es-MX": {
+ "code": "es-MX",
+ "name": "español de México"
+ },
+ "eo": {
+ "code": "eo",
+ "name": "esperanto"
+ },
+ "et": {
+ "code": "et",
+ "name": "estonio"
+ },
+ "ee": {
+ "code": "ee",
+ "name": "ewé"
+ },
+ "ewo": {
+ "code": "ewo",
+ "name": "ewondo"
+ },
+ "fo": {
+ "code": "fo",
+ "name": "feroés"
+ },
+ "fil": {
+ "code": "fil",
+ "name": "filipino"
+ },
+ "fi": {
+ "code": "fi",
+ "name": "finés"
+ },
+ "nl-BE": {
+ "code": "nl-BE",
+ "name": "flamenco"
+ },
+ "fr": {
+ "code": "fr",
+ "name": "francés"
+ },
+ "fr-CA": {
+ "code": "fr-CA",
+ "name": "francés canadiense"
+ },
+ "fr-CH": {
+ "code": "fr-CH",
+ "name": "francés suizo"
+ },
+ "fy": {
+ "code": "fy",
+ "name": "frisón occidental"
+ },
+ "fur": {
+ "code": "fur",
+ "name": "friulano"
+ },
+ "ff": {
+ "code": "ff",
+ "name": "fula"
+ },
+ "gd": {
+ "code": "gd",
+ "name": "gaélico escocés"
+ },
+ "cy": {
+ "code": "cy",
+ "name": "galés"
+ },
+ "gl": {
+ "code": "gl",
+ "name": "gallego"
+ },
+ "lg": {
+ "code": "lg",
+ "name": "ganda"
+ },
+ "ka": {
+ "code": "ka",
+ "name": "georgiano"
+ },
+ "el": {
+ "code": "el",
+ "name": "griego"
+ },
+ "kl": {
+ "code": "kl",
+ "name": "groenlandés"
+ },
+ "gu": {
+ "code": "gu",
+ "name": "gujarati"
+ },
+ "guz": {
+ "code": "guz",
+ "name": "gusii"
+ },
+ "ha": {
+ "code": "ha",
+ "name": "hausa"
+ },
+ "he": {
+ "code": "he",
+ "name": "hebreo"
+ },
+ "hi": {
+ "code": "hi",
+ "name": "hindi"
+ },
+ "hu": {
+ "code": "hu",
+ "name": "húngaro"
+ },
+ "id": {
+ "code": "id",
+ "name": "indonesio"
+ },
+ "en": {
+ "code": "en",
+ "name": "inglés"
+ },
+ "en-AU": {
+ "code": "en-AU",
+ "name": "inglés australiano"
+ },
+ "en-GB": {
+ "code": "en-GB",
+ "name": "inglés británico"
+ },
+ "en-CA": {
+ "code": "en-CA",
+ "name": "inglés canadiense"
+ },
+ "en-US": {
+ "code": "en-US",
+ "name": "inglés estadounidense"
+ },
+ "ga": {
+ "code": "ga",
+ "name": "irlandés"
+ },
+ "is": {
+ "code": "is",
+ "name": "islandés"
+ },
+ "it": {
+ "code": "it",
+ "name": "italiano"
+ },
+ "ja": {
+ "code": "ja",
+ "name": "japonés"
+ },
+ "km": {
+ "code": "km",
+ "name": "jemer"
+ },
+ "dyo": {
+ "code": "dyo",
+ "name": "jola-fonyi"
+ },
+ "kln": {
+ "code": "kln",
+ "name": "kalenjin"
+ },
+ "kam": {
+ "code": "kam",
+ "name": "kamba"
+ },
+ "kk": {
+ "code": "kk",
+ "name": "kazajo"
+ },
+ "ki": {
+ "code": "ki",
+ "name": "kikuyu"
+ },
+ "ky": {
+ "code": "ky",
+ "name": "kirguís"
+ },
+ "rn": {
+ "code": "rn",
+ "name": "kiroundi"
+ },
+ "vun": {
+ "code": "vun",
+ "name": "kivunjo"
+ },
+ "ksh": {
+ "code": "ksh",
+ "name": "kölsch"
+ },
+ "khq": {
+ "code": "khq",
+ "name": "koyra chiini"
+ },
+ "ses": {
+ "code": "ses",
+ "name": "koyraboro senni"
+ },
+ "nmg": {
+ "code": "nmg",
+ "name": "kwasio"
+ },
+ "lag": {
+ "code": "lag",
+ "name": "langi"
+ },
+ "lo": {
+ "code": "lo",
+ "name": "laosiano"
+ },
+ "lv": {
+ "code": "lv",
+ "name": "letón"
+ },
+ "ln": {
+ "code": "ln",
+ "name": "lingala"
+ },
+ "lt": {
+ "code": "lt",
+ "name": "lituano"
+ },
+ "lu": {
+ "code": "lu",
+ "name": "luba-katanga"
+ },
+ "luo": {
+ "code": "luo",
+ "name": "Luo"
+ },
+ "lb": {
+ "code": "lb",
+ "name": "luxemburgués"
+ },
+ "luy": {
+ "code": "luy",
+ "name": "luyia"
+ },
+ "mk": {
+ "code": "mk",
+ "name": "macedonio"
+ },
+ "jmc": {
+ "code": "jmc",
+ "name": "machame"
+ },
+ "mgh": {
+ "code": "mgh",
+ "name": "makhuwa-meetto"
+ },
+ "kde": {
+ "code": "kde",
+ "name": "makonde"
+ },
+ "ml": {
+ "code": "ml",
+ "name": "malayalam"
+ },
+ "ms": {
+ "code": "ms",
+ "name": "malayo"
+ },
+ "mg": {
+ "code": "mg",
+ "name": "malgache"
+ },
+ "mt": {
+ "code": "mt",
+ "name": "maltés"
+ },
+ "mr": {
+ "code": "mr",
+ "name": "maratí"
+ },
+ "mas": {
+ "code": "mas",
+ "name": "masái"
+ },
+ "mer": {
+ "code": "mer",
+ "name": "meru"
+ },
+ "ro-MD": {
+ "code": "ro-MD",
+ "name": "moldavo"
+ },
+ "mn": {
+ "code": "mn",
+ "name": "mongol"
+ },
+ "mua": {
+ "code": "mua",
+ "name": "mundang"
+ },
+ "naq": {
+ "code": "naq",
+ "name": "nama"
+ },
+ "nd": {
+ "code": "nd",
+ "name": "ndebele septentrional"
+ },
+ "nl": {
+ "code": "nl",
+ "name": "neerlandés"
+ },
+ "ne": {
+ "code": "ne",
+ "name": "nepalí"
+ },
+ "jgo": {
+ "code": "jgo",
+ "name": "ngomba"
+ },
+ "nus": {
+ "code": "nus",
+ "name": "nuer"
+ },
+ "nyn": {
+ "code": "nyn",
+ "name": "nyankole"
+ },
+ "nn": {
+ "code": "nn",
+ "name": "nynorsk noruego"
+ },
+ "or": {
+ "code": "or",
+ "name": "oriya"
+ },
+ "ps": {
+ "code": "ps",
+ "name": "pastún"
+ },
+ "fa": {
+ "code": "fa",
+ "name": "persa"
+ },
+ "pl": {
+ "code": "pl",
+ "name": "polaco"
+ },
+ "pt": {
+ "code": "pt",
+ "name": "portugués"
+ },
+ "pt-BR": {
+ "code": "pt-BR",
+ "name": "portugués de Brasil"
+ },
+ "pt-PT": {
+ "code": "pt-PT",
+ "name": "portugués de Portugal"
+ },
+ "pa": {
+ "code": "pa",
+ "name": "punjabí"
+ },
+ "rm": {
+ "code": "rm",
+ "name": "retorrománico"
+ },
+ "rof": {
+ "code": "rof",
+ "name": "rombo"
+ },
+ "ro": {
+ "code": "ro",
+ "name": "rumano"
+ },
+ "ru": {
+ "code": "ru",
+ "name": "ruso"
+ },
+ "rwk": {
+ "code": "rwk",
+ "name": "rwa"
+ },
+ "saq": {
+ "code": "saq",
+ "name": "samburu"
+ },
+ "se": {
+ "code": "se",
+ "name": "sami septentrional"
+ },
+ "sg": {
+ "code": "sg",
+ "name": "sango"
+ },
+ "sbp": {
+ "code": "sbp",
+ "name": "sangu"
+ },
+ "seh": {
+ "code": "seh",
+ "name": "sena"
+ },
+ "sr": {
+ "code": "sr",
+ "name": "serbio"
+ },
+ "ksb": {
+ "code": "ksb",
+ "name": "shambala"
+ },
+ "sn": {
+ "code": "sn",
+ "name": "shona"
+ },
+ "xog": {
+ "code": "xog",
+ "name": "soga"
+ },
+ "so": {
+ "code": "so",
+ "name": "somalí"
+ },
+ "dsb": {
+ "code": "dsb",
+ "name": "sorbio inferior"
+ },
+ "hsb": {
+ "code": "hsb",
+ "name": "sorbio superior"
+ },
+ "sv": {
+ "code": "sv",
+ "name": "sueco"
+ },
+ "sw": {
+ "code": "sw",
+ "name": "swahili"
+ },
+ "swc": {
+ "code": "swc",
+ "name": "swahili del Congo"
+ },
+ "th": {
+ "code": "th",
+ "name": "tailandés"
+ },
+ "dav": {
+ "code": "dav",
+ "name": "taita"
+ },
+ "zgh": {
+ "code": "zgh",
+ "name": "tamazight"
+ },
+ "tzm": {
+ "code": "tzm",
+ "name": "tamazight del Marruecos Central"
+ },
+ "ta": {
+ "code": "ta",
+ "name": "tamil"
+ },
+ "twq": {
+ "code": "twq",
+ "name": "tasawaq"
+ },
+ "shi": {
+ "code": "shi",
+ "name": "tashelhit"
+ },
+ "te": {
+ "code": "te",
+ "name": "telugu"
+ },
+ "teo": {
+ "code": "teo",
+ "name": "teso"
+ },
+ "bo": {
+ "code": "bo",
+ "name": "tibetano"
+ },
+ "ti": {
+ "code": "ti",
+ "name": "tigriña"
+ },
+ "to": {
+ "code": "to",
+ "name": "tongano"
+ },
+ "tr": {
+ "code": "tr",
+ "name": "turco"
+ },
+ "uk": {
+ "code": "uk",
+ "name": "ucraniano"
+ },
+ "ug": {
+ "code": "ug",
+ "name": "uigur"
+ },
+ "ur": {
+ "code": "ur",
+ "name": "urdu"
+ },
+ "uz": {
+ "code": "uz",
+ "name": "uzbeko"
+ },
+ "vai": {
+ "code": "vai",
+ "name": "Vai"
+ },
+ "eu": {
+ "code": "eu",
+ "name": "vasco"
+ },
+ "vi": {
+ "code": "vi",
+ "name": "vietnamita"
+ },
+ "wae": {
+ "code": "wae",
+ "name": "walser"
+ },
+ "yav": {
+ "code": "yav",
+ "name": "yangben"
+ },
+ "yo": {
+ "code": "yo",
+ "name": "yoruba"
+ },
+ "dje": {
+ "code": "dje",
+ "name": "zarma"
+ },
+ "zu": {
+ "code": "zu",
+ "name": "zulú"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/language/es-DO.json b/library/intl/resources/language/es-DO.json
new file mode 100644
index 000000000..afeb6b6b4
--- /dev/null
+++ b/library/intl/resources/language/es-DO.json
@@ -0,0 +1,738 @@
+{
+ "af": {
+ "code": "af",
+ "name": "afrikáans"
+ },
+ "agq": {
+ "code": "agq",
+ "name": "aghem"
+ },
+ "ak": {
+ "code": "ak",
+ "name": "akan"
+ },
+ "sq": {
+ "code": "sq",
+ "name": "albanés"
+ },
+ "de": {
+ "code": "de",
+ "name": "alemán"
+ },
+ "gsw": {
+ "code": "gsw",
+ "name": "alemán (Suiza)"
+ },
+ "de-AT": {
+ "code": "de-AT",
+ "name": "alemán austríaco"
+ },
+ "de-CH": {
+ "code": "de-CH",
+ "name": "alto alemán de Suiza"
+ },
+ "am": {
+ "code": "am",
+ "name": "amárico"
+ },
+ "ar": {
+ "code": "ar",
+ "name": "árabe"
+ },
+ "ar-001": {
+ "code": "ar-001",
+ "name": "árabe estándar moderno"
+ },
+ "hy": {
+ "code": "hy",
+ "name": "armenio"
+ },
+ "ast": {
+ "code": "ast",
+ "name": "asturiano"
+ },
+ "asa": {
+ "code": "asa",
+ "name": "asu"
+ },
+ "az": {
+ "code": "az",
+ "name": "azerbaiyano"
+ },
+ "ksf": {
+ "code": "ksf",
+ "name": "bafia"
+ },
+ "bm": {
+ "code": "bm",
+ "name": "bambara"
+ },
+ "bas": {
+ "code": "bas",
+ "name": "basa"
+ },
+ "bez": {
+ "code": "bez",
+ "name": "bena"
+ },
+ "bn": {
+ "code": "bn",
+ "name": "bengalí"
+ },
+ "be": {
+ "code": "be",
+ "name": "bielorruso"
+ },
+ "my": {
+ "code": "my",
+ "name": "birmano"
+ },
+ "brx": {
+ "code": "brx",
+ "name": "bodo"
+ },
+ "nb": {
+ "code": "nb",
+ "name": "bokmal noruego"
+ },
+ "bs": {
+ "code": "bs",
+ "name": "bosnio"
+ },
+ "br": {
+ "code": "br",
+ "name": "bretón"
+ },
+ "bg": {
+ "code": "bg",
+ "name": "búlgaro"
+ },
+ "kab": {
+ "code": "kab",
+ "name": "cabila"
+ },
+ "ks": {
+ "code": "ks",
+ "name": "cachemiro"
+ },
+ "kn": {
+ "code": "kn",
+ "name": "canarés"
+ },
+ "ca": {
+ "code": "ca",
+ "name": "catalán"
+ },
+ "cs": {
+ "code": "cs",
+ "name": "checo"
+ },
+ "chr": {
+ "code": "chr",
+ "name": "cheroqui"
+ },
+ "cgg": {
+ "code": "cgg",
+ "name": "chiga"
+ },
+ "zh": {
+ "code": "zh",
+ "name": "chino"
+ },
+ "zh-Hans": {
+ "code": "zh-Hans",
+ "name": "chino simplificado"
+ },
+ "zh-Hant": {
+ "code": "zh-Hant",
+ "name": "chino tradicional"
+ },
+ "si": {
+ "code": "si",
+ "name": "cingalés"
+ },
+ "ko": {
+ "code": "ko",
+ "name": "coreano"
+ },
+ "kea": {
+ "code": "kea",
+ "name": "criollo caboverdiano"
+ },
+ "mfe": {
+ "code": "mfe",
+ "name": "criollo mauriciano"
+ },
+ "hr": {
+ "code": "hr",
+ "name": "croata"
+ },
+ "da": {
+ "code": "da",
+ "name": "danés"
+ },
+ "dz": {
+ "code": "dz",
+ "name": "dzongkha"
+ },
+ "ebu": {
+ "code": "ebu",
+ "name": "embu"
+ },
+ "sk": {
+ "code": "sk",
+ "name": "eslovaco"
+ },
+ "sl": {
+ "code": "sl",
+ "name": "esloveno"
+ },
+ "es": {
+ "code": "es",
+ "name": "español"
+ },
+ "es-ES": {
+ "code": "es-ES",
+ "name": "español de España"
+ },
+ "es-MX": {
+ "code": "es-MX",
+ "name": "español de México"
+ },
+ "eo": {
+ "code": "eo",
+ "name": "esperanto"
+ },
+ "et": {
+ "code": "et",
+ "name": "estonio"
+ },
+ "ee": {
+ "code": "ee",
+ "name": "ewé"
+ },
+ "ewo": {
+ "code": "ewo",
+ "name": "ewondo"
+ },
+ "fo": {
+ "code": "fo",
+ "name": "feroés"
+ },
+ "fil": {
+ "code": "fil",
+ "name": "filipino"
+ },
+ "fi": {
+ "code": "fi",
+ "name": "finés"
+ },
+ "nl-BE": {
+ "code": "nl-BE",
+ "name": "flamenco"
+ },
+ "fr": {
+ "code": "fr",
+ "name": "francés"
+ },
+ "fr-CA": {
+ "code": "fr-CA",
+ "name": "francés canadiense"
+ },
+ "fr-CH": {
+ "code": "fr-CH",
+ "name": "francés suizo"
+ },
+ "fy": {
+ "code": "fy",
+ "name": "frisón occidental"
+ },
+ "fur": {
+ "code": "fur",
+ "name": "friulano"
+ },
+ "ff": {
+ "code": "ff",
+ "name": "fula"
+ },
+ "gd": {
+ "code": "gd",
+ "name": "gaélico escocés"
+ },
+ "cy": {
+ "code": "cy",
+ "name": "galés"
+ },
+ "gl": {
+ "code": "gl",
+ "name": "gallego"
+ },
+ "lg": {
+ "code": "lg",
+ "name": "ganda"
+ },
+ "ka": {
+ "code": "ka",
+ "name": "georgiano"
+ },
+ "el": {
+ "code": "el",
+ "name": "griego"
+ },
+ "kl": {
+ "code": "kl",
+ "name": "groenlandés"
+ },
+ "gu": {
+ "code": "gu",
+ "name": "gujarati"
+ },
+ "guz": {
+ "code": "guz",
+ "name": "gusii"
+ },
+ "ha": {
+ "code": "ha",
+ "name": "hausa"
+ },
+ "he": {
+ "code": "he",
+ "name": "hebreo"
+ },
+ "hi": {
+ "code": "hi",
+ "name": "hindi"
+ },
+ "hu": {
+ "code": "hu",
+ "name": "húngaro"
+ },
+ "id": {
+ "code": "id",
+ "name": "indonesio"
+ },
+ "en": {
+ "code": "en",
+ "name": "inglés"
+ },
+ "en-AU": {
+ "code": "en-AU",
+ "name": "inglés australiano"
+ },
+ "en-GB": {
+ "code": "en-GB",
+ "name": "inglés británico"
+ },
+ "en-CA": {
+ "code": "en-CA",
+ "name": "inglés canadiense"
+ },
+ "en-US": {
+ "code": "en-US",
+ "name": "inglés estadounidense"
+ },
+ "ga": {
+ "code": "ga",
+ "name": "irlandés"
+ },
+ "is": {
+ "code": "is",
+ "name": "islandés"
+ },
+ "it": {
+ "code": "it",
+ "name": "italiano"
+ },
+ "ja": {
+ "code": "ja",
+ "name": "japonés"
+ },
+ "km": {
+ "code": "km",
+ "name": "jemer"
+ },
+ "dyo": {
+ "code": "dyo",
+ "name": "jola-fonyi"
+ },
+ "kln": {
+ "code": "kln",
+ "name": "kalenjin"
+ },
+ "kam": {
+ "code": "kam",
+ "name": "kamba"
+ },
+ "kk": {
+ "code": "kk",
+ "name": "kazajo"
+ },
+ "ki": {
+ "code": "ki",
+ "name": "kikuyu"
+ },
+ "ky": {
+ "code": "ky",
+ "name": "kirguís"
+ },
+ "rn": {
+ "code": "rn",
+ "name": "kiroundi"
+ },
+ "vun": {
+ "code": "vun",
+ "name": "kivunjo"
+ },
+ "ksh": {
+ "code": "ksh",
+ "name": "kölsch"
+ },
+ "khq": {
+ "code": "khq",
+ "name": "koyra chiini"
+ },
+ "ses": {
+ "code": "ses",
+ "name": "koyraboro senni"
+ },
+ "nmg": {
+ "code": "nmg",
+ "name": "kwasio"
+ },
+ "lag": {
+ "code": "lag",
+ "name": "langi"
+ },
+ "lo": {
+ "code": "lo",
+ "name": "laosiano"
+ },
+ "lv": {
+ "code": "lv",
+ "name": "letón"
+ },
+ "ln": {
+ "code": "ln",
+ "name": "lingala"
+ },
+ "lt": {
+ "code": "lt",
+ "name": "lituano"
+ },
+ "lu": {
+ "code": "lu",
+ "name": "luba-katanga"
+ },
+ "luo": {
+ "code": "luo",
+ "name": "Luo"
+ },
+ "lb": {
+ "code": "lb",
+ "name": "luxemburgués"
+ },
+ "luy": {
+ "code": "luy",
+ "name": "luyia"
+ },
+ "mk": {
+ "code": "mk",
+ "name": "macedonio"
+ },
+ "jmc": {
+ "code": "jmc",
+ "name": "machame"
+ },
+ "mgh": {
+ "code": "mgh",
+ "name": "makhuwa-meetto"
+ },
+ "kde": {
+ "code": "kde",
+ "name": "makonde"
+ },
+ "ml": {
+ "code": "ml",
+ "name": "malayalam"
+ },
+ "ms": {
+ "code": "ms",
+ "name": "malayo"
+ },
+ "mg": {
+ "code": "mg",
+ "name": "malgache"
+ },
+ "mt": {
+ "code": "mt",
+ "name": "maltés"
+ },
+ "mr": {
+ "code": "mr",
+ "name": "maratí"
+ },
+ "mas": {
+ "code": "mas",
+ "name": "masái"
+ },
+ "mer": {
+ "code": "mer",
+ "name": "meru"
+ },
+ "ro-MD": {
+ "code": "ro-MD",
+ "name": "moldavo"
+ },
+ "mn": {
+ "code": "mn",
+ "name": "mongol"
+ },
+ "mua": {
+ "code": "mua",
+ "name": "mundang"
+ },
+ "naq": {
+ "code": "naq",
+ "name": "nama"
+ },
+ "nd": {
+ "code": "nd",
+ "name": "ndebele septentrional"
+ },
+ "nl": {
+ "code": "nl",
+ "name": "neerlandés"
+ },
+ "ne": {
+ "code": "ne",
+ "name": "nepalí"
+ },
+ "jgo": {
+ "code": "jgo",
+ "name": "ngomba"
+ },
+ "nus": {
+ "code": "nus",
+ "name": "nuer"
+ },
+ "nyn": {
+ "code": "nyn",
+ "name": "nyankole"
+ },
+ "nn": {
+ "code": "nn",
+ "name": "nynorsk noruego"
+ },
+ "or": {
+ "code": "or",
+ "name": "oriya"
+ },
+ "ps": {
+ "code": "ps",
+ "name": "pastún"
+ },
+ "fa": {
+ "code": "fa",
+ "name": "persa"
+ },
+ "pl": {
+ "code": "pl",
+ "name": "polaco"
+ },
+ "pt": {
+ "code": "pt",
+ "name": "portugués"
+ },
+ "pt-BR": {
+ "code": "pt-BR",
+ "name": "portugués de Brasil"
+ },
+ "pt-PT": {
+ "code": "pt-PT",
+ "name": "portugués de Portugal"
+ },
+ "pa": {
+ "code": "pa",
+ "name": "punjabí"
+ },
+ "rm": {
+ "code": "rm",
+ "name": "retorrománico"
+ },
+ "rof": {
+ "code": "rof",
+ "name": "rombo"
+ },
+ "ro": {
+ "code": "ro",
+ "name": "rumano"
+ },
+ "ru": {
+ "code": "ru",
+ "name": "ruso"
+ },
+ "rwk": {
+ "code": "rwk",
+ "name": "rwa"
+ },
+ "saq": {
+ "code": "saq",
+ "name": "samburu"
+ },
+ "se": {
+ "code": "se",
+ "name": "sami septentrional"
+ },
+ "sg": {
+ "code": "sg",
+ "name": "sango"
+ },
+ "sbp": {
+ "code": "sbp",
+ "name": "sangu"
+ },
+ "seh": {
+ "code": "seh",
+ "name": "sena"
+ },
+ "sr": {
+ "code": "sr",
+ "name": "serbio"
+ },
+ "ksb": {
+ "code": "ksb",
+ "name": "shambala"
+ },
+ "sn": {
+ "code": "sn",
+ "name": "shona"
+ },
+ "xog": {
+ "code": "xog",
+ "name": "soga"
+ },
+ "so": {
+ "code": "so",
+ "name": "somalí"
+ },
+ "dsb": {
+ "code": "dsb",
+ "name": "sorbio inferior"
+ },
+ "hsb": {
+ "code": "hsb",
+ "name": "sorbio superior"
+ },
+ "sv": {
+ "code": "sv",
+ "name": "sueco"
+ },
+ "sw": {
+ "code": "sw",
+ "name": "swahili"
+ },
+ "swc": {
+ "code": "swc",
+ "name": "swahili del Congo"
+ },
+ "th": {
+ "code": "th",
+ "name": "tailandés"
+ },
+ "dav": {
+ "code": "dav",
+ "name": "taita"
+ },
+ "zgh": {
+ "code": "zgh",
+ "name": "tamazight"
+ },
+ "tzm": {
+ "code": "tzm",
+ "name": "tamazight del Marruecos Central"
+ },
+ "ta": {
+ "code": "ta",
+ "name": "tamil"
+ },
+ "twq": {
+ "code": "twq",
+ "name": "tasawaq"
+ },
+ "shi": {
+ "code": "shi",
+ "name": "tashelhit"
+ },
+ "te": {
+ "code": "te",
+ "name": "telugu"
+ },
+ "teo": {
+ "code": "teo",
+ "name": "teso"
+ },
+ "bo": {
+ "code": "bo",
+ "name": "tibetano"
+ },
+ "ti": {
+ "code": "ti",
+ "name": "tigriña"
+ },
+ "to": {
+ "code": "to",
+ "name": "tongano"
+ },
+ "tr": {
+ "code": "tr",
+ "name": "turco"
+ },
+ "uk": {
+ "code": "uk",
+ "name": "ucraniano"
+ },
+ "ug": {
+ "code": "ug",
+ "name": "uigur"
+ },
+ "ur": {
+ "code": "ur",
+ "name": "urdu"
+ },
+ "uz": {
+ "code": "uz",
+ "name": "uzbeko"
+ },
+ "vai": {
+ "code": "vai",
+ "name": "Vai"
+ },
+ "eu": {
+ "code": "eu",
+ "name": "vasco"
+ },
+ "vi": {
+ "code": "vi",
+ "name": "vietnamita"
+ },
+ "wae": {
+ "code": "wae",
+ "name": "walser"
+ },
+ "yav": {
+ "code": "yav",
+ "name": "yangben"
+ },
+ "yo": {
+ "code": "yo",
+ "name": "yoruba"
+ },
+ "dje": {
+ "code": "dje",
+ "name": "zarma"
+ },
+ "zu": {
+ "code": "zu",
+ "name": "zulú"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/language/es-EC.json b/library/intl/resources/language/es-EC.json
new file mode 100644
index 000000000..afeb6b6b4
--- /dev/null
+++ b/library/intl/resources/language/es-EC.json
@@ -0,0 +1,738 @@
+{
+ "af": {
+ "code": "af",
+ "name": "afrikáans"
+ },
+ "agq": {
+ "code": "agq",
+ "name": "aghem"
+ },
+ "ak": {
+ "code": "ak",
+ "name": "akan"
+ },
+ "sq": {
+ "code": "sq",
+ "name": "albanés"
+ },
+ "de": {
+ "code": "de",
+ "name": "alemán"
+ },
+ "gsw": {
+ "code": "gsw",
+ "name": "alemán (Suiza)"
+ },
+ "de-AT": {
+ "code": "de-AT",
+ "name": "alemán austríaco"
+ },
+ "de-CH": {
+ "code": "de-CH",
+ "name": "alto alemán de Suiza"
+ },
+ "am": {
+ "code": "am",
+ "name": "amárico"
+ },
+ "ar": {
+ "code": "ar",
+ "name": "árabe"
+ },
+ "ar-001": {
+ "code": "ar-001",
+ "name": "árabe estándar moderno"
+ },
+ "hy": {
+ "code": "hy",
+ "name": "armenio"
+ },
+ "ast": {
+ "code": "ast",
+ "name": "asturiano"
+ },
+ "asa": {
+ "code": "asa",
+ "name": "asu"
+ },
+ "az": {
+ "code": "az",
+ "name": "azerbaiyano"
+ },
+ "ksf": {
+ "code": "ksf",
+ "name": "bafia"
+ },
+ "bm": {
+ "code": "bm",
+ "name": "bambara"
+ },
+ "bas": {
+ "code": "bas",
+ "name": "basa"
+ },
+ "bez": {
+ "code": "bez",
+ "name": "bena"
+ },
+ "bn": {
+ "code": "bn",
+ "name": "bengalí"
+ },
+ "be": {
+ "code": "be",
+ "name": "bielorruso"
+ },
+ "my": {
+ "code": "my",
+ "name": "birmano"
+ },
+ "brx": {
+ "code": "brx",
+ "name": "bodo"
+ },
+ "nb": {
+ "code": "nb",
+ "name": "bokmal noruego"
+ },
+ "bs": {
+ "code": "bs",
+ "name": "bosnio"
+ },
+ "br": {
+ "code": "br",
+ "name": "bretón"
+ },
+ "bg": {
+ "code": "bg",
+ "name": "búlgaro"
+ },
+ "kab": {
+ "code": "kab",
+ "name": "cabila"
+ },
+ "ks": {
+ "code": "ks",
+ "name": "cachemiro"
+ },
+ "kn": {
+ "code": "kn",
+ "name": "canarés"
+ },
+ "ca": {
+ "code": "ca",
+ "name": "catalán"
+ },
+ "cs": {
+ "code": "cs",
+ "name": "checo"
+ },
+ "chr": {
+ "code": "chr",
+ "name": "cheroqui"
+ },
+ "cgg": {
+ "code": "cgg",
+ "name": "chiga"
+ },
+ "zh": {
+ "code": "zh",
+ "name": "chino"
+ },
+ "zh-Hans": {
+ "code": "zh-Hans",
+ "name": "chino simplificado"
+ },
+ "zh-Hant": {
+ "code": "zh-Hant",
+ "name": "chino tradicional"
+ },
+ "si": {
+ "code": "si",
+ "name": "cingalés"
+ },
+ "ko": {
+ "code": "ko",
+ "name": "coreano"
+ },
+ "kea": {
+ "code": "kea",
+ "name": "criollo caboverdiano"
+ },
+ "mfe": {
+ "code": "mfe",
+ "name": "criollo mauriciano"
+ },
+ "hr": {
+ "code": "hr",
+ "name": "croata"
+ },
+ "da": {
+ "code": "da",
+ "name": "danés"
+ },
+ "dz": {
+ "code": "dz",
+ "name": "dzongkha"
+ },
+ "ebu": {
+ "code": "ebu",
+ "name": "embu"
+ },
+ "sk": {
+ "code": "sk",
+ "name": "eslovaco"
+ },
+ "sl": {
+ "code": "sl",
+ "name": "esloveno"
+ },
+ "es": {
+ "code": "es",
+ "name": "español"
+ },
+ "es-ES": {
+ "code": "es-ES",
+ "name": "español de España"
+ },
+ "es-MX": {
+ "code": "es-MX",
+ "name": "español de México"
+ },
+ "eo": {
+ "code": "eo",
+ "name": "esperanto"
+ },
+ "et": {
+ "code": "et",
+ "name": "estonio"
+ },
+ "ee": {
+ "code": "ee",
+ "name": "ewé"
+ },
+ "ewo": {
+ "code": "ewo",
+ "name": "ewondo"
+ },
+ "fo": {
+ "code": "fo",
+ "name": "feroés"
+ },
+ "fil": {
+ "code": "fil",
+ "name": "filipino"
+ },
+ "fi": {
+ "code": "fi",
+ "name": "finés"
+ },
+ "nl-BE": {
+ "code": "nl-BE",
+ "name": "flamenco"
+ },
+ "fr": {
+ "code": "fr",
+ "name": "francés"
+ },
+ "fr-CA": {
+ "code": "fr-CA",
+ "name": "francés canadiense"
+ },
+ "fr-CH": {
+ "code": "fr-CH",
+ "name": "francés suizo"
+ },
+ "fy": {
+ "code": "fy",
+ "name": "frisón occidental"
+ },
+ "fur": {
+ "code": "fur",
+ "name": "friulano"
+ },
+ "ff": {
+ "code": "ff",
+ "name": "fula"
+ },
+ "gd": {
+ "code": "gd",
+ "name": "gaélico escocés"
+ },
+ "cy": {
+ "code": "cy",
+ "name": "galés"
+ },
+ "gl": {
+ "code": "gl",
+ "name": "gallego"
+ },
+ "lg": {
+ "code": "lg",
+ "name": "ganda"
+ },
+ "ka": {
+ "code": "ka",
+ "name": "georgiano"
+ },
+ "el": {
+ "code": "el",
+ "name": "griego"
+ },
+ "kl": {
+ "code": "kl",
+ "name": "groenlandés"
+ },
+ "gu": {
+ "code": "gu",
+ "name": "gujarati"
+ },
+ "guz": {
+ "code": "guz",
+ "name": "gusii"
+ },
+ "ha": {
+ "code": "ha",
+ "name": "hausa"
+ },
+ "he": {
+ "code": "he",
+ "name": "hebreo"
+ },
+ "hi": {
+ "code": "hi",
+ "name": "hindi"
+ },
+ "hu": {
+ "code": "hu",
+ "name": "húngaro"
+ },
+ "id": {
+ "code": "id",
+ "name": "indonesio"
+ },
+ "en": {
+ "code": "en",
+ "name": "inglés"
+ },
+ "en-AU": {
+ "code": "en-AU",
+ "name": "inglés australiano"
+ },
+ "en-GB": {
+ "code": "en-GB",
+ "name": "inglés británico"
+ },
+ "en-CA": {
+ "code": "en-CA",
+ "name": "inglés canadiense"
+ },
+ "en-US": {
+ "code": "en-US",
+ "name": "inglés estadounidense"
+ },
+ "ga": {
+ "code": "ga",
+ "name": "irlandés"
+ },
+ "is": {
+ "code": "is",
+ "name": "islandés"
+ },
+ "it": {
+ "code": "it",
+ "name": "italiano"
+ },
+ "ja": {
+ "code": "ja",
+ "name": "japonés"
+ },
+ "km": {
+ "code": "km",
+ "name": "jemer"
+ },
+ "dyo": {
+ "code": "dyo",
+ "name": "jola-fonyi"
+ },
+ "kln": {
+ "code": "kln",
+ "name": "kalenjin"
+ },
+ "kam": {
+ "code": "kam",
+ "name": "kamba"
+ },
+ "kk": {
+ "code": "kk",
+ "name": "kazajo"
+ },
+ "ki": {
+ "code": "ki",
+ "name": "kikuyu"
+ },
+ "ky": {
+ "code": "ky",
+ "name": "kirguís"
+ },
+ "rn": {
+ "code": "rn",
+ "name": "kiroundi"
+ },
+ "vun": {
+ "code": "vun",
+ "name": "kivunjo"
+ },
+ "ksh": {
+ "code": "ksh",
+ "name": "kölsch"
+ },
+ "khq": {
+ "code": "khq",
+ "name": "koyra chiini"
+ },
+ "ses": {
+ "code": "ses",
+ "name": "koyraboro senni"
+ },
+ "nmg": {
+ "code": "nmg",
+ "name": "kwasio"
+ },
+ "lag": {
+ "code": "lag",
+ "name": "langi"
+ },
+ "lo": {
+ "code": "lo",
+ "name": "laosiano"
+ },
+ "lv": {
+ "code": "lv",
+ "name": "letón"
+ },
+ "ln": {
+ "code": "ln",
+ "name": "lingala"
+ },
+ "lt": {
+ "code": "lt",
+ "name": "lituano"
+ },
+ "lu": {
+ "code": "lu",
+ "name": "luba-katanga"
+ },
+ "luo": {
+ "code": "luo",
+ "name": "Luo"
+ },
+ "lb": {
+ "code": "lb",
+ "name": "luxemburgués"
+ },
+ "luy": {
+ "code": "luy",
+ "name": "luyia"
+ },
+ "mk": {
+ "code": "mk",
+ "name": "macedonio"
+ },
+ "jmc": {
+ "code": "jmc",
+ "name": "machame"
+ },
+ "mgh": {
+ "code": "mgh",
+ "name": "makhuwa-meetto"
+ },
+ "kde": {
+ "code": "kde",
+ "name": "makonde"
+ },
+ "ml": {
+ "code": "ml",
+ "name": "malayalam"
+ },
+ "ms": {
+ "code": "ms",
+ "name": "malayo"
+ },
+ "mg": {
+ "code": "mg",
+ "name": "malgache"
+ },
+ "mt": {
+ "code": "mt",
+ "name": "maltés"
+ },
+ "mr": {
+ "code": "mr",
+ "name": "maratí"
+ },
+ "mas": {
+ "code": "mas",
+ "name": "masái"
+ },
+ "mer": {
+ "code": "mer",
+ "name": "meru"
+ },
+ "ro-MD": {
+ "code": "ro-MD",
+ "name": "moldavo"
+ },
+ "mn": {
+ "code": "mn",
+ "name": "mongol"
+ },
+ "mua": {
+ "code": "mua",
+ "name": "mundang"
+ },
+ "naq": {
+ "code": "naq",
+ "name": "nama"
+ },
+ "nd": {
+ "code": "nd",
+ "name": "ndebele septentrional"
+ },
+ "nl": {
+ "code": "nl",
+ "name": "neerlandés"
+ },
+ "ne": {
+ "code": "ne",
+ "name": "nepalí"
+ },
+ "jgo": {
+ "code": "jgo",
+ "name": "ngomba"
+ },
+ "nus": {
+ "code": "nus",
+ "name": "nuer"
+ },
+ "nyn": {
+ "code": "nyn",
+ "name": "nyankole"
+ },
+ "nn": {
+ "code": "nn",
+ "name": "nynorsk noruego"
+ },
+ "or": {
+ "code": "or",
+ "name": "oriya"
+ },
+ "ps": {
+ "code": "ps",
+ "name": "pastún"
+ },
+ "fa": {
+ "code": "fa",
+ "name": "persa"
+ },
+ "pl": {
+ "code": "pl",
+ "name": "polaco"
+ },
+ "pt": {
+ "code": "pt",
+ "name": "portugués"
+ },
+ "pt-BR": {
+ "code": "pt-BR",
+ "name": "portugués de Brasil"
+ },
+ "pt-PT": {
+ "code": "pt-PT",
+ "name": "portugués de Portugal"
+ },
+ "pa": {
+ "code": "pa",
+ "name": "punjabí"
+ },
+ "rm": {
+ "code": "rm",
+ "name": "retorrománico"
+ },
+ "rof": {
+ "code": "rof",
+ "name": "rombo"
+ },
+ "ro": {
+ "code": "ro",
+ "name": "rumano"
+ },
+ "ru": {
+ "code": "ru",
+ "name": "ruso"
+ },
+ "rwk": {
+ "code": "rwk",
+ "name": "rwa"
+ },
+ "saq": {
+ "code": "saq",
+ "name": "samburu"
+ },
+ "se": {
+ "code": "se",
+ "name": "sami septentrional"
+ },
+ "sg": {
+ "code": "sg",
+ "name": "sango"
+ },
+ "sbp": {
+ "code": "sbp",
+ "name": "sangu"
+ },
+ "seh": {
+ "code": "seh",
+ "name": "sena"
+ },
+ "sr": {
+ "code": "sr",
+ "name": "serbio"
+ },
+ "ksb": {
+ "code": "ksb",
+ "name": "shambala"
+ },
+ "sn": {
+ "code": "sn",
+ "name": "shona"
+ },
+ "xog": {
+ "code": "xog",
+ "name": "soga"
+ },
+ "so": {
+ "code": "so",
+ "name": "somalí"
+ },
+ "dsb": {
+ "code": "dsb",
+ "name": "sorbio inferior"
+ },
+ "hsb": {
+ "code": "hsb",
+ "name": "sorbio superior"
+ },
+ "sv": {
+ "code": "sv",
+ "name": "sueco"
+ },
+ "sw": {
+ "code": "sw",
+ "name": "swahili"
+ },
+ "swc": {
+ "code": "swc",
+ "name": "swahili del Congo"
+ },
+ "th": {
+ "code": "th",
+ "name": "tailandés"
+ },
+ "dav": {
+ "code": "dav",
+ "name": "taita"
+ },
+ "zgh": {
+ "code": "zgh",
+ "name": "tamazight"
+ },
+ "tzm": {
+ "code": "tzm",
+ "name": "tamazight del Marruecos Central"
+ },
+ "ta": {
+ "code": "ta",
+ "name": "tamil"
+ },
+ "twq": {
+ "code": "twq",
+ "name": "tasawaq"
+ },
+ "shi": {
+ "code": "shi",
+ "name": "tashelhit"
+ },
+ "te": {
+ "code": "te",
+ "name": "telugu"
+ },
+ "teo": {
+ "code": "teo",
+ "name": "teso"
+ },
+ "bo": {
+ "code": "bo",
+ "name": "tibetano"
+ },
+ "ti": {
+ "code": "ti",
+ "name": "tigriña"
+ },
+ "to": {
+ "code": "to",
+ "name": "tongano"
+ },
+ "tr": {
+ "code": "tr",
+ "name": "turco"
+ },
+ "uk": {
+ "code": "uk",
+ "name": "ucraniano"
+ },
+ "ug": {
+ "code": "ug",
+ "name": "uigur"
+ },
+ "ur": {
+ "code": "ur",
+ "name": "urdu"
+ },
+ "uz": {
+ "code": "uz",
+ "name": "uzbeko"
+ },
+ "vai": {
+ "code": "vai",
+ "name": "Vai"
+ },
+ "eu": {
+ "code": "eu",
+ "name": "vasco"
+ },
+ "vi": {
+ "code": "vi",
+ "name": "vietnamita"
+ },
+ "wae": {
+ "code": "wae",
+ "name": "walser"
+ },
+ "yav": {
+ "code": "yav",
+ "name": "yangben"
+ },
+ "yo": {
+ "code": "yo",
+ "name": "yoruba"
+ },
+ "dje": {
+ "code": "dje",
+ "name": "zarma"
+ },
+ "zu": {
+ "code": "zu",
+ "name": "zulú"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/language/es-GT.json b/library/intl/resources/language/es-GT.json
new file mode 100644
index 000000000..afeb6b6b4
--- /dev/null
+++ b/library/intl/resources/language/es-GT.json
@@ -0,0 +1,738 @@
+{
+ "af": {
+ "code": "af",
+ "name": "afrikáans"
+ },
+ "agq": {
+ "code": "agq",
+ "name": "aghem"
+ },
+ "ak": {
+ "code": "ak",
+ "name": "akan"
+ },
+ "sq": {
+ "code": "sq",
+ "name": "albanés"
+ },
+ "de": {
+ "code": "de",
+ "name": "alemán"
+ },
+ "gsw": {
+ "code": "gsw",
+ "name": "alemán (Suiza)"
+ },
+ "de-AT": {
+ "code": "de-AT",
+ "name": "alemán austríaco"
+ },
+ "de-CH": {
+ "code": "de-CH",
+ "name": "alto alemán de Suiza"
+ },
+ "am": {
+ "code": "am",
+ "name": "amárico"
+ },
+ "ar": {
+ "code": "ar",
+ "name": "árabe"
+ },
+ "ar-001": {
+ "code": "ar-001",
+ "name": "árabe estándar moderno"
+ },
+ "hy": {
+ "code": "hy",
+ "name": "armenio"
+ },
+ "ast": {
+ "code": "ast",
+ "name": "asturiano"
+ },
+ "asa": {
+ "code": "asa",
+ "name": "asu"
+ },
+ "az": {
+ "code": "az",
+ "name": "azerbaiyano"
+ },
+ "ksf": {
+ "code": "ksf",
+ "name": "bafia"
+ },
+ "bm": {
+ "code": "bm",
+ "name": "bambara"
+ },
+ "bas": {
+ "code": "bas",
+ "name": "basa"
+ },
+ "bez": {
+ "code": "bez",
+ "name": "bena"
+ },
+ "bn": {
+ "code": "bn",
+ "name": "bengalí"
+ },
+ "be": {
+ "code": "be",
+ "name": "bielorruso"
+ },
+ "my": {
+ "code": "my",
+ "name": "birmano"
+ },
+ "brx": {
+ "code": "brx",
+ "name": "bodo"
+ },
+ "nb": {
+ "code": "nb",
+ "name": "bokmal noruego"
+ },
+ "bs": {
+ "code": "bs",
+ "name": "bosnio"
+ },
+ "br": {
+ "code": "br",
+ "name": "bretón"
+ },
+ "bg": {
+ "code": "bg",
+ "name": "búlgaro"
+ },
+ "kab": {
+ "code": "kab",
+ "name": "cabila"
+ },
+ "ks": {
+ "code": "ks",
+ "name": "cachemiro"
+ },
+ "kn": {
+ "code": "kn",
+ "name": "canarés"
+ },
+ "ca": {
+ "code": "ca",
+ "name": "catalán"
+ },
+ "cs": {
+ "code": "cs",
+ "name": "checo"
+ },
+ "chr": {
+ "code": "chr",
+ "name": "cheroqui"
+ },
+ "cgg": {
+ "code": "cgg",
+ "name": "chiga"
+ },
+ "zh": {
+ "code": "zh",
+ "name": "chino"
+ },
+ "zh-Hans": {
+ "code": "zh-Hans",
+ "name": "chino simplificado"
+ },
+ "zh-Hant": {
+ "code": "zh-Hant",
+ "name": "chino tradicional"
+ },
+ "si": {
+ "code": "si",
+ "name": "cingalés"
+ },
+ "ko": {
+ "code": "ko",
+ "name": "coreano"
+ },
+ "kea": {
+ "code": "kea",
+ "name": "criollo caboverdiano"
+ },
+ "mfe": {
+ "code": "mfe",
+ "name": "criollo mauriciano"
+ },
+ "hr": {
+ "code": "hr",
+ "name": "croata"
+ },
+ "da": {
+ "code": "da",
+ "name": "danés"
+ },
+ "dz": {
+ "code": "dz",
+ "name": "dzongkha"
+ },
+ "ebu": {
+ "code": "ebu",
+ "name": "embu"
+ },
+ "sk": {
+ "code": "sk",
+ "name": "eslovaco"
+ },
+ "sl": {
+ "code": "sl",
+ "name": "esloveno"
+ },
+ "es": {
+ "code": "es",
+ "name": "español"
+ },
+ "es-ES": {
+ "code": "es-ES",
+ "name": "español de España"
+ },
+ "es-MX": {
+ "code": "es-MX",
+ "name": "español de México"
+ },
+ "eo": {
+ "code": "eo",
+ "name": "esperanto"
+ },
+ "et": {
+ "code": "et",
+ "name": "estonio"
+ },
+ "ee": {
+ "code": "ee",
+ "name": "ewé"
+ },
+ "ewo": {
+ "code": "ewo",
+ "name": "ewondo"
+ },
+ "fo": {
+ "code": "fo",
+ "name": "feroés"
+ },
+ "fil": {
+ "code": "fil",
+ "name": "filipino"
+ },
+ "fi": {
+ "code": "fi",
+ "name": "finés"
+ },
+ "nl-BE": {
+ "code": "nl-BE",
+ "name": "flamenco"
+ },
+ "fr": {
+ "code": "fr",
+ "name": "francés"
+ },
+ "fr-CA": {
+ "code": "fr-CA",
+ "name": "francés canadiense"
+ },
+ "fr-CH": {
+ "code": "fr-CH",
+ "name": "francés suizo"
+ },
+ "fy": {
+ "code": "fy",
+ "name": "frisón occidental"
+ },
+ "fur": {
+ "code": "fur",
+ "name": "friulano"
+ },
+ "ff": {
+ "code": "ff",
+ "name": "fula"
+ },
+ "gd": {
+ "code": "gd",
+ "name": "gaélico escocés"
+ },
+ "cy": {
+ "code": "cy",
+ "name": "galés"
+ },
+ "gl": {
+ "code": "gl",
+ "name": "gallego"
+ },
+ "lg": {
+ "code": "lg",
+ "name": "ganda"
+ },
+ "ka": {
+ "code": "ka",
+ "name": "georgiano"
+ },
+ "el": {
+ "code": "el",
+ "name": "griego"
+ },
+ "kl": {
+ "code": "kl",
+ "name": "groenlandés"
+ },
+ "gu": {
+ "code": "gu",
+ "name": "gujarati"
+ },
+ "guz": {
+ "code": "guz",
+ "name": "gusii"
+ },
+ "ha": {
+ "code": "ha",
+ "name": "hausa"
+ },
+ "he": {
+ "code": "he",
+ "name": "hebreo"
+ },
+ "hi": {
+ "code": "hi",
+ "name": "hindi"
+ },
+ "hu": {
+ "code": "hu",
+ "name": "húngaro"
+ },
+ "id": {
+ "code": "id",
+ "name": "indonesio"
+ },
+ "en": {
+ "code": "en",
+ "name": "inglés"
+ },
+ "en-AU": {
+ "code": "en-AU",
+ "name": "inglés australiano"
+ },
+ "en-GB": {
+ "code": "en-GB",
+ "name": "inglés británico"
+ },
+ "en-CA": {
+ "code": "en-CA",
+ "name": "inglés canadiense"
+ },
+ "en-US": {
+ "code": "en-US",
+ "name": "inglés estadounidense"
+ },
+ "ga": {
+ "code": "ga",
+ "name": "irlandés"
+ },
+ "is": {
+ "code": "is",
+ "name": "islandés"
+ },
+ "it": {
+ "code": "it",
+ "name": "italiano"
+ },
+ "ja": {
+ "code": "ja",
+ "name": "japonés"
+ },
+ "km": {
+ "code": "km",
+ "name": "jemer"
+ },
+ "dyo": {
+ "code": "dyo",
+ "name": "jola-fonyi"
+ },
+ "kln": {
+ "code": "kln",
+ "name": "kalenjin"
+ },
+ "kam": {
+ "code": "kam",
+ "name": "kamba"
+ },
+ "kk": {
+ "code": "kk",
+ "name": "kazajo"
+ },
+ "ki": {
+ "code": "ki",
+ "name": "kikuyu"
+ },
+ "ky": {
+ "code": "ky",
+ "name": "kirguís"
+ },
+ "rn": {
+ "code": "rn",
+ "name": "kiroundi"
+ },
+ "vun": {
+ "code": "vun",
+ "name": "kivunjo"
+ },
+ "ksh": {
+ "code": "ksh",
+ "name": "kölsch"
+ },
+ "khq": {
+ "code": "khq",
+ "name": "koyra chiini"
+ },
+ "ses": {
+ "code": "ses",
+ "name": "koyraboro senni"
+ },
+ "nmg": {
+ "code": "nmg",
+ "name": "kwasio"
+ },
+ "lag": {
+ "code": "lag",
+ "name": "langi"
+ },
+ "lo": {
+ "code": "lo",
+ "name": "laosiano"
+ },
+ "lv": {
+ "code": "lv",
+ "name": "letón"
+ },
+ "ln": {
+ "code": "ln",
+ "name": "lingala"
+ },
+ "lt": {
+ "code": "lt",
+ "name": "lituano"
+ },
+ "lu": {
+ "code": "lu",
+ "name": "luba-katanga"
+ },
+ "luo": {
+ "code": "luo",
+ "name": "Luo"
+ },
+ "lb": {
+ "code": "lb",
+ "name": "luxemburgués"
+ },
+ "luy": {
+ "code": "luy",
+ "name": "luyia"
+ },
+ "mk": {
+ "code": "mk",
+ "name": "macedonio"
+ },
+ "jmc": {
+ "code": "jmc",
+ "name": "machame"
+ },
+ "mgh": {
+ "code": "mgh",
+ "name": "makhuwa-meetto"
+ },
+ "kde": {
+ "code": "kde",
+ "name": "makonde"
+ },
+ "ml": {
+ "code": "ml",
+ "name": "malayalam"
+ },
+ "ms": {
+ "code": "ms",
+ "name": "malayo"
+ },
+ "mg": {
+ "code": "mg",
+ "name": "malgache"
+ },
+ "mt": {
+ "code": "mt",
+ "name": "maltés"
+ },
+ "mr": {
+ "code": "mr",
+ "name": "maratí"
+ },
+ "mas": {
+ "code": "mas",
+ "name": "masái"
+ },
+ "mer": {
+ "code": "mer",
+ "name": "meru"
+ },
+ "ro-MD": {
+ "code": "ro-MD",
+ "name": "moldavo"
+ },
+ "mn": {
+ "code": "mn",
+ "name": "mongol"
+ },
+ "mua": {
+ "code": "mua",
+ "name": "mundang"
+ },
+ "naq": {
+ "code": "naq",
+ "name": "nama"
+ },
+ "nd": {
+ "code": "nd",
+ "name": "ndebele septentrional"
+ },
+ "nl": {
+ "code": "nl",
+ "name": "neerlandés"
+ },
+ "ne": {
+ "code": "ne",
+ "name": "nepalí"
+ },
+ "jgo": {
+ "code": "jgo",
+ "name": "ngomba"
+ },
+ "nus": {
+ "code": "nus",
+ "name": "nuer"
+ },
+ "nyn": {
+ "code": "nyn",
+ "name": "nyankole"
+ },
+ "nn": {
+ "code": "nn",
+ "name": "nynorsk noruego"
+ },
+ "or": {
+ "code": "or",
+ "name": "oriya"
+ },
+ "ps": {
+ "code": "ps",
+ "name": "pastún"
+ },
+ "fa": {
+ "code": "fa",
+ "name": "persa"
+ },
+ "pl": {
+ "code": "pl",
+ "name": "polaco"
+ },
+ "pt": {
+ "code": "pt",
+ "name": "portugués"
+ },
+ "pt-BR": {
+ "code": "pt-BR",
+ "name": "portugués de Brasil"
+ },
+ "pt-PT": {
+ "code": "pt-PT",
+ "name": "portugués de Portugal"
+ },
+ "pa": {
+ "code": "pa",
+ "name": "punjabí"
+ },
+ "rm": {
+ "code": "rm",
+ "name": "retorrománico"
+ },
+ "rof": {
+ "code": "rof",
+ "name": "rombo"
+ },
+ "ro": {
+ "code": "ro",
+ "name": "rumano"
+ },
+ "ru": {
+ "code": "ru",
+ "name": "ruso"
+ },
+ "rwk": {
+ "code": "rwk",
+ "name": "rwa"
+ },
+ "saq": {
+ "code": "saq",
+ "name": "samburu"
+ },
+ "se": {
+ "code": "se",
+ "name": "sami septentrional"
+ },
+ "sg": {
+ "code": "sg",
+ "name": "sango"
+ },
+ "sbp": {
+ "code": "sbp",
+ "name": "sangu"
+ },
+ "seh": {
+ "code": "seh",
+ "name": "sena"
+ },
+ "sr": {
+ "code": "sr",
+ "name": "serbio"
+ },
+ "ksb": {
+ "code": "ksb",
+ "name": "shambala"
+ },
+ "sn": {
+ "code": "sn",
+ "name": "shona"
+ },
+ "xog": {
+ "code": "xog",
+ "name": "soga"
+ },
+ "so": {
+ "code": "so",
+ "name": "somalí"
+ },
+ "dsb": {
+ "code": "dsb",
+ "name": "sorbio inferior"
+ },
+ "hsb": {
+ "code": "hsb",
+ "name": "sorbio superior"
+ },
+ "sv": {
+ "code": "sv",
+ "name": "sueco"
+ },
+ "sw": {
+ "code": "sw",
+ "name": "swahili"
+ },
+ "swc": {
+ "code": "swc",
+ "name": "swahili del Congo"
+ },
+ "th": {
+ "code": "th",
+ "name": "tailandés"
+ },
+ "dav": {
+ "code": "dav",
+ "name": "taita"
+ },
+ "zgh": {
+ "code": "zgh",
+ "name": "tamazight"
+ },
+ "tzm": {
+ "code": "tzm",
+ "name": "tamazight del Marruecos Central"
+ },
+ "ta": {
+ "code": "ta",
+ "name": "tamil"
+ },
+ "twq": {
+ "code": "twq",
+ "name": "tasawaq"
+ },
+ "shi": {
+ "code": "shi",
+ "name": "tashelhit"
+ },
+ "te": {
+ "code": "te",
+ "name": "telugu"
+ },
+ "teo": {
+ "code": "teo",
+ "name": "teso"
+ },
+ "bo": {
+ "code": "bo",
+ "name": "tibetano"
+ },
+ "ti": {
+ "code": "ti",
+ "name": "tigriña"
+ },
+ "to": {
+ "code": "to",
+ "name": "tongano"
+ },
+ "tr": {
+ "code": "tr",
+ "name": "turco"
+ },
+ "uk": {
+ "code": "uk",
+ "name": "ucraniano"
+ },
+ "ug": {
+ "code": "ug",
+ "name": "uigur"
+ },
+ "ur": {
+ "code": "ur",
+ "name": "urdu"
+ },
+ "uz": {
+ "code": "uz",
+ "name": "uzbeko"
+ },
+ "vai": {
+ "code": "vai",
+ "name": "Vai"
+ },
+ "eu": {
+ "code": "eu",
+ "name": "vasco"
+ },
+ "vi": {
+ "code": "vi",
+ "name": "vietnamita"
+ },
+ "wae": {
+ "code": "wae",
+ "name": "walser"
+ },
+ "yav": {
+ "code": "yav",
+ "name": "yangben"
+ },
+ "yo": {
+ "code": "yo",
+ "name": "yoruba"
+ },
+ "dje": {
+ "code": "dje",
+ "name": "zarma"
+ },
+ "zu": {
+ "code": "zu",
+ "name": "zulú"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/language/es-HN.json b/library/intl/resources/language/es-HN.json
new file mode 100644
index 000000000..afeb6b6b4
--- /dev/null
+++ b/library/intl/resources/language/es-HN.json
@@ -0,0 +1,738 @@
+{
+ "af": {
+ "code": "af",
+ "name": "afrikáans"
+ },
+ "agq": {
+ "code": "agq",
+ "name": "aghem"
+ },
+ "ak": {
+ "code": "ak",
+ "name": "akan"
+ },
+ "sq": {
+ "code": "sq",
+ "name": "albanés"
+ },
+ "de": {
+ "code": "de",
+ "name": "alemán"
+ },
+ "gsw": {
+ "code": "gsw",
+ "name": "alemán (Suiza)"
+ },
+ "de-AT": {
+ "code": "de-AT",
+ "name": "alemán austríaco"
+ },
+ "de-CH": {
+ "code": "de-CH",
+ "name": "alto alemán de Suiza"
+ },
+ "am": {
+ "code": "am",
+ "name": "amárico"
+ },
+ "ar": {
+ "code": "ar",
+ "name": "árabe"
+ },
+ "ar-001": {
+ "code": "ar-001",
+ "name": "árabe estándar moderno"
+ },
+ "hy": {
+ "code": "hy",
+ "name": "armenio"
+ },
+ "ast": {
+ "code": "ast",
+ "name": "asturiano"
+ },
+ "asa": {
+ "code": "asa",
+ "name": "asu"
+ },
+ "az": {
+ "code": "az",
+ "name": "azerbaiyano"
+ },
+ "ksf": {
+ "code": "ksf",
+ "name": "bafia"
+ },
+ "bm": {
+ "code": "bm",
+ "name": "bambara"
+ },
+ "bas": {
+ "code": "bas",
+ "name": "basa"
+ },
+ "bez": {
+ "code": "bez",
+ "name": "bena"
+ },
+ "bn": {
+ "code": "bn",
+ "name": "bengalí"
+ },
+ "be": {
+ "code": "be",
+ "name": "bielorruso"
+ },
+ "my": {
+ "code": "my",
+ "name": "birmano"
+ },
+ "brx": {
+ "code": "brx",
+ "name": "bodo"
+ },
+ "nb": {
+ "code": "nb",
+ "name": "bokmal noruego"
+ },
+ "bs": {
+ "code": "bs",
+ "name": "bosnio"
+ },
+ "br": {
+ "code": "br",
+ "name": "bretón"
+ },
+ "bg": {
+ "code": "bg",
+ "name": "búlgaro"
+ },
+ "kab": {
+ "code": "kab",
+ "name": "cabila"
+ },
+ "ks": {
+ "code": "ks",
+ "name": "cachemiro"
+ },
+ "kn": {
+ "code": "kn",
+ "name": "canarés"
+ },
+ "ca": {
+ "code": "ca",
+ "name": "catalán"
+ },
+ "cs": {
+ "code": "cs",
+ "name": "checo"
+ },
+ "chr": {
+ "code": "chr",
+ "name": "cheroqui"
+ },
+ "cgg": {
+ "code": "cgg",
+ "name": "chiga"
+ },
+ "zh": {
+ "code": "zh",
+ "name": "chino"
+ },
+ "zh-Hans": {
+ "code": "zh-Hans",
+ "name": "chino simplificado"
+ },
+ "zh-Hant": {
+ "code": "zh-Hant",
+ "name": "chino tradicional"
+ },
+ "si": {
+ "code": "si",
+ "name": "cingalés"
+ },
+ "ko": {
+ "code": "ko",
+ "name": "coreano"
+ },
+ "kea": {
+ "code": "kea",
+ "name": "criollo caboverdiano"
+ },
+ "mfe": {
+ "code": "mfe",
+ "name": "criollo mauriciano"
+ },
+ "hr": {
+ "code": "hr",
+ "name": "croata"
+ },
+ "da": {
+ "code": "da",
+ "name": "danés"
+ },
+ "dz": {
+ "code": "dz",
+ "name": "dzongkha"
+ },
+ "ebu": {
+ "code": "ebu",
+ "name": "embu"
+ },
+ "sk": {
+ "code": "sk",
+ "name": "eslovaco"
+ },
+ "sl": {
+ "code": "sl",
+ "name": "esloveno"
+ },
+ "es": {
+ "code": "es",
+ "name": "español"
+ },
+ "es-ES": {
+ "code": "es-ES",
+ "name": "español de España"
+ },
+ "es-MX": {
+ "code": "es-MX",
+ "name": "español de México"
+ },
+ "eo": {
+ "code": "eo",
+ "name": "esperanto"
+ },
+ "et": {
+ "code": "et",
+ "name": "estonio"
+ },
+ "ee": {
+ "code": "ee",
+ "name": "ewé"
+ },
+ "ewo": {
+ "code": "ewo",
+ "name": "ewondo"
+ },
+ "fo": {
+ "code": "fo",
+ "name": "feroés"
+ },
+ "fil": {
+ "code": "fil",
+ "name": "filipino"
+ },
+ "fi": {
+ "code": "fi",
+ "name": "finés"
+ },
+ "nl-BE": {
+ "code": "nl-BE",
+ "name": "flamenco"
+ },
+ "fr": {
+ "code": "fr",
+ "name": "francés"
+ },
+ "fr-CA": {
+ "code": "fr-CA",
+ "name": "francés canadiense"
+ },
+ "fr-CH": {
+ "code": "fr-CH",
+ "name": "francés suizo"
+ },
+ "fy": {
+ "code": "fy",
+ "name": "frisón occidental"
+ },
+ "fur": {
+ "code": "fur",
+ "name": "friulano"
+ },
+ "ff": {
+ "code": "ff",
+ "name": "fula"
+ },
+ "gd": {
+ "code": "gd",
+ "name": "gaélico escocés"
+ },
+ "cy": {
+ "code": "cy",
+ "name": "galés"
+ },
+ "gl": {
+ "code": "gl",
+ "name": "gallego"
+ },
+ "lg": {
+ "code": "lg",
+ "name": "ganda"
+ },
+ "ka": {
+ "code": "ka",
+ "name": "georgiano"
+ },
+ "el": {
+ "code": "el",
+ "name": "griego"
+ },
+ "kl": {
+ "code": "kl",
+ "name": "groenlandés"
+ },
+ "gu": {
+ "code": "gu",
+ "name": "gujarati"
+ },
+ "guz": {
+ "code": "guz",
+ "name": "gusii"
+ },
+ "ha": {
+ "code": "ha",
+ "name": "hausa"
+ },
+ "he": {
+ "code": "he",
+ "name": "hebreo"
+ },
+ "hi": {
+ "code": "hi",
+ "name": "hindi"
+ },
+ "hu": {
+ "code": "hu",
+ "name": "húngaro"
+ },
+ "id": {
+ "code": "id",
+ "name": "indonesio"
+ },
+ "en": {
+ "code": "en",
+ "name": "inglés"
+ },
+ "en-AU": {
+ "code": "en-AU",
+ "name": "inglés australiano"
+ },
+ "en-GB": {
+ "code": "en-GB",
+ "name": "inglés británico"
+ },
+ "en-CA": {
+ "code": "en-CA",
+ "name": "inglés canadiense"
+ },
+ "en-US": {
+ "code": "en-US",
+ "name": "inglés estadounidense"
+ },
+ "ga": {
+ "code": "ga",
+ "name": "irlandés"
+ },
+ "is": {
+ "code": "is",
+ "name": "islandés"
+ },
+ "it": {
+ "code": "it",
+ "name": "italiano"
+ },
+ "ja": {
+ "code": "ja",
+ "name": "japonés"
+ },
+ "km": {
+ "code": "km",
+ "name": "jemer"
+ },
+ "dyo": {
+ "code": "dyo",
+ "name": "jola-fonyi"
+ },
+ "kln": {
+ "code": "kln",
+ "name": "kalenjin"
+ },
+ "kam": {
+ "code": "kam",
+ "name": "kamba"
+ },
+ "kk": {
+ "code": "kk",
+ "name": "kazajo"
+ },
+ "ki": {
+ "code": "ki",
+ "name": "kikuyu"
+ },
+ "ky": {
+ "code": "ky",
+ "name": "kirguís"
+ },
+ "rn": {
+ "code": "rn",
+ "name": "kiroundi"
+ },
+ "vun": {
+ "code": "vun",
+ "name": "kivunjo"
+ },
+ "ksh": {
+ "code": "ksh",
+ "name": "kölsch"
+ },
+ "khq": {
+ "code": "khq",
+ "name": "koyra chiini"
+ },
+ "ses": {
+ "code": "ses",
+ "name": "koyraboro senni"
+ },
+ "nmg": {
+ "code": "nmg",
+ "name": "kwasio"
+ },
+ "lag": {
+ "code": "lag",
+ "name": "langi"
+ },
+ "lo": {
+ "code": "lo",
+ "name": "laosiano"
+ },
+ "lv": {
+ "code": "lv",
+ "name": "letón"
+ },
+ "ln": {
+ "code": "ln",
+ "name": "lingala"
+ },
+ "lt": {
+ "code": "lt",
+ "name": "lituano"
+ },
+ "lu": {
+ "code": "lu",
+ "name": "luba-katanga"
+ },
+ "luo": {
+ "code": "luo",
+ "name": "Luo"
+ },
+ "lb": {
+ "code": "lb",
+ "name": "luxemburgués"
+ },
+ "luy": {
+ "code": "luy",
+ "name": "luyia"
+ },
+ "mk": {
+ "code": "mk",
+ "name": "macedonio"
+ },
+ "jmc": {
+ "code": "jmc",
+ "name": "machame"
+ },
+ "mgh": {
+ "code": "mgh",
+ "name": "makhuwa-meetto"
+ },
+ "kde": {
+ "code": "kde",
+ "name": "makonde"
+ },
+ "ml": {
+ "code": "ml",
+ "name": "malayalam"
+ },
+ "ms": {
+ "code": "ms",
+ "name": "malayo"
+ },
+ "mg": {
+ "code": "mg",
+ "name": "malgache"
+ },
+ "mt": {
+ "code": "mt",
+ "name": "maltés"
+ },
+ "mr": {
+ "code": "mr",
+ "name": "maratí"
+ },
+ "mas": {
+ "code": "mas",
+ "name": "masái"
+ },
+ "mer": {
+ "code": "mer",
+ "name": "meru"
+ },
+ "ro-MD": {
+ "code": "ro-MD",
+ "name": "moldavo"
+ },
+ "mn": {
+ "code": "mn",
+ "name": "mongol"
+ },
+ "mua": {
+ "code": "mua",
+ "name": "mundang"
+ },
+ "naq": {
+ "code": "naq",
+ "name": "nama"
+ },
+ "nd": {
+ "code": "nd",
+ "name": "ndebele septentrional"
+ },
+ "nl": {
+ "code": "nl",
+ "name": "neerlandés"
+ },
+ "ne": {
+ "code": "ne",
+ "name": "nepalí"
+ },
+ "jgo": {
+ "code": "jgo",
+ "name": "ngomba"
+ },
+ "nus": {
+ "code": "nus",
+ "name": "nuer"
+ },
+ "nyn": {
+ "code": "nyn",
+ "name": "nyankole"
+ },
+ "nn": {
+ "code": "nn",
+ "name": "nynorsk noruego"
+ },
+ "or": {
+ "code": "or",
+ "name": "oriya"
+ },
+ "ps": {
+ "code": "ps",
+ "name": "pastún"
+ },
+ "fa": {
+ "code": "fa",
+ "name": "persa"
+ },
+ "pl": {
+ "code": "pl",
+ "name": "polaco"
+ },
+ "pt": {
+ "code": "pt",
+ "name": "portugués"
+ },
+ "pt-BR": {
+ "code": "pt-BR",
+ "name": "portugués de Brasil"
+ },
+ "pt-PT": {
+ "code": "pt-PT",
+ "name": "portugués de Portugal"
+ },
+ "pa": {
+ "code": "pa",
+ "name": "punjabí"
+ },
+ "rm": {
+ "code": "rm",
+ "name": "retorrománico"
+ },
+ "rof": {
+ "code": "rof",
+ "name": "rombo"
+ },
+ "ro": {
+ "code": "ro",
+ "name": "rumano"
+ },
+ "ru": {
+ "code": "ru",
+ "name": "ruso"
+ },
+ "rwk": {
+ "code": "rwk",
+ "name": "rwa"
+ },
+ "saq": {
+ "code": "saq",
+ "name": "samburu"
+ },
+ "se": {
+ "code": "se",
+ "name": "sami septentrional"
+ },
+ "sg": {
+ "code": "sg",
+ "name": "sango"
+ },
+ "sbp": {
+ "code": "sbp",
+ "name": "sangu"
+ },
+ "seh": {
+ "code": "seh",
+ "name": "sena"
+ },
+ "sr": {
+ "code": "sr",
+ "name": "serbio"
+ },
+ "ksb": {
+ "code": "ksb",
+ "name": "shambala"
+ },
+ "sn": {
+ "code": "sn",
+ "name": "shona"
+ },
+ "xog": {
+ "code": "xog",
+ "name": "soga"
+ },
+ "so": {
+ "code": "so",
+ "name": "somalí"
+ },
+ "dsb": {
+ "code": "dsb",
+ "name": "sorbio inferior"
+ },
+ "hsb": {
+ "code": "hsb",
+ "name": "sorbio superior"
+ },
+ "sv": {
+ "code": "sv",
+ "name": "sueco"
+ },
+ "sw": {
+ "code": "sw",
+ "name": "swahili"
+ },
+ "swc": {
+ "code": "swc",
+ "name": "swahili del Congo"
+ },
+ "th": {
+ "code": "th",
+ "name": "tailandés"
+ },
+ "dav": {
+ "code": "dav",
+ "name": "taita"
+ },
+ "zgh": {
+ "code": "zgh",
+ "name": "tamazight"
+ },
+ "tzm": {
+ "code": "tzm",
+ "name": "tamazight del Marruecos Central"
+ },
+ "ta": {
+ "code": "ta",
+ "name": "tamil"
+ },
+ "twq": {
+ "code": "twq",
+ "name": "tasawaq"
+ },
+ "shi": {
+ "code": "shi",
+ "name": "tashelhit"
+ },
+ "te": {
+ "code": "te",
+ "name": "telugu"
+ },
+ "teo": {
+ "code": "teo",
+ "name": "teso"
+ },
+ "bo": {
+ "code": "bo",
+ "name": "tibetano"
+ },
+ "ti": {
+ "code": "ti",
+ "name": "tigriña"
+ },
+ "to": {
+ "code": "to",
+ "name": "tongano"
+ },
+ "tr": {
+ "code": "tr",
+ "name": "turco"
+ },
+ "uk": {
+ "code": "uk",
+ "name": "ucraniano"
+ },
+ "ug": {
+ "code": "ug",
+ "name": "uigur"
+ },
+ "ur": {
+ "code": "ur",
+ "name": "urdu"
+ },
+ "uz": {
+ "code": "uz",
+ "name": "uzbeko"
+ },
+ "vai": {
+ "code": "vai",
+ "name": "Vai"
+ },
+ "eu": {
+ "code": "eu",
+ "name": "vasco"
+ },
+ "vi": {
+ "code": "vi",
+ "name": "vietnamita"
+ },
+ "wae": {
+ "code": "wae",
+ "name": "walser"
+ },
+ "yav": {
+ "code": "yav",
+ "name": "yangben"
+ },
+ "yo": {
+ "code": "yo",
+ "name": "yoruba"
+ },
+ "dje": {
+ "code": "dje",
+ "name": "zarma"
+ },
+ "zu": {
+ "code": "zu",
+ "name": "zulú"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/language/es-MX.json b/library/intl/resources/language/es-MX.json
new file mode 100644
index 000000000..5f07c32ac
--- /dev/null
+++ b/library/intl/resources/language/es-MX.json
@@ -0,0 +1,738 @@
+{
+ "af": {
+ "code": "af",
+ "name": "afrikáans"
+ },
+ "agq": {
+ "code": "agq",
+ "name": "aghem"
+ },
+ "ak": {
+ "code": "ak",
+ "name": "akan"
+ },
+ "sq": {
+ "code": "sq",
+ "name": "albanés"
+ },
+ "de": {
+ "code": "de",
+ "name": "alemán"
+ },
+ "de-AT": {
+ "code": "de-AT",
+ "name": "alemán austríaco"
+ },
+ "gsw": {
+ "code": "gsw",
+ "name": "alemán suizo"
+ },
+ "de-CH": {
+ "code": "de-CH",
+ "name": "alto alemán suizo"
+ },
+ "hsb": {
+ "code": "hsb",
+ "name": "alto sorbio"
+ },
+ "am": {
+ "code": "am",
+ "name": "amárico"
+ },
+ "ar": {
+ "code": "ar",
+ "name": "árabe"
+ },
+ "ar-001": {
+ "code": "ar-001",
+ "name": "árabe estándar moderno"
+ },
+ "hy": {
+ "code": "hy",
+ "name": "armenio"
+ },
+ "ast": {
+ "code": "ast",
+ "name": "asturiano"
+ },
+ "asa": {
+ "code": "asa",
+ "name": "asu"
+ },
+ "az": {
+ "code": "az",
+ "name": "azerbaiyano"
+ },
+ "ksf": {
+ "code": "ksf",
+ "name": "bafia"
+ },
+ "dsb": {
+ "code": "dsb",
+ "name": "bajo sorbio"
+ },
+ "bm": {
+ "code": "bm",
+ "name": "bambara"
+ },
+ "bas": {
+ "code": "bas",
+ "name": "basa"
+ },
+ "bez": {
+ "code": "bez",
+ "name": "bena"
+ },
+ "bn": {
+ "code": "bn",
+ "name": "bengalí"
+ },
+ "be": {
+ "code": "be",
+ "name": "bielorruso"
+ },
+ "my": {
+ "code": "my",
+ "name": "birmano"
+ },
+ "brx": {
+ "code": "brx",
+ "name": "bodo"
+ },
+ "nb": {
+ "code": "nb",
+ "name": "bokmal noruego"
+ },
+ "bs": {
+ "code": "bs",
+ "name": "bosnio"
+ },
+ "br": {
+ "code": "br",
+ "name": "bretón"
+ },
+ "bg": {
+ "code": "bg",
+ "name": "búlgaro"
+ },
+ "kab": {
+ "code": "kab",
+ "name": "cabilio"
+ },
+ "ks": {
+ "code": "ks",
+ "name": "cachemiro"
+ },
+ "kn": {
+ "code": "kn",
+ "name": "canarés"
+ },
+ "ca": {
+ "code": "ca",
+ "name": "catalán"
+ },
+ "cs": {
+ "code": "cs",
+ "name": "checo"
+ },
+ "chr": {
+ "code": "chr",
+ "name": "cheroki"
+ },
+ "cgg": {
+ "code": "cgg",
+ "name": "chiga"
+ },
+ "zh": {
+ "code": "zh",
+ "name": "chino"
+ },
+ "zh-Hans": {
+ "code": "zh-Hans",
+ "name": "chino simplificado"
+ },
+ "zh-Hant": {
+ "code": "zh-Hant",
+ "name": "chino tradicional"
+ },
+ "si": {
+ "code": "si",
+ "name": "cingalés"
+ },
+ "ko": {
+ "code": "ko",
+ "name": "coreano"
+ },
+ "kea": {
+ "code": "kea",
+ "name": "criollo caboverdiano"
+ },
+ "mfe": {
+ "code": "mfe",
+ "name": "criollo mauriciano"
+ },
+ "hr": {
+ "code": "hr",
+ "name": "croata"
+ },
+ "da": {
+ "code": "da",
+ "name": "danés"
+ },
+ "dz": {
+ "code": "dz",
+ "name": "dzongkha"
+ },
+ "ebu": {
+ "code": "ebu",
+ "name": "embu"
+ },
+ "sk": {
+ "code": "sk",
+ "name": "eslovaco"
+ },
+ "sl": {
+ "code": "sl",
+ "name": "esloveno"
+ },
+ "es": {
+ "code": "es",
+ "name": "español"
+ },
+ "es-ES": {
+ "code": "es-ES",
+ "name": "español de España"
+ },
+ "es-MX": {
+ "code": "es-MX",
+ "name": "español de México"
+ },
+ "eo": {
+ "code": "eo",
+ "name": "esperanto"
+ },
+ "et": {
+ "code": "et",
+ "name": "estonio"
+ },
+ "ee": {
+ "code": "ee",
+ "name": "ewé"
+ },
+ "ewo": {
+ "code": "ewo",
+ "name": "ewondo"
+ },
+ "fo": {
+ "code": "fo",
+ "name": "feroés"
+ },
+ "fil": {
+ "code": "fil",
+ "name": "filipino"
+ },
+ "fi": {
+ "code": "fi",
+ "name": "finés"
+ },
+ "nl-BE": {
+ "code": "nl-BE",
+ "name": "flamenco"
+ },
+ "fr": {
+ "code": "fr",
+ "name": "francés"
+ },
+ "fr-CA": {
+ "code": "fr-CA",
+ "name": "francés canadiense"
+ },
+ "fr-CH": {
+ "code": "fr-CH",
+ "name": "francés suizo"
+ },
+ "fy": {
+ "code": "fy",
+ "name": "frisón occidental"
+ },
+ "fur": {
+ "code": "fur",
+ "name": "friulano"
+ },
+ "ff": {
+ "code": "ff",
+ "name": "fula"
+ },
+ "gd": {
+ "code": "gd",
+ "name": "gaélico escocés"
+ },
+ "cy": {
+ "code": "cy",
+ "name": "galés"
+ },
+ "gl": {
+ "code": "gl",
+ "name": "gallego"
+ },
+ "lg": {
+ "code": "lg",
+ "name": "ganda"
+ },
+ "ka": {
+ "code": "ka",
+ "name": "georgiano"
+ },
+ "el": {
+ "code": "el",
+ "name": "griego"
+ },
+ "kl": {
+ "code": "kl",
+ "name": "groenlandés"
+ },
+ "gu": {
+ "code": "gu",
+ "name": "gujarati"
+ },
+ "guz": {
+ "code": "guz",
+ "name": "gusii"
+ },
+ "kln": {
+ "code": "kln",
+ "name": "halenjin"
+ },
+ "ha": {
+ "code": "ha",
+ "name": "hausa"
+ },
+ "he": {
+ "code": "he",
+ "name": "hebreo"
+ },
+ "hi": {
+ "code": "hi",
+ "name": "hindi"
+ },
+ "hu": {
+ "code": "hu",
+ "name": "húngaro"
+ },
+ "id": {
+ "code": "id",
+ "name": "indonesio"
+ },
+ "en": {
+ "code": "en",
+ "name": "inglés"
+ },
+ "en-AU": {
+ "code": "en-AU",
+ "name": "inglés australiano"
+ },
+ "en-GB": {
+ "code": "en-GB",
+ "name": "inglés británico"
+ },
+ "en-CA": {
+ "code": "en-CA",
+ "name": "inglés canadiense"
+ },
+ "en-US": {
+ "code": "en-US",
+ "name": "inglés estadounidense"
+ },
+ "ga": {
+ "code": "ga",
+ "name": "irlandés"
+ },
+ "is": {
+ "code": "is",
+ "name": "islandés"
+ },
+ "it": {
+ "code": "it",
+ "name": "italiano"
+ },
+ "ja": {
+ "code": "ja",
+ "name": "japonés"
+ },
+ "km": {
+ "code": "km",
+ "name": "jemer"
+ },
+ "dyo": {
+ "code": "dyo",
+ "name": "jola-fonyi"
+ },
+ "kam": {
+ "code": "kam",
+ "name": "kamba"
+ },
+ "kk": {
+ "code": "kk",
+ "name": "kazajo"
+ },
+ "ki": {
+ "code": "ki",
+ "name": "kikuyu"
+ },
+ "ky": {
+ "code": "ky",
+ "name": "kirguís"
+ },
+ "ksh": {
+ "code": "ksh",
+ "name": "kölsch"
+ },
+ "khq": {
+ "code": "khq",
+ "name": "koyra chiini"
+ },
+ "ses": {
+ "code": "ses",
+ "name": "koyraboro senni"
+ },
+ "nmg": {
+ "code": "nmg",
+ "name": "kwasio"
+ },
+ "lag": {
+ "code": "lag",
+ "name": "langi"
+ },
+ "lo": {
+ "code": "lo",
+ "name": "laosiano"
+ },
+ "lv": {
+ "code": "lv",
+ "name": "letón"
+ },
+ "ln": {
+ "code": "ln",
+ "name": "lingala"
+ },
+ "lt": {
+ "code": "lt",
+ "name": "lituano"
+ },
+ "lu": {
+ "code": "lu",
+ "name": "luba-katanga"
+ },
+ "luo": {
+ "code": "luo",
+ "name": "Luo"
+ },
+ "lb": {
+ "code": "lb",
+ "name": "luxemburgués"
+ },
+ "luy": {
+ "code": "luy",
+ "name": "luyia"
+ },
+ "mk": {
+ "code": "mk",
+ "name": "macedonio"
+ },
+ "jmc": {
+ "code": "jmc",
+ "name": "machame"
+ },
+ "mgh": {
+ "code": "mgh",
+ "name": "makhuwa-meetto"
+ },
+ "kde": {
+ "code": "kde",
+ "name": "makonde"
+ },
+ "ml": {
+ "code": "ml",
+ "name": "malayalam"
+ },
+ "ms": {
+ "code": "ms",
+ "name": "malayo"
+ },
+ "mg": {
+ "code": "mg",
+ "name": "malgache"
+ },
+ "mt": {
+ "code": "mt",
+ "name": "maltés"
+ },
+ "mr": {
+ "code": "mr",
+ "name": "maratí"
+ },
+ "mas": {
+ "code": "mas",
+ "name": "masái"
+ },
+ "mer": {
+ "code": "mer",
+ "name": "meru"
+ },
+ "ro-MD": {
+ "code": "ro-MD",
+ "name": "moldavo"
+ },
+ "mn": {
+ "code": "mn",
+ "name": "mongol"
+ },
+ "mua": {
+ "code": "mua",
+ "name": "mundang"
+ },
+ "naq": {
+ "code": "naq",
+ "name": "nama"
+ },
+ "nl": {
+ "code": "nl",
+ "name": "neerlandés"
+ },
+ "ne": {
+ "code": "ne",
+ "name": "nepalí"
+ },
+ "jgo": {
+ "code": "jgo",
+ "name": "ngomba"
+ },
+ "nus": {
+ "code": "nus",
+ "name": "nuer"
+ },
+ "nyn": {
+ "code": "nyn",
+ "name": "nyankole"
+ },
+ "nn": {
+ "code": "nn",
+ "name": "nynorsk noruego"
+ },
+ "or": {
+ "code": "or",
+ "name": "oriya"
+ },
+ "pa": {
+ "code": "pa",
+ "name": "panyabí"
+ },
+ "ps": {
+ "code": "ps",
+ "name": "pastún"
+ },
+ "fa": {
+ "code": "fa",
+ "name": "persa"
+ },
+ "pl": {
+ "code": "pl",
+ "name": "polaco"
+ },
+ "pt": {
+ "code": "pt",
+ "name": "portugués"
+ },
+ "pt-BR": {
+ "code": "pt-BR",
+ "name": "portugués de Brasil"
+ },
+ "pt-PT": {
+ "code": "pt-PT",
+ "name": "portugués de Portugal"
+ },
+ "rm": {
+ "code": "rm",
+ "name": "romanche"
+ },
+ "rof": {
+ "code": "rof",
+ "name": "rombo"
+ },
+ "ro": {
+ "code": "ro",
+ "name": "rumano"
+ },
+ "rn": {
+ "code": "rn",
+ "name": "rundi"
+ },
+ "ru": {
+ "code": "ru",
+ "name": "ruso"
+ },
+ "rwk": {
+ "code": "rwk",
+ "name": "rwa"
+ },
+ "saq": {
+ "code": "saq",
+ "name": "samburu"
+ },
+ "se": {
+ "code": "se",
+ "name": "sami septentrional"
+ },
+ "sg": {
+ "code": "sg",
+ "name": "sango"
+ },
+ "sbp": {
+ "code": "sbp",
+ "name": "sangu"
+ },
+ "seh": {
+ "code": "seh",
+ "name": "sena"
+ },
+ "sr": {
+ "code": "sr",
+ "name": "serbio"
+ },
+ "ksb": {
+ "code": "ksb",
+ "name": "shambala"
+ },
+ "sn": {
+ "code": "sn",
+ "name": "shona"
+ },
+ "nd": {
+ "code": "nd",
+ "name": "sindebele"
+ },
+ "xog": {
+ "code": "xog",
+ "name": "soga"
+ },
+ "so": {
+ "code": "so",
+ "name": "somalí"
+ },
+ "sv": {
+ "code": "sv",
+ "name": "sueco"
+ },
+ "sw": {
+ "code": "sw",
+ "name": "swahili"
+ },
+ "swc": {
+ "code": "swc",
+ "name": "swahili del Congo"
+ },
+ "th": {
+ "code": "th",
+ "name": "tailandés"
+ },
+ "dav": {
+ "code": "dav",
+ "name": "taita"
+ },
+ "tzm": {
+ "code": "tzm",
+ "name": "tamazight del Marruecos Central"
+ },
+ "zgh": {
+ "code": "zgh",
+ "name": "tamazight estándar marroquí"
+ },
+ "ta": {
+ "code": "ta",
+ "name": "tamil"
+ },
+ "twq": {
+ "code": "twq",
+ "name": "tasawaq"
+ },
+ "shi": {
+ "code": "shi",
+ "name": "tashelhit"
+ },
+ "te": {
+ "code": "te",
+ "name": "telugu"
+ },
+ "teo": {
+ "code": "teo",
+ "name": "teso"
+ },
+ "bo": {
+ "code": "bo",
+ "name": "tibetano"
+ },
+ "ti": {
+ "code": "ti",
+ "name": "tigriña"
+ },
+ "to": {
+ "code": "to",
+ "name": "tongano"
+ },
+ "tr": {
+ "code": "tr",
+ "name": "turco"
+ },
+ "uk": {
+ "code": "uk",
+ "name": "ucraniano"
+ },
+ "ug": {
+ "code": "ug",
+ "name": "uigur"
+ },
+ "ur": {
+ "code": "ur",
+ "name": "urdu"
+ },
+ "uz": {
+ "code": "uz",
+ "name": "uzbeko"
+ },
+ "vai": {
+ "code": "vai",
+ "name": "Vai"
+ },
+ "eu": {
+ "code": "eu",
+ "name": "vasco"
+ },
+ "vi": {
+ "code": "vi",
+ "name": "vietnamita"
+ },
+ "vun": {
+ "code": "vun",
+ "name": "vunjo"
+ },
+ "wae": {
+ "code": "wae",
+ "name": "walser"
+ },
+ "yav": {
+ "code": "yav",
+ "name": "yangben"
+ },
+ "yo": {
+ "code": "yo",
+ "name": "yoruba"
+ },
+ "dje": {
+ "code": "dje",
+ "name": "zarma"
+ },
+ "zu": {
+ "code": "zu",
+ "name": "zulú"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/language/es-NI.json b/library/intl/resources/language/es-NI.json
new file mode 100644
index 000000000..afeb6b6b4
--- /dev/null
+++ b/library/intl/resources/language/es-NI.json
@@ -0,0 +1,738 @@
+{
+ "af": {
+ "code": "af",
+ "name": "afrikáans"
+ },
+ "agq": {
+ "code": "agq",
+ "name": "aghem"
+ },
+ "ak": {
+ "code": "ak",
+ "name": "akan"
+ },
+ "sq": {
+ "code": "sq",
+ "name": "albanés"
+ },
+ "de": {
+ "code": "de",
+ "name": "alemán"
+ },
+ "gsw": {
+ "code": "gsw",
+ "name": "alemán (Suiza)"
+ },
+ "de-AT": {
+ "code": "de-AT",
+ "name": "alemán austríaco"
+ },
+ "de-CH": {
+ "code": "de-CH",
+ "name": "alto alemán de Suiza"
+ },
+ "am": {
+ "code": "am",
+ "name": "amárico"
+ },
+ "ar": {
+ "code": "ar",
+ "name": "árabe"
+ },
+ "ar-001": {
+ "code": "ar-001",
+ "name": "árabe estándar moderno"
+ },
+ "hy": {
+ "code": "hy",
+ "name": "armenio"
+ },
+ "ast": {
+ "code": "ast",
+ "name": "asturiano"
+ },
+ "asa": {
+ "code": "asa",
+ "name": "asu"
+ },
+ "az": {
+ "code": "az",
+ "name": "azerbaiyano"
+ },
+ "ksf": {
+ "code": "ksf",
+ "name": "bafia"
+ },
+ "bm": {
+ "code": "bm",
+ "name": "bambara"
+ },
+ "bas": {
+ "code": "bas",
+ "name": "basa"
+ },
+ "bez": {
+ "code": "bez",
+ "name": "bena"
+ },
+ "bn": {
+ "code": "bn",
+ "name": "bengalí"
+ },
+ "be": {
+ "code": "be",
+ "name": "bielorruso"
+ },
+ "my": {
+ "code": "my",
+ "name": "birmano"
+ },
+ "brx": {
+ "code": "brx",
+ "name": "bodo"
+ },
+ "nb": {
+ "code": "nb",
+ "name": "bokmal noruego"
+ },
+ "bs": {
+ "code": "bs",
+ "name": "bosnio"
+ },
+ "br": {
+ "code": "br",
+ "name": "bretón"
+ },
+ "bg": {
+ "code": "bg",
+ "name": "búlgaro"
+ },
+ "kab": {
+ "code": "kab",
+ "name": "cabila"
+ },
+ "ks": {
+ "code": "ks",
+ "name": "cachemiro"
+ },
+ "kn": {
+ "code": "kn",
+ "name": "canarés"
+ },
+ "ca": {
+ "code": "ca",
+ "name": "catalán"
+ },
+ "cs": {
+ "code": "cs",
+ "name": "checo"
+ },
+ "chr": {
+ "code": "chr",
+ "name": "cheroqui"
+ },
+ "cgg": {
+ "code": "cgg",
+ "name": "chiga"
+ },
+ "zh": {
+ "code": "zh",
+ "name": "chino"
+ },
+ "zh-Hans": {
+ "code": "zh-Hans",
+ "name": "chino simplificado"
+ },
+ "zh-Hant": {
+ "code": "zh-Hant",
+ "name": "chino tradicional"
+ },
+ "si": {
+ "code": "si",
+ "name": "cingalés"
+ },
+ "ko": {
+ "code": "ko",
+ "name": "coreano"
+ },
+ "kea": {
+ "code": "kea",
+ "name": "criollo caboverdiano"
+ },
+ "mfe": {
+ "code": "mfe",
+ "name": "criollo mauriciano"
+ },
+ "hr": {
+ "code": "hr",
+ "name": "croata"
+ },
+ "da": {
+ "code": "da",
+ "name": "danés"
+ },
+ "dz": {
+ "code": "dz",
+ "name": "dzongkha"
+ },
+ "ebu": {
+ "code": "ebu",
+ "name": "embu"
+ },
+ "sk": {
+ "code": "sk",
+ "name": "eslovaco"
+ },
+ "sl": {
+ "code": "sl",
+ "name": "esloveno"
+ },
+ "es": {
+ "code": "es",
+ "name": "español"
+ },
+ "es-ES": {
+ "code": "es-ES",
+ "name": "español de España"
+ },
+ "es-MX": {
+ "code": "es-MX",
+ "name": "español de México"
+ },
+ "eo": {
+ "code": "eo",
+ "name": "esperanto"
+ },
+ "et": {
+ "code": "et",
+ "name": "estonio"
+ },
+ "ee": {
+ "code": "ee",
+ "name": "ewé"
+ },
+ "ewo": {
+ "code": "ewo",
+ "name": "ewondo"
+ },
+ "fo": {
+ "code": "fo",
+ "name": "feroés"
+ },
+ "fil": {
+ "code": "fil",
+ "name": "filipino"
+ },
+ "fi": {
+ "code": "fi",
+ "name": "finés"
+ },
+ "nl-BE": {
+ "code": "nl-BE",
+ "name": "flamenco"
+ },
+ "fr": {
+ "code": "fr",
+ "name": "francés"
+ },
+ "fr-CA": {
+ "code": "fr-CA",
+ "name": "francés canadiense"
+ },
+ "fr-CH": {
+ "code": "fr-CH",
+ "name": "francés suizo"
+ },
+ "fy": {
+ "code": "fy",
+ "name": "frisón occidental"
+ },
+ "fur": {
+ "code": "fur",
+ "name": "friulano"
+ },
+ "ff": {
+ "code": "ff",
+ "name": "fula"
+ },
+ "gd": {
+ "code": "gd",
+ "name": "gaélico escocés"
+ },
+ "cy": {
+ "code": "cy",
+ "name": "galés"
+ },
+ "gl": {
+ "code": "gl",
+ "name": "gallego"
+ },
+ "lg": {
+ "code": "lg",
+ "name": "ganda"
+ },
+ "ka": {
+ "code": "ka",
+ "name": "georgiano"
+ },
+ "el": {
+ "code": "el",
+ "name": "griego"
+ },
+ "kl": {
+ "code": "kl",
+ "name": "groenlandés"
+ },
+ "gu": {
+ "code": "gu",
+ "name": "gujarati"
+ },
+ "guz": {
+ "code": "guz",
+ "name": "gusii"
+ },
+ "ha": {
+ "code": "ha",
+ "name": "hausa"
+ },
+ "he": {
+ "code": "he",
+ "name": "hebreo"
+ },
+ "hi": {
+ "code": "hi",
+ "name": "hindi"
+ },
+ "hu": {
+ "code": "hu",
+ "name": "húngaro"
+ },
+ "id": {
+ "code": "id",
+ "name": "indonesio"
+ },
+ "en": {
+ "code": "en",
+ "name": "inglés"
+ },
+ "en-AU": {
+ "code": "en-AU",
+ "name": "inglés australiano"
+ },
+ "en-GB": {
+ "code": "en-GB",
+ "name": "inglés británico"
+ },
+ "en-CA": {
+ "code": "en-CA",
+ "name": "inglés canadiense"
+ },
+ "en-US": {
+ "code": "en-US",
+ "name": "inglés estadounidense"
+ },
+ "ga": {
+ "code": "ga",
+ "name": "irlandés"
+ },
+ "is": {
+ "code": "is",
+ "name": "islandés"
+ },
+ "it": {
+ "code": "it",
+ "name": "italiano"
+ },
+ "ja": {
+ "code": "ja",
+ "name": "japonés"
+ },
+ "km": {
+ "code": "km",
+ "name": "jemer"
+ },
+ "dyo": {
+ "code": "dyo",
+ "name": "jola-fonyi"
+ },
+ "kln": {
+ "code": "kln",
+ "name": "kalenjin"
+ },
+ "kam": {
+ "code": "kam",
+ "name": "kamba"
+ },
+ "kk": {
+ "code": "kk",
+ "name": "kazajo"
+ },
+ "ki": {
+ "code": "ki",
+ "name": "kikuyu"
+ },
+ "ky": {
+ "code": "ky",
+ "name": "kirguís"
+ },
+ "rn": {
+ "code": "rn",
+ "name": "kiroundi"
+ },
+ "vun": {
+ "code": "vun",
+ "name": "kivunjo"
+ },
+ "ksh": {
+ "code": "ksh",
+ "name": "kölsch"
+ },
+ "khq": {
+ "code": "khq",
+ "name": "koyra chiini"
+ },
+ "ses": {
+ "code": "ses",
+ "name": "koyraboro senni"
+ },
+ "nmg": {
+ "code": "nmg",
+ "name": "kwasio"
+ },
+ "lag": {
+ "code": "lag",
+ "name": "langi"
+ },
+ "lo": {
+ "code": "lo",
+ "name": "laosiano"
+ },
+ "lv": {
+ "code": "lv",
+ "name": "letón"
+ },
+ "ln": {
+ "code": "ln",
+ "name": "lingala"
+ },
+ "lt": {
+ "code": "lt",
+ "name": "lituano"
+ },
+ "lu": {
+ "code": "lu",
+ "name": "luba-katanga"
+ },
+ "luo": {
+ "code": "luo",
+ "name": "Luo"
+ },
+ "lb": {
+ "code": "lb",
+ "name": "luxemburgués"
+ },
+ "luy": {
+ "code": "luy",
+ "name": "luyia"
+ },
+ "mk": {
+ "code": "mk",
+ "name": "macedonio"
+ },
+ "jmc": {
+ "code": "jmc",
+ "name": "machame"
+ },
+ "mgh": {
+ "code": "mgh",
+ "name": "makhuwa-meetto"
+ },
+ "kde": {
+ "code": "kde",
+ "name": "makonde"
+ },
+ "ml": {
+ "code": "ml",
+ "name": "malayalam"
+ },
+ "ms": {
+ "code": "ms",
+ "name": "malayo"
+ },
+ "mg": {
+ "code": "mg",
+ "name": "malgache"
+ },
+ "mt": {
+ "code": "mt",
+ "name": "maltés"
+ },
+ "mr": {
+ "code": "mr",
+ "name": "maratí"
+ },
+ "mas": {
+ "code": "mas",
+ "name": "masái"
+ },
+ "mer": {
+ "code": "mer",
+ "name": "meru"
+ },
+ "ro-MD": {
+ "code": "ro-MD",
+ "name": "moldavo"
+ },
+ "mn": {
+ "code": "mn",
+ "name": "mongol"
+ },
+ "mua": {
+ "code": "mua",
+ "name": "mundang"
+ },
+ "naq": {
+ "code": "naq",
+ "name": "nama"
+ },
+ "nd": {
+ "code": "nd",
+ "name": "ndebele septentrional"
+ },
+ "nl": {
+ "code": "nl",
+ "name": "neerlandés"
+ },
+ "ne": {
+ "code": "ne",
+ "name": "nepalí"
+ },
+ "jgo": {
+ "code": "jgo",
+ "name": "ngomba"
+ },
+ "nus": {
+ "code": "nus",
+ "name": "nuer"
+ },
+ "nyn": {
+ "code": "nyn",
+ "name": "nyankole"
+ },
+ "nn": {
+ "code": "nn",
+ "name": "nynorsk noruego"
+ },
+ "or": {
+ "code": "or",
+ "name": "oriya"
+ },
+ "ps": {
+ "code": "ps",
+ "name": "pastún"
+ },
+ "fa": {
+ "code": "fa",
+ "name": "persa"
+ },
+ "pl": {
+ "code": "pl",
+ "name": "polaco"
+ },
+ "pt": {
+ "code": "pt",
+ "name": "portugués"
+ },
+ "pt-BR": {
+ "code": "pt-BR",
+ "name": "portugués de Brasil"
+ },
+ "pt-PT": {
+ "code": "pt-PT",
+ "name": "portugués de Portugal"
+ },
+ "pa": {
+ "code": "pa",
+ "name": "punjabí"
+ },
+ "rm": {
+ "code": "rm",
+ "name": "retorrománico"
+ },
+ "rof": {
+ "code": "rof",
+ "name": "rombo"
+ },
+ "ro": {
+ "code": "ro",
+ "name": "rumano"
+ },
+ "ru": {
+ "code": "ru",
+ "name": "ruso"
+ },
+ "rwk": {
+ "code": "rwk",
+ "name": "rwa"
+ },
+ "saq": {
+ "code": "saq",
+ "name": "samburu"
+ },
+ "se": {
+ "code": "se",
+ "name": "sami septentrional"
+ },
+ "sg": {
+ "code": "sg",
+ "name": "sango"
+ },
+ "sbp": {
+ "code": "sbp",
+ "name": "sangu"
+ },
+ "seh": {
+ "code": "seh",
+ "name": "sena"
+ },
+ "sr": {
+ "code": "sr",
+ "name": "serbio"
+ },
+ "ksb": {
+ "code": "ksb",
+ "name": "shambala"
+ },
+ "sn": {
+ "code": "sn",
+ "name": "shona"
+ },
+ "xog": {
+ "code": "xog",
+ "name": "soga"
+ },
+ "so": {
+ "code": "so",
+ "name": "somalí"
+ },
+ "dsb": {
+ "code": "dsb",
+ "name": "sorbio inferior"
+ },
+ "hsb": {
+ "code": "hsb",
+ "name": "sorbio superior"
+ },
+ "sv": {
+ "code": "sv",
+ "name": "sueco"
+ },
+ "sw": {
+ "code": "sw",
+ "name": "swahili"
+ },
+ "swc": {
+ "code": "swc",
+ "name": "swahili del Congo"
+ },
+ "th": {
+ "code": "th",
+ "name": "tailandés"
+ },
+ "dav": {
+ "code": "dav",
+ "name": "taita"
+ },
+ "zgh": {
+ "code": "zgh",
+ "name": "tamazight"
+ },
+ "tzm": {
+ "code": "tzm",
+ "name": "tamazight del Marruecos Central"
+ },
+ "ta": {
+ "code": "ta",
+ "name": "tamil"
+ },
+ "twq": {
+ "code": "twq",
+ "name": "tasawaq"
+ },
+ "shi": {
+ "code": "shi",
+ "name": "tashelhit"
+ },
+ "te": {
+ "code": "te",
+ "name": "telugu"
+ },
+ "teo": {
+ "code": "teo",
+ "name": "teso"
+ },
+ "bo": {
+ "code": "bo",
+ "name": "tibetano"
+ },
+ "ti": {
+ "code": "ti",
+ "name": "tigriña"
+ },
+ "to": {
+ "code": "to",
+ "name": "tongano"
+ },
+ "tr": {
+ "code": "tr",
+ "name": "turco"
+ },
+ "uk": {
+ "code": "uk",
+ "name": "ucraniano"
+ },
+ "ug": {
+ "code": "ug",
+ "name": "uigur"
+ },
+ "ur": {
+ "code": "ur",
+ "name": "urdu"
+ },
+ "uz": {
+ "code": "uz",
+ "name": "uzbeko"
+ },
+ "vai": {
+ "code": "vai",
+ "name": "Vai"
+ },
+ "eu": {
+ "code": "eu",
+ "name": "vasco"
+ },
+ "vi": {
+ "code": "vi",
+ "name": "vietnamita"
+ },
+ "wae": {
+ "code": "wae",
+ "name": "walser"
+ },
+ "yav": {
+ "code": "yav",
+ "name": "yangben"
+ },
+ "yo": {
+ "code": "yo",
+ "name": "yoruba"
+ },
+ "dje": {
+ "code": "dje",
+ "name": "zarma"
+ },
+ "zu": {
+ "code": "zu",
+ "name": "zulú"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/language/es-PA.json b/library/intl/resources/language/es-PA.json
new file mode 100644
index 000000000..afeb6b6b4
--- /dev/null
+++ b/library/intl/resources/language/es-PA.json
@@ -0,0 +1,738 @@
+{
+ "af": {
+ "code": "af",
+ "name": "afrikáans"
+ },
+ "agq": {
+ "code": "agq",
+ "name": "aghem"
+ },
+ "ak": {
+ "code": "ak",
+ "name": "akan"
+ },
+ "sq": {
+ "code": "sq",
+ "name": "albanés"
+ },
+ "de": {
+ "code": "de",
+ "name": "alemán"
+ },
+ "gsw": {
+ "code": "gsw",
+ "name": "alemán (Suiza)"
+ },
+ "de-AT": {
+ "code": "de-AT",
+ "name": "alemán austríaco"
+ },
+ "de-CH": {
+ "code": "de-CH",
+ "name": "alto alemán de Suiza"
+ },
+ "am": {
+ "code": "am",
+ "name": "amárico"
+ },
+ "ar": {
+ "code": "ar",
+ "name": "árabe"
+ },
+ "ar-001": {
+ "code": "ar-001",
+ "name": "árabe estándar moderno"
+ },
+ "hy": {
+ "code": "hy",
+ "name": "armenio"
+ },
+ "ast": {
+ "code": "ast",
+ "name": "asturiano"
+ },
+ "asa": {
+ "code": "asa",
+ "name": "asu"
+ },
+ "az": {
+ "code": "az",
+ "name": "azerbaiyano"
+ },
+ "ksf": {
+ "code": "ksf",
+ "name": "bafia"
+ },
+ "bm": {
+ "code": "bm",
+ "name": "bambara"
+ },
+ "bas": {
+ "code": "bas",
+ "name": "basa"
+ },
+ "bez": {
+ "code": "bez",
+ "name": "bena"
+ },
+ "bn": {
+ "code": "bn",
+ "name": "bengalí"
+ },
+ "be": {
+ "code": "be",
+ "name": "bielorruso"
+ },
+ "my": {
+ "code": "my",
+ "name": "birmano"
+ },
+ "brx": {
+ "code": "brx",
+ "name": "bodo"
+ },
+ "nb": {
+ "code": "nb",
+ "name": "bokmal noruego"
+ },
+ "bs": {
+ "code": "bs",
+ "name": "bosnio"
+ },
+ "br": {
+ "code": "br",
+ "name": "bretón"
+ },
+ "bg": {
+ "code": "bg",
+ "name": "búlgaro"
+ },
+ "kab": {
+ "code": "kab",
+ "name": "cabila"
+ },
+ "ks": {
+ "code": "ks",
+ "name": "cachemiro"
+ },
+ "kn": {
+ "code": "kn",
+ "name": "canarés"
+ },
+ "ca": {
+ "code": "ca",
+ "name": "catalán"
+ },
+ "cs": {
+ "code": "cs",
+ "name": "checo"
+ },
+ "chr": {
+ "code": "chr",
+ "name": "cheroqui"
+ },
+ "cgg": {
+ "code": "cgg",
+ "name": "chiga"
+ },
+ "zh": {
+ "code": "zh",
+ "name": "chino"
+ },
+ "zh-Hans": {
+ "code": "zh-Hans",
+ "name": "chino simplificado"
+ },
+ "zh-Hant": {
+ "code": "zh-Hant",
+ "name": "chino tradicional"
+ },
+ "si": {
+ "code": "si",
+ "name": "cingalés"
+ },
+ "ko": {
+ "code": "ko",
+ "name": "coreano"
+ },
+ "kea": {
+ "code": "kea",
+ "name": "criollo caboverdiano"
+ },
+ "mfe": {
+ "code": "mfe",
+ "name": "criollo mauriciano"
+ },
+ "hr": {
+ "code": "hr",
+ "name": "croata"
+ },
+ "da": {
+ "code": "da",
+ "name": "danés"
+ },
+ "dz": {
+ "code": "dz",
+ "name": "dzongkha"
+ },
+ "ebu": {
+ "code": "ebu",
+ "name": "embu"
+ },
+ "sk": {
+ "code": "sk",
+ "name": "eslovaco"
+ },
+ "sl": {
+ "code": "sl",
+ "name": "esloveno"
+ },
+ "es": {
+ "code": "es",
+ "name": "español"
+ },
+ "es-ES": {
+ "code": "es-ES",
+ "name": "español de España"
+ },
+ "es-MX": {
+ "code": "es-MX",
+ "name": "español de México"
+ },
+ "eo": {
+ "code": "eo",
+ "name": "esperanto"
+ },
+ "et": {
+ "code": "et",
+ "name": "estonio"
+ },
+ "ee": {
+ "code": "ee",
+ "name": "ewé"
+ },
+ "ewo": {
+ "code": "ewo",
+ "name": "ewondo"
+ },
+ "fo": {
+ "code": "fo",
+ "name": "feroés"
+ },
+ "fil": {
+ "code": "fil",
+ "name": "filipino"
+ },
+ "fi": {
+ "code": "fi",
+ "name": "finés"
+ },
+ "nl-BE": {
+ "code": "nl-BE",
+ "name": "flamenco"
+ },
+ "fr": {
+ "code": "fr",
+ "name": "francés"
+ },
+ "fr-CA": {
+ "code": "fr-CA",
+ "name": "francés canadiense"
+ },
+ "fr-CH": {
+ "code": "fr-CH",
+ "name": "francés suizo"
+ },
+ "fy": {
+ "code": "fy",
+ "name": "frisón occidental"
+ },
+ "fur": {
+ "code": "fur",
+ "name": "friulano"
+ },
+ "ff": {
+ "code": "ff",
+ "name": "fula"
+ },
+ "gd": {
+ "code": "gd",
+ "name": "gaélico escocés"
+ },
+ "cy": {
+ "code": "cy",
+ "name": "galés"
+ },
+ "gl": {
+ "code": "gl",
+ "name": "gallego"
+ },
+ "lg": {
+ "code": "lg",
+ "name": "ganda"
+ },
+ "ka": {
+ "code": "ka",
+ "name": "georgiano"
+ },
+ "el": {
+ "code": "el",
+ "name": "griego"
+ },
+ "kl": {
+ "code": "kl",
+ "name": "groenlandés"
+ },
+ "gu": {
+ "code": "gu",
+ "name": "gujarati"
+ },
+ "guz": {
+ "code": "guz",
+ "name": "gusii"
+ },
+ "ha": {
+ "code": "ha",
+ "name": "hausa"
+ },
+ "he": {
+ "code": "he",
+ "name": "hebreo"
+ },
+ "hi": {
+ "code": "hi",
+ "name": "hindi"
+ },
+ "hu": {
+ "code": "hu",
+ "name": "húngaro"
+ },
+ "id": {
+ "code": "id",
+ "name": "indonesio"
+ },
+ "en": {
+ "code": "en",
+ "name": "inglés"
+ },
+ "en-AU": {
+ "code": "en-AU",
+ "name": "inglés australiano"
+ },
+ "en-GB": {
+ "code": "en-GB",
+ "name": "inglés británico"
+ },
+ "en-CA": {
+ "code": "en-CA",
+ "name": "inglés canadiense"
+ },
+ "en-US": {
+ "code": "en-US",
+ "name": "inglés estadounidense"
+ },
+ "ga": {
+ "code": "ga",
+ "name": "irlandés"
+ },
+ "is": {
+ "code": "is",
+ "name": "islandés"
+ },
+ "it": {
+ "code": "it",
+ "name": "italiano"
+ },
+ "ja": {
+ "code": "ja",
+ "name": "japonés"
+ },
+ "km": {
+ "code": "km",
+ "name": "jemer"
+ },
+ "dyo": {
+ "code": "dyo",
+ "name": "jola-fonyi"
+ },
+ "kln": {
+ "code": "kln",
+ "name": "kalenjin"
+ },
+ "kam": {
+ "code": "kam",
+ "name": "kamba"
+ },
+ "kk": {
+ "code": "kk",
+ "name": "kazajo"
+ },
+ "ki": {
+ "code": "ki",
+ "name": "kikuyu"
+ },
+ "ky": {
+ "code": "ky",
+ "name": "kirguís"
+ },
+ "rn": {
+ "code": "rn",
+ "name": "kiroundi"
+ },
+ "vun": {
+ "code": "vun",
+ "name": "kivunjo"
+ },
+ "ksh": {
+ "code": "ksh",
+ "name": "kölsch"
+ },
+ "khq": {
+ "code": "khq",
+ "name": "koyra chiini"
+ },
+ "ses": {
+ "code": "ses",
+ "name": "koyraboro senni"
+ },
+ "nmg": {
+ "code": "nmg",
+ "name": "kwasio"
+ },
+ "lag": {
+ "code": "lag",
+ "name": "langi"
+ },
+ "lo": {
+ "code": "lo",
+ "name": "laosiano"
+ },
+ "lv": {
+ "code": "lv",
+ "name": "letón"
+ },
+ "ln": {
+ "code": "ln",
+ "name": "lingala"
+ },
+ "lt": {
+ "code": "lt",
+ "name": "lituano"
+ },
+ "lu": {
+ "code": "lu",
+ "name": "luba-katanga"
+ },
+ "luo": {
+ "code": "luo",
+ "name": "Luo"
+ },
+ "lb": {
+ "code": "lb",
+ "name": "luxemburgués"
+ },
+ "luy": {
+ "code": "luy",
+ "name": "luyia"
+ },
+ "mk": {
+ "code": "mk",
+ "name": "macedonio"
+ },
+ "jmc": {
+ "code": "jmc",
+ "name": "machame"
+ },
+ "mgh": {
+ "code": "mgh",
+ "name": "makhuwa-meetto"
+ },
+ "kde": {
+ "code": "kde",
+ "name": "makonde"
+ },
+ "ml": {
+ "code": "ml",
+ "name": "malayalam"
+ },
+ "ms": {
+ "code": "ms",
+ "name": "malayo"
+ },
+ "mg": {
+ "code": "mg",
+ "name": "malgache"
+ },
+ "mt": {
+ "code": "mt",
+ "name": "maltés"
+ },
+ "mr": {
+ "code": "mr",
+ "name": "maratí"
+ },
+ "mas": {
+ "code": "mas",
+ "name": "masái"
+ },
+ "mer": {
+ "code": "mer",
+ "name": "meru"
+ },
+ "ro-MD": {
+ "code": "ro-MD",
+ "name": "moldavo"
+ },
+ "mn": {
+ "code": "mn",
+ "name": "mongol"
+ },
+ "mua": {
+ "code": "mua",
+ "name": "mundang"
+ },
+ "naq": {
+ "code": "naq",
+ "name": "nama"
+ },
+ "nd": {
+ "code": "nd",
+ "name": "ndebele septentrional"
+ },
+ "nl": {
+ "code": "nl",
+ "name": "neerlandés"
+ },
+ "ne": {
+ "code": "ne",
+ "name": "nepalí"
+ },
+ "jgo": {
+ "code": "jgo",
+ "name": "ngomba"
+ },
+ "nus": {
+ "code": "nus",
+ "name": "nuer"
+ },
+ "nyn": {
+ "code": "nyn",
+ "name": "nyankole"
+ },
+ "nn": {
+ "code": "nn",
+ "name": "nynorsk noruego"
+ },
+ "or": {
+ "code": "or",
+ "name": "oriya"
+ },
+ "ps": {
+ "code": "ps",
+ "name": "pastún"
+ },
+ "fa": {
+ "code": "fa",
+ "name": "persa"
+ },
+ "pl": {
+ "code": "pl",
+ "name": "polaco"
+ },
+ "pt": {
+ "code": "pt",
+ "name": "portugués"
+ },
+ "pt-BR": {
+ "code": "pt-BR",
+ "name": "portugués de Brasil"
+ },
+ "pt-PT": {
+ "code": "pt-PT",
+ "name": "portugués de Portugal"
+ },
+ "pa": {
+ "code": "pa",
+ "name": "punjabí"
+ },
+ "rm": {
+ "code": "rm",
+ "name": "retorrománico"
+ },
+ "rof": {
+ "code": "rof",
+ "name": "rombo"
+ },
+ "ro": {
+ "code": "ro",
+ "name": "rumano"
+ },
+ "ru": {
+ "code": "ru",
+ "name": "ruso"
+ },
+ "rwk": {
+ "code": "rwk",
+ "name": "rwa"
+ },
+ "saq": {
+ "code": "saq",
+ "name": "samburu"
+ },
+ "se": {
+ "code": "se",
+ "name": "sami septentrional"
+ },
+ "sg": {
+ "code": "sg",
+ "name": "sango"
+ },
+ "sbp": {
+ "code": "sbp",
+ "name": "sangu"
+ },
+ "seh": {
+ "code": "seh",
+ "name": "sena"
+ },
+ "sr": {
+ "code": "sr",
+ "name": "serbio"
+ },
+ "ksb": {
+ "code": "ksb",
+ "name": "shambala"
+ },
+ "sn": {
+ "code": "sn",
+ "name": "shona"
+ },
+ "xog": {
+ "code": "xog",
+ "name": "soga"
+ },
+ "so": {
+ "code": "so",
+ "name": "somalí"
+ },
+ "dsb": {
+ "code": "dsb",
+ "name": "sorbio inferior"
+ },
+ "hsb": {
+ "code": "hsb",
+ "name": "sorbio superior"
+ },
+ "sv": {
+ "code": "sv",
+ "name": "sueco"
+ },
+ "sw": {
+ "code": "sw",
+ "name": "swahili"
+ },
+ "swc": {
+ "code": "swc",
+ "name": "swahili del Congo"
+ },
+ "th": {
+ "code": "th",
+ "name": "tailandés"
+ },
+ "dav": {
+ "code": "dav",
+ "name": "taita"
+ },
+ "zgh": {
+ "code": "zgh",
+ "name": "tamazight"
+ },
+ "tzm": {
+ "code": "tzm",
+ "name": "tamazight del Marruecos Central"
+ },
+ "ta": {
+ "code": "ta",
+ "name": "tamil"
+ },
+ "twq": {
+ "code": "twq",
+ "name": "tasawaq"
+ },
+ "shi": {
+ "code": "shi",
+ "name": "tashelhit"
+ },
+ "te": {
+ "code": "te",
+ "name": "telugu"
+ },
+ "teo": {
+ "code": "teo",
+ "name": "teso"
+ },
+ "bo": {
+ "code": "bo",
+ "name": "tibetano"
+ },
+ "ti": {
+ "code": "ti",
+ "name": "tigriña"
+ },
+ "to": {
+ "code": "to",
+ "name": "tongano"
+ },
+ "tr": {
+ "code": "tr",
+ "name": "turco"
+ },
+ "uk": {
+ "code": "uk",
+ "name": "ucraniano"
+ },
+ "ug": {
+ "code": "ug",
+ "name": "uigur"
+ },
+ "ur": {
+ "code": "ur",
+ "name": "urdu"
+ },
+ "uz": {
+ "code": "uz",
+ "name": "uzbeko"
+ },
+ "vai": {
+ "code": "vai",
+ "name": "Vai"
+ },
+ "eu": {
+ "code": "eu",
+ "name": "vasco"
+ },
+ "vi": {
+ "code": "vi",
+ "name": "vietnamita"
+ },
+ "wae": {
+ "code": "wae",
+ "name": "walser"
+ },
+ "yav": {
+ "code": "yav",
+ "name": "yangben"
+ },
+ "yo": {
+ "code": "yo",
+ "name": "yoruba"
+ },
+ "dje": {
+ "code": "dje",
+ "name": "zarma"
+ },
+ "zu": {
+ "code": "zu",
+ "name": "zulú"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/language/es-PE.json b/library/intl/resources/language/es-PE.json
new file mode 100644
index 000000000..afeb6b6b4
--- /dev/null
+++ b/library/intl/resources/language/es-PE.json
@@ -0,0 +1,738 @@
+{
+ "af": {
+ "code": "af",
+ "name": "afrikáans"
+ },
+ "agq": {
+ "code": "agq",
+ "name": "aghem"
+ },
+ "ak": {
+ "code": "ak",
+ "name": "akan"
+ },
+ "sq": {
+ "code": "sq",
+ "name": "albanés"
+ },
+ "de": {
+ "code": "de",
+ "name": "alemán"
+ },
+ "gsw": {
+ "code": "gsw",
+ "name": "alemán (Suiza)"
+ },
+ "de-AT": {
+ "code": "de-AT",
+ "name": "alemán austríaco"
+ },
+ "de-CH": {
+ "code": "de-CH",
+ "name": "alto alemán de Suiza"
+ },
+ "am": {
+ "code": "am",
+ "name": "amárico"
+ },
+ "ar": {
+ "code": "ar",
+ "name": "árabe"
+ },
+ "ar-001": {
+ "code": "ar-001",
+ "name": "árabe estándar moderno"
+ },
+ "hy": {
+ "code": "hy",
+ "name": "armenio"
+ },
+ "ast": {
+ "code": "ast",
+ "name": "asturiano"
+ },
+ "asa": {
+ "code": "asa",
+ "name": "asu"
+ },
+ "az": {
+ "code": "az",
+ "name": "azerbaiyano"
+ },
+ "ksf": {
+ "code": "ksf",
+ "name": "bafia"
+ },
+ "bm": {
+ "code": "bm",
+ "name": "bambara"
+ },
+ "bas": {
+ "code": "bas",
+ "name": "basa"
+ },
+ "bez": {
+ "code": "bez",
+ "name": "bena"
+ },
+ "bn": {
+ "code": "bn",
+ "name": "bengalí"
+ },
+ "be": {
+ "code": "be",
+ "name": "bielorruso"
+ },
+ "my": {
+ "code": "my",
+ "name": "birmano"
+ },
+ "brx": {
+ "code": "brx",
+ "name": "bodo"
+ },
+ "nb": {
+ "code": "nb",
+ "name": "bokmal noruego"
+ },
+ "bs": {
+ "code": "bs",
+ "name": "bosnio"
+ },
+ "br": {
+ "code": "br",
+ "name": "bretón"
+ },
+ "bg": {
+ "code": "bg",
+ "name": "búlgaro"
+ },
+ "kab": {
+ "code": "kab",
+ "name": "cabila"
+ },
+ "ks": {
+ "code": "ks",
+ "name": "cachemiro"
+ },
+ "kn": {
+ "code": "kn",
+ "name": "canarés"
+ },
+ "ca": {
+ "code": "ca",
+ "name": "catalán"
+ },
+ "cs": {
+ "code": "cs",
+ "name": "checo"
+ },
+ "chr": {
+ "code": "chr",
+ "name": "cheroqui"
+ },
+ "cgg": {
+ "code": "cgg",
+ "name": "chiga"
+ },
+ "zh": {
+ "code": "zh",
+ "name": "chino"
+ },
+ "zh-Hans": {
+ "code": "zh-Hans",
+ "name": "chino simplificado"
+ },
+ "zh-Hant": {
+ "code": "zh-Hant",
+ "name": "chino tradicional"
+ },
+ "si": {
+ "code": "si",
+ "name": "cingalés"
+ },
+ "ko": {
+ "code": "ko",
+ "name": "coreano"
+ },
+ "kea": {
+ "code": "kea",
+ "name": "criollo caboverdiano"
+ },
+ "mfe": {
+ "code": "mfe",
+ "name": "criollo mauriciano"
+ },
+ "hr": {
+ "code": "hr",
+ "name": "croata"
+ },
+ "da": {
+ "code": "da",
+ "name": "danés"
+ },
+ "dz": {
+ "code": "dz",
+ "name": "dzongkha"
+ },
+ "ebu": {
+ "code": "ebu",
+ "name": "embu"
+ },
+ "sk": {
+ "code": "sk",
+ "name": "eslovaco"
+ },
+ "sl": {
+ "code": "sl",
+ "name": "esloveno"
+ },
+ "es": {
+ "code": "es",
+ "name": "español"
+ },
+ "es-ES": {
+ "code": "es-ES",
+ "name": "español de España"
+ },
+ "es-MX": {
+ "code": "es-MX",
+ "name": "español de México"
+ },
+ "eo": {
+ "code": "eo",
+ "name": "esperanto"
+ },
+ "et": {
+ "code": "et",
+ "name": "estonio"
+ },
+ "ee": {
+ "code": "ee",
+ "name": "ewé"
+ },
+ "ewo": {
+ "code": "ewo",
+ "name": "ewondo"
+ },
+ "fo": {
+ "code": "fo",
+ "name": "feroés"
+ },
+ "fil": {
+ "code": "fil",
+ "name": "filipino"
+ },
+ "fi": {
+ "code": "fi",
+ "name": "finés"
+ },
+ "nl-BE": {
+ "code": "nl-BE",
+ "name": "flamenco"
+ },
+ "fr": {
+ "code": "fr",
+ "name": "francés"
+ },
+ "fr-CA": {
+ "code": "fr-CA",
+ "name": "francés canadiense"
+ },
+ "fr-CH": {
+ "code": "fr-CH",
+ "name": "francés suizo"
+ },
+ "fy": {
+ "code": "fy",
+ "name": "frisón occidental"
+ },
+ "fur": {
+ "code": "fur",
+ "name": "friulano"
+ },
+ "ff": {
+ "code": "ff",
+ "name": "fula"
+ },
+ "gd": {
+ "code": "gd",
+ "name": "gaélico escocés"
+ },
+ "cy": {
+ "code": "cy",
+ "name": "galés"
+ },
+ "gl": {
+ "code": "gl",
+ "name": "gallego"
+ },
+ "lg": {
+ "code": "lg",
+ "name": "ganda"
+ },
+ "ka": {
+ "code": "ka",
+ "name": "georgiano"
+ },
+ "el": {
+ "code": "el",
+ "name": "griego"
+ },
+ "kl": {
+ "code": "kl",
+ "name": "groenlandés"
+ },
+ "gu": {
+ "code": "gu",
+ "name": "gujarati"
+ },
+ "guz": {
+ "code": "guz",
+ "name": "gusii"
+ },
+ "ha": {
+ "code": "ha",
+ "name": "hausa"
+ },
+ "he": {
+ "code": "he",
+ "name": "hebreo"
+ },
+ "hi": {
+ "code": "hi",
+ "name": "hindi"
+ },
+ "hu": {
+ "code": "hu",
+ "name": "húngaro"
+ },
+ "id": {
+ "code": "id",
+ "name": "indonesio"
+ },
+ "en": {
+ "code": "en",
+ "name": "inglés"
+ },
+ "en-AU": {
+ "code": "en-AU",
+ "name": "inglés australiano"
+ },
+ "en-GB": {
+ "code": "en-GB",
+ "name": "inglés británico"
+ },
+ "en-CA": {
+ "code": "en-CA",
+ "name": "inglés canadiense"
+ },
+ "en-US": {
+ "code": "en-US",
+ "name": "inglés estadounidense"
+ },
+ "ga": {
+ "code": "ga",
+ "name": "irlandés"
+ },
+ "is": {
+ "code": "is",
+ "name": "islandés"
+ },
+ "it": {
+ "code": "it",
+ "name": "italiano"
+ },
+ "ja": {
+ "code": "ja",
+ "name": "japonés"
+ },
+ "km": {
+ "code": "km",
+ "name": "jemer"
+ },
+ "dyo": {
+ "code": "dyo",
+ "name": "jola-fonyi"
+ },
+ "kln": {
+ "code": "kln",
+ "name": "kalenjin"
+ },
+ "kam": {
+ "code": "kam",
+ "name": "kamba"
+ },
+ "kk": {
+ "code": "kk",
+ "name": "kazajo"
+ },
+ "ki": {
+ "code": "ki",
+ "name": "kikuyu"
+ },
+ "ky": {
+ "code": "ky",
+ "name": "kirguís"
+ },
+ "rn": {
+ "code": "rn",
+ "name": "kiroundi"
+ },
+ "vun": {
+ "code": "vun",
+ "name": "kivunjo"
+ },
+ "ksh": {
+ "code": "ksh",
+ "name": "kölsch"
+ },
+ "khq": {
+ "code": "khq",
+ "name": "koyra chiini"
+ },
+ "ses": {
+ "code": "ses",
+ "name": "koyraboro senni"
+ },
+ "nmg": {
+ "code": "nmg",
+ "name": "kwasio"
+ },
+ "lag": {
+ "code": "lag",
+ "name": "langi"
+ },
+ "lo": {
+ "code": "lo",
+ "name": "laosiano"
+ },
+ "lv": {
+ "code": "lv",
+ "name": "letón"
+ },
+ "ln": {
+ "code": "ln",
+ "name": "lingala"
+ },
+ "lt": {
+ "code": "lt",
+ "name": "lituano"
+ },
+ "lu": {
+ "code": "lu",
+ "name": "luba-katanga"
+ },
+ "luo": {
+ "code": "luo",
+ "name": "Luo"
+ },
+ "lb": {
+ "code": "lb",
+ "name": "luxemburgués"
+ },
+ "luy": {
+ "code": "luy",
+ "name": "luyia"
+ },
+ "mk": {
+ "code": "mk",
+ "name": "macedonio"
+ },
+ "jmc": {
+ "code": "jmc",
+ "name": "machame"
+ },
+ "mgh": {
+ "code": "mgh",
+ "name": "makhuwa-meetto"
+ },
+ "kde": {
+ "code": "kde",
+ "name": "makonde"
+ },
+ "ml": {
+ "code": "ml",
+ "name": "malayalam"
+ },
+ "ms": {
+ "code": "ms",
+ "name": "malayo"
+ },
+ "mg": {
+ "code": "mg",
+ "name": "malgache"
+ },
+ "mt": {
+ "code": "mt",
+ "name": "maltés"
+ },
+ "mr": {
+ "code": "mr",
+ "name": "maratí"
+ },
+ "mas": {
+ "code": "mas",
+ "name": "masái"
+ },
+ "mer": {
+ "code": "mer",
+ "name": "meru"
+ },
+ "ro-MD": {
+ "code": "ro-MD",
+ "name": "moldavo"
+ },
+ "mn": {
+ "code": "mn",
+ "name": "mongol"
+ },
+ "mua": {
+ "code": "mua",
+ "name": "mundang"
+ },
+ "naq": {
+ "code": "naq",
+ "name": "nama"
+ },
+ "nd": {
+ "code": "nd",
+ "name": "ndebele septentrional"
+ },
+ "nl": {
+ "code": "nl",
+ "name": "neerlandés"
+ },
+ "ne": {
+ "code": "ne",
+ "name": "nepalí"
+ },
+ "jgo": {
+ "code": "jgo",
+ "name": "ngomba"
+ },
+ "nus": {
+ "code": "nus",
+ "name": "nuer"
+ },
+ "nyn": {
+ "code": "nyn",
+ "name": "nyankole"
+ },
+ "nn": {
+ "code": "nn",
+ "name": "nynorsk noruego"
+ },
+ "or": {
+ "code": "or",
+ "name": "oriya"
+ },
+ "ps": {
+ "code": "ps",
+ "name": "pastún"
+ },
+ "fa": {
+ "code": "fa",
+ "name": "persa"
+ },
+ "pl": {
+ "code": "pl",
+ "name": "polaco"
+ },
+ "pt": {
+ "code": "pt",
+ "name": "portugués"
+ },
+ "pt-BR": {
+ "code": "pt-BR",
+ "name": "portugués de Brasil"
+ },
+ "pt-PT": {
+ "code": "pt-PT",
+ "name": "portugués de Portugal"
+ },
+ "pa": {
+ "code": "pa",
+ "name": "punjabí"
+ },
+ "rm": {
+ "code": "rm",
+ "name": "retorrománico"
+ },
+ "rof": {
+ "code": "rof",
+ "name": "rombo"
+ },
+ "ro": {
+ "code": "ro",
+ "name": "rumano"
+ },
+ "ru": {
+ "code": "ru",
+ "name": "ruso"
+ },
+ "rwk": {
+ "code": "rwk",
+ "name": "rwa"
+ },
+ "saq": {
+ "code": "saq",
+ "name": "samburu"
+ },
+ "se": {
+ "code": "se",
+ "name": "sami septentrional"
+ },
+ "sg": {
+ "code": "sg",
+ "name": "sango"
+ },
+ "sbp": {
+ "code": "sbp",
+ "name": "sangu"
+ },
+ "seh": {
+ "code": "seh",
+ "name": "sena"
+ },
+ "sr": {
+ "code": "sr",
+ "name": "serbio"
+ },
+ "ksb": {
+ "code": "ksb",
+ "name": "shambala"
+ },
+ "sn": {
+ "code": "sn",
+ "name": "shona"
+ },
+ "xog": {
+ "code": "xog",
+ "name": "soga"
+ },
+ "so": {
+ "code": "so",
+ "name": "somalí"
+ },
+ "dsb": {
+ "code": "dsb",
+ "name": "sorbio inferior"
+ },
+ "hsb": {
+ "code": "hsb",
+ "name": "sorbio superior"
+ },
+ "sv": {
+ "code": "sv",
+ "name": "sueco"
+ },
+ "sw": {
+ "code": "sw",
+ "name": "swahili"
+ },
+ "swc": {
+ "code": "swc",
+ "name": "swahili del Congo"
+ },
+ "th": {
+ "code": "th",
+ "name": "tailandés"
+ },
+ "dav": {
+ "code": "dav",
+ "name": "taita"
+ },
+ "zgh": {
+ "code": "zgh",
+ "name": "tamazight"
+ },
+ "tzm": {
+ "code": "tzm",
+ "name": "tamazight del Marruecos Central"
+ },
+ "ta": {
+ "code": "ta",
+ "name": "tamil"
+ },
+ "twq": {
+ "code": "twq",
+ "name": "tasawaq"
+ },
+ "shi": {
+ "code": "shi",
+ "name": "tashelhit"
+ },
+ "te": {
+ "code": "te",
+ "name": "telugu"
+ },
+ "teo": {
+ "code": "teo",
+ "name": "teso"
+ },
+ "bo": {
+ "code": "bo",
+ "name": "tibetano"
+ },
+ "ti": {
+ "code": "ti",
+ "name": "tigriña"
+ },
+ "to": {
+ "code": "to",
+ "name": "tongano"
+ },
+ "tr": {
+ "code": "tr",
+ "name": "turco"
+ },
+ "uk": {
+ "code": "uk",
+ "name": "ucraniano"
+ },
+ "ug": {
+ "code": "ug",
+ "name": "uigur"
+ },
+ "ur": {
+ "code": "ur",
+ "name": "urdu"
+ },
+ "uz": {
+ "code": "uz",
+ "name": "uzbeko"
+ },
+ "vai": {
+ "code": "vai",
+ "name": "Vai"
+ },
+ "eu": {
+ "code": "eu",
+ "name": "vasco"
+ },
+ "vi": {
+ "code": "vi",
+ "name": "vietnamita"
+ },
+ "wae": {
+ "code": "wae",
+ "name": "walser"
+ },
+ "yav": {
+ "code": "yav",
+ "name": "yangben"
+ },
+ "yo": {
+ "code": "yo",
+ "name": "yoruba"
+ },
+ "dje": {
+ "code": "dje",
+ "name": "zarma"
+ },
+ "zu": {
+ "code": "zu",
+ "name": "zulú"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/language/es-PR.json b/library/intl/resources/language/es-PR.json
new file mode 100644
index 000000000..afeb6b6b4
--- /dev/null
+++ b/library/intl/resources/language/es-PR.json
@@ -0,0 +1,738 @@
+{
+ "af": {
+ "code": "af",
+ "name": "afrikáans"
+ },
+ "agq": {
+ "code": "agq",
+ "name": "aghem"
+ },
+ "ak": {
+ "code": "ak",
+ "name": "akan"
+ },
+ "sq": {
+ "code": "sq",
+ "name": "albanés"
+ },
+ "de": {
+ "code": "de",
+ "name": "alemán"
+ },
+ "gsw": {
+ "code": "gsw",
+ "name": "alemán (Suiza)"
+ },
+ "de-AT": {
+ "code": "de-AT",
+ "name": "alemán austríaco"
+ },
+ "de-CH": {
+ "code": "de-CH",
+ "name": "alto alemán de Suiza"
+ },
+ "am": {
+ "code": "am",
+ "name": "amárico"
+ },
+ "ar": {
+ "code": "ar",
+ "name": "árabe"
+ },
+ "ar-001": {
+ "code": "ar-001",
+ "name": "árabe estándar moderno"
+ },
+ "hy": {
+ "code": "hy",
+ "name": "armenio"
+ },
+ "ast": {
+ "code": "ast",
+ "name": "asturiano"
+ },
+ "asa": {
+ "code": "asa",
+ "name": "asu"
+ },
+ "az": {
+ "code": "az",
+ "name": "azerbaiyano"
+ },
+ "ksf": {
+ "code": "ksf",
+ "name": "bafia"
+ },
+ "bm": {
+ "code": "bm",
+ "name": "bambara"
+ },
+ "bas": {
+ "code": "bas",
+ "name": "basa"
+ },
+ "bez": {
+ "code": "bez",
+ "name": "bena"
+ },
+ "bn": {
+ "code": "bn",
+ "name": "bengalí"
+ },
+ "be": {
+ "code": "be",
+ "name": "bielorruso"
+ },
+ "my": {
+ "code": "my",
+ "name": "birmano"
+ },
+ "brx": {
+ "code": "brx",
+ "name": "bodo"
+ },
+ "nb": {
+ "code": "nb",
+ "name": "bokmal noruego"
+ },
+ "bs": {
+ "code": "bs",
+ "name": "bosnio"
+ },
+ "br": {
+ "code": "br",
+ "name": "bretón"
+ },
+ "bg": {
+ "code": "bg",
+ "name": "búlgaro"
+ },
+ "kab": {
+ "code": "kab",
+ "name": "cabila"
+ },
+ "ks": {
+ "code": "ks",
+ "name": "cachemiro"
+ },
+ "kn": {
+ "code": "kn",
+ "name": "canarés"
+ },
+ "ca": {
+ "code": "ca",
+ "name": "catalán"
+ },
+ "cs": {
+ "code": "cs",
+ "name": "checo"
+ },
+ "chr": {
+ "code": "chr",
+ "name": "cheroqui"
+ },
+ "cgg": {
+ "code": "cgg",
+ "name": "chiga"
+ },
+ "zh": {
+ "code": "zh",
+ "name": "chino"
+ },
+ "zh-Hans": {
+ "code": "zh-Hans",
+ "name": "chino simplificado"
+ },
+ "zh-Hant": {
+ "code": "zh-Hant",
+ "name": "chino tradicional"
+ },
+ "si": {
+ "code": "si",
+ "name": "cingalés"
+ },
+ "ko": {
+ "code": "ko",
+ "name": "coreano"
+ },
+ "kea": {
+ "code": "kea",
+ "name": "criollo caboverdiano"
+ },
+ "mfe": {
+ "code": "mfe",
+ "name": "criollo mauriciano"
+ },
+ "hr": {
+ "code": "hr",
+ "name": "croata"
+ },
+ "da": {
+ "code": "da",
+ "name": "danés"
+ },
+ "dz": {
+ "code": "dz",
+ "name": "dzongkha"
+ },
+ "ebu": {
+ "code": "ebu",
+ "name": "embu"
+ },
+ "sk": {
+ "code": "sk",
+ "name": "eslovaco"
+ },
+ "sl": {
+ "code": "sl",
+ "name": "esloveno"
+ },
+ "es": {
+ "code": "es",
+ "name": "español"
+ },
+ "es-ES": {
+ "code": "es-ES",
+ "name": "español de España"
+ },
+ "es-MX": {
+ "code": "es-MX",
+ "name": "español de México"
+ },
+ "eo": {
+ "code": "eo",
+ "name": "esperanto"
+ },
+ "et": {
+ "code": "et",
+ "name": "estonio"
+ },
+ "ee": {
+ "code": "ee",
+ "name": "ewé"
+ },
+ "ewo": {
+ "code": "ewo",
+ "name": "ewondo"
+ },
+ "fo": {
+ "code": "fo",
+ "name": "feroés"
+ },
+ "fil": {
+ "code": "fil",
+ "name": "filipino"
+ },
+ "fi": {
+ "code": "fi",
+ "name": "finés"
+ },
+ "nl-BE": {
+ "code": "nl-BE",
+ "name": "flamenco"
+ },
+ "fr": {
+ "code": "fr",
+ "name": "francés"
+ },
+ "fr-CA": {
+ "code": "fr-CA",
+ "name": "francés canadiense"
+ },
+ "fr-CH": {
+ "code": "fr-CH",
+ "name": "francés suizo"
+ },
+ "fy": {
+ "code": "fy",
+ "name": "frisón occidental"
+ },
+ "fur": {
+ "code": "fur",
+ "name": "friulano"
+ },
+ "ff": {
+ "code": "ff",
+ "name": "fula"
+ },
+ "gd": {
+ "code": "gd",
+ "name": "gaélico escocés"
+ },
+ "cy": {
+ "code": "cy",
+ "name": "galés"
+ },
+ "gl": {
+ "code": "gl",
+ "name": "gallego"
+ },
+ "lg": {
+ "code": "lg",
+ "name": "ganda"
+ },
+ "ka": {
+ "code": "ka",
+ "name": "georgiano"
+ },
+ "el": {
+ "code": "el",
+ "name": "griego"
+ },
+ "kl": {
+ "code": "kl",
+ "name": "groenlandés"
+ },
+ "gu": {
+ "code": "gu",
+ "name": "gujarati"
+ },
+ "guz": {
+ "code": "guz",
+ "name": "gusii"
+ },
+ "ha": {
+ "code": "ha",
+ "name": "hausa"
+ },
+ "he": {
+ "code": "he",
+ "name": "hebreo"
+ },
+ "hi": {
+ "code": "hi",
+ "name": "hindi"
+ },
+ "hu": {
+ "code": "hu",
+ "name": "húngaro"
+ },
+ "id": {
+ "code": "id",
+ "name": "indonesio"
+ },
+ "en": {
+ "code": "en",
+ "name": "inglés"
+ },
+ "en-AU": {
+ "code": "en-AU",
+ "name": "inglés australiano"
+ },
+ "en-GB": {
+ "code": "en-GB",
+ "name": "inglés británico"
+ },
+ "en-CA": {
+ "code": "en-CA",
+ "name": "inglés canadiense"
+ },
+ "en-US": {
+ "code": "en-US",
+ "name": "inglés estadounidense"
+ },
+ "ga": {
+ "code": "ga",
+ "name": "irlandés"
+ },
+ "is": {
+ "code": "is",
+ "name": "islandés"
+ },
+ "it": {
+ "code": "it",
+ "name": "italiano"
+ },
+ "ja": {
+ "code": "ja",
+ "name": "japonés"
+ },
+ "km": {
+ "code": "km",
+ "name": "jemer"
+ },
+ "dyo": {
+ "code": "dyo",
+ "name": "jola-fonyi"
+ },
+ "kln": {
+ "code": "kln",
+ "name": "kalenjin"
+ },
+ "kam": {
+ "code": "kam",
+ "name": "kamba"
+ },
+ "kk": {
+ "code": "kk",
+ "name": "kazajo"
+ },
+ "ki": {
+ "code": "ki",
+ "name": "kikuyu"
+ },
+ "ky": {
+ "code": "ky",
+ "name": "kirguís"
+ },
+ "rn": {
+ "code": "rn",
+ "name": "kiroundi"
+ },
+ "vun": {
+ "code": "vun",
+ "name": "kivunjo"
+ },
+ "ksh": {
+ "code": "ksh",
+ "name": "kölsch"
+ },
+ "khq": {
+ "code": "khq",
+ "name": "koyra chiini"
+ },
+ "ses": {
+ "code": "ses",
+ "name": "koyraboro senni"
+ },
+ "nmg": {
+ "code": "nmg",
+ "name": "kwasio"
+ },
+ "lag": {
+ "code": "lag",
+ "name": "langi"
+ },
+ "lo": {
+ "code": "lo",
+ "name": "laosiano"
+ },
+ "lv": {
+ "code": "lv",
+ "name": "letón"
+ },
+ "ln": {
+ "code": "ln",
+ "name": "lingala"
+ },
+ "lt": {
+ "code": "lt",
+ "name": "lituano"
+ },
+ "lu": {
+ "code": "lu",
+ "name": "luba-katanga"
+ },
+ "luo": {
+ "code": "luo",
+ "name": "Luo"
+ },
+ "lb": {
+ "code": "lb",
+ "name": "luxemburgués"
+ },
+ "luy": {
+ "code": "luy",
+ "name": "luyia"
+ },
+ "mk": {
+ "code": "mk",
+ "name": "macedonio"
+ },
+ "jmc": {
+ "code": "jmc",
+ "name": "machame"
+ },
+ "mgh": {
+ "code": "mgh",
+ "name": "makhuwa-meetto"
+ },
+ "kde": {
+ "code": "kde",
+ "name": "makonde"
+ },
+ "ml": {
+ "code": "ml",
+ "name": "malayalam"
+ },
+ "ms": {
+ "code": "ms",
+ "name": "malayo"
+ },
+ "mg": {
+ "code": "mg",
+ "name": "malgache"
+ },
+ "mt": {
+ "code": "mt",
+ "name": "maltés"
+ },
+ "mr": {
+ "code": "mr",
+ "name": "maratí"
+ },
+ "mas": {
+ "code": "mas",
+ "name": "masái"
+ },
+ "mer": {
+ "code": "mer",
+ "name": "meru"
+ },
+ "ro-MD": {
+ "code": "ro-MD",
+ "name": "moldavo"
+ },
+ "mn": {
+ "code": "mn",
+ "name": "mongol"
+ },
+ "mua": {
+ "code": "mua",
+ "name": "mundang"
+ },
+ "naq": {
+ "code": "naq",
+ "name": "nama"
+ },
+ "nd": {
+ "code": "nd",
+ "name": "ndebele septentrional"
+ },
+ "nl": {
+ "code": "nl",
+ "name": "neerlandés"
+ },
+ "ne": {
+ "code": "ne",
+ "name": "nepalí"
+ },
+ "jgo": {
+ "code": "jgo",
+ "name": "ngomba"
+ },
+ "nus": {
+ "code": "nus",
+ "name": "nuer"
+ },
+ "nyn": {
+ "code": "nyn",
+ "name": "nyankole"
+ },
+ "nn": {
+ "code": "nn",
+ "name": "nynorsk noruego"
+ },
+ "or": {
+ "code": "or",
+ "name": "oriya"
+ },
+ "ps": {
+ "code": "ps",
+ "name": "pastún"
+ },
+ "fa": {
+ "code": "fa",
+ "name": "persa"
+ },
+ "pl": {
+ "code": "pl",
+ "name": "polaco"
+ },
+ "pt": {
+ "code": "pt",
+ "name": "portugués"
+ },
+ "pt-BR": {
+ "code": "pt-BR",
+ "name": "portugués de Brasil"
+ },
+ "pt-PT": {
+ "code": "pt-PT",
+ "name": "portugués de Portugal"
+ },
+ "pa": {
+ "code": "pa",
+ "name": "punjabí"
+ },
+ "rm": {
+ "code": "rm",
+ "name": "retorrománico"
+ },
+ "rof": {
+ "code": "rof",
+ "name": "rombo"
+ },
+ "ro": {
+ "code": "ro",
+ "name": "rumano"
+ },
+ "ru": {
+ "code": "ru",
+ "name": "ruso"
+ },
+ "rwk": {
+ "code": "rwk",
+ "name": "rwa"
+ },
+ "saq": {
+ "code": "saq",
+ "name": "samburu"
+ },
+ "se": {
+ "code": "se",
+ "name": "sami septentrional"
+ },
+ "sg": {
+ "code": "sg",
+ "name": "sango"
+ },
+ "sbp": {
+ "code": "sbp",
+ "name": "sangu"
+ },
+ "seh": {
+ "code": "seh",
+ "name": "sena"
+ },
+ "sr": {
+ "code": "sr",
+ "name": "serbio"
+ },
+ "ksb": {
+ "code": "ksb",
+ "name": "shambala"
+ },
+ "sn": {
+ "code": "sn",
+ "name": "shona"
+ },
+ "xog": {
+ "code": "xog",
+ "name": "soga"
+ },
+ "so": {
+ "code": "so",
+ "name": "somalí"
+ },
+ "dsb": {
+ "code": "dsb",
+ "name": "sorbio inferior"
+ },
+ "hsb": {
+ "code": "hsb",
+ "name": "sorbio superior"
+ },
+ "sv": {
+ "code": "sv",
+ "name": "sueco"
+ },
+ "sw": {
+ "code": "sw",
+ "name": "swahili"
+ },
+ "swc": {
+ "code": "swc",
+ "name": "swahili del Congo"
+ },
+ "th": {
+ "code": "th",
+ "name": "tailandés"
+ },
+ "dav": {
+ "code": "dav",
+ "name": "taita"
+ },
+ "zgh": {
+ "code": "zgh",
+ "name": "tamazight"
+ },
+ "tzm": {
+ "code": "tzm",
+ "name": "tamazight del Marruecos Central"
+ },
+ "ta": {
+ "code": "ta",
+ "name": "tamil"
+ },
+ "twq": {
+ "code": "twq",
+ "name": "tasawaq"
+ },
+ "shi": {
+ "code": "shi",
+ "name": "tashelhit"
+ },
+ "te": {
+ "code": "te",
+ "name": "telugu"
+ },
+ "teo": {
+ "code": "teo",
+ "name": "teso"
+ },
+ "bo": {
+ "code": "bo",
+ "name": "tibetano"
+ },
+ "ti": {
+ "code": "ti",
+ "name": "tigriña"
+ },
+ "to": {
+ "code": "to",
+ "name": "tongano"
+ },
+ "tr": {
+ "code": "tr",
+ "name": "turco"
+ },
+ "uk": {
+ "code": "uk",
+ "name": "ucraniano"
+ },
+ "ug": {
+ "code": "ug",
+ "name": "uigur"
+ },
+ "ur": {
+ "code": "ur",
+ "name": "urdu"
+ },
+ "uz": {
+ "code": "uz",
+ "name": "uzbeko"
+ },
+ "vai": {
+ "code": "vai",
+ "name": "Vai"
+ },
+ "eu": {
+ "code": "eu",
+ "name": "vasco"
+ },
+ "vi": {
+ "code": "vi",
+ "name": "vietnamita"
+ },
+ "wae": {
+ "code": "wae",
+ "name": "walser"
+ },
+ "yav": {
+ "code": "yav",
+ "name": "yangben"
+ },
+ "yo": {
+ "code": "yo",
+ "name": "yoruba"
+ },
+ "dje": {
+ "code": "dje",
+ "name": "zarma"
+ },
+ "zu": {
+ "code": "zu",
+ "name": "zulú"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/language/es-PY.json b/library/intl/resources/language/es-PY.json
new file mode 100644
index 000000000..afeb6b6b4
--- /dev/null
+++ b/library/intl/resources/language/es-PY.json
@@ -0,0 +1,738 @@
+{
+ "af": {
+ "code": "af",
+ "name": "afrikáans"
+ },
+ "agq": {
+ "code": "agq",
+ "name": "aghem"
+ },
+ "ak": {
+ "code": "ak",
+ "name": "akan"
+ },
+ "sq": {
+ "code": "sq",
+ "name": "albanés"
+ },
+ "de": {
+ "code": "de",
+ "name": "alemán"
+ },
+ "gsw": {
+ "code": "gsw",
+ "name": "alemán (Suiza)"
+ },
+ "de-AT": {
+ "code": "de-AT",
+ "name": "alemán austríaco"
+ },
+ "de-CH": {
+ "code": "de-CH",
+ "name": "alto alemán de Suiza"
+ },
+ "am": {
+ "code": "am",
+ "name": "amárico"
+ },
+ "ar": {
+ "code": "ar",
+ "name": "árabe"
+ },
+ "ar-001": {
+ "code": "ar-001",
+ "name": "árabe estándar moderno"
+ },
+ "hy": {
+ "code": "hy",
+ "name": "armenio"
+ },
+ "ast": {
+ "code": "ast",
+ "name": "asturiano"
+ },
+ "asa": {
+ "code": "asa",
+ "name": "asu"
+ },
+ "az": {
+ "code": "az",
+ "name": "azerbaiyano"
+ },
+ "ksf": {
+ "code": "ksf",
+ "name": "bafia"
+ },
+ "bm": {
+ "code": "bm",
+ "name": "bambara"
+ },
+ "bas": {
+ "code": "bas",
+ "name": "basa"
+ },
+ "bez": {
+ "code": "bez",
+ "name": "bena"
+ },
+ "bn": {
+ "code": "bn",
+ "name": "bengalí"
+ },
+ "be": {
+ "code": "be",
+ "name": "bielorruso"
+ },
+ "my": {
+ "code": "my",
+ "name": "birmano"
+ },
+ "brx": {
+ "code": "brx",
+ "name": "bodo"
+ },
+ "nb": {
+ "code": "nb",
+ "name": "bokmal noruego"
+ },
+ "bs": {
+ "code": "bs",
+ "name": "bosnio"
+ },
+ "br": {
+ "code": "br",
+ "name": "bretón"
+ },
+ "bg": {
+ "code": "bg",
+ "name": "búlgaro"
+ },
+ "kab": {
+ "code": "kab",
+ "name": "cabila"
+ },
+ "ks": {
+ "code": "ks",
+ "name": "cachemiro"
+ },
+ "kn": {
+ "code": "kn",
+ "name": "canarés"
+ },
+ "ca": {
+ "code": "ca",
+ "name": "catalán"
+ },
+ "cs": {
+ "code": "cs",
+ "name": "checo"
+ },
+ "chr": {
+ "code": "chr",
+ "name": "cheroqui"
+ },
+ "cgg": {
+ "code": "cgg",
+ "name": "chiga"
+ },
+ "zh": {
+ "code": "zh",
+ "name": "chino"
+ },
+ "zh-Hans": {
+ "code": "zh-Hans",
+ "name": "chino simplificado"
+ },
+ "zh-Hant": {
+ "code": "zh-Hant",
+ "name": "chino tradicional"
+ },
+ "si": {
+ "code": "si",
+ "name": "cingalés"
+ },
+ "ko": {
+ "code": "ko",
+ "name": "coreano"
+ },
+ "kea": {
+ "code": "kea",
+ "name": "criollo caboverdiano"
+ },
+ "mfe": {
+ "code": "mfe",
+ "name": "criollo mauriciano"
+ },
+ "hr": {
+ "code": "hr",
+ "name": "croata"
+ },
+ "da": {
+ "code": "da",
+ "name": "danés"
+ },
+ "dz": {
+ "code": "dz",
+ "name": "dzongkha"
+ },
+ "ebu": {
+ "code": "ebu",
+ "name": "embu"
+ },
+ "sk": {
+ "code": "sk",
+ "name": "eslovaco"
+ },
+ "sl": {
+ "code": "sl",
+ "name": "esloveno"
+ },
+ "es": {
+ "code": "es",
+ "name": "español"
+ },
+ "es-ES": {
+ "code": "es-ES",
+ "name": "español de España"
+ },
+ "es-MX": {
+ "code": "es-MX",
+ "name": "español de México"
+ },
+ "eo": {
+ "code": "eo",
+ "name": "esperanto"
+ },
+ "et": {
+ "code": "et",
+ "name": "estonio"
+ },
+ "ee": {
+ "code": "ee",
+ "name": "ewé"
+ },
+ "ewo": {
+ "code": "ewo",
+ "name": "ewondo"
+ },
+ "fo": {
+ "code": "fo",
+ "name": "feroés"
+ },
+ "fil": {
+ "code": "fil",
+ "name": "filipino"
+ },
+ "fi": {
+ "code": "fi",
+ "name": "finés"
+ },
+ "nl-BE": {
+ "code": "nl-BE",
+ "name": "flamenco"
+ },
+ "fr": {
+ "code": "fr",
+ "name": "francés"
+ },
+ "fr-CA": {
+ "code": "fr-CA",
+ "name": "francés canadiense"
+ },
+ "fr-CH": {
+ "code": "fr-CH",
+ "name": "francés suizo"
+ },
+ "fy": {
+ "code": "fy",
+ "name": "frisón occidental"
+ },
+ "fur": {
+ "code": "fur",
+ "name": "friulano"
+ },
+ "ff": {
+ "code": "ff",
+ "name": "fula"
+ },
+ "gd": {
+ "code": "gd",
+ "name": "gaélico escocés"
+ },
+ "cy": {
+ "code": "cy",
+ "name": "galés"
+ },
+ "gl": {
+ "code": "gl",
+ "name": "gallego"
+ },
+ "lg": {
+ "code": "lg",
+ "name": "ganda"
+ },
+ "ka": {
+ "code": "ka",
+ "name": "georgiano"
+ },
+ "el": {
+ "code": "el",
+ "name": "griego"
+ },
+ "kl": {
+ "code": "kl",
+ "name": "groenlandés"
+ },
+ "gu": {
+ "code": "gu",
+ "name": "gujarati"
+ },
+ "guz": {
+ "code": "guz",
+ "name": "gusii"
+ },
+ "ha": {
+ "code": "ha",
+ "name": "hausa"
+ },
+ "he": {
+ "code": "he",
+ "name": "hebreo"
+ },
+ "hi": {
+ "code": "hi",
+ "name": "hindi"
+ },
+ "hu": {
+ "code": "hu",
+ "name": "húngaro"
+ },
+ "id": {
+ "code": "id",
+ "name": "indonesio"
+ },
+ "en": {
+ "code": "en",
+ "name": "inglés"
+ },
+ "en-AU": {
+ "code": "en-AU",
+ "name": "inglés australiano"
+ },
+ "en-GB": {
+ "code": "en-GB",
+ "name": "inglés británico"
+ },
+ "en-CA": {
+ "code": "en-CA",
+ "name": "inglés canadiense"
+ },
+ "en-US": {
+ "code": "en-US",
+ "name": "inglés estadounidense"
+ },
+ "ga": {
+ "code": "ga",
+ "name": "irlandés"
+ },
+ "is": {
+ "code": "is",
+ "name": "islandés"
+ },
+ "it": {
+ "code": "it",
+ "name": "italiano"
+ },
+ "ja": {
+ "code": "ja",
+ "name": "japonés"
+ },
+ "km": {
+ "code": "km",
+ "name": "jemer"
+ },
+ "dyo": {
+ "code": "dyo",
+ "name": "jola-fonyi"
+ },
+ "kln": {
+ "code": "kln",
+ "name": "kalenjin"
+ },
+ "kam": {
+ "code": "kam",
+ "name": "kamba"
+ },
+ "kk": {
+ "code": "kk",
+ "name": "kazajo"
+ },
+ "ki": {
+ "code": "ki",
+ "name": "kikuyu"
+ },
+ "ky": {
+ "code": "ky",
+ "name": "kirguís"
+ },
+ "rn": {
+ "code": "rn",
+ "name": "kiroundi"
+ },
+ "vun": {
+ "code": "vun",
+ "name": "kivunjo"
+ },
+ "ksh": {
+ "code": "ksh",
+ "name": "kölsch"
+ },
+ "khq": {
+ "code": "khq",
+ "name": "koyra chiini"
+ },
+ "ses": {
+ "code": "ses",
+ "name": "koyraboro senni"
+ },
+ "nmg": {
+ "code": "nmg",
+ "name": "kwasio"
+ },
+ "lag": {
+ "code": "lag",
+ "name": "langi"
+ },
+ "lo": {
+ "code": "lo",
+ "name": "laosiano"
+ },
+ "lv": {
+ "code": "lv",
+ "name": "letón"
+ },
+ "ln": {
+ "code": "ln",
+ "name": "lingala"
+ },
+ "lt": {
+ "code": "lt",
+ "name": "lituano"
+ },
+ "lu": {
+ "code": "lu",
+ "name": "luba-katanga"
+ },
+ "luo": {
+ "code": "luo",
+ "name": "Luo"
+ },
+ "lb": {
+ "code": "lb",
+ "name": "luxemburgués"
+ },
+ "luy": {
+ "code": "luy",
+ "name": "luyia"
+ },
+ "mk": {
+ "code": "mk",
+ "name": "macedonio"
+ },
+ "jmc": {
+ "code": "jmc",
+ "name": "machame"
+ },
+ "mgh": {
+ "code": "mgh",
+ "name": "makhuwa-meetto"
+ },
+ "kde": {
+ "code": "kde",
+ "name": "makonde"
+ },
+ "ml": {
+ "code": "ml",
+ "name": "malayalam"
+ },
+ "ms": {
+ "code": "ms",
+ "name": "malayo"
+ },
+ "mg": {
+ "code": "mg",
+ "name": "malgache"
+ },
+ "mt": {
+ "code": "mt",
+ "name": "maltés"
+ },
+ "mr": {
+ "code": "mr",
+ "name": "maratí"
+ },
+ "mas": {
+ "code": "mas",
+ "name": "masái"
+ },
+ "mer": {
+ "code": "mer",
+ "name": "meru"
+ },
+ "ro-MD": {
+ "code": "ro-MD",
+ "name": "moldavo"
+ },
+ "mn": {
+ "code": "mn",
+ "name": "mongol"
+ },
+ "mua": {
+ "code": "mua",
+ "name": "mundang"
+ },
+ "naq": {
+ "code": "naq",
+ "name": "nama"
+ },
+ "nd": {
+ "code": "nd",
+ "name": "ndebele septentrional"
+ },
+ "nl": {
+ "code": "nl",
+ "name": "neerlandés"
+ },
+ "ne": {
+ "code": "ne",
+ "name": "nepalí"
+ },
+ "jgo": {
+ "code": "jgo",
+ "name": "ngomba"
+ },
+ "nus": {
+ "code": "nus",
+ "name": "nuer"
+ },
+ "nyn": {
+ "code": "nyn",
+ "name": "nyankole"
+ },
+ "nn": {
+ "code": "nn",
+ "name": "nynorsk noruego"
+ },
+ "or": {
+ "code": "or",
+ "name": "oriya"
+ },
+ "ps": {
+ "code": "ps",
+ "name": "pastún"
+ },
+ "fa": {
+ "code": "fa",
+ "name": "persa"
+ },
+ "pl": {
+ "code": "pl",
+ "name": "polaco"
+ },
+ "pt": {
+ "code": "pt",
+ "name": "portugués"
+ },
+ "pt-BR": {
+ "code": "pt-BR",
+ "name": "portugués de Brasil"
+ },
+ "pt-PT": {
+ "code": "pt-PT",
+ "name": "portugués de Portugal"
+ },
+ "pa": {
+ "code": "pa",
+ "name": "punjabí"
+ },
+ "rm": {
+ "code": "rm",
+ "name": "retorrománico"
+ },
+ "rof": {
+ "code": "rof",
+ "name": "rombo"
+ },
+ "ro": {
+ "code": "ro",
+ "name": "rumano"
+ },
+ "ru": {
+ "code": "ru",
+ "name": "ruso"
+ },
+ "rwk": {
+ "code": "rwk",
+ "name": "rwa"
+ },
+ "saq": {
+ "code": "saq",
+ "name": "samburu"
+ },
+ "se": {
+ "code": "se",
+ "name": "sami septentrional"
+ },
+ "sg": {
+ "code": "sg",
+ "name": "sango"
+ },
+ "sbp": {
+ "code": "sbp",
+ "name": "sangu"
+ },
+ "seh": {
+ "code": "seh",
+ "name": "sena"
+ },
+ "sr": {
+ "code": "sr",
+ "name": "serbio"
+ },
+ "ksb": {
+ "code": "ksb",
+ "name": "shambala"
+ },
+ "sn": {
+ "code": "sn",
+ "name": "shona"
+ },
+ "xog": {
+ "code": "xog",
+ "name": "soga"
+ },
+ "so": {
+ "code": "so",
+ "name": "somalí"
+ },
+ "dsb": {
+ "code": "dsb",
+ "name": "sorbio inferior"
+ },
+ "hsb": {
+ "code": "hsb",
+ "name": "sorbio superior"
+ },
+ "sv": {
+ "code": "sv",
+ "name": "sueco"
+ },
+ "sw": {
+ "code": "sw",
+ "name": "swahili"
+ },
+ "swc": {
+ "code": "swc",
+ "name": "swahili del Congo"
+ },
+ "th": {
+ "code": "th",
+ "name": "tailandés"
+ },
+ "dav": {
+ "code": "dav",
+ "name": "taita"
+ },
+ "zgh": {
+ "code": "zgh",
+ "name": "tamazight"
+ },
+ "tzm": {
+ "code": "tzm",
+ "name": "tamazight del Marruecos Central"
+ },
+ "ta": {
+ "code": "ta",
+ "name": "tamil"
+ },
+ "twq": {
+ "code": "twq",
+ "name": "tasawaq"
+ },
+ "shi": {
+ "code": "shi",
+ "name": "tashelhit"
+ },
+ "te": {
+ "code": "te",
+ "name": "telugu"
+ },
+ "teo": {
+ "code": "teo",
+ "name": "teso"
+ },
+ "bo": {
+ "code": "bo",
+ "name": "tibetano"
+ },
+ "ti": {
+ "code": "ti",
+ "name": "tigriña"
+ },
+ "to": {
+ "code": "to",
+ "name": "tongano"
+ },
+ "tr": {
+ "code": "tr",
+ "name": "turco"
+ },
+ "uk": {
+ "code": "uk",
+ "name": "ucraniano"
+ },
+ "ug": {
+ "code": "ug",
+ "name": "uigur"
+ },
+ "ur": {
+ "code": "ur",
+ "name": "urdu"
+ },
+ "uz": {
+ "code": "uz",
+ "name": "uzbeko"
+ },
+ "vai": {
+ "code": "vai",
+ "name": "Vai"
+ },
+ "eu": {
+ "code": "eu",
+ "name": "vasco"
+ },
+ "vi": {
+ "code": "vi",
+ "name": "vietnamita"
+ },
+ "wae": {
+ "code": "wae",
+ "name": "walser"
+ },
+ "yav": {
+ "code": "yav",
+ "name": "yangben"
+ },
+ "yo": {
+ "code": "yo",
+ "name": "yoruba"
+ },
+ "dje": {
+ "code": "dje",
+ "name": "zarma"
+ },
+ "zu": {
+ "code": "zu",
+ "name": "zulú"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/language/es-SV.json b/library/intl/resources/language/es-SV.json
new file mode 100644
index 000000000..afeb6b6b4
--- /dev/null
+++ b/library/intl/resources/language/es-SV.json
@@ -0,0 +1,738 @@
+{
+ "af": {
+ "code": "af",
+ "name": "afrikáans"
+ },
+ "agq": {
+ "code": "agq",
+ "name": "aghem"
+ },
+ "ak": {
+ "code": "ak",
+ "name": "akan"
+ },
+ "sq": {
+ "code": "sq",
+ "name": "albanés"
+ },
+ "de": {
+ "code": "de",
+ "name": "alemán"
+ },
+ "gsw": {
+ "code": "gsw",
+ "name": "alemán (Suiza)"
+ },
+ "de-AT": {
+ "code": "de-AT",
+ "name": "alemán austríaco"
+ },
+ "de-CH": {
+ "code": "de-CH",
+ "name": "alto alemán de Suiza"
+ },
+ "am": {
+ "code": "am",
+ "name": "amárico"
+ },
+ "ar": {
+ "code": "ar",
+ "name": "árabe"
+ },
+ "ar-001": {
+ "code": "ar-001",
+ "name": "árabe estándar moderno"
+ },
+ "hy": {
+ "code": "hy",
+ "name": "armenio"
+ },
+ "ast": {
+ "code": "ast",
+ "name": "asturiano"
+ },
+ "asa": {
+ "code": "asa",
+ "name": "asu"
+ },
+ "az": {
+ "code": "az",
+ "name": "azerbaiyano"
+ },
+ "ksf": {
+ "code": "ksf",
+ "name": "bafia"
+ },
+ "bm": {
+ "code": "bm",
+ "name": "bambara"
+ },
+ "bas": {
+ "code": "bas",
+ "name": "basa"
+ },
+ "bez": {
+ "code": "bez",
+ "name": "bena"
+ },
+ "bn": {
+ "code": "bn",
+ "name": "bengalí"
+ },
+ "be": {
+ "code": "be",
+ "name": "bielorruso"
+ },
+ "my": {
+ "code": "my",
+ "name": "birmano"
+ },
+ "brx": {
+ "code": "brx",
+ "name": "bodo"
+ },
+ "nb": {
+ "code": "nb",
+ "name": "bokmal noruego"
+ },
+ "bs": {
+ "code": "bs",
+ "name": "bosnio"
+ },
+ "br": {
+ "code": "br",
+ "name": "bretón"
+ },
+ "bg": {
+ "code": "bg",
+ "name": "búlgaro"
+ },
+ "kab": {
+ "code": "kab",
+ "name": "cabila"
+ },
+ "ks": {
+ "code": "ks",
+ "name": "cachemiro"
+ },
+ "kn": {
+ "code": "kn",
+ "name": "canarés"
+ },
+ "ca": {
+ "code": "ca",
+ "name": "catalán"
+ },
+ "cs": {
+ "code": "cs",
+ "name": "checo"
+ },
+ "chr": {
+ "code": "chr",
+ "name": "cheroqui"
+ },
+ "cgg": {
+ "code": "cgg",
+ "name": "chiga"
+ },
+ "zh": {
+ "code": "zh",
+ "name": "chino"
+ },
+ "zh-Hans": {
+ "code": "zh-Hans",
+ "name": "chino simplificado"
+ },
+ "zh-Hant": {
+ "code": "zh-Hant",
+ "name": "chino tradicional"
+ },
+ "si": {
+ "code": "si",
+ "name": "cingalés"
+ },
+ "ko": {
+ "code": "ko",
+ "name": "coreano"
+ },
+ "kea": {
+ "code": "kea",
+ "name": "criollo caboverdiano"
+ },
+ "mfe": {
+ "code": "mfe",
+ "name": "criollo mauriciano"
+ },
+ "hr": {
+ "code": "hr",
+ "name": "croata"
+ },
+ "da": {
+ "code": "da",
+ "name": "danés"
+ },
+ "dz": {
+ "code": "dz",
+ "name": "dzongkha"
+ },
+ "ebu": {
+ "code": "ebu",
+ "name": "embu"
+ },
+ "sk": {
+ "code": "sk",
+ "name": "eslovaco"
+ },
+ "sl": {
+ "code": "sl",
+ "name": "esloveno"
+ },
+ "es": {
+ "code": "es",
+ "name": "español"
+ },
+ "es-ES": {
+ "code": "es-ES",
+ "name": "español de España"
+ },
+ "es-MX": {
+ "code": "es-MX",
+ "name": "español de México"
+ },
+ "eo": {
+ "code": "eo",
+ "name": "esperanto"
+ },
+ "et": {
+ "code": "et",
+ "name": "estonio"
+ },
+ "ee": {
+ "code": "ee",
+ "name": "ewé"
+ },
+ "ewo": {
+ "code": "ewo",
+ "name": "ewondo"
+ },
+ "fo": {
+ "code": "fo",
+ "name": "feroés"
+ },
+ "fil": {
+ "code": "fil",
+ "name": "filipino"
+ },
+ "fi": {
+ "code": "fi",
+ "name": "finés"
+ },
+ "nl-BE": {
+ "code": "nl-BE",
+ "name": "flamenco"
+ },
+ "fr": {
+ "code": "fr",
+ "name": "francés"
+ },
+ "fr-CA": {
+ "code": "fr-CA",
+ "name": "francés canadiense"
+ },
+ "fr-CH": {
+ "code": "fr-CH",
+ "name": "francés suizo"
+ },
+ "fy": {
+ "code": "fy",
+ "name": "frisón occidental"
+ },
+ "fur": {
+ "code": "fur",
+ "name": "friulano"
+ },
+ "ff": {
+ "code": "ff",
+ "name": "fula"
+ },
+ "gd": {
+ "code": "gd",
+ "name": "gaélico escocés"
+ },
+ "cy": {
+ "code": "cy",
+ "name": "galés"
+ },
+ "gl": {
+ "code": "gl",
+ "name": "gallego"
+ },
+ "lg": {
+ "code": "lg",
+ "name": "ganda"
+ },
+ "ka": {
+ "code": "ka",
+ "name": "georgiano"
+ },
+ "el": {
+ "code": "el",
+ "name": "griego"
+ },
+ "kl": {
+ "code": "kl",
+ "name": "groenlandés"
+ },
+ "gu": {
+ "code": "gu",
+ "name": "gujarati"
+ },
+ "guz": {
+ "code": "guz",
+ "name": "gusii"
+ },
+ "ha": {
+ "code": "ha",
+ "name": "hausa"
+ },
+ "he": {
+ "code": "he",
+ "name": "hebreo"
+ },
+ "hi": {
+ "code": "hi",
+ "name": "hindi"
+ },
+ "hu": {
+ "code": "hu",
+ "name": "húngaro"
+ },
+ "id": {
+ "code": "id",
+ "name": "indonesio"
+ },
+ "en": {
+ "code": "en",
+ "name": "inglés"
+ },
+ "en-AU": {
+ "code": "en-AU",
+ "name": "inglés australiano"
+ },
+ "en-GB": {
+ "code": "en-GB",
+ "name": "inglés británico"
+ },
+ "en-CA": {
+ "code": "en-CA",
+ "name": "inglés canadiense"
+ },
+ "en-US": {
+ "code": "en-US",
+ "name": "inglés estadounidense"
+ },
+ "ga": {
+ "code": "ga",
+ "name": "irlandés"
+ },
+ "is": {
+ "code": "is",
+ "name": "islandés"
+ },
+ "it": {
+ "code": "it",
+ "name": "italiano"
+ },
+ "ja": {
+ "code": "ja",
+ "name": "japonés"
+ },
+ "km": {
+ "code": "km",
+ "name": "jemer"
+ },
+ "dyo": {
+ "code": "dyo",
+ "name": "jola-fonyi"
+ },
+ "kln": {
+ "code": "kln",
+ "name": "kalenjin"
+ },
+ "kam": {
+ "code": "kam",
+ "name": "kamba"
+ },
+ "kk": {
+ "code": "kk",
+ "name": "kazajo"
+ },
+ "ki": {
+ "code": "ki",
+ "name": "kikuyu"
+ },
+ "ky": {
+ "code": "ky",
+ "name": "kirguís"
+ },
+ "rn": {
+ "code": "rn",
+ "name": "kiroundi"
+ },
+ "vun": {
+ "code": "vun",
+ "name": "kivunjo"
+ },
+ "ksh": {
+ "code": "ksh",
+ "name": "kölsch"
+ },
+ "khq": {
+ "code": "khq",
+ "name": "koyra chiini"
+ },
+ "ses": {
+ "code": "ses",
+ "name": "koyraboro senni"
+ },
+ "nmg": {
+ "code": "nmg",
+ "name": "kwasio"
+ },
+ "lag": {
+ "code": "lag",
+ "name": "langi"
+ },
+ "lo": {
+ "code": "lo",
+ "name": "laosiano"
+ },
+ "lv": {
+ "code": "lv",
+ "name": "letón"
+ },
+ "ln": {
+ "code": "ln",
+ "name": "lingala"
+ },
+ "lt": {
+ "code": "lt",
+ "name": "lituano"
+ },
+ "lu": {
+ "code": "lu",
+ "name": "luba-katanga"
+ },
+ "luo": {
+ "code": "luo",
+ "name": "Luo"
+ },
+ "lb": {
+ "code": "lb",
+ "name": "luxemburgués"
+ },
+ "luy": {
+ "code": "luy",
+ "name": "luyia"
+ },
+ "mk": {
+ "code": "mk",
+ "name": "macedonio"
+ },
+ "jmc": {
+ "code": "jmc",
+ "name": "machame"
+ },
+ "mgh": {
+ "code": "mgh",
+ "name": "makhuwa-meetto"
+ },
+ "kde": {
+ "code": "kde",
+ "name": "makonde"
+ },
+ "ml": {
+ "code": "ml",
+ "name": "malayalam"
+ },
+ "ms": {
+ "code": "ms",
+ "name": "malayo"
+ },
+ "mg": {
+ "code": "mg",
+ "name": "malgache"
+ },
+ "mt": {
+ "code": "mt",
+ "name": "maltés"
+ },
+ "mr": {
+ "code": "mr",
+ "name": "maratí"
+ },
+ "mas": {
+ "code": "mas",
+ "name": "masái"
+ },
+ "mer": {
+ "code": "mer",
+ "name": "meru"
+ },
+ "ro-MD": {
+ "code": "ro-MD",
+ "name": "moldavo"
+ },
+ "mn": {
+ "code": "mn",
+ "name": "mongol"
+ },
+ "mua": {
+ "code": "mua",
+ "name": "mundang"
+ },
+ "naq": {
+ "code": "naq",
+ "name": "nama"
+ },
+ "nd": {
+ "code": "nd",
+ "name": "ndebele septentrional"
+ },
+ "nl": {
+ "code": "nl",
+ "name": "neerlandés"
+ },
+ "ne": {
+ "code": "ne",
+ "name": "nepalí"
+ },
+ "jgo": {
+ "code": "jgo",
+ "name": "ngomba"
+ },
+ "nus": {
+ "code": "nus",
+ "name": "nuer"
+ },
+ "nyn": {
+ "code": "nyn",
+ "name": "nyankole"
+ },
+ "nn": {
+ "code": "nn",
+ "name": "nynorsk noruego"
+ },
+ "or": {
+ "code": "or",
+ "name": "oriya"
+ },
+ "ps": {
+ "code": "ps",
+ "name": "pastún"
+ },
+ "fa": {
+ "code": "fa",
+ "name": "persa"
+ },
+ "pl": {
+ "code": "pl",
+ "name": "polaco"
+ },
+ "pt": {
+ "code": "pt",
+ "name": "portugués"
+ },
+ "pt-BR": {
+ "code": "pt-BR",
+ "name": "portugués de Brasil"
+ },
+ "pt-PT": {
+ "code": "pt-PT",
+ "name": "portugués de Portugal"
+ },
+ "pa": {
+ "code": "pa",
+ "name": "punjabí"
+ },
+ "rm": {
+ "code": "rm",
+ "name": "retorrománico"
+ },
+ "rof": {
+ "code": "rof",
+ "name": "rombo"
+ },
+ "ro": {
+ "code": "ro",
+ "name": "rumano"
+ },
+ "ru": {
+ "code": "ru",
+ "name": "ruso"
+ },
+ "rwk": {
+ "code": "rwk",
+ "name": "rwa"
+ },
+ "saq": {
+ "code": "saq",
+ "name": "samburu"
+ },
+ "se": {
+ "code": "se",
+ "name": "sami septentrional"
+ },
+ "sg": {
+ "code": "sg",
+ "name": "sango"
+ },
+ "sbp": {
+ "code": "sbp",
+ "name": "sangu"
+ },
+ "seh": {
+ "code": "seh",
+ "name": "sena"
+ },
+ "sr": {
+ "code": "sr",
+ "name": "serbio"
+ },
+ "ksb": {
+ "code": "ksb",
+ "name": "shambala"
+ },
+ "sn": {
+ "code": "sn",
+ "name": "shona"
+ },
+ "xog": {
+ "code": "xog",
+ "name": "soga"
+ },
+ "so": {
+ "code": "so",
+ "name": "somalí"
+ },
+ "dsb": {
+ "code": "dsb",
+ "name": "sorbio inferior"
+ },
+ "hsb": {
+ "code": "hsb",
+ "name": "sorbio superior"
+ },
+ "sv": {
+ "code": "sv",
+ "name": "sueco"
+ },
+ "sw": {
+ "code": "sw",
+ "name": "swahili"
+ },
+ "swc": {
+ "code": "swc",
+ "name": "swahili del Congo"
+ },
+ "th": {
+ "code": "th",
+ "name": "tailandés"
+ },
+ "dav": {
+ "code": "dav",
+ "name": "taita"
+ },
+ "zgh": {
+ "code": "zgh",
+ "name": "tamazight"
+ },
+ "tzm": {
+ "code": "tzm",
+ "name": "tamazight del Marruecos Central"
+ },
+ "ta": {
+ "code": "ta",
+ "name": "tamil"
+ },
+ "twq": {
+ "code": "twq",
+ "name": "tasawaq"
+ },
+ "shi": {
+ "code": "shi",
+ "name": "tashelhit"
+ },
+ "te": {
+ "code": "te",
+ "name": "telugu"
+ },
+ "teo": {
+ "code": "teo",
+ "name": "teso"
+ },
+ "bo": {
+ "code": "bo",
+ "name": "tibetano"
+ },
+ "ti": {
+ "code": "ti",
+ "name": "tigriña"
+ },
+ "to": {
+ "code": "to",
+ "name": "tongano"
+ },
+ "tr": {
+ "code": "tr",
+ "name": "turco"
+ },
+ "uk": {
+ "code": "uk",
+ "name": "ucraniano"
+ },
+ "ug": {
+ "code": "ug",
+ "name": "uigur"
+ },
+ "ur": {
+ "code": "ur",
+ "name": "urdu"
+ },
+ "uz": {
+ "code": "uz",
+ "name": "uzbeko"
+ },
+ "vai": {
+ "code": "vai",
+ "name": "Vai"
+ },
+ "eu": {
+ "code": "eu",
+ "name": "vasco"
+ },
+ "vi": {
+ "code": "vi",
+ "name": "vietnamita"
+ },
+ "wae": {
+ "code": "wae",
+ "name": "walser"
+ },
+ "yav": {
+ "code": "yav",
+ "name": "yangben"
+ },
+ "yo": {
+ "code": "yo",
+ "name": "yoruba"
+ },
+ "dje": {
+ "code": "dje",
+ "name": "zarma"
+ },
+ "zu": {
+ "code": "zu",
+ "name": "zulú"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/language/es-US.json b/library/intl/resources/language/es-US.json
new file mode 100644
index 000000000..afeb6b6b4
--- /dev/null
+++ b/library/intl/resources/language/es-US.json
@@ -0,0 +1,738 @@
+{
+ "af": {
+ "code": "af",
+ "name": "afrikáans"
+ },
+ "agq": {
+ "code": "agq",
+ "name": "aghem"
+ },
+ "ak": {
+ "code": "ak",
+ "name": "akan"
+ },
+ "sq": {
+ "code": "sq",
+ "name": "albanés"
+ },
+ "de": {
+ "code": "de",
+ "name": "alemán"
+ },
+ "gsw": {
+ "code": "gsw",
+ "name": "alemán (Suiza)"
+ },
+ "de-AT": {
+ "code": "de-AT",
+ "name": "alemán austríaco"
+ },
+ "de-CH": {
+ "code": "de-CH",
+ "name": "alto alemán de Suiza"
+ },
+ "am": {
+ "code": "am",
+ "name": "amárico"
+ },
+ "ar": {
+ "code": "ar",
+ "name": "árabe"
+ },
+ "ar-001": {
+ "code": "ar-001",
+ "name": "árabe estándar moderno"
+ },
+ "hy": {
+ "code": "hy",
+ "name": "armenio"
+ },
+ "ast": {
+ "code": "ast",
+ "name": "asturiano"
+ },
+ "asa": {
+ "code": "asa",
+ "name": "asu"
+ },
+ "az": {
+ "code": "az",
+ "name": "azerbaiyano"
+ },
+ "ksf": {
+ "code": "ksf",
+ "name": "bafia"
+ },
+ "bm": {
+ "code": "bm",
+ "name": "bambara"
+ },
+ "bas": {
+ "code": "bas",
+ "name": "basa"
+ },
+ "bez": {
+ "code": "bez",
+ "name": "bena"
+ },
+ "bn": {
+ "code": "bn",
+ "name": "bengalí"
+ },
+ "be": {
+ "code": "be",
+ "name": "bielorruso"
+ },
+ "my": {
+ "code": "my",
+ "name": "birmano"
+ },
+ "brx": {
+ "code": "brx",
+ "name": "bodo"
+ },
+ "nb": {
+ "code": "nb",
+ "name": "bokmal noruego"
+ },
+ "bs": {
+ "code": "bs",
+ "name": "bosnio"
+ },
+ "br": {
+ "code": "br",
+ "name": "bretón"
+ },
+ "bg": {
+ "code": "bg",
+ "name": "búlgaro"
+ },
+ "kab": {
+ "code": "kab",
+ "name": "cabila"
+ },
+ "ks": {
+ "code": "ks",
+ "name": "cachemiro"
+ },
+ "kn": {
+ "code": "kn",
+ "name": "canarés"
+ },
+ "ca": {
+ "code": "ca",
+ "name": "catalán"
+ },
+ "cs": {
+ "code": "cs",
+ "name": "checo"
+ },
+ "chr": {
+ "code": "chr",
+ "name": "cheroqui"
+ },
+ "cgg": {
+ "code": "cgg",
+ "name": "chiga"
+ },
+ "zh": {
+ "code": "zh",
+ "name": "chino"
+ },
+ "zh-Hans": {
+ "code": "zh-Hans",
+ "name": "chino simplificado"
+ },
+ "zh-Hant": {
+ "code": "zh-Hant",
+ "name": "chino tradicional"
+ },
+ "si": {
+ "code": "si",
+ "name": "cingalés"
+ },
+ "ko": {
+ "code": "ko",
+ "name": "coreano"
+ },
+ "kea": {
+ "code": "kea",
+ "name": "criollo caboverdiano"
+ },
+ "mfe": {
+ "code": "mfe",
+ "name": "criollo mauriciano"
+ },
+ "hr": {
+ "code": "hr",
+ "name": "croata"
+ },
+ "da": {
+ "code": "da",
+ "name": "danés"
+ },
+ "dz": {
+ "code": "dz",
+ "name": "dzongkha"
+ },
+ "ebu": {
+ "code": "ebu",
+ "name": "embu"
+ },
+ "sk": {
+ "code": "sk",
+ "name": "eslovaco"
+ },
+ "sl": {
+ "code": "sl",
+ "name": "esloveno"
+ },
+ "es": {
+ "code": "es",
+ "name": "español"
+ },
+ "es-ES": {
+ "code": "es-ES",
+ "name": "español de España"
+ },
+ "es-MX": {
+ "code": "es-MX",
+ "name": "español de México"
+ },
+ "eo": {
+ "code": "eo",
+ "name": "esperanto"
+ },
+ "et": {
+ "code": "et",
+ "name": "estonio"
+ },
+ "ee": {
+ "code": "ee",
+ "name": "ewé"
+ },
+ "ewo": {
+ "code": "ewo",
+ "name": "ewondo"
+ },
+ "fo": {
+ "code": "fo",
+ "name": "feroés"
+ },
+ "fil": {
+ "code": "fil",
+ "name": "filipino"
+ },
+ "fi": {
+ "code": "fi",
+ "name": "finés"
+ },
+ "nl-BE": {
+ "code": "nl-BE",
+ "name": "flamenco"
+ },
+ "fr": {
+ "code": "fr",
+ "name": "francés"
+ },
+ "fr-CA": {
+ "code": "fr-CA",
+ "name": "francés canadiense"
+ },
+ "fr-CH": {
+ "code": "fr-CH",
+ "name": "francés suizo"
+ },
+ "fy": {
+ "code": "fy",
+ "name": "frisón occidental"
+ },
+ "fur": {
+ "code": "fur",
+ "name": "friulano"
+ },
+ "ff": {
+ "code": "ff",
+ "name": "fula"
+ },
+ "gd": {
+ "code": "gd",
+ "name": "gaélico escocés"
+ },
+ "cy": {
+ "code": "cy",
+ "name": "galés"
+ },
+ "gl": {
+ "code": "gl",
+ "name": "gallego"
+ },
+ "lg": {
+ "code": "lg",
+ "name": "ganda"
+ },
+ "ka": {
+ "code": "ka",
+ "name": "georgiano"
+ },
+ "el": {
+ "code": "el",
+ "name": "griego"
+ },
+ "kl": {
+ "code": "kl",
+ "name": "groenlandés"
+ },
+ "gu": {
+ "code": "gu",
+ "name": "gujarati"
+ },
+ "guz": {
+ "code": "guz",
+ "name": "gusii"
+ },
+ "ha": {
+ "code": "ha",
+ "name": "hausa"
+ },
+ "he": {
+ "code": "he",
+ "name": "hebreo"
+ },
+ "hi": {
+ "code": "hi",
+ "name": "hindi"
+ },
+ "hu": {
+ "code": "hu",
+ "name": "húngaro"
+ },
+ "id": {
+ "code": "id",
+ "name": "indonesio"
+ },
+ "en": {
+ "code": "en",
+ "name": "inglés"
+ },
+ "en-AU": {
+ "code": "en-AU",
+ "name": "inglés australiano"
+ },
+ "en-GB": {
+ "code": "en-GB",
+ "name": "inglés británico"
+ },
+ "en-CA": {
+ "code": "en-CA",
+ "name": "inglés canadiense"
+ },
+ "en-US": {
+ "code": "en-US",
+ "name": "inglés estadounidense"
+ },
+ "ga": {
+ "code": "ga",
+ "name": "irlandés"
+ },
+ "is": {
+ "code": "is",
+ "name": "islandés"
+ },
+ "it": {
+ "code": "it",
+ "name": "italiano"
+ },
+ "ja": {
+ "code": "ja",
+ "name": "japonés"
+ },
+ "km": {
+ "code": "km",
+ "name": "jemer"
+ },
+ "dyo": {
+ "code": "dyo",
+ "name": "jola-fonyi"
+ },
+ "kln": {
+ "code": "kln",
+ "name": "kalenjin"
+ },
+ "kam": {
+ "code": "kam",
+ "name": "kamba"
+ },
+ "kk": {
+ "code": "kk",
+ "name": "kazajo"
+ },
+ "ki": {
+ "code": "ki",
+ "name": "kikuyu"
+ },
+ "ky": {
+ "code": "ky",
+ "name": "kirguís"
+ },
+ "rn": {
+ "code": "rn",
+ "name": "kiroundi"
+ },
+ "vun": {
+ "code": "vun",
+ "name": "kivunjo"
+ },
+ "ksh": {
+ "code": "ksh",
+ "name": "kölsch"
+ },
+ "khq": {
+ "code": "khq",
+ "name": "koyra chiini"
+ },
+ "ses": {
+ "code": "ses",
+ "name": "koyraboro senni"
+ },
+ "nmg": {
+ "code": "nmg",
+ "name": "kwasio"
+ },
+ "lag": {
+ "code": "lag",
+ "name": "langi"
+ },
+ "lo": {
+ "code": "lo",
+ "name": "laosiano"
+ },
+ "lv": {
+ "code": "lv",
+ "name": "letón"
+ },
+ "ln": {
+ "code": "ln",
+ "name": "lingala"
+ },
+ "lt": {
+ "code": "lt",
+ "name": "lituano"
+ },
+ "lu": {
+ "code": "lu",
+ "name": "luba-katanga"
+ },
+ "luo": {
+ "code": "luo",
+ "name": "Luo"
+ },
+ "lb": {
+ "code": "lb",
+ "name": "luxemburgués"
+ },
+ "luy": {
+ "code": "luy",
+ "name": "luyia"
+ },
+ "mk": {
+ "code": "mk",
+ "name": "macedonio"
+ },
+ "jmc": {
+ "code": "jmc",
+ "name": "machame"
+ },
+ "mgh": {
+ "code": "mgh",
+ "name": "makhuwa-meetto"
+ },
+ "kde": {
+ "code": "kde",
+ "name": "makonde"
+ },
+ "ml": {
+ "code": "ml",
+ "name": "malayalam"
+ },
+ "ms": {
+ "code": "ms",
+ "name": "malayo"
+ },
+ "mg": {
+ "code": "mg",
+ "name": "malgache"
+ },
+ "mt": {
+ "code": "mt",
+ "name": "maltés"
+ },
+ "mr": {
+ "code": "mr",
+ "name": "maratí"
+ },
+ "mas": {
+ "code": "mas",
+ "name": "masái"
+ },
+ "mer": {
+ "code": "mer",
+ "name": "meru"
+ },
+ "ro-MD": {
+ "code": "ro-MD",
+ "name": "moldavo"
+ },
+ "mn": {
+ "code": "mn",
+ "name": "mongol"
+ },
+ "mua": {
+ "code": "mua",
+ "name": "mundang"
+ },
+ "naq": {
+ "code": "naq",
+ "name": "nama"
+ },
+ "nd": {
+ "code": "nd",
+ "name": "ndebele septentrional"
+ },
+ "nl": {
+ "code": "nl",
+ "name": "neerlandés"
+ },
+ "ne": {
+ "code": "ne",
+ "name": "nepalí"
+ },
+ "jgo": {
+ "code": "jgo",
+ "name": "ngomba"
+ },
+ "nus": {
+ "code": "nus",
+ "name": "nuer"
+ },
+ "nyn": {
+ "code": "nyn",
+ "name": "nyankole"
+ },
+ "nn": {
+ "code": "nn",
+ "name": "nynorsk noruego"
+ },
+ "or": {
+ "code": "or",
+ "name": "oriya"
+ },
+ "ps": {
+ "code": "ps",
+ "name": "pastún"
+ },
+ "fa": {
+ "code": "fa",
+ "name": "persa"
+ },
+ "pl": {
+ "code": "pl",
+ "name": "polaco"
+ },
+ "pt": {
+ "code": "pt",
+ "name": "portugués"
+ },
+ "pt-BR": {
+ "code": "pt-BR",
+ "name": "portugués de Brasil"
+ },
+ "pt-PT": {
+ "code": "pt-PT",
+ "name": "portugués de Portugal"
+ },
+ "pa": {
+ "code": "pa",
+ "name": "punjabí"
+ },
+ "rm": {
+ "code": "rm",
+ "name": "retorrománico"
+ },
+ "rof": {
+ "code": "rof",
+ "name": "rombo"
+ },
+ "ro": {
+ "code": "ro",
+ "name": "rumano"
+ },
+ "ru": {
+ "code": "ru",
+ "name": "ruso"
+ },
+ "rwk": {
+ "code": "rwk",
+ "name": "rwa"
+ },
+ "saq": {
+ "code": "saq",
+ "name": "samburu"
+ },
+ "se": {
+ "code": "se",
+ "name": "sami septentrional"
+ },
+ "sg": {
+ "code": "sg",
+ "name": "sango"
+ },
+ "sbp": {
+ "code": "sbp",
+ "name": "sangu"
+ },
+ "seh": {
+ "code": "seh",
+ "name": "sena"
+ },
+ "sr": {
+ "code": "sr",
+ "name": "serbio"
+ },
+ "ksb": {
+ "code": "ksb",
+ "name": "shambala"
+ },
+ "sn": {
+ "code": "sn",
+ "name": "shona"
+ },
+ "xog": {
+ "code": "xog",
+ "name": "soga"
+ },
+ "so": {
+ "code": "so",
+ "name": "somalí"
+ },
+ "dsb": {
+ "code": "dsb",
+ "name": "sorbio inferior"
+ },
+ "hsb": {
+ "code": "hsb",
+ "name": "sorbio superior"
+ },
+ "sv": {
+ "code": "sv",
+ "name": "sueco"
+ },
+ "sw": {
+ "code": "sw",
+ "name": "swahili"
+ },
+ "swc": {
+ "code": "swc",
+ "name": "swahili del Congo"
+ },
+ "th": {
+ "code": "th",
+ "name": "tailandés"
+ },
+ "dav": {
+ "code": "dav",
+ "name": "taita"
+ },
+ "zgh": {
+ "code": "zgh",
+ "name": "tamazight"
+ },
+ "tzm": {
+ "code": "tzm",
+ "name": "tamazight del Marruecos Central"
+ },
+ "ta": {
+ "code": "ta",
+ "name": "tamil"
+ },
+ "twq": {
+ "code": "twq",
+ "name": "tasawaq"
+ },
+ "shi": {
+ "code": "shi",
+ "name": "tashelhit"
+ },
+ "te": {
+ "code": "te",
+ "name": "telugu"
+ },
+ "teo": {
+ "code": "teo",
+ "name": "teso"
+ },
+ "bo": {
+ "code": "bo",
+ "name": "tibetano"
+ },
+ "ti": {
+ "code": "ti",
+ "name": "tigriña"
+ },
+ "to": {
+ "code": "to",
+ "name": "tongano"
+ },
+ "tr": {
+ "code": "tr",
+ "name": "turco"
+ },
+ "uk": {
+ "code": "uk",
+ "name": "ucraniano"
+ },
+ "ug": {
+ "code": "ug",
+ "name": "uigur"
+ },
+ "ur": {
+ "code": "ur",
+ "name": "urdu"
+ },
+ "uz": {
+ "code": "uz",
+ "name": "uzbeko"
+ },
+ "vai": {
+ "code": "vai",
+ "name": "Vai"
+ },
+ "eu": {
+ "code": "eu",
+ "name": "vasco"
+ },
+ "vi": {
+ "code": "vi",
+ "name": "vietnamita"
+ },
+ "wae": {
+ "code": "wae",
+ "name": "walser"
+ },
+ "yav": {
+ "code": "yav",
+ "name": "yangben"
+ },
+ "yo": {
+ "code": "yo",
+ "name": "yoruba"
+ },
+ "dje": {
+ "code": "dje",
+ "name": "zarma"
+ },
+ "zu": {
+ "code": "zu",
+ "name": "zulú"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/language/es-UY.json b/library/intl/resources/language/es-UY.json
new file mode 100644
index 000000000..afeb6b6b4
--- /dev/null
+++ b/library/intl/resources/language/es-UY.json
@@ -0,0 +1,738 @@
+{
+ "af": {
+ "code": "af",
+ "name": "afrikáans"
+ },
+ "agq": {
+ "code": "agq",
+ "name": "aghem"
+ },
+ "ak": {
+ "code": "ak",
+ "name": "akan"
+ },
+ "sq": {
+ "code": "sq",
+ "name": "albanés"
+ },
+ "de": {
+ "code": "de",
+ "name": "alemán"
+ },
+ "gsw": {
+ "code": "gsw",
+ "name": "alemán (Suiza)"
+ },
+ "de-AT": {
+ "code": "de-AT",
+ "name": "alemán austríaco"
+ },
+ "de-CH": {
+ "code": "de-CH",
+ "name": "alto alemán de Suiza"
+ },
+ "am": {
+ "code": "am",
+ "name": "amárico"
+ },
+ "ar": {
+ "code": "ar",
+ "name": "árabe"
+ },
+ "ar-001": {
+ "code": "ar-001",
+ "name": "árabe estándar moderno"
+ },
+ "hy": {
+ "code": "hy",
+ "name": "armenio"
+ },
+ "ast": {
+ "code": "ast",
+ "name": "asturiano"
+ },
+ "asa": {
+ "code": "asa",
+ "name": "asu"
+ },
+ "az": {
+ "code": "az",
+ "name": "azerbaiyano"
+ },
+ "ksf": {
+ "code": "ksf",
+ "name": "bafia"
+ },
+ "bm": {
+ "code": "bm",
+ "name": "bambara"
+ },
+ "bas": {
+ "code": "bas",
+ "name": "basa"
+ },
+ "bez": {
+ "code": "bez",
+ "name": "bena"
+ },
+ "bn": {
+ "code": "bn",
+ "name": "bengalí"
+ },
+ "be": {
+ "code": "be",
+ "name": "bielorruso"
+ },
+ "my": {
+ "code": "my",
+ "name": "birmano"
+ },
+ "brx": {
+ "code": "brx",
+ "name": "bodo"
+ },
+ "nb": {
+ "code": "nb",
+ "name": "bokmal noruego"
+ },
+ "bs": {
+ "code": "bs",
+ "name": "bosnio"
+ },
+ "br": {
+ "code": "br",
+ "name": "bretón"
+ },
+ "bg": {
+ "code": "bg",
+ "name": "búlgaro"
+ },
+ "kab": {
+ "code": "kab",
+ "name": "cabila"
+ },
+ "ks": {
+ "code": "ks",
+ "name": "cachemiro"
+ },
+ "kn": {
+ "code": "kn",
+ "name": "canarés"
+ },
+ "ca": {
+ "code": "ca",
+ "name": "catalán"
+ },
+ "cs": {
+ "code": "cs",
+ "name": "checo"
+ },
+ "chr": {
+ "code": "chr",
+ "name": "cheroqui"
+ },
+ "cgg": {
+ "code": "cgg",
+ "name": "chiga"
+ },
+ "zh": {
+ "code": "zh",
+ "name": "chino"
+ },
+ "zh-Hans": {
+ "code": "zh-Hans",
+ "name": "chino simplificado"
+ },
+ "zh-Hant": {
+ "code": "zh-Hant",
+ "name": "chino tradicional"
+ },
+ "si": {
+ "code": "si",
+ "name": "cingalés"
+ },
+ "ko": {
+ "code": "ko",
+ "name": "coreano"
+ },
+ "kea": {
+ "code": "kea",
+ "name": "criollo caboverdiano"
+ },
+ "mfe": {
+ "code": "mfe",
+ "name": "criollo mauriciano"
+ },
+ "hr": {
+ "code": "hr",
+ "name": "croata"
+ },
+ "da": {
+ "code": "da",
+ "name": "danés"
+ },
+ "dz": {
+ "code": "dz",
+ "name": "dzongkha"
+ },
+ "ebu": {
+ "code": "ebu",
+ "name": "embu"
+ },
+ "sk": {
+ "code": "sk",
+ "name": "eslovaco"
+ },
+ "sl": {
+ "code": "sl",
+ "name": "esloveno"
+ },
+ "es": {
+ "code": "es",
+ "name": "español"
+ },
+ "es-ES": {
+ "code": "es-ES",
+ "name": "español de España"
+ },
+ "es-MX": {
+ "code": "es-MX",
+ "name": "español de México"
+ },
+ "eo": {
+ "code": "eo",
+ "name": "esperanto"
+ },
+ "et": {
+ "code": "et",
+ "name": "estonio"
+ },
+ "ee": {
+ "code": "ee",
+ "name": "ewé"
+ },
+ "ewo": {
+ "code": "ewo",
+ "name": "ewondo"
+ },
+ "fo": {
+ "code": "fo",
+ "name": "feroés"
+ },
+ "fil": {
+ "code": "fil",
+ "name": "filipino"
+ },
+ "fi": {
+ "code": "fi",
+ "name": "finés"
+ },
+ "nl-BE": {
+ "code": "nl-BE",
+ "name": "flamenco"
+ },
+ "fr": {
+ "code": "fr",
+ "name": "francés"
+ },
+ "fr-CA": {
+ "code": "fr-CA",
+ "name": "francés canadiense"
+ },
+ "fr-CH": {
+ "code": "fr-CH",
+ "name": "francés suizo"
+ },
+ "fy": {
+ "code": "fy",
+ "name": "frisón occidental"
+ },
+ "fur": {
+ "code": "fur",
+ "name": "friulano"
+ },
+ "ff": {
+ "code": "ff",
+ "name": "fula"
+ },
+ "gd": {
+ "code": "gd",
+ "name": "gaélico escocés"
+ },
+ "cy": {
+ "code": "cy",
+ "name": "galés"
+ },
+ "gl": {
+ "code": "gl",
+ "name": "gallego"
+ },
+ "lg": {
+ "code": "lg",
+ "name": "ganda"
+ },
+ "ka": {
+ "code": "ka",
+ "name": "georgiano"
+ },
+ "el": {
+ "code": "el",
+ "name": "griego"
+ },
+ "kl": {
+ "code": "kl",
+ "name": "groenlandés"
+ },
+ "gu": {
+ "code": "gu",
+ "name": "gujarati"
+ },
+ "guz": {
+ "code": "guz",
+ "name": "gusii"
+ },
+ "ha": {
+ "code": "ha",
+ "name": "hausa"
+ },
+ "he": {
+ "code": "he",
+ "name": "hebreo"
+ },
+ "hi": {
+ "code": "hi",
+ "name": "hindi"
+ },
+ "hu": {
+ "code": "hu",
+ "name": "húngaro"
+ },
+ "id": {
+ "code": "id",
+ "name": "indonesio"
+ },
+ "en": {
+ "code": "en",
+ "name": "inglés"
+ },
+ "en-AU": {
+ "code": "en-AU",
+ "name": "inglés australiano"
+ },
+ "en-GB": {
+ "code": "en-GB",
+ "name": "inglés británico"
+ },
+ "en-CA": {
+ "code": "en-CA",
+ "name": "inglés canadiense"
+ },
+ "en-US": {
+ "code": "en-US",
+ "name": "inglés estadounidense"
+ },
+ "ga": {
+ "code": "ga",
+ "name": "irlandés"
+ },
+ "is": {
+ "code": "is",
+ "name": "islandés"
+ },
+ "it": {
+ "code": "it",
+ "name": "italiano"
+ },
+ "ja": {
+ "code": "ja",
+ "name": "japonés"
+ },
+ "km": {
+ "code": "km",
+ "name": "jemer"
+ },
+ "dyo": {
+ "code": "dyo",
+ "name": "jola-fonyi"
+ },
+ "kln": {
+ "code": "kln",
+ "name": "kalenjin"
+ },
+ "kam": {
+ "code": "kam",
+ "name": "kamba"
+ },
+ "kk": {
+ "code": "kk",
+ "name": "kazajo"
+ },
+ "ki": {
+ "code": "ki",
+ "name": "kikuyu"
+ },
+ "ky": {
+ "code": "ky",
+ "name": "kirguís"
+ },
+ "rn": {
+ "code": "rn",
+ "name": "kiroundi"
+ },
+ "vun": {
+ "code": "vun",
+ "name": "kivunjo"
+ },
+ "ksh": {
+ "code": "ksh",
+ "name": "kölsch"
+ },
+ "khq": {
+ "code": "khq",
+ "name": "koyra chiini"
+ },
+ "ses": {
+ "code": "ses",
+ "name": "koyraboro senni"
+ },
+ "nmg": {
+ "code": "nmg",
+ "name": "kwasio"
+ },
+ "lag": {
+ "code": "lag",
+ "name": "langi"
+ },
+ "lo": {
+ "code": "lo",
+ "name": "laosiano"
+ },
+ "lv": {
+ "code": "lv",
+ "name": "letón"
+ },
+ "ln": {
+ "code": "ln",
+ "name": "lingala"
+ },
+ "lt": {
+ "code": "lt",
+ "name": "lituano"
+ },
+ "lu": {
+ "code": "lu",
+ "name": "luba-katanga"
+ },
+ "luo": {
+ "code": "luo",
+ "name": "Luo"
+ },
+ "lb": {
+ "code": "lb",
+ "name": "luxemburgués"
+ },
+ "luy": {
+ "code": "luy",
+ "name": "luyia"
+ },
+ "mk": {
+ "code": "mk",
+ "name": "macedonio"
+ },
+ "jmc": {
+ "code": "jmc",
+ "name": "machame"
+ },
+ "mgh": {
+ "code": "mgh",
+ "name": "makhuwa-meetto"
+ },
+ "kde": {
+ "code": "kde",
+ "name": "makonde"
+ },
+ "ml": {
+ "code": "ml",
+ "name": "malayalam"
+ },
+ "ms": {
+ "code": "ms",
+ "name": "malayo"
+ },
+ "mg": {
+ "code": "mg",
+ "name": "malgache"
+ },
+ "mt": {
+ "code": "mt",
+ "name": "maltés"
+ },
+ "mr": {
+ "code": "mr",
+ "name": "maratí"
+ },
+ "mas": {
+ "code": "mas",
+ "name": "masái"
+ },
+ "mer": {
+ "code": "mer",
+ "name": "meru"
+ },
+ "ro-MD": {
+ "code": "ro-MD",
+ "name": "moldavo"
+ },
+ "mn": {
+ "code": "mn",
+ "name": "mongol"
+ },
+ "mua": {
+ "code": "mua",
+ "name": "mundang"
+ },
+ "naq": {
+ "code": "naq",
+ "name": "nama"
+ },
+ "nd": {
+ "code": "nd",
+ "name": "ndebele septentrional"
+ },
+ "nl": {
+ "code": "nl",
+ "name": "neerlandés"
+ },
+ "ne": {
+ "code": "ne",
+ "name": "nepalí"
+ },
+ "jgo": {
+ "code": "jgo",
+ "name": "ngomba"
+ },
+ "nus": {
+ "code": "nus",
+ "name": "nuer"
+ },
+ "nyn": {
+ "code": "nyn",
+ "name": "nyankole"
+ },
+ "nn": {
+ "code": "nn",
+ "name": "nynorsk noruego"
+ },
+ "or": {
+ "code": "or",
+ "name": "oriya"
+ },
+ "ps": {
+ "code": "ps",
+ "name": "pastún"
+ },
+ "fa": {
+ "code": "fa",
+ "name": "persa"
+ },
+ "pl": {
+ "code": "pl",
+ "name": "polaco"
+ },
+ "pt": {
+ "code": "pt",
+ "name": "portugués"
+ },
+ "pt-BR": {
+ "code": "pt-BR",
+ "name": "portugués de Brasil"
+ },
+ "pt-PT": {
+ "code": "pt-PT",
+ "name": "portugués de Portugal"
+ },
+ "pa": {
+ "code": "pa",
+ "name": "punjabí"
+ },
+ "rm": {
+ "code": "rm",
+ "name": "retorrománico"
+ },
+ "rof": {
+ "code": "rof",
+ "name": "rombo"
+ },
+ "ro": {
+ "code": "ro",
+ "name": "rumano"
+ },
+ "ru": {
+ "code": "ru",
+ "name": "ruso"
+ },
+ "rwk": {
+ "code": "rwk",
+ "name": "rwa"
+ },
+ "saq": {
+ "code": "saq",
+ "name": "samburu"
+ },
+ "se": {
+ "code": "se",
+ "name": "sami septentrional"
+ },
+ "sg": {
+ "code": "sg",
+ "name": "sango"
+ },
+ "sbp": {
+ "code": "sbp",
+ "name": "sangu"
+ },
+ "seh": {
+ "code": "seh",
+ "name": "sena"
+ },
+ "sr": {
+ "code": "sr",
+ "name": "serbio"
+ },
+ "ksb": {
+ "code": "ksb",
+ "name": "shambala"
+ },
+ "sn": {
+ "code": "sn",
+ "name": "shona"
+ },
+ "xog": {
+ "code": "xog",
+ "name": "soga"
+ },
+ "so": {
+ "code": "so",
+ "name": "somalí"
+ },
+ "dsb": {
+ "code": "dsb",
+ "name": "sorbio inferior"
+ },
+ "hsb": {
+ "code": "hsb",
+ "name": "sorbio superior"
+ },
+ "sv": {
+ "code": "sv",
+ "name": "sueco"
+ },
+ "sw": {
+ "code": "sw",
+ "name": "swahili"
+ },
+ "swc": {
+ "code": "swc",
+ "name": "swahili del Congo"
+ },
+ "th": {
+ "code": "th",
+ "name": "tailandés"
+ },
+ "dav": {
+ "code": "dav",
+ "name": "taita"
+ },
+ "zgh": {
+ "code": "zgh",
+ "name": "tamazight"
+ },
+ "tzm": {
+ "code": "tzm",
+ "name": "tamazight del Marruecos Central"
+ },
+ "ta": {
+ "code": "ta",
+ "name": "tamil"
+ },
+ "twq": {
+ "code": "twq",
+ "name": "tasawaq"
+ },
+ "shi": {
+ "code": "shi",
+ "name": "tashelhit"
+ },
+ "te": {
+ "code": "te",
+ "name": "telugu"
+ },
+ "teo": {
+ "code": "teo",
+ "name": "teso"
+ },
+ "bo": {
+ "code": "bo",
+ "name": "tibetano"
+ },
+ "ti": {
+ "code": "ti",
+ "name": "tigriña"
+ },
+ "to": {
+ "code": "to",
+ "name": "tongano"
+ },
+ "tr": {
+ "code": "tr",
+ "name": "turco"
+ },
+ "uk": {
+ "code": "uk",
+ "name": "ucraniano"
+ },
+ "ug": {
+ "code": "ug",
+ "name": "uigur"
+ },
+ "ur": {
+ "code": "ur",
+ "name": "urdu"
+ },
+ "uz": {
+ "code": "uz",
+ "name": "uzbeko"
+ },
+ "vai": {
+ "code": "vai",
+ "name": "Vai"
+ },
+ "eu": {
+ "code": "eu",
+ "name": "vasco"
+ },
+ "vi": {
+ "code": "vi",
+ "name": "vietnamita"
+ },
+ "wae": {
+ "code": "wae",
+ "name": "walser"
+ },
+ "yav": {
+ "code": "yav",
+ "name": "yangben"
+ },
+ "yo": {
+ "code": "yo",
+ "name": "yoruba"
+ },
+ "dje": {
+ "code": "dje",
+ "name": "zarma"
+ },
+ "zu": {
+ "code": "zu",
+ "name": "zulú"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/language/es-VE.json b/library/intl/resources/language/es-VE.json
new file mode 100644
index 000000000..afeb6b6b4
--- /dev/null
+++ b/library/intl/resources/language/es-VE.json
@@ -0,0 +1,738 @@
+{
+ "af": {
+ "code": "af",
+ "name": "afrikáans"
+ },
+ "agq": {
+ "code": "agq",
+ "name": "aghem"
+ },
+ "ak": {
+ "code": "ak",
+ "name": "akan"
+ },
+ "sq": {
+ "code": "sq",
+ "name": "albanés"
+ },
+ "de": {
+ "code": "de",
+ "name": "alemán"
+ },
+ "gsw": {
+ "code": "gsw",
+ "name": "alemán (Suiza)"
+ },
+ "de-AT": {
+ "code": "de-AT",
+ "name": "alemán austríaco"
+ },
+ "de-CH": {
+ "code": "de-CH",
+ "name": "alto alemán de Suiza"
+ },
+ "am": {
+ "code": "am",
+ "name": "amárico"
+ },
+ "ar": {
+ "code": "ar",
+ "name": "árabe"
+ },
+ "ar-001": {
+ "code": "ar-001",
+ "name": "árabe estándar moderno"
+ },
+ "hy": {
+ "code": "hy",
+ "name": "armenio"
+ },
+ "ast": {
+ "code": "ast",
+ "name": "asturiano"
+ },
+ "asa": {
+ "code": "asa",
+ "name": "asu"
+ },
+ "az": {
+ "code": "az",
+ "name": "azerbaiyano"
+ },
+ "ksf": {
+ "code": "ksf",
+ "name": "bafia"
+ },
+ "bm": {
+ "code": "bm",
+ "name": "bambara"
+ },
+ "bas": {
+ "code": "bas",
+ "name": "basa"
+ },
+ "bez": {
+ "code": "bez",
+ "name": "bena"
+ },
+ "bn": {
+ "code": "bn",
+ "name": "bengalí"
+ },
+ "be": {
+ "code": "be",
+ "name": "bielorruso"
+ },
+ "my": {
+ "code": "my",
+ "name": "birmano"
+ },
+ "brx": {
+ "code": "brx",
+ "name": "bodo"
+ },
+ "nb": {
+ "code": "nb",
+ "name": "bokmal noruego"
+ },
+ "bs": {
+ "code": "bs",
+ "name": "bosnio"
+ },
+ "br": {
+ "code": "br",
+ "name": "bretón"
+ },
+ "bg": {
+ "code": "bg",
+ "name": "búlgaro"
+ },
+ "kab": {
+ "code": "kab",
+ "name": "cabila"
+ },
+ "ks": {
+ "code": "ks",
+ "name": "cachemiro"
+ },
+ "kn": {
+ "code": "kn",
+ "name": "canarés"
+ },
+ "ca": {
+ "code": "ca",
+ "name": "catalán"
+ },
+ "cs": {
+ "code": "cs",
+ "name": "checo"
+ },
+ "chr": {
+ "code": "chr",
+ "name": "cheroqui"
+ },
+ "cgg": {
+ "code": "cgg",
+ "name": "chiga"
+ },
+ "zh": {
+ "code": "zh",
+ "name": "chino"
+ },
+ "zh-Hans": {
+ "code": "zh-Hans",
+ "name": "chino simplificado"
+ },
+ "zh-Hant": {
+ "code": "zh-Hant",
+ "name": "chino tradicional"
+ },
+ "si": {
+ "code": "si",
+ "name": "cingalés"
+ },
+ "ko": {
+ "code": "ko",
+ "name": "coreano"
+ },
+ "kea": {
+ "code": "kea",
+ "name": "criollo caboverdiano"
+ },
+ "mfe": {
+ "code": "mfe",
+ "name": "criollo mauriciano"
+ },
+ "hr": {
+ "code": "hr",
+ "name": "croata"
+ },
+ "da": {
+ "code": "da",
+ "name": "danés"
+ },
+ "dz": {
+ "code": "dz",
+ "name": "dzongkha"
+ },
+ "ebu": {
+ "code": "ebu",
+ "name": "embu"
+ },
+ "sk": {
+ "code": "sk",
+ "name": "eslovaco"
+ },
+ "sl": {
+ "code": "sl",
+ "name": "esloveno"
+ },
+ "es": {
+ "code": "es",
+ "name": "español"
+ },
+ "es-ES": {
+ "code": "es-ES",
+ "name": "español de España"
+ },
+ "es-MX": {
+ "code": "es-MX",
+ "name": "español de México"
+ },
+ "eo": {
+ "code": "eo",
+ "name": "esperanto"
+ },
+ "et": {
+ "code": "et",
+ "name": "estonio"
+ },
+ "ee": {
+ "code": "ee",
+ "name": "ewé"
+ },
+ "ewo": {
+ "code": "ewo",
+ "name": "ewondo"
+ },
+ "fo": {
+ "code": "fo",
+ "name": "feroés"
+ },
+ "fil": {
+ "code": "fil",
+ "name": "filipino"
+ },
+ "fi": {
+ "code": "fi",
+ "name": "finés"
+ },
+ "nl-BE": {
+ "code": "nl-BE",
+ "name": "flamenco"
+ },
+ "fr": {
+ "code": "fr",
+ "name": "francés"
+ },
+ "fr-CA": {
+ "code": "fr-CA",
+ "name": "francés canadiense"
+ },
+ "fr-CH": {
+ "code": "fr-CH",
+ "name": "francés suizo"
+ },
+ "fy": {
+ "code": "fy",
+ "name": "frisón occidental"
+ },
+ "fur": {
+ "code": "fur",
+ "name": "friulano"
+ },
+ "ff": {
+ "code": "ff",
+ "name": "fula"
+ },
+ "gd": {
+ "code": "gd",
+ "name": "gaélico escocés"
+ },
+ "cy": {
+ "code": "cy",
+ "name": "galés"
+ },
+ "gl": {
+ "code": "gl",
+ "name": "gallego"
+ },
+ "lg": {
+ "code": "lg",
+ "name": "ganda"
+ },
+ "ka": {
+ "code": "ka",
+ "name": "georgiano"
+ },
+ "el": {
+ "code": "el",
+ "name": "griego"
+ },
+ "kl": {
+ "code": "kl",
+ "name": "groenlandés"
+ },
+ "gu": {
+ "code": "gu",
+ "name": "gujarati"
+ },
+ "guz": {
+ "code": "guz",
+ "name": "gusii"
+ },
+ "ha": {
+ "code": "ha",
+ "name": "hausa"
+ },
+ "he": {
+ "code": "he",
+ "name": "hebreo"
+ },
+ "hi": {
+ "code": "hi",
+ "name": "hindi"
+ },
+ "hu": {
+ "code": "hu",
+ "name": "húngaro"
+ },
+ "id": {
+ "code": "id",
+ "name": "indonesio"
+ },
+ "en": {
+ "code": "en",
+ "name": "inglés"
+ },
+ "en-AU": {
+ "code": "en-AU",
+ "name": "inglés australiano"
+ },
+ "en-GB": {
+ "code": "en-GB",
+ "name": "inglés británico"
+ },
+ "en-CA": {
+ "code": "en-CA",
+ "name": "inglés canadiense"
+ },
+ "en-US": {
+ "code": "en-US",
+ "name": "inglés estadounidense"
+ },
+ "ga": {
+ "code": "ga",
+ "name": "irlandés"
+ },
+ "is": {
+ "code": "is",
+ "name": "islandés"
+ },
+ "it": {
+ "code": "it",
+ "name": "italiano"
+ },
+ "ja": {
+ "code": "ja",
+ "name": "japonés"
+ },
+ "km": {
+ "code": "km",
+ "name": "jemer"
+ },
+ "dyo": {
+ "code": "dyo",
+ "name": "jola-fonyi"
+ },
+ "kln": {
+ "code": "kln",
+ "name": "kalenjin"
+ },
+ "kam": {
+ "code": "kam",
+ "name": "kamba"
+ },
+ "kk": {
+ "code": "kk",
+ "name": "kazajo"
+ },
+ "ki": {
+ "code": "ki",
+ "name": "kikuyu"
+ },
+ "ky": {
+ "code": "ky",
+ "name": "kirguís"
+ },
+ "rn": {
+ "code": "rn",
+ "name": "kiroundi"
+ },
+ "vun": {
+ "code": "vun",
+ "name": "kivunjo"
+ },
+ "ksh": {
+ "code": "ksh",
+ "name": "kölsch"
+ },
+ "khq": {
+ "code": "khq",
+ "name": "koyra chiini"
+ },
+ "ses": {
+ "code": "ses",
+ "name": "koyraboro senni"
+ },
+ "nmg": {
+ "code": "nmg",
+ "name": "kwasio"
+ },
+ "lag": {
+ "code": "lag",
+ "name": "langi"
+ },
+ "lo": {
+ "code": "lo",
+ "name": "laosiano"
+ },
+ "lv": {
+ "code": "lv",
+ "name": "letón"
+ },
+ "ln": {
+ "code": "ln",
+ "name": "lingala"
+ },
+ "lt": {
+ "code": "lt",
+ "name": "lituano"
+ },
+ "lu": {
+ "code": "lu",
+ "name": "luba-katanga"
+ },
+ "luo": {
+ "code": "luo",
+ "name": "Luo"
+ },
+ "lb": {
+ "code": "lb",
+ "name": "luxemburgués"
+ },
+ "luy": {
+ "code": "luy",
+ "name": "luyia"
+ },
+ "mk": {
+ "code": "mk",
+ "name": "macedonio"
+ },
+ "jmc": {
+ "code": "jmc",
+ "name": "machame"
+ },
+ "mgh": {
+ "code": "mgh",
+ "name": "makhuwa-meetto"
+ },
+ "kde": {
+ "code": "kde",
+ "name": "makonde"
+ },
+ "ml": {
+ "code": "ml",
+ "name": "malayalam"
+ },
+ "ms": {
+ "code": "ms",
+ "name": "malayo"
+ },
+ "mg": {
+ "code": "mg",
+ "name": "malgache"
+ },
+ "mt": {
+ "code": "mt",
+ "name": "maltés"
+ },
+ "mr": {
+ "code": "mr",
+ "name": "maratí"
+ },
+ "mas": {
+ "code": "mas",
+ "name": "masái"
+ },
+ "mer": {
+ "code": "mer",
+ "name": "meru"
+ },
+ "ro-MD": {
+ "code": "ro-MD",
+ "name": "moldavo"
+ },
+ "mn": {
+ "code": "mn",
+ "name": "mongol"
+ },
+ "mua": {
+ "code": "mua",
+ "name": "mundang"
+ },
+ "naq": {
+ "code": "naq",
+ "name": "nama"
+ },
+ "nd": {
+ "code": "nd",
+ "name": "ndebele septentrional"
+ },
+ "nl": {
+ "code": "nl",
+ "name": "neerlandés"
+ },
+ "ne": {
+ "code": "ne",
+ "name": "nepalí"
+ },
+ "jgo": {
+ "code": "jgo",
+ "name": "ngomba"
+ },
+ "nus": {
+ "code": "nus",
+ "name": "nuer"
+ },
+ "nyn": {
+ "code": "nyn",
+ "name": "nyankole"
+ },
+ "nn": {
+ "code": "nn",
+ "name": "nynorsk noruego"
+ },
+ "or": {
+ "code": "or",
+ "name": "oriya"
+ },
+ "ps": {
+ "code": "ps",
+ "name": "pastún"
+ },
+ "fa": {
+ "code": "fa",
+ "name": "persa"
+ },
+ "pl": {
+ "code": "pl",
+ "name": "polaco"
+ },
+ "pt": {
+ "code": "pt",
+ "name": "portugués"
+ },
+ "pt-BR": {
+ "code": "pt-BR",
+ "name": "portugués de Brasil"
+ },
+ "pt-PT": {
+ "code": "pt-PT",
+ "name": "portugués de Portugal"
+ },
+ "pa": {
+ "code": "pa",
+ "name": "punjabí"
+ },
+ "rm": {
+ "code": "rm",
+ "name": "retorrománico"
+ },
+ "rof": {
+ "code": "rof",
+ "name": "rombo"
+ },
+ "ro": {
+ "code": "ro",
+ "name": "rumano"
+ },
+ "ru": {
+ "code": "ru",
+ "name": "ruso"
+ },
+ "rwk": {
+ "code": "rwk",
+ "name": "rwa"
+ },
+ "saq": {
+ "code": "saq",
+ "name": "samburu"
+ },
+ "se": {
+ "code": "se",
+ "name": "sami septentrional"
+ },
+ "sg": {
+ "code": "sg",
+ "name": "sango"
+ },
+ "sbp": {
+ "code": "sbp",
+ "name": "sangu"
+ },
+ "seh": {
+ "code": "seh",
+ "name": "sena"
+ },
+ "sr": {
+ "code": "sr",
+ "name": "serbio"
+ },
+ "ksb": {
+ "code": "ksb",
+ "name": "shambala"
+ },
+ "sn": {
+ "code": "sn",
+ "name": "shona"
+ },
+ "xog": {
+ "code": "xog",
+ "name": "soga"
+ },
+ "so": {
+ "code": "so",
+ "name": "somalí"
+ },
+ "dsb": {
+ "code": "dsb",
+ "name": "sorbio inferior"
+ },
+ "hsb": {
+ "code": "hsb",
+ "name": "sorbio superior"
+ },
+ "sv": {
+ "code": "sv",
+ "name": "sueco"
+ },
+ "sw": {
+ "code": "sw",
+ "name": "swahili"
+ },
+ "swc": {
+ "code": "swc",
+ "name": "swahili del Congo"
+ },
+ "th": {
+ "code": "th",
+ "name": "tailandés"
+ },
+ "dav": {
+ "code": "dav",
+ "name": "taita"
+ },
+ "zgh": {
+ "code": "zgh",
+ "name": "tamazight"
+ },
+ "tzm": {
+ "code": "tzm",
+ "name": "tamazight del Marruecos Central"
+ },
+ "ta": {
+ "code": "ta",
+ "name": "tamil"
+ },
+ "twq": {
+ "code": "twq",
+ "name": "tasawaq"
+ },
+ "shi": {
+ "code": "shi",
+ "name": "tashelhit"
+ },
+ "te": {
+ "code": "te",
+ "name": "telugu"
+ },
+ "teo": {
+ "code": "teo",
+ "name": "teso"
+ },
+ "bo": {
+ "code": "bo",
+ "name": "tibetano"
+ },
+ "ti": {
+ "code": "ti",
+ "name": "tigriña"
+ },
+ "to": {
+ "code": "to",
+ "name": "tongano"
+ },
+ "tr": {
+ "code": "tr",
+ "name": "turco"
+ },
+ "uk": {
+ "code": "uk",
+ "name": "ucraniano"
+ },
+ "ug": {
+ "code": "ug",
+ "name": "uigur"
+ },
+ "ur": {
+ "code": "ur",
+ "name": "urdu"
+ },
+ "uz": {
+ "code": "uz",
+ "name": "uzbeko"
+ },
+ "vai": {
+ "code": "vai",
+ "name": "Vai"
+ },
+ "eu": {
+ "code": "eu",
+ "name": "vasco"
+ },
+ "vi": {
+ "code": "vi",
+ "name": "vietnamita"
+ },
+ "wae": {
+ "code": "wae",
+ "name": "walser"
+ },
+ "yav": {
+ "code": "yav",
+ "name": "yangben"
+ },
+ "yo": {
+ "code": "yo",
+ "name": "yoruba"
+ },
+ "dje": {
+ "code": "dje",
+ "name": "zarma"
+ },
+ "zu": {
+ "code": "zu",
+ "name": "zulú"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/language/es.json b/library/intl/resources/language/es.json
new file mode 100644
index 000000000..74e16ddb2
--- /dev/null
+++ b/library/intl/resources/language/es.json
@@ -0,0 +1,738 @@
+{
+ "af": {
+ "code": "af",
+ "name": "afrikáans"
+ },
+ "agq": {
+ "code": "agq",
+ "name": "aghem"
+ },
+ "ak": {
+ "code": "ak",
+ "name": "akan"
+ },
+ "sq": {
+ "code": "sq",
+ "name": "albanés"
+ },
+ "de": {
+ "code": "de",
+ "name": "alemán"
+ },
+ "de-AT": {
+ "code": "de-AT",
+ "name": "alemán austríaco"
+ },
+ "gsw": {
+ "code": "gsw",
+ "name": "alemán suizo"
+ },
+ "de-CH": {
+ "code": "de-CH",
+ "name": "alto alemán de Suiza"
+ },
+ "am": {
+ "code": "am",
+ "name": "amárico"
+ },
+ "ar": {
+ "code": "ar",
+ "name": "árabe"
+ },
+ "ar-001": {
+ "code": "ar-001",
+ "name": "árabe estándar moderno"
+ },
+ "hy": {
+ "code": "hy",
+ "name": "armenio"
+ },
+ "ast": {
+ "code": "ast",
+ "name": "asturiano"
+ },
+ "asa": {
+ "code": "asa",
+ "name": "asu"
+ },
+ "az": {
+ "code": "az",
+ "name": "azerí"
+ },
+ "ksf": {
+ "code": "ksf",
+ "name": "bafia"
+ },
+ "bm": {
+ "code": "bm",
+ "name": "bambara"
+ },
+ "bas": {
+ "code": "bas",
+ "name": "basa"
+ },
+ "bez": {
+ "code": "bez",
+ "name": "bena"
+ },
+ "bn": {
+ "code": "bn",
+ "name": "bengalí"
+ },
+ "be": {
+ "code": "be",
+ "name": "bielorruso"
+ },
+ "my": {
+ "code": "my",
+ "name": "birmano"
+ },
+ "brx": {
+ "code": "brx",
+ "name": "bodo"
+ },
+ "nb": {
+ "code": "nb",
+ "name": "bokmal noruego"
+ },
+ "bs": {
+ "code": "bs",
+ "name": "bosnio"
+ },
+ "br": {
+ "code": "br",
+ "name": "bretón"
+ },
+ "bg": {
+ "code": "bg",
+ "name": "búlgaro"
+ },
+ "kab": {
+ "code": "kab",
+ "name": "cabila"
+ },
+ "ks": {
+ "code": "ks",
+ "name": "cachemiro"
+ },
+ "kn": {
+ "code": "kn",
+ "name": "canarés"
+ },
+ "ca": {
+ "code": "ca",
+ "name": "catalán"
+ },
+ "cs": {
+ "code": "cs",
+ "name": "checo"
+ },
+ "chr": {
+ "code": "chr",
+ "name": "cheroqui"
+ },
+ "cgg": {
+ "code": "cgg",
+ "name": "chiga"
+ },
+ "zh": {
+ "code": "zh",
+ "name": "chino"
+ },
+ "zh-Hans": {
+ "code": "zh-Hans",
+ "name": "chino simplificado"
+ },
+ "zh-Hant": {
+ "code": "zh-Hant",
+ "name": "chino tradicional"
+ },
+ "si": {
+ "code": "si",
+ "name": "cingalés"
+ },
+ "ko": {
+ "code": "ko",
+ "name": "coreano"
+ },
+ "kea": {
+ "code": "kea",
+ "name": "criollo caboverdiano"
+ },
+ "mfe": {
+ "code": "mfe",
+ "name": "criollo mauriciano"
+ },
+ "hr": {
+ "code": "hr",
+ "name": "croata"
+ },
+ "da": {
+ "code": "da",
+ "name": "danés"
+ },
+ "dz": {
+ "code": "dz",
+ "name": "dzongkha"
+ },
+ "ebu": {
+ "code": "ebu",
+ "name": "embu"
+ },
+ "sk": {
+ "code": "sk",
+ "name": "eslovaco"
+ },
+ "sl": {
+ "code": "sl",
+ "name": "esloveno"
+ },
+ "es": {
+ "code": "es",
+ "name": "español"
+ },
+ "es-ES": {
+ "code": "es-ES",
+ "name": "español de España"
+ },
+ "es-MX": {
+ "code": "es-MX",
+ "name": "español de México"
+ },
+ "eo": {
+ "code": "eo",
+ "name": "esperanto"
+ },
+ "et": {
+ "code": "et",
+ "name": "estonio"
+ },
+ "eu": {
+ "code": "eu",
+ "name": "euskera"
+ },
+ "ee": {
+ "code": "ee",
+ "name": "ewé"
+ },
+ "ewo": {
+ "code": "ewo",
+ "name": "ewondo"
+ },
+ "fo": {
+ "code": "fo",
+ "name": "feroés"
+ },
+ "fil": {
+ "code": "fil",
+ "name": "filipino"
+ },
+ "fi": {
+ "code": "fi",
+ "name": "finés"
+ },
+ "nl-BE": {
+ "code": "nl-BE",
+ "name": "flamenco"
+ },
+ "fr": {
+ "code": "fr",
+ "name": "francés"
+ },
+ "fr-CA": {
+ "code": "fr-CA",
+ "name": "francés canadiense"
+ },
+ "fr-CH": {
+ "code": "fr-CH",
+ "name": "francés suizo"
+ },
+ "fy": {
+ "code": "fy",
+ "name": "frisón occidental"
+ },
+ "fur": {
+ "code": "fur",
+ "name": "friulano"
+ },
+ "ff": {
+ "code": "ff",
+ "name": "fula"
+ },
+ "gd": {
+ "code": "gd",
+ "name": "gaélico escocés"
+ },
+ "cy": {
+ "code": "cy",
+ "name": "galés"
+ },
+ "gl": {
+ "code": "gl",
+ "name": "gallego"
+ },
+ "lg": {
+ "code": "lg",
+ "name": "ganda"
+ },
+ "ka": {
+ "code": "ka",
+ "name": "georgiano"
+ },
+ "el": {
+ "code": "el",
+ "name": "griego"
+ },
+ "kl": {
+ "code": "kl",
+ "name": "groenlandés"
+ },
+ "gu": {
+ "code": "gu",
+ "name": "gujarati"
+ },
+ "guz": {
+ "code": "guz",
+ "name": "gusii"
+ },
+ "ha": {
+ "code": "ha",
+ "name": "hausa"
+ },
+ "he": {
+ "code": "he",
+ "name": "hebreo"
+ },
+ "hi": {
+ "code": "hi",
+ "name": "hindi"
+ },
+ "hu": {
+ "code": "hu",
+ "name": "húngaro"
+ },
+ "id": {
+ "code": "id",
+ "name": "indonesio"
+ },
+ "en": {
+ "code": "en",
+ "name": "inglés"
+ },
+ "en-AU": {
+ "code": "en-AU",
+ "name": "inglés australiano"
+ },
+ "en-GB": {
+ "code": "en-GB",
+ "name": "inglés británico"
+ },
+ "en-CA": {
+ "code": "en-CA",
+ "name": "inglés canadiense"
+ },
+ "en-US": {
+ "code": "en-US",
+ "name": "inglés estadounidense"
+ },
+ "ga": {
+ "code": "ga",
+ "name": "irlandés"
+ },
+ "is": {
+ "code": "is",
+ "name": "islandés"
+ },
+ "it": {
+ "code": "it",
+ "name": "italiano"
+ },
+ "ja": {
+ "code": "ja",
+ "name": "japonés"
+ },
+ "km": {
+ "code": "km",
+ "name": "jemer"
+ },
+ "dyo": {
+ "code": "dyo",
+ "name": "jola-fonyi"
+ },
+ "kln": {
+ "code": "kln",
+ "name": "kalenjin"
+ },
+ "kam": {
+ "code": "kam",
+ "name": "kamba"
+ },
+ "kk": {
+ "code": "kk",
+ "name": "kazajo"
+ },
+ "ki": {
+ "code": "ki",
+ "name": "kikuyu"
+ },
+ "ky": {
+ "code": "ky",
+ "name": "kirguís"
+ },
+ "rn": {
+ "code": "rn",
+ "name": "kiroundi"
+ },
+ "vun": {
+ "code": "vun",
+ "name": "kivunjo"
+ },
+ "ksh": {
+ "code": "ksh",
+ "name": "kölsch"
+ },
+ "khq": {
+ "code": "khq",
+ "name": "koyra chiini"
+ },
+ "ses": {
+ "code": "ses",
+ "name": "koyraboro senni"
+ },
+ "nmg": {
+ "code": "nmg",
+ "name": "kwasio"
+ },
+ "lag": {
+ "code": "lag",
+ "name": "langi"
+ },
+ "lo": {
+ "code": "lo",
+ "name": "laosiano"
+ },
+ "lv": {
+ "code": "lv",
+ "name": "letón"
+ },
+ "ln": {
+ "code": "ln",
+ "name": "lingala"
+ },
+ "lt": {
+ "code": "lt",
+ "name": "lituano"
+ },
+ "lu": {
+ "code": "lu",
+ "name": "luba-katanga"
+ },
+ "luo": {
+ "code": "luo",
+ "name": "Luo"
+ },
+ "lb": {
+ "code": "lb",
+ "name": "luxemburgués"
+ },
+ "luy": {
+ "code": "luy",
+ "name": "luyia"
+ },
+ "mk": {
+ "code": "mk",
+ "name": "macedonio"
+ },
+ "jmc": {
+ "code": "jmc",
+ "name": "machame"
+ },
+ "mgh": {
+ "code": "mgh",
+ "name": "makhuwa-meetto"
+ },
+ "kde": {
+ "code": "kde",
+ "name": "makonde"
+ },
+ "ml": {
+ "code": "ml",
+ "name": "malayalam"
+ },
+ "ms": {
+ "code": "ms",
+ "name": "malayo"
+ },
+ "mg": {
+ "code": "mg",
+ "name": "malgache"
+ },
+ "mt": {
+ "code": "mt",
+ "name": "maltés"
+ },
+ "mr": {
+ "code": "mr",
+ "name": "marathi"
+ },
+ "mas": {
+ "code": "mas",
+ "name": "masái"
+ },
+ "mer": {
+ "code": "mer",
+ "name": "meru"
+ },
+ "ro-MD": {
+ "code": "ro-MD",
+ "name": "moldavo"
+ },
+ "mn": {
+ "code": "mn",
+ "name": "mongol"
+ },
+ "mua": {
+ "code": "mua",
+ "name": "mundang"
+ },
+ "naq": {
+ "code": "naq",
+ "name": "nama"
+ },
+ "nd": {
+ "code": "nd",
+ "name": "ndebele septentrional"
+ },
+ "nl": {
+ "code": "nl",
+ "name": "neerlandés"
+ },
+ "ne": {
+ "code": "ne",
+ "name": "nepalí"
+ },
+ "jgo": {
+ "code": "jgo",
+ "name": "ngomba"
+ },
+ "nus": {
+ "code": "nus",
+ "name": "nuer"
+ },
+ "nyn": {
+ "code": "nyn",
+ "name": "nyankole"
+ },
+ "nn": {
+ "code": "nn",
+ "name": "nynorsk noruego"
+ },
+ "or": {
+ "code": "or",
+ "name": "oriya"
+ },
+ "ps": {
+ "code": "ps",
+ "name": "pastún"
+ },
+ "fa": {
+ "code": "fa",
+ "name": "persa"
+ },
+ "pl": {
+ "code": "pl",
+ "name": "polaco"
+ },
+ "pt": {
+ "code": "pt",
+ "name": "portugués"
+ },
+ "pt-BR": {
+ "code": "pt-BR",
+ "name": "portugués de Brasil"
+ },
+ "pt-PT": {
+ "code": "pt-PT",
+ "name": "portugués de Portugal"
+ },
+ "pa": {
+ "code": "pa",
+ "name": "punjabí"
+ },
+ "rm": {
+ "code": "rm",
+ "name": "retorrománico"
+ },
+ "rof": {
+ "code": "rof",
+ "name": "rombo"
+ },
+ "ro": {
+ "code": "ro",
+ "name": "rumano"
+ },
+ "ru": {
+ "code": "ru",
+ "name": "ruso"
+ },
+ "rwk": {
+ "code": "rwk",
+ "name": "rwa"
+ },
+ "saq": {
+ "code": "saq",
+ "name": "samburu"
+ },
+ "se": {
+ "code": "se",
+ "name": "sami septentrional"
+ },
+ "sg": {
+ "code": "sg",
+ "name": "sango"
+ },
+ "sbp": {
+ "code": "sbp",
+ "name": "sangu"
+ },
+ "seh": {
+ "code": "seh",
+ "name": "sena"
+ },
+ "sr": {
+ "code": "sr",
+ "name": "serbio"
+ },
+ "ksb": {
+ "code": "ksb",
+ "name": "shambala"
+ },
+ "sn": {
+ "code": "sn",
+ "name": "shona"
+ },
+ "xog": {
+ "code": "xog",
+ "name": "soga"
+ },
+ "so": {
+ "code": "so",
+ "name": "somalí"
+ },
+ "dsb": {
+ "code": "dsb",
+ "name": "sorbio inferior"
+ },
+ "hsb": {
+ "code": "hsb",
+ "name": "sorbio superior"
+ },
+ "sv": {
+ "code": "sv",
+ "name": "sueco"
+ },
+ "sw": {
+ "code": "sw",
+ "name": "swahili"
+ },
+ "swc": {
+ "code": "swc",
+ "name": "swahili del Congo"
+ },
+ "th": {
+ "code": "th",
+ "name": "tailandés"
+ },
+ "dav": {
+ "code": "dav",
+ "name": "taita"
+ },
+ "zgh": {
+ "code": "zgh",
+ "name": "tamazight"
+ },
+ "tzm": {
+ "code": "tzm",
+ "name": "tamazight del Marruecos Central"
+ },
+ "ta": {
+ "code": "ta",
+ "name": "tamil"
+ },
+ "twq": {
+ "code": "twq",
+ "name": "tasawaq"
+ },
+ "shi": {
+ "code": "shi",
+ "name": "tashelhit"
+ },
+ "te": {
+ "code": "te",
+ "name": "telugu"
+ },
+ "teo": {
+ "code": "teo",
+ "name": "teso"
+ },
+ "bo": {
+ "code": "bo",
+ "name": "tibetano"
+ },
+ "ti": {
+ "code": "ti",
+ "name": "tigriña"
+ },
+ "to": {
+ "code": "to",
+ "name": "tongano"
+ },
+ "tr": {
+ "code": "tr",
+ "name": "turco"
+ },
+ "uk": {
+ "code": "uk",
+ "name": "ucraniano"
+ },
+ "ug": {
+ "code": "ug",
+ "name": "uigur"
+ },
+ "ur": {
+ "code": "ur",
+ "name": "urdu"
+ },
+ "uz": {
+ "code": "uz",
+ "name": "uzbeko"
+ },
+ "vai": {
+ "code": "vai",
+ "name": "Vai"
+ },
+ "vi": {
+ "code": "vi",
+ "name": "vietnamita"
+ },
+ "wae": {
+ "code": "wae",
+ "name": "walser"
+ },
+ "yav": {
+ "code": "yav",
+ "name": "yangben"
+ },
+ "yo": {
+ "code": "yo",
+ "name": "yoruba"
+ },
+ "dje": {
+ "code": "dje",
+ "name": "zarma"
+ },
+ "zu": {
+ "code": "zu",
+ "name": "zulú"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/language/et.json b/library/intl/resources/language/et.json
new file mode 100644
index 000000000..67b00258f
--- /dev/null
+++ b/library/intl/resources/language/et.json
@@ -0,0 +1,738 @@
+{
+ "af": {
+ "code": "af",
+ "name": "afrikaani"
+ },
+ "agq": {
+ "code": "agq",
+ "name": "aghemi"
+ },
+ "ak": {
+ "code": "ak",
+ "name": "akani"
+ },
+ "dsb": {
+ "code": "dsb",
+ "name": "alamsorbi"
+ },
+ "sq": {
+ "code": "sq",
+ "name": "albaania"
+ },
+ "am": {
+ "code": "am",
+ "name": "amhari"
+ },
+ "ar": {
+ "code": "ar",
+ "name": "araabia"
+ },
+ "ar-001": {
+ "code": "ar-001",
+ "name": "araabia (tänapäevane)"
+ },
+ "hy": {
+ "code": "hy",
+ "name": "armeenia"
+ },
+ "az": {
+ "code": "az",
+ "name": "aserbaidžaani"
+ },
+ "ast": {
+ "code": "ast",
+ "name": "astuuria"
+ },
+ "asa": {
+ "code": "asa",
+ "name": "Asu"
+ },
+ "ksf": {
+ "code": "ksf",
+ "name": "bafia"
+ },
+ "bm": {
+ "code": "bm",
+ "name": "bambara"
+ },
+ "bas": {
+ "code": "bas",
+ "name": "basa"
+ },
+ "eu": {
+ "code": "eu",
+ "name": "baski"
+ },
+ "bez": {
+ "code": "bez",
+ "name": "bena"
+ },
+ "bn": {
+ "code": "bn",
+ "name": "bengali"
+ },
+ "my": {
+ "code": "my",
+ "name": "birma"
+ },
+ "brx": {
+ "code": "brx",
+ "name": "bodo"
+ },
+ "bs": {
+ "code": "bs",
+ "name": "bosnia"
+ },
+ "br": {
+ "code": "br",
+ "name": "bretooni"
+ },
+ "bg": {
+ "code": "bg",
+ "name": "bulgaaria"
+ },
+ "cgg": {
+ "code": "cgg",
+ "name": "chiga"
+ },
+ "ksh": {
+ "code": "ksh",
+ "name": "cologniani"
+ },
+ "de-AT": {
+ "code": "de-AT",
+ "name": "de_AT"
+ },
+ "dz": {
+ "code": "dz",
+ "name": "dzongkha"
+ },
+ "et": {
+ "code": "et",
+ "name": "eesti"
+ },
+ "ebu": {
+ "code": "ebu",
+ "name": "embu"
+ },
+ "en-AU": {
+ "code": "en-AU",
+ "name": "en_AU"
+ },
+ "en-CA": {
+ "code": "en-CA",
+ "name": "en_CA"
+ },
+ "es-MX": {
+ "code": "es-MX",
+ "name": "es_MX"
+ },
+ "eo": {
+ "code": "eo",
+ "name": "esperanto"
+ },
+ "ee": {
+ "code": "ee",
+ "name": "eve"
+ },
+ "ewo": {
+ "code": "ewo",
+ "name": "evondo"
+ },
+ "fil": {
+ "code": "fil",
+ "name": "filipino"
+ },
+ "nl-BE": {
+ "code": "nl-BE",
+ "name": "flaami"
+ },
+ "fr-CA": {
+ "code": "fr-CA",
+ "name": "fr_CA"
+ },
+ "fr-CH": {
+ "code": "fr-CH",
+ "name": "fr_CH"
+ },
+ "fur": {
+ "code": "fur",
+ "name": "friuuli"
+ },
+ "ff": {
+ "code": "ff",
+ "name": "fulbe"
+ },
+ "fo": {
+ "code": "fo",
+ "name": "fääri"
+ },
+ "gd": {
+ "code": "gd",
+ "name": "gaeli"
+ },
+ "gl": {
+ "code": "gl",
+ "name": "galeegi"
+ },
+ "lg": {
+ "code": "lg",
+ "name": "ganda"
+ },
+ "ka": {
+ "code": "ka",
+ "name": "gruusia"
+ },
+ "kl": {
+ "code": "kl",
+ "name": "grööni"
+ },
+ "gu": {
+ "code": "gu",
+ "name": "gudžarati"
+ },
+ "guz": {
+ "code": "guz",
+ "name": "gusii"
+ },
+ "ha": {
+ "code": "ha",
+ "name": "hausa"
+ },
+ "he": {
+ "code": "he",
+ "name": "heebrea"
+ },
+ "zh": {
+ "code": "zh",
+ "name": "hiina"
+ },
+ "zh-Hans": {
+ "code": "zh-Hans",
+ "name": "hiina (lihtsustatud)"
+ },
+ "zh-Hant": {
+ "code": "zh-Hant",
+ "name": "hiina (traditsiooniline)"
+ },
+ "hi": {
+ "code": "hi",
+ "name": "hindi"
+ },
+ "es": {
+ "code": "es",
+ "name": "hispaania"
+ },
+ "es-ES": {
+ "code": "es-ES",
+ "name": "hispaania (Euroopa)"
+ },
+ "nl": {
+ "code": "nl",
+ "name": "hollandi"
+ },
+ "hr": {
+ "code": "hr",
+ "name": "horvaadi"
+ },
+ "ga": {
+ "code": "ga",
+ "name": "iiri"
+ },
+ "id": {
+ "code": "id",
+ "name": "indoneesia"
+ },
+ "en": {
+ "code": "en",
+ "name": "inglise"
+ },
+ "en-GB": {
+ "code": "en-GB",
+ "name": "inglise (Briti)"
+ },
+ "en-US": {
+ "code": "en-US",
+ "name": "inglise (USA)"
+ },
+ "is": {
+ "code": "is",
+ "name": "islandi"
+ },
+ "it": {
+ "code": "it",
+ "name": "itaalia"
+ },
+ "ja": {
+ "code": "ja",
+ "name": "jaapani"
+ },
+ "dyo": {
+ "code": "dyo",
+ "name": "jola-fonyi"
+ },
+ "yo": {
+ "code": "yo",
+ "name": "joruba"
+ },
+ "kab": {
+ "code": "kab",
+ "name": "kabiili"
+ },
+ "kea": {
+ "code": "kea",
+ "name": "kabuverdianu"
+ },
+ "kln": {
+ "code": "kln",
+ "name": "kaljenjin"
+ },
+ "kam": {
+ "code": "kam",
+ "name": "kamba"
+ },
+ "kn": {
+ "code": "kn",
+ "name": "kannada"
+ },
+ "kk": {
+ "code": "kk",
+ "name": "kasahhi"
+ },
+ "ks": {
+ "code": "ks",
+ "name": "kašmiiri"
+ },
+ "ca": {
+ "code": "ca",
+ "name": "katalaani"
+ },
+ "tzm": {
+ "code": "tzm",
+ "name": "Kesk-Maroko tamazighti"
+ },
+ "km": {
+ "code": "km",
+ "name": "khmeeri"
+ },
+ "ki": {
+ "code": "ki",
+ "name": "kikuju"
+ },
+ "ky": {
+ "code": "ky",
+ "name": "kirgiisi"
+ },
+ "swc": {
+ "code": "swc",
+ "name": "Kongo suahiili"
+ },
+ "ko": {
+ "code": "ko",
+ "name": "korea"
+ },
+ "khq": {
+ "code": "khq",
+ "name": "koyra chiini"
+ },
+ "ses": {
+ "code": "ses",
+ "name": "koyraboro senni"
+ },
+ "el": {
+ "code": "el",
+ "name": "kreeka"
+ },
+ "nmg": {
+ "code": "nmg",
+ "name": "kwasio"
+ },
+ "cy": {
+ "code": "cy",
+ "name": "kõmri"
+ },
+ "lag": {
+ "code": "lag",
+ "name": "langi"
+ },
+ "lo": {
+ "code": "lo",
+ "name": "lao"
+ },
+ "lt": {
+ "code": "lt",
+ "name": "leedu"
+ },
+ "lb": {
+ "code": "lb",
+ "name": "letseburgi"
+ },
+ "ln": {
+ "code": "ln",
+ "name": "lingala"
+ },
+ "lu": {
+ "code": "lu",
+ "name": "luba"
+ },
+ "luo": {
+ "code": "luo",
+ "name": "Luo"
+ },
+ "luy": {
+ "code": "luy",
+ "name": "luyia"
+ },
+ "lv": {
+ "code": "lv",
+ "name": "läti"
+ },
+ "fy": {
+ "code": "fy",
+ "name": "läänefriisi"
+ },
+ "jmc": {
+ "code": "jmc",
+ "name": "machame"
+ },
+ "mk": {
+ "code": "mk",
+ "name": "makedoonia"
+ },
+ "mgh": {
+ "code": "mgh",
+ "name": "makhuwa-meetto"
+ },
+ "kde": {
+ "code": "kde",
+ "name": "makonde"
+ },
+ "mg": {
+ "code": "mg",
+ "name": "malagassi"
+ },
+ "ms": {
+ "code": "ms",
+ "name": "malai"
+ },
+ "ml": {
+ "code": "ml",
+ "name": "malajalami"
+ },
+ "mt": {
+ "code": "mt",
+ "name": "malta"
+ },
+ "mr": {
+ "code": "mr",
+ "name": "marathi"
+ },
+ "mas": {
+ "code": "mas",
+ "name": "masai"
+ },
+ "mfe": {
+ "code": "mfe",
+ "name": "Mauritiuse kreoolkeel"
+ },
+ "mer": {
+ "code": "mer",
+ "name": "meru"
+ },
+ "ro-MD": {
+ "code": "ro-MD",
+ "name": "moldova"
+ },
+ "mn": {
+ "code": "mn",
+ "name": "mongoli"
+ },
+ "mua": {
+ "code": "mua",
+ "name": "mundangi"
+ },
+ "naq": {
+ "code": "naq",
+ "name": "nama"
+ },
+ "ne": {
+ "code": "ne",
+ "name": "nepali"
+ },
+ "jgo": {
+ "code": "jgo",
+ "name": "ngomba"
+ },
+ "nyn": {
+ "code": "nyn",
+ "name": "nkole"
+ },
+ "nb": {
+ "code": "nb",
+ "name": "norra bokmål"
+ },
+ "nn": {
+ "code": "nn",
+ "name": "norra nynorsk"
+ },
+ "nus": {
+ "code": "nus",
+ "name": "nueri"
+ },
+ "or": {
+ "code": "or",
+ "name": "oria"
+ },
+ "pa": {
+ "code": "pa",
+ "name": "pandžabi"
+ },
+ "pl": {
+ "code": "pl",
+ "name": "poola"
+ },
+ "pt": {
+ "code": "pt",
+ "name": "portugali"
+ },
+ "pt-PT": {
+ "code": "pt-PT",
+ "name": "portugali (Euroopa)"
+ },
+ "fr": {
+ "code": "fr",
+ "name": "prantsuse"
+ },
+ "pt-BR": {
+ "code": "pt-BR",
+ "name": "pt_BR"
+ },
+ "ps": {
+ "code": "ps",
+ "name": "puštu"
+ },
+ "nd": {
+ "code": "nd",
+ "name": "põhjandebele"
+ },
+ "se": {
+ "code": "se",
+ "name": "põhjasaami"
+ },
+ "fa": {
+ "code": "fa",
+ "name": "pärsia"
+ },
+ "rm": {
+ "code": "rm",
+ "name": "retoromaani"
+ },
+ "rof": {
+ "code": "rof",
+ "name": "rombo"
+ },
+ "sv": {
+ "code": "sv",
+ "name": "rootsi"
+ },
+ "ro": {
+ "code": "ro",
+ "name": "rumeenia"
+ },
+ "rn": {
+ "code": "rn",
+ "name": "rundi"
+ },
+ "rwk": {
+ "code": "rwk",
+ "name": "rwa"
+ },
+ "de": {
+ "code": "de",
+ "name": "saksa"
+ },
+ "de-CH": {
+ "code": "de-CH",
+ "name": "saksa (kõrgsaksa)"
+ },
+ "saq": {
+ "code": "saq",
+ "name": "samburu"
+ },
+ "sg": {
+ "code": "sg",
+ "name": "sango"
+ },
+ "sbp": {
+ "code": "sbp",
+ "name": "sangu"
+ },
+ "seh": {
+ "code": "seh",
+ "name": "sena"
+ },
+ "sr": {
+ "code": "sr",
+ "name": "serbia"
+ },
+ "ksb": {
+ "code": "ksb",
+ "name": "shambala"
+ },
+ "si": {
+ "code": "si",
+ "name": "singali"
+ },
+ "sk": {
+ "code": "sk",
+ "name": "slovaki"
+ },
+ "sl": {
+ "code": "sl",
+ "name": "sloveeni"
+ },
+ "xog": {
+ "code": "xog",
+ "name": "soga"
+ },
+ "so": {
+ "code": "so",
+ "name": "somaali"
+ },
+ "fi": {
+ "code": "fi",
+ "name": "soome"
+ },
+ "sw": {
+ "code": "sw",
+ "name": "suahiili"
+ },
+ "zu": {
+ "code": "zu",
+ "name": "suulu"
+ },
+ "sn": {
+ "code": "sn",
+ "name": "Å¡ona"
+ },
+ "gsw": {
+ "code": "gsw",
+ "name": "Å¡veitsisaksa"
+ },
+ "dje": {
+ "code": "dje",
+ "name": "zarma"
+ },
+ "da": {
+ "code": "da",
+ "name": "taani"
+ },
+ "shi": {
+ "code": "shi",
+ "name": "tachelhiti"
+ },
+ "th": {
+ "code": "th",
+ "name": "tai"
+ },
+ "dav": {
+ "code": "dav",
+ "name": "taita"
+ },
+ "zgh": {
+ "code": "zgh",
+ "name": "tamasikti (Maroko)"
+ },
+ "ta": {
+ "code": "ta",
+ "name": "tamili"
+ },
+ "twq": {
+ "code": "twq",
+ "name": "taswaqi"
+ },
+ "te": {
+ "code": "te",
+ "name": "telugu"
+ },
+ "teo": {
+ "code": "teo",
+ "name": "teso"
+ },
+ "ti": {
+ "code": "ti",
+ "name": "tigrinja"
+ },
+ "bo": {
+ "code": "bo",
+ "name": "tiibeti"
+ },
+ "to": {
+ "code": "to",
+ "name": "tonga"
+ },
+ "cs": {
+ "code": "cs",
+ "name": "tšehhi"
+ },
+ "chr": {
+ "code": "chr",
+ "name": "tšerokii"
+ },
+ "tr": {
+ "code": "tr",
+ "name": "türgi"
+ },
+ "ug": {
+ "code": "ug",
+ "name": "uiguuri"
+ },
+ "uk": {
+ "code": "uk",
+ "name": "ukraina"
+ },
+ "hu": {
+ "code": "hu",
+ "name": "ungari"
+ },
+ "ur": {
+ "code": "ur",
+ "name": "urdu"
+ },
+ "uz": {
+ "code": "uz",
+ "name": "usbeki"
+ },
+ "vai": {
+ "code": "vai",
+ "name": "Vai"
+ },
+ "be": {
+ "code": "be",
+ "name": "valgevene"
+ },
+ "wae": {
+ "code": "wae",
+ "name": "walseri"
+ },
+ "ru": {
+ "code": "ru",
+ "name": "vene"
+ },
+ "vi": {
+ "code": "vi",
+ "name": "vietnami"
+ },
+ "vun": {
+ "code": "vun",
+ "name": "vunjo"
+ },
+ "hsb": {
+ "code": "hsb",
+ "name": "ülemsorbi"
+ },
+ "yav": {
+ "code": "yav",
+ "name": "yangbeni"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/language/eu.json b/library/intl/resources/language/eu.json
new file mode 100644
index 000000000..e980e5461
--- /dev/null
+++ b/library/intl/resources/language/eu.json
@@ -0,0 +1,738 @@
+{
+ "af": {
+ "code": "af",
+ "name": "afrikaansa"
+ },
+ "agq": {
+ "code": "agq",
+ "name": "aghemera"
+ },
+ "ak": {
+ "code": "ak",
+ "name": "akanera"
+ },
+ "sq": {
+ "code": "sq",
+ "name": "albaniera"
+ },
+ "de-CH": {
+ "code": "de-CH",
+ "name": "aleman garaia (Suitza)"
+ },
+ "de": {
+ "code": "de",
+ "name": "alemana"
+ },
+ "gsw": {
+ "code": "gsw",
+ "name": "alemana (Suitza)"
+ },
+ "am": {
+ "code": "am",
+ "name": "amharera"
+ },
+ "nyn": {
+ "code": "nyn",
+ "name": "ankolera"
+ },
+ "ar": {
+ "code": "ar",
+ "name": "arabiera"
+ },
+ "ar-001": {
+ "code": "ar-001",
+ "name": "arabiera moderno estandarra"
+ },
+ "hy": {
+ "code": "hy",
+ "name": "armeniera"
+ },
+ "ast": {
+ "code": "ast",
+ "name": "Asturian"
+ },
+ "asa": {
+ "code": "asa",
+ "name": "asua"
+ },
+ "az": {
+ "code": "az",
+ "name": "azerbaijanera"
+ },
+ "ksf": {
+ "code": "ksf",
+ "name": "bafiera"
+ },
+ "bm": {
+ "code": "bm",
+ "name": "bambarera"
+ },
+ "bas": {
+ "code": "bas",
+ "name": "Basaa"
+ },
+ "dsb": {
+ "code": "dsb",
+ "name": "behe-sorabiera"
+ },
+ "bez": {
+ "code": "bez",
+ "name": "benera"
+ },
+ "bn": {
+ "code": "bn",
+ "name": "bengalera"
+ },
+ "be": {
+ "code": "be",
+ "name": "bielorrusiera"
+ },
+ "brx": {
+ "code": "brx",
+ "name": "bodoera"
+ },
+ "nb": {
+ "code": "nb",
+ "name": "bokmala (Norvegia)"
+ },
+ "bs": {
+ "code": "bs",
+ "name": "bosniera"
+ },
+ "br": {
+ "code": "br",
+ "name": "bretoiera"
+ },
+ "bg": {
+ "code": "bg",
+ "name": "bulgariera"
+ },
+ "my": {
+ "code": "my",
+ "name": "burmatarra"
+ },
+ "kea": {
+ "code": "kea",
+ "name": "Cabo Verdeko kreola"
+ },
+ "cgg": {
+ "code": "cgg",
+ "name": "chigera"
+ },
+ "ksh": {
+ "code": "ksh",
+ "name": "Colognian"
+ },
+ "da": {
+ "code": "da",
+ "name": "daniera"
+ },
+ "de-AT": {
+ "code": "de-AT",
+ "name": "de_AT"
+ },
+ "dz": {
+ "code": "dz",
+ "name": "dzongkha"
+ },
+ "ebu": {
+ "code": "ebu",
+ "name": "embua"
+ },
+ "en-AU": {
+ "code": "en-AU",
+ "name": "en_AU"
+ },
+ "en-CA": {
+ "code": "en-CA",
+ "name": "en_CA"
+ },
+ "en-GB": {
+ "code": "en-GB",
+ "name": "en_GB"
+ },
+ "rm": {
+ "code": "rm",
+ "name": "erromantxera"
+ },
+ "ro": {
+ "code": "ro",
+ "name": "errumaniera"
+ },
+ "ru": {
+ "code": "ru",
+ "name": "errusiera"
+ },
+ "es-MX": {
+ "code": "es-MX",
+ "name": "es_MX"
+ },
+ "gd": {
+ "code": "gd",
+ "name": "eskoziako gaelikoa"
+ },
+ "sk": {
+ "code": "sk",
+ "name": "eslovakiera"
+ },
+ "sl": {
+ "code": "sl",
+ "name": "esloveniera"
+ },
+ "es": {
+ "code": "es",
+ "name": "espainiera"
+ },
+ "es-ES": {
+ "code": "es-ES",
+ "name": "espainiera (Europa)"
+ },
+ "eo": {
+ "code": "eo",
+ "name": "esperantoa"
+ },
+ "et": {
+ "code": "et",
+ "name": "estoniera"
+ },
+ "eu": {
+ "code": "eu",
+ "name": "euskara"
+ },
+ "ee": {
+ "code": "ee",
+ "name": "eweera"
+ },
+ "ewo": {
+ "code": "ewo",
+ "name": "Ewondo"
+ },
+ "fo": {
+ "code": "fo",
+ "name": "faroera"
+ },
+ "fi": {
+ "code": "fi",
+ "name": "finlandiera"
+ },
+ "nl-BE": {
+ "code": "nl-BE",
+ "name": "flandriera"
+ },
+ "dyo": {
+ "code": "dyo",
+ "name": "fonyi jolera"
+ },
+ "fr-CA": {
+ "code": "fr-CA",
+ "name": "fr_CA"
+ },
+ "fr-CH": {
+ "code": "fr-CH",
+ "name": "fr_CH"
+ },
+ "fr": {
+ "code": "fr",
+ "name": "frantsesa"
+ },
+ "fy": {
+ "code": "fy",
+ "name": "frisiera"
+ },
+ "fur": {
+ "code": "fur",
+ "name": "Friulian"
+ },
+ "ff": {
+ "code": "ff",
+ "name": "Fulah"
+ },
+ "ga": {
+ "code": "ga",
+ "name": "gaelikoa"
+ },
+ "cy": {
+ "code": "cy",
+ "name": "galesera"
+ },
+ "gl": {
+ "code": "gl",
+ "name": "galiziera"
+ },
+ "lg": {
+ "code": "lg",
+ "name": "gandera"
+ },
+ "ka": {
+ "code": "ka",
+ "name": "georgiera"
+ },
+ "hsb": {
+ "code": "hsb",
+ "name": "goi-sorabiera"
+ },
+ "el": {
+ "code": "el",
+ "name": "greziera"
+ },
+ "gu": {
+ "code": "gu",
+ "name": "gujaratera"
+ },
+ "guz": {
+ "code": "guz",
+ "name": "gusiiera"
+ },
+ "ha": {
+ "code": "ha",
+ "name": "hausa"
+ },
+ "he": {
+ "code": "he",
+ "name": "hebreera"
+ },
+ "hi": {
+ "code": "hi",
+ "name": "hindia"
+ },
+ "hu": {
+ "code": "hu",
+ "name": "hungariera"
+ },
+ "id": {
+ "code": "id",
+ "name": "indonesiera"
+ },
+ "en": {
+ "code": "en",
+ "name": "ingelesa"
+ },
+ "en-US": {
+ "code": "en-US",
+ "name": "ingelesa (AEB)"
+ },
+ "nd": {
+ "code": "nd",
+ "name": "iparraldeko ndebeleera"
+ },
+ "se": {
+ "code": "se",
+ "name": "iparraldeko samiera"
+ },
+ "is": {
+ "code": "is",
+ "name": "islandiera"
+ },
+ "it": {
+ "code": "it",
+ "name": "italiera"
+ },
+ "ja": {
+ "code": "ja",
+ "name": "japoniera"
+ },
+ "kab": {
+ "code": "kab",
+ "name": "kabilera"
+ },
+ "kl": {
+ "code": "kl",
+ "name": "kalaallisutera"
+ },
+ "kln": {
+ "code": "kln",
+ "name": "kalenjinera"
+ },
+ "kam": {
+ "code": "kam",
+ "name": "kambera"
+ },
+ "kn": {
+ "code": "kn",
+ "name": "kannadera"
+ },
+ "ks": {
+ "code": "ks",
+ "name": "kashmirera"
+ },
+ "ca": {
+ "code": "ca",
+ "name": "katalana"
+ },
+ "kk": {
+ "code": "kk",
+ "name": "kazakhera"
+ },
+ "km": {
+ "code": "km",
+ "name": "khemerera"
+ },
+ "ki": {
+ "code": "ki",
+ "name": "kikuyuera"
+ },
+ "ky": {
+ "code": "ky",
+ "name": "kirgizera"
+ },
+ "swc": {
+ "code": "swc",
+ "name": "Kongoko swahilia"
+ },
+ "ko": {
+ "code": "ko",
+ "name": "koreera"
+ },
+ "khq": {
+ "code": "khq",
+ "name": "koyra chiiniera"
+ },
+ "ses": {
+ "code": "ses",
+ "name": "koyraboro sennia"
+ },
+ "hr": {
+ "code": "hr",
+ "name": "kroaziera"
+ },
+ "nmg": {
+ "code": "nmg",
+ "name": "kwasiera"
+ },
+ "lag": {
+ "code": "lag",
+ "name": "langiera"
+ },
+ "lo": {
+ "code": "lo",
+ "name": "laosera"
+ },
+ "lv": {
+ "code": "lv",
+ "name": "letoniera"
+ },
+ "ln": {
+ "code": "ln",
+ "name": "lingala"
+ },
+ "lt": {
+ "code": "lt",
+ "name": "lituaniera"
+ },
+ "lu": {
+ "code": "lu",
+ "name": "luba-katangera"
+ },
+ "luy": {
+ "code": "luy",
+ "name": "luhyera"
+ },
+ "luo": {
+ "code": "luo",
+ "name": "luoera"
+ },
+ "lb": {
+ "code": "lb",
+ "name": "luxenburgera"
+ },
+ "jmc": {
+ "code": "jmc",
+ "name": "machamera"
+ },
+ "mgh": {
+ "code": "mgh",
+ "name": "makhuwa-meettoera"
+ },
+ "kde": {
+ "code": "kde",
+ "name": "makondera"
+ },
+ "mg": {
+ "code": "mg",
+ "name": "malagasyera"
+ },
+ "ml": {
+ "code": "ml",
+ "name": "malayalamera"
+ },
+ "ms": {
+ "code": "ms",
+ "name": "malaysiera"
+ },
+ "mt": {
+ "code": "mt",
+ "name": "maltera"
+ },
+ "mr": {
+ "code": "mr",
+ "name": "marathera"
+ },
+ "tzm": {
+ "code": "tzm",
+ "name": "Maroko erdialdeko tamazighta"
+ },
+ "mas": {
+ "code": "mas",
+ "name": "masaiera"
+ },
+ "mfe": {
+ "code": "mfe",
+ "name": "Mauritaniako kreolera"
+ },
+ "mk": {
+ "code": "mk",
+ "name": "mazedoniera"
+ },
+ "mer": {
+ "code": "mer",
+ "name": "meruera"
+ },
+ "mn": {
+ "code": "mn",
+ "name": "mongoliera"
+ },
+ "mua": {
+ "code": "mua",
+ "name": "mudangera"
+ },
+ "naq": {
+ "code": "naq",
+ "name": "namera"
+ },
+ "nl": {
+ "code": "nl",
+ "name": "nederlandera"
+ },
+ "ne": {
+ "code": "ne",
+ "name": "nepalera"
+ },
+ "jgo": {
+ "code": "jgo",
+ "name": "ngomba"
+ },
+ "nus": {
+ "code": "nus",
+ "name": "nuerera"
+ },
+ "nn": {
+ "code": "nn",
+ "name": "nynorsk norvegiera"
+ },
+ "or": {
+ "code": "or",
+ "name": "oriyera"
+ },
+ "ps": {
+ "code": "ps",
+ "name": "paxtuera"
+ },
+ "fa": {
+ "code": "fa",
+ "name": "persiera"
+ },
+ "pl": {
+ "code": "pl",
+ "name": "poloniera"
+ },
+ "pt": {
+ "code": "pt",
+ "name": "portugesa"
+ },
+ "pt-PT": {
+ "code": "pt-PT",
+ "name": "portugesa (Europa)"
+ },
+ "pt-BR": {
+ "code": "pt-BR",
+ "name": "pt_BR"
+ },
+ "pa": {
+ "code": "pa",
+ "name": "punjabera"
+ },
+ "ro-MD": {
+ "code": "ro-MD",
+ "name": "ro_MD"
+ },
+ "rof": {
+ "code": "rof",
+ "name": "romboera"
+ },
+ "rn": {
+ "code": "rn",
+ "name": "rundiera"
+ },
+ "rwk": {
+ "code": "rwk",
+ "name": "rwaera"
+ },
+ "saq": {
+ "code": "saq",
+ "name": "samburuera"
+ },
+ "sg": {
+ "code": "sg",
+ "name": "sangoera"
+ },
+ "sbp": {
+ "code": "sbp",
+ "name": "sanguera"
+ },
+ "seh": {
+ "code": "seh",
+ "name": "senera"
+ },
+ "sr": {
+ "code": "sr",
+ "name": "serbiera"
+ },
+ "ksb": {
+ "code": "ksb",
+ "name": "shambalera"
+ },
+ "sn": {
+ "code": "sn",
+ "name": "shonera"
+ },
+ "si": {
+ "code": "si",
+ "name": "sinhala"
+ },
+ "xog": {
+ "code": "xog",
+ "name": "sogera"
+ },
+ "so": {
+ "code": "so",
+ "name": "somaliera"
+ },
+ "sv": {
+ "code": "sv",
+ "name": "suediera"
+ },
+ "sw": {
+ "code": "sw",
+ "name": "swahili"
+ },
+ "shi": {
+ "code": "shi",
+ "name": "tachelhita"
+ },
+ "fil": {
+ "code": "fil",
+ "name": "tagaloga"
+ },
+ "dav": {
+ "code": "dav",
+ "name": "taitera"
+ },
+ "zgh": {
+ "code": "zgh",
+ "name": "tamazight estandarra"
+ },
+ "ta": {
+ "code": "ta",
+ "name": "tamilera"
+ },
+ "twq": {
+ "code": "twq",
+ "name": "tasawaqa"
+ },
+ "te": {
+ "code": "te",
+ "name": "teluguera"
+ },
+ "teo": {
+ "code": "teo",
+ "name": "tesoera"
+ },
+ "th": {
+ "code": "th",
+ "name": "thailandiera"
+ },
+ "bo": {
+ "code": "bo",
+ "name": "tibetera"
+ },
+ "ti": {
+ "code": "ti",
+ "name": "tigriñera"
+ },
+ "to": {
+ "code": "to",
+ "name": "tongera"
+ },
+ "tr": {
+ "code": "tr",
+ "name": "turkiera"
+ },
+ "cs": {
+ "code": "cs",
+ "name": "txekiera"
+ },
+ "chr": {
+ "code": "chr",
+ "name": "txerokiera"
+ },
+ "zh": {
+ "code": "zh",
+ "name": "txinera"
+ },
+ "zh-Hans": {
+ "code": "zh-Hans",
+ "name": "txinera soildua"
+ },
+ "zh-Hant": {
+ "code": "zh-Hant",
+ "name": "txinera tradizionala"
+ },
+ "ug": {
+ "code": "ug",
+ "name": "uigurrera"
+ },
+ "uk": {
+ "code": "uk",
+ "name": "ukrainera"
+ },
+ "ur": {
+ "code": "ur",
+ "name": "urdua"
+ },
+ "uz": {
+ "code": "uz",
+ "name": "uzbekera"
+ },
+ "vai": {
+ "code": "vai",
+ "name": "vaiera"
+ },
+ "vi": {
+ "code": "vi",
+ "name": "vietnamera"
+ },
+ "vun": {
+ "code": "vun",
+ "name": "vunjoa"
+ },
+ "wae": {
+ "code": "wae",
+ "name": "Walser"
+ },
+ "yav": {
+ "code": "yav",
+ "name": "Yangben"
+ },
+ "yo": {
+ "code": "yo",
+ "name": "yorubera"
+ },
+ "dje": {
+ "code": "dje",
+ "name": "zarmera"
+ },
+ "zu": {
+ "code": "zu",
+ "name": "zuluera"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/language/ewo.json b/library/intl/resources/language/ewo.json
new file mode 100644
index 000000000..fc4ca1131
--- /dev/null
+++ b/library/intl/resources/language/ewo.json
@@ -0,0 +1,738 @@
+{
+ "af": {
+ "code": "af",
+ "name": "Afrikaans"
+ },
+ "agq": {
+ "code": "agq",
+ "name": "Aghem"
+ },
+ "sq": {
+ "code": "sq",
+ "name": "Albanian"
+ },
+ "ar-001": {
+ "code": "ar-001",
+ "name": "ar_001"
+ },
+ "hy": {
+ "code": "hy",
+ "name": "Armenian"
+ },
+ "ast": {
+ "code": "ast",
+ "name": "Asturian"
+ },
+ "asa": {
+ "code": "asa",
+ "name": "Asu"
+ },
+ "az": {
+ "code": "az",
+ "name": "Azerbaijani"
+ },
+ "ksf": {
+ "code": "ksf",
+ "name": "Bafia"
+ },
+ "bm": {
+ "code": "bm",
+ "name": "Bambara"
+ },
+ "bas": {
+ "code": "bas",
+ "name": "Basaa"
+ },
+ "eu": {
+ "code": "eu",
+ "name": "Basque"
+ },
+ "bez": {
+ "code": "bez",
+ "name": "Bena"
+ },
+ "brx": {
+ "code": "brx",
+ "name": "Bodo"
+ },
+ "bs": {
+ "code": "bs",
+ "name": "Bosnian"
+ },
+ "br": {
+ "code": "br",
+ "name": "Breton"
+ },
+ "ca": {
+ "code": "ca",
+ "name": "Catalan"
+ },
+ "tzm": {
+ "code": "tzm",
+ "name": "Central Atlas Tamazight"
+ },
+ "chr": {
+ "code": "chr",
+ "name": "Cherokee"
+ },
+ "cgg": {
+ "code": "cgg",
+ "name": "Chiga"
+ },
+ "ksh": {
+ "code": "ksh",
+ "name": "Colognian"
+ },
+ "swc": {
+ "code": "swc",
+ "name": "Congo Swahili"
+ },
+ "hr": {
+ "code": "hr",
+ "name": "Croatian"
+ },
+ "da": {
+ "code": "da",
+ "name": "Danish"
+ },
+ "de-AT": {
+ "code": "de-AT",
+ "name": "de_AT"
+ },
+ "de-CH": {
+ "code": "de-CH",
+ "name": "de_CH"
+ },
+ "dz": {
+ "code": "dz",
+ "name": "Dzongkha"
+ },
+ "ebu": {
+ "code": "ebu",
+ "name": "Embu"
+ },
+ "en-AU": {
+ "code": "en-AU",
+ "name": "en_AU"
+ },
+ "en-CA": {
+ "code": "en-CA",
+ "name": "en_CA"
+ },
+ "en-GB": {
+ "code": "en-GB",
+ "name": "en_GB"
+ },
+ "en-US": {
+ "code": "en-US",
+ "name": "en_US"
+ },
+ "es-ES": {
+ "code": "es-ES",
+ "name": "es_ES"
+ },
+ "es-MX": {
+ "code": "es-MX",
+ "name": "es_MX"
+ },
+ "eo": {
+ "code": "eo",
+ "name": "Esperanto"
+ },
+ "et": {
+ "code": "et",
+ "name": "Estonian"
+ },
+ "ee": {
+ "code": "ee",
+ "name": "Ewe"
+ },
+ "ewo": {
+ "code": "ewo",
+ "name": "ewondo"
+ },
+ "fo": {
+ "code": "fo",
+ "name": "Faroese"
+ },
+ "fil": {
+ "code": "fil",
+ "name": "Filipino"
+ },
+ "fi": {
+ "code": "fi",
+ "name": "Finnish"
+ },
+ "fr-CA": {
+ "code": "fr-CA",
+ "name": "fr_CA"
+ },
+ "fr-CH": {
+ "code": "fr-CH",
+ "name": "fr_CH"
+ },
+ "fur": {
+ "code": "fur",
+ "name": "Friulian"
+ },
+ "ff": {
+ "code": "ff",
+ "name": "Fulah"
+ },
+ "gl": {
+ "code": "gl",
+ "name": "Galician"
+ },
+ "lg": {
+ "code": "lg",
+ "name": "Ganda"
+ },
+ "ka": {
+ "code": "ka",
+ "name": "Georgian"
+ },
+ "gu": {
+ "code": "gu",
+ "name": "Gujarati"
+ },
+ "guz": {
+ "code": "guz",
+ "name": "Gusii"
+ },
+ "he": {
+ "code": "he",
+ "name": "Hebrew"
+ },
+ "is": {
+ "code": "is",
+ "name": "Icelandic"
+ },
+ "ga": {
+ "code": "ga",
+ "name": "Irish"
+ },
+ "dyo": {
+ "code": "dyo",
+ "name": "Jola-Fonyi"
+ },
+ "kea": {
+ "code": "kea",
+ "name": "Kabuverdianu"
+ },
+ "kab": {
+ "code": "kab",
+ "name": "Kabyle"
+ },
+ "kl": {
+ "code": "kl",
+ "name": "Kalaallisut"
+ },
+ "kln": {
+ "code": "kln",
+ "name": "Kalenjin"
+ },
+ "kam": {
+ "code": "kam",
+ "name": "Kamba"
+ },
+ "kn": {
+ "code": "kn",
+ "name": "Kannada"
+ },
+ "ks": {
+ "code": "ks",
+ "name": "Kashmiri"
+ },
+ "kk": {
+ "code": "kk",
+ "name": "Kazakh"
+ },
+ "ki": {
+ "code": "ki",
+ "name": "Kikuyu"
+ },
+ "khq": {
+ "code": "khq",
+ "name": "Koyra Chiini"
+ },
+ "ses": {
+ "code": "ses",
+ "name": "Koyraboro Senni"
+ },
+ "nmg": {
+ "code": "nmg",
+ "name": "Kwasio"
+ },
+ "ky": {
+ "code": "ky",
+ "name": "Kyrgyz"
+ },
+ "lag": {
+ "code": "lag",
+ "name": "Langi"
+ },
+ "lo": {
+ "code": "lo",
+ "name": "Lao"
+ },
+ "lv": {
+ "code": "lv",
+ "name": "Latvian"
+ },
+ "ln": {
+ "code": "ln",
+ "name": "Lingala"
+ },
+ "lt": {
+ "code": "lt",
+ "name": "Lithuanian"
+ },
+ "dsb": {
+ "code": "dsb",
+ "name": "Lower Sorbian"
+ },
+ "lu": {
+ "code": "lu",
+ "name": "Luba-Katanga"
+ },
+ "luo": {
+ "code": "luo",
+ "name": "Luo"
+ },
+ "lb": {
+ "code": "lb",
+ "name": "Luxembourgish"
+ },
+ "luy": {
+ "code": "luy",
+ "name": "Luyia"
+ },
+ "mk": {
+ "code": "mk",
+ "name": "Macedonian"
+ },
+ "jmc": {
+ "code": "jmc",
+ "name": "Machame"
+ },
+ "mgh": {
+ "code": "mgh",
+ "name": "Makhuwa-Meetto"
+ },
+ "kde": {
+ "code": "kde",
+ "name": "Makonde"
+ },
+ "mg": {
+ "code": "mg",
+ "name": "Malagasy"
+ },
+ "ml": {
+ "code": "ml",
+ "name": "Malayalam"
+ },
+ "mt": {
+ "code": "mt",
+ "name": "Maltese"
+ },
+ "mr": {
+ "code": "mr",
+ "name": "Marathi"
+ },
+ "mas": {
+ "code": "mas",
+ "name": "Masai"
+ },
+ "mer": {
+ "code": "mer",
+ "name": "Meru"
+ },
+ "mn": {
+ "code": "mn",
+ "name": "Mongolian"
+ },
+ "mfe": {
+ "code": "mfe",
+ "name": "Morisyen"
+ },
+ "mua": {
+ "code": "mua",
+ "name": "Mundang"
+ },
+ "naq": {
+ "code": "naq",
+ "name": "Nama"
+ },
+ "jgo": {
+ "code": "jgo",
+ "name": "Ngomba"
+ },
+ "ak": {
+ "code": "ak",
+ "name": "ǸkÉ”ÌbÉ” akán"
+ },
+ "am": {
+ "code": "am",
+ "name": "ǸkÉ”ÌbÉ” amária"
+ },
+ "ar": {
+ "code": "ar",
+ "name": "ǸkÉ”ÌbÉ” arábia"
+ },
+ "ha": {
+ "code": "ha",
+ "name": "ǸkÉ”ÌbÉ” aúsá"
+ },
+ "be": {
+ "code": "be",
+ "name": "ǸkÉ”ÌbÉ” belarúsian"
+ },
+ "bn": {
+ "code": "bn",
+ "name": "ǸkÉ”ÌbÉ” bÉ›ngalí"
+ },
+ "my": {
+ "code": "my",
+ "name": "ǸkÉ”ÌbÉ” birÉ™mán"
+ },
+ "bg": {
+ "code": "bg",
+ "name": "ǸkÉ”ÌbÉ” bulÉ™gárian"
+ },
+ "en": {
+ "code": "en",
+ "name": "ǸkÉ”ÌbÉ” éngÉ™lís"
+ },
+ "it": {
+ "code": "it",
+ "name": "ǸkÉ”ÌbÉ” etáliÉ›n"
+ },
+ "id": {
+ "code": "id",
+ "name": "ǸkÉ”ÌbÉ” É›ndonésian"
+ },
+ "fa": {
+ "code": "fa",
+ "name": "ǹkÉ”ÌbÉ” fÉ›ÌrÉ™sian"
+ },
+ "pl": {
+ "code": "pl",
+ "name": "ǹkÉ”ÌbÉ” fólis"
+ },
+ "pt": {
+ "code": "pt",
+ "name": "ǹkÉ”ÌbÉ” fÉ”tugÉ›Ìs"
+ },
+ "fr": {
+ "code": "fr",
+ "name": "ǸkÉ”ÌbÉ” fulÉ›nsí"
+ },
+ "pa": {
+ "code": "pa",
+ "name": "ǹkÉ”ÌbÉ” funÉ™hábia"
+ },
+ "el": {
+ "code": "el",
+ "name": "ǸkÉ”ÌbÉ” gÉ™lÉ›Ìg"
+ },
+ "ja": {
+ "code": "ja",
+ "name": "ǸkÉ”ÌbÉ” hapÉ”Ìn"
+ },
+ "vi": {
+ "code": "vi",
+ "name": "ǹkÉ”ÌbÉ” hiÉ›dÉ™nám"
+ },
+ "hi": {
+ "code": "hi",
+ "name": "ǸkÉ”ÌbÉ” hindí"
+ },
+ "km": {
+ "code": "km",
+ "name": "ǸkÉ”ÌbÉ” kÉ™mÉ›Ìr"
+ },
+ "ko": {
+ "code": "ko",
+ "name": "ǸkÉ”ÌbÉ” koréan"
+ },
+ "es": {
+ "code": "es",
+ "name": "ǹkÉ”ÌbÉ” kpÉ™nyá"
+ },
+ "ms": {
+ "code": "ms",
+ "name": "ǸkÉ”ÌbÉ” malÉ›Ìsian"
+ },
+ "de": {
+ "code": "de",
+ "name": "ǸkÉ”ÌbÉ” ndzáman"
+ },
+ "ne": {
+ "code": "ne",
+ "name": "ǹkÉ”ÌbÉ” nefálian"
+ },
+ "nl": {
+ "code": "nl",
+ "name": "ǸkÉ”ÌbÉ” nÉ›rÉ™lándía"
+ },
+ "ro": {
+ "code": "ro",
+ "name": "Å„kÉ”ÌbÉ” románía"
+ },
+ "ru": {
+ "code": "ru",
+ "name": "ǹkÉ”ÌbÉ” rúsian"
+ },
+ "so": {
+ "code": "so",
+ "name": "ǹkÉ”ÌbÉ” somália"
+ },
+ "sv": {
+ "code": "sv",
+ "name": "ǹkÉ”ÌbÉ” suwÉ›Ìd"
+ },
+ "th": {
+ "code": "th",
+ "name": "ǹkÉ”ÌbÉ” táilan"
+ },
+ "ta": {
+ "code": "ta",
+ "name": "ǹkÉ”ÌbÉ” tamíl"
+ },
+ "zh": {
+ "code": "zh",
+ "name": "ǸkÉ”ÌbÉ” tsainís"
+ },
+ "cs": {
+ "code": "cs",
+ "name": "ǸkÉ”ÌbÉ” tsÉ›Ìg"
+ },
+ "tr": {
+ "code": "tr",
+ "name": "ǹkÉ”ÌbÉ” túrÉ™ki"
+ },
+ "uk": {
+ "code": "uk",
+ "name": "ǹkÉ”ÌbÉ” ukelénia"
+ },
+ "hu": {
+ "code": "hu",
+ "name": "ǸkÉ”ÌbÉ” ungárían"
+ },
+ "ur": {
+ "code": "ur",
+ "name": "ǹkÉ”ÌbÉ” urudú"
+ },
+ "yo": {
+ "code": "yo",
+ "name": "ǹkÉ”ÌbÉ” yorúba"
+ },
+ "zu": {
+ "code": "zu",
+ "name": "ǹkÉ”ÌbÉ” zulú"
+ },
+ "nl-BE": {
+ "code": "nl-BE",
+ "name": "nl_BE"
+ },
+ "nd": {
+ "code": "nd",
+ "name": "North Ndebele"
+ },
+ "se": {
+ "code": "se",
+ "name": "Northern Sami"
+ },
+ "nb": {
+ "code": "nb",
+ "name": "Norwegian Bokmål"
+ },
+ "nn": {
+ "code": "nn",
+ "name": "Norwegian Nynorsk"
+ },
+ "nus": {
+ "code": "nus",
+ "name": "Nuer"
+ },
+ "nyn": {
+ "code": "nyn",
+ "name": "Nyankole"
+ },
+ "or": {
+ "code": "or",
+ "name": "Oriya"
+ },
+ "ps": {
+ "code": "ps",
+ "name": "Pashto"
+ },
+ "pt-BR": {
+ "code": "pt-BR",
+ "name": "pt_BR"
+ },
+ "pt-PT": {
+ "code": "pt-PT",
+ "name": "pt_PT"
+ },
+ "ro-MD": {
+ "code": "ro-MD",
+ "name": "ro_MD"
+ },
+ "rm": {
+ "code": "rm",
+ "name": "Romansh"
+ },
+ "rof": {
+ "code": "rof",
+ "name": "Rombo"
+ },
+ "rn": {
+ "code": "rn",
+ "name": "Rundi"
+ },
+ "rwk": {
+ "code": "rwk",
+ "name": "Rwa"
+ },
+ "saq": {
+ "code": "saq",
+ "name": "Samburu"
+ },
+ "sg": {
+ "code": "sg",
+ "name": "Sango"
+ },
+ "sbp": {
+ "code": "sbp",
+ "name": "Sangu"
+ },
+ "gd": {
+ "code": "gd",
+ "name": "Scottish Gaelic"
+ },
+ "seh": {
+ "code": "seh",
+ "name": "Sena"
+ },
+ "sr": {
+ "code": "sr",
+ "name": "Serbian"
+ },
+ "ksb": {
+ "code": "ksb",
+ "name": "Shambala"
+ },
+ "sn": {
+ "code": "sn",
+ "name": "Shona"
+ },
+ "si": {
+ "code": "si",
+ "name": "Sinhala"
+ },
+ "sk": {
+ "code": "sk",
+ "name": "Slovak"
+ },
+ "sl": {
+ "code": "sl",
+ "name": "Slovenian"
+ },
+ "xog": {
+ "code": "xog",
+ "name": "Soga"
+ },
+ "zgh": {
+ "code": "zgh",
+ "name": "Standard Moroccan Tamazight"
+ },
+ "sw": {
+ "code": "sw",
+ "name": "Swahili"
+ },
+ "gsw": {
+ "code": "gsw",
+ "name": "Swiss German"
+ },
+ "shi": {
+ "code": "shi",
+ "name": "Tachelhit"
+ },
+ "dav": {
+ "code": "dav",
+ "name": "Taita"
+ },
+ "twq": {
+ "code": "twq",
+ "name": "Tasawaq"
+ },
+ "te": {
+ "code": "te",
+ "name": "Telugu"
+ },
+ "teo": {
+ "code": "teo",
+ "name": "Teso"
+ },
+ "bo": {
+ "code": "bo",
+ "name": "Tibetan"
+ },
+ "ti": {
+ "code": "ti",
+ "name": "Tigrinya"
+ },
+ "to": {
+ "code": "to",
+ "name": "Tongan"
+ },
+ "hsb": {
+ "code": "hsb",
+ "name": "Upper Sorbian"
+ },
+ "ug": {
+ "code": "ug",
+ "name": "Uyghur"
+ },
+ "uz": {
+ "code": "uz",
+ "name": "Uzbek"
+ },
+ "vai": {
+ "code": "vai",
+ "name": "Vai"
+ },
+ "vun": {
+ "code": "vun",
+ "name": "Vunjo"
+ },
+ "wae": {
+ "code": "wae",
+ "name": "Walser"
+ },
+ "cy": {
+ "code": "cy",
+ "name": "Welsh"
+ },
+ "fy": {
+ "code": "fy",
+ "name": "Western Frisian"
+ },
+ "yav": {
+ "code": "yav",
+ "name": "Yangben"
+ },
+ "dje": {
+ "code": "dje",
+ "name": "Zarma"
+ },
+ "zh-Hans": {
+ "code": "zh-Hans",
+ "name": "zh_Hans"
+ },
+ "zh-Hant": {
+ "code": "zh-Hant",
+ "name": "zh_Hant"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/language/fa-AF.json b/library/intl/resources/language/fa-AF.json
new file mode 100644
index 000000000..1327eea2f
--- /dev/null
+++ b/library/intl/resources/language/fa-AF.json
@@ -0,0 +1,738 @@
+{
+ "ksh": {
+ "code": "ksh",
+ "name": "Colognian"
+ },
+ "wae": {
+ "code": "wae",
+ "name": "Walser"
+ },
+ "yav": {
+ "code": "yav",
+ "name": "Yangben"
+ },
+ "ast": {
+ "code": "ast",
+ "name": "آستوری"
+ },
+ "asa": {
+ "code": "asa",
+ "name": "آسو"
+ },
+ "af": {
+ "code": "af",
+ "name": "Ø¢Ùریکانس"
+ },
+ "ak": {
+ "code": "ak",
+ "name": "آکان"
+ },
+ "agq": {
+ "code": "agq",
+ "name": "آگیم"
+ },
+ "sq": {
+ "code": "sq",
+ "name": "آلبانیایی"
+ },
+ "de": {
+ "code": "de",
+ "name": "آلمانی"
+ },
+ "de-AT": {
+ "code": "de-AT",
+ "name": "آلمانی اتریش"
+ },
+ "gsw": {
+ "code": "gsw",
+ "name": "آلمانی سوئیسی"
+ },
+ "de-CH": {
+ "code": "de-CH",
+ "name": "آلمانی علیای سوئیس"
+ },
+ "tzm": {
+ "code": "tzm",
+ "name": "آمازیغی اطلس مرکزی"
+ },
+ "zgh": {
+ "code": "zgh",
+ "name": "آمازیغی معیار مراکش"
+ },
+ "ga": {
+ "code": "ga",
+ "name": "آیرلندی"
+ },
+ "is": {
+ "code": "is",
+ "name": "آیسلندی"
+ },
+ "ur": {
+ "code": "ur",
+ "name": "اردو"
+ },
+ "hy": {
+ "code": "hy",
+ "name": "ارمنی"
+ },
+ "uz": {
+ "code": "uz",
+ "name": "ازبکی"
+ },
+ "es-ES": {
+ "code": "es-ES",
+ "name": "اسپانیایی اروپا"
+ },
+ "es-MX": {
+ "code": "es-MX",
+ "name": "اسپانیایی مکزیک"
+ },
+ "eo": {
+ "code": "eo",
+ "name": "اسپرانتو"
+ },
+ "et": {
+ "code": "et",
+ "name": "استونیایی"
+ },
+ "sk": {
+ "code": "sk",
+ "name": "اسلواکی"
+ },
+ "sl": {
+ "code": "sl",
+ "name": "اسلووینیایی"
+ },
+ "ebu": {
+ "code": "ebu",
+ "name": "امبو"
+ },
+ "am": {
+ "code": "am",
+ "name": "امهری"
+ },
+ "nd": {
+ "code": "nd",
+ "name": "انده‌بله‌ای شمالی"
+ },
+ "id": {
+ "code": "id",
+ "name": "اندونیزیایی"
+ },
+ "en": {
+ "code": "en",
+ "name": "انگلیسی"
+ },
+ "en-AU": {
+ "code": "en-AU",
+ "name": "انگلیسی استرالیا"
+ },
+ "en-US": {
+ "code": "en-US",
+ "name": "انگلیسی امریکا"
+ },
+ "en-GB": {
+ "code": "en-GB",
+ "name": "انگلیسی بریتانیا"
+ },
+ "en-CA": {
+ "code": "en-CA",
+ "name": "انگلیسی کانادا"
+ },
+ "ewo": {
+ "code": "ewo",
+ "name": "اواندو"
+ },
+ "or": {
+ "code": "or",
+ "name": "اوریه‌ای"
+ },
+ "uk": {
+ "code": "uk",
+ "name": "اوکراینی"
+ },
+ "ee": {
+ "code": "ee",
+ "name": "اوه‌ای"
+ },
+ "ug": {
+ "code": "ug",
+ "name": "اویغوری"
+ },
+ "it": {
+ "code": "it",
+ "name": "ایتالوی"
+ },
+ "bas": {
+ "code": "bas",
+ "name": "باسایی"
+ },
+ "eu": {
+ "code": "eu",
+ "name": "باسکی"
+ },
+ "ksf": {
+ "code": "ksf",
+ "name": "باÙیایی"
+ },
+ "bm": {
+ "code": "bm",
+ "name": "بامبارایی"
+ },
+ "br": {
+ "code": "br",
+ "name": "برتانیایی"
+ },
+ "my": {
+ "code": "my",
+ "name": "برمه‌ای"
+ },
+ "bg": {
+ "code": "bg",
+ "name": "بلغاری"
+ },
+ "be": {
+ "code": "be",
+ "name": "بلوروسی"
+ },
+ "bez": {
+ "code": "bez",
+ "name": "بنایی"
+ },
+ "bn": {
+ "code": "bn",
+ "name": "بنگالی"
+ },
+ "brx": {
+ "code": "brx",
+ "name": "بودویی"
+ },
+ "bs": {
+ "code": "bs",
+ "name": "بوسنیایی"
+ },
+ "nb": {
+ "code": "nb",
+ "name": "بوکسمال نروژی"
+ },
+ "pt-PT": {
+ "code": "pt-PT",
+ "name": "پرتغالی اروپا"
+ },
+ "pt-BR": {
+ "code": "pt-BR",
+ "name": "پرتغالی برزیل"
+ },
+ "pt": {
+ "code": "pt",
+ "name": "پرتگالی"
+ },
+ "ps": {
+ "code": "ps",
+ "name": "پشتو"
+ },
+ "pa": {
+ "code": "pa",
+ "name": "پنجابی"
+ },
+ "pl": {
+ "code": "pl",
+ "name": "پولندی"
+ },
+ "shi": {
+ "code": "shi",
+ "name": "تاچل‌هیت"
+ },
+ "ta": {
+ "code": "ta",
+ "name": "تامیلی"
+ },
+ "dav": {
+ "code": "dav",
+ "name": "تایتا"
+ },
+ "th": {
+ "code": "th",
+ "name": "تایلندی"
+ },
+ "bo": {
+ "code": "bo",
+ "name": "تبتی"
+ },
+ "az": {
+ "code": "az",
+ "name": "ترکی آذربایجانی"
+ },
+ "tr": {
+ "code": "tr",
+ "name": "ترکی استانبولی"
+ },
+ "twq": {
+ "code": "twq",
+ "name": "تسواکی"
+ },
+ "teo": {
+ "code": "teo",
+ "name": "تسویی"
+ },
+ "te": {
+ "code": "te",
+ "name": "تلوگویی"
+ },
+ "to": {
+ "code": "to",
+ "name": "تونگایی"
+ },
+ "ti": {
+ "code": "ti",
+ "name": "تیگرینیایی"
+ },
+ "ja": {
+ "code": "ja",
+ "name": "جاپانی"
+ },
+ "dz": {
+ "code": "dz",
+ "name": "جونخایی"
+ },
+ "chr": {
+ "code": "chr",
+ "name": "چروکیایی"
+ },
+ "cs": {
+ "code": "cs",
+ "name": "چکی"
+ },
+ "cgg": {
+ "code": "cgg",
+ "name": "چیگا"
+ },
+ "zh": {
+ "code": "zh",
+ "name": "چینی"
+ },
+ "zh-Hans": {
+ "code": "zh-Hans",
+ "name": "چینی ساده‌شده"
+ },
+ "zh-Hant": {
+ "code": "zh-Hant",
+ "name": "چینی سنتی"
+ },
+ "km": {
+ "code": "km",
+ "name": "خمری"
+ },
+ "da": {
+ "code": "da",
+ "name": "دانمارکی"
+ },
+ "fa": {
+ "code": "fa",
+ "name": "دری"
+ },
+ "dyo": {
+ "code": "dyo",
+ "name": "دیولا Ùونی"
+ },
+ "rwk": {
+ "code": "rwk",
+ "name": "روایی"
+ },
+ "ru": {
+ "code": "ru",
+ "name": "روسی"
+ },
+ "rm": {
+ "code": "rm",
+ "name": "رومانش"
+ },
+ "ro": {
+ "code": "ro",
+ "name": "رومانیایی"
+ },
+ "rof": {
+ "code": "rof",
+ "name": "رومبویی"
+ },
+ "rn": {
+ "code": "rn",
+ "name": "روندیایی"
+ },
+ "dje": {
+ "code": "dje",
+ "name": "زرما"
+ },
+ "zu": {
+ "code": "zu",
+ "name": "زولویی"
+ },
+ "saq": {
+ "code": "saq",
+ "name": "سامبورو"
+ },
+ "se": {
+ "code": "se",
+ "name": "سامی شمالی"
+ },
+ "sbp": {
+ "code": "sbp",
+ "name": "سانگو"
+ },
+ "sg": {
+ "code": "sg",
+ "name": "سانگویی"
+ },
+ "seh": {
+ "code": "seh",
+ "name": "سنا"
+ },
+ "sw": {
+ "code": "sw",
+ "name": "سواحلی"
+ },
+ "swc": {
+ "code": "swc",
+ "name": "سواحلی کنگویی"
+ },
+ "xog": {
+ "code": "xog",
+ "name": "سوگایی"
+ },
+ "so": {
+ "code": "so",
+ "name": "سومالیایی"
+ },
+ "sv": {
+ "code": "sv",
+ "name": "سویدنی"
+ },
+ "si": {
+ "code": "si",
+ "name": "سینهالی"
+ },
+ "ksb": {
+ "code": "ksb",
+ "name": "شامبالا"
+ },
+ "sn": {
+ "code": "sn",
+ "name": "شونایی"
+ },
+ "sr": {
+ "code": "sr",
+ "name": "صربی"
+ },
+ "dsb": {
+ "code": "dsb",
+ "name": "صÙربی سÙÙ„ÛŒ"
+ },
+ "hsb": {
+ "code": "hsb",
+ "name": "صÙربی علیا"
+ },
+ "he": {
+ "code": "he",
+ "name": "عبری"
+ },
+ "ar": {
+ "code": "ar",
+ "name": "عربی"
+ },
+ "ar-001": {
+ "code": "ar-001",
+ "name": "عربی رسمی"
+ },
+ "fo": {
+ "code": "fo",
+ "name": "Ùارویی"
+ },
+ "fr": {
+ "code": "fr",
+ "name": "Ùرانسوی"
+ },
+ "fr-CH": {
+ "code": "fr-CH",
+ "name": "Ùرانسوی سوئیس"
+ },
+ "fr-CA": {
+ "code": "fr-CA",
+ "name": "Ùرانسوی کانادا"
+ },
+ "fy": {
+ "code": "fy",
+ "name": "Ùریزی غربی"
+ },
+ "fur": {
+ "code": "fur",
+ "name": "Ùریولیایی"
+ },
+ "nl-BE": {
+ "code": "nl-BE",
+ "name": "Ùلمنگی"
+ },
+ "fi": {
+ "code": "fi",
+ "name": "Ùنلندی"
+ },
+ "ff": {
+ "code": "ff",
+ "name": "Ùولایی"
+ },
+ "fil": {
+ "code": "fil",
+ "name": "Ùیلیپینی"
+ },
+ "kab": {
+ "code": "kab",
+ "name": "قبایلی"
+ },
+ "ky": {
+ "code": "ky",
+ "name": "قرغزی"
+ },
+ "kk": {
+ "code": "kk",
+ "name": "قزاقی"
+ },
+ "kea": {
+ "code": "kea",
+ "name": "کابووردیانو"
+ },
+ "ca": {
+ "code": "ca",
+ "name": "کاتالان"
+ },
+ "kln": {
+ "code": "kln",
+ "name": "کالنجین"
+ },
+ "kam": {
+ "code": "kam",
+ "name": "کامبایی"
+ },
+ "kn": {
+ "code": "kn",
+ "name": "کاناده‌ای"
+ },
+ "hr": {
+ "code": "hr",
+ "name": "کروشیایی"
+ },
+ "ks": {
+ "code": "ks",
+ "name": "کشمیری"
+ },
+ "nmg": {
+ "code": "nmg",
+ "name": "کوازیو"
+ },
+ "khq": {
+ "code": "khq",
+ "name": "کوجراچینی"
+ },
+ "ko": {
+ "code": "ko",
+ "name": "کوریایی"
+ },
+ "ses": {
+ "code": "ses",
+ "name": "کویرابورا سنی"
+ },
+ "ki": {
+ "code": "ki",
+ "name": "کیکویویی"
+ },
+ "gl": {
+ "code": "gl",
+ "name": "گالیسیایی"
+ },
+ "lg": {
+ "code": "lg",
+ "name": "گاندایی"
+ },
+ "gu": {
+ "code": "gu",
+ "name": "گجراتی"
+ },
+ "ka": {
+ "code": "ka",
+ "name": "گرجی"
+ },
+ "kl": {
+ "code": "kl",
+ "name": "گرینلندی"
+ },
+ "guz": {
+ "code": "guz",
+ "name": "گوسی"
+ },
+ "gd": {
+ "code": "gd",
+ "name": "گیلی اسکاتلندی"
+ },
+ "lag": {
+ "code": "lag",
+ "name": "لانگی"
+ },
+ "lo": {
+ "code": "lo",
+ "name": "لائوسی"
+ },
+ "lv": {
+ "code": "lv",
+ "name": "لتونیایی"
+ },
+ "lu": {
+ "code": "lu",
+ "name": "لوباییâ€Ú©Ø§ØªØ§Ù†Ú¯Ø§"
+ },
+ "lb": {
+ "code": "lb",
+ "name": "لوگزامبورگی"
+ },
+ "luy": {
+ "code": "luy",
+ "name": "لویا"
+ },
+ "luo": {
+ "code": "luo",
+ "name": "لوئویی"
+ },
+ "lt": {
+ "code": "lt",
+ "name": "لیتوانیایی"
+ },
+ "ln": {
+ "code": "ln",
+ "name": "لینگالا"
+ },
+ "jmc": {
+ "code": "jmc",
+ "name": "ماچامه‌ای"
+ },
+ "mas": {
+ "code": "mas",
+ "name": "ماسایی"
+ },
+ "mgh": {
+ "code": "mgh",
+ "name": "ماکوا متو"
+ },
+ "kde": {
+ "code": "kde",
+ "name": "ماکونده"
+ },
+ "mg": {
+ "code": "mg",
+ "name": "مالاگاسیایی"
+ },
+ "ml": {
+ "code": "ml",
+ "name": "مالایالامی"
+ },
+ "ms": {
+ "code": "ms",
+ "name": "مالایی"
+ },
+ "mt": {
+ "code": "mt",
+ "name": "مالتی"
+ },
+ "mua": {
+ "code": "mua",
+ "name": "ماندانگی"
+ },
+ "hu": {
+ "code": "hu",
+ "name": "مجاری"
+ },
+ "mr": {
+ "code": "mr",
+ "name": "مراتی"
+ },
+ "mer": {
+ "code": "mer",
+ "name": "مرویی"
+ },
+ "mn": {
+ "code": "mn",
+ "name": "مغلی"
+ },
+ "mk": {
+ "code": "mk",
+ "name": "مقدونی"
+ },
+ "mfe": {
+ "code": "mfe",
+ "name": "موریسین"
+ },
+ "ro-MD": {
+ "code": "ro-MD",
+ "name": "مولداویایی"
+ },
+ "naq": {
+ "code": "naq",
+ "name": "نامایی"
+ },
+ "nn": {
+ "code": "nn",
+ "name": "نرس جدید نروژی"
+ },
+ "jgo": {
+ "code": "jgo",
+ "name": "نگومبا"
+ },
+ "nus": {
+ "code": "nus",
+ "name": "نویر"
+ },
+ "nyn": {
+ "code": "nyn",
+ "name": "نیانکوله‌ای"
+ },
+ "ne": {
+ "code": "ne",
+ "name": "نیپالی"
+ },
+ "nl": {
+ "code": "nl",
+ "name": "هالندی"
+ },
+ "es": {
+ "code": "es",
+ "name": "هسپانوی"
+ },
+ "hi": {
+ "code": "hi",
+ "name": "هندی"
+ },
+ "ha": {
+ "code": "ha",
+ "name": "هوسیایی"
+ },
+ "vun": {
+ "code": "vun",
+ "name": "ونجو"
+ },
+ "vai": {
+ "code": "vai",
+ "name": "ویایی"
+ },
+ "vi": {
+ "code": "vi",
+ "name": "ویتنامی"
+ },
+ "cy": {
+ "code": "cy",
+ "name": "ویلزی"
+ },
+ "yo": {
+ "code": "yo",
+ "name": "یوروبایی"
+ },
+ "el": {
+ "code": "el",
+ "name": "یونانی"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/language/fa.json b/library/intl/resources/language/fa.json
new file mode 100644
index 000000000..a09658ef2
--- /dev/null
+++ b/library/intl/resources/language/fa.json
@@ -0,0 +1,738 @@
+{
+ "ksh": {
+ "code": "ksh",
+ "name": "Colognian"
+ },
+ "wae": {
+ "code": "wae",
+ "name": "Walser"
+ },
+ "yav": {
+ "code": "yav",
+ "name": "Yangben"
+ },
+ "ast": {
+ "code": "ast",
+ "name": "آستوری"
+ },
+ "asa": {
+ "code": "asa",
+ "name": "آسو"
+ },
+ "af": {
+ "code": "af",
+ "name": "Ø¢Ùریکانس"
+ },
+ "ak": {
+ "code": "ak",
+ "name": "آکان"
+ },
+ "agq": {
+ "code": "agq",
+ "name": "آگیم"
+ },
+ "sq": {
+ "code": "sq",
+ "name": "آلبانیایی"
+ },
+ "de": {
+ "code": "de",
+ "name": "آلمانی"
+ },
+ "de-AT": {
+ "code": "de-AT",
+ "name": "آلمانی اتریش"
+ },
+ "gsw": {
+ "code": "gsw",
+ "name": "آلمانی سوئیسی"
+ },
+ "de-CH": {
+ "code": "de-CH",
+ "name": "آلمانی علیای سوئیس"
+ },
+ "tzm": {
+ "code": "tzm",
+ "name": "آمازیغی اطلس مرکزی"
+ },
+ "zgh": {
+ "code": "zgh",
+ "name": "آمازیغی معیار مراکش"
+ },
+ "ur": {
+ "code": "ur",
+ "name": "اردو"
+ },
+ "hy": {
+ "code": "hy",
+ "name": "ارمنی"
+ },
+ "uz": {
+ "code": "uz",
+ "name": "ازبکی"
+ },
+ "es": {
+ "code": "es",
+ "name": "اسپانیایی"
+ },
+ "es-ES": {
+ "code": "es-ES",
+ "name": "اسپانیایی اروپا"
+ },
+ "es-MX": {
+ "code": "es-MX",
+ "name": "اسپانیایی مکزیک"
+ },
+ "eo": {
+ "code": "eo",
+ "name": "اسپرانتو"
+ },
+ "et": {
+ "code": "et",
+ "name": "استونیایی"
+ },
+ "sk": {
+ "code": "sk",
+ "name": "اسلواکی"
+ },
+ "sl": {
+ "code": "sl",
+ "name": "اسلووینیایی"
+ },
+ "ebu": {
+ "code": "ebu",
+ "name": "امبو"
+ },
+ "am": {
+ "code": "am",
+ "name": "امهری"
+ },
+ "id": {
+ "code": "id",
+ "name": "اندونزیایی"
+ },
+ "nd": {
+ "code": "nd",
+ "name": "انده‌بله‌ای شمالی"
+ },
+ "en": {
+ "code": "en",
+ "name": "انگلیسی"
+ },
+ "en-AU": {
+ "code": "en-AU",
+ "name": "انگلیسی استرالیا"
+ },
+ "en-US": {
+ "code": "en-US",
+ "name": "انگلیسی امریکا"
+ },
+ "en-GB": {
+ "code": "en-GB",
+ "name": "انگلیسی بریتانیا"
+ },
+ "en-CA": {
+ "code": "en-CA",
+ "name": "انگلیسی کانادا"
+ },
+ "ewo": {
+ "code": "ewo",
+ "name": "اواندو"
+ },
+ "or": {
+ "code": "or",
+ "name": "اوریه‌ای"
+ },
+ "uk": {
+ "code": "uk",
+ "name": "اوکراینی"
+ },
+ "ee": {
+ "code": "ee",
+ "name": "اوه‌ای"
+ },
+ "ug": {
+ "code": "ug",
+ "name": "اویغوری"
+ },
+ "it": {
+ "code": "it",
+ "name": "ایتالیایی"
+ },
+ "ga": {
+ "code": "ga",
+ "name": "ایرلندی"
+ },
+ "is": {
+ "code": "is",
+ "name": "ایسلندی"
+ },
+ "bas": {
+ "code": "bas",
+ "name": "باسایی"
+ },
+ "eu": {
+ "code": "eu",
+ "name": "باسکی"
+ },
+ "ksf": {
+ "code": "ksf",
+ "name": "باÙیایی"
+ },
+ "bm": {
+ "code": "bm",
+ "name": "بامبارایی"
+ },
+ "br": {
+ "code": "br",
+ "name": "برتانیایی"
+ },
+ "my": {
+ "code": "my",
+ "name": "برمه‌ای"
+ },
+ "bg": {
+ "code": "bg",
+ "name": "بلغاری"
+ },
+ "be": {
+ "code": "be",
+ "name": "بلوروسی"
+ },
+ "bez": {
+ "code": "bez",
+ "name": "بنایی"
+ },
+ "bn": {
+ "code": "bn",
+ "name": "بنگالی"
+ },
+ "brx": {
+ "code": "brx",
+ "name": "بودویی"
+ },
+ "bs": {
+ "code": "bs",
+ "name": "بوسنیایی"
+ },
+ "nb": {
+ "code": "nb",
+ "name": "بوکسمال نروژی"
+ },
+ "pt": {
+ "code": "pt",
+ "name": "پرتغالی"
+ },
+ "pt-PT": {
+ "code": "pt-PT",
+ "name": "پرتغالی اروپا"
+ },
+ "pt-BR": {
+ "code": "pt-BR",
+ "name": "پرتغالی برزیل"
+ },
+ "ps": {
+ "code": "ps",
+ "name": "پشتو"
+ },
+ "pa": {
+ "code": "pa",
+ "name": "پنجابی"
+ },
+ "shi": {
+ "code": "shi",
+ "name": "تاچل‌هیت"
+ },
+ "ta": {
+ "code": "ta",
+ "name": "تامیلی"
+ },
+ "dav": {
+ "code": "dav",
+ "name": "تایتا"
+ },
+ "th": {
+ "code": "th",
+ "name": "تایلندی"
+ },
+ "bo": {
+ "code": "bo",
+ "name": "تبتی"
+ },
+ "az": {
+ "code": "az",
+ "name": "ترکی آذربایجانی"
+ },
+ "tr": {
+ "code": "tr",
+ "name": "ترکی استانبولی"
+ },
+ "twq": {
+ "code": "twq",
+ "name": "تسواکی"
+ },
+ "teo": {
+ "code": "teo",
+ "name": "تسویی"
+ },
+ "te": {
+ "code": "te",
+ "name": "تلوگویی"
+ },
+ "to": {
+ "code": "to",
+ "name": "تونگایی"
+ },
+ "ti": {
+ "code": "ti",
+ "name": "تیگرینیایی"
+ },
+ "dz": {
+ "code": "dz",
+ "name": "جونخایی"
+ },
+ "chr": {
+ "code": "chr",
+ "name": "چروکیایی"
+ },
+ "cs": {
+ "code": "cs",
+ "name": "چکی"
+ },
+ "cgg": {
+ "code": "cgg",
+ "name": "چیگا"
+ },
+ "zh": {
+ "code": "zh",
+ "name": "چینی"
+ },
+ "zh-Hans": {
+ "code": "zh-Hans",
+ "name": "چینی ساده‌شده"
+ },
+ "zh-Hant": {
+ "code": "zh-Hant",
+ "name": "چینی سنتی"
+ },
+ "km": {
+ "code": "km",
+ "name": "خمری"
+ },
+ "da": {
+ "code": "da",
+ "name": "دانمارکی"
+ },
+ "dyo": {
+ "code": "dyo",
+ "name": "دیولا Ùونی"
+ },
+ "rwk": {
+ "code": "rwk",
+ "name": "روایی"
+ },
+ "ru": {
+ "code": "ru",
+ "name": "روسی"
+ },
+ "rm": {
+ "code": "rm",
+ "name": "رومانش"
+ },
+ "ro": {
+ "code": "ro",
+ "name": "رومانیایی"
+ },
+ "rof": {
+ "code": "rof",
+ "name": "رومبویی"
+ },
+ "rn": {
+ "code": "rn",
+ "name": "روندیایی"
+ },
+ "dje": {
+ "code": "dje",
+ "name": "زرما"
+ },
+ "zu": {
+ "code": "zu",
+ "name": "زولویی"
+ },
+ "ja": {
+ "code": "ja",
+ "name": "ژاپنی"
+ },
+ "saq": {
+ "code": "saq",
+ "name": "سامبورو"
+ },
+ "se": {
+ "code": "se",
+ "name": "سامی شمالی"
+ },
+ "sbp": {
+ "code": "sbp",
+ "name": "سانگو"
+ },
+ "sg": {
+ "code": "sg",
+ "name": "سانگویی"
+ },
+ "seh": {
+ "code": "seh",
+ "name": "سنا"
+ },
+ "sw": {
+ "code": "sw",
+ "name": "سواحلی"
+ },
+ "swc": {
+ "code": "swc",
+ "name": "سواحلی کنگویی"
+ },
+ "sv": {
+ "code": "sv",
+ "name": "سوئدی"
+ },
+ "xog": {
+ "code": "xog",
+ "name": "سوگایی"
+ },
+ "so": {
+ "code": "so",
+ "name": "سومالیایی"
+ },
+ "si": {
+ "code": "si",
+ "name": "سینهالی"
+ },
+ "ksb": {
+ "code": "ksb",
+ "name": "شامبالا"
+ },
+ "sn": {
+ "code": "sn",
+ "name": "شونایی"
+ },
+ "sr": {
+ "code": "sr",
+ "name": "صربی"
+ },
+ "dsb": {
+ "code": "dsb",
+ "name": "صÙربی سÙÙ„ÛŒ"
+ },
+ "hsb": {
+ "code": "hsb",
+ "name": "صÙربی علیا"
+ },
+ "he": {
+ "code": "he",
+ "name": "عبری"
+ },
+ "ar": {
+ "code": "ar",
+ "name": "عربی"
+ },
+ "ar-001": {
+ "code": "ar-001",
+ "name": "عربی رسمی"
+ },
+ "fa": {
+ "code": "fa",
+ "name": "Ùارسی"
+ },
+ "fo": {
+ "code": "fo",
+ "name": "Ùارویی"
+ },
+ "fr": {
+ "code": "fr",
+ "name": "Ùرانسوی"
+ },
+ "fr-CH": {
+ "code": "fr-CH",
+ "name": "Ùرانسوی سوئیس"
+ },
+ "fr-CA": {
+ "code": "fr-CA",
+ "name": "Ùرانسوی کانادا"
+ },
+ "fy": {
+ "code": "fy",
+ "name": "Ùریزی غربی"
+ },
+ "fur": {
+ "code": "fur",
+ "name": "Ùریولیایی"
+ },
+ "nl-BE": {
+ "code": "nl-BE",
+ "name": "Ùلمنگی"
+ },
+ "fi": {
+ "code": "fi",
+ "name": "Ùنلاندی"
+ },
+ "ff": {
+ "code": "ff",
+ "name": "Ùولایی"
+ },
+ "fil": {
+ "code": "fil",
+ "name": "Ùیلیپینی"
+ },
+ "kab": {
+ "code": "kab",
+ "name": "قبایلی"
+ },
+ "ky": {
+ "code": "ky",
+ "name": "قرقیزی"
+ },
+ "kk": {
+ "code": "kk",
+ "name": "قزاقی"
+ },
+ "kea": {
+ "code": "kea",
+ "name": "کابووردیانو"
+ },
+ "ca": {
+ "code": "ca",
+ "name": "کاتالان"
+ },
+ "kln": {
+ "code": "kln",
+ "name": "کالنجین"
+ },
+ "kam": {
+ "code": "kam",
+ "name": "کامبایی"
+ },
+ "kn": {
+ "code": "kn",
+ "name": "کاناده‌ای"
+ },
+ "hr": {
+ "code": "hr",
+ "name": "کروات"
+ },
+ "ko": {
+ "code": "ko",
+ "name": "کره‌ای"
+ },
+ "ks": {
+ "code": "ks",
+ "name": "کشمیری"
+ },
+ "nmg": {
+ "code": "nmg",
+ "name": "کوازیو"
+ },
+ "khq": {
+ "code": "khq",
+ "name": "کوجراچینی"
+ },
+ "ses": {
+ "code": "ses",
+ "name": "کویرابورا سنی"
+ },
+ "ki": {
+ "code": "ki",
+ "name": "کیکویویی"
+ },
+ "gl": {
+ "code": "gl",
+ "name": "گالیسیایی"
+ },
+ "lg": {
+ "code": "lg",
+ "name": "گاندایی"
+ },
+ "gu": {
+ "code": "gu",
+ "name": "گجراتی"
+ },
+ "ka": {
+ "code": "ka",
+ "name": "گرجی"
+ },
+ "kl": {
+ "code": "kl",
+ "name": "گرینلندی"
+ },
+ "guz": {
+ "code": "guz",
+ "name": "گوسی"
+ },
+ "gd": {
+ "code": "gd",
+ "name": "گیلی اسکاتلندی"
+ },
+ "lo": {
+ "code": "lo",
+ "name": "لائوسی"
+ },
+ "lag": {
+ "code": "lag",
+ "name": "لانگی"
+ },
+ "lv": {
+ "code": "lv",
+ "name": "لتونیایی"
+ },
+ "luo": {
+ "code": "luo",
+ "name": "لوئویی"
+ },
+ "lu": {
+ "code": "lu",
+ "name": "لوباییâ€Ú©Ø§ØªØ§Ù†Ú¯Ø§"
+ },
+ "lb": {
+ "code": "lb",
+ "name": "لوگزامبورگی"
+ },
+ "luy": {
+ "code": "luy",
+ "name": "لویا"
+ },
+ "pl": {
+ "code": "pl",
+ "name": "لهستانی"
+ },
+ "lt": {
+ "code": "lt",
+ "name": "لیتوانیایی"
+ },
+ "ln": {
+ "code": "ln",
+ "name": "لینگالا"
+ },
+ "jmc": {
+ "code": "jmc",
+ "name": "ماچامه‌ای"
+ },
+ "mas": {
+ "code": "mas",
+ "name": "ماسایی"
+ },
+ "mgh": {
+ "code": "mgh",
+ "name": "ماکوا متو"
+ },
+ "kde": {
+ "code": "kde",
+ "name": "ماکونده"
+ },
+ "mg": {
+ "code": "mg",
+ "name": "مالاگاسیایی"
+ },
+ "ml": {
+ "code": "ml",
+ "name": "مالایالامی"
+ },
+ "ms": {
+ "code": "ms",
+ "name": "مالایی"
+ },
+ "mt": {
+ "code": "mt",
+ "name": "مالتی"
+ },
+ "mua": {
+ "code": "mua",
+ "name": "ماندانگی"
+ },
+ "hu": {
+ "code": "hu",
+ "name": "مجاری"
+ },
+ "mr": {
+ "code": "mr",
+ "name": "مراتی"
+ },
+ "mer": {
+ "code": "mer",
+ "name": "مرویی"
+ },
+ "mn": {
+ "code": "mn",
+ "name": "مغولی"
+ },
+ "mk": {
+ "code": "mk",
+ "name": "مقدونی"
+ },
+ "mfe": {
+ "code": "mfe",
+ "name": "موریسین"
+ },
+ "ro-MD": {
+ "code": "ro-MD",
+ "name": "مولداویایی"
+ },
+ "naq": {
+ "code": "naq",
+ "name": "نامایی"
+ },
+ "ne": {
+ "code": "ne",
+ "name": "نپالی"
+ },
+ "nn": {
+ "code": "nn",
+ "name": "نرس جدید نروژی"
+ },
+ "jgo": {
+ "code": "jgo",
+ "name": "نگومبا"
+ },
+ "nus": {
+ "code": "nus",
+ "name": "نویر"
+ },
+ "nyn": {
+ "code": "nyn",
+ "name": "نیانکوله‌ای"
+ },
+ "vun": {
+ "code": "vun",
+ "name": "ونجو"
+ },
+ "vai": {
+ "code": "vai",
+ "name": "ویایی"
+ },
+ "vi": {
+ "code": "vi",
+ "name": "ویتنامی"
+ },
+ "cy": {
+ "code": "cy",
+ "name": "ویلزی"
+ },
+ "nl": {
+ "code": "nl",
+ "name": "هلندی"
+ },
+ "hi": {
+ "code": "hi",
+ "name": "هندی"
+ },
+ "ha": {
+ "code": "ha",
+ "name": "هوسیایی"
+ },
+ "yo": {
+ "code": "yo",
+ "name": "یوروبایی"
+ },
+ "el": {
+ "code": "el",
+ "name": "یونانی"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/language/ff.json b/library/intl/resources/language/ff.json
new file mode 100644
index 000000000..bf5e4df7f
--- /dev/null
+++ b/library/intl/resources/language/ff.json
@@ -0,0 +1,738 @@
+{
+ "ar": {
+ "code": "ar",
+ "name": "Aarabeere"
+ },
+ "af": {
+ "code": "af",
+ "name": "Afrikaans"
+ },
+ "agq": {
+ "code": "agq",
+ "name": "Aghem"
+ },
+ "ak": {
+ "code": "ak",
+ "name": "Akaan"
+ },
+ "sq": {
+ "code": "sq",
+ "name": "Albanian"
+ },
+ "am": {
+ "code": "am",
+ "name": "Amarik"
+ },
+ "ar-001": {
+ "code": "ar-001",
+ "name": "ar_001"
+ },
+ "hy": {
+ "code": "hy",
+ "name": "Armenian"
+ },
+ "ast": {
+ "code": "ast",
+ "name": "Asturian"
+ },
+ "asa": {
+ "code": "asa",
+ "name": "Asu"
+ },
+ "az": {
+ "code": "az",
+ "name": "Azerbaijani"
+ },
+ "ksf": {
+ "code": "ksf",
+ "name": "Bafia"
+ },
+ "bm": {
+ "code": "bm",
+ "name": "Bambara"
+ },
+ "bas": {
+ "code": "bas",
+ "name": "Basaa"
+ },
+ "eu": {
+ "code": "eu",
+ "name": "Basque"
+ },
+ "be": {
+ "code": "be",
+ "name": "Belaruuse"
+ },
+ "bez": {
+ "code": "bez",
+ "name": "Bena"
+ },
+ "bn": {
+ "code": "bn",
+ "name": "Bengali"
+ },
+ "brx": {
+ "code": "brx",
+ "name": "Bodo"
+ },
+ "bs": {
+ "code": "bs",
+ "name": "Bosnian"
+ },
+ "br": {
+ "code": "br",
+ "name": "Breton"
+ },
+ "bg": {
+ "code": "bg",
+ "name": "Bulgariire"
+ },
+ "my": {
+ "code": "my",
+ "name": "Burmeese"
+ },
+ "ca": {
+ "code": "ca",
+ "name": "Catalan"
+ },
+ "cs": {
+ "code": "cs",
+ "name": "Cekkere"
+ },
+ "tzm": {
+ "code": "tzm",
+ "name": "Central Atlas Tamazight"
+ },
+ "chr": {
+ "code": "chr",
+ "name": "Cherokee"
+ },
+ "cgg": {
+ "code": "cgg",
+ "name": "Chiga"
+ },
+ "ksh": {
+ "code": "ksh",
+ "name": "Colognian"
+ },
+ "swc": {
+ "code": "swc",
+ "name": "Congo Swahili"
+ },
+ "hr": {
+ "code": "hr",
+ "name": "Croatian"
+ },
+ "nl": {
+ "code": "nl",
+ "name": "Dacceere"
+ },
+ "da": {
+ "code": "da",
+ "name": "Danish"
+ },
+ "de-AT": {
+ "code": "de-AT",
+ "name": "de_AT"
+ },
+ "de-CH": {
+ "code": "de-CH",
+ "name": "de_CH"
+ },
+ "de": {
+ "code": "de",
+ "name": "Docceere"
+ },
+ "dz": {
+ "code": "dz",
+ "name": "Dzongkha"
+ },
+ "ebu": {
+ "code": "ebu",
+ "name": "Embu"
+ },
+ "en-AU": {
+ "code": "en-AU",
+ "name": "en_AU"
+ },
+ "en-CA": {
+ "code": "en-CA",
+ "name": "en_CA"
+ },
+ "en-GB": {
+ "code": "en-GB",
+ "name": "en_GB"
+ },
+ "en-US": {
+ "code": "en-US",
+ "name": "en_US"
+ },
+ "id": {
+ "code": "id",
+ "name": "Endonesiire"
+ },
+ "en": {
+ "code": "en",
+ "name": "Engeleere"
+ },
+ "es-ES": {
+ "code": "es-ES",
+ "name": "es_ES"
+ },
+ "es-MX": {
+ "code": "es-MX",
+ "name": "es_MX"
+ },
+ "es": {
+ "code": "es",
+ "name": "Español"
+ },
+ "eo": {
+ "code": "eo",
+ "name": "Esperanto"
+ },
+ "et": {
+ "code": "et",
+ "name": "Estonian"
+ },
+ "ee": {
+ "code": "ee",
+ "name": "Ewe"
+ },
+ "ewo": {
+ "code": "ewo",
+ "name": "Ewondo"
+ },
+ "fr": {
+ "code": "fr",
+ "name": "Farayseere"
+ },
+ "fo": {
+ "code": "fo",
+ "name": "Faroese"
+ },
+ "fil": {
+ "code": "fil",
+ "name": "Filipino"
+ },
+ "fi": {
+ "code": "fi",
+ "name": "Finnish"
+ },
+ "fr-CA": {
+ "code": "fr-CA",
+ "name": "fr_CA"
+ },
+ "fr-CH": {
+ "code": "fr-CH",
+ "name": "fr_CH"
+ },
+ "fur": {
+ "code": "fur",
+ "name": "Friulian"
+ },
+ "gl": {
+ "code": "gl",
+ "name": "Galician"
+ },
+ "lg": {
+ "code": "lg",
+ "name": "Ganda"
+ },
+ "ka": {
+ "code": "ka",
+ "name": "Georgian"
+ },
+ "el": {
+ "code": "el",
+ "name": "Gerke"
+ },
+ "gu": {
+ "code": "gu",
+ "name": "Gujarati"
+ },
+ "guz": {
+ "code": "guz",
+ "name": "Gusii"
+ },
+ "ha": {
+ "code": "ha",
+ "name": "Hawsaŋkoore"
+ },
+ "he": {
+ "code": "he",
+ "name": "Hebrew"
+ },
+ "hi": {
+ "code": "hi",
+ "name": "Hinndi"
+ },
+ "hu": {
+ "code": "hu",
+ "name": "Hongariire"
+ },
+ "is": {
+ "code": "is",
+ "name": "Icelandic"
+ },
+ "ga": {
+ "code": "ga",
+ "name": "Irish"
+ },
+ "it": {
+ "code": "it",
+ "name": "Italiyeere"
+ },
+ "dyo": {
+ "code": "dyo",
+ "name": "Jola-Fonyi"
+ },
+ "kea": {
+ "code": "kea",
+ "name": "Kabuverdianu"
+ },
+ "kab": {
+ "code": "kab",
+ "name": "Kabyle"
+ },
+ "kl": {
+ "code": "kl",
+ "name": "Kalaallisut"
+ },
+ "kln": {
+ "code": "kln",
+ "name": "Kalenjin"
+ },
+ "kam": {
+ "code": "kam",
+ "name": "Kamba"
+ },
+ "kn": {
+ "code": "kn",
+ "name": "Kannada"
+ },
+ "ks": {
+ "code": "ks",
+ "name": "Kashmiri"
+ },
+ "kk": {
+ "code": "kk",
+ "name": "Kazakh"
+ },
+ "km": {
+ "code": "km",
+ "name": "Kemeere"
+ },
+ "ki": {
+ "code": "ki",
+ "name": "Kikuyu"
+ },
+ "ko": {
+ "code": "ko",
+ "name": "Koreere"
+ },
+ "khq": {
+ "code": "khq",
+ "name": "Koyra Chiini"
+ },
+ "ses": {
+ "code": "ses",
+ "name": "Koyraboro Senni"
+ },
+ "nmg": {
+ "code": "nmg",
+ "name": "Kwasio"
+ },
+ "ky": {
+ "code": "ky",
+ "name": "Kyrgyz"
+ },
+ "lag": {
+ "code": "lag",
+ "name": "Langi"
+ },
+ "lo": {
+ "code": "lo",
+ "name": "Lao"
+ },
+ "lv": {
+ "code": "lv",
+ "name": "Latvian"
+ },
+ "ln": {
+ "code": "ln",
+ "name": "Lingala"
+ },
+ "lt": {
+ "code": "lt",
+ "name": "Lithuanian"
+ },
+ "dsb": {
+ "code": "dsb",
+ "name": "Lower Sorbian"
+ },
+ "lu": {
+ "code": "lu",
+ "name": "Luba-Katanga"
+ },
+ "luo": {
+ "code": "luo",
+ "name": "Luo"
+ },
+ "lb": {
+ "code": "lb",
+ "name": "Luxembourgish"
+ },
+ "luy": {
+ "code": "luy",
+ "name": "Luyia"
+ },
+ "mk": {
+ "code": "mk",
+ "name": "Macedonian"
+ },
+ "jmc": {
+ "code": "jmc",
+ "name": "Machame"
+ },
+ "mgh": {
+ "code": "mgh",
+ "name": "Makhuwa-Meetto"
+ },
+ "kde": {
+ "code": "kde",
+ "name": "Makonde"
+ },
+ "mg": {
+ "code": "mg",
+ "name": "Malagasy"
+ },
+ "ml": {
+ "code": "ml",
+ "name": "Malayalam"
+ },
+ "ms": {
+ "code": "ms",
+ "name": "Malayeere"
+ },
+ "mt": {
+ "code": "mt",
+ "name": "Maltese"
+ },
+ "mr": {
+ "code": "mr",
+ "name": "Marathi"
+ },
+ "mas": {
+ "code": "mas",
+ "name": "Masai"
+ },
+ "mer": {
+ "code": "mer",
+ "name": "Meru"
+ },
+ "mn": {
+ "code": "mn",
+ "name": "Mongolian"
+ },
+ "mfe": {
+ "code": "mfe",
+ "name": "Morisyen"
+ },
+ "mua": {
+ "code": "mua",
+ "name": "Mundang"
+ },
+ "naq": {
+ "code": "naq",
+ "name": "Nama"
+ },
+ "ne": {
+ "code": "ne",
+ "name": "Nepaaleere"
+ },
+ "jgo": {
+ "code": "jgo",
+ "name": "Ngomba"
+ },
+ "nl-BE": {
+ "code": "nl-BE",
+ "name": "nl_BE"
+ },
+ "nd": {
+ "code": "nd",
+ "name": "North Ndebele"
+ },
+ "se": {
+ "code": "se",
+ "name": "Northern Sami"
+ },
+ "nb": {
+ "code": "nb",
+ "name": "Norwegian Bokmål"
+ },
+ "nn": {
+ "code": "nn",
+ "name": "Norwegian Nynorsk"
+ },
+ "nus": {
+ "code": "nus",
+ "name": "Nuer"
+ },
+ "nyn": {
+ "code": "nyn",
+ "name": "Nyankole"
+ },
+ "or": {
+ "code": "or",
+ "name": "Oriya"
+ },
+ "ps": {
+ "code": "ps",
+ "name": "Pashto"
+ },
+ "fa": {
+ "code": "fa",
+ "name": "Perseere"
+ },
+ "pl": {
+ "code": "pl",
+ "name": "Poloneere"
+ },
+ "pt-BR": {
+ "code": "pt-BR",
+ "name": "pt_BR"
+ },
+ "pt-PT": {
+ "code": "pt-PT",
+ "name": "pt_PT"
+ },
+ "ff": {
+ "code": "ff",
+ "name": "Pulaar"
+ },
+ "pa": {
+ "code": "pa",
+ "name": "Punjabeere"
+ },
+ "pt": {
+ "code": "pt",
+ "name": "Purtugeere"
+ },
+ "ru": {
+ "code": "ru",
+ "name": "Riis"
+ },
+ "ro-MD": {
+ "code": "ro-MD",
+ "name": "ro_MD"
+ },
+ "ro": {
+ "code": "ro",
+ "name": "Romaneere"
+ },
+ "rm": {
+ "code": "rm",
+ "name": "Romansh"
+ },
+ "rof": {
+ "code": "rof",
+ "name": "Rombo"
+ },
+ "rn": {
+ "code": "rn",
+ "name": "Rundi"
+ },
+ "rwk": {
+ "code": "rwk",
+ "name": "Rwa"
+ },
+ "saq": {
+ "code": "saq",
+ "name": "Samburu"
+ },
+ "sg": {
+ "code": "sg",
+ "name": "Sango"
+ },
+ "sbp": {
+ "code": "sbp",
+ "name": "Sangu"
+ },
+ "ja": {
+ "code": "ja",
+ "name": "Saponeere"
+ },
+ "gd": {
+ "code": "gd",
+ "name": "Scottish Gaelic"
+ },
+ "seh": {
+ "code": "seh",
+ "name": "Sena"
+ },
+ "sr": {
+ "code": "sr",
+ "name": "Serbian"
+ },
+ "ksb": {
+ "code": "ksb",
+ "name": "Shambala"
+ },
+ "sn": {
+ "code": "sn",
+ "name": "Shona"
+ },
+ "si": {
+ "code": "si",
+ "name": "Sinhala"
+ },
+ "zh": {
+ "code": "zh",
+ "name": "Sinuwaare"
+ },
+ "sk": {
+ "code": "sk",
+ "name": "Slovak"
+ },
+ "sl": {
+ "code": "sl",
+ "name": "Slovenian"
+ },
+ "xog": {
+ "code": "xog",
+ "name": "Soga"
+ },
+ "so": {
+ "code": "so",
+ "name": "Somalii"
+ },
+ "zgh": {
+ "code": "zgh",
+ "name": "Standard Moroccan Tamazight"
+ },
+ "zu": {
+ "code": "zu",
+ "name": "Suluŋkoore"
+ },
+ "sw": {
+ "code": "sw",
+ "name": "Swahili"
+ },
+ "sv": {
+ "code": "sv",
+ "name": "Sweedeere"
+ },
+ "gsw": {
+ "code": "gsw",
+ "name": "Swiss German"
+ },
+ "th": {
+ "code": "th",
+ "name": "Taay"
+ },
+ "shi": {
+ "code": "shi",
+ "name": "Tachelhit"
+ },
+ "dav": {
+ "code": "dav",
+ "name": "Taita"
+ },
+ "ta": {
+ "code": "ta",
+ "name": "Tamil"
+ },
+ "twq": {
+ "code": "twq",
+ "name": "Tasawaq"
+ },
+ "te": {
+ "code": "te",
+ "name": "Telugu"
+ },
+ "teo": {
+ "code": "teo",
+ "name": "Teso"
+ },
+ "bo": {
+ "code": "bo",
+ "name": "Tibetan"
+ },
+ "ti": {
+ "code": "ti",
+ "name": "Tigrinya"
+ },
+ "to": {
+ "code": "to",
+ "name": "Tongan"
+ },
+ "tr": {
+ "code": "tr",
+ "name": "Turkeere"
+ },
+ "uk": {
+ "code": "uk",
+ "name": "Ukereneere"
+ },
+ "hsb": {
+ "code": "hsb",
+ "name": "Upper Sorbian"
+ },
+ "ur": {
+ "code": "ur",
+ "name": "Urdu"
+ },
+ "ug": {
+ "code": "ug",
+ "name": "Uyghur"
+ },
+ "uz": {
+ "code": "uz",
+ "name": "Uzbek"
+ },
+ "vai": {
+ "code": "vai",
+ "name": "Vai"
+ },
+ "vun": {
+ "code": "vun",
+ "name": "Vunjo"
+ },
+ "wae": {
+ "code": "wae",
+ "name": "Walser"
+ },
+ "cy": {
+ "code": "cy",
+ "name": "Welsh"
+ },
+ "fy": {
+ "code": "fy",
+ "name": "Western Frisian"
+ },
+ "vi": {
+ "code": "vi",
+ "name": "Wiyetnameere"
+ },
+ "yav": {
+ "code": "yav",
+ "name": "Yangben"
+ },
+ "yo": {
+ "code": "yo",
+ "name": "Yorrubaa"
+ },
+ "dje": {
+ "code": "dje",
+ "name": "Zarma"
+ },
+ "zh-Hans": {
+ "code": "zh-Hans",
+ "name": "zh_Hans"
+ },
+ "zh-Hant": {
+ "code": "zh-Hant",
+ "name": "zh_Hant"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/language/fi.json b/library/intl/resources/language/fi.json
new file mode 100644
index 000000000..44434b238
--- /dev/null
+++ b/library/intl/resources/language/fi.json
@@ -0,0 +1,738 @@
+{
+ "af": {
+ "code": "af",
+ "name": "afrikaans"
+ },
+ "agq": {
+ "code": "agq",
+ "name": "aghem"
+ },
+ "ak": {
+ "code": "ak",
+ "name": "akan"
+ },
+ "dsb": {
+ "code": "dsb",
+ "name": "alasorbi"
+ },
+ "sq": {
+ "code": "sq",
+ "name": "albania"
+ },
+ "en-US": {
+ "code": "en-US",
+ "name": "amerikanenglanti"
+ },
+ "am": {
+ "code": "am",
+ "name": "amhara"
+ },
+ "ar": {
+ "code": "ar",
+ "name": "arabia"
+ },
+ "hy": {
+ "code": "hy",
+ "name": "armenia"
+ },
+ "ast": {
+ "code": "ast",
+ "name": "asturia"
+ },
+ "asa": {
+ "code": "asa",
+ "name": "asu"
+ },
+ "en-AU": {
+ "code": "en-AU",
+ "name": "australianenglanti"
+ },
+ "az": {
+ "code": "az",
+ "name": "azeri"
+ },
+ "ksf": {
+ "code": "ksf",
+ "name": "bafia"
+ },
+ "bm": {
+ "code": "bm",
+ "name": "bambara"
+ },
+ "bas": {
+ "code": "bas",
+ "name": "basaa"
+ },
+ "eu": {
+ "code": "eu",
+ "name": "baski"
+ },
+ "bez": {
+ "code": "bez",
+ "name": "bena"
+ },
+ "bn": {
+ "code": "bn",
+ "name": "bengali"
+ },
+ "brx": {
+ "code": "brx",
+ "name": "bodo"
+ },
+ "bs": {
+ "code": "bs",
+ "name": "bosnia"
+ },
+ "pt-BR": {
+ "code": "pt-BR",
+ "name": "brasilianportugali"
+ },
+ "br": {
+ "code": "br",
+ "name": "bretoni"
+ },
+ "en-GB": {
+ "code": "en-GB",
+ "name": "britannianenglanti"
+ },
+ "bg": {
+ "code": "bg",
+ "name": "bulgaria"
+ },
+ "my": {
+ "code": "my",
+ "name": "burma"
+ },
+ "chr": {
+ "code": "chr",
+ "name": "cherokee"
+ },
+ "dje": {
+ "code": "dje",
+ "name": "djerma"
+ },
+ "dz": {
+ "code": "dz",
+ "name": "dzongkha"
+ },
+ "ebu": {
+ "code": "ebu",
+ "name": "embu"
+ },
+ "en": {
+ "code": "en",
+ "name": "englanti"
+ },
+ "es": {
+ "code": "es",
+ "name": "espanja"
+ },
+ "es-ES": {
+ "code": "es-ES",
+ "name": "espanjanespanja"
+ },
+ "eo": {
+ "code": "eo",
+ "name": "esperanto"
+ },
+ "ee": {
+ "code": "ee",
+ "name": "ewe"
+ },
+ "ewo": {
+ "code": "ewo",
+ "name": "ewondo"
+ },
+ "fa": {
+ "code": "fa",
+ "name": "farsi"
+ },
+ "fil": {
+ "code": "fil",
+ "name": "filipino"
+ },
+ "nl-BE": {
+ "code": "nl-BE",
+ "name": "flaami"
+ },
+ "fur": {
+ "code": "fur",
+ "name": "friuli"
+ },
+ "ff": {
+ "code": "ff",
+ "name": "fulani"
+ },
+ "fo": {
+ "code": "fo",
+ "name": "fääri"
+ },
+ "gd": {
+ "code": "gd",
+ "name": "gaeli"
+ },
+ "gl": {
+ "code": "gl",
+ "name": "galicia"
+ },
+ "lg": {
+ "code": "lg",
+ "name": "ganda"
+ },
+ "ka": {
+ "code": "ka",
+ "name": "georgia"
+ },
+ "gu": {
+ "code": "gu",
+ "name": "gudžarati"
+ },
+ "guz": {
+ "code": "guz",
+ "name": "gusii"
+ },
+ "ha": {
+ "code": "ha",
+ "name": "hausa"
+ },
+ "he": {
+ "code": "he",
+ "name": "heprea"
+ },
+ "hi": {
+ "code": "hi",
+ "name": "hindi"
+ },
+ "nl": {
+ "code": "nl",
+ "name": "hollanti"
+ },
+ "ga": {
+ "code": "ga",
+ "name": "iiri"
+ },
+ "id": {
+ "code": "id",
+ "name": "indonesia"
+ },
+ "is": {
+ "code": "is",
+ "name": "islanti"
+ },
+ "it": {
+ "code": "it",
+ "name": "italia"
+ },
+ "de-AT": {
+ "code": "de-AT",
+ "name": "itävallansaksa"
+ },
+ "ja": {
+ "code": "ja",
+ "name": "japani"
+ },
+ "dyo": {
+ "code": "dyo",
+ "name": "jola-fonyi"
+ },
+ "yo": {
+ "code": "yo",
+ "name": "joruba"
+ },
+ "kab": {
+ "code": "kab",
+ "name": "kabyyli"
+ },
+ "kl": {
+ "code": "kl",
+ "name": "kalaallisut"
+ },
+ "kln": {
+ "code": "kln",
+ "name": "kalenjin"
+ },
+ "kam": {
+ "code": "kam",
+ "name": "kamba"
+ },
+ "en-CA": {
+ "code": "en-CA",
+ "name": "kanadanenglanti"
+ },
+ "fr-CA": {
+ "code": "fr-CA",
+ "name": "kanadanranska"
+ },
+ "kn": {
+ "code": "kn",
+ "name": "kannada"
+ },
+ "kea": {
+ "code": "kea",
+ "name": "kapverdenkreoli"
+ },
+ "ks": {
+ "code": "ks",
+ "name": "kašmiri"
+ },
+ "ca": {
+ "code": "ca",
+ "name": "katalaani"
+ },
+ "lu": {
+ "code": "lu",
+ "name": "katanganluba"
+ },
+ "kk": {
+ "code": "kk",
+ "name": "kazakki"
+ },
+ "tzm": {
+ "code": "tzm",
+ "name": "keskiatlaksentamazight"
+ },
+ "km": {
+ "code": "km",
+ "name": "khmer"
+ },
+ "cgg": {
+ "code": "cgg",
+ "name": "kiga"
+ },
+ "zh": {
+ "code": "zh",
+ "name": "kiina"
+ },
+ "ki": {
+ "code": "ki",
+ "name": "kikuju"
+ },
+ "swc": {
+ "code": "swc",
+ "name": "kingwana"
+ },
+ "ky": {
+ "code": "ky",
+ "name": "kirgiisi"
+ },
+ "ko": {
+ "code": "ko",
+ "name": "korea"
+ },
+ "khq": {
+ "code": "khq",
+ "name": "koyra chiini"
+ },
+ "ses": {
+ "code": "ses",
+ "name": "koyraboro senni"
+ },
+ "el": {
+ "code": "el",
+ "name": "kreikka"
+ },
+ "hr": {
+ "code": "hr",
+ "name": "kroatia"
+ },
+ "nmg": {
+ "code": "nmg",
+ "name": "kwasio"
+ },
+ "cy": {
+ "code": "cy",
+ "name": "kymri"
+ },
+ "ksh": {
+ "code": "ksh",
+ "name": "kölsch"
+ },
+ "lag": {
+ "code": "lag",
+ "name": "lango"
+ },
+ "lo": {
+ "code": "lo",
+ "name": "lao"
+ },
+ "lv": {
+ "code": "lv",
+ "name": "latvia"
+ },
+ "lt": {
+ "code": "lt",
+ "name": "liettua"
+ },
+ "ln": {
+ "code": "ln",
+ "name": "lingala"
+ },
+ "luy": {
+ "code": "luy",
+ "name": "luhya"
+ },
+ "luo": {
+ "code": "luo",
+ "name": "Luo"
+ },
+ "lb": {
+ "code": "lb",
+ "name": "luxemburg"
+ },
+ "fy": {
+ "code": "fy",
+ "name": "länsifriisi"
+ },
+ "mas": {
+ "code": "mas",
+ "name": "maasai"
+ },
+ "jmc": {
+ "code": "jmc",
+ "name": "machame"
+ },
+ "mk": {
+ "code": "mk",
+ "name": "makedonia"
+ },
+ "kde": {
+ "code": "kde",
+ "name": "makonde"
+ },
+ "mgh": {
+ "code": "mgh",
+ "name": "makua-meetto"
+ },
+ "mg": {
+ "code": "mg",
+ "name": "malagassi"
+ },
+ "ms": {
+ "code": "ms",
+ "name": "malaiji"
+ },
+ "ml": {
+ "code": "ml",
+ "name": "malajalam"
+ },
+ "mt": {
+ "code": "mt",
+ "name": "malta"
+ },
+ "mr": {
+ "code": "mr",
+ "name": "marathi"
+ },
+ "es-MX": {
+ "code": "es-MX",
+ "name": "meksikonespanja"
+ },
+ "mer": {
+ "code": "mer",
+ "name": "meru"
+ },
+ "ro-MD": {
+ "code": "ro-MD",
+ "name": "moldova"
+ },
+ "mn": {
+ "code": "mn",
+ "name": "mongoli"
+ },
+ "mfe": {
+ "code": "mfe",
+ "name": "morisyen"
+ },
+ "mua": {
+ "code": "mua",
+ "name": "mundang"
+ },
+ "naq": {
+ "code": "naq",
+ "name": "nama"
+ },
+ "ne": {
+ "code": "ne",
+ "name": "nepali"
+ },
+ "jgo": {
+ "code": "jgo",
+ "name": "ngomba"
+ },
+ "nb": {
+ "code": "nb",
+ "name": "norjan bokmål"
+ },
+ "nn": {
+ "code": "nn",
+ "name": "norjan nynorsk"
+ },
+ "nus": {
+ "code": "nus",
+ "name": "nuer"
+ },
+ "nyn": {
+ "code": "nyn",
+ "name": "nyankole"
+ },
+ "or": {
+ "code": "or",
+ "name": "orija"
+ },
+ "pa": {
+ "code": "pa",
+ "name": "pandžabi"
+ },
+ "ps": {
+ "code": "ps",
+ "name": "paštu"
+ },
+ "zh-Hant": {
+ "code": "zh-Hant",
+ "name": "perinteinen kiina"
+ },
+ "nd": {
+ "code": "nd",
+ "name": "pohjois-ndebele"
+ },
+ "se": {
+ "code": "se",
+ "name": "pohjoissaame"
+ },
+ "pt": {
+ "code": "pt",
+ "name": "portugali"
+ },
+ "pt-PT": {
+ "code": "pt-PT",
+ "name": "portugalinportugali"
+ },
+ "pl": {
+ "code": "pl",
+ "name": "puola"
+ },
+ "fr": {
+ "code": "fr",
+ "name": "ranska"
+ },
+ "rm": {
+ "code": "rm",
+ "name": "retoromaani"
+ },
+ "ro": {
+ "code": "ro",
+ "name": "romania"
+ },
+ "rof": {
+ "code": "rof",
+ "name": "rombo"
+ },
+ "rn": {
+ "code": "rn",
+ "name": "rundi"
+ },
+ "sv": {
+ "code": "sv",
+ "name": "ruotsi"
+ },
+ "rwk": {
+ "code": "rwk",
+ "name": "rwa"
+ },
+ "de": {
+ "code": "de",
+ "name": "saksa"
+ },
+ "saq": {
+ "code": "saq",
+ "name": "samburu"
+ },
+ "sg": {
+ "code": "sg",
+ "name": "sango"
+ },
+ "sbp": {
+ "code": "sbp",
+ "name": "sangu"
+ },
+ "seh": {
+ "code": "seh",
+ "name": "sena"
+ },
+ "sr": {
+ "code": "sr",
+ "name": "serbia"
+ },
+ "ksb": {
+ "code": "ksb",
+ "name": "shambala"
+ },
+ "si": {
+ "code": "si",
+ "name": "sinhala"
+ },
+ "sk": {
+ "code": "sk",
+ "name": "slovakki"
+ },
+ "sl": {
+ "code": "sl",
+ "name": "sloveeni"
+ },
+ "xog": {
+ "code": "xog",
+ "name": "soga"
+ },
+ "so": {
+ "code": "so",
+ "name": "somali"
+ },
+ "sn": {
+ "code": "sn",
+ "name": "Å¡ona"
+ },
+ "fi": {
+ "code": "fi",
+ "name": "suomi"
+ },
+ "fr-CH": {
+ "code": "fr-CH",
+ "name": "sveitsinranska"
+ },
+ "gsw": {
+ "code": "gsw",
+ "name": "sveitsinsaksa"
+ },
+ "de-CH": {
+ "code": "de-CH",
+ "name": "sveitsinyläsaksa"
+ },
+ "sw": {
+ "code": "sw",
+ "name": "swahili"
+ },
+ "dav": {
+ "code": "dav",
+ "name": "taita"
+ },
+ "ta": {
+ "code": "ta",
+ "name": "tamili"
+ },
+ "da": {
+ "code": "da",
+ "name": "tanska"
+ },
+ "twq": {
+ "code": "twq",
+ "name": "tasawaq"
+ },
+ "shi": {
+ "code": "shi",
+ "name": "tašelhit"
+ },
+ "te": {
+ "code": "te",
+ "name": "telugu"
+ },
+ "teo": {
+ "code": "teo",
+ "name": "teso"
+ },
+ "th": {
+ "code": "th",
+ "name": "thai"
+ },
+ "ti": {
+ "code": "ti",
+ "name": "tigrinja"
+ },
+ "bo": {
+ "code": "bo",
+ "name": "tiibet"
+ },
+ "to": {
+ "code": "to",
+ "name": "tonga"
+ },
+ "cs": {
+ "code": "cs",
+ "name": "tšekki"
+ },
+ "tr": {
+ "code": "tr",
+ "name": "turkki"
+ },
+ "ug": {
+ "code": "ug",
+ "name": "uiguuri"
+ },
+ "uk": {
+ "code": "uk",
+ "name": "ukraina"
+ },
+ "hu": {
+ "code": "hu",
+ "name": "unkari"
+ },
+ "ur": {
+ "code": "ur",
+ "name": "urdu"
+ },
+ "uz": {
+ "code": "uz",
+ "name": "uzbekki"
+ },
+ "vai": {
+ "code": "vai",
+ "name": "Vai"
+ },
+ "zgh": {
+ "code": "zgh",
+ "name": "vakioitu tamazight"
+ },
+ "be": {
+ "code": "be",
+ "name": "valkovenäjä"
+ },
+ "ru": {
+ "code": "ru",
+ "name": "venäjä"
+ },
+ "vi": {
+ "code": "vi",
+ "name": "vietnam"
+ },
+ "et": {
+ "code": "et",
+ "name": "viro"
+ },
+ "vun": {
+ "code": "vun",
+ "name": "vunjo"
+ },
+ "wae": {
+ "code": "wae",
+ "name": "walser"
+ },
+ "yav": {
+ "code": "yav",
+ "name": "yangben"
+ },
+ "zh-Hans": {
+ "code": "zh-Hans",
+ "name": "yksinkertaistettu kiina"
+ },
+ "ar-001": {
+ "code": "ar-001",
+ "name": "yleisarabia"
+ },
+ "hsb": {
+ "code": "hsb",
+ "name": "yläsorbi"
+ },
+ "zu": {
+ "code": "zu",
+ "name": "zulu"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/language/fil.json b/library/intl/resources/language/fil.json
new file mode 100644
index 000000000..494145b3e
--- /dev/null
+++ b/library/intl/resources/language/fil.json
@@ -0,0 +1,738 @@
+{
+ "af": {
+ "code": "af",
+ "name": "Afrikaans"
+ },
+ "agq": {
+ "code": "agq",
+ "name": "Aghem"
+ },
+ "ak": {
+ "code": "ak",
+ "name": "Akan"
+ },
+ "sq": {
+ "code": "sq",
+ "name": "Albanian"
+ },
+ "am": {
+ "code": "am",
+ "name": "Amharic"
+ },
+ "ar": {
+ "code": "ar",
+ "name": "Arabe"
+ },
+ "hy": {
+ "code": "hy",
+ "name": "Armenian"
+ },
+ "ast": {
+ "code": "ast",
+ "name": "Asturian"
+ },
+ "asa": {
+ "code": "asa",
+ "name": "Asu"
+ },
+ "az": {
+ "code": "az",
+ "name": "Azerbaijani"
+ },
+ "ksf": {
+ "code": "ksf",
+ "name": "Bafia"
+ },
+ "bm": {
+ "code": "bm",
+ "name": "Bambara"
+ },
+ "bas": {
+ "code": "bas",
+ "name": "Basaa"
+ },
+ "eu": {
+ "code": "eu",
+ "name": "Basque"
+ },
+ "be": {
+ "code": "be",
+ "name": "Belarusian"
+ },
+ "bez": {
+ "code": "bez",
+ "name": "Bena"
+ },
+ "bn": {
+ "code": "bn",
+ "name": "Bengali"
+ },
+ "brx": {
+ "code": "brx",
+ "name": "Bodo"
+ },
+ "bs": {
+ "code": "bs",
+ "name": "Bosnian"
+ },
+ "pt-BR": {
+ "code": "pt-BR",
+ "name": "Brazilian Portuguese"
+ },
+ "br": {
+ "code": "br",
+ "name": "Breton"
+ },
+ "bg": {
+ "code": "bg",
+ "name": "Bulgarian"
+ },
+ "my": {
+ "code": "my",
+ "name": "Burmese"
+ },
+ "fr-CA": {
+ "code": "fr-CA",
+ "name": "Canadian French"
+ },
+ "ca": {
+ "code": "ca",
+ "name": "Catalan"
+ },
+ "chr": {
+ "code": "chr",
+ "name": "Cherokee"
+ },
+ "cgg": {
+ "code": "cgg",
+ "name": "Chiga"
+ },
+ "zh": {
+ "code": "zh",
+ "name": "Chinese"
+ },
+ "ksh": {
+ "code": "ksh",
+ "name": "Colognian"
+ },
+ "hr": {
+ "code": "hr",
+ "name": "Croatian"
+ },
+ "cs": {
+ "code": "cs",
+ "name": "Czech"
+ },
+ "da": {
+ "code": "da",
+ "name": "Danish"
+ },
+ "de-AT": {
+ "code": "de-AT",
+ "name": "de_AT"
+ },
+ "de-CH": {
+ "code": "de-CH",
+ "name": "de_CH"
+ },
+ "nl": {
+ "code": "nl",
+ "name": "Dutch"
+ },
+ "dz": {
+ "code": "dz",
+ "name": "Dzongkha"
+ },
+ "ebu": {
+ "code": "ebu",
+ "name": "Embu"
+ },
+ "eo": {
+ "code": "eo",
+ "name": "Esperanto"
+ },
+ "et": {
+ "code": "et",
+ "name": "Estonian"
+ },
+ "pt-PT": {
+ "code": "pt-PT",
+ "name": "European Portuguese"
+ },
+ "es-ES": {
+ "code": "es-ES",
+ "name": "European Spanish"
+ },
+ "ee": {
+ "code": "ee",
+ "name": "Ewe"
+ },
+ "ewo": {
+ "code": "ewo",
+ "name": "Ewondo"
+ },
+ "fo": {
+ "code": "fo",
+ "name": "Faroese"
+ },
+ "fil": {
+ "code": "fil",
+ "name": "Filipino"
+ },
+ "fi": {
+ "code": "fi",
+ "name": "Finnish"
+ },
+ "nl-BE": {
+ "code": "nl-BE",
+ "name": "Flemish"
+ },
+ "fr": {
+ "code": "fr",
+ "name": "French"
+ },
+ "fur": {
+ "code": "fur",
+ "name": "Friulian"
+ },
+ "ff": {
+ "code": "ff",
+ "name": "Fulah"
+ },
+ "gl": {
+ "code": "gl",
+ "name": "Galician"
+ },
+ "lg": {
+ "code": "lg",
+ "name": "Ganda"
+ },
+ "ka": {
+ "code": "ka",
+ "name": "Georgian"
+ },
+ "de": {
+ "code": "de",
+ "name": "German"
+ },
+ "el": {
+ "code": "el",
+ "name": "Greek"
+ },
+ "gu": {
+ "code": "gu",
+ "name": "Gujarati"
+ },
+ "guz": {
+ "code": "guz",
+ "name": "Gusii"
+ },
+ "ha": {
+ "code": "ha",
+ "name": "Hausa"
+ },
+ "he": {
+ "code": "he",
+ "name": "Hebrew"
+ },
+ "hi": {
+ "code": "hi",
+ "name": "Hindi"
+ },
+ "hu": {
+ "code": "hu",
+ "name": "Hungarian"
+ },
+ "is": {
+ "code": "is",
+ "name": "Icelandic"
+ },
+ "id": {
+ "code": "id",
+ "name": "Indonesian"
+ },
+ "en": {
+ "code": "en",
+ "name": "Ingles"
+ },
+ "en-GB": {
+ "code": "en-GB",
+ "name": "Ingles (UK)"
+ },
+ "en-US": {
+ "code": "en-US",
+ "name": "Ingles (US)"
+ },
+ "en-AU": {
+ "code": "en-AU",
+ "name": "Ingles ng Australya"
+ },
+ "en-CA": {
+ "code": "en-CA",
+ "name": "Ingles sa Canada"
+ },
+ "ga": {
+ "code": "ga",
+ "name": "Irish"
+ },
+ "it": {
+ "code": "it",
+ "name": "Italian"
+ },
+ "ja": {
+ "code": "ja",
+ "name": "Japanese"
+ },
+ "dyo": {
+ "code": "dyo",
+ "name": "Jola-Fonyi"
+ },
+ "kea": {
+ "code": "kea",
+ "name": "Kabuverdianu"
+ },
+ "kab": {
+ "code": "kab",
+ "name": "Kabyle"
+ },
+ "kl": {
+ "code": "kl",
+ "name": "Kalaallisut"
+ },
+ "kln": {
+ "code": "kln",
+ "name": "Kalenjin"
+ },
+ "kam": {
+ "code": "kam",
+ "name": "Kamba"
+ },
+ "kn": {
+ "code": "kn",
+ "name": "Kannada"
+ },
+ "ks": {
+ "code": "ks",
+ "name": "Kashmiri"
+ },
+ "kk": {
+ "code": "kk",
+ "name": "Kazakh"
+ },
+ "km": {
+ "code": "km",
+ "name": "Khmer"
+ },
+ "ki": {
+ "code": "ki",
+ "name": "Kikuyu"
+ },
+ "ky": {
+ "code": "ky",
+ "name": "Kirghiz"
+ },
+ "ko": {
+ "code": "ko",
+ "name": "Korean"
+ },
+ "khq": {
+ "code": "khq",
+ "name": "Koyra Chiini"
+ },
+ "ses": {
+ "code": "ses",
+ "name": "Koyraboro Senni"
+ },
+ "nmg": {
+ "code": "nmg",
+ "name": "Kwasio"
+ },
+ "lag": {
+ "code": "lag",
+ "name": "Langi"
+ },
+ "lo": {
+ "code": "lo",
+ "name": "Lao"
+ },
+ "lv": {
+ "code": "lv",
+ "name": "Latvian"
+ },
+ "ln": {
+ "code": "ln",
+ "name": "Lingala"
+ },
+ "lt": {
+ "code": "lt",
+ "name": "Lithuanian"
+ },
+ "dsb": {
+ "code": "dsb",
+ "name": "Lower Sorbian"
+ },
+ "lu": {
+ "code": "lu",
+ "name": "Luba-Katanga"
+ },
+ "luo": {
+ "code": "luo",
+ "name": "Luo"
+ },
+ "lb": {
+ "code": "lb",
+ "name": "Luxembourgish"
+ },
+ "luy": {
+ "code": "luy",
+ "name": "Luyia"
+ },
+ "mk": {
+ "code": "mk",
+ "name": "Macedonian"
+ },
+ "jmc": {
+ "code": "jmc",
+ "name": "Machame"
+ },
+ "mgh": {
+ "code": "mgh",
+ "name": "Makhuwa-Meetto"
+ },
+ "kde": {
+ "code": "kde",
+ "name": "Makonde"
+ },
+ "mg": {
+ "code": "mg",
+ "name": "Malagasy"
+ },
+ "ms": {
+ "code": "ms",
+ "name": "Malay"
+ },
+ "ml": {
+ "code": "ml",
+ "name": "Malayalam"
+ },
+ "mt": {
+ "code": "mt",
+ "name": "Maltese"
+ },
+ "mr": {
+ "code": "mr",
+ "name": "Marathi"
+ },
+ "mas": {
+ "code": "mas",
+ "name": "Masai"
+ },
+ "mer": {
+ "code": "mer",
+ "name": "Meru"
+ },
+ "es-MX": {
+ "code": "es-MX",
+ "name": "Mexican Spanish"
+ },
+ "ar-001": {
+ "code": "ar-001",
+ "name": "Modernong Karaniwang Arabe"
+ },
+ "ro-MD": {
+ "code": "ro-MD",
+ "name": "Moldavian"
+ },
+ "mn": {
+ "code": "mn",
+ "name": "Mongolian"
+ },
+ "mfe": {
+ "code": "mfe",
+ "name": "Morisyen"
+ },
+ "mua": {
+ "code": "mua",
+ "name": "Mundang"
+ },
+ "naq": {
+ "code": "naq",
+ "name": "Nama"
+ },
+ "ne": {
+ "code": "ne",
+ "name": "Nepali"
+ },
+ "nd": {
+ "code": "nd",
+ "name": "North Ndebele"
+ },
+ "se": {
+ "code": "se",
+ "name": "Northern Sami"
+ },
+ "nb": {
+ "code": "nb",
+ "name": "Norwegian Bokmal"
+ },
+ "nn": {
+ "code": "nn",
+ "name": "Norwegian Nynorsk"
+ },
+ "nus": {
+ "code": "nus",
+ "name": "Nuer"
+ },
+ "nyn": {
+ "code": "nyn",
+ "name": "Nyankole"
+ },
+ "jgo": {
+ "code": "jgo",
+ "name": "Ngomba"
+ },
+ "or": {
+ "code": "or",
+ "name": "Oriya"
+ },
+ "ps": {
+ "code": "ps",
+ "name": "Pashto"
+ },
+ "fa": {
+ "code": "fa",
+ "name": "Persian"
+ },
+ "pl": {
+ "code": "pl",
+ "name": "Polish"
+ },
+ "pt": {
+ "code": "pt",
+ "name": "Portuges"
+ },
+ "pa": {
+ "code": "pa",
+ "name": "Punjabi"
+ },
+ "ro": {
+ "code": "ro",
+ "name": "Romanian"
+ },
+ "rm": {
+ "code": "rm",
+ "name": "Romansh"
+ },
+ "rof": {
+ "code": "rof",
+ "name": "Rombo"
+ },
+ "rn": {
+ "code": "rn",
+ "name": "Rundi"
+ },
+ "ru": {
+ "code": "ru",
+ "name": "Russian"
+ },
+ "rwk": {
+ "code": "rwk",
+ "name": "Rwa"
+ },
+ "saq": {
+ "code": "saq",
+ "name": "Samburu"
+ },
+ "sg": {
+ "code": "sg",
+ "name": "Sango"
+ },
+ "sbp": {
+ "code": "sbp",
+ "name": "Sangu"
+ },
+ "gd": {
+ "code": "gd",
+ "name": "Scots Gaelic"
+ },
+ "seh": {
+ "code": "seh",
+ "name": "Sena"
+ },
+ "sr": {
+ "code": "sr",
+ "name": "Serbian"
+ },
+ "ksb": {
+ "code": "ksb",
+ "name": "Shambala"
+ },
+ "sn": {
+ "code": "sn",
+ "name": "Shona"
+ },
+ "zh-Hans": {
+ "code": "zh-Hans",
+ "name": "Simplified Chinese"
+ },
+ "si": {
+ "code": "si",
+ "name": "Sinhala"
+ },
+ "sk": {
+ "code": "sk",
+ "name": "Slovak"
+ },
+ "sl": {
+ "code": "sl",
+ "name": "Slovenian"
+ },
+ "xog": {
+ "code": "xog",
+ "name": "Soga"
+ },
+ "so": {
+ "code": "so",
+ "name": "Somali"
+ },
+ "es": {
+ "code": "es",
+ "name": "Spanish"
+ },
+ "zgh": {
+ "code": "zgh",
+ "name": "Standard Moroccan Tamazight"
+ },
+ "sw": {
+ "code": "sw",
+ "name": "Swahili"
+ },
+ "swc": {
+ "code": "swc",
+ "name": "Swahili (Congo)"
+ },
+ "sv": {
+ "code": "sv",
+ "name": "Swedish"
+ },
+ "fr-CH": {
+ "code": "fr-CH",
+ "name": "Swiss French"
+ },
+ "gsw": {
+ "code": "gsw",
+ "name": "Swiss German"
+ },
+ "shi": {
+ "code": "shi",
+ "name": "Tachelhit"
+ },
+ "dav": {
+ "code": "dav",
+ "name": "Taita"
+ },
+ "tzm": {
+ "code": "tzm",
+ "name": "Tamazight ng Gitnang Atlas"
+ },
+ "ta": {
+ "code": "ta",
+ "name": "Tamil"
+ },
+ "twq": {
+ "code": "twq",
+ "name": "Tasawaq"
+ },
+ "te": {
+ "code": "te",
+ "name": "Telugu"
+ },
+ "teo": {
+ "code": "teo",
+ "name": "Teso"
+ },
+ "th": {
+ "code": "th",
+ "name": "Thai"
+ },
+ "bo": {
+ "code": "bo",
+ "name": "Tibetan"
+ },
+ "ti": {
+ "code": "ti",
+ "name": "Tigrinya"
+ },
+ "to": {
+ "code": "to",
+ "name": "Tongan"
+ },
+ "tr": {
+ "code": "tr",
+ "name": "Turkish"
+ },
+ "uk": {
+ "code": "uk",
+ "name": "Ukranian"
+ },
+ "hsb": {
+ "code": "hsb",
+ "name": "Upper Sorbian"
+ },
+ "ur": {
+ "code": "ur",
+ "name": "Urdu"
+ },
+ "ug": {
+ "code": "ug",
+ "name": "Uyghur"
+ },
+ "uz": {
+ "code": "uz",
+ "name": "Uzbek"
+ },
+ "vai": {
+ "code": "vai",
+ "name": "Vai"
+ },
+ "vi": {
+ "code": "vi",
+ "name": "Vietnamese"
+ },
+ "vun": {
+ "code": "vun",
+ "name": "Vunjo"
+ },
+ "wae": {
+ "code": "wae",
+ "name": "Walser"
+ },
+ "cy": {
+ "code": "cy",
+ "name": "Welsh"
+ },
+ "fy": {
+ "code": "fy",
+ "name": "Western Frisian"
+ },
+ "yav": {
+ "code": "yav",
+ "name": "Yangben"
+ },
+ "yo": {
+ "code": "yo",
+ "name": "Yoruba"
+ },
+ "dje": {
+ "code": "dje",
+ "name": "Zarma"
+ },
+ "zh-Hant": {
+ "code": "zh-Hant",
+ "name": "zh_Hant"
+ },
+ "zu": {
+ "code": "zu",
+ "name": "Zulu"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/language/fo.json b/library/intl/resources/language/fo.json
new file mode 100644
index 000000000..c9a158e2a
--- /dev/null
+++ b/library/intl/resources/language/fo.json
@@ -0,0 +1,738 @@
+{
+ "ps": {
+ "code": "ps",
+ "name": "afghanskt"
+ },
+ "af": {
+ "code": "af",
+ "name": "afríska"
+ },
+ "agq": {
+ "code": "agq",
+ "name": "Aghem"
+ },
+ "ak": {
+ "code": "ak",
+ "name": "Akan"
+ },
+ "sq": {
+ "code": "sq",
+ "name": "albanskt"
+ },
+ "am": {
+ "code": "am",
+ "name": "amhariskt"
+ },
+ "ar-001": {
+ "code": "ar-001",
+ "name": "ar_001"
+ },
+ "ar": {
+ "code": "ar",
+ "name": "arabiskt"
+ },
+ "hy": {
+ "code": "hy",
+ "name": "armenskt"
+ },
+ "ast": {
+ "code": "ast",
+ "name": "Asturian"
+ },
+ "asa": {
+ "code": "asa",
+ "name": "asu (Tanzania)"
+ },
+ "az": {
+ "code": "az",
+ "name": "azerbaijaniskt"
+ },
+ "ksf": {
+ "code": "ksf",
+ "name": "Bafia"
+ },
+ "bm": {
+ "code": "bm",
+ "name": "bambara"
+ },
+ "eu": {
+ "code": "eu",
+ "name": "baskiskt"
+ },
+ "bas": {
+ "code": "bas",
+ "name": "Basaa"
+ },
+ "bez": {
+ "code": "bez",
+ "name": "bena (Tanzania)"
+ },
+ "bn": {
+ "code": "bn",
+ "name": "bengaliskt"
+ },
+ "brx": {
+ "code": "brx",
+ "name": "Bodo"
+ },
+ "bs": {
+ "code": "bs",
+ "name": "bosniskt"
+ },
+ "br": {
+ "code": "br",
+ "name": "bretonskt"
+ },
+ "bg": {
+ "code": "bg",
+ "name": "bulgarskt"
+ },
+ "my": {
+ "code": "my",
+ "name": "burmesiskt"
+ },
+ "tzm": {
+ "code": "tzm",
+ "name": "Central Atlas Tamazight"
+ },
+ "chr": {
+ "code": "chr",
+ "name": "Cherokee"
+ },
+ "cgg": {
+ "code": "cgg",
+ "name": "Chiga"
+ },
+ "ksh": {
+ "code": "ksh",
+ "name": "Colognian"
+ },
+ "swc": {
+ "code": "swc",
+ "name": "Congo Swahili"
+ },
+ "da": {
+ "code": "da",
+ "name": "danskt"
+ },
+ "de-AT": {
+ "code": "de-AT",
+ "name": "de_AT"
+ },
+ "de-CH": {
+ "code": "de-CH",
+ "name": "de_CH"
+ },
+ "dz": {
+ "code": "dz",
+ "name": "dzongkha"
+ },
+ "en-AU": {
+ "code": "en-AU",
+ "name": "en_AU"
+ },
+ "en-CA": {
+ "code": "en-CA",
+ "name": "en_CA"
+ },
+ "en-GB": {
+ "code": "en-GB",
+ "name": "en_GB"
+ },
+ "en-US": {
+ "code": "en-US",
+ "name": "en_US"
+ },
+ "en": {
+ "code": "en",
+ "name": "enskt"
+ },
+ "es-ES": {
+ "code": "es-ES",
+ "name": "es_ES"
+ },
+ "es-MX": {
+ "code": "es-MX",
+ "name": "es_MX"
+ },
+ "eo": {
+ "code": "eo",
+ "name": "esperanto"
+ },
+ "et": {
+ "code": "et",
+ "name": "estlendskt"
+ },
+ "ee": {
+ "code": "ee",
+ "name": "Ewe"
+ },
+ "ewo": {
+ "code": "ewo",
+ "name": "Ewondo"
+ },
+ "fil": {
+ "code": "fil",
+ "name": "filipiniskt"
+ },
+ "fi": {
+ "code": "fi",
+ "name": "finskt"
+ },
+ "fr-CA": {
+ "code": "fr-CA",
+ "name": "fr_CA"
+ },
+ "fr-CH": {
+ "code": "fr-CH",
+ "name": "fr_CH"
+ },
+ "fr": {
+ "code": "fr",
+ "name": "franskt"
+ },
+ "fur": {
+ "code": "fur",
+ "name": "Friulian"
+ },
+ "ff": {
+ "code": "ff",
+ "name": "Fulah"
+ },
+ "fo": {
+ "code": "fo",
+ "name": "føroyskt"
+ },
+ "gl": {
+ "code": "gl",
+ "name": "galisiskt"
+ },
+ "lg": {
+ "code": "lg",
+ "name": "Ganda"
+ },
+ "ka": {
+ "code": "ka",
+ "name": "georgiskt"
+ },
+ "el": {
+ "code": "el",
+ "name": "grikiskt"
+ },
+ "gu": {
+ "code": "gu",
+ "name": "gujariti"
+ },
+ "guz": {
+ "code": "guz",
+ "name": "Gusii"
+ },
+ "ha": {
+ "code": "ha",
+ "name": "haussa"
+ },
+ "he": {
+ "code": "he",
+ "name": "hebraiskt"
+ },
+ "hi": {
+ "code": "hi",
+ "name": "hindi"
+ },
+ "nl": {
+ "code": "nl",
+ "name": "hollendskt"
+ },
+ "be": {
+ "code": "be",
+ "name": "hvitarussiskt"
+ },
+ "id": {
+ "code": "id",
+ "name": "indonesiskt"
+ },
+ "ga": {
+ "code": "ga",
+ "name": "írskt"
+ },
+ "is": {
+ "code": "is",
+ "name": "íslendskt"
+ },
+ "it": {
+ "code": "it",
+ "name": "italskt"
+ },
+ "ja": {
+ "code": "ja",
+ "name": "japanskt"
+ },
+ "dyo": {
+ "code": "dyo",
+ "name": "Jola-Fonyi"
+ },
+ "kab": {
+ "code": "kab",
+ "name": "Kabyle"
+ },
+ "kln": {
+ "code": "kln",
+ "name": "Kalenjin"
+ },
+ "kl": {
+ "code": "kl",
+ "name": "Kalaallisut"
+ },
+ "kam": {
+ "code": "kam",
+ "name": "Kamba"
+ },
+ "km": {
+ "code": "km",
+ "name": "kambodjanskt"
+ },
+ "kn": {
+ "code": "kn",
+ "name": "kannada"
+ },
+ "kea": {
+ "code": "kea",
+ "name": "kapverdiskt"
+ },
+ "ks": {
+ "code": "ks",
+ "name": "kashmiriskt"
+ },
+ "ca": {
+ "code": "ca",
+ "name": "katalanskt"
+ },
+ "kk": {
+ "code": "kk",
+ "name": "kazakiskt"
+ },
+ "cs": {
+ "code": "cs",
+ "name": "kekkiskt"
+ },
+ "ebu": {
+ "code": "ebu",
+ "name": "kiembu"
+ },
+ "ki": {
+ "code": "ki",
+ "name": "Kikuyu"
+ },
+ "zh": {
+ "code": "zh",
+ "name": "kinesiskt"
+ },
+ "ky": {
+ "code": "ky",
+ "name": "kirgisikt"
+ },
+ "ko": {
+ "code": "ko",
+ "name": "koreanskt"
+ },
+ "khq": {
+ "code": "khq",
+ "name": "Koyra Chiini"
+ },
+ "ses": {
+ "code": "ses",
+ "name": "Koyraboro Senni"
+ },
+ "hr": {
+ "code": "hr",
+ "name": "kroatiskt"
+ },
+ "nmg": {
+ "code": "nmg",
+ "name": "Kwasio"
+ },
+ "lag": {
+ "code": "lag",
+ "name": "Langi"
+ },
+ "lo": {
+ "code": "lo",
+ "name": "laotiskt"
+ },
+ "lv": {
+ "code": "lv",
+ "name": "latviskt"
+ },
+ "ln": {
+ "code": "ln",
+ "name": "lingala"
+ },
+ "lt": {
+ "code": "lt",
+ "name": "litavskt"
+ },
+ "dsb": {
+ "code": "dsb",
+ "name": "Lower Sorbian"
+ },
+ "lu": {
+ "code": "lu",
+ "name": "Luba-Katanga"
+ },
+ "luo": {
+ "code": "luo",
+ "name": "Luo"
+ },
+ "lb": {
+ "code": "lb",
+ "name": "luxemburgiskt"
+ },
+ "jmc": {
+ "code": "jmc",
+ "name": "Machame"
+ },
+ "mk": {
+ "code": "mk",
+ "name": "makedonskt"
+ },
+ "mgh": {
+ "code": "mgh",
+ "name": "Makhuwa-Meetto"
+ },
+ "kde": {
+ "code": "kde",
+ "name": "Makonde"
+ },
+ "mg": {
+ "code": "mg",
+ "name": "malagasiskt"
+ },
+ "ms": {
+ "code": "ms",
+ "name": "malajiskt"
+ },
+ "ml": {
+ "code": "ml",
+ "name": "malayalam"
+ },
+ "mt": {
+ "code": "mt",
+ "name": "maltesiskt"
+ },
+ "mr": {
+ "code": "mr",
+ "name": "marathiskt"
+ },
+ "mas": {
+ "code": "mas",
+ "name": "Masai"
+ },
+ "mer": {
+ "code": "mer",
+ "name": "Meru"
+ },
+ "mn": {
+ "code": "mn",
+ "name": "mongoliskt"
+ },
+ "mfe": {
+ "code": "mfe",
+ "name": "Morisyen"
+ },
+ "mua": {
+ "code": "mua",
+ "name": "Mundang"
+ },
+ "naq": {
+ "code": "naq",
+ "name": "Nama"
+ },
+ "ne": {
+ "code": "ne",
+ "name": "nepalskt"
+ },
+ "jgo": {
+ "code": "jgo",
+ "name": "Ngomba"
+ },
+ "nl-BE": {
+ "code": "nl-BE",
+ "name": "nl_BE"
+ },
+ "nb": {
+ "code": "nb",
+ "name": "norskt bokmál"
+ },
+ "nd": {
+ "code": "nd",
+ "name": "North Ndebele"
+ },
+ "se": {
+ "code": "se",
+ "name": "Northern Sami"
+ },
+ "nus": {
+ "code": "nus",
+ "name": "Nuer"
+ },
+ "nyn": {
+ "code": "nyn",
+ "name": "Nyankole"
+ },
+ "nn": {
+ "code": "nn",
+ "name": "nýnorskt"
+ },
+ "luy": {
+ "code": "luy",
+ "name": "olulujia"
+ },
+ "or": {
+ "code": "or",
+ "name": "oriya"
+ },
+ "fa": {
+ "code": "fa",
+ "name": "persiskt"
+ },
+ "pl": {
+ "code": "pl",
+ "name": "polskt"
+ },
+ "pt": {
+ "code": "pt",
+ "name": "portugisiskt"
+ },
+ "pt-BR": {
+ "code": "pt-BR",
+ "name": "pt_BR"
+ },
+ "pt-PT": {
+ "code": "pt-PT",
+ "name": "pt_PT"
+ },
+ "pa": {
+ "code": "pa",
+ "name": "punjabiskt"
+ },
+ "ro-MD": {
+ "code": "ro-MD",
+ "name": "ro_MD"
+ },
+ "rm": {
+ "code": "rm",
+ "name": "romansh"
+ },
+ "ro": {
+ "code": "ro",
+ "name": "romanskt"
+ },
+ "rof": {
+ "code": "rof",
+ "name": "Rombo"
+ },
+ "rn": {
+ "code": "rn",
+ "name": "rundi"
+ },
+ "ru": {
+ "code": "ru",
+ "name": "russiskt"
+ },
+ "rwk": {
+ "code": "rwk",
+ "name": "Rwa"
+ },
+ "saq": {
+ "code": "saq",
+ "name": "Samburu"
+ },
+ "sg": {
+ "code": "sg",
+ "name": "sango"
+ },
+ "sbp": {
+ "code": "sbp",
+ "name": "Sangu"
+ },
+ "seh": {
+ "code": "seh",
+ "name": "Sena"
+ },
+ "sr": {
+ "code": "sr",
+ "name": "serbiskt"
+ },
+ "ksb": {
+ "code": "ksb",
+ "name": "Shambala"
+ },
+ "sn": {
+ "code": "sn",
+ "name": "shona"
+ },
+ "si": {
+ "code": "si",
+ "name": "sinhalesiskt"
+ },
+ "gd": {
+ "code": "gd",
+ "name": "skotskt gæliskt"
+ },
+ "sk": {
+ "code": "sk",
+ "name": "slovakiskt"
+ },
+ "sl": {
+ "code": "sl",
+ "name": "slovenskt"
+ },
+ "xog": {
+ "code": "xog",
+ "name": "Soga"
+ },
+ "so": {
+ "code": "so",
+ "name": "somaliskt"
+ },
+ "es": {
+ "code": "es",
+ "name": "spanskt"
+ },
+ "zgh": {
+ "code": "zgh",
+ "name": "Standard Moroccan Tamazight"
+ },
+ "zu": {
+ "code": "zu",
+ "name": "sulu"
+ },
+ "sv": {
+ "code": "sv",
+ "name": "svenskt"
+ },
+ "sw": {
+ "code": "sw",
+ "name": "swahili"
+ },
+ "gsw": {
+ "code": "gsw",
+ "name": "Swiss German"
+ },
+ "shi": {
+ "code": "shi",
+ "name": "Tachelhit"
+ },
+ "dav": {
+ "code": "dav",
+ "name": "Taita"
+ },
+ "ta": {
+ "code": "ta",
+ "name": "tamilskt"
+ },
+ "twq": {
+ "code": "twq",
+ "name": "Tasawaq"
+ },
+ "te": {
+ "code": "te",
+ "name": "telugiskt"
+ },
+ "teo": {
+ "code": "teo",
+ "name": "Teso"
+ },
+ "th": {
+ "code": "th",
+ "name": "thailendskt"
+ },
+ "bo": {
+ "code": "bo",
+ "name": "tibetanskt"
+ },
+ "ti": {
+ "code": "ti",
+ "name": "tigrinya"
+ },
+ "to": {
+ "code": "to",
+ "name": "tonganskt"
+ },
+ "tr": {
+ "code": "tr",
+ "name": "turkiskt"
+ },
+ "de": {
+ "code": "de",
+ "name": "týskt"
+ },
+ "ug": {
+ "code": "ug",
+ "name": "uighur"
+ },
+ "uk": {
+ "code": "uk",
+ "name": "ukrainskt"
+ },
+ "hu": {
+ "code": "hu",
+ "name": "ungarskt"
+ },
+ "hsb": {
+ "code": "hsb",
+ "name": "Upper Sorbian"
+ },
+ "ur": {
+ "code": "ur",
+ "name": "urdu"
+ },
+ "uz": {
+ "code": "uz",
+ "name": "uzbekiskt"
+ },
+ "vai": {
+ "code": "vai",
+ "name": "Vai"
+ },
+ "cy": {
+ "code": "cy",
+ "name": "valisiskt"
+ },
+ "fy": {
+ "code": "fy",
+ "name": "vestfrisikt"
+ },
+ "vi": {
+ "code": "vi",
+ "name": "vietnamesiskt"
+ },
+ "vun": {
+ "code": "vun",
+ "name": "Vunjo"
+ },
+ "wae": {
+ "code": "wae",
+ "name": "Walser"
+ },
+ "yav": {
+ "code": "yav",
+ "name": "Yangben"
+ },
+ "yo": {
+ "code": "yo",
+ "name": "yoruba"
+ },
+ "dje": {
+ "code": "dje",
+ "name": "Zarma"
+ },
+ "zh-Hans": {
+ "code": "zh-Hans",
+ "name": "zh_Hans"
+ },
+ "zh-Hant": {
+ "code": "zh-Hant",
+ "name": "zh_Hant"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/language/fr-CA.json b/library/intl/resources/language/fr-CA.json
new file mode 100644
index 000000000..7dbc873a3
--- /dev/null
+++ b/library/intl/resources/language/fr-CA.json
@@ -0,0 +1,738 @@
+{
+ "af": {
+ "code": "af",
+ "name": "afrikaans"
+ },
+ "agq": {
+ "code": "agq",
+ "name": "aghem"
+ },
+ "ak": {
+ "code": "ak",
+ "name": "akan"
+ },
+ "sq": {
+ "code": "sq",
+ "name": "albanais"
+ },
+ "de": {
+ "code": "de",
+ "name": "allemand"
+ },
+ "de-AT": {
+ "code": "de-AT",
+ "name": "allemand autrichien"
+ },
+ "de-CH": {
+ "code": "de-CH",
+ "name": "allemand suisse"
+ },
+ "zgh": {
+ "code": "zgh",
+ "name": "amazighe standard marocain"
+ },
+ "am": {
+ "code": "am",
+ "name": "amharique"
+ },
+ "en": {
+ "code": "en",
+ "name": "anglais"
+ },
+ "en-US": {
+ "code": "en-US",
+ "name": "anglais américain"
+ },
+ "en-AU": {
+ "code": "en-AU",
+ "name": "anglais australien"
+ },
+ "en-GB": {
+ "code": "en-GB",
+ "name": "anglais britannique"
+ },
+ "en-CA": {
+ "code": "en-CA",
+ "name": "anglais canadien"
+ },
+ "ar": {
+ "code": "ar",
+ "name": "arabe"
+ },
+ "ar-001": {
+ "code": "ar-001",
+ "name": "arabe standard moderne"
+ },
+ "hy": {
+ "code": "hy",
+ "name": "arménien"
+ },
+ "asa": {
+ "code": "asa",
+ "name": "assou"
+ },
+ "ast": {
+ "code": "ast",
+ "name": "asturien"
+ },
+ "az": {
+ "code": "az",
+ "name": "azéri"
+ },
+ "ksf": {
+ "code": "ksf",
+ "name": "bafia"
+ },
+ "bm": {
+ "code": "bm",
+ "name": "bambara"
+ },
+ "dsb": {
+ "code": "dsb",
+ "name": "bas-sorabe"
+ },
+ "eu": {
+ "code": "eu",
+ "name": "basque"
+ },
+ "bas": {
+ "code": "bas",
+ "name": "bassa"
+ },
+ "bez": {
+ "code": "bez",
+ "name": "béna"
+ },
+ "bn": {
+ "code": "bn",
+ "name": "bengali"
+ },
+ "be": {
+ "code": "be",
+ "name": "biélorusse"
+ },
+ "my": {
+ "code": "my",
+ "name": "birman"
+ },
+ "brx": {
+ "code": "brx",
+ "name": "bodo"
+ },
+ "bs": {
+ "code": "bs",
+ "name": "bosniaque"
+ },
+ "br": {
+ "code": "br",
+ "name": "breton"
+ },
+ "bg": {
+ "code": "bg",
+ "name": "bulgare"
+ },
+ "kea": {
+ "code": "kea",
+ "name": "capverdien"
+ },
+ "ca": {
+ "code": "ca",
+ "name": "catalan"
+ },
+ "ksb": {
+ "code": "ksb",
+ "name": "chambala"
+ },
+ "chr": {
+ "code": "chr",
+ "name": "cherokee"
+ },
+ "zh": {
+ "code": "zh",
+ "name": "chinois"
+ },
+ "zh-Hans": {
+ "code": "zh-Hans",
+ "name": "chinois simplifié"
+ },
+ "zh-Hant": {
+ "code": "zh-Hant",
+ "name": "chinois traditionnel"
+ },
+ "shi": {
+ "code": "shi",
+ "name": "chleuh"
+ },
+ "si": {
+ "code": "si",
+ "name": "cingalais"
+ },
+ "ko": {
+ "code": "ko",
+ "name": "coréen"
+ },
+ "mfe": {
+ "code": "mfe",
+ "name": "créole mauricien"
+ },
+ "hr": {
+ "code": "hr",
+ "name": "croate"
+ },
+ "da": {
+ "code": "da",
+ "name": "danois"
+ },
+ "dyo": {
+ "code": "dyo",
+ "name": "diola-fogny"
+ },
+ "dz": {
+ "code": "dz",
+ "name": "dzongkha"
+ },
+ "ebu": {
+ "code": "ebu",
+ "name": "embou"
+ },
+ "es": {
+ "code": "es",
+ "name": "espagnol"
+ },
+ "es-ES": {
+ "code": "es-ES",
+ "name": "espagnol ibérique"
+ },
+ "es-MX": {
+ "code": "es-MX",
+ "name": "espagnol mexicain"
+ },
+ "eo": {
+ "code": "eo",
+ "name": "espéranto"
+ },
+ "et": {
+ "code": "et",
+ "name": "estonien"
+ },
+ "ee": {
+ "code": "ee",
+ "name": "éwé"
+ },
+ "ewo": {
+ "code": "ewo",
+ "name": "éwondo"
+ },
+ "fo": {
+ "code": "fo",
+ "name": "féroïen"
+ },
+ "fil": {
+ "code": "fil",
+ "name": "filipino"
+ },
+ "fi": {
+ "code": "fi",
+ "name": "finnois"
+ },
+ "nl-BE": {
+ "code": "nl-BE",
+ "name": "flamand"
+ },
+ "fr": {
+ "code": "fr",
+ "name": "français"
+ },
+ "fr-CA": {
+ "code": "fr-CA",
+ "name": "français canadien"
+ },
+ "fr-CH": {
+ "code": "fr-CH",
+ "name": "français suisse"
+ },
+ "ksh": {
+ "code": "ksh",
+ "name": "francique ripuaire"
+ },
+ "fur": {
+ "code": "fur",
+ "name": "frioulan"
+ },
+ "fy": {
+ "code": "fy",
+ "name": "frison"
+ },
+ "gd": {
+ "code": "gd",
+ "name": "gaélique écossais"
+ },
+ "gl": {
+ "code": "gl",
+ "name": "galicien"
+ },
+ "cy": {
+ "code": "cy",
+ "name": "gallois"
+ },
+ "lg": {
+ "code": "lg",
+ "name": "ganda"
+ },
+ "ka": {
+ "code": "ka",
+ "name": "géorgien"
+ },
+ "gu": {
+ "code": "gu",
+ "name": "goudjarâtî"
+ },
+ "el": {
+ "code": "el",
+ "name": "grec"
+ },
+ "kl": {
+ "code": "kl",
+ "name": "groenlandais"
+ },
+ "guz": {
+ "code": "guz",
+ "name": "gusii"
+ },
+ "ha": {
+ "code": "ha",
+ "name": "haoussa"
+ },
+ "hsb": {
+ "code": "hsb",
+ "name": "haut-sorabe"
+ },
+ "he": {
+ "code": "he",
+ "name": "hébreu"
+ },
+ "hi": {
+ "code": "hi",
+ "name": "hindi"
+ },
+ "hu": {
+ "code": "hu",
+ "name": "hongrois"
+ },
+ "id": {
+ "code": "id",
+ "name": "indonésien"
+ },
+ "ga": {
+ "code": "ga",
+ "name": "irlandais"
+ },
+ "is": {
+ "code": "is",
+ "name": "islandais"
+ },
+ "it": {
+ "code": "it",
+ "name": "italien"
+ },
+ "ja": {
+ "code": "ja",
+ "name": "japonais"
+ },
+ "kab": {
+ "code": "kab",
+ "name": "kabyle"
+ },
+ "kln": {
+ "code": "kln",
+ "name": "kalenjin"
+ },
+ "kam": {
+ "code": "kam",
+ "name": "kamba"
+ },
+ "kn": {
+ "code": "kn",
+ "name": "kannada"
+ },
+ "ks": {
+ "code": "ks",
+ "name": "kashmiri"
+ },
+ "kk": {
+ "code": "kk",
+ "name": "kazakh"
+ },
+ "km": {
+ "code": "km",
+ "name": "khmer"
+ },
+ "cgg": {
+ "code": "cgg",
+ "name": "kiga"
+ },
+ "ki": {
+ "code": "ki",
+ "name": "kikuyu"
+ },
+ "ky": {
+ "code": "ky",
+ "name": "kirghize"
+ },
+ "khq": {
+ "code": "khq",
+ "name": "koyra chiini"
+ },
+ "ses": {
+ "code": "ses",
+ "name": "koyraboro senni"
+ },
+ "nmg": {
+ "code": "nmg",
+ "name": "kwasio"
+ },
+ "lag": {
+ "code": "lag",
+ "name": "langi"
+ },
+ "lo": {
+ "code": "lo",
+ "name": "lao"
+ },
+ "lv": {
+ "code": "lv",
+ "name": "letton"
+ },
+ "ln": {
+ "code": "ln",
+ "name": "lingala"
+ },
+ "lt": {
+ "code": "lt",
+ "name": "lituanien"
+ },
+ "lu": {
+ "code": "lu",
+ "name": "luba-katanga"
+ },
+ "luo": {
+ "code": "luo",
+ "name": "Luo"
+ },
+ "lb": {
+ "code": "lb",
+ "name": "luxembourgeois"
+ },
+ "mk": {
+ "code": "mk",
+ "name": "macédonien"
+ },
+ "jmc": {
+ "code": "jmc",
+ "name": "machame"
+ },
+ "mgh": {
+ "code": "mgh",
+ "name": "makhuwa-meetto"
+ },
+ "kde": {
+ "code": "kde",
+ "name": "makonde"
+ },
+ "ms": {
+ "code": "ms",
+ "name": "malais"
+ },
+ "ml": {
+ "code": "ml",
+ "name": "malayalam"
+ },
+ "mg": {
+ "code": "mg",
+ "name": "malgache"
+ },
+ "mt": {
+ "code": "mt",
+ "name": "maltais"
+ },
+ "mr": {
+ "code": "mr",
+ "name": "marathe"
+ },
+ "mas": {
+ "code": "mas",
+ "name": "masai"
+ },
+ "mer": {
+ "code": "mer",
+ "name": "merou"
+ },
+ "ro-MD": {
+ "code": "ro-MD",
+ "name": "moldave"
+ },
+ "mn": {
+ "code": "mn",
+ "name": "mongol"
+ },
+ "mua": {
+ "code": "mua",
+ "name": "mundang"
+ },
+ "naq": {
+ "code": "naq",
+ "name": "nama"
+ },
+ "nd": {
+ "code": "nd",
+ "name": "ndébélé du Nord"
+ },
+ "nl": {
+ "code": "nl",
+ "name": "néerlandais"
+ },
+ "ne": {
+ "code": "ne",
+ "name": "népalais"
+ },
+ "jgo": {
+ "code": "jgo",
+ "name": "ngomba"
+ },
+ "nb": {
+ "code": "nb",
+ "name": "norvégien bokmål"
+ },
+ "nn": {
+ "code": "nn",
+ "name": "norvégien nynorsk"
+ },
+ "nus": {
+ "code": "nus",
+ "name": "nuer"
+ },
+ "nyn": {
+ "code": "nyn",
+ "name": "nyankolé"
+ },
+ "luy": {
+ "code": "luy",
+ "name": "oluluyia"
+ },
+ "or": {
+ "code": "or",
+ "name": "oriya"
+ },
+ "ug": {
+ "code": "ug",
+ "name": "ouïgour"
+ },
+ "ur": {
+ "code": "ur",
+ "name": "ourdou"
+ },
+ "uz": {
+ "code": "uz",
+ "name": "ouzbek"
+ },
+ "ps": {
+ "code": "ps",
+ "name": "pachto"
+ },
+ "pa": {
+ "code": "pa",
+ "name": "pendjabi"
+ },
+ "fa": {
+ "code": "fa",
+ "name": "persan"
+ },
+ "ff": {
+ "code": "ff",
+ "name": "peul"
+ },
+ "pl": {
+ "code": "pl",
+ "name": "polonais"
+ },
+ "pt": {
+ "code": "pt",
+ "name": "portugais"
+ },
+ "pt-BR": {
+ "code": "pt-BR",
+ "name": "portugais brésilien"
+ },
+ "pt-PT": {
+ "code": "pt-PT",
+ "name": "portugais ibérique"
+ },
+ "rm": {
+ "code": "rm",
+ "name": "romanche"
+ },
+ "rof": {
+ "code": "rof",
+ "name": "rombo"
+ },
+ "ro": {
+ "code": "ro",
+ "name": "roumain"
+ },
+ "rn": {
+ "code": "rn",
+ "name": "roundi"
+ },
+ "ru": {
+ "code": "ru",
+ "name": "russe"
+ },
+ "rwk": {
+ "code": "rwk",
+ "name": "rwa"
+ },
+ "saq": {
+ "code": "saq",
+ "name": "samburu"
+ },
+ "se": {
+ "code": "se",
+ "name": "sami du Nord"
+ },
+ "sg": {
+ "code": "sg",
+ "name": "sangho"
+ },
+ "sbp": {
+ "code": "sbp",
+ "name": "sangu"
+ },
+ "seh": {
+ "code": "seh",
+ "name": "sena"
+ },
+ "sr": {
+ "code": "sr",
+ "name": "serbe"
+ },
+ "sn": {
+ "code": "sn",
+ "name": "shona"
+ },
+ "sk": {
+ "code": "sk",
+ "name": "slovaque"
+ },
+ "sl": {
+ "code": "sl",
+ "name": "slovène"
+ },
+ "xog": {
+ "code": "xog",
+ "name": "soga"
+ },
+ "so": {
+ "code": "so",
+ "name": "somali"
+ },
+ "sv": {
+ "code": "sv",
+ "name": "suédois"
+ },
+ "gsw": {
+ "code": "gsw",
+ "name": "suisse allemand"
+ },
+ "sw": {
+ "code": "sw",
+ "name": "swahili"
+ },
+ "swc": {
+ "code": "swc",
+ "name": "swahili du Congo"
+ },
+ "dav": {
+ "code": "dav",
+ "name": "taita"
+ },
+ "tzm": {
+ "code": "tzm",
+ "name": "tamazight"
+ },
+ "ta": {
+ "code": "ta",
+ "name": "tamoul"
+ },
+ "twq": {
+ "code": "twq",
+ "name": "tasawaq"
+ },
+ "cs": {
+ "code": "cs",
+ "name": "tchèque"
+ },
+ "te": {
+ "code": "te",
+ "name": "télougou"
+ },
+ "teo": {
+ "code": "teo",
+ "name": "teso"
+ },
+ "th": {
+ "code": "th",
+ "name": "thaï"
+ },
+ "bo": {
+ "code": "bo",
+ "name": "tibétain"
+ },
+ "ti": {
+ "code": "ti",
+ "name": "tigrigna"
+ },
+ "to": {
+ "code": "to",
+ "name": "tongan"
+ },
+ "tr": {
+ "code": "tr",
+ "name": "turc"
+ },
+ "uk": {
+ "code": "uk",
+ "name": "ukrainien"
+ },
+ "vai": {
+ "code": "vai",
+ "name": "vaï"
+ },
+ "vi": {
+ "code": "vi",
+ "name": "vietnamien"
+ },
+ "vun": {
+ "code": "vun",
+ "name": "vunjo"
+ },
+ "wae": {
+ "code": "wae",
+ "name": "walser"
+ },
+ "yav": {
+ "code": "yav",
+ "name": "yangben"
+ },
+ "yo": {
+ "code": "yo",
+ "name": "yoruba"
+ },
+ "dje": {
+ "code": "dje",
+ "name": "zarma"
+ },
+ "zu": {
+ "code": "zu",
+ "name": "zoulou"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/language/fr.json b/library/intl/resources/language/fr.json
new file mode 100644
index 000000000..2459e9df9
--- /dev/null
+++ b/library/intl/resources/language/fr.json
@@ -0,0 +1,738 @@
+{
+ "af": {
+ "code": "af",
+ "name": "afrikaans"
+ },
+ "agq": {
+ "code": "agq",
+ "name": "aghem"
+ },
+ "ak": {
+ "code": "ak",
+ "name": "akan"
+ },
+ "sq": {
+ "code": "sq",
+ "name": "albanais"
+ },
+ "gsw": {
+ "code": "gsw",
+ "name": "alémanique"
+ },
+ "de": {
+ "code": "de",
+ "name": "allemand"
+ },
+ "de-AT": {
+ "code": "de-AT",
+ "name": "allemand autrichien"
+ },
+ "de-CH": {
+ "code": "de-CH",
+ "name": "allemand suisse"
+ },
+ "zgh": {
+ "code": "zgh",
+ "name": "amazighe standard marocain"
+ },
+ "am": {
+ "code": "am",
+ "name": "amharique"
+ },
+ "en": {
+ "code": "en",
+ "name": "anglais"
+ },
+ "en-US": {
+ "code": "en-US",
+ "name": "anglais américain"
+ },
+ "en-AU": {
+ "code": "en-AU",
+ "name": "anglais australien"
+ },
+ "en-GB": {
+ "code": "en-GB",
+ "name": "anglais britannique"
+ },
+ "en-CA": {
+ "code": "en-CA",
+ "name": "anglais canadien"
+ },
+ "ar": {
+ "code": "ar",
+ "name": "arabe"
+ },
+ "ar-001": {
+ "code": "ar-001",
+ "name": "arabe standard moderne"
+ },
+ "hy": {
+ "code": "hy",
+ "name": "arménien"
+ },
+ "asa": {
+ "code": "asa",
+ "name": "assou"
+ },
+ "ast": {
+ "code": "ast",
+ "name": "asturien"
+ },
+ "az": {
+ "code": "az",
+ "name": "azéri"
+ },
+ "ksf": {
+ "code": "ksf",
+ "name": "bafia"
+ },
+ "bm": {
+ "code": "bm",
+ "name": "bambara"
+ },
+ "dsb": {
+ "code": "dsb",
+ "name": "bas-sorabe"
+ },
+ "eu": {
+ "code": "eu",
+ "name": "basque"
+ },
+ "bas": {
+ "code": "bas",
+ "name": "bassa"
+ },
+ "bez": {
+ "code": "bez",
+ "name": "béna"
+ },
+ "bn": {
+ "code": "bn",
+ "name": "bengali"
+ },
+ "be": {
+ "code": "be",
+ "name": "biélorusse"
+ },
+ "my": {
+ "code": "my",
+ "name": "birman"
+ },
+ "brx": {
+ "code": "brx",
+ "name": "bodo"
+ },
+ "bs": {
+ "code": "bs",
+ "name": "bosniaque"
+ },
+ "br": {
+ "code": "br",
+ "name": "breton"
+ },
+ "bg": {
+ "code": "bg",
+ "name": "bulgare"
+ },
+ "kea": {
+ "code": "kea",
+ "name": "capverdien"
+ },
+ "ca": {
+ "code": "ca",
+ "name": "catalan"
+ },
+ "ksb": {
+ "code": "ksb",
+ "name": "chambala"
+ },
+ "chr": {
+ "code": "chr",
+ "name": "cherokee"
+ },
+ "zh": {
+ "code": "zh",
+ "name": "chinois"
+ },
+ "zh-Hans": {
+ "code": "zh-Hans",
+ "name": "chinois simplifié"
+ },
+ "zh-Hant": {
+ "code": "zh-Hant",
+ "name": "chinois traditionnel"
+ },
+ "shi": {
+ "code": "shi",
+ "name": "chleuh"
+ },
+ "si": {
+ "code": "si",
+ "name": "cinghalais"
+ },
+ "ko": {
+ "code": "ko",
+ "name": "coréen"
+ },
+ "mfe": {
+ "code": "mfe",
+ "name": "créole mauricien"
+ },
+ "hr": {
+ "code": "hr",
+ "name": "croate"
+ },
+ "da": {
+ "code": "da",
+ "name": "danois"
+ },
+ "dyo": {
+ "code": "dyo",
+ "name": "diola-fogny"
+ },
+ "dz": {
+ "code": "dz",
+ "name": "dzongkha"
+ },
+ "ebu": {
+ "code": "ebu",
+ "name": "embou"
+ },
+ "es": {
+ "code": "es",
+ "name": "espagnol"
+ },
+ "es-ES": {
+ "code": "es-ES",
+ "name": "espagnol d’Europe"
+ },
+ "es-MX": {
+ "code": "es-MX",
+ "name": "espagnol mexicain"
+ },
+ "eo": {
+ "code": "eo",
+ "name": "espéranto"
+ },
+ "et": {
+ "code": "et",
+ "name": "estonien"
+ },
+ "ee": {
+ "code": "ee",
+ "name": "éwé"
+ },
+ "ewo": {
+ "code": "ewo",
+ "name": "éwondo"
+ },
+ "fo": {
+ "code": "fo",
+ "name": "féroïen"
+ },
+ "fil": {
+ "code": "fil",
+ "name": "filipino"
+ },
+ "fi": {
+ "code": "fi",
+ "name": "finnois"
+ },
+ "nl-BE": {
+ "code": "nl-BE",
+ "name": "flamand"
+ },
+ "fr": {
+ "code": "fr",
+ "name": "français"
+ },
+ "fr-CA": {
+ "code": "fr-CA",
+ "name": "français canadien"
+ },
+ "fr-CH": {
+ "code": "fr-CH",
+ "name": "français suisse"
+ },
+ "ksh": {
+ "code": "ksh",
+ "name": "francique ripuaire"
+ },
+ "fur": {
+ "code": "fur",
+ "name": "frioulan"
+ },
+ "fy": {
+ "code": "fy",
+ "name": "frison occidental"
+ },
+ "gd": {
+ "code": "gd",
+ "name": "gaélique écossais"
+ },
+ "gl": {
+ "code": "gl",
+ "name": "galicien"
+ },
+ "cy": {
+ "code": "cy",
+ "name": "gallois"
+ },
+ "lg": {
+ "code": "lg",
+ "name": "ganda"
+ },
+ "ka": {
+ "code": "ka",
+ "name": "géorgien"
+ },
+ "el": {
+ "code": "el",
+ "name": "grec"
+ },
+ "kl": {
+ "code": "kl",
+ "name": "groenlandais"
+ },
+ "gu": {
+ "code": "gu",
+ "name": "gujarati"
+ },
+ "guz": {
+ "code": "guz",
+ "name": "gusii"
+ },
+ "ha": {
+ "code": "ha",
+ "name": "haoussa"
+ },
+ "hsb": {
+ "code": "hsb",
+ "name": "haut-sorabe"
+ },
+ "he": {
+ "code": "he",
+ "name": "hébreu"
+ },
+ "hi": {
+ "code": "hi",
+ "name": "hindi"
+ },
+ "hu": {
+ "code": "hu",
+ "name": "hongrois"
+ },
+ "id": {
+ "code": "id",
+ "name": "indonésien"
+ },
+ "ga": {
+ "code": "ga",
+ "name": "irlandais"
+ },
+ "is": {
+ "code": "is",
+ "name": "islandais"
+ },
+ "it": {
+ "code": "it",
+ "name": "italien"
+ },
+ "ja": {
+ "code": "ja",
+ "name": "japonais"
+ },
+ "kab": {
+ "code": "kab",
+ "name": "kabyle"
+ },
+ "kln": {
+ "code": "kln",
+ "name": "kalenjin"
+ },
+ "kam": {
+ "code": "kam",
+ "name": "kamba"
+ },
+ "kn": {
+ "code": "kn",
+ "name": "kannada"
+ },
+ "ks": {
+ "code": "ks",
+ "name": "kashmiri"
+ },
+ "kk": {
+ "code": "kk",
+ "name": "kazakh"
+ },
+ "km": {
+ "code": "km",
+ "name": "khmer"
+ },
+ "cgg": {
+ "code": "cgg",
+ "name": "kiga"
+ },
+ "ki": {
+ "code": "ki",
+ "name": "kikuyu"
+ },
+ "ky": {
+ "code": "ky",
+ "name": "kirghize"
+ },
+ "khq": {
+ "code": "khq",
+ "name": "koyra chiini"
+ },
+ "ses": {
+ "code": "ses",
+ "name": "koyraboro senni"
+ },
+ "nmg": {
+ "code": "nmg",
+ "name": "kwasio"
+ },
+ "lag": {
+ "code": "lag",
+ "name": "langi"
+ },
+ "lo": {
+ "code": "lo",
+ "name": "lao"
+ },
+ "lv": {
+ "code": "lv",
+ "name": "letton"
+ },
+ "ln": {
+ "code": "ln",
+ "name": "lingala"
+ },
+ "lt": {
+ "code": "lt",
+ "name": "lituanien"
+ },
+ "lu": {
+ "code": "lu",
+ "name": "luba-katanga"
+ },
+ "luo": {
+ "code": "luo",
+ "name": "Luo"
+ },
+ "lb": {
+ "code": "lb",
+ "name": "luxembourgeois"
+ },
+ "mk": {
+ "code": "mk",
+ "name": "macédonien"
+ },
+ "jmc": {
+ "code": "jmc",
+ "name": "machame"
+ },
+ "mgh": {
+ "code": "mgh",
+ "name": "makhuwa-meetto"
+ },
+ "kde": {
+ "code": "kde",
+ "name": "makonde"
+ },
+ "ms": {
+ "code": "ms",
+ "name": "malais"
+ },
+ "ml": {
+ "code": "ml",
+ "name": "malayalam"
+ },
+ "mg": {
+ "code": "mg",
+ "name": "malgache"
+ },
+ "mt": {
+ "code": "mt",
+ "name": "maltais"
+ },
+ "mr": {
+ "code": "mr",
+ "name": "marathe"
+ },
+ "mas": {
+ "code": "mas",
+ "name": "masai"
+ },
+ "mer": {
+ "code": "mer",
+ "name": "merou"
+ },
+ "ro-MD": {
+ "code": "ro-MD",
+ "name": "moldave"
+ },
+ "mn": {
+ "code": "mn",
+ "name": "mongol"
+ },
+ "mua": {
+ "code": "mua",
+ "name": "mundang"
+ },
+ "naq": {
+ "code": "naq",
+ "name": "nama"
+ },
+ "nd": {
+ "code": "nd",
+ "name": "ndébélé du Nord"
+ },
+ "nl": {
+ "code": "nl",
+ "name": "néerlandais"
+ },
+ "ne": {
+ "code": "ne",
+ "name": "népalais"
+ },
+ "jgo": {
+ "code": "jgo",
+ "name": "ngomba"
+ },
+ "nb": {
+ "code": "nb",
+ "name": "norvégien bokmål"
+ },
+ "nn": {
+ "code": "nn",
+ "name": "norvégien nynorsk"
+ },
+ "nus": {
+ "code": "nus",
+ "name": "nuer"
+ },
+ "nyn": {
+ "code": "nyn",
+ "name": "nyankolé"
+ },
+ "luy": {
+ "code": "luy",
+ "name": "oluluyia"
+ },
+ "or": {
+ "code": "or",
+ "name": "oriya"
+ },
+ "ug": {
+ "code": "ug",
+ "name": "ouïghour"
+ },
+ "ur": {
+ "code": "ur",
+ "name": "ourdou"
+ },
+ "uz": {
+ "code": "uz",
+ "name": "ouzbek"
+ },
+ "ps": {
+ "code": "ps",
+ "name": "pachto"
+ },
+ "pa": {
+ "code": "pa",
+ "name": "pendjabi"
+ },
+ "fa": {
+ "code": "fa",
+ "name": "persan"
+ },
+ "ff": {
+ "code": "ff",
+ "name": "peul"
+ },
+ "pl": {
+ "code": "pl",
+ "name": "polonais"
+ },
+ "pt": {
+ "code": "pt",
+ "name": "portugais"
+ },
+ "pt-BR": {
+ "code": "pt-BR",
+ "name": "portugais brésilien"
+ },
+ "pt-PT": {
+ "code": "pt-PT",
+ "name": "portugais d’Europe"
+ },
+ "rm": {
+ "code": "rm",
+ "name": "romanche"
+ },
+ "rof": {
+ "code": "rof",
+ "name": "rombo"
+ },
+ "ro": {
+ "code": "ro",
+ "name": "roumain"
+ },
+ "rn": {
+ "code": "rn",
+ "name": "roundi"
+ },
+ "ru": {
+ "code": "ru",
+ "name": "russe"
+ },
+ "rwk": {
+ "code": "rwk",
+ "name": "rwa"
+ },
+ "saq": {
+ "code": "saq",
+ "name": "samburu"
+ },
+ "se": {
+ "code": "se",
+ "name": "sami du Nord"
+ },
+ "sg": {
+ "code": "sg",
+ "name": "sangho"
+ },
+ "sbp": {
+ "code": "sbp",
+ "name": "sangu"
+ },
+ "seh": {
+ "code": "seh",
+ "name": "sena"
+ },
+ "sr": {
+ "code": "sr",
+ "name": "serbe"
+ },
+ "sn": {
+ "code": "sn",
+ "name": "shona"
+ },
+ "sk": {
+ "code": "sk",
+ "name": "slovaque"
+ },
+ "sl": {
+ "code": "sl",
+ "name": "slovène"
+ },
+ "xog": {
+ "code": "xog",
+ "name": "soga"
+ },
+ "so": {
+ "code": "so",
+ "name": "somali"
+ },
+ "sv": {
+ "code": "sv",
+ "name": "suédois"
+ },
+ "sw": {
+ "code": "sw",
+ "name": "swahili"
+ },
+ "swc": {
+ "code": "swc",
+ "name": "swahili du Congo"
+ },
+ "dav": {
+ "code": "dav",
+ "name": "taita"
+ },
+ "tzm": {
+ "code": "tzm",
+ "name": "tamazight"
+ },
+ "ta": {
+ "code": "ta",
+ "name": "tamoul"
+ },
+ "twq": {
+ "code": "twq",
+ "name": "tasawaq"
+ },
+ "cs": {
+ "code": "cs",
+ "name": "tchèque"
+ },
+ "te": {
+ "code": "te",
+ "name": "télougou"
+ },
+ "teo": {
+ "code": "teo",
+ "name": "teso"
+ },
+ "th": {
+ "code": "th",
+ "name": "thaï"
+ },
+ "bo": {
+ "code": "bo",
+ "name": "tibétain"
+ },
+ "ti": {
+ "code": "ti",
+ "name": "tigrigna"
+ },
+ "to": {
+ "code": "to",
+ "name": "tonguien"
+ },
+ "tr": {
+ "code": "tr",
+ "name": "turc"
+ },
+ "uk": {
+ "code": "uk",
+ "name": "ukrainien"
+ },
+ "vai": {
+ "code": "vai",
+ "name": "vaï"
+ },
+ "vi": {
+ "code": "vi",
+ "name": "vietnamien"
+ },
+ "vun": {
+ "code": "vun",
+ "name": "vunjo"
+ },
+ "wae": {
+ "code": "wae",
+ "name": "walser"
+ },
+ "yav": {
+ "code": "yav",
+ "name": "yangben"
+ },
+ "yo": {
+ "code": "yo",
+ "name": "yoruba"
+ },
+ "dje": {
+ "code": "dje",
+ "name": "zarma"
+ },
+ "zu": {
+ "code": "zu",
+ "name": "zoulou"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/language/fur.json b/library/intl/resources/language/fur.json
new file mode 100644
index 000000000..16c262dc3
--- /dev/null
+++ b/library/intl/resources/language/fur.json
@@ -0,0 +1,738 @@
+{
+ "af": {
+ "code": "af",
+ "name": "afrikaans"
+ },
+ "agq": {
+ "code": "agq",
+ "name": "Aghem"
+ },
+ "ak": {
+ "code": "ak",
+ "name": "Akan"
+ },
+ "sq": {
+ "code": "sq",
+ "name": "albanês"
+ },
+ "de-CH": {
+ "code": "de-CH",
+ "name": "alt todesc de Svuizare"
+ },
+ "am": {
+ "code": "am",
+ "name": "amaric"
+ },
+ "ar-001": {
+ "code": "ar-001",
+ "name": "ar_001"
+ },
+ "ar": {
+ "code": "ar",
+ "name": "arap"
+ },
+ "hy": {
+ "code": "hy",
+ "name": "armen"
+ },
+ "ast": {
+ "code": "ast",
+ "name": "asturian"
+ },
+ "asa": {
+ "code": "asa",
+ "name": "Asu"
+ },
+ "az": {
+ "code": "az",
+ "name": "azerbaijani"
+ },
+ "ksf": {
+ "code": "ksf",
+ "name": "Bafia"
+ },
+ "bm": {
+ "code": "bm",
+ "name": "Bambara"
+ },
+ "bas": {
+ "code": "bas",
+ "name": "Basaa"
+ },
+ "eu": {
+ "code": "eu",
+ "name": "basc"
+ },
+ "bez": {
+ "code": "bez",
+ "name": "Bena"
+ },
+ "bn": {
+ "code": "bn",
+ "name": "bengalês"
+ },
+ "be": {
+ "code": "be",
+ "name": "bielorùs"
+ },
+ "brx": {
+ "code": "brx",
+ "name": "Bodo"
+ },
+ "bs": {
+ "code": "bs",
+ "name": "bosniac"
+ },
+ "br": {
+ "code": "br",
+ "name": "breton"
+ },
+ "bg": {
+ "code": "bg",
+ "name": "bulgar"
+ },
+ "my": {
+ "code": "my",
+ "name": "Burmese"
+ },
+ "ca": {
+ "code": "ca",
+ "name": "catalan"
+ },
+ "cs": {
+ "code": "cs",
+ "name": "cec"
+ },
+ "tzm": {
+ "code": "tzm",
+ "name": "Central Atlas Tamazight"
+ },
+ "chr": {
+ "code": "chr",
+ "name": "Cherokee"
+ },
+ "cgg": {
+ "code": "cgg",
+ "name": "Chiga"
+ },
+ "zh": {
+ "code": "zh",
+ "name": "cinês"
+ },
+ "zh-Hans": {
+ "code": "zh-Hans",
+ "name": "cinês semplificât"
+ },
+ "zh-Hant": {
+ "code": "zh-Hant",
+ "name": "cinês tradizionâl"
+ },
+ "ksh": {
+ "code": "ksh",
+ "name": "Colognian"
+ },
+ "swc": {
+ "code": "swc",
+ "name": "Congo Swahili"
+ },
+ "ko": {
+ "code": "ko",
+ "name": "corean"
+ },
+ "hr": {
+ "code": "hr",
+ "name": "cravuat"
+ },
+ "da": {
+ "code": "da",
+ "name": "danês"
+ },
+ "dz": {
+ "code": "dz",
+ "name": "Dzongkha"
+ },
+ "he": {
+ "code": "he",
+ "name": "ebraic"
+ },
+ "ebu": {
+ "code": "ebu",
+ "name": "Embu"
+ },
+ "es-MX": {
+ "code": "es-MX",
+ "name": "es_MX"
+ },
+ "eo": {
+ "code": "eo",
+ "name": "esperanto"
+ },
+ "et": {
+ "code": "et",
+ "name": "eston"
+ },
+ "ee": {
+ "code": "ee",
+ "name": "Ewe"
+ },
+ "ewo": {
+ "code": "ewo",
+ "name": "Ewondo"
+ },
+ "fo": {
+ "code": "fo",
+ "name": "faroês"
+ },
+ "fil": {
+ "code": "fil",
+ "name": "filipin"
+ },
+ "fi": {
+ "code": "fi",
+ "name": "finlandês"
+ },
+ "nl-BE": {
+ "code": "nl-BE",
+ "name": "flamant"
+ },
+ "fr": {
+ "code": "fr",
+ "name": "francês"
+ },
+ "fr-CA": {
+ "code": "fr-CA",
+ "name": "francês dal Canade"
+ },
+ "fr-CH": {
+ "code": "fr-CH",
+ "name": "francês de Svuizare"
+ },
+ "fy": {
+ "code": "fy",
+ "name": "frisian"
+ },
+ "ff": {
+ "code": "ff",
+ "name": "fulah"
+ },
+ "fur": {
+ "code": "fur",
+ "name": "furlan"
+ },
+ "ga": {
+ "code": "ga",
+ "name": "gaelic irlandês"
+ },
+ "gd": {
+ "code": "gd",
+ "name": "gaelic scozês"
+ },
+ "cy": {
+ "code": "cy",
+ "name": "galês"
+ },
+ "gl": {
+ "code": "gl",
+ "name": "galizian"
+ },
+ "lg": {
+ "code": "lg",
+ "name": "Ganda"
+ },
+ "ja": {
+ "code": "ja",
+ "name": "gjaponês"
+ },
+ "ka": {
+ "code": "ka",
+ "name": "gjeorgjian"
+ },
+ "el": {
+ "code": "el",
+ "name": "grêc"
+ },
+ "gu": {
+ "code": "gu",
+ "name": "gujarati"
+ },
+ "guz": {
+ "code": "guz",
+ "name": "Gusii"
+ },
+ "ha": {
+ "code": "ha",
+ "name": "Hausa"
+ },
+ "hi": {
+ "code": "hi",
+ "name": "hindi"
+ },
+ "id": {
+ "code": "id",
+ "name": "indonesian"
+ },
+ "en": {
+ "code": "en",
+ "name": "inglês"
+ },
+ "en-AU": {
+ "code": "en-AU",
+ "name": "inglês australian"
+ },
+ "en-GB": {
+ "code": "en-GB",
+ "name": "inglês britanic"
+ },
+ "en-CA": {
+ "code": "en-CA",
+ "name": "inglês canadês"
+ },
+ "en-US": {
+ "code": "en-US",
+ "name": "ingles merecan"
+ },
+ "is": {
+ "code": "is",
+ "name": "islandês"
+ },
+ "dyo": {
+ "code": "dyo",
+ "name": "Jola-Fonyi"
+ },
+ "kea": {
+ "code": "kea",
+ "name": "Kabuverdianu"
+ },
+ "kab": {
+ "code": "kab",
+ "name": "Kabyle"
+ },
+ "kl": {
+ "code": "kl",
+ "name": "kalaallisut"
+ },
+ "kln": {
+ "code": "kln",
+ "name": "Kalenjin"
+ },
+ "kam": {
+ "code": "kam",
+ "name": "Kamba"
+ },
+ "kn": {
+ "code": "kn",
+ "name": "kannada"
+ },
+ "ks": {
+ "code": "ks",
+ "name": "Kashmiri"
+ },
+ "kk": {
+ "code": "kk",
+ "name": "kazac"
+ },
+ "km": {
+ "code": "km",
+ "name": "khmer"
+ },
+ "ki": {
+ "code": "ki",
+ "name": "Kikuyu"
+ },
+ "khq": {
+ "code": "khq",
+ "name": "Koyra Chiini"
+ },
+ "ses": {
+ "code": "ses",
+ "name": "Koyraboro Senni"
+ },
+ "nmg": {
+ "code": "nmg",
+ "name": "Kwasio"
+ },
+ "ky": {
+ "code": "ky",
+ "name": "Kyrgyz"
+ },
+ "lag": {
+ "code": "lag",
+ "name": "Langi"
+ },
+ "lo": {
+ "code": "lo",
+ "name": "lao"
+ },
+ "lv": {
+ "code": "lv",
+ "name": "leton"
+ },
+ "ln": {
+ "code": "ln",
+ "name": "lingala"
+ },
+ "lt": {
+ "code": "lt",
+ "name": "lituan"
+ },
+ "dsb": {
+ "code": "dsb",
+ "name": "Lower Sorbian"
+ },
+ "lu": {
+ "code": "lu",
+ "name": "Luba-Katanga"
+ },
+ "luo": {
+ "code": "luo",
+ "name": "Luo"
+ },
+ "lb": {
+ "code": "lb",
+ "name": "lussemburghês"
+ },
+ "luy": {
+ "code": "luy",
+ "name": "Luyia"
+ },
+ "mk": {
+ "code": "mk",
+ "name": "macedon"
+ },
+ "jmc": {
+ "code": "jmc",
+ "name": "Machame"
+ },
+ "mgh": {
+ "code": "mgh",
+ "name": "Makhuwa-Meetto"
+ },
+ "kde": {
+ "code": "kde",
+ "name": "Makonde"
+ },
+ "mg": {
+ "code": "mg",
+ "name": "malagasy"
+ },
+ "ml": {
+ "code": "ml",
+ "name": "malayalam"
+ },
+ "ms": {
+ "code": "ms",
+ "name": "malês"
+ },
+ "mt": {
+ "code": "mt",
+ "name": "maltês"
+ },
+ "mr": {
+ "code": "mr",
+ "name": "marathi"
+ },
+ "mas": {
+ "code": "mas",
+ "name": "Masai"
+ },
+ "mer": {
+ "code": "mer",
+ "name": "Meru"
+ },
+ "ro-MD": {
+ "code": "ro-MD",
+ "name": "moldâf"
+ },
+ "mn": {
+ "code": "mn",
+ "name": "mongul"
+ },
+ "mfe": {
+ "code": "mfe",
+ "name": "Morisyen"
+ },
+ "mua": {
+ "code": "mua",
+ "name": "Mundang"
+ },
+ "naq": {
+ "code": "naq",
+ "name": "Nama"
+ },
+ "nd": {
+ "code": "nd",
+ "name": "ndebele setentrionâl"
+ },
+ "ne": {
+ "code": "ne",
+ "name": "nepalês"
+ },
+ "jgo": {
+ "code": "jgo",
+ "name": "Ngomba"
+ },
+ "nb": {
+ "code": "nb",
+ "name": "norvegjês bokmål"
+ },
+ "nn": {
+ "code": "nn",
+ "name": "norvegjês nynorsk"
+ },
+ "nus": {
+ "code": "nus",
+ "name": "Nuer"
+ },
+ "nyn": {
+ "code": "nyn",
+ "name": "Nyankole"
+ },
+ "nl": {
+ "code": "nl",
+ "name": "olandês"
+ },
+ "hu": {
+ "code": "hu",
+ "name": "ongjarês"
+ },
+ "or": {
+ "code": "or",
+ "name": "oriya"
+ },
+ "ps": {
+ "code": "ps",
+ "name": "pashto"
+ },
+ "fa": {
+ "code": "fa",
+ "name": "persian"
+ },
+ "pl": {
+ "code": "pl",
+ "name": "polac"
+ },
+ "pt": {
+ "code": "pt",
+ "name": "portughês"
+ },
+ "pt-BR": {
+ "code": "pt-BR",
+ "name": "portughês brasilian"
+ },
+ "pt-PT": {
+ "code": "pt-PT",
+ "name": "portughês iberic"
+ },
+ "pa": {
+ "code": "pa",
+ "name": "punjabi"
+ },
+ "rof": {
+ "code": "rof",
+ "name": "Rombo"
+ },
+ "ro": {
+ "code": "ro",
+ "name": "romen"
+ },
+ "rm": {
+ "code": "rm",
+ "name": "rumanç"
+ },
+ "rn": {
+ "code": "rn",
+ "name": "Rundi"
+ },
+ "ru": {
+ "code": "ru",
+ "name": "rus"
+ },
+ "rwk": {
+ "code": "rwk",
+ "name": "Rwa"
+ },
+ "saq": {
+ "code": "saq",
+ "name": "Samburu"
+ },
+ "se": {
+ "code": "se",
+ "name": "sami setentrionâl"
+ },
+ "sg": {
+ "code": "sg",
+ "name": "sango"
+ },
+ "sbp": {
+ "code": "sbp",
+ "name": "Sangu"
+ },
+ "seh": {
+ "code": "seh",
+ "name": "Sena"
+ },
+ "sr": {
+ "code": "sr",
+ "name": "serp"
+ },
+ "ksb": {
+ "code": "ksb",
+ "name": "Shambala"
+ },
+ "sn": {
+ "code": "sn",
+ "name": "Shona"
+ },
+ "si": {
+ "code": "si",
+ "name": "sinalês"
+ },
+ "sk": {
+ "code": "sk",
+ "name": "slovac"
+ },
+ "sl": {
+ "code": "sl",
+ "name": "sloven"
+ },
+ "xog": {
+ "code": "xog",
+ "name": "Soga"
+ },
+ "so": {
+ "code": "so",
+ "name": "somal"
+ },
+ "es": {
+ "code": "es",
+ "name": "spagnûl"
+ },
+ "es-ES": {
+ "code": "es-ES",
+ "name": "spagnûl iberic"
+ },
+ "zgh": {
+ "code": "zgh",
+ "name": "Standard Moroccan Tamazight"
+ },
+ "sv": {
+ "code": "sv",
+ "name": "svedês"
+ },
+ "sw": {
+ "code": "sw",
+ "name": "swahili"
+ },
+ "gsw": {
+ "code": "gsw",
+ "name": "Swiss German"
+ },
+ "shi": {
+ "code": "shi",
+ "name": "Tachelhit"
+ },
+ "dav": {
+ "code": "dav",
+ "name": "Taita"
+ },
+ "it": {
+ "code": "it",
+ "name": "talian"
+ },
+ "ta": {
+ "code": "ta",
+ "name": "tamil"
+ },
+ "twq": {
+ "code": "twq",
+ "name": "Tasawaq"
+ },
+ "te": {
+ "code": "te",
+ "name": "telegu"
+ },
+ "teo": {
+ "code": "teo",
+ "name": "Teso"
+ },
+ "th": {
+ "code": "th",
+ "name": "thai"
+ },
+ "bo": {
+ "code": "bo",
+ "name": "tibetan"
+ },
+ "ti": {
+ "code": "ti",
+ "name": "Tigrinya"
+ },
+ "de": {
+ "code": "de",
+ "name": "todesc"
+ },
+ "de-AT": {
+ "code": "de-AT",
+ "name": "todesc de Austrie"
+ },
+ "to": {
+ "code": "to",
+ "name": "Tongan"
+ },
+ "tr": {
+ "code": "tr",
+ "name": "turc"
+ },
+ "uk": {
+ "code": "uk",
+ "name": "ucrain"
+ },
+ "ug": {
+ "code": "ug",
+ "name": "uigur"
+ },
+ "hsb": {
+ "code": "hsb",
+ "name": "Upper Sorbian"
+ },
+ "ur": {
+ "code": "ur",
+ "name": "urdu"
+ },
+ "uz": {
+ "code": "uz",
+ "name": "uzbec"
+ },
+ "vai": {
+ "code": "vai",
+ "name": "Vai"
+ },
+ "vi": {
+ "code": "vi",
+ "name": "vietnamite"
+ },
+ "vun": {
+ "code": "vun",
+ "name": "Vunjo"
+ },
+ "wae": {
+ "code": "wae",
+ "name": "Walser"
+ },
+ "yav": {
+ "code": "yav",
+ "name": "Yangben"
+ },
+ "yo": {
+ "code": "yo",
+ "name": "yoruba"
+ },
+ "dje": {
+ "code": "dje",
+ "name": "Zarma"
+ },
+ "zu": {
+ "code": "zu",
+ "name": "zulu"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/language/fy.json b/library/intl/resources/language/fy.json
new file mode 100644
index 000000000..ccf6d7156
--- /dev/null
+++ b/library/intl/resources/language/fy.json
@@ -0,0 +1,738 @@
+{
+ "af": {
+ "code": "af",
+ "name": "Afrikaansk"
+ },
+ "agq": {
+ "code": "agq",
+ "name": "Aghem"
+ },
+ "ak": {
+ "code": "ak",
+ "name": "Akan"
+ },
+ "sq": {
+ "code": "sq",
+ "name": "Albaneesk"
+ },
+ "en-US": {
+ "code": "en-US",
+ "name": "Amerikaansk Ingelsk"
+ },
+ "am": {
+ "code": "am",
+ "name": "Amhaarsk"
+ },
+ "ar": {
+ "code": "ar",
+ "name": "Arabysk"
+ },
+ "hy": {
+ "code": "hy",
+ "name": "Armeensk"
+ },
+ "ast": {
+ "code": "ast",
+ "name": "Asturysk"
+ },
+ "asa": {
+ "code": "asa",
+ "name": "Asu"
+ },
+ "en-AU": {
+ "code": "en-AU",
+ "name": "Australysk Ingelsk"
+ },
+ "az": {
+ "code": "az",
+ "name": "Azerbeidzjaansk"
+ },
+ "ksf": {
+ "code": "ksf",
+ "name": "Bafia"
+ },
+ "bm": {
+ "code": "bm",
+ "name": "Bambara"
+ },
+ "bas": {
+ "code": "bas",
+ "name": "Basa"
+ },
+ "eu": {
+ "code": "eu",
+ "name": "Baskysk"
+ },
+ "bez": {
+ "code": "bez",
+ "name": "Bena"
+ },
+ "bn": {
+ "code": "bn",
+ "name": "Bengaalsk"
+ },
+ "my": {
+ "code": "my",
+ "name": "Birmees"
+ },
+ "brx": {
+ "code": "brx",
+ "name": "Bodo"
+ },
+ "bs": {
+ "code": "bs",
+ "name": "Bosnysk"
+ },
+ "pt-BR": {
+ "code": "pt-BR",
+ "name": "Brazyljaansk Portugees"
+ },
+ "br": {
+ "code": "br",
+ "name": "Bretonsk"
+ },
+ "en-GB": {
+ "code": "en-GB",
+ "name": "Britsk Ingelsk"
+ },
+ "bg": {
+ "code": "bg",
+ "name": "Bulgaarsk"
+ },
+ "chr": {
+ "code": "chr",
+ "name": "Cherokee"
+ },
+ "cgg": {
+ "code": "cgg",
+ "name": "Chiga"
+ },
+ "swc": {
+ "code": "swc",
+ "name": "Congo Swahili"
+ },
+ "da": {
+ "code": "da",
+ "name": "Deensk"
+ },
+ "de": {
+ "code": "de",
+ "name": "Dútsk"
+ },
+ "dz": {
+ "code": "dz",
+ "name": "Dzongkha"
+ },
+ "de-AT": {
+ "code": "de-AT",
+ "name": "Eastenryks Dútsk"
+ },
+ "ebu": {
+ "code": "ebu",
+ "name": "Embu"
+ },
+ "eo": {
+ "code": "eo",
+ "name": "Esperanto"
+ },
+ "et": {
+ "code": "et",
+ "name": "Estlânsk"
+ },
+ "pt-PT": {
+ "code": "pt-PT",
+ "name": "Europees Portugees"
+ },
+ "es-ES": {
+ "code": "es-ES",
+ "name": "Europeesk Spaansk"
+ },
+ "ee": {
+ "code": "ee",
+ "name": "Ewe"
+ },
+ "ewo": {
+ "code": "ewo",
+ "name": "Ewondo"
+ },
+ "fo": {
+ "code": "fo",
+ "name": "Faeröersk"
+ },
+ "zh-Hans": {
+ "code": "zh-Hans",
+ "name": "Ferienfâldich Sineesk"
+ },
+ "fil": {
+ "code": "fil",
+ "name": "Filipynsk"
+ },
+ "fi": {
+ "code": "fi",
+ "name": "Finsk"
+ },
+ "fr": {
+ "code": "fr",
+ "name": "Frânsk"
+ },
+ "fur": {
+ "code": "fur",
+ "name": "Friulysk"
+ },
+ "ff": {
+ "code": "ff",
+ "name": "Fulah"
+ },
+ "gl": {
+ "code": "gl",
+ "name": "Galisysk"
+ },
+ "lg": {
+ "code": "lg",
+ "name": "Ganda"
+ },
+ "ka": {
+ "code": "ka",
+ "name": "Georgysk"
+ },
+ "kl": {
+ "code": "kl",
+ "name": "Grienlâns"
+ },
+ "el": {
+ "code": "el",
+ "name": "Gryks"
+ },
+ "gu": {
+ "code": "gu",
+ "name": "Gujarati"
+ },
+ "guz": {
+ "code": "guz",
+ "name": "Gusii"
+ },
+ "ha": {
+ "code": "ha",
+ "name": "Hausa"
+ },
+ "he": {
+ "code": "he",
+ "name": "Hebreeuwsk"
+ },
+ "hi": {
+ "code": "hi",
+ "name": "Hindi"
+ },
+ "hu": {
+ "code": "hu",
+ "name": "Hongaarsk"
+ },
+ "ga": {
+ "code": "ga",
+ "name": "Iersk"
+ },
+ "en": {
+ "code": "en",
+ "name": "Ingelsk"
+ },
+ "it": {
+ "code": "it",
+ "name": "Italiaansk"
+ },
+ "ja": {
+ "code": "ja",
+ "name": "Japans"
+ },
+ "dyo": {
+ "code": "dyo",
+ "name": "Jola-Fonyi"
+ },
+ "kea": {
+ "code": "kea",
+ "name": "Kaapverdysk Creools"
+ },
+ "kab": {
+ "code": "kab",
+ "name": "Kabyle"
+ },
+ "kln": {
+ "code": "kln",
+ "name": "Kalenjin"
+ },
+ "kam": {
+ "code": "kam",
+ "name": "Kamba"
+ },
+ "fr-CA": {
+ "code": "fr-CA",
+ "name": "Kanadeesk Frânsk"
+ },
+ "en-CA": {
+ "code": "en-CA",
+ "name": "Kanadeesk Ingelsk"
+ },
+ "kn": {
+ "code": "kn",
+ "name": "Kannada"
+ },
+ "ks": {
+ "code": "ks",
+ "name": "Kasjmiri"
+ },
+ "ca": {
+ "code": "ca",
+ "name": "Katalaansk"
+ },
+ "kk": {
+ "code": "kk",
+ "name": "Kazachs"
+ },
+ "km": {
+ "code": "km",
+ "name": "Khmer"
+ },
+ "ki": {
+ "code": "ki",
+ "name": "Kikuyu"
+ },
+ "ky": {
+ "code": "ky",
+ "name": "Kirgizysk"
+ },
+ "rn": {
+ "code": "rn",
+ "name": "Kirundi"
+ },
+ "ksh": {
+ "code": "ksh",
+ "name": "Kölsch"
+ },
+ "ko": {
+ "code": "ko",
+ "name": "Koreaansk"
+ },
+ "khq": {
+ "code": "khq",
+ "name": "Koyra Chiini"
+ },
+ "ses": {
+ "code": "ses",
+ "name": "Koyraboro Senni"
+ },
+ "hr": {
+ "code": "hr",
+ "name": "Kroatysk"
+ },
+ "lag": {
+ "code": "lag",
+ "name": "Langi"
+ },
+ "lo": {
+ "code": "lo",
+ "name": "Laotiaansk"
+ },
+ "lv": {
+ "code": "lv",
+ "name": "Letlâns"
+ },
+ "ln": {
+ "code": "ln",
+ "name": "Lingala"
+ },
+ "lt": {
+ "code": "lt",
+ "name": "Litouws"
+ },
+ "lu": {
+ "code": "lu",
+ "name": "Luba-Katanga"
+ },
+ "luo": {
+ "code": "luo",
+ "name": "Luo"
+ },
+ "lb": {
+ "code": "lb",
+ "name": "Luxemburgs"
+ },
+ "luy": {
+ "code": "luy",
+ "name": "Luyia"
+ },
+ "mk": {
+ "code": "mk",
+ "name": "Macedonysk"
+ },
+ "jmc": {
+ "code": "jmc",
+ "name": "Machame"
+ },
+ "mgh": {
+ "code": "mgh",
+ "name": "Makhuwa-Meetto"
+ },
+ "kde": {
+ "code": "kde",
+ "name": "Makonde"
+ },
+ "mg": {
+ "code": "mg",
+ "name": "Malagasysk"
+ },
+ "ml": {
+ "code": "ml",
+ "name": "Malayalam"
+ },
+ "ms": {
+ "code": "ms",
+ "name": "Maleis"
+ },
+ "mt": {
+ "code": "mt",
+ "name": "Maltees"
+ },
+ "mr": {
+ "code": "mr",
+ "name": "Marathi"
+ },
+ "mas": {
+ "code": "mas",
+ "name": "Masai"
+ },
+ "es-MX": {
+ "code": "es-MX",
+ "name": "Meksikaansk Spaansk"
+ },
+ "mer": {
+ "code": "mer",
+ "name": "Meru"
+ },
+ "ar-001": {
+ "code": "ar-001",
+ "name": "Modern standert Arabysk"
+ },
+ "ro-MD": {
+ "code": "ro-MD",
+ "name": "Moldavysk"
+ },
+ "mn": {
+ "code": "mn",
+ "name": "Mongools"
+ },
+ "mfe": {
+ "code": "mfe",
+ "name": "Morisyen"
+ },
+ "mua": {
+ "code": "mua",
+ "name": "Mundang"
+ },
+ "naq": {
+ "code": "naq",
+ "name": "Nama"
+ },
+ "nl": {
+ "code": "nl",
+ "name": "Nederlânsk"
+ },
+ "dsb": {
+ "code": "dsb",
+ "name": "Nedersorbysk"
+ },
+ "ne": {
+ "code": "ne",
+ "name": "Nepalees"
+ },
+ "jgo": {
+ "code": "jgo",
+ "name": "Ngomba"
+ },
+ "nmg": {
+ "code": "nmg",
+ "name": "Ngumba"
+ },
+ "nd": {
+ "code": "nd",
+ "name": "Noard-Ndbele"
+ },
+ "se": {
+ "code": "se",
+ "name": "Noard-Samysk"
+ },
+ "nb": {
+ "code": "nb",
+ "name": "Noors - Bokmål"
+ },
+ "nn": {
+ "code": "nn",
+ "name": "Noors - Nynorsk"
+ },
+ "nus": {
+ "code": "nus",
+ "name": "Nuer"
+ },
+ "nyn": {
+ "code": "nyn",
+ "name": "Nyankole"
+ },
+ "or": {
+ "code": "or",
+ "name": "Odia"
+ },
+ "ug": {
+ "code": "ug",
+ "name": "Oeigoers"
+ },
+ "uk": {
+ "code": "uk",
+ "name": "Oekraïens"
+ },
+ "uz": {
+ "code": "uz",
+ "name": "Oezbeeks"
+ },
+ "hsb": {
+ "code": "hsb",
+ "name": "Oppersorbysk"
+ },
+ "ps": {
+ "code": "ps",
+ "name": "Pasjtoe"
+ },
+ "fa": {
+ "code": "fa",
+ "name": "Perzysk"
+ },
+ "pl": {
+ "code": "pl",
+ "name": "Poalsk"
+ },
+ "pt": {
+ "code": "pt",
+ "name": "Portugeesk"
+ },
+ "pa": {
+ "code": "pa",
+ "name": "Punjabi"
+ },
+ "rm": {
+ "code": "rm",
+ "name": "Reto-Romaansk"
+ },
+ "ro": {
+ "code": "ro",
+ "name": "Roemeensk"
+ },
+ "rof": {
+ "code": "rof",
+ "name": "Rombo"
+ },
+ "ru": {
+ "code": "ru",
+ "name": "Russysk"
+ },
+ "rwk": {
+ "code": "rwk",
+ "name": "Rwa"
+ },
+ "saq": {
+ "code": "saq",
+ "name": "Samburu"
+ },
+ "sg": {
+ "code": "sg",
+ "name": "Sango"
+ },
+ "sbp": {
+ "code": "sbp",
+ "name": "Sangu"
+ },
+ "gd": {
+ "code": "gd",
+ "name": "Schotsk Gaelic"
+ },
+ "seh": {
+ "code": "seh",
+ "name": "Sena"
+ },
+ "sr": {
+ "code": "sr",
+ "name": "Servysk"
+ },
+ "ksb": {
+ "code": "ksb",
+ "name": "Shambala"
+ },
+ "sn": {
+ "code": "sn",
+ "name": "Shona"
+ },
+ "zh": {
+ "code": "zh",
+ "name": "Sineesk"
+ },
+ "si": {
+ "code": "si",
+ "name": "Singalees"
+ },
+ "sl": {
+ "code": "sl",
+ "name": "Sloveensk"
+ },
+ "sk": {
+ "code": "sk",
+ "name": "Slowaaks"
+ },
+ "xog": {
+ "code": "xog",
+ "name": "Soga"
+ },
+ "so": {
+ "code": "so",
+ "name": "Somalysk"
+ },
+ "es": {
+ "code": "es",
+ "name": "Spaansk"
+ },
+ "zgh": {
+ "code": "zgh",
+ "name": "Standert Marokkaanske Tamazight"
+ },
+ "sw": {
+ "code": "sw",
+ "name": "Swahili"
+ },
+ "gsw": {
+ "code": "gsw",
+ "name": "Switsers Dútsk"
+ },
+ "fr-CH": {
+ "code": "fr-CH",
+ "name": "Switserse Frânsk"
+ },
+ "de-CH": {
+ "code": "de-CH",
+ "name": "Switsersk Heechdútsk"
+ },
+ "dav": {
+ "code": "dav",
+ "name": "Taita"
+ },
+ "tzm": {
+ "code": "tzm",
+ "name": "Tamazight (Sintraal-Marokko)"
+ },
+ "ta": {
+ "code": "ta",
+ "name": "Tamil"
+ },
+ "twq": {
+ "code": "twq",
+ "name": "Tasawaq"
+ },
+ "shi": {
+ "code": "shi",
+ "name": "Tashelhiyt"
+ },
+ "te": {
+ "code": "te",
+ "name": "Telugu"
+ },
+ "teo": {
+ "code": "teo",
+ "name": "Teso"
+ },
+ "th": {
+ "code": "th",
+ "name": "Thais"
+ },
+ "bo": {
+ "code": "bo",
+ "name": "Tibetaansk"
+ },
+ "ti": {
+ "code": "ti",
+ "name": "Tigrinya"
+ },
+ "to": {
+ "code": "to",
+ "name": "Tongaansk"
+ },
+ "zh-Hant": {
+ "code": "zh-Hant",
+ "name": "Tradisjoneel Sineesk"
+ },
+ "cs": {
+ "code": "cs",
+ "name": "Tsjechysk"
+ },
+ "tr": {
+ "code": "tr",
+ "name": "Turks"
+ },
+ "ur": {
+ "code": "ur",
+ "name": "Urdu"
+ },
+ "vai": {
+ "code": "vai",
+ "name": "Vai"
+ },
+ "vi": {
+ "code": "vi",
+ "name": "Vietnamees"
+ },
+ "nl-BE": {
+ "code": "nl-BE",
+ "name": "Vlaams"
+ },
+ "vun": {
+ "code": "vun",
+ "name": "Vunjo"
+ },
+ "wae": {
+ "code": "wae",
+ "name": "Walser"
+ },
+ "cy": {
+ "code": "cy",
+ "name": "Welsk"
+ },
+ "fy": {
+ "code": "fy",
+ "name": "West-Frysk"
+ },
+ "be": {
+ "code": "be",
+ "name": "Wyt-Russysk"
+ },
+ "yav": {
+ "code": "yav",
+ "name": "Yangben"
+ },
+ "id": {
+ "code": "id",
+ "name": "Yndonezysk"
+ },
+ "yo": {
+ "code": "yo",
+ "name": "Yoruba"
+ },
+ "is": {
+ "code": "is",
+ "name": "Yslâns"
+ },
+ "dje": {
+ "code": "dje",
+ "name": "Zarma"
+ },
+ "zu": {
+ "code": "zu",
+ "name": "Zulu"
+ },
+ "sv": {
+ "code": "sv",
+ "name": "Zweeds"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/language/ga.json b/library/intl/resources/language/ga.json
new file mode 100644
index 000000000..9133573f5
--- /dev/null
+++ b/library/intl/resources/language/ga.json
@@ -0,0 +1,738 @@
+{
+ "ak": {
+ "code": "ak",
+ "name": "Acáinis"
+ },
+ "af": {
+ "code": "af",
+ "name": "Afracáinis"
+ },
+ "agq": {
+ "code": "agq",
+ "name": "Aghem"
+ },
+ "hy": {
+ "code": "hy",
+ "name": "Airméinis"
+ },
+ "sq": {
+ "code": "sq",
+ "name": "Albáinis"
+ },
+ "am": {
+ "code": "am",
+ "name": "Amáiris"
+ },
+ "ar": {
+ "code": "ar",
+ "name": "Araibis"
+ },
+ "ar-001": {
+ "code": "ar-001",
+ "name": "Araibis Chaighdeánach"
+ },
+ "de-CH": {
+ "code": "de-CH",
+ "name": "Ard-Ghearmáinis Eilvéiseach"
+ },
+ "az": {
+ "code": "az",
+ "name": "Asarbaiseáinis"
+ },
+ "ast": {
+ "code": "ast",
+ "name": "Astúiris"
+ },
+ "asa": {
+ "code": "asa",
+ "name": "Asu"
+ },
+ "ksf": {
+ "code": "ksf",
+ "name": "Bafia"
+ },
+ "bm": {
+ "code": "bm",
+ "name": "Bambara"
+ },
+ "bas": {
+ "code": "bas",
+ "name": "Basaa"
+ },
+ "eu": {
+ "code": "eu",
+ "name": "Bascais"
+ },
+ "be": {
+ "code": "be",
+ "name": "Bealarúisis"
+ },
+ "bn": {
+ "code": "bn",
+ "name": "Beangáilis"
+ },
+ "en": {
+ "code": "en",
+ "name": "Béarla"
+ },
+ "en-AU": {
+ "code": "en-AU",
+ "name": "Béarla Astrálach"
+ },
+ "en-GB": {
+ "code": "en-GB",
+ "name": "Béarla Briotanach"
+ },
+ "en-CA": {
+ "code": "en-CA",
+ "name": "Béarla Ceanadach"
+ },
+ "en-US": {
+ "code": "en-US",
+ "name": "Béarla Meiriceánach"
+ },
+ "bez": {
+ "code": "bez",
+ "name": "Bena"
+ },
+ "brx": {
+ "code": "brx",
+ "name": "Bodo"
+ },
+ "bs": {
+ "code": "bs",
+ "name": "Boisnis"
+ },
+ "cy": {
+ "code": "cy",
+ "name": "Breatnais"
+ },
+ "br": {
+ "code": "br",
+ "name": "Briotáinis"
+ },
+ "bg": {
+ "code": "bg",
+ "name": "Bulgáiris"
+ },
+ "my": {
+ "code": "my",
+ "name": "Burmais"
+ },
+ "ks": {
+ "code": "ks",
+ "name": "Caismíris"
+ },
+ "kn": {
+ "code": "kn",
+ "name": "Cannadais"
+ },
+ "kk": {
+ "code": "kk",
+ "name": "Casaicis"
+ },
+ "ca": {
+ "code": "ca",
+ "name": "Catalóinis"
+ },
+ "tzm": {
+ "code": "tzm",
+ "name": "Central Atlas Tamazight"
+ },
+ "cgg": {
+ "code": "cgg",
+ "name": "Chiga"
+ },
+ "km": {
+ "code": "km",
+ "name": "Ciméiris"
+ },
+ "ki": {
+ "code": "ki",
+ "name": "Ciocúis"
+ },
+ "ky": {
+ "code": "ky",
+ "name": "Cirgisis"
+ },
+ "ko": {
+ "code": "ko",
+ "name": "Cóiréis"
+ },
+ "ksh": {
+ "code": "ksh",
+ "name": "Colognian"
+ },
+ "hr": {
+ "code": "hr",
+ "name": "Cróitis"
+ },
+ "da": {
+ "code": "da",
+ "name": "Danmhairgis"
+ },
+ "he": {
+ "code": "he",
+ "name": "Eabhrais"
+ },
+ "et": {
+ "code": "et",
+ "name": "Eastóinis"
+ },
+ "ebu": {
+ "code": "ebu",
+ "name": "Embu"
+ },
+ "eo": {
+ "code": "eo",
+ "name": "Esperanto"
+ },
+ "ee": {
+ "code": "ee",
+ "name": "Ewe"
+ },
+ "ewo": {
+ "code": "ewo",
+ "name": "Ewondo"
+ },
+ "fo": {
+ "code": "fo",
+ "name": "Faróis"
+ },
+ "fil": {
+ "code": "fil",
+ "name": "Filipínis"
+ },
+ "fi": {
+ "code": "fi",
+ "name": "Fionlainnis"
+ },
+ "fr": {
+ "code": "fr",
+ "name": "Fraincis"
+ },
+ "fr-CA": {
+ "code": "fr-CA",
+ "name": "Fraincis Cheanadach"
+ },
+ "fr-CH": {
+ "code": "fr-CH",
+ "name": "Fraincis Eilvéiseach"
+ },
+ "fy": {
+ "code": "fy",
+ "name": "Freaslainnis Iartharach"
+ },
+ "fur": {
+ "code": "fur",
+ "name": "Friúilis"
+ },
+ "ff": {
+ "code": "ff",
+ "name": "Fuláinis"
+ },
+ "ga": {
+ "code": "ga",
+ "name": "Gaeilge"
+ },
+ "gd": {
+ "code": "gd",
+ "name": "Gaeilge na hAlban"
+ },
+ "gl": {
+ "code": "gl",
+ "name": "Gailísis"
+ },
+ "de": {
+ "code": "de",
+ "name": "Gearmáinis"
+ },
+ "gsw": {
+ "code": "gsw",
+ "name": "Gearmáinis Eilvéiseach"
+ },
+ "de-AT": {
+ "code": "de-AT",
+ "name": "Gearmáinis Ostarach"
+ },
+ "el": {
+ "code": "el",
+ "name": "Gréigis"
+ },
+ "gu": {
+ "code": "gu",
+ "name": "Gúisearáitis"
+ },
+ "guz": {
+ "code": "guz",
+ "name": "Gusii"
+ },
+ "ha": {
+ "code": "ha",
+ "name": "Hásais"
+ },
+ "hi": {
+ "code": "hi",
+ "name": "Hiondúis"
+ },
+ "yo": {
+ "code": "yo",
+ "name": "Iarúibis"
+ },
+ "id": {
+ "code": "id",
+ "name": "Indinéisis"
+ },
+ "it": {
+ "code": "it",
+ "name": "Iodáilis"
+ },
+ "nb": {
+ "code": "nb",
+ "name": "Ioruais Bokmål"
+ },
+ "is": {
+ "code": "is",
+ "name": "Ãoslainnis"
+ },
+ "dyo": {
+ "code": "dyo",
+ "name": "Jola-Fonyi"
+ },
+ "kea": {
+ "code": "kea",
+ "name": "Kabuverdianu"
+ },
+ "kab": {
+ "code": "kab",
+ "name": "Kabyle"
+ },
+ "kl": {
+ "code": "kl",
+ "name": "Kalaallisut"
+ },
+ "kln": {
+ "code": "kln",
+ "name": "Kalenjin"
+ },
+ "kam": {
+ "code": "kam",
+ "name": "Kamba"
+ },
+ "khq": {
+ "code": "khq",
+ "name": "Koyra Chiini"
+ },
+ "ses": {
+ "code": "ses",
+ "name": "Koyraboro Senni"
+ },
+ "nmg": {
+ "code": "nmg",
+ "name": "Kwasio"
+ },
+ "lv": {
+ "code": "lv",
+ "name": "Laitvis"
+ },
+ "lag": {
+ "code": "lag",
+ "name": "Langi"
+ },
+ "lo": {
+ "code": "lo",
+ "name": "Laoisis"
+ },
+ "ln": {
+ "code": "ln",
+ "name": "Liongáilis"
+ },
+ "lt": {
+ "code": "lt",
+ "name": "Liotuáinis"
+ },
+ "lu": {
+ "code": "lu",
+ "name": "Lúba-Cataingis"
+ },
+ "lb": {
+ "code": "lb",
+ "name": "Lucsambuirgis"
+ },
+ "lg": {
+ "code": "lg",
+ "name": "Lugandais"
+ },
+ "luo": {
+ "code": "luo",
+ "name": "Luo"
+ },
+ "luy": {
+ "code": "luy",
+ "name": "Luyia"
+ },
+ "mk": {
+ "code": "mk",
+ "name": "Macadóinis"
+ },
+ "jmc": {
+ "code": "jmc",
+ "name": "Machame"
+ },
+ "ml": {
+ "code": "ml",
+ "name": "Mailéalaimis"
+ },
+ "mgh": {
+ "code": "mgh",
+ "name": "Makhuwa-Meetto"
+ },
+ "kde": {
+ "code": "kde",
+ "name": "Makonde"
+ },
+ "ms": {
+ "code": "ms",
+ "name": "Malaeis"
+ },
+ "mg": {
+ "code": "mg",
+ "name": "Malagáisis"
+ },
+ "mt": {
+ "code": "mt",
+ "name": "Máltais"
+ },
+ "mr": {
+ "code": "mr",
+ "name": "Maraitis"
+ },
+ "mas": {
+ "code": "mas",
+ "name": "Masai"
+ },
+ "mer": {
+ "code": "mer",
+ "name": "Meru"
+ },
+ "ro-MD": {
+ "code": "ro-MD",
+ "name": "Moldáivis"
+ },
+ "mn": {
+ "code": "mn",
+ "name": "Mongóilis"
+ },
+ "mfe": {
+ "code": "mfe",
+ "name": "Morisyen"
+ },
+ "mua": {
+ "code": "mua",
+ "name": "Mundang"
+ },
+ "naq": {
+ "code": "naq",
+ "name": "Nama"
+ },
+ "nd": {
+ "code": "nd",
+ "name": "Ndeibéilis an Tuaiscirt"
+ },
+ "ne": {
+ "code": "ne",
+ "name": "Neipeailis"
+ },
+ "jgo": {
+ "code": "jgo",
+ "name": "Ngomba"
+ },
+ "nn": {
+ "code": "nn",
+ "name": "Nua-Ioruais"
+ },
+ "nus": {
+ "code": "nus",
+ "name": "Nuer"
+ },
+ "nyn": {
+ "code": "nyn",
+ "name": "Nyankole"
+ },
+ "or": {
+ "code": "or",
+ "name": "Oirísis"
+ },
+ "nl": {
+ "code": "nl",
+ "name": "Ollainnis"
+ },
+ "ps": {
+ "code": "ps",
+ "name": "Paistis"
+ },
+ "fa": {
+ "code": "fa",
+ "name": "Peirsis"
+ },
+ "nl-BE": {
+ "code": "nl-BE",
+ "name": "Pléimeannais"
+ },
+ "pl": {
+ "code": "pl",
+ "name": "Polainnis"
+ },
+ "pt": {
+ "code": "pt",
+ "name": "Portaingéilis"
+ },
+ "pt-PT": {
+ "code": "pt-PT",
+ "name": "Portaingéilis Ibéarach"
+ },
+ "pt-BR": {
+ "code": "pt-BR",
+ "name": "Portaingéilis na Brasaíle"
+ },
+ "pa": {
+ "code": "pa",
+ "name": "Puinseáibis"
+ },
+ "rm": {
+ "code": "rm",
+ "name": "Rómainis"
+ },
+ "ro": {
+ "code": "ro",
+ "name": "Rómáinis"
+ },
+ "rof": {
+ "code": "rof",
+ "name": "Rombo"
+ },
+ "rn": {
+ "code": "rn",
+ "name": "Rúindis"
+ },
+ "ru": {
+ "code": "ru",
+ "name": "Rúisis"
+ },
+ "rwk": {
+ "code": "rwk",
+ "name": "Rwa"
+ },
+ "se": {
+ "code": "se",
+ "name": "Sáimis Thuaidh"
+ },
+ "saq": {
+ "code": "saq",
+ "name": "Samburu"
+ },
+ "sg": {
+ "code": "sg",
+ "name": "Sangóis"
+ },
+ "sbp": {
+ "code": "sbp",
+ "name": "Sangu"
+ },
+ "ja": {
+ "code": "ja",
+ "name": "Seapáinis"
+ },
+ "cs": {
+ "code": "cs",
+ "name": "Seicis"
+ },
+ "sr": {
+ "code": "sr",
+ "name": "Seirbis"
+ },
+ "chr": {
+ "code": "chr",
+ "name": "Seiricis"
+ },
+ "seh": {
+ "code": "seh",
+ "name": "Sena"
+ },
+ "dz": {
+ "code": "dz",
+ "name": "Seoinicis"
+ },
+ "sn": {
+ "code": "sn",
+ "name": "Seoinis"
+ },
+ "ka": {
+ "code": "ka",
+ "name": "Seoirsis"
+ },
+ "ksb": {
+ "code": "ksb",
+ "name": "Shambala"
+ },
+ "zh": {
+ "code": "zh",
+ "name": "Sínis"
+ },
+ "zh-Hans": {
+ "code": "zh-Hans",
+ "name": "Sínis Shimplithe"
+ },
+ "zh-Hant": {
+ "code": "zh-Hant",
+ "name": "Sínis Thraidisiúnta"
+ },
+ "si": {
+ "code": "si",
+ "name": "Siolóinis"
+ },
+ "sl": {
+ "code": "sl",
+ "name": "Slóivéinis"
+ },
+ "sk": {
+ "code": "sk",
+ "name": "Slóvaicis"
+ },
+ "xog": {
+ "code": "xog",
+ "name": "Soga"
+ },
+ "so": {
+ "code": "so",
+ "name": "Somáilis"
+ },
+ "dsb": {
+ "code": "dsb",
+ "name": "Sorbais Ãochtarach"
+ },
+ "hsb": {
+ "code": "hsb",
+ "name": "Sorbais Uachtarach"
+ },
+ "es": {
+ "code": "es",
+ "name": "Spáinnis"
+ },
+ "es-ES": {
+ "code": "es-ES",
+ "name": "Spáinnis Eorpach"
+ },
+ "es-MX": {
+ "code": "es-MX",
+ "name": "Spáinnis Mheicsiceach"
+ },
+ "zgh": {
+ "code": "zgh",
+ "name": "Standard Moroccan Tamazight"
+ },
+ "sv": {
+ "code": "sv",
+ "name": "Sualainnis"
+ },
+ "zu": {
+ "code": "zu",
+ "name": "Súlúis"
+ },
+ "sw": {
+ "code": "sw",
+ "name": "Svahaílis"
+ },
+ "swc": {
+ "code": "swc",
+ "name": "Svahaílis an Chongó"
+ },
+ "shi": {
+ "code": "shi",
+ "name": "Tachelhit"
+ },
+ "dav": {
+ "code": "dav",
+ "name": "Taita"
+ },
+ "ta": {
+ "code": "ta",
+ "name": "Tamailis"
+ },
+ "twq": {
+ "code": "twq",
+ "name": "Tasawaq"
+ },
+ "th": {
+ "code": "th",
+ "name": "Téalainnis"
+ },
+ "te": {
+ "code": "te",
+ "name": "Teileagúis"
+ },
+ "teo": {
+ "code": "teo",
+ "name": "Teso"
+ },
+ "bo": {
+ "code": "bo",
+ "name": "Tibéidis"
+ },
+ "ti": {
+ "code": "ti",
+ "name": "Tigrinis"
+ },
+ "to": {
+ "code": "to",
+ "name": "Tongais"
+ },
+ "tr": {
+ "code": "tr",
+ "name": "Tuircis"
+ },
+ "uk": {
+ "code": "uk",
+ "name": "Úcráinis"
+ },
+ "ug": {
+ "code": "ug",
+ "name": "Uigiúiris"
+ },
+ "uz": {
+ "code": "uz",
+ "name": "Úisbéiceastáinis"
+ },
+ "hu": {
+ "code": "hu",
+ "name": "Ungáiris"
+ },
+ "ur": {
+ "code": "ur",
+ "name": "Urdúis"
+ },
+ "vai": {
+ "code": "vai",
+ "name": "Vai"
+ },
+ "vi": {
+ "code": "vi",
+ "name": "Vítneaimis"
+ },
+ "vun": {
+ "code": "vun",
+ "name": "Vunjo"
+ },
+ "wae": {
+ "code": "wae",
+ "name": "Walser"
+ },
+ "yav": {
+ "code": "yav",
+ "name": "Yangben"
+ },
+ "dje": {
+ "code": "dje",
+ "name": "Zarmais"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/language/gd.json b/library/intl/resources/language/gd.json
new file mode 100644
index 000000000..e774f2691
--- /dev/null
+++ b/library/intl/resources/language/gd.json
@@ -0,0 +1,738 @@
+{
+ "af": {
+ "code": "af",
+ "name": "Afraganais"
+ },
+ "agq": {
+ "code": "agq",
+ "name": "Aghem"
+ },
+ "hy": {
+ "code": "hy",
+ "name": "Airmeinis"
+ },
+ "ak": {
+ "code": "ak",
+ "name": "Akan"
+ },
+ "sq": {
+ "code": "sq",
+ "name": "Albàinis"
+ },
+ "am": {
+ "code": "am",
+ "name": "Amtharais"
+ },
+ "ar": {
+ "code": "ar",
+ "name": "Arabais"
+ },
+ "de-CH": {
+ "code": "de-CH",
+ "name": "Àrd-Ghearmailtis na h-Eilbheise"
+ },
+ "az": {
+ "code": "az",
+ "name": "Asarbaideànais"
+ },
+ "ast": {
+ "code": "ast",
+ "name": "Astùrais"
+ },
+ "asa": {
+ "code": "asa",
+ "name": "Asu"
+ },
+ "ksf": {
+ "code": "ksf",
+ "name": "Bafia"
+ },
+ "bm": {
+ "code": "bm",
+ "name": "Bambara"
+ },
+ "bas": {
+ "code": "bas",
+ "name": "Basaa"
+ },
+ "eu": {
+ "code": "eu",
+ "name": "Basgais"
+ },
+ "be": {
+ "code": "be",
+ "name": "Bealaruisis"
+ },
+ "bn": {
+ "code": "bn",
+ "name": "Beangailis"
+ },
+ "bez": {
+ "code": "bez",
+ "name": "Bena"
+ },
+ "en": {
+ "code": "en",
+ "name": "Beurla"
+ },
+ "en-AU": {
+ "code": "en-AU",
+ "name": "Beurla Astràilia"
+ },
+ "en-GB": {
+ "code": "en-GB",
+ "name": "Beurla Bhreatainn"
+ },
+ "en-CA": {
+ "code": "en-CA",
+ "name": "Beurla Chanada"
+ },
+ "en-US": {
+ "code": "en-US",
+ "name": "Beurla na h-Aimeireaga"
+ },
+ "vi": {
+ "code": "vi",
+ "name": "Bhiet-Namais"
+ },
+ "brx": {
+ "code": "brx",
+ "name": "Bodo"
+ },
+ "nb": {
+ "code": "nb",
+ "name": "Bokmål na Nirribhidh"
+ },
+ "bs": {
+ "code": "bs",
+ "name": "Bosnais"
+ },
+ "br": {
+ "code": "br",
+ "name": "Breatnais"
+ },
+ "bg": {
+ "code": "bg",
+ "name": "Bulgarais"
+ },
+ "my": {
+ "code": "my",
+ "name": "Burmais"
+ },
+ "ka": {
+ "code": "ka",
+ "name": "Cairtbheilis"
+ },
+ "ks": {
+ "code": "ks",
+ "name": "Caismiris"
+ },
+ "kk": {
+ "code": "kk",
+ "name": "Casachais"
+ },
+ "ca": {
+ "code": "ca",
+ "name": "Catalanais"
+ },
+ "chr": {
+ "code": "chr",
+ "name": "Cherokee"
+ },
+ "cgg": {
+ "code": "cgg",
+ "name": "Chiga"
+ },
+ "ky": {
+ "code": "ky",
+ "name": "Cìorgasais"
+ },
+ "km": {
+ "code": "km",
+ "name": "Cmèar"
+ },
+ "ko": {
+ "code": "ko",
+ "name": "Coirèanais"
+ },
+ "ksh": {
+ "code": "ksh",
+ "name": "Colognian"
+ },
+ "hr": {
+ "code": "hr",
+ "name": "Cròthaisis"
+ },
+ "cy": {
+ "code": "cy",
+ "name": "Cuimris"
+ },
+ "da": {
+ "code": "da",
+ "name": "Danmhairgis"
+ },
+ "nl": {
+ "code": "nl",
+ "name": "Duitsis"
+ },
+ "dz": {
+ "code": "dz",
+ "name": "Dzongkha"
+ },
+ "he": {
+ "code": "he",
+ "name": "Eabhra"
+ },
+ "it": {
+ "code": "it",
+ "name": "Eadailtis"
+ },
+ "et": {
+ "code": "et",
+ "name": "Eastoinis"
+ },
+ "ebu": {
+ "code": "ebu",
+ "name": "Embu"
+ },
+ "eo": {
+ "code": "eo",
+ "name": "Esperanto"
+ },
+ "ee": {
+ "code": "ee",
+ "name": "Ewe"
+ },
+ "ewo": {
+ "code": "ewo",
+ "name": "Ewondo"
+ },
+ "fo": {
+ "code": "fo",
+ "name": "Fàrothais"
+ },
+ "fa": {
+ "code": "fa",
+ "name": "Farsaidh"
+ },
+ "fil": {
+ "code": "fil",
+ "name": "Filipinis"
+ },
+ "fi": {
+ "code": "fi",
+ "name": "Fionnlannais"
+ },
+ "nl-BE": {
+ "code": "nl-BE",
+ "name": "Flannrais"
+ },
+ "fr": {
+ "code": "fr",
+ "name": "Fraingis"
+ },
+ "fr-CA": {
+ "code": "fr-CA",
+ "name": "Fraingis Chanada"
+ },
+ "fr-CH": {
+ "code": "fr-CH",
+ "name": "Fraingis Eilbheiseach"
+ },
+ "fy": {
+ "code": "fy",
+ "name": "Frìoslannais Siarach"
+ },
+ "fur": {
+ "code": "fur",
+ "name": "Friùilis"
+ },
+ "ff": {
+ "code": "ff",
+ "name": "Fulah"
+ },
+ "ga": {
+ "code": "ga",
+ "name": "Gaeilge"
+ },
+ "gd": {
+ "code": "gd",
+ "name": "Gàidhlig"
+ },
+ "gl": {
+ "code": "gl",
+ "name": "Gailìsis"
+ },
+ "lg": {
+ "code": "lg",
+ "name": "Ganda"
+ },
+ "de": {
+ "code": "de",
+ "name": "Gearmailtis"
+ },
+ "gsw": {
+ "code": "gsw",
+ "name": "Gearmailtis Eilbheiseach"
+ },
+ "de-AT": {
+ "code": "de-AT",
+ "name": "Gearmailtis na h-Ostaire"
+ },
+ "el": {
+ "code": "el",
+ "name": "Greugais"
+ },
+ "gu": {
+ "code": "gu",
+ "name": "Gujarati"
+ },
+ "guz": {
+ "code": "guz",
+ "name": "Gusii"
+ },
+ "ha": {
+ "code": "ha",
+ "name": "Hausa"
+ },
+ "hi": {
+ "code": "hi",
+ "name": "Hindis"
+ },
+ "id": {
+ "code": "id",
+ "name": "Innd-Innsis"
+ },
+ "is": {
+ "code": "is",
+ "name": "Innis Tìlis"
+ },
+ "yo": {
+ "code": "yo",
+ "name": "Ioruba"
+ },
+ "dyo": {
+ "code": "dyo",
+ "name": "Jola-Fonyi"
+ },
+ "kea": {
+ "code": "kea",
+ "name": "Kabuverdianu"
+ },
+ "kab": {
+ "code": "kab",
+ "name": "Kabyle"
+ },
+ "kl": {
+ "code": "kl",
+ "name": "Kalaallisut"
+ },
+ "kln": {
+ "code": "kln",
+ "name": "Kalenjin"
+ },
+ "kam": {
+ "code": "kam",
+ "name": "Kamba"
+ },
+ "kn": {
+ "code": "kn",
+ "name": "Kannada"
+ },
+ "ki": {
+ "code": "ki",
+ "name": "Kikuyu"
+ },
+ "rn": {
+ "code": "rn",
+ "name": "Kirundi"
+ },
+ "sw": {
+ "code": "sw",
+ "name": "Kiswahili"
+ },
+ "swc": {
+ "code": "swc",
+ "name": "Kiswahili na Congo"
+ },
+ "khq": {
+ "code": "khq",
+ "name": "Koyra Chiini"
+ },
+ "ses": {
+ "code": "ses",
+ "name": "Koyraboro Senni"
+ },
+ "nmg": {
+ "code": "nmg",
+ "name": "Kwasio"
+ },
+ "lv": {
+ "code": "lv",
+ "name": "Laitbheis"
+ },
+ "lag": {
+ "code": "lag",
+ "name": "Langi"
+ },
+ "lo": {
+ "code": "lo",
+ "name": "Làtho"
+ },
+ "ln": {
+ "code": "ln",
+ "name": "Lingala"
+ },
+ "lt": {
+ "code": "lt",
+ "name": "Liotuainis"
+ },
+ "lu": {
+ "code": "lu",
+ "name": "Luba-Katanga"
+ },
+ "lb": {
+ "code": "lb",
+ "name": "Lugsamburgais"
+ },
+ "luo": {
+ "code": "luo",
+ "name": "Luo"
+ },
+ "luy": {
+ "code": "luy",
+ "name": "Luyia"
+ },
+ "mas": {
+ "code": "mas",
+ "name": "Maasai"
+ },
+ "jmc": {
+ "code": "jmc",
+ "name": "Machame"
+ },
+ "mgh": {
+ "code": "mgh",
+ "name": "Makhuwa-Meetto"
+ },
+ "kde": {
+ "code": "kde",
+ "name": "Makonde"
+ },
+ "mg": {
+ "code": "mg",
+ "name": "Malagasais"
+ },
+ "ms": {
+ "code": "ms",
+ "name": "Malaidhis"
+ },
+ "ml": {
+ "code": "ml",
+ "name": "Malayalam"
+ },
+ "mt": {
+ "code": "mt",
+ "name": "Maltais"
+ },
+ "mr": {
+ "code": "mr",
+ "name": "Marathi"
+ },
+ "mk": {
+ "code": "mk",
+ "name": "Masadonais"
+ },
+ "mer": {
+ "code": "mer",
+ "name": "Meru"
+ },
+ "ro-MD": {
+ "code": "ro-MD",
+ "name": "Moldobhais"
+ },
+ "mn": {
+ "code": "mn",
+ "name": "Mongolais"
+ },
+ "mfe": {
+ "code": "mfe",
+ "name": "Morisyen"
+ },
+ "mua": {
+ "code": "mua",
+ "name": "Mundang"
+ },
+ "naq": {
+ "code": "naq",
+ "name": "Nama"
+ },
+ "nd": {
+ "code": "nd",
+ "name": "Ndebele Thuathach"
+ },
+ "ne": {
+ "code": "ne",
+ "name": "Neapàilis"
+ },
+ "jgo": {
+ "code": "jgo",
+ "name": "Ngomba"
+ },
+ "ar-001": {
+ "code": "ar-001",
+ "name": "Nuadh-Arabais Stannardach"
+ },
+ "nus": {
+ "code": "nus",
+ "name": "Nuer"
+ },
+ "nyn": {
+ "code": "nyn",
+ "name": "Nyankole"
+ },
+ "nn": {
+ "code": "nn",
+ "name": "Nynorsk na Nirribhidh"
+ },
+ "or": {
+ "code": "or",
+ "name": "Oriya"
+ },
+ "ps": {
+ "code": "ps",
+ "name": "Pachtu"
+ },
+ "pa": {
+ "code": "pa",
+ "name": "Panjabi"
+ },
+ "pl": {
+ "code": "pl",
+ "name": "Pòlainnis"
+ },
+ "pt": {
+ "code": "pt",
+ "name": "Portagailis"
+ },
+ "pt-BR": {
+ "code": "pt-BR",
+ "name": "Portagailis Bhraisileach"
+ },
+ "pt-PT": {
+ "code": "pt-PT",
+ "name": "Portagailis Eòrpach"
+ },
+ "ro": {
+ "code": "ro",
+ "name": "Romàinis"
+ },
+ "rof": {
+ "code": "rof",
+ "name": "Rombo"
+ },
+ "ru": {
+ "code": "ru",
+ "name": "Ruisis"
+ },
+ "rm": {
+ "code": "rm",
+ "name": "Rumains"
+ },
+ "rwk": {
+ "code": "rwk",
+ "name": "Rwa"
+ },
+ "se": {
+ "code": "se",
+ "name": "Sàmais Thuathach"
+ },
+ "saq": {
+ "code": "saq",
+ "name": "Samburu"
+ },
+ "sg": {
+ "code": "sg",
+ "name": "Sango"
+ },
+ "sbp": {
+ "code": "sbp",
+ "name": "Sangu"
+ },
+ "cs": {
+ "code": "cs",
+ "name": "Seacais"
+ },
+ "ja": {
+ "code": "ja",
+ "name": "Seapanais"
+ },
+ "sr": {
+ "code": "sr",
+ "name": "Sèirbis"
+ },
+ "seh": {
+ "code": "seh",
+ "name": "Sena"
+ },
+ "ksb": {
+ "code": "ksb",
+ "name": "Shambala"
+ },
+ "sn": {
+ "code": "sn",
+ "name": "Shona"
+ },
+ "si": {
+ "code": "si",
+ "name": "Sinhala"
+ },
+ "zh": {
+ "code": "zh",
+ "name": "Sìnis"
+ },
+ "zh-Hans": {
+ "code": "zh-Hans",
+ "name": "Sìnis Shimplichte"
+ },
+ "zh-Hant": {
+ "code": "zh-Hant",
+ "name": "Sìnis Thradaiseanta"
+ },
+ "sk": {
+ "code": "sk",
+ "name": "Slòbhacais"
+ },
+ "sl": {
+ "code": "sl",
+ "name": "Slòbhainis"
+ },
+ "xog": {
+ "code": "xog",
+ "name": "Soga"
+ },
+ "so": {
+ "code": "so",
+ "name": "Somàilis"
+ },
+ "dsb": {
+ "code": "dsb",
+ "name": "Sòrbais Ìochdarach"
+ },
+ "hsb": {
+ "code": "hsb",
+ "name": "Sòrbais Uachdarach"
+ },
+ "es": {
+ "code": "es",
+ "name": "Spàinntis"
+ },
+ "es-ES": {
+ "code": "es-ES",
+ "name": "Spàinntis Eòrpach"
+ },
+ "es-MX": {
+ "code": "es-MX",
+ "name": "Spàinntis Mheagsagach"
+ },
+ "sv": {
+ "code": "sv",
+ "name": "Suainis"
+ },
+ "shi": {
+ "code": "shi",
+ "name": "Tachelhit"
+ },
+ "th": {
+ "code": "th",
+ "name": "Tàidh"
+ },
+ "ta": {
+ "code": "ta",
+ "name": "Taimilis"
+ },
+ "dav": {
+ "code": "dav",
+ "name": "Taita"
+ },
+ "tzm": {
+ "code": "tzm",
+ "name": "Tamazight Meadhan na h-Atlas"
+ },
+ "zgh": {
+ "code": "zgh",
+ "name": "Tamazight Stannardach Moroco"
+ },
+ "twq": {
+ "code": "twq",
+ "name": "Tasawaq"
+ },
+ "te": {
+ "code": "te",
+ "name": "Telugu"
+ },
+ "teo": {
+ "code": "teo",
+ "name": "Teso"
+ },
+ "bo": {
+ "code": "bo",
+ "name": "Tibeitis"
+ },
+ "ti": {
+ "code": "ti",
+ "name": "Tigrinya"
+ },
+ "to": {
+ "code": "to",
+ "name": "Tongais"
+ },
+ "tr": {
+ "code": "tr",
+ "name": "Turcais"
+ },
+ "uk": {
+ "code": "uk",
+ "name": "Ucràinis"
+ },
+ "ug": {
+ "code": "ug",
+ "name": "Ùigiurais"
+ },
+ "hu": {
+ "code": "hu",
+ "name": "Ungairis"
+ },
+ "ur": {
+ "code": "ur",
+ "name": "Ùrdu"
+ },
+ "uz": {
+ "code": "uz",
+ "name": "Usbagais"
+ },
+ "vai": {
+ "code": "vai",
+ "name": "Vai"
+ },
+ "vun": {
+ "code": "vun",
+ "name": "Vunjo"
+ },
+ "wae": {
+ "code": "wae",
+ "name": "Walser"
+ },
+ "yav": {
+ "code": "yav",
+ "name": "Yangben"
+ },
+ "dje": {
+ "code": "dje",
+ "name": "Zarma"
+ },
+ "zu": {
+ "code": "zu",
+ "name": "Zulu"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/language/gl.json b/library/intl/resources/language/gl.json
new file mode 100644
index 000000000..53405511a
--- /dev/null
+++ b/library/intl/resources/language/gl.json
@@ -0,0 +1,738 @@
+{
+ "az": {
+ "code": "az",
+ "name": "acerbaixano"
+ },
+ "af": {
+ "code": "af",
+ "name": "afrikaans"
+ },
+ "agq": {
+ "code": "agq",
+ "name": "aghem"
+ },
+ "ak": {
+ "code": "ak",
+ "name": "akán"
+ },
+ "sq": {
+ "code": "sq",
+ "name": "albanés"
+ },
+ "de": {
+ "code": "de",
+ "name": "alemán"
+ },
+ "de-AT": {
+ "code": "de-AT",
+ "name": "alemán de austria"
+ },
+ "gsw": {
+ "code": "gsw",
+ "name": "alemán suízo"
+ },
+ "de-CH": {
+ "code": "de-CH",
+ "name": "alto alemán suízo"
+ },
+ "hsb": {
+ "code": "hsb",
+ "name": "alto sorabio"
+ },
+ "am": {
+ "code": "am",
+ "name": "amárico"
+ },
+ "ar": {
+ "code": "ar",
+ "name": "árabe"
+ },
+ "ar-001": {
+ "code": "ar-001",
+ "name": "árabe estándar moderno"
+ },
+ "hy": {
+ "code": "hy",
+ "name": "armenio"
+ },
+ "ast": {
+ "code": "ast",
+ "name": "asturiano"
+ },
+ "asa": {
+ "code": "asa",
+ "name": "asu"
+ },
+ "ksf": {
+ "code": "ksf",
+ "name": "bafia"
+ },
+ "dsb": {
+ "code": "dsb",
+ "name": "baixo sorabio"
+ },
+ "bm": {
+ "code": "bm",
+ "name": "bambara"
+ },
+ "bas": {
+ "code": "bas",
+ "name": "Basaa"
+ },
+ "bez": {
+ "code": "bez",
+ "name": "bena"
+ },
+ "bn": {
+ "code": "bn",
+ "name": "bengalí"
+ },
+ "be": {
+ "code": "be",
+ "name": "bielorruso"
+ },
+ "my": {
+ "code": "my",
+ "name": "birmano"
+ },
+ "brx": {
+ "code": "brx",
+ "name": "bodo"
+ },
+ "bs": {
+ "code": "bs",
+ "name": "bosnio"
+ },
+ "br": {
+ "code": "br",
+ "name": "bretón"
+ },
+ "bg": {
+ "code": "bg",
+ "name": "búlgaro"
+ },
+ "kea": {
+ "code": "kea",
+ "name": "caboverdiano"
+ },
+ "ks": {
+ "code": "ks",
+ "name": "cachemir"
+ },
+ "km": {
+ "code": "km",
+ "name": "cambodiano"
+ },
+ "kk": {
+ "code": "kk",
+ "name": "casaco"
+ },
+ "es-ES": {
+ "code": "es-ES",
+ "name": "castelán"
+ },
+ "ca": {
+ "code": "ca",
+ "name": "catalán"
+ },
+ "cs": {
+ "code": "cs",
+ "name": "checo"
+ },
+ "chr": {
+ "code": "chr",
+ "name": "cheroqui"
+ },
+ "zh": {
+ "code": "zh",
+ "name": "chinés"
+ },
+ "zh-Hans": {
+ "code": "zh-Hans",
+ "name": "chinés simplificado"
+ },
+ "zh-Hant": {
+ "code": "zh-Hant",
+ "name": "chinés tradicional"
+ },
+ "si": {
+ "code": "si",
+ "name": "cingalés"
+ },
+ "ksh": {
+ "code": "ksh",
+ "name": "Colognian"
+ },
+ "ko": {
+ "code": "ko",
+ "name": "coreano"
+ },
+ "mfe": {
+ "code": "mfe",
+ "name": "crioulo mauritano"
+ },
+ "hr": {
+ "code": "hr",
+ "name": "croata"
+ },
+ "da": {
+ "code": "da",
+ "name": "dinamarqués"
+ },
+ "dz": {
+ "code": "dz",
+ "name": "dzongkha"
+ },
+ "ebu": {
+ "code": "ebu",
+ "name": "embu"
+ },
+ "sk": {
+ "code": "sk",
+ "name": "eslovaco"
+ },
+ "sl": {
+ "code": "sl",
+ "name": "esloveno"
+ },
+ "es": {
+ "code": "es",
+ "name": "español"
+ },
+ "es-MX": {
+ "code": "es-MX",
+ "name": "español de México"
+ },
+ "eo": {
+ "code": "eo",
+ "name": "esperanto"
+ },
+ "et": {
+ "code": "et",
+ "name": "estoniano"
+ },
+ "eu": {
+ "code": "eu",
+ "name": "éuscaro"
+ },
+ "ee": {
+ "code": "ee",
+ "name": "ewé"
+ },
+ "ewo": {
+ "code": "ewo",
+ "name": "Ewondo"
+ },
+ "fo": {
+ "code": "fo",
+ "name": "faroés"
+ },
+ "fil": {
+ "code": "fil",
+ "name": "filipino"
+ },
+ "fi": {
+ "code": "fi",
+ "name": "finés"
+ },
+ "nl-BE": {
+ "code": "nl-BE",
+ "name": "flamenco"
+ },
+ "fr": {
+ "code": "fr",
+ "name": "francés"
+ },
+ "fr-CA": {
+ "code": "fr-CA",
+ "name": "francés canadiano"
+ },
+ "fr-CH": {
+ "code": "fr-CH",
+ "name": "francés suízo"
+ },
+ "fy": {
+ "code": "fy",
+ "name": "frisón"
+ },
+ "fur": {
+ "code": "fur",
+ "name": "Friulian"
+ },
+ "ff": {
+ "code": "ff",
+ "name": "Fulah"
+ },
+ "gd": {
+ "code": "gd",
+ "name": "gaélico escocés"
+ },
+ "gl": {
+ "code": "gl",
+ "name": "galego"
+ },
+ "cy": {
+ "code": "cy",
+ "name": "galés"
+ },
+ "lg": {
+ "code": "lg",
+ "name": "ganda"
+ },
+ "el": {
+ "code": "el",
+ "name": "grego"
+ },
+ "kl": {
+ "code": "kl",
+ "name": "groenlandés"
+ },
+ "guz": {
+ "code": "guz",
+ "name": "gusii"
+ },
+ "gu": {
+ "code": "gu",
+ "name": "guxaratiano"
+ },
+ "ha": {
+ "code": "ha",
+ "name": "hausa"
+ },
+ "he": {
+ "code": "he",
+ "name": "hebreo"
+ },
+ "hi": {
+ "code": "hi",
+ "name": "hindi"
+ },
+ "nl": {
+ "code": "nl",
+ "name": "holandés"
+ },
+ "hu": {
+ "code": "hu",
+ "name": "húngaro"
+ },
+ "id": {
+ "code": "id",
+ "name": "indonesio"
+ },
+ "en": {
+ "code": "en",
+ "name": "inglés"
+ },
+ "en-AU": {
+ "code": "en-AU",
+ "name": "inglés australiano"
+ },
+ "en-GB": {
+ "code": "en-GB",
+ "name": "inglés británico"
+ },
+ "en-CA": {
+ "code": "en-CA",
+ "name": "inglés canadiano"
+ },
+ "en-US": {
+ "code": "en-US",
+ "name": "inglés dos Estados Unidos"
+ },
+ "yo": {
+ "code": "yo",
+ "name": "ioruba"
+ },
+ "ga": {
+ "code": "ga",
+ "name": "irlandés"
+ },
+ "is": {
+ "code": "is",
+ "name": "islandés"
+ },
+ "it": {
+ "code": "it",
+ "name": "italiano"
+ },
+ "dyo": {
+ "code": "dyo",
+ "name": "jola-fonyi"
+ },
+ "kab": {
+ "code": "kab",
+ "name": "kabile"
+ },
+ "kln": {
+ "code": "kln",
+ "name": "kalenjin"
+ },
+ "kam": {
+ "code": "kam",
+ "name": "kamba"
+ },
+ "kn": {
+ "code": "kn",
+ "name": "kannada"
+ },
+ "cgg": {
+ "code": "cgg",
+ "name": "kiga"
+ },
+ "ki": {
+ "code": "ki",
+ "name": "kikuyu"
+ },
+ "khq": {
+ "code": "khq",
+ "name": "koyra chiini"
+ },
+ "ses": {
+ "code": "ses",
+ "name": "koyraboro senni"
+ },
+ "nmg": {
+ "code": "nmg",
+ "name": "kwasio"
+ },
+ "lag": {
+ "code": "lag",
+ "name": "langi"
+ },
+ "lo": {
+ "code": "lo",
+ "name": "laotiano"
+ },
+ "lv": {
+ "code": "lv",
+ "name": "letón"
+ },
+ "ln": {
+ "code": "ln",
+ "name": "lingala"
+ },
+ "lt": {
+ "code": "lt",
+ "name": "lituano"
+ },
+ "lu": {
+ "code": "lu",
+ "name": "luba-katanga"
+ },
+ "luo": {
+ "code": "luo",
+ "name": "Luo"
+ },
+ "lb": {
+ "code": "lb",
+ "name": "luxemburgués"
+ },
+ "luy": {
+ "code": "luy",
+ "name": "luyia"
+ },
+ "mk": {
+ "code": "mk",
+ "name": "macedonio"
+ },
+ "jmc": {
+ "code": "jmc",
+ "name": "machame"
+ },
+ "mgh": {
+ "code": "mgh",
+ "name": "makhuwa-meetto"
+ },
+ "kde": {
+ "code": "kde",
+ "name": "makonde"
+ },
+ "ml": {
+ "code": "ml",
+ "name": "malabar"
+ },
+ "ms": {
+ "code": "ms",
+ "name": "malaio"
+ },
+ "mg": {
+ "code": "mg",
+ "name": "malgaxe"
+ },
+ "mt": {
+ "code": "mt",
+ "name": "maltés"
+ },
+ "mr": {
+ "code": "mr",
+ "name": "marathi"
+ },
+ "mas": {
+ "code": "mas",
+ "name": "masai"
+ },
+ "mer": {
+ "code": "mer",
+ "name": "meru"
+ },
+ "mn": {
+ "code": "mn",
+ "name": "mongol"
+ },
+ "mua": {
+ "code": "mua",
+ "name": "mundang"
+ },
+ "naq": {
+ "code": "naq",
+ "name": "nama"
+ },
+ "nd": {
+ "code": "nd",
+ "name": "ndebele do norte"
+ },
+ "ne": {
+ "code": "ne",
+ "name": "nepalí"
+ },
+ "jgo": {
+ "code": "jgo",
+ "name": "ngomba"
+ },
+ "nb": {
+ "code": "nb",
+ "name": "noruegués bokmal"
+ },
+ "nn": {
+ "code": "nn",
+ "name": "noruegués nynorsk"
+ },
+ "nus": {
+ "code": "nus",
+ "name": "nuer"
+ },
+ "nyn": {
+ "code": "nyn",
+ "name": "nyankole"
+ },
+ "or": {
+ "code": "or",
+ "name": "oriya"
+ },
+ "ps": {
+ "code": "ps",
+ "name": "paxtún"
+ },
+ "fa": {
+ "code": "fa",
+ "name": "persa"
+ },
+ "pl": {
+ "code": "pl",
+ "name": "polaco"
+ },
+ "pt": {
+ "code": "pt",
+ "name": "portugués"
+ },
+ "pt-BR": {
+ "code": "pt-BR",
+ "name": "portugués brasileiro"
+ },
+ "pt-PT": {
+ "code": "pt-PT",
+ "name": "portugués europeo"
+ },
+ "pa": {
+ "code": "pa",
+ "name": "punjabi"
+ },
+ "ky": {
+ "code": "ky",
+ "name": "quirguiz"
+ },
+ "rm": {
+ "code": "rm",
+ "name": "romanche"
+ },
+ "ro": {
+ "code": "ro",
+ "name": "romanés"
+ },
+ "ro-MD": {
+ "code": "ro-MD",
+ "name": "romanés moldavo"
+ },
+ "rof": {
+ "code": "rof",
+ "name": "rombo"
+ },
+ "rn": {
+ "code": "rn",
+ "name": "rundi"
+ },
+ "ru": {
+ "code": "ru",
+ "name": "ruso"
+ },
+ "rwk": {
+ "code": "rwk",
+ "name": "rwa"
+ },
+ "saq": {
+ "code": "saq",
+ "name": "samburu"
+ },
+ "se": {
+ "code": "se",
+ "name": "sami do norte"
+ },
+ "sg": {
+ "code": "sg",
+ "name": "sango"
+ },
+ "sbp": {
+ "code": "sbp",
+ "name": "sangu"
+ },
+ "seh": {
+ "code": "seh",
+ "name": "sena"
+ },
+ "sr": {
+ "code": "sr",
+ "name": "serbio"
+ },
+ "ksb": {
+ "code": "ksb",
+ "name": "shambala"
+ },
+ "sn": {
+ "code": "sn",
+ "name": "shona"
+ },
+ "xog": {
+ "code": "xog",
+ "name": "soga"
+ },
+ "so": {
+ "code": "so",
+ "name": "somalí"
+ },
+ "swc": {
+ "code": "swc",
+ "name": "suahili congolés"
+ },
+ "sv": {
+ "code": "sv",
+ "name": "sueco"
+ },
+ "sw": {
+ "code": "sw",
+ "name": "swahili"
+ },
+ "shi": {
+ "code": "shi",
+ "name": "tachelhit"
+ },
+ "th": {
+ "code": "th",
+ "name": "tailandés"
+ },
+ "dav": {
+ "code": "dav",
+ "name": "taita"
+ },
+ "zgh": {
+ "code": "zgh",
+ "name": "tamazight de Marrocos estándar"
+ },
+ "tzm": {
+ "code": "tzm",
+ "name": "tamazight marroquí central"
+ },
+ "ta": {
+ "code": "ta",
+ "name": "tamil"
+ },
+ "twq": {
+ "code": "twq",
+ "name": "tasawaq"
+ },
+ "te": {
+ "code": "te",
+ "name": "telugu"
+ },
+ "teo": {
+ "code": "teo",
+ "name": "teso"
+ },
+ "bo": {
+ "code": "bo",
+ "name": "tibetano"
+ },
+ "ti": {
+ "code": "ti",
+ "name": "tigriña"
+ },
+ "to": {
+ "code": "to",
+ "name": "tonganés"
+ },
+ "tr": {
+ "code": "tr",
+ "name": "turco"
+ },
+ "uk": {
+ "code": "uk",
+ "name": "ucraíno"
+ },
+ "ug": {
+ "code": "ug",
+ "name": "uigur"
+ },
+ "ur": {
+ "code": "ur",
+ "name": "urdú"
+ },
+ "uz": {
+ "code": "uz",
+ "name": "uzbeco"
+ },
+ "vai": {
+ "code": "vai",
+ "name": "Vai"
+ },
+ "vi": {
+ "code": "vi",
+ "name": "vietnamita"
+ },
+ "vun": {
+ "code": "vun",
+ "name": "vunjo"
+ },
+ "wae": {
+ "code": "wae",
+ "name": "Walser"
+ },
+ "ja": {
+ "code": "ja",
+ "name": "xaponés"
+ },
+ "ka": {
+ "code": "ka",
+ "name": "xeorxiano"
+ },
+ "yav": {
+ "code": "yav",
+ "name": "Yangben"
+ },
+ "dje": {
+ "code": "dje",
+ "name": "zarma"
+ },
+ "zu": {
+ "code": "zu",
+ "name": "zulú"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/language/gsw.json b/library/intl/resources/language/gsw.json
new file mode 100644
index 000000000..07374ed4c
--- /dev/null
+++ b/library/intl/resources/language/gsw.json
@@ -0,0 +1,738 @@
+{
+ "af": {
+ "code": "af",
+ "name": "Afrikaans"
+ },
+ "agq": {
+ "code": "agq",
+ "name": "Aghem"
+ },
+ "ak": {
+ "code": "ak",
+ "name": "Akan"
+ },
+ "sq": {
+ "code": "sq",
+ "name": "Albanisch"
+ },
+ "en-US": {
+ "code": "en-US",
+ "name": "Amerikanischs Änglisch"
+ },
+ "am": {
+ "code": "am",
+ "name": "Amharisch"
+ },
+ "en": {
+ "code": "en",
+ "name": "Änglisch"
+ },
+ "ar-001": {
+ "code": "ar-001",
+ "name": "ar_001"
+ },
+ "ar": {
+ "code": "ar",
+ "name": "Arabisch"
+ },
+ "hy": {
+ "code": "hy",
+ "name": "Armenisch"
+ },
+ "ast": {
+ "code": "ast",
+ "name": "Aschturianisch"
+ },
+ "az": {
+ "code": "az",
+ "name": "Aserbaidschanisch"
+ },
+ "asa": {
+ "code": "asa",
+ "name": "Asu (Tanzania)"
+ },
+ "en-AU": {
+ "code": "en-AU",
+ "name": "Auschtralischs Änglisch"
+ },
+ "ksf": {
+ "code": "ksf",
+ "name": "Bafia"
+ },
+ "bm": {
+ "code": "bm",
+ "name": "Bambara"
+ },
+ "bas": {
+ "code": "bas",
+ "name": "Basaa"
+ },
+ "eu": {
+ "code": "eu",
+ "name": "Baskisch"
+ },
+ "bez": {
+ "code": "bez",
+ "name": "Bena (Tanzania)"
+ },
+ "bn": {
+ "code": "bn",
+ "name": "Bengalisch"
+ },
+ "my": {
+ "code": "my",
+ "name": "Birmanisch"
+ },
+ "brx": {
+ "code": "brx",
+ "name": "Bodo"
+ },
+ "bs": {
+ "code": "bs",
+ "name": "Bosnisch"
+ },
+ "pt-BR": {
+ "code": "pt-BR",
+ "name": "Brasilianischs Portugiisisch"
+ },
+ "en-GB": {
+ "code": "en-GB",
+ "name": "Britischs Änglisch"
+ },
+ "br": {
+ "code": "br",
+ "name": "Brötoonisch"
+ },
+ "bg": {
+ "code": "bg",
+ "name": "Bulgaarisch"
+ },
+ "tzm": {
+ "code": "tzm",
+ "name": "Central Atlas Tamazight"
+ },
+ "chr": {
+ "code": "chr",
+ "name": "Cherokee"
+ },
+ "cgg": {
+ "code": "cgg",
+ "name": "Chiga"
+ },
+ "zh": {
+ "code": "zh",
+ "name": "Chineesisch"
+ },
+ "ksh": {
+ "code": "ksh",
+ "name": "Colognian"
+ },
+ "swc": {
+ "code": "swc",
+ "name": "Congo Swahili"
+ },
+ "dz": {
+ "code": "dz",
+ "name": "Dschongkha"
+ },
+ "et": {
+ "code": "et",
+ "name": "Eestnisch"
+ },
+ "ebu": {
+ "code": "ebu",
+ "name": "Embu"
+ },
+ "es-MX": {
+ "code": "es-MX",
+ "name": "es_MX"
+ },
+ "eo": {
+ "code": "eo",
+ "name": "Eschperanto"
+ },
+ "ee": {
+ "code": "ee",
+ "name": "Ewe"
+ },
+ "ewo": {
+ "code": "ewo",
+ "name": "Ewondo"
+ },
+ "fo": {
+ "code": "fo",
+ "name": "Färöisch"
+ },
+ "fil": {
+ "code": "fil",
+ "name": "Filipino"
+ },
+ "fi": {
+ "code": "fi",
+ "name": "Finnisch"
+ },
+ "nl-BE": {
+ "code": "nl-BE",
+ "name": "Fläämisch"
+ },
+ "fr": {
+ "code": "fr",
+ "name": "Französisch"
+ },
+ "fy": {
+ "code": "fy",
+ "name": "Friesisch"
+ },
+ "fur": {
+ "code": "fur",
+ "name": "Friulisch"
+ },
+ "ff": {
+ "code": "ff",
+ "name": "Ful"
+ },
+ "gl": {
+ "code": "gl",
+ "name": "Galizisch"
+ },
+ "lg": {
+ "code": "lg",
+ "name": "Ganda-Schpraach"
+ },
+ "ka": {
+ "code": "ka",
+ "name": "Georgisch"
+ },
+ "el": {
+ "code": "el",
+ "name": "Griechisch"
+ },
+ "kl": {
+ "code": "kl",
+ "name": "Gröönländisch"
+ },
+ "gu": {
+ "code": "gu",
+ "name": "Gujarati"
+ },
+ "guz": {
+ "code": "guz",
+ "name": "Gusii"
+ },
+ "ha": {
+ "code": "ha",
+ "name": "Haussa"
+ },
+ "he": {
+ "code": "he",
+ "name": "Hebräisch"
+ },
+ "hi": {
+ "code": "hi",
+ "name": "Hindi"
+ },
+ "es-ES": {
+ "code": "es-ES",
+ "name": "Ibeerischs Schpanisch"
+ },
+ "pt-PT": {
+ "code": "pt-PT",
+ "name": "Iberischs Portugiisisch"
+ },
+ "ga": {
+ "code": "ga",
+ "name": "Iirisch"
+ },
+ "is": {
+ "code": "is",
+ "name": "Iisländisch"
+ },
+ "id": {
+ "code": "id",
+ "name": "Indonesisch"
+ },
+ "it": {
+ "code": "it",
+ "name": "Italiänisch"
+ },
+ "ja": {
+ "code": "ja",
+ "name": "Japanisch"
+ },
+ "dyo": {
+ "code": "dyo",
+ "name": "Jola-Fonyi"
+ },
+ "kea": {
+ "code": "kea",
+ "name": "Kabuverdianu"
+ },
+ "kab": {
+ "code": "kab",
+ "name": "Kabylisch"
+ },
+ "kln": {
+ "code": "kln",
+ "name": "Kalenjin"
+ },
+ "kam": {
+ "code": "kam",
+ "name": "Kamba"
+ },
+ "km": {
+ "code": "km",
+ "name": "Kambodschanisch"
+ },
+ "en-CA": {
+ "code": "en-CA",
+ "name": "Kanadischs Änglisch"
+ },
+ "fr-CA": {
+ "code": "fr-CA",
+ "name": "Kanadischs Französisch"
+ },
+ "kn": {
+ "code": "kn",
+ "name": "Kannada"
+ },
+ "kk": {
+ "code": "kk",
+ "name": "Kasachisch"
+ },
+ "ks": {
+ "code": "ks",
+ "name": "Kaschmirisch"
+ },
+ "ca": {
+ "code": "ca",
+ "name": "Katalaanisch"
+ },
+ "ki": {
+ "code": "ki",
+ "name": "Kikuyu-Schpraach"
+ },
+ "ky": {
+ "code": "ky",
+ "name": "Kirgiisisch"
+ },
+ "ko": {
+ "code": "ko",
+ "name": "Koreaanisch"
+ },
+ "khq": {
+ "code": "khq",
+ "name": "Koyra Chiini"
+ },
+ "ses": {
+ "code": "ses",
+ "name": "Koyraboro Senni"
+ },
+ "hr": {
+ "code": "hr",
+ "name": "Kroazisch"
+ },
+ "nmg": {
+ "code": "nmg",
+ "name": "Kwasio"
+ },
+ "lag": {
+ "code": "lag",
+ "name": "Langi"
+ },
+ "lo": {
+ "code": "lo",
+ "name": "Laozisch"
+ },
+ "lv": {
+ "code": "lv",
+ "name": "Lettisch"
+ },
+ "ln": {
+ "code": "ln",
+ "name": "Lingala"
+ },
+ "lt": {
+ "code": "lt",
+ "name": "Litauisch"
+ },
+ "lu": {
+ "code": "lu",
+ "name": "Luba"
+ },
+ "luo": {
+ "code": "luo",
+ "name": "Luo-Schpraach"
+ },
+ "lb": {
+ "code": "lb",
+ "name": "Luxemburgisch"
+ },
+ "jmc": {
+ "code": "jmc",
+ "name": "Machame"
+ },
+ "mg": {
+ "code": "mg",
+ "name": "Madagassisch"
+ },
+ "mgh": {
+ "code": "mgh",
+ "name": "Makhuwa-Meetto"
+ },
+ "kde": {
+ "code": "kde",
+ "name": "Makonde"
+ },
+ "ms": {
+ "code": "ms",
+ "name": "Malaiisch"
+ },
+ "ml": {
+ "code": "ml",
+ "name": "Malayalam"
+ },
+ "mt": {
+ "code": "mt",
+ "name": "Maltesisch"
+ },
+ "mr": {
+ "code": "mr",
+ "name": "Marathi"
+ },
+ "mas": {
+ "code": "mas",
+ "name": "Massai-Schpraach"
+ },
+ "mk": {
+ "code": "mk",
+ "name": "Mazedonisch"
+ },
+ "mer": {
+ "code": "mer",
+ "name": "Meru"
+ },
+ "ro-MD": {
+ "code": "ro-MD",
+ "name": "Moldawisch"
+ },
+ "mn": {
+ "code": "mn",
+ "name": "Mongolisch"
+ },
+ "mfe": {
+ "code": "mfe",
+ "name": "Morisyen"
+ },
+ "mua": {
+ "code": "mua",
+ "name": "Mundang"
+ },
+ "naq": {
+ "code": "naq",
+ "name": "Nama"
+ },
+ "ne": {
+ "code": "ne",
+ "name": "Nepalesisch"
+ },
+ "jgo": {
+ "code": "jgo",
+ "name": "Ngomba"
+ },
+ "nl": {
+ "code": "nl",
+ "name": "Niderländisch"
+ },
+ "dsb": {
+ "code": "dsb",
+ "name": "Nidersorbisch"
+ },
+ "nd": {
+ "code": "nd",
+ "name": "Nord-Ndebele-Schpraach"
+ },
+ "se": {
+ "code": "se",
+ "name": "Nord-Samisch"
+ },
+ "nb": {
+ "code": "nb",
+ "name": "Norwegisch Bokmål"
+ },
+ "nn": {
+ "code": "nn",
+ "name": "Norwegisch Nynorsk"
+ },
+ "nus": {
+ "code": "nus",
+ "name": "Nuer"
+ },
+ "nyn": {
+ "code": "nyn",
+ "name": "Nyankole"
+ },
+ "hsb": {
+ "code": "hsb",
+ "name": "Obersorbisch"
+ },
+ "luy": {
+ "code": "luy",
+ "name": "Olulujia"
+ },
+ "or": {
+ "code": "or",
+ "name": "Orija"
+ },
+ "de-AT": {
+ "code": "de-AT",
+ "name": "Öschtriichischs Tüütsch"
+ },
+ "pa": {
+ "code": "pa",
+ "name": "Pandschabisch"
+ },
+ "ps": {
+ "code": "ps",
+ "name": "Paschtu"
+ },
+ "fa": {
+ "code": "fa",
+ "name": "Persisch"
+ },
+ "pl": {
+ "code": "pl",
+ "name": "Polnisch"
+ },
+ "pt": {
+ "code": "pt",
+ "name": "Portugiisisch"
+ },
+ "rm": {
+ "code": "rm",
+ "name": "Rätoromanisch"
+ },
+ "rof": {
+ "code": "rof",
+ "name": "Rombo"
+ },
+ "ro": {
+ "code": "ro",
+ "name": "Rumänisch"
+ },
+ "rn": {
+ "code": "rn",
+ "name": "Rundi-Schpraach"
+ },
+ "ru": {
+ "code": "ru",
+ "name": "Russisch"
+ },
+ "rwk": {
+ "code": "rwk",
+ "name": "Rwa"
+ },
+ "saq": {
+ "code": "saq",
+ "name": "Samburu"
+ },
+ "sg": {
+ "code": "sg",
+ "name": "Sango"
+ },
+ "sbp": {
+ "code": "sbp",
+ "name": "Sangu"
+ },
+ "sn": {
+ "code": "sn",
+ "name": "Schhona"
+ },
+ "gd": {
+ "code": "gd",
+ "name": "Schottisch-Gäälisch"
+ },
+ "es": {
+ "code": "es",
+ "name": "Schpanisch"
+ },
+ "sv": {
+ "code": "sv",
+ "name": "Schwedisch"
+ },
+ "fr-CH": {
+ "code": "fr-CH",
+ "name": "Schwiizer Französisch"
+ },
+ "de-CH": {
+ "code": "de-CH",
+ "name": "Schwiizer Hochtüütsch"
+ },
+ "gsw": {
+ "code": "gsw",
+ "name": "Schwiizertüütsch"
+ },
+ "seh": {
+ "code": "seh",
+ "name": "Sena"
+ },
+ "sr": {
+ "code": "sr",
+ "name": "Serbisch"
+ },
+ "ksb": {
+ "code": "ksb",
+ "name": "Shambala"
+ },
+ "si": {
+ "code": "si",
+ "name": "Singhalesisch"
+ },
+ "sk": {
+ "code": "sk",
+ "name": "Slowakisch"
+ },
+ "sl": {
+ "code": "sl",
+ "name": "Slowenisch"
+ },
+ "xog": {
+ "code": "xog",
+ "name": "Soga"
+ },
+ "so": {
+ "code": "so",
+ "name": "Somali"
+ },
+ "zgh": {
+ "code": "zgh",
+ "name": "Standard Moroccan Tamazight"
+ },
+ "sw": {
+ "code": "sw",
+ "name": "Suaheli"
+ },
+ "shi": {
+ "code": "shi",
+ "name": "Tachelhit"
+ },
+ "dav": {
+ "code": "dav",
+ "name": "Taita"
+ },
+ "ta": {
+ "code": "ta",
+ "name": "Tamilisch"
+ },
+ "da": {
+ "code": "da",
+ "name": "Tänisch"
+ },
+ "twq": {
+ "code": "twq",
+ "name": "Tasawaq"
+ },
+ "te": {
+ "code": "te",
+ "name": "Telugu"
+ },
+ "teo": {
+ "code": "teo",
+ "name": "Teso"
+ },
+ "th": {
+ "code": "th",
+ "name": "Thailändisch"
+ },
+ "bo": {
+ "code": "bo",
+ "name": "Tibeetisch"
+ },
+ "ti": {
+ "code": "ti",
+ "name": "Tigrinja"
+ },
+ "to": {
+ "code": "to",
+ "name": "Tongaisch"
+ },
+ "zh-Hant": {
+ "code": "zh-Hant",
+ "name": "Tradizionells Chineesisch"
+ },
+ "cs": {
+ "code": "cs",
+ "name": "Tschechisch"
+ },
+ "tr": {
+ "code": "tr",
+ "name": "Türkisch"
+ },
+ "de": {
+ "code": "de",
+ "name": "Tüütsch"
+ },
+ "ug": {
+ "code": "ug",
+ "name": "Uigurisch"
+ },
+ "uk": {
+ "code": "uk",
+ "name": "Ukrainisch"
+ },
+ "hu": {
+ "code": "hu",
+ "name": "Ungarisch"
+ },
+ "ur": {
+ "code": "ur",
+ "name": "Urdu"
+ },
+ "uz": {
+ "code": "uz",
+ "name": "Usbekisch"
+ },
+ "vai": {
+ "code": "vai",
+ "name": "Vai-Schpraach"
+ },
+ "zh-Hans": {
+ "code": "zh-Hans",
+ "name": "Veräifachts Chineesisch"
+ },
+ "vi": {
+ "code": "vi",
+ "name": "Vietnamesisch"
+ },
+ "vun": {
+ "code": "vun",
+ "name": "Vunjo"
+ },
+ "cy": {
+ "code": "cy",
+ "name": "Walisisch"
+ },
+ "wae": {
+ "code": "wae",
+ "name": "Walser"
+ },
+ "be": {
+ "code": "be",
+ "name": "Wiissrussisch"
+ },
+ "yav": {
+ "code": "yav",
+ "name": "Yangben"
+ },
+ "yo": {
+ "code": "yo",
+ "name": "Yoruba"
+ },
+ "dje": {
+ "code": "dje",
+ "name": "Zarma"
+ },
+ "zu": {
+ "code": "zu",
+ "name": "Zulu"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/language/gu.json b/library/intl/resources/language/gu.json
new file mode 100644
index 000000000..073c814ef
--- /dev/null
+++ b/library/intl/resources/language/gu.json
@@ -0,0 +1,738 @@
+{
+ "ksh": {
+ "code": "ksh",
+ "name": "Colognian"
+ },
+ "wae": {
+ "code": "wae",
+ "name": "Walser"
+ },
+ "yav": {
+ "code": "yav",
+ "name": "Yangben"
+ },
+ "en": {
+ "code": "en",
+ "name": "અંગà«àª°à«‡àªœà«€"
+ },
+ "ak": {
+ "code": "ak",
+ "name": "અકાન"
+ },
+ "agq": {
+ "code": "agq",
+ "name": "અઘેમ"
+ },
+ "az": {
+ "code": "az",
+ "name": "અàªàª°àª¬à«ˆàªœàª¾àª¨à«€"
+ },
+ "hsb": {
+ "code": "hsb",
+ "name": "અપà«àªªàª° સોરà«àª¬àª¿àª¯àª¨"
+ },
+ "en-US": {
+ "code": "en-US",
+ "name": "અમેરિકન અંગà«àª°à«‡àªœà«€"
+ },
+ "ar": {
+ "code": "ar",
+ "name": "અરબી"
+ },
+ "sq": {
+ "code": "sq",
+ "name": "અલà«àª¬à«‡àª¨àª¿àª¯àª¨"
+ },
+ "asa": {
+ "code": "asa",
+ "name": "અસà«"
+ },
+ "ast": {
+ "code": "ast",
+ "name": "અસà«àª¤à«àª°àª¿àª¯àª¨"
+ },
+ "ga": {
+ "code": "ga",
+ "name": "આઇરિશ"
+ },
+ "is": {
+ "code": "is",
+ "name": "આઇસલેનà«àª¡àª¿àª•"
+ },
+ "af": {
+ "code": "af",
+ "name": "આફà«àª°àª¿àª•àª¨à«àª¸"
+ },
+ "hy": {
+ "code": "hy",
+ "name": "આરà«àª®à«‡àª¨àª¿àª¯àª¨"
+ },
+ "it": {
+ "code": "it",
+ "name": "ઇટાલિયન"
+ },
+ "id": {
+ "code": "id",
+ "name": "ઇનà«àª¡à«‹àª¨à«‡àª¶àª¿àª¯àª¨"
+ },
+ "ewo": {
+ "code": "ewo",
+ "name": "ઇવોનà«àª¡à«‹"
+ },
+ "ee": {
+ "code": "ee",
+ "name": "ઈવ"
+ },
+ "ug": {
+ "code": "ug",
+ "name": "ઉઇગà«àª°"
+ },
+ "uz": {
+ "code": "uz",
+ "name": "ઉàªà«àª¬à«‡àª•"
+ },
+ "or": {
+ "code": "or",
+ "name": "ઉડિયા"
+ },
+ "nd": {
+ "code": "nd",
+ "name": "ઉતર દેબેલ"
+ },
+ "se": {
+ "code": "se",
+ "name": "ઉતà«àª¤àª°à«€àª¯ સામી"
+ },
+ "ur": {
+ "code": "ur",
+ "name": "ઉરà«àª¦à«‚"
+ },
+ "ebu": {
+ "code": "ebu",
+ "name": "àªàª®à«àª¬à«"
+ },
+ "am": {
+ "code": "am",
+ "name": "àªàª®à«àª¹àª¾àª°àª¿àª•"
+ },
+ "et": {
+ "code": "et",
+ "name": "àªàª¸à«àªŸà«‹àª¨àª¿àª¯àª¨"
+ },
+ "eo": {
+ "code": "eo",
+ "name": "àªàª¸à«àªªà«‡àª°àª¾àª¨à«àªŸà«‹"
+ },
+ "de-AT": {
+ "code": "de-AT",
+ "name": "ઓસà«àªŸà«àª°àª¿àª…ન જરà«àª®àª¨"
+ },
+ "en-AU": {
+ "code": "en-AU",
+ "name": "ઓસà«àªŸà«àª°à«‡àª²àª¿àª¯àª¨ અંગà«àª°à«‡àªœà«€"
+ },
+ "kk": {
+ "code": "kk",
+ "name": "કàªàª¾àª–"
+ },
+ "ca": {
+ "code": "ca",
+ "name": "કતલાન"
+ },
+ "kn": {
+ "code": "kn",
+ "name": "કનà«àª¨àª¡"
+ },
+ "kab": {
+ "code": "kab",
+ "name": "કબાઇલ"
+ },
+ "kam": {
+ "code": "kam",
+ "name": "કમà«àª¬àª¾"
+ },
+ "kl": {
+ "code": "kl",
+ "name": "કલાલà«àª²àª¿àª¸à«àª¤"
+ },
+ "kln": {
+ "code": "kln",
+ "name": "કલેજિન"
+ },
+ "kea": {
+ "code": "kea",
+ "name": "કાબà«àªµàª°à«àª¡àª¿àª†àª¨à«"
+ },
+ "ks": {
+ "code": "ks",
+ "name": "કાશà«àª®à«€àª°à«€"
+ },
+ "ki": {
+ "code": "ki",
+ "name": "કિકà«àª¯à«‚"
+ },
+ "ky": {
+ "code": "ky",
+ "name": "કિરà«àª—à«€àª"
+ },
+ "en-CA": {
+ "code": "en-CA",
+ "name": "કેનેડિયન અંગà«àª°à«‡àªœà«€"
+ },
+ "fr-CA": {
+ "code": "fr-CA",
+ "name": "કેનેડિયન ફà«àª°à«‡àª‚ચ"
+ },
+ "swc": {
+ "code": "swc",
+ "name": "કોંગો સà«àªµàª¾àª¹àª¿àª²à«€"
+ },
+ "khq": {
+ "code": "khq",
+ "name": "કોયરા ચિનિ"
+ },
+ "ses": {
+ "code": "ses",
+ "name": "કોયરાબોરો સેનà«àª¨à«€"
+ },
+ "ko": {
+ "code": "ko",
+ "name": "કોરિયન"
+ },
+ "hr": {
+ "code": "hr",
+ "name": "કà«àª°à«‹àªàª¶àª¿àª¯àª¨"
+ },
+ "nmg": {
+ "code": "nmg",
+ "name": "કà«àªµàª¾àª¸àª¿àª“"
+ },
+ "km": {
+ "code": "km",
+ "name": "ખà«àª®à«‡àª°"
+ },
+ "lg": {
+ "code": "lg",
+ "name": "ગાંડા"
+ },
+ "gu": {
+ "code": "gu",
+ "name": "ગà«àªœàª°àª¾àª¤à«€"
+ },
+ "guz": {
+ "code": "guz",
+ "name": "ગà«àª¸à«€"
+ },
+ "gl": {
+ "code": "gl",
+ "name": "ગેલિશિયન"
+ },
+ "el": {
+ "code": "el",
+ "name": "ગà«àª°à«€àª•"
+ },
+ "zh": {
+ "code": "zh",
+ "name": "ચાઇનીàª"
+ },
+ "cgg": {
+ "code": "cgg",
+ "name": "ચિગા"
+ },
+ "cs": {
+ "code": "cs",
+ "name": "ચેક"
+ },
+ "de": {
+ "code": "de",
+ "name": "જરà«àª®àª¨"
+ },
+ "ja": {
+ "code": "ja",
+ "name": "જાપાનીàª"
+ },
+ "dyo": {
+ "code": "dyo",
+ "name": "જોલા-ફોનà«àª¯à«€"
+ },
+ "ka": {
+ "code": "ka",
+ "name": "જà«àª¯à«‹àª°à«àªœàª¿àª…ન"
+ },
+ "dje": {
+ "code": "dje",
+ "name": "àªàª°à«àª®àª¾"
+ },
+ "zu": {
+ "code": "zu",
+ "name": "àªà«àª²à«"
+ },
+ "tr": {
+ "code": "tr",
+ "name": "ટરà«àª•à«€àª¶"
+ },
+ "ti": {
+ "code": "ti",
+ "name": "ટાઇગà«àª°àª¿àª¨àª¿àª¯àª¾"
+ },
+ "to": {
+ "code": "to",
+ "name": "ટોંગાન"
+ },
+ "nl": {
+ "code": "nl",
+ "name": "ડચ"
+ },
+ "da": {
+ "code": "da",
+ "name": "ડેનિશ"
+ },
+ "dz": {
+ "code": "dz",
+ "name": "ડà«àªà«‹àª‚ગà«àª–ા"
+ },
+ "ta": {
+ "code": "ta",
+ "name": "તમિલ"
+ },
+ "twq": {
+ "code": "twq",
+ "name": "તસાવાક"
+ },
+ "bo": {
+ "code": "bo",
+ "name": "તિબેટીયન"
+ },
+ "te": {
+ "code": "te",
+ "name": "તેલà«àª—à«"
+ },
+ "shi": {
+ "code": "shi",
+ "name": "તેશીલહિટ"
+ },
+ "teo": {
+ "code": "teo",
+ "name": "તેસો"
+ },
+ "dav": {
+ "code": "dav",
+ "name": "તૈતા"
+ },
+ "th": {
+ "code": "th",
+ "name": "થાઈ"
+ },
+ "jgo": {
+ "code": "jgo",
+ "name": "નગોમà«àª¬àª¾"
+ },
+ "naq": {
+ "code": "naq",
+ "name": "નમા"
+ },
+ "dsb": {
+ "code": "dsb",
+ "name": "નિમà«àª¨ સોરà«àª¬àª¿àª¯àª¨"
+ },
+ "nus": {
+ "code": "nus",
+ "name": "નà«àªàª°"
+ },
+ "ne": {
+ "code": "ne",
+ "name": "નેપાળી"
+ },
+ "nn": {
+ "code": "nn",
+ "name": "નૉરà«àªµà«‡àªœà«€àª¯àª¨ નાયનૉરà«àª¸à«àª•"
+ },
+ "nb": {
+ "code": "nb",
+ "name": "નોરà«àªµà«‡àªœà«€àª¯àª¨ બોકમાલ"
+ },
+ "nyn": {
+ "code": "nyn",
+ "name": "નà«àª¯àª¾àª¨àª•à«‹àª²"
+ },
+ "pa": {
+ "code": "pa",
+ "name": "પંજાબી"
+ },
+ "fy": {
+ "code": "fy",
+ "name": "પશà«àªšàª¿àª®à«€ ફà«àª°àª¿àª¶àª¿àª¯àª¨"
+ },
+ "ps": {
+ "code": "ps",
+ "name": "પશà«àª¤à«‹"
+ },
+ "zh-Hant": {
+ "code": "zh-Hant",
+ "name": "પારંપરિક ચાઇનીàª"
+ },
+ "pt": {
+ "code": "pt",
+ "name": "પોરà«àªŸà«àª—à«€àª"
+ },
+ "pl": {
+ "code": "pl",
+ "name": "પોલીશ"
+ },
+ "zgh": {
+ "code": "zgh",
+ "name": "પà«àª°àª®àª¾àª£àª­à«‚ત મોરોકà«àª•àª¨ ટમાàªàª¿àªŸ"
+ },
+ "fa": {
+ "code": "fa",
+ "name": "ફારસી"
+ },
+ "fi": {
+ "code": "fi",
+ "name": "ફિનિશ"
+ },
+ "fil": {
+ "code": "fil",
+ "name": "ફિલિપિનો"
+ },
+ "ff": {
+ "code": "ff",
+ "name": "ફà«àª²àª¾àª¹"
+ },
+ "fo": {
+ "code": "fo",
+ "name": "ફોરિસà«àª¤"
+ },
+ "fur": {
+ "code": "fur",
+ "name": "ફà«àª°àª¿àª¯à«àª²àª¿àª¯àª¾àª¨"
+ },
+ "fr": {
+ "code": "fr",
+ "name": "ફà«àª°à«‡àª¨à«àªš"
+ },
+ "nl-BE": {
+ "code": "nl-BE",
+ "name": "ફà«àª²à«‡àª®àª¿àª¶"
+ },
+ "bn": {
+ "code": "bn",
+ "name": "બંગાળી"
+ },
+ "ksf": {
+ "code": "ksf",
+ "name": "બફિયા"
+ },
+ "my": {
+ "code": "my",
+ "name": "બરà«àª®à«€àª"
+ },
+ "bg": {
+ "code": "bg",
+ "name": "બલà«àª—ેરિયન"
+ },
+ "bas": {
+ "code": "bas",
+ "name": "બસા"
+ },
+ "bm": {
+ "code": "bm",
+ "name": "બામà«àª¬àª¾àª°àª¾"
+ },
+ "eu": {
+ "code": "eu",
+ "name": "બાસà«àª•"
+ },
+ "bez": {
+ "code": "bez",
+ "name": "બેના"
+ },
+ "be": {
+ "code": "be",
+ "name": "બેલારà«àª¶àª¿àª¯àª¨"
+ },
+ "brx": {
+ "code": "brx",
+ "name": "બોડો"
+ },
+ "bs": {
+ "code": "bs",
+ "name": "બોસà«àª¨àª¿àª¯àª¨"
+ },
+ "pt-BR": {
+ "code": "pt-BR",
+ "name": "બà«àª°àª¾àªàª¿àª²à«€àª¯àª¨ પોરà«àªŸà«àª—à«€àª"
+ },
+ "en-GB": {
+ "code": "en-GB",
+ "name": "બà«àª°àª¿àªŸàª¿àª¶ અંગà«àª°à«‡àªœà«€"
+ },
+ "br": {
+ "code": "br",
+ "name": "બà«àª°à«‡àªŸà«‹àª¨"
+ },
+ "jmc": {
+ "code": "jmc",
+ "name": "મકામે"
+ },
+ "kde": {
+ "code": "kde",
+ "name": "મકોનà«àª¡à«‡"
+ },
+ "mr": {
+ "code": "mr",
+ "name": "મરાઠી"
+ },
+ "ms": {
+ "code": "ms",
+ "name": "મલય"
+ },
+ "ml": {
+ "code": "ml",
+ "name": "મલયાલમ"
+ },
+ "mg": {
+ "code": "mg",
+ "name": "મલાગસી"
+ },
+ "mas": {
+ "code": "mas",
+ "name": "મસાઇ"
+ },
+ "mgh": {
+ "code": "mgh",
+ "name": "માખà«àªµàª¾-મીટà«àªŸà«"
+ },
+ "mt": {
+ "code": "mt",
+ "name": "માલà«àªŸàª¿àª"
+ },
+ "mua": {
+ "code": "mua",
+ "name": "મà«àª¨àª¡àª¾àª¨à«àª—"
+ },
+ "es-MX": {
+ "code": "es-MX",
+ "name": "મેકà«àª¸àª¿àª•àª¨ સà«àªªà«‡àª¨àª¿àª¶"
+ },
+ "mer": {
+ "code": "mer",
+ "name": "મેરà«"
+ },
+ "mk": {
+ "code": "mk",
+ "name": "મેસેડોનિયન"
+ },
+ "mn": {
+ "code": "mn",
+ "name": "મોંગોલિયન"
+ },
+ "ar-001": {
+ "code": "ar-001",
+ "name": "મોડરà«àª¨ સà«àªŸàª¾àª¨à«àª¡àª°à«àª¡ અરબી"
+ },
+ "mfe": {
+ "code": "mfe",
+ "name": "મોરીસà«àª¯à«‡àª¨"
+ },
+ "ro-MD": {
+ "code": "ro-MD",
+ "name": "મોલડાવિયન"
+ },
+ "uk": {
+ "code": "uk",
+ "name": "યà«àª•à«àª°à«‡àª¨àª¿àª¯àª¨"
+ },
+ "pt-PT": {
+ "code": "pt-PT",
+ "name": "યà«àª°à«‹àªªàª¿àª¯àª¨ પોરà«àªŸà«àª—à«€àª"
+ },
+ "es-ES": {
+ "code": "es-ES",
+ "name": "યà«àª°à«‹àªªàª¿àª¯àª¨ સà«àªªà«‡àª¨àª¿àª¶"
+ },
+ "yo": {
+ "code": "yo",
+ "name": "યોરૂબા"
+ },
+ "rwk": {
+ "code": "rwk",
+ "name": "રવા"
+ },
+ "ru": {
+ "code": "ru",
+ "name": "રશિયન"
+ },
+ "rn": {
+ "code": "rn",
+ "name": "રૂનà«àª¦à«€"
+ },
+ "ro": {
+ "code": "ro",
+ "name": "રોમાનિયન"
+ },
+ "rm": {
+ "code": "rm",
+ "name": "રોમાનà«àª¶"
+ },
+ "rof": {
+ "code": "rof",
+ "name": "રોમà«àª¬à«‹"
+ },
+ "lag": {
+ "code": "lag",
+ "name": "લંગી"
+ },
+ "lb": {
+ "code": "lb",
+ "name": "લકà«àªà«‡àª®àª¬àª°à«àª—િશ"
+ },
+ "lo": {
+ "code": "lo",
+ "name": "લાઓથિયન"
+ },
+ "lv": {
+ "code": "lv",
+ "name": "લાતવિયન"
+ },
+ "ln": {
+ "code": "ln",
+ "name": "લિંગાલા"
+ },
+ "lt": {
+ "code": "lt",
+ "name": "લિથà«àª¨àª¿àª¯àª¨"
+ },
+ "luy": {
+ "code": "luy",
+ "name": "લà«àªˆàª¯àª¾"
+ },
+ "luo": {
+ "code": "luo",
+ "name": "લà«àª¯à«àª“"
+ },
+ "lu": {
+ "code": "lu",
+ "name": "લà«àª¯à«‚બા કટાંગા"
+ },
+ "vai": {
+ "code": "vai",
+ "name": "વાઇ"
+ },
+ "vi": {
+ "code": "vi",
+ "name": "વિયેતનામીસ"
+ },
+ "vun": {
+ "code": "vun",
+ "name": "વà«àª¨à«àªœà«‹"
+ },
+ "cy": {
+ "code": "cy",
+ "name": "વેલà«àª¶"
+ },
+ "ksb": {
+ "code": "ksb",
+ "name": "શમà«àª¬àª¾àª²àª¾"
+ },
+ "chr": {
+ "code": "chr",
+ "name": "શેરોકી"
+ },
+ "sn": {
+ "code": "sn",
+ "name": "શોના"
+ },
+ "saq": {
+ "code": "saq",
+ "name": "સમà«àª¬à«àª°à«"
+ },
+ "zh-Hans": {
+ "code": "zh-Hans",
+ "name": "સરળીકૃત ચાઇનીàª"
+ },
+ "sr": {
+ "code": "sr",
+ "name": "સરà«àª¬àª¿àª¯àª¨"
+ },
+ "sbp": {
+ "code": "sbp",
+ "name": "સાંગà«"
+ },
+ "sg": {
+ "code": "sg",
+ "name": "સાંગો"
+ },
+ "si": {
+ "code": "si",
+ "name": "સિંહાલી"
+ },
+ "seh": {
+ "code": "seh",
+ "name": "સેના"
+ },
+ "tzm": {
+ "code": "tzm",
+ "name": "સેનà«àªŸà«àª°àª² àªàªŸà«àª²àª¸ તામાàªàª¿àª—à«àªŸ"
+ },
+ "xog": {
+ "code": "xog",
+ "name": "સોગા"
+ },
+ "so": {
+ "code": "so",
+ "name": "સોમાલી"
+ },
+ "gd": {
+ "code": "gd",
+ "name": "સà«àª•à«‹àªŸà«àª¸ ગેલિક"
+ },
+ "es": {
+ "code": "es",
+ "name": "સà«àªªà«‡àª¨àª¿àª¶"
+ },
+ "sk": {
+ "code": "sk",
+ "name": "સà«àª²à«‹àªµà«…ક"
+ },
+ "sl": {
+ "code": "sl",
+ "name": "સà«àª²à«‹àªµà«‡àª¨àª¿àª¯àª¨"
+ },
+ "sw": {
+ "code": "sw",
+ "name": "સà«àªµàª¾àª¹àª¿àª²à«€"
+ },
+ "gsw": {
+ "code": "gsw",
+ "name": "સà«àªµàª¿àª¸ જરà«àª®àª¨"
+ },
+ "fr-CH": {
+ "code": "fr-CH",
+ "name": "સà«àªµàª¿àª¸ ફà«àª°à«‡àª‚ચ"
+ },
+ "de-CH": {
+ "code": "de-CH",
+ "name": "સà«àªµàª¿àª¸ હાય જરà«àª®àª¨"
+ },
+ "sv": {
+ "code": "sv",
+ "name": "સà«àªµà«€àª¡àª¿àª¶"
+ },
+ "hu": {
+ "code": "hu",
+ "name": "હંગેરિયન"
+ },
+ "hi": {
+ "code": "hi",
+ "name": "હિનà«àª¦à«€"
+ },
+ "he": {
+ "code": "he",
+ "name": "હીબà«àª°à«"
+ },
+ "ha": {
+ "code": "ha",
+ "name": "હૌસા"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/language/guz.json b/library/intl/resources/language/guz.json
new file mode 100644
index 000000000..ad2a4f072
--- /dev/null
+++ b/library/intl/resources/language/guz.json
@@ -0,0 +1,738 @@
+{
+ "af": {
+ "code": "af",
+ "name": "Afrikaans"
+ },
+ "agq": {
+ "code": "agq",
+ "name": "Aghem"
+ },
+ "sq": {
+ "code": "sq",
+ "name": "Albanian"
+ },
+ "ar-001": {
+ "code": "ar-001",
+ "name": "ar_001"
+ },
+ "hy": {
+ "code": "hy",
+ "name": "Armenian"
+ },
+ "ast": {
+ "code": "ast",
+ "name": "Asturian"
+ },
+ "asa": {
+ "code": "asa",
+ "name": "Asu"
+ },
+ "az": {
+ "code": "az",
+ "name": "Azerbaijani"
+ },
+ "ksf": {
+ "code": "ksf",
+ "name": "Bafia"
+ },
+ "bm": {
+ "code": "bm",
+ "name": "Bambara"
+ },
+ "bas": {
+ "code": "bas",
+ "name": "Basaa"
+ },
+ "eu": {
+ "code": "eu",
+ "name": "Basque"
+ },
+ "bez": {
+ "code": "bez",
+ "name": "Bena"
+ },
+ "brx": {
+ "code": "brx",
+ "name": "Bodo"
+ },
+ "bs": {
+ "code": "bs",
+ "name": "Bosnian"
+ },
+ "br": {
+ "code": "br",
+ "name": "Breton"
+ },
+ "ca": {
+ "code": "ca",
+ "name": "Catalan"
+ },
+ "tzm": {
+ "code": "tzm",
+ "name": "Central Atlas Tamazight"
+ },
+ "chr": {
+ "code": "chr",
+ "name": "Cherokee"
+ },
+ "cgg": {
+ "code": "cgg",
+ "name": "Chiga"
+ },
+ "ksh": {
+ "code": "ksh",
+ "name": "Colognian"
+ },
+ "swc": {
+ "code": "swc",
+ "name": "Congo Swahili"
+ },
+ "hr": {
+ "code": "hr",
+ "name": "Croatian"
+ },
+ "da": {
+ "code": "da",
+ "name": "Danish"
+ },
+ "de-AT": {
+ "code": "de-AT",
+ "name": "de_AT"
+ },
+ "de-CH": {
+ "code": "de-CH",
+ "name": "de_CH"
+ },
+ "dz": {
+ "code": "dz",
+ "name": "Dzongkha"
+ },
+ "guz": {
+ "code": "guz",
+ "name": "Ekegusii"
+ },
+ "ebu": {
+ "code": "ebu",
+ "name": "Embu"
+ },
+ "en-AU": {
+ "code": "en-AU",
+ "name": "en_AU"
+ },
+ "en-CA": {
+ "code": "en-CA",
+ "name": "en_CA"
+ },
+ "en-GB": {
+ "code": "en-GB",
+ "name": "en_GB"
+ },
+ "en-US": {
+ "code": "en-US",
+ "name": "en_US"
+ },
+ "es-ES": {
+ "code": "es-ES",
+ "name": "es_ES"
+ },
+ "es-MX": {
+ "code": "es-MX",
+ "name": "es_MX"
+ },
+ "eo": {
+ "code": "eo",
+ "name": "Esperanto"
+ },
+ "et": {
+ "code": "et",
+ "name": "Estonian"
+ },
+ "ee": {
+ "code": "ee",
+ "name": "Ewe"
+ },
+ "ewo": {
+ "code": "ewo",
+ "name": "Ewondo"
+ },
+ "fo": {
+ "code": "fo",
+ "name": "Faroese"
+ },
+ "fil": {
+ "code": "fil",
+ "name": "Filipino"
+ },
+ "fi": {
+ "code": "fi",
+ "name": "Finnish"
+ },
+ "fr-CA": {
+ "code": "fr-CA",
+ "name": "fr_CA"
+ },
+ "fr-CH": {
+ "code": "fr-CH",
+ "name": "fr_CH"
+ },
+ "fur": {
+ "code": "fur",
+ "name": "Friulian"
+ },
+ "ff": {
+ "code": "ff",
+ "name": "Fulah"
+ },
+ "gl": {
+ "code": "gl",
+ "name": "Galician"
+ },
+ "lg": {
+ "code": "lg",
+ "name": "Ganda"
+ },
+ "ka": {
+ "code": "ka",
+ "name": "Georgian"
+ },
+ "gu": {
+ "code": "gu",
+ "name": "Gujarati"
+ },
+ "he": {
+ "code": "he",
+ "name": "Hebrew"
+ },
+ "is": {
+ "code": "is",
+ "name": "Icelandic"
+ },
+ "ga": {
+ "code": "ga",
+ "name": "Irish"
+ },
+ "dyo": {
+ "code": "dyo",
+ "name": "Jola-Fonyi"
+ },
+ "kea": {
+ "code": "kea",
+ "name": "Kabuverdianu"
+ },
+ "kab": {
+ "code": "kab",
+ "name": "Kabyle"
+ },
+ "kl": {
+ "code": "kl",
+ "name": "Kalaallisut"
+ },
+ "kln": {
+ "code": "kln",
+ "name": "Kalenjin"
+ },
+ "kam": {
+ "code": "kam",
+ "name": "Kamba"
+ },
+ "kn": {
+ "code": "kn",
+ "name": "Kannada"
+ },
+ "ks": {
+ "code": "ks",
+ "name": "Kashmiri"
+ },
+ "kk": {
+ "code": "kk",
+ "name": "Kazakh"
+ },
+ "fa": {
+ "code": "fa",
+ "name": "Kiajemi"
+ },
+ "ak": {
+ "code": "ak",
+ "name": "Kiakan"
+ },
+ "am": {
+ "code": "am",
+ "name": "Kiamhari"
+ },
+ "ar": {
+ "code": "ar",
+ "name": "Kiarabu"
+ },
+ "bn": {
+ "code": "bn",
+ "name": "Kibangla"
+ },
+ "be": {
+ "code": "be",
+ "name": "Kibelarusi"
+ },
+ "bg": {
+ "code": "bg",
+ "name": "Kibulgaria"
+ },
+ "my": {
+ "code": "my",
+ "name": "Kiburma"
+ },
+ "cs": {
+ "code": "cs",
+ "name": "Kichecki"
+ },
+ "zh": {
+ "code": "zh",
+ "name": "Kichina"
+ },
+ "fr": {
+ "code": "fr",
+ "name": "Kifaransa"
+ },
+ "el": {
+ "code": "el",
+ "name": "Kigiriki"
+ },
+ "ha": {
+ "code": "ha",
+ "name": "Kihausa"
+ },
+ "hi": {
+ "code": "hi",
+ "name": "Kihindi"
+ },
+ "es": {
+ "code": "es",
+ "name": "Kihispania"
+ },
+ "nl": {
+ "code": "nl",
+ "name": "Kiholanzi"
+ },
+ "hu": {
+ "code": "hu",
+ "name": "Kihungari"
+ },
+ "id": {
+ "code": "id",
+ "name": "Kiindonesia"
+ },
+ "it": {
+ "code": "it",
+ "name": "Kiitaliano"
+ },
+ "ja": {
+ "code": "ja",
+ "name": "Kijapani"
+ },
+ "de": {
+ "code": "de",
+ "name": "Kijerumani"
+ },
+ "km": {
+ "code": "km",
+ "name": "Kikambodia"
+ },
+ "ko": {
+ "code": "ko",
+ "name": "Kikorea"
+ },
+ "ki": {
+ "code": "ki",
+ "name": "Kikuyu"
+ },
+ "ms": {
+ "code": "ms",
+ "name": "Kimalesia"
+ },
+ "ne": {
+ "code": "ne",
+ "name": "Kinepali"
+ },
+ "en": {
+ "code": "en",
+ "name": "Kingereza"
+ },
+ "pl": {
+ "code": "pl",
+ "name": "Kipolandi"
+ },
+ "pa": {
+ "code": "pa",
+ "name": "Kipunjabi"
+ },
+ "pt": {
+ "code": "pt",
+ "name": "Kireno"
+ },
+ "ro": {
+ "code": "ro",
+ "name": "Kiromania"
+ },
+ "ru": {
+ "code": "ru",
+ "name": "Kirusi"
+ },
+ "so": {
+ "code": "so",
+ "name": "Kisomali"
+ },
+ "sv": {
+ "code": "sv",
+ "name": "Kiswidi"
+ },
+ "th": {
+ "code": "th",
+ "name": "Kitailandi"
+ },
+ "ta": {
+ "code": "ta",
+ "name": "Kitamil"
+ },
+ "tr": {
+ "code": "tr",
+ "name": "Kituruki"
+ },
+ "uk": {
+ "code": "uk",
+ "name": "Kiukrania"
+ },
+ "ur": {
+ "code": "ur",
+ "name": "Kiurdu"
+ },
+ "vi": {
+ "code": "vi",
+ "name": "Kivietinamu"
+ },
+ "yo": {
+ "code": "yo",
+ "name": "Kiyoruba"
+ },
+ "zu": {
+ "code": "zu",
+ "name": "Kizulu"
+ },
+ "khq": {
+ "code": "khq",
+ "name": "Koyra Chiini"
+ },
+ "ses": {
+ "code": "ses",
+ "name": "Koyraboro Senni"
+ },
+ "nmg": {
+ "code": "nmg",
+ "name": "Kwasio"
+ },
+ "ky": {
+ "code": "ky",
+ "name": "Kyrgyz"
+ },
+ "lag": {
+ "code": "lag",
+ "name": "Langi"
+ },
+ "lo": {
+ "code": "lo",
+ "name": "Lao"
+ },
+ "lv": {
+ "code": "lv",
+ "name": "Latvian"
+ },
+ "ln": {
+ "code": "ln",
+ "name": "Lingala"
+ },
+ "lt": {
+ "code": "lt",
+ "name": "Lithuanian"
+ },
+ "dsb": {
+ "code": "dsb",
+ "name": "Lower Sorbian"
+ },
+ "lu": {
+ "code": "lu",
+ "name": "Luba-Katanga"
+ },
+ "luo": {
+ "code": "luo",
+ "name": "Luo"
+ },
+ "lb": {
+ "code": "lb",
+ "name": "Luxembourgish"
+ },
+ "luy": {
+ "code": "luy",
+ "name": "Luyia"
+ },
+ "mk": {
+ "code": "mk",
+ "name": "Macedonian"
+ },
+ "jmc": {
+ "code": "jmc",
+ "name": "Machame"
+ },
+ "mgh": {
+ "code": "mgh",
+ "name": "Makhuwa-Meetto"
+ },
+ "kde": {
+ "code": "kde",
+ "name": "Makonde"
+ },
+ "mg": {
+ "code": "mg",
+ "name": "Malagasy"
+ },
+ "ml": {
+ "code": "ml",
+ "name": "Malayalam"
+ },
+ "mt": {
+ "code": "mt",
+ "name": "Maltese"
+ },
+ "mr": {
+ "code": "mr",
+ "name": "Marathi"
+ },
+ "mas": {
+ "code": "mas",
+ "name": "Masai"
+ },
+ "mer": {
+ "code": "mer",
+ "name": "Meru"
+ },
+ "mn": {
+ "code": "mn",
+ "name": "Mongolian"
+ },
+ "mfe": {
+ "code": "mfe",
+ "name": "Morisyen"
+ },
+ "mua": {
+ "code": "mua",
+ "name": "Mundang"
+ },
+ "naq": {
+ "code": "naq",
+ "name": "Nama"
+ },
+ "jgo": {
+ "code": "jgo",
+ "name": "Ngomba"
+ },
+ "nl-BE": {
+ "code": "nl-BE",
+ "name": "nl_BE"
+ },
+ "nd": {
+ "code": "nd",
+ "name": "North Ndebele"
+ },
+ "se": {
+ "code": "se",
+ "name": "Northern Sami"
+ },
+ "nb": {
+ "code": "nb",
+ "name": "Norwegian Bokmål"
+ },
+ "nn": {
+ "code": "nn",
+ "name": "Norwegian Nynorsk"
+ },
+ "nus": {
+ "code": "nus",
+ "name": "Nuer"
+ },
+ "nyn": {
+ "code": "nyn",
+ "name": "Nyankole"
+ },
+ "or": {
+ "code": "or",
+ "name": "Oriya"
+ },
+ "ps": {
+ "code": "ps",
+ "name": "Pashto"
+ },
+ "pt-BR": {
+ "code": "pt-BR",
+ "name": "pt_BR"
+ },
+ "pt-PT": {
+ "code": "pt-PT",
+ "name": "pt_PT"
+ },
+ "ro-MD": {
+ "code": "ro-MD",
+ "name": "ro_MD"
+ },
+ "rm": {
+ "code": "rm",
+ "name": "Romansh"
+ },
+ "rof": {
+ "code": "rof",
+ "name": "Rombo"
+ },
+ "rn": {
+ "code": "rn",
+ "name": "Rundi"
+ },
+ "rwk": {
+ "code": "rwk",
+ "name": "Rwa"
+ },
+ "saq": {
+ "code": "saq",
+ "name": "Samburu"
+ },
+ "sg": {
+ "code": "sg",
+ "name": "Sango"
+ },
+ "sbp": {
+ "code": "sbp",
+ "name": "Sangu"
+ },
+ "gd": {
+ "code": "gd",
+ "name": "Scottish Gaelic"
+ },
+ "seh": {
+ "code": "seh",
+ "name": "Sena"
+ },
+ "sr": {
+ "code": "sr",
+ "name": "Serbian"
+ },
+ "ksb": {
+ "code": "ksb",
+ "name": "Shambala"
+ },
+ "sn": {
+ "code": "sn",
+ "name": "Shona"
+ },
+ "si": {
+ "code": "si",
+ "name": "Sinhala"
+ },
+ "sk": {
+ "code": "sk",
+ "name": "Slovak"
+ },
+ "sl": {
+ "code": "sl",
+ "name": "Slovenian"
+ },
+ "xog": {
+ "code": "xog",
+ "name": "Soga"
+ },
+ "zgh": {
+ "code": "zgh",
+ "name": "Standard Moroccan Tamazight"
+ },
+ "sw": {
+ "code": "sw",
+ "name": "Swahili"
+ },
+ "gsw": {
+ "code": "gsw",
+ "name": "Swiss German"
+ },
+ "shi": {
+ "code": "shi",
+ "name": "Tachelhit"
+ },
+ "dav": {
+ "code": "dav",
+ "name": "Taita"
+ },
+ "twq": {
+ "code": "twq",
+ "name": "Tasawaq"
+ },
+ "te": {
+ "code": "te",
+ "name": "Telugu"
+ },
+ "teo": {
+ "code": "teo",
+ "name": "Teso"
+ },
+ "bo": {
+ "code": "bo",
+ "name": "Tibetan"
+ },
+ "ti": {
+ "code": "ti",
+ "name": "Tigrinya"
+ },
+ "to": {
+ "code": "to",
+ "name": "Tongan"
+ },
+ "hsb": {
+ "code": "hsb",
+ "name": "Upper Sorbian"
+ },
+ "ug": {
+ "code": "ug",
+ "name": "Uyghur"
+ },
+ "uz": {
+ "code": "uz",
+ "name": "Uzbek"
+ },
+ "vai": {
+ "code": "vai",
+ "name": "Vai"
+ },
+ "vun": {
+ "code": "vun",
+ "name": "Vunjo"
+ },
+ "wae": {
+ "code": "wae",
+ "name": "Walser"
+ },
+ "cy": {
+ "code": "cy",
+ "name": "Welsh"
+ },
+ "fy": {
+ "code": "fy",
+ "name": "Western Frisian"
+ },
+ "yav": {
+ "code": "yav",
+ "name": "Yangben"
+ },
+ "dje": {
+ "code": "dje",
+ "name": "Zarma"
+ },
+ "zh-Hans": {
+ "code": "zh-Hans",
+ "name": "zh_Hans"
+ },
+ "zh-Hant": {
+ "code": "zh-Hant",
+ "name": "zh_Hant"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/language/ha.json b/library/intl/resources/language/ha.json
new file mode 100644
index 000000000..3d16f3254
--- /dev/null
+++ b/library/intl/resources/language/ha.json
@@ -0,0 +1,738 @@
+{
+ "af": {
+ "code": "af",
+ "name": "Afirkanci"
+ },
+ "agq": {
+ "code": "agq",
+ "name": "Aghem"
+ },
+ "ak": {
+ "code": "ak",
+ "name": "Akan"
+ },
+ "am": {
+ "code": "am",
+ "name": "Amharik"
+ },
+ "ar-001": {
+ "code": "ar-001",
+ "name": "ar_001"
+ },
+ "hy": {
+ "code": "hy",
+ "name": "Armeniyanci"
+ },
+ "ast": {
+ "code": "ast",
+ "name": "Asturian"
+ },
+ "asa": {
+ "code": "asa",
+ "name": "Asu"
+ },
+ "az": {
+ "code": "az",
+ "name": "Azerbaijanci"
+ },
+ "ksf": {
+ "code": "ksf",
+ "name": "Bafia"
+ },
+ "gl": {
+ "code": "gl",
+ "name": "Bagalike"
+ },
+ "bm": {
+ "code": "bm",
+ "name": "Bambara"
+ },
+ "bas": {
+ "code": "bas",
+ "name": "Basaa"
+ },
+ "sl": {
+ "code": "sl",
+ "name": "Basulabe"
+ },
+ "sk": {
+ "code": "sk",
+ "name": "Basulake"
+ },
+ "be": {
+ "code": "be",
+ "name": "Belarusanci"
+ },
+ "bez": {
+ "code": "bez",
+ "name": "Bena"
+ },
+ "bn": {
+ "code": "bn",
+ "name": "Bengali"
+ },
+ "brx": {
+ "code": "brx",
+ "name": "Bodo"
+ },
+ "bs": {
+ "code": "bs",
+ "name": "Bosniyanci"
+ },
+ "bg": {
+ "code": "bg",
+ "name": "Bulgaranci"
+ },
+ "br": {
+ "code": "br",
+ "name": "Buretananci"
+ },
+ "my": {
+ "code": "my",
+ "name": "Burmanci"
+ },
+ "tzm": {
+ "code": "tzm",
+ "name": "Central Atlas Tamazight"
+ },
+ "chr": {
+ "code": "chr",
+ "name": "Cherokee"
+ },
+ "cgg": {
+ "code": "cgg",
+ "name": "Chiga"
+ },
+ "ksh": {
+ "code": "ksh",
+ "name": "Colognian"
+ },
+ "swc": {
+ "code": "swc",
+ "name": "Congo Swahili"
+ },
+ "ga": {
+ "code": "ga",
+ "name": "Dan Ailan"
+ },
+ "fil": {
+ "code": "fil",
+ "name": "Dan Filifin"
+ },
+ "mk": {
+ "code": "mk",
+ "name": "Dan Masedoniya"
+ },
+ "eu": {
+ "code": "eu",
+ "name": "Dan\/ʼYar Kabilar Bas"
+ },
+ "kn": {
+ "code": "kn",
+ "name": "Dan\/ʼYar Kabilar Kannada"
+ },
+ "da": {
+ "code": "da",
+ "name": "Danish"
+ },
+ "de-AT": {
+ "code": "de-AT",
+ "name": "de_AT"
+ },
+ "de-CH": {
+ "code": "de-CH",
+ "name": "de_CH"
+ },
+ "dz": {
+ "code": "dz",
+ "name": "Dzongkha"
+ },
+ "sq": {
+ "code": "sq",
+ "name": "Dʼan\/ʼYar Kabilar Albaniya"
+ },
+ "eo": {
+ "code": "eo",
+ "name": "Dʼan\/ʼYar Kabilar Andalus"
+ },
+ "te": {
+ "code": "te",
+ "name": "Dʼan\/ʼYar Kabilar Telug"
+ },
+ "ebu": {
+ "code": "ebu",
+ "name": "Embu"
+ },
+ "en-AU": {
+ "code": "en-AU",
+ "name": "en_AU"
+ },
+ "en-CA": {
+ "code": "en-CA",
+ "name": "en_CA"
+ },
+ "en-GB": {
+ "code": "en-GB",
+ "name": "en_GB"
+ },
+ "en-US": {
+ "code": "en-US",
+ "name": "en_US"
+ },
+ "es-ES": {
+ "code": "es-ES",
+ "name": "es_ES"
+ },
+ "es-MX": {
+ "code": "es-MX",
+ "name": "es_MX"
+ },
+ "ee": {
+ "code": "ee",
+ "name": "Ewe"
+ },
+ "ewo": {
+ "code": "ewo",
+ "name": "Ewondo"
+ },
+ "fr": {
+ "code": "fr",
+ "name": "Faransanci"
+ },
+ "fo": {
+ "code": "fo",
+ "name": "Faroese"
+ },
+ "pt-BR": {
+ "code": "pt-BR",
+ "name": "Fotigis (Burazil)"
+ },
+ "fr-CA": {
+ "code": "fr-CA",
+ "name": "fr_CA"
+ },
+ "fr-CH": {
+ "code": "fr-CH",
+ "name": "fr_CH"
+ },
+ "fur": {
+ "code": "fur",
+ "name": "Friulian"
+ },
+ "ff": {
+ "code": "ff",
+ "name": "Fulah"
+ },
+ "lg": {
+ "code": "lg",
+ "name": "Ganda"
+ },
+ "el": {
+ "code": "el",
+ "name": "Girkanci"
+ },
+ "gu": {
+ "code": "gu",
+ "name": "Gujarati"
+ },
+ "guz": {
+ "code": "guz",
+ "name": "Gusii"
+ },
+ "vi": {
+ "code": "vi",
+ "name": "Harshen Biyetinam"
+ },
+ "cs": {
+ "code": "cs",
+ "name": "Harshen Cak"
+ },
+ "hi": {
+ "code": "hi",
+ "name": "Harshen Hindi"
+ },
+ "hu": {
+ "code": "hu",
+ "name": "Harshen Hungari"
+ },
+ "id": {
+ "code": "id",
+ "name": "Harshen Indunusiya"
+ },
+ "km": {
+ "code": "km",
+ "name": "Harshen Kimar"
+ },
+ "ko": {
+ "code": "ko",
+ "name": "Harshen Koreya"
+ },
+ "ms": {
+ "code": "ms",
+ "name": "Harshen Malai"
+ },
+ "mt": {
+ "code": "mt",
+ "name": "Harshen Maltis"
+ },
+ "pl": {
+ "code": "pl",
+ "name": "Harshen Polan"
+ },
+ "pt": {
+ "code": "pt",
+ "name": "Harshen Portugal"
+ },
+ "zh": {
+ "code": "zh",
+ "name": "Harshen Sin"
+ },
+ "sw": {
+ "code": "sw",
+ "name": "Harshen Suwahili"
+ },
+ "sv": {
+ "code": "sv",
+ "name": "Harshen Suwedan"
+ },
+ "tr": {
+ "code": "tr",
+ "name": "Harshen Turkiyya"
+ },
+ "ur": {
+ "code": "ur",
+ "name": "Harshen Urdu"
+ },
+ "uk": {
+ "code": "uk",
+ "name": "Harshen Yukuren"
+ },
+ "zu": {
+ "code": "zu",
+ "name": "Harshen Zulu"
+ },
+ "ha": {
+ "code": "ha",
+ "name": "Hausa"
+ },
+ "nl": {
+ "code": "nl",
+ "name": "Holanci"
+ },
+ "es": {
+ "code": "es",
+ "name": "Ispaniyanci"
+ },
+ "et": {
+ "code": "et",
+ "name": "Istoniyanci"
+ },
+ "it": {
+ "code": "it",
+ "name": "Italiyanci"
+ },
+ "de": {
+ "code": "de",
+ "name": "Jamusanci"
+ },
+ "ja": {
+ "code": "ja",
+ "name": "Japananci"
+ },
+ "ka": {
+ "code": "ka",
+ "name": "Jojiyanci"
+ },
+ "dyo": {
+ "code": "dyo",
+ "name": "Jola-Fonyi"
+ },
+ "ml": {
+ "code": "ml",
+ "name": "Kabilar Maleyalam"
+ },
+ "cy": {
+ "code": "cy",
+ "name": "Kabilar Welsh"
+ },
+ "kea": {
+ "code": "kea",
+ "name": "Kabuverdianu"
+ },
+ "kab": {
+ "code": "kab",
+ "name": "Kabyle"
+ },
+ "kl": {
+ "code": "kl",
+ "name": "Kalaallisut"
+ },
+ "kln": {
+ "code": "kln",
+ "name": "Kalenjin"
+ },
+ "kam": {
+ "code": "kam",
+ "name": "Kamba"
+ },
+ "ks": {
+ "code": "ks",
+ "name": "Kashmiri"
+ },
+ "ca": {
+ "code": "ca",
+ "name": "Kataloniyanci"
+ },
+ "kk": {
+ "code": "kk",
+ "name": "Kazakh"
+ },
+ "ki": {
+ "code": "ki",
+ "name": "Kikuyu"
+ },
+ "ky": {
+ "code": "ky",
+ "name": "Kirgizanci"
+ },
+ "khq": {
+ "code": "khq",
+ "name": "Koyra Chiini"
+ },
+ "ses": {
+ "code": "ses",
+ "name": "Koyraboro Senni"
+ },
+ "hr": {
+ "code": "hr",
+ "name": "Kuroshiyan"
+ },
+ "nmg": {
+ "code": "nmg",
+ "name": "Kwasio"
+ },
+ "fy": {
+ "code": "fy",
+ "name": "Kʼabilan Firsi"
+ },
+ "mr": {
+ "code": "mr",
+ "name": "Kʼabilan Marathi"
+ },
+ "gd": {
+ "code": "gd",
+ "name": "Kʼabilan Scots Gaelic"
+ },
+ "lag": {
+ "code": "lag",
+ "name": "Langi"
+ },
+ "lo": {
+ "code": "lo",
+ "name": "Laothian"
+ },
+ "ar": {
+ "code": "ar",
+ "name": "Larabci"
+ },
+ "lv": {
+ "code": "lv",
+ "name": "Latbiyanci"
+ },
+ "ln": {
+ "code": "ln",
+ "name": "Lingala"
+ },
+ "lt": {
+ "code": "lt",
+ "name": "Lituweniyanci"
+ },
+ "dsb": {
+ "code": "dsb",
+ "name": "Lower Sorbian"
+ },
+ "lu": {
+ "code": "lu",
+ "name": "Luba-Katanga"
+ },
+ "luo": {
+ "code": "luo",
+ "name": "Luo"
+ },
+ "lb": {
+ "code": "lb",
+ "name": "Luxembourgish"
+ },
+ "luy": {
+ "code": "luy",
+ "name": "Luyia"
+ },
+ "jmc": {
+ "code": "jmc",
+ "name": "Machame"
+ },
+ "mgh": {
+ "code": "mgh",
+ "name": "Makhuwa-Meetto"
+ },
+ "kde": {
+ "code": "kde",
+ "name": "Makonde"
+ },
+ "mg": {
+ "code": "mg",
+ "name": "Malagasy"
+ },
+ "mas": {
+ "code": "mas",
+ "name": "Masai"
+ },
+ "mer": {
+ "code": "mer",
+ "name": "Meru"
+ },
+ "mn": {
+ "code": "mn",
+ "name": "Mongolian"
+ },
+ "mfe": {
+ "code": "mfe",
+ "name": "Morisyen"
+ },
+ "mua": {
+ "code": "mua",
+ "name": "Mundang"
+ },
+ "naq": {
+ "code": "naq",
+ "name": "Nama"
+ },
+ "ne": {
+ "code": "ne",
+ "name": "Nepali"
+ },
+ "jgo": {
+ "code": "jgo",
+ "name": "Ngomba"
+ },
+ "nl-BE": {
+ "code": "nl-BE",
+ "name": "nl_BE"
+ },
+ "nd": {
+ "code": "nd",
+ "name": "North Ndebele"
+ },
+ "se": {
+ "code": "se",
+ "name": "Northern Sami"
+ },
+ "nb": {
+ "code": "nb",
+ "name": "Norwegian Bokmål"
+ },
+ "nus": {
+ "code": "nus",
+ "name": "Nuer"
+ },
+ "nyn": {
+ "code": "nyn",
+ "name": "Nyankole"
+ },
+ "or": {
+ "code": "or",
+ "name": "Oriyanci"
+ },
+ "fa": {
+ "code": "fa",
+ "name": "Parisanci"
+ },
+ "ps": {
+ "code": "ps",
+ "name": "Pashtanci"
+ },
+ "pa": {
+ "code": "pa",
+ "name": "Punjabi"
+ },
+ "ru": {
+ "code": "ru",
+ "name": "Rashanci"
+ },
+ "ro-MD": {
+ "code": "ro-MD",
+ "name": "ro_MD"
+ },
+ "ro": {
+ "code": "ro",
+ "name": "Romaniyanci"
+ },
+ "rm": {
+ "code": "rm",
+ "name": "Romansh"
+ },
+ "rof": {
+ "code": "rof",
+ "name": "Rombo"
+ },
+ "rn": {
+ "code": "rn",
+ "name": "Rundi"
+ },
+ "rwk": {
+ "code": "rwk",
+ "name": "Rwa"
+ },
+ "sr": {
+ "code": "sr",
+ "name": "Sabiyan"
+ },
+ "saq": {
+ "code": "saq",
+ "name": "Samburu"
+ },
+ "sg": {
+ "code": "sg",
+ "name": "Sango"
+ },
+ "sbp": {
+ "code": "sbp",
+ "name": "Sangu"
+ },
+ "seh": {
+ "code": "seh",
+ "name": "Sena"
+ },
+ "si": {
+ "code": "si",
+ "name": "Sinhalanci"
+ },
+ "xog": {
+ "code": "xog",
+ "name": "Soga"
+ },
+ "so": {
+ "code": "so",
+ "name": "Somali"
+ },
+ "zgh": {
+ "code": "zgh",
+ "name": "Standard Moroccan Tamazight"
+ },
+ "gsw": {
+ "code": "gsw",
+ "name": "Swiss German"
+ },
+ "ksb": {
+ "code": "ksb",
+ "name": "Shambala"
+ },
+ "sn": {
+ "code": "sn",
+ "name": "Shona"
+ },
+ "shi": {
+ "code": "shi",
+ "name": "Tachelhit"
+ },
+ "dav": {
+ "code": "dav",
+ "name": "Taita"
+ },
+ "ta": {
+ "code": "ta",
+ "name": "Tamil"
+ },
+ "twq": {
+ "code": "twq",
+ "name": "Tasawaq"
+ },
+ "teo": {
+ "code": "teo",
+ "name": "Teso"
+ },
+ "th": {
+ "code": "th",
+ "name": "Thai"
+ },
+ "bo": {
+ "code": "bo",
+ "name": "Tibetan"
+ },
+ "ti": {
+ "code": "ti",
+ "name": "Tigriyanci"
+ },
+ "to": {
+ "code": "to",
+ "name": "Tongan"
+ },
+ "en": {
+ "code": "en",
+ "name": "Turanci"
+ },
+ "ug": {
+ "code": "ug",
+ "name": "Ugiranci"
+ },
+ "hsb": {
+ "code": "hsb",
+ "name": "Upper Sorbian"
+ },
+ "uz": {
+ "code": "uz",
+ "name": "Uzbek"
+ },
+ "vai": {
+ "code": "vai",
+ "name": "Vai"
+ },
+ "vun": {
+ "code": "vun",
+ "name": "Vunjo"
+ },
+ "wae": {
+ "code": "wae",
+ "name": "Walser"
+ },
+ "he": {
+ "code": "he",
+ "name": "Yahudanci"
+ },
+ "yav": {
+ "code": "yav",
+ "name": "Yangben"
+ },
+ "yo": {
+ "code": "yo",
+ "name": "Yarbanci"
+ },
+ "nn": {
+ "code": "nn",
+ "name": "Yaren Kasar Norway"
+ },
+ "pt-PT": {
+ "code": "pt-PT",
+ "name": "Yaren Kasar Portugal"
+ },
+ "fi": {
+ "code": "fi",
+ "name": "Yaren mutanen Finland"
+ },
+ "is": {
+ "code": "is",
+ "name": "Yaren mutanen Iceland"
+ },
+ "dje": {
+ "code": "dje",
+ "name": "Zarma"
+ },
+ "zh-Hans": {
+ "code": "zh-Hans",
+ "name": "zh_Hans"
+ },
+ "zh-Hant": {
+ "code": "zh-Hant",
+ "name": "zh_Hant"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/language/he.json b/library/intl/resources/language/he.json
new file mode 100644
index 000000000..c6769757f
--- /dev/null
+++ b/library/intl/resources/language/he.json
@@ -0,0 +1,738 @@
+{
+ "agq": {
+ "code": "agq",
+ "name": "××”×™×™×"
+ },
+ "ee": {
+ "code": "ee",
+ "name": "×ווה"
+ },
+ "ewo": {
+ "code": "ewo",
+ "name": "×וונדו"
+ },
+ "uz": {
+ "code": "uz",
+ "name": "×וזבקית"
+ },
+ "ug": {
+ "code": "ug",
+ "name": "×ויגהור"
+ },
+ "uk": {
+ "code": "uk",
+ "name": "×וקר×ינית"
+ },
+ "ur": {
+ "code": "ur",
+ "name": "×ורדו"
+ },
+ "or": {
+ "code": "or",
+ "name": "×וריה"
+ },
+ "az": {
+ "code": "az",
+ "name": "×זרית"
+ },
+ "it": {
+ "code": "it",
+ "name": "×יטלקית"
+ },
+ "id": {
+ "code": "id",
+ "name": "×ינדונזית"
+ },
+ "is": {
+ "code": "is",
+ "name": "×יסלנדית"
+ },
+ "ga": {
+ "code": "ga",
+ "name": "×ירית"
+ },
+ "sq": {
+ "code": "sq",
+ "name": "×לבנית"
+ },
+ "ebu": {
+ "code": "ebu",
+ "name": "×מבו"
+ },
+ "am": {
+ "code": "am",
+ "name": "×מהרית"
+ },
+ "en": {
+ "code": "en",
+ "name": "×נגלית"
+ },
+ "en-AU": {
+ "code": "en-AU",
+ "name": "×נגלית ×וסטרלית"
+ },
+ "en-US": {
+ "code": "en-US",
+ "name": "×נגלית ×מריק×ית"
+ },
+ "en-GB": {
+ "code": "en-GB",
+ "name": "×נגלית בריטית"
+ },
+ "en-CA": {
+ "code": "en-CA",
+ "name": "×נגלית קנדית"
+ },
+ "asa": {
+ "code": "asa",
+ "name": "×סו"
+ },
+ "et": {
+ "code": "et",
+ "name": "×סטונית"
+ },
+ "ast": {
+ "code": "ast",
+ "name": "×סטורית"
+ },
+ "eo": {
+ "code": "eo",
+ "name": "×ספרנטו"
+ },
+ "af": {
+ "code": "af",
+ "name": "×פריק×נס"
+ },
+ "ak": {
+ "code": "ak",
+ "name": "×ק×ן"
+ },
+ "hy": {
+ "code": "hy",
+ "name": "×רמנית"
+ },
+ "ksf": {
+ "code": "ksf",
+ "name": "ב×פיה"
+ },
+ "brx": {
+ "code": "brx",
+ "name": "בודו"
+ },
+ "bg": {
+ "code": "bg",
+ "name": "בולגרית"
+ },
+ "bs": {
+ "code": "bs",
+ "name": "בוסנית"
+ },
+ "my": {
+ "code": "my",
+ "name": "בורמזית"
+ },
+ "be": {
+ "code": "be",
+ "name": "בל×רוסית"
+ },
+ "bm": {
+ "code": "bm",
+ "name": "במב×רה"
+ },
+ "bn": {
+ "code": "bn",
+ "name": "בנגלית"
+ },
+ "bez": {
+ "code": "bez",
+ "name": "בנה"
+ },
+ "bas": {
+ "code": "bas",
+ "name": "בס××"
+ },
+ "eu": {
+ "code": "eu",
+ "name": "בסקית"
+ },
+ "br": {
+ "code": "br",
+ "name": "ברטונית"
+ },
+ "ka": {
+ "code": "ka",
+ "name": "×’×ורגית"
+ },
+ "gd": {
+ "code": "gd",
+ "name": "×’×לית סקוטית"
+ },
+ "lg": {
+ "code": "lg",
+ "name": "×’×נדה"
+ },
+ "gu": {
+ "code": "gu",
+ "name": "גוג׳ר×טית"
+ },
+ "guz": {
+ "code": "guz",
+ "name": "גוסי"
+ },
+ "gl": {
+ "code": "gl",
+ "name": "גליצי×נית"
+ },
+ "de": {
+ "code": "de",
+ "name": "גרמנית"
+ },
+ "de-AT": {
+ "code": "de-AT",
+ "name": "גרמנית ×וסטרית"
+ },
+ "gsw": {
+ "code": "gsw",
+ "name": "גרמנית שוויצרית"
+ },
+ "de-CH": {
+ "code": "de-CH",
+ "name": "גרמנית שוויצרית (גבוהה)"
+ },
+ "dz": {
+ "code": "dz",
+ "name": "דזונקה"
+ },
+ "da": {
+ "code": "da",
+ "name": "דנית"
+ },
+ "ha": {
+ "code": "ha",
+ "name": "×”×וסה"
+ },
+ "dyo": {
+ "code": "dyo",
+ "name": "הולה-פוניי"
+ },
+ "nl": {
+ "code": "nl",
+ "name": "הולנדית"
+ },
+ "hu": {
+ "code": "hu",
+ "name": "הונגרית"
+ },
+ "hi": {
+ "code": "hi",
+ "name": "הינדי"
+ },
+ "vai": {
+ "code": "vai",
+ "name": "ו××™"
+ },
+ "wae": {
+ "code": "wae",
+ "name": "וו×לסר"
+ },
+ "vun": {
+ "code": "vun",
+ "name": "וונג׳ו"
+ },
+ "vi": {
+ "code": "vi",
+ "name": "וי×טנמית"
+ },
+ "cy": {
+ "code": "cy",
+ "name": "ולשית"
+ },
+ "dje": {
+ "code": "dje",
+ "name": "×–×רמה"
+ },
+ "zu": {
+ "code": "zu",
+ "name": "זולו"
+ },
+ "dav": {
+ "code": "dav",
+ "name": "ט×יטה"
+ },
+ "to": {
+ "code": "to",
+ "name": "טונגן"
+ },
+ "tr": {
+ "code": "tr",
+ "name": "טורקית"
+ },
+ "bo": {
+ "code": "bo",
+ "name": "טיבטית"
+ },
+ "ti": {
+ "code": "ti",
+ "name": "טיגרינ×ית"
+ },
+ "te": {
+ "code": "te",
+ "name": "טלוגו"
+ },
+ "tzm": {
+ "code": "tzm",
+ "name": "טמזייט של מרכז מרוקו"
+ },
+ "ta": {
+ "code": "ta",
+ "name": "טמילית"
+ },
+ "teo": {
+ "code": "teo",
+ "name": "טסו"
+ },
+ "twq": {
+ "code": "twq",
+ "name": "טסוו×ק"
+ },
+ "shi": {
+ "code": "shi",
+ "name": "טצ׳להיט"
+ },
+ "yav": {
+ "code": "yav",
+ "name": "×™×נגבן"
+ },
+ "el": {
+ "code": "el",
+ "name": "יוונית"
+ },
+ "yo": {
+ "code": "yo",
+ "name": "יורובה"
+ },
+ "ja": {
+ "code": "ja",
+ "name": "יפנית"
+ },
+ "lo": {
+ "code": "lo",
+ "name": "ל×ית"
+ },
+ "lag": {
+ "code": "lag",
+ "name": "ל×× ×’×™"
+ },
+ "se": {
+ "code": "se",
+ "name": "ל×פית צפונית"
+ },
+ "luo": {
+ "code": "luo",
+ "name": "לו×ו"
+ },
+ "lu": {
+ "code": "lu",
+ "name": "לובה-קטנגה"
+ },
+ "luy": {
+ "code": "luy",
+ "name": "לויה"
+ },
+ "lb": {
+ "code": "lb",
+ "name": "לוקסמבורגית"
+ },
+ "lv": {
+ "code": "lv",
+ "name": "לטבית"
+ },
+ "lt": {
+ "code": "lt",
+ "name": "ליט×ית"
+ },
+ "ln": {
+ "code": "ln",
+ "name": "לינגלה"
+ },
+ "mas": {
+ "code": "mas",
+ "name": "מ×ס×ית"
+ },
+ "ro-MD": {
+ "code": "ro-MD",
+ "name": "מולדבית"
+ },
+ "mn": {
+ "code": "mn",
+ "name": "מונגולית"
+ },
+ "mua": {
+ "code": "mua",
+ "name": "מונד×× ×’"
+ },
+ "mfe": {
+ "code": "mfe",
+ "name": "מוריסיין"
+ },
+ "ml": {
+ "code": "ml",
+ "name": "מל××™×ל×"
+ },
+ "ms": {
+ "code": "ms",
+ "name": "מל×ית"
+ },
+ "mg": {
+ "code": "mg",
+ "name": "מלגשית"
+ },
+ "mt": {
+ "code": "mt",
+ "name": "מלטית"
+ },
+ "jmc": {
+ "code": "jmc",
+ "name": "מצ׳×מה"
+ },
+ "mk": {
+ "code": "mk",
+ "name": "מקדונית"
+ },
+ "mgh": {
+ "code": "mgh",
+ "name": "מקו××”-מיטו"
+ },
+ "kde": {
+ "code": "kde",
+ "name": "מקונדה"
+ },
+ "mer": {
+ "code": "mer",
+ "name": "מרו"
+ },
+ "mr": {
+ "code": "mr",
+ "name": "מרטהי"
+ },
+ "naq": {
+ "code": "naq",
+ "name": "× ×מה"
+ },
+ "jgo": {
+ "code": "jgo",
+ "name": "נגומה"
+ },
+ "nus": {
+ "code": "nus",
+ "name": "נו×ר"
+ },
+ "nn": {
+ "code": "nn",
+ "name": "נורבגית חדשה"
+ },
+ "nb": {
+ "code": "nb",
+ "name": "â€× ×•×¨×‘גית ספרותית"
+ },
+ "nyn": {
+ "code": "nyn",
+ "name": "× ×™×נקולה"
+ },
+ "ne": {
+ "code": "ne",
+ "name": "נפ×לית"
+ },
+ "sbp": {
+ "code": "sbp",
+ "name": "ס×נגו"
+ },
+ "xog": {
+ "code": "xog",
+ "name": "סוגה"
+ },
+ "swc": {
+ "code": "swc",
+ "name": "סווהילי קונגולטזית"
+ },
+ "sw": {
+ "code": "sw",
+ "name": "סווהילית"
+ },
+ "so": {
+ "code": "so",
+ "name": "סומלית"
+ },
+ "hsb": {
+ "code": "hsb",
+ "name": "סורבית גבוהה"
+ },
+ "dsb": {
+ "code": "dsb",
+ "name": "סורבית נמוכה"
+ },
+ "si": {
+ "code": "si",
+ "name": "סינהלה"
+ },
+ "zh": {
+ "code": "zh",
+ "name": "סינית"
+ },
+ "zh-Hant": {
+ "code": "zh-Hant",
+ "name": "סינית מסורתית"
+ },
+ "zh-Hans": {
+ "code": "zh-Hans",
+ "name": "סינית מפושטת"
+ },
+ "sl": {
+ "code": "sl",
+ "name": "סלובנית"
+ },
+ "sk": {
+ "code": "sk",
+ "name": "סלובקית"
+ },
+ "saq": {
+ "code": "saq",
+ "name": "סמבורו"
+ },
+ "sg": {
+ "code": "sg",
+ "name": "סנגו"
+ },
+ "seh": {
+ "code": "seh",
+ "name": "סנה"
+ },
+ "es": {
+ "code": "es",
+ "name": "ספרדית"
+ },
+ "es-ES": {
+ "code": "es-ES",
+ "name": "ספרדית ×ירופ×ית"
+ },
+ "es-MX": {
+ "code": "es-MX",
+ "name": "ספרדית מקסיקנית"
+ },
+ "sr": {
+ "code": "sr",
+ "name": "סרבית"
+ },
+ "he": {
+ "code": "he",
+ "name": "עברית"
+ },
+ "ar": {
+ "code": "ar",
+ "name": "ערבית"
+ },
+ "ar-001": {
+ "code": "ar-001",
+ "name": "ערבית ספרותית"
+ },
+ "fo": {
+ "code": "fo",
+ "name": "פ×רו×זית"
+ },
+ "ps": {
+ "code": "ps",
+ "name": "פ×שטו"
+ },
+ "ff": {
+ "code": "ff",
+ "name": "פולה"
+ },
+ "pl": {
+ "code": "pl",
+ "name": "פולנית"
+ },
+ "pt": {
+ "code": "pt",
+ "name": "פורטוגלית"
+ },
+ "pt-PT": {
+ "code": "pt-PT",
+ "name": "פורטוגלית ×ירופ×ית"
+ },
+ "pt-BR": {
+ "code": "pt-BR",
+ "name": "פורטוגלית ברזיל×ית"
+ },
+ "fil": {
+ "code": "fil",
+ "name": "פיליפינית"
+ },
+ "fi": {
+ "code": "fi",
+ "name": "פינית"
+ },
+ "nl-BE": {
+ "code": "nl-BE",
+ "name": "פלמית"
+ },
+ "pa": {
+ "code": "pa",
+ "name": "פנג׳×בית"
+ },
+ "fur": {
+ "code": "fur",
+ "name": "פריולית"
+ },
+ "fy": {
+ "code": "fy",
+ "name": "פריזית"
+ },
+ "fa": {
+ "code": "fa",
+ "name": "פרסית"
+ },
+ "cgg": {
+ "code": "cgg",
+ "name": "צ׳יגה"
+ },
+ "cs": {
+ "code": "cs",
+ "name": "צ׳כית"
+ },
+ "chr": {
+ "code": "chr",
+ "name": "צ׳רוקי"
+ },
+ "nd": {
+ "code": "nd",
+ "name": "צפון נדבלה"
+ },
+ "fr": {
+ "code": "fr",
+ "name": "צרפתית"
+ },
+ "fr-CA": {
+ "code": "fr-CA",
+ "name": "צרפתית קנדית"
+ },
+ "fr-CH": {
+ "code": "fr-CH",
+ "name": "צרפתית שוויצרית"
+ },
+ "kea": {
+ "code": "kea",
+ "name": "ק×בוורדי×נו"
+ },
+ "kl": {
+ "code": "kl",
+ "name": "ק×ל×ליסוטית"
+ },
+ "kln": {
+ "code": "kln",
+ "name": "ק×לנג׳ין"
+ },
+ "kab": {
+ "code": "kab",
+ "name": "קבילה"
+ },
+ "nmg": {
+ "code": "nmg",
+ "name": "קוו×סיו"
+ },
+ "ses": {
+ "code": "ses",
+ "name": "קויר×בורו סני"
+ },
+ "khq": {
+ "code": "khq",
+ "name": "קוירה צ׳יני"
+ },
+ "ksh": {
+ "code": "ksh",
+ "name": "קולוני×ן"
+ },
+ "ko": {
+ "code": "ko",
+ "name": "קורי×נית"
+ },
+ "kk": {
+ "code": "kk",
+ "name": "קזחית"
+ },
+ "ca": {
+ "code": "ca",
+ "name": "קטל×נית"
+ },
+ "ki": {
+ "code": "ki",
+ "name": "קיקויו"
+ },
+ "ky": {
+ "code": "ky",
+ "name": "קירגיזית"
+ },
+ "rn": {
+ "code": "rn",
+ "name": "קירונדי"
+ },
+ "kam": {
+ "code": "kam",
+ "name": "קמבה"
+ },
+ "km": {
+ "code": "km",
+ "name": "קמרית"
+ },
+ "kn": {
+ "code": "kn",
+ "name": "קנ×דה"
+ },
+ "hr": {
+ "code": "hr",
+ "name": "קרו×טית"
+ },
+ "ks": {
+ "code": "ks",
+ "name": "קשמירית"
+ },
+ "rwk": {
+ "code": "rwk",
+ "name": "רוו×"
+ },
+ "rm": {
+ "code": "rm",
+ "name": "רומ×נש"
+ },
+ "rof": {
+ "code": "rof",
+ "name": "רומבו"
+ },
+ "ro": {
+ "code": "ro",
+ "name": "רומנית"
+ },
+ "ru": {
+ "code": "ru",
+ "name": "רוסית"
+ },
+ "sv": {
+ "code": "sv",
+ "name": "שוודית"
+ },
+ "sn": {
+ "code": "sn",
+ "name": "שונה"
+ },
+ "ksb": {
+ "code": "ksb",
+ "name": "שמב×לה"
+ },
+ "th": {
+ "code": "th",
+ "name": "ת×ית"
+ },
+ "zgh": {
+ "code": "zgh",
+ "name": "תמזיע׳ת מרוק×ית תקנית"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/language/hi.json b/library/intl/resources/language/hi.json
new file mode 100644
index 000000000..9145e2dff
--- /dev/null
+++ b/library/intl/resources/language/hi.json
@@ -0,0 +1,738 @@
+{
+ "ksh": {
+ "code": "ksh",
+ "name": "Colognian"
+ },
+ "wae": {
+ "code": "wae",
+ "name": "Walser"
+ },
+ "yav": {
+ "code": "yav",
+ "name": "Yangben"
+ },
+ "en": {
+ "code": "en",
+ "name": "अंगà¥à¤°à¥‡à¤œà¤¼à¥€"
+ },
+ "ak": {
+ "code": "ak",
+ "name": "अकन"
+ },
+ "agq": {
+ "code": "agq",
+ "name": "अगà¥à¤¹à¥‡à¤®"
+ },
+ "az": {
+ "code": "az",
+ "name": "अज़रबैजानी"
+ },
+ "af": {
+ "code": "af",
+ "name": "अफ़à¥à¤°à¥€à¤•à¥€"
+ },
+ "en-US": {
+ "code": "en-US",
+ "name": "अमेरिकी अंगà¥à¤°à¥‡à¤œà¤¼à¥€"
+ },
+ "am": {
+ "code": "am",
+ "name": "अमà¥à¤¹à¥‡à¤°à¥€"
+ },
+ "ar": {
+ "code": "ar",
+ "name": "अरबी"
+ },
+ "sq": {
+ "code": "sq",
+ "name": "अलà¥à¤¬à¤¾à¤¨à¤¿à¤¯à¤¾à¤ˆ"
+ },
+ "asa": {
+ "code": "asa",
+ "name": "असà¥"
+ },
+ "ast": {
+ "code": "ast",
+ "name": "असà¥à¤¤à¥à¤°à¤¿à¤¯à¤¨"
+ },
+ "ga": {
+ "code": "ga",
+ "name": "आइरिश"
+ },
+ "is": {
+ "code": "is",
+ "name": "आइसलैंडी"
+ },
+ "ar-001": {
+ "code": "ar-001",
+ "name": "आधà¥à¤¨à¤¿à¤• मानक अरबी"
+ },
+ "hy": {
+ "code": "hy",
+ "name": "आरà¥à¤®à¥‡à¤¨à¤¿à¤¯à¤¾à¤ˆ"
+ },
+ "id": {
+ "code": "id",
+ "name": "इंडोनेशियाई"
+ },
+ "it": {
+ "code": "it",
+ "name": "इतालवी"
+ },
+ "ewo": {
+ "code": "ewo",
+ "name": "इवोनà¥à¤¡à¥‹"
+ },
+ "ee": {
+ "code": "ee",
+ "name": "ईवे"
+ },
+ "uz": {
+ "code": "uz",
+ "name": "उज़à¥à¤¬à¥‡à¤•"
+ },
+ "or": {
+ "code": "or",
+ "name": "उड़िया"
+ },
+ "nd": {
+ "code": "nd",
+ "name": "उतà¥à¤¤à¤°à¥€ देबेल"
+ },
+ "ur": {
+ "code": "ur",
+ "name": "उरà¥à¤¦à¥‚"
+ },
+ "hsb": {
+ "code": "hsb",
+ "name": "ऊपरी सॉरà¥à¤¬à¤¿à¤¯à¤¨"
+ },
+ "ebu": {
+ "code": "ebu",
+ "name": "à¤à¤®à¥à¤¬à¥"
+ },
+ "et": {
+ "code": "et",
+ "name": "à¤à¤¸à¥à¤Ÿà¥‹à¤¨à¤¿à¤¯à¤¾à¤ˆ"
+ },
+ "eo": {
+ "code": "eo",
+ "name": "à¤à¤¸à¥à¤ªà¥‡à¤°à¥‡à¤‚तो"
+ },
+ "de-AT": {
+ "code": "de-AT",
+ "name": "ऑसà¥à¤Ÿà¥à¤°à¤¿à¤¯à¤¾à¤ˆ जरà¥à¤®à¤¨"
+ },
+ "en-AU": {
+ "code": "en-AU",
+ "name": "ऑसà¥à¤Ÿà¥à¤°à¥‡à¤²à¤¿à¤¯à¤¾à¤ˆ अंगà¥à¤°à¥‡à¤œà¤¼à¥€"
+ },
+ "kk": {
+ "code": "kk",
+ "name": "कज़ाख़"
+ },
+ "en-CA": {
+ "code": "en-CA",
+ "name": "कनाडाई अंगà¥à¤°à¥‡à¤œà¤¼à¥€"
+ },
+ "fr-CA": {
+ "code": "fr-CA",
+ "name": "कनाडाई फ़à¥à¤°à¥‡à¤‚च"
+ },
+ "kn": {
+ "code": "kn",
+ "name": "कनà¥à¤¨à¤¡à¤¼"
+ },
+ "kab": {
+ "code": "kab",
+ "name": "कबाइल"
+ },
+ "kam": {
+ "code": "kam",
+ "name": "कमà¥à¤¬à¤¾"
+ },
+ "kln": {
+ "code": "kln",
+ "name": "कलेंजिन"
+ },
+ "ks": {
+ "code": "ks",
+ "name": "कशà¥à¤®à¥€à¤°à¥€"
+ },
+ "swc": {
+ "code": "swc",
+ "name": "कांगो सà¥à¤µà¤¾à¤¹à¤¿à¤²à¥€"
+ },
+ "ca": {
+ "code": "ca",
+ "name": "कातालान"
+ },
+ "kea": {
+ "code": "kea",
+ "name": "काबà¥à¤µà¥‡à¤°à¥à¤¦à¤¿à¤¯à¤¾à¤¨à¥"
+ },
+ "ki": {
+ "code": "ki",
+ "name": "किकà¥à¤¯à¥‚"
+ },
+ "ky": {
+ "code": "ky",
+ "name": "किरà¥à¤—ीज़"
+ },
+ "khq": {
+ "code": "khq",
+ "name": "कोयरा चीनी"
+ },
+ "ses": {
+ "code": "ses",
+ "name": "कोयराबोरो सेनà¥à¤¨à¥€"
+ },
+ "ko": {
+ "code": "ko",
+ "name": "कोरियाई"
+ },
+ "hr": {
+ "code": "hr",
+ "name": "कà¥à¤°à¥‹à¤à¤¶à¤¿à¤¯à¤¾à¤ˆ"
+ },
+ "nmg": {
+ "code": "nmg",
+ "name": "कà¥à¤µà¤¾à¤¸à¤¿à¤“"
+ },
+ "km": {
+ "code": "km",
+ "name": "खमेर"
+ },
+ "lg": {
+ "code": "lg",
+ "name": "गांडा"
+ },
+ "gu": {
+ "code": "gu",
+ "name": "गà¥à¤œà¤°à¤¾à¤¤à¥€"
+ },
+ "guz": {
+ "code": "guz",
+ "name": "गà¥à¤¸à¥€"
+ },
+ "gl": {
+ "code": "gl",
+ "name": "गैलिशियन"
+ },
+ "kl": {
+ "code": "kl",
+ "name": "गà¥à¤°à¥€à¤¨à¤²à¥ˆà¤‚डिक"
+ },
+ "zh": {
+ "code": "zh",
+ "name": "चीनी"
+ },
+ "cs": {
+ "code": "cs",
+ "name": "चेक"
+ },
+ "de": {
+ "code": "de",
+ "name": "जरà¥à¤®à¤¨"
+ },
+ "ja": {
+ "code": "ja",
+ "name": "जापानी"
+ },
+ "zu": {
+ "code": "zu",
+ "name": "ज़à¥à¤²à¥‚"
+ },
+ "ka": {
+ "code": "ka",
+ "name": "जॉरà¥à¤œà¤¿à¤¯à¤¾à¤ˆ"
+ },
+ "dz": {
+ "code": "dz",
+ "name": "ज़ोनà¥à¤—खा"
+ },
+ "dyo": {
+ "code": "dyo",
+ "name": "जोला-फोंई"
+ },
+ "dje": {
+ "code": "dje",
+ "name": "à¤à¤¾à¤°à¥à¤®à¤¾"
+ },
+ "twq": {
+ "code": "twq",
+ "name": "टासवाक"
+ },
+ "teo": {
+ "code": "teo",
+ "name": "टेसो"
+ },
+ "to": {
+ "code": "to",
+ "name": "टोंगन"
+ },
+ "nl": {
+ "code": "nl",
+ "name": "डच"
+ },
+ "da": {
+ "code": "da",
+ "name": "डेनिश"
+ },
+ "ta": {
+ "code": "ta",
+ "name": "तमिल"
+ },
+ "ti": {
+ "code": "ti",
+ "name": "तिगà¥à¤°à¥€à¤¨à¥à¤¯à¤¾"
+ },
+ "bo": {
+ "code": "bo",
+ "name": "तिबà¥à¤¬à¤¤à¥€"
+ },
+ "tr": {
+ "code": "tr",
+ "name": "तà¥à¤°à¥à¤•à¥€"
+ },
+ "te": {
+ "code": "te",
+ "name": "तेलà¥à¤—ू"
+ },
+ "shi": {
+ "code": "shi",
+ "name": "तैचेलà¥à¤¹à¤¿à¤¤"
+ },
+ "dav": {
+ "code": "dav",
+ "name": "तैता"
+ },
+ "th": {
+ "code": "th",
+ "name": "थाई"
+ },
+ "jgo": {
+ "code": "jgo",
+ "name": "नगोंबा"
+ },
+ "naq": {
+ "code": "naq",
+ "name": "नामा"
+ },
+ "dsb": {
+ "code": "dsb",
+ "name": "निचला सॉरà¥à¤¬à¤¿à¤¯à¤¨"
+ },
+ "nus": {
+ "code": "nus",
+ "name": "नà¥à¤à¤°"
+ },
+ "ne": {
+ "code": "ne",
+ "name": "नेपाली"
+ },
+ "se": {
+ "code": "se",
+ "name": "नॉरà¥à¤¦à¤¨ सामी"
+ },
+ "nn": {
+ "code": "nn",
+ "name": "नॉरà¥à¤µà¥‡à¤œà¤¿à¤¯à¤¾à¤ˆ नॉयनॉरà¥à¤¸à¥à¤•"
+ },
+ "nb": {
+ "code": "nb",
+ "name": "नॉरà¥à¤µà¥‡à¤œà¤¿à¤¯à¤¾à¤ˆ बोकमाल"
+ },
+ "nyn": {
+ "code": "nyn",
+ "name": "नà¥à¤¯à¤¾à¤¨à¤•à¥‹à¤²"
+ },
+ "pa": {
+ "code": "pa",
+ "name": "पंजाबी"
+ },
+ "fy": {
+ "code": "fy",
+ "name": "पशà¥à¤šà¤¿à¤®à¥€ फ़à¥à¤°à¤¿à¤¸à¤¿à¤¯à¤¾à¤ˆ"
+ },
+ "ps": {
+ "code": "ps",
+ "name": "पशà¥à¤¤à¥‹"
+ },
+ "zh-Hant": {
+ "code": "zh-Hant",
+ "name": "पारंपरिक चीनी"
+ },
+ "pt": {
+ "code": "pt",
+ "name": "पà¥à¤°à¥à¤¤à¤—ाली"
+ },
+ "pl": {
+ "code": "pl",
+ "name": "पोलिश"
+ },
+ "fa": {
+ "code": "fa",
+ "name": "फ़ारसी"
+ },
+ "fi": {
+ "code": "fi",
+ "name": "फ़िनिश"
+ },
+ "fil": {
+ "code": "fil",
+ "name": "फ़िलिपीनो"
+ },
+ "ff": {
+ "code": "ff",
+ "name": "फà¥à¤²à¤¾à¤¹"
+ },
+ "fo": {
+ "code": "fo",
+ "name": "फ़ैरोइज़"
+ },
+ "fur": {
+ "code": "fur",
+ "name": "फà¥à¤°à¥€à¤¯à¥à¤²à¥€à¤¯à¤¾à¤¨"
+ },
+ "fr": {
+ "code": "fr",
+ "name": "फ़à¥à¤°à¥‡à¤‚च"
+ },
+ "nl-BE": {
+ "code": "nl-BE",
+ "name": "फ़à¥à¤²à¥‡à¤®à¤¿à¤¶"
+ },
+ "bn": {
+ "code": "bn",
+ "name": "बंगाली"
+ },
+ "ksf": {
+ "code": "ksf",
+ "name": "बफिआ"
+ },
+ "my": {
+ "code": "my",
+ "name": "बरà¥à¤®à¥€à¤œà¤¼"
+ },
+ "bas": {
+ "code": "bas",
+ "name": "बसा"
+ },
+ "bm": {
+ "code": "bm",
+ "name": "बामà¥à¤¬à¤¾à¤°à¤¾"
+ },
+ "eu": {
+ "code": "eu",
+ "name": "बासà¥à¤•"
+ },
+ "bg": {
+ "code": "bg",
+ "name": "बà¥à¤²à¥à¤—ारियाई"
+ },
+ "bez": {
+ "code": "bez",
+ "name": "बेना"
+ },
+ "be": {
+ "code": "be",
+ "name": "बेलारूसी"
+ },
+ "brx": {
+ "code": "brx",
+ "name": "बोडो"
+ },
+ "bs": {
+ "code": "bs",
+ "name": "बोसà¥à¤¨à¤¿à¤¯à¤¾à¤ˆ"
+ },
+ "pt-BR": {
+ "code": "pt-BR",
+ "name": "बà¥à¤°à¤¾à¤œà¤¼à¥€à¤²à¥€ पà¥à¤°à¥à¤¤à¤—ाली"
+ },
+ "en-GB": {
+ "code": "en-GB",
+ "name": "बà¥à¤°à¤¿à¤Ÿà¤¿à¤¶ अंगà¥à¤°à¥‡à¤œà¤¼à¥€"
+ },
+ "br": {
+ "code": "br",
+ "name": "बà¥à¤°à¥‡à¤Ÿà¤¨"
+ },
+ "mn": {
+ "code": "mn",
+ "name": "मंगोलीयाई"
+ },
+ "tzm": {
+ "code": "tzm",
+ "name": "मधà¥à¤¯ à¤à¤Ÿà¤²à¤¸ तमाज़ित"
+ },
+ "mr": {
+ "code": "mr",
+ "name": "मराठी"
+ },
+ "ms": {
+ "code": "ms",
+ "name": "मलय"
+ },
+ "ml": {
+ "code": "ml",
+ "name": "मलयालम"
+ },
+ "mas": {
+ "code": "mas",
+ "name": "मसाई"
+ },
+ "zgh": {
+ "code": "zgh",
+ "name": "मानक मोरकà¥à¤•à¤¨ तामाज़ाइट"
+ },
+ "mg": {
+ "code": "mg",
+ "name": "मालागासी"
+ },
+ "mt": {
+ "code": "mt",
+ "name": "मालà¥à¤Ÿà¥€à¤œà¤¼"
+ },
+ "mua": {
+ "code": "mua",
+ "name": "मà¥à¤‚डैंग"
+ },
+ "mer": {
+ "code": "mer",
+ "name": "मेरà¥"
+ },
+ "jmc": {
+ "code": "jmc",
+ "name": "मैकहैमे"
+ },
+ "kde": {
+ "code": "kde",
+ "name": "मैकोंड"
+ },
+ "es-MX": {
+ "code": "es-MX",
+ "name": "मैकà¥à¤¸à¤¿à¤•à¤¨ सà¥à¤ªà¥‡à¤¨à¤¿à¤¶"
+ },
+ "mgh": {
+ "code": "mgh",
+ "name": "मैखà¥à¤µà¤¾-मीटà¥à¤Ÿà¥‹"
+ },
+ "mk": {
+ "code": "mk",
+ "name": "मैसिडोनियाई"
+ },
+ "mfe": {
+ "code": "mfe",
+ "name": "मोरीसà¥à¤¯à¥‡à¤¨"
+ },
+ "ro-MD": {
+ "code": "ro-MD",
+ "name": "मोलडावियन"
+ },
+ "uk": {
+ "code": "uk",
+ "name": "यूकà¥à¤°à¥‡à¤¨à¤¿à¤¯à¤¾à¤ˆ"
+ },
+ "el": {
+ "code": "el",
+ "name": "यूनानी"
+ },
+ "pt-PT": {
+ "code": "pt-PT",
+ "name": "यूरोपीय पà¥à¤°à¥à¤¤à¤—ाली"
+ },
+ "es-ES": {
+ "code": "es-ES",
+ "name": "यूरोपीय सà¥à¤ªà¥‡à¤¨à¥€"
+ },
+ "yo": {
+ "code": "yo",
+ "name": "योरूबा"
+ },
+ "rwk": {
+ "code": "rwk",
+ "name": "रवा"
+ },
+ "rn": {
+ "code": "rn",
+ "name": "रà¥à¤¨à¥à¤¦à¥€"
+ },
+ "ru": {
+ "code": "ru",
+ "name": "रूसी"
+ },
+ "ro": {
+ "code": "ro",
+ "name": "रोमानियाई"
+ },
+ "rm": {
+ "code": "rm",
+ "name": "रोमानà¥à¤¶"
+ },
+ "rof": {
+ "code": "rof",
+ "name": "रोमà¥à¤¬à¥‹"
+ },
+ "lb": {
+ "code": "lb",
+ "name": "लगà¥à¤œà¤¼à¤®à¤¬à¤°à¥à¤—ी"
+ },
+ "lag": {
+ "code": "lag",
+ "name": "लांगि"
+ },
+ "lo": {
+ "code": "lo",
+ "name": "लाओ"
+ },
+ "lv": {
+ "code": "lv",
+ "name": "लातवियाई"
+ },
+ "ln": {
+ "code": "ln",
+ "name": "लिंगाला"
+ },
+ "lt": {
+ "code": "lt",
+ "name": "लिथà¥à¤†à¤¨à¤¿à¤¯à¤¾à¤ˆ"
+ },
+ "luy": {
+ "code": "luy",
+ "name": "लà¥à¤¯à¥à¤ˆà¤†"
+ },
+ "luo": {
+ "code": "luo",
+ "name": "लà¥à¤¯à¥à¤“"
+ },
+ "lu": {
+ "code": "lu",
+ "name": "लà¥à¤¯à¥‚बा-कटांगा"
+ },
+ "vai": {
+ "code": "vai",
+ "name": "वाई"
+ },
+ "ug": {
+ "code": "ug",
+ "name": "विघà¥à¤°"
+ },
+ "vi": {
+ "code": "vi",
+ "name": "वियतनामी"
+ },
+ "vun": {
+ "code": "vun",
+ "name": "वà¥à¤‚जो"
+ },
+ "cy": {
+ "code": "cy",
+ "name": "वेलà¥à¤¶"
+ },
+ "ksb": {
+ "code": "ksb",
+ "name": "शमà¥à¤¬à¤¾à¤²à¤¾"
+ },
+ "cgg": {
+ "code": "cgg",
+ "name": "शिगा"
+ },
+ "chr": {
+ "code": "chr",
+ "name": "शेरोकी"
+ },
+ "sn": {
+ "code": "sn",
+ "name": "शोणा"
+ },
+ "zh-Hans": {
+ "code": "zh-Hans",
+ "name": "सरलीकृत चीनी"
+ },
+ "sr": {
+ "code": "sr",
+ "name": "सरà¥à¤¬à¤¿à¤¯à¤¾à¤ˆ"
+ },
+ "sg": {
+ "code": "sg",
+ "name": "सांगो"
+ },
+ "si": {
+ "code": "si",
+ "name": "सिंहली"
+ },
+ "seh": {
+ "code": "seh",
+ "name": "सेना"
+ },
+ "sbp": {
+ "code": "sbp",
+ "name": "सैंगà¥"
+ },
+ "saq": {
+ "code": "saq",
+ "name": "सैमà¥à¤¬à¥à¤°à¥"
+ },
+ "xog": {
+ "code": "xog",
+ "name": "सोगा"
+ },
+ "so": {
+ "code": "so",
+ "name": "सोमाली"
+ },
+ "gd": {
+ "code": "gd",
+ "name": "सà¥à¤•à¤¾à¤Ÿà¥à¤¸à¥ गायेलिकà¥"
+ },
+ "es": {
+ "code": "es",
+ "name": "सà¥à¤ªà¥‡à¤¨à¥€"
+ },
+ "sk": {
+ "code": "sk",
+ "name": "सà¥à¤²à¥‹à¤µà¤¾à¤•"
+ },
+ "sl": {
+ "code": "sl",
+ "name": "सà¥à¤²à¥‹à¤µà¥‡à¤¨à¤¿à¤¯à¤¾à¤ˆ"
+ },
+ "sw": {
+ "code": "sw",
+ "name": "सà¥à¤µà¤¾à¤¹à¤¿à¤²à¥€"
+ },
+ "de-CH": {
+ "code": "de-CH",
+ "name": "सà¥à¤µà¤¿à¤¸ उचà¥à¤š जरà¥à¤®à¤¨"
+ },
+ "gsw": {
+ "code": "gsw",
+ "name": "सà¥à¤µà¤¿à¤¸ जरà¥à¤®à¤¨"
+ },
+ "fr-CH": {
+ "code": "fr-CH",
+ "name": "सà¥à¤µà¤¿à¤¸ फ़à¥à¤°à¥‡à¤‚च"
+ },
+ "sv": {
+ "code": "sv",
+ "name": "सà¥à¤µà¥€à¤¡à¤¿à¤¶"
+ },
+ "hu": {
+ "code": "hu",
+ "name": "हंगेरियाई"
+ },
+ "hi": {
+ "code": "hi",
+ "name": "हिंदी"
+ },
+ "he": {
+ "code": "he",
+ "name": "हिबà¥à¤°à¥‚"
+ },
+ "ha": {
+ "code": "ha",
+ "name": "हौसा"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/language/hr.json b/library/intl/resources/language/hr.json
new file mode 100644
index 000000000..cf62df56d
--- /dev/null
+++ b/library/intl/resources/language/hr.json
@@ -0,0 +1,738 @@
+{
+ "af": {
+ "code": "af",
+ "name": "afrikaans"
+ },
+ "agq": {
+ "code": "agq",
+ "name": "aghem"
+ },
+ "ak": {
+ "code": "ak",
+ "name": "akanski"
+ },
+ "sq": {
+ "code": "sq",
+ "name": "albanski"
+ },
+ "en-US": {
+ "code": "en-US",
+ "name": "ameriÄki engleski"
+ },
+ "am": {
+ "code": "am",
+ "name": "amharski"
+ },
+ "ar": {
+ "code": "ar",
+ "name": "arapski"
+ },
+ "hy": {
+ "code": "hy",
+ "name": "armenski"
+ },
+ "ast": {
+ "code": "ast",
+ "name": "asturijski"
+ },
+ "asa": {
+ "code": "asa",
+ "name": "asu"
+ },
+ "en-AU": {
+ "code": "en-AU",
+ "name": "australski engleski"
+ },
+ "de-AT": {
+ "code": "de-AT",
+ "name": "austrijski njemaÄki"
+ },
+ "az": {
+ "code": "az",
+ "name": "azerbajdžanski"
+ },
+ "ksf": {
+ "code": "ksf",
+ "name": "bafia"
+ },
+ "bm": {
+ "code": "bm",
+ "name": "bambara"
+ },
+ "bas": {
+ "code": "bas",
+ "name": "basa"
+ },
+ "eu": {
+ "code": "eu",
+ "name": "baskijski"
+ },
+ "bez": {
+ "code": "bez",
+ "name": "bena"
+ },
+ "bn": {
+ "code": "bn",
+ "name": "bengalski"
+ },
+ "be": {
+ "code": "be",
+ "name": "bjeloruski"
+ },
+ "brx": {
+ "code": "brx",
+ "name": "bodo"
+ },
+ "bs": {
+ "code": "bs",
+ "name": "bosanski"
+ },
+ "pt-BR": {
+ "code": "pt-BR",
+ "name": "brazilski portugalski"
+ },
+ "br": {
+ "code": "br",
+ "name": "bretonski"
+ },
+ "en-GB": {
+ "code": "en-GB",
+ "name": "britanski engleski"
+ },
+ "bg": {
+ "code": "bg",
+ "name": "bugarski"
+ },
+ "my": {
+ "code": "my",
+ "name": "burmanski"
+ },
+ "cgg": {
+ "code": "cgg",
+ "name": "chiga"
+ },
+ "chr": {
+ "code": "chr",
+ "name": "Äeroki"
+ },
+ "cs": {
+ "code": "cs",
+ "name": "ÄeÅ¡ki"
+ },
+ "da": {
+ "code": "da",
+ "name": "danski"
+ },
+ "dz": {
+ "code": "dz",
+ "name": "dzongkha"
+ },
+ "ebu": {
+ "code": "ebu",
+ "name": "embu"
+ },
+ "en": {
+ "code": "en",
+ "name": "engleski"
+ },
+ "eo": {
+ "code": "eo",
+ "name": "esperanto"
+ },
+ "et": {
+ "code": "et",
+ "name": "estonski"
+ },
+ "pt-PT": {
+ "code": "pt-PT",
+ "name": "europski portugalski"
+ },
+ "es-ES": {
+ "code": "es-ES",
+ "name": "europski Å¡panjolski"
+ },
+ "ee": {
+ "code": "ee",
+ "name": "ewe"
+ },
+ "ewo": {
+ "code": "ewo",
+ "name": "ewondo"
+ },
+ "fo": {
+ "code": "fo",
+ "name": "ferojski"
+ },
+ "fil": {
+ "code": "fil",
+ "name": "filipino"
+ },
+ "fi": {
+ "code": "fi",
+ "name": "finski"
+ },
+ "nl-BE": {
+ "code": "nl-BE",
+ "name": "flamanski"
+ },
+ "fr": {
+ "code": "fr",
+ "name": "francuski"
+ },
+ "fur": {
+ "code": "fur",
+ "name": "friulski"
+ },
+ "ff": {
+ "code": "ff",
+ "name": "fulah"
+ },
+ "gl": {
+ "code": "gl",
+ "name": "galicijski"
+ },
+ "lg": {
+ "code": "lg",
+ "name": "ganda"
+ },
+ "hsb": {
+ "code": "hsb",
+ "name": "gornjolužiÄki"
+ },
+ "de-CH": {
+ "code": "de-CH",
+ "name": "gornjonjemaÄki (Å¡vicarski)"
+ },
+ "el": {
+ "code": "el",
+ "name": "grÄki"
+ },
+ "ka": {
+ "code": "ka",
+ "name": "gruzijski"
+ },
+ "gu": {
+ "code": "gu",
+ "name": "gudžaratski"
+ },
+ "guz": {
+ "code": "guz",
+ "name": "gusii"
+ },
+ "ha": {
+ "code": "ha",
+ "name": "hausa"
+ },
+ "he": {
+ "code": "he",
+ "name": "hebrejski"
+ },
+ "hi": {
+ "code": "hi",
+ "name": "hindski"
+ },
+ "hr": {
+ "code": "hr",
+ "name": "hrvatski"
+ },
+ "id": {
+ "code": "id",
+ "name": "indonezijski"
+ },
+ "ga": {
+ "code": "ga",
+ "name": "irski"
+ },
+ "is": {
+ "code": "is",
+ "name": "islandski"
+ },
+ "ja": {
+ "code": "ja",
+ "name": "japanski"
+ },
+ "dyo": {
+ "code": "dyo",
+ "name": "jola-fonyi"
+ },
+ "yo": {
+ "code": "yo",
+ "name": "joruba"
+ },
+ "se": {
+ "code": "se",
+ "name": "južni sami"
+ },
+ "kab": {
+ "code": "kab",
+ "name": "kabilski"
+ },
+ "kl": {
+ "code": "kl",
+ "name": "kalaallisut"
+ },
+ "kln": {
+ "code": "kln",
+ "name": "kalenjin"
+ },
+ "kam": {
+ "code": "kam",
+ "name": "kamba"
+ },
+ "en-CA": {
+ "code": "en-CA",
+ "name": "kanadski engleski"
+ },
+ "fr-CA": {
+ "code": "fr-CA",
+ "name": "kanadski francuski"
+ },
+ "kn": {
+ "code": "kn",
+ "name": "kannadski"
+ },
+ "ks": {
+ "code": "ks",
+ "name": "kašmirski"
+ },
+ "ca": {
+ "code": "ca",
+ "name": "katalonski"
+ },
+ "kk": {
+ "code": "kk",
+ "name": "kazaški"
+ },
+ "ksh": {
+ "code": "ksh",
+ "name": "kelnski"
+ },
+ "ki": {
+ "code": "ki",
+ "name": "kikuyu"
+ },
+ "zh": {
+ "code": "zh",
+ "name": "kineski"
+ },
+ "zh-Hans": {
+ "code": "zh-Hans",
+ "name": "kineski (pojednostavljeni)"
+ },
+ "zh-Hant": {
+ "code": "zh-Hant",
+ "name": "kineski (tradicionalni)"
+ },
+ "ky": {
+ "code": "ky",
+ "name": "kirgiški"
+ },
+ "km": {
+ "code": "km",
+ "name": "kmerski"
+ },
+ "nb": {
+ "code": "nb",
+ "name": "književni norveški"
+ },
+ "swc": {
+ "code": "swc",
+ "name": "kongoanski swahili"
+ },
+ "ko": {
+ "code": "ko",
+ "name": "korejski"
+ },
+ "khq": {
+ "code": "khq",
+ "name": "koyra chiini"
+ },
+ "ses": {
+ "code": "ses",
+ "name": "koyraboro senni"
+ },
+ "nmg": {
+ "code": "nmg",
+ "name": "kwasio"
+ },
+ "lag": {
+ "code": "lag",
+ "name": "langi"
+ },
+ "lo": {
+ "code": "lo",
+ "name": "laoski"
+ },
+ "lv": {
+ "code": "lv",
+ "name": "latvijski"
+ },
+ "ln": {
+ "code": "ln",
+ "name": "lingala"
+ },
+ "lt": {
+ "code": "lt",
+ "name": "litavski"
+ },
+ "lu": {
+ "code": "lu",
+ "name": "luba-katanga"
+ },
+ "lb": {
+ "code": "lb",
+ "name": "luksemburški"
+ },
+ "luo": {
+ "code": "luo",
+ "name": "Luo"
+ },
+ "luy": {
+ "code": "luy",
+ "name": "luyia"
+ },
+ "dsb": {
+ "code": "dsb",
+ "name": "lužiÄkosrpski"
+ },
+ "jmc": {
+ "code": "jmc",
+ "name": "machame"
+ },
+ "hu": {
+ "code": "hu",
+ "name": "mađarski"
+ },
+ "mk": {
+ "code": "mk",
+ "name": "makedonski"
+ },
+ "mgh": {
+ "code": "mgh",
+ "name": "makhuwa-meetto"
+ },
+ "kde": {
+ "code": "kde",
+ "name": "makonde"
+ },
+ "ml": {
+ "code": "ml",
+ "name": "malajalamski"
+ },
+ "ms": {
+ "code": "ms",
+ "name": "malajski"
+ },
+ "mg": {
+ "code": "mg",
+ "name": "malgaški"
+ },
+ "mt": {
+ "code": "mt",
+ "name": "malteški"
+ },
+ "mr": {
+ "code": "mr",
+ "name": "marathski"
+ },
+ "tzm": {
+ "code": "tzm",
+ "name": "marokanski tamazight"
+ },
+ "mas": {
+ "code": "mas",
+ "name": "masajski"
+ },
+ "mfe": {
+ "code": "mfe",
+ "name": "mauricijski kreolski"
+ },
+ "es-MX": {
+ "code": "es-MX",
+ "name": "meksiÄki Å¡panjolski"
+ },
+ "mer": {
+ "code": "mer",
+ "name": "meru"
+ },
+ "ar-001": {
+ "code": "ar-001",
+ "name": "moderni standardni arapski"
+ },
+ "ro-MD": {
+ "code": "ro-MD",
+ "name": "moldavski"
+ },
+ "mn": {
+ "code": "mn",
+ "name": "mongolski"
+ },
+ "mua": {
+ "code": "mua",
+ "name": "mundang"
+ },
+ "naq": {
+ "code": "naq",
+ "name": "nama"
+ },
+ "ne": {
+ "code": "ne",
+ "name": "nepalski"
+ },
+ "jgo": {
+ "code": "jgo",
+ "name": "ngomba"
+ },
+ "nl": {
+ "code": "nl",
+ "name": "nizozemski"
+ },
+ "nn": {
+ "code": "nn",
+ "name": "novonorveški"
+ },
+ "nus": {
+ "code": "nus",
+ "name": "nuer"
+ },
+ "nyn": {
+ "code": "nyn",
+ "name": "nyankole"
+ },
+ "de": {
+ "code": "de",
+ "name": "njemaÄki"
+ },
+ "or": {
+ "code": "or",
+ "name": "orijski"
+ },
+ "pa": {
+ "code": "pa",
+ "name": "pandžapski"
+ },
+ "ps": {
+ "code": "ps",
+ "name": "paštu"
+ },
+ "fa": {
+ "code": "fa",
+ "name": "perzijski"
+ },
+ "pl": {
+ "code": "pl",
+ "name": "poljski"
+ },
+ "pt": {
+ "code": "pt",
+ "name": "portugalski"
+ },
+ "rm": {
+ "code": "rm",
+ "name": "romanš"
+ },
+ "rof": {
+ "code": "rof",
+ "name": "rombo"
+ },
+ "ro": {
+ "code": "ro",
+ "name": "rumunjski"
+ },
+ "rn": {
+ "code": "rn",
+ "name": "rundi"
+ },
+ "ru": {
+ "code": "ru",
+ "name": "ruski"
+ },
+ "rwk": {
+ "code": "rwk",
+ "name": "rwa"
+ },
+ "saq": {
+ "code": "saq",
+ "name": "samburu"
+ },
+ "sg": {
+ "code": "sg",
+ "name": "sango"
+ },
+ "sbp": {
+ "code": "sbp",
+ "name": "sangu"
+ },
+ "seh": {
+ "code": "seh",
+ "name": "sena"
+ },
+ "ksb": {
+ "code": "ksb",
+ "name": "shambala"
+ },
+ "sn": {
+ "code": "sn",
+ "name": "shona"
+ },
+ "si": {
+ "code": "si",
+ "name": "sinhaleški"
+ },
+ "nd": {
+ "code": "nd",
+ "name": "sjeverni ndebele"
+ },
+ "sk": {
+ "code": "sk",
+ "name": "slovaÄki"
+ },
+ "sl": {
+ "code": "sl",
+ "name": "slovenski"
+ },
+ "xog": {
+ "code": "xog",
+ "name": "soga"
+ },
+ "so": {
+ "code": "so",
+ "name": "somalski"
+ },
+ "sr": {
+ "code": "sr",
+ "name": "srpski"
+ },
+ "zgh": {
+ "code": "zgh",
+ "name": "standardni marokanski tamazight"
+ },
+ "sw": {
+ "code": "sw",
+ "name": "svahili"
+ },
+ "gd": {
+ "code": "gd",
+ "name": "Å¡kotski-galski"
+ },
+ "es": {
+ "code": "es",
+ "name": "Å¡panjolski"
+ },
+ "sv": {
+ "code": "sv",
+ "name": "Å¡vedski"
+ },
+ "fr-CH": {
+ "code": "fr-CH",
+ "name": "Å¡vicarski francuski"
+ },
+ "gsw": {
+ "code": "gsw",
+ "name": "Å¡vicarski njemaÄki"
+ },
+ "shi": {
+ "code": "shi",
+ "name": "tachelhit"
+ },
+ "dav": {
+ "code": "dav",
+ "name": "taita"
+ },
+ "th": {
+ "code": "th",
+ "name": "tajlandski"
+ },
+ "it": {
+ "code": "it",
+ "name": "talijanski"
+ },
+ "ta": {
+ "code": "ta",
+ "name": "tamilski"
+ },
+ "twq": {
+ "code": "twq",
+ "name": "tasawaq"
+ },
+ "te": {
+ "code": "te",
+ "name": "telugu"
+ },
+ "teo": {
+ "code": "teo",
+ "name": "teso"
+ },
+ "bo": {
+ "code": "bo",
+ "name": "tibetanski"
+ },
+ "ti": {
+ "code": "ti",
+ "name": "tigrinja"
+ },
+ "to": {
+ "code": "to",
+ "name": "tonganski"
+ },
+ "tr": {
+ "code": "tr",
+ "name": "turski"
+ },
+ "ug": {
+ "code": "ug",
+ "name": "ujgurski"
+ },
+ "uk": {
+ "code": "uk",
+ "name": "ukrajinski"
+ },
+ "ur": {
+ "code": "ur",
+ "name": "urdski"
+ },
+ "uz": {
+ "code": "uz",
+ "name": "uzbeÄki"
+ },
+ "vai": {
+ "code": "vai",
+ "name": "Vai"
+ },
+ "cy": {
+ "code": "cy",
+ "name": "velški"
+ },
+ "vi": {
+ "code": "vi",
+ "name": "vijetnamski"
+ },
+ "vun": {
+ "code": "vun",
+ "name": "vunjo"
+ },
+ "wae": {
+ "code": "wae",
+ "name": "walser"
+ },
+ "yav": {
+ "code": "yav",
+ "name": "yangben"
+ },
+ "fy": {
+ "code": "fy",
+ "name": "zapadnofrizijski"
+ },
+ "dje": {
+ "code": "dje",
+ "name": "zarma"
+ },
+ "kea": {
+ "code": "kea",
+ "name": "zelenortski"
+ },
+ "zu": {
+ "code": "zu",
+ "name": "zulu"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/language/hsb.json b/library/intl/resources/language/hsb.json
new file mode 100644
index 000000000..79753bc2f
--- /dev/null
+++ b/library/intl/resources/language/hsb.json
@@ -0,0 +1,738 @@
+{
+ "af": {
+ "code": "af",
+ "name": "afrikaanšćina"
+ },
+ "agq": {
+ "code": "agq",
+ "name": "aghemšćina"
+ },
+ "ak": {
+ "code": "ak",
+ "name": "akanšćina"
+ },
+ "sq": {
+ "code": "sq",
+ "name": "albanšćina"
+ },
+ "en-US": {
+ "code": "en-US",
+ "name": "ameriska jendźelšćina"
+ },
+ "am": {
+ "code": "am",
+ "name": "amharšćina"
+ },
+ "ar": {
+ "code": "ar",
+ "name": "arabšćina"
+ },
+ "hy": {
+ "code": "hy",
+ "name": "armenšćina"
+ },
+ "ast": {
+ "code": "ast",
+ "name": "asturšćina"
+ },
+ "en-AU": {
+ "code": "en-AU",
+ "name": "awstralska jendźelšćina"
+ },
+ "de-AT": {
+ "code": "de-AT",
+ "name": "awstriska nÄ›mÄina"
+ },
+ "az": {
+ "code": "az",
+ "name": "azerbajdźanšćina"
+ },
+ "ksf": {
+ "code": "ksf",
+ "name": "bafia"
+ },
+ "bm": {
+ "code": "bm",
+ "name": "bambara"
+ },
+ "bas": {
+ "code": "bas",
+ "name": "Basaa"
+ },
+ "eu": {
+ "code": "eu",
+ "name": "baskišćina"
+ },
+ "be": {
+ "code": "be",
+ "name": "běłorušćina"
+ },
+ "bez": {
+ "code": "bez",
+ "name": "bena"
+ },
+ "bn": {
+ "code": "bn",
+ "name": "bengalšćina"
+ },
+ "brx": {
+ "code": "brx",
+ "name": "bodo"
+ },
+ "bg": {
+ "code": "bg",
+ "name": "bołharšćina"
+ },
+ "bs": {
+ "code": "bs",
+ "name": "bosnišćina"
+ },
+ "pt-BR": {
+ "code": "pt-BR",
+ "name": "brazilska portugalšćina"
+ },
+ "br": {
+ "code": "br",
+ "name": "bretonšćina"
+ },
+ "en-GB": {
+ "code": "en-GB",
+ "name": "britiska jendźelšćina"
+ },
+ "my": {
+ "code": "my",
+ "name": "burmašćina"
+ },
+ "cs": {
+ "code": "cs",
+ "name": "Äěšćina"
+ },
+ "chr": {
+ "code": "chr",
+ "name": "cherokee"
+ },
+ "cgg": {
+ "code": "cgg",
+ "name": "chiga"
+ },
+ "zh": {
+ "code": "zh",
+ "name": "chinšćina"
+ },
+ "zh-Hant": {
+ "code": "zh-Hant",
+ "name": "chinšćina (tradicionalna)"
+ },
+ "zh-Hans": {
+ "code": "zh-Hans",
+ "name": "chinšćina (zjednorjena)"
+ },
+ "hr": {
+ "code": "hr",
+ "name": "chorwatšćina"
+ },
+ "ksh": {
+ "code": "ksh",
+ "name": "Colognian"
+ },
+ "da": {
+ "code": "da",
+ "name": "danšćina"
+ },
+ "de-CH": {
+ "code": "de-CH",
+ "name": "de_CH"
+ },
+ "dsb": {
+ "code": "dsb",
+ "name": "delnjoserbšćina"
+ },
+ "dz": {
+ "code": "dz",
+ "name": "dzongkha"
+ },
+ "ebu": {
+ "code": "ebu",
+ "name": "embu"
+ },
+ "eo": {
+ "code": "eo",
+ "name": "esperanto"
+ },
+ "et": {
+ "code": "et",
+ "name": "estišćina"
+ },
+ "pt-PT": {
+ "code": "pt-PT",
+ "name": "europska portugalšćina"
+ },
+ "es-ES": {
+ "code": "es-ES",
+ "name": "europska španišćina"
+ },
+ "ee": {
+ "code": "ee",
+ "name": "ewe"
+ },
+ "ewo": {
+ "code": "ewo",
+ "name": "Ewondo"
+ },
+ "fo": {
+ "code": "fo",
+ "name": "färöšćina"
+ },
+ "fil": {
+ "code": "fil",
+ "name": "filipinšćina"
+ },
+ "fi": {
+ "code": "fi",
+ "name": "finšćina"
+ },
+ "nl-BE": {
+ "code": "nl-BE",
+ "name": "flamšćina"
+ },
+ "fr": {
+ "code": "fr",
+ "name": "francošćina"
+ },
+ "fur": {
+ "code": "fur",
+ "name": "Friulian"
+ },
+ "fy": {
+ "code": "fy",
+ "name": "frizišćina"
+ },
+ "ff": {
+ "code": "ff",
+ "name": "Fulah"
+ },
+ "gl": {
+ "code": "gl",
+ "name": "galicišćina"
+ },
+ "lg": {
+ "code": "lg",
+ "name": "gandšćina"
+ },
+ "ka": {
+ "code": "ka",
+ "name": "georgišćina"
+ },
+ "el": {
+ "code": "el",
+ "name": "grjekšćina"
+ },
+ "kl": {
+ "code": "kl",
+ "name": "gröndlandšćina"
+ },
+ "gu": {
+ "code": "gu",
+ "name": "gujarati"
+ },
+ "guz": {
+ "code": "guz",
+ "name": "gusii"
+ },
+ "ha": {
+ "code": "ha",
+ "name": "hausa"
+ },
+ "he": {
+ "code": "he",
+ "name": "hebrejšćina"
+ },
+ "hi": {
+ "code": "hi",
+ "name": "hindišćina"
+ },
+ "hsb": {
+ "code": "hsb",
+ "name": "hornjoserbšćina"
+ },
+ "id": {
+ "code": "id",
+ "name": "indonešćina"
+ },
+ "ga": {
+ "code": "ga",
+ "name": "iršćina"
+ },
+ "is": {
+ "code": "is",
+ "name": "islandšćina"
+ },
+ "it": {
+ "code": "it",
+ "name": "italšćina"
+ },
+ "ja": {
+ "code": "ja",
+ "name": "japanšćina"
+ },
+ "en": {
+ "code": "en",
+ "name": "jendźelšćina"
+ },
+ "dyo": {
+ "code": "dyo",
+ "name": "jola-fonyi"
+ },
+ "yo": {
+ "code": "yo",
+ "name": "jorubašćina"
+ },
+ "kab": {
+ "code": "kab",
+ "name": "kabylšćina"
+ },
+ "kln": {
+ "code": "kln",
+ "name": "kalenjin"
+ },
+ "kam": {
+ "code": "kam",
+ "name": "kamba"
+ },
+ "fr-CA": {
+ "code": "fr-CA",
+ "name": "kanadiska francošćina"
+ },
+ "en-CA": {
+ "code": "en-CA",
+ "name": "kanadiska jendźelšćina"
+ },
+ "kn": {
+ "code": "kn",
+ "name": "kannadšćina"
+ },
+ "kea": {
+ "code": "kea",
+ "name": "kapverdšćina"
+ },
+ "ks": {
+ "code": "ks",
+ "name": "kašmiršćina"
+ },
+ "ca": {
+ "code": "ca",
+ "name": "katalanšćina"
+ },
+ "kk": {
+ "code": "kk",
+ "name": "kazachšćina"
+ },
+ "km": {
+ "code": "km",
+ "name": "khmeršćina"
+ },
+ "ki": {
+ "code": "ki",
+ "name": "kikuyu"
+ },
+ "ky": {
+ "code": "ky",
+ "name": "kirgišćina"
+ },
+ "rn": {
+ "code": "rn",
+ "name": "kirundišćina"
+ },
+ "swc": {
+ "code": "swc",
+ "name": "kongoska suahelšćina"
+ },
+ "ko": {
+ "code": "ko",
+ "name": "korejšćina"
+ },
+ "khq": {
+ "code": "khq",
+ "name": "koyra chiini"
+ },
+ "ses": {
+ "code": "ses",
+ "name": "koyra senni"
+ },
+ "nmg": {
+ "code": "nmg",
+ "name": "kwasio"
+ },
+ "lag": {
+ "code": "lag",
+ "name": "langi"
+ },
+ "lo": {
+ "code": "lo",
+ "name": "laošćina"
+ },
+ "lv": {
+ "code": "lv",
+ "name": "letišćina"
+ },
+ "ln": {
+ "code": "ln",
+ "name": "lingala"
+ },
+ "lt": {
+ "code": "lt",
+ "name": "litawšćina"
+ },
+ "lu": {
+ "code": "lu",
+ "name": "luba-katanga"
+ },
+ "luy": {
+ "code": "luy",
+ "name": "luhya"
+ },
+ "luo": {
+ "code": "luo",
+ "name": "Luo"
+ },
+ "lb": {
+ "code": "lb",
+ "name": "luxemburgšćina"
+ },
+ "jmc": {
+ "code": "jmc",
+ "name": "machame"
+ },
+ "hu": {
+ "code": "hu",
+ "name": "madźaršćina"
+ },
+ "mk": {
+ "code": "mk",
+ "name": "makedonšćina"
+ },
+ "mgh": {
+ "code": "mgh",
+ "name": "makhuwa-meetto"
+ },
+ "kde": {
+ "code": "kde",
+ "name": "makonde"
+ },
+ "mg": {
+ "code": "mg",
+ "name": "malagassišćina"
+ },
+ "ml": {
+ "code": "ml",
+ "name": "malajamšćina"
+ },
+ "ms": {
+ "code": "ms",
+ "name": "malajšćina"
+ },
+ "mt": {
+ "code": "mt",
+ "name": "maltašćina"
+ },
+ "mr": {
+ "code": "mr",
+ "name": "maratišćina"
+ },
+ "mas": {
+ "code": "mas",
+ "name": "masaišćina"
+ },
+ "mfe": {
+ "code": "mfe",
+ "name": "mauriciska kreolšćina"
+ },
+ "mer": {
+ "code": "mer",
+ "name": "meru"
+ },
+ "es-MX": {
+ "code": "es-MX",
+ "name": "mexiska španišćina"
+ },
+ "ar-001": {
+ "code": "ar-001",
+ "name": "moderna wysokoarabšćina"
+ },
+ "ro-MD": {
+ "code": "ro-MD",
+ "name": "moldawšćina"
+ },
+ "mn": {
+ "code": "mn",
+ "name": "mongolšćina"
+ },
+ "mua": {
+ "code": "mua",
+ "name": "mundang"
+ },
+ "naq": {
+ "code": "naq",
+ "name": "nama"
+ },
+ "de": {
+ "code": "de",
+ "name": "nÄ›mÄina"
+ },
+ "ne": {
+ "code": "ne",
+ "name": "nepalšćina"
+ },
+ "jgo": {
+ "code": "jgo",
+ "name": "ngomba"
+ },
+ "nl": {
+ "code": "nl",
+ "name": "nižozemšćina"
+ },
+ "nb": {
+ "code": "nb",
+ "name": "norwegšćina (bokmål)"
+ },
+ "nn": {
+ "code": "nn",
+ "name": "norwegšćina (nynorsk)"
+ },
+ "nus": {
+ "code": "nus",
+ "name": "nuer"
+ },
+ "nyn": {
+ "code": "nyn",
+ "name": "nyankole"
+ },
+ "or": {
+ "code": "or",
+ "name": "orijšćina"
+ },
+ "pa": {
+ "code": "pa",
+ "name": "pandźabšćina"
+ },
+ "asa": {
+ "code": "asa",
+ "name": "pare"
+ },
+ "ps": {
+ "code": "ps",
+ "name": "paštunšćina"
+ },
+ "fa": {
+ "code": "fa",
+ "name": "persišćina"
+ },
+ "pl": {
+ "code": "pl",
+ "name": "pólšćina"
+ },
+ "pt": {
+ "code": "pt",
+ "name": "portugalšćina"
+ },
+ "rm": {
+ "code": "rm",
+ "name": "retoromanšćina"
+ },
+ "rof": {
+ "code": "rof",
+ "name": "rombo"
+ },
+ "ro": {
+ "code": "ro",
+ "name": "rumunšćina"
+ },
+ "ru": {
+ "code": "ru",
+ "name": "rušćina"
+ },
+ "rwk": {
+ "code": "rwk",
+ "name": "rwa"
+ },
+ "ksb": {
+ "code": "ksb",
+ "name": "Å¡ambala"
+ },
+ "saq": {
+ "code": "saq",
+ "name": "samburu"
+ },
+ "sg": {
+ "code": "sg",
+ "name": "sango"
+ },
+ "sbp": {
+ "code": "sbp",
+ "name": "sangu"
+ },
+ "seh": {
+ "code": "seh",
+ "name": "sena"
+ },
+ "sr": {
+ "code": "sr",
+ "name": "serbišćina"
+ },
+ "nd": {
+ "code": "nd",
+ "name": "sewjero-ndebele"
+ },
+ "se": {
+ "code": "se",
+ "name": "sewjerosamišćina"
+ },
+ "si": {
+ "code": "si",
+ "name": "singhalšćina"
+ },
+ "sk": {
+ "code": "sk",
+ "name": "słowakšćina"
+ },
+ "sl": {
+ "code": "sl",
+ "name": "słowjenšćina"
+ },
+ "xog": {
+ "code": "xog",
+ "name": "soga"
+ },
+ "so": {
+ "code": "so",
+ "name": "somališćina"
+ },
+ "sn": {
+ "code": "sn",
+ "name": "šonašćina"
+ },
+ "gd": {
+ "code": "gd",
+ "name": "šotiska gelšćina"
+ },
+ "es": {
+ "code": "es",
+ "name": "španišćina"
+ },
+ "sw": {
+ "code": "sw",
+ "name": "suahelšćina"
+ },
+ "sv": {
+ "code": "sv",
+ "name": "šwedšćina"
+ },
+ "fr-CH": {
+ "code": "fr-CH",
+ "name": "šwicarska francošćina"
+ },
+ "gsw": {
+ "code": "gsw",
+ "name": "Å¡wicarska nÄ›mÄina"
+ },
+ "dav": {
+ "code": "dav",
+ "name": "taita"
+ },
+ "zgh": {
+ "code": "zgh",
+ "name": "tamazight"
+ },
+ "tzm": {
+ "code": "tzm",
+ "name": "tamazight (srjedźny Marokko)"
+ },
+ "ta": {
+ "code": "ta",
+ "name": "tamilšćina"
+ },
+ "twq": {
+ "code": "twq",
+ "name": "tasawaq"
+ },
+ "shi": {
+ "code": "shi",
+ "name": "tašelhit"
+ },
+ "te": {
+ "code": "te",
+ "name": "telugu"
+ },
+ "teo": {
+ "code": "teo",
+ "name": "teso"
+ },
+ "th": {
+ "code": "th",
+ "name": "thailandšćina"
+ },
+ "bo": {
+ "code": "bo",
+ "name": "tibetšćina"
+ },
+ "ti": {
+ "code": "ti",
+ "name": "tigrinšćina"
+ },
+ "to": {
+ "code": "to",
+ "name": "tongašćina"
+ },
+ "tr": {
+ "code": "tr",
+ "name": "turkowšćina"
+ },
+ "ug": {
+ "code": "ug",
+ "name": "ujguršćina"
+ },
+ "uk": {
+ "code": "uk",
+ "name": "ukrainšćina"
+ },
+ "ur": {
+ "code": "ur",
+ "name": "urdušćina"
+ },
+ "uz": {
+ "code": "uz",
+ "name": "uzbekšćina"
+ },
+ "vai": {
+ "code": "vai",
+ "name": "Vai"
+ },
+ "vi": {
+ "code": "vi",
+ "name": "vietnamšćina"
+ },
+ "vun": {
+ "code": "vun",
+ "name": "vunjo"
+ },
+ "cy": {
+ "code": "cy",
+ "name": "walizišćina"
+ },
+ "wae": {
+ "code": "wae",
+ "name": "Walser"
+ },
+ "yav": {
+ "code": "yav",
+ "name": "Yangben"
+ },
+ "dje": {
+ "code": "dje",
+ "name": "zarma"
+ },
+ "zu": {
+ "code": "zu",
+ "name": "zulušćina\""
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/language/hu.json b/library/intl/resources/language/hu.json
new file mode 100644
index 000000000..440e370fc
--- /dev/null
+++ b/library/intl/resources/language/hu.json
@@ -0,0 +1,738 @@
+{
+ "af": {
+ "code": "af",
+ "name": "afrikaans"
+ },
+ "agq": {
+ "code": "agq",
+ "name": "agem"
+ },
+ "ak": {
+ "code": "ak",
+ "name": "akan"
+ },
+ "sq": {
+ "code": "sq",
+ "name": "albán"
+ },
+ "dsb": {
+ "code": "dsb",
+ "name": "alsó szorb"
+ },
+ "en-US": {
+ "code": "en-US",
+ "name": "amerikai angol"
+ },
+ "am": {
+ "code": "am",
+ "name": "amhara"
+ },
+ "en": {
+ "code": "en",
+ "name": "angol"
+ },
+ "ar": {
+ "code": "ar",
+ "name": "arab"
+ },
+ "asa": {
+ "code": "asa",
+ "name": "asu"
+ },
+ "ast": {
+ "code": "ast",
+ "name": "asztúr"
+ },
+ "en-AU": {
+ "code": "en-AU",
+ "name": "ausztrál angol"
+ },
+ "az": {
+ "code": "az",
+ "name": "azerbajdzsáni"
+ },
+ "ksf": {
+ "code": "ksf",
+ "name": "bafia"
+ },
+ "bm": {
+ "code": "bm",
+ "name": "bambara"
+ },
+ "bas": {
+ "code": "bas",
+ "name": "basza"
+ },
+ "eu": {
+ "code": "eu",
+ "name": "baszk"
+ },
+ "be": {
+ "code": "be",
+ "name": "belorusz"
+ },
+ "bez": {
+ "code": "bez",
+ "name": "bena"
+ },
+ "bn": {
+ "code": "bn",
+ "name": "bengáli"
+ },
+ "brx": {
+ "code": "brx",
+ "name": "bodo"
+ },
+ "bg": {
+ "code": "bg",
+ "name": "bolgár"
+ },
+ "bs": {
+ "code": "bs",
+ "name": "bosnyák"
+ },
+ "pt-BR": {
+ "code": "pt-BR",
+ "name": "brazíliai portugál"
+ },
+ "br": {
+ "code": "br",
+ "name": "breton"
+ },
+ "en-GB": {
+ "code": "en-GB",
+ "name": "brit angol"
+ },
+ "my": {
+ "code": "my",
+ "name": "burmai"
+ },
+ "dz": {
+ "code": "dz",
+ "name": "butáni"
+ },
+ "cs": {
+ "code": "cs",
+ "name": "cseh"
+ },
+ "chr": {
+ "code": "chr",
+ "name": "cseroki"
+ },
+ "da": {
+ "code": "da",
+ "name": "dán"
+ },
+ "zh-Hans": {
+ "code": "zh-Hans",
+ "name": "egyszerűsített kínai"
+ },
+ "ebu": {
+ "code": "ebu",
+ "name": "embu"
+ },
+ "nd": {
+ "code": "nd",
+ "name": "északi ndebele"
+ },
+ "se": {
+ "code": "se",
+ "name": "északi számi"
+ },
+ "eo": {
+ "code": "eo",
+ "name": "eszperantó"
+ },
+ "et": {
+ "code": "et",
+ "name": "észt"
+ },
+ "pt-PT": {
+ "code": "pt-PT",
+ "name": "európai portugál"
+ },
+ "es-ES": {
+ "code": "es-ES",
+ "name": "európai spanyol"
+ },
+ "ee": {
+ "code": "ee",
+ "name": "eve"
+ },
+ "ewo": {
+ "code": "ewo",
+ "name": "evondo"
+ },
+ "hsb": {
+ "code": "hsb",
+ "name": "felső szorb"
+ },
+ "fo": {
+ "code": "fo",
+ "name": "feröeri"
+ },
+ "fil": {
+ "code": "fil",
+ "name": "filippínó"
+ },
+ "fi": {
+ "code": "fi",
+ "name": "finn"
+ },
+ "nl-BE": {
+ "code": "nl-BE",
+ "name": "flamand"
+ },
+ "fr": {
+ "code": "fr",
+ "name": "francia"
+ },
+ "fur": {
+ "code": "fur",
+ "name": "friuli"
+ },
+ "fy": {
+ "code": "fy",
+ "name": "fríz"
+ },
+ "ff": {
+ "code": "ff",
+ "name": "fulani"
+ },
+ "gl": {
+ "code": "gl",
+ "name": "galíciai"
+ },
+ "lg": {
+ "code": "lg",
+ "name": "ganda"
+ },
+ "el": {
+ "code": "el",
+ "name": "görög"
+ },
+ "kl": {
+ "code": "kl",
+ "name": "grönlandi"
+ },
+ "ka": {
+ "code": "ka",
+ "name": "grúz"
+ },
+ "gu": {
+ "code": "gu",
+ "name": "gudzsarati"
+ },
+ "guz": {
+ "code": "guz",
+ "name": "guszii"
+ },
+ "zh-Hant": {
+ "code": "zh-Hant",
+ "name": "hagyományos kínai"
+ },
+ "ha": {
+ "code": "ha",
+ "name": "hausza"
+ },
+ "he": {
+ "code": "he",
+ "name": "héber"
+ },
+ "hi": {
+ "code": "hi",
+ "name": "hindi"
+ },
+ "nl": {
+ "code": "nl",
+ "name": "holland"
+ },
+ "hr": {
+ "code": "hr",
+ "name": "horvát"
+ },
+ "id": {
+ "code": "id",
+ "name": "indonéz"
+ },
+ "ga": {
+ "code": "ga",
+ "name": "ír"
+ },
+ "is": {
+ "code": "is",
+ "name": "izlandi"
+ },
+ "yav": {
+ "code": "yav",
+ "name": "jangben"
+ },
+ "ja": {
+ "code": "ja",
+ "name": "japán"
+ },
+ "dyo": {
+ "code": "dyo",
+ "name": "jola-fonyi"
+ },
+ "yo": {
+ "code": "yo",
+ "name": "joruba"
+ },
+ "kab": {
+ "code": "kab",
+ "name": "kabije"
+ },
+ "kea": {
+ "code": "kea",
+ "name": "kabuverdianu"
+ },
+ "kln": {
+ "code": "kln",
+ "name": "kalendzsin"
+ },
+ "kam": {
+ "code": "kam",
+ "name": "kamba"
+ },
+ "km": {
+ "code": "km",
+ "name": "kambodzsai"
+ },
+ "en-CA": {
+ "code": "en-CA",
+ "name": "kanadai angol"
+ },
+ "fr-CA": {
+ "code": "fr-CA",
+ "name": "kanadai francia"
+ },
+ "kn": {
+ "code": "kn",
+ "name": "kannada"
+ },
+ "ks": {
+ "code": "ks",
+ "name": "kásmíri"
+ },
+ "ca": {
+ "code": "ca",
+ "name": "katalán"
+ },
+ "kk": {
+ "code": "kk",
+ "name": "kazah"
+ },
+ "cgg": {
+ "code": "cgg",
+ "name": "kiga"
+ },
+ "ki": {
+ "code": "ki",
+ "name": "kikuju"
+ },
+ "zh": {
+ "code": "zh",
+ "name": "kínai"
+ },
+ "ky": {
+ "code": "ky",
+ "name": "kirgiz"
+ },
+ "rn": {
+ "code": "rn",
+ "name": "kirundi"
+ },
+ "khq": {
+ "code": "khq",
+ "name": "kojra-csíni"
+ },
+ "ses": {
+ "code": "ses",
+ "name": "kojra-szenni"
+ },
+ "swc": {
+ "code": "swc",
+ "name": "kongói szuahéli"
+ },
+ "ko": {
+ "code": "ko",
+ "name": "koreai"
+ },
+ "ksh": {
+ "code": "ksh",
+ "name": "kölsch"
+ },
+ "tzm": {
+ "code": "tzm",
+ "name": "közép-marokkói tamazigt"
+ },
+ "lag": {
+ "code": "lag",
+ "name": "langi"
+ },
+ "lo": {
+ "code": "lo",
+ "name": "laoszi"
+ },
+ "pl": {
+ "code": "pl",
+ "name": "lengyel"
+ },
+ "lv": {
+ "code": "lv",
+ "name": "lett"
+ },
+ "ln": {
+ "code": "ln",
+ "name": "lingala"
+ },
+ "lt": {
+ "code": "lt",
+ "name": "litván"
+ },
+ "lu": {
+ "code": "lu",
+ "name": "luba-katanga"
+ },
+ "luy": {
+ "code": "luy",
+ "name": "lujia"
+ },
+ "luo": {
+ "code": "luo",
+ "name": "Luo"
+ },
+ "lb": {
+ "code": "lb",
+ "name": "luxemburgi"
+ },
+ "mk": {
+ "code": "mk",
+ "name": "macedón"
+ },
+ "jmc": {
+ "code": "jmc",
+ "name": "machame"
+ },
+ "hu": {
+ "code": "hu",
+ "name": "magyar"
+ },
+ "kde": {
+ "code": "kde",
+ "name": "makonde"
+ },
+ "mgh": {
+ "code": "mgh",
+ "name": "makua-metó"
+ },
+ "ms": {
+ "code": "ms",
+ "name": "maláj"
+ },
+ "ml": {
+ "code": "ml",
+ "name": "malajálam"
+ },
+ "mg": {
+ "code": "mg",
+ "name": "málgas"
+ },
+ "mt": {
+ "code": "mt",
+ "name": "máltai"
+ },
+ "mr": {
+ "code": "mr",
+ "name": "marathi"
+ },
+ "zgh": {
+ "code": "zgh",
+ "name": "marokkói tamazight"
+ },
+ "mas": {
+ "code": "mas",
+ "name": "masai"
+ },
+ "mfe": {
+ "code": "mfe",
+ "name": "mauritiusi kreol"
+ },
+ "mer": {
+ "code": "mer",
+ "name": "meru"
+ },
+ "ar-001": {
+ "code": "ar-001",
+ "name": "modern szabányos arab"
+ },
+ "ro-MD": {
+ "code": "ro-MD",
+ "name": "moldvai"
+ },
+ "mn": {
+ "code": "mn",
+ "name": "mongol"
+ },
+ "mua": {
+ "code": "mua",
+ "name": "mundang"
+ },
+ "naq": {
+ "code": "naq",
+ "name": "nama"
+ },
+ "de": {
+ "code": "de",
+ "name": "német"
+ },
+ "ne": {
+ "code": "ne",
+ "name": "nepáli"
+ },
+ "jgo": {
+ "code": "jgo",
+ "name": "ngomba"
+ },
+ "nmg": {
+ "code": "nmg",
+ "name": "ngumba"
+ },
+ "nb": {
+ "code": "nb",
+ "name": "norvég bokmal"
+ },
+ "nn": {
+ "code": "nn",
+ "name": "norvég nynorsk"
+ },
+ "nus": {
+ "code": "nus",
+ "name": "nuer"
+ },
+ "nyn": {
+ "code": "nyn",
+ "name": "nyankole"
+ },
+ "it": {
+ "code": "it",
+ "name": "olasz"
+ },
+ "or": {
+ "code": "or",
+ "name": "orija"
+ },
+ "ru": {
+ "code": "ru",
+ "name": "orosz"
+ },
+ "de-AT": {
+ "code": "de-AT",
+ "name": "osztrák német"
+ },
+ "hy": {
+ "code": "hy",
+ "name": "örmény"
+ },
+ "pa": {
+ "code": "pa",
+ "name": "pandzsábi"
+ },
+ "ps": {
+ "code": "ps",
+ "name": "pastu"
+ },
+ "fa": {
+ "code": "fa",
+ "name": "perzsa"
+ },
+ "pt": {
+ "code": "pt",
+ "name": "portugál"
+ },
+ "rm": {
+ "code": "rm",
+ "name": "réto-román"
+ },
+ "ro": {
+ "code": "ro",
+ "name": "román"
+ },
+ "rof": {
+ "code": "rof",
+ "name": "rombo"
+ },
+ "rwk": {
+ "code": "rwk",
+ "name": "rwo"
+ },
+ "ksb": {
+ "code": "ksb",
+ "name": "sambala"
+ },
+ "gd": {
+ "code": "gd",
+ "name": "skót gael"
+ },
+ "sn": {
+ "code": "sn",
+ "name": "sona"
+ },
+ "es": {
+ "code": "es",
+ "name": "spanyol"
+ },
+ "es-MX": {
+ "code": "es-MX",
+ "name": "spanyol (mexikói)"
+ },
+ "de-CH": {
+ "code": "de-CH",
+ "name": "svájci felnémet"
+ },
+ "fr-CH": {
+ "code": "fr-CH",
+ "name": "svájci francia"
+ },
+ "gsw": {
+ "code": "gsw",
+ "name": "svájci német"
+ },
+ "sv": {
+ "code": "sv",
+ "name": "svéd"
+ },
+ "saq": {
+ "code": "saq",
+ "name": "szamburu"
+ },
+ "sg": {
+ "code": "sg",
+ "name": "szangó"
+ },
+ "sbp": {
+ "code": "sbp",
+ "name": "szangu"
+ },
+ "twq": {
+ "code": "twq",
+ "name": "szavák"
+ },
+ "seh": {
+ "code": "seh",
+ "name": "szena"
+ },
+ "sr": {
+ "code": "sr",
+ "name": "szerb"
+ },
+ "si": {
+ "code": "si",
+ "name": "szingaléz"
+ },
+ "sk": {
+ "code": "sk",
+ "name": "szlovák"
+ },
+ "sl": {
+ "code": "sl",
+ "name": "szlovén"
+ },
+ "xog": {
+ "code": "xog",
+ "name": "szoga"
+ },
+ "so": {
+ "code": "so",
+ "name": "szomáliai"
+ },
+ "sw": {
+ "code": "sw",
+ "name": "szuahéli"
+ },
+ "shi": {
+ "code": "shi",
+ "name": "tachelhit"
+ },
+ "dav": {
+ "code": "dav",
+ "name": "taita"
+ },
+ "ta": {
+ "code": "ta",
+ "name": "tamil"
+ },
+ "te": {
+ "code": "te",
+ "name": "telugu"
+ },
+ "teo": {
+ "code": "teo",
+ "name": "teszó"
+ },
+ "th": {
+ "code": "th",
+ "name": "thai"
+ },
+ "bo": {
+ "code": "bo",
+ "name": "tibeti"
+ },
+ "ti": {
+ "code": "ti",
+ "name": "tigrinja"
+ },
+ "to": {
+ "code": "to",
+ "name": "tonga"
+ },
+ "tr": {
+ "code": "tr",
+ "name": "török"
+ },
+ "ug": {
+ "code": "ug",
+ "name": "ujgur"
+ },
+ "uk": {
+ "code": "uk",
+ "name": "ukrán"
+ },
+ "ur": {
+ "code": "ur",
+ "name": "urdu"
+ },
+ "uz": {
+ "code": "uz",
+ "name": "üzbég"
+ },
+ "vai": {
+ "code": "vai",
+ "name": "Vai"
+ },
+ "vi": {
+ "code": "vi",
+ "name": "vietnami"
+ },
+ "vun": {
+ "code": "vun",
+ "name": "vunjo"
+ },
+ "cy": {
+ "code": "cy",
+ "name": "walesi"
+ },
+ "wae": {
+ "code": "wae",
+ "name": "walser"
+ },
+ "dje": {
+ "code": "dje",
+ "name": "zarma"
+ },
+ "zu": {
+ "code": "zu",
+ "name": "zulu"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/language/hy.json b/library/intl/resources/language/hy.json
new file mode 100644
index 000000000..df2c2721b
--- /dev/null
+++ b/library/intl/resources/language/hy.json
@@ -0,0 +1,738 @@
+{
+ "ast": {
+ "code": "ast",
+ "name": "Asturian"
+ },
+ "bas": {
+ "code": "bas",
+ "name": "Basaa"
+ },
+ "ksh": {
+ "code": "ksh",
+ "name": "Colognian"
+ },
+ "ewo": {
+ "code": "ewo",
+ "name": "Ewondo"
+ },
+ "fur": {
+ "code": "fur",
+ "name": "Friulian"
+ },
+ "ff": {
+ "code": "ff",
+ "name": "Fulah"
+ },
+ "wae": {
+ "code": "wae",
+ "name": "Walser"
+ },
+ "yav": {
+ "code": "yav",
+ "name": "Yangben"
+ },
+ "az": {
+ "code": "az",
+ "name": "Õ¡Õ¤Ö€Õ¢Õ¥Õ»Õ¡Õ¶Õ¥Ö€Õ¥Õ¶"
+ },
+ "sq": {
+ "code": "sq",
+ "name": "Õ¡Õ¬Õ¢Õ¡Õ¶Õ¥Ö€Õ¥Õ¶"
+ },
+ "agq": {
+ "code": "agq",
+ "name": "Õ¡Õ²Õ¥Õ´"
+ },
+ "en-US": {
+ "code": "en-US",
+ "name": "Õ¡Õ´Õ¥Ö€Õ«Õ¯ÕµÕ¡Õ¶ Õ¡Õ¶Õ£Õ¬Õ¥Ö€Õ¥Õ¶"
+ },
+ "am": {
+ "code": "am",
+ "name": "Õ¡Õ´Õ°Õ¡Ö€Õ¥Ö€Õ¥Õ¶"
+ },
+ "en": {
+ "code": "en",
+ "name": "Õ¡Õ¶Õ£Õ¬Õ¥Ö€Õ¥Õ¶"
+ },
+ "asa": {
+ "code": "asa",
+ "name": "Õ¡Õ½Õ¸Ö‚"
+ },
+ "zh-Hant": {
+ "code": "zh-Hant",
+ "name": "Õ¡Õ¾Õ¡Õ¶Õ¤Õ¡Õ¯Õ¡Õ¶ Õ¹Õ«Õ¶Õ¡Ö€Õ¥Õ¶"
+ },
+ "en-AU": {
+ "code": "en-AU",
+ "name": "Õ¡Õ¾Õ½Õ¿Ö€Õ¡Õ¬Õ¡Õ¯Õ¡Õ¶ Õ¡Õ¶Õ£Õ¬Õ¥Ö€Õ¥Õ¶"
+ },
+ "de-AT": {
+ "code": "de-AT",
+ "name": "Õ¡Õ¾Õ½Õ¿Ö€Õ«Õ¡Õ¯Õ¡Õ¶ Õ£Õ¥Ö€Õ´Õ¡Õ¶Õ¥Ö€Õ¥Õ¶"
+ },
+ "ar": {
+ "code": "ar",
+ "name": "Õ¡Ö€Õ¡Õ¢Õ¥Ö€Õ¥Õ¶"
+ },
+ "fy": {
+ "code": "fy",
+ "name": "Õ¡Ö€Ö‡Õ´Õ¿ÕµÕ¡Õ¶ Ö†Ö€Õ«Õ¦Õ¥Ö€Õ¥Õ¶"
+ },
+ "ak": {
+ "code": "ak",
+ "name": "Õ¡Ö„Õ¡Õ¶Õ¥Ö€Õ¥Õ¶"
+ },
+ "af": {
+ "code": "af",
+ "name": "Õ¡Ö†Ö€Õ«Õ¯Õ¡Õ¡Õ¶Õ½"
+ },
+ "bm": {
+ "code": "bm",
+ "name": "Õ¢Õ¡Õ´Õ¢Õ¡Ö€Õ¡"
+ },
+ "eu": {
+ "code": "eu",
+ "name": "Õ¢Õ¡Õ½Õ¯Õ¥Ö€Õ¥Õ¶"
+ },
+ "ksf": {
+ "code": "ksf",
+ "name": "Õ¢Õ¡Ö†Õ«Õ¡"
+ },
+ "be": {
+ "code": "be",
+ "name": "Õ¢Õ¥Õ¬Õ¡Õ¼Õ¸Ö‚Õ½Õ¥Ö€Õ¥Õ¶"
+ },
+ "bez": {
+ "code": "bez",
+ "name": "Õ¢Õ¥Õ¶Õ¡"
+ },
+ "bn": {
+ "code": "bn",
+ "name": "Õ¢Õ¥Õ¶Õ£Õ¡Õ¬Õ¥Ö€Õ¥Õ¶"
+ },
+ "my": {
+ "code": "my",
+ "name": "Õ¢Õ«Ö€Õ´Õ¡ÕµÕ¥Ö€Õ¥Õ¶"
+ },
+ "brx": {
+ "code": "brx",
+ "name": "Õ¢Õ¸Õ¤Õ¸"
+ },
+ "bs": {
+ "code": "bs",
+ "name": "Õ¢Õ¸Õ½Õ¶Õ«Õ¥Ö€Õ¥Õ¶"
+ },
+ "bg": {
+ "code": "bg",
+ "name": "Õ¢Õ¸Ö‚Õ¬Õ²Õ¡Ö€Õ¥Ö€Õ¥Õ¶"
+ },
+ "pt-BR": {
+ "code": "pt-BR",
+ "name": "Õ¢Ö€Õ¡Õ¦Õ«Õ¬Õ¡Õ¯Õ¡Õ¶ ÕºÕ¸Ö€Õ¿Õ¸Ö‚Õ£Õ¡Õ¬Õ¥Ö€Õ¥Õ¶"
+ },
+ "br": {
+ "code": "br",
+ "name": "Õ¢Ö€Õ¥Õ¿Õ¸Õ¶Õ¥Ö€Õ¥Õ¶"
+ },
+ "en-GB": {
+ "code": "en-GB",
+ "name": "Õ¢Ö€Õ«Õ¿Õ¡Õ¶Õ¡Õ¯Õ¡Õ¶ Õ¡Õ¶Õ£Õ¬Õ¥Ö€Õ¥Õ¶"
+ },
+ "gd": {
+ "code": "gd",
+ "name": "Ô³Õ¡Õ¥Õ¬ÕµÕ¡Õ¶ Õ‡Õ¸Õ¿Õ¬Õ¡Õ¶Õ¤Õ¥Ö€Õ¥Õ¶"
+ },
+ "gl": {
+ "code": "gl",
+ "name": "Õ£Õ¡Õ¬Õ«Õ½Õ¥Ö€Õ¥Õ¶"
+ },
+ "lg": {
+ "code": "lg",
+ "name": "Õ£Õ¡Õ¶Õ¤Õ¡"
+ },
+ "de": {
+ "code": "de",
+ "name": "Õ£Õ¥Ö€Õ´Õ¡Õ¶Õ¥Ö€Õ¥Õ¶"
+ },
+ "gu": {
+ "code": "gu",
+ "name": "Õ£Õ¸Ö‚Õ»Õ¡Ö€Õ¡Õ©Õ«"
+ },
+ "guz": {
+ "code": "guz",
+ "name": "Õ£Õ¸Ö‚Õ½Õ«"
+ },
+ "da": {
+ "code": "da",
+ "name": "Õ¤Õ¡Õ¶Õ«Õ¥Ö€Õ¥Õ¶"
+ },
+ "he": {
+ "code": "he",
+ "name": "Õ¥Õ¢Ö€Õ¡ÕµÕ¥Ö€Õ¥Õ¶"
+ },
+ "es-ES": {
+ "code": "es-ES",
+ "name": "Õ¥Õ¾Ö€Õ¸ÕºÕ¡Õ¯Õ¡Õ¶ Õ«Õ½ÕºÕ¡Õ¶Õ¥Ö€Õ¥Õ¶"
+ },
+ "pt-PT": {
+ "code": "pt-PT",
+ "name": "Õ¥Õ¾Ö€Õ¸ÕºÕ¡Õ¯Õ¡Õ¶ ÕºÕ¸Ö€Õ¿Õ¸Ö‚Õ£Õ¡Õ¬Õ¥Ö€Õ¥Õ¶"
+ },
+ "dje": {
+ "code": "dje",
+ "name": "Õ¦Õ¡Ö€Õ´Õ¡"
+ },
+ "zu": {
+ "code": "zu",
+ "name": "Õ¦Õ¸Ö‚Õ¬Õ¸Ö‚Õ½Õ¥Ö€Õ¥Õ¶"
+ },
+ "ebu": {
+ "code": "ebu",
+ "name": "Õ§Õ´Õ¢Õ¸Ö‚"
+ },
+ "eo": {
+ "code": "eo",
+ "name": "Õ§Õ½ÕºÕ¥Ö€Õ¡Õ¶Õ¿Õ¸"
+ },
+ "et": {
+ "code": "et",
+ "name": "Õ§Õ½Õ¿Õ¸Õ¶Õ¥Ö€Õ¥Õ¶"
+ },
+ "ee": {
+ "code": "ee",
+ "name": "Õ§Õ¾Õ¥"
+ },
+ "dav": {
+ "code": "dav",
+ "name": "Õ©Õ¡Õ«Õ©Õ¡"
+ },
+ "ta": {
+ "code": "ta",
+ "name": "Õ©Õ¡Õ´Õ«Õ¬Õ¥Ö€Õ¥Õ¶"
+ },
+ "th": {
+ "code": "th",
+ "name": "Õ©Õ¡ÕµÕ¥Ö€Õ¥Õ¶"
+ },
+ "te": {
+ "code": "te",
+ "name": "Õ©Õ¥Õ¬Õ¸Ö‚Õ£Õ¸Ö‚"
+ },
+ "ti": {
+ "code": "ti",
+ "name": "Õ©Õ«Õ£Ö€Õ«Õ¶Õ«Õ¡"
+ },
+ "tr": {
+ "code": "tr",
+ "name": "Õ©Õ¸Ö‚Ö€Ö„Õ¥Ö€Õ¥Õ¶"
+ },
+ "ar-001": {
+ "code": "ar-001",
+ "name": "ÕªÕ¡Õ´Õ¡Õ¶Õ¡Õ¯Õ¡Õ¯Õ«Ö Õ½Õ¿Õ¡Õ¶Õ¤Õ¡Ö€Õ¿ Õ¡Ö€Õ¡Õ¢Õ¥Ö€Õ¥Õ¶"
+ },
+ "id": {
+ "code": "id",
+ "name": "Õ«Õ¶Õ¤Õ¸Õ¶Õ¥Õ¦Õ¥Ö€Õ¥Õ¶"
+ },
+ "ga": {
+ "code": "ga",
+ "name": "Õ«Õ¼Õ¬Õ¡Õ¶Õ¤Õ¥Ö€Õ¥Õ¶"
+ },
+ "is": {
+ "code": "is",
+ "name": "Õ«Õ½Õ¬Õ¡Õ¶Õ¤Õ¥Ö€Õ¥Õ¶"
+ },
+ "es": {
+ "code": "es",
+ "name": "Õ«Õ½ÕºÕ¡Õ¶Õ¥Ö€Õ¥Õ¶"
+ },
+ "it": {
+ "code": "it",
+ "name": "Õ«Õ¿Õ¡Õ¬Õ¥Ö€Õ¥Õ¶"
+ },
+ "lag": {
+ "code": "lag",
+ "name": "Õ¬Õ¡Õ¶Õ£Õ«"
+ },
+ "lo": {
+ "code": "lo",
+ "name": "Õ¬Õ¡Õ¸Õ½Õ¥Ö€Õ¥Õ¶"
+ },
+ "lv": {
+ "code": "lv",
+ "name": "Õ¬Õ¡Õ¿Õ¾Õ«Õ¥Ö€Õ¥Õ¶"
+ },
+ "pl": {
+ "code": "pl",
+ "name": "Õ¬Õ¥Õ°Õ¥Ö€Õ¥Õ¶"
+ },
+ "ln": {
+ "code": "ln",
+ "name": "Õ¬Õ«Õ¶Õ£Õ¡Õ¬Õ¡"
+ },
+ "lt": {
+ "code": "lt",
+ "name": "Õ¬Õ«Õ¿Õ¾Õ¥Ö€Õ¥Õ¶"
+ },
+ "lb": {
+ "code": "lb",
+ "name": "Õ¬ÕµÕ¸Ö‚Ö„Õ½Õ¥Õ´Õ¢Õ¸Ö‚Ö€Õ£Õ¥Ö€Õ¥Õ¶"
+ },
+ "lu": {
+ "code": "lu",
+ "name": "Õ¬Õ¸Ö‚Õ¢Õ¡-Õ¯Õ¡Õ¿Õ¡Õ¶Õ£Õ¡"
+ },
+ "luy": {
+ "code": "luy",
+ "name": "Õ¬Õ¸Ö‚ÕµÕ¡"
+ },
+ "luo": {
+ "code": "luo",
+ "name": "Õ¬Õ¸Ö‚Õ¸"
+ },
+ "hr": {
+ "code": "hr",
+ "name": "Õ­Õ¸Ö€Õ¾Õ¡Õ©Õ¥Ö€Õ¥Õ¶"
+ },
+ "kab": {
+ "code": "kab",
+ "name": "Õ¯Õ¡Õ¢Õ«Õ¬Õ¥Ö€Õ¥Õ¶"
+ },
+ "kl": {
+ "code": "kl",
+ "name": "Õ¯Õ¡Õ¬Õ¡Õ¡Õ¬Õ«Õ½Õ¸Ö‚Õ¿"
+ },
+ "kln": {
+ "code": "kln",
+ "name": "Õ¯Õ¡Õ¬Õ¥Õ¶Õ»Õ«Õ¶"
+ },
+ "kam": {
+ "code": "kam",
+ "name": "Õ¯Õ¡Õ´Õ¢Õ¡"
+ },
+ "en-CA": {
+ "code": "en-CA",
+ "name": "Õ¯Õ¡Õ¶Õ¡Õ¤Õ¡Õ¯Õ¡Õ¶ Õ¡Õ¶Õ£Õ¬Õ¥Ö€Õ¥Õ¶"
+ },
+ "fr-CA": {
+ "code": "fr-CA",
+ "name": "Õ¯Õ¡Õ¶Õ¡Õ¤Õ¡Õ¯Õ¡Õ¶ Ö†Ö€Õ¡Õ¶Õ½Õ¥Ö€Õ¥Õ¶"
+ },
+ "kn": {
+ "code": "kn",
+ "name": "Õ¯Õ¡Õ¶Õ¶Õ¡Õ¤Õ¡"
+ },
+ "ca": {
+ "code": "ca",
+ "name": "Õ¯Õ¡Õ¿Õ¡Õ¬Õ¡Õ¶Õ¥Ö€Õ¥Õ¶"
+ },
+ "tzm": {
+ "code": "tzm",
+ "name": "Õ¯Õ¥Õ¶Õ¿Ö€Õ¸Õ¶Õ¡Õ¿Õ¬Õ¡Õ½ÕµÕ¡Õ¶ Õ©Õ¡Õ´Õ¡Õ¦Õ«Õ­Õ¿"
+ },
+ "ki": {
+ "code": "ki",
+ "name": "Õ¯Õ«Õ¯Õ¸Ö‚ÕµÕ¸Ö‚"
+ },
+ "khq": {
+ "code": "khq",
+ "name": "Õ¯Õ¸ÕµÖ€Õ¡ Õ¹Õ«Õ¶Õ«"
+ },
+ "ses": {
+ "code": "ses",
+ "name": "Õ¯Õ¸ÕµÖ€Õ¡Õ¢Õ¸Ö€Õ¸ Õ½Õ¥Õ¶Õ¶Õ«"
+ },
+ "swc": {
+ "code": "swc",
+ "name": "Õ¯Õ¸Õ¶Õ£Õ¸ÕµÕ« Õ½Õ¸Ö‚Õ¡Õ°Õ«Õ¬Õ«"
+ },
+ "ko": {
+ "code": "ko",
+ "name": "Õ¯Õ¸Ö€Õ¥Õ¥Ö€Õ¥Õ¶"
+ },
+ "kea": {
+ "code": "kea",
+ "name": "Õ¯Õ¸Ö‚Õ¢Õ¡Õ¾Õ¥Ö€Õ¤Õ«Õ¡Õ¶Õ¸Ö‚"
+ },
+ "nmg": {
+ "code": "nmg",
+ "name": "Õ¯Õ¾Õ¡Õ½Õ«Õ¸"
+ },
+ "hy": {
+ "code": "hy",
+ "name": "Õ°Õ¡ÕµÕ¥Ö€Õ¥Õ¶"
+ },
+ "ha": {
+ "code": "ha",
+ "name": "Õ°Õ¡Õ¸Ö‚Õ½Õ¡"
+ },
+ "hi": {
+ "code": "hi",
+ "name": "Õ°Õ«Õ¶Õ¤Õ«"
+ },
+ "nd": {
+ "code": "nd",
+ "name": "Õ°ÕµÕ¸Ö‚Õ½Õ«Õ½Õ¡ÕµÕ«Õ¶ Õ¶Õ¤Õ¥Õ¢Õ¥Õ¬Õ¥"
+ },
+ "se": {
+ "code": "se",
+ "name": "Õ°ÕµÕ¸Ö‚Õ½Õ«Õ½Õ¡ÕµÕ«Õ¶ Õ½Õ¡Õ´Õ«"
+ },
+ "nl": {
+ "code": "nl",
+ "name": "Õ°Õ¸Õ¬Õ¡Õ¶Õ¤Õ¥Ö€Õ¥Õ¶"
+ },
+ "el": {
+ "code": "el",
+ "name": "Õ°Õ¸Ö‚Õ¶Õ¡Ö€Õ¥Õ¶"
+ },
+ "hu": {
+ "code": "hu",
+ "name": "Õ°Õ¸Ö‚Õ¶Õ£Õ¡Ö€Õ¥Ö€Õ¥Õ¶"
+ },
+ "kk": {
+ "code": "kk",
+ "name": "Õ²Õ¡Õ¦Õ¡Õ­Õ¥Ö€Õ¥Õ¶"
+ },
+ "ky": {
+ "code": "ky",
+ "name": "Õ²Ö€Õ²Õ¦Õ¥Ö€Õ¥Õ¶"
+ },
+ "ja": {
+ "code": "ja",
+ "name": "Õ³Õ¡ÕºÕ¸Õ¶Õ¥Ö€Õ¥Õ¶"
+ },
+ "mg": {
+ "code": "mg",
+ "name": "Õ´Õ¡Õ¬Õ¡Õ£Õ¡Õ½Õ¥Ö€Õ¥Õ¶"
+ },
+ "ml": {
+ "code": "ml",
+ "name": "Õ´Õ¡Õ¬Õ¡ÕµÕ¡Õ¬Õ¡Õ´"
+ },
+ "ms": {
+ "code": "ms",
+ "name": "Õ´Õ¡Õ¬Õ¡ÕµÕ¥Ö€Õ¥Õ¶"
+ },
+ "mt": {
+ "code": "mt",
+ "name": "Õ´Õ¡Õ¬Õ©Õ¥Ö€Õ¥Õ¶"
+ },
+ "mk": {
+ "code": "mk",
+ "name": "Õ´Õ¡Õ¯Õ¥Õ¤Õ¸Õ¶Õ¥Ö€Õ¥Õ¶"
+ },
+ "kde": {
+ "code": "kde",
+ "name": "Õ´Õ¡Õ¯Õ¸Õ¶Õ¤Õ¥"
+ },
+ "jmc": {
+ "code": "jmc",
+ "name": "Õ´Õ¡Õ·Õ¡Õ´Õ¥"
+ },
+ "mas": {
+ "code": "mas",
+ "name": "Õ´Õ¡Õ½Õ¡Õ«"
+ },
+ "mr": {
+ "code": "mr",
+ "name": "Õ´Õ¡Ö€Õ¡Õ©Õ«"
+ },
+ "mgh": {
+ "code": "mgh",
+ "name": "Õ´Õ¡Ö„Õ¸Ö‚Õ¡-Õ´Õ¥Õ¿Õ¿Õ¸"
+ },
+ "mer": {
+ "code": "mer",
+ "name": "Õ´Õ¥Ö€Õ¸Ö‚"
+ },
+ "es-MX": {
+ "code": "es-MX",
+ "name": "Õ´Õ¥Ö„Õ½Õ«Õ¯Õ¡Õ¯Õ¡Õ¶ Õ«Õ½ÕºÕ¡Õ¶Õ¥Ö€Õ¥Õ¶"
+ },
+ "ro-MD": {
+ "code": "ro-MD",
+ "name": "Õ´Õ¸Õ¬Õ¤Õ¸Õ¾Õ¥Ö€Õ¥Õ¶"
+ },
+ "mn": {
+ "code": "mn",
+ "name": "Õ´Õ¸Õ¶Õ²Õ¸Õ¬Õ¥Ö€Õ¥Õ¶"
+ },
+ "mfe": {
+ "code": "mfe",
+ "name": "Õ´Õ¸Ö€Õ«Õ½ÕµÕ¥Õ¶"
+ },
+ "mua": {
+ "code": "mua",
+ "name": "Õ´Õ¸Ö‚Õ¶Õ¤Õ¡Õ¶Õ£"
+ },
+ "yo": {
+ "code": "yo",
+ "name": "ÕµÕ¸Ö€Õ¸Ö‚Õ¢Õ¡"
+ },
+ "naq": {
+ "code": "naq",
+ "name": "Õ¶Õ¡Õ´Õ¡"
+ },
+ "jgo": {
+ "code": "jgo",
+ "name": "Õ¶Õ£Õ¸Õ´Õ¢Õ¡"
+ },
+ "ne": {
+ "code": "ne",
+ "name": "Õ¶Õ¥ÕºÕ¡Õ¬Õ¥Ö€Õ¥Õ¶"
+ },
+ "nyn": {
+ "code": "nyn",
+ "name": "Õ¶ÕµÕ¡Õ¶Õ¯Õ¸Õ¬Õ¥"
+ },
+ "nb": {
+ "code": "nb",
+ "name": "Õ¶Õ¸Ö€Õ¾Õ¥Õ£Õ¥Ö€Õ¥Õ¶ Õ¢Õ¸Ö‚Õ¯Õ´Õ¸Õ¬"
+ },
+ "nn": {
+ "code": "nn",
+ "name": "Õ¶Õ¸Ö€Õ¾Õ¥Õ£Õ¥Ö€Õ¥Õ¶ Õ¶ÕµÕ¸Ö‚Õ¶Õ¸Ö€Õ½Õ¯"
+ },
+ "nus": {
+ "code": "nus",
+ "name": "Õ¶Õ¸Ö‚Õ¥Ö€"
+ },
+ "ksb": {
+ "code": "ksb",
+ "name": "Õ·Õ¡Õ´Õ¢Õ¡Õ¬Õ¡"
+ },
+ "chr": {
+ "code": "chr",
+ "name": "Õ·Õ¥Ö€Õ¸Õ¯Õ«"
+ },
+ "sn": {
+ "code": "sn",
+ "name": "Õ·Õ¸Õ¶Õ¡"
+ },
+ "sv": {
+ "code": "sv",
+ "name": "Õ·Õ¾Õ¥Õ¤Õ¥Ö€Õ¥Õ¶"
+ },
+ "de-CH": {
+ "code": "de-CH",
+ "name": "Õ·Õ¾Õ¥ÕµÖÕ¡Ö€Õ¡Õ¯Õ¡Õ¶ Õ¢Õ¡Ö€Õ±Ö€ Õ£Õ¥Ö€Õ´Õ¡Õ¶Õ¥Ö€Õ¥Õ¶"
+ },
+ "gsw": {
+ "code": "gsw",
+ "name": "Õ·Õ¾Õ¥ÕµÖÕ¡Ö€Õ¡Õ¯Õ¡Õ¶ Õ£Õ¥Ö€Õ´Õ¡Õ¶Õ¥Ö€Õ¥Õ¶"
+ },
+ "fr-CH": {
+ "code": "fr-CH",
+ "name": "Õ·Õ¾Õ¥ÕµÖÕ¡Ö€Õ¡Õ¯Õ¡Õ¶ Ö†Ö€Õ¡Õ¶Õ½Õ¥Ö€Õ¥Õ¶"
+ },
+ "cy": {
+ "code": "cy",
+ "name": "Õ¸Ö‚Õ¥Õ¬Õ½Õ¥Ö€Õ¥Õ¶"
+ },
+ "uz": {
+ "code": "uz",
+ "name": "Õ¸Ö‚Õ¦Õ¢Õ¥Õ¯Õ¥Ö€Õ¥Õ¶"
+ },
+ "uk": {
+ "code": "uk",
+ "name": "Õ¸Ö‚Õ¯Ö€Õ¡Õ«Õ¶Õ¥Ö€Õ¥Õ¶"
+ },
+ "ug": {
+ "code": "ug",
+ "name": "Õ¸Ö‚ÕµÕ²Õ¸Ö‚Ö€Õ¥Ö€Õ¥Õ¶"
+ },
+ "ur": {
+ "code": "ur",
+ "name": "Õ¸Ö‚Ö€Õ¤Õ¸Ö‚"
+ },
+ "cs": {
+ "code": "cs",
+ "name": "Õ¹Õ¥Õ­Õ¥Ö€Õ¥Õ¶"
+ },
+ "cgg": {
+ "code": "cgg",
+ "name": "Õ¹Õ«Õ£Õ¡"
+ },
+ "zh": {
+ "code": "zh",
+ "name": "Õ¹Õ«Õ¶Õ¡Ö€Õ¥Õ¶"
+ },
+ "zh-Hans": {
+ "code": "zh-Hans",
+ "name": "ÕºÕ¡Ö€Õ¦Õ¥ÖÕ¾Õ¡Õ® Õ¹Õ«Õ¶Õ¡Ö€Õ¥Õ¶"
+ },
+ "fa": {
+ "code": "fa",
+ "name": "ÕºÕ¡Ö€Õ½Õ¯Õ¥Ö€Õ¥Õ¶"
+ },
+ "pt": {
+ "code": "pt",
+ "name": "ÕºÕ¸Ö€Õ¿Õ¸Ö‚Õ£Õ¡Õ¬Õ¥Ö€Õ¥Õ¶"
+ },
+ "dyo": {
+ "code": "dyo",
+ "name": "Õ»Õ¸Õ¬Õ¡-Ö†Õ¸Õ¶ÕµÕ«"
+ },
+ "dz": {
+ "code": "dz",
+ "name": "Õ»Õ¸Õ¶Õ£Ö„Õ°Õ¡"
+ },
+ "rm": {
+ "code": "rm",
+ "name": "Õ¼Õ¸Õ´Õ¡Õ¶Õ·Õ¥Ö€Õ¥Õ¶"
+ },
+ "rof": {
+ "code": "rof",
+ "name": "Õ¼Õ¸Õ´Õ¢Õ¸"
+ },
+ "ro": {
+ "code": "ro",
+ "name": "Õ¼Õ¸Ö‚Õ´Õ«Õ¶Õ¥Ö€Õ¥Õ¶"
+ },
+ "rn": {
+ "code": "rn",
+ "name": "Õ¼Õ¸Ö‚Õ¶Õ¤Õ«"
+ },
+ "ru": {
+ "code": "ru",
+ "name": "Õ¼Õ¸Ö‚Õ½Õ¥Ö€Õ¥Õ¶"
+ },
+ "rwk": {
+ "code": "rwk",
+ "name": "Õ¼Õ¾Õ¡"
+ },
+ "saq": {
+ "code": "saq",
+ "name": "Õ½Õ¡Õ´Õ¢Õ¸Ö‚Ö€Õ¸Ö‚"
+ },
+ "sg": {
+ "code": "sg",
+ "name": "Õ½Õ¡Õ¶Õ£Õ¸"
+ },
+ "sbp": {
+ "code": "sbp",
+ "name": "Õ½Õ¡Õ¶Õ£Õ¸Ö‚"
+ },
+ "seh": {
+ "code": "seh",
+ "name": "Õ½Õ¥Õ¶Õ¡"
+ },
+ "sr": {
+ "code": "sr",
+ "name": "Õ½Õ¥Ö€Õ¢Õ¥Ö€Õ¥Õ¶"
+ },
+ "si": {
+ "code": "si",
+ "name": "Õ½Õ«Õ¶Õ°Õ¡Õ¬Õ¥Ö€Õ¥Õ¶"
+ },
+ "sk": {
+ "code": "sk",
+ "name": "Õ½Õ¬Õ¸Õ¾Õ¡Õ¯Õ¥Ö€Õ¥Õ¶"
+ },
+ "sl": {
+ "code": "sl",
+ "name": "Õ½Õ¬Õ¸Õ¾Õ¥Õ¶Õ¥Ö€Õ¥Õ¶"
+ },
+ "xog": {
+ "code": "xog",
+ "name": "Õ½Õ¸Õ£Õ¡"
+ },
+ "so": {
+ "code": "so",
+ "name": "Õ½Õ¸Õ´Õ¡Õ¬Õ«Õ¥Ö€Õ¥Õ¶"
+ },
+ "sw": {
+ "code": "sw",
+ "name": "Õ½Õ¸Ö‚Õ¡Õ°Õ«Õ¬Õ«"
+ },
+ "zgh": {
+ "code": "zgh",
+ "name": "Õ½Õ¿Õ¡Õ¶Õ¤Õ¡Ö€Õ¿ Õ´Õ¡Ö€Õ¸Õ¯Õ¡Õ¯Õ¡Õ¶ Õ©Õ¡Õ´Õ¡Õ¦Õ«Õ²Õ¿"
+ },
+ "dsb": {
+ "code": "dsb",
+ "name": "Õ½Õ¿Õ¸Ö€Õ«Õ¶ Õ½Õ¸Ö€Õ¢Õ«Õ¥Ö€Õ¥Õ¶"
+ },
+ "vai": {
+ "code": "vai",
+ "name": "Õ¾Õ¡Õ«"
+ },
+ "hsb": {
+ "code": "hsb",
+ "name": "Õ¾Õ¥Ö€Õ«Õ¶ Õ½Õ¸Ö€Õ¢Õ«Õ¥Ö€Õ¥Õ¶"
+ },
+ "vi": {
+ "code": "vi",
+ "name": "Õ¾Õ«Õ¥Õ¿Õ¶Õ¡Õ´Õ¥Ö€Õ¥Õ¶"
+ },
+ "vun": {
+ "code": "vun",
+ "name": "Õ¾Õ¸Ö‚Õ¶Õ»Õ¸"
+ },
+ "ka": {
+ "code": "ka",
+ "name": "Õ¾Ö€Õ¡ÖÕ¥Ö€Õ¥Õ¶"
+ },
+ "shi": {
+ "code": "shi",
+ "name": "Õ¿Õ¡Õ·Õ¥Õ¬Õ°Õ«Õ©"
+ },
+ "twq": {
+ "code": "twq",
+ "name": "Õ¿Õ¡Õ½Õ¡Õ¾Õ¡Ö„"
+ },
+ "teo": {
+ "code": "teo",
+ "name": "Õ¿Õ¥Õ½Õ¸"
+ },
+ "bo": {
+ "code": "bo",
+ "name": "Õ¿Õ«Õ¢Õ¥Õ©Õ¥Ö€Õ¥Õ¶"
+ },
+ "to": {
+ "code": "to",
+ "name": "Õ¿Õ¸Õ¶Õ£Õ¡"
+ },
+ "pa": {
+ "code": "pa",
+ "name": "ÖƒÕ¥Õ¶Õ»Õ¡Õ¢Õ¥Ö€Õ¥Õ¶"
+ },
+ "ps": {
+ "code": "ps",
+ "name": "ÖƒÕ¸Ö‚Õ·Õ©Õ¸Ö‚"
+ },
+ "ks": {
+ "code": "ks",
+ "name": "Ö„Õ¡Õ·Õ´Õ«Ö€Õ¥Ö€Õ¥Õ¶"
+ },
+ "km": {
+ "code": "km",
+ "name": "Ö„Õ´Õ¥Ö€Õ¥Ö€Õ¥Õ¶"
+ },
+ "or": {
+ "code": "or",
+ "name": "Ö…Ö€Õ«ÕµÕ¡"
+ },
+ "fo": {
+ "code": "fo",
+ "name": "Ö†Õ¡Ö€ÕµÕ¸Ö€Õ¥Ö€Õ¥Õ¶"
+ },
+ "fil": {
+ "code": "fil",
+ "name": "Ö†Õ«Õ¬Õ«ÕºÕ«Õ¶Õ¥Ö€Õ¥Õ¶"
+ },
+ "fi": {
+ "code": "fi",
+ "name": "Ö†Õ«Õ¶Õ¶Õ¥Ö€Õ¥Õ¶"
+ },
+ "nl-BE": {
+ "code": "nl-BE",
+ "name": "Ö†Õ¬Õ¡Õ´Õ¡Õ¶Õ¤Õ¥Ö€Õ¥Õ¶"
+ },
+ "fr": {
+ "code": "fr",
+ "name": "Ö†Ö€Õ¡Õ¶Õ½Õ¥Ö€Õ¥Õ¶"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/language/id.json b/library/intl/resources/language/id.json
new file mode 100644
index 000000000..7611d98ca
--- /dev/null
+++ b/library/intl/resources/language/id.json
@@ -0,0 +1,738 @@
+{
+ "af": {
+ "code": "af",
+ "name": "Afrikaans"
+ },
+ "agq": {
+ "code": "agq",
+ "name": "Aghem"
+ },
+ "ak": {
+ "code": "ak",
+ "name": "Akan"
+ },
+ "sq": {
+ "code": "sq",
+ "name": "Albania"
+ },
+ "am": {
+ "code": "am",
+ "name": "Amharik"
+ },
+ "ar": {
+ "code": "ar",
+ "name": "Arab"
+ },
+ "ar-001": {
+ "code": "ar-001",
+ "name": "Arab Standar Modern"
+ },
+ "hy": {
+ "code": "hy",
+ "name": "Armenia"
+ },
+ "ast": {
+ "code": "ast",
+ "name": "Astur"
+ },
+ "asa": {
+ "code": "asa",
+ "name": "Asu"
+ },
+ "az": {
+ "code": "az",
+ "name": "Azerbaijan"
+ },
+ "ksf": {
+ "code": "ksf",
+ "name": "Bafia"
+ },
+ "id": {
+ "code": "id",
+ "name": "Bahasa Indonesia"
+ },
+ "bm": {
+ "code": "bm",
+ "name": "Bambara"
+ },
+ "bas": {
+ "code": "bas",
+ "name": "Basa"
+ },
+ "eu": {
+ "code": "eu",
+ "name": "Bask"
+ },
+ "nl": {
+ "code": "nl",
+ "name": "Belanda"
+ },
+ "be": {
+ "code": "be",
+ "name": "Belarusia"
+ },
+ "bez": {
+ "code": "bez",
+ "name": "Bena"
+ },
+ "bn": {
+ "code": "bn",
+ "name": "Bengali"
+ },
+ "brx": {
+ "code": "brx",
+ "name": "Bodo"
+ },
+ "nb": {
+ "code": "nb",
+ "name": "Bokmål Norwegia"
+ },
+ "bs": {
+ "code": "bs",
+ "name": "Bosnia"
+ },
+ "br": {
+ "code": "br",
+ "name": "Breton"
+ },
+ "bg": {
+ "code": "bg",
+ "name": "Bulgar"
+ },
+ "my": {
+ "code": "my",
+ "name": "Burma"
+ },
+ "chr": {
+ "code": "chr",
+ "name": "Cherokee"
+ },
+ "cs": {
+ "code": "cs",
+ "name": "Cheska"
+ },
+ "zh": {
+ "code": "zh",
+ "name": "China"
+ },
+ "zh-Hans": {
+ "code": "zh-Hans",
+ "name": "China (Aksara Sederhana)"
+ },
+ "zh-Hant": {
+ "code": "zh-Hant",
+ "name": "China (Aksara Tradisional)"
+ },
+ "da": {
+ "code": "da",
+ "name": "Dansk"
+ },
+ "ksh": {
+ "code": "ksh",
+ "name": "Dialek Kolsch"
+ },
+ "dz": {
+ "code": "dz",
+ "name": "Dzongkha"
+ },
+ "ebu": {
+ "code": "ebu",
+ "name": "Embu"
+ },
+ "eo": {
+ "code": "eo",
+ "name": "Esperanto"
+ },
+ "et": {
+ "code": "et",
+ "name": "Esti"
+ },
+ "ee": {
+ "code": "ee",
+ "name": "Ewe"
+ },
+ "ewo": {
+ "code": "ewo",
+ "name": "Ewondo"
+ },
+ "fo": {
+ "code": "fo",
+ "name": "Faro"
+ },
+ "fil": {
+ "code": "fil",
+ "name": "Filipino"
+ },
+ "nl-BE": {
+ "code": "nl-BE",
+ "name": "Flemish"
+ },
+ "fy": {
+ "code": "fy",
+ "name": "Frisia Barat"
+ },
+ "fur": {
+ "code": "fur",
+ "name": "Friuli"
+ },
+ "ff": {
+ "code": "ff",
+ "name": "Fula"
+ },
+ "gd": {
+ "code": "gd",
+ "name": "Gaelik Skotlandia"
+ },
+ "gl": {
+ "code": "gl",
+ "name": "Galisia"
+ },
+ "lg": {
+ "code": "lg",
+ "name": "Ganda"
+ },
+ "ka": {
+ "code": "ka",
+ "name": "Georgia"
+ },
+ "gu": {
+ "code": "gu",
+ "name": "Gujarati"
+ },
+ "guz": {
+ "code": "guz",
+ "name": "Gusii"
+ },
+ "ha": {
+ "code": "ha",
+ "name": "Hausa"
+ },
+ "hi": {
+ "code": "hi",
+ "name": "Hindi"
+ },
+ "hu": {
+ "code": "hu",
+ "name": "Hungaria"
+ },
+ "he": {
+ "code": "he",
+ "name": "Ibrani"
+ },
+ "en": {
+ "code": "en",
+ "name": "Inggris"
+ },
+ "en-US": {
+ "code": "en-US",
+ "name": "Inggris Amerika"
+ },
+ "en-AU": {
+ "code": "en-AU",
+ "name": "Inggris Australia"
+ },
+ "en-GB": {
+ "code": "en-GB",
+ "name": "Inggris Inggris"
+ },
+ "en-CA": {
+ "code": "en-CA",
+ "name": "Inggris Kanada"
+ },
+ "ga": {
+ "code": "ga",
+ "name": "Irlandia"
+ },
+ "is": {
+ "code": "is",
+ "name": "Islandia"
+ },
+ "it": {
+ "code": "it",
+ "name": "Italia"
+ },
+ "ja": {
+ "code": "ja",
+ "name": "Jepang"
+ },
+ "de": {
+ "code": "de",
+ "name": "Jerman"
+ },
+ "de-AT": {
+ "code": "de-AT",
+ "name": "Jerman Austria"
+ },
+ "gsw": {
+ "code": "gsw",
+ "name": "Jerman Swiss"
+ },
+ "de-CH": {
+ "code": "de-CH",
+ "name": "Jerman Tinggi Swiss"
+ },
+ "dyo": {
+ "code": "dyo",
+ "name": "Jola-Fonyi"
+ },
+ "kea": {
+ "code": "kea",
+ "name": "Kabuverdianu"
+ },
+ "kab": {
+ "code": "kab",
+ "name": "Kabyle"
+ },
+ "kl": {
+ "code": "kl",
+ "name": "Kalaallisut"
+ },
+ "kln": {
+ "code": "kln",
+ "name": "Kalenjin"
+ },
+ "kam": {
+ "code": "kam",
+ "name": "Kamba"
+ },
+ "kn": {
+ "code": "kn",
+ "name": "Kannada"
+ },
+ "ks": {
+ "code": "ks",
+ "name": "Kashmir"
+ },
+ "ca": {
+ "code": "ca",
+ "name": "Katalan"
+ },
+ "kk": {
+ "code": "kk",
+ "name": "Kazakh"
+ },
+ "km": {
+ "code": "km",
+ "name": "Khmer"
+ },
+ "cgg": {
+ "code": "cgg",
+ "name": "Kiga"
+ },
+ "ki": {
+ "code": "ki",
+ "name": "Kikuyu"
+ },
+ "ky": {
+ "code": "ky",
+ "name": "Kirgiz"
+ },
+ "swc": {
+ "code": "swc",
+ "name": "Kongo Swahili"
+ },
+ "ko": {
+ "code": "ko",
+ "name": "Korea"
+ },
+ "khq": {
+ "code": "khq",
+ "name": "Koyra Chiini"
+ },
+ "ses": {
+ "code": "ses",
+ "name": "Koyraboro Senni"
+ },
+ "hr": {
+ "code": "hr",
+ "name": "Kroasia"
+ },
+ "nmg": {
+ "code": "nmg",
+ "name": "Kwasio"
+ },
+ "lag": {
+ "code": "lag",
+ "name": "Langi"
+ },
+ "lo": {
+ "code": "lo",
+ "name": "Lao"
+ },
+ "lv": {
+ "code": "lv",
+ "name": "Latvi"
+ },
+ "ln": {
+ "code": "ln",
+ "name": "Lingala"
+ },
+ "lt": {
+ "code": "lt",
+ "name": "Lituavi"
+ },
+ "lu": {
+ "code": "lu",
+ "name": "Luba-Katanga"
+ },
+ "lb": {
+ "code": "lb",
+ "name": "Luksemburg"
+ },
+ "luo": {
+ "code": "luo",
+ "name": "Luo"
+ },
+ "luy": {
+ "code": "luy",
+ "name": "Luyia"
+ },
+ "jmc": {
+ "code": "jmc",
+ "name": "Machame"
+ },
+ "mk": {
+ "code": "mk",
+ "name": "Makedonia"
+ },
+ "mgh": {
+ "code": "mgh",
+ "name": "Makhuwa-Meetto"
+ },
+ "kde": {
+ "code": "kde",
+ "name": "Makonde"
+ },
+ "mg": {
+ "code": "mg",
+ "name": "Malagasi"
+ },
+ "ml": {
+ "code": "ml",
+ "name": "Malayalam"
+ },
+ "mt": {
+ "code": "mt",
+ "name": "Malta"
+ },
+ "mr": {
+ "code": "mr",
+ "name": "Marathi"
+ },
+ "mas": {
+ "code": "mas",
+ "name": "Masai"
+ },
+ "ms": {
+ "code": "ms",
+ "name": "Melayu"
+ },
+ "mer": {
+ "code": "mer",
+ "name": "Meru"
+ },
+ "ro-MD": {
+ "code": "ro-MD",
+ "name": "Moldavia"
+ },
+ "mn": {
+ "code": "mn",
+ "name": "Mongolia"
+ },
+ "mfe": {
+ "code": "mfe",
+ "name": "Morisien"
+ },
+ "mua": {
+ "code": "mua",
+ "name": "Mundang"
+ },
+ "naq": {
+ "code": "naq",
+ "name": "Nama"
+ },
+ "nd": {
+ "code": "nd",
+ "name": "Ndebele Utara"
+ },
+ "ne": {
+ "code": "ne",
+ "name": "Nepali"
+ },
+ "jgo": {
+ "code": "jgo",
+ "name": "Ngomba"
+ },
+ "nus": {
+ "code": "nus",
+ "name": "Nuer"
+ },
+ "nyn": {
+ "code": "nyn",
+ "name": "Nyankole"
+ },
+ "nn": {
+ "code": "nn",
+ "name": "Nynorsk Norwegia"
+ },
+ "or": {
+ "code": "or",
+ "name": "Oriya"
+ },
+ "ps": {
+ "code": "ps",
+ "name": "Pashto"
+ },
+ "fa": {
+ "code": "fa",
+ "name": "Persia"
+ },
+ "pl": {
+ "code": "pl",
+ "name": "Polski"
+ },
+ "pt": {
+ "code": "pt",
+ "name": "Portugis"
+ },
+ "pt-BR": {
+ "code": "pt-BR",
+ "name": "Portugis Brasil"
+ },
+ "pt-PT": {
+ "code": "pt-PT",
+ "name": "Portugis Eropa"
+ },
+ "fr": {
+ "code": "fr",
+ "name": "Prancis"
+ },
+ "fr-CA": {
+ "code": "fr-CA",
+ "name": "Prancis Kanada"
+ },
+ "fr-CH": {
+ "code": "fr-CH",
+ "name": "Prancis Swiss"
+ },
+ "pa": {
+ "code": "pa",
+ "name": "Punjabi"
+ },
+ "rm": {
+ "code": "rm",
+ "name": "Reto-Roman"
+ },
+ "rof": {
+ "code": "rof",
+ "name": "Rombo"
+ },
+ "ro": {
+ "code": "ro",
+ "name": "Rumania"
+ },
+ "rn": {
+ "code": "rn",
+ "name": "Rundi"
+ },
+ "ru": {
+ "code": "ru",
+ "name": "Rusia"
+ },
+ "rwk": {
+ "code": "rwk",
+ "name": "Rwa"
+ },
+ "saq": {
+ "code": "saq",
+ "name": "Samburu"
+ },
+ "se": {
+ "code": "se",
+ "name": "Sami Utara"
+ },
+ "sg": {
+ "code": "sg",
+ "name": "Sango"
+ },
+ "sbp": {
+ "code": "sbp",
+ "name": "Sangu"
+ },
+ "seh": {
+ "code": "seh",
+ "name": "Sena"
+ },
+ "sr": {
+ "code": "sr",
+ "name": "Serb"
+ },
+ "ksb": {
+ "code": "ksb",
+ "name": "Shambala"
+ },
+ "sn": {
+ "code": "sn",
+ "name": "Shona"
+ },
+ "si": {
+ "code": "si",
+ "name": "Sinhala"
+ },
+ "sk": {
+ "code": "sk",
+ "name": "Slovak"
+ },
+ "sl": {
+ "code": "sl",
+ "name": "Sloven"
+ },
+ "xog": {
+ "code": "xog",
+ "name": "Soga"
+ },
+ "so": {
+ "code": "so",
+ "name": "Somali"
+ },
+ "hsb": {
+ "code": "hsb",
+ "name": "Sorbia Atas"
+ },
+ "dsb": {
+ "code": "dsb",
+ "name": "Sorbia Rendah"
+ },
+ "es": {
+ "code": "es",
+ "name": "Spanyol"
+ },
+ "es-ES": {
+ "code": "es-ES",
+ "name": "Spanyol Eropa"
+ },
+ "es-MX": {
+ "code": "es-MX",
+ "name": "Spanyol Meksiko"
+ },
+ "fi": {
+ "code": "fi",
+ "name": "Suomi"
+ },
+ "sw": {
+ "code": "sw",
+ "name": "Swahili"
+ },
+ "sv": {
+ "code": "sv",
+ "name": "Swedia"
+ },
+ "shi": {
+ "code": "shi",
+ "name": "Tachelhit"
+ },
+ "dav": {
+ "code": "dav",
+ "name": "Taita"
+ },
+ "zgh": {
+ "code": "zgh",
+ "name": "Tamazight Maroko Standar"
+ },
+ "tzm": {
+ "code": "tzm",
+ "name": "Tamazight Maroko Tengah"
+ },
+ "ta": {
+ "code": "ta",
+ "name": "Tamil"
+ },
+ "twq": {
+ "code": "twq",
+ "name": "Tasawaq"
+ },
+ "te": {
+ "code": "te",
+ "name": "Telugu"
+ },
+ "teo": {
+ "code": "teo",
+ "name": "Teso"
+ },
+ "th": {
+ "code": "th",
+ "name": "Thai"
+ },
+ "bo": {
+ "code": "bo",
+ "name": "Tibet"
+ },
+ "ti": {
+ "code": "ti",
+ "name": "Tigrinya"
+ },
+ "to": {
+ "code": "to",
+ "name": "Tonga"
+ },
+ "tr": {
+ "code": "tr",
+ "name": "Turki"
+ },
+ "uk": {
+ "code": "uk",
+ "name": "Ukraina"
+ },
+ "ur": {
+ "code": "ur",
+ "name": "Urdu"
+ },
+ "ug": {
+ "code": "ug",
+ "name": "Uyghur"
+ },
+ "uz": {
+ "code": "uz",
+ "name": "Uzbek"
+ },
+ "vai": {
+ "code": "vai",
+ "name": "Vai"
+ },
+ "vi": {
+ "code": "vi",
+ "name": "Vietnam"
+ },
+ "vun": {
+ "code": "vun",
+ "name": "Vunjo"
+ },
+ "wae": {
+ "code": "wae",
+ "name": "Walser"
+ },
+ "cy": {
+ "code": "cy",
+ "name": "Welsh"
+ },
+ "yav": {
+ "code": "yav",
+ "name": "Yangben"
+ },
+ "yo": {
+ "code": "yo",
+ "name": "Yoruba"
+ },
+ "el": {
+ "code": "el",
+ "name": "Yunani"
+ },
+ "dje": {
+ "code": "dje",
+ "name": "Zarma"
+ },
+ "zu": {
+ "code": "zu",
+ "name": "Zulu"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/language/is.json b/library/intl/resources/language/is.json
new file mode 100644
index 000000000..4269cc639
--- /dev/null
+++ b/library/intl/resources/language/is.json
@@ -0,0 +1,738 @@
+{
+ "af": {
+ "code": "af",
+ "name": "afríkanska"
+ },
+ "agq": {
+ "code": "agq",
+ "name": "aghem"
+ },
+ "ak": {
+ "code": "ak",
+ "name": "akan"
+ },
+ "sq": {
+ "code": "sq",
+ "name": "albanska"
+ },
+ "am": {
+ "code": "am",
+ "name": "amharíska"
+ },
+ "ar": {
+ "code": "ar",
+ "name": "arabíska"
+ },
+ "hy": {
+ "code": "hy",
+ "name": "armenska"
+ },
+ "az": {
+ "code": "az",
+ "name": "aserska"
+ },
+ "ast": {
+ "code": "ast",
+ "name": "astúríska"
+ },
+ "asa": {
+ "code": "asa",
+ "name": "asu"
+ },
+ "de-AT": {
+ "code": "de-AT",
+ "name": "austurrísk þýska"
+ },
+ "en-AU": {
+ "code": "en-AU",
+ "name": "áströlsk enska"
+ },
+ "ksf": {
+ "code": "ksf",
+ "name": "bafía"
+ },
+ "bm": {
+ "code": "bm",
+ "name": "bambara"
+ },
+ "en-US": {
+ "code": "en-US",
+ "name": "bandarísk enska"
+ },
+ "bas": {
+ "code": "bas",
+ "name": "basa"
+ },
+ "eu": {
+ "code": "eu",
+ "name": "baskneska"
+ },
+ "bez": {
+ "code": "bez",
+ "name": "bena"
+ },
+ "bn": {
+ "code": "bn",
+ "name": "bengalska"
+ },
+ "bs": {
+ "code": "bs",
+ "name": "bosníska"
+ },
+ "brx": {
+ "code": "brx",
+ "name": "bódó"
+ },
+ "pt-BR": {
+ "code": "pt-BR",
+ "name": "brasílísk portúgalska"
+ },
+ "en-GB": {
+ "code": "en-GB",
+ "name": "bresk enska"
+ },
+ "br": {
+ "code": "br",
+ "name": "bretónska"
+ },
+ "my": {
+ "code": "my",
+ "name": "burmneska"
+ },
+ "bg": {
+ "code": "bg",
+ "name": "búlgarska"
+ },
+ "chr": {
+ "code": "chr",
+ "name": "Cherokee-mál"
+ },
+ "da": {
+ "code": "da",
+ "name": "danska"
+ },
+ "dz": {
+ "code": "dz",
+ "name": "dsongka"
+ },
+ "et": {
+ "code": "et",
+ "name": "eistneska"
+ },
+ "ebu": {
+ "code": "ebu",
+ "name": "embu"
+ },
+ "en": {
+ "code": "en",
+ "name": "enska"
+ },
+ "eo": {
+ "code": "eo",
+ "name": "esperantó"
+ },
+ "ewo": {
+ "code": "ewo",
+ "name": "evondó"
+ },
+ "pt-PT": {
+ "code": "pt-PT",
+ "name": "evrópsk portúgalska"
+ },
+ "es-ES": {
+ "code": "es-ES",
+ "name": "evrópsk spænska"
+ },
+ "ee": {
+ "code": "ee",
+ "name": "ewe"
+ },
+ "fil": {
+ "code": "fil",
+ "name": "filippseyska"
+ },
+ "fi": {
+ "code": "fi",
+ "name": "finnska"
+ },
+ "nl-BE": {
+ "code": "nl-BE",
+ "name": "flæmska"
+ },
+ "fr": {
+ "code": "fr",
+ "name": "franska"
+ },
+ "fur": {
+ "code": "fur",
+ "name": "fríúlska"
+ },
+ "ff": {
+ "code": "ff",
+ "name": "fúla"
+ },
+ "fo": {
+ "code": "fo",
+ "name": "færeyska"
+ },
+ "gl": {
+ "code": "gl",
+ "name": "galíanska"
+ },
+ "lg": {
+ "code": "lg",
+ "name": "ganda"
+ },
+ "ka": {
+ "code": "ka",
+ "name": "georgíska"
+ },
+ "el": {
+ "code": "el",
+ "name": "gríska"
+ },
+ "kea": {
+ "code": "kea",
+ "name": "grænhöfðeyska"
+ },
+ "kl": {
+ "code": "kl",
+ "name": "grænlenska"
+ },
+ "guz": {
+ "code": "guz",
+ "name": "gusii"
+ },
+ "gu": {
+ "code": "gu",
+ "name": "gújaratí"
+ },
+ "ha": {
+ "code": "ha",
+ "name": "hása"
+ },
+ "hsb": {
+ "code": "hsb",
+ "name": "hásorbneska"
+ },
+ "he": {
+ "code": "he",
+ "name": "hebreska"
+ },
+ "hi": {
+ "code": "hi",
+ "name": "hindí"
+ },
+ "nl": {
+ "code": "nl",
+ "name": "hollenska"
+ },
+ "be": {
+ "code": "be",
+ "name": "hvítrússneska"
+ },
+ "id": {
+ "code": "id",
+ "name": "indónesíska"
+ },
+ "ga": {
+ "code": "ga",
+ "name": "írska"
+ },
+ "is": {
+ "code": "is",
+ "name": "íslenska"
+ },
+ "it": {
+ "code": "it",
+ "name": "ítalska"
+ },
+ "ja": {
+ "code": "ja",
+ "name": "japanska"
+ },
+ "dyo": {
+ "code": "dyo",
+ "name": "jola-fonyi"
+ },
+ "yo": {
+ "code": "yo",
+ "name": "jórúba"
+ },
+ "kab": {
+ "code": "kab",
+ "name": "kabíle"
+ },
+ "kln": {
+ "code": "kln",
+ "name": "kalenjin"
+ },
+ "kam": {
+ "code": "kam",
+ "name": "kamba"
+ },
+ "en-CA": {
+ "code": "en-CA",
+ "name": "kanadísk enska"
+ },
+ "fr-CA": {
+ "code": "fr-CA",
+ "name": "kanadísk franska"
+ },
+ "kn": {
+ "code": "kn",
+ "name": "kannada"
+ },
+ "kk": {
+ "code": "kk",
+ "name": "kasakska"
+ },
+ "ks": {
+ "code": "ks",
+ "name": "kasmírska"
+ },
+ "ca": {
+ "code": "ca",
+ "name": "katalónska"
+ },
+ "ky": {
+ "code": "ky",
+ "name": "kirgiska"
+ },
+ "cgg": {
+ "code": "cgg",
+ "name": "kíga"
+ },
+ "ki": {
+ "code": "ki",
+ "name": "kíkújú"
+ },
+ "zh": {
+ "code": "zh",
+ "name": "kínverska"
+ },
+ "zh-Hans": {
+ "code": "zh-Hans",
+ "name": "kínverska (einfölduð)"
+ },
+ "zh-Hant": {
+ "code": "zh-Hant",
+ "name": "kínverska (hefðbundin)"
+ },
+ "km": {
+ "code": "km",
+ "name": "kmer"
+ },
+ "ses": {
+ "code": "ses",
+ "name": "koíraboró-senní"
+ },
+ "swc": {
+ "code": "swc",
+ "name": "Kongó-svahílí"
+ },
+ "khq": {
+ "code": "khq",
+ "name": "koyra chiini"
+ },
+ "ko": {
+ "code": "ko",
+ "name": "kóreska"
+ },
+ "hr": {
+ "code": "hr",
+ "name": "króatíska"
+ },
+ "nmg": {
+ "code": "nmg",
+ "name": "kwasio"
+ },
+ "ksh": {
+ "code": "ksh",
+ "name": "kölníska"
+ },
+ "lag": {
+ "code": "lag",
+ "name": "langí"
+ },
+ "lo": {
+ "code": "lo",
+ "name": "laó"
+ },
+ "dsb": {
+ "code": "dsb",
+ "name": "lágsorbneska"
+ },
+ "lv": {
+ "code": "lv",
+ "name": "lettneska"
+ },
+ "ln": {
+ "code": "ln",
+ "name": "lingala"
+ },
+ "lt": {
+ "code": "lt",
+ "name": "litháíska"
+ },
+ "luy": {
+ "code": "luy",
+ "name": "luyia"
+ },
+ "lu": {
+ "code": "lu",
+ "name": "lúbakatanga"
+ },
+ "luo": {
+ "code": "luo",
+ "name": "lúó"
+ },
+ "lb": {
+ "code": "lb",
+ "name": "lúxemborgíska"
+ },
+ "mk": {
+ "code": "mk",
+ "name": "makedónska"
+ },
+ "mgh": {
+ "code": "mgh",
+ "name": "makhuwa-meetto"
+ },
+ "kde": {
+ "code": "kde",
+ "name": "makonde"
+ },
+ "mg": {
+ "code": "mg",
+ "name": "malagasíska"
+ },
+ "ms": {
+ "code": "ms",
+ "name": "malaíska"
+ },
+ "ml": {
+ "code": "ml",
+ "name": "malajalam"
+ },
+ "mt": {
+ "code": "mt",
+ "name": "maltneska"
+ },
+ "mr": {
+ "code": "mr",
+ "name": "maratí"
+ },
+ "mas": {
+ "code": "mas",
+ "name": "masaí"
+ },
+ "jmc": {
+ "code": "jmc",
+ "name": "masjáme"
+ },
+ "mfe": {
+ "code": "mfe",
+ "name": "máritíska"
+ },
+ "mer": {
+ "code": "mer",
+ "name": "merú"
+ },
+ "es-MX": {
+ "code": "es-MX",
+ "name": "mexíkósk spænska"
+ },
+ "ro-MD": {
+ "code": "ro-MD",
+ "name": "moldóvska"
+ },
+ "mn": {
+ "code": "mn",
+ "name": "mongólska"
+ },
+ "mua": {
+ "code": "mua",
+ "name": "mundang"
+ },
+ "naq": {
+ "code": "naq",
+ "name": "nama"
+ },
+ "ne": {
+ "code": "ne",
+ "name": "nepalska"
+ },
+ "jgo": {
+ "code": "jgo",
+ "name": "ngomba"
+ },
+ "nd": {
+ "code": "nd",
+ "name": "norður-ndebele"
+ },
+ "se": {
+ "code": "se",
+ "name": "norðursamíska"
+ },
+ "nb": {
+ "code": "nb",
+ "name": "norskt bókmál"
+ },
+ "nus": {
+ "code": "nus",
+ "name": "núer"
+ },
+ "nyn": {
+ "code": "nyn",
+ "name": "nyankole"
+ },
+ "nn": {
+ "code": "nn",
+ "name": "nýnorska"
+ },
+ "or": {
+ "code": "or",
+ "name": "óría"
+ },
+ "ps": {
+ "code": "ps",
+ "name": "pastú"
+ },
+ "fa": {
+ "code": "fa",
+ "name": "persneska"
+ },
+ "pt": {
+ "code": "pt",
+ "name": "portúgalska"
+ },
+ "pl": {
+ "code": "pl",
+ "name": "pólska"
+ },
+ "pa": {
+ "code": "pa",
+ "name": "púnjabí"
+ },
+ "rof": {
+ "code": "rof",
+ "name": "rombó"
+ },
+ "rm": {
+ "code": "rm",
+ "name": "rómanska"
+ },
+ "rwk": {
+ "code": "rwk",
+ "name": "rúa"
+ },
+ "ro": {
+ "code": "ro",
+ "name": "rúmenska"
+ },
+ "rn": {
+ "code": "rn",
+ "name": "rúndí"
+ },
+ "ru": {
+ "code": "ru",
+ "name": "rússneska"
+ },
+ "saq": {
+ "code": "saq",
+ "name": "sambúrú"
+ },
+ "sg": {
+ "code": "sg",
+ "name": "sangó"
+ },
+ "sbp": {
+ "code": "sbp",
+ "name": "sangú"
+ },
+ "seh": {
+ "code": "seh",
+ "name": "sena"
+ },
+ "sr": {
+ "code": "sr",
+ "name": "serbneska"
+ },
+ "sn": {
+ "code": "sn",
+ "name": "shona"
+ },
+ "si": {
+ "code": "si",
+ "name": "singalíska"
+ },
+ "ksb": {
+ "code": "ksb",
+ "name": "sjambala"
+ },
+ "gd": {
+ "code": "gd",
+ "name": "skosk gelíska"
+ },
+ "sk": {
+ "code": "sk",
+ "name": "slóvakíska"
+ },
+ "sl": {
+ "code": "sl",
+ "name": "slóvenska"
+ },
+ "xog": {
+ "code": "xog",
+ "name": "sóga"
+ },
+ "so": {
+ "code": "so",
+ "name": "sómalska"
+ },
+ "es": {
+ "code": "es",
+ "name": "spænska"
+ },
+ "zgh": {
+ "code": "zgh",
+ "name": "staðlað marokkóskt tamazight"
+ },
+ "ar-001": {
+ "code": "ar-001",
+ "name": "stöðluð nútímaarabíska"
+ },
+ "zu": {
+ "code": "zu",
+ "name": "súlú"
+ },
+ "sw": {
+ "code": "sw",
+ "name": "svahílí"
+ },
+ "fr-CH": {
+ "code": "fr-CH",
+ "name": "svissnesk franska"
+ },
+ "de-CH": {
+ "code": "de-CH",
+ "name": "svissnesk háþýska"
+ },
+ "gsw": {
+ "code": "gsw",
+ "name": "svissnesk þýska"
+ },
+ "sv": {
+ "code": "sv",
+ "name": "sænska"
+ },
+ "shi": {
+ "code": "shi",
+ "name": "tachelhit"
+ },
+ "th": {
+ "code": "th",
+ "name": "taílenska"
+ },
+ "dav": {
+ "code": "dav",
+ "name": "taíta"
+ },
+ "tzm": {
+ "code": "tzm",
+ "name": "tamazight"
+ },
+ "ta": {
+ "code": "ta",
+ "name": "tamílska"
+ },
+ "twq": {
+ "code": "twq",
+ "name": "tasawaq"
+ },
+ "te": {
+ "code": "te",
+ "name": "telúgú"
+ },
+ "teo": {
+ "code": "teo",
+ "name": "tesó"
+ },
+ "cs": {
+ "code": "cs",
+ "name": "tékkneska"
+ },
+ "bo": {
+ "code": "bo",
+ "name": "tíbeska"
+ },
+ "ti": {
+ "code": "ti",
+ "name": "tígrinja"
+ },
+ "to": {
+ "code": "to",
+ "name": "tongverska"
+ },
+ "tr": {
+ "code": "tr",
+ "name": "tyrkneska"
+ },
+ "hu": {
+ "code": "hu",
+ "name": "ungverska"
+ },
+ "ug": {
+ "code": "ug",
+ "name": "úígúr"
+ },
+ "uk": {
+ "code": "uk",
+ "name": "úkraínska"
+ },
+ "ur": {
+ "code": "ur",
+ "name": "úrdú"
+ },
+ "uz": {
+ "code": "uz",
+ "name": "úsbekska"
+ },
+ "vai": {
+ "code": "vai",
+ "name": "vaí"
+ },
+ "cy": {
+ "code": "cy",
+ "name": "velska"
+ },
+ "fy": {
+ "code": "fy",
+ "name": "vesturfrísneska"
+ },
+ "vi": {
+ "code": "vi",
+ "name": "víetnamska"
+ },
+ "vun": {
+ "code": "vun",
+ "name": "vunjó"
+ },
+ "wae": {
+ "code": "wae",
+ "name": "Walser"
+ },
+ "yav": {
+ "code": "yav",
+ "name": "Yangben"
+ },
+ "dje": {
+ "code": "dje",
+ "name": "zarma"
+ },
+ "de": {
+ "code": "de",
+ "name": "þýska"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/language/it.json b/library/intl/resources/language/it.json
new file mode 100644
index 000000000..eb7c57555
--- /dev/null
+++ b/library/intl/resources/language/it.json
@@ -0,0 +1,738 @@
+{
+ "af": {
+ "code": "af",
+ "name": "afrikaans"
+ },
+ "agq": {
+ "code": "agq",
+ "name": "aghem"
+ },
+ "ak": {
+ "code": "ak",
+ "name": "akan"
+ },
+ "sq": {
+ "code": "sq",
+ "name": "albanese"
+ },
+ "hsb": {
+ "code": "hsb",
+ "name": "alto sorabo"
+ },
+ "de-CH": {
+ "code": "de-CH",
+ "name": "alto tedesco svizzero"
+ },
+ "am": {
+ "code": "am",
+ "name": "amarico"
+ },
+ "ar": {
+ "code": "ar",
+ "name": "arabo"
+ },
+ "ar-001": {
+ "code": "ar-001",
+ "name": "arabo moderno standard"
+ },
+ "hy": {
+ "code": "hy",
+ "name": "armeno"
+ },
+ "ast": {
+ "code": "ast",
+ "name": "asturiano"
+ },
+ "asa": {
+ "code": "asa",
+ "name": "asu"
+ },
+ "az": {
+ "code": "az",
+ "name": "azerbaigiano"
+ },
+ "ksf": {
+ "code": "ksf",
+ "name": "bafia"
+ },
+ "bm": {
+ "code": "bm",
+ "name": "bambara"
+ },
+ "bas": {
+ "code": "bas",
+ "name": "basa"
+ },
+ "eu": {
+ "code": "eu",
+ "name": "basco"
+ },
+ "dsb": {
+ "code": "dsb",
+ "name": "basso sorabo"
+ },
+ "bez": {
+ "code": "bez",
+ "name": "bena"
+ },
+ "bn": {
+ "code": "bn",
+ "name": "bengalese"
+ },
+ "be": {
+ "code": "be",
+ "name": "bielorusso"
+ },
+ "my": {
+ "code": "my",
+ "name": "birmano"
+ },
+ "brx": {
+ "code": "brx",
+ "name": "bodo"
+ },
+ "bs": {
+ "code": "bs",
+ "name": "bosniaco"
+ },
+ "br": {
+ "code": "br",
+ "name": "bretone"
+ },
+ "bg": {
+ "code": "bg",
+ "name": "bulgaro"
+ },
+ "kab": {
+ "code": "kab",
+ "name": "cabilo"
+ },
+ "kea": {
+ "code": "kea",
+ "name": "capoverdiano"
+ },
+ "ca": {
+ "code": "ca",
+ "name": "catalano"
+ },
+ "cs": {
+ "code": "cs",
+ "name": "ceco"
+ },
+ "chr": {
+ "code": "chr",
+ "name": "cherokee"
+ },
+ "cgg": {
+ "code": "cgg",
+ "name": "chiga"
+ },
+ "ky": {
+ "code": "ky",
+ "name": "chirghiso"
+ },
+ "zh": {
+ "code": "zh",
+ "name": "cinese"
+ },
+ "zh-Hans": {
+ "code": "zh-Hans",
+ "name": "cinese semplificato"
+ },
+ "zh-Hant": {
+ "code": "zh-Hant",
+ "name": "cinese tradizionale"
+ },
+ "ksh": {
+ "code": "ksh",
+ "name": "coloniese"
+ },
+ "swc": {
+ "code": "swc",
+ "name": "congo swahili"
+ },
+ "ko": {
+ "code": "ko",
+ "name": "coreano"
+ },
+ "mfe": {
+ "code": "mfe",
+ "name": "creolo mauriziano"
+ },
+ "hr": {
+ "code": "hr",
+ "name": "croato"
+ },
+ "da": {
+ "code": "da",
+ "name": "danese"
+ },
+ "dz": {
+ "code": "dz",
+ "name": "dzongkha"
+ },
+ "he": {
+ "code": "he",
+ "name": "ebraico"
+ },
+ "ebu": {
+ "code": "ebu",
+ "name": "embu"
+ },
+ "eo": {
+ "code": "eo",
+ "name": "esperanto"
+ },
+ "et": {
+ "code": "et",
+ "name": "estone"
+ },
+ "ee": {
+ "code": "ee",
+ "name": "ewe"
+ },
+ "ewo": {
+ "code": "ewo",
+ "name": "ewondo"
+ },
+ "fo": {
+ "code": "fo",
+ "name": "faroese"
+ },
+ "nl-BE": {
+ "code": "nl-BE",
+ "name": "fiammingo"
+ },
+ "fil": {
+ "code": "fil",
+ "name": "filippino"
+ },
+ "fi": {
+ "code": "fi",
+ "name": "finlandese"
+ },
+ "fr": {
+ "code": "fr",
+ "name": "francese"
+ },
+ "fr-CA": {
+ "code": "fr-CA",
+ "name": "francese canadese"
+ },
+ "fr-CH": {
+ "code": "fr-CH",
+ "name": "francese svizzero"
+ },
+ "fy": {
+ "code": "fy",
+ "name": "frisone occidentale"
+ },
+ "fur": {
+ "code": "fur",
+ "name": "friulano"
+ },
+ "ff": {
+ "code": "ff",
+ "name": "fulah"
+ },
+ "gd": {
+ "code": "gd",
+ "name": "gaelico scozzese"
+ },
+ "gl": {
+ "code": "gl",
+ "name": "galiziano"
+ },
+ "cy": {
+ "code": "cy",
+ "name": "gallese"
+ },
+ "lg": {
+ "code": "lg",
+ "name": "ganda"
+ },
+ "ka": {
+ "code": "ka",
+ "name": "georgiano"
+ },
+ "ja": {
+ "code": "ja",
+ "name": "giapponese"
+ },
+ "el": {
+ "code": "el",
+ "name": "greco"
+ },
+ "gu": {
+ "code": "gu",
+ "name": "gujarati"
+ },
+ "guz": {
+ "code": "guz",
+ "name": "gusii"
+ },
+ "ha": {
+ "code": "ha",
+ "name": "hausa"
+ },
+ "hi": {
+ "code": "hi",
+ "name": "hindi"
+ },
+ "id": {
+ "code": "id",
+ "name": "indonesiano"
+ },
+ "en": {
+ "code": "en",
+ "name": "inglese"
+ },
+ "en-US": {
+ "code": "en-US",
+ "name": "inglese americano"
+ },
+ "en-AU": {
+ "code": "en-AU",
+ "name": "inglese australiano"
+ },
+ "en-GB": {
+ "code": "en-GB",
+ "name": "inglese britannico"
+ },
+ "en-CA": {
+ "code": "en-CA",
+ "name": "inglese canadese"
+ },
+ "ga": {
+ "code": "ga",
+ "name": "irlandese"
+ },
+ "is": {
+ "code": "is",
+ "name": "islandese"
+ },
+ "it": {
+ "code": "it",
+ "name": "italiano"
+ },
+ "dyo": {
+ "code": "dyo",
+ "name": "jola-fony"
+ },
+ "kl": {
+ "code": "kl",
+ "name": "kalaallisut"
+ },
+ "kln": {
+ "code": "kln",
+ "name": "kalenjin"
+ },
+ "kam": {
+ "code": "kam",
+ "name": "kamba"
+ },
+ "kn": {
+ "code": "kn",
+ "name": "kannada"
+ },
+ "ks": {
+ "code": "ks",
+ "name": "kashmiri"
+ },
+ "kk": {
+ "code": "kk",
+ "name": "kazako"
+ },
+ "km": {
+ "code": "km",
+ "name": "khmer"
+ },
+ "ki": {
+ "code": "ki",
+ "name": "kikuyu"
+ },
+ "khq": {
+ "code": "khq",
+ "name": "koyra chiini"
+ },
+ "ses": {
+ "code": "ses",
+ "name": "koyraboro senni"
+ },
+ "nmg": {
+ "code": "nmg",
+ "name": "kwasio"
+ },
+ "lag": {
+ "code": "lag",
+ "name": "langi"
+ },
+ "lo": {
+ "code": "lo",
+ "name": "lao"
+ },
+ "lv": {
+ "code": "lv",
+ "name": "lettone"
+ },
+ "ln": {
+ "code": "ln",
+ "name": "lingala"
+ },
+ "lt": {
+ "code": "lt",
+ "name": "lituano"
+ },
+ "lu": {
+ "code": "lu",
+ "name": "luba-katanga"
+ },
+ "luo": {
+ "code": "luo",
+ "name": "Luo"
+ },
+ "lb": {
+ "code": "lb",
+ "name": "lussemburghese"
+ },
+ "luy": {
+ "code": "luy",
+ "name": "luyia"
+ },
+ "mk": {
+ "code": "mk",
+ "name": "macedone"
+ },
+ "jmc": {
+ "code": "jmc",
+ "name": "machame"
+ },
+ "mgh": {
+ "code": "mgh",
+ "name": "makhuwa-meetto"
+ },
+ "kde": {
+ "code": "kde",
+ "name": "makonde"
+ },
+ "ml": {
+ "code": "ml",
+ "name": "malayalam"
+ },
+ "ms": {
+ "code": "ms",
+ "name": "malese"
+ },
+ "mg": {
+ "code": "mg",
+ "name": "malgascio"
+ },
+ "mt": {
+ "code": "mt",
+ "name": "maltese"
+ },
+ "mr": {
+ "code": "mr",
+ "name": "marathi"
+ },
+ "mas": {
+ "code": "mas",
+ "name": "masai"
+ },
+ "mer": {
+ "code": "mer",
+ "name": "meru"
+ },
+ "ro-MD": {
+ "code": "ro-MD",
+ "name": "moldavo"
+ },
+ "mn": {
+ "code": "mn",
+ "name": "mongolo"
+ },
+ "mua": {
+ "code": "mua",
+ "name": "mundang"
+ },
+ "naq": {
+ "code": "naq",
+ "name": "nama"
+ },
+ "nd": {
+ "code": "nd",
+ "name": "ndebele del nord"
+ },
+ "ne": {
+ "code": "ne",
+ "name": "nepalese"
+ },
+ "jgo": {
+ "code": "jgo",
+ "name": "ngamambo"
+ },
+ "nb": {
+ "code": "nb",
+ "name": "norvegese bokmål"
+ },
+ "nn": {
+ "code": "nn",
+ "name": "norvegese nynorsk"
+ },
+ "nus": {
+ "code": "nus",
+ "name": "nuer"
+ },
+ "nyn": {
+ "code": "nyn",
+ "name": "nyankole"
+ },
+ "nl": {
+ "code": "nl",
+ "name": "olandese"
+ },
+ "or": {
+ "code": "or",
+ "name": "oriya"
+ },
+ "ps": {
+ "code": "ps",
+ "name": "pashto"
+ },
+ "fa": {
+ "code": "fa",
+ "name": "persiano"
+ },
+ "pl": {
+ "code": "pl",
+ "name": "polacco"
+ },
+ "pt": {
+ "code": "pt",
+ "name": "portoghese"
+ },
+ "pt-BR": {
+ "code": "pt-BR",
+ "name": "portoghese brasiliano"
+ },
+ "pt-PT": {
+ "code": "pt-PT",
+ "name": "portoghese europeo"
+ },
+ "pa": {
+ "code": "pa",
+ "name": "punjabi"
+ },
+ "rm": {
+ "code": "rm",
+ "name": "romancio"
+ },
+ "rof": {
+ "code": "rof",
+ "name": "rombo"
+ },
+ "ro": {
+ "code": "ro",
+ "name": "rumeno"
+ },
+ "rn": {
+ "code": "rn",
+ "name": "rundi"
+ },
+ "ru": {
+ "code": "ru",
+ "name": "russo"
+ },
+ "rwk": {
+ "code": "rwk",
+ "name": "rwa"
+ },
+ "saq": {
+ "code": "saq",
+ "name": "samburu"
+ },
+ "se": {
+ "code": "se",
+ "name": "sami del nord"
+ },
+ "sg": {
+ "code": "sg",
+ "name": "sango"
+ },
+ "sbp": {
+ "code": "sbp",
+ "name": "sangu"
+ },
+ "seh": {
+ "code": "seh",
+ "name": "sena"
+ },
+ "sr": {
+ "code": "sr",
+ "name": "serbo"
+ },
+ "ksb": {
+ "code": "ksb",
+ "name": "shambala"
+ },
+ "sn": {
+ "code": "sn",
+ "name": "shona"
+ },
+ "si": {
+ "code": "si",
+ "name": "singalese"
+ },
+ "sk": {
+ "code": "sk",
+ "name": "slovacco"
+ },
+ "sl": {
+ "code": "sl",
+ "name": "sloveno"
+ },
+ "xog": {
+ "code": "xog",
+ "name": "soga"
+ },
+ "so": {
+ "code": "so",
+ "name": "somalo"
+ },
+ "es": {
+ "code": "es",
+ "name": "spagnolo"
+ },
+ "es-ES": {
+ "code": "es-ES",
+ "name": "spagnolo europeo"
+ },
+ "es-MX": {
+ "code": "es-MX",
+ "name": "spagnolo messicano"
+ },
+ "sv": {
+ "code": "sv",
+ "name": "svedese"
+ },
+ "sw": {
+ "code": "sw",
+ "name": "swahili"
+ },
+ "dav": {
+ "code": "dav",
+ "name": "taita"
+ },
+ "tzm": {
+ "code": "tzm",
+ "name": "tamazight"
+ },
+ "zgh": {
+ "code": "zgh",
+ "name": "tamazight del Marocco standard"
+ },
+ "ta": {
+ "code": "ta",
+ "name": "tamil"
+ },
+ "twq": {
+ "code": "twq",
+ "name": "tasawaq"
+ },
+ "shi": {
+ "code": "shi",
+ "name": "tashelhit"
+ },
+ "de": {
+ "code": "de",
+ "name": "tedesco"
+ },
+ "de-AT": {
+ "code": "de-AT",
+ "name": "tedesco austriaco"
+ },
+ "gsw": {
+ "code": "gsw",
+ "name": "tedesco svizzero"
+ },
+ "te": {
+ "code": "te",
+ "name": "telugu"
+ },
+ "teo": {
+ "code": "teo",
+ "name": "teso"
+ },
+ "th": {
+ "code": "th",
+ "name": "thai"
+ },
+ "bo": {
+ "code": "bo",
+ "name": "tibetano"
+ },
+ "ti": {
+ "code": "ti",
+ "name": "tigrino"
+ },
+ "to": {
+ "code": "to",
+ "name": "tongano"
+ },
+ "tr": {
+ "code": "tr",
+ "name": "turco"
+ },
+ "uk": {
+ "code": "uk",
+ "name": "ucraino"
+ },
+ "ug": {
+ "code": "ug",
+ "name": "uiguro"
+ },
+ "hu": {
+ "code": "hu",
+ "name": "ungherese"
+ },
+ "ur": {
+ "code": "ur",
+ "name": "urdu"
+ },
+ "uz": {
+ "code": "uz",
+ "name": "usbeco"
+ },
+ "vai": {
+ "code": "vai",
+ "name": "Vai"
+ },
+ "vi": {
+ "code": "vi",
+ "name": "vietnamita"
+ },
+ "vun": {
+ "code": "vun",
+ "name": "vunjo"
+ },
+ "wae": {
+ "code": "wae",
+ "name": "walser"
+ },
+ "yav": {
+ "code": "yav",
+ "name": "yangben"
+ },
+ "yo": {
+ "code": "yo",
+ "name": "yoruba"
+ },
+ "dje": {
+ "code": "dje",
+ "name": "zarma"
+ },
+ "zu": {
+ "code": "zu",
+ "name": "zulu"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/language/ja.json b/library/intl/resources/language/ja.json
new file mode 100644
index 000000000..65ecee180
--- /dev/null
+++ b/library/intl/resources/language/ja.json
@@ -0,0 +1,738 @@
+{
+ "de-AT": {
+ "code": "de-AT",
+ "name": "de_AT"
+ },
+ "es-MX": {
+ "code": "es-MX",
+ "name": "es_MX"
+ },
+ "fr-CA": {
+ "code": "fr-CA",
+ "name": "fr_CA"
+ },
+ "fr-CH": {
+ "code": "fr-CH",
+ "name": "fr_CH"
+ },
+ "pt-BR": {
+ "code": "pt-BR",
+ "name": "pt_BR"
+ },
+ "is": {
+ "code": "is",
+ "name": "アイスランド語"
+ },
+ "ga": {
+ "code": "ga",
+ "name": "アイルランド語"
+ },
+ "ak": {
+ "code": "ak",
+ "name": "アカン語"
+ },
+ "agq": {
+ "code": "agq",
+ "name": "アゲム語"
+ },
+ "ast": {
+ "code": "ast",
+ "name": "アストゥリアス語"
+ },
+ "asa": {
+ "code": "asa",
+ "name": "アス語"
+ },
+ "az": {
+ "code": "az",
+ "name": "アゼルãƒã‚¤ã‚¸ãƒ£ãƒ³èªž"
+ },
+ "af": {
+ "code": "af",
+ "name": "アフリカーンス語"
+ },
+ "am": {
+ "code": "am",
+ "name": "アムãƒãƒ©èªž"
+ },
+ "en-US": {
+ "code": "en-US",
+ "name": "アメリカ英語"
+ },
+ "ar": {
+ "code": "ar",
+ "name": "アラビア語"
+ },
+ "sq": {
+ "code": "sq",
+ "name": "アルãƒãƒ‹ã‚¢èªž"
+ },
+ "hy": {
+ "code": "hy",
+ "name": "アルメニア語"
+ },
+ "en-GB": {
+ "code": "en-GB",
+ "name": "イギリス英語"
+ },
+ "it": {
+ "code": "it",
+ "name": "イタリア語"
+ },
+ "id": {
+ "code": "id",
+ "name": "インドãƒã‚·ã‚¢èªž"
+ },
+ "vai": {
+ "code": "vai",
+ "name": "ヴァイ語"
+ },
+ "wae": {
+ "code": "wae",
+ "name": "ヴァリス語"
+ },
+ "ug": {
+ "code": "ug",
+ "name": "ウイグル語"
+ },
+ "cy": {
+ "code": "cy",
+ "name": "ウェールズ語"
+ },
+ "uk": {
+ "code": "uk",
+ "name": "ウクライナ語"
+ },
+ "uz": {
+ "code": "uz",
+ "name": "ウズベク語"
+ },
+ "ur": {
+ "code": "ur",
+ "name": "ウルドゥー語"
+ },
+ "vun": {
+ "code": "vun",
+ "name": "ヴンジョ語"
+ },
+ "ee": {
+ "code": "ee",
+ "name": "エウェ語"
+ },
+ "ewo": {
+ "code": "ewo",
+ "name": "エウォンド語"
+ },
+ "et": {
+ "code": "et",
+ "name": "エストニア語"
+ },
+ "eo": {
+ "code": "eo",
+ "name": "エスペラント語"
+ },
+ "ebu": {
+ "code": "ebu",
+ "name": "エンブ語"
+ },
+ "en-AU": {
+ "code": "en-AU",
+ "name": "オーストラリア英語"
+ },
+ "nl": {
+ "code": "nl",
+ "name": "オランダ語"
+ },
+ "or": {
+ "code": "or",
+ "name": "オリヤー語"
+ },
+ "kea": {
+ "code": "kea",
+ "name": "カーボベルデ・クレオール語"
+ },
+ "kk": {
+ "code": "kk",
+ "name": "カザフ語"
+ },
+ "ks": {
+ "code": "ks",
+ "name": "カシミール語"
+ },
+ "ca": {
+ "code": "ca",
+ "name": "カタロニア語"
+ },
+ "en-CA": {
+ "code": "en-CA",
+ "name": "カナダ英語"
+ },
+ "kab": {
+ "code": "kab",
+ "name": "カビル語"
+ },
+ "gl": {
+ "code": "gl",
+ "name": "ガリシア語"
+ },
+ "kln": {
+ "code": "kln",
+ "name": "カレンジン語"
+ },
+ "lg": {
+ "code": "lg",
+ "name": "ガンダ語"
+ },
+ "kn": {
+ "code": "kn",
+ "name": "カンナダ語"
+ },
+ "kam": {
+ "code": "kam",
+ "name": "カンãƒèªž"
+ },
+ "ki": {
+ "code": "ki",
+ "name": "キクユ語"
+ },
+ "el": {
+ "code": "el",
+ "name": "ギリシャ語"
+ },
+ "ky": {
+ "code": "ky",
+ "name": "キルギス語"
+ },
+ "guz": {
+ "code": "guz",
+ "name": "グシイ語"
+ },
+ "gu": {
+ "code": "gu",
+ "name": "グジャラート語"
+ },
+ "km": {
+ "code": "km",
+ "name": "クメール語"
+ },
+ "kl": {
+ "code": "kl",
+ "name": "グリーンランド語"
+ },
+ "ka": {
+ "code": "ka",
+ "name": "グルジア語"
+ },
+ "hr": {
+ "code": "hr",
+ "name": "クロアãƒã‚¢èªž"
+ },
+ "nmg": {
+ "code": "nmg",
+ "name": "クワシオ語"
+ },
+ "ksh": {
+ "code": "ksh",
+ "name": "ケルン語"
+ },
+ "khq": {
+ "code": "khq",
+ "name": "コイラ・ãƒãƒ¼ãƒ‹èªž"
+ },
+ "ses": {
+ "code": "ses",
+ "name": "コイラボロ・センニ語"
+ },
+ "swc": {
+ "code": "swc",
+ "name": "コンゴ・スワヒリ語"
+ },
+ "dje": {
+ "code": "dje",
+ "name": "ザルマ語"
+ },
+ "sbp": {
+ "code": "sbp",
+ "name": "サング語"
+ },
+ "sg": {
+ "code": "sg",
+ "name": "サンゴ語"
+ },
+ "ksb": {
+ "code": "ksb",
+ "name": "サンãƒãƒ¼èªž"
+ },
+ "saq": {
+ "code": "saq",
+ "name": "サンブル語"
+ },
+ "sn": {
+ "code": "sn",
+ "name": "ショナ語"
+ },
+ "dyo": {
+ "code": "dyo",
+ "name": "ジョラï¼ãƒ•ã‚©ãƒ‹ã‚£èªž"
+ },
+ "si": {
+ "code": "si",
+ "name": "シンãƒãƒ©èªž"
+ },
+ "gsw": {
+ "code": "gsw",
+ "name": "スイスドイツ語"
+ },
+ "sv": {
+ "code": "sv",
+ "name": "スウェーデン語"
+ },
+ "zu": {
+ "code": "zu",
+ "name": "ズールー語"
+ },
+ "gd": {
+ "code": "gd",
+ "name": "スコットランド・ゲール語"
+ },
+ "es": {
+ "code": "es",
+ "name": "スペイン語"
+ },
+ "es-ES": {
+ "code": "es-ES",
+ "name": "スペイン語(イベリアåŠå³¶)"
+ },
+ "sk": {
+ "code": "sk",
+ "name": "スロãƒã‚­ã‚¢èªž"
+ },
+ "sl": {
+ "code": "sl",
+ "name": "スロベニア語"
+ },
+ "sw": {
+ "code": "sw",
+ "name": "スワヒリ語"
+ },
+ "seh": {
+ "code": "seh",
+ "name": "セナ語"
+ },
+ "sr": {
+ "code": "sr",
+ "name": "セルビア語"
+ },
+ "xog": {
+ "code": "xog",
+ "name": "ソガ語"
+ },
+ "so": {
+ "code": "so",
+ "name": "ソマリ語"
+ },
+ "dz": {
+ "code": "dz",
+ "name": "ゾンカ語"
+ },
+ "dav": {
+ "code": "dav",
+ "name": "タイタ語"
+ },
+ "th": {
+ "code": "th",
+ "name": "タイ語"
+ },
+ "twq": {
+ "code": "twq",
+ "name": "タサワク語"
+ },
+ "shi": {
+ "code": "shi",
+ "name": "タシルãƒã‚¤ãƒˆèªž"
+ },
+ "zgh": {
+ "code": "zgh",
+ "name": "タマージク語(モロッコ公用語)"
+ },
+ "ta": {
+ "code": "ta",
+ "name": "タミル語"
+ },
+ "cs": {
+ "code": "cs",
+ "name": "ãƒã‚§ã‚³èªž"
+ },
+ "chr": {
+ "code": "chr",
+ "name": "ãƒã‚§ãƒ­ã‚­ãƒ¼èªž"
+ },
+ "cgg": {
+ "code": "cgg",
+ "name": "ãƒã‚¬èªž"
+ },
+ "bo": {
+ "code": "bo",
+ "name": "ãƒãƒ™ãƒƒãƒˆèªž"
+ },
+ "ti": {
+ "code": "ti",
+ "name": "ティグリニア語"
+ },
+ "teo": {
+ "code": "teo",
+ "name": "テソ語"
+ },
+ "te": {
+ "code": "te",
+ "name": "テルグ語"
+ },
+ "da": {
+ "code": "da",
+ "name": "デンマーク語"
+ },
+ "de": {
+ "code": "de",
+ "name": "ドイツ語"
+ },
+ "tr": {
+ "code": "tr",
+ "name": "トルコ語"
+ },
+ "to": {
+ "code": "to",
+ "name": "トンガ語"
+ },
+ "naq": {
+ "code": "naq",
+ "name": "ナマ語"
+ },
+ "nyn": {
+ "code": "nyn",
+ "name": "ニャンコレ語"
+ },
+ "nus": {
+ "code": "nus",
+ "name": "ヌエル語"
+ },
+ "ne": {
+ "code": "ne",
+ "name": "ãƒãƒ‘ール語"
+ },
+ "nn": {
+ "code": "nn",
+ "name": "ノルウェー語(ニーノシュク)"
+ },
+ "nb": {
+ "code": "nb",
+ "name": "ノルウェー語(ブークモール)"
+ },
+ "ha": {
+ "code": "ha",
+ "name": "ãƒã‚¦ã‚µèªž"
+ },
+ "bas": {
+ "code": "bas",
+ "name": "ãƒã‚µèªž"
+ },
+ "ps": {
+ "code": "ps",
+ "name": "パシュトゥー語"
+ },
+ "eu": {
+ "code": "eu",
+ "name": "ãƒã‚¹ã‚¯èªž"
+ },
+ "ksf": {
+ "code": "ksf",
+ "name": "ãƒãƒ•ã‚£ã‚¢èªž"
+ },
+ "hu": {
+ "code": "hu",
+ "name": "ãƒãƒ³ã‚¬ãƒªãƒ¼èªž"
+ },
+ "pa": {
+ "code": "pa",
+ "name": "パンジャブ語"
+ },
+ "bm": {
+ "code": "bm",
+ "name": "ãƒãƒ³ãƒãƒ©èªž"
+ },
+ "my": {
+ "code": "my",
+ "name": "ビルマ語"
+ },
+ "hi": {
+ "code": "hi",
+ "name": "ヒンディー語"
+ },
+ "fil": {
+ "code": "fil",
+ "name": "フィリピノ語"
+ },
+ "fi": {
+ "code": "fi",
+ "name": "フィンランド語"
+ },
+ "fo": {
+ "code": "fo",
+ "name": "フェロー語"
+ },
+ "ff": {
+ "code": "ff",
+ "name": "フラニ語"
+ },
+ "fr": {
+ "code": "fr",
+ "name": "フランス語"
+ },
+ "fur": {
+ "code": "fur",
+ "name": "フリウリ語"
+ },
+ "bg": {
+ "code": "bg",
+ "name": "ブルガリア語"
+ },
+ "br": {
+ "code": "br",
+ "name": "ブルトン語"
+ },
+ "nl-BE": {
+ "code": "nl-BE",
+ "name": "フレミッシュ語"
+ },
+ "vi": {
+ "code": "vi",
+ "name": "ベトナム語"
+ },
+ "bez": {
+ "code": "bez",
+ "name": "ベナ語"
+ },
+ "he": {
+ "code": "he",
+ "name": "ヘブライ語"
+ },
+ "be": {
+ "code": "be",
+ "name": "ベラルーシ語"
+ },
+ "fa": {
+ "code": "fa",
+ "name": "ペルシア語"
+ },
+ "bn": {
+ "code": "bn",
+ "name": "ベンガル語"
+ },
+ "pl": {
+ "code": "pl",
+ "name": "ãƒãƒ¼ãƒ©ãƒ³ãƒ‰èªž"
+ },
+ "bs": {
+ "code": "bs",
+ "name": "ボスニア語"
+ },
+ "brx": {
+ "code": "brx",
+ "name": "ボド語"
+ },
+ "pt": {
+ "code": "pt",
+ "name": "ãƒãƒ«ãƒˆã‚¬ãƒ«èªž"
+ },
+ "pt-PT": {
+ "code": "pt-PT",
+ "name": "ãƒãƒ«ãƒˆã‚¬ãƒ«èªž(イベリアåŠå³¶)"
+ },
+ "mgh": {
+ "code": "mgh",
+ "name": "マクア・ミート語"
+ },
+ "mk": {
+ "code": "mk",
+ "name": "マケドニア語"
+ },
+ "kde": {
+ "code": "kde",
+ "name": "マコンデ語"
+ },
+ "mas": {
+ "code": "mas",
+ "name": "マサイ語"
+ },
+ "mg": {
+ "code": "mg",
+ "name": "マダガスカル語"
+ },
+ "jmc": {
+ "code": "jmc",
+ "name": "マãƒãƒ£ãƒ¡èªž"
+ },
+ "mr": {
+ "code": "mr",
+ "name": "マラーティー語"
+ },
+ "ml": {
+ "code": "ml",
+ "name": "マラヤーラム語"
+ },
+ "mt": {
+ "code": "mt",
+ "name": "マルタ語"
+ },
+ "ms": {
+ "code": "ms",
+ "name": "マレー語"
+ },
+ "mua": {
+ "code": "mua",
+ "name": "ムンダン語"
+ },
+ "mer": {
+ "code": "mer",
+ "name": "メル語"
+ },
+ "mfe": {
+ "code": "mfe",
+ "name": "モーリシャス・クレオール語"
+ },
+ "ro-MD": {
+ "code": "ro-MD",
+ "name": "モルダビア語"
+ },
+ "mn": {
+ "code": "mn",
+ "name": "モンゴル語"
+ },
+ "yav": {
+ "code": "yav",
+ "name": "ヤンベン語"
+ },
+ "yo": {
+ "code": "yo",
+ "name": "ヨルãƒèªž"
+ },
+ "lo": {
+ "code": "lo",
+ "name": "ラオ語"
+ },
+ "lv": {
+ "code": "lv",
+ "name": "ラトビア語"
+ },
+ "lag": {
+ "code": "lag",
+ "name": "ランギ語"
+ },
+ "lt": {
+ "code": "lt",
+ "name": "リトアニア語"
+ },
+ "ln": {
+ "code": "ln",
+ "name": "リンガラ語"
+ },
+ "ro": {
+ "code": "ro",
+ "name": "ルーマニア語"
+ },
+ "luo": {
+ "code": "luo",
+ "name": "ルオ語"
+ },
+ "lb": {
+ "code": "lb",
+ "name": "ルクセンブルク語"
+ },
+ "lu": {
+ "code": "lu",
+ "name": "ルãƒãƒ»ã‚«ã‚¿ãƒ³ã‚¬èªž"
+ },
+ "luy": {
+ "code": "luy",
+ "name": "ルヒヤ語"
+ },
+ "rwk": {
+ "code": "rwk",
+ "name": "ルワ語"
+ },
+ "rn": {
+ "code": "rn",
+ "name": "ルンディ語"
+ },
+ "ru": {
+ "code": "ru",
+ "name": "ロシア語"
+ },
+ "rm": {
+ "code": "rm",
+ "name": "ロマンシュ語"
+ },
+ "rof": {
+ "code": "rof",
+ "name": "ロンボ語"
+ },
+ "jgo": {
+ "code": "jgo",
+ "name": "ンゴンãƒèªž"
+ },
+ "en": {
+ "code": "en",
+ "name": "英語"
+ },
+ "zh-Hans": {
+ "code": "zh-Hans",
+ "name": "簡体中国語"
+ },
+ "ko": {
+ "code": "ko",
+ "name": "韓国語"
+ },
+ "ar-001": {
+ "code": "ar-001",
+ "name": "ç¾ä»£æ¨™æº–アラビア語"
+ },
+ "hsb": {
+ "code": "hsb",
+ "name": "上ソルビア語"
+ },
+ "fy": {
+ "code": "fy",
+ "name": "西フリジア語"
+ },
+ "tzm": {
+ "code": "tzm",
+ "name": "中央アトラス・タマジクト語"
+ },
+ "zh": {
+ "code": "zh",
+ "name": "中国語"
+ },
+ "dsb": {
+ "code": "dsb",
+ "name": "低ソルビア語"
+ },
+ "ja": {
+ "code": "ja",
+ "name": "日本語"
+ },
+ "zh-Hant": {
+ "code": "zh-Hant",
+ "name": "ç¹ä½“中国語"
+ },
+ "de-CH": {
+ "code": "de-CH",
+ "name": "標準ドイツ語(スイス)"
+ },
+ "se": {
+ "code": "se",
+ "name": "北サーミ語"
+ },
+ "nd": {
+ "code": "nd",
+ "name": "北ンデベレ語"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/language/jgo.json b/library/intl/resources/language/jgo.json
new file mode 100644
index 000000000..3e8302ae7
--- /dev/null
+++ b/library/intl/resources/language/jgo.json
@@ -0,0 +1,738 @@
+{
+ "af": {
+ "code": "af",
+ "name": "Afrikaans"
+ },
+ "agq": {
+ "code": "agq",
+ "name": "Aghem"
+ },
+ "ak": {
+ "code": "ak",
+ "name": "Akan"
+ },
+ "ar": {
+ "code": "ar",
+ "name": "Alâbɛ"
+ },
+ "sq": {
+ "code": "sq",
+ "name": "Albanian"
+ },
+ "am": {
+ "code": "am",
+ "name": "Amharic"
+ },
+ "en": {
+ "code": "en",
+ "name": "Aŋgɛlúshi"
+ },
+ "ar-001": {
+ "code": "ar-001",
+ "name": "ar_001"
+ },
+ "hy": {
+ "code": "hy",
+ "name": "Armenian"
+ },
+ "ast": {
+ "code": "ast",
+ "name": "Asturian"
+ },
+ "asa": {
+ "code": "asa",
+ "name": "Asu"
+ },
+ "az": {
+ "code": "az",
+ "name": "Azerbaijani"
+ },
+ "ksf": {
+ "code": "ksf",
+ "name": "Bafia"
+ },
+ "bm": {
+ "code": "bm",
+ "name": "Bambara"
+ },
+ "bas": {
+ "code": "bas",
+ "name": "Basaa"
+ },
+ "eu": {
+ "code": "eu",
+ "name": "Basque"
+ },
+ "be": {
+ "code": "be",
+ "name": "Belarusian"
+ },
+ "bez": {
+ "code": "bez",
+ "name": "Bena"
+ },
+ "bn": {
+ "code": "bn",
+ "name": "Bengali"
+ },
+ "brx": {
+ "code": "brx",
+ "name": "Bodo"
+ },
+ "bs": {
+ "code": "bs",
+ "name": "Bosnian"
+ },
+ "br": {
+ "code": "br",
+ "name": "Breton"
+ },
+ "bg": {
+ "code": "bg",
+ "name": "Bulgarian"
+ },
+ "my": {
+ "code": "my",
+ "name": "Burmese"
+ },
+ "ca": {
+ "code": "ca",
+ "name": "Catalan"
+ },
+ "tzm": {
+ "code": "tzm",
+ "name": "Central Atlas Tamazight"
+ },
+ "chr": {
+ "code": "chr",
+ "name": "Cherokee"
+ },
+ "cgg": {
+ "code": "cgg",
+ "name": "Chiga"
+ },
+ "ksh": {
+ "code": "ksh",
+ "name": "Colognian"
+ },
+ "swc": {
+ "code": "swc",
+ "name": "Congo Swahili"
+ },
+ "hr": {
+ "code": "hr",
+ "name": "Croatian"
+ },
+ "cs": {
+ "code": "cs",
+ "name": "Czech"
+ },
+ "da": {
+ "code": "da",
+ "name": "Danish"
+ },
+ "de-AT": {
+ "code": "de-AT",
+ "name": "de_AT"
+ },
+ "de-CH": {
+ "code": "de-CH",
+ "name": "de_CH"
+ },
+ "nl": {
+ "code": "nl",
+ "name": "Dutch"
+ },
+ "dz": {
+ "code": "dz",
+ "name": "Dzongkha"
+ },
+ "ebu": {
+ "code": "ebu",
+ "name": "Embu"
+ },
+ "en-AU": {
+ "code": "en-AU",
+ "name": "en_AU"
+ },
+ "en-CA": {
+ "code": "en-CA",
+ "name": "en_CA"
+ },
+ "en-GB": {
+ "code": "en-GB",
+ "name": "en_GB"
+ },
+ "en-US": {
+ "code": "en-US",
+ "name": "en_US"
+ },
+ "es-ES": {
+ "code": "es-ES",
+ "name": "es_ES"
+ },
+ "es-MX": {
+ "code": "es-MX",
+ "name": "es_MX"
+ },
+ "eo": {
+ "code": "eo",
+ "name": "Esperanto"
+ },
+ "et": {
+ "code": "et",
+ "name": "Estonian"
+ },
+ "ee": {
+ "code": "ee",
+ "name": "Ewe"
+ },
+ "ewo": {
+ "code": "ewo",
+ "name": "Ewondo"
+ },
+ "fo": {
+ "code": "fo",
+ "name": "Faroese"
+ },
+ "fr": {
+ "code": "fr",
+ "name": "Fɛlánci"
+ },
+ "fil": {
+ "code": "fil",
+ "name": "Filipino"
+ },
+ "fi": {
+ "code": "fi",
+ "name": "Finnish"
+ },
+ "fr-CA": {
+ "code": "fr-CA",
+ "name": "fr_CA"
+ },
+ "fr-CH": {
+ "code": "fr-CH",
+ "name": "fr_CH"
+ },
+ "fur": {
+ "code": "fur",
+ "name": "Friulian"
+ },
+ "ff": {
+ "code": "ff",
+ "name": "Fulah"
+ },
+ "gl": {
+ "code": "gl",
+ "name": "Galician"
+ },
+ "lg": {
+ "code": "lg",
+ "name": "Ganda"
+ },
+ "ka": {
+ "code": "ka",
+ "name": "Georgian"
+ },
+ "gu": {
+ "code": "gu",
+ "name": "Gujarati"
+ },
+ "guz": {
+ "code": "guz",
+ "name": "Gusii"
+ },
+ "ha": {
+ "code": "ha",
+ "name": "Hausa"
+ },
+ "he": {
+ "code": "he",
+ "name": "Hebrew"
+ },
+ "hi": {
+ "code": "hi",
+ "name": "Hindi"
+ },
+ "hu": {
+ "code": "hu",
+ "name": "Hungarian"
+ },
+ "is": {
+ "code": "is",
+ "name": "Icelandic"
+ },
+ "id": {
+ "code": "id",
+ "name": "Indonesian"
+ },
+ "ga": {
+ "code": "ga",
+ "name": "Irish"
+ },
+ "it": {
+ "code": "it",
+ "name": "Italian"
+ },
+ "ja": {
+ "code": "ja",
+ "name": "Japanese"
+ },
+ "dyo": {
+ "code": "dyo",
+ "name": "Jola-Fonyi"
+ },
+ "kea": {
+ "code": "kea",
+ "name": "Kabuverdianu"
+ },
+ "kab": {
+ "code": "kab",
+ "name": "Kabyle"
+ },
+ "kl": {
+ "code": "kl",
+ "name": "Kalaallisut"
+ },
+ "kln": {
+ "code": "kln",
+ "name": "Kalenjin"
+ },
+ "kam": {
+ "code": "kam",
+ "name": "Kamba"
+ },
+ "kn": {
+ "code": "kn",
+ "name": "Kannada"
+ },
+ "ks": {
+ "code": "ks",
+ "name": "Kashmiri"
+ },
+ "kk": {
+ "code": "kk",
+ "name": "Kazakh"
+ },
+ "km": {
+ "code": "km",
+ "name": "Khmer"
+ },
+ "ki": {
+ "code": "ki",
+ "name": "Kikuyu"
+ },
+ "ko": {
+ "code": "ko",
+ "name": "Korean"
+ },
+ "khq": {
+ "code": "khq",
+ "name": "Koyra Chiini"
+ },
+ "ses": {
+ "code": "ses",
+ "name": "Koyraboro Senni"
+ },
+ "nmg": {
+ "code": "nmg",
+ "name": "Kwasio"
+ },
+ "ky": {
+ "code": "ky",
+ "name": "Kyrgyz"
+ },
+ "lag": {
+ "code": "lag",
+ "name": "Langi"
+ },
+ "lo": {
+ "code": "lo",
+ "name": "Lao"
+ },
+ "lv": {
+ "code": "lv",
+ "name": "Latvian"
+ },
+ "ln": {
+ "code": "ln",
+ "name": "Lingala"
+ },
+ "lt": {
+ "code": "lt",
+ "name": "Lithuanian"
+ },
+ "dsb": {
+ "code": "dsb",
+ "name": "Lower Sorbian"
+ },
+ "lu": {
+ "code": "lu",
+ "name": "Luba-Katanga"
+ },
+ "luo": {
+ "code": "luo",
+ "name": "Luo"
+ },
+ "lb": {
+ "code": "lb",
+ "name": "Luxembourgish"
+ },
+ "luy": {
+ "code": "luy",
+ "name": "Luyia"
+ },
+ "mk": {
+ "code": "mk",
+ "name": "Macedonian"
+ },
+ "jmc": {
+ "code": "jmc",
+ "name": "Machame"
+ },
+ "mgh": {
+ "code": "mgh",
+ "name": "Makhuwa-Meetto"
+ },
+ "kde": {
+ "code": "kde",
+ "name": "Makonde"
+ },
+ "mg": {
+ "code": "mg",
+ "name": "Malagasy"
+ },
+ "ms": {
+ "code": "ms",
+ "name": "Malay"
+ },
+ "ml": {
+ "code": "ml",
+ "name": "Malayalam"
+ },
+ "mt": {
+ "code": "mt",
+ "name": "Maltese"
+ },
+ "mr": {
+ "code": "mr",
+ "name": "Marathi"
+ },
+ "mas": {
+ "code": "mas",
+ "name": "Masai"
+ },
+ "mer": {
+ "code": "mer",
+ "name": "Meru"
+ },
+ "mn": {
+ "code": "mn",
+ "name": "Mongolian"
+ },
+ "mfe": {
+ "code": "mfe",
+ "name": "Morisyen"
+ },
+ "mua": {
+ "code": "mua",
+ "name": "Mundang"
+ },
+ "naq": {
+ "code": "naq",
+ "name": "Nama"
+ },
+ "jgo": {
+ "code": "jgo",
+ "name": "Ndaꞌa"
+ },
+ "ne": {
+ "code": "ne",
+ "name": "Nepali"
+ },
+ "de": {
+ "code": "de",
+ "name": "Njáman"
+ },
+ "nl-BE": {
+ "code": "nl-BE",
+ "name": "nl_BE"
+ },
+ "nd": {
+ "code": "nd",
+ "name": "North Ndebele"
+ },
+ "se": {
+ "code": "se",
+ "name": "Northern Sami"
+ },
+ "nb": {
+ "code": "nb",
+ "name": "Norwegian Bokmål"
+ },
+ "nn": {
+ "code": "nn",
+ "name": "Norwegian Nynorsk"
+ },
+ "nus": {
+ "code": "nus",
+ "name": "Nuer"
+ },
+ "nyn": {
+ "code": "nyn",
+ "name": "Nyankole"
+ },
+ "el": {
+ "code": "el",
+ "name": "Ŋgɛlɛ̂k"
+ },
+ "or": {
+ "code": "or",
+ "name": "Oriya"
+ },
+ "ps": {
+ "code": "ps",
+ "name": "Pashto"
+ },
+ "fa": {
+ "code": "fa",
+ "name": "Persian"
+ },
+ "pl": {
+ "code": "pl",
+ "name": "Polish"
+ },
+ "pt": {
+ "code": "pt",
+ "name": "Portuguese"
+ },
+ "pt-BR": {
+ "code": "pt-BR",
+ "name": "pt_BR"
+ },
+ "pt-PT": {
+ "code": "pt-PT",
+ "name": "pt_PT"
+ },
+ "pa": {
+ "code": "pa",
+ "name": "Punjabi"
+ },
+ "ro-MD": {
+ "code": "ro-MD",
+ "name": "ro_MD"
+ },
+ "ro": {
+ "code": "ro",
+ "name": "Romanian"
+ },
+ "rm": {
+ "code": "rm",
+ "name": "Romansh"
+ },
+ "rof": {
+ "code": "rof",
+ "name": "Rombo"
+ },
+ "rn": {
+ "code": "rn",
+ "name": "Rundi"
+ },
+ "ru": {
+ "code": "ru",
+ "name": "Russian"
+ },
+ "rwk": {
+ "code": "rwk",
+ "name": "Rwa"
+ },
+ "saq": {
+ "code": "saq",
+ "name": "Samburu"
+ },
+ "sg": {
+ "code": "sg",
+ "name": "Sango"
+ },
+ "sbp": {
+ "code": "sbp",
+ "name": "Sangu"
+ },
+ "gd": {
+ "code": "gd",
+ "name": "Scottish Gaelic"
+ },
+ "seh": {
+ "code": "seh",
+ "name": "Sena"
+ },
+ "sr": {
+ "code": "sr",
+ "name": "Serbian"
+ },
+ "ksb": {
+ "code": "ksb",
+ "name": "Shambala"
+ },
+ "zh": {
+ "code": "zh",
+ "name": "Shinwâ"
+ },
+ "sn": {
+ "code": "sn",
+ "name": "Shona"
+ },
+ "si": {
+ "code": "si",
+ "name": "Sinhala"
+ },
+ "sk": {
+ "code": "sk",
+ "name": "Slovak"
+ },
+ "sl": {
+ "code": "sl",
+ "name": "Slovenian"
+ },
+ "xog": {
+ "code": "xog",
+ "name": "Soga"
+ },
+ "so": {
+ "code": "so",
+ "name": "Somali"
+ },
+ "es": {
+ "code": "es",
+ "name": "Spanish"
+ },
+ "zgh": {
+ "code": "zgh",
+ "name": "Standard Moroccan Tamazight"
+ },
+ "sw": {
+ "code": "sw",
+ "name": "Swahili"
+ },
+ "sv": {
+ "code": "sv",
+ "name": "Swedish"
+ },
+ "gsw": {
+ "code": "gsw",
+ "name": "Swiss German"
+ },
+ "shi": {
+ "code": "shi",
+ "name": "Tachelhit"
+ },
+ "dav": {
+ "code": "dav",
+ "name": "Taita"
+ },
+ "ta": {
+ "code": "ta",
+ "name": "Tamil"
+ },
+ "twq": {
+ "code": "twq",
+ "name": "Tasawaq"
+ },
+ "te": {
+ "code": "te",
+ "name": "Telugu"
+ },
+ "teo": {
+ "code": "teo",
+ "name": "Teso"
+ },
+ "th": {
+ "code": "th",
+ "name": "Thai"
+ },
+ "bo": {
+ "code": "bo",
+ "name": "Tibetan"
+ },
+ "ti": {
+ "code": "ti",
+ "name": "Tigrinya"
+ },
+ "to": {
+ "code": "to",
+ "name": "Tongan"
+ },
+ "tr": {
+ "code": "tr",
+ "name": "Turkish"
+ },
+ "uk": {
+ "code": "uk",
+ "name": "Ukrainian"
+ },
+ "hsb": {
+ "code": "hsb",
+ "name": "Upper Sorbian"
+ },
+ "ur": {
+ "code": "ur",
+ "name": "Urdu"
+ },
+ "ug": {
+ "code": "ug",
+ "name": "Uyghur"
+ },
+ "uz": {
+ "code": "uz",
+ "name": "Uzbek"
+ },
+ "vai": {
+ "code": "vai",
+ "name": "Vai"
+ },
+ "vi": {
+ "code": "vi",
+ "name": "Vietnamese"
+ },
+ "vun": {
+ "code": "vun",
+ "name": "Vunjo"
+ },
+ "wae": {
+ "code": "wae",
+ "name": "Walser"
+ },
+ "cy": {
+ "code": "cy",
+ "name": "Welsh"
+ },
+ "fy": {
+ "code": "fy",
+ "name": "Western Frisian"
+ },
+ "yav": {
+ "code": "yav",
+ "name": "Yangben"
+ },
+ "yo": {
+ "code": "yo",
+ "name": "Yoruba"
+ },
+ "dje": {
+ "code": "dje",
+ "name": "Zarma"
+ },
+ "zh-Hans": {
+ "code": "zh-Hans",
+ "name": "zh_Hans"
+ },
+ "zh-Hant": {
+ "code": "zh-Hant",
+ "name": "zh_Hant"
+ },
+ "zu": {
+ "code": "zu",
+ "name": "Zulu"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/language/jmc.json b/library/intl/resources/language/jmc.json
new file mode 100644
index 000000000..328450431
--- /dev/null
+++ b/library/intl/resources/language/jmc.json
@@ -0,0 +1,738 @@
+{
+ "af": {
+ "code": "af",
+ "name": "Afrikaans"
+ },
+ "agq": {
+ "code": "agq",
+ "name": "Aghem"
+ },
+ "sq": {
+ "code": "sq",
+ "name": "Albanian"
+ },
+ "ar-001": {
+ "code": "ar-001",
+ "name": "ar_001"
+ },
+ "hy": {
+ "code": "hy",
+ "name": "Armenian"
+ },
+ "ast": {
+ "code": "ast",
+ "name": "Asturian"
+ },
+ "asa": {
+ "code": "asa",
+ "name": "Asu"
+ },
+ "az": {
+ "code": "az",
+ "name": "Azerbaijani"
+ },
+ "ksf": {
+ "code": "ksf",
+ "name": "Bafia"
+ },
+ "bm": {
+ "code": "bm",
+ "name": "Bambara"
+ },
+ "bas": {
+ "code": "bas",
+ "name": "Basaa"
+ },
+ "eu": {
+ "code": "eu",
+ "name": "Basque"
+ },
+ "bez": {
+ "code": "bez",
+ "name": "Bena"
+ },
+ "brx": {
+ "code": "brx",
+ "name": "Bodo"
+ },
+ "bs": {
+ "code": "bs",
+ "name": "Bosnian"
+ },
+ "br": {
+ "code": "br",
+ "name": "Breton"
+ },
+ "ca": {
+ "code": "ca",
+ "name": "Catalan"
+ },
+ "tzm": {
+ "code": "tzm",
+ "name": "Central Atlas Tamazight"
+ },
+ "chr": {
+ "code": "chr",
+ "name": "Cherokee"
+ },
+ "cgg": {
+ "code": "cgg",
+ "name": "Chiga"
+ },
+ "ksh": {
+ "code": "ksh",
+ "name": "Colognian"
+ },
+ "swc": {
+ "code": "swc",
+ "name": "Congo Swahili"
+ },
+ "hr": {
+ "code": "hr",
+ "name": "Croatian"
+ },
+ "da": {
+ "code": "da",
+ "name": "Danish"
+ },
+ "de-AT": {
+ "code": "de-AT",
+ "name": "de_AT"
+ },
+ "de-CH": {
+ "code": "de-CH",
+ "name": "de_CH"
+ },
+ "dz": {
+ "code": "dz",
+ "name": "Dzongkha"
+ },
+ "ebu": {
+ "code": "ebu",
+ "name": "Embu"
+ },
+ "en-AU": {
+ "code": "en-AU",
+ "name": "en_AU"
+ },
+ "en-CA": {
+ "code": "en-CA",
+ "name": "en_CA"
+ },
+ "en-GB": {
+ "code": "en-GB",
+ "name": "en_GB"
+ },
+ "en-US": {
+ "code": "en-US",
+ "name": "en_US"
+ },
+ "es-ES": {
+ "code": "es-ES",
+ "name": "es_ES"
+ },
+ "es-MX": {
+ "code": "es-MX",
+ "name": "es_MX"
+ },
+ "eo": {
+ "code": "eo",
+ "name": "Esperanto"
+ },
+ "et": {
+ "code": "et",
+ "name": "Estonian"
+ },
+ "ee": {
+ "code": "ee",
+ "name": "Ewe"
+ },
+ "ewo": {
+ "code": "ewo",
+ "name": "Ewondo"
+ },
+ "fo": {
+ "code": "fo",
+ "name": "Faroese"
+ },
+ "fil": {
+ "code": "fil",
+ "name": "Filipino"
+ },
+ "fi": {
+ "code": "fi",
+ "name": "Finnish"
+ },
+ "fr-CA": {
+ "code": "fr-CA",
+ "name": "fr_CA"
+ },
+ "fr-CH": {
+ "code": "fr-CH",
+ "name": "fr_CH"
+ },
+ "fur": {
+ "code": "fur",
+ "name": "Friulian"
+ },
+ "ff": {
+ "code": "ff",
+ "name": "Fulah"
+ },
+ "gl": {
+ "code": "gl",
+ "name": "Galician"
+ },
+ "lg": {
+ "code": "lg",
+ "name": "Ganda"
+ },
+ "ka": {
+ "code": "ka",
+ "name": "Georgian"
+ },
+ "gu": {
+ "code": "gu",
+ "name": "Gujarati"
+ },
+ "guz": {
+ "code": "guz",
+ "name": "Gusii"
+ },
+ "he": {
+ "code": "he",
+ "name": "Hebrew"
+ },
+ "is": {
+ "code": "is",
+ "name": "Icelandic"
+ },
+ "ga": {
+ "code": "ga",
+ "name": "Irish"
+ },
+ "dyo": {
+ "code": "dyo",
+ "name": "Jola-Fonyi"
+ },
+ "kea": {
+ "code": "kea",
+ "name": "Kabuverdianu"
+ },
+ "kab": {
+ "code": "kab",
+ "name": "Kabyle"
+ },
+ "kl": {
+ "code": "kl",
+ "name": "Kalaallisut"
+ },
+ "kln": {
+ "code": "kln",
+ "name": "Kalenjin"
+ },
+ "kam": {
+ "code": "kam",
+ "name": "Kamba"
+ },
+ "kn": {
+ "code": "kn",
+ "name": "Kannada"
+ },
+ "ks": {
+ "code": "ks",
+ "name": "Kashmiri"
+ },
+ "kk": {
+ "code": "kk",
+ "name": "Kazakh"
+ },
+ "ak": {
+ "code": "ak",
+ "name": "Kiakanyi"
+ },
+ "am": {
+ "code": "am",
+ "name": "Kiamharyi"
+ },
+ "ki": {
+ "code": "ki",
+ "name": "Kikuyu"
+ },
+ "jmc": {
+ "code": "jmc",
+ "name": "Kimachame"
+ },
+ "khq": {
+ "code": "khq",
+ "name": "Koyra Chiini"
+ },
+ "ses": {
+ "code": "ses",
+ "name": "Koyraboro Senni"
+ },
+ "nmg": {
+ "code": "nmg",
+ "name": "Kwasio"
+ },
+ "fa": {
+ "code": "fa",
+ "name": "Kyiajemi"
+ },
+ "ar": {
+ "code": "ar",
+ "name": "Kyiarabu"
+ },
+ "bn": {
+ "code": "bn",
+ "name": "Kyibangla"
+ },
+ "be": {
+ "code": "be",
+ "name": "Kyibelarusi"
+ },
+ "bg": {
+ "code": "bg",
+ "name": "Kyibulgaryia"
+ },
+ "my": {
+ "code": "my",
+ "name": "Kyiburma"
+ },
+ "cs": {
+ "code": "cs",
+ "name": "Kyichecki"
+ },
+ "zh": {
+ "code": "zh",
+ "name": "Kyichina"
+ },
+ "fr": {
+ "code": "fr",
+ "name": "Kyifaransa"
+ },
+ "el": {
+ "code": "el",
+ "name": "Kyigiriki"
+ },
+ "ha": {
+ "code": "ha",
+ "name": "Kyihausa"
+ },
+ "hi": {
+ "code": "hi",
+ "name": "Kyihindi"
+ },
+ "es": {
+ "code": "es",
+ "name": "Kyihispania"
+ },
+ "nl": {
+ "code": "nl",
+ "name": "Kyiholanzi"
+ },
+ "hu": {
+ "code": "hu",
+ "name": "Kyihungari"
+ },
+ "id": {
+ "code": "id",
+ "name": "Kyiindonesia"
+ },
+ "it": {
+ "code": "it",
+ "name": "Kyiitaliano"
+ },
+ "ja": {
+ "code": "ja",
+ "name": "Kyijapani"
+ },
+ "de": {
+ "code": "de",
+ "name": "Kyijerumani"
+ },
+ "km": {
+ "code": "km",
+ "name": "Kyikambodia"
+ },
+ "ko": {
+ "code": "ko",
+ "name": "Kyikorea"
+ },
+ "ms": {
+ "code": "ms",
+ "name": "Kyimalesia"
+ },
+ "ne": {
+ "code": "ne",
+ "name": "Kyinepali"
+ },
+ "en": {
+ "code": "en",
+ "name": "Kyingereza"
+ },
+ "pl": {
+ "code": "pl",
+ "name": "Kyipolandi"
+ },
+ "pa": {
+ "code": "pa",
+ "name": "Kyipunjabi"
+ },
+ "pt": {
+ "code": "pt",
+ "name": "Kyireno"
+ },
+ "ro": {
+ "code": "ro",
+ "name": "Kyiromania"
+ },
+ "ru": {
+ "code": "ru",
+ "name": "Kyirusi"
+ },
+ "so": {
+ "code": "so",
+ "name": "Kyisomalyi"
+ },
+ "sv": {
+ "code": "sv",
+ "name": "Kyiswidi"
+ },
+ "th": {
+ "code": "th",
+ "name": "Kyitailandi"
+ },
+ "ta": {
+ "code": "ta",
+ "name": "Kyitamil"
+ },
+ "tr": {
+ "code": "tr",
+ "name": "Kyiturukyi"
+ },
+ "uk": {
+ "code": "uk",
+ "name": "Kyiukrania"
+ },
+ "ur": {
+ "code": "ur",
+ "name": "Kyiurdu"
+ },
+ "vi": {
+ "code": "vi",
+ "name": "Kyivietinamu"
+ },
+ "yo": {
+ "code": "yo",
+ "name": "Kyiyoruba"
+ },
+ "zu": {
+ "code": "zu",
+ "name": "Kyizulu"
+ },
+ "ky": {
+ "code": "ky",
+ "name": "Kyrgyz"
+ },
+ "lag": {
+ "code": "lag",
+ "name": "Langi"
+ },
+ "lo": {
+ "code": "lo",
+ "name": "Lao"
+ },
+ "lv": {
+ "code": "lv",
+ "name": "Latvian"
+ },
+ "ln": {
+ "code": "ln",
+ "name": "Lingala"
+ },
+ "lt": {
+ "code": "lt",
+ "name": "Lithuanian"
+ },
+ "dsb": {
+ "code": "dsb",
+ "name": "Lower Sorbian"
+ },
+ "lu": {
+ "code": "lu",
+ "name": "Luba-Katanga"
+ },
+ "luo": {
+ "code": "luo",
+ "name": "Luo"
+ },
+ "lb": {
+ "code": "lb",
+ "name": "Luxembourgish"
+ },
+ "luy": {
+ "code": "luy",
+ "name": "Luyia"
+ },
+ "mk": {
+ "code": "mk",
+ "name": "Macedonian"
+ },
+ "mgh": {
+ "code": "mgh",
+ "name": "Makhuwa-Meetto"
+ },
+ "kde": {
+ "code": "kde",
+ "name": "Makonde"
+ },
+ "mg": {
+ "code": "mg",
+ "name": "Malagasy"
+ },
+ "ml": {
+ "code": "ml",
+ "name": "Malayalam"
+ },
+ "mt": {
+ "code": "mt",
+ "name": "Maltese"
+ },
+ "mr": {
+ "code": "mr",
+ "name": "Marathi"
+ },
+ "mas": {
+ "code": "mas",
+ "name": "Masai"
+ },
+ "mer": {
+ "code": "mer",
+ "name": "Meru"
+ },
+ "mn": {
+ "code": "mn",
+ "name": "Mongolian"
+ },
+ "mfe": {
+ "code": "mfe",
+ "name": "Morisyen"
+ },
+ "mua": {
+ "code": "mua",
+ "name": "Mundang"
+ },
+ "naq": {
+ "code": "naq",
+ "name": "Nama"
+ },
+ "jgo": {
+ "code": "jgo",
+ "name": "Ngomba"
+ },
+ "nl-BE": {
+ "code": "nl-BE",
+ "name": "nl_BE"
+ },
+ "nd": {
+ "code": "nd",
+ "name": "North Ndebele"
+ },
+ "se": {
+ "code": "se",
+ "name": "Northern Sami"
+ },
+ "nb": {
+ "code": "nb",
+ "name": "Norwegian Bokmål"
+ },
+ "nn": {
+ "code": "nn",
+ "name": "Norwegian Nynorsk"
+ },
+ "nus": {
+ "code": "nus",
+ "name": "Nuer"
+ },
+ "nyn": {
+ "code": "nyn",
+ "name": "Nyankole"
+ },
+ "or": {
+ "code": "or",
+ "name": "Oriya"
+ },
+ "ps": {
+ "code": "ps",
+ "name": "Pashto"
+ },
+ "pt-BR": {
+ "code": "pt-BR",
+ "name": "pt_BR"
+ },
+ "pt-PT": {
+ "code": "pt-PT",
+ "name": "pt_PT"
+ },
+ "ro-MD": {
+ "code": "ro-MD",
+ "name": "ro_MD"
+ },
+ "rm": {
+ "code": "rm",
+ "name": "Romansh"
+ },
+ "rof": {
+ "code": "rof",
+ "name": "Rombo"
+ },
+ "rn": {
+ "code": "rn",
+ "name": "Rundi"
+ },
+ "rwk": {
+ "code": "rwk",
+ "name": "Rwa"
+ },
+ "saq": {
+ "code": "saq",
+ "name": "Samburu"
+ },
+ "sg": {
+ "code": "sg",
+ "name": "Sango"
+ },
+ "sbp": {
+ "code": "sbp",
+ "name": "Sangu"
+ },
+ "gd": {
+ "code": "gd",
+ "name": "Scottish Gaelic"
+ },
+ "seh": {
+ "code": "seh",
+ "name": "Sena"
+ },
+ "sr": {
+ "code": "sr",
+ "name": "Serbian"
+ },
+ "ksb": {
+ "code": "ksb",
+ "name": "Shambala"
+ },
+ "sn": {
+ "code": "sn",
+ "name": "Shona"
+ },
+ "si": {
+ "code": "si",
+ "name": "Sinhala"
+ },
+ "sk": {
+ "code": "sk",
+ "name": "Slovak"
+ },
+ "sl": {
+ "code": "sl",
+ "name": "Slovenian"
+ },
+ "xog": {
+ "code": "xog",
+ "name": "Soga"
+ },
+ "zgh": {
+ "code": "zgh",
+ "name": "Standard Moroccan Tamazight"
+ },
+ "sw": {
+ "code": "sw",
+ "name": "Swahili"
+ },
+ "gsw": {
+ "code": "gsw",
+ "name": "Swiss German"
+ },
+ "shi": {
+ "code": "shi",
+ "name": "Tachelhit"
+ },
+ "dav": {
+ "code": "dav",
+ "name": "Taita"
+ },
+ "twq": {
+ "code": "twq",
+ "name": "Tasawaq"
+ },
+ "te": {
+ "code": "te",
+ "name": "Telugu"
+ },
+ "teo": {
+ "code": "teo",
+ "name": "Teso"
+ },
+ "bo": {
+ "code": "bo",
+ "name": "Tibetan"
+ },
+ "ti": {
+ "code": "ti",
+ "name": "Tigrinya"
+ },
+ "to": {
+ "code": "to",
+ "name": "Tongan"
+ },
+ "hsb": {
+ "code": "hsb",
+ "name": "Upper Sorbian"
+ },
+ "ug": {
+ "code": "ug",
+ "name": "Uyghur"
+ },
+ "uz": {
+ "code": "uz",
+ "name": "Uzbek"
+ },
+ "vai": {
+ "code": "vai",
+ "name": "Vai"
+ },
+ "vun": {
+ "code": "vun",
+ "name": "Vunjo"
+ },
+ "wae": {
+ "code": "wae",
+ "name": "Walser"
+ },
+ "cy": {
+ "code": "cy",
+ "name": "Welsh"
+ },
+ "fy": {
+ "code": "fy",
+ "name": "Western Frisian"
+ },
+ "yav": {
+ "code": "yav",
+ "name": "Yangben"
+ },
+ "dje": {
+ "code": "dje",
+ "name": "Zarma"
+ },
+ "zh-Hans": {
+ "code": "zh-Hans",
+ "name": "zh_Hans"
+ },
+ "zh-Hant": {
+ "code": "zh-Hant",
+ "name": "zh_Hant"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/language/ka.json b/library/intl/resources/language/ka.json
new file mode 100644
index 000000000..e651e5028
--- /dev/null
+++ b/library/intl/resources/language/ka.json
@@ -0,0 +1,738 @@
+{
+ "ksh": {
+ "code": "ksh",
+ "name": "Colognian"
+ },
+ "ff": {
+ "code": "ff",
+ "name": "Fulah"
+ },
+ "wae": {
+ "code": "wae",
+ "name": "Walser"
+ },
+ "yav": {
+ "code": "yav",
+ "name": "Yangben"
+ },
+ "en-AU": {
+ "code": "en-AU",
+ "name": "áƒáƒ•áƒ¡áƒ¢áƒ áƒáƒšáƒ˜áƒ£áƒ áƒ˜ ინგლისური"
+ },
+ "de-AT": {
+ "code": "de-AT",
+ "name": "áƒáƒ•áƒ¡áƒ¢áƒ áƒ˜áƒ£áƒšáƒ˜ გერმáƒáƒœáƒ£áƒšáƒ˜"
+ },
+ "az": {
+ "code": "az",
+ "name": "áƒáƒ–ერბáƒáƒ˜áƒ¯áƒáƒœáƒ£áƒšáƒ˜"
+ },
+ "ak": {
+ "code": "ak",
+ "name": "áƒáƒ™áƒáƒœáƒ˜"
+ },
+ "sq": {
+ "code": "sq",
+ "name": "áƒáƒšáƒ‘áƒáƒœáƒ£áƒ áƒ˜"
+ },
+ "en-US": {
+ "code": "en-US",
+ "name": "áƒáƒ›áƒ”რიკული ინგლისური"
+ },
+ "am": {
+ "code": "am",
+ "name": "áƒáƒ›áƒ°áƒáƒ áƒ£áƒšáƒ˜"
+ },
+ "ar": {
+ "code": "ar",
+ "name": "áƒáƒ áƒáƒ‘ული"
+ },
+ "ast": {
+ "code": "ast",
+ "name": "áƒáƒ¡áƒ¢áƒ£áƒ áƒ˜áƒ£áƒšáƒ˜"
+ },
+ "asa": {
+ "code": "asa",
+ "name": "áƒáƒ¡áƒ£"
+ },
+ "af": {
+ "code": "af",
+ "name": "áƒáƒ¤áƒ áƒ˜áƒ™áƒáƒáƒœáƒ¡áƒ˜"
+ },
+ "agq": {
+ "code": "agq",
+ "name": "áƒáƒ¦áƒ”მი"
+ },
+ "bm": {
+ "code": "bm",
+ "name": "ბáƒáƒ›áƒ‘áƒáƒ áƒ"
+ },
+ "bas": {
+ "code": "bas",
+ "name": "ბáƒáƒ¡áƒ"
+ },
+ "eu": {
+ "code": "eu",
+ "name": "ბáƒáƒ¡áƒ™áƒ£áƒ áƒ˜"
+ },
+ "ksf": {
+ "code": "ksf",
+ "name": "ბáƒáƒ¤áƒ˜áƒ"
+ },
+ "be": {
+ "code": "be",
+ "name": "ბელáƒáƒ áƒ£áƒ¡áƒ£áƒšáƒ˜"
+ },
+ "bez": {
+ "code": "bez",
+ "name": "ბენáƒ"
+ },
+ "bn": {
+ "code": "bn",
+ "name": "ბენგáƒáƒšáƒ£áƒ áƒ˜"
+ },
+ "el": {
+ "code": "el",
+ "name": "ბერძნული"
+ },
+ "my": {
+ "code": "my",
+ "name": "ბირმული"
+ },
+ "brx": {
+ "code": "brx",
+ "name": "ბáƒáƒ“áƒ"
+ },
+ "bs": {
+ "code": "bs",
+ "name": "ბáƒáƒ¡áƒœáƒ˜áƒ£áƒ áƒ˜"
+ },
+ "pt-BR": {
+ "code": "pt-BR",
+ "name": "ბრáƒáƒ–ილიური პáƒáƒ áƒ¢áƒ£áƒ’áƒáƒšáƒ˜áƒ£áƒ áƒ˜"
+ },
+ "br": {
+ "code": "br",
+ "name": "ბრეტáƒáƒœáƒ£áƒšáƒ˜"
+ },
+ "en-GB": {
+ "code": "en-GB",
+ "name": "ბრიტáƒáƒœáƒ£áƒšáƒ˜ ინგლისური"
+ },
+ "bg": {
+ "code": "bg",
+ "name": "ბულგáƒáƒ áƒ£áƒšáƒ˜"
+ },
+ "gl": {
+ "code": "gl",
+ "name": "გáƒáƒšáƒ˜áƒ¡áƒ˜áƒ£áƒ áƒ˜"
+ },
+ "zh-Hans": {
+ "code": "zh-Hans",
+ "name": "გáƒáƒ›áƒáƒ áƒ¢áƒ˜áƒ•áƒ”ბული ჩინური"
+ },
+ "lg": {
+ "code": "lg",
+ "name": "გáƒáƒœáƒ“áƒ"
+ },
+ "de": {
+ "code": "de",
+ "name": "გერმáƒáƒœáƒ£áƒšáƒ˜"
+ },
+ "guz": {
+ "code": "guz",
+ "name": "გუსიი"
+ },
+ "gu": {
+ "code": "gu",
+ "name": "გუჯáƒáƒ áƒáƒ—ი"
+ },
+ "da": {
+ "code": "da",
+ "name": "დáƒáƒœáƒ˜áƒ£áƒ áƒ˜"
+ },
+ "kl": {
+ "code": "kl",
+ "name": "დáƒáƒ¡áƒáƒ•áƒšáƒ”თ გრენლáƒáƒœáƒ“იური"
+ },
+ "fy": {
+ "code": "fy",
+ "name": "დáƒáƒ¡áƒáƒ•áƒšáƒ”თფრიზიული"
+ },
+ "dyo": {
+ "code": "dyo",
+ "name": "დიáƒáƒšáƒ"
+ },
+ "he": {
+ "code": "he",
+ "name": "ებრáƒáƒ£áƒšáƒ˜"
+ },
+ "ee": {
+ "code": "ee",
+ "name": "ევე"
+ },
+ "ewo": {
+ "code": "ewo",
+ "name": "ევáƒáƒœáƒ“áƒ"
+ },
+ "es-ES": {
+ "code": "es-ES",
+ "name": "ევრáƒáƒžáƒ£áƒšáƒ˜ ესპáƒáƒœáƒ£áƒ áƒ˜"
+ },
+ "pt-PT": {
+ "code": "pt-PT",
+ "name": "ევრáƒáƒžáƒ£áƒšáƒ˜ პáƒáƒ áƒ¢áƒ£áƒ’áƒáƒšáƒ˜áƒ£áƒ áƒ˜"
+ },
+ "ebu": {
+ "code": "ebu",
+ "name": "ემბუ"
+ },
+ "es": {
+ "code": "es",
+ "name": "ესპáƒáƒœáƒ£áƒ áƒ˜"
+ },
+ "eo": {
+ "code": "eo",
+ "name": "ესპერáƒáƒœáƒ¢áƒ"
+ },
+ "et": {
+ "code": "et",
+ "name": "ესტáƒáƒœáƒ£áƒ áƒ˜"
+ },
+ "vai": {
+ "code": "vai",
+ "name": "ვáƒáƒ˜"
+ },
+ "vi": {
+ "code": "vi",
+ "name": "ვიეტნáƒáƒ›áƒ£áƒ áƒ˜"
+ },
+ "vun": {
+ "code": "vun",
+ "name": "ვუნჯáƒ"
+ },
+ "dje": {
+ "code": "dje",
+ "name": "ზáƒáƒ áƒ›áƒ"
+ },
+ "hsb": {
+ "code": "hsb",
+ "name": "ზემáƒáƒ¡áƒáƒ áƒ‘ული"
+ },
+ "zu": {
+ "code": "zu",
+ "name": "ზულუ"
+ },
+ "ar-001": {
+ "code": "ar-001",
+ "name": "თáƒáƒœáƒáƒ›áƒ”დრáƒáƒ•áƒ” სტáƒáƒœáƒ“áƒáƒ áƒ¢áƒ£áƒšáƒ˜ áƒáƒ áƒáƒ‘ული"
+ },
+ "ti": {
+ "code": "ti",
+ "name": "თიგრინიáƒ"
+ },
+ "tr": {
+ "code": "tr",
+ "name": "თურქული"
+ },
+ "ja": {
+ "code": "ja",
+ "name": "იáƒáƒžáƒáƒœáƒ£áƒ áƒ˜"
+ },
+ "en": {
+ "code": "en",
+ "name": "ინგლისური"
+ },
+ "id": {
+ "code": "id",
+ "name": "ინდáƒáƒœáƒ”ზიური"
+ },
+ "yo": {
+ "code": "yo",
+ "name": "იáƒáƒ áƒ£áƒ‘áƒ"
+ },
+ "ga": {
+ "code": "ga",
+ "name": "ირლáƒáƒœáƒ“იური"
+ },
+ "is": {
+ "code": "is",
+ "name": "ისლáƒáƒœáƒ“იური"
+ },
+ "it": {
+ "code": "it",
+ "name": "იტáƒáƒšáƒ˜áƒ£áƒ áƒ˜"
+ },
+ "kab": {
+ "code": "kab",
+ "name": "კáƒáƒ‘ილური"
+ },
+ "kea": {
+ "code": "kea",
+ "name": "კáƒáƒ‘უვერდიáƒáƒœáƒ£"
+ },
+ "kln": {
+ "code": "kln",
+ "name": "კáƒáƒšáƒ”ნჯინი"
+ },
+ "kam": {
+ "code": "kam",
+ "name": "კáƒáƒ›áƒ‘áƒ"
+ },
+ "kn": {
+ "code": "kn",
+ "name": "კáƒáƒœáƒáƒ“áƒ"
+ },
+ "en-CA": {
+ "code": "en-CA",
+ "name": "კáƒáƒœáƒáƒ“ური ინგლისური"
+ },
+ "fr-CA": {
+ "code": "fr-CA",
+ "name": "კáƒáƒœáƒáƒ“ური ფრáƒáƒœáƒ’ული"
+ },
+ "ca": {
+ "code": "ca",
+ "name": "კáƒáƒ¢áƒáƒšáƒáƒœáƒ£áƒ áƒ˜"
+ },
+ "nmg": {
+ "code": "nmg",
+ "name": "კვáƒáƒ¡áƒ˜áƒ"
+ },
+ "ki": {
+ "code": "ki",
+ "name": "კიკუიუ"
+ },
+ "jmc": {
+ "code": "jmc",
+ "name": "კიმáƒáƒ¨áƒáƒ›áƒ˜"
+ },
+ "khq": {
+ "code": "khq",
+ "name": "კáƒáƒ˜áƒ áƒ-ჩიინი"
+ },
+ "ses": {
+ "code": "ses",
+ "name": "კáƒáƒ˜áƒ áƒáƒ‘áƒáƒ áƒ-სენი"
+ },
+ "swc": {
+ "code": "swc",
+ "name": "კáƒáƒœáƒ’áƒáƒ¡ სუáƒáƒ°áƒ˜áƒšáƒ˜"
+ },
+ "ko": {
+ "code": "ko",
+ "name": "კáƒáƒ áƒ”ული"
+ },
+ "lag": {
+ "code": "lag",
+ "name": "ლáƒáƒœáƒ’ი"
+ },
+ "lo": {
+ "code": "lo",
+ "name": "ლáƒáƒáƒ¡áƒ£áƒ áƒ˜"
+ },
+ "lv": {
+ "code": "lv",
+ "name": "ლáƒáƒ¢áƒ•áƒ˜áƒ£áƒ áƒ˜"
+ },
+ "ln": {
+ "code": "ln",
+ "name": "ლინგáƒáƒšáƒ"
+ },
+ "lt": {
+ "code": "lt",
+ "name": "ლიტვური"
+ },
+ "lu": {
+ "code": "lu",
+ "name": "ლუბáƒ-კáƒáƒ¢áƒáƒœáƒ’áƒ"
+ },
+ "luo": {
+ "code": "luo",
+ "name": "ლუáƒ"
+ },
+ "lb": {
+ "code": "lb",
+ "name": "ლუქსემბურგული"
+ },
+ "luy": {
+ "code": "luy",
+ "name": "ლუჰიáƒ"
+ },
+ "mk": {
+ "code": "mk",
+ "name": "მáƒáƒ™áƒ”დáƒáƒœáƒ£áƒ áƒ˜"
+ },
+ "kde": {
+ "code": "kde",
+ "name": "მáƒáƒ™áƒáƒœáƒ“ე"
+ },
+ "mg": {
+ "code": "mg",
+ "name": "მáƒáƒšáƒáƒ’áƒáƒ¡áƒ˜áƒ£áƒ áƒ˜"
+ },
+ "ml": {
+ "code": "ml",
+ "name": "მáƒáƒšáƒáƒ˜áƒáƒšáƒáƒ›áƒ£áƒ áƒ˜"
+ },
+ "ms": {
+ "code": "ms",
+ "name": "მáƒáƒšáƒáƒ˜áƒ£áƒ áƒ˜"
+ },
+ "mt": {
+ "code": "mt",
+ "name": "მáƒáƒšáƒ¢áƒ£áƒ áƒ˜"
+ },
+ "mr": {
+ "code": "mr",
+ "name": "მáƒáƒ áƒáƒ—ჰი"
+ },
+ "mas": {
+ "code": "mas",
+ "name": "მáƒáƒ¡áƒáƒ˜"
+ },
+ "mgh": {
+ "code": "mgh",
+ "name": "მáƒáƒ¥áƒ£áƒ•áƒ-მეეტáƒ"
+ },
+ "mer": {
+ "code": "mer",
+ "name": "მერუ"
+ },
+ "es-MX": {
+ "code": "es-MX",
+ "name": "მექსიკური ესპáƒáƒœáƒ£áƒ áƒ˜"
+ },
+ "ro-MD": {
+ "code": "ro-MD",
+ "name": "მáƒáƒšáƒ“áƒáƒ•áƒ£áƒ áƒ˜"
+ },
+ "mn": {
+ "code": "mn",
+ "name": "მáƒáƒœáƒ¦áƒáƒšáƒ£áƒ áƒ˜"
+ },
+ "mfe": {
+ "code": "mfe",
+ "name": "მáƒáƒ áƒ˜áƒ¡áƒ˜áƒ”ნი"
+ },
+ "mua": {
+ "code": "mua",
+ "name": "მუნდáƒáƒœáƒ’ი"
+ },
+ "naq": {
+ "code": "naq",
+ "name": "ნáƒáƒ›áƒ"
+ },
+ "jgo": {
+ "code": "jgo",
+ "name": "ნგáƒáƒ›áƒ‘áƒ"
+ },
+ "ne": {
+ "code": "ne",
+ "name": "ნეპáƒáƒšáƒ£áƒ áƒ˜"
+ },
+ "nyn": {
+ "code": "nyn",
+ "name": "ნიáƒáƒœáƒ™áƒáƒšáƒ”"
+ },
+ "nl": {
+ "code": "nl",
+ "name": "ნიდერლáƒáƒœáƒ“ური"
+ },
+ "nb": {
+ "code": "nb",
+ "name": "ნáƒáƒ áƒ•áƒ”გიული ბუკმáƒáƒšáƒ˜"
+ },
+ "nn": {
+ "code": "nn",
+ "name": "ნáƒáƒ áƒ•áƒ”გიული ნიუნáƒáƒ áƒ¡áƒ™áƒ˜"
+ },
+ "nus": {
+ "code": "nus",
+ "name": "ნუერი"
+ },
+ "or": {
+ "code": "or",
+ "name": "áƒáƒ áƒ˜áƒ"
+ },
+ "pa": {
+ "code": "pa",
+ "name": "პენჯáƒáƒ‘ური"
+ },
+ "pl": {
+ "code": "pl",
+ "name": "პáƒáƒšáƒáƒœáƒ£áƒ áƒ˜"
+ },
+ "pt": {
+ "code": "pt",
+ "name": "პáƒáƒ áƒ¢áƒ£áƒ’áƒáƒšáƒ˜áƒ£áƒ áƒ˜"
+ },
+ "ps": {
+ "code": "ps",
+ "name": "პუშტუ"
+ },
+ "rm": {
+ "code": "rm",
+ "name": "რეტáƒáƒ áƒáƒ›áƒáƒœáƒ£áƒšáƒ˜"
+ },
+ "rof": {
+ "code": "rof",
+ "name": "რáƒáƒ›áƒ‘áƒ"
+ },
+ "rwk": {
+ "code": "rwk",
+ "name": "რუáƒ"
+ },
+ "ro": {
+ "code": "ro",
+ "name": "რუმინული"
+ },
+ "rn": {
+ "code": "rn",
+ "name": "რუნდი"
+ },
+ "ru": {
+ "code": "ru",
+ "name": "რუსული"
+ },
+ "saq": {
+ "code": "saq",
+ "name": "სáƒáƒ›áƒ‘ურუ"
+ },
+ "sg": {
+ "code": "sg",
+ "name": "სáƒáƒœáƒ’áƒ"
+ },
+ "sbp": {
+ "code": "sbp",
+ "name": "სáƒáƒœáƒ’უ"
+ },
+ "seh": {
+ "code": "seh",
+ "name": "სენáƒ"
+ },
+ "sr": {
+ "code": "sr",
+ "name": "სერბული"
+ },
+ "si": {
+ "code": "si",
+ "name": "სინჰáƒáƒšáƒ£áƒ áƒ˜"
+ },
+ "sk": {
+ "code": "sk",
+ "name": "სლáƒáƒ•áƒáƒ™áƒ£áƒ áƒ˜"
+ },
+ "sl": {
+ "code": "sl",
+ "name": "სლáƒáƒ•áƒ”ნური"
+ },
+ "xog": {
+ "code": "xog",
+ "name": "სáƒáƒ’áƒ"
+ },
+ "so": {
+ "code": "so",
+ "name": "სáƒáƒ›áƒáƒšáƒ˜áƒ£áƒ áƒ˜"
+ },
+ "hy": {
+ "code": "hy",
+ "name": "სáƒáƒ›áƒ®áƒ£áƒ áƒ˜"
+ },
+ "fa": {
+ "code": "fa",
+ "name": "სპáƒáƒ áƒ¡áƒ£áƒšáƒ˜"
+ },
+ "zgh": {
+ "code": "zgh",
+ "name": "სტáƒáƒœáƒ“áƒáƒ áƒ¢áƒ£áƒšáƒ˜ მáƒáƒ áƒáƒ™áƒáƒ£áƒšáƒ˜ ტáƒáƒ›áƒáƒ–იგხტი"
+ },
+ "sw": {
+ "code": "sw",
+ "name": "სუáƒáƒ°áƒ˜áƒšáƒ˜"
+ },
+ "th": {
+ "code": "th",
+ "name": "ტáƒáƒ˜"
+ },
+ "dav": {
+ "code": "dav",
+ "name": "ტáƒáƒ˜áƒ¢áƒ"
+ },
+ "ta": {
+ "code": "ta",
+ "name": "ტáƒáƒ›áƒ˜áƒšáƒ£áƒ áƒ˜"
+ },
+ "twq": {
+ "code": "twq",
+ "name": "ტáƒáƒ¡áƒáƒ•áƒáƒ¥áƒ˜"
+ },
+ "te": {
+ "code": "te",
+ "name": "ტელუგუ"
+ },
+ "teo": {
+ "code": "teo",
+ "name": "ტესáƒ"
+ },
+ "bo": {
+ "code": "bo",
+ "name": "ტიბეტური"
+ },
+ "to": {
+ "code": "to",
+ "name": "ტáƒáƒœáƒ’áƒáƒœáƒ£áƒ áƒ˜"
+ },
+ "zh-Hant": {
+ "code": "zh-Hant",
+ "name": "ტრáƒáƒ“იციული ჩინური"
+ },
+ "cy": {
+ "code": "cy",
+ "name": "უელსური"
+ },
+ "uz": {
+ "code": "uz",
+ "name": "უზბეკური"
+ },
+ "ug": {
+ "code": "ug",
+ "name": "უიღურული"
+ },
+ "uk": {
+ "code": "uk",
+ "name": "უკრáƒáƒ˜áƒœáƒ£áƒšáƒ˜"
+ },
+ "hu": {
+ "code": "hu",
+ "name": "უნგრული"
+ },
+ "ur": {
+ "code": "ur",
+ "name": "ურდუ"
+ },
+ "fo": {
+ "code": "fo",
+ "name": "ფáƒáƒ áƒ”რული"
+ },
+ "fil": {
+ "code": "fil",
+ "name": "ფილიპინური"
+ },
+ "fi": {
+ "code": "fi",
+ "name": "ფინური"
+ },
+ "nl-BE": {
+ "code": "nl-BE",
+ "name": "ფლáƒáƒ›áƒáƒœáƒ“იური"
+ },
+ "fr": {
+ "code": "fr",
+ "name": "ფრáƒáƒœáƒ’ული"
+ },
+ "fur": {
+ "code": "fur",
+ "name": "ფრიულური"
+ },
+ "ka": {
+ "code": "ka",
+ "name": "ქáƒáƒ áƒ—ული"
+ },
+ "ks": {
+ "code": "ks",
+ "name": "ქáƒáƒ¨áƒ›áƒ˜áƒ áƒ£áƒšáƒ˜"
+ },
+ "dsb": {
+ "code": "dsb",
+ "name": "ქვემáƒáƒ¡áƒáƒ áƒ‘ული"
+ },
+ "km": {
+ "code": "km",
+ "name": "ქმერული"
+ },
+ "kk": {
+ "code": "kk",
+ "name": "ყáƒáƒ–áƒáƒ®áƒ£áƒ áƒ˜"
+ },
+ "ky": {
+ "code": "ky",
+ "name": "ყირგიზული"
+ },
+ "ksb": {
+ "code": "ksb",
+ "name": "შáƒáƒ›áƒ‘áƒáƒšáƒ"
+ },
+ "sv": {
+ "code": "sv",
+ "name": "შვედური"
+ },
+ "gsw": {
+ "code": "gsw",
+ "name": "შვეიცáƒáƒ áƒ˜áƒ£áƒšáƒ˜ გერმáƒáƒœáƒ£áƒšáƒ˜"
+ },
+ "de-CH": {
+ "code": "de-CH",
+ "name": "შვეიცáƒáƒ áƒ˜áƒ£áƒšáƒ˜ ზემáƒáƒ’ერმáƒáƒœáƒ£áƒšáƒ˜"
+ },
+ "fr-CH": {
+ "code": "fr-CH",
+ "name": "შვეიცáƒáƒ áƒ˜áƒ£áƒšáƒ˜ ფრáƒáƒœáƒ’ული"
+ },
+ "shi": {
+ "code": "shi",
+ "name": "შილჰáƒ"
+ },
+ "sn": {
+ "code": "sn",
+ "name": "შáƒáƒœáƒ"
+ },
+ "gd": {
+ "code": "gd",
+ "name": "შáƒáƒ¢áƒšáƒáƒœáƒ“იური გელური"
+ },
+ "chr": {
+ "code": "chr",
+ "name": "ჩერáƒáƒ™áƒ˜"
+ },
+ "cs": {
+ "code": "cs",
+ "name": "ჩეხური"
+ },
+ "cgg": {
+ "code": "cgg",
+ "name": "ჩიგáƒ"
+ },
+ "zh": {
+ "code": "zh",
+ "name": "ჩინური"
+ },
+ "nd": {
+ "code": "nd",
+ "name": "ჩრდილáƒáƒ”თ ნდებელე"
+ },
+ "se": {
+ "code": "se",
+ "name": "ჩრდილáƒáƒ”თ სáƒáƒáƒ›áƒ£áƒ áƒ˜"
+ },
+ "tzm": {
+ "code": "tzm",
+ "name": "ცენტრáƒáƒšáƒ£áƒ áƒ˜ მáƒáƒ áƒáƒ™áƒáƒ¡ ტáƒáƒ›áƒáƒ–იგხტი"
+ },
+ "dz": {
+ "code": "dz",
+ "name": "ძáƒáƒœáƒ’კხáƒ"
+ },
+ "hr": {
+ "code": "hr",
+ "name": "ხáƒáƒ áƒ•áƒáƒ¢áƒ£áƒšáƒ˜"
+ },
+ "ha": {
+ "code": "ha",
+ "name": "ჰáƒáƒ£áƒ¡áƒ"
+ },
+ "hi": {
+ "code": "hi",
+ "name": "ჰინდი"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/language/kab.json b/library/intl/resources/language/kab.json
new file mode 100644
index 000000000..755d88b1a
--- /dev/null
+++ b/library/intl/resources/language/kab.json
@@ -0,0 +1,738 @@
+{
+ "af": {
+ "code": "af",
+ "name": "Afrikaans"
+ },
+ "agq": {
+ "code": "agq",
+ "name": "Aghem"
+ },
+ "sq": {
+ "code": "sq",
+ "name": "Albanian"
+ },
+ "ar-001": {
+ "code": "ar-001",
+ "name": "ar_001"
+ },
+ "hy": {
+ "code": "hy",
+ "name": "Armenian"
+ },
+ "ast": {
+ "code": "ast",
+ "name": "Asturian"
+ },
+ "asa": {
+ "code": "asa",
+ "name": "Asu"
+ },
+ "az": {
+ "code": "az",
+ "name": "Azerbaijani"
+ },
+ "ksf": {
+ "code": "ksf",
+ "name": "Bafia"
+ },
+ "bm": {
+ "code": "bm",
+ "name": "Bambara"
+ },
+ "bas": {
+ "code": "bas",
+ "name": "Basaa"
+ },
+ "eu": {
+ "code": "eu",
+ "name": "Basque"
+ },
+ "bez": {
+ "code": "bez",
+ "name": "Bena"
+ },
+ "brx": {
+ "code": "brx",
+ "name": "Bodo"
+ },
+ "bs": {
+ "code": "bs",
+ "name": "Bosnian"
+ },
+ "br": {
+ "code": "br",
+ "name": "Breton"
+ },
+ "ca": {
+ "code": "ca",
+ "name": "Catalan"
+ },
+ "tzm": {
+ "code": "tzm",
+ "name": "Central Atlas Tamazight"
+ },
+ "chr": {
+ "code": "chr",
+ "name": "Cherokee"
+ },
+ "cgg": {
+ "code": "cgg",
+ "name": "Chiga"
+ },
+ "ksh": {
+ "code": "ksh",
+ "name": "Colognian"
+ },
+ "swc": {
+ "code": "swc",
+ "name": "Congo Swahili"
+ },
+ "hr": {
+ "code": "hr",
+ "name": "Croatian"
+ },
+ "da": {
+ "code": "da",
+ "name": "Danish"
+ },
+ "de-AT": {
+ "code": "de-AT",
+ "name": "de_AT"
+ },
+ "de-CH": {
+ "code": "de-CH",
+ "name": "de_CH"
+ },
+ "dz": {
+ "code": "dz",
+ "name": "Dzongkha"
+ },
+ "ebu": {
+ "code": "ebu",
+ "name": "Embu"
+ },
+ "en-AU": {
+ "code": "en-AU",
+ "name": "en_AU"
+ },
+ "en-CA": {
+ "code": "en-CA",
+ "name": "en_CA"
+ },
+ "en-GB": {
+ "code": "en-GB",
+ "name": "en_GB"
+ },
+ "en-US": {
+ "code": "en-US",
+ "name": "en_US"
+ },
+ "es-ES": {
+ "code": "es-ES",
+ "name": "es_ES"
+ },
+ "es-MX": {
+ "code": "es-MX",
+ "name": "es_MX"
+ },
+ "eo": {
+ "code": "eo",
+ "name": "Esperanto"
+ },
+ "et": {
+ "code": "et",
+ "name": "Estonian"
+ },
+ "ee": {
+ "code": "ee",
+ "name": "Ewe"
+ },
+ "ewo": {
+ "code": "ewo",
+ "name": "Ewondo"
+ },
+ "fo": {
+ "code": "fo",
+ "name": "Faroese"
+ },
+ "fil": {
+ "code": "fil",
+ "name": "Filipino"
+ },
+ "fi": {
+ "code": "fi",
+ "name": "Finnish"
+ },
+ "fr-CA": {
+ "code": "fr-CA",
+ "name": "fr_CA"
+ },
+ "fr-CH": {
+ "code": "fr-CH",
+ "name": "fr_CH"
+ },
+ "fur": {
+ "code": "fur",
+ "name": "Friulian"
+ },
+ "ff": {
+ "code": "ff",
+ "name": "Fulah"
+ },
+ "gl": {
+ "code": "gl",
+ "name": "Galician"
+ },
+ "lg": {
+ "code": "lg",
+ "name": "Ganda"
+ },
+ "ka": {
+ "code": "ka",
+ "name": "Georgian"
+ },
+ "gu": {
+ "code": "gu",
+ "name": "Gujarati"
+ },
+ "guz": {
+ "code": "guz",
+ "name": "Gusii"
+ },
+ "he": {
+ "code": "he",
+ "name": "Hebrew"
+ },
+ "is": {
+ "code": "is",
+ "name": "Icelandic"
+ },
+ "ga": {
+ "code": "ga",
+ "name": "Irish"
+ },
+ "dyo": {
+ "code": "dyo",
+ "name": "Jola-Fonyi"
+ },
+ "kea": {
+ "code": "kea",
+ "name": "Kabuverdianu"
+ },
+ "kl": {
+ "code": "kl",
+ "name": "Kalaallisut"
+ },
+ "kln": {
+ "code": "kln",
+ "name": "Kalenjin"
+ },
+ "kam": {
+ "code": "kam",
+ "name": "Kamba"
+ },
+ "kn": {
+ "code": "kn",
+ "name": "Kannada"
+ },
+ "ks": {
+ "code": "ks",
+ "name": "Kashmiri"
+ },
+ "kk": {
+ "code": "kk",
+ "name": "Kazakh"
+ },
+ "ki": {
+ "code": "ki",
+ "name": "Kikuyu"
+ },
+ "khq": {
+ "code": "khq",
+ "name": "Koyra Chiini"
+ },
+ "ses": {
+ "code": "ses",
+ "name": "Koyraboro Senni"
+ },
+ "nmg": {
+ "code": "nmg",
+ "name": "Kwasio"
+ },
+ "ky": {
+ "code": "ky",
+ "name": "Kyrgyz"
+ },
+ "lag": {
+ "code": "lag",
+ "name": "Langi"
+ },
+ "lo": {
+ "code": "lo",
+ "name": "Lao"
+ },
+ "lv": {
+ "code": "lv",
+ "name": "Latvian"
+ },
+ "ln": {
+ "code": "ln",
+ "name": "Lingala"
+ },
+ "lt": {
+ "code": "lt",
+ "name": "Lithuanian"
+ },
+ "dsb": {
+ "code": "dsb",
+ "name": "Lower Sorbian"
+ },
+ "lu": {
+ "code": "lu",
+ "name": "Luba-Katanga"
+ },
+ "luo": {
+ "code": "luo",
+ "name": "Luo"
+ },
+ "lb": {
+ "code": "lb",
+ "name": "Luxembourgish"
+ },
+ "luy": {
+ "code": "luy",
+ "name": "Luyia"
+ },
+ "mk": {
+ "code": "mk",
+ "name": "Macedonian"
+ },
+ "jmc": {
+ "code": "jmc",
+ "name": "Machame"
+ },
+ "mgh": {
+ "code": "mgh",
+ "name": "Makhuwa-Meetto"
+ },
+ "kde": {
+ "code": "kde",
+ "name": "Makonde"
+ },
+ "mg": {
+ "code": "mg",
+ "name": "Malagasy"
+ },
+ "ml": {
+ "code": "ml",
+ "name": "Malayalam"
+ },
+ "mt": {
+ "code": "mt",
+ "name": "Maltese"
+ },
+ "mr": {
+ "code": "mr",
+ "name": "Marathi"
+ },
+ "mas": {
+ "code": "mas",
+ "name": "Masai"
+ },
+ "mer": {
+ "code": "mer",
+ "name": "Meru"
+ },
+ "mn": {
+ "code": "mn",
+ "name": "Mongolian"
+ },
+ "mfe": {
+ "code": "mfe",
+ "name": "Morisyen"
+ },
+ "mua": {
+ "code": "mua",
+ "name": "Mundang"
+ },
+ "naq": {
+ "code": "naq",
+ "name": "Nama"
+ },
+ "jgo": {
+ "code": "jgo",
+ "name": "Ngomba"
+ },
+ "nl-BE": {
+ "code": "nl-BE",
+ "name": "nl_BE"
+ },
+ "nd": {
+ "code": "nd",
+ "name": "North Ndebele"
+ },
+ "se": {
+ "code": "se",
+ "name": "Northern Sami"
+ },
+ "nb": {
+ "code": "nb",
+ "name": "Norwegian Bokmål"
+ },
+ "nn": {
+ "code": "nn",
+ "name": "Norwegian Nynorsk"
+ },
+ "nus": {
+ "code": "nus",
+ "name": "Nuer"
+ },
+ "nyn": {
+ "code": "nyn",
+ "name": "Nyankole"
+ },
+ "or": {
+ "code": "or",
+ "name": "Oriya"
+ },
+ "ps": {
+ "code": "ps",
+ "name": "Pashto"
+ },
+ "pt-BR": {
+ "code": "pt-BR",
+ "name": "pt_BR"
+ },
+ "pt-PT": {
+ "code": "pt-PT",
+ "name": "pt_PT"
+ },
+ "ro-MD": {
+ "code": "ro-MD",
+ "name": "ro_MD"
+ },
+ "rm": {
+ "code": "rm",
+ "name": "Romansh"
+ },
+ "rof": {
+ "code": "rof",
+ "name": "Rombo"
+ },
+ "rn": {
+ "code": "rn",
+ "name": "Rundi"
+ },
+ "rwk": {
+ "code": "rwk",
+ "name": "Rwa"
+ },
+ "saq": {
+ "code": "saq",
+ "name": "Samburu"
+ },
+ "sg": {
+ "code": "sg",
+ "name": "Sango"
+ },
+ "sbp": {
+ "code": "sbp",
+ "name": "Sangu"
+ },
+ "gd": {
+ "code": "gd",
+ "name": "Scottish Gaelic"
+ },
+ "seh": {
+ "code": "seh",
+ "name": "Sena"
+ },
+ "sr": {
+ "code": "sr",
+ "name": "Serbian"
+ },
+ "ksb": {
+ "code": "ksb",
+ "name": "Shambala"
+ },
+ "sn": {
+ "code": "sn",
+ "name": "Shona"
+ },
+ "si": {
+ "code": "si",
+ "name": "Sinhala"
+ },
+ "sk": {
+ "code": "sk",
+ "name": "Slovak"
+ },
+ "sl": {
+ "code": "sl",
+ "name": "Slovenian"
+ },
+ "xog": {
+ "code": "xog",
+ "name": "Soga"
+ },
+ "zgh": {
+ "code": "zgh",
+ "name": "Standard Moroccan Tamazight"
+ },
+ "sw": {
+ "code": "sw",
+ "name": "Swahili"
+ },
+ "gsw": {
+ "code": "gsw",
+ "name": "Swiss German"
+ },
+ "bn": {
+ "code": "bn",
+ "name": "Tabengalit"
+ },
+ "be": {
+ "code": "be",
+ "name": "Tabilarusit"
+ },
+ "bg": {
+ "code": "bg",
+ "name": "Tabulgarit"
+ },
+ "my": {
+ "code": "my",
+ "name": "Taburmisit"
+ },
+ "vi": {
+ "code": "vi",
+ "name": "Tabyiá¹­namit"
+ },
+ "shi": {
+ "code": "shi",
+ "name": "Tachelhit"
+ },
+ "cs": {
+ "code": "cs",
+ "name": "TaÄikit"
+ },
+ "zh": {
+ "code": "zh",
+ "name": "Tacinwat, Tamundarint"
+ },
+ "nl": {
+ "code": "nl",
+ "name": "TaduÄit"
+ },
+ "ar": {
+ "code": "ar",
+ "name": "Taɛrabt"
+ },
+ "fa": {
+ "code": "fa",
+ "name": "Tafarisit"
+ },
+ "fr": {
+ "code": "fr",
+ "name": "Tafransist"
+ },
+ "en": {
+ "code": "en",
+ "name": "Taglizit"
+ },
+ "el": {
+ "code": "el",
+ "name": "Tagrikit"
+ },
+ "hi": {
+ "code": "hi",
+ "name": "Tahendit"
+ },
+ "hu": {
+ "code": "hu",
+ "name": "Tahungarit"
+ },
+ "ha": {
+ "code": "ha",
+ "name": "Tahwasit"
+ },
+ "dav": {
+ "code": "dav",
+ "name": "Taita"
+ },
+ "ja": {
+ "code": "ja",
+ "name": "Tajapunit"
+ },
+ "ak": {
+ "code": "ak",
+ "name": "Takanit"
+ },
+ "km": {
+ "code": "km",
+ "name": "Takemrit"
+ },
+ "ko": {
+ "code": "ko",
+ "name": "Takurit"
+ },
+ "de": {
+ "code": "de",
+ "name": "Talmant"
+ },
+ "am": {
+ "code": "am",
+ "name": "Tamahrict"
+ },
+ "ms": {
+ "code": "ms",
+ "name": "Tamalawit"
+ },
+ "id": {
+ "code": "id",
+ "name": "Tandunisit"
+ },
+ "ne": {
+ "code": "ne",
+ "name": "Tanipalit"
+ },
+ "pl": {
+ "code": "pl",
+ "name": "Tapulunit"
+ },
+ "pa": {
+ "code": "pa",
+ "name": "Tapunjabit"
+ },
+ "pt": {
+ "code": "pt",
+ "name": "Tapurtugalit"
+ },
+ "kab": {
+ "code": "kab",
+ "name": "Taqbaylit"
+ },
+ "ro": {
+ "code": "ro",
+ "name": "Tarumanit"
+ },
+ "ru": {
+ "code": "ru",
+ "name": "Tarusit"
+ },
+ "twq": {
+ "code": "twq",
+ "name": "Tasawaq"
+ },
+ "es": {
+ "code": "es",
+ "name": "Taspenyulit"
+ },
+ "so": {
+ "code": "so",
+ "name": "Taá¹£umalit"
+ },
+ "sv": {
+ "code": "sv",
+ "name": "Taswidit"
+ },
+ "it": {
+ "code": "it",
+ "name": "Taá¹­alyanit"
+ },
+ "ta": {
+ "code": "ta",
+ "name": "Taá¹­amulit"
+ },
+ "th": {
+ "code": "th",
+ "name": "Taá¹­aylundit"
+ },
+ "tr": {
+ "code": "tr",
+ "name": "Taá¹­urkit"
+ },
+ "yo": {
+ "code": "yo",
+ "name": "Tayurubit"
+ },
+ "zu": {
+ "code": "zu",
+ "name": "Tazulut"
+ },
+ "te": {
+ "code": "te",
+ "name": "Telugu"
+ },
+ "teo": {
+ "code": "teo",
+ "name": "Teso"
+ },
+ "bo": {
+ "code": "bo",
+ "name": "Tibetan"
+ },
+ "ti": {
+ "code": "ti",
+ "name": "Tigrinya"
+ },
+ "to": {
+ "code": "to",
+ "name": "Tongan"
+ },
+ "uk": {
+ "code": "uk",
+ "name": "Tukranit"
+ },
+ "ur": {
+ "code": "ur",
+ "name": "Turdut"
+ },
+ "hsb": {
+ "code": "hsb",
+ "name": "Upper Sorbian"
+ },
+ "ug": {
+ "code": "ug",
+ "name": "Uyghur"
+ },
+ "uz": {
+ "code": "uz",
+ "name": "Uzbek"
+ },
+ "vai": {
+ "code": "vai",
+ "name": "Vai"
+ },
+ "vun": {
+ "code": "vun",
+ "name": "Vunjo"
+ },
+ "wae": {
+ "code": "wae",
+ "name": "Walser"
+ },
+ "cy": {
+ "code": "cy",
+ "name": "Welsh"
+ },
+ "fy": {
+ "code": "fy",
+ "name": "Western Frisian"
+ },
+ "yav": {
+ "code": "yav",
+ "name": "Yangben"
+ },
+ "dje": {
+ "code": "dje",
+ "name": "Zarma"
+ },
+ "zh-Hans": {
+ "code": "zh-Hans",
+ "name": "zh_Hans"
+ },
+ "zh-Hant": {
+ "code": "zh-Hant",
+ "name": "zh_Hant"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/language/kam.json b/library/intl/resources/language/kam.json
new file mode 100644
index 000000000..430da602b
--- /dev/null
+++ b/library/intl/resources/language/kam.json
@@ -0,0 +1,738 @@
+{
+ "af": {
+ "code": "af",
+ "name": "Afrikaans"
+ },
+ "agq": {
+ "code": "agq",
+ "name": "Aghem"
+ },
+ "sq": {
+ "code": "sq",
+ "name": "Albanian"
+ },
+ "ar-001": {
+ "code": "ar-001",
+ "name": "ar_001"
+ },
+ "hy": {
+ "code": "hy",
+ "name": "Armenian"
+ },
+ "ast": {
+ "code": "ast",
+ "name": "Asturian"
+ },
+ "asa": {
+ "code": "asa",
+ "name": "Asu"
+ },
+ "az": {
+ "code": "az",
+ "name": "Azerbaijani"
+ },
+ "ksf": {
+ "code": "ksf",
+ "name": "Bafia"
+ },
+ "bm": {
+ "code": "bm",
+ "name": "Bambara"
+ },
+ "bas": {
+ "code": "bas",
+ "name": "Basaa"
+ },
+ "eu": {
+ "code": "eu",
+ "name": "Basque"
+ },
+ "bez": {
+ "code": "bez",
+ "name": "Bena"
+ },
+ "brx": {
+ "code": "brx",
+ "name": "Bodo"
+ },
+ "bs": {
+ "code": "bs",
+ "name": "Bosnian"
+ },
+ "br": {
+ "code": "br",
+ "name": "Breton"
+ },
+ "ca": {
+ "code": "ca",
+ "name": "Catalan"
+ },
+ "tzm": {
+ "code": "tzm",
+ "name": "Central Atlas Tamazight"
+ },
+ "chr": {
+ "code": "chr",
+ "name": "Cherokee"
+ },
+ "cgg": {
+ "code": "cgg",
+ "name": "Chiga"
+ },
+ "ksh": {
+ "code": "ksh",
+ "name": "Colognian"
+ },
+ "swc": {
+ "code": "swc",
+ "name": "Congo Swahili"
+ },
+ "hr": {
+ "code": "hr",
+ "name": "Croatian"
+ },
+ "da": {
+ "code": "da",
+ "name": "Danish"
+ },
+ "de-AT": {
+ "code": "de-AT",
+ "name": "de_AT"
+ },
+ "de-CH": {
+ "code": "de-CH",
+ "name": "de_CH"
+ },
+ "dz": {
+ "code": "dz",
+ "name": "Dzongkha"
+ },
+ "ebu": {
+ "code": "ebu",
+ "name": "Embu"
+ },
+ "en-AU": {
+ "code": "en-AU",
+ "name": "en_AU"
+ },
+ "en-CA": {
+ "code": "en-CA",
+ "name": "en_CA"
+ },
+ "en-GB": {
+ "code": "en-GB",
+ "name": "en_GB"
+ },
+ "en-US": {
+ "code": "en-US",
+ "name": "en_US"
+ },
+ "es-ES": {
+ "code": "es-ES",
+ "name": "es_ES"
+ },
+ "es-MX": {
+ "code": "es-MX",
+ "name": "es_MX"
+ },
+ "eo": {
+ "code": "eo",
+ "name": "Esperanto"
+ },
+ "et": {
+ "code": "et",
+ "name": "Estonian"
+ },
+ "ee": {
+ "code": "ee",
+ "name": "Ewe"
+ },
+ "ewo": {
+ "code": "ewo",
+ "name": "Ewondo"
+ },
+ "fo": {
+ "code": "fo",
+ "name": "Faroese"
+ },
+ "fil": {
+ "code": "fil",
+ "name": "Filipino"
+ },
+ "fi": {
+ "code": "fi",
+ "name": "Finnish"
+ },
+ "fr-CA": {
+ "code": "fr-CA",
+ "name": "fr_CA"
+ },
+ "fr-CH": {
+ "code": "fr-CH",
+ "name": "fr_CH"
+ },
+ "fur": {
+ "code": "fur",
+ "name": "Friulian"
+ },
+ "ff": {
+ "code": "ff",
+ "name": "Fulah"
+ },
+ "gl": {
+ "code": "gl",
+ "name": "Galician"
+ },
+ "lg": {
+ "code": "lg",
+ "name": "Ganda"
+ },
+ "ka": {
+ "code": "ka",
+ "name": "Georgian"
+ },
+ "gu": {
+ "code": "gu",
+ "name": "Gujarati"
+ },
+ "guz": {
+ "code": "guz",
+ "name": "Gusii"
+ },
+ "he": {
+ "code": "he",
+ "name": "Hebrew"
+ },
+ "is": {
+ "code": "is",
+ "name": "Icelandic"
+ },
+ "ga": {
+ "code": "ga",
+ "name": "Irish"
+ },
+ "dyo": {
+ "code": "dyo",
+ "name": "Jola-Fonyi"
+ },
+ "kea": {
+ "code": "kea",
+ "name": "Kabuverdianu"
+ },
+ "kab": {
+ "code": "kab",
+ "name": "Kabyle"
+ },
+ "kl": {
+ "code": "kl",
+ "name": "Kalaallisut"
+ },
+ "kln": {
+ "code": "kln",
+ "name": "Kalenjin"
+ },
+ "kn": {
+ "code": "kn",
+ "name": "Kannada"
+ },
+ "ks": {
+ "code": "ks",
+ "name": "Kashmiri"
+ },
+ "kk": {
+ "code": "kk",
+ "name": "Kazakh"
+ },
+ "fa": {
+ "code": "fa",
+ "name": "Kiajemi"
+ },
+ "ak": {
+ "code": "ak",
+ "name": "Kiakan"
+ },
+ "am": {
+ "code": "am",
+ "name": "Kiamhari"
+ },
+ "ar": {
+ "code": "ar",
+ "name": "Kiarabu"
+ },
+ "bn": {
+ "code": "bn",
+ "name": "Kibangla"
+ },
+ "be": {
+ "code": "be",
+ "name": "Kibelarusi"
+ },
+ "bg": {
+ "code": "bg",
+ "name": "Kibulgaria"
+ },
+ "my": {
+ "code": "my",
+ "name": "Kiburma"
+ },
+ "cs": {
+ "code": "cs",
+ "name": "Kichecki"
+ },
+ "zh": {
+ "code": "zh",
+ "name": "Kichina"
+ },
+ "fr": {
+ "code": "fr",
+ "name": "Kifaransa"
+ },
+ "el": {
+ "code": "el",
+ "name": "Kigiriki"
+ },
+ "ha": {
+ "code": "ha",
+ "name": "Kihausa"
+ },
+ "hi": {
+ "code": "hi",
+ "name": "Kihindi"
+ },
+ "es": {
+ "code": "es",
+ "name": "Kihispania"
+ },
+ "nl": {
+ "code": "nl",
+ "name": "Kiholanzi"
+ },
+ "hu": {
+ "code": "hu",
+ "name": "Kihungari"
+ },
+ "id": {
+ "code": "id",
+ "name": "Kiindonesia"
+ },
+ "it": {
+ "code": "it",
+ "name": "Kiitaliano"
+ },
+ "ja": {
+ "code": "ja",
+ "name": "Kijapani"
+ },
+ "de": {
+ "code": "de",
+ "name": "Kijerumani"
+ },
+ "kam": {
+ "code": "kam",
+ "name": "Kikamba"
+ },
+ "km": {
+ "code": "km",
+ "name": "Kikambodia"
+ },
+ "ko": {
+ "code": "ko",
+ "name": "Kikorea"
+ },
+ "ki": {
+ "code": "ki",
+ "name": "Kikuyu"
+ },
+ "ms": {
+ "code": "ms",
+ "name": "Kimalesia"
+ },
+ "ne": {
+ "code": "ne",
+ "name": "Kinepali"
+ },
+ "en": {
+ "code": "en",
+ "name": "Kingereza"
+ },
+ "pl": {
+ "code": "pl",
+ "name": "Kipolandi"
+ },
+ "pa": {
+ "code": "pa",
+ "name": "Kipunjabi"
+ },
+ "pt": {
+ "code": "pt",
+ "name": "Kireno"
+ },
+ "ro": {
+ "code": "ro",
+ "name": "Kiromania"
+ },
+ "ru": {
+ "code": "ru",
+ "name": "Kirusi"
+ },
+ "so": {
+ "code": "so",
+ "name": "Kisomali"
+ },
+ "sv": {
+ "code": "sv",
+ "name": "Kiswidi"
+ },
+ "th": {
+ "code": "th",
+ "name": "Kitailandi"
+ },
+ "ta": {
+ "code": "ta",
+ "name": "Kitamil"
+ },
+ "tr": {
+ "code": "tr",
+ "name": "Kituruki"
+ },
+ "uk": {
+ "code": "uk",
+ "name": "Kiukrania"
+ },
+ "ur": {
+ "code": "ur",
+ "name": "Kiurdu"
+ },
+ "vi": {
+ "code": "vi",
+ "name": "Kivietinamu"
+ },
+ "yo": {
+ "code": "yo",
+ "name": "Kiyoruba"
+ },
+ "zu": {
+ "code": "zu",
+ "name": "Kizulu"
+ },
+ "khq": {
+ "code": "khq",
+ "name": "Koyra Chiini"
+ },
+ "ses": {
+ "code": "ses",
+ "name": "Koyraboro Senni"
+ },
+ "nmg": {
+ "code": "nmg",
+ "name": "Kwasio"
+ },
+ "ky": {
+ "code": "ky",
+ "name": "Kyrgyz"
+ },
+ "lag": {
+ "code": "lag",
+ "name": "Langi"
+ },
+ "lo": {
+ "code": "lo",
+ "name": "Lao"
+ },
+ "lv": {
+ "code": "lv",
+ "name": "Latvian"
+ },
+ "ln": {
+ "code": "ln",
+ "name": "Lingala"
+ },
+ "lt": {
+ "code": "lt",
+ "name": "Lithuanian"
+ },
+ "dsb": {
+ "code": "dsb",
+ "name": "Lower Sorbian"
+ },
+ "lu": {
+ "code": "lu",
+ "name": "Luba-Katanga"
+ },
+ "luo": {
+ "code": "luo",
+ "name": "Luo"
+ },
+ "lb": {
+ "code": "lb",
+ "name": "Luxembourgish"
+ },
+ "luy": {
+ "code": "luy",
+ "name": "Luyia"
+ },
+ "mk": {
+ "code": "mk",
+ "name": "Macedonian"
+ },
+ "jmc": {
+ "code": "jmc",
+ "name": "Machame"
+ },
+ "mgh": {
+ "code": "mgh",
+ "name": "Makhuwa-Meetto"
+ },
+ "kde": {
+ "code": "kde",
+ "name": "Makonde"
+ },
+ "mg": {
+ "code": "mg",
+ "name": "Malagasy"
+ },
+ "ml": {
+ "code": "ml",
+ "name": "Malayalam"
+ },
+ "mt": {
+ "code": "mt",
+ "name": "Maltese"
+ },
+ "mr": {
+ "code": "mr",
+ "name": "Marathi"
+ },
+ "mas": {
+ "code": "mas",
+ "name": "Masai"
+ },
+ "mer": {
+ "code": "mer",
+ "name": "Meru"
+ },
+ "mn": {
+ "code": "mn",
+ "name": "Mongolian"
+ },
+ "mfe": {
+ "code": "mfe",
+ "name": "Morisyen"
+ },
+ "mua": {
+ "code": "mua",
+ "name": "Mundang"
+ },
+ "naq": {
+ "code": "naq",
+ "name": "Nama"
+ },
+ "jgo": {
+ "code": "jgo",
+ "name": "Ngomba"
+ },
+ "nl-BE": {
+ "code": "nl-BE",
+ "name": "nl_BE"
+ },
+ "nd": {
+ "code": "nd",
+ "name": "North Ndebele"
+ },
+ "se": {
+ "code": "se",
+ "name": "Northern Sami"
+ },
+ "nb": {
+ "code": "nb",
+ "name": "Norwegian Bokmål"
+ },
+ "nn": {
+ "code": "nn",
+ "name": "Norwegian Nynorsk"
+ },
+ "nus": {
+ "code": "nus",
+ "name": "Nuer"
+ },
+ "nyn": {
+ "code": "nyn",
+ "name": "Nyankole"
+ },
+ "or": {
+ "code": "or",
+ "name": "Oriya"
+ },
+ "ps": {
+ "code": "ps",
+ "name": "Pashto"
+ },
+ "pt-BR": {
+ "code": "pt-BR",
+ "name": "pt_BR"
+ },
+ "pt-PT": {
+ "code": "pt-PT",
+ "name": "pt_PT"
+ },
+ "ro-MD": {
+ "code": "ro-MD",
+ "name": "ro_MD"
+ },
+ "rm": {
+ "code": "rm",
+ "name": "Romansh"
+ },
+ "rof": {
+ "code": "rof",
+ "name": "Rombo"
+ },
+ "rn": {
+ "code": "rn",
+ "name": "Rundi"
+ },
+ "rwk": {
+ "code": "rwk",
+ "name": "Rwa"
+ },
+ "saq": {
+ "code": "saq",
+ "name": "Samburu"
+ },
+ "sg": {
+ "code": "sg",
+ "name": "Sango"
+ },
+ "sbp": {
+ "code": "sbp",
+ "name": "Sangu"
+ },
+ "gd": {
+ "code": "gd",
+ "name": "Scottish Gaelic"
+ },
+ "seh": {
+ "code": "seh",
+ "name": "Sena"
+ },
+ "sr": {
+ "code": "sr",
+ "name": "Serbian"
+ },
+ "ksb": {
+ "code": "ksb",
+ "name": "Shambala"
+ },
+ "sn": {
+ "code": "sn",
+ "name": "Shona"
+ },
+ "si": {
+ "code": "si",
+ "name": "Sinhala"
+ },
+ "sk": {
+ "code": "sk",
+ "name": "Slovak"
+ },
+ "sl": {
+ "code": "sl",
+ "name": "Slovenian"
+ },
+ "xog": {
+ "code": "xog",
+ "name": "Soga"
+ },
+ "zgh": {
+ "code": "zgh",
+ "name": "Standard Moroccan Tamazight"
+ },
+ "sw": {
+ "code": "sw",
+ "name": "Swahili"
+ },
+ "gsw": {
+ "code": "gsw",
+ "name": "Swiss German"
+ },
+ "shi": {
+ "code": "shi",
+ "name": "Tachelhit"
+ },
+ "dav": {
+ "code": "dav",
+ "name": "Taita"
+ },
+ "twq": {
+ "code": "twq",
+ "name": "Tasawaq"
+ },
+ "te": {
+ "code": "te",
+ "name": "Telugu"
+ },
+ "teo": {
+ "code": "teo",
+ "name": "Teso"
+ },
+ "bo": {
+ "code": "bo",
+ "name": "Tibetan"
+ },
+ "ti": {
+ "code": "ti",
+ "name": "Tigrinya"
+ },
+ "to": {
+ "code": "to",
+ "name": "Tongan"
+ },
+ "hsb": {
+ "code": "hsb",
+ "name": "Upper Sorbian"
+ },
+ "ug": {
+ "code": "ug",
+ "name": "Uyghur"
+ },
+ "uz": {
+ "code": "uz",
+ "name": "Uzbek"
+ },
+ "vai": {
+ "code": "vai",
+ "name": "Vai"
+ },
+ "vun": {
+ "code": "vun",
+ "name": "Vunjo"
+ },
+ "wae": {
+ "code": "wae",
+ "name": "Walser"
+ },
+ "cy": {
+ "code": "cy",
+ "name": "Welsh"
+ },
+ "fy": {
+ "code": "fy",
+ "name": "Western Frisian"
+ },
+ "yav": {
+ "code": "yav",
+ "name": "Yangben"
+ },
+ "dje": {
+ "code": "dje",
+ "name": "Zarma"
+ },
+ "zh-Hans": {
+ "code": "zh-Hans",
+ "name": "zh_Hans"
+ },
+ "zh-Hant": {
+ "code": "zh-Hant",
+ "name": "zh_Hant"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/language/kde.json b/library/intl/resources/language/kde.json
new file mode 100644
index 000000000..e41132377
--- /dev/null
+++ b/library/intl/resources/language/kde.json
@@ -0,0 +1,738 @@
+{
+ "af": {
+ "code": "af",
+ "name": "Afrikaans"
+ },
+ "agq": {
+ "code": "agq",
+ "name": "Aghem"
+ },
+ "sq": {
+ "code": "sq",
+ "name": "Albanian"
+ },
+ "ar-001": {
+ "code": "ar-001",
+ "name": "ar_001"
+ },
+ "hy": {
+ "code": "hy",
+ "name": "Armenian"
+ },
+ "ast": {
+ "code": "ast",
+ "name": "Asturian"
+ },
+ "asa": {
+ "code": "asa",
+ "name": "Asu"
+ },
+ "az": {
+ "code": "az",
+ "name": "Azerbaijani"
+ },
+ "ksf": {
+ "code": "ksf",
+ "name": "Bafia"
+ },
+ "bm": {
+ "code": "bm",
+ "name": "Bambara"
+ },
+ "bas": {
+ "code": "bas",
+ "name": "Basaa"
+ },
+ "eu": {
+ "code": "eu",
+ "name": "Basque"
+ },
+ "bez": {
+ "code": "bez",
+ "name": "Bena"
+ },
+ "brx": {
+ "code": "brx",
+ "name": "Bodo"
+ },
+ "bs": {
+ "code": "bs",
+ "name": "Bosnian"
+ },
+ "br": {
+ "code": "br",
+ "name": "Breton"
+ },
+ "ca": {
+ "code": "ca",
+ "name": "Catalan"
+ },
+ "tzm": {
+ "code": "tzm",
+ "name": "Central Atlas Tamazight"
+ },
+ "ak": {
+ "code": "ak",
+ "name": "Chakan"
+ },
+ "ar": {
+ "code": "ar",
+ "name": "Chalabu"
+ },
+ "am": {
+ "code": "am",
+ "name": "Chamhali"
+ },
+ "chr": {
+ "code": "chr",
+ "name": "Cherokee"
+ },
+ "fa": {
+ "code": "fa",
+ "name": "Chiajemi"
+ },
+ "bn": {
+ "code": "bn",
+ "name": "Chibangla"
+ },
+ "be": {
+ "code": "be",
+ "name": "Chibelalusi"
+ },
+ "bg": {
+ "code": "bg",
+ "name": "Chibulgalia"
+ },
+ "my": {
+ "code": "my",
+ "name": "Chibulma"
+ },
+ "cs": {
+ "code": "cs",
+ "name": "Chichechi"
+ },
+ "zh": {
+ "code": "zh",
+ "name": "Chichina"
+ },
+ "ja": {
+ "code": "ja",
+ "name": "Chidyapani"
+ },
+ "de": {
+ "code": "de",
+ "name": "Chidyelumani"
+ },
+ "fr": {
+ "code": "fr",
+ "name": "Chifalansa"
+ },
+ "cgg": {
+ "code": "cgg",
+ "name": "Chiga"
+ },
+ "el": {
+ "code": "el",
+ "name": "Chigilichi"
+ },
+ "ha": {
+ "code": "ha",
+ "name": "Chihausa"
+ },
+ "hi": {
+ "code": "hi",
+ "name": "Chihindi"
+ },
+ "es": {
+ "code": "es",
+ "name": "Chihispania"
+ },
+ "nl": {
+ "code": "nl",
+ "name": "Chiholanzi"
+ },
+ "hu": {
+ "code": "hu",
+ "name": "Chihungali"
+ },
+ "en": {
+ "code": "en",
+ "name": "Chiingeleza"
+ },
+ "id": {
+ "code": "id",
+ "name": "Chiiongonesia"
+ },
+ "it": {
+ "code": "it",
+ "name": "Chiitaliano"
+ },
+ "km": {
+ "code": "km",
+ "name": "Chikambodia"
+ },
+ "ko": {
+ "code": "ko",
+ "name": "Chikolea"
+ },
+ "pt": {
+ "code": "pt",
+ "name": "Chileno"
+ },
+ "ro": {
+ "code": "ro",
+ "name": "Chilomania"
+ },
+ "ru": {
+ "code": "ru",
+ "name": "Chilusi"
+ },
+ "kde": {
+ "code": "kde",
+ "name": "Chimakonde"
+ },
+ "ms": {
+ "code": "ms",
+ "name": "Chimalesia"
+ },
+ "ne": {
+ "code": "ne",
+ "name": "Chinepali"
+ },
+ "pl": {
+ "code": "pl",
+ "name": "Chipolandi"
+ },
+ "pa": {
+ "code": "pa",
+ "name": "Chipunjabi"
+ },
+ "so": {
+ "code": "so",
+ "name": "Chisomali"
+ },
+ "sv": {
+ "code": "sv",
+ "name": "Chiswidi"
+ },
+ "th": {
+ "code": "th",
+ "name": "Chitailandi"
+ },
+ "ta": {
+ "code": "ta",
+ "name": "Chitamil"
+ },
+ "tr": {
+ "code": "tr",
+ "name": "Chituluchi"
+ },
+ "uk": {
+ "code": "uk",
+ "name": "Chiuklania"
+ },
+ "ur": {
+ "code": "ur",
+ "name": "Chiuldu"
+ },
+ "vi": {
+ "code": "vi",
+ "name": "Chivietinamu"
+ },
+ "yo": {
+ "code": "yo",
+ "name": "Chiyoluba"
+ },
+ "zu": {
+ "code": "zu",
+ "name": "Chizulu"
+ },
+ "ksh": {
+ "code": "ksh",
+ "name": "Colognian"
+ },
+ "swc": {
+ "code": "swc",
+ "name": "Congo Swahili"
+ },
+ "hr": {
+ "code": "hr",
+ "name": "Croatian"
+ },
+ "da": {
+ "code": "da",
+ "name": "Danish"
+ },
+ "de-AT": {
+ "code": "de-AT",
+ "name": "de_AT"
+ },
+ "de-CH": {
+ "code": "de-CH",
+ "name": "de_CH"
+ },
+ "dz": {
+ "code": "dz",
+ "name": "Dzongkha"
+ },
+ "ebu": {
+ "code": "ebu",
+ "name": "Embu"
+ },
+ "en-AU": {
+ "code": "en-AU",
+ "name": "en_AU"
+ },
+ "en-CA": {
+ "code": "en-CA",
+ "name": "en_CA"
+ },
+ "en-GB": {
+ "code": "en-GB",
+ "name": "en_GB"
+ },
+ "en-US": {
+ "code": "en-US",
+ "name": "en_US"
+ },
+ "es-ES": {
+ "code": "es-ES",
+ "name": "es_ES"
+ },
+ "es-MX": {
+ "code": "es-MX",
+ "name": "es_MX"
+ },
+ "eo": {
+ "code": "eo",
+ "name": "Esperanto"
+ },
+ "et": {
+ "code": "et",
+ "name": "Estonian"
+ },
+ "ee": {
+ "code": "ee",
+ "name": "Ewe"
+ },
+ "ewo": {
+ "code": "ewo",
+ "name": "Ewondo"
+ },
+ "fo": {
+ "code": "fo",
+ "name": "Faroese"
+ },
+ "fil": {
+ "code": "fil",
+ "name": "Filipino"
+ },
+ "fi": {
+ "code": "fi",
+ "name": "Finnish"
+ },
+ "fr-CA": {
+ "code": "fr-CA",
+ "name": "fr_CA"
+ },
+ "fr-CH": {
+ "code": "fr-CH",
+ "name": "fr_CH"
+ },
+ "fur": {
+ "code": "fur",
+ "name": "Friulian"
+ },
+ "ff": {
+ "code": "ff",
+ "name": "Fulah"
+ },
+ "gl": {
+ "code": "gl",
+ "name": "Galician"
+ },
+ "lg": {
+ "code": "lg",
+ "name": "Ganda"
+ },
+ "ka": {
+ "code": "ka",
+ "name": "Georgian"
+ },
+ "gu": {
+ "code": "gu",
+ "name": "Gujarati"
+ },
+ "guz": {
+ "code": "guz",
+ "name": "Gusii"
+ },
+ "he": {
+ "code": "he",
+ "name": "Hebrew"
+ },
+ "is": {
+ "code": "is",
+ "name": "Icelandic"
+ },
+ "ga": {
+ "code": "ga",
+ "name": "Irish"
+ },
+ "dyo": {
+ "code": "dyo",
+ "name": "Jola-Fonyi"
+ },
+ "kea": {
+ "code": "kea",
+ "name": "Kabuverdianu"
+ },
+ "kab": {
+ "code": "kab",
+ "name": "Kabyle"
+ },
+ "kl": {
+ "code": "kl",
+ "name": "Kalaallisut"
+ },
+ "kln": {
+ "code": "kln",
+ "name": "Kalenjin"
+ },
+ "kam": {
+ "code": "kam",
+ "name": "Kamba"
+ },
+ "kn": {
+ "code": "kn",
+ "name": "Kannada"
+ },
+ "ks": {
+ "code": "ks",
+ "name": "Kashmiri"
+ },
+ "kk": {
+ "code": "kk",
+ "name": "Kazakh"
+ },
+ "ki": {
+ "code": "ki",
+ "name": "Kikuyu"
+ },
+ "khq": {
+ "code": "khq",
+ "name": "Koyra Chiini"
+ },
+ "ses": {
+ "code": "ses",
+ "name": "Koyraboro Senni"
+ },
+ "nmg": {
+ "code": "nmg",
+ "name": "Kwasio"
+ },
+ "ky": {
+ "code": "ky",
+ "name": "Kyrgyz"
+ },
+ "lag": {
+ "code": "lag",
+ "name": "Langi"
+ },
+ "lo": {
+ "code": "lo",
+ "name": "Lao"
+ },
+ "lv": {
+ "code": "lv",
+ "name": "Latvian"
+ },
+ "ln": {
+ "code": "ln",
+ "name": "Lingala"
+ },
+ "lt": {
+ "code": "lt",
+ "name": "Lithuanian"
+ },
+ "dsb": {
+ "code": "dsb",
+ "name": "Lower Sorbian"
+ },
+ "lu": {
+ "code": "lu",
+ "name": "Luba-Katanga"
+ },
+ "luo": {
+ "code": "luo",
+ "name": "Luo"
+ },
+ "lb": {
+ "code": "lb",
+ "name": "Luxembourgish"
+ },
+ "luy": {
+ "code": "luy",
+ "name": "Luyia"
+ },
+ "mk": {
+ "code": "mk",
+ "name": "Macedonian"
+ },
+ "jmc": {
+ "code": "jmc",
+ "name": "Machame"
+ },
+ "mgh": {
+ "code": "mgh",
+ "name": "Makhuwa-Meetto"
+ },
+ "mg": {
+ "code": "mg",
+ "name": "Malagasy"
+ },
+ "ml": {
+ "code": "ml",
+ "name": "Malayalam"
+ },
+ "mt": {
+ "code": "mt",
+ "name": "Maltese"
+ },
+ "mr": {
+ "code": "mr",
+ "name": "Marathi"
+ },
+ "mas": {
+ "code": "mas",
+ "name": "Masai"
+ },
+ "mer": {
+ "code": "mer",
+ "name": "Meru"
+ },
+ "mn": {
+ "code": "mn",
+ "name": "Mongolian"
+ },
+ "mfe": {
+ "code": "mfe",
+ "name": "Morisyen"
+ },
+ "mua": {
+ "code": "mua",
+ "name": "Mundang"
+ },
+ "naq": {
+ "code": "naq",
+ "name": "Nama"
+ },
+ "jgo": {
+ "code": "jgo",
+ "name": "Ngomba"
+ },
+ "nl-BE": {
+ "code": "nl-BE",
+ "name": "nl_BE"
+ },
+ "nd": {
+ "code": "nd",
+ "name": "North Ndebele"
+ },
+ "se": {
+ "code": "se",
+ "name": "Northern Sami"
+ },
+ "nb": {
+ "code": "nb",
+ "name": "Norwegian Bokmål"
+ },
+ "nn": {
+ "code": "nn",
+ "name": "Norwegian Nynorsk"
+ },
+ "nus": {
+ "code": "nus",
+ "name": "Nuer"
+ },
+ "nyn": {
+ "code": "nyn",
+ "name": "Nyankole"
+ },
+ "or": {
+ "code": "or",
+ "name": "Oriya"
+ },
+ "ps": {
+ "code": "ps",
+ "name": "Pashto"
+ },
+ "pt-BR": {
+ "code": "pt-BR",
+ "name": "pt_BR"
+ },
+ "pt-PT": {
+ "code": "pt-PT",
+ "name": "pt_PT"
+ },
+ "ro-MD": {
+ "code": "ro-MD",
+ "name": "ro_MD"
+ },
+ "rm": {
+ "code": "rm",
+ "name": "Romansh"
+ },
+ "rof": {
+ "code": "rof",
+ "name": "Rombo"
+ },
+ "rn": {
+ "code": "rn",
+ "name": "Rundi"
+ },
+ "rwk": {
+ "code": "rwk",
+ "name": "Rwa"
+ },
+ "saq": {
+ "code": "saq",
+ "name": "Samburu"
+ },
+ "sg": {
+ "code": "sg",
+ "name": "Sango"
+ },
+ "sbp": {
+ "code": "sbp",
+ "name": "Sangu"
+ },
+ "gd": {
+ "code": "gd",
+ "name": "Scottish Gaelic"
+ },
+ "seh": {
+ "code": "seh",
+ "name": "Sena"
+ },
+ "sr": {
+ "code": "sr",
+ "name": "Serbian"
+ },
+ "ksb": {
+ "code": "ksb",
+ "name": "Shambala"
+ },
+ "sn": {
+ "code": "sn",
+ "name": "Shona"
+ },
+ "si": {
+ "code": "si",
+ "name": "Sinhala"
+ },
+ "sk": {
+ "code": "sk",
+ "name": "Slovak"
+ },
+ "sl": {
+ "code": "sl",
+ "name": "Slovenian"
+ },
+ "xog": {
+ "code": "xog",
+ "name": "Soga"
+ },
+ "zgh": {
+ "code": "zgh",
+ "name": "Standard Moroccan Tamazight"
+ },
+ "sw": {
+ "code": "sw",
+ "name": "Swahili"
+ },
+ "gsw": {
+ "code": "gsw",
+ "name": "Swiss German"
+ },
+ "shi": {
+ "code": "shi",
+ "name": "Tachelhit"
+ },
+ "dav": {
+ "code": "dav",
+ "name": "Taita"
+ },
+ "twq": {
+ "code": "twq",
+ "name": "Tasawaq"
+ },
+ "te": {
+ "code": "te",
+ "name": "Telugu"
+ },
+ "teo": {
+ "code": "teo",
+ "name": "Teso"
+ },
+ "bo": {
+ "code": "bo",
+ "name": "Tibetan"
+ },
+ "ti": {
+ "code": "ti",
+ "name": "Tigrinya"
+ },
+ "to": {
+ "code": "to",
+ "name": "Tongan"
+ },
+ "hsb": {
+ "code": "hsb",
+ "name": "Upper Sorbian"
+ },
+ "ug": {
+ "code": "ug",
+ "name": "Uyghur"
+ },
+ "uz": {
+ "code": "uz",
+ "name": "Uzbek"
+ },
+ "vai": {
+ "code": "vai",
+ "name": "Vai"
+ },
+ "vun": {
+ "code": "vun",
+ "name": "Vunjo"
+ },
+ "wae": {
+ "code": "wae",
+ "name": "Walser"
+ },
+ "cy": {
+ "code": "cy",
+ "name": "Welsh"
+ },
+ "fy": {
+ "code": "fy",
+ "name": "Western Frisian"
+ },
+ "yav": {
+ "code": "yav",
+ "name": "Yangben"
+ },
+ "dje": {
+ "code": "dje",
+ "name": "Zarma"
+ },
+ "zh-Hans": {
+ "code": "zh-Hans",
+ "name": "zh_Hans"
+ },
+ "zh-Hant": {
+ "code": "zh-Hant",
+ "name": "zh_Hant"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/language/kea.json b/library/intl/resources/language/kea.json
new file mode 100644
index 000000000..a5a2671c5
--- /dev/null
+++ b/library/intl/resources/language/kea.json
@@ -0,0 +1,738 @@
+{
+ "af": {
+ "code": "af",
+ "name": "afrikaner"
+ },
+ "agq": {
+ "code": "agq",
+ "name": "aghem"
+ },
+ "ak": {
+ "code": "ak",
+ "name": "akan"
+ },
+ "sq": {
+ "code": "sq",
+ "name": "albanes"
+ },
+ "de": {
+ "code": "de",
+ "name": "alimãu"
+ },
+ "de-AT": {
+ "code": "de-AT",
+ "name": "alimãu austriaku"
+ },
+ "gsw": {
+ "code": "gsw",
+ "name": "alimãu di Suisa"
+ },
+ "de-CH": {
+ "code": "de-CH",
+ "name": "altu alimãu suisu"
+ },
+ "am": {
+ "code": "am",
+ "name": "amariku"
+ },
+ "ar": {
+ "code": "ar",
+ "name": "arabi"
+ },
+ "ar-001": {
+ "code": "ar-001",
+ "name": "arabi mudernu"
+ },
+ "hy": {
+ "code": "hy",
+ "name": "arméniu"
+ },
+ "ast": {
+ "code": "ast",
+ "name": "Asturian"
+ },
+ "asa": {
+ "code": "asa",
+ "name": "asu"
+ },
+ "ha": {
+ "code": "ha",
+ "name": "auza"
+ },
+ "az": {
+ "code": "az",
+ "name": "azerbaijanu"
+ },
+ "ksf": {
+ "code": "ksf",
+ "name": "Bafia"
+ },
+ "bm": {
+ "code": "bm",
+ "name": "bambara"
+ },
+ "bas": {
+ "code": "bas",
+ "name": "Basaa"
+ },
+ "eu": {
+ "code": "eu",
+ "name": "basku"
+ },
+ "bez": {
+ "code": "bez",
+ "name": "bena"
+ },
+ "bn": {
+ "code": "bn",
+ "name": "bengali"
+ },
+ "be": {
+ "code": "be",
+ "name": "bielorusu"
+ },
+ "my": {
+ "code": "my",
+ "name": "birmanes"
+ },
+ "brx": {
+ "code": "brx",
+ "name": "bodo"
+ },
+ "bs": {
+ "code": "bs",
+ "name": "bosniu"
+ },
+ "br": {
+ "code": "br",
+ "name": "bretãu"
+ },
+ "bg": {
+ "code": "bg",
+ "name": "bulgaru"
+ },
+ "tzm": {
+ "code": "tzm",
+ "name": "Central Atlas Tamazight"
+ },
+ "ksh": {
+ "code": "ksh",
+ "name": "Colognian"
+ },
+ "da": {
+ "code": "da",
+ "name": "dinamarkes"
+ },
+ "dz": {
+ "code": "dz",
+ "name": "dzonka"
+ },
+ "he": {
+ "code": "he",
+ "name": "ebraiku"
+ },
+ "ebu": {
+ "code": "ebu",
+ "name": "embu"
+ },
+ "ee": {
+ "code": "ee",
+ "name": "eve"
+ },
+ "ewo": {
+ "code": "ewo",
+ "name": "Ewondo"
+ },
+ "fo": {
+ "code": "fo",
+ "name": "faroes"
+ },
+ "fil": {
+ "code": "fil",
+ "name": "filipinu"
+ },
+ "fi": {
+ "code": "fi",
+ "name": "finlandes"
+ },
+ "nl-BE": {
+ "code": "nl-BE",
+ "name": "flamengu"
+ },
+ "fr": {
+ "code": "fr",
+ "name": "franses"
+ },
+ "fr-CA": {
+ "code": "fr-CA",
+ "name": "franses kanadianu"
+ },
+ "fr-CH": {
+ "code": "fr-CH",
+ "name": "franses suisu"
+ },
+ "fy": {
+ "code": "fy",
+ "name": "frisiu osidental"
+ },
+ "fur": {
+ "code": "fur",
+ "name": "Friulian"
+ },
+ "ff": {
+ "code": "ff",
+ "name": "Fulah"
+ },
+ "gl": {
+ "code": "gl",
+ "name": "galegu"
+ },
+ "cy": {
+ "code": "cy",
+ "name": "gales"
+ },
+ "lg": {
+ "code": "lg",
+ "name": "Ganda"
+ },
+ "el": {
+ "code": "el",
+ "name": "gregu"
+ },
+ "gu": {
+ "code": "gu",
+ "name": "gujarati"
+ },
+ "guz": {
+ "code": "guz",
+ "name": "gusii"
+ },
+ "hi": {
+ "code": "hi",
+ "name": "indi"
+ },
+ "id": {
+ "code": "id",
+ "name": "indoneziu"
+ },
+ "en": {
+ "code": "en",
+ "name": "ingles"
+ },
+ "en-AU": {
+ "code": "en-AU",
+ "name": "ingles australianu"
+ },
+ "en-GB": {
+ "code": "en-GB",
+ "name": "ingles britanuku"
+ },
+ "en-CA": {
+ "code": "en-CA",
+ "name": "ingles kanadianu"
+ },
+ "en-US": {
+ "code": "en-US",
+ "name": "ingles merkanu"
+ },
+ "yo": {
+ "code": "yo",
+ "name": "ioruba"
+ },
+ "ga": {
+ "code": "ga",
+ "name": "irlandes"
+ },
+ "is": {
+ "code": "is",
+ "name": "islandes"
+ },
+ "it": {
+ "code": "it",
+ "name": "italianu"
+ },
+ "ja": {
+ "code": "ja",
+ "name": "japones"
+ },
+ "dyo": {
+ "code": "dyo",
+ "name": "jola-fonyi"
+ },
+ "ka": {
+ "code": "ka",
+ "name": "jorjianu"
+ },
+ "kea": {
+ "code": "kea",
+ "name": "kabuverdianu"
+ },
+ "kab": {
+ "code": "kab",
+ "name": "Kabyle"
+ },
+ "kl": {
+ "code": "kl",
+ "name": "Kalaallisut"
+ },
+ "kln": {
+ "code": "kln",
+ "name": "Kalenjin"
+ },
+ "kam": {
+ "code": "kam",
+ "name": "Kamba"
+ },
+ "kn": {
+ "code": "kn",
+ "name": "kanares"
+ },
+ "ca": {
+ "code": "ca",
+ "name": "katalãu"
+ },
+ "ks": {
+ "code": "ks",
+ "name": "kaxmira"
+ },
+ "kk": {
+ "code": "kk",
+ "name": "kazak"
+ },
+ "ki": {
+ "code": "ki",
+ "name": "Kikuyu"
+ },
+ "ky": {
+ "code": "ky",
+ "name": "kirgiz"
+ },
+ "km": {
+ "code": "km",
+ "name": "kmer"
+ },
+ "khq": {
+ "code": "khq",
+ "name": "Koyra Chiini"
+ },
+ "ses": {
+ "code": "ses",
+ "name": "Koyraboro Senni"
+ },
+ "hr": {
+ "code": "hr",
+ "name": "kroata"
+ },
+ "ko": {
+ "code": "ko",
+ "name": "kureanu"
+ },
+ "nmg": {
+ "code": "nmg",
+ "name": "Kwasio"
+ },
+ "lag": {
+ "code": "lag",
+ "name": "Langi"
+ },
+ "lo": {
+ "code": "lo",
+ "name": "lausianu"
+ },
+ "lv": {
+ "code": "lv",
+ "name": "letãu"
+ },
+ "ln": {
+ "code": "ln",
+ "name": "Lingala"
+ },
+ "lt": {
+ "code": "lt",
+ "name": "lituanes"
+ },
+ "lu": {
+ "code": "lu",
+ "name": "Luba-Katanga"
+ },
+ "luo": {
+ "code": "luo",
+ "name": "Luo"
+ },
+ "lb": {
+ "code": "lb",
+ "name": "luxemburges"
+ },
+ "luy": {
+ "code": "luy",
+ "name": "Luyia"
+ },
+ "mgh": {
+ "code": "mgh",
+ "name": "Makhuwa-Meetto"
+ },
+ "kde": {
+ "code": "kde",
+ "name": "Makonde"
+ },
+ "ml": {
+ "code": "ml",
+ "name": "malaialam"
+ },
+ "ms": {
+ "code": "ms",
+ "name": "malaiu"
+ },
+ "mg": {
+ "code": "mg",
+ "name": "malgaxi"
+ },
+ "mt": {
+ "code": "mt",
+ "name": "maltes"
+ },
+ "mr": {
+ "code": "mr",
+ "name": "marati"
+ },
+ "mas": {
+ "code": "mas",
+ "name": "Masai"
+ },
+ "mk": {
+ "code": "mk",
+ "name": "masedoniu"
+ },
+ "jmc": {
+ "code": "jmc",
+ "name": "matxame"
+ },
+ "mer": {
+ "code": "mer",
+ "name": "Meru"
+ },
+ "mn": {
+ "code": "mn",
+ "name": "Mongolian"
+ },
+ "mfe": {
+ "code": "mfe",
+ "name": "Morisyen"
+ },
+ "mua": {
+ "code": "mua",
+ "name": "Mundang"
+ },
+ "naq": {
+ "code": "naq",
+ "name": "Nama"
+ },
+ "ne": {
+ "code": "ne",
+ "name": "nepales"
+ },
+ "jgo": {
+ "code": "jgo",
+ "name": "ñomba"
+ },
+ "nd": {
+ "code": "nd",
+ "name": "North Ndebele"
+ },
+ "se": {
+ "code": "se",
+ "name": "Northern Sami"
+ },
+ "nb": {
+ "code": "nb",
+ "name": "norueges bokmål"
+ },
+ "nn": {
+ "code": "nn",
+ "name": "norueges nynorsk"
+ },
+ "nus": {
+ "code": "nus",
+ "name": "Nuer"
+ },
+ "nyn": {
+ "code": "nyn",
+ "name": "Nyankole"
+ },
+ "nl": {
+ "code": "nl",
+ "name": "olandes"
+ },
+ "or": {
+ "code": "or",
+ "name": "oriya"
+ },
+ "pa": {
+ "code": "pa",
+ "name": "pandjabi"
+ },
+ "ps": {
+ "code": "ps",
+ "name": "paxto"
+ },
+ "fa": {
+ "code": "fa",
+ "name": "persa"
+ },
+ "pl": {
+ "code": "pl",
+ "name": "pulaku"
+ },
+ "pt": {
+ "code": "pt",
+ "name": "purtuges"
+ },
+ "pt-BR": {
+ "code": "pt-BR",
+ "name": "purtuges brazileru"
+ },
+ "pt-PT": {
+ "code": "pt-PT",
+ "name": "purtuges europeu"
+ },
+ "ro-MD": {
+ "code": "ro-MD",
+ "name": "ro_MD"
+ },
+ "rm": {
+ "code": "rm",
+ "name": "romanxi"
+ },
+ "rof": {
+ "code": "rof",
+ "name": "Rombo"
+ },
+ "ro": {
+ "code": "ro",
+ "name": "rumenu"
+ },
+ "rn": {
+ "code": "rn",
+ "name": "Rundi"
+ },
+ "ru": {
+ "code": "ru",
+ "name": "rusu"
+ },
+ "rwk": {
+ "code": "rwk",
+ "name": "Rwa"
+ },
+ "saq": {
+ "code": "saq",
+ "name": "Samburu"
+ },
+ "sg": {
+ "code": "sg",
+ "name": "Sango"
+ },
+ "sbp": {
+ "code": "sbp",
+ "name": "Sangu"
+ },
+ "gd": {
+ "code": "gd",
+ "name": "Scottish Gaelic"
+ },
+ "seh": {
+ "code": "seh",
+ "name": "Sena"
+ },
+ "sr": {
+ "code": "sr",
+ "name": "sérviu"
+ },
+ "ksb": {
+ "code": "ksb",
+ "name": "Shambala"
+ },
+ "sn": {
+ "code": "sn",
+ "name": "Shona"
+ },
+ "si": {
+ "code": "si",
+ "name": "singales"
+ },
+ "sk": {
+ "code": "sk",
+ "name": "slovaku"
+ },
+ "sl": {
+ "code": "sl",
+ "name": "sloveniu"
+ },
+ "xog": {
+ "code": "xog",
+ "name": "Soga"
+ },
+ "so": {
+ "code": "so",
+ "name": "somali"
+ },
+ "hsb": {
+ "code": "hsb",
+ "name": "sórbiu altu"
+ },
+ "dsb": {
+ "code": "dsb",
+ "name": "sórbiu baxu"
+ },
+ "es": {
+ "code": "es",
+ "name": "spanhol"
+ },
+ "es-ES": {
+ "code": "es-ES",
+ "name": "spanhol europeu"
+ },
+ "es-MX": {
+ "code": "es-MX",
+ "name": "spanhol mexikanu"
+ },
+ "eo": {
+ "code": "eo",
+ "name": "sperantu"
+ },
+ "zgh": {
+ "code": "zgh",
+ "name": "Standard Moroccan Tamazight"
+ },
+ "et": {
+ "code": "et",
+ "name": "stonianu"
+ },
+ "sw": {
+ "code": "sw",
+ "name": "suaíli"
+ },
+ "swc": {
+ "code": "swc",
+ "name": "suaíli di Kongu"
+ },
+ "sv": {
+ "code": "sv",
+ "name": "sueku"
+ },
+ "shi": {
+ "code": "shi",
+ "name": "Tachelhit"
+ },
+ "th": {
+ "code": "th",
+ "name": "tailandes"
+ },
+ "dav": {
+ "code": "dav",
+ "name": "taita"
+ },
+ "ta": {
+ "code": "ta",
+ "name": "tamil"
+ },
+ "twq": {
+ "code": "twq",
+ "name": "Tasawaq"
+ },
+ "te": {
+ "code": "te",
+ "name": "telugu"
+ },
+ "teo": {
+ "code": "teo",
+ "name": "Teso"
+ },
+ "bo": {
+ "code": "bo",
+ "name": "tibetanu"
+ },
+ "ti": {
+ "code": "ti",
+ "name": "tigrinia"
+ },
+ "to": {
+ "code": "to",
+ "name": "tonganes"
+ },
+ "tr": {
+ "code": "tr",
+ "name": "turku"
+ },
+ "cs": {
+ "code": "cs",
+ "name": "txeku"
+ },
+ "ug": {
+ "code": "ug",
+ "name": "uigur"
+ },
+ "uk": {
+ "code": "uk",
+ "name": "ukranianu"
+ },
+ "hu": {
+ "code": "hu",
+ "name": "úngaru"
+ },
+ "ur": {
+ "code": "ur",
+ "name": "urdu"
+ },
+ "uz": {
+ "code": "uz",
+ "name": "uzbeki"
+ },
+ "vai": {
+ "code": "vai",
+ "name": "Vai"
+ },
+ "vi": {
+ "code": "vi",
+ "name": "vietnamita"
+ },
+ "vun": {
+ "code": "vun",
+ "name": "Vunjo"
+ },
+ "wae": {
+ "code": "wae",
+ "name": "Walser"
+ },
+ "chr": {
+ "code": "chr",
+ "name": "xeroki"
+ },
+ "cgg": {
+ "code": "cgg",
+ "name": "xiga"
+ },
+ "zh": {
+ "code": "zh",
+ "name": "xines"
+ },
+ "zh-Hans": {
+ "code": "zh-Hans",
+ "name": "xines simplifikadu"
+ },
+ "zh-Hant": {
+ "code": "zh-Hant",
+ "name": "xines tradisional"
+ },
+ "yav": {
+ "code": "yav",
+ "name": "Yangben"
+ },
+ "dje": {
+ "code": "dje",
+ "name": "zarma"
+ },
+ "zu": {
+ "code": "zu",
+ "name": "zulu"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/language/khq.json b/library/intl/resources/language/khq.json
new file mode 100644
index 000000000..f38afa86d
--- /dev/null
+++ b/library/intl/resources/language/khq.json
@@ -0,0 +1,738 @@
+{
+ "af": {
+ "code": "af",
+ "name": "Afrikaans"
+ },
+ "agq": {
+ "code": "agq",
+ "name": "Aghem"
+ },
+ "ak": {
+ "code": "ak",
+ "name": "Akan senni"
+ },
+ "sq": {
+ "code": "sq",
+ "name": "Albanian"
+ },
+ "de": {
+ "code": "de",
+ "name": "Almaŋ senni"
+ },
+ "am": {
+ "code": "am",
+ "name": "Amhaarik senni"
+ },
+ "ar-001": {
+ "code": "ar-001",
+ "name": "ar_001"
+ },
+ "hy": {
+ "code": "hy",
+ "name": "Armenian"
+ },
+ "ast": {
+ "code": "ast",
+ "name": "Asturian"
+ },
+ "asa": {
+ "code": "asa",
+ "name": "Asu"
+ },
+ "az": {
+ "code": "az",
+ "name": "Azerbaijani"
+ },
+ "ksf": {
+ "code": "ksf",
+ "name": "Bafia"
+ },
+ "bm": {
+ "code": "bm",
+ "name": "Bambara"
+ },
+ "bas": {
+ "code": "bas",
+ "name": "Basaa"
+ },
+ "eu": {
+ "code": "eu",
+ "name": "Basque"
+ },
+ "be": {
+ "code": "be",
+ "name": "Belaruus senni"
+ },
+ "bez": {
+ "code": "bez",
+ "name": "Bena"
+ },
+ "bn": {
+ "code": "bn",
+ "name": "Bengali senni"
+ },
+ "brx": {
+ "code": "brx",
+ "name": "Bodo"
+ },
+ "bs": {
+ "code": "bs",
+ "name": "Bosnian"
+ },
+ "br": {
+ "code": "br",
+ "name": "Breton"
+ },
+ "bg": {
+ "code": "bg",
+ "name": "Bulagaari senni"
+ },
+ "my": {
+ "code": "my",
+ "name": "Burme senni"
+ },
+ "ca": {
+ "code": "ca",
+ "name": "Catalan"
+ },
+ "cs": {
+ "code": "cs",
+ "name": "Cek senni"
+ },
+ "tzm": {
+ "code": "tzm",
+ "name": "Central Atlas Tamazight"
+ },
+ "chr": {
+ "code": "chr",
+ "name": "Cherokee"
+ },
+ "cgg": {
+ "code": "cgg",
+ "name": "Chiga"
+ },
+ "ksh": {
+ "code": "ksh",
+ "name": "Colognian"
+ },
+ "swc": {
+ "code": "swc",
+ "name": "Congo Swahili"
+ },
+ "hr": {
+ "code": "hr",
+ "name": "Croatian"
+ },
+ "da": {
+ "code": "da",
+ "name": "Danish"
+ },
+ "de-AT": {
+ "code": "de-AT",
+ "name": "de_AT"
+ },
+ "de-CH": {
+ "code": "de-CH",
+ "name": "de_CH"
+ },
+ "dz": {
+ "code": "dz",
+ "name": "Dzongkha"
+ },
+ "ebu": {
+ "code": "ebu",
+ "name": "Embu"
+ },
+ "en-AU": {
+ "code": "en-AU",
+ "name": "en_AU"
+ },
+ "en-CA": {
+ "code": "en-CA",
+ "name": "en_CA"
+ },
+ "en-GB": {
+ "code": "en-GB",
+ "name": "en_GB"
+ },
+ "en-US": {
+ "code": "en-US",
+ "name": "en_US"
+ },
+ "es-ES": {
+ "code": "es-ES",
+ "name": "es_ES"
+ },
+ "es-MX": {
+ "code": "es-MX",
+ "name": "es_MX"
+ },
+ "es": {
+ "code": "es",
+ "name": "Espaaɲe senni"
+ },
+ "eo": {
+ "code": "eo",
+ "name": "Esperanto"
+ },
+ "et": {
+ "code": "et",
+ "name": "Estonian"
+ },
+ "ee": {
+ "code": "ee",
+ "name": "Ewe"
+ },
+ "ewo": {
+ "code": "ewo",
+ "name": "Ewondo"
+ },
+ "fo": {
+ "code": "fo",
+ "name": "Faroese"
+ },
+ "fa": {
+ "code": "fa",
+ "name": "Farsi senni"
+ },
+ "fil": {
+ "code": "fil",
+ "name": "Filipino"
+ },
+ "fi": {
+ "code": "fi",
+ "name": "Finnish"
+ },
+ "fr-CA": {
+ "code": "fr-CA",
+ "name": "fr_CA"
+ },
+ "fr-CH": {
+ "code": "fr-CH",
+ "name": "fr_CH"
+ },
+ "fr": {
+ "code": "fr",
+ "name": "Fransee senni"
+ },
+ "fur": {
+ "code": "fur",
+ "name": "Friulian"
+ },
+ "ff": {
+ "code": "ff",
+ "name": "Fulah"
+ },
+ "gl": {
+ "code": "gl",
+ "name": "Galician"
+ },
+ "lg": {
+ "code": "lg",
+ "name": "Ganda"
+ },
+ "ka": {
+ "code": "ka",
+ "name": "Georgian"
+ },
+ "el": {
+ "code": "el",
+ "name": "Grek senni"
+ },
+ "gu": {
+ "code": "gu",
+ "name": "Gujarati"
+ },
+ "guz": {
+ "code": "guz",
+ "name": "Gusii"
+ },
+ "ha": {
+ "code": "ha",
+ "name": "Hawsance senni"
+ },
+ "he": {
+ "code": "he",
+ "name": "Hebrew"
+ },
+ "nl": {
+ "code": "nl",
+ "name": "Holandee senni"
+ },
+ "hu": {
+ "code": "hu",
+ "name": "Hungaari senni"
+ },
+ "is": {
+ "code": "is",
+ "name": "Icelandic"
+ },
+ "id": {
+ "code": "id",
+ "name": "Indoneesi senni"
+ },
+ "hi": {
+ "code": "hi",
+ "name": "Induu senni"
+ },
+ "en": {
+ "code": "en",
+ "name": "Inglisi senni"
+ },
+ "ga": {
+ "code": "ga",
+ "name": "Irish"
+ },
+ "it": {
+ "code": "it",
+ "name": "Itaali senni"
+ },
+ "ja": {
+ "code": "ja",
+ "name": "Japonee senni"
+ },
+ "dyo": {
+ "code": "dyo",
+ "name": "Jola-Fonyi"
+ },
+ "zu": {
+ "code": "zu",
+ "name": "Julu senni"
+ },
+ "kea": {
+ "code": "kea",
+ "name": "Kabuverdianu"
+ },
+ "kab": {
+ "code": "kab",
+ "name": "Kabyle"
+ },
+ "kl": {
+ "code": "kl",
+ "name": "Kalaallisut"
+ },
+ "kln": {
+ "code": "kln",
+ "name": "Kalenjin"
+ },
+ "kam": {
+ "code": "kam",
+ "name": "Kamba"
+ },
+ "kn": {
+ "code": "kn",
+ "name": "Kannada"
+ },
+ "ks": {
+ "code": "ks",
+ "name": "Kashmiri"
+ },
+ "kk": {
+ "code": "kk",
+ "name": "Kazakh"
+ },
+ "ki": {
+ "code": "ki",
+ "name": "Kikuyu"
+ },
+ "km": {
+ "code": "km",
+ "name": "Kmeer senni, Game here"
+ },
+ "ko": {
+ "code": "ko",
+ "name": "Koree senni"
+ },
+ "khq": {
+ "code": "khq",
+ "name": "Koyra ciini"
+ },
+ "ses": {
+ "code": "ses",
+ "name": "Koyraboro Senni"
+ },
+ "nmg": {
+ "code": "nmg",
+ "name": "Kwasio"
+ },
+ "ky": {
+ "code": "ky",
+ "name": "Kyrgyz"
+ },
+ "ar": {
+ "code": "ar",
+ "name": "Laaraw senni"
+ },
+ "lag": {
+ "code": "lag",
+ "name": "Langi"
+ },
+ "lo": {
+ "code": "lo",
+ "name": "Lao"
+ },
+ "lv": {
+ "code": "lv",
+ "name": "Latvian"
+ },
+ "ln": {
+ "code": "ln",
+ "name": "Lingala"
+ },
+ "lt": {
+ "code": "lt",
+ "name": "Lithuanian"
+ },
+ "dsb": {
+ "code": "dsb",
+ "name": "Lower Sorbian"
+ },
+ "lu": {
+ "code": "lu",
+ "name": "Luba-Katanga"
+ },
+ "luo": {
+ "code": "luo",
+ "name": "Luo"
+ },
+ "lb": {
+ "code": "lb",
+ "name": "Luxembourgish"
+ },
+ "luy": {
+ "code": "luy",
+ "name": "Luyia"
+ },
+ "mk": {
+ "code": "mk",
+ "name": "Macedonian"
+ },
+ "jmc": {
+ "code": "jmc",
+ "name": "Machame"
+ },
+ "mgh": {
+ "code": "mgh",
+ "name": "Makhuwa-Meetto"
+ },
+ "kde": {
+ "code": "kde",
+ "name": "Makonde"
+ },
+ "mg": {
+ "code": "mg",
+ "name": "Malagasy"
+ },
+ "ml": {
+ "code": "ml",
+ "name": "Malayalam"
+ },
+ "ms": {
+ "code": "ms",
+ "name": "Maleezi senni"
+ },
+ "mt": {
+ "code": "mt",
+ "name": "Maltese"
+ },
+ "mr": {
+ "code": "mr",
+ "name": "Marathi"
+ },
+ "mas": {
+ "code": "mas",
+ "name": "Masai"
+ },
+ "mer": {
+ "code": "mer",
+ "name": "Meru"
+ },
+ "mn": {
+ "code": "mn",
+ "name": "Mongolian"
+ },
+ "mfe": {
+ "code": "mfe",
+ "name": "Morisyen"
+ },
+ "mua": {
+ "code": "mua",
+ "name": "Mundang"
+ },
+ "naq": {
+ "code": "naq",
+ "name": "Nama"
+ },
+ "ne": {
+ "code": "ne",
+ "name": "Neepal senni"
+ },
+ "jgo": {
+ "code": "jgo",
+ "name": "Ngomba"
+ },
+ "nl-BE": {
+ "code": "nl-BE",
+ "name": "nl_BE"
+ },
+ "nd": {
+ "code": "nd",
+ "name": "North Ndebele"
+ },
+ "se": {
+ "code": "se",
+ "name": "Northern Sami"
+ },
+ "nb": {
+ "code": "nb",
+ "name": "Norwegian Bokmål"
+ },
+ "nn": {
+ "code": "nn",
+ "name": "Norwegian Nynorsk"
+ },
+ "nus": {
+ "code": "nus",
+ "name": "Nuer"
+ },
+ "nyn": {
+ "code": "nyn",
+ "name": "Nyankole"
+ },
+ "or": {
+ "code": "or",
+ "name": "Oriya"
+ },
+ "ps": {
+ "code": "ps",
+ "name": "Pashto"
+ },
+ "pl": {
+ "code": "pl",
+ "name": "Polonee senni"
+ },
+ "pt": {
+ "code": "pt",
+ "name": "Portugee senni"
+ },
+ "pt-BR": {
+ "code": "pt-BR",
+ "name": "pt_BR"
+ },
+ "pt-PT": {
+ "code": "pt-PT",
+ "name": "pt_PT"
+ },
+ "pa": {
+ "code": "pa",
+ "name": "Punjaabi sennii"
+ },
+ "ro-MD": {
+ "code": "ro-MD",
+ "name": "ro_MD"
+ },
+ "rm": {
+ "code": "rm",
+ "name": "Romansh"
+ },
+ "rof": {
+ "code": "rof",
+ "name": "Rombo"
+ },
+ "ro": {
+ "code": "ro",
+ "name": "Rumaani senni"
+ },
+ "rn": {
+ "code": "rn",
+ "name": "Rundi"
+ },
+ "ru": {
+ "code": "ru",
+ "name": "Ruusi senni"
+ },
+ "rwk": {
+ "code": "rwk",
+ "name": "Rwa"
+ },
+ "saq": {
+ "code": "saq",
+ "name": "Samburu"
+ },
+ "sg": {
+ "code": "sg",
+ "name": "Sango"
+ },
+ "sbp": {
+ "code": "sbp",
+ "name": "Sangu"
+ },
+ "gd": {
+ "code": "gd",
+ "name": "Scottish Gaelic"
+ },
+ "seh": {
+ "code": "seh",
+ "name": "Sena"
+ },
+ "sr": {
+ "code": "sr",
+ "name": "Serbian"
+ },
+ "ksb": {
+ "code": "ksb",
+ "name": "Shambala"
+ },
+ "sn": {
+ "code": "sn",
+ "name": "Shona"
+ },
+ "si": {
+ "code": "si",
+ "name": "Sinhala"
+ },
+ "zh": {
+ "code": "zh",
+ "name": "Sinuwa senni, Mandareŋ"
+ },
+ "sk": {
+ "code": "sk",
+ "name": "Slovak"
+ },
+ "sl": {
+ "code": "sl",
+ "name": "Slovenian"
+ },
+ "xog": {
+ "code": "xog",
+ "name": "Soga"
+ },
+ "so": {
+ "code": "so",
+ "name": "Somaali senni"
+ },
+ "zgh": {
+ "code": "zgh",
+ "name": "Standard Moroccan Tamazight"
+ },
+ "sv": {
+ "code": "sv",
+ "name": "Suweede senni"
+ },
+ "sw": {
+ "code": "sw",
+ "name": "Swahili"
+ },
+ "gsw": {
+ "code": "gsw",
+ "name": "Swiss German"
+ },
+ "th": {
+ "code": "th",
+ "name": "Taailandu senni"
+ },
+ "shi": {
+ "code": "shi",
+ "name": "Tachelhit"
+ },
+ "dav": {
+ "code": "dav",
+ "name": "Taita"
+ },
+ "ta": {
+ "code": "ta",
+ "name": "Tamil senni"
+ },
+ "twq": {
+ "code": "twq",
+ "name": "Tasawaq"
+ },
+ "te": {
+ "code": "te",
+ "name": "Telugu"
+ },
+ "teo": {
+ "code": "teo",
+ "name": "Teso"
+ },
+ "bo": {
+ "code": "bo",
+ "name": "Tibetan"
+ },
+ "ti": {
+ "code": "ti",
+ "name": "Tigrinya"
+ },
+ "to": {
+ "code": "to",
+ "name": "Tongan"
+ },
+ "tr": {
+ "code": "tr",
+ "name": "Turku senni"
+ },
+ "uk": {
+ "code": "uk",
+ "name": "Ukreen senni"
+ },
+ "hsb": {
+ "code": "hsb",
+ "name": "Upper Sorbian"
+ },
+ "ur": {
+ "code": "ur",
+ "name": "Urdu senni"
+ },
+ "ug": {
+ "code": "ug",
+ "name": "Uyghur"
+ },
+ "uz": {
+ "code": "uz",
+ "name": "Uzbek"
+ },
+ "vai": {
+ "code": "vai",
+ "name": "Vai"
+ },
+ "vi": {
+ "code": "vi",
+ "name": "Vietnaam senni"
+ },
+ "vun": {
+ "code": "vun",
+ "name": "Vunjo"
+ },
+ "wae": {
+ "code": "wae",
+ "name": "Walser"
+ },
+ "cy": {
+ "code": "cy",
+ "name": "Welsh"
+ },
+ "fy": {
+ "code": "fy",
+ "name": "Western Frisian"
+ },
+ "yav": {
+ "code": "yav",
+ "name": "Yangben"
+ },
+ "yo": {
+ "code": "yo",
+ "name": "Yorbance senni"
+ },
+ "dje": {
+ "code": "dje",
+ "name": "Zarma"
+ },
+ "zh-Hans": {
+ "code": "zh-Hans",
+ "name": "zh_Hans"
+ },
+ "zh-Hant": {
+ "code": "zh-Hant",
+ "name": "zh_Hant"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/language/ki.json b/library/intl/resources/language/ki.json
new file mode 100644
index 000000000..6466bcf24
--- /dev/null
+++ b/library/intl/resources/language/ki.json
@@ -0,0 +1,738 @@
+{
+ "af": {
+ "code": "af",
+ "name": "Afrikaans"
+ },
+ "agq": {
+ "code": "agq",
+ "name": "Aghem"
+ },
+ "sq": {
+ "code": "sq",
+ "name": "Albanian"
+ },
+ "ar-001": {
+ "code": "ar-001",
+ "name": "ar_001"
+ },
+ "hy": {
+ "code": "hy",
+ "name": "Armenian"
+ },
+ "ast": {
+ "code": "ast",
+ "name": "Asturian"
+ },
+ "asa": {
+ "code": "asa",
+ "name": "Asu"
+ },
+ "az": {
+ "code": "az",
+ "name": "Azerbaijani"
+ },
+ "ksf": {
+ "code": "ksf",
+ "name": "Bafia"
+ },
+ "bm": {
+ "code": "bm",
+ "name": "Bambara"
+ },
+ "bas": {
+ "code": "bas",
+ "name": "Basaa"
+ },
+ "eu": {
+ "code": "eu",
+ "name": "Basque"
+ },
+ "bez": {
+ "code": "bez",
+ "name": "Bena"
+ },
+ "brx": {
+ "code": "brx",
+ "name": "Bodo"
+ },
+ "bs": {
+ "code": "bs",
+ "name": "Bosnian"
+ },
+ "br": {
+ "code": "br",
+ "name": "Breton"
+ },
+ "ca": {
+ "code": "ca",
+ "name": "Catalan"
+ },
+ "tzm": {
+ "code": "tzm",
+ "name": "Central Atlas Tamazight"
+ },
+ "chr": {
+ "code": "chr",
+ "name": "Cherokee"
+ },
+ "cgg": {
+ "code": "cgg",
+ "name": "Chiga"
+ },
+ "ksh": {
+ "code": "ksh",
+ "name": "Colognian"
+ },
+ "swc": {
+ "code": "swc",
+ "name": "Congo Swahili"
+ },
+ "hr": {
+ "code": "hr",
+ "name": "Croatian"
+ },
+ "da": {
+ "code": "da",
+ "name": "Danish"
+ },
+ "de-AT": {
+ "code": "de-AT",
+ "name": "de_AT"
+ },
+ "de-CH": {
+ "code": "de-CH",
+ "name": "de_CH"
+ },
+ "dz": {
+ "code": "dz",
+ "name": "Dzongkha"
+ },
+ "ebu": {
+ "code": "ebu",
+ "name": "Embu"
+ },
+ "en-AU": {
+ "code": "en-AU",
+ "name": "en_AU"
+ },
+ "en-CA": {
+ "code": "en-CA",
+ "name": "en_CA"
+ },
+ "en-GB": {
+ "code": "en-GB",
+ "name": "en_GB"
+ },
+ "en-US": {
+ "code": "en-US",
+ "name": "en_US"
+ },
+ "es-ES": {
+ "code": "es-ES",
+ "name": "es_ES"
+ },
+ "es-MX": {
+ "code": "es-MX",
+ "name": "es_MX"
+ },
+ "eo": {
+ "code": "eo",
+ "name": "Esperanto"
+ },
+ "et": {
+ "code": "et",
+ "name": "Estonian"
+ },
+ "ee": {
+ "code": "ee",
+ "name": "Ewe"
+ },
+ "ewo": {
+ "code": "ewo",
+ "name": "Ewondo"
+ },
+ "fo": {
+ "code": "fo",
+ "name": "Faroese"
+ },
+ "fil": {
+ "code": "fil",
+ "name": "Filipino"
+ },
+ "fi": {
+ "code": "fi",
+ "name": "Finnish"
+ },
+ "fr-CA": {
+ "code": "fr-CA",
+ "name": "fr_CA"
+ },
+ "fr-CH": {
+ "code": "fr-CH",
+ "name": "fr_CH"
+ },
+ "fur": {
+ "code": "fur",
+ "name": "Friulian"
+ },
+ "ff": {
+ "code": "ff",
+ "name": "Fulah"
+ },
+ "gl": {
+ "code": "gl",
+ "name": "Galician"
+ },
+ "lg": {
+ "code": "lg",
+ "name": "Ganda"
+ },
+ "ka": {
+ "code": "ka",
+ "name": "Georgian"
+ },
+ "ki": {
+ "code": "ki",
+ "name": "Gikuyu"
+ },
+ "en": {
+ "code": "en",
+ "name": "Gĩthungũ"
+ },
+ "gu": {
+ "code": "gu",
+ "name": "Gujarati"
+ },
+ "guz": {
+ "code": "guz",
+ "name": "Gusii"
+ },
+ "he": {
+ "code": "he",
+ "name": "Hebrew"
+ },
+ "is": {
+ "code": "is",
+ "name": "Icelandic"
+ },
+ "ga": {
+ "code": "ga",
+ "name": "Irish"
+ },
+ "dyo": {
+ "code": "dyo",
+ "name": "Jola-Fonyi"
+ },
+ "kea": {
+ "code": "kea",
+ "name": "Kabuverdianu"
+ },
+ "kab": {
+ "code": "kab",
+ "name": "Kabyle"
+ },
+ "kl": {
+ "code": "kl",
+ "name": "Kalaallisut"
+ },
+ "kln": {
+ "code": "kln",
+ "name": "Kalenjin"
+ },
+ "kam": {
+ "code": "kam",
+ "name": "Kamba"
+ },
+ "kn": {
+ "code": "kn",
+ "name": "Kannada"
+ },
+ "ks": {
+ "code": "ks",
+ "name": "Kashmiri"
+ },
+ "kk": {
+ "code": "kk",
+ "name": "Kazakh"
+ },
+ "fa": {
+ "code": "fa",
+ "name": "Kiajemi"
+ },
+ "ak": {
+ "code": "ak",
+ "name": "Kiakan"
+ },
+ "am": {
+ "code": "am",
+ "name": "Kiamhari"
+ },
+ "ar": {
+ "code": "ar",
+ "name": "KÄ©arabu"
+ },
+ "bn": {
+ "code": "bn",
+ "name": "Kibangla"
+ },
+ "fr": {
+ "code": "fr",
+ "name": "KÄ©baranja"
+ },
+ "be": {
+ "code": "be",
+ "name": "Kibelarusi"
+ },
+ "bg": {
+ "code": "bg",
+ "name": "Kibulgaria"
+ },
+ "my": {
+ "code": "my",
+ "name": "Kiburma"
+ },
+ "zh": {
+ "code": "zh",
+ "name": "KÄ©caina"
+ },
+ "cs": {
+ "code": "cs",
+ "name": "Kichecki"
+ },
+ "so": {
+ "code": "so",
+ "name": "Kĩcumarĩ"
+ },
+ "el": {
+ "code": "el",
+ "name": "Kigiriki"
+ },
+ "ha": {
+ "code": "ha",
+ "name": "Kihausa"
+ },
+ "hi": {
+ "code": "hi",
+ "name": "Kĩhĩndĩ"
+ },
+ "es": {
+ "code": "es",
+ "name": "Kihispania"
+ },
+ "nl": {
+ "code": "nl",
+ "name": "Kiholanzi"
+ },
+ "hu": {
+ "code": "hu",
+ "name": "Kihungari"
+ },
+ "id": {
+ "code": "id",
+ "name": "Kiindonesia"
+ },
+ "km": {
+ "code": "km",
+ "name": "Kikambodia"
+ },
+ "ko": {
+ "code": "ko",
+ "name": "Kikorea"
+ },
+ "ms": {
+ "code": "ms",
+ "name": "Kimalesia"
+ },
+ "ne": {
+ "code": "ne",
+ "name": "Kinepali"
+ },
+ "ja": {
+ "code": "ja",
+ "name": "KÄ©njabani"
+ },
+ "de": {
+ "code": "de",
+ "name": "KÄ©njeremani"
+ },
+ "pl": {
+ "code": "pl",
+ "name": "Kipolandi"
+ },
+ "pa": {
+ "code": "pa",
+ "name": "Kipunjabi"
+ },
+ "ru": {
+ "code": "ru",
+ "name": "KÄ©racia"
+ },
+ "pt": {
+ "code": "pt",
+ "name": "Kireno"
+ },
+ "ro": {
+ "code": "ro",
+ "name": "Kiromania"
+ },
+ "sv": {
+ "code": "sv",
+ "name": "Kiswidi"
+ },
+ "th": {
+ "code": "th",
+ "name": "Kitailandi"
+ },
+ "it": {
+ "code": "it",
+ "name": "KÄ©taliano"
+ },
+ "ta": {
+ "code": "ta",
+ "name": "Kitamil"
+ },
+ "tr": {
+ "code": "tr",
+ "name": "Kituruki"
+ },
+ "uk": {
+ "code": "uk",
+ "name": "Kiukrania"
+ },
+ "ur": {
+ "code": "ur",
+ "name": "Kiurdu"
+ },
+ "vi": {
+ "code": "vi",
+ "name": "Kivietinamu"
+ },
+ "yo": {
+ "code": "yo",
+ "name": "Kiyoruba"
+ },
+ "zu": {
+ "code": "zu",
+ "name": "Kizulu"
+ },
+ "khq": {
+ "code": "khq",
+ "name": "Koyra Chiini"
+ },
+ "ses": {
+ "code": "ses",
+ "name": "Koyraboro Senni"
+ },
+ "nmg": {
+ "code": "nmg",
+ "name": "Kwasio"
+ },
+ "ky": {
+ "code": "ky",
+ "name": "Kyrgyz"
+ },
+ "lag": {
+ "code": "lag",
+ "name": "Langi"
+ },
+ "lo": {
+ "code": "lo",
+ "name": "Lao"
+ },
+ "lv": {
+ "code": "lv",
+ "name": "Latvian"
+ },
+ "ln": {
+ "code": "ln",
+ "name": "Lingala"
+ },
+ "lt": {
+ "code": "lt",
+ "name": "Lithuanian"
+ },
+ "dsb": {
+ "code": "dsb",
+ "name": "Lower Sorbian"
+ },
+ "lu": {
+ "code": "lu",
+ "name": "Luba-Katanga"
+ },
+ "luo": {
+ "code": "luo",
+ "name": "Luo"
+ },
+ "lb": {
+ "code": "lb",
+ "name": "Luxembourgish"
+ },
+ "luy": {
+ "code": "luy",
+ "name": "Luyia"
+ },
+ "mk": {
+ "code": "mk",
+ "name": "Macedonian"
+ },
+ "jmc": {
+ "code": "jmc",
+ "name": "Machame"
+ },
+ "mgh": {
+ "code": "mgh",
+ "name": "Makhuwa-Meetto"
+ },
+ "kde": {
+ "code": "kde",
+ "name": "Makonde"
+ },
+ "mg": {
+ "code": "mg",
+ "name": "Malagasy"
+ },
+ "ml": {
+ "code": "ml",
+ "name": "Malayalam"
+ },
+ "mt": {
+ "code": "mt",
+ "name": "Maltese"
+ },
+ "mr": {
+ "code": "mr",
+ "name": "Marathi"
+ },
+ "mas": {
+ "code": "mas",
+ "name": "Masai"
+ },
+ "mer": {
+ "code": "mer",
+ "name": "Meru"
+ },
+ "mn": {
+ "code": "mn",
+ "name": "Mongolian"
+ },
+ "mfe": {
+ "code": "mfe",
+ "name": "Morisyen"
+ },
+ "mua": {
+ "code": "mua",
+ "name": "Mundang"
+ },
+ "naq": {
+ "code": "naq",
+ "name": "Nama"
+ },
+ "jgo": {
+ "code": "jgo",
+ "name": "Ngomba"
+ },
+ "nl-BE": {
+ "code": "nl-BE",
+ "name": "nl_BE"
+ },
+ "nd": {
+ "code": "nd",
+ "name": "North Ndebele"
+ },
+ "se": {
+ "code": "se",
+ "name": "Northern Sami"
+ },
+ "nb": {
+ "code": "nb",
+ "name": "Norwegian Bokmål"
+ },
+ "nn": {
+ "code": "nn",
+ "name": "Norwegian Nynorsk"
+ },
+ "nus": {
+ "code": "nus",
+ "name": "Nuer"
+ },
+ "nyn": {
+ "code": "nyn",
+ "name": "Nyankole"
+ },
+ "or": {
+ "code": "or",
+ "name": "Oriya"
+ },
+ "ps": {
+ "code": "ps",
+ "name": "Pashto"
+ },
+ "pt-BR": {
+ "code": "pt-BR",
+ "name": "pt_BR"
+ },
+ "pt-PT": {
+ "code": "pt-PT",
+ "name": "pt_PT"
+ },
+ "ro-MD": {
+ "code": "ro-MD",
+ "name": "ro_MD"
+ },
+ "rm": {
+ "code": "rm",
+ "name": "Romansh"
+ },
+ "rof": {
+ "code": "rof",
+ "name": "Rombo"
+ },
+ "rn": {
+ "code": "rn",
+ "name": "Rundi"
+ },
+ "rwk": {
+ "code": "rwk",
+ "name": "Rwa"
+ },
+ "saq": {
+ "code": "saq",
+ "name": "Samburu"
+ },
+ "sg": {
+ "code": "sg",
+ "name": "Sango"
+ },
+ "sbp": {
+ "code": "sbp",
+ "name": "Sangu"
+ },
+ "gd": {
+ "code": "gd",
+ "name": "Scottish Gaelic"
+ },
+ "seh": {
+ "code": "seh",
+ "name": "Sena"
+ },
+ "sr": {
+ "code": "sr",
+ "name": "Serbian"
+ },
+ "ksb": {
+ "code": "ksb",
+ "name": "Shambala"
+ },
+ "sn": {
+ "code": "sn",
+ "name": "Shona"
+ },
+ "si": {
+ "code": "si",
+ "name": "Sinhala"
+ },
+ "sk": {
+ "code": "sk",
+ "name": "Slovak"
+ },
+ "sl": {
+ "code": "sl",
+ "name": "Slovenian"
+ },
+ "xog": {
+ "code": "xog",
+ "name": "Soga"
+ },
+ "zgh": {
+ "code": "zgh",
+ "name": "Standard Moroccan Tamazight"
+ },
+ "sw": {
+ "code": "sw",
+ "name": "Swahili"
+ },
+ "gsw": {
+ "code": "gsw",
+ "name": "Swiss German"
+ },
+ "shi": {
+ "code": "shi",
+ "name": "Tachelhit"
+ },
+ "dav": {
+ "code": "dav",
+ "name": "Taita"
+ },
+ "twq": {
+ "code": "twq",
+ "name": "Tasawaq"
+ },
+ "te": {
+ "code": "te",
+ "name": "Telugu"
+ },
+ "teo": {
+ "code": "teo",
+ "name": "Teso"
+ },
+ "bo": {
+ "code": "bo",
+ "name": "Tibetan"
+ },
+ "ti": {
+ "code": "ti",
+ "name": "Tigrinya"
+ },
+ "to": {
+ "code": "to",
+ "name": "Tongan"
+ },
+ "hsb": {
+ "code": "hsb",
+ "name": "Upper Sorbian"
+ },
+ "ug": {
+ "code": "ug",
+ "name": "Uyghur"
+ },
+ "uz": {
+ "code": "uz",
+ "name": "Uzbek"
+ },
+ "vai": {
+ "code": "vai",
+ "name": "Vai"
+ },
+ "vun": {
+ "code": "vun",
+ "name": "Vunjo"
+ },
+ "wae": {
+ "code": "wae",
+ "name": "Walser"
+ },
+ "cy": {
+ "code": "cy",
+ "name": "Welsh"
+ },
+ "fy": {
+ "code": "fy",
+ "name": "Western Frisian"
+ },
+ "yav": {
+ "code": "yav",
+ "name": "Yangben"
+ },
+ "dje": {
+ "code": "dje",
+ "name": "Zarma"
+ },
+ "zh-Hans": {
+ "code": "zh-Hans",
+ "name": "zh_Hans"
+ },
+ "zh-Hant": {
+ "code": "zh-Hant",
+ "name": "zh_Hant"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/language/kk.json b/library/intl/resources/language/kk.json
new file mode 100644
index 000000000..ea44442f7
--- /dev/null
+++ b/library/intl/resources/language/kk.json
@@ -0,0 +1,738 @@
+{
+ "ast": {
+ "code": "ast",
+ "name": "Asturian"
+ },
+ "bas": {
+ "code": "bas",
+ "name": "Basaa"
+ },
+ "ksh": {
+ "code": "ksh",
+ "name": "Colognian"
+ },
+ "ewo": {
+ "code": "ewo",
+ "name": "Ewondo"
+ },
+ "fur": {
+ "code": "fur",
+ "name": "Friulian"
+ },
+ "ff": {
+ "code": "ff",
+ "name": "Fulah"
+ },
+ "wae": {
+ "code": "wae",
+ "name": "Walser"
+ },
+ "yav": {
+ "code": "yav",
+ "name": "Yangben"
+ },
+ "en-AU": {
+ "code": "en-AU",
+ "name": "авÑтралиÑлық ағылшын тілі"
+ },
+ "de-AT": {
+ "code": "de-AT",
+ "name": "авÑтриÑлық Ð½ÐµÐ¼Ñ–Ñ Ñ‚Ñ–Ð»Ñ–"
+ },
+ "agq": {
+ "code": "agq",
+ "name": "агхем"
+ },
+ "en": {
+ "code": "en",
+ "name": "ағылшын тілі"
+ },
+ "ak": {
+ "code": "ak",
+ "name": "акан"
+ },
+ "sq": {
+ "code": "sq",
+ "name": "албан"
+ },
+ "en-US": {
+ "code": "en-US",
+ "name": "американдық ағылшын тілі"
+ },
+ "am": {
+ "code": "am",
+ "name": "амхар"
+ },
+ "ar": {
+ "code": "ar",
+ "name": "араб тілі"
+ },
+ "hy": {
+ "code": "hy",
+ "name": "армÑн тілі"
+ },
+ "asa": {
+ "code": "asa",
+ "name": "аÑу"
+ },
+ "af": {
+ "code": "af",
+ "name": "африкаанÑ"
+ },
+ "az": {
+ "code": "az",
+ "name": "әзірбайжан тілі"
+ },
+ "bm": {
+ "code": "bm",
+ "name": "бамбара"
+ },
+ "eu": {
+ "code": "eu",
+ "name": "баÑк"
+ },
+ "fy": {
+ "code": "fy",
+ "name": "Ð±Ð°Ñ‚Ñ‹Ñ Ñ„Ñ€Ð¸Ð·"
+ },
+ "ksf": {
+ "code": "ksf",
+ "name": "бафиа"
+ },
+ "be": {
+ "code": "be",
+ "name": "Ð±ÐµÐ»Ð°Ñ€ÑƒÑ Ñ‚Ñ–Ð»Ñ–"
+ },
+ "bez": {
+ "code": "bez",
+ "name": "бена"
+ },
+ "bn": {
+ "code": "bn",
+ "name": "бенгал тілі"
+ },
+ "my": {
+ "code": "my",
+ "name": "бирман"
+ },
+ "brx": {
+ "code": "brx",
+ "name": "бодо тілі"
+ },
+ "bg": {
+ "code": "bg",
+ "name": "болгар тілі"
+ },
+ "bs": {
+ "code": "bs",
+ "name": "боÑÐ½Ð¸Ñ Ñ‚Ñ–Ð»Ñ–"
+ },
+ "pt-BR": {
+ "code": "pt-BR",
+ "name": "бразилиÑлық португал тілі"
+ },
+ "br": {
+ "code": "br",
+ "name": "бретон тілі"
+ },
+ "en-GB": {
+ "code": "en-GB",
+ "name": "британиÑлық ағылшын тілі"
+ },
+ "vai": {
+ "code": "vai",
+ "name": "вай"
+ },
+ "cy": {
+ "code": "cy",
+ "name": "валлий"
+ },
+ "hu": {
+ "code": "hu",
+ "name": "венгер"
+ },
+ "vun": {
+ "code": "vun",
+ "name": "вунджо"
+ },
+ "vi": {
+ "code": "vi",
+ "name": "вьетнам"
+ },
+ "gl": {
+ "code": "gl",
+ "name": "гали"
+ },
+ "lg": {
+ "code": "lg",
+ "name": "ганда"
+ },
+ "el": {
+ "code": "el",
+ "name": "грек тілі"
+ },
+ "ka": {
+ "code": "ka",
+ "name": "грузин тілі"
+ },
+ "gu": {
+ "code": "gu",
+ "name": "гуджарати"
+ },
+ "guz": {
+ "code": "guz",
+ "name": "гуÑии"
+ },
+ "da": {
+ "code": "da",
+ "name": "дат"
+ },
+ "zh-Hant": {
+ "code": "zh-Hant",
+ "name": "дәÑтүрлі қытай тілі"
+ },
+ "dz": {
+ "code": "dz",
+ "name": "дзонг-кÑ"
+ },
+ "dyo": {
+ "code": "dyo",
+ "name": "диола"
+ },
+ "ebu": {
+ "code": "ebu",
+ "name": "ембу"
+ },
+ "pt-PT": {
+ "code": "pt-PT",
+ "name": "еуропалық португал тілі"
+ },
+ "ja": {
+ "code": "ja",
+ "name": "жапон тілі"
+ },
+ "zh-Hans": {
+ "code": "zh-Hans",
+ "name": "жеңілдетілген қытай тілі"
+ },
+ "hsb": {
+ "code": "hsb",
+ "name": "жоғарғы лужица"
+ },
+ "dje": {
+ "code": "dje",
+ "name": "зарма"
+ },
+ "zu": {
+ "code": "zu",
+ "name": "зулу"
+ },
+ "es-ES": {
+ "code": "es-ES",
+ "name": "ибериÑлық иÑпан тілі"
+ },
+ "he": {
+ "code": "he",
+ "name": "иврит"
+ },
+ "id": {
+ "code": "id",
+ "name": "индонез тілі"
+ },
+ "ga": {
+ "code": "ga",
+ "name": "ирланд тілі"
+ },
+ "is": {
+ "code": "is",
+ "name": "иÑланд"
+ },
+ "es": {
+ "code": "es",
+ "name": "иÑпан тілі"
+ },
+ "it": {
+ "code": "it",
+ "name": "итальÑн тілі"
+ },
+ "yo": {
+ "code": "yo",
+ "name": "йоруба"
+ },
+ "kab": {
+ "code": "kab",
+ "name": "кабил"
+ },
+ "kea": {
+ "code": "kea",
+ "name": "кабувердиана"
+ },
+ "kl": {
+ "code": "kl",
+ "name": "калаалиÑут"
+ },
+ "kln": {
+ "code": "kln",
+ "name": "каленжин"
+ },
+ "kam": {
+ "code": "kam",
+ "name": "камба"
+ },
+ "en-CA": {
+ "code": "en-CA",
+ "name": "канадалық ағылшын тілі"
+ },
+ "fr-CA": {
+ "code": "fr-CA",
+ "name": "канадалық француз тілі"
+ },
+ "kn": {
+ "code": "kn",
+ "name": "каннада"
+ },
+ "ca": {
+ "code": "ca",
+ "name": "каталан"
+ },
+ "ks": {
+ "code": "ks",
+ "name": "кашмир тілі"
+ },
+ "ko": {
+ "code": "ko",
+ "name": "ÐºÓ™Ñ€Ñ–Ñ Ñ‚Ñ–Ð»Ñ–"
+ },
+ "nmg": {
+ "code": "nmg",
+ "name": "кваÑио"
+ },
+ "cgg": {
+ "code": "cgg",
+ "name": "кига"
+ },
+ "ki": {
+ "code": "ki",
+ "name": "кикуйю"
+ },
+ "khq": {
+ "code": "khq",
+ "name": "койра чини"
+ },
+ "ses": {
+ "code": "ses",
+ "name": "койраборо Ñенни"
+ },
+ "swc": {
+ "code": "swc",
+ "name": "конго Ñуахили тілі"
+ },
+ "km": {
+ "code": "km",
+ "name": "кхмер"
+ },
+ "kk": {
+ "code": "kk",
+ "name": "қазақ тілі"
+ },
+ "ar-001": {
+ "code": "ar-001",
+ "name": "қазіргі Ñтандартты араб тілі"
+ },
+ "ky": {
+ "code": "ky",
+ "name": "қырғыз тілі"
+ },
+ "zh": {
+ "code": "zh",
+ "name": "қытай тілі"
+ },
+ "lag": {
+ "code": "lag",
+ "name": "ланги тілі"
+ },
+ "lo": {
+ "code": "lo",
+ "name": "Ð»Ð°Ð¾Ñ Ñ‚Ñ–Ð»Ñ–"
+ },
+ "lv": {
+ "code": "lv",
+ "name": "латыш тілі"
+ },
+ "ln": {
+ "code": "ln",
+ "name": "лингала"
+ },
+ "lt": {
+ "code": "lt",
+ "name": "литва тілі"
+ },
+ "lu": {
+ "code": "lu",
+ "name": "луба-катанга"
+ },
+ "luo": {
+ "code": "luo",
+ "name": "луо"
+ },
+ "luy": {
+ "code": "luy",
+ "name": "лухиа"
+ },
+ "lb": {
+ "code": "lb",
+ "name": "люкÑембург"
+ },
+ "mk": {
+ "code": "mk",
+ "name": "македон тілі"
+ },
+ "kde": {
+ "code": "kde",
+ "name": "маконде"
+ },
+ "mgh": {
+ "code": "mgh",
+ "name": "макуа-меетто"
+ },
+ "mg": {
+ "code": "mg",
+ "name": "малагаÑи"
+ },
+ "ms": {
+ "code": "ms",
+ "name": "малай"
+ },
+ "ml": {
+ "code": "ml",
+ "name": "малайÑлам"
+ },
+ "mt": {
+ "code": "mt",
+ "name": "мальта"
+ },
+ "mr": {
+ "code": "mr",
+ "name": "маратхи"
+ },
+ "zgh": {
+ "code": "zgh",
+ "name": "марокколық Ñтандартты тамазигхт"
+ },
+ "mas": {
+ "code": "mas",
+ "name": "маÑай"
+ },
+ "jmc": {
+ "code": "jmc",
+ "name": "мачаме"
+ },
+ "es-MX": {
+ "code": "es-MX",
+ "name": "мекÑикалық иÑпан тілі"
+ },
+ "mer": {
+ "code": "mer",
+ "name": "меру"
+ },
+ "ro-MD": {
+ "code": "ro-MD",
+ "name": "молдован тілі"
+ },
+ "mn": {
+ "code": "mn",
+ "name": "моңғол тілі"
+ },
+ "mfe": {
+ "code": "mfe",
+ "name": "мориÑиен"
+ },
+ "mua": {
+ "code": "mua",
+ "name": "мунданг"
+ },
+ "naq": {
+ "code": "naq",
+ "name": "нама"
+ },
+ "jgo": {
+ "code": "jgo",
+ "name": "нгомба"
+ },
+ "de": {
+ "code": "de",
+ "name": "Ð½ÐµÐ¼Ñ–Ñ Ñ‚Ñ–Ð»Ñ–"
+ },
+ "de-CH": {
+ "code": "de-CH",
+ "name": "Ð½ÐµÐ¼Ñ–Ñ Ñ‚Ñ–Ð»Ñ–Ð½Ñ–Ò£ швейцариÑлық диалекті"
+ },
+ "ne": {
+ "code": "ne",
+ "name": "непал"
+ },
+ "nyn": {
+ "code": "nyn",
+ "name": "нианколе"
+ },
+ "nl": {
+ "code": "nl",
+ "name": "нидерланд тілі"
+ },
+ "nb": {
+ "code": "nb",
+ "name": "норвегиÑлық букмол"
+ },
+ "nn": {
+ "code": "nn",
+ "name": "норвегиÑлық нинорÑк"
+ },
+ "nus": {
+ "code": "nus",
+ "name": "нуер"
+ },
+ "or": {
+ "code": "or",
+ "name": "ориÑ"
+ },
+ "tzm": {
+ "code": "tzm",
+ "name": "орталық Ð°Ñ‚Ð»Ð°Ñ Ñ‚Ð°Ð¼Ð°Ñагихт тілі"
+ },
+ "ru": {
+ "code": "ru",
+ "name": "Ð¾Ñ€Ñ‹Ñ Ñ‚Ñ–Ð»Ñ–"
+ },
+ "uz": {
+ "code": "uz",
+ "name": "өзбек"
+ },
+ "fa": {
+ "code": "fa",
+ "name": "парÑÑ‹ тілі"
+ },
+ "pa": {
+ "code": "pa",
+ "name": "пенджаб"
+ },
+ "pl": {
+ "code": "pl",
+ "name": "полÑк тілі"
+ },
+ "pt": {
+ "code": "pt",
+ "name": "португал тілі"
+ },
+ "ps": {
+ "code": "ps",
+ "name": "пушту"
+ },
+ "rm": {
+ "code": "rm",
+ "name": "романш"
+ },
+ "rof": {
+ "code": "rof",
+ "name": "ромбо"
+ },
+ "rwk": {
+ "code": "rwk",
+ "name": "руа"
+ },
+ "ro": {
+ "code": "ro",
+ "name": "румын"
+ },
+ "rn": {
+ "code": "rn",
+ "name": "рунди"
+ },
+ "saq": {
+ "code": "saq",
+ "name": "Ñамбуру"
+ },
+ "sg": {
+ "code": "sg",
+ "name": "Ñанго"
+ },
+ "sbp": {
+ "code": "sbp",
+ "name": "Ñангу"
+ },
+ "seh": {
+ "code": "seh",
+ "name": "Ñена"
+ },
+ "sr": {
+ "code": "sr",
+ "name": "Ñерб тілі"
+ },
+ "si": {
+ "code": "si",
+ "name": "Ñингал"
+ },
+ "sk": {
+ "code": "sk",
+ "name": "Ñловак"
+ },
+ "sl": {
+ "code": "sl",
+ "name": "Ñловен"
+ },
+ "xog": {
+ "code": "xog",
+ "name": "Ñога"
+ },
+ "nd": {
+ "code": "nd",
+ "name": "ÑолтүÑтік ндебел"
+ },
+ "se": {
+ "code": "se",
+ "name": "ÑолтүÑтік Ñами"
+ },
+ "gd": {
+ "code": "gd",
+ "name": "СолтүÑтік ШотландиÑ"
+ },
+ "so": {
+ "code": "so",
+ "name": "Ñомали"
+ },
+ "sw": {
+ "code": "sw",
+ "name": "Ñуахили"
+ },
+ "dav": {
+ "code": "dav",
+ "name": "таита"
+ },
+ "th": {
+ "code": "th",
+ "name": "тай"
+ },
+ "ta": {
+ "code": "ta",
+ "name": "тамил"
+ },
+ "twq": {
+ "code": "twq",
+ "name": "таÑавак"
+ },
+ "shi": {
+ "code": "shi",
+ "name": "ташелхит"
+ },
+ "te": {
+ "code": "te",
+ "name": "телугу"
+ },
+ "teo": {
+ "code": "teo",
+ "name": "теÑо"
+ },
+ "bo": {
+ "code": "bo",
+ "name": "тибет тілі"
+ },
+ "ti": {
+ "code": "ti",
+ "name": "тигриньÑ"
+ },
+ "to": {
+ "code": "to",
+ "name": "тонган"
+ },
+ "dsb": {
+ "code": "dsb",
+ "name": "төменгі лужица тілі"
+ },
+ "tr": {
+ "code": "tr",
+ "name": "түрік"
+ },
+ "uk": {
+ "code": "uk",
+ "name": "украин тілі"
+ },
+ "ur": {
+ "code": "ur",
+ "name": "урду"
+ },
+ "ug": {
+ "code": "ug",
+ "name": "ұйғыр тілі"
+ },
+ "fo": {
+ "code": "fo",
+ "name": "фарер"
+ },
+ "fil": {
+ "code": "fil",
+ "name": "филиппин"
+ },
+ "fi": {
+ "code": "fi",
+ "name": "фин"
+ },
+ "nl-BE": {
+ "code": "nl-BE",
+ "name": "фламанд тілі"
+ },
+ "fr": {
+ "code": "fr",
+ "name": "француз тілі"
+ },
+ "ha": {
+ "code": "ha",
+ "name": "хауÑа"
+ },
+ "hi": {
+ "code": "hi",
+ "name": "хинди"
+ },
+ "hr": {
+ "code": "hr",
+ "name": "хорват"
+ },
+ "chr": {
+ "code": "chr",
+ "name": "чероки тілі"
+ },
+ "cs": {
+ "code": "cs",
+ "name": "чех тілі"
+ },
+ "ksb": {
+ "code": "ksb",
+ "name": "шамбала"
+ },
+ "sv": {
+ "code": "sv",
+ "name": "швед"
+ },
+ "gsw": {
+ "code": "gsw",
+ "name": "швейцариÑлық Ð½ÐµÐ¼Ñ–Ñ Ñ‚Ñ–Ð»Ñ–"
+ },
+ "fr-CH": {
+ "code": "fr-CH",
+ "name": "швейцариÑлық француз тілі"
+ },
+ "sn": {
+ "code": "sn",
+ "name": "шона"
+ },
+ "ee": {
+ "code": "ee",
+ "name": "Ñве"
+ },
+ "eo": {
+ "code": "eo",
+ "name": "ÑÑперанто"
+ },
+ "et": {
+ "code": "et",
+ "name": "ÑÑтон тілі"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/language/kl.json b/library/intl/resources/language/kl.json
new file mode 100644
index 000000000..ceacc33f0
--- /dev/null
+++ b/library/intl/resources/language/kl.json
@@ -0,0 +1,738 @@
+{
+ "af": {
+ "code": "af",
+ "name": "Afrikaans"
+ },
+ "agq": {
+ "code": "agq",
+ "name": "Aghem"
+ },
+ "ak": {
+ "code": "ak",
+ "name": "Akan"
+ },
+ "sq": {
+ "code": "sq",
+ "name": "Albanian"
+ },
+ "am": {
+ "code": "am",
+ "name": "Amharic"
+ },
+ "ar-001": {
+ "code": "ar-001",
+ "name": "ar_001"
+ },
+ "ar": {
+ "code": "ar",
+ "name": "arabiamiusut"
+ },
+ "hy": {
+ "code": "hy",
+ "name": "Armenian"
+ },
+ "az": {
+ "code": "az",
+ "name": "aserbajdsjaniskisut"
+ },
+ "ast": {
+ "code": "ast",
+ "name": "Asturian"
+ },
+ "asa": {
+ "code": "asa",
+ "name": "Asu"
+ },
+ "ksf": {
+ "code": "ksf",
+ "name": "Bafia"
+ },
+ "bm": {
+ "code": "bm",
+ "name": "Bambara"
+ },
+ "bas": {
+ "code": "bas",
+ "name": "Basaa"
+ },
+ "eu": {
+ "code": "eu",
+ "name": "Basque"
+ },
+ "be": {
+ "code": "be",
+ "name": "Belarusian"
+ },
+ "bez": {
+ "code": "bez",
+ "name": "Bena"
+ },
+ "bn": {
+ "code": "bn",
+ "name": "bengalimiutut"
+ },
+ "brx": {
+ "code": "brx",
+ "name": "Bodo"
+ },
+ "bs": {
+ "code": "bs",
+ "name": "Bosnian"
+ },
+ "br": {
+ "code": "br",
+ "name": "Breton"
+ },
+ "bg": {
+ "code": "bg",
+ "name": "Bulgarian"
+ },
+ "my": {
+ "code": "my",
+ "name": "Burmese"
+ },
+ "ca": {
+ "code": "ca",
+ "name": "Catalan"
+ },
+ "tzm": {
+ "code": "tzm",
+ "name": "Central Atlas Tamazight"
+ },
+ "chr": {
+ "code": "chr",
+ "name": "Cherokee"
+ },
+ "cgg": {
+ "code": "cgg",
+ "name": "Chiga"
+ },
+ "ksh": {
+ "code": "ksh",
+ "name": "Colognian"
+ },
+ "swc": {
+ "code": "swc",
+ "name": "Congo Swahili"
+ },
+ "hr": {
+ "code": "hr",
+ "name": "Croatian"
+ },
+ "de-AT": {
+ "code": "de-AT",
+ "name": "de_AT"
+ },
+ "de-CH": {
+ "code": "de-CH",
+ "name": "de_CH"
+ },
+ "dz": {
+ "code": "dz",
+ "name": "Dzongkha"
+ },
+ "ebu": {
+ "code": "ebu",
+ "name": "Embu"
+ },
+ "en-AU": {
+ "code": "en-AU",
+ "name": "en_AU"
+ },
+ "en-CA": {
+ "code": "en-CA",
+ "name": "en_CA"
+ },
+ "en-GB": {
+ "code": "en-GB",
+ "name": "en_GB"
+ },
+ "en-US": {
+ "code": "en-US",
+ "name": "en_US"
+ },
+ "es-ES": {
+ "code": "es-ES",
+ "name": "es_ES"
+ },
+ "es-MX": {
+ "code": "es-MX",
+ "name": "es_MX"
+ },
+ "eo": {
+ "code": "eo",
+ "name": "esperanto"
+ },
+ "et": {
+ "code": "et",
+ "name": "estlandimiutut"
+ },
+ "ee": {
+ "code": "ee",
+ "name": "Ewe"
+ },
+ "ewo": {
+ "code": "ewo",
+ "name": "Ewondo"
+ },
+ "fil": {
+ "code": "fil",
+ "name": "Filipino"
+ },
+ "fi": {
+ "code": "fi",
+ "name": "finlandimiutut"
+ },
+ "fr-CA": {
+ "code": "fr-CA",
+ "name": "fr_CA"
+ },
+ "fr-CH": {
+ "code": "fr-CH",
+ "name": "fr_CH"
+ },
+ "fr": {
+ "code": "fr",
+ "name": "franskisut"
+ },
+ "fur": {
+ "code": "fur",
+ "name": "Friulian"
+ },
+ "ff": {
+ "code": "ff",
+ "name": "Fulah"
+ },
+ "gl": {
+ "code": "gl",
+ "name": "Galician"
+ },
+ "lg": {
+ "code": "lg",
+ "name": "Ganda"
+ },
+ "ka": {
+ "code": "ka",
+ "name": "Georgian"
+ },
+ "el": {
+ "code": "el",
+ "name": "Greek"
+ },
+ "gu": {
+ "code": "gu",
+ "name": "Gujarati"
+ },
+ "guz": {
+ "code": "guz",
+ "name": "Gusii"
+ },
+ "ha": {
+ "code": "ha",
+ "name": "Hausa"
+ },
+ "he": {
+ "code": "he",
+ "name": "hebraimiutut"
+ },
+ "hi": {
+ "code": "hi",
+ "name": "hindimiutut"
+ },
+ "nl": {
+ "code": "nl",
+ "name": "hollandimiutut"
+ },
+ "hu": {
+ "code": "hu",
+ "name": "Hungarian"
+ },
+ "id": {
+ "code": "id",
+ "name": "indonesiamiutut"
+ },
+ "ga": {
+ "code": "ga",
+ "name": "irlandimiutut"
+ },
+ "is": {
+ "code": "is",
+ "name": "islandimiusut"
+ },
+ "it": {
+ "code": "it",
+ "name": "italiamiutut"
+ },
+ "ja": {
+ "code": "ja",
+ "name": "japanimiusut"
+ },
+ "dyo": {
+ "code": "dyo",
+ "name": "Jola-Fonyi"
+ },
+ "kea": {
+ "code": "kea",
+ "name": "Kabuverdianu"
+ },
+ "kab": {
+ "code": "kab",
+ "name": "Kabyle"
+ },
+ "kl": {
+ "code": "kl",
+ "name": "kalaallisut"
+ },
+ "kln": {
+ "code": "kln",
+ "name": "Kalenjin"
+ },
+ "kam": {
+ "code": "kam",
+ "name": "Kamba"
+ },
+ "kn": {
+ "code": "kn",
+ "name": "Kannada"
+ },
+ "ks": {
+ "code": "ks",
+ "name": "Kashmiri"
+ },
+ "kk": {
+ "code": "kk",
+ "name": "Kazakh"
+ },
+ "km": {
+ "code": "km",
+ "name": "Khmer"
+ },
+ "ki": {
+ "code": "ki",
+ "name": "Kikuyu"
+ },
+ "zh": {
+ "code": "zh",
+ "name": "kineserisut"
+ },
+ "ko": {
+ "code": "ko",
+ "name": "koreamiusut"
+ },
+ "khq": {
+ "code": "khq",
+ "name": "Koyra Chiini"
+ },
+ "ses": {
+ "code": "ses",
+ "name": "Koyraboro Senni"
+ },
+ "nmg": {
+ "code": "nmg",
+ "name": "Kwasio"
+ },
+ "ky": {
+ "code": "ky",
+ "name": "Kyrgyz"
+ },
+ "lag": {
+ "code": "lag",
+ "name": "Langi"
+ },
+ "lo": {
+ "code": "lo",
+ "name": "Lao"
+ },
+ "lv": {
+ "code": "lv",
+ "name": "letlandimiutut"
+ },
+ "ln": {
+ "code": "ln",
+ "name": "Lingala"
+ },
+ "lt": {
+ "code": "lt",
+ "name": "litauenimiutut"
+ },
+ "dsb": {
+ "code": "dsb",
+ "name": "Lower Sorbian"
+ },
+ "lu": {
+ "code": "lu",
+ "name": "Luba-Katanga"
+ },
+ "luo": {
+ "code": "luo",
+ "name": "Luo"
+ },
+ "lb": {
+ "code": "lb",
+ "name": "Luxembourgish"
+ },
+ "luy": {
+ "code": "luy",
+ "name": "Luyia"
+ },
+ "mk": {
+ "code": "mk",
+ "name": "Macedonian"
+ },
+ "jmc": {
+ "code": "jmc",
+ "name": "Machame"
+ },
+ "mgh": {
+ "code": "mgh",
+ "name": "Makhuwa-Meetto"
+ },
+ "kde": {
+ "code": "kde",
+ "name": "Makonde"
+ },
+ "mg": {
+ "code": "mg",
+ "name": "malagassiskisut"
+ },
+ "ms": {
+ "code": "ms",
+ "name": "Malay"
+ },
+ "ml": {
+ "code": "ml",
+ "name": "Malayalam"
+ },
+ "mt": {
+ "code": "mt",
+ "name": "Maltese"
+ },
+ "mr": {
+ "code": "mr",
+ "name": "Marathi"
+ },
+ "mas": {
+ "code": "mas",
+ "name": "Masai"
+ },
+ "mer": {
+ "code": "mer",
+ "name": "Meru"
+ },
+ "mn": {
+ "code": "mn",
+ "name": "Mongolian"
+ },
+ "mfe": {
+ "code": "mfe",
+ "name": "Morisyen"
+ },
+ "mua": {
+ "code": "mua",
+ "name": "Mundang"
+ },
+ "naq": {
+ "code": "naq",
+ "name": "Nama"
+ },
+ "ne": {
+ "code": "ne",
+ "name": "Nepali"
+ },
+ "jgo": {
+ "code": "jgo",
+ "name": "Ngomba"
+ },
+ "nl-BE": {
+ "code": "nl-BE",
+ "name": "nl_BE"
+ },
+ "nd": {
+ "code": "nd",
+ "name": "North Ndebele"
+ },
+ "se": {
+ "code": "se",
+ "name": "Northern Sami"
+ },
+ "nb": {
+ "code": "nb",
+ "name": "Norwegian Bokmål"
+ },
+ "nn": {
+ "code": "nn",
+ "name": "Norwegian Nynorsk"
+ },
+ "nus": {
+ "code": "nus",
+ "name": "Nuer"
+ },
+ "nyn": {
+ "code": "nyn",
+ "name": "Nyankole"
+ },
+ "or": {
+ "code": "or",
+ "name": "Oriya"
+ },
+ "ps": {
+ "code": "ps",
+ "name": "pashtomiutut"
+ },
+ "fa": {
+ "code": "fa",
+ "name": "persiskisut"
+ },
+ "pl": {
+ "code": "pl",
+ "name": "polenimiutut"
+ },
+ "pt": {
+ "code": "pt",
+ "name": "portugalimiutut"
+ },
+ "pt-BR": {
+ "code": "pt-BR",
+ "name": "pt_BR"
+ },
+ "pt-PT": {
+ "code": "pt-PT",
+ "name": "pt_PT"
+ },
+ "pa": {
+ "code": "pa",
+ "name": "Punjabi"
+ },
+ "da": {
+ "code": "da",
+ "name": "qallunaatut"
+ },
+ "ro-MD": {
+ "code": "ro-MD",
+ "name": "ro_MD"
+ },
+ "rm": {
+ "code": "rm",
+ "name": "Romansh"
+ },
+ "rof": {
+ "code": "rof",
+ "name": "Rombo"
+ },
+ "ro": {
+ "code": "ro",
+ "name": "rumænimiutut"
+ },
+ "rn": {
+ "code": "rn",
+ "name": "Rundi"
+ },
+ "ru": {
+ "code": "ru",
+ "name": "russisut"
+ },
+ "rwk": {
+ "code": "rwk",
+ "name": "Rwa"
+ },
+ "saq": {
+ "code": "saq",
+ "name": "Samburu"
+ },
+ "sg": {
+ "code": "sg",
+ "name": "Sango"
+ },
+ "sbp": {
+ "code": "sbp",
+ "name": "Sangu"
+ },
+ "fo": {
+ "code": "fo",
+ "name": "savalimmiutut"
+ },
+ "gd": {
+ "code": "gd",
+ "name": "Scottish Gaelic"
+ },
+ "seh": {
+ "code": "seh",
+ "name": "Sena"
+ },
+ "sr": {
+ "code": "sr",
+ "name": "Serbian"
+ },
+ "ksb": {
+ "code": "ksb",
+ "name": "Shambala"
+ },
+ "sn": {
+ "code": "sn",
+ "name": "Shona"
+ },
+ "si": {
+ "code": "si",
+ "name": "Sinhala"
+ },
+ "sk": {
+ "code": "sk",
+ "name": "slovakimiusut"
+ },
+ "sl": {
+ "code": "sl",
+ "name": "Slovenian"
+ },
+ "xog": {
+ "code": "xog",
+ "name": "Soga"
+ },
+ "so": {
+ "code": "so",
+ "name": "Somali"
+ },
+ "es": {
+ "code": "es",
+ "name": "spanskisut"
+ },
+ "zgh": {
+ "code": "zgh",
+ "name": "Standard Moroccan Tamazight"
+ },
+ "sv": {
+ "code": "sv",
+ "name": "svenskisut"
+ },
+ "sw": {
+ "code": "sw",
+ "name": "swahilimiutut"
+ },
+ "gsw": {
+ "code": "gsw",
+ "name": "Swiss German"
+ },
+ "shi": {
+ "code": "shi",
+ "name": "Tachelhit"
+ },
+ "dav": {
+ "code": "dav",
+ "name": "Taita"
+ },
+ "ta": {
+ "code": "ta",
+ "name": "Tamil"
+ },
+ "twq": {
+ "code": "twq",
+ "name": "Tasawaq"
+ },
+ "te": {
+ "code": "te",
+ "name": "Telugu"
+ },
+ "teo": {
+ "code": "teo",
+ "name": "Teso"
+ },
+ "th": {
+ "code": "th",
+ "name": "thailandimiutut"
+ },
+ "bo": {
+ "code": "bo",
+ "name": "Tibetan"
+ },
+ "ti": {
+ "code": "ti",
+ "name": "Tigrinya"
+ },
+ "cs": {
+ "code": "cs",
+ "name": "tjekkiamut"
+ },
+ "to": {
+ "code": "to",
+ "name": "Tongan"
+ },
+ "en": {
+ "code": "en",
+ "name": "tuluttut"
+ },
+ "tr": {
+ "code": "tr",
+ "name": "tyrkiskisut"
+ },
+ "de": {
+ "code": "de",
+ "name": "tyskisut"
+ },
+ "uk": {
+ "code": "uk",
+ "name": "ukrainimiusut"
+ },
+ "hsb": {
+ "code": "hsb",
+ "name": "Upper Sorbian"
+ },
+ "ur": {
+ "code": "ur",
+ "name": "urdumiutut"
+ },
+ "ug": {
+ "code": "ug",
+ "name": "Uyghur"
+ },
+ "uz": {
+ "code": "uz",
+ "name": "Uzbek"
+ },
+ "vai": {
+ "code": "vai",
+ "name": "Vai"
+ },
+ "vi": {
+ "code": "vi",
+ "name": "vietnamimiusut"
+ },
+ "vun": {
+ "code": "vun",
+ "name": "Vunjo"
+ },
+ "wae": {
+ "code": "wae",
+ "name": "Walser"
+ },
+ "cy": {
+ "code": "cy",
+ "name": "Welsh"
+ },
+ "fy": {
+ "code": "fy",
+ "name": "Western Frisian"
+ },
+ "yav": {
+ "code": "yav",
+ "name": "Yangben"
+ },
+ "yo": {
+ "code": "yo",
+ "name": "Yoruba"
+ },
+ "dje": {
+ "code": "dje",
+ "name": "Zarma"
+ },
+ "zh-Hans": {
+ "code": "zh-Hans",
+ "name": "zh_Hans"
+ },
+ "zh-Hant": {
+ "code": "zh-Hant",
+ "name": "zh_Hant"
+ },
+ "zu": {
+ "code": "zu",
+ "name": "Zulu"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/language/kln.json b/library/intl/resources/language/kln.json
new file mode 100644
index 000000000..d0b5a0cda
--- /dev/null
+++ b/library/intl/resources/language/kln.json
@@ -0,0 +1,738 @@
+{
+ "af": {
+ "code": "af",
+ "name": "Afrikaans"
+ },
+ "agq": {
+ "code": "agq",
+ "name": "Aghem"
+ },
+ "sq": {
+ "code": "sq",
+ "name": "Albanian"
+ },
+ "ar-001": {
+ "code": "ar-001",
+ "name": "ar_001"
+ },
+ "hy": {
+ "code": "hy",
+ "name": "Armenian"
+ },
+ "ast": {
+ "code": "ast",
+ "name": "Asturian"
+ },
+ "asa": {
+ "code": "asa",
+ "name": "Asu"
+ },
+ "az": {
+ "code": "az",
+ "name": "Azerbaijani"
+ },
+ "ksf": {
+ "code": "ksf",
+ "name": "Bafia"
+ },
+ "bm": {
+ "code": "bm",
+ "name": "Bambara"
+ },
+ "bas": {
+ "code": "bas",
+ "name": "Basaa"
+ },
+ "eu": {
+ "code": "eu",
+ "name": "Basque"
+ },
+ "bez": {
+ "code": "bez",
+ "name": "Bena"
+ },
+ "brx": {
+ "code": "brx",
+ "name": "Bodo"
+ },
+ "bs": {
+ "code": "bs",
+ "name": "Bosnian"
+ },
+ "br": {
+ "code": "br",
+ "name": "Breton"
+ },
+ "ca": {
+ "code": "ca",
+ "name": "Catalan"
+ },
+ "tzm": {
+ "code": "tzm",
+ "name": "Central Atlas Tamazight"
+ },
+ "chr": {
+ "code": "chr",
+ "name": "Cherokee"
+ },
+ "cgg": {
+ "code": "cgg",
+ "name": "Chiga"
+ },
+ "ksh": {
+ "code": "ksh",
+ "name": "Colognian"
+ },
+ "swc": {
+ "code": "swc",
+ "name": "Congo Swahili"
+ },
+ "hr": {
+ "code": "hr",
+ "name": "Croatian"
+ },
+ "da": {
+ "code": "da",
+ "name": "Danish"
+ },
+ "de-AT": {
+ "code": "de-AT",
+ "name": "de_AT"
+ },
+ "de-CH": {
+ "code": "de-CH",
+ "name": "de_CH"
+ },
+ "dz": {
+ "code": "dz",
+ "name": "Dzongkha"
+ },
+ "ebu": {
+ "code": "ebu",
+ "name": "Embu"
+ },
+ "en-AU": {
+ "code": "en-AU",
+ "name": "en_AU"
+ },
+ "en-CA": {
+ "code": "en-CA",
+ "name": "en_CA"
+ },
+ "en-GB": {
+ "code": "en-GB",
+ "name": "en_GB"
+ },
+ "en-US": {
+ "code": "en-US",
+ "name": "en_US"
+ },
+ "es-ES": {
+ "code": "es-ES",
+ "name": "es_ES"
+ },
+ "es-MX": {
+ "code": "es-MX",
+ "name": "es_MX"
+ },
+ "eo": {
+ "code": "eo",
+ "name": "Esperanto"
+ },
+ "et": {
+ "code": "et",
+ "name": "Estonian"
+ },
+ "ee": {
+ "code": "ee",
+ "name": "Ewe"
+ },
+ "ewo": {
+ "code": "ewo",
+ "name": "Ewondo"
+ },
+ "fo": {
+ "code": "fo",
+ "name": "Faroese"
+ },
+ "fil": {
+ "code": "fil",
+ "name": "Filipino"
+ },
+ "fi": {
+ "code": "fi",
+ "name": "Finnish"
+ },
+ "fr-CA": {
+ "code": "fr-CA",
+ "name": "fr_CA"
+ },
+ "fr-CH": {
+ "code": "fr-CH",
+ "name": "fr_CH"
+ },
+ "fur": {
+ "code": "fur",
+ "name": "Friulian"
+ },
+ "ff": {
+ "code": "ff",
+ "name": "Fulah"
+ },
+ "gl": {
+ "code": "gl",
+ "name": "Galician"
+ },
+ "lg": {
+ "code": "lg",
+ "name": "Ganda"
+ },
+ "ka": {
+ "code": "ka",
+ "name": "Georgian"
+ },
+ "gu": {
+ "code": "gu",
+ "name": "Gujarati"
+ },
+ "guz": {
+ "code": "guz",
+ "name": "Gusii"
+ },
+ "he": {
+ "code": "he",
+ "name": "Hebrew"
+ },
+ "is": {
+ "code": "is",
+ "name": "Icelandic"
+ },
+ "ga": {
+ "code": "ga",
+ "name": "Irish"
+ },
+ "dyo": {
+ "code": "dyo",
+ "name": "Jola-Fonyi"
+ },
+ "kea": {
+ "code": "kea",
+ "name": "Kabuverdianu"
+ },
+ "kab": {
+ "code": "kab",
+ "name": "Kabyle"
+ },
+ "kl": {
+ "code": "kl",
+ "name": "Kalaallisut"
+ },
+ "kln": {
+ "code": "kln",
+ "name": "Kalenjin"
+ },
+ "kam": {
+ "code": "kam",
+ "name": "Kamba"
+ },
+ "kn": {
+ "code": "kn",
+ "name": "Kannada"
+ },
+ "ks": {
+ "code": "ks",
+ "name": "Kashmiri"
+ },
+ "kk": {
+ "code": "kk",
+ "name": "Kazakh"
+ },
+ "ki": {
+ "code": "ki",
+ "name": "Kikuyu"
+ },
+ "khq": {
+ "code": "khq",
+ "name": "Koyra Chiini"
+ },
+ "ses": {
+ "code": "ses",
+ "name": "Koyraboro Senni"
+ },
+ "ak": {
+ "code": "ak",
+ "name": "kutitab Aka"
+ },
+ "am": {
+ "code": "am",
+ "name": "kutitab Amariek"
+ },
+ "ar": {
+ "code": "ar",
+ "name": "kutitab Arabuk"
+ },
+ "be": {
+ "code": "be",
+ "name": "kutitab Belarusa"
+ },
+ "bn": {
+ "code": "bn",
+ "name": "kutitab Bengali"
+ },
+ "nl": {
+ "code": "nl",
+ "name": "kutitab Boa"
+ },
+ "bg": {
+ "code": "bg",
+ "name": "kutitab Bulgaria"
+ },
+ "my": {
+ "code": "my",
+ "name": "kutitab Burma"
+ },
+ "cs": {
+ "code": "cs",
+ "name": "kutitab Chek"
+ },
+ "de": {
+ "code": "de",
+ "name": "kutitab Chermani"
+ },
+ "zh": {
+ "code": "zh",
+ "name": "kutitab China"
+ },
+ "es": {
+ "code": "es",
+ "name": "kutitab Espianik"
+ },
+ "el": {
+ "code": "el",
+ "name": "kutitab Greece"
+ },
+ "hu": {
+ "code": "hu",
+ "name": "kutitab Hangari"
+ },
+ "ha": {
+ "code": "ha",
+ "name": "kutitab Hausa"
+ },
+ "id": {
+ "code": "id",
+ "name": "kutitab Indonesia"
+ },
+ "km": {
+ "code": "km",
+ "name": "kutitab Kher nebo Kwen"
+ },
+ "fr": {
+ "code": "fr",
+ "name": "kutitab Kifaransa"
+ },
+ "ko": {
+ "code": "ko",
+ "name": "kutitab Korea"
+ },
+ "hi": {
+ "code": "hi",
+ "name": "kutitab Maindiik"
+ },
+ "ms": {
+ "code": "ms",
+ "name": "kutitab Malay"
+ },
+ "ne": {
+ "code": "ne",
+ "name": "kutitab Nepali"
+ },
+ "fa": {
+ "code": "fa",
+ "name": "kutitab Persia"
+ },
+ "pt": {
+ "code": "pt",
+ "name": "kutitab Portugal"
+ },
+ "pa": {
+ "code": "pa",
+ "name": "kutitab Punjab"
+ },
+ "ro": {
+ "code": "ro",
+ "name": "kutitab Romaniek"
+ },
+ "ru": {
+ "code": "ru",
+ "name": "kutitab Russia"
+ },
+ "so": {
+ "code": "so",
+ "name": "kutitab Somaliek"
+ },
+ "sv": {
+ "code": "sv",
+ "name": "kutitab Sweden"
+ },
+ "it": {
+ "code": "it",
+ "name": "kutitab Talianek"
+ },
+ "ta": {
+ "code": "ta",
+ "name": "kutitab Tamil"
+ },
+ "th": {
+ "code": "th",
+ "name": "kutitab Thailand"
+ },
+ "tr": {
+ "code": "tr",
+ "name": "kutitab Turkey"
+ },
+ "en": {
+ "code": "en",
+ "name": "kutitab Uingeresa"
+ },
+ "uk": {
+ "code": "uk",
+ "name": "kutitab Ukraine"
+ },
+ "ur": {
+ "code": "ur",
+ "name": "kutitab Urdu"
+ },
+ "vi": {
+ "code": "vi",
+ "name": "kutitab Vietnam"
+ },
+ "yo": {
+ "code": "yo",
+ "name": "kutitab Yoruba"
+ },
+ "zu": {
+ "code": "zu",
+ "name": "kutitab Zulu"
+ },
+ "ja": {
+ "code": "ja",
+ "name": "kutitap Japan"
+ },
+ "pl": {
+ "code": "pl",
+ "name": "kutitap Poland"
+ },
+ "nmg": {
+ "code": "nmg",
+ "name": "Kwasio"
+ },
+ "ky": {
+ "code": "ky",
+ "name": "Kyrgyz"
+ },
+ "lag": {
+ "code": "lag",
+ "name": "Langi"
+ },
+ "lo": {
+ "code": "lo",
+ "name": "Lao"
+ },
+ "lv": {
+ "code": "lv",
+ "name": "Latvian"
+ },
+ "ln": {
+ "code": "ln",
+ "name": "Lingala"
+ },
+ "lt": {
+ "code": "lt",
+ "name": "Lithuanian"
+ },
+ "dsb": {
+ "code": "dsb",
+ "name": "Lower Sorbian"
+ },
+ "lu": {
+ "code": "lu",
+ "name": "Luba-Katanga"
+ },
+ "luo": {
+ "code": "luo",
+ "name": "Luo"
+ },
+ "lb": {
+ "code": "lb",
+ "name": "Luxembourgish"
+ },
+ "luy": {
+ "code": "luy",
+ "name": "Luyia"
+ },
+ "mk": {
+ "code": "mk",
+ "name": "Macedonian"
+ },
+ "jmc": {
+ "code": "jmc",
+ "name": "Machame"
+ },
+ "mgh": {
+ "code": "mgh",
+ "name": "Makhuwa-Meetto"
+ },
+ "kde": {
+ "code": "kde",
+ "name": "Makonde"
+ },
+ "mg": {
+ "code": "mg",
+ "name": "Malagasy"
+ },
+ "ml": {
+ "code": "ml",
+ "name": "Malayalam"
+ },
+ "mt": {
+ "code": "mt",
+ "name": "Maltese"
+ },
+ "mr": {
+ "code": "mr",
+ "name": "Marathi"
+ },
+ "mas": {
+ "code": "mas",
+ "name": "Masai"
+ },
+ "mer": {
+ "code": "mer",
+ "name": "Meru"
+ },
+ "mn": {
+ "code": "mn",
+ "name": "Mongolian"
+ },
+ "mfe": {
+ "code": "mfe",
+ "name": "Morisyen"
+ },
+ "mua": {
+ "code": "mua",
+ "name": "Mundang"
+ },
+ "naq": {
+ "code": "naq",
+ "name": "Nama"
+ },
+ "jgo": {
+ "code": "jgo",
+ "name": "Ngomba"
+ },
+ "nl-BE": {
+ "code": "nl-BE",
+ "name": "nl_BE"
+ },
+ "nd": {
+ "code": "nd",
+ "name": "North Ndebele"
+ },
+ "se": {
+ "code": "se",
+ "name": "Northern Sami"
+ },
+ "nb": {
+ "code": "nb",
+ "name": "Norwegian Bokmål"
+ },
+ "nn": {
+ "code": "nn",
+ "name": "Norwegian Nynorsk"
+ },
+ "nus": {
+ "code": "nus",
+ "name": "Nuer"
+ },
+ "nyn": {
+ "code": "nyn",
+ "name": "Nyankole"
+ },
+ "or": {
+ "code": "or",
+ "name": "Oriya"
+ },
+ "ps": {
+ "code": "ps",
+ "name": "Pashto"
+ },
+ "pt-BR": {
+ "code": "pt-BR",
+ "name": "pt_BR"
+ },
+ "pt-PT": {
+ "code": "pt-PT",
+ "name": "pt_PT"
+ },
+ "ro-MD": {
+ "code": "ro-MD",
+ "name": "ro_MD"
+ },
+ "rm": {
+ "code": "rm",
+ "name": "Romansh"
+ },
+ "rof": {
+ "code": "rof",
+ "name": "Rombo"
+ },
+ "rn": {
+ "code": "rn",
+ "name": "Rundi"
+ },
+ "rwk": {
+ "code": "rwk",
+ "name": "Rwa"
+ },
+ "saq": {
+ "code": "saq",
+ "name": "Samburu"
+ },
+ "sg": {
+ "code": "sg",
+ "name": "Sango"
+ },
+ "sbp": {
+ "code": "sbp",
+ "name": "Sangu"
+ },
+ "gd": {
+ "code": "gd",
+ "name": "Scottish Gaelic"
+ },
+ "seh": {
+ "code": "seh",
+ "name": "Sena"
+ },
+ "sr": {
+ "code": "sr",
+ "name": "Serbian"
+ },
+ "ksb": {
+ "code": "ksb",
+ "name": "Shambala"
+ },
+ "sn": {
+ "code": "sn",
+ "name": "Shona"
+ },
+ "si": {
+ "code": "si",
+ "name": "Sinhala"
+ },
+ "sk": {
+ "code": "sk",
+ "name": "Slovak"
+ },
+ "sl": {
+ "code": "sl",
+ "name": "Slovenian"
+ },
+ "xog": {
+ "code": "xog",
+ "name": "Soga"
+ },
+ "zgh": {
+ "code": "zgh",
+ "name": "Standard Moroccan Tamazight"
+ },
+ "sw": {
+ "code": "sw",
+ "name": "Swahili"
+ },
+ "gsw": {
+ "code": "gsw",
+ "name": "Swiss German"
+ },
+ "shi": {
+ "code": "shi",
+ "name": "Tachelhit"
+ },
+ "dav": {
+ "code": "dav",
+ "name": "Taita"
+ },
+ "twq": {
+ "code": "twq",
+ "name": "Tasawaq"
+ },
+ "te": {
+ "code": "te",
+ "name": "Telugu"
+ },
+ "teo": {
+ "code": "teo",
+ "name": "Teso"
+ },
+ "bo": {
+ "code": "bo",
+ "name": "Tibetan"
+ },
+ "ti": {
+ "code": "ti",
+ "name": "Tigrinya"
+ },
+ "to": {
+ "code": "to",
+ "name": "Tongan"
+ },
+ "hsb": {
+ "code": "hsb",
+ "name": "Upper Sorbian"
+ },
+ "ug": {
+ "code": "ug",
+ "name": "Uyghur"
+ },
+ "uz": {
+ "code": "uz",
+ "name": "Uzbek"
+ },
+ "vai": {
+ "code": "vai",
+ "name": "Vai"
+ },
+ "vun": {
+ "code": "vun",
+ "name": "Vunjo"
+ },
+ "wae": {
+ "code": "wae",
+ "name": "Walser"
+ },
+ "cy": {
+ "code": "cy",
+ "name": "Welsh"
+ },
+ "fy": {
+ "code": "fy",
+ "name": "Western Frisian"
+ },
+ "yav": {
+ "code": "yav",
+ "name": "Yangben"
+ },
+ "dje": {
+ "code": "dje",
+ "name": "Zarma"
+ },
+ "zh-Hans": {
+ "code": "zh-Hans",
+ "name": "zh_Hans"
+ },
+ "zh-Hant": {
+ "code": "zh-Hant",
+ "name": "zh_Hant"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/language/km.json b/library/intl/resources/language/km.json
new file mode 100644
index 000000000..a3c64b503
--- /dev/null
+++ b/library/intl/resources/language/km.json
@@ -0,0 +1,738 @@
+{
+ "agq": {
+ "code": "agq",
+ "name": "Aghem"
+ },
+ "ak": {
+ "code": "ak",
+ "name": "Akan"
+ },
+ "ast": {
+ "code": "ast",
+ "name": "Asturian"
+ },
+ "asa": {
+ "code": "asa",
+ "name": "Asu"
+ },
+ "tzm": {
+ "code": "tzm",
+ "name": "Atlas Tamazight កណ្ដាល"
+ },
+ "ksf": {
+ "code": "ksf",
+ "name": "Bafia"
+ },
+ "bas": {
+ "code": "bas",
+ "name": "Basaa"
+ },
+ "bez": {
+ "code": "bez",
+ "name": "Bena"
+ },
+ "brx": {
+ "code": "brx",
+ "name": "Bodo"
+ },
+ "cgg": {
+ "code": "cgg",
+ "name": "Chiga"
+ },
+ "ksh": {
+ "code": "ksh",
+ "name": "Colognian"
+ },
+ "swc": {
+ "code": "swc",
+ "name": "Congo Swahili"
+ },
+ "ebu": {
+ "code": "ebu",
+ "name": "Embu"
+ },
+ "es-MX": {
+ "code": "es-MX",
+ "name": "es_MX"
+ },
+ "ee": {
+ "code": "ee",
+ "name": "Ewe"
+ },
+ "ewo": {
+ "code": "ewo",
+ "name": "Ewondo"
+ },
+ "fr-CA": {
+ "code": "fr-CA",
+ "name": "fr_CA"
+ },
+ "fr-CH": {
+ "code": "fr-CH",
+ "name": "fr_CH"
+ },
+ "fur": {
+ "code": "fur",
+ "name": "Friulian"
+ },
+ "ff": {
+ "code": "ff",
+ "name": "Fulah"
+ },
+ "lg": {
+ "code": "lg",
+ "name": "Ganda"
+ },
+ "guz": {
+ "code": "guz",
+ "name": "Gusii"
+ },
+ "dyo": {
+ "code": "dyo",
+ "name": "Jola-Fonyi"
+ },
+ "kea": {
+ "code": "kea",
+ "name": "Kabuverdianu"
+ },
+ "kab": {
+ "code": "kab",
+ "name": "Kabyle"
+ },
+ "kl": {
+ "code": "kl",
+ "name": "Kalaallisut"
+ },
+ "kln": {
+ "code": "kln",
+ "name": "Kalenjin"
+ },
+ "kam": {
+ "code": "kam",
+ "name": "Kamba"
+ },
+ "ki": {
+ "code": "ki",
+ "name": "Kikuyu"
+ },
+ "khq": {
+ "code": "khq",
+ "name": "Koyra Chiini"
+ },
+ "ses": {
+ "code": "ses",
+ "name": "Koyraboro Senni"
+ },
+ "nmg": {
+ "code": "nmg",
+ "name": "Kwasio"
+ },
+ "lag": {
+ "code": "lag",
+ "name": "Langi"
+ },
+ "dsb": {
+ "code": "dsb",
+ "name": "Lower Sorbian"
+ },
+ "lu": {
+ "code": "lu",
+ "name": "Luba-Katanga"
+ },
+ "luo": {
+ "code": "luo",
+ "name": "Luo"
+ },
+ "luy": {
+ "code": "luy",
+ "name": "Luyia"
+ },
+ "jmc": {
+ "code": "jmc",
+ "name": "Machame"
+ },
+ "mgh": {
+ "code": "mgh",
+ "name": "Makhuwa-Meetto"
+ },
+ "kde": {
+ "code": "kde",
+ "name": "Makonde"
+ },
+ "mas": {
+ "code": "mas",
+ "name": "Masai"
+ },
+ "mer": {
+ "code": "mer",
+ "name": "Meru"
+ },
+ "mfe": {
+ "code": "mfe",
+ "name": "Morisyen"
+ },
+ "mua": {
+ "code": "mua",
+ "name": "Mundang"
+ },
+ "naq": {
+ "code": "naq",
+ "name": "Nama"
+ },
+ "jgo": {
+ "code": "jgo",
+ "name": "Ngomba"
+ },
+ "nd": {
+ "code": "nd",
+ "name": "North Ndebele"
+ },
+ "nus": {
+ "code": "nus",
+ "name": "Nuer"
+ },
+ "nyn": {
+ "code": "nyn",
+ "name": "Nyankole"
+ },
+ "rof": {
+ "code": "rof",
+ "name": "Rombo"
+ },
+ "rwk": {
+ "code": "rwk",
+ "name": "Rwa"
+ },
+ "saq": {
+ "code": "saq",
+ "name": "Samburu"
+ },
+ "se": {
+ "code": "se",
+ "name": "Sami ភាគ​ážáž¶áž„​ជើង"
+ },
+ "sg": {
+ "code": "sg",
+ "name": "Sango"
+ },
+ "sbp": {
+ "code": "sbp",
+ "name": "Sangu"
+ },
+ "seh": {
+ "code": "seh",
+ "name": "Sena"
+ },
+ "ksb": {
+ "code": "ksb",
+ "name": "Shambala"
+ },
+ "sn": {
+ "code": "sn",
+ "name": "Shona"
+ },
+ "xog": {
+ "code": "xog",
+ "name": "Soga"
+ },
+ "shi": {
+ "code": "shi",
+ "name": "Tachelhit"
+ },
+ "dav": {
+ "code": "dav",
+ "name": "Taita"
+ },
+ "twq": {
+ "code": "twq",
+ "name": "Tasawaq"
+ },
+ "teo": {
+ "code": "teo",
+ "name": "Teso"
+ },
+ "hsb": {
+ "code": "hsb",
+ "name": "Upper Sorbian"
+ },
+ "vai": {
+ "code": "vai",
+ "name": "Vai"
+ },
+ "vun": {
+ "code": "vun",
+ "name": "Vunjo"
+ },
+ "wae": {
+ "code": "wae",
+ "name": "Walser"
+ },
+ "yav": {
+ "code": "yav",
+ "name": "Yangben"
+ },
+ "dje": {
+ "code": "dje",
+ "name": "Zarma"
+ },
+ "kn": {
+ "code": "kn",
+ "name": "កន្នដ"
+ },
+ "ca": {
+ "code": "ca",
+ "name": "កាážáž¶áž¡áž¶áž“"
+ },
+ "ks": {
+ "code": "ks",
+ "name": "កាស្មៀរ"
+ },
+ "kk": {
+ "code": "kk",
+ "name": "កាហ្សាក់ស្ážáž„់់"
+ },
+ "ko": {
+ "code": "ko",
+ "name": "កូរ៉áŸ"
+ },
+ "el": {
+ "code": "el",
+ "name": "ក្រិច"
+ },
+ "hr": {
+ "code": "hr",
+ "name": "ក្រូអាáž"
+ },
+ "km": {
+ "code": "km",
+ "name": "ážáŸ’មែរ"
+ },
+ "ky": {
+ "code": "ky",
+ "name": "គៀរហ្គីស្ážáž„់"
+ },
+ "zh": {
+ "code": "zh",
+ "name": "áž…áž·áž“"
+ },
+ "zh-Hans": {
+ "code": "zh-Hans",
+ "name": "ចិន​អក្សរ​កាážáŸ‹"
+ },
+ "zh-Hant": {
+ "code": "zh-Hant",
+ "name": "ចិន​អក្សរ​ពáŸáž‰"
+ },
+ "cs": {
+ "code": "cs",
+ "name": "ឆáŸáž€"
+ },
+ "chr": {
+ "code": "chr",
+ "name": "ឆáŸážšáž¼áž‚ី"
+ },
+ "ja": {
+ "code": "ja",
+ "name": "ជប៉ុន"
+ },
+ "da": {
+ "code": "da",
+ "name": "ដាណឺម៉ាក"
+ },
+ "ta": {
+ "code": "ta",
+ "name": "ážáž¶áž˜áž¸áž›"
+ },
+ "to": {
+ "code": "to",
+ "name": "ážáž»áž„ហ្គោ"
+ },
+ "te": {
+ "code": "te",
+ "name": "ážáŸáž›áž»áž‚áž»"
+ },
+ "th": {
+ "code": "th",
+ "name": "ážáŸƒ"
+ },
+ "bo": {
+ "code": "bo",
+ "name": "ទីបáŸ"
+ },
+ "ti": {
+ "code": "ti",
+ "name": "ទីរិនយា"
+ },
+ "tr": {
+ "code": "tr",
+ "name": "ទួរគី"
+ },
+ "nn": {
+ "code": "nn",
+ "name": "áž“áŸážšážœáŸ‚ស នីនូស"
+ },
+ "nb": {
+ "code": "nb",
+ "name": "áž“áŸážšážœáŸ‚ស បុកម៉ាល់"
+ },
+ "ne": {
+ "code": "ne",
+ "name": "áž“áŸáž”៉ាល់"
+ },
+ "bn": {
+ "code": "bn",
+ "name": "បង់ក្លាដែស"
+ },
+ "bm": {
+ "code": "bm",
+ "name": "បាម្បារា"
+ },
+ "fr": {
+ "code": "fr",
+ "name": "បារាំង"
+ },
+ "eu": {
+ "code": "eu",
+ "name": "បាស្កáŸ"
+ },
+ "ps": {
+ "code": "ps",
+ "name": "បាស្ážáž¼"
+ },
+ "pa": {
+ "code": "pa",
+ "name": "បឹនជាពិ"
+ },
+ "bg": {
+ "code": "bg",
+ "name": "ប៊ុលហ្ការី"
+ },
+ "bs": {
+ "code": "bs",
+ "name": "បូស្នី"
+ },
+ "pl": {
+ "code": "pl",
+ "name": "ប៉ូឡូញ"
+ },
+ "be": {
+ "code": "be",
+ "name": "áž”áŸáž¡áž¶ážšáž»ážŸáŸ’ស"
+ },
+ "br": {
+ "code": "br",
+ "name": "ប្រីស្ážáž»áž“"
+ },
+ "nl-BE": {
+ "code": "nl-BE",
+ "name": "ផ្លាមីស"
+ },
+ "pt": {
+ "code": "pt",
+ "name": "áž–áŸážšáž‘ុយហ្កាល់"
+ },
+ "pt-BR": {
+ "code": "pt-BR",
+ "name": "áž–áŸážšáž‘ុយហ្គាល់ ប្រáŸážŸáŸŠáž¸áž›"
+ },
+ "pt-PT": {
+ "code": "pt-PT",
+ "name": "áž–áŸážšáž‘ុយហ្គាល់ អឺរ៉ុប"
+ },
+ "dz": {
+ "code": "dz",
+ "name": "ភាសាប៊ូážáž¶áž“"
+ },
+ "ro-MD": {
+ "code": "ro-MD",
+ "name": "ភាសាម៉ុលដាវី"
+ },
+ "gd": {
+ "code": "gd",
+ "name": "ភាសាហ្កែលិគ (gd)"
+ },
+ "fa": {
+ "code": "fa",
+ "name": "ភឺសៀន"
+ },
+ "my": {
+ "code": "my",
+ "name": "ភូមា"
+ },
+ "mr": {
+ "code": "mr",
+ "name": "មរាធិ"
+ },
+ "ml": {
+ "code": "ml",
+ "name": "មលយាលáŸáž˜"
+ },
+ "zgh": {
+ "code": "zgh",
+ "name": "ម៉ារ៉ុក"
+ },
+ "mt": {
+ "code": "mt",
+ "name": "ម៉ាល់ážáž¶"
+ },
+ "mk": {
+ "code": "mk",
+ "name": "ម៉ាសáŸážŠáž¼áž“ី"
+ },
+ "mg": {
+ "code": "mg",
+ "name": "ម៉ាឡាហ្គាស៊ី"
+ },
+ "ms": {
+ "code": "ms",
+ "name": "ម៉ាឡáŸážŸáŸŠáž¸"
+ },
+ "mn": {
+ "code": "mn",
+ "name": "ម៉ុងហ្គោលី"
+ },
+ "yo": {
+ "code": "yo",
+ "name": "យរូបា"
+ },
+ "ru": {
+ "code": "ru",
+ "name": "រុស្ស៊ី"
+ },
+ "rn": {
+ "code": "rn",
+ "name": "រូន្ឌី"
+ },
+ "rm": {
+ "code": "rm",
+ "name": "រ៉ូម៉ង់"
+ },
+ "ro": {
+ "code": "ro",
+ "name": "រូម៉ានី"
+ },
+ "lt": {
+ "code": "lt",
+ "name": "លីទុយអានី"
+ },
+ "ln": {
+ "code": "ln",
+ "name": "លីនកាឡា"
+ },
+ "lb": {
+ "code": "lb",
+ "name": "លុចហ្សំបួរ"
+ },
+ "vi": {
+ "code": "vi",
+ "name": "វៀážážŽáž¶áž˜"
+ },
+ "cy": {
+ "code": "cy",
+ "name": "ážœáŸáž›"
+ },
+ "sv": {
+ "code": "sv",
+ "name": "ស៊ុយអែដ"
+ },
+ "so": {
+ "code": "so",
+ "name": "សូម៉ាលី"
+ },
+ "zu": {
+ "code": "zu",
+ "name": "សូលូ"
+ },
+ "sr": {
+ "code": "sr",
+ "name": "សើប"
+ },
+ "si": {
+ "code": "si",
+ "name": "ស្រីលង្កា"
+ },
+ "sk": {
+ "code": "sk",
+ "name": "ស្លូវ៉ាគី"
+ },
+ "sl": {
+ "code": "sl",
+ "name": "ស្លូវ៉ានី"
+ },
+ "sw": {
+ "code": "sw",
+ "name": "ស្វាហ៊ីលី"
+ },
+ "hi": {
+ "code": "hi",
+ "name": "ហិណ្ឌូ"
+ },
+ "hu": {
+ "code": "hu",
+ "name": "ហុងគ្រី"
+ },
+ "nl": {
+ "code": "nl",
+ "name": "ហុល្លង់"
+ },
+ "ha": {
+ "code": "ha",
+ "name": "ហូសា"
+ },
+ "gu": {
+ "code": "gu",
+ "name": "ហ្កុយ៉ារាទី"
+ },
+ "gl": {
+ "code": "gl",
+ "name": "ហ្គាលីស្យាន"
+ },
+ "fo": {
+ "code": "fo",
+ "name": "ហ្វារូស"
+ },
+ "fil": {
+ "code": "fil",
+ "name": "ហ្វីលីពីន"
+ },
+ "fi": {
+ "code": "fi",
+ "name": "ហ្វាំងឡង់"
+ },
+ "fy": {
+ "code": "fy",
+ "name": "ហ្វ្រីស៊ានážáž¶áž„លិច"
+ },
+ "ka": {
+ "code": "ka",
+ "name": "ហ្សក​ហ្ស៊ី"
+ },
+ "lv": {
+ "code": "lv",
+ "name": "ឡាážážœáž¸áž™áŸ‰áž¶"
+ },
+ "lo": {
+ "code": "lo",
+ "name": "ឡាវ"
+ },
+ "en": {
+ "code": "en",
+ "name": "អង់គ្លáŸážŸ"
+ },
+ "en-CA": {
+ "code": "en-CA",
+ "name": "អង់គ្លáŸážŸ កាណាដា"
+ },
+ "en-GB": {
+ "code": "en-GB",
+ "name": "អង់គ្លáŸážŸ ចក្រភព​អង់គ្លáŸážŸ"
+ },
+ "en-US": {
+ "code": "en-US",
+ "name": "អង់គ្លáŸážŸ អាមáŸážšáž·áž€"
+ },
+ "en-AU": {
+ "code": "en-AU",
+ "name": "អង់គ្លáŸážŸ អូស្ážáŸ’រាលី"
+ },
+ "am": {
+ "code": "am",
+ "name": "អាមហារីច"
+ },
+ "hy": {
+ "code": "hy",
+ "name": "អារមáŸáž“ី"
+ },
+ "ar": {
+ "code": "ar",
+ "name": "អារ៉ាប់"
+ },
+ "ar-001": {
+ "code": "ar-001",
+ "name": "អារ៉ាប់​ស្ážáž„់ដារ​ទំនើប"
+ },
+ "sq": {
+ "code": "sq",
+ "name": "អាល់បានី"
+ },
+ "de": {
+ "code": "de",
+ "name": "អាល្លឺម៉ង់"
+ },
+ "gsw": {
+ "code": "gsw",
+ "name": "អាល្លឺម៉ង ស្វីស"
+ },
+ "de-CH": {
+ "code": "de-CH",
+ "name": "អាល្លឺម៉ង់ ស្វីស"
+ },
+ "de-AT": {
+ "code": "de-AT",
+ "name": "អាល្លឺម៉ង់ អូទ្រីស"
+ },
+ "af": {
+ "code": "af",
+ "name": "អាហ្វ្រីកាអាន"
+ },
+ "az": {
+ "code": "az",
+ "name": "អាហ៊្សែរបែហ្សង់"
+ },
+ "id": {
+ "code": "id",
+ "name": "ឥណ្ឌូណáŸážŸáŸŠáž¸"
+ },
+ "it": {
+ "code": "it",
+ "name": "អ៊ីážáž¶áž›áž¸"
+ },
+ "he": {
+ "code": "he",
+ "name": "អ៊ីស្រាអែល"
+ },
+ "is": {
+ "code": "is",
+ "name": "អ៊ីស្លង់"
+ },
+ "uk": {
+ "code": "uk",
+ "name": "អ៊ុយក្រែន"
+ },
+ "ug": {
+ "code": "ug",
+ "name": "អ៊ុយហ្គឺរ"
+ },
+ "ur": {
+ "code": "ur",
+ "name": "អ៊ូរឌូ"
+ },
+ "or": {
+ "code": "or",
+ "name": "អូរីយ៉ា"
+ },
+ "uz": {
+ "code": "uz",
+ "name": "អ៊ូហ្សបáŸáž‚ីស្ážáž„់"
+ },
+ "ga": {
+ "code": "ga",
+ "name": "អៀរឡង់"
+ },
+ "et": {
+ "code": "et",
+ "name": "អáŸážŸáŸ’ážáž¼áž“ី"
+ },
+ "es": {
+ "code": "es",
+ "name": "អáŸážŸáŸ’ប៉ាញ"
+ },
+ "es-ES": {
+ "code": "es-ES",
+ "name": "អáŸážŸáŸ’ប៉ាញ អឺរ៉ុប"
+ },
+ "eo": {
+ "code": "eo",
+ "name": "អáŸážŸáŸ’áž–áŸážšáŸ‰áž¶áž“់ážáž¼"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/language/kn.json b/library/intl/resources/language/kn.json
new file mode 100644
index 000000000..d7f52da4e
--- /dev/null
+++ b/library/intl/resources/language/kn.json
@@ -0,0 +1,738 @@
+{
+ "ksh": {
+ "code": "ksh",
+ "name": "Colognian"
+ },
+ "wae": {
+ "code": "wae",
+ "name": "Walser"
+ },
+ "yav": {
+ "code": "yav",
+ "name": "Yangben"
+ },
+ "am": {
+ "code": "am",
+ "name": "ಅಂಹರಿಕà³"
+ },
+ "ak": {
+ "code": "ak",
+ "name": "ಅಕಾನà³"
+ },
+ "agq": {
+ "code": "agq",
+ "name": "ಅಘೆಮà³"
+ },
+ "az": {
+ "code": "az",
+ "name": "ಅಜೆರà³à²¬à³ˆà²œà²¾à²¨à²¿"
+ },
+ "hsb": {
+ "code": "hsb",
+ "name": "ಅಪà³à²ªà²°à³ ಸರà³à²¬à²¿à²¯à²¨à³"
+ },
+ "en-US": {
+ "code": "en-US",
+ "name": "ಅಮೆರಿಕನೠಇಂಗà³à²²à³€à²·à³"
+ },
+ "ar": {
+ "code": "ar",
+ "name": "ಅರೇಬಿಕà³"
+ },
+ "hy": {
+ "code": "hy",
+ "name": "ಅರà³à²®à³‡à²¨à²¿à²¯à²¨à³"
+ },
+ "sq": {
+ "code": "sq",
+ "name": "ಅಲà³à²¬à³‡à²¨à²¿à²¯à²¨à³"
+ },
+ "asa": {
+ "code": "asa",
+ "name": "ಅಸà³"
+ },
+ "ar-001": {
+ "code": "ar-001",
+ "name": "ಆಧà³à²¨à²¿à²• ಪà³à²°à²®à²¾à²£à²¿à²¤ ಅರೇಬಿಕà³"
+ },
+ "af": {
+ "code": "af",
+ "name": "ಆಫà³à²°à²¿à²•à²¾à²¨à³à²¸à³"
+ },
+ "ast": {
+ "code": "ast",
+ "name": "ಆಸà³à²Ÿà³à²°à²¿à²¯à²¨à³"
+ },
+ "de-AT": {
+ "code": "de-AT",
+ "name": "ಆಸà³à²Ÿà³à²°à²¿à²¯à²¨à³ ಜರà³à²®à²¨à³"
+ },
+ "en-AU": {
+ "code": "en-AU",
+ "name": "ಆಸà³à²Ÿà³à²°à³‡à²²à²¿à²¯à²¨à³ ಇಂಗà³à²²à³€à²·à³"
+ },
+ "en": {
+ "code": "en",
+ "name": "ಇಂಗà³à²²à³€à²·à³"
+ },
+ "id": {
+ "code": "id",
+ "name": "ಇಂಡೋನೇಶಿಯನà³"
+ },
+ "it": {
+ "code": "it",
+ "name": "ಇಟಾಲಿಯನà³"
+ },
+ "ewo": {
+ "code": "ewo",
+ "name": "ಇವಾಂಡೋ"
+ },
+ "ee": {
+ "code": "ee",
+ "name": "ಈವà³"
+ },
+ "uk": {
+ "code": "uk",
+ "name": "ಉಕà³à²°à³ˆà²¨à²¿à²¯à²¨à³"
+ },
+ "uz": {
+ "code": "uz",
+ "name": "ಉಜà³à²¬à³‡à²•à³"
+ },
+ "nd": {
+ "code": "nd",
+ "name": "ಉತà³à²¤à²° ದೆಬೆಲೆ"
+ },
+ "se": {
+ "code": "se",
+ "name": "ಉತà³à²¤à²° ಸಾಮಿ"
+ },
+ "ug": {
+ "code": "ug",
+ "name": "ಉಯಿಘರà³"
+ },
+ "ur": {
+ "code": "ur",
+ "name": "ಉರà³à²¦à³"
+ },
+ "ebu": {
+ "code": "ebu",
+ "name": "ಎಂಬà³"
+ },
+ "et": {
+ "code": "et",
+ "name": "ಎಸà³à²Ÿà³Šà²¨à²¿à²¯à²¨à³"
+ },
+ "eo": {
+ "code": "eo",
+ "name": "ಎಸà³à²ªà³†à²°à²¾à²‚ಟೊ"
+ },
+ "ga": {
+ "code": "ga",
+ "name": "à²à²°à²¿à²·à³"
+ },
+ "is": {
+ "code": "is",
+ "name": "à²à²¸à³à²²à²¾à²‚ಡಿಕà³"
+ },
+ "or": {
+ "code": "or",
+ "name": "ಒರಿಯಾ"
+ },
+ "kam": {
+ "code": "kam",
+ "name": "ಕಂಬಾ"
+ },
+ "kk": {
+ "code": "kk",
+ "name": "ಕà²à²•à³"
+ },
+ "kn": {
+ "code": "kn",
+ "name": "ಕನà³à²¨à²¡"
+ },
+ "kea": {
+ "code": "kea",
+ "name": "ಕಬà³à²µà³†à²°à³à²¡à²¿à²¯à²¨à³"
+ },
+ "kab": {
+ "code": "kab",
+ "name": "ಕಬೈಲà³"
+ },
+ "kl": {
+ "code": "kl",
+ "name": "ಕಲಾಲà³à²²à²¿à²¸à³à²Ÿà³"
+ },
+ "kln": {
+ "code": "kln",
+ "name": "ಕಲೆಂಜಿನà³"
+ },
+ "swc": {
+ "code": "swc",
+ "name": "ಕಾಂಗೊ ಸà³à²µà²¹à²¿à²²à²¿"
+ },
+ "ks": {
+ "code": "ks",
+ "name": "ಕಾಶà³à²®à³€à²°à²¿"
+ },
+ "ki": {
+ "code": "ki",
+ "name": "ಕಿಕà³à²¯à³"
+ },
+ "ky": {
+ "code": "ky",
+ "name": "ಕಿರà³à²—ಿಜà³"
+ },
+ "ca": {
+ "code": "ca",
+ "name": "ಕೆಟಲಾನà³"
+ },
+ "en-CA": {
+ "code": "en-CA",
+ "name": "ಕೆನೆಡಿಯನೠಇಂಗà³à²²à³€à²·à³"
+ },
+ "fr-CA": {
+ "code": "fr-CA",
+ "name": "ಕೆನೆಡಿಯನೠಫà³à²°à³†à²‚ಚà³"
+ },
+ "khq": {
+ "code": "khq",
+ "name": "ಕೊಯà³à²° ಚೀನಿ"
+ },
+ "ses": {
+ "code": "ses",
+ "name": "ಕೊಯà³à²°à²¬à³Šà²°à³Š ಸೆನà³à²¨à²¿"
+ },
+ "ko": {
+ "code": "ko",
+ "name": "ಕೊರಿಯನà³"
+ },
+ "hr": {
+ "code": "hr",
+ "name": "ಕà³à²°à³Šà²¯à³‡à²¶à²¿à²¯à²¨à³"
+ },
+ "km": {
+ "code": "km",
+ "name": "ಖಮೇರà³"
+ },
+ "nmg": {
+ "code": "nmg",
+ "name": "ಖà³à²µà²¾à²¸à²¿à²¯à³Š"
+ },
+ "lg": {
+ "code": "lg",
+ "name": "ಗಾಂಡಾ"
+ },
+ "gu": {
+ "code": "gu",
+ "name": "ಗà³à²œà²°à²¾à²¤à²¿"
+ },
+ "guz": {
+ "code": "guz",
+ "name": "ಗà³à²¸à²¿"
+ },
+ "gl": {
+ "code": "gl",
+ "name": "ಗà³à²¯à²¾à²²à²¿à²¶à²¿à²¯à²¨à³"
+ },
+ "el": {
+ "code": "el",
+ "name": "ಗà³à²°à³€à²•à³"
+ },
+ "cgg": {
+ "code": "cgg",
+ "name": "ಚಿಗಾ"
+ },
+ "chr": {
+ "code": "chr",
+ "name": "ಚೆರೋಕೀ"
+ },
+ "zh": {
+ "code": "zh",
+ "name": "ಚೈನೀಸà³"
+ },
+ "de": {
+ "code": "de",
+ "name": "ಜರà³à²®à²¨à³"
+ },
+ "dje": {
+ "code": "dje",
+ "name": "ಜರà³à²®à²¾"
+ },
+ "ja": {
+ "code": "ja",
+ "name": "ಜಾಪನೀಸà³"
+ },
+ "ka": {
+ "code": "ka",
+ "name": "ಜಾರà³à²œà²¿à²¯à²¨à³"
+ },
+ "zu": {
+ "code": "zu",
+ "name": "ಜà³à²²à³"
+ },
+ "cs": {
+ "code": "cs",
+ "name": "ಜೆಕà³"
+ },
+ "dyo": {
+ "code": "dyo",
+ "name": "ಜೊಲ-ಫೊನà³à²¯à²¿"
+ },
+ "dz": {
+ "code": "dz",
+ "name": "ಜೋಂಗà³â€Œà²–ಾ"
+ },
+ "tr": {
+ "code": "tr",
+ "name": "ಟರà³à²•à²¿à²¶à³"
+ },
+ "shi": {
+ "code": "shi",
+ "name": "ಟಷೆಲà³â€à²¹à²¿à²Ÿà³"
+ },
+ "twq": {
+ "code": "twq",
+ "name": "ಟಸವಕà³"
+ },
+ "ti": {
+ "code": "ti",
+ "name": "ಟಿಗà³à²°à²¿à²¨à³à²¯à²¾"
+ },
+ "bo": {
+ "code": "bo",
+ "name": "ಟಿಬೇಟಿಯನà³"
+ },
+ "teo": {
+ "code": "teo",
+ "name": "ಟೆಸೊ"
+ },
+ "dav": {
+ "code": "dav",
+ "name": "ಟೈಟ"
+ },
+ "to": {
+ "code": "to",
+ "name": "ಟೋಂಗನà³"
+ },
+ "nl": {
+ "code": "nl",
+ "name": "ಡಚà³"
+ },
+ "da": {
+ "code": "da",
+ "name": "ಡà³à²¯à²¾à²¨à²¿à²¶à³"
+ },
+ "ta": {
+ "code": "ta",
+ "name": "ತಮಿಳà³"
+ },
+ "te": {
+ "code": "te",
+ "name": "ತೆಲà³à²—à³"
+ },
+ "th": {
+ "code": "th",
+ "name": "ಥಾಯà³"
+ },
+ "naq": {
+ "code": "naq",
+ "name": "ನಮ"
+ },
+ "nn": {
+ "code": "nn",
+ "name": "ನಾರà³à²µà³†à²œà²¿à²¯à²¨à³ ನೈನೊಸà³à²•à³"
+ },
+ "nb": {
+ "code": "nb",
+ "name": "ನಾರà³à²µà³†à²œà²¿à²¯à²¨à³ ಬೊಕà³à²®à²²à³"
+ },
+ "nus": {
+ "code": "nus",
+ "name": "ನೂಯರà³"
+ },
+ "ne": {
+ "code": "ne",
+ "name": "ನೇಪಾಳಿ"
+ },
+ "jgo": {
+ "code": "jgo",
+ "name": "ನೊಂಬಾ"
+ },
+ "nyn": {
+ "code": "nyn",
+ "name": "ನà³à²¯à²¾à²¨à³â€Œà²•à³‹à²²à³†"
+ },
+ "pa": {
+ "code": "pa",
+ "name": "ಪಂಜಾಬಿ"
+ },
+ "fa": {
+ "code": "fa",
+ "name": "ಪರà³à²¶à²¿à²¯à²¨à³"
+ },
+ "fy": {
+ "code": "fy",
+ "name": "ಪಶà³à²šà²¿à²® ಫà³à²°à²¿à²¸à²¿à²¯à²¨à³"
+ },
+ "ps": {
+ "code": "ps",
+ "name": "ಪಾಷà³à²Ÿà³‹"
+ },
+ "pt": {
+ "code": "pt",
+ "name": "ಪೋರà³à²šà³à²—ೀಸà³"
+ },
+ "pl": {
+ "code": "pl",
+ "name": "ಪೋಲಿಶà³"
+ },
+ "fo": {
+ "code": "fo",
+ "name": "ಫರೋಸಿ"
+ },
+ "fi": {
+ "code": "fi",
+ "name": "ಫಿನà³à²¨à²¿à²¶à³"
+ },
+ "fil": {
+ "code": "fil",
+ "name": "ಫಿಲಿಪಿನೊ"
+ },
+ "ff": {
+ "code": "ff",
+ "name": "ಫà³à²²à²¾à²¹à³"
+ },
+ "fur": {
+ "code": "fur",
+ "name": "ಫà³à²°à²¿à²¯à³à²²à²¿à²¯à²¨à³"
+ },
+ "fr": {
+ "code": "fr",
+ "name": "ಫà³à²°à³†à²‚ಚà³"
+ },
+ "nl-BE": {
+ "code": "nl-BE",
+ "name": "ಫà³à²²à³†à²®à²¿à²·à³"
+ },
+ "bm": {
+ "code": "bm",
+ "name": "ಬಂಬಾರಾ"
+ },
+ "ksf": {
+ "code": "ksf",
+ "name": "ಬಫಿಯ"
+ },
+ "my": {
+ "code": "my",
+ "name": "ಬರà³à²®à³€à²¸à³"
+ },
+ "bg": {
+ "code": "bg",
+ "name": "ಬಲà³à²—ೇರಿಯನà³"
+ },
+ "bas": {
+ "code": "bas",
+ "name": "ಬಸಾ"
+ },
+ "eu": {
+ "code": "eu",
+ "name": "ಬಾಸà³à²•à³"
+ },
+ "bn": {
+ "code": "bn",
+ "name": "ಬೆಂಗಾಲಿ"
+ },
+ "bez": {
+ "code": "bez",
+ "name": "ಬೆನ"
+ },
+ "be": {
+ "code": "be",
+ "name": "ಬೆಲರೂಸಿಯನà³"
+ },
+ "brx": {
+ "code": "brx",
+ "name": "ಬೋಡೊ"
+ },
+ "bs": {
+ "code": "bs",
+ "name": "ಬೋಸà³à²¨à²¿à²¯à²¨à³"
+ },
+ "en-GB": {
+ "code": "en-GB",
+ "name": "ಬà³à²°à²¿à²Ÿà²¿à²·à³ ಇಂಗà³à²²à³€à²·à³"
+ },
+ "pt-BR": {
+ "code": "pt-BR",
+ "name": "ಬà³à²°à³†à²œà²¿à²²à²¿à²¯à²¨à³ ಪೋರà³à²šà³à²—ೀಸà³"
+ },
+ "br": {
+ "code": "br",
+ "name": "ಬà³à²°à³†à²Ÿà²¨à³"
+ },
+ "mn": {
+ "code": "mn",
+ "name": "ಮಂಗೋಲಿಯನà³"
+ },
+ "tzm": {
+ "code": "tzm",
+ "name": "ಮಧà³à²¯ ಅಟà³à²²à²¾à²¸à³ ಟಮಜೈಟà³"
+ },
+ "mr": {
+ "code": "mr",
+ "name": "ಮರಾಠಿ"
+ },
+ "mg": {
+ "code": "mg",
+ "name": "ಮಲಗಾಸಿ"
+ },
+ "ml": {
+ "code": "ml",
+ "name": "ಮಲಯಾಳಂ"
+ },
+ "ms": {
+ "code": "ms",
+ "name": "ಮಲಯà³"
+ },
+ "mas": {
+ "code": "mas",
+ "name": "ಮಸಾಯà³"
+ },
+ "mt": {
+ "code": "mt",
+ "name": "ಮಾಲà³à²Ÿà³€à²¸à³"
+ },
+ "mua": {
+ "code": "mua",
+ "name": "ಮà³à²‚ಡಂಗà³"
+ },
+ "es-MX": {
+ "code": "es-MX",
+ "name": "ಮೆಕà³à²¸à²¿à²•à²¨à³ ಸà³à²ªà³à²¯à²¾à²¨à²¿à²·à³"
+ },
+ "mer": {
+ "code": "mer",
+ "name": "ಮೆರà³"
+ },
+ "mk": {
+ "code": "mk",
+ "name": "ಮೆಸಿಡೋನಿಯನà³"
+ },
+ "mfe": {
+ "code": "mfe",
+ "name": "ಮೊರಿಸನà³"
+ },
+ "ro-MD": {
+ "code": "ro-MD",
+ "name": "ಮೊಲà³à²¡à³†à²µà²¿à²¯à²¨à³"
+ },
+ "jmc": {
+ "code": "jmc",
+ "name": "ಮà³à²¯à²•à²®à³†"
+ },
+ "mgh": {
+ "code": "mgh",
+ "name": "ಮà³à²¯à²–à³à²µà²¾- ಮೀಟà³à²Ÿà³Š"
+ },
+ "kde": {
+ "code": "kde",
+ "name": "ಮà³à²¯à²¾à²•à³Šà²‚ಡà³"
+ },
+ "es-ES": {
+ "code": "es-ES",
+ "name": "ಯà³à²°à³‹à²ªà²¿à²¯à²¨à³ ಸà³à²ªà³à²¯à²¾à²¨à²¿à²·à³"
+ },
+ "pt-PT": {
+ "code": "pt-PT",
+ "name": "ಯೂರೋಪಿಯನೠಪೋರà³à²šà³à²—ೀಸà³"
+ },
+ "yo": {
+ "code": "yo",
+ "name": "ಯೊರà³à²¬à²¾"
+ },
+ "ru": {
+ "code": "ru",
+ "name": "ರಷà³à²¯à²¨à³"
+ },
+ "rn": {
+ "code": "rn",
+ "name": "ರà³à²‚ಡಿ"
+ },
+ "rwk": {
+ "code": "rwk",
+ "name": "ರà³à²µ"
+ },
+ "rof": {
+ "code": "rof",
+ "name": "ರೊಂಬೊ"
+ },
+ "rm": {
+ "code": "rm",
+ "name": "ರೊಮಾನà³à²·à³"
+ },
+ "ro": {
+ "code": "ro",
+ "name": "ರೊಮೇನಿಯನà³"
+ },
+ "lb": {
+ "code": "lb",
+ "name": "ಲಕà³à²¸à²‚ಬರà³à²—à³"
+ },
+ "lv": {
+ "code": "lv",
+ "name": "ಲಟà³à²µà²¿à²¯à²¨à³"
+ },
+ "lag": {
+ "code": "lag",
+ "name": "ಲಾಂಗಿ"
+ },
+ "lo": {
+ "code": "lo",
+ "name": "ಲಾವೋ"
+ },
+ "ln": {
+ "code": "ln",
+ "name": "ಲಿಂಗಾಲ"
+ },
+ "lt": {
+ "code": "lt",
+ "name": "ಲಿಥà³à²µà³‡à²¨à²¿à²¯à²¨à³"
+ },
+ "luy": {
+ "code": "luy",
+ "name": "ಲà³à²¯à²¿à²¯"
+ },
+ "luo": {
+ "code": "luo",
+ "name": "ಲà³à²µà³‹"
+ },
+ "lu": {
+ "code": "lu",
+ "name": "ಲೂಬಾ-ಕಟಾಂಗಾ"
+ },
+ "dsb": {
+ "code": "dsb",
+ "name": "ಲೋವರೠಸೋರà³à²¬à²¿à²¯à²¨à³"
+ },
+ "vai": {
+ "code": "vai",
+ "name": "ವಾಯಿ"
+ },
+ "vi": {
+ "code": "vi",
+ "name": "ವಿಯೇಟà³à²¨à²¾à²®à³€à²¸à³"
+ },
+ "vun": {
+ "code": "vun",
+ "name": "ವà³à²‚ಜೊ"
+ },
+ "cy": {
+ "code": "cy",
+ "name": "ವೆಲà³à²¶à³"
+ },
+ "ksb": {
+ "code": "ksb",
+ "name": "ಶಂಬಲ"
+ },
+ "sn": {
+ "code": "sn",
+ "name": "ಶೋನಾ"
+ },
+ "sbp": {
+ "code": "sbp",
+ "name": "ಸಂಗà³"
+ },
+ "saq": {
+ "code": "saq",
+ "name": "ಸಂಬà³à²°à³"
+ },
+ "zh-Hans": {
+ "code": "zh-Hans",
+ "name": "ಸರಳೀಕೃತ ಚೈನೀಸà³"
+ },
+ "sr": {
+ "code": "sr",
+ "name": "ಸರà³à²¬à²¿à²¯à²¨à³"
+ },
+ "sg": {
+ "code": "sg",
+ "name": "ಸಾಂಗೋ"
+ },
+ "zh-Hant": {
+ "code": "zh-Hant",
+ "name": "ಸಾಂಪà³à²°à²¦à²¾à²¯à²¿à²• ಚೈನೀಸà³"
+ },
+ "si": {
+ "code": "si",
+ "name": "ಸಿಂಹಳ"
+ },
+ "seh": {
+ "code": "seh",
+ "name": "ಸೆನ"
+ },
+ "xog": {
+ "code": "xog",
+ "name": "ಸೊಗ"
+ },
+ "so": {
+ "code": "so",
+ "name": "ಸೊಮಾಲಿ"
+ },
+ "gd": {
+ "code": "gd",
+ "name": "ಸà³à²•à²¾à²Ÿà²¿à²¶à³ ಗà³à²¯à²¾à²²à²¿à²•à³"
+ },
+ "zgh": {
+ "code": "zgh",
+ "name": "ಸà³à²Ÿà³à²¯à²¾à²‚ಡರà³à²¡à³ ಮೊರೊಕà³à²•à²¨à³ ಟಮಜೈಟà³"
+ },
+ "es": {
+ "code": "es",
+ "name": "ಸà³à²ªà³à²¯à²¾à²¨à²¿à²·à³"
+ },
+ "sk": {
+ "code": "sk",
+ "name": "ಸà³à²²à³‹à²µà²¾à²•à³"
+ },
+ "sl": {
+ "code": "sl",
+ "name": "ಸà³à²²à³‹à²µà³‡à²¨à²¿à²¯à²¨à³"
+ },
+ "sw": {
+ "code": "sw",
+ "name": "ಸà³à²µà²¹à²¿à²²à²¿"
+ },
+ "gsw": {
+ "code": "gsw",
+ "name": "ಸà³à²µà²¿à²¸à³ ಜರà³à²®à²¨à³"
+ },
+ "fr-CH": {
+ "code": "fr-CH",
+ "name": "ಸà³à²µà²¿à²¸à³ ಫà³à²°à³†à²‚ಚà³"
+ },
+ "de-CH": {
+ "code": "de-CH",
+ "name": "ಸà³à²µà²¿à²¸à³ ಹೈ ಜರà³à²®à²¨à³"
+ },
+ "sv": {
+ "code": "sv",
+ "name": "ಸà³à²µà³€à²¡à²¿à²·à³"
+ },
+ "hu": {
+ "code": "hu",
+ "name": "ಹಂಗೇರಿಯನà³"
+ },
+ "hi": {
+ "code": "hi",
+ "name": "ಹಿಂದಿ"
+ },
+ "he": {
+ "code": "he",
+ "name": "ಹೀಬà³à²°à³à²¯à³‚"
+ },
+ "ha": {
+ "code": "ha",
+ "name": "ಹೌಸಾ"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/language/ko.json b/library/intl/resources/language/ko.json
new file mode 100644
index 000000000..7539064c1
--- /dev/null
+++ b/library/intl/resources/language/ko.json
@@ -0,0 +1,738 @@
+{
+ "de-AT": {
+ "code": "de-AT",
+ "name": "de_AT"
+ },
+ "en-US": {
+ "code": "en-US",
+ "name": "en_US"
+ },
+ "es-MX": {
+ "code": "es-MX",
+ "name": "es_MX"
+ },
+ "lg": {
+ "code": "lg",
+ "name": "간다어"
+ },
+ "gl": {
+ "code": "gl",
+ "name": "갈리시아어"
+ },
+ "de-CH": {
+ "code": "de-CH",
+ "name": "고지 ë…ì¼ì–´ (스위스)"
+ },
+ "hsb": {
+ "code": "hsb",
+ "name": "고지 소르비아어"
+ },
+ "guz": {
+ "code": "guz",
+ "name": "구시어"
+ },
+ "gu": {
+ "code": "gu",
+ "name": "구ìžë¼íŠ¸ì–´"
+ },
+ "el": {
+ "code": "el",
+ "name": "그리스어"
+ },
+ "kl": {
+ "code": "kl",
+ "name": "그린란드어"
+ },
+ "naq": {
+ "code": "naq",
+ "name": "나마어"
+ },
+ "nl": {
+ "code": "nl",
+ "name": "네ëœëž€ë“œì–´"
+ },
+ "ne": {
+ "code": "ne",
+ "name": "네팔어"
+ },
+ "nn": {
+ "code": "nn",
+ "name": "노르웨ì´ì–´(니노르스í¬)"
+ },
+ "nb": {
+ "code": "nb",
+ "name": "노르웨ì´ì–´(ë³´í¬ë§)"
+ },
+ "nus": {
+ "code": "nus",
+ "name": "누ì—르어"
+ },
+ "nyn": {
+ "code": "nyn",
+ "name": "니안콜어"
+ },
+ "da": {
+ "code": "da",
+ "name": "ë´ë§ˆí¬ì–´"
+ },
+ "de": {
+ "code": "de",
+ "name": "ë…ì¼ì–´"
+ },
+ "gsw": {
+ "code": "gsw",
+ "name": "ë…ì¼ì–´(스위스)"
+ },
+ "lo": {
+ "code": "lo",
+ "name": "ë¼ì˜¤ì–´"
+ },
+ "lv": {
+ "code": "lv",
+ "name": "ë¼íŠ¸ë¹„ì•„ì–´"
+ },
+ "lag": {
+ "code": "lag",
+ "name": "랑기어"
+ },
+ "ru": {
+ "code": "ru",
+ "name": "러시아어"
+ },
+ "rm": {
+ "code": "rm",
+ "name": "레토로만어"
+ },
+ "rof": {
+ "code": "rof",
+ "name": "롬보어"
+ },
+ "ro": {
+ "code": "ro",
+ "name": "루마니아어"
+ },
+ "lu": {
+ "code": "lu",
+ "name": "루바-카탄가어"
+ },
+ "luy": {
+ "code": "luy",
+ "name": "루야어"
+ },
+ "luo": {
+ "code": "luo",
+ "name": "루오어"
+ },
+ "lb": {
+ "code": "lb",
+ "name": "룩셈부르í¬ì–´"
+ },
+ "rn": {
+ "code": "rn",
+ "name": "룬디어"
+ },
+ "rwk": {
+ "code": "rwk",
+ "name": "르와어"
+ },
+ "lt": {
+ "code": "lt",
+ "name": "리투아니아어"
+ },
+ "ln": {
+ "code": "ln",
+ "name": "ë§ê°ˆë¼ì–´"
+ },
+ "mr": {
+ "code": "mr",
+ "name": "마ë¼í‹°ì–´"
+ },
+ "mas": {
+ "code": "mas",
+ "name": "마사ì´ì–´"
+ },
+ "jmc": {
+ "code": "jmc",
+ "name": "마차메어"
+ },
+ "mk": {
+ "code": "mk",
+ "name": "마케ë„니아어"
+ },
+ "kde": {
+ "code": "kde",
+ "name": "마콘ë°ì–´"
+ },
+ "mgh": {
+ "code": "mgh",
+ "name": "마í¬í›„와-메토어"
+ },
+ "mg": {
+ "code": "mg",
+ "name": "ë§ë¼ê°€ì‹œì–´"
+ },
+ "ml": {
+ "code": "ml",
+ "name": "ë§ë¼ì–„람어"
+ },
+ "ms": {
+ "code": "ms",
+ "name": "ë§ë ˆì´ì–´"
+ },
+ "mer": {
+ "code": "mer",
+ "name": "메루어"
+ },
+ "mfe": {
+ "code": "mfe",
+ "name": "모리스얀어"
+ },
+ "ro-MD": {
+ "code": "ro-MD",
+ "name": "몰ë„바어"
+ },
+ "mt": {
+ "code": "mt",
+ "name": "몰타어"
+ },
+ "mn": {
+ "code": "mn",
+ "name": "몽고어"
+ },
+ "mua": {
+ "code": "mua",
+ "name": "문당어"
+ },
+ "bas": {
+ "code": "bas",
+ "name": "바사어"
+ },
+ "eu": {
+ "code": "eu",
+ "name": "바스í¬ì–´"
+ },
+ "vai": {
+ "code": "vai",
+ "name": "ë°”ì´ì–´"
+ },
+ "ksf": {
+ "code": "ksf",
+ "name": "바피아어"
+ },
+ "bm": {
+ "code": "bm",
+ "name": "밤바ë¼ì–´"
+ },
+ "my": {
+ "code": "my",
+ "name": "버마어"
+ },
+ "bez": {
+ "code": "bez",
+ "name": "베나어"
+ },
+ "vi": {
+ "code": "vi",
+ "name": "베트남어"
+ },
+ "be": {
+ "code": "be",
+ "name": "벨ë¼ë£¨ìŠ¤ì–´"
+ },
+ "bn": {
+ "code": "bn",
+ "name": "벵골어"
+ },
+ "brx": {
+ "code": "brx",
+ "name": "ë³´ë„ì–´"
+ },
+ "bs": {
+ "code": "bs",
+ "name": "보스니아어"
+ },
+ "se": {
+ "code": "se",
+ "name": "ë¶ë¶€ 사미어"
+ },
+ "nd": {
+ "code": "nd",
+ "name": "ë¶ë¶€ ì€ë°ë²¨ë ˆì–´"
+ },
+ "vun": {
+ "code": "vun",
+ "name": "분조어"
+ },
+ "bg": {
+ "code": "bg",
+ "name": "불가리아어"
+ },
+ "br": {
+ "code": "br",
+ "name": "브르타뉴어"
+ },
+ "sg": {
+ "code": "sg",
+ "name": "ì‚°ê³ ì–´"
+ },
+ "saq": {
+ "code": "saq",
+ "name": "삼부루어"
+ },
+ "sbp": {
+ "code": "sbp",
+ "name": "ìƒêµ¬ì–´"
+ },
+ "ksb": {
+ "code": "ksb",
+ "name": "샴발ë¼ì–´"
+ },
+ "seh": {
+ "code": "seh",
+ "name": "세나어"
+ },
+ "sr": {
+ "code": "sr",
+ "name": "세르비아어"
+ },
+ "xog": {
+ "code": "xog",
+ "name": "소가어"
+ },
+ "so": {
+ "code": "so",
+ "name": "소ë§ë¦¬ì•„ì–´"
+ },
+ "sn": {
+ "code": "sn",
+ "name": "쇼나어"
+ },
+ "si": {
+ "code": "si",
+ "name": "스리랑카어"
+ },
+ "sw": {
+ "code": "sw",
+ "name": "스와ížë¦¬ì–´"
+ },
+ "sv": {
+ "code": "sv",
+ "name": "스웨ë´ì–´"
+ },
+ "gd": {
+ "code": "gd",
+ "name": "스코틀랜드 게ì¼ì–´"
+ },
+ "es": {
+ "code": "es",
+ "name": "스페ì¸ì–´"
+ },
+ "sk": {
+ "code": "sk",
+ "name": "슬로바키아어"
+ },
+ "sl": {
+ "code": "sl",
+ "name": "슬로베니아어"
+ },
+ "agq": {
+ "code": "agq",
+ "name": "아그햄어"
+ },
+ "ar": {
+ "code": "ar",
+ "name": "ì•„ëžì–´"
+ },
+ "hy": {
+ "code": "hy",
+ "name": "아르메니아어"
+ },
+ "asa": {
+ "code": "asa",
+ "name": "아수어"
+ },
+ "ast": {
+ "code": "ast",
+ "name": "아스투리아어"
+ },
+ "is": {
+ "code": "is",
+ "name": "ì•„ì´ìŠ¬ëž€ë“œì–´"
+ },
+ "ga": {
+ "code": "ga",
+ "name": "ì•„ì¼ëžœë“œì–´"
+ },
+ "az": {
+ "code": "az",
+ "name": "아제르바ì´ìž”ì–´"
+ },
+ "ak": {
+ "code": "ak",
+ "name": "아칸어"
+ },
+ "af": {
+ "code": "af",
+ "name": "아프리칸스어"
+ },
+ "sq": {
+ "code": "sq",
+ "name": "알바니아어"
+ },
+ "am": {
+ "code": "am",
+ "name": "암하ë¼ì–´"
+ },
+ "yav": {
+ "code": "yav",
+ "name": "양본어"
+ },
+ "et": {
+ "code": "et",
+ "name": "ì—스토니아어"
+ },
+ "eo": {
+ "code": "eo",
+ "name": "ì—스페란토어"
+ },
+ "ee": {
+ "code": "ee",
+ "name": "ì—웨어"
+ },
+ "ebu": {
+ "code": "ebu",
+ "name": "엠부어"
+ },
+ "en": {
+ "code": "en",
+ "name": "ì˜ì–´"
+ },
+ "en-GB": {
+ "code": "en-GB",
+ "name": "ì˜ì–´ (ì˜êµ­ì‹)"
+ },
+ "en-CA": {
+ "code": "en-CA",
+ "name": "ì˜ì–´ (ìºë‚˜ë‹¤)"
+ },
+ "en-AU": {
+ "code": "en-AU",
+ "name": "ì˜ì–´(호주)"
+ },
+ "or": {
+ "code": "or",
+ "name": "오리야어"
+ },
+ "yo": {
+ "code": "yo",
+ "name": "요루바어"
+ },
+ "ur": {
+ "code": "ur",
+ "name": "우르ë‘ì–´"
+ },
+ "uz": {
+ "code": "uz",
+ "name": "우즈베í¬ì–´"
+ },
+ "uk": {
+ "code": "uk",
+ "name": "ìš°í¬ë¼ì´ë‚˜ì–´"
+ },
+ "wae": {
+ "code": "wae",
+ "name": "월저어"
+ },
+ "cy": {
+ "code": "cy",
+ "name": "웨ì¼ìŠ¤ì–´"
+ },
+ "ug": {
+ "code": "ug",
+ "name": "위구르어"
+ },
+ "es-ES": {
+ "code": "es-ES",
+ "name": "ìœ ëŸ½ì‹ ìŠ¤íŽ˜ì¸ì–´"
+ },
+ "pt-PT": {
+ "code": "pt-PT",
+ "name": "ìœ ëŸ½ì‹ í¬ë¥´íˆ¬ê°ˆì–´"
+ },
+ "jgo": {
+ "code": "jgo",
+ "name": "ì‘곰바어"
+ },
+ "ewo": {
+ "code": "ewo",
+ "name": "ì´ì›ë„ì–´"
+ },
+ "it": {
+ "code": "it",
+ "name": "ì´íƒˆë¦¬ì•„ì–´"
+ },
+ "id": {
+ "code": "id",
+ "name": "ì¸ë„네시아어"
+ },
+ "ja": {
+ "code": "ja",
+ "name": "ì¼ë³¸ì–´"
+ },
+ "dje": {
+ "code": "dje",
+ "name": "ìžë¥´ë§ˆì–´"
+ },
+ "dsb": {
+ "code": "dsb",
+ "name": "저지 소르비아어"
+ },
+ "ka": {
+ "code": "ka",
+ "name": "조지아어"
+ },
+ "dyo": {
+ "code": "dyo",
+ "name": "ì¡¸ë¼ í¬ë‹ˆì–´"
+ },
+ "dz": {
+ "code": "dz",
+ "name": "종카어"
+ },
+ "zu": {
+ "code": "zu",
+ "name": "줄루어"
+ },
+ "zh": {
+ "code": "zh",
+ "name": "중국어"
+ },
+ "zh-Hans": {
+ "code": "zh-Hans",
+ "name": "중국어(간체)"
+ },
+ "zh-Hant": {
+ "code": "zh-Hant",
+ "name": "중국어(번체)"
+ },
+ "tzm": {
+ "code": "tzm",
+ "name": "중앙모로코 타마지트어"
+ },
+ "chr": {
+ "code": "chr",
+ "name": "체로키어"
+ },
+ "cs": {
+ "code": "cs",
+ "name": "체코어"
+ },
+ "cgg": {
+ "code": "cgg",
+ "name": "치가어"
+ },
+ "ks": {
+ "code": "ks",
+ "name": "카슈미르어"
+ },
+ "kk": {
+ "code": "kk",
+ "name": "ì¹´ìžíì–´"
+ },
+ "ca": {
+ "code": "ca",
+ "name": "카탈로니아어"
+ },
+ "kn": {
+ "code": "kn",
+ "name": "칸나다어"
+ },
+ "kln": {
+ "code": "kln",
+ "name": "칼렌진어"
+ },
+ "kam": {
+ "code": "kam",
+ "name": "캄바어"
+ },
+ "km": {
+ "code": "km",
+ "name": "캄보디아어"
+ },
+ "kab": {
+ "code": "kab",
+ "name": "커바ì¼ì–´"
+ },
+ "khq": {
+ "code": "khq",
+ "name": "ì½”ì´ë¼ 친니어"
+ },
+ "ses": {
+ "code": "ses",
+ "name": "ì½”ì´ì•¼ë³´ë¡œ 세니어"
+ },
+ "ksh": {
+ "code": "ksh",
+ "name": "콜로그니안어"
+ },
+ "swc": {
+ "code": "swc",
+ "name": "콩고 스와ížë¦¬ì–´"
+ },
+ "hr": {
+ "code": "hr",
+ "name": "í¬ë¡œì•„í‹°ì•„ì–´"
+ },
+ "kea": {
+ "code": "kea",
+ "name": "í¬ë¦¬ì˜¬ì–´"
+ },
+ "nmg": {
+ "code": "nmg",
+ "name": "í¬ì™€ì‹œì˜¤ì–´"
+ },
+ "ky": {
+ "code": "ky",
+ "name": "키르기스어"
+ },
+ "ki": {
+ "code": "ki",
+ "name": "키쿠유어"
+ },
+ "ta": {
+ "code": "ta",
+ "name": "타밀어"
+ },
+ "twq": {
+ "code": "twq",
+ "name": "타사와í¬ì–´"
+ },
+ "shi": {
+ "code": "shi",
+ "name": "타셸히트어"
+ },
+ "dav": {
+ "code": "dav",
+ "name": "타ì´íƒ€ì–´"
+ },
+ "th": {
+ "code": "th",
+ "name": "태국어"
+ },
+ "tr": {
+ "code": "tr",
+ "name": "터키어"
+ },
+ "teo": {
+ "code": "teo",
+ "name": "테조어"
+ },
+ "te": {
+ "code": "te",
+ "name": "텔루구어"
+ },
+ "to": {
+ "code": "to",
+ "name": "통가어"
+ },
+ "ti": {
+ "code": "ti",
+ "name": "티그리ëƒì–´"
+ },
+ "bo": {
+ "code": "bo",
+ "name": "티베트어"
+ },
+ "ps": {
+ "code": "ps",
+ "name": "파슈토어"
+ },
+ "pa": {
+ "code": "pa",
+ "name": "펀잡어"
+ },
+ "fo": {
+ "code": "fo",
+ "name": "페로어"
+ },
+ "fa": {
+ "code": "fa",
+ "name": "페르시아어"
+ },
+ "pt": {
+ "code": "pt",
+ "name": "í¬ë¥´íˆ¬ê°ˆì–´"
+ },
+ "pt-BR": {
+ "code": "pt-BR",
+ "name": "í¬ë¥´íˆ¬ê°ˆì–´ (브ë¼ì§ˆ)"
+ },
+ "pl": {
+ "code": "pl",
+ "name": "í´ëž€ë“œì–´"
+ },
+ "zgh": {
+ "code": "zgh",
+ "name": "표준 모로코 타마제í¬ì–´"
+ },
+ "ff": {
+ "code": "ff",
+ "name": "í’€ë¼ì–´"
+ },
+ "fr": {
+ "code": "fr",
+ "name": "프랑스어"
+ },
+ "fr-CH": {
+ "code": "fr-CH",
+ "name": "프랑스어 (스위스)"
+ },
+ "fr-CA": {
+ "code": "fr-CA",
+ "name": "프랑스어 (ìºë‚˜ë‹¤)"
+ },
+ "fur": {
+ "code": "fur",
+ "name": "프리우리안어"
+ },
+ "fy": {
+ "code": "fy",
+ "name": "프리지아어"
+ },
+ "nl-BE": {
+ "code": "nl-BE",
+ "name": "플ë¼ë§ì–´"
+ },
+ "fi": {
+ "code": "fi",
+ "name": "핀란드어"
+ },
+ "fil": {
+ "code": "fil",
+ "name": "필리핀어"
+ },
+ "ha": {
+ "code": "ha",
+ "name": "하우사어"
+ },
+ "ko": {
+ "code": "ko",
+ "name": "한국어"
+ },
+ "hu": {
+ "code": "hu",
+ "name": "í—가리어"
+ },
+ "ar-001": {
+ "code": "ar-001",
+ "name": "현대 표준 ì•„ëžì–´"
+ },
+ "he": {
+ "code": "he",
+ "name": "히브리어"
+ },
+ "hi": {
+ "code": "hi",
+ "name": "힌디어"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/language/ks.json b/library/intl/resources/language/ks.json
new file mode 100644
index 000000000..fc8052cc2
--- /dev/null
+++ b/library/intl/resources/language/ks.json
@@ -0,0 +1,738 @@
+{
+ "agq": {
+ "code": "agq",
+ "name": "Aghem"
+ },
+ "ar-001": {
+ "code": "ar-001",
+ "name": "ar_001"
+ },
+ "asa": {
+ "code": "asa",
+ "name": "Asu"
+ },
+ "ksf": {
+ "code": "ksf",
+ "name": "Bafia"
+ },
+ "bez": {
+ "code": "bez",
+ "name": "Bena"
+ },
+ "brx": {
+ "code": "brx",
+ "name": "Bodo"
+ },
+ "tzm": {
+ "code": "tzm",
+ "name": "Central Atlas Tamazight"
+ },
+ "cgg": {
+ "code": "cgg",
+ "name": "Chiga"
+ },
+ "ksh": {
+ "code": "ksh",
+ "name": "Colognian"
+ },
+ "swc": {
+ "code": "swc",
+ "name": "Congo Swahili"
+ },
+ "ebu": {
+ "code": "ebu",
+ "name": "Embu"
+ },
+ "es-MX": {
+ "code": "es-MX",
+ "name": "es_MX"
+ },
+ "guz": {
+ "code": "guz",
+ "name": "Gusii"
+ },
+ "dyo": {
+ "code": "dyo",
+ "name": "Jola-Fonyi"
+ },
+ "kea": {
+ "code": "kea",
+ "name": "Kabuverdianu"
+ },
+ "kln": {
+ "code": "kln",
+ "name": "Kalenjin"
+ },
+ "khq": {
+ "code": "khq",
+ "name": "Koyra Chiini"
+ },
+ "ses": {
+ "code": "ses",
+ "name": "Koyraboro Senni"
+ },
+ "nmg": {
+ "code": "nmg",
+ "name": "Kwasio"
+ },
+ "lag": {
+ "code": "lag",
+ "name": "Langi"
+ },
+ "luy": {
+ "code": "luy",
+ "name": "Luyia"
+ },
+ "jmc": {
+ "code": "jmc",
+ "name": "Machame"
+ },
+ "mgh": {
+ "code": "mgh",
+ "name": "Makhuwa-Meetto"
+ },
+ "kde": {
+ "code": "kde",
+ "name": "Makonde"
+ },
+ "mer": {
+ "code": "mer",
+ "name": "Meru"
+ },
+ "mfe": {
+ "code": "mfe",
+ "name": "Morisyen"
+ },
+ "mua": {
+ "code": "mua",
+ "name": "Mundang"
+ },
+ "naq": {
+ "code": "naq",
+ "name": "Nama"
+ },
+ "jgo": {
+ "code": "jgo",
+ "name": "Ngomba"
+ },
+ "nus": {
+ "code": "nus",
+ "name": "Nuer"
+ },
+ "rof": {
+ "code": "rof",
+ "name": "Rombo"
+ },
+ "rwk": {
+ "code": "rwk",
+ "name": "Rwa"
+ },
+ "saq": {
+ "code": "saq",
+ "name": "Samburu"
+ },
+ "sbp": {
+ "code": "sbp",
+ "name": "Sangu"
+ },
+ "seh": {
+ "code": "seh",
+ "name": "Sena"
+ },
+ "ksb": {
+ "code": "ksb",
+ "name": "Shambala"
+ },
+ "xog": {
+ "code": "xog",
+ "name": "Soga"
+ },
+ "zgh": {
+ "code": "zgh",
+ "name": "Standard Moroccan Tamazight"
+ },
+ "shi": {
+ "code": "shi",
+ "name": "Tachelhit"
+ },
+ "dav": {
+ "code": "dav",
+ "name": "Taita"
+ },
+ "twq": {
+ "code": "twq",
+ "name": "Tasawaq"
+ },
+ "teo": {
+ "code": "teo",
+ "name": "Teso"
+ },
+ "ug": {
+ "code": "ug",
+ "name": "Uyghur"
+ },
+ "vun": {
+ "code": "vun",
+ "name": "Vunjo"
+ },
+ "wae": {
+ "code": "wae",
+ "name": "Walser"
+ },
+ "yav": {
+ "code": "yav",
+ "name": "Yangben"
+ },
+ "dje": {
+ "code": "dje",
+ "name": "Zarma"
+ },
+ "en-AU": {
+ "code": "en-AU",
+ "name": "آسٹریلیَن اَنٛگریٖزÛ"
+ },
+ "de-AT": {
+ "code": "de-AT",
+ "name": "آسٹرÙیَن جٔرمَن"
+ },
+ "is": {
+ "code": "is",
+ "name": "Ø¢ÛŒÙسلینڈÙÚ©"
+ },
+ "it": {
+ "code": "it",
+ "name": "اÙٹیلیَن"
+ },
+ "ur": {
+ "code": "ur",
+ "name": "اÙردوٗ"
+ },
+ "hy": {
+ "code": "hy",
+ "name": "اَرمینیَن"
+ },
+ "uz": {
+ "code": "uz",
+ "name": "اÙزبیک"
+ },
+ "az": {
+ "code": "az",
+ "name": "اَزَربیجانی"
+ },
+ "af": {
+ "code": "af",
+ "name": "اَÙریٖکانٛز"
+ },
+ "ak": {
+ "code": "ak",
+ "name": "اَکان"
+ },
+ "sq": {
+ "code": "sq",
+ "name": "البانÙیَن"
+ },
+ "am": {
+ "code": "am",
+ "name": "اَمÛاری"
+ },
+ "id": {
+ "code": "id",
+ "name": "اÙنڈونیشیا"
+ },
+ "en": {
+ "code": "en",
+ "name": "اَنٛگیٖزÛ"
+ },
+ "or": {
+ "code": "or",
+ "name": "اوٚرÙیا"
+ },
+ "ga": {
+ "code": "ga",
+ "name": "اَیرÙØ´"
+ },
+ "eo": {
+ "code": "eo",
+ "name": "ایٚسپَرینٹو"
+ },
+ "ast": {
+ "code": "ast",
+ "name": "ایسٹوٗریَن"
+ },
+ "et": {
+ "code": "et",
+ "name": "ایٚسٹونیَن"
+ },
+ "ee": {
+ "code": "ee",
+ "name": "ایٖو"
+ },
+ "ewo": {
+ "code": "ewo",
+ "name": "ایٚوونڈو"
+ },
+ "bas": {
+ "code": "bas",
+ "name": "باسا"
+ },
+ "eu": {
+ "code": "eu",
+ "name": "باسک"
+ },
+ "pt-BR": {
+ "code": "pt-BR",
+ "name": "برازیٖلی Ù¾Ùتَگیٖز"
+ },
+ "en-GB": {
+ "code": "en-GB",
+ "name": "بَرطانوی اَنٛگریٖزÛ"
+ },
+ "br": {
+ "code": "br",
+ "name": "بریٹَن"
+ },
+ "bm": {
+ "code": "bm",
+ "name": "بَمبارا"
+ },
+ "my": {
+ "code": "my",
+ "name": "بٔمیٖز"
+ },
+ "bn": {
+ "code": "bn",
+ "name": "بَنٛگٲلÛ"
+ },
+ "bs": {
+ "code": "bs",
+ "name": "بوسنÙیَن"
+ },
+ "dsb": {
+ "code": "dsb",
+ "name": "بوٚنÙÙ… ساربÙیَن"
+ },
+ "be": {
+ "code": "be",
+ "name": "بیلَروٗشیَن"
+ },
+ "bg": {
+ "code": "bg",
+ "name": "بینا"
+ },
+ "pl": {
+ "code": "pl",
+ "name": "پالÙØ´"
+ },
+ "pt": {
+ "code": "pt",
+ "name": "Ù¾Ùرتَگیٖز"
+ },
+ "ps": {
+ "code": "ps",
+ "name": "پَشتوٗ"
+ },
+ "pa": {
+ "code": "pa",
+ "name": "پَنجٲبÛ"
+ },
+ "bo": {
+ "code": "bo",
+ "name": "تÙبتی"
+ },
+ "tr": {
+ "code": "tr",
+ "name": "تÙرکÙØ´"
+ },
+ "ta": {
+ "code": "ta",
+ "name": "تَمÙÙ„"
+ },
+ "th": {
+ "code": "th",
+ "name": "تھاے"
+ },
+ "te": {
+ "code": "te",
+ "name": "تیلگوٗ"
+ },
+ "ti": {
+ "code": "ti",
+ "name": "Ù¹ÙگرÙنیا"
+ },
+ "to": {
+ "code": "to",
+ "name": "ٹونٛگا"
+ },
+ "ja": {
+ "code": "ja",
+ "name": "جاپٲنÛ"
+ },
+ "ka": {
+ "code": "ka",
+ "name": "جارجÙیَن"
+ },
+ "de": {
+ "code": "de",
+ "name": "جٔرمَن"
+ },
+ "chr": {
+ "code": "chr",
+ "name": "چیٚروکی"
+ },
+ "cs": {
+ "code": "cs",
+ "name": "چیٚک"
+ },
+ "zh": {
+ "code": "zh",
+ "name": "چیٖنی"
+ },
+ "km": {
+ "code": "km",
+ "name": "خَمیر"
+ },
+ "nl": {
+ "code": "nl",
+ "name": "ÚˆÙŽÚ†"
+ },
+ "da": {
+ "code": "da",
+ "name": "ڈینÙØ´"
+ },
+ "rn": {
+ "code": "rn",
+ "name": "رÙندی"
+ },
+ "zh-Hant": {
+ "code": "zh-Hant",
+ "name": "رÙوٲجی چیٖنی"
+ },
+ "ru": {
+ "code": "ru",
+ "name": "روٗسی"
+ },
+ "ro": {
+ "code": "ro",
+ "name": "رومٲنی"
+ },
+ "rm": {
+ "code": "rm",
+ "name": "رومانش"
+ },
+ "zu": {
+ "code": "zu",
+ "name": "زÙلوٗ"
+ },
+ "dz": {
+ "code": "dz",
+ "name": "زونٛگکھا"
+ },
+ "es": {
+ "code": "es",
+ "name": "سپینÙØ´"
+ },
+ "sr": {
+ "code": "sr",
+ "name": "سٔربÙیَن"
+ },
+ "gd": {
+ "code": "gd",
+ "name": "سکوٹÙØ´ گیےلÙÚ©"
+ },
+ "sk": {
+ "code": "sk",
+ "name": "سلووَک"
+ },
+ "sl": {
+ "code": "sl",
+ "name": "سلووینیَن"
+ },
+ "sg": {
+ "code": "sg",
+ "name": "سَنگو"
+ },
+ "si": {
+ "code": "si",
+ "name": "سÙÙ†Ûالا"
+ },
+ "sw": {
+ "code": "sw",
+ "name": "سواÛÙÙ„ÛŒ"
+ },
+ "gsw": {
+ "code": "gsw",
+ "name": "سٕوÙس جٔرمَن"
+ },
+ "fr-CH": {
+ "code": "fr-CH",
+ "name": "سٕوٕس Ùریٚنچ"
+ },
+ "de-CH": {
+ "code": "de-CH",
+ "name": "سٕوÙس Ûاےجٔرمَن"
+ },
+ "so": {
+ "code": "so",
+ "name": "سومٲلی"
+ },
+ "sv": {
+ "code": "sv",
+ "name": "سویٖڈÙØ´"
+ },
+ "zh-Hans": {
+ "code": "zh-Hans",
+ "name": "سیٚود چیٖنی"
+ },
+ "se": {
+ "code": "se",
+ "name": "Ø´Ùمٲلی سَمی"
+ },
+ "nd": {
+ "code": "nd",
+ "name": "Ø´Ùمال ڈَبیل"
+ },
+ "sn": {
+ "code": "sn",
+ "name": "شونا"
+ },
+ "he": {
+ "code": "he",
+ "name": "عبرٲنÛ"
+ },
+ "ar": {
+ "code": "ar",
+ "name": "عربی"
+ },
+ "fa": {
+ "code": "fa",
+ "name": "Ùارسی"
+ },
+ "fo": {
+ "code": "fo",
+ "name": "Ùَروس"
+ },
+ "fur": {
+ "code": "fur",
+ "name": "ÙروٗلÙیَن"
+ },
+ "fr": {
+ "code": "fr",
+ "name": "Ùریٚنچ"
+ },
+ "ff": {
+ "code": "ff",
+ "name": "ÙÙلاÛ"
+ },
+ "fil": {
+ "code": "fil",
+ "name": "ÙÙÙ„Ùپیٖنو"
+ },
+ "nl-BE": {
+ "code": "nl-BE",
+ "name": "ÙلیٚمÙØ´"
+ },
+ "fi": {
+ "code": "fi",
+ "name": "ÙÙÙ†ÙØ´"
+ },
+ "ks": {
+ "code": "ks",
+ "name": "کٲشÙر"
+ },
+ "kk": {
+ "code": "kk",
+ "name": "کازَخ"
+ },
+ "kam": {
+ "code": "kam",
+ "name": "کامبا"
+ },
+ "kab": {
+ "code": "kab",
+ "name": "کَبایÙÙ„"
+ },
+ "ca": {
+ "code": "ca",
+ "name": "کَتلان"
+ },
+ "ky": {
+ "code": "ky",
+ "name": "Ú©ÙرگÙز"
+ },
+ "hr": {
+ "code": "hr",
+ "name": "کروشÙیَن"
+ },
+ "ki": {
+ "code": "ki",
+ "name": "Ú©ÙÚ©Ùیوٗ"
+ },
+ "kl": {
+ "code": "kl",
+ "name": "کَلالÙسÙت"
+ },
+ "kn": {
+ "code": "kn",
+ "name": "Ú©ÙŽÙ†ÙŽÚ‘"
+ },
+ "fr-CA": {
+ "code": "fr-CA",
+ "name": "کَنیڈیَن Ùریٚنچ"
+ },
+ "ko": {
+ "code": "ko",
+ "name": "کوریَن"
+ },
+ "en-CA": {
+ "code": "en-CA",
+ "name": "کینَڈÙیٲیی اَنٛگریٖزÛ"
+ },
+ "lg": {
+ "code": "lg",
+ "name": "گاندا"
+ },
+ "gu": {
+ "code": "gu",
+ "name": "Ú¯Ùجرٲتی"
+ },
+ "gl": {
+ "code": "gl",
+ "name": "گیلÙØ´Ùیَن"
+ },
+ "lo": {
+ "code": "lo",
+ "name": "لاو"
+ },
+ "pt-PT": {
+ "code": "pt-PT",
+ "name": "Ù„Ùبیریَن Ù¾Ùرتَگیٖز"
+ },
+ "es-ES": {
+ "code": "es-ES",
+ "name": "Ù„Ùبیریَن سپینÙØ´"
+ },
+ "lt": {
+ "code": "lt",
+ "name": "Ù„ÙتھوانÙیَن"
+ },
+ "lv": {
+ "code": "lv",
+ "name": "لَتوÙیَن"
+ },
+ "lb": {
+ "code": "lb",
+ "name": "Ù„ÙکھزیمبورگÙØ´"
+ },
+ "ln": {
+ "code": "ln",
+ "name": "Ù„Ùنگالا"
+ },
+ "lu": {
+ "code": "lu",
+ "name": "لوÙبا کَتَنٛگا"
+ },
+ "luo": {
+ "code": "luo",
+ "name": "Ù„Ùوو"
+ },
+ "mr": {
+ "code": "mr",
+ "name": "مَرٲٹھÛ"
+ },
+ "mas": {
+ "code": "mas",
+ "name": "مَساے"
+ },
+ "fy": {
+ "code": "fy",
+ "name": "مغربی ÙرÙشیَن"
+ },
+ "mg": {
+ "code": "mg",
+ "name": "مَلاگَسی"
+ },
+ "mt": {
+ "code": "mt",
+ "name": "مَلتیٖس"
+ },
+ "ml": {
+ "code": "ml",
+ "name": "مٔلیالَم"
+ },
+ "ms": {
+ "code": "ms",
+ "name": "Ù…ÙŽÙ„ÙŽÛ’"
+ },
+ "mn": {
+ "code": "mn",
+ "name": "مَنٛگولی"
+ },
+ "ro-MD": {
+ "code": "ro-MD",
+ "name": "مولداوÙیَن"
+ },
+ "mk": {
+ "code": "mk",
+ "name": "میکَڈونیَن"
+ },
+ "nb": {
+ "code": "nb",
+ "name": "ناروییَن بوکمال"
+ },
+ "nn": {
+ "code": "nn",
+ "name": "ناروییَن نَے نورسک"
+ },
+ "ne": {
+ "code": "ne",
+ "name": "نیٚپٲلÛ"
+ },
+ "nyn": {
+ "code": "nyn",
+ "name": "Ù†Ùیَنکول"
+ },
+ "ha": {
+ "code": "ha",
+ "name": "Ûاوسا"
+ },
+ "hi": {
+ "code": "hi",
+ "name": "ÛÙندی"
+ },
+ "hu": {
+ "code": "hu",
+ "name": "Ûَنٛگیریَن"
+ },
+ "hsb": {
+ "code": "hsb",
+ "name": "ÛیٚرÙÙ… ساربÙیَن"
+ },
+ "vai": {
+ "code": "vai",
+ "name": "واے"
+ },
+ "vi": {
+ "code": "vi",
+ "name": "ÙˆÙیَتنَمیٖز"
+ },
+ "cy": {
+ "code": "cy",
+ "name": "ویٚلش"
+ },
+ "en-US": {
+ "code": "en-US",
+ "name": "یوٗ ایٚس اَنٛگریٖزÛ"
+ },
+ "yo": {
+ "code": "yo",
+ "name": "یورÙبا"
+ },
+ "uk": {
+ "code": "uk",
+ "name": "یوٗکرینیٲیی"
+ },
+ "el": {
+ "code": "el",
+ "name": "یوٗنٲنی"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/language/ksb.json b/library/intl/resources/language/ksb.json
new file mode 100644
index 000000000..a9e0fcae3
--- /dev/null
+++ b/library/intl/resources/language/ksb.json
@@ -0,0 +1,738 @@
+{
+ "af": {
+ "code": "af",
+ "name": "Afrikaans"
+ },
+ "agq": {
+ "code": "agq",
+ "name": "Aghem"
+ },
+ "sq": {
+ "code": "sq",
+ "name": "Albanian"
+ },
+ "ar-001": {
+ "code": "ar-001",
+ "name": "ar_001"
+ },
+ "hy": {
+ "code": "hy",
+ "name": "Armenian"
+ },
+ "ast": {
+ "code": "ast",
+ "name": "Asturian"
+ },
+ "asa": {
+ "code": "asa",
+ "name": "Asu"
+ },
+ "az": {
+ "code": "az",
+ "name": "Azerbaijani"
+ },
+ "ksf": {
+ "code": "ksf",
+ "name": "Bafia"
+ },
+ "bm": {
+ "code": "bm",
+ "name": "Bambara"
+ },
+ "bas": {
+ "code": "bas",
+ "name": "Basaa"
+ },
+ "eu": {
+ "code": "eu",
+ "name": "Basque"
+ },
+ "bez": {
+ "code": "bez",
+ "name": "Bena"
+ },
+ "brx": {
+ "code": "brx",
+ "name": "Bodo"
+ },
+ "bs": {
+ "code": "bs",
+ "name": "Bosnian"
+ },
+ "br": {
+ "code": "br",
+ "name": "Breton"
+ },
+ "ca": {
+ "code": "ca",
+ "name": "Catalan"
+ },
+ "tzm": {
+ "code": "tzm",
+ "name": "Central Atlas Tamazight"
+ },
+ "chr": {
+ "code": "chr",
+ "name": "Cherokee"
+ },
+ "cgg": {
+ "code": "cgg",
+ "name": "Chiga"
+ },
+ "ksh": {
+ "code": "ksh",
+ "name": "Colognian"
+ },
+ "swc": {
+ "code": "swc",
+ "name": "Congo Swahili"
+ },
+ "hr": {
+ "code": "hr",
+ "name": "Croatian"
+ },
+ "da": {
+ "code": "da",
+ "name": "Danish"
+ },
+ "de-AT": {
+ "code": "de-AT",
+ "name": "de_AT"
+ },
+ "de-CH": {
+ "code": "de-CH",
+ "name": "de_CH"
+ },
+ "dz": {
+ "code": "dz",
+ "name": "Dzongkha"
+ },
+ "ebu": {
+ "code": "ebu",
+ "name": "Embu"
+ },
+ "en-AU": {
+ "code": "en-AU",
+ "name": "en_AU"
+ },
+ "en-CA": {
+ "code": "en-CA",
+ "name": "en_CA"
+ },
+ "en-GB": {
+ "code": "en-GB",
+ "name": "en_GB"
+ },
+ "en-US": {
+ "code": "en-US",
+ "name": "en_US"
+ },
+ "es-ES": {
+ "code": "es-ES",
+ "name": "es_ES"
+ },
+ "es-MX": {
+ "code": "es-MX",
+ "name": "es_MX"
+ },
+ "eo": {
+ "code": "eo",
+ "name": "Esperanto"
+ },
+ "et": {
+ "code": "et",
+ "name": "Estonian"
+ },
+ "ee": {
+ "code": "ee",
+ "name": "Ewe"
+ },
+ "ewo": {
+ "code": "ewo",
+ "name": "Ewondo"
+ },
+ "fo": {
+ "code": "fo",
+ "name": "Faroese"
+ },
+ "fil": {
+ "code": "fil",
+ "name": "Filipino"
+ },
+ "fi": {
+ "code": "fi",
+ "name": "Finnish"
+ },
+ "fr-CA": {
+ "code": "fr-CA",
+ "name": "fr_CA"
+ },
+ "fr-CH": {
+ "code": "fr-CH",
+ "name": "fr_CH"
+ },
+ "fur": {
+ "code": "fur",
+ "name": "Friulian"
+ },
+ "ff": {
+ "code": "ff",
+ "name": "Fulah"
+ },
+ "gl": {
+ "code": "gl",
+ "name": "Galician"
+ },
+ "lg": {
+ "code": "lg",
+ "name": "Ganda"
+ },
+ "ka": {
+ "code": "ka",
+ "name": "Georgian"
+ },
+ "gu": {
+ "code": "gu",
+ "name": "Gujarati"
+ },
+ "guz": {
+ "code": "guz",
+ "name": "Gusii"
+ },
+ "he": {
+ "code": "he",
+ "name": "Hebrew"
+ },
+ "is": {
+ "code": "is",
+ "name": "Icelandic"
+ },
+ "ga": {
+ "code": "ga",
+ "name": "Irish"
+ },
+ "dyo": {
+ "code": "dyo",
+ "name": "Jola-Fonyi"
+ },
+ "kea": {
+ "code": "kea",
+ "name": "Kabuverdianu"
+ },
+ "kab": {
+ "code": "kab",
+ "name": "Kabyle"
+ },
+ "kl": {
+ "code": "kl",
+ "name": "Kalaallisut"
+ },
+ "kln": {
+ "code": "kln",
+ "name": "Kalenjin"
+ },
+ "kam": {
+ "code": "kam",
+ "name": "Kamba"
+ },
+ "kn": {
+ "code": "kn",
+ "name": "Kannada"
+ },
+ "ks": {
+ "code": "ks",
+ "name": "Kashmiri"
+ },
+ "kk": {
+ "code": "kk",
+ "name": "Kazakh"
+ },
+ "fa": {
+ "code": "fa",
+ "name": "Kiajemi"
+ },
+ "ak": {
+ "code": "ak",
+ "name": "Kiakan"
+ },
+ "ar": {
+ "code": "ar",
+ "name": "Kialabu"
+ },
+ "am": {
+ "code": "am",
+ "name": "Kiamhali"
+ },
+ "bn": {
+ "code": "bn",
+ "name": "Kibangla"
+ },
+ "be": {
+ "code": "be",
+ "name": "Kibelaausi"
+ },
+ "bg": {
+ "code": "bg",
+ "name": "Kibulgalia"
+ },
+ "my": {
+ "code": "my",
+ "name": "Kibulma"
+ },
+ "cs": {
+ "code": "cs",
+ "name": "Kichecki"
+ },
+ "zh": {
+ "code": "zh",
+ "name": "Kichina"
+ },
+ "fr": {
+ "code": "fr",
+ "name": "Kifalansa"
+ },
+ "el": {
+ "code": "el",
+ "name": "Kigiiki"
+ },
+ "ha": {
+ "code": "ha",
+ "name": "Kihausa"
+ },
+ "hi": {
+ "code": "hi",
+ "name": "Kihindi"
+ },
+ "es": {
+ "code": "es",
+ "name": "Kihispania"
+ },
+ "nl": {
+ "code": "nl",
+ "name": "Kiholanzi"
+ },
+ "hu": {
+ "code": "hu",
+ "name": "Kihungai"
+ },
+ "id": {
+ "code": "id",
+ "name": "Kiindonesia"
+ },
+ "en": {
+ "code": "en",
+ "name": "Kiingeeza"
+ },
+ "it": {
+ "code": "it",
+ "name": "Kiitaliano"
+ },
+ "ja": {
+ "code": "ja",
+ "name": "Kijapani"
+ },
+ "de": {
+ "code": "de",
+ "name": "Kijeumani"
+ },
+ "km": {
+ "code": "km",
+ "name": "Kikambodia"
+ },
+ "ko": {
+ "code": "ko",
+ "name": "Kikolea"
+ },
+ "ki": {
+ "code": "ki",
+ "name": "Kikuyu"
+ },
+ "pt": {
+ "code": "pt",
+ "name": "Kileno"
+ },
+ "ru": {
+ "code": "ru",
+ "name": "Kilusi"
+ },
+ "ms": {
+ "code": "ms",
+ "name": "Kimalesia"
+ },
+ "ne": {
+ "code": "ne",
+ "name": "Kinepali"
+ },
+ "ro": {
+ "code": "ro",
+ "name": "Kiomania"
+ },
+ "pl": {
+ "code": "pl",
+ "name": "Kipolandi"
+ },
+ "pa": {
+ "code": "pa",
+ "name": "Kipunjabi"
+ },
+ "ksb": {
+ "code": "ksb",
+ "name": "Kishambaa"
+ },
+ "so": {
+ "code": "so",
+ "name": "Kisomali"
+ },
+ "sv": {
+ "code": "sv",
+ "name": "Kiswidi"
+ },
+ "th": {
+ "code": "th",
+ "name": "Kitailandi"
+ },
+ "ta": {
+ "code": "ta",
+ "name": "Kitamil"
+ },
+ "tr": {
+ "code": "tr",
+ "name": "Kituuki"
+ },
+ "uk": {
+ "code": "uk",
+ "name": "Kiuklania"
+ },
+ "ur": {
+ "code": "ur",
+ "name": "Kiuldu"
+ },
+ "vi": {
+ "code": "vi",
+ "name": "Kivietinamu"
+ },
+ "yo": {
+ "code": "yo",
+ "name": "Kiyoluba"
+ },
+ "zu": {
+ "code": "zu",
+ "name": "Kizulu"
+ },
+ "khq": {
+ "code": "khq",
+ "name": "Koyra Chiini"
+ },
+ "ses": {
+ "code": "ses",
+ "name": "Koyraboro Senni"
+ },
+ "nmg": {
+ "code": "nmg",
+ "name": "Kwasio"
+ },
+ "ky": {
+ "code": "ky",
+ "name": "Kyrgyz"
+ },
+ "lag": {
+ "code": "lag",
+ "name": "Langi"
+ },
+ "lo": {
+ "code": "lo",
+ "name": "Lao"
+ },
+ "lv": {
+ "code": "lv",
+ "name": "Latvian"
+ },
+ "ln": {
+ "code": "ln",
+ "name": "Lingala"
+ },
+ "lt": {
+ "code": "lt",
+ "name": "Lithuanian"
+ },
+ "dsb": {
+ "code": "dsb",
+ "name": "Lower Sorbian"
+ },
+ "lu": {
+ "code": "lu",
+ "name": "Luba-Katanga"
+ },
+ "luo": {
+ "code": "luo",
+ "name": "Luo"
+ },
+ "lb": {
+ "code": "lb",
+ "name": "Luxembourgish"
+ },
+ "luy": {
+ "code": "luy",
+ "name": "Luyia"
+ },
+ "mk": {
+ "code": "mk",
+ "name": "Macedonian"
+ },
+ "jmc": {
+ "code": "jmc",
+ "name": "Machame"
+ },
+ "mgh": {
+ "code": "mgh",
+ "name": "Makhuwa-Meetto"
+ },
+ "kde": {
+ "code": "kde",
+ "name": "Makonde"
+ },
+ "mg": {
+ "code": "mg",
+ "name": "Malagasy"
+ },
+ "ml": {
+ "code": "ml",
+ "name": "Malayalam"
+ },
+ "mt": {
+ "code": "mt",
+ "name": "Maltese"
+ },
+ "mr": {
+ "code": "mr",
+ "name": "Marathi"
+ },
+ "mas": {
+ "code": "mas",
+ "name": "Masai"
+ },
+ "mer": {
+ "code": "mer",
+ "name": "Meru"
+ },
+ "mn": {
+ "code": "mn",
+ "name": "Mongolian"
+ },
+ "mfe": {
+ "code": "mfe",
+ "name": "Morisyen"
+ },
+ "mua": {
+ "code": "mua",
+ "name": "Mundang"
+ },
+ "naq": {
+ "code": "naq",
+ "name": "Nama"
+ },
+ "jgo": {
+ "code": "jgo",
+ "name": "Ngomba"
+ },
+ "nl-BE": {
+ "code": "nl-BE",
+ "name": "nl_BE"
+ },
+ "nd": {
+ "code": "nd",
+ "name": "North Ndebele"
+ },
+ "se": {
+ "code": "se",
+ "name": "Northern Sami"
+ },
+ "nb": {
+ "code": "nb",
+ "name": "Norwegian Bokmål"
+ },
+ "nn": {
+ "code": "nn",
+ "name": "Norwegian Nynorsk"
+ },
+ "nus": {
+ "code": "nus",
+ "name": "Nuer"
+ },
+ "nyn": {
+ "code": "nyn",
+ "name": "Nyankole"
+ },
+ "or": {
+ "code": "or",
+ "name": "Oriya"
+ },
+ "ps": {
+ "code": "ps",
+ "name": "Pashto"
+ },
+ "pt-BR": {
+ "code": "pt-BR",
+ "name": "pt_BR"
+ },
+ "pt-PT": {
+ "code": "pt-PT",
+ "name": "pt_PT"
+ },
+ "ro-MD": {
+ "code": "ro-MD",
+ "name": "ro_MD"
+ },
+ "rm": {
+ "code": "rm",
+ "name": "Romansh"
+ },
+ "rof": {
+ "code": "rof",
+ "name": "Rombo"
+ },
+ "rn": {
+ "code": "rn",
+ "name": "Rundi"
+ },
+ "rwk": {
+ "code": "rwk",
+ "name": "Rwa"
+ },
+ "saq": {
+ "code": "saq",
+ "name": "Samburu"
+ },
+ "sg": {
+ "code": "sg",
+ "name": "Sango"
+ },
+ "sbp": {
+ "code": "sbp",
+ "name": "Sangu"
+ },
+ "gd": {
+ "code": "gd",
+ "name": "Scottish Gaelic"
+ },
+ "seh": {
+ "code": "seh",
+ "name": "Sena"
+ },
+ "sr": {
+ "code": "sr",
+ "name": "Serbian"
+ },
+ "sn": {
+ "code": "sn",
+ "name": "Shona"
+ },
+ "si": {
+ "code": "si",
+ "name": "Sinhala"
+ },
+ "sk": {
+ "code": "sk",
+ "name": "Slovak"
+ },
+ "sl": {
+ "code": "sl",
+ "name": "Slovenian"
+ },
+ "xog": {
+ "code": "xog",
+ "name": "Soga"
+ },
+ "zgh": {
+ "code": "zgh",
+ "name": "Standard Moroccan Tamazight"
+ },
+ "sw": {
+ "code": "sw",
+ "name": "Swahili"
+ },
+ "gsw": {
+ "code": "gsw",
+ "name": "Swiss German"
+ },
+ "shi": {
+ "code": "shi",
+ "name": "Tachelhit"
+ },
+ "dav": {
+ "code": "dav",
+ "name": "Taita"
+ },
+ "twq": {
+ "code": "twq",
+ "name": "Tasawaq"
+ },
+ "te": {
+ "code": "te",
+ "name": "Telugu"
+ },
+ "teo": {
+ "code": "teo",
+ "name": "Teso"
+ },
+ "bo": {
+ "code": "bo",
+ "name": "Tibetan"
+ },
+ "ti": {
+ "code": "ti",
+ "name": "Tigrinya"
+ },
+ "to": {
+ "code": "to",
+ "name": "Tongan"
+ },
+ "hsb": {
+ "code": "hsb",
+ "name": "Upper Sorbian"
+ },
+ "ug": {
+ "code": "ug",
+ "name": "Uyghur"
+ },
+ "uz": {
+ "code": "uz",
+ "name": "Uzbek"
+ },
+ "vai": {
+ "code": "vai",
+ "name": "Vai"
+ },
+ "vun": {
+ "code": "vun",
+ "name": "Vunjo"
+ },
+ "wae": {
+ "code": "wae",
+ "name": "Walser"
+ },
+ "cy": {
+ "code": "cy",
+ "name": "Welsh"
+ },
+ "fy": {
+ "code": "fy",
+ "name": "Western Frisian"
+ },
+ "yav": {
+ "code": "yav",
+ "name": "Yangben"
+ },
+ "dje": {
+ "code": "dje",
+ "name": "Zarma"
+ },
+ "zh-Hans": {
+ "code": "zh-Hans",
+ "name": "zh_Hans"
+ },
+ "zh-Hant": {
+ "code": "zh-Hant",
+ "name": "zh_Hant"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/language/ksf.json b/library/intl/resources/language/ksf.json
new file mode 100644
index 000000000..ba988f0f7
--- /dev/null
+++ b/library/intl/resources/language/ksf.json
@@ -0,0 +1,738 @@
+{
+ "af": {
+ "code": "af",
+ "name": "Afrikaans"
+ },
+ "agq": {
+ "code": "agq",
+ "name": "Aghem"
+ },
+ "sq": {
+ "code": "sq",
+ "name": "Albanian"
+ },
+ "ar-001": {
+ "code": "ar-001",
+ "name": "ar_001"
+ },
+ "hy": {
+ "code": "hy",
+ "name": "Armenian"
+ },
+ "ast": {
+ "code": "ast",
+ "name": "Asturian"
+ },
+ "asa": {
+ "code": "asa",
+ "name": "Asu"
+ },
+ "az": {
+ "code": "az",
+ "name": "Azerbaijani"
+ },
+ "bm": {
+ "code": "bm",
+ "name": "Bambara"
+ },
+ "bas": {
+ "code": "bas",
+ "name": "Basaa"
+ },
+ "eu": {
+ "code": "eu",
+ "name": "Basque"
+ },
+ "bez": {
+ "code": "bez",
+ "name": "Bena"
+ },
+ "brx": {
+ "code": "brx",
+ "name": "Bodo"
+ },
+ "bs": {
+ "code": "bs",
+ "name": "Bosnian"
+ },
+ "br": {
+ "code": "br",
+ "name": "Breton"
+ },
+ "ca": {
+ "code": "ca",
+ "name": "Catalan"
+ },
+ "tzm": {
+ "code": "tzm",
+ "name": "Central Atlas Tamazight"
+ },
+ "chr": {
+ "code": "chr",
+ "name": "Cherokee"
+ },
+ "cgg": {
+ "code": "cgg",
+ "name": "Chiga"
+ },
+ "ksh": {
+ "code": "ksh",
+ "name": "Colognian"
+ },
+ "swc": {
+ "code": "swc",
+ "name": "Congo Swahili"
+ },
+ "hr": {
+ "code": "hr",
+ "name": "Croatian"
+ },
+ "da": {
+ "code": "da",
+ "name": "Danish"
+ },
+ "de-AT": {
+ "code": "de-AT",
+ "name": "de_AT"
+ },
+ "de-CH": {
+ "code": "de-CH",
+ "name": "de_CH"
+ },
+ "dz": {
+ "code": "dz",
+ "name": "Dzongkha"
+ },
+ "ebu": {
+ "code": "ebu",
+ "name": "Embu"
+ },
+ "en-AU": {
+ "code": "en-AU",
+ "name": "en_AU"
+ },
+ "en-CA": {
+ "code": "en-CA",
+ "name": "en_CA"
+ },
+ "en-GB": {
+ "code": "en-GB",
+ "name": "en_GB"
+ },
+ "en-US": {
+ "code": "en-US",
+ "name": "en_US"
+ },
+ "es-ES": {
+ "code": "es-ES",
+ "name": "es_ES"
+ },
+ "es-MX": {
+ "code": "es-MX",
+ "name": "es_MX"
+ },
+ "eo": {
+ "code": "eo",
+ "name": "Esperanto"
+ },
+ "et": {
+ "code": "et",
+ "name": "Estonian"
+ },
+ "ee": {
+ "code": "ee",
+ "name": "Ewe"
+ },
+ "ewo": {
+ "code": "ewo",
+ "name": "Ewondo"
+ },
+ "fo": {
+ "code": "fo",
+ "name": "Faroese"
+ },
+ "fil": {
+ "code": "fil",
+ "name": "Filipino"
+ },
+ "fi": {
+ "code": "fi",
+ "name": "Finnish"
+ },
+ "fr-CA": {
+ "code": "fr-CA",
+ "name": "fr_CA"
+ },
+ "fr-CH": {
+ "code": "fr-CH",
+ "name": "fr_CH"
+ },
+ "fur": {
+ "code": "fur",
+ "name": "Friulian"
+ },
+ "ff": {
+ "code": "ff",
+ "name": "Fulah"
+ },
+ "gl": {
+ "code": "gl",
+ "name": "Galician"
+ },
+ "lg": {
+ "code": "lg",
+ "name": "Ganda"
+ },
+ "ka": {
+ "code": "ka",
+ "name": "Georgian"
+ },
+ "gu": {
+ "code": "gu",
+ "name": "Gujarati"
+ },
+ "guz": {
+ "code": "guz",
+ "name": "Gusii"
+ },
+ "he": {
+ "code": "he",
+ "name": "Hebrew"
+ },
+ "is": {
+ "code": "is",
+ "name": "Icelandic"
+ },
+ "ga": {
+ "code": "ga",
+ "name": "Irish"
+ },
+ "dyo": {
+ "code": "dyo",
+ "name": "Jola-Fonyi"
+ },
+ "kea": {
+ "code": "kea",
+ "name": "Kabuverdianu"
+ },
+ "kab": {
+ "code": "kab",
+ "name": "Kabyle"
+ },
+ "kl": {
+ "code": "kl",
+ "name": "Kalaallisut"
+ },
+ "kln": {
+ "code": "kln",
+ "name": "Kalenjin"
+ },
+ "kam": {
+ "code": "kam",
+ "name": "Kamba"
+ },
+ "kn": {
+ "code": "kn",
+ "name": "Kannada"
+ },
+ "ks": {
+ "code": "ks",
+ "name": "Kashmiri"
+ },
+ "kk": {
+ "code": "kk",
+ "name": "Kazakh"
+ },
+ "ki": {
+ "code": "ki",
+ "name": "Kikuyu"
+ },
+ "khq": {
+ "code": "khq",
+ "name": "Koyra Chiini"
+ },
+ "ses": {
+ "code": "ses",
+ "name": "Koyraboro Senni"
+ },
+ "nmg": {
+ "code": "nmg",
+ "name": "Kwasio"
+ },
+ "ky": {
+ "code": "ky",
+ "name": "Kyrgyz"
+ },
+ "lag": {
+ "code": "lag",
+ "name": "Langi"
+ },
+ "lo": {
+ "code": "lo",
+ "name": "Lao"
+ },
+ "lv": {
+ "code": "lv",
+ "name": "Latvian"
+ },
+ "ln": {
+ "code": "ln",
+ "name": "Lingala"
+ },
+ "lt": {
+ "code": "lt",
+ "name": "Lithuanian"
+ },
+ "dsb": {
+ "code": "dsb",
+ "name": "Lower Sorbian"
+ },
+ "lu": {
+ "code": "lu",
+ "name": "Luba-Katanga"
+ },
+ "luo": {
+ "code": "luo",
+ "name": "Luo"
+ },
+ "lb": {
+ "code": "lb",
+ "name": "Luxembourgish"
+ },
+ "luy": {
+ "code": "luy",
+ "name": "Luyia"
+ },
+ "mk": {
+ "code": "mk",
+ "name": "Macedonian"
+ },
+ "jmc": {
+ "code": "jmc",
+ "name": "Machame"
+ },
+ "mgh": {
+ "code": "mgh",
+ "name": "Makhuwa-Meetto"
+ },
+ "kde": {
+ "code": "kde",
+ "name": "Makonde"
+ },
+ "mg": {
+ "code": "mg",
+ "name": "Malagasy"
+ },
+ "ml": {
+ "code": "ml",
+ "name": "Malayalam"
+ },
+ "mt": {
+ "code": "mt",
+ "name": "Maltese"
+ },
+ "mr": {
+ "code": "mr",
+ "name": "Marathi"
+ },
+ "mas": {
+ "code": "mas",
+ "name": "Masai"
+ },
+ "mer": {
+ "code": "mer",
+ "name": "Meru"
+ },
+ "mn": {
+ "code": "mn",
+ "name": "Mongolian"
+ },
+ "mfe": {
+ "code": "mfe",
+ "name": "Morisyen"
+ },
+ "mua": {
+ "code": "mua",
+ "name": "Mundang"
+ },
+ "naq": {
+ "code": "naq",
+ "name": "Nama"
+ },
+ "jgo": {
+ "code": "jgo",
+ "name": "Ngomba"
+ },
+ "nl-BE": {
+ "code": "nl-BE",
+ "name": "nl_BE"
+ },
+ "nd": {
+ "code": "nd",
+ "name": "North Ndebele"
+ },
+ "se": {
+ "code": "se",
+ "name": "Northern Sami"
+ },
+ "nb": {
+ "code": "nb",
+ "name": "Norwegian Bokmål"
+ },
+ "nn": {
+ "code": "nn",
+ "name": "Norwegian Nynorsk"
+ },
+ "nus": {
+ "code": "nus",
+ "name": "Nuer"
+ },
+ "nyn": {
+ "code": "nyn",
+ "name": "Nyankole"
+ },
+ "or": {
+ "code": "or",
+ "name": "Oriya"
+ },
+ "ps": {
+ "code": "ps",
+ "name": "Pashto"
+ },
+ "pt-BR": {
+ "code": "pt-BR",
+ "name": "pt_BR"
+ },
+ "pt-PT": {
+ "code": "pt-PT",
+ "name": "pt_PT"
+ },
+ "ak": {
+ "code": "ak",
+ "name": "riakan"
+ },
+ "am": {
+ "code": "am",
+ "name": "riamarik"
+ },
+ "ar": {
+ "code": "ar",
+ "name": "riarab"
+ },
+ "be": {
+ "code": "be",
+ "name": "ribɛlɔrís"
+ },
+ "bn": {
+ "code": "bn",
+ "name": "ribɛngáli"
+ },
+ "my": {
+ "code": "my",
+ "name": "ribirmán"
+ },
+ "bg": {
+ "code": "bg",
+ "name": "ribulgarí"
+ },
+ "cs": {
+ "code": "cs",
+ "name": "ricÉ›Ìk"
+ },
+ "zh": {
+ "code": "zh",
+ "name": "ricinɔá"
+ },
+ "de": {
+ "code": "de",
+ "name": "ridjɛrman"
+ },
+ "el": {
+ "code": "el",
+ "name": "rigrÉ›Ìk"
+ },
+ "hi": {
+ "code": "hi",
+ "name": "riíndí"
+ },
+ "id": {
+ "code": "id",
+ "name": "riindonɛsí"
+ },
+ "en": {
+ "code": "en",
+ "name": "riingɛrís"
+ },
+ "it": {
+ "code": "it",
+ "name": "riitalyÉ›Ìn"
+ },
+ "ja": {
+ "code": "ja",
+ "name": "rijapÉ”ÌÅ‹"
+ },
+ "ha": {
+ "code": "ha",
+ "name": "rikaksa"
+ },
+ "km": {
+ "code": "km",
+ "name": "rikmɛr"
+ },
+ "ko": {
+ "code": "ko",
+ "name": "rikÉ”rɛɛÌ"
+ },
+ "ksf": {
+ "code": "ksf",
+ "name": "rikpa"
+ },
+ "es": {
+ "code": "es",
+ "name": "rikpanyá"
+ },
+ "ms": {
+ "code": "ms",
+ "name": "rimalaí"
+ },
+ "ne": {
+ "code": "ne",
+ "name": "rinepalÉ›Ì"
+ },
+ "nl": {
+ "code": "nl",
+ "name": "riÉ”lándÉ›Ì"
+ },
+ "hu": {
+ "code": "hu",
+ "name": "riɔngrɔá"
+ },
+ "pa": {
+ "code": "pa",
+ "name": "ripɛnjabí"
+ },
+ "fr": {
+ "code": "fr",
+ "name": "ripÉ›rÉ›sÇÌ"
+ },
+ "fa": {
+ "code": "fa",
+ "name": "ripɛrsán"
+ },
+ "pl": {
+ "code": "pl",
+ "name": "ripÉ”lÉ”Ìn"
+ },
+ "pt": {
+ "code": "pt",
+ "name": "ripÉ”rtugÉ›Ì"
+ },
+ "ru": {
+ "code": "ru",
+ "name": "rirís"
+ },
+ "ro": {
+ "code": "ro",
+ "name": "rirɔmán"
+ },
+ "so": {
+ "code": "so",
+ "name": "risomalí"
+ },
+ "sv": {
+ "code": "sv",
+ "name": "riswÉ›ÌdÇ"
+ },
+ "th": {
+ "code": "th",
+ "name": "ritaí"
+ },
+ "ta": {
+ "code": "ta",
+ "name": "ritamúl"
+ },
+ "tr": {
+ "code": "tr",
+ "name": "riturk"
+ },
+ "uk": {
+ "code": "uk",
+ "name": "riukrÉ›Ìn"
+ },
+ "ur": {
+ "code": "ur",
+ "name": "riurdú"
+ },
+ "vi": {
+ "code": "vi",
+ "name": "riwyɛtnám"
+ },
+ "yo": {
+ "code": "yo",
+ "name": "riyúuba"
+ },
+ "zu": {
+ "code": "zu",
+ "name": "rizúlu"
+ },
+ "ro-MD": {
+ "code": "ro-MD",
+ "name": "ro_MD"
+ },
+ "rm": {
+ "code": "rm",
+ "name": "Romansh"
+ },
+ "rof": {
+ "code": "rof",
+ "name": "Rombo"
+ },
+ "rn": {
+ "code": "rn",
+ "name": "Rundi"
+ },
+ "rwk": {
+ "code": "rwk",
+ "name": "Rwa"
+ },
+ "saq": {
+ "code": "saq",
+ "name": "Samburu"
+ },
+ "sg": {
+ "code": "sg",
+ "name": "Sango"
+ },
+ "sbp": {
+ "code": "sbp",
+ "name": "Sangu"
+ },
+ "gd": {
+ "code": "gd",
+ "name": "Scottish Gaelic"
+ },
+ "seh": {
+ "code": "seh",
+ "name": "Sena"
+ },
+ "sr": {
+ "code": "sr",
+ "name": "Serbian"
+ },
+ "ksb": {
+ "code": "ksb",
+ "name": "Shambala"
+ },
+ "sn": {
+ "code": "sn",
+ "name": "Shona"
+ },
+ "si": {
+ "code": "si",
+ "name": "Sinhala"
+ },
+ "sk": {
+ "code": "sk",
+ "name": "Slovak"
+ },
+ "sl": {
+ "code": "sl",
+ "name": "Slovenian"
+ },
+ "xog": {
+ "code": "xog",
+ "name": "Soga"
+ },
+ "zgh": {
+ "code": "zgh",
+ "name": "Standard Moroccan Tamazight"
+ },
+ "sw": {
+ "code": "sw",
+ "name": "Swahili"
+ },
+ "gsw": {
+ "code": "gsw",
+ "name": "Swiss German"
+ },
+ "shi": {
+ "code": "shi",
+ "name": "Tachelhit"
+ },
+ "dav": {
+ "code": "dav",
+ "name": "Taita"
+ },
+ "twq": {
+ "code": "twq",
+ "name": "Tasawaq"
+ },
+ "te": {
+ "code": "te",
+ "name": "Telugu"
+ },
+ "teo": {
+ "code": "teo",
+ "name": "Teso"
+ },
+ "bo": {
+ "code": "bo",
+ "name": "Tibetan"
+ },
+ "ti": {
+ "code": "ti",
+ "name": "Tigrinya"
+ },
+ "to": {
+ "code": "to",
+ "name": "Tongan"
+ },
+ "hsb": {
+ "code": "hsb",
+ "name": "Upper Sorbian"
+ },
+ "ug": {
+ "code": "ug",
+ "name": "Uyghur"
+ },
+ "uz": {
+ "code": "uz",
+ "name": "Uzbek"
+ },
+ "vai": {
+ "code": "vai",
+ "name": "Vai"
+ },
+ "vun": {
+ "code": "vun",
+ "name": "Vunjo"
+ },
+ "wae": {
+ "code": "wae",
+ "name": "Walser"
+ },
+ "cy": {
+ "code": "cy",
+ "name": "Welsh"
+ },
+ "fy": {
+ "code": "fy",
+ "name": "Western Frisian"
+ },
+ "yav": {
+ "code": "yav",
+ "name": "Yangben"
+ },
+ "dje": {
+ "code": "dje",
+ "name": "Zarma"
+ },
+ "zh-Hans": {
+ "code": "zh-Hans",
+ "name": "zh_Hans"
+ },
+ "zh-Hant": {
+ "code": "zh-Hant",
+ "name": "zh_Hant"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/language/ksh.json b/library/intl/resources/language/ksh.json
new file mode 100644
index 000000000..fa10ab9a9
--- /dev/null
+++ b/library/intl/resources/language/ksh.json
@@ -0,0 +1,738 @@
+{
+ "af": {
+ "code": "af",
+ "name": "Afrikaans"
+ },
+ "agq": {
+ "code": "agq",
+ "name": "Aghem"
+ },
+ "ak": {
+ "code": "ak",
+ "name": "Akahnesch"
+ },
+ "sq": {
+ "code": "sq",
+ "name": "Albaanesch"
+ },
+ "en-US": {
+ "code": "en-US",
+ "name": "Amärrekaanesch Änglesch"
+ },
+ "am": {
+ "code": "am",
+ "name": "Amhahresch"
+ },
+ "en": {
+ "code": "en",
+ "name": "Änglesch"
+ },
+ "en-AU": {
+ "code": "en-AU",
+ "name": "Änglesch uß Außtraalije"
+ },
+ "en-GB": {
+ "code": "en-GB",
+ "name": "Änglesch uß Jruußbrettannije"
+ },
+ "en-CA": {
+ "code": "en-CA",
+ "name": "Änglesch uß Kanada"
+ },
+ "ar": {
+ "code": "ar",
+ "name": "Arahbesch"
+ },
+ "hy": {
+ "code": "hy",
+ "name": "Armeenesch"
+ },
+ "az": {
+ "code": "az",
+ "name": "Asserbaidschahnesch"
+ },
+ "et": {
+ "code": "et",
+ "name": "Äßnesch"
+ },
+ "ast": {
+ "code": "ast",
+ "name": "Astuhrejahnesch"
+ },
+ "ksf": {
+ "code": "ksf",
+ "name": "Bafia"
+ },
+ "bm": {
+ "code": "bm",
+ "name": "Bambara"
+ },
+ "bn": {
+ "code": "bn",
+ "name": "Bängjaalesch"
+ },
+ "bas": {
+ "code": "bas",
+ "name": "Basaa"
+ },
+ "eu": {
+ "code": "eu",
+ "name": "Baskesch"
+ },
+ "bez": {
+ "code": "bez",
+ "name": "Bena"
+ },
+ "br": {
+ "code": "br",
+ "name": "Bettohnesch"
+ },
+ "brx": {
+ "code": "brx",
+ "name": "Boddo"
+ },
+ "bs": {
+ "code": "bs",
+ "name": "Boßnesch"
+ },
+ "pt-BR": {
+ "code": "pt-BR",
+ "name": "Brasilljaanesch Pochtojesesch"
+ },
+ "bg": {
+ "code": "bg",
+ "name": "Bulljaaresch"
+ },
+ "my": {
+ "code": "my",
+ "name": "Burmessesch"
+ },
+ "dz": {
+ "code": "dz",
+ "name": "Butahnesch"
+ },
+ "tzm": {
+ "code": "tzm",
+ "name": "Central Atlas Tamazight"
+ },
+ "chr": {
+ "code": "chr",
+ "name": "Cherokee"
+ },
+ "cgg": {
+ "code": "cgg",
+ "name": "Chiga"
+ },
+ "swc": {
+ "code": "swc",
+ "name": "Congo Swahili"
+ },
+ "da": {
+ "code": "da",
+ "name": "Dähnesch"
+ },
+ "de": {
+ "code": "de",
+ "name": "Deutsch"
+ },
+ "de-CH": {
+ "code": "de-CH",
+ "name": "Deutsch uß de Schweijz"
+ },
+ "de-AT": {
+ "code": "de-AT",
+ "name": "Deutsch uß Ößterich"
+ },
+ "ebu": {
+ "code": "ebu",
+ "name": "Embu"
+ },
+ "eo": {
+ "code": "eo",
+ "name": "Esperanto"
+ },
+ "it": {
+ "code": "it",
+ "name": "Etalljänesch"
+ },
+ "ee": {
+ "code": "ee",
+ "name": "Ewe"
+ },
+ "ewo": {
+ "code": "ewo",
+ "name": "Ewondo"
+ },
+ "fo": {
+ "code": "fo",
+ "name": "Färröeresch"
+ },
+ "fil": {
+ "code": "fil",
+ "name": "Filipino"
+ },
+ "fi": {
+ "code": "fi",
+ "name": "Finnesch"
+ },
+ "nl-BE": {
+ "code": "nl-BE",
+ "name": "Flämesch"
+ },
+ "fr": {
+ "code": "fr",
+ "name": "Franzüüsesch"
+ },
+ "fr-CH": {
+ "code": "fr-CH",
+ "name": "Franzüüsesch uß de Schweijz"
+ },
+ "fr-CA": {
+ "code": "fr-CA",
+ "name": "Franzüüsesch uß Kanada"
+ },
+ "fur": {
+ "code": "fur",
+ "name": "Friulian"
+ },
+ "ff": {
+ "code": "ff",
+ "name": "Fulah"
+ },
+ "lg": {
+ "code": "lg",
+ "name": "Ganda"
+ },
+ "guz": {
+ "code": "guz",
+ "name": "Gusii"
+ },
+ "gu": {
+ "code": "gu",
+ "name": "Gutscharatesch"
+ },
+ "ha": {
+ "code": "ha",
+ "name": "Haußa"
+ },
+ "he": {
+ "code": "he",
+ "name": "Hebräjesch"
+ },
+ "hi": {
+ "code": "hi",
+ "name": "Hindi"
+ },
+ "nl": {
+ "code": "nl",
+ "name": "Holländesch"
+ },
+ "ga": {
+ "code": "ga",
+ "name": "Ieresch"
+ },
+ "id": {
+ "code": "id",
+ "name": "Indoneesesch"
+ },
+ "is": {
+ "code": "is",
+ "name": "Ißländesch"
+ },
+ "gl": {
+ "code": "gl",
+ "name": "Jalliizesch"
+ },
+ "ja": {
+ "code": "ja",
+ "name": "Japaanesch"
+ },
+ "ka": {
+ "code": "ka",
+ "name": "Je’orjesch"
+ },
+ "dyo": {
+ "code": "dyo",
+ "name": "Jola-Fonyi"
+ },
+ "yo": {
+ "code": "yo",
+ "name": "Joruuba"
+ },
+ "el": {
+ "code": "el",
+ "name": "Jrihschesch"
+ },
+ "rn": {
+ "code": "rn",
+ "name": "K-Rundesch"
+ },
+ "kab": {
+ "code": "kab",
+ "name": "Kabyle"
+ },
+ "kl": {
+ "code": "kl",
+ "name": "Kalaallisut"
+ },
+ "kln": {
+ "code": "kln",
+ "name": "Kalenjin"
+ },
+ "kam": {
+ "code": "kam",
+ "name": "Kamba"
+ },
+ "kn": {
+ "code": "kn",
+ "name": "Kannada"
+ },
+ "kea": {
+ "code": "kea",
+ "name": "Kapvärdesch"
+ },
+ "ks": {
+ "code": "ks",
+ "name": "Kaschmieresch"
+ },
+ "kk": {
+ "code": "kk",
+ "name": "Kassakesch"
+ },
+ "ca": {
+ "code": "ca",
+ "name": "Kattalahnesch"
+ },
+ "km": {
+ "code": "km",
+ "name": "Khmer"
+ },
+ "ki": {
+ "code": "ki",
+ "name": "Kikuyu"
+ },
+ "ky": {
+ "code": "ky",
+ "name": "Kirjihsesch"
+ },
+ "rof": {
+ "code": "rof",
+ "name": "Kirombo"
+ },
+ "ksh": {
+ "code": "ksh",
+ "name": "Kölsch"
+ },
+ "ko": {
+ "code": "ko",
+ "name": "Korrejaanesch"
+ },
+ "khq": {
+ "code": "khq",
+ "name": "Koyra Chiini"
+ },
+ "ses": {
+ "code": "ses",
+ "name": "Koyraboro Senni"
+ },
+ "hr": {
+ "code": "hr",
+ "name": "Krowatesch"
+ },
+ "nmg": {
+ "code": "nmg",
+ "name": "Kwasio"
+ },
+ "lo": {
+ "code": "lo",
+ "name": "Lahootesch"
+ },
+ "lag": {
+ "code": "lag",
+ "name": "Langi"
+ },
+ "lv": {
+ "code": "lv",
+ "name": "Lättesch"
+ },
+ "ln": {
+ "code": "ln",
+ "name": "Lingjalla"
+ },
+ "lt": {
+ "code": "lt",
+ "name": "Littouesch"
+ },
+ "lu": {
+ "code": "lu",
+ "name": "Luba-Katanga"
+ },
+ "luo": {
+ "code": "luo",
+ "name": "Luo"
+ },
+ "lb": {
+ "code": "lb",
+ "name": "Luxemborjesch"
+ },
+ "luy": {
+ "code": "luy",
+ "name": "Luyjanesch"
+ },
+ "jmc": {
+ "code": "jmc",
+ "name": "Machame"
+ },
+ "mg": {
+ "code": "mg",
+ "name": "Madajaßkesch"
+ },
+ "mgh": {
+ "code": "mgh",
+ "name": "Makhuwa-Meetto"
+ },
+ "kde": {
+ "code": "kde",
+ "name": "Makonde"
+ },
+ "ms": {
+ "code": "ms",
+ "name": "Mallaijesch"
+ },
+ "ml": {
+ "code": "ml",
+ "name": "Mallajalam"
+ },
+ "mt": {
+ "code": "mt",
+ "name": "Malteesesch"
+ },
+ "mr": {
+ "code": "mr",
+ "name": "Marraatesch"
+ },
+ "mas": {
+ "code": "mas",
+ "name": "Masai"
+ },
+ "mk": {
+ "code": "mk",
+ "name": "Mazedoonesch"
+ },
+ "mer": {
+ "code": "mer",
+ "name": "Meru"
+ },
+ "mn": {
+ "code": "mn",
+ "name": "Mongjolesch"
+ },
+ "mfe": {
+ "code": "mfe",
+ "name": "Morisyen"
+ },
+ "mua": {
+ "code": "mua",
+ "name": "Mundang"
+ },
+ "naq": {
+ "code": "naq",
+ "name": "Nama"
+ },
+ "ne": {
+ "code": "ne",
+ "name": "Nepallessesch"
+ },
+ "nn": {
+ "code": "nn",
+ "name": "Neu-Norrweejesch"
+ },
+ "jgo": {
+ "code": "jgo",
+ "name": "Ngomba"
+ },
+ "dsb": {
+ "code": "dsb",
+ "name": "Niddersorbesch"
+ },
+ "se": {
+ "code": "se",
+ "name": "Nood-Lappländesch"
+ },
+ "nd": {
+ "code": "nd",
+ "name": "Nood-Ndebele"
+ },
+ "nb": {
+ "code": "nb",
+ "name": "Norrweejesch Bokmål"
+ },
+ "nus": {
+ "code": "nus",
+ "name": "Nuer"
+ },
+ "nyn": {
+ "code": "nyn",
+ "name": "Nyankole"
+ },
+ "or": {
+ "code": "or",
+ "name": "Oriija"
+ },
+ "pa": {
+ "code": "pa",
+ "name": "Panschaabesch"
+ },
+ "asa": {
+ "code": "asa",
+ "name": "Pare"
+ },
+ "fa": {
+ "code": "fa",
+ "name": "Pärsesch"
+ },
+ "ps": {
+ "code": "ps",
+ "name": "Paschtuunesch"
+ },
+ "pt": {
+ "code": "pt",
+ "name": "Pochtojesesch"
+ },
+ "pt-PT": {
+ "code": "pt-PT",
+ "name": "Pochtojesesch uß Pochtojall"
+ },
+ "pl": {
+ "code": "pl",
+ "name": "Pollnesch"
+ },
+ "rm": {
+ "code": "rm",
+ "name": "Rätoromaanesch"
+ },
+ "ro-MD": {
+ "code": "ro-MD",
+ "name": "ro_MD"
+ },
+ "ro": {
+ "code": "ro",
+ "name": "Rumänesch"
+ },
+ "ru": {
+ "code": "ru",
+ "name": "Rußßesch"
+ },
+ "rwk": {
+ "code": "rwk",
+ "name": "Rwa"
+ },
+ "saq": {
+ "code": "saq",
+ "name": "Samburu"
+ },
+ "sg": {
+ "code": "sg",
+ "name": "Sangjo"
+ },
+ "sbp": {
+ "code": "sbp",
+ "name": "Sangu"
+ },
+ "sr": {
+ "code": "sr",
+ "name": "Särbesch"
+ },
+ "sn": {
+ "code": "sn",
+ "name": "Schi-Schona"
+ },
+ "zh": {
+ "code": "zh",
+ "name": "Schineesesch"
+ },
+ "zh-Hans": {
+ "code": "zh-Hans",
+ "name": "Schineesesch en de eijfacher Schreff"
+ },
+ "zh-Hant": {
+ "code": "zh-Hant",
+ "name": "Schineesesch en de tradizjonälle Schreff"
+ },
+ "es": {
+ "code": "es",
+ "name": "Schpahnesch"
+ },
+ "es-MX": {
+ "code": "es-MX",
+ "name": "Schpahnesch en Mäxikoh"
+ },
+ "es-ES": {
+ "code": "es-ES",
+ "name": "Schpahnesch en Schpahneje"
+ },
+ "ar-001": {
+ "code": "ar-001",
+ "name": "Schtandatt Arahbesch"
+ },
+ "sv": {
+ "code": "sv",
+ "name": "Schweedesch"
+ },
+ "gsw": {
+ "code": "gsw",
+ "name": "Schwitzerdütsch"
+ },
+ "gd": {
+ "code": "gd",
+ "name": "Scottish Gaelic"
+ },
+ "seh": {
+ "code": "seh",
+ "name": "Sena"
+ },
+ "ksb": {
+ "code": "ksb",
+ "name": "Shambala"
+ },
+ "si": {
+ "code": "si",
+ "name": "Singjaleesesch"
+ },
+ "xog": {
+ "code": "xog",
+ "name": "Soga"
+ },
+ "so": {
+ "code": "so",
+ "name": "Somaalesch"
+ },
+ "sk": {
+ "code": "sk",
+ "name": "ẞlovakesch"
+ },
+ "sl": {
+ "code": "sl",
+ "name": "ẞloveenesch"
+ },
+ "zgh": {
+ "code": "zgh",
+ "name": "Standard Moroccan Tamazight"
+ },
+ "sw": {
+ "code": "sw",
+ "name": "Suaheelesch"
+ },
+ "zu": {
+ "code": "zu",
+ "name": "Suulu"
+ },
+ "shi": {
+ "code": "shi",
+ "name": "Tachelhit"
+ },
+ "th": {
+ "code": "th",
+ "name": "Tailändesch"
+ },
+ "dav": {
+ "code": "dav",
+ "name": "Taita"
+ },
+ "ta": {
+ "code": "ta",
+ "name": "Tamiilesch"
+ },
+ "twq": {
+ "code": "twq",
+ "name": "Tasawaq"
+ },
+ "te": {
+ "code": "te",
+ "name": "Telluuju"
+ },
+ "teo": {
+ "code": "teo",
+ "name": "Teso"
+ },
+ "bo": {
+ "code": "bo",
+ "name": "Tibehtesch"
+ },
+ "ti": {
+ "code": "ti",
+ "name": "Tijrenejaanesch"
+ },
+ "to": {
+ "code": "to",
+ "name": "Tongjaanesch"
+ },
+ "tr": {
+ "code": "tr",
+ "name": "Törkesch"
+ },
+ "cs": {
+ "code": "cs",
+ "name": "Tschäschesch"
+ },
+ "ug": {
+ "code": "ug",
+ "name": "Uj’juuersch"
+ },
+ "uk": {
+ "code": "uk",
+ "name": "Ukrainesch"
+ },
+ "hu": {
+ "code": "hu",
+ "name": "Unjarresch"
+ },
+ "hsb": {
+ "code": "hsb",
+ "name": "Upper Sorbian"
+ },
+ "ur": {
+ "code": "ur",
+ "name": "Urdu\/Hindi"
+ },
+ "uz": {
+ "code": "uz",
+ "name": "Ußbeekesch"
+ },
+ "vai": {
+ "code": "vai",
+ "name": "Vai"
+ },
+ "vi": {
+ "code": "vi",
+ "name": "Vijätnammeesesch"
+ },
+ "vun": {
+ "code": "vun",
+ "name": "Vunjo"
+ },
+ "cy": {
+ "code": "cy",
+ "name": "Wallihsesch"
+ },
+ "wae": {
+ "code": "wae",
+ "name": "Walserdütsch"
+ },
+ "fy": {
+ "code": "fy",
+ "name": "Wäßfriisesch"
+ },
+ "be": {
+ "code": "be",
+ "name": "Wiißrußesch"
+ },
+ "yav": {
+ "code": "yav",
+ "name": "Yangben"
+ },
+ "dje": {
+ "code": "dje",
+ "name": "Zarma"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/language/ky.json b/library/intl/resources/language/ky.json
new file mode 100644
index 000000000..6a22c40cf
--- /dev/null
+++ b/library/intl/resources/language/ky.json
@@ -0,0 +1,738 @@
+{
+ "ast": {
+ "code": "ast",
+ "name": "Asturian"
+ },
+ "bas": {
+ "code": "bas",
+ "name": "Basaa"
+ },
+ "ksh": {
+ "code": "ksh",
+ "name": "Colognian"
+ },
+ "de-AT": {
+ "code": "de-AT",
+ "name": "de_AT"
+ },
+ "en-AU": {
+ "code": "en-AU",
+ "name": "en_AU"
+ },
+ "en-CA": {
+ "code": "en-CA",
+ "name": "en_CA"
+ },
+ "en-GB": {
+ "code": "en-GB",
+ "name": "en_GB"
+ },
+ "en-US": {
+ "code": "en-US",
+ "name": "en_US"
+ },
+ "es-MX": {
+ "code": "es-MX",
+ "name": "es_MX"
+ },
+ "ewo": {
+ "code": "ewo",
+ "name": "Ewondo"
+ },
+ "fr-CA": {
+ "code": "fr-CA",
+ "name": "fr_CA"
+ },
+ "fr-CH": {
+ "code": "fr-CH",
+ "name": "fr_CH"
+ },
+ "fur": {
+ "code": "fur",
+ "name": "Friulian"
+ },
+ "ff": {
+ "code": "ff",
+ "name": "Fulah"
+ },
+ "pt-BR": {
+ "code": "pt-BR",
+ "name": "pt_BR"
+ },
+ "gd": {
+ "code": "gd",
+ "name": "Scottish Gaelic"
+ },
+ "wae": {
+ "code": "wae",
+ "name": "Walser"
+ },
+ "yav": {
+ "code": "yav",
+ "name": "Yangben"
+ },
+ "agq": {
+ "code": "agq",
+ "name": "агемче"
+ },
+ "az": {
+ "code": "az",
+ "name": "азербайжанча"
+ },
+ "ar-001": {
+ "code": "ar-001",
+ "name": "азыркы адабий араб тилинде"
+ },
+ "ak": {
+ "code": "ak",
+ "name": "аканча"
+ },
+ "sq": {
+ "code": "sq",
+ "name": "албанча"
+ },
+ "am": {
+ "code": "am",
+ "name": "амхарча"
+ },
+ "en": {
+ "code": "en",
+ "name": "англиÑче"
+ },
+ "ar": {
+ "code": "ar",
+ "name": "арабча"
+ },
+ "hy": {
+ "code": "hy",
+ "name": "армÑнча"
+ },
+ "asa": {
+ "code": "asa",
+ "name": "аÑуча"
+ },
+ "af": {
+ "code": "af",
+ "name": "африкаанча"
+ },
+ "bm": {
+ "code": "bm",
+ "name": "бамбарада"
+ },
+ "bn": {
+ "code": "bn",
+ "name": "бангладешче"
+ },
+ "eu": {
+ "code": "eu",
+ "name": "баÑкча"
+ },
+ "fy": {
+ "code": "fy",
+ "name": "батыш фризче"
+ },
+ "ksf": {
+ "code": "ksf",
+ "name": "бафиÑча"
+ },
+ "be": {
+ "code": "be",
+ "name": "беларуÑча"
+ },
+ "bez": {
+ "code": "bez",
+ "name": "бенача"
+ },
+ "brx": {
+ "code": "brx",
+ "name": "бододо"
+ },
+ "bg": {
+ "code": "bg",
+ "name": "болгарча"
+ },
+ "tzm": {
+ "code": "tzm",
+ "name": "борбордук ÐÑ‚Ð»Ð°Ñ Ñ‚Ð°Ð¼Ð°Ð·Ð¸Ñ‚Ñ‡Ðµ"
+ },
+ "bs": {
+ "code": "bs",
+ "name": "боÑнийче"
+ },
+ "br": {
+ "code": "br",
+ "name": "бретончо"
+ },
+ "my": {
+ "code": "my",
+ "name": "бурмача"
+ },
+ "vai": {
+ "code": "vai",
+ "name": "вайиче"
+ },
+ "vun": {
+ "code": "vun",
+ "name": "вунжочо"
+ },
+ "vi": {
+ "code": "vi",
+ "name": "вьетнамча"
+ },
+ "gl": {
+ "code": "gl",
+ "name": "галиÑиÑча"
+ },
+ "lg": {
+ "code": "lg",
+ "name": "гандача"
+ },
+ "nl": {
+ "code": "nl",
+ "name": "голландча"
+ },
+ "el": {
+ "code": "el",
+ "name": "грекче"
+ },
+ "ka": {
+ "code": "ka",
+ "name": "грузинче"
+ },
+ "gu": {
+ "code": "gu",
+ "name": "гужаратча"
+ },
+ "guz": {
+ "code": "guz",
+ "name": "гуÑиче"
+ },
+ "da": {
+ "code": "da",
+ "name": "датча"
+ },
+ "de-CH": {
+ "code": "de-CH",
+ "name": "жогорку немиÑче (ШвейцариÑ)"
+ },
+ "hsb": {
+ "code": "hsb",
+ "name": "жогорку Ñорбианча"
+ },
+ "dyo": {
+ "code": "dyo",
+ "name": "жола-фониче"
+ },
+ "dz": {
+ "code": "dz",
+ "name": "жонгуча"
+ },
+ "dje": {
+ "code": "dje",
+ "name": "замрача"
+ },
+ "zu": {
+ "code": "zu",
+ "name": "зулуча"
+ },
+ "he": {
+ "code": "he",
+ "name": "ивритте"
+ },
+ "id": {
+ "code": "id",
+ "name": "индонезче"
+ },
+ "ga": {
+ "code": "ga",
+ "name": "ирландча"
+ },
+ "is": {
+ "code": "is",
+ "name": "иÑландча"
+ },
+ "es": {
+ "code": "es",
+ "name": "иÑпанча"
+ },
+ "es-ES": {
+ "code": "es-ES",
+ "name": "иÑпанча (Европа)"
+ },
+ "it": {
+ "code": "it",
+ "name": "италиÑнча"
+ },
+ "yo": {
+ "code": "yo",
+ "name": "йорубача"
+ },
+ "kea": {
+ "code": "kea",
+ "name": "кабувердиче"
+ },
+ "kab": {
+ "code": "kab",
+ "name": "кабылча"
+ },
+ "kk": {
+ "code": "kk",
+ "name": "казакча"
+ },
+ "kl": {
+ "code": "kl",
+ "name": "калаалиÑутча"
+ },
+ "kln": {
+ "code": "kln",
+ "name": "каленжиче"
+ },
+ "kam": {
+ "code": "kam",
+ "name": "камбача"
+ },
+ "kn": {
+ "code": "kn",
+ "name": "каннадача"
+ },
+ "ca": {
+ "code": "ca",
+ "name": "каталанча"
+ },
+ "ks": {
+ "code": "ks",
+ "name": "кашмирче"
+ },
+ "nmg": {
+ "code": "nmg",
+ "name": "кваÑиочо"
+ },
+ "ki": {
+ "code": "ki",
+ "name": "кикуйиче"
+ },
+ "km": {
+ "code": "km",
+ "name": "кмерче"
+ },
+ "khq": {
+ "code": "khq",
+ "name": "койра чиниче"
+ },
+ "ses": {
+ "code": "ses",
+ "name": "койраборо Ñенниче"
+ },
+ "swc": {
+ "code": "swc",
+ "name": "конго Ñуахаличе"
+ },
+ "ko": {
+ "code": "ko",
+ "name": "корейче"
+ },
+ "ky": {
+ "code": "ky",
+ "name": "кыргызча"
+ },
+ "zh": {
+ "code": "zh",
+ "name": "кытайча"
+ },
+ "zh-Hans": {
+ "code": "zh-Hans",
+ "name": "кытайча (жөнөкөйлөштүрүлгөн)"
+ },
+ "zh-Hant": {
+ "code": "zh-Hant",
+ "name": "кытайча (Ñалттуу)"
+ },
+ "lag": {
+ "code": "lag",
+ "name": "лангиче"
+ },
+ "lo": {
+ "code": "lo",
+ "name": "лаочо"
+ },
+ "lv": {
+ "code": "lv",
+ "name": "латышча"
+ },
+ "ln": {
+ "code": "ln",
+ "name": "лингалача"
+ },
+ "lt": {
+ "code": "lt",
+ "name": "литовчо"
+ },
+ "lu": {
+ "code": "lu",
+ "name": "луба-катангача"
+ },
+ "luo": {
+ "code": "luo",
+ "name": "луочо"
+ },
+ "luy": {
+ "code": "luy",
+ "name": "лухиÑча"
+ },
+ "lb": {
+ "code": "lb",
+ "name": "люкÑембургча"
+ },
+ "hu": {
+ "code": "hu",
+ "name": "мажарча"
+ },
+ "mk": {
+ "code": "mk",
+ "name": "македончо"
+ },
+ "kde": {
+ "code": "kde",
+ "name": "макондече"
+ },
+ "mgh": {
+ "code": "mgh",
+ "name": "макуача"
+ },
+ "mg": {
+ "code": "mg",
+ "name": "малагаÑча"
+ },
+ "ml": {
+ "code": "ml",
+ "name": "малайаламча"
+ },
+ "ms": {
+ "code": "ms",
+ "name": "малайча"
+ },
+ "mt": {
+ "code": "mt",
+ "name": "малтизче"
+ },
+ "mr": {
+ "code": "mr",
+ "name": "маратиче"
+ },
+ "zgh": {
+ "code": "zgh",
+ "name": "марокко тамазигт адабий тилинде"
+ },
+ "mas": {
+ "code": "mas",
+ "name": "маÑайча"
+ },
+ "jmc": {
+ "code": "jmc",
+ "name": "мачамече"
+ },
+ "mer": {
+ "code": "mer",
+ "name": "меруча"
+ },
+ "ro-MD": {
+ "code": "ro-MD",
+ "name": "молдованча"
+ },
+ "mn": {
+ "code": "mn",
+ "name": "моңголчо"
+ },
+ "mfe": {
+ "code": "mfe",
+ "name": "мориÑианча"
+ },
+ "mua": {
+ "code": "mua",
+ "name": "мундангча"
+ },
+ "naq": {
+ "code": "naq",
+ "name": "намача"
+ },
+ "jgo": {
+ "code": "jgo",
+ "name": "нгомбача"
+ },
+ "de": {
+ "code": "de",
+ "name": "немиÑче"
+ },
+ "gsw": {
+ "code": "gsw",
+ "name": "немиÑче (ШвейцариÑ)"
+ },
+ "ne": {
+ "code": "ne",
+ "name": "непалча"
+ },
+ "nb": {
+ "code": "nb",
+ "name": "норвежче (Букмал)"
+ },
+ "nn": {
+ "code": "nn",
+ "name": "норвежче (ÐинорÑк)"
+ },
+ "nus": {
+ "code": "nus",
+ "name": "нуерче"
+ },
+ "nyn": {
+ "code": "nyn",
+ "name": "ныйанколчо"
+ },
+ "or": {
+ "code": "or",
+ "name": "ориÑча"
+ },
+ "ru": {
+ "code": "ru",
+ "name": "оруÑча"
+ },
+ "uz": {
+ "code": "uz",
+ "name": "өзбекче"
+ },
+ "ps": {
+ "code": "ps",
+ "name": "пашточо"
+ },
+ "pl": {
+ "code": "pl",
+ "name": "полÑкча"
+ },
+ "pt": {
+ "code": "pt",
+ "name": "португалча"
+ },
+ "pt-PT": {
+ "code": "pt-PT",
+ "name": "португалча (Европа)"
+ },
+ "pa": {
+ "code": "pa",
+ "name": "пунжабиче"
+ },
+ "rm": {
+ "code": "rm",
+ "name": "романшча"
+ },
+ "rof": {
+ "code": "rof",
+ "name": "ромбочо"
+ },
+ "rwk": {
+ "code": "rwk",
+ "name": "руача"
+ },
+ "ro": {
+ "code": "ro",
+ "name": "румынча"
+ },
+ "rn": {
+ "code": "rn",
+ "name": "рундиче"
+ },
+ "saq": {
+ "code": "saq",
+ "name": "Ñамбуруча"
+ },
+ "sg": {
+ "code": "sg",
+ "name": "Ñангочо"
+ },
+ "sbp": {
+ "code": "sbp",
+ "name": "Ñангуча"
+ },
+ "seh": {
+ "code": "seh",
+ "name": "Ñенача"
+ },
+ "sr": {
+ "code": "sr",
+ "name": "Ñербче"
+ },
+ "si": {
+ "code": "si",
+ "name": "Ñингалача"
+ },
+ "sk": {
+ "code": "sk",
+ "name": "Ñловакча"
+ },
+ "sl": {
+ "code": "sl",
+ "name": "Ñловенче"
+ },
+ "xog": {
+ "code": "xog",
+ "name": "Ñогача"
+ },
+ "so": {
+ "code": "so",
+ "name": "Ñомаличе"
+ },
+ "sw": {
+ "code": "sw",
+ "name": "Ñуахиличе"
+ },
+ "dav": {
+ "code": "dav",
+ "name": "таитача"
+ },
+ "th": {
+ "code": "th",
+ "name": "тайча"
+ },
+ "ta": {
+ "code": "ta",
+ "name": "тамилче"
+ },
+ "twq": {
+ "code": "twq",
+ "name": "таÑабакча"
+ },
+ "shi": {
+ "code": "shi",
+ "name": "ташелитче"
+ },
+ "te": {
+ "code": "te",
+ "name": "телугуча"
+ },
+ "teo": {
+ "code": "teo",
+ "name": "теÑочо"
+ },
+ "bo": {
+ "code": "bo",
+ "name": "тибетче"
+ },
+ "ti": {
+ "code": "ti",
+ "name": "тигриниача"
+ },
+ "to": {
+ "code": "to",
+ "name": "тонгача"
+ },
+ "dsb": {
+ "code": "dsb",
+ "name": "төмөнкү Ñорбианча"
+ },
+ "nd": {
+ "code": "nd",
+ "name": "түндүк ндыбелче"
+ },
+ "se": {
+ "code": "se",
+ "name": "түндүк Ñамиче"
+ },
+ "tr": {
+ "code": "tr",
+ "name": "түркчө"
+ },
+ "cy": {
+ "code": "cy",
+ "name": "уелшче"
+ },
+ "ug": {
+ "code": "ug",
+ "name": "уйгурча"
+ },
+ "uk": {
+ "code": "uk",
+ "name": "украинче"
+ },
+ "ur": {
+ "code": "ur",
+ "name": "урдуча"
+ },
+ "fo": {
+ "code": "fo",
+ "name": "фароÑче"
+ },
+ "fa": {
+ "code": "fa",
+ "name": "фарÑыча"
+ },
+ "fil": {
+ "code": "fil",
+ "name": "филипино"
+ },
+ "fi": {
+ "code": "fi",
+ "name": "финче"
+ },
+ "nl-BE": {
+ "code": "nl-BE",
+ "name": "фламандча"
+ },
+ "fr": {
+ "code": "fr",
+ "name": "французча"
+ },
+ "ha": {
+ "code": "ha",
+ "name": "хауÑача"
+ },
+ "hi": {
+ "code": "hi",
+ "name": "хиндиче"
+ },
+ "hr": {
+ "code": "hr",
+ "name": "хорватча"
+ },
+ "chr": {
+ "code": "chr",
+ "name": "черокиче"
+ },
+ "cs": {
+ "code": "cs",
+ "name": "чехче"
+ },
+ "cgg": {
+ "code": "cgg",
+ "name": "чигача"
+ },
+ "ksb": {
+ "code": "ksb",
+ "name": "шамабалача"
+ },
+ "sv": {
+ "code": "sv",
+ "name": "шведче"
+ },
+ "sn": {
+ "code": "sn",
+ "name": "шонача"
+ },
+ "ee": {
+ "code": "ee",
+ "name": "Ñбече"
+ },
+ "ebu": {
+ "code": "ebu",
+ "name": "Ñмбуча"
+ },
+ "eo": {
+ "code": "eo",
+ "name": "ÑÑперанто"
+ },
+ "et": {
+ "code": "et",
+ "name": "ÑÑтончо"
+ },
+ "ja": {
+ "code": "ja",
+ "name": "Ñпончо"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/language/lag.json b/library/intl/resources/language/lag.json
new file mode 100644
index 000000000..f2a85327c
--- /dev/null
+++ b/library/intl/resources/language/lag.json
@@ -0,0 +1,738 @@
+{
+ "af": {
+ "code": "af",
+ "name": "Afrikaans"
+ },
+ "agq": {
+ "code": "agq",
+ "name": "Aghem"
+ },
+ "sq": {
+ "code": "sq",
+ "name": "Albanian"
+ },
+ "ar-001": {
+ "code": "ar-001",
+ "name": "ar_001"
+ },
+ "hy": {
+ "code": "hy",
+ "name": "Armenian"
+ },
+ "ast": {
+ "code": "ast",
+ "name": "Asturian"
+ },
+ "asa": {
+ "code": "asa",
+ "name": "Asu"
+ },
+ "az": {
+ "code": "az",
+ "name": "Azerbaijani"
+ },
+ "ksf": {
+ "code": "ksf",
+ "name": "Bafia"
+ },
+ "bm": {
+ "code": "bm",
+ "name": "Bambara"
+ },
+ "bas": {
+ "code": "bas",
+ "name": "Basaa"
+ },
+ "eu": {
+ "code": "eu",
+ "name": "Basque"
+ },
+ "bez": {
+ "code": "bez",
+ "name": "Bena"
+ },
+ "brx": {
+ "code": "brx",
+ "name": "Bodo"
+ },
+ "bs": {
+ "code": "bs",
+ "name": "Bosnian"
+ },
+ "br": {
+ "code": "br",
+ "name": "Breton"
+ },
+ "ca": {
+ "code": "ca",
+ "name": "Catalan"
+ },
+ "tzm": {
+ "code": "tzm",
+ "name": "Central Atlas Tamazight"
+ },
+ "chr": {
+ "code": "chr",
+ "name": "Cherokee"
+ },
+ "cgg": {
+ "code": "cgg",
+ "name": "Chiga"
+ },
+ "ksh": {
+ "code": "ksh",
+ "name": "Colognian"
+ },
+ "swc": {
+ "code": "swc",
+ "name": "Congo Swahili"
+ },
+ "hr": {
+ "code": "hr",
+ "name": "Croatian"
+ },
+ "da": {
+ "code": "da",
+ "name": "Danish"
+ },
+ "de-AT": {
+ "code": "de-AT",
+ "name": "de_AT"
+ },
+ "de-CH": {
+ "code": "de-CH",
+ "name": "de_CH"
+ },
+ "dz": {
+ "code": "dz",
+ "name": "Dzongkha"
+ },
+ "ebu": {
+ "code": "ebu",
+ "name": "Embu"
+ },
+ "en-AU": {
+ "code": "en-AU",
+ "name": "en_AU"
+ },
+ "en-CA": {
+ "code": "en-CA",
+ "name": "en_CA"
+ },
+ "en-GB": {
+ "code": "en-GB",
+ "name": "en_GB"
+ },
+ "en-US": {
+ "code": "en-US",
+ "name": "en_US"
+ },
+ "es-ES": {
+ "code": "es-ES",
+ "name": "es_ES"
+ },
+ "es-MX": {
+ "code": "es-MX",
+ "name": "es_MX"
+ },
+ "eo": {
+ "code": "eo",
+ "name": "Esperanto"
+ },
+ "et": {
+ "code": "et",
+ "name": "Estonian"
+ },
+ "ee": {
+ "code": "ee",
+ "name": "Ewe"
+ },
+ "ewo": {
+ "code": "ewo",
+ "name": "Ewondo"
+ },
+ "fo": {
+ "code": "fo",
+ "name": "Faroese"
+ },
+ "fil": {
+ "code": "fil",
+ "name": "Filipino"
+ },
+ "fi": {
+ "code": "fi",
+ "name": "Finnish"
+ },
+ "fr-CA": {
+ "code": "fr-CA",
+ "name": "fr_CA"
+ },
+ "fr-CH": {
+ "code": "fr-CH",
+ "name": "fr_CH"
+ },
+ "fur": {
+ "code": "fur",
+ "name": "Friulian"
+ },
+ "ff": {
+ "code": "ff",
+ "name": "Fulah"
+ },
+ "gl": {
+ "code": "gl",
+ "name": "Galician"
+ },
+ "lg": {
+ "code": "lg",
+ "name": "Ganda"
+ },
+ "ka": {
+ "code": "ka",
+ "name": "Georgian"
+ },
+ "gu": {
+ "code": "gu",
+ "name": "Gujarati"
+ },
+ "guz": {
+ "code": "guz",
+ "name": "Gusii"
+ },
+ "he": {
+ "code": "he",
+ "name": "Hebrew"
+ },
+ "is": {
+ "code": "is",
+ "name": "Icelandic"
+ },
+ "ga": {
+ "code": "ga",
+ "name": "Irish"
+ },
+ "dyo": {
+ "code": "dyo",
+ "name": "Jola-Fonyi"
+ },
+ "kea": {
+ "code": "kea",
+ "name": "Kabuverdianu"
+ },
+ "kab": {
+ "code": "kab",
+ "name": "Kabyle"
+ },
+ "kl": {
+ "code": "kl",
+ "name": "Kalaallisut"
+ },
+ "kln": {
+ "code": "kln",
+ "name": "Kalenjin"
+ },
+ "kam": {
+ "code": "kam",
+ "name": "Kamba"
+ },
+ "kn": {
+ "code": "kn",
+ "name": "Kannada"
+ },
+ "ks": {
+ "code": "ks",
+ "name": "Kashmiri"
+ },
+ "kk": {
+ "code": "kk",
+ "name": "Kazakh"
+ },
+ "ki": {
+ "code": "ki",
+ "name": "Kikuyu"
+ },
+ "fa": {
+ "code": "fa",
+ "name": "Kɨajéemi"
+ },
+ "ak": {
+ "code": "ak",
+ "name": "Kɨakáani"
+ },
+ "ar": {
+ "code": "ar",
+ "name": "Kɨaráabu"
+ },
+ "my": {
+ "code": "my",
+ "name": "Kɨbáama"
+ },
+ "bn": {
+ "code": "bn",
+ "name": "Kɨbangála"
+ },
+ "be": {
+ "code": "be",
+ "name": "Kɨberalúusi"
+ },
+ "bg": {
+ "code": "bg",
+ "name": "Kɨbulugária"
+ },
+ "cs": {
+ "code": "cs",
+ "name": "Kɨchéeki"
+ },
+ "zh": {
+ "code": "zh",
+ "name": "Kɨchíina"
+ },
+ "fr": {
+ "code": "fr",
+ "name": "Kɨfaráansa"
+ },
+ "el": {
+ "code": "el",
+ "name": "Kɨgiríki"
+ },
+ "ha": {
+ "code": "ha",
+ "name": "Kɨhaúusa"
+ },
+ "hi": {
+ "code": "hi",
+ "name": "Kɨhíindi"
+ },
+ "es": {
+ "code": "es",
+ "name": "Kɨhispánia"
+ },
+ "nl": {
+ "code": "nl",
+ "name": "Kɨholáanzi"
+ },
+ "hu": {
+ "code": "hu",
+ "name": "Kɨhungári"
+ },
+ "id": {
+ "code": "id",
+ "name": "Kɨɨndonésia"
+ },
+ "en": {
+ "code": "en",
+ "name": "Kɨɨngeréesa"
+ },
+ "ja": {
+ "code": "ja",
+ "name": "Kɨjapáani"
+ },
+ "de": {
+ "code": "de",
+ "name": "Kɨjerʉmáani"
+ },
+ "km": {
+ "code": "km",
+ "name": "Kɨkambódia"
+ },
+ "ko": {
+ "code": "ko",
+ "name": "Kɨkoréa"
+ },
+ "lag": {
+ "code": "lag",
+ "name": "Kɨlaangi"
+ },
+ "ms": {
+ "code": "ms",
+ "name": "Kɨmelésia"
+ },
+ "am": {
+ "code": "am",
+ "name": "Kɨmʉháari"
+ },
+ "ne": {
+ "code": "ne",
+ "name": "Kɨnepáali"
+ },
+ "pl": {
+ "code": "pl",
+ "name": "Kɨpólandi"
+ },
+ "pa": {
+ "code": "pa",
+ "name": "Kɨpúnjabi"
+ },
+ "pt": {
+ "code": "pt",
+ "name": "Kɨréeno"
+ },
+ "ro": {
+ "code": "ro",
+ "name": "Kɨromanía"
+ },
+ "ru": {
+ "code": "ru",
+ "name": "Kɨrúusi"
+ },
+ "so": {
+ "code": "so",
+ "name": "Kɨsómáali"
+ },
+ "sv": {
+ "code": "sv",
+ "name": "Kɨswíidi"
+ },
+ "th": {
+ "code": "th",
+ "name": "Kɨtáilandi"
+ },
+ "it": {
+ "code": "it",
+ "name": "Kɨtaliáano"
+ },
+ "ta": {
+ "code": "ta",
+ "name": "Kɨtamíili"
+ },
+ "tr": {
+ "code": "tr",
+ "name": "Kɨturúuki"
+ },
+ "uk": {
+ "code": "uk",
+ "name": "Kɨukɨranía"
+ },
+ "ur": {
+ "code": "ur",
+ "name": "Kɨúrdu"
+ },
+ "vi": {
+ "code": "vi",
+ "name": "Kɨvietináamu"
+ },
+ "yo": {
+ "code": "yo",
+ "name": "Kɨyorúuba"
+ },
+ "zu": {
+ "code": "zu",
+ "name": "Kɨzúulu"
+ },
+ "khq": {
+ "code": "khq",
+ "name": "Koyra Chiini"
+ },
+ "ses": {
+ "code": "ses",
+ "name": "Koyraboro Senni"
+ },
+ "nmg": {
+ "code": "nmg",
+ "name": "Kwasio"
+ },
+ "ky": {
+ "code": "ky",
+ "name": "Kyrgyz"
+ },
+ "lo": {
+ "code": "lo",
+ "name": "Lao"
+ },
+ "lv": {
+ "code": "lv",
+ "name": "Latvian"
+ },
+ "ln": {
+ "code": "ln",
+ "name": "Lingala"
+ },
+ "lt": {
+ "code": "lt",
+ "name": "Lithuanian"
+ },
+ "dsb": {
+ "code": "dsb",
+ "name": "Lower Sorbian"
+ },
+ "lu": {
+ "code": "lu",
+ "name": "Luba-Katanga"
+ },
+ "luo": {
+ "code": "luo",
+ "name": "Luo"
+ },
+ "lb": {
+ "code": "lb",
+ "name": "Luxembourgish"
+ },
+ "luy": {
+ "code": "luy",
+ "name": "Luyia"
+ },
+ "mk": {
+ "code": "mk",
+ "name": "Macedonian"
+ },
+ "jmc": {
+ "code": "jmc",
+ "name": "Machame"
+ },
+ "mgh": {
+ "code": "mgh",
+ "name": "Makhuwa-Meetto"
+ },
+ "kde": {
+ "code": "kde",
+ "name": "Makonde"
+ },
+ "mg": {
+ "code": "mg",
+ "name": "Malagasy"
+ },
+ "ml": {
+ "code": "ml",
+ "name": "Malayalam"
+ },
+ "mt": {
+ "code": "mt",
+ "name": "Maltese"
+ },
+ "mr": {
+ "code": "mr",
+ "name": "Marathi"
+ },
+ "mas": {
+ "code": "mas",
+ "name": "Masai"
+ },
+ "mer": {
+ "code": "mer",
+ "name": "Meru"
+ },
+ "mn": {
+ "code": "mn",
+ "name": "Mongolian"
+ },
+ "mfe": {
+ "code": "mfe",
+ "name": "Morisyen"
+ },
+ "mua": {
+ "code": "mua",
+ "name": "Mundang"
+ },
+ "naq": {
+ "code": "naq",
+ "name": "Nama"
+ },
+ "jgo": {
+ "code": "jgo",
+ "name": "Ngomba"
+ },
+ "nl-BE": {
+ "code": "nl-BE",
+ "name": "nl_BE"
+ },
+ "nd": {
+ "code": "nd",
+ "name": "North Ndebele"
+ },
+ "se": {
+ "code": "se",
+ "name": "Northern Sami"
+ },
+ "nb": {
+ "code": "nb",
+ "name": "Norwegian Bokmål"
+ },
+ "nn": {
+ "code": "nn",
+ "name": "Norwegian Nynorsk"
+ },
+ "nus": {
+ "code": "nus",
+ "name": "Nuer"
+ },
+ "nyn": {
+ "code": "nyn",
+ "name": "Nyankole"
+ },
+ "or": {
+ "code": "or",
+ "name": "Oriya"
+ },
+ "ps": {
+ "code": "ps",
+ "name": "Pashto"
+ },
+ "pt-BR": {
+ "code": "pt-BR",
+ "name": "pt_BR"
+ },
+ "pt-PT": {
+ "code": "pt-PT",
+ "name": "pt_PT"
+ },
+ "ro-MD": {
+ "code": "ro-MD",
+ "name": "ro_MD"
+ },
+ "rm": {
+ "code": "rm",
+ "name": "Romansh"
+ },
+ "rof": {
+ "code": "rof",
+ "name": "Rombo"
+ },
+ "rn": {
+ "code": "rn",
+ "name": "Rundi"
+ },
+ "rwk": {
+ "code": "rwk",
+ "name": "Rwa"
+ },
+ "saq": {
+ "code": "saq",
+ "name": "Samburu"
+ },
+ "sg": {
+ "code": "sg",
+ "name": "Sango"
+ },
+ "sbp": {
+ "code": "sbp",
+ "name": "Sangu"
+ },
+ "gd": {
+ "code": "gd",
+ "name": "Scottish Gaelic"
+ },
+ "seh": {
+ "code": "seh",
+ "name": "Sena"
+ },
+ "sr": {
+ "code": "sr",
+ "name": "Serbian"
+ },
+ "ksb": {
+ "code": "ksb",
+ "name": "Shambala"
+ },
+ "sn": {
+ "code": "sn",
+ "name": "Shona"
+ },
+ "si": {
+ "code": "si",
+ "name": "Sinhala"
+ },
+ "sk": {
+ "code": "sk",
+ "name": "Slovak"
+ },
+ "sl": {
+ "code": "sl",
+ "name": "Slovenian"
+ },
+ "xog": {
+ "code": "xog",
+ "name": "Soga"
+ },
+ "zgh": {
+ "code": "zgh",
+ "name": "Standard Moroccan Tamazight"
+ },
+ "sw": {
+ "code": "sw",
+ "name": "Swahili"
+ },
+ "gsw": {
+ "code": "gsw",
+ "name": "Swiss German"
+ },
+ "shi": {
+ "code": "shi",
+ "name": "Tachelhit"
+ },
+ "dav": {
+ "code": "dav",
+ "name": "Taita"
+ },
+ "twq": {
+ "code": "twq",
+ "name": "Tasawaq"
+ },
+ "te": {
+ "code": "te",
+ "name": "Telugu"
+ },
+ "teo": {
+ "code": "teo",
+ "name": "Teso"
+ },
+ "bo": {
+ "code": "bo",
+ "name": "Tibetan"
+ },
+ "ti": {
+ "code": "ti",
+ "name": "Tigrinya"
+ },
+ "to": {
+ "code": "to",
+ "name": "Tongan"
+ },
+ "hsb": {
+ "code": "hsb",
+ "name": "Upper Sorbian"
+ },
+ "ug": {
+ "code": "ug",
+ "name": "Uyghur"
+ },
+ "uz": {
+ "code": "uz",
+ "name": "Uzbek"
+ },
+ "vai": {
+ "code": "vai",
+ "name": "Vai"
+ },
+ "vun": {
+ "code": "vun",
+ "name": "Vunjo"
+ },
+ "wae": {
+ "code": "wae",
+ "name": "Walser"
+ },
+ "cy": {
+ "code": "cy",
+ "name": "Welsh"
+ },
+ "fy": {
+ "code": "fy",
+ "name": "Western Frisian"
+ },
+ "yav": {
+ "code": "yav",
+ "name": "Yangben"
+ },
+ "dje": {
+ "code": "dje",
+ "name": "Zarma"
+ },
+ "zh-Hans": {
+ "code": "zh-Hans",
+ "name": "zh_Hans"
+ },
+ "zh-Hant": {
+ "code": "zh-Hant",
+ "name": "zh_Hant"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/language/lb.json b/library/intl/resources/language/lb.json
new file mode 100644
index 000000000..9a77664ca
--- /dev/null
+++ b/library/intl/resources/language/lb.json
@@ -0,0 +1,738 @@
+{
+ "af": {
+ "code": "af",
+ "name": "Afrikaans"
+ },
+ "agq": {
+ "code": "agq",
+ "name": "Aghem"
+ },
+ "ak": {
+ "code": "ak",
+ "name": "Akan"
+ },
+ "sq": {
+ "code": "sq",
+ "name": "Albanesch"
+ },
+ "en-US": {
+ "code": "en-US",
+ "name": "Amerikanescht Englesch"
+ },
+ "am": {
+ "code": "am",
+ "name": "Amharesch"
+ },
+ "ar": {
+ "code": "ar",
+ "name": "Arabesch"
+ },
+ "hy": {
+ "code": "hy",
+ "name": "Armenesch"
+ },
+ "az": {
+ "code": "az",
+ "name": "Aserbaidschanesch"
+ },
+ "ast": {
+ "code": "ast",
+ "name": "Asturianesch"
+ },
+ "asa": {
+ "code": "asa",
+ "name": "Asu (Tanzania)"
+ },
+ "en-AU": {
+ "code": "en-AU",
+ "name": "Australescht Englesch"
+ },
+ "ksf": {
+ "code": "ksf",
+ "name": "Bafia"
+ },
+ "bm": {
+ "code": "bm",
+ "name": "Bambara-Sprooch"
+ },
+ "bas": {
+ "code": "bas",
+ "name": "Basaa-Sprooch"
+ },
+ "eu": {
+ "code": "eu",
+ "name": "Baskesch"
+ },
+ "bez": {
+ "code": "bez",
+ "name": "Bena"
+ },
+ "bn": {
+ "code": "bn",
+ "name": "Bengalesch"
+ },
+ "dz": {
+ "code": "dz",
+ "name": "Bhutanesch"
+ },
+ "my": {
+ "code": "my",
+ "name": "Birmanesch"
+ },
+ "brx": {
+ "code": "brx",
+ "name": "Bodo"
+ },
+ "bs": {
+ "code": "bs",
+ "name": "Bosnesch"
+ },
+ "pt-BR": {
+ "code": "pt-BR",
+ "name": "Brasilianescht Portugisesch"
+ },
+ "br": {
+ "code": "br",
+ "name": "Bretonesch"
+ },
+ "en-GB": {
+ "code": "en-GB",
+ "name": "Britescht Englesch"
+ },
+ "bg": {
+ "code": "bg",
+ "name": "Bulgaresch"
+ },
+ "chr": {
+ "code": "chr",
+ "name": "Cherokee"
+ },
+ "zh": {
+ "code": "zh",
+ "name": "Chinesesch"
+ },
+ "zh-Hant": {
+ "code": "zh-Hant",
+ "name": "Chinesesch (traditionell)"
+ },
+ "zh-Hans": {
+ "code": "zh-Hans",
+ "name": "Chinesesch (vereinfacht)"
+ },
+ "de": {
+ "code": "de",
+ "name": "Däitsch"
+ },
+ "da": {
+ "code": "da",
+ "name": "Dänesch"
+ },
+ "de-AT": {
+ "code": "de-AT",
+ "name": "Éisträichescht Däitsch"
+ },
+ "en": {
+ "code": "en",
+ "name": "Englesch"
+ },
+ "eo": {
+ "code": "eo",
+ "name": "Esperanto"
+ },
+ "et": {
+ "code": "et",
+ "name": "Estnesch"
+ },
+ "pt-PT": {
+ "code": "pt-PT",
+ "name": "Europäescht Portugisesch"
+ },
+ "es-ES": {
+ "code": "es-ES",
+ "name": "Europäescht Spuenesch"
+ },
+ "ee": {
+ "code": "ee",
+ "name": "Ewe-Sprooch"
+ },
+ "ewo": {
+ "code": "ewo",
+ "name": "Ewondo"
+ },
+ "fo": {
+ "code": "fo",
+ "name": "Färöesch"
+ },
+ "fil": {
+ "code": "fil",
+ "name": "Filipino"
+ },
+ "fi": {
+ "code": "fi",
+ "name": "Finnesch"
+ },
+ "nl-BE": {
+ "code": "nl-BE",
+ "name": "Flämesch"
+ },
+ "fr": {
+ "code": "fr",
+ "name": "Franséisch"
+ },
+ "fur": {
+ "code": "fur",
+ "name": "Friulesch"
+ },
+ "ff": {
+ "code": "ff",
+ "name": "Ful"
+ },
+ "gl": {
+ "code": "gl",
+ "name": "Galizesch"
+ },
+ "lg": {
+ "code": "lg",
+ "name": "Ganda-Sprooch"
+ },
+ "ka": {
+ "code": "ka",
+ "name": "Georgesch"
+ },
+ "el": {
+ "code": "el",
+ "name": "Griichesch"
+ },
+ "kl": {
+ "code": "kl",
+ "name": "Grönlännesch"
+ },
+ "gu": {
+ "code": "gu",
+ "name": "Gujarati"
+ },
+ "guz": {
+ "code": "guz",
+ "name": "Gusii-Sprooch"
+ },
+ "ha": {
+ "code": "ha",
+ "name": "Hausa"
+ },
+ "he": {
+ "code": "he",
+ "name": "Hebräesch"
+ },
+ "hi": {
+ "code": "hi",
+ "name": "Hindi"
+ },
+ "nl": {
+ "code": "nl",
+ "name": "Hollännesch"
+ },
+ "id": {
+ "code": "id",
+ "name": "Indonesesch"
+ },
+ "ga": {
+ "code": "ga",
+ "name": "Iresch"
+ },
+ "is": {
+ "code": "is",
+ "name": "Islännesch"
+ },
+ "it": {
+ "code": "it",
+ "name": "Italienesch"
+ },
+ "ja": {
+ "code": "ja",
+ "name": "Japanesch"
+ },
+ "dyo": {
+ "code": "dyo",
+ "name": "Jola-Fonyi"
+ },
+ "kea": {
+ "code": "kea",
+ "name": "Kabuverdianu"
+ },
+ "kab": {
+ "code": "kab",
+ "name": "Kabylesch"
+ },
+ "kln": {
+ "code": "kln",
+ "name": "Kalenjin"
+ },
+ "kam": {
+ "code": "kam",
+ "name": "Kamba"
+ },
+ "km": {
+ "code": "km",
+ "name": "Kambodschanesch"
+ },
+ "en-CA": {
+ "code": "en-CA",
+ "name": "Kanadescht Englesch"
+ },
+ "fr-CA": {
+ "code": "fr-CA",
+ "name": "Kanadescht Franséisch"
+ },
+ "kn": {
+ "code": "kn",
+ "name": "Kannada"
+ },
+ "kk": {
+ "code": "kk",
+ "name": "Kasachesch"
+ },
+ "ks": {
+ "code": "ks",
+ "name": "Kaschmiresch"
+ },
+ "ca": {
+ "code": "ca",
+ "name": "Katalanesch"
+ },
+ "ebu": {
+ "code": "ebu",
+ "name": "Kiembu"
+ },
+ "cgg": {
+ "code": "cgg",
+ "name": "Kiga"
+ },
+ "ki": {
+ "code": "ki",
+ "name": "Kikuyu-Sprooch"
+ },
+ "ky": {
+ "code": "ky",
+ "name": "Kirgisesch"
+ },
+ "ksh": {
+ "code": "ksh",
+ "name": "Kölsch"
+ },
+ "swc": {
+ "code": "swc",
+ "name": "Kongo-Swahili"
+ },
+ "ko": {
+ "code": "ko",
+ "name": "Koreanesch"
+ },
+ "khq": {
+ "code": "khq",
+ "name": "Koyra Chiini"
+ },
+ "ses": {
+ "code": "ses",
+ "name": "Koyra Senni"
+ },
+ "hr": {
+ "code": "hr",
+ "name": "Kroatesch"
+ },
+ "nmg": {
+ "code": "nmg",
+ "name": "Kwasio"
+ },
+ "lag": {
+ "code": "lag",
+ "name": "Langi"
+ },
+ "lo": {
+ "code": "lo",
+ "name": "Laotesch"
+ },
+ "lv": {
+ "code": "lv",
+ "name": "Lettesch"
+ },
+ "lb": {
+ "code": "lb",
+ "name": "Lëtzebuergesch"
+ },
+ "ln": {
+ "code": "ln",
+ "name": "Lingala"
+ },
+ "lt": {
+ "code": "lt",
+ "name": "Litauesch"
+ },
+ "lu": {
+ "code": "lu",
+ "name": "Luba-Katanga"
+ },
+ "luo": {
+ "code": "luo",
+ "name": "Luo-Sprooch"
+ },
+ "jmc": {
+ "code": "jmc",
+ "name": "Machame"
+ },
+ "mgh": {
+ "code": "mgh",
+ "name": "Makhuwa-Meetto"
+ },
+ "kde": {
+ "code": "kde",
+ "name": "Makonde"
+ },
+ "mg": {
+ "code": "mg",
+ "name": "Malagassi-Sprooch"
+ },
+ "ms": {
+ "code": "ms",
+ "name": "Malaiesch"
+ },
+ "ml": {
+ "code": "ml",
+ "name": "Malayalam"
+ },
+ "mt": {
+ "code": "mt",
+ "name": "Maltesesch"
+ },
+ "mr": {
+ "code": "mr",
+ "name": "Marathi"
+ },
+ "zgh": {
+ "code": "zgh",
+ "name": "Marokkanescht Standard-Tamazight"
+ },
+ "mas": {
+ "code": "mas",
+ "name": "Massai-Sprooch"
+ },
+ "mk": {
+ "code": "mk",
+ "name": "Mazedonesch"
+ },
+ "mer": {
+ "code": "mer",
+ "name": "Meru-Sprooch"
+ },
+ "tzm": {
+ "code": "tzm",
+ "name": "Mëttlert-Atlas-Tamazight"
+ },
+ "es-MX": {
+ "code": "es-MX",
+ "name": "Mexikanescht Spuenesch"
+ },
+ "ar-001": {
+ "code": "ar-001",
+ "name": "Modernt Héicharabesch"
+ },
+ "ro-MD": {
+ "code": "ro-MD",
+ "name": "Moldawesch"
+ },
+ "mn": {
+ "code": "mn",
+ "name": "Mongolesch"
+ },
+ "mfe": {
+ "code": "mfe",
+ "name": "Morisyen"
+ },
+ "mua": {
+ "code": "mua",
+ "name": "Mundang"
+ },
+ "naq": {
+ "code": "naq",
+ "name": "Nama"
+ },
+ "ne": {
+ "code": "ne",
+ "name": "Nepalesesch"
+ },
+ "jgo": {
+ "code": "jgo",
+ "name": "Ngomba"
+ },
+ "dsb": {
+ "code": "dsb",
+ "name": "Niddersorbesch"
+ },
+ "nd": {
+ "code": "nd",
+ "name": "Nord-Ndebele-Sprooch"
+ },
+ "se": {
+ "code": "se",
+ "name": "Nordsamesch"
+ },
+ "nb": {
+ "code": "nb",
+ "name": "Norwegesch Bokmål"
+ },
+ "nn": {
+ "code": "nn",
+ "name": "Norwegesch Nynorsk"
+ },
+ "nus": {
+ "code": "nus",
+ "name": "Nuer"
+ },
+ "nyn": {
+ "code": "nyn",
+ "name": "Nyankole"
+ },
+ "luy": {
+ "code": "luy",
+ "name": "Olulujia"
+ },
+ "or": {
+ "code": "or",
+ "name": "Orija"
+ },
+ "pa": {
+ "code": "pa",
+ "name": "Pandschabesch"
+ },
+ "ps": {
+ "code": "ps",
+ "name": "Paschtu"
+ },
+ "fa": {
+ "code": "fa",
+ "name": "Persesch"
+ },
+ "pl": {
+ "code": "pl",
+ "name": "Polnesch"
+ },
+ "pt": {
+ "code": "pt",
+ "name": "Portugisesch"
+ },
+ "rm": {
+ "code": "rm",
+ "name": "Rätoromanesch"
+ },
+ "rof": {
+ "code": "rof",
+ "name": "Rombo"
+ },
+ "ro": {
+ "code": "ro",
+ "name": "Rumänesch"
+ },
+ "rn": {
+ "code": "rn",
+ "name": "Rundi-Sprooch"
+ },
+ "ru": {
+ "code": "ru",
+ "name": "Russesch"
+ },
+ "rwk": {
+ "code": "rwk",
+ "name": "Rwa"
+ },
+ "saq": {
+ "code": "saq",
+ "name": "Samburu"
+ },
+ "sg": {
+ "code": "sg",
+ "name": "Sango"
+ },
+ "sbp": {
+ "code": "sbp",
+ "name": "Sangu"
+ },
+ "gd": {
+ "code": "gd",
+ "name": "Schottescht Gällesch"
+ },
+ "fr-CH": {
+ "code": "fr-CH",
+ "name": "Schwäizer Franséisch"
+ },
+ "de-CH": {
+ "code": "de-CH",
+ "name": "Schwäizer Héichdäitsch"
+ },
+ "gsw": {
+ "code": "gsw",
+ "name": "Schwäizerdäitsch"
+ },
+ "sv": {
+ "code": "sv",
+ "name": "Schwedesch"
+ },
+ "seh": {
+ "code": "seh",
+ "name": "Sena"
+ },
+ "sr": {
+ "code": "sr",
+ "name": "Serbesch"
+ },
+ "ksb": {
+ "code": "ksb",
+ "name": "Shambala"
+ },
+ "sn": {
+ "code": "sn",
+ "name": "Shona"
+ },
+ "si": {
+ "code": "si",
+ "name": "Singhalesesch"
+ },
+ "sk": {
+ "code": "sk",
+ "name": "Slowakesch"
+ },
+ "sl": {
+ "code": "sl",
+ "name": "Slowenesch"
+ },
+ "xog": {
+ "code": "xog",
+ "name": "Soga"
+ },
+ "so": {
+ "code": "so",
+ "name": "Somali"
+ },
+ "es": {
+ "code": "es",
+ "name": "Spuenesch"
+ },
+ "sw": {
+ "code": "sw",
+ "name": "Suaheli"
+ },
+ "dav": {
+ "code": "dav",
+ "name": "Taita"
+ },
+ "ta": {
+ "code": "ta",
+ "name": "Tamilesch"
+ },
+ "twq": {
+ "code": "twq",
+ "name": "Tasawaq"
+ },
+ "shi": {
+ "code": "shi",
+ "name": "Taschelhit"
+ },
+ "te": {
+ "code": "te",
+ "name": "Telugu"
+ },
+ "teo": {
+ "code": "teo",
+ "name": "Teso"
+ },
+ "th": {
+ "code": "th",
+ "name": "Thailännesch"
+ },
+ "bo": {
+ "code": "bo",
+ "name": "Tibetesch"
+ },
+ "tr": {
+ "code": "tr",
+ "name": "Tierkesch"
+ },
+ "ti": {
+ "code": "ti",
+ "name": "Tigrinja"
+ },
+ "to": {
+ "code": "to",
+ "name": "Tongaesch"
+ },
+ "cs": {
+ "code": "cs",
+ "name": "Tschechesch"
+ },
+ "hsb": {
+ "code": "hsb",
+ "name": "Uewersorbesch"
+ },
+ "ug": {
+ "code": "ug",
+ "name": "Uiguresch"
+ },
+ "uk": {
+ "code": "uk",
+ "name": "Ukrainesch"
+ },
+ "hu": {
+ "code": "hu",
+ "name": "Ungaresch"
+ },
+ "ur": {
+ "code": "ur",
+ "name": "Urdu"
+ },
+ "uz": {
+ "code": "uz",
+ "name": "Usbekesch"
+ },
+ "vai": {
+ "code": "vai",
+ "name": "Vai-Sprooch"
+ },
+ "vi": {
+ "code": "vi",
+ "name": "Vietnamesesch"
+ },
+ "vun": {
+ "code": "vun",
+ "name": "Vunjo"
+ },
+ "be": {
+ "code": "be",
+ "name": "Wäissrussesch"
+ },
+ "cy": {
+ "code": "cy",
+ "name": "Walisesch"
+ },
+ "wae": {
+ "code": "wae",
+ "name": "Walliserdäitsch"
+ },
+ "fy": {
+ "code": "fy",
+ "name": "Westfriesesch"
+ },
+ "yav": {
+ "code": "yav",
+ "name": "Yangben"
+ },
+ "yo": {
+ "code": "yo",
+ "name": "Yoruba"
+ },
+ "dje": {
+ "code": "dje",
+ "name": "Zarma"
+ },
+ "zu": {
+ "code": "zu",
+ "name": "Zulu"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/language/lg.json b/library/intl/resources/language/lg.json
new file mode 100644
index 000000000..3c5189d76
--- /dev/null
+++ b/library/intl/resources/language/lg.json
@@ -0,0 +1,738 @@
+{
+ "af": {
+ "code": "af",
+ "name": "Afrikaans"
+ },
+ "agq": {
+ "code": "agq",
+ "name": "Aghem"
+ },
+ "sq": {
+ "code": "sq",
+ "name": "Albanian"
+ },
+ "ar-001": {
+ "code": "ar-001",
+ "name": "ar_001"
+ },
+ "hy": {
+ "code": "hy",
+ "name": "Armenian"
+ },
+ "ast": {
+ "code": "ast",
+ "name": "Asturian"
+ },
+ "asa": {
+ "code": "asa",
+ "name": "Asu"
+ },
+ "az": {
+ "code": "az",
+ "name": "Azerbaijani"
+ },
+ "ksf": {
+ "code": "ksf",
+ "name": "Bafia"
+ },
+ "bm": {
+ "code": "bm",
+ "name": "Bambara"
+ },
+ "bas": {
+ "code": "bas",
+ "name": "Basaa"
+ },
+ "eu": {
+ "code": "eu",
+ "name": "Basque"
+ },
+ "bez": {
+ "code": "bez",
+ "name": "Bena"
+ },
+ "brx": {
+ "code": "brx",
+ "name": "Bodo"
+ },
+ "bs": {
+ "code": "bs",
+ "name": "Bosnian"
+ },
+ "br": {
+ "code": "br",
+ "name": "Breton"
+ },
+ "ca": {
+ "code": "ca",
+ "name": "Catalan"
+ },
+ "tzm": {
+ "code": "tzm",
+ "name": "Central Atlas Tamazight"
+ },
+ "chr": {
+ "code": "chr",
+ "name": "Cherokee"
+ },
+ "cgg": {
+ "code": "cgg",
+ "name": "Chiga"
+ },
+ "ksh": {
+ "code": "ksh",
+ "name": "Colognian"
+ },
+ "swc": {
+ "code": "swc",
+ "name": "Congo Swahili"
+ },
+ "hr": {
+ "code": "hr",
+ "name": "Croatian"
+ },
+ "da": {
+ "code": "da",
+ "name": "Danish"
+ },
+ "de-AT": {
+ "code": "de-AT",
+ "name": "de_AT"
+ },
+ "de-CH": {
+ "code": "de-CH",
+ "name": "de_CH"
+ },
+ "dz": {
+ "code": "dz",
+ "name": "Dzongkha"
+ },
+ "ebu": {
+ "code": "ebu",
+ "name": "Embu"
+ },
+ "en-AU": {
+ "code": "en-AU",
+ "name": "en_AU"
+ },
+ "en-CA": {
+ "code": "en-CA",
+ "name": "en_CA"
+ },
+ "en-GB": {
+ "code": "en-GB",
+ "name": "en_GB"
+ },
+ "en-US": {
+ "code": "en-US",
+ "name": "en_US"
+ },
+ "es-ES": {
+ "code": "es-ES",
+ "name": "es_ES"
+ },
+ "es-MX": {
+ "code": "es-MX",
+ "name": "es_MX"
+ },
+ "eo": {
+ "code": "eo",
+ "name": "Esperanto"
+ },
+ "et": {
+ "code": "et",
+ "name": "Estonian"
+ },
+ "ee": {
+ "code": "ee",
+ "name": "Ewe"
+ },
+ "ewo": {
+ "code": "ewo",
+ "name": "Ewondo"
+ },
+ "fo": {
+ "code": "fo",
+ "name": "Faroese"
+ },
+ "fil": {
+ "code": "fil",
+ "name": "Filipino"
+ },
+ "fi": {
+ "code": "fi",
+ "name": "Finnish"
+ },
+ "fr-CA": {
+ "code": "fr-CA",
+ "name": "fr_CA"
+ },
+ "fr-CH": {
+ "code": "fr-CH",
+ "name": "fr_CH"
+ },
+ "fur": {
+ "code": "fur",
+ "name": "Friulian"
+ },
+ "ff": {
+ "code": "ff",
+ "name": "Fulah"
+ },
+ "gl": {
+ "code": "gl",
+ "name": "Galician"
+ },
+ "ka": {
+ "code": "ka",
+ "name": "Georgian"
+ },
+ "gu": {
+ "code": "gu",
+ "name": "Gujarati"
+ },
+ "guz": {
+ "code": "guz",
+ "name": "Gusii"
+ },
+ "he": {
+ "code": "he",
+ "name": "Hebrew"
+ },
+ "is": {
+ "code": "is",
+ "name": "Icelandic"
+ },
+ "ga": {
+ "code": "ga",
+ "name": "Irish"
+ },
+ "dyo": {
+ "code": "dyo",
+ "name": "Jola-Fonyi"
+ },
+ "kea": {
+ "code": "kea",
+ "name": "Kabuverdianu"
+ },
+ "kab": {
+ "code": "kab",
+ "name": "Kabyle"
+ },
+ "kl": {
+ "code": "kl",
+ "name": "Kalaallisut"
+ },
+ "kln": {
+ "code": "kln",
+ "name": "Kalenjin"
+ },
+ "kam": {
+ "code": "kam",
+ "name": "Kamba"
+ },
+ "kn": {
+ "code": "kn",
+ "name": "Kannada"
+ },
+ "ks": {
+ "code": "ks",
+ "name": "Kashmiri"
+ },
+ "kk": {
+ "code": "kk",
+ "name": "Kazakh"
+ },
+ "ki": {
+ "code": "ki",
+ "name": "Kikuyu"
+ },
+ "khq": {
+ "code": "khq",
+ "name": "Koyra Chiini"
+ },
+ "ses": {
+ "code": "ses",
+ "name": "Koyraboro Senni"
+ },
+ "nmg": {
+ "code": "nmg",
+ "name": "Kwasio"
+ },
+ "ky": {
+ "code": "ky",
+ "name": "Kyrgyz"
+ },
+ "lag": {
+ "code": "lag",
+ "name": "Langi"
+ },
+ "lo": {
+ "code": "lo",
+ "name": "Lao"
+ },
+ "lv": {
+ "code": "lv",
+ "name": "Latvian"
+ },
+ "ln": {
+ "code": "ln",
+ "name": "Lingala"
+ },
+ "lt": {
+ "code": "lt",
+ "name": "Lithuanian"
+ },
+ "dsb": {
+ "code": "dsb",
+ "name": "Lower Sorbian"
+ },
+ "ak": {
+ "code": "ak",
+ "name": "Lu-akaani"
+ },
+ "am": {
+ "code": "am",
+ "name": "Lu-amhariki"
+ },
+ "ur": {
+ "code": "ur",
+ "name": "Lu-urudu"
+ },
+ "lu": {
+ "code": "lu",
+ "name": "Luba-Katanga"
+ },
+ "my": {
+ "code": "my",
+ "name": "Lubbama"
+ },
+ "be": {
+ "code": "be",
+ "name": "Lubelarusi"
+ },
+ "bn": {
+ "code": "bn",
+ "name": "Lubengali"
+ },
+ "bg": {
+ "code": "bg",
+ "name": "Lubulugariya"
+ },
+ "zh": {
+ "code": "zh",
+ "name": "Lucayina"
+ },
+ "cs": {
+ "code": "cs",
+ "name": "Luceeke"
+ },
+ "de": {
+ "code": "de",
+ "name": "Ludaaki"
+ },
+ "fr": {
+ "code": "fr",
+ "name": "Lufalansa"
+ },
+ "lg": {
+ "code": "lg",
+ "name": "Luganda"
+ },
+ "el": {
+ "code": "el",
+ "name": "Lugereeki\/Luyonaani"
+ },
+ "hu": {
+ "code": "hu",
+ "name": "Luhangare"
+ },
+ "ha": {
+ "code": "ha",
+ "name": "Luhawuza"
+ },
+ "hi": {
+ "code": "hi",
+ "name": "Luhindu"
+ },
+ "nl": {
+ "code": "nl",
+ "name": "Luholandi"
+ },
+ "ja": {
+ "code": "ja",
+ "name": "Lujapani"
+ },
+ "km": {
+ "code": "km",
+ "name": "Lukme"
+ },
+ "ko": {
+ "code": "ko",
+ "name": "Lukoreya"
+ },
+ "ru": {
+ "code": "ru",
+ "name": "Lulasa"
+ },
+ "ro": {
+ "code": "ro",
+ "name": "Lulomaniya"
+ },
+ "ms": {
+ "code": "ms",
+ "name": "Lumalayi"
+ },
+ "ne": {
+ "code": "ne",
+ "name": "Lunepali"
+ },
+ "en": {
+ "code": "en",
+ "name": "Lungereza"
+ },
+ "luo": {
+ "code": "luo",
+ "name": "Luo"
+ },
+ "fa": {
+ "code": "fa",
+ "name": "Luperusi"
+ },
+ "pl": {
+ "code": "pl",
+ "name": "Lupolandi"
+ },
+ "pt": {
+ "code": "pt",
+ "name": "Lupotugiizi"
+ },
+ "pa": {
+ "code": "pa",
+ "name": "Lupunjabi"
+ },
+ "es": {
+ "code": "es",
+ "name": "Lusipanya"
+ },
+ "so": {
+ "code": "so",
+ "name": "Lusomaliya"
+ },
+ "sv": {
+ "code": "sv",
+ "name": "Luswideni"
+ },
+ "tr": {
+ "code": "tr",
+ "name": "Lutake"
+ },
+ "ta": {
+ "code": "ta",
+ "name": "Lutamiiru"
+ },
+ "th": {
+ "code": "th",
+ "name": "Luttaayi"
+ },
+ "vi": {
+ "code": "vi",
+ "name": "Luvyetinaamu"
+ },
+ "ar": {
+ "code": "ar",
+ "name": "Luwarabu"
+ },
+ "lb": {
+ "code": "lb",
+ "name": "Luxembourgish"
+ },
+ "luy": {
+ "code": "luy",
+ "name": "Luyia"
+ },
+ "id": {
+ "code": "id",
+ "name": "Luyindonezya"
+ },
+ "it": {
+ "code": "it",
+ "name": "Luyitale"
+ },
+ "yo": {
+ "code": "yo",
+ "name": "Luyoruba"
+ },
+ "uk": {
+ "code": "uk",
+ "name": "Luyukurayine"
+ },
+ "zu": {
+ "code": "zu",
+ "name": "Luzzulu"
+ },
+ "mk": {
+ "code": "mk",
+ "name": "Macedonian"
+ },
+ "jmc": {
+ "code": "jmc",
+ "name": "Machame"
+ },
+ "mgh": {
+ "code": "mgh",
+ "name": "Makhuwa-Meetto"
+ },
+ "kde": {
+ "code": "kde",
+ "name": "Makonde"
+ },
+ "mg": {
+ "code": "mg",
+ "name": "Malagasy"
+ },
+ "ml": {
+ "code": "ml",
+ "name": "Malayalam"
+ },
+ "mt": {
+ "code": "mt",
+ "name": "Maltese"
+ },
+ "mr": {
+ "code": "mr",
+ "name": "Marathi"
+ },
+ "mas": {
+ "code": "mas",
+ "name": "Masai"
+ },
+ "mer": {
+ "code": "mer",
+ "name": "Meru"
+ },
+ "mn": {
+ "code": "mn",
+ "name": "Mongolian"
+ },
+ "mfe": {
+ "code": "mfe",
+ "name": "Morisyen"
+ },
+ "mua": {
+ "code": "mua",
+ "name": "Mundang"
+ },
+ "naq": {
+ "code": "naq",
+ "name": "Nama"
+ },
+ "jgo": {
+ "code": "jgo",
+ "name": "Ngomba"
+ },
+ "nl-BE": {
+ "code": "nl-BE",
+ "name": "nl_BE"
+ },
+ "nd": {
+ "code": "nd",
+ "name": "North Ndebele"
+ },
+ "se": {
+ "code": "se",
+ "name": "Northern Sami"
+ },
+ "nb": {
+ "code": "nb",
+ "name": "Norwegian Bokmål"
+ },
+ "nn": {
+ "code": "nn",
+ "name": "Norwegian Nynorsk"
+ },
+ "nus": {
+ "code": "nus",
+ "name": "Nuer"
+ },
+ "nyn": {
+ "code": "nyn",
+ "name": "Nyankole"
+ },
+ "or": {
+ "code": "or",
+ "name": "Oriya"
+ },
+ "ps": {
+ "code": "ps",
+ "name": "Pashto"
+ },
+ "pt-BR": {
+ "code": "pt-BR",
+ "name": "pt_BR"
+ },
+ "pt-PT": {
+ "code": "pt-PT",
+ "name": "pt_PT"
+ },
+ "ro-MD": {
+ "code": "ro-MD",
+ "name": "ro_MD"
+ },
+ "rm": {
+ "code": "rm",
+ "name": "Romansh"
+ },
+ "rof": {
+ "code": "rof",
+ "name": "Rombo"
+ },
+ "rn": {
+ "code": "rn",
+ "name": "Rundi"
+ },
+ "rwk": {
+ "code": "rwk",
+ "name": "Rwa"
+ },
+ "saq": {
+ "code": "saq",
+ "name": "Samburu"
+ },
+ "sg": {
+ "code": "sg",
+ "name": "Sango"
+ },
+ "sbp": {
+ "code": "sbp",
+ "name": "Sangu"
+ },
+ "gd": {
+ "code": "gd",
+ "name": "Scottish Gaelic"
+ },
+ "seh": {
+ "code": "seh",
+ "name": "Sena"
+ },
+ "sr": {
+ "code": "sr",
+ "name": "Serbian"
+ },
+ "ksb": {
+ "code": "ksb",
+ "name": "Shambala"
+ },
+ "sn": {
+ "code": "sn",
+ "name": "Shona"
+ },
+ "si": {
+ "code": "si",
+ "name": "Sinhala"
+ },
+ "sk": {
+ "code": "sk",
+ "name": "Slovak"
+ },
+ "sl": {
+ "code": "sl",
+ "name": "Slovenian"
+ },
+ "xog": {
+ "code": "xog",
+ "name": "Soga"
+ },
+ "zgh": {
+ "code": "zgh",
+ "name": "Standard Moroccan Tamazight"
+ },
+ "sw": {
+ "code": "sw",
+ "name": "Swahili"
+ },
+ "gsw": {
+ "code": "gsw",
+ "name": "Swiss German"
+ },
+ "shi": {
+ "code": "shi",
+ "name": "Tachelhit"
+ },
+ "dav": {
+ "code": "dav",
+ "name": "Taita"
+ },
+ "twq": {
+ "code": "twq",
+ "name": "Tasawaq"
+ },
+ "te": {
+ "code": "te",
+ "name": "Telugu"
+ },
+ "teo": {
+ "code": "teo",
+ "name": "Teso"
+ },
+ "bo": {
+ "code": "bo",
+ "name": "Tibetan"
+ },
+ "ti": {
+ "code": "ti",
+ "name": "Tigrinya"
+ },
+ "to": {
+ "code": "to",
+ "name": "Tongan"
+ },
+ "hsb": {
+ "code": "hsb",
+ "name": "Upper Sorbian"
+ },
+ "ug": {
+ "code": "ug",
+ "name": "Uyghur"
+ },
+ "uz": {
+ "code": "uz",
+ "name": "Uzbek"
+ },
+ "vai": {
+ "code": "vai",
+ "name": "Vai"
+ },
+ "vun": {
+ "code": "vun",
+ "name": "Vunjo"
+ },
+ "wae": {
+ "code": "wae",
+ "name": "Walser"
+ },
+ "cy": {
+ "code": "cy",
+ "name": "Welsh"
+ },
+ "fy": {
+ "code": "fy",
+ "name": "Western Frisian"
+ },
+ "yav": {
+ "code": "yav",
+ "name": "Yangben"
+ },
+ "dje": {
+ "code": "dje",
+ "name": "Zarma"
+ },
+ "zh-Hans": {
+ "code": "zh-Hans",
+ "name": "zh_Hans"
+ },
+ "zh-Hant": {
+ "code": "zh-Hant",
+ "name": "zh_Hant"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/language/ln.json b/library/intl/resources/language/ln.json
new file mode 100644
index 000000000..78f1646e3
--- /dev/null
+++ b/library/intl/resources/language/ln.json
@@ -0,0 +1,738 @@
+{
+ "af": {
+ "code": "af",
+ "name": "afrikansi"
+ },
+ "agq": {
+ "code": "agq",
+ "name": "Aghem"
+ },
+ "ak": {
+ "code": "ak",
+ "name": "akan"
+ },
+ "sq": {
+ "code": "sq",
+ "name": "Albanian"
+ },
+ "ar-001": {
+ "code": "ar-001",
+ "name": "ar_001"
+ },
+ "hy": {
+ "code": "hy",
+ "name": "Armenian"
+ },
+ "ast": {
+ "code": "ast",
+ "name": "Asturian"
+ },
+ "asa": {
+ "code": "asa",
+ "name": "Asu"
+ },
+ "az": {
+ "code": "az",
+ "name": "Azerbaijani"
+ },
+ "ksf": {
+ "code": "ksf",
+ "name": "Bafia"
+ },
+ "bm": {
+ "code": "bm",
+ "name": "Bambara"
+ },
+ "bas": {
+ "code": "bas",
+ "name": "Basaa"
+ },
+ "eu": {
+ "code": "eu",
+ "name": "Basque"
+ },
+ "bez": {
+ "code": "bez",
+ "name": "Bena"
+ },
+ "brx": {
+ "code": "brx",
+ "name": "Bodo"
+ },
+ "bs": {
+ "code": "bs",
+ "name": "Bosnian"
+ },
+ "br": {
+ "code": "br",
+ "name": "Breton"
+ },
+ "ca": {
+ "code": "ca",
+ "name": "Catalan"
+ },
+ "tzm": {
+ "code": "tzm",
+ "name": "Central Atlas Tamazight"
+ },
+ "chr": {
+ "code": "chr",
+ "name": "Cherokee"
+ },
+ "cgg": {
+ "code": "cgg",
+ "name": "Chiga"
+ },
+ "ksh": {
+ "code": "ksh",
+ "name": "Colognian"
+ },
+ "swc": {
+ "code": "swc",
+ "name": "Congo Swahili"
+ },
+ "hr": {
+ "code": "hr",
+ "name": "Croatian"
+ },
+ "da": {
+ "code": "da",
+ "name": "Danish"
+ },
+ "dz": {
+ "code": "dz",
+ "name": "Dzongkha"
+ },
+ "ebu": {
+ "code": "ebu",
+ "name": "Embu"
+ },
+ "en-AU": {
+ "code": "en-AU",
+ "name": "en_AU"
+ },
+ "en-US": {
+ "code": "en-US",
+ "name": "en_US"
+ },
+ "es-MX": {
+ "code": "es-MX",
+ "name": "es_MX"
+ },
+ "eo": {
+ "code": "eo",
+ "name": "Esperanto"
+ },
+ "et": {
+ "code": "et",
+ "name": "Estonian"
+ },
+ "ee": {
+ "code": "ee",
+ "name": "Ewe"
+ },
+ "ewo": {
+ "code": "ewo",
+ "name": "Ewondo"
+ },
+ "fo": {
+ "code": "fo",
+ "name": "Faroese"
+ },
+ "fil": {
+ "code": "fil",
+ "name": "Filipino"
+ },
+ "fi": {
+ "code": "fi",
+ "name": "Finnish"
+ },
+ "fur": {
+ "code": "fur",
+ "name": "Friulian"
+ },
+ "ff": {
+ "code": "ff",
+ "name": "Fulah"
+ },
+ "gl": {
+ "code": "gl",
+ "name": "Galician"
+ },
+ "lg": {
+ "code": "lg",
+ "name": "Ganda"
+ },
+ "ka": {
+ "code": "ka",
+ "name": "Georgian"
+ },
+ "gu": {
+ "code": "gu",
+ "name": "Gujarati"
+ },
+ "guz": {
+ "code": "guz",
+ "name": "Gusii"
+ },
+ "ha": {
+ "code": "ha",
+ "name": "hausa"
+ },
+ "is": {
+ "code": "is",
+ "name": "Icelandic"
+ },
+ "ga": {
+ "code": "ga",
+ "name": "Irish"
+ },
+ "dyo": {
+ "code": "dyo",
+ "name": "Jola-Fonyi"
+ },
+ "kea": {
+ "code": "kea",
+ "name": "Kabuverdianu"
+ },
+ "kab": {
+ "code": "kab",
+ "name": "Kabyle"
+ },
+ "kl": {
+ "code": "kl",
+ "name": "Kalaallisut"
+ },
+ "kln": {
+ "code": "kln",
+ "name": "Kalenjin"
+ },
+ "kam": {
+ "code": "kam",
+ "name": "Kamba"
+ },
+ "kn": {
+ "code": "kn",
+ "name": "Kannada"
+ },
+ "ks": {
+ "code": "ks",
+ "name": "Kashmiri"
+ },
+ "kk": {
+ "code": "kk",
+ "name": "Kazakh"
+ },
+ "ki": {
+ "code": "ki",
+ "name": "Kikuyu"
+ },
+ "lu": {
+ "code": "lu",
+ "name": "kiluba"
+ },
+ "sw": {
+ "code": "sw",
+ "name": "kiswahíli"
+ },
+ "khq": {
+ "code": "khq",
+ "name": "Koyra Chiini"
+ },
+ "ses": {
+ "code": "ses",
+ "name": "Koyraboro Senni"
+ },
+ "nmg": {
+ "code": "nmg",
+ "name": "Kwasio"
+ },
+ "ky": {
+ "code": "ky",
+ "name": "Kyrgyz"
+ },
+ "lag": {
+ "code": "lag",
+ "name": "Langi"
+ },
+ "lo": {
+ "code": "lo",
+ "name": "Lao"
+ },
+ "lv": {
+ "code": "lv",
+ "name": "Latvian"
+ },
+ "ar": {
+ "code": "ar",
+ "name": "lialabo"
+ },
+ "de": {
+ "code": "de",
+ "name": "lialemá"
+ },
+ "de-AT": {
+ "code": "de-AT",
+ "name": "lialémani ya Otrish"
+ },
+ "de-CH": {
+ "code": "de-CH",
+ "name": "lialémani ya Swisi"
+ },
+ "gsw": {
+ "code": "gsw",
+ "name": "lialemaniki"
+ },
+ "am": {
+ "code": "am",
+ "name": "liamariki"
+ },
+ "bn": {
+ "code": "bn",
+ "name": "libengali"
+ },
+ "bg": {
+ "code": "bg",
+ "name": "libiligali"
+ },
+ "my": {
+ "code": "my",
+ "name": "libilimá"
+ },
+ "be": {
+ "code": "be",
+ "name": "libyelorisí"
+ },
+ "he": {
+ "code": "he",
+ "name": "liébeleo"
+ },
+ "nl": {
+ "code": "nl",
+ "name": "lifalamá"
+ },
+ "fr": {
+ "code": "fr",
+ "name": "lifalansÉ›Ì"
+ },
+ "fr-CA": {
+ "code": "fr-CA",
+ "name": "lifalansÉ›Ì ya Kanadá"
+ },
+ "fr-CH": {
+ "code": "fr-CH",
+ "name": "lifalansÉ›Ì ya Swisi"
+ },
+ "el": {
+ "code": "el",
+ "name": "ligeleki"
+ },
+ "hi": {
+ "code": "hi",
+ "name": "lihindi"
+ },
+ "km": {
+ "code": "km",
+ "name": "likambodza"
+ },
+ "ko": {
+ "code": "ko",
+ "name": "likoreya"
+ },
+ "uk": {
+ "code": "uk",
+ "name": "likrɛni"
+ },
+ "ms": {
+ "code": "ms",
+ "name": "limalezi"
+ },
+ "id": {
+ "code": "id",
+ "name": "lindonezi"
+ },
+ "ne": {
+ "code": "ne",
+ "name": "linepalÉ›"
+ },
+ "ln": {
+ "code": "ln",
+ "name": "lingála"
+ },
+ "en": {
+ "code": "en",
+ "name": "lingÉ›lÉ›Ìsa"
+ },
+ "en-GB": {
+ "code": "en-GB",
+ "name": "lingÉ›lÉ›Ìsa ya IngÉ›lÉ›ÌtÉ›lÉ›"
+ },
+ "en-CA": {
+ "code": "en-CA",
+ "name": "lingÉ›lÉ›Ìsa ya Kanadá"
+ },
+ "hu": {
+ "code": "hu",
+ "name": "liongili"
+ },
+ "fa": {
+ "code": "fa",
+ "name": "lipelésanɛ"
+ },
+ "pa": {
+ "code": "pa",
+ "name": "lipendzabi"
+ },
+ "pl": {
+ "code": "pl",
+ "name": "lipolonÉ›"
+ },
+ "pt": {
+ "code": "pt",
+ "name": "lipulutugÉ›Ìsi"
+ },
+ "pt-BR": {
+ "code": "pt-BR",
+ "name": "lipulutugÉ›Ìsi ya Brazil"
+ },
+ "pt-PT": {
+ "code": "pt-PT",
+ "name": "lipulutugÉ›Ìsi ya Erópa"
+ },
+ "ru": {
+ "code": "ru",
+ "name": "lirisí"
+ },
+ "ro": {
+ "code": "ro",
+ "name": "liromani"
+ },
+ "rm": {
+ "code": "rm",
+ "name": "liromansh"
+ },
+ "zh": {
+ "code": "zh",
+ "name": "lisinwa"
+ },
+ "es": {
+ "code": "es",
+ "name": "lisipanye"
+ },
+ "so": {
+ "code": "so",
+ "name": "lisomali"
+ },
+ "es-ES": {
+ "code": "es-ES",
+ "name": "lispanyoli ya Erópa"
+ },
+ "sv": {
+ "code": "sv",
+ "name": "lisuwedÉ›"
+ },
+ "it": {
+ "code": "it",
+ "name": "litaliano"
+ },
+ "ta": {
+ "code": "ta",
+ "name": "litamuli"
+ },
+ "th": {
+ "code": "th",
+ "name": "litaye"
+ },
+ "lt": {
+ "code": "lt",
+ "name": "Lithuanian"
+ },
+ "tr": {
+ "code": "tr",
+ "name": "litiliki"
+ },
+ "cs": {
+ "code": "cs",
+ "name": "litshekÉ›"
+ },
+ "ur": {
+ "code": "ur",
+ "name": "liurdu"
+ },
+ "vi": {
+ "code": "vi",
+ "name": "liviyetinámi"
+ },
+ "ja": {
+ "code": "ja",
+ "name": "lizapÉ”"
+ },
+ "dsb": {
+ "code": "dsb",
+ "name": "Lower Sorbian"
+ },
+ "luo": {
+ "code": "luo",
+ "name": "Luo"
+ },
+ "lb": {
+ "code": "lb",
+ "name": "Luxembourgish"
+ },
+ "luy": {
+ "code": "luy",
+ "name": "Luyia"
+ },
+ "mk": {
+ "code": "mk",
+ "name": "Macedonian"
+ },
+ "jmc": {
+ "code": "jmc",
+ "name": "Machame"
+ },
+ "mgh": {
+ "code": "mgh",
+ "name": "Makhuwa-Meetto"
+ },
+ "kde": {
+ "code": "kde",
+ "name": "Makonde"
+ },
+ "mg": {
+ "code": "mg",
+ "name": "Malagasy"
+ },
+ "ml": {
+ "code": "ml",
+ "name": "Malayalam"
+ },
+ "mt": {
+ "code": "mt",
+ "name": "Maltese"
+ },
+ "mr": {
+ "code": "mr",
+ "name": "Marathi"
+ },
+ "mas": {
+ "code": "mas",
+ "name": "Masai"
+ },
+ "mer": {
+ "code": "mer",
+ "name": "Meru"
+ },
+ "mn": {
+ "code": "mn",
+ "name": "Mongolian"
+ },
+ "mfe": {
+ "code": "mfe",
+ "name": "Morisyen"
+ },
+ "mua": {
+ "code": "mua",
+ "name": "Mundang"
+ },
+ "naq": {
+ "code": "naq",
+ "name": "Nama"
+ },
+ "jgo": {
+ "code": "jgo",
+ "name": "Ngomba"
+ },
+ "nl-BE": {
+ "code": "nl-BE",
+ "name": "nl_BE"
+ },
+ "nd": {
+ "code": "nd",
+ "name": "North Ndebele"
+ },
+ "se": {
+ "code": "se",
+ "name": "Northern Sami"
+ },
+ "nb": {
+ "code": "nb",
+ "name": "Norwegian Bokmål"
+ },
+ "nn": {
+ "code": "nn",
+ "name": "Norwegian Nynorsk"
+ },
+ "nus": {
+ "code": "nus",
+ "name": "Nuer"
+ },
+ "nyn": {
+ "code": "nyn",
+ "name": "Nyankole"
+ },
+ "or": {
+ "code": "or",
+ "name": "Oriya"
+ },
+ "ps": {
+ "code": "ps",
+ "name": "Pashto"
+ },
+ "ro-MD": {
+ "code": "ro-MD",
+ "name": "ro_MD"
+ },
+ "rof": {
+ "code": "rof",
+ "name": "Rombo"
+ },
+ "rn": {
+ "code": "rn",
+ "name": "Rundi"
+ },
+ "rwk": {
+ "code": "rwk",
+ "name": "Rwa"
+ },
+ "saq": {
+ "code": "saq",
+ "name": "Samburu"
+ },
+ "sg": {
+ "code": "sg",
+ "name": "Sango"
+ },
+ "sbp": {
+ "code": "sbp",
+ "name": "Sangu"
+ },
+ "gd": {
+ "code": "gd",
+ "name": "Scottish Gaelic"
+ },
+ "seh": {
+ "code": "seh",
+ "name": "Sena"
+ },
+ "sr": {
+ "code": "sr",
+ "name": "Serbian"
+ },
+ "ksb": {
+ "code": "ksb",
+ "name": "Shambala"
+ },
+ "sn": {
+ "code": "sn",
+ "name": "Shona"
+ },
+ "si": {
+ "code": "si",
+ "name": "Sinhala"
+ },
+ "sk": {
+ "code": "sk",
+ "name": "Slovak"
+ },
+ "sl": {
+ "code": "sl",
+ "name": "Slovenian"
+ },
+ "xog": {
+ "code": "xog",
+ "name": "Soga"
+ },
+ "zgh": {
+ "code": "zgh",
+ "name": "Standard Moroccan Tamazight"
+ },
+ "shi": {
+ "code": "shi",
+ "name": "Tachelhit"
+ },
+ "dav": {
+ "code": "dav",
+ "name": "Taita"
+ },
+ "twq": {
+ "code": "twq",
+ "name": "Tasawaq"
+ },
+ "te": {
+ "code": "te",
+ "name": "Telugu"
+ },
+ "teo": {
+ "code": "teo",
+ "name": "Teso"
+ },
+ "bo": {
+ "code": "bo",
+ "name": "Tibetan"
+ },
+ "ti": {
+ "code": "ti",
+ "name": "Tigrinya"
+ },
+ "to": {
+ "code": "to",
+ "name": "Tongan"
+ },
+ "hsb": {
+ "code": "hsb",
+ "name": "Upper Sorbian"
+ },
+ "ug": {
+ "code": "ug",
+ "name": "Uyghur"
+ },
+ "uz": {
+ "code": "uz",
+ "name": "Uzbek"
+ },
+ "vai": {
+ "code": "vai",
+ "name": "Vai"
+ },
+ "vun": {
+ "code": "vun",
+ "name": "Vunjo"
+ },
+ "wae": {
+ "code": "wae",
+ "name": "Walser"
+ },
+ "cy": {
+ "code": "cy",
+ "name": "Welsh"
+ },
+ "fy": {
+ "code": "fy",
+ "name": "Western Frisian"
+ },
+ "yav": {
+ "code": "yav",
+ "name": "Yangben"
+ },
+ "yo": {
+ "code": "yo",
+ "name": "yoruba"
+ },
+ "dje": {
+ "code": "dje",
+ "name": "Zarma"
+ },
+ "zh-Hans": {
+ "code": "zh-Hans",
+ "name": "zh_Hans"
+ },
+ "zh-Hant": {
+ "code": "zh-Hant",
+ "name": "zh_Hant"
+ },
+ "zu": {
+ "code": "zu",
+ "name": "zulu"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/language/lo.json b/library/intl/resources/language/lo.json
new file mode 100644
index 000000000..3c4b395e1
--- /dev/null
+++ b/library/intl/resources/language/lo.json
@@ -0,0 +1,738 @@
+{
+ "el": {
+ "code": "el",
+ "name": "àºàº£àºµàº"
+ },
+ "kl": {
+ "code": "kl",
+ "name": "àºàº£àºµàº™à»àº¥àº™àº¥àº´àº”"
+ },
+ "nmg": {
+ "code": "nmg",
+ "name": "àºàº§àº²àºŠàºµà»‚ອ"
+ },
+ "kab": {
+ "code": "kab",
+ "name": "àºàº²à»„ບລ໌"
+ },
+ "kam": {
+ "code": "kam",
+ "name": "àºàº²àº¡àºšàº²"
+ },
+ "gl": {
+ "code": "gl",
+ "name": "àºàº²àº¥àº´àºŠàº½àº™"
+ },
+ "gu": {
+ "code": "gu",
+ "name": "àºàº¹àºˆàº²àº£àº²àº•àº´"
+ },
+ "guz": {
+ "code": "guz",
+ "name": "àºàº¹àºŠàº´"
+ },
+ "ky": {
+ "code": "ky",
+ "name": "ເàºàºàºàºµàºª"
+ },
+ "ko": {
+ "code": "ko",
+ "name": "ເàºàº»àº²àº«àº¥àºµ"
+ },
+ "lg": {
+ "code": "lg",
+ "name": "à»àºàº™àº”າ"
+ },
+ "km": {
+ "code": "km",
+ "name": "ຂະເà»àº™"
+ },
+ "swc": {
+ "code": "swc",
+ "name": "ຄອງໂຠຊວາຮີລິ"
+ },
+ "khq": {
+ "code": "khq",
+ "name": "ຄອàºàº£àº² ຊິນີ"
+ },
+ "ks": {
+ "code": "ks",
+ "name": "ຄັດຊະມີຣີ"
+ },
+ "kn": {
+ "code": "kn",
+ "name": "ຄັນນາດາ"
+ },
+ "kk": {
+ "code": "kk",
+ "name": "ຄາຊັàº"
+ },
+ "ca": {
+ "code": "ca",
+ "name": "ຄາຕາລານ"
+ },
+ "kln": {
+ "code": "kln",
+ "name": "ຄາເລັນຈິນ"
+ },
+ "kea": {
+ "code": "kea",
+ "name": "ຄາເວີເດàºàº™àº¹"
+ },
+ "ki": {
+ "code": "ki",
+ "name": "ຄິຄູຢຸ"
+ },
+ "fr-CA": {
+ "code": "fr-CA",
+ "name": "ເຄເນດຽນ àºàº£àº±à»ˆàº‡"
+ },
+ "ses": {
+ "code": "ses",
+ "name": "ໂຄàºàº£àº²à»‚ບໂຣ ເຊນນິ"
+ },
+ "hr": {
+ "code": "hr",
+ "name": "ໂຄຣເອທຽນ"
+ },
+ "ksh": {
+ "code": "ksh",
+ "name": "ໂຄລອàºàº™àº½àº™"
+ },
+ "jgo": {
+ "code": "jgo",
+ "name": "ງອມບາ"
+ },
+ "ka": {
+ "code": "ka",
+ "name": "ຈà»àºˆàº½àº™"
+ },
+ "zh": {
+ "code": "zh",
+ "name": "ຈີນ"
+ },
+ "zh-Hant": {
+ "code": "zh-Hant",
+ "name": "ຈີນà»àºšàºšàº”ັ້ງເດີມ"
+ },
+ "zh-Hans": {
+ "code": "zh-Hans",
+ "name": "ຈີນà»àºšàºšàº®àº½àºšàº‡à»ˆàº²àº"
+ },
+ "dyo": {
+ "code": "dyo",
+ "name": "ໂຈລາ-ຟອນຢີ"
+ },
+ "gd": {
+ "code": "gd",
+ "name": "ສະàºàº±àº­àº”ເàºàº¥àº´àº"
+ },
+ "es": {
+ "code": "es",
+ "name": "ສະà»àº›àº™àº™àº´àºŠ"
+ },
+ "sl": {
+ "code": "sl",
+ "name": "ສະໂລເວນຽນ"
+ },
+ "sk": {
+ "code": "sk",
+ "name": "ສະໂລà»àº§àº±àº"
+ },
+ "gsw": {
+ "code": "gsw",
+ "name": "ສະວິສ ເຈີà»àº¡àº™"
+ },
+ "fr-CH": {
+ "code": "fr-CH",
+ "name": "ສະວິສ àºàº£àº±à»ˆàº‡"
+ },
+ "de-CH": {
+ "code": "de-CH",
+ "name": "ສະວິສ ໄຮ ເຈີà»àº¡àº™"
+ },
+ "sv": {
+ "code": "sv",
+ "name": "ສະວີດິຊ"
+ },
+ "si": {
+ "code": "si",
+ "name": "ສິນຫາລາ"
+ },
+ "dsb": {
+ "code": "dsb",
+ "name": "ຊà»àºšàº½àº™àº•à»à»ˆàºàº§à»ˆàº²"
+ },
+ "sw": {
+ "code": "sw",
+ "name": "ຊວາຮີລິ"
+ },
+ "sbp": {
+ "code": "sbp",
+ "name": "ຊານàºàº¹"
+ },
+ "dje": {
+ "code": "dje",
+ "name": "ຊາມາ"
+ },
+ "se": {
+ "code": "se",
+ "name": "ຊາມິເໜືອ"
+ },
+ "ksb": {
+ "code": "ksb",
+ "name": "ຊຳບາລ້າ"
+ },
+ "saq": {
+ "code": "saq",
+ "name": "ຊຳບູຣູ"
+ },
+ "cgg": {
+ "code": "cgg",
+ "name": "ຊີàºàº²"
+ },
+ "seh": {
+ "code": "seh",
+ "name": "ຊີນາ"
+ },
+ "chr": {
+ "code": "chr",
+ "name": "ຊີໂຣàºàºµ"
+ },
+ "hsb": {
+ "code": "hsb",
+ "name": "ຊຸບເປີຊà»àºšàº½àº™"
+ },
+ "zu": {
+ "code": "zu",
+ "name": "ຊູລູ"
+ },
+ "cs": {
+ "code": "cs",
+ "name": "ເຊàº"
+ },
+ "sr": {
+ "code": "sr",
+ "name": "ເຊີບຽນ"
+ },
+ "sg": {
+ "code": "sg",
+ "name": "à»àºŠàº‡à»‚àº"
+ },
+ "xog": {
+ "code": "xog",
+ "name": "ໂຊàºàº²"
+ },
+ "sn": {
+ "code": "sn",
+ "name": "ໂຊນາ"
+ },
+ "so": {
+ "code": "so",
+ "name": "ໂຊມາລີ"
+ },
+ "ja": {
+ "code": "ja",
+ "name": "àºàºµà»ˆàº›àº¸à»ˆàº™"
+ },
+ "yav": {
+ "code": "yav",
+ "name": "à»àºàº‡à»€àºšàº™"
+ },
+ "nl": {
+ "code": "nl",
+ "name": "ດັຊ"
+ },
+ "dz": {
+ "code": "dz",
+ "name": "ດີຊອງຄາ"
+ },
+ "da": {
+ "code": "da",
+ "name": "à»àº”ນິຊ"
+ },
+ "twq": {
+ "code": "twq",
+ "name": "ຕາຊາວັàº"
+ },
+ "ti": {
+ "code": "ti",
+ "name": "ຕິàºàº£àº´àº™àº¢àº²"
+ },
+ "teo": {
+ "code": "teo",
+ "name": "ເຕໂຊ"
+ },
+ "te": {
+ "code": "te",
+ "name": "ເຕລູàºàº¹"
+ },
+ "dav": {
+ "code": "dav",
+ "name": "ໄຕຕາ"
+ },
+ "to": {
+ "code": "to",
+ "name": "ທອງàºàº²àº™"
+ },
+ "shi": {
+ "code": "shi",
+ "name": "ທາເຊວຫິດ"
+ },
+ "ta": {
+ "code": "ta",
+ "name": "ທາມິລ"
+ },
+ "bo": {
+ "code": "bo",
+ "name": "ທິເບທັນ"
+ },
+ "tr": {
+ "code": "tr",
+ "name": "ເທີຄິຊ"
+ },
+ "th": {
+ "code": "th",
+ "name": "ໄທ"
+ },
+ "nn": {
+ "code": "nn",
+ "name": "ນà»à»€àº§àºˆàº½àº™ ນີນອàº"
+ },
+ "nb": {
+ "code": "nb",
+ "name": "ນà»à»€àº§àºˆàº½àº™ ບັອàºàº¡àº­àº¥"
+ },
+ "nyn": {
+ "code": "nyn",
+ "name": "ນານຄອນ"
+ },
+ "naq": {
+ "code": "naq",
+ "name": "ນາມາ"
+ },
+ "ne": {
+ "code": "ne",
+ "name": "ເນປາລີ"
+ },
+ "nus": {
+ "code": "nus",
+ "name": "ເນີ"
+ },
+ "pt-BR": {
+ "code": "pt-BR",
+ "name": "ບຣາຊິລຽນ ປà»àº•àº¹àºàºµàºª"
+ },
+ "bs": {
+ "code": "bs",
+ "name": "ບອສນຽນ"
+ },
+ "bg": {
+ "code": "bg",
+ "name": "ບັງàºàº²àº£àº½àº™"
+ },
+ "eu": {
+ "code": "eu",
+ "name": "ບັສàºàºµ"
+ },
+ "bas": {
+ "code": "bas",
+ "name": "ບາຊາ"
+ },
+ "ksf": {
+ "code": "ksf",
+ "name": "ບາເຟàº"
+ },
+ "bm": {
+ "code": "bm",
+ "name": "ບາມບາຣາ"
+ },
+ "bez": {
+ "code": "bez",
+ "name": "ບີນາ"
+ },
+ "br": {
+ "code": "br",
+ "name": "ເບຣຕັນ"
+ },
+ "be": {
+ "code": "be",
+ "name": "ເບລາຣັສຊຽນ"
+ },
+ "bn": {
+ "code": "bn",
+ "name": "ເບັງàºàº²àº¥àºµ"
+ },
+ "brx": {
+ "code": "brx",
+ "name": "ໂບດູ"
+ },
+ "pt": {
+ "code": "pt",
+ "name": "ປà»àº•àº¹àºàºµàºª"
+ },
+ "pa": {
+ "code": "pa",
+ "name": "ປັນຈາບີ"
+ },
+ "ps": {
+ "code": "ps",
+ "name": "ປາສໂຕ"
+ },
+ "fa": {
+ "code": "fa",
+ "name": "ເປີຊຽນ"
+ },
+ "pl": {
+ "code": "pl",
+ "name": "ໂປລິຊ"
+ },
+ "fr": {
+ "code": "fr",
+ "name": "àºàº£àº±à»ˆàº‡"
+ },
+ "fur": {
+ "code": "fur",
+ "name": "ຟຣີລຽນ"
+ },
+ "nl-BE": {
+ "code": "nl-BE",
+ "name": "ຟລີມິຊ"
+ },
+ "fo": {
+ "code": "fo",
+ "name": "ຟາໂຣສ"
+ },
+ "fi": {
+ "code": "fi",
+ "name": "ຟິນນິຊ"
+ },
+ "fil": {
+ "code": "fil",
+ "name": "ຟີລິປີໂນ"
+ },
+ "ff": {
+ "code": "ff",
+ "name": "ຟູລາ"
+ },
+ "mfe": {
+ "code": "mfe",
+ "name": "ມà»àº£àº´àºªà»€àº¢àº™"
+ },
+ "mn": {
+ "code": "mn",
+ "name": "ມອງໂàºà»€àº¥àº"
+ },
+ "mt": {
+ "code": "mt",
+ "name": "ມອລທີສ"
+ },
+ "mua": {
+ "code": "mua",
+ "name": "ມັນດັງ"
+ },
+ "kde": {
+ "code": "kde",
+ "name": "ມາຄອນເດ"
+ },
+ "mgh": {
+ "code": "mgh",
+ "name": "ມາຄູວາ-ມີດໂຕ"
+ },
+ "jmc": {
+ "code": "jmc",
+ "name": "ມາà»àºŠàº¡"
+ },
+ "mas": {
+ "code": "mas",
+ "name": "ມາໄຊ"
+ },
+ "mr": {
+ "code": "mr",
+ "name": "ມາຣາທີ"
+ },
+ "mg": {
+ "code": "mg",
+ "name": "ມາລາàºàº²àºªàºŠàºµ"
+ },
+ "ms": {
+ "code": "ms",
+ "name": "ມາເລ"
+ },
+ "ml": {
+ "code": "ml",
+ "name": "ມາເລອາລຳ"
+ },
+ "my": {
+ "code": "my",
+ "name": "ມຽນມາ"
+ },
+ "mer": {
+ "code": "mer",
+ "name": "ເມຣູ"
+ },
+ "es-MX": {
+ "code": "es-MX",
+ "name": "ເມັàºàºŠàº´àºàº±àº™ ສະà»àº›àº™àº™àº´àºŠ"
+ },
+ "mk": {
+ "code": "mk",
+ "name": "à»àº¡àº±àºà»€àºŠà»‚ດນຽນ"
+ },
+ "ro-MD": {
+ "code": "ro-MD",
+ "name": "ໂມດາວຽນ"
+ },
+ "zgh": {
+ "code": "zgh",
+ "name": "ໂມຣັອàºà»àº„ນ ທາມາຊີຠມາດຕະຖານ"
+ },
+ "uk": {
+ "code": "uk",
+ "name": "ຢູເຄຣນຽນ"
+ },
+ "es-ES": {
+ "code": "es-ES",
+ "name": "ຢູໂຣປຽນ ສະà»àº›àº™àº™àº´àºŠ"
+ },
+ "pt-PT": {
+ "code": "pt-PT",
+ "name": "ຢູໂຣປຽນ ປà»àº•àº¹àºàºµàºª"
+ },
+ "de": {
+ "code": "de",
+ "name": "ເຢàºàº¥àº°àº¡àº±àº™"
+ },
+ "yo": {
+ "code": "yo",
+ "name": "ໂຢຣູບາ"
+ },
+ "ru": {
+ "code": "ru",
+ "name": "ຣັດຊຽນ"
+ },
+ "rn": {
+ "code": "rn",
+ "name": "ຣຸນດິ"
+ },
+ "rof": {
+ "code": "rof",
+ "name": "ຣົມໂບ"
+ },
+ "rm": {
+ "code": "rm",
+ "name": "ໂຣà»àº¡àº™"
+ },
+ "ro": {
+ "code": "ro",
+ "name": "ໂຣà»àº¡àº™àº½àº™"
+ },
+ "lb": {
+ "code": "lb",
+ "name": "ລັàºà»€àºŠàº¡àºšàº§àºàºàº´àºŠ"
+ },
+ "lv": {
+ "code": "lv",
+ "name": "ລັດວຽນ"
+ },
+ "lo": {
+ "code": "lo",
+ "name": "ລາວ"
+ },
+ "ln": {
+ "code": "ln",
+ "name": "ລິງàºàº²àº¥àº²"
+ },
+ "lt": {
+ "code": "lt",
+ "name": "ລິທົວນຽນ"
+ },
+ "luy": {
+ "code": "luy",
+ "name": "ລູໄàº"
+ },
+ "lu": {
+ "code": "lu",
+ "name": "ລູບາ-ຄາຕັງàºàº²"
+ },
+ "luo": {
+ "code": "luo",
+ "name": "ລົວ"
+ },
+ "lag": {
+ "code": "lag",
+ "name": "à»àº¥àº™àºàº´"
+ },
+ "vun": {
+ "code": "vun",
+ "name": "ວັນໂຈ"
+ },
+ "wae": {
+ "code": "wae",
+ "name": "ວາເຊີ"
+ },
+ "fy": {
+ "code": "fy",
+ "name": "ເວສເທີນ ຟຣິຊຽນ"
+ },
+ "cy": {
+ "code": "cy",
+ "name": "ເວວ"
+ },
+ "vai": {
+ "code": "vai",
+ "name": "ໄວ"
+ },
+ "vi": {
+ "code": "vi",
+ "name": "ຫວຽດນາມ"
+ },
+ "de-AT": {
+ "code": "de-AT",
+ "name": "ອອສຕຣຽນ ເຈີà»àº¡àº™"
+ },
+ "en": {
+ "code": "en",
+ "name": "ອັງàºàº´àº”"
+ },
+ "en-CA": {
+ "code": "en-CA",
+ "name": "ອັງàºàº´àº” (ເຄເນດຽນ)"
+ },
+ "en-GB": {
+ "code": "en-GB",
+ "name": "ອັງàºàº´àº” (ບຣິດທິຊ)"
+ },
+ "en-AU": {
+ "code": "en-AU",
+ "name": "ອັງàºàº´àº” (ອອສເຕຣລຽນ)"
+ },
+ "en-US": {
+ "code": "en-US",
+ "name": "ອັງàºàº´àº” (ອາເມລິàºàº±àº™)"
+ },
+ "ast": {
+ "code": "ast",
+ "name": "ອັສຕູຮຽນ"
+ },
+ "tzm": {
+ "code": "tzm",
+ "name": "ອັດລາສ ທາມາຊີຠàºàº²àº‡"
+ },
+ "ak": {
+ "code": "ak",
+ "name": "ອາàºàº²àº™"
+ },
+ "asa": {
+ "code": "asa",
+ "name": "ອາຊູ"
+ },
+ "az": {
+ "code": "az",
+ "name": "ອາເຊີໄບຈານິ"
+ },
+ "sq": {
+ "code": "sq",
+ "name": "ອານບານຽນ"
+ },
+ "af": {
+ "code": "af",
+ "name": "ອາຟຣິàºàº²àº™"
+ },
+ "hy": {
+ "code": "hy",
+ "name": "ອາເມນຽນ"
+ },
+ "rwk": {
+ "code": "rwk",
+ "name": "ອາຣວາ"
+ },
+ "ar": {
+ "code": "ar",
+ "name": "ອາຣັບ"
+ },
+ "ar-001": {
+ "code": "ar-001",
+ "name": "ອາຣາບິàºàº¡àº²àº”ຕະຖານສະໄà»à»ƒà»à»ˆ"
+ },
+ "agq": {
+ "code": "agq",
+ "name": "ອາເຮັມ"
+ },
+ "am": {
+ "code": "am",
+ "name": "ອຳຮາຣິàº"
+ },
+ "it": {
+ "code": "it",
+ "name": "ອິຕາລຽນ"
+ },
+ "id": {
+ "code": "id",
+ "name": "ອິນໂດເນຊຽນ"
+ },
+ "ee": {
+ "code": "ee",
+ "name": "ອິວາ"
+ },
+ "ewo": {
+ "code": "ewo",
+ "name": "ອີວອນດູ"
+ },
+ "uz": {
+ "code": "uz",
+ "name": "ອຸສເບàº"
+ },
+ "ug": {
+ "code": "ug",
+ "name": "ອຸàºà»€àº„ີ"
+ },
+ "ur": {
+ "code": "ur",
+ "name": "ອູຣະດູ"
+ },
+ "et": {
+ "code": "et",
+ "name": "ເອສໂຕນຽນ"
+ },
+ "eo": {
+ "code": "eo",
+ "name": "ເອສເປີຣັນໂຕ"
+ },
+ "nd": {
+ "code": "nd",
+ "name": "ເອັນເດເບເລເໜືອ"
+ },
+ "ebu": {
+ "code": "ebu",
+ "name": "ເອັມບູ"
+ },
+ "or": {
+ "code": "or",
+ "name": "ໂອຣິຢາ"
+ },
+ "is": {
+ "code": "is",
+ "name": "ໄອສà»àº¥àº™àº”ິàº"
+ },
+ "ga": {
+ "code": "ga",
+ "name": "ໄອຣິສ"
+ },
+ "hu": {
+ "code": "hu",
+ "name": "ຮັງàºàº²àº£àº½àº™"
+ },
+ "hi": {
+ "code": "hi",
+ "name": "ຮິນດິ"
+ },
+ "he": {
+ "code": "he",
+ "name": "ຮີບຣິວ"
+ },
+ "ha": {
+ "code": "ha",
+ "name": "ເຮົາຊາ"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/language/lt.json b/library/intl/resources/language/lt.json
new file mode 100644
index 000000000..3cc9d41d1
--- /dev/null
+++ b/library/intl/resources/language/lt.json
@@ -0,0 +1,738 @@
+{
+ "af": {
+ "code": "af",
+ "name": "afrikanų"
+ },
+ "agq": {
+ "code": "agq",
+ "name": "aghemų"
+ },
+ "ga": {
+ "code": "ga",
+ "name": "airių"
+ },
+ "ak": {
+ "code": "ak",
+ "name": "akanų"
+ },
+ "sq": {
+ "code": "sq",
+ "name": "albanų"
+ },
+ "am": {
+ "code": "am",
+ "name": "amharų"
+ },
+ "en": {
+ "code": "en",
+ "name": "anglų"
+ },
+ "ar": {
+ "code": "ar",
+ "name": "arabų"
+ },
+ "hy": {
+ "code": "hy",
+ "name": "armėnų"
+ },
+ "ast": {
+ "code": "ast",
+ "name": "asturianų"
+ },
+ "asa": {
+ "code": "asa",
+ "name": "asu"
+ },
+ "hsb": {
+ "code": "hsb",
+ "name": "aukštutinių sorbų"
+ },
+ "en-AU": {
+ "code": "en-AU",
+ "name": "Australijos anglų"
+ },
+ "de-AT": {
+ "code": "de-AT",
+ "name": "Austrijos vokieÄių"
+ },
+ "az": {
+ "code": "az",
+ "name": "azerbaidžanieÄių"
+ },
+ "ksf": {
+ "code": "ksf",
+ "name": "bafų"
+ },
+ "be": {
+ "code": "be",
+ "name": "baltarusių"
+ },
+ "bm": {
+ "code": "bm",
+ "name": "bambarų"
+ },
+ "eu": {
+ "code": "eu",
+ "name": "baskų"
+ },
+ "bas": {
+ "code": "bas",
+ "name": "basų"
+ },
+ "bn": {
+ "code": "bn",
+ "name": "bengalų"
+ },
+ "bez": {
+ "code": "bez",
+ "name": "benų"
+ },
+ "my": {
+ "code": "my",
+ "name": "birmieÄių"
+ },
+ "brx": {
+ "code": "brx",
+ "name": "bodo"
+ },
+ "bs": {
+ "code": "bs",
+ "name": "bosnių"
+ },
+ "dz": {
+ "code": "dz",
+ "name": "botijų"
+ },
+ "pt-BR": {
+ "code": "pt-BR",
+ "name": "Brazilijos portugalų"
+ },
+ "br": {
+ "code": "br",
+ "name": "bretonų"
+ },
+ "bg": {
+ "code": "bg",
+ "name": "bulgarų"
+ },
+ "tzm": {
+ "code": "tzm",
+ "name": "Centrinio Maroko tamazitų"
+ },
+ "cs": {
+ "code": "cs",
+ "name": "Äekų"
+ },
+ "chr": {
+ "code": "chr",
+ "name": "Äerokių"
+ },
+ "cgg": {
+ "code": "cgg",
+ "name": "Äigų"
+ },
+ "da": {
+ "code": "da",
+ "name": "danų"
+ },
+ "en-GB": {
+ "code": "en-GB",
+ "name": "Didžiosios Britanijos anglų"
+ },
+ "dyo": {
+ "code": "dyo",
+ "name": "džiola-foni"
+ },
+ "ebu": {
+ "code": "ebu",
+ "name": "embu"
+ },
+ "eo": {
+ "code": "eo",
+ "name": "esperanto"
+ },
+ "et": {
+ "code": "et",
+ "name": "estų"
+ },
+ "es-ES": {
+ "code": "es-ES",
+ "name": "Europos ispanų"
+ },
+ "pt-PT": {
+ "code": "pt-PT",
+ "name": "Europos portugalų"
+ },
+ "ee": {
+ "code": "ee",
+ "name": "evių"
+ },
+ "ewo": {
+ "code": "ewo",
+ "name": "evondo"
+ },
+ "fo": {
+ "code": "fo",
+ "name": "farerų"
+ },
+ "fil": {
+ "code": "fil",
+ "name": "filipinieÄių"
+ },
+ "nl-BE": {
+ "code": "nl-BE",
+ "name": "flamandų"
+ },
+ "fur": {
+ "code": "fur",
+ "name": "frulan"
+ },
+ "ff": {
+ "code": "ff",
+ "name": "fulahų"
+ },
+ "gl": {
+ "code": "gl",
+ "name": "galisų"
+ },
+ "lg": {
+ "code": "lg",
+ "name": "ganda"
+ },
+ "el": {
+ "code": "el",
+ "name": "graikų"
+ },
+ "ka": {
+ "code": "ka",
+ "name": "gruzinų"
+ },
+ "gu": {
+ "code": "gu",
+ "name": "gudžaratų"
+ },
+ "guz": {
+ "code": "guz",
+ "name": "gusi"
+ },
+ "ha": {
+ "code": "ha",
+ "name": "hausų"
+ },
+ "he": {
+ "code": "he",
+ "name": "hebrajų"
+ },
+ "hi": {
+ "code": "hi",
+ "name": "hindi"
+ },
+ "id": {
+ "code": "id",
+ "name": "indonezieÄių"
+ },
+ "is": {
+ "code": "is",
+ "name": "islandų"
+ },
+ "es": {
+ "code": "es",
+ "name": "ispanų"
+ },
+ "it": {
+ "code": "it",
+ "name": "italų"
+ },
+ "yav": {
+ "code": "yav",
+ "name": "jangbenų"
+ },
+ "ja": {
+ "code": "ja",
+ "name": "japonų"
+ },
+ "yo": {
+ "code": "yo",
+ "name": "jorubų"
+ },
+ "en-US": {
+ "code": "en-US",
+ "name": "Jungtinių Valstijų anglų"
+ },
+ "kl": {
+ "code": "kl",
+ "name": "kalalisut"
+ },
+ "kln": {
+ "code": "kln",
+ "name": "kalenjinų"
+ },
+ "en-CA": {
+ "code": "en-CA",
+ "name": "Kanados anglų"
+ },
+ "fr-CA": {
+ "code": "fr-CA",
+ "name": "Kanados prancūzų"
+ },
+ "kn": {
+ "code": "kn",
+ "name": "kanadų"
+ },
+ "ks": {
+ "code": "ks",
+ "name": "kašmyrų"
+ },
+ "ca": {
+ "code": "ca",
+ "name": "katalonų"
+ },
+ "kk": {
+ "code": "kk",
+ "name": "kazachų"
+ },
+ "kab": {
+ "code": "kab",
+ "name": "kebailų"
+ },
+ "kam": {
+ "code": "kam",
+ "name": "kembų"
+ },
+ "km": {
+ "code": "km",
+ "name": "khmerų"
+ },
+ "ki": {
+ "code": "ki",
+ "name": "kikujų"
+ },
+ "zh": {
+ "code": "zh",
+ "name": "kinų"
+ },
+ "ky": {
+ "code": "ky",
+ "name": "kirgizų"
+ },
+ "khq": {
+ "code": "khq",
+ "name": "kojra Äini"
+ },
+ "ses": {
+ "code": "ses",
+ "name": "kojraboro seni"
+ },
+ "ksh": {
+ "code": "ksh",
+ "name": "kolognų"
+ },
+ "swc": {
+ "code": "swc",
+ "name": "Kongo suahilių"
+ },
+ "ko": {
+ "code": "ko",
+ "name": "korÄ—jieÄių"
+ },
+ "hr": {
+ "code": "hr",
+ "name": "kroatų"
+ },
+ "nmg": {
+ "code": "nmg",
+ "name": "kvasių"
+ },
+ "lag": {
+ "code": "lag",
+ "name": "langi"
+ },
+ "lo": {
+ "code": "lo",
+ "name": "laosieÄių"
+ },
+ "lv": {
+ "code": "lv",
+ "name": "latvių"
+ },
+ "pl": {
+ "code": "pl",
+ "name": "lenkų"
+ },
+ "lt": {
+ "code": "lt",
+ "name": "lietuvių"
+ },
+ "lb": {
+ "code": "lb",
+ "name": "liuksemburgieÄių"
+ },
+ "lu": {
+ "code": "lu",
+ "name": "luba katanga"
+ },
+ "luy": {
+ "code": "luy",
+ "name": "luja"
+ },
+ "luo": {
+ "code": "luo",
+ "name": "Luo"
+ },
+ "jmc": {
+ "code": "jmc",
+ "name": "maÄamų"
+ },
+ "mk": {
+ "code": "mk",
+ "name": "makedonų"
+ },
+ "kde": {
+ "code": "kde",
+ "name": "makondų"
+ },
+ "mgh": {
+ "code": "mgh",
+ "name": "makua-maeto"
+ },
+ "mg": {
+ "code": "mg",
+ "name": "malagasų"
+ },
+ "ml": {
+ "code": "ml",
+ "name": "malajalių"
+ },
+ "ms": {
+ "code": "ms",
+ "name": "malajieÄių"
+ },
+ "mt": {
+ "code": "mt",
+ "name": "maltieÄių"
+ },
+ "mr": {
+ "code": "mr",
+ "name": "maratų"
+ },
+ "mas": {
+ "code": "mas",
+ "name": "masajų"
+ },
+ "es-MX": {
+ "code": "es-MX",
+ "name": "Meksikos ispanų"
+ },
+ "mer": {
+ "code": "mer",
+ "name": "merų"
+ },
+ "ro-MD": {
+ "code": "ro-MD",
+ "name": "moldavų"
+ },
+ "mn": {
+ "code": "mn",
+ "name": "mongolų"
+ },
+ "mfe": {
+ "code": "mfe",
+ "name": "morisijų"
+ },
+ "mua": {
+ "code": "mua",
+ "name": "mundangų"
+ },
+ "naq": {
+ "code": "naq",
+ "name": "nama"
+ },
+ "nn": {
+ "code": "nn",
+ "name": "naujoji norvegų"
+ },
+ "ne": {
+ "code": "ne",
+ "name": "nepalieÄių"
+ },
+ "ln": {
+ "code": "ln",
+ "name": "ngalų"
+ },
+ "jgo": {
+ "code": "jgo",
+ "name": "ngombų"
+ },
+ "nyn": {
+ "code": "nyn",
+ "name": "niankolų"
+ },
+ "nb": {
+ "code": "nb",
+ "name": "Norvegijos rašytinė – būkmolų"
+ },
+ "nus": {
+ "code": "nus",
+ "name": "nuerų"
+ },
+ "nl": {
+ "code": "nl",
+ "name": "olandų"
+ },
+ "or": {
+ "code": "or",
+ "name": "orijų"
+ },
+ "pa": {
+ "code": "pa",
+ "name": "pendžabų"
+ },
+ "fa": {
+ "code": "fa",
+ "name": "persų"
+ },
+ "pt": {
+ "code": "pt",
+ "name": "portugalų"
+ },
+ "fr": {
+ "code": "fr",
+ "name": "prancūzų"
+ },
+ "ps": {
+ "code": "ps",
+ "name": "puštūnų"
+ },
+ "rm": {
+ "code": "rm",
+ "name": "retoromanų"
+ },
+ "rof": {
+ "code": "rof",
+ "name": "rombo"
+ },
+ "rwk": {
+ "code": "rwk",
+ "name": "rua"
+ },
+ "ro": {
+ "code": "ro",
+ "name": "rumunų"
+ },
+ "rn": {
+ "code": "rn",
+ "name": "rundi"
+ },
+ "ru": {
+ "code": "ru",
+ "name": "rusų"
+ },
+ "saq": {
+ "code": "saq",
+ "name": "sambūrų"
+ },
+ "sg": {
+ "code": "sg",
+ "name": "sango"
+ },
+ "sbp": {
+ "code": "sbp",
+ "name": "sangų"
+ },
+ "seh": {
+ "code": "seh",
+ "name": "senų"
+ },
+ "sr": {
+ "code": "sr",
+ "name": "serbų"
+ },
+ "si": {
+ "code": "si",
+ "name": "sinhalų"
+ },
+ "sk": {
+ "code": "sk",
+ "name": "slovakų"
+ },
+ "sl": {
+ "code": "sl",
+ "name": "slovėnų"
+ },
+ "xog": {
+ "code": "xog",
+ "name": "sogų"
+ },
+ "so": {
+ "code": "so",
+ "name": "somalieÄių"
+ },
+ "zgh": {
+ "code": "zgh",
+ "name": "standartinė Maroko tamazigtų"
+ },
+ "sw": {
+ "code": "sw",
+ "name": "suahilių"
+ },
+ "fi": {
+ "code": "fi",
+ "name": "suomių"
+ },
+ "zh-Hans": {
+ "code": "zh-Hans",
+ "name": "supaprastintoji kinų"
+ },
+ "ksb": {
+ "code": "ksb",
+ "name": "šambalų"
+ },
+ "nd": {
+ "code": "nd",
+ "name": "šiaurės ndebelų"
+ },
+ "se": {
+ "code": "se",
+ "name": "šiaurės samių"
+ },
+ "ar-001": {
+ "code": "ar-001",
+ "name": "šiuolaikinė standartinė arabų"
+ },
+ "gd": {
+ "code": "gd",
+ "name": "škotų (gėlų)"
+ },
+ "sn": {
+ "code": "sn",
+ "name": "šonų"
+ },
+ "sv": {
+ "code": "sv",
+ "name": "švedų"
+ },
+ "de-CH": {
+ "code": "de-CH",
+ "name": "Å veicarijos aukÅ¡tutinÄ— vokieÄių"
+ },
+ "fr-CH": {
+ "code": "fr-CH",
+ "name": "Šveicarijos prancūzų"
+ },
+ "gsw": {
+ "code": "gsw",
+ "name": "Å veicarijos vokieÄių"
+ },
+ "shi": {
+ "code": "shi",
+ "name": "tachelhitų"
+ },
+ "dav": {
+ "code": "dav",
+ "name": "taitų"
+ },
+ "th": {
+ "code": "th",
+ "name": "tajų"
+ },
+ "ta": {
+ "code": "ta",
+ "name": "tamilų"
+ },
+ "twq": {
+ "code": "twq",
+ "name": "tasavakų"
+ },
+ "te": {
+ "code": "te",
+ "name": "telugų"
+ },
+ "teo": {
+ "code": "teo",
+ "name": "teso"
+ },
+ "bo": {
+ "code": "bo",
+ "name": "tibetieÄių"
+ },
+ "ti": {
+ "code": "ti",
+ "name": "tigrajų"
+ },
+ "to": {
+ "code": "to",
+ "name": "tonganų"
+ },
+ "zh-Hant": {
+ "code": "zh-Hant",
+ "name": "tradicinė kinų"
+ },
+ "tr": {
+ "code": "tr",
+ "name": "turkų"
+ },
+ "ug": {
+ "code": "ug",
+ "name": "uigūrų"
+ },
+ "uk": {
+ "code": "uk",
+ "name": "ukrainieÄių"
+ },
+ "ur": {
+ "code": "ur",
+ "name": "urdų"
+ },
+ "uz": {
+ "code": "uz",
+ "name": "uzbekų"
+ },
+ "vai": {
+ "code": "vai",
+ "name": "Vai"
+ },
+ "fy": {
+ "code": "fy",
+ "name": "vakarų fryzų"
+ },
+ "wae": {
+ "code": "wae",
+ "name": "valserų"
+ },
+ "cy": {
+ "code": "cy",
+ "name": "valų"
+ },
+ "hu": {
+ "code": "hu",
+ "name": "vengrų"
+ },
+ "vi": {
+ "code": "vi",
+ "name": "vietnamieÄių"
+ },
+ "de": {
+ "code": "de",
+ "name": "vokieÄių"
+ },
+ "vun": {
+ "code": "vun",
+ "name": "vunjo"
+ },
+ "dje": {
+ "code": "dje",
+ "name": "zarmų"
+ },
+ "zu": {
+ "code": "zu",
+ "name": "zulų"
+ },
+ "kea": {
+ "code": "kea",
+ "name": "Žaliojo Kyšulio kreolų"
+ },
+ "dsb": {
+ "code": "dsb",
+ "name": "žemutinių sorbų"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/language/lu.json b/library/intl/resources/language/lu.json
new file mode 100644
index 000000000..6f1aca5d3
--- /dev/null
+++ b/library/intl/resources/language/lu.json
@@ -0,0 +1,738 @@
+{
+ "af": {
+ "code": "af",
+ "name": "Afrikaans"
+ },
+ "agq": {
+ "code": "agq",
+ "name": "Aghem"
+ },
+ "sq": {
+ "code": "sq",
+ "name": "Albanian"
+ },
+ "ar-001": {
+ "code": "ar-001",
+ "name": "ar_001"
+ },
+ "ar": {
+ "code": "ar",
+ "name": "Arabi"
+ },
+ "hy": {
+ "code": "hy",
+ "name": "Armenian"
+ },
+ "ast": {
+ "code": "ast",
+ "name": "Asturian"
+ },
+ "asa": {
+ "code": "asa",
+ "name": "Asu"
+ },
+ "az": {
+ "code": "az",
+ "name": "Azerbaijani"
+ },
+ "ksf": {
+ "code": "ksf",
+ "name": "Bafia"
+ },
+ "bm": {
+ "code": "bm",
+ "name": "Bambara"
+ },
+ "bas": {
+ "code": "bas",
+ "name": "Basaa"
+ },
+ "eu": {
+ "code": "eu",
+ "name": "Basque"
+ },
+ "be": {
+ "code": "be",
+ "name": "Belarusi"
+ },
+ "bez": {
+ "code": "bez",
+ "name": "Bena"
+ },
+ "bn": {
+ "code": "bn",
+ "name": "Bengali"
+ },
+ "brx": {
+ "code": "brx",
+ "name": "Bodo"
+ },
+ "bs": {
+ "code": "bs",
+ "name": "Bosnian"
+ },
+ "br": {
+ "code": "br",
+ "name": "Breton"
+ },
+ "bg": {
+ "code": "bg",
+ "name": "Bulegari"
+ },
+ "my": {
+ "code": "my",
+ "name": "Burmese"
+ },
+ "ca": {
+ "code": "ca",
+ "name": "Catalan"
+ },
+ "tzm": {
+ "code": "tzm",
+ "name": "Central Atlas Tamazight"
+ },
+ "chr": {
+ "code": "chr",
+ "name": "Cherokee"
+ },
+ "cgg": {
+ "code": "cgg",
+ "name": "Chiga"
+ },
+ "ksh": {
+ "code": "ksh",
+ "name": "Colognian"
+ },
+ "swc": {
+ "code": "swc",
+ "name": "Congo Swahili"
+ },
+ "hr": {
+ "code": "hr",
+ "name": "Croatian"
+ },
+ "da": {
+ "code": "da",
+ "name": "Danish"
+ },
+ "de-AT": {
+ "code": "de-AT",
+ "name": "de_AT"
+ },
+ "de-CH": {
+ "code": "de-CH",
+ "name": "de_CH"
+ },
+ "dz": {
+ "code": "dz",
+ "name": "Dzongkha"
+ },
+ "ebu": {
+ "code": "ebu",
+ "name": "Embu"
+ },
+ "en-AU": {
+ "code": "en-AU",
+ "name": "en_AU"
+ },
+ "en-CA": {
+ "code": "en-CA",
+ "name": "en_CA"
+ },
+ "en-GB": {
+ "code": "en-GB",
+ "name": "en_GB"
+ },
+ "en-US": {
+ "code": "en-US",
+ "name": "en_US"
+ },
+ "es-ES": {
+ "code": "es-ES",
+ "name": "es_ES"
+ },
+ "es-MX": {
+ "code": "es-MX",
+ "name": "es_MX"
+ },
+ "eo": {
+ "code": "eo",
+ "name": "Esperanto"
+ },
+ "et": {
+ "code": "et",
+ "name": "Estonian"
+ },
+ "ee": {
+ "code": "ee",
+ "name": "Ewe"
+ },
+ "ewo": {
+ "code": "ewo",
+ "name": "Ewondo"
+ },
+ "fo": {
+ "code": "fo",
+ "name": "Faroese"
+ },
+ "fil": {
+ "code": "fil",
+ "name": "Filipino"
+ },
+ "fi": {
+ "code": "fi",
+ "name": "Finnish"
+ },
+ "fr-CA": {
+ "code": "fr-CA",
+ "name": "fr_CA"
+ },
+ "fr-CH": {
+ "code": "fr-CH",
+ "name": "fr_CH"
+ },
+ "fur": {
+ "code": "fur",
+ "name": "Friulian"
+ },
+ "ff": {
+ "code": "ff",
+ "name": "Fulah"
+ },
+ "gl": {
+ "code": "gl",
+ "name": "Galician"
+ },
+ "lg": {
+ "code": "lg",
+ "name": "Ganda"
+ },
+ "ka": {
+ "code": "ka",
+ "name": "Georgian"
+ },
+ "el": {
+ "code": "el",
+ "name": "Giliki"
+ },
+ "gu": {
+ "code": "gu",
+ "name": "Gujarati"
+ },
+ "guz": {
+ "code": "guz",
+ "name": "Gusii"
+ },
+ "ha": {
+ "code": "ha",
+ "name": "Hausa"
+ },
+ "he": {
+ "code": "he",
+ "name": "Hebrew"
+ },
+ "hi": {
+ "code": "hi",
+ "name": "Hindi"
+ },
+ "hu": {
+ "code": "hu",
+ "name": "Hongili"
+ },
+ "is": {
+ "code": "is",
+ "name": "Icelandic"
+ },
+ "ga": {
+ "code": "ga",
+ "name": "Irish"
+ },
+ "dyo": {
+ "code": "dyo",
+ "name": "Jola-Fonyi"
+ },
+ "kea": {
+ "code": "kea",
+ "name": "Kabuverdianu"
+ },
+ "kab": {
+ "code": "kab",
+ "name": "Kabyle"
+ },
+ "kl": {
+ "code": "kl",
+ "name": "Kalaallisut"
+ },
+ "kln": {
+ "code": "kln",
+ "name": "Kalenjin"
+ },
+ "kam": {
+ "code": "kam",
+ "name": "Kamba"
+ },
+ "kn": {
+ "code": "kn",
+ "name": "Kannada"
+ },
+ "ks": {
+ "code": "ks",
+ "name": "Kashmiri"
+ },
+ "kk": {
+ "code": "kk",
+ "name": "Kazakh"
+ },
+ "km": {
+ "code": "km",
+ "name": "Khmer"
+ },
+ "ki": {
+ "code": "ki",
+ "name": "Kikuyu"
+ },
+ "khq": {
+ "code": "khq",
+ "name": "Koyra Chiini"
+ },
+ "ses": {
+ "code": "ses",
+ "name": "Koyraboro Senni"
+ },
+ "nmg": {
+ "code": "nmg",
+ "name": "Kwasio"
+ },
+ "ky": {
+ "code": "ky",
+ "name": "Kyrgyz"
+ },
+ "lag": {
+ "code": "lag",
+ "name": "Langi"
+ },
+ "lo": {
+ "code": "lo",
+ "name": "Lao"
+ },
+ "lv": {
+ "code": "lv",
+ "name": "Latvian"
+ },
+ "ak": {
+ "code": "ak",
+ "name": "Liakan"
+ },
+ "am": {
+ "code": "am",
+ "name": "Liamhariki"
+ },
+ "es": {
+ "code": "es",
+ "name": "Lihispania"
+ },
+ "ko": {
+ "code": "ko",
+ "name": "Likoreya"
+ },
+ "ms": {
+ "code": "ms",
+ "name": "Limalezia"
+ },
+ "id": {
+ "code": "id",
+ "name": "Lindonezia"
+ },
+ "ln": {
+ "code": "ln",
+ "name": "Lingala"
+ },
+ "en": {
+ "code": "en",
+ "name": "Lingelesa"
+ },
+ "pa": {
+ "code": "pa",
+ "name": "Lipunjabi"
+ },
+ "ru": {
+ "code": "ru",
+ "name": "Lirisi"
+ },
+ "ro": {
+ "code": "ro",
+ "name": "Liromani"
+ },
+ "so": {
+ "code": "so",
+ "name": "Lisomali"
+ },
+ "sv": {
+ "code": "sv",
+ "name": "Lisuwidi"
+ },
+ "it": {
+ "code": "it",
+ "name": "Litali"
+ },
+ "lt": {
+ "code": "lt",
+ "name": "Lithuanian"
+ },
+ "vi": {
+ "code": "vi",
+ "name": "Liviyetinamu"
+ },
+ "ja": {
+ "code": "ja",
+ "name": "Liyapani"
+ },
+ "de": {
+ "code": "de",
+ "name": "Lizelumani"
+ },
+ "dsb": {
+ "code": "dsb",
+ "name": "Lower Sorbian"
+ },
+ "luo": {
+ "code": "luo",
+ "name": "Luo"
+ },
+ "lb": {
+ "code": "lb",
+ "name": "Luxembourgish"
+ },
+ "luy": {
+ "code": "luy",
+ "name": "Luyia"
+ },
+ "mk": {
+ "code": "mk",
+ "name": "Macedonian"
+ },
+ "jmc": {
+ "code": "jmc",
+ "name": "Machame"
+ },
+ "mgh": {
+ "code": "mgh",
+ "name": "Makhuwa-Meetto"
+ },
+ "kde": {
+ "code": "kde",
+ "name": "Makonde"
+ },
+ "mg": {
+ "code": "mg",
+ "name": "Malagasy"
+ },
+ "ml": {
+ "code": "ml",
+ "name": "Malayalam"
+ },
+ "mt": {
+ "code": "mt",
+ "name": "Maltese"
+ },
+ "mr": {
+ "code": "mr",
+ "name": "Marathi"
+ },
+ "mas": {
+ "code": "mas",
+ "name": "Masai"
+ },
+ "mer": {
+ "code": "mer",
+ "name": "Meru"
+ },
+ "fr": {
+ "code": "fr",
+ "name": "Mfwàlànsa"
+ },
+ "mn": {
+ "code": "mn",
+ "name": "Mongolian"
+ },
+ "mfe": {
+ "code": "mfe",
+ "name": "Morisyen"
+ },
+ "fa": {
+ "code": "fa",
+ "name": "Mpepajemi"
+ },
+ "pl": {
+ "code": "pl",
+ "name": "Mpoloni"
+ },
+ "pt": {
+ "code": "pt",
+ "name": "Mputulugɛsi"
+ },
+ "ta": {
+ "code": "ta",
+ "name": "Mtamuili"
+ },
+ "mua": {
+ "code": "mua",
+ "name": "Mundang"
+ },
+ "naq": {
+ "code": "naq",
+ "name": "Nama"
+ },
+ "ne": {
+ "code": "ne",
+ "name": "nepali"
+ },
+ "jgo": {
+ "code": "jgo",
+ "name": "Ngomba"
+ },
+ "uk": {
+ "code": "uk",
+ "name": "Nkrani"
+ },
+ "nl-BE": {
+ "code": "nl-BE",
+ "name": "nl_BE"
+ },
+ "nd": {
+ "code": "nd",
+ "name": "North Ndebele"
+ },
+ "se": {
+ "code": "se",
+ "name": "Northern Sami"
+ },
+ "nb": {
+ "code": "nb",
+ "name": "Norwegian Bokmål"
+ },
+ "nn": {
+ "code": "nn",
+ "name": "Norwegian Nynorsk"
+ },
+ "th": {
+ "code": "th",
+ "name": "Ntailandi"
+ },
+ "tr": {
+ "code": "tr",
+ "name": "Ntuluki"
+ },
+ "nus": {
+ "code": "nus",
+ "name": "Nuer"
+ },
+ "nyn": {
+ "code": "nyn",
+ "name": "Nyankole"
+ },
+ "yo": {
+ "code": "yo",
+ "name": "Nyoruba"
+ },
+ "zu": {
+ "code": "zu",
+ "name": "Nzulu"
+ },
+ "nl": {
+ "code": "nl",
+ "name": "olandi"
+ },
+ "or": {
+ "code": "or",
+ "name": "Oriya"
+ },
+ "ps": {
+ "code": "ps",
+ "name": "Pashto"
+ },
+ "pt-BR": {
+ "code": "pt-BR",
+ "name": "pt_BR"
+ },
+ "pt-PT": {
+ "code": "pt-PT",
+ "name": "pt_PT"
+ },
+ "ro-MD": {
+ "code": "ro-MD",
+ "name": "ro_MD"
+ },
+ "rm": {
+ "code": "rm",
+ "name": "Romansh"
+ },
+ "rof": {
+ "code": "rof",
+ "name": "Rombo"
+ },
+ "rn": {
+ "code": "rn",
+ "name": "Rundi"
+ },
+ "rwk": {
+ "code": "rwk",
+ "name": "Rwa"
+ },
+ "saq": {
+ "code": "saq",
+ "name": "Samburu"
+ },
+ "sg": {
+ "code": "sg",
+ "name": "Sango"
+ },
+ "sbp": {
+ "code": "sbp",
+ "name": "Sangu"
+ },
+ "gd": {
+ "code": "gd",
+ "name": "Scottish Gaelic"
+ },
+ "seh": {
+ "code": "seh",
+ "name": "Sena"
+ },
+ "sr": {
+ "code": "sr",
+ "name": "Serbian"
+ },
+ "ksb": {
+ "code": "ksb",
+ "name": "Shambala"
+ },
+ "zh": {
+ "code": "zh",
+ "name": "shinÉ›"
+ },
+ "sn": {
+ "code": "sn",
+ "name": "Shona"
+ },
+ "si": {
+ "code": "si",
+ "name": "Sinhala"
+ },
+ "sk": {
+ "code": "sk",
+ "name": "Slovak"
+ },
+ "sl": {
+ "code": "sl",
+ "name": "Slovenian"
+ },
+ "xog": {
+ "code": "xog",
+ "name": "Soga"
+ },
+ "zgh": {
+ "code": "zgh",
+ "name": "Standard Moroccan Tamazight"
+ },
+ "sw": {
+ "code": "sw",
+ "name": "Swahili"
+ },
+ "gsw": {
+ "code": "gsw",
+ "name": "Swiss German"
+ },
+ "shi": {
+ "code": "shi",
+ "name": "Tachelhit"
+ },
+ "dav": {
+ "code": "dav",
+ "name": "Taita"
+ },
+ "twq": {
+ "code": "twq",
+ "name": "Tasawaq"
+ },
+ "te": {
+ "code": "te",
+ "name": "Telugu"
+ },
+ "teo": {
+ "code": "teo",
+ "name": "Teso"
+ },
+ "bo": {
+ "code": "bo",
+ "name": "Tibetan"
+ },
+ "ti": {
+ "code": "ti",
+ "name": "Tigrinya"
+ },
+ "to": {
+ "code": "to",
+ "name": "Tongan"
+ },
+ "cs": {
+ "code": "cs",
+ "name": "Tsheki"
+ },
+ "lu": {
+ "code": "lu",
+ "name": "Tshiluba"
+ },
+ "hsb": {
+ "code": "hsb",
+ "name": "Upper Sorbian"
+ },
+ "ur": {
+ "code": "ur",
+ "name": "Urdu"
+ },
+ "ug": {
+ "code": "ug",
+ "name": "Uyghur"
+ },
+ "uz": {
+ "code": "uz",
+ "name": "Uzbek"
+ },
+ "vai": {
+ "code": "vai",
+ "name": "Vai"
+ },
+ "vun": {
+ "code": "vun",
+ "name": "Vunjo"
+ },
+ "wae": {
+ "code": "wae",
+ "name": "Walser"
+ },
+ "cy": {
+ "code": "cy",
+ "name": "Welsh"
+ },
+ "fy": {
+ "code": "fy",
+ "name": "Western Frisian"
+ },
+ "yav": {
+ "code": "yav",
+ "name": "Yangben"
+ },
+ "dje": {
+ "code": "dje",
+ "name": "Zarma"
+ },
+ "zh-Hans": {
+ "code": "zh-Hans",
+ "name": "zh_Hans"
+ },
+ "zh-Hant": {
+ "code": "zh-Hant",
+ "name": "zh_Hant"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/language/luo.json b/library/intl/resources/language/luo.json
new file mode 100644
index 000000000..e4536c824
--- /dev/null
+++ b/library/intl/resources/language/luo.json
@@ -0,0 +1,738 @@
+{
+ "af": {
+ "code": "af",
+ "name": "Afrikaans"
+ },
+ "agq": {
+ "code": "agq",
+ "name": "Aghem"
+ },
+ "sq": {
+ "code": "sq",
+ "name": "Albanian"
+ },
+ "ar-001": {
+ "code": "ar-001",
+ "name": "ar_001"
+ },
+ "hy": {
+ "code": "hy",
+ "name": "Armenian"
+ },
+ "ast": {
+ "code": "ast",
+ "name": "Asturian"
+ },
+ "asa": {
+ "code": "asa",
+ "name": "Asu"
+ },
+ "az": {
+ "code": "az",
+ "name": "Azerbaijani"
+ },
+ "ksf": {
+ "code": "ksf",
+ "name": "Bafia"
+ },
+ "bm": {
+ "code": "bm",
+ "name": "Bambara"
+ },
+ "bas": {
+ "code": "bas",
+ "name": "Basaa"
+ },
+ "eu": {
+ "code": "eu",
+ "name": "Basque"
+ },
+ "bez": {
+ "code": "bez",
+ "name": "Bena"
+ },
+ "brx": {
+ "code": "brx",
+ "name": "Bodo"
+ },
+ "bs": {
+ "code": "bs",
+ "name": "Bosnian"
+ },
+ "br": {
+ "code": "br",
+ "name": "Breton"
+ },
+ "ca": {
+ "code": "ca",
+ "name": "Catalan"
+ },
+ "tzm": {
+ "code": "tzm",
+ "name": "Central Atlas Tamazight"
+ },
+ "chr": {
+ "code": "chr",
+ "name": "Cherokee"
+ },
+ "cgg": {
+ "code": "cgg",
+ "name": "Chiga"
+ },
+ "ksh": {
+ "code": "ksh",
+ "name": "Colognian"
+ },
+ "swc": {
+ "code": "swc",
+ "name": "Congo Swahili"
+ },
+ "hr": {
+ "code": "hr",
+ "name": "Croatian"
+ },
+ "da": {
+ "code": "da",
+ "name": "Danish"
+ },
+ "de-AT": {
+ "code": "de-AT",
+ "name": "de_AT"
+ },
+ "de-CH": {
+ "code": "de-CH",
+ "name": "de_CH"
+ },
+ "luo": {
+ "code": "luo",
+ "name": "Dholuo"
+ },
+ "dz": {
+ "code": "dz",
+ "name": "Dzongkha"
+ },
+ "ebu": {
+ "code": "ebu",
+ "name": "Embu"
+ },
+ "en-AU": {
+ "code": "en-AU",
+ "name": "en_AU"
+ },
+ "en-CA": {
+ "code": "en-CA",
+ "name": "en_CA"
+ },
+ "en-GB": {
+ "code": "en-GB",
+ "name": "en_GB"
+ },
+ "en-US": {
+ "code": "en-US",
+ "name": "en_US"
+ },
+ "es-ES": {
+ "code": "es-ES",
+ "name": "es_ES"
+ },
+ "es-MX": {
+ "code": "es-MX",
+ "name": "es_MX"
+ },
+ "eo": {
+ "code": "eo",
+ "name": "Esperanto"
+ },
+ "et": {
+ "code": "et",
+ "name": "Estonian"
+ },
+ "ee": {
+ "code": "ee",
+ "name": "Ewe"
+ },
+ "ewo": {
+ "code": "ewo",
+ "name": "Ewondo"
+ },
+ "fo": {
+ "code": "fo",
+ "name": "Faroese"
+ },
+ "fil": {
+ "code": "fil",
+ "name": "Filipino"
+ },
+ "fi": {
+ "code": "fi",
+ "name": "Finnish"
+ },
+ "fr-CA": {
+ "code": "fr-CA",
+ "name": "fr_CA"
+ },
+ "fr-CH": {
+ "code": "fr-CH",
+ "name": "fr_CH"
+ },
+ "fur": {
+ "code": "fur",
+ "name": "Friulian"
+ },
+ "ff": {
+ "code": "ff",
+ "name": "Fulah"
+ },
+ "gl": {
+ "code": "gl",
+ "name": "Galician"
+ },
+ "lg": {
+ "code": "lg",
+ "name": "Ganda"
+ },
+ "ka": {
+ "code": "ka",
+ "name": "Georgian"
+ },
+ "gu": {
+ "code": "gu",
+ "name": "Gujarati"
+ },
+ "guz": {
+ "code": "guz",
+ "name": "Gusii"
+ },
+ "he": {
+ "code": "he",
+ "name": "Hebrew"
+ },
+ "is": {
+ "code": "is",
+ "name": "Icelandic"
+ },
+ "ga": {
+ "code": "ga",
+ "name": "Irish"
+ },
+ "dyo": {
+ "code": "dyo",
+ "name": "Jola-Fonyi"
+ },
+ "kea": {
+ "code": "kea",
+ "name": "Kabuverdianu"
+ },
+ "kab": {
+ "code": "kab",
+ "name": "Kabyle"
+ },
+ "kl": {
+ "code": "kl",
+ "name": "Kalaallisut"
+ },
+ "kln": {
+ "code": "kln",
+ "name": "Kalenjin"
+ },
+ "kam": {
+ "code": "kam",
+ "name": "Kamba"
+ },
+ "kn": {
+ "code": "kn",
+ "name": "Kannada"
+ },
+ "ks": {
+ "code": "ks",
+ "name": "Kashmiri"
+ },
+ "kk": {
+ "code": "kk",
+ "name": "Kazakh"
+ },
+ "fa": {
+ "code": "fa",
+ "name": "Kiajemi"
+ },
+ "ak": {
+ "code": "ak",
+ "name": "Kiakan"
+ },
+ "am": {
+ "code": "am",
+ "name": "Kiamhari"
+ },
+ "ar": {
+ "code": "ar",
+ "name": "Kiarabu"
+ },
+ "bn": {
+ "code": "bn",
+ "name": "Kibangla"
+ },
+ "be": {
+ "code": "be",
+ "name": "Kibelarusi"
+ },
+ "bg": {
+ "code": "bg",
+ "name": "Kibulgaria"
+ },
+ "my": {
+ "code": "my",
+ "name": "Kiburma"
+ },
+ "cs": {
+ "code": "cs",
+ "name": "Kichecki"
+ },
+ "zh": {
+ "code": "zh",
+ "name": "Kichina"
+ },
+ "fr": {
+ "code": "fr",
+ "name": "Kifaransa"
+ },
+ "el": {
+ "code": "el",
+ "name": "Kigiriki"
+ },
+ "ha": {
+ "code": "ha",
+ "name": "Kihausa"
+ },
+ "hi": {
+ "code": "hi",
+ "name": "Kihindi"
+ },
+ "es": {
+ "code": "es",
+ "name": "Kihispania"
+ },
+ "nl": {
+ "code": "nl",
+ "name": "Kiholanzi"
+ },
+ "hu": {
+ "code": "hu",
+ "name": "Kihungari"
+ },
+ "id": {
+ "code": "id",
+ "name": "Kiindonesia"
+ },
+ "it": {
+ "code": "it",
+ "name": "Kiitaliano"
+ },
+ "ja": {
+ "code": "ja",
+ "name": "Kijapani"
+ },
+ "de": {
+ "code": "de",
+ "name": "Kijerumani"
+ },
+ "km": {
+ "code": "km",
+ "name": "Kikambodia"
+ },
+ "ko": {
+ "code": "ko",
+ "name": "Kikorea"
+ },
+ "ki": {
+ "code": "ki",
+ "name": "Kikuyu"
+ },
+ "ms": {
+ "code": "ms",
+ "name": "Kimalesia"
+ },
+ "ne": {
+ "code": "ne",
+ "name": "Kinepali"
+ },
+ "en": {
+ "code": "en",
+ "name": "Kingereza"
+ },
+ "pl": {
+ "code": "pl",
+ "name": "Kipolandi"
+ },
+ "pa": {
+ "code": "pa",
+ "name": "Kipunjabi"
+ },
+ "pt": {
+ "code": "pt",
+ "name": "Kireno"
+ },
+ "ro": {
+ "code": "ro",
+ "name": "Kiromania"
+ },
+ "ru": {
+ "code": "ru",
+ "name": "Kirusi"
+ },
+ "so": {
+ "code": "so",
+ "name": "Kisomali"
+ },
+ "sv": {
+ "code": "sv",
+ "name": "Kiswidi"
+ },
+ "th": {
+ "code": "th",
+ "name": "Kitailandi"
+ },
+ "ta": {
+ "code": "ta",
+ "name": "Kitamil"
+ },
+ "tr": {
+ "code": "tr",
+ "name": "Kituruki"
+ },
+ "uk": {
+ "code": "uk",
+ "name": "Kiukrania"
+ },
+ "ur": {
+ "code": "ur",
+ "name": "Kiurdu"
+ },
+ "vi": {
+ "code": "vi",
+ "name": "Kivietinamu"
+ },
+ "yo": {
+ "code": "yo",
+ "name": "Kiyoruba"
+ },
+ "zu": {
+ "code": "zu",
+ "name": "Kizulu"
+ },
+ "khq": {
+ "code": "khq",
+ "name": "Koyra Chiini"
+ },
+ "ses": {
+ "code": "ses",
+ "name": "Koyraboro Senni"
+ },
+ "nmg": {
+ "code": "nmg",
+ "name": "Kwasio"
+ },
+ "ky": {
+ "code": "ky",
+ "name": "Kyrgyz"
+ },
+ "lag": {
+ "code": "lag",
+ "name": "Langi"
+ },
+ "lo": {
+ "code": "lo",
+ "name": "Lao"
+ },
+ "lv": {
+ "code": "lv",
+ "name": "Latvian"
+ },
+ "ln": {
+ "code": "ln",
+ "name": "Lingala"
+ },
+ "lt": {
+ "code": "lt",
+ "name": "Lithuanian"
+ },
+ "dsb": {
+ "code": "dsb",
+ "name": "Lower Sorbian"
+ },
+ "lu": {
+ "code": "lu",
+ "name": "Luba-Katanga"
+ },
+ "lb": {
+ "code": "lb",
+ "name": "Luxembourgish"
+ },
+ "luy": {
+ "code": "luy",
+ "name": "Luyia"
+ },
+ "mk": {
+ "code": "mk",
+ "name": "Macedonian"
+ },
+ "jmc": {
+ "code": "jmc",
+ "name": "Machame"
+ },
+ "mgh": {
+ "code": "mgh",
+ "name": "Makhuwa-Meetto"
+ },
+ "kde": {
+ "code": "kde",
+ "name": "Makonde"
+ },
+ "mg": {
+ "code": "mg",
+ "name": "Malagasy"
+ },
+ "ml": {
+ "code": "ml",
+ "name": "Malayalam"
+ },
+ "mt": {
+ "code": "mt",
+ "name": "Maltese"
+ },
+ "mr": {
+ "code": "mr",
+ "name": "Marathi"
+ },
+ "mas": {
+ "code": "mas",
+ "name": "Masai"
+ },
+ "mer": {
+ "code": "mer",
+ "name": "Meru"
+ },
+ "mn": {
+ "code": "mn",
+ "name": "Mongolian"
+ },
+ "mfe": {
+ "code": "mfe",
+ "name": "Morisyen"
+ },
+ "mua": {
+ "code": "mua",
+ "name": "Mundang"
+ },
+ "naq": {
+ "code": "naq",
+ "name": "Nama"
+ },
+ "jgo": {
+ "code": "jgo",
+ "name": "Ngomba"
+ },
+ "nl-BE": {
+ "code": "nl-BE",
+ "name": "nl_BE"
+ },
+ "nd": {
+ "code": "nd",
+ "name": "North Ndebele"
+ },
+ "se": {
+ "code": "se",
+ "name": "Northern Sami"
+ },
+ "nb": {
+ "code": "nb",
+ "name": "Norwegian Bokmål"
+ },
+ "nn": {
+ "code": "nn",
+ "name": "Norwegian Nynorsk"
+ },
+ "nus": {
+ "code": "nus",
+ "name": "Nuer"
+ },
+ "nyn": {
+ "code": "nyn",
+ "name": "Nyankole"
+ },
+ "or": {
+ "code": "or",
+ "name": "Oriya"
+ },
+ "ps": {
+ "code": "ps",
+ "name": "Pashto"
+ },
+ "pt-BR": {
+ "code": "pt-BR",
+ "name": "pt_BR"
+ },
+ "pt-PT": {
+ "code": "pt-PT",
+ "name": "pt_PT"
+ },
+ "ro-MD": {
+ "code": "ro-MD",
+ "name": "ro_MD"
+ },
+ "rm": {
+ "code": "rm",
+ "name": "Romansh"
+ },
+ "rof": {
+ "code": "rof",
+ "name": "Rombo"
+ },
+ "rn": {
+ "code": "rn",
+ "name": "Rundi"
+ },
+ "rwk": {
+ "code": "rwk",
+ "name": "Rwa"
+ },
+ "saq": {
+ "code": "saq",
+ "name": "Samburu"
+ },
+ "sg": {
+ "code": "sg",
+ "name": "Sango"
+ },
+ "sbp": {
+ "code": "sbp",
+ "name": "Sangu"
+ },
+ "gd": {
+ "code": "gd",
+ "name": "Scottish Gaelic"
+ },
+ "seh": {
+ "code": "seh",
+ "name": "Sena"
+ },
+ "sr": {
+ "code": "sr",
+ "name": "Serbian"
+ },
+ "ksb": {
+ "code": "ksb",
+ "name": "Shambala"
+ },
+ "sn": {
+ "code": "sn",
+ "name": "Shona"
+ },
+ "si": {
+ "code": "si",
+ "name": "Sinhala"
+ },
+ "sk": {
+ "code": "sk",
+ "name": "Slovak"
+ },
+ "sl": {
+ "code": "sl",
+ "name": "Slovenian"
+ },
+ "xog": {
+ "code": "xog",
+ "name": "Soga"
+ },
+ "zgh": {
+ "code": "zgh",
+ "name": "Standard Moroccan Tamazight"
+ },
+ "sw": {
+ "code": "sw",
+ "name": "Swahili"
+ },
+ "gsw": {
+ "code": "gsw",
+ "name": "Swiss German"
+ },
+ "shi": {
+ "code": "shi",
+ "name": "Tachelhit"
+ },
+ "dav": {
+ "code": "dav",
+ "name": "Taita"
+ },
+ "twq": {
+ "code": "twq",
+ "name": "Tasawaq"
+ },
+ "te": {
+ "code": "te",
+ "name": "Telugu"
+ },
+ "teo": {
+ "code": "teo",
+ "name": "Teso"
+ },
+ "bo": {
+ "code": "bo",
+ "name": "Tibetan"
+ },
+ "ti": {
+ "code": "ti",
+ "name": "Tigrinya"
+ },
+ "to": {
+ "code": "to",
+ "name": "Tongan"
+ },
+ "hsb": {
+ "code": "hsb",
+ "name": "Upper Sorbian"
+ },
+ "ug": {
+ "code": "ug",
+ "name": "Uyghur"
+ },
+ "uz": {
+ "code": "uz",
+ "name": "Uzbek"
+ },
+ "vai": {
+ "code": "vai",
+ "name": "Vai"
+ },
+ "vun": {
+ "code": "vun",
+ "name": "Vunjo"
+ },
+ "wae": {
+ "code": "wae",
+ "name": "Walser"
+ },
+ "cy": {
+ "code": "cy",
+ "name": "Welsh"
+ },
+ "fy": {
+ "code": "fy",
+ "name": "Western Frisian"
+ },
+ "yav": {
+ "code": "yav",
+ "name": "Yangben"
+ },
+ "dje": {
+ "code": "dje",
+ "name": "Zarma"
+ },
+ "zh-Hans": {
+ "code": "zh-Hans",
+ "name": "zh_Hans"
+ },
+ "zh-Hant": {
+ "code": "zh-Hant",
+ "name": "zh_Hant"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/language/luy.json b/library/intl/resources/language/luy.json
new file mode 100644
index 000000000..576f6dedc
--- /dev/null
+++ b/library/intl/resources/language/luy.json
@@ -0,0 +1,738 @@
+{
+ "af": {
+ "code": "af",
+ "name": "Afrikaans"
+ },
+ "agq": {
+ "code": "agq",
+ "name": "Aghem"
+ },
+ "sq": {
+ "code": "sq",
+ "name": "Albanian"
+ },
+ "ar-001": {
+ "code": "ar-001",
+ "name": "ar_001"
+ },
+ "hy": {
+ "code": "hy",
+ "name": "Armenian"
+ },
+ "ast": {
+ "code": "ast",
+ "name": "Asturian"
+ },
+ "asa": {
+ "code": "asa",
+ "name": "Asu"
+ },
+ "az": {
+ "code": "az",
+ "name": "Azerbaijani"
+ },
+ "ksf": {
+ "code": "ksf",
+ "name": "Bafia"
+ },
+ "bm": {
+ "code": "bm",
+ "name": "Bambara"
+ },
+ "bas": {
+ "code": "bas",
+ "name": "Basaa"
+ },
+ "eu": {
+ "code": "eu",
+ "name": "Basque"
+ },
+ "bez": {
+ "code": "bez",
+ "name": "Bena"
+ },
+ "brx": {
+ "code": "brx",
+ "name": "Bodo"
+ },
+ "bs": {
+ "code": "bs",
+ "name": "Bosnian"
+ },
+ "br": {
+ "code": "br",
+ "name": "Breton"
+ },
+ "ca": {
+ "code": "ca",
+ "name": "Catalan"
+ },
+ "tzm": {
+ "code": "tzm",
+ "name": "Central Atlas Tamazight"
+ },
+ "chr": {
+ "code": "chr",
+ "name": "Cherokee"
+ },
+ "cgg": {
+ "code": "cgg",
+ "name": "Chiga"
+ },
+ "ksh": {
+ "code": "ksh",
+ "name": "Colognian"
+ },
+ "swc": {
+ "code": "swc",
+ "name": "Congo Swahili"
+ },
+ "hr": {
+ "code": "hr",
+ "name": "Croatian"
+ },
+ "da": {
+ "code": "da",
+ "name": "Danish"
+ },
+ "de-AT": {
+ "code": "de-AT",
+ "name": "de_AT"
+ },
+ "de-CH": {
+ "code": "de-CH",
+ "name": "de_CH"
+ },
+ "dz": {
+ "code": "dz",
+ "name": "Dzongkha"
+ },
+ "ebu": {
+ "code": "ebu",
+ "name": "Embu"
+ },
+ "en-AU": {
+ "code": "en-AU",
+ "name": "en_AU"
+ },
+ "en-CA": {
+ "code": "en-CA",
+ "name": "en_CA"
+ },
+ "en-GB": {
+ "code": "en-GB",
+ "name": "en_GB"
+ },
+ "en-US": {
+ "code": "en-US",
+ "name": "en_US"
+ },
+ "es-ES": {
+ "code": "es-ES",
+ "name": "es_ES"
+ },
+ "es-MX": {
+ "code": "es-MX",
+ "name": "es_MX"
+ },
+ "eo": {
+ "code": "eo",
+ "name": "Esperanto"
+ },
+ "et": {
+ "code": "et",
+ "name": "Estonian"
+ },
+ "ee": {
+ "code": "ee",
+ "name": "Ewe"
+ },
+ "ewo": {
+ "code": "ewo",
+ "name": "Ewondo"
+ },
+ "fo": {
+ "code": "fo",
+ "name": "Faroese"
+ },
+ "fil": {
+ "code": "fil",
+ "name": "Filipino"
+ },
+ "fi": {
+ "code": "fi",
+ "name": "Finnish"
+ },
+ "fr-CA": {
+ "code": "fr-CA",
+ "name": "fr_CA"
+ },
+ "fr-CH": {
+ "code": "fr-CH",
+ "name": "fr_CH"
+ },
+ "fur": {
+ "code": "fur",
+ "name": "Friulian"
+ },
+ "ff": {
+ "code": "ff",
+ "name": "Fulah"
+ },
+ "gl": {
+ "code": "gl",
+ "name": "Galician"
+ },
+ "lg": {
+ "code": "lg",
+ "name": "Ganda"
+ },
+ "ka": {
+ "code": "ka",
+ "name": "Georgian"
+ },
+ "gu": {
+ "code": "gu",
+ "name": "Gujarati"
+ },
+ "guz": {
+ "code": "guz",
+ "name": "Gusii"
+ },
+ "he": {
+ "code": "he",
+ "name": "Hebrew"
+ },
+ "is": {
+ "code": "is",
+ "name": "Icelandic"
+ },
+ "ga": {
+ "code": "ga",
+ "name": "Irish"
+ },
+ "dyo": {
+ "code": "dyo",
+ "name": "Jola-Fonyi"
+ },
+ "kea": {
+ "code": "kea",
+ "name": "Kabuverdianu"
+ },
+ "kab": {
+ "code": "kab",
+ "name": "Kabyle"
+ },
+ "kl": {
+ "code": "kl",
+ "name": "Kalaallisut"
+ },
+ "kln": {
+ "code": "kln",
+ "name": "Kalenjin"
+ },
+ "kam": {
+ "code": "kam",
+ "name": "Kamba"
+ },
+ "kn": {
+ "code": "kn",
+ "name": "Kannada"
+ },
+ "ks": {
+ "code": "ks",
+ "name": "Kashmiri"
+ },
+ "kk": {
+ "code": "kk",
+ "name": "Kazakh"
+ },
+ "fa": {
+ "code": "fa",
+ "name": "Kiajemi"
+ },
+ "ak": {
+ "code": "ak",
+ "name": "Kiakan"
+ },
+ "am": {
+ "code": "am",
+ "name": "Kiamhari"
+ },
+ "ar": {
+ "code": "ar",
+ "name": "Kiarabu"
+ },
+ "bn": {
+ "code": "bn",
+ "name": "Kibangla"
+ },
+ "be": {
+ "code": "be",
+ "name": "Kibelarusi"
+ },
+ "bg": {
+ "code": "bg",
+ "name": "Kibulgaria"
+ },
+ "my": {
+ "code": "my",
+ "name": "Kiburma"
+ },
+ "cs": {
+ "code": "cs",
+ "name": "Kichecki"
+ },
+ "zh": {
+ "code": "zh",
+ "name": "Kichina"
+ },
+ "fr": {
+ "code": "fr",
+ "name": "Kifaransa"
+ },
+ "el": {
+ "code": "el",
+ "name": "Kigiriki"
+ },
+ "ha": {
+ "code": "ha",
+ "name": "Kihausa"
+ },
+ "es": {
+ "code": "es",
+ "name": "Kihispania"
+ },
+ "nl": {
+ "code": "nl",
+ "name": "Kiholanzi"
+ },
+ "hu": {
+ "code": "hu",
+ "name": "Kihungari"
+ },
+ "id": {
+ "code": "id",
+ "name": "Kiindonesia"
+ },
+ "it": {
+ "code": "it",
+ "name": "Kiitaliano"
+ },
+ "ja": {
+ "code": "ja",
+ "name": "Kijapani"
+ },
+ "de": {
+ "code": "de",
+ "name": "Kijerumani"
+ },
+ "km": {
+ "code": "km",
+ "name": "Kikambodia"
+ },
+ "ko": {
+ "code": "ko",
+ "name": "Kikorea"
+ },
+ "ki": {
+ "code": "ki",
+ "name": "Kikuyu"
+ },
+ "ms": {
+ "code": "ms",
+ "name": "Kimalesia"
+ },
+ "ne": {
+ "code": "ne",
+ "name": "Kinepali"
+ },
+ "pl": {
+ "code": "pl",
+ "name": "Kipolandi"
+ },
+ "pa": {
+ "code": "pa",
+ "name": "Kipunjabi"
+ },
+ "pt": {
+ "code": "pt",
+ "name": "Kireno"
+ },
+ "ro": {
+ "code": "ro",
+ "name": "Kiromania"
+ },
+ "ru": {
+ "code": "ru",
+ "name": "Kirusi"
+ },
+ "so": {
+ "code": "so",
+ "name": "Kisomali"
+ },
+ "sv": {
+ "code": "sv",
+ "name": "Kiswidi"
+ },
+ "th": {
+ "code": "th",
+ "name": "Kitailandi"
+ },
+ "ta": {
+ "code": "ta",
+ "name": "Kitamil"
+ },
+ "tr": {
+ "code": "tr",
+ "name": "Kituruki"
+ },
+ "uk": {
+ "code": "uk",
+ "name": "Kiukrania"
+ },
+ "ur": {
+ "code": "ur",
+ "name": "Kiurdu"
+ },
+ "vi": {
+ "code": "vi",
+ "name": "Kivietinamu"
+ },
+ "yo": {
+ "code": "yo",
+ "name": "Kiyoruba"
+ },
+ "zu": {
+ "code": "zu",
+ "name": "Kizulu"
+ },
+ "khq": {
+ "code": "khq",
+ "name": "Koyra Chiini"
+ },
+ "ses": {
+ "code": "ses",
+ "name": "Koyraboro Senni"
+ },
+ "nmg": {
+ "code": "nmg",
+ "name": "Kwasio"
+ },
+ "ky": {
+ "code": "ky",
+ "name": "Kyrgyz"
+ },
+ "lag": {
+ "code": "lag",
+ "name": "Langi"
+ },
+ "lo": {
+ "code": "lo",
+ "name": "Lao"
+ },
+ "lv": {
+ "code": "lv",
+ "name": "Latvian"
+ },
+ "ln": {
+ "code": "ln",
+ "name": "Lingala"
+ },
+ "lt": {
+ "code": "lt",
+ "name": "Lithuanian"
+ },
+ "dsb": {
+ "code": "dsb",
+ "name": "Lower Sorbian"
+ },
+ "lu": {
+ "code": "lu",
+ "name": "Luba-Katanga"
+ },
+ "hi": {
+ "code": "hi",
+ "name": "Luhindi"
+ },
+ "luy": {
+ "code": "luy",
+ "name": "Luluhia"
+ },
+ "luo": {
+ "code": "luo",
+ "name": "Luo"
+ },
+ "en": {
+ "code": "en",
+ "name": "Lusungu"
+ },
+ "lb": {
+ "code": "lb",
+ "name": "Luxembourgish"
+ },
+ "mk": {
+ "code": "mk",
+ "name": "Macedonian"
+ },
+ "jmc": {
+ "code": "jmc",
+ "name": "Machame"
+ },
+ "mgh": {
+ "code": "mgh",
+ "name": "Makhuwa-Meetto"
+ },
+ "kde": {
+ "code": "kde",
+ "name": "Makonde"
+ },
+ "mg": {
+ "code": "mg",
+ "name": "Malagasy"
+ },
+ "ml": {
+ "code": "ml",
+ "name": "Malayalam"
+ },
+ "mt": {
+ "code": "mt",
+ "name": "Maltese"
+ },
+ "mr": {
+ "code": "mr",
+ "name": "Marathi"
+ },
+ "mas": {
+ "code": "mas",
+ "name": "Masai"
+ },
+ "mer": {
+ "code": "mer",
+ "name": "Meru"
+ },
+ "mn": {
+ "code": "mn",
+ "name": "Mongolian"
+ },
+ "mfe": {
+ "code": "mfe",
+ "name": "Morisyen"
+ },
+ "mua": {
+ "code": "mua",
+ "name": "Mundang"
+ },
+ "naq": {
+ "code": "naq",
+ "name": "Nama"
+ },
+ "jgo": {
+ "code": "jgo",
+ "name": "Ngomba"
+ },
+ "nl-BE": {
+ "code": "nl-BE",
+ "name": "nl_BE"
+ },
+ "nd": {
+ "code": "nd",
+ "name": "North Ndebele"
+ },
+ "se": {
+ "code": "se",
+ "name": "Northern Sami"
+ },
+ "nb": {
+ "code": "nb",
+ "name": "Norwegian Bokmål"
+ },
+ "nn": {
+ "code": "nn",
+ "name": "Norwegian Nynorsk"
+ },
+ "nus": {
+ "code": "nus",
+ "name": "Nuer"
+ },
+ "nyn": {
+ "code": "nyn",
+ "name": "Nyankole"
+ },
+ "or": {
+ "code": "or",
+ "name": "Oriya"
+ },
+ "ps": {
+ "code": "ps",
+ "name": "Pashto"
+ },
+ "pt-BR": {
+ "code": "pt-BR",
+ "name": "pt_BR"
+ },
+ "pt-PT": {
+ "code": "pt-PT",
+ "name": "pt_PT"
+ },
+ "ro-MD": {
+ "code": "ro-MD",
+ "name": "ro_MD"
+ },
+ "rm": {
+ "code": "rm",
+ "name": "Romansh"
+ },
+ "rof": {
+ "code": "rof",
+ "name": "Rombo"
+ },
+ "rn": {
+ "code": "rn",
+ "name": "Rundi"
+ },
+ "rwk": {
+ "code": "rwk",
+ "name": "Rwa"
+ },
+ "saq": {
+ "code": "saq",
+ "name": "Samburu"
+ },
+ "sg": {
+ "code": "sg",
+ "name": "Sango"
+ },
+ "sbp": {
+ "code": "sbp",
+ "name": "Sangu"
+ },
+ "gd": {
+ "code": "gd",
+ "name": "Scottish Gaelic"
+ },
+ "seh": {
+ "code": "seh",
+ "name": "Sena"
+ },
+ "sr": {
+ "code": "sr",
+ "name": "Serbian"
+ },
+ "ksb": {
+ "code": "ksb",
+ "name": "Shambala"
+ },
+ "sn": {
+ "code": "sn",
+ "name": "Shona"
+ },
+ "si": {
+ "code": "si",
+ "name": "Sinhala"
+ },
+ "sk": {
+ "code": "sk",
+ "name": "Slovak"
+ },
+ "sl": {
+ "code": "sl",
+ "name": "Slovenian"
+ },
+ "xog": {
+ "code": "xog",
+ "name": "Soga"
+ },
+ "zgh": {
+ "code": "zgh",
+ "name": "Standard Moroccan Tamazight"
+ },
+ "sw": {
+ "code": "sw",
+ "name": "Swahili"
+ },
+ "gsw": {
+ "code": "gsw",
+ "name": "Swiss German"
+ },
+ "shi": {
+ "code": "shi",
+ "name": "Tachelhit"
+ },
+ "dav": {
+ "code": "dav",
+ "name": "Taita"
+ },
+ "twq": {
+ "code": "twq",
+ "name": "Tasawaq"
+ },
+ "te": {
+ "code": "te",
+ "name": "Telugu"
+ },
+ "teo": {
+ "code": "teo",
+ "name": "Teso"
+ },
+ "bo": {
+ "code": "bo",
+ "name": "Tibetan"
+ },
+ "ti": {
+ "code": "ti",
+ "name": "Tigrinya"
+ },
+ "to": {
+ "code": "to",
+ "name": "Tongan"
+ },
+ "hsb": {
+ "code": "hsb",
+ "name": "Upper Sorbian"
+ },
+ "ug": {
+ "code": "ug",
+ "name": "Uyghur"
+ },
+ "uz": {
+ "code": "uz",
+ "name": "Uzbek"
+ },
+ "vai": {
+ "code": "vai",
+ "name": "Vai"
+ },
+ "vun": {
+ "code": "vun",
+ "name": "Vunjo"
+ },
+ "wae": {
+ "code": "wae",
+ "name": "Walser"
+ },
+ "cy": {
+ "code": "cy",
+ "name": "Welsh"
+ },
+ "fy": {
+ "code": "fy",
+ "name": "Western Frisian"
+ },
+ "yav": {
+ "code": "yav",
+ "name": "Yangben"
+ },
+ "dje": {
+ "code": "dje",
+ "name": "Zarma"
+ },
+ "zh-Hans": {
+ "code": "zh-Hans",
+ "name": "zh_Hans"
+ },
+ "zh-Hant": {
+ "code": "zh-Hant",
+ "name": "zh_Hant"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/language/lv.json b/library/intl/resources/language/lv.json
new file mode 100644
index 000000000..4f1b40829
--- /dev/null
+++ b/library/intl/resources/language/lv.json
@@ -0,0 +1,738 @@
+{
+ "af": {
+ "code": "af",
+ "name": "afrikandu"
+ },
+ "agq": {
+ "code": "agq",
+ "name": "aghemu"
+ },
+ "ak": {
+ "code": "ak",
+ "name": "akanu"
+ },
+ "sq": {
+ "code": "sq",
+ "name": "albÄņu"
+ },
+ "am": {
+ "code": "am",
+ "name": "amharu"
+ },
+ "en": {
+ "code": "en",
+ "name": "angļu"
+ },
+ "ar": {
+ "code": "ar",
+ "name": "arÄbu"
+ },
+ "hy": {
+ "code": "hy",
+ "name": "armēņu"
+ },
+ "ast": {
+ "code": "ast",
+ "name": "astūriešu"
+ },
+ "asa": {
+ "code": "asa",
+ "name": "asu"
+ },
+ "en-US": {
+ "code": "en-US",
+ "name": "ASV angļu"
+ },
+ "hsb": {
+ "code": "hsb",
+ "name": "augšsorbu"
+ },
+ "en-AU": {
+ "code": "en-AU",
+ "name": "AustrÄlijas angļu"
+ },
+ "de-AT": {
+ "code": "de-AT",
+ "name": "Austrijas vÄcu"
+ },
+ "az": {
+ "code": "az",
+ "name": "azerbaidžÄņu"
+ },
+ "ksf": {
+ "code": "ksf",
+ "name": "bafiju"
+ },
+ "be": {
+ "code": "be",
+ "name": "baltkrievu"
+ },
+ "bm": {
+ "code": "bm",
+ "name": "bambaru"
+ },
+ "eu": {
+ "code": "eu",
+ "name": "basku"
+ },
+ "bas": {
+ "code": "bas",
+ "name": "basu"
+ },
+ "bez": {
+ "code": "bez",
+ "name": "bena"
+ },
+ "bn": {
+ "code": "bn",
+ "name": "bengÄļu"
+ },
+ "my": {
+ "code": "my",
+ "name": "birmiešu"
+ },
+ "brx": {
+ "code": "brx",
+ "name": "bodo"
+ },
+ "bs": {
+ "code": "bs",
+ "name": "bosniešu"
+ },
+ "pt-BR": {
+ "code": "pt-BR",
+ "name": "BrazÄ«lijas portugÄļu"
+ },
+ "br": {
+ "code": "br",
+ "name": "bretoņu"
+ },
+ "bg": {
+ "code": "bg",
+ "name": "bulgÄru"
+ },
+ "tzm": {
+ "code": "tzm",
+ "name": "CentrÄlmarokas tamazÄ«ts"
+ },
+ "cs": {
+ "code": "cs",
+ "name": "Äehu"
+ },
+ "chr": {
+ "code": "chr",
+ "name": "Äiroku"
+ },
+ "da": {
+ "code": "da",
+ "name": "dÄņu"
+ },
+ "dyo": {
+ "code": "dyo",
+ "name": "diola-fonjī"
+ },
+ "dz": {
+ "code": "dz",
+ "name": "dzongke"
+ },
+ "pt-PT": {
+ "code": "pt-PT",
+ "name": "Eiropas portugÄļu"
+ },
+ "es-ES": {
+ "code": "es-ES",
+ "name": "Eiropas spÄņu"
+ },
+ "eo": {
+ "code": "eo",
+ "name": "esperanto"
+ },
+ "ewo": {
+ "code": "ewo",
+ "name": "evondu"
+ },
+ "ee": {
+ "code": "ee",
+ "name": "evu"
+ },
+ "fo": {
+ "code": "fo",
+ "name": "fēru"
+ },
+ "fil": {
+ "code": "fil",
+ "name": "filipīniešu"
+ },
+ "nl-BE": {
+ "code": "nl-BE",
+ "name": "flÄmu"
+ },
+ "fr": {
+ "code": "fr",
+ "name": "franÄu"
+ },
+ "fur": {
+ "code": "fur",
+ "name": "friūlu"
+ },
+ "ff": {
+ "code": "ff",
+ "name": "fulu"
+ },
+ "gl": {
+ "code": "gl",
+ "name": "galisiešu"
+ },
+ "lg": {
+ "code": "lg",
+ "name": "gandu"
+ },
+ "gd": {
+ "code": "gd",
+ "name": "gēlu"
+ },
+ "kl": {
+ "code": "kl",
+ "name": "grenlandiešu"
+ },
+ "el": {
+ "code": "el",
+ "name": "grieÄ·u"
+ },
+ "ka": {
+ "code": "ka",
+ "name": "gruzīnu"
+ },
+ "gu": {
+ "code": "gu",
+ "name": "gudžaratu"
+ },
+ "guz": {
+ "code": "guz",
+ "name": "gusii"
+ },
+ "ha": {
+ "code": "ha",
+ "name": "hausu"
+ },
+ "hi": {
+ "code": "hi",
+ "name": "hindi"
+ },
+ "nl": {
+ "code": "nl",
+ "name": "holandiešu"
+ },
+ "hr": {
+ "code": "hr",
+ "name": "horvÄtu"
+ },
+ "et": {
+ "code": "et",
+ "name": "igauņu"
+ },
+ "id": {
+ "code": "id",
+ "name": "indonēziešu"
+ },
+ "ga": {
+ "code": "ga",
+ "name": "Ä«ru"
+ },
+ "is": {
+ "code": "is",
+ "name": "īslandiešu"
+ },
+ "it": {
+ "code": "it",
+ "name": "itÄļu"
+ },
+ "he": {
+ "code": "he",
+ "name": "ivrits"
+ },
+ "yav": {
+ "code": "yav",
+ "name": "janbaņu"
+ },
+ "ja": {
+ "code": "ja",
+ "name": "japÄņu"
+ },
+ "nn": {
+ "code": "nn",
+ "name": "jaunnorvēģu"
+ },
+ "yo": {
+ "code": "yo",
+ "name": "jorubu"
+ },
+ "kab": {
+ "code": "kab",
+ "name": "kabilu"
+ },
+ "kea": {
+ "code": "kea",
+ "name": "kaboverdiešu"
+ },
+ "kln": {
+ "code": "kln",
+ "name": "kalendžīnu"
+ },
+ "kam": {
+ "code": "kam",
+ "name": "kambu"
+ },
+ "en-CA": {
+ "code": "en-CA",
+ "name": "KanÄdas angļu"
+ },
+ "fr-CA": {
+ "code": "fr-CA",
+ "name": "KanÄdas franÄu"
+ },
+ "kn": {
+ "code": "kn",
+ "name": "kannadu"
+ },
+ "ks": {
+ "code": "ks",
+ "name": "kašmiriešu"
+ },
+ "ca": {
+ "code": "ca",
+ "name": "katalÄņu"
+ },
+ "kk": {
+ "code": "kk",
+ "name": "kazahu"
+ },
+ "km": {
+ "code": "km",
+ "name": "khmeru"
+ },
+ "cgg": {
+ "code": "cgg",
+ "name": "kiga"
+ },
+ "ki": {
+ "code": "ki",
+ "name": "kikuju"
+ },
+ "ky": {
+ "code": "ky",
+ "name": "kirgīzu"
+ },
+ "ebu": {
+ "code": "ebu",
+ "name": "kjembu"
+ },
+ "ses": {
+ "code": "ses",
+ "name": "koiraboro senni"
+ },
+ "khq": {
+ "code": "khq",
+ "name": "koiraÄiinÄ«"
+ },
+ "swc": {
+ "code": "swc",
+ "name": "Kongo svahili"
+ },
+ "ko": {
+ "code": "ko",
+ "name": "korejiešu"
+ },
+ "ru": {
+ "code": "ru",
+ "name": "krievu"
+ },
+ "nmg": {
+ "code": "nmg",
+ "name": "kvasio"
+ },
+ "ksh": {
+ "code": "ksh",
+ "name": "Ķelnes vÄcu"
+ },
+ "zh": {
+ "code": "zh",
+ "name": "ķīniešu"
+ },
+ "zh-Hant": {
+ "code": "zh-Hant",
+ "name": "Ä·Ä«nieÅ¡u tradicionÄlÄ"
+ },
+ "zh-Hans": {
+ "code": "zh-Hans",
+ "name": "Ä·Ä«nieÅ¡u vienkÄrÅ¡otÄ"
+ },
+ "lag": {
+ "code": "lag",
+ "name": "langi"
+ },
+ "lo": {
+ "code": "lo",
+ "name": "laosiešu"
+ },
+ "lv": {
+ "code": "lv",
+ "name": "latviešu"
+ },
+ "dsb": {
+ "code": "dsb",
+ "name": "lejassorbu"
+ },
+ "en-GB": {
+ "code": "en-GB",
+ "name": "LielbritÄnijas angļu"
+ },
+ "lt": {
+ "code": "lt",
+ "name": "lietuviešu"
+ },
+ "ln": {
+ "code": "ln",
+ "name": "lingala"
+ },
+ "lu": {
+ "code": "lu",
+ "name": "lubakatanga"
+ },
+ "luy": {
+ "code": "luy",
+ "name": "luhju"
+ },
+ "lb": {
+ "code": "lb",
+ "name": "luksemburgiešu"
+ },
+ "luo": {
+ "code": "luo",
+ "name": "Luo"
+ },
+ "jmc": {
+ "code": "jmc",
+ "name": "maÄamu"
+ },
+ "kde": {
+ "code": "kde",
+ "name": "makonde"
+ },
+ "mgh": {
+ "code": "mgh",
+ "name": "makua-meetto"
+ },
+ "mk": {
+ "code": "mk",
+ "name": "maķedoniešu"
+ },
+ "mg": {
+ "code": "mg",
+ "name": "malagasu"
+ },
+ "ml": {
+ "code": "ml",
+ "name": "malajalu"
+ },
+ "ms": {
+ "code": "ms",
+ "name": "malajiešu"
+ },
+ "mt": {
+ "code": "mt",
+ "name": "maltiešu"
+ },
+ "mr": {
+ "code": "mr",
+ "name": "maratu"
+ },
+ "mas": {
+ "code": "mas",
+ "name": "masaju"
+ },
+ "mfe": {
+ "code": "mfe",
+ "name": "Maurīcijas kreolu"
+ },
+ "es-MX": {
+ "code": "es-MX",
+ "name": "Meksikas spÄņu"
+ },
+ "mer": {
+ "code": "mer",
+ "name": "meru"
+ },
+ "ro-MD": {
+ "code": "ro-MD",
+ "name": "moldÄvu"
+ },
+ "mn": {
+ "code": "mn",
+ "name": "mongoļu"
+ },
+ "mua": {
+ "code": "mua",
+ "name": "mundangu"
+ },
+ "ar-001": {
+ "code": "ar-001",
+ "name": "mÅ«sdienu standarta arÄbu"
+ },
+ "naq": {
+ "code": "naq",
+ "name": "nama"
+ },
+ "ne": {
+ "code": "ne",
+ "name": "nepÄlieÅ¡u"
+ },
+ "jgo": {
+ "code": "jgo",
+ "name": "Ngomba"
+ },
+ "nb": {
+ "code": "nb",
+ "name": "norvēģu bukmols"
+ },
+ "nus": {
+ "code": "nus",
+ "name": "nueru"
+ },
+ "nyn": {
+ "code": "nyn",
+ "name": "ņankolu"
+ },
+ "or": {
+ "code": "or",
+ "name": "oriju"
+ },
+ "pa": {
+ "code": "pa",
+ "name": "pandžabu"
+ },
+ "fa": {
+ "code": "fa",
+ "name": "persiešu"
+ },
+ "pl": {
+ "code": "pl",
+ "name": "poļu"
+ },
+ "pt": {
+ "code": "pt",
+ "name": "portugÄļu"
+ },
+ "ps": {
+ "code": "ps",
+ "name": "puštu"
+ },
+ "rm": {
+ "code": "rm",
+ "name": "retoromÄņu"
+ },
+ "fy": {
+ "code": "fy",
+ "name": "rietumfrīzu"
+ },
+ "rof": {
+ "code": "rof",
+ "name": "rombo"
+ },
+ "rwk": {
+ "code": "rwk",
+ "name": "ruanda"
+ },
+ "ro": {
+ "code": "ro",
+ "name": "rumÄņu"
+ },
+ "rn": {
+ "code": "rn",
+ "name": "rundu"
+ },
+ "saq": {
+ "code": "saq",
+ "name": "samburu"
+ },
+ "sg": {
+ "code": "sg",
+ "name": "sango"
+ },
+ "sbp": {
+ "code": "sbp",
+ "name": "sangu"
+ },
+ "seh": {
+ "code": "seh",
+ "name": "senu"
+ },
+ "sr": {
+ "code": "sr",
+ "name": "serbu"
+ },
+ "si": {
+ "code": "si",
+ "name": "singÄļu"
+ },
+ "sk": {
+ "code": "sk",
+ "name": "slovÄku"
+ },
+ "sl": {
+ "code": "sl",
+ "name": "slovēņu"
+ },
+ "xog": {
+ "code": "xog",
+ "name": "sogu"
+ },
+ "so": {
+ "code": "so",
+ "name": "somÄļu"
+ },
+ "fi": {
+ "code": "fi",
+ "name": "somu"
+ },
+ "es": {
+ "code": "es",
+ "name": "spÄņu"
+ },
+ "zgh": {
+ "code": "zgh",
+ "name": "standarta marokÄņu berberu"
+ },
+ "sw": {
+ "code": "sw",
+ "name": "svahili"
+ },
+ "ksb": {
+ "code": "ksb",
+ "name": "Å¡ambalu"
+ },
+ "shi": {
+ "code": "shi",
+ "name": "Å¡ilhu"
+ },
+ "sn": {
+ "code": "sn",
+ "name": "Å¡onu"
+ },
+ "de-CH": {
+ "code": "de-CH",
+ "name": "Å veices augÅ¡vÄcu"
+ },
+ "fr-CH": {
+ "code": "fr-CH",
+ "name": "Å veices franÄu"
+ },
+ "gsw": {
+ "code": "gsw",
+ "name": "Å veices vÄcu"
+ },
+ "dav": {
+ "code": "dav",
+ "name": "taitu"
+ },
+ "th": {
+ "code": "th",
+ "name": "taju"
+ },
+ "ta": {
+ "code": "ta",
+ "name": "tamilu"
+ },
+ "twq": {
+ "code": "twq",
+ "name": "tasavaku"
+ },
+ "te": {
+ "code": "te",
+ "name": "telugu"
+ },
+ "teo": {
+ "code": "teo",
+ "name": "teso"
+ },
+ "bo": {
+ "code": "bo",
+ "name": "tibetiešu"
+ },
+ "ti": {
+ "code": "ti",
+ "name": "tigrinja"
+ },
+ "to": {
+ "code": "to",
+ "name": "tongiešu"
+ },
+ "tr": {
+ "code": "tr",
+ "name": "turku"
+ },
+ "ug": {
+ "code": "ug",
+ "name": "uiguru"
+ },
+ "uk": {
+ "code": "uk",
+ "name": "ukraiņu"
+ },
+ "hu": {
+ "code": "hu",
+ "name": "ungÄru"
+ },
+ "ur": {
+ "code": "ur",
+ "name": "urdu"
+ },
+ "uz": {
+ "code": "uz",
+ "name": "uzbeku"
+ },
+ "de": {
+ "code": "de",
+ "name": "vÄcu"
+ },
+ "vai": {
+ "code": "vai",
+ "name": "vaju"
+ },
+ "wae": {
+ "code": "wae",
+ "name": "Vallisas vÄcu"
+ },
+ "cy": {
+ "code": "cy",
+ "name": "velsiešu"
+ },
+ "vi": {
+ "code": "vi",
+ "name": "vjetnamiešu"
+ },
+ "vun": {
+ "code": "vun",
+ "name": "vundžo"
+ },
+ "dje": {
+ "code": "dje",
+ "name": "zarmu"
+ },
+ "nd": {
+ "code": "nd",
+ "name": "ziemeļndebelu"
+ },
+ "se": {
+ "code": "se",
+ "name": "ziemeļsÄmu"
+ },
+ "zu": {
+ "code": "zu",
+ "name": "zulu"
+ },
+ "sv": {
+ "code": "sv",
+ "name": "zviedru"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/language/mas.json b/library/intl/resources/language/mas.json
new file mode 100644
index 000000000..af04d4ecc
--- /dev/null
+++ b/library/intl/resources/language/mas.json
@@ -0,0 +1,738 @@
+{
+ "af": {
+ "code": "af",
+ "name": "Afrikaans"
+ },
+ "agq": {
+ "code": "agq",
+ "name": "Aghem"
+ },
+ "sq": {
+ "code": "sq",
+ "name": "Albanian"
+ },
+ "ar-001": {
+ "code": "ar-001",
+ "name": "ar_001"
+ },
+ "hy": {
+ "code": "hy",
+ "name": "Armenian"
+ },
+ "ast": {
+ "code": "ast",
+ "name": "Asturian"
+ },
+ "asa": {
+ "code": "asa",
+ "name": "Asu"
+ },
+ "az": {
+ "code": "az",
+ "name": "Azerbaijani"
+ },
+ "ksf": {
+ "code": "ksf",
+ "name": "Bafia"
+ },
+ "bm": {
+ "code": "bm",
+ "name": "Bambara"
+ },
+ "bas": {
+ "code": "bas",
+ "name": "Basaa"
+ },
+ "eu": {
+ "code": "eu",
+ "name": "Basque"
+ },
+ "bez": {
+ "code": "bez",
+ "name": "Bena"
+ },
+ "brx": {
+ "code": "brx",
+ "name": "Bodo"
+ },
+ "bs": {
+ "code": "bs",
+ "name": "Bosnian"
+ },
+ "br": {
+ "code": "br",
+ "name": "Breton"
+ },
+ "ca": {
+ "code": "ca",
+ "name": "Catalan"
+ },
+ "tzm": {
+ "code": "tzm",
+ "name": "Central Atlas Tamazight"
+ },
+ "chr": {
+ "code": "chr",
+ "name": "Cherokee"
+ },
+ "cgg": {
+ "code": "cgg",
+ "name": "Chiga"
+ },
+ "ksh": {
+ "code": "ksh",
+ "name": "Colognian"
+ },
+ "swc": {
+ "code": "swc",
+ "name": "Congo Swahili"
+ },
+ "hr": {
+ "code": "hr",
+ "name": "Croatian"
+ },
+ "da": {
+ "code": "da",
+ "name": "Danish"
+ },
+ "de-AT": {
+ "code": "de-AT",
+ "name": "de_AT"
+ },
+ "de-CH": {
+ "code": "de-CH",
+ "name": "de_CH"
+ },
+ "dz": {
+ "code": "dz",
+ "name": "Dzongkha"
+ },
+ "ebu": {
+ "code": "ebu",
+ "name": "Embu"
+ },
+ "en-AU": {
+ "code": "en-AU",
+ "name": "en_AU"
+ },
+ "en-CA": {
+ "code": "en-CA",
+ "name": "en_CA"
+ },
+ "en-GB": {
+ "code": "en-GB",
+ "name": "en_GB"
+ },
+ "en-US": {
+ "code": "en-US",
+ "name": "en_US"
+ },
+ "es-ES": {
+ "code": "es-ES",
+ "name": "es_ES"
+ },
+ "es-MX": {
+ "code": "es-MX",
+ "name": "es_MX"
+ },
+ "eo": {
+ "code": "eo",
+ "name": "Esperanto"
+ },
+ "et": {
+ "code": "et",
+ "name": "Estonian"
+ },
+ "ee": {
+ "code": "ee",
+ "name": "Ewe"
+ },
+ "ewo": {
+ "code": "ewo",
+ "name": "Ewondo"
+ },
+ "fo": {
+ "code": "fo",
+ "name": "Faroese"
+ },
+ "fil": {
+ "code": "fil",
+ "name": "Filipino"
+ },
+ "fi": {
+ "code": "fi",
+ "name": "Finnish"
+ },
+ "fr-CA": {
+ "code": "fr-CA",
+ "name": "fr_CA"
+ },
+ "fr-CH": {
+ "code": "fr-CH",
+ "name": "fr_CH"
+ },
+ "fur": {
+ "code": "fur",
+ "name": "Friulian"
+ },
+ "ff": {
+ "code": "ff",
+ "name": "Fulah"
+ },
+ "gl": {
+ "code": "gl",
+ "name": "Galician"
+ },
+ "lg": {
+ "code": "lg",
+ "name": "Ganda"
+ },
+ "ka": {
+ "code": "ka",
+ "name": "Georgian"
+ },
+ "gu": {
+ "code": "gu",
+ "name": "Gujarati"
+ },
+ "guz": {
+ "code": "guz",
+ "name": "Gusii"
+ },
+ "he": {
+ "code": "he",
+ "name": "Hebrew"
+ },
+ "is": {
+ "code": "is",
+ "name": "Icelandic"
+ },
+ "ga": {
+ "code": "ga",
+ "name": "Irish"
+ },
+ "dyo": {
+ "code": "dyo",
+ "name": "Jola-Fonyi"
+ },
+ "kea": {
+ "code": "kea",
+ "name": "Kabuverdianu"
+ },
+ "kab": {
+ "code": "kab",
+ "name": "Kabyle"
+ },
+ "kl": {
+ "code": "kl",
+ "name": "Kalaallisut"
+ },
+ "kln": {
+ "code": "kln",
+ "name": "Kalenjin"
+ },
+ "kam": {
+ "code": "kam",
+ "name": "Kamba"
+ },
+ "kn": {
+ "code": "kn",
+ "name": "Kannada"
+ },
+ "ks": {
+ "code": "ks",
+ "name": "Kashmiri"
+ },
+ "kk": {
+ "code": "kk",
+ "name": "Kazakh"
+ },
+ "ki": {
+ "code": "ki",
+ "name": "Kikuyu"
+ },
+ "khq": {
+ "code": "khq",
+ "name": "Koyra Chiini"
+ },
+ "ses": {
+ "code": "ses",
+ "name": "Koyraboro Senni"
+ },
+ "nmg": {
+ "code": "nmg",
+ "name": "Kwasio"
+ },
+ "ky": {
+ "code": "ky",
+ "name": "Kyrgyz"
+ },
+ "lag": {
+ "code": "lag",
+ "name": "Langi"
+ },
+ "lo": {
+ "code": "lo",
+ "name": "Lao"
+ },
+ "lv": {
+ "code": "lv",
+ "name": "Latvian"
+ },
+ "ln": {
+ "code": "ln",
+ "name": "Lingala"
+ },
+ "lt": {
+ "code": "lt",
+ "name": "Lithuanian"
+ },
+ "bn": {
+ "code": "bn",
+ "name": "lnkʉtʉÌk É”Ìɔ̄ lBengali"
+ },
+ "dsb": {
+ "code": "dsb",
+ "name": "Lower Sorbian"
+ },
+ "lu": {
+ "code": "lu",
+ "name": "Luba-Katanga"
+ },
+ "luo": {
+ "code": "luo",
+ "name": "Luo"
+ },
+ "lb": {
+ "code": "lb",
+ "name": "Luxembourgish"
+ },
+ "luy": {
+ "code": "luy",
+ "name": "Luyia"
+ },
+ "mas": {
+ "code": "mas",
+ "name": "Maa"
+ },
+ "mk": {
+ "code": "mk",
+ "name": "Macedonian"
+ },
+ "jmc": {
+ "code": "jmc",
+ "name": "Machame"
+ },
+ "mgh": {
+ "code": "mgh",
+ "name": "Makhuwa-Meetto"
+ },
+ "kde": {
+ "code": "kde",
+ "name": "Makonde"
+ },
+ "mg": {
+ "code": "mg",
+ "name": "Malagasy"
+ },
+ "ml": {
+ "code": "ml",
+ "name": "Malayalam"
+ },
+ "mt": {
+ "code": "mt",
+ "name": "Maltese"
+ },
+ "mr": {
+ "code": "mr",
+ "name": "Marathi"
+ },
+ "mer": {
+ "code": "mer",
+ "name": "Meru"
+ },
+ "mn": {
+ "code": "mn",
+ "name": "Mongolian"
+ },
+ "mfe": {
+ "code": "mfe",
+ "name": "Morisyen"
+ },
+ "mua": {
+ "code": "mua",
+ "name": "Mundang"
+ },
+ "naq": {
+ "code": "naq",
+ "name": "Nama"
+ },
+ "jgo": {
+ "code": "jgo",
+ "name": "Ngomba"
+ },
+ "fr": {
+ "code": "fr",
+ "name": "nkʉtʉÌk É”Ìɔ̄ faransa"
+ },
+ "ha": {
+ "code": "ha",
+ "name": "nkʉtʉÌk É”Ìɔ̄ hausa"
+ },
+ "id": {
+ "code": "id",
+ "name": "nkʉtʉÌk É”Ìɔ̄ Indonesia"
+ },
+ "ja": {
+ "code": "ja",
+ "name": "nkʉtʉÌk É”Ìɔ̄ japani"
+ },
+ "ak": {
+ "code": "ak",
+ "name": "nkʉtʉÌk É”Ìɔ̄ lAkan"
+ },
+ "am": {
+ "code": "am",
+ "name": "nkʉtʉÌk É”Ìɔ̄ lAmhari"
+ },
+ "be": {
+ "code": "be",
+ "name": "nkʉtʉÌk É”Ìɔ̄ lBelarusi"
+ },
+ "bg": {
+ "code": "bg",
+ "name": "nkʉtʉÌk É”Ìɔ̄ lBulgaria"
+ },
+ "my": {
+ "code": "my",
+ "name": "nkʉtʉÌk É”Ìɔ̄ lBurma"
+ },
+ "cs": {
+ "code": "cs",
+ "name": "nkʉtʉÌk É”Ìɔ̄ lcheki"
+ },
+ "zh": {
+ "code": "zh",
+ "name": "nkʉtʉÌk É”Ìɔ̄ lchina"
+ },
+ "so": {
+ "code": "so",
+ "name": "nkʉtʉÌk É”Ìɔ̄ lchumari"
+ },
+ "nl": {
+ "code": "nl",
+ "name": "nkʉtʉÌk É”Ìɔ̄ lduchi"
+ },
+ "el": {
+ "code": "el",
+ "name": "nkʉtʉÌk É”Ìɔ̄ lgiriki"
+ },
+ "hu": {
+ "code": "hu",
+ "name": "nkʉtʉÌk É”Ìɔ̄ lhungari"
+ },
+ "de": {
+ "code": "de",
+ "name": "nkʉtʉÌk É”Ìɔ̄ ljerumani"
+ },
+ "km": {
+ "code": "km",
+ "name": "nkʉtʉÌk É”Ìɔ̄ lkambodia"
+ },
+ "ko": {
+ "code": "ko",
+ "name": "nkʉtʉÌk É”Ìɔ̄ lkorea"
+ },
+ "uk": {
+ "code": "uk",
+ "name": "nkʉtʉÌk É”Ìɔ̄ lkrania"
+ },
+ "ar": {
+ "code": "ar",
+ "name": "nkʉtʉÌk É”Ìɔ̄ lmarabu"
+ },
+ "hi": {
+ "code": "hi",
+ "name": "nkʉtʉÌk É”Ìɔ̄ lmoindi"
+ },
+ "ne": {
+ "code": "ne",
+ "name": "nkʉtʉÌk É”Ìɔ̄ lnepali"
+ },
+ "fa": {
+ "code": "fa",
+ "name": "nkʉtʉÌk É”Ìɔ̄ lpersia"
+ },
+ "pl": {
+ "code": "pl",
+ "name": "nkʉtʉÌk É”Ìɔ̄ lpoland"
+ },
+ "pt": {
+ "code": "pt",
+ "name": "nkʉtʉÌk É”Ìɔ̄ lportuguese"
+ },
+ "pa": {
+ "code": "pa",
+ "name": "nkʉtʉÌk É”Ìɔ̄ lpunjabi"
+ },
+ "ro": {
+ "code": "ro",
+ "name": "nkʉtʉÌk É”Ìɔ̄ lromania"
+ },
+ "ru": {
+ "code": "ru",
+ "name": "nkʉtʉÌk É”Ìɔ̄ lrusi"
+ },
+ "es": {
+ "code": "es",
+ "name": "nkʉtʉÌk É”Ìɔ̄ lspania"
+ },
+ "sv": {
+ "code": "sv",
+ "name": "nkʉtʉÌk É”Ìɔ̄ lswidi"
+ },
+ "th": {
+ "code": "th",
+ "name": "nkʉtʉÌk É”Ìɔ̄ ltai"
+ },
+ "it": {
+ "code": "it",
+ "name": "nkʉtʉÌk É”Ìɔ̄ ltalian"
+ },
+ "ta": {
+ "code": "ta",
+ "name": "nkʉtʉÌk É”Ìɔ̄ ltamil"
+ },
+ "tr": {
+ "code": "tr",
+ "name": "nkʉtʉÌk É”Ìɔ̄ lturuki"
+ },
+ "ur": {
+ "code": "ur",
+ "name": "nkʉtʉÌk É”Ìɔ̄ lurdu"
+ },
+ "vi": {
+ "code": "vi",
+ "name": "nkʉtʉÌk É”Ìɔ̄ lvietinamu"
+ },
+ "yo": {
+ "code": "yo",
+ "name": "nkʉtʉÌk É”Ìɔ̄ lyoruba"
+ },
+ "zu": {
+ "code": "zu",
+ "name": "nkʉtʉÌk É”Ìɔ̄ lzulu"
+ },
+ "ms": {
+ "code": "ms",
+ "name": "nkʉtʉÌk É”Ìɔ̄ malay"
+ },
+ "en": {
+ "code": "en",
+ "name": "nkʉtʉÌk É”Ìɔ̄ nkɨÌresa"
+ },
+ "nl-BE": {
+ "code": "nl-BE",
+ "name": "nl_BE"
+ },
+ "nd": {
+ "code": "nd",
+ "name": "North Ndebele"
+ },
+ "se": {
+ "code": "se",
+ "name": "Northern Sami"
+ },
+ "nb": {
+ "code": "nb",
+ "name": "Norwegian Bokmål"
+ },
+ "nn": {
+ "code": "nn",
+ "name": "Norwegian Nynorsk"
+ },
+ "nus": {
+ "code": "nus",
+ "name": "Nuer"
+ },
+ "nyn": {
+ "code": "nyn",
+ "name": "Nyankole"
+ },
+ "or": {
+ "code": "or",
+ "name": "Oriya"
+ },
+ "ps": {
+ "code": "ps",
+ "name": "Pashto"
+ },
+ "pt-BR": {
+ "code": "pt-BR",
+ "name": "pt_BR"
+ },
+ "pt-PT": {
+ "code": "pt-PT",
+ "name": "pt_PT"
+ },
+ "ro-MD": {
+ "code": "ro-MD",
+ "name": "ro_MD"
+ },
+ "rm": {
+ "code": "rm",
+ "name": "Romansh"
+ },
+ "rof": {
+ "code": "rof",
+ "name": "Rombo"
+ },
+ "rn": {
+ "code": "rn",
+ "name": "Rundi"
+ },
+ "rwk": {
+ "code": "rwk",
+ "name": "Rwa"
+ },
+ "saq": {
+ "code": "saq",
+ "name": "Samburu"
+ },
+ "sg": {
+ "code": "sg",
+ "name": "Sango"
+ },
+ "sbp": {
+ "code": "sbp",
+ "name": "Sangu"
+ },
+ "gd": {
+ "code": "gd",
+ "name": "Scottish Gaelic"
+ },
+ "seh": {
+ "code": "seh",
+ "name": "Sena"
+ },
+ "sr": {
+ "code": "sr",
+ "name": "Serbian"
+ },
+ "ksb": {
+ "code": "ksb",
+ "name": "Shambala"
+ },
+ "sn": {
+ "code": "sn",
+ "name": "Shona"
+ },
+ "si": {
+ "code": "si",
+ "name": "Sinhala"
+ },
+ "sk": {
+ "code": "sk",
+ "name": "Slovak"
+ },
+ "sl": {
+ "code": "sl",
+ "name": "Slovenian"
+ },
+ "xog": {
+ "code": "xog",
+ "name": "Soga"
+ },
+ "zgh": {
+ "code": "zgh",
+ "name": "Standard Moroccan Tamazight"
+ },
+ "sw": {
+ "code": "sw",
+ "name": "Swahili"
+ },
+ "gsw": {
+ "code": "gsw",
+ "name": "Swiss German"
+ },
+ "shi": {
+ "code": "shi",
+ "name": "Tachelhit"
+ },
+ "dav": {
+ "code": "dav",
+ "name": "Taita"
+ },
+ "twq": {
+ "code": "twq",
+ "name": "Tasawaq"
+ },
+ "te": {
+ "code": "te",
+ "name": "Telugu"
+ },
+ "teo": {
+ "code": "teo",
+ "name": "Teso"
+ },
+ "bo": {
+ "code": "bo",
+ "name": "Tibetan"
+ },
+ "ti": {
+ "code": "ti",
+ "name": "Tigrinya"
+ },
+ "to": {
+ "code": "to",
+ "name": "Tongan"
+ },
+ "hsb": {
+ "code": "hsb",
+ "name": "Upper Sorbian"
+ },
+ "ug": {
+ "code": "ug",
+ "name": "Uyghur"
+ },
+ "uz": {
+ "code": "uz",
+ "name": "Uzbek"
+ },
+ "vai": {
+ "code": "vai",
+ "name": "Vai"
+ },
+ "vun": {
+ "code": "vun",
+ "name": "Vunjo"
+ },
+ "wae": {
+ "code": "wae",
+ "name": "Walser"
+ },
+ "cy": {
+ "code": "cy",
+ "name": "Welsh"
+ },
+ "fy": {
+ "code": "fy",
+ "name": "Western Frisian"
+ },
+ "yav": {
+ "code": "yav",
+ "name": "Yangben"
+ },
+ "dje": {
+ "code": "dje",
+ "name": "Zarma"
+ },
+ "zh-Hans": {
+ "code": "zh-Hans",
+ "name": "zh_Hans"
+ },
+ "zh-Hant": {
+ "code": "zh-Hant",
+ "name": "zh_Hant"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/language/mer.json b/library/intl/resources/language/mer.json
new file mode 100644
index 000000000..0898bba6c
--- /dev/null
+++ b/library/intl/resources/language/mer.json
@@ -0,0 +1,738 @@
+{
+ "af": {
+ "code": "af",
+ "name": "Afrikaans"
+ },
+ "agq": {
+ "code": "agq",
+ "name": "Aghem"
+ },
+ "sq": {
+ "code": "sq",
+ "name": "Albanian"
+ },
+ "ar-001": {
+ "code": "ar-001",
+ "name": "ar_001"
+ },
+ "hy": {
+ "code": "hy",
+ "name": "Armenian"
+ },
+ "ast": {
+ "code": "ast",
+ "name": "Asturian"
+ },
+ "asa": {
+ "code": "asa",
+ "name": "Asu"
+ },
+ "az": {
+ "code": "az",
+ "name": "Azerbaijani"
+ },
+ "ksf": {
+ "code": "ksf",
+ "name": "Bafia"
+ },
+ "bm": {
+ "code": "bm",
+ "name": "Bambara"
+ },
+ "bas": {
+ "code": "bas",
+ "name": "Basaa"
+ },
+ "eu": {
+ "code": "eu",
+ "name": "Basque"
+ },
+ "bez": {
+ "code": "bez",
+ "name": "Bena"
+ },
+ "brx": {
+ "code": "brx",
+ "name": "Bodo"
+ },
+ "bs": {
+ "code": "bs",
+ "name": "Bosnian"
+ },
+ "br": {
+ "code": "br",
+ "name": "Breton"
+ },
+ "ca": {
+ "code": "ca",
+ "name": "Catalan"
+ },
+ "tzm": {
+ "code": "tzm",
+ "name": "Central Atlas Tamazight"
+ },
+ "chr": {
+ "code": "chr",
+ "name": "Cherokee"
+ },
+ "cgg": {
+ "code": "cgg",
+ "name": "Chiga"
+ },
+ "ksh": {
+ "code": "ksh",
+ "name": "Colognian"
+ },
+ "swc": {
+ "code": "swc",
+ "name": "Congo Swahili"
+ },
+ "hr": {
+ "code": "hr",
+ "name": "Croatian"
+ },
+ "da": {
+ "code": "da",
+ "name": "Danish"
+ },
+ "de-AT": {
+ "code": "de-AT",
+ "name": "de_AT"
+ },
+ "de-CH": {
+ "code": "de-CH",
+ "name": "de_CH"
+ },
+ "dz": {
+ "code": "dz",
+ "name": "Dzongkha"
+ },
+ "ebu": {
+ "code": "ebu",
+ "name": "Embu"
+ },
+ "en-AU": {
+ "code": "en-AU",
+ "name": "en_AU"
+ },
+ "en-CA": {
+ "code": "en-CA",
+ "name": "en_CA"
+ },
+ "en-GB": {
+ "code": "en-GB",
+ "name": "en_GB"
+ },
+ "en-US": {
+ "code": "en-US",
+ "name": "en_US"
+ },
+ "es-ES": {
+ "code": "es-ES",
+ "name": "es_ES"
+ },
+ "es-MX": {
+ "code": "es-MX",
+ "name": "es_MX"
+ },
+ "eo": {
+ "code": "eo",
+ "name": "Esperanto"
+ },
+ "et": {
+ "code": "et",
+ "name": "Estonian"
+ },
+ "ee": {
+ "code": "ee",
+ "name": "Ewe"
+ },
+ "ewo": {
+ "code": "ewo",
+ "name": "Ewondo"
+ },
+ "fo": {
+ "code": "fo",
+ "name": "Faroese"
+ },
+ "fil": {
+ "code": "fil",
+ "name": "Filipino"
+ },
+ "fi": {
+ "code": "fi",
+ "name": "Finnish"
+ },
+ "fr-CA": {
+ "code": "fr-CA",
+ "name": "fr_CA"
+ },
+ "fr-CH": {
+ "code": "fr-CH",
+ "name": "fr_CH"
+ },
+ "fur": {
+ "code": "fur",
+ "name": "Friulian"
+ },
+ "ff": {
+ "code": "ff",
+ "name": "Fulah"
+ },
+ "gl": {
+ "code": "gl",
+ "name": "Galician"
+ },
+ "lg": {
+ "code": "lg",
+ "name": "Ganda"
+ },
+ "ka": {
+ "code": "ka",
+ "name": "Georgian"
+ },
+ "gu": {
+ "code": "gu",
+ "name": "Gujarati"
+ },
+ "guz": {
+ "code": "guz",
+ "name": "Gusii"
+ },
+ "he": {
+ "code": "he",
+ "name": "Hebrew"
+ },
+ "is": {
+ "code": "is",
+ "name": "Icelandic"
+ },
+ "ga": {
+ "code": "ga",
+ "name": "Irish"
+ },
+ "dyo": {
+ "code": "dyo",
+ "name": "Jola-Fonyi"
+ },
+ "kea": {
+ "code": "kea",
+ "name": "Kabuverdianu"
+ },
+ "kab": {
+ "code": "kab",
+ "name": "Kabyle"
+ },
+ "kl": {
+ "code": "kl",
+ "name": "Kalaallisut"
+ },
+ "kln": {
+ "code": "kln",
+ "name": "Kalenjin"
+ },
+ "kam": {
+ "code": "kam",
+ "name": "Kamba"
+ },
+ "kn": {
+ "code": "kn",
+ "name": "Kannada"
+ },
+ "ks": {
+ "code": "ks",
+ "name": "Kashmiri"
+ },
+ "kk": {
+ "code": "kk",
+ "name": "Kazakh"
+ },
+ "ak": {
+ "code": "ak",
+ "name": "KÄ©akani"
+ },
+ "am": {
+ "code": "am",
+ "name": "Kĩamarĩki"
+ },
+ "ar": {
+ "code": "ar",
+ "name": "KÄ©arabu"
+ },
+ "bn": {
+ "code": "bn",
+ "name": "KÄ©bangira"
+ },
+ "be": {
+ "code": "be",
+ "name": "KÄ©belarusi"
+ },
+ "bg": {
+ "code": "bg",
+ "name": "Kĩbulugĩria"
+ },
+ "my": {
+ "code": "my",
+ "name": "KÄ©burma"
+ },
+ "cs": {
+ "code": "cs",
+ "name": "KÄ©cheki"
+ },
+ "zh": {
+ "code": "zh",
+ "name": "KÄ©china"
+ },
+ "fr": {
+ "code": "fr",
+ "name": "KÄ©furansi"
+ },
+ "hu": {
+ "code": "hu",
+ "name": "Kĩhangarĩ"
+ },
+ "ha": {
+ "code": "ha",
+ "name": "KÄ©hausa"
+ },
+ "hi": {
+ "code": "hi",
+ "name": "Kĩhĩndi"
+ },
+ "nl": {
+ "code": "nl",
+ "name": "KÄ©holandi"
+ },
+ "id": {
+ "code": "id",
+ "name": "KÄ©indonesia"
+ },
+ "it": {
+ "code": "it",
+ "name": "Kĩitalĩ"
+ },
+ "ja": {
+ "code": "ja",
+ "name": "KÄ©japani"
+ },
+ "km": {
+ "code": "km",
+ "name": "KÄ©kambodia"
+ },
+ "ko": {
+ "code": "ko",
+ "name": "KÄ©korea"
+ },
+ "ki": {
+ "code": "ki",
+ "name": "Kikuyu"
+ },
+ "ms": {
+ "code": "ms",
+ "name": "KÄ©malesia"
+ },
+ "mer": {
+ "code": "mer",
+ "name": "Kĩmĩrũ"
+ },
+ "ne": {
+ "code": "ne",
+ "name": "KÄ©nepali"
+ },
+ "en": {
+ "code": "en",
+ "name": "KÄ©ngeretha"
+ },
+ "el": {
+ "code": "el",
+ "name": "KÄ©ngiriki"
+ },
+ "de": {
+ "code": "de",
+ "name": "Kĩnjamanĩ"
+ },
+ "fa": {
+ "code": "fa",
+ "name": "KÄ©pasia"
+ },
+ "pt": {
+ "code": "pt",
+ "name": "KÄ©pochogo"
+ },
+ "pl": {
+ "code": "pl",
+ "name": "KÄ©polandi"
+ },
+ "pa": {
+ "code": "pa",
+ "name": "KÄ©punjabu"
+ },
+ "ru": {
+ "code": "ru",
+ "name": "KÄ©rashia"
+ },
+ "ro": {
+ "code": "ro",
+ "name": "KÄ©romania"
+ },
+ "so": {
+ "code": "so",
+ "name": "KÄ©somali"
+ },
+ "es": {
+ "code": "es",
+ "name": "Kĩspĩni"
+ },
+ "sv": {
+ "code": "sv",
+ "name": "KÄ©swideni"
+ },
+ "tr": {
+ "code": "tr",
+ "name": "Kĩtakĩ"
+ },
+ "ta": {
+ "code": "ta",
+ "name": "KÄ©tamilu"
+ },
+ "th": {
+ "code": "th",
+ "name": "KÄ©thailandi"
+ },
+ "uk": {
+ "code": "uk",
+ "name": "Kĩukirĩni"
+ },
+ "ur": {
+ "code": "ur",
+ "name": "KÄ©urdu"
+ },
+ "vi": {
+ "code": "vi",
+ "name": "KÄ©vietinamu"
+ },
+ "yo": {
+ "code": "yo",
+ "name": "KÄ©yoruba"
+ },
+ "zu": {
+ "code": "zu",
+ "name": "KÄ©zulu"
+ },
+ "khq": {
+ "code": "khq",
+ "name": "Koyra Chiini"
+ },
+ "ses": {
+ "code": "ses",
+ "name": "Koyraboro Senni"
+ },
+ "nmg": {
+ "code": "nmg",
+ "name": "Kwasio"
+ },
+ "ky": {
+ "code": "ky",
+ "name": "Kyrgyz"
+ },
+ "lag": {
+ "code": "lag",
+ "name": "Langi"
+ },
+ "lo": {
+ "code": "lo",
+ "name": "Lao"
+ },
+ "lv": {
+ "code": "lv",
+ "name": "Latvian"
+ },
+ "ln": {
+ "code": "ln",
+ "name": "Lingala"
+ },
+ "lt": {
+ "code": "lt",
+ "name": "Lithuanian"
+ },
+ "dsb": {
+ "code": "dsb",
+ "name": "Lower Sorbian"
+ },
+ "lu": {
+ "code": "lu",
+ "name": "Luba-Katanga"
+ },
+ "luo": {
+ "code": "luo",
+ "name": "Luo"
+ },
+ "lb": {
+ "code": "lb",
+ "name": "Luxembourgish"
+ },
+ "luy": {
+ "code": "luy",
+ "name": "Luyia"
+ },
+ "mk": {
+ "code": "mk",
+ "name": "Macedonian"
+ },
+ "jmc": {
+ "code": "jmc",
+ "name": "Machame"
+ },
+ "mgh": {
+ "code": "mgh",
+ "name": "Makhuwa-Meetto"
+ },
+ "kde": {
+ "code": "kde",
+ "name": "Makonde"
+ },
+ "mg": {
+ "code": "mg",
+ "name": "Malagasy"
+ },
+ "ml": {
+ "code": "ml",
+ "name": "Malayalam"
+ },
+ "mt": {
+ "code": "mt",
+ "name": "Maltese"
+ },
+ "mr": {
+ "code": "mr",
+ "name": "Marathi"
+ },
+ "mas": {
+ "code": "mas",
+ "name": "Masai"
+ },
+ "mn": {
+ "code": "mn",
+ "name": "Mongolian"
+ },
+ "mfe": {
+ "code": "mfe",
+ "name": "Morisyen"
+ },
+ "mua": {
+ "code": "mua",
+ "name": "Mundang"
+ },
+ "naq": {
+ "code": "naq",
+ "name": "Nama"
+ },
+ "jgo": {
+ "code": "jgo",
+ "name": "Ngomba"
+ },
+ "nl-BE": {
+ "code": "nl-BE",
+ "name": "nl_BE"
+ },
+ "nd": {
+ "code": "nd",
+ "name": "North Ndebele"
+ },
+ "se": {
+ "code": "se",
+ "name": "Northern Sami"
+ },
+ "nb": {
+ "code": "nb",
+ "name": "Norwegian Bokmål"
+ },
+ "nn": {
+ "code": "nn",
+ "name": "Norwegian Nynorsk"
+ },
+ "nus": {
+ "code": "nus",
+ "name": "Nuer"
+ },
+ "nyn": {
+ "code": "nyn",
+ "name": "Nyankole"
+ },
+ "or": {
+ "code": "or",
+ "name": "Oriya"
+ },
+ "ps": {
+ "code": "ps",
+ "name": "Pashto"
+ },
+ "pt-BR": {
+ "code": "pt-BR",
+ "name": "pt_BR"
+ },
+ "pt-PT": {
+ "code": "pt-PT",
+ "name": "pt_PT"
+ },
+ "ro-MD": {
+ "code": "ro-MD",
+ "name": "ro_MD"
+ },
+ "rm": {
+ "code": "rm",
+ "name": "Romansh"
+ },
+ "rof": {
+ "code": "rof",
+ "name": "Rombo"
+ },
+ "rn": {
+ "code": "rn",
+ "name": "Rundi"
+ },
+ "rwk": {
+ "code": "rwk",
+ "name": "Rwa"
+ },
+ "saq": {
+ "code": "saq",
+ "name": "Samburu"
+ },
+ "sg": {
+ "code": "sg",
+ "name": "Sango"
+ },
+ "sbp": {
+ "code": "sbp",
+ "name": "Sangu"
+ },
+ "gd": {
+ "code": "gd",
+ "name": "Scottish Gaelic"
+ },
+ "seh": {
+ "code": "seh",
+ "name": "Sena"
+ },
+ "sr": {
+ "code": "sr",
+ "name": "Serbian"
+ },
+ "ksb": {
+ "code": "ksb",
+ "name": "Shambala"
+ },
+ "sn": {
+ "code": "sn",
+ "name": "Shona"
+ },
+ "si": {
+ "code": "si",
+ "name": "Sinhala"
+ },
+ "sk": {
+ "code": "sk",
+ "name": "Slovak"
+ },
+ "sl": {
+ "code": "sl",
+ "name": "Slovenian"
+ },
+ "xog": {
+ "code": "xog",
+ "name": "Soga"
+ },
+ "zgh": {
+ "code": "zgh",
+ "name": "Standard Moroccan Tamazight"
+ },
+ "sw": {
+ "code": "sw",
+ "name": "Swahili"
+ },
+ "gsw": {
+ "code": "gsw",
+ "name": "Swiss German"
+ },
+ "shi": {
+ "code": "shi",
+ "name": "Tachelhit"
+ },
+ "dav": {
+ "code": "dav",
+ "name": "Taita"
+ },
+ "twq": {
+ "code": "twq",
+ "name": "Tasawaq"
+ },
+ "te": {
+ "code": "te",
+ "name": "Telugu"
+ },
+ "teo": {
+ "code": "teo",
+ "name": "Teso"
+ },
+ "bo": {
+ "code": "bo",
+ "name": "Tibetan"
+ },
+ "ti": {
+ "code": "ti",
+ "name": "Tigrinya"
+ },
+ "to": {
+ "code": "to",
+ "name": "Tongan"
+ },
+ "hsb": {
+ "code": "hsb",
+ "name": "Upper Sorbian"
+ },
+ "ug": {
+ "code": "ug",
+ "name": "Uyghur"
+ },
+ "uz": {
+ "code": "uz",
+ "name": "Uzbek"
+ },
+ "vai": {
+ "code": "vai",
+ "name": "Vai"
+ },
+ "vun": {
+ "code": "vun",
+ "name": "Vunjo"
+ },
+ "wae": {
+ "code": "wae",
+ "name": "Walser"
+ },
+ "cy": {
+ "code": "cy",
+ "name": "Welsh"
+ },
+ "fy": {
+ "code": "fy",
+ "name": "Western Frisian"
+ },
+ "yav": {
+ "code": "yav",
+ "name": "Yangben"
+ },
+ "dje": {
+ "code": "dje",
+ "name": "Zarma"
+ },
+ "zh-Hans": {
+ "code": "zh-Hans",
+ "name": "zh_Hans"
+ },
+ "zh-Hant": {
+ "code": "zh-Hant",
+ "name": "zh_Hant"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/language/mfe.json b/library/intl/resources/language/mfe.json
new file mode 100644
index 000000000..511131998
--- /dev/null
+++ b/library/intl/resources/language/mfe.json
@@ -0,0 +1,738 @@
+{
+ "af": {
+ "code": "af",
+ "name": "Afrikaans"
+ },
+ "agq": {
+ "code": "agq",
+ "name": "Aghem"
+ },
+ "ak": {
+ "code": "ak",
+ "name": "akan"
+ },
+ "sq": {
+ "code": "sq",
+ "name": "Albanian"
+ },
+ "de": {
+ "code": "de",
+ "name": "alman"
+ },
+ "am": {
+ "code": "am",
+ "name": "amarik"
+ },
+ "en": {
+ "code": "en",
+ "name": "angle"
+ },
+ "ar-001": {
+ "code": "ar-001",
+ "name": "ar_001"
+ },
+ "ar": {
+ "code": "ar",
+ "name": "arab"
+ },
+ "hy": {
+ "code": "hy",
+ "name": "Armenian"
+ },
+ "ast": {
+ "code": "ast",
+ "name": "Asturian"
+ },
+ "asa": {
+ "code": "asa",
+ "name": "Asu"
+ },
+ "az": {
+ "code": "az",
+ "name": "Azerbaijani"
+ },
+ "ksf": {
+ "code": "ksf",
+ "name": "Bafia"
+ },
+ "bm": {
+ "code": "bm",
+ "name": "Bambara"
+ },
+ "bas": {
+ "code": "bas",
+ "name": "Basaa"
+ },
+ "eu": {
+ "code": "eu",
+ "name": "Basque"
+ },
+ "bez": {
+ "code": "bez",
+ "name": "Bena"
+ },
+ "bn": {
+ "code": "bn",
+ "name": "bengali"
+ },
+ "be": {
+ "code": "be",
+ "name": "bieloris"
+ },
+ "bg": {
+ "code": "bg",
+ "name": "bilgar"
+ },
+ "my": {
+ "code": "my",
+ "name": "birman"
+ },
+ "brx": {
+ "code": "brx",
+ "name": "Bodo"
+ },
+ "bs": {
+ "code": "bs",
+ "name": "Bosnian"
+ },
+ "br": {
+ "code": "br",
+ "name": "Breton"
+ },
+ "ca": {
+ "code": "ca",
+ "name": "Catalan"
+ },
+ "tzm": {
+ "code": "tzm",
+ "name": "Central Atlas Tamazight"
+ },
+ "chr": {
+ "code": "chr",
+ "name": "Cherokee"
+ },
+ "cgg": {
+ "code": "cgg",
+ "name": "Chiga"
+ },
+ "ksh": {
+ "code": "ksh",
+ "name": "Colognian"
+ },
+ "swc": {
+ "code": "swc",
+ "name": "Congo Swahili"
+ },
+ "hr": {
+ "code": "hr",
+ "name": "Croatian"
+ },
+ "da": {
+ "code": "da",
+ "name": "Danish"
+ },
+ "de-AT": {
+ "code": "de-AT",
+ "name": "de_AT"
+ },
+ "de-CH": {
+ "code": "de-CH",
+ "name": "de_CH"
+ },
+ "dz": {
+ "code": "dz",
+ "name": "Dzongkha"
+ },
+ "ebu": {
+ "code": "ebu",
+ "name": "Embu"
+ },
+ "en-AU": {
+ "code": "en-AU",
+ "name": "en_AU"
+ },
+ "en-CA": {
+ "code": "en-CA",
+ "name": "en_CA"
+ },
+ "en-GB": {
+ "code": "en-GB",
+ "name": "en_GB"
+ },
+ "en-US": {
+ "code": "en-US",
+ "name": "en_US"
+ },
+ "es-ES": {
+ "code": "es-ES",
+ "name": "es_ES"
+ },
+ "es-MX": {
+ "code": "es-MX",
+ "name": "es_MX"
+ },
+ "es": {
+ "code": "es",
+ "name": "espagnol"
+ },
+ "eo": {
+ "code": "eo",
+ "name": "Esperanto"
+ },
+ "et": {
+ "code": "et",
+ "name": "Estonian"
+ },
+ "ee": {
+ "code": "ee",
+ "name": "Ewe"
+ },
+ "ewo": {
+ "code": "ewo",
+ "name": "Ewondo"
+ },
+ "fo": {
+ "code": "fo",
+ "name": "Faroese"
+ },
+ "fil": {
+ "code": "fil",
+ "name": "Filipino"
+ },
+ "fi": {
+ "code": "fi",
+ "name": "Finnish"
+ },
+ "fr-CA": {
+ "code": "fr-CA",
+ "name": "fr_CA"
+ },
+ "fr-CH": {
+ "code": "fr-CH",
+ "name": "fr_CH"
+ },
+ "fr": {
+ "code": "fr",
+ "name": "franse"
+ },
+ "fur": {
+ "code": "fur",
+ "name": "Friulian"
+ },
+ "ff": {
+ "code": "ff",
+ "name": "Fulah"
+ },
+ "gl": {
+ "code": "gl",
+ "name": "Galician"
+ },
+ "lg": {
+ "code": "lg",
+ "name": "Ganda"
+ },
+ "ka": {
+ "code": "ka",
+ "name": "Georgian"
+ },
+ "el": {
+ "code": "el",
+ "name": "grek"
+ },
+ "gu": {
+ "code": "gu",
+ "name": "Gujarati"
+ },
+ "guz": {
+ "code": "guz",
+ "name": "Gusii"
+ },
+ "ha": {
+ "code": "ha",
+ "name": "haoussa"
+ },
+ "he": {
+ "code": "he",
+ "name": "Hebrew"
+ },
+ "hi": {
+ "code": "hi",
+ "name": "hindi"
+ },
+ "hu": {
+ "code": "hu",
+ "name": "hongrwa"
+ },
+ "is": {
+ "code": "is",
+ "name": "Icelandic"
+ },
+ "uk": {
+ "code": "uk",
+ "name": "ikrenien"
+ },
+ "id": {
+ "code": "id",
+ "name": "indonezien"
+ },
+ "ga": {
+ "code": "ga",
+ "name": "Irish"
+ },
+ "it": {
+ "code": "it",
+ "name": "italien"
+ },
+ "dyo": {
+ "code": "dyo",
+ "name": "Jola-Fonyi"
+ },
+ "kea": {
+ "code": "kea",
+ "name": "Kabuverdianu"
+ },
+ "kab": {
+ "code": "kab",
+ "name": "Kabyle"
+ },
+ "kl": {
+ "code": "kl",
+ "name": "Kalaallisut"
+ },
+ "kln": {
+ "code": "kln",
+ "name": "Kalenjin"
+ },
+ "kam": {
+ "code": "kam",
+ "name": "Kamba"
+ },
+ "kn": {
+ "code": "kn",
+ "name": "Kannada"
+ },
+ "ks": {
+ "code": "ks",
+ "name": "Kashmiri"
+ },
+ "kk": {
+ "code": "kk",
+ "name": "Kazakh"
+ },
+ "km": {
+ "code": "km",
+ "name": "khmer, santral"
+ },
+ "ki": {
+ "code": "ki",
+ "name": "Kikuyu"
+ },
+ "ko": {
+ "code": "ko",
+ "name": "koreen"
+ },
+ "khq": {
+ "code": "khq",
+ "name": "Koyra Chiini"
+ },
+ "ses": {
+ "code": "ses",
+ "name": "Koyraboro Senni"
+ },
+ "mfe": {
+ "code": "mfe",
+ "name": "kreol morisien"
+ },
+ "nmg": {
+ "code": "nmg",
+ "name": "Kwasio"
+ },
+ "ky": {
+ "code": "ky",
+ "name": "Kyrgyz"
+ },
+ "lag": {
+ "code": "lag",
+ "name": "Langi"
+ },
+ "lo": {
+ "code": "lo",
+ "name": "Lao"
+ },
+ "lv": {
+ "code": "lv",
+ "name": "Latvian"
+ },
+ "ln": {
+ "code": "ln",
+ "name": "Lingala"
+ },
+ "lt": {
+ "code": "lt",
+ "name": "Lithuanian"
+ },
+ "dsb": {
+ "code": "dsb",
+ "name": "Lower Sorbian"
+ },
+ "lu": {
+ "code": "lu",
+ "name": "Luba-Katanga"
+ },
+ "luo": {
+ "code": "luo",
+ "name": "Luo"
+ },
+ "lb": {
+ "code": "lb",
+ "name": "Luxembourgish"
+ },
+ "luy": {
+ "code": "luy",
+ "name": "Luyia"
+ },
+ "mk": {
+ "code": "mk",
+ "name": "Macedonian"
+ },
+ "jmc": {
+ "code": "jmc",
+ "name": "Machame"
+ },
+ "mgh": {
+ "code": "mgh",
+ "name": "Makhuwa-Meetto"
+ },
+ "kde": {
+ "code": "kde",
+ "name": "Makonde"
+ },
+ "mg": {
+ "code": "mg",
+ "name": "Malagasy"
+ },
+ "ml": {
+ "code": "ml",
+ "name": "Malayalam"
+ },
+ "ms": {
+ "code": "ms",
+ "name": "male"
+ },
+ "mt": {
+ "code": "mt",
+ "name": "Maltese"
+ },
+ "mr": {
+ "code": "mr",
+ "name": "Marathi"
+ },
+ "mas": {
+ "code": "mas",
+ "name": "Masai"
+ },
+ "mer": {
+ "code": "mer",
+ "name": "Meru"
+ },
+ "mn": {
+ "code": "mn",
+ "name": "Mongolian"
+ },
+ "mua": {
+ "code": "mua",
+ "name": "Mundang"
+ },
+ "naq": {
+ "code": "naq",
+ "name": "Nama"
+ },
+ "ne": {
+ "code": "ne",
+ "name": "nepale"
+ },
+ "jgo": {
+ "code": "jgo",
+ "name": "Ngomba"
+ },
+ "nl-BE": {
+ "code": "nl-BE",
+ "name": "nl_BE"
+ },
+ "nd": {
+ "code": "nd",
+ "name": "North Ndebele"
+ },
+ "se": {
+ "code": "se",
+ "name": "Northern Sami"
+ },
+ "nb": {
+ "code": "nb",
+ "name": "Norwegian Bokmål"
+ },
+ "nn": {
+ "code": "nn",
+ "name": "Norwegian Nynorsk"
+ },
+ "nus": {
+ "code": "nus",
+ "name": "Nuer"
+ },
+ "nyn": {
+ "code": "nyn",
+ "name": "Nyankole"
+ },
+ "nl": {
+ "code": "nl",
+ "name": "olande"
+ },
+ "or": {
+ "code": "or",
+ "name": "Oriya"
+ },
+ "ur": {
+ "code": "ur",
+ "name": "ourdou"
+ },
+ "ps": {
+ "code": "ps",
+ "name": "Pashto"
+ },
+ "pa": {
+ "code": "pa",
+ "name": "penjabi"
+ },
+ "fa": {
+ "code": "fa",
+ "name": "persan"
+ },
+ "pl": {
+ "code": "pl",
+ "name": "polone"
+ },
+ "pt": {
+ "code": "pt",
+ "name": "portige"
+ },
+ "pt-BR": {
+ "code": "pt-BR",
+ "name": "pt_BR"
+ },
+ "pt-PT": {
+ "code": "pt-PT",
+ "name": "pt_PT"
+ },
+ "ru": {
+ "code": "ru",
+ "name": "ris"
+ },
+ "ro-MD": {
+ "code": "ro-MD",
+ "name": "ro_MD"
+ },
+ "rm": {
+ "code": "rm",
+ "name": "Romansh"
+ },
+ "rof": {
+ "code": "rof",
+ "name": "Rombo"
+ },
+ "ro": {
+ "code": "ro",
+ "name": "roumin"
+ },
+ "rn": {
+ "code": "rn",
+ "name": "Rundi"
+ },
+ "rwk": {
+ "code": "rwk",
+ "name": "Rwa"
+ },
+ "saq": {
+ "code": "saq",
+ "name": "Samburu"
+ },
+ "sg": {
+ "code": "sg",
+ "name": "Sango"
+ },
+ "sbp": {
+ "code": "sbp",
+ "name": "Sangu"
+ },
+ "gd": {
+ "code": "gd",
+ "name": "Scottish Gaelic"
+ },
+ "seh": {
+ "code": "seh",
+ "name": "Sena"
+ },
+ "sr": {
+ "code": "sr",
+ "name": "Serbian"
+ },
+ "ksb": {
+ "code": "ksb",
+ "name": "Shambala"
+ },
+ "sn": {
+ "code": "sn",
+ "name": "Shona"
+ },
+ "si": {
+ "code": "si",
+ "name": "Sinhala"
+ },
+ "zh": {
+ "code": "zh",
+ "name": "sinwa, mandarin"
+ },
+ "sk": {
+ "code": "sk",
+ "name": "Slovak"
+ },
+ "sl": {
+ "code": "sl",
+ "name": "Slovenian"
+ },
+ "xog": {
+ "code": "xog",
+ "name": "Soga"
+ },
+ "so": {
+ "code": "so",
+ "name": "somali"
+ },
+ "zgh": {
+ "code": "zgh",
+ "name": "Standard Moroccan Tamazight"
+ },
+ "sw": {
+ "code": "sw",
+ "name": "Swahili"
+ },
+ "sv": {
+ "code": "sv",
+ "name": "swedwa"
+ },
+ "gsw": {
+ "code": "gsw",
+ "name": "Swiss German"
+ },
+ "shi": {
+ "code": "shi",
+ "name": "Tachelhit"
+ },
+ "dav": {
+ "code": "dav",
+ "name": "Taita"
+ },
+ "ta": {
+ "code": "ta",
+ "name": "tamoul"
+ },
+ "twq": {
+ "code": "twq",
+ "name": "Tasawaq"
+ },
+ "cs": {
+ "code": "cs",
+ "name": "tchek"
+ },
+ "te": {
+ "code": "te",
+ "name": "Telugu"
+ },
+ "teo": {
+ "code": "teo",
+ "name": "Teso"
+ },
+ "th": {
+ "code": "th",
+ "name": "thaï"
+ },
+ "bo": {
+ "code": "bo",
+ "name": "Tibetan"
+ },
+ "ti": {
+ "code": "ti",
+ "name": "Tigrinya"
+ },
+ "tr": {
+ "code": "tr",
+ "name": "tirk"
+ },
+ "to": {
+ "code": "to",
+ "name": "Tongan"
+ },
+ "hsb": {
+ "code": "hsb",
+ "name": "Upper Sorbian"
+ },
+ "ug": {
+ "code": "ug",
+ "name": "Uyghur"
+ },
+ "uz": {
+ "code": "uz",
+ "name": "Uzbek"
+ },
+ "vai": {
+ "code": "vai",
+ "name": "Vai"
+ },
+ "vi": {
+ "code": "vi",
+ "name": "vietnamien"
+ },
+ "vun": {
+ "code": "vun",
+ "name": "Vunjo"
+ },
+ "wae": {
+ "code": "wae",
+ "name": "Walser"
+ },
+ "cy": {
+ "code": "cy",
+ "name": "Welsh"
+ },
+ "fy": {
+ "code": "fy",
+ "name": "Western Frisian"
+ },
+ "yav": {
+ "code": "yav",
+ "name": "Yangben"
+ },
+ "yo": {
+ "code": "yo",
+ "name": "yoruba"
+ },
+ "ja": {
+ "code": "ja",
+ "name": "zapone"
+ },
+ "dje": {
+ "code": "dje",
+ "name": "Zarma"
+ },
+ "zh-Hans": {
+ "code": "zh-Hans",
+ "name": "zh_Hans"
+ },
+ "zh-Hant": {
+ "code": "zh-Hant",
+ "name": "zh_Hant"
+ },
+ "zu": {
+ "code": "zu",
+ "name": "zoulou"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/language/mg.json b/library/intl/resources/language/mg.json
new file mode 100644
index 000000000..7714fd25a
--- /dev/null
+++ b/library/intl/resources/language/mg.json
@@ -0,0 +1,738 @@
+{
+ "af": {
+ "code": "af",
+ "name": "Afrikaans"
+ },
+ "agq": {
+ "code": "agq",
+ "name": "Aghem"
+ },
+ "ak": {
+ "code": "ak",
+ "name": "Akan"
+ },
+ "sq": {
+ "code": "sq",
+ "name": "Albanian"
+ },
+ "de": {
+ "code": "de",
+ "name": "Alemanina"
+ },
+ "am": {
+ "code": "am",
+ "name": "Amharika"
+ },
+ "en": {
+ "code": "en",
+ "name": "Anglisy"
+ },
+ "ar-001": {
+ "code": "ar-001",
+ "name": "ar_001"
+ },
+ "ar": {
+ "code": "ar",
+ "name": "Arabo"
+ },
+ "hy": {
+ "code": "hy",
+ "name": "Armenian"
+ },
+ "ast": {
+ "code": "ast",
+ "name": "Asturian"
+ },
+ "asa": {
+ "code": "asa",
+ "name": "Asu"
+ },
+ "az": {
+ "code": "az",
+ "name": "Azerbaijani"
+ },
+ "ksf": {
+ "code": "ksf",
+ "name": "Bafia"
+ },
+ "bm": {
+ "code": "bm",
+ "name": "Bambara"
+ },
+ "bas": {
+ "code": "bas",
+ "name": "Basaa"
+ },
+ "eu": {
+ "code": "eu",
+ "name": "Basque"
+ },
+ "bez": {
+ "code": "bez",
+ "name": "Bena"
+ },
+ "bn": {
+ "code": "bn",
+ "name": "Bengali"
+ },
+ "be": {
+ "code": "be",
+ "name": "Bielorosy"
+ },
+ "bg": {
+ "code": "bg",
+ "name": "Biolgara"
+ },
+ "my": {
+ "code": "my",
+ "name": "Birmana"
+ },
+ "brx": {
+ "code": "brx",
+ "name": "Bodo"
+ },
+ "bs": {
+ "code": "bs",
+ "name": "Bosnian"
+ },
+ "br": {
+ "code": "br",
+ "name": "Breton"
+ },
+ "ca": {
+ "code": "ca",
+ "name": "Catalan"
+ },
+ "tzm": {
+ "code": "tzm",
+ "name": "Central Atlas Tamazight"
+ },
+ "chr": {
+ "code": "chr",
+ "name": "Cherokee"
+ },
+ "cgg": {
+ "code": "cgg",
+ "name": "Chiga"
+ },
+ "ksh": {
+ "code": "ksh",
+ "name": "Colognian"
+ },
+ "swc": {
+ "code": "swc",
+ "name": "Congo Swahili"
+ },
+ "hr": {
+ "code": "hr",
+ "name": "Croatian"
+ },
+ "da": {
+ "code": "da",
+ "name": "Danish"
+ },
+ "de-AT": {
+ "code": "de-AT",
+ "name": "de_AT"
+ },
+ "de-CH": {
+ "code": "de-CH",
+ "name": "de_CH"
+ },
+ "dz": {
+ "code": "dz",
+ "name": "Dzongkha"
+ },
+ "ebu": {
+ "code": "ebu",
+ "name": "Embu"
+ },
+ "en-AU": {
+ "code": "en-AU",
+ "name": "en_AU"
+ },
+ "en-CA": {
+ "code": "en-CA",
+ "name": "en_CA"
+ },
+ "en-GB": {
+ "code": "en-GB",
+ "name": "en_GB"
+ },
+ "en-US": {
+ "code": "en-US",
+ "name": "en_US"
+ },
+ "es-ES": {
+ "code": "es-ES",
+ "name": "es_ES"
+ },
+ "es-MX": {
+ "code": "es-MX",
+ "name": "es_MX"
+ },
+ "es": {
+ "code": "es",
+ "name": "Espaniola"
+ },
+ "eo": {
+ "code": "eo",
+ "name": "Esperanto"
+ },
+ "et": {
+ "code": "et",
+ "name": "Estonian"
+ },
+ "ee": {
+ "code": "ee",
+ "name": "Ewe"
+ },
+ "ewo": {
+ "code": "ewo",
+ "name": "Ewondo"
+ },
+ "fo": {
+ "code": "fo",
+ "name": "Faroese"
+ },
+ "fil": {
+ "code": "fil",
+ "name": "Filipino"
+ },
+ "fi": {
+ "code": "fi",
+ "name": "Finnish"
+ },
+ "fr-CA": {
+ "code": "fr-CA",
+ "name": "fr_CA"
+ },
+ "fr-CH": {
+ "code": "fr-CH",
+ "name": "fr_CH"
+ },
+ "fr": {
+ "code": "fr",
+ "name": "Frantsay"
+ },
+ "fur": {
+ "code": "fur",
+ "name": "Friulian"
+ },
+ "ff": {
+ "code": "ff",
+ "name": "Fulah"
+ },
+ "gl": {
+ "code": "gl",
+ "name": "Galician"
+ },
+ "lg": {
+ "code": "lg",
+ "name": "Ganda"
+ },
+ "ka": {
+ "code": "ka",
+ "name": "Georgian"
+ },
+ "el": {
+ "code": "el",
+ "name": "Grika"
+ },
+ "gu": {
+ "code": "gu",
+ "name": "Gujarati"
+ },
+ "guz": {
+ "code": "guz",
+ "name": "Gusii"
+ },
+ "ha": {
+ "code": "ha",
+ "name": "haoussa"
+ },
+ "he": {
+ "code": "he",
+ "name": "Hebrew"
+ },
+ "hi": {
+ "code": "hi",
+ "name": "hindi"
+ },
+ "nl": {
+ "code": "nl",
+ "name": "Holandey"
+ },
+ "hu": {
+ "code": "hu",
+ "name": "hongroà"
+ },
+ "is": {
+ "code": "is",
+ "name": "Icelandic"
+ },
+ "id": {
+ "code": "id",
+ "name": "Indonezianina"
+ },
+ "ga": {
+ "code": "ga",
+ "name": "Irish"
+ },
+ "it": {
+ "code": "it",
+ "name": "Italianina"
+ },
+ "ja": {
+ "code": "ja",
+ "name": "Japoney"
+ },
+ "dyo": {
+ "code": "dyo",
+ "name": "Jola-Fonyi"
+ },
+ "kea": {
+ "code": "kea",
+ "name": "Kabuverdianu"
+ },
+ "kab": {
+ "code": "kab",
+ "name": "Kabyle"
+ },
+ "kl": {
+ "code": "kl",
+ "name": "Kalaallisut"
+ },
+ "kln": {
+ "code": "kln",
+ "name": "Kalenjin"
+ },
+ "kam": {
+ "code": "kam",
+ "name": "Kamba"
+ },
+ "kn": {
+ "code": "kn",
+ "name": "Kannada"
+ },
+ "ks": {
+ "code": "ks",
+ "name": "Kashmiri"
+ },
+ "kk": {
+ "code": "kk",
+ "name": "Kazakh"
+ },
+ "km": {
+ "code": "km",
+ "name": "khmer"
+ },
+ "ki": {
+ "code": "ki",
+ "name": "Kikuyu"
+ },
+ "ko": {
+ "code": "ko",
+ "name": "Koreanina"
+ },
+ "khq": {
+ "code": "khq",
+ "name": "Koyra Chiini"
+ },
+ "ses": {
+ "code": "ses",
+ "name": "Koyraboro Senni"
+ },
+ "nmg": {
+ "code": "nmg",
+ "name": "Kwasio"
+ },
+ "ky": {
+ "code": "ky",
+ "name": "Kyrgyz"
+ },
+ "lag": {
+ "code": "lag",
+ "name": "Langi"
+ },
+ "lo": {
+ "code": "lo",
+ "name": "Lao"
+ },
+ "lv": {
+ "code": "lv",
+ "name": "Latvian"
+ },
+ "ln": {
+ "code": "ln",
+ "name": "Lingala"
+ },
+ "lt": {
+ "code": "lt",
+ "name": "Lithuanian"
+ },
+ "dsb": {
+ "code": "dsb",
+ "name": "Lower Sorbian"
+ },
+ "lu": {
+ "code": "lu",
+ "name": "Luba-Katanga"
+ },
+ "luo": {
+ "code": "luo",
+ "name": "Luo"
+ },
+ "lb": {
+ "code": "lb",
+ "name": "Luxembourgish"
+ },
+ "luy": {
+ "code": "luy",
+ "name": "Luyia"
+ },
+ "mk": {
+ "code": "mk",
+ "name": "Macedonian"
+ },
+ "jmc": {
+ "code": "jmc",
+ "name": "Machame"
+ },
+ "mgh": {
+ "code": "mgh",
+ "name": "Makhuwa-Meetto"
+ },
+ "kde": {
+ "code": "kde",
+ "name": "Makonde"
+ },
+ "mg": {
+ "code": "mg",
+ "name": "Malagasy"
+ },
+ "ms": {
+ "code": "ms",
+ "name": "Malay"
+ },
+ "ml": {
+ "code": "ml",
+ "name": "Malayalam"
+ },
+ "mt": {
+ "code": "mt",
+ "name": "Maltese"
+ },
+ "mr": {
+ "code": "mr",
+ "name": "Marathi"
+ },
+ "mas": {
+ "code": "mas",
+ "name": "Masai"
+ },
+ "mer": {
+ "code": "mer",
+ "name": "Meru"
+ },
+ "mn": {
+ "code": "mn",
+ "name": "Mongolian"
+ },
+ "mfe": {
+ "code": "mfe",
+ "name": "Morisyen"
+ },
+ "mua": {
+ "code": "mua",
+ "name": "Mundang"
+ },
+ "naq": {
+ "code": "naq",
+ "name": "Nama"
+ },
+ "ne": {
+ "code": "ne",
+ "name": "Nepale"
+ },
+ "jgo": {
+ "code": "jgo",
+ "name": "Ngomba"
+ },
+ "nl-BE": {
+ "code": "nl-BE",
+ "name": "nl_BE"
+ },
+ "nd": {
+ "code": "nd",
+ "name": "North Ndebele"
+ },
+ "se": {
+ "code": "se",
+ "name": "Northern Sami"
+ },
+ "nb": {
+ "code": "nb",
+ "name": "Norwegian Bokmål"
+ },
+ "nn": {
+ "code": "nn",
+ "name": "Norwegian Nynorsk"
+ },
+ "nus": {
+ "code": "nus",
+ "name": "Nuer"
+ },
+ "nyn": {
+ "code": "nyn",
+ "name": "Nyankole"
+ },
+ "uk": {
+ "code": "uk",
+ "name": "Okrainianina"
+ },
+ "ur": {
+ "code": "ur",
+ "name": "Ordò"
+ },
+ "or": {
+ "code": "or",
+ "name": "Oriya"
+ },
+ "ps": {
+ "code": "ps",
+ "name": "Pashto"
+ },
+ "pa": {
+ "code": "pa",
+ "name": "Penjabi"
+ },
+ "fa": {
+ "code": "fa",
+ "name": "Persa"
+ },
+ "pl": {
+ "code": "pl",
+ "name": "Poloney"
+ },
+ "pt": {
+ "code": "pt",
+ "name": "Portiogey"
+ },
+ "pt-BR": {
+ "code": "pt-BR",
+ "name": "pt_BR"
+ },
+ "pt-PT": {
+ "code": "pt-PT",
+ "name": "pt_PT"
+ },
+ "ro-MD": {
+ "code": "ro-MD",
+ "name": "ro_MD"
+ },
+ "ro": {
+ "code": "ro",
+ "name": "Romanianina"
+ },
+ "rm": {
+ "code": "rm",
+ "name": "Romansh"
+ },
+ "rof": {
+ "code": "rof",
+ "name": "Rombo"
+ },
+ "ru": {
+ "code": "ru",
+ "name": "Rosianina"
+ },
+ "rn": {
+ "code": "rn",
+ "name": "Rundi"
+ },
+ "rwk": {
+ "code": "rwk",
+ "name": "Rwa"
+ },
+ "saq": {
+ "code": "saq",
+ "name": "Samburu"
+ },
+ "sg": {
+ "code": "sg",
+ "name": "Sango"
+ },
+ "sbp": {
+ "code": "sbp",
+ "name": "Sangu"
+ },
+ "gd": {
+ "code": "gd",
+ "name": "Scottish Gaelic"
+ },
+ "seh": {
+ "code": "seh",
+ "name": "Sena"
+ },
+ "sr": {
+ "code": "sr",
+ "name": "Serbian"
+ },
+ "ksb": {
+ "code": "ksb",
+ "name": "Shambala"
+ },
+ "sn": {
+ "code": "sn",
+ "name": "Shona"
+ },
+ "si": {
+ "code": "si",
+ "name": "Sinhala"
+ },
+ "zh": {
+ "code": "zh",
+ "name": "Sinoa, Mandarin"
+ },
+ "sk": {
+ "code": "sk",
+ "name": "Slovak"
+ },
+ "sl": {
+ "code": "sl",
+ "name": "Slovenian"
+ },
+ "xog": {
+ "code": "xog",
+ "name": "Soga"
+ },
+ "sv": {
+ "code": "sv",
+ "name": "Soisa"
+ },
+ "so": {
+ "code": "so",
+ "name": "Somalianina"
+ },
+ "zgh": {
+ "code": "zgh",
+ "name": "Standard Moroccan Tamazight"
+ },
+ "sw": {
+ "code": "sw",
+ "name": "Swahili"
+ },
+ "gsw": {
+ "code": "gsw",
+ "name": "Swiss German"
+ },
+ "shi": {
+ "code": "shi",
+ "name": "Tachelhit"
+ },
+ "th": {
+ "code": "th",
+ "name": "Taioaney"
+ },
+ "dav": {
+ "code": "dav",
+ "name": "Taita"
+ },
+ "ta": {
+ "code": "ta",
+ "name": "Tamoila"
+ },
+ "twq": {
+ "code": "twq",
+ "name": "Tasawaq"
+ },
+ "te": {
+ "code": "te",
+ "name": "Telugu"
+ },
+ "teo": {
+ "code": "teo",
+ "name": "Teso"
+ },
+ "bo": {
+ "code": "bo",
+ "name": "Tibetan"
+ },
+ "ti": {
+ "code": "ti",
+ "name": "Tigrinya"
+ },
+ "tr": {
+ "code": "tr",
+ "name": "Tiorka"
+ },
+ "to": {
+ "code": "to",
+ "name": "Tongan"
+ },
+ "cs": {
+ "code": "cs",
+ "name": "Tseky"
+ },
+ "hsb": {
+ "code": "hsb",
+ "name": "Upper Sorbian"
+ },
+ "ug": {
+ "code": "ug",
+ "name": "Uyghur"
+ },
+ "uz": {
+ "code": "uz",
+ "name": "Uzbek"
+ },
+ "vai": {
+ "code": "vai",
+ "name": "Vai"
+ },
+ "vi": {
+ "code": "vi",
+ "name": "Vietnamianina"
+ },
+ "vun": {
+ "code": "vun",
+ "name": "Vunjo"
+ },
+ "wae": {
+ "code": "wae",
+ "name": "Walser"
+ },
+ "cy": {
+ "code": "cy",
+ "name": "Welsh"
+ },
+ "fy": {
+ "code": "fy",
+ "name": "Western Frisian"
+ },
+ "yav": {
+ "code": "yav",
+ "name": "Yangben"
+ },
+ "yo": {
+ "code": "yo",
+ "name": "Yôrobà"
+ },
+ "dje": {
+ "code": "dje",
+ "name": "Zarma"
+ },
+ "zh-Hans": {
+ "code": "zh-Hans",
+ "name": "zh_Hans"
+ },
+ "zh-Hant": {
+ "code": "zh-Hant",
+ "name": "zh_Hant"
+ },
+ "zu": {
+ "code": "zu",
+ "name": "Zolò"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/language/mgh.json b/library/intl/resources/language/mgh.json
new file mode 100644
index 000000000..3d1c146b0
--- /dev/null
+++ b/library/intl/resources/language/mgh.json
@@ -0,0 +1,738 @@
+{
+ "af": {
+ "code": "af",
+ "name": "Afrikaans"
+ },
+ "agq": {
+ "code": "agq",
+ "name": "Aghem"
+ },
+ "sq": {
+ "code": "sq",
+ "name": "Albanian"
+ },
+ "ar-001": {
+ "code": "ar-001",
+ "name": "ar_001"
+ },
+ "hy": {
+ "code": "hy",
+ "name": "Armenian"
+ },
+ "ast": {
+ "code": "ast",
+ "name": "Asturian"
+ },
+ "asa": {
+ "code": "asa",
+ "name": "Asu"
+ },
+ "az": {
+ "code": "az",
+ "name": "Azerbaijani"
+ },
+ "ksf": {
+ "code": "ksf",
+ "name": "Bafia"
+ },
+ "bm": {
+ "code": "bm",
+ "name": "Bambara"
+ },
+ "bas": {
+ "code": "bas",
+ "name": "Basaa"
+ },
+ "eu": {
+ "code": "eu",
+ "name": "Basque"
+ },
+ "bez": {
+ "code": "bez",
+ "name": "Bena"
+ },
+ "brx": {
+ "code": "brx",
+ "name": "Bodo"
+ },
+ "bs": {
+ "code": "bs",
+ "name": "Bosnian"
+ },
+ "br": {
+ "code": "br",
+ "name": "Breton"
+ },
+ "ca": {
+ "code": "ca",
+ "name": "Catalan"
+ },
+ "tzm": {
+ "code": "tzm",
+ "name": "Central Atlas Tamazight"
+ },
+ "chr": {
+ "code": "chr",
+ "name": "Cherokee"
+ },
+ "cgg": {
+ "code": "cgg",
+ "name": "Chiga"
+ },
+ "ksh": {
+ "code": "ksh",
+ "name": "Colognian"
+ },
+ "swc": {
+ "code": "swc",
+ "name": "Congo Swahili"
+ },
+ "hr": {
+ "code": "hr",
+ "name": "Croatian"
+ },
+ "da": {
+ "code": "da",
+ "name": "Danish"
+ },
+ "de-AT": {
+ "code": "de-AT",
+ "name": "de_AT"
+ },
+ "de-CH": {
+ "code": "de-CH",
+ "name": "de_CH"
+ },
+ "dz": {
+ "code": "dz",
+ "name": "Dzongkha"
+ },
+ "ebu": {
+ "code": "ebu",
+ "name": "Embu"
+ },
+ "en-AU": {
+ "code": "en-AU",
+ "name": "en_AU"
+ },
+ "en-CA": {
+ "code": "en-CA",
+ "name": "en_CA"
+ },
+ "en-GB": {
+ "code": "en-GB",
+ "name": "en_GB"
+ },
+ "en-US": {
+ "code": "en-US",
+ "name": "en_US"
+ },
+ "es-ES": {
+ "code": "es-ES",
+ "name": "es_ES"
+ },
+ "es-MX": {
+ "code": "es-MX",
+ "name": "es_MX"
+ },
+ "eo": {
+ "code": "eo",
+ "name": "Esperanto"
+ },
+ "et": {
+ "code": "et",
+ "name": "Estonian"
+ },
+ "ee": {
+ "code": "ee",
+ "name": "Ewe"
+ },
+ "ewo": {
+ "code": "ewo",
+ "name": "Ewondo"
+ },
+ "fo": {
+ "code": "fo",
+ "name": "Faroese"
+ },
+ "fil": {
+ "code": "fil",
+ "name": "Filipino"
+ },
+ "fi": {
+ "code": "fi",
+ "name": "Finnish"
+ },
+ "fr-CA": {
+ "code": "fr-CA",
+ "name": "fr_CA"
+ },
+ "fr-CH": {
+ "code": "fr-CH",
+ "name": "fr_CH"
+ },
+ "fur": {
+ "code": "fur",
+ "name": "Friulian"
+ },
+ "ff": {
+ "code": "ff",
+ "name": "Fulah"
+ },
+ "gl": {
+ "code": "gl",
+ "name": "Galician"
+ },
+ "lg": {
+ "code": "lg",
+ "name": "Ganda"
+ },
+ "ka": {
+ "code": "ka",
+ "name": "Georgian"
+ },
+ "gu": {
+ "code": "gu",
+ "name": "Gujarati"
+ },
+ "guz": {
+ "code": "guz",
+ "name": "Gusii"
+ },
+ "he": {
+ "code": "he",
+ "name": "Hebrew"
+ },
+ "fa": {
+ "code": "fa",
+ "name": "Iajemi"
+ },
+ "ar": {
+ "code": "ar",
+ "name": "Iarabu"
+ },
+ "bn": {
+ "code": "bn",
+ "name": "Ibangla"
+ },
+ "be": {
+ "code": "be",
+ "name": "Ibelausi"
+ },
+ "bg": {
+ "code": "bg",
+ "name": "Ibulgaria"
+ },
+ "my": {
+ "code": "my",
+ "name": "Iburma"
+ },
+ "is": {
+ "code": "is",
+ "name": "Icelandic"
+ },
+ "cs": {
+ "code": "cs",
+ "name": "Icheki"
+ },
+ "zh": {
+ "code": "zh",
+ "name": "Ichina"
+ },
+ "fr": {
+ "code": "fr",
+ "name": "Ifaransa"
+ },
+ "el": {
+ "code": "el",
+ "name": "Igiriki"
+ },
+ "ha": {
+ "code": "ha",
+ "name": "Ihausa"
+ },
+ "hi": {
+ "code": "hi",
+ "name": "Ihindi"
+ },
+ "es": {
+ "code": "es",
+ "name": "Ihispaniola"
+ },
+ "nl": {
+ "code": "nl",
+ "name": "Iholanzi"
+ },
+ "hu": {
+ "code": "hu",
+ "name": "Ihungari"
+ },
+ "ur": {
+ "code": "ur",
+ "name": "Ihurdu"
+ },
+ "ja": {
+ "code": "ja",
+ "name": "Ijapani"
+ },
+ "de": {
+ "code": "de",
+ "name": "Ijerimani"
+ },
+ "km": {
+ "code": "km",
+ "name": "Ikambodia"
+ },
+ "ak": {
+ "code": "ak",
+ "name": "Ikan"
+ },
+ "ko": {
+ "code": "ko",
+ "name": "Ikorea"
+ },
+ "ms": {
+ "code": "ms",
+ "name": "Imalesia"
+ },
+ "am": {
+ "code": "am",
+ "name": "Imhari"
+ },
+ "id": {
+ "code": "id",
+ "name": "Indonesian"
+ },
+ "ne": {
+ "code": "ne",
+ "name": "Inepali"
+ },
+ "en": {
+ "code": "en",
+ "name": "Ingilishi"
+ },
+ "pl": {
+ "code": "pl",
+ "name": "Ipolandi"
+ },
+ "pa": {
+ "code": "pa",
+ "name": "Ipunjabi"
+ },
+ "ga": {
+ "code": "ga",
+ "name": "Irish"
+ },
+ "ru": {
+ "code": "ru",
+ "name": "Irisi"
+ },
+ "ro": {
+ "code": "ro",
+ "name": "Iromania"
+ },
+ "so": {
+ "code": "so",
+ "name": "Isomali"
+ },
+ "sv": {
+ "code": "sv",
+ "name": "Iswidi"
+ },
+ "th": {
+ "code": "th",
+ "name": "Itailandi"
+ },
+ "it": {
+ "code": "it",
+ "name": "Italiano"
+ },
+ "ta": {
+ "code": "ta",
+ "name": "Itamil"
+ },
+ "tr": {
+ "code": "tr",
+ "name": "Ituruki"
+ },
+ "uk": {
+ "code": "uk",
+ "name": "Iukran"
+ },
+ "vi": {
+ "code": "vi",
+ "name": "Ivyetinamu"
+ },
+ "yo": {
+ "code": "yo",
+ "name": "Iyoruba"
+ },
+ "zu": {
+ "code": "zu",
+ "name": "Izulu"
+ },
+ "dyo": {
+ "code": "dyo",
+ "name": "Jola-Fonyi"
+ },
+ "kea": {
+ "code": "kea",
+ "name": "Kabuverdianu"
+ },
+ "kab": {
+ "code": "kab",
+ "name": "Kabyle"
+ },
+ "kl": {
+ "code": "kl",
+ "name": "Kalaallisut"
+ },
+ "kln": {
+ "code": "kln",
+ "name": "Kalenjin"
+ },
+ "kam": {
+ "code": "kam",
+ "name": "Kamba"
+ },
+ "kn": {
+ "code": "kn",
+ "name": "Kannada"
+ },
+ "ks": {
+ "code": "ks",
+ "name": "Kashmiri"
+ },
+ "kk": {
+ "code": "kk",
+ "name": "Kazakh"
+ },
+ "ki": {
+ "code": "ki",
+ "name": "Kikuyu"
+ },
+ "khq": {
+ "code": "khq",
+ "name": "Koyra Chiini"
+ },
+ "ses": {
+ "code": "ses",
+ "name": "Koyraboro Senni"
+ },
+ "nmg": {
+ "code": "nmg",
+ "name": "Kwasio"
+ },
+ "ky": {
+ "code": "ky",
+ "name": "Kyrgyz"
+ },
+ "lag": {
+ "code": "lag",
+ "name": "Langi"
+ },
+ "lo": {
+ "code": "lo",
+ "name": "Lao"
+ },
+ "lv": {
+ "code": "lv",
+ "name": "Latvian"
+ },
+ "ln": {
+ "code": "ln",
+ "name": "Lingala"
+ },
+ "lt": {
+ "code": "lt",
+ "name": "Lithuanian"
+ },
+ "dsb": {
+ "code": "dsb",
+ "name": "Lower Sorbian"
+ },
+ "lu": {
+ "code": "lu",
+ "name": "Luba-Katanga"
+ },
+ "luo": {
+ "code": "luo",
+ "name": "Luo"
+ },
+ "lb": {
+ "code": "lb",
+ "name": "Luxembourgish"
+ },
+ "luy": {
+ "code": "luy",
+ "name": "Luyia"
+ },
+ "mk": {
+ "code": "mk",
+ "name": "Macedonian"
+ },
+ "jmc": {
+ "code": "jmc",
+ "name": "Machame"
+ },
+ "kde": {
+ "code": "kde",
+ "name": "Makonde"
+ },
+ "mgh": {
+ "code": "mgh",
+ "name": "Makua"
+ },
+ "mg": {
+ "code": "mg",
+ "name": "Malagasy"
+ },
+ "ml": {
+ "code": "ml",
+ "name": "Malayalam"
+ },
+ "mt": {
+ "code": "mt",
+ "name": "Maltese"
+ },
+ "mr": {
+ "code": "mr",
+ "name": "Marathi"
+ },
+ "mas": {
+ "code": "mas",
+ "name": "Masai"
+ },
+ "mer": {
+ "code": "mer",
+ "name": "Meru"
+ },
+ "mn": {
+ "code": "mn",
+ "name": "Mongolian"
+ },
+ "mfe": {
+ "code": "mfe",
+ "name": "Morisyen"
+ },
+ "mua": {
+ "code": "mua",
+ "name": "Mundang"
+ },
+ "naq": {
+ "code": "naq",
+ "name": "Nama"
+ },
+ "jgo": {
+ "code": "jgo",
+ "name": "Ngomba"
+ },
+ "nl-BE": {
+ "code": "nl-BE",
+ "name": "nl_BE"
+ },
+ "nd": {
+ "code": "nd",
+ "name": "North Ndebele"
+ },
+ "se": {
+ "code": "se",
+ "name": "Northern Sami"
+ },
+ "nb": {
+ "code": "nb",
+ "name": "Norwegian Bokmål"
+ },
+ "nn": {
+ "code": "nn",
+ "name": "Norwegian Nynorsk"
+ },
+ "pt": {
+ "code": "pt",
+ "name": "Nreno"
+ },
+ "nus": {
+ "code": "nus",
+ "name": "Nuer"
+ },
+ "nyn": {
+ "code": "nyn",
+ "name": "Nyankole"
+ },
+ "or": {
+ "code": "or",
+ "name": "Oriya"
+ },
+ "ps": {
+ "code": "ps",
+ "name": "Pashto"
+ },
+ "pt-BR": {
+ "code": "pt-BR",
+ "name": "pt_BR"
+ },
+ "pt-PT": {
+ "code": "pt-PT",
+ "name": "pt_PT"
+ },
+ "ro-MD": {
+ "code": "ro-MD",
+ "name": "ro_MD"
+ },
+ "rm": {
+ "code": "rm",
+ "name": "Romansh"
+ },
+ "rof": {
+ "code": "rof",
+ "name": "Rombo"
+ },
+ "rn": {
+ "code": "rn",
+ "name": "Rundi"
+ },
+ "rwk": {
+ "code": "rwk",
+ "name": "Rwa"
+ },
+ "saq": {
+ "code": "saq",
+ "name": "Samburu"
+ },
+ "sg": {
+ "code": "sg",
+ "name": "Sango"
+ },
+ "sbp": {
+ "code": "sbp",
+ "name": "Sangu"
+ },
+ "gd": {
+ "code": "gd",
+ "name": "Scottish Gaelic"
+ },
+ "seh": {
+ "code": "seh",
+ "name": "Sena"
+ },
+ "sr": {
+ "code": "sr",
+ "name": "Serbian"
+ },
+ "ksb": {
+ "code": "ksb",
+ "name": "Shambala"
+ },
+ "sn": {
+ "code": "sn",
+ "name": "Shona"
+ },
+ "si": {
+ "code": "si",
+ "name": "Sinhala"
+ },
+ "sk": {
+ "code": "sk",
+ "name": "Slovak"
+ },
+ "sl": {
+ "code": "sl",
+ "name": "Slovenian"
+ },
+ "xog": {
+ "code": "xog",
+ "name": "Soga"
+ },
+ "zgh": {
+ "code": "zgh",
+ "name": "Standard Moroccan Tamazight"
+ },
+ "sw": {
+ "code": "sw",
+ "name": "Swahili"
+ },
+ "gsw": {
+ "code": "gsw",
+ "name": "Swiss German"
+ },
+ "shi": {
+ "code": "shi",
+ "name": "Tachelhit"
+ },
+ "dav": {
+ "code": "dav",
+ "name": "Taita"
+ },
+ "twq": {
+ "code": "twq",
+ "name": "Tasawaq"
+ },
+ "te": {
+ "code": "te",
+ "name": "Telugu"
+ },
+ "teo": {
+ "code": "teo",
+ "name": "Teso"
+ },
+ "bo": {
+ "code": "bo",
+ "name": "Tibetan"
+ },
+ "ti": {
+ "code": "ti",
+ "name": "Tigrinya"
+ },
+ "to": {
+ "code": "to",
+ "name": "Tongan"
+ },
+ "hsb": {
+ "code": "hsb",
+ "name": "Upper Sorbian"
+ },
+ "ug": {
+ "code": "ug",
+ "name": "Uyghur"
+ },
+ "uz": {
+ "code": "uz",
+ "name": "Uzbek"
+ },
+ "vai": {
+ "code": "vai",
+ "name": "Vai"
+ },
+ "vun": {
+ "code": "vun",
+ "name": "Vunjo"
+ },
+ "wae": {
+ "code": "wae",
+ "name": "Walser"
+ },
+ "cy": {
+ "code": "cy",
+ "name": "Welsh"
+ },
+ "fy": {
+ "code": "fy",
+ "name": "Western Frisian"
+ },
+ "yav": {
+ "code": "yav",
+ "name": "Yangben"
+ },
+ "dje": {
+ "code": "dje",
+ "name": "Zarma"
+ },
+ "zh-Hans": {
+ "code": "zh-Hans",
+ "name": "zh_Hans"
+ },
+ "zh-Hant": {
+ "code": "zh-Hant",
+ "name": "zh_Hant"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/language/mk.json b/library/intl/resources/language/mk.json
new file mode 100644
index 000000000..9a4dc6f42
--- /dev/null
+++ b/library/intl/resources/language/mk.json
@@ -0,0 +1,738 @@
+{
+ "de-AT": {
+ "code": "de-AT",
+ "name": "de_AT"
+ },
+ "de-CH": {
+ "code": "de-CH",
+ "name": "de_CH"
+ },
+ "en-AU": {
+ "code": "en-AU",
+ "name": "en_AU"
+ },
+ "en-CA": {
+ "code": "en-CA",
+ "name": "en_CA"
+ },
+ "es-MX": {
+ "code": "es-MX",
+ "name": "es_MX"
+ },
+ "fr-CH": {
+ "code": "fr-CH",
+ "name": "fr_CH"
+ },
+ "nl-BE": {
+ "code": "nl-BE",
+ "name": "nl_BE"
+ },
+ "pt-BR": {
+ "code": "pt-BR",
+ "name": "pt_BR"
+ },
+ "agq": {
+ "code": "agq",
+ "name": "агемÑки"
+ },
+ "az": {
+ "code": "az",
+ "name": "азербејџанÑки"
+ },
+ "ak": {
+ "code": "ak",
+ "name": "аканÑки"
+ },
+ "sq": {
+ "code": "sq",
+ "name": "албанÑки"
+ },
+ "en-US": {
+ "code": "en-US",
+ "name": "американÑки англиÑки"
+ },
+ "am": {
+ "code": "am",
+ "name": "амхарÑки"
+ },
+ "en": {
+ "code": "en",
+ "name": "англиÑки"
+ },
+ "ar": {
+ "code": "ar",
+ "name": "арапÑки"
+ },
+ "ast": {
+ "code": "ast",
+ "name": "аÑтурÑки"
+ },
+ "asa": {
+ "code": "asa",
+ "name": "аÑу"
+ },
+ "af": {
+ "code": "af",
+ "name": "африканÑ"
+ },
+ "bm": {
+ "code": "bm",
+ "name": "бамбара"
+ },
+ "bas": {
+ "code": "bas",
+ "name": "баÑа"
+ },
+ "eu": {
+ "code": "eu",
+ "name": "баÑкиÑки"
+ },
+ "ksf": {
+ "code": "ksf",
+ "name": "бафија"
+ },
+ "be": {
+ "code": "be",
+ "name": "белоруÑки"
+ },
+ "bez": {
+ "code": "bez",
+ "name": "бена"
+ },
+ "bn": {
+ "code": "bn",
+ "name": "бенгалÑки"
+ },
+ "brx": {
+ "code": "brx",
+ "name": "бодо"
+ },
+ "bs": {
+ "code": "bs",
+ "name": "боÑанÑки"
+ },
+ "br": {
+ "code": "br",
+ "name": "бретонÑки"
+ },
+ "en-GB": {
+ "code": "en-GB",
+ "name": "британÑки англиÑки"
+ },
+ "bg": {
+ "code": "bg",
+ "name": "бугарÑки"
+ },
+ "my": {
+ "code": "my",
+ "name": "бурманÑки"
+ },
+ "vai": {
+ "code": "vai",
+ "name": "вај"
+ },
+ "wae": {
+ "code": "wae",
+ "name": "валÑер"
+ },
+ "cy": {
+ "code": "cy",
+ "name": "велшки"
+ },
+ "vi": {
+ "code": "vi",
+ "name": "виетнамÑки"
+ },
+ "vun": {
+ "code": "vun",
+ "name": "вунџо"
+ },
+ "gl": {
+ "code": "gl",
+ "name": "галициÑки"
+ },
+ "lg": {
+ "code": "lg",
+ "name": "ганда"
+ },
+ "de": {
+ "code": "de",
+ "name": "германÑки"
+ },
+ "hsb": {
+ "code": "hsb",
+ "name": "горнолужички"
+ },
+ "ka": {
+ "code": "ka",
+ "name": "грузиÑки"
+ },
+ "el": {
+ "code": "el",
+ "name": "грчки"
+ },
+ "guz": {
+ "code": "guz",
+ "name": "гуÑи"
+ },
+ "gu": {
+ "code": "gu",
+ "name": "гуџарати"
+ },
+ "da": {
+ "code": "da",
+ "name": "данÑки"
+ },
+ "dsb": {
+ "code": "dsb",
+ "name": "долнолужички"
+ },
+ "ee": {
+ "code": "ee",
+ "name": "еве"
+ },
+ "ewo": {
+ "code": "ewo",
+ "name": "евондо"
+ },
+ "ebu": {
+ "code": "ebu",
+ "name": "ембу"
+ },
+ "hy": {
+ "code": "hy",
+ "name": "ерменÑки"
+ },
+ "eo": {
+ "code": "eo",
+ "name": "еÑперанто"
+ },
+ "et": {
+ "code": "et",
+ "name": "еÑтонÑки"
+ },
+ "fy": {
+ "code": "fy",
+ "name": "западнофризиÑки"
+ },
+ "dje": {
+ "code": "dje",
+ "name": "зарма"
+ },
+ "zu": {
+ "code": "zu",
+ "name": "зулу"
+ },
+ "dz": {
+ "code": "dz",
+ "name": "ѕонгка"
+ },
+ "id": {
+ "code": "id",
+ "name": "индонезиÑки"
+ },
+ "ga": {
+ "code": "ga",
+ "name": "ирÑки"
+ },
+ "is": {
+ "code": "is",
+ "name": "иÑландÑки"
+ },
+ "it": {
+ "code": "it",
+ "name": "италијанÑки"
+ },
+ "ja": {
+ "code": "ja",
+ "name": "јапонÑки"
+ },
+ "yav": {
+ "code": "yav",
+ "name": "јенгбен"
+ },
+ "dyo": {
+ "code": "dyo",
+ "name": "јола-фоњи"
+ },
+ "yo": {
+ "code": "yo",
+ "name": "јорупÑки"
+ },
+ "kab": {
+ "code": "kab",
+ "name": "кабилÑки"
+ },
+ "kea": {
+ "code": "kea",
+ "name": "кабувердиану"
+ },
+ "kk": {
+ "code": "kk",
+ "name": "казакÑтанÑки"
+ },
+ "kl": {
+ "code": "kl",
+ "name": "калалиÑут"
+ },
+ "kln": {
+ "code": "kln",
+ "name": "каленџин"
+ },
+ "kam": {
+ "code": "kam",
+ "name": "камба"
+ },
+ "kn": {
+ "code": "kn",
+ "name": "каннада"
+ },
+ "ca": {
+ "code": "ca",
+ "name": "каталонÑки"
+ },
+ "ks": {
+ "code": "ks",
+ "name": "кашмирÑки"
+ },
+ "nmg": {
+ "code": "nmg",
+ "name": "квазио"
+ },
+ "ki": {
+ "code": "ki",
+ "name": "кикују"
+ },
+ "zh": {
+ "code": "zh",
+ "name": "кинеÑки"
+ },
+ "ky": {
+ "code": "ky",
+ "name": "киргиÑки"
+ },
+ "km": {
+ "code": "km",
+ "name": "кмерÑки"
+ },
+ "khq": {
+ "code": "khq",
+ "name": "којра чиини"
+ },
+ "ses": {
+ "code": "ses",
+ "name": "којраборо Ñени"
+ },
+ "ksh": {
+ "code": "ksh",
+ "name": "колоњÑки"
+ },
+ "swc": {
+ "code": "swc",
+ "name": "конгоанÑки Ñвахили"
+ },
+ "ko": {
+ "code": "ko",
+ "name": "корејÑки"
+ },
+ "lag": {
+ "code": "lag",
+ "name": "ланги"
+ },
+ "lo": {
+ "code": "lo",
+ "name": "лаошки"
+ },
+ "lv": {
+ "code": "lv",
+ "name": "латвиÑки"
+ },
+ "ln": {
+ "code": "ln",
+ "name": "лингала"
+ },
+ "lt": {
+ "code": "lt",
+ "name": "литванÑки"
+ },
+ "ar-001": {
+ "code": "ar-001",
+ "name": "литературен арапÑки"
+ },
+ "lu": {
+ "code": "lu",
+ "name": "луба-катанга"
+ },
+ "luy": {
+ "code": "luy",
+ "name": "луја"
+ },
+ "lb": {
+ "code": "lb",
+ "name": "лукÑембуршки"
+ },
+ "luo": {
+ "code": "luo",
+ "name": "луо"
+ },
+ "mk": {
+ "code": "mk",
+ "name": "македонÑки"
+ },
+ "kde": {
+ "code": "kde",
+ "name": "маконде"
+ },
+ "mgh": {
+ "code": "mgh",
+ "name": "макува-мито"
+ },
+ "ml": {
+ "code": "ml",
+ "name": "малајалам"
+ },
+ "ms": {
+ "code": "ms",
+ "name": "малајÑки"
+ },
+ "mg": {
+ "code": "mg",
+ "name": "малгашки"
+ },
+ "mt": {
+ "code": "mt",
+ "name": "малтешки"
+ },
+ "mr": {
+ "code": "mr",
+ "name": "марати"
+ },
+ "mas": {
+ "code": "mas",
+ "name": "маÑајÑки"
+ },
+ "jmc": {
+ "code": "jmc",
+ "name": "мачаме"
+ },
+ "mer": {
+ "code": "mer",
+ "name": "меру"
+ },
+ "ro-MD": {
+ "code": "ro-MD",
+ "name": "молдавÑки"
+ },
+ "mn": {
+ "code": "mn",
+ "name": "монголÑки"
+ },
+ "mfe": {
+ "code": "mfe",
+ "name": "мориÑјен"
+ },
+ "mua": {
+ "code": "mua",
+ "name": "мунданг"
+ },
+ "naq": {
+ "code": "naq",
+ "name": "нама"
+ },
+ "jgo": {
+ "code": "jgo",
+ "name": "нгомба"
+ },
+ "ne": {
+ "code": "ne",
+ "name": "непалÑки"
+ },
+ "nb": {
+ "code": "nb",
+ "name": "норвешки букмол"
+ },
+ "nn": {
+ "code": "nn",
+ "name": "норвешки нинорÑк"
+ },
+ "nus": {
+ "code": "nus",
+ "name": "нуер"
+ },
+ "nyn": {
+ "code": "nyn",
+ "name": "њанколе"
+ },
+ "or": {
+ "code": "or",
+ "name": "орија"
+ },
+ "ps": {
+ "code": "ps",
+ "name": "паштунÑки"
+ },
+ "pa": {
+ "code": "pa",
+ "name": "пенџапÑки"
+ },
+ "fa": {
+ "code": "fa",
+ "name": "перÑиÑки"
+ },
+ "zh-Hans": {
+ "code": "zh-Hans",
+ "name": "поедноÑтавен кинеÑки"
+ },
+ "pl": {
+ "code": "pl",
+ "name": "полÑки"
+ },
+ "pt": {
+ "code": "pt",
+ "name": "португалÑки"
+ },
+ "pt-PT": {
+ "code": "pt-PT",
+ "name": "португалÑки (во Европа)"
+ },
+ "rm": {
+ "code": "rm",
+ "name": "ретороманÑки"
+ },
+ "ro": {
+ "code": "ro",
+ "name": "романÑки"
+ },
+ "rof": {
+ "code": "rof",
+ "name": "ромбо"
+ },
+ "rwk": {
+ "code": "rwk",
+ "name": "руа"
+ },
+ "rn": {
+ "code": "rn",
+ "name": "рунди"
+ },
+ "ru": {
+ "code": "ru",
+ "name": "руÑки"
+ },
+ "saq": {
+ "code": "saq",
+ "name": "Ñамбуру"
+ },
+ "sg": {
+ "code": "sg",
+ "name": "Ñанго"
+ },
+ "sbp": {
+ "code": "sbp",
+ "name": "Ñангу"
+ },
+ "sw": {
+ "code": "sw",
+ "name": "Ñвахили"
+ },
+ "nd": {
+ "code": "nd",
+ "name": "Ñеверен ндебеле"
+ },
+ "se": {
+ "code": "se",
+ "name": "ÑевернолапонÑки"
+ },
+ "seh": {
+ "code": "seh",
+ "name": "Ñена"
+ },
+ "si": {
+ "code": "si",
+ "name": "ÑинхалÑки"
+ },
+ "sk": {
+ "code": "sk",
+ "name": "Ñловачки"
+ },
+ "sl": {
+ "code": "sl",
+ "name": "Ñловенечки"
+ },
+ "xog": {
+ "code": "xog",
+ "name": "Ñога"
+ },
+ "so": {
+ "code": "so",
+ "name": "ÑомалиÑки"
+ },
+ "sr": {
+ "code": "sr",
+ "name": "ÑрпÑки"
+ },
+ "zgh": {
+ "code": "zgh",
+ "name": "Ñтандарден мароканÑки тамазигтÑки"
+ },
+ "twq": {
+ "code": "twq",
+ "name": "тазавак"
+ },
+ "dav": {
+ "code": "dav",
+ "name": "таита"
+ },
+ "th": {
+ "code": "th",
+ "name": "тајландÑки"
+ },
+ "ta": {
+ "code": "ta",
+ "name": "тамилÑки"
+ },
+ "shi": {
+ "code": "shi",
+ "name": "тачелхит"
+ },
+ "te": {
+ "code": "te",
+ "name": "телугу"
+ },
+ "teo": {
+ "code": "teo",
+ "name": "теÑо"
+ },
+ "bo": {
+ "code": "bo",
+ "name": "тибетÑки"
+ },
+ "ti": {
+ "code": "ti",
+ "name": "тигриња"
+ },
+ "to": {
+ "code": "to",
+ "name": "тонганÑки"
+ },
+ "zh-Hant": {
+ "code": "zh-Hant",
+ "name": "традиционален кинеÑки"
+ },
+ "tr": {
+ "code": "tr",
+ "name": "турÑки"
+ },
+ "uz": {
+ "code": "uz",
+ "name": "узбекиÑтанÑки"
+ },
+ "ug": {
+ "code": "ug",
+ "name": "ујгурÑки"
+ },
+ "uk": {
+ "code": "uk",
+ "name": "украинÑки"
+ },
+ "hu": {
+ "code": "hu",
+ "name": "унгарÑки"
+ },
+ "ur": {
+ "code": "ur",
+ "name": "урду"
+ },
+ "fo": {
+ "code": "fo",
+ "name": "фарÑки"
+ },
+ "fil": {
+ "code": "fil",
+ "name": "филипинÑки"
+ },
+ "fi": {
+ "code": "fi",
+ "name": "финÑки"
+ },
+ "fr": {
+ "code": "fr",
+ "name": "француÑки"
+ },
+ "fr-CA": {
+ "code": "fr-CA",
+ "name": "француÑки (во Канада)"
+ },
+ "ff": {
+ "code": "ff",
+ "name": "фула"
+ },
+ "fur": {
+ "code": "fur",
+ "name": "фурланÑки"
+ },
+ "ha": {
+ "code": "ha",
+ "name": "хауÑа"
+ },
+ "he": {
+ "code": "he",
+ "name": "хебрејÑки"
+ },
+ "hi": {
+ "code": "hi",
+ "name": "хинди"
+ },
+ "nl": {
+ "code": "nl",
+ "name": "холандÑки"
+ },
+ "hr": {
+ "code": "hr",
+ "name": "хрватÑки"
+ },
+ "tzm": {
+ "code": "tzm",
+ "name": "централно мароканÑки тамазитÑки"
+ },
+ "chr": {
+ "code": "chr",
+ "name": "черокиÑки"
+ },
+ "cs": {
+ "code": "cs",
+ "name": "чешки"
+ },
+ "cgg": {
+ "code": "cgg",
+ "name": "чига"
+ },
+ "ksb": {
+ "code": "ksb",
+ "name": "шамбала"
+ },
+ "gsw": {
+ "code": "gsw",
+ "name": "швајцарÑки германÑки"
+ },
+ "sv": {
+ "code": "sv",
+ "name": "шведÑки"
+ },
+ "gd": {
+ "code": "gd",
+ "name": "шкотÑки гелÑки"
+ },
+ "sn": {
+ "code": "sn",
+ "name": "шона"
+ },
+ "es": {
+ "code": "es",
+ "name": "шпанÑки"
+ },
+ "es-ES": {
+ "code": "es-ES",
+ "name": "шпанÑки (во Европа)"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/language/ml.json b/library/intl/resources/language/ml.json
new file mode 100644
index 000000000..536d628ad
--- /dev/null
+++ b/library/intl/resources/language/ml.json
@@ -0,0 +1,738 @@
+{
+ "ak": {
+ "code": "ak",
+ "name": "അകാൻ‌"
+ },
+ "hsb": {
+ "code": "hsb",
+ "name": "à´…à´ªàµà´ªàµ¼ സോർബിയൻ"
+ },
+ "en-US": {
+ "code": "en-US",
+ "name": "അമേരികàµà´•àµ» ഇംഗàµà´²àµ€à´·àµ"
+ },
+ "am": {
+ "code": "am",
+ "name": "അംഹാരികàµ"
+ },
+ "hy": {
+ "code": "hy",
+ "name": "അർമേനിയൻ"
+ },
+ "sq": {
+ "code": "sq",
+ "name": "അൽബേനിയൻ"
+ },
+ "az": {
+ "code": "az",
+ "name": "അസർബൈജാനി"
+ },
+ "ar": {
+ "code": "ar",
+ "name": "അറബികàµ"
+ },
+ "agq": {
+ "code": "agq",
+ "name": "ആഘേം"
+ },
+ "ar-001": {
+ "code": "ar-001",
+ "name": "ആധàµà´¨à´¿à´• à´¸àµà´±àµà´±à´¾àµ»à´¡àµ‡àµ¼à´¡àµ അറബികàµ"
+ },
+ "af": {
+ "code": "af",
+ "name": "ആഫàµà´°à´¿à´•àµà´•à´¾àµ»à´¸àµ"
+ },
+ "asa": {
+ "code": "asa",
+ "name": "ആസàµ"
+ },
+ "id": {
+ "code": "id",
+ "name": "ഇൻഡോനേഷàµà´¯àµ»"
+ },
+ "en": {
+ "code": "en",
+ "name": "ഇംഗàµà´²àµ€à´·àµ"
+ },
+ "ee": {
+ "code": "ee",
+ "name": "ഇവàµ"
+ },
+ "it": {
+ "code": "it",
+ "name": "ഇറàµà´±à´¾à´²à´¿à´¯àµ»"
+ },
+ "uk": {
+ "code": "uk",
+ "name": "ഉകàµà´°àµ‡à´¨à´¿à´¯àµ»"
+ },
+ "ug": {
+ "code": "ug",
+ "name": "ഉയàµà´˜àµàµ¼"
+ },
+ "uz": {
+ "code": "uz",
+ "name": "ഉസàµâ€Œà´¬àµ†à´•àµà´•àµ"
+ },
+ "ur": {
+ "code": "ur",
+ "name": "ഉറàµà´¦àµ"
+ },
+ "ebu": {
+ "code": "ebu",
+ "name": "à´Žà´‚à´¬àµ"
+ },
+ "ewo": {
+ "code": "ewo",
+ "name": "എവോൻഡോ"
+ },
+ "eo": {
+ "code": "eo",
+ "name": "à´Žà´¸àµâ€Œà´ªà´°à´¾à´¨àµà´±àµ‹"
+ },
+ "et": {
+ "code": "et",
+ "name": "à´Žà´¸àµà´±àµà´±àµ‹à´£à´¿à´¯àµ»"
+ },
+ "is": {
+ "code": "is",
+ "name": "à´à´¸àµâ€Œà´²à´¾àµ»à´¡à´¿à´•àµ"
+ },
+ "ga": {
+ "code": "ga",
+ "name": "à´à´±à´¿à´·àµ"
+ },
+ "or": {
+ "code": "or",
+ "name": "à´’à´¡à´¿à´¯"
+ },
+ "ast": {
+ "code": "ast",
+ "name": "à´“à´¸àµâ€Œà´Ÿàµà´°à´¿à´¯àµ»"
+ },
+ "de-AT": {
+ "code": "de-AT",
+ "name": "à´“à´¸àµâ€Œà´Ÿàµà´°à´¿à´¯àµ» ജർമൻ"
+ },
+ "en-AU": {
+ "code": "en-AU",
+ "name": "à´“à´¸àµâ€Œà´Ÿàµà´°àµ‡à´²à´¿à´¯àµ» ഇംഗàµà´²àµ€à´·àµ"
+ },
+ "en-CA": {
+ "code": "en-CA",
+ "name": "കനേഡിയൻ ഇംഗàµà´²àµ€à´·àµ"
+ },
+ "fr-CA": {
+ "code": "fr-CA",
+ "name": "കനേഡിയൻ à´«àµà´°à´žàµà´šàµ"
+ },
+ "kn": {
+ "code": "kn",
+ "name": "à´•à´¨àµà´¨à´¡"
+ },
+ "kea": {
+ "code": "kea",
+ "name": "à´•à´¬àµà´µàµ†àµ¼à´¦à´¿à´¯à´¾à´¨àµ"
+ },
+ "kab": {
+ "code": "kab",
+ "name": "കബൈൽ"
+ },
+ "kam": {
+ "code": "kam",
+ "name": "à´•à´‚à´¬"
+ },
+ "kl": {
+ "code": "kl",
+ "name": "കലാലàµà´²à´¿à´¸à´Ÿàµà´Ÿàµ"
+ },
+ "kln": {
+ "code": "kln",
+ "name": "കലെഞàµà´žà´¿àµ»"
+ },
+ "kk": {
+ "code": "kk",
+ "name": "കസാഖàµ"
+ },
+ "ca": {
+ "code": "ca",
+ "name": "à´•à´±àµà´±à´¾à´²à´¾àµ»"
+ },
+ "ks": {
+ "code": "ks",
+ "name": "കാശàµâ€Œà´®àµ€à´°à´¿"
+ },
+ "ki": {
+ "code": "ki",
+ "name": "കികൂയàµ"
+ },
+ "ky": {
+ "code": "ky",
+ "name": "കിർഗിസàµ"
+ },
+ "khq": {
+ "code": "khq",
+ "name": "കൊയàµà´± ചീനി"
+ },
+ "ses": {
+ "code": "ses",
+ "name": "കൊയàµà´±à´¾à´¬àµŠà´±àµ‹ സെനàµà´¨à´¿"
+ },
+ "ksh": {
+ "code": "ksh",
+ "name": "കൊളോഞàµà´žà´¿à´¯àµ»"
+ },
+ "ko": {
+ "code": "ko",
+ "name": "കൊറിയൻ"
+ },
+ "swc": {
+ "code": "swc",
+ "name": "കോംഗോ à´¸àµà´µà´¾à´¹à´¿à´²à´¿"
+ },
+ "hr": {
+ "code": "hr",
+ "name": "à´•àµà´°àµŠà´¯àµ‡à´·àµà´¯àµ»"
+ },
+ "nmg": {
+ "code": "nmg",
+ "name": "à´•àµà´µà´¾à´¸à´¿à´¯àµ‹"
+ },
+ "km": {
+ "code": "km",
+ "name": "ഖമെർ"
+ },
+ "gl": {
+ "code": "gl",
+ "name": "ഗലീഷàµà´¯àµ»"
+ },
+ "lg": {
+ "code": "lg",
+ "name": "ഗാണàµà´Ÿ"
+ },
+ "gu": {
+ "code": "gu",
+ "name": "à´—àµà´œà´±à´¾à´¤àµà´¤à´¿"
+ },
+ "guz": {
+ "code": "guz",
+ "name": "à´—àµà´¸àµ€"
+ },
+ "jgo": {
+ "code": "jgo",
+ "name": "ഗോമàµà´ª"
+ },
+ "el": {
+ "code": "el",
+ "name": "à´—àµà´°àµ€à´•àµà´•àµ"
+ },
+ "cgg": {
+ "code": "cgg",
+ "name": "à´šà´¿à´—"
+ },
+ "zh-Hant": {
+ "code": "zh-Hant",
+ "name": "ചീനഭാഷ-പരമàµà´ªà´°à´¾à´—തലിപി"
+ },
+ "zh-Hans": {
+ "code": "zh-Hans",
+ "name": "ചീനഭാഷ-ലളിതലിപി"
+ },
+ "cs": {
+ "code": "cs",
+ "name": "ചെകàµà´•àµ"
+ },
+ "zh": {
+ "code": "zh",
+ "name": "ചൈനീസàµ"
+ },
+ "ja": {
+ "code": "ja",
+ "name": "ജപàµà´ªà´¾à´¨àµ€à´¸àµ"
+ },
+ "de": {
+ "code": "de",
+ "name": "ജർമàµà´®àµ»"
+ },
+ "ka": {
+ "code": "ka",
+ "name": "ജോർജിയൻ"
+ },
+ "tr": {
+ "code": "tr",
+ "name": "ടർകàµà´•à´¿à´·àµ"
+ },
+ "twq": {
+ "code": "twq",
+ "name": "ടസവാകàµà´•àµ"
+ },
+ "bo": {
+ "code": "bo",
+ "name": "ടിബറàµà´±àµ»"
+ },
+ "teo": {
+ "code": "teo",
+ "name": "ടെസോ"
+ },
+ "ti": {
+ "code": "ti",
+ "name": "ടൈഗàµà´°à´¿à´¨àµà´¯"
+ },
+ "to": {
+ "code": "to",
+ "name": "ടോംഗൻ"
+ },
+ "nl": {
+ "code": "nl",
+ "name": "à´¡à´šàµà´šàµ"
+ },
+ "da": {
+ "code": "da",
+ "name": "ഡാനിഷàµ"
+ },
+ "ta": {
+ "code": "ta",
+ "name": "തമിഴàµ"
+ },
+ "shi": {
+ "code": "shi",
+ "name": "താചàµà´šà´²à´¿à´±àµà´±àµ"
+ },
+ "th": {
+ "code": "th",
+ "name": "തായàµ"
+ },
+ "te": {
+ "code": "te",
+ "name": "തെലàµà´™àµà´•àµ"
+ },
+ "dav": {
+ "code": "dav",
+ "name": "തൈത"
+ },
+ "naq": {
+ "code": "naq",
+ "name": "നാമ"
+ },
+ "nus": {
+ "code": "nus",
+ "name": "à´¨àµà´µàµ‡àµ¼"
+ },
+ "ne": {
+ "code": "ne",
+ "name": "നേപàµà´ªà´¾à´³à´¿"
+ },
+ "nd": {
+ "code": "nd",
+ "name": "നോർതàµà´¤àµ ഡെബിൾ"
+ },
+ "nn": {
+ "code": "nn",
+ "name": "നോർവീജിയൻ നൈനോർകàµâ€Œà´¸àµ"
+ },
+ "nb": {
+ "code": "nb",
+ "name": "നോർവീജിയൻ à´¬àµà´•àµâ€Œà´®àµ½"
+ },
+ "nyn": {
+ "code": "nyn",
+ "name": "à´¨àµà´¯à´¾àµ»à´•àµ‹àµ¾"
+ },
+ "pa": {
+ "code": "pa",
+ "name": "പഞàµà´šà´¾à´¬à´¿"
+ },
+ "fy": {
+ "code": "fy",
+ "name": "പശàµà´šà´¿à´® à´«àµà´°à´¿à´·à´¿à´¯àµ»"
+ },
+ "ps": {
+ "code": "ps",
+ "name": "പഷàµà´¤àµ"
+ },
+ "fa": {
+ "code": "fa",
+ "name": "പേർഷàµà´¯àµ»"
+ },
+ "pt": {
+ "code": "pt",
+ "name": "പോർചàµà´šàµà´—ീസàµ"
+ },
+ "pl": {
+ "code": "pl",
+ "name": "പോളിഷàµ"
+ },
+ "fo": {
+ "code": "fo",
+ "name": "ഫാറോസàµ"
+ },
+ "fi": {
+ "code": "fi",
+ "name": "à´«à´¿à´¨àµà´¨à´¿à´·àµ"
+ },
+ "fil": {
+ "code": "fil",
+ "name": "ഫിലിപàµà´ªà´¿à´¨àµ‹"
+ },
+ "ff": {
+ "code": "ff",
+ "name": "à´«àµà´²"
+ },
+ "fr": {
+ "code": "fr",
+ "name": "à´«àµà´°à´žàµà´šàµ"
+ },
+ "fur": {
+ "code": "fur",
+ "name": "à´«àµà´°à´¿à´¯àµà´²à´¿à´¯à´¾àµ»"
+ },
+ "nl-BE": {
+ "code": "nl-BE",
+ "name": "à´«àµà´²à´®à´¿à´·àµ"
+ },
+ "bn": {
+ "code": "bn",
+ "name": "ബംഗാളി"
+ },
+ "bm": {
+ "code": "bm",
+ "name": "ബംബാറ"
+ },
+ "my": {
+ "code": "my",
+ "name": "ബർമീസàµ"
+ },
+ "bas": {
+ "code": "bas",
+ "name": "ബസ"
+ },
+ "bg": {
+ "code": "bg",
+ "name": "ബൾഗേറിയൻ"
+ },
+ "eu": {
+ "code": "eu",
+ "name": "ബാസàµâ€Œà´•àµ"
+ },
+ "bez": {
+ "code": "bez",
+ "name": "ബെനാ"
+ },
+ "be": {
+ "code": "be",
+ "name": "ബെലാറàµà´·àµà´¯àµ»"
+ },
+ "brx": {
+ "code": "brx",
+ "name": "ബോഡോ"
+ },
+ "bs": {
+ "code": "bs",
+ "name": "ബോസàµà´¨à´¿à´¯àµ»"
+ },
+ "pt-BR": {
+ "code": "pt-BR",
+ "name": "à´¬àµà´°à´¸àµ€à´²à´¿à´¯àµ» പോർചàµà´šàµà´—ീസàµ"
+ },
+ "en-GB": {
+ "code": "en-GB",
+ "name": "à´¬àµà´°à´¿à´Ÿàµà´Ÿàµ€à´·àµ ഇംഗàµà´²àµ€à´·àµ"
+ },
+ "br": {
+ "code": "br",
+ "name": "à´¬àµà´°àµ†à´Ÿàµà´Ÿàµº"
+ },
+ "ksf": {
+ "code": "ksf",
+ "name": "ഭാഫിയ"
+ },
+ "kde": {
+ "code": "kde",
+ "name": "മകàµà´•àµ‹à´£àµà´Ÿàµ†"
+ },
+ "jmc": {
+ "code": "jmc",
+ "name": "മചേം"
+ },
+ "tzm": {
+ "code": "tzm",
+ "name": "മധàµà´¯ à´…à´±àµà´±àµâ€Œà´²à´¸àµ ടമാസൈറàµà´±àµ"
+ },
+ "mn": {
+ "code": "mn",
+ "name": "മംഗോളിയൻ"
+ },
+ "mg": {
+ "code": "mg",
+ "name": "മലഗാസി"
+ },
+ "ml": {
+ "code": "ml",
+ "name": "മലയാളം"
+ },
+ "ms": {
+ "code": "ms",
+ "name": "മലെയàµ"
+ },
+ "mas": {
+ "code": "mas",
+ "name": "മസായàµ"
+ },
+ "mr": {
+ "code": "mr",
+ "name": "മറാതàµà´¤à´¿"
+ },
+ "mgh": {
+ "code": "mgh",
+ "name": "മാഖàµà´µà´¾-മീതàµà´¤àµ‹"
+ },
+ "mk": {
+ "code": "mk",
+ "name": "മാസിഡോണിയൻ"
+ },
+ "mt": {
+ "code": "mt",
+ "name": "മാൾടàµà´Ÿàµ€à´¸àµ"
+ },
+ "mua": {
+ "code": "mua",
+ "name": "à´®àµà´¨àµà´¦à´¾à´‚à´—àµ"
+ },
+ "es-MX": {
+ "code": "es-MX",
+ "name": "മെകàµà´¸à´¿à´•àµà´•àµ» à´¸àµà´ªà´¾à´¨à´¿à´·àµ"
+ },
+ "mer": {
+ "code": "mer",
+ "name": "മേരàµ"
+ },
+ "mfe": {
+ "code": "mfe",
+ "name": "മൊറിസിൻ"
+ },
+ "zgh": {
+ "code": "zgh",
+ "name": "മൊറോകàµà´•àµ» സാധാരണ താമസൈറàµà´±àµ"
+ },
+ "ro-MD": {
+ "code": "ro-MD",
+ "name": "മോൾഡാവിയൻ"
+ },
+ "yav": {
+ "code": "yav",
+ "name": "യാംഗàµà´¬àµ†àµ»"
+ },
+ "pt-PT": {
+ "code": "pt-PT",
+ "name": "യൂറോപàµà´¯àµ» പോർചàµà´šàµà´—ീസàµ"
+ },
+ "es-ES": {
+ "code": "es-ES",
+ "name": "യൂറോപàµà´¯àµ» à´¸àµâ€Œà´ªà´¾à´¨à´¿à´·àµ"
+ },
+ "yo": {
+ "code": "yo",
+ "name": "യൊറൂബാ"
+ },
+ "dyo": {
+ "code": "dyo",
+ "name": "യോല-ഫോനàµà´¯à´¿"
+ },
+ "lb": {
+ "code": "lb",
+ "name": "ലകàµâ€Œà´¸à´‚ബർഗിഷàµ"
+ },
+ "lag": {
+ "code": "lag",
+ "name": "ലാംഗി"
+ },
+ "lo": {
+ "code": "lo",
+ "name": "ലാവോ"
+ },
+ "lv": {
+ "code": "lv",
+ "name": "ലാറàµà´±àµà´µà´¿à´¯àµ»"
+ },
+ "lt": {
+ "code": "lt",
+ "name": "ലിതàµà´µà´¾à´¨à´¿à´¯àµ»"
+ },
+ "ln": {
+ "code": "ln",
+ "name": "ലിംഗാല"
+ },
+ "lu": {
+ "code": "lu",
+ "name": "à´²àµà´¬-à´•à´±àµà´±à´‚à´—"
+ },
+ "luy": {
+ "code": "luy",
+ "name": "à´²àµà´¯à´¿à´¯"
+ },
+ "luo": {
+ "code": "luo",
+ "name": "à´²àµà´µàµ‹"
+ },
+ "dsb": {
+ "code": "dsb",
+ "name": "ലോവർ സോർബിയൻ"
+ },
+ "se": {
+ "code": "se",
+ "name": "വടകàµà´•àµ» സമി"
+ },
+ "wae": {
+ "code": "wae",
+ "name": "വാൾസർ"
+ },
+ "vi": {
+ "code": "vi",
+ "name": "വിയറàµà´±àµà´¨à´¾à´®àµ€à´¸àµ"
+ },
+ "vun": {
+ "code": "vun",
+ "name": "à´µàµà´žàµà´œàµ‹"
+ },
+ "cy": {
+ "code": "cy",
+ "name": "വെൽഷàµ"
+ },
+ "vai": {
+ "code": "vai",
+ "name": "വൈ"
+ },
+ "ksb": {
+ "code": "ksb",
+ "name": "ഷംഭാള"
+ },
+ "chr": {
+ "code": "chr",
+ "name": "ഷെരോകàµà´•à´¿"
+ },
+ "sn": {
+ "code": "sn",
+ "name": "ഷോണ"
+ },
+ "sbp": {
+ "code": "sbp",
+ "name": "സംഗàµ"
+ },
+ "saq": {
+ "code": "saq",
+ "name": "സംബàµà´°àµ"
+ },
+ "sg": {
+ "code": "sg",
+ "name": "സാംഗോ"
+ },
+ "dje": {
+ "code": "dje",
+ "name": "സാർമàµà´®"
+ },
+ "si": {
+ "code": "si",
+ "name": "സിംഹള"
+ },
+ "zu": {
+ "code": "zu",
+ "name": "à´¸àµà´²àµ"
+ },
+ "sr": {
+ "code": "sr",
+ "name": "സെർബിയൻ"
+ },
+ "seh": {
+ "code": "seh",
+ "name": "സേന"
+ },
+ "xog": {
+ "code": "xog",
+ "name": "സോഗോ"
+ },
+ "dz": {
+ "code": "dz",
+ "name": "സോങàµà´•"
+ },
+ "so": {
+ "code": "so",
+ "name": "സോമാലി"
+ },
+ "gd": {
+ "code": "gd",
+ "name": "à´¸àµà´•àµ‹à´Ÿàµà´Ÿà´¿à´·àµ ഗൈലികàµ"
+ },
+ "es": {
+ "code": "es",
+ "name": "à´¸àµâ€Œà´ªà´¾à´¨à´¿à´·àµ"
+ },
+ "sk": {
+ "code": "sk",
+ "name": "à´¸àµà´²àµ‹à´µà´¾à´•àµ"
+ },
+ "sl": {
+ "code": "sl",
+ "name": "à´¸àµà´²àµ‹à´µàµ‡à´¨à´¿à´¯àµ»"
+ },
+ "sw": {
+ "code": "sw",
+ "name": "à´¸àµà´µà´¾à´¹à´¿à´²à´¿"
+ },
+ "gsw": {
+ "code": "gsw",
+ "name": "à´¸àµà´µà´¿à´¸àµ ജർമàµà´®àµ»"
+ },
+ "fr-CH": {
+ "code": "fr-CH",
+ "name": "à´¸àµà´µà´¿à´¸àµ à´«àµà´°à´žàµà´šàµ"
+ },
+ "de-CH": {
+ "code": "de-CH",
+ "name": "à´¸àµà´µà´¿à´¸àµ ഹൈ ജർമൻ"
+ },
+ "sv": {
+ "code": "sv",
+ "name": "à´¸àµà´µàµ€à´¡à´¿à´·àµ"
+ },
+ "hu": {
+ "code": "hu",
+ "name": "ഹംഗേറിയൻ"
+ },
+ "hi": {
+ "code": "hi",
+ "name": "ഹിനàµà´¦à´¿"
+ },
+ "he": {
+ "code": "he",
+ "name": "ഹീബàµà´°àµ"
+ },
+ "ha": {
+ "code": "ha",
+ "name": "ഹൗസ"
+ },
+ "ru": {
+ "code": "ru",
+ "name": "റഷàµà´¯àµ»"
+ },
+ "rn": {
+ "code": "rn",
+ "name": "à´±àµà´£àµà´Ÿà´¿"
+ },
+ "rwk": {
+ "code": "rwk",
+ "name": "à´±àµà´µà´¾"
+ },
+ "rm": {
+ "code": "rm",
+ "name": "റൊമാഞàµà´šàµ"
+ },
+ "ro": {
+ "code": "ro",
+ "name": "റൊമാനിയൻ"
+ },
+ "rof": {
+ "code": "rof",
+ "name": "റോംബോ"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/language/mn.json b/library/intl/resources/language/mn.json
new file mode 100644
index 000000000..2b2598c00
--- /dev/null
+++ b/library/intl/resources/language/mn.json
@@ -0,0 +1,738 @@
+{
+ "ast": {
+ "code": "ast",
+ "name": "Asturian"
+ },
+ "bas": {
+ "code": "bas",
+ "name": "Basaa"
+ },
+ "ksh": {
+ "code": "ksh",
+ "name": "Colognian"
+ },
+ "ewo": {
+ "code": "ewo",
+ "name": "Ewondo"
+ },
+ "fur": {
+ "code": "fur",
+ "name": "Friulian"
+ },
+ "ff": {
+ "code": "ff",
+ "name": "Fulah"
+ },
+ "wae": {
+ "code": "wae",
+ "name": "Walser"
+ },
+ "yav": {
+ "code": "yav",
+ "name": "Yangben"
+ },
+ "en-AU": {
+ "code": "en-AU",
+ "name": "авÑтрали англи"
+ },
+ "de-AT": {
+ "code": "de-AT",
+ "name": "авÑтри герман"
+ },
+ "agq": {
+ "code": "agq",
+ "name": "агем"
+ },
+ "az": {
+ "code": "az",
+ "name": "азербайжан"
+ },
+ "ak": {
+ "code": "ak",
+ "name": "акан"
+ },
+ "sq": {
+ "code": "sq",
+ "name": "албани"
+ },
+ "en-US": {
+ "code": "en-US",
+ "name": "америкийн англи"
+ },
+ "am": {
+ "code": "am",
+ "name": "амхар"
+ },
+ "en": {
+ "code": "en",
+ "name": "англи"
+ },
+ "ar": {
+ "code": "ar",
+ "name": "араб"
+ },
+ "hy": {
+ "code": "hy",
+ "name": "армен"
+ },
+ "asa": {
+ "code": "asa",
+ "name": "аÑу"
+ },
+ "af": {
+ "code": "af",
+ "name": "африк"
+ },
+ "ne": {
+ "code": "ne",
+ "name": "балба"
+ },
+ "bm": {
+ "code": "bm",
+ "name": "бамбара"
+ },
+ "fy": {
+ "code": "fy",
+ "name": "баруун фризын"
+ },
+ "eu": {
+ "code": "eu",
+ "name": "баÑк"
+ },
+ "ksf": {
+ "code": "ksf",
+ "name": "бафиа"
+ },
+ "be": {
+ "code": "be",
+ "name": "беларуÑÑŒ"
+ },
+ "bez": {
+ "code": "bez",
+ "name": "бена"
+ },
+ "bn": {
+ "code": "bn",
+ "name": "бенгал"
+ },
+ "my": {
+ "code": "my",
+ "name": "бирм"
+ },
+ "brx": {
+ "code": "brx",
+ "name": "бодо"
+ },
+ "bg": {
+ "code": "bg",
+ "name": "болгар"
+ },
+ "bs": {
+ "code": "bs",
+ "name": "боÑни"
+ },
+ "br": {
+ "code": "br",
+ "name": "бретон"
+ },
+ "en-GB": {
+ "code": "en-GB",
+ "name": "британийн англи"
+ },
+ "vai": {
+ "code": "vai",
+ "name": "вай"
+ },
+ "vun": {
+ "code": "vun",
+ "name": "вунжо"
+ },
+ "vi": {
+ "code": "vi",
+ "name": "вьетнам"
+ },
+ "gl": {
+ "code": "gl",
+ "name": "галик"
+ },
+ "lg": {
+ "code": "lg",
+ "name": "ганда"
+ },
+ "de": {
+ "code": "de",
+ "name": "герман"
+ },
+ "nl": {
+ "code": "nl",
+ "name": "голланд"
+ },
+ "el": {
+ "code": "el",
+ "name": "грек"
+ },
+ "gu": {
+ "code": "gu",
+ "name": "гужарати"
+ },
+ "guz": {
+ "code": "guz",
+ "name": "гузы"
+ },
+ "ka": {
+ "code": "ka",
+ "name": "гүрж"
+ },
+ "da": {
+ "code": "da",
+ "name": "дани"
+ },
+ "hsb": {
+ "code": "hsb",
+ "name": "дÑÑд Ñорби"
+ },
+ "he": {
+ "code": "he",
+ "name": "еврей"
+ },
+ "es-ES": {
+ "code": "es-ES",
+ "name": "европын иÑпани"
+ },
+ "pt-PT": {
+ "code": "pt-PT",
+ "name": "европын португал"
+ },
+ "yo": {
+ "code": "yo",
+ "name": "ёруба"
+ },
+ "dyo": {
+ "code": "dyo",
+ "name": "жола-фони"
+ },
+ "dz": {
+ "code": "dz",
+ "name": "жонха"
+ },
+ "dje": {
+ "code": "dje",
+ "name": "зарма"
+ },
+ "zu": {
+ "code": "zu",
+ "name": "зулу"
+ },
+ "id": {
+ "code": "id",
+ "name": "индонези"
+ },
+ "ga": {
+ "code": "ga",
+ "name": "ирланд"
+ },
+ "is": {
+ "code": "is",
+ "name": "иÑланд"
+ },
+ "es": {
+ "code": "es",
+ "name": "иÑпани"
+ },
+ "it": {
+ "code": "it",
+ "name": "итали"
+ },
+ "kab": {
+ "code": "kab",
+ "name": "кабиле"
+ },
+ "kea": {
+ "code": "kea",
+ "name": "кабүвердиану"
+ },
+ "kl": {
+ "code": "kl",
+ "name": "калалиÑут"
+ },
+ "kln": {
+ "code": "kln",
+ "name": "каленжин"
+ },
+ "kam": {
+ "code": "kam",
+ "name": "камба"
+ },
+ "km": {
+ "code": "km",
+ "name": "камбож"
+ },
+ "en-CA": {
+ "code": "en-CA",
+ "name": "канад англи"
+ },
+ "fr-CA": {
+ "code": "fr-CA",
+ "name": "канад франц"
+ },
+ "kn": {
+ "code": "kn",
+ "name": "каннада"
+ },
+ "ca": {
+ "code": "ca",
+ "name": "каталан"
+ },
+ "ks": {
+ "code": "ks",
+ "name": "кашмир"
+ },
+ "nmg": {
+ "code": "nmg",
+ "name": "квазио"
+ },
+ "ses": {
+ "code": "ses",
+ "name": "кёраборо Ñени"
+ },
+ "ki": {
+ "code": "ki",
+ "name": "кикуюү"
+ },
+ "ky": {
+ "code": "ky",
+ "name": "киргиз"
+ },
+ "khq": {
+ "code": "khq",
+ "name": "койра чини"
+ },
+ "swc": {
+ "code": "swc",
+ "name": "конго Ñвахили"
+ },
+ "lag": {
+ "code": "lag",
+ "name": "ланги"
+ },
+ "lo": {
+ "code": "lo",
+ "name": "лаоÑ"
+ },
+ "lv": {
+ "code": "lv",
+ "name": "латви"
+ },
+ "ln": {
+ "code": "ln",
+ "name": "лингала"
+ },
+ "lt": {
+ "code": "lt",
+ "name": "литва"
+ },
+ "dsb": {
+ "code": "dsb",
+ "name": "ловер-Ñорби"
+ },
+ "lu": {
+ "code": "lu",
+ "name": "луба-катанга"
+ },
+ "luo": {
+ "code": "luo",
+ "name": "луо"
+ },
+ "luy": {
+ "code": "luy",
+ "name": "луÑа"
+ },
+ "lb": {
+ "code": "lb",
+ "name": "люкÑембург"
+ },
+ "mk": {
+ "code": "mk",
+ "name": "македон"
+ },
+ "kde": {
+ "code": "kde",
+ "name": "маконде"
+ },
+ "mgh": {
+ "code": "mgh",
+ "name": "макува-мито"
+ },
+ "mg": {
+ "code": "mg",
+ "name": "малагаÑи"
+ },
+ "ms": {
+ "code": "ms",
+ "name": "малай"
+ },
+ "ml": {
+ "code": "ml",
+ "name": "малайлам"
+ },
+ "mt": {
+ "code": "mt",
+ "name": "малти"
+ },
+ "mr": {
+ "code": "mr",
+ "name": "марати"
+ },
+ "mas": {
+ "code": "mas",
+ "name": "маÑай"
+ },
+ "jmc": {
+ "code": "jmc",
+ "name": "мачамÑ"
+ },
+ "es-MX": {
+ "code": "es-MX",
+ "name": "мекÑикийн иÑпани"
+ },
+ "mer": {
+ "code": "mer",
+ "name": "меру"
+ },
+ "ro-MD": {
+ "code": "ro-MD",
+ "name": "молдав"
+ },
+ "mn": {
+ "code": "mn",
+ "name": "монгол"
+ },
+ "mfe": {
+ "code": "mfe",
+ "name": "мориÑен"
+ },
+ "mua": {
+ "code": "mua",
+ "name": "мунданг"
+ },
+ "naq": {
+ "code": "naq",
+ "name": "нама"
+ },
+ "jgo": {
+ "code": "jgo",
+ "name": "нгомба"
+ },
+ "nb": {
+ "code": "nb",
+ "name": "норвегийн букмол"
+ },
+ "nn": {
+ "code": "nn",
+ "name": "норвегийн нинорÑк"
+ },
+ "nus": {
+ "code": "nus",
+ "name": "нуер"
+ },
+ "nyn": {
+ "code": "nyn",
+ "name": "нÑнколе"
+ },
+ "or": {
+ "code": "or",
+ "name": "ориÑ"
+ },
+ "ru": {
+ "code": "ru",
+ "name": "ороÑ"
+ },
+ "pa": {
+ "code": "pa",
+ "name": "панжаб"
+ },
+ "ps": {
+ "code": "ps",
+ "name": "пашто"
+ },
+ "fa": {
+ "code": "fa",
+ "name": "перÑ"
+ },
+ "pl": {
+ "code": "pl",
+ "name": "польш"
+ },
+ "pt": {
+ "code": "pt",
+ "name": "португал"
+ },
+ "pt-BR": {
+ "code": "pt-BR",
+ "name": "португал (бразил)"
+ },
+ "rwk": {
+ "code": "rwk",
+ "name": "рва"
+ },
+ "rm": {
+ "code": "rm",
+ "name": "романш"
+ },
+ "rof": {
+ "code": "rof",
+ "name": "ромбо"
+ },
+ "ro": {
+ "code": "ro",
+ "name": "румын"
+ },
+ "rn": {
+ "code": "rn",
+ "name": "рунди"
+ },
+ "saq": {
+ "code": "saq",
+ "name": "Ñамбүрү"
+ },
+ "sg": {
+ "code": "sg",
+ "name": "Ñанго"
+ },
+ "sbp": {
+ "code": "sbp",
+ "name": "Ñангү"
+ },
+ "sw": {
+ "code": "sw",
+ "name": "Ñвахили"
+ },
+ "seh": {
+ "code": "seh",
+ "name": "Ñена"
+ },
+ "sr": {
+ "code": "sr",
+ "name": "Ñерб"
+ },
+ "si": {
+ "code": "si",
+ "name": "Ñинхала"
+ },
+ "sk": {
+ "code": "sk",
+ "name": "Ñловак"
+ },
+ "sl": {
+ "code": "sl",
+ "name": "Ñловен"
+ },
+ "xog": {
+ "code": "xog",
+ "name": "Ñога"
+ },
+ "ko": {
+ "code": "ko",
+ "name": "ÑолонгоÑ"
+ },
+ "so": {
+ "code": "so",
+ "name": "Ñомали"
+ },
+ "ar-001": {
+ "code": "ar-001",
+ "name": "Ñтандарт араб"
+ },
+ "th": {
+ "code": "th",
+ "name": "тай"
+ },
+ "dav": {
+ "code": "dav",
+ "name": "тайта"
+ },
+ "zgh": {
+ "code": "zgh",
+ "name": "тамазит"
+ },
+ "ta": {
+ "code": "ta",
+ "name": "тамил"
+ },
+ "twq": {
+ "code": "twq",
+ "name": "таÑавак"
+ },
+ "shi": {
+ "code": "shi",
+ "name": "тачелхит"
+ },
+ "ti": {
+ "code": "ti",
+ "name": "тигрина"
+ },
+ "to": {
+ "code": "to",
+ "name": "тонга"
+ },
+ "tzm": {
+ "code": "tzm",
+ "name": "төв атлаÑын тамазайт"
+ },
+ "bo": {
+ "code": "bo",
+ "name": "төвд"
+ },
+ "tr": {
+ "code": "tr",
+ "name": "турк"
+ },
+ "te": {
+ "code": "te",
+ "name": "Ñ‚Ñлүгү"
+ },
+ "teo": {
+ "code": "teo",
+ "name": "Ñ‚ÑÑо"
+ },
+ "uz": {
+ "code": "uz",
+ "name": "узбек"
+ },
+ "ug": {
+ "code": "ug",
+ "name": "уйгар"
+ },
+ "uk": {
+ "code": "uk",
+ "name": "украйн"
+ },
+ "zh-Hant": {
+ "code": "zh-Hant",
+ "name": "уламжлалт Ñ…Ñтад"
+ },
+ "hu": {
+ "code": "hu",
+ "name": "унгар"
+ },
+ "ur": {
+ "code": "ur",
+ "name": "урду"
+ },
+ "cy": {
+ "code": "cy",
+ "name": "уÑлÑ"
+ },
+ "fo": {
+ "code": "fo",
+ "name": "фарер"
+ },
+ "fil": {
+ "code": "fil",
+ "name": "филиппин"
+ },
+ "fi": {
+ "code": "fi",
+ "name": "финлÑнд"
+ },
+ "nl-BE": {
+ "code": "nl-BE",
+ "name": "фламанд"
+ },
+ "fr": {
+ "code": "fr",
+ "name": "франц"
+ },
+ "kk": {
+ "code": "kk",
+ "name": "хаÑаг"
+ },
+ "ha": {
+ "code": "ha",
+ "name": "хауÑа"
+ },
+ "hi": {
+ "code": "hi",
+ "name": "хинди"
+ },
+ "nd": {
+ "code": "nd",
+ "name": "хойд ндебеле"
+ },
+ "se": {
+ "code": "se",
+ "name": "хойд Ñами"
+ },
+ "hr": {
+ "code": "hr",
+ "name": "хорват"
+ },
+ "zh-Hans": {
+ "code": "zh-Hans",
+ "name": "Ñ…ÑлбаршуулÑан Ñ…Ñтад"
+ },
+ "zh": {
+ "code": "zh",
+ "name": "Ñ…Ñтад"
+ },
+ "cs": {
+ "code": "cs",
+ "name": "чех"
+ },
+ "cgg": {
+ "code": "cgg",
+ "name": "чига"
+ },
+ "chr": {
+ "code": "chr",
+ "name": "чироки"
+ },
+ "ksb": {
+ "code": "ksb",
+ "name": "шамбала"
+ },
+ "sv": {
+ "code": "sv",
+ "name": "швед"
+ },
+ "gsw": {
+ "code": "gsw",
+ "name": "швейцари герман"
+ },
+ "de-CH": {
+ "code": "de-CH",
+ "name": "швейцари дÑÑÑ€ герман"
+ },
+ "fr-CH": {
+ "code": "fr-CH",
+ "name": "швейцари франц"
+ },
+ "sn": {
+ "code": "sn",
+ "name": "шона"
+ },
+ "gd": {
+ "code": "gd",
+ "name": "шотланд келт"
+ },
+ "ee": {
+ "code": "ee",
+ "name": "ÑвÑ"
+ },
+ "ebu": {
+ "code": "ebu",
+ "name": "Ñмбу"
+ },
+ "eo": {
+ "code": "eo",
+ "name": "ÑÑперанто"
+ },
+ "et": {
+ "code": "et",
+ "name": "ÑÑтони"
+ },
+ "ja": {
+ "code": "ja",
+ "name": "Ñпон"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/language/mr.json b/library/intl/resources/language/mr.json
new file mode 100644
index 000000000..aaa3f3189
--- /dev/null
+++ b/library/intl/resources/language/mr.json
@@ -0,0 +1,738 @@
+{
+ "ksh": {
+ "code": "ksh",
+ "name": "Colognian"
+ },
+ "wae": {
+ "code": "wae",
+ "name": "Walser"
+ },
+ "yav": {
+ "code": "yav",
+ "name": "Yangben"
+ },
+ "ak": {
+ "code": "ak",
+ "name": "अकान"
+ },
+ "agq": {
+ "code": "agq",
+ "name": "अघेम"
+ },
+ "az": {
+ "code": "az",
+ "name": "अà¤à¤°à¤¬à¥ˆà¤œà¤¾à¤¨à¥€"
+ },
+ "hsb": {
+ "code": "hsb",
+ "name": "अपà¥à¤ªà¤° सॉरà¥à¤¬à¤¿à¤¯à¤¨"
+ },
+ "af": {
+ "code": "af",
+ "name": "अफà¥à¤°à¤¿à¤•à¤¾à¤¨à¥à¤¸"
+ },
+ "en-US": {
+ "code": "en-US",
+ "name": "अमेरिकन इंगà¥à¤°à¤œà¥€"
+ },
+ "am": {
+ "code": "am",
+ "name": "अमà¥à¤¹à¤¾à¤°à¤¿à¤•"
+ },
+ "ar": {
+ "code": "ar",
+ "name": "अरबी"
+ },
+ "sq": {
+ "code": "sq",
+ "name": "अलà¥à¤¬à¤¾à¤¨à¤¿à¤¯à¤¨"
+ },
+ "asa": {
+ "code": "asa",
+ "name": "असà¥"
+ },
+ "ast": {
+ "code": "ast",
+ "name": "असà¥à¤¤à¥à¤°à¤¿à¤¯à¤¨"
+ },
+ "is": {
+ "code": "is",
+ "name": "आईसलà¤à¤¡à¤¿à¤•"
+ },
+ "ar-001": {
+ "code": "ar-001",
+ "name": "आधà¥à¤¨à¤¿à¤• पà¥à¤°à¤®à¤¾à¤£à¤¿à¤¤ अरबी"
+ },
+ "ga": {
+ "code": "ga",
+ "name": "आयरिश"
+ },
+ "hy": {
+ "code": "hy",
+ "name": "आरà¥à¤®à¥‡à¤¨à¤¿à¤¯à¤¨"
+ },
+ "en": {
+ "code": "en",
+ "name": "इंगà¥à¤°à¤œà¥€"
+ },
+ "id": {
+ "code": "id",
+ "name": "इंडोनेशियन"
+ },
+ "it": {
+ "code": "it",
+ "name": "इटालियन"
+ },
+ "ewo": {
+ "code": "ewo",
+ "name": "इवोनà¥à¤¡à¥‹"
+ },
+ "et": {
+ "code": "et",
+ "name": "इसà¥à¤Ÿà¥‹à¤¨à¤¿à¤¯à¤¨"
+ },
+ "ug": {
+ "code": "ug",
+ "name": "उइगà¥à¤°"
+ },
+ "uz": {
+ "code": "uz",
+ "name": "उà¤à¥à¤¬à¥‡à¤•"
+ },
+ "or": {
+ "code": "or",
+ "name": "उडिया"
+ },
+ "nd": {
+ "code": "nd",
+ "name": "उतà¥à¤¤à¤° देबेली"
+ },
+ "se": {
+ "code": "se",
+ "name": "उतà¥à¤¤à¤°à¥€ सामी"
+ },
+ "ur": {
+ "code": "ur",
+ "name": "उरà¥à¤¦à¥‚"
+ },
+ "ebu": {
+ "code": "ebu",
+ "name": "à¤à¤®à¥à¤¬à¥‚"
+ },
+ "ee": {
+ "code": "ee",
+ "name": "à¤à¤µà¥‡"
+ },
+ "eo": {
+ "code": "eo",
+ "name": "à¤à¤¸à¥à¤ªà¤°à¤¾à¤¨à¥à¤Ÿà¥‹"
+ },
+ "de-AT": {
+ "code": "de-AT",
+ "name": "ऑसà¥à¤Ÿà¥à¤°à¤¿à¤¯à¤¨ जरà¥à¤®à¤¨"
+ },
+ "en-AU": {
+ "code": "en-AU",
+ "name": "ऑसà¥à¤Ÿà¥à¤°à¥‡à¤²à¤¿à¤¯à¤¨ इंगà¥à¤°à¤œà¥€"
+ },
+ "kk": {
+ "code": "kk",
+ "name": "कà¤à¤¾à¤•"
+ },
+ "kn": {
+ "code": "kn",
+ "name": "कनà¥à¤¨à¤¡"
+ },
+ "kab": {
+ "code": "kab",
+ "name": "कबाइल"
+ },
+ "kl": {
+ "code": "kl",
+ "name": "कलालà¥à¤²à¤¿à¤¸à¤¤"
+ },
+ "swc": {
+ "code": "swc",
+ "name": "काà¤à¤—ो सà¥à¤µà¤¾à¤¹à¤¿à¤²à¥€"
+ },
+ "ca": {
+ "code": "ca",
+ "name": "कातालान"
+ },
+ "kea": {
+ "code": "kea",
+ "name": "काबवरà¥à¤¦à¤¿à¤¯à¤¾à¤¨à¥"
+ },
+ "kam": {
+ "code": "kam",
+ "name": "कामà¥à¤¬à¤¾"
+ },
+ "kln": {
+ "code": "kln",
+ "name": "कालेंजीन"
+ },
+ "ks": {
+ "code": "ks",
+ "name": "काशà¥à¤®à¥€à¤°à¥€"
+ },
+ "ki": {
+ "code": "ki",
+ "name": "किकà¥à¤¯à¥‚"
+ },
+ "cgg": {
+ "code": "cgg",
+ "name": "किगा"
+ },
+ "ky": {
+ "code": "ky",
+ "name": "किरगीà¤"
+ },
+ "en-CA": {
+ "code": "en-CA",
+ "name": "कॅनडियन इंगà¥à¤°à¤œà¥€"
+ },
+ "fr-CA": {
+ "code": "fr-CA",
+ "name": "कॅनडियन फà¥à¤°à¥‡à¤‚च"
+ },
+ "khq": {
+ "code": "khq",
+ "name": "कोयरा चीनी"
+ },
+ "ses": {
+ "code": "ses",
+ "name": "कोयराबोरो सेनà¥à¤¨à¥€"
+ },
+ "ko": {
+ "code": "ko",
+ "name": "कोरियन"
+ },
+ "hr": {
+ "code": "hr",
+ "name": "कà¥à¤°à¥‹à¤à¤¶à¤¿à¤¯à¤¨"
+ },
+ "nmg": {
+ "code": "nmg",
+ "name": "कà¥à¤µà¤¾à¤¸à¤¿à¤“"
+ },
+ "km": {
+ "code": "km",
+ "name": "खà¥à¤®à¥‡à¤°"
+ },
+ "guz": {
+ "code": "guz",
+ "name": "गसी"
+ },
+ "lg": {
+ "code": "lg",
+ "name": "गांडा"
+ },
+ "gu": {
+ "code": "gu",
+ "name": "गà¥à¤œà¤°à¤¾à¤¤à¥€"
+ },
+ "gl": {
+ "code": "gl",
+ "name": "गॅलिशियन"
+ },
+ "jgo": {
+ "code": "jgo",
+ "name": "गोमà¥à¤¬à¤¾"
+ },
+ "el": {
+ "code": "el",
+ "name": "गà¥à¤°à¥€à¤•"
+ },
+ "zh": {
+ "code": "zh",
+ "name": "चीनी"
+ },
+ "chr": {
+ "code": "chr",
+ "name": "चेरोकी"
+ },
+ "ja": {
+ "code": "ja",
+ "name": "जपानी"
+ },
+ "de": {
+ "code": "de",
+ "name": "जरà¥à¤®à¤¨"
+ },
+ "ka": {
+ "code": "ka",
+ "name": "जॉरà¥à¤œà¤¿à¤¯à¤¨"
+ },
+ "dyo": {
+ "code": "dyo",
+ "name": "जोला-फोंयी"
+ },
+ "dje": {
+ "code": "dje",
+ "name": "à¤à¤¾à¤°à¥à¤®à¤¾"
+ },
+ "zu": {
+ "code": "zu",
+ "name": "à¤à¥à¤²à¥‚"
+ },
+ "cs": {
+ "code": "cs",
+ "name": "à¤à¥‡à¤•"
+ },
+ "dz": {
+ "code": "dz",
+ "name": "à¤à¥‹à¤‚गखा"
+ },
+ "to": {
+ "code": "to",
+ "name": "टोंगन"
+ },
+ "nl": {
+ "code": "nl",
+ "name": "डच"
+ },
+ "da": {
+ "code": "da",
+ "name": "डॅनिश"
+ },
+ "ta": {
+ "code": "ta",
+ "name": "तामिळ"
+ },
+ "dav": {
+ "code": "dav",
+ "name": "तायता"
+ },
+ "shi": {
+ "code": "shi",
+ "name": "ताशेलà¥à¤¹à¤¿à¤Ÿ"
+ },
+ "twq": {
+ "code": "twq",
+ "name": "तासावà¥à¤¹à¤¾à¤•"
+ },
+ "ti": {
+ "code": "ti",
+ "name": "तिगà¥à¤°à¤¿à¤¨à¥à¤¯à¤¾"
+ },
+ "bo": {
+ "code": "bo",
+ "name": "तिबेटी"
+ },
+ "tr": {
+ "code": "tr",
+ "name": "तà¥à¤°à¥à¤•à¥€"
+ },
+ "te": {
+ "code": "te",
+ "name": "तेलगू"
+ },
+ "teo": {
+ "code": "teo",
+ "name": "तेसो"
+ },
+ "th": {
+ "code": "th",
+ "name": "थाई"
+ },
+ "naq": {
+ "code": "naq",
+ "name": "नामा"
+ },
+ "nus": {
+ "code": "nus",
+ "name": "नà¥à¤à¤°"
+ },
+ "ne": {
+ "code": "ne",
+ "name": "नेपाळी"
+ },
+ "nn": {
+ "code": "nn",
+ "name": "नॉरà¥à¤µà¥‡à¤œà¤¿à¤¯à¤¨ नà¥à¤¯à¥‹à¤°à¥à¤¸à¥à¤•"
+ },
+ "nb": {
+ "code": "nb",
+ "name": "नॉरà¥à¤µà¥‡à¤œà¤¿à¤¯à¤¨ बोकमाल"
+ },
+ "nyn": {
+ "code": "nyn",
+ "name": "नà¥à¤¯à¤¾à¤¨à¤•à¥‹à¤²"
+ },
+ "pa": {
+ "code": "pa",
+ "name": "पंजाबी"
+ },
+ "fy": {
+ "code": "fy",
+ "name": "पशà¥à¤šà¤¿à¤®à¥€ फà¥à¤°à¤¿à¤¶à¤¿à¤¯à¤¨"
+ },
+ "ps": {
+ "code": "ps",
+ "name": "पशà¥à¤¤à¥‹"
+ },
+ "zh-Hant": {
+ "code": "zh-Hant",
+ "name": "पारंपारिक चीनी"
+ },
+ "pt": {
+ "code": "pt",
+ "name": "पोरà¥à¤¤à¥à¤—ीज"
+ },
+ "pl": {
+ "code": "pl",
+ "name": "पोलिश"
+ },
+ "zgh": {
+ "code": "zgh",
+ "name": "पà¥à¤°à¤®à¤¾à¤£ मोरोकà¥à¤•à¤¨ तॅमॅà¤à¤¾à¤¯à¤Ÿ"
+ },
+ "fo": {
+ "code": "fo",
+ "name": "फरोइज"
+ },
+ "fa": {
+ "code": "fa",
+ "name": "फारसी"
+ },
+ "fi": {
+ "code": "fi",
+ "name": "फिनà¥à¤¨à¤¿à¤¶"
+ },
+ "fil": {
+ "code": "fil",
+ "name": "फिलिपिनो"
+ },
+ "ff": {
+ "code": "ff",
+ "name": "फà¥à¤²à¤¾à¤¹"
+ },
+ "fur": {
+ "code": "fur",
+ "name": "फà¥à¤°à¤¿à¤¯à¥à¤²à¤¿à¤¯à¤¾à¤¨"
+ },
+ "fr": {
+ "code": "fr",
+ "name": "फà¥à¤°à¥‡à¤‚च"
+ },
+ "nl-BE": {
+ "code": "nl-BE",
+ "name": "फà¥à¤²à¥‡à¤®à¤¿à¤¶"
+ },
+ "bn": {
+ "code": "bn",
+ "name": "बंगाली"
+ },
+ "my": {
+ "code": "my",
+ "name": "बरà¥à¤®à¥€"
+ },
+ "bg": {
+ "code": "bg",
+ "name": "बलà¥à¤—ेरियन"
+ },
+ "bas": {
+ "code": "bas",
+ "name": "बसा"
+ },
+ "ksf": {
+ "code": "ksf",
+ "name": "बाफिया"
+ },
+ "bm": {
+ "code": "bm",
+ "name": "बामà¥à¤¬à¤¾à¤°à¤¾"
+ },
+ "eu": {
+ "code": "eu",
+ "name": "बासà¥à¤•"
+ },
+ "bez": {
+ "code": "bez",
+ "name": "बेना"
+ },
+ "be": {
+ "code": "be",
+ "name": "बेलारà¥à¤¶à¤¿à¤¯à¤¨"
+ },
+ "brx": {
+ "code": "brx",
+ "name": "बोडो"
+ },
+ "bs": {
+ "code": "bs",
+ "name": "बोसà¥à¤¨à¤¿à¤¯à¤¨"
+ },
+ "pt-BR": {
+ "code": "pt-BR",
+ "name": "बà¥à¤°à¤¾à¤à¤¿à¤²à¤¿à¤¯à¤¨ पोरà¥à¤¤à¥à¤—ीज"
+ },
+ "en-GB": {
+ "code": "en-GB",
+ "name": "बà¥à¤°à¤¿à¤Ÿà¤¿à¤¶ इंगà¥à¤°à¤œà¥€"
+ },
+ "br": {
+ "code": "br",
+ "name": "बà¥à¤°à¥‡à¤¤à¥‰à¤¨"
+ },
+ "mn": {
+ "code": "mn",
+ "name": "मंगोलियन"
+ },
+ "tzm": {
+ "code": "tzm",
+ "name": "मधà¥à¤¯ à¤à¤Ÿà¤²à¤¾à¤¸ तॅमॅà¤à¤¾à¤¯à¤Ÿ"
+ },
+ "mr": {
+ "code": "mr",
+ "name": "मराठी"
+ },
+ "ms": {
+ "code": "ms",
+ "name": "मलय"
+ },
+ "mg": {
+ "code": "mg",
+ "name": "मलागसी"
+ },
+ "ml": {
+ "code": "ml",
+ "name": "मलà¥à¤¯à¤¾à¤³à¤®"
+ },
+ "jmc": {
+ "code": "jmc",
+ "name": "मशामे"
+ },
+ "mas": {
+ "code": "mas",
+ "name": "मसाई"
+ },
+ "kde": {
+ "code": "kde",
+ "name": "माकोनà¥à¤¦à¥‡"
+ },
+ "mgh": {
+ "code": "mgh",
+ "name": "माखà¥à¤µà¥à¤¹à¤¾-मीटà¥à¤Ÿà¥‹"
+ },
+ "mt": {
+ "code": "mt",
+ "name": "मालà¥à¤Ÿà¤¿à¤œà¥"
+ },
+ "mua": {
+ "code": "mua",
+ "name": "मà¥à¤‚डांग"
+ },
+ "mk": {
+ "code": "mk",
+ "name": "मॅसेडोनियन"
+ },
+ "es-MX": {
+ "code": "es-MX",
+ "name": "मेकà¥à¤¸à¤¿à¤•à¤¨ सà¥à¤ªà¥…निश"
+ },
+ "mer": {
+ "code": "mer",
+ "name": "मेरू"
+ },
+ "mfe": {
+ "code": "mfe",
+ "name": "मोरिसà¥à¤¯à¥‡à¤¨"
+ },
+ "ro-MD": {
+ "code": "ro-MD",
+ "name": "मोलà¥à¤¡à¤¾à¤µà¥à¤¹à¤¿à¤¯à¤¨"
+ },
+ "uk": {
+ "code": "uk",
+ "name": "यà¥à¤•à¥à¤°à¥‡à¤¨à¤¿à¤¯à¤¨"
+ },
+ "pt-PT": {
+ "code": "pt-PT",
+ "name": "यà¥à¤°à¥‹à¤ªà¤¿à¤¯à¤¨ पोरà¥à¤¤à¥à¤—ीज"
+ },
+ "es-ES": {
+ "code": "es-ES",
+ "name": "यà¥à¤°à¥‹à¤ªà¤¿à¤¯à¤¨ सà¥à¤ªà¥…निश"
+ },
+ "yo": {
+ "code": "yo",
+ "name": "योरà¥à¤¬à¤¾"
+ },
+ "rwk": {
+ "code": "rwk",
+ "name": "रवà¥à¤¹à¤¾"
+ },
+ "ru": {
+ "code": "ru",
+ "name": "रशियन"
+ },
+ "rn": {
+ "code": "rn",
+ "name": "रà¥à¤¨à¥à¤¦à¥€"
+ },
+ "ro": {
+ "code": "ro",
+ "name": "रोमानियन"
+ },
+ "rm": {
+ "code": "rm",
+ "name": "रोमानà¥à¤¶"
+ },
+ "rof": {
+ "code": "rof",
+ "name": "रोमà¥à¤¬à¥‹"
+ },
+ "lb": {
+ "code": "lb",
+ "name": "लकà¥à¤à¥‡à¤‚बरà¥à¤—िश"
+ },
+ "lag": {
+ "code": "lag",
+ "name": "लांगी"
+ },
+ "lo": {
+ "code": "lo",
+ "name": "लाओ"
+ },
+ "lv": {
+ "code": "lv",
+ "name": "लातà¥à¤µà¥à¤¹à¤¿à¤¯à¤¨"
+ },
+ "ln": {
+ "code": "ln",
+ "name": "लिंगाला"
+ },
+ "lt": {
+ "code": "lt",
+ "name": "लिथà¥à¤†à¤¨à¤¿à¤¯à¤¨"
+ },
+ "dsb": {
+ "code": "dsb",
+ "name": "लोअर सोरà¥à¤¬à¤¿à¤¯à¤¨"
+ },
+ "luy": {
+ "code": "luy",
+ "name": "लà¥à¤¯à¥à¤‡à¤¯à¤¾"
+ },
+ "luo": {
+ "code": "luo",
+ "name": "लà¥à¤¯à¥à¤“"
+ },
+ "lu": {
+ "code": "lu",
+ "name": "लà¥à¤¯à¥‚बा-कटांगा"
+ },
+ "vai": {
+ "code": "vai",
+ "name": "वाई"
+ },
+ "vun": {
+ "code": "vun",
+ "name": "वà¥à¤‚जो"
+ },
+ "cy": {
+ "code": "cy",
+ "name": "वेलà¥à¤¶"
+ },
+ "vi": {
+ "code": "vi",
+ "name": "वà¥à¤¹à¤¿à¤à¤¤à¤¨à¤¾à¤®à¥€"
+ },
+ "ksb": {
+ "code": "ksb",
+ "name": "शांबाला"
+ },
+ "sn": {
+ "code": "sn",
+ "name": "शोना"
+ },
+ "zh-Hans": {
+ "code": "zh-Hans",
+ "name": "सरलीकृत चीनी"
+ },
+ "sr": {
+ "code": "sr",
+ "name": "सरà¥à¤¬à¤¿à¤¯à¤¨"
+ },
+ "sbp": {
+ "code": "sbp",
+ "name": "सांगà¥"
+ },
+ "sg": {
+ "code": "sg",
+ "name": "सांगो"
+ },
+ "saq": {
+ "code": "saq",
+ "name": "सांबà¥à¤°à¥‚"
+ },
+ "si": {
+ "code": "si",
+ "name": "सिंहला"
+ },
+ "seh": {
+ "code": "seh",
+ "name": "सेना"
+ },
+ "xog": {
+ "code": "xog",
+ "name": "सोगा"
+ },
+ "so": {
+ "code": "so",
+ "name": "सोमाली"
+ },
+ "gd": {
+ "code": "gd",
+ "name": "सà¥à¤•à¥‰à¤Ÿà¥à¤¸ गेलिक"
+ },
+ "es": {
+ "code": "es",
+ "name": "सà¥à¤ªà¥…निश"
+ },
+ "sk": {
+ "code": "sk",
+ "name": "सà¥à¤²à¥‹à¤µà¥à¤¹à¤¾à¤•"
+ },
+ "sl": {
+ "code": "sl",
+ "name": "सà¥à¤²à¥‹à¤µà¥à¤¹à¥‡à¤¨à¤¿à¤¯à¤¨"
+ },
+ "sw": {
+ "code": "sw",
+ "name": "सà¥à¤µà¤¾à¤¹à¤¿à¤²à¥€"
+ },
+ "gsw": {
+ "code": "gsw",
+ "name": "सà¥à¤µà¤¿à¤¸ जरà¥à¤®à¤¨"
+ },
+ "fr-CH": {
+ "code": "fr-CH",
+ "name": "सà¥à¤µà¤¿à¤¸ फà¥à¤°à¥‡à¤‚च"
+ },
+ "de-CH": {
+ "code": "de-CH",
+ "name": "सà¥à¤µà¤¿à¤¸ हाय जरà¥à¤®à¤¨"
+ },
+ "sv": {
+ "code": "sv",
+ "name": "सà¥à¤µà¥€à¤¡à¤¿à¤¶"
+ },
+ "hu": {
+ "code": "hu",
+ "name": "हंगेरियन"
+ },
+ "hi": {
+ "code": "hi",
+ "name": "हिंदी"
+ },
+ "he": {
+ "code": "he",
+ "name": "हिबà¥à¤°à¥‚"
+ },
+ "ha": {
+ "code": "ha",
+ "name": "हौसा"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/language/ms.json b/library/intl/resources/language/ms.json
new file mode 100644
index 000000000..40e671ae1
--- /dev/null
+++ b/library/intl/resources/language/ms.json
@@ -0,0 +1,738 @@
+{
+ "af": {
+ "code": "af",
+ "name": "Afrikaans"
+ },
+ "agq": {
+ "code": "agq",
+ "name": "Aghem"
+ },
+ "ak": {
+ "code": "ak",
+ "name": "Akan"
+ },
+ "sq": {
+ "code": "sq",
+ "name": "Albania"
+ },
+ "am": {
+ "code": "am",
+ "name": "Amharic"
+ },
+ "ar": {
+ "code": "ar",
+ "name": "Arab"
+ },
+ "ar-001": {
+ "code": "ar-001",
+ "name": "Arab Standard Moden"
+ },
+ "hy": {
+ "code": "hy",
+ "name": "Armenia"
+ },
+ "ast": {
+ "code": "ast",
+ "name": "Asturian"
+ },
+ "asa": {
+ "code": "asa",
+ "name": "Asu"
+ },
+ "az": {
+ "code": "az",
+ "name": "Azerbaijan"
+ },
+ "ksf": {
+ "code": "ksf",
+ "name": "Bafia"
+ },
+ "ms": {
+ "code": "ms",
+ "name": "Bahasa Melayu"
+ },
+ "bm": {
+ "code": "bm",
+ "name": "Bambara"
+ },
+ "bas": {
+ "code": "bas",
+ "name": "Basaa"
+ },
+ "eu": {
+ "code": "eu",
+ "name": "Basque"
+ },
+ "nl": {
+ "code": "nl",
+ "name": "Belanda"
+ },
+ "be": {
+ "code": "be",
+ "name": "Belarus"
+ },
+ "bez": {
+ "code": "bez",
+ "name": "Bena"
+ },
+ "bn": {
+ "code": "bn",
+ "name": "Benggala"
+ },
+ "brx": {
+ "code": "brx",
+ "name": "Bodo"
+ },
+ "nb": {
+ "code": "nb",
+ "name": "Bokmål Norway"
+ },
+ "bs": {
+ "code": "bs",
+ "name": "Bosnia"
+ },
+ "br": {
+ "code": "br",
+ "name": "Breton"
+ },
+ "bg": {
+ "code": "bg",
+ "name": "Bulgaria"
+ },
+ "my": {
+ "code": "my",
+ "name": "Burma"
+ },
+ "ca": {
+ "code": "ca",
+ "name": "Catalonia"
+ },
+ "chr": {
+ "code": "chr",
+ "name": "Cherokee"
+ },
+ "cgg": {
+ "code": "cgg",
+ "name": "Chiga"
+ },
+ "zh": {
+ "code": "zh",
+ "name": "Cina"
+ },
+ "zh-Hans": {
+ "code": "zh-Hans",
+ "name": "Cina Ringkas"
+ },
+ "zh-Hant": {
+ "code": "zh-Hant",
+ "name": "Cina Tradisional"
+ },
+ "ksh": {
+ "code": "ksh",
+ "name": "Colognian"
+ },
+ "swc": {
+ "code": "swc",
+ "name": "Congo Swahili"
+ },
+ "hr": {
+ "code": "hr",
+ "name": "Croat"
+ },
+ "cs": {
+ "code": "cs",
+ "name": "Czech"
+ },
+ "da": {
+ "code": "da",
+ "name": "Denmark"
+ },
+ "dz": {
+ "code": "dz",
+ "name": "Dzongkha"
+ },
+ "ebu": {
+ "code": "ebu",
+ "name": "Embu"
+ },
+ "eo": {
+ "code": "eo",
+ "name": "Esperanto"
+ },
+ "et": {
+ "code": "et",
+ "name": "Estonia"
+ },
+ "ee": {
+ "code": "ee",
+ "name": "Ewe"
+ },
+ "ewo": {
+ "code": "ewo",
+ "name": "Ewondo"
+ },
+ "fo": {
+ "code": "fo",
+ "name": "Faroe"
+ },
+ "fil": {
+ "code": "fil",
+ "name": "Filipina"
+ },
+ "fi": {
+ "code": "fi",
+ "name": "Finland"
+ },
+ "nl-BE": {
+ "code": "nl-BE",
+ "name": "Flemish"
+ },
+ "fy": {
+ "code": "fy",
+ "name": "Frisian"
+ },
+ "fur": {
+ "code": "fur",
+ "name": "Friulian"
+ },
+ "ff": {
+ "code": "ff",
+ "name": "Fulah"
+ },
+ "gl": {
+ "code": "gl",
+ "name": "Galicia"
+ },
+ "lg": {
+ "code": "lg",
+ "name": "Ganda"
+ },
+ "ka": {
+ "code": "ka",
+ "name": "Georgia"
+ },
+ "el": {
+ "code": "el",
+ "name": "Greek"
+ },
+ "gu": {
+ "code": "gu",
+ "name": "Gujerat"
+ },
+ "guz": {
+ "code": "guz",
+ "name": "Gusii"
+ },
+ "ha": {
+ "code": "ha",
+ "name": "Hausa"
+ },
+ "hi": {
+ "code": "hi",
+ "name": "Hindi"
+ },
+ "hu": {
+ "code": "hu",
+ "name": "Hungary"
+ },
+ "he": {
+ "code": "he",
+ "name": "Ibrani"
+ },
+ "is": {
+ "code": "is",
+ "name": "Iceland"
+ },
+ "id": {
+ "code": "id",
+ "name": "Indonesia"
+ },
+ "en": {
+ "code": "en",
+ "name": "Inggeris"
+ },
+ "en-US": {
+ "code": "en-US",
+ "name": "Inggeris AS"
+ },
+ "en-AU": {
+ "code": "en-AU",
+ "name": "Inggeris Australia"
+ },
+ "en-GB": {
+ "code": "en-GB",
+ "name": "Inggeris British"
+ },
+ "en-CA": {
+ "code": "en-CA",
+ "name": "Inggeris Kanada"
+ },
+ "ga": {
+ "code": "ga",
+ "name": "Ireland"
+ },
+ "it": {
+ "code": "it",
+ "name": "Itali"
+ },
+ "ja": {
+ "code": "ja",
+ "name": "Jepun"
+ },
+ "de": {
+ "code": "de",
+ "name": "Jerman"
+ },
+ "de-AT": {
+ "code": "de-AT",
+ "name": "Jerman Austria"
+ },
+ "de-CH": {
+ "code": "de-CH",
+ "name": "Jerman Halus Switzerland"
+ },
+ "gsw": {
+ "code": "gsw",
+ "name": "Jerman Switzerland"
+ },
+ "dyo": {
+ "code": "dyo",
+ "name": "Jola-Fonyi"
+ },
+ "kea": {
+ "code": "kea",
+ "name": "Kabuverdianu"
+ },
+ "kab": {
+ "code": "kab",
+ "name": "Kabyle"
+ },
+ "kl": {
+ "code": "kl",
+ "name": "Kalaallisut"
+ },
+ "kln": {
+ "code": "kln",
+ "name": "Kalenjin"
+ },
+ "kam": {
+ "code": "kam",
+ "name": "Kamba"
+ },
+ "kn": {
+ "code": "kn",
+ "name": "Kannada"
+ },
+ "ks": {
+ "code": "ks",
+ "name": "Kashmir"
+ },
+ "kk": {
+ "code": "kk",
+ "name": "Kazakhstan"
+ },
+ "km": {
+ "code": "km",
+ "name": "Khmer"
+ },
+ "ki": {
+ "code": "ki",
+ "name": "Kikuya"
+ },
+ "ky": {
+ "code": "ky",
+ "name": "Kirghiz"
+ },
+ "ko": {
+ "code": "ko",
+ "name": "Korea"
+ },
+ "khq": {
+ "code": "khq",
+ "name": "Koyra Chiini"
+ },
+ "ses": {
+ "code": "ses",
+ "name": "Koyraboro Senni"
+ },
+ "nmg": {
+ "code": "nmg",
+ "name": "Kwasio"
+ },
+ "lag": {
+ "code": "lag",
+ "name": "Langi"
+ },
+ "lo": {
+ "code": "lo",
+ "name": "Laos"
+ },
+ "lv": {
+ "code": "lv",
+ "name": "Latvia"
+ },
+ "ln": {
+ "code": "ln",
+ "name": "Lingala"
+ },
+ "lt": {
+ "code": "lt",
+ "name": "Lithuania"
+ },
+ "dsb": {
+ "code": "dsb",
+ "name": "Lower Sorbian"
+ },
+ "lu": {
+ "code": "lu",
+ "name": "Luba-Katanga"
+ },
+ "luo": {
+ "code": "luo",
+ "name": "Luo"
+ },
+ "lb": {
+ "code": "lb",
+ "name": "Luxembourg"
+ },
+ "luy": {
+ "code": "luy",
+ "name": "Luyia"
+ },
+ "mk": {
+ "code": "mk",
+ "name": "Macedonia"
+ },
+ "jmc": {
+ "code": "jmc",
+ "name": "Machame"
+ },
+ "mgh": {
+ "code": "mgh",
+ "name": "Makhuwa-Meetto"
+ },
+ "kde": {
+ "code": "kde",
+ "name": "Makonde"
+ },
+ "mg": {
+ "code": "mg",
+ "name": "Malagasy"
+ },
+ "ml": {
+ "code": "ml",
+ "name": "Malayalam"
+ },
+ "mt": {
+ "code": "mt",
+ "name": "Malta"
+ },
+ "mr": {
+ "code": "mr",
+ "name": "Marathi"
+ },
+ "mas": {
+ "code": "mas",
+ "name": "Masai"
+ },
+ "mer": {
+ "code": "mer",
+ "name": "Meru"
+ },
+ "ro-MD": {
+ "code": "ro-MD",
+ "name": "Moldavia"
+ },
+ "mn": {
+ "code": "mn",
+ "name": "Mongolia"
+ },
+ "mfe": {
+ "code": "mfe",
+ "name": "Morisyen"
+ },
+ "mua": {
+ "code": "mua",
+ "name": "Mundang"
+ },
+ "naq": {
+ "code": "naq",
+ "name": "Nama"
+ },
+ "nd": {
+ "code": "nd",
+ "name": "Ndebele Utara"
+ },
+ "ne": {
+ "code": "ne",
+ "name": "Nepal"
+ },
+ "jgo": {
+ "code": "jgo",
+ "name": "Ngomba"
+ },
+ "nus": {
+ "code": "nus",
+ "name": "Nuer"
+ },
+ "nyn": {
+ "code": "nyn",
+ "name": "Nyankole"
+ },
+ "nn": {
+ "code": "nn",
+ "name": "Nynorsk Norway"
+ },
+ "or": {
+ "code": "or",
+ "name": "Oriya"
+ },
+ "fa": {
+ "code": "fa",
+ "name": "Parsi"
+ },
+ "ps": {
+ "code": "ps",
+ "name": "Pashto"
+ },
+ "fr": {
+ "code": "fr",
+ "name": "Perancis"
+ },
+ "fr-CA": {
+ "code": "fr-CA",
+ "name": "Perancis Kanada"
+ },
+ "fr-CH": {
+ "code": "fr-CH",
+ "name": "Perancis Switzerland"
+ },
+ "pl": {
+ "code": "pl",
+ "name": "Poland"
+ },
+ "pt": {
+ "code": "pt",
+ "name": "Portugis"
+ },
+ "pt-BR": {
+ "code": "pt-BR",
+ "name": "Portugis Brazil"
+ },
+ "pt-PT": {
+ "code": "pt-PT",
+ "name": "Portugis Eropah"
+ },
+ "pa": {
+ "code": "pa",
+ "name": "Punjabi"
+ },
+ "ro": {
+ "code": "ro",
+ "name": "Romania"
+ },
+ "rm": {
+ "code": "rm",
+ "name": "Romansh"
+ },
+ "rof": {
+ "code": "rof",
+ "name": "Rombo"
+ },
+ "rn": {
+ "code": "rn",
+ "name": "Rundi"
+ },
+ "ru": {
+ "code": "ru",
+ "name": "Rusia"
+ },
+ "rwk": {
+ "code": "rwk",
+ "name": "Rwa"
+ },
+ "saq": {
+ "code": "saq",
+ "name": "Samburu"
+ },
+ "se": {
+ "code": "se",
+ "name": "Sami Utara"
+ },
+ "sg": {
+ "code": "sg",
+ "name": "Sango"
+ },
+ "sbp": {
+ "code": "sbp",
+ "name": "Sangu"
+ },
+ "gd": {
+ "code": "gd",
+ "name": "Scots Gaelic"
+ },
+ "seh": {
+ "code": "seh",
+ "name": "Sena"
+ },
+ "es": {
+ "code": "es",
+ "name": "Sepanyol"
+ },
+ "es-ES": {
+ "code": "es-ES",
+ "name": "Sepanyol Eropah"
+ },
+ "es-MX": {
+ "code": "es-MX",
+ "name": "Sepanyol Mexico"
+ },
+ "sr": {
+ "code": "sr",
+ "name": "Serbia"
+ },
+ "ksb": {
+ "code": "ksb",
+ "name": "Shambala"
+ },
+ "sn": {
+ "code": "sn",
+ "name": "Shona"
+ },
+ "si": {
+ "code": "si",
+ "name": "Sinhala"
+ },
+ "sk": {
+ "code": "sk",
+ "name": "Slovak"
+ },
+ "sl": {
+ "code": "sl",
+ "name": "Slovenia"
+ },
+ "xog": {
+ "code": "xog",
+ "name": "Soga"
+ },
+ "so": {
+ "code": "so",
+ "name": "Somali"
+ },
+ "sw": {
+ "code": "sw",
+ "name": "Swahili"
+ },
+ "sv": {
+ "code": "sv",
+ "name": "Sweden"
+ },
+ "shi": {
+ "code": "shi",
+ "name": "Tachelhit"
+ },
+ "dav": {
+ "code": "dav",
+ "name": "Taita"
+ },
+ "tzm": {
+ "code": "tzm",
+ "name": "Tamazight Atlas Tengah"
+ },
+ "zgh": {
+ "code": "zgh",
+ "name": "Tamazight Maghribi Standard"
+ },
+ "ta": {
+ "code": "ta",
+ "name": "Tamil"
+ },
+ "twq": {
+ "code": "twq",
+ "name": "Tasawaq"
+ },
+ "te": {
+ "code": "te",
+ "name": "Telugu"
+ },
+ "teo": {
+ "code": "teo",
+ "name": "Teso"
+ },
+ "th": {
+ "code": "th",
+ "name": "Thai"
+ },
+ "bo": {
+ "code": "bo",
+ "name": "Tibet"
+ },
+ "ti": {
+ "code": "ti",
+ "name": "Tigrinya"
+ },
+ "to": {
+ "code": "to",
+ "name": "Tonga"
+ },
+ "tr": {
+ "code": "tr",
+ "name": "Turki"
+ },
+ "uk": {
+ "code": "uk",
+ "name": "Ukraine"
+ },
+ "hsb": {
+ "code": "hsb",
+ "name": "Upper Sorbian"
+ },
+ "ur": {
+ "code": "ur",
+ "name": "Urdu"
+ },
+ "ug": {
+ "code": "ug",
+ "name": "Uyghur"
+ },
+ "uz": {
+ "code": "uz",
+ "name": "Uzbekistan"
+ },
+ "vai": {
+ "code": "vai",
+ "name": "Vai"
+ },
+ "vi": {
+ "code": "vi",
+ "name": "Vietnam"
+ },
+ "vun": {
+ "code": "vun",
+ "name": "Vunjo"
+ },
+ "cy": {
+ "code": "cy",
+ "name": "Wales"
+ },
+ "wae": {
+ "code": "wae",
+ "name": "Walser"
+ },
+ "yav": {
+ "code": "yav",
+ "name": "Yangben"
+ },
+ "yo": {
+ "code": "yo",
+ "name": "Yoruba"
+ },
+ "dje": {
+ "code": "dje",
+ "name": "Zarma"
+ },
+ "zu": {
+ "code": "zu",
+ "name": "Zulu"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/language/mt.json b/library/intl/resources/language/mt.json
new file mode 100644
index 000000000..112c079d0
--- /dev/null
+++ b/library/intl/resources/language/mt.json
@@ -0,0 +1,738 @@
+{
+ "af": {
+ "code": "af",
+ "name": "Afrikans"
+ },
+ "agq": {
+ "code": "agq",
+ "name": "Aghem"
+ },
+ "ak": {
+ "code": "ak",
+ "name": "Akan"
+ },
+ "sq": {
+ "code": "sq",
+ "name": "Albaniż"
+ },
+ "am": {
+ "code": "am",
+ "name": "Amħariku"
+ },
+ "hy": {
+ "code": "hy",
+ "name": "Armenjan"
+ },
+ "ast": {
+ "code": "ast",
+ "name": "Asturian"
+ },
+ "asa": {
+ "code": "asa",
+ "name": "Asu"
+ },
+ "az": {
+ "code": "az",
+ "name": "Ażerbajġani"
+ },
+ "ksf": {
+ "code": "ksf",
+ "name": "Bafia"
+ },
+ "bm": {
+ "code": "bm",
+ "name": "Bambara"
+ },
+ "bas": {
+ "code": "bas",
+ "name": "Basa"
+ },
+ "eu": {
+ "code": "eu",
+ "name": "Bask"
+ },
+ "be": {
+ "code": "be",
+ "name": "Belarussu"
+ },
+ "bez": {
+ "code": "bez",
+ "name": "Bena"
+ },
+ "bn": {
+ "code": "bn",
+ "name": "Bengali"
+ },
+ "brx": {
+ "code": "brx",
+ "name": "Bodo"
+ },
+ "nb": {
+ "code": "nb",
+ "name": "Bokmahal Norveġiż"
+ },
+ "bs": {
+ "code": "bs",
+ "name": "Bosnijan"
+ },
+ "br": {
+ "code": "br",
+ "name": "Brenton"
+ },
+ "bg": {
+ "code": "bg",
+ "name": "Bulgaru"
+ },
+ "my": {
+ "code": "my",
+ "name": "Burmiż"
+ },
+ "cs": {
+ "code": "cs",
+ "name": "ÄŠek"
+ },
+ "chr": {
+ "code": "chr",
+ "name": "ÄŠerokij"
+ },
+ "zh": {
+ "code": "zh",
+ "name": "Ċiniż"
+ },
+ "zh-Hans": {
+ "code": "zh-Hans",
+ "name": "Ċiniż Simplifikat"
+ },
+ "tzm": {
+ "code": "tzm",
+ "name": "Central Atlas Tamazight"
+ },
+ "cgg": {
+ "code": "cgg",
+ "name": "Chiga"
+ },
+ "ksh": {
+ "code": "ksh",
+ "name": "Colognian"
+ },
+ "swc": {
+ "code": "swc",
+ "name": "Congo Swahili"
+ },
+ "da": {
+ "code": "da",
+ "name": "Daniż"
+ },
+ "de-AT": {
+ "code": "de-AT",
+ "name": "de_AT"
+ },
+ "de-CH": {
+ "code": "de-CH",
+ "name": "de_CH"
+ },
+ "dz": {
+ "code": "dz",
+ "name": "Dżongka"
+ },
+ "he": {
+ "code": "he",
+ "name": "Ebrajk"
+ },
+ "ebu": {
+ "code": "ebu",
+ "name": "Embu"
+ },
+ "en-CA": {
+ "code": "en-CA",
+ "name": "en_CA"
+ },
+ "es-ES": {
+ "code": "es-ES",
+ "name": "es_ES"
+ },
+ "es-MX": {
+ "code": "es-MX",
+ "name": "es_MX"
+ },
+ "eo": {
+ "code": "eo",
+ "name": "Esperanto"
+ },
+ "et": {
+ "code": "et",
+ "name": "Estonjan"
+ },
+ "ee": {
+ "code": "ee",
+ "name": "Ewe"
+ },
+ "ewo": {
+ "code": "ewo",
+ "name": "Ewondo"
+ },
+ "fo": {
+ "code": "fo",
+ "name": "Fawriż"
+ },
+ "fil": {
+ "code": "fil",
+ "name": "Filippino"
+ },
+ "fi": {
+ "code": "fi",
+ "name": "Finlandiż"
+ },
+ "fr": {
+ "code": "fr",
+ "name": "Franċiż"
+ },
+ "fr-CA": {
+ "code": "fr-CA",
+ "name": "Franċiż Kanadiż"
+ },
+ "fr-CH": {
+ "code": "fr-CH",
+ "name": "Franċiż Żvizzeru"
+ },
+ "fur": {
+ "code": "fur",
+ "name": "Frijuljan"
+ },
+ "fy": {
+ "code": "fy",
+ "name": "Friżjan"
+ },
+ "ff": {
+ "code": "ff",
+ "name": "Fulaħ"
+ },
+ "ja": {
+ "code": "ja",
+ "name": "Ġappuniż"
+ },
+ "de": {
+ "code": "de",
+ "name": "Ġermaniż"
+ },
+ "ka": {
+ "code": "ka",
+ "name": "Ġorġjan"
+ },
+ "gl": {
+ "code": "gl",
+ "name": "Gallegjan"
+ },
+ "gd": {
+ "code": "gd",
+ "name": "Galliku Skoċċiż"
+ },
+ "lg": {
+ "code": "lg",
+ "name": "Ganda"
+ },
+ "el": {
+ "code": "el",
+ "name": "Grieg"
+ },
+ "gu": {
+ "code": "gu",
+ "name": "Guġarati"
+ },
+ "guz": {
+ "code": "guz",
+ "name": "Gusii"
+ },
+ "ar": {
+ "code": "ar",
+ "name": "Għarbi"
+ },
+ "ar-001": {
+ "code": "ar-001",
+ "name": "Għarbi Standard Modern"
+ },
+ "ha": {
+ "code": "ha",
+ "name": "Ħawsa"
+ },
+ "hi": {
+ "code": "hi",
+ "name": "Ħindi"
+ },
+ "id": {
+ "code": "id",
+ "name": "Indoneżjan"
+ },
+ "en": {
+ "code": "en",
+ "name": "Ingliż"
+ },
+ "en-US": {
+ "code": "en-US",
+ "name": "Ingliż Amerikan"
+ },
+ "en-AU": {
+ "code": "en-AU",
+ "name": "Ingliż Awstraljan"
+ },
+ "en-GB": {
+ "code": "en-GB",
+ "name": "Ingliż Brittaniku"
+ },
+ "ga": {
+ "code": "ga",
+ "name": "Irlandiż"
+ },
+ "is": {
+ "code": "is",
+ "name": "Iżlandiż"
+ },
+ "dyo": {
+ "code": "dyo",
+ "name": "Jola-Fonyi"
+ },
+ "yo": {
+ "code": "yo",
+ "name": "Joruba"
+ },
+ "kab": {
+ "code": "kab",
+ "name": "Kabuljan"
+ },
+ "kea": {
+ "code": "kea",
+ "name": "Kabuverdianu"
+ },
+ "kl": {
+ "code": "kl",
+ "name": "Kalallisut"
+ },
+ "kln": {
+ "code": "kln",
+ "name": "Kalenjin"
+ },
+ "kam": {
+ "code": "kam",
+ "name": "Kamba"
+ },
+ "kn": {
+ "code": "kn",
+ "name": "Kannada"
+ },
+ "ca": {
+ "code": "ca",
+ "name": "Katalan"
+ },
+ "ks": {
+ "code": "ks",
+ "name": "Kaxmiri"
+ },
+ "kk": {
+ "code": "kk",
+ "name": "Każak"
+ },
+ "ki": {
+ "code": "ki",
+ "name": "Kikuju"
+ },
+ "ky": {
+ "code": "ky",
+ "name": "Kirgiż"
+ },
+ "km": {
+ "code": "km",
+ "name": "Kmer"
+ },
+ "ko": {
+ "code": "ko",
+ "name": "Korejan"
+ },
+ "khq": {
+ "code": "khq",
+ "name": "Koyra Chiini"
+ },
+ "ses": {
+ "code": "ses",
+ "name": "Koyraboro Senni"
+ },
+ "hr": {
+ "code": "hr",
+ "name": "Kroat"
+ },
+ "nmg": {
+ "code": "nmg",
+ "name": "Kwasio"
+ },
+ "lag": {
+ "code": "lag",
+ "name": "Langi"
+ },
+ "lo": {
+ "code": "lo",
+ "name": "Lao"
+ },
+ "lv": {
+ "code": "lv",
+ "name": "Latvjan"
+ },
+ "lb": {
+ "code": "lb",
+ "name": "Letżburgiż"
+ },
+ "ln": {
+ "code": "ln",
+ "name": "Lingaljan"
+ },
+ "lt": {
+ "code": "lt",
+ "name": "Litwanjan"
+ },
+ "dsb": {
+ "code": "dsb",
+ "name": "Lower Sorbian"
+ },
+ "lu": {
+ "code": "lu",
+ "name": "Luba-Katanga"
+ },
+ "luo": {
+ "code": "luo",
+ "name": "Luwa"
+ },
+ "luy": {
+ "code": "luy",
+ "name": "Luyia"
+ },
+ "mk": {
+ "code": "mk",
+ "name": "Maċedonjan"
+ },
+ "jmc": {
+ "code": "jmc",
+ "name": "Machame"
+ },
+ "mgh": {
+ "code": "mgh",
+ "name": "Makhuwa-Meetto"
+ },
+ "kde": {
+ "code": "kde",
+ "name": "Makonde"
+ },
+ "mg": {
+ "code": "mg",
+ "name": "Malagażi"
+ },
+ "ml": {
+ "code": "ml",
+ "name": "Malajalam"
+ },
+ "ms": {
+ "code": "ms",
+ "name": "Malajan"
+ },
+ "mt": {
+ "code": "mt",
+ "name": "Malti"
+ },
+ "mr": {
+ "code": "mr",
+ "name": "Marati"
+ },
+ "mas": {
+ "code": "mas",
+ "name": "Masaj"
+ },
+ "mer": {
+ "code": "mer",
+ "name": "Meru"
+ },
+ "ro-MD": {
+ "code": "ro-MD",
+ "name": "Moldavjan"
+ },
+ "mn": {
+ "code": "mn",
+ "name": "Mongoljan"
+ },
+ "mfe": {
+ "code": "mfe",
+ "name": "Morisyen"
+ },
+ "mua": {
+ "code": "mua",
+ "name": "Mundang"
+ },
+ "naq": {
+ "code": "naq",
+ "name": "Nama"
+ },
+ "nd": {
+ "code": "nd",
+ "name": "Ndebele, ta’ Fuq"
+ },
+ "ne": {
+ "code": "ne",
+ "name": "Nepaliż"
+ },
+ "jgo": {
+ "code": "jgo",
+ "name": "Ngomba"
+ },
+ "nn": {
+ "code": "nn",
+ "name": "Ninorsk Norveġiż"
+ },
+ "nl-BE": {
+ "code": "nl-BE",
+ "name": "nl_BE"
+ },
+ "nus": {
+ "code": "nus",
+ "name": "Nuer"
+ },
+ "nyn": {
+ "code": "nyn",
+ "name": "Nyankole"
+ },
+ "nl": {
+ "code": "nl",
+ "name": "Olandiż"
+ },
+ "or": {
+ "code": "or",
+ "name": "Orija"
+ },
+ "ps": {
+ "code": "ps",
+ "name": "Paxtun"
+ },
+ "fa": {
+ "code": "fa",
+ "name": "Persjan"
+ },
+ "pl": {
+ "code": "pl",
+ "name": "Pollakk"
+ },
+ "pt": {
+ "code": "pt",
+ "name": "Portugiż"
+ },
+ "pt-BR": {
+ "code": "pt-BR",
+ "name": "pt_BR"
+ },
+ "pt-PT": {
+ "code": "pt-PT",
+ "name": "pt_PT"
+ },
+ "pa": {
+ "code": "pa",
+ "name": "Punġabi"
+ },
+ "rm": {
+ "code": "rm",
+ "name": "Reto-Romanz"
+ },
+ "rof": {
+ "code": "rof",
+ "name": "Rombo"
+ },
+ "ro": {
+ "code": "ro",
+ "name": "Rumen"
+ },
+ "rn": {
+ "code": "rn",
+ "name": "Rundi"
+ },
+ "ru": {
+ "code": "ru",
+ "name": "Russu"
+ },
+ "rwk": {
+ "code": "rwk",
+ "name": "Rwa"
+ },
+ "saq": {
+ "code": "saq",
+ "name": "Samburu"
+ },
+ "se": {
+ "code": "se",
+ "name": "Sami ta’ Fuq"
+ },
+ "sg": {
+ "code": "sg",
+ "name": "Sango"
+ },
+ "sbp": {
+ "code": "sbp",
+ "name": "Sangu"
+ },
+ "seh": {
+ "code": "seh",
+ "name": "Sena"
+ },
+ "sr": {
+ "code": "sr",
+ "name": "Serb"
+ },
+ "ksb": {
+ "code": "ksb",
+ "name": "Shambala"
+ },
+ "si": {
+ "code": "si",
+ "name": "Sinħaliż"
+ },
+ "sk": {
+ "code": "sk",
+ "name": "Slovakk"
+ },
+ "sl": {
+ "code": "sl",
+ "name": "Sloven"
+ },
+ "xog": {
+ "code": "xog",
+ "name": "Soga"
+ },
+ "so": {
+ "code": "so",
+ "name": "Somali"
+ },
+ "es": {
+ "code": "es",
+ "name": "Spanjol"
+ },
+ "zgh": {
+ "code": "zgh",
+ "name": "Standard Moroccan Tamazight"
+ },
+ "sv": {
+ "code": "sv",
+ "name": "Svediż"
+ },
+ "sw": {
+ "code": "sw",
+ "name": "Swaħili"
+ },
+ "gsw": {
+ "code": "gsw",
+ "name": "Swiss German"
+ },
+ "shi": {
+ "code": "shi",
+ "name": "Tachelhit"
+ },
+ "dav": {
+ "code": "dav",
+ "name": "Taita"
+ },
+ "th": {
+ "code": "th",
+ "name": "Tajlandiż"
+ },
+ "it": {
+ "code": "it",
+ "name": "Taljan"
+ },
+ "ta": {
+ "code": "ta",
+ "name": "Tamil"
+ },
+ "twq": {
+ "code": "twq",
+ "name": "Tasawaq"
+ },
+ "te": {
+ "code": "te",
+ "name": "Telugu"
+ },
+ "teo": {
+ "code": "teo",
+ "name": "Teso"
+ },
+ "bo": {
+ "code": "bo",
+ "name": "Tibetjan"
+ },
+ "ti": {
+ "code": "ti",
+ "name": "Tigrinja"
+ },
+ "to": {
+ "code": "to",
+ "name": "Tongan"
+ },
+ "tr": {
+ "code": "tr",
+ "name": "Tork"
+ },
+ "uk": {
+ "code": "uk",
+ "name": "Ukranjan"
+ },
+ "hu": {
+ "code": "hu",
+ "name": "Ungeriż"
+ },
+ "hsb": {
+ "code": "hsb",
+ "name": "Upper Sorbian"
+ },
+ "ur": {
+ "code": "ur",
+ "name": "Urdu"
+ },
+ "uz": {
+ "code": "uz",
+ "name": "Użbek"
+ },
+ "vai": {
+ "code": "vai",
+ "name": "Vai"
+ },
+ "vi": {
+ "code": "vi",
+ "name": "Vjetnamiż"
+ },
+ "vun": {
+ "code": "vun",
+ "name": "Vunjo"
+ },
+ "wae": {
+ "code": "wae",
+ "name": "Walser"
+ },
+ "cy": {
+ "code": "cy",
+ "name": "Welx"
+ },
+ "ug": {
+ "code": "ug",
+ "name": "Wigur"
+ },
+ "sn": {
+ "code": "sn",
+ "name": "Xona"
+ },
+ "yav": {
+ "code": "yav",
+ "name": "Yangben"
+ },
+ "zu": {
+ "code": "zu",
+ "name": "Żulu"
+ },
+ "dje": {
+ "code": "dje",
+ "name": "Zarma"
+ },
+ "zh-Hant": {
+ "code": "zh-Hant",
+ "name": "zh_Hant"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/language/mua.json b/library/intl/resources/language/mua.json
new file mode 100644
index 000000000..ac78db429
--- /dev/null
+++ b/library/intl/resources/language/mua.json
@@ -0,0 +1,738 @@
+{
+ "af": {
+ "code": "af",
+ "name": "Afrikaans"
+ },
+ "agq": {
+ "code": "agq",
+ "name": "Aghem"
+ },
+ "ak": {
+ "code": "ak",
+ "name": "akaŋ"
+ },
+ "sq": {
+ "code": "sq",
+ "name": "Albanian"
+ },
+ "am": {
+ "code": "am",
+ "name": "amharik"
+ },
+ "ar-001": {
+ "code": "ar-001",
+ "name": "ar_001"
+ },
+ "ar": {
+ "code": "ar",
+ "name": "arabiya"
+ },
+ "hy": {
+ "code": "hy",
+ "name": "Armenian"
+ },
+ "ast": {
+ "code": "ast",
+ "name": "Asturian"
+ },
+ "asa": {
+ "code": "asa",
+ "name": "Asu"
+ },
+ "az": {
+ "code": "az",
+ "name": "Azerbaijani"
+ },
+ "ksf": {
+ "code": "ksf",
+ "name": "Bafia"
+ },
+ "bm": {
+ "code": "bm",
+ "name": "Bambara"
+ },
+ "bas": {
+ "code": "bas",
+ "name": "Basaa"
+ },
+ "eu": {
+ "code": "eu",
+ "name": "Basque"
+ },
+ "be": {
+ "code": "be",
+ "name": "belarussiya"
+ },
+ "bez": {
+ "code": "bez",
+ "name": "Bena"
+ },
+ "bn": {
+ "code": "bn",
+ "name": "bengalia"
+ },
+ "my": {
+ "code": "my",
+ "name": "birmania"
+ },
+ "brx": {
+ "code": "brx",
+ "name": "Bodo"
+ },
+ "bs": {
+ "code": "bs",
+ "name": "Bosnian"
+ },
+ "br": {
+ "code": "br",
+ "name": "Breton"
+ },
+ "bg": {
+ "code": "bg",
+ "name": "bulgaria"
+ },
+ "ca": {
+ "code": "ca",
+ "name": "Catalan"
+ },
+ "tzm": {
+ "code": "tzm",
+ "name": "Central Atlas Tamazight"
+ },
+ "chr": {
+ "code": "chr",
+ "name": "Cherokee"
+ },
+ "cgg": {
+ "code": "cgg",
+ "name": "Chiga"
+ },
+ "ksh": {
+ "code": "ksh",
+ "name": "Colognian"
+ },
+ "swc": {
+ "code": "swc",
+ "name": "Congo Swahili"
+ },
+ "hr": {
+ "code": "hr",
+ "name": "Croatian"
+ },
+ "da": {
+ "code": "da",
+ "name": "Danish"
+ },
+ "de-AT": {
+ "code": "de-AT",
+ "name": "de_AT"
+ },
+ "de-CH": {
+ "code": "de-CH",
+ "name": "de_CH"
+ },
+ "dz": {
+ "code": "dz",
+ "name": "Dzongkha"
+ },
+ "ebu": {
+ "code": "ebu",
+ "name": "Embu"
+ },
+ "en-AU": {
+ "code": "en-AU",
+ "name": "en_AU"
+ },
+ "en-CA": {
+ "code": "en-CA",
+ "name": "en_CA"
+ },
+ "en-GB": {
+ "code": "en-GB",
+ "name": "en_GB"
+ },
+ "en-US": {
+ "code": "en-US",
+ "name": "en_US"
+ },
+ "es-ES": {
+ "code": "es-ES",
+ "name": "es_ES"
+ },
+ "es-MX": {
+ "code": "es-MX",
+ "name": "es_MX"
+ },
+ "es": {
+ "code": "es",
+ "name": "Espaniya"
+ },
+ "eo": {
+ "code": "eo",
+ "name": "Esperanto"
+ },
+ "et": {
+ "code": "et",
+ "name": "Estonian"
+ },
+ "ee": {
+ "code": "ee",
+ "name": "Ewe"
+ },
+ "ewo": {
+ "code": "ewo",
+ "name": "Ewondo"
+ },
+ "fo": {
+ "code": "fo",
+ "name": "Faroese"
+ },
+ "fil": {
+ "code": "fil",
+ "name": "Filipino"
+ },
+ "fi": {
+ "code": "fi",
+ "name": "Finnish"
+ },
+ "fr-CA": {
+ "code": "fr-CA",
+ "name": "fr_CA"
+ },
+ "fr-CH": {
+ "code": "fr-CH",
+ "name": "fr_CH"
+ },
+ "fur": {
+ "code": "fur",
+ "name": "Friulian"
+ },
+ "ff": {
+ "code": "ff",
+ "name": "Fulah"
+ },
+ "gl": {
+ "code": "gl",
+ "name": "Galician"
+ },
+ "lg": {
+ "code": "lg",
+ "name": "Ganda"
+ },
+ "ka": {
+ "code": "ka",
+ "name": "Georgian"
+ },
+ "de": {
+ "code": "de",
+ "name": "germaŋ"
+ },
+ "el": {
+ "code": "el",
+ "name": "grek"
+ },
+ "gu": {
+ "code": "gu",
+ "name": "Gujarati"
+ },
+ "guz": {
+ "code": "guz",
+ "name": "Gusii"
+ },
+ "ha": {
+ "code": "ha",
+ "name": "haussa"
+ },
+ "he": {
+ "code": "he",
+ "name": "Hebrew"
+ },
+ "hi": {
+ "code": "hi",
+ "name": "hindi"
+ },
+ "hu": {
+ "code": "hu",
+ "name": "hungariya"
+ },
+ "is": {
+ "code": "is",
+ "name": "Icelandic"
+ },
+ "id": {
+ "code": "id",
+ "name": "indonesiya"
+ },
+ "ga": {
+ "code": "ga",
+ "name": "Irish"
+ },
+ "it": {
+ "code": "it",
+ "name": "italiya"
+ },
+ "dyo": {
+ "code": "dyo",
+ "name": "Jola-Fonyi"
+ },
+ "kea": {
+ "code": "kea",
+ "name": "Kabuverdianu"
+ },
+ "kab": {
+ "code": "kab",
+ "name": "Kabyle"
+ },
+ "kl": {
+ "code": "kl",
+ "name": "Kalaallisut"
+ },
+ "kln": {
+ "code": "kln",
+ "name": "Kalenjin"
+ },
+ "kam": {
+ "code": "kam",
+ "name": "Kamba"
+ },
+ "kn": {
+ "code": "kn",
+ "name": "Kannada"
+ },
+ "ks": {
+ "code": "ks",
+ "name": "Kashmiri"
+ },
+ "kk": {
+ "code": "kk",
+ "name": "Kazakh"
+ },
+ "ki": {
+ "code": "ki",
+ "name": "Kikuyu"
+ },
+ "km": {
+ "code": "km",
+ "name": "kmer"
+ },
+ "ko": {
+ "code": "ko",
+ "name": "korea"
+ },
+ "khq": {
+ "code": "khq",
+ "name": "Koyra Chiini"
+ },
+ "ses": {
+ "code": "ses",
+ "name": "Koyraboro Senni"
+ },
+ "nmg": {
+ "code": "nmg",
+ "name": "Kwasio"
+ },
+ "ky": {
+ "code": "ky",
+ "name": "Kyrgyz"
+ },
+ "lag": {
+ "code": "lag",
+ "name": "Langi"
+ },
+ "lo": {
+ "code": "lo",
+ "name": "Lao"
+ },
+ "lv": {
+ "code": "lv",
+ "name": "Latvian"
+ },
+ "ln": {
+ "code": "ln",
+ "name": "Lingala"
+ },
+ "lt": {
+ "code": "lt",
+ "name": "Lithuanian"
+ },
+ "dsb": {
+ "code": "dsb",
+ "name": "Lower Sorbian"
+ },
+ "lu": {
+ "code": "lu",
+ "name": "Luba-Katanga"
+ },
+ "luo": {
+ "code": "luo",
+ "name": "Luo"
+ },
+ "lb": {
+ "code": "lb",
+ "name": "Luxembourgish"
+ },
+ "luy": {
+ "code": "luy",
+ "name": "Luyia"
+ },
+ "mk": {
+ "code": "mk",
+ "name": "Macedonian"
+ },
+ "jmc": {
+ "code": "jmc",
+ "name": "Machame"
+ },
+ "mgh": {
+ "code": "mgh",
+ "name": "Makhuwa-Meetto"
+ },
+ "kde": {
+ "code": "kde",
+ "name": "Makonde"
+ },
+ "mg": {
+ "code": "mg",
+ "name": "Malagasy"
+ },
+ "ms": {
+ "code": "ms",
+ "name": "malasiya"
+ },
+ "ml": {
+ "code": "ml",
+ "name": "Malayalam"
+ },
+ "mt": {
+ "code": "mt",
+ "name": "Maltese"
+ },
+ "mr": {
+ "code": "mr",
+ "name": "Marathi"
+ },
+ "mas": {
+ "code": "mas",
+ "name": "Masai"
+ },
+ "mer": {
+ "code": "mer",
+ "name": "Meru"
+ },
+ "mn": {
+ "code": "mn",
+ "name": "Mongolian"
+ },
+ "mfe": {
+ "code": "mfe",
+ "name": "Morisyen"
+ },
+ "mua": {
+ "code": "mua",
+ "name": "MUNDAÅŠ"
+ },
+ "naq": {
+ "code": "naq",
+ "name": "Nama"
+ },
+ "ne": {
+ "code": "ne",
+ "name": "Nepaliya"
+ },
+ "jgo": {
+ "code": "jgo",
+ "name": "Ngomba"
+ },
+ "nl-BE": {
+ "code": "nl-BE",
+ "name": "nl_BE"
+ },
+ "nd": {
+ "code": "nd",
+ "name": "North Ndebele"
+ },
+ "se": {
+ "code": "se",
+ "name": "Northern Sami"
+ },
+ "nb": {
+ "code": "nb",
+ "name": "Norwegian Bokmål"
+ },
+ "nn": {
+ "code": "nn",
+ "name": "Norwegian Nynorsk"
+ },
+ "nus": {
+ "code": "nus",
+ "name": "Nuer"
+ },
+ "nyn": {
+ "code": "nyn",
+ "name": "Nyankole"
+ },
+ "or": {
+ "code": "or",
+ "name": "Oriya"
+ },
+ "ps": {
+ "code": "ps",
+ "name": "Pashto"
+ },
+ "fa": {
+ "code": "fa",
+ "name": "Persia"
+ },
+ "pa": {
+ "code": "pa",
+ "name": "PÇnjabi"
+ },
+ "pl": {
+ "code": "pl",
+ "name": "Poloniya"
+ },
+ "pt-BR": {
+ "code": "pt-BR",
+ "name": "pt_BR"
+ },
+ "pt-PT": {
+ "code": "pt-PT",
+ "name": "pt_PT"
+ },
+ "ro-MD": {
+ "code": "ro-MD",
+ "name": "ro_MD"
+ },
+ "ro": {
+ "code": "ro",
+ "name": "Romaniya"
+ },
+ "rm": {
+ "code": "rm",
+ "name": "Romansh"
+ },
+ "rof": {
+ "code": "rof",
+ "name": "Rombo"
+ },
+ "rn": {
+ "code": "rn",
+ "name": "Rundi"
+ },
+ "ru": {
+ "code": "ru",
+ "name": "Russiya"
+ },
+ "rwk": {
+ "code": "rwk",
+ "name": "Rwa"
+ },
+ "saq": {
+ "code": "saq",
+ "name": "Samburu"
+ },
+ "sg": {
+ "code": "sg",
+ "name": "Sango"
+ },
+ "sbp": {
+ "code": "sbp",
+ "name": "Sangu"
+ },
+ "gd": {
+ "code": "gd",
+ "name": "Scottish Gaelic"
+ },
+ "seh": {
+ "code": "seh",
+ "name": "Sena"
+ },
+ "sr": {
+ "code": "sr",
+ "name": "Serbian"
+ },
+ "ksb": {
+ "code": "ksb",
+ "name": "Shambala"
+ },
+ "sn": {
+ "code": "sn",
+ "name": "Shona"
+ },
+ "si": {
+ "code": "si",
+ "name": "Sinhala"
+ },
+ "sk": {
+ "code": "sk",
+ "name": "Slovak"
+ },
+ "sl": {
+ "code": "sl",
+ "name": "Slovenian"
+ },
+ "xog": {
+ "code": "xog",
+ "name": "Soga"
+ },
+ "so": {
+ "code": "so",
+ "name": "Somaliya"
+ },
+ "zgh": {
+ "code": "zgh",
+ "name": "Standard Moroccan Tamazight"
+ },
+ "sw": {
+ "code": "sw",
+ "name": "Swahili"
+ },
+ "sv": {
+ "code": "sv",
+ "name": "Swedia"
+ },
+ "gsw": {
+ "code": "gsw",
+ "name": "Swiss German"
+ },
+ "cs": {
+ "code": "cs",
+ "name": "syekya"
+ },
+ "shi": {
+ "code": "shi",
+ "name": "Tachelhit"
+ },
+ "dav": {
+ "code": "dav",
+ "name": "Taita"
+ },
+ "ta": {
+ "code": "ta",
+ "name": "Tamul"
+ },
+ "twq": {
+ "code": "twq",
+ "name": "Tasawaq"
+ },
+ "te": {
+ "code": "te",
+ "name": "Telugu"
+ },
+ "teo": {
+ "code": "teo",
+ "name": "Teso"
+ },
+ "th": {
+ "code": "th",
+ "name": "Thai"
+ },
+ "bo": {
+ "code": "bo",
+ "name": "Tibetan"
+ },
+ "ti": {
+ "code": "ti",
+ "name": "Tigrinya"
+ },
+ "to": {
+ "code": "to",
+ "name": "Tongan"
+ },
+ "tr": {
+ "code": "tr",
+ "name": "Turk"
+ },
+ "uk": {
+ "code": "uk",
+ "name": "Ukrainia"
+ },
+ "hsb": {
+ "code": "hsb",
+ "name": "Upper Sorbian"
+ },
+ "ur": {
+ "code": "ur",
+ "name": "Urdu"
+ },
+ "ug": {
+ "code": "ug",
+ "name": "Uyghur"
+ },
+ "uz": {
+ "code": "uz",
+ "name": "Uzbek"
+ },
+ "vai": {
+ "code": "vai",
+ "name": "Vai"
+ },
+ "vi": {
+ "code": "vi",
+ "name": "Vietnamiya"
+ },
+ "vun": {
+ "code": "vun",
+ "name": "Vunjo"
+ },
+ "wae": {
+ "code": "wae",
+ "name": "Walser"
+ },
+ "cy": {
+ "code": "cy",
+ "name": "Welsh"
+ },
+ "fy": {
+ "code": "fy",
+ "name": "Western Frisian"
+ },
+ "yav": {
+ "code": "yav",
+ "name": "Yangben"
+ },
+ "yo": {
+ "code": "yo",
+ "name": "Yoruba"
+ },
+ "en": {
+ "code": "en",
+ "name": "zah Anglofoŋ"
+ },
+ "fr": {
+ "code": "fr",
+ "name": "zah sÇr FranssÇ"
+ },
+ "ja": {
+ "code": "ja",
+ "name": "zah sÇr JapoÅ‹"
+ },
+ "nl": {
+ "code": "nl",
+ "name": "zah sÇr ma kasÇÅ‹"
+ },
+ "pt": {
+ "code": "pt",
+ "name": "Zah sÇr Portugal"
+ },
+ "zh": {
+ "code": "zh",
+ "name": "zah Syiŋ"
+ },
+ "dje": {
+ "code": "dje",
+ "name": "Zarma"
+ },
+ "zh-Hans": {
+ "code": "zh-Hans",
+ "name": "zh_Hans"
+ },
+ "zh-Hant": {
+ "code": "zh-Hant",
+ "name": "zh_Hant"
+ },
+ "zu": {
+ "code": "zu",
+ "name": "Zulu"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/language/my.json b/library/intl/resources/language/my.json
new file mode 100644
index 000000000..72622da2b
--- /dev/null
+++ b/library/intl/resources/language/my.json
@@ -0,0 +1,738 @@
+{
+ "ast": {
+ "code": "ast",
+ "name": "Asturian"
+ },
+ "ksh": {
+ "code": "ksh",
+ "name": "Colognian"
+ },
+ "es-MX": {
+ "code": "es-MX",
+ "name": "es_MX"
+ },
+ "ewo": {
+ "code": "ewo",
+ "name": "Ewondo"
+ },
+ "fur": {
+ "code": "fur",
+ "name": "Friulian"
+ },
+ "ff": {
+ "code": "ff",
+ "name": "Fulah"
+ },
+ "ro-MD": {
+ "code": "ro-MD",
+ "name": "ro_MD"
+ },
+ "gd": {
+ "code": "gd",
+ "name": "Scottish Gaelic"
+ },
+ "wae": {
+ "code": "wae",
+ "name": "Walser"
+ },
+ "yav": {
+ "code": "yav",
+ "name": "Yangben"
+ },
+ "fr-CA": {
+ "code": "fr-CA",
+ "name": "ကနေဒါ ပြင်သစ်"
+ },
+ "en-CA": {
+ "code": "en-CA",
+ "name": "ကနေဒါ အင်္ဂလိပ်"
+ },
+ "ca": {
+ "code": "ca",
+ "name": "ကာá€á€¬á€œá€”်"
+ },
+ "ko": {
+ "code": "ko",
+ "name": "ကိုးရီးယား"
+ },
+ "ks": {
+ "code": "ks",
+ "name": "ကက်ရှ်မီရီ"
+ },
+ "kn": {
+ "code": "kn",
+ "name": "ကန္နာဒါ"
+ },
+ "kea": {
+ "code": "kea",
+ "name": "á€á€˜á€°á€—ာဒီအာနူ"
+ },
+ "kab": {
+ "code": "kab",
+ "name": "á€á€˜á€­á€¯á€„်လ်"
+ },
+ "km": {
+ "code": "km",
+ "name": "á€á€™á€¬"
+ },
+ "ky": {
+ "code": "ky",
+ "name": "á€á€›á€°á€‚စ်"
+ },
+ "hr": {
+ "code": "hr",
+ "name": "á€á€›á€­á€¯á€¡á€±á€›á€¾á€”်"
+ },
+ "kl": {
+ "code": "kl",
+ "name": "á€á€œá€¬á€¡á€ºá€œá€®á€†á€•á€º"
+ },
+ "kk": {
+ "code": "kk",
+ "name": "á€á€«á€‡á€«á€á€º"
+ },
+ "kln": {
+ "code": "kln",
+ "name": "á€á€«á€œá€­á€™á€ºá€‚ျင်"
+ },
+ "ki": {
+ "code": "ki",
+ "name": "á€á€®á€á€°á€šá€°"
+ },
+ "khq": {
+ "code": "khq",
+ "name": "á€á€­á€¯á€›á€¬ á€á€»á€®á€¡á€®á€”ီ"
+ },
+ "ses": {
+ "code": "ses",
+ "name": "á€á€­á€¯á€›á€¬á€˜á€­á€¯á€›á€­á€¯ ဆမ်နီ"
+ },
+ "kam": {
+ "code": "kam",
+ "name": "á€á€™á€ºá€˜á€¬"
+ },
+ "chr": {
+ "code": "chr",
+ "name": "á€á€»á€¬á€›á€­á€¯á€€á€®"
+ },
+ "cgg": {
+ "code": "cgg",
+ "name": "á€á€»á€®á€‚ါ"
+ },
+ "cs": {
+ "code": "cs",
+ "name": "á€á€»á€€á€º"
+ },
+ "swc": {
+ "code": "swc",
+ "name": "á€á€½á€”်ဂို စွာဟီလီ"
+ },
+ "el": {
+ "code": "el",
+ "name": "ဂရိ"
+ },
+ "gl": {
+ "code": "gl",
+ "name": "ဂါလာစီယံ"
+ },
+ "gu": {
+ "code": "gu",
+ "name": "ဂူဂျာရသီ"
+ },
+ "guz": {
+ "code": "guz",
+ "name": "ဂူစီး"
+ },
+ "lg": {
+ "code": "lg",
+ "name": "ဂန်ဒီ"
+ },
+ "ja": {
+ "code": "ja",
+ "name": "ဂျပန်"
+ },
+ "de": {
+ "code": "de",
+ "name": "ဂျာမန်"
+ },
+ "ka": {
+ "code": "ka",
+ "name": "ဂျော်ဂျီယန်"
+ },
+ "dyo": {
+ "code": "dyo",
+ "name": "ဂျိုလာ-ဖွန်ရီ"
+ },
+ "jgo": {
+ "code": "jgo",
+ "name": "ဂွမ်ဘာ"
+ },
+ "es": {
+ "code": "es",
+ "name": "စပိန်"
+ },
+ "es-ES": {
+ "code": "es-ES",
+ "name": "စပိန်(ဥရောပ)"
+ },
+ "sl": {
+ "code": "sl",
+ "name": "စလိုဗေးနီးယမ်း"
+ },
+ "sk": {
+ "code": "sk",
+ "name": "စလိုဗက်"
+ },
+ "seh": {
+ "code": "seh",
+ "name": "စီနာ"
+ },
+ "sr": {
+ "code": "sr",
+ "name": "ဆားဗီးယန်း"
+ },
+ "xog": {
+ "code": "xog",
+ "name": "ဆိုဂါ"
+ },
+ "so": {
+ "code": "so",
+ "name": "ဆိုမာလီ"
+ },
+ "si": {
+ "code": "si",
+ "name": "ဆင်ဟာလ"
+ },
+ "sbp": {
+ "code": "sbp",
+ "name": "ဆန်ဂု"
+ },
+ "saq": {
+ "code": "saq",
+ "name": "ဆန်ဘူရု"
+ },
+ "sg": {
+ "code": "sg",
+ "name": "ဆမ်ဂို"
+ },
+ "sw": {
+ "code": "sw",
+ "name": "ဆြာဟီလီ"
+ },
+ "sv": {
+ "code": "sv",
+ "name": "ဆွီဒင်"
+ },
+ "gsw": {
+ "code": "gsw",
+ "name": "ဆွစ် ဂျာမန်"
+ },
+ "fr-CH": {
+ "code": "fr-CH",
+ "name": "ဆွစ် ပြင်သစ်"
+ },
+ "de-CH": {
+ "code": "de-CH",
+ "name": "ဆွစ် အမြင့် ဂျာမန်"
+ },
+ "dje": {
+ "code": "dje",
+ "name": "ဇာမာ"
+ },
+ "zu": {
+ "code": "zu",
+ "name": "ဇူလူ"
+ },
+ "ta": {
+ "code": "ta",
+ "name": "á€á€™á€®á€¸á€œá€º"
+ },
+ "zh": {
+ "code": "zh",
+ "name": "á€á€›á€¯á€á€º"
+ },
+ "tr": {
+ "code": "tr",
+ "name": "á€á€¬á€€á€…်"
+ },
+ "shi": {
+ "code": "shi",
+ "name": "á€á€¬á€á€»á€šá€ºá€œá€ºá€Ÿá€…်"
+ },
+ "twq": {
+ "code": "twq",
+ "name": "á€á€¬á€†á€¬á€á€«á€á€º"
+ },
+ "bo": {
+ "code": "bo",
+ "name": "á€á€­á€˜á€€á€º"
+ },
+ "teo": {
+ "code": "teo",
+ "name": "á€á€®á€†á€­á€¯"
+ },
+ "te": {
+ "code": "te",
+ "name": "á€á€®á€œá€®á€‚ု"
+ },
+ "ti": {
+ "code": "ti",
+ "name": "á€á€®á€‚်ရင်ရာ"
+ },
+ "se": {
+ "code": "se",
+ "name": "á€á€±á€¬á€„်ဆာမိ"
+ },
+ "nd": {
+ "code": "nd",
+ "name": "á€á€±á€¬á€„်ဒီဘီလီ"
+ },
+ "dav": {
+ "code": "dav",
+ "name": "á€á€­á€¯á€„်á€á€¬"
+ },
+ "to": {
+ "code": "to",
+ "name": "á€á€½á€”်ဂါ"
+ },
+ "th": {
+ "code": "th",
+ "name": "ထိုင်း"
+ },
+ "nl": {
+ "code": "nl",
+ "name": "ဒá€á€ºá€á€»á€º"
+ },
+ "da": {
+ "code": "da",
+ "name": "ဒိန်းမá€á€º"
+ },
+ "dz": {
+ "code": "dz",
+ "name": "ဒွန်ကာ"
+ },
+ "naq": {
+ "code": "naq",
+ "name": "နာမာ"
+ },
+ "ne": {
+ "code": "ne",
+ "name": "နီပါလီ"
+ },
+ "nus": {
+ "code": "nus",
+ "name": "နူအာ"
+ },
+ "nn": {
+ "code": "nn",
+ "name": "နော်á€á€±á€¸ နီးနော်စ်á€á€º"
+ },
+ "fa": {
+ "code": "fa",
+ "name": "ပါရှန်"
+ },
+ "ps": {
+ "code": "ps",
+ "name": "ပါရှ်á€á€­á€¯"
+ },
+ "pt": {
+ "code": "pt",
+ "name": "ပေါ်á€á€°á€‚ီ"
+ },
+ "pl": {
+ "code": "pl",
+ "name": "ပိုလန်"
+ },
+ "pa": {
+ "code": "pa",
+ "name": "ပန်á€á€»á€¬á€•á€®"
+ },
+ "fr": {
+ "code": "fr",
+ "name": "ပြင်သစ်"
+ },
+ "nl-BE": {
+ "code": "nl-BE",
+ "name": "ဖလီမစ်ရှ်"
+ },
+ "fo": {
+ "code": "fo",
+ "name": "ဖာရိုအိစ်"
+ },
+ "fil": {
+ "code": "fil",
+ "name": "ဖိလစ်ပီနို"
+ },
+ "fi": {
+ "code": "fi",
+ "name": "ဖင်နစ်ရှ်"
+ },
+ "my": {
+ "code": "my",
+ "name": "ဗမာ"
+ },
+ "vi": {
+ "code": "vi",
+ "name": "ဗီယက်နမ်"
+ },
+ "brx": {
+ "code": "brx",
+ "name": "ဗိုဒို"
+ },
+ "vai": {
+ "code": "vai",
+ "name": "ဗိုင်"
+ },
+ "vun": {
+ "code": "vun",
+ "name": "ဗန်ဂျို"
+ },
+ "en-GB": {
+ "code": "en-GB",
+ "name": "ဗြိá€á€­á€žá€»á€¾ အင်္ဂလိပ်"
+ },
+ "pt-BR": {
+ "code": "pt-BR",
+ "name": "ဘရာဇီး ပေါ်á€á€°á€‚ီ"
+ },
+ "br": {
+ "code": "br",
+ "name": "ဘရီá€á€½á€”်"
+ },
+ "bas": {
+ "code": "bas",
+ "name": "ဘာဆာ"
+ },
+ "ksf": {
+ "code": "ksf",
+ "name": "ဘာဖီအာ"
+ },
+ "bez": {
+ "code": "bez",
+ "name": "ဘီနာ"
+ },
+ "be": {
+ "code": "be",
+ "name": "ဘီလာရု"
+ },
+ "bg": {
+ "code": "bg",
+ "name": "ဘူဂေးရီးယား"
+ },
+ "bs": {
+ "code": "bs",
+ "name": "ဘော့စ်နီးယား"
+ },
+ "bn": {
+ "code": "bn",
+ "name": "ဘင်္ဂါလီ"
+ },
+ "eu": {
+ "code": "eu",
+ "name": "ဘစ်က္ကီ"
+ },
+ "bm": {
+ "code": "bm",
+ "name": "ဘန်ဘာရာ"
+ },
+ "nb": {
+ "code": "nb",
+ "name": "ဘွá€á€ºá€™á€±á€¬á€ºá€œá€º"
+ },
+ "jmc": {
+ "code": "jmc",
+ "name": "မá€á€»á€¬á€™á€®"
+ },
+ "ms": {
+ "code": "ms",
+ "name": "မလေး"
+ },
+ "ml": {
+ "code": "ml",
+ "name": "မလေးရာလမ်"
+ },
+ "mgh": {
+ "code": "mgh",
+ "name": "မာá€á€°á€á€«-မီအီá€á€­á€¯"
+ },
+ "kde": {
+ "code": "kde",
+ "name": "မာá€á€½á€”်ဒီ"
+ },
+ "mk": {
+ "code": "mk",
+ "name": "မာစီဒိုနီယံ"
+ },
+ "mas": {
+ "code": "mas",
+ "name": "မာဆိုင်"
+ },
+ "mr": {
+ "code": "mr",
+ "name": "မာရသီ"
+ },
+ "mer": {
+ "code": "mer",
+ "name": "မီရု"
+ },
+ "zgh": {
+ "code": "zgh",
+ "name": "မိုရိုကန် á€á€½á€™á€ºá€™á€‡á€­á€¯á€á€º စံ"
+ },
+ "mfe": {
+ "code": "mfe",
+ "name": "မိုရှီစ်ယန်း"
+ },
+ "mua": {
+ "code": "mua",
+ "name": "မန်ဒန်း"
+ },
+ "mt": {
+ "code": "mt",
+ "name": "မောလ္á€á€®á€…်"
+ },
+ "mn": {
+ "code": "mn",
+ "name": "မွန်ဂိုလီးယန်း"
+ },
+ "uk": {
+ "code": "uk",
+ "name": "ယူကရိန်း"
+ },
+ "nyn": {
+ "code": "nyn",
+ "name": "ယန်ကိုလီ"
+ },
+ "ru": {
+ "code": "ru",
+ "name": "ရုရှ"
+ },
+ "rm": {
+ "code": "rm",
+ "name": "ရောမ"
+ },
+ "ro": {
+ "code": "ro",
+ "name": "ရိုမေနီယား"
+ },
+ "yo": {
+ "code": "yo",
+ "name": "ရိုရုဘာ"
+ },
+ "zh-Hans": {
+ "code": "zh-Hans",
+ "name": "ရိုးရှင်းသော á€á€›á€¯á€á€º"
+ },
+ "rn": {
+ "code": "rn",
+ "name": "ရွန်ဒီ"
+ },
+ "rof": {
+ "code": "rof",
+ "name": "ရွမ်ဘို"
+ },
+ "sn": {
+ "code": "sn",
+ "name": "ရှိနာ"
+ },
+ "zh-Hant": {
+ "code": "zh-Hant",
+ "name": "ရှေးရိုးစဉ်လာ á€á€›á€¯á€á€º"
+ },
+ "ksb": {
+ "code": "ksb",
+ "name": "ရှန်ဘာလာ"
+ },
+ "lo": {
+ "code": "lo",
+ "name": "လာအို"
+ },
+ "lb": {
+ "code": "lb",
+ "name": "လူဇင်ဘá€á€ºá€€á€º"
+ },
+ "lu": {
+ "code": "lu",
+ "name": "လူဘာ-á€á€«á€á€”်ဂါ"
+ },
+ "luy": {
+ "code": "luy",
+ "name": "လူရီအာ"
+ },
+ "luo": {
+ "code": "luo",
+ "name": "လူအို"
+ },
+ "lv": {
+ "code": "lv",
+ "name": "လက္ဘီအံ"
+ },
+ "ln": {
+ "code": "ln",
+ "name": "လင်ဂါလာ"
+ },
+ "lt": {
+ "code": "lt",
+ "name": "လစ္သူအာနီယံ"
+ },
+ "lag": {
+ "code": "lag",
+ "name": "လန်ဂီ"
+ },
+ "rwk": {
+ "code": "rwk",
+ "name": "á€á€«"
+ },
+ "nmg": {
+ "code": "nmg",
+ "name": "á€á€«á€†á€®á€¡á€­á€¯"
+ },
+ "ee": {
+ "code": "ee",
+ "name": "á€á€®"
+ },
+ "ug": {
+ "code": "ug",
+ "name": "á€á€®á€‚ါ"
+ },
+ "cy": {
+ "code": "cy",
+ "name": "á€á€±á€œ"
+ },
+ "ha": {
+ "code": "ha",
+ "name": "ဟာဥစာ"
+ },
+ "he": {
+ "code": "he",
+ "name": "ဟီးဘရူး"
+ },
+ "hu": {
+ "code": "hu",
+ "name": "ဟန်ဂေရီ"
+ },
+ "hi": {
+ "code": "hi",
+ "name": "ဟိန္ဒီ"
+ },
+ "fy": {
+ "code": "fy",
+ "name": "အနောက်ပိုင်း ဖရီစီရန်"
+ },
+ "hsb": {
+ "code": "hsb",
+ "name": "အပေါ်ဆိုဘီအမ်"
+ },
+ "en-US": {
+ "code": "en-US",
+ "name": "အမေရိကန် အင်္ဂလိပ်"
+ },
+ "ar-001": {
+ "code": "ar-001",
+ "name": "အရေဗီ(ပုံမှန်)"
+ },
+ "tzm": {
+ "code": "tzm",
+ "name": "အလယ်အက်á€á€ºá€œá€€á€ºá€…် á€á€¬á€™á€¬á€‡á€­á€¯á€€á€º"
+ },
+ "ak": {
+ "code": "ak",
+ "name": "အာကိန်"
+ },
+ "asa": {
+ "code": "asa",
+ "name": "အာစု"
+ },
+ "af": {
+ "code": "af",
+ "name": "အာဖရိကန်းစ်"
+ },
+ "hy": {
+ "code": "hy",
+ "name": "အာမေနီအန်"
+ },
+ "ar": {
+ "code": "ar",
+ "name": "အာရေဗီ"
+ },
+ "mg": {
+ "code": "mg",
+ "name": "အာလာဂါစီ"
+ },
+ "it": {
+ "code": "it",
+ "name": "အီá€á€œá€®"
+ },
+ "pt-PT": {
+ "code": "pt-PT",
+ "name": "ဥရောပ ပေါ်á€á€°á€‚ီ"
+ },
+ "uz": {
+ "code": "uz",
+ "name": "ဦးဇ်ဘက်"
+ },
+ "de-AT": {
+ "code": "de-AT",
+ "name": "ဩစá€á€¼á€®á€¸á€š ဂျာမန်"
+ },
+ "en-AU": {
+ "code": "en-AU",
+ "name": "ဩစá€á€¼á€±á€¸á€œá€»á€¾ အင်္ဂလိပ်"
+ },
+ "az": {
+ "code": "az",
+ "name": "အော်ဇောဘိုင်ဂျောနီ"
+ },
+ "ur": {
+ "code": "ur",
+ "name": "အော်ဒူ"
+ },
+ "or": {
+ "code": "or",
+ "name": "အိုရီရာ"
+ },
+ "eo": {
+ "code": "eo",
+ "name": "အက္စပရန္á€á€­á€¯"
+ },
+ "et": {
+ "code": "et",
+ "name": "အက်စ်á€á€­á€¯á€¸á€”ီးရန်း"
+ },
+ "dsb": {
+ "code": "dsb",
+ "name": "အောက်ဆိုဘီအမ်"
+ },
+ "agq": {
+ "code": "agq",
+ "name": "အာဂ်ဟိန်း"
+ },
+ "en": {
+ "code": "en",
+ "name": "အင်္ဂလိပ်"
+ },
+ "id": {
+ "code": "id",
+ "name": "အင်ဒိုနီးရှား"
+ },
+ "is": {
+ "code": "is",
+ "name": "အိုင်စ်လန္ဒီ"
+ },
+ "ga": {
+ "code": "ga",
+ "name": "အိုင်းရစ်"
+ },
+ "am": {
+ "code": "am",
+ "name": "အန်ဟာရစျá€á€»"
+ },
+ "ebu": {
+ "code": "ebu",
+ "name": "အမ်ဘူ"
+ },
+ "sq": {
+ "code": "sq",
+ "name": "အယ်လ်ဘေးနီးယန်း"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/language/naq.json b/library/intl/resources/language/naq.json
new file mode 100644
index 000000000..32c77cf2e
--- /dev/null
+++ b/library/intl/resources/language/naq.json
@@ -0,0 +1,738 @@
+{
+ "af": {
+ "code": "af",
+ "name": "Afrikaans"
+ },
+ "agq": {
+ "code": "agq",
+ "name": "Aghem"
+ },
+ "ak": {
+ "code": "ak",
+ "name": "Akangowab"
+ },
+ "sq": {
+ "code": "sq",
+ "name": "Albanian"
+ },
+ "am": {
+ "code": "am",
+ "name": "Amharicgowab"
+ },
+ "ar-001": {
+ "code": "ar-001",
+ "name": "ar_001"
+ },
+ "ar": {
+ "code": "ar",
+ "name": "ArabiÇî gowab"
+ },
+ "hy": {
+ "code": "hy",
+ "name": "Armenian"
+ },
+ "ast": {
+ "code": "ast",
+ "name": "Asturian"
+ },
+ "asa": {
+ "code": "asa",
+ "name": "Asu"
+ },
+ "az": {
+ "code": "az",
+ "name": "Azerbaijani"
+ },
+ "ksf": {
+ "code": "ksf",
+ "name": "Bafia"
+ },
+ "bm": {
+ "code": "bm",
+ "name": "Bambara"
+ },
+ "bas": {
+ "code": "bas",
+ "name": "Basaa"
+ },
+ "eu": {
+ "code": "eu",
+ "name": "Basque"
+ },
+ "be": {
+ "code": "be",
+ "name": "BelarusanÇî gowab"
+ },
+ "bez": {
+ "code": "bez",
+ "name": "Bena"
+ },
+ "bn": {
+ "code": "bn",
+ "name": "BengaliÇî gowab"
+ },
+ "brx": {
+ "code": "brx",
+ "name": "Bodo"
+ },
+ "bs": {
+ "code": "bs",
+ "name": "Bosnian"
+ },
+ "br": {
+ "code": "br",
+ "name": "Breton"
+ },
+ "bg": {
+ "code": "bg",
+ "name": "BulgariaÇî gowab"
+ },
+ "my": {
+ "code": "my",
+ "name": "BurmesÇî gowab"
+ },
+ "ca": {
+ "code": "ca",
+ "name": "Catalan"
+ },
+ "tzm": {
+ "code": "tzm",
+ "name": "Central Atlas Tamazight"
+ },
+ "chr": {
+ "code": "chr",
+ "name": "Cherokee"
+ },
+ "cgg": {
+ "code": "cgg",
+ "name": "Chiga"
+ },
+ "zh": {
+ "code": "zh",
+ "name": "ChineesÇî gowab, Mandarinni"
+ },
+ "ksh": {
+ "code": "ksh",
+ "name": "Colognian"
+ },
+ "swc": {
+ "code": "swc",
+ "name": "Congo Swahili"
+ },
+ "hr": {
+ "code": "hr",
+ "name": "Croatian"
+ },
+ "cs": {
+ "code": "cs",
+ "name": "CzechÇî gowab"
+ },
+ "da": {
+ "code": "da",
+ "name": "Danish"
+ },
+ "de-AT": {
+ "code": "de-AT",
+ "name": "de_AT"
+ },
+ "de-CH": {
+ "code": "de-CH",
+ "name": "de_CH"
+ },
+ "de": {
+ "code": "de",
+ "name": "Duits"
+ },
+ "dz": {
+ "code": "dz",
+ "name": "Dzongkha"
+ },
+ "ebu": {
+ "code": "ebu",
+ "name": "Embu"
+ },
+ "en-AU": {
+ "code": "en-AU",
+ "name": "en_AU"
+ },
+ "en-CA": {
+ "code": "en-CA",
+ "name": "en_CA"
+ },
+ "en-GB": {
+ "code": "en-GB",
+ "name": "en_GB"
+ },
+ "en-US": {
+ "code": "en-US",
+ "name": "en_US"
+ },
+ "en": {
+ "code": "en",
+ "name": "Engels"
+ },
+ "es-ES": {
+ "code": "es-ES",
+ "name": "es_ES"
+ },
+ "es-MX": {
+ "code": "es-MX",
+ "name": "es_MX"
+ },
+ "eo": {
+ "code": "eo",
+ "name": "Esperanto"
+ },
+ "et": {
+ "code": "et",
+ "name": "Estonian"
+ },
+ "ee": {
+ "code": "ee",
+ "name": "Ewe"
+ },
+ "ewo": {
+ "code": "ewo",
+ "name": "Ewondo"
+ },
+ "fo": {
+ "code": "fo",
+ "name": "Faroese"
+ },
+ "fil": {
+ "code": "fil",
+ "name": "Filipino"
+ },
+ "fi": {
+ "code": "fi",
+ "name": "Finnish"
+ },
+ "fr-CA": {
+ "code": "fr-CA",
+ "name": "fr_CA"
+ },
+ "fr-CH": {
+ "code": "fr-CH",
+ "name": "fr_CH"
+ },
+ "fr": {
+ "code": "fr",
+ "name": "Frans"
+ },
+ "fur": {
+ "code": "fur",
+ "name": "Friulian"
+ },
+ "ff": {
+ "code": "ff",
+ "name": "Fulah"
+ },
+ "gl": {
+ "code": "gl",
+ "name": "Galician"
+ },
+ "lg": {
+ "code": "lg",
+ "name": "Ganda"
+ },
+ "ka": {
+ "code": "ka",
+ "name": "Georgian"
+ },
+ "gu": {
+ "code": "gu",
+ "name": "Gujarati"
+ },
+ "guz": {
+ "code": "guz",
+ "name": "Gusii"
+ },
+ "ha": {
+ "code": "ha",
+ "name": "Hausagowab"
+ },
+ "he": {
+ "code": "he",
+ "name": "Hebrew"
+ },
+ "hi": {
+ "code": "hi",
+ "name": "Hindigowab"
+ },
+ "nl": {
+ "code": "nl",
+ "name": "Hollands"
+ },
+ "hu": {
+ "code": "hu",
+ "name": "HungariaÇî gowab"
+ },
+ "is": {
+ "code": "is",
+ "name": "Icelandic"
+ },
+ "id": {
+ "code": "id",
+ "name": "IndonesiaÇî gowab"
+ },
+ "ga": {
+ "code": "ga",
+ "name": "Irish"
+ },
+ "it": {
+ "code": "it",
+ "name": "Italians"
+ },
+ "ja": {
+ "code": "ja",
+ "name": "Japanees"
+ },
+ "dyo": {
+ "code": "dyo",
+ "name": "Jola-Fonyi"
+ },
+ "kea": {
+ "code": "kea",
+ "name": "Kabuverdianu"
+ },
+ "kab": {
+ "code": "kab",
+ "name": "Kabyle"
+ },
+ "kl": {
+ "code": "kl",
+ "name": "Kalaallisut"
+ },
+ "kln": {
+ "code": "kln",
+ "name": "Kalenjin"
+ },
+ "kam": {
+ "code": "kam",
+ "name": "Kamba"
+ },
+ "kn": {
+ "code": "kn",
+ "name": "Kannada"
+ },
+ "ks": {
+ "code": "ks",
+ "name": "Kashmiri"
+ },
+ "kk": {
+ "code": "kk",
+ "name": "Kazakh"
+ },
+ "km": {
+ "code": "km",
+ "name": "KhmerÇî gowab, Central"
+ },
+ "naq": {
+ "code": "naq",
+ "name": "Khoekhoegowab"
+ },
+ "ki": {
+ "code": "ki",
+ "name": "Kikuyu"
+ },
+ "ko": {
+ "code": "ko",
+ "name": "KoreaÇî gowab"
+ },
+ "khq": {
+ "code": "khq",
+ "name": "Koyra Chiini"
+ },
+ "ses": {
+ "code": "ses",
+ "name": "Koyraboro Senni"
+ },
+ "nmg": {
+ "code": "nmg",
+ "name": "Kwasio"
+ },
+ "ky": {
+ "code": "ky",
+ "name": "Kyrgyz"
+ },
+ "lag": {
+ "code": "lag",
+ "name": "Langi"
+ },
+ "lo": {
+ "code": "lo",
+ "name": "Lao"
+ },
+ "lv": {
+ "code": "lv",
+ "name": "Latvian"
+ },
+ "ln": {
+ "code": "ln",
+ "name": "Lingala"
+ },
+ "lt": {
+ "code": "lt",
+ "name": "Lithuanian"
+ },
+ "dsb": {
+ "code": "dsb",
+ "name": "Lower Sorbian"
+ },
+ "lu": {
+ "code": "lu",
+ "name": "Luba-Katanga"
+ },
+ "luo": {
+ "code": "luo",
+ "name": "Luo"
+ },
+ "lb": {
+ "code": "lb",
+ "name": "Luxembourgish"
+ },
+ "luy": {
+ "code": "luy",
+ "name": "Luyia"
+ },
+ "mk": {
+ "code": "mk",
+ "name": "Macedonian"
+ },
+ "jmc": {
+ "code": "jmc",
+ "name": "Machame"
+ },
+ "mgh": {
+ "code": "mgh",
+ "name": "Makhuwa-Meetto"
+ },
+ "kde": {
+ "code": "kde",
+ "name": "Makonde"
+ },
+ "mg": {
+ "code": "mg",
+ "name": "Malagasy"
+ },
+ "ml": {
+ "code": "ml",
+ "name": "Malayalam"
+ },
+ "ms": {
+ "code": "ms",
+ "name": "MalayÇî gowab"
+ },
+ "mt": {
+ "code": "mt",
+ "name": "Maltese"
+ },
+ "mr": {
+ "code": "mr",
+ "name": "Marathi"
+ },
+ "mas": {
+ "code": "mas",
+ "name": "Masai"
+ },
+ "mer": {
+ "code": "mer",
+ "name": "Meru"
+ },
+ "mn": {
+ "code": "mn",
+ "name": "Mongolian"
+ },
+ "mfe": {
+ "code": "mfe",
+ "name": "Morisyen"
+ },
+ "mua": {
+ "code": "mua",
+ "name": "Mundang"
+ },
+ "ne": {
+ "code": "ne",
+ "name": "NepalÇî gowab"
+ },
+ "jgo": {
+ "code": "jgo",
+ "name": "Ngomba"
+ },
+ "nl-BE": {
+ "code": "nl-BE",
+ "name": "nl_BE"
+ },
+ "nd": {
+ "code": "nd",
+ "name": "North Ndebele"
+ },
+ "se": {
+ "code": "se",
+ "name": "Northern Sami"
+ },
+ "nb": {
+ "code": "nb",
+ "name": "Norwegian Bokmål"
+ },
+ "nn": {
+ "code": "nn",
+ "name": "Norwegian Nynorsk"
+ },
+ "nus": {
+ "code": "nus",
+ "name": "Nuer"
+ },
+ "nyn": {
+ "code": "nyn",
+ "name": "Nyankole"
+ },
+ "or": {
+ "code": "or",
+ "name": "Oriya"
+ },
+ "ps": {
+ "code": "ps",
+ "name": "Pashto"
+ },
+ "fa": {
+ "code": "fa",
+ "name": "PersiaÇî gowab"
+ },
+ "pl": {
+ "code": "pl",
+ "name": "PoleÇî gowab"
+ },
+ "pt": {
+ "code": "pt",
+ "name": "Portugees"
+ },
+ "pt-BR": {
+ "code": "pt-BR",
+ "name": "pt_BR"
+ },
+ "pt-PT": {
+ "code": "pt-PT",
+ "name": "pt_PT"
+ },
+ "pa": {
+ "code": "pa",
+ "name": "Punjabigowab"
+ },
+ "ro-MD": {
+ "code": "ro-MD",
+ "name": "ro_MD"
+ },
+ "ro": {
+ "code": "ro",
+ "name": "RomaniaÇî gowab"
+ },
+ "rm": {
+ "code": "rm",
+ "name": "Romansh"
+ },
+ "rof": {
+ "code": "rof",
+ "name": "Rombo"
+ },
+ "rn": {
+ "code": "rn",
+ "name": "Rundi"
+ },
+ "ru": {
+ "code": "ru",
+ "name": "RussiaÇî gowab"
+ },
+ "rwk": {
+ "code": "rwk",
+ "name": "Rwa"
+ },
+ "saq": {
+ "code": "saq",
+ "name": "Samburu"
+ },
+ "sg": {
+ "code": "sg",
+ "name": "Sango"
+ },
+ "sbp": {
+ "code": "sbp",
+ "name": "Sangu"
+ },
+ "gd": {
+ "code": "gd",
+ "name": "Scottish Gaelic"
+ },
+ "seh": {
+ "code": "seh",
+ "name": "Sena"
+ },
+ "sr": {
+ "code": "sr",
+ "name": "Serbian"
+ },
+ "ksb": {
+ "code": "ksb",
+ "name": "Shambala"
+ },
+ "sn": {
+ "code": "sn",
+ "name": "Shona"
+ },
+ "si": {
+ "code": "si",
+ "name": "Sinhala"
+ },
+ "sk": {
+ "code": "sk",
+ "name": "Slovak"
+ },
+ "sl": {
+ "code": "sl",
+ "name": "Slovenian"
+ },
+ "xog": {
+ "code": "xog",
+ "name": "Soga"
+ },
+ "so": {
+ "code": "so",
+ "name": "SomaliÇî gowab"
+ },
+ "es": {
+ "code": "es",
+ "name": "Spaans"
+ },
+ "zgh": {
+ "code": "zgh",
+ "name": "Standard Moroccan Tamazight"
+ },
+ "sw": {
+ "code": "sw",
+ "name": "Swahili"
+ },
+ "sv": {
+ "code": "sv",
+ "name": "SwedeÇî gowab"
+ },
+ "gsw": {
+ "code": "gsw",
+ "name": "Swiss German"
+ },
+ "shi": {
+ "code": "shi",
+ "name": "Tachelhit"
+ },
+ "dav": {
+ "code": "dav",
+ "name": "Taita"
+ },
+ "ta": {
+ "code": "ta",
+ "name": "TamilÇî gowab"
+ },
+ "twq": {
+ "code": "twq",
+ "name": "Tasawaq"
+ },
+ "te": {
+ "code": "te",
+ "name": "Telugu"
+ },
+ "teo": {
+ "code": "teo",
+ "name": "Teso"
+ },
+ "th": {
+ "code": "th",
+ "name": "ThaiÇî gowab"
+ },
+ "bo": {
+ "code": "bo",
+ "name": "Tibetan"
+ },
+ "ti": {
+ "code": "ti",
+ "name": "Tigrinya"
+ },
+ "to": {
+ "code": "to",
+ "name": "Tongan"
+ },
+ "tr": {
+ "code": "tr",
+ "name": "TurkeÇî gowab"
+ },
+ "uk": {
+ "code": "uk",
+ "name": "UkrainiaÇî gowab"
+ },
+ "hsb": {
+ "code": "hsb",
+ "name": "Upper Sorbian"
+ },
+ "ur": {
+ "code": "ur",
+ "name": "UrduÇî gowab"
+ },
+ "ug": {
+ "code": "ug",
+ "name": "Uyghur"
+ },
+ "uz": {
+ "code": "uz",
+ "name": "Uzbek"
+ },
+ "vai": {
+ "code": "vai",
+ "name": "Vai"
+ },
+ "vi": {
+ "code": "vi",
+ "name": "VietnamÇî gowab"
+ },
+ "vun": {
+ "code": "vun",
+ "name": "Vunjo"
+ },
+ "wae": {
+ "code": "wae",
+ "name": "Walser"
+ },
+ "cy": {
+ "code": "cy",
+ "name": "Welsh"
+ },
+ "fy": {
+ "code": "fy",
+ "name": "Western Frisian"
+ },
+ "el": {
+ "code": "el",
+ "name": "Xriks"
+ },
+ "yav": {
+ "code": "yav",
+ "name": "Yangben"
+ },
+ "yo": {
+ "code": "yo",
+ "name": "Yorubab"
+ },
+ "dje": {
+ "code": "dje",
+ "name": "Zarma"
+ },
+ "zh-Hans": {
+ "code": "zh-Hans",
+ "name": "zh_Hans"
+ },
+ "zh-Hant": {
+ "code": "zh-Hant",
+ "name": "zh_Hant"
+ },
+ "zu": {
+ "code": "zu",
+ "name": "Zulub"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/language/nb.json b/library/intl/resources/language/nb.json
new file mode 100644
index 000000000..6aae6016a
--- /dev/null
+++ b/library/intl/resources/language/nb.json
@@ -0,0 +1,738 @@
+{
+ "af": {
+ "code": "af",
+ "name": "afrikaans"
+ },
+ "agq": {
+ "code": "agq",
+ "name": "aghem"
+ },
+ "ak": {
+ "code": "ak",
+ "name": "akan"
+ },
+ "sq": {
+ "code": "sq",
+ "name": "albansk"
+ },
+ "en-US": {
+ "code": "en-US",
+ "name": "amerikansk engelsk"
+ },
+ "am": {
+ "code": "am",
+ "name": "amharisk"
+ },
+ "ar": {
+ "code": "ar",
+ "name": "arabisk"
+ },
+ "hy": {
+ "code": "hy",
+ "name": "armensk"
+ },
+ "az": {
+ "code": "az",
+ "name": "aserbajdsjansk"
+ },
+ "ast": {
+ "code": "ast",
+ "name": "asturisk"
+ },
+ "asa": {
+ "code": "asa",
+ "name": "asu"
+ },
+ "en-AU": {
+ "code": "en-AU",
+ "name": "australsk engelsk"
+ },
+ "ksf": {
+ "code": "ksf",
+ "name": "bafia"
+ },
+ "bm": {
+ "code": "bm",
+ "name": "bambara"
+ },
+ "bas": {
+ "code": "bas",
+ "name": "basa"
+ },
+ "eu": {
+ "code": "eu",
+ "name": "baskisk"
+ },
+ "bez": {
+ "code": "bez",
+ "name": "bena"
+ },
+ "bn": {
+ "code": "bn",
+ "name": "bengali"
+ },
+ "brx": {
+ "code": "brx",
+ "name": "bodo"
+ },
+ "bs": {
+ "code": "bs",
+ "name": "bosnisk"
+ },
+ "pt-BR": {
+ "code": "pt-BR",
+ "name": "brasiliansk portugisisk"
+ },
+ "br": {
+ "code": "br",
+ "name": "bretonsk"
+ },
+ "en-GB": {
+ "code": "en-GB",
+ "name": "britisk engelsk"
+ },
+ "bg": {
+ "code": "bg",
+ "name": "bulgarsk"
+ },
+ "my": {
+ "code": "my",
+ "name": "burmesisk"
+ },
+ "en-CA": {
+ "code": "en-CA",
+ "name": "canadisk engelsk"
+ },
+ "fr-CA": {
+ "code": "fr-CA",
+ "name": "canadisk fransk"
+ },
+ "chr": {
+ "code": "chr",
+ "name": "cherokesisk"
+ },
+ "da": {
+ "code": "da",
+ "name": "dansk"
+ },
+ "dz": {
+ "code": "dz",
+ "name": "dzongkha"
+ },
+ "en": {
+ "code": "en",
+ "name": "engelsk"
+ },
+ "eo": {
+ "code": "eo",
+ "name": "esperanto"
+ },
+ "et": {
+ "code": "et",
+ "name": "estisk"
+ },
+ "pt-PT": {
+ "code": "pt-PT",
+ "name": "europeisk portugisisk"
+ },
+ "es-ES": {
+ "code": "es-ES",
+ "name": "europeisk spansk"
+ },
+ "ee": {
+ "code": "ee",
+ "name": "ewe"
+ },
+ "ewo": {
+ "code": "ewo",
+ "name": "ewondo"
+ },
+ "fil": {
+ "code": "fil",
+ "name": "filippinsk"
+ },
+ "fi": {
+ "code": "fi",
+ "name": "finsk"
+ },
+ "nl-BE": {
+ "code": "nl-BE",
+ "name": "flamsk"
+ },
+ "zh-Hans": {
+ "code": "zh-Hans",
+ "name": "forenklet kinesisk"
+ },
+ "fr": {
+ "code": "fr",
+ "name": "fransk"
+ },
+ "fur": {
+ "code": "fur",
+ "name": "friuliansk"
+ },
+ "ff": {
+ "code": "ff",
+ "name": "fulani"
+ },
+ "fo": {
+ "code": "fo",
+ "name": "færøysk"
+ },
+ "gl": {
+ "code": "gl",
+ "name": "galisisk"
+ },
+ "lg": {
+ "code": "lg",
+ "name": "ganda"
+ },
+ "ka": {
+ "code": "ka",
+ "name": "georgisk"
+ },
+ "el": {
+ "code": "el",
+ "name": "gresk"
+ },
+ "kl": {
+ "code": "kl",
+ "name": "grønlandsk"
+ },
+ "gu": {
+ "code": "gu",
+ "name": "gujarati"
+ },
+ "guz": {
+ "code": "guz",
+ "name": "gusii"
+ },
+ "ha": {
+ "code": "ha",
+ "name": "hausa"
+ },
+ "he": {
+ "code": "he",
+ "name": "hebraisk"
+ },
+ "hi": {
+ "code": "hi",
+ "name": "hindi"
+ },
+ "be": {
+ "code": "be",
+ "name": "hviterussisk"
+ },
+ "hsb": {
+ "code": "hsb",
+ "name": "høysorbisk"
+ },
+ "id": {
+ "code": "id",
+ "name": "indonesisk"
+ },
+ "ga": {
+ "code": "ga",
+ "name": "irsk"
+ },
+ "is": {
+ "code": "is",
+ "name": "islandsk"
+ },
+ "it": {
+ "code": "it",
+ "name": "italiensk"
+ },
+ "ja": {
+ "code": "ja",
+ "name": "japansk"
+ },
+ "dyo": {
+ "code": "dyo",
+ "name": "jola-fonyi"
+ },
+ "yo": {
+ "code": "yo",
+ "name": "joruba"
+ },
+ "kab": {
+ "code": "kab",
+ "name": "kabylsk"
+ },
+ "kln": {
+ "code": "kln",
+ "name": "kalenjin"
+ },
+ "kam": {
+ "code": "kam",
+ "name": "kamba"
+ },
+ "kn": {
+ "code": "kn",
+ "name": "kannada"
+ },
+ "kea": {
+ "code": "kea",
+ "name": "kappverdisk"
+ },
+ "kk": {
+ "code": "kk",
+ "name": "kasakhisk"
+ },
+ "ks": {
+ "code": "ks",
+ "name": "kasjmiri"
+ },
+ "ca": {
+ "code": "ca",
+ "name": "katalansk"
+ },
+ "km": {
+ "code": "km",
+ "name": "khmer"
+ },
+ "ebu": {
+ "code": "ebu",
+ "name": "kiembu"
+ },
+ "cgg": {
+ "code": "cgg",
+ "name": "kiga"
+ },
+ "ki": {
+ "code": "ki",
+ "name": "kikuyu"
+ },
+ "zh": {
+ "code": "zh",
+ "name": "kinesisk"
+ },
+ "ky": {
+ "code": "ky",
+ "name": "kirgisisk"
+ },
+ "swc": {
+ "code": "swc",
+ "name": "kongolesisk swahili"
+ },
+ "ko": {
+ "code": "ko",
+ "name": "koreansk"
+ },
+ "khq": {
+ "code": "khq",
+ "name": "koyra chiini"
+ },
+ "ses": {
+ "code": "ses",
+ "name": "koyraboro senni"
+ },
+ "hr": {
+ "code": "hr",
+ "name": "kroatisk"
+ },
+ "nmg": {
+ "code": "nmg",
+ "name": "kwasio"
+ },
+ "ksh": {
+ "code": "ksh",
+ "name": "kølnsk"
+ },
+ "lag": {
+ "code": "lag",
+ "name": "langi"
+ },
+ "lo": {
+ "code": "lo",
+ "name": "laotisk"
+ },
+ "lv": {
+ "code": "lv",
+ "name": "latvisk"
+ },
+ "dsb": {
+ "code": "dsb",
+ "name": "lavsorbisk"
+ },
+ "ln": {
+ "code": "ln",
+ "name": "lingala"
+ },
+ "lt": {
+ "code": "lt",
+ "name": "litauisk"
+ },
+ "lu": {
+ "code": "lu",
+ "name": "luba-katanga"
+ },
+ "luy": {
+ "code": "luy",
+ "name": "luhya"
+ },
+ "luo": {
+ "code": "luo",
+ "name": "Luo"
+ },
+ "lb": {
+ "code": "lb",
+ "name": "luxemburgsk"
+ },
+ "jmc": {
+ "code": "jmc",
+ "name": "machame"
+ },
+ "mg": {
+ "code": "mg",
+ "name": "madagassisk"
+ },
+ "mk": {
+ "code": "mk",
+ "name": "makedonsk"
+ },
+ "mgh": {
+ "code": "mgh",
+ "name": "makhuwa-meetto"
+ },
+ "kde": {
+ "code": "kde",
+ "name": "makonde"
+ },
+ "ml": {
+ "code": "ml",
+ "name": "malayalam"
+ },
+ "ms": {
+ "code": "ms",
+ "name": "malayisk"
+ },
+ "mt": {
+ "code": "mt",
+ "name": "maltesisk"
+ },
+ "mr": {
+ "code": "mr",
+ "name": "marathi"
+ },
+ "mas": {
+ "code": "mas",
+ "name": "masai"
+ },
+ "mfe": {
+ "code": "mfe",
+ "name": "mauritisk-kreolsk"
+ },
+ "es-MX": {
+ "code": "es-MX",
+ "name": "meksikansk spansk"
+ },
+ "mer": {
+ "code": "mer",
+ "name": "meru"
+ },
+ "ar-001": {
+ "code": "ar-001",
+ "name": "moderne standard arabisk"
+ },
+ "ro-MD": {
+ "code": "ro-MD",
+ "name": "moldovsk"
+ },
+ "mn": {
+ "code": "mn",
+ "name": "mongolsk"
+ },
+ "mua": {
+ "code": "mua",
+ "name": "mundang"
+ },
+ "naq": {
+ "code": "naq",
+ "name": "nama"
+ },
+ "nl": {
+ "code": "nl",
+ "name": "nederlandsk"
+ },
+ "ne": {
+ "code": "ne",
+ "name": "nepali"
+ },
+ "jgo": {
+ "code": "jgo",
+ "name": "ngomba"
+ },
+ "nd": {
+ "code": "nd",
+ "name": "nord-ndebele"
+ },
+ "se": {
+ "code": "se",
+ "name": "nordsamisk"
+ },
+ "nb": {
+ "code": "nb",
+ "name": "norsk bokmål"
+ },
+ "nn": {
+ "code": "nn",
+ "name": "norsk nynorsk"
+ },
+ "nus": {
+ "code": "nus",
+ "name": "nuer"
+ },
+ "nyn": {
+ "code": "nyn",
+ "name": "nyankole"
+ },
+ "or": {
+ "code": "or",
+ "name": "oriya"
+ },
+ "ps": {
+ "code": "ps",
+ "name": "pashto"
+ },
+ "fa": {
+ "code": "fa",
+ "name": "persisk"
+ },
+ "pl": {
+ "code": "pl",
+ "name": "polsk"
+ },
+ "pt": {
+ "code": "pt",
+ "name": "portugisisk"
+ },
+ "pa": {
+ "code": "pa",
+ "name": "punjabi"
+ },
+ "rm": {
+ "code": "rm",
+ "name": "retoromansk"
+ },
+ "rof": {
+ "code": "rof",
+ "name": "rombo"
+ },
+ "ro": {
+ "code": "ro",
+ "name": "rumensk"
+ },
+ "rn": {
+ "code": "rn",
+ "name": "rundi"
+ },
+ "ru": {
+ "code": "ru",
+ "name": "russisk"
+ },
+ "rwk": {
+ "code": "rwk",
+ "name": "rwa"
+ },
+ "saq": {
+ "code": "saq",
+ "name": "samburu"
+ },
+ "sg": {
+ "code": "sg",
+ "name": "sango"
+ },
+ "sbp": {
+ "code": "sbp",
+ "name": "sangu"
+ },
+ "seh": {
+ "code": "seh",
+ "name": "sena"
+ },
+ "tzm": {
+ "code": "tzm",
+ "name": "sentralmarokkansk tamazight"
+ },
+ "sr": {
+ "code": "sr",
+ "name": "serbisk"
+ },
+ "ksb": {
+ "code": "ksb",
+ "name": "shambala"
+ },
+ "sn": {
+ "code": "sn",
+ "name": "shona"
+ },
+ "si": {
+ "code": "si",
+ "name": "singalesisk"
+ },
+ "gd": {
+ "code": "gd",
+ "name": "skotsk gælisk"
+ },
+ "sk": {
+ "code": "sk",
+ "name": "slovakisk"
+ },
+ "sl": {
+ "code": "sl",
+ "name": "slovensk"
+ },
+ "xog": {
+ "code": "xog",
+ "name": "soga"
+ },
+ "so": {
+ "code": "so",
+ "name": "somali"
+ },
+ "es": {
+ "code": "es",
+ "name": "spansk"
+ },
+ "zgh": {
+ "code": "zgh",
+ "name": "standard marrokansk tamazight"
+ },
+ "gsw": {
+ "code": "gsw",
+ "name": "sveitsertysk"
+ },
+ "fr-CH": {
+ "code": "fr-CH",
+ "name": "sveitsisk fransk"
+ },
+ "de-CH": {
+ "code": "de-CH",
+ "name": "sveitsisk høytysk"
+ },
+ "sv": {
+ "code": "sv",
+ "name": "svensk"
+ },
+ "sw": {
+ "code": "sw",
+ "name": "swahili"
+ },
+ "shi": {
+ "code": "shi",
+ "name": "tachelhit"
+ },
+ "dav": {
+ "code": "dav",
+ "name": "taita"
+ },
+ "ta": {
+ "code": "ta",
+ "name": "tamilsk"
+ },
+ "twq": {
+ "code": "twq",
+ "name": "tasawaq"
+ },
+ "te": {
+ "code": "te",
+ "name": "telugu"
+ },
+ "teo": {
+ "code": "teo",
+ "name": "teso"
+ },
+ "th": {
+ "code": "th",
+ "name": "thai"
+ },
+ "bo": {
+ "code": "bo",
+ "name": "tibetansk"
+ },
+ "ti": {
+ "code": "ti",
+ "name": "tigrinja"
+ },
+ "to": {
+ "code": "to",
+ "name": "tongansk"
+ },
+ "zh-Hant": {
+ "code": "zh-Hant",
+ "name": "tradisjonell kinesisk"
+ },
+ "cs": {
+ "code": "cs",
+ "name": "tsjekkisk"
+ },
+ "tr": {
+ "code": "tr",
+ "name": "tyrkisk"
+ },
+ "de": {
+ "code": "de",
+ "name": "tysk"
+ },
+ "ug": {
+ "code": "ug",
+ "name": "uigurisk"
+ },
+ "uk": {
+ "code": "uk",
+ "name": "ukrainsk"
+ },
+ "hu": {
+ "code": "hu",
+ "name": "ungarsk"
+ },
+ "ur": {
+ "code": "ur",
+ "name": "urdu"
+ },
+ "uz": {
+ "code": "uz",
+ "name": "usbekisk"
+ },
+ "vai": {
+ "code": "vai",
+ "name": "Vai"
+ },
+ "fy": {
+ "code": "fy",
+ "name": "vestfrisisk"
+ },
+ "vi": {
+ "code": "vi",
+ "name": "vietnamesisk"
+ },
+ "vun": {
+ "code": "vun",
+ "name": "vunjo"
+ },
+ "cy": {
+ "code": "cy",
+ "name": "walisisk"
+ },
+ "wae": {
+ "code": "wae",
+ "name": "walser"
+ },
+ "yav": {
+ "code": "yav",
+ "name": "yangben"
+ },
+ "dje": {
+ "code": "dje",
+ "name": "zarma"
+ },
+ "zu": {
+ "code": "zu",
+ "name": "zulu"
+ },
+ "de-AT": {
+ "code": "de-AT",
+ "name": "østerriksk tysk"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/language/nd.json b/library/intl/resources/language/nd.json
new file mode 100644
index 000000000..47ba48cab
--- /dev/null
+++ b/library/intl/resources/language/nd.json
@@ -0,0 +1,738 @@
+{
+ "af": {
+ "code": "af",
+ "name": "Afrikaans"
+ },
+ "agq": {
+ "code": "agq",
+ "name": "Aghem"
+ },
+ "sq": {
+ "code": "sq",
+ "name": "Albanian"
+ },
+ "ar-001": {
+ "code": "ar-001",
+ "name": "ar_001"
+ },
+ "hy": {
+ "code": "hy",
+ "name": "Armenian"
+ },
+ "ast": {
+ "code": "ast",
+ "name": "Asturian"
+ },
+ "asa": {
+ "code": "asa",
+ "name": "Asu"
+ },
+ "az": {
+ "code": "az",
+ "name": "Azerbaijani"
+ },
+ "ksf": {
+ "code": "ksf",
+ "name": "Bafia"
+ },
+ "bm": {
+ "code": "bm",
+ "name": "Bambara"
+ },
+ "bas": {
+ "code": "bas",
+ "name": "Basaa"
+ },
+ "eu": {
+ "code": "eu",
+ "name": "Basque"
+ },
+ "bez": {
+ "code": "bez",
+ "name": "Bena"
+ },
+ "brx": {
+ "code": "brx",
+ "name": "Bodo"
+ },
+ "bs": {
+ "code": "bs",
+ "name": "Bosnian"
+ },
+ "br": {
+ "code": "br",
+ "name": "Breton"
+ },
+ "ca": {
+ "code": "ca",
+ "name": "Catalan"
+ },
+ "tzm": {
+ "code": "tzm",
+ "name": "Central Atlas Tamazight"
+ },
+ "chr": {
+ "code": "chr",
+ "name": "Cherokee"
+ },
+ "cgg": {
+ "code": "cgg",
+ "name": "Chiga"
+ },
+ "ksh": {
+ "code": "ksh",
+ "name": "Colognian"
+ },
+ "swc": {
+ "code": "swc",
+ "name": "Congo Swahili"
+ },
+ "hr": {
+ "code": "hr",
+ "name": "Croatian"
+ },
+ "da": {
+ "code": "da",
+ "name": "Danish"
+ },
+ "de-AT": {
+ "code": "de-AT",
+ "name": "de_AT"
+ },
+ "de-CH": {
+ "code": "de-CH",
+ "name": "de_CH"
+ },
+ "dz": {
+ "code": "dz",
+ "name": "Dzongkha"
+ },
+ "ebu": {
+ "code": "ebu",
+ "name": "Embu"
+ },
+ "en-AU": {
+ "code": "en-AU",
+ "name": "en_AU"
+ },
+ "en-CA": {
+ "code": "en-CA",
+ "name": "en_CA"
+ },
+ "en-GB": {
+ "code": "en-GB",
+ "name": "en_GB"
+ },
+ "en-US": {
+ "code": "en-US",
+ "name": "en_US"
+ },
+ "es-ES": {
+ "code": "es-ES",
+ "name": "es_ES"
+ },
+ "es-MX": {
+ "code": "es-MX",
+ "name": "es_MX"
+ },
+ "eo": {
+ "code": "eo",
+ "name": "Esperanto"
+ },
+ "et": {
+ "code": "et",
+ "name": "Estonian"
+ },
+ "ee": {
+ "code": "ee",
+ "name": "Ewe"
+ },
+ "ewo": {
+ "code": "ewo",
+ "name": "Ewondo"
+ },
+ "fo": {
+ "code": "fo",
+ "name": "Faroese"
+ },
+ "fil": {
+ "code": "fil",
+ "name": "Filipino"
+ },
+ "fi": {
+ "code": "fi",
+ "name": "Finnish"
+ },
+ "fr-CA": {
+ "code": "fr-CA",
+ "name": "fr_CA"
+ },
+ "fr-CH": {
+ "code": "fr-CH",
+ "name": "fr_CH"
+ },
+ "fur": {
+ "code": "fur",
+ "name": "Friulian"
+ },
+ "ff": {
+ "code": "ff",
+ "name": "Fulah"
+ },
+ "gl": {
+ "code": "gl",
+ "name": "Galician"
+ },
+ "lg": {
+ "code": "lg",
+ "name": "Ganda"
+ },
+ "ka": {
+ "code": "ka",
+ "name": "Georgian"
+ },
+ "gu": {
+ "code": "gu",
+ "name": "Gujarati"
+ },
+ "guz": {
+ "code": "guz",
+ "name": "Gusii"
+ },
+ "he": {
+ "code": "he",
+ "name": "Hebrew"
+ },
+ "is": {
+ "code": "is",
+ "name": "Icelandic"
+ },
+ "ga": {
+ "code": "ga",
+ "name": "Irish"
+ },
+ "ak": {
+ "code": "ak",
+ "name": "isi-Akhani"
+ },
+ "ar": {
+ "code": "ar",
+ "name": "isi-Alabhu"
+ },
+ "am": {
+ "code": "am",
+ "name": "isi-Amaharikhi"
+ },
+ "be": {
+ "code": "be",
+ "name": "isi-Bhelarashiyani"
+ },
+ "bn": {
+ "code": "bn",
+ "name": "isi-Bhengali"
+ },
+ "bg": {
+ "code": "bg",
+ "name": "isi-Bulgaria"
+ },
+ "my": {
+ "code": "my",
+ "name": "isi-Burma"
+ },
+ "zh": {
+ "code": "zh",
+ "name": "isi-China"
+ },
+ "cs": {
+ "code": "cs",
+ "name": "isi-Czech"
+ },
+ "nl": {
+ "code": "nl",
+ "name": "isi-Dutch"
+ },
+ "fr": {
+ "code": "fr",
+ "name": "isi-Fulentshi"
+ },
+ "el": {
+ "code": "el",
+ "name": "isi-Giliki"
+ },
+ "hu": {
+ "code": "hu",
+ "name": "isi-Hangari"
+ },
+ "ha": {
+ "code": "ha",
+ "name": "isi-Hausa"
+ },
+ "hi": {
+ "code": "hi",
+ "name": "isi-Hindi"
+ },
+ "id": {
+ "code": "id",
+ "name": "isi-Indonesia"
+ },
+ "it": {
+ "code": "it",
+ "name": "isi-Italiano"
+ },
+ "de": {
+ "code": "de",
+ "name": "isi-Jalimani"
+ },
+ "ja": {
+ "code": "ja",
+ "name": "isi-Japhani"
+ },
+ "km": {
+ "code": "km",
+ "name": "isi-Khambodiya"
+ },
+ "ko": {
+ "code": "ko",
+ "name": "isi-Koriya"
+ },
+ "ms": {
+ "code": "ms",
+ "name": "isi-Malayi"
+ },
+ "ne": {
+ "code": "ne",
+ "name": "isi-Nepali"
+ },
+ "en": {
+ "code": "en",
+ "name": "isi-Ngisi"
+ },
+ "fa": {
+ "code": "fa",
+ "name": "isi-Pheshiyani"
+ },
+ "pl": {
+ "code": "pl",
+ "name": "isi-Pholoshi"
+ },
+ "pa": {
+ "code": "pa",
+ "name": "isi-Phunjabi"
+ },
+ "pt": {
+ "code": "pt",
+ "name": "isi-Potukezi"
+ },
+ "ru": {
+ "code": "ru",
+ "name": "isi-Rashiya"
+ },
+ "ro": {
+ "code": "ro",
+ "name": "isi-Romani"
+ },
+ "es": {
+ "code": "es",
+ "name": "isi-Sipeyini"
+ },
+ "so": {
+ "code": "so",
+ "name": "isi-Somali"
+ },
+ "sv": {
+ "code": "sv",
+ "name": "isi-Swidishi"
+ },
+ "ta": {
+ "code": "ta",
+ "name": "isi-Thamil"
+ },
+ "th": {
+ "code": "th",
+ "name": "isi-Thayi"
+ },
+ "tr": {
+ "code": "tr",
+ "name": "isi-Thekishi"
+ },
+ "ur": {
+ "code": "ur",
+ "name": "isi-Udu"
+ },
+ "uk": {
+ "code": "uk",
+ "name": "isi-Ukrain"
+ },
+ "vi": {
+ "code": "vi",
+ "name": "isi-Vietnamese"
+ },
+ "yo": {
+ "code": "yo",
+ "name": "isi-Yorubha"
+ },
+ "zu": {
+ "code": "zu",
+ "name": "isi-Zulu"
+ },
+ "nd": {
+ "code": "nd",
+ "name": "isiNdebele"
+ },
+ "dyo": {
+ "code": "dyo",
+ "name": "Jola-Fonyi"
+ },
+ "kea": {
+ "code": "kea",
+ "name": "Kabuverdianu"
+ },
+ "kab": {
+ "code": "kab",
+ "name": "Kabyle"
+ },
+ "kl": {
+ "code": "kl",
+ "name": "Kalaallisut"
+ },
+ "kln": {
+ "code": "kln",
+ "name": "Kalenjin"
+ },
+ "kam": {
+ "code": "kam",
+ "name": "Kamba"
+ },
+ "kn": {
+ "code": "kn",
+ "name": "Kannada"
+ },
+ "ks": {
+ "code": "ks",
+ "name": "Kashmiri"
+ },
+ "kk": {
+ "code": "kk",
+ "name": "Kazakh"
+ },
+ "ki": {
+ "code": "ki",
+ "name": "Kikuyu"
+ },
+ "khq": {
+ "code": "khq",
+ "name": "Koyra Chiini"
+ },
+ "ses": {
+ "code": "ses",
+ "name": "Koyraboro Senni"
+ },
+ "nmg": {
+ "code": "nmg",
+ "name": "Kwasio"
+ },
+ "ky": {
+ "code": "ky",
+ "name": "Kyrgyz"
+ },
+ "lag": {
+ "code": "lag",
+ "name": "Langi"
+ },
+ "lo": {
+ "code": "lo",
+ "name": "Lao"
+ },
+ "lv": {
+ "code": "lv",
+ "name": "Latvian"
+ },
+ "ln": {
+ "code": "ln",
+ "name": "Lingala"
+ },
+ "lt": {
+ "code": "lt",
+ "name": "Lithuanian"
+ },
+ "dsb": {
+ "code": "dsb",
+ "name": "Lower Sorbian"
+ },
+ "lu": {
+ "code": "lu",
+ "name": "Luba-Katanga"
+ },
+ "luo": {
+ "code": "luo",
+ "name": "Luo"
+ },
+ "lb": {
+ "code": "lb",
+ "name": "Luxembourgish"
+ },
+ "luy": {
+ "code": "luy",
+ "name": "Luyia"
+ },
+ "mk": {
+ "code": "mk",
+ "name": "Macedonian"
+ },
+ "jmc": {
+ "code": "jmc",
+ "name": "Machame"
+ },
+ "mgh": {
+ "code": "mgh",
+ "name": "Makhuwa-Meetto"
+ },
+ "kde": {
+ "code": "kde",
+ "name": "Makonde"
+ },
+ "mg": {
+ "code": "mg",
+ "name": "Malagasy"
+ },
+ "ml": {
+ "code": "ml",
+ "name": "Malayalam"
+ },
+ "mt": {
+ "code": "mt",
+ "name": "Maltese"
+ },
+ "mr": {
+ "code": "mr",
+ "name": "Marathi"
+ },
+ "mas": {
+ "code": "mas",
+ "name": "Masai"
+ },
+ "mer": {
+ "code": "mer",
+ "name": "Meru"
+ },
+ "mn": {
+ "code": "mn",
+ "name": "Mongolian"
+ },
+ "mfe": {
+ "code": "mfe",
+ "name": "Morisyen"
+ },
+ "mua": {
+ "code": "mua",
+ "name": "Mundang"
+ },
+ "naq": {
+ "code": "naq",
+ "name": "Nama"
+ },
+ "jgo": {
+ "code": "jgo",
+ "name": "Ngomba"
+ },
+ "nl-BE": {
+ "code": "nl-BE",
+ "name": "nl_BE"
+ },
+ "se": {
+ "code": "se",
+ "name": "Northern Sami"
+ },
+ "nb": {
+ "code": "nb",
+ "name": "Norwegian Bokmål"
+ },
+ "nn": {
+ "code": "nn",
+ "name": "Norwegian Nynorsk"
+ },
+ "nus": {
+ "code": "nus",
+ "name": "Nuer"
+ },
+ "nyn": {
+ "code": "nyn",
+ "name": "Nyankole"
+ },
+ "or": {
+ "code": "or",
+ "name": "Oriya"
+ },
+ "ps": {
+ "code": "ps",
+ "name": "Pashto"
+ },
+ "pt-BR": {
+ "code": "pt-BR",
+ "name": "pt_BR"
+ },
+ "pt-PT": {
+ "code": "pt-PT",
+ "name": "pt_PT"
+ },
+ "ro-MD": {
+ "code": "ro-MD",
+ "name": "ro_MD"
+ },
+ "rm": {
+ "code": "rm",
+ "name": "Romansh"
+ },
+ "rof": {
+ "code": "rof",
+ "name": "Rombo"
+ },
+ "rn": {
+ "code": "rn",
+ "name": "Rundi"
+ },
+ "rwk": {
+ "code": "rwk",
+ "name": "Rwa"
+ },
+ "saq": {
+ "code": "saq",
+ "name": "Samburu"
+ },
+ "sg": {
+ "code": "sg",
+ "name": "Sango"
+ },
+ "sbp": {
+ "code": "sbp",
+ "name": "Sangu"
+ },
+ "gd": {
+ "code": "gd",
+ "name": "Scottish Gaelic"
+ },
+ "seh": {
+ "code": "seh",
+ "name": "Sena"
+ },
+ "sr": {
+ "code": "sr",
+ "name": "Serbian"
+ },
+ "ksb": {
+ "code": "ksb",
+ "name": "Shambala"
+ },
+ "sn": {
+ "code": "sn",
+ "name": "Shona"
+ },
+ "si": {
+ "code": "si",
+ "name": "Sinhala"
+ },
+ "sk": {
+ "code": "sk",
+ "name": "Slovak"
+ },
+ "sl": {
+ "code": "sl",
+ "name": "Slovenian"
+ },
+ "xog": {
+ "code": "xog",
+ "name": "Soga"
+ },
+ "zgh": {
+ "code": "zgh",
+ "name": "Standard Moroccan Tamazight"
+ },
+ "sw": {
+ "code": "sw",
+ "name": "Swahili"
+ },
+ "gsw": {
+ "code": "gsw",
+ "name": "Swiss German"
+ },
+ "shi": {
+ "code": "shi",
+ "name": "Tachelhit"
+ },
+ "dav": {
+ "code": "dav",
+ "name": "Taita"
+ },
+ "twq": {
+ "code": "twq",
+ "name": "Tasawaq"
+ },
+ "te": {
+ "code": "te",
+ "name": "Telugu"
+ },
+ "teo": {
+ "code": "teo",
+ "name": "Teso"
+ },
+ "bo": {
+ "code": "bo",
+ "name": "Tibetan"
+ },
+ "ti": {
+ "code": "ti",
+ "name": "Tigrinya"
+ },
+ "to": {
+ "code": "to",
+ "name": "Tongan"
+ },
+ "hsb": {
+ "code": "hsb",
+ "name": "Upper Sorbian"
+ },
+ "ug": {
+ "code": "ug",
+ "name": "Uyghur"
+ },
+ "uz": {
+ "code": "uz",
+ "name": "Uzbek"
+ },
+ "vai": {
+ "code": "vai",
+ "name": "Vai"
+ },
+ "vun": {
+ "code": "vun",
+ "name": "Vunjo"
+ },
+ "wae": {
+ "code": "wae",
+ "name": "Walser"
+ },
+ "cy": {
+ "code": "cy",
+ "name": "Welsh"
+ },
+ "fy": {
+ "code": "fy",
+ "name": "Western Frisian"
+ },
+ "yav": {
+ "code": "yav",
+ "name": "Yangben"
+ },
+ "dje": {
+ "code": "dje",
+ "name": "Zarma"
+ },
+ "zh-Hans": {
+ "code": "zh-Hans",
+ "name": "zh_Hans"
+ },
+ "zh-Hant": {
+ "code": "zh-Hant",
+ "name": "zh_Hant"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/language/ne-IN.json b/library/intl/resources/language/ne-IN.json
new file mode 100644
index 000000000..fec54a95f
--- /dev/null
+++ b/library/intl/resources/language/ne-IN.json
@@ -0,0 +1,738 @@
+{
+ "ast": {
+ "code": "ast",
+ "name": "Asturian"
+ },
+ "bas": {
+ "code": "bas",
+ "name": "Basaa"
+ },
+ "ksh": {
+ "code": "ksh",
+ "name": "Colognian"
+ },
+ "en-AU": {
+ "code": "en-AU",
+ "name": "en_AU"
+ },
+ "en-CA": {
+ "code": "en-CA",
+ "name": "en_CA"
+ },
+ "en-GB": {
+ "code": "en-GB",
+ "name": "en_GB"
+ },
+ "en-US": {
+ "code": "en-US",
+ "name": "en_US"
+ },
+ "es-MX": {
+ "code": "es-MX",
+ "name": "es_MX"
+ },
+ "ewo": {
+ "code": "ewo",
+ "name": "Ewondo"
+ },
+ "fr-CA": {
+ "code": "fr-CA",
+ "name": "fr_CA"
+ },
+ "fr-CH": {
+ "code": "fr-CH",
+ "name": "fr_CH"
+ },
+ "fur": {
+ "code": "fur",
+ "name": "Friulian"
+ },
+ "ff": {
+ "code": "ff",
+ "name": "Fulah"
+ },
+ "pt-BR": {
+ "code": "pt-BR",
+ "name": "pt_BR"
+ },
+ "wae": {
+ "code": "wae",
+ "name": "Walser"
+ },
+ "yav": {
+ "code": "yav",
+ "name": "Yangben"
+ },
+ "en": {
+ "code": "en",
+ "name": "अंगà¥à¤°à¥‡à¤œà¥€"
+ },
+ "az": {
+ "code": "az",
+ "name": "अजरबैजानी"
+ },
+ "ar-001": {
+ "code": "ar-001",
+ "name": "अधà¥à¤¨à¤¿à¤• पà¥à¤°à¤®à¤¾à¤£à¤¿à¤• अरबी"
+ },
+ "af": {
+ "code": "af",
+ "name": "अफà¥à¤°à¤¿à¤•à¤¾à¤¨à¥à¤¸"
+ },
+ "am": {
+ "code": "am",
+ "name": "अमà¥à¤¹à¤¾à¤°à¤¿à¤•"
+ },
+ "ar": {
+ "code": "ar",
+ "name": "अरबी"
+ },
+ "sq": {
+ "code": "sq",
+ "name": "अलà¥à¤¬à¥‡à¤¨à¤¿à¤¯à¤¨"
+ },
+ "de-AT": {
+ "code": "de-AT",
+ "name": "अषà¥à¤Ÿà¥à¤°à¤¿à¤¯à¤¨ जरà¥à¤®à¤¨"
+ },
+ "ga": {
+ "code": "ga",
+ "name": "आइरिश"
+ },
+ "is": {
+ "code": "is",
+ "name": "आइसलà¥à¤¯à¤¾à¤¨à¥à¤¡à¤¿à¤•"
+ },
+ "ak": {
+ "code": "ak",
+ "name": "आकान"
+ },
+ "agq": {
+ "code": "agq",
+ "name": "आघेम"
+ },
+ "hy": {
+ "code": "hy",
+ "name": "आरà¥à¤®à¥‡à¤¨à¤¿à¤¯à¤¾à¤²à¥€"
+ },
+ "asa": {
+ "code": "asa",
+ "name": "आसà¥"
+ },
+ "it": {
+ "code": "it",
+ "name": "इटालियन"
+ },
+ "id": {
+ "code": "id",
+ "name": "इनà¥à¤¡à¥‹à¤¨à¥‡à¤¸à¤¿à¤¯à¤¾à¤²à¥€"
+ },
+ "ee": {
+ "code": "ee",
+ "name": "इवि"
+ },
+ "et": {
+ "code": "et",
+ "name": "इसà¥à¤Ÿà¥‹à¤¨à¤¿à¤¯à¤¾à¤²à¥€"
+ },
+ "ug": {
+ "code": "ug",
+ "name": "उइघà¥à¤°"
+ },
+ "uz": {
+ "code": "uz",
+ "name": "उजà¥à¤¬à¥‡à¤•à¥€"
+ },
+ "nd": {
+ "code": "nd",
+ "name": "उतà¥à¤¤à¤° नेडेबेले"
+ },
+ "se": {
+ "code": "se",
+ "name": "उतà¥à¤¤à¤°à¥€ सामी"
+ },
+ "ur": {
+ "code": "ur",
+ "name": "उरà¥à¤¦à¥"
+ },
+ "ebu": {
+ "code": "ebu",
+ "name": "à¤à¤®à¥à¤¬à¥"
+ },
+ "eo": {
+ "code": "eo",
+ "name": "à¤à¤¸à¥à¤ªà¥‡à¤°à¤¾à¤¨à¥à¤¤à¥‹"
+ },
+ "or": {
+ "code": "or",
+ "name": "ओरिया"
+ },
+ "kn": {
+ "code": "kn",
+ "name": "कनà¥à¤¨à¤¾à¤¡à¤¾"
+ },
+ "kk": {
+ "code": "kk",
+ "name": "काजाख"
+ },
+ "kab": {
+ "code": "kab",
+ "name": "काबिल"
+ },
+ "kea": {
+ "code": "kea",
+ "name": "काबà¥à¤­à¥‡à¤°à¥à¤¡à¤¿à¤¯à¤¾à¤¨à¥"
+ },
+ "kam": {
+ "code": "kam",
+ "name": "कामà¥à¤¬à¤¾"
+ },
+ "kl": {
+ "code": "kl",
+ "name": "कालालिसà¥à¤Ÿ"
+ },
+ "kln": {
+ "code": "kln",
+ "name": "कालेनà¥à¤œà¤¿à¤¨"
+ },
+ "ks": {
+ "code": "ks",
+ "name": "काशà¥à¤®à¥€à¤°à¥€"
+ },
+ "ki": {
+ "code": "ki",
+ "name": "किकà¥à¤¯à¥"
+ },
+ "ky": {
+ "code": "ky",
+ "name": "किरà¥à¤—िज"
+ },
+ "tzm": {
+ "code": "tzm",
+ "name": "केनà¥à¤¦à¥à¤°à¥€à¤¯ à¤à¤Ÿà¥à¤²à¤¾à¤¸ टामाजिघट"
+ },
+ "swc": {
+ "code": "swc",
+ "name": "कोङà¥à¤—ो सà¥à¤µà¤¾à¤¹à¤¿à¤²à¥€"
+ },
+ "khq": {
+ "code": "khq",
+ "name": "कोयरा चिनी"
+ },
+ "ses": {
+ "code": "ses",
+ "name": "कोयराबोरो सेनà¥à¤¨à¥€"
+ },
+ "ko": {
+ "code": "ko",
+ "name": "कोरियाली"
+ },
+ "ca": {
+ "code": "ca",
+ "name": "कà¥à¤¯à¤¾à¤Ÿà¤¾à¤²à¤¨"
+ },
+ "hr": {
+ "code": "hr",
+ "name": "कà¥à¤°à¥‹à¤à¤¶à¤¿à¤¯à¤¾à¤²à¥€"
+ },
+ "nmg": {
+ "code": "nmg",
+ "name": "कà¥à¤µà¤¾à¤¸à¤¿à¤¯à¥‹"
+ },
+ "km": {
+ "code": "km",
+ "name": "खमेर"
+ },
+ "gl": {
+ "code": "gl",
+ "name": "गलिसियाली"
+ },
+ "lg": {
+ "code": "lg",
+ "name": "गानà¥à¤¡à¤¾"
+ },
+ "gu": {
+ "code": "gu",
+ "name": "गà¥à¤œà¤°à¤¾à¤¤à¥€"
+ },
+ "guz": {
+ "code": "guz",
+ "name": "गà¥à¤¸à¥€"
+ },
+ "jgo": {
+ "code": "jgo",
+ "name": "गोमà¥à¤¬à¤¾"
+ },
+ "el": {
+ "code": "el",
+ "name": "गà¥à¤°à¥€à¤•"
+ },
+ "cgg": {
+ "code": "cgg",
+ "name": "चिगा"
+ },
+ "zh": {
+ "code": "zh",
+ "name": "चिनियाà¤"
+ },
+ "cs": {
+ "code": "cs",
+ "name": "चेक"
+ },
+ "chr": {
+ "code": "chr",
+ "name": "चेरोकी"
+ },
+ "ka": {
+ "code": "ka",
+ "name": "जरà¥à¤œà¤¿à¤¯à¤¾à¤²à¥€"
+ },
+ "de": {
+ "code": "de",
+ "name": "जरà¥à¤®à¤¨"
+ },
+ "dje": {
+ "code": "dje",
+ "name": "जरà¥à¤®à¤¾"
+ },
+ "ja": {
+ "code": "ja",
+ "name": "जापानी"
+ },
+ "zu": {
+ "code": "zu",
+ "name": "जà¥à¤²à¥"
+ },
+ "dz": {
+ "code": "dz",
+ "name": "जोङà¥à¤–ा"
+ },
+ "dyo": {
+ "code": "dyo",
+ "name": "जोला-फोनिल"
+ },
+ "tr": {
+ "code": "tr",
+ "name": "टरà¥à¤•à¤¿à¤¶"
+ },
+ "shi": {
+ "code": "shi",
+ "name": "टाचेलà¥à¤¹à¤¿à¤Ÿ"
+ },
+ "teo": {
+ "code": "teo",
+ "name": "टेसो"
+ },
+ "to": {
+ "code": "to",
+ "name": "टोङà¥à¤—न"
+ },
+ "nl": {
+ "code": "nl",
+ "name": "डच"
+ },
+ "da": {
+ "code": "da",
+ "name": "डेनिश"
+ },
+ "dsb": {
+ "code": "dsb",
+ "name": "तलà¥à¤²à¥‹ सोरà¥à¤¬à¤¿à¤¯à¤¨"
+ },
+ "dav": {
+ "code": "dav",
+ "name": "ताइता"
+ },
+ "ta": {
+ "code": "ta",
+ "name": "तामिल"
+ },
+ "twq": {
+ "code": "twq",
+ "name": "तासावाक"
+ },
+ "ti": {
+ "code": "ti",
+ "name": "तिगà¥à¤°à¥€à¤¨à¥à¤¯à¤¾"
+ },
+ "bo": {
+ "code": "bo",
+ "name": "तिबà¥à¤¬à¤¤à¥€"
+ },
+ "te": {
+ "code": "te",
+ "name": "तेलà¥à¤—à¥"
+ },
+ "th": {
+ "code": "th",
+ "name": "थाई"
+ },
+ "nn": {
+ "code": "nn",
+ "name": "नरà¥à¤µà¥‡à¤²à¥€ नाइनोरà¥à¤¸à¥à¤•"
+ },
+ "nb": {
+ "code": "nb",
+ "name": "नरà¥à¤µà¥‡à¤²à¥€ बोकमाल"
+ },
+ "naq": {
+ "code": "naq",
+ "name": "नामा"
+ },
+ "nus": {
+ "code": "nus",
+ "name": "नà¥à¤à¤°"
+ },
+ "ne": {
+ "code": "ne",
+ "name": "नेपाली"
+ },
+ "nyn": {
+ "code": "nyn",
+ "name": "नà¥à¤¯à¤¾à¤¨à¥à¤•à¥‹à¤²"
+ },
+ "pa": {
+ "code": "pa",
+ "name": "पंजाबी"
+ },
+ "zh-Hant": {
+ "code": "zh-Hant",
+ "name": "परमà¥à¤ªà¤°à¤¾à¤—त चिनियाà¤"
+ },
+ "ps": {
+ "code": "ps",
+ "name": "पाशà¥à¤¤à¥‹"
+ },
+ "pt": {
+ "code": "pt",
+ "name": "पोरà¥à¤¤à¥à¤—ी"
+ },
+ "pt-PT": {
+ "code": "pt-PT",
+ "name": "पोरà¥à¤¤à¥à¤—ी (यà¥à¤°à¥‹à¤ª)"
+ },
+ "pl": {
+ "code": "pl",
+ "name": "पोलिश"
+ },
+ "fa": {
+ "code": "fa",
+ "name": "फारसी"
+ },
+ "fo": {
+ "code": "fo",
+ "name": "फारोज"
+ },
+ "fi": {
+ "code": "fi",
+ "name": "फिनिश"
+ },
+ "fil": {
+ "code": "fil",
+ "name": "फिलिपिनी"
+ },
+ "fr": {
+ "code": "fr",
+ "name": "फà¥à¤°à¤¾à¤¨à¥à¤¸à¥‡à¤²à¥€"
+ },
+ "fy": {
+ "code": "fy",
+ "name": "फà¥à¤°à¤¿à¤œà¥€à¤¯à¤¨"
+ },
+ "nl-BE": {
+ "code": "nl-BE",
+ "name": "फà¥à¤²à¥‡à¤®à¤¿à¤¶"
+ },
+ "bn": {
+ "code": "bn",
+ "name": "बंगाली"
+ },
+ "ksf": {
+ "code": "ksf",
+ "name": "बाफिया"
+ },
+ "bm": {
+ "code": "bm",
+ "name": "बामà¥à¤¬à¤¾à¤°à¤¾"
+ },
+ "eu": {
+ "code": "eu",
+ "name": "बासà¥à¤•"
+ },
+ "bg": {
+ "code": "bg",
+ "name": "बà¥à¤²à¥à¤—ेरियाली"
+ },
+ "bez": {
+ "code": "bez",
+ "name": "बेना"
+ },
+ "brx": {
+ "code": "brx",
+ "name": "बोडो"
+ },
+ "bs": {
+ "code": "bs",
+ "name": "बोसà¥à¤¨à¤¿à¤¯à¤¾à¤²à¥€"
+ },
+ "br": {
+ "code": "br",
+ "name": "बà¥à¤°à¥‡à¤Ÿà¤¨"
+ },
+ "vai": {
+ "code": "vai",
+ "name": "भाइ"
+ },
+ "vi": {
+ "code": "vi",
+ "name": "भियतनामी"
+ },
+ "vun": {
+ "code": "vun",
+ "name": "भà¥à¤¨à¥à¤œà¥‹"
+ },
+ "mn": {
+ "code": "mn",
+ "name": "मंगोल"
+ },
+ "mr": {
+ "code": "mr",
+ "name": "मराठी"
+ },
+ "ml": {
+ "code": "ml",
+ "name": "मलयालम"
+ },
+ "mg": {
+ "code": "mg",
+ "name": "मलागासी"
+ },
+ "ms": {
+ "code": "ms",
+ "name": "मलाया"
+ },
+ "kde": {
+ "code": "kde",
+ "name": "माकोनà¥à¤¡à¥‡"
+ },
+ "mgh": {
+ "code": "mgh",
+ "name": "माखà¥à¤µà¤¾-मिटà¥à¤Ÿà¥‹"
+ },
+ "jmc": {
+ "code": "jmc",
+ "name": "माचामे"
+ },
+ "hsb": {
+ "code": "hsb",
+ "name": "माथिलà¥à¤²à¥‹ सोरà¥à¤¬à¤¿à¤¯à¤¨"
+ },
+ "zgh": {
+ "code": "zgh",
+ "name": "मानक मोरोकà¥à¤•à¥‹à¤¨ तामाजिघट"
+ },
+ "mt": {
+ "code": "mt",
+ "name": "मालà¥à¤Ÿà¤¿à¤œ"
+ },
+ "ro-MD": {
+ "code": "ro-MD",
+ "name": "मालà¥à¤¡à¤¾à¤­à¤¿à¤¯à¤¨"
+ },
+ "mas": {
+ "code": "mas",
+ "name": "मासाल"
+ },
+ "mua": {
+ "code": "mua",
+ "name": "मà¥à¤¨à¥à¤¡à¤¾à¤™"
+ },
+ "mer": {
+ "code": "mer",
+ "name": "मेरू"
+ },
+ "mfe": {
+ "code": "mfe",
+ "name": "मोरिसेन"
+ },
+ "mk": {
+ "code": "mk",
+ "name": "मà¥à¤¯à¤¾à¤•à¥‡à¤¡à¥‹à¤¨à¤¿à¤¯à¤¨"
+ },
+ "uk": {
+ "code": "uk",
+ "name": "यà¥à¤•à¥à¤°à¥‡à¤¨à¥€"
+ },
+ "es-ES": {
+ "code": "es-ES",
+ "name": "यà¥à¤°à¥‹à¤ªà¥‡à¤²à¥€ सà¥à¤ªà¥‡à¤¨à¤¿à¤¸"
+ },
+ "yo": {
+ "code": "yo",
+ "name": "योरूवा"
+ },
+ "rn": {
+ "code": "rn",
+ "name": "रूणà¥à¤¡à¥€"
+ },
+ "ru": {
+ "code": "ru",
+ "name": "रूसी"
+ },
+ "ro": {
+ "code": "ro",
+ "name": "रोमानियाली"
+ },
+ "rm": {
+ "code": "rm",
+ "name": "रोमानिश"
+ },
+ "rof": {
+ "code": "rof",
+ "name": "रोमà¥à¤¬à¥‹"
+ },
+ "rwk": {
+ "code": "rwk",
+ "name": "रà¥â€Œà¤µà¤¾"
+ },
+ "lb": {
+ "code": "lb",
+ "name": "लकà¥à¤œà¥‡à¤®à¥à¤¬à¤°à¥à¤—िस"
+ },
+ "lo": {
+ "code": "lo",
+ "name": "लाओ"
+ },
+ "lag": {
+ "code": "lag",
+ "name": "लाङà¥à¤—ी"
+ },
+ "lv": {
+ "code": "lv",
+ "name": "लातà¥à¤­à¤¿à¤¯à¤¾à¤²à¥€"
+ },
+ "ln": {
+ "code": "ln",
+ "name": "लिंगाला"
+ },
+ "lt": {
+ "code": "lt",
+ "name": "लिथà¥à¤†à¤¨à¤¿à¤¯à¤¾à¤²à¥€"
+ },
+ "luy": {
+ "code": "luy",
+ "name": "लà¥à¤‡à¤¯à¤¾"
+ },
+ "luo": {
+ "code": "luo",
+ "name": "लà¥à¤“"
+ },
+ "lu": {
+ "code": "lu",
+ "name": "लà¥à¤¬à¤¾-काताङà¥à¤—ा"
+ },
+ "my": {
+ "code": "my",
+ "name": "वरà¥à¤®à¥‡à¤²à¥€"
+ },
+ "be": {
+ "code": "be",
+ "name": "वेलारूसी"
+ },
+ "cy": {
+ "code": "cy",
+ "name": "वेलà¥à¤¶"
+ },
+ "ksb": {
+ "code": "ksb",
+ "name": "शामà¥à¤¬à¤¾à¤²à¤¾"
+ },
+ "sn": {
+ "code": "sn",
+ "name": "शोना"
+ },
+ "zh-Hans": {
+ "code": "zh-Hans",
+ "name": "सरलिकृत चिनियाà¤"
+ },
+ "sr": {
+ "code": "sr",
+ "name": "सरà¥à¤¬à¤¿à¤¯à¤¾à¤²à¥€"
+ },
+ "sbp": {
+ "code": "sbp",
+ "name": "साङà¥à¤—à¥"
+ },
+ "sg": {
+ "code": "sg",
+ "name": "साङà¥à¤—ो"
+ },
+ "saq": {
+ "code": "saq",
+ "name": "सामà¥à¤¬à¥à¤°à¥‚"
+ },
+ "si": {
+ "code": "si",
+ "name": "सिनà¥à¤¹à¤¾à¤²à¤¾"
+ },
+ "seh": {
+ "code": "seh",
+ "name": "सेना"
+ },
+ "xog": {
+ "code": "xog",
+ "name": "सोगा"
+ },
+ "so": {
+ "code": "so",
+ "name": "सोमाली"
+ },
+ "gd": {
+ "code": "gd",
+ "name": "सà¥à¤•à¤Ÿà¥à¤¸ गाà¤à¤²à¤¿à¤•"
+ },
+ "es": {
+ "code": "es",
+ "name": "सà¥à¤ªà¥‡à¤¨à¤¿à¤¸"
+ },
+ "sk": {
+ "code": "sk",
+ "name": "सà¥à¤²à¥‹à¤­à¤¾à¤•à¤¿à¤¯à¤¾à¤²à¥€"
+ },
+ "sl": {
+ "code": "sl",
+ "name": "सà¥à¤²à¥‹à¤­à¥‡à¤¨à¤¿à¤¯à¤¾à¤²à¥€"
+ },
+ "sw": {
+ "code": "sw",
+ "name": "सà¥à¤µà¤¾à¤¹à¤¿à¤²à¥€"
+ },
+ "sv": {
+ "code": "sv",
+ "name": "सà¥à¤µà¤¿à¤¡à¤¿à¤¶"
+ },
+ "gsw": {
+ "code": "gsw",
+ "name": "सà¥à¤µà¥€à¤¸ जरà¥à¤®à¤¨"
+ },
+ "de-CH": {
+ "code": "de-CH",
+ "name": "सà¥à¤µà¥€à¤¸ हाई जरà¥à¤®à¤¨"
+ },
+ "hu": {
+ "code": "hu",
+ "name": "हंगà¥à¤°à¥€à¤¯à¤¾à¤²à¥€"
+ },
+ "ha": {
+ "code": "ha",
+ "name": "हाउसा"
+ },
+ "hi": {
+ "code": "hi",
+ "name": "हिनà¥à¤¦à¥€"
+ },
+ "he": {
+ "code": "he",
+ "name": "हिबà¥à¤°à¥"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/language/ne.json b/library/intl/resources/language/ne.json
new file mode 100644
index 000000000..41f8c3a62
--- /dev/null
+++ b/library/intl/resources/language/ne.json
@@ -0,0 +1,738 @@
+{
+ "ast": {
+ "code": "ast",
+ "name": "Asturian"
+ },
+ "bas": {
+ "code": "bas",
+ "name": "Basaa"
+ },
+ "ksh": {
+ "code": "ksh",
+ "name": "Colognian"
+ },
+ "en-AU": {
+ "code": "en-AU",
+ "name": "en_AU"
+ },
+ "en-CA": {
+ "code": "en-CA",
+ "name": "en_CA"
+ },
+ "en-GB": {
+ "code": "en-GB",
+ "name": "en_GB"
+ },
+ "en-US": {
+ "code": "en-US",
+ "name": "en_US"
+ },
+ "es-MX": {
+ "code": "es-MX",
+ "name": "es_MX"
+ },
+ "ewo": {
+ "code": "ewo",
+ "name": "Ewondo"
+ },
+ "fr-CA": {
+ "code": "fr-CA",
+ "name": "fr_CA"
+ },
+ "fr-CH": {
+ "code": "fr-CH",
+ "name": "fr_CH"
+ },
+ "fur": {
+ "code": "fur",
+ "name": "Friulian"
+ },
+ "ff": {
+ "code": "ff",
+ "name": "Fulah"
+ },
+ "pt-BR": {
+ "code": "pt-BR",
+ "name": "pt_BR"
+ },
+ "wae": {
+ "code": "wae",
+ "name": "Walser"
+ },
+ "yav": {
+ "code": "yav",
+ "name": "Yangben"
+ },
+ "en": {
+ "code": "en",
+ "name": "अंगà¥à¤°à¥‡à¤œà¥€"
+ },
+ "az": {
+ "code": "az",
+ "name": "अजरबैजानी"
+ },
+ "af": {
+ "code": "af",
+ "name": "अफà¥à¤°à¤¿à¤•à¤¾à¤¨à¥à¤¸"
+ },
+ "am": {
+ "code": "am",
+ "name": "अमà¥à¤¹à¤¾à¤°à¤¿à¤•"
+ },
+ "ar": {
+ "code": "ar",
+ "name": "अरबी"
+ },
+ "sq": {
+ "code": "sq",
+ "name": "अलà¥à¤¬à¥‡à¤¨à¤¿à¤¯à¤¨"
+ },
+ "de-AT": {
+ "code": "de-AT",
+ "name": "अषà¥à¤Ÿà¥à¤°à¤¿à¤¯à¤¨ जरà¥à¤®à¤¨"
+ },
+ "ga": {
+ "code": "ga",
+ "name": "आइरिश"
+ },
+ "is": {
+ "code": "is",
+ "name": "आइसलà¥à¤¯à¤¾à¤¨à¥à¤¡à¤¿à¤•"
+ },
+ "ak": {
+ "code": "ak",
+ "name": "आकान"
+ },
+ "agq": {
+ "code": "agq",
+ "name": "आघेम"
+ },
+ "ar-001": {
+ "code": "ar-001",
+ "name": "आधà¥à¤¨à¤¿à¤• मानक अरबी"
+ },
+ "hy": {
+ "code": "hy",
+ "name": "आरà¥à¤®à¥‡à¤¨à¤¿à¤¯à¤¾à¤²à¥€"
+ },
+ "asa": {
+ "code": "asa",
+ "name": "आसà¥"
+ },
+ "it": {
+ "code": "it",
+ "name": "इटालियन"
+ },
+ "id": {
+ "code": "id",
+ "name": "इनà¥à¤¡à¥‹à¤¨à¥‡à¤¸à¤¿à¤¯à¤¾à¤²à¥€"
+ },
+ "ee": {
+ "code": "ee",
+ "name": "इवि"
+ },
+ "et": {
+ "code": "et",
+ "name": "इसà¥à¤Ÿà¥‹à¤¨à¤¿à¤¯à¤¾à¤²à¥€"
+ },
+ "ug": {
+ "code": "ug",
+ "name": "उइघà¥à¤°"
+ },
+ "uz": {
+ "code": "uz",
+ "name": "उजà¥à¤¬à¥‡à¤•à¥€"
+ },
+ "nd": {
+ "code": "nd",
+ "name": "उतà¥à¤¤à¤° नेडेबेले"
+ },
+ "se": {
+ "code": "se",
+ "name": "उतà¥à¤¤à¤°à¥€ सामी"
+ },
+ "ur": {
+ "code": "ur",
+ "name": "उरà¥à¤¦à¥"
+ },
+ "ebu": {
+ "code": "ebu",
+ "name": "à¤à¤®à¥à¤¬à¥"
+ },
+ "eo": {
+ "code": "eo",
+ "name": "à¤à¤¸à¥à¤ªà¥‡à¤°à¤¾à¤¨à¥à¤¤à¥‹"
+ },
+ "or": {
+ "code": "or",
+ "name": "ओरिया"
+ },
+ "kn": {
+ "code": "kn",
+ "name": "कनà¥à¤¨à¤¾à¤¡à¤¾"
+ },
+ "kk": {
+ "code": "kk",
+ "name": "काजाख"
+ },
+ "kab": {
+ "code": "kab",
+ "name": "काबिल"
+ },
+ "kea": {
+ "code": "kea",
+ "name": "काबà¥à¤­à¥‡à¤°à¥à¤¡à¤¿à¤¯à¤¾à¤¨à¥"
+ },
+ "kam": {
+ "code": "kam",
+ "name": "कामà¥à¤¬à¤¾"
+ },
+ "kl": {
+ "code": "kl",
+ "name": "कालालिसà¥à¤Ÿ"
+ },
+ "kln": {
+ "code": "kln",
+ "name": "कालेनà¥à¤œà¤¿à¤¨"
+ },
+ "ks": {
+ "code": "ks",
+ "name": "काशà¥à¤®à¥€à¤°à¥€"
+ },
+ "ki": {
+ "code": "ki",
+ "name": "किकà¥à¤¯à¥"
+ },
+ "ky": {
+ "code": "ky",
+ "name": "किरà¥à¤—िज"
+ },
+ "tzm": {
+ "code": "tzm",
+ "name": "केनà¥à¤¦à¥à¤°à¥€à¤¯ à¤à¤Ÿà¥à¤²à¤¾à¤¸ टामाजिघट"
+ },
+ "swc": {
+ "code": "swc",
+ "name": "कोङà¥à¤—ो सà¥à¤µà¤¾à¤¹à¤¿à¤²à¥€"
+ },
+ "khq": {
+ "code": "khq",
+ "name": "कोयरा चिनी"
+ },
+ "ses": {
+ "code": "ses",
+ "name": "कोयराबोरो सेनà¥à¤¨à¥€"
+ },
+ "ko": {
+ "code": "ko",
+ "name": "कोरियाली"
+ },
+ "ca": {
+ "code": "ca",
+ "name": "कà¥à¤¯à¤¾à¤Ÿà¤¾à¤²à¤¨"
+ },
+ "hr": {
+ "code": "hr",
+ "name": "कà¥à¤°à¥‹à¤à¤¶à¤¿à¤¯à¤¾à¤²à¥€"
+ },
+ "nmg": {
+ "code": "nmg",
+ "name": "कà¥à¤µà¤¾à¤¸à¤¿à¤¯à¥‹"
+ },
+ "km": {
+ "code": "km",
+ "name": "खमेर"
+ },
+ "gl": {
+ "code": "gl",
+ "name": "गलिसियाली"
+ },
+ "lg": {
+ "code": "lg",
+ "name": "गानà¥à¤¡à¤¾"
+ },
+ "gu": {
+ "code": "gu",
+ "name": "गà¥à¤œà¤°à¤¾à¤¤à¥€"
+ },
+ "guz": {
+ "code": "guz",
+ "name": "गà¥à¤¸à¥€"
+ },
+ "jgo": {
+ "code": "jgo",
+ "name": "गोमà¥à¤¬à¤¾"
+ },
+ "el": {
+ "code": "el",
+ "name": "गà¥à¤°à¥€à¤•"
+ },
+ "cgg": {
+ "code": "cgg",
+ "name": "चिगा"
+ },
+ "zh": {
+ "code": "zh",
+ "name": "चिनियाà¤"
+ },
+ "cs": {
+ "code": "cs",
+ "name": "चेक"
+ },
+ "chr": {
+ "code": "chr",
+ "name": "चेरोकी"
+ },
+ "ka": {
+ "code": "ka",
+ "name": "जरà¥à¤œà¤¿à¤¯à¤¾à¤²à¥€"
+ },
+ "de": {
+ "code": "de",
+ "name": "जरà¥à¤®à¤¨"
+ },
+ "dje": {
+ "code": "dje",
+ "name": "जरà¥à¤®à¤¾"
+ },
+ "ja": {
+ "code": "ja",
+ "name": "जापानी"
+ },
+ "zu": {
+ "code": "zu",
+ "name": "जà¥à¤²à¥"
+ },
+ "dz": {
+ "code": "dz",
+ "name": "जोङà¥à¤–ा"
+ },
+ "dyo": {
+ "code": "dyo",
+ "name": "जोला-फोनिल"
+ },
+ "tr": {
+ "code": "tr",
+ "name": "टरà¥à¤•à¤¿à¤¶"
+ },
+ "shi": {
+ "code": "shi",
+ "name": "टाचेलà¥à¤¹à¤¿à¤Ÿ"
+ },
+ "teo": {
+ "code": "teo",
+ "name": "टेसो"
+ },
+ "to": {
+ "code": "to",
+ "name": "टोङà¥à¤—न"
+ },
+ "nl": {
+ "code": "nl",
+ "name": "डच"
+ },
+ "da": {
+ "code": "da",
+ "name": "डेनिश"
+ },
+ "dsb": {
+ "code": "dsb",
+ "name": "तलà¥à¤²à¥‹ सोरà¥à¤¬à¤¿à¤¯à¤¨"
+ },
+ "dav": {
+ "code": "dav",
+ "name": "ताइता"
+ },
+ "ta": {
+ "code": "ta",
+ "name": "तामिल"
+ },
+ "twq": {
+ "code": "twq",
+ "name": "तासावाक"
+ },
+ "ti": {
+ "code": "ti",
+ "name": "तिगà¥à¤°à¥€à¤¨à¥à¤¯à¤¾"
+ },
+ "bo": {
+ "code": "bo",
+ "name": "तिबà¥à¤¬à¤¤à¥€"
+ },
+ "te": {
+ "code": "te",
+ "name": "तेलà¥à¤—à¥"
+ },
+ "th": {
+ "code": "th",
+ "name": "थाई"
+ },
+ "nn": {
+ "code": "nn",
+ "name": "नरà¥à¤µà¥‡à¤²à¥€ नाइनोरà¥à¤¸à¥à¤•"
+ },
+ "nb": {
+ "code": "nb",
+ "name": "नरà¥à¤µà¥‡à¤²à¥€ बोकमाल"
+ },
+ "naq": {
+ "code": "naq",
+ "name": "नामा"
+ },
+ "nus": {
+ "code": "nus",
+ "name": "नà¥à¤à¤°"
+ },
+ "ne": {
+ "code": "ne",
+ "name": "नेपाली"
+ },
+ "nyn": {
+ "code": "nyn",
+ "name": "नà¥à¤¯à¤¾à¤¨à¥à¤•à¥‹à¤²"
+ },
+ "pa": {
+ "code": "pa",
+ "name": "पंजाबी"
+ },
+ "zh-Hant": {
+ "code": "zh-Hant",
+ "name": "परमà¥à¤ªà¤°à¤¾à¤—त चिनियाà¤"
+ },
+ "ps": {
+ "code": "ps",
+ "name": "पाशà¥à¤¤à¥‹"
+ },
+ "pt": {
+ "code": "pt",
+ "name": "पोरà¥à¤¤à¥à¤—ी"
+ },
+ "pt-PT": {
+ "code": "pt-PT",
+ "name": "पोरà¥à¤¤à¥à¤—ी (यà¥à¤°à¥‹à¤ª)"
+ },
+ "pl": {
+ "code": "pl",
+ "name": "पोलिश"
+ },
+ "fa": {
+ "code": "fa",
+ "name": "फारसी"
+ },
+ "fo": {
+ "code": "fo",
+ "name": "फारोज"
+ },
+ "fi": {
+ "code": "fi",
+ "name": "फिनिश"
+ },
+ "fil": {
+ "code": "fil",
+ "name": "फिलिपिनी"
+ },
+ "fr": {
+ "code": "fr",
+ "name": "फà¥à¤°à¤¾à¤¨à¥à¤¸à¥‡à¤²à¥€"
+ },
+ "fy": {
+ "code": "fy",
+ "name": "फà¥à¤°à¤¿à¤œà¥€à¤¯à¤¨"
+ },
+ "nl-BE": {
+ "code": "nl-BE",
+ "name": "फà¥à¤²à¥‡à¤®à¤¿à¤¶"
+ },
+ "bn": {
+ "code": "bn",
+ "name": "बंगाली"
+ },
+ "ksf": {
+ "code": "ksf",
+ "name": "बाफिया"
+ },
+ "bm": {
+ "code": "bm",
+ "name": "बामà¥à¤¬à¤¾à¤°à¤¾"
+ },
+ "eu": {
+ "code": "eu",
+ "name": "बासà¥à¤•"
+ },
+ "bg": {
+ "code": "bg",
+ "name": "बà¥à¤²à¥à¤—ेरियाली"
+ },
+ "bez": {
+ "code": "bez",
+ "name": "बेना"
+ },
+ "brx": {
+ "code": "brx",
+ "name": "बोडो"
+ },
+ "bs": {
+ "code": "bs",
+ "name": "बोसà¥à¤¨à¤¿à¤¯à¤¾à¤²à¥€"
+ },
+ "br": {
+ "code": "br",
+ "name": "बà¥à¤°à¥‡à¤Ÿà¤¨"
+ },
+ "vai": {
+ "code": "vai",
+ "name": "भाइ"
+ },
+ "vi": {
+ "code": "vi",
+ "name": "भियतनामी"
+ },
+ "vun": {
+ "code": "vun",
+ "name": "भà¥à¤¨à¥à¤œà¥‹"
+ },
+ "mn": {
+ "code": "mn",
+ "name": "मंगोल"
+ },
+ "mr": {
+ "code": "mr",
+ "name": "मराठी"
+ },
+ "ml": {
+ "code": "ml",
+ "name": "मलयालम"
+ },
+ "mg": {
+ "code": "mg",
+ "name": "मलागासी"
+ },
+ "ms": {
+ "code": "ms",
+ "name": "मलाया"
+ },
+ "kde": {
+ "code": "kde",
+ "name": "माकोनà¥à¤¡à¥‡"
+ },
+ "mgh": {
+ "code": "mgh",
+ "name": "माखà¥à¤µà¤¾-मिटà¥à¤Ÿà¥‹"
+ },
+ "jmc": {
+ "code": "jmc",
+ "name": "माचामे"
+ },
+ "hsb": {
+ "code": "hsb",
+ "name": "माथिलà¥à¤²à¥‹ सोरà¥à¤¬à¤¿à¤¯à¤¨"
+ },
+ "zgh": {
+ "code": "zgh",
+ "name": "मानक मोरोकà¥à¤•à¥‹à¤¨ तामाजिघट"
+ },
+ "mt": {
+ "code": "mt",
+ "name": "मालà¥à¤Ÿà¤¿à¤œ"
+ },
+ "ro-MD": {
+ "code": "ro-MD",
+ "name": "मालà¥à¤¡à¤¾à¤­à¤¿à¤¯à¤¨"
+ },
+ "mas": {
+ "code": "mas",
+ "name": "मासाल"
+ },
+ "mua": {
+ "code": "mua",
+ "name": "मà¥à¤¨à¥à¤¡à¤¾à¤™"
+ },
+ "mer": {
+ "code": "mer",
+ "name": "मेरू"
+ },
+ "mfe": {
+ "code": "mfe",
+ "name": "मोरिसेन"
+ },
+ "mk": {
+ "code": "mk",
+ "name": "मà¥à¤¯à¤¾à¤•à¥‡à¤¡à¥‹à¤¨à¤¿à¤¯à¤¨"
+ },
+ "uk": {
+ "code": "uk",
+ "name": "यà¥à¤•à¥à¤°à¥‡à¤¨à¥€"
+ },
+ "es-ES": {
+ "code": "es-ES",
+ "name": "यà¥à¤°à¥‹à¤ªà¥‡à¤²à¥€ सà¥à¤ªà¥‡à¤¨à¤¿à¤¸"
+ },
+ "yo": {
+ "code": "yo",
+ "name": "योरूवा"
+ },
+ "rn": {
+ "code": "rn",
+ "name": "रूणà¥à¤¡à¥€"
+ },
+ "ru": {
+ "code": "ru",
+ "name": "रूसी"
+ },
+ "ro": {
+ "code": "ro",
+ "name": "रोमानियाली"
+ },
+ "rm": {
+ "code": "rm",
+ "name": "रोमानिश"
+ },
+ "rof": {
+ "code": "rof",
+ "name": "रोमà¥à¤¬à¥‹"
+ },
+ "rwk": {
+ "code": "rwk",
+ "name": "रà¥â€Œà¤µà¤¾"
+ },
+ "lb": {
+ "code": "lb",
+ "name": "लकà¥à¤œà¥‡à¤®à¥à¤¬à¤°à¥à¤—िस"
+ },
+ "lo": {
+ "code": "lo",
+ "name": "लाओ"
+ },
+ "lag": {
+ "code": "lag",
+ "name": "लाङà¥à¤—ी"
+ },
+ "lv": {
+ "code": "lv",
+ "name": "लातà¥à¤­à¤¿à¤¯à¤¾à¤²à¥€"
+ },
+ "ln": {
+ "code": "ln",
+ "name": "लिंगाला"
+ },
+ "lt": {
+ "code": "lt",
+ "name": "लिथà¥à¤†à¤¨à¤¿à¤¯à¤¾à¤²à¥€"
+ },
+ "luy": {
+ "code": "luy",
+ "name": "लà¥à¤‡à¤¯à¤¾"
+ },
+ "luo": {
+ "code": "luo",
+ "name": "लà¥à¤“"
+ },
+ "lu": {
+ "code": "lu",
+ "name": "लà¥à¤¬à¤¾-काताङà¥à¤—ा"
+ },
+ "my": {
+ "code": "my",
+ "name": "वरà¥à¤®à¥‡à¤²à¥€"
+ },
+ "be": {
+ "code": "be",
+ "name": "वेलारूसी"
+ },
+ "cy": {
+ "code": "cy",
+ "name": "वेलà¥à¤¶"
+ },
+ "ksb": {
+ "code": "ksb",
+ "name": "शामà¥à¤¬à¤¾à¤²à¤¾"
+ },
+ "sn": {
+ "code": "sn",
+ "name": "शोना"
+ },
+ "zh-Hans": {
+ "code": "zh-Hans",
+ "name": "सरलिकृत चिनियाà¤"
+ },
+ "sr": {
+ "code": "sr",
+ "name": "सरà¥à¤¬à¤¿à¤¯à¤¾à¤²à¥€"
+ },
+ "sbp": {
+ "code": "sbp",
+ "name": "साङà¥à¤—à¥"
+ },
+ "sg": {
+ "code": "sg",
+ "name": "साङà¥à¤—ो"
+ },
+ "saq": {
+ "code": "saq",
+ "name": "सामà¥à¤¬à¥à¤°à¥‚"
+ },
+ "si": {
+ "code": "si",
+ "name": "सिनà¥à¤¹à¤¾à¤²à¤¾"
+ },
+ "seh": {
+ "code": "seh",
+ "name": "सेना"
+ },
+ "xog": {
+ "code": "xog",
+ "name": "सोगा"
+ },
+ "so": {
+ "code": "so",
+ "name": "सोमाली"
+ },
+ "gd": {
+ "code": "gd",
+ "name": "सà¥à¤•à¤Ÿà¥à¤¸ गाà¤à¤²à¤¿à¤•"
+ },
+ "es": {
+ "code": "es",
+ "name": "सà¥à¤ªà¥‡à¤¨à¤¿à¤¸"
+ },
+ "sk": {
+ "code": "sk",
+ "name": "सà¥à¤²à¥‹à¤­à¤¾à¤•à¤¿à¤¯à¤¾à¤²à¥€"
+ },
+ "sl": {
+ "code": "sl",
+ "name": "सà¥à¤²à¥‹à¤­à¥‡à¤¨à¤¿à¤¯à¤¾à¤²à¥€"
+ },
+ "sw": {
+ "code": "sw",
+ "name": "सà¥à¤µà¤¾à¤¹à¤¿à¤²à¥€"
+ },
+ "sv": {
+ "code": "sv",
+ "name": "सà¥à¤µà¤¿à¤¡à¤¿à¤¶"
+ },
+ "gsw": {
+ "code": "gsw",
+ "name": "सà¥à¤µà¥€à¤¸ जरà¥à¤®à¤¨"
+ },
+ "de-CH": {
+ "code": "de-CH",
+ "name": "सà¥à¤µà¥€à¤¸ हाई जरà¥à¤®à¤¨"
+ },
+ "hu": {
+ "code": "hu",
+ "name": "हंगà¥à¤°à¥€à¤¯à¤¾à¤²à¥€"
+ },
+ "ha": {
+ "code": "ha",
+ "name": "हाउसा"
+ },
+ "hi": {
+ "code": "hi",
+ "name": "हिनà¥à¤¦à¥€"
+ },
+ "he": {
+ "code": "he",
+ "name": "हिबà¥à¤°à¥"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/language/nl.json b/library/intl/resources/language/nl.json
new file mode 100644
index 000000000..4edb00b29
--- /dev/null
+++ b/library/intl/resources/language/nl.json
@@ -0,0 +1,738 @@
+{
+ "af": {
+ "code": "af",
+ "name": "Afrikaans"
+ },
+ "agq": {
+ "code": "agq",
+ "name": "Aghem"
+ },
+ "ak": {
+ "code": "ak",
+ "name": "Akan"
+ },
+ "sq": {
+ "code": "sq",
+ "name": "Albanees"
+ },
+ "en-US": {
+ "code": "en-US",
+ "name": "Amerikaans Engels"
+ },
+ "am": {
+ "code": "am",
+ "name": "Amhaars"
+ },
+ "ar": {
+ "code": "ar",
+ "name": "Arabisch"
+ },
+ "hy": {
+ "code": "hy",
+ "name": "Armeens"
+ },
+ "ast": {
+ "code": "ast",
+ "name": "Asturisch"
+ },
+ "asa": {
+ "code": "asa",
+ "name": "Asu"
+ },
+ "en-AU": {
+ "code": "en-AU",
+ "name": "Australisch Engels"
+ },
+ "az": {
+ "code": "az",
+ "name": "Azerbeidzjaans"
+ },
+ "ksf": {
+ "code": "ksf",
+ "name": "Bafia"
+ },
+ "bm": {
+ "code": "bm",
+ "name": "Bambara"
+ },
+ "bas": {
+ "code": "bas",
+ "name": "Basa"
+ },
+ "eu": {
+ "code": "eu",
+ "name": "Baskisch"
+ },
+ "bez": {
+ "code": "bez",
+ "name": "Bena"
+ },
+ "bn": {
+ "code": "bn",
+ "name": "Bengaals"
+ },
+ "my": {
+ "code": "my",
+ "name": "Birmaans"
+ },
+ "brx": {
+ "code": "brx",
+ "name": "Bodo"
+ },
+ "bs": {
+ "code": "bs",
+ "name": "Bosnisch"
+ },
+ "pt-BR": {
+ "code": "pt-BR",
+ "name": "Braziliaans Portugees"
+ },
+ "br": {
+ "code": "br",
+ "name": "Bretons"
+ },
+ "en-GB": {
+ "code": "en-GB",
+ "name": "Brits Engels"
+ },
+ "bg": {
+ "code": "bg",
+ "name": "Bulgaars"
+ },
+ "en-CA": {
+ "code": "en-CA",
+ "name": "Canadees Engels"
+ },
+ "fr-CA": {
+ "code": "fr-CA",
+ "name": "Canadees Frans"
+ },
+ "ca": {
+ "code": "ca",
+ "name": "Catalaans"
+ },
+ "chr": {
+ "code": "chr",
+ "name": "Cherokee"
+ },
+ "cgg": {
+ "code": "cgg",
+ "name": "Chiga"
+ },
+ "zh": {
+ "code": "zh",
+ "name": "Chinees"
+ },
+ "swc": {
+ "code": "swc",
+ "name": "Congo Swahili"
+ },
+ "da": {
+ "code": "da",
+ "name": "Deens"
+ },
+ "de": {
+ "code": "de",
+ "name": "Duits"
+ },
+ "dz": {
+ "code": "dz",
+ "name": "Dzongkha"
+ },
+ "ebu": {
+ "code": "ebu",
+ "name": "Embu"
+ },
+ "en": {
+ "code": "en",
+ "name": "Engels"
+ },
+ "eo": {
+ "code": "eo",
+ "name": "Esperanto"
+ },
+ "et": {
+ "code": "et",
+ "name": "Estisch"
+ },
+ "pt-PT": {
+ "code": "pt-PT",
+ "name": "Europees Portugees"
+ },
+ "es-ES": {
+ "code": "es-ES",
+ "name": "Europees Spaans"
+ },
+ "ee": {
+ "code": "ee",
+ "name": "Ewe"
+ },
+ "ewo": {
+ "code": "ewo",
+ "name": "Ewondo"
+ },
+ "fo": {
+ "code": "fo",
+ "name": "Faeröers"
+ },
+ "fil": {
+ "code": "fil",
+ "name": "Filipijns"
+ },
+ "fi": {
+ "code": "fi",
+ "name": "Fins"
+ },
+ "fr": {
+ "code": "fr",
+ "name": "Frans"
+ },
+ "fy": {
+ "code": "fy",
+ "name": "Fries"
+ },
+ "fur": {
+ "code": "fur",
+ "name": "Friulisch"
+ },
+ "ff": {
+ "code": "ff",
+ "name": "Fulah"
+ },
+ "gl": {
+ "code": "gl",
+ "name": "Galicisch"
+ },
+ "ka": {
+ "code": "ka",
+ "name": "Georgisch"
+ },
+ "ki": {
+ "code": "ki",
+ "name": "Gikuyu"
+ },
+ "el": {
+ "code": "el",
+ "name": "Grieks"
+ },
+ "kl": {
+ "code": "kl",
+ "name": "Groenlands"
+ },
+ "gu": {
+ "code": "gu",
+ "name": "Gujarati"
+ },
+ "guz": {
+ "code": "guz",
+ "name": "Gusii"
+ },
+ "ha": {
+ "code": "ha",
+ "name": "Hausa"
+ },
+ "he": {
+ "code": "he",
+ "name": "Hebreeuws"
+ },
+ "hi": {
+ "code": "hi",
+ "name": "Hindi"
+ },
+ "hu": {
+ "code": "hu",
+ "name": "Hongaars"
+ },
+ "ga": {
+ "code": "ga",
+ "name": "Iers"
+ },
+ "is": {
+ "code": "is",
+ "name": "IJslands"
+ },
+ "id": {
+ "code": "id",
+ "name": "Indonesisch"
+ },
+ "it": {
+ "code": "it",
+ "name": "Italiaans"
+ },
+ "ja": {
+ "code": "ja",
+ "name": "Japans"
+ },
+ "dyo": {
+ "code": "dyo",
+ "name": "Jola-Fonyi"
+ },
+ "kea": {
+ "code": "kea",
+ "name": "Kaapverdisch Creools"
+ },
+ "kab": {
+ "code": "kab",
+ "name": "Kabylisch"
+ },
+ "kln": {
+ "code": "kln",
+ "name": "Kalenjin"
+ },
+ "kam": {
+ "code": "kam",
+ "name": "Kamba"
+ },
+ "kn": {
+ "code": "kn",
+ "name": "Kannada"
+ },
+ "ks": {
+ "code": "ks",
+ "name": "Kasjmiri"
+ },
+ "kk": {
+ "code": "kk",
+ "name": "Kazachs"
+ },
+ "km": {
+ "code": "km",
+ "name": "Khmer"
+ },
+ "ky": {
+ "code": "ky",
+ "name": "Kirgizisch"
+ },
+ "rn": {
+ "code": "rn",
+ "name": "Kirundi"
+ },
+ "ksh": {
+ "code": "ksh",
+ "name": "Kölsch"
+ },
+ "ko": {
+ "code": "ko",
+ "name": "Koreaans"
+ },
+ "khq": {
+ "code": "khq",
+ "name": "Koyra Chiini"
+ },
+ "ses": {
+ "code": "ses",
+ "name": "Koyraboro Senni"
+ },
+ "hr": {
+ "code": "hr",
+ "name": "Kroatisch"
+ },
+ "lag": {
+ "code": "lag",
+ "name": "Langi"
+ },
+ "lo": {
+ "code": "lo",
+ "name": "Laotiaans"
+ },
+ "lv": {
+ "code": "lv",
+ "name": "Lets"
+ },
+ "ln": {
+ "code": "ln",
+ "name": "Lingala"
+ },
+ "lt": {
+ "code": "lt",
+ "name": "Litouws"
+ },
+ "lu": {
+ "code": "lu",
+ "name": "Luba-Katanga"
+ },
+ "lg": {
+ "code": "lg",
+ "name": "Luganda"
+ },
+ "luo": {
+ "code": "luo",
+ "name": "Luo"
+ },
+ "lb": {
+ "code": "lb",
+ "name": "Luxemburgs"
+ },
+ "luy": {
+ "code": "luy",
+ "name": "Luyia"
+ },
+ "mas": {
+ "code": "mas",
+ "name": "Maa"
+ },
+ "mk": {
+ "code": "mk",
+ "name": "Macedonisch"
+ },
+ "jmc": {
+ "code": "jmc",
+ "name": "Machame"
+ },
+ "mgh": {
+ "code": "mgh",
+ "name": "Makhuwa-Meetto"
+ },
+ "kde": {
+ "code": "kde",
+ "name": "Makonde"
+ },
+ "mg": {
+ "code": "mg",
+ "name": "Malagassisch"
+ },
+ "ml": {
+ "code": "ml",
+ "name": "Malayalam"
+ },
+ "ms": {
+ "code": "ms",
+ "name": "Maleis"
+ },
+ "mt": {
+ "code": "mt",
+ "name": "Maltees"
+ },
+ "mr": {
+ "code": "mr",
+ "name": "Marathi"
+ },
+ "mer": {
+ "code": "mer",
+ "name": "Meru"
+ },
+ "es-MX": {
+ "code": "es-MX",
+ "name": "Mexicaans Spaans"
+ },
+ "ar-001": {
+ "code": "ar-001",
+ "name": "modern standaard Arabisch"
+ },
+ "mn": {
+ "code": "mn",
+ "name": "Mongools"
+ },
+ "mfe": {
+ "code": "mfe",
+ "name": "Morisyen"
+ },
+ "mua": {
+ "code": "mua",
+ "name": "Mundang"
+ },
+ "naq": {
+ "code": "naq",
+ "name": "Nama"
+ },
+ "nl": {
+ "code": "nl",
+ "name": "Nederlands"
+ },
+ "dsb": {
+ "code": "dsb",
+ "name": "Nedersorbisch"
+ },
+ "ne": {
+ "code": "ne",
+ "name": "Nepalees"
+ },
+ "jgo": {
+ "code": "jgo",
+ "name": "Ngomba"
+ },
+ "nmg": {
+ "code": "nmg",
+ "name": "Ngumba"
+ },
+ "nd": {
+ "code": "nd",
+ "name": "Noord-Ndebele"
+ },
+ "se": {
+ "code": "se",
+ "name": "Noord-Samisch"
+ },
+ "nb": {
+ "code": "nb",
+ "name": "Noors - Bokmål"
+ },
+ "nn": {
+ "code": "nn",
+ "name": "Noors - Nynorsk"
+ },
+ "nus": {
+ "code": "nus",
+ "name": "Nuer"
+ },
+ "nyn": {
+ "code": "nyn",
+ "name": "Nyankole"
+ },
+ "or": {
+ "code": "or",
+ "name": "Odia"
+ },
+ "ug": {
+ "code": "ug",
+ "name": "Oeigoers"
+ },
+ "uk": {
+ "code": "uk",
+ "name": "Oekraïens"
+ },
+ "uz": {
+ "code": "uz",
+ "name": "Oezbeeks"
+ },
+ "de-AT": {
+ "code": "de-AT",
+ "name": "Oostenrijks Duits"
+ },
+ "hsb": {
+ "code": "hsb",
+ "name": "Oppersorbisch"
+ },
+ "ps": {
+ "code": "ps",
+ "name": "Pasjtoe"
+ },
+ "fa": {
+ "code": "fa",
+ "name": "Perzisch"
+ },
+ "pl": {
+ "code": "pl",
+ "name": "Pools"
+ },
+ "pt": {
+ "code": "pt",
+ "name": "Portugees"
+ },
+ "pa": {
+ "code": "pa",
+ "name": "Punjabi"
+ },
+ "rm": {
+ "code": "rm",
+ "name": "Reto-Romaans"
+ },
+ "ro-MD": {
+ "code": "ro-MD",
+ "name": "ro_MD"
+ },
+ "ro": {
+ "code": "ro",
+ "name": "Roemeens"
+ },
+ "rof": {
+ "code": "rof",
+ "name": "Rombo"
+ },
+ "ru": {
+ "code": "ru",
+ "name": "Russisch"
+ },
+ "rwk": {
+ "code": "rwk",
+ "name": "Rwa"
+ },
+ "saq": {
+ "code": "saq",
+ "name": "Samburu"
+ },
+ "sg": {
+ "code": "sg",
+ "name": "Sango"
+ },
+ "sbp": {
+ "code": "sbp",
+ "name": "Sangu"
+ },
+ "gd": {
+ "code": "gd",
+ "name": "Schots-Gaelisch"
+ },
+ "seh": {
+ "code": "seh",
+ "name": "Sena"
+ },
+ "sr": {
+ "code": "sr",
+ "name": "Servisch"
+ },
+ "ksb": {
+ "code": "ksb",
+ "name": "Shambala"
+ },
+ "sn": {
+ "code": "sn",
+ "name": "Shona"
+ },
+ "si": {
+ "code": "si",
+ "name": "Singalees"
+ },
+ "sl": {
+ "code": "sl",
+ "name": "Sloveens"
+ },
+ "sk": {
+ "code": "sk",
+ "name": "Slowaaks"
+ },
+ "xog": {
+ "code": "xog",
+ "name": "Soga"
+ },
+ "so": {
+ "code": "so",
+ "name": "Somalisch"
+ },
+ "es": {
+ "code": "es",
+ "name": "Spaans"
+ },
+ "zgh": {
+ "code": "zgh",
+ "name": "Standaard Marokkaanse Tamazight"
+ },
+ "sw": {
+ "code": "sw",
+ "name": "Swahili"
+ },
+ "dav": {
+ "code": "dav",
+ "name": "Taita"
+ },
+ "tzm": {
+ "code": "tzm",
+ "name": "Tamazight (Centraal-Marokko)"
+ },
+ "ta": {
+ "code": "ta",
+ "name": "Tamil"
+ },
+ "twq": {
+ "code": "twq",
+ "name": "Tasawaq"
+ },
+ "shi": {
+ "code": "shi",
+ "name": "Tashelhiyt"
+ },
+ "te": {
+ "code": "te",
+ "name": "Telugu"
+ },
+ "teo": {
+ "code": "teo",
+ "name": "Teso"
+ },
+ "th": {
+ "code": "th",
+ "name": "Thais"
+ },
+ "bo": {
+ "code": "bo",
+ "name": "Tibetaans"
+ },
+ "ti": {
+ "code": "ti",
+ "name": "Tigrinya"
+ },
+ "to": {
+ "code": "to",
+ "name": "Tongaans"
+ },
+ "zh-Hant": {
+ "code": "zh-Hant",
+ "name": "traditioneel Chinees"
+ },
+ "cs": {
+ "code": "cs",
+ "name": "Tsjechisch"
+ },
+ "tr": {
+ "code": "tr",
+ "name": "Turks"
+ },
+ "ur": {
+ "code": "ur",
+ "name": "Urdu"
+ },
+ "vai": {
+ "code": "vai",
+ "name": "Vai"
+ },
+ "zh-Hans": {
+ "code": "zh-Hans",
+ "name": "vereenvoudigd Chinees"
+ },
+ "vi": {
+ "code": "vi",
+ "name": "Vietnamees"
+ },
+ "nl-BE": {
+ "code": "nl-BE",
+ "name": "Vlaams"
+ },
+ "vun": {
+ "code": "vun",
+ "name": "Vunjo"
+ },
+ "wae": {
+ "code": "wae",
+ "name": "Walser"
+ },
+ "cy": {
+ "code": "cy",
+ "name": "Welsh"
+ },
+ "be": {
+ "code": "be",
+ "name": "Wit-Russisch"
+ },
+ "yav": {
+ "code": "yav",
+ "name": "Yangben"
+ },
+ "yo": {
+ "code": "yo",
+ "name": "Yoruba"
+ },
+ "dje": {
+ "code": "dje",
+ "name": "Zarma"
+ },
+ "zu": {
+ "code": "zu",
+ "name": "Zoeloe"
+ },
+ "sv": {
+ "code": "sv",
+ "name": "Zweeds"
+ },
+ "gsw": {
+ "code": "gsw",
+ "name": "Zwitserduits"
+ },
+ "fr-CH": {
+ "code": "fr-CH",
+ "name": "Zwitsers Frans"
+ },
+ "de-CH": {
+ "code": "de-CH",
+ "name": "Zwitsers Hoogduits"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/language/nmg.json b/library/intl/resources/language/nmg.json
new file mode 100644
index 000000000..25d4d1776
--- /dev/null
+++ b/library/intl/resources/language/nmg.json
@@ -0,0 +1,738 @@
+{
+ "af": {
+ "code": "af",
+ "name": "Afrikaans"
+ },
+ "agq": {
+ "code": "agq",
+ "name": "Aghem"
+ },
+ "sq": {
+ "code": "sq",
+ "name": "Albanian"
+ },
+ "ar-001": {
+ "code": "ar-001",
+ "name": "ar_001"
+ },
+ "hy": {
+ "code": "hy",
+ "name": "Armenian"
+ },
+ "ast": {
+ "code": "ast",
+ "name": "Asturian"
+ },
+ "asa": {
+ "code": "asa",
+ "name": "Asu"
+ },
+ "az": {
+ "code": "az",
+ "name": "Azerbaijani"
+ },
+ "ksf": {
+ "code": "ksf",
+ "name": "Bafia"
+ },
+ "bm": {
+ "code": "bm",
+ "name": "Bambara"
+ },
+ "bas": {
+ "code": "bas",
+ "name": "Basaa"
+ },
+ "eu": {
+ "code": "eu",
+ "name": "Basque"
+ },
+ "bez": {
+ "code": "bez",
+ "name": "Bena"
+ },
+ "brx": {
+ "code": "brx",
+ "name": "Bodo"
+ },
+ "bs": {
+ "code": "bs",
+ "name": "Bosnian"
+ },
+ "br": {
+ "code": "br",
+ "name": "Breton"
+ },
+ "ca": {
+ "code": "ca",
+ "name": "Catalan"
+ },
+ "tzm": {
+ "code": "tzm",
+ "name": "Central Atlas Tamazight"
+ },
+ "chr": {
+ "code": "chr",
+ "name": "Cherokee"
+ },
+ "cgg": {
+ "code": "cgg",
+ "name": "Chiga"
+ },
+ "ksh": {
+ "code": "ksh",
+ "name": "Colognian"
+ },
+ "swc": {
+ "code": "swc",
+ "name": "Congo Swahili"
+ },
+ "hr": {
+ "code": "hr",
+ "name": "Croatian"
+ },
+ "da": {
+ "code": "da",
+ "name": "Danish"
+ },
+ "de-AT": {
+ "code": "de-AT",
+ "name": "de_AT"
+ },
+ "de-CH": {
+ "code": "de-CH",
+ "name": "de_CH"
+ },
+ "dz": {
+ "code": "dz",
+ "name": "Dzongkha"
+ },
+ "ebu": {
+ "code": "ebu",
+ "name": "Embu"
+ },
+ "en-AU": {
+ "code": "en-AU",
+ "name": "en_AU"
+ },
+ "en-CA": {
+ "code": "en-CA",
+ "name": "en_CA"
+ },
+ "en-GB": {
+ "code": "en-GB",
+ "name": "en_GB"
+ },
+ "en-US": {
+ "code": "en-US",
+ "name": "en_US"
+ },
+ "es-ES": {
+ "code": "es-ES",
+ "name": "es_ES"
+ },
+ "es-MX": {
+ "code": "es-MX",
+ "name": "es_MX"
+ },
+ "eo": {
+ "code": "eo",
+ "name": "Esperanto"
+ },
+ "et": {
+ "code": "et",
+ "name": "Estonian"
+ },
+ "ee": {
+ "code": "ee",
+ "name": "Ewe"
+ },
+ "ewo": {
+ "code": "ewo",
+ "name": "Ewondo"
+ },
+ "fr": {
+ "code": "fr",
+ "name": "Fala"
+ },
+ "fo": {
+ "code": "fo",
+ "name": "Faroese"
+ },
+ "fil": {
+ "code": "fil",
+ "name": "Filipino"
+ },
+ "fi": {
+ "code": "fi",
+ "name": "Finnish"
+ },
+ "fr-CA": {
+ "code": "fr-CA",
+ "name": "fr_CA"
+ },
+ "fr-CH": {
+ "code": "fr-CH",
+ "name": "fr_CH"
+ },
+ "fur": {
+ "code": "fur",
+ "name": "Friulian"
+ },
+ "ff": {
+ "code": "ff",
+ "name": "Fulah"
+ },
+ "gl": {
+ "code": "gl",
+ "name": "Galician"
+ },
+ "lg": {
+ "code": "lg",
+ "name": "Ganda"
+ },
+ "ka": {
+ "code": "ka",
+ "name": "Georgian"
+ },
+ "gu": {
+ "code": "gu",
+ "name": "Gujarati"
+ },
+ "guz": {
+ "code": "guz",
+ "name": "Gusii"
+ },
+ "he": {
+ "code": "he",
+ "name": "Hebrew"
+ },
+ "is": {
+ "code": "is",
+ "name": "Icelandic"
+ },
+ "ga": {
+ "code": "ga",
+ "name": "Irish"
+ },
+ "de": {
+ "code": "de",
+ "name": "Jáman"
+ },
+ "dyo": {
+ "code": "dyo",
+ "name": "Jola-Fonyi"
+ },
+ "kea": {
+ "code": "kea",
+ "name": "Kabuverdianu"
+ },
+ "kab": {
+ "code": "kab",
+ "name": "Kabyle"
+ },
+ "kl": {
+ "code": "kl",
+ "name": "Kalaallisut"
+ },
+ "kln": {
+ "code": "kln",
+ "name": "Kalenjin"
+ },
+ "kam": {
+ "code": "kam",
+ "name": "Kamba"
+ },
+ "kn": {
+ "code": "kn",
+ "name": "Kannada"
+ },
+ "ks": {
+ "code": "ks",
+ "name": "Kashmiri"
+ },
+ "kk": {
+ "code": "kk",
+ "name": "Kazakh"
+ },
+ "ak": {
+ "code": "ak",
+ "name": "Kiɛl akan"
+ },
+ "am": {
+ "code": "am",
+ "name": "Kiɛl amaria"
+ },
+ "ar": {
+ "code": "ar",
+ "name": "Kiɛl b’árabe"
+ },
+ "hi": {
+ "code": "hi",
+ "name": "Kiɛl b’indien"
+ },
+ "hu": {
+ "code": "hu",
+ "name": "KiÉ›l b’ɔÌngrois"
+ },
+ "uk": {
+ "code": "uk",
+ "name": "Kiɛl b’ukrɛ̄nien"
+ },
+ "be": {
+ "code": "be",
+ "name": "Kiɛl belarussie"
+ },
+ "bn": {
+ "code": "bn",
+ "name": "Kiɛl bengalia"
+ },
+ "my": {
+ "code": "my",
+ "name": "Kiɛl birmania"
+ },
+ "zh": {
+ "code": "zh",
+ "name": "Kiɛl bó chinois"
+ },
+ "el": {
+ "code": "el",
+ "name": "Kiɛl bó grɛk"
+ },
+ "ja": {
+ "code": "ja",
+ "name": "Kiɛl bó japonɛ̌"
+ },
+ "km": {
+ "code": "km",
+ "name": "Kiɛl bó mɛr"
+ },
+ "pt": {
+ "code": "pt",
+ "name": "Kiɛl bó pɔ̄rtugɛ̂"
+ },
+ "ro": {
+ "code": "ro",
+ "name": "Kiɛl bó rumɛ̂n"
+ },
+ "sv": {
+ "code": "sv",
+ "name": "Kiɛl bó suedois"
+ },
+ "cs": {
+ "code": "cs",
+ "name": "Kiɛl bó tchɛk"
+ },
+ "tr": {
+ "code": "tr",
+ "name": "Kiɛl bó turk"
+ },
+ "nl": {
+ "code": "nl",
+ "name": "Kiɛl bóllandais"
+ },
+ "bg": {
+ "code": "bg",
+ "name": "Kiɛl bulgaria"
+ },
+ "id": {
+ "code": "id",
+ "name": "Kiɛl indonesie"
+ },
+ "it": {
+ "code": "it",
+ "name": "Kiɛl italia"
+ },
+ "ko": {
+ "code": "ko",
+ "name": "Kiɛl koré"
+ },
+ "ms": {
+ "code": "ms",
+ "name": "KiÉ›l Malɛ̌siÄ"
+ },
+ "ha": {
+ "code": "ha",
+ "name": "Kiɛl máwúsá"
+ },
+ "ne": {
+ "code": "ne",
+ "name": "Kiɛl nepal"
+ },
+ "pa": {
+ "code": "pa",
+ "name": "Kiɛl pɛndjabi"
+ },
+ "fa": {
+ "code": "fa",
+ "name": "Kiɛl pɛrsia"
+ },
+ "pl": {
+ "code": "pl",
+ "name": "Kiɛl pɔlɔŋe"
+ },
+ "ru": {
+ "code": "ru",
+ "name": "Kiɛl russia"
+ },
+ "so": {
+ "code": "so",
+ "name": "KiÉ›l somaliÄ"
+ },
+ "ta": {
+ "code": "ta",
+ "name": "Kiɛl tamul"
+ },
+ "th": {
+ "code": "th",
+ "name": "Kiɛl thaï"
+ },
+ "ur": {
+ "code": "ur",
+ "name": "Kiɛl úrdu"
+ },
+ "vi": {
+ "code": "vi",
+ "name": "Kiɛl viɛtnam"
+ },
+ "ki": {
+ "code": "ki",
+ "name": "Kikuyu"
+ },
+ "khq": {
+ "code": "khq",
+ "name": "Koyra Chiini"
+ },
+ "ses": {
+ "code": "ses",
+ "name": "Koyraboro Senni"
+ },
+ "nmg": {
+ "code": "nmg",
+ "name": "Kwasio"
+ },
+ "ky": {
+ "code": "ky",
+ "name": "Kyrgyz"
+ },
+ "lag": {
+ "code": "lag",
+ "name": "Langi"
+ },
+ "lo": {
+ "code": "lo",
+ "name": "Lao"
+ },
+ "lv": {
+ "code": "lv",
+ "name": "Latvian"
+ },
+ "ln": {
+ "code": "ln",
+ "name": "Lingala"
+ },
+ "lt": {
+ "code": "lt",
+ "name": "Lithuanian"
+ },
+ "dsb": {
+ "code": "dsb",
+ "name": "Lower Sorbian"
+ },
+ "lu": {
+ "code": "lu",
+ "name": "Luba-Katanga"
+ },
+ "luo": {
+ "code": "luo",
+ "name": "Luo"
+ },
+ "lb": {
+ "code": "lb",
+ "name": "Luxembourgish"
+ },
+ "luy": {
+ "code": "luy",
+ "name": "Luyia"
+ },
+ "mk": {
+ "code": "mk",
+ "name": "Macedonian"
+ },
+ "jmc": {
+ "code": "jmc",
+ "name": "Machame"
+ },
+ "mgh": {
+ "code": "mgh",
+ "name": "Makhuwa-Meetto"
+ },
+ "kde": {
+ "code": "kde",
+ "name": "Makonde"
+ },
+ "mg": {
+ "code": "mg",
+ "name": "Malagasy"
+ },
+ "ml": {
+ "code": "ml",
+ "name": "Malayalam"
+ },
+ "mt": {
+ "code": "mt",
+ "name": "Maltese"
+ },
+ "mr": {
+ "code": "mr",
+ "name": "Marathi"
+ },
+ "mas": {
+ "code": "mas",
+ "name": "Masai"
+ },
+ "mer": {
+ "code": "mer",
+ "name": "Meru"
+ },
+ "mn": {
+ "code": "mn",
+ "name": "Mongolian"
+ },
+ "mfe": {
+ "code": "mfe",
+ "name": "Morisyen"
+ },
+ "mua": {
+ "code": "mua",
+ "name": "Mundang"
+ },
+ "naq": {
+ "code": "naq",
+ "name": "Nama"
+ },
+ "en": {
+ "code": "en",
+ "name": "Ngɛ̄lɛ̄n"
+ },
+ "jgo": {
+ "code": "jgo",
+ "name": "Ngomba"
+ },
+ "nl-BE": {
+ "code": "nl-BE",
+ "name": "nl_BE"
+ },
+ "nd": {
+ "code": "nd",
+ "name": "North Ndebele"
+ },
+ "se": {
+ "code": "se",
+ "name": "Northern Sami"
+ },
+ "nb": {
+ "code": "nb",
+ "name": "Norwegian Bokmål"
+ },
+ "nn": {
+ "code": "nn",
+ "name": "Norwegian Nynorsk"
+ },
+ "nus": {
+ "code": "nus",
+ "name": "Nuer"
+ },
+ "nyn": {
+ "code": "nyn",
+ "name": "Nyankole"
+ },
+ "or": {
+ "code": "or",
+ "name": "Oriya"
+ },
+ "es": {
+ "code": "es",
+ "name": "Paŋá"
+ },
+ "ps": {
+ "code": "ps",
+ "name": "Pashto"
+ },
+ "pt-BR": {
+ "code": "pt-BR",
+ "name": "pt_BR"
+ },
+ "pt-PT": {
+ "code": "pt-PT",
+ "name": "pt_PT"
+ },
+ "ro-MD": {
+ "code": "ro-MD",
+ "name": "ro_MD"
+ },
+ "rm": {
+ "code": "rm",
+ "name": "Romansh"
+ },
+ "rof": {
+ "code": "rof",
+ "name": "Rombo"
+ },
+ "rn": {
+ "code": "rn",
+ "name": "Rundi"
+ },
+ "rwk": {
+ "code": "rwk",
+ "name": "Rwa"
+ },
+ "saq": {
+ "code": "saq",
+ "name": "Samburu"
+ },
+ "sg": {
+ "code": "sg",
+ "name": "Sango"
+ },
+ "sbp": {
+ "code": "sbp",
+ "name": "Sangu"
+ },
+ "gd": {
+ "code": "gd",
+ "name": "Scottish Gaelic"
+ },
+ "seh": {
+ "code": "seh",
+ "name": "Sena"
+ },
+ "sr": {
+ "code": "sr",
+ "name": "Serbian"
+ },
+ "ksb": {
+ "code": "ksb",
+ "name": "Shambala"
+ },
+ "sn": {
+ "code": "sn",
+ "name": "Shona"
+ },
+ "si": {
+ "code": "si",
+ "name": "Sinhala"
+ },
+ "sk": {
+ "code": "sk",
+ "name": "Slovak"
+ },
+ "sl": {
+ "code": "sl",
+ "name": "Slovenian"
+ },
+ "xog": {
+ "code": "xog",
+ "name": "Soga"
+ },
+ "zgh": {
+ "code": "zgh",
+ "name": "Standard Moroccan Tamazight"
+ },
+ "sw": {
+ "code": "sw",
+ "name": "Swahili"
+ },
+ "gsw": {
+ "code": "gsw",
+ "name": "Swiss German"
+ },
+ "shi": {
+ "code": "shi",
+ "name": "Tachelhit"
+ },
+ "dav": {
+ "code": "dav",
+ "name": "Taita"
+ },
+ "twq": {
+ "code": "twq",
+ "name": "Tasawaq"
+ },
+ "te": {
+ "code": "te",
+ "name": "Telugu"
+ },
+ "teo": {
+ "code": "teo",
+ "name": "Teso"
+ },
+ "bo": {
+ "code": "bo",
+ "name": "Tibetan"
+ },
+ "ti": {
+ "code": "ti",
+ "name": "Tigrinya"
+ },
+ "to": {
+ "code": "to",
+ "name": "Tongan"
+ },
+ "hsb": {
+ "code": "hsb",
+ "name": "Upper Sorbian"
+ },
+ "ug": {
+ "code": "ug",
+ "name": "Uyghur"
+ },
+ "uz": {
+ "code": "uz",
+ "name": "Uzbek"
+ },
+ "vai": {
+ "code": "vai",
+ "name": "Vai"
+ },
+ "vun": {
+ "code": "vun",
+ "name": "Vunjo"
+ },
+ "wae": {
+ "code": "wae",
+ "name": "Walser"
+ },
+ "cy": {
+ "code": "cy",
+ "name": "Welsh"
+ },
+ "fy": {
+ "code": "fy",
+ "name": "Western Frisian"
+ },
+ "yav": {
+ "code": "yav",
+ "name": "Yangben"
+ },
+ "yo": {
+ "code": "yo",
+ "name": "Yorúbâ"
+ },
+ "dje": {
+ "code": "dje",
+ "name": "Zarma"
+ },
+ "zh-Hans": {
+ "code": "zh-Hans",
+ "name": "zh_Hans"
+ },
+ "zh-Hant": {
+ "code": "zh-Hant",
+ "name": "zh_Hant"
+ },
+ "zu": {
+ "code": "zu",
+ "name": "Zulu"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/language/nn.json b/library/intl/resources/language/nn.json
new file mode 100644
index 000000000..f4f34a101
--- /dev/null
+++ b/library/intl/resources/language/nn.json
@@ -0,0 +1,738 @@
+{
+ "af": {
+ "code": "af",
+ "name": "afrikaans"
+ },
+ "agq": {
+ "code": "agq",
+ "name": "aghem"
+ },
+ "ak": {
+ "code": "ak",
+ "name": "akan"
+ },
+ "sq": {
+ "code": "sq",
+ "name": "albansk"
+ },
+ "am": {
+ "code": "am",
+ "name": "amharisk"
+ },
+ "ar-001": {
+ "code": "ar-001",
+ "name": "ar_001"
+ },
+ "ar": {
+ "code": "ar",
+ "name": "arabisk"
+ },
+ "hy": {
+ "code": "hy",
+ "name": "armensk"
+ },
+ "az": {
+ "code": "az",
+ "name": "aserbajdsjansk"
+ },
+ "ast": {
+ "code": "ast",
+ "name": "asturisk"
+ },
+ "asa": {
+ "code": "asa",
+ "name": "asu (Tanzania)"
+ },
+ "de-AT": {
+ "code": "de-AT",
+ "name": "austerriksk tysk"
+ },
+ "en-AU": {
+ "code": "en-AU",
+ "name": "australisk engelsk"
+ },
+ "ksf": {
+ "code": "ksf",
+ "name": "bafia"
+ },
+ "bm": {
+ "code": "bm",
+ "name": "bambara"
+ },
+ "bas": {
+ "code": "bas",
+ "name": "basa"
+ },
+ "eu": {
+ "code": "eu",
+ "name": "baskisk"
+ },
+ "bez": {
+ "code": "bez",
+ "name": "bena (Tanzania)"
+ },
+ "bn": {
+ "code": "bn",
+ "name": "bengali"
+ },
+ "brx": {
+ "code": "brx",
+ "name": "bodo"
+ },
+ "nb": {
+ "code": "nb",
+ "name": "bokmål"
+ },
+ "bs": {
+ "code": "bs",
+ "name": "bosnisk"
+ },
+ "pt-BR": {
+ "code": "pt-BR",
+ "name": "brasiliansk portugisisk"
+ },
+ "br": {
+ "code": "br",
+ "name": "bretonsk"
+ },
+ "en-GB": {
+ "code": "en-GB",
+ "name": "britisk engelsk"
+ },
+ "bg": {
+ "code": "bg",
+ "name": "bulgarsk"
+ },
+ "my": {
+ "code": "my",
+ "name": "burmesisk"
+ },
+ "tzm": {
+ "code": "tzm",
+ "name": "Central Atlas Tamazight"
+ },
+ "chr": {
+ "code": "chr",
+ "name": "cherokee"
+ },
+ "cgg": {
+ "code": "cgg",
+ "name": "Chiga"
+ },
+ "ksh": {
+ "code": "ksh",
+ "name": "Colognian"
+ },
+ "swc": {
+ "code": "swc",
+ "name": "Congo Swahili"
+ },
+ "da": {
+ "code": "da",
+ "name": "dansk"
+ },
+ "dz": {
+ "code": "dz",
+ "name": "dzongkha"
+ },
+ "en": {
+ "code": "en",
+ "name": "engelsk"
+ },
+ "en-US": {
+ "code": "en-US",
+ "name": "engelsk (amerikansk)"
+ },
+ "es-MX": {
+ "code": "es-MX",
+ "name": "es_MX"
+ },
+ "eo": {
+ "code": "eo",
+ "name": "esperanto"
+ },
+ "et": {
+ "code": "et",
+ "name": "estisk"
+ },
+ "pt-PT": {
+ "code": "pt-PT",
+ "name": "europeisk portugisisk"
+ },
+ "ee": {
+ "code": "ee",
+ "name": "ewe"
+ },
+ "ewo": {
+ "code": "ewo",
+ "name": "ewondo"
+ },
+ "fil": {
+ "code": "fil",
+ "name": "filippinsk"
+ },
+ "fi": {
+ "code": "fi",
+ "name": "finsk"
+ },
+ "nl-BE": {
+ "code": "nl-BE",
+ "name": "flamsk"
+ },
+ "zh-Hans": {
+ "code": "zh-Hans",
+ "name": "forenkla kinesisk"
+ },
+ "fr": {
+ "code": "fr",
+ "name": "fransk"
+ },
+ "fur": {
+ "code": "fur",
+ "name": "friuliansk"
+ },
+ "ff": {
+ "code": "ff",
+ "name": "fulani"
+ },
+ "fo": {
+ "code": "fo",
+ "name": "færøysk"
+ },
+ "gl": {
+ "code": "gl",
+ "name": "galicisk"
+ },
+ "lg": {
+ "code": "lg",
+ "name": "ganda"
+ },
+ "ka": {
+ "code": "ka",
+ "name": "georgisk"
+ },
+ "el": {
+ "code": "el",
+ "name": "gresk"
+ },
+ "gu": {
+ "code": "gu",
+ "name": "gujarati"
+ },
+ "guz": {
+ "code": "guz",
+ "name": "Gusii"
+ },
+ "ha": {
+ "code": "ha",
+ "name": "hausa"
+ },
+ "he": {
+ "code": "he",
+ "name": "hebraisk"
+ },
+ "hi": {
+ "code": "hi",
+ "name": "hindi"
+ },
+ "hsb": {
+ "code": "hsb",
+ "name": "høgsorbisk"
+ },
+ "es-ES": {
+ "code": "es-ES",
+ "name": "iberisk spansk"
+ },
+ "id": {
+ "code": "id",
+ "name": "indonesisk"
+ },
+ "ga": {
+ "code": "ga",
+ "name": "irsk"
+ },
+ "is": {
+ "code": "is",
+ "name": "islandsk"
+ },
+ "it": {
+ "code": "it",
+ "name": "italiensk"
+ },
+ "ja": {
+ "code": "ja",
+ "name": "japansk"
+ },
+ "dyo": {
+ "code": "dyo",
+ "name": "jola-fonyi"
+ },
+ "yo": {
+ "code": "yo",
+ "name": "joruba"
+ },
+ "kab": {
+ "code": "kab",
+ "name": "kabylsk"
+ },
+ "kln": {
+ "code": "kln",
+ "name": "Kalenjin"
+ },
+ "kl": {
+ "code": "kl",
+ "name": "kalaallisut; grønlandsk"
+ },
+ "kam": {
+ "code": "kam",
+ "name": "kamba"
+ },
+ "en-CA": {
+ "code": "en-CA",
+ "name": "kanadisk engelsk"
+ },
+ "fr-CA": {
+ "code": "fr-CA",
+ "name": "kanadisk fransk"
+ },
+ "kn": {
+ "code": "kn",
+ "name": "kannada"
+ },
+ "kea": {
+ "code": "kea",
+ "name": "kapverdisk"
+ },
+ "kk": {
+ "code": "kk",
+ "name": "kasakhisk"
+ },
+ "ks": {
+ "code": "ks",
+ "name": "kasjmiri"
+ },
+ "ca": {
+ "code": "ca",
+ "name": "katalansk"
+ },
+ "km": {
+ "code": "km",
+ "name": "khmer"
+ },
+ "ebu": {
+ "code": "ebu",
+ "name": "kiembu"
+ },
+ "ki": {
+ "code": "ki",
+ "name": "kikuyu"
+ },
+ "zh": {
+ "code": "zh",
+ "name": "kinesisk"
+ },
+ "ky": {
+ "code": "ky",
+ "name": "kirgisisk"
+ },
+ "ko": {
+ "code": "ko",
+ "name": "koreansk"
+ },
+ "khq": {
+ "code": "khq",
+ "name": "Koyra Chiini"
+ },
+ "ses": {
+ "code": "ses",
+ "name": "Koyraboro Senni"
+ },
+ "hr": {
+ "code": "hr",
+ "name": "kroatisk"
+ },
+ "be": {
+ "code": "be",
+ "name": "kviterussisk"
+ },
+ "nmg": {
+ "code": "nmg",
+ "name": "kwasio"
+ },
+ "lag": {
+ "code": "lag",
+ "name": "Langi"
+ },
+ "lo": {
+ "code": "lo",
+ "name": "laotisk"
+ },
+ "lv": {
+ "code": "lv",
+ "name": "latvisk"
+ },
+ "ln": {
+ "code": "ln",
+ "name": "lingala"
+ },
+ "lt": {
+ "code": "lt",
+ "name": "litauisk"
+ },
+ "lu": {
+ "code": "lu",
+ "name": "luba-katanga"
+ },
+ "luo": {
+ "code": "luo",
+ "name": "Luo"
+ },
+ "lb": {
+ "code": "lb",
+ "name": "luxemburgsk"
+ },
+ "dsb": {
+ "code": "dsb",
+ "name": "lågsorbisk"
+ },
+ "jmc": {
+ "code": "jmc",
+ "name": "Machame"
+ },
+ "mg": {
+ "code": "mg",
+ "name": "madagassisk"
+ },
+ "mk": {
+ "code": "mk",
+ "name": "makedonsk"
+ },
+ "mgh": {
+ "code": "mgh",
+ "name": "Makhuwa-Meetto"
+ },
+ "kde": {
+ "code": "kde",
+ "name": "Makonde"
+ },
+ "ml": {
+ "code": "ml",
+ "name": "malayalam"
+ },
+ "ms": {
+ "code": "ms",
+ "name": "malayisk"
+ },
+ "mt": {
+ "code": "mt",
+ "name": "maltesisk"
+ },
+ "mr": {
+ "code": "mr",
+ "name": "marathi"
+ },
+ "mas": {
+ "code": "mas",
+ "name": "masai"
+ },
+ "mer": {
+ "code": "mer",
+ "name": "Meru"
+ },
+ "ro-MD": {
+ "code": "ro-MD",
+ "name": "moldavisk"
+ },
+ "mn": {
+ "code": "mn",
+ "name": "mongolsk"
+ },
+ "mfe": {
+ "code": "mfe",
+ "name": "Morisyen"
+ },
+ "mua": {
+ "code": "mua",
+ "name": "mundang"
+ },
+ "naq": {
+ "code": "naq",
+ "name": "Nama"
+ },
+ "nl": {
+ "code": "nl",
+ "name": "nederlandsk"
+ },
+ "ne": {
+ "code": "ne",
+ "name": "nepalsk"
+ },
+ "jgo": {
+ "code": "jgo",
+ "name": "Ngomba"
+ },
+ "nd": {
+ "code": "nd",
+ "name": "nord-ndebele"
+ },
+ "se": {
+ "code": "se",
+ "name": "nordsamisk"
+ },
+ "nus": {
+ "code": "nus",
+ "name": "nuer"
+ },
+ "nyn": {
+ "code": "nyn",
+ "name": "nyankole"
+ },
+ "nn": {
+ "code": "nn",
+ "name": "nynorsk"
+ },
+ "luy": {
+ "code": "luy",
+ "name": "olulujia"
+ },
+ "or": {
+ "code": "or",
+ "name": "oriya"
+ },
+ "pa": {
+ "code": "pa",
+ "name": "panjabi"
+ },
+ "ps": {
+ "code": "ps",
+ "name": "pashto"
+ },
+ "fa": {
+ "code": "fa",
+ "name": "persisk"
+ },
+ "pl": {
+ "code": "pl",
+ "name": "polsk"
+ },
+ "pt": {
+ "code": "pt",
+ "name": "portugisisk"
+ },
+ "rm": {
+ "code": "rm",
+ "name": "retoromansk"
+ },
+ "rof": {
+ "code": "rof",
+ "name": "rombo"
+ },
+ "ro": {
+ "code": "ro",
+ "name": "rumensk"
+ },
+ "rn": {
+ "code": "rn",
+ "name": "rundi"
+ },
+ "ru": {
+ "code": "ru",
+ "name": "russisk"
+ },
+ "rwk": {
+ "code": "rwk",
+ "name": "rwa"
+ },
+ "saq": {
+ "code": "saq",
+ "name": "Samburu"
+ },
+ "sg": {
+ "code": "sg",
+ "name": "sango"
+ },
+ "sbp": {
+ "code": "sbp",
+ "name": "sangu"
+ },
+ "seh": {
+ "code": "seh",
+ "name": "Sena"
+ },
+ "sr": {
+ "code": "sr",
+ "name": "serbisk"
+ },
+ "ksb": {
+ "code": "ksb",
+ "name": "Shambala"
+ },
+ "sn": {
+ "code": "sn",
+ "name": "shona"
+ },
+ "si": {
+ "code": "si",
+ "name": "singalesisk"
+ },
+ "gd": {
+ "code": "gd",
+ "name": "skotsk-gælisk"
+ },
+ "sk": {
+ "code": "sk",
+ "name": "slovakisk"
+ },
+ "sl": {
+ "code": "sl",
+ "name": "slovensk"
+ },
+ "xog": {
+ "code": "xog",
+ "name": "Soga"
+ },
+ "so": {
+ "code": "so",
+ "name": "somali"
+ },
+ "es": {
+ "code": "es",
+ "name": "spansk"
+ },
+ "zgh": {
+ "code": "zgh",
+ "name": "Standard Moroccan Tamazight"
+ },
+ "gsw": {
+ "code": "gsw",
+ "name": "sveitsertysk"
+ },
+ "fr-CH": {
+ "code": "fr-CH",
+ "name": "sveitsisk fransk"
+ },
+ "de-CH": {
+ "code": "de-CH",
+ "name": "sveitsisk høgtysk"
+ },
+ "sv": {
+ "code": "sv",
+ "name": "svensk"
+ },
+ "sw": {
+ "code": "sw",
+ "name": "swahili"
+ },
+ "shi": {
+ "code": "shi",
+ "name": "Tachelhit"
+ },
+ "dav": {
+ "code": "dav",
+ "name": "Taita"
+ },
+ "ta": {
+ "code": "ta",
+ "name": "tamil"
+ },
+ "twq": {
+ "code": "twq",
+ "name": "tasawaq"
+ },
+ "te": {
+ "code": "te",
+ "name": "telugu"
+ },
+ "teo": {
+ "code": "teo",
+ "name": "Teso"
+ },
+ "th": {
+ "code": "th",
+ "name": "thai"
+ },
+ "bo": {
+ "code": "bo",
+ "name": "tibetansk"
+ },
+ "ti": {
+ "code": "ti",
+ "name": "tigrinja"
+ },
+ "to": {
+ "code": "to",
+ "name": "tonga (Tonga-øyane)"
+ },
+ "zh-Hant": {
+ "code": "zh-Hant",
+ "name": "tradisjonell kinesisk"
+ },
+ "cs": {
+ "code": "cs",
+ "name": "tsjekkisk"
+ },
+ "tr": {
+ "code": "tr",
+ "name": "tyrkisk"
+ },
+ "de": {
+ "code": "de",
+ "name": "tysk"
+ },
+ "ug": {
+ "code": "ug",
+ "name": "uigurisk"
+ },
+ "uk": {
+ "code": "uk",
+ "name": "ukrainsk"
+ },
+ "hu": {
+ "code": "hu",
+ "name": "ungarsk"
+ },
+ "ur": {
+ "code": "ur",
+ "name": "urdu"
+ },
+ "uz": {
+ "code": "uz",
+ "name": "usbekisk"
+ },
+ "vai": {
+ "code": "vai",
+ "name": "Vai"
+ },
+ "fy": {
+ "code": "fy",
+ "name": "vestfrisisk"
+ },
+ "vi": {
+ "code": "vi",
+ "name": "vietnamesisk"
+ },
+ "vun": {
+ "code": "vun",
+ "name": "Vunjo"
+ },
+ "cy": {
+ "code": "cy",
+ "name": "walisisk"
+ },
+ "wae": {
+ "code": "wae",
+ "name": "Walser"
+ },
+ "yav": {
+ "code": "yav",
+ "name": "yangben"
+ },
+ "dje": {
+ "code": "dje",
+ "name": "zarma"
+ },
+ "zu": {
+ "code": "zu",
+ "name": "zulu"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/language/nus.json b/library/intl/resources/language/nus.json
new file mode 100644
index 000000000..00feca205
--- /dev/null
+++ b/library/intl/resources/language/nus.json
@@ -0,0 +1,738 @@
+{
+ "af": {
+ "code": "af",
+ "name": "Afrikaans"
+ },
+ "agq": {
+ "code": "agq",
+ "name": "Aghem"
+ },
+ "sq": {
+ "code": "sq",
+ "name": "Albanian"
+ },
+ "ar-001": {
+ "code": "ar-001",
+ "name": "ar_001"
+ },
+ "hy": {
+ "code": "hy",
+ "name": "Armenian"
+ },
+ "ast": {
+ "code": "ast",
+ "name": "Asturian"
+ },
+ "asa": {
+ "code": "asa",
+ "name": "Asu"
+ },
+ "az": {
+ "code": "az",
+ "name": "Azerbaijani"
+ },
+ "ksf": {
+ "code": "ksf",
+ "name": "Bafia"
+ },
+ "bm": {
+ "code": "bm",
+ "name": "Bambara"
+ },
+ "bas": {
+ "code": "bas",
+ "name": "Basaa"
+ },
+ "eu": {
+ "code": "eu",
+ "name": "Basque"
+ },
+ "bez": {
+ "code": "bez",
+ "name": "Bena"
+ },
+ "brx": {
+ "code": "brx",
+ "name": "Bodo"
+ },
+ "bs": {
+ "code": "bs",
+ "name": "Bosnian"
+ },
+ "br": {
+ "code": "br",
+ "name": "Breton"
+ },
+ "ca": {
+ "code": "ca",
+ "name": "Catalan"
+ },
+ "tzm": {
+ "code": "tzm",
+ "name": "Central Atlas Tamazight"
+ },
+ "chr": {
+ "code": "chr",
+ "name": "Cherokee"
+ },
+ "cgg": {
+ "code": "cgg",
+ "name": "Chiga"
+ },
+ "ksh": {
+ "code": "ksh",
+ "name": "Colognian"
+ },
+ "swc": {
+ "code": "swc",
+ "name": "Congo Swahili"
+ },
+ "hr": {
+ "code": "hr",
+ "name": "Croatian"
+ },
+ "da": {
+ "code": "da",
+ "name": "Danish"
+ },
+ "de-AT": {
+ "code": "de-AT",
+ "name": "de_AT"
+ },
+ "de-CH": {
+ "code": "de-CH",
+ "name": "de_CH"
+ },
+ "dz": {
+ "code": "dz",
+ "name": "Dzongkha"
+ },
+ "ebu": {
+ "code": "ebu",
+ "name": "Embu"
+ },
+ "en-AU": {
+ "code": "en-AU",
+ "name": "en_AU"
+ },
+ "en-CA": {
+ "code": "en-CA",
+ "name": "en_CA"
+ },
+ "en-GB": {
+ "code": "en-GB",
+ "name": "en_GB"
+ },
+ "en-US": {
+ "code": "en-US",
+ "name": "en_US"
+ },
+ "es-ES": {
+ "code": "es-ES",
+ "name": "es_ES"
+ },
+ "es-MX": {
+ "code": "es-MX",
+ "name": "es_MX"
+ },
+ "eo": {
+ "code": "eo",
+ "name": "Esperanto"
+ },
+ "et": {
+ "code": "et",
+ "name": "Estonian"
+ },
+ "ee": {
+ "code": "ee",
+ "name": "Ewe"
+ },
+ "ewo": {
+ "code": "ewo",
+ "name": "Ewondo"
+ },
+ "fo": {
+ "code": "fo",
+ "name": "Faroese"
+ },
+ "fil": {
+ "code": "fil",
+ "name": "Filipino"
+ },
+ "fi": {
+ "code": "fi",
+ "name": "Finnish"
+ },
+ "fr-CA": {
+ "code": "fr-CA",
+ "name": "fr_CA"
+ },
+ "fr-CH": {
+ "code": "fr-CH",
+ "name": "fr_CH"
+ },
+ "fur": {
+ "code": "fur",
+ "name": "Friulian"
+ },
+ "ff": {
+ "code": "ff",
+ "name": "Fulah"
+ },
+ "gl": {
+ "code": "gl",
+ "name": "Galician"
+ },
+ "lg": {
+ "code": "lg",
+ "name": "Ganda"
+ },
+ "ka": {
+ "code": "ka",
+ "name": "Georgian"
+ },
+ "gu": {
+ "code": "gu",
+ "name": "Gujarati"
+ },
+ "guz": {
+ "code": "guz",
+ "name": "Gusii"
+ },
+ "he": {
+ "code": "he",
+ "name": "Hebrew"
+ },
+ "is": {
+ "code": "is",
+ "name": "Icelandic"
+ },
+ "ga": {
+ "code": "ga",
+ "name": "Irish"
+ },
+ "dyo": {
+ "code": "dyo",
+ "name": "Jola-Fonyi"
+ },
+ "kea": {
+ "code": "kea",
+ "name": "Kabuverdianu"
+ },
+ "kab": {
+ "code": "kab",
+ "name": "Kabyle"
+ },
+ "kl": {
+ "code": "kl",
+ "name": "Kalaallisut"
+ },
+ "kln": {
+ "code": "kln",
+ "name": "Kalenjin"
+ },
+ "kam": {
+ "code": "kam",
+ "name": "Kamba"
+ },
+ "kn": {
+ "code": "kn",
+ "name": "Kannada"
+ },
+ "ks": {
+ "code": "ks",
+ "name": "Kashmiri"
+ },
+ "kk": {
+ "code": "kk",
+ "name": "Kazakh"
+ },
+ "ki": {
+ "code": "ki",
+ "name": "Kikuyu"
+ },
+ "khq": {
+ "code": "khq",
+ "name": "Koyra Chiini"
+ },
+ "ses": {
+ "code": "ses",
+ "name": "Koyraboro Senni"
+ },
+ "nmg": {
+ "code": "nmg",
+ "name": "Kwasio"
+ },
+ "ky": {
+ "code": "ky",
+ "name": "Kyrgyz"
+ },
+ "lag": {
+ "code": "lag",
+ "name": "Langi"
+ },
+ "lo": {
+ "code": "lo",
+ "name": "Lao"
+ },
+ "lv": {
+ "code": "lv",
+ "name": "Latvian"
+ },
+ "ln": {
+ "code": "ln",
+ "name": "Lingala"
+ },
+ "lt": {
+ "code": "lt",
+ "name": "Lithuanian"
+ },
+ "dsb": {
+ "code": "dsb",
+ "name": "Lower Sorbian"
+ },
+ "lu": {
+ "code": "lu",
+ "name": "Luba-Katanga"
+ },
+ "luo": {
+ "code": "luo",
+ "name": "Luo"
+ },
+ "lb": {
+ "code": "lb",
+ "name": "Luxembourgish"
+ },
+ "luy": {
+ "code": "luy",
+ "name": "Luyia"
+ },
+ "mk": {
+ "code": "mk",
+ "name": "Macedonian"
+ },
+ "jmc": {
+ "code": "jmc",
+ "name": "Machame"
+ },
+ "mgh": {
+ "code": "mgh",
+ "name": "Makhuwa-Meetto"
+ },
+ "kde": {
+ "code": "kde",
+ "name": "Makonde"
+ },
+ "mg": {
+ "code": "mg",
+ "name": "Malagasy"
+ },
+ "ml": {
+ "code": "ml",
+ "name": "Malayalam"
+ },
+ "mt": {
+ "code": "mt",
+ "name": "Maltese"
+ },
+ "mr": {
+ "code": "mr",
+ "name": "Marathi"
+ },
+ "mas": {
+ "code": "mas",
+ "name": "Masai"
+ },
+ "mer": {
+ "code": "mer",
+ "name": "Meru"
+ },
+ "mn": {
+ "code": "mn",
+ "name": "Mongolian"
+ },
+ "mfe": {
+ "code": "mfe",
+ "name": "Morisyen"
+ },
+ "mua": {
+ "code": "mua",
+ "name": "Mundang"
+ },
+ "naq": {
+ "code": "naq",
+ "name": "Nama"
+ },
+ "jgo": {
+ "code": "jgo",
+ "name": "Ngomba"
+ },
+ "nl-BE": {
+ "code": "nl-BE",
+ "name": "nl_BE"
+ },
+ "nd": {
+ "code": "nd",
+ "name": "North Ndebele"
+ },
+ "se": {
+ "code": "se",
+ "name": "Northern Sami"
+ },
+ "nb": {
+ "code": "nb",
+ "name": "Norwegian Bokmål"
+ },
+ "nn": {
+ "code": "nn",
+ "name": "Norwegian Nynorsk"
+ },
+ "nyn": {
+ "code": "nyn",
+ "name": "Nyankole"
+ },
+ "or": {
+ "code": "or",
+ "name": "Oriya"
+ },
+ "ps": {
+ "code": "ps",
+ "name": "Pashto"
+ },
+ "pt-BR": {
+ "code": "pt-BR",
+ "name": "pt_BR"
+ },
+ "pt-PT": {
+ "code": "pt-PT",
+ "name": "pt_PT"
+ },
+ "ro-MD": {
+ "code": "ro-MD",
+ "name": "ro_MD"
+ },
+ "rm": {
+ "code": "rm",
+ "name": "Romansh"
+ },
+ "rof": {
+ "code": "rof",
+ "name": "Rombo"
+ },
+ "rn": {
+ "code": "rn",
+ "name": "Rundi"
+ },
+ "rwk": {
+ "code": "rwk",
+ "name": "Rwa"
+ },
+ "saq": {
+ "code": "saq",
+ "name": "Samburu"
+ },
+ "sg": {
+ "code": "sg",
+ "name": "Sango"
+ },
+ "sbp": {
+ "code": "sbp",
+ "name": "Sangu"
+ },
+ "gd": {
+ "code": "gd",
+ "name": "Scottish Gaelic"
+ },
+ "seh": {
+ "code": "seh",
+ "name": "Sena"
+ },
+ "sr": {
+ "code": "sr",
+ "name": "Serbian"
+ },
+ "ksb": {
+ "code": "ksb",
+ "name": "Shambala"
+ },
+ "sn": {
+ "code": "sn",
+ "name": "Shona"
+ },
+ "si": {
+ "code": "si",
+ "name": "Sinhala"
+ },
+ "sk": {
+ "code": "sk",
+ "name": "Slovak"
+ },
+ "sl": {
+ "code": "sl",
+ "name": "Slovenian"
+ },
+ "xog": {
+ "code": "xog",
+ "name": "Soga"
+ },
+ "zgh": {
+ "code": "zgh",
+ "name": "Standard Moroccan Tamazight"
+ },
+ "sw": {
+ "code": "sw",
+ "name": "Swahili"
+ },
+ "gsw": {
+ "code": "gsw",
+ "name": "Swiss German"
+ },
+ "shi": {
+ "code": "shi",
+ "name": "Tachelhit"
+ },
+ "dav": {
+ "code": "dav",
+ "name": "Taita"
+ },
+ "twq": {
+ "code": "twq",
+ "name": "Tasawaq"
+ },
+ "te": {
+ "code": "te",
+ "name": "Telugu"
+ },
+ "teo": {
+ "code": "teo",
+ "name": "Teso"
+ },
+ "ak": {
+ "code": "ak",
+ "name": "Thok aka̱ni"
+ },
+ "be": {
+ "code": "be",
+ "name": "Thok bälärutha"
+ },
+ "bg": {
+ "code": "bg",
+ "name": "Thok bälga̱a̱riani"
+ },
+ "bn": {
+ "code": "bn",
+ "name": "Thok bängali"
+ },
+ "vi": {
+ "code": "vi",
+ "name": "Thok betnaamni"
+ },
+ "my": {
+ "code": "my",
+ "name": "Thok bormi̱thni"
+ },
+ "am": {
+ "code": "am",
+ "name": "Thok bunyni"
+ },
+ "zh": {
+ "code": "zh",
+ "name": "Thok cayna"
+ },
+ "cs": {
+ "code": "cs",
+ "name": "Thok cik"
+ },
+ "nl": {
+ "code": "nl",
+ "name": "Thok da̱c"
+ },
+ "zu": {
+ "code": "zu",
+ "name": "Thok dhuluni"
+ },
+ "el": {
+ "code": "el",
+ "name": "Thok girikni"
+ },
+ "hi": {
+ "code": "hi",
+ "name": "Thok ɣändini"
+ },
+ "hu": {
+ "code": "hu",
+ "name": "Thok ɣänga̱a̱riɛni"
+ },
+ "ha": {
+ "code": "ha",
+ "name": "Thok ɣowthani"
+ },
+ "id": {
+ "code": "id",
+ "name": "Thok indunithiani"
+ },
+ "it": {
+ "code": "it",
+ "name": "Thok i̱taliani"
+ },
+ "es": {
+ "code": "es",
+ "name": "Thok i̱thpaaniani"
+ },
+ "sv": {
+ "code": "sv",
+ "name": "Thok i̱thwidicni"
+ },
+ "ar": {
+ "code": "ar",
+ "name": "Thok Jalabni"
+ },
+ "ja": {
+ "code": "ja",
+ "name": "Thok japanni"
+ },
+ "de": {
+ "code": "de",
+ "name": "Thok jarmani"
+ },
+ "ro": {
+ "code": "ro",
+ "name": "Thok ji̱ röm"
+ },
+ "km": {
+ "code": "km",
+ "name": "Thok kameeri"
+ },
+ "ko": {
+ "code": "ko",
+ "name": "Thok kuriani"
+ },
+ "en": {
+ "code": "en",
+ "name": "Thok liŋli̱thni"
+ },
+ "ms": {
+ "code": "ms",
+ "name": "Thok mayɛyni"
+ },
+ "ne": {
+ "code": "ne",
+ "name": "Thok napalni"
+ },
+ "nus": {
+ "code": "nus",
+ "name": "Thok Nath"
+ },
+ "fa": {
+ "code": "fa",
+ "name": "Thok perthiani"
+ },
+ "pl": {
+ "code": "pl",
+ "name": "Thok pölicni"
+ },
+ "fr": {
+ "code": "fr",
+ "name": "Thok pɔrɔthani"
+ },
+ "pa": {
+ "code": "pa",
+ "name": "Thok puɔnjabani"
+ },
+ "pt": {
+ "code": "pt",
+ "name": "Thok puɔtigali"
+ },
+ "ru": {
+ "code": "ru",
+ "name": "Thok ra̱ciaani"
+ },
+ "ta": {
+ "code": "ta",
+ "name": "Thok tamilni"
+ },
+ "th": {
+ "code": "th",
+ "name": "Thok tayni"
+ },
+ "so": {
+ "code": "so",
+ "name": "Thok thomaaliani"
+ },
+ "tr": {
+ "code": "tr",
+ "name": "Thok turkicni"
+ },
+ "ur": {
+ "code": "ur",
+ "name": "Thok udoni"
+ },
+ "uk": {
+ "code": "uk",
+ "name": "Thok ukeraanini"
+ },
+ "yo": {
+ "code": "yo",
+ "name": "Thok yurubani"
+ },
+ "bo": {
+ "code": "bo",
+ "name": "Tibetan"
+ },
+ "ti": {
+ "code": "ti",
+ "name": "Tigrinya"
+ },
+ "to": {
+ "code": "to",
+ "name": "Tongan"
+ },
+ "hsb": {
+ "code": "hsb",
+ "name": "Upper Sorbian"
+ },
+ "ug": {
+ "code": "ug",
+ "name": "Uyghur"
+ },
+ "uz": {
+ "code": "uz",
+ "name": "Uzbek"
+ },
+ "vai": {
+ "code": "vai",
+ "name": "Vai"
+ },
+ "vun": {
+ "code": "vun",
+ "name": "Vunjo"
+ },
+ "wae": {
+ "code": "wae",
+ "name": "Walser"
+ },
+ "cy": {
+ "code": "cy",
+ "name": "Welsh"
+ },
+ "fy": {
+ "code": "fy",
+ "name": "Western Frisian"
+ },
+ "yav": {
+ "code": "yav",
+ "name": "Yangben"
+ },
+ "dje": {
+ "code": "dje",
+ "name": "Zarma"
+ },
+ "zh-Hans": {
+ "code": "zh-Hans",
+ "name": "zh_Hans"
+ },
+ "zh-Hant": {
+ "code": "zh-Hant",
+ "name": "zh_Hant"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/language/nyn.json b/library/intl/resources/language/nyn.json
new file mode 100644
index 000000000..71c4a66c7
--- /dev/null
+++ b/library/intl/resources/language/nyn.json
@@ -0,0 +1,738 @@
+{
+ "af": {
+ "code": "af",
+ "name": "Afrikaans"
+ },
+ "agq": {
+ "code": "agq",
+ "name": "Aghem"
+ },
+ "sq": {
+ "code": "sq",
+ "name": "Albanian"
+ },
+ "ar-001": {
+ "code": "ar-001",
+ "name": "ar_001"
+ },
+ "hy": {
+ "code": "hy",
+ "name": "Armenian"
+ },
+ "ast": {
+ "code": "ast",
+ "name": "Asturian"
+ },
+ "asa": {
+ "code": "asa",
+ "name": "Asu"
+ },
+ "az": {
+ "code": "az",
+ "name": "Azerbaijani"
+ },
+ "ksf": {
+ "code": "ksf",
+ "name": "Bafia"
+ },
+ "bm": {
+ "code": "bm",
+ "name": "Bambara"
+ },
+ "bas": {
+ "code": "bas",
+ "name": "Basaa"
+ },
+ "eu": {
+ "code": "eu",
+ "name": "Basque"
+ },
+ "bez": {
+ "code": "bez",
+ "name": "Bena"
+ },
+ "brx": {
+ "code": "brx",
+ "name": "Bodo"
+ },
+ "bs": {
+ "code": "bs",
+ "name": "Bosnian"
+ },
+ "br": {
+ "code": "br",
+ "name": "Breton"
+ },
+ "ca": {
+ "code": "ca",
+ "name": "Catalan"
+ },
+ "tzm": {
+ "code": "tzm",
+ "name": "Central Atlas Tamazight"
+ },
+ "chr": {
+ "code": "chr",
+ "name": "Cherokee"
+ },
+ "cgg": {
+ "code": "cgg",
+ "name": "Chiga"
+ },
+ "ksh": {
+ "code": "ksh",
+ "name": "Colognian"
+ },
+ "swc": {
+ "code": "swc",
+ "name": "Congo Swahili"
+ },
+ "hr": {
+ "code": "hr",
+ "name": "Croatian"
+ },
+ "da": {
+ "code": "da",
+ "name": "Danish"
+ },
+ "de-AT": {
+ "code": "de-AT",
+ "name": "de_AT"
+ },
+ "de-CH": {
+ "code": "de-CH",
+ "name": "de_CH"
+ },
+ "dz": {
+ "code": "dz",
+ "name": "Dzongkha"
+ },
+ "ebu": {
+ "code": "ebu",
+ "name": "Embu"
+ },
+ "en-AU": {
+ "code": "en-AU",
+ "name": "en_AU"
+ },
+ "en-CA": {
+ "code": "en-CA",
+ "name": "en_CA"
+ },
+ "en-GB": {
+ "code": "en-GB",
+ "name": "en_GB"
+ },
+ "en-US": {
+ "code": "en-US",
+ "name": "en_US"
+ },
+ "es-ES": {
+ "code": "es-ES",
+ "name": "es_ES"
+ },
+ "es-MX": {
+ "code": "es-MX",
+ "name": "es_MX"
+ },
+ "eo": {
+ "code": "eo",
+ "name": "Esperanto"
+ },
+ "et": {
+ "code": "et",
+ "name": "Estonian"
+ },
+ "ee": {
+ "code": "ee",
+ "name": "Ewe"
+ },
+ "ewo": {
+ "code": "ewo",
+ "name": "Ewondo"
+ },
+ "fo": {
+ "code": "fo",
+ "name": "Faroese"
+ },
+ "fil": {
+ "code": "fil",
+ "name": "Filipino"
+ },
+ "fi": {
+ "code": "fi",
+ "name": "Finnish"
+ },
+ "fr-CA": {
+ "code": "fr-CA",
+ "name": "fr_CA"
+ },
+ "fr-CH": {
+ "code": "fr-CH",
+ "name": "fr_CH"
+ },
+ "fur": {
+ "code": "fur",
+ "name": "Friulian"
+ },
+ "ff": {
+ "code": "ff",
+ "name": "Fulah"
+ },
+ "gl": {
+ "code": "gl",
+ "name": "Galician"
+ },
+ "lg": {
+ "code": "lg",
+ "name": "Ganda"
+ },
+ "ka": {
+ "code": "ka",
+ "name": "Georgian"
+ },
+ "gu": {
+ "code": "gu",
+ "name": "Gujarati"
+ },
+ "guz": {
+ "code": "guz",
+ "name": "Gusii"
+ },
+ "he": {
+ "code": "he",
+ "name": "Hebrew"
+ },
+ "is": {
+ "code": "is",
+ "name": "Icelandic"
+ },
+ "ga": {
+ "code": "ga",
+ "name": "Irish"
+ },
+ "dyo": {
+ "code": "dyo",
+ "name": "Jola-Fonyi"
+ },
+ "kea": {
+ "code": "kea",
+ "name": "Kabuverdianu"
+ },
+ "kab": {
+ "code": "kab",
+ "name": "Kabyle"
+ },
+ "kl": {
+ "code": "kl",
+ "name": "Kalaallisut"
+ },
+ "kln": {
+ "code": "kln",
+ "name": "Kalenjin"
+ },
+ "kam": {
+ "code": "kam",
+ "name": "Kamba"
+ },
+ "kn": {
+ "code": "kn",
+ "name": "Kannada"
+ },
+ "ks": {
+ "code": "ks",
+ "name": "Kashmiri"
+ },
+ "kk": {
+ "code": "kk",
+ "name": "Kazakh"
+ },
+ "ki": {
+ "code": "ki",
+ "name": "Kikuyu"
+ },
+ "khq": {
+ "code": "khq",
+ "name": "Koyra Chiini"
+ },
+ "ses": {
+ "code": "ses",
+ "name": "Koyraboro Senni"
+ },
+ "nmg": {
+ "code": "nmg",
+ "name": "Kwasio"
+ },
+ "ky": {
+ "code": "ky",
+ "name": "Kyrgyz"
+ },
+ "lag": {
+ "code": "lag",
+ "name": "Langi"
+ },
+ "lo": {
+ "code": "lo",
+ "name": "Lao"
+ },
+ "lv": {
+ "code": "lv",
+ "name": "Latvian"
+ },
+ "ln": {
+ "code": "ln",
+ "name": "Lingala"
+ },
+ "lt": {
+ "code": "lt",
+ "name": "Lithuanian"
+ },
+ "dsb": {
+ "code": "dsb",
+ "name": "Lower Sorbian"
+ },
+ "lu": {
+ "code": "lu",
+ "name": "Luba-Katanga"
+ },
+ "luo": {
+ "code": "luo",
+ "name": "Luo"
+ },
+ "lb": {
+ "code": "lb",
+ "name": "Luxembourgish"
+ },
+ "luy": {
+ "code": "luy",
+ "name": "Luyia"
+ },
+ "mk": {
+ "code": "mk",
+ "name": "Macedonian"
+ },
+ "jmc": {
+ "code": "jmc",
+ "name": "Machame"
+ },
+ "mgh": {
+ "code": "mgh",
+ "name": "Makhuwa-Meetto"
+ },
+ "kde": {
+ "code": "kde",
+ "name": "Makonde"
+ },
+ "mg": {
+ "code": "mg",
+ "name": "Malagasy"
+ },
+ "ml": {
+ "code": "ml",
+ "name": "Malayalam"
+ },
+ "mt": {
+ "code": "mt",
+ "name": "Maltese"
+ },
+ "mr": {
+ "code": "mr",
+ "name": "Marathi"
+ },
+ "mas": {
+ "code": "mas",
+ "name": "Masai"
+ },
+ "mer": {
+ "code": "mer",
+ "name": "Meru"
+ },
+ "mn": {
+ "code": "mn",
+ "name": "Mongolian"
+ },
+ "mfe": {
+ "code": "mfe",
+ "name": "Morisyen"
+ },
+ "mua": {
+ "code": "mua",
+ "name": "Mundang"
+ },
+ "naq": {
+ "code": "naq",
+ "name": "Nama"
+ },
+ "jgo": {
+ "code": "jgo",
+ "name": "Ngomba"
+ },
+ "nl-BE": {
+ "code": "nl-BE",
+ "name": "nl_BE"
+ },
+ "nd": {
+ "code": "nd",
+ "name": "North Ndebele"
+ },
+ "se": {
+ "code": "se",
+ "name": "Northern Sami"
+ },
+ "nb": {
+ "code": "nb",
+ "name": "Norwegian Bokmål"
+ },
+ "nn": {
+ "code": "nn",
+ "name": "Norwegian Nynorsk"
+ },
+ "nus": {
+ "code": "nus",
+ "name": "Nuer"
+ },
+ "or": {
+ "code": "or",
+ "name": "Oriya"
+ },
+ "ur": {
+ "code": "ur",
+ "name": "Oru-Urudu"
+ },
+ "bn": {
+ "code": "bn",
+ "name": "Orubengari"
+ },
+ "be": {
+ "code": "be",
+ "name": "Oruberarusi"
+ },
+ "bg": {
+ "code": "bg",
+ "name": "Oruburugariya"
+ },
+ "my": {
+ "code": "my",
+ "name": "Oruburuma"
+ },
+ "cs": {
+ "code": "cs",
+ "name": "Oruceeki"
+ },
+ "zh": {
+ "code": "zh",
+ "name": "Oruchaina"
+ },
+ "nl": {
+ "code": "nl",
+ "name": "Orudaaki"
+ },
+ "fr": {
+ "code": "fr",
+ "name": "Orufaransa"
+ },
+ "de": {
+ "code": "de",
+ "name": "Orugirimaani"
+ },
+ "el": {
+ "code": "el",
+ "name": "Oruguriiki"
+ },
+ "hu": {
+ "code": "hu",
+ "name": "Oruhangare"
+ },
+ "ar": {
+ "code": "ar",
+ "name": "Oruharabu"
+ },
+ "ha": {
+ "code": "ha",
+ "name": "Oruhausa"
+ },
+ "hi": {
+ "code": "hi",
+ "name": "Oruhindi"
+ },
+ "id": {
+ "code": "id",
+ "name": "Oruindonezia"
+ },
+ "ja": {
+ "code": "ja",
+ "name": "Orujapaani"
+ },
+ "km": {
+ "code": "km",
+ "name": "Orukambodiya"
+ },
+ "ak": {
+ "code": "ak",
+ "name": "Orukani"
+ },
+ "ko": {
+ "code": "ko",
+ "name": "Orukoreya"
+ },
+ "uk": {
+ "code": "uk",
+ "name": "Orukuraini"
+ },
+ "tr": {
+ "code": "tr",
+ "name": "Orukuruki"
+ },
+ "ms": {
+ "code": "ms",
+ "name": "Orumalesiya"
+ },
+ "am": {
+ "code": "am",
+ "name": "Orumariki"
+ },
+ "ne": {
+ "code": "ne",
+ "name": "Orunepali"
+ },
+ "en": {
+ "code": "en",
+ "name": "Orungyereza"
+ },
+ "fa": {
+ "code": "fa",
+ "name": "Orupaasiya"
+ },
+ "pt": {
+ "code": "pt",
+ "name": "Orupocugo"
+ },
+ "pl": {
+ "code": "pl",
+ "name": "Orupoori"
+ },
+ "pa": {
+ "code": "pa",
+ "name": "Orupungyabi"
+ },
+ "ro": {
+ "code": "ro",
+ "name": "Oruromania"
+ },
+ "ru": {
+ "code": "ru",
+ "name": "Orurrasha"
+ },
+ "so": {
+ "code": "so",
+ "name": "Orusomaari"
+ },
+ "es": {
+ "code": "es",
+ "name": "Orusupaani"
+ },
+ "sv": {
+ "code": "sv",
+ "name": "Oruswidi"
+ },
+ "th": {
+ "code": "th",
+ "name": "Orutailandi"
+ },
+ "ta": {
+ "code": "ta",
+ "name": "Orutamiri"
+ },
+ "vi": {
+ "code": "vi",
+ "name": "Oruviyetinaamu"
+ },
+ "it": {
+ "code": "it",
+ "name": "Oruyitare"
+ },
+ "yo": {
+ "code": "yo",
+ "name": "Oruyoruba"
+ },
+ "zu": {
+ "code": "zu",
+ "name": "Oruzuru"
+ },
+ "ps": {
+ "code": "ps",
+ "name": "Pashto"
+ },
+ "pt-BR": {
+ "code": "pt-BR",
+ "name": "pt_BR"
+ },
+ "pt-PT": {
+ "code": "pt-PT",
+ "name": "pt_PT"
+ },
+ "ro-MD": {
+ "code": "ro-MD",
+ "name": "ro_MD"
+ },
+ "rm": {
+ "code": "rm",
+ "name": "Romansh"
+ },
+ "rof": {
+ "code": "rof",
+ "name": "Rombo"
+ },
+ "rn": {
+ "code": "rn",
+ "name": "Rundi"
+ },
+ "nyn": {
+ "code": "nyn",
+ "name": "Runyankore"
+ },
+ "rwk": {
+ "code": "rwk",
+ "name": "Rwa"
+ },
+ "saq": {
+ "code": "saq",
+ "name": "Samburu"
+ },
+ "sg": {
+ "code": "sg",
+ "name": "Sango"
+ },
+ "sbp": {
+ "code": "sbp",
+ "name": "Sangu"
+ },
+ "gd": {
+ "code": "gd",
+ "name": "Scottish Gaelic"
+ },
+ "seh": {
+ "code": "seh",
+ "name": "Sena"
+ },
+ "sr": {
+ "code": "sr",
+ "name": "Serbian"
+ },
+ "ksb": {
+ "code": "ksb",
+ "name": "Shambala"
+ },
+ "sn": {
+ "code": "sn",
+ "name": "Shona"
+ },
+ "si": {
+ "code": "si",
+ "name": "Sinhala"
+ },
+ "sk": {
+ "code": "sk",
+ "name": "Slovak"
+ },
+ "sl": {
+ "code": "sl",
+ "name": "Slovenian"
+ },
+ "xog": {
+ "code": "xog",
+ "name": "Soga"
+ },
+ "zgh": {
+ "code": "zgh",
+ "name": "Standard Moroccan Tamazight"
+ },
+ "sw": {
+ "code": "sw",
+ "name": "Swahili"
+ },
+ "gsw": {
+ "code": "gsw",
+ "name": "Swiss German"
+ },
+ "shi": {
+ "code": "shi",
+ "name": "Tachelhit"
+ },
+ "dav": {
+ "code": "dav",
+ "name": "Taita"
+ },
+ "twq": {
+ "code": "twq",
+ "name": "Tasawaq"
+ },
+ "te": {
+ "code": "te",
+ "name": "Telugu"
+ },
+ "teo": {
+ "code": "teo",
+ "name": "Teso"
+ },
+ "bo": {
+ "code": "bo",
+ "name": "Tibetan"
+ },
+ "ti": {
+ "code": "ti",
+ "name": "Tigrinya"
+ },
+ "to": {
+ "code": "to",
+ "name": "Tongan"
+ },
+ "hsb": {
+ "code": "hsb",
+ "name": "Upper Sorbian"
+ },
+ "ug": {
+ "code": "ug",
+ "name": "Uyghur"
+ },
+ "uz": {
+ "code": "uz",
+ "name": "Uzbek"
+ },
+ "vai": {
+ "code": "vai",
+ "name": "Vai"
+ },
+ "vun": {
+ "code": "vun",
+ "name": "Vunjo"
+ },
+ "wae": {
+ "code": "wae",
+ "name": "Walser"
+ },
+ "cy": {
+ "code": "cy",
+ "name": "Welsh"
+ },
+ "fy": {
+ "code": "fy",
+ "name": "Western Frisian"
+ },
+ "yav": {
+ "code": "yav",
+ "name": "Yangben"
+ },
+ "dje": {
+ "code": "dje",
+ "name": "Zarma"
+ },
+ "zh-Hans": {
+ "code": "zh-Hans",
+ "name": "zh_Hans"
+ },
+ "zh-Hant": {
+ "code": "zh-Hant",
+ "name": "zh_Hant"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/language/or.json b/library/intl/resources/language/or.json
new file mode 100644
index 000000000..7dbd79499
--- /dev/null
+++ b/library/intl/resources/language/or.json
@@ -0,0 +1,738 @@
+{
+ "ksf": {
+ "code": "ksf",
+ "name": "Bafia"
+ },
+ "brx": {
+ "code": "brx",
+ "name": "Bodo"
+ },
+ "tzm": {
+ "code": "tzm",
+ "name": "Central Atlas Tamazight"
+ },
+ "cgg": {
+ "code": "cgg",
+ "name": "Chiga"
+ },
+ "ksh": {
+ "code": "ksh",
+ "name": "Colognian"
+ },
+ "swc": {
+ "code": "swc",
+ "name": "Congo Swahili"
+ },
+ "ebu": {
+ "code": "ebu",
+ "name": "Embu"
+ },
+ "es-MX": {
+ "code": "es-MX",
+ "name": "es_MX"
+ },
+ "guz": {
+ "code": "guz",
+ "name": "Gusii"
+ },
+ "dyo": {
+ "code": "dyo",
+ "name": "Jola-Fonyi"
+ },
+ "kea": {
+ "code": "kea",
+ "name": "Kabuverdianu"
+ },
+ "kln": {
+ "code": "kln",
+ "name": "Kalenjin"
+ },
+ "khq": {
+ "code": "khq",
+ "name": "Koyra Chiini"
+ },
+ "ses": {
+ "code": "ses",
+ "name": "Koyraboro Senni"
+ },
+ "nmg": {
+ "code": "nmg",
+ "name": "Kwasio"
+ },
+ "lag": {
+ "code": "lag",
+ "name": "Langi"
+ },
+ "luy": {
+ "code": "luy",
+ "name": "Luyia"
+ },
+ "jmc": {
+ "code": "jmc",
+ "name": "Machame"
+ },
+ "mgh": {
+ "code": "mgh",
+ "name": "Makhuwa-Meetto"
+ },
+ "kde": {
+ "code": "kde",
+ "name": "Makonde"
+ },
+ "mer": {
+ "code": "mer",
+ "name": "Meru"
+ },
+ "mfe": {
+ "code": "mfe",
+ "name": "Morisyen"
+ },
+ "mua": {
+ "code": "mua",
+ "name": "Mundang"
+ },
+ "naq": {
+ "code": "naq",
+ "name": "Nama"
+ },
+ "jgo": {
+ "code": "jgo",
+ "name": "Ngomba"
+ },
+ "nus": {
+ "code": "nus",
+ "name": "Nuer"
+ },
+ "rwk": {
+ "code": "rwk",
+ "name": "Rwa"
+ },
+ "saq": {
+ "code": "saq",
+ "name": "Samburu"
+ },
+ "sbp": {
+ "code": "sbp",
+ "name": "Sangu"
+ },
+ "seh": {
+ "code": "seh",
+ "name": "Sena"
+ },
+ "ksb": {
+ "code": "ksb",
+ "name": "Shambala"
+ },
+ "xog": {
+ "code": "xog",
+ "name": "Soga"
+ },
+ "zgh": {
+ "code": "zgh",
+ "name": "Standard Moroccan Tamazight"
+ },
+ "shi": {
+ "code": "shi",
+ "name": "Tachelhit"
+ },
+ "dav": {
+ "code": "dav",
+ "name": "Taita"
+ },
+ "twq": {
+ "code": "twq",
+ "name": "Tasawaq"
+ },
+ "teo": {
+ "code": "teo",
+ "name": "Teso"
+ },
+ "vun": {
+ "code": "vun",
+ "name": "Vunjo"
+ },
+ "wae": {
+ "code": "wae",
+ "name": "Walser"
+ },
+ "yav": {
+ "code": "yav",
+ "name": "Yangben"
+ },
+ "dje": {
+ "code": "dje",
+ "name": "Zarma"
+ },
+ "ak": {
+ "code": "ak",
+ "name": "ଅକନà­"
+ },
+ "de-AT": {
+ "code": "de-AT",
+ "name": "ଅଷà­à¬Ÿà­à¬°à¬¿à¬†à¬¨à­ ଜରà­à¬®à¬¾à¬¨"
+ },
+ "en-AU": {
+ "code": "en-AU",
+ "name": "ଅଷà­à¬Ÿà­à¬°à­‡à¬²à¬¿à¬†à¬¨à­ ଇà¬à¬°à¬¾à¬œà­€"
+ },
+ "is": {
+ "code": "is",
+ "name": "ଆଇସଲାଣà­à¬¡à¬¿à¬•à­"
+ },
+ "agq": {
+ "code": "agq",
+ "name": "ଆଘେମ"
+ },
+ "az": {
+ "code": "az",
+ "name": "ଆଜେରବାଇଜାନି"
+ },
+ "af": {
+ "code": "af",
+ "name": "ଆଫà­à¬°à¬¿à¬•à¬¾à¬¨à¬¸à­"
+ },
+ "am": {
+ "code": "am",
+ "name": "ଆମହାରକି"
+ },
+ "ar": {
+ "code": "ar",
+ "name": "ଆରବିକà­"
+ },
+ "hy": {
+ "code": "hy",
+ "name": "ଆରà­à¬®à­‡à¬¨à¬¿à¬†à¬¨à­"
+ },
+ "sq": {
+ "code": "sq",
+ "name": "ଆଲବାନିଆନà­"
+ },
+ "ast": {
+ "code": "ast",
+ "name": "ଆଷà­à¬Ÿà­à¬°à¬¿à¬†à¬¨à­"
+ },
+ "asa": {
+ "code": "asa",
+ "name": "ଆସà­"
+ },
+ "en": {
+ "code": "en",
+ "name": "ଇଂରାଜୀ"
+ },
+ "it": {
+ "code": "it",
+ "name": "ଇଟାଲିଆନà­"
+ },
+ "id": {
+ "code": "id",
+ "name": "ଇଣà­à¬¡à­‹à¬¨à­‡à¬¸à¬¿à¬†à¬¨à­"
+ },
+ "ga": {
+ "code": "ga",
+ "name": "ଇରିସà­"
+ },
+ "ee": {
+ "code": "ee",
+ "name": "ଇୱେ"
+ },
+ "ewo": {
+ "code": "ewo",
+ "name": "ଇୱୋଣà­à¬¡à­‹"
+ },
+ "uz": {
+ "code": "uz",
+ "name": "ଉଜବେକà­"
+ },
+ "nd": {
+ "code": "nd",
+ "name": "ଉତà­à¬¤à¬° ନେଡବେଲେ"
+ },
+ "se": {
+ "code": "se",
+ "name": "ଉତà­à¬¤à¬° ସାମି"
+ },
+ "hsb": {
+ "code": "hsb",
+ "name": "ଉପର ସରà­à¬¬à¬¿à¬†à¬¨à­"
+ },
+ "ur": {
+ "code": "ur",
+ "name": "ଉରà­à¬¦à­à¬¦à­"
+ },
+ "et": {
+ "code": "et",
+ "name": "à¬à¬¸à­à¬¤à­‹à¬¨à¬¿à¬†à¬¨à­"
+ },
+ "eo": {
+ "code": "eo",
+ "name": "à¬à¬¸à­à¬ªà¬¾à¬°à­‡à¬£à­à¬Ÿà­‹"
+ },
+ "or": {
+ "code": "or",
+ "name": "ଓଡ଼ିଆ"
+ },
+ "kn": {
+ "code": "kn",
+ "name": "କନà­à¬¨à¬¡"
+ },
+ "kab": {
+ "code": "kab",
+ "name": "କବାଇଲà­"
+ },
+ "kam": {
+ "code": "kam",
+ "name": "କମà­à¬¬à¬¾"
+ },
+ "kk": {
+ "code": "kk",
+ "name": "କାଜାକà­"
+ },
+ "bs": {
+ "code": "bs",
+ "name": "କାଟଲାନà­"
+ },
+ "ca": {
+ "code": "ca",
+ "name": "କାଟାଲାନà­"
+ },
+ "en-CA": {
+ "code": "en-CA",
+ "name": "କାନାଡିଆନୠଇà¬à¬°à¬¾à¬œà­€"
+ },
+ "fr-CA": {
+ "code": "fr-CA",
+ "name": "କାନାଡିଆନୠଫà­à¬°à­‡à¬žà­à¬š"
+ },
+ "ks": {
+ "code": "ks",
+ "name": "କାଶà­à¬®à¬¿à¬°à­€"
+ },
+ "ky": {
+ "code": "ky",
+ "name": "କିରଗିଜà­"
+ },
+ "ki": {
+ "code": "ki",
+ "name": "କୀକà­à­Ÿà­"
+ },
+ "ko": {
+ "code": "ko",
+ "name": "କୋରିଆନà­"
+ },
+ "hr": {
+ "code": "hr",
+ "name": "କà­à¬°à­‹à¬†à¬Ÿà¬¿à¬†à¬¨à­"
+ },
+ "km": {
+ "code": "km",
+ "name": "ଖà­à¬®à­‡à¬°à­"
+ },
+ "lg": {
+ "code": "lg",
+ "name": "ଗନà­à¬¦à¬¾"
+ },
+ "gl": {
+ "code": "gl",
+ "name": "ଗାଲସିଆନà­"
+ },
+ "gu": {
+ "code": "gu",
+ "name": "ଗà­à¬œà­à¬°à¬¾à¬Ÿà­€"
+ },
+ "el": {
+ "code": "el",
+ "name": "ଗà­à¬°à­€à¬•à­"
+ },
+ "kl": {
+ "code": "kl",
+ "name": "ଗà­à¬°à­€à¬¨à¬²à¬¾à¬£à­à¬¡à¬¿à¬•à­"
+ },
+ "zh": {
+ "code": "zh",
+ "name": "ଚାଇନୀଜà­"
+ },
+ "cs": {
+ "code": "cs",
+ "name": "ଚେକà­"
+ },
+ "chr": {
+ "code": "chr",
+ "name": "ଚେରୋକୀ"
+ },
+ "ka": {
+ "code": "ka",
+ "name": "ଜରà­à¬œà¬¿à¬†à¬¨à­"
+ },
+ "de": {
+ "code": "de",
+ "name": "ଜରà­à¬®à¬¾à¬¨à­"
+ },
+ "ja": {
+ "code": "ja",
+ "name": "ଜାପାନୀଜà­"
+ },
+ "zu": {
+ "code": "zu",
+ "name": "ଜà­à¬²à­"
+ },
+ "to": {
+ "code": "to",
+ "name": "ଟୋଙà­à¬—ା"
+ },
+ "ti": {
+ "code": "ti",
+ "name": "ଟà­à¬°à¬¿à¬—ିନିଆ"
+ },
+ "nl": {
+ "code": "nl",
+ "name": "ଡଚà­"
+ },
+ "da": {
+ "code": "da",
+ "name": "ଡାନà­à¬¨à¬¿à¬¸à­"
+ },
+ "ta": {
+ "code": "ta",
+ "name": "ତାମିଲà­"
+ },
+ "bo": {
+ "code": "bo",
+ "name": "ତିବେତାନà­"
+ },
+ "tr": {
+ "code": "tr",
+ "name": "ତà­à¬°à­à¬•à¬¿à¬¸à­"
+ },
+ "te": {
+ "code": "te",
+ "name": "ତେଲà­à¬—à­"
+ },
+ "th": {
+ "code": "th",
+ "name": "ଥାଇ"
+ },
+ "nn": {
+ "code": "nn",
+ "name": "ନରୱେଜିଆନୠନିୟୋରà­à¬¸à­à¬•"
+ },
+ "nb": {
+ "code": "nb",
+ "name": "ନରୱେଜିଆନୠବୋକମଲà­"
+ },
+ "dsb": {
+ "code": "dsb",
+ "name": "ନିଚଳା ସରà­à¬¬à¬¿à¬†à¬¨à­"
+ },
+ "ne": {
+ "code": "ne",
+ "name": "ନେପାଳୀ"
+ },
+ "nyn": {
+ "code": "nyn",
+ "name": "ନà­à­Ÿà¬¾à¬¨à¬•à­‹à¬²à­"
+ },
+ "pa": {
+ "code": "pa",
+ "name": "ପଞà­à¬œà¬¾à¬¬à­€"
+ },
+ "pt": {
+ "code": "pt",
+ "name": "ପରà­à¬¤à­à¬¤à­à¬—à­à¬°à­€à¬œà­"
+ },
+ "fa": {
+ "code": "fa",
+ "name": "ପରà­à¬¸à¬¿à¬†à¬¨à­"
+ },
+ "fy": {
+ "code": "fy",
+ "name": "ପଶà­à¬šà¬¿à¬® ଫà­à¬°à¬¿à¬¸à¬¿à­Ÿà¬¨à­"
+ },
+ "zh-Hant": {
+ "code": "zh-Hant",
+ "name": "ପାରମà­à¬ªà¬°à¬¿à¬• ଚାଇନୀଜà­"
+ },
+ "ps": {
+ "code": "ps",
+ "name": "ପାସà­à¬¤à­‹"
+ },
+ "pl": {
+ "code": "pl",
+ "name": "ପୋଲିଶà­"
+ },
+ "fo": {
+ "code": "fo",
+ "name": "ଫାରୋà¬à¬¸à­‡"
+ },
+ "fi": {
+ "code": "fi",
+ "name": "ଫିନà­à¬¨à¬¿à¬¸à­"
+ },
+ "fil": {
+ "code": "fil",
+ "name": "ଫିଲିପିନୋ"
+ },
+ "ff": {
+ "code": "ff",
+ "name": "ଫà­à¬²à¬¾à¬¹"
+ },
+ "fur": {
+ "code": "fur",
+ "name": "ଫà­à¬°à¬¿à­Ÿà­à¬²à­€à­Ÿà¬¾à¬¨à­"
+ },
+ "fr": {
+ "code": "fr",
+ "name": "ଫà­à¬°à­‡à¬žà­à¬š"
+ },
+ "nl-BE": {
+ "code": "nl-BE",
+ "name": "ଫà­à¬²à­‡à¬®à¬¿à¬¶à­"
+ },
+ "bn": {
+ "code": "bn",
+ "name": "ବଙà­à¬—ାଳୀ"
+ },
+ "my": {
+ "code": "my",
+ "name": "ବରà­à¬®à­€à¬œà­"
+ },
+ "bm": {
+ "code": "bm",
+ "name": "ବାମà­à¬¬à¬¾à¬°à¬¾"
+ },
+ "bas": {
+ "code": "bas",
+ "name": "ବାସା"
+ },
+ "eu": {
+ "code": "eu",
+ "name": "ବାସà­à¬•à­à­±à¬¿"
+ },
+ "bg": {
+ "code": "bg",
+ "name": "ବà­à¬²à¬—େରିଆନà­"
+ },
+ "bez": {
+ "code": "bez",
+ "name": "ବେନା"
+ },
+ "be": {
+ "code": "be",
+ "name": "ବେଲାରà­à¬·à¬¿à¬†à¬¨à­"
+ },
+ "pt-BR": {
+ "code": "pt-BR",
+ "name": "ବà­à¬°à¬¾à¬œà¬¿à¬²à¬¿à¬†à¬¨à­ ପରà­à¬¤à­à¬¤à­à¬—ୀଜà­"
+ },
+ "en-GB": {
+ "code": "en-GB",
+ "name": "ବà­à¬°à¬¿à¬Ÿà¬¿à¬¶à­ ଇà¬à¬°à¬¾à¬œà­€"
+ },
+ "br": {
+ "code": "br",
+ "name": "ବà­à¬°à­‡à¬Ÿà¬¨à­"
+ },
+ "vai": {
+ "code": "vai",
+ "name": "ଭାଇ"
+ },
+ "vi": {
+ "code": "vi",
+ "name": "ଭିà¬à¬¤à¬¨à¬¾à¬®à¬¿à¬œà­"
+ },
+ "dz": {
+ "code": "dz",
+ "name": "ଭୂଟାନୀ"
+ },
+ "mn": {
+ "code": "mn",
+ "name": "ମଙà­à¬—ୋଲିଆନà­"
+ },
+ "mr": {
+ "code": "mr",
+ "name": "ମରାଠୀ"
+ },
+ "mk": {
+ "code": "mk",
+ "name": "ମାକଡୋନିଆନà­"
+ },
+ "ar-001": {
+ "code": "ar-001",
+ "name": "ମାନକ ଆରବିକ"
+ },
+ "mt": {
+ "code": "mt",
+ "name": "ମାଲଟୀଜà­"
+ },
+ "ms": {
+ "code": "ms",
+ "name": "ମାଲୟ"
+ },
+ "mg": {
+ "code": "mg",
+ "name": "ମାଲାଗାସୀ"
+ },
+ "ml": {
+ "code": "ml",
+ "name": "ମାଲାୟଲମà­"
+ },
+ "mas": {
+ "code": "mas",
+ "name": "ମାସାଇ"
+ },
+ "ro-MD": {
+ "code": "ro-MD",
+ "name": "ମୋଲଡୋଭିଆନà­"
+ },
+ "en-US": {
+ "code": "en-US",
+ "name": "à­Ÿà­.à¬à¬¸à­. ଇà¬à¬°à¬¾à¬œà­€"
+ },
+ "uk": {
+ "code": "uk",
+ "name": "à­Ÿà­à¬•à­à¬°à¬¾à¬¨à¬¿à¬†à¬¨à­"
+ },
+ "ug": {
+ "code": "ug",
+ "name": "à­Ÿà­à¬˜à­à¬°à­"
+ },
+ "yo": {
+ "code": "yo",
+ "name": "ୟୋରà­à¬¬à¬¾"
+ },
+ "ru": {
+ "code": "ru",
+ "name": "ରଷିଆନà­"
+ },
+ "rn": {
+ "code": "rn",
+ "name": "ରà­à¬£à­à¬¡à¬¿"
+ },
+ "rm": {
+ "code": "rm",
+ "name": "ରେହେଟୋ-ରୋମାନà­à¬¸"
+ },
+ "ro": {
+ "code": "ro",
+ "name": "ରୋମାନିଆନà­"
+ },
+ "rof": {
+ "code": "rof",
+ "name": "ରୋମà­à¬¬à­‹"
+ },
+ "lb": {
+ "code": "lb",
+ "name": "ଲକà­à¬¸à­‡à¬®à¬¬à¬°à­à¬—ିସà­"
+ },
+ "lo": {
+ "code": "lo",
+ "name": "ଲାଓ"
+ },
+ "lv": {
+ "code": "lv",
+ "name": "ଲାଟଭିଆନà­"
+ },
+ "ln": {
+ "code": "ln",
+ "name": "ଲିଙà­à¬—ାଲା"
+ },
+ "lt": {
+ "code": "lt",
+ "name": "ଲିଥà­à¬†à¬¨à¬¿à¬†à¬¨à­"
+ },
+ "luo": {
+ "code": "luo",
+ "name": "ଲà­à¬“"
+ },
+ "pt-PT": {
+ "code": "pt-PT",
+ "name": "ଲେବେରିଆନୠପରà­à¬¤à­à¬¤à­à¬—ୀଜà­"
+ },
+ "es-ES": {
+ "code": "es-ES",
+ "name": "ଲେବେରିଆନୠସà­à¬ªà¬¾à¬¨à¬¿à¬¶à­"
+ },
+ "lu": {
+ "code": "lu",
+ "name": "ଲà­à­Ÿà­à¬¬à¬¾-କାଟାଙà­à¬—ା"
+ },
+ "cy": {
+ "code": "cy",
+ "name": "ୱେଲà­à¬¸"
+ },
+ "sn": {
+ "code": "sn",
+ "name": "ଶୋନା"
+ },
+ "zh-Hans": {
+ "code": "zh-Hans",
+ "name": "ସରଳିକରଣ ଚାଇନୀଜà­"
+ },
+ "sr": {
+ "code": "sr",
+ "name": "ସରà­à¬¬à¬¿à¬†à¬¨à­"
+ },
+ "sg": {
+ "code": "sg",
+ "name": "ସାଙà­à¬—à­‹"
+ },
+ "si": {
+ "code": "si",
+ "name": "ସିଂହଳ"
+ },
+ "so": {
+ "code": "so",
+ "name": "ସୋମାଲିଆ"
+ },
+ "gd": {
+ "code": "gd",
+ "name": "ସà­à¬•à¬Ÿà¬¿à¬¸à­ ଗାà¬à¬²à¬¿à¬•à­"
+ },
+ "es": {
+ "code": "es",
+ "name": "ସà­à¬ªà¬¾à¬¨à¬¿à¬¸à­"
+ },
+ "gsw": {
+ "code": "gsw",
+ "name": "ସà­à¬¬à¬¿à¬¸à­ ଜରà­à¬®à¬¾à¬¨à­"
+ },
+ "fr-CH": {
+ "code": "fr-CH",
+ "name": "ସà­à¬¬à¬¿à¬¸à­ ଫà­à¬°à­‡à¬žà­à¬šà­"
+ },
+ "de-CH": {
+ "code": "de-CH",
+ "name": "ସà­à¬¬à¬¿à¬¸à­ ହାଇ ଜରà­à¬®à¬¾à¬¨à­"
+ },
+ "sk": {
+ "code": "sk",
+ "name": "ସà­à¬²à­‹à¬­à¬¾à¬•à­"
+ },
+ "sl": {
+ "code": "sl",
+ "name": "ସà­à¬²à­‹à¬­à­‡à¬¨à¬¿à¬†à¬¨à­"
+ },
+ "sw": {
+ "code": "sw",
+ "name": "ସà­à­±à¬¾à¬¹à¬¿à¬²à­"
+ },
+ "sv": {
+ "code": "sv",
+ "name": "ସà­à­±à­‡à¬¡à¬¿à¬¸à­"
+ },
+ "hu": {
+ "code": "hu",
+ "name": "ହଙà­à¬—େରିଆନà­"
+ },
+ "hi": {
+ "code": "hi",
+ "name": "ହିନà­à¬¦à­€"
+ },
+ "he": {
+ "code": "he",
+ "name": "ହେବà­à¬°à­à­Ÿà­"
+ },
+ "ha": {
+ "code": "ha",
+ "name": "ହୌସା"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/language/pa.json b/library/intl/resources/language/pa.json
new file mode 100644
index 000000000..3ac1234ed
--- /dev/null
+++ b/library/intl/resources/language/pa.json
@@ -0,0 +1,738 @@
+{
+ "ast": {
+ "code": "ast",
+ "name": "Asturian"
+ },
+ "bas": {
+ "code": "bas",
+ "name": "Basaa"
+ },
+ "ksh": {
+ "code": "ksh",
+ "name": "Colognian"
+ },
+ "ewo": {
+ "code": "ewo",
+ "name": "Ewondo"
+ },
+ "fur": {
+ "code": "fur",
+ "name": "Friulian"
+ },
+ "ff": {
+ "code": "ff",
+ "name": "Fulah"
+ },
+ "gd": {
+ "code": "gd",
+ "name": "Scottish Gaelic"
+ },
+ "wae": {
+ "code": "wae",
+ "name": "Walser"
+ },
+ "yav": {
+ "code": "yav",
+ "name": "Yangben"
+ },
+ "ug": {
+ "code": "ug",
+ "name": "ਉਇਗà©à¨°"
+ },
+ "uz": {
+ "code": "uz",
+ "name": "ਉਜ਼ਬੇਕ"
+ },
+ "se": {
+ "code": "se",
+ "name": "ਉੱਤਰੀ ਸਾਮੀ"
+ },
+ "nd": {
+ "code": "nd",
+ "name": "ਉੱਤਰੀ ਨਡੇਬੇਲੇ"
+ },
+ "ur": {
+ "code": "ur",
+ "name": "ਉਰਦੂ"
+ },
+ "or": {
+ "code": "or",
+ "name": "ਉੜੀਆ"
+ },
+ "asa": {
+ "code": "asa",
+ "name": "ਅਸੂ"
+ },
+ "ak": {
+ "code": "ak",
+ "name": "ਅਕਾਨ"
+ },
+ "en": {
+ "code": "en",
+ "name": "ਅੰਗਰੇਜ਼ੀ"
+ },
+ "agq": {
+ "code": "agq",
+ "name": "ਅਗੇਮ"
+ },
+ "az": {
+ "code": "az",
+ "name": "ਅਜ਼ਰਬਾਈਜਾਨੀ"
+ },
+ "hsb": {
+ "code": "hsb",
+ "name": "ਅੱਪਰ ਸੋਰਬੀਅਨ"
+ },
+ "af": {
+ "code": "af",
+ "name": "ਅਫ਼ਰੀਕੀ"
+ },
+ "am": {
+ "code": "am",
+ "name": "ਅਮਹਾਰਿਕ"
+ },
+ "en-US": {
+ "code": "en-US",
+ "name": "ਅਮਰੀਕੀ ਅੰਗਰੇਜ਼ੀ"
+ },
+ "ar": {
+ "code": "ar",
+ "name": "ਅਰਬੀ"
+ },
+ "hy": {
+ "code": "hy",
+ "name": "ਅਰਮੀਨੀਆਈ"
+ },
+ "sq": {
+ "code": "sq",
+ "name": "ਅਲਬਾਨੀਆਈ"
+ },
+ "ga": {
+ "code": "ga",
+ "name": "ਆਇਰੀ"
+ },
+ "is": {
+ "code": "is",
+ "name": "ਆਈਸਲੈਂਡਿਕ"
+ },
+ "de-AT": {
+ "code": "de-AT",
+ "name": "ਆਸਟਰੀਆਈ ਜਰਮਨ"
+ },
+ "en-AU": {
+ "code": "en-AU",
+ "name": "ਆਸਟà©à¨°à©‡à¨²à©€à¨†à¨ˆ ਅੰਗਰੇਜ਼ੀ"
+ },
+ "ar-001": {
+ "code": "ar-001",
+ "name": "ਆਧà©à¨¨à¨¿à¨• ਮਿਆਰੀ ਅਰਬੀ"
+ },
+ "et": {
+ "code": "et",
+ "name": "ਇਸਟੋਨੀਆਈ"
+ },
+ "eo": {
+ "code": "eo",
+ "name": "ਇਸਪੇਰਾਂਟੋ"
+ },
+ "id": {
+ "code": "id",
+ "name": "ਇੰਡੋਨੇਸ਼ੀਆਈ"
+ },
+ "it": {
+ "code": "it",
+ "name": "ਇਤਾਲਵੀ"
+ },
+ "ebu": {
+ "code": "ebu",
+ "name": "ਇੰਬੂ"
+ },
+ "ee": {
+ "code": "ee",
+ "name": "ਈਵਈ"
+ },
+ "es": {
+ "code": "es",
+ "name": "ਸਪੇਨੀ"
+ },
+ "ksb": {
+ "code": "ksb",
+ "name": "ਸ਼ੰਬਾਲਾ"
+ },
+ "saq": {
+ "code": "saq",
+ "name": "ਸਮਬà©à¨°à©‚"
+ },
+ "sr": {
+ "code": "sr",
+ "name": "ਸਰਬੀਆਈ"
+ },
+ "zh-Hans": {
+ "code": "zh-Hans",
+ "name": "ਸਰਲ ਚੀਨੀ"
+ },
+ "sk": {
+ "code": "sk",
+ "name": "ਸਲੋਵਾਕ"
+ },
+ "sl": {
+ "code": "sl",
+ "name": "ਸਲੋਵੇਨੀਆਈ"
+ },
+ "sw": {
+ "code": "sw",
+ "name": "ਸਵਾਹਿਲੀ"
+ },
+ "de-CH": {
+ "code": "de-CH",
+ "name": "ਸਵਿਸ ਹਾਈ ਜਰਮਨ"
+ },
+ "gsw": {
+ "code": "gsw",
+ "name": "ਸਵਿਸ ਜਰਮਨ"
+ },
+ "fr-CH": {
+ "code": "fr-CH",
+ "name": "ਸਵਿਸ ਫਰਾਂਸੀਸੀ"
+ },
+ "sv": {
+ "code": "sv",
+ "name": "ਸਵੀਡਿਸ਼"
+ },
+ "sg": {
+ "code": "sg",
+ "name": "ਸਾਂਗੋ"
+ },
+ "si": {
+ "code": "si",
+ "name": "ਸਿੰਹਾਲਾ"
+ },
+ "sbp": {
+ "code": "sbp",
+ "name": "ਸੇਂਗੋ"
+ },
+ "seh": {
+ "code": "seh",
+ "name": "ਸੇਨਾ"
+ },
+ "xog": {
+ "code": "xog",
+ "name": "ਸੋਗਾ"
+ },
+ "sn": {
+ "code": "sn",
+ "name": "ਸ਼ੋਨਾ"
+ },
+ "so": {
+ "code": "so",
+ "name": "ਸੋਮਾਲੀ"
+ },
+ "hu": {
+ "code": "hu",
+ "name": "ਹੰਗਰੀਆਈ"
+ },
+ "hi": {
+ "code": "hi",
+ "name": "ਹਿੰਦੀ"
+ },
+ "he": {
+ "code": "he",
+ "name": "ਹਿਬਰੂ"
+ },
+ "ha": {
+ "code": "ha",
+ "name": "ਹੌਸਾ"
+ },
+ "ks": {
+ "code": "ks",
+ "name": "ਕਸ਼ਮੀਰੀ"
+ },
+ "kk": {
+ "code": "kk",
+ "name": "ਕਜ਼ਾਖ਼"
+ },
+ "kn": {
+ "code": "kn",
+ "name": "ਕੰਨੜ"
+ },
+ "kam": {
+ "code": "kam",
+ "name": "ਕੰਬਾ"
+ },
+ "kab": {
+ "code": "kab",
+ "name": "ਕਬਾਇਲ"
+ },
+ "kl": {
+ "code": "kl",
+ "name": "ਕਲਾਅੱਲੀਸà©à¨Ÿ"
+ },
+ "kln": {
+ "code": "kln",
+ "name": "ਕਲੇਜਿਨ"
+ },
+ "nmg": {
+ "code": "nmg",
+ "name": "ਕਵਾਸਿਓ"
+ },
+ "hr": {
+ "code": "hr",
+ "name": "ਕà©à¨°à©‹à¨à¨¸à¨¼à¨¿à¨†à¨ˆ"
+ },
+ "swc": {
+ "code": "swc",
+ "name": "ਕਾਂਗੋ ਸਵਾਹਿਲੀ"
+ },
+ "kea": {
+ "code": "kea",
+ "name": "ਕਾਬà©à¨µà©‡à¨°à¨¦à¨¿à¨†à¨¨à©‚"
+ },
+ "ki": {
+ "code": "ki",
+ "name": "ਕਿਕੂਯੂ"
+ },
+ "ky": {
+ "code": "ky",
+ "name": "ਕਿਰਗੀਜ਼"
+ },
+ "ca": {
+ "code": "ca",
+ "name": "ਕੈਟਾਲਾਨ"
+ },
+ "en-CA": {
+ "code": "en-CA",
+ "name": "ਕੈਨੇਡੀਅਨ ਅੰਗਰੇਜ਼ੀ"
+ },
+ "fr-CA": {
+ "code": "fr-CA",
+ "name": "ਕੈਨੇਡੀਅਨ ਫਰਾਂਸੀਸੀ"
+ },
+ "ses": {
+ "code": "ses",
+ "name": "ਕੋਇਰਾਬੋਰੋ ਸੇਂਨੀ"
+ },
+ "khq": {
+ "code": "khq",
+ "name": "ਕੋਯਰਾ ਚੀਨੀ"
+ },
+ "ko": {
+ "code": "ko",
+ "name": "ਕੋਰੀਆਈ"
+ },
+ "km": {
+ "code": "km",
+ "name": "ਖਮੇਰ"
+ },
+ "lg": {
+ "code": "lg",
+ "name": "ਗਾਂਡਾ"
+ },
+ "guz": {
+ "code": "guz",
+ "name": "ਗà©à¨¸à©€"
+ },
+ "gu": {
+ "code": "gu",
+ "name": "ਗà©à¨œà¨°à¨¾à¨¤à©€"
+ },
+ "gl": {
+ "code": "gl",
+ "name": "ਗੈਲਿਸ਼ਿਅਨ"
+ },
+ "cgg": {
+ "code": "cgg",
+ "name": "ਚੀਗਾ"
+ },
+ "zh": {
+ "code": "zh",
+ "name": "ਚੀਨੀ"
+ },
+ "chr": {
+ "code": "chr",
+ "name": "ਚੇਰੋਕੀ"
+ },
+ "cs": {
+ "code": "cs",
+ "name": "ਚੈਕ"
+ },
+ "ja": {
+ "code": "ja",
+ "name": "ਜਪਾਨੀ"
+ },
+ "de": {
+ "code": "de",
+ "name": "ਜਰਮਨ"
+ },
+ "ka": {
+ "code": "ka",
+ "name": "ਜਾਰਜੀਆਈ"
+ },
+ "dje": {
+ "code": "dje",
+ "name": "ਜ਼ਾਰਮਾ"
+ },
+ "zu": {
+ "code": "zu",
+ "name": "ਜ਼à©à¨²à©‚"
+ },
+ "dz": {
+ "code": "dz",
+ "name": "ਜ਼ੋਂਗਖਾ"
+ },
+ "dyo": {
+ "code": "dyo",
+ "name": "ਜੋਲਾ-ਫੋਇਨੀ"
+ },
+ "shi": {
+ "code": "shi",
+ "name": "ਟਚੇਲਹਿਟ"
+ },
+ "teo": {
+ "code": "teo",
+ "name": "ਟੇਸੋ"
+ },
+ "dav": {
+ "code": "dav",
+ "name": "ਟੇਟਾ"
+ },
+ "to": {
+ "code": "to",
+ "name": "ਟੌਂਗਨ"
+ },
+ "nl": {
+ "code": "nl",
+ "name": "ਡੱਚ"
+ },
+ "da": {
+ "code": "da",
+ "name": "ਡੈਨਿਸ਼"
+ },
+ "ta": {
+ "code": "ta",
+ "name": "ਤਮਿਲ"
+ },
+ "twq": {
+ "code": "twq",
+ "name": "ਤਾਸਾਵਿਕ"
+ },
+ "ti": {
+ "code": "ti",
+ "name": "ਤਿਗà©à¨°à©€à¨¨à¨¿à¨†"
+ },
+ "bo": {
+ "code": "bo",
+ "name": "ਤਿੱਬਤੀ"
+ },
+ "tr": {
+ "code": "tr",
+ "name": "ਤà©à¨°à¨•à©€"
+ },
+ "te": {
+ "code": "te",
+ "name": "ਤੇਲਗੂ"
+ },
+ "th": {
+ "code": "th",
+ "name": "ਥਾਈ"
+ },
+ "jgo": {
+ "code": "jgo",
+ "name": "ਨਗੋਂਬਾ"
+ },
+ "naq": {
+ "code": "naq",
+ "name": "ਨਾਮਾ"
+ },
+ "nn": {
+ "code": "nn",
+ "name": "ਨਾਰਵੇਜਿਆਈ ਨਿਓਨੌਰਸਕ"
+ },
+ "nb": {
+ "code": "nb",
+ "name": "ਨਾਰਵੇਜਿਆਈ ਬੋਕਮਲ"
+ },
+ "nyn": {
+ "code": "nyn",
+ "name": "ਨਿਆਂਕੋਲੇ"
+ },
+ "nus": {
+ "code": "nus",
+ "name": "ਨà©à¨à¨°"
+ },
+ "ne": {
+ "code": "ne",
+ "name": "ਨੇਪਾਲੀ"
+ },
+ "ps": {
+ "code": "ps",
+ "name": "ਪਸ਼ਤੋ"
+ },
+ "fy": {
+ "code": "fy",
+ "name": "ਪੱਛਮੀ ਫà©à¨°à¨¿à¨¸à©€à¨…ਨ"
+ },
+ "pa": {
+ "code": "pa",
+ "name": "ਪੰਜਾਬੀ"
+ },
+ "pt": {
+ "code": "pt",
+ "name": "ਪà©à¨°à¨¤à¨—ਾਲੀ"
+ },
+ "pl": {
+ "code": "pl",
+ "name": "ਪੋਲੈਂਡੀ"
+ },
+ "fr": {
+ "code": "fr",
+ "name": "ਫਰਾਂਸੀਸੀ"
+ },
+ "nl-BE": {
+ "code": "nl-BE",
+ "name": "ਫਲੈਮਿਸ਼"
+ },
+ "fa": {
+ "code": "fa",
+ "name": "ਫ਼ਾਰਸੀ"
+ },
+ "fi": {
+ "code": "fi",
+ "name": "ਫਿਨਿਸ਼"
+ },
+ "fil": {
+ "code": "fil",
+ "name": "ਫਿਲੀਪਿਨੋ"
+ },
+ "fo": {
+ "code": "fo",
+ "name": "ਫ਼ੇਰੋਸੇ"
+ },
+ "bn": {
+ "code": "bn",
+ "name": "ਬੰਗਾਲੀ"
+ },
+ "ksf": {
+ "code": "ksf",
+ "name": "ਬਫ਼ੀਆ"
+ },
+ "bm": {
+ "code": "bm",
+ "name": "ਬੰਬਾਰਾ"
+ },
+ "en-GB": {
+ "code": "en-GB",
+ "name": "ਬਰਤਾਨਵੀ ਅੰਗਰੇਜ਼ੀ"
+ },
+ "my": {
+ "code": "my",
+ "name": "ਬਰਮੀ"
+ },
+ "br": {
+ "code": "br",
+ "name": "ਬਰੇਟਨ"
+ },
+ "pt-BR": {
+ "code": "pt-BR",
+ "name": "ਬà©à¨°à¨¾à¨œà¨¼à©€à¨²à©€à¨†à¨ˆ ਪà©à¨°à¨¤à¨—ਾਲੀ"
+ },
+ "eu": {
+ "code": "eu",
+ "name": "ਬਾਸਕ"
+ },
+ "bg": {
+ "code": "bg",
+ "name": "ਬà©à¨²à¨—ਾਰੀਆਈ"
+ },
+ "bez": {
+ "code": "bez",
+ "name": "ਬੇਨਾ"
+ },
+ "be": {
+ "code": "be",
+ "name": "ਬੇਲਾਰੂਸੀ"
+ },
+ "bs": {
+ "code": "bs",
+ "name": "ਬੋਸਨੀਆਈ"
+ },
+ "brx": {
+ "code": "brx",
+ "name": "ਬੋਡੋ"
+ },
+ "mas": {
+ "code": "mas",
+ "name": "ਮਸਾਈ"
+ },
+ "kde": {
+ "code": "kde",
+ "name": "ਮਕੋਂਡ"
+ },
+ "mgh": {
+ "code": "mgh",
+ "name": "ਮਖੋਵਾ-ਮਿੱਟੋ"
+ },
+ "mn": {
+ "code": "mn",
+ "name": "ਮੰਗੋਲੀਅਨ"
+ },
+ "jmc": {
+ "code": "jmc",
+ "name": "ਮਚਾਮੇ"
+ },
+ "tzm": {
+ "code": "tzm",
+ "name": "ਮੱਧ à¨à¨Ÿà¨²à¨¸ ਤਮਾਜ਼ਿਤ"
+ },
+ "mr": {
+ "code": "mr",
+ "name": "ਮਰਾਠੀ"
+ },
+ "ms": {
+ "code": "ms",
+ "name": "ਮਲਯ"
+ },
+ "ml": {
+ "code": "ml",
+ "name": "ਮਲਿਆਲਮ"
+ },
+ "mt": {
+ "code": "mt",
+ "name": "ਮਾਲਟੀਜ਼"
+ },
+ "zgh": {
+ "code": "zgh",
+ "name": "ਮਿਆਰੀ ਮੋਰੋਕੇਨ ਟਾਮਾਜ਼ਿਕ"
+ },
+ "mua": {
+ "code": "mua",
+ "name": "ਮà©à©°à¨¡à©‡à¨‚ਗ"
+ },
+ "mer": {
+ "code": "mer",
+ "name": "ਮੇਰੂ"
+ },
+ "mg": {
+ "code": "mg",
+ "name": "ਮੇਲੇਗਸੀ"
+ },
+ "es-MX": {
+ "code": "es-MX",
+ "name": "ਮੈਕਸੀਕਨ ਸਪੈਨਿਸ਼"
+ },
+ "mk": {
+ "code": "mk",
+ "name": "ਮੈਕਡੋਨੀਆਈ"
+ },
+ "mfe": {
+ "code": "mfe",
+ "name": "ਮੋਰੀਸਿਅਨ"
+ },
+ "ro-MD": {
+ "code": "ro-MD",
+ "name": "ਮੋਲਡਾਵੀਆਈ"
+ },
+ "uk": {
+ "code": "uk",
+ "name": "ਯੂਕਰੇਨੀਆਈ"
+ },
+ "el": {
+ "code": "el",
+ "name": "ਯੂਨਾਨੀ"
+ },
+ "es-ES": {
+ "code": "es-ES",
+ "name": "ਯੂਰਪੀ ਸਪੇਨੀ"
+ },
+ "pt-PT": {
+ "code": "pt-PT",
+ "name": "ਯੂਰਪੀ ਪà©à¨°à¨¤à¨—ਾਲੀ"
+ },
+ "yo": {
+ "code": "yo",
+ "name": "ਯੋਰੂਬਾ"
+ },
+ "rwk": {
+ "code": "rwk",
+ "name": "ਰਵਾ"
+ },
+ "zh-Hant": {
+ "code": "zh-Hant",
+ "name": "ਰਵਾਇਤੀ ਚੀਨੀ"
+ },
+ "rn": {
+ "code": "rn",
+ "name": "ਰà©à©°à¨¡à©€"
+ },
+ "ru": {
+ "code": "ru",
+ "name": "ਰੂਸੀ"
+ },
+ "rof": {
+ "code": "rof",
+ "name": "ਰੋਮਬੋ"
+ },
+ "rm": {
+ "code": "rm",
+ "name": "ਰੋਮਾਂਸ਼"
+ },
+ "ro": {
+ "code": "ro",
+ "name": "ਰੋਮਾਨੀਆਈ"
+ },
+ "lb": {
+ "code": "lb",
+ "name": "ਲਕਜ਼ਮਬਰਗਿਸ਼"
+ },
+ "lag": {
+ "code": "lag",
+ "name": "ਲੰਗਾਈ"
+ },
+ "lo": {
+ "code": "lo",
+ "name": "ਲਾਓ"
+ },
+ "lv": {
+ "code": "lv",
+ "name": "ਲਾਟਵਿਅਨ"
+ },
+ "ln": {
+ "code": "ln",
+ "name": "ਲਿੰਗਾਲਾ"
+ },
+ "lt": {
+ "code": "lt",
+ "name": "ਲਿਥà©à¨†à¨¨à©€à¨…ਨ"
+ },
+ "luo": {
+ "code": "luo",
+ "name": "ਲੂਓ"
+ },
+ "luy": {
+ "code": "luy",
+ "name": "ਲੂਈਆ"
+ },
+ "lu": {
+ "code": "lu",
+ "name": "ਲੂਬਾ-ਕਾਟਾਂਗਾ"
+ },
+ "dsb": {
+ "code": "dsb",
+ "name": "ਲੋਅਰ ਸੋਰਬੀਅਨ"
+ },
+ "vai": {
+ "code": "vai",
+ "name": "ਵਾਈ"
+ },
+ "vi": {
+ "code": "vi",
+ "name": "ਵੀਅਤਨਾਮੀ"
+ },
+ "vun": {
+ "code": "vun",
+ "name": "ਵੂੰਜੋ"
+ },
+ "cy": {
+ "code": "cy",
+ "name": "ਵੈਲਜ਼"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/language/pl.json b/library/intl/resources/language/pl.json
new file mode 100644
index 000000000..c6e69a00f
--- /dev/null
+++ b/library/intl/resources/language/pl.json
@@ -0,0 +1,738 @@
+{
+ "af": {
+ "code": "af",
+ "name": "afrikaans"
+ },
+ "agq": {
+ "code": "agq",
+ "name": "aghem"
+ },
+ "ak": {
+ "code": "ak",
+ "name": "akan"
+ },
+ "sq": {
+ "code": "sq",
+ "name": "albański"
+ },
+ "en-US": {
+ "code": "en-US",
+ "name": "amerykański angielski"
+ },
+ "am": {
+ "code": "am",
+ "name": "amharski"
+ },
+ "en": {
+ "code": "en",
+ "name": "angielski"
+ },
+ "ar": {
+ "code": "ar",
+ "name": "arabski"
+ },
+ "ast": {
+ "code": "ast",
+ "name": "asturyjski"
+ },
+ "asa": {
+ "code": "asa",
+ "name": "asu"
+ },
+ "teo": {
+ "code": "teo",
+ "name": "ateso"
+ },
+ "en-AU": {
+ "code": "en-AU",
+ "name": "australijski angielski"
+ },
+ "de-AT": {
+ "code": "de-AT",
+ "name": "austriacki niemiecki"
+ },
+ "az": {
+ "code": "az",
+ "name": "azerski"
+ },
+ "ksf": {
+ "code": "ksf",
+ "name": "bafia"
+ },
+ "bm": {
+ "code": "bm",
+ "name": "bambara"
+ },
+ "bas": {
+ "code": "bas",
+ "name": "basa"
+ },
+ "eu": {
+ "code": "eu",
+ "name": "baskijski"
+ },
+ "bez": {
+ "code": "bez",
+ "name": "bena"
+ },
+ "bn": {
+ "code": "bn",
+ "name": "bengalski"
+ },
+ "be": {
+ "code": "be",
+ "name": "białoruski"
+ },
+ "my": {
+ "code": "my",
+ "name": "birmański"
+ },
+ "brx": {
+ "code": "brx",
+ "name": "bodo"
+ },
+ "bs": {
+ "code": "bs",
+ "name": "bośniacki"
+ },
+ "pt-BR": {
+ "code": "pt-BR",
+ "name": "brazylijski portugalski"
+ },
+ "br": {
+ "code": "br",
+ "name": "bretoński"
+ },
+ "en-GB": {
+ "code": "en-GB",
+ "name": "brytyjski angielski"
+ },
+ "bg": {
+ "code": "bg",
+ "name": "bułgarski"
+ },
+ "tzm": {
+ "code": "tzm",
+ "name": "centralnomarokański tamazight"
+ },
+ "cgg": {
+ "code": "cgg",
+ "name": "chiga"
+ },
+ "zh": {
+ "code": "zh",
+ "name": "chiński"
+ },
+ "zh-Hant": {
+ "code": "zh-Hant",
+ "name": "chiński (tradycyjny)"
+ },
+ "zh-Hans": {
+ "code": "zh-Hans",
+ "name": "chiński (uproszczony)"
+ },
+ "hr": {
+ "code": "hr",
+ "name": "chorwacki"
+ },
+ "cs": {
+ "code": "cs",
+ "name": "czeski"
+ },
+ "chr": {
+ "code": "chr",
+ "name": "czirokeski"
+ },
+ "dyo": {
+ "code": "dyo",
+ "name": "diola"
+ },
+ "dsb": {
+ "code": "dsb",
+ "name": "dolnołużycki"
+ },
+ "da": {
+ "code": "da",
+ "name": "duński"
+ },
+ "dz": {
+ "code": "dz",
+ "name": "dzongkha"
+ },
+ "dje": {
+ "code": "dje",
+ "name": "dżerma"
+ },
+ "ebu": {
+ "code": "ebu",
+ "name": "embu"
+ },
+ "eo": {
+ "code": "eo",
+ "name": "esperanto"
+ },
+ "et": {
+ "code": "et",
+ "name": "estoński"
+ },
+ "es-ES": {
+ "code": "es-ES",
+ "name": "europejski hiszpański"
+ },
+ "pt-PT": {
+ "code": "pt-PT",
+ "name": "europejski portugalski"
+ },
+ "ee": {
+ "code": "ee",
+ "name": "ewe"
+ },
+ "ewo": {
+ "code": "ewo",
+ "name": "ewondo"
+ },
+ "fo": {
+ "code": "fo",
+ "name": "farerski"
+ },
+ "fil": {
+ "code": "fil",
+ "name": "filipino"
+ },
+ "fi": {
+ "code": "fi",
+ "name": "fiński"
+ },
+ "nl-BE": {
+ "code": "nl-BE",
+ "name": "flamandzki (Belgia)"
+ },
+ "fr": {
+ "code": "fr",
+ "name": "francuski"
+ },
+ "fur": {
+ "code": "fur",
+ "name": "friulijski"
+ },
+ "ff": {
+ "code": "ff",
+ "name": "fulani"
+ },
+ "gl": {
+ "code": "gl",
+ "name": "galicyjski"
+ },
+ "lg": {
+ "code": "lg",
+ "name": "ganda"
+ },
+ "hsb": {
+ "code": "hsb",
+ "name": "górnołużycki"
+ },
+ "el": {
+ "code": "el",
+ "name": "grecki"
+ },
+ "kl": {
+ "code": "kl",
+ "name": "grenlandzki"
+ },
+ "ka": {
+ "code": "ka",
+ "name": "gruziński"
+ },
+ "gu": {
+ "code": "gu",
+ "name": "gudźaracki"
+ },
+ "guz": {
+ "code": "guz",
+ "name": "gusii"
+ },
+ "ksh": {
+ "code": "ksh",
+ "name": "gwara kolońska"
+ },
+ "ha": {
+ "code": "ha",
+ "name": "hausa"
+ },
+ "he": {
+ "code": "he",
+ "name": "hebrajski"
+ },
+ "hi": {
+ "code": "hi",
+ "name": "hindi"
+ },
+ "es": {
+ "code": "es",
+ "name": "hiszpański"
+ },
+ "id": {
+ "code": "id",
+ "name": "indonezyjski"
+ },
+ "ga": {
+ "code": "ga",
+ "name": "irlandzki"
+ },
+ "is": {
+ "code": "is",
+ "name": "islandzki"
+ },
+ "ja": {
+ "code": "ja",
+ "name": "japoński"
+ },
+ "yo": {
+ "code": "yo",
+ "name": "joruba"
+ },
+ "kab": {
+ "code": "kab",
+ "name": "kabylski"
+ },
+ "kln": {
+ "code": "kln",
+ "name": "kalenjin"
+ },
+ "kam": {
+ "code": "kam",
+ "name": "kamba"
+ },
+ "en-CA": {
+ "code": "en-CA",
+ "name": "kanadyjski angielski"
+ },
+ "fr-CA": {
+ "code": "fr-CA",
+ "name": "kanadyjski francuski"
+ },
+ "kn": {
+ "code": "kn",
+ "name": "kannada"
+ },
+ "ks": {
+ "code": "ks",
+ "name": "kaszmirski"
+ },
+ "ca": {
+ "code": "ca",
+ "name": "kataloński"
+ },
+ "kk": {
+ "code": "kk",
+ "name": "kazachski"
+ },
+ "km": {
+ "code": "km",
+ "name": "khmerski"
+ },
+ "ki": {
+ "code": "ki",
+ "name": "kikuju"
+ },
+ "ky": {
+ "code": "ky",
+ "name": "kirgiski"
+ },
+ "swc": {
+ "code": "swc",
+ "name": "kongijski suahili"
+ },
+ "ko": {
+ "code": "ko",
+ "name": "koreański"
+ },
+ "khq": {
+ "code": "khq",
+ "name": "koyra chini"
+ },
+ "ses": {
+ "code": "ses",
+ "name": "koyraboro senni"
+ },
+ "mfe": {
+ "code": "mfe",
+ "name": "kreolski Mauritiusa"
+ },
+ "kea": {
+ "code": "kea",
+ "name": "kreolski Wysp Zielonego PrzylÄ…dka"
+ },
+ "lag": {
+ "code": "lag",
+ "name": "langi"
+ },
+ "lo": {
+ "code": "lo",
+ "name": "laotański"
+ },
+ "se": {
+ "code": "se",
+ "name": "lapoński północny"
+ },
+ "ln": {
+ "code": "ln",
+ "name": "lingala"
+ },
+ "lt": {
+ "code": "lt",
+ "name": "litewski"
+ },
+ "lu": {
+ "code": "lu",
+ "name": "luba-katanga"
+ },
+ "luy": {
+ "code": "luy",
+ "name": "luhya"
+ },
+ "lb": {
+ "code": "lb",
+ "name": "luksemburski"
+ },
+ "luo": {
+ "code": "luo",
+ "name": "Luo"
+ },
+ "lv": {
+ "code": "lv",
+ "name": "Å‚otewski"
+ },
+ "mk": {
+ "code": "mk",
+ "name": "macedoński"
+ },
+ "jmc": {
+ "code": "jmc",
+ "name": "machame"
+ },
+ "kde": {
+ "code": "kde",
+ "name": "makonde"
+ },
+ "mgh": {
+ "code": "mgh",
+ "name": "makua"
+ },
+ "ml": {
+ "code": "ml",
+ "name": "malajalam"
+ },
+ "ms": {
+ "code": "ms",
+ "name": "malajski"
+ },
+ "mg": {
+ "code": "mg",
+ "name": "malgaski"
+ },
+ "mt": {
+ "code": "mt",
+ "name": "maltański"
+ },
+ "mr": {
+ "code": "mr",
+ "name": "marathi"
+ },
+ "mas": {
+ "code": "mas",
+ "name": "masajski"
+ },
+ "es-MX": {
+ "code": "es-MX",
+ "name": "meksykański hiszpański"
+ },
+ "mer": {
+ "code": "mer",
+ "name": "meru"
+ },
+ "ro-MD": {
+ "code": "ro-MD",
+ "name": "mołdawski"
+ },
+ "mn": {
+ "code": "mn",
+ "name": "mongolski"
+ },
+ "mua": {
+ "code": "mua",
+ "name": "mundang"
+ },
+ "naq": {
+ "code": "naq",
+ "name": "nama"
+ },
+ "nd": {
+ "code": "nd",
+ "name": "ndebele północny"
+ },
+ "ne": {
+ "code": "ne",
+ "name": "nepalski"
+ },
+ "jgo": {
+ "code": "jgo",
+ "name": "ngombe"
+ },
+ "nmg": {
+ "code": "nmg",
+ "name": "ngumba"
+ },
+ "nl": {
+ "code": "nl",
+ "name": "niderlandzki"
+ },
+ "de": {
+ "code": "de",
+ "name": "niemiecki"
+ },
+ "nb": {
+ "code": "nb",
+ "name": "norweski (bokmål)"
+ },
+ "nn": {
+ "code": "nn",
+ "name": "norweski (nynorsk)"
+ },
+ "nus": {
+ "code": "nus",
+ "name": "nuer"
+ },
+ "nyn": {
+ "code": "nyn",
+ "name": "nyankole"
+ },
+ "or": {
+ "code": "or",
+ "name": "orija"
+ },
+ "hy": {
+ "code": "hy",
+ "name": "ormiański"
+ },
+ "ps": {
+ "code": "ps",
+ "name": "paszto"
+ },
+ "pa": {
+ "code": "pa",
+ "name": "pendżabski"
+ },
+ "fa": {
+ "code": "fa",
+ "name": "perski"
+ },
+ "pl": {
+ "code": "pl",
+ "name": "polski"
+ },
+ "pt": {
+ "code": "pt",
+ "name": "portugalski"
+ },
+ "rm": {
+ "code": "rm",
+ "name": "retoromański"
+ },
+ "rof": {
+ "code": "rof",
+ "name": "rombo"
+ },
+ "ru": {
+ "code": "ru",
+ "name": "rosyjski"
+ },
+ "ro": {
+ "code": "ro",
+ "name": "rumuński"
+ },
+ "rn": {
+ "code": "rn",
+ "name": "rundi"
+ },
+ "rwk": {
+ "code": "rwk",
+ "name": "rwa"
+ },
+ "ksb": {
+ "code": "ksb",
+ "name": "sambala"
+ },
+ "saq": {
+ "code": "saq",
+ "name": "samburu"
+ },
+ "sg": {
+ "code": "sg",
+ "name": "sango"
+ },
+ "sbp": {
+ "code": "sbp",
+ "name": "sangu"
+ },
+ "seh": {
+ "code": "seh",
+ "name": "sena"
+ },
+ "sr": {
+ "code": "sr",
+ "name": "serbski"
+ },
+ "sk": {
+ "code": "sk",
+ "name": "słowacki"
+ },
+ "sl": {
+ "code": "sl",
+ "name": "słoweński"
+ },
+ "xog": {
+ "code": "xog",
+ "name": "soga"
+ },
+ "so": {
+ "code": "so",
+ "name": "somalijski"
+ },
+ "zgh": {
+ "code": "zgh",
+ "name": "Standard Moroccan Tamazight"
+ },
+ "sw": {
+ "code": "sw",
+ "name": "suahili"
+ },
+ "si": {
+ "code": "si",
+ "name": "syngaleski"
+ },
+ "gd": {
+ "code": "gd",
+ "name": "szkocki gaelicki"
+ },
+ "sn": {
+ "code": "sn",
+ "name": "szona"
+ },
+ "fr-CH": {
+ "code": "fr-CH",
+ "name": "szwajcarski francuski"
+ },
+ "gsw": {
+ "code": "gsw",
+ "name": "szwajcarski niemiecki"
+ },
+ "sv": {
+ "code": "sv",
+ "name": "szwedzki"
+ },
+ "dav": {
+ "code": "dav",
+ "name": "taita"
+ },
+ "th": {
+ "code": "th",
+ "name": "tajski"
+ },
+ "ta": {
+ "code": "ta",
+ "name": "tamilski"
+ },
+ "twq": {
+ "code": "twq",
+ "name": "tasawaq"
+ },
+ "shi": {
+ "code": "shi",
+ "name": "tashelhiyt"
+ },
+ "te": {
+ "code": "te",
+ "name": "telugu"
+ },
+ "ti": {
+ "code": "ti",
+ "name": "tigrinia"
+ },
+ "to": {
+ "code": "to",
+ "name": "tonga"
+ },
+ "tr": {
+ "code": "tr",
+ "name": "turecki"
+ },
+ "bo": {
+ "code": "bo",
+ "name": "tybetański"
+ },
+ "ug": {
+ "code": "ug",
+ "name": "ujgurski"
+ },
+ "uk": {
+ "code": "uk",
+ "name": "ukraiński"
+ },
+ "ur": {
+ "code": "ur",
+ "name": "urdu"
+ },
+ "uz": {
+ "code": "uz",
+ "name": "uzbecki"
+ },
+ "vun": {
+ "code": "vun",
+ "name": "vunjo"
+ },
+ "vai": {
+ "code": "vai",
+ "name": "wai"
+ },
+ "cy": {
+ "code": "cy",
+ "name": "walijski"
+ },
+ "wae": {
+ "code": "wae",
+ "name": "walser"
+ },
+ "hu": {
+ "code": "hu",
+ "name": "węgierski"
+ },
+ "vi": {
+ "code": "vi",
+ "name": "wietnamski"
+ },
+ "it": {
+ "code": "it",
+ "name": "włoski"
+ },
+ "ar-001": {
+ "code": "ar-001",
+ "name": "współczesny arabski"
+ },
+ "de-CH": {
+ "code": "de-CH",
+ "name": "wysokoniemiecki (Szwajcaria)"
+ },
+ "yav": {
+ "code": "yav",
+ "name": "yangben"
+ },
+ "fy": {
+ "code": "fy",
+ "name": "zachodniofryzyjski"
+ },
+ "zu": {
+ "code": "zu",
+ "name": "zulu"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/language/ps.json b/library/intl/resources/language/ps.json
new file mode 100644
index 000000000..1b5b5804d
--- /dev/null
+++ b/library/intl/resources/language/ps.json
@@ -0,0 +1,738 @@
+{
+ "agq": {
+ "code": "agq",
+ "name": "Aghem"
+ },
+ "ak": {
+ "code": "ak",
+ "name": "Akan"
+ },
+ "ar-001": {
+ "code": "ar-001",
+ "name": "ar_001"
+ },
+ "ast": {
+ "code": "ast",
+ "name": "Asturian"
+ },
+ "asa": {
+ "code": "asa",
+ "name": "Asu"
+ },
+ "ksf": {
+ "code": "ksf",
+ "name": "Bafia"
+ },
+ "bm": {
+ "code": "bm",
+ "name": "Bambara"
+ },
+ "bas": {
+ "code": "bas",
+ "name": "Basaa"
+ },
+ "bez": {
+ "code": "bez",
+ "name": "Bena"
+ },
+ "brx": {
+ "code": "brx",
+ "name": "Bodo"
+ },
+ "my": {
+ "code": "my",
+ "name": "Burmese"
+ },
+ "tzm": {
+ "code": "tzm",
+ "name": "Central Atlas Tamazight"
+ },
+ "chr": {
+ "code": "chr",
+ "name": "Cherokee"
+ },
+ "cgg": {
+ "code": "cgg",
+ "name": "Chiga"
+ },
+ "ksh": {
+ "code": "ksh",
+ "name": "Colognian"
+ },
+ "swc": {
+ "code": "swc",
+ "name": "Congo Swahili"
+ },
+ "de-AT": {
+ "code": "de-AT",
+ "name": "de_AT"
+ },
+ "de-CH": {
+ "code": "de-CH",
+ "name": "de_CH"
+ },
+ "dz": {
+ "code": "dz",
+ "name": "Dzongkha"
+ },
+ "ebu": {
+ "code": "ebu",
+ "name": "Embu"
+ },
+ "en-AU": {
+ "code": "en-AU",
+ "name": "en_AU"
+ },
+ "en-CA": {
+ "code": "en-CA",
+ "name": "en_CA"
+ },
+ "en-GB": {
+ "code": "en-GB",
+ "name": "en_GB"
+ },
+ "en-US": {
+ "code": "en-US",
+ "name": "en_US"
+ },
+ "es-ES": {
+ "code": "es-ES",
+ "name": "es_ES"
+ },
+ "es-MX": {
+ "code": "es-MX",
+ "name": "es_MX"
+ },
+ "ee": {
+ "code": "ee",
+ "name": "Ewe"
+ },
+ "ewo": {
+ "code": "ewo",
+ "name": "Ewondo"
+ },
+ "fr-CA": {
+ "code": "fr-CA",
+ "name": "fr_CA"
+ },
+ "fr-CH": {
+ "code": "fr-CH",
+ "name": "fr_CH"
+ },
+ "fur": {
+ "code": "fur",
+ "name": "Friulian"
+ },
+ "ff": {
+ "code": "ff",
+ "name": "Fulah"
+ },
+ "lg": {
+ "code": "lg",
+ "name": "Ganda"
+ },
+ "guz": {
+ "code": "guz",
+ "name": "Gusii"
+ },
+ "ha": {
+ "code": "ha",
+ "name": "Hausa"
+ },
+ "dyo": {
+ "code": "dyo",
+ "name": "Jola-Fonyi"
+ },
+ "kea": {
+ "code": "kea",
+ "name": "Kabuverdianu"
+ },
+ "kab": {
+ "code": "kab",
+ "name": "Kabyle"
+ },
+ "kl": {
+ "code": "kl",
+ "name": "Kalaallisut"
+ },
+ "kln": {
+ "code": "kln",
+ "name": "Kalenjin"
+ },
+ "kam": {
+ "code": "kam",
+ "name": "Kamba"
+ },
+ "ks": {
+ "code": "ks",
+ "name": "Kashmiri"
+ },
+ "kk": {
+ "code": "kk",
+ "name": "Kazakh"
+ },
+ "ki": {
+ "code": "ki",
+ "name": "Kikuyu"
+ },
+ "khq": {
+ "code": "khq",
+ "name": "Koyra Chiini"
+ },
+ "ses": {
+ "code": "ses",
+ "name": "Koyraboro Senni"
+ },
+ "nmg": {
+ "code": "nmg",
+ "name": "Kwasio"
+ },
+ "lag": {
+ "code": "lag",
+ "name": "Langi"
+ },
+ "ln": {
+ "code": "ln",
+ "name": "Lingala"
+ },
+ "dsb": {
+ "code": "dsb",
+ "name": "Lower Sorbian"
+ },
+ "lu": {
+ "code": "lu",
+ "name": "Luba-Katanga"
+ },
+ "luo": {
+ "code": "luo",
+ "name": "Luo"
+ },
+ "lb": {
+ "code": "lb",
+ "name": "Luxembourgish"
+ },
+ "luy": {
+ "code": "luy",
+ "name": "Luyia"
+ },
+ "jmc": {
+ "code": "jmc",
+ "name": "Machame"
+ },
+ "mgh": {
+ "code": "mgh",
+ "name": "Makhuwa-Meetto"
+ },
+ "kde": {
+ "code": "kde",
+ "name": "Makonde"
+ },
+ "mas": {
+ "code": "mas",
+ "name": "Masai"
+ },
+ "mer": {
+ "code": "mer",
+ "name": "Meru"
+ },
+ "mfe": {
+ "code": "mfe",
+ "name": "Morisyen"
+ },
+ "mua": {
+ "code": "mua",
+ "name": "Mundang"
+ },
+ "naq": {
+ "code": "naq",
+ "name": "Nama"
+ },
+ "jgo": {
+ "code": "jgo",
+ "name": "Ngomba"
+ },
+ "nl-BE": {
+ "code": "nl-BE",
+ "name": "nl_BE"
+ },
+ "nd": {
+ "code": "nd",
+ "name": "North Ndebele"
+ },
+ "se": {
+ "code": "se",
+ "name": "Northern Sami"
+ },
+ "nb": {
+ "code": "nb",
+ "name": "Norwegian Bokmål"
+ },
+ "nus": {
+ "code": "nus",
+ "name": "Nuer"
+ },
+ "nyn": {
+ "code": "nyn",
+ "name": "Nyankole"
+ },
+ "ro-MD": {
+ "code": "ro-MD",
+ "name": "ro_MD"
+ },
+ "rm": {
+ "code": "rm",
+ "name": "Romansh"
+ },
+ "rof": {
+ "code": "rof",
+ "name": "Rombo"
+ },
+ "rn": {
+ "code": "rn",
+ "name": "Rundi"
+ },
+ "rwk": {
+ "code": "rwk",
+ "name": "Rwa"
+ },
+ "saq": {
+ "code": "saq",
+ "name": "Samburu"
+ },
+ "sg": {
+ "code": "sg",
+ "name": "Sango"
+ },
+ "sbp": {
+ "code": "sbp",
+ "name": "Sangu"
+ },
+ "seh": {
+ "code": "seh",
+ "name": "Sena"
+ },
+ "ksb": {
+ "code": "ksb",
+ "name": "Shambala"
+ },
+ "sn": {
+ "code": "sn",
+ "name": "Shona"
+ },
+ "xog": {
+ "code": "xog",
+ "name": "Soga"
+ },
+ "zgh": {
+ "code": "zgh",
+ "name": "Standard Moroccan Tamazight"
+ },
+ "gsw": {
+ "code": "gsw",
+ "name": "Swiss German"
+ },
+ "shi": {
+ "code": "shi",
+ "name": "Tachelhit"
+ },
+ "dav": {
+ "code": "dav",
+ "name": "Taita"
+ },
+ "twq": {
+ "code": "twq",
+ "name": "Tasawaq"
+ },
+ "teo": {
+ "code": "teo",
+ "name": "Teso"
+ },
+ "bo": {
+ "code": "bo",
+ "name": "Tibetan"
+ },
+ "to": {
+ "code": "to",
+ "name": "Tongan"
+ },
+ "hsb": {
+ "code": "hsb",
+ "name": "Upper Sorbian"
+ },
+ "vai": {
+ "code": "vai",
+ "name": "Vai"
+ },
+ "vun": {
+ "code": "vun",
+ "name": "Vunjo"
+ },
+ "wae": {
+ "code": "wae",
+ "name": "Walser"
+ },
+ "yav": {
+ "code": "yav",
+ "name": "Yangben"
+ },
+ "yo": {
+ "code": "yo",
+ "name": "Yoruba"
+ },
+ "dje": {
+ "code": "dje",
+ "name": "Zarma"
+ },
+ "zh-Hans": {
+ "code": "zh-Hans",
+ "name": "zh_Hans"
+ },
+ "zh-Hant": {
+ "code": "zh-Hant",
+ "name": "zh_Hant"
+ },
+ "az": {
+ "code": "az",
+ "name": "أذربائجاني"
+ },
+ "ur": {
+ "code": "ur",
+ "name": "اردو"
+ },
+ "hy": {
+ "code": "hy",
+ "name": "ارمني"
+ },
+ "uz": {
+ "code": "uz",
+ "name": "ازبکي"
+ },
+ "eo": {
+ "code": "eo",
+ "name": "اسپرانتو"
+ },
+ "af": {
+ "code": "af",
+ "name": "اÙريکاني"
+ },
+ "sq": {
+ "code": "sq",
+ "name": "الباني"
+ },
+ "de": {
+ "code": "de",
+ "name": "الماني"
+ },
+ "am": {
+ "code": "am",
+ "name": "امهاري"
+ },
+ "id": {
+ "code": "id",
+ "name": "انډونÛشيايي"
+ },
+ "en": {
+ "code": "en",
+ "name": "انګلیسي"
+ },
+ "or": {
+ "code": "or",
+ "name": "اوريا"
+ },
+ "uk": {
+ "code": "uk",
+ "name": "اوکرانايي"
+ },
+ "ug": {
+ "code": "ug",
+ "name": "اويگور"
+ },
+ "it": {
+ "code": "it",
+ "name": "ایټالوي"
+ },
+ "is": {
+ "code": "is",
+ "name": "أيسلÛÙ†Ú‰ÙŠ"
+ },
+ "ga": {
+ "code": "ga",
+ "name": "ائيرلÛÙ†Ú‰ÙŠ"
+ },
+ "eu": {
+ "code": "eu",
+ "name": "باسکي"
+ },
+ "br": {
+ "code": "br",
+ "name": "برÛتون"
+ },
+ "bg": {
+ "code": "bg",
+ "name": "بلغاري"
+ },
+ "bn": {
+ "code": "bn",
+ "name": "بنګالي"
+ },
+ "bs": {
+ "code": "bs",
+ "name": "بوسني"
+ },
+ "be": {
+ "code": "be",
+ "name": "بÛلاروسي"
+ },
+ "pt-BR": {
+ "code": "pt-BR",
+ "name": "پرتگال (برازيل)"
+ },
+ "pt-PT": {
+ "code": "pt-PT",
+ "name": "پرتګالي (پرتګال)"
+ },
+ "ps": {
+ "code": "ps",
+ "name": "پښتو"
+ },
+ "pa": {
+ "code": "pa",
+ "name": "پنجابي"
+ },
+ "pt": {
+ "code": "pt",
+ "name": "پورتګالي"
+ },
+ "pl": {
+ "code": "pl",
+ "name": "پولنډي"
+ },
+ "ta": {
+ "code": "ta",
+ "name": "تامل"
+ },
+ "th": {
+ "code": "th",
+ "name": "تايلÛÙ†Ú‰ÙŠ"
+ },
+ "tr": {
+ "code": "tr",
+ "name": "ترکي"
+ },
+ "fil": {
+ "code": "fil",
+ "name": "تګالوګ"
+ },
+ "ti": {
+ "code": "ti",
+ "name": "تيګريني"
+ },
+ "te": {
+ "code": "te",
+ "name": "تÛليګو"
+ },
+ "ja": {
+ "code": "ja",
+ "name": "جاپانی"
+ },
+ "ka": {
+ "code": "ka",
+ "name": "جورجيائي"
+ },
+ "cs": {
+ "code": "cs",
+ "name": "Ú†ÛÚ©"
+ },
+ "zh": {
+ "code": "zh",
+ "name": "چیني"
+ },
+ "et": {
+ "code": "et",
+ "name": "حبشي"
+ },
+ "da": {
+ "code": "da",
+ "name": "Ú‰Ûنش"
+ },
+ "ru": {
+ "code": "ru",
+ "name": "روسي"
+ },
+ "ro": {
+ "code": "ro",
+ "name": "روماني"
+ },
+ "zu": {
+ "code": "zu",
+ "name": "زولو"
+ },
+ "sr": {
+ "code": "sr",
+ "name": "سربيائي"
+ },
+ "gd": {
+ "code": "gd",
+ "name": "سکاټلÛÙ†Ú‰ÙŠ Ú«ÛÙ„Ú©"
+ },
+ "sk": {
+ "code": "sk",
+ "name": "سلوواکي"
+ },
+ "sl": {
+ "code": "sl",
+ "name": "سلوواني"
+ },
+ "sw": {
+ "code": "sw",
+ "name": "سواهÛلي"
+ },
+ "so": {
+ "code": "so",
+ "name": "سومالي"
+ },
+ "sv": {
+ "code": "sv",
+ "name": "سویډنی"
+ },
+ "si": {
+ "code": "si",
+ "name": "سينهالي"
+ },
+ "he": {
+ "code": "he",
+ "name": "عبري"
+ },
+ "ar": {
+ "code": "ar",
+ "name": "عربي"
+ },
+ "fa": {
+ "code": "fa",
+ "name": "Ùارسي"
+ },
+ "fo": {
+ "code": "fo",
+ "name": "ÙاروئÛ"
+ },
+ "fr": {
+ "code": "fr",
+ "name": "Ùرانسوي"
+ },
+ "fy": {
+ "code": "fy",
+ "name": "Ùريزي"
+ },
+ "fi": {
+ "code": "fi",
+ "name": "Ùینلنډي"
+ },
+ "ca": {
+ "code": "ca",
+ "name": "کټلاني"
+ },
+ "ky": {
+ "code": "ky",
+ "name": "کرګيز"
+ },
+ "hr": {
+ "code": "hr",
+ "name": "کروواتي"
+ },
+ "km": {
+ "code": "km",
+ "name": "Ú©Ù…Ø¨ÙˆÚ‰ÙŠØ§ÙŠÛ ÙŠØ§ د کمبوډيا"
+ },
+ "kn": {
+ "code": "kn",
+ "name": "کنأډه"
+ },
+ "ko": {
+ "code": "ko",
+ "name": "کوريائي"
+ },
+ "gu": {
+ "code": "gu",
+ "name": "ګجراتي"
+ },
+ "gl": {
+ "code": "gl",
+ "name": "Ú«Ù„Ûشيايي"
+ },
+ "lo": {
+ "code": "lo",
+ "name": "لويتين"
+ },
+ "lt": {
+ "code": "lt",
+ "name": "ليتواني"
+ },
+ "lv": {
+ "code": "lv",
+ "name": "Ù„Ûټواني"
+ },
+ "ml": {
+ "code": "ml",
+ "name": "مالايالم"
+ },
+ "mt": {
+ "code": "mt",
+ "name": "مالټايي"
+ },
+ "mr": {
+ "code": "mr",
+ "name": "مراټهي"
+ },
+ "mn": {
+ "code": "mn",
+ "name": "مغولي"
+ },
+ "mk": {
+ "code": "mk",
+ "name": "مقدوني"
+ },
+ "ms": {
+ "code": "ms",
+ "name": "ملایا"
+ },
+ "mg": {
+ "code": "mg",
+ "name": "ملغاسي"
+ },
+ "nn": {
+ "code": "nn",
+ "name": "ناروÛئي (نائنورسک)"
+ },
+ "ne": {
+ "code": "ne",
+ "name": "Ù†Ûپالي"
+ },
+ "nl": {
+ "code": "nl",
+ "name": "هالÛÙ†Ú‰ÙŠ"
+ },
+ "es": {
+ "code": "es",
+ "name": "هسپانوي"
+ },
+ "hi": {
+ "code": "hi",
+ "name": "هندي"
+ },
+ "hu": {
+ "code": "hu",
+ "name": "هنګري"
+ },
+ "vi": {
+ "code": "vi",
+ "name": "ÙˆÛتنامي"
+ },
+ "cy": {
+ "code": "cy",
+ "name": "ويلشي"
+ },
+ "el": {
+ "code": "el",
+ "name": "یوناني"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/language/pt-AO.json b/library/intl/resources/language/pt-AO.json
new file mode 100644
index 000000000..44021eb46
--- /dev/null
+++ b/library/intl/resources/language/pt-AO.json
@@ -0,0 +1,738 @@
+{
+ "af": {
+ "code": "af",
+ "name": "africânder"
+ },
+ "agq": {
+ "code": "agq",
+ "name": "aghem"
+ },
+ "ak": {
+ "code": "ak",
+ "name": "akan"
+ },
+ "sq": {
+ "code": "sq",
+ "name": "albanês"
+ },
+ "de": {
+ "code": "de",
+ "name": "alemão"
+ },
+ "de-AT": {
+ "code": "de-AT",
+ "name": "alemão austríaco"
+ },
+ "gsw": {
+ "code": "gsw",
+ "name": "alemão suíço"
+ },
+ "de-CH": {
+ "code": "de-CH",
+ "name": "alto alemão suíço"
+ },
+ "hsb": {
+ "code": "hsb",
+ "name": "alto sórabio"
+ },
+ "am": {
+ "code": "am",
+ "name": "amárico"
+ },
+ "ar": {
+ "code": "ar",
+ "name": "árabe"
+ },
+ "ar-001": {
+ "code": "ar-001",
+ "name": "árabe moderno padrão"
+ },
+ "hy": {
+ "code": "hy",
+ "name": "arménio"
+ },
+ "ast": {
+ "code": "ast",
+ "name": "asturiano"
+ },
+ "asa": {
+ "code": "asa",
+ "name": "asu"
+ },
+ "az": {
+ "code": "az",
+ "name": "azerbaijano"
+ },
+ "ksf": {
+ "code": "ksf",
+ "name": "bafia"
+ },
+ "dsb": {
+ "code": "dsb",
+ "name": "baixo sórabio"
+ },
+ "bm": {
+ "code": "bm",
+ "name": "bambara"
+ },
+ "bas": {
+ "code": "bas",
+ "name": "basa"
+ },
+ "eu": {
+ "code": "eu",
+ "name": "basco"
+ },
+ "bez": {
+ "code": "bez",
+ "name": "bena"
+ },
+ "bn": {
+ "code": "bn",
+ "name": "bengali"
+ },
+ "be": {
+ "code": "be",
+ "name": "bielorrusso"
+ },
+ "my": {
+ "code": "my",
+ "name": "birmanês"
+ },
+ "brx": {
+ "code": "brx",
+ "name": "bodo"
+ },
+ "bs": {
+ "code": "bs",
+ "name": "bósnio"
+ },
+ "br": {
+ "code": "br",
+ "name": "bretão"
+ },
+ "bg": {
+ "code": "bg",
+ "name": "búlgaro"
+ },
+ "kea": {
+ "code": "kea",
+ "name": "cabo-verdiano"
+ },
+ "kn": {
+ "code": "kn",
+ "name": "canarim"
+ },
+ "ca": {
+ "code": "ca",
+ "name": "catalão"
+ },
+ "ks": {
+ "code": "ks",
+ "name": "caxemira"
+ },
+ "kk": {
+ "code": "kk",
+ "name": "cazaque"
+ },
+ "cs": {
+ "code": "cs",
+ "name": "checo"
+ },
+ "chr": {
+ "code": "chr",
+ "name": "cherokee"
+ },
+ "cgg": {
+ "code": "cgg",
+ "name": "chiga"
+ },
+ "zh": {
+ "code": "zh",
+ "name": "chinês"
+ },
+ "zh-Hans": {
+ "code": "zh-Hans",
+ "name": "chinês simplificado"
+ },
+ "zh-Hant": {
+ "code": "zh-Hant",
+ "name": "chinês tradicional"
+ },
+ "si": {
+ "code": "si",
+ "name": "cingalês"
+ },
+ "km": {
+ "code": "km",
+ "name": "cmer"
+ },
+ "ko": {
+ "code": "ko",
+ "name": "coreano"
+ },
+ "hr": {
+ "code": "hr",
+ "name": "croata"
+ },
+ "da": {
+ "code": "da",
+ "name": "dinamarquês"
+ },
+ "dz": {
+ "code": "dz",
+ "name": "dzonga"
+ },
+ "ebu": {
+ "code": "ebu",
+ "name": "embu"
+ },
+ "sk": {
+ "code": "sk",
+ "name": "eslovaco"
+ },
+ "sl": {
+ "code": "sl",
+ "name": "esloveno"
+ },
+ "es": {
+ "code": "es",
+ "name": "espanhol"
+ },
+ "es-MX": {
+ "code": "es-MX",
+ "name": "espanhol do México"
+ },
+ "es-ES": {
+ "code": "es-ES",
+ "name": "espanhol europeu"
+ },
+ "eo": {
+ "code": "eo",
+ "name": "esperanto"
+ },
+ "et": {
+ "code": "et",
+ "name": "estónio"
+ },
+ "ee": {
+ "code": "ee",
+ "name": "ewe"
+ },
+ "ewo": {
+ "code": "ewo",
+ "name": "ewondo"
+ },
+ "fo": {
+ "code": "fo",
+ "name": "feroês"
+ },
+ "fil": {
+ "code": "fil",
+ "name": "filipino"
+ },
+ "fi": {
+ "code": "fi",
+ "name": "finlandês"
+ },
+ "nl-BE": {
+ "code": "nl-BE",
+ "name": "flamengo"
+ },
+ "fr": {
+ "code": "fr",
+ "name": "francês"
+ },
+ "fr-CA": {
+ "code": "fr-CA",
+ "name": "francês canadiano"
+ },
+ "fr-CH": {
+ "code": "fr-CH",
+ "name": "francês suíço"
+ },
+ "fy": {
+ "code": "fy",
+ "name": "frísico ocidental"
+ },
+ "fur": {
+ "code": "fur",
+ "name": "friulano"
+ },
+ "ff": {
+ "code": "ff",
+ "name": "fula"
+ },
+ "gd": {
+ "code": "gd",
+ "name": "gaélico escocês"
+ },
+ "gl": {
+ "code": "gl",
+ "name": "galego"
+ },
+ "cy": {
+ "code": "cy",
+ "name": "galês"
+ },
+ "lg": {
+ "code": "lg",
+ "name": "ganda"
+ },
+ "ka": {
+ "code": "ka",
+ "name": "georgiano"
+ },
+ "el": {
+ "code": "el",
+ "name": "grego"
+ },
+ "kl": {
+ "code": "kl",
+ "name": "groenlandês"
+ },
+ "guz": {
+ "code": "guz",
+ "name": "gusii"
+ },
+ "gu": {
+ "code": "gu",
+ "name": "guzerate"
+ },
+ "ha": {
+ "code": "ha",
+ "name": "haúça"
+ },
+ "he": {
+ "code": "he",
+ "name": "hebraico"
+ },
+ "hi": {
+ "code": "hi",
+ "name": "hindi"
+ },
+ "nl": {
+ "code": "nl",
+ "name": "holandês"
+ },
+ "hu": {
+ "code": "hu",
+ "name": "húngaro"
+ },
+ "id": {
+ "code": "id",
+ "name": "indonésio"
+ },
+ "en": {
+ "code": "en",
+ "name": "inglês"
+ },
+ "en-US": {
+ "code": "en-US",
+ "name": "inglês americano"
+ },
+ "en-AU": {
+ "code": "en-AU",
+ "name": "inglês australiano"
+ },
+ "en-GB": {
+ "code": "en-GB",
+ "name": "inglês britânico"
+ },
+ "en-CA": {
+ "code": "en-CA",
+ "name": "inglês canadiano"
+ },
+ "yo": {
+ "code": "yo",
+ "name": "ioruba"
+ },
+ "ga": {
+ "code": "ga",
+ "name": "irlandês"
+ },
+ "is": {
+ "code": "is",
+ "name": "islandês"
+ },
+ "it": {
+ "code": "it",
+ "name": "italiano"
+ },
+ "ja": {
+ "code": "ja",
+ "name": "japonês"
+ },
+ "dyo": {
+ "code": "dyo",
+ "name": "jola-fonyi"
+ },
+ "kab": {
+ "code": "kab",
+ "name": "kabyle"
+ },
+ "kln": {
+ "code": "kln",
+ "name": "kalenjin"
+ },
+ "kam": {
+ "code": "kam",
+ "name": "kamba"
+ },
+ "ksh": {
+ "code": "ksh",
+ "name": "kölsch"
+ },
+ "khq": {
+ "code": "khq",
+ "name": "koyra chiini"
+ },
+ "ses": {
+ "code": "ses",
+ "name": "koyraboro senni"
+ },
+ "nmg": {
+ "code": "nmg",
+ "name": "kwasio"
+ },
+ "lag": {
+ "code": "lag",
+ "name": "langi"
+ },
+ "lo": {
+ "code": "lo",
+ "name": "laosiano"
+ },
+ "lv": {
+ "code": "lv",
+ "name": "letão"
+ },
+ "ln": {
+ "code": "ln",
+ "name": "lingala"
+ },
+ "lt": {
+ "code": "lt",
+ "name": "lituano"
+ },
+ "lu": {
+ "code": "lu",
+ "name": "luba-catanga"
+ },
+ "luo": {
+ "code": "luo",
+ "name": "Luo"
+ },
+ "lb": {
+ "code": "lb",
+ "name": "luxemburguês"
+ },
+ "luy": {
+ "code": "luy",
+ "name": "luyia"
+ },
+ "mk": {
+ "code": "mk",
+ "name": "macedónio"
+ },
+ "jmc": {
+ "code": "jmc",
+ "name": "machame"
+ },
+ "kde": {
+ "code": "kde",
+ "name": "maconde"
+ },
+ "mgh": {
+ "code": "mgh",
+ "name": "macua"
+ },
+ "ml": {
+ "code": "ml",
+ "name": "malaiala"
+ },
+ "ms": {
+ "code": "ms",
+ "name": "malaio"
+ },
+ "mg": {
+ "code": "mg",
+ "name": "malgaxe"
+ },
+ "mt": {
+ "code": "mt",
+ "name": "maltês"
+ },
+ "mr": {
+ "code": "mr",
+ "name": "marata"
+ },
+ "mas": {
+ "code": "mas",
+ "name": "massai"
+ },
+ "mer": {
+ "code": "mer",
+ "name": "meru"
+ },
+ "ro-MD": {
+ "code": "ro-MD",
+ "name": "moldávio"
+ },
+ "mn": {
+ "code": "mn",
+ "name": "mongol"
+ },
+ "mfe": {
+ "code": "mfe",
+ "name": "morisyen"
+ },
+ "mua": {
+ "code": "mua",
+ "name": "mundang"
+ },
+ "naq": {
+ "code": "naq",
+ "name": "nama"
+ },
+ "nd": {
+ "code": "nd",
+ "name": "ndebele do norte"
+ },
+ "ne": {
+ "code": "ne",
+ "name": "nepali"
+ },
+ "jgo": {
+ "code": "jgo",
+ "name": "nguemba"
+ },
+ "nb": {
+ "code": "nb",
+ "name": "norueguês bokmål"
+ },
+ "nn": {
+ "code": "nn",
+ "name": "norueguês nynorsk"
+ },
+ "nus": {
+ "code": "nus",
+ "name": "nuer"
+ },
+ "nyn": {
+ "code": "nyn",
+ "name": "nyankole"
+ },
+ "or": {
+ "code": "or",
+ "name": "oriya"
+ },
+ "pa": {
+ "code": "pa",
+ "name": "panjabi"
+ },
+ "ps": {
+ "code": "ps",
+ "name": "pastó"
+ },
+ "fa": {
+ "code": "fa",
+ "name": "persa"
+ },
+ "pl": {
+ "code": "pl",
+ "name": "polaco"
+ },
+ "pt": {
+ "code": "pt",
+ "name": "português"
+ },
+ "pt-BR": {
+ "code": "pt-BR",
+ "name": "português do Brasil"
+ },
+ "pt-PT": {
+ "code": "pt-PT",
+ "name": "português europeu"
+ },
+ "ki": {
+ "code": "ki",
+ "name": "quicuio"
+ },
+ "ky": {
+ "code": "ky",
+ "name": "quirguiz"
+ },
+ "rm": {
+ "code": "rm",
+ "name": "romanche"
+ },
+ "rof": {
+ "code": "rof",
+ "name": "rombo"
+ },
+ "ro": {
+ "code": "ro",
+ "name": "romeno"
+ },
+ "rn": {
+ "code": "rn",
+ "name": "rundi"
+ },
+ "ru": {
+ "code": "ru",
+ "name": "russo"
+ },
+ "rwk": {
+ "code": "rwk",
+ "name": "rwa"
+ },
+ "saq": {
+ "code": "saq",
+ "name": "samburu"
+ },
+ "se": {
+ "code": "se",
+ "name": "sami do norte"
+ },
+ "sg": {
+ "code": "sg",
+ "name": "sango"
+ },
+ "sbp": {
+ "code": "sbp",
+ "name": "sangu"
+ },
+ "seh": {
+ "code": "seh",
+ "name": "sena"
+ },
+ "sr": {
+ "code": "sr",
+ "name": "sérvio"
+ },
+ "ksb": {
+ "code": "ksb",
+ "name": "shambala"
+ },
+ "sn": {
+ "code": "sn",
+ "name": "shona"
+ },
+ "xog": {
+ "code": "xog",
+ "name": "soga"
+ },
+ "so": {
+ "code": "so",
+ "name": "somali"
+ },
+ "sw": {
+ "code": "sw",
+ "name": "suaíli"
+ },
+ "swc": {
+ "code": "swc",
+ "name": "suaíli do Congo"
+ },
+ "sv": {
+ "code": "sv",
+ "name": "sueco"
+ },
+ "shi": {
+ "code": "shi",
+ "name": "tachelhit"
+ },
+ "th": {
+ "code": "th",
+ "name": "tailandês"
+ },
+ "dav": {
+ "code": "dav",
+ "name": "taita"
+ },
+ "tzm": {
+ "code": "tzm",
+ "name": "tamazight do Atlas Central"
+ },
+ "zgh": {
+ "code": "zgh",
+ "name": "tamazight padrão de Marrocos"
+ },
+ "ta": {
+ "code": "ta",
+ "name": "tâmil"
+ },
+ "twq": {
+ "code": "twq",
+ "name": "tasawaq"
+ },
+ "te": {
+ "code": "te",
+ "name": "telugu"
+ },
+ "teo": {
+ "code": "teo",
+ "name": "teso"
+ },
+ "bo": {
+ "code": "bo",
+ "name": "tibetano"
+ },
+ "ti": {
+ "code": "ti",
+ "name": "tigrínia"
+ },
+ "to": {
+ "code": "to",
+ "name": "tonga"
+ },
+ "tr": {
+ "code": "tr",
+ "name": "turco"
+ },
+ "uk": {
+ "code": "uk",
+ "name": "ucraniano"
+ },
+ "ug": {
+ "code": "ug",
+ "name": "uigur"
+ },
+ "ur": {
+ "code": "ur",
+ "name": "urdu"
+ },
+ "uz": {
+ "code": "uz",
+ "name": "usbeque"
+ },
+ "vai": {
+ "code": "vai",
+ "name": "Vai"
+ },
+ "vi": {
+ "code": "vi",
+ "name": "vietnamita"
+ },
+ "vun": {
+ "code": "vun",
+ "name": "vunjo"
+ },
+ "wae": {
+ "code": "wae",
+ "name": "walser"
+ },
+ "yav": {
+ "code": "yav",
+ "name": "yangben"
+ },
+ "dje": {
+ "code": "dje",
+ "name": "zarma"
+ },
+ "zu": {
+ "code": "zu",
+ "name": "zulu"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/language/pt-CV.json b/library/intl/resources/language/pt-CV.json
new file mode 100644
index 000000000..44021eb46
--- /dev/null
+++ b/library/intl/resources/language/pt-CV.json
@@ -0,0 +1,738 @@
+{
+ "af": {
+ "code": "af",
+ "name": "africânder"
+ },
+ "agq": {
+ "code": "agq",
+ "name": "aghem"
+ },
+ "ak": {
+ "code": "ak",
+ "name": "akan"
+ },
+ "sq": {
+ "code": "sq",
+ "name": "albanês"
+ },
+ "de": {
+ "code": "de",
+ "name": "alemão"
+ },
+ "de-AT": {
+ "code": "de-AT",
+ "name": "alemão austríaco"
+ },
+ "gsw": {
+ "code": "gsw",
+ "name": "alemão suíço"
+ },
+ "de-CH": {
+ "code": "de-CH",
+ "name": "alto alemão suíço"
+ },
+ "hsb": {
+ "code": "hsb",
+ "name": "alto sórabio"
+ },
+ "am": {
+ "code": "am",
+ "name": "amárico"
+ },
+ "ar": {
+ "code": "ar",
+ "name": "árabe"
+ },
+ "ar-001": {
+ "code": "ar-001",
+ "name": "árabe moderno padrão"
+ },
+ "hy": {
+ "code": "hy",
+ "name": "arménio"
+ },
+ "ast": {
+ "code": "ast",
+ "name": "asturiano"
+ },
+ "asa": {
+ "code": "asa",
+ "name": "asu"
+ },
+ "az": {
+ "code": "az",
+ "name": "azerbaijano"
+ },
+ "ksf": {
+ "code": "ksf",
+ "name": "bafia"
+ },
+ "dsb": {
+ "code": "dsb",
+ "name": "baixo sórabio"
+ },
+ "bm": {
+ "code": "bm",
+ "name": "bambara"
+ },
+ "bas": {
+ "code": "bas",
+ "name": "basa"
+ },
+ "eu": {
+ "code": "eu",
+ "name": "basco"
+ },
+ "bez": {
+ "code": "bez",
+ "name": "bena"
+ },
+ "bn": {
+ "code": "bn",
+ "name": "bengali"
+ },
+ "be": {
+ "code": "be",
+ "name": "bielorrusso"
+ },
+ "my": {
+ "code": "my",
+ "name": "birmanês"
+ },
+ "brx": {
+ "code": "brx",
+ "name": "bodo"
+ },
+ "bs": {
+ "code": "bs",
+ "name": "bósnio"
+ },
+ "br": {
+ "code": "br",
+ "name": "bretão"
+ },
+ "bg": {
+ "code": "bg",
+ "name": "búlgaro"
+ },
+ "kea": {
+ "code": "kea",
+ "name": "cabo-verdiano"
+ },
+ "kn": {
+ "code": "kn",
+ "name": "canarim"
+ },
+ "ca": {
+ "code": "ca",
+ "name": "catalão"
+ },
+ "ks": {
+ "code": "ks",
+ "name": "caxemira"
+ },
+ "kk": {
+ "code": "kk",
+ "name": "cazaque"
+ },
+ "cs": {
+ "code": "cs",
+ "name": "checo"
+ },
+ "chr": {
+ "code": "chr",
+ "name": "cherokee"
+ },
+ "cgg": {
+ "code": "cgg",
+ "name": "chiga"
+ },
+ "zh": {
+ "code": "zh",
+ "name": "chinês"
+ },
+ "zh-Hans": {
+ "code": "zh-Hans",
+ "name": "chinês simplificado"
+ },
+ "zh-Hant": {
+ "code": "zh-Hant",
+ "name": "chinês tradicional"
+ },
+ "si": {
+ "code": "si",
+ "name": "cingalês"
+ },
+ "km": {
+ "code": "km",
+ "name": "cmer"
+ },
+ "ko": {
+ "code": "ko",
+ "name": "coreano"
+ },
+ "hr": {
+ "code": "hr",
+ "name": "croata"
+ },
+ "da": {
+ "code": "da",
+ "name": "dinamarquês"
+ },
+ "dz": {
+ "code": "dz",
+ "name": "dzonga"
+ },
+ "ebu": {
+ "code": "ebu",
+ "name": "embu"
+ },
+ "sk": {
+ "code": "sk",
+ "name": "eslovaco"
+ },
+ "sl": {
+ "code": "sl",
+ "name": "esloveno"
+ },
+ "es": {
+ "code": "es",
+ "name": "espanhol"
+ },
+ "es-MX": {
+ "code": "es-MX",
+ "name": "espanhol do México"
+ },
+ "es-ES": {
+ "code": "es-ES",
+ "name": "espanhol europeu"
+ },
+ "eo": {
+ "code": "eo",
+ "name": "esperanto"
+ },
+ "et": {
+ "code": "et",
+ "name": "estónio"
+ },
+ "ee": {
+ "code": "ee",
+ "name": "ewe"
+ },
+ "ewo": {
+ "code": "ewo",
+ "name": "ewondo"
+ },
+ "fo": {
+ "code": "fo",
+ "name": "feroês"
+ },
+ "fil": {
+ "code": "fil",
+ "name": "filipino"
+ },
+ "fi": {
+ "code": "fi",
+ "name": "finlandês"
+ },
+ "nl-BE": {
+ "code": "nl-BE",
+ "name": "flamengo"
+ },
+ "fr": {
+ "code": "fr",
+ "name": "francês"
+ },
+ "fr-CA": {
+ "code": "fr-CA",
+ "name": "francês canadiano"
+ },
+ "fr-CH": {
+ "code": "fr-CH",
+ "name": "francês suíço"
+ },
+ "fy": {
+ "code": "fy",
+ "name": "frísico ocidental"
+ },
+ "fur": {
+ "code": "fur",
+ "name": "friulano"
+ },
+ "ff": {
+ "code": "ff",
+ "name": "fula"
+ },
+ "gd": {
+ "code": "gd",
+ "name": "gaélico escocês"
+ },
+ "gl": {
+ "code": "gl",
+ "name": "galego"
+ },
+ "cy": {
+ "code": "cy",
+ "name": "galês"
+ },
+ "lg": {
+ "code": "lg",
+ "name": "ganda"
+ },
+ "ka": {
+ "code": "ka",
+ "name": "georgiano"
+ },
+ "el": {
+ "code": "el",
+ "name": "grego"
+ },
+ "kl": {
+ "code": "kl",
+ "name": "groenlandês"
+ },
+ "guz": {
+ "code": "guz",
+ "name": "gusii"
+ },
+ "gu": {
+ "code": "gu",
+ "name": "guzerate"
+ },
+ "ha": {
+ "code": "ha",
+ "name": "haúça"
+ },
+ "he": {
+ "code": "he",
+ "name": "hebraico"
+ },
+ "hi": {
+ "code": "hi",
+ "name": "hindi"
+ },
+ "nl": {
+ "code": "nl",
+ "name": "holandês"
+ },
+ "hu": {
+ "code": "hu",
+ "name": "húngaro"
+ },
+ "id": {
+ "code": "id",
+ "name": "indonésio"
+ },
+ "en": {
+ "code": "en",
+ "name": "inglês"
+ },
+ "en-US": {
+ "code": "en-US",
+ "name": "inglês americano"
+ },
+ "en-AU": {
+ "code": "en-AU",
+ "name": "inglês australiano"
+ },
+ "en-GB": {
+ "code": "en-GB",
+ "name": "inglês britânico"
+ },
+ "en-CA": {
+ "code": "en-CA",
+ "name": "inglês canadiano"
+ },
+ "yo": {
+ "code": "yo",
+ "name": "ioruba"
+ },
+ "ga": {
+ "code": "ga",
+ "name": "irlandês"
+ },
+ "is": {
+ "code": "is",
+ "name": "islandês"
+ },
+ "it": {
+ "code": "it",
+ "name": "italiano"
+ },
+ "ja": {
+ "code": "ja",
+ "name": "japonês"
+ },
+ "dyo": {
+ "code": "dyo",
+ "name": "jola-fonyi"
+ },
+ "kab": {
+ "code": "kab",
+ "name": "kabyle"
+ },
+ "kln": {
+ "code": "kln",
+ "name": "kalenjin"
+ },
+ "kam": {
+ "code": "kam",
+ "name": "kamba"
+ },
+ "ksh": {
+ "code": "ksh",
+ "name": "kölsch"
+ },
+ "khq": {
+ "code": "khq",
+ "name": "koyra chiini"
+ },
+ "ses": {
+ "code": "ses",
+ "name": "koyraboro senni"
+ },
+ "nmg": {
+ "code": "nmg",
+ "name": "kwasio"
+ },
+ "lag": {
+ "code": "lag",
+ "name": "langi"
+ },
+ "lo": {
+ "code": "lo",
+ "name": "laosiano"
+ },
+ "lv": {
+ "code": "lv",
+ "name": "letão"
+ },
+ "ln": {
+ "code": "ln",
+ "name": "lingala"
+ },
+ "lt": {
+ "code": "lt",
+ "name": "lituano"
+ },
+ "lu": {
+ "code": "lu",
+ "name": "luba-catanga"
+ },
+ "luo": {
+ "code": "luo",
+ "name": "Luo"
+ },
+ "lb": {
+ "code": "lb",
+ "name": "luxemburguês"
+ },
+ "luy": {
+ "code": "luy",
+ "name": "luyia"
+ },
+ "mk": {
+ "code": "mk",
+ "name": "macedónio"
+ },
+ "jmc": {
+ "code": "jmc",
+ "name": "machame"
+ },
+ "kde": {
+ "code": "kde",
+ "name": "maconde"
+ },
+ "mgh": {
+ "code": "mgh",
+ "name": "macua"
+ },
+ "ml": {
+ "code": "ml",
+ "name": "malaiala"
+ },
+ "ms": {
+ "code": "ms",
+ "name": "malaio"
+ },
+ "mg": {
+ "code": "mg",
+ "name": "malgaxe"
+ },
+ "mt": {
+ "code": "mt",
+ "name": "maltês"
+ },
+ "mr": {
+ "code": "mr",
+ "name": "marata"
+ },
+ "mas": {
+ "code": "mas",
+ "name": "massai"
+ },
+ "mer": {
+ "code": "mer",
+ "name": "meru"
+ },
+ "ro-MD": {
+ "code": "ro-MD",
+ "name": "moldávio"
+ },
+ "mn": {
+ "code": "mn",
+ "name": "mongol"
+ },
+ "mfe": {
+ "code": "mfe",
+ "name": "morisyen"
+ },
+ "mua": {
+ "code": "mua",
+ "name": "mundang"
+ },
+ "naq": {
+ "code": "naq",
+ "name": "nama"
+ },
+ "nd": {
+ "code": "nd",
+ "name": "ndebele do norte"
+ },
+ "ne": {
+ "code": "ne",
+ "name": "nepali"
+ },
+ "jgo": {
+ "code": "jgo",
+ "name": "nguemba"
+ },
+ "nb": {
+ "code": "nb",
+ "name": "norueguês bokmål"
+ },
+ "nn": {
+ "code": "nn",
+ "name": "norueguês nynorsk"
+ },
+ "nus": {
+ "code": "nus",
+ "name": "nuer"
+ },
+ "nyn": {
+ "code": "nyn",
+ "name": "nyankole"
+ },
+ "or": {
+ "code": "or",
+ "name": "oriya"
+ },
+ "pa": {
+ "code": "pa",
+ "name": "panjabi"
+ },
+ "ps": {
+ "code": "ps",
+ "name": "pastó"
+ },
+ "fa": {
+ "code": "fa",
+ "name": "persa"
+ },
+ "pl": {
+ "code": "pl",
+ "name": "polaco"
+ },
+ "pt": {
+ "code": "pt",
+ "name": "português"
+ },
+ "pt-BR": {
+ "code": "pt-BR",
+ "name": "português do Brasil"
+ },
+ "pt-PT": {
+ "code": "pt-PT",
+ "name": "português europeu"
+ },
+ "ki": {
+ "code": "ki",
+ "name": "quicuio"
+ },
+ "ky": {
+ "code": "ky",
+ "name": "quirguiz"
+ },
+ "rm": {
+ "code": "rm",
+ "name": "romanche"
+ },
+ "rof": {
+ "code": "rof",
+ "name": "rombo"
+ },
+ "ro": {
+ "code": "ro",
+ "name": "romeno"
+ },
+ "rn": {
+ "code": "rn",
+ "name": "rundi"
+ },
+ "ru": {
+ "code": "ru",
+ "name": "russo"
+ },
+ "rwk": {
+ "code": "rwk",
+ "name": "rwa"
+ },
+ "saq": {
+ "code": "saq",
+ "name": "samburu"
+ },
+ "se": {
+ "code": "se",
+ "name": "sami do norte"
+ },
+ "sg": {
+ "code": "sg",
+ "name": "sango"
+ },
+ "sbp": {
+ "code": "sbp",
+ "name": "sangu"
+ },
+ "seh": {
+ "code": "seh",
+ "name": "sena"
+ },
+ "sr": {
+ "code": "sr",
+ "name": "sérvio"
+ },
+ "ksb": {
+ "code": "ksb",
+ "name": "shambala"
+ },
+ "sn": {
+ "code": "sn",
+ "name": "shona"
+ },
+ "xog": {
+ "code": "xog",
+ "name": "soga"
+ },
+ "so": {
+ "code": "so",
+ "name": "somali"
+ },
+ "sw": {
+ "code": "sw",
+ "name": "suaíli"
+ },
+ "swc": {
+ "code": "swc",
+ "name": "suaíli do Congo"
+ },
+ "sv": {
+ "code": "sv",
+ "name": "sueco"
+ },
+ "shi": {
+ "code": "shi",
+ "name": "tachelhit"
+ },
+ "th": {
+ "code": "th",
+ "name": "tailandês"
+ },
+ "dav": {
+ "code": "dav",
+ "name": "taita"
+ },
+ "tzm": {
+ "code": "tzm",
+ "name": "tamazight do Atlas Central"
+ },
+ "zgh": {
+ "code": "zgh",
+ "name": "tamazight padrão de Marrocos"
+ },
+ "ta": {
+ "code": "ta",
+ "name": "tâmil"
+ },
+ "twq": {
+ "code": "twq",
+ "name": "tasawaq"
+ },
+ "te": {
+ "code": "te",
+ "name": "telugu"
+ },
+ "teo": {
+ "code": "teo",
+ "name": "teso"
+ },
+ "bo": {
+ "code": "bo",
+ "name": "tibetano"
+ },
+ "ti": {
+ "code": "ti",
+ "name": "tigrínia"
+ },
+ "to": {
+ "code": "to",
+ "name": "tonga"
+ },
+ "tr": {
+ "code": "tr",
+ "name": "turco"
+ },
+ "uk": {
+ "code": "uk",
+ "name": "ucraniano"
+ },
+ "ug": {
+ "code": "ug",
+ "name": "uigur"
+ },
+ "ur": {
+ "code": "ur",
+ "name": "urdu"
+ },
+ "uz": {
+ "code": "uz",
+ "name": "usbeque"
+ },
+ "vai": {
+ "code": "vai",
+ "name": "Vai"
+ },
+ "vi": {
+ "code": "vi",
+ "name": "vietnamita"
+ },
+ "vun": {
+ "code": "vun",
+ "name": "vunjo"
+ },
+ "wae": {
+ "code": "wae",
+ "name": "walser"
+ },
+ "yav": {
+ "code": "yav",
+ "name": "yangben"
+ },
+ "dje": {
+ "code": "dje",
+ "name": "zarma"
+ },
+ "zu": {
+ "code": "zu",
+ "name": "zulu"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/language/pt-GW.json b/library/intl/resources/language/pt-GW.json
new file mode 100644
index 000000000..44021eb46
--- /dev/null
+++ b/library/intl/resources/language/pt-GW.json
@@ -0,0 +1,738 @@
+{
+ "af": {
+ "code": "af",
+ "name": "africânder"
+ },
+ "agq": {
+ "code": "agq",
+ "name": "aghem"
+ },
+ "ak": {
+ "code": "ak",
+ "name": "akan"
+ },
+ "sq": {
+ "code": "sq",
+ "name": "albanês"
+ },
+ "de": {
+ "code": "de",
+ "name": "alemão"
+ },
+ "de-AT": {
+ "code": "de-AT",
+ "name": "alemão austríaco"
+ },
+ "gsw": {
+ "code": "gsw",
+ "name": "alemão suíço"
+ },
+ "de-CH": {
+ "code": "de-CH",
+ "name": "alto alemão suíço"
+ },
+ "hsb": {
+ "code": "hsb",
+ "name": "alto sórabio"
+ },
+ "am": {
+ "code": "am",
+ "name": "amárico"
+ },
+ "ar": {
+ "code": "ar",
+ "name": "árabe"
+ },
+ "ar-001": {
+ "code": "ar-001",
+ "name": "árabe moderno padrão"
+ },
+ "hy": {
+ "code": "hy",
+ "name": "arménio"
+ },
+ "ast": {
+ "code": "ast",
+ "name": "asturiano"
+ },
+ "asa": {
+ "code": "asa",
+ "name": "asu"
+ },
+ "az": {
+ "code": "az",
+ "name": "azerbaijano"
+ },
+ "ksf": {
+ "code": "ksf",
+ "name": "bafia"
+ },
+ "dsb": {
+ "code": "dsb",
+ "name": "baixo sórabio"
+ },
+ "bm": {
+ "code": "bm",
+ "name": "bambara"
+ },
+ "bas": {
+ "code": "bas",
+ "name": "basa"
+ },
+ "eu": {
+ "code": "eu",
+ "name": "basco"
+ },
+ "bez": {
+ "code": "bez",
+ "name": "bena"
+ },
+ "bn": {
+ "code": "bn",
+ "name": "bengali"
+ },
+ "be": {
+ "code": "be",
+ "name": "bielorrusso"
+ },
+ "my": {
+ "code": "my",
+ "name": "birmanês"
+ },
+ "brx": {
+ "code": "brx",
+ "name": "bodo"
+ },
+ "bs": {
+ "code": "bs",
+ "name": "bósnio"
+ },
+ "br": {
+ "code": "br",
+ "name": "bretão"
+ },
+ "bg": {
+ "code": "bg",
+ "name": "búlgaro"
+ },
+ "kea": {
+ "code": "kea",
+ "name": "cabo-verdiano"
+ },
+ "kn": {
+ "code": "kn",
+ "name": "canarim"
+ },
+ "ca": {
+ "code": "ca",
+ "name": "catalão"
+ },
+ "ks": {
+ "code": "ks",
+ "name": "caxemira"
+ },
+ "kk": {
+ "code": "kk",
+ "name": "cazaque"
+ },
+ "cs": {
+ "code": "cs",
+ "name": "checo"
+ },
+ "chr": {
+ "code": "chr",
+ "name": "cherokee"
+ },
+ "cgg": {
+ "code": "cgg",
+ "name": "chiga"
+ },
+ "zh": {
+ "code": "zh",
+ "name": "chinês"
+ },
+ "zh-Hans": {
+ "code": "zh-Hans",
+ "name": "chinês simplificado"
+ },
+ "zh-Hant": {
+ "code": "zh-Hant",
+ "name": "chinês tradicional"
+ },
+ "si": {
+ "code": "si",
+ "name": "cingalês"
+ },
+ "km": {
+ "code": "km",
+ "name": "cmer"
+ },
+ "ko": {
+ "code": "ko",
+ "name": "coreano"
+ },
+ "hr": {
+ "code": "hr",
+ "name": "croata"
+ },
+ "da": {
+ "code": "da",
+ "name": "dinamarquês"
+ },
+ "dz": {
+ "code": "dz",
+ "name": "dzonga"
+ },
+ "ebu": {
+ "code": "ebu",
+ "name": "embu"
+ },
+ "sk": {
+ "code": "sk",
+ "name": "eslovaco"
+ },
+ "sl": {
+ "code": "sl",
+ "name": "esloveno"
+ },
+ "es": {
+ "code": "es",
+ "name": "espanhol"
+ },
+ "es-MX": {
+ "code": "es-MX",
+ "name": "espanhol do México"
+ },
+ "es-ES": {
+ "code": "es-ES",
+ "name": "espanhol europeu"
+ },
+ "eo": {
+ "code": "eo",
+ "name": "esperanto"
+ },
+ "et": {
+ "code": "et",
+ "name": "estónio"
+ },
+ "ee": {
+ "code": "ee",
+ "name": "ewe"
+ },
+ "ewo": {
+ "code": "ewo",
+ "name": "ewondo"
+ },
+ "fo": {
+ "code": "fo",
+ "name": "feroês"
+ },
+ "fil": {
+ "code": "fil",
+ "name": "filipino"
+ },
+ "fi": {
+ "code": "fi",
+ "name": "finlandês"
+ },
+ "nl-BE": {
+ "code": "nl-BE",
+ "name": "flamengo"
+ },
+ "fr": {
+ "code": "fr",
+ "name": "francês"
+ },
+ "fr-CA": {
+ "code": "fr-CA",
+ "name": "francês canadiano"
+ },
+ "fr-CH": {
+ "code": "fr-CH",
+ "name": "francês suíço"
+ },
+ "fy": {
+ "code": "fy",
+ "name": "frísico ocidental"
+ },
+ "fur": {
+ "code": "fur",
+ "name": "friulano"
+ },
+ "ff": {
+ "code": "ff",
+ "name": "fula"
+ },
+ "gd": {
+ "code": "gd",
+ "name": "gaélico escocês"
+ },
+ "gl": {
+ "code": "gl",
+ "name": "galego"
+ },
+ "cy": {
+ "code": "cy",
+ "name": "galês"
+ },
+ "lg": {
+ "code": "lg",
+ "name": "ganda"
+ },
+ "ka": {
+ "code": "ka",
+ "name": "georgiano"
+ },
+ "el": {
+ "code": "el",
+ "name": "grego"
+ },
+ "kl": {
+ "code": "kl",
+ "name": "groenlandês"
+ },
+ "guz": {
+ "code": "guz",
+ "name": "gusii"
+ },
+ "gu": {
+ "code": "gu",
+ "name": "guzerate"
+ },
+ "ha": {
+ "code": "ha",
+ "name": "haúça"
+ },
+ "he": {
+ "code": "he",
+ "name": "hebraico"
+ },
+ "hi": {
+ "code": "hi",
+ "name": "hindi"
+ },
+ "nl": {
+ "code": "nl",
+ "name": "holandês"
+ },
+ "hu": {
+ "code": "hu",
+ "name": "húngaro"
+ },
+ "id": {
+ "code": "id",
+ "name": "indonésio"
+ },
+ "en": {
+ "code": "en",
+ "name": "inglês"
+ },
+ "en-US": {
+ "code": "en-US",
+ "name": "inglês americano"
+ },
+ "en-AU": {
+ "code": "en-AU",
+ "name": "inglês australiano"
+ },
+ "en-GB": {
+ "code": "en-GB",
+ "name": "inglês britânico"
+ },
+ "en-CA": {
+ "code": "en-CA",
+ "name": "inglês canadiano"
+ },
+ "yo": {
+ "code": "yo",
+ "name": "ioruba"
+ },
+ "ga": {
+ "code": "ga",
+ "name": "irlandês"
+ },
+ "is": {
+ "code": "is",
+ "name": "islandês"
+ },
+ "it": {
+ "code": "it",
+ "name": "italiano"
+ },
+ "ja": {
+ "code": "ja",
+ "name": "japonês"
+ },
+ "dyo": {
+ "code": "dyo",
+ "name": "jola-fonyi"
+ },
+ "kab": {
+ "code": "kab",
+ "name": "kabyle"
+ },
+ "kln": {
+ "code": "kln",
+ "name": "kalenjin"
+ },
+ "kam": {
+ "code": "kam",
+ "name": "kamba"
+ },
+ "ksh": {
+ "code": "ksh",
+ "name": "kölsch"
+ },
+ "khq": {
+ "code": "khq",
+ "name": "koyra chiini"
+ },
+ "ses": {
+ "code": "ses",
+ "name": "koyraboro senni"
+ },
+ "nmg": {
+ "code": "nmg",
+ "name": "kwasio"
+ },
+ "lag": {
+ "code": "lag",
+ "name": "langi"
+ },
+ "lo": {
+ "code": "lo",
+ "name": "laosiano"
+ },
+ "lv": {
+ "code": "lv",
+ "name": "letão"
+ },
+ "ln": {
+ "code": "ln",
+ "name": "lingala"
+ },
+ "lt": {
+ "code": "lt",
+ "name": "lituano"
+ },
+ "lu": {
+ "code": "lu",
+ "name": "luba-catanga"
+ },
+ "luo": {
+ "code": "luo",
+ "name": "Luo"
+ },
+ "lb": {
+ "code": "lb",
+ "name": "luxemburguês"
+ },
+ "luy": {
+ "code": "luy",
+ "name": "luyia"
+ },
+ "mk": {
+ "code": "mk",
+ "name": "macedónio"
+ },
+ "jmc": {
+ "code": "jmc",
+ "name": "machame"
+ },
+ "kde": {
+ "code": "kde",
+ "name": "maconde"
+ },
+ "mgh": {
+ "code": "mgh",
+ "name": "macua"
+ },
+ "ml": {
+ "code": "ml",
+ "name": "malaiala"
+ },
+ "ms": {
+ "code": "ms",
+ "name": "malaio"
+ },
+ "mg": {
+ "code": "mg",
+ "name": "malgaxe"
+ },
+ "mt": {
+ "code": "mt",
+ "name": "maltês"
+ },
+ "mr": {
+ "code": "mr",
+ "name": "marata"
+ },
+ "mas": {
+ "code": "mas",
+ "name": "massai"
+ },
+ "mer": {
+ "code": "mer",
+ "name": "meru"
+ },
+ "ro-MD": {
+ "code": "ro-MD",
+ "name": "moldávio"
+ },
+ "mn": {
+ "code": "mn",
+ "name": "mongol"
+ },
+ "mfe": {
+ "code": "mfe",
+ "name": "morisyen"
+ },
+ "mua": {
+ "code": "mua",
+ "name": "mundang"
+ },
+ "naq": {
+ "code": "naq",
+ "name": "nama"
+ },
+ "nd": {
+ "code": "nd",
+ "name": "ndebele do norte"
+ },
+ "ne": {
+ "code": "ne",
+ "name": "nepali"
+ },
+ "jgo": {
+ "code": "jgo",
+ "name": "nguemba"
+ },
+ "nb": {
+ "code": "nb",
+ "name": "norueguês bokmål"
+ },
+ "nn": {
+ "code": "nn",
+ "name": "norueguês nynorsk"
+ },
+ "nus": {
+ "code": "nus",
+ "name": "nuer"
+ },
+ "nyn": {
+ "code": "nyn",
+ "name": "nyankole"
+ },
+ "or": {
+ "code": "or",
+ "name": "oriya"
+ },
+ "pa": {
+ "code": "pa",
+ "name": "panjabi"
+ },
+ "ps": {
+ "code": "ps",
+ "name": "pastó"
+ },
+ "fa": {
+ "code": "fa",
+ "name": "persa"
+ },
+ "pl": {
+ "code": "pl",
+ "name": "polaco"
+ },
+ "pt": {
+ "code": "pt",
+ "name": "português"
+ },
+ "pt-BR": {
+ "code": "pt-BR",
+ "name": "português do Brasil"
+ },
+ "pt-PT": {
+ "code": "pt-PT",
+ "name": "português europeu"
+ },
+ "ki": {
+ "code": "ki",
+ "name": "quicuio"
+ },
+ "ky": {
+ "code": "ky",
+ "name": "quirguiz"
+ },
+ "rm": {
+ "code": "rm",
+ "name": "romanche"
+ },
+ "rof": {
+ "code": "rof",
+ "name": "rombo"
+ },
+ "ro": {
+ "code": "ro",
+ "name": "romeno"
+ },
+ "rn": {
+ "code": "rn",
+ "name": "rundi"
+ },
+ "ru": {
+ "code": "ru",
+ "name": "russo"
+ },
+ "rwk": {
+ "code": "rwk",
+ "name": "rwa"
+ },
+ "saq": {
+ "code": "saq",
+ "name": "samburu"
+ },
+ "se": {
+ "code": "se",
+ "name": "sami do norte"
+ },
+ "sg": {
+ "code": "sg",
+ "name": "sango"
+ },
+ "sbp": {
+ "code": "sbp",
+ "name": "sangu"
+ },
+ "seh": {
+ "code": "seh",
+ "name": "sena"
+ },
+ "sr": {
+ "code": "sr",
+ "name": "sérvio"
+ },
+ "ksb": {
+ "code": "ksb",
+ "name": "shambala"
+ },
+ "sn": {
+ "code": "sn",
+ "name": "shona"
+ },
+ "xog": {
+ "code": "xog",
+ "name": "soga"
+ },
+ "so": {
+ "code": "so",
+ "name": "somali"
+ },
+ "sw": {
+ "code": "sw",
+ "name": "suaíli"
+ },
+ "swc": {
+ "code": "swc",
+ "name": "suaíli do Congo"
+ },
+ "sv": {
+ "code": "sv",
+ "name": "sueco"
+ },
+ "shi": {
+ "code": "shi",
+ "name": "tachelhit"
+ },
+ "th": {
+ "code": "th",
+ "name": "tailandês"
+ },
+ "dav": {
+ "code": "dav",
+ "name": "taita"
+ },
+ "tzm": {
+ "code": "tzm",
+ "name": "tamazight do Atlas Central"
+ },
+ "zgh": {
+ "code": "zgh",
+ "name": "tamazight padrão de Marrocos"
+ },
+ "ta": {
+ "code": "ta",
+ "name": "tâmil"
+ },
+ "twq": {
+ "code": "twq",
+ "name": "tasawaq"
+ },
+ "te": {
+ "code": "te",
+ "name": "telugu"
+ },
+ "teo": {
+ "code": "teo",
+ "name": "teso"
+ },
+ "bo": {
+ "code": "bo",
+ "name": "tibetano"
+ },
+ "ti": {
+ "code": "ti",
+ "name": "tigrínia"
+ },
+ "to": {
+ "code": "to",
+ "name": "tonga"
+ },
+ "tr": {
+ "code": "tr",
+ "name": "turco"
+ },
+ "uk": {
+ "code": "uk",
+ "name": "ucraniano"
+ },
+ "ug": {
+ "code": "ug",
+ "name": "uigur"
+ },
+ "ur": {
+ "code": "ur",
+ "name": "urdu"
+ },
+ "uz": {
+ "code": "uz",
+ "name": "usbeque"
+ },
+ "vai": {
+ "code": "vai",
+ "name": "Vai"
+ },
+ "vi": {
+ "code": "vi",
+ "name": "vietnamita"
+ },
+ "vun": {
+ "code": "vun",
+ "name": "vunjo"
+ },
+ "wae": {
+ "code": "wae",
+ "name": "walser"
+ },
+ "yav": {
+ "code": "yav",
+ "name": "yangben"
+ },
+ "dje": {
+ "code": "dje",
+ "name": "zarma"
+ },
+ "zu": {
+ "code": "zu",
+ "name": "zulu"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/language/pt-MO.json b/library/intl/resources/language/pt-MO.json
new file mode 100644
index 000000000..44021eb46
--- /dev/null
+++ b/library/intl/resources/language/pt-MO.json
@@ -0,0 +1,738 @@
+{
+ "af": {
+ "code": "af",
+ "name": "africânder"
+ },
+ "agq": {
+ "code": "agq",
+ "name": "aghem"
+ },
+ "ak": {
+ "code": "ak",
+ "name": "akan"
+ },
+ "sq": {
+ "code": "sq",
+ "name": "albanês"
+ },
+ "de": {
+ "code": "de",
+ "name": "alemão"
+ },
+ "de-AT": {
+ "code": "de-AT",
+ "name": "alemão austríaco"
+ },
+ "gsw": {
+ "code": "gsw",
+ "name": "alemão suíço"
+ },
+ "de-CH": {
+ "code": "de-CH",
+ "name": "alto alemão suíço"
+ },
+ "hsb": {
+ "code": "hsb",
+ "name": "alto sórabio"
+ },
+ "am": {
+ "code": "am",
+ "name": "amárico"
+ },
+ "ar": {
+ "code": "ar",
+ "name": "árabe"
+ },
+ "ar-001": {
+ "code": "ar-001",
+ "name": "árabe moderno padrão"
+ },
+ "hy": {
+ "code": "hy",
+ "name": "arménio"
+ },
+ "ast": {
+ "code": "ast",
+ "name": "asturiano"
+ },
+ "asa": {
+ "code": "asa",
+ "name": "asu"
+ },
+ "az": {
+ "code": "az",
+ "name": "azerbaijano"
+ },
+ "ksf": {
+ "code": "ksf",
+ "name": "bafia"
+ },
+ "dsb": {
+ "code": "dsb",
+ "name": "baixo sórabio"
+ },
+ "bm": {
+ "code": "bm",
+ "name": "bambara"
+ },
+ "bas": {
+ "code": "bas",
+ "name": "basa"
+ },
+ "eu": {
+ "code": "eu",
+ "name": "basco"
+ },
+ "bez": {
+ "code": "bez",
+ "name": "bena"
+ },
+ "bn": {
+ "code": "bn",
+ "name": "bengali"
+ },
+ "be": {
+ "code": "be",
+ "name": "bielorrusso"
+ },
+ "my": {
+ "code": "my",
+ "name": "birmanês"
+ },
+ "brx": {
+ "code": "brx",
+ "name": "bodo"
+ },
+ "bs": {
+ "code": "bs",
+ "name": "bósnio"
+ },
+ "br": {
+ "code": "br",
+ "name": "bretão"
+ },
+ "bg": {
+ "code": "bg",
+ "name": "búlgaro"
+ },
+ "kea": {
+ "code": "kea",
+ "name": "cabo-verdiano"
+ },
+ "kn": {
+ "code": "kn",
+ "name": "canarim"
+ },
+ "ca": {
+ "code": "ca",
+ "name": "catalão"
+ },
+ "ks": {
+ "code": "ks",
+ "name": "caxemira"
+ },
+ "kk": {
+ "code": "kk",
+ "name": "cazaque"
+ },
+ "cs": {
+ "code": "cs",
+ "name": "checo"
+ },
+ "chr": {
+ "code": "chr",
+ "name": "cherokee"
+ },
+ "cgg": {
+ "code": "cgg",
+ "name": "chiga"
+ },
+ "zh": {
+ "code": "zh",
+ "name": "chinês"
+ },
+ "zh-Hans": {
+ "code": "zh-Hans",
+ "name": "chinês simplificado"
+ },
+ "zh-Hant": {
+ "code": "zh-Hant",
+ "name": "chinês tradicional"
+ },
+ "si": {
+ "code": "si",
+ "name": "cingalês"
+ },
+ "km": {
+ "code": "km",
+ "name": "cmer"
+ },
+ "ko": {
+ "code": "ko",
+ "name": "coreano"
+ },
+ "hr": {
+ "code": "hr",
+ "name": "croata"
+ },
+ "da": {
+ "code": "da",
+ "name": "dinamarquês"
+ },
+ "dz": {
+ "code": "dz",
+ "name": "dzonga"
+ },
+ "ebu": {
+ "code": "ebu",
+ "name": "embu"
+ },
+ "sk": {
+ "code": "sk",
+ "name": "eslovaco"
+ },
+ "sl": {
+ "code": "sl",
+ "name": "esloveno"
+ },
+ "es": {
+ "code": "es",
+ "name": "espanhol"
+ },
+ "es-MX": {
+ "code": "es-MX",
+ "name": "espanhol do México"
+ },
+ "es-ES": {
+ "code": "es-ES",
+ "name": "espanhol europeu"
+ },
+ "eo": {
+ "code": "eo",
+ "name": "esperanto"
+ },
+ "et": {
+ "code": "et",
+ "name": "estónio"
+ },
+ "ee": {
+ "code": "ee",
+ "name": "ewe"
+ },
+ "ewo": {
+ "code": "ewo",
+ "name": "ewondo"
+ },
+ "fo": {
+ "code": "fo",
+ "name": "feroês"
+ },
+ "fil": {
+ "code": "fil",
+ "name": "filipino"
+ },
+ "fi": {
+ "code": "fi",
+ "name": "finlandês"
+ },
+ "nl-BE": {
+ "code": "nl-BE",
+ "name": "flamengo"
+ },
+ "fr": {
+ "code": "fr",
+ "name": "francês"
+ },
+ "fr-CA": {
+ "code": "fr-CA",
+ "name": "francês canadiano"
+ },
+ "fr-CH": {
+ "code": "fr-CH",
+ "name": "francês suíço"
+ },
+ "fy": {
+ "code": "fy",
+ "name": "frísico ocidental"
+ },
+ "fur": {
+ "code": "fur",
+ "name": "friulano"
+ },
+ "ff": {
+ "code": "ff",
+ "name": "fula"
+ },
+ "gd": {
+ "code": "gd",
+ "name": "gaélico escocês"
+ },
+ "gl": {
+ "code": "gl",
+ "name": "galego"
+ },
+ "cy": {
+ "code": "cy",
+ "name": "galês"
+ },
+ "lg": {
+ "code": "lg",
+ "name": "ganda"
+ },
+ "ka": {
+ "code": "ka",
+ "name": "georgiano"
+ },
+ "el": {
+ "code": "el",
+ "name": "grego"
+ },
+ "kl": {
+ "code": "kl",
+ "name": "groenlandês"
+ },
+ "guz": {
+ "code": "guz",
+ "name": "gusii"
+ },
+ "gu": {
+ "code": "gu",
+ "name": "guzerate"
+ },
+ "ha": {
+ "code": "ha",
+ "name": "haúça"
+ },
+ "he": {
+ "code": "he",
+ "name": "hebraico"
+ },
+ "hi": {
+ "code": "hi",
+ "name": "hindi"
+ },
+ "nl": {
+ "code": "nl",
+ "name": "holandês"
+ },
+ "hu": {
+ "code": "hu",
+ "name": "húngaro"
+ },
+ "id": {
+ "code": "id",
+ "name": "indonésio"
+ },
+ "en": {
+ "code": "en",
+ "name": "inglês"
+ },
+ "en-US": {
+ "code": "en-US",
+ "name": "inglês americano"
+ },
+ "en-AU": {
+ "code": "en-AU",
+ "name": "inglês australiano"
+ },
+ "en-GB": {
+ "code": "en-GB",
+ "name": "inglês britânico"
+ },
+ "en-CA": {
+ "code": "en-CA",
+ "name": "inglês canadiano"
+ },
+ "yo": {
+ "code": "yo",
+ "name": "ioruba"
+ },
+ "ga": {
+ "code": "ga",
+ "name": "irlandês"
+ },
+ "is": {
+ "code": "is",
+ "name": "islandês"
+ },
+ "it": {
+ "code": "it",
+ "name": "italiano"
+ },
+ "ja": {
+ "code": "ja",
+ "name": "japonês"
+ },
+ "dyo": {
+ "code": "dyo",
+ "name": "jola-fonyi"
+ },
+ "kab": {
+ "code": "kab",
+ "name": "kabyle"
+ },
+ "kln": {
+ "code": "kln",
+ "name": "kalenjin"
+ },
+ "kam": {
+ "code": "kam",
+ "name": "kamba"
+ },
+ "ksh": {
+ "code": "ksh",
+ "name": "kölsch"
+ },
+ "khq": {
+ "code": "khq",
+ "name": "koyra chiini"
+ },
+ "ses": {
+ "code": "ses",
+ "name": "koyraboro senni"
+ },
+ "nmg": {
+ "code": "nmg",
+ "name": "kwasio"
+ },
+ "lag": {
+ "code": "lag",
+ "name": "langi"
+ },
+ "lo": {
+ "code": "lo",
+ "name": "laosiano"
+ },
+ "lv": {
+ "code": "lv",
+ "name": "letão"
+ },
+ "ln": {
+ "code": "ln",
+ "name": "lingala"
+ },
+ "lt": {
+ "code": "lt",
+ "name": "lituano"
+ },
+ "lu": {
+ "code": "lu",
+ "name": "luba-catanga"
+ },
+ "luo": {
+ "code": "luo",
+ "name": "Luo"
+ },
+ "lb": {
+ "code": "lb",
+ "name": "luxemburguês"
+ },
+ "luy": {
+ "code": "luy",
+ "name": "luyia"
+ },
+ "mk": {
+ "code": "mk",
+ "name": "macedónio"
+ },
+ "jmc": {
+ "code": "jmc",
+ "name": "machame"
+ },
+ "kde": {
+ "code": "kde",
+ "name": "maconde"
+ },
+ "mgh": {
+ "code": "mgh",
+ "name": "macua"
+ },
+ "ml": {
+ "code": "ml",
+ "name": "malaiala"
+ },
+ "ms": {
+ "code": "ms",
+ "name": "malaio"
+ },
+ "mg": {
+ "code": "mg",
+ "name": "malgaxe"
+ },
+ "mt": {
+ "code": "mt",
+ "name": "maltês"
+ },
+ "mr": {
+ "code": "mr",
+ "name": "marata"
+ },
+ "mas": {
+ "code": "mas",
+ "name": "massai"
+ },
+ "mer": {
+ "code": "mer",
+ "name": "meru"
+ },
+ "ro-MD": {
+ "code": "ro-MD",
+ "name": "moldávio"
+ },
+ "mn": {
+ "code": "mn",
+ "name": "mongol"
+ },
+ "mfe": {
+ "code": "mfe",
+ "name": "morisyen"
+ },
+ "mua": {
+ "code": "mua",
+ "name": "mundang"
+ },
+ "naq": {
+ "code": "naq",
+ "name": "nama"
+ },
+ "nd": {
+ "code": "nd",
+ "name": "ndebele do norte"
+ },
+ "ne": {
+ "code": "ne",
+ "name": "nepali"
+ },
+ "jgo": {
+ "code": "jgo",
+ "name": "nguemba"
+ },
+ "nb": {
+ "code": "nb",
+ "name": "norueguês bokmål"
+ },
+ "nn": {
+ "code": "nn",
+ "name": "norueguês nynorsk"
+ },
+ "nus": {
+ "code": "nus",
+ "name": "nuer"
+ },
+ "nyn": {
+ "code": "nyn",
+ "name": "nyankole"
+ },
+ "or": {
+ "code": "or",
+ "name": "oriya"
+ },
+ "pa": {
+ "code": "pa",
+ "name": "panjabi"
+ },
+ "ps": {
+ "code": "ps",
+ "name": "pastó"
+ },
+ "fa": {
+ "code": "fa",
+ "name": "persa"
+ },
+ "pl": {
+ "code": "pl",
+ "name": "polaco"
+ },
+ "pt": {
+ "code": "pt",
+ "name": "português"
+ },
+ "pt-BR": {
+ "code": "pt-BR",
+ "name": "português do Brasil"
+ },
+ "pt-PT": {
+ "code": "pt-PT",
+ "name": "português europeu"
+ },
+ "ki": {
+ "code": "ki",
+ "name": "quicuio"
+ },
+ "ky": {
+ "code": "ky",
+ "name": "quirguiz"
+ },
+ "rm": {
+ "code": "rm",
+ "name": "romanche"
+ },
+ "rof": {
+ "code": "rof",
+ "name": "rombo"
+ },
+ "ro": {
+ "code": "ro",
+ "name": "romeno"
+ },
+ "rn": {
+ "code": "rn",
+ "name": "rundi"
+ },
+ "ru": {
+ "code": "ru",
+ "name": "russo"
+ },
+ "rwk": {
+ "code": "rwk",
+ "name": "rwa"
+ },
+ "saq": {
+ "code": "saq",
+ "name": "samburu"
+ },
+ "se": {
+ "code": "se",
+ "name": "sami do norte"
+ },
+ "sg": {
+ "code": "sg",
+ "name": "sango"
+ },
+ "sbp": {
+ "code": "sbp",
+ "name": "sangu"
+ },
+ "seh": {
+ "code": "seh",
+ "name": "sena"
+ },
+ "sr": {
+ "code": "sr",
+ "name": "sérvio"
+ },
+ "ksb": {
+ "code": "ksb",
+ "name": "shambala"
+ },
+ "sn": {
+ "code": "sn",
+ "name": "shona"
+ },
+ "xog": {
+ "code": "xog",
+ "name": "soga"
+ },
+ "so": {
+ "code": "so",
+ "name": "somali"
+ },
+ "sw": {
+ "code": "sw",
+ "name": "suaíli"
+ },
+ "swc": {
+ "code": "swc",
+ "name": "suaíli do Congo"
+ },
+ "sv": {
+ "code": "sv",
+ "name": "sueco"
+ },
+ "shi": {
+ "code": "shi",
+ "name": "tachelhit"
+ },
+ "th": {
+ "code": "th",
+ "name": "tailandês"
+ },
+ "dav": {
+ "code": "dav",
+ "name": "taita"
+ },
+ "tzm": {
+ "code": "tzm",
+ "name": "tamazight do Atlas Central"
+ },
+ "zgh": {
+ "code": "zgh",
+ "name": "tamazight padrão de Marrocos"
+ },
+ "ta": {
+ "code": "ta",
+ "name": "tâmil"
+ },
+ "twq": {
+ "code": "twq",
+ "name": "tasawaq"
+ },
+ "te": {
+ "code": "te",
+ "name": "telugu"
+ },
+ "teo": {
+ "code": "teo",
+ "name": "teso"
+ },
+ "bo": {
+ "code": "bo",
+ "name": "tibetano"
+ },
+ "ti": {
+ "code": "ti",
+ "name": "tigrínia"
+ },
+ "to": {
+ "code": "to",
+ "name": "tonga"
+ },
+ "tr": {
+ "code": "tr",
+ "name": "turco"
+ },
+ "uk": {
+ "code": "uk",
+ "name": "ucraniano"
+ },
+ "ug": {
+ "code": "ug",
+ "name": "uigur"
+ },
+ "ur": {
+ "code": "ur",
+ "name": "urdu"
+ },
+ "uz": {
+ "code": "uz",
+ "name": "usbeque"
+ },
+ "vai": {
+ "code": "vai",
+ "name": "Vai"
+ },
+ "vi": {
+ "code": "vi",
+ "name": "vietnamita"
+ },
+ "vun": {
+ "code": "vun",
+ "name": "vunjo"
+ },
+ "wae": {
+ "code": "wae",
+ "name": "walser"
+ },
+ "yav": {
+ "code": "yav",
+ "name": "yangben"
+ },
+ "dje": {
+ "code": "dje",
+ "name": "zarma"
+ },
+ "zu": {
+ "code": "zu",
+ "name": "zulu"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/language/pt-MZ.json b/library/intl/resources/language/pt-MZ.json
new file mode 100644
index 000000000..44021eb46
--- /dev/null
+++ b/library/intl/resources/language/pt-MZ.json
@@ -0,0 +1,738 @@
+{
+ "af": {
+ "code": "af",
+ "name": "africânder"
+ },
+ "agq": {
+ "code": "agq",
+ "name": "aghem"
+ },
+ "ak": {
+ "code": "ak",
+ "name": "akan"
+ },
+ "sq": {
+ "code": "sq",
+ "name": "albanês"
+ },
+ "de": {
+ "code": "de",
+ "name": "alemão"
+ },
+ "de-AT": {
+ "code": "de-AT",
+ "name": "alemão austríaco"
+ },
+ "gsw": {
+ "code": "gsw",
+ "name": "alemão suíço"
+ },
+ "de-CH": {
+ "code": "de-CH",
+ "name": "alto alemão suíço"
+ },
+ "hsb": {
+ "code": "hsb",
+ "name": "alto sórabio"
+ },
+ "am": {
+ "code": "am",
+ "name": "amárico"
+ },
+ "ar": {
+ "code": "ar",
+ "name": "árabe"
+ },
+ "ar-001": {
+ "code": "ar-001",
+ "name": "árabe moderno padrão"
+ },
+ "hy": {
+ "code": "hy",
+ "name": "arménio"
+ },
+ "ast": {
+ "code": "ast",
+ "name": "asturiano"
+ },
+ "asa": {
+ "code": "asa",
+ "name": "asu"
+ },
+ "az": {
+ "code": "az",
+ "name": "azerbaijano"
+ },
+ "ksf": {
+ "code": "ksf",
+ "name": "bafia"
+ },
+ "dsb": {
+ "code": "dsb",
+ "name": "baixo sórabio"
+ },
+ "bm": {
+ "code": "bm",
+ "name": "bambara"
+ },
+ "bas": {
+ "code": "bas",
+ "name": "basa"
+ },
+ "eu": {
+ "code": "eu",
+ "name": "basco"
+ },
+ "bez": {
+ "code": "bez",
+ "name": "bena"
+ },
+ "bn": {
+ "code": "bn",
+ "name": "bengali"
+ },
+ "be": {
+ "code": "be",
+ "name": "bielorrusso"
+ },
+ "my": {
+ "code": "my",
+ "name": "birmanês"
+ },
+ "brx": {
+ "code": "brx",
+ "name": "bodo"
+ },
+ "bs": {
+ "code": "bs",
+ "name": "bósnio"
+ },
+ "br": {
+ "code": "br",
+ "name": "bretão"
+ },
+ "bg": {
+ "code": "bg",
+ "name": "búlgaro"
+ },
+ "kea": {
+ "code": "kea",
+ "name": "cabo-verdiano"
+ },
+ "kn": {
+ "code": "kn",
+ "name": "canarim"
+ },
+ "ca": {
+ "code": "ca",
+ "name": "catalão"
+ },
+ "ks": {
+ "code": "ks",
+ "name": "caxemira"
+ },
+ "kk": {
+ "code": "kk",
+ "name": "cazaque"
+ },
+ "cs": {
+ "code": "cs",
+ "name": "checo"
+ },
+ "chr": {
+ "code": "chr",
+ "name": "cherokee"
+ },
+ "cgg": {
+ "code": "cgg",
+ "name": "chiga"
+ },
+ "zh": {
+ "code": "zh",
+ "name": "chinês"
+ },
+ "zh-Hans": {
+ "code": "zh-Hans",
+ "name": "chinês simplificado"
+ },
+ "zh-Hant": {
+ "code": "zh-Hant",
+ "name": "chinês tradicional"
+ },
+ "si": {
+ "code": "si",
+ "name": "cingalês"
+ },
+ "km": {
+ "code": "km",
+ "name": "cmer"
+ },
+ "ko": {
+ "code": "ko",
+ "name": "coreano"
+ },
+ "hr": {
+ "code": "hr",
+ "name": "croata"
+ },
+ "da": {
+ "code": "da",
+ "name": "dinamarquês"
+ },
+ "dz": {
+ "code": "dz",
+ "name": "dzonga"
+ },
+ "ebu": {
+ "code": "ebu",
+ "name": "embu"
+ },
+ "sk": {
+ "code": "sk",
+ "name": "eslovaco"
+ },
+ "sl": {
+ "code": "sl",
+ "name": "esloveno"
+ },
+ "es": {
+ "code": "es",
+ "name": "espanhol"
+ },
+ "es-MX": {
+ "code": "es-MX",
+ "name": "espanhol do México"
+ },
+ "es-ES": {
+ "code": "es-ES",
+ "name": "espanhol europeu"
+ },
+ "eo": {
+ "code": "eo",
+ "name": "esperanto"
+ },
+ "et": {
+ "code": "et",
+ "name": "estónio"
+ },
+ "ee": {
+ "code": "ee",
+ "name": "ewe"
+ },
+ "ewo": {
+ "code": "ewo",
+ "name": "ewondo"
+ },
+ "fo": {
+ "code": "fo",
+ "name": "feroês"
+ },
+ "fil": {
+ "code": "fil",
+ "name": "filipino"
+ },
+ "fi": {
+ "code": "fi",
+ "name": "finlandês"
+ },
+ "nl-BE": {
+ "code": "nl-BE",
+ "name": "flamengo"
+ },
+ "fr": {
+ "code": "fr",
+ "name": "francês"
+ },
+ "fr-CA": {
+ "code": "fr-CA",
+ "name": "francês canadiano"
+ },
+ "fr-CH": {
+ "code": "fr-CH",
+ "name": "francês suíço"
+ },
+ "fy": {
+ "code": "fy",
+ "name": "frísico ocidental"
+ },
+ "fur": {
+ "code": "fur",
+ "name": "friulano"
+ },
+ "ff": {
+ "code": "ff",
+ "name": "fula"
+ },
+ "gd": {
+ "code": "gd",
+ "name": "gaélico escocês"
+ },
+ "gl": {
+ "code": "gl",
+ "name": "galego"
+ },
+ "cy": {
+ "code": "cy",
+ "name": "galês"
+ },
+ "lg": {
+ "code": "lg",
+ "name": "ganda"
+ },
+ "ka": {
+ "code": "ka",
+ "name": "georgiano"
+ },
+ "el": {
+ "code": "el",
+ "name": "grego"
+ },
+ "kl": {
+ "code": "kl",
+ "name": "groenlandês"
+ },
+ "guz": {
+ "code": "guz",
+ "name": "gusii"
+ },
+ "gu": {
+ "code": "gu",
+ "name": "guzerate"
+ },
+ "ha": {
+ "code": "ha",
+ "name": "haúça"
+ },
+ "he": {
+ "code": "he",
+ "name": "hebraico"
+ },
+ "hi": {
+ "code": "hi",
+ "name": "hindi"
+ },
+ "nl": {
+ "code": "nl",
+ "name": "holandês"
+ },
+ "hu": {
+ "code": "hu",
+ "name": "húngaro"
+ },
+ "id": {
+ "code": "id",
+ "name": "indonésio"
+ },
+ "en": {
+ "code": "en",
+ "name": "inglês"
+ },
+ "en-US": {
+ "code": "en-US",
+ "name": "inglês americano"
+ },
+ "en-AU": {
+ "code": "en-AU",
+ "name": "inglês australiano"
+ },
+ "en-GB": {
+ "code": "en-GB",
+ "name": "inglês britânico"
+ },
+ "en-CA": {
+ "code": "en-CA",
+ "name": "inglês canadiano"
+ },
+ "yo": {
+ "code": "yo",
+ "name": "ioruba"
+ },
+ "ga": {
+ "code": "ga",
+ "name": "irlandês"
+ },
+ "is": {
+ "code": "is",
+ "name": "islandês"
+ },
+ "it": {
+ "code": "it",
+ "name": "italiano"
+ },
+ "ja": {
+ "code": "ja",
+ "name": "japonês"
+ },
+ "dyo": {
+ "code": "dyo",
+ "name": "jola-fonyi"
+ },
+ "kab": {
+ "code": "kab",
+ "name": "kabyle"
+ },
+ "kln": {
+ "code": "kln",
+ "name": "kalenjin"
+ },
+ "kam": {
+ "code": "kam",
+ "name": "kamba"
+ },
+ "ksh": {
+ "code": "ksh",
+ "name": "kölsch"
+ },
+ "khq": {
+ "code": "khq",
+ "name": "koyra chiini"
+ },
+ "ses": {
+ "code": "ses",
+ "name": "koyraboro senni"
+ },
+ "nmg": {
+ "code": "nmg",
+ "name": "kwasio"
+ },
+ "lag": {
+ "code": "lag",
+ "name": "langi"
+ },
+ "lo": {
+ "code": "lo",
+ "name": "laosiano"
+ },
+ "lv": {
+ "code": "lv",
+ "name": "letão"
+ },
+ "ln": {
+ "code": "ln",
+ "name": "lingala"
+ },
+ "lt": {
+ "code": "lt",
+ "name": "lituano"
+ },
+ "lu": {
+ "code": "lu",
+ "name": "luba-catanga"
+ },
+ "luo": {
+ "code": "luo",
+ "name": "Luo"
+ },
+ "lb": {
+ "code": "lb",
+ "name": "luxemburguês"
+ },
+ "luy": {
+ "code": "luy",
+ "name": "luyia"
+ },
+ "mk": {
+ "code": "mk",
+ "name": "macedónio"
+ },
+ "jmc": {
+ "code": "jmc",
+ "name": "machame"
+ },
+ "kde": {
+ "code": "kde",
+ "name": "maconde"
+ },
+ "mgh": {
+ "code": "mgh",
+ "name": "macua"
+ },
+ "ml": {
+ "code": "ml",
+ "name": "malaiala"
+ },
+ "ms": {
+ "code": "ms",
+ "name": "malaio"
+ },
+ "mg": {
+ "code": "mg",
+ "name": "malgaxe"
+ },
+ "mt": {
+ "code": "mt",
+ "name": "maltês"
+ },
+ "mr": {
+ "code": "mr",
+ "name": "marata"
+ },
+ "mas": {
+ "code": "mas",
+ "name": "massai"
+ },
+ "mer": {
+ "code": "mer",
+ "name": "meru"
+ },
+ "ro-MD": {
+ "code": "ro-MD",
+ "name": "moldávio"
+ },
+ "mn": {
+ "code": "mn",
+ "name": "mongol"
+ },
+ "mfe": {
+ "code": "mfe",
+ "name": "morisyen"
+ },
+ "mua": {
+ "code": "mua",
+ "name": "mundang"
+ },
+ "naq": {
+ "code": "naq",
+ "name": "nama"
+ },
+ "nd": {
+ "code": "nd",
+ "name": "ndebele do norte"
+ },
+ "ne": {
+ "code": "ne",
+ "name": "nepali"
+ },
+ "jgo": {
+ "code": "jgo",
+ "name": "nguemba"
+ },
+ "nb": {
+ "code": "nb",
+ "name": "norueguês bokmål"
+ },
+ "nn": {
+ "code": "nn",
+ "name": "norueguês nynorsk"
+ },
+ "nus": {
+ "code": "nus",
+ "name": "nuer"
+ },
+ "nyn": {
+ "code": "nyn",
+ "name": "nyankole"
+ },
+ "or": {
+ "code": "or",
+ "name": "oriya"
+ },
+ "pa": {
+ "code": "pa",
+ "name": "panjabi"
+ },
+ "ps": {
+ "code": "ps",
+ "name": "pastó"
+ },
+ "fa": {
+ "code": "fa",
+ "name": "persa"
+ },
+ "pl": {
+ "code": "pl",
+ "name": "polaco"
+ },
+ "pt": {
+ "code": "pt",
+ "name": "português"
+ },
+ "pt-BR": {
+ "code": "pt-BR",
+ "name": "português do Brasil"
+ },
+ "pt-PT": {
+ "code": "pt-PT",
+ "name": "português europeu"
+ },
+ "ki": {
+ "code": "ki",
+ "name": "quicuio"
+ },
+ "ky": {
+ "code": "ky",
+ "name": "quirguiz"
+ },
+ "rm": {
+ "code": "rm",
+ "name": "romanche"
+ },
+ "rof": {
+ "code": "rof",
+ "name": "rombo"
+ },
+ "ro": {
+ "code": "ro",
+ "name": "romeno"
+ },
+ "rn": {
+ "code": "rn",
+ "name": "rundi"
+ },
+ "ru": {
+ "code": "ru",
+ "name": "russo"
+ },
+ "rwk": {
+ "code": "rwk",
+ "name": "rwa"
+ },
+ "saq": {
+ "code": "saq",
+ "name": "samburu"
+ },
+ "se": {
+ "code": "se",
+ "name": "sami do norte"
+ },
+ "sg": {
+ "code": "sg",
+ "name": "sango"
+ },
+ "sbp": {
+ "code": "sbp",
+ "name": "sangu"
+ },
+ "seh": {
+ "code": "seh",
+ "name": "sena"
+ },
+ "sr": {
+ "code": "sr",
+ "name": "sérvio"
+ },
+ "ksb": {
+ "code": "ksb",
+ "name": "shambala"
+ },
+ "sn": {
+ "code": "sn",
+ "name": "shona"
+ },
+ "xog": {
+ "code": "xog",
+ "name": "soga"
+ },
+ "so": {
+ "code": "so",
+ "name": "somali"
+ },
+ "sw": {
+ "code": "sw",
+ "name": "suaíli"
+ },
+ "swc": {
+ "code": "swc",
+ "name": "suaíli do Congo"
+ },
+ "sv": {
+ "code": "sv",
+ "name": "sueco"
+ },
+ "shi": {
+ "code": "shi",
+ "name": "tachelhit"
+ },
+ "th": {
+ "code": "th",
+ "name": "tailandês"
+ },
+ "dav": {
+ "code": "dav",
+ "name": "taita"
+ },
+ "tzm": {
+ "code": "tzm",
+ "name": "tamazight do Atlas Central"
+ },
+ "zgh": {
+ "code": "zgh",
+ "name": "tamazight padrão de Marrocos"
+ },
+ "ta": {
+ "code": "ta",
+ "name": "tâmil"
+ },
+ "twq": {
+ "code": "twq",
+ "name": "tasawaq"
+ },
+ "te": {
+ "code": "te",
+ "name": "telugu"
+ },
+ "teo": {
+ "code": "teo",
+ "name": "teso"
+ },
+ "bo": {
+ "code": "bo",
+ "name": "tibetano"
+ },
+ "ti": {
+ "code": "ti",
+ "name": "tigrínia"
+ },
+ "to": {
+ "code": "to",
+ "name": "tonga"
+ },
+ "tr": {
+ "code": "tr",
+ "name": "turco"
+ },
+ "uk": {
+ "code": "uk",
+ "name": "ucraniano"
+ },
+ "ug": {
+ "code": "ug",
+ "name": "uigur"
+ },
+ "ur": {
+ "code": "ur",
+ "name": "urdu"
+ },
+ "uz": {
+ "code": "uz",
+ "name": "usbeque"
+ },
+ "vai": {
+ "code": "vai",
+ "name": "Vai"
+ },
+ "vi": {
+ "code": "vi",
+ "name": "vietnamita"
+ },
+ "vun": {
+ "code": "vun",
+ "name": "vunjo"
+ },
+ "wae": {
+ "code": "wae",
+ "name": "walser"
+ },
+ "yav": {
+ "code": "yav",
+ "name": "yangben"
+ },
+ "dje": {
+ "code": "dje",
+ "name": "zarma"
+ },
+ "zu": {
+ "code": "zu",
+ "name": "zulu"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/language/pt-PT.json b/library/intl/resources/language/pt-PT.json
new file mode 100644
index 000000000..44021eb46
--- /dev/null
+++ b/library/intl/resources/language/pt-PT.json
@@ -0,0 +1,738 @@
+{
+ "af": {
+ "code": "af",
+ "name": "africânder"
+ },
+ "agq": {
+ "code": "agq",
+ "name": "aghem"
+ },
+ "ak": {
+ "code": "ak",
+ "name": "akan"
+ },
+ "sq": {
+ "code": "sq",
+ "name": "albanês"
+ },
+ "de": {
+ "code": "de",
+ "name": "alemão"
+ },
+ "de-AT": {
+ "code": "de-AT",
+ "name": "alemão austríaco"
+ },
+ "gsw": {
+ "code": "gsw",
+ "name": "alemão suíço"
+ },
+ "de-CH": {
+ "code": "de-CH",
+ "name": "alto alemão suíço"
+ },
+ "hsb": {
+ "code": "hsb",
+ "name": "alto sórabio"
+ },
+ "am": {
+ "code": "am",
+ "name": "amárico"
+ },
+ "ar": {
+ "code": "ar",
+ "name": "árabe"
+ },
+ "ar-001": {
+ "code": "ar-001",
+ "name": "árabe moderno padrão"
+ },
+ "hy": {
+ "code": "hy",
+ "name": "arménio"
+ },
+ "ast": {
+ "code": "ast",
+ "name": "asturiano"
+ },
+ "asa": {
+ "code": "asa",
+ "name": "asu"
+ },
+ "az": {
+ "code": "az",
+ "name": "azerbaijano"
+ },
+ "ksf": {
+ "code": "ksf",
+ "name": "bafia"
+ },
+ "dsb": {
+ "code": "dsb",
+ "name": "baixo sórabio"
+ },
+ "bm": {
+ "code": "bm",
+ "name": "bambara"
+ },
+ "bas": {
+ "code": "bas",
+ "name": "basa"
+ },
+ "eu": {
+ "code": "eu",
+ "name": "basco"
+ },
+ "bez": {
+ "code": "bez",
+ "name": "bena"
+ },
+ "bn": {
+ "code": "bn",
+ "name": "bengali"
+ },
+ "be": {
+ "code": "be",
+ "name": "bielorrusso"
+ },
+ "my": {
+ "code": "my",
+ "name": "birmanês"
+ },
+ "brx": {
+ "code": "brx",
+ "name": "bodo"
+ },
+ "bs": {
+ "code": "bs",
+ "name": "bósnio"
+ },
+ "br": {
+ "code": "br",
+ "name": "bretão"
+ },
+ "bg": {
+ "code": "bg",
+ "name": "búlgaro"
+ },
+ "kea": {
+ "code": "kea",
+ "name": "cabo-verdiano"
+ },
+ "kn": {
+ "code": "kn",
+ "name": "canarim"
+ },
+ "ca": {
+ "code": "ca",
+ "name": "catalão"
+ },
+ "ks": {
+ "code": "ks",
+ "name": "caxemira"
+ },
+ "kk": {
+ "code": "kk",
+ "name": "cazaque"
+ },
+ "cs": {
+ "code": "cs",
+ "name": "checo"
+ },
+ "chr": {
+ "code": "chr",
+ "name": "cherokee"
+ },
+ "cgg": {
+ "code": "cgg",
+ "name": "chiga"
+ },
+ "zh": {
+ "code": "zh",
+ "name": "chinês"
+ },
+ "zh-Hans": {
+ "code": "zh-Hans",
+ "name": "chinês simplificado"
+ },
+ "zh-Hant": {
+ "code": "zh-Hant",
+ "name": "chinês tradicional"
+ },
+ "si": {
+ "code": "si",
+ "name": "cingalês"
+ },
+ "km": {
+ "code": "km",
+ "name": "cmer"
+ },
+ "ko": {
+ "code": "ko",
+ "name": "coreano"
+ },
+ "hr": {
+ "code": "hr",
+ "name": "croata"
+ },
+ "da": {
+ "code": "da",
+ "name": "dinamarquês"
+ },
+ "dz": {
+ "code": "dz",
+ "name": "dzonga"
+ },
+ "ebu": {
+ "code": "ebu",
+ "name": "embu"
+ },
+ "sk": {
+ "code": "sk",
+ "name": "eslovaco"
+ },
+ "sl": {
+ "code": "sl",
+ "name": "esloveno"
+ },
+ "es": {
+ "code": "es",
+ "name": "espanhol"
+ },
+ "es-MX": {
+ "code": "es-MX",
+ "name": "espanhol do México"
+ },
+ "es-ES": {
+ "code": "es-ES",
+ "name": "espanhol europeu"
+ },
+ "eo": {
+ "code": "eo",
+ "name": "esperanto"
+ },
+ "et": {
+ "code": "et",
+ "name": "estónio"
+ },
+ "ee": {
+ "code": "ee",
+ "name": "ewe"
+ },
+ "ewo": {
+ "code": "ewo",
+ "name": "ewondo"
+ },
+ "fo": {
+ "code": "fo",
+ "name": "feroês"
+ },
+ "fil": {
+ "code": "fil",
+ "name": "filipino"
+ },
+ "fi": {
+ "code": "fi",
+ "name": "finlandês"
+ },
+ "nl-BE": {
+ "code": "nl-BE",
+ "name": "flamengo"
+ },
+ "fr": {
+ "code": "fr",
+ "name": "francês"
+ },
+ "fr-CA": {
+ "code": "fr-CA",
+ "name": "francês canadiano"
+ },
+ "fr-CH": {
+ "code": "fr-CH",
+ "name": "francês suíço"
+ },
+ "fy": {
+ "code": "fy",
+ "name": "frísico ocidental"
+ },
+ "fur": {
+ "code": "fur",
+ "name": "friulano"
+ },
+ "ff": {
+ "code": "ff",
+ "name": "fula"
+ },
+ "gd": {
+ "code": "gd",
+ "name": "gaélico escocês"
+ },
+ "gl": {
+ "code": "gl",
+ "name": "galego"
+ },
+ "cy": {
+ "code": "cy",
+ "name": "galês"
+ },
+ "lg": {
+ "code": "lg",
+ "name": "ganda"
+ },
+ "ka": {
+ "code": "ka",
+ "name": "georgiano"
+ },
+ "el": {
+ "code": "el",
+ "name": "grego"
+ },
+ "kl": {
+ "code": "kl",
+ "name": "groenlandês"
+ },
+ "guz": {
+ "code": "guz",
+ "name": "gusii"
+ },
+ "gu": {
+ "code": "gu",
+ "name": "guzerate"
+ },
+ "ha": {
+ "code": "ha",
+ "name": "haúça"
+ },
+ "he": {
+ "code": "he",
+ "name": "hebraico"
+ },
+ "hi": {
+ "code": "hi",
+ "name": "hindi"
+ },
+ "nl": {
+ "code": "nl",
+ "name": "holandês"
+ },
+ "hu": {
+ "code": "hu",
+ "name": "húngaro"
+ },
+ "id": {
+ "code": "id",
+ "name": "indonésio"
+ },
+ "en": {
+ "code": "en",
+ "name": "inglês"
+ },
+ "en-US": {
+ "code": "en-US",
+ "name": "inglês americano"
+ },
+ "en-AU": {
+ "code": "en-AU",
+ "name": "inglês australiano"
+ },
+ "en-GB": {
+ "code": "en-GB",
+ "name": "inglês britânico"
+ },
+ "en-CA": {
+ "code": "en-CA",
+ "name": "inglês canadiano"
+ },
+ "yo": {
+ "code": "yo",
+ "name": "ioruba"
+ },
+ "ga": {
+ "code": "ga",
+ "name": "irlandês"
+ },
+ "is": {
+ "code": "is",
+ "name": "islandês"
+ },
+ "it": {
+ "code": "it",
+ "name": "italiano"
+ },
+ "ja": {
+ "code": "ja",
+ "name": "japonês"
+ },
+ "dyo": {
+ "code": "dyo",
+ "name": "jola-fonyi"
+ },
+ "kab": {
+ "code": "kab",
+ "name": "kabyle"
+ },
+ "kln": {
+ "code": "kln",
+ "name": "kalenjin"
+ },
+ "kam": {
+ "code": "kam",
+ "name": "kamba"
+ },
+ "ksh": {
+ "code": "ksh",
+ "name": "kölsch"
+ },
+ "khq": {
+ "code": "khq",
+ "name": "koyra chiini"
+ },
+ "ses": {
+ "code": "ses",
+ "name": "koyraboro senni"
+ },
+ "nmg": {
+ "code": "nmg",
+ "name": "kwasio"
+ },
+ "lag": {
+ "code": "lag",
+ "name": "langi"
+ },
+ "lo": {
+ "code": "lo",
+ "name": "laosiano"
+ },
+ "lv": {
+ "code": "lv",
+ "name": "letão"
+ },
+ "ln": {
+ "code": "ln",
+ "name": "lingala"
+ },
+ "lt": {
+ "code": "lt",
+ "name": "lituano"
+ },
+ "lu": {
+ "code": "lu",
+ "name": "luba-catanga"
+ },
+ "luo": {
+ "code": "luo",
+ "name": "Luo"
+ },
+ "lb": {
+ "code": "lb",
+ "name": "luxemburguês"
+ },
+ "luy": {
+ "code": "luy",
+ "name": "luyia"
+ },
+ "mk": {
+ "code": "mk",
+ "name": "macedónio"
+ },
+ "jmc": {
+ "code": "jmc",
+ "name": "machame"
+ },
+ "kde": {
+ "code": "kde",
+ "name": "maconde"
+ },
+ "mgh": {
+ "code": "mgh",
+ "name": "macua"
+ },
+ "ml": {
+ "code": "ml",
+ "name": "malaiala"
+ },
+ "ms": {
+ "code": "ms",
+ "name": "malaio"
+ },
+ "mg": {
+ "code": "mg",
+ "name": "malgaxe"
+ },
+ "mt": {
+ "code": "mt",
+ "name": "maltês"
+ },
+ "mr": {
+ "code": "mr",
+ "name": "marata"
+ },
+ "mas": {
+ "code": "mas",
+ "name": "massai"
+ },
+ "mer": {
+ "code": "mer",
+ "name": "meru"
+ },
+ "ro-MD": {
+ "code": "ro-MD",
+ "name": "moldávio"
+ },
+ "mn": {
+ "code": "mn",
+ "name": "mongol"
+ },
+ "mfe": {
+ "code": "mfe",
+ "name": "morisyen"
+ },
+ "mua": {
+ "code": "mua",
+ "name": "mundang"
+ },
+ "naq": {
+ "code": "naq",
+ "name": "nama"
+ },
+ "nd": {
+ "code": "nd",
+ "name": "ndebele do norte"
+ },
+ "ne": {
+ "code": "ne",
+ "name": "nepali"
+ },
+ "jgo": {
+ "code": "jgo",
+ "name": "nguemba"
+ },
+ "nb": {
+ "code": "nb",
+ "name": "norueguês bokmål"
+ },
+ "nn": {
+ "code": "nn",
+ "name": "norueguês nynorsk"
+ },
+ "nus": {
+ "code": "nus",
+ "name": "nuer"
+ },
+ "nyn": {
+ "code": "nyn",
+ "name": "nyankole"
+ },
+ "or": {
+ "code": "or",
+ "name": "oriya"
+ },
+ "pa": {
+ "code": "pa",
+ "name": "panjabi"
+ },
+ "ps": {
+ "code": "ps",
+ "name": "pastó"
+ },
+ "fa": {
+ "code": "fa",
+ "name": "persa"
+ },
+ "pl": {
+ "code": "pl",
+ "name": "polaco"
+ },
+ "pt": {
+ "code": "pt",
+ "name": "português"
+ },
+ "pt-BR": {
+ "code": "pt-BR",
+ "name": "português do Brasil"
+ },
+ "pt-PT": {
+ "code": "pt-PT",
+ "name": "português europeu"
+ },
+ "ki": {
+ "code": "ki",
+ "name": "quicuio"
+ },
+ "ky": {
+ "code": "ky",
+ "name": "quirguiz"
+ },
+ "rm": {
+ "code": "rm",
+ "name": "romanche"
+ },
+ "rof": {
+ "code": "rof",
+ "name": "rombo"
+ },
+ "ro": {
+ "code": "ro",
+ "name": "romeno"
+ },
+ "rn": {
+ "code": "rn",
+ "name": "rundi"
+ },
+ "ru": {
+ "code": "ru",
+ "name": "russo"
+ },
+ "rwk": {
+ "code": "rwk",
+ "name": "rwa"
+ },
+ "saq": {
+ "code": "saq",
+ "name": "samburu"
+ },
+ "se": {
+ "code": "se",
+ "name": "sami do norte"
+ },
+ "sg": {
+ "code": "sg",
+ "name": "sango"
+ },
+ "sbp": {
+ "code": "sbp",
+ "name": "sangu"
+ },
+ "seh": {
+ "code": "seh",
+ "name": "sena"
+ },
+ "sr": {
+ "code": "sr",
+ "name": "sérvio"
+ },
+ "ksb": {
+ "code": "ksb",
+ "name": "shambala"
+ },
+ "sn": {
+ "code": "sn",
+ "name": "shona"
+ },
+ "xog": {
+ "code": "xog",
+ "name": "soga"
+ },
+ "so": {
+ "code": "so",
+ "name": "somali"
+ },
+ "sw": {
+ "code": "sw",
+ "name": "suaíli"
+ },
+ "swc": {
+ "code": "swc",
+ "name": "suaíli do Congo"
+ },
+ "sv": {
+ "code": "sv",
+ "name": "sueco"
+ },
+ "shi": {
+ "code": "shi",
+ "name": "tachelhit"
+ },
+ "th": {
+ "code": "th",
+ "name": "tailandês"
+ },
+ "dav": {
+ "code": "dav",
+ "name": "taita"
+ },
+ "tzm": {
+ "code": "tzm",
+ "name": "tamazight do Atlas Central"
+ },
+ "zgh": {
+ "code": "zgh",
+ "name": "tamazight padrão de Marrocos"
+ },
+ "ta": {
+ "code": "ta",
+ "name": "tâmil"
+ },
+ "twq": {
+ "code": "twq",
+ "name": "tasawaq"
+ },
+ "te": {
+ "code": "te",
+ "name": "telugu"
+ },
+ "teo": {
+ "code": "teo",
+ "name": "teso"
+ },
+ "bo": {
+ "code": "bo",
+ "name": "tibetano"
+ },
+ "ti": {
+ "code": "ti",
+ "name": "tigrínia"
+ },
+ "to": {
+ "code": "to",
+ "name": "tonga"
+ },
+ "tr": {
+ "code": "tr",
+ "name": "turco"
+ },
+ "uk": {
+ "code": "uk",
+ "name": "ucraniano"
+ },
+ "ug": {
+ "code": "ug",
+ "name": "uigur"
+ },
+ "ur": {
+ "code": "ur",
+ "name": "urdu"
+ },
+ "uz": {
+ "code": "uz",
+ "name": "usbeque"
+ },
+ "vai": {
+ "code": "vai",
+ "name": "Vai"
+ },
+ "vi": {
+ "code": "vi",
+ "name": "vietnamita"
+ },
+ "vun": {
+ "code": "vun",
+ "name": "vunjo"
+ },
+ "wae": {
+ "code": "wae",
+ "name": "walser"
+ },
+ "yav": {
+ "code": "yav",
+ "name": "yangben"
+ },
+ "dje": {
+ "code": "dje",
+ "name": "zarma"
+ },
+ "zu": {
+ "code": "zu",
+ "name": "zulu"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/language/pt-ST.json b/library/intl/resources/language/pt-ST.json
new file mode 100644
index 000000000..44021eb46
--- /dev/null
+++ b/library/intl/resources/language/pt-ST.json
@@ -0,0 +1,738 @@
+{
+ "af": {
+ "code": "af",
+ "name": "africânder"
+ },
+ "agq": {
+ "code": "agq",
+ "name": "aghem"
+ },
+ "ak": {
+ "code": "ak",
+ "name": "akan"
+ },
+ "sq": {
+ "code": "sq",
+ "name": "albanês"
+ },
+ "de": {
+ "code": "de",
+ "name": "alemão"
+ },
+ "de-AT": {
+ "code": "de-AT",
+ "name": "alemão austríaco"
+ },
+ "gsw": {
+ "code": "gsw",
+ "name": "alemão suíço"
+ },
+ "de-CH": {
+ "code": "de-CH",
+ "name": "alto alemão suíço"
+ },
+ "hsb": {
+ "code": "hsb",
+ "name": "alto sórabio"
+ },
+ "am": {
+ "code": "am",
+ "name": "amárico"
+ },
+ "ar": {
+ "code": "ar",
+ "name": "árabe"
+ },
+ "ar-001": {
+ "code": "ar-001",
+ "name": "árabe moderno padrão"
+ },
+ "hy": {
+ "code": "hy",
+ "name": "arménio"
+ },
+ "ast": {
+ "code": "ast",
+ "name": "asturiano"
+ },
+ "asa": {
+ "code": "asa",
+ "name": "asu"
+ },
+ "az": {
+ "code": "az",
+ "name": "azerbaijano"
+ },
+ "ksf": {
+ "code": "ksf",
+ "name": "bafia"
+ },
+ "dsb": {
+ "code": "dsb",
+ "name": "baixo sórabio"
+ },
+ "bm": {
+ "code": "bm",
+ "name": "bambara"
+ },
+ "bas": {
+ "code": "bas",
+ "name": "basa"
+ },
+ "eu": {
+ "code": "eu",
+ "name": "basco"
+ },
+ "bez": {
+ "code": "bez",
+ "name": "bena"
+ },
+ "bn": {
+ "code": "bn",
+ "name": "bengali"
+ },
+ "be": {
+ "code": "be",
+ "name": "bielorrusso"
+ },
+ "my": {
+ "code": "my",
+ "name": "birmanês"
+ },
+ "brx": {
+ "code": "brx",
+ "name": "bodo"
+ },
+ "bs": {
+ "code": "bs",
+ "name": "bósnio"
+ },
+ "br": {
+ "code": "br",
+ "name": "bretão"
+ },
+ "bg": {
+ "code": "bg",
+ "name": "búlgaro"
+ },
+ "kea": {
+ "code": "kea",
+ "name": "cabo-verdiano"
+ },
+ "kn": {
+ "code": "kn",
+ "name": "canarim"
+ },
+ "ca": {
+ "code": "ca",
+ "name": "catalão"
+ },
+ "ks": {
+ "code": "ks",
+ "name": "caxemira"
+ },
+ "kk": {
+ "code": "kk",
+ "name": "cazaque"
+ },
+ "cs": {
+ "code": "cs",
+ "name": "checo"
+ },
+ "chr": {
+ "code": "chr",
+ "name": "cherokee"
+ },
+ "cgg": {
+ "code": "cgg",
+ "name": "chiga"
+ },
+ "zh": {
+ "code": "zh",
+ "name": "chinês"
+ },
+ "zh-Hans": {
+ "code": "zh-Hans",
+ "name": "chinês simplificado"
+ },
+ "zh-Hant": {
+ "code": "zh-Hant",
+ "name": "chinês tradicional"
+ },
+ "si": {
+ "code": "si",
+ "name": "cingalês"
+ },
+ "km": {
+ "code": "km",
+ "name": "cmer"
+ },
+ "ko": {
+ "code": "ko",
+ "name": "coreano"
+ },
+ "hr": {
+ "code": "hr",
+ "name": "croata"
+ },
+ "da": {
+ "code": "da",
+ "name": "dinamarquês"
+ },
+ "dz": {
+ "code": "dz",
+ "name": "dzonga"
+ },
+ "ebu": {
+ "code": "ebu",
+ "name": "embu"
+ },
+ "sk": {
+ "code": "sk",
+ "name": "eslovaco"
+ },
+ "sl": {
+ "code": "sl",
+ "name": "esloveno"
+ },
+ "es": {
+ "code": "es",
+ "name": "espanhol"
+ },
+ "es-MX": {
+ "code": "es-MX",
+ "name": "espanhol do México"
+ },
+ "es-ES": {
+ "code": "es-ES",
+ "name": "espanhol europeu"
+ },
+ "eo": {
+ "code": "eo",
+ "name": "esperanto"
+ },
+ "et": {
+ "code": "et",
+ "name": "estónio"
+ },
+ "ee": {
+ "code": "ee",
+ "name": "ewe"
+ },
+ "ewo": {
+ "code": "ewo",
+ "name": "ewondo"
+ },
+ "fo": {
+ "code": "fo",
+ "name": "feroês"
+ },
+ "fil": {
+ "code": "fil",
+ "name": "filipino"
+ },
+ "fi": {
+ "code": "fi",
+ "name": "finlandês"
+ },
+ "nl-BE": {
+ "code": "nl-BE",
+ "name": "flamengo"
+ },
+ "fr": {
+ "code": "fr",
+ "name": "francês"
+ },
+ "fr-CA": {
+ "code": "fr-CA",
+ "name": "francês canadiano"
+ },
+ "fr-CH": {
+ "code": "fr-CH",
+ "name": "francês suíço"
+ },
+ "fy": {
+ "code": "fy",
+ "name": "frísico ocidental"
+ },
+ "fur": {
+ "code": "fur",
+ "name": "friulano"
+ },
+ "ff": {
+ "code": "ff",
+ "name": "fula"
+ },
+ "gd": {
+ "code": "gd",
+ "name": "gaélico escocês"
+ },
+ "gl": {
+ "code": "gl",
+ "name": "galego"
+ },
+ "cy": {
+ "code": "cy",
+ "name": "galês"
+ },
+ "lg": {
+ "code": "lg",
+ "name": "ganda"
+ },
+ "ka": {
+ "code": "ka",
+ "name": "georgiano"
+ },
+ "el": {
+ "code": "el",
+ "name": "grego"
+ },
+ "kl": {
+ "code": "kl",
+ "name": "groenlandês"
+ },
+ "guz": {
+ "code": "guz",
+ "name": "gusii"
+ },
+ "gu": {
+ "code": "gu",
+ "name": "guzerate"
+ },
+ "ha": {
+ "code": "ha",
+ "name": "haúça"
+ },
+ "he": {
+ "code": "he",
+ "name": "hebraico"
+ },
+ "hi": {
+ "code": "hi",
+ "name": "hindi"
+ },
+ "nl": {
+ "code": "nl",
+ "name": "holandês"
+ },
+ "hu": {
+ "code": "hu",
+ "name": "húngaro"
+ },
+ "id": {
+ "code": "id",
+ "name": "indonésio"
+ },
+ "en": {
+ "code": "en",
+ "name": "inglês"
+ },
+ "en-US": {
+ "code": "en-US",
+ "name": "inglês americano"
+ },
+ "en-AU": {
+ "code": "en-AU",
+ "name": "inglês australiano"
+ },
+ "en-GB": {
+ "code": "en-GB",
+ "name": "inglês britânico"
+ },
+ "en-CA": {
+ "code": "en-CA",
+ "name": "inglês canadiano"
+ },
+ "yo": {
+ "code": "yo",
+ "name": "ioruba"
+ },
+ "ga": {
+ "code": "ga",
+ "name": "irlandês"
+ },
+ "is": {
+ "code": "is",
+ "name": "islandês"
+ },
+ "it": {
+ "code": "it",
+ "name": "italiano"
+ },
+ "ja": {
+ "code": "ja",
+ "name": "japonês"
+ },
+ "dyo": {
+ "code": "dyo",
+ "name": "jola-fonyi"
+ },
+ "kab": {
+ "code": "kab",
+ "name": "kabyle"
+ },
+ "kln": {
+ "code": "kln",
+ "name": "kalenjin"
+ },
+ "kam": {
+ "code": "kam",
+ "name": "kamba"
+ },
+ "ksh": {
+ "code": "ksh",
+ "name": "kölsch"
+ },
+ "khq": {
+ "code": "khq",
+ "name": "koyra chiini"
+ },
+ "ses": {
+ "code": "ses",
+ "name": "koyraboro senni"
+ },
+ "nmg": {
+ "code": "nmg",
+ "name": "kwasio"
+ },
+ "lag": {
+ "code": "lag",
+ "name": "langi"
+ },
+ "lo": {
+ "code": "lo",
+ "name": "laosiano"
+ },
+ "lv": {
+ "code": "lv",
+ "name": "letão"
+ },
+ "ln": {
+ "code": "ln",
+ "name": "lingala"
+ },
+ "lt": {
+ "code": "lt",
+ "name": "lituano"
+ },
+ "lu": {
+ "code": "lu",
+ "name": "luba-catanga"
+ },
+ "luo": {
+ "code": "luo",
+ "name": "Luo"
+ },
+ "lb": {
+ "code": "lb",
+ "name": "luxemburguês"
+ },
+ "luy": {
+ "code": "luy",
+ "name": "luyia"
+ },
+ "mk": {
+ "code": "mk",
+ "name": "macedónio"
+ },
+ "jmc": {
+ "code": "jmc",
+ "name": "machame"
+ },
+ "kde": {
+ "code": "kde",
+ "name": "maconde"
+ },
+ "mgh": {
+ "code": "mgh",
+ "name": "macua"
+ },
+ "ml": {
+ "code": "ml",
+ "name": "malaiala"
+ },
+ "ms": {
+ "code": "ms",
+ "name": "malaio"
+ },
+ "mg": {
+ "code": "mg",
+ "name": "malgaxe"
+ },
+ "mt": {
+ "code": "mt",
+ "name": "maltês"
+ },
+ "mr": {
+ "code": "mr",
+ "name": "marata"
+ },
+ "mas": {
+ "code": "mas",
+ "name": "massai"
+ },
+ "mer": {
+ "code": "mer",
+ "name": "meru"
+ },
+ "ro-MD": {
+ "code": "ro-MD",
+ "name": "moldávio"
+ },
+ "mn": {
+ "code": "mn",
+ "name": "mongol"
+ },
+ "mfe": {
+ "code": "mfe",
+ "name": "morisyen"
+ },
+ "mua": {
+ "code": "mua",
+ "name": "mundang"
+ },
+ "naq": {
+ "code": "naq",
+ "name": "nama"
+ },
+ "nd": {
+ "code": "nd",
+ "name": "ndebele do norte"
+ },
+ "ne": {
+ "code": "ne",
+ "name": "nepali"
+ },
+ "jgo": {
+ "code": "jgo",
+ "name": "nguemba"
+ },
+ "nb": {
+ "code": "nb",
+ "name": "norueguês bokmål"
+ },
+ "nn": {
+ "code": "nn",
+ "name": "norueguês nynorsk"
+ },
+ "nus": {
+ "code": "nus",
+ "name": "nuer"
+ },
+ "nyn": {
+ "code": "nyn",
+ "name": "nyankole"
+ },
+ "or": {
+ "code": "or",
+ "name": "oriya"
+ },
+ "pa": {
+ "code": "pa",
+ "name": "panjabi"
+ },
+ "ps": {
+ "code": "ps",
+ "name": "pastó"
+ },
+ "fa": {
+ "code": "fa",
+ "name": "persa"
+ },
+ "pl": {
+ "code": "pl",
+ "name": "polaco"
+ },
+ "pt": {
+ "code": "pt",
+ "name": "português"
+ },
+ "pt-BR": {
+ "code": "pt-BR",
+ "name": "português do Brasil"
+ },
+ "pt-PT": {
+ "code": "pt-PT",
+ "name": "português europeu"
+ },
+ "ki": {
+ "code": "ki",
+ "name": "quicuio"
+ },
+ "ky": {
+ "code": "ky",
+ "name": "quirguiz"
+ },
+ "rm": {
+ "code": "rm",
+ "name": "romanche"
+ },
+ "rof": {
+ "code": "rof",
+ "name": "rombo"
+ },
+ "ro": {
+ "code": "ro",
+ "name": "romeno"
+ },
+ "rn": {
+ "code": "rn",
+ "name": "rundi"
+ },
+ "ru": {
+ "code": "ru",
+ "name": "russo"
+ },
+ "rwk": {
+ "code": "rwk",
+ "name": "rwa"
+ },
+ "saq": {
+ "code": "saq",
+ "name": "samburu"
+ },
+ "se": {
+ "code": "se",
+ "name": "sami do norte"
+ },
+ "sg": {
+ "code": "sg",
+ "name": "sango"
+ },
+ "sbp": {
+ "code": "sbp",
+ "name": "sangu"
+ },
+ "seh": {
+ "code": "seh",
+ "name": "sena"
+ },
+ "sr": {
+ "code": "sr",
+ "name": "sérvio"
+ },
+ "ksb": {
+ "code": "ksb",
+ "name": "shambala"
+ },
+ "sn": {
+ "code": "sn",
+ "name": "shona"
+ },
+ "xog": {
+ "code": "xog",
+ "name": "soga"
+ },
+ "so": {
+ "code": "so",
+ "name": "somali"
+ },
+ "sw": {
+ "code": "sw",
+ "name": "suaíli"
+ },
+ "swc": {
+ "code": "swc",
+ "name": "suaíli do Congo"
+ },
+ "sv": {
+ "code": "sv",
+ "name": "sueco"
+ },
+ "shi": {
+ "code": "shi",
+ "name": "tachelhit"
+ },
+ "th": {
+ "code": "th",
+ "name": "tailandês"
+ },
+ "dav": {
+ "code": "dav",
+ "name": "taita"
+ },
+ "tzm": {
+ "code": "tzm",
+ "name": "tamazight do Atlas Central"
+ },
+ "zgh": {
+ "code": "zgh",
+ "name": "tamazight padrão de Marrocos"
+ },
+ "ta": {
+ "code": "ta",
+ "name": "tâmil"
+ },
+ "twq": {
+ "code": "twq",
+ "name": "tasawaq"
+ },
+ "te": {
+ "code": "te",
+ "name": "telugu"
+ },
+ "teo": {
+ "code": "teo",
+ "name": "teso"
+ },
+ "bo": {
+ "code": "bo",
+ "name": "tibetano"
+ },
+ "ti": {
+ "code": "ti",
+ "name": "tigrínia"
+ },
+ "to": {
+ "code": "to",
+ "name": "tonga"
+ },
+ "tr": {
+ "code": "tr",
+ "name": "turco"
+ },
+ "uk": {
+ "code": "uk",
+ "name": "ucraniano"
+ },
+ "ug": {
+ "code": "ug",
+ "name": "uigur"
+ },
+ "ur": {
+ "code": "ur",
+ "name": "urdu"
+ },
+ "uz": {
+ "code": "uz",
+ "name": "usbeque"
+ },
+ "vai": {
+ "code": "vai",
+ "name": "Vai"
+ },
+ "vi": {
+ "code": "vi",
+ "name": "vietnamita"
+ },
+ "vun": {
+ "code": "vun",
+ "name": "vunjo"
+ },
+ "wae": {
+ "code": "wae",
+ "name": "walser"
+ },
+ "yav": {
+ "code": "yav",
+ "name": "yangben"
+ },
+ "dje": {
+ "code": "dje",
+ "name": "zarma"
+ },
+ "zu": {
+ "code": "zu",
+ "name": "zulu"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/language/pt-TL.json b/library/intl/resources/language/pt-TL.json
new file mode 100644
index 000000000..44021eb46
--- /dev/null
+++ b/library/intl/resources/language/pt-TL.json
@@ -0,0 +1,738 @@
+{
+ "af": {
+ "code": "af",
+ "name": "africânder"
+ },
+ "agq": {
+ "code": "agq",
+ "name": "aghem"
+ },
+ "ak": {
+ "code": "ak",
+ "name": "akan"
+ },
+ "sq": {
+ "code": "sq",
+ "name": "albanês"
+ },
+ "de": {
+ "code": "de",
+ "name": "alemão"
+ },
+ "de-AT": {
+ "code": "de-AT",
+ "name": "alemão austríaco"
+ },
+ "gsw": {
+ "code": "gsw",
+ "name": "alemão suíço"
+ },
+ "de-CH": {
+ "code": "de-CH",
+ "name": "alto alemão suíço"
+ },
+ "hsb": {
+ "code": "hsb",
+ "name": "alto sórabio"
+ },
+ "am": {
+ "code": "am",
+ "name": "amárico"
+ },
+ "ar": {
+ "code": "ar",
+ "name": "árabe"
+ },
+ "ar-001": {
+ "code": "ar-001",
+ "name": "árabe moderno padrão"
+ },
+ "hy": {
+ "code": "hy",
+ "name": "arménio"
+ },
+ "ast": {
+ "code": "ast",
+ "name": "asturiano"
+ },
+ "asa": {
+ "code": "asa",
+ "name": "asu"
+ },
+ "az": {
+ "code": "az",
+ "name": "azerbaijano"
+ },
+ "ksf": {
+ "code": "ksf",
+ "name": "bafia"
+ },
+ "dsb": {
+ "code": "dsb",
+ "name": "baixo sórabio"
+ },
+ "bm": {
+ "code": "bm",
+ "name": "bambara"
+ },
+ "bas": {
+ "code": "bas",
+ "name": "basa"
+ },
+ "eu": {
+ "code": "eu",
+ "name": "basco"
+ },
+ "bez": {
+ "code": "bez",
+ "name": "bena"
+ },
+ "bn": {
+ "code": "bn",
+ "name": "bengali"
+ },
+ "be": {
+ "code": "be",
+ "name": "bielorrusso"
+ },
+ "my": {
+ "code": "my",
+ "name": "birmanês"
+ },
+ "brx": {
+ "code": "brx",
+ "name": "bodo"
+ },
+ "bs": {
+ "code": "bs",
+ "name": "bósnio"
+ },
+ "br": {
+ "code": "br",
+ "name": "bretão"
+ },
+ "bg": {
+ "code": "bg",
+ "name": "búlgaro"
+ },
+ "kea": {
+ "code": "kea",
+ "name": "cabo-verdiano"
+ },
+ "kn": {
+ "code": "kn",
+ "name": "canarim"
+ },
+ "ca": {
+ "code": "ca",
+ "name": "catalão"
+ },
+ "ks": {
+ "code": "ks",
+ "name": "caxemira"
+ },
+ "kk": {
+ "code": "kk",
+ "name": "cazaque"
+ },
+ "cs": {
+ "code": "cs",
+ "name": "checo"
+ },
+ "chr": {
+ "code": "chr",
+ "name": "cherokee"
+ },
+ "cgg": {
+ "code": "cgg",
+ "name": "chiga"
+ },
+ "zh": {
+ "code": "zh",
+ "name": "chinês"
+ },
+ "zh-Hans": {
+ "code": "zh-Hans",
+ "name": "chinês simplificado"
+ },
+ "zh-Hant": {
+ "code": "zh-Hant",
+ "name": "chinês tradicional"
+ },
+ "si": {
+ "code": "si",
+ "name": "cingalês"
+ },
+ "km": {
+ "code": "km",
+ "name": "cmer"
+ },
+ "ko": {
+ "code": "ko",
+ "name": "coreano"
+ },
+ "hr": {
+ "code": "hr",
+ "name": "croata"
+ },
+ "da": {
+ "code": "da",
+ "name": "dinamarquês"
+ },
+ "dz": {
+ "code": "dz",
+ "name": "dzonga"
+ },
+ "ebu": {
+ "code": "ebu",
+ "name": "embu"
+ },
+ "sk": {
+ "code": "sk",
+ "name": "eslovaco"
+ },
+ "sl": {
+ "code": "sl",
+ "name": "esloveno"
+ },
+ "es": {
+ "code": "es",
+ "name": "espanhol"
+ },
+ "es-MX": {
+ "code": "es-MX",
+ "name": "espanhol do México"
+ },
+ "es-ES": {
+ "code": "es-ES",
+ "name": "espanhol europeu"
+ },
+ "eo": {
+ "code": "eo",
+ "name": "esperanto"
+ },
+ "et": {
+ "code": "et",
+ "name": "estónio"
+ },
+ "ee": {
+ "code": "ee",
+ "name": "ewe"
+ },
+ "ewo": {
+ "code": "ewo",
+ "name": "ewondo"
+ },
+ "fo": {
+ "code": "fo",
+ "name": "feroês"
+ },
+ "fil": {
+ "code": "fil",
+ "name": "filipino"
+ },
+ "fi": {
+ "code": "fi",
+ "name": "finlandês"
+ },
+ "nl-BE": {
+ "code": "nl-BE",
+ "name": "flamengo"
+ },
+ "fr": {
+ "code": "fr",
+ "name": "francês"
+ },
+ "fr-CA": {
+ "code": "fr-CA",
+ "name": "francês canadiano"
+ },
+ "fr-CH": {
+ "code": "fr-CH",
+ "name": "francês suíço"
+ },
+ "fy": {
+ "code": "fy",
+ "name": "frísico ocidental"
+ },
+ "fur": {
+ "code": "fur",
+ "name": "friulano"
+ },
+ "ff": {
+ "code": "ff",
+ "name": "fula"
+ },
+ "gd": {
+ "code": "gd",
+ "name": "gaélico escocês"
+ },
+ "gl": {
+ "code": "gl",
+ "name": "galego"
+ },
+ "cy": {
+ "code": "cy",
+ "name": "galês"
+ },
+ "lg": {
+ "code": "lg",
+ "name": "ganda"
+ },
+ "ka": {
+ "code": "ka",
+ "name": "georgiano"
+ },
+ "el": {
+ "code": "el",
+ "name": "grego"
+ },
+ "kl": {
+ "code": "kl",
+ "name": "groenlandês"
+ },
+ "guz": {
+ "code": "guz",
+ "name": "gusii"
+ },
+ "gu": {
+ "code": "gu",
+ "name": "guzerate"
+ },
+ "ha": {
+ "code": "ha",
+ "name": "haúça"
+ },
+ "he": {
+ "code": "he",
+ "name": "hebraico"
+ },
+ "hi": {
+ "code": "hi",
+ "name": "hindi"
+ },
+ "nl": {
+ "code": "nl",
+ "name": "holandês"
+ },
+ "hu": {
+ "code": "hu",
+ "name": "húngaro"
+ },
+ "id": {
+ "code": "id",
+ "name": "indonésio"
+ },
+ "en": {
+ "code": "en",
+ "name": "inglês"
+ },
+ "en-US": {
+ "code": "en-US",
+ "name": "inglês americano"
+ },
+ "en-AU": {
+ "code": "en-AU",
+ "name": "inglês australiano"
+ },
+ "en-GB": {
+ "code": "en-GB",
+ "name": "inglês britânico"
+ },
+ "en-CA": {
+ "code": "en-CA",
+ "name": "inglês canadiano"
+ },
+ "yo": {
+ "code": "yo",
+ "name": "ioruba"
+ },
+ "ga": {
+ "code": "ga",
+ "name": "irlandês"
+ },
+ "is": {
+ "code": "is",
+ "name": "islandês"
+ },
+ "it": {
+ "code": "it",
+ "name": "italiano"
+ },
+ "ja": {
+ "code": "ja",
+ "name": "japonês"
+ },
+ "dyo": {
+ "code": "dyo",
+ "name": "jola-fonyi"
+ },
+ "kab": {
+ "code": "kab",
+ "name": "kabyle"
+ },
+ "kln": {
+ "code": "kln",
+ "name": "kalenjin"
+ },
+ "kam": {
+ "code": "kam",
+ "name": "kamba"
+ },
+ "ksh": {
+ "code": "ksh",
+ "name": "kölsch"
+ },
+ "khq": {
+ "code": "khq",
+ "name": "koyra chiini"
+ },
+ "ses": {
+ "code": "ses",
+ "name": "koyraboro senni"
+ },
+ "nmg": {
+ "code": "nmg",
+ "name": "kwasio"
+ },
+ "lag": {
+ "code": "lag",
+ "name": "langi"
+ },
+ "lo": {
+ "code": "lo",
+ "name": "laosiano"
+ },
+ "lv": {
+ "code": "lv",
+ "name": "letão"
+ },
+ "ln": {
+ "code": "ln",
+ "name": "lingala"
+ },
+ "lt": {
+ "code": "lt",
+ "name": "lituano"
+ },
+ "lu": {
+ "code": "lu",
+ "name": "luba-catanga"
+ },
+ "luo": {
+ "code": "luo",
+ "name": "Luo"
+ },
+ "lb": {
+ "code": "lb",
+ "name": "luxemburguês"
+ },
+ "luy": {
+ "code": "luy",
+ "name": "luyia"
+ },
+ "mk": {
+ "code": "mk",
+ "name": "macedónio"
+ },
+ "jmc": {
+ "code": "jmc",
+ "name": "machame"
+ },
+ "kde": {
+ "code": "kde",
+ "name": "maconde"
+ },
+ "mgh": {
+ "code": "mgh",
+ "name": "macua"
+ },
+ "ml": {
+ "code": "ml",
+ "name": "malaiala"
+ },
+ "ms": {
+ "code": "ms",
+ "name": "malaio"
+ },
+ "mg": {
+ "code": "mg",
+ "name": "malgaxe"
+ },
+ "mt": {
+ "code": "mt",
+ "name": "maltês"
+ },
+ "mr": {
+ "code": "mr",
+ "name": "marata"
+ },
+ "mas": {
+ "code": "mas",
+ "name": "massai"
+ },
+ "mer": {
+ "code": "mer",
+ "name": "meru"
+ },
+ "ro-MD": {
+ "code": "ro-MD",
+ "name": "moldávio"
+ },
+ "mn": {
+ "code": "mn",
+ "name": "mongol"
+ },
+ "mfe": {
+ "code": "mfe",
+ "name": "morisyen"
+ },
+ "mua": {
+ "code": "mua",
+ "name": "mundang"
+ },
+ "naq": {
+ "code": "naq",
+ "name": "nama"
+ },
+ "nd": {
+ "code": "nd",
+ "name": "ndebele do norte"
+ },
+ "ne": {
+ "code": "ne",
+ "name": "nepali"
+ },
+ "jgo": {
+ "code": "jgo",
+ "name": "nguemba"
+ },
+ "nb": {
+ "code": "nb",
+ "name": "norueguês bokmål"
+ },
+ "nn": {
+ "code": "nn",
+ "name": "norueguês nynorsk"
+ },
+ "nus": {
+ "code": "nus",
+ "name": "nuer"
+ },
+ "nyn": {
+ "code": "nyn",
+ "name": "nyankole"
+ },
+ "or": {
+ "code": "or",
+ "name": "oriya"
+ },
+ "pa": {
+ "code": "pa",
+ "name": "panjabi"
+ },
+ "ps": {
+ "code": "ps",
+ "name": "pastó"
+ },
+ "fa": {
+ "code": "fa",
+ "name": "persa"
+ },
+ "pl": {
+ "code": "pl",
+ "name": "polaco"
+ },
+ "pt": {
+ "code": "pt",
+ "name": "português"
+ },
+ "pt-BR": {
+ "code": "pt-BR",
+ "name": "português do Brasil"
+ },
+ "pt-PT": {
+ "code": "pt-PT",
+ "name": "português europeu"
+ },
+ "ki": {
+ "code": "ki",
+ "name": "quicuio"
+ },
+ "ky": {
+ "code": "ky",
+ "name": "quirguiz"
+ },
+ "rm": {
+ "code": "rm",
+ "name": "romanche"
+ },
+ "rof": {
+ "code": "rof",
+ "name": "rombo"
+ },
+ "ro": {
+ "code": "ro",
+ "name": "romeno"
+ },
+ "rn": {
+ "code": "rn",
+ "name": "rundi"
+ },
+ "ru": {
+ "code": "ru",
+ "name": "russo"
+ },
+ "rwk": {
+ "code": "rwk",
+ "name": "rwa"
+ },
+ "saq": {
+ "code": "saq",
+ "name": "samburu"
+ },
+ "se": {
+ "code": "se",
+ "name": "sami do norte"
+ },
+ "sg": {
+ "code": "sg",
+ "name": "sango"
+ },
+ "sbp": {
+ "code": "sbp",
+ "name": "sangu"
+ },
+ "seh": {
+ "code": "seh",
+ "name": "sena"
+ },
+ "sr": {
+ "code": "sr",
+ "name": "sérvio"
+ },
+ "ksb": {
+ "code": "ksb",
+ "name": "shambala"
+ },
+ "sn": {
+ "code": "sn",
+ "name": "shona"
+ },
+ "xog": {
+ "code": "xog",
+ "name": "soga"
+ },
+ "so": {
+ "code": "so",
+ "name": "somali"
+ },
+ "sw": {
+ "code": "sw",
+ "name": "suaíli"
+ },
+ "swc": {
+ "code": "swc",
+ "name": "suaíli do Congo"
+ },
+ "sv": {
+ "code": "sv",
+ "name": "sueco"
+ },
+ "shi": {
+ "code": "shi",
+ "name": "tachelhit"
+ },
+ "th": {
+ "code": "th",
+ "name": "tailandês"
+ },
+ "dav": {
+ "code": "dav",
+ "name": "taita"
+ },
+ "tzm": {
+ "code": "tzm",
+ "name": "tamazight do Atlas Central"
+ },
+ "zgh": {
+ "code": "zgh",
+ "name": "tamazight padrão de Marrocos"
+ },
+ "ta": {
+ "code": "ta",
+ "name": "tâmil"
+ },
+ "twq": {
+ "code": "twq",
+ "name": "tasawaq"
+ },
+ "te": {
+ "code": "te",
+ "name": "telugu"
+ },
+ "teo": {
+ "code": "teo",
+ "name": "teso"
+ },
+ "bo": {
+ "code": "bo",
+ "name": "tibetano"
+ },
+ "ti": {
+ "code": "ti",
+ "name": "tigrínia"
+ },
+ "to": {
+ "code": "to",
+ "name": "tonga"
+ },
+ "tr": {
+ "code": "tr",
+ "name": "turco"
+ },
+ "uk": {
+ "code": "uk",
+ "name": "ucraniano"
+ },
+ "ug": {
+ "code": "ug",
+ "name": "uigur"
+ },
+ "ur": {
+ "code": "ur",
+ "name": "urdu"
+ },
+ "uz": {
+ "code": "uz",
+ "name": "usbeque"
+ },
+ "vai": {
+ "code": "vai",
+ "name": "Vai"
+ },
+ "vi": {
+ "code": "vi",
+ "name": "vietnamita"
+ },
+ "vun": {
+ "code": "vun",
+ "name": "vunjo"
+ },
+ "wae": {
+ "code": "wae",
+ "name": "walser"
+ },
+ "yav": {
+ "code": "yav",
+ "name": "yangben"
+ },
+ "dje": {
+ "code": "dje",
+ "name": "zarma"
+ },
+ "zu": {
+ "code": "zu",
+ "name": "zulu"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/language/pt.json b/library/intl/resources/language/pt.json
new file mode 100644
index 000000000..b8bfcaf8f
--- /dev/null
+++ b/library/intl/resources/language/pt.json
@@ -0,0 +1,738 @@
+{
+ "af": {
+ "code": "af",
+ "name": "africâner"
+ },
+ "agq": {
+ "code": "agq",
+ "name": "aghem"
+ },
+ "ak": {
+ "code": "ak",
+ "name": "akan"
+ },
+ "sq": {
+ "code": "sq",
+ "name": "albanês"
+ },
+ "de": {
+ "code": "de",
+ "name": "alemão"
+ },
+ "de-AT": {
+ "code": "de-AT",
+ "name": "alemão austríaco"
+ },
+ "gsw": {
+ "code": "gsw",
+ "name": "alemão suíço"
+ },
+ "de-CH": {
+ "code": "de-CH",
+ "name": "alto alemão suíço"
+ },
+ "am": {
+ "code": "am",
+ "name": "amárico"
+ },
+ "ar": {
+ "code": "ar",
+ "name": "árabe"
+ },
+ "ar-001": {
+ "code": "ar-001",
+ "name": "árabe moderno"
+ },
+ "hy": {
+ "code": "hy",
+ "name": "armênio"
+ },
+ "ast": {
+ "code": "ast",
+ "name": "asturiano"
+ },
+ "asa": {
+ "code": "asa",
+ "name": "asu"
+ },
+ "az": {
+ "code": "az",
+ "name": "azerbaijano"
+ },
+ "ksf": {
+ "code": "ksf",
+ "name": "bafia"
+ },
+ "bm": {
+ "code": "bm",
+ "name": "bambara"
+ },
+ "bas": {
+ "code": "bas",
+ "name": "basa"
+ },
+ "eu": {
+ "code": "eu",
+ "name": "basco"
+ },
+ "bez": {
+ "code": "bez",
+ "name": "bena"
+ },
+ "bn": {
+ "code": "bn",
+ "name": "bengali"
+ },
+ "be": {
+ "code": "be",
+ "name": "bielorrusso"
+ },
+ "my": {
+ "code": "my",
+ "name": "birmanês"
+ },
+ "brx": {
+ "code": "brx",
+ "name": "bodo"
+ },
+ "nb": {
+ "code": "nb",
+ "name": "bokmål norueguês"
+ },
+ "bs": {
+ "code": "bs",
+ "name": "bósnio"
+ },
+ "br": {
+ "code": "br",
+ "name": "bretão"
+ },
+ "bg": {
+ "code": "bg",
+ "name": "búlgaro"
+ },
+ "kn": {
+ "code": "kn",
+ "name": "canarês"
+ },
+ "ca": {
+ "code": "ca",
+ "name": "catalão"
+ },
+ "ks": {
+ "code": "ks",
+ "name": "caxemira"
+ },
+ "kk": {
+ "code": "kk",
+ "name": "cazaque"
+ },
+ "chr": {
+ "code": "chr",
+ "name": "cherokee"
+ },
+ "cgg": {
+ "code": "cgg",
+ "name": "chiga"
+ },
+ "zh": {
+ "code": "zh",
+ "name": "chinês"
+ },
+ "zh-Hans": {
+ "code": "zh-Hans",
+ "name": "chinês simplificado"
+ },
+ "zh-Hant": {
+ "code": "zh-Hant",
+ "name": "chinês tradicional"
+ },
+ "si": {
+ "code": "si",
+ "name": "cingalês"
+ },
+ "ko": {
+ "code": "ko",
+ "name": "coreano"
+ },
+ "hr": {
+ "code": "hr",
+ "name": "croata"
+ },
+ "da": {
+ "code": "da",
+ "name": "dinamarquês"
+ },
+ "dz": {
+ "code": "dz",
+ "name": "dzonga"
+ },
+ "ebu": {
+ "code": "ebu",
+ "name": "embu"
+ },
+ "sk": {
+ "code": "sk",
+ "name": "eslovaco"
+ },
+ "sl": {
+ "code": "sl",
+ "name": "esloveno"
+ },
+ "es": {
+ "code": "es",
+ "name": "espanhol"
+ },
+ "es-ES": {
+ "code": "es-ES",
+ "name": "espanhol europeu"
+ },
+ "es-MX": {
+ "code": "es-MX",
+ "name": "espanhol mexicano"
+ },
+ "eo": {
+ "code": "eo",
+ "name": "esperanto"
+ },
+ "et": {
+ "code": "et",
+ "name": "estoniano"
+ },
+ "ee": {
+ "code": "ee",
+ "name": "eve"
+ },
+ "ewo": {
+ "code": "ewo",
+ "name": "ewondo"
+ },
+ "fo": {
+ "code": "fo",
+ "name": "feroês"
+ },
+ "fil": {
+ "code": "fil",
+ "name": "filipino"
+ },
+ "fi": {
+ "code": "fi",
+ "name": "finlandês"
+ },
+ "nl-BE": {
+ "code": "nl-BE",
+ "name": "flamengo"
+ },
+ "fr": {
+ "code": "fr",
+ "name": "francês"
+ },
+ "fr-CA": {
+ "code": "fr-CA",
+ "name": "francês canadense"
+ },
+ "fr-CH": {
+ "code": "fr-CH",
+ "name": "francês suíço"
+ },
+ "fy": {
+ "code": "fy",
+ "name": "frísio ocidental"
+ },
+ "fur": {
+ "code": "fur",
+ "name": "friulano"
+ },
+ "ff": {
+ "code": "ff",
+ "name": "fula"
+ },
+ "gd": {
+ "code": "gd",
+ "name": "gaélico escocês"
+ },
+ "gl": {
+ "code": "gl",
+ "name": "galego"
+ },
+ "cy": {
+ "code": "cy",
+ "name": "galês"
+ },
+ "ka": {
+ "code": "ka",
+ "name": "georgiano"
+ },
+ "el": {
+ "code": "el",
+ "name": "grego"
+ },
+ "kl": {
+ "code": "kl",
+ "name": "groenlandês"
+ },
+ "guz": {
+ "code": "guz",
+ "name": "gusii"
+ },
+ "gu": {
+ "code": "gu",
+ "name": "guzerate"
+ },
+ "ha": {
+ "code": "ha",
+ "name": "hauçá"
+ },
+ "he": {
+ "code": "he",
+ "name": "hebraico"
+ },
+ "hi": {
+ "code": "hi",
+ "name": "híndi"
+ },
+ "nl": {
+ "code": "nl",
+ "name": "holandês"
+ },
+ "hu": {
+ "code": "hu",
+ "name": "húngaro"
+ },
+ "id": {
+ "code": "id",
+ "name": "indonésio"
+ },
+ "en": {
+ "code": "en",
+ "name": "inglês"
+ },
+ "en-US": {
+ "code": "en-US",
+ "name": "inglês americano"
+ },
+ "en-AU": {
+ "code": "en-AU",
+ "name": "inglês australiano"
+ },
+ "en-GB": {
+ "code": "en-GB",
+ "name": "inglês britânico"
+ },
+ "en-CA": {
+ "code": "en-CA",
+ "name": "inglês canadense"
+ },
+ "yo": {
+ "code": "yo",
+ "name": "ioruba"
+ },
+ "ga": {
+ "code": "ga",
+ "name": "irlandês"
+ },
+ "is": {
+ "code": "is",
+ "name": "islandês"
+ },
+ "it": {
+ "code": "it",
+ "name": "italiano"
+ },
+ "ja": {
+ "code": "ja",
+ "name": "japonês"
+ },
+ "dyo": {
+ "code": "dyo",
+ "name": "jola-fonyi"
+ },
+ "kea": {
+ "code": "kea",
+ "name": "kabuverdianu"
+ },
+ "kab": {
+ "code": "kab",
+ "name": "kabyle"
+ },
+ "kln": {
+ "code": "kln",
+ "name": "kalenjin"
+ },
+ "kam": {
+ "code": "kam",
+ "name": "kamba"
+ },
+ "km": {
+ "code": "km",
+ "name": "khmer"
+ },
+ "ksh": {
+ "code": "ksh",
+ "name": "kölsch"
+ },
+ "khq": {
+ "code": "khq",
+ "name": "koyra chiini"
+ },
+ "ses": {
+ "code": "ses",
+ "name": "koyraboro senni"
+ },
+ "nmg": {
+ "code": "nmg",
+ "name": "kwasio"
+ },
+ "lag": {
+ "code": "lag",
+ "name": "langi"
+ },
+ "lo": {
+ "code": "lo",
+ "name": "laosiano"
+ },
+ "lv": {
+ "code": "lv",
+ "name": "letão"
+ },
+ "ln": {
+ "code": "ln",
+ "name": "lingala"
+ },
+ "lt": {
+ "code": "lt",
+ "name": "lituano"
+ },
+ "lu": {
+ "code": "lu",
+ "name": "luba-catanga"
+ },
+ "lg": {
+ "code": "lg",
+ "name": "luganda"
+ },
+ "luo": {
+ "code": "luo",
+ "name": "Luo"
+ },
+ "xog": {
+ "code": "xog",
+ "name": "lusoga"
+ },
+ "lb": {
+ "code": "lb",
+ "name": "luxemburguês"
+ },
+ "luy": {
+ "code": "luy",
+ "name": "luyia"
+ },
+ "mk": {
+ "code": "mk",
+ "name": "macedônio"
+ },
+ "jmc": {
+ "code": "jmc",
+ "name": "machame"
+ },
+ "kde": {
+ "code": "kde",
+ "name": "maconde"
+ },
+ "mgh": {
+ "code": "mgh",
+ "name": "macua"
+ },
+ "ml": {
+ "code": "ml",
+ "name": "malaiala"
+ },
+ "ms": {
+ "code": "ms",
+ "name": "malaio"
+ },
+ "mg": {
+ "code": "mg",
+ "name": "malgaxe"
+ },
+ "mt": {
+ "code": "mt",
+ "name": "maltês"
+ },
+ "mr": {
+ "code": "mr",
+ "name": "marata"
+ },
+ "mas": {
+ "code": "mas",
+ "name": "massai"
+ },
+ "mer": {
+ "code": "mer",
+ "name": "meru"
+ },
+ "ro-MD": {
+ "code": "ro-MD",
+ "name": "moldávio"
+ },
+ "mn": {
+ "code": "mn",
+ "name": "mongol"
+ },
+ "mfe": {
+ "code": "mfe",
+ "name": "morisyen"
+ },
+ "mua": {
+ "code": "mua",
+ "name": "mundang"
+ },
+ "naq": {
+ "code": "naq",
+ "name": "nama"
+ },
+ "nd": {
+ "code": "nd",
+ "name": "ndebele do norte"
+ },
+ "ne": {
+ "code": "ne",
+ "name": "nepali"
+ },
+ "jgo": {
+ "code": "jgo",
+ "name": "nguemba"
+ },
+ "nus": {
+ "code": "nus",
+ "name": "nuer"
+ },
+ "nyn": {
+ "code": "nyn",
+ "name": "nyankole"
+ },
+ "nn": {
+ "code": "nn",
+ "name": "nynorsk norueguês"
+ },
+ "or": {
+ "code": "or",
+ "name": "oriya"
+ },
+ "pa": {
+ "code": "pa",
+ "name": "panjabi"
+ },
+ "ps": {
+ "code": "ps",
+ "name": "pashto"
+ },
+ "fa": {
+ "code": "fa",
+ "name": "persa"
+ },
+ "pl": {
+ "code": "pl",
+ "name": "polonês"
+ },
+ "pt": {
+ "code": "pt",
+ "name": "português"
+ },
+ "pt-BR": {
+ "code": "pt-BR",
+ "name": "português do Brasil"
+ },
+ "pt-PT": {
+ "code": "pt-PT",
+ "name": "português europeu"
+ },
+ "ki": {
+ "code": "ki",
+ "name": "quicuio"
+ },
+ "ky": {
+ "code": "ky",
+ "name": "quirguiz"
+ },
+ "rm": {
+ "code": "rm",
+ "name": "romanche"
+ },
+ "rof": {
+ "code": "rof",
+ "name": "rombo"
+ },
+ "ro": {
+ "code": "ro",
+ "name": "romeno"
+ },
+ "rn": {
+ "code": "rn",
+ "name": "rundi"
+ },
+ "ru": {
+ "code": "ru",
+ "name": "russo"
+ },
+ "rwk": {
+ "code": "rwk",
+ "name": "rwa"
+ },
+ "saq": {
+ "code": "saq",
+ "name": "samburu"
+ },
+ "se": {
+ "code": "se",
+ "name": "sami do norte"
+ },
+ "sg": {
+ "code": "sg",
+ "name": "sango"
+ },
+ "sbp": {
+ "code": "sbp",
+ "name": "sangu"
+ },
+ "seh": {
+ "code": "seh",
+ "name": "sena"
+ },
+ "sr": {
+ "code": "sr",
+ "name": "sérvio"
+ },
+ "dsb": {
+ "code": "dsb",
+ "name": "sérvio baixo"
+ },
+ "ksb": {
+ "code": "ksb",
+ "name": "shambala"
+ },
+ "sn": {
+ "code": "sn",
+ "name": "shona"
+ },
+ "so": {
+ "code": "so",
+ "name": "somali"
+ },
+ "hsb": {
+ "code": "hsb",
+ "name": "sorábio superior"
+ },
+ "sw": {
+ "code": "sw",
+ "name": "suaíli"
+ },
+ "swc": {
+ "code": "swc",
+ "name": "suaíli do Congo"
+ },
+ "sv": {
+ "code": "sv",
+ "name": "sueco"
+ },
+ "shi": {
+ "code": "shi",
+ "name": "tachelhit"
+ },
+ "th": {
+ "code": "th",
+ "name": "tailandês"
+ },
+ "dav": {
+ "code": "dav",
+ "name": "taita"
+ },
+ "tzm": {
+ "code": "tzm",
+ "name": "tamazight"
+ },
+ "zgh": {
+ "code": "zgh",
+ "name": "tamazight marroquino padrão"
+ },
+ "ta": {
+ "code": "ta",
+ "name": "tâmil"
+ },
+ "twq": {
+ "code": "twq",
+ "name": "tasawaq"
+ },
+ "cs": {
+ "code": "cs",
+ "name": "tcheco"
+ },
+ "te": {
+ "code": "te",
+ "name": "telugu"
+ },
+ "teo": {
+ "code": "teo",
+ "name": "teso"
+ },
+ "bo": {
+ "code": "bo",
+ "name": "tibetano"
+ },
+ "ti": {
+ "code": "ti",
+ "name": "tigrínia"
+ },
+ "to": {
+ "code": "to",
+ "name": "tonganês"
+ },
+ "tr": {
+ "code": "tr",
+ "name": "turco"
+ },
+ "uk": {
+ "code": "uk",
+ "name": "ucraniano"
+ },
+ "ug": {
+ "code": "ug",
+ "name": "uigur"
+ },
+ "ur": {
+ "code": "ur",
+ "name": "urdu"
+ },
+ "uz": {
+ "code": "uz",
+ "name": "usbeque"
+ },
+ "vai": {
+ "code": "vai",
+ "name": "Vai"
+ },
+ "vi": {
+ "code": "vi",
+ "name": "vietnamita"
+ },
+ "vun": {
+ "code": "vun",
+ "name": "vunjo"
+ },
+ "wae": {
+ "code": "wae",
+ "name": "walser"
+ },
+ "yav": {
+ "code": "yav",
+ "name": "yangben"
+ },
+ "dje": {
+ "code": "dje",
+ "name": "zarma"
+ },
+ "zu": {
+ "code": "zu",
+ "name": "zulu"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/language/rm.json b/library/intl/resources/language/rm.json
new file mode 100644
index 000000000..6053a5abd
--- /dev/null
+++ b/library/intl/resources/language/rm.json
@@ -0,0 +1,738 @@
+{
+ "af": {
+ "code": "af",
+ "name": "afrikaans"
+ },
+ "agq": {
+ "code": "agq",
+ "name": "Aghem"
+ },
+ "ak": {
+ "code": "ak",
+ "name": "akan"
+ },
+ "sq": {
+ "code": "sq",
+ "name": "albanais"
+ },
+ "am": {
+ "code": "am",
+ "name": "amaric"
+ },
+ "ar-001": {
+ "code": "ar-001",
+ "name": "ar_001"
+ },
+ "ar": {
+ "code": "ar",
+ "name": "arab"
+ },
+ "hy": {
+ "code": "hy",
+ "name": "armen"
+ },
+ "az": {
+ "code": "az",
+ "name": "aserbeidschanic"
+ },
+ "ast": {
+ "code": "ast",
+ "name": "asturian"
+ },
+ "asa": {
+ "code": "asa",
+ "name": "Asu"
+ },
+ "hsb": {
+ "code": "hsb",
+ "name": "aut sorb"
+ },
+ "ksf": {
+ "code": "ksf",
+ "name": "Bafia"
+ },
+ "bm": {
+ "code": "bm",
+ "name": "bambara"
+ },
+ "bas": {
+ "code": "bas",
+ "name": "basaa"
+ },
+ "eu": {
+ "code": "eu",
+ "name": "basc"
+ },
+ "dsb": {
+ "code": "dsb",
+ "name": "bass sorb"
+ },
+ "bez": {
+ "code": "bez",
+ "name": "Bena"
+ },
+ "bn": {
+ "code": "bn",
+ "name": "bengal"
+ },
+ "be": {
+ "code": "be",
+ "name": "bieloruss"
+ },
+ "my": {
+ "code": "my",
+ "name": "birman"
+ },
+ "brx": {
+ "code": "brx",
+ "name": "Bodo"
+ },
+ "bs": {
+ "code": "bs",
+ "name": "bosniac"
+ },
+ "br": {
+ "code": "br",
+ "name": "breton"
+ },
+ "bg": {
+ "code": "bg",
+ "name": "bulgar"
+ },
+ "km": {
+ "code": "km",
+ "name": "cambodschan"
+ },
+ "kk": {
+ "code": "kk",
+ "name": "casac"
+ },
+ "ca": {
+ "code": "ca",
+ "name": "catalan"
+ },
+ "tzm": {
+ "code": "tzm",
+ "name": "Central Atlas Tamazight"
+ },
+ "chr": {
+ "code": "chr",
+ "name": "cherokee"
+ },
+ "cgg": {
+ "code": "cgg",
+ "name": "Chiga"
+ },
+ "zh": {
+ "code": "zh",
+ "name": "chinais"
+ },
+ "zh-Hans": {
+ "code": "zh-Hans",
+ "name": "chinais simplifitgà"
+ },
+ "zh-Hant": {
+ "code": "zh-Hant",
+ "name": "chinais tradiziunal"
+ },
+ "ksh": {
+ "code": "ksh",
+ "name": "Colognian"
+ },
+ "swc": {
+ "code": "swc",
+ "name": "Congo Swahili"
+ },
+ "ko": {
+ "code": "ko",
+ "name": "corean"
+ },
+ "hr": {
+ "code": "hr",
+ "name": "croat"
+ },
+ "da": {
+ "code": "da",
+ "name": "danais"
+ },
+ "de-CH": {
+ "code": "de-CH",
+ "name": "de_CH"
+ },
+ "dz": {
+ "code": "dz",
+ "name": "dzongkha"
+ },
+ "he": {
+ "code": "he",
+ "name": "ebraic"
+ },
+ "ebu": {
+ "code": "ebu",
+ "name": "Embu"
+ },
+ "en": {
+ "code": "en",
+ "name": "englais"
+ },
+ "en-US": {
+ "code": "en-US",
+ "name": "englais american"
+ },
+ "en-AU": {
+ "code": "en-AU",
+ "name": "englais australian"
+ },
+ "en-GB": {
+ "code": "en-GB",
+ "name": "englais britannic"
+ },
+ "en-CA": {
+ "code": "en-CA",
+ "name": "englais canadais"
+ },
+ "eo": {
+ "code": "eo",
+ "name": "esperanto"
+ },
+ "et": {
+ "code": "et",
+ "name": "eston"
+ },
+ "ee": {
+ "code": "ee",
+ "name": "ewe"
+ },
+ "ewo": {
+ "code": "ewo",
+ "name": "ewondo"
+ },
+ "fo": {
+ "code": "fo",
+ "name": "ferrais"
+ },
+ "fil": {
+ "code": "fil",
+ "name": "filippino"
+ },
+ "fi": {
+ "code": "fi",
+ "name": "finlandais"
+ },
+ "nl-BE": {
+ "code": "nl-BE",
+ "name": "flam"
+ },
+ "fr": {
+ "code": "fr",
+ "name": "franzos"
+ },
+ "fr-CA": {
+ "code": "fr-CA",
+ "name": "franzos canadais"
+ },
+ "fr-CH": {
+ "code": "fr-CH",
+ "name": "franzos svizzer"
+ },
+ "fy": {
+ "code": "fy",
+ "name": "fris"
+ },
+ "fur": {
+ "code": "fur",
+ "name": "friulan"
+ },
+ "ff": {
+ "code": "ff",
+ "name": "fulah"
+ },
+ "gd": {
+ "code": "gd",
+ "name": "gaelic scot"
+ },
+ "gl": {
+ "code": "gl",
+ "name": "galician"
+ },
+ "lg": {
+ "code": "lg",
+ "name": "ganda"
+ },
+ "ka": {
+ "code": "ka",
+ "name": "georgian"
+ },
+ "ja": {
+ "code": "ja",
+ "name": "giapunais"
+ },
+ "el": {
+ "code": "el",
+ "name": "grec"
+ },
+ "kl": {
+ "code": "kl",
+ "name": "grönlandais"
+ },
+ "gu": {
+ "code": "gu",
+ "name": "gujarati"
+ },
+ "guz": {
+ "code": "guz",
+ "name": "Gusii"
+ },
+ "ha": {
+ "code": "ha",
+ "name": "haussa"
+ },
+ "hi": {
+ "code": "hi",
+ "name": "hindi"
+ },
+ "id": {
+ "code": "id",
+ "name": "indonais"
+ },
+ "ga": {
+ "code": "ga",
+ "name": "irlandais"
+ },
+ "is": {
+ "code": "is",
+ "name": "islandais"
+ },
+ "dyo": {
+ "code": "dyo",
+ "name": "Jola-Fonyi"
+ },
+ "kea": {
+ "code": "kea",
+ "name": "Kabuverdianu"
+ },
+ "kab": {
+ "code": "kab",
+ "name": "kabyle"
+ },
+ "kln": {
+ "code": "kln",
+ "name": "Kalenjin"
+ },
+ "kam": {
+ "code": "kam",
+ "name": "kamba"
+ },
+ "kn": {
+ "code": "kn",
+ "name": "kannada"
+ },
+ "ks": {
+ "code": "ks",
+ "name": "kashmiri"
+ },
+ "ki": {
+ "code": "ki",
+ "name": "kikuyu"
+ },
+ "cy": {
+ "code": "cy",
+ "name": "kimric"
+ },
+ "ky": {
+ "code": "ky",
+ "name": "kirghis"
+ },
+ "khq": {
+ "code": "khq",
+ "name": "Koyra Chiini"
+ },
+ "ses": {
+ "code": "ses",
+ "name": "Koyraboro Senni"
+ },
+ "nmg": {
+ "code": "nmg",
+ "name": "Kwasio"
+ },
+ "lag": {
+ "code": "lag",
+ "name": "Langi"
+ },
+ "lo": {
+ "code": "lo",
+ "name": "laot"
+ },
+ "lv": {
+ "code": "lv",
+ "name": "letton"
+ },
+ "ln": {
+ "code": "ln",
+ "name": "lingala"
+ },
+ "lt": {
+ "code": "lt",
+ "name": "lituan"
+ },
+ "lu": {
+ "code": "lu",
+ "name": "luba-katanga"
+ },
+ "luo": {
+ "code": "luo",
+ "name": "Luo"
+ },
+ "lb": {
+ "code": "lb",
+ "name": "luxemburgais"
+ },
+ "luy": {
+ "code": "luy",
+ "name": "Luyia"
+ },
+ "mk": {
+ "code": "mk",
+ "name": "macedon"
+ },
+ "jmc": {
+ "code": "jmc",
+ "name": "Machame"
+ },
+ "mgh": {
+ "code": "mgh",
+ "name": "Makhuwa-Meetto"
+ },
+ "kde": {
+ "code": "kde",
+ "name": "Makonde"
+ },
+ "mg": {
+ "code": "mg",
+ "name": "malagassi"
+ },
+ "ms": {
+ "code": "ms",
+ "name": "malaic"
+ },
+ "ml": {
+ "code": "ml",
+ "name": "malayalam"
+ },
+ "mt": {
+ "code": "mt",
+ "name": "maltais"
+ },
+ "mr": {
+ "code": "mr",
+ "name": "marathi"
+ },
+ "mas": {
+ "code": "mas",
+ "name": "masai"
+ },
+ "mer": {
+ "code": "mer",
+ "name": "Meru"
+ },
+ "ro-MD": {
+ "code": "ro-MD",
+ "name": "moldav"
+ },
+ "mn": {
+ "code": "mn",
+ "name": "mongolic"
+ },
+ "mfe": {
+ "code": "mfe",
+ "name": "Morisyen"
+ },
+ "mua": {
+ "code": "mua",
+ "name": "Mundang"
+ },
+ "naq": {
+ "code": "naq",
+ "name": "Nama"
+ },
+ "nd": {
+ "code": "nd",
+ "name": "ndebele dal nord"
+ },
+ "ne": {
+ "code": "ne",
+ "name": "nepalais"
+ },
+ "jgo": {
+ "code": "jgo",
+ "name": "Ngomba"
+ },
+ "nb": {
+ "code": "nb",
+ "name": "norvegais bokmål"
+ },
+ "nn": {
+ "code": "nn",
+ "name": "norvegiais nynorsk"
+ },
+ "nus": {
+ "code": "nus",
+ "name": "Nuer"
+ },
+ "nyn": {
+ "code": "nyn",
+ "name": "nyankole"
+ },
+ "nl": {
+ "code": "nl",
+ "name": "ollandais"
+ },
+ "or": {
+ "code": "or",
+ "name": "oriya"
+ },
+ "ps": {
+ "code": "ps",
+ "name": "paschto"
+ },
+ "fa": {
+ "code": "fa",
+ "name": "persian"
+ },
+ "pl": {
+ "code": "pl",
+ "name": "polac"
+ },
+ "pt": {
+ "code": "pt",
+ "name": "portugais"
+ },
+ "pt-BR": {
+ "code": "pt-BR",
+ "name": "portugais brasilian"
+ },
+ "pt-PT": {
+ "code": "pt-PT",
+ "name": "portugais iberian"
+ },
+ "pa": {
+ "code": "pa",
+ "name": "punjabi"
+ },
+ "rof": {
+ "code": "rof",
+ "name": "Rombo"
+ },
+ "rm": {
+ "code": "rm",
+ "name": "rumantsch"
+ },
+ "ro": {
+ "code": "ro",
+ "name": "rumen"
+ },
+ "rn": {
+ "code": "rn",
+ "name": "rundi"
+ },
+ "ru": {
+ "code": "ru",
+ "name": "russ"
+ },
+ "rwk": {
+ "code": "rwk",
+ "name": "Rwa"
+ },
+ "saq": {
+ "code": "saq",
+ "name": "Samburu"
+ },
+ "se": {
+ "code": "se",
+ "name": "sami dal nord"
+ },
+ "sg": {
+ "code": "sg",
+ "name": "sango"
+ },
+ "sbp": {
+ "code": "sbp",
+ "name": "Sangu"
+ },
+ "seh": {
+ "code": "seh",
+ "name": "Sena"
+ },
+ "sr": {
+ "code": "sr",
+ "name": "serb"
+ },
+ "ksb": {
+ "code": "ksb",
+ "name": "Shambala"
+ },
+ "sn": {
+ "code": "sn",
+ "name": "shona"
+ },
+ "si": {
+ "code": "si",
+ "name": "singalais"
+ },
+ "sk": {
+ "code": "sk",
+ "name": "slovac"
+ },
+ "sl": {
+ "code": "sl",
+ "name": "sloven"
+ },
+ "xog": {
+ "code": "xog",
+ "name": "Soga"
+ },
+ "so": {
+ "code": "so",
+ "name": "somali"
+ },
+ "es": {
+ "code": "es",
+ "name": "spagnol"
+ },
+ "es-ES": {
+ "code": "es-ES",
+ "name": "spagnol iberic"
+ },
+ "es-MX": {
+ "code": "es-MX",
+ "name": "spagnol mexican"
+ },
+ "zgh": {
+ "code": "zgh",
+ "name": "Standard Moroccan Tamazight"
+ },
+ "sw": {
+ "code": "sw",
+ "name": "suahili"
+ },
+ "sv": {
+ "code": "sv",
+ "name": "svedais"
+ },
+ "shi": {
+ "code": "shi",
+ "name": "Tachelhit"
+ },
+ "th": {
+ "code": "th",
+ "name": "tailandais"
+ },
+ "dav": {
+ "code": "dav",
+ "name": "Taita"
+ },
+ "it": {
+ "code": "it",
+ "name": "talian"
+ },
+ "ta": {
+ "code": "ta",
+ "name": "tamil"
+ },
+ "twq": {
+ "code": "twq",
+ "name": "Tasawaq"
+ },
+ "te": {
+ "code": "te",
+ "name": "telugu"
+ },
+ "teo": {
+ "code": "teo",
+ "name": "Teso"
+ },
+ "bo": {
+ "code": "bo",
+ "name": "tibetan"
+ },
+ "ti": {
+ "code": "ti",
+ "name": "tigrinya"
+ },
+ "tr": {
+ "code": "tr",
+ "name": "tirc"
+ },
+ "to": {
+ "code": "to",
+ "name": "tonga"
+ },
+ "cs": {
+ "code": "cs",
+ "name": "tschec"
+ },
+ "de": {
+ "code": "de",
+ "name": "tudestg"
+ },
+ "de-AT": {
+ "code": "de-AT",
+ "name": "tudestg austriac"
+ },
+ "gsw": {
+ "code": "gsw",
+ "name": "tudestg svizzer"
+ },
+ "uk": {
+ "code": "uk",
+ "name": "ucranais"
+ },
+ "ug": {
+ "code": "ug",
+ "name": "uiguric"
+ },
+ "hu": {
+ "code": "hu",
+ "name": "ungarais"
+ },
+ "ur": {
+ "code": "ur",
+ "name": "urdu"
+ },
+ "uz": {
+ "code": "uz",
+ "name": "usbec"
+ },
+ "vai": {
+ "code": "vai",
+ "name": "Vai"
+ },
+ "vi": {
+ "code": "vi",
+ "name": "vietnamais"
+ },
+ "vun": {
+ "code": "vun",
+ "name": "Vunjo"
+ },
+ "wae": {
+ "code": "wae",
+ "name": "Walser"
+ },
+ "yav": {
+ "code": "yav",
+ "name": "Yangben"
+ },
+ "yo": {
+ "code": "yo",
+ "name": "yoruba"
+ },
+ "dje": {
+ "code": "dje",
+ "name": "Zarma"
+ },
+ "zu": {
+ "code": "zu",
+ "name": "zulu"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/language/rn.json b/library/intl/resources/language/rn.json
new file mode 100644
index 000000000..02fde6fc1
--- /dev/null
+++ b/library/intl/resources/language/rn.json
@@ -0,0 +1,738 @@
+{
+ "af": {
+ "code": "af",
+ "name": "Afrikaans"
+ },
+ "agq": {
+ "code": "agq",
+ "name": "Aghem"
+ },
+ "sq": {
+ "code": "sq",
+ "name": "Albanian"
+ },
+ "ar-001": {
+ "code": "ar-001",
+ "name": "ar_001"
+ },
+ "hy": {
+ "code": "hy",
+ "name": "Armenian"
+ },
+ "ast": {
+ "code": "ast",
+ "name": "Asturian"
+ },
+ "asa": {
+ "code": "asa",
+ "name": "Asu"
+ },
+ "az": {
+ "code": "az",
+ "name": "Azerbaijani"
+ },
+ "ksf": {
+ "code": "ksf",
+ "name": "Bafia"
+ },
+ "bm": {
+ "code": "bm",
+ "name": "Bambara"
+ },
+ "bas": {
+ "code": "bas",
+ "name": "Basaa"
+ },
+ "eu": {
+ "code": "eu",
+ "name": "Basque"
+ },
+ "bez": {
+ "code": "bez",
+ "name": "Bena"
+ },
+ "brx": {
+ "code": "brx",
+ "name": "Bodo"
+ },
+ "bs": {
+ "code": "bs",
+ "name": "Bosnian"
+ },
+ "br": {
+ "code": "br",
+ "name": "Breton"
+ },
+ "ca": {
+ "code": "ca",
+ "name": "Catalan"
+ },
+ "tzm": {
+ "code": "tzm",
+ "name": "Central Atlas Tamazight"
+ },
+ "chr": {
+ "code": "chr",
+ "name": "Cherokee"
+ },
+ "cgg": {
+ "code": "cgg",
+ "name": "Chiga"
+ },
+ "ksh": {
+ "code": "ksh",
+ "name": "Colognian"
+ },
+ "swc": {
+ "code": "swc",
+ "name": "Congo Swahili"
+ },
+ "hr": {
+ "code": "hr",
+ "name": "Croatian"
+ },
+ "da": {
+ "code": "da",
+ "name": "Danish"
+ },
+ "de-AT": {
+ "code": "de-AT",
+ "name": "de_AT"
+ },
+ "de-CH": {
+ "code": "de-CH",
+ "name": "de_CH"
+ },
+ "dz": {
+ "code": "dz",
+ "name": "Dzongkha"
+ },
+ "ebu": {
+ "code": "ebu",
+ "name": "Embu"
+ },
+ "en-AU": {
+ "code": "en-AU",
+ "name": "en_AU"
+ },
+ "en-CA": {
+ "code": "en-CA",
+ "name": "en_CA"
+ },
+ "en-GB": {
+ "code": "en-GB",
+ "name": "en_GB"
+ },
+ "en-US": {
+ "code": "en-US",
+ "name": "en_US"
+ },
+ "es-ES": {
+ "code": "es-ES",
+ "name": "es_ES"
+ },
+ "es-MX": {
+ "code": "es-MX",
+ "name": "es_MX"
+ },
+ "eo": {
+ "code": "eo",
+ "name": "Esperanto"
+ },
+ "et": {
+ "code": "et",
+ "name": "Estonian"
+ },
+ "ee": {
+ "code": "ee",
+ "name": "Ewe"
+ },
+ "ewo": {
+ "code": "ewo",
+ "name": "Ewondo"
+ },
+ "fo": {
+ "code": "fo",
+ "name": "Faroese"
+ },
+ "fil": {
+ "code": "fil",
+ "name": "Filipino"
+ },
+ "fi": {
+ "code": "fi",
+ "name": "Finnish"
+ },
+ "fr-CA": {
+ "code": "fr-CA",
+ "name": "fr_CA"
+ },
+ "fr-CH": {
+ "code": "fr-CH",
+ "name": "fr_CH"
+ },
+ "fur": {
+ "code": "fur",
+ "name": "Friulian"
+ },
+ "ff": {
+ "code": "ff",
+ "name": "Fulah"
+ },
+ "gl": {
+ "code": "gl",
+ "name": "Galician"
+ },
+ "lg": {
+ "code": "lg",
+ "name": "Ganda"
+ },
+ "ka": {
+ "code": "ka",
+ "name": "Georgian"
+ },
+ "gu": {
+ "code": "gu",
+ "name": "Gujarati"
+ },
+ "guz": {
+ "code": "guz",
+ "name": "Gusii"
+ },
+ "he": {
+ "code": "he",
+ "name": "Hebrew"
+ },
+ "ar": {
+ "code": "ar",
+ "name": "Icarabu"
+ },
+ "is": {
+ "code": "is",
+ "name": "Icelandic"
+ },
+ "es": {
+ "code": "es",
+ "name": "Icesipanyolo"
+ },
+ "en": {
+ "code": "en",
+ "name": "Icongereza"
+ },
+ "cs": {
+ "code": "cs",
+ "name": "Igiceke"
+ },
+ "fr": {
+ "code": "fr",
+ "name": "Igifaransa"
+ },
+ "ha": {
+ "code": "ha",
+ "name": "Igihawusa"
+ },
+ "hi": {
+ "code": "hi",
+ "name": "Igihindi"
+ },
+ "nl": {
+ "code": "nl",
+ "name": "Igiholandi"
+ },
+ "km": {
+ "code": "km",
+ "name": "Igikambodiya"
+ },
+ "ak": {
+ "code": "ak",
+ "name": "Igikani"
+ },
+ "fa": {
+ "code": "fa",
+ "name": "Igiperisi"
+ },
+ "pt": {
+ "code": "pt",
+ "name": "Igiporutugari"
+ },
+ "pa": {
+ "code": "pa",
+ "name": "Igipunjabi"
+ },
+ "zh": {
+ "code": "zh",
+ "name": "Igishinwa"
+ },
+ "so": {
+ "code": "so",
+ "name": "Igisomali"
+ },
+ "sv": {
+ "code": "sv",
+ "name": "Igisuweduwa"
+ },
+ "it": {
+ "code": "it",
+ "name": "Igitaliyani"
+ },
+ "ta": {
+ "code": "ta",
+ "name": "Igitamili"
+ },
+ "tr": {
+ "code": "tr",
+ "name": "Igiturukiya"
+ },
+ "be": {
+ "code": "be",
+ "name": "Ikibelarusiya"
+ },
+ "bn": {
+ "code": "bn",
+ "name": "Ikibengali"
+ },
+ "de": {
+ "code": "de",
+ "name": "Ikidage"
+ },
+ "el": {
+ "code": "el",
+ "name": "Ikigereki"
+ },
+ "am": {
+ "code": "am",
+ "name": "Ikimuhariki"
+ },
+ "ne": {
+ "code": "ne",
+ "name": "Ikinepali"
+ },
+ "my": {
+ "code": "my",
+ "name": "Ikinyabirimaniya"
+ },
+ "bg": {
+ "code": "bg",
+ "name": "Ikinyabuligariya"
+ },
+ "hu": {
+ "code": "hu",
+ "name": "Ikinyahongiriya"
+ },
+ "ko": {
+ "code": "ko",
+ "name": "Ikinyakoreya"
+ },
+ "ms": {
+ "code": "ms",
+ "name": "Ikinyamaleziya"
+ },
+ "pl": {
+ "code": "pl",
+ "name": "Ikinyapolonye"
+ },
+ "ro": {
+ "code": "ro",
+ "name": "Ikinyarumaniya"
+ },
+ "th": {
+ "code": "th",
+ "name": "Ikinyatayilandi"
+ },
+ "vi": {
+ "code": "vi",
+ "name": "Ikinyaviyetinamu"
+ },
+ "uk": {
+ "code": "uk",
+ "name": "Ikinyayukereni"
+ },
+ "id": {
+ "code": "id",
+ "name": "Ikinyendoziya"
+ },
+ "rn": {
+ "code": "rn",
+ "name": "Ikirundi"
+ },
+ "ru": {
+ "code": "ru",
+ "name": "Ikirusiya"
+ },
+ "ja": {
+ "code": "ja",
+ "name": "Ikiyapani"
+ },
+ "yo": {
+ "code": "yo",
+ "name": "Ikiyoruba"
+ },
+ "zu": {
+ "code": "zu",
+ "name": "Ikizulu"
+ },
+ "ur": {
+ "code": "ur",
+ "name": "Inyeyurudu"
+ },
+ "ga": {
+ "code": "ga",
+ "name": "Irish"
+ },
+ "dyo": {
+ "code": "dyo",
+ "name": "Jola-Fonyi"
+ },
+ "kea": {
+ "code": "kea",
+ "name": "Kabuverdianu"
+ },
+ "kab": {
+ "code": "kab",
+ "name": "Kabyle"
+ },
+ "kl": {
+ "code": "kl",
+ "name": "Kalaallisut"
+ },
+ "kln": {
+ "code": "kln",
+ "name": "Kalenjin"
+ },
+ "kam": {
+ "code": "kam",
+ "name": "Kamba"
+ },
+ "kn": {
+ "code": "kn",
+ "name": "Kannada"
+ },
+ "ks": {
+ "code": "ks",
+ "name": "Kashmiri"
+ },
+ "kk": {
+ "code": "kk",
+ "name": "Kazakh"
+ },
+ "ki": {
+ "code": "ki",
+ "name": "Kikuyu"
+ },
+ "khq": {
+ "code": "khq",
+ "name": "Koyra Chiini"
+ },
+ "ses": {
+ "code": "ses",
+ "name": "Koyraboro Senni"
+ },
+ "nmg": {
+ "code": "nmg",
+ "name": "Kwasio"
+ },
+ "ky": {
+ "code": "ky",
+ "name": "Kyrgyz"
+ },
+ "lag": {
+ "code": "lag",
+ "name": "Langi"
+ },
+ "lo": {
+ "code": "lo",
+ "name": "Lao"
+ },
+ "lv": {
+ "code": "lv",
+ "name": "Latvian"
+ },
+ "ln": {
+ "code": "ln",
+ "name": "Lingala"
+ },
+ "lt": {
+ "code": "lt",
+ "name": "Lithuanian"
+ },
+ "dsb": {
+ "code": "dsb",
+ "name": "Lower Sorbian"
+ },
+ "lu": {
+ "code": "lu",
+ "name": "Luba-Katanga"
+ },
+ "luo": {
+ "code": "luo",
+ "name": "Luo"
+ },
+ "lb": {
+ "code": "lb",
+ "name": "Luxembourgish"
+ },
+ "luy": {
+ "code": "luy",
+ "name": "Luyia"
+ },
+ "mk": {
+ "code": "mk",
+ "name": "Macedonian"
+ },
+ "jmc": {
+ "code": "jmc",
+ "name": "Machame"
+ },
+ "mgh": {
+ "code": "mgh",
+ "name": "Makhuwa-Meetto"
+ },
+ "kde": {
+ "code": "kde",
+ "name": "Makonde"
+ },
+ "mg": {
+ "code": "mg",
+ "name": "Malagasy"
+ },
+ "ml": {
+ "code": "ml",
+ "name": "Malayalam"
+ },
+ "mt": {
+ "code": "mt",
+ "name": "Maltese"
+ },
+ "mr": {
+ "code": "mr",
+ "name": "Marathi"
+ },
+ "mas": {
+ "code": "mas",
+ "name": "Masai"
+ },
+ "mer": {
+ "code": "mer",
+ "name": "Meru"
+ },
+ "mn": {
+ "code": "mn",
+ "name": "Mongolian"
+ },
+ "mfe": {
+ "code": "mfe",
+ "name": "Morisyen"
+ },
+ "mua": {
+ "code": "mua",
+ "name": "Mundang"
+ },
+ "naq": {
+ "code": "naq",
+ "name": "Nama"
+ },
+ "jgo": {
+ "code": "jgo",
+ "name": "Ngomba"
+ },
+ "nl-BE": {
+ "code": "nl-BE",
+ "name": "nl_BE"
+ },
+ "nd": {
+ "code": "nd",
+ "name": "North Ndebele"
+ },
+ "se": {
+ "code": "se",
+ "name": "Northern Sami"
+ },
+ "nb": {
+ "code": "nb",
+ "name": "Norwegian Bokmål"
+ },
+ "nn": {
+ "code": "nn",
+ "name": "Norwegian Nynorsk"
+ },
+ "nus": {
+ "code": "nus",
+ "name": "Nuer"
+ },
+ "nyn": {
+ "code": "nyn",
+ "name": "Nyankole"
+ },
+ "or": {
+ "code": "or",
+ "name": "Oriya"
+ },
+ "ps": {
+ "code": "ps",
+ "name": "Pashto"
+ },
+ "pt-BR": {
+ "code": "pt-BR",
+ "name": "pt_BR"
+ },
+ "pt-PT": {
+ "code": "pt-PT",
+ "name": "pt_PT"
+ },
+ "ro-MD": {
+ "code": "ro-MD",
+ "name": "ro_MD"
+ },
+ "rm": {
+ "code": "rm",
+ "name": "Romansh"
+ },
+ "rof": {
+ "code": "rof",
+ "name": "Rombo"
+ },
+ "rwk": {
+ "code": "rwk",
+ "name": "Rwa"
+ },
+ "saq": {
+ "code": "saq",
+ "name": "Samburu"
+ },
+ "sg": {
+ "code": "sg",
+ "name": "Sango"
+ },
+ "sbp": {
+ "code": "sbp",
+ "name": "Sangu"
+ },
+ "gd": {
+ "code": "gd",
+ "name": "Scottish Gaelic"
+ },
+ "seh": {
+ "code": "seh",
+ "name": "Sena"
+ },
+ "sr": {
+ "code": "sr",
+ "name": "Serbian"
+ },
+ "ksb": {
+ "code": "ksb",
+ "name": "Shambala"
+ },
+ "sn": {
+ "code": "sn",
+ "name": "Shona"
+ },
+ "si": {
+ "code": "si",
+ "name": "Sinhala"
+ },
+ "sk": {
+ "code": "sk",
+ "name": "Slovak"
+ },
+ "sl": {
+ "code": "sl",
+ "name": "Slovenian"
+ },
+ "xog": {
+ "code": "xog",
+ "name": "Soga"
+ },
+ "zgh": {
+ "code": "zgh",
+ "name": "Standard Moroccan Tamazight"
+ },
+ "sw": {
+ "code": "sw",
+ "name": "Swahili"
+ },
+ "gsw": {
+ "code": "gsw",
+ "name": "Swiss German"
+ },
+ "shi": {
+ "code": "shi",
+ "name": "Tachelhit"
+ },
+ "dav": {
+ "code": "dav",
+ "name": "Taita"
+ },
+ "twq": {
+ "code": "twq",
+ "name": "Tasawaq"
+ },
+ "te": {
+ "code": "te",
+ "name": "Telugu"
+ },
+ "teo": {
+ "code": "teo",
+ "name": "Teso"
+ },
+ "bo": {
+ "code": "bo",
+ "name": "Tibetan"
+ },
+ "ti": {
+ "code": "ti",
+ "name": "Tigrinya"
+ },
+ "to": {
+ "code": "to",
+ "name": "Tongan"
+ },
+ "hsb": {
+ "code": "hsb",
+ "name": "Upper Sorbian"
+ },
+ "ug": {
+ "code": "ug",
+ "name": "Uyghur"
+ },
+ "uz": {
+ "code": "uz",
+ "name": "Uzbek"
+ },
+ "vai": {
+ "code": "vai",
+ "name": "Vai"
+ },
+ "vun": {
+ "code": "vun",
+ "name": "Vunjo"
+ },
+ "wae": {
+ "code": "wae",
+ "name": "Walser"
+ },
+ "cy": {
+ "code": "cy",
+ "name": "Welsh"
+ },
+ "fy": {
+ "code": "fy",
+ "name": "Western Frisian"
+ },
+ "yav": {
+ "code": "yav",
+ "name": "Yangben"
+ },
+ "dje": {
+ "code": "dje",
+ "name": "Zarma"
+ },
+ "zh-Hans": {
+ "code": "zh-Hans",
+ "name": "zh_Hans"
+ },
+ "zh-Hant": {
+ "code": "zh-Hant",
+ "name": "zh_Hant"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/language/ro.json b/library/intl/resources/language/ro.json
new file mode 100644
index 000000000..32fde8f18
--- /dev/null
+++ b/library/intl/resources/language/ro.json
@@ -0,0 +1,738 @@
+{
+ "af": {
+ "code": "af",
+ "name": "afrikaans"
+ },
+ "agq": {
+ "code": "agq",
+ "name": "aghem"
+ },
+ "ak": {
+ "code": "ak",
+ "name": "akan"
+ },
+ "sq": {
+ "code": "sq",
+ "name": "albaneză"
+ },
+ "am": {
+ "code": "am",
+ "name": "amharică"
+ },
+ "ar": {
+ "code": "ar",
+ "name": "arabă"
+ },
+ "ar-001": {
+ "code": "ar-001",
+ "name": "arabă standard modernă"
+ },
+ "hy": {
+ "code": "hy",
+ "name": "armeană"
+ },
+ "ast": {
+ "code": "ast",
+ "name": "asturiană"
+ },
+ "asa": {
+ "code": "asa",
+ "name": "asu"
+ },
+ "az": {
+ "code": "az",
+ "name": "azeră"
+ },
+ "ksf": {
+ "code": "ksf",
+ "name": "bafia"
+ },
+ "bm": {
+ "code": "bm",
+ "name": "bambara"
+ },
+ "bas": {
+ "code": "bas",
+ "name": "basaa"
+ },
+ "eu": {
+ "code": "eu",
+ "name": "bască"
+ },
+ "bez": {
+ "code": "bez",
+ "name": "bena"
+ },
+ "bn": {
+ "code": "bn",
+ "name": "bengaleză"
+ },
+ "be": {
+ "code": "be",
+ "name": "bielorusă"
+ },
+ "my": {
+ "code": "my",
+ "name": "birmaneză"
+ },
+ "brx": {
+ "code": "brx",
+ "name": "bodo"
+ },
+ "bs": {
+ "code": "bs",
+ "name": "bosniacă"
+ },
+ "br": {
+ "code": "br",
+ "name": "bretonă"
+ },
+ "bg": {
+ "code": "bg",
+ "name": "bulgară"
+ },
+ "ks": {
+ "code": "ks",
+ "name": "cașmiră"
+ },
+ "ca": {
+ "code": "ca",
+ "name": "catalană"
+ },
+ "cs": {
+ "code": "cs",
+ "name": "cehă"
+ },
+ "chr": {
+ "code": "chr",
+ "name": "cherokee"
+ },
+ "cgg": {
+ "code": "cgg",
+ "name": "chiga"
+ },
+ "zh": {
+ "code": "zh",
+ "name": "chineză"
+ },
+ "zh-Hans": {
+ "code": "zh-Hans",
+ "name": "chineză simplificată"
+ },
+ "zh-Hant": {
+ "code": "zh-Hant",
+ "name": "chineză tradițională"
+ },
+ "ko": {
+ "code": "ko",
+ "name": "coreeană"
+ },
+ "hr": {
+ "code": "hr",
+ "name": "croată"
+ },
+ "da": {
+ "code": "da",
+ "name": "daneză"
+ },
+ "dz": {
+ "code": "dz",
+ "name": "dzongkha"
+ },
+ "he": {
+ "code": "he",
+ "name": "ebraică"
+ },
+ "ebu": {
+ "code": "ebu",
+ "name": "embu"
+ },
+ "en": {
+ "code": "en",
+ "name": "engleză"
+ },
+ "en-US": {
+ "code": "en-US",
+ "name": "engleză americană"
+ },
+ "en-AU": {
+ "code": "en-AU",
+ "name": "engleză australiană"
+ },
+ "en-GB": {
+ "code": "en-GB",
+ "name": "engleză britanică"
+ },
+ "en-CA": {
+ "code": "en-CA",
+ "name": "engleză canadiană"
+ },
+ "eo": {
+ "code": "eo",
+ "name": "esperanto"
+ },
+ "et": {
+ "code": "et",
+ "name": "estoniană"
+ },
+ "ee": {
+ "code": "ee",
+ "name": "ewe"
+ },
+ "ewo": {
+ "code": "ewo",
+ "name": "ewondo"
+ },
+ "fo": {
+ "code": "fo",
+ "name": "faroeză"
+ },
+ "fil": {
+ "code": "fil",
+ "name": "filipineză"
+ },
+ "fi": {
+ "code": "fi",
+ "name": "finlandeză"
+ },
+ "nl-BE": {
+ "code": "nl-BE",
+ "name": "flamandă"
+ },
+ "fr": {
+ "code": "fr",
+ "name": "franceză"
+ },
+ "fr-CA": {
+ "code": "fr-CA",
+ "name": "franceză canadiană"
+ },
+ "fr-CH": {
+ "code": "fr-CH",
+ "name": "franceză elvețiană"
+ },
+ "fur": {
+ "code": "fur",
+ "name": "friulană"
+ },
+ "fy": {
+ "code": "fy",
+ "name": "frizonă occidentală"
+ },
+ "ff": {
+ "code": "ff",
+ "name": "fulah"
+ },
+ "gd": {
+ "code": "gd",
+ "name": "gaelică scoțiană"
+ },
+ "cy": {
+ "code": "cy",
+ "name": "galeză"
+ },
+ "gl": {
+ "code": "gl",
+ "name": "galiciană"
+ },
+ "lg": {
+ "code": "lg",
+ "name": "ganda"
+ },
+ "ka": {
+ "code": "ka",
+ "name": "georgiană"
+ },
+ "de": {
+ "code": "de",
+ "name": "germană"
+ },
+ "de-AT": {
+ "code": "de-AT",
+ "name": "germană austriacă"
+ },
+ "gsw": {
+ "code": "gsw",
+ "name": "germană elvețiană"
+ },
+ "de-CH": {
+ "code": "de-CH",
+ "name": "germană standard elvețiană"
+ },
+ "el": {
+ "code": "el",
+ "name": "greacă"
+ },
+ "gu": {
+ "code": "gu",
+ "name": "gujarati"
+ },
+ "guz": {
+ "code": "guz",
+ "name": "gusii"
+ },
+ "ha": {
+ "code": "ha",
+ "name": "hausa"
+ },
+ "hi": {
+ "code": "hi",
+ "name": "hindi"
+ },
+ "id": {
+ "code": "id",
+ "name": "indoneziană"
+ },
+ "ga": {
+ "code": "ga",
+ "name": "irlandeză"
+ },
+ "is": {
+ "code": "is",
+ "name": "islandeză"
+ },
+ "it": {
+ "code": "it",
+ "name": "italiană"
+ },
+ "ja": {
+ "code": "ja",
+ "name": "japoneză"
+ },
+ "dyo": {
+ "code": "dyo",
+ "name": "jola-fonyi"
+ },
+ "kea": {
+ "code": "kea",
+ "name": "kabuverdianu"
+ },
+ "kab": {
+ "code": "kab",
+ "name": "kabyle"
+ },
+ "kl": {
+ "code": "kl",
+ "name": "kalaallisut"
+ },
+ "kln": {
+ "code": "kln",
+ "name": "kalenjin"
+ },
+ "kam": {
+ "code": "kam",
+ "name": "kamba"
+ },
+ "kn": {
+ "code": "kn",
+ "name": "kannada"
+ },
+ "kk": {
+ "code": "kk",
+ "name": "kazahă"
+ },
+ "ky": {
+ "code": "ky",
+ "name": "kârgâză"
+ },
+ "km": {
+ "code": "km",
+ "name": "khmeră"
+ },
+ "ki": {
+ "code": "ki",
+ "name": "kikuyu"
+ },
+ "rn": {
+ "code": "rn",
+ "name": "kirundi"
+ },
+ "ksh": {
+ "code": "ksh",
+ "name": "kölsch"
+ },
+ "khq": {
+ "code": "khq",
+ "name": "koyra chiini"
+ },
+ "ses": {
+ "code": "ses",
+ "name": "koyraboro Senni"
+ },
+ "nmg": {
+ "code": "nmg",
+ "name": "kwasio"
+ },
+ "lag": {
+ "code": "lag",
+ "name": "langi"
+ },
+ "lo": {
+ "code": "lo",
+ "name": "laoțiană"
+ },
+ "lv": {
+ "code": "lv",
+ "name": "letonă"
+ },
+ "ln": {
+ "code": "ln",
+ "name": "lingala"
+ },
+ "lt": {
+ "code": "lt",
+ "name": "lituaniană"
+ },
+ "lu": {
+ "code": "lu",
+ "name": "luba-katanga"
+ },
+ "luo": {
+ "code": "luo",
+ "name": "Luo"
+ },
+ "lb": {
+ "code": "lb",
+ "name": "luxemburgheză"
+ },
+ "luy": {
+ "code": "luy",
+ "name": "luyia"
+ },
+ "mk": {
+ "code": "mk",
+ "name": "macedoneană"
+ },
+ "jmc": {
+ "code": "jmc",
+ "name": "machame"
+ },
+ "hu": {
+ "code": "hu",
+ "name": "maghiară"
+ },
+ "mgh": {
+ "code": "mgh",
+ "name": "makhuwa-meetto"
+ },
+ "kde": {
+ "code": "kde",
+ "name": "makonde"
+ },
+ "ms": {
+ "code": "ms",
+ "name": "malaeză"
+ },
+ "ml": {
+ "code": "ml",
+ "name": "malayalam"
+ },
+ "mg": {
+ "code": "mg",
+ "name": "malgașă"
+ },
+ "mt": {
+ "code": "mt",
+ "name": "malteză"
+ },
+ "mr": {
+ "code": "mr",
+ "name": "marathi"
+ },
+ "mas": {
+ "code": "mas",
+ "name": "masai"
+ },
+ "mer": {
+ "code": "mer",
+ "name": "meru"
+ },
+ "ro-MD": {
+ "code": "ro-MD",
+ "name": "moldovenească"
+ },
+ "mn": {
+ "code": "mn",
+ "name": "mongolă"
+ },
+ "mfe": {
+ "code": "mfe",
+ "name": "morisyen"
+ },
+ "mua": {
+ "code": "mua",
+ "name": "mundang"
+ },
+ "naq": {
+ "code": "naq",
+ "name": "nama"
+ },
+ "nd": {
+ "code": "nd",
+ "name": "ndebele de nord"
+ },
+ "ne": {
+ "code": "ne",
+ "name": "nepaleză"
+ },
+ "jgo": {
+ "code": "jgo",
+ "name": "ngomba"
+ },
+ "nb": {
+ "code": "nb",
+ "name": "norvegiană bokmål"
+ },
+ "nn": {
+ "code": "nn",
+ "name": "norvegiană nynorsk"
+ },
+ "nus": {
+ "code": "nus",
+ "name": "nuer"
+ },
+ "nyn": {
+ "code": "nyn",
+ "name": "nyankole"
+ },
+ "nl": {
+ "code": "nl",
+ "name": "olandeză"
+ },
+ "or": {
+ "code": "or",
+ "name": "oriya"
+ },
+ "ps": {
+ "code": "ps",
+ "name": "paștună"
+ },
+ "fa": {
+ "code": "fa",
+ "name": "persană"
+ },
+ "pl": {
+ "code": "pl",
+ "name": "poloneză"
+ },
+ "pt": {
+ "code": "pt",
+ "name": "portugheză"
+ },
+ "pt-BR": {
+ "code": "pt-BR",
+ "name": "portugheză braziliană"
+ },
+ "pt-PT": {
+ "code": "pt-PT",
+ "name": "portugheză europeană"
+ },
+ "pa": {
+ "code": "pa",
+ "name": "punjabi"
+ },
+ "rm": {
+ "code": "rm",
+ "name": "romanșă"
+ },
+ "ro": {
+ "code": "ro",
+ "name": "română"
+ },
+ "rof": {
+ "code": "rof",
+ "name": "rombo"
+ },
+ "ru": {
+ "code": "ru",
+ "name": "rusă"
+ },
+ "rwk": {
+ "code": "rwk",
+ "name": "rwa"
+ },
+ "saq": {
+ "code": "saq",
+ "name": "samburu"
+ },
+ "se": {
+ "code": "se",
+ "name": "sami de nord"
+ },
+ "sg": {
+ "code": "sg",
+ "name": "sango"
+ },
+ "sbp": {
+ "code": "sbp",
+ "name": "sangu"
+ },
+ "sr": {
+ "code": "sr",
+ "name": "sârbă"
+ },
+ "seh": {
+ "code": "seh",
+ "name": "sena"
+ },
+ "ksb": {
+ "code": "ksb",
+ "name": "shambala"
+ },
+ "sn": {
+ "code": "sn",
+ "name": "shona"
+ },
+ "si": {
+ "code": "si",
+ "name": "singhaleză"
+ },
+ "sk": {
+ "code": "sk",
+ "name": "slovacă"
+ },
+ "sl": {
+ "code": "sl",
+ "name": "slovenă"
+ },
+ "xog": {
+ "code": "xog",
+ "name": "soga"
+ },
+ "so": {
+ "code": "so",
+ "name": "somaleză"
+ },
+ "dsb": {
+ "code": "dsb",
+ "name": "sorabă de jos"
+ },
+ "hsb": {
+ "code": "hsb",
+ "name": "sorabă de sus"
+ },
+ "es": {
+ "code": "es",
+ "name": "spaniolă"
+ },
+ "es-ES": {
+ "code": "es-ES",
+ "name": "spaniolă europeană"
+ },
+ "es-MX": {
+ "code": "es-MX",
+ "name": "spaniolă mexicană"
+ },
+ "sv": {
+ "code": "sv",
+ "name": "suedeză"
+ },
+ "sw": {
+ "code": "sw",
+ "name": "swahili"
+ },
+ "swc": {
+ "code": "swc",
+ "name": "swahili Congo"
+ },
+ "shi": {
+ "code": "shi",
+ "name": "tachelhit"
+ },
+ "dav": {
+ "code": "dav",
+ "name": "taita"
+ },
+ "tzm": {
+ "code": "tzm",
+ "name": "tamazight central marocană"
+ },
+ "zgh": {
+ "code": "zgh",
+ "name": "tamazight standard marocană"
+ },
+ "ta": {
+ "code": "ta",
+ "name": "tamilă"
+ },
+ "twq": {
+ "code": "twq",
+ "name": "tasawaq"
+ },
+ "te": {
+ "code": "te",
+ "name": "telugu"
+ },
+ "teo": {
+ "code": "teo",
+ "name": "teso"
+ },
+ "th": {
+ "code": "th",
+ "name": "thailandeză"
+ },
+ "bo": {
+ "code": "bo",
+ "name": "tibetană"
+ },
+ "ti": {
+ "code": "ti",
+ "name": "tigrină"
+ },
+ "to": {
+ "code": "to",
+ "name": "tonga"
+ },
+ "tr": {
+ "code": "tr",
+ "name": "turcă"
+ },
+ "uk": {
+ "code": "uk",
+ "name": "ucraineană"
+ },
+ "ug": {
+ "code": "ug",
+ "name": "uigură"
+ },
+ "ur": {
+ "code": "ur",
+ "name": "urdu"
+ },
+ "uz": {
+ "code": "uz",
+ "name": "uzbecă"
+ },
+ "vai": {
+ "code": "vai",
+ "name": "Vai"
+ },
+ "vi": {
+ "code": "vi",
+ "name": "vietnameză"
+ },
+ "vun": {
+ "code": "vun",
+ "name": "vunjo"
+ },
+ "wae": {
+ "code": "wae",
+ "name": "walser"
+ },
+ "yav": {
+ "code": "yav",
+ "name": "yangben"
+ },
+ "yo": {
+ "code": "yo",
+ "name": "yoruba"
+ },
+ "dje": {
+ "code": "dje",
+ "name": "zarma"
+ },
+ "zu": {
+ "code": "zu",
+ "name": "zulu"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/language/rof.json b/library/intl/resources/language/rof.json
new file mode 100644
index 000000000..3243b9f57
--- /dev/null
+++ b/library/intl/resources/language/rof.json
@@ -0,0 +1,738 @@
+{
+ "af": {
+ "code": "af",
+ "name": "Afrikaans"
+ },
+ "agq": {
+ "code": "agq",
+ "name": "Aghem"
+ },
+ "sq": {
+ "code": "sq",
+ "name": "Albanian"
+ },
+ "ar-001": {
+ "code": "ar-001",
+ "name": "ar_001"
+ },
+ "hy": {
+ "code": "hy",
+ "name": "Armenian"
+ },
+ "ast": {
+ "code": "ast",
+ "name": "Asturian"
+ },
+ "asa": {
+ "code": "asa",
+ "name": "Asu"
+ },
+ "az": {
+ "code": "az",
+ "name": "Azerbaijani"
+ },
+ "ksf": {
+ "code": "ksf",
+ "name": "Bafia"
+ },
+ "bm": {
+ "code": "bm",
+ "name": "Bambara"
+ },
+ "bas": {
+ "code": "bas",
+ "name": "Basaa"
+ },
+ "eu": {
+ "code": "eu",
+ "name": "Basque"
+ },
+ "bez": {
+ "code": "bez",
+ "name": "Bena"
+ },
+ "brx": {
+ "code": "brx",
+ "name": "Bodo"
+ },
+ "bs": {
+ "code": "bs",
+ "name": "Bosnian"
+ },
+ "br": {
+ "code": "br",
+ "name": "Breton"
+ },
+ "ca": {
+ "code": "ca",
+ "name": "Catalan"
+ },
+ "tzm": {
+ "code": "tzm",
+ "name": "Central Atlas Tamazight"
+ },
+ "chr": {
+ "code": "chr",
+ "name": "Cherokee"
+ },
+ "cgg": {
+ "code": "cgg",
+ "name": "Chiga"
+ },
+ "ksh": {
+ "code": "ksh",
+ "name": "Colognian"
+ },
+ "swc": {
+ "code": "swc",
+ "name": "Congo Swahili"
+ },
+ "hr": {
+ "code": "hr",
+ "name": "Croatian"
+ },
+ "da": {
+ "code": "da",
+ "name": "Danish"
+ },
+ "de-AT": {
+ "code": "de-AT",
+ "name": "de_AT"
+ },
+ "de-CH": {
+ "code": "de-CH",
+ "name": "de_CH"
+ },
+ "dz": {
+ "code": "dz",
+ "name": "Dzongkha"
+ },
+ "ebu": {
+ "code": "ebu",
+ "name": "Embu"
+ },
+ "en-AU": {
+ "code": "en-AU",
+ "name": "en_AU"
+ },
+ "en-CA": {
+ "code": "en-CA",
+ "name": "en_CA"
+ },
+ "en-GB": {
+ "code": "en-GB",
+ "name": "en_GB"
+ },
+ "en-US": {
+ "code": "en-US",
+ "name": "en_US"
+ },
+ "es-ES": {
+ "code": "es-ES",
+ "name": "es_ES"
+ },
+ "es-MX": {
+ "code": "es-MX",
+ "name": "es_MX"
+ },
+ "eo": {
+ "code": "eo",
+ "name": "Esperanto"
+ },
+ "et": {
+ "code": "et",
+ "name": "Estonian"
+ },
+ "ee": {
+ "code": "ee",
+ "name": "Ewe"
+ },
+ "ewo": {
+ "code": "ewo",
+ "name": "Ewondo"
+ },
+ "fo": {
+ "code": "fo",
+ "name": "Faroese"
+ },
+ "fil": {
+ "code": "fil",
+ "name": "Filipino"
+ },
+ "fi": {
+ "code": "fi",
+ "name": "Finnish"
+ },
+ "fr-CA": {
+ "code": "fr-CA",
+ "name": "fr_CA"
+ },
+ "fr-CH": {
+ "code": "fr-CH",
+ "name": "fr_CH"
+ },
+ "fur": {
+ "code": "fur",
+ "name": "Friulian"
+ },
+ "ff": {
+ "code": "ff",
+ "name": "Fulah"
+ },
+ "gl": {
+ "code": "gl",
+ "name": "Galician"
+ },
+ "lg": {
+ "code": "lg",
+ "name": "Ganda"
+ },
+ "ka": {
+ "code": "ka",
+ "name": "Georgian"
+ },
+ "gu": {
+ "code": "gu",
+ "name": "Gujarati"
+ },
+ "guz": {
+ "code": "guz",
+ "name": "Gusii"
+ },
+ "he": {
+ "code": "he",
+ "name": "Hebrew"
+ },
+ "is": {
+ "code": "is",
+ "name": "Icelandic"
+ },
+ "ga": {
+ "code": "ga",
+ "name": "Irish"
+ },
+ "dyo": {
+ "code": "dyo",
+ "name": "Jola-Fonyi"
+ },
+ "kea": {
+ "code": "kea",
+ "name": "Kabuverdianu"
+ },
+ "kab": {
+ "code": "kab",
+ "name": "Kabyle"
+ },
+ "kl": {
+ "code": "kl",
+ "name": "Kalaallisut"
+ },
+ "kln": {
+ "code": "kln",
+ "name": "Kalenjin"
+ },
+ "kam": {
+ "code": "kam",
+ "name": "Kamba"
+ },
+ "kn": {
+ "code": "kn",
+ "name": "Kannada"
+ },
+ "ks": {
+ "code": "ks",
+ "name": "Kashmiri"
+ },
+ "kk": {
+ "code": "kk",
+ "name": "Kazakh"
+ },
+ "fa": {
+ "code": "fa",
+ "name": "Kiajemi"
+ },
+ "ak": {
+ "code": "ak",
+ "name": "Kiakani"
+ },
+ "am": {
+ "code": "am",
+ "name": "Kiamhari"
+ },
+ "ar": {
+ "code": "ar",
+ "name": "Kiarabu"
+ },
+ "bn": {
+ "code": "bn",
+ "name": "Kibangla"
+ },
+ "be": {
+ "code": "be",
+ "name": "Kibelarusi"
+ },
+ "bg": {
+ "code": "bg",
+ "name": "Kibulgaria"
+ },
+ "my": {
+ "code": "my",
+ "name": "Kiburma"
+ },
+ "cs": {
+ "code": "cs",
+ "name": "Kichecki"
+ },
+ "zh": {
+ "code": "zh",
+ "name": "Kichina"
+ },
+ "el": {
+ "code": "el",
+ "name": "Kigiriki"
+ },
+ "ha": {
+ "code": "ha",
+ "name": "Kihausa"
+ },
+ "hi": {
+ "code": "hi",
+ "name": "Kihindi"
+ },
+ "es": {
+ "code": "es",
+ "name": "Kihispania"
+ },
+ "nl": {
+ "code": "nl",
+ "name": "Kiholanzi"
+ },
+ "rof": {
+ "code": "rof",
+ "name": "Kihorombo"
+ },
+ "hu": {
+ "code": "hu",
+ "name": "Kihungari"
+ },
+ "id": {
+ "code": "id",
+ "name": "Kiindonesia"
+ },
+ "en": {
+ "code": "en",
+ "name": "Kiingereza"
+ },
+ "it": {
+ "code": "it",
+ "name": "Kiitaliano"
+ },
+ "ja": {
+ "code": "ja",
+ "name": "Kijapani"
+ },
+ "de": {
+ "code": "de",
+ "name": "Kijerumani"
+ },
+ "km": {
+ "code": "km",
+ "name": "Kikambodia"
+ },
+ "ko": {
+ "code": "ko",
+ "name": "Kikorea"
+ },
+ "ki": {
+ "code": "ki",
+ "name": "Kikuyu"
+ },
+ "ms": {
+ "code": "ms",
+ "name": "Kimalesia"
+ },
+ "ne": {
+ "code": "ne",
+ "name": "Kinepali"
+ },
+ "pl": {
+ "code": "pl",
+ "name": "Kipolandi"
+ },
+ "pa": {
+ "code": "pa",
+ "name": "Kipunjabi"
+ },
+ "pt": {
+ "code": "pt",
+ "name": "Kireno"
+ },
+ "ro": {
+ "code": "ro",
+ "name": "Kiromania"
+ },
+ "ru": {
+ "code": "ru",
+ "name": "Kirusi"
+ },
+ "so": {
+ "code": "so",
+ "name": "Kisomali"
+ },
+ "sv": {
+ "code": "sv",
+ "name": "Kiswidi"
+ },
+ "th": {
+ "code": "th",
+ "name": "Kitailandi"
+ },
+ "ta": {
+ "code": "ta",
+ "name": "Kitamil"
+ },
+ "tr": {
+ "code": "tr",
+ "name": "Kituruki"
+ },
+ "uk": {
+ "code": "uk",
+ "name": "Kiukrania"
+ },
+ "ur": {
+ "code": "ur",
+ "name": "Kiurdu"
+ },
+ "vi": {
+ "code": "vi",
+ "name": "Kivietinamu"
+ },
+ "yo": {
+ "code": "yo",
+ "name": "Kiyoruba"
+ },
+ "zu": {
+ "code": "zu",
+ "name": "Kizulu"
+ },
+ "khq": {
+ "code": "khq",
+ "name": "Koyra Chiini"
+ },
+ "ses": {
+ "code": "ses",
+ "name": "Koyraboro Senni"
+ },
+ "nmg": {
+ "code": "nmg",
+ "name": "Kwasio"
+ },
+ "fr": {
+ "code": "fr",
+ "name": "Kyifaransa"
+ },
+ "ky": {
+ "code": "ky",
+ "name": "Kyrgyz"
+ },
+ "lag": {
+ "code": "lag",
+ "name": "Langi"
+ },
+ "lo": {
+ "code": "lo",
+ "name": "Lao"
+ },
+ "lv": {
+ "code": "lv",
+ "name": "Latvian"
+ },
+ "ln": {
+ "code": "ln",
+ "name": "Lingala"
+ },
+ "lt": {
+ "code": "lt",
+ "name": "Lithuanian"
+ },
+ "dsb": {
+ "code": "dsb",
+ "name": "Lower Sorbian"
+ },
+ "lu": {
+ "code": "lu",
+ "name": "Luba-Katanga"
+ },
+ "luo": {
+ "code": "luo",
+ "name": "Luo"
+ },
+ "lb": {
+ "code": "lb",
+ "name": "Luxembourgish"
+ },
+ "luy": {
+ "code": "luy",
+ "name": "Luyia"
+ },
+ "mk": {
+ "code": "mk",
+ "name": "Macedonian"
+ },
+ "jmc": {
+ "code": "jmc",
+ "name": "Machame"
+ },
+ "mgh": {
+ "code": "mgh",
+ "name": "Makhuwa-Meetto"
+ },
+ "kde": {
+ "code": "kde",
+ "name": "Makonde"
+ },
+ "mg": {
+ "code": "mg",
+ "name": "Malagasy"
+ },
+ "ml": {
+ "code": "ml",
+ "name": "Malayalam"
+ },
+ "mt": {
+ "code": "mt",
+ "name": "Maltese"
+ },
+ "mr": {
+ "code": "mr",
+ "name": "Marathi"
+ },
+ "mas": {
+ "code": "mas",
+ "name": "Masai"
+ },
+ "mer": {
+ "code": "mer",
+ "name": "Meru"
+ },
+ "mn": {
+ "code": "mn",
+ "name": "Mongolian"
+ },
+ "mfe": {
+ "code": "mfe",
+ "name": "Morisyen"
+ },
+ "mua": {
+ "code": "mua",
+ "name": "Mundang"
+ },
+ "naq": {
+ "code": "naq",
+ "name": "Nama"
+ },
+ "jgo": {
+ "code": "jgo",
+ "name": "Ngomba"
+ },
+ "nl-BE": {
+ "code": "nl-BE",
+ "name": "nl_BE"
+ },
+ "nd": {
+ "code": "nd",
+ "name": "North Ndebele"
+ },
+ "se": {
+ "code": "se",
+ "name": "Northern Sami"
+ },
+ "nb": {
+ "code": "nb",
+ "name": "Norwegian Bokmål"
+ },
+ "nn": {
+ "code": "nn",
+ "name": "Norwegian Nynorsk"
+ },
+ "nus": {
+ "code": "nus",
+ "name": "Nuer"
+ },
+ "nyn": {
+ "code": "nyn",
+ "name": "Nyankole"
+ },
+ "or": {
+ "code": "or",
+ "name": "Oriya"
+ },
+ "ps": {
+ "code": "ps",
+ "name": "Pashto"
+ },
+ "pt-BR": {
+ "code": "pt-BR",
+ "name": "pt_BR"
+ },
+ "pt-PT": {
+ "code": "pt-PT",
+ "name": "pt_PT"
+ },
+ "ro-MD": {
+ "code": "ro-MD",
+ "name": "ro_MD"
+ },
+ "rm": {
+ "code": "rm",
+ "name": "Romansh"
+ },
+ "rn": {
+ "code": "rn",
+ "name": "Rundi"
+ },
+ "rwk": {
+ "code": "rwk",
+ "name": "Rwa"
+ },
+ "saq": {
+ "code": "saq",
+ "name": "Samburu"
+ },
+ "sg": {
+ "code": "sg",
+ "name": "Sango"
+ },
+ "sbp": {
+ "code": "sbp",
+ "name": "Sangu"
+ },
+ "gd": {
+ "code": "gd",
+ "name": "Scottish Gaelic"
+ },
+ "seh": {
+ "code": "seh",
+ "name": "Sena"
+ },
+ "sr": {
+ "code": "sr",
+ "name": "Serbian"
+ },
+ "ksb": {
+ "code": "ksb",
+ "name": "Shambala"
+ },
+ "sn": {
+ "code": "sn",
+ "name": "Shona"
+ },
+ "si": {
+ "code": "si",
+ "name": "Sinhala"
+ },
+ "sk": {
+ "code": "sk",
+ "name": "Slovak"
+ },
+ "sl": {
+ "code": "sl",
+ "name": "Slovenian"
+ },
+ "xog": {
+ "code": "xog",
+ "name": "Soga"
+ },
+ "zgh": {
+ "code": "zgh",
+ "name": "Standard Moroccan Tamazight"
+ },
+ "sw": {
+ "code": "sw",
+ "name": "Swahili"
+ },
+ "gsw": {
+ "code": "gsw",
+ "name": "Swiss German"
+ },
+ "shi": {
+ "code": "shi",
+ "name": "Tachelhit"
+ },
+ "dav": {
+ "code": "dav",
+ "name": "Taita"
+ },
+ "twq": {
+ "code": "twq",
+ "name": "Tasawaq"
+ },
+ "te": {
+ "code": "te",
+ "name": "Telugu"
+ },
+ "teo": {
+ "code": "teo",
+ "name": "Teso"
+ },
+ "bo": {
+ "code": "bo",
+ "name": "Tibetan"
+ },
+ "ti": {
+ "code": "ti",
+ "name": "Tigrinya"
+ },
+ "to": {
+ "code": "to",
+ "name": "Tongan"
+ },
+ "hsb": {
+ "code": "hsb",
+ "name": "Upper Sorbian"
+ },
+ "ug": {
+ "code": "ug",
+ "name": "Uyghur"
+ },
+ "uz": {
+ "code": "uz",
+ "name": "Uzbek"
+ },
+ "vai": {
+ "code": "vai",
+ "name": "Vai"
+ },
+ "vun": {
+ "code": "vun",
+ "name": "Vunjo"
+ },
+ "wae": {
+ "code": "wae",
+ "name": "Walser"
+ },
+ "cy": {
+ "code": "cy",
+ "name": "Welsh"
+ },
+ "fy": {
+ "code": "fy",
+ "name": "Western Frisian"
+ },
+ "yav": {
+ "code": "yav",
+ "name": "Yangben"
+ },
+ "dje": {
+ "code": "dje",
+ "name": "Zarma"
+ },
+ "zh-Hans": {
+ "code": "zh-Hans",
+ "name": "zh_Hans"
+ },
+ "zh-Hant": {
+ "code": "zh-Hant",
+ "name": "zh_Hant"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/language/ru.json b/library/intl/resources/language/ru.json
new file mode 100644
index 000000000..e13e3a027
--- /dev/null
+++ b/library/intl/resources/language/ru.json
@@ -0,0 +1,738 @@
+{
+ "es-MX": {
+ "code": "es-MX",
+ "name": "es_MX"
+ },
+ "en-AU": {
+ "code": "en-AU",
+ "name": "авÑтралийÑкий английÑкий"
+ },
+ "de-AT": {
+ "code": "de-AT",
+ "name": "авÑтрийÑкий немецкий"
+ },
+ "agq": {
+ "code": "agq",
+ "name": "агхем"
+ },
+ "az": {
+ "code": "az",
+ "name": "азербайджанÑкий"
+ },
+ "ak": {
+ "code": "ak",
+ "name": "акан"
+ },
+ "sq": {
+ "code": "sq",
+ "name": "албанÑкий"
+ },
+ "en-US": {
+ "code": "en-US",
+ "name": "американÑкий английÑкий"
+ },
+ "am": {
+ "code": "am",
+ "name": "амхарÑкий"
+ },
+ "en": {
+ "code": "en",
+ "name": "английÑкий"
+ },
+ "ar": {
+ "code": "ar",
+ "name": "арабÑкий"
+ },
+ "ar-001": {
+ "code": "ar-001",
+ "name": "арабÑкий литературный"
+ },
+ "hy": {
+ "code": "hy",
+ "name": "армÑнÑкий"
+ },
+ "asa": {
+ "code": "asa",
+ "name": "аÑа"
+ },
+ "ast": {
+ "code": "ast",
+ "name": "аÑтурийÑкий"
+ },
+ "af": {
+ "code": "af",
+ "name": "африкаанÑ"
+ },
+ "bm": {
+ "code": "bm",
+ "name": "бамбарийÑкий"
+ },
+ "bas": {
+ "code": "bas",
+ "name": "баÑа"
+ },
+ "eu": {
+ "code": "eu",
+ "name": "баÑкÑкий"
+ },
+ "ksf": {
+ "code": "ksf",
+ "name": "бафиÑ"
+ },
+ "be": {
+ "code": "be",
+ "name": "белоруÑÑкий"
+ },
+ "bez": {
+ "code": "bez",
+ "name": "бена"
+ },
+ "bn": {
+ "code": "bn",
+ "name": "бенгальÑкий"
+ },
+ "my": {
+ "code": "my",
+ "name": "бирманÑкий"
+ },
+ "brx": {
+ "code": "brx",
+ "name": "бодо"
+ },
+ "bg": {
+ "code": "bg",
+ "name": "болгарÑкий"
+ },
+ "bs": {
+ "code": "bs",
+ "name": "боÑнийÑкий"
+ },
+ "pt-BR": {
+ "code": "pt-BR",
+ "name": "бразильÑкий португальÑкий"
+ },
+ "br": {
+ "code": "br",
+ "name": "бретонÑкий"
+ },
+ "en-GB": {
+ "code": "en-GB",
+ "name": "британÑкий английÑкий"
+ },
+ "vai": {
+ "code": "vai",
+ "name": "ваи"
+ },
+ "wae": {
+ "code": "wae",
+ "name": "валиÑÑкий"
+ },
+ "cy": {
+ "code": "cy",
+ "name": "валлийÑкий"
+ },
+ "hu": {
+ "code": "hu",
+ "name": "венгерÑкий"
+ },
+ "hsb": {
+ "code": "hsb",
+ "name": "верхнелужицкий"
+ },
+ "vun": {
+ "code": "vun",
+ "name": "вунджо"
+ },
+ "vi": {
+ "code": "vi",
+ "name": "вьетнамÑкий"
+ },
+ "gl": {
+ "code": "gl",
+ "name": "галиÑийÑкий"
+ },
+ "lg": {
+ "code": "lg",
+ "name": "ганда"
+ },
+ "nl": {
+ "code": "nl",
+ "name": "голландÑкий"
+ },
+ "kl": {
+ "code": "kl",
+ "name": "гренландÑкий"
+ },
+ "el": {
+ "code": "el",
+ "name": "гречеÑкий"
+ },
+ "ka": {
+ "code": "ka",
+ "name": "грузинÑкий"
+ },
+ "gu": {
+ "code": "gu",
+ "name": "гуджарати"
+ },
+ "guz": {
+ "code": "guz",
+ "name": "гуÑии"
+ },
+ "gd": {
+ "code": "gd",
+ "name": "гÑльÑкий"
+ },
+ "da": {
+ "code": "da",
+ "name": "датÑкий"
+ },
+ "dz": {
+ "code": "dz",
+ "name": "дзонг-кÑ"
+ },
+ "dyo": {
+ "code": "dyo",
+ "name": "дьола-фоньи"
+ },
+ "es-ES": {
+ "code": "es-ES",
+ "name": "европейÑкий иÑпанÑкий"
+ },
+ "pt-PT": {
+ "code": "pt-PT",
+ "name": "европейÑкий португальÑкий"
+ },
+ "fy": {
+ "code": "fy",
+ "name": "западно-фризÑкий"
+ },
+ "dje": {
+ "code": "dje",
+ "name": "зарма"
+ },
+ "zu": {
+ "code": "zu",
+ "name": "зулу"
+ },
+ "he": {
+ "code": "he",
+ "name": "иврит"
+ },
+ "id": {
+ "code": "id",
+ "name": "индонезийÑкий"
+ },
+ "ga": {
+ "code": "ga",
+ "name": "ирландÑкий"
+ },
+ "is": {
+ "code": "is",
+ "name": "иÑландÑкий"
+ },
+ "es": {
+ "code": "es",
+ "name": "иÑпанÑкий"
+ },
+ "it": {
+ "code": "it",
+ "name": "итальÑнÑкий"
+ },
+ "yo": {
+ "code": "yo",
+ "name": "йоруба"
+ },
+ "kab": {
+ "code": "kab",
+ "name": "кабильÑкий"
+ },
+ "kea": {
+ "code": "kea",
+ "name": "кабувердьÑну"
+ },
+ "kk": {
+ "code": "kk",
+ "name": "казахÑкий"
+ },
+ "kln": {
+ "code": "kln",
+ "name": "календжин"
+ },
+ "kam": {
+ "code": "kam",
+ "name": "камба"
+ },
+ "en-CA": {
+ "code": "en-CA",
+ "name": "канадÑкий английÑкий"
+ },
+ "fr-CA": {
+ "code": "fr-CA",
+ "name": "канадÑкий французÑкий"
+ },
+ "kn": {
+ "code": "kn",
+ "name": "каннада"
+ },
+ "ca": {
+ "code": "ca",
+ "name": "каталанÑкий"
+ },
+ "ks": {
+ "code": "ks",
+ "name": "кашмири"
+ },
+ "nmg": {
+ "code": "nmg",
+ "name": "кваÑио"
+ },
+ "ksh": {
+ "code": "ksh",
+ "name": "кёльш"
+ },
+ "ki": {
+ "code": "ki",
+ "name": "кикуйю"
+ },
+ "ky": {
+ "code": "ky",
+ "name": "киргизÑкий"
+ },
+ "zh": {
+ "code": "zh",
+ "name": "китайÑкий"
+ },
+ "khq": {
+ "code": "khq",
+ "name": "койра чиини"
+ },
+ "ses": {
+ "code": "ses",
+ "name": "койраборо Ñенни"
+ },
+ "swc": {
+ "code": "swc",
+ "name": "конголезÑкий Ñуахили"
+ },
+ "ko": {
+ "code": "ko",
+ "name": "корейÑкий"
+ },
+ "km": {
+ "code": "km",
+ "name": "кхмерÑкий"
+ },
+ "lag": {
+ "code": "lag",
+ "name": "ланги"
+ },
+ "lo": {
+ "code": "lo",
+ "name": "лаоÑÑкий"
+ },
+ "lv": {
+ "code": "lv",
+ "name": "латышÑкий"
+ },
+ "ln": {
+ "code": "ln",
+ "name": "лингала"
+ },
+ "lt": {
+ "code": "lt",
+ "name": "литовÑкий"
+ },
+ "lu": {
+ "code": "lu",
+ "name": "луба-катанга"
+ },
+ "luo": {
+ "code": "luo",
+ "name": "луо (ÐšÐµÐ½Ð¸Ñ Ð¸ ТанзаниÑ)"
+ },
+ "luy": {
+ "code": "luy",
+ "name": "лухьÑ"
+ },
+ "lb": {
+ "code": "lb",
+ "name": "люкÑембургÑкий"
+ },
+ "mfe": {
+ "code": "mfe",
+ "name": "маврикийÑкий креольÑкий"
+ },
+ "mk": {
+ "code": "mk",
+ "name": "македонÑкий"
+ },
+ "kde": {
+ "code": "kde",
+ "name": "маконде"
+ },
+ "mgh": {
+ "code": "mgh",
+ "name": "макуа-меетто"
+ },
+ "mg": {
+ "code": "mg",
+ "name": "малагаÑийÑкий"
+ },
+ "ms": {
+ "code": "ms",
+ "name": "малайÑкий"
+ },
+ "ml": {
+ "code": "ml",
+ "name": "малаÑлам"
+ },
+ "mt": {
+ "code": "mt",
+ "name": "мальтийÑкий"
+ },
+ "mr": {
+ "code": "mr",
+ "name": "маратхи"
+ },
+ "mas": {
+ "code": "mas",
+ "name": "маÑаи"
+ },
+ "jmc": {
+ "code": "jmc",
+ "name": "мачаме"
+ },
+ "mer": {
+ "code": "mer",
+ "name": "меру"
+ },
+ "ro-MD": {
+ "code": "ro-MD",
+ "name": "молдавÑкий"
+ },
+ "mn": {
+ "code": "mn",
+ "name": "монгольÑкий"
+ },
+ "mua": {
+ "code": "mua",
+ "name": "мунданг"
+ },
+ "naq": {
+ "code": "naq",
+ "name": "нама"
+ },
+ "jgo": {
+ "code": "jgo",
+ "name": "нгомба"
+ },
+ "de": {
+ "code": "de",
+ "name": "немецкий"
+ },
+ "ne": {
+ "code": "ne",
+ "name": "непальÑкий"
+ },
+ "dsb": {
+ "code": "dsb",
+ "name": "нижнелужицкий"
+ },
+ "nb": {
+ "code": "nb",
+ "name": "норвежÑкий букмол"
+ },
+ "nn": {
+ "code": "nn",
+ "name": "норвежÑкий нюнорÑк"
+ },
+ "nus": {
+ "code": "nus",
+ "name": "нуÑÑ€"
+ },
+ "nyn": {
+ "code": "nyn",
+ "name": "ньÑнколе"
+ },
+ "or": {
+ "code": "or",
+ "name": "ориÑ"
+ },
+ "pa": {
+ "code": "pa",
+ "name": "панджаби"
+ },
+ "fa": {
+ "code": "fa",
+ "name": "перÑидÑкий"
+ },
+ "pl": {
+ "code": "pl",
+ "name": "польÑкий"
+ },
+ "pt": {
+ "code": "pt",
+ "name": "португальÑкий"
+ },
+ "ps": {
+ "code": "ps",
+ "name": "пушту"
+ },
+ "rm": {
+ "code": "rm",
+ "name": "романшÑкий"
+ },
+ "rof": {
+ "code": "rof",
+ "name": "ромбо"
+ },
+ "rwk": {
+ "code": "rwk",
+ "name": "руанда"
+ },
+ "ro": {
+ "code": "ro",
+ "name": "румынÑкий"
+ },
+ "rn": {
+ "code": "rn",
+ "name": "рунди"
+ },
+ "ru": {
+ "code": "ru",
+ "name": "руÑÑкий"
+ },
+ "saq": {
+ "code": "saq",
+ "name": "Ñамбуру"
+ },
+ "sg": {
+ "code": "sg",
+ "name": "Ñанго"
+ },
+ "sbp": {
+ "code": "sbp",
+ "name": "Ñангу"
+ },
+ "se": {
+ "code": "se",
+ "name": "ÑеверноÑаамÑкий"
+ },
+ "nd": {
+ "code": "nd",
+ "name": "Ñеверный ндебели"
+ },
+ "seh": {
+ "code": "seh",
+ "name": "Ñена"
+ },
+ "sr": {
+ "code": "sr",
+ "name": "ÑербÑкий"
+ },
+ "si": {
+ "code": "si",
+ "name": "ÑингальÑкий"
+ },
+ "sk": {
+ "code": "sk",
+ "name": "Ñловацкий"
+ },
+ "sl": {
+ "code": "sl",
+ "name": "ÑловенÑкий"
+ },
+ "xog": {
+ "code": "xog",
+ "name": "Ñога"
+ },
+ "so": {
+ "code": "so",
+ "name": "Ñомали"
+ },
+ "tzm": {
+ "code": "tzm",
+ "name": "ÑреднеатлаÑÑкий тамазигхтÑкий"
+ },
+ "sw": {
+ "code": "sw",
+ "name": "Ñуахили"
+ },
+ "dav": {
+ "code": "dav",
+ "name": "таита"
+ },
+ "th": {
+ "code": "th",
+ "name": "тайÑкий"
+ },
+ "zgh": {
+ "code": "zgh",
+ "name": "тамазигхтÑкий"
+ },
+ "ta": {
+ "code": "ta",
+ "name": "тамильÑкий"
+ },
+ "twq": {
+ "code": "twq",
+ "name": "таÑавак"
+ },
+ "shi": {
+ "code": "shi",
+ "name": "тахелхит"
+ },
+ "te": {
+ "code": "te",
+ "name": "телугу"
+ },
+ "teo": {
+ "code": "teo",
+ "name": "теÑо"
+ },
+ "bo": {
+ "code": "bo",
+ "name": "тибетÑкий"
+ },
+ "ti": {
+ "code": "ti",
+ "name": "тигриньÑ"
+ },
+ "to": {
+ "code": "to",
+ "name": "тонганÑкий"
+ },
+ "zh-Hant": {
+ "code": "zh-Hant",
+ "name": "традиционный китайÑкий"
+ },
+ "tr": {
+ "code": "tr",
+ "name": "турецкий"
+ },
+ "uz": {
+ "code": "uz",
+ "name": "узбекÑкий"
+ },
+ "ug": {
+ "code": "ug",
+ "name": "уйгурÑкий"
+ },
+ "uk": {
+ "code": "uk",
+ "name": "украинÑкий"
+ },
+ "zh-Hans": {
+ "code": "zh-Hans",
+ "name": "упрощенный китайÑкий"
+ },
+ "ur": {
+ "code": "ur",
+ "name": "урду"
+ },
+ "fo": {
+ "code": "fo",
+ "name": "фарерÑкий"
+ },
+ "fil": {
+ "code": "fil",
+ "name": "филиппинÑкий"
+ },
+ "fi": {
+ "code": "fi",
+ "name": "финÑкий"
+ },
+ "nl-BE": {
+ "code": "nl-BE",
+ "name": "фламандÑкий"
+ },
+ "fr": {
+ "code": "fr",
+ "name": "французÑкий"
+ },
+ "fur": {
+ "code": "fur",
+ "name": "фриульÑкий"
+ },
+ "ff": {
+ "code": "ff",
+ "name": "фулах"
+ },
+ "ha": {
+ "code": "ha",
+ "name": "хауÑа"
+ },
+ "hi": {
+ "code": "hi",
+ "name": "хинди"
+ },
+ "hr": {
+ "code": "hr",
+ "name": "хорватÑкий"
+ },
+ "chr": {
+ "code": "chr",
+ "name": "чероки"
+ },
+ "cs": {
+ "code": "cs",
+ "name": "чешÑкий"
+ },
+ "cgg": {
+ "code": "cgg",
+ "name": "чига"
+ },
+ "ksb": {
+ "code": "ksb",
+ "name": "шамбала"
+ },
+ "sv": {
+ "code": "sv",
+ "name": "шведÑкий"
+ },
+ "de-CH": {
+ "code": "de-CH",
+ "name": "швейцарÑкий верхненемецкий"
+ },
+ "gsw": {
+ "code": "gsw",
+ "name": "швейцарÑкий немецкий"
+ },
+ "fr-CH": {
+ "code": "fr-CH",
+ "name": "швейцарÑкий французÑкий"
+ },
+ "sn": {
+ "code": "sn",
+ "name": "шона"
+ },
+ "ee": {
+ "code": "ee",
+ "name": "Ñве"
+ },
+ "ewo": {
+ "code": "ewo",
+ "name": "Ñвондо"
+ },
+ "ebu": {
+ "code": "ebu",
+ "name": "Ñмбу"
+ },
+ "eo": {
+ "code": "eo",
+ "name": "ÑÑперанто"
+ },
+ "et": {
+ "code": "et",
+ "name": "ÑÑтонÑкий"
+ },
+ "yav": {
+ "code": "yav",
+ "name": "Ñнбан"
+ },
+ "ja": {
+ "code": "ja",
+ "name": "ÑпонÑкий"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/language/rwk.json b/library/intl/resources/language/rwk.json
new file mode 100644
index 000000000..446b55ff9
--- /dev/null
+++ b/library/intl/resources/language/rwk.json
@@ -0,0 +1,738 @@
+{
+ "af": {
+ "code": "af",
+ "name": "Afrikaans"
+ },
+ "agq": {
+ "code": "agq",
+ "name": "Aghem"
+ },
+ "sq": {
+ "code": "sq",
+ "name": "Albanian"
+ },
+ "ar-001": {
+ "code": "ar-001",
+ "name": "ar_001"
+ },
+ "hy": {
+ "code": "hy",
+ "name": "Armenian"
+ },
+ "ast": {
+ "code": "ast",
+ "name": "Asturian"
+ },
+ "asa": {
+ "code": "asa",
+ "name": "Asu"
+ },
+ "az": {
+ "code": "az",
+ "name": "Azerbaijani"
+ },
+ "ksf": {
+ "code": "ksf",
+ "name": "Bafia"
+ },
+ "bm": {
+ "code": "bm",
+ "name": "Bambara"
+ },
+ "bas": {
+ "code": "bas",
+ "name": "Basaa"
+ },
+ "eu": {
+ "code": "eu",
+ "name": "Basque"
+ },
+ "bez": {
+ "code": "bez",
+ "name": "Bena"
+ },
+ "brx": {
+ "code": "brx",
+ "name": "Bodo"
+ },
+ "bs": {
+ "code": "bs",
+ "name": "Bosnian"
+ },
+ "br": {
+ "code": "br",
+ "name": "Breton"
+ },
+ "ca": {
+ "code": "ca",
+ "name": "Catalan"
+ },
+ "tzm": {
+ "code": "tzm",
+ "name": "Central Atlas Tamazight"
+ },
+ "chr": {
+ "code": "chr",
+ "name": "Cherokee"
+ },
+ "cgg": {
+ "code": "cgg",
+ "name": "Chiga"
+ },
+ "ksh": {
+ "code": "ksh",
+ "name": "Colognian"
+ },
+ "swc": {
+ "code": "swc",
+ "name": "Congo Swahili"
+ },
+ "hr": {
+ "code": "hr",
+ "name": "Croatian"
+ },
+ "da": {
+ "code": "da",
+ "name": "Danish"
+ },
+ "de-AT": {
+ "code": "de-AT",
+ "name": "de_AT"
+ },
+ "de-CH": {
+ "code": "de-CH",
+ "name": "de_CH"
+ },
+ "dz": {
+ "code": "dz",
+ "name": "Dzongkha"
+ },
+ "ebu": {
+ "code": "ebu",
+ "name": "Embu"
+ },
+ "en-AU": {
+ "code": "en-AU",
+ "name": "en_AU"
+ },
+ "en-CA": {
+ "code": "en-CA",
+ "name": "en_CA"
+ },
+ "en-GB": {
+ "code": "en-GB",
+ "name": "en_GB"
+ },
+ "en-US": {
+ "code": "en-US",
+ "name": "en_US"
+ },
+ "es-ES": {
+ "code": "es-ES",
+ "name": "es_ES"
+ },
+ "es-MX": {
+ "code": "es-MX",
+ "name": "es_MX"
+ },
+ "eo": {
+ "code": "eo",
+ "name": "Esperanto"
+ },
+ "et": {
+ "code": "et",
+ "name": "Estonian"
+ },
+ "ee": {
+ "code": "ee",
+ "name": "Ewe"
+ },
+ "ewo": {
+ "code": "ewo",
+ "name": "Ewondo"
+ },
+ "fo": {
+ "code": "fo",
+ "name": "Faroese"
+ },
+ "fil": {
+ "code": "fil",
+ "name": "Filipino"
+ },
+ "fi": {
+ "code": "fi",
+ "name": "Finnish"
+ },
+ "fr-CA": {
+ "code": "fr-CA",
+ "name": "fr_CA"
+ },
+ "fr-CH": {
+ "code": "fr-CH",
+ "name": "fr_CH"
+ },
+ "fur": {
+ "code": "fur",
+ "name": "Friulian"
+ },
+ "ff": {
+ "code": "ff",
+ "name": "Fulah"
+ },
+ "gl": {
+ "code": "gl",
+ "name": "Galician"
+ },
+ "lg": {
+ "code": "lg",
+ "name": "Ganda"
+ },
+ "ka": {
+ "code": "ka",
+ "name": "Georgian"
+ },
+ "gu": {
+ "code": "gu",
+ "name": "Gujarati"
+ },
+ "guz": {
+ "code": "guz",
+ "name": "Gusii"
+ },
+ "he": {
+ "code": "he",
+ "name": "Hebrew"
+ },
+ "is": {
+ "code": "is",
+ "name": "Icelandic"
+ },
+ "ga": {
+ "code": "ga",
+ "name": "Irish"
+ },
+ "dyo": {
+ "code": "dyo",
+ "name": "Jola-Fonyi"
+ },
+ "kea": {
+ "code": "kea",
+ "name": "Kabuverdianu"
+ },
+ "kab": {
+ "code": "kab",
+ "name": "Kabyle"
+ },
+ "kl": {
+ "code": "kl",
+ "name": "Kalaallisut"
+ },
+ "kln": {
+ "code": "kln",
+ "name": "Kalenjin"
+ },
+ "kam": {
+ "code": "kam",
+ "name": "Kamba"
+ },
+ "kn": {
+ "code": "kn",
+ "name": "Kannada"
+ },
+ "ks": {
+ "code": "ks",
+ "name": "Kashmiri"
+ },
+ "kk": {
+ "code": "kk",
+ "name": "Kazakh"
+ },
+ "ak": {
+ "code": "ak",
+ "name": "Kiakanyi"
+ },
+ "am": {
+ "code": "am",
+ "name": "Kiamharyi"
+ },
+ "ki": {
+ "code": "ki",
+ "name": "Kikuyu"
+ },
+ "rwk": {
+ "code": "rwk",
+ "name": "Kiruwa"
+ },
+ "khq": {
+ "code": "khq",
+ "name": "Koyra Chiini"
+ },
+ "ses": {
+ "code": "ses",
+ "name": "Koyraboro Senni"
+ },
+ "nmg": {
+ "code": "nmg",
+ "name": "Kwasio"
+ },
+ "fa": {
+ "code": "fa",
+ "name": "Kyiajemi"
+ },
+ "ar": {
+ "code": "ar",
+ "name": "Kyiarabu"
+ },
+ "bn": {
+ "code": "bn",
+ "name": "Kyibangla"
+ },
+ "be": {
+ "code": "be",
+ "name": "Kyibelarusi"
+ },
+ "bg": {
+ "code": "bg",
+ "name": "Kyibulgaryia"
+ },
+ "my": {
+ "code": "my",
+ "name": "Kyiburma"
+ },
+ "cs": {
+ "code": "cs",
+ "name": "Kyichecki"
+ },
+ "zh": {
+ "code": "zh",
+ "name": "Kyichina"
+ },
+ "fr": {
+ "code": "fr",
+ "name": "Kyifaransa"
+ },
+ "el": {
+ "code": "el",
+ "name": "Kyigiriki"
+ },
+ "ha": {
+ "code": "ha",
+ "name": "Kyihausa"
+ },
+ "hi": {
+ "code": "hi",
+ "name": "Kyihindi"
+ },
+ "es": {
+ "code": "es",
+ "name": "Kyihispania"
+ },
+ "nl": {
+ "code": "nl",
+ "name": "Kyiholanzi"
+ },
+ "hu": {
+ "code": "hu",
+ "name": "Kyihungari"
+ },
+ "id": {
+ "code": "id",
+ "name": "Kyiindonesia"
+ },
+ "it": {
+ "code": "it",
+ "name": "Kyiitaliano"
+ },
+ "ja": {
+ "code": "ja",
+ "name": "Kyijapani"
+ },
+ "de": {
+ "code": "de",
+ "name": "Kyijerumani"
+ },
+ "km": {
+ "code": "km",
+ "name": "Kyikambodia"
+ },
+ "ko": {
+ "code": "ko",
+ "name": "Kyikorea"
+ },
+ "ms": {
+ "code": "ms",
+ "name": "Kyimalesia"
+ },
+ "ne": {
+ "code": "ne",
+ "name": "Kyinepali"
+ },
+ "en": {
+ "code": "en",
+ "name": "Kyingereza"
+ },
+ "pl": {
+ "code": "pl",
+ "name": "Kyipolandi"
+ },
+ "pa": {
+ "code": "pa",
+ "name": "Kyipunjabi"
+ },
+ "pt": {
+ "code": "pt",
+ "name": "Kyireno"
+ },
+ "ro": {
+ "code": "ro",
+ "name": "Kyiromania"
+ },
+ "ru": {
+ "code": "ru",
+ "name": "Kyirusi"
+ },
+ "so": {
+ "code": "so",
+ "name": "Kyisomalyi"
+ },
+ "sv": {
+ "code": "sv",
+ "name": "Kyiswidi"
+ },
+ "th": {
+ "code": "th",
+ "name": "Kyitailandi"
+ },
+ "ta": {
+ "code": "ta",
+ "name": "Kyitamil"
+ },
+ "tr": {
+ "code": "tr",
+ "name": "Kyiturukyi"
+ },
+ "uk": {
+ "code": "uk",
+ "name": "Kyiukrania"
+ },
+ "ur": {
+ "code": "ur",
+ "name": "Kyiurdu"
+ },
+ "vi": {
+ "code": "vi",
+ "name": "Kyivietinamu"
+ },
+ "yo": {
+ "code": "yo",
+ "name": "Kyiyoruba"
+ },
+ "zu": {
+ "code": "zu",
+ "name": "Kyizulu"
+ },
+ "ky": {
+ "code": "ky",
+ "name": "Kyrgyz"
+ },
+ "lag": {
+ "code": "lag",
+ "name": "Langi"
+ },
+ "lo": {
+ "code": "lo",
+ "name": "Lao"
+ },
+ "lv": {
+ "code": "lv",
+ "name": "Latvian"
+ },
+ "ln": {
+ "code": "ln",
+ "name": "Lingala"
+ },
+ "lt": {
+ "code": "lt",
+ "name": "Lithuanian"
+ },
+ "dsb": {
+ "code": "dsb",
+ "name": "Lower Sorbian"
+ },
+ "lu": {
+ "code": "lu",
+ "name": "Luba-Katanga"
+ },
+ "luo": {
+ "code": "luo",
+ "name": "Luo"
+ },
+ "lb": {
+ "code": "lb",
+ "name": "Luxembourgish"
+ },
+ "luy": {
+ "code": "luy",
+ "name": "Luyia"
+ },
+ "mk": {
+ "code": "mk",
+ "name": "Macedonian"
+ },
+ "jmc": {
+ "code": "jmc",
+ "name": "Machame"
+ },
+ "mgh": {
+ "code": "mgh",
+ "name": "Makhuwa-Meetto"
+ },
+ "kde": {
+ "code": "kde",
+ "name": "Makonde"
+ },
+ "mg": {
+ "code": "mg",
+ "name": "Malagasy"
+ },
+ "ml": {
+ "code": "ml",
+ "name": "Malayalam"
+ },
+ "mt": {
+ "code": "mt",
+ "name": "Maltese"
+ },
+ "mr": {
+ "code": "mr",
+ "name": "Marathi"
+ },
+ "mas": {
+ "code": "mas",
+ "name": "Masai"
+ },
+ "mer": {
+ "code": "mer",
+ "name": "Meru"
+ },
+ "mn": {
+ "code": "mn",
+ "name": "Mongolian"
+ },
+ "mfe": {
+ "code": "mfe",
+ "name": "Morisyen"
+ },
+ "mua": {
+ "code": "mua",
+ "name": "Mundang"
+ },
+ "naq": {
+ "code": "naq",
+ "name": "Nama"
+ },
+ "jgo": {
+ "code": "jgo",
+ "name": "Ngomba"
+ },
+ "nl-BE": {
+ "code": "nl-BE",
+ "name": "nl_BE"
+ },
+ "nd": {
+ "code": "nd",
+ "name": "North Ndebele"
+ },
+ "se": {
+ "code": "se",
+ "name": "Northern Sami"
+ },
+ "nb": {
+ "code": "nb",
+ "name": "Norwegian Bokmål"
+ },
+ "nn": {
+ "code": "nn",
+ "name": "Norwegian Nynorsk"
+ },
+ "nus": {
+ "code": "nus",
+ "name": "Nuer"
+ },
+ "nyn": {
+ "code": "nyn",
+ "name": "Nyankole"
+ },
+ "or": {
+ "code": "or",
+ "name": "Oriya"
+ },
+ "ps": {
+ "code": "ps",
+ "name": "Pashto"
+ },
+ "pt-BR": {
+ "code": "pt-BR",
+ "name": "pt_BR"
+ },
+ "pt-PT": {
+ "code": "pt-PT",
+ "name": "pt_PT"
+ },
+ "ro-MD": {
+ "code": "ro-MD",
+ "name": "ro_MD"
+ },
+ "rm": {
+ "code": "rm",
+ "name": "Romansh"
+ },
+ "rof": {
+ "code": "rof",
+ "name": "Rombo"
+ },
+ "rn": {
+ "code": "rn",
+ "name": "Rundi"
+ },
+ "saq": {
+ "code": "saq",
+ "name": "Samburu"
+ },
+ "sg": {
+ "code": "sg",
+ "name": "Sango"
+ },
+ "sbp": {
+ "code": "sbp",
+ "name": "Sangu"
+ },
+ "gd": {
+ "code": "gd",
+ "name": "Scottish Gaelic"
+ },
+ "seh": {
+ "code": "seh",
+ "name": "Sena"
+ },
+ "sr": {
+ "code": "sr",
+ "name": "Serbian"
+ },
+ "ksb": {
+ "code": "ksb",
+ "name": "Shambala"
+ },
+ "sn": {
+ "code": "sn",
+ "name": "Shona"
+ },
+ "si": {
+ "code": "si",
+ "name": "Sinhala"
+ },
+ "sk": {
+ "code": "sk",
+ "name": "Slovak"
+ },
+ "sl": {
+ "code": "sl",
+ "name": "Slovenian"
+ },
+ "xog": {
+ "code": "xog",
+ "name": "Soga"
+ },
+ "zgh": {
+ "code": "zgh",
+ "name": "Standard Moroccan Tamazight"
+ },
+ "sw": {
+ "code": "sw",
+ "name": "Swahili"
+ },
+ "gsw": {
+ "code": "gsw",
+ "name": "Swiss German"
+ },
+ "shi": {
+ "code": "shi",
+ "name": "Tachelhit"
+ },
+ "dav": {
+ "code": "dav",
+ "name": "Taita"
+ },
+ "twq": {
+ "code": "twq",
+ "name": "Tasawaq"
+ },
+ "te": {
+ "code": "te",
+ "name": "Telugu"
+ },
+ "teo": {
+ "code": "teo",
+ "name": "Teso"
+ },
+ "bo": {
+ "code": "bo",
+ "name": "Tibetan"
+ },
+ "ti": {
+ "code": "ti",
+ "name": "Tigrinya"
+ },
+ "to": {
+ "code": "to",
+ "name": "Tongan"
+ },
+ "hsb": {
+ "code": "hsb",
+ "name": "Upper Sorbian"
+ },
+ "ug": {
+ "code": "ug",
+ "name": "Uyghur"
+ },
+ "uz": {
+ "code": "uz",
+ "name": "Uzbek"
+ },
+ "vai": {
+ "code": "vai",
+ "name": "Vai"
+ },
+ "vun": {
+ "code": "vun",
+ "name": "Vunjo"
+ },
+ "wae": {
+ "code": "wae",
+ "name": "Walser"
+ },
+ "cy": {
+ "code": "cy",
+ "name": "Welsh"
+ },
+ "fy": {
+ "code": "fy",
+ "name": "Western Frisian"
+ },
+ "yav": {
+ "code": "yav",
+ "name": "Yangben"
+ },
+ "dje": {
+ "code": "dje",
+ "name": "Zarma"
+ },
+ "zh-Hans": {
+ "code": "zh-Hans",
+ "name": "zh_Hans"
+ },
+ "zh-Hant": {
+ "code": "zh-Hant",
+ "name": "zh_Hant"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/language/saq.json b/library/intl/resources/language/saq.json
new file mode 100644
index 000000000..aadbac26d
--- /dev/null
+++ b/library/intl/resources/language/saq.json
@@ -0,0 +1,738 @@
+{
+ "af": {
+ "code": "af",
+ "name": "Afrikaans"
+ },
+ "agq": {
+ "code": "agq",
+ "name": "Aghem"
+ },
+ "sq": {
+ "code": "sq",
+ "name": "Albanian"
+ },
+ "ar-001": {
+ "code": "ar-001",
+ "name": "ar_001"
+ },
+ "hy": {
+ "code": "hy",
+ "name": "Armenian"
+ },
+ "ast": {
+ "code": "ast",
+ "name": "Asturian"
+ },
+ "asa": {
+ "code": "asa",
+ "name": "Asu"
+ },
+ "az": {
+ "code": "az",
+ "name": "Azerbaijani"
+ },
+ "ksf": {
+ "code": "ksf",
+ "name": "Bafia"
+ },
+ "bm": {
+ "code": "bm",
+ "name": "Bambara"
+ },
+ "bas": {
+ "code": "bas",
+ "name": "Basaa"
+ },
+ "eu": {
+ "code": "eu",
+ "name": "Basque"
+ },
+ "bez": {
+ "code": "bez",
+ "name": "Bena"
+ },
+ "brx": {
+ "code": "brx",
+ "name": "Bodo"
+ },
+ "bs": {
+ "code": "bs",
+ "name": "Bosnian"
+ },
+ "br": {
+ "code": "br",
+ "name": "Breton"
+ },
+ "ca": {
+ "code": "ca",
+ "name": "Catalan"
+ },
+ "tzm": {
+ "code": "tzm",
+ "name": "Central Atlas Tamazight"
+ },
+ "chr": {
+ "code": "chr",
+ "name": "Cherokee"
+ },
+ "cgg": {
+ "code": "cgg",
+ "name": "Chiga"
+ },
+ "ksh": {
+ "code": "ksh",
+ "name": "Colognian"
+ },
+ "swc": {
+ "code": "swc",
+ "name": "Congo Swahili"
+ },
+ "hr": {
+ "code": "hr",
+ "name": "Croatian"
+ },
+ "da": {
+ "code": "da",
+ "name": "Danish"
+ },
+ "de-AT": {
+ "code": "de-AT",
+ "name": "de_AT"
+ },
+ "de-CH": {
+ "code": "de-CH",
+ "name": "de_CH"
+ },
+ "dz": {
+ "code": "dz",
+ "name": "Dzongkha"
+ },
+ "ebu": {
+ "code": "ebu",
+ "name": "Embu"
+ },
+ "en-AU": {
+ "code": "en-AU",
+ "name": "en_AU"
+ },
+ "en-CA": {
+ "code": "en-CA",
+ "name": "en_CA"
+ },
+ "en-GB": {
+ "code": "en-GB",
+ "name": "en_GB"
+ },
+ "en-US": {
+ "code": "en-US",
+ "name": "en_US"
+ },
+ "es-ES": {
+ "code": "es-ES",
+ "name": "es_ES"
+ },
+ "es-MX": {
+ "code": "es-MX",
+ "name": "es_MX"
+ },
+ "eo": {
+ "code": "eo",
+ "name": "Esperanto"
+ },
+ "et": {
+ "code": "et",
+ "name": "Estonian"
+ },
+ "ee": {
+ "code": "ee",
+ "name": "Ewe"
+ },
+ "ewo": {
+ "code": "ewo",
+ "name": "Ewondo"
+ },
+ "fo": {
+ "code": "fo",
+ "name": "Faroese"
+ },
+ "fil": {
+ "code": "fil",
+ "name": "Filipino"
+ },
+ "fi": {
+ "code": "fi",
+ "name": "Finnish"
+ },
+ "fr-CA": {
+ "code": "fr-CA",
+ "name": "fr_CA"
+ },
+ "fr-CH": {
+ "code": "fr-CH",
+ "name": "fr_CH"
+ },
+ "fur": {
+ "code": "fur",
+ "name": "Friulian"
+ },
+ "ff": {
+ "code": "ff",
+ "name": "Fulah"
+ },
+ "gl": {
+ "code": "gl",
+ "name": "Galician"
+ },
+ "lg": {
+ "code": "lg",
+ "name": "Ganda"
+ },
+ "ka": {
+ "code": "ka",
+ "name": "Georgian"
+ },
+ "gu": {
+ "code": "gu",
+ "name": "Gujarati"
+ },
+ "guz": {
+ "code": "guz",
+ "name": "Gusii"
+ },
+ "he": {
+ "code": "he",
+ "name": "Hebrew"
+ },
+ "is": {
+ "code": "is",
+ "name": "Icelandic"
+ },
+ "ga": {
+ "code": "ga",
+ "name": "Irish"
+ },
+ "dyo": {
+ "code": "dyo",
+ "name": "Jola-Fonyi"
+ },
+ "kea": {
+ "code": "kea",
+ "name": "Kabuverdianu"
+ },
+ "kab": {
+ "code": "kab",
+ "name": "Kabyle"
+ },
+ "kl": {
+ "code": "kl",
+ "name": "Kalaallisut"
+ },
+ "kln": {
+ "code": "kln",
+ "name": "Kalenjin"
+ },
+ "kam": {
+ "code": "kam",
+ "name": "Kamba"
+ },
+ "kn": {
+ "code": "kn",
+ "name": "Kannada"
+ },
+ "ks": {
+ "code": "ks",
+ "name": "Kashmiri"
+ },
+ "kk": {
+ "code": "kk",
+ "name": "Kazakh"
+ },
+ "fa": {
+ "code": "fa",
+ "name": "Kiajemi"
+ },
+ "ak": {
+ "code": "ak",
+ "name": "Kiakan"
+ },
+ "am": {
+ "code": "am",
+ "name": "Kiamhari"
+ },
+ "ar": {
+ "code": "ar",
+ "name": "Kiarabu"
+ },
+ "bn": {
+ "code": "bn",
+ "name": "Kibangla"
+ },
+ "be": {
+ "code": "be",
+ "name": "Kibelarusi"
+ },
+ "bg": {
+ "code": "bg",
+ "name": "Kibulgaria"
+ },
+ "my": {
+ "code": "my",
+ "name": "Kiburma"
+ },
+ "cs": {
+ "code": "cs",
+ "name": "Kichecki"
+ },
+ "zh": {
+ "code": "zh",
+ "name": "Kichina"
+ },
+ "fr": {
+ "code": "fr",
+ "name": "Kifaransa"
+ },
+ "el": {
+ "code": "el",
+ "name": "Kigiriki"
+ },
+ "ha": {
+ "code": "ha",
+ "name": "Kihausa"
+ },
+ "hi": {
+ "code": "hi",
+ "name": "Kihindi"
+ },
+ "es": {
+ "code": "es",
+ "name": "Kihispania"
+ },
+ "nl": {
+ "code": "nl",
+ "name": "Kiholanzi"
+ },
+ "hu": {
+ "code": "hu",
+ "name": "Kihungari"
+ },
+ "id": {
+ "code": "id",
+ "name": "Kiindonesia"
+ },
+ "it": {
+ "code": "it",
+ "name": "Kiitaliano"
+ },
+ "ja": {
+ "code": "ja",
+ "name": "Kijapani"
+ },
+ "de": {
+ "code": "de",
+ "name": "Kijerumani"
+ },
+ "km": {
+ "code": "km",
+ "name": "Kikambodia"
+ },
+ "ko": {
+ "code": "ko",
+ "name": "Kikorea"
+ },
+ "ki": {
+ "code": "ki",
+ "name": "Kikuyu"
+ },
+ "ms": {
+ "code": "ms",
+ "name": "Kimalesia"
+ },
+ "ne": {
+ "code": "ne",
+ "name": "Kinepali"
+ },
+ "en": {
+ "code": "en",
+ "name": "Kingereza"
+ },
+ "pl": {
+ "code": "pl",
+ "name": "Kipolandi"
+ },
+ "pa": {
+ "code": "pa",
+ "name": "Kipunjabi"
+ },
+ "pt": {
+ "code": "pt",
+ "name": "Kireno"
+ },
+ "ro": {
+ "code": "ro",
+ "name": "Kiromania"
+ },
+ "ru": {
+ "code": "ru",
+ "name": "Kirusi"
+ },
+ "saq": {
+ "code": "saq",
+ "name": "Kisampur"
+ },
+ "so": {
+ "code": "so",
+ "name": "Kisomali"
+ },
+ "sv": {
+ "code": "sv",
+ "name": "Kiswidi"
+ },
+ "th": {
+ "code": "th",
+ "name": "Kitailandi"
+ },
+ "ta": {
+ "code": "ta",
+ "name": "Kitamil"
+ },
+ "tr": {
+ "code": "tr",
+ "name": "Kituruki"
+ },
+ "uk": {
+ "code": "uk",
+ "name": "Kiukrania"
+ },
+ "ur": {
+ "code": "ur",
+ "name": "Kiurdu"
+ },
+ "vi": {
+ "code": "vi",
+ "name": "Kivietinamu"
+ },
+ "yo": {
+ "code": "yo",
+ "name": "Kiyoruba"
+ },
+ "zu": {
+ "code": "zu",
+ "name": "Kizulu"
+ },
+ "khq": {
+ "code": "khq",
+ "name": "Koyra Chiini"
+ },
+ "ses": {
+ "code": "ses",
+ "name": "Koyraboro Senni"
+ },
+ "nmg": {
+ "code": "nmg",
+ "name": "Kwasio"
+ },
+ "ky": {
+ "code": "ky",
+ "name": "Kyrgyz"
+ },
+ "lag": {
+ "code": "lag",
+ "name": "Langi"
+ },
+ "lo": {
+ "code": "lo",
+ "name": "Lao"
+ },
+ "lv": {
+ "code": "lv",
+ "name": "Latvian"
+ },
+ "ln": {
+ "code": "ln",
+ "name": "Lingala"
+ },
+ "lt": {
+ "code": "lt",
+ "name": "Lithuanian"
+ },
+ "dsb": {
+ "code": "dsb",
+ "name": "Lower Sorbian"
+ },
+ "lu": {
+ "code": "lu",
+ "name": "Luba-Katanga"
+ },
+ "luo": {
+ "code": "luo",
+ "name": "Luo"
+ },
+ "lb": {
+ "code": "lb",
+ "name": "Luxembourgish"
+ },
+ "luy": {
+ "code": "luy",
+ "name": "Luyia"
+ },
+ "mk": {
+ "code": "mk",
+ "name": "Macedonian"
+ },
+ "jmc": {
+ "code": "jmc",
+ "name": "Machame"
+ },
+ "mgh": {
+ "code": "mgh",
+ "name": "Makhuwa-Meetto"
+ },
+ "kde": {
+ "code": "kde",
+ "name": "Makonde"
+ },
+ "mg": {
+ "code": "mg",
+ "name": "Malagasy"
+ },
+ "ml": {
+ "code": "ml",
+ "name": "Malayalam"
+ },
+ "mt": {
+ "code": "mt",
+ "name": "Maltese"
+ },
+ "mr": {
+ "code": "mr",
+ "name": "Marathi"
+ },
+ "mas": {
+ "code": "mas",
+ "name": "Masai"
+ },
+ "mer": {
+ "code": "mer",
+ "name": "Meru"
+ },
+ "mn": {
+ "code": "mn",
+ "name": "Mongolian"
+ },
+ "mfe": {
+ "code": "mfe",
+ "name": "Morisyen"
+ },
+ "mua": {
+ "code": "mua",
+ "name": "Mundang"
+ },
+ "naq": {
+ "code": "naq",
+ "name": "Nama"
+ },
+ "jgo": {
+ "code": "jgo",
+ "name": "Ngomba"
+ },
+ "nl-BE": {
+ "code": "nl-BE",
+ "name": "nl_BE"
+ },
+ "nd": {
+ "code": "nd",
+ "name": "North Ndebele"
+ },
+ "se": {
+ "code": "se",
+ "name": "Northern Sami"
+ },
+ "nb": {
+ "code": "nb",
+ "name": "Norwegian Bokmål"
+ },
+ "nn": {
+ "code": "nn",
+ "name": "Norwegian Nynorsk"
+ },
+ "nus": {
+ "code": "nus",
+ "name": "Nuer"
+ },
+ "nyn": {
+ "code": "nyn",
+ "name": "Nyankole"
+ },
+ "or": {
+ "code": "or",
+ "name": "Oriya"
+ },
+ "ps": {
+ "code": "ps",
+ "name": "Pashto"
+ },
+ "pt-BR": {
+ "code": "pt-BR",
+ "name": "pt_BR"
+ },
+ "pt-PT": {
+ "code": "pt-PT",
+ "name": "pt_PT"
+ },
+ "ro-MD": {
+ "code": "ro-MD",
+ "name": "ro_MD"
+ },
+ "rm": {
+ "code": "rm",
+ "name": "Romansh"
+ },
+ "rof": {
+ "code": "rof",
+ "name": "Rombo"
+ },
+ "rn": {
+ "code": "rn",
+ "name": "Rundi"
+ },
+ "rwk": {
+ "code": "rwk",
+ "name": "Rwa"
+ },
+ "sg": {
+ "code": "sg",
+ "name": "Sango"
+ },
+ "sbp": {
+ "code": "sbp",
+ "name": "Sangu"
+ },
+ "gd": {
+ "code": "gd",
+ "name": "Scottish Gaelic"
+ },
+ "seh": {
+ "code": "seh",
+ "name": "Sena"
+ },
+ "sr": {
+ "code": "sr",
+ "name": "Serbian"
+ },
+ "ksb": {
+ "code": "ksb",
+ "name": "Shambala"
+ },
+ "sn": {
+ "code": "sn",
+ "name": "Shona"
+ },
+ "si": {
+ "code": "si",
+ "name": "Sinhala"
+ },
+ "sk": {
+ "code": "sk",
+ "name": "Slovak"
+ },
+ "sl": {
+ "code": "sl",
+ "name": "Slovenian"
+ },
+ "xog": {
+ "code": "xog",
+ "name": "Soga"
+ },
+ "zgh": {
+ "code": "zgh",
+ "name": "Standard Moroccan Tamazight"
+ },
+ "sw": {
+ "code": "sw",
+ "name": "Swahili"
+ },
+ "gsw": {
+ "code": "gsw",
+ "name": "Swiss German"
+ },
+ "shi": {
+ "code": "shi",
+ "name": "Tachelhit"
+ },
+ "dav": {
+ "code": "dav",
+ "name": "Taita"
+ },
+ "twq": {
+ "code": "twq",
+ "name": "Tasawaq"
+ },
+ "te": {
+ "code": "te",
+ "name": "Telugu"
+ },
+ "teo": {
+ "code": "teo",
+ "name": "Teso"
+ },
+ "bo": {
+ "code": "bo",
+ "name": "Tibetan"
+ },
+ "ti": {
+ "code": "ti",
+ "name": "Tigrinya"
+ },
+ "to": {
+ "code": "to",
+ "name": "Tongan"
+ },
+ "hsb": {
+ "code": "hsb",
+ "name": "Upper Sorbian"
+ },
+ "ug": {
+ "code": "ug",
+ "name": "Uyghur"
+ },
+ "uz": {
+ "code": "uz",
+ "name": "Uzbek"
+ },
+ "vai": {
+ "code": "vai",
+ "name": "Vai"
+ },
+ "vun": {
+ "code": "vun",
+ "name": "Vunjo"
+ },
+ "wae": {
+ "code": "wae",
+ "name": "Walser"
+ },
+ "cy": {
+ "code": "cy",
+ "name": "Welsh"
+ },
+ "fy": {
+ "code": "fy",
+ "name": "Western Frisian"
+ },
+ "yav": {
+ "code": "yav",
+ "name": "Yangben"
+ },
+ "dje": {
+ "code": "dje",
+ "name": "Zarma"
+ },
+ "zh-Hans": {
+ "code": "zh-Hans",
+ "name": "zh_Hans"
+ },
+ "zh-Hant": {
+ "code": "zh-Hant",
+ "name": "zh_Hant"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/language/sbp.json b/library/intl/resources/language/sbp.json
new file mode 100644
index 000000000..2ad554ffd
--- /dev/null
+++ b/library/intl/resources/language/sbp.json
@@ -0,0 +1,738 @@
+{
+ "af": {
+ "code": "af",
+ "name": "Afrikaans"
+ },
+ "agq": {
+ "code": "agq",
+ "name": "Aghem"
+ },
+ "sq": {
+ "code": "sq",
+ "name": "Albanian"
+ },
+ "ar-001": {
+ "code": "ar-001",
+ "name": "ar_001"
+ },
+ "hy": {
+ "code": "hy",
+ "name": "Armenian"
+ },
+ "ast": {
+ "code": "ast",
+ "name": "Asturian"
+ },
+ "asa": {
+ "code": "asa",
+ "name": "Asu"
+ },
+ "az": {
+ "code": "az",
+ "name": "Azerbaijani"
+ },
+ "ksf": {
+ "code": "ksf",
+ "name": "Bafia"
+ },
+ "bm": {
+ "code": "bm",
+ "name": "Bambara"
+ },
+ "bas": {
+ "code": "bas",
+ "name": "Basaa"
+ },
+ "eu": {
+ "code": "eu",
+ "name": "Basque"
+ },
+ "bez": {
+ "code": "bez",
+ "name": "Bena"
+ },
+ "brx": {
+ "code": "brx",
+ "name": "Bodo"
+ },
+ "bs": {
+ "code": "bs",
+ "name": "Bosnian"
+ },
+ "br": {
+ "code": "br",
+ "name": "Breton"
+ },
+ "ca": {
+ "code": "ca",
+ "name": "Catalan"
+ },
+ "tzm": {
+ "code": "tzm",
+ "name": "Central Atlas Tamazight"
+ },
+ "chr": {
+ "code": "chr",
+ "name": "Cherokee"
+ },
+ "cgg": {
+ "code": "cgg",
+ "name": "Chiga"
+ },
+ "ksh": {
+ "code": "ksh",
+ "name": "Colognian"
+ },
+ "swc": {
+ "code": "swc",
+ "name": "Congo Swahili"
+ },
+ "hr": {
+ "code": "hr",
+ "name": "Croatian"
+ },
+ "da": {
+ "code": "da",
+ "name": "Danish"
+ },
+ "de-AT": {
+ "code": "de-AT",
+ "name": "de_AT"
+ },
+ "de-CH": {
+ "code": "de-CH",
+ "name": "de_CH"
+ },
+ "dz": {
+ "code": "dz",
+ "name": "Dzongkha"
+ },
+ "ebu": {
+ "code": "ebu",
+ "name": "Embu"
+ },
+ "en-AU": {
+ "code": "en-AU",
+ "name": "en_AU"
+ },
+ "en-CA": {
+ "code": "en-CA",
+ "name": "en_CA"
+ },
+ "en-GB": {
+ "code": "en-GB",
+ "name": "en_GB"
+ },
+ "en-US": {
+ "code": "en-US",
+ "name": "en_US"
+ },
+ "es-ES": {
+ "code": "es-ES",
+ "name": "es_ES"
+ },
+ "es-MX": {
+ "code": "es-MX",
+ "name": "es_MX"
+ },
+ "eo": {
+ "code": "eo",
+ "name": "Esperanto"
+ },
+ "et": {
+ "code": "et",
+ "name": "Estonian"
+ },
+ "ee": {
+ "code": "ee",
+ "name": "Ewe"
+ },
+ "ewo": {
+ "code": "ewo",
+ "name": "Ewondo"
+ },
+ "fo": {
+ "code": "fo",
+ "name": "Faroese"
+ },
+ "fil": {
+ "code": "fil",
+ "name": "Filipino"
+ },
+ "fi": {
+ "code": "fi",
+ "name": "Finnish"
+ },
+ "fr-CA": {
+ "code": "fr-CA",
+ "name": "fr_CA"
+ },
+ "fr-CH": {
+ "code": "fr-CH",
+ "name": "fr_CH"
+ },
+ "fur": {
+ "code": "fur",
+ "name": "Friulian"
+ },
+ "ff": {
+ "code": "ff",
+ "name": "Fulah"
+ },
+ "gl": {
+ "code": "gl",
+ "name": "Galician"
+ },
+ "lg": {
+ "code": "lg",
+ "name": "Ganda"
+ },
+ "ka": {
+ "code": "ka",
+ "name": "Georgian"
+ },
+ "gu": {
+ "code": "gu",
+ "name": "Gujarati"
+ },
+ "guz": {
+ "code": "guz",
+ "name": "Gusii"
+ },
+ "he": {
+ "code": "he",
+ "name": "Hebrew"
+ },
+ "is": {
+ "code": "is",
+ "name": "Icelandic"
+ },
+ "ga": {
+ "code": "ga",
+ "name": "Irish"
+ },
+ "fa": {
+ "code": "fa",
+ "name": "Ishiajemi"
+ },
+ "bn": {
+ "code": "bn",
+ "name": "Ishibangila"
+ },
+ "be": {
+ "code": "be",
+ "name": "Ishibelalusi"
+ },
+ "bg": {
+ "code": "bg",
+ "name": "Ishibulugalia"
+ },
+ "my": {
+ "code": "my",
+ "name": "Ishibuluma"
+ },
+ "fr": {
+ "code": "fr",
+ "name": "Ishifalansa"
+ },
+ "el": {
+ "code": "el",
+ "name": "Ishigiliki"
+ },
+ "ha": {
+ "code": "ha",
+ "name": "Ishihawusa"
+ },
+ "hi": {
+ "code": "hi",
+ "name": "Ishihindi"
+ },
+ "id": {
+ "code": "id",
+ "name": "Ishihindonesia"
+ },
+ "es": {
+ "code": "es",
+ "name": "Ishihisipaniya"
+ },
+ "it": {
+ "code": "it",
+ "name": "Ishihitaliyano"
+ },
+ "nl": {
+ "code": "nl",
+ "name": "Ishiholansi"
+ },
+ "hu": {
+ "code": "hu",
+ "name": "Ishihungali"
+ },
+ "ja": {
+ "code": "ja",
+ "name": "Ishijapani"
+ },
+ "de": {
+ "code": "de",
+ "name": "Ishijelumani"
+ },
+ "km": {
+ "code": "km",
+ "name": "Ishikambodia"
+ },
+ "ko": {
+ "code": "ko",
+ "name": "Ishikoleya"
+ },
+ "pt": {
+ "code": "pt",
+ "name": "Ishileno"
+ },
+ "ro": {
+ "code": "ro",
+ "name": "Ishilomaniya"
+ },
+ "ru": {
+ "code": "ru",
+ "name": "Ishilusi"
+ },
+ "ms": {
+ "code": "ms",
+ "name": "Ishimalesiya"
+ },
+ "ne": {
+ "code": "ne",
+ "name": "Ishinepali"
+ },
+ "en": {
+ "code": "en",
+ "name": "Ishingelesa"
+ },
+ "pl": {
+ "code": "pl",
+ "name": "Ishipolandi"
+ },
+ "pa": {
+ "code": "pa",
+ "name": "Ishipunjabi"
+ },
+ "sbp": {
+ "code": "sbp",
+ "name": "Ishisangu"
+ },
+ "cs": {
+ "code": "cs",
+ "name": "Ishisheki"
+ },
+ "zh": {
+ "code": "zh",
+ "name": "Ishishina"
+ },
+ "so": {
+ "code": "so",
+ "name": "Ishisomali"
+ },
+ "zu": {
+ "code": "zu",
+ "name": "Ishisulu"
+ },
+ "sv": {
+ "code": "sv",
+ "name": "Ishiswidi"
+ },
+ "ta": {
+ "code": "ta",
+ "name": "Ishitamili"
+ },
+ "th": {
+ "code": "th",
+ "name": "Ishitayilandi"
+ },
+ "tr": {
+ "code": "tr",
+ "name": "Ishituluki"
+ },
+ "vi": {
+ "code": "vi",
+ "name": "Ishivietinamu"
+ },
+ "ur": {
+ "code": "ur",
+ "name": "Ishiwuludi"
+ },
+ "ak": {
+ "code": "ak",
+ "name": "Ishiyakani"
+ },
+ "ar": {
+ "code": "ar",
+ "name": "Ishiyalabu"
+ },
+ "am": {
+ "code": "am",
+ "name": "Ishiyamuhali"
+ },
+ "yo": {
+ "code": "yo",
+ "name": "Ishiyoluba"
+ },
+ "uk": {
+ "code": "uk",
+ "name": "Ishiyukilaniya"
+ },
+ "dyo": {
+ "code": "dyo",
+ "name": "Jola-Fonyi"
+ },
+ "kea": {
+ "code": "kea",
+ "name": "Kabuverdianu"
+ },
+ "kab": {
+ "code": "kab",
+ "name": "Kabyle"
+ },
+ "kl": {
+ "code": "kl",
+ "name": "Kalaallisut"
+ },
+ "kln": {
+ "code": "kln",
+ "name": "Kalenjin"
+ },
+ "kam": {
+ "code": "kam",
+ "name": "Kamba"
+ },
+ "kn": {
+ "code": "kn",
+ "name": "Kannada"
+ },
+ "ks": {
+ "code": "ks",
+ "name": "Kashmiri"
+ },
+ "kk": {
+ "code": "kk",
+ "name": "Kazakh"
+ },
+ "ki": {
+ "code": "ki",
+ "name": "Kikuyu"
+ },
+ "khq": {
+ "code": "khq",
+ "name": "Koyra Chiini"
+ },
+ "ses": {
+ "code": "ses",
+ "name": "Koyraboro Senni"
+ },
+ "nmg": {
+ "code": "nmg",
+ "name": "Kwasio"
+ },
+ "ky": {
+ "code": "ky",
+ "name": "Kyrgyz"
+ },
+ "lag": {
+ "code": "lag",
+ "name": "Langi"
+ },
+ "lo": {
+ "code": "lo",
+ "name": "Lao"
+ },
+ "lv": {
+ "code": "lv",
+ "name": "Latvian"
+ },
+ "ln": {
+ "code": "ln",
+ "name": "Lingala"
+ },
+ "lt": {
+ "code": "lt",
+ "name": "Lithuanian"
+ },
+ "dsb": {
+ "code": "dsb",
+ "name": "Lower Sorbian"
+ },
+ "lu": {
+ "code": "lu",
+ "name": "Luba-Katanga"
+ },
+ "luo": {
+ "code": "luo",
+ "name": "Luo"
+ },
+ "lb": {
+ "code": "lb",
+ "name": "Luxembourgish"
+ },
+ "luy": {
+ "code": "luy",
+ "name": "Luyia"
+ },
+ "mk": {
+ "code": "mk",
+ "name": "Macedonian"
+ },
+ "jmc": {
+ "code": "jmc",
+ "name": "Machame"
+ },
+ "mgh": {
+ "code": "mgh",
+ "name": "Makhuwa-Meetto"
+ },
+ "kde": {
+ "code": "kde",
+ "name": "Makonde"
+ },
+ "mg": {
+ "code": "mg",
+ "name": "Malagasy"
+ },
+ "ml": {
+ "code": "ml",
+ "name": "Malayalam"
+ },
+ "mt": {
+ "code": "mt",
+ "name": "Maltese"
+ },
+ "mr": {
+ "code": "mr",
+ "name": "Marathi"
+ },
+ "mas": {
+ "code": "mas",
+ "name": "Masai"
+ },
+ "mer": {
+ "code": "mer",
+ "name": "Meru"
+ },
+ "mn": {
+ "code": "mn",
+ "name": "Mongolian"
+ },
+ "mfe": {
+ "code": "mfe",
+ "name": "Morisyen"
+ },
+ "mua": {
+ "code": "mua",
+ "name": "Mundang"
+ },
+ "naq": {
+ "code": "naq",
+ "name": "Nama"
+ },
+ "jgo": {
+ "code": "jgo",
+ "name": "Ngomba"
+ },
+ "nl-BE": {
+ "code": "nl-BE",
+ "name": "nl_BE"
+ },
+ "nd": {
+ "code": "nd",
+ "name": "North Ndebele"
+ },
+ "se": {
+ "code": "se",
+ "name": "Northern Sami"
+ },
+ "nb": {
+ "code": "nb",
+ "name": "Norwegian Bokmål"
+ },
+ "nn": {
+ "code": "nn",
+ "name": "Norwegian Nynorsk"
+ },
+ "nus": {
+ "code": "nus",
+ "name": "Nuer"
+ },
+ "nyn": {
+ "code": "nyn",
+ "name": "Nyankole"
+ },
+ "or": {
+ "code": "or",
+ "name": "Oriya"
+ },
+ "ps": {
+ "code": "ps",
+ "name": "Pashto"
+ },
+ "pt-BR": {
+ "code": "pt-BR",
+ "name": "pt_BR"
+ },
+ "pt-PT": {
+ "code": "pt-PT",
+ "name": "pt_PT"
+ },
+ "ro-MD": {
+ "code": "ro-MD",
+ "name": "ro_MD"
+ },
+ "rm": {
+ "code": "rm",
+ "name": "Romansh"
+ },
+ "rof": {
+ "code": "rof",
+ "name": "Rombo"
+ },
+ "rn": {
+ "code": "rn",
+ "name": "Rundi"
+ },
+ "rwk": {
+ "code": "rwk",
+ "name": "Rwa"
+ },
+ "saq": {
+ "code": "saq",
+ "name": "Samburu"
+ },
+ "sg": {
+ "code": "sg",
+ "name": "Sango"
+ },
+ "gd": {
+ "code": "gd",
+ "name": "Scottish Gaelic"
+ },
+ "seh": {
+ "code": "seh",
+ "name": "Sena"
+ },
+ "sr": {
+ "code": "sr",
+ "name": "Serbian"
+ },
+ "ksb": {
+ "code": "ksb",
+ "name": "Shambala"
+ },
+ "sn": {
+ "code": "sn",
+ "name": "Shona"
+ },
+ "si": {
+ "code": "si",
+ "name": "Sinhala"
+ },
+ "sk": {
+ "code": "sk",
+ "name": "Slovak"
+ },
+ "sl": {
+ "code": "sl",
+ "name": "Slovenian"
+ },
+ "xog": {
+ "code": "xog",
+ "name": "Soga"
+ },
+ "zgh": {
+ "code": "zgh",
+ "name": "Standard Moroccan Tamazight"
+ },
+ "sw": {
+ "code": "sw",
+ "name": "Swahili"
+ },
+ "gsw": {
+ "code": "gsw",
+ "name": "Swiss German"
+ },
+ "shi": {
+ "code": "shi",
+ "name": "Tachelhit"
+ },
+ "dav": {
+ "code": "dav",
+ "name": "Taita"
+ },
+ "twq": {
+ "code": "twq",
+ "name": "Tasawaq"
+ },
+ "te": {
+ "code": "te",
+ "name": "Telugu"
+ },
+ "teo": {
+ "code": "teo",
+ "name": "Teso"
+ },
+ "bo": {
+ "code": "bo",
+ "name": "Tibetan"
+ },
+ "ti": {
+ "code": "ti",
+ "name": "Tigrinya"
+ },
+ "to": {
+ "code": "to",
+ "name": "Tongan"
+ },
+ "hsb": {
+ "code": "hsb",
+ "name": "Upper Sorbian"
+ },
+ "ug": {
+ "code": "ug",
+ "name": "Uyghur"
+ },
+ "uz": {
+ "code": "uz",
+ "name": "Uzbek"
+ },
+ "vai": {
+ "code": "vai",
+ "name": "Vai"
+ },
+ "vun": {
+ "code": "vun",
+ "name": "Vunjo"
+ },
+ "wae": {
+ "code": "wae",
+ "name": "Walser"
+ },
+ "cy": {
+ "code": "cy",
+ "name": "Welsh"
+ },
+ "fy": {
+ "code": "fy",
+ "name": "Western Frisian"
+ },
+ "yav": {
+ "code": "yav",
+ "name": "Yangben"
+ },
+ "dje": {
+ "code": "dje",
+ "name": "Zarma"
+ },
+ "zh-Hans": {
+ "code": "zh-Hans",
+ "name": "zh_Hans"
+ },
+ "zh-Hant": {
+ "code": "zh-Hant",
+ "name": "zh_Hant"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/language/se-FI.json b/library/intl/resources/language/se-FI.json
new file mode 100644
index 000000000..365f39185
--- /dev/null
+++ b/library/intl/resources/language/se-FI.json
@@ -0,0 +1,738 @@
+{
+ "af": {
+ "code": "af",
+ "name": "afrikánsagiella"
+ },
+ "agq": {
+ "code": "agq",
+ "name": "Aghem"
+ },
+ "ak": {
+ "code": "ak",
+ "name": "Akan"
+ },
+ "sq": {
+ "code": "sq",
+ "name": "albánagiella"
+ },
+ "zh-Hans": {
+ "code": "zh-Hans",
+ "name": "álkes kiinnágiella"
+ },
+ "en-US": {
+ "code": "en-US",
+ "name": "amerihkálaš eaŋgalsgiella"
+ },
+ "am": {
+ "code": "am",
+ "name": "Amharic"
+ },
+ "ar": {
+ "code": "ar",
+ "name": "arábagiella"
+ },
+ "zh-Hant": {
+ "code": "zh-Hant",
+ "name": "árbevirolaš kiinnágiella"
+ },
+ "hy": {
+ "code": "hy",
+ "name": "armenagiella"
+ },
+ "ast": {
+ "code": "ast",
+ "name": "asturiagiella"
+ },
+ "asa": {
+ "code": "asa",
+ "name": "Asu"
+ },
+ "en-AU": {
+ "code": "en-AU",
+ "name": "austrálialaš eaŋgalsgiella"
+ },
+ "az": {
+ "code": "az",
+ "name": "Azerbaijani"
+ },
+ "ksf": {
+ "code": "ksf",
+ "name": "Bafia"
+ },
+ "bm": {
+ "code": "bm",
+ "name": "Bambara"
+ },
+ "bas": {
+ "code": "bas",
+ "name": "Basaa"
+ },
+ "eu": {
+ "code": "eu",
+ "name": "Basque"
+ },
+ "nl-BE": {
+ "code": "nl-BE",
+ "name": "belgialaš hollánddagiella"
+ },
+ "bez": {
+ "code": "bez",
+ "name": "Bena"
+ },
+ "bn": {
+ "code": "bn",
+ "name": "bengalagiella"
+ },
+ "brx": {
+ "code": "brx",
+ "name": "Bodo"
+ },
+ "bs": {
+ "code": "bs",
+ "name": "bosniagiella"
+ },
+ "pt-BR": {
+ "code": "pt-BR",
+ "name": "brasilialaš portugálagiella"
+ },
+ "br": {
+ "code": "br",
+ "name": "bretonagiella"
+ },
+ "en-GB": {
+ "code": "en-GB",
+ "name": "brihttalaš eaŋgalsgiella"
+ },
+ "bg": {
+ "code": "bg",
+ "name": "bulgáriagiella"
+ },
+ "my": {
+ "code": "my",
+ "name": "burmagiella"
+ },
+ "cs": {
+ "code": "cs",
+ "name": "Äeahkagiella"
+ },
+ "tzm": {
+ "code": "tzm",
+ "name": "Central Atlas Tamazight"
+ },
+ "chr": {
+ "code": "chr",
+ "name": "Cherokee"
+ },
+ "cgg": {
+ "code": "cgg",
+ "name": "Chiga"
+ },
+ "ksh": {
+ "code": "ksh",
+ "name": "Colognian"
+ },
+ "swc": {
+ "code": "swc",
+ "name": "Congo Swahili"
+ },
+ "da": {
+ "code": "da",
+ "name": "dánskkagiella"
+ },
+ "se": {
+ "code": "se",
+ "name": "davvisámegiella"
+ },
+ "de": {
+ "code": "de",
+ "name": "duiskkagiella"
+ },
+ "tr": {
+ "code": "tr",
+ "name": "durkagiella"
+ },
+ "dz": {
+ "code": "dz",
+ "name": "dzongkhagiella"
+ },
+ "en": {
+ "code": "en",
+ "name": "eaŋgalsgiella"
+ },
+ "ebu": {
+ "code": "ebu",
+ "name": "Embu"
+ },
+ "es-ES": {
+ "code": "es-ES",
+ "name": "espánjalaš spánskkagiella"
+ },
+ "eo": {
+ "code": "eo",
+ "name": "Esperanto"
+ },
+ "et": {
+ "code": "et",
+ "name": "esttegiella"
+ },
+ "ee": {
+ "code": "ee",
+ "name": "Ewe"
+ },
+ "ewo": {
+ "code": "ewo",
+ "name": "Ewondo"
+ },
+ "fo": {
+ "code": "fo",
+ "name": "fearagiella"
+ },
+ "fil": {
+ "code": "fil",
+ "name": "filippiinnagiella"
+ },
+ "fr": {
+ "code": "fr",
+ "name": "fránskkagiella"
+ },
+ "fur": {
+ "code": "fur",
+ "name": "Friulian"
+ },
+ "ff": {
+ "code": "ff",
+ "name": "Fulah"
+ },
+ "gl": {
+ "code": "gl",
+ "name": "Galician"
+ },
+ "lg": {
+ "code": "lg",
+ "name": "Ganda"
+ },
+ "ka": {
+ "code": "ka",
+ "name": "georgiagiella"
+ },
+ "nb": {
+ "code": "nb",
+ "name": "girjedárogiella"
+ },
+ "el": {
+ "code": "el",
+ "name": "greikkagiella"
+ },
+ "gu": {
+ "code": "gu",
+ "name": "gujaratagiella"
+ },
+ "guz": {
+ "code": "guz",
+ "name": "Gusii"
+ },
+ "ha": {
+ "code": "ha",
+ "name": "haussagiella"
+ },
+ "he": {
+ "code": "he",
+ "name": "Hebrew"
+ },
+ "hi": {
+ "code": "hi",
+ "name": "hindigiella"
+ },
+ "nl": {
+ "code": "nl",
+ "name": "hollánddagiella"
+ },
+ "ga": {
+ "code": "ga",
+ "name": "iirragiella"
+ },
+ "id": {
+ "code": "id",
+ "name": "indonesiagiella"
+ },
+ "is": {
+ "code": "is",
+ "name": "islánddagiella"
+ },
+ "it": {
+ "code": "it",
+ "name": "itáliagiella"
+ },
+ "ja": {
+ "code": "ja",
+ "name": "japánagiella"
+ },
+ "dyo": {
+ "code": "dyo",
+ "name": "Jola-Fonyi"
+ },
+ "kea": {
+ "code": "kea",
+ "name": "Kabuverdianu"
+ },
+ "kab": {
+ "code": "kab",
+ "name": "Kabyle"
+ },
+ "kl": {
+ "code": "kl",
+ "name": "Kalaallisut"
+ },
+ "kln": {
+ "code": "kln",
+ "name": "Kalenjin"
+ },
+ "kam": {
+ "code": "kam",
+ "name": "Kamba"
+ },
+ "km": {
+ "code": "km",
+ "name": "kambožagiella"
+ },
+ "en-CA": {
+ "code": "en-CA",
+ "name": "kanádalaš eaŋgalsgiella"
+ },
+ "fr-CA": {
+ "code": "fr-CA",
+ "name": "kanádalaš fránskkagiella"
+ },
+ "kn": {
+ "code": "kn",
+ "name": "Kannada"
+ },
+ "ks": {
+ "code": "ks",
+ "name": "Kashmiri"
+ },
+ "ca": {
+ "code": "ca",
+ "name": "katalánagiella"
+ },
+ "kk": {
+ "code": "kk",
+ "name": "kazakhgiella"
+ },
+ "zh": {
+ "code": "zh",
+ "name": "kiinnágiella"
+ },
+ "ki": {
+ "code": "ki",
+ "name": "Kikuyu"
+ },
+ "ko": {
+ "code": "ko",
+ "name": "koreagiella"
+ },
+ "khq": {
+ "code": "khq",
+ "name": "Koyra Chiini"
+ },
+ "ses": {
+ "code": "ses",
+ "name": "Koyraboro Senni"
+ },
+ "hr": {
+ "code": "hr",
+ "name": "kroátiagiella"
+ },
+ "nmg": {
+ "code": "nmg",
+ "name": "Kwasio"
+ },
+ "cy": {
+ "code": "cy",
+ "name": "kymragiella"
+ },
+ "ky": {
+ "code": "ky",
+ "name": "Kyrgyz"
+ },
+ "lag": {
+ "code": "lag",
+ "name": "Langi"
+ },
+ "lo": {
+ "code": "lo",
+ "name": "laogiella"
+ },
+ "lv": {
+ "code": "lv",
+ "name": "látviagiella"
+ },
+ "lt": {
+ "code": "lt",
+ "name": "liettuvagiella"
+ },
+ "ln": {
+ "code": "ln",
+ "name": "Lingala"
+ },
+ "dsb": {
+ "code": "dsb",
+ "name": "Lower Sorbian"
+ },
+ "lu": {
+ "code": "lu",
+ "name": "Luba-Katanga"
+ },
+ "luo": {
+ "code": "luo",
+ "name": "Luo"
+ },
+ "lb": {
+ "code": "lb",
+ "name": "luxemburggagiella"
+ },
+ "luy": {
+ "code": "luy",
+ "name": "Luyia"
+ },
+ "jmc": {
+ "code": "jmc",
+ "name": "Machame"
+ },
+ "mk": {
+ "code": "mk",
+ "name": "makedoniagiella"
+ },
+ "mgh": {
+ "code": "mgh",
+ "name": "Makhuwa-Meetto"
+ },
+ "kde": {
+ "code": "kde",
+ "name": "Makonde"
+ },
+ "mg": {
+ "code": "mg",
+ "name": "Malagasy"
+ },
+ "ms": {
+ "code": "ms",
+ "name": "Malay"
+ },
+ "ml": {
+ "code": "ml",
+ "name": "Malayalam"
+ },
+ "mt": {
+ "code": "mt",
+ "name": "maltagiella"
+ },
+ "mr": {
+ "code": "mr",
+ "name": "Marathi"
+ },
+ "mas": {
+ "code": "mas",
+ "name": "Masai"
+ },
+ "es-MX": {
+ "code": "es-MX",
+ "name": "meksikolaš spánskkagiella"
+ },
+ "mer": {
+ "code": "mer",
+ "name": "Meru"
+ },
+ "ro-MD": {
+ "code": "ro-MD",
+ "name": "moldávialaš romániagiella"
+ },
+ "mn": {
+ "code": "mn",
+ "name": "mongoliagiella"
+ },
+ "mfe": {
+ "code": "mfe",
+ "name": "Morisyen"
+ },
+ "mua": {
+ "code": "mua",
+ "name": "Mundang"
+ },
+ "naq": {
+ "code": "naq",
+ "name": "Nama"
+ },
+ "ne": {
+ "code": "ne",
+ "name": "nepalagiella"
+ },
+ "jgo": {
+ "code": "jgo",
+ "name": "Ngomba"
+ },
+ "nd": {
+ "code": "nd",
+ "name": "North Ndebele"
+ },
+ "nus": {
+ "code": "nus",
+ "name": "Nuer"
+ },
+ "de-AT": {
+ "code": "de-AT",
+ "name": "nuortariikkalaš duiskkagiella"
+ },
+ "nyn": {
+ "code": "nyn",
+ "name": "Nyankole"
+ },
+ "fy": {
+ "code": "fy",
+ "name": "oarjifriisagiella"
+ },
+ "nn": {
+ "code": "nn",
+ "name": "ođđadárogiella"
+ },
+ "or": {
+ "code": "or",
+ "name": "Oriya"
+ },
+ "pa": {
+ "code": "pa",
+ "name": "panjabagiella"
+ },
+ "ps": {
+ "code": "ps",
+ "name": "Pashto"
+ },
+ "fa": {
+ "code": "fa",
+ "name": "persijagiella"
+ },
+ "pl": {
+ "code": "pl",
+ "name": "polskkagiella"
+ },
+ "pt": {
+ "code": "pt",
+ "name": "portugálagiella"
+ },
+ "pt-PT": {
+ "code": "pt-PT",
+ "name": "portugálalaš portugálagiella"
+ },
+ "ro": {
+ "code": "ro",
+ "name": "romániagiella"
+ },
+ "rm": {
+ "code": "rm",
+ "name": "romanšgiella"
+ },
+ "rof": {
+ "code": "rof",
+ "name": "Rombo"
+ },
+ "rn": {
+ "code": "rn",
+ "name": "Rundi"
+ },
+ "ru": {
+ "code": "ru",
+ "name": "ruoššagiella"
+ },
+ "sv": {
+ "code": "sv",
+ "name": "ruoŧagiella"
+ },
+ "rwk": {
+ "code": "rwk",
+ "name": "Rwa"
+ },
+ "saq": {
+ "code": "saq",
+ "name": "Samburu"
+ },
+ "sg": {
+ "code": "sg",
+ "name": "Sango"
+ },
+ "sbp": {
+ "code": "sbp",
+ "name": "Sangu"
+ },
+ "gd": {
+ "code": "gd",
+ "name": "Scottish Gaelic"
+ },
+ "seh": {
+ "code": "seh",
+ "name": "Sena"
+ },
+ "sr": {
+ "code": "sr",
+ "name": "serbiagiella"
+ },
+ "ksb": {
+ "code": "ksb",
+ "name": "Shambala"
+ },
+ "sn": {
+ "code": "sn",
+ "name": "Shona"
+ },
+ "si": {
+ "code": "si",
+ "name": "Sinhala"
+ },
+ "sk": {
+ "code": "sk",
+ "name": "slovákiagiella"
+ },
+ "sl": {
+ "code": "sl",
+ "name": "slovenagiella"
+ },
+ "xog": {
+ "code": "xog",
+ "name": "Soga"
+ },
+ "so": {
+ "code": "so",
+ "name": "Somali"
+ },
+ "es": {
+ "code": "es",
+ "name": "spánskkagiella"
+ },
+ "zgh": {
+ "code": "zgh",
+ "name": "Standard Moroccan Tamazight"
+ },
+ "ar-001": {
+ "code": "ar-001",
+ "name": "standárda arábagiella"
+ },
+ "fi": {
+ "code": "fi",
+ "name": "suomagiella"
+ },
+ "de-CH": {
+ "code": "de-CH",
+ "name": "šveicalaš duiskkagiella"
+ },
+ "fr-CH": {
+ "code": "fr-CH",
+ "name": "šveicalaš fránskkagiella"
+ },
+ "sw": {
+ "code": "sw",
+ "name": "Swahili"
+ },
+ "gsw": {
+ "code": "gsw",
+ "name": "Swiss German"
+ },
+ "shi": {
+ "code": "shi",
+ "name": "Tachelhit"
+ },
+ "dav": {
+ "code": "dav",
+ "name": "Taita"
+ },
+ "ta": {
+ "code": "ta",
+ "name": "Tamil"
+ },
+ "twq": {
+ "code": "twq",
+ "name": "Tasawaq"
+ },
+ "te": {
+ "code": "te",
+ "name": "Telugu"
+ },
+ "teo": {
+ "code": "teo",
+ "name": "Teso"
+ },
+ "th": {
+ "code": "th",
+ "name": "thaigiella"
+ },
+ "bo": {
+ "code": "bo",
+ "name": "tibetagiella"
+ },
+ "ti": {
+ "code": "ti",
+ "name": "Tigrinya"
+ },
+ "to": {
+ "code": "to",
+ "name": "Tongan"
+ },
+ "uk": {
+ "code": "uk",
+ "name": "ukrainagiella"
+ },
+ "hu": {
+ "code": "hu",
+ "name": "ungárgiella"
+ },
+ "hsb": {
+ "code": "hsb",
+ "name": "Upper Sorbian"
+ },
+ "ur": {
+ "code": "ur",
+ "name": "urdugiella"
+ },
+ "ug": {
+ "code": "ug",
+ "name": "Uyghur"
+ },
+ "uz": {
+ "code": "uz",
+ "name": "Uzbek"
+ },
+ "vai": {
+ "code": "vai",
+ "name": "Vai"
+ },
+ "vi": {
+ "code": "vi",
+ "name": "vietnamagiella"
+ },
+ "be": {
+ "code": "be",
+ "name": "vilgesruoššagiella"
+ },
+ "vun": {
+ "code": "vun",
+ "name": "Vunjo"
+ },
+ "wae": {
+ "code": "wae",
+ "name": "Walser"
+ },
+ "yav": {
+ "code": "yav",
+ "name": "Yangben"
+ },
+ "yo": {
+ "code": "yo",
+ "name": "Yoruba"
+ },
+ "dje": {
+ "code": "dje",
+ "name": "Zarma"
+ },
+ "zu": {
+ "code": "zu",
+ "name": "Zulu"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/language/se.json b/library/intl/resources/language/se.json
new file mode 100644
index 000000000..f12ea34fc
--- /dev/null
+++ b/library/intl/resources/language/se.json
@@ -0,0 +1,738 @@
+{
+ "af": {
+ "code": "af",
+ "name": "afrikánsagiella"
+ },
+ "agq": {
+ "code": "agq",
+ "name": "Aghem"
+ },
+ "ak": {
+ "code": "ak",
+ "name": "Akan"
+ },
+ "sq": {
+ "code": "sq",
+ "name": "albánagiella"
+ },
+ "zh-Hans": {
+ "code": "zh-Hans",
+ "name": "álki kiinágiella"
+ },
+ "am": {
+ "code": "am",
+ "name": "Amharic"
+ },
+ "ar-001": {
+ "code": "ar-001",
+ "name": "ar_001"
+ },
+ "ar": {
+ "code": "ar",
+ "name": "arábagiella"
+ },
+ "zh-Hant": {
+ "code": "zh-Hant",
+ "name": "árbevirolaš kiinnágiella"
+ },
+ "hy": {
+ "code": "hy",
+ "name": "armeenagiella"
+ },
+ "ast": {
+ "code": "ast",
+ "name": "asturiagiella"
+ },
+ "asa": {
+ "code": "asa",
+ "name": "Asu"
+ },
+ "az": {
+ "code": "az",
+ "name": "Azerbaijani"
+ },
+ "ksf": {
+ "code": "ksf",
+ "name": "Bafia"
+ },
+ "bm": {
+ "code": "bm",
+ "name": "Bambara"
+ },
+ "bas": {
+ "code": "bas",
+ "name": "Basaa"
+ },
+ "eu": {
+ "code": "eu",
+ "name": "Basque"
+ },
+ "bez": {
+ "code": "bez",
+ "name": "Bena"
+ },
+ "bn": {
+ "code": "bn",
+ "name": "bengalgiella"
+ },
+ "brx": {
+ "code": "brx",
+ "name": "Bodo"
+ },
+ "bs": {
+ "code": "bs",
+ "name": "bosniagiella"
+ },
+ "br": {
+ "code": "br",
+ "name": "bretonagiella"
+ },
+ "bg": {
+ "code": "bg",
+ "name": "bulgáriagiella"
+ },
+ "my": {
+ "code": "my",
+ "name": "burmagiella"
+ },
+ "cs": {
+ "code": "cs",
+ "name": "Äeahkagiella"
+ },
+ "tzm": {
+ "code": "tzm",
+ "name": "Central Atlas Tamazight"
+ },
+ "chr": {
+ "code": "chr",
+ "name": "Cherokee"
+ },
+ "cgg": {
+ "code": "cgg",
+ "name": "Chiga"
+ },
+ "ksh": {
+ "code": "ksh",
+ "name": "Colognian"
+ },
+ "swc": {
+ "code": "swc",
+ "name": "Congo Swahili"
+ },
+ "da": {
+ "code": "da",
+ "name": "dánskkagiella"
+ },
+ "se": {
+ "code": "se",
+ "name": "davvisámegiella"
+ },
+ "de-AT": {
+ "code": "de-AT",
+ "name": "de_AT"
+ },
+ "de-CH": {
+ "code": "de-CH",
+ "name": "de_CH"
+ },
+ "de": {
+ "code": "de",
+ "name": "duiskkagiella"
+ },
+ "tr": {
+ "code": "tr",
+ "name": "durkagiella"
+ },
+ "dz": {
+ "code": "dz",
+ "name": "dzongkhagiella"
+ },
+ "en": {
+ "code": "en",
+ "name": "eaŋgalsgiella"
+ },
+ "ebu": {
+ "code": "ebu",
+ "name": "Embu"
+ },
+ "en-AU": {
+ "code": "en-AU",
+ "name": "en_AU"
+ },
+ "en-CA": {
+ "code": "en-CA",
+ "name": "en_CA"
+ },
+ "en-GB": {
+ "code": "en-GB",
+ "name": "en_GB"
+ },
+ "en-US": {
+ "code": "en-US",
+ "name": "en_US"
+ },
+ "es-ES": {
+ "code": "es-ES",
+ "name": "es_ES"
+ },
+ "es-MX": {
+ "code": "es-MX",
+ "name": "es_MX"
+ },
+ "eo": {
+ "code": "eo",
+ "name": "Esperanto"
+ },
+ "et": {
+ "code": "et",
+ "name": "esttegiella"
+ },
+ "ee": {
+ "code": "ee",
+ "name": "Ewe"
+ },
+ "ewo": {
+ "code": "ewo",
+ "name": "Ewondo"
+ },
+ "fo": {
+ "code": "fo",
+ "name": "fearagiella"
+ },
+ "fil": {
+ "code": "fil",
+ "name": "filippiinnagiella"
+ },
+ "fr-CA": {
+ "code": "fr-CA",
+ "name": "fr_CA"
+ },
+ "fr-CH": {
+ "code": "fr-CH",
+ "name": "fr_CH"
+ },
+ "fr": {
+ "code": "fr",
+ "name": "fránskkagiella"
+ },
+ "fur": {
+ "code": "fur",
+ "name": "Friulian"
+ },
+ "ff": {
+ "code": "ff",
+ "name": "Fulah"
+ },
+ "gl": {
+ "code": "gl",
+ "name": "Galician"
+ },
+ "lg": {
+ "code": "lg",
+ "name": "Ganda"
+ },
+ "ka": {
+ "code": "ka",
+ "name": "georgiagiella"
+ },
+ "nb": {
+ "code": "nb",
+ "name": "girjedárogiella"
+ },
+ "el": {
+ "code": "el",
+ "name": "greikkagiella"
+ },
+ "gu": {
+ "code": "gu",
+ "name": "gujaratagiella"
+ },
+ "guz": {
+ "code": "guz",
+ "name": "Gusii"
+ },
+ "ha": {
+ "code": "ha",
+ "name": "haussagiella"
+ },
+ "he": {
+ "code": "he",
+ "name": "Hebrew"
+ },
+ "hi": {
+ "code": "hi",
+ "name": "hindigiella"
+ },
+ "nl": {
+ "code": "nl",
+ "name": "hollánddagiella"
+ },
+ "ga": {
+ "code": "ga",
+ "name": "iirragiella"
+ },
+ "id": {
+ "code": "id",
+ "name": "indonesiagiella"
+ },
+ "is": {
+ "code": "is",
+ "name": "islánddagiella"
+ },
+ "it": {
+ "code": "it",
+ "name": "itáliagiella"
+ },
+ "ja": {
+ "code": "ja",
+ "name": "japánagiella"
+ },
+ "dyo": {
+ "code": "dyo",
+ "name": "Jola-Fonyi"
+ },
+ "kea": {
+ "code": "kea",
+ "name": "Kabuverdianu"
+ },
+ "kab": {
+ "code": "kab",
+ "name": "Kabyle"
+ },
+ "kl": {
+ "code": "kl",
+ "name": "Kalaallisut"
+ },
+ "kln": {
+ "code": "kln",
+ "name": "Kalenjin"
+ },
+ "kam": {
+ "code": "kam",
+ "name": "Kamba"
+ },
+ "km": {
+ "code": "km",
+ "name": "kambodiagiella"
+ },
+ "kn": {
+ "code": "kn",
+ "name": "Kannada"
+ },
+ "ks": {
+ "code": "ks",
+ "name": "Kashmiri"
+ },
+ "ca": {
+ "code": "ca",
+ "name": "katalánagiella"
+ },
+ "kk": {
+ "code": "kk",
+ "name": "kazakgiella"
+ },
+ "zh": {
+ "code": "zh",
+ "name": "kiinnágiella"
+ },
+ "ki": {
+ "code": "ki",
+ "name": "Kikuyu"
+ },
+ "ko": {
+ "code": "ko",
+ "name": "koreagiella"
+ },
+ "khq": {
+ "code": "khq",
+ "name": "Koyra Chiini"
+ },
+ "ses": {
+ "code": "ses",
+ "name": "Koyraboro Senni"
+ },
+ "hr": {
+ "code": "hr",
+ "name": "kroátiagiella"
+ },
+ "nmg": {
+ "code": "nmg",
+ "name": "Kwasio"
+ },
+ "cy": {
+ "code": "cy",
+ "name": "kymragiella"
+ },
+ "ky": {
+ "code": "ky",
+ "name": "Kyrgyz"
+ },
+ "lag": {
+ "code": "lag",
+ "name": "Langi"
+ },
+ "lo": {
+ "code": "lo",
+ "name": "laogiella"
+ },
+ "lv": {
+ "code": "lv",
+ "name": "látviagiella"
+ },
+ "lt": {
+ "code": "lt",
+ "name": "liettuvagiella"
+ },
+ "ln": {
+ "code": "ln",
+ "name": "Lingala"
+ },
+ "dsb": {
+ "code": "dsb",
+ "name": "Lower Sorbian"
+ },
+ "lu": {
+ "code": "lu",
+ "name": "Luba-Katanga"
+ },
+ "luo": {
+ "code": "luo",
+ "name": "Luo"
+ },
+ "lb": {
+ "code": "lb",
+ "name": "luxemburggagiella"
+ },
+ "luy": {
+ "code": "luy",
+ "name": "Luyia"
+ },
+ "jmc": {
+ "code": "jmc",
+ "name": "Machame"
+ },
+ "mk": {
+ "code": "mk",
+ "name": "makedoniagiella"
+ },
+ "mgh": {
+ "code": "mgh",
+ "name": "Makhuwa-Meetto"
+ },
+ "kde": {
+ "code": "kde",
+ "name": "Makonde"
+ },
+ "mg": {
+ "code": "mg",
+ "name": "Malagasy"
+ },
+ "ms": {
+ "code": "ms",
+ "name": "Malay"
+ },
+ "ml": {
+ "code": "ml",
+ "name": "Malayalam"
+ },
+ "mt": {
+ "code": "mt",
+ "name": "maltagiella"
+ },
+ "mr": {
+ "code": "mr",
+ "name": "Marathi"
+ },
+ "mas": {
+ "code": "mas",
+ "name": "Masai"
+ },
+ "mer": {
+ "code": "mer",
+ "name": "Meru"
+ },
+ "mn": {
+ "code": "mn",
+ "name": "mongoliagiella"
+ },
+ "mfe": {
+ "code": "mfe",
+ "name": "Morisyen"
+ },
+ "mua": {
+ "code": "mua",
+ "name": "Mundang"
+ },
+ "naq": {
+ "code": "naq",
+ "name": "Nama"
+ },
+ "ne": {
+ "code": "ne",
+ "name": "nepaligiella"
+ },
+ "jgo": {
+ "code": "jgo",
+ "name": "Ngomba"
+ },
+ "nl-BE": {
+ "code": "nl-BE",
+ "name": "nl_BE"
+ },
+ "nd": {
+ "code": "nd",
+ "name": "North Ndebele"
+ },
+ "nus": {
+ "code": "nus",
+ "name": "Nuer"
+ },
+ "nyn": {
+ "code": "nyn",
+ "name": "Nyankole"
+ },
+ "fy": {
+ "code": "fy",
+ "name": "oarjifriisagiella"
+ },
+ "nn": {
+ "code": "nn",
+ "name": "ođđadárogiella"
+ },
+ "or": {
+ "code": "or",
+ "name": "Oriya"
+ },
+ "pa": {
+ "code": "pa",
+ "name": "panjabigiella"
+ },
+ "ps": {
+ "code": "ps",
+ "name": "Pashto"
+ },
+ "fa": {
+ "code": "fa",
+ "name": "persijagiella"
+ },
+ "pl": {
+ "code": "pl",
+ "name": "polskkagiella"
+ },
+ "pt": {
+ "code": "pt",
+ "name": "portugálagiella"
+ },
+ "pt-BR": {
+ "code": "pt-BR",
+ "name": "pt_BR"
+ },
+ "pt-PT": {
+ "code": "pt-PT",
+ "name": "pt_PT"
+ },
+ "ro-MD": {
+ "code": "ro-MD",
+ "name": "ro_MD"
+ },
+ "ro": {
+ "code": "ro",
+ "name": "romániagiella"
+ },
+ "rm": {
+ "code": "rm",
+ "name": "romanšgiella"
+ },
+ "rof": {
+ "code": "rof",
+ "name": "Rombo"
+ },
+ "rn": {
+ "code": "rn",
+ "name": "Rundi"
+ },
+ "ru": {
+ "code": "ru",
+ "name": "ruoššagiella"
+ },
+ "sv": {
+ "code": "sv",
+ "name": "ruoŧagiella"
+ },
+ "rwk": {
+ "code": "rwk",
+ "name": "Rwa"
+ },
+ "saq": {
+ "code": "saq",
+ "name": "Samburu"
+ },
+ "sg": {
+ "code": "sg",
+ "name": "Sango"
+ },
+ "sbp": {
+ "code": "sbp",
+ "name": "Sangu"
+ },
+ "gd": {
+ "code": "gd",
+ "name": "Scottish Gaelic"
+ },
+ "seh": {
+ "code": "seh",
+ "name": "Sena"
+ },
+ "sr": {
+ "code": "sr",
+ "name": "serbiagiella"
+ },
+ "ksb": {
+ "code": "ksb",
+ "name": "Shambala"
+ },
+ "sn": {
+ "code": "sn",
+ "name": "Shona"
+ },
+ "si": {
+ "code": "si",
+ "name": "Sinhala"
+ },
+ "sk": {
+ "code": "sk",
+ "name": "slovákiagiella"
+ },
+ "sl": {
+ "code": "sl",
+ "name": "slovenagiella"
+ },
+ "xog": {
+ "code": "xog",
+ "name": "Soga"
+ },
+ "so": {
+ "code": "so",
+ "name": "Somali"
+ },
+ "es": {
+ "code": "es",
+ "name": "spánskkagiella"
+ },
+ "zgh": {
+ "code": "zgh",
+ "name": "Standard Moroccan Tamazight"
+ },
+ "fi": {
+ "code": "fi",
+ "name": "suomagiella"
+ },
+ "sw": {
+ "code": "sw",
+ "name": "Swahili"
+ },
+ "gsw": {
+ "code": "gsw",
+ "name": "Swiss German"
+ },
+ "shi": {
+ "code": "shi",
+ "name": "Tachelhit"
+ },
+ "dav": {
+ "code": "dav",
+ "name": "Taita"
+ },
+ "ta": {
+ "code": "ta",
+ "name": "Tamil"
+ },
+ "twq": {
+ "code": "twq",
+ "name": "Tasawaq"
+ },
+ "te": {
+ "code": "te",
+ "name": "Telugu"
+ },
+ "teo": {
+ "code": "teo",
+ "name": "Teso"
+ },
+ "bo": {
+ "code": "bo",
+ "name": "tibetagiella"
+ },
+ "ti": {
+ "code": "ti",
+ "name": "Tigrinya"
+ },
+ "to": {
+ "code": "to",
+ "name": "Tongan"
+ },
+ "th": {
+ "code": "th",
+ "name": "ŧaigiella"
+ },
+ "uk": {
+ "code": "uk",
+ "name": "ukrainagiella"
+ },
+ "hu": {
+ "code": "hu",
+ "name": "ungárgiella"
+ },
+ "hsb": {
+ "code": "hsb",
+ "name": "Upper Sorbian"
+ },
+ "ur": {
+ "code": "ur",
+ "name": "urdugiella"
+ },
+ "ug": {
+ "code": "ug",
+ "name": "Uyghur"
+ },
+ "uz": {
+ "code": "uz",
+ "name": "Uzbek"
+ },
+ "vai": {
+ "code": "vai",
+ "name": "Vai"
+ },
+ "vi": {
+ "code": "vi",
+ "name": "vietnamgiella"
+ },
+ "be": {
+ "code": "be",
+ "name": "vilges-ruoššagiella"
+ },
+ "vun": {
+ "code": "vun",
+ "name": "Vunjo"
+ },
+ "wae": {
+ "code": "wae",
+ "name": "Walser"
+ },
+ "yav": {
+ "code": "yav",
+ "name": "Yangben"
+ },
+ "yo": {
+ "code": "yo",
+ "name": "Yoruba"
+ },
+ "dje": {
+ "code": "dje",
+ "name": "Zarma"
+ },
+ "zu": {
+ "code": "zu",
+ "name": "Zulu"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/language/seh.json b/library/intl/resources/language/seh.json
new file mode 100644
index 000000000..1f6f598ed
--- /dev/null
+++ b/library/intl/resources/language/seh.json
@@ -0,0 +1,738 @@
+{
+ "af": {
+ "code": "af",
+ "name": "Afrikaans"
+ },
+ "agq": {
+ "code": "agq",
+ "name": "Aghem"
+ },
+ "ak": {
+ "code": "ak",
+ "name": "akan"
+ },
+ "sq": {
+ "code": "sq",
+ "name": "Albanian"
+ },
+ "de": {
+ "code": "de",
+ "name": "alemão"
+ },
+ "am": {
+ "code": "am",
+ "name": "amárico"
+ },
+ "ar-001": {
+ "code": "ar-001",
+ "name": "ar_001"
+ },
+ "ar": {
+ "code": "ar",
+ "name": "árabe"
+ },
+ "hy": {
+ "code": "hy",
+ "name": "Armenian"
+ },
+ "ast": {
+ "code": "ast",
+ "name": "Asturian"
+ },
+ "asa": {
+ "code": "asa",
+ "name": "Asu"
+ },
+ "az": {
+ "code": "az",
+ "name": "Azerbaijani"
+ },
+ "ksf": {
+ "code": "ksf",
+ "name": "Bafia"
+ },
+ "bm": {
+ "code": "bm",
+ "name": "Bambara"
+ },
+ "bas": {
+ "code": "bas",
+ "name": "Basaa"
+ },
+ "eu": {
+ "code": "eu",
+ "name": "Basque"
+ },
+ "bez": {
+ "code": "bez",
+ "name": "Bena"
+ },
+ "bn": {
+ "code": "bn",
+ "name": "bengali"
+ },
+ "be": {
+ "code": "be",
+ "name": "bielo-russo"
+ },
+ "my": {
+ "code": "my",
+ "name": "birmanês"
+ },
+ "brx": {
+ "code": "brx",
+ "name": "Bodo"
+ },
+ "bs": {
+ "code": "bs",
+ "name": "Bosnian"
+ },
+ "br": {
+ "code": "br",
+ "name": "Breton"
+ },
+ "bg": {
+ "code": "bg",
+ "name": "búlgaro"
+ },
+ "ca": {
+ "code": "ca",
+ "name": "Catalan"
+ },
+ "tzm": {
+ "code": "tzm",
+ "name": "Central Atlas Tamazight"
+ },
+ "chr": {
+ "code": "chr",
+ "name": "Cherokee"
+ },
+ "cgg": {
+ "code": "cgg",
+ "name": "Chiga"
+ },
+ "zh": {
+ "code": "zh",
+ "name": "chinês"
+ },
+ "km": {
+ "code": "km",
+ "name": "cmer"
+ },
+ "ksh": {
+ "code": "ksh",
+ "name": "Colognian"
+ },
+ "swc": {
+ "code": "swc",
+ "name": "Congo Swahili"
+ },
+ "ko": {
+ "code": "ko",
+ "name": "coreano"
+ },
+ "hr": {
+ "code": "hr",
+ "name": "Croatian"
+ },
+ "da": {
+ "code": "da",
+ "name": "Danish"
+ },
+ "de-AT": {
+ "code": "de-AT",
+ "name": "de_AT"
+ },
+ "de-CH": {
+ "code": "de-CH",
+ "name": "de_CH"
+ },
+ "dz": {
+ "code": "dz",
+ "name": "Dzongkha"
+ },
+ "ebu": {
+ "code": "ebu",
+ "name": "Embu"
+ },
+ "en-AU": {
+ "code": "en-AU",
+ "name": "en_AU"
+ },
+ "en-CA": {
+ "code": "en-CA",
+ "name": "en_CA"
+ },
+ "en-GB": {
+ "code": "en-GB",
+ "name": "en_GB"
+ },
+ "en-US": {
+ "code": "en-US",
+ "name": "en_US"
+ },
+ "es-ES": {
+ "code": "es-ES",
+ "name": "es_ES"
+ },
+ "es-MX": {
+ "code": "es-MX",
+ "name": "es_MX"
+ },
+ "es": {
+ "code": "es",
+ "name": "espanhol"
+ },
+ "eo": {
+ "code": "eo",
+ "name": "Esperanto"
+ },
+ "et": {
+ "code": "et",
+ "name": "Estonian"
+ },
+ "ee": {
+ "code": "ee",
+ "name": "Ewe"
+ },
+ "ewo": {
+ "code": "ewo",
+ "name": "Ewondo"
+ },
+ "fo": {
+ "code": "fo",
+ "name": "Faroese"
+ },
+ "fil": {
+ "code": "fil",
+ "name": "Filipino"
+ },
+ "fi": {
+ "code": "fi",
+ "name": "Finnish"
+ },
+ "fr-CA": {
+ "code": "fr-CA",
+ "name": "fr_CA"
+ },
+ "fr-CH": {
+ "code": "fr-CH",
+ "name": "fr_CH"
+ },
+ "fr": {
+ "code": "fr",
+ "name": "francês"
+ },
+ "fur": {
+ "code": "fur",
+ "name": "Friulian"
+ },
+ "ff": {
+ "code": "ff",
+ "name": "Fulah"
+ },
+ "gl": {
+ "code": "gl",
+ "name": "Galician"
+ },
+ "lg": {
+ "code": "lg",
+ "name": "Ganda"
+ },
+ "ka": {
+ "code": "ka",
+ "name": "Georgian"
+ },
+ "el": {
+ "code": "el",
+ "name": "grego"
+ },
+ "gu": {
+ "code": "gu",
+ "name": "Gujarati"
+ },
+ "guz": {
+ "code": "guz",
+ "name": "Gusii"
+ },
+ "ha": {
+ "code": "ha",
+ "name": "hausa"
+ },
+ "he": {
+ "code": "he",
+ "name": "Hebrew"
+ },
+ "hi": {
+ "code": "hi",
+ "name": "hindi"
+ },
+ "nl": {
+ "code": "nl",
+ "name": "holandês"
+ },
+ "hu": {
+ "code": "hu",
+ "name": "húngaro"
+ },
+ "is": {
+ "code": "is",
+ "name": "Icelandic"
+ },
+ "id": {
+ "code": "id",
+ "name": "indonésio"
+ },
+ "en": {
+ "code": "en",
+ "name": "inglês"
+ },
+ "yo": {
+ "code": "yo",
+ "name": "iorubá"
+ },
+ "ga": {
+ "code": "ga",
+ "name": "Irish"
+ },
+ "it": {
+ "code": "it",
+ "name": "italiano"
+ },
+ "ja": {
+ "code": "ja",
+ "name": "japonês"
+ },
+ "dyo": {
+ "code": "dyo",
+ "name": "Jola-Fonyi"
+ },
+ "kea": {
+ "code": "kea",
+ "name": "Kabuverdianu"
+ },
+ "kab": {
+ "code": "kab",
+ "name": "Kabyle"
+ },
+ "kl": {
+ "code": "kl",
+ "name": "Kalaallisut"
+ },
+ "kln": {
+ "code": "kln",
+ "name": "Kalenjin"
+ },
+ "kam": {
+ "code": "kam",
+ "name": "Kamba"
+ },
+ "kn": {
+ "code": "kn",
+ "name": "Kannada"
+ },
+ "ks": {
+ "code": "ks",
+ "name": "Kashmiri"
+ },
+ "kk": {
+ "code": "kk",
+ "name": "Kazakh"
+ },
+ "ki": {
+ "code": "ki",
+ "name": "Kikuyu"
+ },
+ "khq": {
+ "code": "khq",
+ "name": "Koyra Chiini"
+ },
+ "ses": {
+ "code": "ses",
+ "name": "Koyraboro Senni"
+ },
+ "nmg": {
+ "code": "nmg",
+ "name": "Kwasio"
+ },
+ "ky": {
+ "code": "ky",
+ "name": "Kyrgyz"
+ },
+ "lag": {
+ "code": "lag",
+ "name": "Langi"
+ },
+ "lo": {
+ "code": "lo",
+ "name": "Lao"
+ },
+ "lv": {
+ "code": "lv",
+ "name": "Latvian"
+ },
+ "ln": {
+ "code": "ln",
+ "name": "Lingala"
+ },
+ "lt": {
+ "code": "lt",
+ "name": "Lithuanian"
+ },
+ "dsb": {
+ "code": "dsb",
+ "name": "Lower Sorbian"
+ },
+ "lu": {
+ "code": "lu",
+ "name": "Luba-Katanga"
+ },
+ "luo": {
+ "code": "luo",
+ "name": "Luo"
+ },
+ "lb": {
+ "code": "lb",
+ "name": "Luxembourgish"
+ },
+ "luy": {
+ "code": "luy",
+ "name": "Luyia"
+ },
+ "mk": {
+ "code": "mk",
+ "name": "Macedonian"
+ },
+ "jmc": {
+ "code": "jmc",
+ "name": "Machame"
+ },
+ "mgh": {
+ "code": "mgh",
+ "name": "Makhuwa-Meetto"
+ },
+ "kde": {
+ "code": "kde",
+ "name": "Makonde"
+ },
+ "mg": {
+ "code": "mg",
+ "name": "Malagasy"
+ },
+ "ms": {
+ "code": "ms",
+ "name": "malaio"
+ },
+ "ml": {
+ "code": "ml",
+ "name": "Malayalam"
+ },
+ "mt": {
+ "code": "mt",
+ "name": "Maltese"
+ },
+ "mr": {
+ "code": "mr",
+ "name": "Marathi"
+ },
+ "mas": {
+ "code": "mas",
+ "name": "Masai"
+ },
+ "mer": {
+ "code": "mer",
+ "name": "Meru"
+ },
+ "mn": {
+ "code": "mn",
+ "name": "Mongolian"
+ },
+ "mfe": {
+ "code": "mfe",
+ "name": "Morisyen"
+ },
+ "mua": {
+ "code": "mua",
+ "name": "Mundang"
+ },
+ "naq": {
+ "code": "naq",
+ "name": "Nama"
+ },
+ "ne": {
+ "code": "ne",
+ "name": "nepalês"
+ },
+ "jgo": {
+ "code": "jgo",
+ "name": "Ngomba"
+ },
+ "nl-BE": {
+ "code": "nl-BE",
+ "name": "nl_BE"
+ },
+ "nd": {
+ "code": "nd",
+ "name": "North Ndebele"
+ },
+ "se": {
+ "code": "se",
+ "name": "Northern Sami"
+ },
+ "nb": {
+ "code": "nb",
+ "name": "Norwegian Bokmål"
+ },
+ "nn": {
+ "code": "nn",
+ "name": "Norwegian Nynorsk"
+ },
+ "nus": {
+ "code": "nus",
+ "name": "Nuer"
+ },
+ "nyn": {
+ "code": "nyn",
+ "name": "Nyankole"
+ },
+ "or": {
+ "code": "or",
+ "name": "Oriya"
+ },
+ "pa": {
+ "code": "pa",
+ "name": "panjabi"
+ },
+ "ps": {
+ "code": "ps",
+ "name": "Pashto"
+ },
+ "fa": {
+ "code": "fa",
+ "name": "persa"
+ },
+ "pl": {
+ "code": "pl",
+ "name": "polonês"
+ },
+ "pt": {
+ "code": "pt",
+ "name": "português"
+ },
+ "pt-BR": {
+ "code": "pt-BR",
+ "name": "pt_BR"
+ },
+ "pt-PT": {
+ "code": "pt-PT",
+ "name": "pt_PT"
+ },
+ "ro-MD": {
+ "code": "ro-MD",
+ "name": "ro_MD"
+ },
+ "rm": {
+ "code": "rm",
+ "name": "Romansh"
+ },
+ "rof": {
+ "code": "rof",
+ "name": "Rombo"
+ },
+ "ro": {
+ "code": "ro",
+ "name": "romeno"
+ },
+ "rn": {
+ "code": "rn",
+ "name": "Rundi"
+ },
+ "ru": {
+ "code": "ru",
+ "name": "russo"
+ },
+ "rwk": {
+ "code": "rwk",
+ "name": "Rwa"
+ },
+ "saq": {
+ "code": "saq",
+ "name": "Samburu"
+ },
+ "sg": {
+ "code": "sg",
+ "name": "Sango"
+ },
+ "sbp": {
+ "code": "sbp",
+ "name": "Sangu"
+ },
+ "gd": {
+ "code": "gd",
+ "name": "Scottish Gaelic"
+ },
+ "seh": {
+ "code": "seh",
+ "name": "sena"
+ },
+ "sr": {
+ "code": "sr",
+ "name": "Serbian"
+ },
+ "ksb": {
+ "code": "ksb",
+ "name": "Shambala"
+ },
+ "sn": {
+ "code": "sn",
+ "name": "Shona"
+ },
+ "si": {
+ "code": "si",
+ "name": "Sinhala"
+ },
+ "sk": {
+ "code": "sk",
+ "name": "Slovak"
+ },
+ "sl": {
+ "code": "sl",
+ "name": "Slovenian"
+ },
+ "xog": {
+ "code": "xog",
+ "name": "Soga"
+ },
+ "so": {
+ "code": "so",
+ "name": "somali"
+ },
+ "zgh": {
+ "code": "zgh",
+ "name": "Standard Moroccan Tamazight"
+ },
+ "sv": {
+ "code": "sv",
+ "name": "sueco"
+ },
+ "sw": {
+ "code": "sw",
+ "name": "Swahili"
+ },
+ "gsw": {
+ "code": "gsw",
+ "name": "Swiss German"
+ },
+ "shi": {
+ "code": "shi",
+ "name": "Tachelhit"
+ },
+ "th": {
+ "code": "th",
+ "name": "tailandês"
+ },
+ "dav": {
+ "code": "dav",
+ "name": "Taita"
+ },
+ "ta": {
+ "code": "ta",
+ "name": "tâmil"
+ },
+ "twq": {
+ "code": "twq",
+ "name": "Tasawaq"
+ },
+ "cs": {
+ "code": "cs",
+ "name": "tcheco"
+ },
+ "te": {
+ "code": "te",
+ "name": "Telugu"
+ },
+ "teo": {
+ "code": "teo",
+ "name": "Teso"
+ },
+ "bo": {
+ "code": "bo",
+ "name": "Tibetan"
+ },
+ "ti": {
+ "code": "ti",
+ "name": "Tigrinya"
+ },
+ "to": {
+ "code": "to",
+ "name": "Tongan"
+ },
+ "tr": {
+ "code": "tr",
+ "name": "turco"
+ },
+ "uk": {
+ "code": "uk",
+ "name": "ucraniano"
+ },
+ "hsb": {
+ "code": "hsb",
+ "name": "Upper Sorbian"
+ },
+ "ur": {
+ "code": "ur",
+ "name": "urdu"
+ },
+ "ug": {
+ "code": "ug",
+ "name": "Uyghur"
+ },
+ "uz": {
+ "code": "uz",
+ "name": "Uzbek"
+ },
+ "vai": {
+ "code": "vai",
+ "name": "Vai"
+ },
+ "vi": {
+ "code": "vi",
+ "name": "vietnamita"
+ },
+ "vun": {
+ "code": "vun",
+ "name": "Vunjo"
+ },
+ "wae": {
+ "code": "wae",
+ "name": "Walser"
+ },
+ "cy": {
+ "code": "cy",
+ "name": "Welsh"
+ },
+ "fy": {
+ "code": "fy",
+ "name": "Western Frisian"
+ },
+ "yav": {
+ "code": "yav",
+ "name": "Yangben"
+ },
+ "dje": {
+ "code": "dje",
+ "name": "Zarma"
+ },
+ "zh-Hans": {
+ "code": "zh-Hans",
+ "name": "zh_Hans"
+ },
+ "zh-Hant": {
+ "code": "zh-Hant",
+ "name": "zh_Hant"
+ },
+ "zu": {
+ "code": "zu",
+ "name": "zulu"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/language/ses.json b/library/intl/resources/language/ses.json
new file mode 100644
index 000000000..ba4758f12
--- /dev/null
+++ b/library/intl/resources/language/ses.json
@@ -0,0 +1,738 @@
+{
+ "af": {
+ "code": "af",
+ "name": "Afrikaans"
+ },
+ "agq": {
+ "code": "agq",
+ "name": "Aghem"
+ },
+ "ak": {
+ "code": "ak",
+ "name": "Akan senni"
+ },
+ "sq": {
+ "code": "sq",
+ "name": "Albanian"
+ },
+ "de": {
+ "code": "de",
+ "name": "Almaŋ senni"
+ },
+ "am": {
+ "code": "am",
+ "name": "Amhaarik senni"
+ },
+ "ar-001": {
+ "code": "ar-001",
+ "name": "ar_001"
+ },
+ "hy": {
+ "code": "hy",
+ "name": "Armenian"
+ },
+ "ast": {
+ "code": "ast",
+ "name": "Asturian"
+ },
+ "asa": {
+ "code": "asa",
+ "name": "Asu"
+ },
+ "az": {
+ "code": "az",
+ "name": "Azerbaijani"
+ },
+ "ksf": {
+ "code": "ksf",
+ "name": "Bafia"
+ },
+ "bm": {
+ "code": "bm",
+ "name": "Bambara"
+ },
+ "bas": {
+ "code": "bas",
+ "name": "Basaa"
+ },
+ "eu": {
+ "code": "eu",
+ "name": "Basque"
+ },
+ "be": {
+ "code": "be",
+ "name": "Belaruus senni"
+ },
+ "bez": {
+ "code": "bez",
+ "name": "Bena"
+ },
+ "bn": {
+ "code": "bn",
+ "name": "Bengali senni"
+ },
+ "brx": {
+ "code": "brx",
+ "name": "Bodo"
+ },
+ "bs": {
+ "code": "bs",
+ "name": "Bosnian"
+ },
+ "br": {
+ "code": "br",
+ "name": "Breton"
+ },
+ "bg": {
+ "code": "bg",
+ "name": "Bulagaari senni"
+ },
+ "my": {
+ "code": "my",
+ "name": "Burme senni"
+ },
+ "ca": {
+ "code": "ca",
+ "name": "Catalan"
+ },
+ "cs": {
+ "code": "cs",
+ "name": "Cek senni"
+ },
+ "tzm": {
+ "code": "tzm",
+ "name": "Central Atlas Tamazight"
+ },
+ "chr": {
+ "code": "chr",
+ "name": "Cherokee"
+ },
+ "cgg": {
+ "code": "cgg",
+ "name": "Chiga"
+ },
+ "ksh": {
+ "code": "ksh",
+ "name": "Colognian"
+ },
+ "swc": {
+ "code": "swc",
+ "name": "Congo Swahili"
+ },
+ "hr": {
+ "code": "hr",
+ "name": "Croatian"
+ },
+ "da": {
+ "code": "da",
+ "name": "Danish"
+ },
+ "de-AT": {
+ "code": "de-AT",
+ "name": "de_AT"
+ },
+ "de-CH": {
+ "code": "de-CH",
+ "name": "de_CH"
+ },
+ "dz": {
+ "code": "dz",
+ "name": "Dzongkha"
+ },
+ "ebu": {
+ "code": "ebu",
+ "name": "Embu"
+ },
+ "en-AU": {
+ "code": "en-AU",
+ "name": "en_AU"
+ },
+ "en-CA": {
+ "code": "en-CA",
+ "name": "en_CA"
+ },
+ "en-GB": {
+ "code": "en-GB",
+ "name": "en_GB"
+ },
+ "en-US": {
+ "code": "en-US",
+ "name": "en_US"
+ },
+ "es-ES": {
+ "code": "es-ES",
+ "name": "es_ES"
+ },
+ "es-MX": {
+ "code": "es-MX",
+ "name": "es_MX"
+ },
+ "es": {
+ "code": "es",
+ "name": "Espaaɲe senni"
+ },
+ "eo": {
+ "code": "eo",
+ "name": "Esperanto"
+ },
+ "et": {
+ "code": "et",
+ "name": "Estonian"
+ },
+ "ee": {
+ "code": "ee",
+ "name": "Ewe"
+ },
+ "ewo": {
+ "code": "ewo",
+ "name": "Ewondo"
+ },
+ "fo": {
+ "code": "fo",
+ "name": "Faroese"
+ },
+ "fa": {
+ "code": "fa",
+ "name": "Farsi senni"
+ },
+ "fil": {
+ "code": "fil",
+ "name": "Filipino"
+ },
+ "fi": {
+ "code": "fi",
+ "name": "Finnish"
+ },
+ "fr-CA": {
+ "code": "fr-CA",
+ "name": "fr_CA"
+ },
+ "fr-CH": {
+ "code": "fr-CH",
+ "name": "fr_CH"
+ },
+ "fr": {
+ "code": "fr",
+ "name": "Fransee senni"
+ },
+ "fur": {
+ "code": "fur",
+ "name": "Friulian"
+ },
+ "ff": {
+ "code": "ff",
+ "name": "Fulah"
+ },
+ "gl": {
+ "code": "gl",
+ "name": "Galician"
+ },
+ "lg": {
+ "code": "lg",
+ "name": "Ganda"
+ },
+ "ka": {
+ "code": "ka",
+ "name": "Georgian"
+ },
+ "el": {
+ "code": "el",
+ "name": "Grek senni"
+ },
+ "gu": {
+ "code": "gu",
+ "name": "Gujarati"
+ },
+ "guz": {
+ "code": "guz",
+ "name": "Gusii"
+ },
+ "ha": {
+ "code": "ha",
+ "name": "Hawsance senni"
+ },
+ "he": {
+ "code": "he",
+ "name": "Hebrew"
+ },
+ "nl": {
+ "code": "nl",
+ "name": "Holandee senni"
+ },
+ "hu": {
+ "code": "hu",
+ "name": "Hungaari senni"
+ },
+ "is": {
+ "code": "is",
+ "name": "Icelandic"
+ },
+ "id": {
+ "code": "id",
+ "name": "Indoneesi senni"
+ },
+ "hi": {
+ "code": "hi",
+ "name": "Induu senni"
+ },
+ "en": {
+ "code": "en",
+ "name": "Inglisi senni"
+ },
+ "ga": {
+ "code": "ga",
+ "name": "Irish"
+ },
+ "it": {
+ "code": "it",
+ "name": "Itaali senni"
+ },
+ "ja": {
+ "code": "ja",
+ "name": "Japonee senni"
+ },
+ "dyo": {
+ "code": "dyo",
+ "name": "Jola-Fonyi"
+ },
+ "kea": {
+ "code": "kea",
+ "name": "Kabuverdianu"
+ },
+ "kab": {
+ "code": "kab",
+ "name": "Kabyle"
+ },
+ "kl": {
+ "code": "kl",
+ "name": "Kalaallisut"
+ },
+ "kln": {
+ "code": "kln",
+ "name": "Kalenjin"
+ },
+ "kam": {
+ "code": "kam",
+ "name": "Kamba"
+ },
+ "kn": {
+ "code": "kn",
+ "name": "Kannada"
+ },
+ "ks": {
+ "code": "ks",
+ "name": "Kashmiri"
+ },
+ "kk": {
+ "code": "kk",
+ "name": "Kazakh"
+ },
+ "ki": {
+ "code": "ki",
+ "name": "Kikuyu"
+ },
+ "km": {
+ "code": "km",
+ "name": "Kmeer senni"
+ },
+ "ko": {
+ "code": "ko",
+ "name": "Koree senni"
+ },
+ "khq": {
+ "code": "khq",
+ "name": "Koyra Chiini"
+ },
+ "ses": {
+ "code": "ses",
+ "name": "Koyraboro senni"
+ },
+ "nmg": {
+ "code": "nmg",
+ "name": "Kwasio"
+ },
+ "ky": {
+ "code": "ky",
+ "name": "Kyrgyz"
+ },
+ "ar": {
+ "code": "ar",
+ "name": "Laaraw senni"
+ },
+ "lag": {
+ "code": "lag",
+ "name": "Langi"
+ },
+ "lo": {
+ "code": "lo",
+ "name": "Lao"
+ },
+ "lv": {
+ "code": "lv",
+ "name": "Latvian"
+ },
+ "ln": {
+ "code": "ln",
+ "name": "Lingala"
+ },
+ "lt": {
+ "code": "lt",
+ "name": "Lithuanian"
+ },
+ "dsb": {
+ "code": "dsb",
+ "name": "Lower Sorbian"
+ },
+ "lu": {
+ "code": "lu",
+ "name": "Luba-Katanga"
+ },
+ "luo": {
+ "code": "luo",
+ "name": "Luo"
+ },
+ "lb": {
+ "code": "lb",
+ "name": "Luxembourgish"
+ },
+ "luy": {
+ "code": "luy",
+ "name": "Luyia"
+ },
+ "mk": {
+ "code": "mk",
+ "name": "Macedonian"
+ },
+ "jmc": {
+ "code": "jmc",
+ "name": "Machame"
+ },
+ "mgh": {
+ "code": "mgh",
+ "name": "Makhuwa-Meetto"
+ },
+ "kde": {
+ "code": "kde",
+ "name": "Makonde"
+ },
+ "mg": {
+ "code": "mg",
+ "name": "Malagasy"
+ },
+ "ml": {
+ "code": "ml",
+ "name": "Malayalam"
+ },
+ "ms": {
+ "code": "ms",
+ "name": "Maleezi senni"
+ },
+ "mt": {
+ "code": "mt",
+ "name": "Maltese"
+ },
+ "mr": {
+ "code": "mr",
+ "name": "Marathi"
+ },
+ "mas": {
+ "code": "mas",
+ "name": "Masai"
+ },
+ "mer": {
+ "code": "mer",
+ "name": "Meru"
+ },
+ "mn": {
+ "code": "mn",
+ "name": "Mongolian"
+ },
+ "mfe": {
+ "code": "mfe",
+ "name": "Morisyen"
+ },
+ "mua": {
+ "code": "mua",
+ "name": "Mundang"
+ },
+ "naq": {
+ "code": "naq",
+ "name": "Nama"
+ },
+ "ne": {
+ "code": "ne",
+ "name": "Neepal senni"
+ },
+ "jgo": {
+ "code": "jgo",
+ "name": "Ngomba"
+ },
+ "nl-BE": {
+ "code": "nl-BE",
+ "name": "nl_BE"
+ },
+ "nd": {
+ "code": "nd",
+ "name": "North Ndebele"
+ },
+ "se": {
+ "code": "se",
+ "name": "Northern Sami"
+ },
+ "nb": {
+ "code": "nb",
+ "name": "Norwegian Bokmål"
+ },
+ "nn": {
+ "code": "nn",
+ "name": "Norwegian Nynorsk"
+ },
+ "nus": {
+ "code": "nus",
+ "name": "Nuer"
+ },
+ "nyn": {
+ "code": "nyn",
+ "name": "Nyankole"
+ },
+ "or": {
+ "code": "or",
+ "name": "Oriya"
+ },
+ "ps": {
+ "code": "ps",
+ "name": "Pashto"
+ },
+ "pl": {
+ "code": "pl",
+ "name": "Polonee senni"
+ },
+ "pt": {
+ "code": "pt",
+ "name": "Portugee senni"
+ },
+ "pt-BR": {
+ "code": "pt-BR",
+ "name": "pt_BR"
+ },
+ "pt-PT": {
+ "code": "pt-PT",
+ "name": "pt_PT"
+ },
+ "pa": {
+ "code": "pa",
+ "name": "Punjaabi sennii"
+ },
+ "ro-MD": {
+ "code": "ro-MD",
+ "name": "ro_MD"
+ },
+ "rm": {
+ "code": "rm",
+ "name": "Romansh"
+ },
+ "rof": {
+ "code": "rof",
+ "name": "Rombo"
+ },
+ "ro": {
+ "code": "ro",
+ "name": "Rumaani senni"
+ },
+ "rn": {
+ "code": "rn",
+ "name": "Rundi"
+ },
+ "ru": {
+ "code": "ru",
+ "name": "Ruusi senni"
+ },
+ "rwk": {
+ "code": "rwk",
+ "name": "Rwa"
+ },
+ "saq": {
+ "code": "saq",
+ "name": "Samburu"
+ },
+ "sg": {
+ "code": "sg",
+ "name": "Sango"
+ },
+ "sbp": {
+ "code": "sbp",
+ "name": "Sangu"
+ },
+ "gd": {
+ "code": "gd",
+ "name": "Scottish Gaelic"
+ },
+ "seh": {
+ "code": "seh",
+ "name": "Sena"
+ },
+ "sr": {
+ "code": "sr",
+ "name": "Serbian"
+ },
+ "ksb": {
+ "code": "ksb",
+ "name": "Shambala"
+ },
+ "sn": {
+ "code": "sn",
+ "name": "Shona"
+ },
+ "si": {
+ "code": "si",
+ "name": "Sinhala"
+ },
+ "zh": {
+ "code": "zh",
+ "name": "Sinuwa senni, Mandareŋ"
+ },
+ "sk": {
+ "code": "sk",
+ "name": "Slovak"
+ },
+ "sl": {
+ "code": "sl",
+ "name": "Slovenian"
+ },
+ "xog": {
+ "code": "xog",
+ "name": "Soga"
+ },
+ "so": {
+ "code": "so",
+ "name": "Somaali senni"
+ },
+ "zgh": {
+ "code": "zgh",
+ "name": "Standard Moroccan Tamazight"
+ },
+ "sv": {
+ "code": "sv",
+ "name": "Suweede senni"
+ },
+ "sw": {
+ "code": "sw",
+ "name": "Swahili"
+ },
+ "gsw": {
+ "code": "gsw",
+ "name": "Swiss German"
+ },
+ "th": {
+ "code": "th",
+ "name": "Taailandu senni"
+ },
+ "shi": {
+ "code": "shi",
+ "name": "Tachelhit"
+ },
+ "dav": {
+ "code": "dav",
+ "name": "Taita"
+ },
+ "ta": {
+ "code": "ta",
+ "name": "Tamil senni"
+ },
+ "twq": {
+ "code": "twq",
+ "name": "Tasawaq"
+ },
+ "te": {
+ "code": "te",
+ "name": "Telugu"
+ },
+ "teo": {
+ "code": "teo",
+ "name": "Teso"
+ },
+ "bo": {
+ "code": "bo",
+ "name": "Tibetan"
+ },
+ "ti": {
+ "code": "ti",
+ "name": "Tigrinya"
+ },
+ "to": {
+ "code": "to",
+ "name": "Tongan"
+ },
+ "tr": {
+ "code": "tr",
+ "name": "Turku senni"
+ },
+ "uk": {
+ "code": "uk",
+ "name": "Ukreen senni"
+ },
+ "hsb": {
+ "code": "hsb",
+ "name": "Upper Sorbian"
+ },
+ "ur": {
+ "code": "ur",
+ "name": "Urdu senni"
+ },
+ "ug": {
+ "code": "ug",
+ "name": "Uyghur"
+ },
+ "uz": {
+ "code": "uz",
+ "name": "Uzbek"
+ },
+ "vai": {
+ "code": "vai",
+ "name": "Vai"
+ },
+ "vi": {
+ "code": "vi",
+ "name": "Vietnaam senni"
+ },
+ "vun": {
+ "code": "vun",
+ "name": "Vunjo"
+ },
+ "wae": {
+ "code": "wae",
+ "name": "Walser"
+ },
+ "cy": {
+ "code": "cy",
+ "name": "Welsh"
+ },
+ "fy": {
+ "code": "fy",
+ "name": "Western Frisian"
+ },
+ "yav": {
+ "code": "yav",
+ "name": "Yangben"
+ },
+ "yo": {
+ "code": "yo",
+ "name": "Yorbance senni"
+ },
+ "dje": {
+ "code": "dje",
+ "name": "Zarma"
+ },
+ "zh-Hans": {
+ "code": "zh-Hans",
+ "name": "zh_Hans"
+ },
+ "zh-Hant": {
+ "code": "zh-Hant",
+ "name": "zh_Hant"
+ },
+ "zu": {
+ "code": "zu",
+ "name": "Zulu senni"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/language/sg.json b/library/intl/resources/language/sg.json
new file mode 100644
index 000000000..03350d6f4
--- /dev/null
+++ b/library/intl/resources/language/sg.json
@@ -0,0 +1,738 @@
+{
+ "af": {
+ "code": "af",
+ "name": "Afrikaans"
+ },
+ "agq": {
+ "code": "agq",
+ "name": "Aghem"
+ },
+ "ak": {
+ "code": "ak",
+ "name": "Akâan"
+ },
+ "sq": {
+ "code": "sq",
+ "name": "Albanian"
+ },
+ "am": {
+ "code": "am",
+ "name": "Amarîki"
+ },
+ "en": {
+ "code": "en",
+ "name": "Anglëe"
+ },
+ "ar-001": {
+ "code": "ar-001",
+ "name": "ar_001"
+ },
+ "ar": {
+ "code": "ar",
+ "name": "Arâbo"
+ },
+ "hy": {
+ "code": "hy",
+ "name": "Armenian"
+ },
+ "ast": {
+ "code": "ast",
+ "name": "Asturian"
+ },
+ "asa": {
+ "code": "asa",
+ "name": "Asu"
+ },
+ "az": {
+ "code": "az",
+ "name": "Azerbaijani"
+ },
+ "ksf": {
+ "code": "ksf",
+ "name": "Bafia"
+ },
+ "bm": {
+ "code": "bm",
+ "name": "Bambara"
+ },
+ "bas": {
+ "code": "bas",
+ "name": "Basaa"
+ },
+ "eu": {
+ "code": "eu",
+ "name": "Basque"
+ },
+ "bez": {
+ "code": "bez",
+ "name": "Bena"
+ },
+ "bn": {
+ "code": "bn",
+ "name": "Bengäli"
+ },
+ "be": {
+ "code": "be",
+ "name": "Bielörûsi"
+ },
+ "brx": {
+ "code": "brx",
+ "name": "Bodo"
+ },
+ "bs": {
+ "code": "bs",
+ "name": "Bosnian"
+ },
+ "br": {
+ "code": "br",
+ "name": "Breton"
+ },
+ "bg": {
+ "code": "bg",
+ "name": "Bulugäri"
+ },
+ "ca": {
+ "code": "ca",
+ "name": "Catalan"
+ },
+ "tzm": {
+ "code": "tzm",
+ "name": "Central Atlas Tamazight"
+ },
+ "chr": {
+ "code": "chr",
+ "name": "Cherokee"
+ },
+ "cgg": {
+ "code": "cgg",
+ "name": "Chiga"
+ },
+ "ksh": {
+ "code": "ksh",
+ "name": "Colognian"
+ },
+ "swc": {
+ "code": "swc",
+ "name": "Congo Swahili"
+ },
+ "hr": {
+ "code": "hr",
+ "name": "Croatian"
+ },
+ "da": {
+ "code": "da",
+ "name": "Danish"
+ },
+ "de-AT": {
+ "code": "de-AT",
+ "name": "de_AT"
+ },
+ "de-CH": {
+ "code": "de-CH",
+ "name": "de_CH"
+ },
+ "dz": {
+ "code": "dz",
+ "name": "Dzongkha"
+ },
+ "ebu": {
+ "code": "ebu",
+ "name": "Embu"
+ },
+ "en-AU": {
+ "code": "en-AU",
+ "name": "en_AU"
+ },
+ "en-CA": {
+ "code": "en-CA",
+ "name": "en_CA"
+ },
+ "en-GB": {
+ "code": "en-GB",
+ "name": "en_GB"
+ },
+ "en-US": {
+ "code": "en-US",
+ "name": "en_US"
+ },
+ "it": {
+ "code": "it",
+ "name": "Ênnde"
+ },
+ "id": {
+ "code": "id",
+ "name": "Enndonezïi"
+ },
+ "es-ES": {
+ "code": "es-ES",
+ "name": "es_ES"
+ },
+ "es-MX": {
+ "code": "es-MX",
+ "name": "es_MX"
+ },
+ "es": {
+ "code": "es",
+ "name": "Espanyöl"
+ },
+ "eo": {
+ "code": "eo",
+ "name": "Esperanto"
+ },
+ "et": {
+ "code": "et",
+ "name": "Estonian"
+ },
+ "ee": {
+ "code": "ee",
+ "name": "Ewe"
+ },
+ "ewo": {
+ "code": "ewo",
+ "name": "Ewondo"
+ },
+ "fr": {
+ "code": "fr",
+ "name": "Farânzi"
+ },
+ "fo": {
+ "code": "fo",
+ "name": "Faroese"
+ },
+ "fa": {
+ "code": "fa",
+ "name": "Farsî"
+ },
+ "fil": {
+ "code": "fil",
+ "name": "Filipino"
+ },
+ "fi": {
+ "code": "fi",
+ "name": "Finnish"
+ },
+ "fr-CA": {
+ "code": "fr-CA",
+ "name": "fr_CA"
+ },
+ "fr-CH": {
+ "code": "fr-CH",
+ "name": "fr_CH"
+ },
+ "fur": {
+ "code": "fur",
+ "name": "Friulian"
+ },
+ "ff": {
+ "code": "ff",
+ "name": "Fulah"
+ },
+ "gl": {
+ "code": "gl",
+ "name": "Galician"
+ },
+ "lg": {
+ "code": "lg",
+ "name": "Ganda"
+ },
+ "ka": {
+ "code": "ka",
+ "name": "Georgian"
+ },
+ "el": {
+ "code": "el",
+ "name": "Gerêki"
+ },
+ "gu": {
+ "code": "gu",
+ "name": "Gujarati"
+ },
+ "guz": {
+ "code": "guz",
+ "name": "Gusii"
+ },
+ "ha": {
+ "code": "ha",
+ "name": "Haüsä"
+ },
+ "he": {
+ "code": "he",
+ "name": "Hebrew"
+ },
+ "hi": {
+ "code": "hi",
+ "name": "Hîndi"
+ },
+ "nl": {
+ "code": "nl",
+ "name": "Holandëe"
+ },
+ "hu": {
+ "code": "hu",
+ "name": "Hongruäa"
+ },
+ "is": {
+ "code": "is",
+ "name": "Icelandic"
+ },
+ "ga": {
+ "code": "ga",
+ "name": "Irish"
+ },
+ "dyo": {
+ "code": "dyo",
+ "name": "Jola-Fonyi"
+ },
+ "kea": {
+ "code": "kea",
+ "name": "Kabuverdianu"
+ },
+ "kab": {
+ "code": "kab",
+ "name": "Kabyle"
+ },
+ "kl": {
+ "code": "kl",
+ "name": "Kalaallisut"
+ },
+ "kln": {
+ "code": "kln",
+ "name": "Kalenjin"
+ },
+ "kam": {
+ "code": "kam",
+ "name": "Kamba"
+ },
+ "kn": {
+ "code": "kn",
+ "name": "Kannada"
+ },
+ "ks": {
+ "code": "ks",
+ "name": "Kashmiri"
+ },
+ "kk": {
+ "code": "kk",
+ "name": "Kazakh"
+ },
+ "ki": {
+ "code": "ki",
+ "name": "Kikuyu"
+ },
+ "km": {
+ "code": "km",
+ "name": "Kmêre"
+ },
+ "ko": {
+ "code": "ko",
+ "name": "Koreyëen"
+ },
+ "khq": {
+ "code": "khq",
+ "name": "Koyra Chiini"
+ },
+ "ses": {
+ "code": "ses",
+ "name": "Koyraboro Senni"
+ },
+ "nmg": {
+ "code": "nmg",
+ "name": "Kwasio"
+ },
+ "ky": {
+ "code": "ky",
+ "name": "Kyrgyz"
+ },
+ "lag": {
+ "code": "lag",
+ "name": "Langi"
+ },
+ "lo": {
+ "code": "lo",
+ "name": "Lao"
+ },
+ "lv": {
+ "code": "lv",
+ "name": "Latvian"
+ },
+ "ln": {
+ "code": "ln",
+ "name": "Lingala"
+ },
+ "lt": {
+ "code": "lt",
+ "name": "Lithuanian"
+ },
+ "dsb": {
+ "code": "dsb",
+ "name": "Lower Sorbian"
+ },
+ "lu": {
+ "code": "lu",
+ "name": "Luba-Katanga"
+ },
+ "luo": {
+ "code": "luo",
+ "name": "Luo"
+ },
+ "lb": {
+ "code": "lb",
+ "name": "Luxembourgish"
+ },
+ "luy": {
+ "code": "luy",
+ "name": "Luyia"
+ },
+ "mk": {
+ "code": "mk",
+ "name": "Macedonian"
+ },
+ "jmc": {
+ "code": "jmc",
+ "name": "Machame"
+ },
+ "mgh": {
+ "code": "mgh",
+ "name": "Makhuwa-Meetto"
+ },
+ "kde": {
+ "code": "kde",
+ "name": "Makonde"
+ },
+ "mg": {
+ "code": "mg",
+ "name": "Malagasy"
+ },
+ "ml": {
+ "code": "ml",
+ "name": "Malayalam"
+ },
+ "ms": {
+ "code": "ms",
+ "name": "Malëe"
+ },
+ "mt": {
+ "code": "mt",
+ "name": "Maltese"
+ },
+ "mr": {
+ "code": "mr",
+ "name": "Marathi"
+ },
+ "mas": {
+ "code": "mas",
+ "name": "Masai"
+ },
+ "mer": {
+ "code": "mer",
+ "name": "Meru"
+ },
+ "my": {
+ "code": "my",
+ "name": "Miamära, Birimäni"
+ },
+ "mn": {
+ "code": "mn",
+ "name": "Mongolian"
+ },
+ "mfe": {
+ "code": "mfe",
+ "name": "Morisyen"
+ },
+ "mua": {
+ "code": "mua",
+ "name": "Mundang"
+ },
+ "naq": {
+ "code": "naq",
+ "name": "Nama"
+ },
+ "ne": {
+ "code": "ne",
+ "name": "Nepalëe"
+ },
+ "jgo": {
+ "code": "jgo",
+ "name": "Ngomba"
+ },
+ "nl-BE": {
+ "code": "nl-BE",
+ "name": "nl_BE"
+ },
+ "nd": {
+ "code": "nd",
+ "name": "North Ndebele"
+ },
+ "se": {
+ "code": "se",
+ "name": "Northern Sami"
+ },
+ "nb": {
+ "code": "nb",
+ "name": "Norwegian Bokmål"
+ },
+ "nn": {
+ "code": "nn",
+ "name": "Norwegian Nynorsk"
+ },
+ "nus": {
+ "code": "nus",
+ "name": "Nuer"
+ },
+ "nyn": {
+ "code": "nyn",
+ "name": "Nyankole"
+ },
+ "or": {
+ "code": "or",
+ "name": "Oriya"
+ },
+ "ps": {
+ "code": "ps",
+ "name": "Pashto"
+ },
+ "pa": {
+ "code": "pa",
+ "name": "Penzäbï"
+ },
+ "pl": {
+ "code": "pl",
+ "name": "Polonëe"
+ },
+ "pt": {
+ "code": "pt",
+ "name": "Portugëe, Pûra"
+ },
+ "pt-BR": {
+ "code": "pt-BR",
+ "name": "pt_BR"
+ },
+ "pt-PT": {
+ "code": "pt-PT",
+ "name": "pt_PT"
+ },
+ "ro-MD": {
+ "code": "ro-MD",
+ "name": "ro_MD"
+ },
+ "rm": {
+ "code": "rm",
+ "name": "Romansh"
+ },
+ "rof": {
+ "code": "rof",
+ "name": "Rombo"
+ },
+ "ro": {
+ "code": "ro",
+ "name": "Rumëen"
+ },
+ "rn": {
+ "code": "rn",
+ "name": "Rundi"
+ },
+ "ru": {
+ "code": "ru",
+ "name": "Rûsi"
+ },
+ "rwk": {
+ "code": "rwk",
+ "name": "Rwa"
+ },
+ "saq": {
+ "code": "saq",
+ "name": "Samburu"
+ },
+ "sg": {
+ "code": "sg",
+ "name": "Sängö"
+ },
+ "sbp": {
+ "code": "sbp",
+ "name": "Sangu"
+ },
+ "gd": {
+ "code": "gd",
+ "name": "Scottish Gaelic"
+ },
+ "seh": {
+ "code": "seh",
+ "name": "Sena"
+ },
+ "sr": {
+ "code": "sr",
+ "name": "Serbian"
+ },
+ "ksb": {
+ "code": "ksb",
+ "name": "Shambala"
+ },
+ "zh": {
+ "code": "zh",
+ "name": "Shinuäa"
+ },
+ "sn": {
+ "code": "sn",
+ "name": "Shona"
+ },
+ "si": {
+ "code": "si",
+ "name": "Sinhala"
+ },
+ "sk": {
+ "code": "sk",
+ "name": "Slovak"
+ },
+ "sl": {
+ "code": "sl",
+ "name": "Slovenian"
+ },
+ "xog": {
+ "code": "xog",
+ "name": "Soga"
+ },
+ "so": {
+ "code": "so",
+ "name": "Somalïi"
+ },
+ "zgh": {
+ "code": "zgh",
+ "name": "Standard Moroccan Tamazight"
+ },
+ "sv": {
+ "code": "sv",
+ "name": "Sueduäa"
+ },
+ "sw": {
+ "code": "sw",
+ "name": "Swahili"
+ },
+ "gsw": {
+ "code": "gsw",
+ "name": "Swiss German"
+ },
+ "shi": {
+ "code": "shi",
+ "name": "Tachelhit"
+ },
+ "dav": {
+ "code": "dav",
+ "name": "Taita"
+ },
+ "ta": {
+ "code": "ta",
+ "name": "Tämûli"
+ },
+ "twq": {
+ "code": "twq",
+ "name": "Tasawaq"
+ },
+ "te": {
+ "code": "te",
+ "name": "Telugu"
+ },
+ "teo": {
+ "code": "teo",
+ "name": "Teso"
+ },
+ "th": {
+ "code": "th",
+ "name": "Thâi"
+ },
+ "bo": {
+ "code": "bo",
+ "name": "Tibetan"
+ },
+ "ti": {
+ "code": "ti",
+ "name": "Tigrinya"
+ },
+ "to": {
+ "code": "to",
+ "name": "Tongan"
+ },
+ "tr": {
+ "code": "tr",
+ "name": "Tûrûku"
+ },
+ "cs": {
+ "code": "cs",
+ "name": "Tyêki"
+ },
+ "uk": {
+ "code": "uk",
+ "name": "Ukrêni"
+ },
+ "hsb": {
+ "code": "hsb",
+ "name": "Upper Sorbian"
+ },
+ "ur": {
+ "code": "ur",
+ "name": "Ûrdu"
+ },
+ "ug": {
+ "code": "ug",
+ "name": "Uyghur"
+ },
+ "uz": {
+ "code": "uz",
+ "name": "Uzbek"
+ },
+ "vai": {
+ "code": "vai",
+ "name": "Vai"
+ },
+ "vi": {
+ "code": "vi",
+ "name": "Vietnäm"
+ },
+ "vun": {
+ "code": "vun",
+ "name": "Vunjo"
+ },
+ "wae": {
+ "code": "wae",
+ "name": "Walser"
+ },
+ "cy": {
+ "code": "cy",
+ "name": "Welsh"
+ },
+ "fy": {
+ "code": "fy",
+ "name": "Western Frisian"
+ },
+ "yav": {
+ "code": "yav",
+ "name": "Yangben"
+ },
+ "yo": {
+ "code": "yo",
+ "name": "Yoruba"
+ },
+ "de": {
+ "code": "de",
+ "name": "Zâmani"
+ },
+ "ja": {
+ "code": "ja",
+ "name": "Zaponëe"
+ },
+ "dje": {
+ "code": "dje",
+ "name": "Zarma"
+ },
+ "zh-Hans": {
+ "code": "zh-Hans",
+ "name": "zh_Hans"
+ },
+ "zh-Hant": {
+ "code": "zh-Hant",
+ "name": "zh_Hant"
+ },
+ "zu": {
+ "code": "zu",
+ "name": "Zûlu"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/language/shi-Latn.json b/library/intl/resources/language/shi-Latn.json
new file mode 100644
index 000000000..c2f2295af
--- /dev/null
+++ b/library/intl/resources/language/shi-Latn.json
@@ -0,0 +1,738 @@
+{
+ "af": {
+ "code": "af",
+ "name": "Afrikaans"
+ },
+ "agq": {
+ "code": "agq",
+ "name": "Aghem"
+ },
+ "sq": {
+ "code": "sq",
+ "name": "Albanian"
+ },
+ "ar-001": {
+ "code": "ar-001",
+ "name": "ar_001"
+ },
+ "hy": {
+ "code": "hy",
+ "name": "Armenian"
+ },
+ "ast": {
+ "code": "ast",
+ "name": "Asturian"
+ },
+ "asa": {
+ "code": "asa",
+ "name": "Asu"
+ },
+ "az": {
+ "code": "az",
+ "name": "Azerbaijani"
+ },
+ "ksf": {
+ "code": "ksf",
+ "name": "Bafia"
+ },
+ "bm": {
+ "code": "bm",
+ "name": "Bambara"
+ },
+ "bas": {
+ "code": "bas",
+ "name": "Basaa"
+ },
+ "eu": {
+ "code": "eu",
+ "name": "Basque"
+ },
+ "bez": {
+ "code": "bez",
+ "name": "Bena"
+ },
+ "brx": {
+ "code": "brx",
+ "name": "Bodo"
+ },
+ "bs": {
+ "code": "bs",
+ "name": "Bosnian"
+ },
+ "br": {
+ "code": "br",
+ "name": "Breton"
+ },
+ "ca": {
+ "code": "ca",
+ "name": "Catalan"
+ },
+ "tzm": {
+ "code": "tzm",
+ "name": "Central Atlas Tamazight"
+ },
+ "chr": {
+ "code": "chr",
+ "name": "Cherokee"
+ },
+ "cgg": {
+ "code": "cgg",
+ "name": "Chiga"
+ },
+ "ksh": {
+ "code": "ksh",
+ "name": "Colognian"
+ },
+ "swc": {
+ "code": "swc",
+ "name": "Congo Swahili"
+ },
+ "hr": {
+ "code": "hr",
+ "name": "Croatian"
+ },
+ "da": {
+ "code": "da",
+ "name": "Danish"
+ },
+ "de-AT": {
+ "code": "de-AT",
+ "name": "de_AT"
+ },
+ "de-CH": {
+ "code": "de-CH",
+ "name": "de_CH"
+ },
+ "dz": {
+ "code": "dz",
+ "name": "Dzongkha"
+ },
+ "ebu": {
+ "code": "ebu",
+ "name": "Embu"
+ },
+ "en-AU": {
+ "code": "en-AU",
+ "name": "en_AU"
+ },
+ "en-CA": {
+ "code": "en-CA",
+ "name": "en_CA"
+ },
+ "en-GB": {
+ "code": "en-GB",
+ "name": "en_GB"
+ },
+ "en-US": {
+ "code": "en-US",
+ "name": "en_US"
+ },
+ "es-ES": {
+ "code": "es-ES",
+ "name": "es_ES"
+ },
+ "es-MX": {
+ "code": "es-MX",
+ "name": "es_MX"
+ },
+ "eo": {
+ "code": "eo",
+ "name": "Esperanto"
+ },
+ "et": {
+ "code": "et",
+ "name": "Estonian"
+ },
+ "ee": {
+ "code": "ee",
+ "name": "Ewe"
+ },
+ "ewo": {
+ "code": "ewo",
+ "name": "Ewondo"
+ },
+ "fo": {
+ "code": "fo",
+ "name": "Faroese"
+ },
+ "fil": {
+ "code": "fil",
+ "name": "Filipino"
+ },
+ "fi": {
+ "code": "fi",
+ "name": "Finnish"
+ },
+ "fr-CA": {
+ "code": "fr-CA",
+ "name": "fr_CA"
+ },
+ "fr-CH": {
+ "code": "fr-CH",
+ "name": "fr_CH"
+ },
+ "fur": {
+ "code": "fur",
+ "name": "Friulian"
+ },
+ "ff": {
+ "code": "ff",
+ "name": "Fulah"
+ },
+ "gl": {
+ "code": "gl",
+ "name": "Galician"
+ },
+ "lg": {
+ "code": "lg",
+ "name": "Ganda"
+ },
+ "ka": {
+ "code": "ka",
+ "name": "Georgian"
+ },
+ "gu": {
+ "code": "gu",
+ "name": "Gujarati"
+ },
+ "guz": {
+ "code": "guz",
+ "name": "Gusii"
+ },
+ "he": {
+ "code": "he",
+ "name": "Hebrew"
+ },
+ "is": {
+ "code": "is",
+ "name": "Icelandic"
+ },
+ "ga": {
+ "code": "ga",
+ "name": "Irish"
+ },
+ "dyo": {
+ "code": "dyo",
+ "name": "Jola-Fonyi"
+ },
+ "kea": {
+ "code": "kea",
+ "name": "Kabuverdianu"
+ },
+ "kab": {
+ "code": "kab",
+ "name": "Kabyle"
+ },
+ "kl": {
+ "code": "kl",
+ "name": "Kalaallisut"
+ },
+ "kln": {
+ "code": "kln",
+ "name": "Kalenjin"
+ },
+ "kam": {
+ "code": "kam",
+ "name": "Kamba"
+ },
+ "kn": {
+ "code": "kn",
+ "name": "Kannada"
+ },
+ "ks": {
+ "code": "ks",
+ "name": "Kashmiri"
+ },
+ "kk": {
+ "code": "kk",
+ "name": "Kazakh"
+ },
+ "ki": {
+ "code": "ki",
+ "name": "Kikuyu"
+ },
+ "khq": {
+ "code": "khq",
+ "name": "Koyra Chiini"
+ },
+ "ses": {
+ "code": "ses",
+ "name": "Koyraboro Senni"
+ },
+ "nmg": {
+ "code": "nmg",
+ "name": "Kwasio"
+ },
+ "ky": {
+ "code": "ky",
+ "name": "Kyrgyz"
+ },
+ "lag": {
+ "code": "lag",
+ "name": "Langi"
+ },
+ "lo": {
+ "code": "lo",
+ "name": "Lao"
+ },
+ "lv": {
+ "code": "lv",
+ "name": "Latvian"
+ },
+ "ln": {
+ "code": "ln",
+ "name": "Lingala"
+ },
+ "lt": {
+ "code": "lt",
+ "name": "Lithuanian"
+ },
+ "dsb": {
+ "code": "dsb",
+ "name": "Lower Sorbian"
+ },
+ "lu": {
+ "code": "lu",
+ "name": "Luba-Katanga"
+ },
+ "luo": {
+ "code": "luo",
+ "name": "Luo"
+ },
+ "lb": {
+ "code": "lb",
+ "name": "Luxembourgish"
+ },
+ "luy": {
+ "code": "luy",
+ "name": "Luyia"
+ },
+ "mk": {
+ "code": "mk",
+ "name": "Macedonian"
+ },
+ "jmc": {
+ "code": "jmc",
+ "name": "Machame"
+ },
+ "mgh": {
+ "code": "mgh",
+ "name": "Makhuwa-Meetto"
+ },
+ "kde": {
+ "code": "kde",
+ "name": "Makonde"
+ },
+ "mg": {
+ "code": "mg",
+ "name": "Malagasy"
+ },
+ "ml": {
+ "code": "ml",
+ "name": "Malayalam"
+ },
+ "mt": {
+ "code": "mt",
+ "name": "Maltese"
+ },
+ "mr": {
+ "code": "mr",
+ "name": "Marathi"
+ },
+ "mas": {
+ "code": "mas",
+ "name": "Masai"
+ },
+ "mer": {
+ "code": "mer",
+ "name": "Meru"
+ },
+ "mn": {
+ "code": "mn",
+ "name": "Mongolian"
+ },
+ "mfe": {
+ "code": "mfe",
+ "name": "Morisyen"
+ },
+ "mua": {
+ "code": "mua",
+ "name": "Mundang"
+ },
+ "naq": {
+ "code": "naq",
+ "name": "Nama"
+ },
+ "jgo": {
+ "code": "jgo",
+ "name": "Ngomba"
+ },
+ "nl-BE": {
+ "code": "nl-BE",
+ "name": "nl_BE"
+ },
+ "nd": {
+ "code": "nd",
+ "name": "North Ndebele"
+ },
+ "se": {
+ "code": "se",
+ "name": "Northern Sami"
+ },
+ "nb": {
+ "code": "nb",
+ "name": "Norwegian Bokmål"
+ },
+ "nn": {
+ "code": "nn",
+ "name": "Norwegian Nynorsk"
+ },
+ "nus": {
+ "code": "nus",
+ "name": "Nuer"
+ },
+ "nyn": {
+ "code": "nyn",
+ "name": "Nyankole"
+ },
+ "or": {
+ "code": "or",
+ "name": "Oriya"
+ },
+ "ps": {
+ "code": "ps",
+ "name": "Pashto"
+ },
+ "pt-BR": {
+ "code": "pt-BR",
+ "name": "pt_BR"
+ },
+ "pt-PT": {
+ "code": "pt-PT",
+ "name": "pt_PT"
+ },
+ "ro-MD": {
+ "code": "ro-MD",
+ "name": "ro_MD"
+ },
+ "rm": {
+ "code": "rm",
+ "name": "Romansh"
+ },
+ "rof": {
+ "code": "rof",
+ "name": "Rombo"
+ },
+ "rn": {
+ "code": "rn",
+ "name": "Rundi"
+ },
+ "rwk": {
+ "code": "rwk",
+ "name": "Rwa"
+ },
+ "saq": {
+ "code": "saq",
+ "name": "Samburu"
+ },
+ "sg": {
+ "code": "sg",
+ "name": "Sango"
+ },
+ "sbp": {
+ "code": "sbp",
+ "name": "Sangu"
+ },
+ "gd": {
+ "code": "gd",
+ "name": "Scottish Gaelic"
+ },
+ "seh": {
+ "code": "seh",
+ "name": "Sena"
+ },
+ "sr": {
+ "code": "sr",
+ "name": "Serbian"
+ },
+ "ksb": {
+ "code": "ksb",
+ "name": "Shambala"
+ },
+ "sn": {
+ "code": "sn",
+ "name": "Shona"
+ },
+ "si": {
+ "code": "si",
+ "name": "Sinhala"
+ },
+ "sk": {
+ "code": "sk",
+ "name": "Slovak"
+ },
+ "sl": {
+ "code": "sl",
+ "name": "Slovenian"
+ },
+ "xog": {
+ "code": "xog",
+ "name": "Soga"
+ },
+ "zgh": {
+ "code": "zgh",
+ "name": "Standard Moroccan Tamazight"
+ },
+ "sw": {
+ "code": "sw",
+ "name": "Swahili"
+ },
+ "gsw": {
+ "code": "gsw",
+ "name": "Swiss German"
+ },
+ "be": {
+ "code": "be",
+ "name": "tabilarust"
+ },
+ "my": {
+ "code": "my",
+ "name": "tabirmanit"
+ },
+ "bg": {
+ "code": "bg",
+ "name": "tablɣarit"
+ },
+ "bn": {
+ "code": "bn",
+ "name": "tabnɣalit"
+ },
+ "pa": {
+ "code": "pa",
+ "name": "tabnjabit"
+ },
+ "pt": {
+ "code": "pt",
+ "name": "tabṛṭqizt"
+ },
+ "pl": {
+ "code": "pl",
+ "name": "tabulunit"
+ },
+ "zh": {
+ "code": "zh",
+ "name": "tacinwit"
+ },
+ "ar": {
+ "code": "ar",
+ "name": "taɛrabt"
+ },
+ "vi": {
+ "code": "vi",
+ "name": "tafitnamit"
+ },
+ "fr": {
+ "code": "fr",
+ "name": "tafransist"
+ },
+ "fa": {
+ "code": "fa",
+ "name": "tafursit"
+ },
+ "el": {
+ "code": "el",
+ "name": "tagrigit"
+ },
+ "ha": {
+ "code": "ha",
+ "name": "tahawsat"
+ },
+ "hi": {
+ "code": "hi",
+ "name": "tahindit"
+ },
+ "hu": {
+ "code": "hu",
+ "name": "tahnɣarit"
+ },
+ "nl": {
+ "code": "nl",
+ "name": "tahulandit"
+ },
+ "dav": {
+ "code": "dav",
+ "name": "Taita"
+ },
+ "ja": {
+ "code": "ja",
+ "name": "tajabbunit"
+ },
+ "ak": {
+ "code": "ak",
+ "name": "takant"
+ },
+ "ko": {
+ "code": "ko",
+ "name": "takurit"
+ },
+ "de": {
+ "code": "de",
+ "name": "talimant"
+ },
+ "ms": {
+ "code": "ms",
+ "name": "tamalawit"
+ },
+ "shi": {
+ "code": "shi",
+ "name": "tamazight"
+ },
+ "am": {
+ "code": "am",
+ "name": "tamharit"
+ },
+ "id": {
+ "code": "id",
+ "name": "tandunisit"
+ },
+ "en": {
+ "code": "en",
+ "name": "tanglizt"
+ },
+ "ne": {
+ "code": "ne",
+ "name": "tanibalit"
+ },
+ "ro": {
+ "code": "ro",
+ "name": "tarumanit"
+ },
+ "ru": {
+ "code": "ru",
+ "name": "tarusit"
+ },
+ "twq": {
+ "code": "twq",
+ "name": "Tasawaq"
+ },
+ "es": {
+ "code": "es",
+ "name": "tasbnyulit"
+ },
+ "so": {
+ "code": "so",
+ "name": "tasumalit"
+ },
+ "sv": {
+ "code": "sv",
+ "name": "taswidit"
+ },
+ "it": {
+ "code": "it",
+ "name": "taá¹­alyant"
+ },
+ "ta": {
+ "code": "ta",
+ "name": "tatamilt"
+ },
+ "th": {
+ "code": "th",
+ "name": "tataylandit"
+ },
+ "cs": {
+ "code": "cs",
+ "name": "tatcikit"
+ },
+ "tr": {
+ "code": "tr",
+ "name": "taturkit"
+ },
+ "km": {
+ "code": "km",
+ "name": "taxmirt"
+ },
+ "yo": {
+ "code": "yo",
+ "name": "tayrubat"
+ },
+ "zu": {
+ "code": "zu",
+ "name": "tazulut"
+ },
+ "te": {
+ "code": "te",
+ "name": "Telugu"
+ },
+ "teo": {
+ "code": "teo",
+ "name": "Teso"
+ },
+ "bo": {
+ "code": "bo",
+ "name": "Tibetan"
+ },
+ "ti": {
+ "code": "ti",
+ "name": "Tigrinya"
+ },
+ "to": {
+ "code": "to",
+ "name": "Tongan"
+ },
+ "uk": {
+ "code": "uk",
+ "name": "tukranit"
+ },
+ "ur": {
+ "code": "ur",
+ "name": "turdut"
+ },
+ "hsb": {
+ "code": "hsb",
+ "name": "Upper Sorbian"
+ },
+ "ug": {
+ "code": "ug",
+ "name": "Uyghur"
+ },
+ "uz": {
+ "code": "uz",
+ "name": "Uzbek"
+ },
+ "vai": {
+ "code": "vai",
+ "name": "Vai"
+ },
+ "vun": {
+ "code": "vun",
+ "name": "Vunjo"
+ },
+ "wae": {
+ "code": "wae",
+ "name": "Walser"
+ },
+ "cy": {
+ "code": "cy",
+ "name": "Welsh"
+ },
+ "fy": {
+ "code": "fy",
+ "name": "Western Frisian"
+ },
+ "yav": {
+ "code": "yav",
+ "name": "Yangben"
+ },
+ "dje": {
+ "code": "dje",
+ "name": "Zarma"
+ },
+ "zh-Hans": {
+ "code": "zh-Hans",
+ "name": "zh_Hans"
+ },
+ "zh-Hant": {
+ "code": "zh-Hant",
+ "name": "zh_Hant"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/language/shi.json b/library/intl/resources/language/shi.json
new file mode 100644
index 000000000..a20ffce0c
--- /dev/null
+++ b/library/intl/resources/language/shi.json
@@ -0,0 +1,738 @@
+{
+ "af": {
+ "code": "af",
+ "name": "Afrikaans"
+ },
+ "agq": {
+ "code": "agq",
+ "name": "Aghem"
+ },
+ "sq": {
+ "code": "sq",
+ "name": "Albanian"
+ },
+ "ar-001": {
+ "code": "ar-001",
+ "name": "ar_001"
+ },
+ "hy": {
+ "code": "hy",
+ "name": "Armenian"
+ },
+ "ast": {
+ "code": "ast",
+ "name": "Asturian"
+ },
+ "asa": {
+ "code": "asa",
+ "name": "Asu"
+ },
+ "az": {
+ "code": "az",
+ "name": "Azerbaijani"
+ },
+ "ksf": {
+ "code": "ksf",
+ "name": "Bafia"
+ },
+ "bm": {
+ "code": "bm",
+ "name": "Bambara"
+ },
+ "bas": {
+ "code": "bas",
+ "name": "Basaa"
+ },
+ "eu": {
+ "code": "eu",
+ "name": "Basque"
+ },
+ "bez": {
+ "code": "bez",
+ "name": "Bena"
+ },
+ "brx": {
+ "code": "brx",
+ "name": "Bodo"
+ },
+ "bs": {
+ "code": "bs",
+ "name": "Bosnian"
+ },
+ "br": {
+ "code": "br",
+ "name": "Breton"
+ },
+ "ca": {
+ "code": "ca",
+ "name": "Catalan"
+ },
+ "tzm": {
+ "code": "tzm",
+ "name": "Central Atlas Tamazight"
+ },
+ "chr": {
+ "code": "chr",
+ "name": "Cherokee"
+ },
+ "cgg": {
+ "code": "cgg",
+ "name": "Chiga"
+ },
+ "ksh": {
+ "code": "ksh",
+ "name": "Colognian"
+ },
+ "swc": {
+ "code": "swc",
+ "name": "Congo Swahili"
+ },
+ "hr": {
+ "code": "hr",
+ "name": "Croatian"
+ },
+ "da": {
+ "code": "da",
+ "name": "Danish"
+ },
+ "de-AT": {
+ "code": "de-AT",
+ "name": "de_AT"
+ },
+ "de-CH": {
+ "code": "de-CH",
+ "name": "de_CH"
+ },
+ "dz": {
+ "code": "dz",
+ "name": "Dzongkha"
+ },
+ "ebu": {
+ "code": "ebu",
+ "name": "Embu"
+ },
+ "en-AU": {
+ "code": "en-AU",
+ "name": "en_AU"
+ },
+ "en-CA": {
+ "code": "en-CA",
+ "name": "en_CA"
+ },
+ "en-GB": {
+ "code": "en-GB",
+ "name": "en_GB"
+ },
+ "en-US": {
+ "code": "en-US",
+ "name": "en_US"
+ },
+ "es-ES": {
+ "code": "es-ES",
+ "name": "es_ES"
+ },
+ "es-MX": {
+ "code": "es-MX",
+ "name": "es_MX"
+ },
+ "eo": {
+ "code": "eo",
+ "name": "Esperanto"
+ },
+ "et": {
+ "code": "et",
+ "name": "Estonian"
+ },
+ "ee": {
+ "code": "ee",
+ "name": "Ewe"
+ },
+ "ewo": {
+ "code": "ewo",
+ "name": "Ewondo"
+ },
+ "fo": {
+ "code": "fo",
+ "name": "Faroese"
+ },
+ "fil": {
+ "code": "fil",
+ "name": "Filipino"
+ },
+ "fi": {
+ "code": "fi",
+ "name": "Finnish"
+ },
+ "fr-CA": {
+ "code": "fr-CA",
+ "name": "fr_CA"
+ },
+ "fr-CH": {
+ "code": "fr-CH",
+ "name": "fr_CH"
+ },
+ "fur": {
+ "code": "fur",
+ "name": "Friulian"
+ },
+ "ff": {
+ "code": "ff",
+ "name": "Fulah"
+ },
+ "gl": {
+ "code": "gl",
+ "name": "Galician"
+ },
+ "lg": {
+ "code": "lg",
+ "name": "Ganda"
+ },
+ "ka": {
+ "code": "ka",
+ "name": "Georgian"
+ },
+ "gu": {
+ "code": "gu",
+ "name": "Gujarati"
+ },
+ "guz": {
+ "code": "guz",
+ "name": "Gusii"
+ },
+ "he": {
+ "code": "he",
+ "name": "Hebrew"
+ },
+ "is": {
+ "code": "is",
+ "name": "Icelandic"
+ },
+ "ga": {
+ "code": "ga",
+ "name": "Irish"
+ },
+ "dyo": {
+ "code": "dyo",
+ "name": "Jola-Fonyi"
+ },
+ "kea": {
+ "code": "kea",
+ "name": "Kabuverdianu"
+ },
+ "kab": {
+ "code": "kab",
+ "name": "Kabyle"
+ },
+ "kl": {
+ "code": "kl",
+ "name": "Kalaallisut"
+ },
+ "kln": {
+ "code": "kln",
+ "name": "Kalenjin"
+ },
+ "kam": {
+ "code": "kam",
+ "name": "Kamba"
+ },
+ "kn": {
+ "code": "kn",
+ "name": "Kannada"
+ },
+ "ks": {
+ "code": "ks",
+ "name": "Kashmiri"
+ },
+ "kk": {
+ "code": "kk",
+ "name": "Kazakh"
+ },
+ "ki": {
+ "code": "ki",
+ "name": "Kikuyu"
+ },
+ "khq": {
+ "code": "khq",
+ "name": "Koyra Chiini"
+ },
+ "ses": {
+ "code": "ses",
+ "name": "Koyraboro Senni"
+ },
+ "nmg": {
+ "code": "nmg",
+ "name": "Kwasio"
+ },
+ "ky": {
+ "code": "ky",
+ "name": "Kyrgyz"
+ },
+ "lag": {
+ "code": "lag",
+ "name": "Langi"
+ },
+ "lo": {
+ "code": "lo",
+ "name": "Lao"
+ },
+ "lv": {
+ "code": "lv",
+ "name": "Latvian"
+ },
+ "ln": {
+ "code": "ln",
+ "name": "Lingala"
+ },
+ "lt": {
+ "code": "lt",
+ "name": "Lithuanian"
+ },
+ "dsb": {
+ "code": "dsb",
+ "name": "Lower Sorbian"
+ },
+ "lu": {
+ "code": "lu",
+ "name": "Luba-Katanga"
+ },
+ "luo": {
+ "code": "luo",
+ "name": "Luo"
+ },
+ "lb": {
+ "code": "lb",
+ "name": "Luxembourgish"
+ },
+ "luy": {
+ "code": "luy",
+ "name": "Luyia"
+ },
+ "mk": {
+ "code": "mk",
+ "name": "Macedonian"
+ },
+ "jmc": {
+ "code": "jmc",
+ "name": "Machame"
+ },
+ "mgh": {
+ "code": "mgh",
+ "name": "Makhuwa-Meetto"
+ },
+ "kde": {
+ "code": "kde",
+ "name": "Makonde"
+ },
+ "mg": {
+ "code": "mg",
+ "name": "Malagasy"
+ },
+ "ml": {
+ "code": "ml",
+ "name": "Malayalam"
+ },
+ "mt": {
+ "code": "mt",
+ "name": "Maltese"
+ },
+ "mr": {
+ "code": "mr",
+ "name": "Marathi"
+ },
+ "mas": {
+ "code": "mas",
+ "name": "Masai"
+ },
+ "mer": {
+ "code": "mer",
+ "name": "Meru"
+ },
+ "mn": {
+ "code": "mn",
+ "name": "Mongolian"
+ },
+ "mfe": {
+ "code": "mfe",
+ "name": "Morisyen"
+ },
+ "mua": {
+ "code": "mua",
+ "name": "Mundang"
+ },
+ "naq": {
+ "code": "naq",
+ "name": "Nama"
+ },
+ "jgo": {
+ "code": "jgo",
+ "name": "Ngomba"
+ },
+ "nl-BE": {
+ "code": "nl-BE",
+ "name": "nl_BE"
+ },
+ "nd": {
+ "code": "nd",
+ "name": "North Ndebele"
+ },
+ "se": {
+ "code": "se",
+ "name": "Northern Sami"
+ },
+ "nb": {
+ "code": "nb",
+ "name": "Norwegian Bokmål"
+ },
+ "nn": {
+ "code": "nn",
+ "name": "Norwegian Nynorsk"
+ },
+ "nus": {
+ "code": "nus",
+ "name": "Nuer"
+ },
+ "nyn": {
+ "code": "nyn",
+ "name": "Nyankole"
+ },
+ "or": {
+ "code": "or",
+ "name": "Oriya"
+ },
+ "ps": {
+ "code": "ps",
+ "name": "Pashto"
+ },
+ "pt-BR": {
+ "code": "pt-BR",
+ "name": "pt_BR"
+ },
+ "pt-PT": {
+ "code": "pt-PT",
+ "name": "pt_PT"
+ },
+ "ro-MD": {
+ "code": "ro-MD",
+ "name": "ro_MD"
+ },
+ "rm": {
+ "code": "rm",
+ "name": "Romansh"
+ },
+ "rof": {
+ "code": "rof",
+ "name": "Rombo"
+ },
+ "rn": {
+ "code": "rn",
+ "name": "Rundi"
+ },
+ "rwk": {
+ "code": "rwk",
+ "name": "Rwa"
+ },
+ "saq": {
+ "code": "saq",
+ "name": "Samburu"
+ },
+ "sg": {
+ "code": "sg",
+ "name": "Sango"
+ },
+ "sbp": {
+ "code": "sbp",
+ "name": "Sangu"
+ },
+ "gd": {
+ "code": "gd",
+ "name": "Scottish Gaelic"
+ },
+ "seh": {
+ "code": "seh",
+ "name": "Sena"
+ },
+ "sr": {
+ "code": "sr",
+ "name": "Serbian"
+ },
+ "ksb": {
+ "code": "ksb",
+ "name": "Shambala"
+ },
+ "sn": {
+ "code": "sn",
+ "name": "Shona"
+ },
+ "si": {
+ "code": "si",
+ "name": "Sinhala"
+ },
+ "sk": {
+ "code": "sk",
+ "name": "Slovak"
+ },
+ "sl": {
+ "code": "sl",
+ "name": "Slovenian"
+ },
+ "xog": {
+ "code": "xog",
+ "name": "Soga"
+ },
+ "zgh": {
+ "code": "zgh",
+ "name": "Standard Moroccan Tamazight"
+ },
+ "sw": {
+ "code": "sw",
+ "name": "Swahili"
+ },
+ "gsw": {
+ "code": "gsw",
+ "name": "Swiss German"
+ },
+ "dav": {
+ "code": "dav",
+ "name": "Taita"
+ },
+ "twq": {
+ "code": "twq",
+ "name": "Tasawaq"
+ },
+ "te": {
+ "code": "te",
+ "name": "Telugu"
+ },
+ "teo": {
+ "code": "teo",
+ "name": "Teso"
+ },
+ "bo": {
+ "code": "bo",
+ "name": "Tibetan"
+ },
+ "ti": {
+ "code": "ti",
+ "name": "Tigrinya"
+ },
+ "to": {
+ "code": "to",
+ "name": "Tongan"
+ },
+ "hsb": {
+ "code": "hsb",
+ "name": "Upper Sorbian"
+ },
+ "ug": {
+ "code": "ug",
+ "name": "Uyghur"
+ },
+ "uz": {
+ "code": "uz",
+ "name": "Uzbek"
+ },
+ "vai": {
+ "code": "vai",
+ "name": "Vai"
+ },
+ "vun": {
+ "code": "vun",
+ "name": "Vunjo"
+ },
+ "wae": {
+ "code": "wae",
+ "name": "Walser"
+ },
+ "cy": {
+ "code": "cy",
+ "name": "Welsh"
+ },
+ "fy": {
+ "code": "fy",
+ "name": "Western Frisian"
+ },
+ "yav": {
+ "code": "yav",
+ "name": "Yangben"
+ },
+ "dje": {
+ "code": "dje",
+ "name": "Zarma"
+ },
+ "zh-Hans": {
+ "code": "zh-Hans",
+ "name": "zh_Hans"
+ },
+ "zh-Hant": {
+ "code": "zh-Hant",
+ "name": "zh_Hant"
+ },
+ "be": {
+ "code": "be",
+ "name": "ⵜⴰⴱⵉâµâ´°âµ”ⵓⵙⵜ"
+ },
+ "my": {
+ "code": "my",
+ "name": "ⵜⴰⴱⵉⵔⵎⴰâµâµ‰âµœ"
+ },
+ "bg": {
+ "code": "bg",
+ "name": "ⵜⴰⴱâµâµ–ⴰⵔⵉⵜ"
+ },
+ "pa": {
+ "code": "pa",
+ "name": "ⵜⴰⴱâµâµŠâ´°â´±âµ‰âµœ"
+ },
+ "bn": {
+ "code": "bn",
+ "name": "ⵜⴰⴱâµâµ–â´°âµâµ‰âµœ"
+ },
+ "pl": {
+ "code": "pl",
+ "name": "ⵜⴰⴱⵓâµâµ“âµâµ‰âµœ"
+ },
+ "pt": {
+ "code": "pt",
+ "name": "ⵜⴰⴱⵕⵟⵇⵉⵣⵜ"
+ },
+ "el": {
+ "code": "el",
+ "name": "ⵜⴰⴳⵔⵉⴳⵉⵜ"
+ },
+ "vi": {
+ "code": "vi",
+ "name": "ⵜⴰⴼⵉⵜâµâ´°âµŽâµ‰âµœ"
+ },
+ "fa": {
+ "code": "fa",
+ "name": "ⵜⴰⴼⵓⵔⵙⵉⵜ"
+ },
+ "fr": {
+ "code": "fr",
+ "name": "ⵜⴰⴼⵔⴰâµâµ™âµ‰âµ™âµœ"
+ },
+ "ak": {
+ "code": "ak",
+ "name": "ⵜⴰⴽⴰâµâµœ"
+ },
+ "ko": {
+ "code": "ko",
+ "name": "ⵜⴰⴽⵓⵔⵉⵜ"
+ },
+ "ha": {
+ "code": "ha",
+ "name": "ⵜⴰⵀⴰⵡⵙⴰⵜ"
+ },
+ "hi": {
+ "code": "hi",
+ "name": "ⵜⴰⵀⵉâµâ´·âµ‰âµœ"
+ },
+ "hu": {
+ "code": "hu",
+ "name": "ⵜⴰⵀâµâµ–ⴰⵔⵉⵜ"
+ },
+ "nl": {
+ "code": "nl",
+ "name": "ⵜⴰⵀⵓâµâ´°âµâ´·âµ‰âµœ"
+ },
+ "ar": {
+ "code": "ar",
+ "name": "ⵜⴰⵄⵔⴰⴱⵜ"
+ },
+ "km": {
+ "code": "km",
+ "name": "ⵜⴰⵅⵎⵉⵔⵜ"
+ },
+ "ja": {
+ "code": "ja",
+ "name": "ⵜⴰⵊⴰⴱⴱⵓâµâµ‰âµœ"
+ },
+ "de": {
+ "code": "de",
+ "name": "ⵜⴰâµâµ‰âµŽâ´°âµâµœ"
+ },
+ "ms": {
+ "code": "ms",
+ "name": "ⵜⴰⵎⴰâµâ´°âµ¡âµ‰âµœ"
+ },
+ "shi": {
+ "code": "shi",
+ "name": "ⵜⴰⵎⴰⵣⵉⵖⵜ"
+ },
+ "am": {
+ "code": "am",
+ "name": "ⵜⴰⵎⵀⴰⵔⵉⵜ"
+ },
+ "en": {
+ "code": "en",
+ "name": "ⵜⴰâµâ´³âµâµ‰âµ£âµœ"
+ },
+ "id": {
+ "code": "id",
+ "name": "ⵜⴰâµâ´·âµ“âµâµ‰âµ™âµ‰âµœ"
+ },
+ "ne": {
+ "code": "ne",
+ "name": "ⵜⴰâµâµ‰â´±â´°âµâµ‰âµœ"
+ },
+ "ro": {
+ "code": "ro",
+ "name": "ⵜⴰⵔⵓⵎⴰâµâµ‰âµœ"
+ },
+ "ru": {
+ "code": "ru",
+ "name": "ⵜⴰⵔⵓⵙⵉⵜ"
+ },
+ "es": {
+ "code": "es",
+ "name": "ⵜⴰⵙⴱâµâµ¢âµ“âµâµ‰âµœ"
+ },
+ "so": {
+ "code": "so",
+ "name": "ⵜⴰⵙⵓⵎⴰâµâµ‰âµœ"
+ },
+ "sv": {
+ "code": "sv",
+ "name": "ⵜⴰⵙⵡⵉⴷⵉⵜ"
+ },
+ "zh": {
+ "code": "zh",
+ "name": "ⵜⴰⵛⵉâµâµ¡âµ‰âµœ"
+ },
+ "ta": {
+ "code": "ta",
+ "name": "ⵜⴰⵜⴰⵎⵉâµâµœ"
+ },
+ "th": {
+ "code": "th",
+ "name": "ⵜⴰⵜⴰⵢâµâ´°âµâ´·âµ‰âµœ"
+ },
+ "tr": {
+ "code": "tr",
+ "name": "ⵜⴰⵜⵓⵔⴽⵉⵜ"
+ },
+ "cs": {
+ "code": "cs",
+ "name": "ⵜⴰⵜⵛⵉⴽⵉⵜ"
+ },
+ "it": {
+ "code": "it",
+ "name": "ⵜⴰⵟⴰâµâµ¢â´°âµâµœ"
+ },
+ "yo": {
+ "code": "yo",
+ "name": "ⵜⴰⵢⵔⵓⴱⴰⵜ"
+ },
+ "zu": {
+ "code": "zu",
+ "name": "ⵜⴰⵣⵓâµâµ“ⵜ"
+ },
+ "uk": {
+ "code": "uk",
+ "name": "ⵜⵓⴽⵔⴰâµâµ‰âµœ"
+ },
+ "ur": {
+ "code": "ur",
+ "name": "ⵜⵓⵔⴷⵓⵜ"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/language/si.json b/library/intl/resources/language/si.json
new file mode 100644
index 000000000..c0967dadd
--- /dev/null
+++ b/library/intl/resources/language/si.json
@@ -0,0 +1,738 @@
+{
+ "ast": {
+ "code": "ast",
+ "name": "Asturian"
+ },
+ "bas": {
+ "code": "bas",
+ "name": "Basaa"
+ },
+ "ksh": {
+ "code": "ksh",
+ "name": "Colognian"
+ },
+ "ewo": {
+ "code": "ewo",
+ "name": "Ewondo"
+ },
+ "fur": {
+ "code": "fur",
+ "name": "Friulian"
+ },
+ "ff": {
+ "code": "ff",
+ "name": "Fulah"
+ },
+ "ro-MD": {
+ "code": "ro-MD",
+ "name": "ro_MD"
+ },
+ "gd": {
+ "code": "gd",
+ "name": "Scottish Gaelic"
+ },
+ "wae": {
+ "code": "wae",
+ "name": "Walser"
+ },
+ "yav": {
+ "code": "yav",
+ "name": "Yangben"
+ },
+ "ak": {
+ "code": "ak",
+ "name": "අකà·à¶±à·Š"
+ },
+ "af": {
+ "code": "af",
+ "name": "අප්â€à¶»à·’කà·à¶±à·”"
+ },
+ "ga": {
+ "code": "ga",
+ "name": "අයර්ලන්ත"
+ },
+ "is": {
+ "code": "is",
+ "name": "අයිස්ලන්ත"
+ },
+ "ar": {
+ "code": "ar",
+ "name": "අරà·à¶¶à·’"
+ },
+ "az": {
+ "code": "az",
+ "name": "අසර්බයිජà·à¶±à·Š"
+ },
+ "asa": {
+ "code": "asa",
+ "name": "අසු"
+ },
+ "hy": {
+ "code": "hy",
+ "name": "ආර්මේනියà·à¶±à·”"
+ },
+ "agq": {
+ "code": "agq",
+ "name": "ඇගම්"
+ },
+ "en-US": {
+ "code": "en-US",
+ "name": "ඇමෙරිකà·à¶±à·” ඉංග්â€à¶»à·“සි"
+ },
+ "am": {
+ "code": "am",
+ "name": "ඇම්හà·à¶»à·’ක්"
+ },
+ "sq": {
+ "code": "sq",
+ "name": "ඇල්බේනියà·à¶±à·”"
+ },
+ "en": {
+ "code": "en",
+ "name": "ඉංග්â€à¶»à·“සි"
+ },
+ "it": {
+ "code": "it",
+ "name": "ඉතà·à¶½à·’"
+ },
+ "id": {
+ "code": "id",
+ "name": "ඉන්දුනීසියà·à¶±à·”"
+ },
+ "ee": {
+ "code": "ee",
+ "name": "ඉව්"
+ },
+ "hsb": {
+ "code": "hsb",
+ "name": "ඉහළ à·ƒà·à¶¶à·’යà·à¶±à·”"
+ },
+ "nd": {
+ "code": "nd",
+ "name": "උතුරු එන්ඩිබෙලෙ"
+ },
+ "se": {
+ "code": "se",
+ "name": "උතුරු à·ƒà·à¶¸à·’"
+ },
+ "ug": {
+ "code": "ug",
+ "name": "උයිගර්"
+ },
+ "ur": {
+ "code": "ur",
+ "name": "උර්දු"
+ },
+ "uz": {
+ "code": "uz",
+ "name": "උස්බෙක්"
+ },
+ "ebu": {
+ "code": "ebu",
+ "name": "එම්බු"
+ },
+ "et": {
+ "code": "et",
+ "name": "එස්තà·à¶±à·’යà·à¶±à·”"
+ },
+ "eo": {
+ "code": "eo",
+ "name": "එස්පà·à¶»à¶±à·Šà¶§à·"
+ },
+ "or": {
+ "code": "or",
+ "name": "ඔරියà·"
+ },
+ "de-AT": {
+ "code": "de-AT",
+ "name": "ඔස්ට්â€à¶»à·’යà·à¶±à·” ජර්මන්"
+ },
+ "en-AU": {
+ "code": "en-AU",
+ "name": "ඕස්ට්â€à¶»à·šà¶½à·’යà·à¶±à·” ඉංග්â€à¶»à·“සි"
+ },
+ "kn": {
+ "code": "kn",
+ "name": "කණ්ණඩ"
+ },
+ "kea": {
+ "code": "kea",
+ "name": "කබුවෙර්ඩියà·à¶±à·"
+ },
+ "km": {
+ "code": "km",
+ "name": "කමර්"
+ },
+ "kl": {
+ "code": "kl",
+ "name": "කලà·à¶½à·’සට්"
+ },
+ "kln": {
+ "code": "kln",
+ "name": "කලෙන්ජන්"
+ },
+ "kk": {
+ "code": "kk",
+ "name": "කසà·à¶›à·Š"
+ },
+ "ks": {
+ "code": "ks",
+ "name": "කà·à·‚්මීර්"
+ },
+ "ca": {
+ "code": "ca",
+ "name": "කà·à¶§à¶½à¶±à·Š"
+ },
+ "en-CA": {
+ "code": "en-CA",
+ "name": "කà·à¶±à·šà¶©à·’යà·à¶±à·” ඉංග්â€à¶»à·“සි"
+ },
+ "fr-CA": {
+ "code": "fr-CA",
+ "name": "කà·à¶±à·šà¶©à·’යà·à¶±à·” ප්â€à¶»à¶‚à·"
+ },
+ "kab": {
+ "code": "kab",
+ "name": "කà·à¶¶à¶½à·"
+ },
+ "kam": {
+ "code": "kam",
+ "name": "කà·à¶¸à·Šà¶¶à·"
+ },
+ "ki": {
+ "code": "ki",
+ "name": "කිකුයු"
+ },
+ "ky": {
+ "code": "ky",
+ "name": "කිර්ගිස්"
+ },
+ "nmg": {
+ "code": "nmg",
+ "name": "කුවà·à·ƒà·’ඔ"
+ },
+ "swc": {
+ "code": "swc",
+ "name": "කොන්ග෠ස්වà·à·„ිලි"
+ },
+ "khq": {
+ "code": "khq",
+ "name": "කොයිර෠චිනි"
+ },
+ "ko": {
+ "code": "ko",
+ "name": "කොරියà·à¶±à·”"
+ },
+ "ses": {
+ "code": "ses",
+ "name": "කà·à¶ºà·’රà·à¶¶à·œà¶»à·œ සෙන්නි"
+ },
+ "hr": {
+ "code": "hr",
+ "name": "ක්â€à¶»à·à¶ºà·šà·à·’යà·à¶±à·”"
+ },
+ "lg": {
+ "code": "lg",
+ "name": "ගන්ඩà·"
+ },
+ "gl": {
+ "code": "gl",
+ "name": "ගà·à¶½à·“සියà·à¶±à·”"
+ },
+ "gu": {
+ "code": "gu",
+ "name": "ගුජරà·à¶§à·’"
+ },
+ "guz": {
+ "code": "guz",
+ "name": "ගුසී"
+ },
+ "el": {
+ "code": "el",
+ "name": "ග්â€à¶»à·“ක"
+ },
+ "cgg": {
+ "code": "cgg",
+ "name": "චිගà·"
+ },
+ "zh": {
+ "code": "zh",
+ "name": "චීන"
+ },
+ "cs": {
+ "code": "cs",
+ "name": "චෙත්"
+ },
+ "chr": {
+ "code": "chr",
+ "name": "චෙරොකී"
+ },
+ "pa": {
+ "code": "pa",
+ "name": "ජන්ජà·à¶¶à·’"
+ },
+ "ja": {
+ "code": "ja",
+ "name": "ජපන්"
+ },
+ "de": {
+ "code": "de",
+ "name": "ජර්මන්"
+ },
+ "dyo": {
+ "code": "dyo",
+ "name": "ජොල-à·†à·à¶±à·’යි"
+ },
+ "ka": {
+ "code": "ka",
+ "name": "ජà·à¶»à·Šà¶¢à·’යà·à¶±à·”"
+ },
+ "shi": {
+ "code": "shi",
+ "name": "ටචේල්හිට්"
+ },
+ "dav": {
+ "code": "dav",
+ "name": "ටයිටà·"
+ },
+ "twq": {
+ "code": "twq",
+ "name": "ටසවà·à¶šà·Š"
+ },
+ "ti": {
+ "code": "ti",
+ "name": "ටිග්â€à¶»à·’න්යà·"
+ },
+ "bo": {
+ "code": "bo",
+ "name": "ටිබෙට්"
+ },
+ "teo": {
+ "code": "teo",
+ "name": "ටෙසà·"
+ },
+ "to": {
+ "code": "to",
+ "name": "ටොංගà·"
+ },
+ "da": {
+ "code": "da",
+ "name": "ඩà·à¶±à·’à·à·Š"
+ },
+ "dz": {
+ "code": "dz",
+ "name": "ඩිසොන්කà·"
+ },
+ "th": {
+ "code": "th",
+ "name": "තà·à¶ºà·’"
+ },
+ "tr": {
+ "code": "tr",
+ "name": "තුර්කි"
+ },
+ "te": {
+ "code": "te",
+ "name": "තෙළිඟු"
+ },
+ "ta": {
+ "code": "ta",
+ "name": "දෙමළ"
+ },
+ "nyn": {
+ "code": "nyn",
+ "name": "නයන්කොළේ"
+ },
+ "ar-001": {
+ "code": "ar-001",
+ "name": "නවීන සම්මත අරà·à¶¶à·’"
+ },
+ "naq": {
+ "code": "naq",
+ "name": "නà·à¶¸à·"
+ },
+ "ne": {
+ "code": "ne",
+ "name": "නේපà·à¶½"
+ },
+ "jgo": {
+ "code": "jgo",
+ "name": "නොම්බà·"
+ },
+ "nus": {
+ "code": "nus",
+ "name": "නොයර්"
+ },
+ "nn": {
+ "code": "nn",
+ "name": "නොවේර්ජියà·à¶±à·” නයිනà·à¶»à·Šà·ƒà·Šà¶šà·Š"
+ },
+ "nb": {
+ "code": "nb",
+ "name": "නà·à·€à·šà¶¢à·’යà·à¶±à·” බොක්මà·à¶½à·Š"
+ },
+ "fa": {
+ "code": "fa",
+ "name": "පර්සියà·à¶±à·”"
+ },
+ "ps": {
+ "code": "ps",
+ "name": "පෂ්ටො"
+ },
+ "dsb": {
+ "code": "dsb",
+ "name": "පහළ à·ƒà·à¶¶à·’යà·à¶±à·”"
+ },
+ "fil": {
+ "code": "fil",
+ "name": "පිලිපීන"
+ },
+ "pt": {
+ "code": "pt",
+ "name": "පෘතුගීසි"
+ },
+ "pl": {
+ "code": "pl",
+ "name": "පà·à¶½à¶±à·Šà¶­"
+ },
+ "fr": {
+ "code": "fr",
+ "name": "ප්â€à¶»à¶‚à·"
+ },
+ "fy": {
+ "code": "fy",
+ "name": "බටහිර ෆ්â€à¶»à·’සියà·à¶±à·”"
+ },
+ "bm": {
+ "code": "bm",
+ "name": "බම්බරà·"
+ },
+ "bg": {
+ "code": "bg",
+ "name": "බල්ගේරියà·à¶±à·”"
+ },
+ "ksf": {
+ "code": "ksf",
+ "name": "බà·à·†à·’යà·"
+ },
+ "my": {
+ "code": "my",
+ "name": "බුරුම"
+ },
+ "bn": {
+ "code": "bn",
+ "name": "බෙංගà·à¶½à·’"
+ },
+ "bez": {
+ "code": "bez",
+ "name": "බෙනà·"
+ },
+ "be": {
+ "code": "be",
+ "name": "බෙලරුසියà·à¶±à·”"
+ },
+ "brx": {
+ "code": "brx",
+ "name": "බොඩො"
+ },
+ "eu": {
+ "code": "eu",
+ "name": "බොස්කà·"
+ },
+ "bs": {
+ "code": "bs",
+ "name": "බොස්නියà·à¶±à·”"
+ },
+ "pt-BR": {
+ "code": "pt-BR",
+ "name": "බ්â€à¶»à·ƒà·“ල පෘතුගීසි"
+ },
+ "en-GB": {
+ "code": "en-GB",
+ "name": "බ්â€à¶»à·’තà·à¶±à·Šâ€à¶º ඉංග්â€à¶»à·“සි"
+ },
+ "br": {
+ "code": "br",
+ "name": "බ්â€à¶»à·šà¶§à·œà¶±à·Š"
+ },
+ "mgh": {
+ "code": "mgh",
+ "name": "මඛුවà·-මීටà·"
+ },
+ "tzm": {
+ "code": "tzm",
+ "name": "මධ්â€à¶ºà¶¸ ඇට්ලස් ටමසිට්"
+ },
+ "mr": {
+ "code": "mr",
+ "name": "මරà·à¶­à·’"
+ },
+ "mg": {
+ "code": "mg",
+ "name": "මලගà·à·ƒà·’"
+ },
+ "ml": {
+ "code": "ml",
+ "name": "මලයà·à¶½à¶¸à·Š"
+ },
+ "mas": {
+ "code": "mas",
+ "name": "මසà·à¶ºà·’"
+ },
+ "jmc": {
+ "code": "jmc",
+ "name": "මà·à¶šà·à¶¸à·“"
+ },
+ "kde": {
+ "code": "kde",
+ "name": "මà·à¶šà·œà¶±à·Šà¶©à·Š"
+ },
+ "ms": {
+ "code": "ms",
+ "name": "මà·à¶½à·š"
+ },
+ "mk": {
+ "code": "mk",
+ "name": "මà·à·ƒà·’ඩà·à¶±à·’යà·à¶±à·”"
+ },
+ "mua": {
+ "code": "mua",
+ "name": "මුන්ඩන්"
+ },
+ "es-MX": {
+ "code": "es-MX",
+ "name": "මෙක්සිකà·à¶±à·” ස්පà·à¶¤à·Šà¶¤"
+ },
+ "mer": {
+ "code": "mer",
+ "name": "මෙරු"
+ },
+ "mn": {
+ "code": "mn",
+ "name": "මොංගà·à¶½à·’යà·à¶±à·”"
+ },
+ "mfe": {
+ "code": "mfe",
+ "name": "මොරිස්යෙම්"
+ },
+ "mt": {
+ "code": "mt",
+ "name": "මොල්ටිස්"
+ },
+ "uk": {
+ "code": "uk",
+ "name": "යුක්රේනියà·à¶±à·”"
+ },
+ "pt-PT": {
+ "code": "pt-PT",
+ "name": "යුරà·à¶´à·“ය පෘතුගීසි"
+ },
+ "es-ES": {
+ "code": "es-ES",
+ "name": "යුරà·à¶´à·“ය ස්පà·à¶¤à·Šà¶¤"
+ },
+ "yo": {
+ "code": "yo",
+ "name": "යොරූබà·"
+ },
+ "rn": {
+ "code": "rn",
+ "name": "රුන්ඩි"
+ },
+ "ru": {
+ "code": "ru",
+ "name": "රුසියà·à¶±à·”"
+ },
+ "rm": {
+ "code": "rm",
+ "name": "රොමෑන්à·à·Š"
+ },
+ "ro": {
+ "code": "ro",
+ "name": "රොමේනියà·à¶±à·”"
+ },
+ "rof": {
+ "code": "rof",
+ "name": "රà·à¶¸à·Šà¶¶à·"
+ },
+ "rwk": {
+ "code": "rwk",
+ "name": "ර්වà·"
+ },
+ "lag": {
+ "code": "lag",
+ "name": "ලංගි"
+ },
+ "lb": {
+ "code": "lb",
+ "name": "ලක්සà·à¶¸à·Šà¶¶à¶»à·Šà¶œà·Š"
+ },
+ "nl": {
+ "code": "nl",
+ "name": "ලන්දේසි"
+ },
+ "lo": {
+ "code": "lo",
+ "name": "ලà·à¶•"
+ },
+ "lv": {
+ "code": "lv",
+ "name": "ලà·à¶§à·Šà·€à·’යà·à¶±à·”"
+ },
+ "lt": {
+ "code": "lt",
+ "name": "ලිතුවේනියà·à¶±à·”"
+ },
+ "ln": {
+ "code": "ln",
+ "name": "ලින්ගලà·"
+ },
+ "lu": {
+ "code": "lu",
+ "name": "ලු"
+ },
+ "luo": {
+ "code": "luo",
+ "name": "ලුඔ"
+ },
+ "luy": {
+ "code": "luy",
+ "name": "ලුයියà·"
+ },
+ "vai": {
+ "code": "vai",
+ "name": "වයි"
+ },
+ "vi": {
+ "code": "vi",
+ "name": "වියට්නà·à¶¸à·Š"
+ },
+ "vun": {
+ "code": "vun",
+ "name": "වුන්ජà·"
+ },
+ "cy": {
+ "code": "cy",
+ "name": "වේල්ස්"
+ },
+ "ksb": {
+ "code": "ksb",
+ "name": "à·à·à¶¸à·Šà¶¶à¶½à·"
+ },
+ "sn": {
+ "code": "sn",
+ "name": "à·à·à¶±à·"
+ },
+ "sbp": {
+ "code": "sbp",
+ "name": "සංගු"
+ },
+ "sg": {
+ "code": "sg",
+ "name": "සන්ග්â€à¶»à·"
+ },
+ "saq": {
+ "code": "saq",
+ "name": "සම්බුරු"
+ },
+ "zgh": {
+ "code": "zgh",
+ "name": "සම්මත මොරොක්ක෠ටමසිග්ත්"
+ },
+ "sr": {
+ "code": "sr",
+ "name": "සර්බියà·à¶±à·”"
+ },
+ "zh-Hant": {
+ "code": "zh-Hant",
+ "name": "à·ƒà·à¶¸à·Šà¶´à·Šâ€à¶»à¶¯à·à¶ºà·’ක චීන"
+ },
+ "si": {
+ "code": "si",
+ "name": "සිංහල"
+ },
+ "zu": {
+ "code": "zu",
+ "name": "සුලු"
+ },
+ "zh-Hans": {
+ "code": "zh-Hans",
+ "name": "සුළුකළ චීන"
+ },
+ "seh": {
+ "code": "seh",
+ "name": "සෙනà·"
+ },
+ "xog": {
+ "code": "xog",
+ "name": "සොගà·"
+ },
+ "so": {
+ "code": "so",
+ "name": "à·ƒà·à¶¸à·à¶½à·’"
+ },
+ "es": {
+ "code": "es",
+ "name": "ස්පà·à¶¤à·Šà¶¤"
+ },
+ "sk": {
+ "code": "sk",
+ "name": "ස්ලà·à·€à·à¶šà·Š"
+ },
+ "sl": {
+ "code": "sl",
+ "name": "ස්ලà·à·€à·šà¶±à·’යà·à¶±à·”"
+ },
+ "sw": {
+ "code": "sw",
+ "name": "ස්වà·à·„ිලි"
+ },
+ "de-CH": {
+ "code": "de-CH",
+ "name": "ස්විස් උසස් ජර්මන්"
+ },
+ "gsw": {
+ "code": "gsw",
+ "name": "ස්විස් ජර්මනි"
+ },
+ "fr-CH": {
+ "code": "fr-CH",
+ "name": "ස්විස් ප්â€à¶»à¶‚à·"
+ },
+ "sv": {
+ "code": "sv",
+ "name": "ස්වීඩන්"
+ },
+ "hu": {
+ "code": "hu",
+ "name": "හන්ගේරියà·à¶±à·”"
+ },
+ "hi": {
+ "code": "hi",
+ "name": "හින්දි"
+ },
+ "he": {
+ "code": "he",
+ "name": "හීබෲ"
+ },
+ "ha": {
+ "code": "ha",
+ "name": "à·„à·à·ƒà·"
+ },
+ "dje": {
+ "code": "dje",
+ "name": "ෆර්මà·"
+ },
+ "fo": {
+ "code": "fo",
+ "name": "à·†à·à¶»à·à·ƒà·Š"
+ },
+ "fi": {
+ "code": "fi",
+ "name": "ෆින්ලන්ත"
+ },
+ "nl-BE": {
+ "code": "nl-BE",
+ "name": "ෆ්ලෙමිà·à·Š"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/language/sk.json b/library/intl/resources/language/sk.json
new file mode 100644
index 000000000..a984c3e31
--- /dev/null
+++ b/library/intl/resources/language/sk.json
@@ -0,0 +1,738 @@
+{
+ "af": {
+ "code": "af",
+ "name": "afrikánÄina"
+ },
+ "agq": {
+ "code": "agq",
+ "name": "aghem"
+ },
+ "ak": {
+ "code": "ak",
+ "name": "akanÄina"
+ },
+ "sq": {
+ "code": "sq",
+ "name": "albánÄina"
+ },
+ "am": {
+ "code": "am",
+ "name": "amharÄina"
+ },
+ "en": {
+ "code": "en",
+ "name": "angliÄtina"
+ },
+ "en-US": {
+ "code": "en-US",
+ "name": "angliÄtina (americká)"
+ },
+ "en-AU": {
+ "code": "en-AU",
+ "name": "angliÄtina (austrálska)"
+ },
+ "en-GB": {
+ "code": "en-GB",
+ "name": "angliÄtina (britská)"
+ },
+ "en-CA": {
+ "code": "en-CA",
+ "name": "angliÄtina (kanadská)"
+ },
+ "ar": {
+ "code": "ar",
+ "name": "arabÄina"
+ },
+ "ar-001": {
+ "code": "ar-001",
+ "name": "arabÄina (moderná Å¡tandardná)"
+ },
+ "hy": {
+ "code": "hy",
+ "name": "arménÄina"
+ },
+ "ast": {
+ "code": "ast",
+ "name": "astúrÄina"
+ },
+ "asa": {
+ "code": "asa",
+ "name": "asu"
+ },
+ "az": {
+ "code": "az",
+ "name": "azerbajdžanÄina"
+ },
+ "ksf": {
+ "code": "ksf",
+ "name": "bafia"
+ },
+ "bm": {
+ "code": "bm",
+ "name": "bambarÄina"
+ },
+ "my": {
+ "code": "my",
+ "name": "barmÄina"
+ },
+ "bas": {
+ "code": "bas",
+ "name": "basa"
+ },
+ "eu": {
+ "code": "eu",
+ "name": "baskiÄtina"
+ },
+ "bez": {
+ "code": "bez",
+ "name": "bena"
+ },
+ "bn": {
+ "code": "bn",
+ "name": "bengálÄina"
+ },
+ "be": {
+ "code": "be",
+ "name": "bieloruština"
+ },
+ "brx": {
+ "code": "brx",
+ "name": "bodo"
+ },
+ "bs": {
+ "code": "bs",
+ "name": "bosniaÄtina"
+ },
+ "br": {
+ "code": "br",
+ "name": "bretónÄina"
+ },
+ "bg": {
+ "code": "bg",
+ "name": "bulharÄina"
+ },
+ "chr": {
+ "code": "chr",
+ "name": "Äerokí"
+ },
+ "cs": {
+ "code": "cs",
+ "name": "ÄeÅ¡tina"
+ },
+ "zh": {
+ "code": "zh",
+ "name": "ÄínÅ¡tina"
+ },
+ "zh-Hant": {
+ "code": "zh-Hant",
+ "name": "ÄínÅ¡tina (tradiÄná)"
+ },
+ "zh-Hans": {
+ "code": "zh-Hans",
+ "name": "ÄínÅ¡tina (zjednoduÅ¡ená)"
+ },
+ "da": {
+ "code": "da",
+ "name": "dánÄina"
+ },
+ "dsb": {
+ "code": "dsb",
+ "name": "dolnolužická srbÄina"
+ },
+ "dz": {
+ "code": "dz",
+ "name": "dzongkä"
+ },
+ "ebu": {
+ "code": "ebu",
+ "name": "embu"
+ },
+ "eo": {
+ "code": "eo",
+ "name": "esperanto"
+ },
+ "et": {
+ "code": "et",
+ "name": "estónÄina"
+ },
+ "ee": {
+ "code": "ee",
+ "name": "ewe"
+ },
+ "ewo": {
+ "code": "ewo",
+ "name": "ewondo"
+ },
+ "fo": {
+ "code": "fo",
+ "name": "faerÄina"
+ },
+ "fil": {
+ "code": "fil",
+ "name": "filipínÄina"
+ },
+ "fi": {
+ "code": "fi",
+ "name": "fínÄina"
+ },
+ "nl-BE": {
+ "code": "nl-BE",
+ "name": "flámÄina"
+ },
+ "fr": {
+ "code": "fr",
+ "name": "francúzština"
+ },
+ "fr-CA": {
+ "code": "fr-CA",
+ "name": "francúzština (kanadská)"
+ },
+ "fr-CH": {
+ "code": "fr-CH",
+ "name": "francúzÅ¡tina (Å¡vajÄiarska)"
+ },
+ "fur": {
+ "code": "fur",
+ "name": "friulÄina"
+ },
+ "ff": {
+ "code": "ff",
+ "name": "fulbÄina"
+ },
+ "gl": {
+ "code": "gl",
+ "name": "galícijÄina"
+ },
+ "lg": {
+ "code": "lg",
+ "name": "gandÄina"
+ },
+ "el": {
+ "code": "el",
+ "name": "gréÄtina"
+ },
+ "kl": {
+ "code": "kl",
+ "name": "grónÄina"
+ },
+ "ka": {
+ "code": "ka",
+ "name": "gruzínÄina"
+ },
+ "gu": {
+ "code": "gu",
+ "name": "gudžarátÄina"
+ },
+ "guz": {
+ "code": "guz",
+ "name": "gusii"
+ },
+ "ha": {
+ "code": "ha",
+ "name": "hauština"
+ },
+ "he": {
+ "code": "he",
+ "name": "hebrejÄina"
+ },
+ "hi": {
+ "code": "hi",
+ "name": "hindÄina"
+ },
+ "nl": {
+ "code": "nl",
+ "name": "holandÄina"
+ },
+ "hsb": {
+ "code": "hsb",
+ "name": "hornolužická srbÄina"
+ },
+ "hr": {
+ "code": "hr",
+ "name": "chorvátÄina"
+ },
+ "id": {
+ "code": "id",
+ "name": "indonézština"
+ },
+ "ga": {
+ "code": "ga",
+ "name": "írÄina"
+ },
+ "is": {
+ "code": "is",
+ "name": "islandÄina"
+ },
+ "yav": {
+ "code": "yav",
+ "name": "jangben"
+ },
+ "ja": {
+ "code": "ja",
+ "name": "japonÄina"
+ },
+ "dyo": {
+ "code": "dyo",
+ "name": "jola-fonyi"
+ },
+ "yo": {
+ "code": "yo",
+ "name": "jorubÄina"
+ },
+ "kab": {
+ "code": "kab",
+ "name": "kabylÄina"
+ },
+ "kln": {
+ "code": "kln",
+ "name": "kalendžin"
+ },
+ "kam": {
+ "code": "kam",
+ "name": "kamba"
+ },
+ "kn": {
+ "code": "kn",
+ "name": "kannadÄina"
+ },
+ "kea": {
+ "code": "kea",
+ "name": "kapverdÄina"
+ },
+ "ks": {
+ "code": "ks",
+ "name": "kaÅ¡mírÄina"
+ },
+ "ca": {
+ "code": "ca",
+ "name": "katalánÄina"
+ },
+ "kk": {
+ "code": "kk",
+ "name": "kazaština"
+ },
+ "km": {
+ "code": "km",
+ "name": "khmérÄina"
+ },
+ "cgg": {
+ "code": "cgg",
+ "name": "kiga"
+ },
+ "ki": {
+ "code": "ki",
+ "name": "kikujÄina"
+ },
+ "ky": {
+ "code": "ky",
+ "name": "kirgizština"
+ },
+ "rn": {
+ "code": "rn",
+ "name": "kirundÄina"
+ },
+ "ksh": {
+ "code": "ksh",
+ "name": "kolínÄina"
+ },
+ "ko": {
+ "code": "ko",
+ "name": "kórejÄina"
+ },
+ "ses": {
+ "code": "ses",
+ "name": "koyraboro senni"
+ },
+ "nmg": {
+ "code": "nmg",
+ "name": "kwasio"
+ },
+ "lag": {
+ "code": "lag",
+ "name": "langi"
+ },
+ "lo": {
+ "code": "lo",
+ "name": "laoština"
+ },
+ "ln": {
+ "code": "ln",
+ "name": "lingalÄina"
+ },
+ "lt": {
+ "code": "lt",
+ "name": "litovÄina"
+ },
+ "lv": {
+ "code": "lv",
+ "name": "lotyština"
+ },
+ "lu": {
+ "code": "lu",
+ "name": "luba-katanga"
+ },
+ "luy": {
+ "code": "luy",
+ "name": "luhja"
+ },
+ "luo": {
+ "code": "luo",
+ "name": "Luo"
+ },
+ "lb": {
+ "code": "lb",
+ "name": "luxemburÄina"
+ },
+ "mk": {
+ "code": "mk",
+ "name": "macedónÄina"
+ },
+ "hu": {
+ "code": "hu",
+ "name": "maÄarÄina"
+ },
+ "kde": {
+ "code": "kde",
+ "name": "makonde"
+ },
+ "mgh": {
+ "code": "mgh",
+ "name": "makua-meetto"
+ },
+ "ml": {
+ "code": "ml",
+ "name": "malajálamÄina"
+ },
+ "ms": {
+ "code": "ms",
+ "name": "malajÄina"
+ },
+ "mg": {
+ "code": "mg",
+ "name": "malgaština"
+ },
+ "mt": {
+ "code": "mt",
+ "name": "maltÄina"
+ },
+ "mr": {
+ "code": "mr",
+ "name": "maráthÄina"
+ },
+ "mas": {
+ "code": "mas",
+ "name": "masajÄina"
+ },
+ "jmc": {
+ "code": "jmc",
+ "name": "mašame"
+ },
+ "mfe": {
+ "code": "mfe",
+ "name": "maurícijská kreolÄina"
+ },
+ "mer": {
+ "code": "mer",
+ "name": "meru"
+ },
+ "ro-MD": {
+ "code": "ro-MD",
+ "name": "moldavÄina"
+ },
+ "mn": {
+ "code": "mn",
+ "name": "mongolÄina"
+ },
+ "mua": {
+ "code": "mua",
+ "name": "mundang"
+ },
+ "naq": {
+ "code": "naq",
+ "name": "nama"
+ },
+ "nyn": {
+ "code": "nyn",
+ "name": "ňankole"
+ },
+ "de": {
+ "code": "de",
+ "name": "nemÄina"
+ },
+ "de-AT": {
+ "code": "de-AT",
+ "name": "nemÄina (rakúska)"
+ },
+ "de-CH": {
+ "code": "de-CH",
+ "name": "nemÄina (Å¡vajÄiarska spisovná)"
+ },
+ "gsw": {
+ "code": "gsw",
+ "name": "nemÄina (Å¡vajÄiarska)"
+ },
+ "ne": {
+ "code": "ne",
+ "name": "nepálÄina"
+ },
+ "jgo": {
+ "code": "jgo",
+ "name": "ngomba"
+ },
+ "nb": {
+ "code": "nb",
+ "name": "nórsky bokmål"
+ },
+ "nn": {
+ "code": "nn",
+ "name": "nórsky nynorsk"
+ },
+ "nus": {
+ "code": "nus",
+ "name": "nuer"
+ },
+ "pa": {
+ "code": "pa",
+ "name": "pandžábÄina"
+ },
+ "ps": {
+ "code": "ps",
+ "name": "paÅ¡tÄina"
+ },
+ "fa": {
+ "code": "fa",
+ "name": "perzština"
+ },
+ "pl": {
+ "code": "pl",
+ "name": "poľština"
+ },
+ "pt": {
+ "code": "pt",
+ "name": "portugalÄina"
+ },
+ "pt-BR": {
+ "code": "pt-BR",
+ "name": "portugalÄina (brazílska)"
+ },
+ "pt-PT": {
+ "code": "pt-PT",
+ "name": "portugalÄina (európska)"
+ },
+ "rm": {
+ "code": "rm",
+ "name": "rétorománÄina"
+ },
+ "rof": {
+ "code": "rof",
+ "name": "rombo"
+ },
+ "ro": {
+ "code": "ro",
+ "name": "rumunÄina"
+ },
+ "ru": {
+ "code": "ru",
+ "name": "ruština"
+ },
+ "rwk": {
+ "code": "rwk",
+ "name": "rwa"
+ },
+ "saq": {
+ "code": "saq",
+ "name": "samburu"
+ },
+ "sg": {
+ "code": "sg",
+ "name": "sango"
+ },
+ "sbp": {
+ "code": "sbp",
+ "name": "sangu"
+ },
+ "seh": {
+ "code": "seh",
+ "name": "sena"
+ },
+ "nd": {
+ "code": "nd",
+ "name": "severné ndebele"
+ },
+ "se": {
+ "code": "se",
+ "name": "severné sami"
+ },
+ "si": {
+ "code": "si",
+ "name": "sinhalÄina"
+ },
+ "sk": {
+ "code": "sk",
+ "name": "slovenÄina"
+ },
+ "sl": {
+ "code": "sl",
+ "name": "slovinÄina"
+ },
+ "xog": {
+ "code": "xog",
+ "name": "soga"
+ },
+ "so": {
+ "code": "so",
+ "name": "somálÄina"
+ },
+ "sr": {
+ "code": "sr",
+ "name": "srbÄina"
+ },
+ "sw": {
+ "code": "sw",
+ "name": "svahilÄina"
+ },
+ "swc": {
+ "code": "swc",
+ "name": "svahilÄina (konžská)"
+ },
+ "ksb": {
+ "code": "ksb",
+ "name": "Å¡ambala"
+ },
+ "gd": {
+ "code": "gd",
+ "name": "Å¡kótska gaelÄina"
+ },
+ "sn": {
+ "code": "sn",
+ "name": "Å¡onÄina"
+ },
+ "es": {
+ "code": "es",
+ "name": "Å¡panielÄina"
+ },
+ "es-ES": {
+ "code": "es-ES",
+ "name": "Å¡panielÄina (európska)"
+ },
+ "es-MX": {
+ "code": "es-MX",
+ "name": "Å¡panielÄina (mexická)"
+ },
+ "sv": {
+ "code": "sv",
+ "name": "Å¡védÄina"
+ },
+ "shi": {
+ "code": "shi",
+ "name": "tachelhit"
+ },
+ "dav": {
+ "code": "dav",
+ "name": "taita"
+ },
+ "it": {
+ "code": "it",
+ "name": "talianÄina"
+ },
+ "tzm": {
+ "code": "tzm",
+ "name": "tamašek (stredomarocký)"
+ },
+ "zgh": {
+ "code": "zgh",
+ "name": "tamašek (štandardný marocký)"
+ },
+ "ta": {
+ "code": "ta",
+ "name": "tamilÄina"
+ },
+ "twq": {
+ "code": "twq",
+ "name": "tasawaq"
+ },
+ "te": {
+ "code": "te",
+ "name": "telugÄina"
+ },
+ "teo": {
+ "code": "teo",
+ "name": "teso"
+ },
+ "th": {
+ "code": "th",
+ "name": "thajÄina"
+ },
+ "bo": {
+ "code": "bo",
+ "name": "tibetÄina"
+ },
+ "ti": {
+ "code": "ti",
+ "name": "tigriňa"
+ },
+ "to": {
+ "code": "to",
+ "name": "tongÄina"
+ },
+ "tr": {
+ "code": "tr",
+ "name": "tureÄtina"
+ },
+ "ug": {
+ "code": "ug",
+ "name": "ujgurÄina"
+ },
+ "uk": {
+ "code": "uk",
+ "name": "ukrajinÄina"
+ },
+ "ur": {
+ "code": "ur",
+ "name": "urdÄina"
+ },
+ "or": {
+ "code": "or",
+ "name": "uríjÄina"
+ },
+ "uz": {
+ "code": "uz",
+ "name": "uzbeÄtina"
+ },
+ "vai": {
+ "code": "vai",
+ "name": "Vai"
+ },
+ "vi": {
+ "code": "vi",
+ "name": "vietnamÄina"
+ },
+ "vun": {
+ "code": "vun",
+ "name": "vunjo"
+ },
+ "cy": {
+ "code": "cy",
+ "name": "waleština"
+ },
+ "wae": {
+ "code": "wae",
+ "name": "walserÄina"
+ },
+ "fy": {
+ "code": "fy",
+ "name": "západná frízština"
+ },
+ "khq": {
+ "code": "khq",
+ "name": "západná songhajÄina"
+ },
+ "dje": {
+ "code": "dje",
+ "name": "zarma"
+ },
+ "zu": {
+ "code": "zu",
+ "name": "zuluština"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/language/sl.json b/library/intl/resources/language/sl.json
new file mode 100644
index 000000000..b76fd92a0
--- /dev/null
+++ b/library/intl/resources/language/sl.json
@@ -0,0 +1,738 @@
+{
+ "af": {
+ "code": "af",
+ "name": "afrikanÅ¡Äina"
+ },
+ "agq": {
+ "code": "agq",
+ "name": "aghemÅ¡Äina"
+ },
+ "ak": {
+ "code": "ak",
+ "name": "akanÅ¡Äina"
+ },
+ "sq": {
+ "code": "sq",
+ "name": "albanÅ¡Äina"
+ },
+ "am": {
+ "code": "am",
+ "name": "amharÅ¡Äina"
+ },
+ "en": {
+ "code": "en",
+ "name": "angleÅ¡Äina"
+ },
+ "en-GB": {
+ "code": "en-GB",
+ "name": "angleÅ¡Äina (VB)"
+ },
+ "en-US": {
+ "code": "en-US",
+ "name": "angleÅ¡Äina (ZDA)"
+ },
+ "ar": {
+ "code": "ar",
+ "name": "arabÅ¡Äina"
+ },
+ "hy": {
+ "code": "hy",
+ "name": "armenÅ¡Äina"
+ },
+ "ast": {
+ "code": "ast",
+ "name": "asturijÅ¡Äina"
+ },
+ "asa": {
+ "code": "asa",
+ "name": "asujÅ¡Äina"
+ },
+ "en-AU": {
+ "code": "en-AU",
+ "name": "avstralska angleÅ¡Äina"
+ },
+ "de-AT": {
+ "code": "de-AT",
+ "name": "avstrijska nemÅ¡Äina"
+ },
+ "az": {
+ "code": "az",
+ "name": "azerbajdžanÅ¡Äina"
+ },
+ "ksf": {
+ "code": "ksf",
+ "name": "bafia"
+ },
+ "bm": {
+ "code": "bm",
+ "name": "bambarÅ¡Äina"
+ },
+ "bas": {
+ "code": "bas",
+ "name": "basa"
+ },
+ "eu": {
+ "code": "eu",
+ "name": "baskovÅ¡Äina"
+ },
+ "be": {
+ "code": "be",
+ "name": "beloruÅ¡Äina"
+ },
+ "bez": {
+ "code": "bez",
+ "name": "benajÅ¡Äina"
+ },
+ "bn": {
+ "code": "bn",
+ "name": "bengalÅ¡Äina"
+ },
+ "brx": {
+ "code": "brx",
+ "name": "bodojÅ¡Äina"
+ },
+ "bg": {
+ "code": "bg",
+ "name": "bolgarÅ¡Äina"
+ },
+ "bs": {
+ "code": "bs",
+ "name": "bosanÅ¡Äina"
+ },
+ "pt-BR": {
+ "code": "pt-BR",
+ "name": "brazilska portugalÅ¡Äina"
+ },
+ "br": {
+ "code": "br",
+ "name": "bretonÅ¡Äina"
+ },
+ "my": {
+ "code": "my",
+ "name": "burmanÅ¡Äina"
+ },
+ "ksh": {
+ "code": "ksh",
+ "name": "Colognian"
+ },
+ "chr": {
+ "code": "chr",
+ "name": "ÄerokeÅ¡Äina"
+ },
+ "cs": {
+ "code": "cs",
+ "name": "ÄeÅ¡Äina"
+ },
+ "cgg": {
+ "code": "cgg",
+ "name": "ÄigajÅ¡Äina"
+ },
+ "da": {
+ "code": "da",
+ "name": "danÅ¡Äina"
+ },
+ "dsb": {
+ "code": "dsb",
+ "name": "dolnja lužiÅ¡ka srbÅ¡Äina"
+ },
+ "dz": {
+ "code": "dz",
+ "name": "dzonka"
+ },
+ "ebu": {
+ "code": "ebu",
+ "name": "embujÅ¡Äina"
+ },
+ "es-MX": {
+ "code": "es-MX",
+ "name": "es_MX"
+ },
+ "eo": {
+ "code": "eo",
+ "name": "esperanto"
+ },
+ "et": {
+ "code": "et",
+ "name": "estonÅ¡Äina"
+ },
+ "ee": {
+ "code": "ee",
+ "name": "evenÅ¡Äina"
+ },
+ "ewo": {
+ "code": "ewo",
+ "name": "evondovÅ¡Äina"
+ },
+ "fo": {
+ "code": "fo",
+ "name": "ferÅ¡Äina"
+ },
+ "fil": {
+ "code": "fil",
+ "name": "filipinÅ¡Äina"
+ },
+ "fi": {
+ "code": "fi",
+ "name": "finÅ¡Äina"
+ },
+ "nl-BE": {
+ "code": "nl-BE",
+ "name": "flamÅ¡Äina"
+ },
+ "fr": {
+ "code": "fr",
+ "name": "francoÅ¡Äina"
+ },
+ "fy": {
+ "code": "fy",
+ "name": "frizijÅ¡Äina"
+ },
+ "ff": {
+ "code": "ff",
+ "name": "fulÅ¡Äina"
+ },
+ "fur": {
+ "code": "fur",
+ "name": "furlanÅ¡Äina"
+ },
+ "gl": {
+ "code": "gl",
+ "name": "galicijÅ¡Äina"
+ },
+ "lg": {
+ "code": "lg",
+ "name": "ganda"
+ },
+ "hsb": {
+ "code": "hsb",
+ "name": "gornja lužiÅ¡ka srbÅ¡Äina"
+ },
+ "kl": {
+ "code": "kl",
+ "name": "grenlandÅ¡Äina"
+ },
+ "el": {
+ "code": "el",
+ "name": "grÅ¡Äina"
+ },
+ "ka": {
+ "code": "ka",
+ "name": "gruzinÅ¡Äina"
+ },
+ "gu": {
+ "code": "gu",
+ "name": "gudžaratÅ¡Äina"
+ },
+ "guz": {
+ "code": "guz",
+ "name": "gusijÅ¡Äina"
+ },
+ "ha": {
+ "code": "ha",
+ "name": "havÅ¡Äina"
+ },
+ "he": {
+ "code": "he",
+ "name": "hebrejÅ¡Äina"
+ },
+ "hi": {
+ "code": "hi",
+ "name": "hindujÅ¡Äina"
+ },
+ "hr": {
+ "code": "hr",
+ "name": "hrvaÅ¡Äina"
+ },
+ "pt-PT": {
+ "code": "pt-PT",
+ "name": "iberska portugalÅ¡Äina"
+ },
+ "es-ES": {
+ "code": "es-ES",
+ "name": "iberska Å¡panÅ¡Äina"
+ },
+ "id": {
+ "code": "id",
+ "name": "indonezijÅ¡Äina"
+ },
+ "ga": {
+ "code": "ga",
+ "name": "irÅ¡Äina"
+ },
+ "is": {
+ "code": "is",
+ "name": "islandÅ¡Äina"
+ },
+ "it": {
+ "code": "it",
+ "name": "italijanÅ¡Äina"
+ },
+ "ja": {
+ "code": "ja",
+ "name": "japonÅ¡Äina"
+ },
+ "dyo": {
+ "code": "dyo",
+ "name": "jola-fonjiÅ¡Äina"
+ },
+ "yo": {
+ "code": "yo",
+ "name": "jorubÅ¡Äina"
+ },
+ "kab": {
+ "code": "kab",
+ "name": "kabilÅ¡Äina"
+ },
+ "kln": {
+ "code": "kln",
+ "name": "kalenjinÅ¡Äina"
+ },
+ "kam": {
+ "code": "kam",
+ "name": "kambaÅ¡Äina"
+ },
+ "kn": {
+ "code": "kn",
+ "name": "kanada"
+ },
+ "en-CA": {
+ "code": "en-CA",
+ "name": "kanadska angleÅ¡Äina"
+ },
+ "fr-CA": {
+ "code": "fr-CA",
+ "name": "kanadska francoÅ¡Äina"
+ },
+ "ks": {
+ "code": "ks",
+ "name": "kaÅ¡mirÅ¡Äina"
+ },
+ "ca": {
+ "code": "ca",
+ "name": "katalonÅ¡Äina"
+ },
+ "kk": {
+ "code": "kk",
+ "name": "kazaÅ¡Äina"
+ },
+ "naq": {
+ "code": "naq",
+ "name": "khoekhoe"
+ },
+ "ki": {
+ "code": "ki",
+ "name": "kikujÅ¡Äina"
+ },
+ "ky": {
+ "code": "ky",
+ "name": "kirgiÅ¡Äina"
+ },
+ "zh": {
+ "code": "zh",
+ "name": "kitajÅ¡Äina"
+ },
+ "km": {
+ "code": "km",
+ "name": "kmerÅ¡Äina"
+ },
+ "nb": {
+ "code": "nb",
+ "name": "knjižna norveÅ¡Äina"
+ },
+ "ko": {
+ "code": "ko",
+ "name": "korejÅ¡Äina"
+ },
+ "khq": {
+ "code": "khq",
+ "name": "koyra chiini"
+ },
+ "ses": {
+ "code": "ses",
+ "name": "koyraboro senni"
+ },
+ "nmg": {
+ "code": "nmg",
+ "name": "kwasio"
+ },
+ "lag": {
+ "code": "lag",
+ "name": "langijÅ¡Äina"
+ },
+ "lo": {
+ "code": "lo",
+ "name": "laoÅ¡Äina"
+ },
+ "lv": {
+ "code": "lv",
+ "name": "latvijÅ¡Äina"
+ },
+ "ln": {
+ "code": "ln",
+ "name": "lingala"
+ },
+ "lt": {
+ "code": "lt",
+ "name": "litovÅ¡Äina"
+ },
+ "lu": {
+ "code": "lu",
+ "name": "luba-katanga"
+ },
+ "luy": {
+ "code": "luy",
+ "name": "luhijÅ¡Äina"
+ },
+ "lb": {
+ "code": "lb",
+ "name": "luksemburÅ¡Äina"
+ },
+ "luo": {
+ "code": "luo",
+ "name": "Luo"
+ },
+ "jmc": {
+ "code": "jmc",
+ "name": "maÄamejÅ¡Äina"
+ },
+ "hu": {
+ "code": "hu",
+ "name": "madžarÅ¡Äina"
+ },
+ "mk": {
+ "code": "mk",
+ "name": "makedonÅ¡Äina"
+ },
+ "kde": {
+ "code": "kde",
+ "name": "makondÅ¡Äina"
+ },
+ "mgh": {
+ "code": "mgh",
+ "name": "makuva-meto"
+ },
+ "mg": {
+ "code": "mg",
+ "name": "malagaÅ¡Äina"
+ },
+ "ml": {
+ "code": "ml",
+ "name": "malajalamÅ¡Äina"
+ },
+ "ms": {
+ "code": "ms",
+ "name": "malajÅ¡Äina"
+ },
+ "mt": {
+ "code": "mt",
+ "name": "malteÅ¡Äina"
+ },
+ "mr": {
+ "code": "mr",
+ "name": "maratÅ¡Äina"
+ },
+ "mas": {
+ "code": "mas",
+ "name": "masajÅ¡Äina"
+ },
+ "mer": {
+ "code": "mer",
+ "name": "meru"
+ },
+ "ro-MD": {
+ "code": "ro-MD",
+ "name": "moldavÅ¡Äina"
+ },
+ "mn": {
+ "code": "mn",
+ "name": "mongolÅ¡Äina"
+ },
+ "mfe": {
+ "code": "mfe",
+ "name": "morisjenÅ¡Äina"
+ },
+ "mua": {
+ "code": "mua",
+ "name": "mundang"
+ },
+ "de": {
+ "code": "de",
+ "name": "nemÅ¡Äina"
+ },
+ "gsw": {
+ "code": "gsw",
+ "name": "nemÅ¡Äina (Å vica)"
+ },
+ "ne": {
+ "code": "ne",
+ "name": "nepalÅ¡Äina"
+ },
+ "jgo": {
+ "code": "jgo",
+ "name": "ngomba"
+ },
+ "nl": {
+ "code": "nl",
+ "name": "nizozemÅ¡Äina"
+ },
+ "nyn": {
+ "code": "nyn",
+ "name": "njankole"
+ },
+ "nn": {
+ "code": "nn",
+ "name": "novonorveÅ¡Äina"
+ },
+ "nus": {
+ "code": "nus",
+ "name": "nuerÅ¡Äina"
+ },
+ "or": {
+ "code": "or",
+ "name": "orijÅ¡Äina"
+ },
+ "pa": {
+ "code": "pa",
+ "name": "pandžabÅ¡Äina"
+ },
+ "ps": {
+ "code": "ps",
+ "name": "paÅ¡tunÅ¡Äina"
+ },
+ "fa": {
+ "code": "fa",
+ "name": "perzijÅ¡Äina"
+ },
+ "zh-Hans": {
+ "code": "zh-Hans",
+ "name": "poenostavljena kitajÅ¡Äina"
+ },
+ "pl": {
+ "code": "pl",
+ "name": "poljÅ¡Äina"
+ },
+ "pt": {
+ "code": "pt",
+ "name": "portugalÅ¡Äina"
+ },
+ "rm": {
+ "code": "rm",
+ "name": "retoromanÅ¡Äina"
+ },
+ "rof": {
+ "code": "rof",
+ "name": "rombo"
+ },
+ "ro": {
+ "code": "ro",
+ "name": "romunÅ¡Äina"
+ },
+ "rn": {
+ "code": "rn",
+ "name": "rundÅ¡Äina"
+ },
+ "ru": {
+ "code": "ru",
+ "name": "ruÅ¡Äina"
+ },
+ "rwk": {
+ "code": "rwk",
+ "name": "rwa"
+ },
+ "saq": {
+ "code": "saq",
+ "name": "samburÅ¡Äina"
+ },
+ "sg": {
+ "code": "sg",
+ "name": "sango"
+ },
+ "sbp": {
+ "code": "sbp",
+ "name": "sangujÅ¡Äina"
+ },
+ "seh": {
+ "code": "seh",
+ "name": "sena"
+ },
+ "nd": {
+ "code": "nd",
+ "name": "severna ndebelÅ¡Äina"
+ },
+ "se": {
+ "code": "se",
+ "name": "severna samijÅ¡Äina"
+ },
+ "ksb": {
+ "code": "ksb",
+ "name": "shambala"
+ },
+ "si": {
+ "code": "si",
+ "name": "singalÅ¡Äina"
+ },
+ "sk": {
+ "code": "sk",
+ "name": "slovaÅ¡Äina"
+ },
+ "sl": {
+ "code": "sl",
+ "name": "slovenÅ¡Äina"
+ },
+ "ar-001": {
+ "code": "ar-001",
+ "name": "sodobna standardna arabÅ¡Äina"
+ },
+ "xog": {
+ "code": "xog",
+ "name": "sogÅ¡Äina"
+ },
+ "so": {
+ "code": "so",
+ "name": "somalÅ¡Äina"
+ },
+ "sr": {
+ "code": "sr",
+ "name": "srbÅ¡Äina"
+ },
+ "zgh": {
+ "code": "zgh",
+ "name": "standardni maroški tamazig"
+ },
+ "sw": {
+ "code": "sw",
+ "name": "svahili"
+ },
+ "swc": {
+ "code": "swc",
+ "name": "svahili (Kongo)"
+ },
+ "gd": {
+ "code": "gd",
+ "name": "Å¡kotska gelÅ¡Äina"
+ },
+ "sn": {
+ "code": "sn",
+ "name": "Å¡onÅ¡Äina"
+ },
+ "es": {
+ "code": "es",
+ "name": "Å¡panÅ¡Äina"
+ },
+ "sv": {
+ "code": "sv",
+ "name": "Å¡vedÅ¡Äina"
+ },
+ "fr-CH": {
+ "code": "fr-CH",
+ "name": "Å¡vicarska francoÅ¡Äina"
+ },
+ "shi": {
+ "code": "shi",
+ "name": "tahelitska berberÅ¡Äina"
+ },
+ "dav": {
+ "code": "dav",
+ "name": "taitajÅ¡Äina"
+ },
+ "th": {
+ "code": "th",
+ "name": "tajÅ¡Äina"
+ },
+ "tzm": {
+ "code": "tzm",
+ "name": "tamašek (srednji atlas)"
+ },
+ "ta": {
+ "code": "ta",
+ "name": "tamilÅ¡Äina"
+ },
+ "twq": {
+ "code": "twq",
+ "name": "tasawaq"
+ },
+ "te": {
+ "code": "te",
+ "name": "telugijÅ¡Äina"
+ },
+ "teo": {
+ "code": "teo",
+ "name": "teso"
+ },
+ "bo": {
+ "code": "bo",
+ "name": "tibetanÅ¡Äina"
+ },
+ "ti": {
+ "code": "ti",
+ "name": "tigrajÅ¡Äina"
+ },
+ "to": {
+ "code": "to",
+ "name": "tongÅ¡Äina"
+ },
+ "zh-Hant": {
+ "code": "zh-Hant",
+ "name": "tradicionalna kitajÅ¡Äina"
+ },
+ "tr": {
+ "code": "tr",
+ "name": "turÅ¡Äina"
+ },
+ "ug": {
+ "code": "ug",
+ "name": "ujgurÅ¡Äina"
+ },
+ "uk": {
+ "code": "uk",
+ "name": "ukrajinÅ¡Äina"
+ },
+ "ur": {
+ "code": "ur",
+ "name": "urdujÅ¡Äina"
+ },
+ "uz": {
+ "code": "uz",
+ "name": "uzbeÅ¡Äina"
+ },
+ "vai": {
+ "code": "vai",
+ "name": "vajÅ¡Äina"
+ },
+ "cy": {
+ "code": "cy",
+ "name": "valižanÅ¡Äina"
+ },
+ "vi": {
+ "code": "vi",
+ "name": "vietnamÅ¡Äina"
+ },
+ "de-CH": {
+ "code": "de-CH",
+ "name": "visoka nemÅ¡Äina (Å vica)"
+ },
+ "vun": {
+ "code": "vun",
+ "name": "vunjo"
+ },
+ "wae": {
+ "code": "wae",
+ "name": "Walser"
+ },
+ "yav": {
+ "code": "yav",
+ "name": "Yangben"
+ },
+ "dje": {
+ "code": "dje",
+ "name": "zarmajÅ¡Äina"
+ },
+ "kea": {
+ "code": "kea",
+ "name": "zelenortskootoÅ¡ka kreolÅ¡Äina"
+ },
+ "zu": {
+ "code": "zu",
+ "name": "zulujÅ¡Äina"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/language/sn.json b/library/intl/resources/language/sn.json
new file mode 100644
index 000000000..253341e8b
--- /dev/null
+++ b/library/intl/resources/language/sn.json
@@ -0,0 +1,738 @@
+{
+ "af": {
+ "code": "af",
+ "name": "Afrikaans"
+ },
+ "agq": {
+ "code": "agq",
+ "name": "Aghem"
+ },
+ "sq": {
+ "code": "sq",
+ "name": "Albanian"
+ },
+ "ar-001": {
+ "code": "ar-001",
+ "name": "ar_001"
+ },
+ "hy": {
+ "code": "hy",
+ "name": "Armenian"
+ },
+ "ast": {
+ "code": "ast",
+ "name": "Asturian"
+ },
+ "asa": {
+ "code": "asa",
+ "name": "Asu"
+ },
+ "az": {
+ "code": "az",
+ "name": "Azerbaijani"
+ },
+ "ksf": {
+ "code": "ksf",
+ "name": "Bafia"
+ },
+ "bm": {
+ "code": "bm",
+ "name": "Bambara"
+ },
+ "bas": {
+ "code": "bas",
+ "name": "Basaa"
+ },
+ "eu": {
+ "code": "eu",
+ "name": "Basque"
+ },
+ "bez": {
+ "code": "bez",
+ "name": "Bena"
+ },
+ "brx": {
+ "code": "brx",
+ "name": "Bodo"
+ },
+ "bs": {
+ "code": "bs",
+ "name": "Bosnian"
+ },
+ "br": {
+ "code": "br",
+ "name": "Breton"
+ },
+ "ca": {
+ "code": "ca",
+ "name": "Catalan"
+ },
+ "tzm": {
+ "code": "tzm",
+ "name": "Central Atlas Tamazight"
+ },
+ "chr": {
+ "code": "chr",
+ "name": "Cherokee"
+ },
+ "ak": {
+ "code": "ak",
+ "name": "chiAkani"
+ },
+ "am": {
+ "code": "am",
+ "name": "chiAmaric"
+ },
+ "ar": {
+ "code": "ar",
+ "name": "chiArabu"
+ },
+ "be": {
+ "code": "be",
+ "name": "chiBelarusi"
+ },
+ "bn": {
+ "code": "bn",
+ "name": "chiBengali"
+ },
+ "bg": {
+ "code": "bg",
+ "name": "chiBulgarian"
+ },
+ "my": {
+ "code": "my",
+ "name": "chiBurma"
+ },
+ "zh": {
+ "code": "zh",
+ "name": "chiChinese"
+ },
+ "cs": {
+ "code": "cs",
+ "name": "chiCzech"
+ },
+ "nl": {
+ "code": "nl",
+ "name": "chiDutch"
+ },
+ "fr": {
+ "code": "fr",
+ "name": "chiFurenchi"
+ },
+ "cgg": {
+ "code": "cgg",
+ "name": "Chiga"
+ },
+ "el": {
+ "code": "el",
+ "name": "chiGreek"
+ },
+ "ha": {
+ "code": "ha",
+ "name": "chiHausa"
+ },
+ "hi": {
+ "code": "hi",
+ "name": "chiHindi"
+ },
+ "hu": {
+ "code": "hu",
+ "name": "chiHungari"
+ },
+ "id": {
+ "code": "id",
+ "name": "chiIndonesia"
+ },
+ "ja": {
+ "code": "ja",
+ "name": "chiJapani"
+ },
+ "de": {
+ "code": "de",
+ "name": "chiJerimani"
+ },
+ "km": {
+ "code": "km",
+ "name": "chiKhema"
+ },
+ "ko": {
+ "code": "ko",
+ "name": "chiKoria"
+ },
+ "ms": {
+ "code": "ms",
+ "name": "chiMalay"
+ },
+ "ne": {
+ "code": "ne",
+ "name": "chiNepali"
+ },
+ "fa": {
+ "code": "fa",
+ "name": "chiPeshiya"
+ },
+ "pl": {
+ "code": "pl",
+ "name": "chiPolish"
+ },
+ "pa": {
+ "code": "pa",
+ "name": "chiPunjabi"
+ },
+ "pt": {
+ "code": "pt",
+ "name": "chiPutukezi"
+ },
+ "ru": {
+ "code": "ru",
+ "name": "chiRashiya"
+ },
+ "ro": {
+ "code": "ro",
+ "name": "chiRomanian"
+ },
+ "en": {
+ "code": "en",
+ "name": "Chirungu"
+ },
+ "sn": {
+ "code": "sn",
+ "name": "chiShona"
+ },
+ "so": {
+ "code": "so",
+ "name": "chiSomali"
+ },
+ "es": {
+ "code": "es",
+ "name": "chiSpanish"
+ },
+ "sv": {
+ "code": "sv",
+ "name": "chiSwedish"
+ },
+ "ta": {
+ "code": "ta",
+ "name": "chiTamil"
+ },
+ "it": {
+ "code": "it",
+ "name": "chiTariana"
+ },
+ "th": {
+ "code": "th",
+ "name": "chiThai"
+ },
+ "tr": {
+ "code": "tr",
+ "name": "chiTurkish"
+ },
+ "uk": {
+ "code": "uk",
+ "name": "chiUkrenia"
+ },
+ "ur": {
+ "code": "ur",
+ "name": "chiUrdu"
+ },
+ "vi": {
+ "code": "vi",
+ "name": "chiVietnam"
+ },
+ "yo": {
+ "code": "yo",
+ "name": "chiYoruba"
+ },
+ "zu": {
+ "code": "zu",
+ "name": "chiZulu"
+ },
+ "ksh": {
+ "code": "ksh",
+ "name": "Colognian"
+ },
+ "swc": {
+ "code": "swc",
+ "name": "Congo Swahili"
+ },
+ "hr": {
+ "code": "hr",
+ "name": "Croatian"
+ },
+ "da": {
+ "code": "da",
+ "name": "Danish"
+ },
+ "de-AT": {
+ "code": "de-AT",
+ "name": "de_AT"
+ },
+ "de-CH": {
+ "code": "de-CH",
+ "name": "de_CH"
+ },
+ "dz": {
+ "code": "dz",
+ "name": "Dzongkha"
+ },
+ "ebu": {
+ "code": "ebu",
+ "name": "Embu"
+ },
+ "en-AU": {
+ "code": "en-AU",
+ "name": "en_AU"
+ },
+ "en-CA": {
+ "code": "en-CA",
+ "name": "en_CA"
+ },
+ "en-GB": {
+ "code": "en-GB",
+ "name": "en_GB"
+ },
+ "en-US": {
+ "code": "en-US",
+ "name": "en_US"
+ },
+ "es-ES": {
+ "code": "es-ES",
+ "name": "es_ES"
+ },
+ "es-MX": {
+ "code": "es-MX",
+ "name": "es_MX"
+ },
+ "eo": {
+ "code": "eo",
+ "name": "Esperanto"
+ },
+ "et": {
+ "code": "et",
+ "name": "Estonian"
+ },
+ "ee": {
+ "code": "ee",
+ "name": "Ewe"
+ },
+ "ewo": {
+ "code": "ewo",
+ "name": "Ewondo"
+ },
+ "fo": {
+ "code": "fo",
+ "name": "Faroese"
+ },
+ "fil": {
+ "code": "fil",
+ "name": "Filipino"
+ },
+ "fi": {
+ "code": "fi",
+ "name": "Finnish"
+ },
+ "fr-CA": {
+ "code": "fr-CA",
+ "name": "fr_CA"
+ },
+ "fr-CH": {
+ "code": "fr-CH",
+ "name": "fr_CH"
+ },
+ "fur": {
+ "code": "fur",
+ "name": "Friulian"
+ },
+ "ff": {
+ "code": "ff",
+ "name": "Fulah"
+ },
+ "gl": {
+ "code": "gl",
+ "name": "Galician"
+ },
+ "lg": {
+ "code": "lg",
+ "name": "Ganda"
+ },
+ "ka": {
+ "code": "ka",
+ "name": "Georgian"
+ },
+ "gu": {
+ "code": "gu",
+ "name": "Gujarati"
+ },
+ "guz": {
+ "code": "guz",
+ "name": "Gusii"
+ },
+ "he": {
+ "code": "he",
+ "name": "Hebrew"
+ },
+ "is": {
+ "code": "is",
+ "name": "Icelandic"
+ },
+ "ga": {
+ "code": "ga",
+ "name": "Irish"
+ },
+ "dyo": {
+ "code": "dyo",
+ "name": "Jola-Fonyi"
+ },
+ "kea": {
+ "code": "kea",
+ "name": "Kabuverdianu"
+ },
+ "kab": {
+ "code": "kab",
+ "name": "Kabyle"
+ },
+ "kl": {
+ "code": "kl",
+ "name": "Kalaallisut"
+ },
+ "kln": {
+ "code": "kln",
+ "name": "Kalenjin"
+ },
+ "kam": {
+ "code": "kam",
+ "name": "Kamba"
+ },
+ "kn": {
+ "code": "kn",
+ "name": "Kannada"
+ },
+ "ks": {
+ "code": "ks",
+ "name": "Kashmiri"
+ },
+ "kk": {
+ "code": "kk",
+ "name": "Kazakh"
+ },
+ "ki": {
+ "code": "ki",
+ "name": "Kikuyu"
+ },
+ "khq": {
+ "code": "khq",
+ "name": "Koyra Chiini"
+ },
+ "ses": {
+ "code": "ses",
+ "name": "Koyraboro Senni"
+ },
+ "nmg": {
+ "code": "nmg",
+ "name": "Kwasio"
+ },
+ "ky": {
+ "code": "ky",
+ "name": "Kyrgyz"
+ },
+ "lag": {
+ "code": "lag",
+ "name": "Langi"
+ },
+ "lo": {
+ "code": "lo",
+ "name": "Lao"
+ },
+ "lv": {
+ "code": "lv",
+ "name": "Latvian"
+ },
+ "ln": {
+ "code": "ln",
+ "name": "Lingala"
+ },
+ "lt": {
+ "code": "lt",
+ "name": "Lithuanian"
+ },
+ "dsb": {
+ "code": "dsb",
+ "name": "Lower Sorbian"
+ },
+ "lu": {
+ "code": "lu",
+ "name": "Luba-Katanga"
+ },
+ "luo": {
+ "code": "luo",
+ "name": "Luo"
+ },
+ "lb": {
+ "code": "lb",
+ "name": "Luxembourgish"
+ },
+ "luy": {
+ "code": "luy",
+ "name": "Luyia"
+ },
+ "mk": {
+ "code": "mk",
+ "name": "Macedonian"
+ },
+ "jmc": {
+ "code": "jmc",
+ "name": "Machame"
+ },
+ "mgh": {
+ "code": "mgh",
+ "name": "Makhuwa-Meetto"
+ },
+ "kde": {
+ "code": "kde",
+ "name": "Makonde"
+ },
+ "mg": {
+ "code": "mg",
+ "name": "Malagasy"
+ },
+ "ml": {
+ "code": "ml",
+ "name": "Malayalam"
+ },
+ "mt": {
+ "code": "mt",
+ "name": "Maltese"
+ },
+ "mr": {
+ "code": "mr",
+ "name": "Marathi"
+ },
+ "mas": {
+ "code": "mas",
+ "name": "Masai"
+ },
+ "mer": {
+ "code": "mer",
+ "name": "Meru"
+ },
+ "mn": {
+ "code": "mn",
+ "name": "Mongolian"
+ },
+ "mfe": {
+ "code": "mfe",
+ "name": "Morisyen"
+ },
+ "mua": {
+ "code": "mua",
+ "name": "Mundang"
+ },
+ "naq": {
+ "code": "naq",
+ "name": "Nama"
+ },
+ "jgo": {
+ "code": "jgo",
+ "name": "Ngomba"
+ },
+ "nl-BE": {
+ "code": "nl-BE",
+ "name": "nl_BE"
+ },
+ "nd": {
+ "code": "nd",
+ "name": "North Ndebele"
+ },
+ "se": {
+ "code": "se",
+ "name": "Northern Sami"
+ },
+ "nb": {
+ "code": "nb",
+ "name": "Norwegian Bokmål"
+ },
+ "nn": {
+ "code": "nn",
+ "name": "Norwegian Nynorsk"
+ },
+ "nus": {
+ "code": "nus",
+ "name": "Nuer"
+ },
+ "nyn": {
+ "code": "nyn",
+ "name": "Nyankole"
+ },
+ "or": {
+ "code": "or",
+ "name": "Oriya"
+ },
+ "ps": {
+ "code": "ps",
+ "name": "Pashto"
+ },
+ "pt-BR": {
+ "code": "pt-BR",
+ "name": "pt_BR"
+ },
+ "pt-PT": {
+ "code": "pt-PT",
+ "name": "pt_PT"
+ },
+ "ro-MD": {
+ "code": "ro-MD",
+ "name": "ro_MD"
+ },
+ "rm": {
+ "code": "rm",
+ "name": "Romansh"
+ },
+ "rof": {
+ "code": "rof",
+ "name": "Rombo"
+ },
+ "rn": {
+ "code": "rn",
+ "name": "Rundi"
+ },
+ "rwk": {
+ "code": "rwk",
+ "name": "Rwa"
+ },
+ "saq": {
+ "code": "saq",
+ "name": "Samburu"
+ },
+ "sg": {
+ "code": "sg",
+ "name": "Sango"
+ },
+ "sbp": {
+ "code": "sbp",
+ "name": "Sangu"
+ },
+ "gd": {
+ "code": "gd",
+ "name": "Scottish Gaelic"
+ },
+ "seh": {
+ "code": "seh",
+ "name": "Sena"
+ },
+ "sr": {
+ "code": "sr",
+ "name": "Serbian"
+ },
+ "ksb": {
+ "code": "ksb",
+ "name": "Shambala"
+ },
+ "si": {
+ "code": "si",
+ "name": "Sinhala"
+ },
+ "sk": {
+ "code": "sk",
+ "name": "Slovak"
+ },
+ "sl": {
+ "code": "sl",
+ "name": "Slovenian"
+ },
+ "xog": {
+ "code": "xog",
+ "name": "Soga"
+ },
+ "zgh": {
+ "code": "zgh",
+ "name": "Standard Moroccan Tamazight"
+ },
+ "sw": {
+ "code": "sw",
+ "name": "Swahili"
+ },
+ "gsw": {
+ "code": "gsw",
+ "name": "Swiss German"
+ },
+ "shi": {
+ "code": "shi",
+ "name": "Tachelhit"
+ },
+ "dav": {
+ "code": "dav",
+ "name": "Taita"
+ },
+ "twq": {
+ "code": "twq",
+ "name": "Tasawaq"
+ },
+ "te": {
+ "code": "te",
+ "name": "Telugu"
+ },
+ "teo": {
+ "code": "teo",
+ "name": "Teso"
+ },
+ "bo": {
+ "code": "bo",
+ "name": "Tibetan"
+ },
+ "ti": {
+ "code": "ti",
+ "name": "Tigrinya"
+ },
+ "to": {
+ "code": "to",
+ "name": "Tongan"
+ },
+ "hsb": {
+ "code": "hsb",
+ "name": "Upper Sorbian"
+ },
+ "ug": {
+ "code": "ug",
+ "name": "Uyghur"
+ },
+ "uz": {
+ "code": "uz",
+ "name": "Uzbek"
+ },
+ "vai": {
+ "code": "vai",
+ "name": "Vai"
+ },
+ "vun": {
+ "code": "vun",
+ "name": "Vunjo"
+ },
+ "wae": {
+ "code": "wae",
+ "name": "Walser"
+ },
+ "cy": {
+ "code": "cy",
+ "name": "Welsh"
+ },
+ "fy": {
+ "code": "fy",
+ "name": "Western Frisian"
+ },
+ "yav": {
+ "code": "yav",
+ "name": "Yangben"
+ },
+ "dje": {
+ "code": "dje",
+ "name": "Zarma"
+ },
+ "zh-Hans": {
+ "code": "zh-Hans",
+ "name": "zh_Hans"
+ },
+ "zh-Hant": {
+ "code": "zh-Hant",
+ "name": "zh_Hant"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/language/so.json b/library/intl/resources/language/so.json
new file mode 100644
index 000000000..a62759c15
--- /dev/null
+++ b/library/intl/resources/language/so.json
@@ -0,0 +1,738 @@
+{
+ "af": {
+ "code": "af",
+ "name": "Afrikaanays"
+ },
+ "agq": {
+ "code": "agq",
+ "name": "Aghem"
+ },
+ "ak": {
+ "code": "ak",
+ "name": "Akan"
+ },
+ "sq": {
+ "code": "sq",
+ "name": "Albaaniyaan"
+ },
+ "ar-001": {
+ "code": "ar-001",
+ "name": "ar_001"
+ },
+ "hy": {
+ "code": "hy",
+ "name": "Armeeniyaan"
+ },
+ "ast": {
+ "code": "ast",
+ "name": "Asturian"
+ },
+ "asa": {
+ "code": "asa",
+ "name": "Asu"
+ },
+ "am": {
+ "code": "am",
+ "name": "Axmaari"
+ },
+ "ga": {
+ "code": "ga",
+ "name": "Ayrish"
+ },
+ "is": {
+ "code": "is",
+ "name": "Ayslandays"
+ },
+ "az": {
+ "code": "az",
+ "name": "Azerbaijan"
+ },
+ "ksf": {
+ "code": "ksf",
+ "name": "Bafia"
+ },
+ "bm": {
+ "code": "bm",
+ "name": "Bambara"
+ },
+ "bn": {
+ "code": "bn",
+ "name": "Bangaali"
+ },
+ "bas": {
+ "code": "bas",
+ "name": "Basaa"
+ },
+ "ps": {
+ "code": "ps",
+ "name": "Bashtuu"
+ },
+ "eu": {
+ "code": "eu",
+ "name": "Basquu"
+ },
+ "be": {
+ "code": "be",
+ "name": "Beleruusiyaan"
+ },
+ "bez": {
+ "code": "bez",
+ "name": "Bena"
+ },
+ "br": {
+ "code": "br",
+ "name": "Bereton"
+ },
+ "brx": {
+ "code": "brx",
+ "name": "Bodo"
+ },
+ "pl": {
+ "code": "pl",
+ "name": "Boolish"
+ },
+ "pt": {
+ "code": "pt",
+ "name": "Boortaqiis"
+ },
+ "pt-PT": {
+ "code": "pt-PT",
+ "name": "Boortaqiis (Boortuqaal)"
+ },
+ "pt-BR": {
+ "code": "pt-BR",
+ "name": "Boortaqiiska Baraasiil"
+ },
+ "bs": {
+ "code": "bs",
+ "name": "Boosniya"
+ },
+ "bg": {
+ "code": "bg",
+ "name": "Bulgeeriyaan"
+ },
+ "pa": {
+ "code": "pa",
+ "name": "Bunjaabi"
+ },
+ "my": {
+ "code": "my",
+ "name": "Burmese"
+ },
+ "ar": {
+ "code": "ar",
+ "name": "Carabi"
+ },
+ "tzm": {
+ "code": "tzm",
+ "name": "Central Atlas Tamazight"
+ },
+ "chr": {
+ "code": "chr",
+ "name": "Cherokee"
+ },
+ "cgg": {
+ "code": "cgg",
+ "name": "Chiga"
+ },
+ "he": {
+ "code": "he",
+ "name": "Cibri"
+ },
+ "ksh": {
+ "code": "ksh",
+ "name": "Colognian"
+ },
+ "swc": {
+ "code": "swc",
+ "name": "Congo Swahili"
+ },
+ "da": {
+ "code": "da",
+ "name": "Danmarkays"
+ },
+ "de-AT": {
+ "code": "de-AT",
+ "name": "de_AT"
+ },
+ "dz": {
+ "code": "dz",
+ "name": "Dzongkha"
+ },
+ "ebu": {
+ "code": "ebu",
+ "name": "Embu"
+ },
+ "en-AU": {
+ "code": "en-AU",
+ "name": "en_AU"
+ },
+ "en-CA": {
+ "code": "en-CA",
+ "name": "en_CA"
+ },
+ "es-MX": {
+ "code": "es-MX",
+ "name": "es_MX"
+ },
+ "ee": {
+ "code": "ee",
+ "name": "Ewe"
+ },
+ "ewo": {
+ "code": "ewo",
+ "name": "Ewondo"
+ },
+ "fa": {
+ "code": "fa",
+ "name": "Faarisi"
+ },
+ "fr": {
+ "code": "fr",
+ "name": "Faransiis"
+ },
+ "fr-CH": {
+ "code": "fr-CH",
+ "name": "Faransiis (Iswiiserlaand)"
+ },
+ "fo": {
+ "code": "fo",
+ "name": "Farowsi"
+ },
+ "fi": {
+ "code": "fi",
+ "name": "Fiinlaandees"
+ },
+ "vi": {
+ "code": "vi",
+ "name": "Fiitnaamays"
+ },
+ "fy": {
+ "code": "fy",
+ "name": "Firiisiyan Galbeed"
+ },
+ "fr-CA": {
+ "code": "fr-CA",
+ "name": "fr_CA"
+ },
+ "fur": {
+ "code": "fur",
+ "name": "Friulian"
+ },
+ "ff": {
+ "code": "ff",
+ "name": "Fulah"
+ },
+ "gl": {
+ "code": "gl",
+ "name": "Galiisiyaan"
+ },
+ "lg": {
+ "code": "lg",
+ "name": "Ganda"
+ },
+ "el": {
+ "code": "el",
+ "name": "Giriik"
+ },
+ "gu": {
+ "code": "gu",
+ "name": "Gujaraati"
+ },
+ "guz": {
+ "code": "guz",
+ "name": "Gusii"
+ },
+ "hu": {
+ "code": "hu",
+ "name": "Hangariyaan"
+ },
+ "ha": {
+ "code": "ha",
+ "name": "Hawsa"
+ },
+ "hi": {
+ "code": "hi",
+ "name": "Hindi"
+ },
+ "nl": {
+ "code": "nl",
+ "name": "Holandays"
+ },
+ "id": {
+ "code": "id",
+ "name": "Indunuusiyaan"
+ },
+ "en": {
+ "code": "en",
+ "name": "Ingiriisi"
+ },
+ "en-GB": {
+ "code": "en-GB",
+ "name": "Ingiriisi (Boqortooyada Midowday)"
+ },
+ "en-US": {
+ "code": "en-US",
+ "name": "Ingiriisi (Maraykan)"
+ },
+ "es": {
+ "code": "es",
+ "name": "Isbaanish"
+ },
+ "es-ES": {
+ "code": "es-ES",
+ "name": "Isbaanish (Isbayn)"
+ },
+ "eo": {
+ "code": "eo",
+ "name": "Isberento"
+ },
+ "gd": {
+ "code": "gd",
+ "name": "Iskot Giilik"
+ },
+ "sl": {
+ "code": "sl",
+ "name": "Islofeeniyaan"
+ },
+ "sk": {
+ "code": "sk",
+ "name": "Isloofaak"
+ },
+ "et": {
+ "code": "et",
+ "name": "Istooniyaan"
+ },
+ "ja": {
+ "code": "ja",
+ "name": "Jabbaaniis"
+ },
+ "de": {
+ "code": "de",
+ "name": "Jarmal"
+ },
+ "de-CH": {
+ "code": "de-CH",
+ "name": "Jarmal (Iswiiserlaand)"
+ },
+ "zh": {
+ "code": "zh",
+ "name": "Jayniis"
+ },
+ "cs": {
+ "code": "cs",
+ "name": "Jeeg"
+ },
+ "dyo": {
+ "code": "dyo",
+ "name": "Jola-Fonyi"
+ },
+ "ka": {
+ "code": "ka",
+ "name": "Joorijiyaan"
+ },
+ "kea": {
+ "code": "kea",
+ "name": "Kabuverdianu"
+ },
+ "kab": {
+ "code": "kab",
+ "name": "Kabyle"
+ },
+ "kl": {
+ "code": "kl",
+ "name": "Kalaallisut"
+ },
+ "kln": {
+ "code": "kln",
+ "name": "Kalenjin"
+ },
+ "kam": {
+ "code": "kam",
+ "name": "Kamba"
+ },
+ "km": {
+ "code": "km",
+ "name": "Kamboodhian"
+ },
+ "kn": {
+ "code": "kn",
+ "name": "Kannadays"
+ },
+ "ks": {
+ "code": "ks",
+ "name": "Kashmiri"
+ },
+ "ca": {
+ "code": "ca",
+ "name": "Katalaan"
+ },
+ "kk": {
+ "code": "kk",
+ "name": "Kazakh"
+ },
+ "ki": {
+ "code": "ki",
+ "name": "Kikuyu"
+ },
+ "ky": {
+ "code": "ky",
+ "name": "Kirgiis"
+ },
+ "hr": {
+ "code": "hr",
+ "name": "Koro’eeshiyaan"
+ },
+ "khq": {
+ "code": "khq",
+ "name": "Koyra Chiini"
+ },
+ "ses": {
+ "code": "ses",
+ "name": "Koyraboro Senni"
+ },
+ "ko": {
+ "code": "ko",
+ "name": "Kuuriyaan"
+ },
+ "nmg": {
+ "code": "nmg",
+ "name": "Kwasio"
+ },
+ "lv": {
+ "code": "lv",
+ "name": "Laatfiyaan"
+ },
+ "lag": {
+ "code": "lag",
+ "name": "Langi"
+ },
+ "lo": {
+ "code": "lo",
+ "name": "Laothian"
+ },
+ "ln": {
+ "code": "ln",
+ "name": "Lingala"
+ },
+ "lt": {
+ "code": "lt",
+ "name": "Lituwaanays"
+ },
+ "dsb": {
+ "code": "dsb",
+ "name": "Lower Sorbian"
+ },
+ "lu": {
+ "code": "lu",
+ "name": "Luba-Katanga"
+ },
+ "luo": {
+ "code": "luo",
+ "name": "Luo"
+ },
+ "lb": {
+ "code": "lb",
+ "name": "Luxembourgish"
+ },
+ "luy": {
+ "code": "luy",
+ "name": "Luyia"
+ },
+ "mr": {
+ "code": "mr",
+ "name": "Maarati"
+ },
+ "jmc": {
+ "code": "jmc",
+ "name": "Machame"
+ },
+ "mgh": {
+ "code": "mgh",
+ "name": "Makhuwa-Meetto"
+ },
+ "kde": {
+ "code": "kde",
+ "name": "Makonde"
+ },
+ "ms": {
+ "code": "ms",
+ "name": "Malaay"
+ },
+ "mg": {
+ "code": "mg",
+ "name": "Malagasy"
+ },
+ "ml": {
+ "code": "ml",
+ "name": "Malayalam"
+ },
+ "mt": {
+ "code": "mt",
+ "name": "Maltiis"
+ },
+ "mn": {
+ "code": "mn",
+ "name": "Mangooli"
+ },
+ "mk": {
+ "code": "mk",
+ "name": "Masadooniyaan"
+ },
+ "mas": {
+ "code": "mas",
+ "name": "Masai"
+ },
+ "mer": {
+ "code": "mer",
+ "name": "Meru"
+ },
+ "mfe": {
+ "code": "mfe",
+ "name": "Morisyen"
+ },
+ "mua": {
+ "code": "mua",
+ "name": "Mundang"
+ },
+ "naq": {
+ "code": "naq",
+ "name": "Nama"
+ },
+ "ne": {
+ "code": "ne",
+ "name": "Nebaali"
+ },
+ "jgo": {
+ "code": "jgo",
+ "name": "Ngomba"
+ },
+ "nl-BE": {
+ "code": "nl-BE",
+ "name": "nl_BE"
+ },
+ "nd": {
+ "code": "nd",
+ "name": "North Ndebele"
+ },
+ "se": {
+ "code": "se",
+ "name": "Northern Sami"
+ },
+ "nb": {
+ "code": "nb",
+ "name": "Norwegian Bokmål"
+ },
+ "nn": {
+ "code": "nn",
+ "name": "Nowrwejiyan (naynoroski)"
+ },
+ "nus": {
+ "code": "nus",
+ "name": "Nuer"
+ },
+ "nyn": {
+ "code": "nyn",
+ "name": "Nyankole"
+ },
+ "or": {
+ "code": "or",
+ "name": "Oriya"
+ },
+ "ro-MD": {
+ "code": "ro-MD",
+ "name": "ro_MD"
+ },
+ "ro": {
+ "code": "ro",
+ "name": "Romanka"
+ },
+ "rm": {
+ "code": "rm",
+ "name": "Romansh"
+ },
+ "rof": {
+ "code": "rof",
+ "name": "Rombo"
+ },
+ "rn": {
+ "code": "rn",
+ "name": "Rundi"
+ },
+ "ru": {
+ "code": "ru",
+ "name": "Ruush"
+ },
+ "rwk": {
+ "code": "rwk",
+ "name": "Rwa"
+ },
+ "saq": {
+ "code": "saq",
+ "name": "Samburu"
+ },
+ "sg": {
+ "code": "sg",
+ "name": "Sango"
+ },
+ "sbp": {
+ "code": "sbp",
+ "name": "Sangu"
+ },
+ "sw": {
+ "code": "sw",
+ "name": "Sawaaxili"
+ },
+ "sr": {
+ "code": "sr",
+ "name": "Seerbiyaan"
+ },
+ "seh": {
+ "code": "seh",
+ "name": "Sena"
+ },
+ "ksb": {
+ "code": "ksb",
+ "name": "Shambala"
+ },
+ "sn": {
+ "code": "sn",
+ "name": "Shona"
+ },
+ "si": {
+ "code": "si",
+ "name": "Sinhaleys"
+ },
+ "xog": {
+ "code": "xog",
+ "name": "Soga"
+ },
+ "so": {
+ "code": "so",
+ "name": "Soomaali"
+ },
+ "zgh": {
+ "code": "zgh",
+ "name": "Standard Moroccan Tamazight"
+ },
+ "sv": {
+ "code": "sv",
+ "name": "Swiidhis"
+ },
+ "gsw": {
+ "code": "gsw",
+ "name": "Swiss German"
+ },
+ "th": {
+ "code": "th",
+ "name": "Taaylandays"
+ },
+ "shi": {
+ "code": "shi",
+ "name": "Tachelhit"
+ },
+ "fil": {
+ "code": "fil",
+ "name": "Tagalog"
+ },
+ "dav": {
+ "code": "dav",
+ "name": "Taita"
+ },
+ "it": {
+ "code": "it",
+ "name": "Talyaani"
+ },
+ "ta": {
+ "code": "ta",
+ "name": "Tamiil"
+ },
+ "twq": {
+ "code": "twq",
+ "name": "Tasawaq"
+ },
+ "te": {
+ "code": "te",
+ "name": "Teluugu"
+ },
+ "teo": {
+ "code": "teo",
+ "name": "Teso"
+ },
+ "bo": {
+ "code": "bo",
+ "name": "Tibetan"
+ },
+ "ti": {
+ "code": "ti",
+ "name": "Tigrinya"
+ },
+ "to": {
+ "code": "to",
+ "name": "Tongan"
+ },
+ "tr": {
+ "code": "tr",
+ "name": "Turkish"
+ },
+ "ug": {
+ "code": "ug",
+ "name": "UIGHUR"
+ },
+ "hsb": {
+ "code": "hsb",
+ "name": "Upper Sorbian"
+ },
+ "ur": {
+ "code": "ur",
+ "name": "Urduu"
+ },
+ "uz": {
+ "code": "uz",
+ "name": "Usbakis"
+ },
+ "vai": {
+ "code": "vai",
+ "name": "Vai"
+ },
+ "vun": {
+ "code": "vun",
+ "name": "Vunjo"
+ },
+ "wae": {
+ "code": "wae",
+ "name": "Walser"
+ },
+ "cy": {
+ "code": "cy",
+ "name": "Welsh"
+ },
+ "yav": {
+ "code": "yav",
+ "name": "Yangben"
+ },
+ "yo": {
+ "code": "yo",
+ "name": "Yoruuba"
+ },
+ "uk": {
+ "code": "uk",
+ "name": "Yukreeniyaan"
+ },
+ "dje": {
+ "code": "dje",
+ "name": "Zarma"
+ },
+ "zh-Hans": {
+ "code": "zh-Hans",
+ "name": "zh_Hans"
+ },
+ "zh-Hant": {
+ "code": "zh-Hant",
+ "name": "zh_Hant"
+ },
+ "zu": {
+ "code": "zu",
+ "name": "Zuulu"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/language/sq.json b/library/intl/resources/language/sq.json
new file mode 100644
index 000000000..802db1180
--- /dev/null
+++ b/library/intl/resources/language/sq.json
@@ -0,0 +1,738 @@
+{
+ "af": {
+ "code": "af",
+ "name": "afrikanisht"
+ },
+ "agq": {
+ "code": "agq",
+ "name": "agemisht"
+ },
+ "ak": {
+ "code": "ak",
+ "name": "akanisht"
+ },
+ "am": {
+ "code": "am",
+ "name": "amarike"
+ },
+ "en": {
+ "code": "en",
+ "name": "anglisht"
+ },
+ "en-US": {
+ "code": "en-US",
+ "name": "anglishte amerikane"
+ },
+ "en-AU": {
+ "code": "en-AU",
+ "name": "anglishte australiane"
+ },
+ "en-GB": {
+ "code": "en-GB",
+ "name": "anglishte britanike"
+ },
+ "en-CA": {
+ "code": "en-CA",
+ "name": "anglishte kanadeze"
+ },
+ "ar": {
+ "code": "ar",
+ "name": "arabisht"
+ },
+ "ar-001": {
+ "code": "ar-001",
+ "name": "arabishte standarde moderne"
+ },
+ "hy": {
+ "code": "hy",
+ "name": "armenisht"
+ },
+ "ast": {
+ "code": "ast",
+ "name": "Asturian"
+ },
+ "asa": {
+ "code": "asa",
+ "name": "asuisht"
+ },
+ "az": {
+ "code": "az",
+ "name": "azere"
+ },
+ "ksf": {
+ "code": "ksf",
+ "name": "bafianisht"
+ },
+ "bm": {
+ "code": "bm",
+ "name": "bambara"
+ },
+ "bas": {
+ "code": "bas",
+ "name": "Basaa"
+ },
+ "eu": {
+ "code": "eu",
+ "name": "baskisht"
+ },
+ "bez": {
+ "code": "bez",
+ "name": "bena"
+ },
+ "bn": {
+ "code": "bn",
+ "name": "bengalisht"
+ },
+ "my": {
+ "code": "my",
+ "name": "birmanisht"
+ },
+ "be": {
+ "code": "be",
+ "name": "bjellorusisht"
+ },
+ "brx": {
+ "code": "brx",
+ "name": "bodo"
+ },
+ "nb": {
+ "code": "nb",
+ "name": "bokmalishte norvegjeze"
+ },
+ "bs": {
+ "code": "bs",
+ "name": "boshnjakisht"
+ },
+ "br": {
+ "code": "br",
+ "name": "bretone"
+ },
+ "bg": {
+ "code": "bg",
+ "name": "bullgarisht"
+ },
+ "ksh": {
+ "code": "ksh",
+ "name": "Colognian"
+ },
+ "cs": {
+ "code": "cs",
+ "name": "çekisht"
+ },
+ "chr": {
+ "code": "chr",
+ "name": "çeroki"
+ },
+ "cgg": {
+ "code": "cgg",
+ "name": "çigisht"
+ },
+ "da": {
+ "code": "da",
+ "name": "danisht"
+ },
+ "ebu": {
+ "code": "ebu",
+ "name": "embuisht"
+ },
+ "eo": {
+ "code": "eo",
+ "name": "esperanto"
+ },
+ "et": {
+ "code": "et",
+ "name": "estonisht"
+ },
+ "ewo": {
+ "code": "ewo",
+ "name": "Ewondo"
+ },
+ "fo": {
+ "code": "fo",
+ "name": "faroisht"
+ },
+ "fil": {
+ "code": "fil",
+ "name": "filipinase"
+ },
+ "fi": {
+ "code": "fi",
+ "name": "finlandisht"
+ },
+ "nl-BE": {
+ "code": "nl-BE",
+ "name": "flamande"
+ },
+ "fr": {
+ "code": "fr",
+ "name": "frëngjisht"
+ },
+ "fr-CA": {
+ "code": "fr-CA",
+ "name": "frëngjishte kanadeze"
+ },
+ "fr-CH": {
+ "code": "fr-CH",
+ "name": "frëngjishte zvicerane"
+ },
+ "fur": {
+ "code": "fur",
+ "name": "Friulian"
+ },
+ "fy": {
+ "code": "fy",
+ "name": "frizianisht"
+ },
+ "ff": {
+ "code": "ff",
+ "name": "Fulah"
+ },
+ "gl": {
+ "code": "gl",
+ "name": "galike"
+ },
+ "gd": {
+ "code": "gd",
+ "name": "Galisht"
+ },
+ "lg": {
+ "code": "lg",
+ "name": "gandisht"
+ },
+ "el": {
+ "code": "el",
+ "name": "greqisht"
+ },
+ "guz": {
+ "code": "guz",
+ "name": "gusisht"
+ },
+ "gu": {
+ "code": "gu",
+ "name": "guxharatisht"
+ },
+ "ka": {
+ "code": "ka",
+ "name": "gjeorgjisht"
+ },
+ "de": {
+ "code": "de",
+ "name": "gjermanisht"
+ },
+ "de-AT": {
+ "code": "de-AT",
+ "name": "gjermanishte austriake"
+ },
+ "gsw": {
+ "code": "gsw",
+ "name": "gjermanishte zvicerane"
+ },
+ "de-CH": {
+ "code": "de-CH",
+ "name": "gjermanishte zvicerane (dialekti i Alpeve)"
+ },
+ "ha": {
+ "code": "ha",
+ "name": "hausisht"
+ },
+ "he": {
+ "code": "he",
+ "name": "hebraisht"
+ },
+ "nl": {
+ "code": "nl",
+ "name": "holandisht"
+ },
+ "hu": {
+ "code": "hu",
+ "name": "hungarisht"
+ },
+ "hi": {
+ "code": "hi",
+ "name": "indishte"
+ },
+ "id": {
+ "code": "id",
+ "name": "indonezisht"
+ },
+ "ga": {
+ "code": "ga",
+ "name": "irlandezçe"
+ },
+ "is": {
+ "code": "is",
+ "name": "islandisht"
+ },
+ "it": {
+ "code": "it",
+ "name": "italisht"
+ },
+ "ja": {
+ "code": "ja",
+ "name": "japonisht"
+ },
+ "yo": {
+ "code": "yo",
+ "name": "jorubisht"
+ },
+ "ee": {
+ "code": "ee",
+ "name": "juisht"
+ },
+ "kab": {
+ "code": "kab",
+ "name": "kabilisht"
+ },
+ "kea": {
+ "code": "kea",
+ "name": "kabuverdianisht"
+ },
+ "kl": {
+ "code": "kl",
+ "name": "kalalisute"
+ },
+ "kln": {
+ "code": "kln",
+ "name": "kalenjinisht"
+ },
+ "kam": {
+ "code": "kam",
+ "name": "kambishte"
+ },
+ "kn": {
+ "code": "kn",
+ "name": "kanade"
+ },
+ "ks": {
+ "code": "ks",
+ "name": "kashmire"
+ },
+ "ca": {
+ "code": "ca",
+ "name": "katalonisht"
+ },
+ "kk": {
+ "code": "kk",
+ "name": "kazakisht"
+ },
+ "ki": {
+ "code": "ki",
+ "name": "kikujuisht"
+ },
+ "zh": {
+ "code": "zh",
+ "name": "kinezisht"
+ },
+ "zh-Hans": {
+ "code": "zh-Hans",
+ "name": "kinezishte e thjeshtuar"
+ },
+ "zh-Hant": {
+ "code": "zh-Hant",
+ "name": "kinezishte tradicionale"
+ },
+ "ky": {
+ "code": "ky",
+ "name": "kirgizisht"
+ },
+ "km": {
+ "code": "km",
+ "name": "kmere"
+ },
+ "khq": {
+ "code": "khq",
+ "name": "kojraçinisht"
+ },
+ "ko": {
+ "code": "ko",
+ "name": "koreanisht"
+ },
+ "hr": {
+ "code": "hr",
+ "name": "kroatisht"
+ },
+ "nmg": {
+ "code": "nmg",
+ "name": "kuasisht"
+ },
+ "lag": {
+ "code": "lag",
+ "name": "langisht"
+ },
+ "lo": {
+ "code": "lo",
+ "name": "laosisht"
+ },
+ "lv": {
+ "code": "lv",
+ "name": "letonisht"
+ },
+ "ln": {
+ "code": "ln",
+ "name": "lingalisht"
+ },
+ "lt": {
+ "code": "lt",
+ "name": "lituanisht"
+ },
+ "lu": {
+ "code": "lu",
+ "name": "Lubakatange"
+ },
+ "luy": {
+ "code": "luy",
+ "name": "lujaisht"
+ },
+ "lb": {
+ "code": "lb",
+ "name": "luksemburgase"
+ },
+ "luo": {
+ "code": "luo",
+ "name": "luoisht"
+ },
+ "jmc": {
+ "code": "jmc",
+ "name": "maçamisht"
+ },
+ "kde": {
+ "code": "kde",
+ "name": "makondisht"
+ },
+ "mgh": {
+ "code": "mgh",
+ "name": "makuamito"
+ },
+ "mg": {
+ "code": "mg",
+ "name": "malageze"
+ },
+ "ml": {
+ "code": "ml",
+ "name": "malajalame"
+ },
+ "ms": {
+ "code": "ms",
+ "name": "malajisht"
+ },
+ "mt": {
+ "code": "mt",
+ "name": "maltisht"
+ },
+ "mk": {
+ "code": "mk",
+ "name": "maqedonisht"
+ },
+ "mr": {
+ "code": "mr",
+ "name": "maratisht"
+ },
+ "mas": {
+ "code": "mas",
+ "name": "masaisht"
+ },
+ "mer": {
+ "code": "mer",
+ "name": "meruisht"
+ },
+ "ro-MD": {
+ "code": "ro-MD",
+ "name": "moldavishte"
+ },
+ "mn": {
+ "code": "mn",
+ "name": "mongolisht"
+ },
+ "mua": {
+ "code": "mua",
+ "name": "mundagishte"
+ },
+ "naq": {
+ "code": "naq",
+ "name": "namaishte"
+ },
+ "nd": {
+ "code": "nd",
+ "name": "ndebelishte veriore"
+ },
+ "ne": {
+ "code": "ne",
+ "name": "nepalisht"
+ },
+ "jgo": {
+ "code": "jgo",
+ "name": "ngombisht"
+ },
+ "nyn": {
+ "code": "nyn",
+ "name": "niankolisht"
+ },
+ "nn": {
+ "code": "nn",
+ "name": "ninorske norvegjeze"
+ },
+ "mfe": {
+ "code": "mfe",
+ "name": "norisjene"
+ },
+ "nus": {
+ "code": "nus",
+ "name": "nuerisht"
+ },
+ "or": {
+ "code": "or",
+ "name": "orije"
+ },
+ "pa": {
+ "code": "pa",
+ "name": "panxhabe"
+ },
+ "ps": {
+ "code": "ps",
+ "name": "pashto"
+ },
+ "fa": {
+ "code": "fa",
+ "name": "persisht"
+ },
+ "pl": {
+ "code": "pl",
+ "name": "polonisht"
+ },
+ "pt": {
+ "code": "pt",
+ "name": "portugalisht"
+ },
+ "pt-BR": {
+ "code": "pt-BR",
+ "name": "portugalishte braziliane"
+ },
+ "pt-PT": {
+ "code": "pt-PT",
+ "name": "portugalishte evropiane"
+ },
+ "rof": {
+ "code": "rof",
+ "name": "romboishte"
+ },
+ "rm": {
+ "code": "rm",
+ "name": "rome"
+ },
+ "rwk": {
+ "code": "rwk",
+ "name": "ruaisht"
+ },
+ "ro": {
+ "code": "ro",
+ "name": "rumanisht"
+ },
+ "rn": {
+ "code": "rn",
+ "name": "rundisht"
+ },
+ "ru": {
+ "code": "ru",
+ "name": "rusisht"
+ },
+ "saq": {
+ "code": "saq",
+ "name": "samburisht"
+ },
+ "se": {
+ "code": "se",
+ "name": "samishte veriore"
+ },
+ "sg": {
+ "code": "sg",
+ "name": "sangoisht"
+ },
+ "sbp": {
+ "code": "sbp",
+ "name": "sanguisht"
+ },
+ "seh": {
+ "code": "seh",
+ "name": "senaishte"
+ },
+ "ses": {
+ "code": "ses",
+ "name": "senishte kojrabore"
+ },
+ "sr": {
+ "code": "sr",
+ "name": "serbisht"
+ },
+ "si": {
+ "code": "si",
+ "name": "sinhale"
+ },
+ "sk": {
+ "code": "sk",
+ "name": "sllovakisht"
+ },
+ "sl": {
+ "code": "sl",
+ "name": "sllovenisht"
+ },
+ "xog": {
+ "code": "xog",
+ "name": "sogisht"
+ },
+ "so": {
+ "code": "so",
+ "name": "somalisht"
+ },
+ "hsb": {
+ "code": "hsb",
+ "name": "sorbiane e sipërme"
+ },
+ "dsb": {
+ "code": "dsb",
+ "name": "sorbishte e poshtme"
+ },
+ "es": {
+ "code": "es",
+ "name": "spanjisht"
+ },
+ "es-ES": {
+ "code": "es-ES",
+ "name": "spanjishte evropiane"
+ },
+ "es-MX": {
+ "code": "es-MX",
+ "name": "spanjishte meksikane"
+ },
+ "sw": {
+ "code": "sw",
+ "name": "suahilisht"
+ },
+ "swc": {
+ "code": "swc",
+ "name": "suahilishte kongoje"
+ },
+ "sv": {
+ "code": "sv",
+ "name": "suedisht"
+ },
+ "ksb": {
+ "code": "ksb",
+ "name": "shambalisht"
+ },
+ "sn": {
+ "code": "sn",
+ "name": "shonisht"
+ },
+ "sq": {
+ "code": "sq",
+ "name": "shqip"
+ },
+ "shi": {
+ "code": "shi",
+ "name": "taçelit"
+ },
+ "dav": {
+ "code": "dav",
+ "name": "taitisht"
+ },
+ "th": {
+ "code": "th",
+ "name": "tajlandisht"
+ },
+ "tzm": {
+ "code": "tzm",
+ "name": "tamaziatishte atlase qendrore"
+ },
+ "zgh": {
+ "code": "zgh",
+ "name": "tamazishte standarde marokene"
+ },
+ "ta": {
+ "code": "ta",
+ "name": "tamile"
+ },
+ "twq": {
+ "code": "twq",
+ "name": "tasaukisht"
+ },
+ "te": {
+ "code": "te",
+ "name": "teluge"
+ },
+ "teo": {
+ "code": "teo",
+ "name": "tezoisht"
+ },
+ "bo": {
+ "code": "bo",
+ "name": "tibetisht"
+ },
+ "ti": {
+ "code": "ti",
+ "name": "tigrinje"
+ },
+ "to": {
+ "code": "to",
+ "name": "tonganisht"
+ },
+ "tr": {
+ "code": "tr",
+ "name": "turqisht"
+ },
+ "cy": {
+ "code": "cy",
+ "name": "uellsisht"
+ },
+ "ug": {
+ "code": "ug",
+ "name": "ujgure"
+ },
+ "uk": {
+ "code": "uk",
+ "name": "ukrainisht"
+ },
+ "ur": {
+ "code": "ur",
+ "name": "urdu"
+ },
+ "uz": {
+ "code": "uz",
+ "name": "uzbeke"
+ },
+ "vai": {
+ "code": "vai",
+ "name": "vaisht"
+ },
+ "vi": {
+ "code": "vi",
+ "name": "vietnamisht"
+ },
+ "vun": {
+ "code": "vun",
+ "name": "vunjisht"
+ },
+ "wae": {
+ "code": "wae",
+ "name": "Walser"
+ },
+ "dz": {
+ "code": "dz",
+ "name": "xongka"
+ },
+ "dyo": {
+ "code": "dyo",
+ "name": "xhula-fonji"
+ },
+ "yav": {
+ "code": "yav",
+ "name": "Yangben"
+ },
+ "dje": {
+ "code": "dje",
+ "name": "zarmisht"
+ },
+ "zu": {
+ "code": "zu",
+ "name": "zulu"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/language/sr-Latn.json b/library/intl/resources/language/sr-Latn.json
new file mode 100644
index 000000000..6f9dfb15a
--- /dev/null
+++ b/library/intl/resources/language/sr-Latn.json
@@ -0,0 +1,738 @@
+{
+ "af": {
+ "code": "af",
+ "name": "afrikans"
+ },
+ "agq": {
+ "code": "agq",
+ "name": "agem"
+ },
+ "ak": {
+ "code": "ak",
+ "name": "akan"
+ },
+ "sq": {
+ "code": "sq",
+ "name": "albanski"
+ },
+ "am": {
+ "code": "am",
+ "name": "amharski"
+ },
+ "ar": {
+ "code": "ar",
+ "name": "arapski"
+ },
+ "ast": {
+ "code": "ast",
+ "name": "Asturijski"
+ },
+ "asa": {
+ "code": "asa",
+ "name": "asu"
+ },
+ "az": {
+ "code": "az",
+ "name": "azerbejdžanski"
+ },
+ "ksf": {
+ "code": "ksf",
+ "name": "bafija"
+ },
+ "bm": {
+ "code": "bm",
+ "name": "bambara"
+ },
+ "bas": {
+ "code": "bas",
+ "name": "Basa"
+ },
+ "eu": {
+ "code": "eu",
+ "name": "baskijski"
+ },
+ "be": {
+ "code": "be",
+ "name": "beloruski"
+ },
+ "bez": {
+ "code": "bez",
+ "name": "bena"
+ },
+ "bn": {
+ "code": "bn",
+ "name": "bengalski"
+ },
+ "brx": {
+ "code": "brx",
+ "name": "bodo"
+ },
+ "bs": {
+ "code": "bs",
+ "name": "bosanski"
+ },
+ "pt-BR": {
+ "code": "pt-BR",
+ "name": "Brazilski portugalski"
+ },
+ "br": {
+ "code": "br",
+ "name": "bretonski"
+ },
+ "bg": {
+ "code": "bg",
+ "name": "bugarski"
+ },
+ "my": {
+ "code": "my",
+ "name": "burmanski"
+ },
+ "tzm": {
+ "code": "tzm",
+ "name": "centralnoatlaski tamazigt"
+ },
+ "ksh": {
+ "code": "ksh",
+ "name": "Colognian"
+ },
+ "chr": {
+ "code": "chr",
+ "name": "Äeroki"
+ },
+ "cs": {
+ "code": "cs",
+ "name": "ÄeÅ¡ki"
+ },
+ "cgg": {
+ "code": "cgg",
+ "name": "Äiga"
+ },
+ "da": {
+ "code": "da",
+ "name": "danski"
+ },
+ "de-AT": {
+ "code": "de-AT",
+ "name": "de_AT"
+ },
+ "dsb": {
+ "code": "dsb",
+ "name": "donji lužiÄkosrpski"
+ },
+ "dyo": {
+ "code": "dyo",
+ "name": "džola fonji"
+ },
+ "dz": {
+ "code": "dz",
+ "name": "džonga"
+ },
+ "ebu": {
+ "code": "ebu",
+ "name": "embu"
+ },
+ "en-AU": {
+ "code": "en-AU",
+ "name": "en_AU"
+ },
+ "en-CA": {
+ "code": "en-CA",
+ "name": "en_CA"
+ },
+ "en-GB": {
+ "code": "en-GB",
+ "name": "en_GB"
+ },
+ "en-US": {
+ "code": "en-US",
+ "name": "en_US"
+ },
+ "en": {
+ "code": "en",
+ "name": "engleski"
+ },
+ "es-ES": {
+ "code": "es-ES",
+ "name": "es_ES"
+ },
+ "es-MX": {
+ "code": "es-MX",
+ "name": "es_MX"
+ },
+ "eo": {
+ "code": "eo",
+ "name": "esperanto"
+ },
+ "et": {
+ "code": "et",
+ "name": "estonski"
+ },
+ "ee": {
+ "code": "ee",
+ "name": "eve"
+ },
+ "ewo": {
+ "code": "ewo",
+ "name": "Evondo"
+ },
+ "fo": {
+ "code": "fo",
+ "name": "farski"
+ },
+ "fil": {
+ "code": "fil",
+ "name": "filipinski"
+ },
+ "fi": {
+ "code": "fi",
+ "name": "finski"
+ },
+ "nl-BE": {
+ "code": "nl-BE",
+ "name": "flamanski"
+ },
+ "fr-CA": {
+ "code": "fr-CA",
+ "name": "fr_CA"
+ },
+ "fr-CH": {
+ "code": "fr-CH",
+ "name": "fr_CH"
+ },
+ "fr": {
+ "code": "fr",
+ "name": "francuski"
+ },
+ "fur": {
+ "code": "fur",
+ "name": "Friulijski"
+ },
+ "ff": {
+ "code": "ff",
+ "name": "Fulah"
+ },
+ "gl": {
+ "code": "gl",
+ "name": "galicijski"
+ },
+ "lg": {
+ "code": "lg",
+ "name": "ganda"
+ },
+ "hsb": {
+ "code": "hsb",
+ "name": "gornji lužiÄkosrpski"
+ },
+ "el": {
+ "code": "el",
+ "name": "grÄki"
+ },
+ "ka": {
+ "code": "ka",
+ "name": "gruzijski"
+ },
+ "gu": {
+ "code": "gu",
+ "name": "gudžarati"
+ },
+ "guz": {
+ "code": "guz",
+ "name": "gusi"
+ },
+ "ha": {
+ "code": "ha",
+ "name": "hausa"
+ },
+ "he": {
+ "code": "he",
+ "name": "hebrejski"
+ },
+ "hi": {
+ "code": "hi",
+ "name": "hindi"
+ },
+ "nl": {
+ "code": "nl",
+ "name": "holandski"
+ },
+ "hr": {
+ "code": "hr",
+ "name": "hrvatski"
+ },
+ "pt-PT": {
+ "code": "pt-PT",
+ "name": "Iberijski portugalski"
+ },
+ "id": {
+ "code": "id",
+ "name": "indonežanski"
+ },
+ "ga": {
+ "code": "ga",
+ "name": "irski"
+ },
+ "is": {
+ "code": "is",
+ "name": "islandski"
+ },
+ "it": {
+ "code": "it",
+ "name": "italijanski"
+ },
+ "ja": {
+ "code": "ja",
+ "name": "japanski"
+ },
+ "hy": {
+ "code": "hy",
+ "name": "jermenski"
+ },
+ "yo": {
+ "code": "yo",
+ "name": "joruba"
+ },
+ "kab": {
+ "code": "kab",
+ "name": "kabile"
+ },
+ "kl": {
+ "code": "kl",
+ "name": "kalalisut"
+ },
+ "kln": {
+ "code": "kln",
+ "name": "kalendžin"
+ },
+ "kam": {
+ "code": "kam",
+ "name": "kamba"
+ },
+ "kn": {
+ "code": "kn",
+ "name": "kanada"
+ },
+ "ks": {
+ "code": "ks",
+ "name": "kašmirski"
+ },
+ "ca": {
+ "code": "ca",
+ "name": "katalonski"
+ },
+ "kk": {
+ "code": "kk",
+ "name": "kazaški"
+ },
+ "ki": {
+ "code": "ki",
+ "name": "kikuju"
+ },
+ "zh": {
+ "code": "zh",
+ "name": "kineski"
+ },
+ "ky": {
+ "code": "ky",
+ "name": "kirgiski"
+ },
+ "km": {
+ "code": "km",
+ "name": "kmerski"
+ },
+ "khq": {
+ "code": "khq",
+ "name": "kojra Äiini"
+ },
+ "ses": {
+ "code": "ses",
+ "name": "kojraboro seni"
+ },
+ "swc": {
+ "code": "swc",
+ "name": "kongo svahili"
+ },
+ "ko": {
+ "code": "ko",
+ "name": "korejski"
+ },
+ "nmg": {
+ "code": "nmg",
+ "name": "kvasio"
+ },
+ "lag": {
+ "code": "lag",
+ "name": "langi"
+ },
+ "lo": {
+ "code": "lo",
+ "name": "laoški"
+ },
+ "lv": {
+ "code": "lv",
+ "name": "letonski"
+ },
+ "ln": {
+ "code": "ln",
+ "name": "lingala"
+ },
+ "lt": {
+ "code": "lt",
+ "name": "litvanski"
+ },
+ "lu": {
+ "code": "lu",
+ "name": "luba-katanga"
+ },
+ "luy": {
+ "code": "luy",
+ "name": "lujia"
+ },
+ "lb": {
+ "code": "lb",
+ "name": "luksemburški"
+ },
+ "luo": {
+ "code": "luo",
+ "name": "Luo"
+ },
+ "jmc": {
+ "code": "jmc",
+ "name": "maÄame"
+ },
+ "hu": {
+ "code": "hu",
+ "name": "mađarski"
+ },
+ "mk": {
+ "code": "mk",
+ "name": "makedonski"
+ },
+ "kde": {
+ "code": "kde",
+ "name": "makonde"
+ },
+ "mgh": {
+ "code": "mgh",
+ "name": "makuva-meeto"
+ },
+ "ml": {
+ "code": "ml",
+ "name": "malajalam"
+ },
+ "ms": {
+ "code": "ms",
+ "name": "malajski"
+ },
+ "mg": {
+ "code": "mg",
+ "name": "malgaški"
+ },
+ "mt": {
+ "code": "mt",
+ "name": "malteški"
+ },
+ "mr": {
+ "code": "mr",
+ "name": "marati"
+ },
+ "mas": {
+ "code": "mas",
+ "name": "masai"
+ },
+ "mer": {
+ "code": "mer",
+ "name": "meru"
+ },
+ "ar-001": {
+ "code": "ar-001",
+ "name": "moderan standardni arapski"
+ },
+ "ro-MD": {
+ "code": "ro-MD",
+ "name": "moldavski"
+ },
+ "mn": {
+ "code": "mn",
+ "name": "mongolski"
+ },
+ "mfe": {
+ "code": "mfe",
+ "name": "morisjen"
+ },
+ "mua": {
+ "code": "mua",
+ "name": "mundang"
+ },
+ "naq": {
+ "code": "naq",
+ "name": "nama"
+ },
+ "de": {
+ "code": "de",
+ "name": "nemaÄki"
+ },
+ "ne": {
+ "code": "ne",
+ "name": "nepalski"
+ },
+ "jgo": {
+ "code": "jgo",
+ "name": "ngomba"
+ },
+ "nb": {
+ "code": "nb",
+ "name": "norveški bokmal"
+ },
+ "nn": {
+ "code": "nn",
+ "name": "norveški ninorsk"
+ },
+ "nus": {
+ "code": "nus",
+ "name": "nuer"
+ },
+ "nyn": {
+ "code": "nyn",
+ "name": "njankole"
+ },
+ "or": {
+ "code": "or",
+ "name": "orija"
+ },
+ "pa": {
+ "code": "pa",
+ "name": "pandžabi"
+ },
+ "ps": {
+ "code": "ps",
+ "name": "paštunski"
+ },
+ "fa": {
+ "code": "fa",
+ "name": "persijski"
+ },
+ "pl": {
+ "code": "pl",
+ "name": "poljski"
+ },
+ "pt": {
+ "code": "pt",
+ "name": "portugalski"
+ },
+ "rm": {
+ "code": "rm",
+ "name": "reto-romanski"
+ },
+ "rof": {
+ "code": "rof",
+ "name": "rombo"
+ },
+ "rwk": {
+ "code": "rwk",
+ "name": "rua"
+ },
+ "ro": {
+ "code": "ro",
+ "name": "rumunski"
+ },
+ "rn": {
+ "code": "rn",
+ "name": "rundi"
+ },
+ "ru": {
+ "code": "ru",
+ "name": "ruski"
+ },
+ "saq": {
+ "code": "saq",
+ "name": "samburu"
+ },
+ "sg": {
+ "code": "sg",
+ "name": "sango"
+ },
+ "sbp": {
+ "code": "sbp",
+ "name": "sangu"
+ },
+ "seh": {
+ "code": "seh",
+ "name": "sena"
+ },
+ "nd": {
+ "code": "nd",
+ "name": "severni ndebele"
+ },
+ "se": {
+ "code": "se",
+ "name": "severni sami"
+ },
+ "si": {
+ "code": "si",
+ "name": "sinhalski"
+ },
+ "sk": {
+ "code": "sk",
+ "name": "slovaÄki"
+ },
+ "sl": {
+ "code": "sl",
+ "name": "slovenaÄki"
+ },
+ "xog": {
+ "code": "xog",
+ "name": "soga"
+ },
+ "so": {
+ "code": "so",
+ "name": "somalski"
+ },
+ "sr": {
+ "code": "sr",
+ "name": "srpski"
+ },
+ "zgh": {
+ "code": "zgh",
+ "name": "standardni marokanski tamazigt"
+ },
+ "sw": {
+ "code": "sw",
+ "name": "svahili"
+ },
+ "ksb": {
+ "code": "ksb",
+ "name": "Å¡ambala"
+ },
+ "gd": {
+ "code": "gd",
+ "name": "Å kotski Galski"
+ },
+ "sn": {
+ "code": "sn",
+ "name": "Å¡ona"
+ },
+ "es": {
+ "code": "es",
+ "name": "Å¡panski"
+ },
+ "gsw": {
+ "code": "gsw",
+ "name": "Å vajcarski nemaÄki"
+ },
+ "de-CH": {
+ "code": "de-CH",
+ "name": "Å¡vajcarski visoki nemaÄki"
+ },
+ "sv": {
+ "code": "sv",
+ "name": "Å¡vedski"
+ },
+ "dav": {
+ "code": "dav",
+ "name": "taita"
+ },
+ "th": {
+ "code": "th",
+ "name": "tajlandski"
+ },
+ "ta": {
+ "code": "ta",
+ "name": "tamilski"
+ },
+ "twq": {
+ "code": "twq",
+ "name": "tasavak"
+ },
+ "shi": {
+ "code": "shi",
+ "name": "tašelhit"
+ },
+ "te": {
+ "code": "te",
+ "name": "telugu"
+ },
+ "teo": {
+ "code": "teo",
+ "name": "teso"
+ },
+ "bo": {
+ "code": "bo",
+ "name": "tibetanski"
+ },
+ "ti": {
+ "code": "ti",
+ "name": "tigrinja"
+ },
+ "to": {
+ "code": "to",
+ "name": "tonga"
+ },
+ "tr": {
+ "code": "tr",
+ "name": "turski"
+ },
+ "ug": {
+ "code": "ug",
+ "name": "ujgurski"
+ },
+ "uk": {
+ "code": "uk",
+ "name": "ukrajinski"
+ },
+ "ur": {
+ "code": "ur",
+ "name": "urdu"
+ },
+ "uz": {
+ "code": "uz",
+ "name": "uzbeÄki"
+ },
+ "vai": {
+ "code": "vai",
+ "name": "Vai"
+ },
+ "cy": {
+ "code": "cy",
+ "name": "velški"
+ },
+ "vi": {
+ "code": "vi",
+ "name": "vijetnamski"
+ },
+ "vun": {
+ "code": "vun",
+ "name": "vundžo"
+ },
+ "wae": {
+ "code": "wae",
+ "name": "Walser"
+ },
+ "yav": {
+ "code": "yav",
+ "name": "Yangben"
+ },
+ "fy": {
+ "code": "fy",
+ "name": "zapadni frizijski"
+ },
+ "dje": {
+ "code": "dje",
+ "name": "zarma"
+ },
+ "kea": {
+ "code": "kea",
+ "name": "zelenortski kreolski"
+ },
+ "zh-Hans": {
+ "code": "zh-Hans",
+ "name": "zh_Hans"
+ },
+ "zh-Hant": {
+ "code": "zh-Hant",
+ "name": "zh_Hant"
+ },
+ "zu": {
+ "code": "zu",
+ "name": "zulu"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/language/sr.json b/library/intl/resources/language/sr.json
new file mode 100644
index 000000000..37771d26d
--- /dev/null
+++ b/library/intl/resources/language/sr.json
@@ -0,0 +1,738 @@
+{
+ "ksh": {
+ "code": "ksh",
+ "name": "Colognian"
+ },
+ "de-AT": {
+ "code": "de-AT",
+ "name": "de_AT"
+ },
+ "en-AU": {
+ "code": "en-AU",
+ "name": "en_AU"
+ },
+ "en-CA": {
+ "code": "en-CA",
+ "name": "en_CA"
+ },
+ "en-GB": {
+ "code": "en-GB",
+ "name": "en_GB"
+ },
+ "en-US": {
+ "code": "en-US",
+ "name": "en_US"
+ },
+ "es-ES": {
+ "code": "es-ES",
+ "name": "es_ES"
+ },
+ "es-MX": {
+ "code": "es-MX",
+ "name": "es_MX"
+ },
+ "fr-CA": {
+ "code": "fr-CA",
+ "name": "fr_CA"
+ },
+ "fr-CH": {
+ "code": "fr-CH",
+ "name": "fr_CH"
+ },
+ "wae": {
+ "code": "wae",
+ "name": "Walser"
+ },
+ "yav": {
+ "code": "yav",
+ "name": "Yangben"
+ },
+ "zh-Hans": {
+ "code": "zh-Hans",
+ "name": "zh_Hans"
+ },
+ "zh-Hant": {
+ "code": "zh-Hant",
+ "name": "zh_Hant"
+ },
+ "agq": {
+ "code": "agq",
+ "name": "агем"
+ },
+ "az": {
+ "code": "az",
+ "name": "азербејџанÑки"
+ },
+ "ak": {
+ "code": "ak",
+ "name": "акан"
+ },
+ "sq": {
+ "code": "sq",
+ "name": "албанÑки"
+ },
+ "am": {
+ "code": "am",
+ "name": "амхарÑки"
+ },
+ "ar": {
+ "code": "ar",
+ "name": "арапÑки"
+ },
+ "ast": {
+ "code": "ast",
+ "name": "ÐÑтуријÑки"
+ },
+ "asa": {
+ "code": "asa",
+ "name": "аÑу"
+ },
+ "af": {
+ "code": "af",
+ "name": "африканÑ"
+ },
+ "bm": {
+ "code": "bm",
+ "name": "бамбара"
+ },
+ "bas": {
+ "code": "bas",
+ "name": "БаÑа"
+ },
+ "eu": {
+ "code": "eu",
+ "name": "баÑкијÑки"
+ },
+ "ksf": {
+ "code": "ksf",
+ "name": "бафија"
+ },
+ "be": {
+ "code": "be",
+ "name": "белоруÑки"
+ },
+ "bez": {
+ "code": "bez",
+ "name": "бена"
+ },
+ "bn": {
+ "code": "bn",
+ "name": "бенгалÑки"
+ },
+ "brx": {
+ "code": "brx",
+ "name": "бодо"
+ },
+ "bs": {
+ "code": "bs",
+ "name": "боÑанÑки"
+ },
+ "pt-BR": {
+ "code": "pt-BR",
+ "name": "БразилÑки португалÑки"
+ },
+ "br": {
+ "code": "br",
+ "name": "бретонÑки"
+ },
+ "bg": {
+ "code": "bg",
+ "name": "бугарÑки"
+ },
+ "my": {
+ "code": "my",
+ "name": "бурманÑки"
+ },
+ "vai": {
+ "code": "vai",
+ "name": "ваи"
+ },
+ "cy": {
+ "code": "cy",
+ "name": "велшки"
+ },
+ "vi": {
+ "code": "vi",
+ "name": "вијетнамÑки"
+ },
+ "vun": {
+ "code": "vun",
+ "name": "вунџо"
+ },
+ "gl": {
+ "code": "gl",
+ "name": "галицијÑки"
+ },
+ "lg": {
+ "code": "lg",
+ "name": "ганда"
+ },
+ "hsb": {
+ "code": "hsb",
+ "name": "горњи лужичкоÑрпÑки"
+ },
+ "ka": {
+ "code": "ka",
+ "name": "грузијÑки"
+ },
+ "el": {
+ "code": "el",
+ "name": "грчки"
+ },
+ "guz": {
+ "code": "guz",
+ "name": "гуÑи"
+ },
+ "gu": {
+ "code": "gu",
+ "name": "гуџарати"
+ },
+ "da": {
+ "code": "da",
+ "name": "данÑки"
+ },
+ "dsb": {
+ "code": "dsb",
+ "name": "доњи лужичкоÑрпÑки"
+ },
+ "ee": {
+ "code": "ee",
+ "name": "еве"
+ },
+ "ewo": {
+ "code": "ewo",
+ "name": "Евондо"
+ },
+ "ebu": {
+ "code": "ebu",
+ "name": "ембу"
+ },
+ "en": {
+ "code": "en",
+ "name": "енглеÑки"
+ },
+ "eo": {
+ "code": "eo",
+ "name": "еÑперанто"
+ },
+ "et": {
+ "code": "et",
+ "name": "еÑтонÑки"
+ },
+ "fy": {
+ "code": "fy",
+ "name": "западни фризијÑки"
+ },
+ "dje": {
+ "code": "dje",
+ "name": "зарма"
+ },
+ "kea": {
+ "code": "kea",
+ "name": "зеленортÑки креолÑки"
+ },
+ "zu": {
+ "code": "zu",
+ "name": "зулу"
+ },
+ "pt-PT": {
+ "code": "pt-PT",
+ "name": "ИберијÑки португалÑки"
+ },
+ "id": {
+ "code": "id",
+ "name": "индонежанÑки"
+ },
+ "ga": {
+ "code": "ga",
+ "name": "ирÑки"
+ },
+ "is": {
+ "code": "is",
+ "name": "иÑландÑки"
+ },
+ "it": {
+ "code": "it",
+ "name": "италијанÑки"
+ },
+ "ja": {
+ "code": "ja",
+ "name": "јапанÑки"
+ },
+ "hy": {
+ "code": "hy",
+ "name": "јерменÑки"
+ },
+ "yo": {
+ "code": "yo",
+ "name": "јоруба"
+ },
+ "kab": {
+ "code": "kab",
+ "name": "кабиле"
+ },
+ "kk": {
+ "code": "kk",
+ "name": "казашки"
+ },
+ "kl": {
+ "code": "kl",
+ "name": "калалиÑут"
+ },
+ "kln": {
+ "code": "kln",
+ "name": "каленџин"
+ },
+ "kam": {
+ "code": "kam",
+ "name": "камба"
+ },
+ "kn": {
+ "code": "kn",
+ "name": "канада"
+ },
+ "ca": {
+ "code": "ca",
+ "name": "каталонÑки"
+ },
+ "ks": {
+ "code": "ks",
+ "name": "кашмирÑки"
+ },
+ "nmg": {
+ "code": "nmg",
+ "name": "кваÑио"
+ },
+ "ki": {
+ "code": "ki",
+ "name": "кикују"
+ },
+ "zh": {
+ "code": "zh",
+ "name": "кинеÑки"
+ },
+ "ky": {
+ "code": "ky",
+ "name": "киргиÑки"
+ },
+ "km": {
+ "code": "km",
+ "name": "кмерÑки"
+ },
+ "khq": {
+ "code": "khq",
+ "name": "којра чиини"
+ },
+ "ses": {
+ "code": "ses",
+ "name": "којраборо Ñени"
+ },
+ "swc": {
+ "code": "swc",
+ "name": "конго Ñвахили"
+ },
+ "ko": {
+ "code": "ko",
+ "name": "корејÑки"
+ },
+ "lag": {
+ "code": "lag",
+ "name": "ланги"
+ },
+ "lo": {
+ "code": "lo",
+ "name": "лаошки"
+ },
+ "lv": {
+ "code": "lv",
+ "name": "летонÑки"
+ },
+ "ln": {
+ "code": "ln",
+ "name": "лингала"
+ },
+ "lt": {
+ "code": "lt",
+ "name": "литванÑки"
+ },
+ "lu": {
+ "code": "lu",
+ "name": "луба-катанга"
+ },
+ "luy": {
+ "code": "luy",
+ "name": "лујиа"
+ },
+ "lb": {
+ "code": "lb",
+ "name": "лукÑембуршки"
+ },
+ "luo": {
+ "code": "luo",
+ "name": "луо"
+ },
+ "hu": {
+ "code": "hu",
+ "name": "мађарÑки"
+ },
+ "mk": {
+ "code": "mk",
+ "name": "македонÑки"
+ },
+ "kde": {
+ "code": "kde",
+ "name": "маконде"
+ },
+ "mgh": {
+ "code": "mgh",
+ "name": "макува-меето"
+ },
+ "ml": {
+ "code": "ml",
+ "name": "малајалам"
+ },
+ "ms": {
+ "code": "ms",
+ "name": "малајÑки"
+ },
+ "mg": {
+ "code": "mg",
+ "name": "малгашки"
+ },
+ "mt": {
+ "code": "mt",
+ "name": "малтешки"
+ },
+ "mr": {
+ "code": "mr",
+ "name": "марати"
+ },
+ "mas": {
+ "code": "mas",
+ "name": "маÑаи"
+ },
+ "jmc": {
+ "code": "jmc",
+ "name": "мачаме"
+ },
+ "mer": {
+ "code": "mer",
+ "name": "меру"
+ },
+ "ar-001": {
+ "code": "ar-001",
+ "name": "модеран Ñтандардни арапÑки"
+ },
+ "ro-MD": {
+ "code": "ro-MD",
+ "name": "молдавÑки"
+ },
+ "mn": {
+ "code": "mn",
+ "name": "монголÑки"
+ },
+ "mfe": {
+ "code": "mfe",
+ "name": "мориÑјен"
+ },
+ "mua": {
+ "code": "mua",
+ "name": "мунданг"
+ },
+ "naq": {
+ "code": "naq",
+ "name": "нама"
+ },
+ "jgo": {
+ "code": "jgo",
+ "name": "нгомба"
+ },
+ "de": {
+ "code": "de",
+ "name": "немачки"
+ },
+ "ne": {
+ "code": "ne",
+ "name": "непалÑки"
+ },
+ "nyn": {
+ "code": "nyn",
+ "name": "нјанколе"
+ },
+ "nb": {
+ "code": "nb",
+ "name": "норвешки бокмал"
+ },
+ "nn": {
+ "code": "nn",
+ "name": "норвешки нинорÑк"
+ },
+ "nus": {
+ "code": "nus",
+ "name": "нуер"
+ },
+ "or": {
+ "code": "or",
+ "name": "орија"
+ },
+ "pa": {
+ "code": "pa",
+ "name": "панџаби"
+ },
+ "ps": {
+ "code": "ps",
+ "name": "паштунÑки"
+ },
+ "fa": {
+ "code": "fa",
+ "name": "перÑијÑки"
+ },
+ "pl": {
+ "code": "pl",
+ "name": "пољÑки"
+ },
+ "pt": {
+ "code": "pt",
+ "name": "португалÑки"
+ },
+ "rm": {
+ "code": "rm",
+ "name": "рето-романÑки"
+ },
+ "rof": {
+ "code": "rof",
+ "name": "ромбо"
+ },
+ "rwk": {
+ "code": "rwk",
+ "name": "руа"
+ },
+ "ro": {
+ "code": "ro",
+ "name": "румунÑки"
+ },
+ "rn": {
+ "code": "rn",
+ "name": "рунди"
+ },
+ "ru": {
+ "code": "ru",
+ "name": "руÑки"
+ },
+ "saq": {
+ "code": "saq",
+ "name": "Ñамбуру"
+ },
+ "sg": {
+ "code": "sg",
+ "name": "Ñанго"
+ },
+ "sbp": {
+ "code": "sbp",
+ "name": "Ñангу"
+ },
+ "sw": {
+ "code": "sw",
+ "name": "Ñвахили"
+ },
+ "nd": {
+ "code": "nd",
+ "name": "Ñеверни ндебеле"
+ },
+ "se": {
+ "code": "se",
+ "name": "Ñеверни Ñами"
+ },
+ "seh": {
+ "code": "seh",
+ "name": "Ñена"
+ },
+ "si": {
+ "code": "si",
+ "name": "ÑинхалÑки"
+ },
+ "sk": {
+ "code": "sk",
+ "name": "Ñловачки"
+ },
+ "sl": {
+ "code": "sl",
+ "name": "Ñловеначки"
+ },
+ "xog": {
+ "code": "xog",
+ "name": "Ñога"
+ },
+ "so": {
+ "code": "so",
+ "name": "ÑомалÑки"
+ },
+ "sr": {
+ "code": "sr",
+ "name": "ÑрпÑки"
+ },
+ "zgh": {
+ "code": "zgh",
+ "name": "Ñтандардни мароканÑки тамазигт"
+ },
+ "dav": {
+ "code": "dav",
+ "name": "таита"
+ },
+ "th": {
+ "code": "th",
+ "name": "тајландÑки"
+ },
+ "ta": {
+ "code": "ta",
+ "name": "тамилÑки"
+ },
+ "twq": {
+ "code": "twq",
+ "name": "таÑавак"
+ },
+ "shi": {
+ "code": "shi",
+ "name": "ташелхит"
+ },
+ "te": {
+ "code": "te",
+ "name": "телугу"
+ },
+ "teo": {
+ "code": "teo",
+ "name": "теÑо"
+ },
+ "bo": {
+ "code": "bo",
+ "name": "тибетанÑки"
+ },
+ "ti": {
+ "code": "ti",
+ "name": "тигриња"
+ },
+ "to": {
+ "code": "to",
+ "name": "тонга"
+ },
+ "tr": {
+ "code": "tr",
+ "name": "турÑки"
+ },
+ "uz": {
+ "code": "uz",
+ "name": "узбечки"
+ },
+ "ug": {
+ "code": "ug",
+ "name": "ујгурÑки"
+ },
+ "uk": {
+ "code": "uk",
+ "name": "украјинÑки"
+ },
+ "ur": {
+ "code": "ur",
+ "name": "урду"
+ },
+ "fo": {
+ "code": "fo",
+ "name": "фарÑки"
+ },
+ "fil": {
+ "code": "fil",
+ "name": "филипинÑки"
+ },
+ "fi": {
+ "code": "fi",
+ "name": "финÑки"
+ },
+ "nl-BE": {
+ "code": "nl-BE",
+ "name": "фламанÑки"
+ },
+ "fr": {
+ "code": "fr",
+ "name": "француÑки"
+ },
+ "fur": {
+ "code": "fur",
+ "name": "ФриулијÑки"
+ },
+ "ff": {
+ "code": "ff",
+ "name": "Фулах"
+ },
+ "ha": {
+ "code": "ha",
+ "name": "хауÑа"
+ },
+ "he": {
+ "code": "he",
+ "name": "хебрејÑки"
+ },
+ "hi": {
+ "code": "hi",
+ "name": "хинди"
+ },
+ "nl": {
+ "code": "nl",
+ "name": "холандÑки"
+ },
+ "hr": {
+ "code": "hr",
+ "name": "хрватÑки"
+ },
+ "tzm": {
+ "code": "tzm",
+ "name": "централноатлаÑки тамазигт"
+ },
+ "chr": {
+ "code": "chr",
+ "name": "чероки"
+ },
+ "cs": {
+ "code": "cs",
+ "name": "чешки"
+ },
+ "cgg": {
+ "code": "cgg",
+ "name": "чига"
+ },
+ "dyo": {
+ "code": "dyo",
+ "name": "џола фоњи"
+ },
+ "dz": {
+ "code": "dz",
+ "name": "џонга"
+ },
+ "ksb": {
+ "code": "ksb",
+ "name": "шамбала"
+ },
+ "de-CH": {
+ "code": "de-CH",
+ "name": "швајцарÑки виÑоки немачки"
+ },
+ "gsw": {
+ "code": "gsw",
+ "name": "ШвајцарÑки немачки"
+ },
+ "sv": {
+ "code": "sv",
+ "name": "шведÑки"
+ },
+ "gd": {
+ "code": "gd",
+ "name": "ШкотÑки ГалÑки"
+ },
+ "sn": {
+ "code": "sn",
+ "name": "шона"
+ },
+ "es": {
+ "code": "es",
+ "name": "шпанÑки"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/language/sv-FI.json b/library/intl/resources/language/sv-FI.json
new file mode 100644
index 000000000..c5f4fe34f
--- /dev/null
+++ b/library/intl/resources/language/sv-FI.json
@@ -0,0 +1,738 @@
+{
+ "af": {
+ "code": "af",
+ "name": "afrikaans"
+ },
+ "agq": {
+ "code": "agq",
+ "name": "aghem"
+ },
+ "ak": {
+ "code": "ak",
+ "name": "akan"
+ },
+ "sq": {
+ "code": "sq",
+ "name": "albanska"
+ },
+ "en-US": {
+ "code": "en-US",
+ "name": "amerikansk engelska"
+ },
+ "am": {
+ "code": "am",
+ "name": "amhariska"
+ },
+ "ar": {
+ "code": "ar",
+ "name": "arabiska"
+ },
+ "hy": {
+ "code": "hy",
+ "name": "armeniska"
+ },
+ "ast": {
+ "code": "ast",
+ "name": "asturiska"
+ },
+ "asa": {
+ "code": "asa",
+ "name": "asu"
+ },
+ "en-AU": {
+ "code": "en-AU",
+ "name": "australisk engelska"
+ },
+ "az": {
+ "code": "az",
+ "name": "azerbajdzjanska"
+ },
+ "ksf": {
+ "code": "ksf",
+ "name": "bafia"
+ },
+ "bm": {
+ "code": "bm",
+ "name": "bambara"
+ },
+ "bas": {
+ "code": "bas",
+ "name": "basa"
+ },
+ "eu": {
+ "code": "eu",
+ "name": "baskiska"
+ },
+ "bez": {
+ "code": "bez",
+ "name": "bena"
+ },
+ "bn": {
+ "code": "bn",
+ "name": "bengali"
+ },
+ "dz": {
+ "code": "dz",
+ "name": "bhutanesiska"
+ },
+ "brx": {
+ "code": "brx",
+ "name": "bodo"
+ },
+ "nb": {
+ "code": "nb",
+ "name": "bokmål"
+ },
+ "bs": {
+ "code": "bs",
+ "name": "bosniska"
+ },
+ "pt-BR": {
+ "code": "pt-BR",
+ "name": "brasiliansk portugisiska"
+ },
+ "br": {
+ "code": "br",
+ "name": "bretonska"
+ },
+ "en-GB": {
+ "code": "en-GB",
+ "name": "brittisk engelska"
+ },
+ "bg": {
+ "code": "bg",
+ "name": "bulgariska"
+ },
+ "my": {
+ "code": "my",
+ "name": "burmesiska"
+ },
+ "tzm": {
+ "code": "tzm",
+ "name": "centralmarockansk tamazight"
+ },
+ "chr": {
+ "code": "chr",
+ "name": "cherokesiska"
+ },
+ "cgg": {
+ "code": "cgg",
+ "name": "chiga"
+ },
+ "da": {
+ "code": "da",
+ "name": "danska"
+ },
+ "ebu": {
+ "code": "ebu",
+ "name": "embu"
+ },
+ "en": {
+ "code": "en",
+ "name": "engelska"
+ },
+ "eo": {
+ "code": "eo",
+ "name": "esperanto"
+ },
+ "et": {
+ "code": "et",
+ "name": "estniska"
+ },
+ "pt-PT": {
+ "code": "pt-PT",
+ "name": "europeisk portugisiska"
+ },
+ "es-ES": {
+ "code": "es-ES",
+ "name": "europeisk spanska"
+ },
+ "ee": {
+ "code": "ee",
+ "name": "ewe"
+ },
+ "ewo": {
+ "code": "ewo",
+ "name": "ewondo"
+ },
+ "fil": {
+ "code": "fil",
+ "name": "filippinska"
+ },
+ "fi": {
+ "code": "fi",
+ "name": "finska"
+ },
+ "nl-BE": {
+ "code": "nl-BE",
+ "name": "flamländska"
+ },
+ "fr": {
+ "code": "fr",
+ "name": "franska"
+ },
+ "fur": {
+ "code": "fur",
+ "name": "friulianska"
+ },
+ "ff": {
+ "code": "ff",
+ "name": "fulani"
+ },
+ "fo": {
+ "code": "fo",
+ "name": "färöiska"
+ },
+ "zh-Hans": {
+ "code": "zh-Hans",
+ "name": "förenklad kinesiska"
+ },
+ "gl": {
+ "code": "gl",
+ "name": "galiciska"
+ },
+ "ses": {
+ "code": "ses",
+ "name": "Gao-songhay"
+ },
+ "ka": {
+ "code": "ka",
+ "name": "georgiska"
+ },
+ "el": {
+ "code": "el",
+ "name": "grekiska"
+ },
+ "kl": {
+ "code": "kl",
+ "name": "grönländska"
+ },
+ "gu": {
+ "code": "gu",
+ "name": "gujarati"
+ },
+ "guz": {
+ "code": "guz",
+ "name": "gusii"
+ },
+ "ha": {
+ "code": "ha",
+ "name": "hausa"
+ },
+ "he": {
+ "code": "he",
+ "name": "hebreiska"
+ },
+ "hi": {
+ "code": "hi",
+ "name": "hindi"
+ },
+ "gd": {
+ "code": "gd",
+ "name": "höglandsskotska"
+ },
+ "hsb": {
+ "code": "hsb",
+ "name": "högsorbiska"
+ },
+ "id": {
+ "code": "id",
+ "name": "indonesiska"
+ },
+ "ga": {
+ "code": "ga",
+ "name": "iriska"
+ },
+ "is": {
+ "code": "is",
+ "name": "isländska"
+ },
+ "it": {
+ "code": "it",
+ "name": "italienska"
+ },
+ "ja": {
+ "code": "ja",
+ "name": "japanska"
+ },
+ "dyo": {
+ "code": "dyo",
+ "name": "jola-fonyi"
+ },
+ "kab": {
+ "code": "kab",
+ "name": "kabyliska"
+ },
+ "kln": {
+ "code": "kln",
+ "name": "kalenjin"
+ },
+ "kam": {
+ "code": "kam",
+ "name": "kamba"
+ },
+ "en-CA": {
+ "code": "en-CA",
+ "name": "kanadensisk engelska"
+ },
+ "fr-CA": {
+ "code": "fr-CA",
+ "name": "kanadensisk franska"
+ },
+ "kn": {
+ "code": "kn",
+ "name": "kannada"
+ },
+ "kea": {
+ "code": "kea",
+ "name": "kapverdiska"
+ },
+ "ks": {
+ "code": "ks",
+ "name": "kashmiri"
+ },
+ "ca": {
+ "code": "ca",
+ "name": "katalanska"
+ },
+ "kk": {
+ "code": "kk",
+ "name": "kazakiska"
+ },
+ "km": {
+ "code": "km",
+ "name": "khmer"
+ },
+ "ki": {
+ "code": "ki",
+ "name": "kikuyu"
+ },
+ "jmc": {
+ "code": "jmc",
+ "name": "kimashami"
+ },
+ "zh": {
+ "code": "zh",
+ "name": "kinesiska"
+ },
+ "ky": {
+ "code": "ky",
+ "name": "kirgiziska"
+ },
+ "ksb": {
+ "code": "ksb",
+ "name": "kisambaa"
+ },
+ "swc": {
+ "code": "swc",
+ "name": "Kongo-swahili"
+ },
+ "ko": {
+ "code": "ko",
+ "name": "koreanska"
+ },
+ "hr": {
+ "code": "hr",
+ "name": "kroatiska"
+ },
+ "nmg": {
+ "code": "nmg",
+ "name": "kwasio"
+ },
+ "ksh": {
+ "code": "ksh",
+ "name": "kölniska"
+ },
+ "lag": {
+ "code": "lag",
+ "name": "langi"
+ },
+ "lo": {
+ "code": "lo",
+ "name": "lao"
+ },
+ "lv": {
+ "code": "lv",
+ "name": "lettiska"
+ },
+ "ln": {
+ "code": "ln",
+ "name": "lingala"
+ },
+ "lt": {
+ "code": "lt",
+ "name": "litauiska"
+ },
+ "lu": {
+ "code": "lu",
+ "name": "luba-katanga"
+ },
+ "lg": {
+ "code": "lg",
+ "name": "luganda"
+ },
+ "luy": {
+ "code": "luy",
+ "name": "luhya"
+ },
+ "luo": {
+ "code": "luo",
+ "name": "Luo"
+ },
+ "xog": {
+ "code": "xog",
+ "name": "lusoga"
+ },
+ "lb": {
+ "code": "lb",
+ "name": "luxemburgiska"
+ },
+ "dsb": {
+ "code": "dsb",
+ "name": "lågsorbiska"
+ },
+ "mk": {
+ "code": "mk",
+ "name": "makedonska"
+ },
+ "mgh": {
+ "code": "mgh",
+ "name": "makhuwa-meetto"
+ },
+ "kde": {
+ "code": "kde",
+ "name": "makonde"
+ },
+ "mg": {
+ "code": "mg",
+ "name": "malagassiska"
+ },
+ "ms": {
+ "code": "ms",
+ "name": "malajiska"
+ },
+ "ml": {
+ "code": "ml",
+ "name": "malayalam"
+ },
+ "mt": {
+ "code": "mt",
+ "name": "maltesiska"
+ },
+ "mr": {
+ "code": "mr",
+ "name": "marathi"
+ },
+ "zgh": {
+ "code": "zgh",
+ "name": "marockansk standard-tamazight"
+ },
+ "mas": {
+ "code": "mas",
+ "name": "massajiska"
+ },
+ "mfe": {
+ "code": "mfe",
+ "name": "mauritansk kreol"
+ },
+ "mer": {
+ "code": "mer",
+ "name": "meru"
+ },
+ "es-MX": {
+ "code": "es-MX",
+ "name": "mexikansk spanska"
+ },
+ "ar-001": {
+ "code": "ar-001",
+ "name": "modern standardarabiska"
+ },
+ "ro-MD": {
+ "code": "ro-MD",
+ "name": "moldaviska"
+ },
+ "mn": {
+ "code": "mn",
+ "name": "mongoliska"
+ },
+ "mua": {
+ "code": "mua",
+ "name": "mundang"
+ },
+ "naq": {
+ "code": "naq",
+ "name": "nama"
+ },
+ "nl": {
+ "code": "nl",
+ "name": "nederländska"
+ },
+ "ne": {
+ "code": "ne",
+ "name": "nepalesiska"
+ },
+ "jgo": {
+ "code": "jgo",
+ "name": "ngomba"
+ },
+ "nd": {
+ "code": "nd",
+ "name": "nordndebele"
+ },
+ "se": {
+ "code": "se",
+ "name": "nordsamiska"
+ },
+ "nus": {
+ "code": "nus",
+ "name": "nuer"
+ },
+ "nyn": {
+ "code": "nyn",
+ "name": "nyankole"
+ },
+ "nn": {
+ "code": "nn",
+ "name": "nynorska"
+ },
+ "or": {
+ "code": "or",
+ "name": "oriya"
+ },
+ "pa": {
+ "code": "pa",
+ "name": "panjabi"
+ },
+ "ps": {
+ "code": "ps",
+ "name": "pashto"
+ },
+ "fa": {
+ "code": "fa",
+ "name": "persiska"
+ },
+ "pl": {
+ "code": "pl",
+ "name": "polska"
+ },
+ "pt": {
+ "code": "pt",
+ "name": "portugisiska"
+ },
+ "rof": {
+ "code": "rof",
+ "name": "rombo"
+ },
+ "ro": {
+ "code": "ro",
+ "name": "rumänska"
+ },
+ "rn": {
+ "code": "rn",
+ "name": "rundi"
+ },
+ "rwk": {
+ "code": "rwk",
+ "name": "rwa"
+ },
+ "ru": {
+ "code": "ru",
+ "name": "ryska"
+ },
+ "rm": {
+ "code": "rm",
+ "name": "rätoromanska"
+ },
+ "saq": {
+ "code": "saq",
+ "name": "samburu"
+ },
+ "sg": {
+ "code": "sg",
+ "name": "sango"
+ },
+ "sbp": {
+ "code": "sbp",
+ "name": "sangu"
+ },
+ "gsw": {
+ "code": "gsw",
+ "name": "schweizertyska"
+ },
+ "fr-CH": {
+ "code": "fr-CH",
+ "name": "schweizisk franska"
+ },
+ "de-CH": {
+ "code": "de-CH",
+ "name": "schweizisk högtyska"
+ },
+ "seh": {
+ "code": "seh",
+ "name": "sena"
+ },
+ "sr": {
+ "code": "sr",
+ "name": "serbiska"
+ },
+ "sn": {
+ "code": "sn",
+ "name": "shona"
+ },
+ "si": {
+ "code": "si",
+ "name": "singalesiska"
+ },
+ "sk": {
+ "code": "sk",
+ "name": "slovakiska"
+ },
+ "sl": {
+ "code": "sl",
+ "name": "slovenska"
+ },
+ "so": {
+ "code": "so",
+ "name": "somaliska"
+ },
+ "es": {
+ "code": "es",
+ "name": "spanska"
+ },
+ "sv": {
+ "code": "sv",
+ "name": "svenska"
+ },
+ "sw": {
+ "code": "sw",
+ "name": "swahili"
+ },
+ "shi": {
+ "code": "shi",
+ "name": "tachelhit"
+ },
+ "dav": {
+ "code": "dav",
+ "name": "taita"
+ },
+ "ta": {
+ "code": "ta",
+ "name": "tamil"
+ },
+ "twq": {
+ "code": "twq",
+ "name": "tasawaq"
+ },
+ "te": {
+ "code": "te",
+ "name": "telugu"
+ },
+ "teo": {
+ "code": "teo",
+ "name": "teso"
+ },
+ "th": {
+ "code": "th",
+ "name": "thai"
+ },
+ "bo": {
+ "code": "bo",
+ "name": "tibetanska"
+ },
+ "ti": {
+ "code": "ti",
+ "name": "tigrinska"
+ },
+ "khq": {
+ "code": "khq",
+ "name": "Timbuktu-songhoy"
+ },
+ "cs": {
+ "code": "cs",
+ "name": "tjeckiska"
+ },
+ "to": {
+ "code": "to",
+ "name": "tonganska"
+ },
+ "zh-Hant": {
+ "code": "zh-Hant",
+ "name": "traditionell kinesiska"
+ },
+ "tr": {
+ "code": "tr",
+ "name": "turkiska"
+ },
+ "de": {
+ "code": "de",
+ "name": "tyska"
+ },
+ "ug": {
+ "code": "ug",
+ "name": "uiguriska"
+ },
+ "uk": {
+ "code": "uk",
+ "name": "ukrainska"
+ },
+ "hu": {
+ "code": "hu",
+ "name": "ungerska"
+ },
+ "ur": {
+ "code": "ur",
+ "name": "urdu"
+ },
+ "uz": {
+ "code": "uz",
+ "name": "uzbekiska"
+ },
+ "vai": {
+ "code": "vai",
+ "name": "vaj"
+ },
+ "vi": {
+ "code": "vi",
+ "name": "vietnamesiska"
+ },
+ "be": {
+ "code": "be",
+ "name": "vitryska"
+ },
+ "vun": {
+ "code": "vun",
+ "name": "vunjo"
+ },
+ "fy": {
+ "code": "fy",
+ "name": "västfrisiska"
+ },
+ "cy": {
+ "code": "cy",
+ "name": "walesiska"
+ },
+ "wae": {
+ "code": "wae",
+ "name": "walsertyska"
+ },
+ "yav": {
+ "code": "yav",
+ "name": "yangben"
+ },
+ "yo": {
+ "code": "yo",
+ "name": "yoruba"
+ },
+ "dje": {
+ "code": "dje",
+ "name": "zarma"
+ },
+ "zu": {
+ "code": "zu",
+ "name": "zulu"
+ },
+ "de-AT": {
+ "code": "de-AT",
+ "name": "österrikisk tyska"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/language/sv.json b/library/intl/resources/language/sv.json
new file mode 100644
index 000000000..8935f966b
--- /dev/null
+++ b/library/intl/resources/language/sv.json
@@ -0,0 +1,738 @@
+{
+ "ps": {
+ "code": "ps",
+ "name": "afghanska"
+ },
+ "af": {
+ "code": "af",
+ "name": "afrikaans"
+ },
+ "agq": {
+ "code": "agq",
+ "name": "aghem"
+ },
+ "ak": {
+ "code": "ak",
+ "name": "akan"
+ },
+ "sq": {
+ "code": "sq",
+ "name": "albanska"
+ },
+ "en-US": {
+ "code": "en-US",
+ "name": "amerikansk engelska"
+ },
+ "am": {
+ "code": "am",
+ "name": "amhariska"
+ },
+ "ar": {
+ "code": "ar",
+ "name": "arabiska"
+ },
+ "hy": {
+ "code": "hy",
+ "name": "armeniska"
+ },
+ "ast": {
+ "code": "ast",
+ "name": "asturiska"
+ },
+ "asa": {
+ "code": "asa",
+ "name": "asu"
+ },
+ "en-AU": {
+ "code": "en-AU",
+ "name": "australisk engelska"
+ },
+ "az": {
+ "code": "az",
+ "name": "azerbajdzjanska"
+ },
+ "ksf": {
+ "code": "ksf",
+ "name": "bafia"
+ },
+ "bm": {
+ "code": "bm",
+ "name": "bambara"
+ },
+ "bas": {
+ "code": "bas",
+ "name": "basa"
+ },
+ "eu": {
+ "code": "eu",
+ "name": "baskiska"
+ },
+ "bez": {
+ "code": "bez",
+ "name": "bena"
+ },
+ "bn": {
+ "code": "bn",
+ "name": "bengali"
+ },
+ "dz": {
+ "code": "dz",
+ "name": "bhutanesiska"
+ },
+ "brx": {
+ "code": "brx",
+ "name": "bodo"
+ },
+ "bs": {
+ "code": "bs",
+ "name": "bosniska"
+ },
+ "pt-BR": {
+ "code": "pt-BR",
+ "name": "brasiliansk portugisiska"
+ },
+ "br": {
+ "code": "br",
+ "name": "bretonska"
+ },
+ "en-GB": {
+ "code": "en-GB",
+ "name": "brittisk engelska"
+ },
+ "bg": {
+ "code": "bg",
+ "name": "bulgariska"
+ },
+ "my": {
+ "code": "my",
+ "name": "burmesiska"
+ },
+ "tzm": {
+ "code": "tzm",
+ "name": "centralmarockansk tamazight"
+ },
+ "chr": {
+ "code": "chr",
+ "name": "cherokesiska"
+ },
+ "cgg": {
+ "code": "cgg",
+ "name": "chiga"
+ },
+ "da": {
+ "code": "da",
+ "name": "danska"
+ },
+ "ebu": {
+ "code": "ebu",
+ "name": "embu"
+ },
+ "en": {
+ "code": "en",
+ "name": "engelska"
+ },
+ "eo": {
+ "code": "eo",
+ "name": "esperanto"
+ },
+ "et": {
+ "code": "et",
+ "name": "estniska"
+ },
+ "pt-PT": {
+ "code": "pt-PT",
+ "name": "europeisk portugisiska"
+ },
+ "es-ES": {
+ "code": "es-ES",
+ "name": "europeisk spanska"
+ },
+ "ee": {
+ "code": "ee",
+ "name": "ewe"
+ },
+ "ewo": {
+ "code": "ewo",
+ "name": "ewondo"
+ },
+ "fil": {
+ "code": "fil",
+ "name": "filippinska"
+ },
+ "fi": {
+ "code": "fi",
+ "name": "finska"
+ },
+ "nl-BE": {
+ "code": "nl-BE",
+ "name": "flamländska"
+ },
+ "fr": {
+ "code": "fr",
+ "name": "franska"
+ },
+ "fur": {
+ "code": "fur",
+ "name": "friulianska"
+ },
+ "ff": {
+ "code": "ff",
+ "name": "fulani"
+ },
+ "fo": {
+ "code": "fo",
+ "name": "färöiska"
+ },
+ "zh-Hans": {
+ "code": "zh-Hans",
+ "name": "förenklad kinesiska"
+ },
+ "gl": {
+ "code": "gl",
+ "name": "galiciska"
+ },
+ "ses": {
+ "code": "ses",
+ "name": "Gao-songhay"
+ },
+ "ka": {
+ "code": "ka",
+ "name": "georgiska"
+ },
+ "el": {
+ "code": "el",
+ "name": "grekiska"
+ },
+ "kl": {
+ "code": "kl",
+ "name": "grönländska"
+ },
+ "gu": {
+ "code": "gu",
+ "name": "gujarati"
+ },
+ "guz": {
+ "code": "guz",
+ "name": "gusii"
+ },
+ "ha": {
+ "code": "ha",
+ "name": "hausa"
+ },
+ "he": {
+ "code": "he",
+ "name": "hebreiska"
+ },
+ "hi": {
+ "code": "hi",
+ "name": "hindi"
+ },
+ "gd": {
+ "code": "gd",
+ "name": "höglandsskotska"
+ },
+ "hsb": {
+ "code": "hsb",
+ "name": "högsorbiska"
+ },
+ "id": {
+ "code": "id",
+ "name": "indonesiska"
+ },
+ "ga": {
+ "code": "ga",
+ "name": "iriska"
+ },
+ "is": {
+ "code": "is",
+ "name": "isländska"
+ },
+ "it": {
+ "code": "it",
+ "name": "italienska"
+ },
+ "ja": {
+ "code": "ja",
+ "name": "japanska"
+ },
+ "dyo": {
+ "code": "dyo",
+ "name": "jola-fonyi"
+ },
+ "kab": {
+ "code": "kab",
+ "name": "kabyliska"
+ },
+ "kln": {
+ "code": "kln",
+ "name": "kalenjin"
+ },
+ "kam": {
+ "code": "kam",
+ "name": "kamba"
+ },
+ "km": {
+ "code": "km",
+ "name": "kambodjanska"
+ },
+ "en-CA": {
+ "code": "en-CA",
+ "name": "kanadensisk engelska"
+ },
+ "fr-CA": {
+ "code": "fr-CA",
+ "name": "kanadensisk franska"
+ },
+ "kn": {
+ "code": "kn",
+ "name": "kannada"
+ },
+ "kea": {
+ "code": "kea",
+ "name": "kapverdiska"
+ },
+ "ks": {
+ "code": "ks",
+ "name": "kashmiriska"
+ },
+ "ca": {
+ "code": "ca",
+ "name": "katalanska"
+ },
+ "kk": {
+ "code": "kk",
+ "name": "kazakiska"
+ },
+ "ki": {
+ "code": "ki",
+ "name": "kikuyu"
+ },
+ "jmc": {
+ "code": "jmc",
+ "name": "kimashami"
+ },
+ "zh": {
+ "code": "zh",
+ "name": "kinesiska"
+ },
+ "ky": {
+ "code": "ky",
+ "name": "kirgisiska"
+ },
+ "ksb": {
+ "code": "ksb",
+ "name": "kisambaa"
+ },
+ "swc": {
+ "code": "swc",
+ "name": "Kongo-swahili"
+ },
+ "ko": {
+ "code": "ko",
+ "name": "koreanska"
+ },
+ "hr": {
+ "code": "hr",
+ "name": "kroatiska"
+ },
+ "nmg": {
+ "code": "nmg",
+ "name": "kwasio"
+ },
+ "ksh": {
+ "code": "ksh",
+ "name": "kölniska"
+ },
+ "lag": {
+ "code": "lag",
+ "name": "langi"
+ },
+ "lo": {
+ "code": "lo",
+ "name": "laotiska"
+ },
+ "lv": {
+ "code": "lv",
+ "name": "lettiska"
+ },
+ "ln": {
+ "code": "ln",
+ "name": "lingala"
+ },
+ "lt": {
+ "code": "lt",
+ "name": "litauiska"
+ },
+ "lu": {
+ "code": "lu",
+ "name": "luba-katanga"
+ },
+ "lg": {
+ "code": "lg",
+ "name": "luganda"
+ },
+ "luy": {
+ "code": "luy",
+ "name": "luhya"
+ },
+ "luo": {
+ "code": "luo",
+ "name": "Luo"
+ },
+ "xog": {
+ "code": "xog",
+ "name": "lusoga"
+ },
+ "lb": {
+ "code": "lb",
+ "name": "luxemburgiska"
+ },
+ "dsb": {
+ "code": "dsb",
+ "name": "lågsorbiska"
+ },
+ "mk": {
+ "code": "mk",
+ "name": "makedonska"
+ },
+ "mgh": {
+ "code": "mgh",
+ "name": "makhuwa-meetto"
+ },
+ "kde": {
+ "code": "kde",
+ "name": "makonde"
+ },
+ "mg": {
+ "code": "mg",
+ "name": "malagassiska"
+ },
+ "ms": {
+ "code": "ms",
+ "name": "malajiska"
+ },
+ "ml": {
+ "code": "ml",
+ "name": "malayalam"
+ },
+ "mt": {
+ "code": "mt",
+ "name": "maltesiska"
+ },
+ "mr": {
+ "code": "mr",
+ "name": "marathi"
+ },
+ "zgh": {
+ "code": "zgh",
+ "name": "marockansk standard-tamazight"
+ },
+ "mas": {
+ "code": "mas",
+ "name": "massajiska"
+ },
+ "mfe": {
+ "code": "mfe",
+ "name": "mauritansk kreol"
+ },
+ "mer": {
+ "code": "mer",
+ "name": "meru"
+ },
+ "es-MX": {
+ "code": "es-MX",
+ "name": "mexikansk spanska"
+ },
+ "ar-001": {
+ "code": "ar-001",
+ "name": "modern standardarabiska"
+ },
+ "ro-MD": {
+ "code": "ro-MD",
+ "name": "moldaviska"
+ },
+ "mn": {
+ "code": "mn",
+ "name": "mongoliska"
+ },
+ "mua": {
+ "code": "mua",
+ "name": "mundang"
+ },
+ "naq": {
+ "code": "naq",
+ "name": "nama"
+ },
+ "nl": {
+ "code": "nl",
+ "name": "nederländska"
+ },
+ "ne": {
+ "code": "ne",
+ "name": "nepalesiska"
+ },
+ "jgo": {
+ "code": "jgo",
+ "name": "ngomba"
+ },
+ "nd": {
+ "code": "nd",
+ "name": "nordndebele"
+ },
+ "se": {
+ "code": "se",
+ "name": "nordsamiska"
+ },
+ "nb": {
+ "code": "nb",
+ "name": "norskt bokmål"
+ },
+ "nus": {
+ "code": "nus",
+ "name": "nuer"
+ },
+ "nyn": {
+ "code": "nyn",
+ "name": "nyankole"
+ },
+ "nn": {
+ "code": "nn",
+ "name": "nynorska"
+ },
+ "or": {
+ "code": "or",
+ "name": "oriya"
+ },
+ "fa": {
+ "code": "fa",
+ "name": "persiska"
+ },
+ "pl": {
+ "code": "pl",
+ "name": "polska"
+ },
+ "pt": {
+ "code": "pt",
+ "name": "portugisiska"
+ },
+ "pa": {
+ "code": "pa",
+ "name": "punjabi"
+ },
+ "rof": {
+ "code": "rof",
+ "name": "rombo"
+ },
+ "ro": {
+ "code": "ro",
+ "name": "rumänska"
+ },
+ "rn": {
+ "code": "rn",
+ "name": "rundi"
+ },
+ "rwk": {
+ "code": "rwk",
+ "name": "rwa"
+ },
+ "ru": {
+ "code": "ru",
+ "name": "ryska"
+ },
+ "rm": {
+ "code": "rm",
+ "name": "rätoromanska"
+ },
+ "saq": {
+ "code": "saq",
+ "name": "samburu"
+ },
+ "sg": {
+ "code": "sg",
+ "name": "sango"
+ },
+ "sbp": {
+ "code": "sbp",
+ "name": "sangu"
+ },
+ "gsw": {
+ "code": "gsw",
+ "name": "schweizertyska"
+ },
+ "fr-CH": {
+ "code": "fr-CH",
+ "name": "schweizisk franska"
+ },
+ "de-CH": {
+ "code": "de-CH",
+ "name": "schweizisk högtyska"
+ },
+ "seh": {
+ "code": "seh",
+ "name": "sena"
+ },
+ "sr": {
+ "code": "sr",
+ "name": "serbiska"
+ },
+ "sn": {
+ "code": "sn",
+ "name": "shona"
+ },
+ "si": {
+ "code": "si",
+ "name": "singalesiska"
+ },
+ "sk": {
+ "code": "sk",
+ "name": "slovakiska"
+ },
+ "sl": {
+ "code": "sl",
+ "name": "slovenska"
+ },
+ "so": {
+ "code": "so",
+ "name": "somaliska"
+ },
+ "es": {
+ "code": "es",
+ "name": "spanska"
+ },
+ "sv": {
+ "code": "sv",
+ "name": "svenska"
+ },
+ "sw": {
+ "code": "sw",
+ "name": "swahili"
+ },
+ "shi": {
+ "code": "shi",
+ "name": "tachelhit"
+ },
+ "dav": {
+ "code": "dav",
+ "name": "taita"
+ },
+ "ta": {
+ "code": "ta",
+ "name": "tamil"
+ },
+ "twq": {
+ "code": "twq",
+ "name": "tasawaq"
+ },
+ "te": {
+ "code": "te",
+ "name": "telugiska"
+ },
+ "teo": {
+ "code": "teo",
+ "name": "teso"
+ },
+ "th": {
+ "code": "th",
+ "name": "thailändska"
+ },
+ "bo": {
+ "code": "bo",
+ "name": "tibetanska"
+ },
+ "ti": {
+ "code": "ti",
+ "name": "tigrinja"
+ },
+ "khq": {
+ "code": "khq",
+ "name": "Timbuktu-songhoy"
+ },
+ "cs": {
+ "code": "cs",
+ "name": "tjeckiska"
+ },
+ "to": {
+ "code": "to",
+ "name": "tonganska"
+ },
+ "zh-Hant": {
+ "code": "zh-Hant",
+ "name": "traditionell kinesiska"
+ },
+ "tr": {
+ "code": "tr",
+ "name": "turkiska"
+ },
+ "de": {
+ "code": "de",
+ "name": "tyska"
+ },
+ "ug": {
+ "code": "ug",
+ "name": "uiguriska"
+ },
+ "uk": {
+ "code": "uk",
+ "name": "ukrainska"
+ },
+ "hu": {
+ "code": "hu",
+ "name": "ungerska"
+ },
+ "ur": {
+ "code": "ur",
+ "name": "urdu"
+ },
+ "uz": {
+ "code": "uz",
+ "name": "uzbekiska"
+ },
+ "vai": {
+ "code": "vai",
+ "name": "vaj"
+ },
+ "vi": {
+ "code": "vi",
+ "name": "vietnamesiska"
+ },
+ "be": {
+ "code": "be",
+ "name": "vitryska"
+ },
+ "vun": {
+ "code": "vun",
+ "name": "vunjo"
+ },
+ "fy": {
+ "code": "fy",
+ "name": "västfrisiska"
+ },
+ "cy": {
+ "code": "cy",
+ "name": "walesiska"
+ },
+ "wae": {
+ "code": "wae",
+ "name": "walsertyska"
+ },
+ "yav": {
+ "code": "yav",
+ "name": "yangben"
+ },
+ "yo": {
+ "code": "yo",
+ "name": "yoruba"
+ },
+ "dje": {
+ "code": "dje",
+ "name": "zarma"
+ },
+ "zu": {
+ "code": "zu",
+ "name": "zulu"
+ },
+ "de-AT": {
+ "code": "de-AT",
+ "name": "österrikisk tyska"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/language/sw.json b/library/intl/resources/language/sw.json
new file mode 100644
index 000000000..db42e1e9e
--- /dev/null
+++ b/library/intl/resources/language/sw.json
@@ -0,0 +1,738 @@
+{
+ "ast": {
+ "code": "ast",
+ "name": "Asturian"
+ },
+ "brx": {
+ "code": "brx",
+ "name": "Bodo"
+ },
+ "tzm": {
+ "code": "tzm",
+ "name": "Central Atlas Tamazight"
+ },
+ "ksh": {
+ "code": "ksh",
+ "name": "Colognian"
+ },
+ "de-AT": {
+ "code": "de-AT",
+ "name": "de_AT"
+ },
+ "de-CH": {
+ "code": "de-CH",
+ "name": "de_CH"
+ },
+ "en-AU": {
+ "code": "en-AU",
+ "name": "en_AU"
+ },
+ "en-CA": {
+ "code": "en-CA",
+ "name": "en_CA"
+ },
+ "en-GB": {
+ "code": "en-GB",
+ "name": "en_GB"
+ },
+ "en-US": {
+ "code": "en-US",
+ "name": "en_US"
+ },
+ "es-MX": {
+ "code": "es-MX",
+ "name": "es_MX"
+ },
+ "fr-CA": {
+ "code": "fr-CA",
+ "name": "fr_CA"
+ },
+ "fr-CH": {
+ "code": "fr-CH",
+ "name": "fr_CH"
+ },
+ "fur": {
+ "code": "fur",
+ "name": "Friulian"
+ },
+ "af": {
+ "code": "af",
+ "name": "Kiafrikana"
+ },
+ "agq": {
+ "code": "agq",
+ "name": "Kiaghem"
+ },
+ "is": {
+ "code": "is",
+ "name": "Kiaisilandi"
+ },
+ "fa": {
+ "code": "fa",
+ "name": "Kiajemi"
+ },
+ "ak": {
+ "code": "ak",
+ "name": "Kiakani"
+ },
+ "sq": {
+ "code": "sq",
+ "name": "Kialbania"
+ },
+ "am": {
+ "code": "am",
+ "name": "Kiamhari"
+ },
+ "ar": {
+ "code": "ar",
+ "name": "Kiarabu"
+ },
+ "ar-001": {
+ "code": "ar-001",
+ "name": "Kiarabu Sanifu cha Kisasa"
+ },
+ "hy": {
+ "code": "hy",
+ "name": "Kiarmenia"
+ },
+ "asa": {
+ "code": "asa",
+ "name": "Kiasu"
+ },
+ "ga": {
+ "code": "ga",
+ "name": "Kiayalandi"
+ },
+ "az": {
+ "code": "az",
+ "name": "Kiazabajani"
+ },
+ "ksf": {
+ "code": "ksf",
+ "name": "Kibafia"
+ },
+ "bm": {
+ "code": "bm",
+ "name": "Kibambara"
+ },
+ "bas": {
+ "code": "bas",
+ "name": "Kibasaa"
+ },
+ "eu": {
+ "code": "eu",
+ "name": "Kibasque"
+ },
+ "be": {
+ "code": "be",
+ "name": "Kibelarusi"
+ },
+ "bez": {
+ "code": "bez",
+ "name": "Kibena"
+ },
+ "bn": {
+ "code": "bn",
+ "name": "Kibengali"
+ },
+ "nb": {
+ "code": "nb",
+ "name": "Kibokmal cha Norwe"
+ },
+ "bs": {
+ "code": "bs",
+ "name": "Kibosnia"
+ },
+ "br": {
+ "code": "br",
+ "name": "Kibretoni"
+ },
+ "bg": {
+ "code": "bg",
+ "name": "Kibulgaria"
+ },
+ "my": {
+ "code": "my",
+ "name": "Kiburma"
+ },
+ "cs": {
+ "code": "cs",
+ "name": "Kicheki"
+ },
+ "chr": {
+ "code": "chr",
+ "name": "Kicherokee"
+ },
+ "cgg": {
+ "code": "cgg",
+ "name": "Kichiga"
+ },
+ "zh": {
+ "code": "zh",
+ "name": "Kichina"
+ },
+ "zh-Hant": {
+ "code": "zh-Hant",
+ "name": "Kichina cha Jadi"
+ },
+ "da": {
+ "code": "da",
+ "name": "Kidenmaki"
+ },
+ "dsb": {
+ "code": "dsb",
+ "name": "Kidolnoserbski"
+ },
+ "he": {
+ "code": "he",
+ "name": "Kiebrania"
+ },
+ "ebu": {
+ "code": "ebu",
+ "name": "Kiembu"
+ },
+ "eo": {
+ "code": "eo",
+ "name": "Kiesperanto"
+ },
+ "et": {
+ "code": "et",
+ "name": "Kiestonia"
+ },
+ "ee": {
+ "code": "ee",
+ "name": "Kiewe"
+ },
+ "ewo": {
+ "code": "ewo",
+ "name": "Kiewondo"
+ },
+ "fr": {
+ "code": "fr",
+ "name": "Kifaransa"
+ },
+ "fo": {
+ "code": "fo",
+ "name": "Kifaroe"
+ },
+ "fil": {
+ "code": "fil",
+ "name": "Kifilipino"
+ },
+ "fi": {
+ "code": "fi",
+ "name": "Kifinlandi"
+ },
+ "fy": {
+ "code": "fy",
+ "name": "Kifrisia cha Magharibi"
+ },
+ "ff": {
+ "code": "ff",
+ "name": "Kifulfulde"
+ },
+ "gd": {
+ "code": "gd",
+ "name": "Kigaeli cha Uskoti"
+ },
+ "gl": {
+ "code": "gl",
+ "name": "Kigalisi"
+ },
+ "lg": {
+ "code": "lg",
+ "name": "Kiganda"
+ },
+ "el": {
+ "code": "el",
+ "name": "Kigiriki"
+ },
+ "gu": {
+ "code": "gu",
+ "name": "Kigujarati"
+ },
+ "ha": {
+ "code": "ha",
+ "name": "Kihausa"
+ },
+ "hi": {
+ "code": "hi",
+ "name": "Kihindi"
+ },
+ "es": {
+ "code": "es",
+ "name": "Kihispania"
+ },
+ "es-ES": {
+ "code": "es-ES",
+ "name": "Kihispania cha Ulaya"
+ },
+ "nl": {
+ "code": "nl",
+ "name": "Kiholanzi"
+ },
+ "hu": {
+ "code": "hu",
+ "name": "Kihungari"
+ },
+ "id": {
+ "code": "id",
+ "name": "Kiindonesia"
+ },
+ "en": {
+ "code": "en",
+ "name": "Kiingereza"
+ },
+ "it": {
+ "code": "it",
+ "name": "Kiitaliano"
+ },
+ "luo": {
+ "code": "luo",
+ "name": "Kijaluo"
+ },
+ "ja": {
+ "code": "ja",
+ "name": "Kijapani"
+ },
+ "de": {
+ "code": "de",
+ "name": "Kijerumani"
+ },
+ "gsw": {
+ "code": "gsw",
+ "name": "Kijerumani cha Uswisi"
+ },
+ "ka": {
+ "code": "ka",
+ "name": "Kijojia"
+ },
+ "dyo": {
+ "code": "dyo",
+ "name": "Kijola-Fonyi"
+ },
+ "kea": {
+ "code": "kea",
+ "name": "Kikabuverdianu"
+ },
+ "kab": {
+ "code": "kab",
+ "name": "Kikabylia"
+ },
+ "kl": {
+ "code": "kl",
+ "name": "Kikalaallisut"
+ },
+ "kln": {
+ "code": "kln",
+ "name": "Kikalenjin"
+ },
+ "kam": {
+ "code": "kam",
+ "name": "Kikamba"
+ },
+ "km": {
+ "code": "km",
+ "name": "Kikambodia"
+ },
+ "kn": {
+ "code": "kn",
+ "name": "Kikannada"
+ },
+ "ks": {
+ "code": "ks",
+ "name": "Kikashmiri"
+ },
+ "ca": {
+ "code": "ca",
+ "name": "Kikatalani"
+ },
+ "kk": {
+ "code": "kk",
+ "name": "Kikazaki"
+ },
+ "ki": {
+ "code": "ki",
+ "name": "Kikikuyu"
+ },
+ "ky": {
+ "code": "ky",
+ "name": "Kikirigizi"
+ },
+ "guz": {
+ "code": "guz",
+ "name": "Kikisii"
+ },
+ "ko": {
+ "code": "ko",
+ "name": "Kikorea"
+ },
+ "khq": {
+ "code": "khq",
+ "name": "Kikoyra Chiini"
+ },
+ "nmg": {
+ "code": "nmg",
+ "name": "Kikwasio"
+ },
+ "lo": {
+ "code": "lo",
+ "name": "Kilaosi"
+ },
+ "lb": {
+ "code": "lb",
+ "name": "Kilasembagi"
+ },
+ "lv": {
+ "code": "lv",
+ "name": "Kilatvia"
+ },
+ "ln": {
+ "code": "ln",
+ "name": "Kilingala"
+ },
+ "lt": {
+ "code": "lt",
+ "name": "Kilithuania"
+ },
+ "lu": {
+ "code": "lu",
+ "name": "Kiluba-Katanga"
+ },
+ "luy": {
+ "code": "luy",
+ "name": "Kiluhya"
+ },
+ "mas": {
+ "code": "mas",
+ "name": "Kimaasai"
+ },
+ "jmc": {
+ "code": "jmc",
+ "name": "Kimachame"
+ },
+ "mgh": {
+ "code": "mgh",
+ "name": "Kimakhuwa-Meetto"
+ },
+ "kde": {
+ "code": "kde",
+ "name": "Kimakonde"
+ },
+ "ml": {
+ "code": "ml",
+ "name": "Kimalayalam"
+ },
+ "ms": {
+ "code": "ms",
+ "name": "Kimalesia"
+ },
+ "mt": {
+ "code": "mt",
+ "name": "Kimalta"
+ },
+ "mr": {
+ "code": "mr",
+ "name": "Kimarathi"
+ },
+ "mk": {
+ "code": "mk",
+ "name": "Kimasedonia"
+ },
+ "mer": {
+ "code": "mer",
+ "name": "Kimeru"
+ },
+ "mn": {
+ "code": "mn",
+ "name": "Kimongolia"
+ },
+ "mfe": {
+ "code": "mfe",
+ "name": "Kimoriseni"
+ },
+ "mua": {
+ "code": "mua",
+ "name": "Kimundang"
+ },
+ "naq": {
+ "code": "naq",
+ "name": "Kinama"
+ },
+ "nd": {
+ "code": "nd",
+ "name": "Kindebele cha Kaskazini"
+ },
+ "ne": {
+ "code": "ne",
+ "name": "Kinepali"
+ },
+ "jgo": {
+ "code": "jgo",
+ "name": "Kingomba"
+ },
+ "swc": {
+ "code": "swc",
+ "name": "Kingwana"
+ },
+ "nn": {
+ "code": "nn",
+ "name": "Kinorwe Kipya"
+ },
+ "nus": {
+ "code": "nus",
+ "name": "Kinuer"
+ },
+ "nyn": {
+ "code": "nyn",
+ "name": "Kinyankole"
+ },
+ "or": {
+ "code": "or",
+ "name": "Kioriya"
+ },
+ "ps": {
+ "code": "ps",
+ "name": "Kipashto"
+ },
+ "pl": {
+ "code": "pl",
+ "name": "Kipolandi"
+ },
+ "pa": {
+ "code": "pa",
+ "name": "Kipunjabi"
+ },
+ "lag": {
+ "code": "lag",
+ "name": "Kirangi"
+ },
+ "pt": {
+ "code": "pt",
+ "name": "Kireno"
+ },
+ "ro": {
+ "code": "ro",
+ "name": "Kiromania"
+ },
+ "rm": {
+ "code": "rm",
+ "name": "Kiromanshi"
+ },
+ "rof": {
+ "code": "rof",
+ "name": "Kirombo"
+ },
+ "rn": {
+ "code": "rn",
+ "name": "Kirundi"
+ },
+ "ru": {
+ "code": "ru",
+ "name": "Kirusi"
+ },
+ "rwk": {
+ "code": "rwk",
+ "name": "Kirwo"
+ },
+ "ksb": {
+ "code": "ksb",
+ "name": "Kisambaa"
+ },
+ "saq": {
+ "code": "saq",
+ "name": "Kisamburu"
+ },
+ "se": {
+ "code": "se",
+ "name": "Kisami cha Kaskazini"
+ },
+ "sg": {
+ "code": "sg",
+ "name": "Kisango"
+ },
+ "sbp": {
+ "code": "sbp",
+ "name": "Kisangu"
+ },
+ "seh": {
+ "code": "seh",
+ "name": "Kisena"
+ },
+ "sr": {
+ "code": "sr",
+ "name": "Kiserbia"
+ },
+ "sn": {
+ "code": "sn",
+ "name": "Kishona"
+ },
+ "si": {
+ "code": "si",
+ "name": "Kisinhala"
+ },
+ "sk": {
+ "code": "sk",
+ "name": "Kislovakia"
+ },
+ "sl": {
+ "code": "sl",
+ "name": "Kislovenia"
+ },
+ "xog": {
+ "code": "xog",
+ "name": "Kisoga"
+ },
+ "so": {
+ "code": "so",
+ "name": "Kisomali"
+ },
+ "sw": {
+ "code": "sw",
+ "name": "Kiswahili"
+ },
+ "sv": {
+ "code": "sv",
+ "name": "Kiswidi"
+ },
+ "th": {
+ "code": "th",
+ "name": "Kitailandi"
+ },
+ "dav": {
+ "code": "dav",
+ "name": "Kitaita"
+ },
+ "ta": {
+ "code": "ta",
+ "name": "Kitamil"
+ },
+ "twq": {
+ "code": "twq",
+ "name": "Kitasawaq"
+ },
+ "te": {
+ "code": "te",
+ "name": "Kitelugu"
+ },
+ "teo": {
+ "code": "teo",
+ "name": "Kiteso"
+ },
+ "bo": {
+ "code": "bo",
+ "name": "Kitibeti"
+ },
+ "ti": {
+ "code": "ti",
+ "name": "Kitigrinya"
+ },
+ "to": {
+ "code": "to",
+ "name": "Kitonga"
+ },
+ "tr": {
+ "code": "tr",
+ "name": "Kituruki"
+ },
+ "ug": {
+ "code": "ug",
+ "name": "Kiuiguri"
+ },
+ "uk": {
+ "code": "uk",
+ "name": "Kiukrania"
+ },
+ "ur": {
+ "code": "ur",
+ "name": "Kiurdu"
+ },
+ "uz": {
+ "code": "uz",
+ "name": "Kiuzbeki"
+ },
+ "vai": {
+ "code": "vai",
+ "name": "Kivai"
+ },
+ "vi": {
+ "code": "vi",
+ "name": "Kivietinamu"
+ },
+ "vun": {
+ "code": "vun",
+ "name": "Kivunjo"
+ },
+ "cy": {
+ "code": "cy",
+ "name": "Kiwelisi"
+ },
+ "yo": {
+ "code": "yo",
+ "name": "Kiyoruba"
+ },
+ "dje": {
+ "code": "dje",
+ "name": "Kizarma"
+ },
+ "dz": {
+ "code": "dz",
+ "name": "Kizongkha"
+ },
+ "zu": {
+ "code": "zu",
+ "name": "Kizulu"
+ },
+ "ses": {
+ "code": "ses",
+ "name": "Koyraboro Senni"
+ },
+ "hr": {
+ "code": "hr",
+ "name": "Kroeshia"
+ },
+ "mg": {
+ "code": "mg",
+ "name": "Malagasi"
+ },
+ "nl-BE": {
+ "code": "nl-BE",
+ "name": "nl_BE"
+ },
+ "pt-BR": {
+ "code": "pt-BR",
+ "name": "pt_BR"
+ },
+ "pt-PT": {
+ "code": "pt-PT",
+ "name": "pt_PT"
+ },
+ "ro-MD": {
+ "code": "ro-MD",
+ "name": "ro_MD"
+ },
+ "shi": {
+ "code": "shi",
+ "name": "Tachelhit"
+ },
+ "zgh": {
+ "code": "zgh",
+ "name": "Tamaziti Msingi ya Kimoroko"
+ },
+ "hsb": {
+ "code": "hsb",
+ "name": "Upper Sorbian"
+ },
+ "wae": {
+ "code": "wae",
+ "name": "Walser"
+ },
+ "yav": {
+ "code": "yav",
+ "name": "Yangben"
+ },
+ "zh-Hans": {
+ "code": "zh-Hans",
+ "name": "zh_Hans"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/language/swc.json b/library/intl/resources/language/swc.json
new file mode 100644
index 000000000..f10d6289b
--- /dev/null
+++ b/library/intl/resources/language/swc.json
@@ -0,0 +1,738 @@
+{
+ "af": {
+ "code": "af",
+ "name": "Afrikaans"
+ },
+ "agq": {
+ "code": "agq",
+ "name": "Aghem"
+ },
+ "sq": {
+ "code": "sq",
+ "name": "Albanian"
+ },
+ "ar-001": {
+ "code": "ar-001",
+ "name": "ar_001"
+ },
+ "hy": {
+ "code": "hy",
+ "name": "Armenian"
+ },
+ "ast": {
+ "code": "ast",
+ "name": "Asturian"
+ },
+ "asa": {
+ "code": "asa",
+ "name": "Asu"
+ },
+ "az": {
+ "code": "az",
+ "name": "Azerbaijani"
+ },
+ "ksf": {
+ "code": "ksf",
+ "name": "Bafia"
+ },
+ "bm": {
+ "code": "bm",
+ "name": "Bambara"
+ },
+ "bas": {
+ "code": "bas",
+ "name": "Basaa"
+ },
+ "eu": {
+ "code": "eu",
+ "name": "Basque"
+ },
+ "bez": {
+ "code": "bez",
+ "name": "Bena"
+ },
+ "brx": {
+ "code": "brx",
+ "name": "Bodo"
+ },
+ "bs": {
+ "code": "bs",
+ "name": "Bosnian"
+ },
+ "br": {
+ "code": "br",
+ "name": "Breton"
+ },
+ "ca": {
+ "code": "ca",
+ "name": "Catalan"
+ },
+ "tzm": {
+ "code": "tzm",
+ "name": "Central Atlas Tamazight"
+ },
+ "chr": {
+ "code": "chr",
+ "name": "Cherokee"
+ },
+ "cgg": {
+ "code": "cgg",
+ "name": "Chiga"
+ },
+ "ksh": {
+ "code": "ksh",
+ "name": "Colognian"
+ },
+ "hr": {
+ "code": "hr",
+ "name": "Croatian"
+ },
+ "da": {
+ "code": "da",
+ "name": "Danish"
+ },
+ "de-AT": {
+ "code": "de-AT",
+ "name": "de_AT"
+ },
+ "de-CH": {
+ "code": "de-CH",
+ "name": "de_CH"
+ },
+ "dz": {
+ "code": "dz",
+ "name": "Dzongkha"
+ },
+ "ebu": {
+ "code": "ebu",
+ "name": "Embu"
+ },
+ "en-AU": {
+ "code": "en-AU",
+ "name": "en_AU"
+ },
+ "en-CA": {
+ "code": "en-CA",
+ "name": "en_CA"
+ },
+ "en-GB": {
+ "code": "en-GB",
+ "name": "en_GB"
+ },
+ "en-US": {
+ "code": "en-US",
+ "name": "en_US"
+ },
+ "es-ES": {
+ "code": "es-ES",
+ "name": "es_ES"
+ },
+ "es-MX": {
+ "code": "es-MX",
+ "name": "es_MX"
+ },
+ "eo": {
+ "code": "eo",
+ "name": "Esperanto"
+ },
+ "et": {
+ "code": "et",
+ "name": "Estonian"
+ },
+ "ee": {
+ "code": "ee",
+ "name": "Ewe"
+ },
+ "ewo": {
+ "code": "ewo",
+ "name": "Ewondo"
+ },
+ "fo": {
+ "code": "fo",
+ "name": "Faroese"
+ },
+ "fil": {
+ "code": "fil",
+ "name": "Filipino"
+ },
+ "fi": {
+ "code": "fi",
+ "name": "Finnish"
+ },
+ "fr-CA": {
+ "code": "fr-CA",
+ "name": "fr_CA"
+ },
+ "fr-CH": {
+ "code": "fr-CH",
+ "name": "fr_CH"
+ },
+ "fur": {
+ "code": "fur",
+ "name": "Friulian"
+ },
+ "ff": {
+ "code": "ff",
+ "name": "Fulah"
+ },
+ "gl": {
+ "code": "gl",
+ "name": "Galician"
+ },
+ "lg": {
+ "code": "lg",
+ "name": "Ganda"
+ },
+ "ka": {
+ "code": "ka",
+ "name": "Georgian"
+ },
+ "gu": {
+ "code": "gu",
+ "name": "Gujarati"
+ },
+ "guz": {
+ "code": "guz",
+ "name": "Gusii"
+ },
+ "he": {
+ "code": "he",
+ "name": "Hebrew"
+ },
+ "is": {
+ "code": "is",
+ "name": "Icelandic"
+ },
+ "ga": {
+ "code": "ga",
+ "name": "Irish"
+ },
+ "dyo": {
+ "code": "dyo",
+ "name": "Jola-Fonyi"
+ },
+ "kea": {
+ "code": "kea",
+ "name": "Kabuverdianu"
+ },
+ "kab": {
+ "code": "kab",
+ "name": "Kabyle"
+ },
+ "kl": {
+ "code": "kl",
+ "name": "Kalaallisut"
+ },
+ "kln": {
+ "code": "kln",
+ "name": "Kalenjin"
+ },
+ "kam": {
+ "code": "kam",
+ "name": "Kamba"
+ },
+ "kn": {
+ "code": "kn",
+ "name": "Kannada"
+ },
+ "ks": {
+ "code": "ks",
+ "name": "Kashmiri"
+ },
+ "kk": {
+ "code": "kk",
+ "name": "Kazakh"
+ },
+ "fa": {
+ "code": "fa",
+ "name": "Kiajemi"
+ },
+ "ak": {
+ "code": "ak",
+ "name": "Kiakan"
+ },
+ "am": {
+ "code": "am",
+ "name": "Kiamhari"
+ },
+ "ar": {
+ "code": "ar",
+ "name": "Kiarabu"
+ },
+ "bn": {
+ "code": "bn",
+ "name": "Kibangla"
+ },
+ "be": {
+ "code": "be",
+ "name": "Kibelarusi"
+ },
+ "bg": {
+ "code": "bg",
+ "name": "Kibulgaria"
+ },
+ "my": {
+ "code": "my",
+ "name": "Kiburma"
+ },
+ "cs": {
+ "code": "cs",
+ "name": "Kichecki"
+ },
+ "zh": {
+ "code": "zh",
+ "name": "Kichina"
+ },
+ "fr": {
+ "code": "fr",
+ "name": "Kifaransa"
+ },
+ "el": {
+ "code": "el",
+ "name": "Kigiriki"
+ },
+ "ha": {
+ "code": "ha",
+ "name": "Kihausa"
+ },
+ "hi": {
+ "code": "hi",
+ "name": "Kihindi"
+ },
+ "es": {
+ "code": "es",
+ "name": "Kihispania"
+ },
+ "nl": {
+ "code": "nl",
+ "name": "Kiholanzi"
+ },
+ "hu": {
+ "code": "hu",
+ "name": "Kihungari"
+ },
+ "id": {
+ "code": "id",
+ "name": "Kiindonesia"
+ },
+ "it": {
+ "code": "it",
+ "name": "Kiitaliano"
+ },
+ "ja": {
+ "code": "ja",
+ "name": "Kijapani"
+ },
+ "de": {
+ "code": "de",
+ "name": "Kijerumani"
+ },
+ "km": {
+ "code": "km",
+ "name": "Kikambodia"
+ },
+ "ko": {
+ "code": "ko",
+ "name": "Kikorea"
+ },
+ "ki": {
+ "code": "ki",
+ "name": "Kikuyu"
+ },
+ "ms": {
+ "code": "ms",
+ "name": "Kimalesia"
+ },
+ "ne": {
+ "code": "ne",
+ "name": "Kinepali"
+ },
+ "en": {
+ "code": "en",
+ "name": "Kingereza"
+ },
+ "pl": {
+ "code": "pl",
+ "name": "Kipolandi"
+ },
+ "pa": {
+ "code": "pa",
+ "name": "Kipunjabi"
+ },
+ "pt": {
+ "code": "pt",
+ "name": "Kireno"
+ },
+ "ro": {
+ "code": "ro",
+ "name": "Kiromania"
+ },
+ "ru": {
+ "code": "ru",
+ "name": "Kirusi"
+ },
+ "so": {
+ "code": "so",
+ "name": "Kisomali"
+ },
+ "sw": {
+ "code": "sw",
+ "name": "Kiswahili"
+ },
+ "swc": {
+ "code": "swc",
+ "name": "Kiswahili ya Kongo"
+ },
+ "sv": {
+ "code": "sv",
+ "name": "Kiswidi"
+ },
+ "th": {
+ "code": "th",
+ "name": "Kitailandi"
+ },
+ "ta": {
+ "code": "ta",
+ "name": "Kitamil"
+ },
+ "tr": {
+ "code": "tr",
+ "name": "Kituruki"
+ },
+ "uk": {
+ "code": "uk",
+ "name": "Kiukrania"
+ },
+ "ur": {
+ "code": "ur",
+ "name": "Kiurdu"
+ },
+ "vi": {
+ "code": "vi",
+ "name": "Kivietinamu"
+ },
+ "yo": {
+ "code": "yo",
+ "name": "Kiyoruba"
+ },
+ "zu": {
+ "code": "zu",
+ "name": "Kizulu"
+ },
+ "khq": {
+ "code": "khq",
+ "name": "Koyra Chiini"
+ },
+ "ses": {
+ "code": "ses",
+ "name": "Koyraboro Senni"
+ },
+ "nmg": {
+ "code": "nmg",
+ "name": "Kwasio"
+ },
+ "ky": {
+ "code": "ky",
+ "name": "Kyrgyz"
+ },
+ "lag": {
+ "code": "lag",
+ "name": "Langi"
+ },
+ "lo": {
+ "code": "lo",
+ "name": "Lao"
+ },
+ "lv": {
+ "code": "lv",
+ "name": "Latvian"
+ },
+ "ln": {
+ "code": "ln",
+ "name": "Lingala"
+ },
+ "lt": {
+ "code": "lt",
+ "name": "Lithuanian"
+ },
+ "dsb": {
+ "code": "dsb",
+ "name": "Lower Sorbian"
+ },
+ "lu": {
+ "code": "lu",
+ "name": "Luba-Katanga"
+ },
+ "luo": {
+ "code": "luo",
+ "name": "Luo"
+ },
+ "lb": {
+ "code": "lb",
+ "name": "Luxembourgish"
+ },
+ "luy": {
+ "code": "luy",
+ "name": "Luyia"
+ },
+ "mk": {
+ "code": "mk",
+ "name": "Macedonian"
+ },
+ "jmc": {
+ "code": "jmc",
+ "name": "Machame"
+ },
+ "mgh": {
+ "code": "mgh",
+ "name": "Makhuwa-Meetto"
+ },
+ "kde": {
+ "code": "kde",
+ "name": "Makonde"
+ },
+ "mg": {
+ "code": "mg",
+ "name": "Malagasy"
+ },
+ "ml": {
+ "code": "ml",
+ "name": "Malayalam"
+ },
+ "mt": {
+ "code": "mt",
+ "name": "Maltese"
+ },
+ "mr": {
+ "code": "mr",
+ "name": "Marathi"
+ },
+ "mas": {
+ "code": "mas",
+ "name": "Masai"
+ },
+ "mer": {
+ "code": "mer",
+ "name": "Meru"
+ },
+ "mn": {
+ "code": "mn",
+ "name": "Mongolian"
+ },
+ "mfe": {
+ "code": "mfe",
+ "name": "Morisyen"
+ },
+ "mua": {
+ "code": "mua",
+ "name": "Mundang"
+ },
+ "naq": {
+ "code": "naq",
+ "name": "Nama"
+ },
+ "jgo": {
+ "code": "jgo",
+ "name": "Ngomba"
+ },
+ "nl-BE": {
+ "code": "nl-BE",
+ "name": "nl_BE"
+ },
+ "nd": {
+ "code": "nd",
+ "name": "North Ndebele"
+ },
+ "se": {
+ "code": "se",
+ "name": "Northern Sami"
+ },
+ "nb": {
+ "code": "nb",
+ "name": "Norwegian Bokmål"
+ },
+ "nn": {
+ "code": "nn",
+ "name": "Norwegian Nynorsk"
+ },
+ "nus": {
+ "code": "nus",
+ "name": "Nuer"
+ },
+ "nyn": {
+ "code": "nyn",
+ "name": "Nyankole"
+ },
+ "or": {
+ "code": "or",
+ "name": "Oriya"
+ },
+ "ps": {
+ "code": "ps",
+ "name": "Pashto"
+ },
+ "pt-BR": {
+ "code": "pt-BR",
+ "name": "pt_BR"
+ },
+ "pt-PT": {
+ "code": "pt-PT",
+ "name": "pt_PT"
+ },
+ "ro-MD": {
+ "code": "ro-MD",
+ "name": "ro_MD"
+ },
+ "rm": {
+ "code": "rm",
+ "name": "Romansh"
+ },
+ "rof": {
+ "code": "rof",
+ "name": "Rombo"
+ },
+ "rn": {
+ "code": "rn",
+ "name": "Rundi"
+ },
+ "rwk": {
+ "code": "rwk",
+ "name": "Rwa"
+ },
+ "saq": {
+ "code": "saq",
+ "name": "Samburu"
+ },
+ "sg": {
+ "code": "sg",
+ "name": "Sango"
+ },
+ "sbp": {
+ "code": "sbp",
+ "name": "Sangu"
+ },
+ "gd": {
+ "code": "gd",
+ "name": "Scottish Gaelic"
+ },
+ "seh": {
+ "code": "seh",
+ "name": "Sena"
+ },
+ "sr": {
+ "code": "sr",
+ "name": "Serbian"
+ },
+ "ksb": {
+ "code": "ksb",
+ "name": "Shambala"
+ },
+ "sn": {
+ "code": "sn",
+ "name": "Shona"
+ },
+ "si": {
+ "code": "si",
+ "name": "Sinhala"
+ },
+ "sk": {
+ "code": "sk",
+ "name": "Slovak"
+ },
+ "sl": {
+ "code": "sl",
+ "name": "Slovenian"
+ },
+ "xog": {
+ "code": "xog",
+ "name": "Soga"
+ },
+ "zgh": {
+ "code": "zgh",
+ "name": "Standard Moroccan Tamazight"
+ },
+ "gsw": {
+ "code": "gsw",
+ "name": "Swiss German"
+ },
+ "shi": {
+ "code": "shi",
+ "name": "Tachelhit"
+ },
+ "dav": {
+ "code": "dav",
+ "name": "Taita"
+ },
+ "twq": {
+ "code": "twq",
+ "name": "Tasawaq"
+ },
+ "te": {
+ "code": "te",
+ "name": "Telugu"
+ },
+ "teo": {
+ "code": "teo",
+ "name": "Teso"
+ },
+ "bo": {
+ "code": "bo",
+ "name": "Tibetan"
+ },
+ "ti": {
+ "code": "ti",
+ "name": "Tigrinya"
+ },
+ "to": {
+ "code": "to",
+ "name": "Tongan"
+ },
+ "hsb": {
+ "code": "hsb",
+ "name": "Upper Sorbian"
+ },
+ "ug": {
+ "code": "ug",
+ "name": "Uyghur"
+ },
+ "uz": {
+ "code": "uz",
+ "name": "Uzbek"
+ },
+ "vai": {
+ "code": "vai",
+ "name": "Vai"
+ },
+ "vun": {
+ "code": "vun",
+ "name": "Vunjo"
+ },
+ "wae": {
+ "code": "wae",
+ "name": "Walser"
+ },
+ "cy": {
+ "code": "cy",
+ "name": "Welsh"
+ },
+ "fy": {
+ "code": "fy",
+ "name": "Western Frisian"
+ },
+ "yav": {
+ "code": "yav",
+ "name": "Yangben"
+ },
+ "dje": {
+ "code": "dje",
+ "name": "Zarma"
+ },
+ "zh-Hans": {
+ "code": "zh-Hans",
+ "name": "zh_Hans"
+ },
+ "zh-Hant": {
+ "code": "zh-Hant",
+ "name": "zh_Hant"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/language/ta.json b/library/intl/resources/language/ta.json
new file mode 100644
index 000000000..b0c0f8ef9
--- /dev/null
+++ b/library/intl/resources/language/ta.json
@@ -0,0 +1,738 @@
+{
+ "ksh": {
+ "code": "ksh",
+ "name": "Colognian"
+ },
+ "wae": {
+ "code": "wae",
+ "name": "Walser"
+ },
+ "yav": {
+ "code": "yav",
+ "name": "Yangben"
+ },
+ "ak": {
+ "code": "ak",
+ "name": "அகானà¯"
+ },
+ "agq": {
+ "code": "agq",
+ "name": "அகெமà¯"
+ },
+ "asa": {
+ "code": "asa",
+ "name": "அசà¯"
+ },
+ "hsb": {
+ "code": "hsb",
+ "name": "அபà¯à®ªà®°à¯ சோரà¯à®ªà®¿à®¯à®¾à®©à¯"
+ },
+ "am": {
+ "code": "am",
+ "name": "à®…à®®à¯à®¹à®¾à®°à®¿à®•à¯"
+ },
+ "en-US": {
+ "code": "en-US",
+ "name": "அமெரிகà¯à®• ஆஙà¯à®•à®¿à®²à®®à¯"
+ },
+ "ar": {
+ "code": "ar",
+ "name": "அரபிகà¯"
+ },
+ "sq": {
+ "code": "sq",
+ "name": "அலà¯à®ªà¯‡à®©à®¿à®¯à®©à¯"
+ },
+ "ast": {
+ "code": "ast",
+ "name": "அஸà¯à®¤à¯à®°à®¿à®¯à®©à¯"
+ },
+ "az": {
+ "code": "az",
+ "name": "அஸரà¯à®ªà¯ˆà®œà®¾à®©à®¿"
+ },
+ "af": {
+ "code": "af",
+ "name": "ஆஃபà¯à®°à®¿à®•à®¾à®©à¯à®¸à¯"
+ },
+ "en": {
+ "code": "en",
+ "name": "ஆஙà¯à®•à®¿à®²à®®à¯"
+ },
+ "hy": {
+ "code": "hy",
+ "name": "ஆரà¯à®®à¯‡à®©à®¿à®¯à®©à¯"
+ },
+ "de-AT": {
+ "code": "de-AT",
+ "name": "ஆஸà¯à®¤à®¿à®°à®¿à®¯ ஜெரà¯à®®à®©à¯"
+ },
+ "en-AU": {
+ "code": "en-AU",
+ "name": "ஆஸà¯à®¤à®¿à®°à¯‡à®²à®¿à®¯à®©à¯ ஆஙà¯à®•à®¿à®²à®®à¯"
+ },
+ "it": {
+ "code": "it",
+ "name": "இதà¯à®¤à®¾à®²à®¿à®¯à®©à¯"
+ },
+ "hi": {
+ "code": "hi",
+ "name": "இநà¯à®¤à®¿"
+ },
+ "id": {
+ "code": "id",
+ "name": "இநà¯à®¤à¯‹à®©à¯‡à®·à®¿à®¯à®©à¯"
+ },
+ "ee": {
+ "code": "ee",
+ "name": "ஈவà¯"
+ },
+ "uk": {
+ "code": "uk",
+ "name": "உகà¯à®°à¯ˆà®©à®¿à®¯à®©à¯"
+ },
+ "ug": {
+ "code": "ug",
+ "name": "உயà¯à®•à¯à®°à¯"
+ },
+ "ur": {
+ "code": "ur",
+ "name": "உரà¯à®¤à¯"
+ },
+ "uz": {
+ "code": "uz",
+ "name": "உஸà¯à®ªà¯†à®•à¯"
+ },
+ "ebu": {
+ "code": "ebu",
+ "name": "எமà¯à®ªà¯"
+ },
+ "ewo": {
+ "code": "ewo",
+ "name": "எவோனà¯à®Ÿà¯‹"
+ },
+ "zh-Hans": {
+ "code": "zh-Hans",
+ "name": "எளிதாகà¯à®•à®ªà¯à®ªà®Ÿà¯à®Ÿ சீனமà¯"
+ },
+ "et": {
+ "code": "et",
+ "name": "எஸà¯à®Ÿà¯‹à®©à®¿à®¯à®©à¯"
+ },
+ "eo": {
+ "code": "eo",
+ "name": "எஸà¯à®ªà®°à¯‡à®©à¯à®Ÿà¯‹"
+ },
+ "ga": {
+ "code": "ga",
+ "name": "à®à®°à®¿à®·à¯"
+ },
+ "pt-PT": {
+ "code": "pt-PT",
+ "name": "à®à®°à¯‹à®ªà¯à®ªà®¿à®¯ போரà¯à®šà¯à®šà¯à®•à¯€à®¸à¯"
+ },
+ "es-ES": {
+ "code": "es-ES",
+ "name": "à®à®°à¯‹à®ªà¯à®ªà®¿à®¯ ஸà¯à®ªà®¾à®©à®¿à®·à¯"
+ },
+ "is": {
+ "code": "is",
+ "name": "à®à®¸à¯à®²à¯†à®©à¯à®Ÿà®¿à®•à¯"
+ },
+ "or": {
+ "code": "or",
+ "name": "ஒரியா"
+ },
+ "fur": {
+ "code": "fur",
+ "name": "ஃபà¯à®°à®¿à®¯à¯‚லியனà¯"
+ },
+ "fo": {
+ "code": "fo",
+ "name": "ஃபரோயிஸà¯"
+ },
+ "fil": {
+ "code": "fil",
+ "name": "ஃபிலிபினோ"
+ },
+ "fi": {
+ "code": "fi",
+ "name": "ஃபினà¯à®©à®¿à®·à¯"
+ },
+ "ff": {
+ "code": "ff",
+ "name": "ஃபà¯à®²à®¾"
+ },
+ "nmg": {
+ "code": "nmg",
+ "name": "கà¯à®µà®¾à®šà®¿à®¯à¯‹"
+ },
+ "kk": {
+ "code": "kk",
+ "name": "கசாகà¯"
+ },
+ "kab": {
+ "code": "kab",
+ "name": "கபாயà¯à®²à¯"
+ },
+ "kea": {
+ "code": "kea",
+ "name": "கபà¯à®µà¯†à®°à¯à®¤à®¿à®¯à®¾à®©à¯"
+ },
+ "kam": {
+ "code": "kam",
+ "name": "கமà¯à®ªà®¾"
+ },
+ "kl": {
+ "code": "kl",
+ "name": "கலாலிசூடà¯"
+ },
+ "kln": {
+ "code": "kln",
+ "name": "கலினà¯à®œà®¿à®©à¯"
+ },
+ "kn": {
+ "code": "kn",
+ "name": "கனà¯à®©à®Ÿà®®à¯"
+ },
+ "fr-CA": {
+ "code": "fr-CA",
+ "name": "கனடிய பிரெஞà¯à®šà¯"
+ },
+ "en-CA": {
+ "code": "en-CA",
+ "name": "கனடியன௠ஆஙà¯à®•à®¿à®²à®®à¯"
+ },
+ "swc": {
+ "code": "swc",
+ "name": "காஙà¯à®•à¯‹ சà¯à®µà®¾à®¹à®¿à®²à®¿"
+ },
+ "gl": {
+ "code": "gl",
+ "name": "காலிஸியனà¯"
+ },
+ "lg": {
+ "code": "lg",
+ "name": "கானà¯à®Ÿà®¾"
+ },
+ "ks": {
+ "code": "ks",
+ "name": "காஷà¯à®®à®¿à®°à®¿"
+ },
+ "ki": {
+ "code": "ki",
+ "name": "கிகà¯à®¯à¯‚"
+ },
+ "ky": {
+ "code": "ky",
+ "name": "கிரà¯à®•à®¿à®¸à¯"
+ },
+ "el": {
+ "code": "el",
+ "name": "கிரேகà¯à®•à®®à¯"
+ },
+ "hr": {
+ "code": "hr",
+ "name": "கà¯à®°à¯‹à®·à®¿à®¯à®©à¯"
+ },
+ "gu": {
+ "code": "gu",
+ "name": "கà¯à®œà®°à®¾à®¤à¯à®¤à®¿"
+ },
+ "guz": {
+ "code": "guz",
+ "name": "கà¯à®¸à®¿"
+ },
+ "km": {
+ "code": "km",
+ "name": "கெமெரà¯"
+ },
+ "ca": {
+ "code": "ca",
+ "name": "கேடà¯à®Ÿà®²à®¾à®©à¯"
+ },
+ "khq": {
+ "code": "khq",
+ "name": "கொயà¯à®°à®¾ சீனீ"
+ },
+ "ses": {
+ "code": "ses",
+ "name": "கொயà¯à®°à®¾à®ªà¯‹à®°à¯‹ செனà¯à®©à®¿"
+ },
+ "ko": {
+ "code": "ko",
+ "name": "கொரியனà¯"
+ },
+ "sbp": {
+ "code": "sbp",
+ "name": "சஙà¯à®•à¯"
+ },
+ "saq": {
+ "code": "saq",
+ "name": "சமà¯à®ªà¯à®°à¯"
+ },
+ "sg": {
+ "code": "sg",
+ "name": "சாஙà¯à®•à¯‹"
+ },
+ "dje": {
+ "code": "dje",
+ "name": "சாரà¯à®®à®¾"
+ },
+ "cgg": {
+ "code": "cgg",
+ "name": "சிகா"
+ },
+ "si": {
+ "code": "si",
+ "name": "சிஙà¯à®•à®³à®®à¯"
+ },
+ "zh": {
+ "code": "zh",
+ "name": "சீனமà¯"
+ },
+ "sw": {
+ "code": "sw",
+ "name": "சà¯à®µà®¾à®¹à®¿à®²à®¿"
+ },
+ "cs": {
+ "code": "cs",
+ "name": "செகà¯"
+ },
+ "sr": {
+ "code": "sr",
+ "name": "செரà¯à®ªà®¿à®¯à®©à¯"
+ },
+ "chr": {
+ "code": "chr",
+ "name": "செரொகி"
+ },
+ "seh": {
+ "code": "seh",
+ "name": "செனா"
+ },
+ "xog": {
+ "code": "xog",
+ "name": "சோகா"
+ },
+ "so": {
+ "code": "so",
+ "name": "சோமாலி"
+ },
+ "nl": {
+ "code": "nl",
+ "name": "டசà¯à®šà¯"
+ },
+ "twq": {
+ "code": "twq",
+ "name": "டசவாகà¯"
+ },
+ "tr": {
+ "code": "tr",
+ "name": "டரà¯à®•à®¿à®·à¯"
+ },
+ "ti": {
+ "code": "ti",
+ "name": "டிகà¯à®°à®¿à®©à¯à®¯à®¾"
+ },
+ "teo": {
+ "code": "teo",
+ "name": "டெசோ"
+ },
+ "da": {
+ "code": "da",
+ "name": "டேனிஷà¯"
+ },
+ "dav": {
+ "code": "dav",
+ "name": "டைடா"
+ },
+ "to": {
+ "code": "to",
+ "name": "டோஙà¯à®•à®¾à®©à¯"
+ },
+ "shi": {
+ "code": "shi",
+ "name": "தசேஹிதà¯"
+ },
+ "ta": {
+ "code": "ta",
+ "name": "தமிழà¯"
+ },
+ "th": {
+ "code": "th",
+ "name": "தாயà¯"
+ },
+ "bo": {
+ "code": "bo",
+ "name": "திபெதà¯à®¤à®¿à®¯à®©à¯"
+ },
+ "te": {
+ "code": "te",
+ "name": "தெலà¯à®™à¯à®•à¯"
+ },
+ "jgo": {
+ "code": "jgo",
+ "name": "நகொமà¯à®ªà®¾"
+ },
+ "naq": {
+ "code": "naq",
+ "name": "நாமா"
+ },
+ "nn": {
+ "code": "nn",
+ "name": "நாரà¯à®µà¯‡à®œà®¿à®¯à®©à¯ நியூநாரà¯à®¸à¯à®•à¯"
+ },
+ "nb": {
+ "code": "nb",
+ "name": "நாரà¯à®µà¯‡à®œà®¿à®¯à®©à¯ பொகà¯à®®à®¾à®²à¯"
+ },
+ "nyn": {
+ "code": "nyn",
+ "name": "நியானà¯à®•à¯‹à®²à¯‡"
+ },
+ "nus": {
+ "code": "nus",
+ "name": "நியூரà¯"
+ },
+ "ne": {
+ "code": "ne",
+ "name": "நேபாளி"
+ },
+ "pa": {
+ "code": "pa",
+ "name": "பஞà¯à®šà®¾à®ªà®¿"
+ },
+ "bm": {
+ "code": "bm",
+ "name": "பமà¯à®ªà®¾à®°à®¾"
+ },
+ "my": {
+ "code": "my",
+ "name": "பரà¯à®®à®¿à®¸à¯"
+ },
+ "bg": {
+ "code": "bg",
+ "name": "பலà¯à®•à¯‡à®°à®¿à®¯à®©à¯"
+ },
+ "ps": {
+ "code": "ps",
+ "name": "பஷà¯à®¤à¯‹"
+ },
+ "eu": {
+ "code": "eu",
+ "name": "பஸà¯à®•à¯"
+ },
+ "ksf": {
+ "code": "ksf",
+ "name": "பாஃபியா"
+ },
+ "zh-Hant": {
+ "code": "zh-Hant",
+ "name": "பாரமà¯à®ªà®°à®¿à®¯ சீனமà¯"
+ },
+ "bas": {
+ "code": "bas",
+ "name": "பாஸா"
+ },
+ "en-GB": {
+ "code": "en-GB",
+ "name": "பிரிடà¯à®Ÿà®¿à®·à¯ ஆஙà¯à®•à®¿à®²à®®à¯"
+ },
+ "fr": {
+ "code": "fr",
+ "name": "பிரெஞà¯à®šà¯"
+ },
+ "br": {
+ "code": "br",
+ "name": "பிரெடà¯à®Ÿà®©à¯"
+ },
+ "nl-BE": {
+ "code": "nl-BE",
+ "name": "பிலெமிஷà¯"
+ },
+ "dz": {
+ "code": "dz",
+ "name": "பூடானி"
+ },
+ "fa": {
+ "code": "fa",
+ "name": "பெரà¯à®·à®¿à®¯à®©à¯"
+ },
+ "be": {
+ "code": "be",
+ "name": "பெலாரà¯à®·à®¿à®¯à®©à¯"
+ },
+ "bez": {
+ "code": "bez",
+ "name": "பெனா"
+ },
+ "brx": {
+ "code": "brx",
+ "name": "போடோ"
+ },
+ "pt": {
+ "code": "pt",
+ "name": "போரà¯à®šà¯à®šà¯à®•à¯à®•à¯€à®¸à¯"
+ },
+ "pt-BR": {
+ "code": "pt-BR",
+ "name": "போரà¯à®šà¯à®šà¯à®•à¯€à®¸à¯ (பிரேசிலà¯)"
+ },
+ "pl": {
+ "code": "pl",
+ "name": "போலிஷà¯"
+ },
+ "bs": {
+ "code": "bs",
+ "name": "போஸà¯à®©à®¿à®¯à®©à¯"
+ },
+ "mgh": {
+ "code": "mgh",
+ "name": "மகà¯à®µà®¾-மீடà¯à®Ÿà¯‹"
+ },
+ "kde": {
+ "code": "kde",
+ "name": "மகொணà¯à®Ÿà¯‡"
+ },
+ "mn": {
+ "code": "mn",
+ "name": "மஙà¯à®•à¯‹à®²à®¿à®¯à®©à¯"
+ },
+ "tzm": {
+ "code": "tzm",
+ "name": "மதà¯à®¤à®¿à®¯ அடà¯à®²à®¸à¯ தமசைடà¯"
+ },
+ "mr": {
+ "code": "mr",
+ "name": "மராதà¯à®¤à®¿"
+ },
+ "mg": {
+ "code": "mg",
+ "name": "மலகாஸி"
+ },
+ "ms": {
+ "code": "ms",
+ "name": "மலாயà¯"
+ },
+ "ml": {
+ "code": "ml",
+ "name": "மலையாளமà¯"
+ },
+ "mas": {
+ "code": "mas",
+ "name": "மாசாயà¯"
+ },
+ "jmc": {
+ "code": "jmc",
+ "name": "மாசெமà¯"
+ },
+ "ar-001": {
+ "code": "ar-001",
+ "name": "மாடரà¯à®©à¯ ஸà¯à®Ÿà®¾à®£à¯à®Ÿà®°à¯à®Ÿà¯ அரபிகà¯"
+ },
+ "mt": {
+ "code": "mt",
+ "name": "மாலà¯à®Ÿà®¿à®¸à¯"
+ },
+ "mk": {
+ "code": "mk",
+ "name": "மாஸிடோனியனà¯"
+ },
+ "mua": {
+ "code": "mua",
+ "name": "à®®à¯à®©à¯à®Ÿà®¾à®™à¯"
+ },
+ "es-MX": {
+ "code": "es-MX",
+ "name": "மெகà¯à®šà®¿à®•à®©à¯ ஸà¯à®ªà®¾à®©à®¿à®·à¯"
+ },
+ "mer": {
+ "code": "mer",
+ "name": "மெரà¯"
+ },
+ "fy": {
+ "code": "fy",
+ "name": "மேறà¯à®•à®¤à¯à®¤à®¿à®¯ ஃபà¯à®°à®¿à®·à®¿à®¯à®©à¯"
+ },
+ "mfe": {
+ "code": "mfe",
+ "name": "மொரிசியனà¯"
+ },
+ "ro-MD": {
+ "code": "ro-MD",
+ "name": "மோலà¯à®Ÿà®¾à®µà®¿à®¯à®©à¯"
+ },
+ "yo": {
+ "code": "yo",
+ "name": "யோரà¯à®ªà®¾"
+ },
+ "ru": {
+ "code": "ru",
+ "name": "ரஷியனà¯"
+ },
+ "rn": {
+ "code": "rn",
+ "name": "à®°à¯à®£à¯à®Ÿà®¿"
+ },
+ "rwk": {
+ "code": "rwk",
+ "name": "à®°à¯à®µà®¾"
+ },
+ "rof": {
+ "code": "rof",
+ "name": "ரோமà¯à®ªà¯‹"
+ },
+ "rm": {
+ "code": "rm",
+ "name": "ரோமானà¯à®·à¯"
+ },
+ "ro": {
+ "code": "ro",
+ "name": "ரோமேனியனà¯"
+ },
+ "lb": {
+ "code": "lb",
+ "name": "லகà¯à®¸à®®à¯à®ªà¯‹à®°à¯à®•à®¿à®·à¯"
+ },
+ "lag": {
+ "code": "lag",
+ "name": "லஙà¯à®•à®¿"
+ },
+ "lv": {
+ "code": "lv",
+ "name": "லாடà¯à®µà®¿à®¯à®©à¯"
+ },
+ "lo": {
+ "code": "lo",
+ "name": "லாவோ"
+ },
+ "ln": {
+ "code": "ln",
+ "name": "லிஙà¯à®•à®¾à®²à®¾"
+ },
+ "lt": {
+ "code": "lt",
+ "name": "லிதà¯à®µà¯‡à®©à®¿à®¯à®©à¯"
+ },
+ "lu": {
+ "code": "lu",
+ "name": "லà¯à®ªà®¾-கடாஙà¯à®•à®¾"
+ },
+ "luy": {
+ "code": "luy",
+ "name": "லà¯à®¯à®¿à®¯à®¾"
+ },
+ "luo": {
+ "code": "luo",
+ "name": "லà¯à®¯à¯‹"
+ },
+ "dsb": {
+ "code": "dsb",
+ "name": "லோயர௠சோரà¯à®ªà®¿à®¯à®©à¯"
+ },
+ "bn": {
+ "code": "bn",
+ "name": "வஙà¯à®•à®¾à®³à®®à¯"
+ },
+ "se": {
+ "code": "se",
+ "name": "வடகà¯à®•à¯ சமி"
+ },
+ "nd": {
+ "code": "nd",
+ "name": "வடகà¯à®•à¯ தெபெலே"
+ },
+ "vi": {
+ "code": "vi",
+ "name": "வியடà¯à®¨à®¾à®®à®¿à®¸à¯"
+ },
+ "vun": {
+ "code": "vun",
+ "name": "வà¯à®©à¯à®œà¯‹"
+ },
+ "cy": {
+ "code": "cy",
+ "name": "வெலà¯à®·à¯"
+ },
+ "vai": {
+ "code": "vai",
+ "name": "வை"
+ },
+ "ja": {
+ "code": "ja",
+ "name": "ஜபà¯à®ªà®¾à®©à®¿à®¯à®®à¯"
+ },
+ "ka": {
+ "code": "ka",
+ "name": "ஜாரà¯à®œà®¿à®¯à®©à¯"
+ },
+ "zu": {
+ "code": "zu",
+ "name": "ஜà¯à®²à¯"
+ },
+ "de": {
+ "code": "de",
+ "name": "ஜெரà¯à®®à®©à¯"
+ },
+ "dyo": {
+ "code": "dyo",
+ "name": "ஜோலா-ஃபோனà¯à®¯à®¿"
+ },
+ "ksb": {
+ "code": "ksb",
+ "name": "à®·à®®à¯à®ªà®¾à®²à®¾"
+ },
+ "sn": {
+ "code": "sn",
+ "name": "ஷோனா"
+ },
+ "gd": {
+ "code": "gd",
+ "name": "ஸà¯à®•à®¾à®Ÿà¯à®¸à¯ கேலிகà¯"
+ },
+ "zgh": {
+ "code": "zgh",
+ "name": "ஸà¯à®Ÿà®¾à®£à¯à®Ÿà®°à¯à®Ÿà¯ மொராகà¯à®•à®©à¯ தமாசைடà¯"
+ },
+ "es": {
+ "code": "es",
+ "name": "ஸà¯à®ªà®¾à®©à®¿à®·à¯"
+ },
+ "sk": {
+ "code": "sk",
+ "name": "ஸà¯à®²à¯‹à®µà®¾à®•à¯"
+ },
+ "sl": {
+ "code": "sl",
+ "name": "ஸà¯à®²à¯‹à®µà¯‡à®©à®¿à®¯à®©à¯"
+ },
+ "fr-CH": {
+ "code": "fr-CH",
+ "name": "ஸà¯à®µà®¿à®¸à¯ பிரஞà¯à®šà¯"
+ },
+ "gsw": {
+ "code": "gsw",
+ "name": "ஸà¯à®µà®¿à®¸à¯ ஜெரà¯à®®à®©à¯"
+ },
+ "de-CH": {
+ "code": "de-CH",
+ "name": "ஸà¯à®µà®¿à®¸à¯ ஹை ஜெரà¯à®®à®©à¯"
+ },
+ "sv": {
+ "code": "sv",
+ "name": "ஸà¯à®µà¯€à®Ÿà®¿à®·à¯"
+ },
+ "hu": {
+ "code": "hu",
+ "name": "ஹஙà¯à®•à¯‡à®°à®¿à®¯à®©à¯"
+ },
+ "he": {
+ "code": "he",
+ "name": "ஹீபà¯à®°à¯‚"
+ },
+ "ha": {
+ "code": "ha",
+ "name": "ஹௌஸா"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/language/te.json b/library/intl/resources/language/te.json
new file mode 100644
index 000000000..9a00f8ae9
--- /dev/null
+++ b/library/intl/resources/language/te.json
@@ -0,0 +1,738 @@
+{
+ "ksh": {
+ "code": "ksh",
+ "name": "Colognian"
+ },
+ "wae": {
+ "code": "wae",
+ "name": "Walser"
+ },
+ "yav": {
+ "code": "yav",
+ "name": "Yangben"
+ },
+ "ak": {
+ "code": "ak",
+ "name": "అకానà±"
+ },
+ "agq": {
+ "code": "agq",
+ "name": "అగేమà±"
+ },
+ "az": {
+ "code": "az",
+ "name": "అజరà±à°¬à±ˆà°œà°¾à°¨à°¿"
+ },
+ "hsb": {
+ "code": "hsb",
+ "name": "à°…à°ªà±à°ªà°°à± సోరà±à°¬à°¿à°¯à°¨à±"
+ },
+ "en-US": {
+ "code": "en-US",
+ "name": "అమెరికనౠఇంగà±à°²à±€à°·à±"
+ },
+ "am": {
+ "code": "am",
+ "name": "à°…à°®à±à°¹à°¾à°°à°¿à°•à±"
+ },
+ "ar": {
+ "code": "ar",
+ "name": "అరబికà±"
+ },
+ "sq": {
+ "code": "sq",
+ "name": "à°…à°²à±à°¬à±‡à°¨à°¿à°¯à°¨à±"
+ },
+ "asa": {
+ "code": "asa",
+ "name": "à°…à°¸à±"
+ },
+ "ast": {
+ "code": "ast",
+ "name": "à°…à°¸à±à°Ÿà±à°°à°¿à°¯à°¾à°¨à±"
+ },
+ "en": {
+ "code": "en",
+ "name": "ఆంగà±à°²à°‚"
+ },
+ "ar-001": {
+ "code": "ar-001",
+ "name": "ఆధà±à°¨à°¿à°• à°ªà±à°°à°¾à°®à°¾à°£à°¿à°• అరబికà±"
+ },
+ "af": {
+ "code": "af",
+ "name": "ఆఫà±à°°à°¿à°•à°¾à°¨à±à°¸à±"
+ },
+ "hy": {
+ "code": "hy",
+ "name": "ఆరà±à°®à±‡à°¨à°¿à°¯à°¨à±"
+ },
+ "en-AU": {
+ "code": "en-AU",
+ "name": "ఆసà±à°Ÿà±à°°à±‡à°²à°¿à°¯à°¨à± ఇంగà±à°²à±€à°·à±"
+ },
+ "de-AT": {
+ "code": "de-AT",
+ "name": "ఆసà±à°Ÿà±à°°à±‡à°²à°¿à°¯à°¨à± జరà±à°®à°¨à±"
+ },
+ "id": {
+ "code": "id",
+ "name": "ఇండోనేషియనà±"
+ },
+ "ebu": {
+ "code": "ebu",
+ "name": "ఇంబà±"
+ },
+ "it": {
+ "code": "it",
+ "name": "ఇటాలియనà±"
+ },
+ "ee": {
+ "code": "ee",
+ "name": "ఈవీ"
+ },
+ "et": {
+ "code": "et",
+ "name": "ఈసà±à°Ÿà±Šà°¨à°¿à°¯à°¨à±"
+ },
+ "uk": {
+ "code": "uk",
+ "name": "ఉకà±à°°à±‡à°¨à°¿à°¯à°¨à±"
+ },
+ "uz": {
+ "code": "uz",
+ "name": "ఉజà±à°¬à±†à°•à±"
+ },
+ "nd": {
+ "code": "nd",
+ "name": "ఉతà±à°¤à°° దెబెలె"
+ },
+ "se": {
+ "code": "se",
+ "name": "ఉతà±à°¤à°° సామి"
+ },
+ "ug": {
+ "code": "ug",
+ "name": "ఉయà±â€Œà°˜à°°à±"
+ },
+ "ur": {
+ "code": "ur",
+ "name": "ఉరà±à°¦à±‚"
+ },
+ "ewo": {
+ "code": "ewo",
+ "name": "ఎవోండొ"
+ },
+ "eo": {
+ "code": "eo",
+ "name": "à°Žà°¸à±à°ªà°°à±†à°¨à±à°Ÿà±Š"
+ },
+ "ga": {
+ "code": "ga",
+ "name": "à°à°°à°¿à°·à±"
+ },
+ "is": {
+ "code": "is",
+ "name": "à°à°¸à±à°²à°¾à°‚à°¡à°¿à°•à±"
+ },
+ "or": {
+ "code": "or",
+ "name": "ఒరియా"
+ },
+ "kam": {
+ "code": "kam",
+ "name": "కంబా"
+ },
+ "kk": {
+ "code": "kk",
+ "name": "కజఖà±"
+ },
+ "kn": {
+ "code": "kn",
+ "name": "à°•à°¨à±à°¨à°¡"
+ },
+ "kl": {
+ "code": "kl",
+ "name": "కలాలà±à°²à°¿à°¸à±‚à°Ÿà±"
+ },
+ "kln": {
+ "code": "kln",
+ "name": "కలెంజినà±"
+ },
+ "swc": {
+ "code": "swc",
+ "name": "కాంగో à°¸à±à°µà°¾à°¹à°¿à°²à°¿"
+ },
+ "kab": {
+ "code": "kab",
+ "name": "కాబిలà±"
+ },
+ "kea": {
+ "code": "kea",
+ "name": "కాబà±à°µà±‡à°°à±à°¦à°¿à°¯à°¨à±"
+ },
+ "ks": {
+ "code": "ks",
+ "name": "కాశà±à°®à±€à°°à°¿"
+ },
+ "ki": {
+ "code": "ki",
+ "name": "à°•à°¿à°•à±à°¯à±"
+ },
+ "ky": {
+ "code": "ky",
+ "name": "à°•à°¿à°°à±à°—à°¿à°œà±"
+ },
+ "ca": {
+ "code": "ca",
+ "name": "కెటలానà±"
+ },
+ "en-CA": {
+ "code": "en-CA",
+ "name": "కెనడియనౠఇంగà±à°²à±€à°·à±"
+ },
+ "fr-CA": {
+ "code": "fr-CA",
+ "name": "కెనడియెనౠఫà±à°°à±†à°‚à°šà±"
+ },
+ "khq": {
+ "code": "khq",
+ "name": "కొయరా చీనà±à°¨à±€"
+ },
+ "ko": {
+ "code": "ko",
+ "name": "కొరియనà±"
+ },
+ "ses": {
+ "code": "ses",
+ "name": "కోయోరాబోరో సెనà±à°¨à±€"
+ },
+ "hr": {
+ "code": "hr",
+ "name": "à°•à±à°°à±Šà°¯à±†à°·à°¿à°¯à°¨à±"
+ },
+ "nmg": {
+ "code": "nmg",
+ "name": "à°•à±à°µà°¾à°¸à°¿à°¯à±†"
+ },
+ "km": {
+ "code": "km",
+ "name": "à°–à±à°®à±‡à°°à±"
+ },
+ "lg": {
+ "code": "lg",
+ "name": "గాండా"
+ },
+ "gu": {
+ "code": "gu",
+ "name": "à°—à±à°œà°°à°¾à°¤à°¿"
+ },
+ "guz": {
+ "code": "guz",
+ "name": "à°—à±à°¸à±à°¸à±€"
+ },
+ "gl": {
+ "code": "gl",
+ "name": "గెలిషియనà±"
+ },
+ "jgo": {
+ "code": "jgo",
+ "name": "గోంబా"
+ },
+ "el": {
+ "code": "el",
+ "name": "à°—à±à°°à±€à°•à±"
+ },
+ "cs": {
+ "code": "cs",
+ "name": "చెకà±"
+ },
+ "chr": {
+ "code": "chr",
+ "name": "చెరోకీ"
+ },
+ "zh": {
+ "code": "zh",
+ "name": "చైనీసà±"
+ },
+ "cgg": {
+ "code": "cgg",
+ "name": "ఛిగా"
+ },
+ "de": {
+ "code": "de",
+ "name": "జరà±à°®à°¨à±"
+ },
+ "ja": {
+ "code": "ja",
+ "name": "జాపనీసà±"
+ },
+ "ka": {
+ "code": "ka",
+ "name": "జారà±à°œà°¿à°¯à°¨à±"
+ },
+ "dje": {
+ "code": "dje",
+ "name": "జారà±à°®à°¾"
+ },
+ "zu": {
+ "code": "zu",
+ "name": "జూలూ"
+ },
+ "dz": {
+ "code": "dz",
+ "name": "జొనà±à°–à°¾"
+ },
+ "dyo": {
+ "code": "dyo",
+ "name": "జోలా-ఫోనయి"
+ },
+ "tr": {
+ "code": "tr",
+ "name": "à°Ÿà°°à±à°•à°¿à°·à±"
+ },
+ "twq": {
+ "code": "twq",
+ "name": "టసావాఖà±"
+ },
+ "to": {
+ "code": "to",
+ "name": "టాంగానà±"
+ },
+ "shi": {
+ "code": "shi",
+ "name": "టాచెలà±â€Œà°¹à°¿à°Ÿà±"
+ },
+ "bo": {
+ "code": "bo",
+ "name": "టిబెటనà±"
+ },
+ "teo": {
+ "code": "teo",
+ "name": "టెసో"
+ },
+ "dav": {
+ "code": "dav",
+ "name": "టైటా"
+ },
+ "nl": {
+ "code": "nl",
+ "name": "à°¡à°šà±"
+ },
+ "da": {
+ "code": "da",
+ "name": "డేనిషà±"
+ },
+ "ta": {
+ "code": "ta",
+ "name": "తమిళమà±"
+ },
+ "ti": {
+ "code": "ti",
+ "name": "తిగà±à°°à°¿à°¨à±à°¯à°¾"
+ },
+ "te": {
+ "code": "te",
+ "name": "తెలà±à°—à±"
+ },
+ "th": {
+ "code": "th",
+ "name": "థాయà±"
+ },
+ "naq": {
+ "code": "naq",
+ "name": "నమ"
+ },
+ "nn": {
+ "code": "nn",
+ "name": "నారà±à°µà°¿à°œà°¿à°¯à°¾à°¨à± à°¨à±à°¯à±‹à°°à±à°¸à±à°•à±"
+ },
+ "nb": {
+ "code": "nb",
+ "name": "నారà±à°µà±€à°œà°¿à°¯à°¨à± బొకà±à°®à°¾à°²à±"
+ },
+ "ne": {
+ "code": "ne",
+ "name": "నేపాలి"
+ },
+ "nyn": {
+ "code": "nyn",
+ "name": "à°¨à±à°¯à°¾à°¨à±à°•à±‹à°²à±†"
+ },
+ "nus": {
+ "code": "nus",
+ "name": "à°¨à±à°¯à±à°°à±"
+ },
+ "pa": {
+ "code": "pa",
+ "name": "పంజాబీ"
+ },
+ "fa": {
+ "code": "fa",
+ "name": "పరà±à°·à°¿à°¯à°¨à±"
+ },
+ "fy": {
+ "code": "fy",
+ "name": "పశà±à°šà°¿à°® à°«à±à°°à°¿à°¸à°¿à°¯à°¨à±"
+ },
+ "ps": {
+ "code": "ps",
+ "name": "పాషà±à°Ÿà±‹"
+ },
+ "pt": {
+ "code": "pt",
+ "name": "పోరà±à°šà±à°—ీసà±"
+ },
+ "pl": {
+ "code": "pl",
+ "name": "పోలిషà±"
+ },
+ "zgh": {
+ "code": "zgh",
+ "name": "à°ªà±à°°à°¾à°®à°¾à°£à°¿à°• మొరొకనౠతమజియటà±"
+ },
+ "fo": {
+ "code": "fo",
+ "name": "ఫారోయీజà±"
+ },
+ "fi": {
+ "code": "fi",
+ "name": "à°«à°¿à°¨à±à°¨à°¿à°·à±"
+ },
+ "fil": {
+ "code": "fil",
+ "name": "ఫిలిపినో"
+ },
+ "ff": {
+ "code": "ff",
+ "name": "à°«à±à°¯à±à°²"
+ },
+ "fur": {
+ "code": "fur",
+ "name": "à°«à±à°°à°¿à°¯à±à°²à°¿à°¯à°¨à±"
+ },
+ "fr": {
+ "code": "fr",
+ "name": "à°«à±à°°à±†à°‚à°šà±"
+ },
+ "nl-BE": {
+ "code": "nl-BE",
+ "name": "à°«à±à°²à±†à°®à°¿à°·à±"
+ },
+ "bm": {
+ "code": "bm",
+ "name": "బంబారా"
+ },
+ "my": {
+ "code": "my",
+ "name": "బరà±à°®à±€à°¸à±"
+ },
+ "bg": {
+ "code": "bg",
+ "name": "బలà±à°—ేరియనà±"
+ },
+ "bas": {
+ "code": "bas",
+ "name": "బసా"
+ },
+ "ksf": {
+ "code": "ksf",
+ "name": "బాఫియ"
+ },
+ "eu": {
+ "code": "eu",
+ "name": "బాసà±à°•à±"
+ },
+ "bez": {
+ "code": "bez",
+ "name": "బీనా"
+ },
+ "bn": {
+ "code": "bn",
+ "name": "బెంగాలీ"
+ },
+ "be": {
+ "code": "be",
+ "name": "బెలరà±à°¶à°¿à°¯à°¨à±"
+ },
+ "brx": {
+ "code": "brx",
+ "name": "బోడో"
+ },
+ "bs": {
+ "code": "bs",
+ "name": "బోసà±à°¨à°¿à°¯à°¨à±"
+ },
+ "en-GB": {
+ "code": "en-GB",
+ "name": "à°¬à±à°°à°¿à°Ÿà°¿à°·à± ఇంగà±à°²à±€à°·à±"
+ },
+ "pt-BR": {
+ "code": "pt-BR",
+ "name": "à°¬à±à°°à±†à°œà±€à°²à°¿à°¯à°¨à± పోరà±à°šà±à°—ీసà±"
+ },
+ "br": {
+ "code": "br",
+ "name": "à°¬à±à°°à±†à°Ÿà°¨à±"
+ },
+ "mn": {
+ "code": "mn",
+ "name": "మంగోలియనà±"
+ },
+ "kde": {
+ "code": "kde",
+ "name": "మకొండే"
+ },
+ "jmc": {
+ "code": "jmc",
+ "name": "మకొమà±"
+ },
+ "mgh": {
+ "code": "mgh",
+ "name": "మకà±à°µà°¾-మిటà±à°Ÿà±‹"
+ },
+ "mr": {
+ "code": "mr",
+ "name": "మరాఠీ"
+ },
+ "ml": {
+ "code": "ml",
+ "name": "మలయాళం"
+ },
+ "ms": {
+ "code": "ms",
+ "name": "మలేయà±"
+ },
+ "mk": {
+ "code": "mk",
+ "name": "మసడోనియనà±"
+ },
+ "mg": {
+ "code": "mg",
+ "name": "మాలాగసి"
+ },
+ "mt": {
+ "code": "mt",
+ "name": "మాలà±à°Ÿà±€à°¸à±"
+ },
+ "mas": {
+ "code": "mas",
+ "name": "మాసాయి"
+ },
+ "mua": {
+ "code": "mua",
+ "name": "à°®à±à°¦à°¾à°‚à°—à±"
+ },
+ "es-MX": {
+ "code": "es-MX",
+ "name": "మెకà±à°¸à°¿à°•à°¨à± à°¸à±à°ªà°¾à°¨à°¿à°·à±"
+ },
+ "mer": {
+ "code": "mer",
+ "name": "మెరà±"
+ },
+ "mfe": {
+ "code": "mfe",
+ "name": "మొరిసà±à°¯à±‡à°¨à±"
+ },
+ "ro-MD": {
+ "code": "ro-MD",
+ "name": "మొలà±à°¡à°¾à°µà°¿à°¯à°¨à±"
+ },
+ "pt-PT": {
+ "code": "pt-PT",
+ "name": "యూరోపియనౠపోరà±à°šà±à°—ీసà±"
+ },
+ "es-ES": {
+ "code": "es-ES",
+ "name": "యూరోపియనౠసà±à°ªà°¾à°¨à°¿à°·à±"
+ },
+ "yo": {
+ "code": "yo",
+ "name": "యోరà±à°¬à°¾"
+ },
+ "rn": {
+ "code": "rn",
+ "name": "à°°à°‚à°¡à°¿"
+ },
+ "ru": {
+ "code": "ru",
+ "name": "à°°à°·à±à°¯à°¨à±"
+ },
+ "rof": {
+ "code": "rof",
+ "name": "రోంబో"
+ },
+ "rm": {
+ "code": "rm",
+ "name": "రోమనà±à°·à±"
+ },
+ "ro": {
+ "code": "ro",
+ "name": "రోమానియనà±"
+ },
+ "rwk": {
+ "code": "rwk",
+ "name": "à°°à±à°µà°¾"
+ },
+ "lag": {
+ "code": "lag",
+ "name": "లాంగీ"
+ },
+ "lv": {
+ "code": "lv",
+ "name": "లాటà±à°µà°¿à°¯à°¨à±"
+ },
+ "lo": {
+ "code": "lo",
+ "name": "లావో"
+ },
+ "ln": {
+ "code": "ln",
+ "name": "లింగాల"
+ },
+ "lt": {
+ "code": "lt",
+ "name": "లిథà±à°¯à±‡à°¨à°¿à°¯à°¨à±"
+ },
+ "lb": {
+ "code": "lb",
+ "name": "à°²à±à°•à±à°¸à°‚బరà±à°—à°¿à°·à±"
+ },
+ "luy": {
+ "code": "luy",
+ "name": "à°²à±à°¯à°¿à°¯"
+ },
+ "luo": {
+ "code": "luo",
+ "name": "à°²à±à°µà±‹"
+ },
+ "lu": {
+ "code": "lu",
+ "name": "లూబ-కటాంగ"
+ },
+ "dsb": {
+ "code": "dsb",
+ "name": "లోవరౠసోరà±à°¬à°¿à°¯à°¨à±"
+ },
+ "vai": {
+ "code": "vai",
+ "name": "వాయి"
+ },
+ "vi": {
+ "code": "vi",
+ "name": "వియతà±à°¨à°¾à°®à±€à°¸à±"
+ },
+ "vun": {
+ "code": "vun",
+ "name": "à°µà±à°‚జొ"
+ },
+ "cy": {
+ "code": "cy",
+ "name": "వెలà±à°·à±"
+ },
+ "ksb": {
+ "code": "ksb",
+ "name": "శంబాలా"
+ },
+ "sn": {
+ "code": "sn",
+ "name": "షోన"
+ },
+ "saq": {
+ "code": "saq",
+ "name": "సంబà±à°°à±"
+ },
+ "zh-Hans": {
+ "code": "zh-Hans",
+ "name": "సరళీకృత చైనీసà±"
+ },
+ "sbp": {
+ "code": "sbp",
+ "name": "సాంగà±"
+ },
+ "sg": {
+ "code": "sg",
+ "name": "సాంగో"
+ },
+ "zh-Hant": {
+ "code": "zh-Hant",
+ "name": "సాంపà±à°°à°¦à°¾à°¯à°• చైనీసà±"
+ },
+ "si": {
+ "code": "si",
+ "name": "సింహళం"
+ },
+ "tzm": {
+ "code": "tzm",
+ "name": "సెంటà±à°°à°²à± à°…à°Ÿà±à°²à°¾à°¸à± టామాజైటà±"
+ },
+ "seh": {
+ "code": "seh",
+ "name": "సెనా"
+ },
+ "sr": {
+ "code": "sr",
+ "name": "సెరà±à°¬à°¿à°¯à°¨à±"
+ },
+ "xog": {
+ "code": "xog",
+ "name": "సొగా"
+ },
+ "so": {
+ "code": "so",
+ "name": "సోమాలి"
+ },
+ "gd": {
+ "code": "gd",
+ "name": "à°¸à±à°•à°¾à°Ÿà°¿à°·à± గేలికà±"
+ },
+ "es": {
+ "code": "es",
+ "name": "à°¸à±à°ªà°¾à°¨à°¿à°·à±"
+ },
+ "sk": {
+ "code": "sk",
+ "name": "à°¸à±à°²à±‹à°µà°¾à°•à±"
+ },
+ "sl": {
+ "code": "sl",
+ "name": "à°¸à±à°²à±‹à°µà±‡à°¨à°¿à°¯à°¾à°¨à±"
+ },
+ "sw": {
+ "code": "sw",
+ "name": "à°¸à±à°µà°¾à°¹à°¿à°²à°¿"
+ },
+ "gsw": {
+ "code": "gsw",
+ "name": "à°¸à±à°µà°¿à°¸à± జరà±à°®à°¨à±"
+ },
+ "fr-CH": {
+ "code": "fr-CH",
+ "name": "à°¸à±à°µà°¿à°¸à± à°«à±à°°à±†à°‚à°šà±"
+ },
+ "de-CH": {
+ "code": "de-CH",
+ "name": "à°¸à±à°µà°¿à°¸à± హై జరà±à°®à°¨à±"
+ },
+ "sv": {
+ "code": "sv",
+ "name": "à°¸à±à°µà±€à°¡à°¿à°·à±"
+ },
+ "hu": {
+ "code": "hu",
+ "name": "హనà±à°—ేరియనà±"
+ },
+ "hi": {
+ "code": "hi",
+ "name": "హిందీ"
+ },
+ "he": {
+ "code": "he",
+ "name": "హీబà±à°°à±"
+ },
+ "ha": {
+ "code": "ha",
+ "name": "హౌసా"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/language/teo.json b/library/intl/resources/language/teo.json
new file mode 100644
index 000000000..59f0372dc
--- /dev/null
+++ b/library/intl/resources/language/teo.json
@@ -0,0 +1,738 @@
+{
+ "af": {
+ "code": "af",
+ "name": "Afrikaans"
+ },
+ "agq": {
+ "code": "agq",
+ "name": "Aghem"
+ },
+ "sq": {
+ "code": "sq",
+ "name": "Albanian"
+ },
+ "ar-001": {
+ "code": "ar-001",
+ "name": "ar_001"
+ },
+ "hy": {
+ "code": "hy",
+ "name": "Armenian"
+ },
+ "ast": {
+ "code": "ast",
+ "name": "Asturian"
+ },
+ "asa": {
+ "code": "asa",
+ "name": "Asu"
+ },
+ "az": {
+ "code": "az",
+ "name": "Azerbaijani"
+ },
+ "ksf": {
+ "code": "ksf",
+ "name": "Bafia"
+ },
+ "bm": {
+ "code": "bm",
+ "name": "Bambara"
+ },
+ "bas": {
+ "code": "bas",
+ "name": "Basaa"
+ },
+ "eu": {
+ "code": "eu",
+ "name": "Basque"
+ },
+ "bez": {
+ "code": "bez",
+ "name": "Bena"
+ },
+ "brx": {
+ "code": "brx",
+ "name": "Bodo"
+ },
+ "bs": {
+ "code": "bs",
+ "name": "Bosnian"
+ },
+ "br": {
+ "code": "br",
+ "name": "Breton"
+ },
+ "ca": {
+ "code": "ca",
+ "name": "Catalan"
+ },
+ "tzm": {
+ "code": "tzm",
+ "name": "Central Atlas Tamazight"
+ },
+ "chr": {
+ "code": "chr",
+ "name": "Cherokee"
+ },
+ "cgg": {
+ "code": "cgg",
+ "name": "Chiga"
+ },
+ "ksh": {
+ "code": "ksh",
+ "name": "Colognian"
+ },
+ "swc": {
+ "code": "swc",
+ "name": "Congo Swahili"
+ },
+ "hr": {
+ "code": "hr",
+ "name": "Croatian"
+ },
+ "da": {
+ "code": "da",
+ "name": "Danish"
+ },
+ "de-AT": {
+ "code": "de-AT",
+ "name": "de_AT"
+ },
+ "de-CH": {
+ "code": "de-CH",
+ "name": "de_CH"
+ },
+ "dz": {
+ "code": "dz",
+ "name": "Dzongkha"
+ },
+ "ebu": {
+ "code": "ebu",
+ "name": "Embu"
+ },
+ "en-AU": {
+ "code": "en-AU",
+ "name": "en_AU"
+ },
+ "en-CA": {
+ "code": "en-CA",
+ "name": "en_CA"
+ },
+ "en-GB": {
+ "code": "en-GB",
+ "name": "en_GB"
+ },
+ "en-US": {
+ "code": "en-US",
+ "name": "en_US"
+ },
+ "es-ES": {
+ "code": "es-ES",
+ "name": "es_ES"
+ },
+ "es-MX": {
+ "code": "es-MX",
+ "name": "es_MX"
+ },
+ "eo": {
+ "code": "eo",
+ "name": "Esperanto"
+ },
+ "et": {
+ "code": "et",
+ "name": "Estonian"
+ },
+ "ee": {
+ "code": "ee",
+ "name": "Ewe"
+ },
+ "ewo": {
+ "code": "ewo",
+ "name": "Ewondo"
+ },
+ "fo": {
+ "code": "fo",
+ "name": "Faroese"
+ },
+ "fil": {
+ "code": "fil",
+ "name": "Filipino"
+ },
+ "fi": {
+ "code": "fi",
+ "name": "Finnish"
+ },
+ "fr-CA": {
+ "code": "fr-CA",
+ "name": "fr_CA"
+ },
+ "fr-CH": {
+ "code": "fr-CH",
+ "name": "fr_CH"
+ },
+ "fur": {
+ "code": "fur",
+ "name": "Friulian"
+ },
+ "ff": {
+ "code": "ff",
+ "name": "Fulah"
+ },
+ "gl": {
+ "code": "gl",
+ "name": "Galician"
+ },
+ "lg": {
+ "code": "lg",
+ "name": "Ganda"
+ },
+ "ka": {
+ "code": "ka",
+ "name": "Georgian"
+ },
+ "gu": {
+ "code": "gu",
+ "name": "Gujarati"
+ },
+ "guz": {
+ "code": "guz",
+ "name": "Gusii"
+ },
+ "he": {
+ "code": "he",
+ "name": "Hebrew"
+ },
+ "is": {
+ "code": "is",
+ "name": "Icelandic"
+ },
+ "ga": {
+ "code": "ga",
+ "name": "Irish"
+ },
+ "dyo": {
+ "code": "dyo",
+ "name": "Jola-Fonyi"
+ },
+ "kea": {
+ "code": "kea",
+ "name": "Kabuverdianu"
+ },
+ "kab": {
+ "code": "kab",
+ "name": "Kabyle"
+ },
+ "kl": {
+ "code": "kl",
+ "name": "Kalaallisut"
+ },
+ "kln": {
+ "code": "kln",
+ "name": "Kalenjin"
+ },
+ "kam": {
+ "code": "kam",
+ "name": "Kamba"
+ },
+ "kn": {
+ "code": "kn",
+ "name": "Kannada"
+ },
+ "ks": {
+ "code": "ks",
+ "name": "Kashmiri"
+ },
+ "kk": {
+ "code": "kk",
+ "name": "Kazakh"
+ },
+ "fa": {
+ "code": "fa",
+ "name": "Kiajemi"
+ },
+ "ak": {
+ "code": "ak",
+ "name": "Kiakan"
+ },
+ "am": {
+ "code": "am",
+ "name": "Kiamhari"
+ },
+ "ar": {
+ "code": "ar",
+ "name": "Kiarabu"
+ },
+ "bn": {
+ "code": "bn",
+ "name": "Kibangla"
+ },
+ "be": {
+ "code": "be",
+ "name": "Kibelarusi"
+ },
+ "bg": {
+ "code": "bg",
+ "name": "Kibulgaria"
+ },
+ "my": {
+ "code": "my",
+ "name": "Kiburma"
+ },
+ "cs": {
+ "code": "cs",
+ "name": "Kichecki"
+ },
+ "zh": {
+ "code": "zh",
+ "name": "Kichina"
+ },
+ "fr": {
+ "code": "fr",
+ "name": "Kifaransa"
+ },
+ "el": {
+ "code": "el",
+ "name": "Kigiriki"
+ },
+ "ha": {
+ "code": "ha",
+ "name": "Kihausa"
+ },
+ "hi": {
+ "code": "hi",
+ "name": "Kihindi"
+ },
+ "es": {
+ "code": "es",
+ "name": "Kihispania"
+ },
+ "nl": {
+ "code": "nl",
+ "name": "Kiholanzi"
+ },
+ "hu": {
+ "code": "hu",
+ "name": "Kihungari"
+ },
+ "id": {
+ "code": "id",
+ "name": "Kiindonesia"
+ },
+ "it": {
+ "code": "it",
+ "name": "Kiitaliano"
+ },
+ "ja": {
+ "code": "ja",
+ "name": "Kijapani"
+ },
+ "de": {
+ "code": "de",
+ "name": "Kijerumani"
+ },
+ "km": {
+ "code": "km",
+ "name": "Kikambodia"
+ },
+ "ko": {
+ "code": "ko",
+ "name": "Kikorea"
+ },
+ "ki": {
+ "code": "ki",
+ "name": "Kikuyu"
+ },
+ "ms": {
+ "code": "ms",
+ "name": "Kimalesia"
+ },
+ "ne": {
+ "code": "ne",
+ "name": "Kinepali"
+ },
+ "en": {
+ "code": "en",
+ "name": "Kingereza"
+ },
+ "pl": {
+ "code": "pl",
+ "name": "Kipolandi"
+ },
+ "pa": {
+ "code": "pa",
+ "name": "Kipunjabi"
+ },
+ "pt": {
+ "code": "pt",
+ "name": "Kireno"
+ },
+ "ro": {
+ "code": "ro",
+ "name": "Kiromania"
+ },
+ "ru": {
+ "code": "ru",
+ "name": "Kirusi"
+ },
+ "so": {
+ "code": "so",
+ "name": "Kisomali"
+ },
+ "sv": {
+ "code": "sv",
+ "name": "Kiswidi"
+ },
+ "th": {
+ "code": "th",
+ "name": "Kitailandi"
+ },
+ "ta": {
+ "code": "ta",
+ "name": "Kitamil"
+ },
+ "teo": {
+ "code": "teo",
+ "name": "Kiteso"
+ },
+ "tr": {
+ "code": "tr",
+ "name": "Kituruki"
+ },
+ "uk": {
+ "code": "uk",
+ "name": "Kiukrania"
+ },
+ "ur": {
+ "code": "ur",
+ "name": "Kiurdu"
+ },
+ "vi": {
+ "code": "vi",
+ "name": "Kivietinamu"
+ },
+ "yo": {
+ "code": "yo",
+ "name": "Kiyoruba"
+ },
+ "zu": {
+ "code": "zu",
+ "name": "Kizulu"
+ },
+ "khq": {
+ "code": "khq",
+ "name": "Koyra Chiini"
+ },
+ "ses": {
+ "code": "ses",
+ "name": "Koyraboro Senni"
+ },
+ "nmg": {
+ "code": "nmg",
+ "name": "Kwasio"
+ },
+ "ky": {
+ "code": "ky",
+ "name": "Kyrgyz"
+ },
+ "lag": {
+ "code": "lag",
+ "name": "Langi"
+ },
+ "lo": {
+ "code": "lo",
+ "name": "Lao"
+ },
+ "lv": {
+ "code": "lv",
+ "name": "Latvian"
+ },
+ "ln": {
+ "code": "ln",
+ "name": "Lingala"
+ },
+ "lt": {
+ "code": "lt",
+ "name": "Lithuanian"
+ },
+ "dsb": {
+ "code": "dsb",
+ "name": "Lower Sorbian"
+ },
+ "lu": {
+ "code": "lu",
+ "name": "Luba-Katanga"
+ },
+ "luo": {
+ "code": "luo",
+ "name": "Luo"
+ },
+ "lb": {
+ "code": "lb",
+ "name": "Luxembourgish"
+ },
+ "luy": {
+ "code": "luy",
+ "name": "Luyia"
+ },
+ "mk": {
+ "code": "mk",
+ "name": "Macedonian"
+ },
+ "jmc": {
+ "code": "jmc",
+ "name": "Machame"
+ },
+ "mgh": {
+ "code": "mgh",
+ "name": "Makhuwa-Meetto"
+ },
+ "kde": {
+ "code": "kde",
+ "name": "Makonde"
+ },
+ "mg": {
+ "code": "mg",
+ "name": "Malagasy"
+ },
+ "ml": {
+ "code": "ml",
+ "name": "Malayalam"
+ },
+ "mt": {
+ "code": "mt",
+ "name": "Maltese"
+ },
+ "mr": {
+ "code": "mr",
+ "name": "Marathi"
+ },
+ "mas": {
+ "code": "mas",
+ "name": "Masai"
+ },
+ "mer": {
+ "code": "mer",
+ "name": "Meru"
+ },
+ "mn": {
+ "code": "mn",
+ "name": "Mongolian"
+ },
+ "mfe": {
+ "code": "mfe",
+ "name": "Morisyen"
+ },
+ "mua": {
+ "code": "mua",
+ "name": "Mundang"
+ },
+ "naq": {
+ "code": "naq",
+ "name": "Nama"
+ },
+ "jgo": {
+ "code": "jgo",
+ "name": "Ngomba"
+ },
+ "nl-BE": {
+ "code": "nl-BE",
+ "name": "nl_BE"
+ },
+ "nd": {
+ "code": "nd",
+ "name": "North Ndebele"
+ },
+ "se": {
+ "code": "se",
+ "name": "Northern Sami"
+ },
+ "nb": {
+ "code": "nb",
+ "name": "Norwegian Bokmål"
+ },
+ "nn": {
+ "code": "nn",
+ "name": "Norwegian Nynorsk"
+ },
+ "nus": {
+ "code": "nus",
+ "name": "Nuer"
+ },
+ "nyn": {
+ "code": "nyn",
+ "name": "Nyankole"
+ },
+ "or": {
+ "code": "or",
+ "name": "Oriya"
+ },
+ "ps": {
+ "code": "ps",
+ "name": "Pashto"
+ },
+ "pt-BR": {
+ "code": "pt-BR",
+ "name": "pt_BR"
+ },
+ "pt-PT": {
+ "code": "pt-PT",
+ "name": "pt_PT"
+ },
+ "ro-MD": {
+ "code": "ro-MD",
+ "name": "ro_MD"
+ },
+ "rm": {
+ "code": "rm",
+ "name": "Romansh"
+ },
+ "rof": {
+ "code": "rof",
+ "name": "Rombo"
+ },
+ "rn": {
+ "code": "rn",
+ "name": "Rundi"
+ },
+ "rwk": {
+ "code": "rwk",
+ "name": "Rwa"
+ },
+ "saq": {
+ "code": "saq",
+ "name": "Samburu"
+ },
+ "sg": {
+ "code": "sg",
+ "name": "Sango"
+ },
+ "sbp": {
+ "code": "sbp",
+ "name": "Sangu"
+ },
+ "gd": {
+ "code": "gd",
+ "name": "Scottish Gaelic"
+ },
+ "seh": {
+ "code": "seh",
+ "name": "Sena"
+ },
+ "sr": {
+ "code": "sr",
+ "name": "Serbian"
+ },
+ "ksb": {
+ "code": "ksb",
+ "name": "Shambala"
+ },
+ "sn": {
+ "code": "sn",
+ "name": "Shona"
+ },
+ "si": {
+ "code": "si",
+ "name": "Sinhala"
+ },
+ "sk": {
+ "code": "sk",
+ "name": "Slovak"
+ },
+ "sl": {
+ "code": "sl",
+ "name": "Slovenian"
+ },
+ "xog": {
+ "code": "xog",
+ "name": "Soga"
+ },
+ "zgh": {
+ "code": "zgh",
+ "name": "Standard Moroccan Tamazight"
+ },
+ "sw": {
+ "code": "sw",
+ "name": "Swahili"
+ },
+ "gsw": {
+ "code": "gsw",
+ "name": "Swiss German"
+ },
+ "shi": {
+ "code": "shi",
+ "name": "Tachelhit"
+ },
+ "dav": {
+ "code": "dav",
+ "name": "Taita"
+ },
+ "twq": {
+ "code": "twq",
+ "name": "Tasawaq"
+ },
+ "te": {
+ "code": "te",
+ "name": "Telugu"
+ },
+ "bo": {
+ "code": "bo",
+ "name": "Tibetan"
+ },
+ "ti": {
+ "code": "ti",
+ "name": "Tigrinya"
+ },
+ "to": {
+ "code": "to",
+ "name": "Tongan"
+ },
+ "hsb": {
+ "code": "hsb",
+ "name": "Upper Sorbian"
+ },
+ "ug": {
+ "code": "ug",
+ "name": "Uyghur"
+ },
+ "uz": {
+ "code": "uz",
+ "name": "Uzbek"
+ },
+ "vai": {
+ "code": "vai",
+ "name": "Vai"
+ },
+ "vun": {
+ "code": "vun",
+ "name": "Vunjo"
+ },
+ "wae": {
+ "code": "wae",
+ "name": "Walser"
+ },
+ "cy": {
+ "code": "cy",
+ "name": "Welsh"
+ },
+ "fy": {
+ "code": "fy",
+ "name": "Western Frisian"
+ },
+ "yav": {
+ "code": "yav",
+ "name": "Yangben"
+ },
+ "dje": {
+ "code": "dje",
+ "name": "Zarma"
+ },
+ "zh-Hans": {
+ "code": "zh-Hans",
+ "name": "zh_Hans"
+ },
+ "zh-Hant": {
+ "code": "zh-Hant",
+ "name": "zh_Hant"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/language/th.json b/library/intl/resources/language/th.json
new file mode 100644
index 000000000..f747a2392
--- /dev/null
+++ b/library/intl/resources/language/th.json
@@ -0,0 +1,738 @@
+{
+ "es-MX": {
+ "code": "es-MX",
+ "name": "es_MX"
+ },
+ "fr-CA": {
+ "code": "fr-CA",
+ "name": "fr_CA"
+ },
+ "el": {
+ "code": "el",
+ "name": "à¸à¸£à¸µà¸"
+ },
+ "kl": {
+ "code": "kl",
+ "name": "à¸à¸£à¸µà¸™à¹à¸¥à¸™à¸”์"
+ },
+ "nmg": {
+ "code": "nmg",
+ "name": "à¸à¸§à¸²à¸‹à¸´à¹‚อ"
+ },
+ "kn": {
+ "code": "kn",
+ "name": "à¸à¸±à¸™à¸™à¸²à¸”า"
+ },
+ "ks": {
+ "code": "ks",
+ "name": "à¸à¸±à¸¨à¸¡à¸µà¸£à¹Œ"
+ },
+ "ca": {
+ "code": "ca",
+ "name": "à¸à¸²à¸•à¸²à¸¥à¸±à¸‡"
+ },
+ "kab": {
+ "code": "kab",
+ "name": "à¸à¸²à¹„บล"
+ },
+ "gl": {
+ "code": "gl",
+ "name": "à¸à¸²à¸¥à¸´à¹€à¸‹à¸µà¸¢"
+ },
+ "ki": {
+ "code": "ki",
+ "name": "à¸à¸µà¸à¸¹à¸¢à¸¹"
+ },
+ "guz": {
+ "code": "guz",
+ "name": "à¸à¸¸à¸‹à¸‹à¸µ"
+ },
+ "ko": {
+ "code": "ko",
+ "name": "เà¸à¸²à¸«à¸¥à¸µ"
+ },
+ "km": {
+ "code": "km",
+ "name": "เขมร"
+ },
+ "kam": {
+ "code": "kam",
+ "name": "คัมบา"
+ },
+ "kk": {
+ "code": "kk",
+ "name": "คาซัค"
+ },
+ "kea": {
+ "code": "kea",
+ "name": "คาบูเวอร์เดียนู"
+ },
+ "kln": {
+ "code": "kln",
+ "name": "คาเลนจิน"
+ },
+ "cgg": {
+ "code": "cgg",
+ "name": "คีà¸à¸²"
+ },
+ "ky": {
+ "code": "ky",
+ "name": "คีร์à¸à¸µà¸‹"
+ },
+ "gu": {
+ "code": "gu",
+ "name": "คุชราต"
+ },
+ "khq": {
+ "code": "khq",
+ "name": "โคย์ราชีนี"
+ },
+ "ses": {
+ "code": "ses",
+ "name": "โคย์ราโบโรเซนนี"
+ },
+ "hr": {
+ "code": "hr",
+ "name": "โครเอเชีย"
+ },
+ "ksh": {
+ "code": "ksh",
+ "name": "โคโลà¸"
+ },
+ "ka": {
+ "code": "ka",
+ "name": "จอร์เจีย"
+ },
+ "zh": {
+ "code": "zh",
+ "name": "จีน"
+ },
+ "zh-Hant": {
+ "code": "zh-Hant",
+ "name": "จีนตัวเต็ม"
+ },
+ "zh-Hans": {
+ "code": "zh-Hans",
+ "name": "จีนตัวย่อ"
+ },
+ "dyo": {
+ "code": "dyo",
+ "name": "โจลา-ฟอนยี"
+ },
+ "ksb": {
+ "code": "ksb",
+ "name": "ชัมบาลา"
+ },
+ "cs": {
+ "code": "cs",
+ "name": "เช็à¸"
+ },
+ "chr": {
+ "code": "chr",
+ "name": "เชอโรà¸à¸µ"
+ },
+ "sn": {
+ "code": "sn",
+ "name": "โชนา"
+ },
+ "dz": {
+ "code": "dz",
+ "name": "ซองคา"
+ },
+ "hsb": {
+ "code": "hsb",
+ "name": "ซอร์บส์ตอนบน"
+ },
+ "dsb": {
+ "code": "dsb",
+ "name": "ซอร์บส์ตอนล่าง"
+ },
+ "se": {
+ "code": "se",
+ "name": "ซามิเหนือ"
+ },
+ "dje": {
+ "code": "dje",
+ "name": "ซาร์มา"
+ },
+ "zu": {
+ "code": "zu",
+ "name": "ซูลู"
+ },
+ "seh": {
+ "code": "seh",
+ "name": "เซนา"
+ },
+ "sr": {
+ "code": "sr",
+ "name": "เซอร์เบีย"
+ },
+ "sbp": {
+ "code": "sbp",
+ "name": "à¹à¸‹à¸‡à¸à¸¹"
+ },
+ "sg": {
+ "code": "sg",
+ "name": "à¹à¸‹à¸‡à¹‚à¸"
+ },
+ "saq": {
+ "code": "saq",
+ "name": "à¹à¸‹à¸¡à¸šà¸¹à¸£à¸¹"
+ },
+ "xog": {
+ "code": "xog",
+ "name": "โซà¸à¸²"
+ },
+ "so": {
+ "code": "so",
+ "name": "โซมาลี"
+ },
+ "ja": {
+ "code": "ja",
+ "name": "à¸à¸µà¹ˆà¸›à¸¸à¹ˆà¸™"
+ },
+ "nl": {
+ "code": "nl",
+ "name": "ดัตช์"
+ },
+ "da": {
+ "code": "da",
+ "name": "เดนมาร์à¸"
+ },
+ "to": {
+ "code": "to",
+ "name": "ตองà¸à¸²"
+ },
+ "twq": {
+ "code": "twq",
+ "name": "ตัสซาวัค"
+ },
+ "ti": {
+ "code": "ti",
+ "name": "ติà¸à¸£à¸´à¸à¸à¸²"
+ },
+ "tr": {
+ "code": "tr",
+ "name": "ตุรà¸à¸µ"
+ },
+ "teo": {
+ "code": "teo",
+ "name": "เตโซ"
+ },
+ "te": {
+ "code": "te",
+ "name": "เตลูà¸à¸¹"
+ },
+ "ta": {
+ "code": "ta",
+ "name": "ทมิฬ"
+ },
+ "shi": {
+ "code": "shi",
+ "name": "ทาเชลีห์ท"
+ },
+ "zgh": {
+ "code": "zgh",
+ "name": "ทามาไซต์โมร็อà¸à¹‚à¸à¸¡à¸²à¸•à¸£à¸à¸²à¸™"
+ },
+ "tzm": {
+ "code": "tzm",
+ "name": "ทามาไซต์à¹à¸­à¸•à¸¥à¸²à¸ªà¸à¸¥à¸²à¸‡"
+ },
+ "bo": {
+ "code": "bo",
+ "name": "ทิเบต"
+ },
+ "dav": {
+ "code": "dav",
+ "name": "ไททา"
+ },
+ "th": {
+ "code": "th",
+ "name": "ไทย"
+ },
+ "nn": {
+ "code": "nn",
+ "name": "นอร์เวย์นีนอสà¸à¹Œ"
+ },
+ "nb": {
+ "code": "nb",
+ "name": "นอร์เวย์บุคมอล"
+ },
+ "naq": {
+ "code": "naq",
+ "name": "นามา"
+ },
+ "ne": {
+ "code": "ne",
+ "name": "เนปาล"
+ },
+ "nyn": {
+ "code": "nyn",
+ "name": "เนียนโà¸à¹€à¸¥"
+ },
+ "nus": {
+ "code": "nus",
+ "name": "เนือร์"
+ },
+ "bs": {
+ "code": "bs",
+ "name": "บอสเนีย"
+ },
+ "bm": {
+ "code": "bm",
+ "name": "บัมบารา"
+ },
+ "bg": {
+ "code": "bg",
+ "name": "บัลà¹à¸à¹€à¸£à¸µà¸¢"
+ },
+ "eu": {
+ "code": "eu",
+ "name": "บัสเà¸"
+ },
+ "ksf": {
+ "code": "ksf",
+ "name": "บาเฟีย"
+ },
+ "bas": {
+ "code": "bas",
+ "name": "บาสา"
+ },
+ "rn": {
+ "code": "rn",
+ "name": "บุรุนดี"
+ },
+ "bn": {
+ "code": "bn",
+ "name": "เบงà¸à¸²à¸¥à¸µ"
+ },
+ "bez": {
+ "code": "bez",
+ "name": "เบนา"
+ },
+ "br": {
+ "code": "br",
+ "name": "เบรตัน"
+ },
+ "be": {
+ "code": "be",
+ "name": "เบลารุส"
+ },
+ "pa": {
+ "code": "pa",
+ "name": "ปัà¸à¸ˆà¸²à¸š"
+ },
+ "fa": {
+ "code": "fa",
+ "name": "เปอร์เซีย"
+ },
+ "pt": {
+ "code": "pt",
+ "name": "โปรตุเà¸à¸ª"
+ },
+ "pt-BR": {
+ "code": "pt-BR",
+ "name": "โปรตุเà¸à¸ª - บราซิล"
+ },
+ "pt-PT": {
+ "code": "pt-PT",
+ "name": "โปรตุเà¸à¸ª - ยุโรป"
+ },
+ "pl": {
+ "code": "pl",
+ "name": "โปà¹à¸¥à¸™à¸”์"
+ },
+ "fr": {
+ "code": "fr",
+ "name": "à¸à¸£à¸±à¹ˆà¸‡à¹€à¸¨à¸ª"
+ },
+ "fr-CH": {
+ "code": "fr-CH",
+ "name": "à¸à¸£à¸±à¹ˆà¸‡à¹€à¸¨à¸ª (สวิส)"
+ },
+ "my": {
+ "code": "my",
+ "name": "พม่า"
+ },
+ "ps": {
+ "code": "ps",
+ "name": "พาชตู"
+ },
+ "brx": {
+ "code": "brx",
+ "name": "โพโฑ"
+ },
+ "fy": {
+ "code": "fy",
+ "name": "ฟริเซียนตะวันตà¸"
+ },
+ "fur": {
+ "code": "fur",
+ "name": "ฟรูลี"
+ },
+ "fi": {
+ "code": "fi",
+ "name": "ฟินà¹à¸¥à¸™à¸”์"
+ },
+ "fil": {
+ "code": "fil",
+ "name": "ฟิลิปปินส์"
+ },
+ "ff": {
+ "code": "ff",
+ "name": "ฟูลาฮ์"
+ },
+ "nl-BE": {
+ "code": "nl-BE",
+ "name": "เฟลมิช"
+ },
+ "fo": {
+ "code": "fo",
+ "name": "à¹à¸Ÿà¹‚ร"
+ },
+ "mr": {
+ "code": "mr",
+ "name": "มราà¸à¸µ"
+ },
+ "mn": {
+ "code": "mn",
+ "name": "มองโà¸à¹€à¸¥à¸µà¸¢"
+ },
+ "mfe": {
+ "code": "mfe",
+ "name": "มอริสเยน"
+ },
+ "ro-MD": {
+ "code": "ro-MD",
+ "name": "มอลโดวา"
+ },
+ "mt": {
+ "code": "mt",
+ "name": "มอลตา"
+ },
+ "mua": {
+ "code": "mua",
+ "name": "มันดัง"
+ },
+ "mgh": {
+ "code": "mgh",
+ "name": "มาà¸à¸±à¸§à¸§à¸²-มีทโท"
+ },
+ "kde": {
+ "code": "kde",
+ "name": "มาคอนเด"
+ },
+ "jmc": {
+ "code": "jmc",
+ "name": "มาชาเม"
+ },
+ "mk": {
+ "code": "mk",
+ "name": "มาซิโดเนีย"
+ },
+ "mas": {
+ "code": "mas",
+ "name": "มาไซ"
+ },
+ "mg": {
+ "code": "mg",
+ "name": "มาลาà¸à¸²à¸‹à¸µ"
+ },
+ "ml": {
+ "code": "ml",
+ "name": "มาลายาลัม"
+ },
+ "ms": {
+ "code": "ms",
+ "name": "มาเลย์"
+ },
+ "mer": {
+ "code": "mer",
+ "name": "เมรู"
+ },
+ "lg": {
+ "code": "lg",
+ "name": "ยูà¸à¸±à¸™à¸”า"
+ },
+ "uk": {
+ "code": "uk",
+ "name": "ยูเครน"
+ },
+ "de": {
+ "code": "de",
+ "name": "เยอรมัน"
+ },
+ "de-AT": {
+ "code": "de-AT",
+ "name": "เยอรมัน - ออสเตรีย"
+ },
+ "gsw": {
+ "code": "gsw",
+ "name": "เยอรมันสวิส"
+ },
+ "de-CH": {
+ "code": "de-CH",
+ "name": "เยอรมันสูง (สวิส)"
+ },
+ "yav": {
+ "code": "yav",
+ "name": "à¹à¸¢à¸‡à¹€à¸šà¸™"
+ },
+ "yo": {
+ "code": "yo",
+ "name": "โยรูบา"
+ },
+ "rwk": {
+ "code": "rwk",
+ "name": "รวา"
+ },
+ "rof": {
+ "code": "rof",
+ "name": "รอมโบ"
+ },
+ "ru": {
+ "code": "ru",
+ "name": "รัสเซีย"
+ },
+ "ro": {
+ "code": "ro",
+ "name": "โรมาเนีย"
+ },
+ "rm": {
+ "code": "rm",
+ "name": "โรà¹à¸¡à¸™à¸‹à¹Œ"
+ },
+ "lb": {
+ "code": "lb",
+ "name": "ลัà¸à¹€à¸‹à¸¡à¹€à¸šà¸´à¸£à¹Œà¸"
+ },
+ "lv": {
+ "code": "lv",
+ "name": "ลัตเวีย"
+ },
+ "luo": {
+ "code": "luo",
+ "name": "ลัว"
+ },
+ "lo": {
+ "code": "lo",
+ "name": "ลาว"
+ },
+ "ln": {
+ "code": "ln",
+ "name": "ลิงà¸à¸²à¸¥à¸²"
+ },
+ "lt": {
+ "code": "lt",
+ "name": "ลิทัวเนีย"
+ },
+ "lu": {
+ "code": "lu",
+ "name": "ลูบา-à¸à¸²à¸•à¸­à¸‡à¸à¸²"
+ },
+ "luy": {
+ "code": "luy",
+ "name": "ลูเยีย"
+ },
+ "lag": {
+ "code": "lag",
+ "name": "à¹à¸¥à¸™à¸ˆà¸µ"
+ },
+ "wae": {
+ "code": "wae",
+ "name": "วัลเซอร์"
+ },
+ "vun": {
+ "code": "vun",
+ "name": "วุนจู"
+ },
+ "cy": {
+ "code": "cy",
+ "name": "เวลส์"
+ },
+ "vi": {
+ "code": "vi",
+ "name": "เวียดนาม"
+ },
+ "vai": {
+ "code": "vai",
+ "name": "ไว"
+ },
+ "gd": {
+ "code": "gd",
+ "name": "สà¸à¸­à¸•à¸ªà¹Œà¸à¸²à¸¥à¸´à¸"
+ },
+ "es": {
+ "code": "es",
+ "name": "สเปน"
+ },
+ "es-ES": {
+ "code": "es-ES",
+ "name": "สเปน (ยุโรป)"
+ },
+ "sk": {
+ "code": "sk",
+ "name": "สโลวัà¸"
+ },
+ "sl": {
+ "code": "sl",
+ "name": "สโลวีเนีย"
+ },
+ "sw": {
+ "code": "sw",
+ "name": "สวาฮีลี"
+ },
+ "swc": {
+ "code": "swc",
+ "name": "สวาฮีลี-คองโà¸"
+ },
+ "sv": {
+ "code": "sv",
+ "name": "สวีเดน"
+ },
+ "si": {
+ "code": "si",
+ "name": "สิงหล"
+ },
+ "agq": {
+ "code": "agq",
+ "name": "อัà¸à¹€à¸®à¸¡"
+ },
+ "en": {
+ "code": "en",
+ "name": "อังà¸à¸¤à¸©"
+ },
+ "en-CA": {
+ "code": "en-CA",
+ "name": "อังà¸à¸¤à¸© - à¹à¸„นาดา"
+ },
+ "en-GB": {
+ "code": "en-GB",
+ "name": "อังà¸à¸¤à¸© - สหราชอาณาจัà¸à¸£"
+ },
+ "en-US": {
+ "code": "en-US",
+ "name": "อังà¸à¸¤à¸© - อเมริà¸à¸±à¸™"
+ },
+ "en-AU": {
+ "code": "en-AU",
+ "name": "อังà¸à¸¤à¸© - ออสเตรเลีย"
+ },
+ "am": {
+ "code": "am",
+ "name": "อัมฮารา"
+ },
+ "ast": {
+ "code": "ast",
+ "name": "อัสตูเรียส"
+ },
+ "ak": {
+ "code": "ak",
+ "name": "อาคัน"
+ },
+ "asa": {
+ "code": "asa",
+ "name": "อาซู"
+ },
+ "az": {
+ "code": "az",
+ "name": "อาเซอร์ไบจาน"
+ },
+ "hy": {
+ "code": "hy",
+ "name": "อาร์เมเนีย"
+ },
+ "ar": {
+ "code": "ar",
+ "name": "อาหรับ"
+ },
+ "ar-001": {
+ "code": "ar-001",
+ "name": "อาหรับมาตรà¸à¸²à¸™à¸ªà¸¡à¸±à¸¢à¹ƒà¸«à¸¡à¹ˆ"
+ },
+ "it": {
+ "code": "it",
+ "name": "อิตาลี"
+ },
+ "id": {
+ "code": "id",
+ "name": "อินโดนีเชีย"
+ },
+ "ewo": {
+ "code": "ewo",
+ "name": "อีวันโด"
+ },
+ "jgo": {
+ "code": "jgo",
+ "name": "อึนà¸à¸­à¸¡à¸šà¸²"
+ },
+ "uz": {
+ "code": "uz",
+ "name": "อุซเบà¸"
+ },
+ "ug": {
+ "code": "ug",
+ "name": "อุยà¸à¸±à¸§"
+ },
+ "ur": {
+ "code": "ur",
+ "name": "อูรดู"
+ },
+ "nd": {
+ "code": "nd",
+ "name": "เอ็นเดเบเลเหนือ"
+ },
+ "ebu": {
+ "code": "ebu",
+ "name": "เอ็มบู"
+ },
+ "ee": {
+ "code": "ee",
+ "name": "เอเว"
+ },
+ "et": {
+ "code": "et",
+ "name": "เอสโตเนีย"
+ },
+ "eo": {
+ "code": "eo",
+ "name": "เอสเปอรันโต"
+ },
+ "af": {
+ "code": "af",
+ "name": "à¹à¸­à¸Ÿà¸£à¸´à¸à¸²à¸™à¸ªà¹Œ"
+ },
+ "sq": {
+ "code": "sq",
+ "name": "à¹à¸­à¸¥à¹€à¸šà¹€à¸™à¸µà¸¢"
+ },
+ "or": {
+ "code": "or",
+ "name": "โอริยา"
+ },
+ "is": {
+ "code": "is",
+ "name": "ไอซ์à¹à¸¥à¸™à¸”์"
+ },
+ "ga": {
+ "code": "ga",
+ "name": "ไอริช"
+ },
+ "hu": {
+ "code": "hu",
+ "name": "ฮังà¸à¸²à¸£à¸µ"
+ },
+ "hi": {
+ "code": "hi",
+ "name": "ฮินดี"
+ },
+ "he": {
+ "code": "he",
+ "name": "ฮิบรู"
+ },
+ "ha": {
+ "code": "ha",
+ "name": "เฮาชา"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/language/ti.json b/library/intl/resources/language/ti.json
new file mode 100644
index 000000000..70af1ec92
--- /dev/null
+++ b/library/intl/resources/language/ti.json
@@ -0,0 +1,738 @@
+{
+ "agq": {
+ "code": "agq",
+ "name": "Aghem"
+ },
+ "ak": {
+ "code": "ak",
+ "name": "Akan"
+ },
+ "ar-001": {
+ "code": "ar-001",
+ "name": "ar_001"
+ },
+ "hy": {
+ "code": "hy",
+ "name": "Armenian"
+ },
+ "ast": {
+ "code": "ast",
+ "name": "Asturian"
+ },
+ "asa": {
+ "code": "asa",
+ "name": "Asu"
+ },
+ "ksf": {
+ "code": "ksf",
+ "name": "Bafia"
+ },
+ "bm": {
+ "code": "bm",
+ "name": "Bambara"
+ },
+ "bas": {
+ "code": "bas",
+ "name": "Basaa"
+ },
+ "bez": {
+ "code": "bez",
+ "name": "Bena"
+ },
+ "brx": {
+ "code": "brx",
+ "name": "Bodo"
+ },
+ "my": {
+ "code": "my",
+ "name": "Burmese"
+ },
+ "tzm": {
+ "code": "tzm",
+ "name": "Central Atlas Tamazight"
+ },
+ "chr": {
+ "code": "chr",
+ "name": "Cherokee"
+ },
+ "cgg": {
+ "code": "cgg",
+ "name": "Chiga"
+ },
+ "zh": {
+ "code": "zh",
+ "name": "Chinese"
+ },
+ "ksh": {
+ "code": "ksh",
+ "name": "Colognian"
+ },
+ "swc": {
+ "code": "swc",
+ "name": "Congo Swahili"
+ },
+ "de-AT": {
+ "code": "de-AT",
+ "name": "de_AT"
+ },
+ "de-CH": {
+ "code": "de-CH",
+ "name": "de_CH"
+ },
+ "dz": {
+ "code": "dz",
+ "name": "Dzongkha"
+ },
+ "ebu": {
+ "code": "ebu",
+ "name": "Embu"
+ },
+ "en-AU": {
+ "code": "en-AU",
+ "name": "en_AU"
+ },
+ "en-CA": {
+ "code": "en-CA",
+ "name": "en_CA"
+ },
+ "en-GB": {
+ "code": "en-GB",
+ "name": "en_GB"
+ },
+ "en-US": {
+ "code": "en-US",
+ "name": "en_US"
+ },
+ "es-ES": {
+ "code": "es-ES",
+ "name": "es_ES"
+ },
+ "es-MX": {
+ "code": "es-MX",
+ "name": "es_MX"
+ },
+ "ee": {
+ "code": "ee",
+ "name": "Ewe"
+ },
+ "ewo": {
+ "code": "ewo",
+ "name": "Ewondo"
+ },
+ "fr-CA": {
+ "code": "fr-CA",
+ "name": "fr_CA"
+ },
+ "fr-CH": {
+ "code": "fr-CH",
+ "name": "fr_CH"
+ },
+ "fur": {
+ "code": "fur",
+ "name": "Friulian"
+ },
+ "ff": {
+ "code": "ff",
+ "name": "Fulah"
+ },
+ "lg": {
+ "code": "lg",
+ "name": "Ganda"
+ },
+ "guz": {
+ "code": "guz",
+ "name": "Gusii"
+ },
+ "ha": {
+ "code": "ha",
+ "name": "Hausa"
+ },
+ "dyo": {
+ "code": "dyo",
+ "name": "Jola-Fonyi"
+ },
+ "kea": {
+ "code": "kea",
+ "name": "Kabuverdianu"
+ },
+ "kab": {
+ "code": "kab",
+ "name": "Kabyle"
+ },
+ "kl": {
+ "code": "kl",
+ "name": "Kalaallisut"
+ },
+ "kln": {
+ "code": "kln",
+ "name": "Kalenjin"
+ },
+ "kam": {
+ "code": "kam",
+ "name": "Kamba"
+ },
+ "ks": {
+ "code": "ks",
+ "name": "Kashmiri"
+ },
+ "kk": {
+ "code": "kk",
+ "name": "Kazakh"
+ },
+ "km": {
+ "code": "km",
+ "name": "Khmer"
+ },
+ "ki": {
+ "code": "ki",
+ "name": "Kikuyu"
+ },
+ "khq": {
+ "code": "khq",
+ "name": "Koyra Chiini"
+ },
+ "ses": {
+ "code": "ses",
+ "name": "Koyraboro Senni"
+ },
+ "nmg": {
+ "code": "nmg",
+ "name": "Kwasio"
+ },
+ "lag": {
+ "code": "lag",
+ "name": "Langi"
+ },
+ "lo": {
+ "code": "lo",
+ "name": "Lao"
+ },
+ "ln": {
+ "code": "ln",
+ "name": "Lingala"
+ },
+ "dsb": {
+ "code": "dsb",
+ "name": "Lower Sorbian"
+ },
+ "lu": {
+ "code": "lu",
+ "name": "Luba-Katanga"
+ },
+ "luo": {
+ "code": "luo",
+ "name": "Luo"
+ },
+ "lb": {
+ "code": "lb",
+ "name": "Luxembourgish"
+ },
+ "luy": {
+ "code": "luy",
+ "name": "Luyia"
+ },
+ "jmc": {
+ "code": "jmc",
+ "name": "Machame"
+ },
+ "mgh": {
+ "code": "mgh",
+ "name": "Makhuwa-Meetto"
+ },
+ "kde": {
+ "code": "kde",
+ "name": "Makonde"
+ },
+ "mg": {
+ "code": "mg",
+ "name": "Malagasy"
+ },
+ "mas": {
+ "code": "mas",
+ "name": "Masai"
+ },
+ "mer": {
+ "code": "mer",
+ "name": "Meru"
+ },
+ "mn": {
+ "code": "mn",
+ "name": "Mongolian"
+ },
+ "mfe": {
+ "code": "mfe",
+ "name": "Morisyen"
+ },
+ "mua": {
+ "code": "mua",
+ "name": "Mundang"
+ },
+ "naq": {
+ "code": "naq",
+ "name": "Nama"
+ },
+ "jgo": {
+ "code": "jgo",
+ "name": "Ngomba"
+ },
+ "nl-BE": {
+ "code": "nl-BE",
+ "name": "nl_BE"
+ },
+ "nd": {
+ "code": "nd",
+ "name": "North Ndebele"
+ },
+ "se": {
+ "code": "se",
+ "name": "Northern Sami"
+ },
+ "nb": {
+ "code": "nb",
+ "name": "Norwegian Bokmål"
+ },
+ "nus": {
+ "code": "nus",
+ "name": "Nuer"
+ },
+ "nyn": {
+ "code": "nyn",
+ "name": "Nyankole"
+ },
+ "ro-MD": {
+ "code": "ro-MD",
+ "name": "ro_MD"
+ },
+ "rm": {
+ "code": "rm",
+ "name": "Romansh"
+ },
+ "rof": {
+ "code": "rof",
+ "name": "Rombo"
+ },
+ "rn": {
+ "code": "rn",
+ "name": "Rundi"
+ },
+ "rwk": {
+ "code": "rwk",
+ "name": "Rwa"
+ },
+ "saq": {
+ "code": "saq",
+ "name": "Samburu"
+ },
+ "sg": {
+ "code": "sg",
+ "name": "Sango"
+ },
+ "sbp": {
+ "code": "sbp",
+ "name": "Sangu"
+ },
+ "seh": {
+ "code": "seh",
+ "name": "Sena"
+ },
+ "ksb": {
+ "code": "ksb",
+ "name": "Shambala"
+ },
+ "sn": {
+ "code": "sn",
+ "name": "Shona"
+ },
+ "xog": {
+ "code": "xog",
+ "name": "Soga"
+ },
+ "so": {
+ "code": "so",
+ "name": "Somali"
+ },
+ "zgh": {
+ "code": "zgh",
+ "name": "Standard Moroccan Tamazight"
+ },
+ "gsw": {
+ "code": "gsw",
+ "name": "Swiss German"
+ },
+ "shi": {
+ "code": "shi",
+ "name": "Tachelhit"
+ },
+ "dav": {
+ "code": "dav",
+ "name": "Taita"
+ },
+ "twq": {
+ "code": "twq",
+ "name": "Tasawaq"
+ },
+ "teo": {
+ "code": "teo",
+ "name": "Teso"
+ },
+ "bo": {
+ "code": "bo",
+ "name": "Tibetan"
+ },
+ "to": {
+ "code": "to",
+ "name": "Tongan"
+ },
+ "hsb": {
+ "code": "hsb",
+ "name": "Upper Sorbian"
+ },
+ "ug": {
+ "code": "ug",
+ "name": "Uyghur"
+ },
+ "vai": {
+ "code": "vai",
+ "name": "Vai"
+ },
+ "vun": {
+ "code": "vun",
+ "name": "Vunjo"
+ },
+ "wae": {
+ "code": "wae",
+ "name": "Walser"
+ },
+ "yav": {
+ "code": "yav",
+ "name": "Yangben"
+ },
+ "yo": {
+ "code": "yo",
+ "name": "Yoruba"
+ },
+ "dje": {
+ "code": "dje",
+ "name": "Zarma"
+ },
+ "zh-Hans": {
+ "code": "zh-Hans",
+ "name": "zh_Hans"
+ },
+ "zh-Hant": {
+ "code": "zh-Hant",
+ "name": "zh_Hant"
+ },
+ "hu": {
+ "code": "hu",
+ "name": "ሀንጋሪኛ"
+ },
+ "lt": {
+ "code": "lt",
+ "name": "ሊቱአኒየን"
+ },
+ "lv": {
+ "code": "lv",
+ "name": "ላቲቪያን"
+ },
+ "hi": {
+ "code": "hi",
+ "name": "ሕንደኛ"
+ },
+ "ml": {
+ "code": "ml",
+ "name": "ማላያላáˆáŠ›"
+ },
+ "ms": {
+ "code": "ms",
+ "name": "ማላይኛ"
+ },
+ "mt": {
+ "code": "mt",
+ "name": "ማáˆá‰²áˆµáŠ›"
+ },
+ "mr": {
+ "code": "mr",
+ "name": "ማራቲኛ"
+ },
+ "mk": {
+ "code": "mk",
+ "name": "ማክዶኒኛ"
+ },
+ "ru": {
+ "code": "ru",
+ "name": "ራሽኛ"
+ },
+ "ro": {
+ "code": "ro",
+ "name": "ሮማኒያን"
+ },
+ "sr": {
+ "code": "sr",
+ "name": "ሰርቢኛ"
+ },
+ "sw": {
+ "code": "sw",
+ "name": "ሰዋሂሊኛ"
+ },
+ "sk": {
+ "code": "sk",
+ "name": "ስሎቨክኛ"
+ },
+ "sl": {
+ "code": "sl",
+ "name": "ስá‰á‰ªáŠ›"
+ },
+ "si": {
+ "code": "si",
+ "name": "ስንሃáˆáŠ›"
+ },
+ "sv": {
+ "code": "sv",
+ "name": "ስዊድንኛ"
+ },
+ "es": {
+ "code": "es",
+ "name": "ስá“ኒሽ"
+ },
+ "bn": {
+ "code": "bn",
+ "name": "በንጋሊኛ"
+ },
+ "bg": {
+ "code": "bg",
+ "name": "ቡáˆáŒ‹áˆªáŠ›"
+ },
+ "eu": {
+ "code": "eu",
+ "name": "ባስክኛ"
+ },
+ "be": {
+ "code": "be",
+ "name": "ቤላራሻኛ"
+ },
+ "br": {
+ "code": "br",
+ "name": "ብሬቶን"
+ },
+ "bs": {
+ "code": "bs",
+ "name": "ቦስኒያን"
+ },
+ "vi": {
+ "code": "vi",
+ "name": "ቪትናáˆáŠ›"
+ },
+ "te": {
+ "code": "te",
+ "name": "ተሉጉኛ"
+ },
+ "tr": {
+ "code": "tr",
+ "name": "ቱርከኛ"
+ },
+ "ta": {
+ "code": "ta",
+ "name": "ታሚáˆáŠ›"
+ },
+ "th": {
+ "code": "th",
+ "name": "ታይኛ"
+ },
+ "fil": {
+ "code": "fil",
+ "name": "ታጋሎገኛ"
+ },
+ "ti": {
+ "code": "ti",
+ "name": "ትáŒáˆ­áŠ›"
+ },
+ "cs": {
+ "code": "cs",
+ "name": "ቼክኛ"
+ },
+ "ne": {
+ "code": "ne",
+ "name": "ኔá–ሊኛ"
+ },
+ "nn": {
+ "code": "nn",
+ "name": "ኖርዌይኛ (ናይ áŠáŠ–ርስክ)"
+ },
+ "sq": {
+ "code": "sq",
+ "name": "አáˆá‰¤áŠ’ኛ"
+ },
+ "am": {
+ "code": "am",
+ "name": "አáˆáˆáˆ¨áŠ›"
+ },
+ "az": {
+ "code": "az",
+ "name": "አዜርባይጃንኛ"
+ },
+ "ga": {
+ "code": "ga",
+ "name": "አይሪሽ"
+ },
+ "is": {
+ "code": "is",
+ "name": "አይስላንደኛ"
+ },
+ "af": {
+ "code": "af",
+ "name": "አáሪቃንሰኛ"
+ },
+ "ur": {
+ "code": "ur",
+ "name": "ኡርዱኛ"
+ },
+ "uz": {
+ "code": "uz",
+ "name": "ኡá‹á‰ áŠ­áŠ›"
+ },
+ "et": {
+ "code": "et",
+ "name": "ኤስቶኒአን"
+ },
+ "eo": {
+ "code": "eo",
+ "name": "ኤስáራንቶ"
+ },
+ "gd": {
+ "code": "gd",
+ "name": "እስኮትስ ጌáˆáŠ­áŠ›"
+ },
+ "id": {
+ "code": "id",
+ "name": "እንዶኑሲኛ"
+ },
+ "en": {
+ "code": "en",
+ "name": "እንáŒáˆŠá‹áŠ›"
+ },
+ "or": {
+ "code": "or",
+ "name": "ኦሪያ"
+ },
+ "ky": {
+ "code": "ky",
+ "name": "ኪሩጋዚ"
+ },
+ "kn": {
+ "code": "kn",
+ "name": "ካማደኛ"
+ },
+ "ca": {
+ "code": "ca",
+ "name": "ካታላን"
+ },
+ "hr": {
+ "code": "hr",
+ "name": "ክሮሽያንኛ"
+ },
+ "ko": {
+ "code": "ko",
+ "name": "ኮሪያኛ"
+ },
+ "cy": {
+ "code": "cy",
+ "name": "ወáˆáˆ½"
+ },
+ "ar": {
+ "code": "ar",
+ "name": "ዓረበኛ"
+ },
+ "he": {
+ "code": "he",
+ "name": "ዕብራስጥ"
+ },
+ "zu": {
+ "code": "zu",
+ "name": "ዙሉኛ"
+ },
+ "uk": {
+ "code": "uk",
+ "name": "ዩክረኒኛ"
+ },
+ "nl": {
+ "code": "nl",
+ "name": "ደች"
+ },
+ "da": {
+ "code": "da",
+ "name": "ዴኒሽ"
+ },
+ "de": {
+ "code": "de",
+ "name": "ጀርመን"
+ },
+ "ja": {
+ "code": "ja",
+ "name": "ጃá“ንኛ"
+ },
+ "gu": {
+ "code": "gu",
+ "name": "ጉጃራቲኛ"
+ },
+ "ka": {
+ "code": "ka",
+ "name": "ጊዮርጊያኛ"
+ },
+ "gl": {
+ "code": "gl",
+ "name": "ጋለቪኛ"
+ },
+ "el": {
+ "code": "el",
+ "name": "áŒáˆªáŠ¨áŠ›"
+ },
+ "it": {
+ "code": "it",
+ "name": "ጣሊያንኛ"
+ },
+ "fr": {
+ "code": "fr",
+ "name": "áˆáˆ¨áŠ•áˆ³á‹­áŠ›"
+ },
+ "fi": {
+ "code": "fi",
+ "name": "áŠáŠ’ሽ"
+ },
+ "fo": {
+ "code": "fo",
+ "name": "á‹áˆ®áŠ›"
+ },
+ "fy": {
+ "code": "fy",
+ "name": "áሪሰኛ"
+ },
+ "fa": {
+ "code": "fa",
+ "name": "áርሲያኛ"
+ },
+ "pa": {
+ "code": "pa",
+ "name": "á‘ንጃቢኛ"
+ },
+ "ps": {
+ "code": "ps",
+ "name": "á“ሽቶ"
+ },
+ "pl": {
+ "code": "pl",
+ "name": "á–ሊሽ"
+ },
+ "pt": {
+ "code": "pt",
+ "name": "á–ርቱጋሊኛ"
+ },
+ "pt-BR": {
+ "code": "pt-BR",
+ "name": "á–ርቱጋáˆáŠ› (ናይ ብራዚáˆ)"
+ },
+ "pt-PT": {
+ "code": "pt-PT",
+ "name": "á–ርቱጋáˆáŠ› (ናይ á–ርቱጋáˆ)"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/language/to.json b/library/intl/resources/language/to.json
new file mode 100644
index 000000000..d7a685c78
--- /dev/null
+++ b/library/intl/resources/language/to.json
@@ -0,0 +1,738 @@
+{
+ "fr": {
+ "code": "fr",
+ "name": "lea fakafalanisē"
+ },
+ "fr-CA": {
+ "code": "fr-CA",
+ "name": "lea fakafalanisÄ“-kÄnata"
+ },
+ "fr-CH": {
+ "code": "fr-CH",
+ "name": "lea fakafalanisē-suisilani"
+ },
+ "fo": {
+ "code": "fo",
+ "name": "lea fakafaloe"
+ },
+ "fil": {
+ "code": "fil",
+ "name": "lea fakafilipaini"
+ },
+ "fy": {
+ "code": "fy",
+ "name": "lea fakafilisia-hihifo"
+ },
+ "fi": {
+ "code": "fi",
+ "name": "lea fakafinilani"
+ },
+ "ff": {
+ "code": "ff",
+ "name": "lea fakafulÄ"
+ },
+ "fur": {
+ "code": "fur",
+ "name": "lea fakafulilÄni"
+ },
+ "ha": {
+ "code": "ha",
+ "name": "lea fakahausa"
+ },
+ "he": {
+ "code": "he",
+ "name": "lea fakahepelū"
+ },
+ "hi": {
+ "code": "hi",
+ "name": "lea fakahinitī"
+ },
+ "nl": {
+ "code": "nl",
+ "name": "lea fakahÅlani"
+ },
+ "nl-BE": {
+ "code": "nl-BE",
+ "name": "lea fakahÅlani-pelesiume"
+ },
+ "hu": {
+ "code": "hu",
+ "name": "lea fakahungakalia"
+ },
+ "ga": {
+ "code": "ga",
+ "name": "lea fakaʻaelani"
+ },
+ "af": {
+ "code": "af",
+ "name": "lea fakaʻafilikana"
+ },
+ "is": {
+ "code": "is",
+ "name": "lea fakaʻaisilani"
+ },
+ "ak": {
+ "code": "ak",
+ "name": "lea fakaʻakani"
+ },
+ "agq": {
+ "code": "agq",
+ "name": "lea fakaʻakihemi"
+ },
+ "sq": {
+ "code": "sq",
+ "name": "lea fakaʻalapēnia"
+ },
+ "ar": {
+ "code": "ar",
+ "name": "lea fakaʻalepea"
+ },
+ "ar-001": {
+ "code": "ar-001",
+ "name": "lea fakaÊ»alepea (mÄmani)"
+ },
+ "am": {
+ "code": "am",
+ "name": "lea fakaʻameliki"
+ },
+ "hy": {
+ "code": "hy",
+ "name": "lea fakaÊ»Ämenia"
+ },
+ "az": {
+ "code": "az",
+ "name": "lea fakaʻasapaisani"
+ },
+ "ast": {
+ "code": "ast",
+ "name": "lea fakaʻasitūlia"
+ },
+ "asa": {
+ "code": "asa",
+ "name": "lea fakaʻasu"
+ },
+ "ebu": {
+ "code": "ebu",
+ "name": "lea fakaʻemipū"
+ },
+ "eo": {
+ "code": "eo",
+ "name": "lea fakaʻesipulanito"
+ },
+ "et": {
+ "code": "et",
+ "name": "lea fakaÊ»esitÅnia"
+ },
+ "ee": {
+ "code": "ee",
+ "name": "lea fakaʻeue"
+ },
+ "ewo": {
+ "code": "ewo",
+ "name": "lea fakaÊ»euÅnito"
+ },
+ "yav": {
+ "code": "yav",
+ "name": "lea fakaʻiangipeni"
+ },
+ "or": {
+ "code": "or",
+ "name": "lea fakaÊ»initia-Ê»olÄea"
+ },
+ "ml": {
+ "code": "ml",
+ "name": "lea fakaÊ»initia-malÄialami"
+ },
+ "te": {
+ "code": "te",
+ "name": "lea fakaʻinitia-teluku"
+ },
+ "id": {
+ "code": "id",
+ "name": "lea fakaÊ»initÅnesia"
+ },
+ "yo": {
+ "code": "yo",
+ "name": "lea fakaÊ»iÅlupa"
+ },
+ "it": {
+ "code": "it",
+ "name": "lea fakaʻītali"
+ },
+ "wae": {
+ "code": "wae",
+ "name": "lea fakaʻualiseli"
+ },
+ "ug": {
+ "code": "ug",
+ "name": "lea fakaʻuikūli"
+ },
+ "uk": {
+ "code": "uk",
+ "name": "lea fakaʻūkalaʻine"
+ },
+ "uz": {
+ "code": "uz",
+ "name": "lea fakaʻusipeki"
+ },
+ "ur": {
+ "code": "ur",
+ "name": "lea fakaʻūtū"
+ },
+ "dyo": {
+ "code": "dyo",
+ "name": "lea fakaiola-fonī"
+ },
+ "gd": {
+ "code": "gd",
+ "name": "lea fakakaeliki"
+ },
+ "kl": {
+ "code": "kl",
+ "name": "lea fakakalaʻalisuti"
+ },
+ "kln": {
+ "code": "kln",
+ "name": "lea fakakalenisini"
+ },
+ "el": {
+ "code": "el",
+ "name": "lea fakakalisi"
+ },
+ "gl": {
+ "code": "gl",
+ "name": "lea fakakalisia"
+ },
+ "kam": {
+ "code": "kam",
+ "name": "lea fakakamipa"
+ },
+ "km": {
+ "code": "km",
+ "name": "lea fakakamipÅtia"
+ },
+ "kn": {
+ "code": "kn",
+ "name": "lea fakakanata"
+ },
+ "lg": {
+ "code": "lg",
+ "name": "lea fakakanita"
+ },
+ "kab": {
+ "code": "kab",
+ "name": "lea fakakapile"
+ },
+ "kea": {
+ "code": "kea",
+ "name": "lea fakakapuvelitianu"
+ },
+ "kk": {
+ "code": "kk",
+ "name": "lea fakakasaki"
+ },
+ "ks": {
+ "code": "ks",
+ "name": "lea fakakÄsimila"
+ },
+ "ca": {
+ "code": "ca",
+ "name": "lea fakakatalani"
+ },
+ "cgg": {
+ "code": "cgg",
+ "name": "lea fakakika"
+ },
+ "ki": {
+ "code": "ki",
+ "name": "lea fakakikuiu"
+ },
+ "ky": {
+ "code": "ky",
+ "name": "lea fakakīsisi"
+ },
+ "khq": {
+ "code": "khq",
+ "name": "lea fakakoila-sīni"
+ },
+ "ses": {
+ "code": "ses",
+ "name": "lea fakakoilapolo-seni"
+ },
+ "ko": {
+ "code": "ko",
+ "name": "lea fakakÅlea"
+ },
+ "ksh": {
+ "code": "ksh",
+ "name": "lea fakakolongia"
+ },
+ "nmg": {
+ "code": "nmg",
+ "name": "lea fakakuasio"
+ },
+ "hr": {
+ "code": "hr",
+ "name": "lea fakakuloisia"
+ },
+ "guz": {
+ "code": "guz",
+ "name": "lea fakakusī"
+ },
+ "gu": {
+ "code": "gu",
+ "name": "lea fakakutalati"
+ },
+ "rm": {
+ "code": "rm",
+ "name": "lea fakalaito-lomēnia"
+ },
+ "lb": {
+ "code": "lb",
+ "name": "lea fakalakisimipeki"
+ },
+ "lag": {
+ "code": "lag",
+ "name": "lea fakalangi"
+ },
+ "lv": {
+ "code": "lv",
+ "name": "lea fakalativia"
+ },
+ "lo": {
+ "code": "lo",
+ "name": "lea fakalau"
+ },
+ "lt": {
+ "code": "lt",
+ "name": "lea fakalituania"
+ },
+ "ro": {
+ "code": "ro",
+ "name": "lea fakalÅmenia"
+ },
+ "rof": {
+ "code": "rof",
+ "name": "lea fakalomipÅ"
+ },
+ "rwk": {
+ "code": "rwk",
+ "name": "lea fakaluÄ"
+ },
+ "rn": {
+ "code": "rn",
+ "name": "lea fakaluaniti"
+ },
+ "luy": {
+ "code": "luy",
+ "name": "lea fakaluīa"
+ },
+ "luo": {
+ "code": "luo",
+ "name": "lea fakaluo"
+ },
+ "lu": {
+ "code": "lu",
+ "name": "lea fakalupa-katanga"
+ },
+ "ru": {
+ "code": "ru",
+ "name": "lea fakalūsia"
+ },
+ "kde": {
+ "code": "kde",
+ "name": "lea fakamakÅnite"
+ },
+ "mgh": {
+ "code": "mgh",
+ "name": "lea fakamakūa-meʻeto"
+ },
+ "mg": {
+ "code": "mg",
+ "name": "lea fakamalakasi"
+ },
+ "mr": {
+ "code": "mr",
+ "name": "lea fakamalati"
+ },
+ "ms": {
+ "code": "ms",
+ "name": "lea fakamalei"
+ },
+ "mas": {
+ "code": "mas",
+ "name": "lea fakamasai"
+ },
+ "jmc": {
+ "code": "jmc",
+ "name": "lea fakamasame"
+ },
+ "mk": {
+ "code": "mk",
+ "name": "lea fakamasitÅnia"
+ },
+ "mer": {
+ "code": "mer",
+ "name": "lea fakamelu"
+ },
+ "mfe": {
+ "code": "mfe",
+ "name": "lea fakamolisieni"
+ },
+ "ro-MD": {
+ "code": "ro-MD",
+ "name": "lea fakamolitÄvia"
+ },
+ "mt": {
+ "code": "mt",
+ "name": "lea fakamolota"
+ },
+ "mn": {
+ "code": "mn",
+ "name": "lea fakamongokÅlia"
+ },
+ "mua": {
+ "code": "mua",
+ "name": "lea fakamunitangi"
+ },
+ "naq": {
+ "code": "naq",
+ "name": "lea fakanama"
+ },
+ "ne": {
+ "code": "ne",
+ "name": "lea fakanepali"
+ },
+ "nd": {
+ "code": "nd",
+ "name": "lea fakanetepele-tokelau"
+ },
+ "nyn": {
+ "code": "nyn",
+ "name": "lea fakanianikole"
+ },
+ "jgo": {
+ "code": "jgo",
+ "name": "lea fakanikÅmipa"
+ },
+ "nn": {
+ "code": "nn",
+ "name": "lea fakanoauē-ninosiki"
+ },
+ "nb": {
+ "code": "nb",
+ "name": "lea fakanouaē-pokimali"
+ },
+ "nus": {
+ "code": "nus",
+ "name": "lea fakanueli"
+ },
+ "ksf": {
+ "code": "ksf",
+ "name": "lea fakapafia"
+ },
+ "en": {
+ "code": "en",
+ "name": "lea fakapÄlangi"
+ },
+ "en-US": {
+ "code": "en-US",
+ "name": "lea fakapÄlangi-Ê»amelika"
+ },
+ "en-AU": {
+ "code": "en-AU",
+ "name": "lea fakapÄlangi-Ê»aositelÄ“lia"
+ },
+ "en-CA": {
+ "code": "en-CA",
+ "name": "lea fakapÄlangi-kÄnata"
+ },
+ "bm": {
+ "code": "bm",
+ "name": "lea fakapamipala"
+ },
+ "bas": {
+ "code": "bas",
+ "name": "lea fakapasaʻa"
+ },
+ "eu": {
+ "code": "eu",
+ "name": "lea fakapÄsiki"
+ },
+ "ps": {
+ "code": "ps",
+ "name": "lea fakapasitÅ"
+ },
+ "be": {
+ "code": "be",
+ "name": "lea fakapelalusi"
+ },
+ "br": {
+ "code": "br",
+ "name": "lea fakapeletoni"
+ },
+ "my": {
+ "code": "my",
+ "name": "lea fakapema"
+ },
+ "bez": {
+ "code": "bez",
+ "name": "lea fakapena"
+ },
+ "bn": {
+ "code": "bn",
+ "name": "lea fakapengikali"
+ },
+ "fa": {
+ "code": "fa",
+ "name": "lea fakapēsia"
+ },
+ "en-GB": {
+ "code": "en-GB",
+ "name": "lea fakapilitÄnia"
+ },
+ "pl": {
+ "code": "pl",
+ "name": "lea fakapÅlani"
+ },
+ "bs": {
+ "code": "bs",
+ "name": "lea fakaposinia"
+ },
+ "brx": {
+ "code": "brx",
+ "name": "lea fakapÅto"
+ },
+ "pt": {
+ "code": "pt",
+ "name": "lea fakapotukali"
+ },
+ "pt-PT": {
+ "code": "pt-PT",
+ "name": "lea fakapotukali-ʻiulope"
+ },
+ "pt-BR": {
+ "code": "pt-BR",
+ "name": "lea fakapotukali-palÄsili"
+ },
+ "bg": {
+ "code": "bg",
+ "name": "lea fakapulukalia"
+ },
+ "pa": {
+ "code": "pa",
+ "name": "lea fakapūnusapi"
+ },
+ "dz": {
+ "code": "dz",
+ "name": "lea fakaputeni"
+ },
+ "se": {
+ "code": "se",
+ "name": "lea fakasami-tokelau"
+ },
+ "saq": {
+ "code": "saq",
+ "name": "lea fakasamipulu"
+ },
+ "sg": {
+ "code": "sg",
+ "name": "lea fakasangikÅ"
+ },
+ "sbp": {
+ "code": "sbp",
+ "name": "lea fakasangu"
+ },
+ "cs": {
+ "code": "cs",
+ "name": "lea fakaseki"
+ },
+ "chr": {
+ "code": "chr",
+ "name": "lea fakaselokī"
+ },
+ "seh": {
+ "code": "seh",
+ "name": "lea fakasena"
+ },
+ "ka": {
+ "code": "ka",
+ "name": "lea fakaseÅsia"
+ },
+ "sr": {
+ "code": "sr",
+ "name": "lea fakasēpia"
+ },
+ "zh": {
+ "code": "zh",
+ "name": "lea fakasiaina"
+ },
+ "zh-Hans": {
+ "code": "zh-Hans",
+ "name": "lea fakasiaina-fakafaingofua"
+ },
+ "zh-Hant": {
+ "code": "zh-Hant",
+ "name": "lea fakasiaina-tukufakaholo"
+ },
+ "de": {
+ "code": "de",
+ "name": "lea fakasiamane"
+ },
+ "de-CH": {
+ "code": "de-CH",
+ "name": "lea fakasiamane-hake-suisilani"
+ },
+ "de-AT": {
+ "code": "de-AT",
+ "name": "lea fakasiamane-ʻaositulia"
+ },
+ "gsw": {
+ "code": "gsw",
+ "name": "lea fakasiamane-suisilani"
+ },
+ "ksb": {
+ "code": "ksb",
+ "name": "lea fakasiamipala"
+ },
+ "ja": {
+ "code": "ja",
+ "name": "lea fakasiapani"
+ },
+ "si": {
+ "code": "si",
+ "name": "lea fakasingihala"
+ },
+ "sn": {
+ "code": "sn",
+ "name": "lea fakasiona"
+ },
+ "es": {
+ "code": "es",
+ "name": "lea fakasipēnisi"
+ },
+ "es-ES": {
+ "code": "es-ES",
+ "name": "lea fakasipēnisi-‘iulope"
+ },
+ "es-MX": {
+ "code": "es-MX",
+ "name": "lea fakasipēnisi-mekisikou"
+ },
+ "xog": {
+ "code": "xog",
+ "name": "lea fakasoka"
+ },
+ "sk": {
+ "code": "sk",
+ "name": "lea fakasolÄvaki"
+ },
+ "sl": {
+ "code": "sl",
+ "name": "lea fakasolovenia"
+ },
+ "so": {
+ "code": "so",
+ "name": "lea fakasomali"
+ },
+ "hsb": {
+ "code": "hsb",
+ "name": "lea fakasÅpia-hake"
+ },
+ "dsb": {
+ "code": "dsb",
+ "name": "lea fakasÅpia-hifo"
+ },
+ "sw": {
+ "code": "sw",
+ "name": "lea fakasuahili"
+ },
+ "swc": {
+ "code": "swc",
+ "name": "lea fakasuahili-kongikÅ"
+ },
+ "sv": {
+ "code": "sv",
+ "name": "lea fakasuēteni"
+ },
+ "zu": {
+ "code": "zu",
+ "name": "lea fakasulu"
+ },
+ "th": {
+ "code": "th",
+ "name": "lea fakatailani"
+ },
+ "dav": {
+ "code": "dav",
+ "name": "lea fakataita"
+ },
+ "tzm": {
+ "code": "tzm",
+ "name": "lea fakatamasaiti-ʻatilasi-loloto"
+ },
+ "zgh": {
+ "code": "zgh",
+ "name": "lea fakatamasaiti-moloko"
+ },
+ "ta": {
+ "code": "ta",
+ "name": "lea fakatamili"
+ },
+ "twq": {
+ "code": "twq",
+ "name": "lea fakatasauaki"
+ },
+ "shi": {
+ "code": "shi",
+ "name": "lea fakataselihiti"
+ },
+ "da": {
+ "code": "da",
+ "name": "lea fakatenimaʻake"
+ },
+ "teo": {
+ "code": "teo",
+ "name": "lea fakateso"
+ },
+ "ti": {
+ "code": "ti",
+ "name": "lea fakatikilinia"
+ },
+ "bo": {
+ "code": "bo",
+ "name": "lea fakatipeti"
+ },
+ "dje": {
+ "code": "dje",
+ "name": "lea fakatisÄma"
+ },
+ "tr": {
+ "code": "tr",
+ "name": "lea fakatoake"
+ },
+ "to": {
+ "code": "to",
+ "name": "lea fakatonga"
+ },
+ "cy": {
+ "code": "cy",
+ "name": "lea fakauēlesi"
+ },
+ "vai": {
+ "code": "vai",
+ "name": "lea fakavai"
+ },
+ "vi": {
+ "code": "vi",
+ "name": "lea fakavietinami"
+ },
+ "vun": {
+ "code": "vun",
+ "name": "lea fakavūniso"
+ },
+ "ln": {
+ "code": "ln",
+ "name": "lea lingikala"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/language/tr.json b/library/intl/resources/language/tr.json
new file mode 100644
index 000000000..525091b88
--- /dev/null
+++ b/library/intl/resources/language/tr.json
@@ -0,0 +1,738 @@
+{
+ "af": {
+ "code": "af",
+ "name": "Afrikaanca"
+ },
+ "agq": {
+ "code": "agq",
+ "name": "Aghem"
+ },
+ "ak": {
+ "code": "ak",
+ "name": "Akan"
+ },
+ "de": {
+ "code": "de",
+ "name": "Almanca"
+ },
+ "en-US": {
+ "code": "en-US",
+ "name": "Amerikan Ä°ngilizcesi"
+ },
+ "am": {
+ "code": "am",
+ "name": "Amharca"
+ },
+ "ar": {
+ "code": "ar",
+ "name": "Arapça"
+ },
+ "sq": {
+ "code": "sq",
+ "name": "Arnavutça"
+ },
+ "ast": {
+ "code": "ast",
+ "name": "Asturyasca"
+ },
+ "asa": {
+ "code": "asa",
+ "name": "Asu"
+ },
+ "dsb": {
+ "code": "dsb",
+ "name": "Aşağı Sorbça"
+ },
+ "es-ES": {
+ "code": "es-ES",
+ "name": "Avrupa İspanyolcası"
+ },
+ "pt-PT": {
+ "code": "pt-PT",
+ "name": "Avrupa Portekizcesi"
+ },
+ "en-AU": {
+ "code": "en-AU",
+ "name": "Avustralya Ä°ngilizcesi"
+ },
+ "de-AT": {
+ "code": "de-AT",
+ "name": "Avusturya Almancası"
+ },
+ "az": {
+ "code": "az",
+ "name": "Azerice"
+ },
+ "ksf": {
+ "code": "ksf",
+ "name": "Bafia"
+ },
+ "bm": {
+ "code": "bm",
+ "name": "Bambara"
+ },
+ "bas": {
+ "code": "bas",
+ "name": "Basa Dili"
+ },
+ "zh-Hans": {
+ "code": "zh-Hans",
+ "name": "Basitleştirilmiş Çince"
+ },
+ "eu": {
+ "code": "eu",
+ "name": "Baskça"
+ },
+ "fy": {
+ "code": "fy",
+ "name": "Batı Frizcesi"
+ },
+ "bez": {
+ "code": "bez",
+ "name": "Bena"
+ },
+ "bn": {
+ "code": "bn",
+ "name": "Bengalce"
+ },
+ "be": {
+ "code": "be",
+ "name": "Beyaz Rusça"
+ },
+ "brx": {
+ "code": "brx",
+ "name": "Bodo"
+ },
+ "bs": {
+ "code": "bs",
+ "name": "Boşnakça"
+ },
+ "br": {
+ "code": "br",
+ "name": "Bretonca"
+ },
+ "pt-BR": {
+ "code": "pt-BR",
+ "name": "Brezilya Portekizcesi"
+ },
+ "bg": {
+ "code": "bg",
+ "name": "Bulgarca"
+ },
+ "my": {
+ "code": "my",
+ "name": "Burmaca"
+ },
+ "dz": {
+ "code": "dz",
+ "name": "Butan Dili"
+ },
+ "cs": {
+ "code": "cs",
+ "name": "Çekçe"
+ },
+ "chr": {
+ "code": "chr",
+ "name": "Çerokice"
+ },
+ "zh": {
+ "code": "zh",
+ "name": "Çince"
+ },
+ "da": {
+ "code": "da",
+ "name": "Danca"
+ },
+ "ebu": {
+ "code": "ebu",
+ "name": "Embu"
+ },
+ "id": {
+ "code": "id",
+ "name": "Endonezce"
+ },
+ "hy": {
+ "code": "hy",
+ "name": "Ermenice"
+ },
+ "eo": {
+ "code": "eo",
+ "name": "Esperanto"
+ },
+ "et": {
+ "code": "et",
+ "name": "Estonca"
+ },
+ "ee": {
+ "code": "ee",
+ "name": "Ewe"
+ },
+ "ewo": {
+ "code": "ewo",
+ "name": "Ewondo"
+ },
+ "fo": {
+ "code": "fo",
+ "name": "Faroe Dili"
+ },
+ "fa": {
+ "code": "fa",
+ "name": "Farsça"
+ },
+ "fil": {
+ "code": "fil",
+ "name": "Filipince"
+ },
+ "fi": {
+ "code": "fi",
+ "name": "Fince"
+ },
+ "nl-BE": {
+ "code": "nl-BE",
+ "name": "Flamanca"
+ },
+ "fr": {
+ "code": "fr",
+ "name": "Fransızca"
+ },
+ "fur": {
+ "code": "fur",
+ "name": "Friulian"
+ },
+ "ff": {
+ "code": "ff",
+ "name": "Fulah"
+ },
+ "cy": {
+ "code": "cy",
+ "name": "Galce"
+ },
+ "gl": {
+ "code": "gl",
+ "name": "Galiçyaca"
+ },
+ "lg": {
+ "code": "lg",
+ "name": "Ganda"
+ },
+ "zh-Hant": {
+ "code": "zh-Hant",
+ "name": "Geleneksel Çince"
+ },
+ "kl": {
+ "code": "kl",
+ "name": "Grönland Dili"
+ },
+ "guz": {
+ "code": "guz",
+ "name": "Gusii"
+ },
+ "gu": {
+ "code": "gu",
+ "name": "Güceratça"
+ },
+ "ka": {
+ "code": "ka",
+ "name": "Gürcüce"
+ },
+ "ha": {
+ "code": "ha",
+ "name": "Hausa"
+ },
+ "hr": {
+ "code": "hr",
+ "name": "Hırvatça"
+ },
+ "hi": {
+ "code": "hi",
+ "name": "Hintçe"
+ },
+ "nl": {
+ "code": "nl",
+ "name": "Hollandaca"
+ },
+ "he": {
+ "code": "he",
+ "name": "Ä°branice"
+ },
+ "en-GB": {
+ "code": "en-GB",
+ "name": "Ä°ngiliz Ä°ngilizcesi"
+ },
+ "en": {
+ "code": "en",
+ "name": "Ä°ngilizce"
+ },
+ "ga": {
+ "code": "ga",
+ "name": "Ä°rlandaca"
+ },
+ "gd": {
+ "code": "gd",
+ "name": "İskoç Gal Dili"
+ },
+ "es": {
+ "code": "es",
+ "name": "Ä°spanyolca"
+ },
+ "sv": {
+ "code": "sv",
+ "name": "İsveççe"
+ },
+ "gsw": {
+ "code": "gsw",
+ "name": "İsviçre Almancası"
+ },
+ "fr-CH": {
+ "code": "fr-CH",
+ "name": "İsviçre Fransızcası"
+ },
+ "de-CH": {
+ "code": "de-CH",
+ "name": "İsviçre Yüksek Almancası"
+ },
+ "it": {
+ "code": "it",
+ "name": "Ä°talyanca"
+ },
+ "is": {
+ "code": "is",
+ "name": "Ä°zlandaca"
+ },
+ "ja": {
+ "code": "ja",
+ "name": "Japonca"
+ },
+ "dyo": {
+ "code": "dyo",
+ "name": "Jola-Fonyi"
+ },
+ "kab": {
+ "code": "kab",
+ "name": "Kabiliyece"
+ },
+ "kea": {
+ "code": "kea",
+ "name": "Kabuverdianu"
+ },
+ "kln": {
+ "code": "kln",
+ "name": "Kalenjin"
+ },
+ "kam": {
+ "code": "kam",
+ "name": "Kamba"
+ },
+ "fr-CA": {
+ "code": "fr-CA",
+ "name": "Kanada Fransızcası"
+ },
+ "en-CA": {
+ "code": "en-CA",
+ "name": "Kanada Ä°ngilizcesi"
+ },
+ "kn": {
+ "code": "kn",
+ "name": "Kannada"
+ },
+ "ca": {
+ "code": "ca",
+ "name": "Katalanca"
+ },
+ "kk": {
+ "code": "kk",
+ "name": "Kazakça"
+ },
+ "ks": {
+ "code": "ks",
+ "name": "KeÅŸmirce"
+ },
+ "ky": {
+ "code": "ky",
+ "name": "Kırgızca"
+ },
+ "cgg": {
+ "code": "cgg",
+ "name": "Kigaca"
+ },
+ "ki": {
+ "code": "ki",
+ "name": "Kikuyu"
+ },
+ "rn": {
+ "code": "rn",
+ "name": "Kirundi"
+ },
+ "km": {
+ "code": "km",
+ "name": "Kmerce"
+ },
+ "swc": {
+ "code": "swc",
+ "name": "Kongo Svahili"
+ },
+ "ko": {
+ "code": "ko",
+ "name": "Korece"
+ },
+ "khq": {
+ "code": "khq",
+ "name": "Koyra Chiini"
+ },
+ "ses": {
+ "code": "ses",
+ "name": "Koyraboro Senni"
+ },
+ "ksh": {
+ "code": "ksh",
+ "name": "Köln Diyalekti"
+ },
+ "nd": {
+ "code": "nd",
+ "name": "Kuzey Ndebele"
+ },
+ "se": {
+ "code": "se",
+ "name": "Kuzey Sami"
+ },
+ "nmg": {
+ "code": "nmg",
+ "name": "Kwasio"
+ },
+ "lag": {
+ "code": "lag",
+ "name": "Langi"
+ },
+ "lo": {
+ "code": "lo",
+ "name": "Laoca"
+ },
+ "pl": {
+ "code": "pl",
+ "name": "Lehçe"
+ },
+ "lv": {
+ "code": "lv",
+ "name": "Letonca"
+ },
+ "ln": {
+ "code": "ln",
+ "name": "Lingala"
+ },
+ "lt": {
+ "code": "lt",
+ "name": "Litvanyaca"
+ },
+ "lu": {
+ "code": "lu",
+ "name": "Luba-Katanga"
+ },
+ "luo": {
+ "code": "luo",
+ "name": "Luo"
+ },
+ "luy": {
+ "code": "luy",
+ "name": "Luyia"
+ },
+ "lb": {
+ "code": "lb",
+ "name": "Lüksemburgca"
+ },
+ "hu": {
+ "code": "hu",
+ "name": "Macarca"
+ },
+ "jmc": {
+ "code": "jmc",
+ "name": "Machame"
+ },
+ "mk": {
+ "code": "mk",
+ "name": "Makedonca"
+ },
+ "mgh": {
+ "code": "mgh",
+ "name": "Makhuwa-Meetto"
+ },
+ "kde": {
+ "code": "kde",
+ "name": "Makonde"
+ },
+ "ml": {
+ "code": "ml",
+ "name": "Malayalam"
+ },
+ "ms": {
+ "code": "ms",
+ "name": "Malayca"
+ },
+ "mg": {
+ "code": "mg",
+ "name": "Malgaşça"
+ },
+ "mt": {
+ "code": "mt",
+ "name": "Maltaca"
+ },
+ "mr": {
+ "code": "mr",
+ "name": "Marathi"
+ },
+ "mas": {
+ "code": "mas",
+ "name": "Masai"
+ },
+ "es-MX": {
+ "code": "es-MX",
+ "name": "Meksika İspanyolcası"
+ },
+ "mer": {
+ "code": "mer",
+ "name": "Meru"
+ },
+ "ar-001": {
+ "code": "ar-001",
+ "name": "Modern Standart Arapça"
+ },
+ "mn": {
+ "code": "mn",
+ "name": "MoÄŸolca"
+ },
+ "ro-MD": {
+ "code": "ro-MD",
+ "name": "Moldovaca"
+ },
+ "mfe": {
+ "code": "mfe",
+ "name": "Morisyen"
+ },
+ "mua": {
+ "code": "mua",
+ "name": "Mundang"
+ },
+ "naq": {
+ "code": "naq",
+ "name": "Nama"
+ },
+ "ne": {
+ "code": "ne",
+ "name": "Nepalce"
+ },
+ "jgo": {
+ "code": "jgo",
+ "name": "Ngomba"
+ },
+ "nb": {
+ "code": "nb",
+ "name": "Norveççe Bokmål"
+ },
+ "nn": {
+ "code": "nn",
+ "name": "Norveççe Nynorsk"
+ },
+ "nus": {
+ "code": "nus",
+ "name": "Nuer"
+ },
+ "nyn": {
+ "code": "nyn",
+ "name": "Nyankole"
+ },
+ "or": {
+ "code": "or",
+ "name": "Oriya Dili"
+ },
+ "tzm": {
+ "code": "tzm",
+ "name": "Orta Fas Tamazigti"
+ },
+ "uz": {
+ "code": "uz",
+ "name": "Özbekçe"
+ },
+ "pa": {
+ "code": "pa",
+ "name": "Pencapça"
+ },
+ "ps": {
+ "code": "ps",
+ "name": "PeÅŸtuca"
+ },
+ "pt": {
+ "code": "pt",
+ "name": "Portekizce"
+ },
+ "rm": {
+ "code": "rm",
+ "name": "Romanşça"
+ },
+ "rof": {
+ "code": "rof",
+ "name": "Rombo"
+ },
+ "ro": {
+ "code": "ro",
+ "name": "Romence"
+ },
+ "ru": {
+ "code": "ru",
+ "name": "Rusça"
+ },
+ "rwk": {
+ "code": "rwk",
+ "name": "Rwa"
+ },
+ "saq": {
+ "code": "saq",
+ "name": "Samburu"
+ },
+ "sg": {
+ "code": "sg",
+ "name": "Sango"
+ },
+ "sbp": {
+ "code": "sbp",
+ "name": "Sangu"
+ },
+ "seh": {
+ "code": "seh",
+ "name": "Sena"
+ },
+ "si": {
+ "code": "si",
+ "name": "Seylanca"
+ },
+ "ksb": {
+ "code": "ksb",
+ "name": "Shambala"
+ },
+ "sn": {
+ "code": "sn",
+ "name": "Shona"
+ },
+ "sr": {
+ "code": "sr",
+ "name": "Sırpça"
+ },
+ "sk": {
+ "code": "sk",
+ "name": "Slovakça"
+ },
+ "sl": {
+ "code": "sl",
+ "name": "Slovence"
+ },
+ "xog": {
+ "code": "xog",
+ "name": "Soga"
+ },
+ "so": {
+ "code": "so",
+ "name": "Somalice"
+ },
+ "zgh": {
+ "code": "zgh",
+ "name": "Standart Berberi Dili Tamazight"
+ },
+ "sw": {
+ "code": "sw",
+ "name": "Svahili"
+ },
+ "dav": {
+ "code": "dav",
+ "name": "Taita"
+ },
+ "ta": {
+ "code": "ta",
+ "name": "Tamilce"
+ },
+ "twq": {
+ "code": "twq",
+ "name": "Tasawaq"
+ },
+ "shi": {
+ "code": "shi",
+ "name": "TaÅŸelhit"
+ },
+ "th": {
+ "code": "th",
+ "name": "Tayca"
+ },
+ "te": {
+ "code": "te",
+ "name": "Telugu Dili"
+ },
+ "teo": {
+ "code": "teo",
+ "name": "Teso"
+ },
+ "bo": {
+ "code": "bo",
+ "name": "Tibetçe"
+ },
+ "ti": {
+ "code": "ti",
+ "name": "Tigrinya"
+ },
+ "to": {
+ "code": "to",
+ "name": "Tongaca"
+ },
+ "tr": {
+ "code": "tr",
+ "name": "Türkçe"
+ },
+ "uk": {
+ "code": "uk",
+ "name": "Ukraynaca"
+ },
+ "ur": {
+ "code": "ur",
+ "name": "Urduca"
+ },
+ "ug": {
+ "code": "ug",
+ "name": "Uygurca"
+ },
+ "vai": {
+ "code": "vai",
+ "name": "Vai"
+ },
+ "vi": {
+ "code": "vi",
+ "name": "Vietnamca"
+ },
+ "vun": {
+ "code": "vun",
+ "name": "Vunjo"
+ },
+ "wae": {
+ "code": "wae",
+ "name": "Walser"
+ },
+ "yav": {
+ "code": "yav",
+ "name": "Yangben"
+ },
+ "yo": {
+ "code": "yo",
+ "name": "Yorubaca"
+ },
+ "hsb": {
+ "code": "hsb",
+ "name": "Yukarı Sorbça"
+ },
+ "el": {
+ "code": "el",
+ "name": "Yunanca"
+ },
+ "dje": {
+ "code": "dje",
+ "name": "Zarma"
+ },
+ "zu": {
+ "code": "zu",
+ "name": "Zuluca"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/language/twq.json b/library/intl/resources/language/twq.json
new file mode 100644
index 000000000..ce102f744
--- /dev/null
+++ b/library/intl/resources/language/twq.json
@@ -0,0 +1,738 @@
+{
+ "af": {
+ "code": "af",
+ "name": "Afrikaans"
+ },
+ "agq": {
+ "code": "agq",
+ "name": "Aghem"
+ },
+ "ak": {
+ "code": "ak",
+ "name": "Akan senni"
+ },
+ "sq": {
+ "code": "sq",
+ "name": "Albanian"
+ },
+ "de": {
+ "code": "de",
+ "name": "Almaŋ senni"
+ },
+ "am": {
+ "code": "am",
+ "name": "Amhaarik senni"
+ },
+ "ar-001": {
+ "code": "ar-001",
+ "name": "ar_001"
+ },
+ "hy": {
+ "code": "hy",
+ "name": "Armenian"
+ },
+ "ast": {
+ "code": "ast",
+ "name": "Asturian"
+ },
+ "asa": {
+ "code": "asa",
+ "name": "Asu"
+ },
+ "az": {
+ "code": "az",
+ "name": "Azerbaijani"
+ },
+ "ksf": {
+ "code": "ksf",
+ "name": "Bafia"
+ },
+ "bm": {
+ "code": "bm",
+ "name": "Bambara"
+ },
+ "bas": {
+ "code": "bas",
+ "name": "Basaa"
+ },
+ "eu": {
+ "code": "eu",
+ "name": "Basque"
+ },
+ "be": {
+ "code": "be",
+ "name": "Belaruus senni"
+ },
+ "bez": {
+ "code": "bez",
+ "name": "Bena"
+ },
+ "bn": {
+ "code": "bn",
+ "name": "Bengali senni"
+ },
+ "brx": {
+ "code": "brx",
+ "name": "Bodo"
+ },
+ "bs": {
+ "code": "bs",
+ "name": "Bosnian"
+ },
+ "br": {
+ "code": "br",
+ "name": "Breton"
+ },
+ "bg": {
+ "code": "bg",
+ "name": "Bulagaari senni"
+ },
+ "my": {
+ "code": "my",
+ "name": "Burme senni"
+ },
+ "ca": {
+ "code": "ca",
+ "name": "Catalan"
+ },
+ "cs": {
+ "code": "cs",
+ "name": "Cek senni"
+ },
+ "tzm": {
+ "code": "tzm",
+ "name": "Central Atlas Tamazight"
+ },
+ "chr": {
+ "code": "chr",
+ "name": "Cherokee"
+ },
+ "cgg": {
+ "code": "cgg",
+ "name": "Chiga"
+ },
+ "ksh": {
+ "code": "ksh",
+ "name": "Colognian"
+ },
+ "swc": {
+ "code": "swc",
+ "name": "Congo Swahili"
+ },
+ "hr": {
+ "code": "hr",
+ "name": "Croatian"
+ },
+ "da": {
+ "code": "da",
+ "name": "Danish"
+ },
+ "de-AT": {
+ "code": "de-AT",
+ "name": "de_AT"
+ },
+ "de-CH": {
+ "code": "de-CH",
+ "name": "de_CH"
+ },
+ "dz": {
+ "code": "dz",
+ "name": "Dzongkha"
+ },
+ "ebu": {
+ "code": "ebu",
+ "name": "Embu"
+ },
+ "en-AU": {
+ "code": "en-AU",
+ "name": "en_AU"
+ },
+ "en-CA": {
+ "code": "en-CA",
+ "name": "en_CA"
+ },
+ "en-GB": {
+ "code": "en-GB",
+ "name": "en_GB"
+ },
+ "en-US": {
+ "code": "en-US",
+ "name": "en_US"
+ },
+ "es-ES": {
+ "code": "es-ES",
+ "name": "es_ES"
+ },
+ "es-MX": {
+ "code": "es-MX",
+ "name": "es_MX"
+ },
+ "es": {
+ "code": "es",
+ "name": "Espaaɲe senni"
+ },
+ "eo": {
+ "code": "eo",
+ "name": "Esperanto"
+ },
+ "et": {
+ "code": "et",
+ "name": "Estonian"
+ },
+ "ee": {
+ "code": "ee",
+ "name": "Ewe"
+ },
+ "ewo": {
+ "code": "ewo",
+ "name": "Ewondo"
+ },
+ "fo": {
+ "code": "fo",
+ "name": "Faroese"
+ },
+ "fa": {
+ "code": "fa",
+ "name": "Farsi senni"
+ },
+ "fil": {
+ "code": "fil",
+ "name": "Filipino"
+ },
+ "fi": {
+ "code": "fi",
+ "name": "Finnish"
+ },
+ "fr-CA": {
+ "code": "fr-CA",
+ "name": "fr_CA"
+ },
+ "fr-CH": {
+ "code": "fr-CH",
+ "name": "fr_CH"
+ },
+ "fr": {
+ "code": "fr",
+ "name": "Fransee senni"
+ },
+ "fur": {
+ "code": "fur",
+ "name": "Friulian"
+ },
+ "ff": {
+ "code": "ff",
+ "name": "Fulah"
+ },
+ "gl": {
+ "code": "gl",
+ "name": "Galician"
+ },
+ "lg": {
+ "code": "lg",
+ "name": "Ganda"
+ },
+ "ka": {
+ "code": "ka",
+ "name": "Georgian"
+ },
+ "el": {
+ "code": "el",
+ "name": "Grek senni"
+ },
+ "gu": {
+ "code": "gu",
+ "name": "Gujarati"
+ },
+ "guz": {
+ "code": "guz",
+ "name": "Gusii"
+ },
+ "ha": {
+ "code": "ha",
+ "name": "Hawsance senni"
+ },
+ "he": {
+ "code": "he",
+ "name": "Hebrew"
+ },
+ "nl": {
+ "code": "nl",
+ "name": "Holandee senni"
+ },
+ "hu": {
+ "code": "hu",
+ "name": "Hungaari senni"
+ },
+ "is": {
+ "code": "is",
+ "name": "Icelandic"
+ },
+ "id": {
+ "code": "id",
+ "name": "Indoneesi senni"
+ },
+ "hi": {
+ "code": "hi",
+ "name": "Induu senni"
+ },
+ "en": {
+ "code": "en",
+ "name": "Inglisi senni"
+ },
+ "ga": {
+ "code": "ga",
+ "name": "Irish"
+ },
+ "it": {
+ "code": "it",
+ "name": "Itaali senni"
+ },
+ "ja": {
+ "code": "ja",
+ "name": "Japonee senni"
+ },
+ "dyo": {
+ "code": "dyo",
+ "name": "Jola-Fonyi"
+ },
+ "kea": {
+ "code": "kea",
+ "name": "Kabuverdianu"
+ },
+ "kab": {
+ "code": "kab",
+ "name": "Kabyle"
+ },
+ "kl": {
+ "code": "kl",
+ "name": "Kalaallisut"
+ },
+ "kln": {
+ "code": "kln",
+ "name": "Kalenjin"
+ },
+ "kam": {
+ "code": "kam",
+ "name": "Kamba"
+ },
+ "kn": {
+ "code": "kn",
+ "name": "Kannada"
+ },
+ "ks": {
+ "code": "ks",
+ "name": "Kashmiri"
+ },
+ "kk": {
+ "code": "kk",
+ "name": "Kazakh"
+ },
+ "ki": {
+ "code": "ki",
+ "name": "Kikuyu"
+ },
+ "km": {
+ "code": "km",
+ "name": "Kmeer senni, Game here"
+ },
+ "ko": {
+ "code": "ko",
+ "name": "Koree senni"
+ },
+ "khq": {
+ "code": "khq",
+ "name": "Koyra Chiini"
+ },
+ "ses": {
+ "code": "ses",
+ "name": "Koyraboro Senni"
+ },
+ "nmg": {
+ "code": "nmg",
+ "name": "Kwasio"
+ },
+ "ky": {
+ "code": "ky",
+ "name": "Kyrgyz"
+ },
+ "ar": {
+ "code": "ar",
+ "name": "Laaraw senni"
+ },
+ "lag": {
+ "code": "lag",
+ "name": "Langi"
+ },
+ "lo": {
+ "code": "lo",
+ "name": "Lao"
+ },
+ "lv": {
+ "code": "lv",
+ "name": "Latvian"
+ },
+ "ln": {
+ "code": "ln",
+ "name": "Lingala"
+ },
+ "lt": {
+ "code": "lt",
+ "name": "Lithuanian"
+ },
+ "dsb": {
+ "code": "dsb",
+ "name": "Lower Sorbian"
+ },
+ "lu": {
+ "code": "lu",
+ "name": "Luba-Katanga"
+ },
+ "luo": {
+ "code": "luo",
+ "name": "Luo"
+ },
+ "lb": {
+ "code": "lb",
+ "name": "Luxembourgish"
+ },
+ "luy": {
+ "code": "luy",
+ "name": "Luyia"
+ },
+ "mk": {
+ "code": "mk",
+ "name": "Macedonian"
+ },
+ "jmc": {
+ "code": "jmc",
+ "name": "Machame"
+ },
+ "mgh": {
+ "code": "mgh",
+ "name": "Makhuwa-Meetto"
+ },
+ "kde": {
+ "code": "kde",
+ "name": "Makonde"
+ },
+ "mg": {
+ "code": "mg",
+ "name": "Malagasy"
+ },
+ "ml": {
+ "code": "ml",
+ "name": "Malayalam"
+ },
+ "ms": {
+ "code": "ms",
+ "name": "Maleezi senni"
+ },
+ "mt": {
+ "code": "mt",
+ "name": "Maltese"
+ },
+ "mr": {
+ "code": "mr",
+ "name": "Marathi"
+ },
+ "mas": {
+ "code": "mas",
+ "name": "Masai"
+ },
+ "mer": {
+ "code": "mer",
+ "name": "Meru"
+ },
+ "mn": {
+ "code": "mn",
+ "name": "Mongolian"
+ },
+ "mfe": {
+ "code": "mfe",
+ "name": "Morisyen"
+ },
+ "mua": {
+ "code": "mua",
+ "name": "Mundang"
+ },
+ "naq": {
+ "code": "naq",
+ "name": "Nama"
+ },
+ "ne": {
+ "code": "ne",
+ "name": "Neepal senni"
+ },
+ "jgo": {
+ "code": "jgo",
+ "name": "Ngomba"
+ },
+ "nl-BE": {
+ "code": "nl-BE",
+ "name": "nl_BE"
+ },
+ "nd": {
+ "code": "nd",
+ "name": "North Ndebele"
+ },
+ "se": {
+ "code": "se",
+ "name": "Northern Sami"
+ },
+ "nb": {
+ "code": "nb",
+ "name": "Norwegian Bokmål"
+ },
+ "nn": {
+ "code": "nn",
+ "name": "Norwegian Nynorsk"
+ },
+ "nus": {
+ "code": "nus",
+ "name": "Nuer"
+ },
+ "nyn": {
+ "code": "nyn",
+ "name": "Nyankole"
+ },
+ "or": {
+ "code": "or",
+ "name": "Oriya"
+ },
+ "ps": {
+ "code": "ps",
+ "name": "Pashto"
+ },
+ "pl": {
+ "code": "pl",
+ "name": "Polonee senni"
+ },
+ "pt": {
+ "code": "pt",
+ "name": "Portugee senni"
+ },
+ "pt-BR": {
+ "code": "pt-BR",
+ "name": "pt_BR"
+ },
+ "pt-PT": {
+ "code": "pt-PT",
+ "name": "pt_PT"
+ },
+ "pa": {
+ "code": "pa",
+ "name": "Punjaabi sennii"
+ },
+ "ro-MD": {
+ "code": "ro-MD",
+ "name": "ro_MD"
+ },
+ "rm": {
+ "code": "rm",
+ "name": "Romansh"
+ },
+ "rof": {
+ "code": "rof",
+ "name": "Rombo"
+ },
+ "ro": {
+ "code": "ro",
+ "name": "Rumaani senni"
+ },
+ "rn": {
+ "code": "rn",
+ "name": "Rundi"
+ },
+ "ru": {
+ "code": "ru",
+ "name": "Ruusi senni"
+ },
+ "rwk": {
+ "code": "rwk",
+ "name": "Rwa"
+ },
+ "saq": {
+ "code": "saq",
+ "name": "Samburu"
+ },
+ "sg": {
+ "code": "sg",
+ "name": "Sango"
+ },
+ "sbp": {
+ "code": "sbp",
+ "name": "Sangu"
+ },
+ "gd": {
+ "code": "gd",
+ "name": "Scottish Gaelic"
+ },
+ "seh": {
+ "code": "seh",
+ "name": "Sena"
+ },
+ "sr": {
+ "code": "sr",
+ "name": "Serbian"
+ },
+ "ksb": {
+ "code": "ksb",
+ "name": "Shambala"
+ },
+ "sn": {
+ "code": "sn",
+ "name": "Shona"
+ },
+ "si": {
+ "code": "si",
+ "name": "Sinhala"
+ },
+ "zh": {
+ "code": "zh",
+ "name": "Sinuwa senni, Mandareŋ"
+ },
+ "sk": {
+ "code": "sk",
+ "name": "Slovak"
+ },
+ "sl": {
+ "code": "sl",
+ "name": "Slovenian"
+ },
+ "xog": {
+ "code": "xog",
+ "name": "Soga"
+ },
+ "so": {
+ "code": "so",
+ "name": "Somaali senni"
+ },
+ "zgh": {
+ "code": "zgh",
+ "name": "Standard Moroccan Tamazight"
+ },
+ "sv": {
+ "code": "sv",
+ "name": "Suweede senni"
+ },
+ "sw": {
+ "code": "sw",
+ "name": "Swahili"
+ },
+ "gsw": {
+ "code": "gsw",
+ "name": "Swiss German"
+ },
+ "th": {
+ "code": "th",
+ "name": "Taailandu senni"
+ },
+ "shi": {
+ "code": "shi",
+ "name": "Tachelhit"
+ },
+ "dav": {
+ "code": "dav",
+ "name": "Taita"
+ },
+ "ta": {
+ "code": "ta",
+ "name": "Tamil senni"
+ },
+ "twq": {
+ "code": "twq",
+ "name": "Tasawaq senni"
+ },
+ "te": {
+ "code": "te",
+ "name": "Telugu"
+ },
+ "teo": {
+ "code": "teo",
+ "name": "Teso"
+ },
+ "bo": {
+ "code": "bo",
+ "name": "Tibetan"
+ },
+ "ti": {
+ "code": "ti",
+ "name": "Tigrinya"
+ },
+ "to": {
+ "code": "to",
+ "name": "Tongan"
+ },
+ "tr": {
+ "code": "tr",
+ "name": "Turku senni"
+ },
+ "uk": {
+ "code": "uk",
+ "name": "Ukreen senni"
+ },
+ "hsb": {
+ "code": "hsb",
+ "name": "Upper Sorbian"
+ },
+ "ur": {
+ "code": "ur",
+ "name": "Urdu senni"
+ },
+ "ug": {
+ "code": "ug",
+ "name": "Uyghur"
+ },
+ "uz": {
+ "code": "uz",
+ "name": "Uzbek"
+ },
+ "vai": {
+ "code": "vai",
+ "name": "Vai"
+ },
+ "vi": {
+ "code": "vi",
+ "name": "Vietnaam senni"
+ },
+ "vun": {
+ "code": "vun",
+ "name": "Vunjo"
+ },
+ "wae": {
+ "code": "wae",
+ "name": "Walser"
+ },
+ "cy": {
+ "code": "cy",
+ "name": "Welsh"
+ },
+ "fy": {
+ "code": "fy",
+ "name": "Western Frisian"
+ },
+ "yav": {
+ "code": "yav",
+ "name": "Yangben"
+ },
+ "yo": {
+ "code": "yo",
+ "name": "Yorbance senni"
+ },
+ "dje": {
+ "code": "dje",
+ "name": "Zarma"
+ },
+ "zh-Hans": {
+ "code": "zh-Hans",
+ "name": "zh_Hans"
+ },
+ "zh-Hant": {
+ "code": "zh-Hant",
+ "name": "zh_Hant"
+ },
+ "zu": {
+ "code": "zu",
+ "name": "Zulu senni"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/language/tzm.json b/library/intl/resources/language/tzm.json
new file mode 100644
index 000000000..edb862bb6
--- /dev/null
+++ b/library/intl/resources/language/tzm.json
@@ -0,0 +1,738 @@
+{
+ "af": {
+ "code": "af",
+ "name": "Afrikaans"
+ },
+ "agq": {
+ "code": "agq",
+ "name": "Aghem"
+ },
+ "sq": {
+ "code": "sq",
+ "name": "Albanian"
+ },
+ "ar-001": {
+ "code": "ar-001",
+ "name": "ar_001"
+ },
+ "hy": {
+ "code": "hy",
+ "name": "Armenian"
+ },
+ "ast": {
+ "code": "ast",
+ "name": "Asturian"
+ },
+ "asa": {
+ "code": "asa",
+ "name": "Asu"
+ },
+ "az": {
+ "code": "az",
+ "name": "Azerbaijani"
+ },
+ "ksf": {
+ "code": "ksf",
+ "name": "Bafia"
+ },
+ "bm": {
+ "code": "bm",
+ "name": "Bambara"
+ },
+ "bas": {
+ "code": "bas",
+ "name": "Basaa"
+ },
+ "eu": {
+ "code": "eu",
+ "name": "Basque"
+ },
+ "bez": {
+ "code": "bez",
+ "name": "Bena"
+ },
+ "brx": {
+ "code": "brx",
+ "name": "Bodo"
+ },
+ "bs": {
+ "code": "bs",
+ "name": "Bosnian"
+ },
+ "br": {
+ "code": "br",
+ "name": "Breton"
+ },
+ "ca": {
+ "code": "ca",
+ "name": "Catalan"
+ },
+ "chr": {
+ "code": "chr",
+ "name": "Cherokee"
+ },
+ "cgg": {
+ "code": "cgg",
+ "name": "Chiga"
+ },
+ "ksh": {
+ "code": "ksh",
+ "name": "Colognian"
+ },
+ "swc": {
+ "code": "swc",
+ "name": "Congo Swahili"
+ },
+ "hr": {
+ "code": "hr",
+ "name": "Croatian"
+ },
+ "da": {
+ "code": "da",
+ "name": "Danish"
+ },
+ "de-AT": {
+ "code": "de-AT",
+ "name": "de_AT"
+ },
+ "de-CH": {
+ "code": "de-CH",
+ "name": "de_CH"
+ },
+ "dz": {
+ "code": "dz",
+ "name": "Dzongkha"
+ },
+ "ebu": {
+ "code": "ebu",
+ "name": "Embu"
+ },
+ "en-AU": {
+ "code": "en-AU",
+ "name": "en_AU"
+ },
+ "en-CA": {
+ "code": "en-CA",
+ "name": "en_CA"
+ },
+ "en-GB": {
+ "code": "en-GB",
+ "name": "en_GB"
+ },
+ "en-US": {
+ "code": "en-US",
+ "name": "en_US"
+ },
+ "es-ES": {
+ "code": "es-ES",
+ "name": "es_ES"
+ },
+ "es-MX": {
+ "code": "es-MX",
+ "name": "es_MX"
+ },
+ "eo": {
+ "code": "eo",
+ "name": "Esperanto"
+ },
+ "et": {
+ "code": "et",
+ "name": "Estonian"
+ },
+ "ee": {
+ "code": "ee",
+ "name": "Ewe"
+ },
+ "ewo": {
+ "code": "ewo",
+ "name": "Ewondo"
+ },
+ "fo": {
+ "code": "fo",
+ "name": "Faroese"
+ },
+ "fil": {
+ "code": "fil",
+ "name": "Filipino"
+ },
+ "fi": {
+ "code": "fi",
+ "name": "Finnish"
+ },
+ "fr-CA": {
+ "code": "fr-CA",
+ "name": "fr_CA"
+ },
+ "fr-CH": {
+ "code": "fr-CH",
+ "name": "fr_CH"
+ },
+ "fur": {
+ "code": "fur",
+ "name": "Friulian"
+ },
+ "ff": {
+ "code": "ff",
+ "name": "Fulah"
+ },
+ "gl": {
+ "code": "gl",
+ "name": "Galician"
+ },
+ "lg": {
+ "code": "lg",
+ "name": "Ganda"
+ },
+ "ka": {
+ "code": "ka",
+ "name": "Georgian"
+ },
+ "gu": {
+ "code": "gu",
+ "name": "Gujarati"
+ },
+ "guz": {
+ "code": "guz",
+ "name": "Gusii"
+ },
+ "he": {
+ "code": "he",
+ "name": "Hebrew"
+ },
+ "is": {
+ "code": "is",
+ "name": "Icelandic"
+ },
+ "ga": {
+ "code": "ga",
+ "name": "Irish"
+ },
+ "dyo": {
+ "code": "dyo",
+ "name": "Jola-Fonyi"
+ },
+ "kea": {
+ "code": "kea",
+ "name": "Kabuverdianu"
+ },
+ "kab": {
+ "code": "kab",
+ "name": "Kabyle"
+ },
+ "kl": {
+ "code": "kl",
+ "name": "Kalaallisut"
+ },
+ "kln": {
+ "code": "kln",
+ "name": "Kalenjin"
+ },
+ "kam": {
+ "code": "kam",
+ "name": "Kamba"
+ },
+ "kn": {
+ "code": "kn",
+ "name": "Kannada"
+ },
+ "ks": {
+ "code": "ks",
+ "name": "Kashmiri"
+ },
+ "kk": {
+ "code": "kk",
+ "name": "Kazakh"
+ },
+ "ki": {
+ "code": "ki",
+ "name": "Kikuyu"
+ },
+ "khq": {
+ "code": "khq",
+ "name": "Koyra Chiini"
+ },
+ "ses": {
+ "code": "ses",
+ "name": "Koyraboro Senni"
+ },
+ "nmg": {
+ "code": "nmg",
+ "name": "Kwasio"
+ },
+ "ky": {
+ "code": "ky",
+ "name": "Kyrgyz"
+ },
+ "lag": {
+ "code": "lag",
+ "name": "Langi"
+ },
+ "lo": {
+ "code": "lo",
+ "name": "Lao"
+ },
+ "lv": {
+ "code": "lv",
+ "name": "Latvian"
+ },
+ "ln": {
+ "code": "ln",
+ "name": "Lingala"
+ },
+ "lt": {
+ "code": "lt",
+ "name": "Lithuanian"
+ },
+ "dsb": {
+ "code": "dsb",
+ "name": "Lower Sorbian"
+ },
+ "lu": {
+ "code": "lu",
+ "name": "Luba-Katanga"
+ },
+ "luo": {
+ "code": "luo",
+ "name": "Luo"
+ },
+ "lb": {
+ "code": "lb",
+ "name": "Luxembourgish"
+ },
+ "luy": {
+ "code": "luy",
+ "name": "Luyia"
+ },
+ "mk": {
+ "code": "mk",
+ "name": "Macedonian"
+ },
+ "jmc": {
+ "code": "jmc",
+ "name": "Machame"
+ },
+ "mgh": {
+ "code": "mgh",
+ "name": "Makhuwa-Meetto"
+ },
+ "kde": {
+ "code": "kde",
+ "name": "Makonde"
+ },
+ "mg": {
+ "code": "mg",
+ "name": "Malagasy"
+ },
+ "ml": {
+ "code": "ml",
+ "name": "Malayalam"
+ },
+ "mt": {
+ "code": "mt",
+ "name": "Maltese"
+ },
+ "mr": {
+ "code": "mr",
+ "name": "Marathi"
+ },
+ "mas": {
+ "code": "mas",
+ "name": "Masai"
+ },
+ "mer": {
+ "code": "mer",
+ "name": "Meru"
+ },
+ "mn": {
+ "code": "mn",
+ "name": "Mongolian"
+ },
+ "mfe": {
+ "code": "mfe",
+ "name": "Morisyen"
+ },
+ "mua": {
+ "code": "mua",
+ "name": "Mundang"
+ },
+ "naq": {
+ "code": "naq",
+ "name": "Nama"
+ },
+ "jgo": {
+ "code": "jgo",
+ "name": "Ngomba"
+ },
+ "nl-BE": {
+ "code": "nl-BE",
+ "name": "nl_BE"
+ },
+ "nd": {
+ "code": "nd",
+ "name": "North Ndebele"
+ },
+ "se": {
+ "code": "se",
+ "name": "Northern Sami"
+ },
+ "nb": {
+ "code": "nb",
+ "name": "Norwegian Bokmål"
+ },
+ "nn": {
+ "code": "nn",
+ "name": "Norwegian Nynorsk"
+ },
+ "nus": {
+ "code": "nus",
+ "name": "Nuer"
+ },
+ "nyn": {
+ "code": "nyn",
+ "name": "Nyankole"
+ },
+ "or": {
+ "code": "or",
+ "name": "Oriya"
+ },
+ "ps": {
+ "code": "ps",
+ "name": "Pashto"
+ },
+ "pt-BR": {
+ "code": "pt-BR",
+ "name": "pt_BR"
+ },
+ "pt-PT": {
+ "code": "pt-PT",
+ "name": "pt_PT"
+ },
+ "ro-MD": {
+ "code": "ro-MD",
+ "name": "ro_MD"
+ },
+ "rm": {
+ "code": "rm",
+ "name": "Romansh"
+ },
+ "rof": {
+ "code": "rof",
+ "name": "Rombo"
+ },
+ "rn": {
+ "code": "rn",
+ "name": "Rundi"
+ },
+ "rwk": {
+ "code": "rwk",
+ "name": "Rwa"
+ },
+ "saq": {
+ "code": "saq",
+ "name": "Samburu"
+ },
+ "sg": {
+ "code": "sg",
+ "name": "Sango"
+ },
+ "sbp": {
+ "code": "sbp",
+ "name": "Sangu"
+ },
+ "gd": {
+ "code": "gd",
+ "name": "Scottish Gaelic"
+ },
+ "seh": {
+ "code": "seh",
+ "name": "Sena"
+ },
+ "sr": {
+ "code": "sr",
+ "name": "Serbian"
+ },
+ "ksb": {
+ "code": "ksb",
+ "name": "Shambala"
+ },
+ "sn": {
+ "code": "sn",
+ "name": "Shona"
+ },
+ "si": {
+ "code": "si",
+ "name": "Sinhala"
+ },
+ "sk": {
+ "code": "sk",
+ "name": "Slovak"
+ },
+ "sl": {
+ "code": "sl",
+ "name": "Slovenian"
+ },
+ "xog": {
+ "code": "xog",
+ "name": "Soga"
+ },
+ "zgh": {
+ "code": "zgh",
+ "name": "Standard Moroccan Tamazight"
+ },
+ "sw": {
+ "code": "sw",
+ "name": "Swahili"
+ },
+ "gsw": {
+ "code": "gsw",
+ "name": "Swiss German"
+ },
+ "bg": {
+ "code": "bg",
+ "name": "Tabelɣarit"
+ },
+ "pa": {
+ "code": "pa",
+ "name": "Tabenjabit"
+ },
+ "be": {
+ "code": "be",
+ "name": "Tabilarusit"
+ },
+ "bn": {
+ "code": "bn",
+ "name": "Tabinɣalit"
+ },
+ "my": {
+ "code": "my",
+ "name": "Taburmanit"
+ },
+ "pt": {
+ "code": "pt",
+ "name": "Taburtuɣalit"
+ },
+ "shi": {
+ "code": "shi",
+ "name": "Tachelhit"
+ },
+ "cs": {
+ "code": "cs",
+ "name": "TaÄikt"
+ },
+ "zh": {
+ "code": "zh",
+ "name": "Tacinwit,Mandarin"
+ },
+ "fa": {
+ "code": "fa",
+ "name": "Tafarisit"
+ },
+ "fr": {
+ "code": "fr",
+ "name": "Tafá¹›ansist"
+ },
+ "ha": {
+ "code": "ha",
+ "name": "Tahawsat"
+ },
+ "hu": {
+ "code": "hu",
+ "name": "Tahenɣarit"
+ },
+ "hi": {
+ "code": "hi",
+ "name": "Tahindit"
+ },
+ "nl": {
+ "code": "nl",
+ "name": "Tahulaná¸it"
+ },
+ "dav": {
+ "code": "dav",
+ "name": "Taita"
+ },
+ "ja": {
+ "code": "ja",
+ "name": "Tajappunit"
+ },
+ "ak": {
+ "code": "ak",
+ "name": "Takanit"
+ },
+ "ko": {
+ "code": "ko",
+ "name": "Takurit"
+ },
+ "de": {
+ "code": "de",
+ "name": "Talmanit"
+ },
+ "ms": {
+ "code": "ms",
+ "name": "Tamalizit"
+ },
+ "tzm": {
+ "code": "tzm",
+ "name": "Tamaziɣt"
+ },
+ "am": {
+ "code": "am",
+ "name": "Tamharit"
+ },
+ "en": {
+ "code": "en",
+ "name": "Tanglizt"
+ },
+ "ne": {
+ "code": "ne",
+ "name": "Tanippalit"
+ },
+ "pl": {
+ "code": "pl",
+ "name": "Tappulunit"
+ },
+ "ro": {
+ "code": "ro",
+ "name": "Taá¹›umanit"
+ },
+ "ru": {
+ "code": "ru",
+ "name": "Tarusit"
+ },
+ "twq": {
+ "code": "twq",
+ "name": "Tasawaq"
+ },
+ "es": {
+ "code": "es",
+ "name": "tasbelyunit"
+ },
+ "so": {
+ "code": "so",
+ "name": "Taá¹£umalit"
+ },
+ "sv": {
+ "code": "sv",
+ "name": "Taswidit"
+ },
+ "it": {
+ "code": "it",
+ "name": "Taá¹­alyant"
+ },
+ "ta": {
+ "code": "ta",
+ "name": "Tatamilt"
+ },
+ "th": {
+ "code": "th",
+ "name": "Taá¹­ayt"
+ },
+ "tr": {
+ "code": "tr",
+ "name": "Taturkit"
+ },
+ "vi": {
+ "code": "vi",
+ "name": "Taviá¹­namit"
+ },
+ "km": {
+ "code": "km",
+ "name": "Taxmert ,Talammast"
+ },
+ "el": {
+ "code": "el",
+ "name": "Tayunanit"
+ },
+ "yo": {
+ "code": "yo",
+ "name": "Tayurubat"
+ },
+ "zu": {
+ "code": "zu",
+ "name": "tazulut"
+ },
+ "ar": {
+ "code": "ar",
+ "name": "Taεrabt"
+ },
+ "te": {
+ "code": "te",
+ "name": "Telugu"
+ },
+ "teo": {
+ "code": "teo",
+ "name": "Teso"
+ },
+ "bo": {
+ "code": "bo",
+ "name": "Tibetan"
+ },
+ "ti": {
+ "code": "ti",
+ "name": "Tigrinya"
+ },
+ "id": {
+ "code": "id",
+ "name": "Tindunisit"
+ },
+ "to": {
+ "code": "to",
+ "name": "Tongan"
+ },
+ "uk": {
+ "code": "uk",
+ "name": "Tukranit"
+ },
+ "ur": {
+ "code": "ur",
+ "name": "Turdut"
+ },
+ "hsb": {
+ "code": "hsb",
+ "name": "Upper Sorbian"
+ },
+ "ug": {
+ "code": "ug",
+ "name": "Uyghur"
+ },
+ "uz": {
+ "code": "uz",
+ "name": "Uzbek"
+ },
+ "vai": {
+ "code": "vai",
+ "name": "Vai"
+ },
+ "vun": {
+ "code": "vun",
+ "name": "Vunjo"
+ },
+ "wae": {
+ "code": "wae",
+ "name": "Walser"
+ },
+ "cy": {
+ "code": "cy",
+ "name": "Welsh"
+ },
+ "fy": {
+ "code": "fy",
+ "name": "Western Frisian"
+ },
+ "yav": {
+ "code": "yav",
+ "name": "Yangben"
+ },
+ "dje": {
+ "code": "dje",
+ "name": "Zarma"
+ },
+ "zh-Hans": {
+ "code": "zh-Hans",
+ "name": "zh_Hans"
+ },
+ "zh-Hant": {
+ "code": "zh-Hant",
+ "name": "zh_Hant"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/language/ug.json b/library/intl/resources/language/ug.json
new file mode 100644
index 000000000..e6b20c302
--- /dev/null
+++ b/library/intl/resources/language/ug.json
@@ -0,0 +1,738 @@
+{
+ "nl-BE": {
+ "code": "nl-BE",
+ "name": "nl_BE"
+ },
+ "ro-MD": {
+ "code": "ro-MD",
+ "name": "ro_MD"
+ },
+ "zh-Hans": {
+ "code": "zh-Hans",
+ "name": "ئاددىي خەنچە"
+ },
+ "ast": {
+ "code": "ast",
+ "name": "ئاستۇرىيەچە"
+ },
+ "asa": {
+ "code": "asa",
+ "name": "ئاسۇچە"
+ },
+ "af": {
+ "code": "af",
+ "name": "ئاÙرىكانچە"
+ },
+ "ak": {
+ "code": "ak",
+ "name": "ئاكانچە"
+ },
+ "agq": {
+ "code": "agq",
+ "name": "ئاگەمچە"
+ },
+ "sq": {
+ "code": "sq",
+ "name": "ئالبانچە"
+ },
+ "am": {
+ "code": "am",
+ "name": "ئامخاراچە"
+ },
+ "en-US": {
+ "code": "en-US",
+ "name": "ئامÛرىكا ئىنگلىزچە"
+ },
+ "en-AU": {
+ "code": "en-AU",
+ "name": "ئاۋسترالىيە ئىنگلىزچە"
+ },
+ "de-AT": {
+ "code": "de-AT",
+ "name": "ئاۋستىرىيە Ú¯Ûرمانچە"
+ },
+ "hy": {
+ "code": "hy",
+ "name": "ئەرمەنچە"
+ },
+ "ar": {
+ "code": "ar",
+ "name": "ئەرەبچە"
+ },
+ "az": {
+ "code": "az",
+ "name": "ئەزەرىچە"
+ },
+ "en-GB": {
+ "code": "en-GB",
+ "name": "ئەنگلىيە ئىنگلىزچە"
+ },
+ "ur": {
+ "code": "ur",
+ "name": "ئوردوچە"
+ },
+ "or": {
+ "code": "or",
+ "name": "ئورىياچە"
+ },
+ "uz": {
+ "code": "uz",
+ "name": "ئۆزبÛÙƒÚ†Û•"
+ },
+ "zgh": {
+ "code": "zgh",
+ "name": "ئۆلچەملىك ماراكەش تامازىتچە"
+ },
+ "uk": {
+ "code": "uk",
+ "name": "ئۇكرائىنچە"
+ },
+ "ug": {
+ "code": "ug",
+ "name": "ئۇيغۇرچە"
+ },
+ "he": {
+ "code": "he",
+ "name": "ئىبرانىچە"
+ },
+ "it": {
+ "code": "it",
+ "name": "ئىتاليانچە"
+ },
+ "ga": {
+ "code": "ga",
+ "name": "ئىرÛلاندچە"
+ },
+ "es": {
+ "code": "es",
+ "name": "ئىسپانچە"
+ },
+ "is": {
+ "code": "is",
+ "name": "ئىسلاندچە"
+ },
+ "en": {
+ "code": "en",
+ "name": "ئىنگلىزچە"
+ },
+ "et": {
+ "code": "et",
+ "name": "ئÛستونچە"
+ },
+ "ebu": {
+ "code": "ebu",
+ "name": "ئÛمبۇچە"
+ },
+ "ewo": {
+ "code": "ewo",
+ "name": "ئÛۋوندوچە"
+ },
+ "ee": {
+ "code": "ee",
+ "name": "ئÛÛ‹ÛÚ†Û•"
+ },
+ "bas": {
+ "code": "bas",
+ "name": "باساچە"
+ },
+ "eu": {
+ "code": "eu",
+ "name": "باسكىچە"
+ },
+ "ksf": {
+ "code": "ksf",
+ "name": "باÙىياچە"
+ },
+ "bm": {
+ "code": "bm",
+ "name": "بامباراچە"
+ },
+ "brx": {
+ "code": "brx",
+ "name": "بودوچە"
+ },
+ "bs": {
+ "code": "bs",
+ "name": "بوسنىيەچە"
+ },
+ "dz": {
+ "code": "dz",
+ "name": "بۇتانچە"
+ },
+ "bg": {
+ "code": "bg",
+ "name": "بۇلغارچە"
+ },
+ "pt-BR": {
+ "code": "pt-BR",
+ "name": "بىرازىلىيە پورتۇگالچە"
+ },
+ "my": {
+ "code": "my",
+ "name": "بىرماچە"
+ },
+ "br": {
+ "code": "br",
+ "name": "بىرÛتونچە"
+ },
+ "be": {
+ "code": "be",
+ "name": "بÛلارۇسچە"
+ },
+ "bez": {
+ "code": "bez",
+ "name": "بÛناچە"
+ },
+ "bn": {
+ "code": "bn",
+ "name": "بÛنگالچە"
+ },
+ "fa": {
+ "code": "fa",
+ "name": "پارسچە"
+ },
+ "pa": {
+ "code": "pa",
+ "name": "پەنجابچە"
+ },
+ "pt": {
+ "code": "pt",
+ "name": "پورتۇگالچە"
+ },
+ "pl": {
+ "code": "pl",
+ "name": "پولەكچە"
+ },
+ "ps": {
+ "code": "ps",
+ "name": "پۇشتۇچە"
+ },
+ "ta": {
+ "code": "ta",
+ "name": "تامىلچە"
+ },
+ "dav": {
+ "code": "dav",
+ "name": "تايتاچە"
+ },
+ "th": {
+ "code": "th",
+ "name": "تايلاندچە"
+ },
+ "to": {
+ "code": "to",
+ "name": "توڭانچە"
+ },
+ "dsb": {
+ "code": "dsb",
+ "name": "توۋەن سÛربچە"
+ },
+ "tr": {
+ "code": "tr",
+ "name": "تۈركچە"
+ },
+ "bo": {
+ "code": "bo",
+ "name": "تىبەتچە"
+ },
+ "ti": {
+ "code": "ti",
+ "name": "تىگرىنياچە"
+ },
+ "teo": {
+ "code": "teo",
+ "name": "تÛسوچە"
+ },
+ "te": {
+ "code": "te",
+ "name": "تÛÙ„Û‡Ú¯Û‡Ú†Û•"
+ },
+ "dyo": {
+ "code": "dyo",
+ "name": "جولاچە"
+ },
+ "cgg": {
+ "code": "cgg",
+ "name": "چىگاچە"
+ },
+ "cs": {
+ "code": "cs",
+ "name": "Ú†Ûخچە"
+ },
+ "chr": {
+ "code": "chr",
+ "name": "Ú†Ûروكىچە"
+ },
+ "ha": {
+ "code": "ha",
+ "name": "خائۇساچە"
+ },
+ "zh": {
+ "code": "zh",
+ "name": "خەنچە"
+ },
+ "hr": {
+ "code": "hr",
+ "name": "خورۋاتچە"
+ },
+ "da": {
+ "code": "da",
+ "name": "دانىشچە"
+ },
+ "eo": {
+ "code": "eo",
+ "name": "دۇنيا تىلى"
+ },
+ "rm": {
+ "code": "rm",
+ "name": "رومانىشچە"
+ },
+ "rof": {
+ "code": "rof",
+ "name": "رومبوچە"
+ },
+ "ru": {
+ "code": "ru",
+ "name": "رۇسچە"
+ },
+ "ro": {
+ "code": "ro",
+ "name": "رۇمىنىيەچە"
+ },
+ "rn": {
+ "code": "rn",
+ "name": "رۇندىچە"
+ },
+ "rwk": {
+ "code": "rwk",
+ "name": "رىۋاچە"
+ },
+ "dje": {
+ "code": "dje",
+ "name": "زارماچە"
+ },
+ "zu": {
+ "code": "zu",
+ "name": "زۇلۇچە"
+ },
+ "saq": {
+ "code": "saq",
+ "name": "سامبۇرۇچە"
+ },
+ "sg": {
+ "code": "sg",
+ "name": "سانگوچە"
+ },
+ "sbp": {
+ "code": "sbp",
+ "name": "سانگۇچە"
+ },
+ "gd": {
+ "code": "gd",
+ "name": "سكوتچە"
+ },
+ "xog": {
+ "code": "xog",
+ "name": "سوگاچە"
+ },
+ "so": {
+ "code": "so",
+ "name": "سومالىچە"
+ },
+ "sk": {
+ "code": "sk",
+ "name": "سىلوۋاكچە"
+ },
+ "sl": {
+ "code": "sl",
+ "name": "سىلوۋÛنىيەچە"
+ },
+ "si": {
+ "code": "si",
+ "name": "سىنگالچە"
+ },
+ "sw": {
+ "code": "sw",
+ "name": "سىۋالىچە"
+ },
+ "sr": {
+ "code": "sr",
+ "name": "سÛربچە"
+ },
+ "seh": {
+ "code": "seh",
+ "name": "سÛناچە"
+ },
+ "ksb": {
+ "code": "ksb",
+ "name": "شامبالاچە"
+ },
+ "ses": {
+ "code": "ses",
+ "name": "شەرقىي سوڭخايچە"
+ },
+ "sn": {
+ "code": "sn",
+ "name": "شوناچە"
+ },
+ "sv": {
+ "code": "sv",
+ "name": "Ø´Û‹Ûدچە"
+ },
+ "shi": {
+ "code": "shi",
+ "name": "شىلخاچە"
+ },
+ "se": {
+ "code": "se",
+ "name": "شىمالى سامىچە"
+ },
+ "nd": {
+ "code": "nd",
+ "name": "شىمالى ندەبەلەچە"
+ },
+ "twq": {
+ "code": "twq",
+ "name": "شىمالىي سوڭخايچە"
+ },
+ "de-CH": {
+ "code": "de-CH",
+ "name": "شىۋىتسارىيە ئÛگىزلىك Ú¯Ûرمانچە"
+ },
+ "fr-CH": {
+ "code": "fr-CH",
+ "name": "شىۋىتسارىيە Ùىرانسۇزچە"
+ },
+ "fy": {
+ "code": "fy",
+ "name": "غەربى Ùىرىزيەچە"
+ },
+ "fo": {
+ "code": "fo",
+ "name": "ÙائÛروچە"
+ },
+ "ff": {
+ "code": "ff",
+ "name": "Ùۇلاچە"
+ },
+ "fr": {
+ "code": "fr",
+ "name": "Ùىرانسۇزچە"
+ },
+ "fur": {
+ "code": "fur",
+ "name": "Ùىرىئۇلىچە"
+ },
+ "fil": {
+ "code": "fil",
+ "name": "Ùىلىپپىنچە"
+ },
+ "fi": {
+ "code": "fi",
+ "name": "Ùىنچە"
+ },
+ "kk": {
+ "code": "kk",
+ "name": "قازاقچە"
+ },
+ "ky": {
+ "code": "ky",
+ "name": "قىرغىزچە"
+ },
+ "kea": {
+ "code": "kea",
+ "name": "كابۇۋÛردىيانچە"
+ },
+ "kab": {
+ "code": "kab",
+ "name": "كابىلÛÚ†Û•"
+ },
+ "ca": {
+ "code": "ca",
+ "name": "كاتالانچە"
+ },
+ "kln": {
+ "code": "kln",
+ "name": "كالÛنجىنچە"
+ },
+ "kam": {
+ "code": "kam",
+ "name": "كامباچە"
+ },
+ "en-CA": {
+ "code": "en-CA",
+ "name": "كانادا ئىنگلىزچە"
+ },
+ "fr-CA": {
+ "code": "fr-CA",
+ "name": "كانادا Ùىرانسۇزچە"
+ },
+ "kn": {
+ "code": "kn",
+ "name": "كانناداچە"
+ },
+ "ks": {
+ "code": "ks",
+ "name": "كەشمىرچە"
+ },
+ "ko": {
+ "code": "ko",
+ "name": "كورÛÙŠÛ•Ú†Û•"
+ },
+ "ksh": {
+ "code": "ksh",
+ "name": "كولىشچە"
+ },
+ "swc": {
+ "code": "swc",
+ "name": "كونگو سىۋالىچە"
+ },
+ "khq": {
+ "code": "khq",
+ "name": "كويرا چىنىچە"
+ },
+ "nmg": {
+ "code": "nmg",
+ "name": "كۋاسىيوچە"
+ },
+ "km": {
+ "code": "km",
+ "name": "كىخمÛرچە"
+ },
+ "ki": {
+ "code": "ki",
+ "name": "كىكۇيۇچە"
+ },
+ "gl": {
+ "code": "gl",
+ "name": "گالىتسىيانچە"
+ },
+ "lg": {
+ "code": "lg",
+ "name": "گانداچە"
+ },
+ "nl": {
+ "code": "nl",
+ "name": "گوللاندىيەچە"
+ },
+ "gu": {
+ "code": "gu",
+ "name": "گۇجاراتچە"
+ },
+ "guz": {
+ "code": "guz",
+ "name": "گۇسىچە"
+ },
+ "ka": {
+ "code": "ka",
+ "name": "گىرۇزىنچە"
+ },
+ "el": {
+ "code": "el",
+ "name": "گىرÛÙƒÚ†Û•"
+ },
+ "kl": {
+ "code": "kl",
+ "name": "گىرÛنلاندچە"
+ },
+ "de": {
+ "code": "de",
+ "name": "Ú¯Ûرمانچە"
+ },
+ "gsw": {
+ "code": "gsw",
+ "name": "Ú¯Ûرمانچە شىۋىتسارىيە"
+ },
+ "lo": {
+ "code": "lo",
+ "name": "لائوسچە"
+ },
+ "lv": {
+ "code": "lv",
+ "name": "لاتۋىيەچە"
+ },
+ "lag": {
+ "code": "lag",
+ "name": "لانگىچە"
+ },
+ "luo": {
+ "code": "luo",
+ "name": "لۇئوچە"
+ },
+ "lu": {
+ "code": "lu",
+ "name": "لۇبا-كاتانگاچە"
+ },
+ "luy": {
+ "code": "luy",
+ "name": "لۇياچە"
+ },
+ "lt": {
+ "code": "lt",
+ "name": "لىتۋاچە"
+ },
+ "ln": {
+ "code": "ln",
+ "name": "لىنگالاچە"
+ },
+ "lb": {
+ "code": "lb",
+ "name": "لىيۇكسÛمبۇرگچە"
+ },
+ "hu": {
+ "code": "hu",
+ "name": "ماجارچە"
+ },
+ "jmc": {
+ "code": "jmc",
+ "name": "ماچامچە"
+ },
+ "mg": {
+ "code": "mg",
+ "name": "ماداغاسقارچە"
+ },
+ "mr": {
+ "code": "mr",
+ "name": "ماراتچە"
+ },
+ "mas": {
+ "code": "mas",
+ "name": "ماسايچە"
+ },
+ "kde": {
+ "code": "kde",
+ "name": "ماكوندÛÚ†Û•"
+ },
+ "mgh": {
+ "code": "mgh",
+ "name": "ماكۇۋاچە"
+ },
+ "mk": {
+ "code": "mk",
+ "name": "ماكÛدونچە"
+ },
+ "ml": {
+ "code": "ml",
+ "name": "مالايامچە"
+ },
+ "ms": {
+ "code": "ms",
+ "name": "مالايچە"
+ },
+ "mt": {
+ "code": "mt",
+ "name": "مالتاچە"
+ },
+ "tzm": {
+ "code": "tzm",
+ "name": "مەركىزى ئاتلاس تاماچاگىت"
+ },
+ "mfe": {
+ "code": "mfe",
+ "name": "مورىسيÛÙ†Ú†Û•"
+ },
+ "mn": {
+ "code": "mn",
+ "name": "موڭغۇلچە"
+ },
+ "nus": {
+ "code": "nus",
+ "name": "مۇئÛرچە"
+ },
+ "zh-Hant": {
+ "code": "zh-Hant",
+ "name": "مۇرەككەپ خەنچە"
+ },
+ "mua": {
+ "code": "mua",
+ "name": "مۇنداڭچە"
+ },
+ "mer": {
+ "code": "mer",
+ "name": "Ù…Ûرۇچە"
+ },
+ "es-MX": {
+ "code": "es-MX",
+ "name": "Ù…Ûكسىكا ئىسپانچە"
+ },
+ "naq": {
+ "code": "naq",
+ "name": "ناماچە"
+ },
+ "jgo": {
+ "code": "jgo",
+ "name": "نگومباچە"
+ },
+ "nb": {
+ "code": "nb",
+ "name": "نورۋىگىيە بوكمالچە"
+ },
+ "nyn": {
+ "code": "nyn",
+ "name": "نىيانكولÛÚ†Û•"
+ },
+ "ne": {
+ "code": "ne",
+ "name": "Ù†Ûپالچە"
+ },
+ "ar-001": {
+ "code": "ar-001",
+ "name": "ھازىرقى زامان ئۆلچەملىك ئەرەبچە"
+ },
+ "id": {
+ "code": "id",
+ "name": "ھىندونÛزىيەچە"
+ },
+ "hi": {
+ "code": "hi",
+ "name": "ھىندىچە"
+ },
+ "wae": {
+ "code": "wae",
+ "name": "ۋالسÛرچە"
+ },
+ "vai": {
+ "code": "vai",
+ "name": "ۋايچە"
+ },
+ "vun": {
+ "code": "vun",
+ "name": "ۋۇنجوچە"
+ },
+ "vi": {
+ "code": "vi",
+ "name": "ۋىيÛتنامچە"
+ },
+ "cy": {
+ "code": "cy",
+ "name": "Û‹Ûلشچە"
+ },
+ "ja": {
+ "code": "ja",
+ "name": "ياپونچە"
+ },
+ "yav": {
+ "code": "yav",
+ "name": "ياڭبەنچە"
+ },
+ "es-ES": {
+ "code": "es-ES",
+ "name": "ياۋروپا ئىسپانچە"
+ },
+ "pt-PT": {
+ "code": "pt-PT",
+ "name": "ياۋروپا پورتۇگالچە"
+ },
+ "yo": {
+ "code": "yo",
+ "name": "يورۇباچە"
+ },
+ "hsb": {
+ "code": "hsb",
+ "name": "يۇقىرىقى سÛربچە"
+ },
+ "nn": {
+ "code": "nn",
+ "name": "ÙŠÛÚ­Ù‰ نورۋÛÚ¯Ú†Û•"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/language/uk.json b/library/intl/resources/language/uk.json
new file mode 100644
index 000000000..50d152d7e
--- /dev/null
+++ b/library/intl/resources/language/uk.json
@@ -0,0 +1,738 @@
+{
+ "de-AT": {
+ "code": "de-AT",
+ "name": "de_AT"
+ },
+ "en-AU": {
+ "code": "en-AU",
+ "name": "en_AU"
+ },
+ "en-CA": {
+ "code": "en-CA",
+ "name": "en_CA"
+ },
+ "en-US": {
+ "code": "en-US",
+ "name": "en_US"
+ },
+ "es-MX": {
+ "code": "es-MX",
+ "name": "es_MX"
+ },
+ "fr-CA": {
+ "code": "fr-CA",
+ "name": "fr_CA"
+ },
+ "fr-CH": {
+ "code": "fr-CH",
+ "name": "fr_CH"
+ },
+ "pt-BR": {
+ "code": "pt-BR",
+ "name": "pt_BR"
+ },
+ "zh-Hans": {
+ "code": "zh-Hans",
+ "name": "zh_Hans"
+ },
+ "zh-Hant": {
+ "code": "zh-Hant",
+ "name": "zh_Hant"
+ },
+ "agq": {
+ "code": "agq",
+ "name": "агем"
+ },
+ "az": {
+ "code": "az",
+ "name": "азербайджанÑька"
+ },
+ "ak": {
+ "code": "ak",
+ "name": "акан"
+ },
+ "sq": {
+ "code": "sq",
+ "name": "албанÑька"
+ },
+ "am": {
+ "code": "am",
+ "name": "амхарÑька"
+ },
+ "en": {
+ "code": "en",
+ "name": "англійÑька"
+ },
+ "en-GB": {
+ "code": "en-GB",
+ "name": "англійÑька британÑька"
+ },
+ "ar": {
+ "code": "ar",
+ "name": "арабÑька"
+ },
+ "ast": {
+ "code": "ast",
+ "name": "аÑтурÑька"
+ },
+ "asa": {
+ "code": "asa",
+ "name": "аÑу"
+ },
+ "af": {
+ "code": "af",
+ "name": "африкаанÑ"
+ },
+ "bm": {
+ "code": "bm",
+ "name": "бамбара"
+ },
+ "bas": {
+ "code": "bas",
+ "name": "баÑа"
+ },
+ "eu": {
+ "code": "eu",
+ "name": "баÑкÑька"
+ },
+ "ksf": {
+ "code": "ksf",
+ "name": "бафіа"
+ },
+ "bez": {
+ "code": "bez",
+ "name": "бена"
+ },
+ "bn": {
+ "code": "bn",
+ "name": "бенгальÑька"
+ },
+ "be": {
+ "code": "be",
+ "name": "білоруÑька"
+ },
+ "my": {
+ "code": "my",
+ "name": "бірманÑька"
+ },
+ "brx": {
+ "code": "brx",
+ "name": "бодо"
+ },
+ "bg": {
+ "code": "bg",
+ "name": "болгарÑька"
+ },
+ "bs": {
+ "code": "bs",
+ "name": "боÑнійÑька"
+ },
+ "br": {
+ "code": "br",
+ "name": "бретонÑька"
+ },
+ "nb": {
+ "code": "nb",
+ "name": "букмол (ÐорвегіÑ)"
+ },
+ "vi": {
+ "code": "vi",
+ "name": "вʼєтнамÑька"
+ },
+ "vai": {
+ "code": "vai",
+ "name": "ваї"
+ },
+ "wae": {
+ "code": "wae",
+ "name": "ВалзерÑька"
+ },
+ "cy": {
+ "code": "cy",
+ "name": "валлійÑька"
+ },
+ "hsb": {
+ "code": "hsb",
+ "name": "верхньолужицька"
+ },
+ "de-CH": {
+ "code": "de-CH",
+ "name": "верхньонімецька (ШвейцаріÑ)"
+ },
+ "hy": {
+ "code": "hy",
+ "name": "вірменÑька"
+ },
+ "vun": {
+ "code": "vun",
+ "name": "вуньо"
+ },
+ "gd": {
+ "code": "gd",
+ "name": "гаельÑька"
+ },
+ "gl": {
+ "code": "gl",
+ "name": "галіÑійÑька"
+ },
+ "lg": {
+ "code": "lg",
+ "name": "ганда"
+ },
+ "hi": {
+ "code": "hi",
+ "name": "гінді"
+ },
+ "nl": {
+ "code": "nl",
+ "name": "голландÑька"
+ },
+ "el": {
+ "code": "el",
+ "name": "грецька"
+ },
+ "ka": {
+ "code": "ka",
+ "name": "грузинÑька"
+ },
+ "gu": {
+ "code": "gu",
+ "name": "гуджараті"
+ },
+ "guz": {
+ "code": "guz",
+ "name": "гуÑÑ–Ñ—"
+ },
+ "da": {
+ "code": "da",
+ "name": "данÑька"
+ },
+ "dje": {
+ "code": "dje",
+ "name": "джерма"
+ },
+ "dz": {
+ "code": "dz",
+ "name": "дзонг-ке"
+ },
+ "dyo": {
+ "code": "dyo",
+ "name": "дьола-фоні"
+ },
+ "ee": {
+ "code": "ee",
+ "name": "еве"
+ },
+ "ewo": {
+ "code": "ewo",
+ "name": "евондо"
+ },
+ "ebu": {
+ "code": "ebu",
+ "name": "ембу"
+ },
+ "eo": {
+ "code": "eo",
+ "name": "еÑперанто"
+ },
+ "et": {
+ "code": "et",
+ "name": "еÑтонÑька"
+ },
+ "fy": {
+ "code": "fy",
+ "name": "західно-фризька"
+ },
+ "zu": {
+ "code": "zu",
+ "name": "зулуÑька"
+ },
+ "he": {
+ "code": "he",
+ "name": "іврит"
+ },
+ "id": {
+ "code": "id",
+ "name": "індонезійÑька"
+ },
+ "ga": {
+ "code": "ga",
+ "name": "ірландÑька"
+ },
+ "is": {
+ "code": "is",
+ "name": "Ñ–ÑландÑька"
+ },
+ "es": {
+ "code": "es",
+ "name": "Ñ–ÑпанÑька"
+ },
+ "es-ES": {
+ "code": "es-ES",
+ "name": "Ñ–ÑпанÑька (Європа)"
+ },
+ "it": {
+ "code": "it",
+ "name": "італійÑька"
+ },
+ "yo": {
+ "code": "yo",
+ "name": "йоруба"
+ },
+ "kab": {
+ "code": "kab",
+ "name": "кабільÑька"
+ },
+ "kea": {
+ "code": "kea",
+ "name": "кабувердіану"
+ },
+ "kk": {
+ "code": "kk",
+ "name": "казахÑька"
+ },
+ "kl": {
+ "code": "kl",
+ "name": "калаалліÑут"
+ },
+ "kln": {
+ "code": "kln",
+ "name": "календжин"
+ },
+ "kam": {
+ "code": "kam",
+ "name": "камба"
+ },
+ "kn": {
+ "code": "kn",
+ "name": "каннада"
+ },
+ "ca": {
+ "code": "ca",
+ "name": "каталонÑька"
+ },
+ "ks": {
+ "code": "ks",
+ "name": "кашмірÑька"
+ },
+ "nmg": {
+ "code": "nmg",
+ "name": "квазіо"
+ },
+ "ky": {
+ "code": "ky",
+ "name": "киргизька"
+ },
+ "zh": {
+ "code": "zh",
+ "name": "китайÑька"
+ },
+ "cgg": {
+ "code": "cgg",
+ "name": "кіга"
+ },
+ "ki": {
+ "code": "ki",
+ "name": "кікуйю"
+ },
+ "khq": {
+ "code": "khq",
+ "name": "койра чіїні"
+ },
+ "ses": {
+ "code": "ses",
+ "name": "койраборо Ñені"
+ },
+ "ksh": {
+ "code": "ksh",
+ "name": "колоніан"
+ },
+ "swc": {
+ "code": "swc",
+ "name": "конгійÑьке Ñуахілі"
+ },
+ "ko": {
+ "code": "ko",
+ "name": "корейÑька"
+ },
+ "km": {
+ "code": "km",
+ "name": "кхмерÑька"
+ },
+ "lag": {
+ "code": "lag",
+ "name": "лангі"
+ },
+ "lo": {
+ "code": "lo",
+ "name": "лаоÑька"
+ },
+ "lv": {
+ "code": "lv",
+ "name": "латвійÑька"
+ },
+ "lt": {
+ "code": "lt",
+ "name": "литовÑька"
+ },
+ "ln": {
+ "code": "ln",
+ "name": "лінгала"
+ },
+ "lu": {
+ "code": "lu",
+ "name": "луба-катанга"
+ },
+ "luy": {
+ "code": "luy",
+ "name": "луйÑ"
+ },
+ "luo": {
+ "code": "luo",
+ "name": "луо"
+ },
+ "lb": {
+ "code": "lb",
+ "name": "люкÑембурзька"
+ },
+ "mfe": {
+ "code": "mfe",
+ "name": "маврикійÑька креольÑька"
+ },
+ "mk": {
+ "code": "mk",
+ "name": "македонÑька"
+ },
+ "kde": {
+ "code": "kde",
+ "name": "маконде"
+ },
+ "mgh": {
+ "code": "mgh",
+ "name": "макува-меето"
+ },
+ "mg": {
+ "code": "mg",
+ "name": "малагаÑійÑька"
+ },
+ "ms": {
+ "code": "ms",
+ "name": "малайÑька"
+ },
+ "ml": {
+ "code": "ml",
+ "name": "малаÑлам"
+ },
+ "mt": {
+ "code": "mt",
+ "name": "мальтійÑька"
+ },
+ "mr": {
+ "code": "mr",
+ "name": "маратхі"
+ },
+ "mas": {
+ "code": "mas",
+ "name": "маÑаї"
+ },
+ "jmc": {
+ "code": "jmc",
+ "name": "мачаме"
+ },
+ "mer": {
+ "code": "mer",
+ "name": "меру"
+ },
+ "ro-MD": {
+ "code": "ro-MD",
+ "name": "молдавÑька"
+ },
+ "mn": {
+ "code": "mn",
+ "name": "монгольÑька"
+ },
+ "mua": {
+ "code": "mua",
+ "name": "мунданг"
+ },
+ "naq": {
+ "code": "naq",
+ "name": "нама"
+ },
+ "jgo": {
+ "code": "jgo",
+ "name": "нгомба"
+ },
+ "nd": {
+ "code": "nd",
+ "name": "ндебелє північна"
+ },
+ "ne": {
+ "code": "ne",
+ "name": "непальÑька"
+ },
+ "dsb": {
+ "code": "dsb",
+ "name": "нижньолужицька"
+ },
+ "de": {
+ "code": "de",
+ "name": "німецька"
+ },
+ "gsw": {
+ "code": "gsw",
+ "name": "німецька швейцарÑька"
+ },
+ "nus": {
+ "code": "nus",
+ "name": "нуер"
+ },
+ "nn": {
+ "code": "nn",
+ "name": "нюношк (ÐорвегіÑ)"
+ },
+ "nyn": {
+ "code": "nyn",
+ "name": "ньÑнколе"
+ },
+ "or": {
+ "code": "or",
+ "name": "оріÑ"
+ },
+ "pa": {
+ "code": "pa",
+ "name": "панджабі"
+ },
+ "fa": {
+ "code": "fa",
+ "name": "перÑька"
+ },
+ "pl": {
+ "code": "pl",
+ "name": "польÑька"
+ },
+ "pt": {
+ "code": "pt",
+ "name": "португальÑька"
+ },
+ "pt-PT": {
+ "code": "pt-PT",
+ "name": "португальÑька (Європа)"
+ },
+ "ps": {
+ "code": "ps",
+ "name": "пушту"
+ },
+ "rwk": {
+ "code": "rwk",
+ "name": "Рва"
+ },
+ "rm": {
+ "code": "rm",
+ "name": "ретороманÑька"
+ },
+ "rof": {
+ "code": "rof",
+ "name": "ромбо"
+ },
+ "ru": {
+ "code": "ru",
+ "name": "роÑійÑька"
+ },
+ "ro": {
+ "code": "ro",
+ "name": "румунÑька"
+ },
+ "rn": {
+ "code": "rn",
+ "name": "рунді"
+ },
+ "se": {
+ "code": "se",
+ "name": "ÑаамÑька північна"
+ },
+ "saq": {
+ "code": "saq",
+ "name": "Ñамбуру"
+ },
+ "sg": {
+ "code": "sg",
+ "name": "Ñанго"
+ },
+ "sbp": {
+ "code": "sbp",
+ "name": "Ñангу"
+ },
+ "seh": {
+ "code": "seh",
+ "name": "Ñена"
+ },
+ "sr": {
+ "code": "sr",
+ "name": "ÑербÑька"
+ },
+ "si": {
+ "code": "si",
+ "name": "ÑингальÑька"
+ },
+ "sk": {
+ "code": "sk",
+ "name": "Ñловацька"
+ },
+ "sl": {
+ "code": "sl",
+ "name": "ÑловенÑька"
+ },
+ "xog": {
+ "code": "xog",
+ "name": "Ñога"
+ },
+ "so": {
+ "code": "so",
+ "name": "Ñомалі"
+ },
+ "zgh": {
+ "code": "zgh",
+ "name": "Ñтандартна марокканÑька берберÑька"
+ },
+ "sw": {
+ "code": "sw",
+ "name": "Ñуахілі"
+ },
+ "ar-001": {
+ "code": "ar-001",
+ "name": "ÑучаÑна Ñтандартна арабÑька"
+ },
+ "dav": {
+ "code": "dav",
+ "name": "таіта"
+ },
+ "th": {
+ "code": "th",
+ "name": "тайÑька"
+ },
+ "ta": {
+ "code": "ta",
+ "name": "тамільÑька"
+ },
+ "twq": {
+ "code": "twq",
+ "name": "таÑавак"
+ },
+ "shi": {
+ "code": "shi",
+ "name": "тачеліт"
+ },
+ "te": {
+ "code": "te",
+ "name": "телугу"
+ },
+ "teo": {
+ "code": "teo",
+ "name": "теÑо"
+ },
+ "bo": {
+ "code": "bo",
+ "name": "тибетÑька"
+ },
+ "ti": {
+ "code": "ti",
+ "name": "тигриньÑ"
+ },
+ "to": {
+ "code": "to",
+ "name": "тонганÑька"
+ },
+ "tr": {
+ "code": "tr",
+ "name": "турецька"
+ },
+ "hu": {
+ "code": "hu",
+ "name": "угорÑька"
+ },
+ "uz": {
+ "code": "uz",
+ "name": "узбецька"
+ },
+ "ug": {
+ "code": "ug",
+ "name": "уйгурÑька"
+ },
+ "uk": {
+ "code": "uk",
+ "name": "українÑька"
+ },
+ "ur": {
+ "code": "ur",
+ "name": "урду"
+ },
+ "fo": {
+ "code": "fo",
+ "name": "фарерÑька"
+ },
+ "fil": {
+ "code": "fil",
+ "name": "філіппінÑька"
+ },
+ "fi": {
+ "code": "fi",
+ "name": "фінÑька"
+ },
+ "nl-BE": {
+ "code": "nl-BE",
+ "name": "фламандÑька"
+ },
+ "fr": {
+ "code": "fr",
+ "name": "французька"
+ },
+ "fur": {
+ "code": "fur",
+ "name": "фріульÑька"
+ },
+ "ff": {
+ "code": "ff",
+ "name": "фула"
+ },
+ "ha": {
+ "code": "ha",
+ "name": "хауÑа"
+ },
+ "hr": {
+ "code": "hr",
+ "name": "хорватÑька"
+ },
+ "tzm": {
+ "code": "tzm",
+ "name": "центральномароканÑька тамазіт"
+ },
+ "chr": {
+ "code": "chr",
+ "name": "черокі"
+ },
+ "cs": {
+ "code": "cs",
+ "name": "чеÑька"
+ },
+ "ksb": {
+ "code": "ksb",
+ "name": "шамбала"
+ },
+ "sv": {
+ "code": "sv",
+ "name": "шведÑька"
+ },
+ "sn": {
+ "code": "sn",
+ "name": "шона"
+ },
+ "yav": {
+ "code": "yav",
+ "name": "Ñнгбен"
+ },
+ "ja": {
+ "code": "ja",
+ "name": "ÑпонÑька"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/language/ur-IN.json b/library/intl/resources/language/ur-IN.json
new file mode 100644
index 000000000..e544eb36e
--- /dev/null
+++ b/library/intl/resources/language/ur-IN.json
@@ -0,0 +1,738 @@
+{
+ "ast": {
+ "code": "ast",
+ "name": "Asturian"
+ },
+ "bas": {
+ "code": "bas",
+ "name": "Basaa"
+ },
+ "ksh": {
+ "code": "ksh",
+ "name": "Colognian"
+ },
+ "ewo": {
+ "code": "ewo",
+ "name": "Ewondo"
+ },
+ "fur": {
+ "code": "fur",
+ "name": "Friulian"
+ },
+ "ff": {
+ "code": "ff",
+ "name": "Fulah"
+ },
+ "wae": {
+ "code": "wae",
+ "name": "Walser"
+ },
+ "yav": {
+ "code": "yav",
+ "name": "Yangben"
+ },
+ "ur": {
+ "code": "ur",
+ "name": "اردو"
+ },
+ "hy": {
+ "code": "hy",
+ "name": "ارمینی"
+ },
+ "uz": {
+ "code": "uz",
+ "name": "ازبیک"
+ },
+ "et": {
+ "code": "et",
+ "name": "اسٹونی"
+ },
+ "zgh": {
+ "code": "zgh",
+ "name": "اسٹینڈرڈ مراقشی تمازیقی"
+ },
+ "it": {
+ "code": "it",
+ "name": "اطالوی"
+ },
+ "agq": {
+ "code": "agq",
+ "name": "اغم"
+ },
+ "af": {
+ "code": "af",
+ "name": "اÙریقی"
+ },
+ "ak": {
+ "code": "ak",
+ "name": "اکان"
+ },
+ "sq": {
+ "code": "sq",
+ "name": "البانی"
+ },
+ "ebu": {
+ "code": "ebu",
+ "name": "امبو"
+ },
+ "en-US": {
+ "code": "en-US",
+ "name": "امریکی انگریزی"
+ },
+ "am": {
+ "code": "am",
+ "name": "امÛاری"
+ },
+ "id": {
+ "code": "id",
+ "name": "انڈونیثیائی"
+ },
+ "en": {
+ "code": "en",
+ "name": "انگریزی"
+ },
+ "or": {
+ "code": "or",
+ "name": "اورÙیا"
+ },
+ "eo": {
+ "code": "eo",
+ "name": "ایسپرانٹو"
+ },
+ "ee": {
+ "code": "ee",
+ "name": "ایو"
+ },
+ "az": {
+ "code": "az",
+ "name": "آزربائیجانی"
+ },
+ "zh-Hans": {
+ "code": "zh-Hans",
+ "name": "آسان چینی"
+ },
+ "de-AT": {
+ "code": "de-AT",
+ "name": "آسٹریائی جرمن"
+ },
+ "en-AU": {
+ "code": "en-AU",
+ "name": "آسٹریلیائی انگریزی"
+ },
+ "asa": {
+ "code": "asa",
+ "name": "آسو"
+ },
+ "is": {
+ "code": "is",
+ "name": "آئس لینڈک"
+ },
+ "ug": {
+ "code": "ug",
+ "name": "آئغور"
+ },
+ "ga": {
+ "code": "ga",
+ "name": "آئیرÙØ´"
+ },
+ "eu": {
+ "code": "eu",
+ "name": "باسکی"
+ },
+ "ksf": {
+ "code": "ksf",
+ "name": "باÙيا"
+ },
+ "hsb": {
+ "code": "hsb",
+ "name": "بالائی صوربی"
+ },
+ "bm": {
+ "code": "bm",
+ "name": "بامبرا"
+ },
+ "pt-BR": {
+ "code": "pt-BR",
+ "name": "برازیلی پرتگالی"
+ },
+ "en-GB": {
+ "code": "en-GB",
+ "name": "برطانوی انگریزی"
+ },
+ "my": {
+ "code": "my",
+ "name": "برمی"
+ },
+ "br": {
+ "code": "br",
+ "name": "بریٹن"
+ },
+ "bg": {
+ "code": "bg",
+ "name": "بلغاری"
+ },
+ "bn": {
+ "code": "bn",
+ "name": "بنگالی"
+ },
+ "brx": {
+ "code": "brx",
+ "name": "بوڈو"
+ },
+ "bs": {
+ "code": "bs",
+ "name": "بوسنی"
+ },
+ "be": {
+ "code": "be",
+ "name": "بیلاروسی"
+ },
+ "bez": {
+ "code": "bez",
+ "name": "بینا"
+ },
+ "pt": {
+ "code": "pt",
+ "name": "Ù¾Ùرتگالی"
+ },
+ "ps": {
+ "code": "ps",
+ "name": "پشتو"
+ },
+ "pa": {
+ "code": "pa",
+ "name": "پنجابی"
+ },
+ "pl": {
+ "code": "pl",
+ "name": "پولستانی"
+ },
+ "twq": {
+ "code": "twq",
+ "name": "تاساواق"
+ },
+ "bo": {
+ "code": "bo",
+ "name": "تبتی"
+ },
+ "tr": {
+ "code": "tr",
+ "name": "ترکی"
+ },
+ "shi": {
+ "code": "shi",
+ "name": "تشلحيت"
+ },
+ "ta": {
+ "code": "ta",
+ "name": "تمل"
+ },
+ "dav": {
+ "code": "dav",
+ "name": "تیتا"
+ },
+ "teo": {
+ "code": "teo",
+ "name": "تیسو"
+ },
+ "te": {
+ "code": "te",
+ "name": "تیلگو"
+ },
+ "th": {
+ "code": "th",
+ "name": "تھائی"
+ },
+ "ti": {
+ "code": "ti",
+ "name": "ٹگرینیا"
+ },
+ "to": {
+ "code": "to",
+ "name": "ٹونگن"
+ },
+ "ja": {
+ "code": "ja",
+ "name": "جاپانی"
+ },
+ "ka": {
+ "code": "ka",
+ "name": "جارجی"
+ },
+ "ar-001": {
+ "code": "ar-001",
+ "name": "جدید معیاری عربی"
+ },
+ "de": {
+ "code": "de",
+ "name": "جرمن"
+ },
+ "dyo": {
+ "code": "dyo",
+ "name": "جولا Ùونيا"
+ },
+ "chr": {
+ "code": "chr",
+ "name": "چیروکی"
+ },
+ "cs": {
+ "code": "cs",
+ "name": "چیک"
+ },
+ "zh": {
+ "code": "zh",
+ "name": "چینی"
+ },
+ "km": {
+ "code": "km",
+ "name": "خمیر"
+ },
+ "nl": {
+ "code": "nl",
+ "name": "ÚˆÚ†"
+ },
+ "da": {
+ "code": "da",
+ "name": "ڈینش"
+ },
+ "rwk": {
+ "code": "rwk",
+ "name": "روا"
+ },
+ "zh-Hant": {
+ "code": "zh-Hant",
+ "name": "روایتی چینی"
+ },
+ "ru": {
+ "code": "ru",
+ "name": "روسی"
+ },
+ "rm": {
+ "code": "rm",
+ "name": "رومانش"
+ },
+ "ro": {
+ "code": "ro",
+ "name": "رومانوی"
+ },
+ "rof": {
+ "code": "rof",
+ "name": "رومبو"
+ },
+ "rn": {
+ "code": "rn",
+ "name": "رونڈی"
+ },
+ "dje": {
+ "code": "dje",
+ "name": "زرمÛ"
+ },
+ "zu": {
+ "code": "zu",
+ "name": "زولو"
+ },
+ "dz": {
+ "code": "dz",
+ "name": "ژونگکھا"
+ },
+ "saq": {
+ "code": "saq",
+ "name": "سامبورو"
+ },
+ "sg": {
+ "code": "sg",
+ "name": "سانجو"
+ },
+ "sbp": {
+ "code": "sbp",
+ "name": "سانگو"
+ },
+ "gd": {
+ "code": "gd",
+ "name": "سکاٹ گیلÙÚ©"
+ },
+ "sk": {
+ "code": "sk",
+ "name": "سلوواک"
+ },
+ "sl": {
+ "code": "sl",
+ "name": "سلووینیائی"
+ },
+ "si": {
+ "code": "si",
+ "name": "سنÛالا"
+ },
+ "sw": {
+ "code": "sw",
+ "name": "سواحلی"
+ },
+ "xog": {
+ "code": "xog",
+ "name": "سوگا"
+ },
+ "sv": {
+ "code": "sv",
+ "name": "سویڈش"
+ },
+ "gsw": {
+ "code": "gsw",
+ "name": "سوئس جرمن"
+ },
+ "fr-CH": {
+ "code": "fr-CH",
+ "name": "سوئس Ùرینچ"
+ },
+ "de-CH": {
+ "code": "de-CH",
+ "name": "سوئس Ûائی جرمن"
+ },
+ "seh": {
+ "code": "seh",
+ "name": "سینا"
+ },
+ "ksb": {
+ "code": "ksb",
+ "name": "شامبالا"
+ },
+ "nd": {
+ "code": "nd",
+ "name": "شمالی دبیل"
+ },
+ "se": {
+ "code": "se",
+ "name": "شمالی سامی"
+ },
+ "sn": {
+ "code": "sn",
+ "name": "شونا"
+ },
+ "cgg": {
+ "code": "cgg",
+ "name": "شیغا"
+ },
+ "sr": {
+ "code": "sr",
+ "name": "صربی"
+ },
+ "so": {
+ "code": "so",
+ "name": "صومالی"
+ },
+ "he": {
+ "code": "he",
+ "name": "عبرانی"
+ },
+ "ar": {
+ "code": "ar",
+ "name": "عربی"
+ },
+ "fa": {
+ "code": "fa",
+ "name": "Ùارسی"
+ },
+ "fo": {
+ "code": "fo",
+ "name": "Ùارويز"
+ },
+ "fr": {
+ "code": "fr",
+ "name": "Ùرانسیسی"
+ },
+ "fil": {
+ "code": "fil",
+ "name": "Ùلیپینو"
+ },
+ "nl-BE": {
+ "code": "nl-BE",
+ "name": "Ùیلنڈری"
+ },
+ "fi": {
+ "code": "fi",
+ "name": "Ùینیش"
+ },
+ "kab": {
+ "code": "kab",
+ "name": "قبائلی"
+ },
+ "kk": {
+ "code": "kk",
+ "name": "قزاخ"
+ },
+ "kam": {
+ "code": "kam",
+ "name": "کامبا"
+ },
+ "swc": {
+ "code": "swc",
+ "name": "کانگو سواحلی"
+ },
+ "ca": {
+ "code": "ca",
+ "name": "کتالان"
+ },
+ "hr": {
+ "code": "hr",
+ "name": "کراتی"
+ },
+ "ky": {
+ "code": "ky",
+ "name": "کرغیزی"
+ },
+ "ks": {
+ "code": "ks",
+ "name": "کشمیری"
+ },
+ "kn": {
+ "code": "kn",
+ "name": "Ú©Ù†Ú‘"
+ },
+ "ko": {
+ "code": "ko",
+ "name": "کوریائی"
+ },
+ "ki": {
+ "code": "ki",
+ "name": "کیکویو"
+ },
+ "en-CA": {
+ "code": "en-CA",
+ "name": "کینیڈین انگریزی"
+ },
+ "fr-CA": {
+ "code": "fr-CA",
+ "name": "کینیڈین Ùرانسیسی"
+ },
+ "gl": {
+ "code": "gl",
+ "name": "گالیشیائی"
+ },
+ "gu": {
+ "code": "gu",
+ "name": "گجراتی"
+ },
+ "guz": {
+ "code": "guz",
+ "name": "گسی"
+ },
+ "lg": {
+ "code": "lg",
+ "name": "گینڈا"
+ },
+ "lag": {
+ "code": "lag",
+ "name": "لانگی"
+ },
+ "lo": {
+ "code": "lo",
+ "name": "لاؤ"
+ },
+ "lu": {
+ "code": "lu",
+ "name": "لبا-كاتانجا"
+ },
+ "lt": {
+ "code": "lt",
+ "name": "لتھÙواینین"
+ },
+ "lv": {
+ "code": "lv",
+ "name": "لٹويای"
+ },
+ "lb": {
+ "code": "lb",
+ "name": "لکسمبرگی"
+ },
+ "ln": {
+ "code": "ln",
+ "name": "Ù„Ùنگَلا"
+ },
+ "luo": {
+ "code": "luo",
+ "name": "لو"
+ },
+ "luy": {
+ "code": "luy",
+ "name": "لویا"
+ },
+ "dsb": {
+ "code": "dsb",
+ "name": "لوئر صوربی"
+ },
+ "mgh": {
+ "code": "mgh",
+ "name": "ماخاوا-ميتو"
+ },
+ "mas": {
+ "code": "mas",
+ "name": "ماسای"
+ },
+ "jmc": {
+ "code": "jmc",
+ "name": "ماشیم"
+ },
+ "ml": {
+ "code": "ml",
+ "name": "مالایالم"
+ },
+ "ms": {
+ "code": "ms",
+ "name": "مالائی"
+ },
+ "mt": {
+ "code": "mt",
+ "name": "مالٹی"
+ },
+ "ro-MD": {
+ "code": "ro-MD",
+ "name": "مالدووا"
+ },
+ "kde": {
+ "code": "kde",
+ "name": "ماكونده"
+ },
+ "mua": {
+ "code": "mua",
+ "name": "مڈدانگ"
+ },
+ "mr": {
+ "code": "mr",
+ "name": "مراٹهی"
+ },
+ "fy": {
+ "code": "fy",
+ "name": "مغربی Ùریسیائی"
+ },
+ "mk": {
+ "code": "mk",
+ "name": "مقدونیائی"
+ },
+ "mg": {
+ "code": "mg",
+ "name": "ملاگاسی"
+ },
+ "mn": {
+ "code": "mn",
+ "name": "منگؤلی"
+ },
+ "mfe": {
+ "code": "mfe",
+ "name": "موریسیین"
+ },
+ "mer": {
+ "code": "mer",
+ "name": "میرو"
+ },
+ "es-MX": {
+ "code": "es-MX",
+ "name": "میکسیکن Ûسپانوی"
+ },
+ "nb": {
+ "code": "nb",
+ "name": "نارویجین بوکمل"
+ },
+ "naq": {
+ "code": "naq",
+ "name": "ناما"
+ },
+ "jgo": {
+ "code": "jgo",
+ "name": "نگومبا"
+ },
+ "nn": {
+ "code": "nn",
+ "name": "نورویجینی نینورسک"
+ },
+ "nus": {
+ "code": "nus",
+ "name": "نویر"
+ },
+ "ne": {
+ "code": "ne",
+ "name": "نیپالی"
+ },
+ "nyn": {
+ "code": "nyn",
+ "name": "نینکول"
+ },
+ "vai": {
+ "code": "vai",
+ "name": "وائی"
+ },
+ "tzm": {
+ "code": "tzm",
+ "name": "وسطی اٹلس تمازغت"
+ },
+ "vun": {
+ "code": "vun",
+ "name": "ونجو"
+ },
+ "vi": {
+ "code": "vi",
+ "name": "ویتنامی"
+ },
+ "cy": {
+ "code": "cy",
+ "name": "ویلش"
+ },
+ "es": {
+ "code": "es",
+ "name": "Ûسپانوی"
+ },
+ "hi": {
+ "code": "hi",
+ "name": "Ûندی"
+ },
+ "hu": {
+ "code": "hu",
+ "name": "Ûنگیرین"
+ },
+ "ha": {
+ "code": "ha",
+ "name": "Ûؤسا"
+ },
+ "pt-PT": {
+ "code": "pt-PT",
+ "name": "یورپی پرتگالی"
+ },
+ "es-ES": {
+ "code": "es-ES",
+ "name": "یورپی Ûسپانوی"
+ },
+ "yo": {
+ "code": "yo",
+ "name": "یوروبا"
+ },
+ "uk": {
+ "code": "uk",
+ "name": "یوکرینیائی"
+ },
+ "el": {
+ "code": "el",
+ "name": "یونانی"
+ },
+ "kea": {
+ "code": "kea",
+ "name": "كابويرديانو"
+ },
+ "kl": {
+ "code": "kl",
+ "name": "كالاليست"
+ },
+ "kln": {
+ "code": "kln",
+ "name": "كالينجين"
+ },
+ "nmg": {
+ "code": "nmg",
+ "name": "كوايسو"
+ },
+ "khq": {
+ "code": "khq",
+ "name": "كويرا شيني"
+ },
+ "ses": {
+ "code": "ses",
+ "name": "كويرابورو سينی"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/language/ur.json b/library/intl/resources/language/ur.json
new file mode 100644
index 000000000..4011f8c57
--- /dev/null
+++ b/library/intl/resources/language/ur.json
@@ -0,0 +1,738 @@
+{
+ "ast": {
+ "code": "ast",
+ "name": "Asturian"
+ },
+ "bas": {
+ "code": "bas",
+ "name": "Basaa"
+ },
+ "ksh": {
+ "code": "ksh",
+ "name": "Colognian"
+ },
+ "ewo": {
+ "code": "ewo",
+ "name": "Ewondo"
+ },
+ "fur": {
+ "code": "fur",
+ "name": "Friulian"
+ },
+ "ff": {
+ "code": "ff",
+ "name": "Fulah"
+ },
+ "rwk": {
+ "code": "rwk",
+ "name": "Rwa"
+ },
+ "wae": {
+ "code": "wae",
+ "name": "Walser"
+ },
+ "yav": {
+ "code": "yav",
+ "name": "Yangben"
+ },
+ "hsb": {
+ "code": "hsb",
+ "name": "اپر سربیائی"
+ },
+ "ur": {
+ "code": "ur",
+ "name": "اردو"
+ },
+ "hy": {
+ "code": "hy",
+ "name": "ارمینی"
+ },
+ "uz": {
+ "code": "uz",
+ "name": "ازبیک"
+ },
+ "et": {
+ "code": "et",
+ "name": "اسٹونین"
+ },
+ "zgh": {
+ "code": "zgh",
+ "name": "اسٹینڈرڈ مغربی امازیقی"
+ },
+ "it": {
+ "code": "it",
+ "name": "اطالوی"
+ },
+ "agq": {
+ "code": "agq",
+ "name": "اغم"
+ },
+ "ak": {
+ "code": "ak",
+ "name": "اکان"
+ },
+ "sq": {
+ "code": "sq",
+ "name": "البانی"
+ },
+ "ebu": {
+ "code": "ebu",
+ "name": "امبو"
+ },
+ "en-US": {
+ "code": "en-US",
+ "name": "امریکی انگریزی"
+ },
+ "am": {
+ "code": "am",
+ "name": "امÛاری"
+ },
+ "id": {
+ "code": "id",
+ "name": "انڈونیثیائی"
+ },
+ "en": {
+ "code": "en",
+ "name": "انگریزی"
+ },
+ "or": {
+ "code": "or",
+ "name": "اورÙیا"
+ },
+ "vun": {
+ "code": "vun",
+ "name": "اونجو"
+ },
+ "eo": {
+ "code": "eo",
+ "name": "ایسپرانٹو"
+ },
+ "af": {
+ "code": "af",
+ "name": "ایÙریکانز"
+ },
+ "ee": {
+ "code": "ee",
+ "name": "ایو"
+ },
+ "az": {
+ "code": "az",
+ "name": "آزربائیجانی"
+ },
+ "de-AT": {
+ "code": "de-AT",
+ "name": "آسٹریائی جرمن"
+ },
+ "en-AU": {
+ "code": "en-AU",
+ "name": "آسٹریلیائی انگریزی"
+ },
+ "asa": {
+ "code": "asa",
+ "name": "آسو"
+ },
+ "is": {
+ "code": "is",
+ "name": "آئس لینڈک"
+ },
+ "ga": {
+ "code": "ga",
+ "name": "آئیرÙØ´"
+ },
+ "eu": {
+ "code": "eu",
+ "name": "باسکی"
+ },
+ "ksf": {
+ "code": "ksf",
+ "name": "باÙيا"
+ },
+ "pt-BR": {
+ "code": "pt-BR",
+ "name": "برازیلی پرتگالی"
+ },
+ "en-GB": {
+ "code": "en-GB",
+ "name": "برطانوی انگریزی"
+ },
+ "my": {
+ "code": "my",
+ "name": "برمی"
+ },
+ "br": {
+ "code": "br",
+ "name": "بریٹن"
+ },
+ "bg": {
+ "code": "bg",
+ "name": "بلغاری"
+ },
+ "bm": {
+ "code": "bm",
+ "name": "بمبارا"
+ },
+ "bn": {
+ "code": "bn",
+ "name": "بنگالی"
+ },
+ "brx": {
+ "code": "brx",
+ "name": "بوڈو"
+ },
+ "bs": {
+ "code": "bs",
+ "name": "بوسنی"
+ },
+ "be": {
+ "code": "be",
+ "name": "بیلاروسی"
+ },
+ "bez": {
+ "code": "bez",
+ "name": "بینا"
+ },
+ "pt": {
+ "code": "pt",
+ "name": "Ù¾Ùرتگالی"
+ },
+ "ps": {
+ "code": "ps",
+ "name": "پشتو"
+ },
+ "pa": {
+ "code": "pa",
+ "name": "پنجابی"
+ },
+ "pl": {
+ "code": "pl",
+ "name": "پولستانی"
+ },
+ "twq": {
+ "code": "twq",
+ "name": "تاساواق"
+ },
+ "dav": {
+ "code": "dav",
+ "name": "تائتا"
+ },
+ "bo": {
+ "code": "bo",
+ "name": "تبتی"
+ },
+ "tr": {
+ "code": "tr",
+ "name": "ترکی"
+ },
+ "shi": {
+ "code": "shi",
+ "name": "تشلحيت"
+ },
+ "ta": {
+ "code": "ta",
+ "name": "تمل"
+ },
+ "teo": {
+ "code": "teo",
+ "name": "تیسو"
+ },
+ "te": {
+ "code": "te",
+ "name": "تیلگو"
+ },
+ "th": {
+ "code": "th",
+ "name": "تھائی"
+ },
+ "ti": {
+ "code": "ti",
+ "name": "ٹگرینیا"
+ },
+ "to": {
+ "code": "to",
+ "name": "ٹونگن"
+ },
+ "ja": {
+ "code": "ja",
+ "name": "جاپانی"
+ },
+ "ka": {
+ "code": "ka",
+ "name": "جارجی"
+ },
+ "de": {
+ "code": "de",
+ "name": "جرمن"
+ },
+ "dyo": {
+ "code": "dyo",
+ "name": "جولا Ùونيا"
+ },
+ "chr": {
+ "code": "chr",
+ "name": "چیروکی"
+ },
+ "cs": {
+ "code": "cs",
+ "name": "چیک"
+ },
+ "cgg": {
+ "code": "cgg",
+ "name": "چیگا"
+ },
+ "zh": {
+ "code": "zh",
+ "name": "چینی"
+ },
+ "zh-Hans": {
+ "code": "zh-Hans",
+ "name": "چینی (آسان کردÛ)"
+ },
+ "km": {
+ "code": "km",
+ "name": "خمیر"
+ },
+ "nl": {
+ "code": "nl",
+ "name": "ÚˆÚ†"
+ },
+ "da": {
+ "code": "da",
+ "name": "ڈینش"
+ },
+ "dsb": {
+ "code": "dsb",
+ "name": "ذیلی سربیائی"
+ },
+ "zh-Hant": {
+ "code": "zh-Hant",
+ "name": "روایتی چینی"
+ },
+ "ru": {
+ "code": "ru",
+ "name": "روسی"
+ },
+ "rm": {
+ "code": "rm",
+ "name": "رومانش"
+ },
+ "rof": {
+ "code": "rof",
+ "name": "رومبو"
+ },
+ "ro": {
+ "code": "ro",
+ "name": "رومنی"
+ },
+ "rn": {
+ "code": "rn",
+ "name": "رونڈی"
+ },
+ "dje": {
+ "code": "dje",
+ "name": "زرما"
+ },
+ "zu": {
+ "code": "zu",
+ "name": "زولو"
+ },
+ "dz": {
+ "code": "dz",
+ "name": "ژونگکھا"
+ },
+ "saq": {
+ "code": "saq",
+ "name": "سامبورو"
+ },
+ "sg": {
+ "code": "sg",
+ "name": "سانغو"
+ },
+ "sbp": {
+ "code": "sbp",
+ "name": "سانگو"
+ },
+ "gd": {
+ "code": "gd",
+ "name": "سکاٹ گیلÙÚ©"
+ },
+ "sk": {
+ "code": "sk",
+ "name": "سلوواک"
+ },
+ "sl": {
+ "code": "sl",
+ "name": "سلووینیائی"
+ },
+ "si": {
+ "code": "si",
+ "name": "سنÛالا"
+ },
+ "sw": {
+ "code": "sw",
+ "name": "سواحلی"
+ },
+ "xog": {
+ "code": "xog",
+ "name": "سوگا"
+ },
+ "sv": {
+ "code": "sv",
+ "name": "سویڈش"
+ },
+ "gsw": {
+ "code": "gsw",
+ "name": "سوئس جرمن"
+ },
+ "fr-CH": {
+ "code": "fr-CH",
+ "name": "سوئس Ùرینچ"
+ },
+ "de-CH": {
+ "code": "de-CH",
+ "name": "سوئس Ûائی جرمن"
+ },
+ "seh": {
+ "code": "seh",
+ "name": "سینا"
+ },
+ "tzm": {
+ "code": "tzm",
+ "name": "سینٹرل ایٹلس ٹمازائٹ"
+ },
+ "ksb": {
+ "code": "ksb",
+ "name": "شامبالا"
+ },
+ "nd": {
+ "code": "nd",
+ "name": "شمالی دبیل"
+ },
+ "se": {
+ "code": "se",
+ "name": "شمالی سامی"
+ },
+ "sn": {
+ "code": "sn",
+ "name": "شونا"
+ },
+ "sr": {
+ "code": "sr",
+ "name": "صربی"
+ },
+ "so": {
+ "code": "so",
+ "name": "صومالی"
+ },
+ "he": {
+ "code": "he",
+ "name": "عبرانی"
+ },
+ "ar": {
+ "code": "ar",
+ "name": "عربی"
+ },
+ "fa": {
+ "code": "fa",
+ "name": "Ùارسی"
+ },
+ "fr": {
+ "code": "fr",
+ "name": "Ùرانسیسی"
+ },
+ "fil": {
+ "code": "fil",
+ "name": "Ùلیپینو"
+ },
+ "nl-BE": {
+ "code": "nl-BE",
+ "name": "ÙلیمÙØ´"
+ },
+ "fo": {
+ "code": "fo",
+ "name": "Ùیروئیز"
+ },
+ "fi": {
+ "code": "fi",
+ "name": "Ùینیش"
+ },
+ "kab": {
+ "code": "kab",
+ "name": "قبائلی"
+ },
+ "kk": {
+ "code": "kk",
+ "name": "قزاخ"
+ },
+ "ca": {
+ "code": "ca",
+ "name": "کاٹالانین"
+ },
+ "kam": {
+ "code": "kam",
+ "name": "کامبا"
+ },
+ "swc": {
+ "code": "swc",
+ "name": "کانگو سواحلی"
+ },
+ "hr": {
+ "code": "hr",
+ "name": "کراتی"
+ },
+ "ky": {
+ "code": "ky",
+ "name": "کرغیزی"
+ },
+ "ks": {
+ "code": "ks",
+ "name": "کشمیری"
+ },
+ "kn": {
+ "code": "kn",
+ "name": "کنّاڈا"
+ },
+ "ko": {
+ "code": "ko",
+ "name": "کوریائی"
+ },
+ "ki": {
+ "code": "ki",
+ "name": "کیکو"
+ },
+ "en-CA": {
+ "code": "en-CA",
+ "name": "کینیڈین انگریزی"
+ },
+ "fr-CA": {
+ "code": "fr-CA",
+ "name": "کینیڈین Ùرانسیسی"
+ },
+ "gl": {
+ "code": "gl",
+ "name": "گالیشیائی"
+ },
+ "gu": {
+ "code": "gu",
+ "name": "گجراتی"
+ },
+ "guz": {
+ "code": "guz",
+ "name": "گسی"
+ },
+ "jgo": {
+ "code": "jgo",
+ "name": "گومبا"
+ },
+ "lg": {
+ "code": "lg",
+ "name": "گینڈا"
+ },
+ "lag": {
+ "code": "lag",
+ "name": "لانگی"
+ },
+ "lo": {
+ "code": "lo",
+ "name": "لاؤ"
+ },
+ "lu": {
+ "code": "lu",
+ "name": "لبا-كاتانجا"
+ },
+ "lt": {
+ "code": "lt",
+ "name": "لتھÙواینین"
+ },
+ "lb": {
+ "code": "lb",
+ "name": "لگژمبرگ کا باشندÛ"
+ },
+ "ln": {
+ "code": "ln",
+ "name": "Ù„Ùنگَلا"
+ },
+ "luo": {
+ "code": "luo",
+ "name": "لو"
+ },
+ "luy": {
+ "code": "luy",
+ "name": "لویا"
+ },
+ "lv": {
+ "code": "lv",
+ "name": "لیٹوین"
+ },
+ "mgh": {
+ "code": "mgh",
+ "name": "ماخاوا-ميتو"
+ },
+ "ar-001": {
+ "code": "ar-001",
+ "name": "ماڈرن اسٹینڈرڈ عربی"
+ },
+ "mas": {
+ "code": "mas",
+ "name": "ماسای"
+ },
+ "jmc": {
+ "code": "jmc",
+ "name": "ماشیم"
+ },
+ "ml": {
+ "code": "ml",
+ "name": "مالایالم"
+ },
+ "ms": {
+ "code": "ms",
+ "name": "مالائی"
+ },
+ "mt": {
+ "code": "mt",
+ "name": "مالٹی"
+ },
+ "ro-MD": {
+ "code": "ro-MD",
+ "name": "مالدووا"
+ },
+ "kde": {
+ "code": "kde",
+ "name": "ماكونده"
+ },
+ "mr": {
+ "code": "mr",
+ "name": "مراٹهی"
+ },
+ "fy": {
+ "code": "fy",
+ "name": "مغربی Ùریسیئن"
+ },
+ "mk": {
+ "code": "mk",
+ "name": "مقدونیائی"
+ },
+ "mg": {
+ "code": "mg",
+ "name": "ملاگاسی"
+ },
+ "mua": {
+ "code": "mua",
+ "name": "منڈانگ"
+ },
+ "mn": {
+ "code": "mn",
+ "name": "منگؤلی"
+ },
+ "mfe": {
+ "code": "mfe",
+ "name": "موریسیین"
+ },
+ "mer": {
+ "code": "mer",
+ "name": "میرو"
+ },
+ "es-MX": {
+ "code": "es-MX",
+ "name": "میکسیکن Ûسپانوی"
+ },
+ "nb": {
+ "code": "nb",
+ "name": "نارویجین بوکمل"
+ },
+ "naq": {
+ "code": "naq",
+ "name": "ناما"
+ },
+ "nn": {
+ "code": "nn",
+ "name": "نورویجینی نینورسک"
+ },
+ "nus": {
+ "code": "nus",
+ "name": "نویر"
+ },
+ "ne": {
+ "code": "ne",
+ "name": "نیپالی"
+ },
+ "nyn": {
+ "code": "nyn",
+ "name": "نینکول"
+ },
+ "vai": {
+ "code": "vai",
+ "name": "وائی"
+ },
+ "vi": {
+ "code": "vi",
+ "name": "ویتنامی"
+ },
+ "cy": {
+ "code": "cy",
+ "name": "ویلش"
+ },
+ "es": {
+ "code": "es",
+ "name": "Ûسپانوی"
+ },
+ "hi": {
+ "code": "hi",
+ "name": "Ûندی"
+ },
+ "hu": {
+ "code": "hu",
+ "name": "Ûنگیرین"
+ },
+ "ha": {
+ "code": "ha",
+ "name": "Ûؤسا"
+ },
+ "pt-PT": {
+ "code": "pt-PT",
+ "name": "یورپی پرتگالی"
+ },
+ "es-ES": {
+ "code": "es-ES",
+ "name": "یورپی Ûسپانوی"
+ },
+ "yo": {
+ "code": "yo",
+ "name": "یوروبا"
+ },
+ "uk": {
+ "code": "uk",
+ "name": "یوکرینیائی"
+ },
+ "el": {
+ "code": "el",
+ "name": "یونانی"
+ },
+ "ug": {
+ "code": "ug",
+ "name": "یوئگÛر"
+ },
+ "kea": {
+ "code": "kea",
+ "name": "كابويرديانو"
+ },
+ "kl": {
+ "code": "kl",
+ "name": "كالاليست"
+ },
+ "kln": {
+ "code": "kln",
+ "name": "كالينجين"
+ },
+ "nmg": {
+ "code": "nmg",
+ "name": "كوايسو"
+ },
+ "khq": {
+ "code": "khq",
+ "name": "كويرا شيني"
+ },
+ "ses": {
+ "code": "ses",
+ "name": "كويرابورو سينی"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/language/uz-Cyrl.json b/library/intl/resources/language/uz-Cyrl.json
new file mode 100644
index 000000000..28f35748d
--- /dev/null
+++ b/library/intl/resources/language/uz-Cyrl.json
@@ -0,0 +1,738 @@
+{
+ "agq": {
+ "code": "agq",
+ "name": "Aghem"
+ },
+ "ak": {
+ "code": "ak",
+ "name": "Akan"
+ },
+ "ar-001": {
+ "code": "ar-001",
+ "name": "ar_001"
+ },
+ "ast": {
+ "code": "ast",
+ "name": "Asturian"
+ },
+ "asa": {
+ "code": "asa",
+ "name": "Asu"
+ },
+ "ksf": {
+ "code": "ksf",
+ "name": "Bafia"
+ },
+ "bm": {
+ "code": "bm",
+ "name": "Bambara"
+ },
+ "bas": {
+ "code": "bas",
+ "name": "Basaa"
+ },
+ "bez": {
+ "code": "bez",
+ "name": "Bena"
+ },
+ "brx": {
+ "code": "brx",
+ "name": "Bodo"
+ },
+ "br": {
+ "code": "br",
+ "name": "Breton"
+ },
+ "tzm": {
+ "code": "tzm",
+ "name": "Central Atlas Tamazight"
+ },
+ "chr": {
+ "code": "chr",
+ "name": "Cherokee"
+ },
+ "cgg": {
+ "code": "cgg",
+ "name": "Chiga"
+ },
+ "ksh": {
+ "code": "ksh",
+ "name": "Colognian"
+ },
+ "swc": {
+ "code": "swc",
+ "name": "Congo Swahili"
+ },
+ "de-AT": {
+ "code": "de-AT",
+ "name": "de_AT"
+ },
+ "de-CH": {
+ "code": "de-CH",
+ "name": "de_CH"
+ },
+ "dz": {
+ "code": "dz",
+ "name": "Dzongkha"
+ },
+ "ebu": {
+ "code": "ebu",
+ "name": "Embu"
+ },
+ "en-AU": {
+ "code": "en-AU",
+ "name": "en_AU"
+ },
+ "en-CA": {
+ "code": "en-CA",
+ "name": "en_CA"
+ },
+ "en-GB": {
+ "code": "en-GB",
+ "name": "en_GB"
+ },
+ "en-US": {
+ "code": "en-US",
+ "name": "en_US"
+ },
+ "es-ES": {
+ "code": "es-ES",
+ "name": "es_ES"
+ },
+ "es-MX": {
+ "code": "es-MX",
+ "name": "es_MX"
+ },
+ "ee": {
+ "code": "ee",
+ "name": "Ewe"
+ },
+ "ewo": {
+ "code": "ewo",
+ "name": "Ewondo"
+ },
+ "fr-CA": {
+ "code": "fr-CA",
+ "name": "fr_CA"
+ },
+ "fr-CH": {
+ "code": "fr-CH",
+ "name": "fr_CH"
+ },
+ "fur": {
+ "code": "fur",
+ "name": "Friulian"
+ },
+ "ff": {
+ "code": "ff",
+ "name": "Fulah"
+ },
+ "lg": {
+ "code": "lg",
+ "name": "Ganda"
+ },
+ "guz": {
+ "code": "guz",
+ "name": "Gusii"
+ },
+ "dyo": {
+ "code": "dyo",
+ "name": "Jola-Fonyi"
+ },
+ "kea": {
+ "code": "kea",
+ "name": "Kabuverdianu"
+ },
+ "kab": {
+ "code": "kab",
+ "name": "Kabyle"
+ },
+ "kl": {
+ "code": "kl",
+ "name": "Kalaallisut"
+ },
+ "kln": {
+ "code": "kln",
+ "name": "Kalenjin"
+ },
+ "kam": {
+ "code": "kam",
+ "name": "Kamba"
+ },
+ "ki": {
+ "code": "ki",
+ "name": "Kikuyu"
+ },
+ "khq": {
+ "code": "khq",
+ "name": "Koyra Chiini"
+ },
+ "ses": {
+ "code": "ses",
+ "name": "Koyraboro Senni"
+ },
+ "nmg": {
+ "code": "nmg",
+ "name": "Kwasio"
+ },
+ "lag": {
+ "code": "lag",
+ "name": "Langi"
+ },
+ "ln": {
+ "code": "ln",
+ "name": "Lingala"
+ },
+ "dsb": {
+ "code": "dsb",
+ "name": "Lower Sorbian"
+ },
+ "lu": {
+ "code": "lu",
+ "name": "Luba-Katanga"
+ },
+ "luo": {
+ "code": "luo",
+ "name": "Luo"
+ },
+ "luy": {
+ "code": "luy",
+ "name": "Luyia"
+ },
+ "jmc": {
+ "code": "jmc",
+ "name": "Machame"
+ },
+ "mgh": {
+ "code": "mgh",
+ "name": "Makhuwa-Meetto"
+ },
+ "kde": {
+ "code": "kde",
+ "name": "Makonde"
+ },
+ "mas": {
+ "code": "mas",
+ "name": "Masai"
+ },
+ "mer": {
+ "code": "mer",
+ "name": "Meru"
+ },
+ "mn": {
+ "code": "mn",
+ "name": "Mongolian"
+ },
+ "mfe": {
+ "code": "mfe",
+ "name": "Morisyen"
+ },
+ "mua": {
+ "code": "mua",
+ "name": "Mundang"
+ },
+ "naq": {
+ "code": "naq",
+ "name": "Nama"
+ },
+ "jgo": {
+ "code": "jgo",
+ "name": "Ngomba"
+ },
+ "nd": {
+ "code": "nd",
+ "name": "North Ndebele"
+ },
+ "se": {
+ "code": "se",
+ "name": "Northern Sami"
+ },
+ "nus": {
+ "code": "nus",
+ "name": "Nuer"
+ },
+ "nyn": {
+ "code": "nyn",
+ "name": "Nyankole"
+ },
+ "pt-BR": {
+ "code": "pt-BR",
+ "name": "pt_BR"
+ },
+ "pt-PT": {
+ "code": "pt-PT",
+ "name": "pt_PT"
+ },
+ "ro-MD": {
+ "code": "ro-MD",
+ "name": "ro_MD"
+ },
+ "rof": {
+ "code": "rof",
+ "name": "Rombo"
+ },
+ "rn": {
+ "code": "rn",
+ "name": "Rundi"
+ },
+ "rwk": {
+ "code": "rwk",
+ "name": "Rwa"
+ },
+ "saq": {
+ "code": "saq",
+ "name": "Samburu"
+ },
+ "sg": {
+ "code": "sg",
+ "name": "Sango"
+ },
+ "sbp": {
+ "code": "sbp",
+ "name": "Sangu"
+ },
+ "gd": {
+ "code": "gd",
+ "name": "Scottish Gaelic"
+ },
+ "seh": {
+ "code": "seh",
+ "name": "Sena"
+ },
+ "ksb": {
+ "code": "ksb",
+ "name": "Shambala"
+ },
+ "sn": {
+ "code": "sn",
+ "name": "Shona"
+ },
+ "xog": {
+ "code": "xog",
+ "name": "Soga"
+ },
+ "shi": {
+ "code": "shi",
+ "name": "Tachelhit"
+ },
+ "dav": {
+ "code": "dav",
+ "name": "Taita"
+ },
+ "twq": {
+ "code": "twq",
+ "name": "Tasawaq"
+ },
+ "teo": {
+ "code": "teo",
+ "name": "Teso"
+ },
+ "hsb": {
+ "code": "hsb",
+ "name": "Upper Sorbian"
+ },
+ "vai": {
+ "code": "vai",
+ "name": "Vai"
+ },
+ "vun": {
+ "code": "vun",
+ "name": "Vunjo"
+ },
+ "wae": {
+ "code": "wae",
+ "name": "Walser"
+ },
+ "yav": {
+ "code": "yav",
+ "name": "Yangben"
+ },
+ "dje": {
+ "code": "dje",
+ "name": "Zarma"
+ },
+ "zh-Hans": {
+ "code": "zh-Hans",
+ "name": "zh_Hans"
+ },
+ "zh-Hant": {
+ "code": "zh-Hant",
+ "name": "zh_Hant"
+ },
+ "sq": {
+ "code": "sq",
+ "name": "Ðлбанча"
+ },
+ "am": {
+ "code": "am",
+ "name": "Ðмхарча"
+ },
+ "ar": {
+ "code": "ar",
+ "name": "Ðрабча"
+ },
+ "hy": {
+ "code": "hy",
+ "name": "Ðрманча"
+ },
+ "af": {
+ "code": "af",
+ "name": "Ðфриканча"
+ },
+ "eu": {
+ "code": "eu",
+ "name": "БаÑкча"
+ },
+ "be": {
+ "code": "be",
+ "name": "БеларуÑча"
+ },
+ "bn": {
+ "code": "bn",
+ "name": "Бенгалча"
+ },
+ "my": {
+ "code": "my",
+ "name": "Бирманча"
+ },
+ "bg": {
+ "code": "bg",
+ "name": "Болгарча"
+ },
+ "bs": {
+ "code": "bs",
+ "name": "БоÑниÑча"
+ },
+ "hu": {
+ "code": "hu",
+ "name": "Венгрча"
+ },
+ "vi": {
+ "code": "vi",
+ "name": "Вьетнамча"
+ },
+ "gl": {
+ "code": "gl",
+ "name": "Галицийча"
+ },
+ "nl": {
+ "code": "nl",
+ "name": "Голландча"
+ },
+ "el": {
+ "code": "el",
+ "name": "Грекча"
+ },
+ "ka": {
+ "code": "ka",
+ "name": "Грузинча"
+ },
+ "gu": {
+ "code": "gu",
+ "name": "Гужарати"
+ },
+ "fy": {
+ "code": "fy",
+ "name": "Ғарбий фризианча"
+ },
+ "da": {
+ "code": "da",
+ "name": "ДаниÑча"
+ },
+ "zu": {
+ "code": "zu",
+ "name": "Зулу"
+ },
+ "he": {
+ "code": "he",
+ "name": "Иброний"
+ },
+ "en": {
+ "code": "en",
+ "name": "Инглизча"
+ },
+ "id": {
+ "code": "id",
+ "name": "ИндонезиÑча"
+ },
+ "ga": {
+ "code": "ga",
+ "name": "Ирландча"
+ },
+ "is": {
+ "code": "is",
+ "name": "ИÑландча"
+ },
+ "es": {
+ "code": "es",
+ "name": "ИÑпанча"
+ },
+ "it": {
+ "code": "it",
+ "name": "ИталÑнча"
+ },
+ "yo": {
+ "code": "yo",
+ "name": "Йоруба"
+ },
+ "kn": {
+ "code": "kn",
+ "name": "Каннада"
+ },
+ "ca": {
+ "code": "ca",
+ "name": "Каталанча"
+ },
+ "ks": {
+ "code": "ks",
+ "name": "Кашмирча"
+ },
+ "ko": {
+ "code": "ko",
+ "name": "КорейÑча"
+ },
+ "ky": {
+ "code": "ky",
+ "name": "Қирғизча"
+ },
+ "kk": {
+ "code": "kk",
+ "name": "Қозоқча"
+ },
+ "lo": {
+ "code": "lo",
+ "name": "Лао"
+ },
+ "lv": {
+ "code": "lv",
+ "name": "Латишча"
+ },
+ "lt": {
+ "code": "lt",
+ "name": "Литвача"
+ },
+ "lb": {
+ "code": "lb",
+ "name": "ЛюкÑембургча"
+ },
+ "mk": {
+ "code": "mk",
+ "name": "Македонча"
+ },
+ "mg": {
+ "code": "mg",
+ "name": "МалагаÑи"
+ },
+ "ml": {
+ "code": "ml",
+ "name": "Малайалам"
+ },
+ "ms": {
+ "code": "ms",
+ "name": "Малайча"
+ },
+ "mt": {
+ "code": "mt",
+ "name": "Мальтача"
+ },
+ "mr": {
+ "code": "mr",
+ "name": "Марати"
+ },
+ "ne": {
+ "code": "ne",
+ "name": "Ðепалча"
+ },
+ "nb": {
+ "code": "nb",
+ "name": "Ðорвегча Бокмал"
+ },
+ "nn": {
+ "code": "nn",
+ "name": "Ðорвегча ÐинорÑк"
+ },
+ "az": {
+ "code": "az",
+ "name": "Озарбайжонча"
+ },
+ "de": {
+ "code": "de",
+ "name": "Олмонча"
+ },
+ "or": {
+ "code": "or",
+ "name": "ОриÑ"
+ },
+ "pa": {
+ "code": "pa",
+ "name": "Панжобча"
+ },
+ "pl": {
+ "code": "pl",
+ "name": "ПолÑкча"
+ },
+ "pt": {
+ "code": "pt",
+ "name": "Португалча"
+ },
+ "ps": {
+ "code": "ps",
+ "name": "Пушту"
+ },
+ "rm": {
+ "code": "rm",
+ "name": "Романча"
+ },
+ "ro": {
+ "code": "ro",
+ "name": "Руминча"
+ },
+ "ru": {
+ "code": "ru",
+ "name": "РуÑча"
+ },
+ "sr": {
+ "code": "sr",
+ "name": "Сербча"
+ },
+ "si": {
+ "code": "si",
+ "name": "Синхала"
+ },
+ "sk": {
+ "code": "sk",
+ "name": "Словакча"
+ },
+ "sl": {
+ "code": "sl",
+ "name": "Словенча"
+ },
+ "so": {
+ "code": "so",
+ "name": "Сомалича"
+ },
+ "zgh": {
+ "code": "zgh",
+ "name": "Стандарт Марокаш Тамазит"
+ },
+ "sw": {
+ "code": "sw",
+ "name": "Суахили"
+ },
+ "th": {
+ "code": "th",
+ "name": "Тайча"
+ },
+ "ta": {
+ "code": "ta",
+ "name": "Тамилча"
+ },
+ "te": {
+ "code": "te",
+ "name": "Телугу"
+ },
+ "bo": {
+ "code": "bo",
+ "name": "Тибетча"
+ },
+ "ti": {
+ "code": "ti",
+ "name": "ТигриньÑ"
+ },
+ "to": {
+ "code": "to",
+ "name": "Тонгоча"
+ },
+ "tr": {
+ "code": "tr",
+ "name": "Туркча"
+ },
+ "ug": {
+ "code": "ug",
+ "name": "Уйғурча"
+ },
+ "uk": {
+ "code": "uk",
+ "name": "Украинча"
+ },
+ "ur": {
+ "code": "ur",
+ "name": "Урду"
+ },
+ "cy": {
+ "code": "cy",
+ "name": "УÑлÑча"
+ },
+ "uz": {
+ "code": "uz",
+ "name": "Ўзбек"
+ },
+ "fo": {
+ "code": "fo",
+ "name": "ФарÑрча"
+ },
+ "fil": {
+ "code": "fil",
+ "name": "Филипино"
+ },
+ "fi": {
+ "code": "fi",
+ "name": "Финча"
+ },
+ "nl-BE": {
+ "code": "nl-BE",
+ "name": "Фламандча"
+ },
+ "fa": {
+ "code": "fa",
+ "name": "ФорÑча"
+ },
+ "fr": {
+ "code": "fr",
+ "name": "Французча"
+ },
+ "ha": {
+ "code": "ha",
+ "name": "ХауÑа"
+ },
+ "zh": {
+ "code": "zh",
+ "name": "Хитойча"
+ },
+ "km": {
+ "code": "km",
+ "name": "Хмерча"
+ },
+ "hr": {
+ "code": "hr",
+ "name": "Хорватча"
+ },
+ "hi": {
+ "code": "hi",
+ "name": "Ҳиндча"
+ },
+ "cs": {
+ "code": "cs",
+ "name": "Чехча"
+ },
+ "sv": {
+ "code": "sv",
+ "name": "Шведча"
+ },
+ "gsw": {
+ "code": "gsw",
+ "name": "Ð¨Ð²ÐµÐ¹Ñ†Ð°Ñ€Ð¸Ñ Ð½ÐµÐ¼Ð¸ÑчаÑи"
+ },
+ "eo": {
+ "code": "eo",
+ "name": "ЭÑперанто"
+ },
+ "et": {
+ "code": "et",
+ "name": "ЭÑтонча"
+ },
+ "ja": {
+ "code": "ja",
+ "name": "Японча"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/language/uz.json b/library/intl/resources/language/uz.json
new file mode 100644
index 000000000..12114dc68
--- /dev/null
+++ b/library/intl/resources/language/uz.json
@@ -0,0 +1,738 @@
+{
+ "af": {
+ "code": "af",
+ "name": "afrikancha"
+ },
+ "agq": {
+ "code": "agq",
+ "name": "ag‘emcha"
+ },
+ "ak": {
+ "code": "ak",
+ "name": "akancha"
+ },
+ "sq": {
+ "code": "sq",
+ "name": "albancha"
+ },
+ "am": {
+ "code": "am",
+ "name": "amxarcha"
+ },
+ "zh-Hant": {
+ "code": "zh-Hant",
+ "name": "anʼanaviy xitoycha"
+ },
+ "ar": {
+ "code": "ar",
+ "name": "arabcha"
+ },
+ "hy": {
+ "code": "hy",
+ "name": "armancha"
+ },
+ "ast": {
+ "code": "ast",
+ "name": "Asturian"
+ },
+ "asa": {
+ "code": "asa",
+ "name": "asucha"
+ },
+ "en-AU": {
+ "code": "en-AU",
+ "name": "Avstraliya inglizchasi"
+ },
+ "de-AT": {
+ "code": "de-AT",
+ "name": "Avstriya olmonchasi"
+ },
+ "ksf": {
+ "code": "ksf",
+ "name": "bafiycha"
+ },
+ "bm": {
+ "code": "bm",
+ "name": "bambarcha"
+ },
+ "bas": {
+ "code": "bas",
+ "name": "Basaa"
+ },
+ "eu": {
+ "code": "eu",
+ "name": "baskcha"
+ },
+ "be": {
+ "code": "be",
+ "name": "belaruscha"
+ },
+ "bez": {
+ "code": "bez",
+ "name": "benacha"
+ },
+ "bn": {
+ "code": "bn",
+ "name": "bengalcha"
+ },
+ "my": {
+ "code": "my",
+ "name": "birmancha"
+ },
+ "brx": {
+ "code": "brx",
+ "name": "bodocha"
+ },
+ "bg": {
+ "code": "bg",
+ "name": "bolgarcha"
+ },
+ "bs": {
+ "code": "bs",
+ "name": "bosniycha"
+ },
+ "pt-BR": {
+ "code": "pt-BR",
+ "name": "Braziliya portugalchasi"
+ },
+ "br": {
+ "code": "br",
+ "name": "bretoncha"
+ },
+ "en-GB": {
+ "code": "en-GB",
+ "name": "Britaniya inglizchasi"
+ },
+ "chr": {
+ "code": "chr",
+ "name": "cherokcha"
+ },
+ "cs": {
+ "code": "cs",
+ "name": "chexcha"
+ },
+ "cgg": {
+ "code": "cgg",
+ "name": "chigcha"
+ },
+ "ksh": {
+ "code": "ksh",
+ "name": "Colognian"
+ },
+ "da": {
+ "code": "da",
+ "name": "datcha"
+ },
+ "ebu": {
+ "code": "ebu",
+ "name": "embucha"
+ },
+ "en-US": {
+ "code": "en-US",
+ "name": "en_US"
+ },
+ "eo": {
+ "code": "eo",
+ "name": "esperantocha"
+ },
+ "et": {
+ "code": "et",
+ "name": "estoncha"
+ },
+ "ewo": {
+ "code": "ewo",
+ "name": "Ewondo"
+ },
+ "fo": {
+ "code": "fo",
+ "name": "farercha"
+ },
+ "fil": {
+ "code": "fil",
+ "name": "filipincha"
+ },
+ "fi": {
+ "code": "fi",
+ "name": "fincha"
+ },
+ "nl-BE": {
+ "code": "nl-BE",
+ "name": "flamandcha"
+ },
+ "fa": {
+ "code": "fa",
+ "name": "forscha"
+ },
+ "fr": {
+ "code": "fr",
+ "name": "fransuzcha"
+ },
+ "fur": {
+ "code": "fur",
+ "name": "Friulian"
+ },
+ "ff": {
+ "code": "ff",
+ "name": "Fulah"
+ },
+ "gl": {
+ "code": "gl",
+ "name": "galitsiycha"
+ },
+ "lg": {
+ "code": "lg",
+ "name": "gandcha"
+ },
+ "fy": {
+ "code": "fy",
+ "name": "gʻarbiy friziancha"
+ },
+ "nl": {
+ "code": "nl",
+ "name": "gollandcha"
+ },
+ "ka": {
+ "code": "ka",
+ "name": "gruzincha"
+ },
+ "gu": {
+ "code": "gu",
+ "name": "gujoratcha"
+ },
+ "guz": {
+ "code": "guz",
+ "name": "guzcha"
+ },
+ "hi": {
+ "code": "hi",
+ "name": "hindcha"
+ },
+ "he": {
+ "code": "he",
+ "name": "ibroniy"
+ },
+ "id": {
+ "code": "id",
+ "name": "indoneyzcha"
+ },
+ "en": {
+ "code": "en",
+ "name": "inglizcha"
+ },
+ "ga": {
+ "code": "ga",
+ "name": "irlandcha"
+ },
+ "is": {
+ "code": "is",
+ "name": "islandcha"
+ },
+ "es": {
+ "code": "es",
+ "name": "ispancha"
+ },
+ "it": {
+ "code": "it",
+ "name": "italyancha"
+ },
+ "ee": {
+ "code": "ee",
+ "name": "ivicha"
+ },
+ "kea": {
+ "code": "kea",
+ "name": "kabuverdiancha"
+ },
+ "kl": {
+ "code": "kl",
+ "name": "kalallisutcha"
+ },
+ "kln": {
+ "code": "kln",
+ "name": "kalenjincha"
+ },
+ "kam": {
+ "code": "kam",
+ "name": "kambcha"
+ },
+ "fr-CA": {
+ "code": "fr-CA",
+ "name": "Kanada fransuzchasi"
+ },
+ "en-CA": {
+ "code": "en-CA",
+ "name": "Kanada inglizchasi"
+ },
+ "kn": {
+ "code": "kn",
+ "name": "kannadcha"
+ },
+ "ks": {
+ "code": "ks",
+ "name": "kashmircha"
+ },
+ "ca": {
+ "code": "ca",
+ "name": "katalancha"
+ },
+ "ki": {
+ "code": "ki",
+ "name": "kikuycha"
+ },
+ "swc": {
+ "code": "swc",
+ "name": "kongo svahiliycha"
+ },
+ "ko": {
+ "code": "ko",
+ "name": "koreyscha"
+ },
+ "ses": {
+ "code": "ses",
+ "name": "koryaboro senniycha"
+ },
+ "nmg": {
+ "code": "nmg",
+ "name": "kvaziycha"
+ },
+ "lag": {
+ "code": "lag",
+ "name": "langcha"
+ },
+ "lo": {
+ "code": "lo",
+ "name": "laoscha"
+ },
+ "lv": {
+ "code": "lv",
+ "name": "latishcha"
+ },
+ "ln": {
+ "code": "ln",
+ "name": "lingalcha"
+ },
+ "lt": {
+ "code": "lt",
+ "name": "litovcha"
+ },
+ "lu": {
+ "code": "lu",
+ "name": "luba-katangcha"
+ },
+ "luo": {
+ "code": "luo",
+ "name": "luocha"
+ },
+ "luy": {
+ "code": "luy",
+ "name": "luycha"
+ },
+ "lb": {
+ "code": "lb",
+ "name": "lyuksemburgcha"
+ },
+ "jmc": {
+ "code": "jmc",
+ "name": "machamcha"
+ },
+ "mk": {
+ "code": "mk",
+ "name": "makedoncha"
+ },
+ "mgh": {
+ "code": "mgh",
+ "name": "makuva-mittocha"
+ },
+ "mg": {
+ "code": "mg",
+ "name": "malagasiycha"
+ },
+ "ml": {
+ "code": "ml",
+ "name": "malayamcha"
+ },
+ "ms": {
+ "code": "ms",
+ "name": "malaycha"
+ },
+ "mt": {
+ "code": "mt",
+ "name": "maltacha"
+ },
+ "kde": {
+ "code": "kde",
+ "name": "maqondiy"
+ },
+ "mr": {
+ "code": "mr",
+ "name": "maratcha"
+ },
+ "tzm": {
+ "code": "tzm",
+ "name": "markaziy atlas vaqt zonasi"
+ },
+ "mas": {
+ "code": "mas",
+ "name": "masaycha"
+ },
+ "es-MX": {
+ "code": "es-MX",
+ "name": "Meksika ispanchasi"
+ },
+ "mer": {
+ "code": "mer",
+ "name": "merucha"
+ },
+ "mn": {
+ "code": "mn",
+ "name": "mo‘g‘ulcha"
+ },
+ "ro-MD": {
+ "code": "ro-MD",
+ "name": "moldovan rumincha"
+ },
+ "mfe": {
+ "code": "mfe",
+ "name": "morisyencha"
+ },
+ "mua": {
+ "code": "mua",
+ "name": "mundangcha"
+ },
+ "naq": {
+ "code": "naq",
+ "name": "namacha"
+ },
+ "de": {
+ "code": "de",
+ "name": "nemischa"
+ },
+ "ne": {
+ "code": "ne",
+ "name": "nepalcha"
+ },
+ "jgo": {
+ "code": "jgo",
+ "name": "ngombcha"
+ },
+ "nb": {
+ "code": "nb",
+ "name": "norvegcha bokmal"
+ },
+ "nn": {
+ "code": "nn",
+ "name": "norvegcha ninorsk"
+ },
+ "nus": {
+ "code": "nus",
+ "name": "noyrcha"
+ },
+ "nyn": {
+ "code": "nyn",
+ "name": "nyankolcha"
+ },
+ "uz": {
+ "code": "uz",
+ "name": "oʻzbekcha"
+ },
+ "or": {
+ "code": "or",
+ "name": "oriycha"
+ },
+ "az": {
+ "code": "az",
+ "name": "ozarbayjoncha"
+ },
+ "pa": {
+ "code": "pa",
+ "name": "panjobcha"
+ },
+ "pl": {
+ "code": "pl",
+ "name": "polyakcha"
+ },
+ "pt": {
+ "code": "pt",
+ "name": "portugalcha"
+ },
+ "ps": {
+ "code": "ps",
+ "name": "pushtu tili"
+ },
+ "ky": {
+ "code": "ky",
+ "name": "qirgʻizcha"
+ },
+ "kab": {
+ "code": "kab",
+ "name": "qobilcha"
+ },
+ "khq": {
+ "code": "khq",
+ "name": "qoyra-chincha"
+ },
+ "kk": {
+ "code": "kk",
+ "name": "qozoqcha"
+ },
+ "dsb": {
+ "code": "dsb",
+ "name": "quyi sorbcha"
+ },
+ "rm": {
+ "code": "rm",
+ "name": "romancha"
+ },
+ "rof": {
+ "code": "rof",
+ "name": "rombacha"
+ },
+ "rwk": {
+ "code": "rwk",
+ "name": "ruandcha"
+ },
+ "ro": {
+ "code": "ro",
+ "name": "rumincha"
+ },
+ "rn": {
+ "code": "rn",
+ "name": "rundcha"
+ },
+ "ru": {
+ "code": "ru",
+ "name": "ruscha"
+ },
+ "saq": {
+ "code": "saq",
+ "name": "samburcha"
+ },
+ "sg": {
+ "code": "sg",
+ "name": "sangoancha"
+ },
+ "sbp": {
+ "code": "sbp",
+ "name": "sanguancha"
+ },
+ "gd": {
+ "code": "gd",
+ "name": "Scottish Gaelic"
+ },
+ "seh": {
+ "code": "seh",
+ "name": "seniycha"
+ },
+ "sr": {
+ "code": "sr",
+ "name": "serbcha"
+ },
+ "ksb": {
+ "code": "ksb",
+ "name": "shambalacha"
+ },
+ "nd": {
+ "code": "nd",
+ "name": "shimoliy ndebelcha"
+ },
+ "se": {
+ "code": "se",
+ "name": "shimoliy semiycha"
+ },
+ "sn": {
+ "code": "sn",
+ "name": "shoniycha"
+ },
+ "sv": {
+ "code": "sv",
+ "name": "shvedcha"
+ },
+ "fr-CH": {
+ "code": "fr-CH",
+ "name": "Shvesariya fransuzchasi"
+ },
+ "de-CH": {
+ "code": "de-CH",
+ "name": "Shvesariya olmonchasi"
+ },
+ "gsw": {
+ "code": "gsw",
+ "name": "shveysariya nemischasi"
+ },
+ "si": {
+ "code": "si",
+ "name": "sinholcha"
+ },
+ "sk": {
+ "code": "sk",
+ "name": "slovakcha"
+ },
+ "sl": {
+ "code": "sl",
+ "name": "slovencha"
+ },
+ "zh-Hans": {
+ "code": "zh-Hans",
+ "name": "soddalashtirilgan xitoycha"
+ },
+ "xog": {
+ "code": "xog",
+ "name": "sogancha"
+ },
+ "so": {
+ "code": "so",
+ "name": "somalicha"
+ },
+ "zgh": {
+ "code": "zgh",
+ "name": "standart marokash tamazit"
+ },
+ "sw": {
+ "code": "sw",
+ "name": "svahilcha"
+ },
+ "shi": {
+ "code": "shi",
+ "name": "tachilgitcha"
+ },
+ "dav": {
+ "code": "dav",
+ "name": "taitcha"
+ },
+ "ta": {
+ "code": "ta",
+ "name": "tamilcha"
+ },
+ "th": {
+ "code": "th",
+ "name": "taycha"
+ },
+ "te": {
+ "code": "te",
+ "name": "telugvancha"
+ },
+ "teo": {
+ "code": "teo",
+ "name": "tesoancha"
+ },
+ "bo": {
+ "code": "bo",
+ "name": "tibetcha"
+ },
+ "ti": {
+ "code": "ti",
+ "name": "tigrincha"
+ },
+ "to": {
+ "code": "to",
+ "name": "tongocha"
+ },
+ "twq": {
+ "code": "twq",
+ "name": "tosovoqcha"
+ },
+ "tr": {
+ "code": "tr",
+ "name": "turkcha"
+ },
+ "cy": {
+ "code": "cy",
+ "name": "uelscha"
+ },
+ "uk": {
+ "code": "uk",
+ "name": "ukraincha"
+ },
+ "ur": {
+ "code": "ur",
+ "name": "urducha"
+ },
+ "ug": {
+ "code": "ug",
+ "name": "uygʻurcha"
+ },
+ "vai": {
+ "code": "vai",
+ "name": "vayancha"
+ },
+ "hu": {
+ "code": "hu",
+ "name": "vengrcha"
+ },
+ "vun": {
+ "code": "vun",
+ "name": "vunjoancha"
+ },
+ "vi": {
+ "code": "vi",
+ "name": "vyetnamcha"
+ },
+ "wae": {
+ "code": "wae",
+ "name": "Walser"
+ },
+ "ha": {
+ "code": "ha",
+ "name": "xauscha"
+ },
+ "zh": {
+ "code": "zh",
+ "name": "xitoycha"
+ },
+ "km": {
+ "code": "km",
+ "name": "xmercha"
+ },
+ "hr": {
+ "code": "hr",
+ "name": "xorvatcha"
+ },
+ "yav": {
+ "code": "yav",
+ "name": "Yangben"
+ },
+ "ja": {
+ "code": "ja",
+ "name": "yaponcha"
+ },
+ "es-ES": {
+ "code": "es-ES",
+ "name": "Yevropa ispanchasi"
+ },
+ "pt-PT": {
+ "code": "pt-PT",
+ "name": "Yevropa portugalchasi"
+ },
+ "dyo": {
+ "code": "dyo",
+ "name": "yola-fonyicha"
+ },
+ "yo": {
+ "code": "yo",
+ "name": "yorubcha"
+ },
+ "dz": {
+ "code": "dz",
+ "name": "yovoncha"
+ },
+ "el": {
+ "code": "el",
+ "name": "yunoncha"
+ },
+ "hsb": {
+ "code": "hsb",
+ "name": "yuqori sorbcha"
+ },
+ "ar-001": {
+ "code": "ar-001",
+ "name": "zamonavij standart arabcha"
+ },
+ "dje": {
+ "code": "dje",
+ "name": "zarmacha"
+ },
+ "zu": {
+ "code": "zu",
+ "name": "zuluancha"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/language/vai-Latn.json b/library/intl/resources/language/vai-Latn.json
new file mode 100644
index 000000000..520e4bae2
--- /dev/null
+++ b/library/intl/resources/language/vai-Latn.json
@@ -0,0 +1,738 @@
+{
+ "af": {
+ "code": "af",
+ "name": "Afrikaans"
+ },
+ "agq": {
+ "code": "agq",
+ "name": "Aghem"
+ },
+ "ak": {
+ "code": "ak",
+ "name": "Akaŋ"
+ },
+ "sq": {
+ "code": "sq",
+ "name": "Albanian"
+ },
+ "am": {
+ "code": "am",
+ "name": "Amihári"
+ },
+ "ar-001": {
+ "code": "ar-001",
+ "name": "ar_001"
+ },
+ "hy": {
+ "code": "hy",
+ "name": "Armenian"
+ },
+ "ast": {
+ "code": "ast",
+ "name": "Asturian"
+ },
+ "asa": {
+ "code": "asa",
+ "name": "Asu"
+ },
+ "az": {
+ "code": "az",
+ "name": "Azerbaijani"
+ },
+ "ksf": {
+ "code": "ksf",
+ "name": "Bafia"
+ },
+ "bm": {
+ "code": "bm",
+ "name": "Bambara"
+ },
+ "bas": {
+ "code": "bas",
+ "name": "Basaa"
+ },
+ "eu": {
+ "code": "eu",
+ "name": "Basque"
+ },
+ "bez": {
+ "code": "bez",
+ "name": "Bena"
+ },
+ "be": {
+ "code": "be",
+ "name": "Bhelarusaŋ"
+ },
+ "my": {
+ "code": "my",
+ "name": "Bhɛmísi"
+ },
+ "bn": {
+ "code": "bn",
+ "name": "Bhɛŋgáli"
+ },
+ "bg": {
+ "code": "bg",
+ "name": "Bhɔgerɛŋ"
+ },
+ "brx": {
+ "code": "brx",
+ "name": "Bodo"
+ },
+ "bs": {
+ "code": "bs",
+ "name": "Bosnian"
+ },
+ "br": {
+ "code": "br",
+ "name": "Breton"
+ },
+ "ca": {
+ "code": "ca",
+ "name": "Catalan"
+ },
+ "tzm": {
+ "code": "tzm",
+ "name": "Central Atlas Tamazight"
+ },
+ "zh": {
+ "code": "zh",
+ "name": "Chaniĩ"
+ },
+ "chr": {
+ "code": "chr",
+ "name": "Cherokee"
+ },
+ "cs": {
+ "code": "cs",
+ "name": "ChÉ›"
+ },
+ "cgg": {
+ "code": "cgg",
+ "name": "Chiga"
+ },
+ "ksh": {
+ "code": "ksh",
+ "name": "Colognian"
+ },
+ "swc": {
+ "code": "swc",
+ "name": "Congo Swahili"
+ },
+ "hr": {
+ "code": "hr",
+ "name": "Croatian"
+ },
+ "da": {
+ "code": "da",
+ "name": "Danish"
+ },
+ "de-AT": {
+ "code": "de-AT",
+ "name": "de_AT"
+ },
+ "de-CH": {
+ "code": "de-CH",
+ "name": "de_CH"
+ },
+ "nl": {
+ "code": "nl",
+ "name": "Dɔchi"
+ },
+ "dz": {
+ "code": "dz",
+ "name": "Dzongkha"
+ },
+ "ebu": {
+ "code": "ebu",
+ "name": "Embu"
+ },
+ "en-AU": {
+ "code": "en-AU",
+ "name": "en_AU"
+ },
+ "en-CA": {
+ "code": "en-CA",
+ "name": "en_CA"
+ },
+ "en-GB": {
+ "code": "en-GB",
+ "name": "en_GB"
+ },
+ "en-US": {
+ "code": "en-US",
+ "name": "en_US"
+ },
+ "es-ES": {
+ "code": "es-ES",
+ "name": "es_ES"
+ },
+ "es-MX": {
+ "code": "es-MX",
+ "name": "es_MX"
+ },
+ "eo": {
+ "code": "eo",
+ "name": "Esperanto"
+ },
+ "et": {
+ "code": "et",
+ "name": "Estonian"
+ },
+ "ee": {
+ "code": "ee",
+ "name": "Ewe"
+ },
+ "ewo": {
+ "code": "ewo",
+ "name": "Ewondo"
+ },
+ "fo": {
+ "code": "fo",
+ "name": "Faroese"
+ },
+ "fr": {
+ "code": "fr",
+ "name": "Fɛŋsi"
+ },
+ "fil": {
+ "code": "fil",
+ "name": "Filipino"
+ },
+ "fi": {
+ "code": "fi",
+ "name": "Finnish"
+ },
+ "fr-CA": {
+ "code": "fr-CA",
+ "name": "fr_CA"
+ },
+ "fr-CH": {
+ "code": "fr-CH",
+ "name": "fr_CH"
+ },
+ "fur": {
+ "code": "fur",
+ "name": "Friulian"
+ },
+ "ff": {
+ "code": "ff",
+ "name": "Fulah"
+ },
+ "gl": {
+ "code": "gl",
+ "name": "Galician"
+ },
+ "lg": {
+ "code": "lg",
+ "name": "Ganda"
+ },
+ "ka": {
+ "code": "ka",
+ "name": "Georgian"
+ },
+ "gu": {
+ "code": "gu",
+ "name": "Gujarati"
+ },
+ "guz": {
+ "code": "guz",
+ "name": "Gusii"
+ },
+ "ha": {
+ "code": "ha",
+ "name": "Hawusa"
+ },
+ "he": {
+ "code": "he",
+ "name": "Hebrew"
+ },
+ "el": {
+ "code": "el",
+ "name": "Hɛlɛŋ"
+ },
+ "hi": {
+ "code": "hi",
+ "name": "Híiŋdi"
+ },
+ "hu": {
+ "code": "hu",
+ "name": "Hɔŋgérɛŋ"
+ },
+ "is": {
+ "code": "is",
+ "name": "Icelandic"
+ },
+ "id": {
+ "code": "id",
+ "name": "Ãndonisiyɛŋ"
+ },
+ "ga": {
+ "code": "ga",
+ "name": "Irish"
+ },
+ "it": {
+ "code": "it",
+ "name": "Itáliyɛŋ"
+ },
+ "de": {
+ "code": "de",
+ "name": "Jamáĩ"
+ },
+ "ja": {
+ "code": "ja",
+ "name": "Japaníĩ"
+ },
+ "dyo": {
+ "code": "dyo",
+ "name": "Jola-Fonyi"
+ },
+ "kea": {
+ "code": "kea",
+ "name": "Kabuverdianu"
+ },
+ "kab": {
+ "code": "kab",
+ "name": "Kabyle"
+ },
+ "kl": {
+ "code": "kl",
+ "name": "Kalaallisut"
+ },
+ "kln": {
+ "code": "kln",
+ "name": "Kalenjin"
+ },
+ "kam": {
+ "code": "kam",
+ "name": "Kamba"
+ },
+ "kn": {
+ "code": "kn",
+ "name": "Kannada"
+ },
+ "ks": {
+ "code": "ks",
+ "name": "Kashmiri"
+ },
+ "kk": {
+ "code": "kk",
+ "name": "Kazakh"
+ },
+ "ki": {
+ "code": "ki",
+ "name": "Kikuyu"
+ },
+ "km": {
+ "code": "km",
+ "name": "Kimɛɛ̃ tɛ"
+ },
+ "ko": {
+ "code": "ko",
+ "name": "Koríyɛŋ"
+ },
+ "khq": {
+ "code": "khq",
+ "name": "Koyra Chiini"
+ },
+ "ses": {
+ "code": "ses",
+ "name": "Koyraboro Senni"
+ },
+ "nmg": {
+ "code": "nmg",
+ "name": "Kwasio"
+ },
+ "ky": {
+ "code": "ky",
+ "name": "Kyrgyz"
+ },
+ "ar": {
+ "code": "ar",
+ "name": "Lahabu"
+ },
+ "lag": {
+ "code": "lag",
+ "name": "Langi"
+ },
+ "lo": {
+ "code": "lo",
+ "name": "Lao"
+ },
+ "lv": {
+ "code": "lv",
+ "name": "Latvian"
+ },
+ "ln": {
+ "code": "ln",
+ "name": "Lingala"
+ },
+ "lt": {
+ "code": "lt",
+ "name": "Lithuanian"
+ },
+ "dsb": {
+ "code": "dsb",
+ "name": "Lower Sorbian"
+ },
+ "lu": {
+ "code": "lu",
+ "name": "Luba-Katanga"
+ },
+ "luo": {
+ "code": "luo",
+ "name": "Luo"
+ },
+ "lb": {
+ "code": "lb",
+ "name": "Luxembourgish"
+ },
+ "luy": {
+ "code": "luy",
+ "name": "Luyia"
+ },
+ "mk": {
+ "code": "mk",
+ "name": "Macedonian"
+ },
+ "jmc": {
+ "code": "jmc",
+ "name": "Machame"
+ },
+ "mgh": {
+ "code": "mgh",
+ "name": "Makhuwa-Meetto"
+ },
+ "kde": {
+ "code": "kde",
+ "name": "Makonde"
+ },
+ "mg": {
+ "code": "mg",
+ "name": "Malagasy"
+ },
+ "ml": {
+ "code": "ml",
+ "name": "Malayalam"
+ },
+ "ms": {
+ "code": "ms",
+ "name": "Maléee"
+ },
+ "mt": {
+ "code": "mt",
+ "name": "Maltese"
+ },
+ "mr": {
+ "code": "mr",
+ "name": "Marathi"
+ },
+ "mas": {
+ "code": "mas",
+ "name": "Masai"
+ },
+ "mer": {
+ "code": "mer",
+ "name": "Meru"
+ },
+ "mn": {
+ "code": "mn",
+ "name": "Mongolian"
+ },
+ "mfe": {
+ "code": "mfe",
+ "name": "Morisyen"
+ },
+ "mua": {
+ "code": "mua",
+ "name": "Mundang"
+ },
+ "naq": {
+ "code": "naq",
+ "name": "Nama"
+ },
+ "jgo": {
+ "code": "jgo",
+ "name": "Ngomba"
+ },
+ "ne": {
+ "code": "ne",
+ "name": "Nipali"
+ },
+ "nl-BE": {
+ "code": "nl-BE",
+ "name": "nl_BE"
+ },
+ "nd": {
+ "code": "nd",
+ "name": "North Ndebele"
+ },
+ "se": {
+ "code": "se",
+ "name": "Northern Sami"
+ },
+ "nb": {
+ "code": "nb",
+ "name": "Norwegian Bokmål"
+ },
+ "nn": {
+ "code": "nn",
+ "name": "Norwegian Nynorsk"
+ },
+ "nus": {
+ "code": "nus",
+ "name": "Nuer"
+ },
+ "nyn": {
+ "code": "nyn",
+ "name": "Nyankole"
+ },
+ "or": {
+ "code": "or",
+ "name": "Oriya"
+ },
+ "ur": {
+ "code": "ur",
+ "name": "Ɔdu"
+ },
+ "es": {
+ "code": "es",
+ "name": "Panyɛĩ"
+ },
+ "ps": {
+ "code": "ps",
+ "name": "Pashto"
+ },
+ "fa": {
+ "code": "fa",
+ "name": "Pɛɛsiyɛŋ"
+ },
+ "en": {
+ "code": "en",
+ "name": "Poo"
+ },
+ "pt": {
+ "code": "pt",
+ "name": "Potokíi"
+ },
+ "pl": {
+ "code": "pl",
+ "name": "PÉ”Ìlési"
+ },
+ "pt-BR": {
+ "code": "pt-BR",
+ "name": "pt_BR"
+ },
+ "pt-PT": {
+ "code": "pt-PT",
+ "name": "pt_PT"
+ },
+ "pa": {
+ "code": "pa",
+ "name": "Puŋjabhi"
+ },
+ "ro-MD": {
+ "code": "ro-MD",
+ "name": "ro_MD"
+ },
+ "rm": {
+ "code": "rm",
+ "name": "Romansh"
+ },
+ "rof": {
+ "code": "rof",
+ "name": "Rombo"
+ },
+ "ro": {
+ "code": "ro",
+ "name": "Romíniyɛŋ"
+ },
+ "ru": {
+ "code": "ru",
+ "name": "Rɔshiyɛŋ"
+ },
+ "rn": {
+ "code": "rn",
+ "name": "Rundi"
+ },
+ "rwk": {
+ "code": "rwk",
+ "name": "Rwa"
+ },
+ "saq": {
+ "code": "saq",
+ "name": "Samburu"
+ },
+ "sg": {
+ "code": "sg",
+ "name": "Sango"
+ },
+ "sbp": {
+ "code": "sbp",
+ "name": "Sangu"
+ },
+ "gd": {
+ "code": "gd",
+ "name": "Scottish Gaelic"
+ },
+ "seh": {
+ "code": "seh",
+ "name": "Sena"
+ },
+ "sr": {
+ "code": "sr",
+ "name": "Serbian"
+ },
+ "ksb": {
+ "code": "ksb",
+ "name": "Shambala"
+ },
+ "sn": {
+ "code": "sn",
+ "name": "Shona"
+ },
+ "si": {
+ "code": "si",
+ "name": "Sinhala"
+ },
+ "sk": {
+ "code": "sk",
+ "name": "Slovak"
+ },
+ "sl": {
+ "code": "sl",
+ "name": "Slovenian"
+ },
+ "xog": {
+ "code": "xog",
+ "name": "Soga"
+ },
+ "so": {
+ "code": "so",
+ "name": "Somáli"
+ },
+ "zgh": {
+ "code": "zgh",
+ "name": "Standard Moroccan Tamazight"
+ },
+ "sv": {
+ "code": "sv",
+ "name": "Súwídɛŋ"
+ },
+ "sw": {
+ "code": "sw",
+ "name": "Swahili"
+ },
+ "gsw": {
+ "code": "gsw",
+ "name": "Swiss German"
+ },
+ "shi": {
+ "code": "shi",
+ "name": "Tachelhit"
+ },
+ "th": {
+ "code": "th",
+ "name": "Tái"
+ },
+ "dav": {
+ "code": "dav",
+ "name": "Taita"
+ },
+ "ta": {
+ "code": "ta",
+ "name": "Tamíli"
+ },
+ "twq": {
+ "code": "twq",
+ "name": "Tasawaq"
+ },
+ "te": {
+ "code": "te",
+ "name": "Telugu"
+ },
+ "teo": {
+ "code": "teo",
+ "name": "Teso"
+ },
+ "bo": {
+ "code": "bo",
+ "name": "Tibetan"
+ },
+ "ti": {
+ "code": "ti",
+ "name": "Tigrinya"
+ },
+ "to": {
+ "code": "to",
+ "name": "Tongan"
+ },
+ "tr": {
+ "code": "tr",
+ "name": "TÉ”Ìki"
+ },
+ "hsb": {
+ "code": "hsb",
+ "name": "Upper Sorbian"
+ },
+ "ug": {
+ "code": "ug",
+ "name": "Uyghur"
+ },
+ "uz": {
+ "code": "uz",
+ "name": "Uzbek"
+ },
+ "vai": {
+ "code": "vai",
+ "name": "Vai"
+ },
+ "vi": {
+ "code": "vi",
+ "name": "Viyamíĩ"
+ },
+ "vun": {
+ "code": "vun",
+ "name": "Vunjo"
+ },
+ "wae": {
+ "code": "wae",
+ "name": "Walser"
+ },
+ "cy": {
+ "code": "cy",
+ "name": "Welsh"
+ },
+ "fy": {
+ "code": "fy",
+ "name": "Western Frisian"
+ },
+ "yav": {
+ "code": "yav",
+ "name": "Yangben"
+ },
+ "yo": {
+ "code": "yo",
+ "name": "Yóróbha"
+ },
+ "uk": {
+ "code": "uk",
+ "name": "Yukureniyɛŋ"
+ },
+ "dje": {
+ "code": "dje",
+ "name": "Zarma"
+ },
+ "zh-Hans": {
+ "code": "zh-Hans",
+ "name": "zh_Hans"
+ },
+ "zh-Hant": {
+ "code": "zh-Hant",
+ "name": "zh_Hant"
+ },
+ "zu": {
+ "code": "zu",
+ "name": "Zúlu"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/language/vai.json b/library/intl/resources/language/vai.json
new file mode 100644
index 000000000..27017be31
--- /dev/null
+++ b/library/intl/resources/language/vai.json
@@ -0,0 +1,738 @@
+{
+ "af": {
+ "code": "af",
+ "name": "Afrikaans"
+ },
+ "agq": {
+ "code": "agq",
+ "name": "Aghem"
+ },
+ "sq": {
+ "code": "sq",
+ "name": "Albanian"
+ },
+ "ar-001": {
+ "code": "ar-001",
+ "name": "ar_001"
+ },
+ "hy": {
+ "code": "hy",
+ "name": "Armenian"
+ },
+ "ast": {
+ "code": "ast",
+ "name": "Asturian"
+ },
+ "asa": {
+ "code": "asa",
+ "name": "Asu"
+ },
+ "az": {
+ "code": "az",
+ "name": "Azerbaijani"
+ },
+ "ksf": {
+ "code": "ksf",
+ "name": "Bafia"
+ },
+ "bm": {
+ "code": "bm",
+ "name": "Bambara"
+ },
+ "bas": {
+ "code": "bas",
+ "name": "Basaa"
+ },
+ "eu": {
+ "code": "eu",
+ "name": "Basque"
+ },
+ "bez": {
+ "code": "bez",
+ "name": "Bena"
+ },
+ "brx": {
+ "code": "brx",
+ "name": "Bodo"
+ },
+ "bs": {
+ "code": "bs",
+ "name": "Bosnian"
+ },
+ "br": {
+ "code": "br",
+ "name": "Breton"
+ },
+ "ca": {
+ "code": "ca",
+ "name": "Catalan"
+ },
+ "tzm": {
+ "code": "tzm",
+ "name": "Central Atlas Tamazight"
+ },
+ "chr": {
+ "code": "chr",
+ "name": "Cherokee"
+ },
+ "cgg": {
+ "code": "cgg",
+ "name": "Chiga"
+ },
+ "ksh": {
+ "code": "ksh",
+ "name": "Colognian"
+ },
+ "swc": {
+ "code": "swc",
+ "name": "Congo Swahili"
+ },
+ "hr": {
+ "code": "hr",
+ "name": "Croatian"
+ },
+ "da": {
+ "code": "da",
+ "name": "Danish"
+ },
+ "de-AT": {
+ "code": "de-AT",
+ "name": "de_AT"
+ },
+ "de-CH": {
+ "code": "de-CH",
+ "name": "de_CH"
+ },
+ "dz": {
+ "code": "dz",
+ "name": "Dzongkha"
+ },
+ "ebu": {
+ "code": "ebu",
+ "name": "Embu"
+ },
+ "en-AU": {
+ "code": "en-AU",
+ "name": "en_AU"
+ },
+ "en-CA": {
+ "code": "en-CA",
+ "name": "en_CA"
+ },
+ "en-GB": {
+ "code": "en-GB",
+ "name": "en_GB"
+ },
+ "en-US": {
+ "code": "en-US",
+ "name": "en_US"
+ },
+ "es-ES": {
+ "code": "es-ES",
+ "name": "es_ES"
+ },
+ "es-MX": {
+ "code": "es-MX",
+ "name": "es_MX"
+ },
+ "eo": {
+ "code": "eo",
+ "name": "Esperanto"
+ },
+ "et": {
+ "code": "et",
+ "name": "Estonian"
+ },
+ "ee": {
+ "code": "ee",
+ "name": "Ewe"
+ },
+ "ewo": {
+ "code": "ewo",
+ "name": "Ewondo"
+ },
+ "fo": {
+ "code": "fo",
+ "name": "Faroese"
+ },
+ "fil": {
+ "code": "fil",
+ "name": "Filipino"
+ },
+ "fi": {
+ "code": "fi",
+ "name": "Finnish"
+ },
+ "fr-CA": {
+ "code": "fr-CA",
+ "name": "fr_CA"
+ },
+ "fr-CH": {
+ "code": "fr-CH",
+ "name": "fr_CH"
+ },
+ "fur": {
+ "code": "fur",
+ "name": "Friulian"
+ },
+ "ff": {
+ "code": "ff",
+ "name": "Fulah"
+ },
+ "gl": {
+ "code": "gl",
+ "name": "Galician"
+ },
+ "lg": {
+ "code": "lg",
+ "name": "Ganda"
+ },
+ "ka": {
+ "code": "ka",
+ "name": "Georgian"
+ },
+ "gu": {
+ "code": "gu",
+ "name": "Gujarati"
+ },
+ "guz": {
+ "code": "guz",
+ "name": "Gusii"
+ },
+ "he": {
+ "code": "he",
+ "name": "Hebrew"
+ },
+ "is": {
+ "code": "is",
+ "name": "Icelandic"
+ },
+ "ga": {
+ "code": "ga",
+ "name": "Irish"
+ },
+ "dyo": {
+ "code": "dyo",
+ "name": "Jola-Fonyi"
+ },
+ "kea": {
+ "code": "kea",
+ "name": "Kabuverdianu"
+ },
+ "kab": {
+ "code": "kab",
+ "name": "Kabyle"
+ },
+ "kl": {
+ "code": "kl",
+ "name": "Kalaallisut"
+ },
+ "kln": {
+ "code": "kln",
+ "name": "Kalenjin"
+ },
+ "kam": {
+ "code": "kam",
+ "name": "Kamba"
+ },
+ "kn": {
+ "code": "kn",
+ "name": "Kannada"
+ },
+ "ks": {
+ "code": "ks",
+ "name": "Kashmiri"
+ },
+ "kk": {
+ "code": "kk",
+ "name": "Kazakh"
+ },
+ "ki": {
+ "code": "ki",
+ "name": "Kikuyu"
+ },
+ "khq": {
+ "code": "khq",
+ "name": "Koyra Chiini"
+ },
+ "ses": {
+ "code": "ses",
+ "name": "Koyraboro Senni"
+ },
+ "nmg": {
+ "code": "nmg",
+ "name": "Kwasio"
+ },
+ "ky": {
+ "code": "ky",
+ "name": "Kyrgyz"
+ },
+ "lag": {
+ "code": "lag",
+ "name": "Langi"
+ },
+ "lo": {
+ "code": "lo",
+ "name": "Lao"
+ },
+ "lv": {
+ "code": "lv",
+ "name": "Latvian"
+ },
+ "ln": {
+ "code": "ln",
+ "name": "Lingala"
+ },
+ "lt": {
+ "code": "lt",
+ "name": "Lithuanian"
+ },
+ "dsb": {
+ "code": "dsb",
+ "name": "Lower Sorbian"
+ },
+ "lu": {
+ "code": "lu",
+ "name": "Luba-Katanga"
+ },
+ "luo": {
+ "code": "luo",
+ "name": "Luo"
+ },
+ "lb": {
+ "code": "lb",
+ "name": "Luxembourgish"
+ },
+ "luy": {
+ "code": "luy",
+ "name": "Luyia"
+ },
+ "mk": {
+ "code": "mk",
+ "name": "Macedonian"
+ },
+ "jmc": {
+ "code": "jmc",
+ "name": "Machame"
+ },
+ "mgh": {
+ "code": "mgh",
+ "name": "Makhuwa-Meetto"
+ },
+ "kde": {
+ "code": "kde",
+ "name": "Makonde"
+ },
+ "mg": {
+ "code": "mg",
+ "name": "Malagasy"
+ },
+ "ml": {
+ "code": "ml",
+ "name": "Malayalam"
+ },
+ "mt": {
+ "code": "mt",
+ "name": "Maltese"
+ },
+ "mr": {
+ "code": "mr",
+ "name": "Marathi"
+ },
+ "mas": {
+ "code": "mas",
+ "name": "Masai"
+ },
+ "mer": {
+ "code": "mer",
+ "name": "Meru"
+ },
+ "mn": {
+ "code": "mn",
+ "name": "Mongolian"
+ },
+ "mfe": {
+ "code": "mfe",
+ "name": "Morisyen"
+ },
+ "mua": {
+ "code": "mua",
+ "name": "Mundang"
+ },
+ "naq": {
+ "code": "naq",
+ "name": "Nama"
+ },
+ "jgo": {
+ "code": "jgo",
+ "name": "Ngomba"
+ },
+ "nl-BE": {
+ "code": "nl-BE",
+ "name": "nl_BE"
+ },
+ "nd": {
+ "code": "nd",
+ "name": "North Ndebele"
+ },
+ "se": {
+ "code": "se",
+ "name": "Northern Sami"
+ },
+ "nb": {
+ "code": "nb",
+ "name": "Norwegian Bokmål"
+ },
+ "nn": {
+ "code": "nn",
+ "name": "Norwegian Nynorsk"
+ },
+ "nus": {
+ "code": "nus",
+ "name": "Nuer"
+ },
+ "nyn": {
+ "code": "nyn",
+ "name": "Nyankole"
+ },
+ "or": {
+ "code": "or",
+ "name": "Oriya"
+ },
+ "ps": {
+ "code": "ps",
+ "name": "Pashto"
+ },
+ "pt-BR": {
+ "code": "pt-BR",
+ "name": "pt_BR"
+ },
+ "pt-PT": {
+ "code": "pt-PT",
+ "name": "pt_PT"
+ },
+ "ro-MD": {
+ "code": "ro-MD",
+ "name": "ro_MD"
+ },
+ "rm": {
+ "code": "rm",
+ "name": "Romansh"
+ },
+ "rof": {
+ "code": "rof",
+ "name": "Rombo"
+ },
+ "rn": {
+ "code": "rn",
+ "name": "Rundi"
+ },
+ "rwk": {
+ "code": "rwk",
+ "name": "Rwa"
+ },
+ "saq": {
+ "code": "saq",
+ "name": "Samburu"
+ },
+ "sg": {
+ "code": "sg",
+ "name": "Sango"
+ },
+ "sbp": {
+ "code": "sbp",
+ "name": "Sangu"
+ },
+ "gd": {
+ "code": "gd",
+ "name": "Scottish Gaelic"
+ },
+ "seh": {
+ "code": "seh",
+ "name": "Sena"
+ },
+ "sr": {
+ "code": "sr",
+ "name": "Serbian"
+ },
+ "ksb": {
+ "code": "ksb",
+ "name": "Shambala"
+ },
+ "sn": {
+ "code": "sn",
+ "name": "Shona"
+ },
+ "si": {
+ "code": "si",
+ "name": "Sinhala"
+ },
+ "sk": {
+ "code": "sk",
+ "name": "Slovak"
+ },
+ "sl": {
+ "code": "sl",
+ "name": "Slovenian"
+ },
+ "xog": {
+ "code": "xog",
+ "name": "Soga"
+ },
+ "zgh": {
+ "code": "zgh",
+ "name": "Standard Moroccan Tamazight"
+ },
+ "sw": {
+ "code": "sw",
+ "name": "Swahili"
+ },
+ "gsw": {
+ "code": "gsw",
+ "name": "Swiss German"
+ },
+ "shi": {
+ "code": "shi",
+ "name": "Tachelhit"
+ },
+ "dav": {
+ "code": "dav",
+ "name": "Taita"
+ },
+ "twq": {
+ "code": "twq",
+ "name": "Tasawaq"
+ },
+ "te": {
+ "code": "te",
+ "name": "Telugu"
+ },
+ "teo": {
+ "code": "teo",
+ "name": "Teso"
+ },
+ "bo": {
+ "code": "bo",
+ "name": "Tibetan"
+ },
+ "ti": {
+ "code": "ti",
+ "name": "Tigrinya"
+ },
+ "to": {
+ "code": "to",
+ "name": "Tongan"
+ },
+ "hsb": {
+ "code": "hsb",
+ "name": "Upper Sorbian"
+ },
+ "ug": {
+ "code": "ug",
+ "name": "Uyghur"
+ },
+ "uz": {
+ "code": "uz",
+ "name": "Uzbek"
+ },
+ "vun": {
+ "code": "vun",
+ "name": "Vunjo"
+ },
+ "wae": {
+ "code": "wae",
+ "name": "Walser"
+ },
+ "cy": {
+ "code": "cy",
+ "name": "Welsh"
+ },
+ "fy": {
+ "code": "fy",
+ "name": "Western Frisian"
+ },
+ "yav": {
+ "code": "yav",
+ "name": "Yangben"
+ },
+ "dje": {
+ "code": "dje",
+ "name": "Zarma"
+ },
+ "zh-Hans": {
+ "code": "zh-Hans",
+ "name": "zh_Hans"
+ },
+ "zh-Hant": {
+ "code": "zh-Hant",
+ "name": "zh_Hant"
+ },
+ "be": {
+ "code": "be",
+ "name": "ꔆꕞꖩꔻ"
+ },
+ "it": {
+ "code": "it",
+ "name": "ꔤꕚꔷꘂꘋ"
+ },
+ "id": {
+ "code": "id",
+ "name": "ꔤꖆꕇꔻꘂꘋ"
+ },
+ "hi": {
+ "code": "hi",
+ "name": "ꔦꔺ"
+ },
+ "vi": {
+ "code": "vi",
+ "name": "ꔲꕩꕯꕆꔧ"
+ },
+ "km": {
+ "code": "km",
+ "name": "ꕃꘈꗢ"
+ },
+ "ne": {
+ "code": "ne",
+ "name": "ꕇê•ê”·"
+ },
+ "am": {
+ "code": "am",
+ "name": "ꕉꕆꕌꔸ"
+ },
+ "ak": {
+ "code": "ak",
+ "name": "ꕉꕪꘋ"
+ },
+ "ha": {
+ "code": "ha",
+ "name": "ꕌꖙꕢ"
+ },
+ "es": {
+ "code": "es",
+ "name": "ê•ê˜Šê”§"
+ },
+ "vai": {
+ "code": "vai",
+ "name": "ꕙꔤ"
+ },
+ "th": {
+ "code": "th",
+ "name": "ꕚꔤ"
+ },
+ "ta": {
+ "code": "ta",
+ "name": "ꕚꕆꔷ"
+ },
+ "ar": {
+ "code": "ar",
+ "name": "ê•žê•Œê–"
+ },
+ "zh": {
+ "code": "zh",
+ "name": "ꕦꕇꔧ"
+ },
+ "ja": {
+ "code": "ja",
+ "name": "ꕧê•ê•‡ê”§"
+ },
+ "de": {
+ "code": "de",
+ "name": "ꕧꕮꔧ"
+ },
+ "ms": {
+ "code": "ms",
+ "name": "ꕮꔒꔀ"
+ },
+ "en": {
+ "code": "en",
+ "name": "ꕶꕱ"
+ },
+ "pt": {
+ "code": "pt",
+ "name": "ꕶꕿꕃꔤ"
+ },
+ "ro": {
+ "code": "ro",
+ "name": "ꖄꕆꕇꘂꘋ"
+ },
+ "so": {
+ "code": "so",
+ "name": "ꖇꕮꔷ"
+ },
+ "yo": {
+ "code": "yo",
+ "name": "ê–Žê–„ê•‘"
+ },
+ "ko": {
+ "code": "ko",
+ "name": "ê–ꔸꘂꘋ"
+ },
+ "pa": {
+ "code": "pa",
+ "name": "ꖛꕨꔬ"
+ },
+ "sv": {
+ "code": "sv",
+ "name": "ꖬꔨꗵꘋ"
+ },
+ "zu": {
+ "code": "zu",
+ "name": "ꖮꖨ"
+ },
+ "uk": {
+ "code": "uk",
+ "name": "ꖳꖴꔓꕇꘂꘋ"
+ },
+ "ur": {
+ "code": "ur",
+ "name": "ꖺꖦ"
+ },
+ "hu": {
+ "code": "hu",
+ "name": "ꖽꔟꗸꘋ"
+ },
+ "pl": {
+ "code": "pl",
+ "name": "ê—ê”’ê”»"
+ },
+ "bg": {
+ "code": "bg",
+ "name": "ꗂꔠꗸꘋ"
+ },
+ "tr": {
+ "code": "tr",
+ "name": "ꗋꕃ"
+ },
+ "nl": {
+ "code": "nl",
+ "name": "ê—ꔿ"
+ },
+ "ru": {
+ "code": "ru",
+ "name": "ê—ꖺꔻꘂꘋ"
+ },
+ "el": {
+ "code": "el",
+ "name": "ꗥꗷꘋ"
+ },
+ "fa": {
+ "code": "fa",
+ "name": "ꗨꗡꔻꘂꘋ"
+ },
+ "my": {
+ "code": "my",
+ "name": "ꗩꕆꔻ"
+ },
+ "bn": {
+ "code": "bn",
+ "name": "ê—©ê•­ê”·"
+ },
+ "fr": {
+ "code": "fr",
+ "name": "ꗱꘋꔻ"
+ },
+ "cs": {
+ "code": "cs",
+ "name": "ê—¿ê—¡"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/language/vi.json b/library/intl/resources/language/vi.json
new file mode 100644
index 000000000..9601780eb
--- /dev/null
+++ b/library/intl/resources/language/vi.json
@@ -0,0 +1,738 @@
+{
+ "de-AT": {
+ "code": "de-AT",
+ "name": "de_AT"
+ },
+ "en-AU": {
+ "code": "en-AU",
+ "name": "en_AU"
+ },
+ "en-CA": {
+ "code": "en-CA",
+ "name": "en_CA"
+ },
+ "es-ES": {
+ "code": "es-ES",
+ "name": "es_ES"
+ },
+ "es-MX": {
+ "code": "es-MX",
+ "name": "es_MX"
+ },
+ "fr-CA": {
+ "code": "fr-CA",
+ "name": "fr_CA"
+ },
+ "fr-CH": {
+ "code": "fr-CH",
+ "name": "fr_CH"
+ },
+ "pt-PT": {
+ "code": "pt-PT",
+ "name": "pt_PT"
+ },
+ "ar": {
+ "code": "ar",
+ "name": "Tiếng Ả Rập"
+ },
+ "ar-001": {
+ "code": "ar-001",
+ "name": "Tiếng Ả Rập Hiện đại"
+ },
+ "agq": {
+ "code": "agq",
+ "name": "Tiếng Aghem"
+ },
+ "ga": {
+ "code": "ga",
+ "name": "Tiếng Ai-len"
+ },
+ "ak": {
+ "code": "ak",
+ "name": "Tiếng Akan"
+ },
+ "am": {
+ "code": "am",
+ "name": "Tiếng Amharic"
+ },
+ "sq": {
+ "code": "sq",
+ "name": "Tiếng An-ba-ni"
+ },
+ "en": {
+ "code": "en",
+ "name": "Tiếng Anh"
+ },
+ "en-GB": {
+ "code": "en-GB",
+ "name": "Tiếng Anh (Anh)"
+ },
+ "en-US": {
+ "code": "en-US",
+ "name": "Tiếng Anh (Mỹ)"
+ },
+ "hy": {
+ "code": "hy",
+ "name": "Tiếng Armenia"
+ },
+ "ast": {
+ "code": "ast",
+ "name": "Tiếng Asturias"
+ },
+ "asa": {
+ "code": "asa",
+ "name": "Tiếng Asu"
+ },
+ "az": {
+ "code": "az",
+ "name": "Tiếng Azerbaijan"
+ },
+ "pl": {
+ "code": "pl",
+ "name": "Tiếng Ba Lan"
+ },
+ "fa": {
+ "code": "fa",
+ "name": "Tiếng Ba Tư"
+ },
+ "ksf": {
+ "code": "ksf",
+ "name": "Tiếng Bafia"
+ },
+ "bm": {
+ "code": "bm",
+ "name": "Tiếng Bambara"
+ },
+ "bas": {
+ "code": "bas",
+ "name": "Tiếng Basaa"
+ },
+ "eu": {
+ "code": "eu",
+ "name": "Tiếng Basque"
+ },
+ "be": {
+ "code": "be",
+ "name": "Tiếng Belarus"
+ },
+ "bez": {
+ "code": "bez",
+ "name": "Tiếng Bena"
+ },
+ "bn": {
+ "code": "bn",
+ "name": "Tiếng Bengali"
+ },
+ "brx": {
+ "code": "brx",
+ "name": "Tiếng Bodo"
+ },
+ "pt": {
+ "code": "pt",
+ "name": "Tiếng Bồ Äào Nha"
+ },
+ "pt-BR": {
+ "code": "pt-BR",
+ "name": "Tiếng Bồ Äào Nha (Braxin)"
+ },
+ "br": {
+ "code": "br",
+ "name": "Tiếng Breton"
+ },
+ "bg": {
+ "code": "bg",
+ "name": "Tiếng Bulgaria"
+ },
+ "ca": {
+ "code": "ca",
+ "name": "Tiếng Catalan"
+ },
+ "chr": {
+ "code": "chr",
+ "name": "Tiếng Cherokee"
+ },
+ "cgg": {
+ "code": "cgg",
+ "name": "Tiếng Chiga"
+ },
+ "ksh": {
+ "code": "ksh",
+ "name": "Tiếng Cologne"
+ },
+ "hr": {
+ "code": "hr",
+ "name": "Tiếng Croatia"
+ },
+ "he": {
+ "code": "he",
+ "name": "Tiếng Do Thái"
+ },
+ "dz": {
+ "code": "dz",
+ "name": "Tiếng Dzongkha"
+ },
+ "da": {
+ "code": "da",
+ "name": "Tiếng Äan Mạch"
+ },
+ "de": {
+ "code": "de",
+ "name": "Tiếng Äức"
+ },
+ "gsw": {
+ "code": "gsw",
+ "name": "Tiếng Äức (Thụy SÄ©)"
+ },
+ "ebu": {
+ "code": "ebu",
+ "name": "Tiếng Embu"
+ },
+ "et": {
+ "code": "et",
+ "name": "Tiếng Estonia"
+ },
+ "ee": {
+ "code": "ee",
+ "name": "Tiếng Ewe"
+ },
+ "ewo": {
+ "code": "ewo",
+ "name": "Tiếng Ewondo"
+ },
+ "fo": {
+ "code": "fo",
+ "name": "Tiếng Faore"
+ },
+ "nl-BE": {
+ "code": "nl-BE",
+ "name": "Tiếng Flemish"
+ },
+ "fy": {
+ "code": "fy",
+ "name": "Tiếng Frisia"
+ },
+ "fur": {
+ "code": "fur",
+ "name": "Tiếng Friulian"
+ },
+ "ff": {
+ "code": "ff",
+ "name": "Tiếng Fulah"
+ },
+ "gl": {
+ "code": "gl",
+ "name": "Tiếng Galician"
+ },
+ "lg": {
+ "code": "lg",
+ "name": "Tiếng Ganda"
+ },
+ "ka": {
+ "code": "ka",
+ "name": "Tiếng Gruzia"
+ },
+ "gu": {
+ "code": "gu",
+ "name": "Tiếng Gujarati"
+ },
+ "guz": {
+ "code": "guz",
+ "name": "Tiếng Gusii"
+ },
+ "nl": {
+ "code": "nl",
+ "name": "Tiếng Hà Lan"
+ },
+ "dsb": {
+ "code": "dsb",
+ "name": "Tiếng Hạ Sorbia"
+ },
+ "ko": {
+ "code": "ko",
+ "name": "Tiếng Hàn"
+ },
+ "ha": {
+ "code": "ha",
+ "name": "Tiếng Hausa"
+ },
+ "hi": {
+ "code": "hi",
+ "name": "Tiếng Hindi"
+ },
+ "hu": {
+ "code": "hu",
+ "name": "Tiếng Hungary"
+ },
+ "el": {
+ "code": "el",
+ "name": "Tiếng Hy Lạp"
+ },
+ "is": {
+ "code": "is",
+ "name": "Tiếng Iceland"
+ },
+ "id": {
+ "code": "id",
+ "name": "Tiếng Indonesia"
+ },
+ "dyo": {
+ "code": "dyo",
+ "name": "Tiếng Jola-Fonyi"
+ },
+ "kea": {
+ "code": "kea",
+ "name": "Tiếng Kabuverdianu"
+ },
+ "kab": {
+ "code": "kab",
+ "name": "Tiếng Kabyle"
+ },
+ "kl": {
+ "code": "kl",
+ "name": "Tiếng Kalaallisut"
+ },
+ "kln": {
+ "code": "kln",
+ "name": "Tiếng Kalenjin"
+ },
+ "kam": {
+ "code": "kam",
+ "name": "Tiếng Kamba"
+ },
+ "kn": {
+ "code": "kn",
+ "name": "Tiếng Kannada"
+ },
+ "ks": {
+ "code": "ks",
+ "name": "Tiếng Kashmiri"
+ },
+ "kk": {
+ "code": "kk",
+ "name": "Tiếng Kazakh"
+ },
+ "km": {
+ "code": "km",
+ "name": "Tiếng Khơ-me"
+ },
+ "ki": {
+ "code": "ki",
+ "name": "Tiếng Kikuyu"
+ },
+ "khq": {
+ "code": "khq",
+ "name": "Tiếng Koyra Chiini"
+ },
+ "ses": {
+ "code": "ses",
+ "name": "Tiếng Koyraboro Senni"
+ },
+ "nmg": {
+ "code": "nmg",
+ "name": "Tiếng Kwasio"
+ },
+ "ky": {
+ "code": "ky",
+ "name": "Tiếng Kyrgyz"
+ },
+ "lag": {
+ "code": "lag",
+ "name": "Tiếng Langi"
+ },
+ "lo": {
+ "code": "lo",
+ "name": "Tiếng Lào"
+ },
+ "lv": {
+ "code": "lv",
+ "name": "Tiếng Latvia"
+ },
+ "ln": {
+ "code": "ln",
+ "name": "Tiếng Lingala"
+ },
+ "lt": {
+ "code": "lt",
+ "name": "Tiếng Lít-va"
+ },
+ "lu": {
+ "code": "lu",
+ "name": "Tiếng Luba-Katanga"
+ },
+ "luo": {
+ "code": "luo",
+ "name": "Tiếng Luo"
+ },
+ "lb": {
+ "code": "lb",
+ "name": "Tiếng Luxembourg"
+ },
+ "luy": {
+ "code": "luy",
+ "name": "Tiếng Luyia"
+ },
+ "mk": {
+ "code": "mk",
+ "name": "Tiếng Macedonia"
+ },
+ "jmc": {
+ "code": "jmc",
+ "name": "Tiếng Machame"
+ },
+ "mgh": {
+ "code": "mgh",
+ "name": "Tiếng Makhuwa-Meetto"
+ },
+ "kde": {
+ "code": "kde",
+ "name": "Tiếng Makonde"
+ },
+ "mg": {
+ "code": "mg",
+ "name": "Tiếng Malagasy"
+ },
+ "ml": {
+ "code": "ml",
+ "name": "Tiếng Malayalam"
+ },
+ "ms": {
+ "code": "ms",
+ "name": "Tiếng Malaysia"
+ },
+ "mt": {
+ "code": "mt",
+ "name": "Tiếng Malt"
+ },
+ "mr": {
+ "code": "mr",
+ "name": "Tiếng Marathi"
+ },
+ "mas": {
+ "code": "mas",
+ "name": "Tiếng Masai"
+ },
+ "mer": {
+ "code": "mer",
+ "name": "Tiếng Meru"
+ },
+ "my": {
+ "code": "my",
+ "name": "Tiếng Miến Äiện"
+ },
+ "ro-MD": {
+ "code": "ro-MD",
+ "name": "Tiếng Moldova"
+ },
+ "mfe": {
+ "code": "mfe",
+ "name": "Tiếng Morisyen"
+ },
+ "mn": {
+ "code": "mn",
+ "name": "Tiếng Mông Cổ"
+ },
+ "mua": {
+ "code": "mua",
+ "name": "Tiếng Mundang"
+ },
+ "nb": {
+ "code": "nb",
+ "name": "Tiếng Na Uy (Bokmål)"
+ },
+ "nn": {
+ "code": "nn",
+ "name": "Tiếng Na Uy (Nynorsk)"
+ },
+ "af": {
+ "code": "af",
+ "name": "Tiếng Nam Phi"
+ },
+ "bs": {
+ "code": "bs",
+ "name": "Tiếng Nam Tư"
+ },
+ "naq": {
+ "code": "naq",
+ "name": "Tiếng Nama"
+ },
+ "nd": {
+ "code": "nd",
+ "name": "Tiếng Ndebele Miá»n Bắc"
+ },
+ "ne": {
+ "code": "ne",
+ "name": "Tiếng Nepal"
+ },
+ "ru": {
+ "code": "ru",
+ "name": "Tiếng Nga"
+ },
+ "jgo": {
+ "code": "jgo",
+ "name": "Tiếng Ngomba"
+ },
+ "ja": {
+ "code": "ja",
+ "name": "Tiếng Nhật"
+ },
+ "nus": {
+ "code": "nus",
+ "name": "Tiếng Nuer"
+ },
+ "nyn": {
+ "code": "nyn",
+ "name": "Tiếng Nyankole"
+ },
+ "or": {
+ "code": "or",
+ "name": "Tiếng Oriya"
+ },
+ "ps": {
+ "code": "ps",
+ "name": "Tiếng Pashto"
+ },
+ "fr": {
+ "code": "fr",
+ "name": "Tiếng Pháp"
+ },
+ "fi": {
+ "code": "fi",
+ "name": "Tiếng Phần Lan"
+ },
+ "fil": {
+ "code": "fil",
+ "name": "Tiếng Philipin"
+ },
+ "pa": {
+ "code": "pa",
+ "name": "Tiếng Punjab"
+ },
+ "eo": {
+ "code": "eo",
+ "name": "Tiếng Quốc Tế Ngữ"
+ },
+ "rm": {
+ "code": "rm",
+ "name": "Tiếng Romansh"
+ },
+ "rof": {
+ "code": "rof",
+ "name": "Tiếng Rombo"
+ },
+ "ro": {
+ "code": "ro",
+ "name": "Tiếng Rumani"
+ },
+ "rn": {
+ "code": "rn",
+ "name": "Tiếng Rundi"
+ },
+ "rwk": {
+ "code": "rwk",
+ "name": "Tiếng Rwa"
+ },
+ "saq": {
+ "code": "saq",
+ "name": "Tiếng Samburu"
+ },
+ "se": {
+ "code": "se",
+ "name": "Tiếng Sami Miá»n Bắc"
+ },
+ "sg": {
+ "code": "sg",
+ "name": "Tiếng Sango"
+ },
+ "sbp": {
+ "code": "sbp",
+ "name": "Tiếng Sangu"
+ },
+ "cs": {
+ "code": "cs",
+ "name": "Tiếng Séc"
+ },
+ "seh": {
+ "code": "seh",
+ "name": "Tiếng Sena"
+ },
+ "sr": {
+ "code": "sr",
+ "name": "Tiếng Serbia"
+ },
+ "ksb": {
+ "code": "ksb",
+ "name": "Tiếng Shambala"
+ },
+ "sn": {
+ "code": "sn",
+ "name": "Tiếng Shona"
+ },
+ "si": {
+ "code": "si",
+ "name": "Tiếng Sinhala"
+ },
+ "sk": {
+ "code": "sk",
+ "name": "Tiếng Slovak"
+ },
+ "sl": {
+ "code": "sl",
+ "name": "Tiếng Slovenia"
+ },
+ "xog": {
+ "code": "xog",
+ "name": "Tiếng Soga"
+ },
+ "so": {
+ "code": "so",
+ "name": "Tiếng Somali"
+ },
+ "sw": {
+ "code": "sw",
+ "name": "Tiếng Swahili"
+ },
+ "swc": {
+ "code": "swc",
+ "name": "Tiếng Swahili Congo"
+ },
+ "shi": {
+ "code": "shi",
+ "name": "Tiếng Tachelhit"
+ },
+ "dav": {
+ "code": "dav",
+ "name": "Tiếng Taita"
+ },
+ "zgh": {
+ "code": "zgh",
+ "name": "Tiếng Tamazight Chuẩn của Ma-rốc"
+ },
+ "tzm": {
+ "code": "tzm",
+ "name": "Tiếng Tamazight Miá»n Trung Ma-rốc"
+ },
+ "ta": {
+ "code": "ta",
+ "name": "Tiếng Tamil"
+ },
+ "twq": {
+ "code": "twq",
+ "name": "Tiếng Tasawaq"
+ },
+ "es": {
+ "code": "es",
+ "name": "Tiếng Tây Ban Nha"
+ },
+ "bo": {
+ "code": "bo",
+ "name": "Tiếng Tây Tạng"
+ },
+ "te": {
+ "code": "te",
+ "name": "Tiếng Telugu"
+ },
+ "teo": {
+ "code": "teo",
+ "name": "Tiếng Teso"
+ },
+ "th": {
+ "code": "th",
+ "name": "Tiếng Thái"
+ },
+ "tr": {
+ "code": "tr",
+ "name": "Tiếng Thổ Nhĩ Kỳ"
+ },
+ "sv": {
+ "code": "sv",
+ "name": "Tiếng Thụy Äiển"
+ },
+ "de-CH": {
+ "code": "de-CH",
+ "name": "Tiếng Thượng Giéc-man (Thụy Sĩ)"
+ },
+ "hsb": {
+ "code": "hsb",
+ "name": "Tiếng Thượng Sorbia"
+ },
+ "ti": {
+ "code": "ti",
+ "name": "Tiếng Tigrigya"
+ },
+ "to": {
+ "code": "to",
+ "name": "Tiếng Tonga"
+ },
+ "zh": {
+ "code": "zh",
+ "name": "Tiếng Trung"
+ },
+ "uk": {
+ "code": "uk",
+ "name": "Tiếng Ucraina"
+ },
+ "ur": {
+ "code": "ur",
+ "name": "Tiếng Uđu"
+ },
+ "ug": {
+ "code": "ug",
+ "name": "Tiếng Uyghur"
+ },
+ "uz": {
+ "code": "uz",
+ "name": "Tiếng Uzbek"
+ },
+ "vai": {
+ "code": "vai",
+ "name": "Tiếng Vai"
+ },
+ "vi": {
+ "code": "vi",
+ "name": "Tiếng Việt"
+ },
+ "vun": {
+ "code": "vun",
+ "name": "Tiếng Vunjo"
+ },
+ "cy": {
+ "code": "cy",
+ "name": "Tiếng Wales"
+ },
+ "wae": {
+ "code": "wae",
+ "name": "Tiếng Walser"
+ },
+ "gd": {
+ "code": "gd",
+ "name": "Tiếng Xentơ (Xcốt len)"
+ },
+ "it": {
+ "code": "it",
+ "name": "Tiếng Ã"
+ },
+ "yav": {
+ "code": "yav",
+ "name": "Tiếng Yangben"
+ },
+ "yo": {
+ "code": "yo",
+ "name": "Tiếng Yoruba"
+ },
+ "dje": {
+ "code": "dje",
+ "name": "Tiếng Zarma"
+ },
+ "zu": {
+ "code": "zu",
+ "name": "Tiếng Zulu"
+ },
+ "zh-Hans": {
+ "code": "zh-Hans",
+ "name": "zh_Hans"
+ },
+ "zh-Hant": {
+ "code": "zh-Hant",
+ "name": "zh_Hant"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/language/vun.json b/library/intl/resources/language/vun.json
new file mode 100644
index 000000000..f8f0b4735
--- /dev/null
+++ b/library/intl/resources/language/vun.json
@@ -0,0 +1,738 @@
+{
+ "af": {
+ "code": "af",
+ "name": "Afrikaans"
+ },
+ "agq": {
+ "code": "agq",
+ "name": "Aghem"
+ },
+ "sq": {
+ "code": "sq",
+ "name": "Albanian"
+ },
+ "ar-001": {
+ "code": "ar-001",
+ "name": "ar_001"
+ },
+ "hy": {
+ "code": "hy",
+ "name": "Armenian"
+ },
+ "ast": {
+ "code": "ast",
+ "name": "Asturian"
+ },
+ "asa": {
+ "code": "asa",
+ "name": "Asu"
+ },
+ "az": {
+ "code": "az",
+ "name": "Azerbaijani"
+ },
+ "ksf": {
+ "code": "ksf",
+ "name": "Bafia"
+ },
+ "bm": {
+ "code": "bm",
+ "name": "Bambara"
+ },
+ "bas": {
+ "code": "bas",
+ "name": "Basaa"
+ },
+ "eu": {
+ "code": "eu",
+ "name": "Basque"
+ },
+ "bez": {
+ "code": "bez",
+ "name": "Bena"
+ },
+ "brx": {
+ "code": "brx",
+ "name": "Bodo"
+ },
+ "bs": {
+ "code": "bs",
+ "name": "Bosnian"
+ },
+ "br": {
+ "code": "br",
+ "name": "Breton"
+ },
+ "ca": {
+ "code": "ca",
+ "name": "Catalan"
+ },
+ "tzm": {
+ "code": "tzm",
+ "name": "Central Atlas Tamazight"
+ },
+ "chr": {
+ "code": "chr",
+ "name": "Cherokee"
+ },
+ "cgg": {
+ "code": "cgg",
+ "name": "Chiga"
+ },
+ "ksh": {
+ "code": "ksh",
+ "name": "Colognian"
+ },
+ "swc": {
+ "code": "swc",
+ "name": "Congo Swahili"
+ },
+ "hr": {
+ "code": "hr",
+ "name": "Croatian"
+ },
+ "da": {
+ "code": "da",
+ "name": "Danish"
+ },
+ "de-AT": {
+ "code": "de-AT",
+ "name": "de_AT"
+ },
+ "de-CH": {
+ "code": "de-CH",
+ "name": "de_CH"
+ },
+ "dz": {
+ "code": "dz",
+ "name": "Dzongkha"
+ },
+ "ebu": {
+ "code": "ebu",
+ "name": "Embu"
+ },
+ "en-AU": {
+ "code": "en-AU",
+ "name": "en_AU"
+ },
+ "en-CA": {
+ "code": "en-CA",
+ "name": "en_CA"
+ },
+ "en-GB": {
+ "code": "en-GB",
+ "name": "en_GB"
+ },
+ "en-US": {
+ "code": "en-US",
+ "name": "en_US"
+ },
+ "es-ES": {
+ "code": "es-ES",
+ "name": "es_ES"
+ },
+ "es-MX": {
+ "code": "es-MX",
+ "name": "es_MX"
+ },
+ "eo": {
+ "code": "eo",
+ "name": "Esperanto"
+ },
+ "et": {
+ "code": "et",
+ "name": "Estonian"
+ },
+ "ee": {
+ "code": "ee",
+ "name": "Ewe"
+ },
+ "ewo": {
+ "code": "ewo",
+ "name": "Ewondo"
+ },
+ "fo": {
+ "code": "fo",
+ "name": "Faroese"
+ },
+ "fil": {
+ "code": "fil",
+ "name": "Filipino"
+ },
+ "fi": {
+ "code": "fi",
+ "name": "Finnish"
+ },
+ "fr-CA": {
+ "code": "fr-CA",
+ "name": "fr_CA"
+ },
+ "fr-CH": {
+ "code": "fr-CH",
+ "name": "fr_CH"
+ },
+ "fur": {
+ "code": "fur",
+ "name": "Friulian"
+ },
+ "ff": {
+ "code": "ff",
+ "name": "Fulah"
+ },
+ "gl": {
+ "code": "gl",
+ "name": "Galician"
+ },
+ "lg": {
+ "code": "lg",
+ "name": "Ganda"
+ },
+ "ka": {
+ "code": "ka",
+ "name": "Georgian"
+ },
+ "gu": {
+ "code": "gu",
+ "name": "Gujarati"
+ },
+ "guz": {
+ "code": "guz",
+ "name": "Gusii"
+ },
+ "he": {
+ "code": "he",
+ "name": "Hebrew"
+ },
+ "is": {
+ "code": "is",
+ "name": "Icelandic"
+ },
+ "ga": {
+ "code": "ga",
+ "name": "Irish"
+ },
+ "dyo": {
+ "code": "dyo",
+ "name": "Jola-Fonyi"
+ },
+ "kea": {
+ "code": "kea",
+ "name": "Kabuverdianu"
+ },
+ "kab": {
+ "code": "kab",
+ "name": "Kabyle"
+ },
+ "kl": {
+ "code": "kl",
+ "name": "Kalaallisut"
+ },
+ "kln": {
+ "code": "kln",
+ "name": "Kalenjin"
+ },
+ "kam": {
+ "code": "kam",
+ "name": "Kamba"
+ },
+ "kn": {
+ "code": "kn",
+ "name": "Kannada"
+ },
+ "ks": {
+ "code": "ks",
+ "name": "Kashmiri"
+ },
+ "kk": {
+ "code": "kk",
+ "name": "Kazakh"
+ },
+ "ak": {
+ "code": "ak",
+ "name": "Kiakanyi"
+ },
+ "am": {
+ "code": "am",
+ "name": "Kiamharyi"
+ },
+ "ki": {
+ "code": "ki",
+ "name": "Kikuyu"
+ },
+ "khq": {
+ "code": "khq",
+ "name": "Koyra Chiini"
+ },
+ "ses": {
+ "code": "ses",
+ "name": "Koyraboro Senni"
+ },
+ "nmg": {
+ "code": "nmg",
+ "name": "Kwasio"
+ },
+ "fa": {
+ "code": "fa",
+ "name": "Kyiajemi"
+ },
+ "ar": {
+ "code": "ar",
+ "name": "Kyiarabu"
+ },
+ "bn": {
+ "code": "bn",
+ "name": "Kyibangla"
+ },
+ "be": {
+ "code": "be",
+ "name": "Kyibelarusi"
+ },
+ "bg": {
+ "code": "bg",
+ "name": "Kyibulgaryia"
+ },
+ "my": {
+ "code": "my",
+ "name": "Kyiburma"
+ },
+ "cs": {
+ "code": "cs",
+ "name": "Kyichecki"
+ },
+ "zh": {
+ "code": "zh",
+ "name": "Kyichina"
+ },
+ "fr": {
+ "code": "fr",
+ "name": "Kyifaransa"
+ },
+ "el": {
+ "code": "el",
+ "name": "Kyigiriki"
+ },
+ "ha": {
+ "code": "ha",
+ "name": "Kyihausa"
+ },
+ "hi": {
+ "code": "hi",
+ "name": "Kyihindi"
+ },
+ "es": {
+ "code": "es",
+ "name": "Kyihispania"
+ },
+ "nl": {
+ "code": "nl",
+ "name": "Kyiholanzi"
+ },
+ "hu": {
+ "code": "hu",
+ "name": "Kyihungari"
+ },
+ "id": {
+ "code": "id",
+ "name": "Kyiindonesia"
+ },
+ "it": {
+ "code": "it",
+ "name": "Kyiitaliano"
+ },
+ "ja": {
+ "code": "ja",
+ "name": "Kyijapani"
+ },
+ "de": {
+ "code": "de",
+ "name": "Kyijerumani"
+ },
+ "km": {
+ "code": "km",
+ "name": "Kyikambodia"
+ },
+ "ko": {
+ "code": "ko",
+ "name": "Kyikorea"
+ },
+ "ms": {
+ "code": "ms",
+ "name": "Kyimalesia"
+ },
+ "ne": {
+ "code": "ne",
+ "name": "Kyinepali"
+ },
+ "en": {
+ "code": "en",
+ "name": "Kyingereza"
+ },
+ "pl": {
+ "code": "pl",
+ "name": "Kyipolandi"
+ },
+ "pa": {
+ "code": "pa",
+ "name": "Kyipunjabi"
+ },
+ "pt": {
+ "code": "pt",
+ "name": "Kyireno"
+ },
+ "ro": {
+ "code": "ro",
+ "name": "Kyiromania"
+ },
+ "ru": {
+ "code": "ru",
+ "name": "Kyirusi"
+ },
+ "so": {
+ "code": "so",
+ "name": "Kyisomalyi"
+ },
+ "sv": {
+ "code": "sv",
+ "name": "Kyiswidi"
+ },
+ "th": {
+ "code": "th",
+ "name": "Kyitailandi"
+ },
+ "ta": {
+ "code": "ta",
+ "name": "Kyitamil"
+ },
+ "tr": {
+ "code": "tr",
+ "name": "Kyiturukyi"
+ },
+ "uk": {
+ "code": "uk",
+ "name": "Kyiukrania"
+ },
+ "ur": {
+ "code": "ur",
+ "name": "Kyiurdu"
+ },
+ "vi": {
+ "code": "vi",
+ "name": "Kyivietinamu"
+ },
+ "vun": {
+ "code": "vun",
+ "name": "Kyivunjo"
+ },
+ "yo": {
+ "code": "yo",
+ "name": "Kyiyoruba"
+ },
+ "zu": {
+ "code": "zu",
+ "name": "Kyizulu"
+ },
+ "ky": {
+ "code": "ky",
+ "name": "Kyrgyz"
+ },
+ "lag": {
+ "code": "lag",
+ "name": "Langi"
+ },
+ "lo": {
+ "code": "lo",
+ "name": "Lao"
+ },
+ "lv": {
+ "code": "lv",
+ "name": "Latvian"
+ },
+ "ln": {
+ "code": "ln",
+ "name": "Lingala"
+ },
+ "lt": {
+ "code": "lt",
+ "name": "Lithuanian"
+ },
+ "dsb": {
+ "code": "dsb",
+ "name": "Lower Sorbian"
+ },
+ "lu": {
+ "code": "lu",
+ "name": "Luba-Katanga"
+ },
+ "luo": {
+ "code": "luo",
+ "name": "Luo"
+ },
+ "lb": {
+ "code": "lb",
+ "name": "Luxembourgish"
+ },
+ "luy": {
+ "code": "luy",
+ "name": "Luyia"
+ },
+ "mk": {
+ "code": "mk",
+ "name": "Macedonian"
+ },
+ "jmc": {
+ "code": "jmc",
+ "name": "Machame"
+ },
+ "mgh": {
+ "code": "mgh",
+ "name": "Makhuwa-Meetto"
+ },
+ "kde": {
+ "code": "kde",
+ "name": "Makonde"
+ },
+ "mg": {
+ "code": "mg",
+ "name": "Malagasy"
+ },
+ "ml": {
+ "code": "ml",
+ "name": "Malayalam"
+ },
+ "mt": {
+ "code": "mt",
+ "name": "Maltese"
+ },
+ "mr": {
+ "code": "mr",
+ "name": "Marathi"
+ },
+ "mas": {
+ "code": "mas",
+ "name": "Masai"
+ },
+ "mer": {
+ "code": "mer",
+ "name": "Meru"
+ },
+ "mn": {
+ "code": "mn",
+ "name": "Mongolian"
+ },
+ "mfe": {
+ "code": "mfe",
+ "name": "Morisyen"
+ },
+ "mua": {
+ "code": "mua",
+ "name": "Mundang"
+ },
+ "naq": {
+ "code": "naq",
+ "name": "Nama"
+ },
+ "jgo": {
+ "code": "jgo",
+ "name": "Ngomba"
+ },
+ "nl-BE": {
+ "code": "nl-BE",
+ "name": "nl_BE"
+ },
+ "nd": {
+ "code": "nd",
+ "name": "North Ndebele"
+ },
+ "se": {
+ "code": "se",
+ "name": "Northern Sami"
+ },
+ "nb": {
+ "code": "nb",
+ "name": "Norwegian Bokmål"
+ },
+ "nn": {
+ "code": "nn",
+ "name": "Norwegian Nynorsk"
+ },
+ "nus": {
+ "code": "nus",
+ "name": "Nuer"
+ },
+ "nyn": {
+ "code": "nyn",
+ "name": "Nyankole"
+ },
+ "or": {
+ "code": "or",
+ "name": "Oriya"
+ },
+ "ps": {
+ "code": "ps",
+ "name": "Pashto"
+ },
+ "pt-BR": {
+ "code": "pt-BR",
+ "name": "pt_BR"
+ },
+ "pt-PT": {
+ "code": "pt-PT",
+ "name": "pt_PT"
+ },
+ "ro-MD": {
+ "code": "ro-MD",
+ "name": "ro_MD"
+ },
+ "rm": {
+ "code": "rm",
+ "name": "Romansh"
+ },
+ "rof": {
+ "code": "rof",
+ "name": "Rombo"
+ },
+ "rn": {
+ "code": "rn",
+ "name": "Rundi"
+ },
+ "rwk": {
+ "code": "rwk",
+ "name": "Rwa"
+ },
+ "saq": {
+ "code": "saq",
+ "name": "Samburu"
+ },
+ "sg": {
+ "code": "sg",
+ "name": "Sango"
+ },
+ "sbp": {
+ "code": "sbp",
+ "name": "Sangu"
+ },
+ "gd": {
+ "code": "gd",
+ "name": "Scottish Gaelic"
+ },
+ "seh": {
+ "code": "seh",
+ "name": "Sena"
+ },
+ "sr": {
+ "code": "sr",
+ "name": "Serbian"
+ },
+ "ksb": {
+ "code": "ksb",
+ "name": "Shambala"
+ },
+ "sn": {
+ "code": "sn",
+ "name": "Shona"
+ },
+ "si": {
+ "code": "si",
+ "name": "Sinhala"
+ },
+ "sk": {
+ "code": "sk",
+ "name": "Slovak"
+ },
+ "sl": {
+ "code": "sl",
+ "name": "Slovenian"
+ },
+ "xog": {
+ "code": "xog",
+ "name": "Soga"
+ },
+ "zgh": {
+ "code": "zgh",
+ "name": "Standard Moroccan Tamazight"
+ },
+ "sw": {
+ "code": "sw",
+ "name": "Swahili"
+ },
+ "gsw": {
+ "code": "gsw",
+ "name": "Swiss German"
+ },
+ "shi": {
+ "code": "shi",
+ "name": "Tachelhit"
+ },
+ "dav": {
+ "code": "dav",
+ "name": "Taita"
+ },
+ "twq": {
+ "code": "twq",
+ "name": "Tasawaq"
+ },
+ "te": {
+ "code": "te",
+ "name": "Telugu"
+ },
+ "teo": {
+ "code": "teo",
+ "name": "Teso"
+ },
+ "bo": {
+ "code": "bo",
+ "name": "Tibetan"
+ },
+ "ti": {
+ "code": "ti",
+ "name": "Tigrinya"
+ },
+ "to": {
+ "code": "to",
+ "name": "Tongan"
+ },
+ "hsb": {
+ "code": "hsb",
+ "name": "Upper Sorbian"
+ },
+ "ug": {
+ "code": "ug",
+ "name": "Uyghur"
+ },
+ "uz": {
+ "code": "uz",
+ "name": "Uzbek"
+ },
+ "vai": {
+ "code": "vai",
+ "name": "Vai"
+ },
+ "wae": {
+ "code": "wae",
+ "name": "Walser"
+ },
+ "cy": {
+ "code": "cy",
+ "name": "Welsh"
+ },
+ "fy": {
+ "code": "fy",
+ "name": "Western Frisian"
+ },
+ "yav": {
+ "code": "yav",
+ "name": "Yangben"
+ },
+ "dje": {
+ "code": "dje",
+ "name": "Zarma"
+ },
+ "zh-Hans": {
+ "code": "zh-Hans",
+ "name": "zh_Hans"
+ },
+ "zh-Hant": {
+ "code": "zh-Hant",
+ "name": "zh_Hant"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/language/wae.json b/library/intl/resources/language/wae.json
new file mode 100644
index 000000000..69098e0c8
--- /dev/null
+++ b/library/intl/resources/language/wae.json
@@ -0,0 +1,738 @@
+{
+ "af": {
+ "code": "af",
+ "name": "Afrikáns"
+ },
+ "agq": {
+ "code": "agq",
+ "name": "Aghem"
+ },
+ "ak": {
+ "code": "ak",
+ "name": "Akan"
+ },
+ "sq": {
+ "code": "sq",
+ "name": "Albaniš"
+ },
+ "en-US": {
+ "code": "en-US",
+ "name": "Amerikanišes Engliš"
+ },
+ "am": {
+ "code": "am",
+ "name": "Amhariš"
+ },
+ "ar-001": {
+ "code": "ar-001",
+ "name": "ar_001"
+ },
+ "ar": {
+ "code": "ar",
+ "name": "Arabiš"
+ },
+ "hy": {
+ "code": "hy",
+ "name": "Armeniš"
+ },
+ "ast": {
+ "code": "ast",
+ "name": "Asturian"
+ },
+ "asa": {
+ "code": "asa",
+ "name": "Asu"
+ },
+ "en-AU": {
+ "code": "en-AU",
+ "name": "Auštrališes Engliš"
+ },
+ "ksf": {
+ "code": "ksf",
+ "name": "Bafia"
+ },
+ "bm": {
+ "code": "bm",
+ "name": "Bambara"
+ },
+ "bas": {
+ "code": "bas",
+ "name": "Basaa"
+ },
+ "eu": {
+ "code": "eu",
+ "name": "Baskiš"
+ },
+ "bez": {
+ "code": "bez",
+ "name": "Bena"
+ },
+ "bn": {
+ "code": "bn",
+ "name": "Bengališ"
+ },
+ "brx": {
+ "code": "brx",
+ "name": "Bodo"
+ },
+ "bs": {
+ "code": "bs",
+ "name": "Bosniš"
+ },
+ "pt-BR": {
+ "code": "pt-BR",
+ "name": "Brasilianišes Portugisiš"
+ },
+ "br": {
+ "code": "br",
+ "name": "Breton"
+ },
+ "en-GB": {
+ "code": "en-GB",
+ "name": "Britišes Engliš"
+ },
+ "bg": {
+ "code": "bg",
+ "name": "Bulgariš"
+ },
+ "my": {
+ "code": "my",
+ "name": "Burmesiš"
+ },
+ "dz": {
+ "code": "dz",
+ "name": "Butaniš"
+ },
+ "tzm": {
+ "code": "tzm",
+ "name": "Central Atlas Tamazight"
+ },
+ "chr": {
+ "code": "chr",
+ "name": "Cherokee"
+ },
+ "cgg": {
+ "code": "cgg",
+ "name": "Chiga"
+ },
+ "zh": {
+ "code": "zh",
+ "name": "Chinesiš"
+ },
+ "ksh": {
+ "code": "ksh",
+ "name": "Colognian"
+ },
+ "swc": {
+ "code": "swc",
+ "name": "Congo Swahili"
+ },
+ "da": {
+ "code": "da",
+ "name": "Däniš"
+ },
+ "ebu": {
+ "code": "ebu",
+ "name": "Embu"
+ },
+ "en": {
+ "code": "en",
+ "name": "Engliš"
+ },
+ "es-MX": {
+ "code": "es-MX",
+ "name": "es_MX"
+ },
+ "eo": {
+ "code": "eo",
+ "name": "Esperanto"
+ },
+ "et": {
+ "code": "et",
+ "name": "Estniš"
+ },
+ "ee": {
+ "code": "ee",
+ "name": "Ewe"
+ },
+ "ewo": {
+ "code": "ewo",
+ "name": "Ewondo"
+ },
+ "fo": {
+ "code": "fo",
+ "name": "Faroese"
+ },
+ "fil": {
+ "code": "fil",
+ "name": "Filipiniš"
+ },
+ "fi": {
+ "code": "fi",
+ "name": "Finiš"
+ },
+ "nl-BE": {
+ "code": "nl-BE",
+ "name": "Flämiš"
+ },
+ "fur": {
+ "code": "fur",
+ "name": "Friulian"
+ },
+ "ff": {
+ "code": "ff",
+ "name": "Fulah"
+ },
+ "gl": {
+ "code": "gl",
+ "name": "Galiziš"
+ },
+ "lg": {
+ "code": "lg",
+ "name": "Ganda"
+ },
+ "ka": {
+ "code": "ka",
+ "name": "Georgiš"
+ },
+ "el": {
+ "code": "el",
+ "name": "GriÄiÅ¡"
+ },
+ "gu": {
+ "code": "gu",
+ "name": "Gujarati"
+ },
+ "guz": {
+ "code": "guz",
+ "name": "Gusii"
+ },
+ "ha": {
+ "code": "ha",
+ "name": "Hausa"
+ },
+ "he": {
+ "code": "he",
+ "name": "Hebräiš"
+ },
+ "hi": {
+ "code": "hi",
+ "name": "Hindi"
+ },
+ "nl": {
+ "code": "nl",
+ "name": "Holändiš"
+ },
+ "pt-PT": {
+ "code": "pt-PT",
+ "name": "Iberišes Portugisiš"
+ },
+ "es-ES": {
+ "code": "es-ES",
+ "name": "Iberišes Schpaniš"
+ },
+ "is": {
+ "code": "is",
+ "name": "Iisländiš"
+ },
+ "id": {
+ "code": "id",
+ "name": "Indonesiš"
+ },
+ "ga": {
+ "code": "ga",
+ "name": "Iriš"
+ },
+ "it": {
+ "code": "it",
+ "name": "Italieniš"
+ },
+ "ja": {
+ "code": "ja",
+ "name": "Japaniš"
+ },
+ "dyo": {
+ "code": "dyo",
+ "name": "Jola-Fonyi"
+ },
+ "kea": {
+ "code": "kea",
+ "name": "Kabuverdianu"
+ },
+ "kab": {
+ "code": "kab",
+ "name": "Kabyle"
+ },
+ "kl": {
+ "code": "kl",
+ "name": "Kalaallisut"
+ },
+ "kln": {
+ "code": "kln",
+ "name": "Kalenjin"
+ },
+ "kam": {
+ "code": "kam",
+ "name": "Kamba"
+ },
+ "km": {
+ "code": "km",
+ "name": "Kambodšaniš"
+ },
+ "en-CA": {
+ "code": "en-CA",
+ "name": "Kanadišes Engliš"
+ },
+ "fr-CA": {
+ "code": "fr-CA",
+ "name": "Kanadišes Wälš"
+ },
+ "kn": {
+ "code": "kn",
+ "name": "Kannada"
+ },
+ "ks": {
+ "code": "ks",
+ "name": "Kašmiriš"
+ },
+ "ca": {
+ "code": "ca",
+ "name": "Katalaniš"
+ },
+ "kk": {
+ "code": "kk",
+ "name": "KazaÄiÅ¡"
+ },
+ "ki": {
+ "code": "ki",
+ "name": "Kikuyu"
+ },
+ "ky": {
+ "code": "ky",
+ "name": "Kirgisiš"
+ },
+ "ko": {
+ "code": "ko",
+ "name": "Koreaniš"
+ },
+ "khq": {
+ "code": "khq",
+ "name": "Koyra Chiini"
+ },
+ "ses": {
+ "code": "ses",
+ "name": "Koyraboro Senni"
+ },
+ "hr": {
+ "code": "hr",
+ "name": "Kroatiš"
+ },
+ "nmg": {
+ "code": "nmg",
+ "name": "Kwasio"
+ },
+ "lag": {
+ "code": "lag",
+ "name": "Langi"
+ },
+ "lo": {
+ "code": "lo",
+ "name": "Laotiš"
+ },
+ "lv": {
+ "code": "lv",
+ "name": "Lettiš"
+ },
+ "ln": {
+ "code": "ln",
+ "name": "Lingala"
+ },
+ "lt": {
+ "code": "lt",
+ "name": "Litauiš"
+ },
+ "dsb": {
+ "code": "dsb",
+ "name": "Lower Sorbian"
+ },
+ "lu": {
+ "code": "lu",
+ "name": "Luba-Katanga"
+ },
+ "luo": {
+ "code": "luo",
+ "name": "Luo"
+ },
+ "lb": {
+ "code": "lb",
+ "name": "Luxemburgiš"
+ },
+ "luy": {
+ "code": "luy",
+ "name": "Luyia"
+ },
+ "jmc": {
+ "code": "jmc",
+ "name": "Machame"
+ },
+ "mgh": {
+ "code": "mgh",
+ "name": "Makhuwa-Meetto"
+ },
+ "kde": {
+ "code": "kde",
+ "name": "Makonde"
+ },
+ "mg": {
+ "code": "mg",
+ "name": "Malagási"
+ },
+ "ms": {
+ "code": "ms",
+ "name": "Malaíš"
+ },
+ "ml": {
+ "code": "ml",
+ "name": "Malayalam"
+ },
+ "mt": {
+ "code": "mt",
+ "name": "Maltesiš"
+ },
+ "mr": {
+ "code": "mr",
+ "name": "Marathi"
+ },
+ "mas": {
+ "code": "mas",
+ "name": "Masai"
+ },
+ "mk": {
+ "code": "mk",
+ "name": "Mazedoniš"
+ },
+ "mer": {
+ "code": "mer",
+ "name": "Meru"
+ },
+ "mn": {
+ "code": "mn",
+ "name": "Mongoliš"
+ },
+ "mfe": {
+ "code": "mfe",
+ "name": "Morisyen"
+ },
+ "mua": {
+ "code": "mua",
+ "name": "Mundang"
+ },
+ "naq": {
+ "code": "naq",
+ "name": "Nama"
+ },
+ "ne": {
+ "code": "ne",
+ "name": "Nepalesiš"
+ },
+ "jgo": {
+ "code": "jgo",
+ "name": "Ngomba"
+ },
+ "nd": {
+ "code": "nd",
+ "name": "Nordndebele"
+ },
+ "se": {
+ "code": "se",
+ "name": "Nordsamiš"
+ },
+ "nb": {
+ "code": "nb",
+ "name": "Norwegiš Bokmål"
+ },
+ "nn": {
+ "code": "nn",
+ "name": "Norwegiš Nynorsk"
+ },
+ "nus": {
+ "code": "nus",
+ "name": "Nuer"
+ },
+ "nyn": {
+ "code": "nyn",
+ "name": "Nyankole"
+ },
+ "or": {
+ "code": "or",
+ "name": "Oriya"
+ },
+ "de-AT": {
+ "code": "de-AT",
+ "name": "ÖštriÄiÅ¡es TitÅ¡"
+ },
+ "pa": {
+ "code": "pa",
+ "name": "Pandšabiš"
+ },
+ "ps": {
+ "code": "ps",
+ "name": "Paštu"
+ },
+ "fa": {
+ "code": "fa",
+ "name": "Persiš"
+ },
+ "pl": {
+ "code": "pl",
+ "name": "Polniš"
+ },
+ "pt": {
+ "code": "pt",
+ "name": "Portugisiš"
+ },
+ "rm": {
+ "code": "rm",
+ "name": "Rätromaniš"
+ },
+ "ro-MD": {
+ "code": "ro-MD",
+ "name": "ro_MD"
+ },
+ "rof": {
+ "code": "rof",
+ "name": "Rombo"
+ },
+ "ro": {
+ "code": "ro",
+ "name": "Rumäniš"
+ },
+ "rn": {
+ "code": "rn",
+ "name": "Rundi"
+ },
+ "ru": {
+ "code": "ru",
+ "name": "Rusiš"
+ },
+ "rwk": {
+ "code": "rwk",
+ "name": "Rwa"
+ },
+ "saq": {
+ "code": "saq",
+ "name": "Samburu"
+ },
+ "sg": {
+ "code": "sg",
+ "name": "Sango"
+ },
+ "sbp": {
+ "code": "sbp",
+ "name": "Sangu"
+ },
+ "es": {
+ "code": "es",
+ "name": "Schpaniš"
+ },
+ "sv": {
+ "code": "sv",
+ "name": "Schwediš"
+ },
+ "de-CH": {
+ "code": "de-CH",
+ "name": "Schwizer HoÄtitÅ¡"
+ },
+ "fr-CH": {
+ "code": "fr-CH",
+ "name": "Schwizer Wälš"
+ },
+ "gd": {
+ "code": "gd",
+ "name": "Scottish Gaelic"
+ },
+ "seh": {
+ "code": "seh",
+ "name": "Sena"
+ },
+ "az": {
+ "code": "az",
+ "name": "Serbaidšaniš"
+ },
+ "sr": {
+ "code": "sr",
+ "name": "Serbiš"
+ },
+ "ksb": {
+ "code": "ksb",
+ "name": "Shambala"
+ },
+ "sn": {
+ "code": "sn",
+ "name": "Shona"
+ },
+ "si": {
+ "code": "si",
+ "name": "Singalesiš"
+ },
+ "sk": {
+ "code": "sk",
+ "name": "Slowakiš"
+ },
+ "sl": {
+ "code": "sl",
+ "name": "Sloweniš"
+ },
+ "xog": {
+ "code": "xog",
+ "name": "Soga"
+ },
+ "so": {
+ "code": "so",
+ "name": "Somališ"
+ },
+ "zgh": {
+ "code": "zgh",
+ "name": "Standard Moroccan Tamazight"
+ },
+ "sw": {
+ "code": "sw",
+ "name": "Suaheliš"
+ },
+ "gsw": {
+ "code": "gsw",
+ "name": "Swiss German"
+ },
+ "shi": {
+ "code": "shi",
+ "name": "Tachelhit"
+ },
+ "dav": {
+ "code": "dav",
+ "name": "Taita"
+ },
+ "ta": {
+ "code": "ta",
+ "name": "Tamiliš"
+ },
+ "twq": {
+ "code": "twq",
+ "name": "Tasawaq"
+ },
+ "te": {
+ "code": "te",
+ "name": "Telugu"
+ },
+ "teo": {
+ "code": "teo",
+ "name": "Teso"
+ },
+ "th": {
+ "code": "th",
+ "name": "Thailändiš"
+ },
+ "bo": {
+ "code": "bo",
+ "name": "Tibetiš"
+ },
+ "ti": {
+ "code": "ti",
+ "name": "Tigrinja"
+ },
+ "de": {
+ "code": "de",
+ "name": "Titš"
+ },
+ "to": {
+ "code": "to",
+ "name": "Tonga"
+ },
+ "zh-Hant": {
+ "code": "zh-Hant",
+ "name": "Traditionells Chinesiš"
+ },
+ "cs": {
+ "code": "cs",
+ "name": "TÅ¡eÄiÅ¡"
+ },
+ "tr": {
+ "code": "tr",
+ "name": "Türkiš"
+ },
+ "ug": {
+ "code": "ug",
+ "name": "Uiguriš"
+ },
+ "uk": {
+ "code": "uk",
+ "name": "Ukrainiš"
+ },
+ "hu": {
+ "code": "hu",
+ "name": "Ungariš"
+ },
+ "hsb": {
+ "code": "hsb",
+ "name": "Upper Sorbian"
+ },
+ "ur": {
+ "code": "ur",
+ "name": "Urdu"
+ },
+ "uz": {
+ "code": "uz",
+ "name": "Usbekiš"
+ },
+ "vai": {
+ "code": "vai",
+ "name": "Vai"
+ },
+ "zh-Hans": {
+ "code": "zh-Hans",
+ "name": "VereifaÄts ChinesiÅ¡"
+ },
+ "vi": {
+ "code": "vi",
+ "name": "Vietnamesiš"
+ },
+ "vun": {
+ "code": "vun",
+ "name": "Vunjo"
+ },
+ "cy": {
+ "code": "cy",
+ "name": "Walisiš"
+ },
+ "fr": {
+ "code": "fr",
+ "name": "Wälš"
+ },
+ "wae": {
+ "code": "wae",
+ "name": "Walser"
+ },
+ "fy": {
+ "code": "fy",
+ "name": "Western Frisian"
+ },
+ "be": {
+ "code": "be",
+ "name": "Wísrussiš"
+ },
+ "yav": {
+ "code": "yav",
+ "name": "Yangben"
+ },
+ "yo": {
+ "code": "yo",
+ "name": "Yoruba"
+ },
+ "dje": {
+ "code": "dje",
+ "name": "Zarma"
+ },
+ "zu": {
+ "code": "zu",
+ "name": "Zulu"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/language/xog.json b/library/intl/resources/language/xog.json
new file mode 100644
index 000000000..41ce6cd02
--- /dev/null
+++ b/library/intl/resources/language/xog.json
@@ -0,0 +1,738 @@
+{
+ "af": {
+ "code": "af",
+ "name": "Afrikaans"
+ },
+ "agq": {
+ "code": "agq",
+ "name": "Aghem"
+ },
+ "sq": {
+ "code": "sq",
+ "name": "Albanian"
+ },
+ "ar-001": {
+ "code": "ar-001",
+ "name": "ar_001"
+ },
+ "hy": {
+ "code": "hy",
+ "name": "Armenian"
+ },
+ "ast": {
+ "code": "ast",
+ "name": "Asturian"
+ },
+ "asa": {
+ "code": "asa",
+ "name": "Asu"
+ },
+ "az": {
+ "code": "az",
+ "name": "Azerbaijani"
+ },
+ "ksf": {
+ "code": "ksf",
+ "name": "Bafia"
+ },
+ "bm": {
+ "code": "bm",
+ "name": "Bambara"
+ },
+ "bas": {
+ "code": "bas",
+ "name": "Basaa"
+ },
+ "eu": {
+ "code": "eu",
+ "name": "Basque"
+ },
+ "bez": {
+ "code": "bez",
+ "name": "Bena"
+ },
+ "brx": {
+ "code": "brx",
+ "name": "Bodo"
+ },
+ "bs": {
+ "code": "bs",
+ "name": "Bosnian"
+ },
+ "br": {
+ "code": "br",
+ "name": "Breton"
+ },
+ "ca": {
+ "code": "ca",
+ "name": "Catalan"
+ },
+ "tzm": {
+ "code": "tzm",
+ "name": "Central Atlas Tamazight"
+ },
+ "chr": {
+ "code": "chr",
+ "name": "Cherokee"
+ },
+ "cgg": {
+ "code": "cgg",
+ "name": "Chiga"
+ },
+ "ksh": {
+ "code": "ksh",
+ "name": "Colognian"
+ },
+ "swc": {
+ "code": "swc",
+ "name": "Congo Swahili"
+ },
+ "hr": {
+ "code": "hr",
+ "name": "Croatian"
+ },
+ "da": {
+ "code": "da",
+ "name": "Danish"
+ },
+ "de-AT": {
+ "code": "de-AT",
+ "name": "de_AT"
+ },
+ "de-CH": {
+ "code": "de-CH",
+ "name": "de_CH"
+ },
+ "dz": {
+ "code": "dz",
+ "name": "Dzongkha"
+ },
+ "ebu": {
+ "code": "ebu",
+ "name": "Embu"
+ },
+ "en-AU": {
+ "code": "en-AU",
+ "name": "en_AU"
+ },
+ "en-CA": {
+ "code": "en-CA",
+ "name": "en_CA"
+ },
+ "en-GB": {
+ "code": "en-GB",
+ "name": "en_GB"
+ },
+ "en-US": {
+ "code": "en-US",
+ "name": "en_US"
+ },
+ "es-ES": {
+ "code": "es-ES",
+ "name": "es_ES"
+ },
+ "es-MX": {
+ "code": "es-MX",
+ "name": "es_MX"
+ },
+ "eo": {
+ "code": "eo",
+ "name": "Esperanto"
+ },
+ "et": {
+ "code": "et",
+ "name": "Estonian"
+ },
+ "ee": {
+ "code": "ee",
+ "name": "Ewe"
+ },
+ "ewo": {
+ "code": "ewo",
+ "name": "Ewondo"
+ },
+ "fo": {
+ "code": "fo",
+ "name": "Faroese"
+ },
+ "fil": {
+ "code": "fil",
+ "name": "Filipino"
+ },
+ "fi": {
+ "code": "fi",
+ "name": "Finnish"
+ },
+ "fr-CA": {
+ "code": "fr-CA",
+ "name": "fr_CA"
+ },
+ "fr-CH": {
+ "code": "fr-CH",
+ "name": "fr_CH"
+ },
+ "fur": {
+ "code": "fur",
+ "name": "Friulian"
+ },
+ "ff": {
+ "code": "ff",
+ "name": "Fulah"
+ },
+ "gl": {
+ "code": "gl",
+ "name": "Galician"
+ },
+ "lg": {
+ "code": "lg",
+ "name": "Ganda"
+ },
+ "ka": {
+ "code": "ka",
+ "name": "Georgian"
+ },
+ "gu": {
+ "code": "gu",
+ "name": "Gujarati"
+ },
+ "guz": {
+ "code": "guz",
+ "name": "Gusii"
+ },
+ "he": {
+ "code": "he",
+ "name": "Hebrew"
+ },
+ "is": {
+ "code": "is",
+ "name": "Icelandic"
+ },
+ "ga": {
+ "code": "ga",
+ "name": "Irish"
+ },
+ "dyo": {
+ "code": "dyo",
+ "name": "Jola-Fonyi"
+ },
+ "kea": {
+ "code": "kea",
+ "name": "Kabuverdianu"
+ },
+ "kab": {
+ "code": "kab",
+ "name": "Kabyle"
+ },
+ "kl": {
+ "code": "kl",
+ "name": "Kalaallisut"
+ },
+ "kln": {
+ "code": "kln",
+ "name": "Kalenjin"
+ },
+ "kam": {
+ "code": "kam",
+ "name": "Kamba"
+ },
+ "kn": {
+ "code": "kn",
+ "name": "Kannada"
+ },
+ "ks": {
+ "code": "ks",
+ "name": "Kashmiri"
+ },
+ "kk": {
+ "code": "kk",
+ "name": "Kazakh"
+ },
+ "ki": {
+ "code": "ki",
+ "name": "Kikuyu"
+ },
+ "khq": {
+ "code": "khq",
+ "name": "Koyra Chiini"
+ },
+ "ses": {
+ "code": "ses",
+ "name": "Koyraboro Senni"
+ },
+ "nmg": {
+ "code": "nmg",
+ "name": "Kwasio"
+ },
+ "ky": {
+ "code": "ky",
+ "name": "Kyrgyz"
+ },
+ "lag": {
+ "code": "lag",
+ "name": "Langi"
+ },
+ "lo": {
+ "code": "lo",
+ "name": "Lao"
+ },
+ "lv": {
+ "code": "lv",
+ "name": "Latvian"
+ },
+ "ln": {
+ "code": "ln",
+ "name": "Lingala"
+ },
+ "lt": {
+ "code": "lt",
+ "name": "Lithuanian"
+ },
+ "dsb": {
+ "code": "dsb",
+ "name": "Lower Sorbian"
+ },
+ "lu": {
+ "code": "lu",
+ "name": "Luba-Katanga"
+ },
+ "luo": {
+ "code": "luo",
+ "name": "Luo"
+ },
+ "lb": {
+ "code": "lb",
+ "name": "Luxembourgish"
+ },
+ "luy": {
+ "code": "luy",
+ "name": "Luyia"
+ },
+ "mk": {
+ "code": "mk",
+ "name": "Macedonian"
+ },
+ "jmc": {
+ "code": "jmc",
+ "name": "Machame"
+ },
+ "mgh": {
+ "code": "mgh",
+ "name": "Makhuwa-Meetto"
+ },
+ "kde": {
+ "code": "kde",
+ "name": "Makonde"
+ },
+ "mg": {
+ "code": "mg",
+ "name": "Malagasy"
+ },
+ "ml": {
+ "code": "ml",
+ "name": "Malayalam"
+ },
+ "mt": {
+ "code": "mt",
+ "name": "Maltese"
+ },
+ "mr": {
+ "code": "mr",
+ "name": "Marathi"
+ },
+ "mas": {
+ "code": "mas",
+ "name": "Masai"
+ },
+ "mer": {
+ "code": "mer",
+ "name": "Meru"
+ },
+ "mn": {
+ "code": "mn",
+ "name": "Mongolian"
+ },
+ "mfe": {
+ "code": "mfe",
+ "name": "Morisyen"
+ },
+ "mua": {
+ "code": "mua",
+ "name": "Mundang"
+ },
+ "naq": {
+ "code": "naq",
+ "name": "Nama"
+ },
+ "jgo": {
+ "code": "jgo",
+ "name": "Ngomba"
+ },
+ "nl-BE": {
+ "code": "nl-BE",
+ "name": "nl_BE"
+ },
+ "nd": {
+ "code": "nd",
+ "name": "North Ndebele"
+ },
+ "se": {
+ "code": "se",
+ "name": "Northern Sami"
+ },
+ "nb": {
+ "code": "nb",
+ "name": "Norwegian Bokmål"
+ },
+ "nn": {
+ "code": "nn",
+ "name": "Norwegian Nynorsk"
+ },
+ "nus": {
+ "code": "nus",
+ "name": "Nuer"
+ },
+ "nyn": {
+ "code": "nyn",
+ "name": "Nyankole"
+ },
+ "ur": {
+ "code": "ur",
+ "name": "Olu-urudu"
+ },
+ "ak": {
+ "code": "ak",
+ "name": "Oluakaani"
+ },
+ "am": {
+ "code": "am",
+ "name": "Oluamhariki"
+ },
+ "my": {
+ "code": "my",
+ "name": "Olubbama"
+ },
+ "be": {
+ "code": "be",
+ "name": "Olubelarusi"
+ },
+ "bn": {
+ "code": "bn",
+ "name": "Olubengali"
+ },
+ "bg": {
+ "code": "bg",
+ "name": "Olubulugariya"
+ },
+ "zh": {
+ "code": "zh",
+ "name": "Olucayina"
+ },
+ "cs": {
+ "code": "cs",
+ "name": "Oluceeke"
+ },
+ "de": {
+ "code": "de",
+ "name": "Oludaaki"
+ },
+ "fr": {
+ "code": "fr",
+ "name": "Olufalansa"
+ },
+ "hu": {
+ "code": "hu",
+ "name": "Oluhangare"
+ },
+ "ha": {
+ "code": "ha",
+ "name": "Oluhawuza"
+ },
+ "hi": {
+ "code": "hi",
+ "name": "Oluhindu"
+ },
+ "nl": {
+ "code": "nl",
+ "name": "Oluholandi"
+ },
+ "ja": {
+ "code": "ja",
+ "name": "Olujapani"
+ },
+ "km": {
+ "code": "km",
+ "name": "Olukme"
+ },
+ "ko": {
+ "code": "ko",
+ "name": "Olukoreya"
+ },
+ "ru": {
+ "code": "ru",
+ "name": "Olulasa"
+ },
+ "ro": {
+ "code": "ro",
+ "name": "Olulomaniya"
+ },
+ "ms": {
+ "code": "ms",
+ "name": "Olumalayi"
+ },
+ "ne": {
+ "code": "ne",
+ "name": "Olunepali"
+ },
+ "en": {
+ "code": "en",
+ "name": "Olungereza"
+ },
+ "fa": {
+ "code": "fa",
+ "name": "Oluperusi"
+ },
+ "pl": {
+ "code": "pl",
+ "name": "Olupolandi"
+ },
+ "pt": {
+ "code": "pt",
+ "name": "Olupotugiizi"
+ },
+ "pa": {
+ "code": "pa",
+ "name": "Olupunjabi"
+ },
+ "es": {
+ "code": "es",
+ "name": "Olusipanya"
+ },
+ "xog": {
+ "code": "xog",
+ "name": "Olusoga"
+ },
+ "so": {
+ "code": "so",
+ "name": "Olusomaliya"
+ },
+ "sv": {
+ "code": "sv",
+ "name": "Oluswideni"
+ },
+ "tr": {
+ "code": "tr",
+ "name": "Olutake"
+ },
+ "ta": {
+ "code": "ta",
+ "name": "Olutamiiru"
+ },
+ "th": {
+ "code": "th",
+ "name": "Oluttaayi"
+ },
+ "vi": {
+ "code": "vi",
+ "name": "Oluvyetinaamu"
+ },
+ "ar": {
+ "code": "ar",
+ "name": "Oluwarabu"
+ },
+ "id": {
+ "code": "id",
+ "name": "Oluyindonezya"
+ },
+ "it": {
+ "code": "it",
+ "name": "Oluyitale"
+ },
+ "el": {
+ "code": "el",
+ "name": "Oluyonaani"
+ },
+ "yo": {
+ "code": "yo",
+ "name": "Oluyoruba"
+ },
+ "uk": {
+ "code": "uk",
+ "name": "Oluyukurayine"
+ },
+ "zu": {
+ "code": "zu",
+ "name": "Oluzzulu"
+ },
+ "or": {
+ "code": "or",
+ "name": "Oriya"
+ },
+ "ps": {
+ "code": "ps",
+ "name": "Pashto"
+ },
+ "pt-BR": {
+ "code": "pt-BR",
+ "name": "pt_BR"
+ },
+ "pt-PT": {
+ "code": "pt-PT",
+ "name": "pt_PT"
+ },
+ "ro-MD": {
+ "code": "ro-MD",
+ "name": "ro_MD"
+ },
+ "rm": {
+ "code": "rm",
+ "name": "Romansh"
+ },
+ "rof": {
+ "code": "rof",
+ "name": "Rombo"
+ },
+ "rn": {
+ "code": "rn",
+ "name": "Rundi"
+ },
+ "rwk": {
+ "code": "rwk",
+ "name": "Rwa"
+ },
+ "saq": {
+ "code": "saq",
+ "name": "Samburu"
+ },
+ "sg": {
+ "code": "sg",
+ "name": "Sango"
+ },
+ "sbp": {
+ "code": "sbp",
+ "name": "Sangu"
+ },
+ "gd": {
+ "code": "gd",
+ "name": "Scottish Gaelic"
+ },
+ "seh": {
+ "code": "seh",
+ "name": "Sena"
+ },
+ "sr": {
+ "code": "sr",
+ "name": "Serbian"
+ },
+ "ksb": {
+ "code": "ksb",
+ "name": "Shambala"
+ },
+ "sn": {
+ "code": "sn",
+ "name": "Shona"
+ },
+ "si": {
+ "code": "si",
+ "name": "Sinhala"
+ },
+ "sk": {
+ "code": "sk",
+ "name": "Slovak"
+ },
+ "sl": {
+ "code": "sl",
+ "name": "Slovenian"
+ },
+ "zgh": {
+ "code": "zgh",
+ "name": "Standard Moroccan Tamazight"
+ },
+ "sw": {
+ "code": "sw",
+ "name": "Swahili"
+ },
+ "gsw": {
+ "code": "gsw",
+ "name": "Swiss German"
+ },
+ "shi": {
+ "code": "shi",
+ "name": "Tachelhit"
+ },
+ "dav": {
+ "code": "dav",
+ "name": "Taita"
+ },
+ "twq": {
+ "code": "twq",
+ "name": "Tasawaq"
+ },
+ "te": {
+ "code": "te",
+ "name": "Telugu"
+ },
+ "teo": {
+ "code": "teo",
+ "name": "Teso"
+ },
+ "bo": {
+ "code": "bo",
+ "name": "Tibetan"
+ },
+ "ti": {
+ "code": "ti",
+ "name": "Tigrinya"
+ },
+ "to": {
+ "code": "to",
+ "name": "Tongan"
+ },
+ "hsb": {
+ "code": "hsb",
+ "name": "Upper Sorbian"
+ },
+ "ug": {
+ "code": "ug",
+ "name": "Uyghur"
+ },
+ "uz": {
+ "code": "uz",
+ "name": "Uzbek"
+ },
+ "vai": {
+ "code": "vai",
+ "name": "Vai"
+ },
+ "vun": {
+ "code": "vun",
+ "name": "Vunjo"
+ },
+ "wae": {
+ "code": "wae",
+ "name": "Walser"
+ },
+ "cy": {
+ "code": "cy",
+ "name": "Welsh"
+ },
+ "fy": {
+ "code": "fy",
+ "name": "Western Frisian"
+ },
+ "yav": {
+ "code": "yav",
+ "name": "Yangben"
+ },
+ "dje": {
+ "code": "dje",
+ "name": "Zarma"
+ },
+ "zh-Hans": {
+ "code": "zh-Hans",
+ "name": "zh_Hans"
+ },
+ "zh-Hant": {
+ "code": "zh-Hant",
+ "name": "zh_Hant"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/language/yav.json b/library/intl/resources/language/yav.json
new file mode 100644
index 000000000..ab34736d3
--- /dev/null
+++ b/library/intl/resources/language/yav.json
@@ -0,0 +1,738 @@
+{
+ "af": {
+ "code": "af",
+ "name": "Afrikaans"
+ },
+ "agq": {
+ "code": "agq",
+ "name": "Aghem"
+ },
+ "ak": {
+ "code": "ak",
+ "name": "akánɛ"
+ },
+ "sq": {
+ "code": "sq",
+ "name": "Albanian"
+ },
+ "am": {
+ "code": "am",
+ "name": "amalíke"
+ },
+ "ar-001": {
+ "code": "ar-001",
+ "name": "ar_001"
+ },
+ "hy": {
+ "code": "hy",
+ "name": "Armenian"
+ },
+ "ast": {
+ "code": "ast",
+ "name": "Asturian"
+ },
+ "asa": {
+ "code": "asa",
+ "name": "Asu"
+ },
+ "az": {
+ "code": "az",
+ "name": "Azerbaijani"
+ },
+ "ksf": {
+ "code": "ksf",
+ "name": "Bafia"
+ },
+ "bm": {
+ "code": "bm",
+ "name": "Bambara"
+ },
+ "bas": {
+ "code": "bas",
+ "name": "Basaa"
+ },
+ "eu": {
+ "code": "eu",
+ "name": "Basque"
+ },
+ "bez": {
+ "code": "bez",
+ "name": "Bena"
+ },
+ "my": {
+ "code": "my",
+ "name": "bímanɛ"
+ },
+ "brx": {
+ "code": "brx",
+ "name": "Bodo"
+ },
+ "bs": {
+ "code": "bs",
+ "name": "Bosnian"
+ },
+ "br": {
+ "code": "br",
+ "name": "Breton"
+ },
+ "bg": {
+ "code": "bg",
+ "name": "bulgálɛ"
+ },
+ "ca": {
+ "code": "ca",
+ "name": "Catalan"
+ },
+ "tzm": {
+ "code": "tzm",
+ "name": "Central Atlas Tamazight"
+ },
+ "cs": {
+ "code": "cs",
+ "name": "cÉ›ÌkÉ›ÌÉ›"
+ },
+ "chr": {
+ "code": "chr",
+ "name": "Cherokee"
+ },
+ "cgg": {
+ "code": "cgg",
+ "name": "Chiga"
+ },
+ "ksh": {
+ "code": "ksh",
+ "name": "Colognian"
+ },
+ "swc": {
+ "code": "swc",
+ "name": "Congo Swahili"
+ },
+ "hr": {
+ "code": "hr",
+ "name": "Croatian"
+ },
+ "da": {
+ "code": "da",
+ "name": "Danish"
+ },
+ "de-AT": {
+ "code": "de-AT",
+ "name": "de_AT"
+ },
+ "de-CH": {
+ "code": "de-CH",
+ "name": "de_CH"
+ },
+ "dz": {
+ "code": "dz",
+ "name": "Dzongkha"
+ },
+ "ebu": {
+ "code": "ebu",
+ "name": "Embu"
+ },
+ "en-AU": {
+ "code": "en-AU",
+ "name": "en_AU"
+ },
+ "en-CA": {
+ "code": "en-CA",
+ "name": "en_CA"
+ },
+ "en-GB": {
+ "code": "en-GB",
+ "name": "en_GB"
+ },
+ "en-US": {
+ "code": "en-US",
+ "name": "en_US"
+ },
+ "es-ES": {
+ "code": "es-ES",
+ "name": "es_ES"
+ },
+ "es-MX": {
+ "code": "es-MX",
+ "name": "es_MX"
+ },
+ "eo": {
+ "code": "eo",
+ "name": "Esperanto"
+ },
+ "et": {
+ "code": "et",
+ "name": "Estonian"
+ },
+ "ee": {
+ "code": "ee",
+ "name": "Ewe"
+ },
+ "ewo": {
+ "code": "ewo",
+ "name": "Ewondo"
+ },
+ "fo": {
+ "code": "fo",
+ "name": "Faroese"
+ },
+ "fr": {
+ "code": "fr",
+ "name": "feleŋsí"
+ },
+ "fil": {
+ "code": "fil",
+ "name": "Filipino"
+ },
+ "fi": {
+ "code": "fi",
+ "name": "Finnish"
+ },
+ "fr-CA": {
+ "code": "fr-CA",
+ "name": "fr_CA"
+ },
+ "fr-CH": {
+ "code": "fr-CH",
+ "name": "fr_CH"
+ },
+ "fur": {
+ "code": "fur",
+ "name": "Friulian"
+ },
+ "ff": {
+ "code": "ff",
+ "name": "Fulah"
+ },
+ "gl": {
+ "code": "gl",
+ "name": "Galician"
+ },
+ "lg": {
+ "code": "lg",
+ "name": "Ganda"
+ },
+ "ka": {
+ "code": "ka",
+ "name": "Georgian"
+ },
+ "gu": {
+ "code": "gu",
+ "name": "Gujarati"
+ },
+ "guz": {
+ "code": "guz",
+ "name": "Gusii"
+ },
+ "he": {
+ "code": "he",
+ "name": "Hebrew"
+ },
+ "is": {
+ "code": "is",
+ "name": "Icelandic"
+ },
+ "hi": {
+ "code": "hi",
+ "name": "índí"
+ },
+ "id": {
+ "code": "id",
+ "name": "índonísiɛ"
+ },
+ "en": {
+ "code": "en",
+ "name": "íŋgilísé"
+ },
+ "ga": {
+ "code": "ga",
+ "name": "Irish"
+ },
+ "it": {
+ "code": "it",
+ "name": "itáliɛ"
+ },
+ "dyo": {
+ "code": "dyo",
+ "name": "Jola-Fonyi"
+ },
+ "kea": {
+ "code": "kea",
+ "name": "Kabuverdianu"
+ },
+ "kab": {
+ "code": "kab",
+ "name": "Kabyle"
+ },
+ "kl": {
+ "code": "kl",
+ "name": "Kalaallisut"
+ },
+ "kln": {
+ "code": "kln",
+ "name": "Kalenjin"
+ },
+ "kam": {
+ "code": "kam",
+ "name": "Kamba"
+ },
+ "kn": {
+ "code": "kn",
+ "name": "Kannada"
+ },
+ "ks": {
+ "code": "ks",
+ "name": "Kashmiri"
+ },
+ "kk": {
+ "code": "kk",
+ "name": "Kazakh"
+ },
+ "ki": {
+ "code": "ki",
+ "name": "Kikuyu"
+ },
+ "km": {
+ "code": "km",
+ "name": "kímɛɛ"
+ },
+ "ko": {
+ "code": "ko",
+ "name": "kolíe"
+ },
+ "khq": {
+ "code": "khq",
+ "name": "Koyra Chiini"
+ },
+ "ses": {
+ "code": "ses",
+ "name": "Koyraboro Senni"
+ },
+ "nmg": {
+ "code": "nmg",
+ "name": "Kwasio"
+ },
+ "ky": {
+ "code": "ky",
+ "name": "Kyrgyz"
+ },
+ "lag": {
+ "code": "lag",
+ "name": "Langi"
+ },
+ "lo": {
+ "code": "lo",
+ "name": "Lao"
+ },
+ "lv": {
+ "code": "lv",
+ "name": "Latvian"
+ },
+ "ln": {
+ "code": "ln",
+ "name": "Lingala"
+ },
+ "lt": {
+ "code": "lt",
+ "name": "Lithuanian"
+ },
+ "dsb": {
+ "code": "dsb",
+ "name": "Lower Sorbian"
+ },
+ "lu": {
+ "code": "lu",
+ "name": "Luba-Katanga"
+ },
+ "luo": {
+ "code": "luo",
+ "name": "Luo"
+ },
+ "lb": {
+ "code": "lb",
+ "name": "Luxembourgish"
+ },
+ "luy": {
+ "code": "luy",
+ "name": "Luyia"
+ },
+ "mk": {
+ "code": "mk",
+ "name": "Macedonian"
+ },
+ "jmc": {
+ "code": "jmc",
+ "name": "Machame"
+ },
+ "mgh": {
+ "code": "mgh",
+ "name": "Makhuwa-Meetto"
+ },
+ "kde": {
+ "code": "kde",
+ "name": "Makonde"
+ },
+ "mg": {
+ "code": "mg",
+ "name": "Malagasy"
+ },
+ "ml": {
+ "code": "ml",
+ "name": "Malayalam"
+ },
+ "ms": {
+ "code": "ms",
+ "name": "máliɛ"
+ },
+ "mt": {
+ "code": "mt",
+ "name": "Maltese"
+ },
+ "mr": {
+ "code": "mr",
+ "name": "Marathi"
+ },
+ "mas": {
+ "code": "mas",
+ "name": "Masai"
+ },
+ "mer": {
+ "code": "mer",
+ "name": "Meru"
+ },
+ "mn": {
+ "code": "mn",
+ "name": "Mongolian"
+ },
+ "mfe": {
+ "code": "mfe",
+ "name": "Morisyen"
+ },
+ "mua": {
+ "code": "mua",
+ "name": "Mundang"
+ },
+ "naq": {
+ "code": "naq",
+ "name": "Nama"
+ },
+ "ja": {
+ "code": "ja",
+ "name": "ndiáman"
+ },
+ "jgo": {
+ "code": "jgo",
+ "name": "Ngomba"
+ },
+ "nl": {
+ "code": "nl",
+ "name": "nilándɛ"
+ },
+ "nl-BE": {
+ "code": "nl-BE",
+ "name": "nl_BE"
+ },
+ "nd": {
+ "code": "nd",
+ "name": "North Ndebele"
+ },
+ "se": {
+ "code": "se",
+ "name": "Northern Sami"
+ },
+ "nb": {
+ "code": "nb",
+ "name": "Norwegian Bokmål"
+ },
+ "nn": {
+ "code": "nn",
+ "name": "Norwegian Nynorsk"
+ },
+ "yav": {
+ "code": "yav",
+ "name": "nuasue"
+ },
+ "nus": {
+ "code": "nus",
+ "name": "Nuer"
+ },
+ "es": {
+ "code": "es",
+ "name": "nuÉ›spanyÉ”ÌlÉ›"
+ },
+ "vi": {
+ "code": "vi",
+ "name": "nufiɛtnamíɛŋ"
+ },
+ "uk": {
+ "code": "uk",
+ "name": "nukeleniÉ›ÌÅ‹É›"
+ },
+ "ro": {
+ "code": "ro",
+ "name": "nulumÉ›ÌÅ‹É›"
+ },
+ "ru": {
+ "code": "ru",
+ "name": "nulúse"
+ },
+ "ur": {
+ "code": "ur",
+ "name": "nulutú"
+ },
+ "ne": {
+ "code": "ne",
+ "name": "nunipálɛ"
+ },
+ "fa": {
+ "code": "fa",
+ "name": "nupÉ›ÌlisÉ›"
+ },
+ "pl": {
+ "code": "pl",
+ "name": "nupolonÉ›ÌÉ›"
+ },
+ "pt": {
+ "code": "pt",
+ "name": "nupÉ”litukÉ›ÌÉ›"
+ },
+ "pa": {
+ "code": "pa",
+ "name": "nupunsapíɛÌ"
+ },
+ "so": {
+ "code": "so",
+ "name": "nusomalíɛ"
+ },
+ "sv": {
+ "code": "sv",
+ "name": "nusuetua"
+ },
+ "zu": {
+ "code": "zu",
+ "name": "nusulú"
+ },
+ "ta": {
+ "code": "ta",
+ "name": "nutámule"
+ },
+ "th": {
+ "code": "th",
+ "name": "nutáyɛ"
+ },
+ "tr": {
+ "code": "tr",
+ "name": "nutúluke"
+ },
+ "yo": {
+ "code": "yo",
+ "name": "nuyolúpa"
+ },
+ "nyn": {
+ "code": "nyn",
+ "name": "Nyankole"
+ },
+ "de": {
+ "code": "de",
+ "name": "ŋndiáman"
+ },
+ "or": {
+ "code": "or",
+ "name": "Oriya"
+ },
+ "hu": {
+ "code": "hu",
+ "name": "É”ÌÅ‹gÉ›"
+ },
+ "ha": {
+ "code": "ha",
+ "name": "pakas"
+ },
+ "ar": {
+ "code": "ar",
+ "name": "Ìpakas"
+ },
+ "ps": {
+ "code": "ps",
+ "name": "Pashto"
+ },
+ "bn": {
+ "code": "bn",
+ "name": "pengálÉ›ÌÉ›"
+ },
+ "be": {
+ "code": "be",
+ "name": "pielúse"
+ },
+ "pt-BR": {
+ "code": "pt-BR",
+ "name": "pt_BR"
+ },
+ "pt-PT": {
+ "code": "pt-PT",
+ "name": "pt_PT"
+ },
+ "ro-MD": {
+ "code": "ro-MD",
+ "name": "ro_MD"
+ },
+ "rm": {
+ "code": "rm",
+ "name": "Romansh"
+ },
+ "rof": {
+ "code": "rof",
+ "name": "Rombo"
+ },
+ "rn": {
+ "code": "rn",
+ "name": "Rundi"
+ },
+ "rwk": {
+ "code": "rwk",
+ "name": "Rwa"
+ },
+ "saq": {
+ "code": "saq",
+ "name": "Samburu"
+ },
+ "sg": {
+ "code": "sg",
+ "name": "Sango"
+ },
+ "sbp": {
+ "code": "sbp",
+ "name": "Sangu"
+ },
+ "gd": {
+ "code": "gd",
+ "name": "Scottish Gaelic"
+ },
+ "seh": {
+ "code": "seh",
+ "name": "Sena"
+ },
+ "sr": {
+ "code": "sr",
+ "name": "Serbian"
+ },
+ "ksb": {
+ "code": "ksb",
+ "name": "Shambala"
+ },
+ "sn": {
+ "code": "sn",
+ "name": "Shona"
+ },
+ "si": {
+ "code": "si",
+ "name": "Sinhala"
+ },
+ "zh": {
+ "code": "zh",
+ "name": "sinúɛ"
+ },
+ "sk": {
+ "code": "sk",
+ "name": "Slovak"
+ },
+ "sl": {
+ "code": "sl",
+ "name": "Slovenian"
+ },
+ "xog": {
+ "code": "xog",
+ "name": "Soga"
+ },
+ "zgh": {
+ "code": "zgh",
+ "name": "Standard Moroccan Tamazight"
+ },
+ "sw": {
+ "code": "sw",
+ "name": "Swahili"
+ },
+ "gsw": {
+ "code": "gsw",
+ "name": "Swiss German"
+ },
+ "shi": {
+ "code": "shi",
+ "name": "Tachelhit"
+ },
+ "dav": {
+ "code": "dav",
+ "name": "Taita"
+ },
+ "twq": {
+ "code": "twq",
+ "name": "Tasawaq"
+ },
+ "te": {
+ "code": "te",
+ "name": "Telugu"
+ },
+ "teo": {
+ "code": "teo",
+ "name": "Teso"
+ },
+ "bo": {
+ "code": "bo",
+ "name": "Tibetan"
+ },
+ "ti": {
+ "code": "ti",
+ "name": "Tigrinya"
+ },
+ "to": {
+ "code": "to",
+ "name": "Tongan"
+ },
+ "hsb": {
+ "code": "hsb",
+ "name": "Upper Sorbian"
+ },
+ "ug": {
+ "code": "ug",
+ "name": "Uyghur"
+ },
+ "uz": {
+ "code": "uz",
+ "name": "Uzbek"
+ },
+ "vai": {
+ "code": "vai",
+ "name": "Vai"
+ },
+ "vun": {
+ "code": "vun",
+ "name": "Vunjo"
+ },
+ "wae": {
+ "code": "wae",
+ "name": "Walser"
+ },
+ "cy": {
+ "code": "cy",
+ "name": "Welsh"
+ },
+ "fy": {
+ "code": "fy",
+ "name": "Western Frisian"
+ },
+ "el": {
+ "code": "el",
+ "name": "yavánɛ"
+ },
+ "dje": {
+ "code": "dje",
+ "name": "Zarma"
+ },
+ "zh-Hans": {
+ "code": "zh-Hans",
+ "name": "zh_Hans"
+ },
+ "zh-Hant": {
+ "code": "zh-Hant",
+ "name": "zh_Hant"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/language/yo-BJ.json b/library/intl/resources/language/yo-BJ.json
new file mode 100644
index 000000000..5ebc90216
--- /dev/null
+++ b/library/intl/resources/language/yo-BJ.json
@@ -0,0 +1,738 @@
+{
+ "agq": {
+ "code": "agq",
+ "name": "Aghem"
+ },
+ "ar-001": {
+ "code": "ar-001",
+ "name": "ar_001"
+ },
+ "ast": {
+ "code": "ast",
+ "name": "Asturian"
+ },
+ "asa": {
+ "code": "asa",
+ "name": "Asu"
+ },
+ "ksf": {
+ "code": "ksf",
+ "name": "Bafia"
+ },
+ "bm": {
+ "code": "bm",
+ "name": "Bambara"
+ },
+ "bas": {
+ "code": "bas",
+ "name": "Basaa"
+ },
+ "bez": {
+ "code": "bez",
+ "name": "Bena"
+ },
+ "brx": {
+ "code": "brx",
+ "name": "Bodo"
+ },
+ "tzm": {
+ "code": "tzm",
+ "name": "Central Atlas Tamazight"
+ },
+ "chr": {
+ "code": "chr",
+ "name": "Cherokee"
+ },
+ "cgg": {
+ "code": "cgg",
+ "name": "Chiga"
+ },
+ "ksh": {
+ "code": "ksh",
+ "name": "Colognian"
+ },
+ "swc": {
+ "code": "swc",
+ "name": "Congo Swahili"
+ },
+ "de-AT": {
+ "code": "de-AT",
+ "name": "de_AT"
+ },
+ "de-CH": {
+ "code": "de-CH",
+ "name": "de_CH"
+ },
+ "dz": {
+ "code": "dz",
+ "name": "Dzongkha"
+ },
+ "af": {
+ "code": "af",
+ "name": "Èdè Afrikani"
+ },
+ "ak": {
+ "code": "ak",
+ "name": "Èdè Akani"
+ },
+ "sq": {
+ "code": "sq",
+ "name": "Èdè Albania"
+ },
+ "am": {
+ "code": "am",
+ "name": "Èdè Amariki"
+ },
+ "so": {
+ "code": "so",
+ "name": "Èdè ara Somalia"
+ },
+ "ar": {
+ "code": "ar",
+ "name": "Èdè Arabiki"
+ },
+ "az": {
+ "code": "az",
+ "name": "Èdè Azerbaijani"
+ },
+ "eu": {
+ "code": "eu",
+ "name": "Èdè Baski"
+ },
+ "be": {
+ "code": "be",
+ "name": "Èdè Belarusi"
+ },
+ "bn": {
+ "code": "bn",
+ "name": "Èdè Bengali"
+ },
+ "bs": {
+ "code": "bs",
+ "name": "Èdè Bosnia"
+ },
+ "br": {
+ "code": "br",
+ "name": "Èdè Bretoni"
+ },
+ "bg": {
+ "code": "bg",
+ "name": "Èdè Bugaria"
+ },
+ "my": {
+ "code": "my",
+ "name": "Èdè Bumiisi"
+ },
+ "ca": {
+ "code": "ca",
+ "name": "Èdè Catala"
+ },
+ "nl": {
+ "code": "nl",
+ "name": "Èdè Duki"
+ },
+ "eo": {
+ "code": "eo",
+ "name": "Èdè Esperanto"
+ },
+ "et": {
+ "code": "et",
+ "name": "Èdè Estonia"
+ },
+ "fr": {
+ "code": "fr",
+ "name": "Èdè Faransé"
+ },
+ "fo": {
+ "code": "fo",
+ "name": "Èdè Faroesi"
+ },
+ "fi": {
+ "code": "fi",
+ "name": "Èdè Finisi"
+ },
+ "fy": {
+ "code": "fy",
+ "name": "Èdè Frisia"
+ },
+ "gd": {
+ "code": "gd",
+ "name": "Èdè Gaelik ti Ilu Scotland"
+ },
+ "gl": {
+ "code": "gl",
+ "name": "Èdè Galicia"
+ },
+ "ka": {
+ "code": "ka",
+ "name": "Èdè Georgia"
+ },
+ "en": {
+ "code": "en",
+ "name": "Èdè Gɛ̀ɛÌsì"
+ },
+ "el": {
+ "code": "el",
+ "name": "Èdè Giriki"
+ },
+ "gu": {
+ "code": "gu",
+ "name": "Èdè Gujarati"
+ },
+ "ha": {
+ "code": "ha",
+ "name": "Èdè Hausa"
+ },
+ "he": {
+ "code": "he",
+ "name": "Èdè Heberu"
+ },
+ "hi": {
+ "code": "hi",
+ "name": "Èdè Hindi"
+ },
+ "hu": {
+ "code": "hu",
+ "name": "Èdè Hungaria"
+ },
+ "is": {
+ "code": "is",
+ "name": "Èdè Icelandic"
+ },
+ "hy": {
+ "code": "hy",
+ "name": "Èdè Ile Armenia"
+ },
+ "da": {
+ "code": "da",
+ "name": "Èdè Ilɛ̀ Denmark"
+ },
+ "de": {
+ "code": "de",
+ "name": "Èdè Ilɛ̀ Gemani"
+ },
+ "pl": {
+ "code": "pl",
+ "name": "Èdè Ilɛ̀ Polandi"
+ },
+ "id": {
+ "code": "id",
+ "name": "Èdè Indonasia"
+ },
+ "ga": {
+ "code": "ga",
+ "name": "Èdè Ireland"
+ },
+ "it": {
+ "code": "it",
+ "name": "Èdè Italiani"
+ },
+ "ja": {
+ "code": "ja",
+ "name": "Èdè Japanisi"
+ },
+ "vi": {
+ "code": "vi",
+ "name": "Èdè Jetinamu"
+ },
+ "km": {
+ "code": "km",
+ "name": "Èdè kameri"
+ },
+ "kn": {
+ "code": "kn",
+ "name": "Èdè Kannada"
+ },
+ "ko": {
+ "code": "ko",
+ "name": "Èdè Koria"
+ },
+ "hr": {
+ "code": "hr",
+ "name": "Èdè Kroatia"
+ },
+ "lv": {
+ "code": "lv",
+ "name": "Èdè Latvianu"
+ },
+ "lt": {
+ "code": "lt",
+ "name": "Èdè Lithuania"
+ },
+ "mk": {
+ "code": "mk",
+ "name": "Èdè Macedonia"
+ },
+ "ms": {
+ "code": "ms",
+ "name": "Èdè Malaya"
+ },
+ "mt": {
+ "code": "mt",
+ "name": "Èdè Malta"
+ },
+ "zh": {
+ "code": "zh",
+ "name": "Èdè Mandari"
+ },
+ "mr": {
+ "code": "mr",
+ "name": "Èdè marathi"
+ },
+ "ne": {
+ "code": "ne",
+ "name": "Èdè Nepali"
+ },
+ "fa": {
+ "code": "fa",
+ "name": "Èdè Pasia"
+ },
+ "pt": {
+ "code": "pt",
+ "name": "Èdè Pɔtugi"
+ },
+ "pa": {
+ "code": "pa",
+ "name": "Èdè Punjabi"
+ },
+ "ro": {
+ "code": "ro",
+ "name": "Èdè Romania"
+ },
+ "ru": {
+ "code": "ru",
+ "name": "Èdè ̣Rɔɔsia"
+ },
+ "cs": {
+ "code": "cs",
+ "name": "Èdè seeki"
+ },
+ "sr": {
+ "code": "sr",
+ "name": "Èdè Serbia"
+ },
+ "zu": {
+ "code": "zu",
+ "name": "Èdè Shulu"
+ },
+ "si": {
+ "code": "si",
+ "name": "Èdè Sinhalese"
+ },
+ "es": {
+ "code": "es",
+ "name": "Èdè Sipanisi"
+ },
+ "sk": {
+ "code": "sk",
+ "name": "Èdè Slovaki"
+ },
+ "sl": {
+ "code": "sl",
+ "name": "Èdè Slovenia"
+ },
+ "sv": {
+ "code": "sv",
+ "name": "Èdè Suwidiisi"
+ },
+ "sw": {
+ "code": "sw",
+ "name": "Èdè Swahili"
+ },
+ "fil": {
+ "code": "fil",
+ "name": "Èdè Tagalogi"
+ },
+ "th": {
+ "code": "th",
+ "name": "Èdè Tai"
+ },
+ "ta": {
+ "code": "ta",
+ "name": "Èdè Tamili"
+ },
+ "te": {
+ "code": "te",
+ "name": "Èdè Telugu"
+ },
+ "ti": {
+ "code": "ti",
+ "name": "Èdè Tigrinya"
+ },
+ "tr": {
+ "code": "tr",
+ "name": "Èdè Tɔɔkisi"
+ },
+ "ur": {
+ "code": "ur",
+ "name": "Èdè Udu"
+ },
+ "uk": {
+ "code": "uk",
+ "name": "Èdè Ukania"
+ },
+ "uz": {
+ "code": "uz",
+ "name": "Èdè Uzbek"
+ },
+ "cy": {
+ "code": "cy",
+ "name": "Èdè Welshi"
+ },
+ "yo": {
+ "code": "yo",
+ "name": "Èdè Yorùbá"
+ },
+ "ebu": {
+ "code": "ebu",
+ "name": "Embu"
+ },
+ "en-AU": {
+ "code": "en-AU",
+ "name": "en_AU"
+ },
+ "en-CA": {
+ "code": "en-CA",
+ "name": "en_CA"
+ },
+ "en-GB": {
+ "code": "en-GB",
+ "name": "en_GB"
+ },
+ "en-US": {
+ "code": "en-US",
+ "name": "en_US"
+ },
+ "es-ES": {
+ "code": "es-ES",
+ "name": "es_ES"
+ },
+ "es-MX": {
+ "code": "es-MX",
+ "name": "es_MX"
+ },
+ "ee": {
+ "code": "ee",
+ "name": "Ewe"
+ },
+ "ewo": {
+ "code": "ewo",
+ "name": "Ewondo"
+ },
+ "fr-CA": {
+ "code": "fr-CA",
+ "name": "fr_CA"
+ },
+ "fr-CH": {
+ "code": "fr-CH",
+ "name": "fr_CH"
+ },
+ "fur": {
+ "code": "fur",
+ "name": "Friulian"
+ },
+ "ff": {
+ "code": "ff",
+ "name": "Fulah"
+ },
+ "lg": {
+ "code": "lg",
+ "name": "Ganda"
+ },
+ "guz": {
+ "code": "guz",
+ "name": "Gusii"
+ },
+ "dyo": {
+ "code": "dyo",
+ "name": "Jola-Fonyi"
+ },
+ "kea": {
+ "code": "kea",
+ "name": "Kabuverdianu"
+ },
+ "kab": {
+ "code": "kab",
+ "name": "Kabyle"
+ },
+ "kl": {
+ "code": "kl",
+ "name": "Kalaallisut"
+ },
+ "kln": {
+ "code": "kln",
+ "name": "Kalenjin"
+ },
+ "kam": {
+ "code": "kam",
+ "name": "Kamba"
+ },
+ "ks": {
+ "code": "ks",
+ "name": "Kashmiri"
+ },
+ "kk": {
+ "code": "kk",
+ "name": "Kazakh"
+ },
+ "ki": {
+ "code": "ki",
+ "name": "Kikuyu"
+ },
+ "khq": {
+ "code": "khq",
+ "name": "Koyra Chiini"
+ },
+ "ses": {
+ "code": "ses",
+ "name": "Koyraboro Senni"
+ },
+ "nmg": {
+ "code": "nmg",
+ "name": "Kwasio"
+ },
+ "ky": {
+ "code": "ky",
+ "name": "Kyrgyz"
+ },
+ "lag": {
+ "code": "lag",
+ "name": "Langi"
+ },
+ "lo": {
+ "code": "lo",
+ "name": "Lao"
+ },
+ "ln": {
+ "code": "ln",
+ "name": "Lingala"
+ },
+ "dsb": {
+ "code": "dsb",
+ "name": "Lower Sorbian"
+ },
+ "lu": {
+ "code": "lu",
+ "name": "Luba-Katanga"
+ },
+ "luo": {
+ "code": "luo",
+ "name": "Luo"
+ },
+ "lb": {
+ "code": "lb",
+ "name": "Luxembourgish"
+ },
+ "luy": {
+ "code": "luy",
+ "name": "Luyia"
+ },
+ "jmc": {
+ "code": "jmc",
+ "name": "Machame"
+ },
+ "mgh": {
+ "code": "mgh",
+ "name": "Makhuwa-Meetto"
+ },
+ "kde": {
+ "code": "kde",
+ "name": "Makonde"
+ },
+ "mg": {
+ "code": "mg",
+ "name": "Malagasy"
+ },
+ "ml": {
+ "code": "ml",
+ "name": "Malayalam"
+ },
+ "mas": {
+ "code": "mas",
+ "name": "Masai"
+ },
+ "mer": {
+ "code": "mer",
+ "name": "Meru"
+ },
+ "mn": {
+ "code": "mn",
+ "name": "Mongolian"
+ },
+ "mfe": {
+ "code": "mfe",
+ "name": "Morisyen"
+ },
+ "mua": {
+ "code": "mua",
+ "name": "Mundang"
+ },
+ "naq": {
+ "code": "naq",
+ "name": "Nama"
+ },
+ "jgo": {
+ "code": "jgo",
+ "name": "Ngomba"
+ },
+ "nl-BE": {
+ "code": "nl-BE",
+ "name": "nl_BE"
+ },
+ "nd": {
+ "code": "nd",
+ "name": "North Ndebele"
+ },
+ "se": {
+ "code": "se",
+ "name": "Northern Sami"
+ },
+ "nb": {
+ "code": "nb",
+ "name": "Norwegian Bokmål"
+ },
+ "nn": {
+ "code": "nn",
+ "name": "Norwegian Nynorsk"
+ },
+ "nus": {
+ "code": "nus",
+ "name": "Nuer"
+ },
+ "nyn": {
+ "code": "nyn",
+ "name": "Nyankole"
+ },
+ "or": {
+ "code": "or",
+ "name": "Oriya"
+ },
+ "ps": {
+ "code": "ps",
+ "name": "Pashto"
+ },
+ "pt-BR": {
+ "code": "pt-BR",
+ "name": "pt_BR"
+ },
+ "pt-PT": {
+ "code": "pt-PT",
+ "name": "pt_PT"
+ },
+ "ro-MD": {
+ "code": "ro-MD",
+ "name": "ro_MD"
+ },
+ "rm": {
+ "code": "rm",
+ "name": "Romansh"
+ },
+ "rof": {
+ "code": "rof",
+ "name": "Rombo"
+ },
+ "rn": {
+ "code": "rn",
+ "name": "Rundi"
+ },
+ "rwk": {
+ "code": "rwk",
+ "name": "Rwa"
+ },
+ "saq": {
+ "code": "saq",
+ "name": "Samburu"
+ },
+ "sg": {
+ "code": "sg",
+ "name": "Sango"
+ },
+ "sbp": {
+ "code": "sbp",
+ "name": "Sangu"
+ },
+ "seh": {
+ "code": "seh",
+ "name": "Sena"
+ },
+ "ksb": {
+ "code": "ksb",
+ "name": "Shambala"
+ },
+ "sn": {
+ "code": "sn",
+ "name": "Shona"
+ },
+ "xog": {
+ "code": "xog",
+ "name": "Soga"
+ },
+ "zgh": {
+ "code": "zgh",
+ "name": "Standard Moroccan Tamazight"
+ },
+ "gsw": {
+ "code": "gsw",
+ "name": "Swiss German"
+ },
+ "shi": {
+ "code": "shi",
+ "name": "Tachelhit"
+ },
+ "dav": {
+ "code": "dav",
+ "name": "Taita"
+ },
+ "twq": {
+ "code": "twq",
+ "name": "Tasawaq"
+ },
+ "teo": {
+ "code": "teo",
+ "name": "Teso"
+ },
+ "bo": {
+ "code": "bo",
+ "name": "Tibetan"
+ },
+ "to": {
+ "code": "to",
+ "name": "Tongan"
+ },
+ "hsb": {
+ "code": "hsb",
+ "name": "Upper Sorbian"
+ },
+ "ug": {
+ "code": "ug",
+ "name": "Uyghur"
+ },
+ "vai": {
+ "code": "vai",
+ "name": "Vai"
+ },
+ "vun": {
+ "code": "vun",
+ "name": "Vunjo"
+ },
+ "wae": {
+ "code": "wae",
+ "name": "Walser"
+ },
+ "yav": {
+ "code": "yav",
+ "name": "Yangben"
+ },
+ "dje": {
+ "code": "dje",
+ "name": "Zarma"
+ },
+ "zh-Hans": {
+ "code": "zh-Hans",
+ "name": "zh_Hans"
+ },
+ "zh-Hant": {
+ "code": "zh-Hant",
+ "name": "zh_Hant"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/language/yo.json b/library/intl/resources/language/yo.json
new file mode 100644
index 000000000..968fb13be
--- /dev/null
+++ b/library/intl/resources/language/yo.json
@@ -0,0 +1,738 @@
+{
+ "agq": {
+ "code": "agq",
+ "name": "Aghem"
+ },
+ "ar-001": {
+ "code": "ar-001",
+ "name": "ar_001"
+ },
+ "ast": {
+ "code": "ast",
+ "name": "Asturian"
+ },
+ "asa": {
+ "code": "asa",
+ "name": "Asu"
+ },
+ "ksf": {
+ "code": "ksf",
+ "name": "Bafia"
+ },
+ "bm": {
+ "code": "bm",
+ "name": "Bambara"
+ },
+ "bas": {
+ "code": "bas",
+ "name": "Basaa"
+ },
+ "bez": {
+ "code": "bez",
+ "name": "Bena"
+ },
+ "brx": {
+ "code": "brx",
+ "name": "Bodo"
+ },
+ "tzm": {
+ "code": "tzm",
+ "name": "Central Atlas Tamazight"
+ },
+ "chr": {
+ "code": "chr",
+ "name": "Cherokee"
+ },
+ "cgg": {
+ "code": "cgg",
+ "name": "Chiga"
+ },
+ "ksh": {
+ "code": "ksh",
+ "name": "Colognian"
+ },
+ "swc": {
+ "code": "swc",
+ "name": "Congo Swahili"
+ },
+ "de-AT": {
+ "code": "de-AT",
+ "name": "de_AT"
+ },
+ "de-CH": {
+ "code": "de-CH",
+ "name": "de_CH"
+ },
+ "dz": {
+ "code": "dz",
+ "name": "Dzongkha"
+ },
+ "af": {
+ "code": "af",
+ "name": "Èdè Afrikani"
+ },
+ "ak": {
+ "code": "ak",
+ "name": "Èdè Akani"
+ },
+ "sq": {
+ "code": "sq",
+ "name": "Èdè Albania"
+ },
+ "am": {
+ "code": "am",
+ "name": "Èdè Amariki"
+ },
+ "so": {
+ "code": "so",
+ "name": "Èdè ara Somalia"
+ },
+ "ar": {
+ "code": "ar",
+ "name": "Èdè Arabiki"
+ },
+ "az": {
+ "code": "az",
+ "name": "Èdè Azerbaijani"
+ },
+ "eu": {
+ "code": "eu",
+ "name": "Èdè Baski"
+ },
+ "be": {
+ "code": "be",
+ "name": "Èdè Belarusi"
+ },
+ "bn": {
+ "code": "bn",
+ "name": "Èdè Bengali"
+ },
+ "bs": {
+ "code": "bs",
+ "name": "Èdè Bosnia"
+ },
+ "br": {
+ "code": "br",
+ "name": "Èdè Bretoni"
+ },
+ "bg": {
+ "code": "bg",
+ "name": "Èdè Bugaria"
+ },
+ "my": {
+ "code": "my",
+ "name": "Èdè Bumiisi"
+ },
+ "ca": {
+ "code": "ca",
+ "name": "Èdè Catala"
+ },
+ "nl": {
+ "code": "nl",
+ "name": "Èdè Duki"
+ },
+ "eo": {
+ "code": "eo",
+ "name": "Èdè Esperanto"
+ },
+ "et": {
+ "code": "et",
+ "name": "Èdè Estonia"
+ },
+ "fr": {
+ "code": "fr",
+ "name": "Èdè Faransé"
+ },
+ "fo": {
+ "code": "fo",
+ "name": "Èdè Faroesi"
+ },
+ "fi": {
+ "code": "fi",
+ "name": "Èdè Finisi"
+ },
+ "fy": {
+ "code": "fy",
+ "name": "Èdè Frisia"
+ },
+ "gd": {
+ "code": "gd",
+ "name": "Èdè Gaelik ti Ilu Scotland"
+ },
+ "gl": {
+ "code": "gl",
+ "name": "Èdè Galicia"
+ },
+ "ka": {
+ "code": "ka",
+ "name": "Èdè Georgia"
+ },
+ "en": {
+ "code": "en",
+ "name": "Èdè Gẹ̀ẹÌsì"
+ },
+ "el": {
+ "code": "el",
+ "name": "Èdè Giriki"
+ },
+ "gu": {
+ "code": "gu",
+ "name": "Èdè Gujarati"
+ },
+ "ha": {
+ "code": "ha",
+ "name": "Èdè Hausa"
+ },
+ "he": {
+ "code": "he",
+ "name": "Èdè Heberu"
+ },
+ "hi": {
+ "code": "hi",
+ "name": "Èdè Hindi"
+ },
+ "hu": {
+ "code": "hu",
+ "name": "Èdè Hungaria"
+ },
+ "is": {
+ "code": "is",
+ "name": "Èdè Icelandic"
+ },
+ "hy": {
+ "code": "hy",
+ "name": "Èdè Ile Armenia"
+ },
+ "da": {
+ "code": "da",
+ "name": "Èdè Ilẹ̀ Denmark"
+ },
+ "de": {
+ "code": "de",
+ "name": "Èdè Ilẹ̀ Gemani"
+ },
+ "pl": {
+ "code": "pl",
+ "name": "Èdè Ilẹ̀ Polandi"
+ },
+ "id": {
+ "code": "id",
+ "name": "Èdè Indonasia"
+ },
+ "ga": {
+ "code": "ga",
+ "name": "Èdè Ireland"
+ },
+ "it": {
+ "code": "it",
+ "name": "Èdè Italiani"
+ },
+ "ja": {
+ "code": "ja",
+ "name": "Èdè Japanisi"
+ },
+ "vi": {
+ "code": "vi",
+ "name": "Èdè Jetinamu"
+ },
+ "km": {
+ "code": "km",
+ "name": "Èdè kameri"
+ },
+ "kn": {
+ "code": "kn",
+ "name": "Èdè Kannada"
+ },
+ "ko": {
+ "code": "ko",
+ "name": "Èdè Koria"
+ },
+ "hr": {
+ "code": "hr",
+ "name": "Èdè Kroatia"
+ },
+ "lv": {
+ "code": "lv",
+ "name": "Èdè Latvianu"
+ },
+ "lt": {
+ "code": "lt",
+ "name": "Èdè Lithuania"
+ },
+ "mk": {
+ "code": "mk",
+ "name": "Èdè Macedonia"
+ },
+ "ms": {
+ "code": "ms",
+ "name": "Èdè Malaya"
+ },
+ "mt": {
+ "code": "mt",
+ "name": "Èdè Malta"
+ },
+ "zh": {
+ "code": "zh",
+ "name": "Èdè Mandari"
+ },
+ "mr": {
+ "code": "mr",
+ "name": "Èdè marathi"
+ },
+ "ne": {
+ "code": "ne",
+ "name": "Èdè Nepali"
+ },
+ "fa": {
+ "code": "fa",
+ "name": "Èdè Pasia"
+ },
+ "pt": {
+ "code": "pt",
+ "name": "Èdè Pá»tugi"
+ },
+ "pa": {
+ "code": "pa",
+ "name": "Èdè Punjabi"
+ },
+ "ro": {
+ "code": "ro",
+ "name": "Èdè Romania"
+ },
+ "ru": {
+ "code": "ru",
+ "name": "Èdè Ì£Rá»á»sia"
+ },
+ "cs": {
+ "code": "cs",
+ "name": "Èdè seeki"
+ },
+ "sr": {
+ "code": "sr",
+ "name": "Èdè Serbia"
+ },
+ "si": {
+ "code": "si",
+ "name": "Èdè Sinhalese"
+ },
+ "es": {
+ "code": "es",
+ "name": "Èdè Sipanisi"
+ },
+ "sk": {
+ "code": "sk",
+ "name": "Èdè Slovaki"
+ },
+ "sl": {
+ "code": "sl",
+ "name": "Èdè Slovenia"
+ },
+ "sv": {
+ "code": "sv",
+ "name": "Èdè Suwidiisi"
+ },
+ "sw": {
+ "code": "sw",
+ "name": "Èdè Swahili"
+ },
+ "zu": {
+ "code": "zu",
+ "name": "Èdè Ṣulu"
+ },
+ "fil": {
+ "code": "fil",
+ "name": "Èdè Tagalogi"
+ },
+ "th": {
+ "code": "th",
+ "name": "Èdè Tai"
+ },
+ "ta": {
+ "code": "ta",
+ "name": "Èdè Tamili"
+ },
+ "te": {
+ "code": "te",
+ "name": "Èdè Telugu"
+ },
+ "ti": {
+ "code": "ti",
+ "name": "Èdè Tigrinya"
+ },
+ "tr": {
+ "code": "tr",
+ "name": "Èdè Tá»á»kisi"
+ },
+ "ur": {
+ "code": "ur",
+ "name": "Èdè Udu"
+ },
+ "uk": {
+ "code": "uk",
+ "name": "Èdè Ukania"
+ },
+ "uz": {
+ "code": "uz",
+ "name": "Èdè Uzbek"
+ },
+ "cy": {
+ "code": "cy",
+ "name": "Èdè Welshi"
+ },
+ "yo": {
+ "code": "yo",
+ "name": "Èdè Yorùbá"
+ },
+ "ebu": {
+ "code": "ebu",
+ "name": "Embu"
+ },
+ "en-AU": {
+ "code": "en-AU",
+ "name": "en_AU"
+ },
+ "en-CA": {
+ "code": "en-CA",
+ "name": "en_CA"
+ },
+ "en-GB": {
+ "code": "en-GB",
+ "name": "en_GB"
+ },
+ "en-US": {
+ "code": "en-US",
+ "name": "en_US"
+ },
+ "es-ES": {
+ "code": "es-ES",
+ "name": "es_ES"
+ },
+ "es-MX": {
+ "code": "es-MX",
+ "name": "es_MX"
+ },
+ "ee": {
+ "code": "ee",
+ "name": "Ewe"
+ },
+ "ewo": {
+ "code": "ewo",
+ "name": "Ewondo"
+ },
+ "fr-CA": {
+ "code": "fr-CA",
+ "name": "fr_CA"
+ },
+ "fr-CH": {
+ "code": "fr-CH",
+ "name": "fr_CH"
+ },
+ "fur": {
+ "code": "fur",
+ "name": "Friulian"
+ },
+ "ff": {
+ "code": "ff",
+ "name": "Fulah"
+ },
+ "lg": {
+ "code": "lg",
+ "name": "Ganda"
+ },
+ "guz": {
+ "code": "guz",
+ "name": "Gusii"
+ },
+ "dyo": {
+ "code": "dyo",
+ "name": "Jola-Fonyi"
+ },
+ "kea": {
+ "code": "kea",
+ "name": "Kabuverdianu"
+ },
+ "kab": {
+ "code": "kab",
+ "name": "Kabyle"
+ },
+ "kl": {
+ "code": "kl",
+ "name": "Kalaallisut"
+ },
+ "kln": {
+ "code": "kln",
+ "name": "Kalenjin"
+ },
+ "kam": {
+ "code": "kam",
+ "name": "Kamba"
+ },
+ "ks": {
+ "code": "ks",
+ "name": "Kashmiri"
+ },
+ "kk": {
+ "code": "kk",
+ "name": "Kazakh"
+ },
+ "ki": {
+ "code": "ki",
+ "name": "Kikuyu"
+ },
+ "khq": {
+ "code": "khq",
+ "name": "Koyra Chiini"
+ },
+ "ses": {
+ "code": "ses",
+ "name": "Koyraboro Senni"
+ },
+ "nmg": {
+ "code": "nmg",
+ "name": "Kwasio"
+ },
+ "ky": {
+ "code": "ky",
+ "name": "Kyrgyz"
+ },
+ "lag": {
+ "code": "lag",
+ "name": "Langi"
+ },
+ "lo": {
+ "code": "lo",
+ "name": "Lao"
+ },
+ "ln": {
+ "code": "ln",
+ "name": "Lingala"
+ },
+ "dsb": {
+ "code": "dsb",
+ "name": "Lower Sorbian"
+ },
+ "lu": {
+ "code": "lu",
+ "name": "Luba-Katanga"
+ },
+ "luo": {
+ "code": "luo",
+ "name": "Luo"
+ },
+ "lb": {
+ "code": "lb",
+ "name": "Luxembourgish"
+ },
+ "luy": {
+ "code": "luy",
+ "name": "Luyia"
+ },
+ "jmc": {
+ "code": "jmc",
+ "name": "Machame"
+ },
+ "mgh": {
+ "code": "mgh",
+ "name": "Makhuwa-Meetto"
+ },
+ "kde": {
+ "code": "kde",
+ "name": "Makonde"
+ },
+ "mg": {
+ "code": "mg",
+ "name": "Malagasy"
+ },
+ "ml": {
+ "code": "ml",
+ "name": "Malayalam"
+ },
+ "mas": {
+ "code": "mas",
+ "name": "Masai"
+ },
+ "mer": {
+ "code": "mer",
+ "name": "Meru"
+ },
+ "mn": {
+ "code": "mn",
+ "name": "Mongolian"
+ },
+ "mfe": {
+ "code": "mfe",
+ "name": "Morisyen"
+ },
+ "mua": {
+ "code": "mua",
+ "name": "Mundang"
+ },
+ "naq": {
+ "code": "naq",
+ "name": "Nama"
+ },
+ "jgo": {
+ "code": "jgo",
+ "name": "Ngomba"
+ },
+ "nl-BE": {
+ "code": "nl-BE",
+ "name": "nl_BE"
+ },
+ "nd": {
+ "code": "nd",
+ "name": "North Ndebele"
+ },
+ "se": {
+ "code": "se",
+ "name": "Northern Sami"
+ },
+ "nb": {
+ "code": "nb",
+ "name": "Norwegian Bokmål"
+ },
+ "nn": {
+ "code": "nn",
+ "name": "Norwegian Nynorsk"
+ },
+ "nus": {
+ "code": "nus",
+ "name": "Nuer"
+ },
+ "nyn": {
+ "code": "nyn",
+ "name": "Nyankole"
+ },
+ "or": {
+ "code": "or",
+ "name": "Oriya"
+ },
+ "ps": {
+ "code": "ps",
+ "name": "Pashto"
+ },
+ "pt-BR": {
+ "code": "pt-BR",
+ "name": "pt_BR"
+ },
+ "pt-PT": {
+ "code": "pt-PT",
+ "name": "pt_PT"
+ },
+ "ro-MD": {
+ "code": "ro-MD",
+ "name": "ro_MD"
+ },
+ "rm": {
+ "code": "rm",
+ "name": "Romansh"
+ },
+ "rof": {
+ "code": "rof",
+ "name": "Rombo"
+ },
+ "rn": {
+ "code": "rn",
+ "name": "Rundi"
+ },
+ "rwk": {
+ "code": "rwk",
+ "name": "Rwa"
+ },
+ "saq": {
+ "code": "saq",
+ "name": "Samburu"
+ },
+ "sg": {
+ "code": "sg",
+ "name": "Sango"
+ },
+ "sbp": {
+ "code": "sbp",
+ "name": "Sangu"
+ },
+ "seh": {
+ "code": "seh",
+ "name": "Sena"
+ },
+ "ksb": {
+ "code": "ksb",
+ "name": "Shambala"
+ },
+ "sn": {
+ "code": "sn",
+ "name": "Shona"
+ },
+ "xog": {
+ "code": "xog",
+ "name": "Soga"
+ },
+ "zgh": {
+ "code": "zgh",
+ "name": "Standard Moroccan Tamazight"
+ },
+ "gsw": {
+ "code": "gsw",
+ "name": "Swiss German"
+ },
+ "shi": {
+ "code": "shi",
+ "name": "Tachelhit"
+ },
+ "dav": {
+ "code": "dav",
+ "name": "Taita"
+ },
+ "twq": {
+ "code": "twq",
+ "name": "Tasawaq"
+ },
+ "teo": {
+ "code": "teo",
+ "name": "Teso"
+ },
+ "bo": {
+ "code": "bo",
+ "name": "Tibetan"
+ },
+ "to": {
+ "code": "to",
+ "name": "Tongan"
+ },
+ "hsb": {
+ "code": "hsb",
+ "name": "Upper Sorbian"
+ },
+ "ug": {
+ "code": "ug",
+ "name": "Uyghur"
+ },
+ "vai": {
+ "code": "vai",
+ "name": "Vai"
+ },
+ "vun": {
+ "code": "vun",
+ "name": "Vunjo"
+ },
+ "wae": {
+ "code": "wae",
+ "name": "Walser"
+ },
+ "yav": {
+ "code": "yav",
+ "name": "Yangben"
+ },
+ "dje": {
+ "code": "dje",
+ "name": "Zarma"
+ },
+ "zh-Hans": {
+ "code": "zh-Hans",
+ "name": "zh_Hans"
+ },
+ "zh-Hant": {
+ "code": "zh-Hant",
+ "name": "zh_Hant"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/language/zgh.json b/library/intl/resources/language/zgh.json
new file mode 100644
index 000000000..6b6d9172f
--- /dev/null
+++ b/library/intl/resources/language/zgh.json
@@ -0,0 +1,738 @@
+{
+ "af": {
+ "code": "af",
+ "name": "Afrikaans"
+ },
+ "agq": {
+ "code": "agq",
+ "name": "Aghem"
+ },
+ "sq": {
+ "code": "sq",
+ "name": "Albanian"
+ },
+ "ar-001": {
+ "code": "ar-001",
+ "name": "ar_001"
+ },
+ "hy": {
+ "code": "hy",
+ "name": "Armenian"
+ },
+ "ast": {
+ "code": "ast",
+ "name": "Asturian"
+ },
+ "asa": {
+ "code": "asa",
+ "name": "Asu"
+ },
+ "az": {
+ "code": "az",
+ "name": "Azerbaijani"
+ },
+ "ksf": {
+ "code": "ksf",
+ "name": "Bafia"
+ },
+ "bm": {
+ "code": "bm",
+ "name": "Bambara"
+ },
+ "bas": {
+ "code": "bas",
+ "name": "Basaa"
+ },
+ "eu": {
+ "code": "eu",
+ "name": "Basque"
+ },
+ "bez": {
+ "code": "bez",
+ "name": "Bena"
+ },
+ "brx": {
+ "code": "brx",
+ "name": "Bodo"
+ },
+ "bs": {
+ "code": "bs",
+ "name": "Bosnian"
+ },
+ "br": {
+ "code": "br",
+ "name": "Breton"
+ },
+ "ca": {
+ "code": "ca",
+ "name": "Catalan"
+ },
+ "tzm": {
+ "code": "tzm",
+ "name": "Central Atlas Tamazight"
+ },
+ "chr": {
+ "code": "chr",
+ "name": "Cherokee"
+ },
+ "cgg": {
+ "code": "cgg",
+ "name": "Chiga"
+ },
+ "ksh": {
+ "code": "ksh",
+ "name": "Colognian"
+ },
+ "swc": {
+ "code": "swc",
+ "name": "Congo Swahili"
+ },
+ "hr": {
+ "code": "hr",
+ "name": "Croatian"
+ },
+ "da": {
+ "code": "da",
+ "name": "Danish"
+ },
+ "de-AT": {
+ "code": "de-AT",
+ "name": "de_AT"
+ },
+ "de-CH": {
+ "code": "de-CH",
+ "name": "de_CH"
+ },
+ "dz": {
+ "code": "dz",
+ "name": "Dzongkha"
+ },
+ "ebu": {
+ "code": "ebu",
+ "name": "Embu"
+ },
+ "en-AU": {
+ "code": "en-AU",
+ "name": "en_AU"
+ },
+ "en-CA": {
+ "code": "en-CA",
+ "name": "en_CA"
+ },
+ "en-GB": {
+ "code": "en-GB",
+ "name": "en_GB"
+ },
+ "en-US": {
+ "code": "en-US",
+ "name": "en_US"
+ },
+ "es-ES": {
+ "code": "es-ES",
+ "name": "es_ES"
+ },
+ "es-MX": {
+ "code": "es-MX",
+ "name": "es_MX"
+ },
+ "eo": {
+ "code": "eo",
+ "name": "Esperanto"
+ },
+ "et": {
+ "code": "et",
+ "name": "Estonian"
+ },
+ "ee": {
+ "code": "ee",
+ "name": "Ewe"
+ },
+ "ewo": {
+ "code": "ewo",
+ "name": "Ewondo"
+ },
+ "fo": {
+ "code": "fo",
+ "name": "Faroese"
+ },
+ "fil": {
+ "code": "fil",
+ "name": "Filipino"
+ },
+ "fi": {
+ "code": "fi",
+ "name": "Finnish"
+ },
+ "fr-CA": {
+ "code": "fr-CA",
+ "name": "fr_CA"
+ },
+ "fr-CH": {
+ "code": "fr-CH",
+ "name": "fr_CH"
+ },
+ "fur": {
+ "code": "fur",
+ "name": "Friulian"
+ },
+ "ff": {
+ "code": "ff",
+ "name": "Fulah"
+ },
+ "gl": {
+ "code": "gl",
+ "name": "Galician"
+ },
+ "lg": {
+ "code": "lg",
+ "name": "Ganda"
+ },
+ "ka": {
+ "code": "ka",
+ "name": "Georgian"
+ },
+ "gu": {
+ "code": "gu",
+ "name": "Gujarati"
+ },
+ "guz": {
+ "code": "guz",
+ "name": "Gusii"
+ },
+ "he": {
+ "code": "he",
+ "name": "Hebrew"
+ },
+ "is": {
+ "code": "is",
+ "name": "Icelandic"
+ },
+ "ga": {
+ "code": "ga",
+ "name": "Irish"
+ },
+ "dyo": {
+ "code": "dyo",
+ "name": "Jola-Fonyi"
+ },
+ "kea": {
+ "code": "kea",
+ "name": "Kabuverdianu"
+ },
+ "kab": {
+ "code": "kab",
+ "name": "Kabyle"
+ },
+ "kl": {
+ "code": "kl",
+ "name": "Kalaallisut"
+ },
+ "kln": {
+ "code": "kln",
+ "name": "Kalenjin"
+ },
+ "kam": {
+ "code": "kam",
+ "name": "Kamba"
+ },
+ "kn": {
+ "code": "kn",
+ "name": "Kannada"
+ },
+ "ks": {
+ "code": "ks",
+ "name": "Kashmiri"
+ },
+ "kk": {
+ "code": "kk",
+ "name": "Kazakh"
+ },
+ "ki": {
+ "code": "ki",
+ "name": "Kikuyu"
+ },
+ "khq": {
+ "code": "khq",
+ "name": "Koyra Chiini"
+ },
+ "ses": {
+ "code": "ses",
+ "name": "Koyraboro Senni"
+ },
+ "nmg": {
+ "code": "nmg",
+ "name": "Kwasio"
+ },
+ "ky": {
+ "code": "ky",
+ "name": "Kyrgyz"
+ },
+ "lag": {
+ "code": "lag",
+ "name": "Langi"
+ },
+ "lo": {
+ "code": "lo",
+ "name": "Lao"
+ },
+ "lv": {
+ "code": "lv",
+ "name": "Latvian"
+ },
+ "ln": {
+ "code": "ln",
+ "name": "Lingala"
+ },
+ "lt": {
+ "code": "lt",
+ "name": "Lithuanian"
+ },
+ "dsb": {
+ "code": "dsb",
+ "name": "Lower Sorbian"
+ },
+ "lu": {
+ "code": "lu",
+ "name": "Luba-Katanga"
+ },
+ "luo": {
+ "code": "luo",
+ "name": "Luo"
+ },
+ "lb": {
+ "code": "lb",
+ "name": "Luxembourgish"
+ },
+ "luy": {
+ "code": "luy",
+ "name": "Luyia"
+ },
+ "mk": {
+ "code": "mk",
+ "name": "Macedonian"
+ },
+ "jmc": {
+ "code": "jmc",
+ "name": "Machame"
+ },
+ "mgh": {
+ "code": "mgh",
+ "name": "Makhuwa-Meetto"
+ },
+ "kde": {
+ "code": "kde",
+ "name": "Makonde"
+ },
+ "mg": {
+ "code": "mg",
+ "name": "Malagasy"
+ },
+ "ml": {
+ "code": "ml",
+ "name": "Malayalam"
+ },
+ "mt": {
+ "code": "mt",
+ "name": "Maltese"
+ },
+ "mr": {
+ "code": "mr",
+ "name": "Marathi"
+ },
+ "mas": {
+ "code": "mas",
+ "name": "Masai"
+ },
+ "mer": {
+ "code": "mer",
+ "name": "Meru"
+ },
+ "mn": {
+ "code": "mn",
+ "name": "Mongolian"
+ },
+ "mfe": {
+ "code": "mfe",
+ "name": "Morisyen"
+ },
+ "mua": {
+ "code": "mua",
+ "name": "Mundang"
+ },
+ "naq": {
+ "code": "naq",
+ "name": "Nama"
+ },
+ "jgo": {
+ "code": "jgo",
+ "name": "Ngomba"
+ },
+ "nl-BE": {
+ "code": "nl-BE",
+ "name": "nl_BE"
+ },
+ "nd": {
+ "code": "nd",
+ "name": "North Ndebele"
+ },
+ "se": {
+ "code": "se",
+ "name": "Northern Sami"
+ },
+ "nb": {
+ "code": "nb",
+ "name": "Norwegian Bokmål"
+ },
+ "nn": {
+ "code": "nn",
+ "name": "Norwegian Nynorsk"
+ },
+ "nus": {
+ "code": "nus",
+ "name": "Nuer"
+ },
+ "nyn": {
+ "code": "nyn",
+ "name": "Nyankole"
+ },
+ "or": {
+ "code": "or",
+ "name": "Oriya"
+ },
+ "ps": {
+ "code": "ps",
+ "name": "Pashto"
+ },
+ "pt-BR": {
+ "code": "pt-BR",
+ "name": "pt_BR"
+ },
+ "pt-PT": {
+ "code": "pt-PT",
+ "name": "pt_PT"
+ },
+ "ro-MD": {
+ "code": "ro-MD",
+ "name": "ro_MD"
+ },
+ "rm": {
+ "code": "rm",
+ "name": "Romansh"
+ },
+ "rof": {
+ "code": "rof",
+ "name": "Rombo"
+ },
+ "rn": {
+ "code": "rn",
+ "name": "Rundi"
+ },
+ "rwk": {
+ "code": "rwk",
+ "name": "Rwa"
+ },
+ "saq": {
+ "code": "saq",
+ "name": "Samburu"
+ },
+ "sg": {
+ "code": "sg",
+ "name": "Sango"
+ },
+ "sbp": {
+ "code": "sbp",
+ "name": "Sangu"
+ },
+ "gd": {
+ "code": "gd",
+ "name": "Scottish Gaelic"
+ },
+ "seh": {
+ "code": "seh",
+ "name": "Sena"
+ },
+ "sr": {
+ "code": "sr",
+ "name": "Serbian"
+ },
+ "ksb": {
+ "code": "ksb",
+ "name": "Shambala"
+ },
+ "sn": {
+ "code": "sn",
+ "name": "Shona"
+ },
+ "si": {
+ "code": "si",
+ "name": "Sinhala"
+ },
+ "sk": {
+ "code": "sk",
+ "name": "Slovak"
+ },
+ "sl": {
+ "code": "sl",
+ "name": "Slovenian"
+ },
+ "xog": {
+ "code": "xog",
+ "name": "Soga"
+ },
+ "sw": {
+ "code": "sw",
+ "name": "Swahili"
+ },
+ "gsw": {
+ "code": "gsw",
+ "name": "Swiss German"
+ },
+ "shi": {
+ "code": "shi",
+ "name": "Tachelhit"
+ },
+ "dav": {
+ "code": "dav",
+ "name": "Taita"
+ },
+ "twq": {
+ "code": "twq",
+ "name": "Tasawaq"
+ },
+ "te": {
+ "code": "te",
+ "name": "Telugu"
+ },
+ "teo": {
+ "code": "teo",
+ "name": "Teso"
+ },
+ "bo": {
+ "code": "bo",
+ "name": "Tibetan"
+ },
+ "ti": {
+ "code": "ti",
+ "name": "Tigrinya"
+ },
+ "to": {
+ "code": "to",
+ "name": "Tongan"
+ },
+ "hsb": {
+ "code": "hsb",
+ "name": "Upper Sorbian"
+ },
+ "ug": {
+ "code": "ug",
+ "name": "Uyghur"
+ },
+ "uz": {
+ "code": "uz",
+ "name": "Uzbek"
+ },
+ "vai": {
+ "code": "vai",
+ "name": "Vai"
+ },
+ "vun": {
+ "code": "vun",
+ "name": "Vunjo"
+ },
+ "wae": {
+ "code": "wae",
+ "name": "Walser"
+ },
+ "cy": {
+ "code": "cy",
+ "name": "Welsh"
+ },
+ "fy": {
+ "code": "fy",
+ "name": "Western Frisian"
+ },
+ "yav": {
+ "code": "yav",
+ "name": "Yangben"
+ },
+ "dje": {
+ "code": "dje",
+ "name": "Zarma"
+ },
+ "zh-Hans": {
+ "code": "zh-Hans",
+ "name": "zh_Hans"
+ },
+ "zh-Hant": {
+ "code": "zh-Hant",
+ "name": "zh_Hant"
+ },
+ "be": {
+ "code": "be",
+ "name": "ⵜⴰⴱⵉâµâ´°âµ”ⵓⵙⵜ"
+ },
+ "my": {
+ "code": "my",
+ "name": "ⵜⴰⴱⵉⵔⵎⴰâµâµ‰âµœ"
+ },
+ "vi": {
+ "code": "vi",
+ "name": "ⵜⴰⴱⵉⵜâµâ´°âµŽâµ‰âµœ"
+ },
+ "bg": {
+ "code": "bg",
+ "name": "ⵜⴰⴱâµâµ–ⴰⵔⵉⵜ"
+ },
+ "pa": {
+ "code": "pa",
+ "name": "ⵜⴰⴱâµâµŠâ´°â´±âµ‰âµœ"
+ },
+ "bn": {
+ "code": "bn",
+ "name": "ⵜⴰⴱâµâµ–â´°âµâµ‰âµœ"
+ },
+ "pl": {
+ "code": "pl",
+ "name": "ⵜⴰⴱⵓâµâµ“âµâµ‰âµœ"
+ },
+ "pt": {
+ "code": "pt",
+ "name": "ⵜⴰⴱⵕⵟⵇⵉⵣⵜ"
+ },
+ "el": {
+ "code": "el",
+ "name": "ⵜⴰⴳⵔⵉⴳⵉⵜ"
+ },
+ "fa": {
+ "code": "fa",
+ "name": "ⵜⴰⴼⵓⵔⵙⵉⵜ"
+ },
+ "fr": {
+ "code": "fr",
+ "name": "ⵜⴰⴼⵔⴰâµâµ™âµ‰âµ™âµœ"
+ },
+ "ak": {
+ "code": "ak",
+ "name": "ⵜⴰⴽⴰâµâµœ"
+ },
+ "ko": {
+ "code": "ko",
+ "name": "ⵜⴰⴽⵓⵔⵉⵜ"
+ },
+ "ha": {
+ "code": "ha",
+ "name": "ⵜⴰⵀⴰⵡⵙⴰⵜ"
+ },
+ "hi": {
+ "code": "hi",
+ "name": "ⵜⴰⵀⵉâµâ´·âµ‰âµœ"
+ },
+ "hu": {
+ "code": "hu",
+ "name": "ⵜⴰⵀâµâµ–ⴰⵔⵉⵜ"
+ },
+ "nl": {
+ "code": "nl",
+ "name": "ⵜⴰⵀⵓâµâ´°âµâ´·âµ‰âµœ"
+ },
+ "ar": {
+ "code": "ar",
+ "name": "ⵜⴰⵄⵔⴰⴱⵜ"
+ },
+ "km": {
+ "code": "km",
+ "name": "ⵜⴰⵅⵎⵉⵔⵜ"
+ },
+ "ja": {
+ "code": "ja",
+ "name": "ⵜⴰⵊⴰⴱⴱⵓâµâµ‰âµœ"
+ },
+ "de": {
+ "code": "de",
+ "name": "ⵜⴰâµâµ‰âµŽâ´°âµâµœ"
+ },
+ "ms": {
+ "code": "ms",
+ "name": "ⵜⴰⵎⴰâµâ´°âµ¡âµ‰âµœ"
+ },
+ "zgh": {
+ "code": "zgh",
+ "name": "ⵜⴰⵎⴰⵣⵉⵖⵜ"
+ },
+ "am": {
+ "code": "am",
+ "name": "ⵜⴰⵎⵀⴰⵔⵉⵜ"
+ },
+ "en": {
+ "code": "en",
+ "name": "ⵜⴰâµâ´³âµâµ‰âµ£âµœ"
+ },
+ "id": {
+ "code": "id",
+ "name": "ⵜⴰâµâ´·âµ“âµâµ‰âµ™âµ‰âµœ"
+ },
+ "ne": {
+ "code": "ne",
+ "name": "ⵜⴰâµâµ‰â´±â´°âµâµ‰âµœ"
+ },
+ "ro": {
+ "code": "ro",
+ "name": "ⵜⴰⵔⵓⵎⴰâµâµ‰âµœ"
+ },
+ "ru": {
+ "code": "ru",
+ "name": "ⵜⴰⵔⵓⵙⵉⵜ"
+ },
+ "es": {
+ "code": "es",
+ "name": "ⵜⴰⵙⴱâµâµ¢âµ“âµâµ‰âµœ"
+ },
+ "so": {
+ "code": "so",
+ "name": "ⵜⴰⵙⵓⵎⴰâµâµ‰âµœ"
+ },
+ "sv": {
+ "code": "sv",
+ "name": "ⵜⴰⵙⵡⵉⴷⵉⵜ"
+ },
+ "zh": {
+ "code": "zh",
+ "name": "ⵜⴰⵛⵉâµâµ¡âµ‰âµœ"
+ },
+ "ta": {
+ "code": "ta",
+ "name": "ⵜⴰⵜⴰⵎⵉâµâµœ"
+ },
+ "th": {
+ "code": "th",
+ "name": "ⵜⴰⵜⴰⵢâµâ´°âµâ´·âµ‰âµœ"
+ },
+ "tr": {
+ "code": "tr",
+ "name": "ⵜⴰⵜⵓⵔⴽⵉⵜ"
+ },
+ "cs": {
+ "code": "cs",
+ "name": "ⵜⴰⵜⵛⵉⴽⵉⵜ"
+ },
+ "it": {
+ "code": "it",
+ "name": "ⵜⴰⵟⴰâµâµ¢â´°âµâµœ"
+ },
+ "yo": {
+ "code": "yo",
+ "name": "ⵜⴰⵢⵔⵓⴱⴰⵜ"
+ },
+ "zu": {
+ "code": "zu",
+ "name": "ⵜⴰⵣⵓâµâµ“ⵜ"
+ },
+ "uk": {
+ "code": "uk",
+ "name": "ⵜⵓⴽⵔⴰâµâµ‰âµœ"
+ },
+ "ur": {
+ "code": "ur",
+ "name": "ⵜⵓⵔⴷⵓⵜ"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/language/zh-Hans-HK.json b/library/intl/resources/language/zh-Hans-HK.json
new file mode 100644
index 000000000..6c5f166f3
--- /dev/null
+++ b/library/intl/resources/language/zh-Hans-HK.json
@@ -0,0 +1,738 @@
+{
+ "sq": {
+ "code": "sq",
+ "name": "阿尔巴尼亚文"
+ },
+ "ak": {
+ "code": "ak",
+ "name": "阿肯文"
+ },
+ "ar": {
+ "code": "ar",
+ "name": "阿拉伯文"
+ },
+ "am": {
+ "code": "am",
+ "name": "阿姆哈拉文"
+ },
+ "az": {
+ "code": "az",
+ "name": "阿塞拜疆文"
+ },
+ "ast": {
+ "code": "ast",
+ "name": "阿斯图里亚æ€æ–‡"
+ },
+ "asa": {
+ "code": "asa",
+ "name": "阿è‹æ–‡"
+ },
+ "ee": {
+ "code": "ee",
+ "name": "埃维文"
+ },
+ "ga": {
+ "code": "ga",
+ "name": "爱尔兰文"
+ },
+ "et": {
+ "code": "et",
+ "name": "爱沙尼亚文"
+ },
+ "de-AT": {
+ "code": "de-AT",
+ "name": "奥地利德文"
+ },
+ "or": {
+ "code": "or",
+ "name": "奥里亚文"
+ },
+ "en-AU": {
+ "code": "en-AU",
+ "name": "澳大利亚英文"
+ },
+ "ksf": {
+ "code": "ksf",
+ "name": "å·´è²äºšæ–‡"
+ },
+ "bas": {
+ "code": "bas",
+ "name": "å·´è¨æ–‡"
+ },
+ "eu": {
+ "code": "eu",
+ "name": "巴斯克文"
+ },
+ "pt-BR": {
+ "code": "pt-BR",
+ "name": "巴西葡è„牙文"
+ },
+ "be": {
+ "code": "be",
+ "name": "白俄罗斯文"
+ },
+ "bm": {
+ "code": "bm",
+ "name": "ç­å·´æ‹‰æ–‡"
+ },
+ "bg": {
+ "code": "bg",
+ "name": "ä¿åŠ åˆ©äºšæ–‡"
+ },
+ "nd": {
+ "code": "nd",
+ "name": "北æ©å¾·è´å‹’æ–‡"
+ },
+ "se": {
+ "code": "se",
+ "name": "北è¨ç±³æ–‡"
+ },
+ "twq": {
+ "code": "twq",
+ "name": "北桑海文"
+ },
+ "bez": {
+ "code": "bez",
+ "name": "è´çº³æ–‡"
+ },
+ "zgh": {
+ "code": "zgh",
+ "name": "标准摩洛哥塔马塞特文"
+ },
+ "is": {
+ "code": "is",
+ "name": "冰岛文"
+ },
+ "pl": {
+ "code": "pl",
+ "name": "波兰文"
+ },
+ "bs": {
+ "code": "bs",
+ "name": "波斯尼亚文"
+ },
+ "fa": {
+ "code": "fa",
+ "name": "波斯文"
+ },
+ "brx": {
+ "code": "brx",
+ "name": "åšå¤šæ–‡"
+ },
+ "dz": {
+ "code": "dz",
+ "name": "ä¸ä¸¹æ–‡"
+ },
+ "br": {
+ "code": "br",
+ "name": "布里多尼文"
+ },
+ "bo": {
+ "code": "bo",
+ "name": "è—æ–‡"
+ },
+ "chr": {
+ "code": "chr",
+ "name": "彻罗基文"
+ },
+ "da": {
+ "code": "da",
+ "name": "丹麦文"
+ },
+ "de": {
+ "code": "de",
+ "name": "å¾·æ–‡"
+ },
+ "ses": {
+ "code": "ses",
+ "name": "东桑海文"
+ },
+ "ru": {
+ "code": "ru",
+ "name": "ä¿„æ–‡"
+ },
+ "ebu": {
+ "code": "ebu",
+ "name": "æ©å¸ƒæ–‡"
+ },
+ "jgo": {
+ "code": "jgo",
+ "name": "æ©è‰®å·´"
+ },
+ "fo": {
+ "code": "fo",
+ "name": "法罗文"
+ },
+ "fr": {
+ "code": "fr",
+ "name": "法文"
+ },
+ "zh-Hant": {
+ "code": "zh-Hant",
+ "name": "ç¹ä½“中文"
+ },
+ "fil": {
+ "code": "fil",
+ "name": "è²å¾‹å®¾æ–‡"
+ },
+ "fi": {
+ "code": "fi",
+ "name": "芬兰文"
+ },
+ "fur": {
+ "code": "fur",
+ "name": "弗留利文"
+ },
+ "nl-BE": {
+ "code": "nl-BE",
+ "name": "佛兰芒文"
+ },
+ "ff": {
+ "code": "ff",
+ "name": "夫拉文"
+ },
+ "swc": {
+ "code": "swc",
+ "name": "刚果斯瓦希里文"
+ },
+ "km": {
+ "code": "km",
+ "name": "高棉文"
+ },
+ "kl": {
+ "code": "kl",
+ "name": "格陵兰文"
+ },
+ "ka": {
+ "code": "ka",
+ "name": "æ ¼é²å‰äºšæ–‡"
+ },
+ "gu": {
+ "code": "gu",
+ "name": "å¤å‰æ‹‰ç‰¹æ–‡"
+ },
+ "guz": {
+ "code": "guz",
+ "name": "å¤è¥¿æ–‡"
+ },
+ "kk": {
+ "code": "kk",
+ "name": "哈è¨å…‹æ–‡"
+ },
+ "ko": {
+ "code": "ko",
+ "name": "韩文"
+ },
+ "ha": {
+ "code": "ha",
+ "name": "豪è¨æ–‡"
+ },
+ "nl": {
+ "code": "nl",
+ "name": "è·å…°æ–‡"
+ },
+ "rn": {
+ "code": "rn",
+ "name": "基隆迪文"
+ },
+ "ky": {
+ "code": "ky",
+ "name": "å‰å°”å‰æ–¯æ–‡"
+ },
+ "ki": {
+ "code": "ki",
+ "name": "å‰åº“尤文"
+ },
+ "gl": {
+ "code": "gl",
+ "name": "加利西亚文"
+ },
+ "fr-CA": {
+ "code": "fr-CA",
+ "name": "加拿大法文"
+ },
+ "en-CA": {
+ "code": "en-CA",
+ "name": "加拿大英文"
+ },
+ "ca": {
+ "code": "ca",
+ "name": "加泰罗尼亚文"
+ },
+ "zh-Hans": {
+ "code": "zh-Hans",
+ "name": "简体中文"
+ },
+ "cs": {
+ "code": "cs",
+ "name": "æ·å…‹æ–‡"
+ },
+ "kab": {
+ "code": "kab",
+ "name": "å¡æ¯”尔文"
+ },
+ "kea": {
+ "code": "kea",
+ "name": "å¡å¸ƒä½›å¾—é²æ–‡"
+ },
+ "kln": {
+ "code": "kln",
+ "name": "å¡ä¼¦é‡‘æ–‡"
+ },
+ "kam": {
+ "code": "kam",
+ "name": "å¡å§†å·´æ–‡"
+ },
+ "kn": {
+ "code": "kn",
+ "name": "å¡çº³è¾¾æ–‡"
+ },
+ "ksh": {
+ "code": "ksh",
+ "name": "科隆文"
+ },
+ "hr": {
+ "code": "hr",
+ "name": "克罗地亚文"
+ },
+ "ks": {
+ "code": "ks",
+ "name": "克什米尔文"
+ },
+ "nmg": {
+ "code": "nmg",
+ "name": "夸西奥文"
+ },
+ "lv": {
+ "code": "lv",
+ "name": "拉脱维亚文"
+ },
+ "rof": {
+ "code": "rof",
+ "name": "å…°åšæ–‡"
+ },
+ "lag": {
+ "code": "lag",
+ "name": "朗å‰æ–‡"
+ },
+ "lo": {
+ "code": "lo",
+ "name": "è€æŒæ–‡"
+ },
+ "lt": {
+ "code": "lt",
+ "name": "立陶宛文"
+ },
+ "ln": {
+ "code": "ln",
+ "name": "林加拉文"
+ },
+ "luo": {
+ "code": "luo",
+ "name": "å¢å¥¥æ–‡"
+ },
+ "lg": {
+ "code": "lg",
+ "name": "å¢å¹²è¾¾æ–‡"
+ },
+ "lb": {
+ "code": "lb",
+ "name": "å¢æ£®å ¡æ–‡"
+ },
+ "luy": {
+ "code": "luy",
+ "name": "å¢é›…æ–‡"
+ },
+ "lu": {
+ "code": "lu",
+ "name": "é²å·´åŠ ä¸¹åŠ æ–‡"
+ },
+ "ro": {
+ "code": "ro",
+ "name": "罗马尼亚文"
+ },
+ "rm": {
+ "code": "rm",
+ "name": "罗曼什文"
+ },
+ "rwk": {
+ "code": "rwk",
+ "name": "罗瓦文"
+ },
+ "mg": {
+ "code": "mg",
+ "name": "马尔加什文"
+ },
+ "mt": {
+ "code": "mt",
+ "name": "马耳他文"
+ },
+ "kde": {
+ "code": "kde",
+ "name": "马孔德文"
+ },
+ "mgh": {
+ "code": "mgh",
+ "name": "马夸文"
+ },
+ "mr": {
+ "code": "mr",
+ "name": "马拉地文"
+ },
+ "ml": {
+ "code": "ml",
+ "name": "马拉雅拉姆文"
+ },
+ "ms": {
+ "code": "ms",
+ "name": "马æ¥æ–‡"
+ },
+ "mk": {
+ "code": "mk",
+ "name": "马其顿文"
+ },
+ "jmc": {
+ "code": "jmc",
+ "name": "马切姆文"
+ },
+ "mfe": {
+ "code": "mfe",
+ "name": "毛里求斯克里奥尔文"
+ },
+ "mer": {
+ "code": "mer",
+ "name": "梅é²æ–‡"
+ },
+ "en-US": {
+ "code": "en-US",
+ "name": "美å¼è‹±æ–‡"
+ },
+ "mua": {
+ "code": "mua",
+ "name": "蒙当文"
+ },
+ "mn": {
+ "code": "mn",
+ "name": "è’™å¤æ–‡"
+ },
+ "bn": {
+ "code": "bn",
+ "name": "孟加拉文"
+ },
+ "my": {
+ "code": "my",
+ "name": "缅甸文"
+ },
+ "ro-MD": {
+ "code": "ro-MD",
+ "name": "摩尔多瓦文"
+ },
+ "es-MX": {
+ "code": "es-MX",
+ "name": "墨西哥西ç­ç‰™æ–‡"
+ },
+ "naq": {
+ "code": "naq",
+ "name": "纳马文"
+ },
+ "af": {
+ "code": "af",
+ "name": "å—éžè·å…°æ–‡"
+ },
+ "nyn": {
+ "code": "nyn",
+ "name": "尼昂科勒文"
+ },
+ "ne": {
+ "code": "ne",
+ "name": "尼泊尔文"
+ },
+ "nus": {
+ "code": "nus",
+ "name": "努埃尔文"
+ },
+ "nb": {
+ "code": "nb",
+ "name": "挪å¨åšå…‹é©¬å°”æ–‡"
+ },
+ "nn": {
+ "code": "nn",
+ "name": "挪å¨å°¼è¯ºæ–¯å…‹æ–‡"
+ },
+ "pa": {
+ "code": "pa",
+ "name": "æ—é®æ™®æ–‡"
+ },
+ "pt": {
+ "code": "pt",
+ "name": "è‘¡è„牙文"
+ },
+ "ps": {
+ "code": "ps",
+ "name": "普什图文"
+ },
+ "cgg": {
+ "code": "cgg",
+ "name": "奇加文"
+ },
+ "ja": {
+ "code": "ja",
+ "name": "日文"
+ },
+ "sv": {
+ "code": "sv",
+ "name": "瑞典文"
+ },
+ "gsw": {
+ "code": "gsw",
+ "name": "瑞士德文"
+ },
+ "fr-CH": {
+ "code": "fr-CH",
+ "name": "瑞士法文"
+ },
+ "de-CH": {
+ "code": "de-CH",
+ "name": "瑞士高地德文"
+ },
+ "mas": {
+ "code": "mas",
+ "name": "è¨ä¼Šæ–‡"
+ },
+ "sr": {
+ "code": "sr",
+ "name": "塞尔维亚文"
+ },
+ "seh": {
+ "code": "seh",
+ "name": "塞纳文"
+ },
+ "saq": {
+ "code": "saq",
+ "name": "桑布é²æ–‡"
+ },
+ "sg": {
+ "code": "sg",
+ "name": "桑戈文"
+ },
+ "sbp": {
+ "code": "sbp",
+ "name": "æ¡‘å¤æ–‡"
+ },
+ "si": {
+ "code": "si",
+ "name": "僧伽罗文"
+ },
+ "hsb": {
+ "code": "hsb",
+ "name": "上索布文"
+ },
+ "sn": {
+ "code": "sn",
+ "name": "ç»çº³æ–‡"
+ },
+ "eo": {
+ "code": "eo",
+ "name": "世界文"
+ },
+ "sk": {
+ "code": "sk",
+ "name": "斯洛ä¼å…‹æ–‡"
+ },
+ "sl": {
+ "code": "sl",
+ "name": "斯洛文尼亚文"
+ },
+ "sw": {
+ "code": "sw",
+ "name": "斯瓦希里文"
+ },
+ "gd": {
+ "code": "gd",
+ "name": "è‹æ ¼å…°ç›–尔文"
+ },
+ "xog": {
+ "code": "xog",
+ "name": "索加文"
+ },
+ "so": {
+ "code": "so",
+ "name": "索马里文"
+ },
+ "tzm": {
+ "code": "tzm",
+ "name": "塔马é½æ ¼ç‰¹æ–‡"
+ },
+ "dav": {
+ "code": "dav",
+ "name": "å°å¡”æ–‡"
+ },
+ "te": {
+ "code": "te",
+ "name": "æ³°å¢å›ºæ–‡"
+ },
+ "ta": {
+ "code": "ta",
+ "name": "泰米尔文"
+ },
+ "th": {
+ "code": "th",
+ "name": "æ³°æ–‡"
+ },
+ "to": {
+ "code": "to",
+ "name": "汤加文"
+ },
+ "teo": {
+ "code": "teo",
+ "name": "特索文"
+ },
+ "ti": {
+ "code": "ti",
+ "name": "æ格里尼亚文"
+ },
+ "tr": {
+ "code": "tr",
+ "name": "土耳其文"
+ },
+ "wae": {
+ "code": "wae",
+ "name": "瓦尔瑟文"
+ },
+ "vai": {
+ "code": "vai",
+ "name": "瓦伊文"
+ },
+ "ewo": {
+ "code": "ewo",
+ "name": "æ—ºæœæ–‡"
+ },
+ "cy": {
+ "code": "cy",
+ "name": "å¨å°”士文"
+ },
+ "ug": {
+ "code": "ug",
+ "name": "ç»´å¾å°”æ–‡"
+ },
+ "vun": {
+ "code": "vun",
+ "name": "温旧文"
+ },
+ "ur": {
+ "code": "ur",
+ "name": "乌尔都文"
+ },
+ "uk": {
+ "code": "uk",
+ "name": "乌克兰文"
+ },
+ "uz": {
+ "code": "uz",
+ "name": "乌兹别克文"
+ },
+ "he": {
+ "code": "he",
+ "name": "希伯æ¥æ–‡"
+ },
+ "shi": {
+ "code": "shi",
+ "name": "希尔哈文"
+ },
+ "el": {
+ "code": "el",
+ "name": "希腊文"
+ },
+ "es": {
+ "code": "es",
+ "name": "西ç­ç‰™æ–‡"
+ },
+ "fy": {
+ "code": "fy",
+ "name": "西弗里西亚文"
+ },
+ "khq": {
+ "code": "khq",
+ "name": "西桑海文"
+ },
+ "dsb": {
+ "code": "dsb",
+ "name": "下索布文"
+ },
+ "ar-001": {
+ "code": "ar-001",
+ "name": "现代标准阿拉伯文"
+ },
+ "ksb": {
+ "code": "ksb",
+ "name": "香巴拉文"
+ },
+ "hu": {
+ "code": "hu",
+ "name": "匈牙利文"
+ },
+ "agq": {
+ "code": "agq",
+ "name": "亚罕文"
+ },
+ "hy": {
+ "code": "hy",
+ "name": "亚美尼亚文"
+ },
+ "yav": {
+ "code": "yav",
+ "name": "æ´‹åžæ–‡"
+ },
+ "pt-PT": {
+ "code": "pt-PT",
+ "name": "伊比利亚葡è„牙文"
+ },
+ "es-ES": {
+ "code": "es-ES",
+ "name": "伊比利亚西ç­ç‰™æ–‡"
+ },
+ "it": {
+ "code": "it",
+ "name": "æ„大利文"
+ },
+ "hi": {
+ "code": "hi",
+ "name": "å°åœ°æ–‡"
+ },
+ "id": {
+ "code": "id",
+ "name": "å°åº¦å°¼è¥¿äºšæ–‡"
+ },
+ "en-GB": {
+ "code": "en-GB",
+ "name": "英å¼è‹±æ–‡"
+ },
+ "en": {
+ "code": "en",
+ "name": "英文"
+ },
+ "yo": {
+ "code": "yo",
+ "name": "约é²å·´æ–‡"
+ },
+ "vi": {
+ "code": "vi",
+ "name": "越å—æ–‡"
+ },
+ "dje": {
+ "code": "dje",
+ "name": "哲尔马文"
+ },
+ "zh": {
+ "code": "zh",
+ "name": "中文"
+ },
+ "dyo": {
+ "code": "dyo",
+ "name": "朱拉文"
+ },
+ "zu": {
+ "code": "zu",
+ "name": "祖é²æ–‡"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/language/zh-Hans-MO.json b/library/intl/resources/language/zh-Hans-MO.json
new file mode 100644
index 000000000..6c5f166f3
--- /dev/null
+++ b/library/intl/resources/language/zh-Hans-MO.json
@@ -0,0 +1,738 @@
+{
+ "sq": {
+ "code": "sq",
+ "name": "阿尔巴尼亚文"
+ },
+ "ak": {
+ "code": "ak",
+ "name": "阿肯文"
+ },
+ "ar": {
+ "code": "ar",
+ "name": "阿拉伯文"
+ },
+ "am": {
+ "code": "am",
+ "name": "阿姆哈拉文"
+ },
+ "az": {
+ "code": "az",
+ "name": "阿塞拜疆文"
+ },
+ "ast": {
+ "code": "ast",
+ "name": "阿斯图里亚æ€æ–‡"
+ },
+ "asa": {
+ "code": "asa",
+ "name": "阿è‹æ–‡"
+ },
+ "ee": {
+ "code": "ee",
+ "name": "埃维文"
+ },
+ "ga": {
+ "code": "ga",
+ "name": "爱尔兰文"
+ },
+ "et": {
+ "code": "et",
+ "name": "爱沙尼亚文"
+ },
+ "de-AT": {
+ "code": "de-AT",
+ "name": "奥地利德文"
+ },
+ "or": {
+ "code": "or",
+ "name": "奥里亚文"
+ },
+ "en-AU": {
+ "code": "en-AU",
+ "name": "澳大利亚英文"
+ },
+ "ksf": {
+ "code": "ksf",
+ "name": "å·´è²äºšæ–‡"
+ },
+ "bas": {
+ "code": "bas",
+ "name": "å·´è¨æ–‡"
+ },
+ "eu": {
+ "code": "eu",
+ "name": "巴斯克文"
+ },
+ "pt-BR": {
+ "code": "pt-BR",
+ "name": "巴西葡è„牙文"
+ },
+ "be": {
+ "code": "be",
+ "name": "白俄罗斯文"
+ },
+ "bm": {
+ "code": "bm",
+ "name": "ç­å·´æ‹‰æ–‡"
+ },
+ "bg": {
+ "code": "bg",
+ "name": "ä¿åŠ åˆ©äºšæ–‡"
+ },
+ "nd": {
+ "code": "nd",
+ "name": "北æ©å¾·è´å‹’æ–‡"
+ },
+ "se": {
+ "code": "se",
+ "name": "北è¨ç±³æ–‡"
+ },
+ "twq": {
+ "code": "twq",
+ "name": "北桑海文"
+ },
+ "bez": {
+ "code": "bez",
+ "name": "è´çº³æ–‡"
+ },
+ "zgh": {
+ "code": "zgh",
+ "name": "标准摩洛哥塔马塞特文"
+ },
+ "is": {
+ "code": "is",
+ "name": "冰岛文"
+ },
+ "pl": {
+ "code": "pl",
+ "name": "波兰文"
+ },
+ "bs": {
+ "code": "bs",
+ "name": "波斯尼亚文"
+ },
+ "fa": {
+ "code": "fa",
+ "name": "波斯文"
+ },
+ "brx": {
+ "code": "brx",
+ "name": "åšå¤šæ–‡"
+ },
+ "dz": {
+ "code": "dz",
+ "name": "ä¸ä¸¹æ–‡"
+ },
+ "br": {
+ "code": "br",
+ "name": "布里多尼文"
+ },
+ "bo": {
+ "code": "bo",
+ "name": "è—æ–‡"
+ },
+ "chr": {
+ "code": "chr",
+ "name": "彻罗基文"
+ },
+ "da": {
+ "code": "da",
+ "name": "丹麦文"
+ },
+ "de": {
+ "code": "de",
+ "name": "å¾·æ–‡"
+ },
+ "ses": {
+ "code": "ses",
+ "name": "东桑海文"
+ },
+ "ru": {
+ "code": "ru",
+ "name": "ä¿„æ–‡"
+ },
+ "ebu": {
+ "code": "ebu",
+ "name": "æ©å¸ƒæ–‡"
+ },
+ "jgo": {
+ "code": "jgo",
+ "name": "æ©è‰®å·´"
+ },
+ "fo": {
+ "code": "fo",
+ "name": "法罗文"
+ },
+ "fr": {
+ "code": "fr",
+ "name": "法文"
+ },
+ "zh-Hant": {
+ "code": "zh-Hant",
+ "name": "ç¹ä½“中文"
+ },
+ "fil": {
+ "code": "fil",
+ "name": "è²å¾‹å®¾æ–‡"
+ },
+ "fi": {
+ "code": "fi",
+ "name": "芬兰文"
+ },
+ "fur": {
+ "code": "fur",
+ "name": "弗留利文"
+ },
+ "nl-BE": {
+ "code": "nl-BE",
+ "name": "佛兰芒文"
+ },
+ "ff": {
+ "code": "ff",
+ "name": "夫拉文"
+ },
+ "swc": {
+ "code": "swc",
+ "name": "刚果斯瓦希里文"
+ },
+ "km": {
+ "code": "km",
+ "name": "高棉文"
+ },
+ "kl": {
+ "code": "kl",
+ "name": "格陵兰文"
+ },
+ "ka": {
+ "code": "ka",
+ "name": "æ ¼é²å‰äºšæ–‡"
+ },
+ "gu": {
+ "code": "gu",
+ "name": "å¤å‰æ‹‰ç‰¹æ–‡"
+ },
+ "guz": {
+ "code": "guz",
+ "name": "å¤è¥¿æ–‡"
+ },
+ "kk": {
+ "code": "kk",
+ "name": "哈è¨å…‹æ–‡"
+ },
+ "ko": {
+ "code": "ko",
+ "name": "韩文"
+ },
+ "ha": {
+ "code": "ha",
+ "name": "豪è¨æ–‡"
+ },
+ "nl": {
+ "code": "nl",
+ "name": "è·å…°æ–‡"
+ },
+ "rn": {
+ "code": "rn",
+ "name": "基隆迪文"
+ },
+ "ky": {
+ "code": "ky",
+ "name": "å‰å°”å‰æ–¯æ–‡"
+ },
+ "ki": {
+ "code": "ki",
+ "name": "å‰åº“尤文"
+ },
+ "gl": {
+ "code": "gl",
+ "name": "加利西亚文"
+ },
+ "fr-CA": {
+ "code": "fr-CA",
+ "name": "加拿大法文"
+ },
+ "en-CA": {
+ "code": "en-CA",
+ "name": "加拿大英文"
+ },
+ "ca": {
+ "code": "ca",
+ "name": "加泰罗尼亚文"
+ },
+ "zh-Hans": {
+ "code": "zh-Hans",
+ "name": "简体中文"
+ },
+ "cs": {
+ "code": "cs",
+ "name": "æ·å…‹æ–‡"
+ },
+ "kab": {
+ "code": "kab",
+ "name": "å¡æ¯”尔文"
+ },
+ "kea": {
+ "code": "kea",
+ "name": "å¡å¸ƒä½›å¾—é²æ–‡"
+ },
+ "kln": {
+ "code": "kln",
+ "name": "å¡ä¼¦é‡‘æ–‡"
+ },
+ "kam": {
+ "code": "kam",
+ "name": "å¡å§†å·´æ–‡"
+ },
+ "kn": {
+ "code": "kn",
+ "name": "å¡çº³è¾¾æ–‡"
+ },
+ "ksh": {
+ "code": "ksh",
+ "name": "科隆文"
+ },
+ "hr": {
+ "code": "hr",
+ "name": "克罗地亚文"
+ },
+ "ks": {
+ "code": "ks",
+ "name": "克什米尔文"
+ },
+ "nmg": {
+ "code": "nmg",
+ "name": "夸西奥文"
+ },
+ "lv": {
+ "code": "lv",
+ "name": "拉脱维亚文"
+ },
+ "rof": {
+ "code": "rof",
+ "name": "å…°åšæ–‡"
+ },
+ "lag": {
+ "code": "lag",
+ "name": "朗å‰æ–‡"
+ },
+ "lo": {
+ "code": "lo",
+ "name": "è€æŒæ–‡"
+ },
+ "lt": {
+ "code": "lt",
+ "name": "立陶宛文"
+ },
+ "ln": {
+ "code": "ln",
+ "name": "林加拉文"
+ },
+ "luo": {
+ "code": "luo",
+ "name": "å¢å¥¥æ–‡"
+ },
+ "lg": {
+ "code": "lg",
+ "name": "å¢å¹²è¾¾æ–‡"
+ },
+ "lb": {
+ "code": "lb",
+ "name": "å¢æ£®å ¡æ–‡"
+ },
+ "luy": {
+ "code": "luy",
+ "name": "å¢é›…æ–‡"
+ },
+ "lu": {
+ "code": "lu",
+ "name": "é²å·´åŠ ä¸¹åŠ æ–‡"
+ },
+ "ro": {
+ "code": "ro",
+ "name": "罗马尼亚文"
+ },
+ "rm": {
+ "code": "rm",
+ "name": "罗曼什文"
+ },
+ "rwk": {
+ "code": "rwk",
+ "name": "罗瓦文"
+ },
+ "mg": {
+ "code": "mg",
+ "name": "马尔加什文"
+ },
+ "mt": {
+ "code": "mt",
+ "name": "马耳他文"
+ },
+ "kde": {
+ "code": "kde",
+ "name": "马孔德文"
+ },
+ "mgh": {
+ "code": "mgh",
+ "name": "马夸文"
+ },
+ "mr": {
+ "code": "mr",
+ "name": "马拉地文"
+ },
+ "ml": {
+ "code": "ml",
+ "name": "马拉雅拉姆文"
+ },
+ "ms": {
+ "code": "ms",
+ "name": "马æ¥æ–‡"
+ },
+ "mk": {
+ "code": "mk",
+ "name": "马其顿文"
+ },
+ "jmc": {
+ "code": "jmc",
+ "name": "马切姆文"
+ },
+ "mfe": {
+ "code": "mfe",
+ "name": "毛里求斯克里奥尔文"
+ },
+ "mer": {
+ "code": "mer",
+ "name": "梅é²æ–‡"
+ },
+ "en-US": {
+ "code": "en-US",
+ "name": "美å¼è‹±æ–‡"
+ },
+ "mua": {
+ "code": "mua",
+ "name": "蒙当文"
+ },
+ "mn": {
+ "code": "mn",
+ "name": "è’™å¤æ–‡"
+ },
+ "bn": {
+ "code": "bn",
+ "name": "孟加拉文"
+ },
+ "my": {
+ "code": "my",
+ "name": "缅甸文"
+ },
+ "ro-MD": {
+ "code": "ro-MD",
+ "name": "摩尔多瓦文"
+ },
+ "es-MX": {
+ "code": "es-MX",
+ "name": "墨西哥西ç­ç‰™æ–‡"
+ },
+ "naq": {
+ "code": "naq",
+ "name": "纳马文"
+ },
+ "af": {
+ "code": "af",
+ "name": "å—éžè·å…°æ–‡"
+ },
+ "nyn": {
+ "code": "nyn",
+ "name": "尼昂科勒文"
+ },
+ "ne": {
+ "code": "ne",
+ "name": "尼泊尔文"
+ },
+ "nus": {
+ "code": "nus",
+ "name": "努埃尔文"
+ },
+ "nb": {
+ "code": "nb",
+ "name": "挪å¨åšå…‹é©¬å°”æ–‡"
+ },
+ "nn": {
+ "code": "nn",
+ "name": "挪å¨å°¼è¯ºæ–¯å…‹æ–‡"
+ },
+ "pa": {
+ "code": "pa",
+ "name": "æ—é®æ™®æ–‡"
+ },
+ "pt": {
+ "code": "pt",
+ "name": "è‘¡è„牙文"
+ },
+ "ps": {
+ "code": "ps",
+ "name": "普什图文"
+ },
+ "cgg": {
+ "code": "cgg",
+ "name": "奇加文"
+ },
+ "ja": {
+ "code": "ja",
+ "name": "日文"
+ },
+ "sv": {
+ "code": "sv",
+ "name": "瑞典文"
+ },
+ "gsw": {
+ "code": "gsw",
+ "name": "瑞士德文"
+ },
+ "fr-CH": {
+ "code": "fr-CH",
+ "name": "瑞士法文"
+ },
+ "de-CH": {
+ "code": "de-CH",
+ "name": "瑞士高地德文"
+ },
+ "mas": {
+ "code": "mas",
+ "name": "è¨ä¼Šæ–‡"
+ },
+ "sr": {
+ "code": "sr",
+ "name": "塞尔维亚文"
+ },
+ "seh": {
+ "code": "seh",
+ "name": "塞纳文"
+ },
+ "saq": {
+ "code": "saq",
+ "name": "桑布é²æ–‡"
+ },
+ "sg": {
+ "code": "sg",
+ "name": "桑戈文"
+ },
+ "sbp": {
+ "code": "sbp",
+ "name": "æ¡‘å¤æ–‡"
+ },
+ "si": {
+ "code": "si",
+ "name": "僧伽罗文"
+ },
+ "hsb": {
+ "code": "hsb",
+ "name": "上索布文"
+ },
+ "sn": {
+ "code": "sn",
+ "name": "ç»çº³æ–‡"
+ },
+ "eo": {
+ "code": "eo",
+ "name": "世界文"
+ },
+ "sk": {
+ "code": "sk",
+ "name": "斯洛ä¼å…‹æ–‡"
+ },
+ "sl": {
+ "code": "sl",
+ "name": "斯洛文尼亚文"
+ },
+ "sw": {
+ "code": "sw",
+ "name": "斯瓦希里文"
+ },
+ "gd": {
+ "code": "gd",
+ "name": "è‹æ ¼å…°ç›–尔文"
+ },
+ "xog": {
+ "code": "xog",
+ "name": "索加文"
+ },
+ "so": {
+ "code": "so",
+ "name": "索马里文"
+ },
+ "tzm": {
+ "code": "tzm",
+ "name": "塔马é½æ ¼ç‰¹æ–‡"
+ },
+ "dav": {
+ "code": "dav",
+ "name": "å°å¡”æ–‡"
+ },
+ "te": {
+ "code": "te",
+ "name": "æ³°å¢å›ºæ–‡"
+ },
+ "ta": {
+ "code": "ta",
+ "name": "泰米尔文"
+ },
+ "th": {
+ "code": "th",
+ "name": "æ³°æ–‡"
+ },
+ "to": {
+ "code": "to",
+ "name": "汤加文"
+ },
+ "teo": {
+ "code": "teo",
+ "name": "特索文"
+ },
+ "ti": {
+ "code": "ti",
+ "name": "æ格里尼亚文"
+ },
+ "tr": {
+ "code": "tr",
+ "name": "土耳其文"
+ },
+ "wae": {
+ "code": "wae",
+ "name": "瓦尔瑟文"
+ },
+ "vai": {
+ "code": "vai",
+ "name": "瓦伊文"
+ },
+ "ewo": {
+ "code": "ewo",
+ "name": "æ—ºæœæ–‡"
+ },
+ "cy": {
+ "code": "cy",
+ "name": "å¨å°”士文"
+ },
+ "ug": {
+ "code": "ug",
+ "name": "ç»´å¾å°”æ–‡"
+ },
+ "vun": {
+ "code": "vun",
+ "name": "温旧文"
+ },
+ "ur": {
+ "code": "ur",
+ "name": "乌尔都文"
+ },
+ "uk": {
+ "code": "uk",
+ "name": "乌克兰文"
+ },
+ "uz": {
+ "code": "uz",
+ "name": "乌兹别克文"
+ },
+ "he": {
+ "code": "he",
+ "name": "希伯æ¥æ–‡"
+ },
+ "shi": {
+ "code": "shi",
+ "name": "希尔哈文"
+ },
+ "el": {
+ "code": "el",
+ "name": "希腊文"
+ },
+ "es": {
+ "code": "es",
+ "name": "西ç­ç‰™æ–‡"
+ },
+ "fy": {
+ "code": "fy",
+ "name": "西弗里西亚文"
+ },
+ "khq": {
+ "code": "khq",
+ "name": "西桑海文"
+ },
+ "dsb": {
+ "code": "dsb",
+ "name": "下索布文"
+ },
+ "ar-001": {
+ "code": "ar-001",
+ "name": "现代标准阿拉伯文"
+ },
+ "ksb": {
+ "code": "ksb",
+ "name": "香巴拉文"
+ },
+ "hu": {
+ "code": "hu",
+ "name": "匈牙利文"
+ },
+ "agq": {
+ "code": "agq",
+ "name": "亚罕文"
+ },
+ "hy": {
+ "code": "hy",
+ "name": "亚美尼亚文"
+ },
+ "yav": {
+ "code": "yav",
+ "name": "æ´‹åžæ–‡"
+ },
+ "pt-PT": {
+ "code": "pt-PT",
+ "name": "伊比利亚葡è„牙文"
+ },
+ "es-ES": {
+ "code": "es-ES",
+ "name": "伊比利亚西ç­ç‰™æ–‡"
+ },
+ "it": {
+ "code": "it",
+ "name": "æ„大利文"
+ },
+ "hi": {
+ "code": "hi",
+ "name": "å°åœ°æ–‡"
+ },
+ "id": {
+ "code": "id",
+ "name": "å°åº¦å°¼è¥¿äºšæ–‡"
+ },
+ "en-GB": {
+ "code": "en-GB",
+ "name": "英å¼è‹±æ–‡"
+ },
+ "en": {
+ "code": "en",
+ "name": "英文"
+ },
+ "yo": {
+ "code": "yo",
+ "name": "约é²å·´æ–‡"
+ },
+ "vi": {
+ "code": "vi",
+ "name": "越å—æ–‡"
+ },
+ "dje": {
+ "code": "dje",
+ "name": "哲尔马文"
+ },
+ "zh": {
+ "code": "zh",
+ "name": "中文"
+ },
+ "dyo": {
+ "code": "dyo",
+ "name": "朱拉文"
+ },
+ "zu": {
+ "code": "zu",
+ "name": "祖é²æ–‡"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/language/zh-Hans-SG.json b/library/intl/resources/language/zh-Hans-SG.json
new file mode 100644
index 000000000..c5327f054
--- /dev/null
+++ b/library/intl/resources/language/zh-Hans-SG.json
@@ -0,0 +1,738 @@
+{
+ "sq": {
+ "code": "sq",
+ "name": "阿尔巴尼亚文"
+ },
+ "ak": {
+ "code": "ak",
+ "name": "阿肯文"
+ },
+ "ar": {
+ "code": "ar",
+ "name": "阿拉伯文"
+ },
+ "am": {
+ "code": "am",
+ "name": "阿姆哈拉文"
+ },
+ "az": {
+ "code": "az",
+ "name": "阿塞拜疆文"
+ },
+ "ast": {
+ "code": "ast",
+ "name": "阿斯图里亚æ€ç‰¹æ–‡"
+ },
+ "asa": {
+ "code": "asa",
+ "name": "阿è‹æ–‡"
+ },
+ "ee": {
+ "code": "ee",
+ "name": "埃维文"
+ },
+ "ga": {
+ "code": "ga",
+ "name": "爱尔兰文"
+ },
+ "et": {
+ "code": "et",
+ "name": "爱沙尼亚文"
+ },
+ "de-AT": {
+ "code": "de-AT",
+ "name": "奥地利德文"
+ },
+ "or": {
+ "code": "or",
+ "name": "奥里亚文"
+ },
+ "en-AU": {
+ "code": "en-AU",
+ "name": "澳大利亚英文"
+ },
+ "ksf": {
+ "code": "ksf",
+ "name": "å·´è²äºšæ–‡"
+ },
+ "bas": {
+ "code": "bas",
+ "name": "å·´è¨æ–‡"
+ },
+ "eu": {
+ "code": "eu",
+ "name": "巴斯克文"
+ },
+ "pt-BR": {
+ "code": "pt-BR",
+ "name": "巴西葡è„牙文"
+ },
+ "be": {
+ "code": "be",
+ "name": "白俄罗斯文"
+ },
+ "bm": {
+ "code": "bm",
+ "name": "ç­å·´æ‹‰æ–‡"
+ },
+ "bg": {
+ "code": "bg",
+ "name": "ä¿åŠ åˆ©äºšæ–‡"
+ },
+ "nd": {
+ "code": "nd",
+ "name": "北æ©å¾·è´å‹’æ–‡"
+ },
+ "se": {
+ "code": "se",
+ "name": "北è¨ç±³æ–‡"
+ },
+ "twq": {
+ "code": "twq",
+ "name": "北桑海文"
+ },
+ "bez": {
+ "code": "bez",
+ "name": "è´çº³æ–‡"
+ },
+ "zgh": {
+ "code": "zgh",
+ "name": "标准摩洛哥塔马塞特文"
+ },
+ "is": {
+ "code": "is",
+ "name": "冰岛文"
+ },
+ "pl": {
+ "code": "pl",
+ "name": "波兰文"
+ },
+ "bs": {
+ "code": "bs",
+ "name": "波斯尼亚文"
+ },
+ "fa": {
+ "code": "fa",
+ "name": "波斯文"
+ },
+ "brx": {
+ "code": "brx",
+ "name": "åšå¤šæ–‡"
+ },
+ "dz": {
+ "code": "dz",
+ "name": "ä¸ä¸¹æ–‡"
+ },
+ "br": {
+ "code": "br",
+ "name": "布里多尼文"
+ },
+ "bo": {
+ "code": "bo",
+ "name": "è—æ–‡"
+ },
+ "chr": {
+ "code": "chr",
+ "name": "彻罗基文"
+ },
+ "da": {
+ "code": "da",
+ "name": "丹麦文"
+ },
+ "de": {
+ "code": "de",
+ "name": "å¾·æ–‡"
+ },
+ "ses": {
+ "code": "ses",
+ "name": "东桑海文"
+ },
+ "ru": {
+ "code": "ru",
+ "name": "ä¿„æ–‡"
+ },
+ "ebu": {
+ "code": "ebu",
+ "name": "æ©å¸ƒæ–‡"
+ },
+ "jgo": {
+ "code": "jgo",
+ "name": "æ©è‰®å·´"
+ },
+ "fo": {
+ "code": "fo",
+ "name": "法罗文"
+ },
+ "fr": {
+ "code": "fr",
+ "name": "法文"
+ },
+ "zh-Hant": {
+ "code": "zh-Hant",
+ "name": "ç¹ä½“中文"
+ },
+ "fil": {
+ "code": "fil",
+ "name": "è²å¾‹å®¾æ–‡"
+ },
+ "fi": {
+ "code": "fi",
+ "name": "芬兰文"
+ },
+ "fur": {
+ "code": "fur",
+ "name": "弗留利文"
+ },
+ "nl-BE": {
+ "code": "nl-BE",
+ "name": "佛兰芒文"
+ },
+ "ff": {
+ "code": "ff",
+ "name": "夫拉文"
+ },
+ "swc": {
+ "code": "swc",
+ "name": "刚果斯瓦希里文"
+ },
+ "km": {
+ "code": "km",
+ "name": "高棉文"
+ },
+ "kl": {
+ "code": "kl",
+ "name": "格陵兰文"
+ },
+ "ka": {
+ "code": "ka",
+ "name": "æ ¼é²å‰äºšæ–‡"
+ },
+ "gu": {
+ "code": "gu",
+ "name": "å¤å‰æ‹‰ç‰¹æ–‡"
+ },
+ "guz": {
+ "code": "guz",
+ "name": "å¤è¥¿æ–‡"
+ },
+ "kk": {
+ "code": "kk",
+ "name": "哈è¨å…‹æ–‡"
+ },
+ "ko": {
+ "code": "ko",
+ "name": "韩文"
+ },
+ "ha": {
+ "code": "ha",
+ "name": "豪è¨æ–‡"
+ },
+ "nl": {
+ "code": "nl",
+ "name": "è·å…°æ–‡"
+ },
+ "rn": {
+ "code": "rn",
+ "name": "基隆迪文"
+ },
+ "ky": {
+ "code": "ky",
+ "name": "å‰å°”å‰æ–¯æ–‡"
+ },
+ "ki": {
+ "code": "ki",
+ "name": "å‰åº“尤文"
+ },
+ "gl": {
+ "code": "gl",
+ "name": "加利西亚文"
+ },
+ "fr-CA": {
+ "code": "fr-CA",
+ "name": "加拿大法文"
+ },
+ "en-CA": {
+ "code": "en-CA",
+ "name": "加拿大英文"
+ },
+ "ca": {
+ "code": "ca",
+ "name": "加泰罗尼亚文"
+ },
+ "zh-Hans": {
+ "code": "zh-Hans",
+ "name": "简体中文"
+ },
+ "cs": {
+ "code": "cs",
+ "name": "æ·å…‹æ–‡"
+ },
+ "kab": {
+ "code": "kab",
+ "name": "å¡æ¯”尔文"
+ },
+ "kea": {
+ "code": "kea",
+ "name": "å¡å¸ƒä½›å¾—é²æ–‡"
+ },
+ "kln": {
+ "code": "kln",
+ "name": "å¡ä¼¦é‡‘æ–‡"
+ },
+ "kam": {
+ "code": "kam",
+ "name": "å¡å§†å·´æ–‡"
+ },
+ "kn": {
+ "code": "kn",
+ "name": "å¡çº³è¾¾æ–‡"
+ },
+ "ksh": {
+ "code": "ksh",
+ "name": "科隆文"
+ },
+ "hr": {
+ "code": "hr",
+ "name": "克罗地亚文"
+ },
+ "ks": {
+ "code": "ks",
+ "name": "克什米尔文"
+ },
+ "nmg": {
+ "code": "nmg",
+ "name": "夸西奥文"
+ },
+ "lv": {
+ "code": "lv",
+ "name": "拉脱维亚文"
+ },
+ "rof": {
+ "code": "rof",
+ "name": "å…°åšæ–‡"
+ },
+ "lag": {
+ "code": "lag",
+ "name": "朗å‰æ–‡"
+ },
+ "lo": {
+ "code": "lo",
+ "name": "è€æŒæ–‡"
+ },
+ "lt": {
+ "code": "lt",
+ "name": "立陶宛文"
+ },
+ "ln": {
+ "code": "ln",
+ "name": "林加拉文"
+ },
+ "luo": {
+ "code": "luo",
+ "name": "å¢å¥¥æ–‡"
+ },
+ "lg": {
+ "code": "lg",
+ "name": "å¢å¹²è¾¾æ–‡"
+ },
+ "lb": {
+ "code": "lb",
+ "name": "å¢æ£®å ¡æ–‡"
+ },
+ "luy": {
+ "code": "luy",
+ "name": "å¢é›…æ–‡"
+ },
+ "lu": {
+ "code": "lu",
+ "name": "é²å·´åŠ ä¸¹åŠ æ–‡"
+ },
+ "ro": {
+ "code": "ro",
+ "name": "罗马尼亚文"
+ },
+ "rm": {
+ "code": "rm",
+ "name": "罗曼什文"
+ },
+ "rwk": {
+ "code": "rwk",
+ "name": "罗瓦文"
+ },
+ "mg": {
+ "code": "mg",
+ "name": "马尔加什文"
+ },
+ "mt": {
+ "code": "mt",
+ "name": "马耳他文"
+ },
+ "kde": {
+ "code": "kde",
+ "name": "马孔德文"
+ },
+ "mgh": {
+ "code": "mgh",
+ "name": "马夸文"
+ },
+ "mr": {
+ "code": "mr",
+ "name": "马拉地文"
+ },
+ "ml": {
+ "code": "ml",
+ "name": "马拉雅拉姆文"
+ },
+ "ms": {
+ "code": "ms",
+ "name": "马æ¥æ–‡"
+ },
+ "mk": {
+ "code": "mk",
+ "name": "马其顿文"
+ },
+ "jmc": {
+ "code": "jmc",
+ "name": "马切姆文"
+ },
+ "mfe": {
+ "code": "mfe",
+ "name": "毛里求斯克里奥尔文"
+ },
+ "mer": {
+ "code": "mer",
+ "name": "梅é²æ–‡"
+ },
+ "en-US": {
+ "code": "en-US",
+ "name": "美国英文"
+ },
+ "mua": {
+ "code": "mua",
+ "name": "蒙当文"
+ },
+ "mn": {
+ "code": "mn",
+ "name": "è’™å¤æ–‡"
+ },
+ "bn": {
+ "code": "bn",
+ "name": "孟加拉文"
+ },
+ "my": {
+ "code": "my",
+ "name": "缅甸文"
+ },
+ "ro-MD": {
+ "code": "ro-MD",
+ "name": "摩尔多瓦文"
+ },
+ "es-MX": {
+ "code": "es-MX",
+ "name": "墨西哥西ç­ç‰™æ–‡"
+ },
+ "naq": {
+ "code": "naq",
+ "name": "纳马文"
+ },
+ "af": {
+ "code": "af",
+ "name": "å—éžè·å…°æ–‡"
+ },
+ "nyn": {
+ "code": "nyn",
+ "name": "尼昂科勒文"
+ },
+ "ne": {
+ "code": "ne",
+ "name": "尼泊尔文"
+ },
+ "nus": {
+ "code": "nus",
+ "name": "努埃尔文"
+ },
+ "nb": {
+ "code": "nb",
+ "name": "挪å¨åšå…‹é©¬å°”æ–‡"
+ },
+ "nn": {
+ "code": "nn",
+ "name": "挪å¨å°¼è¯ºæ–¯å…‹æ–‡"
+ },
+ "pa": {
+ "code": "pa",
+ "name": "æ—é®æ™®æ–‡"
+ },
+ "pt": {
+ "code": "pt",
+ "name": "è‘¡è„牙文"
+ },
+ "ps": {
+ "code": "ps",
+ "name": "普什图文"
+ },
+ "cgg": {
+ "code": "cgg",
+ "name": "奇加文"
+ },
+ "ja": {
+ "code": "ja",
+ "name": "日文"
+ },
+ "sv": {
+ "code": "sv",
+ "name": "瑞典文"
+ },
+ "gsw": {
+ "code": "gsw",
+ "name": "瑞士德文"
+ },
+ "fr-CH": {
+ "code": "fr-CH",
+ "name": "瑞士法文"
+ },
+ "de-CH": {
+ "code": "de-CH",
+ "name": "瑞士高地德文"
+ },
+ "mas": {
+ "code": "mas",
+ "name": "è¨ä¼Šæ–‡"
+ },
+ "sr": {
+ "code": "sr",
+ "name": "塞尔维亚文"
+ },
+ "seh": {
+ "code": "seh",
+ "name": "塞纳文"
+ },
+ "saq": {
+ "code": "saq",
+ "name": "桑布é²æ–‡"
+ },
+ "sg": {
+ "code": "sg",
+ "name": "桑戈文"
+ },
+ "sbp": {
+ "code": "sbp",
+ "name": "æ¡‘å¤æ–‡"
+ },
+ "si": {
+ "code": "si",
+ "name": "僧伽罗文"
+ },
+ "hsb": {
+ "code": "hsb",
+ "name": "上索布文"
+ },
+ "sn": {
+ "code": "sn",
+ "name": "ç»çº³æ–‡"
+ },
+ "eo": {
+ "code": "eo",
+ "name": "世界文"
+ },
+ "sk": {
+ "code": "sk",
+ "name": "斯洛ä¼å…‹æ–‡"
+ },
+ "sl": {
+ "code": "sl",
+ "name": "斯洛文尼亚文"
+ },
+ "sw": {
+ "code": "sw",
+ "name": "斯瓦希里文"
+ },
+ "gd": {
+ "code": "gd",
+ "name": "è‹æ ¼å…°ç›–尔文"
+ },
+ "xog": {
+ "code": "xog",
+ "name": "索加文"
+ },
+ "so": {
+ "code": "so",
+ "name": "索马里文"
+ },
+ "tzm": {
+ "code": "tzm",
+ "name": "塔马é½æ ¼ç‰¹æ–‡"
+ },
+ "dav": {
+ "code": "dav",
+ "name": "å°å¡”æ–‡"
+ },
+ "te": {
+ "code": "te",
+ "name": "æ³°å¢å›ºæ–‡"
+ },
+ "ta": {
+ "code": "ta",
+ "name": "泰米尔文"
+ },
+ "th": {
+ "code": "th",
+ "name": "æ³°æ–‡"
+ },
+ "to": {
+ "code": "to",
+ "name": "汤加文"
+ },
+ "teo": {
+ "code": "teo",
+ "name": "特索文"
+ },
+ "ti": {
+ "code": "ti",
+ "name": "æ格里尼亚文"
+ },
+ "tr": {
+ "code": "tr",
+ "name": "土耳其文"
+ },
+ "wae": {
+ "code": "wae",
+ "name": "瓦尔瑟文"
+ },
+ "vai": {
+ "code": "vai",
+ "name": "瓦伊文"
+ },
+ "ewo": {
+ "code": "ewo",
+ "name": "æ—ºæœæ–‡"
+ },
+ "cy": {
+ "code": "cy",
+ "name": "å¨å°”士文"
+ },
+ "ug": {
+ "code": "ug",
+ "name": "ç»´å¾å°”æ–‡"
+ },
+ "vun": {
+ "code": "vun",
+ "name": "温旧文"
+ },
+ "ur": {
+ "code": "ur",
+ "name": "乌尔都文"
+ },
+ "uk": {
+ "code": "uk",
+ "name": "乌克兰文"
+ },
+ "uz": {
+ "code": "uz",
+ "name": "乌兹别克文"
+ },
+ "he": {
+ "code": "he",
+ "name": "希伯æ¥æ–‡"
+ },
+ "shi": {
+ "code": "shi",
+ "name": "希尔哈文"
+ },
+ "el": {
+ "code": "el",
+ "name": "希腊文"
+ },
+ "es": {
+ "code": "es",
+ "name": "西ç­ç‰™æ–‡"
+ },
+ "fy": {
+ "code": "fy",
+ "name": "西弗里西亚文"
+ },
+ "khq": {
+ "code": "khq",
+ "name": "西桑海文"
+ },
+ "dsb": {
+ "code": "dsb",
+ "name": "下索布文"
+ },
+ "ar-001": {
+ "code": "ar-001",
+ "name": "现代标准阿拉伯文"
+ },
+ "ksb": {
+ "code": "ksb",
+ "name": "香巴拉文"
+ },
+ "hu": {
+ "code": "hu",
+ "name": "匈牙利文"
+ },
+ "agq": {
+ "code": "agq",
+ "name": "亚罕文"
+ },
+ "hy": {
+ "code": "hy",
+ "name": "亚美尼亚文"
+ },
+ "yav": {
+ "code": "yav",
+ "name": "æ´‹åžæ–‡"
+ },
+ "pt-PT": {
+ "code": "pt-PT",
+ "name": "伊比利亚葡è„牙文"
+ },
+ "es-ES": {
+ "code": "es-ES",
+ "name": "伊比利亚西ç­ç‰™æ–‡"
+ },
+ "it": {
+ "code": "it",
+ "name": "æ„大利文"
+ },
+ "hi": {
+ "code": "hi",
+ "name": "å°åœ°æ–‡"
+ },
+ "id": {
+ "code": "id",
+ "name": "å°åº¦å°¼è¥¿äºšæ–‡"
+ },
+ "en-GB": {
+ "code": "en-GB",
+ "name": "英国英文"
+ },
+ "en": {
+ "code": "en",
+ "name": "英文"
+ },
+ "yo": {
+ "code": "yo",
+ "name": "约é²å·´æ–‡"
+ },
+ "vi": {
+ "code": "vi",
+ "name": "越å—æ–‡"
+ },
+ "dje": {
+ "code": "dje",
+ "name": "哲尔马文"
+ },
+ "zh": {
+ "code": "zh",
+ "name": "中文"
+ },
+ "dyo": {
+ "code": "dyo",
+ "name": "朱拉文"
+ },
+ "zu": {
+ "code": "zu",
+ "name": "祖é²æ–‡"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/language/zh-Hant-HK.json b/library/intl/resources/language/zh-Hant-HK.json
new file mode 100644
index 000000000..177cca849
--- /dev/null
+++ b/library/intl/resources/language/zh-Hant-HK.json
@@ -0,0 +1,738 @@
+{
+ "fr-CA": {
+ "code": "fr-CA",
+ "name": "fr_CA"
+ },
+ "fr-CH": {
+ "code": "fr-CH",
+ "name": "fr_CH"
+ },
+ "hsb": {
+ "code": "hsb",
+ "name": "上索布文"
+ },
+ "dsb": {
+ "code": "dsb",
+ "name": "下索布文"
+ },
+ "tr": {
+ "code": "tr",
+ "name": "土耳其文"
+ },
+ "lg": {
+ "code": "lg",
+ "name": "å¹²é”æ–‡"
+ },
+ "zh": {
+ "code": "zh",
+ "name": "中文"
+ },
+ "da": {
+ "code": "da",
+ "name": "丹麥文"
+ },
+ "pt-BR": {
+ "code": "pt-BR",
+ "name": "巴西葡è„牙語"
+ },
+ "nb": {
+ "code": "nb",
+ "name": "巴克摩挪å¨æ–‡"
+ },
+ "eu": {
+ "code": "eu",
+ "name": "巴斯克文"
+ },
+ "ksf": {
+ "code": "ksf",
+ "name": "å·´è²äºžæ–‡"
+ },
+ "bas": {
+ "code": "bas",
+ "name": "å·´è–©æ–‡"
+ },
+ "dje": {
+ "code": "dje",
+ "name": "扎爾馬文"
+ },
+ "ja": {
+ "code": "ja",
+ "name": "日文"
+ },
+ "eo": {
+ "code": "eo",
+ "name": "世界語"
+ },
+ "gl": {
+ "code": "gl",
+ "name": "加里西亞文"
+ },
+ "en-CA": {
+ "code": "en-CA",
+ "name": "加拿大英文"
+ },
+ "ca": {
+ "code": "ca",
+ "name": "加泰羅尼亞文"
+ },
+ "se": {
+ "code": "se",
+ "name": "北方薩米文"
+ },
+ "hi": {
+ "code": "hi",
+ "name": "北å°åº¦æ–‡"
+ },
+ "nd": {
+ "code": "nd",
+ "name": "北地畢列文"
+ },
+ "twq": {
+ "code": "twq",
+ "name": "北桑海文"
+ },
+ "kab": {
+ "code": "kab",
+ "name": "å¡æ¯”爾文"
+ },
+ "kea": {
+ "code": "kea",
+ "name": "å¡å¸ƒå¨çˆ¾ç¬¬æ–‡"
+ },
+ "kam": {
+ "code": "kam",
+ "name": "å¡å§†å·´æ–‡"
+ },
+ "kln": {
+ "code": "kln",
+ "name": "å¡å€«é‡‘æ–‡"
+ },
+ "gu": {
+ "code": "gu",
+ "name": "å¤å‰æ‹‰ç‰¹æ–‡"
+ },
+ "guz": {
+ "code": "guz",
+ "name": "å¤è¥¿æ–‡"
+ },
+ "dav": {
+ "code": "dav",
+ "name": "å°å¡”æ–‡"
+ },
+ "sw": {
+ "code": "sw",
+ "name": "å²ç“¦å¸Œé‡Œæ–‡"
+ },
+ "ne": {
+ "code": "ne",
+ "name": "尼泊爾文"
+ },
+ "nyn": {
+ "code": "nyn",
+ "name": "å°¼æšç§‘èŠæ–‡"
+ },
+ "br": {
+ "code": "br",
+ "name": "布里多尼文"
+ },
+ "fur": {
+ "code": "fur",
+ "name": "弗留利文"
+ },
+ "vai": {
+ "code": "vai",
+ "name": "瓦伊文"
+ },
+ "wae": {
+ "code": "wae",
+ "name": "瓦瑟文"
+ },
+ "be": {
+ "code": "be",
+ "name": "白俄羅斯文"
+ },
+ "lt": {
+ "code": "lt",
+ "name": "立陶宛文"
+ },
+ "is": {
+ "code": "is",
+ "name": "冰島文"
+ },
+ "hu": {
+ "code": "hu",
+ "name": "匈牙利文"
+ },
+ "id": {
+ "code": "id",
+ "name": "å°å°¼æ–‡"
+ },
+ "ki": {
+ "code": "ki",
+ "name": "å‰åº«å°¤æ–‡"
+ },
+ "ky": {
+ "code": "ky",
+ "name": "å‰çˆ¾å‰æ–¯æ–‡"
+ },
+ "nmg": {
+ "code": "nmg",
+ "name": "夸西奧文"
+ },
+ "dyo": {
+ "code": "dyo",
+ "name": "朱拉文"
+ },
+ "fy": {
+ "code": "fy",
+ "name": "西弗里西亞文"
+ },
+ "khq": {
+ "code": "khq",
+ "name": "西桑海文"
+ },
+ "es": {
+ "code": "es",
+ "name": "西ç­ç‰™æ–‡"
+ },
+ "nl-BE": {
+ "code": "nl-BE",
+ "name": "佛蘭芒文"
+ },
+ "mfe": {
+ "code": "mfe",
+ "name": "克里奧文(模里西斯)"
+ },
+ "hr": {
+ "code": "hr",
+ "name": "克羅地亞文"
+ },
+ "nus": {
+ "code": "nus",
+ "name": "努埃爾文"
+ },
+ "kn": {
+ "code": "kn",
+ "name": "åŽç´é”æ–‡"
+ },
+ "he": {
+ "code": "he",
+ "name": "希伯來文"
+ },
+ "shi": {
+ "code": "shi",
+ "name": "希爾哈文"
+ },
+ "el": {
+ "code": "el",
+ "name": "希臘文"
+ },
+ "bez": {
+ "code": "bez",
+ "name": "è²ç´æ–‡"
+ },
+ "agq": {
+ "code": "agq",
+ "name": "亞罕文"
+ },
+ "hy": {
+ "code": "hy",
+ "name": "亞美尼亞文"
+ },
+ "az": {
+ "code": "az",
+ "name": "亞塞拜然文"
+ },
+ "ewo": {
+ "code": "ewo",
+ "name": "ä¾æ±ªéƒ½æ–‡"
+ },
+ "ta": {
+ "code": "ta",
+ "name": "å¦ç±³çˆ¾æ–‡"
+ },
+ "cgg": {
+ "code": "cgg",
+ "name": "奇加文"
+ },
+ "bn": {
+ "code": "bn",
+ "name": "孟加拉文"
+ },
+ "dz": {
+ "code": "dz",
+ "name": "å®—å¡æ–‡"
+ },
+ "ksb": {
+ "code": "ksb",
+ "name": "尚巴拉文"
+ },
+ "lv": {
+ "code": "lv",
+ "name": "拉脫維亞文"
+ },
+ "to": {
+ "code": "to",
+ "name": "æ±åŠ æ–‡"
+ },
+ "ses": {
+ "code": "ses",
+ "name": "æ±æ¡‘æµ·æ–‡"
+ },
+ "ln": {
+ "code": "ln",
+ "name": "林加拉文"
+ },
+ "fr": {
+ "code": "fr",
+ "name": "法文"
+ },
+ "fo": {
+ "code": "fo",
+ "name": "法羅文"
+ },
+ "bs": {
+ "code": "bs",
+ "name": "波士尼亞文"
+ },
+ "fa": {
+ "code": "fa",
+ "name": "波斯文"
+ },
+ "pl": {
+ "code": "pl",
+ "name": "波蘭文"
+ },
+ "fi": {
+ "code": "fi",
+ "name": "芬蘭文"
+ },
+ "ak": {
+ "code": "ak",
+ "name": "阿åŽæ–‡"
+ },
+ "am": {
+ "code": "am",
+ "name": "阿姆哈拉文"
+ },
+ "ar": {
+ "code": "ar",
+ "name": "阿拉伯文"
+ },
+ "ast": {
+ "code": "ast",
+ "name": "阿斯圖里亞文"
+ },
+ "sq": {
+ "code": "sq",
+ "name": "阿爾巴尼亞文"
+ },
+ "asa": {
+ "code": "asa",
+ "name": "阿蘇文"
+ },
+ "ru": {
+ "code": "ru",
+ "name": "ä¿„æ–‡"
+ },
+ "bg": {
+ "code": "bg",
+ "name": "ä¿åŠ åˆ©äºžæ–‡"
+ },
+ "af": {
+ "code": "af",
+ "name": "å—éžè·è˜­æ–‡"
+ },
+ "kk": {
+ "code": "kk",
+ "name": "哈薩克文"
+ },
+ "cy": {
+ "code": "cy",
+ "name": "å¨çˆ¾æ–¯æ–‡"
+ },
+ "yav": {
+ "code": "yav",
+ "name": "æ´‹åžæ–‡"
+ },
+ "ksh": {
+ "code": "ksh",
+ "name": "科隆文"
+ },
+ "yo": {
+ "code": "yo",
+ "name": "約魯巴文"
+ },
+ "en-US": {
+ "code": "en-US",
+ "name": "美國英文"
+ },
+ "nn": {
+ "code": "nn",
+ "name": "è€è«¾æ–¯å…‹æŒªå¨æ–‡"
+ },
+ "en": {
+ "code": "en",
+ "name": "英文"
+ },
+ "en-GB": {
+ "code": "en-GB",
+ "name": "英國英文"
+ },
+ "sn": {
+ "code": "sn",
+ "name": "ä¿®ç´æ–‡"
+ },
+ "swc": {
+ "code": "swc",
+ "name": "剛果å²ç“¦å¸Œé‡Œæ–‡"
+ },
+ "ee": {
+ "code": "ee",
+ "name": "埃維文"
+ },
+ "ebu": {
+ "code": "ebu",
+ "name": "æ©å¸ƒæ–‡"
+ },
+ "jgo": {
+ "code": "jgo",
+ "name": "æ©æ ¼å§†å·´æ–‡"
+ },
+ "pa": {
+ "code": "pa",
+ "name": "æ—é®æ™®æ–‡"
+ },
+ "lag": {
+ "code": "lag",
+ "name": "朗å‰æ–‡"
+ },
+ "chr": {
+ "code": "chr",
+ "name": "柴羅基文"
+ },
+ "kl": {
+ "code": "kl",
+ "name": "格陵蘭文"
+ },
+ "sg": {
+ "code": "sg",
+ "name": "桑戈文"
+ },
+ "sbp": {
+ "code": "sbp",
+ "name": "æ¡‘å¤æ–‡"
+ },
+ "th": {
+ "code": "th",
+ "name": "æ³°æ–‡"
+ },
+ "te": {
+ "code": "te",
+ "name": "泰盧固文"
+ },
+ "uk": {
+ "code": "uk",
+ "name": "çƒå…‹è˜­æ–‡"
+ },
+ "uz": {
+ "code": "uz",
+ "name": "çƒèŒ²åˆ¥å…‹æ–‡"
+ },
+ "ur": {
+ "code": "ur",
+ "name": "çƒçˆ¾éƒ½æ–‡"
+ },
+ "teo": {
+ "code": "teo",
+ "name": "特索文"
+ },
+ "bm": {
+ "code": "bm",
+ "name": "ç­å·´æ‹‰æ–‡"
+ },
+ "zu": {
+ "code": "zu",
+ "name": "祖魯文"
+ },
+ "naq": {
+ "code": "naq",
+ "name": "ç´é¦¬æ–‡"
+ },
+ "xog": {
+ "code": "xog",
+ "name": "索加文"
+ },
+ "so": {
+ "code": "so",
+ "name": "索馬利文"
+ },
+ "kde": {
+ "code": "kde",
+ "name": "馬孔德文"
+ },
+ "mgh": {
+ "code": "mgh",
+ "name": "馬夸文"
+ },
+ "ms": {
+ "code": "ms",
+ "name": "馬來文"
+ },
+ "ml": {
+ "code": "ml",
+ "name": "馬來亞拉姆文"
+ },
+ "mk": {
+ "code": "mk",
+ "name": "馬其頓文"
+ },
+ "mg": {
+ "code": "mg",
+ "name": "馬拉加斯文"
+ },
+ "mr": {
+ "code": "mr",
+ "name": "馬拉地文"
+ },
+ "jmc": {
+ "code": "jmc",
+ "name": "馬æ°ç¾Žæ–‡"
+ },
+ "mt": {
+ "code": "mt",
+ "name": "馬爾他文"
+ },
+ "mas": {
+ "code": "mas",
+ "name": "馬賽文"
+ },
+ "km": {
+ "code": "km",
+ "name": "高棉文"
+ },
+ "cs": {
+ "code": "cs",
+ "name": "æ·å…‹æ–‡"
+ },
+ "mer": {
+ "code": "mer",
+ "name": "梅魯文"
+ },
+ "ar-001": {
+ "code": "ar-001",
+ "name": "ç¾ä»£æ¨™æº–阿拉伯文"
+ },
+ "nl": {
+ "code": "nl",
+ "name": "è·è˜­æ–‡"
+ },
+ "brx": {
+ "code": "brx",
+ "name": "åšå¤šæ–‡"
+ },
+ "ks": {
+ "code": "ks",
+ "name": "喀什米爾文"
+ },
+ "ka": {
+ "code": "ka",
+ "name": "喬治亞文"
+ },
+ "ff": {
+ "code": "ff",
+ "name": "富拉文"
+ },
+ "ti": {
+ "code": "ti",
+ "name": "æ格利尼亞文"
+ },
+ "sl": {
+ "code": "sl",
+ "name": "斯洛文尼亞文"
+ },
+ "sk": {
+ "code": "sk",
+ "name": "斯洛ä¼å…‹æ–‡"
+ },
+ "ps": {
+ "code": "ps",
+ "name": "普什圖文"
+ },
+ "fil": {
+ "code": "fil",
+ "name": "è²å¾‹è³“æ–‡"
+ },
+ "vi": {
+ "code": "vi",
+ "name": "越å—æ–‡"
+ },
+ "rn": {
+ "code": "rn",
+ "name": "隆迪文"
+ },
+ "tzm": {
+ "code": "tzm",
+ "name": "塔馬齊格特文"
+ },
+ "sr": {
+ "code": "sr",
+ "name": "塞爾維亞文"
+ },
+ "de-AT": {
+ "code": "de-AT",
+ "name": "奧地利德文"
+ },
+ "or": {
+ "code": "or",
+ "name": "奧里雅文"
+ },
+ "it": {
+ "code": "it",
+ "name": "æ„大利文"
+ },
+ "et": {
+ "code": "et",
+ "name": "愛沙尼亞文"
+ },
+ "ga": {
+ "code": "ga",
+ "name": "愛爾蘭文"
+ },
+ "vun": {
+ "code": "vun",
+ "name": "溫舊文"
+ },
+ "de-CH": {
+ "code": "de-CH",
+ "name": "瑞士德語"
+ },
+ "sv": {
+ "code": "sv",
+ "name": "瑞典文"
+ },
+ "pt": {
+ "code": "pt",
+ "name": "è‘¡è„牙文"
+ },
+ "si": {
+ "code": "si",
+ "name": "僧伽羅文"
+ },
+ "ug": {
+ "code": "ug",
+ "name": "維å¾çˆ¾æ–‡"
+ },
+ "mn": {
+ "code": "mn",
+ "name": "è’™å¤æ–‡"
+ },
+ "mua": {
+ "code": "mua",
+ "name": "蒙當文"
+ },
+ "ha": {
+ "code": "ha",
+ "name": "豪撒文"
+ },
+ "lo": {
+ "code": "lo",
+ "name": "寮文"
+ },
+ "de": {
+ "code": "de",
+ "name": "å¾·æ–‡"
+ },
+ "gsw": {
+ "code": "gsw",
+ "name": "德文(瑞士)"
+ },
+ "zgh": {
+ "code": "zgh",
+ "name": "摩洛哥標準塔馬齊格特文"
+ },
+ "ro-MD": {
+ "code": "ro-MD",
+ "name": "摩爾多瓦羅馬尼亞文"
+ },
+ "es-ES": {
+ "code": "es-ES",
+ "name": "æ­æ´²è¥¿ç­ç‰™æ–‡"
+ },
+ "pt-PT": {
+ "code": "pt-PT",
+ "name": "æ­æ´²è‘¡è„牙文"
+ },
+ "my": {
+ "code": "my",
+ "name": "緬甸文"
+ },
+ "lu": {
+ "code": "lu",
+ "name": "魯巴加丹加文"
+ },
+ "es-MX": {
+ "code": "es-MX",
+ "name": "墨西哥西ç­ç‰™æ–‡"
+ },
+ "en-AU": {
+ "code": "en-AU",
+ "name": "澳洲英文"
+ },
+ "lb": {
+ "code": "lb",
+ "name": "盧森堡文"
+ },
+ "luy": {
+ "code": "luy",
+ "name": "盧雅文"
+ },
+ "luo": {
+ "code": "luo",
+ "name": "盧奧文"
+ },
+ "zh-Hant": {
+ "code": "zh-Hant",
+ "name": "ç¹é«”中文"
+ },
+ "seh": {
+ "code": "seh",
+ "name": "è³½ç´æ–‡"
+ },
+ "ko": {
+ "code": "ko",
+ "name": "韓文"
+ },
+ "zh-Hans": {
+ "code": "zh-Hans",
+ "name": "簡體中文"
+ },
+ "saq": {
+ "code": "saq",
+ "name": "薩布魯文"
+ },
+ "bo": {
+ "code": "bo",
+ "name": "è—æ–‡"
+ },
+ "rwk": {
+ "code": "rwk",
+ "name": "羅瓦文"
+ },
+ "ro": {
+ "code": "ro",
+ "name": "羅馬尼亞文"
+ },
+ "rm": {
+ "code": "rm",
+ "name": "羅曼斯文"
+ },
+ "gd": {
+ "code": "gd",
+ "name": "蘇格蘭蓋爾文"
+ },
+ "rof": {
+ "code": "rof",
+ "name": "蘭åšæ–‡"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/language/zh-Hant-MO.json b/library/intl/resources/language/zh-Hant-MO.json
new file mode 100644
index 000000000..177cca849
--- /dev/null
+++ b/library/intl/resources/language/zh-Hant-MO.json
@@ -0,0 +1,738 @@
+{
+ "fr-CA": {
+ "code": "fr-CA",
+ "name": "fr_CA"
+ },
+ "fr-CH": {
+ "code": "fr-CH",
+ "name": "fr_CH"
+ },
+ "hsb": {
+ "code": "hsb",
+ "name": "上索布文"
+ },
+ "dsb": {
+ "code": "dsb",
+ "name": "下索布文"
+ },
+ "tr": {
+ "code": "tr",
+ "name": "土耳其文"
+ },
+ "lg": {
+ "code": "lg",
+ "name": "å¹²é”æ–‡"
+ },
+ "zh": {
+ "code": "zh",
+ "name": "中文"
+ },
+ "da": {
+ "code": "da",
+ "name": "丹麥文"
+ },
+ "pt-BR": {
+ "code": "pt-BR",
+ "name": "巴西葡è„牙語"
+ },
+ "nb": {
+ "code": "nb",
+ "name": "巴克摩挪å¨æ–‡"
+ },
+ "eu": {
+ "code": "eu",
+ "name": "巴斯克文"
+ },
+ "ksf": {
+ "code": "ksf",
+ "name": "å·´è²äºžæ–‡"
+ },
+ "bas": {
+ "code": "bas",
+ "name": "å·´è–©æ–‡"
+ },
+ "dje": {
+ "code": "dje",
+ "name": "扎爾馬文"
+ },
+ "ja": {
+ "code": "ja",
+ "name": "日文"
+ },
+ "eo": {
+ "code": "eo",
+ "name": "世界語"
+ },
+ "gl": {
+ "code": "gl",
+ "name": "加里西亞文"
+ },
+ "en-CA": {
+ "code": "en-CA",
+ "name": "加拿大英文"
+ },
+ "ca": {
+ "code": "ca",
+ "name": "加泰羅尼亞文"
+ },
+ "se": {
+ "code": "se",
+ "name": "北方薩米文"
+ },
+ "hi": {
+ "code": "hi",
+ "name": "北å°åº¦æ–‡"
+ },
+ "nd": {
+ "code": "nd",
+ "name": "北地畢列文"
+ },
+ "twq": {
+ "code": "twq",
+ "name": "北桑海文"
+ },
+ "kab": {
+ "code": "kab",
+ "name": "å¡æ¯”爾文"
+ },
+ "kea": {
+ "code": "kea",
+ "name": "å¡å¸ƒå¨çˆ¾ç¬¬æ–‡"
+ },
+ "kam": {
+ "code": "kam",
+ "name": "å¡å§†å·´æ–‡"
+ },
+ "kln": {
+ "code": "kln",
+ "name": "å¡å€«é‡‘æ–‡"
+ },
+ "gu": {
+ "code": "gu",
+ "name": "å¤å‰æ‹‰ç‰¹æ–‡"
+ },
+ "guz": {
+ "code": "guz",
+ "name": "å¤è¥¿æ–‡"
+ },
+ "dav": {
+ "code": "dav",
+ "name": "å°å¡”æ–‡"
+ },
+ "sw": {
+ "code": "sw",
+ "name": "å²ç“¦å¸Œé‡Œæ–‡"
+ },
+ "ne": {
+ "code": "ne",
+ "name": "尼泊爾文"
+ },
+ "nyn": {
+ "code": "nyn",
+ "name": "å°¼æšç§‘èŠæ–‡"
+ },
+ "br": {
+ "code": "br",
+ "name": "布里多尼文"
+ },
+ "fur": {
+ "code": "fur",
+ "name": "弗留利文"
+ },
+ "vai": {
+ "code": "vai",
+ "name": "瓦伊文"
+ },
+ "wae": {
+ "code": "wae",
+ "name": "瓦瑟文"
+ },
+ "be": {
+ "code": "be",
+ "name": "白俄羅斯文"
+ },
+ "lt": {
+ "code": "lt",
+ "name": "立陶宛文"
+ },
+ "is": {
+ "code": "is",
+ "name": "冰島文"
+ },
+ "hu": {
+ "code": "hu",
+ "name": "匈牙利文"
+ },
+ "id": {
+ "code": "id",
+ "name": "å°å°¼æ–‡"
+ },
+ "ki": {
+ "code": "ki",
+ "name": "å‰åº«å°¤æ–‡"
+ },
+ "ky": {
+ "code": "ky",
+ "name": "å‰çˆ¾å‰æ–¯æ–‡"
+ },
+ "nmg": {
+ "code": "nmg",
+ "name": "夸西奧文"
+ },
+ "dyo": {
+ "code": "dyo",
+ "name": "朱拉文"
+ },
+ "fy": {
+ "code": "fy",
+ "name": "西弗里西亞文"
+ },
+ "khq": {
+ "code": "khq",
+ "name": "西桑海文"
+ },
+ "es": {
+ "code": "es",
+ "name": "西ç­ç‰™æ–‡"
+ },
+ "nl-BE": {
+ "code": "nl-BE",
+ "name": "佛蘭芒文"
+ },
+ "mfe": {
+ "code": "mfe",
+ "name": "克里奧文(模里西斯)"
+ },
+ "hr": {
+ "code": "hr",
+ "name": "克羅地亞文"
+ },
+ "nus": {
+ "code": "nus",
+ "name": "努埃爾文"
+ },
+ "kn": {
+ "code": "kn",
+ "name": "åŽç´é”æ–‡"
+ },
+ "he": {
+ "code": "he",
+ "name": "希伯來文"
+ },
+ "shi": {
+ "code": "shi",
+ "name": "希爾哈文"
+ },
+ "el": {
+ "code": "el",
+ "name": "希臘文"
+ },
+ "bez": {
+ "code": "bez",
+ "name": "è²ç´æ–‡"
+ },
+ "agq": {
+ "code": "agq",
+ "name": "亞罕文"
+ },
+ "hy": {
+ "code": "hy",
+ "name": "亞美尼亞文"
+ },
+ "az": {
+ "code": "az",
+ "name": "亞塞拜然文"
+ },
+ "ewo": {
+ "code": "ewo",
+ "name": "ä¾æ±ªéƒ½æ–‡"
+ },
+ "ta": {
+ "code": "ta",
+ "name": "å¦ç±³çˆ¾æ–‡"
+ },
+ "cgg": {
+ "code": "cgg",
+ "name": "奇加文"
+ },
+ "bn": {
+ "code": "bn",
+ "name": "孟加拉文"
+ },
+ "dz": {
+ "code": "dz",
+ "name": "å®—å¡æ–‡"
+ },
+ "ksb": {
+ "code": "ksb",
+ "name": "尚巴拉文"
+ },
+ "lv": {
+ "code": "lv",
+ "name": "拉脫維亞文"
+ },
+ "to": {
+ "code": "to",
+ "name": "æ±åŠ æ–‡"
+ },
+ "ses": {
+ "code": "ses",
+ "name": "æ±æ¡‘æµ·æ–‡"
+ },
+ "ln": {
+ "code": "ln",
+ "name": "林加拉文"
+ },
+ "fr": {
+ "code": "fr",
+ "name": "法文"
+ },
+ "fo": {
+ "code": "fo",
+ "name": "法羅文"
+ },
+ "bs": {
+ "code": "bs",
+ "name": "波士尼亞文"
+ },
+ "fa": {
+ "code": "fa",
+ "name": "波斯文"
+ },
+ "pl": {
+ "code": "pl",
+ "name": "波蘭文"
+ },
+ "fi": {
+ "code": "fi",
+ "name": "芬蘭文"
+ },
+ "ak": {
+ "code": "ak",
+ "name": "阿åŽæ–‡"
+ },
+ "am": {
+ "code": "am",
+ "name": "阿姆哈拉文"
+ },
+ "ar": {
+ "code": "ar",
+ "name": "阿拉伯文"
+ },
+ "ast": {
+ "code": "ast",
+ "name": "阿斯圖里亞文"
+ },
+ "sq": {
+ "code": "sq",
+ "name": "阿爾巴尼亞文"
+ },
+ "asa": {
+ "code": "asa",
+ "name": "阿蘇文"
+ },
+ "ru": {
+ "code": "ru",
+ "name": "ä¿„æ–‡"
+ },
+ "bg": {
+ "code": "bg",
+ "name": "ä¿åŠ åˆ©äºžæ–‡"
+ },
+ "af": {
+ "code": "af",
+ "name": "å—éžè·è˜­æ–‡"
+ },
+ "kk": {
+ "code": "kk",
+ "name": "哈薩克文"
+ },
+ "cy": {
+ "code": "cy",
+ "name": "å¨çˆ¾æ–¯æ–‡"
+ },
+ "yav": {
+ "code": "yav",
+ "name": "æ´‹åžæ–‡"
+ },
+ "ksh": {
+ "code": "ksh",
+ "name": "科隆文"
+ },
+ "yo": {
+ "code": "yo",
+ "name": "約魯巴文"
+ },
+ "en-US": {
+ "code": "en-US",
+ "name": "美國英文"
+ },
+ "nn": {
+ "code": "nn",
+ "name": "è€è«¾æ–¯å…‹æŒªå¨æ–‡"
+ },
+ "en": {
+ "code": "en",
+ "name": "英文"
+ },
+ "en-GB": {
+ "code": "en-GB",
+ "name": "英國英文"
+ },
+ "sn": {
+ "code": "sn",
+ "name": "ä¿®ç´æ–‡"
+ },
+ "swc": {
+ "code": "swc",
+ "name": "剛果å²ç“¦å¸Œé‡Œæ–‡"
+ },
+ "ee": {
+ "code": "ee",
+ "name": "埃維文"
+ },
+ "ebu": {
+ "code": "ebu",
+ "name": "æ©å¸ƒæ–‡"
+ },
+ "jgo": {
+ "code": "jgo",
+ "name": "æ©æ ¼å§†å·´æ–‡"
+ },
+ "pa": {
+ "code": "pa",
+ "name": "æ—é®æ™®æ–‡"
+ },
+ "lag": {
+ "code": "lag",
+ "name": "朗å‰æ–‡"
+ },
+ "chr": {
+ "code": "chr",
+ "name": "柴羅基文"
+ },
+ "kl": {
+ "code": "kl",
+ "name": "格陵蘭文"
+ },
+ "sg": {
+ "code": "sg",
+ "name": "桑戈文"
+ },
+ "sbp": {
+ "code": "sbp",
+ "name": "æ¡‘å¤æ–‡"
+ },
+ "th": {
+ "code": "th",
+ "name": "æ³°æ–‡"
+ },
+ "te": {
+ "code": "te",
+ "name": "泰盧固文"
+ },
+ "uk": {
+ "code": "uk",
+ "name": "çƒå…‹è˜­æ–‡"
+ },
+ "uz": {
+ "code": "uz",
+ "name": "çƒèŒ²åˆ¥å…‹æ–‡"
+ },
+ "ur": {
+ "code": "ur",
+ "name": "çƒçˆ¾éƒ½æ–‡"
+ },
+ "teo": {
+ "code": "teo",
+ "name": "特索文"
+ },
+ "bm": {
+ "code": "bm",
+ "name": "ç­å·´æ‹‰æ–‡"
+ },
+ "zu": {
+ "code": "zu",
+ "name": "祖魯文"
+ },
+ "naq": {
+ "code": "naq",
+ "name": "ç´é¦¬æ–‡"
+ },
+ "xog": {
+ "code": "xog",
+ "name": "索加文"
+ },
+ "so": {
+ "code": "so",
+ "name": "索馬利文"
+ },
+ "kde": {
+ "code": "kde",
+ "name": "馬孔德文"
+ },
+ "mgh": {
+ "code": "mgh",
+ "name": "馬夸文"
+ },
+ "ms": {
+ "code": "ms",
+ "name": "馬來文"
+ },
+ "ml": {
+ "code": "ml",
+ "name": "馬來亞拉姆文"
+ },
+ "mk": {
+ "code": "mk",
+ "name": "馬其頓文"
+ },
+ "mg": {
+ "code": "mg",
+ "name": "馬拉加斯文"
+ },
+ "mr": {
+ "code": "mr",
+ "name": "馬拉地文"
+ },
+ "jmc": {
+ "code": "jmc",
+ "name": "馬æ°ç¾Žæ–‡"
+ },
+ "mt": {
+ "code": "mt",
+ "name": "馬爾他文"
+ },
+ "mas": {
+ "code": "mas",
+ "name": "馬賽文"
+ },
+ "km": {
+ "code": "km",
+ "name": "高棉文"
+ },
+ "cs": {
+ "code": "cs",
+ "name": "æ·å…‹æ–‡"
+ },
+ "mer": {
+ "code": "mer",
+ "name": "梅魯文"
+ },
+ "ar-001": {
+ "code": "ar-001",
+ "name": "ç¾ä»£æ¨™æº–阿拉伯文"
+ },
+ "nl": {
+ "code": "nl",
+ "name": "è·è˜­æ–‡"
+ },
+ "brx": {
+ "code": "brx",
+ "name": "åšå¤šæ–‡"
+ },
+ "ks": {
+ "code": "ks",
+ "name": "喀什米爾文"
+ },
+ "ka": {
+ "code": "ka",
+ "name": "喬治亞文"
+ },
+ "ff": {
+ "code": "ff",
+ "name": "富拉文"
+ },
+ "ti": {
+ "code": "ti",
+ "name": "æ格利尼亞文"
+ },
+ "sl": {
+ "code": "sl",
+ "name": "斯洛文尼亞文"
+ },
+ "sk": {
+ "code": "sk",
+ "name": "斯洛ä¼å…‹æ–‡"
+ },
+ "ps": {
+ "code": "ps",
+ "name": "普什圖文"
+ },
+ "fil": {
+ "code": "fil",
+ "name": "è²å¾‹è³“æ–‡"
+ },
+ "vi": {
+ "code": "vi",
+ "name": "越å—æ–‡"
+ },
+ "rn": {
+ "code": "rn",
+ "name": "隆迪文"
+ },
+ "tzm": {
+ "code": "tzm",
+ "name": "塔馬齊格特文"
+ },
+ "sr": {
+ "code": "sr",
+ "name": "塞爾維亞文"
+ },
+ "de-AT": {
+ "code": "de-AT",
+ "name": "奧地利德文"
+ },
+ "or": {
+ "code": "or",
+ "name": "奧里雅文"
+ },
+ "it": {
+ "code": "it",
+ "name": "æ„大利文"
+ },
+ "et": {
+ "code": "et",
+ "name": "愛沙尼亞文"
+ },
+ "ga": {
+ "code": "ga",
+ "name": "愛爾蘭文"
+ },
+ "vun": {
+ "code": "vun",
+ "name": "溫舊文"
+ },
+ "de-CH": {
+ "code": "de-CH",
+ "name": "瑞士德語"
+ },
+ "sv": {
+ "code": "sv",
+ "name": "瑞典文"
+ },
+ "pt": {
+ "code": "pt",
+ "name": "è‘¡è„牙文"
+ },
+ "si": {
+ "code": "si",
+ "name": "僧伽羅文"
+ },
+ "ug": {
+ "code": "ug",
+ "name": "維å¾çˆ¾æ–‡"
+ },
+ "mn": {
+ "code": "mn",
+ "name": "è’™å¤æ–‡"
+ },
+ "mua": {
+ "code": "mua",
+ "name": "蒙當文"
+ },
+ "ha": {
+ "code": "ha",
+ "name": "豪撒文"
+ },
+ "lo": {
+ "code": "lo",
+ "name": "寮文"
+ },
+ "de": {
+ "code": "de",
+ "name": "å¾·æ–‡"
+ },
+ "gsw": {
+ "code": "gsw",
+ "name": "德文(瑞士)"
+ },
+ "zgh": {
+ "code": "zgh",
+ "name": "摩洛哥標準塔馬齊格特文"
+ },
+ "ro-MD": {
+ "code": "ro-MD",
+ "name": "摩爾多瓦羅馬尼亞文"
+ },
+ "es-ES": {
+ "code": "es-ES",
+ "name": "æ­æ´²è¥¿ç­ç‰™æ–‡"
+ },
+ "pt-PT": {
+ "code": "pt-PT",
+ "name": "æ­æ´²è‘¡è„牙文"
+ },
+ "my": {
+ "code": "my",
+ "name": "緬甸文"
+ },
+ "lu": {
+ "code": "lu",
+ "name": "魯巴加丹加文"
+ },
+ "es-MX": {
+ "code": "es-MX",
+ "name": "墨西哥西ç­ç‰™æ–‡"
+ },
+ "en-AU": {
+ "code": "en-AU",
+ "name": "澳洲英文"
+ },
+ "lb": {
+ "code": "lb",
+ "name": "盧森堡文"
+ },
+ "luy": {
+ "code": "luy",
+ "name": "盧雅文"
+ },
+ "luo": {
+ "code": "luo",
+ "name": "盧奧文"
+ },
+ "zh-Hant": {
+ "code": "zh-Hant",
+ "name": "ç¹é«”中文"
+ },
+ "seh": {
+ "code": "seh",
+ "name": "è³½ç´æ–‡"
+ },
+ "ko": {
+ "code": "ko",
+ "name": "韓文"
+ },
+ "zh-Hans": {
+ "code": "zh-Hans",
+ "name": "簡體中文"
+ },
+ "saq": {
+ "code": "saq",
+ "name": "薩布魯文"
+ },
+ "bo": {
+ "code": "bo",
+ "name": "è—æ–‡"
+ },
+ "rwk": {
+ "code": "rwk",
+ "name": "羅瓦文"
+ },
+ "ro": {
+ "code": "ro",
+ "name": "羅馬尼亞文"
+ },
+ "rm": {
+ "code": "rm",
+ "name": "羅曼斯文"
+ },
+ "gd": {
+ "code": "gd",
+ "name": "蘇格蘭蓋爾文"
+ },
+ "rof": {
+ "code": "rof",
+ "name": "蘭åšæ–‡"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/language/zh-Hant.json b/library/intl/resources/language/zh-Hant.json
new file mode 100644
index 000000000..4d7dcb999
--- /dev/null
+++ b/library/intl/resources/language/zh-Hant.json
@@ -0,0 +1,738 @@
+{
+ "de-AT": {
+ "code": "de-AT",
+ "name": "de_AT"
+ },
+ "en-AU": {
+ "code": "en-AU",
+ "name": "en_AU"
+ },
+ "en-CA": {
+ "code": "en-CA",
+ "name": "en_CA"
+ },
+ "en-GB": {
+ "code": "en-GB",
+ "name": "en_GB"
+ },
+ "en-US": {
+ "code": "en-US",
+ "name": "en_US"
+ },
+ "es-MX": {
+ "code": "es-MX",
+ "name": "es_MX"
+ },
+ "fr-CA": {
+ "code": "fr-CA",
+ "name": "fr_CA"
+ },
+ "fr-CH": {
+ "code": "fr-CH",
+ "name": "fr_CH"
+ },
+ "pt-BR": {
+ "code": "pt-BR",
+ "name": "pt_BR"
+ },
+ "hsb": {
+ "code": "hsb",
+ "name": "上索布文"
+ },
+ "dsb": {
+ "code": "dsb",
+ "name": "下索布文"
+ },
+ "tr": {
+ "code": "tr",
+ "name": "土耳其文"
+ },
+ "lg": {
+ "code": "lg",
+ "name": "å¹²é”æ–‡"
+ },
+ "zh": {
+ "code": "zh",
+ "name": "中文"
+ },
+ "da": {
+ "code": "da",
+ "name": "丹麥文"
+ },
+ "nb": {
+ "code": "nb",
+ "name": "巴克摩挪å¨æ–‡"
+ },
+ "eu": {
+ "code": "eu",
+ "name": "巴斯克文"
+ },
+ "ksf": {
+ "code": "ksf",
+ "name": "å·´è²äºžæ–‡"
+ },
+ "bas": {
+ "code": "bas",
+ "name": "å·´è–©æ–‡"
+ },
+ "dje": {
+ "code": "dje",
+ "name": "扎爾馬文"
+ },
+ "ja": {
+ "code": "ja",
+ "name": "日文"
+ },
+ "eo": {
+ "code": "eo",
+ "name": "世界文"
+ },
+ "gl": {
+ "code": "gl",
+ "name": "加利西亞文"
+ },
+ "ca": {
+ "code": "ca",
+ "name": "加泰羅尼亞文"
+ },
+ "se": {
+ "code": "se",
+ "name": "北方薩米文"
+ },
+ "hi": {
+ "code": "hi",
+ "name": "北å°åº¦æ–‡"
+ },
+ "nd": {
+ "code": "nd",
+ "name": "北地畢列文"
+ },
+ "twq": {
+ "code": "twq",
+ "name": "北桑海文"
+ },
+ "kab": {
+ "code": "kab",
+ "name": "å¡æ¯”爾文"
+ },
+ "kea": {
+ "code": "kea",
+ "name": "å¡å¸ƒå¨çˆ¾ç¬¬æ–‡"
+ },
+ "kam": {
+ "code": "kam",
+ "name": "å¡å§†å·´æ–‡"
+ },
+ "kln": {
+ "code": "kln",
+ "name": "å¡å€«é‡‘æ–‡"
+ },
+ "gu": {
+ "code": "gu",
+ "name": "å¤å‰æ‹‰ç‰¹æ–‡"
+ },
+ "guz": {
+ "code": "guz",
+ "name": "å¤è¥¿æ–‡"
+ },
+ "dav": {
+ "code": "dav",
+ "name": "å°å¡”æ–‡"
+ },
+ "sw": {
+ "code": "sw",
+ "name": "å²ç“¦å¸Œé‡Œæ–‡"
+ },
+ "swc": {
+ "code": "swc",
+ "name": "å²ç“¦å¸Œé‡Œæ–‡ï¼ˆå‰›æžœï¼‰"
+ },
+ "ne": {
+ "code": "ne",
+ "name": "尼泊爾文"
+ },
+ "nyn": {
+ "code": "nyn",
+ "name": "å°¼æšç§‘èŠæ–‡"
+ },
+ "br": {
+ "code": "br",
+ "name": "布列塔尼文"
+ },
+ "fur": {
+ "code": "fur",
+ "name": "弗留利文"
+ },
+ "vai": {
+ "code": "vai",
+ "name": "瓦伊文"
+ },
+ "wae": {
+ "code": "wae",
+ "name": "瓦瑟文"
+ },
+ "be": {
+ "code": "be",
+ "name": "白俄羅斯文"
+ },
+ "lt": {
+ "code": "lt",
+ "name": "立陶宛文"
+ },
+ "is": {
+ "code": "is",
+ "name": "冰島文"
+ },
+ "hu": {
+ "code": "hu",
+ "name": "匈牙利文"
+ },
+ "id": {
+ "code": "id",
+ "name": "å°å°¼æ–‡"
+ },
+ "ki": {
+ "code": "ki",
+ "name": "å‰åº«å°¤æ–‡"
+ },
+ "ky": {
+ "code": "ky",
+ "name": "å‰çˆ¾å‰æ–¯æ–‡"
+ },
+ "nmg": {
+ "code": "nmg",
+ "name": "夸西奧文"
+ },
+ "dyo": {
+ "code": "dyo",
+ "name": "朱拉文"
+ },
+ "fy": {
+ "code": "fy",
+ "name": "西弗里西亞文"
+ },
+ "khq": {
+ "code": "khq",
+ "name": "西桑海文"
+ },
+ "es": {
+ "code": "es",
+ "name": "西ç­ç‰™æ–‡"
+ },
+ "es-ES": {
+ "code": "es-ES",
+ "name": "西ç­ç‰™æ–‡ï¼ˆæ­æ´²ï¼‰"
+ },
+ "nl-BE": {
+ "code": "nl-BE",
+ "name": "佛蘭芒文"
+ },
+ "mfe": {
+ "code": "mfe",
+ "name": "克里奧文(模里西斯)"
+ },
+ "hr": {
+ "code": "hr",
+ "name": "克羅埃西亞文"
+ },
+ "nus": {
+ "code": "nus",
+ "name": "努埃爾文"
+ },
+ "kn": {
+ "code": "kn",
+ "name": "åŽé‚£é”æ–‡"
+ },
+ "he": {
+ "code": "he",
+ "name": "希伯來文"
+ },
+ "shi": {
+ "code": "shi",
+ "name": "希爾哈文"
+ },
+ "el": {
+ "code": "el",
+ "name": "希臘文"
+ },
+ "bez": {
+ "code": "bez",
+ "name": "è²ç´æ–‡"
+ },
+ "agq": {
+ "code": "agq",
+ "name": "亞罕文"
+ },
+ "hy": {
+ "code": "hy",
+ "name": "亞美尼亞文"
+ },
+ "az": {
+ "code": "az",
+ "name": "亞塞拜然文"
+ },
+ "ewo": {
+ "code": "ewo",
+ "name": "ä¾æ±ªéƒ½æ–‡"
+ },
+ "ta": {
+ "code": "ta",
+ "name": "å¦ç±³çˆ¾æ–‡"
+ },
+ "cgg": {
+ "code": "cgg",
+ "name": "奇加文"
+ },
+ "bn": {
+ "code": "bn",
+ "name": "孟加拉文"
+ },
+ "dz": {
+ "code": "dz",
+ "name": "å®—å¡æ–‡"
+ },
+ "ksb": {
+ "code": "ksb",
+ "name": "尚巴拉文"
+ },
+ "lv": {
+ "code": "lv",
+ "name": "拉脫維亞文"
+ },
+ "to": {
+ "code": "to",
+ "name": "æ±åŠ æ–‡"
+ },
+ "ses": {
+ "code": "ses",
+ "name": "æ±æ¡‘æµ·æ–‡"
+ },
+ "ln": {
+ "code": "ln",
+ "name": "林加拉文"
+ },
+ "fr": {
+ "code": "fr",
+ "name": "法文"
+ },
+ "fo": {
+ "code": "fo",
+ "name": "法羅文"
+ },
+ "bs": {
+ "code": "bs",
+ "name": "波士尼亞文"
+ },
+ "fa": {
+ "code": "fa",
+ "name": "波斯文"
+ },
+ "pl": {
+ "code": "pl",
+ "name": "波蘭文"
+ },
+ "fi": {
+ "code": "fi",
+ "name": "芬蘭文"
+ },
+ "ak": {
+ "code": "ak",
+ "name": "阿åŽæ–‡"
+ },
+ "am": {
+ "code": "am",
+ "name": "阿姆哈拉文"
+ },
+ "ar": {
+ "code": "ar",
+ "name": "阿拉伯文"
+ },
+ "ast": {
+ "code": "ast",
+ "name": "阿斯圖里亞文"
+ },
+ "sq": {
+ "code": "sq",
+ "name": "阿爾巴尼亞文"
+ },
+ "asa": {
+ "code": "asa",
+ "name": "阿蘇文"
+ },
+ "ru": {
+ "code": "ru",
+ "name": "ä¿„æ–‡"
+ },
+ "bg": {
+ "code": "bg",
+ "name": "ä¿åŠ åˆ©äºžæ–‡"
+ },
+ "af": {
+ "code": "af",
+ "name": "å—éžè·è˜­æ–‡"
+ },
+ "kk": {
+ "code": "kk",
+ "name": "哈薩克文"
+ },
+ "cy": {
+ "code": "cy",
+ "name": "å¨çˆ¾æ–¯æ–‡"
+ },
+ "yav": {
+ "code": "yav",
+ "name": "æ´‹åžæ–‡"
+ },
+ "ksh": {
+ "code": "ksh",
+ "name": "科隆文"
+ },
+ "yo": {
+ "code": "yo",
+ "name": "約魯巴文"
+ },
+ "nn": {
+ "code": "nn",
+ "name": "è€è«¾æ–¯å…‹æŒªå¨æ–‡"
+ },
+ "en": {
+ "code": "en",
+ "name": "英文"
+ },
+ "ee": {
+ "code": "ee",
+ "name": "埃維文"
+ },
+ "ebu": {
+ "code": "ebu",
+ "name": "æ©å¸ƒæ–‡"
+ },
+ "jgo": {
+ "code": "jgo",
+ "name": "æ©æ ¼å§†å·´æ–‡"
+ },
+ "pa": {
+ "code": "pa",
+ "name": "æ—é®æ™®æ–‡"
+ },
+ "lag": {
+ "code": "lag",
+ "name": "朗å‰æ–‡"
+ },
+ "chr": {
+ "code": "chr",
+ "name": "柴羅基文"
+ },
+ "kl": {
+ "code": "kl",
+ "name": "格陵蘭文"
+ },
+ "sg": {
+ "code": "sg",
+ "name": "桑戈文"
+ },
+ "sbp": {
+ "code": "sbp",
+ "name": "æ¡‘å¤æ–‡"
+ },
+ "th": {
+ "code": "th",
+ "name": "æ³°æ–‡"
+ },
+ "te": {
+ "code": "te",
+ "name": "泰盧固文"
+ },
+ "uk": {
+ "code": "uk",
+ "name": "çƒå…‹è˜­æ–‡"
+ },
+ "uz": {
+ "code": "uz",
+ "name": "çƒèŒ²åˆ¥å…‹æ–‡"
+ },
+ "ur": {
+ "code": "ur",
+ "name": "çƒéƒ½æ–‡"
+ },
+ "teo": {
+ "code": "teo",
+ "name": "特索文"
+ },
+ "bm": {
+ "code": "bm",
+ "name": "ç­å·´æ‹‰æ–‡"
+ },
+ "zu": {
+ "code": "zu",
+ "name": "祖魯文"
+ },
+ "naq": {
+ "code": "naq",
+ "name": "ç´é¦¬æ–‡"
+ },
+ "xog": {
+ "code": "xog",
+ "name": "索加文"
+ },
+ "so": {
+ "code": "so",
+ "name": "索馬利文"
+ },
+ "kde": {
+ "code": "kde",
+ "name": "馬孔德文"
+ },
+ "mgh": {
+ "code": "mgh",
+ "name": "馬夸文"
+ },
+ "ms": {
+ "code": "ms",
+ "name": "馬來文"
+ },
+ "ml": {
+ "code": "ml",
+ "name": "馬來亞拉姆文"
+ },
+ "mk": {
+ "code": "mk",
+ "name": "馬其頓文"
+ },
+ "mg": {
+ "code": "mg",
+ "name": "馬拉加什文"
+ },
+ "mr": {
+ "code": "mr",
+ "name": "馬拉地文"
+ },
+ "jmc": {
+ "code": "jmc",
+ "name": "馬æ°ç¾Žæ–‡"
+ },
+ "mt": {
+ "code": "mt",
+ "name": "馬爾他文"
+ },
+ "mas": {
+ "code": "mas",
+ "name": "馬賽文"
+ },
+ "de-CH": {
+ "code": "de-CH",
+ "name": "高地德文(瑞士)"
+ },
+ "km": {
+ "code": "km",
+ "name": "高棉文"
+ },
+ "cs": {
+ "code": "cs",
+ "name": "æ·å…‹æ–‡"
+ },
+ "mer": {
+ "code": "mer",
+ "name": "梅魯文"
+ },
+ "ar-001": {
+ "code": "ar-001",
+ "name": "ç¾ä»£æ¨™æº–阿拉伯文"
+ },
+ "nl": {
+ "code": "nl",
+ "name": "è·è˜­æ–‡"
+ },
+ "brx": {
+ "code": "brx",
+ "name": "åšå¤šæ–‡"
+ },
+ "ks": {
+ "code": "ks",
+ "name": "喀什米爾文"
+ },
+ "ka": {
+ "code": "ka",
+ "name": "喬治亞文"
+ },
+ "ff": {
+ "code": "ff",
+ "name": "富拉文"
+ },
+ "ti": {
+ "code": "ti",
+ "name": "æ格利尼亞文"
+ },
+ "sk": {
+ "code": "sk",
+ "name": "斯洛ä¼å…‹æ–‡"
+ },
+ "sl": {
+ "code": "sl",
+ "name": "斯洛維尼亞文"
+ },
+ "ps": {
+ "code": "ps",
+ "name": "普什圖文"
+ },
+ "fil": {
+ "code": "fil",
+ "name": "è²å¾‹è³“æ–‡"
+ },
+ "vi": {
+ "code": "vi",
+ "name": "越å—æ–‡"
+ },
+ "rn": {
+ "code": "rn",
+ "name": "隆迪文"
+ },
+ "tzm": {
+ "code": "tzm",
+ "name": "塔馬齊格特文"
+ },
+ "sn": {
+ "code": "sn",
+ "name": "塞內加爾文"
+ },
+ "sr": {
+ "code": "sr",
+ "name": "塞爾維亞文"
+ },
+ "et": {
+ "code": "et",
+ "name": "愛沙尼亞文"
+ },
+ "ga": {
+ "code": "ga",
+ "name": "愛爾蘭文"
+ },
+ "vun": {
+ "code": "vun",
+ "name": "溫舊文"
+ },
+ "sv": {
+ "code": "sv",
+ "name": "瑞典文"
+ },
+ "it": {
+ "code": "it",
+ "name": "義大利文"
+ },
+ "pt": {
+ "code": "pt",
+ "name": "è‘¡è„牙文"
+ },
+ "pt-PT": {
+ "code": "pt-PT",
+ "name": "è‘¡è„牙文(æ­æ´²ï¼‰"
+ },
+ "si": {
+ "code": "si",
+ "name": "僧伽羅文"
+ },
+ "ug": {
+ "code": "ug",
+ "name": "維å¾çˆ¾æ–‡"
+ },
+ "mn": {
+ "code": "mn",
+ "name": "è’™å¤æ–‡"
+ },
+ "mua": {
+ "code": "mua",
+ "name": "蒙當文"
+ },
+ "ha": {
+ "code": "ha",
+ "name": "豪撒文"
+ },
+ "lo": {
+ "code": "lo",
+ "name": "寮文"
+ },
+ "de": {
+ "code": "de",
+ "name": "å¾·æ–‡"
+ },
+ "gsw": {
+ "code": "gsw",
+ "name": "德文(瑞士)"
+ },
+ "ro-MD": {
+ "code": "ro-MD",
+ "name": "摩爾多瓦文"
+ },
+ "zgh": {
+ "code": "zgh",
+ "name": "標準摩洛哥塔馬塞特文"
+ },
+ "or": {
+ "code": "or",
+ "name": "æ­åˆ©äºžæ–‡"
+ },
+ "my": {
+ "code": "my",
+ "name": "緬甸文"
+ },
+ "lu": {
+ "code": "lu",
+ "name": "魯巴加丹加文"
+ },
+ "lb": {
+ "code": "lb",
+ "name": "盧森堡文"
+ },
+ "luy": {
+ "code": "luy",
+ "name": "盧雅文"
+ },
+ "luo": {
+ "code": "luo",
+ "name": "盧奧文"
+ },
+ "zh-Hant": {
+ "code": "zh-Hant",
+ "name": "ç¹é«”中文"
+ },
+ "seh": {
+ "code": "seh",
+ "name": "è³½ç´æ–‡"
+ },
+ "ko": {
+ "code": "ko",
+ "name": "韓文"
+ },
+ "zh-Hans": {
+ "code": "zh-Hans",
+ "name": "簡體中文"
+ },
+ "saq": {
+ "code": "saq",
+ "name": "薩布魯文"
+ },
+ "bo": {
+ "code": "bo",
+ "name": "è—æ–‡"
+ },
+ "rwk": {
+ "code": "rwk",
+ "name": "羅瓦文"
+ },
+ "ro": {
+ "code": "ro",
+ "name": "羅馬尼亞文"
+ },
+ "rm": {
+ "code": "rm",
+ "name": "羅曼斯文"
+ },
+ "gd": {
+ "code": "gd",
+ "name": "蘇格蘭蓋爾文"
+ },
+ "rof": {
+ "code": "rof",
+ "name": "蘭åšæ–‡"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/language/zh.json b/library/intl/resources/language/zh.json
new file mode 100644
index 000000000..85169c37b
--- /dev/null
+++ b/library/intl/resources/language/zh.json
@@ -0,0 +1,738 @@
+{
+ "sq": {
+ "code": "sq",
+ "name": "阿尔巴尼亚文"
+ },
+ "ak": {
+ "code": "ak",
+ "name": "阿肯文"
+ },
+ "ar": {
+ "code": "ar",
+ "name": "阿拉伯文"
+ },
+ "am": {
+ "code": "am",
+ "name": "阿姆哈拉文"
+ },
+ "az": {
+ "code": "az",
+ "name": "阿塞拜疆文"
+ },
+ "ast": {
+ "code": "ast",
+ "name": "阿斯图里亚æ€ç‰¹æ–‡"
+ },
+ "asa": {
+ "code": "asa",
+ "name": "阿è‹æ–‡"
+ },
+ "ee": {
+ "code": "ee",
+ "name": "埃维文"
+ },
+ "ga": {
+ "code": "ga",
+ "name": "爱尔兰文"
+ },
+ "et": {
+ "code": "et",
+ "name": "爱沙尼亚文"
+ },
+ "de-AT": {
+ "code": "de-AT",
+ "name": "奥地利德文"
+ },
+ "or": {
+ "code": "or",
+ "name": "奥里亚文"
+ },
+ "en-AU": {
+ "code": "en-AU",
+ "name": "澳大利亚英文"
+ },
+ "ksf": {
+ "code": "ksf",
+ "name": "å·´è²äºšæ–‡"
+ },
+ "bas": {
+ "code": "bas",
+ "name": "å·´è¨æ–‡"
+ },
+ "eu": {
+ "code": "eu",
+ "name": "巴斯克文"
+ },
+ "pt-BR": {
+ "code": "pt-BR",
+ "name": "巴西葡è„牙文"
+ },
+ "be": {
+ "code": "be",
+ "name": "白俄罗斯文"
+ },
+ "bm": {
+ "code": "bm",
+ "name": "ç­å·´æ‹‰æ–‡"
+ },
+ "bg": {
+ "code": "bg",
+ "name": "ä¿åŠ åˆ©äºšæ–‡"
+ },
+ "nd": {
+ "code": "nd",
+ "name": "北æ©å¾·è´å‹’æ–‡"
+ },
+ "se": {
+ "code": "se",
+ "name": "北è¨ç±³æ–‡"
+ },
+ "twq": {
+ "code": "twq",
+ "name": "北桑海文"
+ },
+ "bez": {
+ "code": "bez",
+ "name": "è´çº³æ–‡"
+ },
+ "zgh": {
+ "code": "zgh",
+ "name": "标准摩洛哥塔马塞特文"
+ },
+ "is": {
+ "code": "is",
+ "name": "冰岛文"
+ },
+ "pl": {
+ "code": "pl",
+ "name": "波兰文"
+ },
+ "bs": {
+ "code": "bs",
+ "name": "波斯尼亚文"
+ },
+ "fa": {
+ "code": "fa",
+ "name": "波斯文"
+ },
+ "brx": {
+ "code": "brx",
+ "name": "åšå¤šæ–‡"
+ },
+ "dz": {
+ "code": "dz",
+ "name": "ä¸ä¸¹æ–‡"
+ },
+ "br": {
+ "code": "br",
+ "name": "布里多尼文"
+ },
+ "bo": {
+ "code": "bo",
+ "name": "è—æ–‡"
+ },
+ "chr": {
+ "code": "chr",
+ "name": "彻罗基文"
+ },
+ "da": {
+ "code": "da",
+ "name": "丹麦文"
+ },
+ "de": {
+ "code": "de",
+ "name": "å¾·æ–‡"
+ },
+ "ses": {
+ "code": "ses",
+ "name": "东桑海文"
+ },
+ "ru": {
+ "code": "ru",
+ "name": "ä¿„æ–‡"
+ },
+ "ebu": {
+ "code": "ebu",
+ "name": "æ©å¸ƒæ–‡"
+ },
+ "jgo": {
+ "code": "jgo",
+ "name": "æ©è‰®å·´"
+ },
+ "fo": {
+ "code": "fo",
+ "name": "法罗文"
+ },
+ "fr": {
+ "code": "fr",
+ "name": "法文"
+ },
+ "zh-Hant": {
+ "code": "zh-Hant",
+ "name": "ç¹ä½“中文"
+ },
+ "fil": {
+ "code": "fil",
+ "name": "è²å¾‹å®¾æ–‡"
+ },
+ "fi": {
+ "code": "fi",
+ "name": "芬兰文"
+ },
+ "fur": {
+ "code": "fur",
+ "name": "弗留利文"
+ },
+ "nl-BE": {
+ "code": "nl-BE",
+ "name": "佛兰芒文"
+ },
+ "ff": {
+ "code": "ff",
+ "name": "夫拉文"
+ },
+ "swc": {
+ "code": "swc",
+ "name": "刚果斯瓦希里文"
+ },
+ "km": {
+ "code": "km",
+ "name": "高棉文"
+ },
+ "kl": {
+ "code": "kl",
+ "name": "格陵兰文"
+ },
+ "ka": {
+ "code": "ka",
+ "name": "æ ¼é²å‰äºšæ–‡"
+ },
+ "gu": {
+ "code": "gu",
+ "name": "å¤å‰æ‹‰ç‰¹æ–‡"
+ },
+ "guz": {
+ "code": "guz",
+ "name": "å¤è¥¿æ–‡"
+ },
+ "kk": {
+ "code": "kk",
+ "name": "哈è¨å…‹æ–‡"
+ },
+ "ko": {
+ "code": "ko",
+ "name": "韩文"
+ },
+ "ha": {
+ "code": "ha",
+ "name": "豪è¨æ–‡"
+ },
+ "nl": {
+ "code": "nl",
+ "name": "è·å…°æ–‡"
+ },
+ "rn": {
+ "code": "rn",
+ "name": "基隆迪文"
+ },
+ "ky": {
+ "code": "ky",
+ "name": "å‰å°”å‰æ–¯æ–‡"
+ },
+ "ki": {
+ "code": "ki",
+ "name": "å‰åº“尤文"
+ },
+ "gl": {
+ "code": "gl",
+ "name": "加利西亚文"
+ },
+ "fr-CA": {
+ "code": "fr-CA",
+ "name": "加拿大法文"
+ },
+ "en-CA": {
+ "code": "en-CA",
+ "name": "加拿大英文"
+ },
+ "ca": {
+ "code": "ca",
+ "name": "加泰罗尼亚文"
+ },
+ "zh-Hans": {
+ "code": "zh-Hans",
+ "name": "简体中文"
+ },
+ "cs": {
+ "code": "cs",
+ "name": "æ·å…‹æ–‡"
+ },
+ "kab": {
+ "code": "kab",
+ "name": "å¡æ¯”尔文"
+ },
+ "kea": {
+ "code": "kea",
+ "name": "å¡å¸ƒä½›å¾—é²æ–‡"
+ },
+ "kln": {
+ "code": "kln",
+ "name": "å¡ä¼¦é‡‘æ–‡"
+ },
+ "kam": {
+ "code": "kam",
+ "name": "å¡å§†å·´æ–‡"
+ },
+ "kn": {
+ "code": "kn",
+ "name": "å¡çº³è¾¾æ–‡"
+ },
+ "ksh": {
+ "code": "ksh",
+ "name": "科隆文"
+ },
+ "hr": {
+ "code": "hr",
+ "name": "克罗地亚文"
+ },
+ "ks": {
+ "code": "ks",
+ "name": "克什米尔文"
+ },
+ "nmg": {
+ "code": "nmg",
+ "name": "夸西奥文"
+ },
+ "lv": {
+ "code": "lv",
+ "name": "拉脱维亚文"
+ },
+ "rof": {
+ "code": "rof",
+ "name": "å…°åšæ–‡"
+ },
+ "lag": {
+ "code": "lag",
+ "name": "朗å‰æ–‡"
+ },
+ "lo": {
+ "code": "lo",
+ "name": "è€æŒæ–‡"
+ },
+ "lt": {
+ "code": "lt",
+ "name": "立陶宛文"
+ },
+ "ln": {
+ "code": "ln",
+ "name": "林加拉文"
+ },
+ "luo": {
+ "code": "luo",
+ "name": "å¢å¥¥æ–‡"
+ },
+ "lg": {
+ "code": "lg",
+ "name": "å¢å¹²è¾¾æ–‡"
+ },
+ "lb": {
+ "code": "lb",
+ "name": "å¢æ£®å ¡æ–‡"
+ },
+ "luy": {
+ "code": "luy",
+ "name": "å¢é›…æ–‡"
+ },
+ "lu": {
+ "code": "lu",
+ "name": "é²å·´åŠ ä¸¹åŠ æ–‡"
+ },
+ "ro": {
+ "code": "ro",
+ "name": "罗马尼亚文"
+ },
+ "rm": {
+ "code": "rm",
+ "name": "罗曼什文"
+ },
+ "rwk": {
+ "code": "rwk",
+ "name": "罗瓦文"
+ },
+ "mg": {
+ "code": "mg",
+ "name": "马尔加什文"
+ },
+ "mt": {
+ "code": "mt",
+ "name": "马耳他文"
+ },
+ "kde": {
+ "code": "kde",
+ "name": "马孔德文"
+ },
+ "mgh": {
+ "code": "mgh",
+ "name": "马夸文"
+ },
+ "mr": {
+ "code": "mr",
+ "name": "马拉地文"
+ },
+ "ml": {
+ "code": "ml",
+ "name": "马拉雅拉姆文"
+ },
+ "ms": {
+ "code": "ms",
+ "name": "马æ¥æ–‡"
+ },
+ "mk": {
+ "code": "mk",
+ "name": "马其顿文"
+ },
+ "jmc": {
+ "code": "jmc",
+ "name": "马切姆文"
+ },
+ "mfe": {
+ "code": "mfe",
+ "name": "毛里求斯克里奥尔文"
+ },
+ "mer": {
+ "code": "mer",
+ "name": "梅é²æ–‡"
+ },
+ "en-US": {
+ "code": "en-US",
+ "name": "美å¼è‹±æ–‡"
+ },
+ "mua": {
+ "code": "mua",
+ "name": "蒙当文"
+ },
+ "mn": {
+ "code": "mn",
+ "name": "è’™å¤æ–‡"
+ },
+ "bn": {
+ "code": "bn",
+ "name": "孟加拉文"
+ },
+ "my": {
+ "code": "my",
+ "name": "缅甸文"
+ },
+ "ro-MD": {
+ "code": "ro-MD",
+ "name": "摩尔多瓦文"
+ },
+ "es-MX": {
+ "code": "es-MX",
+ "name": "墨西哥西ç­ç‰™æ–‡"
+ },
+ "naq": {
+ "code": "naq",
+ "name": "纳马文"
+ },
+ "af": {
+ "code": "af",
+ "name": "å—éžè·å…°æ–‡"
+ },
+ "nyn": {
+ "code": "nyn",
+ "name": "尼昂科勒文"
+ },
+ "ne": {
+ "code": "ne",
+ "name": "尼泊尔文"
+ },
+ "nus": {
+ "code": "nus",
+ "name": "努埃尔文"
+ },
+ "nb": {
+ "code": "nb",
+ "name": "挪å¨åšå…‹é©¬å°”æ–‡"
+ },
+ "nn": {
+ "code": "nn",
+ "name": "挪å¨å°¼è¯ºæ–¯å…‹æ–‡"
+ },
+ "pt-PT": {
+ "code": "pt-PT",
+ "name": "欧洲葡è„牙文"
+ },
+ "es-ES": {
+ "code": "es-ES",
+ "name": "欧洲西ç­ç‰™æ–‡"
+ },
+ "pa": {
+ "code": "pa",
+ "name": "æ—é®æ™®æ–‡"
+ },
+ "pt": {
+ "code": "pt",
+ "name": "è‘¡è„牙文"
+ },
+ "ps": {
+ "code": "ps",
+ "name": "普什图文"
+ },
+ "cgg": {
+ "code": "cgg",
+ "name": "奇加文"
+ },
+ "ja": {
+ "code": "ja",
+ "name": "日文"
+ },
+ "sv": {
+ "code": "sv",
+ "name": "瑞典文"
+ },
+ "gsw": {
+ "code": "gsw",
+ "name": "瑞士德文"
+ },
+ "fr-CH": {
+ "code": "fr-CH",
+ "name": "瑞士法文"
+ },
+ "de-CH": {
+ "code": "de-CH",
+ "name": "瑞士高地德文"
+ },
+ "mas": {
+ "code": "mas",
+ "name": "è¨ä¼Šæ–‡"
+ },
+ "sr": {
+ "code": "sr",
+ "name": "塞尔维亚文"
+ },
+ "seh": {
+ "code": "seh",
+ "name": "塞纳文"
+ },
+ "saq": {
+ "code": "saq",
+ "name": "桑布é²æ–‡"
+ },
+ "sg": {
+ "code": "sg",
+ "name": "桑戈文"
+ },
+ "sbp": {
+ "code": "sbp",
+ "name": "æ¡‘å¤æ–‡"
+ },
+ "si": {
+ "code": "si",
+ "name": "僧伽罗文"
+ },
+ "hsb": {
+ "code": "hsb",
+ "name": "上索布文"
+ },
+ "sn": {
+ "code": "sn",
+ "name": "ç»çº³æ–‡"
+ },
+ "eo": {
+ "code": "eo",
+ "name": "世界文"
+ },
+ "sk": {
+ "code": "sk",
+ "name": "斯洛ä¼å…‹æ–‡"
+ },
+ "sl": {
+ "code": "sl",
+ "name": "斯洛文尼亚文"
+ },
+ "sw": {
+ "code": "sw",
+ "name": "斯瓦希里文"
+ },
+ "gd": {
+ "code": "gd",
+ "name": "è‹æ ¼å…°ç›–尔文"
+ },
+ "xog": {
+ "code": "xog",
+ "name": "索加文"
+ },
+ "so": {
+ "code": "so",
+ "name": "索马里文"
+ },
+ "tzm": {
+ "code": "tzm",
+ "name": "塔马é½æ ¼ç‰¹æ–‡"
+ },
+ "dav": {
+ "code": "dav",
+ "name": "å°å¡”æ–‡"
+ },
+ "te": {
+ "code": "te",
+ "name": "æ³°å¢å›ºæ–‡"
+ },
+ "ta": {
+ "code": "ta",
+ "name": "泰米尔文"
+ },
+ "th": {
+ "code": "th",
+ "name": "æ³°æ–‡"
+ },
+ "to": {
+ "code": "to",
+ "name": "汤加文"
+ },
+ "teo": {
+ "code": "teo",
+ "name": "特索文"
+ },
+ "ti": {
+ "code": "ti",
+ "name": "æ格里尼亚文"
+ },
+ "tr": {
+ "code": "tr",
+ "name": "土耳其文"
+ },
+ "wae": {
+ "code": "wae",
+ "name": "瓦尔瑟文"
+ },
+ "vai": {
+ "code": "vai",
+ "name": "瓦伊文"
+ },
+ "ewo": {
+ "code": "ewo",
+ "name": "æ—ºæœæ–‡"
+ },
+ "cy": {
+ "code": "cy",
+ "name": "å¨å°”士文"
+ },
+ "ug": {
+ "code": "ug",
+ "name": "ç»´å¾å°”æ–‡"
+ },
+ "vun": {
+ "code": "vun",
+ "name": "温旧文"
+ },
+ "ur": {
+ "code": "ur",
+ "name": "乌尔都文"
+ },
+ "uk": {
+ "code": "uk",
+ "name": "乌克兰文"
+ },
+ "uz": {
+ "code": "uz",
+ "name": "乌兹别克文"
+ },
+ "he": {
+ "code": "he",
+ "name": "希伯æ¥æ–‡"
+ },
+ "shi": {
+ "code": "shi",
+ "name": "希尔哈文"
+ },
+ "el": {
+ "code": "el",
+ "name": "希腊文"
+ },
+ "es": {
+ "code": "es",
+ "name": "西ç­ç‰™æ–‡"
+ },
+ "fy": {
+ "code": "fy",
+ "name": "西弗里西亚文"
+ },
+ "khq": {
+ "code": "khq",
+ "name": "西桑海文"
+ },
+ "dsb": {
+ "code": "dsb",
+ "name": "下索布文"
+ },
+ "ar-001": {
+ "code": "ar-001",
+ "name": "现代标准阿拉伯文"
+ },
+ "ksb": {
+ "code": "ksb",
+ "name": "香巴拉文"
+ },
+ "hu": {
+ "code": "hu",
+ "name": "匈牙利文"
+ },
+ "agq": {
+ "code": "agq",
+ "name": "亚罕文"
+ },
+ "hy": {
+ "code": "hy",
+ "name": "亚美尼亚文"
+ },
+ "yav": {
+ "code": "yav",
+ "name": "æ´‹åžæ–‡"
+ },
+ "it": {
+ "code": "it",
+ "name": "æ„大利文"
+ },
+ "hi": {
+ "code": "hi",
+ "name": "å°åœ°æ–‡"
+ },
+ "id": {
+ "code": "id",
+ "name": "å°åº¦å°¼è¥¿äºšæ–‡"
+ },
+ "en-GB": {
+ "code": "en-GB",
+ "name": "英å¼è‹±æ–‡"
+ },
+ "en": {
+ "code": "en",
+ "name": "英文"
+ },
+ "yo": {
+ "code": "yo",
+ "name": "约é²å·´æ–‡"
+ },
+ "vi": {
+ "code": "vi",
+ "name": "越å—æ–‡"
+ },
+ "dje": {
+ "code": "dje",
+ "name": "哲尔马文"
+ },
+ "zh": {
+ "code": "zh",
+ "name": "中文"
+ },
+ "dyo": {
+ "code": "dyo",
+ "name": "朱拉文"
+ },
+ "zu": {
+ "code": "zu",
+ "name": "祖é²æ–‡"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/language/zu.json b/library/intl/resources/language/zu.json
new file mode 100644
index 000000000..cffe0347a
--- /dev/null
+++ b/library/intl/resources/language/zu.json
@@ -0,0 +1,738 @@
+{
+ "ast": {
+ "code": "ast",
+ "name": "Asturian"
+ },
+ "asa": {
+ "code": "asa",
+ "name": "Asu"
+ },
+ "bas": {
+ "code": "bas",
+ "name": "Basaa"
+ },
+ "ksh": {
+ "code": "ksh",
+ "name": "Colognian"
+ },
+ "es-ES": {
+ "code": "es-ES",
+ "name": "es_ES"
+ },
+ "ewo": {
+ "code": "ewo",
+ "name": "Ewondo"
+ },
+ "fur": {
+ "code": "fur",
+ "name": "Friulian"
+ },
+ "ff": {
+ "code": "ff",
+ "name": "Fulah"
+ },
+ "en-US": {
+ "code": "en-US",
+ "name": "i-American English"
+ },
+ "en-GB": {
+ "code": "en-GB",
+ "name": "i-British English"
+ },
+ "en-CA": {
+ "code": "en-CA",
+ "name": "i-Canadian English"
+ },
+ "en": {
+ "code": "en",
+ "name": "i-English"
+ },
+ "lo": {
+ "code": "lo",
+ "name": "i-Lao"
+ },
+ "nn": {
+ "code": "nn",
+ "name": "i-Norwegian Nynorsk"
+ },
+ "gd": {
+ "code": "gd",
+ "name": "i-Scottish Gaelic"
+ },
+ "si": {
+ "code": "si",
+ "name": "i-Sinhala"
+ },
+ "af": {
+ "code": "af",
+ "name": "isi-Afrikaans"
+ },
+ "agq": {
+ "code": "agq",
+ "name": "isi-Aghem"
+ },
+ "ak": {
+ "code": "ak",
+ "name": "isi-Akan"
+ },
+ "sq": {
+ "code": "sq",
+ "name": "isi-Albania"
+ },
+ "am": {
+ "code": "am",
+ "name": "isi-Amharic"
+ },
+ "ar": {
+ "code": "ar",
+ "name": "isi-Arabic"
+ },
+ "ar-001": {
+ "code": "ar-001",
+ "name": "Isi-Arabic Esijwayelekile Samanje"
+ },
+ "hy": {
+ "code": "hy",
+ "name": "isi-Armenia"
+ },
+ "de-AT": {
+ "code": "de-AT",
+ "name": "isi-Austrian German"
+ },
+ "en-AU": {
+ "code": "en-AU",
+ "name": "isi-Austrillian English"
+ },
+ "az": {
+ "code": "az",
+ "name": "isi-Azerbaijani"
+ },
+ "ksf": {
+ "code": "ksf",
+ "name": "isi-Bafia"
+ },
+ "bm": {
+ "code": "bm",
+ "name": "isi-Bambara"
+ },
+ "eu": {
+ "code": "eu",
+ "name": "isi-Basque"
+ },
+ "be": {
+ "code": "be",
+ "name": "isi-Belarusian"
+ },
+ "bez": {
+ "code": "bez",
+ "name": "isi-Bena"
+ },
+ "bn": {
+ "code": "bn",
+ "name": "isi-Bengali"
+ },
+ "brx": {
+ "code": "brx",
+ "name": "isi-Bodo"
+ },
+ "bs": {
+ "code": "bs",
+ "name": "isi-Bosnian"
+ },
+ "pt-BR": {
+ "code": "pt-BR",
+ "name": "isi-Brazillian Portuguese"
+ },
+ "br": {
+ "code": "br",
+ "name": "Isi-Breton"
+ },
+ "bg": {
+ "code": "bg",
+ "name": "isi-Bulgari"
+ },
+ "my": {
+ "code": "my",
+ "name": "isi-Burmese"
+ },
+ "fr-CA": {
+ "code": "fr-CA",
+ "name": "isi-Canadian French"
+ },
+ "ca": {
+ "code": "ca",
+ "name": "isi-Catalan"
+ },
+ "tzm": {
+ "code": "tzm",
+ "name": "isi-Central Atlas Tamazight"
+ },
+ "chr": {
+ "code": "chr",
+ "name": "Isi-Cherokee"
+ },
+ "cgg": {
+ "code": "cgg",
+ "name": "isi-Chiga"
+ },
+ "zh": {
+ "code": "zh",
+ "name": "isi-Chinese"
+ },
+ "swc": {
+ "code": "swc",
+ "name": "isi-Congo Swahili"
+ },
+ "hr": {
+ "code": "hr",
+ "name": "isi-Croatian"
+ },
+ "cs": {
+ "code": "cs",
+ "name": "isi-Czech"
+ },
+ "da": {
+ "code": "da",
+ "name": "isi-Danish"
+ },
+ "nl": {
+ "code": "nl",
+ "name": "isi-Dutch"
+ },
+ "dz": {
+ "code": "dz",
+ "name": "isi-Dzongkha"
+ },
+ "ebu": {
+ "code": "ebu",
+ "name": "isi-Embu"
+ },
+ "eo": {
+ "code": "eo",
+ "name": "isi-Esperanto"
+ },
+ "et": {
+ "code": "et",
+ "name": "isi-Estonia"
+ },
+ "pt-PT": {
+ "code": "pt-PT",
+ "name": "isi-European Portuguese"
+ },
+ "ee": {
+ "code": "ee",
+ "name": "Isi-Ewe"
+ },
+ "fo": {
+ "code": "fo",
+ "name": "isi-Faroese"
+ },
+ "fil": {
+ "code": "fil",
+ "name": "isi-Filipino"
+ },
+ "fi": {
+ "code": "fi",
+ "name": "isi-Finnish"
+ },
+ "nl-BE": {
+ "code": "nl-BE",
+ "name": "isi-Flemish"
+ },
+ "fr": {
+ "code": "fr",
+ "name": "isi-French"
+ },
+ "gl": {
+ "code": "gl",
+ "name": "isi-Galicia"
+ },
+ "lg": {
+ "code": "lg",
+ "name": "Isi-Ganda"
+ },
+ "ka": {
+ "code": "ka",
+ "name": "isi-Georgian"
+ },
+ "de": {
+ "code": "de",
+ "name": "isi-German"
+ },
+ "el": {
+ "code": "el",
+ "name": "isi-Greek"
+ },
+ "gu": {
+ "code": "gu",
+ "name": "isi-Gujarati"
+ },
+ "guz": {
+ "code": "guz",
+ "name": "isi-Gusli"
+ },
+ "ha": {
+ "code": "ha",
+ "name": "isi-Hausa"
+ },
+ "he": {
+ "code": "he",
+ "name": "isi-Hebrew"
+ },
+ "hi": {
+ "code": "hi",
+ "name": "isi-Hindi"
+ },
+ "hu": {
+ "code": "hu",
+ "name": "isi-Hungarian"
+ },
+ "is": {
+ "code": "is",
+ "name": "isi-Icelandic"
+ },
+ "id": {
+ "code": "id",
+ "name": "isi-Indonesian"
+ },
+ "ga": {
+ "code": "ga",
+ "name": "isi-Irish"
+ },
+ "it": {
+ "code": "it",
+ "name": "isi-Italian"
+ },
+ "ja": {
+ "code": "ja",
+ "name": "isi-Japanese"
+ },
+ "dyo": {
+ "code": "dyo",
+ "name": "isi-Jola-Fonyl"
+ },
+ "kea": {
+ "code": "kea",
+ "name": "isi-Kabuverdianu"
+ },
+ "kab": {
+ "code": "kab",
+ "name": "isi-Kabyle"
+ },
+ "kl": {
+ "code": "kl",
+ "name": "isi-Kalaallisut"
+ },
+ "kln": {
+ "code": "kln",
+ "name": "isi-Kalenjin"
+ },
+ "kam": {
+ "code": "kam",
+ "name": "isi-Kamba"
+ },
+ "kn": {
+ "code": "kn",
+ "name": "isi-Kannada"
+ },
+ "ks": {
+ "code": "ks",
+ "name": "isi-Kashmiri"
+ },
+ "kk": {
+ "code": "kk",
+ "name": "isi-Kazakh"
+ },
+ "km": {
+ "code": "km",
+ "name": "isi-Khmer"
+ },
+ "ki": {
+ "code": "ki",
+ "name": "isi-Kikuyu"
+ },
+ "ko": {
+ "code": "ko",
+ "name": "isi-Korean"
+ },
+ "khq": {
+ "code": "khq",
+ "name": "isi-Koyra Chiini"
+ },
+ "ses": {
+ "code": "ses",
+ "name": "isi-Koyraboro Senni"
+ },
+ "nmg": {
+ "code": "nmg",
+ "name": "isi-Kwasio"
+ },
+ "ky": {
+ "code": "ky",
+ "name": "isi-Kyrgyz"
+ },
+ "lag": {
+ "code": "lag",
+ "name": "isi-Langi"
+ },
+ "lv": {
+ "code": "lv",
+ "name": "isi-Latvian"
+ },
+ "ln": {
+ "code": "ln",
+ "name": "isi-Lingala"
+ },
+ "lt": {
+ "code": "lt",
+ "name": "isi-Lithuanian"
+ },
+ "dsb": {
+ "code": "dsb",
+ "name": "isi-Lower Sorbian"
+ },
+ "lu": {
+ "code": "lu",
+ "name": "isi-Luba-Katanga"
+ },
+ "luo": {
+ "code": "luo",
+ "name": "isi-Luo"
+ },
+ "lb": {
+ "code": "lb",
+ "name": "isi-Luxembourgish"
+ },
+ "luy": {
+ "code": "luy",
+ "name": "isi-Luyia"
+ },
+ "mk": {
+ "code": "mk",
+ "name": "isi-Macedonian"
+ },
+ "jmc": {
+ "code": "jmc",
+ "name": "isi-Machame"
+ },
+ "mgh": {
+ "code": "mgh",
+ "name": "isi-Makhuwa-Meetto"
+ },
+ "kde": {
+ "code": "kde",
+ "name": "isi-Makonde"
+ },
+ "mg": {
+ "code": "mg",
+ "name": "isi-Malagasy"
+ },
+ "ms": {
+ "code": "ms",
+ "name": "isi-Malay"
+ },
+ "ml": {
+ "code": "ml",
+ "name": "isi-Malayalam"
+ },
+ "mt": {
+ "code": "mt",
+ "name": "isi-Maltese"
+ },
+ "mr": {
+ "code": "mr",
+ "name": "isi-Marathi"
+ },
+ "mas": {
+ "code": "mas",
+ "name": "isi-Masai"
+ },
+ "mer": {
+ "code": "mer",
+ "name": "isi-Meru"
+ },
+ "es-MX": {
+ "code": "es-MX",
+ "name": "isi-Mexican Spanish"
+ },
+ "ro-MD": {
+ "code": "ro-MD",
+ "name": "isi-Moldavian"
+ },
+ "mn": {
+ "code": "mn",
+ "name": "isi-Mongolian"
+ },
+ "mfe": {
+ "code": "mfe",
+ "name": "Isi-Morisyen"
+ },
+ "mua": {
+ "code": "mua",
+ "name": "isi-Mundang"
+ },
+ "naq": {
+ "code": "naq",
+ "name": "isi-Nama"
+ },
+ "ne": {
+ "code": "ne",
+ "name": "isi-Nepali"
+ },
+ "jgo": {
+ "code": "jgo",
+ "name": "isi-Ngomba"
+ },
+ "nd": {
+ "code": "nd",
+ "name": "isi-North Ndebele"
+ },
+ "se": {
+ "code": "se",
+ "name": "isi-Northern Sami"
+ },
+ "nb": {
+ "code": "nb",
+ "name": "isi-Norwegian Bokmål"
+ },
+ "nus": {
+ "code": "nus",
+ "name": "isi-Nuer"
+ },
+ "nyn": {
+ "code": "nyn",
+ "name": "Isi-Nyankole"
+ },
+ "or": {
+ "code": "or",
+ "name": "isi-Oriya"
+ },
+ "ps": {
+ "code": "ps",
+ "name": "isi-Pashto"
+ },
+ "fa": {
+ "code": "fa",
+ "name": "isi-Persian"
+ },
+ "pl": {
+ "code": "pl",
+ "name": "isi-Polish"
+ },
+ "pt": {
+ "code": "pt",
+ "name": "isi-Portuguese"
+ },
+ "pa": {
+ "code": "pa",
+ "name": "isi-Punjabi"
+ },
+ "ro": {
+ "code": "ro",
+ "name": "isi-Romanian"
+ },
+ "rm": {
+ "code": "rm",
+ "name": "isi-Romansh"
+ },
+ "rof": {
+ "code": "rof",
+ "name": "isi-Rombo"
+ },
+ "rn": {
+ "code": "rn",
+ "name": "isi-Rundi"
+ },
+ "ru": {
+ "code": "ru",
+ "name": "isi-Russian"
+ },
+ "rwk": {
+ "code": "rwk",
+ "name": "isi-Rwa"
+ },
+ "saq": {
+ "code": "saq",
+ "name": "isi-Samburu"
+ },
+ "sg": {
+ "code": "sg",
+ "name": "isi-Sango"
+ },
+ "sbp": {
+ "code": "sbp",
+ "name": "isi-Sangu"
+ },
+ "seh": {
+ "code": "seh",
+ "name": "isi-Sena"
+ },
+ "sr": {
+ "code": "sr",
+ "name": "isi-Serbian"
+ },
+ "ksb": {
+ "code": "ksb",
+ "name": "isi-Shambala"
+ },
+ "sn": {
+ "code": "sn",
+ "name": "isi-Shona"
+ },
+ "zh-Hans": {
+ "code": "zh-Hans",
+ "name": "isi-Sipmlified Chinese"
+ },
+ "sk": {
+ "code": "sk",
+ "name": "isi-Slovak"
+ },
+ "sl": {
+ "code": "sl",
+ "name": "isi-Slovenian"
+ },
+ "xog": {
+ "code": "xog",
+ "name": "isi-Soga"
+ },
+ "so": {
+ "code": "so",
+ "name": "isi-Somali"
+ },
+ "es": {
+ "code": "es",
+ "name": "isi-Spanish"
+ },
+ "zgh": {
+ "code": "zgh",
+ "name": "isi-Standard Moroccan Tamazight"
+ },
+ "sw": {
+ "code": "sw",
+ "name": "isi-Swahili"
+ },
+ "sv": {
+ "code": "sv",
+ "name": "isi-Swedish"
+ },
+ "fr-CH": {
+ "code": "fr-CH",
+ "name": "isi-Swiss French"
+ },
+ "gsw": {
+ "code": "gsw",
+ "name": "isi-Swiss German"
+ },
+ "de-CH": {
+ "code": "de-CH",
+ "name": "isi-Swiss High German"
+ },
+ "shi": {
+ "code": "shi",
+ "name": "isi-Tachelhit"
+ },
+ "dav": {
+ "code": "dav",
+ "name": "isi-Taita"
+ },
+ "ta": {
+ "code": "ta",
+ "name": "isi-Tamil"
+ },
+ "twq": {
+ "code": "twq",
+ "name": "isi-Tasawaq"
+ },
+ "te": {
+ "code": "te",
+ "name": "isi-Telugu"
+ },
+ "teo": {
+ "code": "teo",
+ "name": "isi-Teso"
+ },
+ "th": {
+ "code": "th",
+ "name": "isi-Thai"
+ },
+ "bo": {
+ "code": "bo",
+ "name": "isi-Tibetan"
+ },
+ "ti": {
+ "code": "ti",
+ "name": "isi-Tigrinya"
+ },
+ "to": {
+ "code": "to",
+ "name": "Isi-Tongan"
+ },
+ "zh-Hant": {
+ "code": "zh-Hant",
+ "name": "isi-Traditional Chinese"
+ },
+ "tr": {
+ "code": "tr",
+ "name": "isi-Turkish"
+ },
+ "ug": {
+ "code": "ug",
+ "name": "isi-Uighur"
+ },
+ "uk": {
+ "code": "uk",
+ "name": "isi-Ukrainian"
+ },
+ "hsb": {
+ "code": "hsb",
+ "name": "isi-Upper Sorbian"
+ },
+ "ur": {
+ "code": "ur",
+ "name": "isi-Urdu"
+ },
+ "uz": {
+ "code": "uz",
+ "name": "isi-Uzbek"
+ },
+ "vai": {
+ "code": "vai",
+ "name": "isi-Vai"
+ },
+ "vi": {
+ "code": "vi",
+ "name": "isi-Vietnamese"
+ },
+ "vun": {
+ "code": "vun",
+ "name": "isi-Vunjo"
+ },
+ "cy": {
+ "code": "cy",
+ "name": "isi-Welsh"
+ },
+ "fy": {
+ "code": "fy",
+ "name": "isi-Western Frisian"
+ },
+ "yo": {
+ "code": "yo",
+ "name": "isi-Yoruba"
+ },
+ "dje": {
+ "code": "dje",
+ "name": "isi-Zarma"
+ },
+ "zu": {
+ "code": "zu",
+ "name": "isiZulu"
+ },
+ "wae": {
+ "code": "wae",
+ "name": "Walser"
+ },
+ "yav": {
+ "code": "yav",
+ "name": "Yangben"
+ }
+} \ No newline at end of file
diff --git a/library/intl/resources/number_format/aa.json b/library/intl/resources/number_format/aa.json
new file mode 100644
index 000000000..a3f7208e2
--- /dev/null
+++ b/library/intl/resources/number_format/aa.json
@@ -0,0 +1,7 @@
+{
+ "numbering_system": "latn",
+ "decimal_pattern": "#,##0.###",
+ "percent_pattern": "#,##0%",
+ "currency_pattern": "¤#,##0.00",
+ "accounting_currency_pattern": "¤#,##0.00"
+} \ No newline at end of file
diff --git a/library/intl/resources/number_format/af-NA.json b/library/intl/resources/number_format/af-NA.json
new file mode 100644
index 000000000..7ce8a94ca
--- /dev/null
+++ b/library/intl/resources/number_format/af-NA.json
@@ -0,0 +1,9 @@
+{
+ "numbering_system": "latn",
+ "decimal_pattern": "#,##0.###",
+ "percent_pattern": "#,##0%",
+ "currency_pattern": "¤ #,##0.00",
+ "accounting_currency_pattern": "¤#,##0.00;(¤#,##0.00)",
+ "decimal_separator": ",",
+ "grouping_separator": " "
+} \ No newline at end of file
diff --git a/library/intl/resources/number_format/af.json b/library/intl/resources/number_format/af.json
new file mode 100644
index 000000000..198b1e963
--- /dev/null
+++ b/library/intl/resources/number_format/af.json
@@ -0,0 +1,9 @@
+{
+ "numbering_system": "latn",
+ "decimal_pattern": "#,##0.###",
+ "percent_pattern": "#,##0%",
+ "currency_pattern": "¤#,##0.00",
+ "accounting_currency_pattern": "¤#,##0.00;(¤#,##0.00)",
+ "decimal_separator": ",",
+ "grouping_separator": " "
+} \ No newline at end of file
diff --git a/library/intl/resources/number_format/agq.json b/library/intl/resources/number_format/agq.json
new file mode 100644
index 000000000..f86dca5c9
--- /dev/null
+++ b/library/intl/resources/number_format/agq.json
@@ -0,0 +1,9 @@
+{
+ "numbering_system": "latn",
+ "decimal_pattern": "#,##0.###",
+ "percent_pattern": "#,##0%",
+ "currency_pattern": "#,##0.00¤",
+ "accounting_currency_pattern": "#,##0.00¤",
+ "decimal_separator": ",",
+ "grouping_separator": " "
+} \ No newline at end of file
diff --git a/library/intl/resources/number_format/ak.json b/library/intl/resources/number_format/ak.json
new file mode 100644
index 000000000..a3f7208e2
--- /dev/null
+++ b/library/intl/resources/number_format/ak.json
@@ -0,0 +1,7 @@
+{
+ "numbering_system": "latn",
+ "decimal_pattern": "#,##0.###",
+ "percent_pattern": "#,##0%",
+ "currency_pattern": "¤#,##0.00",
+ "accounting_currency_pattern": "¤#,##0.00"
+} \ No newline at end of file
diff --git a/library/intl/resources/number_format/am.json b/library/intl/resources/number_format/am.json
new file mode 100644
index 000000000..ff3ecbde6
--- /dev/null
+++ b/library/intl/resources/number_format/am.json
@@ -0,0 +1,7 @@
+{
+ "numbering_system": "latn",
+ "decimal_pattern": "#,##0.###",
+ "percent_pattern": "#,##0%",
+ "currency_pattern": "¤#,##0.00",
+ "accounting_currency_pattern": "¤#,##0.00;(¤#,##0.00)"
+} \ No newline at end of file
diff --git a/library/intl/resources/number_format/ar-DZ.json b/library/intl/resources/number_format/ar-DZ.json
new file mode 100644
index 000000000..f0f45f730
--- /dev/null
+++ b/library/intl/resources/number_format/ar-DZ.json
@@ -0,0 +1,11 @@
+{
+ "numbering_system": "latn",
+ "decimal_pattern": "#,##0.###",
+ "percent_pattern": "#,##0%",
+ "currency_pattern": "¤ #,##0.00",
+ "accounting_currency_pattern": "¤#,##0.00;(¤#,##0.00)",
+ "decimal_separator": ",",
+ "grouping_separator": ".",
+ "plus_sign": "‎+",
+ "minus_sign": "‎-"
+} \ No newline at end of file
diff --git a/library/intl/resources/number_format/ar-EH.json b/library/intl/resources/number_format/ar-EH.json
new file mode 100644
index 000000000..474e484f4
--- /dev/null
+++ b/library/intl/resources/number_format/ar-EH.json
@@ -0,0 +1,9 @@
+{
+ "numbering_system": "latn",
+ "decimal_pattern": "#,##0.###",
+ "percent_pattern": "#,##0%",
+ "currency_pattern": "¤ #,##0.00",
+ "accounting_currency_pattern": "¤#,##0.00;(¤#,##0.00)",
+ "plus_sign": "‎+",
+ "minus_sign": "‎-"
+} \ No newline at end of file
diff --git a/library/intl/resources/number_format/ar-LY.json b/library/intl/resources/number_format/ar-LY.json
new file mode 100644
index 000000000..f0f45f730
--- /dev/null
+++ b/library/intl/resources/number_format/ar-LY.json
@@ -0,0 +1,11 @@
+{
+ "numbering_system": "latn",
+ "decimal_pattern": "#,##0.###",
+ "percent_pattern": "#,##0%",
+ "currency_pattern": "¤ #,##0.00",
+ "accounting_currency_pattern": "¤#,##0.00;(¤#,##0.00)",
+ "decimal_separator": ",",
+ "grouping_separator": ".",
+ "plus_sign": "‎+",
+ "minus_sign": "‎-"
+} \ No newline at end of file
diff --git a/library/intl/resources/number_format/ar-MA.json b/library/intl/resources/number_format/ar-MA.json
new file mode 100644
index 000000000..f0f45f730
--- /dev/null
+++ b/library/intl/resources/number_format/ar-MA.json
@@ -0,0 +1,11 @@
+{
+ "numbering_system": "latn",
+ "decimal_pattern": "#,##0.###",
+ "percent_pattern": "#,##0%",
+ "currency_pattern": "¤ #,##0.00",
+ "accounting_currency_pattern": "¤#,##0.00;(¤#,##0.00)",
+ "decimal_separator": ",",
+ "grouping_separator": ".",
+ "plus_sign": "‎+",
+ "minus_sign": "‎-"
+} \ No newline at end of file
diff --git a/library/intl/resources/number_format/ar-TN.json b/library/intl/resources/number_format/ar-TN.json
new file mode 100644
index 000000000..3d40ecdee
--- /dev/null
+++ b/library/intl/resources/number_format/ar-TN.json
@@ -0,0 +1,11 @@
+{
+ "numbering_system": "latn",
+ "decimal_pattern": "#,##0.###",
+ "percent_pattern": "#,##0%",
+ "currency_pattern": "¤#0.00",
+ "accounting_currency_pattern": "¤#,##0.00;(¤#,##0.00)",
+ "decimal_separator": ",",
+ "grouping_separator": ".",
+ "plus_sign": "‎+",
+ "minus_sign": "‎-"
+} \ No newline at end of file
diff --git a/library/intl/resources/number_format/ar.json b/library/intl/resources/number_format/ar.json
new file mode 100644
index 000000000..a027ffa1f
--- /dev/null
+++ b/library/intl/resources/number_format/ar.json
@@ -0,0 +1,12 @@
+{
+ "numbering_system": "arab",
+ "decimal_pattern": "#,##0.###",
+ "percent_pattern": "#,##0%",
+ "currency_pattern": "¤ #,##0.00",
+ "accounting_currency_pattern": "¤#,##0.00;(¤#,##0.00)",
+ "decimal_separator": "Ù«",
+ "grouping_separator": "Ù¬",
+ "plus_sign": "â€+",
+ "minus_sign": "â€-",
+ "percent_sign": "Ùª"
+} \ No newline at end of file
diff --git a/library/intl/resources/number_format/as.json b/library/intl/resources/number_format/as.json
new file mode 100644
index 000000000..ef4b5e798
--- /dev/null
+++ b/library/intl/resources/number_format/as.json
@@ -0,0 +1,7 @@
+{
+ "numbering_system": "beng",
+ "decimal_pattern": "#,##,##0.###",
+ "percent_pattern": "#,##,##0%",
+ "currency_pattern": "¤ #,##,##0.00",
+ "accounting_currency_pattern": "¤ #,##,##0.00"
+} \ No newline at end of file
diff --git a/library/intl/resources/number_format/asa.json b/library/intl/resources/number_format/asa.json
new file mode 100644
index 000000000..5ca4d4e1c
--- /dev/null
+++ b/library/intl/resources/number_format/asa.json
@@ -0,0 +1,7 @@
+{
+ "numbering_system": "latn",
+ "decimal_pattern": "#,##0.###",
+ "percent_pattern": "#,##0%",
+ "currency_pattern": "#,##0.00 ¤",
+ "accounting_currency_pattern": "#,##0.00 ¤"
+} \ No newline at end of file
diff --git a/library/intl/resources/number_format/ast.json b/library/intl/resources/number_format/ast.json
new file mode 100644
index 000000000..639e6c938
--- /dev/null
+++ b/library/intl/resources/number_format/ast.json
@@ -0,0 +1,9 @@
+{
+ "numbering_system": "latn",
+ "decimal_pattern": "#,##0.###",
+ "percent_pattern": "#,##0%",
+ "currency_pattern": "#,##0.00 ¤",
+ "accounting_currency_pattern": "#,##0.00 ¤",
+ "decimal_separator": ",",
+ "grouping_separator": "."
+} \ No newline at end of file
diff --git a/library/intl/resources/number_format/az.json b/library/intl/resources/number_format/az.json
new file mode 100644
index 000000000..f6e200db5
--- /dev/null
+++ b/library/intl/resources/number_format/az.json
@@ -0,0 +1,9 @@
+{
+ "numbering_system": "latn",
+ "decimal_pattern": "#,##0.###",
+ "percent_pattern": "#,##0%",
+ "currency_pattern": "¤ #,##0.00",
+ "accounting_currency_pattern": "¤ #,##0.00",
+ "decimal_separator": ",",
+ "grouping_separator": "."
+} \ No newline at end of file
diff --git a/library/intl/resources/number_format/bas.json b/library/intl/resources/number_format/bas.json
new file mode 100644
index 000000000..e7aecc094
--- /dev/null
+++ b/library/intl/resources/number_format/bas.json
@@ -0,0 +1,9 @@
+{
+ "numbering_system": "latn",
+ "decimal_pattern": "#,##0.###",
+ "percent_pattern": "#,##0 %",
+ "currency_pattern": "#,##0.00 ¤",
+ "accounting_currency_pattern": "#,##0.00 ¤",
+ "decimal_separator": ",",
+ "grouping_separator": " "
+} \ No newline at end of file
diff --git a/library/intl/resources/number_format/be.json b/library/intl/resources/number_format/be.json
new file mode 100644
index 000000000..a17a8c14d
--- /dev/null
+++ b/library/intl/resources/number_format/be.json
@@ -0,0 +1,9 @@
+{
+ "numbering_system": "latn",
+ "decimal_pattern": "#,##0.###",
+ "percent_pattern": "#,##0%",
+ "currency_pattern": "¤#,##0.00",
+ "accounting_currency_pattern": "¤#,##0.00",
+ "decimal_separator": ",",
+ "grouping_separator": " "
+} \ No newline at end of file
diff --git a/library/intl/resources/number_format/bem.json b/library/intl/resources/number_format/bem.json
new file mode 100644
index 000000000..ff3ecbde6
--- /dev/null
+++ b/library/intl/resources/number_format/bem.json
@@ -0,0 +1,7 @@
+{
+ "numbering_system": "latn",
+ "decimal_pattern": "#,##0.###",
+ "percent_pattern": "#,##0%",
+ "currency_pattern": "¤#,##0.00",
+ "accounting_currency_pattern": "¤#,##0.00;(¤#,##0.00)"
+} \ No newline at end of file
diff --git a/library/intl/resources/number_format/bez.json b/library/intl/resources/number_format/bez.json
new file mode 100644
index 000000000..c00aa2b2f
--- /dev/null
+++ b/library/intl/resources/number_format/bez.json
@@ -0,0 +1,7 @@
+{
+ "numbering_system": "latn",
+ "decimal_pattern": "#,##0.###",
+ "percent_pattern": "#,##0%",
+ "currency_pattern": "#,##0.00¤",
+ "accounting_currency_pattern": "#,##0.00¤"
+} \ No newline at end of file
diff --git a/library/intl/resources/number_format/bg.json b/library/intl/resources/number_format/bg.json
new file mode 100644
index 000000000..d72bc1232
--- /dev/null
+++ b/library/intl/resources/number_format/bg.json
@@ -0,0 +1,9 @@
+{
+ "numbering_system": "latn",
+ "decimal_pattern": "#,##0.###",
+ "percent_pattern": "#,##0%",
+ "currency_pattern": "#,##0.00 ¤",
+ "accounting_currency_pattern": "#,##0.00 ¤;(#,##0.00 ¤)",
+ "decimal_separator": ",",
+ "grouping_separator": " "
+} \ No newline at end of file
diff --git a/library/intl/resources/number_format/bm.json b/library/intl/resources/number_format/bm.json
new file mode 100644
index 000000000..ff3ecbde6
--- /dev/null
+++ b/library/intl/resources/number_format/bm.json
@@ -0,0 +1,7 @@
+{
+ "numbering_system": "latn",
+ "decimal_pattern": "#,##0.###",
+ "percent_pattern": "#,##0%",
+ "currency_pattern": "¤#,##0.00",
+ "accounting_currency_pattern": "¤#,##0.00;(¤#,##0.00)"
+} \ No newline at end of file
diff --git a/library/intl/resources/number_format/bn.json b/library/intl/resources/number_format/bn.json
new file mode 100644
index 000000000..af72c4966
--- /dev/null
+++ b/library/intl/resources/number_format/bn.json
@@ -0,0 +1,7 @@
+{
+ "numbering_system": "beng",
+ "decimal_pattern": "#,##,##0.###",
+ "percent_pattern": "#,##,##0%",
+ "currency_pattern": "#,##,##0.00¤",
+ "accounting_currency_pattern": "#,##,##0.00¤;(#,##,##0.00¤)"
+} \ No newline at end of file
diff --git a/library/intl/resources/number_format/bo.json b/library/intl/resources/number_format/bo.json
new file mode 100644
index 000000000..76f3ddcb5
--- /dev/null
+++ b/library/intl/resources/number_format/bo.json
@@ -0,0 +1,7 @@
+{
+ "numbering_system": "latn",
+ "decimal_pattern": "#,##0.###",
+ "percent_pattern": "#,##0%",
+ "currency_pattern": "¤ #,##0.00",
+ "accounting_currency_pattern": "¤ #,##0.00"
+} \ No newline at end of file
diff --git a/library/intl/resources/number_format/br.json b/library/intl/resources/number_format/br.json
new file mode 100644
index 000000000..e7aecc094
--- /dev/null
+++ b/library/intl/resources/number_format/br.json
@@ -0,0 +1,9 @@
+{
+ "numbering_system": "latn",
+ "decimal_pattern": "#,##0.###",
+ "percent_pattern": "#,##0 %",
+ "currency_pattern": "#,##0.00 ¤",
+ "accounting_currency_pattern": "#,##0.00 ¤",
+ "decimal_separator": ",",
+ "grouping_separator": " "
+} \ No newline at end of file
diff --git a/library/intl/resources/number_format/brx.json b/library/intl/resources/number_format/brx.json
new file mode 100644
index 000000000..2007f4fb6
--- /dev/null
+++ b/library/intl/resources/number_format/brx.json
@@ -0,0 +1,7 @@
+{
+ "numbering_system": "latn",
+ "decimal_pattern": "#,##,##0.###",
+ "percent_pattern": "#,##,##0%",
+ "currency_pattern": "¤ #,##,##0.00",
+ "accounting_currency_pattern": "¤ #,##,##0.00"
+} \ No newline at end of file
diff --git a/library/intl/resources/number_format/bs.json b/library/intl/resources/number_format/bs.json
new file mode 100644
index 000000000..639e6c938
--- /dev/null
+++ b/library/intl/resources/number_format/bs.json
@@ -0,0 +1,9 @@
+{
+ "numbering_system": "latn",
+ "decimal_pattern": "#,##0.###",
+ "percent_pattern": "#,##0%",
+ "currency_pattern": "#,##0.00 ¤",
+ "accounting_currency_pattern": "#,##0.00 ¤",
+ "decimal_separator": ",",
+ "grouping_separator": "."
+} \ No newline at end of file
diff --git a/library/intl/resources/number_format/ca.json b/library/intl/resources/number_format/ca.json
new file mode 100644
index 000000000..d79067fe7
--- /dev/null
+++ b/library/intl/resources/number_format/ca.json
@@ -0,0 +1,9 @@
+{
+ "numbering_system": "latn",
+ "decimal_pattern": "#,##0.###",
+ "percent_pattern": "#,##0%",
+ "currency_pattern": "#,##0.00 ¤",
+ "accounting_currency_pattern": "#,##0.00 ¤;(#,##0.00 ¤)",
+ "decimal_separator": ",",
+ "grouping_separator": "."
+} \ No newline at end of file
diff --git a/library/intl/resources/number_format/cgg.json b/library/intl/resources/number_format/cgg.json
new file mode 100644
index 000000000..a3f7208e2
--- /dev/null
+++ b/library/intl/resources/number_format/cgg.json
@@ -0,0 +1,7 @@
+{
+ "numbering_system": "latn",
+ "decimal_pattern": "#,##0.###",
+ "percent_pattern": "#,##0%",
+ "currency_pattern": "¤#,##0.00",
+ "accounting_currency_pattern": "¤#,##0.00"
+} \ No newline at end of file
diff --git a/library/intl/resources/number_format/chr.json b/library/intl/resources/number_format/chr.json
new file mode 100644
index 000000000..ff3ecbde6
--- /dev/null
+++ b/library/intl/resources/number_format/chr.json
@@ -0,0 +1,7 @@
+{
+ "numbering_system": "latn",
+ "decimal_pattern": "#,##0.###",
+ "percent_pattern": "#,##0%",
+ "currency_pattern": "¤#,##0.00",
+ "accounting_currency_pattern": "¤#,##0.00;(¤#,##0.00)"
+} \ No newline at end of file
diff --git a/library/intl/resources/number_format/cs.json b/library/intl/resources/number_format/cs.json
new file mode 100644
index 000000000..e7aecc094
--- /dev/null
+++ b/library/intl/resources/number_format/cs.json
@@ -0,0 +1,9 @@
+{
+ "numbering_system": "latn",
+ "decimal_pattern": "#,##0.###",
+ "percent_pattern": "#,##0 %",
+ "currency_pattern": "#,##0.00 ¤",
+ "accounting_currency_pattern": "#,##0.00 ¤",
+ "decimal_separator": ",",
+ "grouping_separator": " "
+} \ No newline at end of file
diff --git a/library/intl/resources/number_format/cy.json b/library/intl/resources/number_format/cy.json
new file mode 100644
index 000000000..ff3ecbde6
--- /dev/null
+++ b/library/intl/resources/number_format/cy.json
@@ -0,0 +1,7 @@
+{
+ "numbering_system": "latn",
+ "decimal_pattern": "#,##0.###",
+ "percent_pattern": "#,##0%",
+ "currency_pattern": "¤#,##0.00",
+ "accounting_currency_pattern": "¤#,##0.00;(¤#,##0.00)"
+} \ No newline at end of file
diff --git a/library/intl/resources/number_format/da.json b/library/intl/resources/number_format/da.json
new file mode 100644
index 000000000..59241b7e7
--- /dev/null
+++ b/library/intl/resources/number_format/da.json
@@ -0,0 +1,9 @@
+{
+ "numbering_system": "latn",
+ "decimal_pattern": "#,##0.###",
+ "percent_pattern": "#,##0 %",
+ "currency_pattern": "#,##0.00 ¤",
+ "accounting_currency_pattern": "#,##0.00 ¤",
+ "decimal_separator": ",",
+ "grouping_separator": "."
+} \ No newline at end of file
diff --git a/library/intl/resources/number_format/dav.json b/library/intl/resources/number_format/dav.json
new file mode 100644
index 000000000..ff3ecbde6
--- /dev/null
+++ b/library/intl/resources/number_format/dav.json
@@ -0,0 +1,7 @@
+{
+ "numbering_system": "latn",
+ "decimal_pattern": "#,##0.###",
+ "percent_pattern": "#,##0%",
+ "currency_pattern": "¤#,##0.00",
+ "accounting_currency_pattern": "¤#,##0.00;(¤#,##0.00)"
+} \ No newline at end of file
diff --git a/library/intl/resources/number_format/de-AT.json b/library/intl/resources/number_format/de-AT.json
new file mode 100644
index 000000000..9e2fdafca
--- /dev/null
+++ b/library/intl/resources/number_format/de-AT.json
@@ -0,0 +1,9 @@
+{
+ "numbering_system": "latn",
+ "decimal_pattern": "#,##0.###",
+ "percent_pattern": "#,##0 %",
+ "currency_pattern": "¤ #,##0.00",
+ "accounting_currency_pattern": "#,##0.00 ¤",
+ "decimal_separator": ",",
+ "grouping_separator": "."
+} \ No newline at end of file
diff --git a/library/intl/resources/number_format/de-CH.json b/library/intl/resources/number_format/de-CH.json
new file mode 100644
index 000000000..0cdba3d23
--- /dev/null
+++ b/library/intl/resources/number_format/de-CH.json
@@ -0,0 +1,8 @@
+{
+ "numbering_system": "latn",
+ "decimal_pattern": "#,##0.###",
+ "percent_pattern": "#,##0 %",
+ "currency_pattern": "¤ #,##0.00;¤-#,##0.00",
+ "accounting_currency_pattern": "#,##0.00 ¤",
+ "grouping_separator": "'"
+} \ No newline at end of file
diff --git a/library/intl/resources/number_format/de-LI.json b/library/intl/resources/number_format/de-LI.json
new file mode 100644
index 000000000..b353ac425
--- /dev/null
+++ b/library/intl/resources/number_format/de-LI.json
@@ -0,0 +1,8 @@
+{
+ "numbering_system": "latn",
+ "decimal_pattern": "#,##0.###",
+ "percent_pattern": "#,##0 %",
+ "currency_pattern": "¤ #,##0.00",
+ "accounting_currency_pattern": "#,##0.00 ¤",
+ "grouping_separator": "'"
+} \ No newline at end of file
diff --git a/library/intl/resources/number_format/de.json b/library/intl/resources/number_format/de.json
new file mode 100644
index 000000000..59241b7e7
--- /dev/null
+++ b/library/intl/resources/number_format/de.json
@@ -0,0 +1,9 @@
+{
+ "numbering_system": "latn",
+ "decimal_pattern": "#,##0.###",
+ "percent_pattern": "#,##0 %",
+ "currency_pattern": "#,##0.00 ¤",
+ "accounting_currency_pattern": "#,##0.00 ¤",
+ "decimal_separator": ",",
+ "grouping_separator": "."
+} \ No newline at end of file
diff --git a/library/intl/resources/number_format/dje.json b/library/intl/resources/number_format/dje.json
new file mode 100644
index 000000000..23ba53115
--- /dev/null
+++ b/library/intl/resources/number_format/dje.json
@@ -0,0 +1,8 @@
+{
+ "numbering_system": "latn",
+ "decimal_pattern": "#,##0.###",
+ "percent_pattern": "#,##0%",
+ "currency_pattern": "#,##0.00¤",
+ "accounting_currency_pattern": "#,##0.00¤",
+ "grouping_separator": " "
+} \ No newline at end of file
diff --git a/library/intl/resources/number_format/dsb.json b/library/intl/resources/number_format/dsb.json
new file mode 100644
index 000000000..59241b7e7
--- /dev/null
+++ b/library/intl/resources/number_format/dsb.json
@@ -0,0 +1,9 @@
+{
+ "numbering_system": "latn",
+ "decimal_pattern": "#,##0.###",
+ "percent_pattern": "#,##0 %",
+ "currency_pattern": "#,##0.00 ¤",
+ "accounting_currency_pattern": "#,##0.00 ¤",
+ "decimal_separator": ",",
+ "grouping_separator": "."
+} \ No newline at end of file
diff --git a/library/intl/resources/number_format/dua.json b/library/intl/resources/number_format/dua.json
new file mode 100644
index 000000000..e7aecc094
--- /dev/null
+++ b/library/intl/resources/number_format/dua.json
@@ -0,0 +1,9 @@
+{
+ "numbering_system": "latn",
+ "decimal_pattern": "#,##0.###",
+ "percent_pattern": "#,##0 %",
+ "currency_pattern": "#,##0.00 ¤",
+ "accounting_currency_pattern": "#,##0.00 ¤",
+ "decimal_separator": ",",
+ "grouping_separator": " "
+} \ No newline at end of file
diff --git a/library/intl/resources/number_format/dyo.json b/library/intl/resources/number_format/dyo.json
new file mode 100644
index 000000000..dde2cfe27
--- /dev/null
+++ b/library/intl/resources/number_format/dyo.json
@@ -0,0 +1,9 @@
+{
+ "numbering_system": "latn",
+ "decimal_pattern": "#,##0.###",
+ "percent_pattern": "#,##0%",
+ "currency_pattern": "#,##0.00 ¤",
+ "accounting_currency_pattern": "#,##0.00 ¤",
+ "decimal_separator": ",",
+ "grouping_separator": " "
+} \ No newline at end of file
diff --git a/library/intl/resources/number_format/dz.json b/library/intl/resources/number_format/dz.json
new file mode 100644
index 000000000..4e78d7725
--- /dev/null
+++ b/library/intl/resources/number_format/dz.json
@@ -0,0 +1,7 @@
+{
+ "numbering_system": "latn",
+ "decimal_pattern": "#,##,##0.###",
+ "percent_pattern": "#,##,##0 %",
+ "currency_pattern": "¤#,##,##0.00",
+ "accounting_currency_pattern": "¤#,##,##0.00"
+} \ No newline at end of file
diff --git a/library/intl/resources/number_format/ebu.json b/library/intl/resources/number_format/ebu.json
new file mode 100644
index 000000000..ff3ecbde6
--- /dev/null
+++ b/library/intl/resources/number_format/ebu.json
@@ -0,0 +1,7 @@
+{
+ "numbering_system": "latn",
+ "decimal_pattern": "#,##0.###",
+ "percent_pattern": "#,##0%",
+ "currency_pattern": "¤#,##0.00",
+ "accounting_currency_pattern": "¤#,##0.00;(¤#,##0.00)"
+} \ No newline at end of file
diff --git a/library/intl/resources/number_format/ee.json b/library/intl/resources/number_format/ee.json
new file mode 100644
index 000000000..ff3ecbde6
--- /dev/null
+++ b/library/intl/resources/number_format/ee.json
@@ -0,0 +1,7 @@
+{
+ "numbering_system": "latn",
+ "decimal_pattern": "#,##0.###",
+ "percent_pattern": "#,##0%",
+ "currency_pattern": "¤#,##0.00",
+ "accounting_currency_pattern": "¤#,##0.00;(¤#,##0.00)"
+} \ No newline at end of file
diff --git a/library/intl/resources/number_format/el-CY.json b/library/intl/resources/number_format/el-CY.json
new file mode 100644
index 000000000..e87fb64f0
--- /dev/null
+++ b/library/intl/resources/number_format/el-CY.json
@@ -0,0 +1,9 @@
+{
+ "numbering_system": "latn",
+ "decimal_pattern": "#,##0.###",
+ "percent_pattern": "#,##0%",
+ "currency_pattern": "¤#,##0.00",
+ "accounting_currency_pattern": "¤#,##0.00;(¤#,##0.00)",
+ "decimal_separator": ",",
+ "grouping_separator": "."
+} \ No newline at end of file
diff --git a/library/intl/resources/number_format/el.json b/library/intl/resources/number_format/el.json
new file mode 100644
index 000000000..a951f7d15
--- /dev/null
+++ b/library/intl/resources/number_format/el.json
@@ -0,0 +1,9 @@
+{
+ "numbering_system": "latn",
+ "decimal_pattern": "#,##0.###",
+ "percent_pattern": "#,##0%",
+ "currency_pattern": "#,##0.00 ¤",
+ "accounting_currency_pattern": "¤#,##0.00;(¤#,##0.00)",
+ "decimal_separator": ",",
+ "grouping_separator": "."
+} \ No newline at end of file
diff --git a/library/intl/resources/number_format/en-BE.json b/library/intl/resources/number_format/en-BE.json
new file mode 100644
index 000000000..a951f7d15
--- /dev/null
+++ b/library/intl/resources/number_format/en-BE.json
@@ -0,0 +1,9 @@
+{
+ "numbering_system": "latn",
+ "decimal_pattern": "#,##0.###",
+ "percent_pattern": "#,##0%",
+ "currency_pattern": "#,##0.00 ¤",
+ "accounting_currency_pattern": "¤#,##0.00;(¤#,##0.00)",
+ "decimal_separator": ",",
+ "grouping_separator": "."
+} \ No newline at end of file
diff --git a/library/intl/resources/number_format/en-IN.json b/library/intl/resources/number_format/en-IN.json
new file mode 100644
index 000000000..816eff469
--- /dev/null
+++ b/library/intl/resources/number_format/en-IN.json
@@ -0,0 +1,7 @@
+{
+ "numbering_system": "latn",
+ "decimal_pattern": "#,##,##0.###",
+ "percent_pattern": "#,##,##0%",
+ "currency_pattern": "¤ #,##,##0.00",
+ "accounting_currency_pattern": "¤#,##0.00;(¤#,##0.00)"
+} \ No newline at end of file
diff --git a/library/intl/resources/number_format/en-PK.json b/library/intl/resources/number_format/en-PK.json
new file mode 100644
index 000000000..816eff469
--- /dev/null
+++ b/library/intl/resources/number_format/en-PK.json
@@ -0,0 +1,7 @@
+{
+ "numbering_system": "latn",
+ "decimal_pattern": "#,##,##0.###",
+ "percent_pattern": "#,##,##0%",
+ "currency_pattern": "¤ #,##,##0.00",
+ "accounting_currency_pattern": "¤#,##0.00;(¤#,##0.00)"
+} \ No newline at end of file
diff --git a/library/intl/resources/number_format/en-ZA.json b/library/intl/resources/number_format/en-ZA.json
new file mode 100644
index 000000000..198b1e963
--- /dev/null
+++ b/library/intl/resources/number_format/en-ZA.json
@@ -0,0 +1,9 @@
+{
+ "numbering_system": "latn",
+ "decimal_pattern": "#,##0.###",
+ "percent_pattern": "#,##0%",
+ "currency_pattern": "¤#,##0.00",
+ "accounting_currency_pattern": "¤#,##0.00;(¤#,##0.00)",
+ "decimal_separator": ",",
+ "grouping_separator": " "
+} \ No newline at end of file
diff --git a/library/intl/resources/number_format/en.json b/library/intl/resources/number_format/en.json
new file mode 100644
index 000000000..ff3ecbde6
--- /dev/null
+++ b/library/intl/resources/number_format/en.json
@@ -0,0 +1,7 @@
+{
+ "numbering_system": "latn",
+ "decimal_pattern": "#,##0.###",
+ "percent_pattern": "#,##0%",
+ "currency_pattern": "¤#,##0.00",
+ "accounting_currency_pattern": "¤#,##0.00;(¤#,##0.00)"
+} \ No newline at end of file
diff --git a/library/intl/resources/number_format/eo.json b/library/intl/resources/number_format/eo.json
new file mode 100644
index 000000000..011b800c1
--- /dev/null
+++ b/library/intl/resources/number_format/eo.json
@@ -0,0 +1,10 @@
+{
+ "numbering_system": "latn",
+ "decimal_pattern": "#,##0.###",
+ "percent_pattern": "#,##0%",
+ "currency_pattern": "¤ #,##0.00",
+ "accounting_currency_pattern": "¤ #,##0.00",
+ "decimal_separator": ",",
+ "grouping_separator": " ",
+ "minus_sign": "−"
+} \ No newline at end of file
diff --git a/library/intl/resources/number_format/es-AR.json b/library/intl/resources/number_format/es-AR.json
new file mode 100644
index 000000000..43bdea5e3
--- /dev/null
+++ b/library/intl/resources/number_format/es-AR.json
@@ -0,0 +1,9 @@
+{
+ "numbering_system": "latn",
+ "decimal_pattern": "#,##0.###",
+ "percent_pattern": "#,##0 %",
+ "currency_pattern": "¤#,##0.00",
+ "accounting_currency_pattern": "#,##0.00 ¤",
+ "decimal_separator": ",",
+ "grouping_separator": "."
+} \ No newline at end of file
diff --git a/library/intl/resources/number_format/es-BO.json b/library/intl/resources/number_format/es-BO.json
new file mode 100644
index 000000000..43bdea5e3
--- /dev/null
+++ b/library/intl/resources/number_format/es-BO.json
@@ -0,0 +1,9 @@
+{
+ "numbering_system": "latn",
+ "decimal_pattern": "#,##0.###",
+ "percent_pattern": "#,##0 %",
+ "currency_pattern": "¤#,##0.00",
+ "accounting_currency_pattern": "#,##0.00 ¤",
+ "decimal_separator": ",",
+ "grouping_separator": "."
+} \ No newline at end of file
diff --git a/library/intl/resources/number_format/es-CL.json b/library/intl/resources/number_format/es-CL.json
new file mode 100644
index 000000000..69b541b5c
--- /dev/null
+++ b/library/intl/resources/number_format/es-CL.json
@@ -0,0 +1,9 @@
+{
+ "numbering_system": "latn",
+ "decimal_pattern": "#,##0.###",
+ "percent_pattern": "#,##0 %",
+ "currency_pattern": "¤#,##0.00;¤-#,##0.00",
+ "accounting_currency_pattern": "#,##0.00 ¤",
+ "decimal_separator": ",",
+ "grouping_separator": "."
+} \ No newline at end of file
diff --git a/library/intl/resources/number_format/es-CO.json b/library/intl/resources/number_format/es-CO.json
new file mode 100644
index 000000000..43bdea5e3
--- /dev/null
+++ b/library/intl/resources/number_format/es-CO.json
@@ -0,0 +1,9 @@
+{
+ "numbering_system": "latn",
+ "decimal_pattern": "#,##0.###",
+ "percent_pattern": "#,##0 %",
+ "currency_pattern": "¤#,##0.00",
+ "accounting_currency_pattern": "#,##0.00 ¤",
+ "decimal_separator": ",",
+ "grouping_separator": "."
+} \ No newline at end of file
diff --git a/library/intl/resources/number_format/es-CR.json b/library/intl/resources/number_format/es-CR.json
new file mode 100644
index 000000000..43bdea5e3
--- /dev/null
+++ b/library/intl/resources/number_format/es-CR.json
@@ -0,0 +1,9 @@
+{
+ "numbering_system": "latn",
+ "decimal_pattern": "#,##0.###",
+ "percent_pattern": "#,##0 %",
+ "currency_pattern": "¤#,##0.00",
+ "accounting_currency_pattern": "#,##0.00 ¤",
+ "decimal_separator": ",",
+ "grouping_separator": "."
+} \ No newline at end of file
diff --git a/library/intl/resources/number_format/es-CU.json b/library/intl/resources/number_format/es-CU.json
new file mode 100644
index 000000000..73f8db055
--- /dev/null
+++ b/library/intl/resources/number_format/es-CU.json
@@ -0,0 +1,7 @@
+{
+ "numbering_system": "latn",
+ "decimal_pattern": "#,##0.###",
+ "percent_pattern": "#,##0 %",
+ "currency_pattern": "¤#,##0.00",
+ "accounting_currency_pattern": "#,##0.00 ¤"
+} \ No newline at end of file
diff --git a/library/intl/resources/number_format/es-DO.json b/library/intl/resources/number_format/es-DO.json
new file mode 100644
index 000000000..73f8db055
--- /dev/null
+++ b/library/intl/resources/number_format/es-DO.json
@@ -0,0 +1,7 @@
+{
+ "numbering_system": "latn",
+ "decimal_pattern": "#,##0.###",
+ "percent_pattern": "#,##0 %",
+ "currency_pattern": "¤#,##0.00",
+ "accounting_currency_pattern": "#,##0.00 ¤"
+} \ No newline at end of file
diff --git a/library/intl/resources/number_format/es-EC.json b/library/intl/resources/number_format/es-EC.json
new file mode 100644
index 000000000..69b541b5c
--- /dev/null
+++ b/library/intl/resources/number_format/es-EC.json
@@ -0,0 +1,9 @@
+{
+ "numbering_system": "latn",
+ "decimal_pattern": "#,##0.###",
+ "percent_pattern": "#,##0 %",
+ "currency_pattern": "¤#,##0.00;¤-#,##0.00",
+ "accounting_currency_pattern": "#,##0.00 ¤",
+ "decimal_separator": ",",
+ "grouping_separator": "."
+} \ No newline at end of file
diff --git a/library/intl/resources/number_format/es-GQ.json b/library/intl/resources/number_format/es-GQ.json
new file mode 100644
index 000000000..43bdea5e3
--- /dev/null
+++ b/library/intl/resources/number_format/es-GQ.json
@@ -0,0 +1,9 @@
+{
+ "numbering_system": "latn",
+ "decimal_pattern": "#,##0.###",
+ "percent_pattern": "#,##0 %",
+ "currency_pattern": "¤#,##0.00",
+ "accounting_currency_pattern": "#,##0.00 ¤",
+ "decimal_separator": ",",
+ "grouping_separator": "."
+} \ No newline at end of file
diff --git a/library/intl/resources/number_format/es-GT.json b/library/intl/resources/number_format/es-GT.json
new file mode 100644
index 000000000..73f8db055
--- /dev/null
+++ b/library/intl/resources/number_format/es-GT.json
@@ -0,0 +1,7 @@
+{
+ "numbering_system": "latn",
+ "decimal_pattern": "#,##0.###",
+ "percent_pattern": "#,##0 %",
+ "currency_pattern": "¤#,##0.00",
+ "accounting_currency_pattern": "#,##0.00 ¤"
+} \ No newline at end of file
diff --git a/library/intl/resources/number_format/es-HN.json b/library/intl/resources/number_format/es-HN.json
new file mode 100644
index 000000000..73f8db055
--- /dev/null
+++ b/library/intl/resources/number_format/es-HN.json
@@ -0,0 +1,7 @@
+{
+ "numbering_system": "latn",
+ "decimal_pattern": "#,##0.###",
+ "percent_pattern": "#,##0 %",
+ "currency_pattern": "¤#,##0.00",
+ "accounting_currency_pattern": "#,##0.00 ¤"
+} \ No newline at end of file
diff --git a/library/intl/resources/number_format/es-MX.json b/library/intl/resources/number_format/es-MX.json
new file mode 100644
index 000000000..ed01495e9
--- /dev/null
+++ b/library/intl/resources/number_format/es-MX.json
@@ -0,0 +1,7 @@
+{
+ "numbering_system": "latn",
+ "decimal_pattern": "#,##0.###",
+ "percent_pattern": "#,##0%",
+ "currency_pattern": "¤#,##0.00",
+ "accounting_currency_pattern": "#,##0.00 ¤"
+} \ No newline at end of file
diff --git a/library/intl/resources/number_format/es-NI.json b/library/intl/resources/number_format/es-NI.json
new file mode 100644
index 000000000..73f8db055
--- /dev/null
+++ b/library/intl/resources/number_format/es-NI.json
@@ -0,0 +1,7 @@
+{
+ "numbering_system": "latn",
+ "decimal_pattern": "#,##0.###",
+ "percent_pattern": "#,##0 %",
+ "currency_pattern": "¤#,##0.00",
+ "accounting_currency_pattern": "#,##0.00 ¤"
+} \ No newline at end of file
diff --git a/library/intl/resources/number_format/es-PA.json b/library/intl/resources/number_format/es-PA.json
new file mode 100644
index 000000000..73f8db055
--- /dev/null
+++ b/library/intl/resources/number_format/es-PA.json
@@ -0,0 +1,7 @@
+{
+ "numbering_system": "latn",
+ "decimal_pattern": "#,##0.###",
+ "percent_pattern": "#,##0 %",
+ "currency_pattern": "¤#,##0.00",
+ "accounting_currency_pattern": "#,##0.00 ¤"
+} \ No newline at end of file
diff --git a/library/intl/resources/number_format/es-PE.json b/library/intl/resources/number_format/es-PE.json
new file mode 100644
index 000000000..73f8db055
--- /dev/null
+++ b/library/intl/resources/number_format/es-PE.json
@@ -0,0 +1,7 @@
+{
+ "numbering_system": "latn",
+ "decimal_pattern": "#,##0.###",
+ "percent_pattern": "#,##0 %",
+ "currency_pattern": "¤#,##0.00",
+ "accounting_currency_pattern": "#,##0.00 ¤"
+} \ No newline at end of file
diff --git a/library/intl/resources/number_format/es-PR.json b/library/intl/resources/number_format/es-PR.json
new file mode 100644
index 000000000..73f8db055
--- /dev/null
+++ b/library/intl/resources/number_format/es-PR.json
@@ -0,0 +1,7 @@
+{
+ "numbering_system": "latn",
+ "decimal_pattern": "#,##0.###",
+ "percent_pattern": "#,##0 %",
+ "currency_pattern": "¤#,##0.00",
+ "accounting_currency_pattern": "#,##0.00 ¤"
+} \ No newline at end of file
diff --git a/library/intl/resources/number_format/es-PY.json b/library/intl/resources/number_format/es-PY.json
new file mode 100644
index 000000000..ed88c9cf4
--- /dev/null
+++ b/library/intl/resources/number_format/es-PY.json
@@ -0,0 +1,9 @@
+{
+ "numbering_system": "latn",
+ "decimal_pattern": "#,##0.###",
+ "percent_pattern": "#,##0 %",
+ "currency_pattern": "¤ #,##0.00;¤ -#,##0.00",
+ "accounting_currency_pattern": "#,##0.00 ¤",
+ "decimal_separator": ",",
+ "grouping_separator": "."
+} \ No newline at end of file
diff --git a/library/intl/resources/number_format/es-SV.json b/library/intl/resources/number_format/es-SV.json
new file mode 100644
index 000000000..73f8db055
--- /dev/null
+++ b/library/intl/resources/number_format/es-SV.json
@@ -0,0 +1,7 @@
+{
+ "numbering_system": "latn",
+ "decimal_pattern": "#,##0.###",
+ "percent_pattern": "#,##0 %",
+ "currency_pattern": "¤#,##0.00",
+ "accounting_currency_pattern": "#,##0.00 ¤"
+} \ No newline at end of file
diff --git a/library/intl/resources/number_format/es-US.json b/library/intl/resources/number_format/es-US.json
new file mode 100644
index 000000000..73f8db055
--- /dev/null
+++ b/library/intl/resources/number_format/es-US.json
@@ -0,0 +1,7 @@
+{
+ "numbering_system": "latn",
+ "decimal_pattern": "#,##0.###",
+ "percent_pattern": "#,##0 %",
+ "currency_pattern": "¤#,##0.00",
+ "accounting_currency_pattern": "#,##0.00 ¤"
+} \ No newline at end of file
diff --git a/library/intl/resources/number_format/es-UY.json b/library/intl/resources/number_format/es-UY.json
new file mode 100644
index 000000000..d7fbe51cd
--- /dev/null
+++ b/library/intl/resources/number_format/es-UY.json
@@ -0,0 +1,9 @@
+{
+ "numbering_system": "latn",
+ "decimal_pattern": "#,##0.###",
+ "percent_pattern": "#,##0 %",
+ "currency_pattern": "¤ #,##0.00",
+ "accounting_currency_pattern": "¤ #,##0.00;(¤ #,##0.00)",
+ "decimal_separator": ",",
+ "grouping_separator": "."
+} \ No newline at end of file
diff --git a/library/intl/resources/number_format/es-VE.json b/library/intl/resources/number_format/es-VE.json
new file mode 100644
index 000000000..69b541b5c
--- /dev/null
+++ b/library/intl/resources/number_format/es-VE.json
@@ -0,0 +1,9 @@
+{
+ "numbering_system": "latn",
+ "decimal_pattern": "#,##0.###",
+ "percent_pattern": "#,##0 %",
+ "currency_pattern": "¤#,##0.00;¤-#,##0.00",
+ "accounting_currency_pattern": "#,##0.00 ¤",
+ "decimal_separator": ",",
+ "grouping_separator": "."
+} \ No newline at end of file
diff --git a/library/intl/resources/number_format/es.json b/library/intl/resources/number_format/es.json
new file mode 100644
index 000000000..59241b7e7
--- /dev/null
+++ b/library/intl/resources/number_format/es.json
@@ -0,0 +1,9 @@
+{
+ "numbering_system": "latn",
+ "decimal_pattern": "#,##0.###",
+ "percent_pattern": "#,##0 %",
+ "currency_pattern": "#,##0.00 ¤",
+ "accounting_currency_pattern": "#,##0.00 ¤",
+ "decimal_separator": ",",
+ "grouping_separator": "."
+} \ No newline at end of file
diff --git a/library/intl/resources/number_format/et.json b/library/intl/resources/number_format/et.json
new file mode 100644
index 000000000..d72bc1232
--- /dev/null
+++ b/library/intl/resources/number_format/et.json
@@ -0,0 +1,9 @@
+{
+ "numbering_system": "latn",
+ "decimal_pattern": "#,##0.###",
+ "percent_pattern": "#,##0%",
+ "currency_pattern": "#,##0.00 ¤",
+ "accounting_currency_pattern": "#,##0.00 ¤;(#,##0.00 ¤)",
+ "decimal_separator": ",",
+ "grouping_separator": " "
+} \ No newline at end of file
diff --git a/library/intl/resources/number_format/eu.json b/library/intl/resources/number_format/eu.json
new file mode 100644
index 000000000..d633ea283
--- /dev/null
+++ b/library/intl/resources/number_format/eu.json
@@ -0,0 +1,9 @@
+{
+ "numbering_system": "latn",
+ "decimal_pattern": "#,##0.###",
+ "percent_pattern": "% #,##0",
+ "currency_pattern": "#,##0.00 ¤",
+ "accounting_currency_pattern": "#,##0.00 ¤;(#,##0.00 ¤)",
+ "decimal_separator": ",",
+ "grouping_separator": "."
+} \ No newline at end of file
diff --git a/library/intl/resources/number_format/ewo.json b/library/intl/resources/number_format/ewo.json
new file mode 100644
index 000000000..dde2cfe27
--- /dev/null
+++ b/library/intl/resources/number_format/ewo.json
@@ -0,0 +1,9 @@
+{
+ "numbering_system": "latn",
+ "decimal_pattern": "#,##0.###",
+ "percent_pattern": "#,##0%",
+ "currency_pattern": "#,##0.00 ¤",
+ "accounting_currency_pattern": "#,##0.00 ¤",
+ "decimal_separator": ",",
+ "grouping_separator": " "
+} \ No newline at end of file
diff --git a/library/intl/resources/number_format/fa.json b/library/intl/resources/number_format/fa.json
new file mode 100644
index 000000000..26a1017a3
--- /dev/null
+++ b/library/intl/resources/number_format/fa.json
@@ -0,0 +1,12 @@
+{
+ "numbering_system": "arabext",
+ "decimal_pattern": "#,##0.###",
+ "percent_pattern": "#,##0%",
+ "currency_pattern": "‎¤#,##0.00",
+ "accounting_currency_pattern": "‎¤#,##0.00;‎(¤#,##0.00)",
+ "decimal_separator": "Ù«",
+ "grouping_separator": "Ù¬",
+ "plus_sign": "‎+‎",
+ "minus_sign": "‎−",
+ "percent_sign": "Ùª"
+} \ No newline at end of file
diff --git a/library/intl/resources/number_format/ff.json b/library/intl/resources/number_format/ff.json
new file mode 100644
index 000000000..dde2cfe27
--- /dev/null
+++ b/library/intl/resources/number_format/ff.json
@@ -0,0 +1,9 @@
+{
+ "numbering_system": "latn",
+ "decimal_pattern": "#,##0.###",
+ "percent_pattern": "#,##0%",
+ "currency_pattern": "#,##0.00 ¤",
+ "accounting_currency_pattern": "#,##0.00 ¤",
+ "decimal_separator": ",",
+ "grouping_separator": " "
+} \ No newline at end of file
diff --git a/library/intl/resources/number_format/fi.json b/library/intl/resources/number_format/fi.json
new file mode 100644
index 000000000..4c5b82818
--- /dev/null
+++ b/library/intl/resources/number_format/fi.json
@@ -0,0 +1,10 @@
+{
+ "numbering_system": "latn",
+ "decimal_pattern": "#,##0.###",
+ "percent_pattern": "#,##0 %",
+ "currency_pattern": "#,##0.00 ¤",
+ "accounting_currency_pattern": "#,##0.00 ¤",
+ "decimal_separator": ",",
+ "grouping_separator": " ",
+ "minus_sign": "−"
+} \ No newline at end of file
diff --git a/library/intl/resources/number_format/fil.json b/library/intl/resources/number_format/fil.json
new file mode 100644
index 000000000..ff3ecbde6
--- /dev/null
+++ b/library/intl/resources/number_format/fil.json
@@ -0,0 +1,7 @@
+{
+ "numbering_system": "latn",
+ "decimal_pattern": "#,##0.###",
+ "percent_pattern": "#,##0%",
+ "currency_pattern": "¤#,##0.00",
+ "accounting_currency_pattern": "¤#,##0.00;(¤#,##0.00)"
+} \ No newline at end of file
diff --git a/library/intl/resources/number_format/fo.json b/library/intl/resources/number_format/fo.json
new file mode 100644
index 000000000..c1e16e6dc
--- /dev/null
+++ b/library/intl/resources/number_format/fo.json
@@ -0,0 +1,10 @@
+{
+ "numbering_system": "latn",
+ "decimal_pattern": "#,##0.###",
+ "percent_pattern": "#,##0 %",
+ "currency_pattern": "¤#,##0.00;¤-#,##0.00",
+ "accounting_currency_pattern": "¤#,##0.00;¤-#,##0.00",
+ "decimal_separator": ",",
+ "grouping_separator": ".",
+ "minus_sign": "−"
+} \ No newline at end of file
diff --git a/library/intl/resources/number_format/fr-BE.json b/library/intl/resources/number_format/fr-BE.json
new file mode 100644
index 000000000..f4d872e5d
--- /dev/null
+++ b/library/intl/resources/number_format/fr-BE.json
@@ -0,0 +1,9 @@
+{
+ "numbering_system": "latn",
+ "decimal_pattern": "#,##0.###",
+ "percent_pattern": "#,##0 %",
+ "currency_pattern": "#,##0.00 ¤",
+ "accounting_currency_pattern": "#,##0.00 ¤;(#,##0.00 ¤)",
+ "decimal_separator": ",",
+ "grouping_separator": "."
+} \ No newline at end of file
diff --git a/library/intl/resources/number_format/fr-CH.json b/library/intl/resources/number_format/fr-CH.json
new file mode 100644
index 000000000..5dc15aabe
--- /dev/null
+++ b/library/intl/resources/number_format/fr-CH.json
@@ -0,0 +1,8 @@
+{
+ "numbering_system": "latn",
+ "decimal_pattern": "#,##0.###",
+ "percent_pattern": "#,##0 %",
+ "currency_pattern": "¤ #,##0.00;¤-#,##0.00",
+ "accounting_currency_pattern": "#,##0.00 ¤;(#,##0.00 ¤)",
+ "grouping_separator": " "
+} \ No newline at end of file
diff --git a/library/intl/resources/number_format/fr-LU.json b/library/intl/resources/number_format/fr-LU.json
new file mode 100644
index 000000000..f4d872e5d
--- /dev/null
+++ b/library/intl/resources/number_format/fr-LU.json
@@ -0,0 +1,9 @@
+{
+ "numbering_system": "latn",
+ "decimal_pattern": "#,##0.###",
+ "percent_pattern": "#,##0 %",
+ "currency_pattern": "#,##0.00 ¤",
+ "accounting_currency_pattern": "#,##0.00 ¤;(#,##0.00 ¤)",
+ "decimal_separator": ",",
+ "grouping_separator": "."
+} \ No newline at end of file
diff --git a/library/intl/resources/number_format/fr.json b/library/intl/resources/number_format/fr.json
new file mode 100644
index 000000000..5458fba77
--- /dev/null
+++ b/library/intl/resources/number_format/fr.json
@@ -0,0 +1,9 @@
+{
+ "numbering_system": "latn",
+ "decimal_pattern": "#,##0.###",
+ "percent_pattern": "#,##0 %",
+ "currency_pattern": "#,##0.00 ¤",
+ "accounting_currency_pattern": "#,##0.00 ¤;(#,##0.00 ¤)",
+ "decimal_separator": ",",
+ "grouping_separator": " "
+} \ No newline at end of file
diff --git a/library/intl/resources/number_format/fur.json b/library/intl/resources/number_format/fur.json
new file mode 100644
index 000000000..f6e200db5
--- /dev/null
+++ b/library/intl/resources/number_format/fur.json
@@ -0,0 +1,9 @@
+{
+ "numbering_system": "latn",
+ "decimal_pattern": "#,##0.###",
+ "percent_pattern": "#,##0%",
+ "currency_pattern": "¤ #,##0.00",
+ "accounting_currency_pattern": "¤ #,##0.00",
+ "decimal_separator": ",",
+ "grouping_separator": "."
+} \ No newline at end of file
diff --git a/library/intl/resources/number_format/fy.json b/library/intl/resources/number_format/fy.json
new file mode 100644
index 000000000..ff49eddc5
--- /dev/null
+++ b/library/intl/resources/number_format/fy.json
@@ -0,0 +1,9 @@
+{
+ "numbering_system": "latn",
+ "decimal_pattern": "#,##0.###",
+ "percent_pattern": "#,##0%",
+ "currency_pattern": "¤ #,##0.00;¤ #,##0.00-",
+ "accounting_currency_pattern": "¤ #,##0.00;(¤ #,##0.00)",
+ "decimal_separator": ",",
+ "grouping_separator": "."
+} \ No newline at end of file
diff --git a/library/intl/resources/number_format/ga.json b/library/intl/resources/number_format/ga.json
new file mode 100644
index 000000000..ff3ecbde6
--- /dev/null
+++ b/library/intl/resources/number_format/ga.json
@@ -0,0 +1,7 @@
+{
+ "numbering_system": "latn",
+ "decimal_pattern": "#,##0.###",
+ "percent_pattern": "#,##0%",
+ "currency_pattern": "¤#,##0.00",
+ "accounting_currency_pattern": "¤#,##0.00;(¤#,##0.00)"
+} \ No newline at end of file
diff --git a/library/intl/resources/number_format/gd.json b/library/intl/resources/number_format/gd.json
new file mode 100644
index 000000000..ff3ecbde6
--- /dev/null
+++ b/library/intl/resources/number_format/gd.json
@@ -0,0 +1,7 @@
+{
+ "numbering_system": "latn",
+ "decimal_pattern": "#,##0.###",
+ "percent_pattern": "#,##0%",
+ "currency_pattern": "¤#,##0.00",
+ "accounting_currency_pattern": "¤#,##0.00;(¤#,##0.00)"
+} \ No newline at end of file
diff --git a/library/intl/resources/number_format/gl.json b/library/intl/resources/number_format/gl.json
new file mode 100644
index 000000000..e87fb64f0
--- /dev/null
+++ b/library/intl/resources/number_format/gl.json
@@ -0,0 +1,9 @@
+{
+ "numbering_system": "latn",
+ "decimal_pattern": "#,##0.###",
+ "percent_pattern": "#,##0%",
+ "currency_pattern": "¤#,##0.00",
+ "accounting_currency_pattern": "¤#,##0.00;(¤#,##0.00)",
+ "decimal_separator": ",",
+ "grouping_separator": "."
+} \ No newline at end of file
diff --git a/library/intl/resources/number_format/gsw.json b/library/intl/resources/number_format/gsw.json
new file mode 100644
index 000000000..f7a23e7ff
--- /dev/null
+++ b/library/intl/resources/number_format/gsw.json
@@ -0,0 +1,9 @@
+{
+ "numbering_system": "latn",
+ "decimal_pattern": "#,##0.###",
+ "percent_pattern": "#,##0 %",
+ "currency_pattern": "#,##0.00 ¤",
+ "accounting_currency_pattern": "#,##0.00 ¤",
+ "grouping_separator": "’",
+ "minus_sign": "−"
+} \ No newline at end of file
diff --git a/library/intl/resources/number_format/gu.json b/library/intl/resources/number_format/gu.json
new file mode 100644
index 000000000..c3395e8a0
--- /dev/null
+++ b/library/intl/resources/number_format/gu.json
@@ -0,0 +1,7 @@
+{
+ "numbering_system": "latn",
+ "decimal_pattern": "#,##,##0.###",
+ "percent_pattern": "#,##,##0%",
+ "currency_pattern": "¤#,##,##0.00",
+ "accounting_currency_pattern": "¤#,##,##0.00;(¤#,##,##0.00)"
+} \ No newline at end of file
diff --git a/library/intl/resources/number_format/guz.json b/library/intl/resources/number_format/guz.json
new file mode 100644
index 000000000..ff3ecbde6
--- /dev/null
+++ b/library/intl/resources/number_format/guz.json
@@ -0,0 +1,7 @@
+{
+ "numbering_system": "latn",
+ "decimal_pattern": "#,##0.###",
+ "percent_pattern": "#,##0%",
+ "currency_pattern": "¤#,##0.00",
+ "accounting_currency_pattern": "¤#,##0.00;(¤#,##0.00)"
+} \ No newline at end of file
diff --git a/library/intl/resources/number_format/gv.json b/library/intl/resources/number_format/gv.json
new file mode 100644
index 000000000..a3f7208e2
--- /dev/null
+++ b/library/intl/resources/number_format/gv.json
@@ -0,0 +1,7 @@
+{
+ "numbering_system": "latn",
+ "decimal_pattern": "#,##0.###",
+ "percent_pattern": "#,##0%",
+ "currency_pattern": "¤#,##0.00",
+ "accounting_currency_pattern": "¤#,##0.00"
+} \ No newline at end of file
diff --git a/library/intl/resources/number_format/ha.json b/library/intl/resources/number_format/ha.json
new file mode 100644
index 000000000..76f3ddcb5
--- /dev/null
+++ b/library/intl/resources/number_format/ha.json
@@ -0,0 +1,7 @@
+{
+ "numbering_system": "latn",
+ "decimal_pattern": "#,##0.###",
+ "percent_pattern": "#,##0%",
+ "currency_pattern": "¤ #,##0.00",
+ "accounting_currency_pattern": "¤ #,##0.00"
+} \ No newline at end of file
diff --git a/library/intl/resources/number_format/haw.json b/library/intl/resources/number_format/haw.json
new file mode 100644
index 000000000..ff3ecbde6
--- /dev/null
+++ b/library/intl/resources/number_format/haw.json
@@ -0,0 +1,7 @@
+{
+ "numbering_system": "latn",
+ "decimal_pattern": "#,##0.###",
+ "percent_pattern": "#,##0%",
+ "currency_pattern": "¤#,##0.00",
+ "accounting_currency_pattern": "¤#,##0.00;(¤#,##0.00)"
+} \ No newline at end of file
diff --git a/library/intl/resources/number_format/he.json b/library/intl/resources/number_format/he.json
new file mode 100644
index 000000000..b469e01a7
--- /dev/null
+++ b/library/intl/resources/number_format/he.json
@@ -0,0 +1,9 @@
+{
+ "numbering_system": "latn",
+ "decimal_pattern": "#,##0.###",
+ "percent_pattern": "#,##0%",
+ "currency_pattern": "#,##0.00 ¤",
+ "accounting_currency_pattern": "#,##0.00 ¤",
+ "plus_sign": "‎+",
+ "minus_sign": "‎-"
+} \ No newline at end of file
diff --git a/library/intl/resources/number_format/hi.json b/library/intl/resources/number_format/hi.json
new file mode 100644
index 000000000..c888438cb
--- /dev/null
+++ b/library/intl/resources/number_format/hi.json
@@ -0,0 +1,7 @@
+{
+ "numbering_system": "latn",
+ "decimal_pattern": "#,##,##0.###",
+ "percent_pattern": "#,##,##0%",
+ "currency_pattern": "¤#,##,##0.00",
+ "accounting_currency_pattern": "¤#,##,##0.00"
+} \ No newline at end of file
diff --git a/library/intl/resources/number_format/hr.json b/library/intl/resources/number_format/hr.json
new file mode 100644
index 000000000..639e6c938
--- /dev/null
+++ b/library/intl/resources/number_format/hr.json
@@ -0,0 +1,9 @@
+{
+ "numbering_system": "latn",
+ "decimal_pattern": "#,##0.###",
+ "percent_pattern": "#,##0%",
+ "currency_pattern": "#,##0.00 ¤",
+ "accounting_currency_pattern": "#,##0.00 ¤",
+ "decimal_separator": ",",
+ "grouping_separator": "."
+} \ No newline at end of file
diff --git a/library/intl/resources/number_format/hsb.json b/library/intl/resources/number_format/hsb.json
new file mode 100644
index 000000000..59241b7e7
--- /dev/null
+++ b/library/intl/resources/number_format/hsb.json
@@ -0,0 +1,9 @@
+{
+ "numbering_system": "latn",
+ "decimal_pattern": "#,##0.###",
+ "percent_pattern": "#,##0 %",
+ "currency_pattern": "#,##0.00 ¤",
+ "accounting_currency_pattern": "#,##0.00 ¤",
+ "decimal_separator": ",",
+ "grouping_separator": "."
+} \ No newline at end of file
diff --git a/library/intl/resources/number_format/hu.json b/library/intl/resources/number_format/hu.json
new file mode 100644
index 000000000..dde2cfe27
--- /dev/null
+++ b/library/intl/resources/number_format/hu.json
@@ -0,0 +1,9 @@
+{
+ "numbering_system": "latn",
+ "decimal_pattern": "#,##0.###",
+ "percent_pattern": "#,##0%",
+ "currency_pattern": "#,##0.00 ¤",
+ "accounting_currency_pattern": "#,##0.00 ¤",
+ "decimal_separator": ",",
+ "grouping_separator": " "
+} \ No newline at end of file
diff --git a/library/intl/resources/number_format/hy.json b/library/intl/resources/number_format/hy.json
new file mode 100644
index 000000000..8fd18e83c
--- /dev/null
+++ b/library/intl/resources/number_format/hy.json
@@ -0,0 +1,9 @@
+{
+ "numbering_system": "latn",
+ "decimal_pattern": "#0.###",
+ "percent_pattern": "#0%",
+ "currency_pattern": "#0.00 ¤",
+ "accounting_currency_pattern": "#0.00 ¤",
+ "decimal_separator": ",",
+ "grouping_separator": "."
+} \ No newline at end of file
diff --git a/library/intl/resources/number_format/id.json b/library/intl/resources/number_format/id.json
new file mode 100644
index 000000000..2d0b0fad1
--- /dev/null
+++ b/library/intl/resources/number_format/id.json
@@ -0,0 +1,9 @@
+{
+ "numbering_system": "latn",
+ "decimal_pattern": "#,##0.###",
+ "percent_pattern": "#,##0%",
+ "currency_pattern": "¤#,##0.00",
+ "accounting_currency_pattern": "¤#,##0.00",
+ "decimal_separator": ",",
+ "grouping_separator": "."
+} \ No newline at end of file
diff --git a/library/intl/resources/number_format/ig.json b/library/intl/resources/number_format/ig.json
new file mode 100644
index 000000000..ff3ecbde6
--- /dev/null
+++ b/library/intl/resources/number_format/ig.json
@@ -0,0 +1,7 @@
+{
+ "numbering_system": "latn",
+ "decimal_pattern": "#,##0.###",
+ "percent_pattern": "#,##0%",
+ "currency_pattern": "¤#,##0.00",
+ "accounting_currency_pattern": "¤#,##0.00;(¤#,##0.00)"
+} \ No newline at end of file
diff --git a/library/intl/resources/number_format/ii.json b/library/intl/resources/number_format/ii.json
new file mode 100644
index 000000000..76f3ddcb5
--- /dev/null
+++ b/library/intl/resources/number_format/ii.json
@@ -0,0 +1,7 @@
+{
+ "numbering_system": "latn",
+ "decimal_pattern": "#,##0.###",
+ "percent_pattern": "#,##0%",
+ "currency_pattern": "¤ #,##0.00",
+ "accounting_currency_pattern": "¤ #,##0.00"
+} \ No newline at end of file
diff --git a/library/intl/resources/number_format/is.json b/library/intl/resources/number_format/is.json
new file mode 100644
index 000000000..639e6c938
--- /dev/null
+++ b/library/intl/resources/number_format/is.json
@@ -0,0 +1,9 @@
+{
+ "numbering_system": "latn",
+ "decimal_pattern": "#,##0.###",
+ "percent_pattern": "#,##0%",
+ "currency_pattern": "#,##0.00 ¤",
+ "accounting_currency_pattern": "#,##0.00 ¤",
+ "decimal_separator": ",",
+ "grouping_separator": "."
+} \ No newline at end of file
diff --git a/library/intl/resources/number_format/it-CH.json b/library/intl/resources/number_format/it-CH.json
new file mode 100644
index 000000000..4d5d16160
--- /dev/null
+++ b/library/intl/resources/number_format/it-CH.json
@@ -0,0 +1,8 @@
+{
+ "numbering_system": "latn",
+ "decimal_pattern": "#,##0.###",
+ "percent_pattern": "#,##0%",
+ "currency_pattern": "¤ #,##0.00;¤-#,##0.00",
+ "accounting_currency_pattern": "#,##0.00 ¤",
+ "grouping_separator": "'"
+} \ No newline at end of file
diff --git a/library/intl/resources/number_format/it.json b/library/intl/resources/number_format/it.json
new file mode 100644
index 000000000..639e6c938
--- /dev/null
+++ b/library/intl/resources/number_format/it.json
@@ -0,0 +1,9 @@
+{
+ "numbering_system": "latn",
+ "decimal_pattern": "#,##0.###",
+ "percent_pattern": "#,##0%",
+ "currency_pattern": "#,##0.00 ¤",
+ "accounting_currency_pattern": "#,##0.00 ¤",
+ "decimal_separator": ",",
+ "grouping_separator": "."
+} \ No newline at end of file
diff --git a/library/intl/resources/number_format/ja.json b/library/intl/resources/number_format/ja.json
new file mode 100644
index 000000000..ff3ecbde6
--- /dev/null
+++ b/library/intl/resources/number_format/ja.json
@@ -0,0 +1,7 @@
+{
+ "numbering_system": "latn",
+ "decimal_pattern": "#,##0.###",
+ "percent_pattern": "#,##0%",
+ "currency_pattern": "¤#,##0.00",
+ "accounting_currency_pattern": "¤#,##0.00;(¤#,##0.00)"
+} \ No newline at end of file
diff --git a/library/intl/resources/number_format/jgo.json b/library/intl/resources/number_format/jgo.json
new file mode 100644
index 000000000..f6e200db5
--- /dev/null
+++ b/library/intl/resources/number_format/jgo.json
@@ -0,0 +1,9 @@
+{
+ "numbering_system": "latn",
+ "decimal_pattern": "#,##0.###",
+ "percent_pattern": "#,##0%",
+ "currency_pattern": "¤ #,##0.00",
+ "accounting_currency_pattern": "¤ #,##0.00",
+ "decimal_separator": ",",
+ "grouping_separator": "."
+} \ No newline at end of file
diff --git a/library/intl/resources/number_format/jmc.json b/library/intl/resources/number_format/jmc.json
new file mode 100644
index 000000000..a3f7208e2
--- /dev/null
+++ b/library/intl/resources/number_format/jmc.json
@@ -0,0 +1,7 @@
+{
+ "numbering_system": "latn",
+ "decimal_pattern": "#,##0.###",
+ "percent_pattern": "#,##0%",
+ "currency_pattern": "¤#,##0.00",
+ "accounting_currency_pattern": "¤#,##0.00"
+} \ No newline at end of file
diff --git a/library/intl/resources/number_format/ka.json b/library/intl/resources/number_format/ka.json
new file mode 100644
index 000000000..e7aecc094
--- /dev/null
+++ b/library/intl/resources/number_format/ka.json
@@ -0,0 +1,9 @@
+{
+ "numbering_system": "latn",
+ "decimal_pattern": "#,##0.###",
+ "percent_pattern": "#,##0 %",
+ "currency_pattern": "#,##0.00 ¤",
+ "accounting_currency_pattern": "#,##0.00 ¤",
+ "decimal_separator": ",",
+ "grouping_separator": " "
+} \ No newline at end of file
diff --git a/library/intl/resources/number_format/kab.json b/library/intl/resources/number_format/kab.json
new file mode 100644
index 000000000..f86dca5c9
--- /dev/null
+++ b/library/intl/resources/number_format/kab.json
@@ -0,0 +1,9 @@
+{
+ "numbering_system": "latn",
+ "decimal_pattern": "#,##0.###",
+ "percent_pattern": "#,##0%",
+ "currency_pattern": "#,##0.00¤",
+ "accounting_currency_pattern": "#,##0.00¤",
+ "decimal_separator": ",",
+ "grouping_separator": " "
+} \ No newline at end of file
diff --git a/library/intl/resources/number_format/kam.json b/library/intl/resources/number_format/kam.json
new file mode 100644
index 000000000..ff3ecbde6
--- /dev/null
+++ b/library/intl/resources/number_format/kam.json
@@ -0,0 +1,7 @@
+{
+ "numbering_system": "latn",
+ "decimal_pattern": "#,##0.###",
+ "percent_pattern": "#,##0%",
+ "currency_pattern": "¤#,##0.00",
+ "accounting_currency_pattern": "¤#,##0.00;(¤#,##0.00)"
+} \ No newline at end of file
diff --git a/library/intl/resources/number_format/kde.json b/library/intl/resources/number_format/kde.json
new file mode 100644
index 000000000..ff3ecbde6
--- /dev/null
+++ b/library/intl/resources/number_format/kde.json
@@ -0,0 +1,7 @@
+{
+ "numbering_system": "latn",
+ "decimal_pattern": "#,##0.###",
+ "percent_pattern": "#,##0%",
+ "currency_pattern": "¤#,##0.00",
+ "accounting_currency_pattern": "¤#,##0.00;(¤#,##0.00)"
+} \ No newline at end of file
diff --git a/library/intl/resources/number_format/kea.json b/library/intl/resources/number_format/kea.json
new file mode 100644
index 000000000..d72bc1232
--- /dev/null
+++ b/library/intl/resources/number_format/kea.json
@@ -0,0 +1,9 @@
+{
+ "numbering_system": "latn",
+ "decimal_pattern": "#,##0.###",
+ "percent_pattern": "#,##0%",
+ "currency_pattern": "#,##0.00 ¤",
+ "accounting_currency_pattern": "#,##0.00 ¤;(#,##0.00 ¤)",
+ "decimal_separator": ",",
+ "grouping_separator": " "
+} \ No newline at end of file
diff --git a/library/intl/resources/number_format/khq.json b/library/intl/resources/number_format/khq.json
new file mode 100644
index 000000000..23ba53115
--- /dev/null
+++ b/library/intl/resources/number_format/khq.json
@@ -0,0 +1,8 @@
+{
+ "numbering_system": "latn",
+ "decimal_pattern": "#,##0.###",
+ "percent_pattern": "#,##0%",
+ "currency_pattern": "#,##0.00¤",
+ "accounting_currency_pattern": "#,##0.00¤",
+ "grouping_separator": " "
+} \ No newline at end of file
diff --git a/library/intl/resources/number_format/ki.json b/library/intl/resources/number_format/ki.json
new file mode 100644
index 000000000..ff3ecbde6
--- /dev/null
+++ b/library/intl/resources/number_format/ki.json
@@ -0,0 +1,7 @@
+{
+ "numbering_system": "latn",
+ "decimal_pattern": "#,##0.###",
+ "percent_pattern": "#,##0%",
+ "currency_pattern": "¤#,##0.00",
+ "accounting_currency_pattern": "¤#,##0.00;(¤#,##0.00)"
+} \ No newline at end of file
diff --git a/library/intl/resources/number_format/kk.json b/library/intl/resources/number_format/kk.json
new file mode 100644
index 000000000..dde2cfe27
--- /dev/null
+++ b/library/intl/resources/number_format/kk.json
@@ -0,0 +1,9 @@
+{
+ "numbering_system": "latn",
+ "decimal_pattern": "#,##0.###",
+ "percent_pattern": "#,##0%",
+ "currency_pattern": "#,##0.00 ¤",
+ "accounting_currency_pattern": "#,##0.00 ¤",
+ "decimal_separator": ",",
+ "grouping_separator": " "
+} \ No newline at end of file
diff --git a/library/intl/resources/number_format/kkj.json b/library/intl/resources/number_format/kkj.json
new file mode 100644
index 000000000..f6e200db5
--- /dev/null
+++ b/library/intl/resources/number_format/kkj.json
@@ -0,0 +1,9 @@
+{
+ "numbering_system": "latn",
+ "decimal_pattern": "#,##0.###",
+ "percent_pattern": "#,##0%",
+ "currency_pattern": "¤ #,##0.00",
+ "accounting_currency_pattern": "¤ #,##0.00",
+ "decimal_separator": ",",
+ "grouping_separator": "."
+} \ No newline at end of file
diff --git a/library/intl/resources/number_format/kl.json b/library/intl/resources/number_format/kl.json
new file mode 100644
index 000000000..c1e16e6dc
--- /dev/null
+++ b/library/intl/resources/number_format/kl.json
@@ -0,0 +1,10 @@
+{
+ "numbering_system": "latn",
+ "decimal_pattern": "#,##0.###",
+ "percent_pattern": "#,##0 %",
+ "currency_pattern": "¤#,##0.00;¤-#,##0.00",
+ "accounting_currency_pattern": "¤#,##0.00;¤-#,##0.00",
+ "decimal_separator": ",",
+ "grouping_separator": ".",
+ "minus_sign": "−"
+} \ No newline at end of file
diff --git a/library/intl/resources/number_format/kln.json b/library/intl/resources/number_format/kln.json
new file mode 100644
index 000000000..ff3ecbde6
--- /dev/null
+++ b/library/intl/resources/number_format/kln.json
@@ -0,0 +1,7 @@
+{
+ "numbering_system": "latn",
+ "decimal_pattern": "#,##0.###",
+ "percent_pattern": "#,##0%",
+ "currency_pattern": "¤#,##0.00",
+ "accounting_currency_pattern": "¤#,##0.00;(¤#,##0.00)"
+} \ No newline at end of file
diff --git a/library/intl/resources/number_format/km.json b/library/intl/resources/number_format/km.json
new file mode 100644
index 000000000..e87fb64f0
--- /dev/null
+++ b/library/intl/resources/number_format/km.json
@@ -0,0 +1,9 @@
+{
+ "numbering_system": "latn",
+ "decimal_pattern": "#,##0.###",
+ "percent_pattern": "#,##0%",
+ "currency_pattern": "¤#,##0.00",
+ "accounting_currency_pattern": "¤#,##0.00;(¤#,##0.00)",
+ "decimal_separator": ",",
+ "grouping_separator": "."
+} \ No newline at end of file
diff --git a/library/intl/resources/number_format/kn.json b/library/intl/resources/number_format/kn.json
new file mode 100644
index 000000000..ff3ecbde6
--- /dev/null
+++ b/library/intl/resources/number_format/kn.json
@@ -0,0 +1,7 @@
+{
+ "numbering_system": "latn",
+ "decimal_pattern": "#,##0.###",
+ "percent_pattern": "#,##0%",
+ "currency_pattern": "¤#,##0.00",
+ "accounting_currency_pattern": "¤#,##0.00;(¤#,##0.00)"
+} \ No newline at end of file
diff --git a/library/intl/resources/number_format/ko.json b/library/intl/resources/number_format/ko.json
new file mode 100644
index 000000000..ff3ecbde6
--- /dev/null
+++ b/library/intl/resources/number_format/ko.json
@@ -0,0 +1,7 @@
+{
+ "numbering_system": "latn",
+ "decimal_pattern": "#,##0.###",
+ "percent_pattern": "#,##0%",
+ "currency_pattern": "¤#,##0.00",
+ "accounting_currency_pattern": "¤#,##0.00;(¤#,##0.00)"
+} \ No newline at end of file
diff --git a/library/intl/resources/number_format/kok.json b/library/intl/resources/number_format/kok.json
new file mode 100644
index 000000000..2007f4fb6
--- /dev/null
+++ b/library/intl/resources/number_format/kok.json
@@ -0,0 +1,7 @@
+{
+ "numbering_system": "latn",
+ "decimal_pattern": "#,##,##0.###",
+ "percent_pattern": "#,##,##0%",
+ "currency_pattern": "¤ #,##,##0.00",
+ "accounting_currency_pattern": "¤ #,##,##0.00"
+} \ No newline at end of file
diff --git a/library/intl/resources/number_format/ks.json b/library/intl/resources/number_format/ks.json
new file mode 100644
index 000000000..e3bf6449c
--- /dev/null
+++ b/library/intl/resources/number_format/ks.json
@@ -0,0 +1,12 @@
+{
+ "numbering_system": "arabext",
+ "decimal_pattern": "#,##,##0.###",
+ "percent_pattern": "#,##,##0%",
+ "currency_pattern": "¤ #,##,##0.00",
+ "accounting_currency_pattern": "¤ #,##,##0.00",
+ "decimal_separator": "Ù«",
+ "grouping_separator": "Ù¬",
+ "plus_sign": "‎+‎",
+ "minus_sign": "‎-‎",
+ "percent_sign": "Ùª"
+} \ No newline at end of file
diff --git a/library/intl/resources/number_format/ksb.json b/library/intl/resources/number_format/ksb.json
new file mode 100644
index 000000000..c00aa2b2f
--- /dev/null
+++ b/library/intl/resources/number_format/ksb.json
@@ -0,0 +1,7 @@
+{
+ "numbering_system": "latn",
+ "decimal_pattern": "#,##0.###",
+ "percent_pattern": "#,##0%",
+ "currency_pattern": "#,##0.00¤",
+ "accounting_currency_pattern": "#,##0.00¤"
+} \ No newline at end of file
diff --git a/library/intl/resources/number_format/ksf.json b/library/intl/resources/number_format/ksf.json
new file mode 100644
index 000000000..dde2cfe27
--- /dev/null
+++ b/library/intl/resources/number_format/ksf.json
@@ -0,0 +1,9 @@
+{
+ "numbering_system": "latn",
+ "decimal_pattern": "#,##0.###",
+ "percent_pattern": "#,##0%",
+ "currency_pattern": "#,##0.00 ¤",
+ "accounting_currency_pattern": "#,##0.00 ¤",
+ "decimal_separator": ",",
+ "grouping_separator": " "
+} \ No newline at end of file
diff --git a/library/intl/resources/number_format/ksh.json b/library/intl/resources/number_format/ksh.json
new file mode 100644
index 000000000..4c5b82818
--- /dev/null
+++ b/library/intl/resources/number_format/ksh.json
@@ -0,0 +1,10 @@
+{
+ "numbering_system": "latn",
+ "decimal_pattern": "#,##0.###",
+ "percent_pattern": "#,##0 %",
+ "currency_pattern": "#,##0.00 ¤",
+ "accounting_currency_pattern": "#,##0.00 ¤",
+ "decimal_separator": ",",
+ "grouping_separator": " ",
+ "minus_sign": "−"
+} \ No newline at end of file
diff --git a/library/intl/resources/number_format/kw.json b/library/intl/resources/number_format/kw.json
new file mode 100644
index 000000000..a3f7208e2
--- /dev/null
+++ b/library/intl/resources/number_format/kw.json
@@ -0,0 +1,7 @@
+{
+ "numbering_system": "latn",
+ "decimal_pattern": "#,##0.###",
+ "percent_pattern": "#,##0%",
+ "currency_pattern": "¤#,##0.00",
+ "accounting_currency_pattern": "¤#,##0.00"
+} \ No newline at end of file
diff --git a/library/intl/resources/number_format/ky.json b/library/intl/resources/number_format/ky.json
new file mode 100644
index 000000000..dde2cfe27
--- /dev/null
+++ b/library/intl/resources/number_format/ky.json
@@ -0,0 +1,9 @@
+{
+ "numbering_system": "latn",
+ "decimal_pattern": "#,##0.###",
+ "percent_pattern": "#,##0%",
+ "currency_pattern": "#,##0.00 ¤",
+ "accounting_currency_pattern": "#,##0.00 ¤",
+ "decimal_separator": ",",
+ "grouping_separator": " "
+} \ No newline at end of file
diff --git a/library/intl/resources/number_format/lag.json b/library/intl/resources/number_format/lag.json
new file mode 100644
index 000000000..76f3ddcb5
--- /dev/null
+++ b/library/intl/resources/number_format/lag.json
@@ -0,0 +1,7 @@
+{
+ "numbering_system": "latn",
+ "decimal_pattern": "#,##0.###",
+ "percent_pattern": "#,##0%",
+ "currency_pattern": "¤ #,##0.00",
+ "accounting_currency_pattern": "¤ #,##0.00"
+} \ No newline at end of file
diff --git a/library/intl/resources/number_format/lb.json b/library/intl/resources/number_format/lb.json
new file mode 100644
index 000000000..59241b7e7
--- /dev/null
+++ b/library/intl/resources/number_format/lb.json
@@ -0,0 +1,9 @@
+{
+ "numbering_system": "latn",
+ "decimal_pattern": "#,##0.###",
+ "percent_pattern": "#,##0 %",
+ "currency_pattern": "#,##0.00 ¤",
+ "accounting_currency_pattern": "#,##0.00 ¤",
+ "decimal_separator": ",",
+ "grouping_separator": "."
+} \ No newline at end of file
diff --git a/library/intl/resources/number_format/lg.json b/library/intl/resources/number_format/lg.json
new file mode 100644
index 000000000..c00aa2b2f
--- /dev/null
+++ b/library/intl/resources/number_format/lg.json
@@ -0,0 +1,7 @@
+{
+ "numbering_system": "latn",
+ "decimal_pattern": "#,##0.###",
+ "percent_pattern": "#,##0%",
+ "currency_pattern": "#,##0.00¤",
+ "accounting_currency_pattern": "#,##0.00¤"
+} \ No newline at end of file
diff --git a/library/intl/resources/number_format/lkt.json b/library/intl/resources/number_format/lkt.json
new file mode 100644
index 000000000..76f3ddcb5
--- /dev/null
+++ b/library/intl/resources/number_format/lkt.json
@@ -0,0 +1,7 @@
+{
+ "numbering_system": "latn",
+ "decimal_pattern": "#,##0.###",
+ "percent_pattern": "#,##0%",
+ "currency_pattern": "¤ #,##0.00",
+ "accounting_currency_pattern": "¤ #,##0.00"
+} \ No newline at end of file
diff --git a/library/intl/resources/number_format/ln.json b/library/intl/resources/number_format/ln.json
new file mode 100644
index 000000000..639e6c938
--- /dev/null
+++ b/library/intl/resources/number_format/ln.json
@@ -0,0 +1,9 @@
+{
+ "numbering_system": "latn",
+ "decimal_pattern": "#,##0.###",
+ "percent_pattern": "#,##0%",
+ "currency_pattern": "#,##0.00 ¤",
+ "accounting_currency_pattern": "#,##0.00 ¤",
+ "decimal_separator": ",",
+ "grouping_separator": "."
+} \ No newline at end of file
diff --git a/library/intl/resources/number_format/lo.json b/library/intl/resources/number_format/lo.json
new file mode 100644
index 000000000..ce91051ad
--- /dev/null
+++ b/library/intl/resources/number_format/lo.json
@@ -0,0 +1,9 @@
+{
+ "numbering_system": "latn",
+ "decimal_pattern": "#,##0.###",
+ "percent_pattern": "#,##0%",
+ "currency_pattern": "¤#,##0.00;¤-#,##0.00",
+ "accounting_currency_pattern": "¤#,##0.00;¤-#,##0.00",
+ "decimal_separator": ",",
+ "grouping_separator": "."
+} \ No newline at end of file
diff --git a/library/intl/resources/number_format/lt.json b/library/intl/resources/number_format/lt.json
new file mode 100644
index 000000000..4c5b82818
--- /dev/null
+++ b/library/intl/resources/number_format/lt.json
@@ -0,0 +1,10 @@
+{
+ "numbering_system": "latn",
+ "decimal_pattern": "#,##0.###",
+ "percent_pattern": "#,##0 %",
+ "currency_pattern": "#,##0.00 ¤",
+ "accounting_currency_pattern": "#,##0.00 ¤",
+ "decimal_separator": ",",
+ "grouping_separator": " ",
+ "minus_sign": "−"
+} \ No newline at end of file
diff --git a/library/intl/resources/number_format/lu.json b/library/intl/resources/number_format/lu.json
new file mode 100644
index 000000000..d4ecf4607
--- /dev/null
+++ b/library/intl/resources/number_format/lu.json
@@ -0,0 +1,9 @@
+{
+ "numbering_system": "latn",
+ "decimal_pattern": "#,##0.###",
+ "percent_pattern": "#,##0%",
+ "currency_pattern": "#,##0.00¤",
+ "accounting_currency_pattern": "#,##0.00¤",
+ "decimal_separator": ",",
+ "grouping_separator": "."
+} \ No newline at end of file
diff --git a/library/intl/resources/number_format/luo.json b/library/intl/resources/number_format/luo.json
new file mode 100644
index 000000000..c00aa2b2f
--- /dev/null
+++ b/library/intl/resources/number_format/luo.json
@@ -0,0 +1,7 @@
+{
+ "numbering_system": "latn",
+ "decimal_pattern": "#,##0.###",
+ "percent_pattern": "#,##0%",
+ "currency_pattern": "#,##0.00¤",
+ "accounting_currency_pattern": "#,##0.00¤"
+} \ No newline at end of file
diff --git a/library/intl/resources/number_format/luy.json b/library/intl/resources/number_format/luy.json
new file mode 100644
index 000000000..a2c910b56
--- /dev/null
+++ b/library/intl/resources/number_format/luy.json
@@ -0,0 +1,7 @@
+{
+ "numbering_system": "latn",
+ "decimal_pattern": "#,##0.###",
+ "percent_pattern": "#,##0%",
+ "currency_pattern": "¤#,##0.00;¤- #,##0.00",
+ "accounting_currency_pattern": "¤#,##0.00;¤- #,##0.00"
+} \ No newline at end of file
diff --git a/library/intl/resources/number_format/lv.json b/library/intl/resources/number_format/lv.json
new file mode 100644
index 000000000..5a38d2acb
--- /dev/null
+++ b/library/intl/resources/number_format/lv.json
@@ -0,0 +1,9 @@
+{
+ "numbering_system": "latn",
+ "decimal_pattern": "#,##0.###",
+ "percent_pattern": "#,##0%",
+ "currency_pattern": "¤#0.00",
+ "accounting_currency_pattern": "¤#0.00",
+ "decimal_separator": ",",
+ "grouping_separator": " "
+} \ No newline at end of file
diff --git a/library/intl/resources/number_format/mas.json b/library/intl/resources/number_format/mas.json
new file mode 100644
index 000000000..ff3ecbde6
--- /dev/null
+++ b/library/intl/resources/number_format/mas.json
@@ -0,0 +1,7 @@
+{
+ "numbering_system": "latn",
+ "decimal_pattern": "#,##0.###",
+ "percent_pattern": "#,##0%",
+ "currency_pattern": "¤#,##0.00",
+ "accounting_currency_pattern": "¤#,##0.00;(¤#,##0.00)"
+} \ No newline at end of file
diff --git a/library/intl/resources/number_format/mer.json b/library/intl/resources/number_format/mer.json
new file mode 100644
index 000000000..ff3ecbde6
--- /dev/null
+++ b/library/intl/resources/number_format/mer.json
@@ -0,0 +1,7 @@
+{
+ "numbering_system": "latn",
+ "decimal_pattern": "#,##0.###",
+ "percent_pattern": "#,##0%",
+ "currency_pattern": "¤#,##0.00",
+ "accounting_currency_pattern": "¤#,##0.00;(¤#,##0.00)"
+} \ No newline at end of file
diff --git a/library/intl/resources/number_format/mfe.json b/library/intl/resources/number_format/mfe.json
new file mode 100644
index 000000000..5576f9438
--- /dev/null
+++ b/library/intl/resources/number_format/mfe.json
@@ -0,0 +1,8 @@
+{
+ "numbering_system": "latn",
+ "decimal_pattern": "#,##0.###",
+ "percent_pattern": "#,##0%",
+ "currency_pattern": "¤ #,##0.00",
+ "accounting_currency_pattern": "¤ #,##0.00",
+ "grouping_separator": " "
+} \ No newline at end of file
diff --git a/library/intl/resources/number_format/mg.json b/library/intl/resources/number_format/mg.json
new file mode 100644
index 000000000..a3f7208e2
--- /dev/null
+++ b/library/intl/resources/number_format/mg.json
@@ -0,0 +1,7 @@
+{
+ "numbering_system": "latn",
+ "decimal_pattern": "#,##0.###",
+ "percent_pattern": "#,##0%",
+ "currency_pattern": "¤#,##0.00",
+ "accounting_currency_pattern": "¤#,##0.00"
+} \ No newline at end of file
diff --git a/library/intl/resources/number_format/mgh.json b/library/intl/resources/number_format/mgh.json
new file mode 100644
index 000000000..f6e200db5
--- /dev/null
+++ b/library/intl/resources/number_format/mgh.json
@@ -0,0 +1,9 @@
+{
+ "numbering_system": "latn",
+ "decimal_pattern": "#,##0.###",
+ "percent_pattern": "#,##0%",
+ "currency_pattern": "¤ #,##0.00",
+ "accounting_currency_pattern": "¤ #,##0.00",
+ "decimal_separator": ",",
+ "grouping_separator": "."
+} \ No newline at end of file
diff --git a/library/intl/resources/number_format/mgo.json b/library/intl/resources/number_format/mgo.json
new file mode 100644
index 000000000..76f3ddcb5
--- /dev/null
+++ b/library/intl/resources/number_format/mgo.json
@@ -0,0 +1,7 @@
+{
+ "numbering_system": "latn",
+ "decimal_pattern": "#,##0.###",
+ "percent_pattern": "#,##0%",
+ "currency_pattern": "¤ #,##0.00",
+ "accounting_currency_pattern": "¤ #,##0.00"
+} \ No newline at end of file
diff --git a/library/intl/resources/number_format/mk.json b/library/intl/resources/number_format/mk.json
new file mode 100644
index 000000000..f6e200db5
--- /dev/null
+++ b/library/intl/resources/number_format/mk.json
@@ -0,0 +1,9 @@
+{
+ "numbering_system": "latn",
+ "decimal_pattern": "#,##0.###",
+ "percent_pattern": "#,##0%",
+ "currency_pattern": "¤ #,##0.00",
+ "accounting_currency_pattern": "¤ #,##0.00",
+ "decimal_separator": ",",
+ "grouping_separator": "."
+} \ No newline at end of file
diff --git a/library/intl/resources/number_format/ml.json b/library/intl/resources/number_format/ml.json
new file mode 100644
index 000000000..7a1f3b487
--- /dev/null
+++ b/library/intl/resources/number_format/ml.json
@@ -0,0 +1,7 @@
+{
+ "numbering_system": "latn",
+ "decimal_pattern": "#,##,##0.###",
+ "percent_pattern": "#,##0%",
+ "currency_pattern": "¤#,##0.00",
+ "accounting_currency_pattern": "¤#,##0.00;(¤#,##0.00)"
+} \ No newline at end of file
diff --git a/library/intl/resources/number_format/mn.json b/library/intl/resources/number_format/mn.json
new file mode 100644
index 000000000..76f3ddcb5
--- /dev/null
+++ b/library/intl/resources/number_format/mn.json
@@ -0,0 +1,7 @@
+{
+ "numbering_system": "latn",
+ "decimal_pattern": "#,##0.###",
+ "percent_pattern": "#,##0%",
+ "currency_pattern": "¤ #,##0.00",
+ "accounting_currency_pattern": "¤ #,##0.00"
+} \ No newline at end of file
diff --git a/library/intl/resources/number_format/mr.json b/library/intl/resources/number_format/mr.json
new file mode 100644
index 000000000..6f71dcc1f
--- /dev/null
+++ b/library/intl/resources/number_format/mr.json
@@ -0,0 +1,7 @@
+{
+ "numbering_system": "deva",
+ "decimal_pattern": "#,##,##0.###",
+ "percent_pattern": "#,##0%",
+ "currency_pattern": "¤#,##0.00",
+ "accounting_currency_pattern": "¤#,##0.00;(¤#,##0.00)"
+} \ No newline at end of file
diff --git a/library/intl/resources/number_format/ms-Latn-BN.json b/library/intl/resources/number_format/ms-Latn-BN.json
new file mode 100644
index 000000000..bb9eb8d94
--- /dev/null
+++ b/library/intl/resources/number_format/ms-Latn-BN.json
@@ -0,0 +1,9 @@
+{
+ "numbering_system": "latn",
+ "decimal_pattern": "#,##0.###",
+ "percent_pattern": "#,##0%",
+ "currency_pattern": "¤ #,##0.00",
+ "accounting_currency_pattern": "¤#,##0.00;(¤#,##0.00)",
+ "decimal_separator": ",",
+ "grouping_separator": "."
+} \ No newline at end of file
diff --git a/library/intl/resources/number_format/ms.json b/library/intl/resources/number_format/ms.json
new file mode 100644
index 000000000..ff3ecbde6
--- /dev/null
+++ b/library/intl/resources/number_format/ms.json
@@ -0,0 +1,7 @@
+{
+ "numbering_system": "latn",
+ "decimal_pattern": "#,##0.###",
+ "percent_pattern": "#,##0%",
+ "currency_pattern": "¤#,##0.00",
+ "accounting_currency_pattern": "¤#,##0.00;(¤#,##0.00)"
+} \ No newline at end of file
diff --git a/library/intl/resources/number_format/mt.json b/library/intl/resources/number_format/mt.json
new file mode 100644
index 000000000..a3f7208e2
--- /dev/null
+++ b/library/intl/resources/number_format/mt.json
@@ -0,0 +1,7 @@
+{
+ "numbering_system": "latn",
+ "decimal_pattern": "#,##0.###",
+ "percent_pattern": "#,##0%",
+ "currency_pattern": "¤#,##0.00",
+ "accounting_currency_pattern": "¤#,##0.00"
+} \ No newline at end of file
diff --git a/library/intl/resources/number_format/mua.json b/library/intl/resources/number_format/mua.json
new file mode 100644
index 000000000..e87fb64f0
--- /dev/null
+++ b/library/intl/resources/number_format/mua.json
@@ -0,0 +1,9 @@
+{
+ "numbering_system": "latn",
+ "decimal_pattern": "#,##0.###",
+ "percent_pattern": "#,##0%",
+ "currency_pattern": "¤#,##0.00",
+ "accounting_currency_pattern": "¤#,##0.00;(¤#,##0.00)",
+ "decimal_separator": ",",
+ "grouping_separator": "."
+} \ No newline at end of file
diff --git a/library/intl/resources/number_format/my.json b/library/intl/resources/number_format/my.json
new file mode 100644
index 000000000..76f3ddcb5
--- /dev/null
+++ b/library/intl/resources/number_format/my.json
@@ -0,0 +1,7 @@
+{
+ "numbering_system": "latn",
+ "decimal_pattern": "#,##0.###",
+ "percent_pattern": "#,##0%",
+ "currency_pattern": "¤ #,##0.00",
+ "accounting_currency_pattern": "¤ #,##0.00"
+} \ No newline at end of file
diff --git a/library/intl/resources/number_format/naq.json b/library/intl/resources/number_format/naq.json
new file mode 100644
index 000000000..a3f7208e2
--- /dev/null
+++ b/library/intl/resources/number_format/naq.json
@@ -0,0 +1,7 @@
+{
+ "numbering_system": "latn",
+ "decimal_pattern": "#,##0.###",
+ "percent_pattern": "#,##0%",
+ "currency_pattern": "¤#,##0.00",
+ "accounting_currency_pattern": "¤#,##0.00"
+} \ No newline at end of file
diff --git a/library/intl/resources/number_format/nb.json b/library/intl/resources/number_format/nb.json
new file mode 100644
index 000000000..d22e8d0b7
--- /dev/null
+++ b/library/intl/resources/number_format/nb.json
@@ -0,0 +1,10 @@
+{
+ "numbering_system": "latn",
+ "decimal_pattern": "#,##0.###",
+ "percent_pattern": "#,##0 %",
+ "currency_pattern": "¤ #,##0.00",
+ "accounting_currency_pattern": "¤ #,##0.00",
+ "decimal_separator": ",",
+ "grouping_separator": " ",
+ "minus_sign": "−"
+} \ No newline at end of file
diff --git a/library/intl/resources/number_format/nd.json b/library/intl/resources/number_format/nd.json
new file mode 100644
index 000000000..ff3ecbde6
--- /dev/null
+++ b/library/intl/resources/number_format/nd.json
@@ -0,0 +1,7 @@
+{
+ "numbering_system": "latn",
+ "decimal_pattern": "#,##0.###",
+ "percent_pattern": "#,##0%",
+ "currency_pattern": "¤#,##0.00",
+ "accounting_currency_pattern": "¤#,##0.00;(¤#,##0.00)"
+} \ No newline at end of file
diff --git a/library/intl/resources/number_format/ne.json b/library/intl/resources/number_format/ne.json
new file mode 100644
index 000000000..e1149da96
--- /dev/null
+++ b/library/intl/resources/number_format/ne.json
@@ -0,0 +1,7 @@
+{
+ "numbering_system": "deva",
+ "decimal_pattern": "#,##0.###",
+ "percent_pattern": "#,##0%",
+ "currency_pattern": "¤ #,##0.00",
+ "accounting_currency_pattern": "¤ #,##0.00"
+} \ No newline at end of file
diff --git a/library/intl/resources/number_format/nl-BE.json b/library/intl/resources/number_format/nl-BE.json
new file mode 100644
index 000000000..23256bff0
--- /dev/null
+++ b/library/intl/resources/number_format/nl-BE.json
@@ -0,0 +1,9 @@
+{
+ "numbering_system": "latn",
+ "decimal_pattern": "#,##0.###",
+ "percent_pattern": "#,##0%",
+ "currency_pattern": "#,##0.00 ¤",
+ "accounting_currency_pattern": "¤ #,##0.00;(¤ #,##0.00)",
+ "decimal_separator": ",",
+ "grouping_separator": "."
+} \ No newline at end of file
diff --git a/library/intl/resources/number_format/nl.json b/library/intl/resources/number_format/nl.json
new file mode 100644
index 000000000..ff49eddc5
--- /dev/null
+++ b/library/intl/resources/number_format/nl.json
@@ -0,0 +1,9 @@
+{
+ "numbering_system": "latn",
+ "decimal_pattern": "#,##0.###",
+ "percent_pattern": "#,##0%",
+ "currency_pattern": "¤ #,##0.00;¤ #,##0.00-",
+ "accounting_currency_pattern": "¤ #,##0.00;(¤ #,##0.00)",
+ "decimal_separator": ",",
+ "grouping_separator": "."
+} \ No newline at end of file
diff --git a/library/intl/resources/number_format/nmg.json b/library/intl/resources/number_format/nmg.json
new file mode 100644
index 000000000..dde2cfe27
--- /dev/null
+++ b/library/intl/resources/number_format/nmg.json
@@ -0,0 +1,9 @@
+{
+ "numbering_system": "latn",
+ "decimal_pattern": "#,##0.###",
+ "percent_pattern": "#,##0%",
+ "currency_pattern": "#,##0.00 ¤",
+ "accounting_currency_pattern": "#,##0.00 ¤",
+ "decimal_separator": ",",
+ "grouping_separator": " "
+} \ No newline at end of file
diff --git a/library/intl/resources/number_format/nn.json b/library/intl/resources/number_format/nn.json
new file mode 100644
index 000000000..4c5b82818
--- /dev/null
+++ b/library/intl/resources/number_format/nn.json
@@ -0,0 +1,10 @@
+{
+ "numbering_system": "latn",
+ "decimal_pattern": "#,##0.###",
+ "percent_pattern": "#,##0 %",
+ "currency_pattern": "#,##0.00 ¤",
+ "accounting_currency_pattern": "#,##0.00 ¤",
+ "decimal_separator": ",",
+ "grouping_separator": " ",
+ "minus_sign": "−"
+} \ No newline at end of file
diff --git a/library/intl/resources/number_format/nnh.json b/library/intl/resources/number_format/nnh.json
new file mode 100644
index 000000000..f6e200db5
--- /dev/null
+++ b/library/intl/resources/number_format/nnh.json
@@ -0,0 +1,9 @@
+{
+ "numbering_system": "latn",
+ "decimal_pattern": "#,##0.###",
+ "percent_pattern": "#,##0%",
+ "currency_pattern": "¤ #,##0.00",
+ "accounting_currency_pattern": "¤ #,##0.00",
+ "decimal_separator": ",",
+ "grouping_separator": "."
+} \ No newline at end of file
diff --git a/library/intl/resources/number_format/nr.json b/library/intl/resources/number_format/nr.json
new file mode 100644
index 000000000..a17a8c14d
--- /dev/null
+++ b/library/intl/resources/number_format/nr.json
@@ -0,0 +1,9 @@
+{
+ "numbering_system": "latn",
+ "decimal_pattern": "#,##0.###",
+ "percent_pattern": "#,##0%",
+ "currency_pattern": "¤#,##0.00",
+ "accounting_currency_pattern": "¤#,##0.00",
+ "decimal_separator": ",",
+ "grouping_separator": " "
+} \ No newline at end of file
diff --git a/library/intl/resources/number_format/nso.json b/library/intl/resources/number_format/nso.json
new file mode 100644
index 000000000..bfdcf22d4
--- /dev/null
+++ b/library/intl/resources/number_format/nso.json
@@ -0,0 +1,8 @@
+{
+ "numbering_system": "latn",
+ "decimal_pattern": "#,##0.###",
+ "percent_pattern": "#,##0%",
+ "currency_pattern": "¤#,##0.00",
+ "accounting_currency_pattern": "¤#,##0.00",
+ "grouping_separator": " "
+} \ No newline at end of file
diff --git a/library/intl/resources/number_format/nus.json b/library/intl/resources/number_format/nus.json
new file mode 100644
index 000000000..ff3ecbde6
--- /dev/null
+++ b/library/intl/resources/number_format/nus.json
@@ -0,0 +1,7 @@
+{
+ "numbering_system": "latn",
+ "decimal_pattern": "#,##0.###",
+ "percent_pattern": "#,##0%",
+ "currency_pattern": "¤#,##0.00",
+ "accounting_currency_pattern": "¤#,##0.00;(¤#,##0.00)"
+} \ No newline at end of file
diff --git a/library/intl/resources/number_format/nyn.json b/library/intl/resources/number_format/nyn.json
new file mode 100644
index 000000000..a3f7208e2
--- /dev/null
+++ b/library/intl/resources/number_format/nyn.json
@@ -0,0 +1,7 @@
+{
+ "numbering_system": "latn",
+ "decimal_pattern": "#,##0.###",
+ "percent_pattern": "#,##0%",
+ "currency_pattern": "¤#,##0.00",
+ "accounting_currency_pattern": "¤#,##0.00"
+} \ No newline at end of file
diff --git a/library/intl/resources/number_format/om.json b/library/intl/resources/number_format/om.json
new file mode 100644
index 000000000..a3f7208e2
--- /dev/null
+++ b/library/intl/resources/number_format/om.json
@@ -0,0 +1,7 @@
+{
+ "numbering_system": "latn",
+ "decimal_pattern": "#,##0.###",
+ "percent_pattern": "#,##0%",
+ "currency_pattern": "¤#,##0.00",
+ "accounting_currency_pattern": "¤#,##0.00"
+} \ No newline at end of file
diff --git a/library/intl/resources/number_format/or.json b/library/intl/resources/number_format/or.json
new file mode 100644
index 000000000..2007f4fb6
--- /dev/null
+++ b/library/intl/resources/number_format/or.json
@@ -0,0 +1,7 @@
+{
+ "numbering_system": "latn",
+ "decimal_pattern": "#,##,##0.###",
+ "percent_pattern": "#,##,##0%",
+ "currency_pattern": "¤ #,##,##0.00",
+ "accounting_currency_pattern": "¤ #,##,##0.00"
+} \ No newline at end of file
diff --git a/library/intl/resources/number_format/os.json b/library/intl/resources/number_format/os.json
new file mode 100644
index 000000000..c97d61fb2
--- /dev/null
+++ b/library/intl/resources/number_format/os.json
@@ -0,0 +1,9 @@
+{
+ "numbering_system": "latn",
+ "decimal_pattern": "#,##0.###",
+ "percent_pattern": "#,##0%",
+ "currency_pattern": "¤ #,##0.00",
+ "accounting_currency_pattern": "¤ #,##0.00",
+ "decimal_separator": ",",
+ "grouping_separator": " "
+} \ No newline at end of file
diff --git a/library/intl/resources/number_format/pa-Arab.json b/library/intl/resources/number_format/pa-Arab.json
new file mode 100644
index 000000000..2b2e9fdbb
--- /dev/null
+++ b/library/intl/resources/number_format/pa-Arab.json
@@ -0,0 +1,12 @@
+{
+ "numbering_system": "arabext",
+ "decimal_pattern": "#,##0.###",
+ "percent_pattern": "#,##0%",
+ "currency_pattern": "¤ #,##0.00",
+ "accounting_currency_pattern": "¤ #,##0.00",
+ "decimal_separator": "Ù«",
+ "grouping_separator": "Ù¬",
+ "plus_sign": "‎+‎",
+ "minus_sign": "‎-‎",
+ "percent_sign": "Ùª"
+} \ No newline at end of file
diff --git a/library/intl/resources/number_format/pa.json b/library/intl/resources/number_format/pa.json
new file mode 100644
index 000000000..1ea49ce5f
--- /dev/null
+++ b/library/intl/resources/number_format/pa.json
@@ -0,0 +1,7 @@
+{
+ "numbering_system": "latn",
+ "decimal_pattern": "#,##,##0.###",
+ "percent_pattern": "#,##,##0%",
+ "currency_pattern": "¤ #,##,##0.00",
+ "accounting_currency_pattern": "¤ #,##0.00"
+} \ No newline at end of file
diff --git a/library/intl/resources/number_format/pl.json b/library/intl/resources/number_format/pl.json
new file mode 100644
index 000000000..d72bc1232
--- /dev/null
+++ b/library/intl/resources/number_format/pl.json
@@ -0,0 +1,9 @@
+{
+ "numbering_system": "latn",
+ "decimal_pattern": "#,##0.###",
+ "percent_pattern": "#,##0%",
+ "currency_pattern": "#,##0.00 ¤",
+ "accounting_currency_pattern": "#,##0.00 ¤;(#,##0.00 ¤)",
+ "decimal_separator": ",",
+ "grouping_separator": " "
+} \ No newline at end of file
diff --git a/library/intl/resources/number_format/ps.json b/library/intl/resources/number_format/ps.json
new file mode 100644
index 000000000..4c162b17d
--- /dev/null
+++ b/library/intl/resources/number_format/ps.json
@@ -0,0 +1,12 @@
+{
+ "numbering_system": "arabext",
+ "decimal_pattern": "#,##0.###",
+ "percent_pattern": "#,##0%",
+ "currency_pattern": "#,##0.00 ¤",
+ "accounting_currency_pattern": "#,##0.00 ¤",
+ "decimal_separator": "Ù«",
+ "grouping_separator": "Ù¬",
+ "plus_sign": "‎+‎",
+ "minus_sign": "‎-‎",
+ "percent_sign": "Ùª"
+} \ No newline at end of file
diff --git a/library/intl/resources/number_format/pt-AO.json b/library/intl/resources/number_format/pt-AO.json
new file mode 100644
index 000000000..d72bc1232
--- /dev/null
+++ b/library/intl/resources/number_format/pt-AO.json
@@ -0,0 +1,9 @@
+{
+ "numbering_system": "latn",
+ "decimal_pattern": "#,##0.###",
+ "percent_pattern": "#,##0%",
+ "currency_pattern": "#,##0.00 ¤",
+ "accounting_currency_pattern": "#,##0.00 ¤;(#,##0.00 ¤)",
+ "decimal_separator": ",",
+ "grouping_separator": " "
+} \ No newline at end of file
diff --git a/library/intl/resources/number_format/pt-CV.json b/library/intl/resources/number_format/pt-CV.json
new file mode 100644
index 000000000..d72bc1232
--- /dev/null
+++ b/library/intl/resources/number_format/pt-CV.json
@@ -0,0 +1,9 @@
+{
+ "numbering_system": "latn",
+ "decimal_pattern": "#,##0.###",
+ "percent_pattern": "#,##0%",
+ "currency_pattern": "#,##0.00 ¤",
+ "accounting_currency_pattern": "#,##0.00 ¤;(#,##0.00 ¤)",
+ "decimal_separator": ",",
+ "grouping_separator": " "
+} \ No newline at end of file
diff --git a/library/intl/resources/number_format/pt-GW.json b/library/intl/resources/number_format/pt-GW.json
new file mode 100644
index 000000000..d72bc1232
--- /dev/null
+++ b/library/intl/resources/number_format/pt-GW.json
@@ -0,0 +1,9 @@
+{
+ "numbering_system": "latn",
+ "decimal_pattern": "#,##0.###",
+ "percent_pattern": "#,##0%",
+ "currency_pattern": "#,##0.00 ¤",
+ "accounting_currency_pattern": "#,##0.00 ¤;(#,##0.00 ¤)",
+ "decimal_separator": ",",
+ "grouping_separator": " "
+} \ No newline at end of file
diff --git a/library/intl/resources/number_format/pt-MO.json b/library/intl/resources/number_format/pt-MO.json
new file mode 100644
index 000000000..d72bc1232
--- /dev/null
+++ b/library/intl/resources/number_format/pt-MO.json
@@ -0,0 +1,9 @@
+{
+ "numbering_system": "latn",
+ "decimal_pattern": "#,##0.###",
+ "percent_pattern": "#,##0%",
+ "currency_pattern": "#,##0.00 ¤",
+ "accounting_currency_pattern": "#,##0.00 ¤;(#,##0.00 ¤)",
+ "decimal_separator": ",",
+ "grouping_separator": " "
+} \ No newline at end of file
diff --git a/library/intl/resources/number_format/pt-MZ.json b/library/intl/resources/number_format/pt-MZ.json
new file mode 100644
index 000000000..d72bc1232
--- /dev/null
+++ b/library/intl/resources/number_format/pt-MZ.json
@@ -0,0 +1,9 @@
+{
+ "numbering_system": "latn",
+ "decimal_pattern": "#,##0.###",
+ "percent_pattern": "#,##0%",
+ "currency_pattern": "#,##0.00 ¤",
+ "accounting_currency_pattern": "#,##0.00 ¤;(#,##0.00 ¤)",
+ "decimal_separator": ",",
+ "grouping_separator": " "
+} \ No newline at end of file
diff --git a/library/intl/resources/number_format/pt-PT.json b/library/intl/resources/number_format/pt-PT.json
new file mode 100644
index 000000000..d72bc1232
--- /dev/null
+++ b/library/intl/resources/number_format/pt-PT.json
@@ -0,0 +1,9 @@
+{
+ "numbering_system": "latn",
+ "decimal_pattern": "#,##0.###",
+ "percent_pattern": "#,##0%",
+ "currency_pattern": "#,##0.00 ¤",
+ "accounting_currency_pattern": "#,##0.00 ¤;(#,##0.00 ¤)",
+ "decimal_separator": ",",
+ "grouping_separator": " "
+} \ No newline at end of file
diff --git a/library/intl/resources/number_format/pt-ST.json b/library/intl/resources/number_format/pt-ST.json
new file mode 100644
index 000000000..d72bc1232
--- /dev/null
+++ b/library/intl/resources/number_format/pt-ST.json
@@ -0,0 +1,9 @@
+{
+ "numbering_system": "latn",
+ "decimal_pattern": "#,##0.###",
+ "percent_pattern": "#,##0%",
+ "currency_pattern": "#,##0.00 ¤",
+ "accounting_currency_pattern": "#,##0.00 ¤;(#,##0.00 ¤)",
+ "decimal_separator": ",",
+ "grouping_separator": " "
+} \ No newline at end of file
diff --git a/library/intl/resources/number_format/pt-TL.json b/library/intl/resources/number_format/pt-TL.json
new file mode 100644
index 000000000..d72bc1232
--- /dev/null
+++ b/library/intl/resources/number_format/pt-TL.json
@@ -0,0 +1,9 @@
+{
+ "numbering_system": "latn",
+ "decimal_pattern": "#,##0.###",
+ "percent_pattern": "#,##0%",
+ "currency_pattern": "#,##0.00 ¤",
+ "accounting_currency_pattern": "#,##0.00 ¤;(#,##0.00 ¤)",
+ "decimal_separator": ",",
+ "grouping_separator": " "
+} \ No newline at end of file
diff --git a/library/intl/resources/number_format/pt.json b/library/intl/resources/number_format/pt.json
new file mode 100644
index 000000000..e87fb64f0
--- /dev/null
+++ b/library/intl/resources/number_format/pt.json
@@ -0,0 +1,9 @@
+{
+ "numbering_system": "latn",
+ "decimal_pattern": "#,##0.###",
+ "percent_pattern": "#,##0%",
+ "currency_pattern": "¤#,##0.00",
+ "accounting_currency_pattern": "¤#,##0.00;(¤#,##0.00)",
+ "decimal_separator": ",",
+ "grouping_separator": "."
+} \ No newline at end of file
diff --git a/library/intl/resources/number_format/qu-BO.json b/library/intl/resources/number_format/qu-BO.json
new file mode 100644
index 000000000..407be1332
--- /dev/null
+++ b/library/intl/resources/number_format/qu-BO.json
@@ -0,0 +1,9 @@
+{
+ "numbering_system": "latn",
+ "decimal_pattern": "#,##0.###",
+ "percent_pattern": "#,##0 %",
+ "currency_pattern": "¤ #,##0.00",
+ "accounting_currency_pattern": "¤ #,##0.00",
+ "decimal_separator": ",",
+ "grouping_separator": "."
+} \ No newline at end of file
diff --git a/library/intl/resources/number_format/qu.json b/library/intl/resources/number_format/qu.json
new file mode 100644
index 000000000..3534c1277
--- /dev/null
+++ b/library/intl/resources/number_format/qu.json
@@ -0,0 +1,7 @@
+{
+ "numbering_system": "latn",
+ "decimal_pattern": "#,##0.###",
+ "percent_pattern": "#,##0 %",
+ "currency_pattern": "¤ #,##0.00",
+ "accounting_currency_pattern": "¤ #,##0.00"
+} \ No newline at end of file
diff --git a/library/intl/resources/number_format/rm.json b/library/intl/resources/number_format/rm.json
new file mode 100644
index 000000000..f7a23e7ff
--- /dev/null
+++ b/library/intl/resources/number_format/rm.json
@@ -0,0 +1,9 @@
+{
+ "numbering_system": "latn",
+ "decimal_pattern": "#,##0.###",
+ "percent_pattern": "#,##0 %",
+ "currency_pattern": "#,##0.00 ¤",
+ "accounting_currency_pattern": "#,##0.00 ¤",
+ "grouping_separator": "’",
+ "minus_sign": "−"
+} \ No newline at end of file
diff --git a/library/intl/resources/number_format/rn.json b/library/intl/resources/number_format/rn.json
new file mode 100644
index 000000000..01fceee09
--- /dev/null
+++ b/library/intl/resources/number_format/rn.json
@@ -0,0 +1,9 @@
+{
+ "numbering_system": "latn",
+ "decimal_pattern": "#,##0.###",
+ "percent_pattern": "#,##0 %",
+ "currency_pattern": "#,##0.00¤",
+ "accounting_currency_pattern": "#,##0.00¤",
+ "decimal_separator": ",",
+ "grouping_separator": "."
+} \ No newline at end of file
diff --git a/library/intl/resources/number_format/ro.json b/library/intl/resources/number_format/ro.json
new file mode 100644
index 000000000..f4d872e5d
--- /dev/null
+++ b/library/intl/resources/number_format/ro.json
@@ -0,0 +1,9 @@
+{
+ "numbering_system": "latn",
+ "decimal_pattern": "#,##0.###",
+ "percent_pattern": "#,##0 %",
+ "currency_pattern": "#,##0.00 ¤",
+ "accounting_currency_pattern": "#,##0.00 ¤;(#,##0.00 ¤)",
+ "decimal_separator": ",",
+ "grouping_separator": "."
+} \ No newline at end of file
diff --git a/library/intl/resources/number_format/rof.json b/library/intl/resources/number_format/rof.json
new file mode 100644
index 000000000..a3f7208e2
--- /dev/null
+++ b/library/intl/resources/number_format/rof.json
@@ -0,0 +1,7 @@
+{
+ "numbering_system": "latn",
+ "decimal_pattern": "#,##0.###",
+ "percent_pattern": "#,##0%",
+ "currency_pattern": "¤#,##0.00",
+ "accounting_currency_pattern": "¤#,##0.00"
+} \ No newline at end of file
diff --git a/library/intl/resources/number_format/ru.json b/library/intl/resources/number_format/ru.json
new file mode 100644
index 000000000..e7aecc094
--- /dev/null
+++ b/library/intl/resources/number_format/ru.json
@@ -0,0 +1,9 @@
+{
+ "numbering_system": "latn",
+ "decimal_pattern": "#,##0.###",
+ "percent_pattern": "#,##0 %",
+ "currency_pattern": "#,##0.00 ¤",
+ "accounting_currency_pattern": "#,##0.00 ¤",
+ "decimal_separator": ",",
+ "grouping_separator": " "
+} \ No newline at end of file
diff --git a/library/intl/resources/number_format/rw.json b/library/intl/resources/number_format/rw.json
new file mode 100644
index 000000000..f6e200db5
--- /dev/null
+++ b/library/intl/resources/number_format/rw.json
@@ -0,0 +1,9 @@
+{
+ "numbering_system": "latn",
+ "decimal_pattern": "#,##0.###",
+ "percent_pattern": "#,##0%",
+ "currency_pattern": "¤ #,##0.00",
+ "accounting_currency_pattern": "¤ #,##0.00",
+ "decimal_separator": ",",
+ "grouping_separator": "."
+} \ No newline at end of file
diff --git a/library/intl/resources/number_format/rwk.json b/library/intl/resources/number_format/rwk.json
new file mode 100644
index 000000000..c00aa2b2f
--- /dev/null
+++ b/library/intl/resources/number_format/rwk.json
@@ -0,0 +1,7 @@
+{
+ "numbering_system": "latn",
+ "decimal_pattern": "#,##0.###",
+ "percent_pattern": "#,##0%",
+ "currency_pattern": "#,##0.00¤",
+ "accounting_currency_pattern": "#,##0.00¤"
+} \ No newline at end of file
diff --git a/library/intl/resources/number_format/sah.json b/library/intl/resources/number_format/sah.json
new file mode 100644
index 000000000..76f3ddcb5
--- /dev/null
+++ b/library/intl/resources/number_format/sah.json
@@ -0,0 +1,7 @@
+{
+ "numbering_system": "latn",
+ "decimal_pattern": "#,##0.###",
+ "percent_pattern": "#,##0%",
+ "currency_pattern": "¤ #,##0.00",
+ "accounting_currency_pattern": "¤ #,##0.00"
+} \ No newline at end of file
diff --git a/library/intl/resources/number_format/saq.json b/library/intl/resources/number_format/saq.json
new file mode 100644
index 000000000..ff3ecbde6
--- /dev/null
+++ b/library/intl/resources/number_format/saq.json
@@ -0,0 +1,7 @@
+{
+ "numbering_system": "latn",
+ "decimal_pattern": "#,##0.###",
+ "percent_pattern": "#,##0%",
+ "currency_pattern": "¤#,##0.00",
+ "accounting_currency_pattern": "¤#,##0.00;(¤#,##0.00)"
+} \ No newline at end of file
diff --git a/library/intl/resources/number_format/sbp.json b/library/intl/resources/number_format/sbp.json
new file mode 100644
index 000000000..c00aa2b2f
--- /dev/null
+++ b/library/intl/resources/number_format/sbp.json
@@ -0,0 +1,7 @@
+{
+ "numbering_system": "latn",
+ "decimal_pattern": "#,##0.###",
+ "percent_pattern": "#,##0%",
+ "currency_pattern": "#,##0.00¤",
+ "accounting_currency_pattern": "#,##0.00¤"
+} \ No newline at end of file
diff --git a/library/intl/resources/number_format/se.json b/library/intl/resources/number_format/se.json
new file mode 100644
index 000000000..4c5b82818
--- /dev/null
+++ b/library/intl/resources/number_format/se.json
@@ -0,0 +1,10 @@
+{
+ "numbering_system": "latn",
+ "decimal_pattern": "#,##0.###",
+ "percent_pattern": "#,##0 %",
+ "currency_pattern": "#,##0.00 ¤",
+ "accounting_currency_pattern": "#,##0.00 ¤",
+ "decimal_separator": ",",
+ "grouping_separator": " ",
+ "minus_sign": "−"
+} \ No newline at end of file
diff --git a/library/intl/resources/number_format/seh.json b/library/intl/resources/number_format/seh.json
new file mode 100644
index 000000000..d4ecf4607
--- /dev/null
+++ b/library/intl/resources/number_format/seh.json
@@ -0,0 +1,9 @@
+{
+ "numbering_system": "latn",
+ "decimal_pattern": "#,##0.###",
+ "percent_pattern": "#,##0%",
+ "currency_pattern": "#,##0.00¤",
+ "accounting_currency_pattern": "#,##0.00¤",
+ "decimal_separator": ",",
+ "grouping_separator": "."
+} \ No newline at end of file
diff --git a/library/intl/resources/number_format/ses.json b/library/intl/resources/number_format/ses.json
new file mode 100644
index 000000000..23ba53115
--- /dev/null
+++ b/library/intl/resources/number_format/ses.json
@@ -0,0 +1,8 @@
+{
+ "numbering_system": "latn",
+ "decimal_pattern": "#,##0.###",
+ "percent_pattern": "#,##0%",
+ "currency_pattern": "#,##0.00¤",
+ "accounting_currency_pattern": "#,##0.00¤",
+ "grouping_separator": " "
+} \ No newline at end of file
diff --git a/library/intl/resources/number_format/sg.json b/library/intl/resources/number_format/sg.json
new file mode 100644
index 000000000..ce91051ad
--- /dev/null
+++ b/library/intl/resources/number_format/sg.json
@@ -0,0 +1,9 @@
+{
+ "numbering_system": "latn",
+ "decimal_pattern": "#,##0.###",
+ "percent_pattern": "#,##0%",
+ "currency_pattern": "¤#,##0.00;¤-#,##0.00",
+ "accounting_currency_pattern": "¤#,##0.00;¤-#,##0.00",
+ "decimal_separator": ",",
+ "grouping_separator": "."
+} \ No newline at end of file
diff --git a/library/intl/resources/number_format/shi.json b/library/intl/resources/number_format/shi.json
new file mode 100644
index 000000000..f86dca5c9
--- /dev/null
+++ b/library/intl/resources/number_format/shi.json
@@ -0,0 +1,9 @@
+{
+ "numbering_system": "latn",
+ "decimal_pattern": "#,##0.###",
+ "percent_pattern": "#,##0%",
+ "currency_pattern": "#,##0.00¤",
+ "accounting_currency_pattern": "#,##0.00¤",
+ "decimal_separator": ",",
+ "grouping_separator": " "
+} \ No newline at end of file
diff --git a/library/intl/resources/number_format/si.json b/library/intl/resources/number_format/si.json
new file mode 100644
index 000000000..ff3ecbde6
--- /dev/null
+++ b/library/intl/resources/number_format/si.json
@@ -0,0 +1,7 @@
+{
+ "numbering_system": "latn",
+ "decimal_pattern": "#,##0.###",
+ "percent_pattern": "#,##0%",
+ "currency_pattern": "¤#,##0.00",
+ "accounting_currency_pattern": "¤#,##0.00;(¤#,##0.00)"
+} \ No newline at end of file
diff --git a/library/intl/resources/number_format/sk.json b/library/intl/resources/number_format/sk.json
new file mode 100644
index 000000000..5458fba77
--- /dev/null
+++ b/library/intl/resources/number_format/sk.json
@@ -0,0 +1,9 @@
+{
+ "numbering_system": "latn",
+ "decimal_pattern": "#,##0.###",
+ "percent_pattern": "#,##0 %",
+ "currency_pattern": "#,##0.00 ¤",
+ "accounting_currency_pattern": "#,##0.00 ¤;(#,##0.00 ¤)",
+ "decimal_separator": ",",
+ "grouping_separator": " "
+} \ No newline at end of file
diff --git a/library/intl/resources/number_format/sl.json b/library/intl/resources/number_format/sl.json
new file mode 100644
index 000000000..d79067fe7
--- /dev/null
+++ b/library/intl/resources/number_format/sl.json
@@ -0,0 +1,9 @@
+{
+ "numbering_system": "latn",
+ "decimal_pattern": "#,##0.###",
+ "percent_pattern": "#,##0%",
+ "currency_pattern": "#,##0.00 ¤",
+ "accounting_currency_pattern": "#,##0.00 ¤;(#,##0.00 ¤)",
+ "decimal_separator": ",",
+ "grouping_separator": "."
+} \ No newline at end of file
diff --git a/library/intl/resources/number_format/smn.json b/library/intl/resources/number_format/smn.json
new file mode 100644
index 000000000..76f3ddcb5
--- /dev/null
+++ b/library/intl/resources/number_format/smn.json
@@ -0,0 +1,7 @@
+{
+ "numbering_system": "latn",
+ "decimal_pattern": "#,##0.###",
+ "percent_pattern": "#,##0%",
+ "currency_pattern": "¤ #,##0.00",
+ "accounting_currency_pattern": "¤ #,##0.00"
+} \ No newline at end of file
diff --git a/library/intl/resources/number_format/sn.json b/library/intl/resources/number_format/sn.json
new file mode 100644
index 000000000..ff3ecbde6
--- /dev/null
+++ b/library/intl/resources/number_format/sn.json
@@ -0,0 +1,7 @@
+{
+ "numbering_system": "latn",
+ "decimal_pattern": "#,##0.###",
+ "percent_pattern": "#,##0%",
+ "currency_pattern": "¤#,##0.00",
+ "accounting_currency_pattern": "¤#,##0.00;(¤#,##0.00)"
+} \ No newline at end of file
diff --git a/library/intl/resources/number_format/so.json b/library/intl/resources/number_format/so.json
new file mode 100644
index 000000000..a3f7208e2
--- /dev/null
+++ b/library/intl/resources/number_format/so.json
@@ -0,0 +1,7 @@
+{
+ "numbering_system": "latn",
+ "decimal_pattern": "#,##0.###",
+ "percent_pattern": "#,##0%",
+ "currency_pattern": "¤#,##0.00",
+ "accounting_currency_pattern": "¤#,##0.00"
+} \ No newline at end of file
diff --git a/library/intl/resources/number_format/sq.json b/library/intl/resources/number_format/sq.json
new file mode 100644
index 000000000..d72bc1232
--- /dev/null
+++ b/library/intl/resources/number_format/sq.json
@@ -0,0 +1,9 @@
+{
+ "numbering_system": "latn",
+ "decimal_pattern": "#,##0.###",
+ "percent_pattern": "#,##0%",
+ "currency_pattern": "#,##0.00 ¤",
+ "accounting_currency_pattern": "#,##0.00 ¤;(#,##0.00 ¤)",
+ "decimal_separator": ",",
+ "grouping_separator": " "
+} \ No newline at end of file
diff --git a/library/intl/resources/number_format/sr.json b/library/intl/resources/number_format/sr.json
new file mode 100644
index 000000000..d79067fe7
--- /dev/null
+++ b/library/intl/resources/number_format/sr.json
@@ -0,0 +1,9 @@
+{
+ "numbering_system": "latn",
+ "decimal_pattern": "#,##0.###",
+ "percent_pattern": "#,##0%",
+ "currency_pattern": "#,##0.00 ¤",
+ "accounting_currency_pattern": "#,##0.00 ¤;(#,##0.00 ¤)",
+ "decimal_separator": ",",
+ "grouping_separator": "."
+} \ No newline at end of file
diff --git a/library/intl/resources/number_format/ss.json b/library/intl/resources/number_format/ss.json
new file mode 100644
index 000000000..a17a8c14d
--- /dev/null
+++ b/library/intl/resources/number_format/ss.json
@@ -0,0 +1,9 @@
+{
+ "numbering_system": "latn",
+ "decimal_pattern": "#,##0.###",
+ "percent_pattern": "#,##0%",
+ "currency_pattern": "¤#,##0.00",
+ "accounting_currency_pattern": "¤#,##0.00",
+ "decimal_separator": ",",
+ "grouping_separator": " "
+} \ No newline at end of file
diff --git a/library/intl/resources/number_format/ssy.json b/library/intl/resources/number_format/ssy.json
new file mode 100644
index 000000000..a3f7208e2
--- /dev/null
+++ b/library/intl/resources/number_format/ssy.json
@@ -0,0 +1,7 @@
+{
+ "numbering_system": "latn",
+ "decimal_pattern": "#,##0.###",
+ "percent_pattern": "#,##0%",
+ "currency_pattern": "¤#,##0.00",
+ "accounting_currency_pattern": "¤#,##0.00"
+} \ No newline at end of file
diff --git a/library/intl/resources/number_format/sv.json b/library/intl/resources/number_format/sv.json
new file mode 100644
index 000000000..4c5b82818
--- /dev/null
+++ b/library/intl/resources/number_format/sv.json
@@ -0,0 +1,10 @@
+{
+ "numbering_system": "latn",
+ "decimal_pattern": "#,##0.###",
+ "percent_pattern": "#,##0 %",
+ "currency_pattern": "#,##0.00 ¤",
+ "accounting_currency_pattern": "#,##0.00 ¤",
+ "decimal_separator": ",",
+ "grouping_separator": " ",
+ "minus_sign": "−"
+} \ No newline at end of file
diff --git a/library/intl/resources/number_format/sw.json b/library/intl/resources/number_format/sw.json
new file mode 100644
index 000000000..ff3ecbde6
--- /dev/null
+++ b/library/intl/resources/number_format/sw.json
@@ -0,0 +1,7 @@
+{
+ "numbering_system": "latn",
+ "decimal_pattern": "#,##0.###",
+ "percent_pattern": "#,##0%",
+ "currency_pattern": "¤#,##0.00",
+ "accounting_currency_pattern": "¤#,##0.00;(¤#,##0.00)"
+} \ No newline at end of file
diff --git a/library/intl/resources/number_format/swc.json b/library/intl/resources/number_format/swc.json
new file mode 100644
index 000000000..2d0b0fad1
--- /dev/null
+++ b/library/intl/resources/number_format/swc.json
@@ -0,0 +1,9 @@
+{
+ "numbering_system": "latn",
+ "decimal_pattern": "#,##0.###",
+ "percent_pattern": "#,##0%",
+ "currency_pattern": "¤#,##0.00",
+ "accounting_currency_pattern": "¤#,##0.00",
+ "decimal_separator": ",",
+ "grouping_separator": "."
+} \ No newline at end of file
diff --git a/library/intl/resources/number_format/ta-MY.json b/library/intl/resources/number_format/ta-MY.json
new file mode 100644
index 000000000..131e11ee5
--- /dev/null
+++ b/library/intl/resources/number_format/ta-MY.json
@@ -0,0 +1,7 @@
+{
+ "numbering_system": "latn",
+ "decimal_pattern": "#,##0.###",
+ "percent_pattern": "#,##0%",
+ "currency_pattern": "¤ #,##0.00",
+ "accounting_currency_pattern": "¤#,##0.00;(¤#,##0.00)"
+} \ No newline at end of file
diff --git a/library/intl/resources/number_format/ta-SG.json b/library/intl/resources/number_format/ta-SG.json
new file mode 100644
index 000000000..131e11ee5
--- /dev/null
+++ b/library/intl/resources/number_format/ta-SG.json
@@ -0,0 +1,7 @@
+{
+ "numbering_system": "latn",
+ "decimal_pattern": "#,##0.###",
+ "percent_pattern": "#,##0%",
+ "currency_pattern": "¤ #,##0.00",
+ "accounting_currency_pattern": "¤#,##0.00;(¤#,##0.00)"
+} \ No newline at end of file
diff --git a/library/intl/resources/number_format/ta.json b/library/intl/resources/number_format/ta.json
new file mode 100644
index 000000000..816eff469
--- /dev/null
+++ b/library/intl/resources/number_format/ta.json
@@ -0,0 +1,7 @@
+{
+ "numbering_system": "latn",
+ "decimal_pattern": "#,##,##0.###",
+ "percent_pattern": "#,##,##0%",
+ "currency_pattern": "¤ #,##,##0.00",
+ "accounting_currency_pattern": "¤#,##0.00;(¤#,##0.00)"
+} \ No newline at end of file
diff --git a/library/intl/resources/number_format/te.json b/library/intl/resources/number_format/te.json
new file mode 100644
index 000000000..bb26b152a
--- /dev/null
+++ b/library/intl/resources/number_format/te.json
@@ -0,0 +1,7 @@
+{
+ "numbering_system": "latn",
+ "decimal_pattern": "#,##,##0.###",
+ "percent_pattern": "#,##0%",
+ "currency_pattern": "¤#,##,##0.00",
+ "accounting_currency_pattern": "¤#,##,##0.00;(¤#,##,##0.00)"
+} \ No newline at end of file
diff --git a/library/intl/resources/number_format/teo.json b/library/intl/resources/number_format/teo.json
new file mode 100644
index 000000000..ff3ecbde6
--- /dev/null
+++ b/library/intl/resources/number_format/teo.json
@@ -0,0 +1,7 @@
+{
+ "numbering_system": "latn",
+ "decimal_pattern": "#,##0.###",
+ "percent_pattern": "#,##0%",
+ "currency_pattern": "¤#,##0.00",
+ "accounting_currency_pattern": "¤#,##0.00;(¤#,##0.00)"
+} \ No newline at end of file
diff --git a/library/intl/resources/number_format/th.json b/library/intl/resources/number_format/th.json
new file mode 100644
index 000000000..ff3ecbde6
--- /dev/null
+++ b/library/intl/resources/number_format/th.json
@@ -0,0 +1,7 @@
+{
+ "numbering_system": "latn",
+ "decimal_pattern": "#,##0.###",
+ "percent_pattern": "#,##0%",
+ "currency_pattern": "¤#,##0.00",
+ "accounting_currency_pattern": "¤#,##0.00;(¤#,##0.00)"
+} \ No newline at end of file
diff --git a/library/intl/resources/number_format/ti.json b/library/intl/resources/number_format/ti.json
new file mode 100644
index 000000000..a3f7208e2
--- /dev/null
+++ b/library/intl/resources/number_format/ti.json
@@ -0,0 +1,7 @@
+{
+ "numbering_system": "latn",
+ "decimal_pattern": "#,##0.###",
+ "percent_pattern": "#,##0%",
+ "currency_pattern": "¤#,##0.00",
+ "accounting_currency_pattern": "¤#,##0.00"
+} \ No newline at end of file
diff --git a/library/intl/resources/number_format/tn.json b/library/intl/resources/number_format/tn.json
new file mode 100644
index 000000000..bfdcf22d4
--- /dev/null
+++ b/library/intl/resources/number_format/tn.json
@@ -0,0 +1,8 @@
+{
+ "numbering_system": "latn",
+ "decimal_pattern": "#,##0.###",
+ "percent_pattern": "#,##0%",
+ "currency_pattern": "¤#,##0.00",
+ "accounting_currency_pattern": "¤#,##0.00",
+ "grouping_separator": " "
+} \ No newline at end of file
diff --git a/library/intl/resources/number_format/to.json b/library/intl/resources/number_format/to.json
new file mode 100644
index 000000000..76f3ddcb5
--- /dev/null
+++ b/library/intl/resources/number_format/to.json
@@ -0,0 +1,7 @@
+{
+ "numbering_system": "latn",
+ "decimal_pattern": "#,##0.###",
+ "percent_pattern": "#,##0%",
+ "currency_pattern": "¤ #,##0.00",
+ "accounting_currency_pattern": "¤ #,##0.00"
+} \ No newline at end of file
diff --git a/library/intl/resources/number_format/tr.json b/library/intl/resources/number_format/tr.json
new file mode 100644
index 000000000..2950f361c
--- /dev/null
+++ b/library/intl/resources/number_format/tr.json
@@ -0,0 +1,9 @@
+{
+ "numbering_system": "latn",
+ "decimal_pattern": "#,##0.###",
+ "percent_pattern": "%#,##0",
+ "currency_pattern": "#,##0.00 ¤",
+ "accounting_currency_pattern": "#,##0.00 ¤;(#,##0.00 ¤)",
+ "decimal_separator": ",",
+ "grouping_separator": "."
+} \ No newline at end of file
diff --git a/library/intl/resources/number_format/ts.json b/library/intl/resources/number_format/ts.json
new file mode 100644
index 000000000..a17a8c14d
--- /dev/null
+++ b/library/intl/resources/number_format/ts.json
@@ -0,0 +1,9 @@
+{
+ "numbering_system": "latn",
+ "decimal_pattern": "#,##0.###",
+ "percent_pattern": "#,##0%",
+ "currency_pattern": "¤#,##0.00",
+ "accounting_currency_pattern": "¤#,##0.00",
+ "decimal_separator": ",",
+ "grouping_separator": " "
+} \ No newline at end of file
diff --git a/library/intl/resources/number_format/twq.json b/library/intl/resources/number_format/twq.json
new file mode 100644
index 000000000..23ba53115
--- /dev/null
+++ b/library/intl/resources/number_format/twq.json
@@ -0,0 +1,8 @@
+{
+ "numbering_system": "latn",
+ "decimal_pattern": "#,##0.###",
+ "percent_pattern": "#,##0%",
+ "currency_pattern": "#,##0.00¤",
+ "accounting_currency_pattern": "#,##0.00¤",
+ "grouping_separator": " "
+} \ No newline at end of file
diff --git a/library/intl/resources/number_format/tzm.json b/library/intl/resources/number_format/tzm.json
new file mode 100644
index 000000000..dde2cfe27
--- /dev/null
+++ b/library/intl/resources/number_format/tzm.json
@@ -0,0 +1,9 @@
+{
+ "numbering_system": "latn",
+ "decimal_pattern": "#,##0.###",
+ "percent_pattern": "#,##0%",
+ "currency_pattern": "#,##0.00 ¤",
+ "accounting_currency_pattern": "#,##0.00 ¤",
+ "decimal_separator": ",",
+ "grouping_separator": " "
+} \ No newline at end of file
diff --git a/library/intl/resources/number_format/ug.json b/library/intl/resources/number_format/ug.json
new file mode 100644
index 000000000..ff3ecbde6
--- /dev/null
+++ b/library/intl/resources/number_format/ug.json
@@ -0,0 +1,7 @@
+{
+ "numbering_system": "latn",
+ "decimal_pattern": "#,##0.###",
+ "percent_pattern": "#,##0%",
+ "currency_pattern": "¤#,##0.00",
+ "accounting_currency_pattern": "¤#,##0.00;(¤#,##0.00)"
+} \ No newline at end of file
diff --git a/library/intl/resources/number_format/uk.json b/library/intl/resources/number_format/uk.json
new file mode 100644
index 000000000..7aa3ad369
--- /dev/null
+++ b/library/intl/resources/number_format/uk.json
@@ -0,0 +1,9 @@
+{
+ "numbering_system": "latn",
+ "decimal_pattern": "#,##0.###",
+ "percent_pattern": "#,##0%",
+ "currency_pattern": "#,##0.00 ¤",
+ "accounting_currency_pattern": "#,##0.00¤;(#,##0.00¤)",
+ "decimal_separator": ",",
+ "grouping_separator": " "
+} \ No newline at end of file
diff --git a/library/intl/resources/number_format/ur-IN.json b/library/intl/resources/number_format/ur-IN.json
new file mode 100644
index 000000000..972fb3c39
--- /dev/null
+++ b/library/intl/resources/number_format/ur-IN.json
@@ -0,0 +1,9 @@
+{
+ "numbering_system": "arabext",
+ "decimal_pattern": "#,##,##0.###",
+ "percent_pattern": "#,##,##0%",
+ "currency_pattern": "¤ #,##,##0.00",
+ "accounting_currency_pattern": "¤ #,##,##0.00",
+ "plus_sign": "‎+‎",
+ "minus_sign": "‎-‎"
+} \ No newline at end of file
diff --git a/library/intl/resources/number_format/ur.json b/library/intl/resources/number_format/ur.json
new file mode 100644
index 000000000..b1a9ac268
--- /dev/null
+++ b/library/intl/resources/number_format/ur.json
@@ -0,0 +1,9 @@
+{
+ "numbering_system": "latn",
+ "decimal_pattern": "#,##0.###",
+ "percent_pattern": "#,##,##0%",
+ "currency_pattern": "¤ #,##,##0.00",
+ "accounting_currency_pattern": "¤ #,##,##0.00",
+ "plus_sign": "‎+",
+ "minus_sign": "‎-"
+} \ No newline at end of file
diff --git a/library/intl/resources/number_format/uz-Arab.json b/library/intl/resources/number_format/uz-Arab.json
new file mode 100644
index 000000000..4c162b17d
--- /dev/null
+++ b/library/intl/resources/number_format/uz-Arab.json
@@ -0,0 +1,12 @@
+{
+ "numbering_system": "arabext",
+ "decimal_pattern": "#,##0.###",
+ "percent_pattern": "#,##0%",
+ "currency_pattern": "#,##0.00 ¤",
+ "accounting_currency_pattern": "#,##0.00 ¤",
+ "decimal_separator": "Ù«",
+ "grouping_separator": "Ù¬",
+ "plus_sign": "‎+‎",
+ "minus_sign": "‎-‎",
+ "percent_sign": "Ùª"
+} \ No newline at end of file
diff --git a/library/intl/resources/number_format/uz.json b/library/intl/resources/number_format/uz.json
new file mode 100644
index 000000000..c97d61fb2
--- /dev/null
+++ b/library/intl/resources/number_format/uz.json
@@ -0,0 +1,9 @@
+{
+ "numbering_system": "latn",
+ "decimal_pattern": "#,##0.###",
+ "percent_pattern": "#,##0%",
+ "currency_pattern": "¤ #,##0.00",
+ "accounting_currency_pattern": "¤ #,##0.00",
+ "decimal_separator": ",",
+ "grouping_separator": " "
+} \ No newline at end of file
diff --git a/library/intl/resources/number_format/vai.json b/library/intl/resources/number_format/vai.json
new file mode 100644
index 000000000..ff3ecbde6
--- /dev/null
+++ b/library/intl/resources/number_format/vai.json
@@ -0,0 +1,7 @@
+{
+ "numbering_system": "latn",
+ "decimal_pattern": "#,##0.###",
+ "percent_pattern": "#,##0%",
+ "currency_pattern": "¤#,##0.00",
+ "accounting_currency_pattern": "¤#,##0.00;(¤#,##0.00)"
+} \ No newline at end of file
diff --git a/library/intl/resources/number_format/ve.json b/library/intl/resources/number_format/ve.json
new file mode 100644
index 000000000..a17a8c14d
--- /dev/null
+++ b/library/intl/resources/number_format/ve.json
@@ -0,0 +1,9 @@
+{
+ "numbering_system": "latn",
+ "decimal_pattern": "#,##0.###",
+ "percent_pattern": "#,##0%",
+ "currency_pattern": "¤#,##0.00",
+ "accounting_currency_pattern": "¤#,##0.00",
+ "decimal_separator": ",",
+ "grouping_separator": " "
+} \ No newline at end of file
diff --git a/library/intl/resources/number_format/vi.json b/library/intl/resources/number_format/vi.json
new file mode 100644
index 000000000..639e6c938
--- /dev/null
+++ b/library/intl/resources/number_format/vi.json
@@ -0,0 +1,9 @@
+{
+ "numbering_system": "latn",
+ "decimal_pattern": "#,##0.###",
+ "percent_pattern": "#,##0%",
+ "currency_pattern": "#,##0.00 ¤",
+ "accounting_currency_pattern": "#,##0.00 ¤",
+ "decimal_separator": ",",
+ "grouping_separator": "."
+} \ No newline at end of file
diff --git a/library/intl/resources/number_format/vo.json b/library/intl/resources/number_format/vo.json
new file mode 100644
index 000000000..76f3ddcb5
--- /dev/null
+++ b/library/intl/resources/number_format/vo.json
@@ -0,0 +1,7 @@
+{
+ "numbering_system": "latn",
+ "decimal_pattern": "#,##0.###",
+ "percent_pattern": "#,##0%",
+ "currency_pattern": "¤ #,##0.00",
+ "accounting_currency_pattern": "¤ #,##0.00"
+} \ No newline at end of file
diff --git a/library/intl/resources/number_format/vun.json b/library/intl/resources/number_format/vun.json
new file mode 100644
index 000000000..a3f7208e2
--- /dev/null
+++ b/library/intl/resources/number_format/vun.json
@@ -0,0 +1,7 @@
+{
+ "numbering_system": "latn",
+ "decimal_pattern": "#,##0.###",
+ "percent_pattern": "#,##0%",
+ "currency_pattern": "¤#,##0.00",
+ "accounting_currency_pattern": "¤#,##0.00"
+} \ No newline at end of file
diff --git a/library/intl/resources/number_format/wae.json b/library/intl/resources/number_format/wae.json
new file mode 100644
index 000000000..4f32aa8e3
--- /dev/null
+++ b/library/intl/resources/number_format/wae.json
@@ -0,0 +1,9 @@
+{
+ "numbering_system": "latn",
+ "decimal_pattern": "#,##0.###",
+ "percent_pattern": "#,##0%",
+ "currency_pattern": "¤ #,##0.00",
+ "accounting_currency_pattern": "¤ #,##0.00",
+ "decimal_separator": ",",
+ "grouping_separator": "’"
+} \ No newline at end of file
diff --git a/library/intl/resources/number_format/xog.json b/library/intl/resources/number_format/xog.json
new file mode 100644
index 000000000..5ca4d4e1c
--- /dev/null
+++ b/library/intl/resources/number_format/xog.json
@@ -0,0 +1,7 @@
+{
+ "numbering_system": "latn",
+ "decimal_pattern": "#,##0.###",
+ "percent_pattern": "#,##0%",
+ "currency_pattern": "#,##0.00 ¤",
+ "accounting_currency_pattern": "#,##0.00 ¤"
+} \ No newline at end of file
diff --git a/library/intl/resources/number_format/yav.json b/library/intl/resources/number_format/yav.json
new file mode 100644
index 000000000..d72bc1232
--- /dev/null
+++ b/library/intl/resources/number_format/yav.json
@@ -0,0 +1,9 @@
+{
+ "numbering_system": "latn",
+ "decimal_pattern": "#,##0.###",
+ "percent_pattern": "#,##0%",
+ "currency_pattern": "#,##0.00 ¤",
+ "accounting_currency_pattern": "#,##0.00 ¤;(#,##0.00 ¤)",
+ "decimal_separator": ",",
+ "grouping_separator": " "
+} \ No newline at end of file
diff --git a/library/intl/resources/number_format/yi.json b/library/intl/resources/number_format/yi.json
new file mode 100644
index 000000000..76f3ddcb5
--- /dev/null
+++ b/library/intl/resources/number_format/yi.json
@@ -0,0 +1,7 @@
+{
+ "numbering_system": "latn",
+ "decimal_pattern": "#,##0.###",
+ "percent_pattern": "#,##0%",
+ "currency_pattern": "¤ #,##0.00",
+ "accounting_currency_pattern": "¤ #,##0.00"
+} \ No newline at end of file
diff --git a/library/intl/resources/number_format/yo.json b/library/intl/resources/number_format/yo.json
new file mode 100644
index 000000000..ff3ecbde6
--- /dev/null
+++ b/library/intl/resources/number_format/yo.json
@@ -0,0 +1,7 @@
+{
+ "numbering_system": "latn",
+ "decimal_pattern": "#,##0.###",
+ "percent_pattern": "#,##0%",
+ "currency_pattern": "¤#,##0.00",
+ "accounting_currency_pattern": "¤#,##0.00;(¤#,##0.00)"
+} \ No newline at end of file
diff --git a/library/intl/resources/number_format/zgh.json b/library/intl/resources/number_format/zgh.json
new file mode 100644
index 000000000..8ecea403c
--- /dev/null
+++ b/library/intl/resources/number_format/zgh.json
@@ -0,0 +1,9 @@
+{
+ "numbering_system": "latn",
+ "decimal_pattern": "#,##0.###",
+ "percent_pattern": "#,##0 %",
+ "currency_pattern": "#,##0.00¤",
+ "accounting_currency_pattern": "#,##0.00¤",
+ "decimal_separator": ",",
+ "grouping_separator": " "
+} \ No newline at end of file
diff --git a/library/intl/resources/number_format/zh-Hans-HK.json b/library/intl/resources/number_format/zh-Hans-HK.json
new file mode 100644
index 000000000..ff3ecbde6
--- /dev/null
+++ b/library/intl/resources/number_format/zh-Hans-HK.json
@@ -0,0 +1,7 @@
+{
+ "numbering_system": "latn",
+ "decimal_pattern": "#,##0.###",
+ "percent_pattern": "#,##0%",
+ "currency_pattern": "¤#,##0.00",
+ "accounting_currency_pattern": "¤#,##0.00;(¤#,##0.00)"
+} \ No newline at end of file
diff --git a/library/intl/resources/number_format/zh-Hans-MO.json b/library/intl/resources/number_format/zh-Hans-MO.json
new file mode 100644
index 000000000..ff3ecbde6
--- /dev/null
+++ b/library/intl/resources/number_format/zh-Hans-MO.json
@@ -0,0 +1,7 @@
+{
+ "numbering_system": "latn",
+ "decimal_pattern": "#,##0.###",
+ "percent_pattern": "#,##0%",
+ "currency_pattern": "¤#,##0.00",
+ "accounting_currency_pattern": "¤#,##0.00;(¤#,##0.00)"
+} \ No newline at end of file
diff --git a/library/intl/resources/number_format/zh-Hans-SG.json b/library/intl/resources/number_format/zh-Hans-SG.json
new file mode 100644
index 000000000..ff3ecbde6
--- /dev/null
+++ b/library/intl/resources/number_format/zh-Hans-SG.json
@@ -0,0 +1,7 @@
+{
+ "numbering_system": "latn",
+ "decimal_pattern": "#,##0.###",
+ "percent_pattern": "#,##0%",
+ "currency_pattern": "¤#,##0.00",
+ "accounting_currency_pattern": "¤#,##0.00;(¤#,##0.00)"
+} \ No newline at end of file
diff --git a/library/intl/resources/number_format/zh-Hant.json b/library/intl/resources/number_format/zh-Hant.json
new file mode 100644
index 000000000..ff3ecbde6
--- /dev/null
+++ b/library/intl/resources/number_format/zh-Hant.json
@@ -0,0 +1,7 @@
+{
+ "numbering_system": "latn",
+ "decimal_pattern": "#,##0.###",
+ "percent_pattern": "#,##0%",
+ "currency_pattern": "¤#,##0.00",
+ "accounting_currency_pattern": "¤#,##0.00;(¤#,##0.00)"
+} \ No newline at end of file
diff --git a/library/intl/resources/number_format/zh.json b/library/intl/resources/number_format/zh.json
new file mode 100644
index 000000000..131e11ee5
--- /dev/null
+++ b/library/intl/resources/number_format/zh.json
@@ -0,0 +1,7 @@
+{
+ "numbering_system": "latn",
+ "decimal_pattern": "#,##0.###",
+ "percent_pattern": "#,##0%",
+ "currency_pattern": "¤ #,##0.00",
+ "accounting_currency_pattern": "¤#,##0.00;(¤#,##0.00)"
+} \ No newline at end of file
diff --git a/library/intl/resources/number_format/zu.json b/library/intl/resources/number_format/zu.json
new file mode 100644
index 000000000..ff3ecbde6
--- /dev/null
+++ b/library/intl/resources/number_format/zu.json
@@ -0,0 +1,7 @@
+{
+ "numbering_system": "latn",
+ "decimal_pattern": "#,##0.###",
+ "percent_pattern": "#,##0%",
+ "currency_pattern": "¤#,##0.00",
+ "accounting_currency_pattern": "¤#,##0.00;(¤#,##0.00)"
+} \ No newline at end of file
diff --git a/library/intl/scripts/country/generate.php b/library/intl/scripts/country/generate.php
new file mode 100644
index 000000000..879dc0a25
--- /dev/null
+++ b/library/intl/scripts/country/generate.php
@@ -0,0 +1,162 @@
+<?php
+
+/**
+ * Generates the json files stored in resources/country.
+ */
+
+set_time_limit(0);
+
+// Downloaded from http://unicode.org/Public/cldr/26/json-full.zip
+$enCountries = '../json-full/main/en/territories.json';
+$codeMappings = '../json-full/supplemental/codeMappings.json';
+$telephoneCodeData = '../json-full/supplemental/telephoneCodeData.json';
+if (!file_exists($enCountries)) {
+ die("The $enCountries file was not found");
+}
+if (!file_exists($codeMappings)) {
+ die("The $codeMappings file was not found");
+}
+if (!file_exists($telephoneCodeData)) {
+ die("The $telephoneCodeData file was not found");
+}
+if (!function_exists('collator_create')) {
+ // Reimplementing intl's collator would be a huge undertaking, so we
+ // use it instead to presort the generated locale specific data.
+ die('The intl extension was not found.');
+}
+
+$ignoredCountries = array(
+ 'AN', // Netherlands Antilles, no longer exists.
+ 'BV', 'HM', 'CP', // Uninhabited islands.
+ 'EU', 'QO', // European Union, Outlying Oceania. Not countries.
+ 'ZZ', // Unknown region
+);
+
+// Locales listed without a "-" match all variants.
+// Locales listed with a "-" match only those exact ones.
+$ignoredLocales = array(
+ // Interlingua is a made up language.
+ 'ia',
+ // Valencian differs from its parent only by a single character (è/é).
+ 'ca-ES-VALENCIA',
+ // Those locales are 90% untranslated.
+ 'aa', 'as', 'az-Cyrl', 'az-Cyrl-AZ', 'bem', 'dua', 'gv', 'haw', 'ig', 'ii',
+ 'kkj', 'kok', 'kw', 'lkt', 'mgo', 'nnh', 'nr', 'nso', 'om', 'os', 'pa-Arab',
+ 'pa-Arab-PK', 'qu', 'rw', 'sah', 'smn', 'ss', 'ssy', 'st', 'tg', 'tn', 'ts',
+ 'uz-Arab', 'uz-Arab-AF', 've', 'vo', 'xh', 'yi',
+ // Special "grouping" locales.
+ 'root', 'en-US-POSIX', 'en-001', 'en-150', 'es-419',
+);
+
+// Assemble the base data. Use the "en" data to get a list of countries.
+$telephoneCodeData = json_decode(file_get_contents($telephoneCodeData), true);
+$telephoneCodeData = $telephoneCodeData['supplemental']['telephoneCodeData'];
+$codeMappings = json_decode(file_get_contents($codeMappings), true);
+$codeMappings = $codeMappings['supplemental']['codeMappings'];
+$countryData = json_decode(file_get_contents($enCountries), true);
+$countryData = $countryData['main']['en']['localeDisplayNames']['territories'];
+$baseData = array();
+foreach ($countryData as $countryCode => $countryName) {
+ if (is_numeric($countryCode) || in_array($countryCode, $ignoredCountries)) {
+ // Ignore continents, regions, uninhabited islands.
+ continue;
+ }
+ if (strpos($countryCode, '-alt-') !== FALSE) {
+ // Ignore alternative names.
+ continue;
+ }
+
+ $baseData[$countryCode]['code'] = $countryCode;
+ // Countries are not guaranteed to have an alpha3 and/or numeric code.
+ if (isset($codeMappings[$countryCode]['_alpha3'])) {
+ $baseData[$countryCode]['three_letter_code'] = $codeMappings[$countryCode]['_alpha3'];
+ }
+ if (isset($codeMappings[$countryCode]['_numeric'])) {
+ $baseData[$countryCode]['numeric_code'] = $codeMappings[$countryCode]['_numeric'];
+ }
+
+ // Determine the telephone code for this country.
+ if (in_array($countryCode, array('IC', 'EA'))) {
+ // "Canary Islands" and "Ceuta and Melilla" use Spain's.
+ $baseData[$countryCode]['telephone_code'] = $telephoneCodeData['ES'][0]['telephoneCountryCode'];
+ } elseif ($countryCode == 'XK') {
+ // Kosovo uses three telephone codes. Use Serbia's until that gets resolved.
+ $baseData[$countryCode]['telephone_code'] = $telephoneCodeData['RS'][0]['telephoneCountryCode'];
+ } elseif (isset($telephoneCodeData[$countryCode])) {
+ $baseData[$countryCode]['telephone_code'] = $telephoneCodeData[$countryCode][0]['telephoneCountryCode'];
+ }
+}
+
+// Write out base.json.
+ksort($baseData);
+$json = json_encode($baseData, JSON_PRETTY_PRINT | JSON_UNESCAPED_UNICODE);
+file_put_contents('base.json', $json);
+
+// Gather available locales.
+$locales = array();
+if ($handle = opendir('../json-full/main')) {
+ while (false !== ($entry = readdir($handle))) {
+ if (substr($entry, 0, 1) != '.') {
+ $entryParts = explode('-', $entry);
+ if (!in_array($entry, $ignoredLocales) && !in_array($entryParts[0], $ignoredLocales)) {
+ $locales[] = $entry;
+ }
+ }
+ }
+ closedir($handle);
+}
+
+// Create the localizations.
+$countries = array();
+foreach ($locales as $locale) {
+ $data = json_decode(file_get_contents('../json-full/main/' . $locale . '/territories.json'), true);
+ $data = $data['main'][$locale]['localeDisplayNames']['territories'];
+ foreach ($data as $countryCode => $countryName) {
+ if (isset($baseData[$countryCode])) {
+ // This country name is untranslated, use the english version.
+ if ($countryCode == $countryName) {
+ $countryName = $countryData[$countryCode];
+ }
+
+ $countries[$locale][$countryCode] = array(
+ 'name' => $countryName,
+ );
+ }
+ }
+}
+
+// Identify localizations that are the same as the ones for the parent locale.
+// For example, "fr-FR" if "fr" has the same data.
+$duplicates = array();
+foreach ($countries as $locale => $localizedCountries) {
+ if (strpos($locale, '-') !== FALSE) {
+ $localeParts = explode('-', $locale);
+ array_pop($localeParts);
+ $parentLocale = implode('-', $localeParts);
+ $diff = array_udiff($localizedCountries, $countries[$parentLocale], function ($first, $second) {
+ return ($first['name'] == $second['name']) ? 0 : 1;
+ });
+
+ if (empty($diff)) {
+ // The duplicates are not removed right away because they might
+ // still be needed for other duplicate checks (for example,
+ // when there are locales like bs-Latn-BA, bs-Latn, bs).
+ $duplicates[] = $locale;
+ }
+ }
+}
+// Remove the duplicates.
+foreach ($duplicates as $locale) {
+ unset($countries[$locale]);
+}
+
+// Write out the localizations.
+foreach ($countries as $locale => $localizedCountries) {
+ $collator = collator_create($locale);
+ uasort($localizedCountries, function($a, $b) use ($collator) {
+ return collator_compare($collator, $a['name'], $b['name']);
+ });
+
+ $json = json_encode($localizedCountries, JSON_PRETTY_PRINT | JSON_UNESCAPED_UNICODE);
+ file_put_contents($locale . '.json', $json);
+}
diff --git a/library/intl/scripts/currency/generate.php b/library/intl/scripts/currency/generate.php
new file mode 100644
index 000000000..723906f7a
--- /dev/null
+++ b/library/intl/scripts/currency/generate.php
@@ -0,0 +1,153 @@
+<?php
+
+/**
+ * Generates the json files stored in resources/currency.
+ *
+ * The ISO currency list is used as a base, since it doesn't contain
+ * deprecated currencies, unlike CLDR (v25 has 139 deprecated entries).
+ */
+
+set_time_limit(0);
+
+// Downloaded from http://www.currency-iso.org/en/home/tables/table-a1.html
+$isoCurrencies = '../c2.xml';
+// Downloaded from http://unicode.org/Public/cldr/26/json-full.zip
+$cldrCurrencies = '../json-full/main/en-US/currencies.json';
+$currencyData = '../json-full/supplemental/currencyData.json';
+if (!file_exists($isoCurrencies)) {
+ die("The $isoCurrencies file was not found");
+}
+if (!file_exists($cldrCurrencies)) {
+ die("The $cldrCurrencies file was not found");
+}
+if (!file_exists($currencyData)) {
+ die("The $currencyData file was not found");
+}
+if (!function_exists('collator_create')) {
+ // Reimplementing intl's collator would be a huge undertaking, so we
+ // use it instead to presort the generated locale specific data.
+ die('The intl extension was not found.');
+}
+
+// Locales listed without a "-" match all variants.
+// Locales listed with a "-" match only those exact ones.
+$ignoredLocales = array(
+ // Interlingua is a made up language.
+ 'ia',
+ // Valencian differs from its parent only by a single character (è/é).
+ 'ca-ES-VALENCIA',
+ // Those locales are 90% untranslated.
+ 'aa', 'as', 'az-Cyrl', 'az-Cyrl-AZ', 'bem', 'dua', 'gv', 'haw', 'ig', 'ii',
+ 'kkj', 'kok', 'kw', 'lkt', 'mgo', 'nnh', 'nr', 'nso', 'om', 'os', 'pa-Arab',
+ 'pa-Arab-PK', 'qu', 'rw', 'sah', 'smn', 'ss', 'ssy', 'st', 'tg', 'tn', 'ts',
+ 'uz-Arab', 'uz-Arab-AF', 've', 'vo', 'xh', 'yi',
+ // Special "grouping" locales.
+ 'root', 'en-US-POSIX', 'en-001', 'en-150', 'es-419',
+);
+
+// Assemble the base data.
+$baseData = array();
+$currencyData = json_decode(file_get_contents($currencyData), true);
+$currencyData = $currencyData['supplemental']['currencyData']['fractions'];
+$isoData = simplexml_load_file($isoCurrencies);
+foreach ($isoData->CcyTbl->CcyNtry as $currency) {
+ $attributes = (array) $currency->CcyNm->attributes();
+ if (!empty($attributes) && !empty($attributes['@attributes']['IsFund'])) {
+ // Ignore funds.
+ continue;
+ }
+ $currency = (array) $currency;
+ if (empty($currency['Ccy'])) {
+ // Ignore placeholders like "Antarctica".
+ continue;
+ }
+ if (substr($currency['CtryNm'], 0, 2) == 'ZZ' || in_array($currency['Ccy'], array('XUA', 'XSU', 'XDR'))) {
+ // Ignore special currencies.
+ continue;
+ }
+
+ $currencyCode = $currency['Ccy'];
+ $baseData[$currencyCode] = array(
+ 'code' => $currencyCode,
+ 'numeric_code' => $currency['CcyNbr'],
+ );
+ // Take the fraction digits from CLDR, not ISO, because it reflects real
+ // life usage more closely. If the digits aren't set, that means that the
+ // default value (2) should be used.
+ if (isset($currencyData[$currencyCode]['_digits'])) {
+ $fractionDigits = $currencyData[$currencyCode]['_digits'];
+ if ($fractionDigits != 2) {
+ $baseData[$currencyCode]['fraction_digits'] = $fractionDigits;
+ }
+ }
+}
+
+// Write out base.json.
+ksort($baseData);
+$json = json_encode($baseData, JSON_PRETTY_PRINT | JSON_UNESCAPED_UNICODE);
+file_put_contents('base.json', $json);
+
+// Gather available locales.
+$locales = array();
+if ($handle = opendir('../json-full/main')) {
+ while (false !== ($entry = readdir($handle))) {
+ if (substr($entry, 0, 1) != '.') {
+ $entryParts = explode('-', $entry);
+ if (!in_array($entry, $ignoredLocales) && !in_array($entryParts[0], $ignoredLocales)) {
+ $locales[] = $entry;
+ }
+ }
+ }
+ closedir($handle);
+}
+
+// Create the localizations.
+$currencies = array();
+foreach ($locales as $locale) {
+ $data = json_decode(file_get_contents('../json-full/main/' . $locale . '/currencies.json'), true);
+ $data = $data['main'][$locale]['numbers']['currencies'];
+ foreach ($data as $currencyCode => $currency) {
+ if (isset($baseData[$currencyCode])) {
+ $currencies[$locale][$currencyCode] = array(
+ 'name' => $currency['displayName'],
+ 'symbol' => $currency['symbol'],
+ );
+ }
+ }
+}
+
+// Identify localizations that are the same as the ones for the parent locale.
+// For example, "fr-FR" if "fr" has the same data.
+$duplicates = array();
+foreach ($currencies as $locale => $localizedCurrencies) {
+ if (strpos($locale, '-') !== FALSE) {
+ $localeParts = explode('-', $locale);
+ array_pop($localeParts);
+ $parentLocale = implode('-', $localeParts);
+ $diff = array_udiff($localizedCurrencies, $currencies[$parentLocale], function ($first, $second) {
+ return ($first['name'] == $second['name']) ? 0 : 1;
+ });
+
+ if (empty($diff)) {
+ // The duplicates are not removed right away because they might
+ // still be needed for other duplicate checks (for example,
+ // when there are locales like bs-Latn-BA, bs-Latn, bs).
+ $duplicates[] = $locale;
+ }
+ }
+}
+// Remove the duplicates.
+foreach ($duplicates as $locale) {
+ unset($currencies[$locale]);
+}
+
+// Write out the localizations.
+foreach ($currencies as $locale => $localizedCurrencies) {
+ $collator = collator_create($locale);
+ uasort($localizedCurrencies, function($a, $b) use ($collator) {
+ return collator_compare($collator, $a['name'], $b['name']);
+ });
+
+ $json = json_encode($localizedCurrencies, JSON_PRETTY_PRINT | JSON_UNESCAPED_UNICODE);
+ file_put_contents($locale . '.json', $json);
+}
diff --git a/library/intl/scripts/language/generate.php b/library/intl/scripts/language/generate.php
new file mode 100644
index 000000000..e11c8df49
--- /dev/null
+++ b/library/intl/scripts/language/generate.php
@@ -0,0 +1,129 @@
+<?php
+
+/**
+ * Generates the json files stored in resources/language.
+ *
+ * CLDR lists about 515 languages, many of them dead (like Latin or Old English).
+ * In order to decrease the list to a reasonable size, only the languages
+ * for which CLDR itself has translations are listed.
+ */
+
+set_time_limit(0);
+
+// Downloaded from http://unicode.org/Public/cldr/26/json-full.zip
+$enLanguages = '../json-full/main/en/languages.json';
+if (!file_exists($enLanguages)) {
+ die("The $enLanguages file was not found");
+}
+if (!function_exists('collator_create')) {
+ // Reimplementing intl's collator would be a huge undertaking, so we
+ // use it instead to presort the generated locale specific data.
+ die('The intl extension was not found.');
+}
+
+// Locales listed without a "-" match all variants.
+// Locales listed with a "-" match only those exact ones.
+$ignoredLocales = array(
+ // Interlingua is a made up language.
+ 'ia',
+ // Valencian differs from its parent only by a single character (è/é).
+ 'ca-ES-VALENCIA',
+ // Those locales are 90% untranslated.
+ 'aa', 'as', 'az-Cyrl', 'az-Cyrl-AZ', 'bem', 'dua', 'gv', 'haw', 'ig', 'ii',
+ 'kkj', 'kok', 'kw', 'lkt', 'mgo', 'nnh', 'nr', 'nso', 'om', 'os', 'pa-Arab',
+ 'pa-Arab-PK', 'qu', 'rw', 'sah', 'smn', 'ss', 'ssy', 'st', 'tg', 'tn', 'ts',
+ 'uz-Arab', 'uz-Arab-AF', 've', 'vo', 'xh', 'yi',
+ // Special "grouping" locales.
+ 'root', 'en-US-POSIX', 'en-001', 'en-150', 'es-419',
+);
+
+$languages = array();
+// Load the "en" data first so that it can be used as a fallback for
+// untranslated language names in other locales.
+$languageData = json_decode(file_get_contents($enLanguages), true);
+$languageData = $languageData['main']['en']['localeDisplayNames']['languages'];
+foreach ($languageData as $languageCode => $languageName) {
+ if (strpos($languageCode, '-alt-') === FALSE) {
+ $languages['en'][$languageCode] = array(
+ 'code' => $languageCode,
+ 'name' => $languageName,
+ );
+ }
+}
+
+// Gather available locales.
+$locales = array();
+if ($handle = opendir('../json-full/main')) {
+ while (false !== ($entry = readdir($handle))) {
+ if (substr($entry, 0, 1) != '.') {
+ $entryParts = explode('-', $entry);
+ if (!in_array($entry, $ignoredLocales) && !in_array($entryParts[0], $ignoredLocales)) {
+ $locales[] = $entry;
+ }
+ }
+ }
+ closedir($handle);
+}
+
+// Remove all languages that aren't an available locale at the same time.
+// This reduces the language list from about 515 to about 185 languages.
+foreach ($languages['en'] as $languageCode => $languageData) {
+ if (!in_array($languageCode, $locales)) {
+ unset($languages['en'][$languageCode]);
+ }
+}
+
+// Load the localizations.
+foreach ($locales as $locale) {
+ $data = json_decode(file_get_contents('../json-full/main/' . $locale . '/languages.json'), true);
+ $data = $data['main'][$locale]['localeDisplayNames']['languages'];
+ foreach ($data as $languageCode => $languageName) {
+ if (isset($languages['en'][$languageCode])) {
+ // This language name is untranslated, use to the english version.
+ if ($languageCode == $languageName) {
+ $languageName = $languages['en'][$languageCode]['name'];
+ }
+
+ $languages[$locale][$languageCode] = array(
+ 'code' => $languageCode,
+ 'name' => $languageName,
+ );
+ }
+ }
+}
+
+// Identify localizations that are the same as the ones for the parent locale.
+// For example, "fr-FR" if "fr" has the same data.
+$duplicates = array();
+foreach ($languages as $locale => $localizedLanguages) {
+ if (strpos($locale, '-') !== FALSE) {
+ $localeParts = explode('-', $locale);
+ array_pop($localeParts);
+ $parentLocale = implode('-', $localeParts);
+ $diff = array_udiff($localizedLanguages, $languages[$parentLocale], function ($first, $second) {
+ return ($first['name'] == $second['name']) ? 0 : 1;
+ });
+
+ if (empty($diff)) {
+ // The duplicates are not removed right away because they might
+ // still be needed for other duplicate checks (for example,
+ // when there are locales like bs-Latn-BA, bs-Latn, bs).
+ $duplicates[] = $locale;
+ }
+ }
+}
+// Remove the duplicates.
+foreach ($duplicates as $locale) {
+ unset($languages[$locale]);
+}
+
+// Write out the localizations.
+foreach ($languages as $locale => $localizedLanguages) {
+ $collator = collator_create($locale);
+ uasort($localizedLanguages, function($a, $b) use ($collator) {
+ return collator_compare($collator, $a['name'], $b['name']);
+ });
+
+ $json = json_encode($localizedLanguages, JSON_PRETTY_PRINT | JSON_UNESCAPED_UNICODE);
+ file_put_contents($locale . '.json', $json);
+}
diff --git a/library/intl/scripts/number_format/generate.php b/library/intl/scripts/number_format/generate.php
new file mode 100644
index 000000000..4308b4dc7
--- /dev/null
+++ b/library/intl/scripts/number_format/generate.php
@@ -0,0 +1,107 @@
+<?php
+
+/**
+ * Generates the json files stored in resources/number_format.
+ */
+
+set_time_limit(0);
+
+// Downloaded from http://unicode.org/Public/cldr/26/json-full.zip
+if (!is_dir('../json-full/main')) {
+ die("The '../json-full/main' directory was not found");
+}
+
+// Locales listed without a "-" match all variants.
+// Locales listed with a "-" match only those exact ones.
+$ignoredLocales = array(
+ // Interlingua is a made up language.
+ 'ia',
+ // Special "grouping" locales.
+ 'root', 'en-US-POSIX', 'en-001', 'en-150', 'es-419',
+);
+
+// Gather available locales.
+$locales = array();
+if ($handle = opendir('../json-full/main')) {
+ while (false !== ($entry = readdir($handle))) {
+ if (substr($entry, 0, 1) != '.') {
+ $entryParts = explode('-', $entry);
+ if (!in_array($entry, $ignoredLocales) && !in_array($entryParts[0], $ignoredLocales)) {
+ $locales[] = $entry;
+ }
+ }
+ }
+ closedir($handle);
+}
+
+// Load the data.
+$numberFormats = array();
+foreach ($locales as $locale) {
+ $data = json_decode(file_get_contents('../json-full/main/' . $locale . '/numbers.json'), true);
+ $data = $data['main'][$locale]['numbers'];
+ // Use the default numbering system, if it's supported.
+ if (in_array($data['defaultNumberingSystem'], array('arab', 'arabext', 'beng', 'deva', 'latn'))) {
+ $numberingSystem = $data['defaultNumberingSystem'];
+ } else {
+ $numberingSystem = 'latn';
+ }
+
+ $numberFormats[$locale] = array(
+ 'numbering_system' => $numberingSystem,
+ 'decimal_pattern' => $data['decimalFormats-numberSystem-' . $numberingSystem]['standard'],
+ 'percent_pattern' => $data['percentFormats-numberSystem-' . $numberingSystem]['standard'],
+ 'currency_pattern' => $data['currencyFormats-numberSystem-' . $numberingSystem]['standard'],
+ 'accounting_currency_pattern' => $data['currencyFormats-numberSystem-' . $numberingSystem]['accounting'],
+ );
+
+ // Add the symbols only if they're different from the default data.
+ $decimalSeparator = $data['symbols-numberSystem-' . $numberingSystem]['decimal'];
+ $groupingSeparator = $data['symbols-numberSystem-' . $numberingSystem]['group'];
+ $plusSign = $data['symbols-numberSystem-' . $numberingSystem]['plusSign'];
+ $minusSign = $data['symbols-numberSystem-' . $numberingSystem]['minusSign'];
+ $percentSign = $data['symbols-numberSystem-' . $numberingSystem]['percentSign'];
+ if ($decimalSeparator != '.') {
+ $numberFormats[$locale]['decimal_separator'] = $decimalSeparator;
+ }
+ if ($groupingSeparator != ',') {
+ $numberFormats[$locale]['grouping_separator'] = $groupingSeparator;
+ }
+ if ($plusSign != '+') {
+ $numberFormats[$locale]['plus_sign'] = $plusSign;
+ }
+ if ($minusSign != '-') {
+ $numberFormats[$locale]['minus_sign'] = $minusSign;
+ }
+ if ($percentSign != '%') {
+ $numberFormats[$locale]['percent_sign'] = $percentSign;
+ }
+}
+
+// Identify localizations that are the same as the ones for the parent locale.
+// For example, "fr-FR" if "fr" has the same data.
+$duplicates = array();
+foreach ($numberFormats as $locale => $formatData) {
+ if (strpos($locale, '-') !== FALSE) {
+ $localeParts = explode('-', $locale);
+ array_pop($localeParts);
+ $parentLocale = implode('-', $localeParts);
+ $diff = array_diff_assoc($formatData, $numberFormats[$parentLocale]);
+
+ if (empty($diff)) {
+ // The duplicates are not removed right away because they might
+ // still be needed for other duplicate checks (for example,
+ // when there are locales like bs-Latn-BA, bs-Latn, bs).
+ $duplicates[] = $locale;
+ }
+ }
+}
+// Remove the duplicates.
+foreach ($duplicates as $locale) {
+ unset($numberFormats[$locale]);
+}
+
+// Write out the data.
+foreach ($numberFormats as $locale => $numberFormat) {
+ $json = json_encode($numberFormat, JSON_PRETTY_PRINT | JSON_UNESCAPED_UNICODE);
+ file_put_contents($locale . '.json', $json);
+}
diff --git a/library/intl/src/Country/Country.php b/library/intl/src/Country/Country.php
new file mode 100644
index 000000000..5ac65fd0d
--- /dev/null
+++ b/library/intl/src/Country/Country.php
@@ -0,0 +1,168 @@
+<?php
+
+namespace CommerceGuys\Intl\Country;
+
+class Country implements CountryInterface
+{
+ /**
+ * The two-letter country code.
+ *
+ * @var string
+ */
+ protected $countryCode;
+
+ /**
+ * The country name.
+ *
+ * @var string
+ */
+ protected $name;
+
+ /**
+ * The three-letter country code.
+ *
+ * @var string
+ */
+ protected $threeLetterCode;
+
+ /**
+ * The numeric country code.
+ *
+ * @var string
+ */
+ protected $numericCode;
+
+ /**
+ * The country telephone code.
+ *
+ * @var string
+ */
+ protected $telephoneCode;
+
+ /**
+ * The country locale (i.e. "en_US").
+ *
+ * The country name is locale specific.
+ *
+ * @var string
+ */
+ protected $locale;
+
+ /**
+ * Returns the string representation of the Country.
+ *
+ * @return string
+ */
+ public function __toString()
+ {
+ return $this->getCountryCode();
+ }
+
+ /**
+ * {@inheritdoc}
+ */
+ public function getCountryCode()
+ {
+ return $this->countryCode;
+ }
+
+ /**
+ * {@inheritdoc}
+ */
+ public function setCountryCode($countryCode)
+ {
+ $this->countryCode = $countryCode;
+
+ return $this;
+ }
+
+ /**
+ * {@inheritdoc}
+ */
+ public function getName()
+ {
+ return $this->name;
+ }
+
+ /**
+ * {@inheritdoc}
+ */
+ public function setName($name)
+ {
+ $this->name = $name;
+
+ return $this;
+ }
+
+ /**
+ * {@inheritdoc}
+ */
+ public function getThreeLetterCode()
+ {
+ return $this->threeLetterCode;
+ }
+
+ /**
+ * {@inheritdoc}
+ */
+ public function setThreeLetterCode($threeLetterCode)
+ {
+ $this->threeLetterCode = $threeLetterCode;
+
+ return $this;
+ }
+
+ /**
+ * {@inheritdoc}
+ */
+ public function getNumericCode()
+ {
+ return $this->numericCode;
+ }
+
+ /**
+ * {@inheritdoc}
+ */
+ public function setNumericCode($numericCode)
+ {
+ $this->numericCode = $numericCode;
+
+ return $this;
+ }
+
+ /**
+ * {@inheritdoc}
+ */
+ public function getTelephoneCode()
+ {
+ return $this->telephoneCode;
+ }
+
+ /**
+ * {@inheritdoc}
+ */
+ public function setTelephoneCode($telephoneCode)
+ {
+ $this->telephoneCode = $telephoneCode;
+
+ return $this;
+ }
+
+ /**
+ * {@inheritdoc}
+ */
+ public function getLocale()
+ {
+ return $this->locale;
+ }
+
+ /**
+ * {@inheritdoc}
+ */
+ public function setLocale($locale)
+ {
+ $this->locale = $locale;
+
+ return $this;
+ }
+}
diff --git a/library/intl/src/Country/CountryInterface.php b/library/intl/src/Country/CountryInterface.php
new file mode 100644
index 000000000..245a49be9
--- /dev/null
+++ b/library/intl/src/Country/CountryInterface.php
@@ -0,0 +1,99 @@
+<?php
+
+namespace CommerceGuys\Intl\Country;
+
+interface CountryInterface
+{
+ /**
+ * Gets the two-letter country code.
+ *
+ * @return string
+ */
+ public function getCountryCode();
+
+ /**
+ * Sets the two-letter country code.
+ *
+ * @param string $countryCode The two-letter country code.
+ */
+ public function setCountryCode($countryCode);
+
+ /**
+ * Gets the country name.
+ *
+ * Note that certain locales have incomplete translations, in which
+ * case the english version of the country name is used instead.
+ *
+ * @return string
+ */
+ public function getName();
+
+ /**
+ * Sets the country name.
+ *
+ * @param string $name The country name.
+ */
+ public function setName($name);
+
+ /**
+ * Gets the three-letter country code.
+ *
+ * Note that not every country has a three-letter code.
+ * CLDR lists "Canary Islands" (IC) and "Ceuta and Melilla" (EA)
+ * as separate countries, even though they are formally a part of Spain
+ * and have no three-letter or numeric ISO codes.
+ *
+ * @return string|null
+ */
+ public function getThreeLetterCode();
+
+ /**
+ * Sets the three-letter country code.
+ *
+ * @param string $threeLetterCode The three-letter country code.
+ */
+ public function setThreeLetterCode($threeLetterCode);
+
+ /**
+ * Gets the numeric country code.
+ *
+ * The numeric code has three digits, and the first one can be a zero,
+ * hence the need to pass it around as a string.
+ *
+ * Note that not every country has a numeric code.
+ * CLDR lists "Canary Islands" (IC) and "Ceuta and Melilla" (EA)
+ * as separate countries, even though they are formally a part of Spain
+ * and have no three-letter or numeric ISO codes.
+ * "Ascension Island" (AE) also has no numeric code, even though it has a
+ * three-letter code.
+ *
+ * @return string|null
+ */
+ public function getNumericCode();
+
+ /**
+ * Sets the numeric country code.
+ *
+ * @param string $numericCode The numeric country code.
+ */
+ public function setNumericCode($numericCode);
+
+ /**
+ * Gets the country telephone code.
+ *
+ * Also known as the calling code.
+ *
+ * Note that not every country has a telephone code.
+ * Right now Tristan da Cunha (TI) is the only such example.
+ *
+ * @return string|null
+ */
+ public function getTelephoneCode();
+
+ /**
+ * Sets the country telephone code.
+ *
+ * @param string $telephoneCode The telephone code.
+ */
+ public function setTelephoneCode($telephoneCode);
+}
diff --git a/library/intl/src/Country/CountryRepository.php b/library/intl/src/Country/CountryRepository.php
new file mode 100644
index 000000000..b1fea803d
--- /dev/null
+++ b/library/intl/src/Country/CountryRepository.php
@@ -0,0 +1,124 @@
+<?php
+
+namespace CommerceGuys\Intl\Country;
+
+use CommerceGuys\Intl\LocaleResolverTrait;
+use CommerceGuys\Intl\Exception\UnknownCountryException;
+
+/**
+ * Manages countries based on JSON definitions.
+ */
+class CountryRepository implements CountryRepositoryInterface
+{
+ use LocaleResolverTrait;
+
+ /**
+ * Base country definitions.
+ *
+ * Contains data common to all locales, such as the country numeric,
+ * three-letter, telephone codes.
+ *
+ * @var array
+ */
+ protected $baseDefinitions = array();
+
+ /**
+ * Per-locale country definitions.
+ *
+ * @var array
+ */
+ protected $definitions = array();
+
+ /**
+ * Creates a CountryRepository instance.
+ *
+ * @param string $definitionPath The path to the country definitions.
+ * Defaults to 'resources/country'.
+ */
+ public function __construct($definitionPath = null)
+ {
+ $this->definitionPath = $definitionPath ? $definitionPath : __DIR__ . '/../../resources/country/';
+ }
+
+ /**
+ * {@inheritdoc}
+ */
+ public function get($countryCode, $locale = null, $fallbackLocale = null)
+ {
+ $locale = $this->resolveLocale($locale, $fallbackLocale);
+ $definitions = $this->loadDefinitions($locale);
+ if (!isset($definitions[$countryCode])) {
+ throw new UnknownCountryException($countryCode);
+ }
+
+ return $this->createCountryFromDefinition($definitions[$countryCode], $locale);
+ }
+
+ /**
+ * {@inheritdoc}
+ */
+ public function getAll($locale = null, $fallbackLocale = null)
+ {
+ $locale = $this->resolveLocale($locale, $fallbackLocale);
+ $definitions = $this->loadDefinitions($locale);
+ $countries = array();
+ foreach ($definitions as $countryCode => $definition) {
+ $countries[$countryCode] = $this->createCountryFromDefinition($definition, $locale);
+ }
+
+ return $countries;
+ }
+
+ /**
+ * Loads the country definitions for the provided locale.
+ *
+ * @param string $locale The desired locale.
+ *
+ * @return array
+ */
+ protected function loadDefinitions($locale)
+ {
+ if (!isset($this->definitions[$locale])) {
+ $filename = $this->definitionPath . $locale . '.json';
+ $this->definitions[$locale] = json_decode(file_get_contents($filename), true);
+
+ // Make sure the base definitions have been loaded.
+ if (empty($this->baseDefinitions)) {
+ $this->baseDefinitions = json_decode(file_get_contents($this->definitionPath . 'base.json'), true);
+ }
+ // Merge-in base definitions.
+ foreach ($this->definitions[$locale] as $countryCode => $definition) {
+ $this->definitions[$locale][$countryCode] += $this->baseDefinitions[$countryCode];
+ }
+ }
+
+ return $this->definitions[$locale];
+ }
+
+ /**
+ * Creates a country object from the provided definition.
+ *
+ * @param array $definition The country definition.
+ * @param string $locale The locale of the country definition.
+ *
+ * @return Country
+ */
+ protected function createCountryFromDefinition(array $definition, $locale)
+ {
+ $country = new Country();
+ $country->setCountryCode($definition['code']);
+ $country->setName($definition['name']);
+ $country->setLocale($locale);
+ if (isset($definition['three_letter_code'])) {
+ $country->setThreeLetterCode($definition['three_letter_code']);
+ }
+ if (isset($definition['numeric_code'])) {
+ $country->setNumericCode($definition['numeric_code']);
+ }
+ if (isset($definition['telephone_code'])) {
+ $country->setTelephoneCode($definition['telephone_code']);
+ }
+
+ return $country;
+ }
+}
diff --git a/library/intl/src/Country/CountryRepositoryInterface.php b/library/intl/src/Country/CountryRepositoryInterface.php
new file mode 100644
index 000000000..ae1cbd0c9
--- /dev/null
+++ b/library/intl/src/Country/CountryRepositoryInterface.php
@@ -0,0 +1,31 @@
+<?php
+
+namespace CommerceGuys\Intl\Country;
+
+/**
+ * Country repository interface.
+ */
+interface CountryRepositoryInterface
+{
+ /**
+ * Returns a country instance matching the provided country code.
+ *
+ * @param string $countryCode The country code.
+ * @param string $locale The locale (i.e. fr-FR).
+ * @param string $fallbackLocale A fallback locale (i.e "en").
+ *
+ * @return CountryInterface
+ */
+ public function get($countryCode, $locale = null, $fallbackLocale = null);
+
+ /**
+ * Returns all available country instances.
+ *
+ * @param string $locale The locale (i.e. fr-FR).
+ * @param string $fallbackLocale A fallback locale (i.e "en").
+ *
+ * @return array An array of countries implementing the CountryInterface,
+ * keyed by country code.
+ */
+ public function getAll($locale = null, $fallbackLocale = null);
+}
diff --git a/library/intl/src/Currency/Currency.php b/library/intl/src/Currency/Currency.php
new file mode 100644
index 000000000..6138210b5
--- /dev/null
+++ b/library/intl/src/Currency/Currency.php
@@ -0,0 +1,168 @@
+<?php
+
+namespace CommerceGuys\Intl\Currency;
+
+class Currency implements CurrencyInterface
+{
+ /**
+ * The alphanumeric currency code.
+ *
+ * @var string
+ */
+ protected $currencyCode;
+
+ /**
+ * The currency name.
+ *
+ * @var string
+ */
+ protected $name;
+
+ /**
+ * The numeric currency code.
+ *
+ * @var string
+ */
+ protected $numericCode;
+
+ /**
+ * The currency symbol.
+ *
+ * @var string
+ */
+ protected $symbol;
+
+ /**
+ * The number of fraction digits.
+ *
+ * @var int
+ */
+ protected $fractionDigits;
+
+ /**
+ * The currency locale (i.e. "en_US").
+ *
+ * The currency name and symbol are locale specific.
+ *
+ * @var string
+ */
+ protected $locale;
+
+ /**
+ * Returns the string representation of the currency.
+ *
+ * @return string
+ */
+ public function __toString()
+ {
+ return $this->getCurrencyCode();
+ }
+
+ /**
+ * {@inheritdoc}
+ */
+ public function getCurrencyCode()
+ {
+ return $this->currencyCode;
+ }
+
+ /**
+ * {@inheritdoc}
+ */
+ public function setCurrencyCode($currencyCode)
+ {
+ $this->currencyCode = $currencyCode;
+
+ return $this;
+ }
+
+ /**
+ * {@inheritdoc}
+ */
+ public function getName()
+ {
+ return $this->name;
+ }
+
+ /**
+ * {@inheritdoc}
+ */
+ public function setName($name)
+ {
+ $this->name = $name;
+
+ return $this;
+ }
+
+ /**
+ * {@inheritdoc}
+ */
+ public function getNumericCode()
+ {
+ return $this->numericCode;
+ }
+
+ /**
+ * {@inheritdoc}
+ */
+ public function setNumericCode($numericCode)
+ {
+ $this->numericCode = $numericCode;
+
+ return $this;
+ }
+
+ /**
+ * {@inheritdoc}
+ */
+ public function getSymbol()
+ {
+ return $this->symbol;
+ }
+
+ /**
+ * {@inheritdoc}
+ */
+ public function setSymbol($symbol)
+ {
+ $this->symbol = $symbol;
+
+ return $this;
+ }
+
+ /**
+ * {@inheritdoc}
+ */
+ public function getFractionDigits()
+ {
+ return $this->fractionDigits;
+ }
+
+ /**
+ * {@inheritdoc}
+ */
+ public function setFractionDigits($fractionDigits)
+ {
+ $this->fractionDigits = $fractionDigits;
+
+ return $this;
+ }
+
+ /**
+ * {@inheritdoc}
+ */
+ public function getLocale()
+ {
+ return $this->locale;
+ }
+
+ /**
+ * {@inheritdoc}
+ */
+ public function setLocale($locale)
+ {
+ $this->locale = $locale;
+
+ return $this;
+ }
+}
diff --git a/library/intl/src/Currency/CurrencyInterface.php b/library/intl/src/Currency/CurrencyInterface.php
new file mode 100644
index 000000000..ccd03c7e0
--- /dev/null
+++ b/library/intl/src/Currency/CurrencyInterface.php
@@ -0,0 +1,82 @@
+<?php
+
+namespace CommerceGuys\Intl\Currency;
+
+interface CurrencyInterface
+{
+ /**
+ * Gets the alphabetic currency code.
+ *
+ * @return string
+ */
+ public function getCurrencyCode();
+
+ /**
+ * Sets the alphabetic currency code.
+ *
+ * @param string $currencyCode The alphabetic currency code.
+ */
+ public function setCurrencyCode($currencyCode);
+
+ /**
+ * Gets the currency name.
+ *
+ * @return string
+ */
+ public function getName();
+
+ /**
+ * Sets the currency name.
+ *
+ * @param string $name The currency name.
+ */
+ public function setName($name);
+
+ /**
+ * Gets the numeric currency code.
+ *
+ * The numeric code has three digits, and the first one can be a zero,
+ * hence the need to pass it around as a string.
+ *
+ * @return string
+ */
+ public function getNumericCode();
+
+ /**
+ * Sets the numeric currency code.
+ *
+ * @param string $numericCode The numeric currency code.
+ */
+ public function setNumericCode($numericCode);
+
+ /**
+ * Gets the currency symbol.
+ *
+ * @return string
+ */
+ public function getSymbol();
+
+ /**
+ * Sets the currency symbol.
+ *
+ * @param string $symbol The currency symbol.
+ */
+ public function setSymbol($symbol);
+
+ /**
+ * Gets the number of fraction digits.
+ *
+ * Used when rounding or formatting an amount for display.
+ * Actual storage precision can be greater.
+ *
+ * @return int
+ */
+ public function getFractionDigits();
+
+ /**
+ * Sets the number of fraction digits.
+ *
+ * @param int $fractionDigits The number of fraction digits.
+ */
+ public function setFractionDigits($fractionDigits);
+}
diff --git a/library/intl/src/Currency/CurrencyRepository.php b/library/intl/src/Currency/CurrencyRepository.php
new file mode 100644
index 000000000..84d0d4522
--- /dev/null
+++ b/library/intl/src/Currency/CurrencyRepository.php
@@ -0,0 +1,122 @@
+<?php
+
+namespace CommerceGuys\Intl\Currency;
+
+use CommerceGuys\Intl\LocaleResolverTrait;
+use CommerceGuys\Intl\Exception\UnknownCurrencyException;
+
+/**
+ * Manages currencies based on JSON definitions.
+ */
+class CurrencyRepository implements CurrencyRepositoryInterface
+{
+ use LocaleResolverTrait;
+
+ /**
+ * Base currency definitions.
+ *
+ * Contains data common to all locales, such as the currency numeric
+ * code, number of fraction digits.
+ *
+ * @var array
+ */
+ protected $baseDefinitions = array();
+
+ /**
+ * Per-locale currency definitions.
+ *
+ * @var array
+ */
+ protected $definitions = array();
+
+ /**
+ * Creates a CurrencyRepository instance.
+ *
+ * @param string $definitionPath The path to the currency definitions.
+ * Defaults to 'resources/currency'.
+ */
+ public function __construct($definitionPath = null)
+ {
+ $this->definitionPath = $definitionPath ? $definitionPath : __DIR__ . '/../../resources/currency/';
+ }
+
+ /**
+ * {@inheritdoc}
+ */
+ public function get($currencyCode, $locale = null, $fallbackLocale = null)
+ {
+ $locale = $this->resolveLocale($locale, $fallbackLocale);
+ $definitions = $this->loadDefinitions($locale);
+ if (!isset($definitions[$currencyCode])) {
+ throw new UnknownCurrencyException($currencyCode);
+ }
+
+ return $this->createCurrencyFromDefinition($definitions[$currencyCode], $locale);
+ }
+
+ /**
+ * {@inheritdoc}
+ */
+ public function getAll($locale = null, $fallbackLocale = null)
+ {
+ $locale = $this->resolveLocale($locale, $fallbackLocale);
+ $definitions = $this->loadDefinitions($locale);
+ $currencies = array();
+ foreach ($definitions as $currencyCode => $definition) {
+ $currencies[$currencyCode] = $this->createCurrencyFromDefinition($definition, $locale);
+ }
+
+ return $currencies;
+ }
+
+ /**
+ * Loads the currency definitions for the provided locale.
+ *
+ * @param string $locale The desired locale.
+ *
+ * @return array
+ */
+ protected function loadDefinitions($locale)
+ {
+ if (!isset($this->definitions[$locale])) {
+ $filename = $this->definitionPath . $locale . '.json';
+ $this->definitions[$locale] = json_decode(file_get_contents($filename), true);
+
+ // Make sure the base definitions have been loaded.
+ if (empty($this->baseDefinitions)) {
+ $this->baseDefinitions = json_decode(file_get_contents($this->definitionPath . 'base.json'), true);
+ }
+ // Merge-in base definitions.
+ foreach ($this->definitions[$locale] as $currencyCode => $definition) {
+ $this->definitions[$locale][$currencyCode] += $this->baseDefinitions[$currencyCode];
+ }
+ }
+
+ return $this->definitions[$locale];
+ }
+
+ /**
+ * Creates a currency object from the provided definition.
+ *
+ * @param array $definition The currency definition.
+ * @param string $locale The locale of the currency definition.
+ *
+ * @return Currency
+ */
+ protected function createCurrencyFromDefinition(array $definition, $locale)
+ {
+ if (!isset($definition['fraction_digits'])) {
+ $definition['fraction_digits'] = 2;
+ }
+
+ $currency = new Currency();
+ $currency->setCurrencyCode($definition['code']);
+ $currency->setName($definition['name']);
+ $currency->setNumericCode($definition['numeric_code']);
+ $currency->setFractionDigits($definition['fraction_digits']);
+ $currency->setSymbol($definition['symbol']);
+ $currency->setLocale($locale);
+
+ return $currency;
+ }
+}
diff --git a/library/intl/src/Currency/CurrencyRepositoryInterface.php b/library/intl/src/Currency/CurrencyRepositoryInterface.php
new file mode 100644
index 000000000..d72fcf137
--- /dev/null
+++ b/library/intl/src/Currency/CurrencyRepositoryInterface.php
@@ -0,0 +1,31 @@
+<?php
+
+namespace CommerceGuys\Intl\Currency;
+
+/**
+ * Currency repository interface.
+ */
+interface CurrencyRepositoryInterface
+{
+ /**
+ * Returns a currency instance matching the provided currency code.
+ *
+ * @param string $currencyCode The currency code.
+ * @param string $locale The locale (i.e. fr-FR).
+ * @param string $fallbackLocale A fallback locale (i.e "en").
+ *
+ * @return CurrencyInterface
+ */
+ public function get($currencyCode, $locale = null, $fallbackLocale = null);
+
+ /**
+ * Returns all available currency instances.
+ *
+ * @param string $locale The locale (i.e. fr-FR).
+ * @param string $fallbackLocale A fallback locale (i.e "en").
+ *
+ * @return array An array of currencies implementing the CurrencyInterface,
+ * keyed by currency code.
+ */
+ public function getAll($locale = null, $fallbackLocale = null);
+}
diff --git a/library/intl/src/Exception/ExceptionInterface.php b/library/intl/src/Exception/ExceptionInterface.php
new file mode 100644
index 000000000..a7d17f9ab
--- /dev/null
+++ b/library/intl/src/Exception/ExceptionInterface.php
@@ -0,0 +1,7 @@
+<?php
+
+namespace CommerceGuys\Intl\Exception;
+
+interface ExceptionInterface
+{
+}
diff --git a/library/intl/src/Exception/InvalidArgumentException.php b/library/intl/src/Exception/InvalidArgumentException.php
new file mode 100644
index 000000000..afbe114a4
--- /dev/null
+++ b/library/intl/src/Exception/InvalidArgumentException.php
@@ -0,0 +1,11 @@
+<?php
+
+namespace CommerceGuys\Intl\Exception;
+
+/**
+ * This exception is thrown when an invalid argument is passed to a method.
+ * For example, a float amount instead of the expected string amount.
+ */
+class InvalidArgumentException extends \InvalidArgumentException implements ExceptionInterface
+{
+}
diff --git a/library/intl/src/Exception/UnknownCountryException.php b/library/intl/src/Exception/UnknownCountryException.php
new file mode 100644
index 000000000..c89845b23
--- /dev/null
+++ b/library/intl/src/Exception/UnknownCountryException.php
@@ -0,0 +1,11 @@
+<?php
+
+namespace CommerceGuys\Intl\Exception;
+
+/**
+ * This exception is thrown when an unknown country code is passed to the
+ * CountryRepository.
+ */
+class UnknownCountryException extends InvalidArgumentException implements ExceptionInterface
+{
+}
diff --git a/library/intl/src/Exception/UnknownCurrencyException.php b/library/intl/src/Exception/UnknownCurrencyException.php
new file mode 100644
index 000000000..f94c93d8a
--- /dev/null
+++ b/library/intl/src/Exception/UnknownCurrencyException.php
@@ -0,0 +1,11 @@
+<?php
+
+namespace CommerceGuys\Intl\Exception;
+
+/**
+ * This exception is thrown when an unknown currency code is passed to the
+ * CurrencyRepository.
+ */
+class UnknownCurrencyException extends InvalidArgumentException implements ExceptionInterface
+{
+}
diff --git a/library/intl/src/Exception/UnknownLanguageException.php b/library/intl/src/Exception/UnknownLanguageException.php
new file mode 100644
index 000000000..922b42185
--- /dev/null
+++ b/library/intl/src/Exception/UnknownLanguageException.php
@@ -0,0 +1,11 @@
+<?php
+
+namespace CommerceGuys\Intl\Exception;
+
+/**
+ * This exception is thrown when an unknown language code is passed to the
+ * LanguageRepository.
+ */
+class UnknownLanguageException extends InvalidArgumentException implements ExceptionInterface
+{
+}
diff --git a/library/intl/src/Exception/UnknownLocaleException.php b/library/intl/src/Exception/UnknownLocaleException.php
new file mode 100644
index 000000000..0deca13e8
--- /dev/null
+++ b/library/intl/src/Exception/UnknownLocaleException.php
@@ -0,0 +1,10 @@
+<?php
+
+namespace CommerceGuys\Intl\Exception;
+
+/**
+ * This exception is thrown when an unknown locale is passed to a repository.
+ */
+class UnknownLocaleException extends InvalidArgumentException implements ExceptionInterface
+{
+}
diff --git a/library/intl/src/Formatter/NumberFormatter.php b/library/intl/src/Formatter/NumberFormatter.php
new file mode 100644
index 000000000..0b8e2ae59
--- /dev/null
+++ b/library/intl/src/Formatter/NumberFormatter.php
@@ -0,0 +1,406 @@
+<?php
+
+namespace CommerceGuys\Intl\Formatter;
+
+use CommerceGuys\Intl\Currency\CurrencyInterface;
+use CommerceGuys\Intl\Exception\InvalidArgumentException;
+use CommerceGuys\Intl\NumberFormat\NumberFormatInterface;
+
+/**
+ * Formats numbers using locale-specific patterns.
+ */
+class NumberFormatter implements NumberFormatterInterface
+{
+ /**
+ * The number format.
+ *
+ * @var NumberFormatInterface
+ */
+ protected $numberFormat;
+
+ /**
+ * The number pattern used to format positive numbers.
+ *
+ * @var string
+ */
+ protected $positivePattern;
+
+ /**
+ * The number pattern used to format negative numbers.
+ *
+ * @var string
+ */
+ protected $negativePattern;
+
+ /**
+ * Whether grouping is used.
+ *
+ * @var bool
+ */
+ protected $groupingUsed;
+
+ /**
+ * The size of the group of digits closest to the decimal point.
+ *
+ * @var int
+ */
+ protected $primaryGroupSize;
+
+ /**
+ * The size of every group of digits after the primary group.
+ *
+ * @var int
+ */
+ protected $secondaryGroupSize;
+
+ /**
+ * The minimum number of fraction digits to show.
+ *
+ * @var int
+ */
+ protected $minimumFractionDigits;
+
+ /**
+ * The maximum number of fraction digits to show.
+ *
+ * @var int
+ */
+ protected $maximumFractionDigits;
+
+ /**
+ * The currency display style.
+ *
+ * @var int
+ */
+ protected $currencyDisplay;
+
+ /**
+ * Localized digits.
+ *
+ * @var array
+ */
+ protected $digits = array(
+ NumberFormatInterface::NUMBERING_SYSTEM_ARABIC => array(
+ 0 => 'Ù ', 1 => 'Ù¡', 2 => 'Ù¢', 3 => 'Ù£', 4 => 'Ù¤',
+ 5 => 'Ù¥', 6 => 'Ù¦', 7 => 'Ù§', 8 => 'Ù¨', 9 => 'Ù©',
+ ),
+ NumberFormatInterface::NUMBERING_SYSTEM_ARABIC_EXTENDED => array(
+ 0 => 'Û°', 1 => 'Û±', 2 => 'Û²', 3 => 'Û³', 4 => 'Û´',
+ 5 => 'Ûµ', 6 => 'Û¶', 7 => 'Û·', 8 => 'Û¸', 9 => 'Û¹',
+ ),
+ NumberFormatInterface::NUMBERING_SYSTEM_BENGALI => array(
+ 0 => '০', 1 => '১', 2 => '২', 3 => '৩', 4 => '৪',
+ 5 => '৫', 6 => '৬', 7 => '৭', 8 => '৮', 9 => '৯',
+ ),
+ NumberFormatInterface::NUMBERING_SYSTEM_DEVANAGARI => array(
+ 0 => '०', 1 => '१', 2 => '२', 3 => '३', 4 => '४',
+ 5 => '५', 6 => '६', 7 => '७', 8 => '८', 9 => '९',
+ ),
+ );
+
+ /**
+ * Creaes a NumberFormatter instance.
+ *
+ * @param NumberFormatInterface $numberFormat The number format.
+ * @param int $style The formatting style.
+ *
+ * @throws InvalidArgumentException
+ */
+ public function __construct(NumberFormatInterface $numberFormat, $style = self::DECIMAL)
+ {
+ $availablePatterns = array(
+ self::DECIMAL => $numberFormat->getDecimalPattern(),
+ self::PERCENT => $numberFormat->getPercentPattern(),
+ self::CURRENCY => $numberFormat->getCurrencyPattern(),
+ self::CURRENCY_ACCOUNTING => $numberFormat->getAccountingCurrencyPattern(),
+ );
+ if (!array_key_exists($style, $availablePatterns)) {
+ // Unknown type.
+ throw new InvalidArgumentException('Unknown format style provided to NumberFormatter::__construct().');
+ }
+
+ // Split the selected pattern into positive and negative patterns.
+ $patterns = explode(';', $availablePatterns[$style]);
+ if (!isset($patterns[1])) {
+ // No explicit negative pattern was provided, construct it.
+ $patterns[1] = '-' . $patterns[0];
+ }
+
+ $this->numberFormat = $numberFormat;
+ $this->positivePattern = $patterns[0];
+ $this->negativePattern = $patterns[1];
+ $this->groupingUsed = (strpos($this->positivePattern, ',') !== false);
+ // This pattern has number groups, parse them.
+ if ($this->groupingUsed) {
+ preg_match('/#+0/', $this->positivePattern, $primaryGroupMatches);
+ $this->primaryGroupSize = $this->secondaryGroupSize = strlen($primaryGroupMatches[0]);
+ $numberGroups = explode(',', $this->positivePattern);
+ if (count($numberGroups) > 2) {
+ // This pattern has a distinct secondary group size.
+ $this->secondaryGroupSize = strlen($numberGroups[1]);
+ }
+ }
+
+ // Initialize the fraction digit settings for decimal and percent
+ // styles only. The currency ones will default to the currency values.
+ if (in_array($style, array(self::DECIMAL, self::PERCENT))) {
+ $this->minimumFractionDigits = 0;
+ $this->maximumFractionDigits = 3;
+ }
+ $this->currencyDisplay = self::CURRENCY_DISPLAY_SYMBOL;
+ }
+
+ /**
+ * {@inheritdoc}
+ */
+ public function format($value)
+ {
+ if (!is_numeric($value)) {
+ $message = sprintf('The provided value "%s" must be a valid number or numeric string.', $value);
+ throw new InvalidArgumentException($message);
+ }
+
+ // Ensure that the value is positive and has the right number of digits.
+ $negative = (bccomp('0', $value, 12) == 1);
+ $signMultiplier = $negative ? '-1' : '1';
+ $value = bcdiv($value, $signMultiplier, $this->maximumFractionDigits);
+ // Split the number into major and minor digits.
+ $valueParts = explode('.', $value);
+ $majorDigits = $valueParts[0];
+ // Account for maximumFractionDigits = 0, where the number won't
+ // have a decimal point, and $valueParts[1] won't be set.
+ $minorDigits = isset($valueParts[1]) ? $valueParts[1] : '';
+
+ if ($this->groupingUsed) {
+ // Reverse the major digits, since they are grouped from the right.
+ $majorDigits = array_reverse(str_split($majorDigits));
+ // Group the major digits.
+ $groups = array();
+ $groups[] = array_splice($majorDigits, 0, $this->primaryGroupSize);
+ while (!empty($majorDigits)) {
+ $groups[] = array_splice($majorDigits, 0, $this->secondaryGroupSize);
+ }
+ // Reverse the groups and the digits inside of them.
+ $groups = array_reverse($groups);
+ foreach ($groups as &$group) {
+ $group = implode(array_reverse($group));
+ }
+ // Reconstruct the major digits.
+ $majorDigits = implode(',', $groups);
+ }
+
+ if ($this->minimumFractionDigits < $this->maximumFractionDigits) {
+ // Strip any trailing zeroes.
+ $minorDigits = rtrim($minorDigits, '0');
+ if (strlen($minorDigits) < $this->minimumFractionDigits) {
+ // Now there are too few digits, re-add trailing zeroes
+ // until the desired length is reached.
+ $neededZeroes = $this->minimumFractionDigits - strlen($minorDigits);
+ $minorDigits .= str_repeat('0', $neededZeroes);
+ }
+ }
+
+ // Assemble the final number and insert it into the pattern.
+ $value = $minorDigits ? $majorDigits . '.' . $minorDigits : $majorDigits;
+ $pattern = $negative ? $this->negativePattern : $this->positivePattern;
+ $value = preg_replace('/#(?:[\.,]#+)*0(?:[,\.][0#]+)*/', $value, $pattern);
+
+ // Localize the number.
+ $value = $this->replaceDigits($value);
+ $value = $this->replaceSymbols($value);
+
+ return $value;
+ }
+
+ /**
+ * {@inheritdoc}
+ */
+ public function formatCurrency($value, CurrencyInterface $currency)
+ {
+ // Use the currency defaults if the values weren't set by the caller.
+ $resetMinimumFractionDigits = $resetMaximumFractionDigits = false;
+ if (!isset($this->minimumFractionDigits)) {
+ $this->minimumFractionDigits = $currency->getFractionDigits();
+ $resetMinimumFractionDigits = true;
+ }
+ if (!isset($this->maximumFractionDigits)) {
+ $this->maximumFractionDigits = $currency->getFractionDigits();
+ $resetMaximumFractionDigits = true;
+ }
+
+ // Format the decimal part of the value first.
+ $value = $this->format($value);
+
+ // Reset the fraction digit settings, so that they don't affect
+ // future formattings with different currencies.
+ if ($resetMinimumFractionDigits) {
+ $this->minimumFractionDigits = null;
+ }
+ if ($resetMaximumFractionDigits) {
+ $this->maximumFractionDigits = null;
+ }
+
+ // Determine whether to show the currency symbol or the currency code.
+ if ($this->currencyDisplay == self::CURRENCY_DISPLAY_SYMBOL) {
+ $symbol = $currency->getSymbol();
+ } else {
+ $symbol = $currency->getCurrencyCode();
+ }
+
+ return str_replace('¤', $symbol, $value);
+ }
+
+ /**
+ * {@inheritdoc}
+ */
+ public function parseCurrency($value, CurrencyInterface $currency)
+ {
+ $replacements = array(
+ // Convert the localized symbols back to their original form.
+ $this->numberFormat->getDecimalSeparator() => '.',
+ $this->numberFormat->getPlusSign() => '+',
+ $this->numberFormat->getMinusSign() => '-',
+
+ // Strip any grouping separators, the currency code or symbol.
+ $this->numberFormat->getGroupingSeparator() => '',
+ $currency->getCurrencyCode() => '',
+ $currency->getSymbol() => '',
+
+ // Strip whitespace (spaces and non-breaking spaces).
+ ' ' => '',
+ chr(0xC2) . chr(0xA0) => '',
+ );
+ $numberingSystem = $this->numberFormat->getNumberingSystem();
+ if (isset($this->digits[$numberingSystem])) {
+ // Convert the localized digits back to latin.
+ $replacements += array_flip($this->digits[$numberingSystem]);
+ }
+
+ $value = strtr($value, $replacements);
+ if (substr($value, 0, 1) == '(' && substr($value, -1, 1) == ')') {
+ // This is an accounting formatted negative number.
+ $value = '-' . str_replace(array('(', ')'), '', $value);
+ }
+
+ return is_numeric($value) ? $value : false;
+ }
+
+ /**
+ * Replaces digits with their localized equivalents.
+ *
+ * @param string $value The value being formatted.
+ *
+ * @return string
+ */
+ protected function replaceDigits($value)
+ {
+ $numberingSystem = $this->numberFormat->getNumberingSystem();
+ if (isset($this->digits[$numberingSystem])) {
+ $value = strtr($value, $this->digits[$numberingSystem]);
+ }
+
+ return $value;
+ }
+
+ /**
+ * Replaces number symbols with their localized equivalents.
+ *
+ * @param string $value The value being formatted.
+ *
+ * @return string
+ *
+ * @see http://cldr.unicode.org/translation/number-symbols
+ */
+ protected function replaceSymbols($value)
+ {
+ $replacements = array(
+ '.' => $this->numberFormat->getDecimalSeparator(),
+ ',' => $this->numberFormat->getGroupingSeparator(),
+ '+' => $this->numberFormat->getPlusSign(),
+ '-' => $this->numberFormat->getMinusSign(),
+ '%' => $this->numberFormat->getPercentSign(),
+ );
+
+ return strtr($value, $replacements);
+ }
+
+ /**
+ * {@inheritdoc}
+ */
+ public function getNumberFormat()
+ {
+ return $this->numberFormat;
+ }
+
+ /**
+ * {@inheritdoc}
+ */
+ public function getMinimumFractionDigits()
+ {
+ return $this->minimumFractionDigits;
+ }
+
+ /**
+ * {@inheritdoc}
+ */
+ public function setMinimumFractionDigits($minimumFractionDigits)
+ {
+ $this->minimumFractionDigits = $minimumFractionDigits;
+
+ return $this;
+ }
+
+ /**
+ * {@inheritdoc}
+ */
+ public function getMaximumFractionDigits()
+ {
+ return $this->maximumFractionDigits;
+ }
+
+ /**
+ * {@inheritdoc}
+ */
+ public function setMaximumFractionDigits($maximumFractionDigits)
+ {
+ $this->maximumFractionDigits = $maximumFractionDigits;
+
+ return $this;
+ }
+
+ /**
+ * {@inheritdoc}
+ */
+ public function isGroupingUsed()
+ {
+ return $this->groupingUsed;
+ }
+
+ /**
+ * {@inheritdoc}
+ */
+ public function setGroupingUsed($groupingUsed)
+ {
+ $this->groupingUsed = $groupingUsed;
+
+ return $this;
+ }
+
+ /**
+ * {@inheritdoc}
+ */
+ public function getCurrencyDisplay()
+ {
+ return $this->currencyDisplay;
+ }
+
+ /**
+ * {@inheritdoc}
+ */
+ public function setCurrencyDisplay($currencyDisplay)
+ {
+ $this->currencyDisplay = $currencyDisplay;
+
+ return $this;
+ }
+}
diff --git a/library/intl/src/Formatter/NumberFormatterInterface.php b/library/intl/src/Formatter/NumberFormatterInterface.php
new file mode 100644
index 000000000..721107555
--- /dev/null
+++ b/library/intl/src/Formatter/NumberFormatterInterface.php
@@ -0,0 +1,134 @@
+<?php
+
+namespace CommerceGuys\Intl\Formatter;
+
+use CommerceGuys\Intl\Currency\CurrencyInterface;
+use CommerceGuys\Intl\NumberFormat\NumberFormatInterface;
+
+interface NumberFormatterInterface
+{
+ /* Format style constants */
+ const DECIMAL = 1;
+ const PERCENT = 2;
+ const CURRENCY = 3;
+ const CURRENCY_ACCOUNTING = 4;
+
+ /* Currency display style constants */
+ const CURRENCY_DISPLAY_SYMBOL = 1;
+ const CURRENCY_DISPLAY_CODE = 2;
+
+ /**
+ * Formats a number.
+ *
+ * Please note that the provided value should already be rounded.
+ * This formatter doesn't do any rounding of its own, and will simply
+ * truncate extra digits.
+ *
+ * @param string $value The value to format.
+ *
+ * @return string
+ */
+ public function format($value);
+
+ /**
+ * Formats a currency value.
+ *
+ * Please note that the provided value should already be rounded.
+ * This formatter doesn't do any rounding of its own, and will simply
+ * truncate extra digits.
+ *
+ * @param string $value The value to format.
+ * @param CurrencyInterface $currency The currency.
+ *
+ * @return string
+ */
+ public function formatCurrency($value, CurrencyInterface $currency);
+
+ /**
+ * Parses a formatted currency value.
+ *
+ * Commonly used in price input widgets where the end-user might
+ * input a value using digits and symbols common to their locale.
+ *
+ * @param string $value The value to parse.
+ * @param CurrencyInterface $currency The currency.
+ *
+ * @return string|false The parsed numeric value or FALSE on error.
+ */
+ public function parseCurrency($value, CurrencyInterface $currency);
+
+ /**
+ * Gets the number format.
+ *
+ * @return NumberFormatInterface
+ */
+ public function getNumberFormat();
+
+ /**
+ * Gets the minimum number of fraction digits.
+ *
+ * Defaults to 0 for decimal and percentage styles.
+ * Defaults to null for currency styles, since the currency number of
+ * fraction digits is used as the default in that case.
+ *
+ * @return int
+ */
+ public function getMinimumFractionDigits();
+
+ /**
+ * Sets the minimum number of fraction digits.
+ *
+ * @param int $minimumFractionDigits
+ */
+ public function setMinimumFractionDigits($minimumFractionDigits);
+
+ /**
+ * Gets the maximum number of fraction digits.
+ *
+ * Defaults to 3 for decimal and percentage styles.
+ * Defaults to null for currency styles, since the currency number of
+ * fraction digits is used as the default in that case.
+ *
+ * @return int
+ */
+ public function getMaximumFractionDigits();
+
+ /**
+ * Sets the maximum number of fraction digits.
+ *
+ * @param int $maximumFractionDigits
+ */
+ public function setMaximumFractionDigits($maximumFractionDigits);
+
+ /**
+ * Returns whether the major digits will be grouped.
+ *
+ * @return bool
+ */
+ public function isGroupingUsed();
+
+ /**
+ * Sets whether or not major digits should be grouped
+ *
+ * @param bool $groupingUsed
+ */
+ public function setGroupingUsed($groupingUsed);
+
+ /**
+ * Gets the currency display style.
+ *
+ * Controls whether a currency amount will be shown with the
+ * currency symbol (CURRENCY_DISPLAY_SYMBOL) or the
+ * currency code (CURRENCY_DISPLAY_CODE).
+ *
+ * @return int
+ */
+ public function getCurrencyDisplay();
+
+ /**
+ * Sets the currency display style.
+ *
+ * @param int $currencyDisplay One of the CURRENCY_DISPLAY_ constants.
+ */
+ public function setCurrencyDisplay($currencyDisplay);
+}
diff --git a/library/intl/src/Language/Language.php b/library/intl/src/Language/Language.php
new file mode 100644
index 000000000..259b57249
--- /dev/null
+++ b/library/intl/src/Language/Language.php
@@ -0,0 +1,91 @@
+<?php
+
+namespace CommerceGuys\Intl\Language;
+
+class Language implements LanguageInterface
+{
+ /**
+ * The two-letter language code.
+ *
+ * @var string
+ */
+ protected $languageCode;
+
+ /**
+ * The language name.
+ *
+ * @var string
+ */
+ protected $name;
+
+ /**
+ * The language locale (i.e. "en-US").
+ *
+ * @var string
+ */
+ protected $locale;
+
+ /**
+ * Returns the string representation of the Language.
+ *
+ * @return string
+ */
+ public function __toString()
+ {
+ return $this->getLanguageCode();
+ }
+
+ /**
+ * {@inheritdoc}
+ */
+ public function getLanguageCode()
+ {
+ return $this->languageCode;
+ }
+
+ /**
+ * {@inheritdoc}
+ */
+ public function setLanguageCode($languageCode)
+ {
+ $this->languageCode = $languageCode;
+
+ return $this;
+ }
+
+ /**
+ * {@inheritdoc}
+ */
+ public function getName()
+ {
+ return $this->name;
+ }
+
+ /**
+ * {@inheritdoc}
+ */
+ public function setName($name)
+ {
+ $this->name = $name;
+
+ return $this;
+ }
+
+ /**
+ * {@inheritdoc}
+ */
+ public function getLocale()
+ {
+ return $this->locale;
+ }
+
+ /**
+ * {@inheritdoc}
+ */
+ public function setLocale($locale)
+ {
+ $this->locale = $locale;
+
+ return $this;
+ }
+}
diff --git a/library/intl/src/Language/LanguageInterface.php b/library/intl/src/Language/LanguageInterface.php
new file mode 100644
index 000000000..612389142
--- /dev/null
+++ b/library/intl/src/Language/LanguageInterface.php
@@ -0,0 +1,37 @@
+<?php
+
+namespace CommerceGuys\Intl\Language;
+
+interface LanguageInterface
+{
+ /**
+ * Gets the two-letter language code.
+ *
+ * @return string
+ */
+ public function getLanguageCode();
+
+ /**
+ * Sets the two-letter language code.
+ *
+ * @param string $languageCode The two-letter language code.
+ */
+ public function setLanguageCode($languageCode);
+
+ /**
+ * Gets the language name.
+ *
+ * Note that certain locales have incomplete translations, in which
+ * case the english version of the language name is used instead.
+ *
+ * @return string
+ */
+ public function getName();
+
+ /**
+ * Sets the language name.
+ *
+ * @param string $name The language name.
+ */
+ public function setName($name);
+}
diff --git a/library/intl/src/Language/LanguageRepository.php b/library/intl/src/Language/LanguageRepository.php
new file mode 100644
index 000000000..50335cdc0
--- /dev/null
+++ b/library/intl/src/Language/LanguageRepository.php
@@ -0,0 +1,96 @@
+<?php
+
+namespace CommerceGuys\Intl\Language;
+
+use CommerceGuys\Intl\LocaleResolverTrait;
+use CommerceGuys\Intl\Exception\UnknownLanguageException;
+
+/**
+ * Manages languages based on JSON definitions.
+ */
+class LanguageRepository implements LanguageRepositoryInterface
+{
+ use LocaleResolverTrait;
+
+ /**
+ * Per-locale language definitions.
+ *
+ * @var array
+ */
+ protected $definitions = array();
+
+ /**
+ * Creates a LanguageRepository instance.
+ *
+ * @param string $definitionPath The path to the currency definitions.
+ * Defaults to 'resources/language'.
+ */
+ public function __construct($definitionPath = null)
+ {
+ $this->definitionPath = $definitionPath ? $definitionPath : __DIR__ . '/../../resources/language/';
+ }
+
+ /**
+ * {@inheritdoc}
+ */
+ public function get($languageCode, $locale = null, $fallbackLocale = null)
+ {
+ $locale = $this->resolveLocale($locale, $fallbackLocale);
+ $definitions = $this->loadDefinitions($locale);
+ if (!isset($definitions[$languageCode])) {
+ throw new UnknownLanguageException($languageCode);
+ }
+
+ return $this->createLanguageFromDefinition($definitions[$languageCode], $locale);
+ }
+
+ /**
+ * {@inheritdoc}
+ */
+ public function getAll($locale = null, $fallbackLocale = null)
+ {
+ $locale = $this->resolveLocale($locale, $fallbackLocale);
+ $definitions = $this->loadDefinitions($locale);
+ $languages = array();
+ foreach ($definitions as $languageCode => $definition) {
+ $languages[$languageCode] = $this->createLanguageFromDefinition($definition, $locale);
+ }
+
+ return $languages;
+ }
+
+ /**
+ * Loads the language definitions for the provided locale.
+ *
+ * @param string $locale The desired locale.
+ *
+ * @return array
+ */
+ protected function loadDefinitions($locale)
+ {
+ if (!isset($this->definitions[$locale])) {
+ $filename = $this->definitionPath . $locale . '.json';
+ $this->definitions[$locale] = json_decode(file_get_contents($filename), true);
+ }
+
+ return $this->definitions[$locale];
+ }
+
+ /**
+ * Creates a language object from the provided definition.
+ *
+ * @param array $definition The language definition.
+ * @param string $locale The locale of the language definition.
+ *
+ * @return Language
+ */
+ protected function createLanguageFromDefinition(array $definition, $locale)
+ {
+ $language = new Language();
+ $language->setLanguageCode($definition['code']);
+ $language->setName($definition['name']);
+ $language->setLocale($locale);
+
+ return $language;
+ }
+}
diff --git a/library/intl/src/Language/LanguageRepositoryInterface.php b/library/intl/src/Language/LanguageRepositoryInterface.php
new file mode 100644
index 000000000..ebdc0200a
--- /dev/null
+++ b/library/intl/src/Language/LanguageRepositoryInterface.php
@@ -0,0 +1,31 @@
+<?php
+
+namespace CommerceGuys\Intl\Language;
+
+/**
+ * Language repository interface.
+ */
+interface LanguageRepositoryInterface
+{
+ /**
+ * Returns a language instance matching the provided language code.
+ *
+ * @param string $languageCode The language code.
+ * @param string $locale The locale (i.e. fr-FR).
+ * @param string $fallbackLocale A fallback locale (i.e "en").
+ *
+ * @return LanguageInterface
+ */
+ public function get($languageCode, $locale = null, $fallbackLocale = null);
+
+ /**
+ * Returns all available language instances.
+ *
+ * @param string $locale The locale (i.e. fr-FR).
+ * @param string $fallbackLocale A fallback locale (i.e "en").
+ *
+ * @return array An array of language implementing the LanguageInterface,
+ * keyed by language code.
+ */
+ public function getAll($locale = null, $fallbackLocale = null);
+}
diff --git a/library/intl/src/LocaleResolverTrait.php b/library/intl/src/LocaleResolverTrait.php
new file mode 100644
index 000000000..21c463c7e
--- /dev/null
+++ b/library/intl/src/LocaleResolverTrait.php
@@ -0,0 +1,89 @@
+<?php
+
+namespace CommerceGuys\Intl;
+
+use CommerceGuys\Intl\Exception\UnknownLocaleException;
+
+trait LocaleResolverTrait
+{
+ /**
+ * The path where per-locale definitions are stored.
+ */
+ protected $definitionPath;
+
+ /**
+ * Determines which locale should be used for loading definitions.
+ *
+ * If the "bs-Cyrl-BA" locale is requested, with an "en" fallback,
+ * the system will try to find the definitions for:
+ * 1) bs-Cyrl-BA
+ * 2) bs-Cyrl
+ * 3) bs
+ * 4) en
+ * The first locale for which a definition file is found, wins.
+ * Otherwise, an exception is thrown.
+ *
+ * @param string $locale The desired locale (i.e. fr-FR).
+ * @param string $fallbackLocale A fallback locale (i.e "en").
+ *
+ * @return string
+ *
+ * @throws UnknownLocaleException
+ */
+ protected function resolveLocale($locale = null, $fallbackLocale = null)
+ {
+ if (is_null($locale)) {
+ // Use the default locale if none was provided.
+ // @todo Provide a way to override this.
+ $locale = 'en';
+ }
+ // Normalize the locale. Allows en_US to work the same as en-US, etc.
+ $locale = str_replace('_', '-', $locale);
+ // List all possible variants (i.e. en-US gives "en-US" and "en").
+ $localeVariants = $this->getLocaleVariants($locale);
+ // A fallback locale was provided, add it to the end of the chain.
+ if (isset($fallbackLocale)) {
+ $localeVariants[] = $fallbackLocale;
+ }
+
+ // Try to resolve a locale by finding a matching definition file.
+ $resolvedLocale = null;
+ foreach ($localeVariants as $localeVariant) {
+ $path = $this->definitionPath . $localeVariant . '.json';
+ if (file_exists($path)) {
+ $resolvedLocale = $localeVariant;
+ break;
+ }
+ }
+ // No locale could be resolved, stop here.
+ if (!$resolvedLocale) {
+ throw new UnknownLocaleException($locale);
+ }
+
+ return $resolvedLocale;
+ }
+
+ /**
+ * Returns all variants of a locale.
+ *
+ * For example, "bs-Cyrl-BA" has the following variants:
+ * 1) bs-Cyrl-BA
+ * 2) bs-Cyrl
+ * 3) bs
+ *
+ * @param string $locale The locale (i.e. fr-FR).
+ *
+ * @return array An array of all variants of a locale.
+ */
+ protected function getLocaleVariants($locale)
+ {
+ $localeVariants = array();
+ $localeParts = explode('-', $locale);
+ while (!empty($localeParts)) {
+ $localeVariants[] = implode('-', $localeParts);
+ array_pop($localeParts);
+ }
+
+ return $localeVariants;
+ }
+}
diff --git a/library/intl/src/NumberFormat/NumberFormat.php b/library/intl/src/NumberFormat/NumberFormat.php
new file mode 100644
index 000000000..0c512b7ab
--- /dev/null
+++ b/library/intl/src/NumberFormat/NumberFormat.php
@@ -0,0 +1,269 @@
+<?php
+
+namespace CommerceGuys\Intl\NumberFormat;
+
+class NumberFormat implements NumberFormatInterface
+{
+ /**
+ * The locale (i.e. "en_US").
+ *
+ * @var string
+ */
+ protected $locale;
+
+ /**
+ * The numbering system.
+ *
+ * @var string
+ */
+ protected $numberingSystem = array();
+
+ /**
+ * The decimal separator.
+ *
+ * @var string
+ */
+ protected $decimalSeparator = array();
+
+ /**
+ * The grouping separator.
+ *
+ * @var string
+ */
+ protected $groupingSeparator = array();
+
+ /**
+ * The plus sign.
+ *
+ * @var string
+ */
+ protected $plusSign = array();
+
+ /**
+ * The number symbols.
+ *
+ * @var string
+ */
+ protected $minusSign = array();
+
+ /**
+ * The percent sign.
+ *
+ * @var string
+ */
+ protected $percentSign = array();
+
+ /**
+ * The number pattern used to format decimal numbers.
+ *
+ * @var string
+ */
+ protected $decimalPattern;
+
+ /**
+ * The number pattern used to format percentages.
+ *
+ * @var string
+ */
+ protected $percentPattern;
+
+ /**
+ * The number pattern used to format currency amounts.
+ *
+ * @var string
+ */
+ protected $currencyPattern;
+
+ /**
+ * The number pattern used to format accounting currency amounts.
+ *
+ * @var string
+ */
+ protected $accountingCurrencyPattern;
+
+ /**
+ * {@inheritdoc}
+ */
+ public function getLocale()
+ {
+ return $this->locale;
+ }
+
+ /**
+ * {@inheritdoc}
+ */
+ public function setLocale($locale)
+ {
+ $this->locale = $locale;
+
+ return $this;
+ }
+
+ /**
+ * {@inheritdoc}
+ */
+ public function getNumberingSystem()
+ {
+ return $this->numberingSystem;
+ }
+
+ /**
+ * {@inheritdoc}
+ */
+ public function setNumberingSystem($numberingSystem)
+ {
+ $this->numberingSystem = $numberingSystem;
+ }
+
+ /**
+ * {@inheritdoc}
+ */
+ public function getDecimalSeparator()
+ {
+ return $this->decimalSeparator;
+ }
+
+ /**
+ * {@inheritdoc}
+ */
+ public function setDecimalSeparator($decimalSeparator)
+ {
+ $this->decimalSeparator = $decimalSeparator;
+ }
+
+ /**
+ * {@inheritdoc}
+ */
+ public function getGroupingSeparator()
+ {
+ return $this->groupingSeparator;
+ }
+
+ /**
+ * {@inheritdoc}
+ */
+ public function setGroupingSeparator($groupingSeparator)
+ {
+ $this->groupingSeparator = $groupingSeparator;
+ }
+
+ /**
+ * {@inheritdoc}
+ */
+ public function getPlusSign()
+ {
+ return $this->plusSign;
+ }
+
+ /**
+ * {@inheritdoc}
+ */
+ public function setPlusSign($plusSign)
+ {
+ $this->plusSign = $plusSign;
+ }
+
+ /**
+ * {@inheritdoc}
+ */
+ public function getMinusSign()
+ {
+ return $this->minusSign;
+ }
+
+ /**
+ * {@inheritdoc}
+ */
+ public function setMinusSign($minusSign)
+ {
+ $this->minusSign = $minusSign;
+ }
+
+ /**
+ * {@inheritdoc}
+ */
+ public function getPercentSign()
+ {
+ return $this->percentSign;
+ }
+
+ /**
+ * {@inheritdoc}
+ */
+ public function setPercentSign($percentSign)
+ {
+ $this->percentSign = $percentSign;
+ }
+
+ /**
+ * {@inheritdoc}
+ */
+ public function getDecimalPattern()
+ {
+ return $this->decimalPattern;
+ }
+
+ /**
+ * {@inheritdoc}
+ */
+ public function setDecimalPattern($decimalPattern)
+ {
+ $this->decimalPattern = $decimalPattern;
+
+ return $this;
+ }
+
+ /**
+ * {@inheritdoc}
+ */
+ public function getPercentPattern()
+ {
+ return $this->percentPattern;
+ }
+
+ /**
+ * {@inheritdoc}
+ */
+ public function setPercentPattern($percentPattern)
+ {
+ $this->percentPattern = $percentPattern;
+
+ return $this;
+ }
+
+ /**
+ * {@inheritdoc}
+ */
+ public function getCurrencyPattern()
+ {
+ return $this->currencyPattern;
+ }
+
+ /**
+ * {@inheritdoc}
+ */
+ public function setCurrencyPattern($currencyPattern)
+ {
+ $this->currencyPattern = $currencyPattern;
+
+ return $this;
+ }
+
+ /**
+ * {@inheritdoc}
+ */
+ public function getAccountingCurrencyPattern()
+ {
+ return $this->accountingCurrencyPattern;
+ }
+
+ /**
+ * {@inheritdoc}
+ */
+ public function setAccountingCurrencyPattern($accountingCurrencyPattern)
+ {
+ $this->accountingCurrencyPattern = $accountingCurrencyPattern;
+
+ return $this;
+ }
+}
diff --git a/library/intl/src/NumberFormat/NumberFormatInterface.php b/library/intl/src/NumberFormat/NumberFormatInterface.php
new file mode 100644
index 000000000..fa382df70
--- /dev/null
+++ b/library/intl/src/NumberFormat/NumberFormatInterface.php
@@ -0,0 +1,185 @@
+<?php
+
+namespace CommerceGuys\Intl\NumberFormat;
+
+interface NumberFormatInterface
+{
+ // Arabic-Indic digits.
+ const NUMBERING_SYSTEM_ARABIC = 'arab';
+ // Extended Arabic-Indic digits.
+ const NUMBERING_SYSTEM_ARABIC_EXTENDED = 'arabext';
+ // Bengali digits.
+ const NUMBERING_SYSTEM_BENGALI = 'beng';
+ // Devanagari digits.
+ const NUMBERING_SYSTEM_DEVANAGARI = 'deva';
+ // Latin digits
+ const NUMBERING_SYSTEM_LATIN = 'latn';
+
+ /**
+ * Gets the locale.
+ *
+ * @return string
+ */
+ public function getLocale();
+
+ /**
+ * Sets the locale.
+ *
+ * @param string $locale The locale (i.e. "en_US").
+ */
+ public function setLocale($locale);
+
+ /**
+ * Gets the numbering system.
+ *
+ * The value is one of the NUMBERING_SYSTEM_ constants.
+ *
+ * @return string
+ */
+ public function getNumberingSystem();
+
+ /**
+ * Sets the numbering system.
+ *
+ * @param string $numberingSystem One of the NUMBERING_SYSTEM_ constants.
+ */
+ public function setNumberingSystem($numberingSystem);
+
+ /**
+ * Gets the decimal separator.
+ *
+ * @return string
+ */
+ public function getDecimalSeparator();
+
+ /**
+ * Sets the decimal separator.
+ *
+ * @var string $decimalSeparator
+ */
+ public function setDecimalSeparator($decimalSeparator);
+
+ /**
+ * Gets the grouping separator.
+ *
+ * @return string
+ */
+ public function getGroupingSeparator();
+
+ /**
+ * Sets the grouping separator.
+ *
+ * @var string $groupingSeparator
+ */
+ public function setGroupingSeparator($groupingSeparator);
+
+ /**
+ * Gets the plus sign.
+ *
+ * @return string
+ */
+ public function getPlusSign();
+
+ /**
+ * Sets the plus sign.
+ *
+ * @var string $plusSign
+ */
+ public function setPlusSign($plusSign);
+
+ /**
+ * Gets the minus sign.
+ *
+ * @return string
+ */
+ public function getMinusSign();
+
+ /**
+ * Sets the minus sign.
+ *
+ * @var string $minusSign
+ */
+ public function setMinusSign($minusSign);
+
+ /**
+ * Gets the percent sign.
+ *
+ * @return string
+ */
+ public function getPercentSign();
+
+ /**
+ * Sets the percent sign.
+ *
+ * @var string $percentSign
+ */
+ public function setPercentSign($percentSign);
+
+ /**
+ * Gets the number pattern used to format decimal numbers.
+ *
+ * @return string
+ *
+ * @see http://cldr.unicode.org/translation/number-patterns
+ */
+ public function getDecimalPattern();
+
+ /**
+ * Sets the number pattern used to format decimal numbers.
+ *
+ * @param string $decimalPattern The decimal pattern.
+ */
+ public function setDecimalPattern($decimalPattern);
+
+ /**
+ * Gets the number pattern used to format percentages.
+ *
+ * @return string
+ *
+ * @see http://cldr.unicode.org/translation/number-patterns
+ */
+ public function getPercentPattern();
+
+ /**
+ * Sets the number pattern used to format percentages.
+ *
+ * @param string $percentPattern The percent pattern.
+ */
+ public function setPercentPattern($percentPattern);
+
+ /**
+ * Gets the number pattern used to format currency amounts.
+ *
+ * @return string
+ *
+ * @see http://cldr.unicode.org/translation/number-patterns
+ */
+ public function getCurrencyPattern();
+
+ /**
+ * Sets the number pattern used to format currency amounts.
+ *
+ * @param string $currencyPattern The currency pattern.
+ */
+ public function setCurrencyPattern($currencyPattern);
+
+ /**
+ * Gets the number pattern used to format accounting currency amounts.
+ *
+ * Most commonly used when formatting amounts on invoices.
+ *
+ * @return string
+ *
+ * @see http://cldr.unicode.org/translation/number-patterns
+ */
+ public function getAccountingCurrencyPattern();
+
+ /**
+ * Sets the number pattern used to format accounting currency amounts.
+ *
+ * Most commonly used when formatting amounts on invoices.
+ *
+ * @param string $accountingCurrencyPattern The accounting currency pattern.
+ */
+ public function setAccountingCurrencyPattern($accountingCurrencyPattern);
+}
diff --git a/library/intl/src/NumberFormat/NumberFormatRepository.php b/library/intl/src/NumberFormat/NumberFormatRepository.php
new file mode 100644
index 000000000..29a597906
--- /dev/null
+++ b/library/intl/src/NumberFormat/NumberFormatRepository.php
@@ -0,0 +1,87 @@
+<?php
+
+namespace CommerceGuys\Intl\NumberFormat;
+
+use CommerceGuys\Intl\LocaleResolverTrait;
+
+/**
+ * Repository for number formats based on JSON definitions.
+ */
+class NumberFormatRepository implements NumberFormatRepositoryInterface
+{
+ use LocaleResolverTrait;
+
+ /**
+ * Number format definitions.
+ *
+ * @var array
+ */
+ protected $definitions = array();
+
+ /**
+ * Creates a NumberFormatRepository instance.
+ *
+ * @param string $definitionPath The path to the number format definitions.
+ * Defaults to 'resources/number_format'.
+ */
+ public function __construct($definitionPath = null)
+ {
+ $this->definitionPath = $definitionPath ? $definitionPath : __DIR__ . '/../../resources/number_format/';
+ }
+
+ /**
+ * {@inheritdoc}
+ */
+ public function get($locale, $fallbackLocale = null)
+ {
+ $locale = $this->resolveLocale($locale, $fallbackLocale);
+ if (!isset($this->definitions[$locale])) {
+ $filename = $this->definitionPath . $locale . '.json';
+ $this->definitions[$locale] = json_decode(file_get_contents($filename), true);
+ }
+
+ return $this->createNumberFormatFromDefinition($this->definitions[$locale], $locale);
+ }
+
+ /**
+ * Creates a number format object from the provided definition.
+ *
+ * @param array $definition The number format definition.
+ * @param string $locale The locale of the number format definition.
+ *
+ * @return NumberFormat
+ */
+ protected function createNumberFormatFromDefinition(array $definition, $locale)
+ {
+ if (!isset($definition['decimal_separator'])) {
+ $definition['decimal_separator'] = '.';
+ }
+ if (!isset($definition['grouping_separator'])) {
+ $definition['grouping_separator'] = ',';
+ }
+ if (!isset($definition['plus_sign'])) {
+ $definition['plus_sign'] = '+';
+ }
+ if (!isset($definition['minus_sign'])) {
+ $definition['minus_sign'] = '-';
+ }
+ if (!isset($definition['percent_sign'])) {
+ $definition['percent_sign'] = '%';
+ }
+
+ $numberFormat = new NumberFormat();
+ $numberFormat->setLocale($locale);
+ $numberFormat->setNumberingSystem($definition['numbering_system']);
+ $numberFormat->setDecimalSeparator($definition['decimal_separator']);
+ $numberFormat->setGroupingSeparator($definition['grouping_separator']);
+ $numberFormat->setPlusSign($definition['plus_sign']);
+ $numberFormat->setMinusSign($definition['minus_sign']);
+ $numberFormat->setPercentSign($definition['percent_sign']);
+ $numberFormat->setDecimalPattern($definition['decimal_pattern']);
+ $numberFormat->setPercentPattern($definition['percent_pattern']);
+ $numberFormat->setCurrencyPattern($definition['currency_pattern']);
+ $numberFormat->setAccountingCurrencyPattern($definition['accounting_currency_pattern']);
+
+ return $numberFormat;
+ }
+}
diff --git a/library/intl/src/NumberFormat/NumberFormatRepositoryInterface.php b/library/intl/src/NumberFormat/NumberFormatRepositoryInterface.php
new file mode 100644
index 000000000..ff162b522
--- /dev/null
+++ b/library/intl/src/NumberFormat/NumberFormatRepositoryInterface.php
@@ -0,0 +1,19 @@
+<?php
+
+namespace CommerceGuys\Intl\NumberFormat;
+
+/**
+ * Number format repository interface.
+ */
+interface NumberFormatRepositoryInterface
+{
+ /**
+ * Returns a number format instance for the provided locale.
+ *
+ * @param string $locale The locale (i.e. fr-FR).
+ * @param string $fallbackLocale A fallback locale (i.e "en").
+ *
+ * @return NumberFormatInterface
+ */
+ public function get($locale, $fallbackLocale = null);
+}
diff --git a/library/intl/tests/Country/CountryRepositoryTest.php b/library/intl/tests/Country/CountryRepositoryTest.php
new file mode 100644
index 000000000..23e1509d8
--- /dev/null
+++ b/library/intl/tests/Country/CountryRepositoryTest.php
@@ -0,0 +1,114 @@
+<?php
+
+namespace CommerceGuys\Intl\Tests\Country;
+
+use CommerceGuys\Intl\Country\CountryRepository;
+use org\bovigo\vfs\vfsStream;
+
+/**
+ * @coversDefaultClass \CommerceGuys\Intl\Country\CountryRepository
+ */
+class CountryRepositoryTest extends \PHPUnit_Framework_TestCase
+{
+ /**
+ * Base country definitions.
+ *
+ * @var array
+ */
+ protected $baseDefinitions = array(
+ 'FR' => array(
+ 'code' => 'FR',
+ 'three_letter_code' => 'FRA',
+ 'numeric_code' => '250',
+ 'telephone_code' => '33',
+ ),
+ 'US' => array(
+ 'code' => 'US',
+ 'three_letter_code' => 'USA',
+ 'numeric_code' => '840',
+ 'telephone_code' => '1',
+ ),
+ );
+
+ /**
+ * English country definitions.
+ *
+ * @var array
+ */
+ protected $englishDefinitions = array(
+ 'FR' => array(
+ 'name' => 'France',
+ ),
+ 'US' => array(
+ 'name' => 'United States',
+ ),
+ );
+
+ /**
+ * @covers ::__construct
+ */
+ public function testConstructor()
+ {
+ // Mock the existence of JSON definitions on the filesystem.
+ $root = vfsStream::setup('resources');
+ vfsStream::newFile('country/base.json')->at($root)->setContent(json_encode($this->baseDefinitions));
+ vfsStream::newFile('country/en.json')->at($root)->setContent(json_encode($this->englishDefinitions));
+
+ // Instantiate the country repository and confirm that the definition path
+ // was properly set.
+ $countryRepository = new CountryRepository('vfs://resources/country/');
+ $definitionPath = $this->getObjectAttribute($countryRepository, 'definitionPath');
+ $this->assertEquals('vfs://resources/country/', $definitionPath);
+
+ return $countryRepository;
+ }
+
+ /**
+ * @covers ::get
+ * @covers ::loadDefinitions
+ * @covers ::createCountryFromDefinition
+ * @uses \CommerceGuys\Intl\Country\Country
+ * @uses \CommerceGuys\Intl\LocaleResolverTrait
+ * @depends testConstructor
+ */
+ public function testGet($countryRepository)
+ {
+ $country = $countryRepository->get('FR');
+ $this->assertInstanceOf('CommerceGuys\\Intl\\Country\\Country', $country);
+ $this->assertEquals('FR', $country->getCountryCode());
+ $this->assertEquals('France', $country->getName());
+ $this->assertEquals('FRA', $country->getThreeLetterCode());
+ $this->assertEquals('250', $country->getNumericCode());
+ $this->assertEquals('33', $country->getTelephoneCode());
+ $this->assertEquals('en', $country->getLocale());
+ }
+
+ /**
+ * @covers ::get
+ * @covers ::loadDefinitions
+ * @uses \CommerceGuys\Intl\LocaleResolverTrait
+ * @expectedException \CommerceGuys\Intl\Exception\UnknownCountryException
+ * @depends testConstructor
+ */
+ public function testGetInvalidCountry($countryRepository)
+ {
+ $countryRepository->get('DE');
+ }
+
+ /**
+ * @covers ::getAll
+ * @covers ::loadDefinitions
+ * @covers ::createCountryFromDefinition
+ * @uses \CommerceGuys\Intl\Country\Country
+ * @uses \CommerceGuys\Intl\LocaleResolverTrait
+ * @depends testConstructor
+ */
+ public function testGetAll($countryRepository)
+ {
+ $countries = $countryRepository->getAll();
+ $this->assertArrayHasKey('FR', $countries);
+ $this->assertArrayHasKey('US', $countries);
+ $this->assertEquals('FR', $countries['FR']->getCountryCode());
+ $this->assertEquals('US', $countries['US']->getCountryCode());
+ }
+}
diff --git a/library/intl/tests/Country/CountryTest.php b/library/intl/tests/Country/CountryTest.php
new file mode 100644
index 000000000..a0b2dc116
--- /dev/null
+++ b/library/intl/tests/Country/CountryTest.php
@@ -0,0 +1,83 @@
+<?php
+
+namespace CommerceGuys\Intl\Tests\Country;
+
+use CommerceGuys\Intl\Country\Country;
+
+/**
+ * @coversDefaultClass \CommerceGuys\Intl\Country\Country
+ */
+class CountryTest extends \PHPUnit_Framework_TestCase
+{
+ /**
+ * @var Country
+ */
+ protected $country;
+
+ public function setUp()
+ {
+ $this->country = new Country();
+ }
+
+ /**
+ * @covers ::getCountryCode
+ * @covers ::setCountryCode
+ * @covers ::__toString
+ */
+ public function testCountryCode()
+ {
+ $this->country->setCountryCode('US');
+ $this->assertEquals('US', $this->country->getCountryCode());
+ $this->assertEquals('US', (string) $this->country);
+ }
+
+ /**
+ * @covers ::getName
+ * @covers ::setName
+ */
+ public function testName()
+ {
+ $this->country->setName('United States');
+ $this->assertEquals('United States', $this->country->getName());
+ }
+
+ /**
+ * @covers ::getThreeLetterCode
+ * @covers ::setThreeLetterCode
+ */
+ public function testThreeLetterCode()
+ {
+ $this->country->setThreeLetterCode('USA');
+ $this->assertEquals('USA', $this->country->getThreeLetterCode());
+ }
+
+ /**
+ * @covers ::getNumericCode
+ * @covers ::setNumericCode
+ */
+ public function testNumericCode()
+ {
+ $this->country->setNumericCode('840');
+ $this->assertEquals('840', $this->country->getNumericCode());
+ }
+
+ /**
+ * @covers ::getTelephoneCode
+ * @covers ::setTelephoneCode
+ */
+ public function testTelephoneCode()
+ {
+ $this->country->setTelephoneCode('1');
+ $this->assertEquals('1', $this->country->getTelephoneCode());
+ }
+
+ /**
+ * @covers ::getLocale
+ * @covers ::setLocale
+ */
+ public function testLocale()
+ {
+ $this->country->setLocale('en');
+ $this->assertEquals('en', $this->country->getLocale());
+ }
+}
diff --git a/library/intl/tests/Currency/CurrencyRepositoryTest.php b/library/intl/tests/Currency/CurrencyRepositoryTest.php
new file mode 100644
index 000000000..4270dc70f
--- /dev/null
+++ b/library/intl/tests/Currency/CurrencyRepositoryTest.php
@@ -0,0 +1,113 @@
+<?php
+
+namespace CommerceGuys\Intl\Tests\Currency;
+
+use CommerceGuys\Intl\Currency\CurrencyRepository;
+use org\bovigo\vfs\vfsStream;
+
+/**
+ * @coversDefaultClass \CommerceGuys\Intl\Currency\CurrencyRepository
+ */
+class CurrencyRepositoryTest extends \PHPUnit_Framework_TestCase
+{
+ /**
+ * Base currency definitions.
+ *
+ * @var array
+ */
+ protected $baseDefinitions = array(
+ 'USD' => array(
+ 'code' => 'USD',
+ 'numeric_code' => '840',
+ ),
+ 'EUR' => array(
+ 'code' => 'EUR',
+ 'numeric_code' => '840',
+ 'fraction_digits' => '2',
+ ),
+ );
+
+ /**
+ * English currency definitions.
+ *
+ * @var array
+ */
+ protected $englishDefinitions = array(
+ 'USD' => array(
+ 'name' => 'US Dollar',
+ 'symbol' => '$',
+ ),
+ 'EUR' => array(
+ 'name' => 'Euro',
+ 'symbol' => '€',
+ ),
+ );
+
+ /**
+ * @covers ::__construct
+ */
+ public function testConstructor()
+ {
+ // Mock the existence of JSON definitions on the filesystem.
+ $root = vfsStream::setup('resources');
+ vfsStream::newFile('currency/base.json')->at($root)->setContent(json_encode($this->baseDefinitions));
+ vfsStream::newFile('currency/en.json')->at($root)->setContent(json_encode($this->englishDefinitions));
+
+ // Instantiate the currency repository and confirm that the definition path
+ // was properly set.
+ $currencyRepository = new CurrencyRepository('vfs://resources/currency/');
+ $definitionPath = $this->getObjectAttribute($currencyRepository, 'definitionPath');
+ $this->assertEquals('vfs://resources/currency/', $definitionPath);
+
+ return $currencyRepository;
+ }
+
+ /**
+ * @covers ::get
+ * @covers ::loadDefinitions
+ * @covers ::createCurrencyFromDefinition
+ * @uses \CommerceGuys\Intl\Currency\Currency
+ * @uses \CommerceGuys\Intl\LocaleResolverTrait
+ * @depends testConstructor
+ */
+ public function testGet($currencyRepository)
+ {
+ $currency = $currencyRepository->get('USD');
+ $this->assertInstanceOf('CommerceGuys\\Intl\\Currency\\Currency', $currency);
+ $this->assertEquals('USD', $currency->getCurrencyCode());
+ $this->assertEquals('US Dollar', $currency->getName());
+ $this->assertEquals('840', $currency->getNumericCode());
+ $this->assertEquals('2', $currency->getFractionDigits());
+ $this->assertEquals('$', $currency->getSymbol());
+ $this->assertEquals('en', $currency->getLocale());
+ }
+
+ /**
+ * @covers ::get
+ * @covers ::loadDefinitions
+ * @uses \CommerceGuys\Intl\LocaleResolverTrait
+ * @expectedException \CommerceGuys\Intl\Exception\UnknownCurrencyException
+ * @depends testConstructor
+ */
+ public function testGetInvalidCurrency($currencyRepository)
+ {
+ $currencyRepository->get('RSD');
+ }
+
+ /**
+ * @covers ::getAll
+ * @covers ::loadDefinitions
+ * @covers ::createCurrencyFromDefinition
+ * @uses \CommerceGuys\Intl\Currency\Currency
+ * @uses \CommerceGuys\Intl\LocaleResolverTrait
+ * @depends testConstructor
+ */
+ public function testGetAll($currencyRepository)
+ {
+ $currencies = $currencyRepository->getAll();
+ $this->assertArrayHasKey('USD', $currencies);
+ $this->assertArrayHasKey('EUR', $currencies);
+ $this->assertEquals('USD', $currencies['USD']->getCurrencyCode());
+ $this->assertEquals('EUR', $currencies['EUR']->getCurrencyCode());
+ }
+}
diff --git a/library/intl/tests/Currency/CurrencyTest.php b/library/intl/tests/Currency/CurrencyTest.php
new file mode 100644
index 000000000..837e4d07a
--- /dev/null
+++ b/library/intl/tests/Currency/CurrencyTest.php
@@ -0,0 +1,83 @@
+<?php
+
+namespace CommerceGuys\Intl\Tests\Currency;
+
+use CommerceGuys\Intl\Currency\Currency;
+
+/**
+ * @coversDefaultClass \CommerceGuys\Intl\Currency\Currency
+ */
+class CurrencyTest extends \PHPUnit_Framework_TestCase
+{
+ /**
+ * @var Currency
+ */
+ protected $currency;
+
+ public function setUp()
+ {
+ $this->currency = new Currency();
+ }
+
+ /**
+ * @covers ::getCurrencyCode
+ * @covers ::setCurrencyCode
+ * @covers ::__toString
+ */
+ public function testCurrencyCode()
+ {
+ $this->currency->setCurrencyCode('USD');
+ $this->assertEquals('USD', $this->currency->getCurrencyCode());
+ $this->assertEquals('USD', (string) $this->currency);
+ }
+
+ /**
+ * @covers ::getName
+ * @covers ::setName
+ */
+ public function testName()
+ {
+ $this->currency->setName('US Dollar');
+ $this->assertEquals('US Dollar', $this->currency->getName());
+ }
+
+ /**
+ * @covers ::getNumericCode
+ * @covers ::setNumericCode
+ */
+ public function testNumericCode()
+ {
+ $this->currency->setNumericCode('840');
+ $this->assertEquals('840', $this->currency->getNumericCode());
+ }
+
+ /**
+ * @covers ::getFractionDigits
+ * @covers ::setFractionDigits
+ */
+ public function testFractionDigits()
+ {
+ $this->currency->setFractionDigits('2');
+ $this->assertEquals('2', $this->currency->getFractionDigits());
+ }
+
+ /**
+ * @covers ::getSymbol
+ * @covers ::setSymbol
+ */
+ public function testSymbol()
+ {
+ $this->currency->setSymbol('$');
+ $this->assertEquals('$', $this->currency->getSymbol());
+ }
+
+ /**
+ * @covers ::getLocale
+ * @covers ::setLocale
+ */
+ public function testLocale()
+ {
+ $this->currency->setLocale('en');
+ $this->assertEquals('en', $this->currency->getLocale());
+ }
+}
diff --git a/library/intl/tests/DummyRepository.php b/library/intl/tests/DummyRepository.php
new file mode 100644
index 000000000..0d9ca760b
--- /dev/null
+++ b/library/intl/tests/DummyRepository.php
@@ -0,0 +1,23 @@
+<?php
+
+namespace CommerceGuys\Intl\Tests;
+
+use CommerceGuys\Intl\LocaleResolverTrait;
+
+/**
+ * Dummy repository used for testing the LocaleResolverTrait.
+ */
+class DummyRepository
+{
+ use LocaleResolverTrait;
+
+ public function __construct()
+ {
+ $this->definitionPath = 'vfs://resources/dummy/';
+ }
+
+ public function runResolveLocale($locale, $fallbackLocale = null)
+ {
+ return $this->resolveLocale($locale, $fallbackLocale);
+ }
+}
diff --git a/library/intl/tests/Formatter/NumberFormatterTest.php b/library/intl/tests/Formatter/NumberFormatterTest.php
new file mode 100644
index 000000000..83574873b
--- /dev/null
+++ b/library/intl/tests/Formatter/NumberFormatterTest.php
@@ -0,0 +1,378 @@
+<?php
+
+namespace CommerceGuys\Intl\Tests\Formatter;
+
+use CommerceGuys\Intl\Currency\Currency;
+use CommerceGuys\Intl\Formatter\NumberFormatter;
+use CommerceGuys\Intl\NumberFormat\NumberFormat;
+
+/**
+ * @coversDefaultClass \CommerceGuys\Intl\Formatter\NumberFormatter
+ */
+class NumberFormatterTest extends \PHPUnit_Framework_TestCase
+{
+ /**
+ * Prepare two number formats.
+ */
+ protected $numberFormats = array(
+ 'latn' => array(
+ 'numbering_system' => 'latn',
+ 'decimal_pattern' => '#,##0.###',
+ 'percent_pattern' => '#,##0%',
+ 'currency_pattern' => '¤#,##0.00',
+ 'accounting_currency_pattern' => '¤#,##0.00;(¤#,##0.00)',
+ ),
+ 'beng' => array(
+ 'numbering_system' => 'beng',
+ 'decimal_pattern' => '#,##,##0.###',
+ 'percent_pattern' => '#,##,##0%',
+ 'currency_pattern' => '#,##,##0.00¤',
+ 'accounting_currency_pattern' => '#,##,##0.00¤;(#,##,##0.00¤)',
+ ),
+ );
+
+ /**
+ * Prepare two currency formats.
+ */
+ protected $currencies = array(
+ 'USD' => array(
+ 'code' => 'USD',
+ 'name' => 'US Dollar',
+ 'numeric_code' => '840',
+ 'symbol' => '$',
+ ),
+ 'BND' => array(
+ 'code' => 'BND',
+ 'name' => 'dollar Brunei',
+ 'numeric_code' => '096',
+ 'symbol' => 'BND',
+ ),
+ );
+
+ /**
+ * @covers ::__construct
+ * @uses \CommerceGuys\Intl\Formatter\NumberFormatter::getNumberFormat
+ * @uses \CommerceGuys\Intl\NumberFormat\NumberFormat
+ */
+ public function testConstructor()
+ {
+ $numberFormat = new NumberFormat();
+ $formatter = new NumberFormatter($numberFormat, NumberFormatter::DECIMAL);
+ $this->assertSame($numberFormat, $formatter->getNumberFormat());
+ }
+
+ /**
+ * @covers ::__construct
+ * @uses \CommerceGuys\Intl\NumberFormat\NumberFormat
+ *
+ * @expectedException \CommerceGuys\Intl\Exception\InvalidArgumentException
+ * @expectedExceptionMessage Unknown format style provided to NumberFormatter::__construct().
+ */
+ public function testConstructorWithInvalidStyle()
+ {
+ $numberFormat = new NumberFormat();
+ new NumberFormatter($numberFormat, 'foo');
+ }
+
+ /**
+ * @covers ::format
+ * @covers ::replaceDigits
+ * @covers ::replaceSymbols
+ * @uses \CommerceGuys\Intl\Formatter\NumberFormatter::__construct
+ * @uses \CommerceGuys\Intl\NumberFormat\NumberFormat
+ *
+ * @dataProvider numberValueProvider
+ */
+ public function testFormat($number_format, $style, $value, $expected_value)
+ {
+ $formatter = new NumberFormatter($number_format, $style);
+
+ $formattedNumber = $formatter->format($value);
+ $this->assertSame($expected_value, $formattedNumber);
+ }
+
+ /**
+ * @covers ::SetMinimumFractionDigits
+ * @covers ::SetMaximumFractionDigits
+ * @covers ::format
+ * @uses \CommerceGuys\Intl\Formatter\NumberFormatter::__construct
+ * @uses \CommerceGuys\Intl\Formatter\NumberFormatter::replaceDigits
+ * @uses \CommerceGuys\Intl\Formatter\NumberFormatter::replaceSymbols
+ * @uses \CommerceGuys\Intl\NumberFormat\NumberFormat
+ */
+ public function testFormatFractionDigits()
+ {
+ $numberFormat = $this->createNumberFormat($this->numberFormats['latn']);
+
+ $formatter = new NumberFormatter($numberFormat);
+ $formatter->setMinimumFractionDigits(2);
+ $formattedNumber = $formatter->format('12.5');
+ $this->assertSame('12.50', $formattedNumber);
+
+ $formatter = new NumberFormatter($numberFormat);
+ $formatter->setMaximumFractionDigits(1);
+ $formattedNumber = $formatter->format('12.50');
+ $this->assertSame('12.5', $formattedNumber);
+
+ $formatter = new NumberFormatter($numberFormat);
+ $formatter->setMinimumFractionDigits(4);
+ $formatter->setMaximumFractionDigits(5);
+ $formattedNumber = $formatter->format('12.50000');
+ $this->assertSame('12.5000', $formattedNumber);
+ }
+
+ /**
+ * @covers ::format
+ * @uses \CommerceGuys\Intl\Formatter\NumberFormatter::__construct
+ * @uses \CommerceGuys\Intl\Formatter\NumberFormatter::format
+ * @uses \CommerceGuys\Intl\NumberFormat\NumberFormat
+ *
+ * @expectedException \CommerceGuys\Intl\Exception\InvalidArgumentException
+ */
+ public function testFormatOnlyAllowsNumbers()
+ {
+ $numberFormat = $this->createNumberFormat($this->numberFormats['latn']);
+ $formatter = new NumberFormatter($numberFormat);
+ $formatter->format('a12.34');
+ }
+
+ /**
+ * @covers ::formatCurrency
+ * @covers ::replaceSymbols
+ * @uses \CommerceGuys\Intl\Currency\Currency
+ * @uses \CommerceGuys\Intl\Formatter\NumberFormatter::__construct
+ * @uses \CommerceGuys\Intl\Formatter\NumberFormatter::format
+ * @uses \CommerceGuys\Intl\Formatter\NumberFormatter::replaceDigits
+ * @uses \CommerceGuys\Intl\NumberFormat\NumberFormat
+ *
+ * @dataProvider currencyValueProvider
+ */
+ public function testFormatCurrency($number_format, $currency, $style, $value, $expected_value)
+ {
+ $formatter = new NumberFormatter($number_format, $style);
+
+ $formattedNumber = $formatter->formatCurrency($value, $currency);
+ $this->assertSame($expected_value, $formattedNumber);
+ }
+
+ /**
+ * @covers ::parseCurrency
+ * @uses \CommerceGuys\Intl\Currency\Currency
+ * @uses \CommerceGuys\Intl\Formatter\NumberFormatter::__construct
+ * @uses \CommerceGuys\Intl\NumberFormat\NumberFormat
+ *
+ * @dataProvider formattedCurrencyProvider
+ */
+ public function testParseCurrency($number_format, $currency, $style, $value, $expected_value)
+ {
+ $formatter = new NumberFormatter($number_format, $style);
+
+ $parsedNumber = $formatter->parseCurrency($value, $currency);
+ $this->assertSame($expected_value, $parsedNumber);
+ }
+
+ /**
+ * @covers ::getNumberFormat
+ * @uses \CommerceGuys\Intl\Formatter\NumberFormatter::__construct
+ * @uses \CommerceGuys\Intl\NumberFormat\NumberFormat
+ */
+ public function testGetNumberFormat()
+ {
+ $numberFormat = $this->createNumberFormat($this->numberFormats['latn']);
+ $formatter = new NumberFormatter($numberFormat, NumberFormatter::DECIMAL);
+ $this->assertSame($numberFormat, $formatter->getNumberFormat());
+ }
+
+ /**
+ * @covers ::getMinimumFractionDigits
+ * @uses \CommerceGuys\Intl\Formatter\NumberFormatter::__construct
+ * @uses \CommerceGuys\Intl\NumberFormat\NumberFormat
+ */
+ public function testMinimumFractionDigits()
+ {
+ $numberFormat = $this->createNumberFormat($this->numberFormats['latn']);
+
+ // Defaults to 0 for decimal and percentage formats.
+ $formatter = new NumberFormatter($numberFormat, NumberFormatter::DECIMAL);
+ $this->assertEquals(0, $formatter->getMinimumFractionDigits());
+ $formatter = new NumberFormatter($numberFormat, NumberFormatter::PERCENT);
+ $this->assertEquals(0, $formatter->getMinimumFractionDigits());
+
+ // Should default to null for currency formats.
+ $formatter = new NumberFormatter($numberFormat, NumberFormatter::CURRENCY);
+ $this->assertNull($formatter->getMinimumFractionDigits());
+ $formatter = new NumberFormatter($numberFormat, NumberFormatter::CURRENCY_ACCOUNTING);
+ $this->assertNull($formatter->getMinimumFractionDigits());
+ }
+
+ /**
+ * @covers ::getMaximumFractionDigits
+ * @uses \CommerceGuys\Intl\Formatter\NumberFormatter::__construct
+ * @uses \CommerceGuys\Intl\NumberFormat\NumberFormat
+ */
+ public function testMaximumFractionDigits()
+ {
+ $numberFormat = $this->createNumberFormat($this->numberFormats['latn']);
+
+ // Defaults to 3 for decimal and percentage formats.
+ $formatter = new NumberFormatter($numberFormat, NumberFormatter::DECIMAL);
+ $this->assertEquals(3, $formatter->getMaximumFractionDigits());
+ $formatter = new NumberFormatter($numberFormat, NumberFormatter::PERCENT);
+ $this->assertEquals(3, $formatter->getMaximumFractionDigits());
+
+ // Should default to null for currency formats.
+ $formatter = new NumberFormatter($numberFormat, NumberFormatter::CURRENCY);
+ $this->assertNull($formatter->getMaximumFractionDigits());
+ $formatter = new NumberFormatter($numberFormat, NumberFormatter::CURRENCY_ACCOUNTING);
+ $this->assertNull($formatter->getMaximumFractionDigits());
+ }
+
+ /**
+ * @covers ::isGroupingUsed
+ * @covers ::setGroupingUsed
+ * @uses \CommerceGuys\Intl\Formatter\NumberFormatter::__construct
+ * @uses \CommerceGuys\Intl\Formatter\NumberFormatter::format
+ * @uses \CommerceGuys\Intl\Formatter\NumberFormatter::replaceDigits
+ * @uses \CommerceGuys\Intl\Formatter\NumberFormatter::replaceSymbols
+ * @uses \CommerceGuys\Intl\NumberFormat\NumberFormat
+ */
+ public function testGroupingUsed()
+ {
+ $numberFormat = $this->createNumberFormat($this->numberFormats['latn']);
+
+ // The formatter groups correctly.
+ $formatter = new NumberFormatter($numberFormat, NumberFormatter::DECIMAL);
+ $this->assertTrue($formatter->isGroupingUsed());
+ $this->assertSame('10,000.9', $formatter->format('10000.90'));
+
+ // The formatter respects grouping turned off.
+ $formatter = new NumberFormatter($numberFormat, NumberFormatter::DECIMAL);
+ $formatter->setGroupingUsed(false);
+ $this->assertFalse($formatter->isGroupingUsed());
+ $this->assertSame('10000.9', $formatter->format('10000.90'));
+ }
+
+ /**
+ * @covers ::getCurrencyDisplay
+ * @covers ::setCurrencyDisplay
+ * @covers ::formatCurrency
+ * @uses \CommerceGuys\Intl\Currency\Currency
+ * @uses \CommerceGuys\Intl\Formatter\NumberFormatter::__construct
+ * @uses \CommerceGuys\Intl\Formatter\NumberFormatter::format
+ * @uses \CommerceGuys\Intl\Formatter\NumberFormatter::replaceDigits
+ * @uses \CommerceGuys\Intl\Formatter\NumberFormatter::replaceSymbols
+ * @uses \CommerceGuys\Intl\NumberFormat\NumberFormat
+ */
+ public function testCurrencyDisplay()
+ {
+ $numberFormat = $this->createNumberFormat($this->numberFormats['latn']);
+ $currency = $this->createCurrency($this->currencies['USD']);
+
+ // Currency display defaults to symbol.
+ $formatter = new NumberFormatter($numberFormat, NumberFormatter::CURRENCY);
+ $this->assertSame(NumberFormatter::CURRENCY_DISPLAY_SYMBOL, $formatter->getCurrencyDisplay());
+ $formattedNumber = $formatter->formatCurrency('100', $currency);
+ $this->assertSame('$100.00', $formattedNumber);
+
+ // Currency display respects setting the value to currency code.
+ $formatter = new NumberFormatter($numberFormat, NumberFormatter::CURRENCY);
+ $formatter->setCurrencyDisplay(NumberFormatter::CURRENCY_DISPLAY_CODE);
+ $this->assertSame(NumberFormatter::CURRENCY_DISPLAY_CODE, $formatter->getCurrencyDisplay());
+ $formattedNumber = $formatter->formatCurrency('100', $currency);
+ $this->assertSame('USD100.00', $formattedNumber);
+ }
+
+ /**
+ * Provides the number format, number style, value and expected formatted value.
+ */
+ public function numberValueProvider()
+ {
+ return array(
+ array($this->createNumberFormat($this->numberFormats['latn']), NumberFormatter::DECIMAL, '-50.5', '-50.5'),
+ array($this->createNumberFormat($this->numberFormats['latn']), NumberFormatter::PERCENT, '50.5', '50.5%'),
+ array($this->createNumberFormat($this->numberFormats['latn']), NumberFormatter::DECIMAL, '5000000.5', '5,000,000.5'),
+ array($this->createNumberFormat($this->numberFormats['beng'], 'bn'), NumberFormatter::DECIMAL, '-50.5', '-৫০.৫'),
+ array($this->createNumberFormat($this->numberFormats['beng'], 'bn'), NumberFormatter::PERCENT, '50.5', '৫০.৫%'),
+ array($this->createNumberFormat($this->numberFormats['beng'], 'bn'), NumberFormatter::DECIMAL, '5000000.5', '৫০,০০,০০০.৫')
+ );
+ }
+
+ /**
+ * Provides the number format, currency format, number style, value and expected formatted value.
+ */
+ public function currencyValueProvider()
+ {
+ return array(
+ array($this->createNumberFormat($this->numberFormats['latn']), $this->createCurrency($this->currencies['USD']), NumberFormatter::CURRENCY, '-5.05', '-$5.05'),
+ array($this->createNumberFormat($this->numberFormats['latn']), $this->createCurrency($this->currencies['USD']), NumberFormatter::CURRENCY_ACCOUNTING, '-5.05', '($5.05)'),
+ array($this->createNumberFormat($this->numberFormats['latn']), $this->createCurrency($this->currencies['USD']), NumberFormatter::CURRENCY, '500100.05', '$500,100.05'),
+ array($this->createNumberFormat($this->numberFormats['beng'], 'bn'), $this->createCurrency($this->currencies['BND'], 'bn'), NumberFormatter::CURRENCY, '-50.5', '-৫০.৫০BND'),
+ array($this->createNumberFormat($this->numberFormats['beng'], 'bn'), $this->createCurrency($this->currencies['BND'], 'bn'), NumberFormatter::CURRENCY_ACCOUNTING, '-50.5', '(৫০.৫০BND)'),
+ array($this->createNumberFormat($this->numberFormats['beng'], 'bn'), $this->createCurrency($this->currencies['BND'], 'bn'), NumberFormatter::CURRENCY, '500100.05', '৫,০০,১০০.০৫BND'),
+ );
+ }
+
+ /**
+ * Provides values for the formatted currency parser.
+ */
+ public function formattedCurrencyProvider()
+ {
+ return array(
+ array($this->createNumberFormat($this->numberFormats['latn']), $this->createCurrency($this->currencies['USD']), NumberFormatter::CURRENCY, '$500,100.05', '500100.05'),
+ array($this->createNumberFormat($this->numberFormats['latn']), $this->createCurrency($this->currencies['USD']), NumberFormatter::CURRENCY, '-$1,059.59', '-1059.59'),
+ array($this->createNumberFormat($this->numberFormats['latn']), $this->createCurrency($this->currencies['USD']), NumberFormatter::CURRENCY_ACCOUNTING, '($1,059.59)', '-1059.59'),
+ array($this->createNumberFormat($this->numberFormats['beng'], 'bn'), $this->createCurrency($this->currencies['BND'], 'bn'), NumberFormatter::CURRENCY, '৫,০০,১০০.০৫BND', '500100.05'),
+ );
+ }
+
+ /**
+ * Helper for initiating a new NumberFormat object.
+ */
+ protected function createNumberFormat(array $definition, $locale = 'en')
+ {
+ $default = array(
+ 'decimal_separator' => '.',
+ 'grouping_separator' => ',',
+ 'plus_sign' => '+',
+ 'minus_sign' => '-',
+ 'percent_sign' => '%'
+ );
+ $format = array_merge($default, $definition);
+
+ $numberFormat = new NumberFormat();
+ $numberFormat->setLocale($locale);
+ $numberFormat->setNumberingSystem($format['numbering_system']);
+ $numberFormat->setDecimalSeparator($format['decimal_separator']);
+ $numberFormat->setGroupingSeparator($format['grouping_separator']);
+ $numberFormat->setPlusSign($format['plus_sign']);
+ $numberFormat->setMinusSign($format['minus_sign']);
+ $numberFormat->setPercentSign($format['percent_sign']);
+ $numberFormat->setDecimalPattern($format['decimal_pattern']);
+ $numberFormat->setPercentPattern($format['percent_pattern']);
+ $numberFormat->setCurrencyPattern($format['currency_pattern']);
+ $numberFormat->setAccountingCurrencyPattern($format['accounting_currency_pattern']);
+
+ return $numberFormat;
+ }
+
+ /**
+ * Helper for initiating a new Currency object.
+ */
+ protected function createCurrency(array $definition, $locale = 'en')
+ {
+ $default = array(
+ 'fraction_digits' => 2
+ );
+ $format = array_merge($default, $definition);
+
+ $currency = new Currency();
+ $currency->setCurrencyCode($format['code']);
+ $currency->setName($format['name']);
+ $currency->setNumericCode($format['numeric_code']);
+ $currency->setFractionDigits($format['fraction_digits']);
+ $currency->setSymbol($format['symbol']);
+ $currency->setLocale($locale);
+
+ return $currency;
+ }
+}
diff --git a/library/intl/tests/Language/LanguageRepositoryTest.php b/library/intl/tests/Language/LanguageRepositoryTest.php
new file mode 100644
index 000000000..ea52cbf4c
--- /dev/null
+++ b/library/intl/tests/Language/LanguageRepositoryTest.php
@@ -0,0 +1,92 @@
+<?php
+
+namespace CommerceGuys\Intl\Tests\Language;
+
+use CommerceGuys\Intl\Language\LanguageRepository;
+use org\bovigo\vfs\vfsStream;
+
+/**
+ * @coversDefaultClass \CommerceGuys\Intl\Language\LanguageRepository
+ */
+class LanguageRepositoryTest extends \PHPUnit_Framework_TestCase
+{
+ /**
+ * English language definitions.
+ *
+ * @var array
+ */
+ protected $englishDefinitions = array(
+ 'en' => array(
+ 'code' => 'en',
+ 'name' => 'English',
+ ),
+ 'fr' => array(
+ 'code' => 'fr',
+ 'name' => 'French',
+ ),
+ );
+
+ /**
+ * @covers ::__construct
+ */
+ public function testConstructor()
+ {
+ // Mock the existence of JSON definitions on the filesystem.
+ $root = vfsStream::setup('resources');
+ vfsStream::newFile('language/en.json')->at($root)->setContent(json_encode($this->englishDefinitions));
+
+ // Instantiate the language repository and confirm that the definition path
+ // was properly set.
+ $languageRepository = new LanguageRepository('vfs://resources/language/');
+ $definitionPath = $this->getObjectAttribute($languageRepository, 'definitionPath');
+ $this->assertEquals('vfs://resources/language/', $definitionPath);
+
+ return $languageRepository;
+ }
+
+ /**
+ * @covers ::get
+ * @covers ::loadDefinitions
+ * @covers ::createLanguageFromDefinition
+ * @uses \CommerceGuys\Intl\Language\Language
+ * @uses \CommerceGuys\Intl\LocaleResolverTrait
+ * @depends testConstructor
+ */
+ public function testGet($languageRepository)
+ {
+ $language = $languageRepository->get('en');
+ $this->assertInstanceOf('CommerceGuys\\Intl\\Language\\Language', $language);
+ $this->assertEquals('en', $language->getLanguageCode());
+ $this->assertEquals('English', $language->getName());
+ $this->assertEquals('en', $language->getLocale());
+ }
+
+ /**
+ * @covers ::get
+ * @covers ::loadDefinitions
+ * @uses \CommerceGuys\Intl\LocaleResolverTrait
+ * @expectedException \CommerceGuys\Intl\Exception\UnknownLanguageException
+ * @depends testConstructor
+ */
+ public function testGetInvalidLanguage($languageRepository)
+ {
+ $languageRepository->get('de');
+ }
+
+ /**
+ * @covers ::getAll
+ * @covers ::loadDefinitions
+ * @covers ::createLanguageFromDefinition
+ * @uses \CommerceGuys\Intl\Language\Language
+ * @uses \CommerceGuys\Intl\LocaleResolverTrait
+ * @depends testConstructor
+ */
+ public function testGetAll($languageRepository)
+ {
+ $languages = $languageRepository->getAll();
+ $this->assertArrayHasKey('en', $languages);
+ $this->assertArrayHasKey('fr', $languages);
+ $this->assertEquals('en', $languages['en']->getLanguageCode());
+ $this->assertEquals('fr', $languages['fr']->getLanguageCode());
+ }
+}
diff --git a/library/intl/tests/Language/LanguageTest.php b/library/intl/tests/Language/LanguageTest.php
new file mode 100644
index 000000000..037483c88
--- /dev/null
+++ b/library/intl/tests/Language/LanguageTest.php
@@ -0,0 +1,53 @@
+<?php
+
+namespace CommerceGuys\Intl\Tests\Language;
+
+use CommerceGuys\Intl\Language\Language;
+
+/**
+ * @coversDefaultClass \CommerceGuys\Intl\Language\Language
+ */
+class LanguageTest extends \PHPUnit_Framework_TestCase
+{
+ /**
+ * @var Language
+ */
+ protected $language;
+
+ public function setUp()
+ {
+ $this->language = new Language();
+ }
+
+ /**
+ * @covers ::getLanguageCode
+ * @covers ::setLanguageCode
+ * @covers ::__toString
+ */
+ public function testLanguageCode()
+ {
+ $this->language->setLanguageCode('en');
+ $this->assertEquals('en', $this->language->getLanguageCode());
+ $this->assertEquals('en', (string) $this->language);
+ }
+
+ /**
+ * @covers ::getName
+ * @covers ::setName
+ */
+ public function testName()
+ {
+ $this->language->setName('English');
+ $this->assertEquals('English', $this->language->getName());
+ }
+
+ /**
+ * @covers ::getLocale
+ * @covers ::setLocale
+ */
+ public function testLocale()
+ {
+ $this->language->setLocale('en');
+ $this->assertEquals('en', $this->language->getLocale());
+ }
+}
diff --git a/library/intl/tests/LocaleResolverTest.php b/library/intl/tests/LocaleResolverTest.php
new file mode 100644
index 000000000..a52dea353
--- /dev/null
+++ b/library/intl/tests/LocaleResolverTest.php
@@ -0,0 +1,51 @@
+<?php
+
+namespace CommerceGuys\Intl\Tests;
+
+use org\bovigo\vfs\vfsStream;
+
+/**
+ * @coversDefaultClass \CommerceGuys\Intl\LocaleResolverTrait
+ */
+class LocaleResolverTest extends \PHPUnit_Framework_TestCase
+{
+ /**
+ * @var DummyRepository
+ */
+ protected $repository;
+
+ public function setUp()
+ {
+ // Simulate the presence of various definitions.
+ $root = vfsStream::setup('resources');
+ vfsStream::newFile('dummy/bs-Cyrl.json')->at($root)->setContent('');
+ vfsStream::newFile('dummy/bs.json')->at($root)->setContent('');
+ vfsStream::newFile('dummy/en.json')->at($root)->setContent('');
+
+ $this->repository = new DummyRepository();
+ }
+
+ /**
+ * @covers ::resolveLocale
+ * @covers ::getLocaleVariants
+ */
+ public function testLocaleFallback()
+ {
+ $locale = $this->repository->runResolveLocale('bs-Cyrl-BA');
+ $this->assertEquals('bs-Cyrl', $locale);
+ $locale = $this->repository->runResolveLocale('bs-Latn-BA');
+ $this->assertEquals('bs', $locale);
+ $locale = $this->repository->runResolveLocale('de', 'en');
+ $this->assertEquals('en', $locale);
+ }
+
+ /**
+ * @covers ::resolveLocale
+ * @covers ::getLocaleVariants
+ * @expectedException \CommerceGuys\Intl\Exception\UnknownLocaleException
+ */
+ public function testInvalidLocale()
+ {
+ $locale = $this->repository->runResolveLocale('de');
+ }
+}
diff --git a/library/intl/tests/NumberFormat/NumberFormatRepositoryTest.php b/library/intl/tests/NumberFormat/NumberFormatRepositoryTest.php
new file mode 100644
index 000000000..41e45805d
--- /dev/null
+++ b/library/intl/tests/NumberFormat/NumberFormatRepositoryTest.php
@@ -0,0 +1,69 @@
+<?php
+
+namespace CommerceGuys\Intl\Tests\NumberFormat;
+
+use CommerceGuys\Intl\NumberFormat\NumberFormatRepository;
+use org\bovigo\vfs\vfsStream;
+
+/**
+ * @coversDefaultClass \CommerceGuys\Intl\NumberFormat\NumberFormatRepository
+ */
+class NumberFormatRepositoryTest extends \PHPUnit_Framework_TestCase
+{
+ /**
+ * English number format definition.
+ *
+ * @var array
+ */
+ protected $englishDefinition = array(
+ 'numbering_system' => 'latn',
+ 'decimal_pattern' => '#,##0.###',
+ 'percent_pattern' => '#,##0%',
+ 'currency_pattern' => '¤#,##0.00',
+ 'accounting_currency_pattern' => '¤#,##0.00;(¤#,##0.00)',
+ );
+
+ /**
+ * @covers ::__construct
+ */
+ public function testConstructor()
+ {
+ // Mock the existence of JSON definitions on the filesystem.
+ $root = vfsStream::setup('resources');
+ vfsStream::newFile('number_format/en.json')->at($root)->setContent(json_encode($this->englishDefinition));
+
+ // Instantiate the number format repository and confirm that the definition
+ // path was properly set.
+ $numberFormatRepository = new NumberFormatRepository('vfs://resources/number_format/');
+ $definitionPath = $this->getObjectAttribute($numberFormatRepository, 'definitionPath');
+ $this->assertEquals('vfs://resources/number_format/', $definitionPath);
+
+ return $numberFormatRepository;
+ }
+
+ /**
+ * @covers ::get
+ * @covers ::createNumberFormatFromDefinition
+ * @uses \CommerceGuys\Intl\NumberFormat\NumberFormat
+ * @uses \CommerceGuys\Intl\LocaleResolverTrait
+ * @depends testConstructor
+ */
+ public function testGet($numberFormatRepository)
+ {
+ $numberFormat = $numberFormatRepository->get('en');
+ $this->assertInstanceOf('CommerceGuys\\Intl\\NumberFormat\\NumberFormat', $numberFormat);
+ $this->assertEquals('en', $numberFormat->getLocale());
+ $this->assertEquals('latn', $numberFormat->getNumberingSystem());
+ $this->assertEquals('.', $numberFormat->getDecimalSeparator());
+ $this->assertEquals(',', $numberFormat->getGroupingSeparator());
+ $this->assertEquals('+', $numberFormat->getPlusSign());
+ $this->assertEquals('-', $numberFormat->getMinusSign());
+ $this->assertEquals('%', $numberFormat->getPercentSign());
+ $this->assertEquals('#,##0.###', $numberFormat->getDecimalPattern());
+ $this->assertEquals('#,##0%', $numberFormat->getPercentPattern());
+ $this->assertEquals('¤#,##0.00', $numberFormat->getCurrencyPattern());
+ $this->assertEquals('¤#,##0.00;(¤#,##0.00)', $numberFormat->getAccountingCurrencyPattern());
+
+ return $numberFormat;
+ }
+}
diff --git a/library/intl/tests/NumberFormat/NumberFormatTest.php b/library/intl/tests/NumberFormat/NumberFormatTest.php
new file mode 100644
index 000000000..299dc41cb
--- /dev/null
+++ b/library/intl/tests/NumberFormat/NumberFormatTest.php
@@ -0,0 +1,131 @@
+<?php
+
+namespace CommerceGuys\Intl\Tests\NumberFormat;
+
+use CommerceGuys\Intl\NumberFormat\NumberFormat;
+
+/**
+ * @coversDefaultClass CommerceGuys\Intl\NumberFormat\NumberFormat
+ */
+class NumberFormatTest extends \PHPUnit_Framework_TestCase
+{
+ /**
+ * @var NumberFormat
+ */
+ protected $numberFormat;
+
+ public function setUp()
+ {
+ $this->numberFormat = new NumberFormat();
+ }
+
+ /**
+ * @covers ::getLocale
+ * @covers ::setLocale
+ */
+ public function testLocale()
+ {
+ $this->numberFormat->setLocale('en');
+ $this->assertEquals('en', $this->numberFormat->getLocale());
+ }
+
+ /**
+ * @covers ::getNumberingSystem
+ * @covers ::setNumberingSystem
+ */
+ public function testNumberingSystem()
+ {
+ $this->numberFormat->setNumberingSystem('latn');
+ $this->assertEquals('latn', $this->numberFormat->getNumberingSystem());
+ }
+
+ /**
+ * @covers ::getDecimalSeparator
+ * @covers ::setDecimalSeparator
+ */
+ public function testDecimalSeparator()
+ {
+ $this->numberFormat->setDecimalSeparator('.');
+ $this->assertEquals('.', $this->numberFormat->getDecimalSeparator());
+ }
+
+ /**
+ * @covers ::getGroupingSeparator
+ * @covers ::setGroupingSeparator
+ */
+ public function testGroupingSeparator()
+ {
+ $this->numberFormat->setGroupingSeparator(',');
+ $this->assertEquals(',', $this->numberFormat->getGroupingSeparator());
+ }
+
+ /**
+ * @covers ::getPlusSign
+ * @covers ::setPlusSign
+ */
+ public function testPlusSign()
+ {
+ $this->numberFormat->setPlusSign('+');
+ $this->assertEquals('+', $this->numberFormat->getPlusSign());
+ }
+
+ /**
+ * @covers ::getMinusSign
+ * @covers ::setMinusSign
+ */
+ public function testMinusSign()
+ {
+ $this->numberFormat->setMinusSign('-');
+ $this->assertEquals('-', $this->numberFormat->getMinusSign());
+ }
+
+ /**
+ * @covers ::getPercentSign
+ * @covers ::setPercentSign
+ */
+ public function testPercentSign()
+ {
+ $this->numberFormat->setPercentSign('%');
+ $this->assertEquals('%', $this->numberFormat->getPercentSign());
+ }
+
+ /**
+ * @covers ::getDecimalPattern
+ * @covers ::setDecimalPattern
+ */
+ public function testDecimalPattern()
+ {
+ $this->numberFormat->setDecimalPattern('#,##0.###');
+ $this->assertEquals('#,##0.###', $this->numberFormat->getDecimalPattern());
+ }
+
+ /**
+ * @covers ::getPercentPattern
+ * @covers ::setPercentPattern
+ */
+ public function testPercentPattern()
+ {
+ $this->numberFormat->setPercentPattern('#,##0%');
+ $this->assertEquals('#,##0%', $this->numberFormat->getPercentPattern());
+ }
+
+ /**
+ * @covers ::getCurrencyPattern
+ * @covers ::setCurrencyPattern
+ */
+ public function testCurrencyPattern()
+ {
+ $this->numberFormat->setCurrencyPattern('¤#,##0.00');
+ $this->assertEquals('¤#,##0.00', $this->numberFormat->getCurrencyPattern());
+ }
+
+ /**
+ * @covers ::getAccountingCurrencyPattern
+ * @covers ::setAccountingCurrencyPattern
+ */
+ public function testAccountingCurrencyPattern()
+ {
+ $this->numberFormat->setAccountingCurrencyPattern('¤#,##0.00;(¤#,##0.00)');
+ $this->assertEquals('¤#,##0.00;(¤#,##0.00)', $this->numberFormat->getAccountingCurrencyPattern());
+ }
+}
diff --git a/library/intl/vendor/autoload.php b/library/intl/vendor/autoload.php
new file mode 100644
index 000000000..a46461eae
--- /dev/null
+++ b/library/intl/vendor/autoload.php
@@ -0,0 +1,7 @@
+<?php
+
+// autoload.php @generated by Composer
+
+require_once __DIR__ . '/composer' . '/autoload_real.php';
+
+return ComposerAutoloaderInitdf7950dd7e2ab03f0683ccb1c2da0307::getLoader();
diff --git a/library/intl/vendor/composer/ClassLoader.php b/library/intl/vendor/composer/ClassLoader.php
new file mode 100644
index 000000000..70d78bc3f
--- /dev/null
+++ b/library/intl/vendor/composer/ClassLoader.php
@@ -0,0 +1,387 @@
+<?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 class loader
+ *
+ * See https://github.com/php-fig/fig-standards/blob/master/accepted/PSR-0.md
+ *
+ * $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>
+ */
+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();
+
+ 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-0 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;
+ }
+
+ /**
+ * 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)
+ {
+ // work around for PHP 5.3.0 - 5.3.2 https://bugs.php.net/50731
+ if ('\\' == $class[0]) {
+ $class = substr($class, 1);
+ }
+
+ // class map lookup
+ if (isset($this->classMap[$class])) {
+ return $this->classMap[$class];
+ }
+
+ $file = $this->findFileWithExtension($class, '.php');
+
+ // Search for Hack files if we are running on HHVM
+ if ($file === null && defined('HHVM_VERSION')) {
+ $file = $this->findFileWithExtension($class, '.hh');
+ }
+
+ if ($file === null) {
+ // Remember that this class does not exist.
+ return $this->classMap[$class] = false;
+ }
+
+ return $file;
+ }
+
+ private function findFileWithExtension($class, $ext)
+ {
+ // PSR-4 lookup
+ $logicalPathPsr4 = strtr($class, '\\', DIRECTORY_SEPARATOR) . $ext;
+
+ $first = $class[0];
+ if (isset($this->prefixLengthsPsr4[$first])) {
+ foreach ($this->prefixLengthsPsr4[$first] as $prefix => $length) {
+ if (0 === strpos($class, $prefix)) {
+ foreach ($this->prefixDirsPsr4[$prefix] as $dir) {
+ if (file_exists($file = $dir . DIRECTORY_SEPARATOR . substr($logicalPathPsr4, $length))) {
+ 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;
+ }
+ }
+}
+
+/**
+ * Scope isolated include.
+ *
+ * Prevents access to $this/self from included files.
+ */
+function includeFile($file)
+{
+ include $file;
+}
diff --git a/library/intl/vendor/composer/autoload_classmap.php b/library/intl/vendor/composer/autoload_classmap.php
new file mode 100644
index 000000000..7a91153b0
--- /dev/null
+++ b/library/intl/vendor/composer/autoload_classmap.php
@@ -0,0 +1,9 @@
+<?php
+
+// autoload_classmap.php @generated by Composer
+
+$vendorDir = dirname(dirname(__FILE__));
+$baseDir = dirname($vendorDir);
+
+return array(
+);
diff --git a/library/intl/vendor/composer/autoload_namespaces.php b/library/intl/vendor/composer/autoload_namespaces.php
new file mode 100644
index 000000000..b7fc0125d
--- /dev/null
+++ b/library/intl/vendor/composer/autoload_namespaces.php
@@ -0,0 +1,9 @@
+<?php
+
+// autoload_namespaces.php @generated by Composer
+
+$vendorDir = dirname(dirname(__FILE__));
+$baseDir = dirname($vendorDir);
+
+return array(
+);
diff --git a/library/intl/vendor/composer/autoload_psr4.php b/library/intl/vendor/composer/autoload_psr4.php
new file mode 100644
index 000000000..a5a08e6c5
--- /dev/null
+++ b/library/intl/vendor/composer/autoload_psr4.php
@@ -0,0 +1,10 @@
+<?php
+
+// autoload_psr4.php @generated by Composer
+
+$vendorDir = dirname(dirname(__FILE__));
+$baseDir = dirname($vendorDir);
+
+return array(
+ 'CommerceGuys\\Intl\\' => array($baseDir . '/src'),
+);
diff --git a/library/intl/vendor/composer/autoload_real.php b/library/intl/vendor/composer/autoload_real.php
new file mode 100644
index 000000000..059a57bb5
--- /dev/null
+++ b/library/intl/vendor/composer/autoload_real.php
@@ -0,0 +1,50 @@
+<?php
+
+// autoload_real.php @generated by Composer
+
+class ComposerAutoloaderInitdf7950dd7e2ab03f0683ccb1c2da0307
+{
+ 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('ComposerAutoloaderInitdf7950dd7e2ab03f0683ccb1c2da0307', 'loadClassLoader'), true, true);
+ self::$loader = $loader = new \Composer\Autoload\ClassLoader();
+ spl_autoload_unregister(array('ComposerAutoloaderInitdf7950dd7e2ab03f0683ccb1c2da0307', 'loadClassLoader'));
+
+ $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;
+ }
+}
+
+function composerRequiredf7950dd7e2ab03f0683ccb1c2da0307($file)
+{
+ require $file;
+}
diff --git a/library/jRange/.gitignore b/library/jRange/.gitignore
new file mode 100644
index 000000000..089ae868a
--- /dev/null
+++ b/library/jRange/.gitignore
@@ -0,0 +1,2 @@
+
+*.codekit
diff --git a/library/jRange/LICENSE b/library/jRange/LICENSE
new file mode 100644
index 000000000..8f47b9a63
--- /dev/null
+++ b/library/jRange/LICENSE
@@ -0,0 +1,21 @@
+The MIT License (MIT)
+
+Copyright (c) 2014 Nitin Hayaran
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE. \ No newline at end of file
diff --git a/library/jRange/README.md b/library/jRange/README.md
new file mode 100644
index 000000000..5cbfe6aa8
--- /dev/null
+++ b/library/jRange/README.md
@@ -0,0 +1,5 @@
+## jQuery plugin to create Range Selector
+
+![jRange Preview](http://i.imgur.com/da8uZwx.png)
+
+[Demo and Documentation](http://nitinhayaran.github.io/jRange/demo/) \ No newline at end of file
diff --git a/library/jRange/demo/index.html b/library/jRange/demo/index.html
new file mode 100644
index 000000000..ac443f11f
--- /dev/null
+++ b/library/jRange/demo/index.html
@@ -0,0 +1,245 @@
+<!DOCTYPE html>
+<html lang="en">
+<head>
+ <meta charset="UTF-8">
+ <title>jRange : jQuery Range Selector</title>
+ <link rel="stylesheet" href="normalize.css">
+ <link rel="stylesheet" href="main.css">
+ <link rel="stylesheet" href="prism/prism.css">
+ <link rel="stylesheet" href="../jquery.range.css">
+ <link href='http://fonts.googleapis.com/css?family=Raleway:100,300' rel='stylesheet' type='text/css'>
+ <script src="//cdnjs.cloudflare.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
+</head>
+<body>
+ <section class="pane header">
+ <div class="header">
+ <h1>jRange</h1>
+ <h2>jQuery Plugin to create Range Selector</h2>
+ </div>
+ <footer>
+ <div class="left">
+ <a href="http://twitter.com/share" class="twitter-share-button" data-url="https://github.com/nitinhayaran/jRange" data-text="jRange - jQuery plugin for Range Selector" data-count="none" data-via="nitinhayaran">Tweet</a>
+ <script>!function(d,s,id){var js,fjs=d.getElementsByTagName(s)[0],p=/^http:/.test(d.location)?'http':'https';if(!d.getElementById(id)){js=d.createElement(s);js.id=id;js.src=p+'://platform.twitter.com/widgets.js';fjs.parentNode.insertBefore(js,fjs);}}(document, 'script', 'twitter-wjs');</script>
+ <iframe src="http://ghbtns.com/github-btn.html?user=nitinhayaran&amp;repo=jRange&amp;type=watch&amp;count=false&amp;size=small"
+ allowtransparency="true" frameborder="0" scrolling="0" width="62" height="20"></iframe>
+ </div>
+ <div class="right">
+ <a href="https://twitter.com/nitinhayaran" class="twitter-follow-button" data-show-count="false">Follow @nitinhayaran</a>
+ <script>!function(d,s,id){var js,fjs=d.getElementsByTagName(s)[0],p=/^http:/.test(d.location)?'http':'https';if(!d.getElementById(id)){js=d.createElement(s);js.id=id;js.src=p+'://platform.twitter.com/widgets.js';fjs.parentNode.insertBefore(js,fjs);}}(document, 'script', 'twitter-wjs');</script>
+ <iframe src="http://ghbtns.com/github-btn.html?user=nitinhayaran&amp;type=follow&amp;count=true" allowtransparency="true" frameborder="0" scrolling="0" width="153" height="20"></iframe>
+ </div>
+ </footer>
+ </section>
+ <section class="body demo">
+ <div class="container">
+ <h2>See it in Action</h2>
+ <h3>Play around with the demo</h3>
+ <div class="demo-container clearfix">
+ <div class="demo-section">
+ <div class="demo-code">
+ <pre><code class="language-javascript">$('.single-slider').jRange({
+ from: 0,
+ to: 100,
+ step: 1,
+ scale: [0,50,100],
+ format: '%s',
+ width: 300,
+ showLabels: true
+});</code></pre>
+ </div>
+ <div class="demo-output">
+ <input class="single-slider" type="hidden" value="25"/>
+ </div>
+ </div>
+ <div class="demo-section">
+ <div class="demo-code">
+ <pre><code class="language-javascript">$('.range-slider').jRange({
+ from: 0,
+ to: 100,
+ step: 1,
+ scale: [0,25,50,75,100],
+ format: '%s',
+ width: 300,
+ showLabels: true,
+ isRange : true
+});</code></pre>
+ </div>
+ <div class="demo-output">
+ <input class="range-slider" type="hidden" value="25,75"/>
+ </div>
+ </div>
+
+
+ </div>
+ <div class="text-container">
+ <h2>How to Use</h2>
+ <h3>Lets see some code</h3>
+ <p>To get started you'll have to include <code>jquery.range.js</code> and <code>jquery.range.css</code> files in your html file.</p>
+ <pre><code class="language-css">&lt;link rel="stylesheet" href="jquery.range.css"&gt;
+&lt;script src="jquery.range.js"&gt;&lt;/script&gt;</code></pre>
+ <p>Later just add an hidden input, where ever you want this slider to be shown.</p>
+ <pre><code class="language-css">&lt;input type="hidden" class="slider-input" value="23" /&gt;</code></pre>
+ <p>After this you'll have to intialize this plugin for that input, as shown in the example above</p>
+
+ <h2>Options</h2>
+ <h3>See configuration options</h3>
+ <p>Options can also be set programatically, by passing an options hash to the jRange method.
+ <table class="plugin-options" width='900'>
+ <tr>
+ <th>Option</th>
+ <th width="200">Override</th>
+ <th>Type</th>
+ <th>Details</th>
+ </tr>
+ <tr>
+ <td>from</td>
+ <td>Mandatory</td>
+ <td>Integer</td>
+ <td>Lower bound of slider</td>
+ </tr>
+ <tr>
+ <td>to</td>
+ <td>Mandatory</td>
+ <td>Integer</td>
+ <td>Upper bound of slider</td>
+ </tr>
+ <tr>
+ <td>step</td>
+ <td>Optional</td>
+ <td>Integer</td>
+ <td>
+ <code>Default : 1</code>
+ <p>amount of increment on each step</p>
+ </td>
+ </tr>
+ <tr>
+ <td>scale</td>
+ <td>Optional</td>
+ <td>Array</td>
+ <td>
+ <p>Array containing label which are shown below the slider. By default its [from, to].</p>
+ </td>
+ </tr>
+ <tr>
+ <td>showLabels</td>
+ <td>Optional</td>
+ <td>Boolean</td>
+ <td>
+ <p>False, if you'd like to hide label which are shown on top of slider.</p>
+ <code>Default : true</code>
+ </td>
+ </tr>
+ <tr>
+ <td>showScale</td>
+ <td>Optional</td>
+ <td>Boolean</td>
+ <td>
+ <p>False, if you'd like to hide scale which are shown below the slider.</p>
+ <code>Default : true</code>
+ </td>
+ </tr>
+ <tr>
+ <td>format</td>
+ <td>Optional</td>
+ <td>String / Function</td>
+ <td>
+ <p>this is used to show label on the pointer</p>
+ <code>Default : "%s"</code>
+ <p><code>String</code> : %s is replaced by its value, e.g., "%s days", "%s goats"</p>
+ <p>
+ <code>Function</code> : format(value, pointer)
+ <br>
+ <code>return</code> : string label for a given value and pointer. <br>
+ <code>pointer</code> could be 'low'/'high' if <code>isRange</code> is true, else undefined
+ </p>
+ </td>
+ </tr>
+ <tr>
+ <td>width</td>
+ <td>Optional</td>
+ <td>Integer</td>
+ <td>
+ <code>Default : 300</code>
+ </td>
+ </tr>
+ <tr>
+ <td>theme</td>
+ <td>Optional</td>
+ <td>String</td>
+ <td>
+ <code>Default : "theme-green"</code>
+ <p>This is the css class name added to the container. Available themes are "theme-blue", "theme-green". You can also add more themes, just like in <code>jquery.range.less</code></p>
+ </td>
+ </tr>
+ <tr>
+ <td>isRange</td>
+ <td>Optional</td>
+ <td>Boolean</td>
+ <td>
+ <code>Default : false</code>
+ <p>True if this is a range selector. If its a range the value of hidden input will be set comma-seperated, e.g., "25,75"</p>
+ </td>
+ </tr>
+ <tr>
+ <td>onstatechange</td>
+ <td>Optional</td>
+ <td>Function</td>
+ <td>
+ <p>This function is called whenever the value is changed by user. This same value is also automatically set for the provided Hidden Input.</p>
+ <p>For single slider value is without comma, however for a range selector value is comma-seperated.</p>
+ </td>
+ </tr>
+ </table>
+
+ <div class="footer">
+ <a href="https://github.com/nitinhayaran/jRange" class="large-github">Get it from Github</a>
+ </div>
+ </div>
+ </div>
+ </section>
+ <section class="footer">
+ <div class="text-container clearfix">
+ <div class="left">
+ <p>
+ <a href="https://twitter.com/nitinhayaran" class="twitter-follow-button" data-show-count="false">Follow @nitinhayaran</a>
+ <script>!function(d,s,id){var js,fjs=d.getElementsByTagName(s)[0],p=/^http:/.test(d.location)?'http':'https';if(!d.getElementById(id)){js=d.createElement(s);js.id=id;js.src=p+'://platform.twitter.com/widgets.js';fjs.parentNode.insertBefore(js,fjs);}}(document, 'script', 'twitter-wjs');</script>
+ </p>
+ <p><iframe src="http://ghbtns.com/github-btn.html?user=nitinhayaran&amp;type=follow&amp;count=true" allowtransparency="true" frameborder="0" scrolling="0" width="153" height="20"></iframe></p>
+ </div>
+ <div class="right">
+ <p><a href="https://github.com/nitinhayaran/jRange">jRange</a> is authored and maintained by <a href="https://github.com/nitinhayaran/">@nitinhayaran</a></p>
+ <p>
+ Released under the <a href="http://www.opensource.org/licenses/mit-license.php">MIT
+ License</a>
+ </p>
+ </div>
+ </div>
+ </section>
+ <script src="prism/prism.js"></script>
+
+ <script src="../jquery.range.js"></script>
+ <script type="text/javascript">
+ $(document).ready(function(){
+ $('.single-slider').jRange({
+ from: 0,
+ to: 100,
+ step: 1,
+ scale: [0,25,50,75,100],
+ format: '%s',
+ width: 300,
+ showLabels: true
+ });
+ $('.range-slider').jRange({
+ from: 0,
+ to: 100,
+ step: 1,
+ scale: [0,25,50,75,100],
+ format: '%s',
+ width: 300,
+ showLabels: true,
+ isRange : true
+ });
+ });
+ </script>
+</body>
+</html> \ No newline at end of file
diff --git a/library/jRange/demo/main.css b/library/jRange/demo/main.css
new file mode 100644
index 000000000..1e29a98af
--- /dev/null
+++ b/library/jRange/demo/main.css
@@ -0,0 +1,289 @@
+html,
+body {
+ height: 100%;
+ width: 100%;
+}
+body {
+ font-family: Helvetica Neue, Helvetica, Arial sans-serif;
+ font-size: 16px;
+ line-height: 1.6;
+ color: #434343;
+}
+a {
+ text-decoration: none;
+}
+pre code {
+ line-height: 1.5;
+}
+.container {
+ width: 1130px;
+ padding: 0 20px;
+ margin: 0px auto;
+}
+.text-container {
+ width: 900px;
+ position: relative;
+ margin: 0px auto;
+}
+.clearfix:after {
+ content: " ";
+ /* Older browser do not support empty content */
+ visibility: hidden;
+ display: block;
+ height: 0;
+ clear: both;
+}
+.pane {
+ position: relative;
+ width: 100%;
+ height: 50%;
+ min-height: 450px;
+}
+.body {
+ position: relative;
+}
+section.header {
+ background-color: #606c88;
+ background: -webkit-linear-gradient(90deg, #606c88 10%, #3f4c6b 90%);
+ /* Chrome 10+, Saf5.1+ */
+ background: -moz-linear-gradient(90deg, #606c88 10%, #3f4c6b 90%);
+ /* FF3.6+ */
+ background: -ms-linear-gradient(90deg, #606c88 10%, #3f4c6b 90%);
+ /* IE10 */
+ background: -o-linear-gradient(90deg, #606c88 10%, #3f4c6b 90%);
+ /* Opera 11.10+ */
+ background: linear-gradient(90deg, #606c88 10%, #3f4c6b 90%);
+ /* W3C */
+}
+section.header footer {
+ position: absolute;
+ width: 100%;
+ bottom: 0;
+ padding: 10px 30px;
+ box-sizing: border-box;
+}
+.left {
+ float: left;
+ text-align: left;
+}
+.right {
+ float: right;
+ text-align: right;
+}
+div.header {
+ color: #fff;
+ width: 600px;
+ text-align: center;
+ position: absolute;
+ top: 40%;
+ left: 50%;
+ transform: translate(-50%, -50%);
+ border-radius: 5px;
+}
+div.header h1,
+div.header h2 {
+ font-family: 'Raleway' sans-serif;
+ font-weight: 100;
+ line-height: 1;
+ margin: 0;
+}
+div.header h1 {
+ font-size: 72px;
+ margin-bottom: 25px;
+}
+section.demo h2,
+section.demo h3 {
+ font-family: 'Raleway' sans-serif;
+ font-weight: 300;
+ line-height: 1;
+ margin: 0;
+ text-align: center;
+}
+section.demo h2 {
+ font-size: 48px;
+ margin-top: 1em;
+}
+section.demo h3 {
+ font-size: 28px;
+ margin: 0.8em 0 1em;
+}
+section.demo .demo-container {
+ margin: 40px 0 80px;
+}
+section.demo .demo-section {
+ margin: 20px 0;
+ clear: both;
+}
+section.demo .demo-section .demo-code {
+ width: 50%;
+ float: left;
+}
+section.demo .demo-section .demo-output {
+ margin-left: 50%;
+ padding: 50px 0;
+}
+section.demo .demo-section .slider-container {
+ margin: 0 auto;
+}
+section.demo .text-container h2 {
+ margin-top: 3em;
+}
+section.demo .form-vertical {
+ width: 200px;
+ float: left;
+}
+section.demo .image-container {
+ margin-left: 200px;
+ padding: 1px;
+ border: 1px solid #eee;
+}
+section.demo .form-group {
+ margin-bottom: 20px;
+}
+section.demo label {
+ color: #999;
+ font-size: 13px;
+ display: block;
+}
+section.demo input {
+ width: 150px;
+ margin-top: 3px;
+ border: 1px solid #999;
+ border-width: 0 0 1px 0;
+ padding: 3px 0 3px;
+ transition: 0.3s all;
+}
+section.demo input:focus,
+section.demo input:active {
+ outline: none;
+ border-color: #2fc7ff;
+ box-shadow: 0 1px 3px -3px #2fc7ff;
+ color: #000;
+}
+section.demo button {
+ position: relative;
+ overflow: visible;
+ display: inline-block;
+ padding: 0.3em 1em;
+ border: 1px solid #d4d4d4;
+ margin: 0;
+ text-decoration: none;
+ text-align: center;
+ text-shadow: 1px 1px 0 #fff;
+ font-size: 12px;
+ color: #333;
+ white-space: nowrap;
+ cursor: pointer;
+ outline: none;
+ background-color: #ececec;
+ background-image: linear-gradient(#f4f4f4, #ececec);
+ background-clip: padding-box;
+ border-radius: 0.2em;
+ zoom: 1;
+ transition: background-image 0.3s;
+}
+section.demo button:hover,
+section.demo button:active {
+ border-color: #3072b3;
+ border-bottom-color: #2a65a0;
+ text-decoration: none;
+ text-shadow: -1px -1px 0 rgba(0, 0, 0, 0.3);
+ color: #fff;
+ background-color: #3c8dde;
+ background-image: linear-gradient(#599bdc, #3072b3);
+}
+section.demo p {
+ font-family: 'Raleway' sans-serif;
+ margin: 1em auto;
+}
+section.demo .footer {
+ margin-top: 80px;
+ text-align: center;
+}
+section.demo .large-github {
+ display: inline-block;
+ border: 1px solid #21b0ff;
+ font-weight: 400;
+ font-family: 'Raleway' sans-serif;
+ text-shadow: none;
+ background-color: #fff;
+ background-image: none;
+ padding: 8px 25px;
+ color: #21b0ff;
+ font-size: 18px;
+ border-radius: 25px;
+}
+section.demo .large-github:hover,
+section.demo .large-github:active {
+ background-color: #21b0ff;
+ color: #fff;
+ background-image: none;
+ text-shadow: none;
+}
+.two-coloumn em {
+ font-weight: normal;
+ text-decoration: none;
+ font-style: normal;
+ display: inline-block;
+ width: 85px;
+}
+.plugin-options {
+ font-size: 14px;
+ margin-bottom: 40px;
+ width: 900px;
+ font-weight: 200;
+}
+.plugin-options td,
+.plugin-options th {
+ padding: 8px ;
+ text-align: left;
+ vertical-align: top;
+}
+.plugin-options td:first-child,
+.plugin-options th:first-child {
+ font-weight: bold;
+}
+.plugin-options td:nth-child(2),
+.plugin-options td:nth-child(3) {
+ font-size: 13px;
+ color: #999;
+}
+.plugin-options td p {
+ font-family: Helvetica Neue, Helvetica, Arial, sans-serif;
+ margin: 4px 0;
+}
+.plugin-options td p:first-child {
+ margin-top: 0;
+}
+.plugin-options th {
+ background-color: #358ccb;
+ color: #fff;
+}
+.plugin-options tr:nth-child(2n + 1) td {
+ background-color: #f5f5f5;
+}
+.plugin-options small {
+ display: block;
+}
+.plugin-options ul {
+ list-style: none;
+ padding: 0;
+}
+.plugin-options ul ul {
+ list-style: circle inside;
+}
+section.footer {
+ margin-top: 80px;
+ padding: 30px;
+ text-align: center;
+ background-color: #333;
+ color: #999;
+ font-weight: 300;
+ font-size: 13px;
+}
+section.footer p {
+ margin: 5px 0;
+}
+section.footer a {
+ color: #fff;
+}
diff --git a/library/jRange/demo/main.less b/library/jRange/demo/main.less
new file mode 100644
index 000000000..e9ee232a1
--- /dev/null
+++ b/library/jRange/demo/main.less
@@ -0,0 +1,296 @@
+@font-family: 'Raleway' sans-serif;
+html, body{
+ height: 100%;
+ width: 100%;
+}
+body{
+ font-family: Helvetica Neue, Helvetica, Arial sans-serif;
+ font-size: 16px;
+ line-height: 1.6;
+ color: #434343;
+}
+a{
+ text-decoration: none;
+}
+pre code{
+ line-height: 1.5;
+}
+.container{
+ width: 1130px;
+ padding: 0 20px;
+ margin: 0px auto;
+}
+.text-container{
+ width: 900px;
+ position: relative;
+ margin: 0px auto;
+}
+.clearfix:after {
+ content: " "; /* Older browser do not support empty content */
+ visibility: hidden;
+ display: block;
+ height: 0;
+ clear: both;
+}
+.pane{
+ position: relative;
+ width: 100%;
+ height: 50%;
+ min-height: 450px;
+}
+.body{
+ position: relative;
+}
+section.header{
+ background-color: #606c88;
+
+ background: -webkit-linear-gradient(90deg, #606c88 10%, #3f4c6b 90%); /* Chrome 10+, Saf5.1+ */
+ background: -moz-linear-gradient(90deg, #606c88 10%, #3f4c6b 90%); /* FF3.6+ */
+ background: -ms-linear-gradient(90deg, #606c88 10%, #3f4c6b 90%); /* IE10 */
+ background: -o-linear-gradient(90deg, #606c88 10%, #3f4c6b 90%); /* Opera 11.10+ */
+ background: linear-gradient(90deg, #606c88 10%, #3f4c6b 90%); /* W3C */
+
+ // background-image: radial-gradient(50% 102%, #3cb3db 48%, #2e6c9a 100%);
+ footer{
+ position: absolute;
+ width: 100%;
+ bottom: 0;
+ padding: 10px 30px;
+ box-sizing: border-box;
+ }
+}
+.left{
+ float: left;
+ text-align: left;
+}
+.right{
+ float: right;
+ text-align: right;
+}
+div.header{
+ color: #fff;
+ width: 600px;
+ text-align: center;
+ position: absolute;
+ top: 40%;
+ left: 50%;
+ transform: translate(-50%, -50%);
+ // background-color: #333;
+ border-radius: 5px;
+ h1, h2{
+ font-family: @font-family;
+ font-weight: 100;
+ line-height: 1;
+ margin: 0;
+ }
+ h1{
+ font-size: 72px;
+ margin-bottom: 25px;
+ }
+}
+section.demo{
+ h2, h3{
+ font-family: @font-family;
+ font-weight: 300;
+ line-height: 1;
+ margin: 0;
+ text-align: center;
+ }
+ h2{
+ font-size: 48px;
+ margin-top: 1em;
+ }
+ h3{
+ font-size: 28px;
+ margin: 0.8em 0 1em;
+ }
+ .demo-container{
+ margin: 40px 0 80px;
+ }
+ .demo-section{
+ margin: 20px 0;
+ clear: both;
+ .demo-code{
+ width: 50%;
+ float: left;
+ }
+ .demo-output{
+ margin-left: 50%;
+ padding: 50px 0;
+ }
+ .slider-container{
+ margin: 0 auto;
+ }
+ }
+ .text-container{
+ h2{
+ margin-top: 3em;
+ }
+ }
+ .form-vertical{
+ width: 200px;
+ float: left;
+ }
+ .image-container{
+ margin-left: 200px;
+ padding: 1px;
+ border: 1px solid #eee;
+ // background-color: #333;
+ }
+ .form-group{
+ margin-bottom: 20px;
+ }
+ label{
+ color: #999;
+ font-size: 13px;
+ display: block;
+ }
+ input{
+ width: 150px;
+ margin-top: 3px;
+ // border-radius: 2px;
+ border: 1px solid #999;
+ border-width: 0 0 1px 0;
+ padding: 3px 0 3px;
+ transition: 0.3s all;
+ // color: #999;
+ &:focus, &:active{
+ outline: none;
+ border-color: #2fc7ff;
+ box-shadow: 0 1px 3px -3px #2fc7ff;
+ color: #000;
+ }
+ }
+ button{
+ position: relative;
+ overflow: visible;
+ display: inline-block;
+ padding: 0.3em 1em;
+ border: 1px solid #d4d4d4;
+ margin: 0;
+ text-decoration: none;
+ text-align: center;
+ text-shadow: 1px 1px 0 #fff;
+ font-size: 12px;
+ color: #333;
+ white-space: nowrap;
+ cursor: pointer;
+ outline: none;
+ background-color: #ececec;
+ background-image: linear-gradient(#f4f4f4, #ececec);
+ background-clip: padding-box;
+ border-radius: 0.2em;
+ zoom: 1;
+ transition: background-image 0.3s;
+ &:hover, &:active{
+ border-color: #3072b3;
+ border-bottom-color: #2a65a0;
+ text-decoration: none;
+ text-shadow: -1px -1px 0 rgba(0,0,0,0.3);
+ color: #fff;
+ background-color: #3c8dde;
+ background-image: linear-gradient(#599bdc, #3072b3);
+ }
+ }
+ p{
+ font-family: @font-family;
+ margin: 1em auto;
+ }
+ .footer{
+ margin-top: 80px;
+ text-align: center;
+ }
+ .large-github{
+ display: inline-block;
+ border: 1px solid #21b0ff;
+ font-weight: 400;
+ font-family: @font-family;
+ text-shadow: none;
+ background-color: #fff;
+ background-image: none;
+ padding: 8px 25px;
+ color: #21b0ff;
+ font-size: 18px;
+ border-radius: 25px;
+ &:hover, &:active{
+ background-color: #21b0ff;
+ color: #fff;
+ background-image: none;
+ text-shadow: none;
+ }
+ }
+}
+.two-coloumn{
+ em{
+ font-weight: normal;
+ text-decoration: none;
+ font-style: normal;
+ display: inline-block;
+ width: 85px;
+ }
+}
+.plugin-options{
+ font-size: 14px;
+ margin-bottom: 40px;
+ width: 900px;
+ font-weight: 200;
+ td, th{
+ padding: 8px ;
+ text-align: left;
+ vertical-align: top;
+ &:first-child{
+ font-weight: bold;
+ }
+ }
+ td{
+ &:nth-child(2), &:nth-child(3){
+ font-size: 13px;
+ color: #999;
+ }
+ p{
+ font-family: Helvetica Neue, Helvetica, Arial, sans-serif;
+ margin: 4px 0;
+ &:first-child{
+ margin-top: 0;
+ }
+ }
+ }
+ th{
+ background-color: #358ccb;
+ color: #fff;
+ }
+ tr{
+ &:nth-child(2n + 1){
+ td{
+ background-color: #f5f5f5;
+ }
+ }
+ }
+ small{
+ display: block;
+ // white-space: nowrap;
+ }
+ ul{
+ list-style: none;
+ padding: 0;
+ ul{
+ list-style: circle inside;
+ // padding-left: 25px;
+ }
+ }
+}
+section.footer{
+ margin-top: 80px;
+ padding: 30px;
+ text-align: center;
+ background-color: #333;
+ color: #999;
+ font-weight: 300;
+ font-size: 13px;
+ p{
+ margin: 5px 0;
+ }
+ a{
+ color: #fff;
+ }
+} \ No newline at end of file
diff --git a/library/jRange/demo/normalize.css b/library/jRange/demo/normalize.css
new file mode 100644
index 000000000..08f895079
--- /dev/null
+++ b/library/jRange/demo/normalize.css
@@ -0,0 +1,425 @@
+/*! normalize.css v3.0.1 | MIT License | git.io/normalize */
+
+/**
+ * 1. Set default font family to sans-serif.
+ * 2. Prevent iOS text size adjust after orientation change, without disabling
+ * user zoom.
+ */
+
+html {
+ font-family: sans-serif; /* 1 */
+ -ms-text-size-adjust: 100%; /* 2 */
+ -webkit-text-size-adjust: 100%; /* 2 */
+}
+
+/**
+ * Remove default margin.
+ */
+
+body {
+ margin: 0;
+}
+
+/* HTML5 display definitions
+ ========================================================================== */
+
+/**
+ * Correct `block` display not defined for any HTML5 element in IE 8/9.
+ * Correct `block` display not defined for `details` or `summary` in IE 10/11 and Firefox.
+ * Correct `block` display not defined for `main` in IE 11.
+ */
+
+article,
+aside,
+details,
+figcaption,
+figure,
+footer,
+header,
+hgroup,
+main,
+nav,
+section,
+summary {
+ display: block;
+}
+
+/**
+ * 1. Correct `inline-block` display not defined in IE 8/9.
+ * 2. Normalize vertical alignment of `progress` in Chrome, Firefox, and Opera.
+ */
+
+audio,
+canvas,
+progress,
+video {
+ display: inline-block; /* 1 */
+ vertical-align: baseline; /* 2 */
+}
+
+/**
+ * Prevent modern browsers from displaying `audio` without controls.
+ * Remove excess height in iOS 5 devices.
+ */
+
+audio:not([controls]) {
+ display: none;
+ height: 0;
+}
+
+/**
+ * Address `[hidden]` styling not present in IE 8/9/10.
+ * Hide the `template` element in IE 8/9/11, Safari, and Firefox < 22.
+ */
+
+[hidden],
+template {
+ display: none;
+}
+
+/* Links
+ ========================================================================== */
+
+/**
+ * Remove the gray background color from active links in IE 10.
+ */
+
+a {
+ background: transparent;
+}
+
+/**
+ * Improve readability when focused and also mouse hovered in all browsers.
+ */
+
+a:active,
+a:hover {
+ outline: 0;
+}
+
+/* Text-level semantics
+ ========================================================================== */
+
+/**
+ * Address styling not present in IE 8/9/10/11, Safari, and Chrome.
+ */
+
+abbr[title] {
+ border-bottom: 1px dotted;
+}
+
+/**
+ * Address style set to `bolder` in Firefox 4+, Safari, and Chrome.
+ */
+
+b,
+strong {
+ font-weight: bold;
+}
+
+/**
+ * Address styling not present in Safari and Chrome.
+ */
+
+dfn {
+ font-style: italic;
+}
+
+/**
+ * Address variable `h1` font-size and margin within `section` and `article`
+ * contexts in Firefox 4+, Safari, and Chrome.
+ */
+
+h1 {
+ font-size: 2em;
+ margin: 0.67em 0;
+}
+
+/**
+ * Address styling not present in IE 8/9.
+ */
+
+mark {
+ background: #ff0;
+ color: #000;
+}
+
+/**
+ * Address inconsistent and variable font size in all browsers.
+ */
+
+small {
+ font-size: 80%;
+}
+
+/**
+ * Prevent `sub` and `sup` affecting `line-height` in all browsers.
+ */
+
+sub,
+sup {
+ font-size: 75%;
+ line-height: 0;
+ position: relative;
+ vertical-align: baseline;
+}
+
+sup {
+ top: -0.5em;
+}
+
+sub {
+ bottom: -0.25em;
+}
+
+/* Embedded content
+ ========================================================================== */
+
+/**
+ * Remove border when inside `a` element in IE 8/9/10.
+ */
+
+img {
+ border: 0;
+}
+
+/**
+ * Correct overflow not hidden in IE 9/10/11.
+ */
+
+svg:not(:root) {
+ overflow: hidden;
+}
+
+/* Grouping content
+ ========================================================================== */
+
+/**
+ * Address margin not present in IE 8/9 and Safari.
+ */
+
+figure {
+ margin: 1em 40px;
+}
+
+/**
+ * Address differences between Firefox and other browsers.
+ */
+
+hr {
+ -moz-box-sizing: content-box;
+ box-sizing: content-box;
+ height: 0;
+}
+
+/**
+ * Contain overflow in all browsers.
+ */
+
+pre {
+ overflow: auto;
+}
+
+/**
+ * Address odd `em`-unit font size rendering in all browsers.
+ */
+
+code,
+kbd,
+pre,
+samp {
+ font-family: monospace, monospace;
+ font-size: 1em;
+}
+
+/* Forms
+ ========================================================================== */
+
+/**
+ * Known limitation: by default, Chrome and Safari on OS X allow very limited
+ * styling of `select`, unless a `border` property is set.
+ */
+
+/**
+ * 1. Correct color not being inherited.
+ * Known issue: affects color of disabled elements.
+ * 2. Correct font properties not being inherited.
+ * 3. Address margins set differently in Firefox 4+, Safari, and Chrome.
+ */
+
+button,
+input,
+optgroup,
+select,
+textarea {
+ color: inherit; /* 1 */
+ font: inherit; /* 2 */
+ margin: 0; /* 3 */
+}
+
+/**
+ * Address `overflow` set to `hidden` in IE 8/9/10/11.
+ */
+
+button {
+ overflow: visible;
+}
+
+/**
+ * Address inconsistent `text-transform` inheritance for `button` and `select`.
+ * All other form control elements do not inherit `text-transform` values.
+ * Correct `button` style inheritance in Firefox, IE 8/9/10/11, and Opera.
+ * Correct `select` style inheritance in Firefox.
+ */
+
+button,
+select {
+ text-transform: none;
+}
+
+/**
+ * 1. Avoid the WebKit bug in Android 4.0.* where (2) destroys native `audio`
+ * and `video` controls.
+ * 2. Correct inability to style clickable `input` types in iOS.
+ * 3. Improve usability and consistency of cursor style between image-type
+ * `input` and others.
+ */
+
+button,
+html input[type="button"], /* 1 */
+input[type="reset"],
+input[type="submit"] {
+ -webkit-appearance: button; /* 2 */
+ cursor: pointer; /* 3 */
+}
+
+/**
+ * Re-set default cursor for disabled elements.
+ */
+
+button[disabled],
+html input[disabled] {
+ cursor: default;
+}
+
+/**
+ * Remove inner padding and border in Firefox 4+.
+ */
+
+button::-moz-focus-inner,
+input::-moz-focus-inner {
+ border: 0;
+ padding: 0;
+}
+
+/**
+ * Address Firefox 4+ setting `line-height` on `input` using `!important` in
+ * the UA stylesheet.
+ */
+
+input {
+ line-height: normal;
+}
+
+/**
+ * It's recommended that you don't attempt to style these elements.
+ * Firefox's implementation doesn't respect box-sizing, padding, or width.
+ *
+ * 1. Address box sizing set to `content-box` in IE 8/9/10.
+ * 2. Remove excess padding in IE 8/9/10.
+ */
+
+input[type="checkbox"],
+input[type="radio"] {
+ box-sizing: border-box; /* 1 */
+ padding: 0; /* 2 */
+}
+
+/**
+ * Fix the cursor style for Chrome's increment/decrement buttons. For certain
+ * `font-size` values of the `input`, it causes the cursor style of the
+ * decrement button to change from `default` to `text`.
+ */
+
+input[type="number"]::-webkit-inner-spin-button,
+input[type="number"]::-webkit-outer-spin-button {
+ height: auto;
+}
+
+/**
+ * 1. Address `appearance` set to `searchfield` in Safari and Chrome.
+ * 2. Address `box-sizing` set to `border-box` in Safari and Chrome
+ * (include `-moz` to future-proof).
+ */
+
+input[type="search"] {
+ -webkit-appearance: textfield; /* 1 */
+ -moz-box-sizing: content-box;
+ -webkit-box-sizing: content-box; /* 2 */
+ box-sizing: content-box;
+}
+
+/**
+ * Remove inner padding and search cancel button in Safari and Chrome on OS X.
+ * Safari (but not Chrome) clips the cancel button when the search input has
+ * padding (and `textfield` appearance).
+ */
+
+input[type="search"]::-webkit-search-cancel-button,
+input[type="search"]::-webkit-search-decoration {
+ -webkit-appearance: none;
+}
+
+/**
+ * Define consistent border, margin, and padding.
+ */
+
+fieldset {
+ border: 1px solid #c0c0c0;
+ margin: 0 2px;
+ padding: 0.35em 0.625em 0.75em;
+}
+
+/**
+ * 1. Correct `color` not being inherited in IE 8/9/10/11.
+ * 2. Remove padding so people aren't caught out if they zero out fieldsets.
+ */
+
+legend {
+ border: 0; /* 1 */
+ padding: 0; /* 2 */
+}
+
+/**
+ * Remove default vertical scrollbar in IE 8/9/10/11.
+ */
+
+textarea {
+ overflow: auto;
+}
+
+/**
+ * Don't inherit the `font-weight` (applied by a rule above).
+ * NOTE: the default cannot safely be changed in Chrome and Safari on OS X.
+ */
+
+optgroup {
+ font-weight: bold;
+}
+
+/* Tables
+ ========================================================================== */
+
+/**
+ * Remove most spacing between table cells.
+ */
+
+table {
+ border-collapse: collapse;
+ border-spacing: 0;
+}
+
+td,
+th {
+ padding: 0;
+}
diff --git a/library/jRange/demo/prism/prism.css b/library/jRange/demo/prism/prism.css
new file mode 100644
index 000000000..afc94b354
--- /dev/null
+++ b/library/jRange/demo/prism/prism.css
@@ -0,0 +1,193 @@
+/* http://prismjs.com/download.html?themes=prism-coy&languages=markup+css+css-extras+clike+javascript */
+/**
+ * prism.js Coy theme for JavaScript, CoffeeScript, CSS and HTML
+ * Based on https://github.com/tshedor/workshop-wp-theme (Example: http://workshop.kansan.com/category/sessions/basics or http://workshop.timshedor.com/category/sessions/basics);
+ * @author Tim Shedor
+ */
+
+code[class*="language-"],
+pre[class*="language-"] {
+ color: black;
+ font-family: Consolas, Monaco, 'Andale Mono', monospace;
+ direction: ltr;
+ text-align: left;
+ white-space: pre;
+ word-spacing: normal;
+ word-break: normal;
+
+ -moz-tab-size: 4;
+ -o-tab-size: 4;
+ tab-size: 4;
+
+ -webkit-hyphens: none;
+ -moz-hyphens: none;
+ -ms-hyphens: none;
+ hyphens: none;
+}
+
+/* Code blocks */
+pre[class*="language-"] {
+ position:relative;
+ padding: 1em;
+ margin: .5em 0;
+ -webkit-box-shadow: -1px 0px 0px 0px #358ccb, 0px 0px 0px 1px #dfdfdf;
+ -moz-box-shadow: -1px 0px 0px 0px #358ccb, 0px 0px 0px 1px #dfdfdf;
+ box-shadow: -1px 0px 0px 0px #358ccb, 0px 0px 0px 1px #dfdfdf;
+ border-left: 10px solid #358ccb;
+ background-color: #fdfdfd;
+ background-image: -webkit-linear-gradient(transparent 50%, rgba(69, 142, 209, 0.04) 50%);
+ background-image: -moz-linear-gradient(transparent 50%, rgba(69, 142, 209, 0.04) 50%);
+ background-image: -ms-linear-gradient(transparent 50%, rgba(69, 142, 209, 0.04) 50%);
+ background-image: -o-linear-gradient(transparent 50%, rgba(69, 142, 209, 0.04) 50%);
+ background-image: linear-gradient(transparent 50%, rgba(69, 142, 209, 0.04) 50%);
+ background-size: 3em 3em;
+ background-origin:content-box;
+ overflow:visible;
+ max-height:30em;
+}
+
+code[class*="language"] {
+ max-height:29em;
+ display:block;
+ overflow:scroll;
+}
+
+/* Margin bottom to accomodate shadow */
+:not(pre) > code[class*="language-"],
+pre[class*="language-"] {
+ background-color:#fdfdfd;
+ -webkit-box-sizing: border-box;
+ -moz-box-sizing: border-box;
+ box-sizing: border-box;
+ margin-bottom: 1em;
+}
+
+/* Inline code */
+:not(pre) > code[class*="language-"] {
+ position:relative;
+ padding: .2em;
+ -webkit-border-radius: 0.3em;
+ -moz-border-radius: 0.3em;
+ -ms-border-radius: 0.3em;
+ -o-border-radius: 0.3em;
+ border-radius: 0.3em;
+ color: #c92c2c;
+ border: 1px solid rgba(0, 0, 0, 0.1);
+}
+
+pre[class*="language-"]:before,
+pre[class*="language-"]:after {
+ content: '';
+ z-index: -2;
+ display:block;
+ position: absolute;
+ bottom: 0.75em;
+ left: 0.18em;
+ width: 40%;
+ height: 20%;
+ -webkit-box-shadow: 0px 13px 8px #979797;
+ -moz-box-shadow: 0px 13px 8px #979797;
+ box-shadow: 0px 13px 8px #979797;
+ -webkit-transform: rotate(-2deg);
+ -moz-transform: rotate(-2deg);
+ -ms-transform: rotate(-2deg);
+ -o-transform: rotate(-2deg);
+ transform: rotate(-2deg);
+}
+
+:not(pre) > code[class*="language-"]:after,
+pre[class*="language-"]:after {
+ right: 0.75em;
+ left: auto;
+ -webkit-transform: rotate(2deg);
+ -moz-transform: rotate(2deg);
+ -ms-transform: rotate(2deg);
+ -o-transform: rotate(2deg);
+ transform: rotate(2deg);
+}
+
+.token.comment,
+.token.block-comment,
+.token.prolog,
+.token.doctype,
+.token.cdata {
+ color: #7D8B99;
+}
+
+.token.punctuation {
+ color: #5F6364;
+}
+
+.token.property,
+.token.tag,
+.token.boolean,
+.token.number,
+.token.function-name,
+.token.constant,
+.token.symbol {
+ color: #c92c2c;
+}
+
+.token.selector,
+.token.attr-name,
+.token.string,
+.token.function,
+.token.builtin {
+ color: #2f9c0a;
+}
+
+.token.operator,
+.token.entity,
+.token.url,
+.token.variable {
+ color: #a67f59;
+ background: rgba(255, 255, 255, 0.5);
+}
+
+.token.atrule,
+.token.attr-value,
+.token.keyword,
+.token.class-name {
+ color: #1990b8;
+}
+
+.token.regex,
+.token.important {
+ color: #e90;
+}
+.language-css .token.string,
+.style .token.string {
+ color: #a67f59;
+ background: rgba(255, 255, 255, 0.5);
+}
+
+.token.important {
+ font-weight: normal;
+}
+
+.token.entity {
+ cursor: help;
+}
+
+.namespace {
+ opacity: .7;
+}
+
+@media screen and (max-width:767px){
+ pre[class*="language-"]:before,
+ pre[class*="language-"]:after {
+ bottom:14px;
+ -webkit-box-shadow:none;
+ -moz-box-shadow:none;
+ box-shadow:none;
+ }
+
+}
+
+/* Plugin styles */
+.token.tab:not(:empty):before,
+.token.cr:before,
+.token.lf:before {
+ color: #e0d7d1;
+}
+
diff --git a/library/jRange/demo/prism/prism.js b/library/jRange/demo/prism/prism.js
new file mode 100644
index 000000000..dace66766
--- /dev/null
+++ b/library/jRange/demo/prism/prism.js
@@ -0,0 +1,8 @@
+/* http://prismjs.com/download.html?themes=prism-coy&languages=markup+css+css-extras+clike+javascript */
+var self=typeof window!="undefined"?window:{},Prism=function(){var e=/\blang(?:uage)?-(?!\*)(\w+)\b/i,t=self.Prism={util:{encode:function(e){return e instanceof n?new n(e.type,t.util.encode(e.content)):t.util.type(e)==="Array"?e.map(t.util.encode):e.replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/\u00a0/g," ")},type:function(e){return Object.prototype.toString.call(e).match(/\[object (\w+)\]/)[1]},clone:function(e){var n=t.util.type(e);switch(n){case"Object":var r={};for(var i in e)e.hasOwnProperty(i)&&(r[i]=t.util.clone(e[i]));return r;case"Array":return e.slice()}return e}},languages:{extend:function(e,n){var r=t.util.clone(t.languages[e]);for(var i in n)r[i]=n[i];return r},insertBefore:function(e,n,r,i){i=i||t.languages;var s=i[e],o={};for(var u in s)if(s.hasOwnProperty(u)){if(u==n)for(var a in r)r.hasOwnProperty(a)&&(o[a]=r[a]);o[u]=s[u]}return i[e]=o},DFS:function(e,n){for(var r in e){n.call(e,r,e[r]);t.util.type(e)==="Object"&&t.languages.DFS(e[r],n)}}},highlightAll:function(e,n){var r=document.querySelectorAll('code[class*="language-"], [class*="language-"] code, code[class*="lang-"], [class*="lang-"] code');for(var i=0,s;s=r[i++];)t.highlightElement(s,e===!0,n)},highlightElement:function(r,i,s){var o,u,a=r;while(a&&!e.test(a.className))a=a.parentNode;if(a){o=(a.className.match(e)||[,""])[1];u=t.languages[o]}if(!u)return;r.className=r.className.replace(e,"").replace(/\s+/g," ")+" language-"+o;a=r.parentNode;/pre/i.test(a.nodeName)&&(a.className=a.className.replace(e,"").replace(/\s+/g," ")+" language-"+o);var f=r.textContent;if(!f)return;var l={element:r,language:o,grammar:u,code:f};t.hooks.run("before-highlight",l);if(i&&self.Worker){var c=new Worker(t.filename);c.onmessage=function(e){l.highlightedCode=n.stringify(JSON.parse(e.data),o);t.hooks.run("before-insert",l);l.element.innerHTML=l.highlightedCode;s&&s.call(l.element);t.hooks.run("after-highlight",l)};c.postMessage(JSON.stringify({language:l.language,code:l.code}))}else{l.highlightedCode=t.highlight(l.code,l.grammar,l.language);t.hooks.run("before-insert",l);l.element.innerHTML=l.highlightedCode;s&&s.call(r);t.hooks.run("after-highlight",l)}},highlight:function(e,r,i){var s=t.tokenize(e,r);return n.stringify(t.util.encode(s),i)},tokenize:function(e,n,r){var i=t.Token,s=[e],o=n.rest;if(o){for(var u in o)n[u]=o[u];delete n.rest}e:for(var u in n){if(!n.hasOwnProperty(u)||!n[u])continue;var a=n[u],f=a.inside,l=!!a.lookbehind,c=0;a=a.pattern||a;for(var h=0;h<s.length;h++){var p=s[h];if(s.length>e.length)break e;if(p instanceof i)continue;a.lastIndex=0;var d=a.exec(p);if(d){l&&(c=d[1].length);var v=d.index-1+c,d=d[0].slice(c),m=d.length,g=v+m,y=p.slice(0,v+1),b=p.slice(g+1),w=[h,1];y&&w.push(y);var E=new i(u,f?t.tokenize(d,f):d);w.push(E);b&&w.push(b);Array.prototype.splice.apply(s,w)}}}return s},hooks:{all:{},add:function(e,n){var r=t.hooks.all;r[e]=r[e]||[];r[e].push(n)},run:function(e,n){var r=t.hooks.all[e];if(!r||!r.length)return;for(var i=0,s;s=r[i++];)s(n)}}},n=t.Token=function(e,t){this.type=e;this.content=t};n.stringify=function(e,r,i){if(typeof e=="string")return e;if(Object.prototype.toString.call(e)=="[object Array]")return e.map(function(t){return n.stringify(t,r,e)}).join("");var s={type:e.type,content:n.stringify(e.content,r,i),tag:"span",classes:["token",e.type],attributes:{},language:r,parent:i};s.type=="comment"&&(s.attributes.spellcheck="true");t.hooks.run("wrap",s);var o="";for(var u in s.attributes)o+=u+'="'+(s.attributes[u]||"")+'"';return"<"+s.tag+' class="'+s.classes.join(" ")+'" '+o+">"+s.content+"</"+s.tag+">"};if(!self.document){if(!self.addEventListener)return self.Prism;self.addEventListener("message",function(e){var n=JSON.parse(e.data),r=n.language,i=n.code;self.postMessage(JSON.stringify(t.tokenize(i,t.languages[r])));self.close()},!1);return self.Prism}var r=document.getElementsByTagName("script");r=r[r.length-1];if(r){t.filename=r.src;document.addEventListener&&!r.hasAttribute("data-manual")&&document.addEventListener("DOMContentLoaded",t.highlightAll)}return self.Prism}();typeof module!="undefined"&&module.exports&&(module.exports=Prism);;
+Prism.languages.markup={comment:/<!--[\w\W]*?-->/g,prolog:/<\?.+?\?>/,doctype:/<!DOCTYPE.+?>/,cdata:/<!\[CDATA\[[\w\W]*?]]>/i,tag:{pattern:/<\/?[\w:-]+\s*(?:\s+[\w:-]+(?:=(?:("|')(\\?[\w\W])*?\1|[^\s'">=]+))?\s*)*\/?>/gi,inside:{tag:{pattern:/^<\/?[\w:-]+/i,inside:{punctuation:/^<\/?/,namespace:/^[\w-]+?:/}},"attr-value":{pattern:/=(?:('|")[\w\W]*?(\1)|[^\s>]+)/gi,inside:{punctuation:/=|>|"/g}},punctuation:/\/?>/g,"attr-name":{pattern:/[\w:-]+/g,inside:{namespace:/^[\w-]+?:/}}}},entity:/\&#?[\da-z]{1,8};/gi};Prism.hooks.add("wrap",function(e){e.type==="entity"&&(e.attributes.title=e.content.replace(/&amp;/,"&"))});;
+Prism.languages.css={comment:/\/\*[\w\W]*?\*\//g,atrule:{pattern:/@[\w-]+?.*?(;|(?=\s*{))/gi,inside:{punctuation:/[;:]/g}},url:/url\((["']?).*?\1\)/gi,selector:/[^\{\}\s][^\{\};]*(?=\s*\{)/g,property:/(\b|\B)[\w-]+(?=\s*:)/ig,string:/("|')(\\?.)*?\1/g,important:/\B!important\b/gi,punctuation:/[\{\};:]/g,"function":/[-a-z0-9]+(?=\()/ig};Prism.languages.markup&&Prism.languages.insertBefore("markup","tag",{style:{pattern:/<style[\w\W]*?>[\w\W]*?<\/style>/ig,inside:{tag:{pattern:/<style[\w\W]*?>|<\/style>/ig,inside:Prism.languages.markup.tag.inside},rest:Prism.languages.css}}});;
+Prism.languages.css.selector={pattern:/[^\{\}\s][^\{\}]*(?=\s*\{)/g,inside:{"pseudo-element":/:(?:after|before|first-letter|first-line|selection)|::[-\w]+/g,"pseudo-class":/:[-\w]+(?:\(.*\))?/g,"class":/\.[-:\.\w]+/g,id:/#[-:\.\w]+/g}};Prism.languages.insertBefore("css","ignore",{hexcode:/#[\da-f]{3,6}/gi,entity:/\\[\da-f]{1,8}/gi,number:/[\d%\.]+/g});;
+Prism.languages.clike={comment:{pattern:/(^|[^\\])(\/\*[\w\W]*?\*\/|(^|[^:])\/\/.*?(\r?\n|$))/g,lookbehind:!0},string:/("|')(\\?.)*?\1/g,"class-name":{pattern:/((?:(?:class|interface|extends|implements|trait|instanceof|new)\s+)|(?:catch\s+\())[a-z0-9_\.\\]+/ig,lookbehind:!0,inside:{punctuation:/(\.|\\)/}},keyword:/\b(if|else|while|do|for|return|in|instanceof|function|new|try|throw|catch|finally|null|break|continue)\b/g,"boolean":/\b(true|false)\b/g,"function":{pattern:/[a-z0-9_]+\(/ig,inside:{punctuation:/\(/}},number:/\b-?(0x[\dA-Fa-f]+|\d*\.?\d+([Ee]-?\d+)?)\b/g,operator:/[-+]{1,2}|!|<=?|>=?|={1,3}|&{1,2}|\|?\||\?|\*|\/|\~|\^|\%/g,ignore:/&(lt|gt|amp);/gi,punctuation:/[{}[\];(),.:]/g};;
+Prism.languages.javascript=Prism.languages.extend("clike",{keyword:/\b(break|case|catch|class|const|continue|debugger|default|delete|do|else|enum|export|extends|false|finally|for|function|get|if|implements|import|in|instanceof|interface|let|new|null|package|private|protected|public|return|set|static|super|switch|this|throw|true|try|typeof|var|void|while|with|yield)\b/g,number:/\b-?(0x[\dA-Fa-f]+|\d*\.?\d+([Ee]-?\d+)?|NaN|-?Infinity)\b/g});Prism.languages.insertBefore("javascript","keyword",{regex:{pattern:/(^|[^/])\/(?!\/)(\[.+?]|\\.|[^/\r\n])+\/[gim]{0,3}(?=\s*($|[\r\n,.;})]))/g,lookbehind:!0}});Prism.languages.markup&&Prism.languages.insertBefore("markup","tag",{script:{pattern:/<script[\w\W]*?>[\w\W]*?<\/script>/ig,inside:{tag:{pattern:/<script[\w\W]*?>|<\/script>/ig,inside:Prism.languages.markup.tag.inside},rest:Prism.languages.javascript}}});
+;
diff --git a/library/jRange/jquery.range-min.js b/library/jRange/jquery.range-min.js
new file mode 100644
index 000000000..8aa6e7ecb
--- /dev/null
+++ b/library/jRange/jquery.range-min.js
@@ -0,0 +1 @@
+!function($,t,i,s){"use strict";var o=function(){return this.init.apply(this,arguments)};o.prototype={defaults:{onstatechange:function(){},isRange:!1,showLabels:!0,showScale:!0,step:1,format:"%s",theme:"theme-green",width:300},template:'<div class="slider-container"> <div class="back-bar"> <div class="selected-bar"></div> <div class="pointer low"></div><div class="pointer-label">123456</div> <div class="pointer high"></div><div class="pointer-label">456789</div> <div class="clickable-dummy"></div> </div> <div class="scale"></div> </div>',init:function(t,i){this.options=$.extend({},this.defaults,i),this.inputNode=$(t),this.options.value=this.inputNode.val()||(this.options.isRange?this.options.from+","+this.options.from:this.options.from),this.domNode=$(this.template),this.domNode.addClass(this.options.theme),this.inputNode.after(this.domNode),this.domNode.on("change",this.onChange),this.pointers=$(".pointer",this.domNode),this.lowPointer=this.pointers.first(),this.highPointer=this.pointers.last(),this.labels=$(".pointer-label",this.domNode),this.lowLabel=this.labels.first(),this.highLabel=this.labels.last(),this.scale=$(".scale",this.domNode),this.bar=$(".selected-bar",this.domNode),this.clickableBar=this.domNode.find(".clickable-dummy"),this.interval=this.options.to-this.options.from,this.render()},render:function(){return 0!==this.inputNode.width()||this.options.width?(this.domNode.width(this.options.width||this.inputNode.width()),this.inputNode.hide(),this.isSingle()&&(this.lowPointer.hide(),this.lowLabel.hide()),this.options.showLabels||this.labels.hide(),this.attachEvents(),this.options.showScale&&this.renderScale(),void this.setValue(this.options.value)):void console.log("jRange : no width found, returning")},isSingle:function(){return"number"==typeof this.options.value?!0:-1!==this.options.value.indexOf(",")||this.options.isRange?!1:!0},attachEvents:function(){this.clickableBar.click($.proxy(this.barClicked,this)),this.pointers.mousedown($.proxy(this.onDragStart,this)),this.pointers.bind("dragstart",function(t){t.preventDefault()})},onDragStart:function(t){if(1===t.which){t.stopPropagation(),t.preventDefault();var s=$(t.target);s.addClass("focused"),this[(s.hasClass("low")?"low":"high")+"Label"].addClass("focused"),$(i).on("mousemove.slider",$.proxy(this.onDrag,this,s)),$(i).on("mouseup.slider",$.proxy(this.onDragEnd,this))}},onDrag:function(t,i){i.stopPropagation(),i.preventDefault();var s=i.clientX-this.domNode.offset().left;this.domNode.trigger("change",[this,t,s])},onDragEnd:function(){this.pointers.removeClass("focused"),this.labels.removeClass("focused"),$(i).off(".slider"),$(i).off(".slider")},barClicked:function(t){var i=t.pageX-this.clickableBar.offset().left;if(this.isSingle())this.setPosition(this.pointers.last(),i,!0,!0);else{var s=Math.abs(parseInt(this.pointers.first().css("left"),10)-i+this.pointers.first().width()/2)<Math.abs(parseInt(this.pointers.last().css("left"),10)-i+this.pointers.first().width()/2)?this.pointers.first():this.pointers.last();this.setPosition(s,i,!0,!0)}},onChange:function(t,i,s,o){var e,n;i.isSingle()?(e=0,n=i.domNode.width()):(e=s.hasClass("high")?i.lowPointer.position().left+i.lowPointer.width()/2:0,n=s.hasClass("low")?i.highPointer.position().left+i.highPointer.width()/2:i.domNode.width());var h=Math.min(Math.max(o,e),n);i.setPosition(s,h,!0)},setPosition:function(t,i,s,o){var e,n=this.lowPointer.position().left,h=this.highPointer.position().left,a=this.highPointer.width()/2;s||(i=this.prcToPx(i)),t[0]===this.highPointer[0]?h=Math.round(i-a):n=Math.round(i-a),t[o?"animate":"css"]({left:Math.round(i-a)}),e=this.isSingle()?0:n+a,this.bar[o?"animate":"css"]({width:Math.round(h+a-e),left:e}),this.showPointerValue(t,i,o)},setValue:function(t){var i=t.toString().split(",");this.options.value=t;var s=this.valuesToPrc(2===i.length?i:[0,i[0]]);this.isSingle()?this.setPosition(this.highPointer,s[1]):(this.setPosition(this.lowPointer,s[0]),this.setPosition(this.highPointer,s[1]))},renderScale:function(){for(var t=this.options.scale||[this.options.from,this.options.to],i=Math.round(100/(t.length-1)*10)/10,s="",o=0;o<t.length;o++)s+='<span style="left: '+o*i+'%">'+("|"!=t[o]?"<ins>"+t[o]+"</ins>":"")+"</span>";this.scale.html(s),$("ins",this.scale).each(function(){$(this).css({marginLeft:-$(this).outerWidth()/2})})},getBarWidth:function(){var t=this.options.value.split(",");return t.length>1?parseInt(t[1],10)-parseInt(t[0],10):parseInt(t[0],10)},showPointerValue:function(t,i,o){var e=$(".pointer-label",this.domNode)[t.hasClass("low")?"first":"last"](),n,h=this.positionToValue(i);if($.isFunction(this.options.format)){var a=this.isSingle()?s:t.hasClass("low")?"low":"high";n=this.options.format(h,a)}else n=this.options.format.replace("%s",h);var r=e.html(n).width(),l=i-r/2;l=Math.min(Math.max(l,0),this.options.width-r),e[o?"animate":"css"]({left:l}),this.setInputValue(t,h)},valuesToPrc:function(t){var i=100*(t[0]-this.options.from)/this.interval,s=100*(t[1]-this.options.from)/this.interval;return[i,s]},prcToPx:function(t){return this.domNode.width()*t/100},positionToValue:function(t){var i=t/this.domNode.width()*this.interval;return i+=this.options.from,Math.round(i/this.options.step)*this.options.step},setInputValue:function(t,i){if(this.isSingle())this.options.value=i.toString();else{var s=this.options.value.split(",");this.options.value=t.hasClass("low")?i+","+s[1]:s[0]+","+i}this.inputNode.val()!==this.options.value&&(this.inputNode.val(this.options.value),this.options.onstatechange.call(this,this.options.value))},getValue:function(){return this.options.value}};var e="jRange";$.fn[e]=function(t){var i=arguments,s;return this.each(function(){var n=$(this),h=$.data(this,"plugin_"+e),a="object"==typeof t&&t;h||n.data("plugin_"+e,h=new o(this,a)),"string"==typeof t&&(s=h[t].apply(h,Array.prototype.slice.call(i,1)))}),s||this}}(jQuery,window,document); \ No newline at end of file
diff --git a/library/jRange/jquery.range.css b/library/jRange/jquery.range.css
new file mode 100644
index 000000000..27375c846
--- /dev/null
+++ b/library/jRange/jquery.range.css
@@ -0,0 +1,168 @@
+.slider-container {
+ width: 300px;
+ font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
+}
+.slider-container .back-bar {
+ height: 10px;
+ position: relative;
+}
+.slider-container .back-bar .selected-bar {
+ position: absolute;
+ height: 100%;
+}
+.slider-container .back-bar .pointer {
+ position: absolute;
+ width: 10px;
+ height: 10px;
+ background-color: red;
+ cursor: move;
+ opacity: 1;
+ z-index: 2;
+}
+.slider-container .back-bar .pointer-label {
+ position: absolute;
+ top: -17px;
+ font-size: 8px;
+ background: white;
+ white-space: nowrap;
+ line-height: 1;
+}
+.slider-container .back-bar .focused {
+ z-index: 10;
+}
+.slider-container .clickable-dummy {
+ cursor: pointer;
+ position: absolute;
+ width: 100%;
+ height: 100%;
+ z-index: 1;
+}
+.slider-container .scale {
+ top: 2px;
+ position: relative;
+}
+.slider-container .scale span {
+ position: absolute;
+ height: 5px;
+ border-left: 1px solid #999;
+ font-size: 0;
+}
+.slider-container .scale ins {
+ font-size: 9px;
+ text-decoration: none;
+ position: absolute;
+ left: 0;
+ top: 5px;
+ color: #999;
+ line-height: 1;
+}
+.theme-green .back-bar {
+ height: 5px;
+ border-radius: 2px;
+ background-color: #eeeeee;
+ background-color: #e7e7e7;
+ background-image: -moz-linear-gradient(top, #eeeeee, #dddddd);
+ background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#eeeeee), to(#dddddd));
+ background-image: -webkit-linear-gradient(top, #eeeeee, #dddddd);
+ background-image: -o-linear-gradient(top, #eeeeee, #dddddd);
+ background-image: linear-gradient(to bottom, #eeeeee, #dddddd);
+ background-repeat: repeat-x;
+ filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffeeeeee', endColorstr='#ffdddddd', GradientType=0);
+}
+.theme-green .back-bar .selected-bar {
+ border-radius: 2px;
+ background-color: #a1fad0;
+ background-image: -moz-linear-gradient(top, #bdfade, #76fabc);
+ background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#bdfade), to(#76fabc));
+ background-image: -webkit-linear-gradient(top, #bdfade, #76fabc);
+ background-image: -o-linear-gradient(top, #bdfade, #76fabc);
+ background-image: linear-gradient(to bottom, #bdfade, #76fabc);
+ background-repeat: repeat-x;
+ filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffbdfade', endColorstr='#ff76fabc', GradientType=0);
+}
+.theme-green .back-bar .pointer {
+ width: 14px;
+ height: 14px;
+ top: -5px;
+ -webkit-box-sizing: border-box;
+ -moz-box-sizing: border-box;
+ box-sizing: border-box;
+ border-radius: 10px;
+ border: 1px solid #AAA;
+ background-color: #e7e7e7;
+ background-image: -moz-linear-gradient(top, #eeeeee, #dddddd);
+ background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#eeeeee), to(#dddddd));
+ background-image: -webkit-linear-gradient(top, #eeeeee, #dddddd);
+ background-image: -o-linear-gradient(top, #eeeeee, #dddddd);
+ background-image: linear-gradient(to bottom, #eeeeee, #dddddd);
+ background-repeat: repeat-x;
+ filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffeeeeee', endColorstr='#ffdddddd', GradientType=0);
+ cursor: col-resize;
+}
+.theme-green .back-bar .pointer-label {
+ color: #999;
+}
+.theme-green .back-bar .focused {
+ color: #333;
+}
+.theme-green .scale span {
+ border-left: 1px solid #e5e5e5;
+}
+.theme-green .scale ins {
+ color: #999;
+}
+.theme-blue .back-bar {
+ height: 5px;
+ border-radius: 2px;
+ background-color: #eeeeee;
+ background-color: #e7e7e7;
+ background-image: -moz-linear-gradient(top, #eeeeee, #dddddd);
+ background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#eeeeee), to(#dddddd));
+ background-image: -webkit-linear-gradient(top, #eeeeee, #dddddd);
+ background-image: -o-linear-gradient(top, #eeeeee, #dddddd);
+ background-image: linear-gradient(to bottom, #eeeeee, #dddddd);
+ background-repeat: repeat-x;
+ filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffeeeeee', endColorstr='#ffdddddd', GradientType=0);
+}
+.theme-blue .back-bar .selected-bar {
+ border-radius: 2px;
+ background-color: #92c1f9;
+ background-image: -moz-linear-gradient(top, #b1d1f9, #64a8f9);
+ background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#b1d1f9), to(#64a8f9));
+ background-image: -webkit-linear-gradient(top, #b1d1f9, #64a8f9);
+ background-image: -o-linear-gradient(top, #b1d1f9, #64a8f9);
+ background-image: linear-gradient(to bottom, #b1d1f9, #64a8f9);
+ background-repeat: repeat-x;
+ filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffb1d1f9', endColorstr='#ff64a8f9', GradientType=0);
+}
+.theme-blue .back-bar .pointer {
+ width: 14px;
+ height: 14px;
+ top: -5px;
+ -webkit-box-sizing: border-box;
+ -moz-box-sizing: border-box;
+ box-sizing: border-box;
+ border-radius: 10px;
+ border: 1px solid #AAA;
+ background-color: #e7e7e7;
+ background-image: -moz-linear-gradient(top, #eeeeee, #dddddd);
+ background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#eeeeee), to(#dddddd));
+ background-image: -webkit-linear-gradient(top, #eeeeee, #dddddd);
+ background-image: -o-linear-gradient(top, #eeeeee, #dddddd);
+ background-image: linear-gradient(to bottom, #eeeeee, #dddddd);
+ background-repeat: repeat-x;
+ filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffeeeeee', endColorstr='#ffdddddd', GradientType=0);
+ cursor: col-resize;
+}
+.theme-blue .back-bar .pointer-label {
+ color: #999;
+}
+.theme-blue .back-bar .focused {
+ color: #333;
+}
+.theme-blue .scale span {
+ border-left: 1px solid #e5e5e5;
+}
+.theme-blue .scale ins {
+ color: #999;
+}
diff --git a/library/jRange/jquery.range.js b/library/jRange/jquery.range.js
new file mode 100644
index 000000000..978b3e7ba
--- /dev/null
+++ b/library/jRange/jquery.range.js
@@ -0,0 +1,297 @@
+/*jshint multistr:true, curly: false */
+/*global jQuery:false, define: false */
+/**
+ * jRange - Awesome range control
+ *
+ * Written by
+ * ----------
+ * Nitin Hayaran (nitinhayaran@gmail.com)
+ *
+ * Licensed under the MIT (MIT-LICENSE.txt).
+ *
+ * @author Nitin Hayaran
+ * @version 0.1-RELEASE
+ *
+ * Dependencies
+ * ------------
+ * jQuery (http://jquery.com)
+ *
+ **/
+ ;
+ (function($, window, document, undefined) {
+ 'use strict';
+
+ var jRange = function(){
+ return this.init.apply(this, arguments);
+ };
+ jRange.prototype = {
+ defaults : {
+ onstatechange : function(){},
+ isRange : false,
+ showLabels : true,
+ showScale : true,
+ step : 1,
+ format: '%s',
+ theme : 'theme-green',
+ width : 300
+ },
+ template : '<div class="slider-container">\
+ <div class="back-bar">\
+ <div class="selected-bar"></div>\
+ <div class="pointer low"></div><div class="pointer-label">123456</div>\
+ <div class="pointer high"></div><div class="pointer-label">456789</div>\
+ <div class="clickable-dummy"></div>\
+ </div>\
+ <div class="scale"></div>\
+ </div>',
+ init : function(node, options){
+ this.options = $.extend({}, this.defaults, options);
+ this.inputNode = $(node);
+ this.options.value = this.inputNode.val() || (this.options.isRange ? this.options.from+','+this.options.from : this.options.from);
+ this.domNode = $(this.template);
+ this.domNode.addClass(this.options.theme);
+ this.inputNode.after(this.domNode);
+ this.domNode.on('change', this.onChange);
+ this.pointers = $('.pointer', this.domNode);
+ this.lowPointer = this.pointers.first();
+ this.highPointer = this.pointers.last();
+ this.labels = $('.pointer-label', this.domNode);
+ this.lowLabel = this.labels.first();
+ this.highLabel = this.labels.last();
+ this.scale = $('.scale', this.domNode);
+ this.bar = $('.selected-bar', this.domNode);
+ this.clickableBar = this.domNode.find('.clickable-dummy');
+ this.interval = this.options.to - this.options.from;
+ this.render();
+ },
+ render: function(){
+ // Check if inputNode is visible, and have some width, so that we can set slider width accordingly.
+ if( this.inputNode.width() === 0 && !this.options.width ){
+ console.log('jRange : no width found, returning');
+ return;
+ }else{
+ this.domNode.width( this.options.width || this.inputNode.width() );
+ this.inputNode.hide();
+ }
+
+ if(this.isSingle()){
+ this.lowPointer.hide();
+ this.lowLabel.hide();
+ }
+ if(!this.options.showLabels){
+ this.labels.hide();
+ }
+ this.attachEvents();
+ if(this.options.showScale){
+ this.renderScale();
+ }
+ this.setValue(this.options.value);
+ },
+ isSingle: function(){
+ if(typeof(this.options.value) === 'number'){
+ return true;
+ }
+ return (this.options.value.indexOf(',') !== -1 || this.options.isRange) ?
+ false : true;
+ },
+ attachEvents: function(){
+ this.clickableBar.click($.proxy(this.barClicked, this));
+ this.pointers.mousedown($.proxy(this.onDragStart, this));
+ this.pointers.bind('dragstart', function(event) { event.preventDefault(); });
+ },
+ onDragStart: function(e){
+ if(e.which !== 1){return;}
+ e.stopPropagation(); e.preventDefault();
+ var pointer = $(e.target);
+ pointer.addClass('focused');
+ this[(pointer.hasClass('low')?'low':'high') + 'Label'].addClass('focused');
+ $(document).on('mousemove.slider', $.proxy(this.onDrag, this, pointer));
+ $(document).on('mouseup.slider', $.proxy(this.onDragEnd, this));
+ },
+ onDrag: function(pointer, e){
+ e.stopPropagation(); e.preventDefault();
+ var position = e.clientX - this.domNode.offset().left;
+ this.domNode.trigger('change', [this, pointer, position]);
+ },
+ onDragEnd: function(){
+ this.pointers.removeClass('focused');
+ this.labels.removeClass('focused');
+ $(document).off('.slider');
+ $(document).off('.slider');
+ },
+ barClicked: function(e){
+ var x = e.pageX - this.clickableBar.offset().left;
+ if(this.isSingle())
+ this.setPosition(this.pointers.last(), x, true, true);
+ else{
+ var pointer = Math.abs(parseInt(this.pointers.first().css('left'), 10) - x + this.pointers.first().width() / 2) < Math.abs(parseInt(this.pointers.last().css('left'), 10) - x + this.pointers.first().width() / 2) ?
+ this.pointers.first() : this.pointers.last();
+ this.setPosition(pointer, x, true, true);
+ }
+ },
+ onChange: function(e, self, pointer, position){
+ var min, max;
+ if(self.isSingle()){
+ min = 0;
+ max = self.domNode.width();
+ }else{
+ min = pointer.hasClass('high')? self.lowPointer.position().left + self.lowPointer.width() / 2 : 0;
+ max = pointer.hasClass('low') ? self.highPointer.position().left + self.highPointer.width() / 2 : self.domNode.width();
+ }
+ var value = Math.min(Math.max(position, min), max);
+ self.setPosition(pointer, value, true);
+ },
+ setPosition: function(pointer, position, isPx, animate){
+ var leftPos,
+ lowPos = this.lowPointer.position().left,
+ highPos = this.highPointer.position().left,
+ circleWidth = this.highPointer.width() / 2;
+ if(!isPx){
+ position = this.prcToPx(position);
+ }
+ if(pointer[0] === this.highPointer[0]){
+ highPos = Math.round(position - circleWidth);
+ }else{
+ lowPos = Math.round(position - circleWidth);
+ }
+ pointer[animate?'animate':'css']({'left': Math.round(position - circleWidth)});
+ if(this.isSingle()){
+ leftPos = 0;
+ }else{
+ leftPos = lowPos + circleWidth;
+ }
+ this.bar[animate?'animate':'css']({
+ 'width' : Math.round(highPos + circleWidth - leftPos),
+ 'left' : leftPos
+ });
+ this.showPointerValue(pointer, position, animate);
+ },
+ // will be called from outside
+ setValue: function(value){
+ var values = value.toString().split(',');
+ this.options.value = value;
+ var prc = this.valuesToPrc( values.length === 2 ? values : [0, values[0]] );
+ if(this.isSingle()){
+ this.setPosition(this.highPointer, prc[1]);
+ }else{
+ this.setPosition(this.lowPointer, prc[0]);
+ this.setPosition(this.highPointer, prc[1]);
+ }
+ },
+ renderScale: function(){
+ var s = this.options.scale || [this.options.from, this.options.to];
+ var prc = Math.round((100 / (s.length - 1)) * 10) / 10;
+ var str = '';
+ for(var i = 0; i < s.length ; i++ ){
+ str += '<span style="left: ' + i * prc + '%">' + (s[i] != '|' ? '<ins>' + s[i] + '</ins>' : '') + '</span>';
+ }
+ this.scale.html(str);
+
+ $('ins', this.scale).each(function () {
+ $(this).css({
+ marginLeft: -$(this).outerWidth() / 2
+ });
+ });
+ },
+ getBarWidth: function(){
+ var values = this.options.value.split(',');
+ if(values.length > 1){
+ return parseInt(values[1], 10) - parseInt(values[0], 10);
+ }else{
+ return parseInt(values[0], 10);
+ }
+ },
+ showPointerValue: function(pointer, position, animate){
+ var label = $('.pointer-label', this.domNode)[pointer.hasClass('low')?'first':'last']();
+ var text;
+ var value = this.positionToValue(position);
+ if($.isFunction(this.options.format)){
+ var type = this.isSingle() ? undefined : (pointer.hasClass('low') ? 'low':'high');
+ text = this.options.format(value, type);
+ }else{
+ text = this.options.format.replace('%s', value);
+ }
+
+ var width = label.html(text).width(),
+ left = position - width / 2;
+ left = Math.min(Math.max(left, 0), this.options.width - width);
+ label[animate?'animate':'css']({left: left});
+ this.setInputValue(pointer, value);
+ },
+ valuesToPrc: function(values){
+ var lowPrc = ( ( values[0] - this.options.from ) * 100 / this.interval ),
+ highPrc = ( ( values[1] - this.options.from ) * 100 / this.interval );
+ return [lowPrc, highPrc];
+ },
+ prcToPx: function(prc){
+ return (this.domNode.width() * prc) / 100;
+ },
+ positionToValue: function(pos){
+ var value = (pos / this.domNode.width()) * this.interval;
+ value = value + this.options.from;
+ return Math.round(value / this.options.step) * this.options.step;
+ },
+ setInputValue: function(pointer, v){
+ // if(!isChanged) return;
+ if(this.isSingle()){
+ this.options.value = v.toString();
+ }else{
+ var values = this.options.value.split(',');
+ if(pointer.hasClass('low')){
+ this.options.value = v + ',' + values[1];
+ }else{
+ this.options.value = values[0] + ',' + v;
+ }
+ }
+ if( this.inputNode.val() !== this.options.value ){
+ this.inputNode.val(this.options.value);
+ this.options.onstatechange.call(this, this.options.value);
+ }
+ },
+ getValue: function(){
+ return this.options.value;
+ }
+ };
+
+ /*$.jRange = function (node, options) {
+ var jNode = $(node);
+ if(!jNode.data('jrange')){
+ jNode.data('jrange', new jRange(node, options));
+ }
+ return jNode.data('jrange');
+ };
+
+ $.fn.jRange = function (options) {
+ return this.each(function(){
+ $.jRange(this, options);
+ });
+ };*/
+
+ var pluginName = 'jRange';
+ // A really lightweight plugin wrapper around the constructor,
+ // preventing against multiple instantiations
+ $.fn[pluginName] = function(option) {
+ var args = arguments,
+ result;
+
+ this.each(function() {
+ var $this = $(this),
+ data = $.data(this, 'plugin_' + pluginName),
+ options = typeof option === 'object' && option;
+ if (!data) {
+ $this.data('plugin_' + pluginName, (data = new jRange(this, options)));
+ }
+ // if first argument is a string, call silimarly named function
+ // this gives flexibility to call functions of the plugin e.g.
+ // - $('.dial').plugin('destroy');
+ // - $('.dial').plugin('render', $('.new-child'));
+ if (typeof option === 'string') {
+ result = data[option].apply(data, Array.prototype.slice.call(args, 1));
+ }
+ });
+
+ // To enable plugin returns values
+ return result || this;
+ };
+
+})(jQuery, window, document); \ No newline at end of file
diff --git a/library/jRange/jquery.range.less b/library/jRange/jquery.range.less
new file mode 100644
index 000000000..979ed2e1a
--- /dev/null
+++ b/library/jRange/jquery.range.less
@@ -0,0 +1,192 @@
+#gradient {
+ .horizontal(@startColor: #555, @endColor: #333) {
+ background-color: @endColor;
+ background-image: -moz-linear-gradient(left, @startColor, @endColor); // FF 3.6+
+ background-image: -webkit-gradient(linear, 0 0, 100% 0, from(@startColor), to(@endColor)); // Safari 4+, Chrome 2+
+ background-image: -webkit-linear-gradient(left, @startColor, @endColor); // Safari 5.1+, Chrome 10+
+ background-image: -o-linear-gradient(left, @startColor, @endColor); // Opera 11.10
+ background-image: linear-gradient(to right, @startColor, @endColor); // Standard, IE10
+ background-repeat: repeat-x;
+ filter: e(%("progid:DXImageTransform.Microsoft.gradient(startColorstr='%d', endColorstr='%d', GradientType=1)",argb(@startColor),argb(@endColor))); // IE9 and down
+ }
+ .vertical(@startColor: #555, @endColor: #333) {
+ background-color: mix(@startColor, @endColor, 60%);
+ background-image: -moz-linear-gradient(top, @startColor, @endColor); // FF 3.6+
+ background-image: -webkit-gradient(linear, 0 0, 0 100%, from(@startColor), to(@endColor)); // Safari 4+, Chrome 2+
+ background-image: -webkit-linear-gradient(top, @startColor, @endColor); // Safari 5.1+, Chrome 10+
+ background-image: -o-linear-gradient(top, @startColor, @endColor); // Opera 11.10
+ background-image: linear-gradient(to bottom, @startColor, @endColor); // Standard, IE10
+ background-repeat: repeat-x;
+ filter: e(%("progid:DXImageTransform.Microsoft.gradient(startColorstr='%d', endColorstr='%d', GradientType=0)",argb(@startColor),argb(@endColor))); // IE9 and down
+ }
+ .directional(@startColor: #555, @endColor: #333, @deg: 45deg) {
+ background-color: @endColor;
+ background-repeat: repeat-x;
+ background-image: -moz-linear-gradient(@deg, @startColor, @endColor); // FF 3.6+
+ background-image: -webkit-linear-gradient(@deg, @startColor, @endColor); // Safari 5.1+, Chrome 10+
+ background-image: -o-linear-gradient(@deg, @startColor, @endColor); // Opera 11.10
+ background-image: linear-gradient(@deg, @startColor, @endColor); // Standard, IE10
+ }
+ .vertical-three-colors(@startColor: #00b3ee, @midColor: #7a43b6, @colorStop: 50%, @endColor: #c3325f) {
+ background-color: mix(@midColor, @endColor, 80%);
+ background-image: -webkit-gradient(linear, 0 0, 0 100%, from(@startColor), color-stop(@colorStop, @midColor), to(@endColor));
+ background-image: -webkit-linear-gradient(@startColor, @midColor @colorStop, @endColor);
+ background-image: -moz-linear-gradient(top, @startColor, @midColor @colorStop, @endColor);
+ background-image: -o-linear-gradient(@startColor, @midColor @colorStop, @endColor);
+ background-image: linear-gradient(@startColor, @midColor @colorStop, @endColor);
+ background-repeat: no-repeat;
+ filter: e(%("progid:DXImageTransform.Microsoft.gradient(startColorstr='%d', endColorstr='%d', GradientType=0)",argb(@startColor),argb(@endColor))); // IE9 and down, gets no color-stop at all for proper fallback
+ }
+ .radial(@innerColor: #555, @outerColor: #333) {
+ background-color: @outerColor;
+ background-image: -webkit-gradient(radial, center center, 0, center center, 460, from(@innerColor), to(@outerColor));
+ background-image: -webkit-radial-gradient(circle, @innerColor, @outerColor);
+ background-image: -moz-radial-gradient(circle, @innerColor, @outerColor);
+ background-image: -o-radial-gradient(circle, @innerColor, @outerColor);
+ background-repeat: no-repeat;
+ }
+ .striped(@color: #555, @angle: 45deg) {
+ background-color: @color;
+ background-image: -webkit-gradient(linear, 0 100%, 100% 0, color-stop(.25, rgba(255,255,255,.15)), color-stop(.25, transparent), color-stop(.5, transparent), color-stop(.5, rgba(255,255,255,.15)), color-stop(.75, rgba(255,255,255,.15)), color-stop(.75, transparent), to(transparent));
+ background-image: -webkit-linear-gradient(@angle, rgba(255,255,255,.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,.15) 50%, rgba(255,255,255,.15) 75%, transparent 75%, transparent);
+ background-image: -moz-linear-gradient(@angle, rgba(255,255,255,.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,.15) 50%, rgba(255,255,255,.15) 75%, transparent 75%, transparent);
+ background-image: -o-linear-gradient(@angle, rgba(255,255,255,.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,.15) 50%, rgba(255,255,255,.15) 75%, transparent 75%, transparent);
+ background-image: linear-gradient(@angle, rgba(255,255,255,.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,.15) 50%, rgba(255,255,255,.15) 75%, transparent 75%, transparent);
+ }
+}
+
+.slider-container {
+ width: 300px;
+ font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
+ .back-bar {
+ height: 10px;
+ position: relative;
+ .selected-bar {
+ position: absolute;
+ height: 100%;
+ }
+ .pointer {
+ position: absolute;
+ width: 10px;
+ height: 10px;
+ background-color: red;
+ cursor: move;
+ opacity: 1;
+ z-index: 2;
+ }
+ .pointer-label {
+ position: absolute;
+ top: -17px;
+ font-size: 8px;
+ background: white;
+ white-space: nowrap;
+ line-height: 1;
+ }
+ .focused {
+ z-index: 10;
+ }
+ }
+ .clickable-dummy {
+ cursor: pointer;
+ position: absolute;
+ width: 100%;
+ height: 100%;
+ z-index: 1;
+ }
+ .scale {
+ top: 2px;
+ position: relative;
+ span {
+ position: absolute;
+ height: 5px;
+ border-left: 1px solid #999;
+ font-size: 0;
+ }
+ ins {
+ font-size: 9px;
+ text-decoration: none;
+ position: absolute;
+ left: 0;
+ top: 5px;
+ color: #999;
+ line-height: 1;
+ }
+ }
+}
+.theme-green {
+ .back-bar {
+ height: 5px;
+ border-radius: 2px;
+ background-color: #eeeeee;
+ #gradient > .vertical(#eeeeee, #dddddd);
+ .selected-bar {
+ border-radius: 2px;
+ #gradient > .vertical(#bdfade, #76fabc);
+ }
+ .pointer {
+ width: 14px;
+ height: 14px;
+ top: -5px;
+ -webkit-box-sizing: border-box;
+ -moz-box-sizing: border-box;
+ box-sizing: border-box;
+ border-radius: 10px;
+ border: 1px solid #AAA;
+ #gradient > .vertical(#eeeeee, #dddddd);
+ cursor: col-resize;
+ }
+ .pointer-label {
+ color: #999;
+ }
+ .focused {
+ color: #333;
+ }
+ }
+ .scale {
+ span {
+ border-left: 1px solid #e5e5e5;
+ }
+ ins {
+ color: #999;
+ }
+ }
+}
+
+.theme-blue {
+ .back-bar {
+ height: 5px;
+ border-radius: 2px;
+ background-color: #eeeeee;
+ #gradient > .vertical(#eeeeee, #dddddd);
+ .selected-bar {
+ border-radius: 2px;
+ #gradient > .vertical(#b1d1f9, #64a8f9);
+ }
+ .pointer {
+ width: 14px;
+ height: 14px;
+ top: -5px;
+ -webkit-box-sizing: border-box;
+ -moz-box-sizing: border-box;
+ box-sizing: border-box;
+ border-radius: 10px;
+ border: 1px solid #AAA;
+ #gradient > .vertical(#eeeeee, #dddddd);
+ cursor: col-resize;
+ }
+ .pointer-label {
+ color: #999;
+ }
+ .focused {
+ color: #333;
+ }
+ }
+ .scale {
+ span {
+ border-left: 1px solid #e5e5e5;
+ }
+ ins {
+ color: #999;
+ }
+ }
+}
diff --git a/library/jgrowl/README b/library/jgrowl/README
index 3c94f7508..d0f1a62ad 100644
--- a/library/jgrowl/README
+++ b/library/jgrowl/README
@@ -1,3 +1,3 @@
-http://stanlemon.net/projects/jgrowl.html
+https://github.com/stanlemon/jGrowl
jGrowl is free and open source, it's distributed under the MIT and GPL licenses
diff --git a/library/jgrowl/jquery.jgrowl.css b/library/jgrowl/jquery.jgrowl.css
index b4deb978c..ea3948415 100644
--- a/library/jgrowl/jquery.jgrowl.css
+++ b/library/jgrowl/jquery.jgrowl.css
@@ -1,136 +1 @@
-
-div.jGrowl {
- z-index: 9999;
- color: #fff;
- font-size: 12px;
-}
-
-/** Special IE6 Style Positioning **/
-div.ie6 {
- position: absolute;
-}
-
-div.ie6.top-right {
- right: auto;
- bottom: auto;
- left: expression( ( 0 - jGrowl.offsetWidth + ( document.documentElement.clientWidth ? document.documentElement.clientWidth : document.body.clientWidth ) + ( ignoreMe2 = document.documentElement.scrollLeft ? document.documentElement.scrollLeft : document.body.scrollLeft ) ) + 'px' );
- top: expression( ( 0 + ( ignoreMe = document.documentElement.scrollTop ? document.documentElement.scrollTop : document.body.scrollTop ) ) + 'px' );
-}
-
-div.ie6.top-left {
- left: expression( ( 0 + ( ignoreMe2 = document.documentElement.scrollLeft ? document.documentElement.scrollLeft : document.body.scrollLeft ) ) + 'px' );
- top: expression( ( 0 + ( ignoreMe = document.documentElement.scrollTop ? document.documentElement.scrollTop : document.body.scrollTop ) ) + 'px' );
-}
-
-div.ie6.bottom-right {
- left: expression( ( 0 - jGrowl.offsetWidth + ( document.documentElement.clientWidth ? document.documentElement.clientWidth : document.body.clientWidth ) + ( ignoreMe2 = document.documentElement.scrollLeft ? document.documentElement.scrollLeft : document.body.scrollLeft ) ) + 'px' );
- top: expression( ( 0 - jGrowl.offsetHeight + ( document.documentElement.clientHeight ? document.documentElement.clientHeight : document.body.clientHeight ) + ( ignoreMe = document.documentElement.scrollTop ? document.documentElement.scrollTop : document.body.scrollTop ) ) + 'px' );
-}
-
-div.ie6.bottom-left {
- left: expression( ( 0 + ( ignoreMe2 = document.documentElement.scrollLeft ? document.documentElement.scrollLeft : document.body.scrollLeft ) ) + 'px' );
- top: expression( ( 0 - jGrowl.offsetHeight + ( document.documentElement.clientHeight ? document.documentElement.clientHeight : document.body.clientHeight ) + ( ignoreMe = document.documentElement.scrollTop ? document.documentElement.scrollTop : document.body.scrollTop ) ) + 'px' );
-}
-
-div.ie6.center {
- left: expression( ( 0 + ( ignoreMe2 = document.documentElement.scrollLeft ? document.documentElement.scrollLeft : document.body.scrollLeft ) ) + 'px' );
- top: expression( ( 0 + ( ignoreMe = document.documentElement.scrollTop ? document.documentElement.scrollTop : document.body.scrollTop ) ) + 'px' );
- width: 100%;
-}
-
-/** Normal Style Positions **/
-div.jGrowl {
- position: absolute;
-}
-
-body > div.jGrowl {
- position: fixed;
-}
-
-div.jGrowl.top-left {
- left: 0px;
- top: 0px;
-}
-
-div.jGrowl.top-right {
- right: 0px;
- top: 0px;
-}
-
-div.jGrowl.bottom-left {
- left: 0px;
- bottom: 0px;
-}
-
-div.jGrowl.bottom-right {
- right: 0px;
- bottom: 0px;
-}
-
-div.jGrowl.center {
- top: 0px;
- width: 50%;
- left: 25%;
-}
-
-/** Cross Browser Styling **/
-div.center div.jGrowl-notification, div.center div.jGrowl-closer {
- margin-left: auto;
- margin-right: auto;
-}
-
-div.jGrowl div.jGrowl-notification, div.jGrowl div.jGrowl-closer {
- background-color: #000;
- opacity: .85;
- -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=85)";
- filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=85);
- zoom: 1;
- width: 235px;
- padding: 10px;
- margin-top: 5px;
- margin-bottom: 5px;
- font-family: Tahoma, Arial, Helvetica, sans-serif;
- font-size: 1em;
- text-align: left;
- display: none;
- -moz-border-radius: 5px;
- -webkit-border-radius: 5px;
-}
-
-div.jGrowl div.jGrowl-notification {
- min-height: 40px;
-}
-
-div.jGrowl div.jGrowl-notification,
-div.jGrowl div.jGrowl-closer {
- margin: 10px;
-}
-
-div.jGrowl div.jGrowl-notification div.jGrowl-header {
- font-weight: bold;
- font-size: .85em;
-}
-
-div.jGrowl div.jGrowl-notification div.jGrowl-close {
- z-index: 99;
- float: right;
- font-weight: bold;
- font-size: 1em;
- cursor: pointer;
-}
-
-div.jGrowl div.jGrowl-closer {
- padding-top: 4px;
- padding-bottom: 4px;
- cursor: pointer;
- font-size: .9em;
- font-weight: bold;
- text-align: center;
-}
-
-/** Hide jGrowl when printing **/
-@media print {
- div.jGrowl {
- display: none;
- }
-}
+.jGrowl{z-index:9999;color:#fff;font-size:12px;font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;position:fixed}.jGrowl.top-left{left:0;top:0}.jGrowl.top-right{right:0;top:0}.jGrowl.bottom-left{left:0;bottom:0}.jGrowl.bottom-right{right:0;bottom:0}.jGrowl.center{top:0;width:50%;left:25%}.jGrowl.center .jGrowl-closer,.jGrowl.center .jGrowl-notification{margin-left:auto;margin-right:auto}.jGrowl-notification{background-color:#000;opacity:.9;-ms-filter:alpha(90);filter:alpha(90);zoom:1;width:250px;padding:10px;margin:10px;text-align:left;display:none;border-radius:5px;min-height:40px}.jGrowl-notification .ui-state-highlight,.jGrowl-notification .ui-widget-content .ui-state-highlight,.jGrowl-notification .ui-widget-header .ui-state-highlight{border:1px solid #000;background:#000;color:#fff}.jGrowl-notification .jGrowl-header{font-weight:700;font-size:.85em}.jGrowl-notification .jGrowl-close{background-color:transparent;color:inherit;border:none;z-index:99;float:right;font-weight:700;font-size:1em;cursor:pointer}.jGrowl-closer{background-color:#000;opacity:.9;-ms-filter:alpha(90);filter:alpha(90);zoom:1;width:250px;padding:10px;margin:10px;display:none;border-radius:5px;padding-top:4px;padding-bottom:4px;cursor:pointer;font-size:.9em;font-weight:700;text-align:center}.jGrowl-closer .ui-state-highlight,.jGrowl-closer .ui-widget-content .ui-state-highlight,.jGrowl-closer .ui-widget-header .ui-state-highlight{border:1px solid #000;background:#000;color:#fff}@media print{.jGrowl{display:none}} \ No newline at end of file
diff --git a/library/jgrowl/jquery.jgrowl_minimized.js b/library/jgrowl/jquery.jgrowl_minimized.js
index 782898098..7e8b6fb35 100644
--- a/library/jgrowl/jquery.jgrowl_minimized.js
+++ b/library/jgrowl/jquery.jgrowl_minimized.js
@@ -1,11 +1,2 @@
-(function($){$.jGrowl=function(m,o){if($('#jGrowl').size()==0)
-$('<div id="jGrowl"></div>').addClass((o&&o.position)?o.position:$.jGrowl.defaults.position).appendTo('body');$('#jGrowl').jGrowl(m,o);};$.fn.jGrowl=function(m,o){if($.isFunction(this.each)){var args=arguments;return this.each(function(){var self=this;if($(this).data('jGrowl.instance')==undefined){$(this).data('jGrowl.instance',$.extend(new $.fn.jGrowl(),{notifications:[],element:null,interval:null}));$(this).data('jGrowl.instance').startup(this);}
-if($.isFunction($(this).data('jGrowl.instance')[m])){$(this).data('jGrowl.instance')[m].apply($(this).data('jGrowl.instance'),$.makeArray(args).slice(1));}else{$(this).data('jGrowl.instance').create(m,o);}});};};$.extend($.fn.jGrowl.prototype,{defaults:{pool:0,header:'',group:'',sticky:false,position:'top-right',glue:'after',theme:'default',themeState:'highlight',corners:'10px',check:250,life:3000,closeDuration:'normal',openDuration:'normal',easing:'swing',closer:true,closeTemplate:'&times;',closerTemplate:'<div>[ close all ]</div>',log:function(e,m,o){},beforeOpen:function(e,m,o){},afterOpen:function(e,m,o){},open:function(e,m,o){},beforeClose:function(e,m,o){},close:function(e,m,o){},animateOpen:{opacity:'show'},animateClose:{opacity:'hide'}},notifications:[],element:null,interval:null,create:function(message,o){var o=$.extend({},this.defaults,o);if(typeof o.speed!=='undefined'){o.openDuration=o.speed;o.closeDuration=o.speed;}
-this.notifications.push({message:message,options:o});o.log.apply(this.element,[this.element,message,o]);},render:function(notification){var self=this;var message=notification.message;var o=notification.options;var notification=$('<div class="jGrowl-notification '+o.themeState+' ui-corner-all'+
-((o.group!=undefined&&o.group!='')?' '+o.group:'')+'">'+'<div class="jGrowl-close">'+o.closeTemplate+'</div>'+'<div class="jGrowl-header">'+o.header+'</div>'+'<div class="jGrowl-message">'+message+'</div></div>').data("jGrowl",o).addClass(o.theme).children('div.jGrowl-close').bind("click.jGrowl",function(){$(this).parent().trigger('jGrowl.close');}).parent();$(notification).bind("mouseover.jGrowl",function(){$('div.jGrowl-notification',self.element).data("jGrowl.pause",true);}).bind("mouseout.jGrowl",function(){$('div.jGrowl-notification',self.element).data("jGrowl.pause",false);}).bind('jGrowl.beforeOpen',function(){if(o.beforeOpen.apply(notification,[notification,message,o,self.element])!=false){$(this).trigger('jGrowl.open');}}).bind('jGrowl.open',function(){if(o.open.apply(notification,[notification,message,o,self.element])!=false){if(o.glue=='after'){$('div.jGrowl-notification:last',self.element).after(notification);}else{$('div.jGrowl-notification:first',self.element).before(notification);}
-$(this).animate(o.animateOpen,o.openDuration,o.easing,function(){if($.browser.msie&&(parseInt($(this).css('opacity'),10)===1||parseInt($(this).css('opacity'),10)===0))
-this.style.removeAttribute('filter');if($(this).data("jGrowl")!=null)
-$(this).data("jGrowl").created=new Date();$(this).trigger('jGrowl.afterOpen');});}}).bind('jGrowl.afterOpen',function(){o.afterOpen.apply(notification,[notification,message,o,self.element]);}).bind('jGrowl.beforeClose',function(){if(o.beforeClose.apply(notification,[notification,message,o,self.element])!=false)
-$(this).trigger('jGrowl.close');}).bind('jGrowl.close',function(){$(this).data('jGrowl.pause',true);$(this).animate(o.animateClose,o.closeDuration,o.easing,function(){if($.isFunction(o.close)){if(o.close.apply(notification,[notification,message,o,self.element])!==false)
-$(this).remove();}else{$(this).remove();}});}).trigger('jGrowl.beforeOpen');if(o.corners!=''&&$.fn.corner!=undefined)$(notification).corner(o.corners);if($('div.jGrowl-notification:parent',self.element).size()>1&&$('div.jGrowl-closer',self.element).size()==0&&this.defaults.closer!=false){$(this.defaults.closerTemplate).addClass('jGrowl-closer ui-state-highlight ui-corner-all').addClass(this.defaults.theme).appendTo(self.element).animate(this.defaults.animateOpen,this.defaults.speed,this.defaults.easing).bind("click.jGrowl",function(){$(this).siblings().trigger("jGrowl.beforeClose");if($.isFunction(self.defaults.closer)){self.defaults.closer.apply($(this).parent()[0],[$(this).parent()[0]]);}});};},update:function(){$(this.element).find('div.jGrowl-notification:parent').each(function(){if($(this).data("jGrowl")!=undefined&&$(this).data("jGrowl").created!=undefined&&($(this).data("jGrowl").created.getTime()+parseInt($(this).data("jGrowl").life))<(new Date()).getTime()&&$(this).data("jGrowl").sticky!=true&&($(this).data("jGrowl.pause")==undefined||$(this).data("jGrowl.pause")!=true)){$(this).trigger('jGrowl.beforeClose');}});if(this.notifications.length>0&&(this.defaults.pool==0||$(this.element).find('div.jGrowl-notification:parent').size()<this.defaults.pool))
-this.render(this.notifications.shift());if($(this.element).find('div.jGrowl-notification:parent').size()<2){$(this.element).find('div.jGrowl-closer').animate(this.defaults.animateClose,this.defaults.speed,this.defaults.easing,function(){$(this).remove();});}},startup:function(e){this.element=$(e).addClass('jGrowl').append('<div class="jGrowl-notification"></div>');this.interval=setInterval(function(){$(e).data('jGrowl.instance').update();},parseInt(this.defaults.check));if($.browser.msie&&parseInt($.browser.version)<7&&!window["XMLHttpRequest"]){$(this.element).addClass('ie6');}},shutdown:function(){$(this.element).removeClass('jGrowl').find('div.jGrowl-notification').remove();clearInterval(this.interval);},close:function(){$(this.element).find('div.jGrowl-notification').each(function(){$(this).trigger('jGrowl.beforeClose');});}});$.jGrowl.defaults=$.fn.jGrowl.prototype.defaults;})(jQuery); \ No newline at end of file
+!function(a){a.jGrowl=function(b,c){0===a("#jGrowl").length&&a('<div id="jGrowl"></div>').addClass(c&&c.position?c.position:a.jGrowl.defaults.position).appendTo(c&&c.appendTo?c.appendTo:a.jGrowl.defaults.appendTo),a("#jGrowl").jGrowl(b,c)},a.fn.jGrowl=function(b,c){if(void 0===c&&a.isPlainObject(b)&&(c=b,b=c.message),a.isFunction(this.each)){var d=arguments;return this.each(function(){void 0===a(this).data("jGrowl.instance")&&(a(this).data("jGrowl.instance",a.extend(new a.fn.jGrowl,{notifications:[],element:null,interval:null})),a(this).data("jGrowl.instance").startup(this)),a.isFunction(a(this).data("jGrowl.instance")[b])?a(this).data("jGrowl.instance")[b].apply(a(this).data("jGrowl.instance"),a.makeArray(d).slice(1)):a(this).data("jGrowl.instance").create(b,c)})}},a.extend(a.fn.jGrowl.prototype,{defaults:{pool:0,header:"",group:"",sticky:!1,position:"top-right",appendTo:"body",glue:"after",theme:"default",themeState:"highlight",corners:"10px",check:250,life:3e3,closeDuration:"normal",openDuration:"normal",easing:"swing",closer:!0,closeTemplate:"&times;",closerTemplate:"<div>[ close all ]</div>",log:function(){},beforeOpen:function(){},afterOpen:function(){},open:function(){},beforeClose:function(){},close:function(){},click:function(){},animateOpen:{opacity:"show"},animateClose:{opacity:"hide"}},notifications:[],element:null,interval:null,create:function(b,c){var d=a.extend({},this.defaults,c);"undefined"!=typeof d.speed&&(d.openDuration=d.speed,d.closeDuration=d.speed),this.notifications.push({message:b,options:d}),d.log.apply(this.element,[this.element,b,d])},render:function(b){var c=this,d=b.message,e=b.options;e.themeState=""===e.themeState?"":"ui-state-"+e.themeState;var f=a("<div/>").addClass("jGrowl-notification alert "+e.themeState+" ui-corner-all"+(void 0!==e.group&&""!==e.group?" "+e.group:"")).append(a("<button/>").addClass("jGrowl-close").html(e.closeTemplate)).append(a("<div/>").addClass("jGrowl-header").html(e.header)).append(a("<div/>").addClass("jGrowl-message").html(d)).data("jGrowl",e).addClass(e.theme).children(".jGrowl-close").bind("click.jGrowl",function(){return a(this).parent().trigger("jGrowl.beforeClose"),!1}).parent();a(f).bind("mouseover.jGrowl",function(){a(".jGrowl-notification",c.element).data("jGrowl.pause",!0)}).bind("mouseout.jGrowl",function(){a(".jGrowl-notification",c.element).data("jGrowl.pause",!1)}).bind("jGrowl.beforeOpen",function(){e.beforeOpen.apply(f,[f,d,e,c.element])!==!1&&a(this).trigger("jGrowl.open")}).bind("jGrowl.open",function(){e.open.apply(f,[f,d,e,c.element])!==!1&&("after"==e.glue?a(".jGrowl-notification:last",c.element).after(f):a(".jGrowl-notification:first",c.element).before(f),a(this).animate(e.animateOpen,e.openDuration,e.easing,function(){a.support.opacity===!1&&this.style.removeAttribute("filter"),null!==a(this).data("jGrowl")&&"undefined"!=typeof a(this).data("jGrowl")&&(a(this).data("jGrowl").created=new Date),a(this).trigger("jGrowl.afterOpen")}))}).bind("jGrowl.afterOpen",function(){e.afterOpen.apply(f,[f,d,e,c.element])}).bind("click",function(){e.click.apply(f,[f.message,e,c.element])}).bind("jGrowl.beforeClose",function(){e.beforeClose.apply(f,[f,d,e,c.element])!==!1&&a(this).trigger("jGrowl.close")}).bind("jGrowl.close",function(){a(this).data("jGrowl.pause",!0),a(this).animate(e.animateClose,e.closeDuration,e.easing,function(){a.isFunction(e.close)?e.close.apply(f,[f,d,e,c.element])!==!1&&a(this).remove():a(this).remove()})}).trigger("jGrowl.beforeOpen"),""!==e.corners&&void 0!==a.fn.corner&&a(f).corner(e.corners),a(".jGrowl-notification:parent",c.element).length>1&&0===a(".jGrowl-closer",c.element).length&&this.defaults.closer!==!1&&a(this.defaults.closerTemplate).addClass("jGrowl-closer "+this.defaults.themeState+" ui-corner-all").addClass(this.defaults.theme).appendTo(c.element).animate(this.defaults.animateOpen,this.defaults.speed,this.defaults.easing).bind("click.jGrowl",function(){a(this).siblings().trigger("jGrowl.beforeClose"),a.isFunction(c.defaults.closer)&&c.defaults.closer.apply(a(this).parent()[0],[a(this).parent()[0]])})},update:function(){a(this.element).find(".jGrowl-notification:parent").each(function(){void 0!==a(this).data("jGrowl")&&void 0!==a(this).data("jGrowl").created&&a(this).data("jGrowl").created.getTime()+parseInt(a(this).data("jGrowl").life,10)<(new Date).getTime()&&a(this).data("jGrowl").sticky!==!0&&(void 0===a(this).data("jGrowl.pause")||a(this).data("jGrowl.pause")!==!0)&&a(this).trigger("jGrowl.beforeClose")}),this.notifications.length>0&&(0===this.defaults.pool||a(this.element).find(".jGrowl-notification:parent").length<this.defaults.pool)&&this.render(this.notifications.shift()),a(this.element).find(".jGrowl-notification:parent").length<2&&a(this.element).find(".jGrowl-closer").animate(this.defaults.animateClose,this.defaults.speed,this.defaults.easing,function(){a(this).remove()})},startup:function(b){this.element=a(b).addClass("jGrowl").append('<div class="jGrowl-notification"></div>'),this.interval=setInterval(function(){a(b).data("jGrowl.instance").update()},parseInt(this.defaults.check,10))},shutdown:function(){a(this.element).removeClass("jGrowl").find(".jGrowl-notification").trigger("jGrowl.close").parent().empty(),clearInterval(this.interval)},close:function(){a(this.element).find(".jGrowl-notification").each(function(){a(this).trigger("jGrowl.beforeClose")})}}),a.jGrowl.defaults=a.fn.jGrowl.prototype.defaults}(jQuery);
+//# sourceMappingURL=jquery.jgrowl.map \ No newline at end of file
diff --git a/library/jquery-textcomplete/LICENSE b/library/jquery-textcomplete/LICENSE
new file mode 100644
index 000000000..4848bd637
--- /dev/null
+++ b/library/jquery-textcomplete/LICENSE
@@ -0,0 +1,21 @@
+The MIT License (MIT)
+
+Copyright (c) 2013-2014 Yuku Takahashi
+
+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/library/jquery-textcomplete/jquery.textcomplete.js b/library/jquery-textcomplete/jquery.textcomplete.js
new file mode 100644
index 000000000..1e61683ea
--- /dev/null
+++ b/library/jquery-textcomplete/jquery.textcomplete.js
@@ -0,0 +1,1088 @@
+/*!
+ * jQuery.textcomplete
+ *
+ * Repository: https://github.com/yuku-t/jquery-textcomplete
+ * License: MIT (https://github.com/yuku-t/jquery-textcomplete/blob/master/LICENSE)
+ * Author: Yuku Takahashi
+ */
+
+if (typeof jQuery === 'undefined') {
+ throw new Error('jQuery.textcomplete requires jQuery');
+}
+
++function ($) {
+ 'use strict';
+
+ var warn = function (message) {
+ if (console.warn) { console.warn(message); }
+ };
+
+ $.fn.textcomplete = function (strategies, option) {
+ var args = Array.prototype.slice.call(arguments);
+ return this.each(function () {
+ var $this = $(this);
+ var completer = $this.data('textComplete');
+ if (!completer) {
+ completer = new $.fn.textcomplete.Completer(this, option || {});
+ $this.data('textComplete', completer);
+ }
+ if (typeof strategies === 'string') {
+ if (!completer) return;
+ args.shift()
+ completer[strategies].apply(completer, args);
+ if (strategies === 'destroy') {
+ $this.removeData('textComplete');
+ }
+ } else {
+ // For backward compatibility.
+ // TODO: Remove at v0.4
+ $.each(strategies, function (obj) {
+ $.each(['header', 'footer', 'placement', 'maxCount'], function (name) {
+ if (obj[name]) {
+ completer.option[name] = obj[name];
+ warn(name + 'as a strategy param is deprecated. Use option.');
+ delete obj[name];
+ }
+ });
+ });
+ completer.register($.fn.textcomplete.Strategy.parse(strategies));
+ }
+ });
+ };
+
+}(jQuery);
+
++function ($) {
+ 'use strict';
+
+ // Exclusive execution control utility.
+ //
+ // func - The function to be locked. It is executed with a function named
+ // `free` as the first argument. Once it is called, additional
+ // execution are ignored until the free is invoked. Then the last
+ // ignored execution will be replayed immediately.
+ //
+ // Examples
+ //
+ // var lockedFunc = lock(function (free) {
+ // setTimeout(function { free(); }, 1000); // It will be free in 1 sec.
+ // console.log('Hello, world');
+ // });
+ // lockedFunc(); // => 'Hello, world'
+ // lockedFunc(); // none
+ // lockedFunc(); // none
+ // // 1 sec past then
+ // // => 'Hello, world'
+ // lockedFunc(); // => 'Hello, world'
+ // lockedFunc(); // none
+ //
+ // Returns a wrapped function.
+ var lock = function (func) {
+ var locked, queuedArgsToReplay;
+
+ return function () {
+ // Convert arguments into a real array.
+ var args = Array.prototype.slice.call(arguments);
+ if (locked) {
+ // Keep a copy of this argument list to replay later.
+ // OK to overwrite a previous value because we only replay
+ // the last one.
+ queuedArgsToReplay = args;
+ return;
+ }
+ locked = true;
+ var self = this;
+ args.unshift(function replayOrFree() {
+ if (queuedArgsToReplay) {
+ // Other request(s) arrived while we were locked.
+ // Now that the lock is becoming available, replay
+ // the latest such request, then call back here to
+ // unlock (or replay another request that arrived
+ // while this one was in flight).
+ var replayArgs = queuedArgsToReplay;
+ queuedArgsToReplay = undefined;
+ replayArgs.unshift(replayOrFree);
+ func.apply(self, replayArgs);
+ } else {
+ locked = false;
+ }
+ });
+ func.apply(this, args);
+ };
+ };
+
+ var isString = function (obj) {
+ return Object.prototype.toString.call(obj) === '[object String]';
+ };
+
+ var uniqueId = 0;
+
+ function Completer(element, option) {
+ this.$el = $(element);
+ this.id = 'textcomplete' + uniqueId++;
+ this.strategies = [];
+ this.views = [];
+ this.option = $.extend({}, Completer._getDefaults(), option);
+
+ if (!this.$el.is('textarea') && !element.isContentEditable && element.contentEditable != 'true') {
+ throw new Error('textcomplete must be called on a Textarea or a ContentEditable.');
+ }
+
+ if (element === document.activeElement) {
+ // element has already been focused. Initialize view objects immediately.
+ this.initialize()
+ } else {
+ // Initialize view objects lazily.
+ var self = this;
+ this.$el.one('focus.' + this.id, function () { self.initialize(); });
+ }
+ }
+
+ Completer._getDefaults = function () {
+ if (!Completer.DEFAULTS) {
+ Completer.DEFAULTS = {
+ appendTo: $('body'),
+ zIndex: '100'
+ };
+ }
+
+ return Completer.DEFAULTS;
+ }
+
+ $.extend(Completer.prototype, {
+ // Public properties
+ // -----------------
+
+ id: null,
+ option: null,
+ strategies: null,
+ adapter: null,
+ dropdown: null,
+ $el: null,
+
+ // Public methods
+ // --------------
+
+ initialize: function () {
+ var element = this.$el.get(0);
+ // Initialize view objects.
+ this.dropdown = new $.fn.textcomplete.Dropdown(element, this, this.option);
+ var Adapter, viewName;
+ if (this.option.adapter) {
+ Adapter = this.option.adapter;
+ } else {
+ if (this.$el.is('textarea')) {
+ viewName = typeof element.selectionEnd === 'number' ? 'Textarea' : 'IETextarea';
+ } else {
+ viewName = 'ContentEditable';
+ }
+ Adapter = $.fn.textcomplete[viewName];
+ }
+ this.adapter = new Adapter(element, this, this.option);
+ },
+
+ destroy: function () {
+ this.$el.off('.' + this.id);
+ if (this.adapter) {
+ this.adapter.destroy();
+ }
+ if (this.dropdown) {
+ this.dropdown.destroy();
+ }
+ this.$el = this.adapter = this.dropdown = null;
+ },
+
+ // Invoke textcomplete.
+ trigger: function (text, skipUnchangedTerm) {
+ if (!this.dropdown) { this.initialize(); }
+ text != null || (text = this.adapter.getTextFromHeadToCaret());
+ var searchQuery = this._extractSearchQuery(text);
+ if (searchQuery.length) {
+ var term = searchQuery[1];
+ // Ignore shift-key, ctrl-key and so on.
+ if (skipUnchangedTerm && this._term === term) { return; }
+ this._term = term;
+ this._search.apply(this, searchQuery);
+ } else {
+ this._term = null;
+ this.dropdown.deactivate();
+ }
+ },
+
+ fire: function (eventName) {
+ var args = Array.prototype.slice.call(arguments, 1);
+ this.$el.trigger(eventName, args);
+ return this;
+ },
+
+ register: function (strategies) {
+ Array.prototype.push.apply(this.strategies, strategies);
+ },
+
+ // Insert the value into adapter view. It is called when the dropdown is clicked
+ // or selected.
+ //
+ // value - The selected element of the array callbacked from search func.
+ // strategy - The Strategy object.
+ select: function (value, strategy) {
+ this.adapter.select(value, strategy);
+ this.fire('change').fire('textComplete:select', value, strategy);
+ this.adapter.focus();
+ },
+
+ // Private properties
+ // ------------------
+
+ _clearAtNext: true,
+ _term: null,
+
+ // Private methods
+ // ---------------
+
+ // Parse the given text and extract the first matching strategy.
+ //
+ // Returns an array including the strategy, the query term and the match
+ // object if the text matches an strategy; otherwise returns an empty array.
+ _extractSearchQuery: function (text) {
+ for (var i = 0; i < this.strategies.length; i++) {
+ var strategy = this.strategies[i];
+ var context = strategy.context(text);
+ if (context || context === '') {
+ if (isString(context)) { text = context; }
+ var match = text.match(strategy.match);
+ if (match) { return [strategy, match[strategy.index], match]; }
+ }
+ }
+ return []
+ },
+
+ // Call the search method of selected strategy..
+ _search: lock(function (free, strategy, term, match) {
+ var self = this;
+ strategy.search(term, function (data, stillSearching) {
+ if (!self.dropdown.shown) {
+ self.dropdown.activate();
+ self.dropdown.setPosition(self.adapter.getCaretPosition());
+ }
+ if (self._clearAtNext) {
+ // The first callback in the current lock.
+ self.dropdown.clear();
+ self._clearAtNext = false;
+ }
+ self.dropdown.render(self._zip(data, strategy));
+ if (!stillSearching) {
+ // The last callback in the current lock.
+ free();
+ self._clearAtNext = true; // Call dropdown.clear at the next time.
+ }
+ }, match);
+ }),
+
+ // Build a parameter for Dropdown#render.
+ //
+ // Examples
+ //
+ // this._zip(['a', 'b'], 's');
+ // //=> [{ value: 'a', strategy: 's' }, { value: 'b', strategy: 's' }]
+ _zip: function (data, strategy) {
+ return $.map(data, function (value) {
+ return { value: value, strategy: strategy };
+ });
+ }
+ });
+
+ $.fn.textcomplete.Completer = Completer;
+}(jQuery);
+
++function ($) {
+ 'use strict';
+
+ var include = function (zippedData, datum) {
+ var i, elem;
+ var idProperty = datum.strategy.idProperty
+ for (i = 0; i < zippedData.length; i++) {
+ elem = zippedData[i];
+ if (elem.strategy !== datum.strategy) continue;
+ if (idProperty) {
+ if (elem.value[idProperty] === datum.value[idProperty]) return true;
+ } else {
+ if (elem.value === datum.value) return true;
+ }
+ }
+ return false;
+ };
+
+ var dropdownViews = {};
+ $(document).on('click', function (e) {
+ var id = e.originalEvent && e.originalEvent.keepTextCompleteDropdown;
+ $.each(dropdownViews, function (key, view) {
+ if (key !== id) { view.deactivate(); }
+ });
+ });
+
+ // Dropdown view
+ // =============
+
+ // Construct Dropdown object.
+ //
+ // element - Textarea or contenteditable element.
+ function Dropdown(element, completer, option) {
+ this.$el = Dropdown.findOrCreateElement(option);
+ this.completer = completer;
+ this.id = completer.id + 'dropdown';
+ this._data = []; // zipped data.
+ this.$inputEl = $(element);
+ this.option = option;
+
+ // Override setPosition method.
+ if (option.listPosition) { this.setPosition = option.listPosition; }
+ if (option.height) { this.$el.height(option.height); }
+ var self = this;
+ $.each(['maxCount', 'placement', 'footer', 'header', 'className'], function (_i, name) {
+ if (option[name] != null) { self[name] = option[name]; }
+ });
+ this._bindEvents(element);
+ dropdownViews[this.id] = this;
+ }
+
+ $.extend(Dropdown, {
+ // Class methods
+ // -------------
+
+ findOrCreateElement: function (option) {
+ var $parent = option.appendTo;
+ if (!($parent instanceof $)) { $parent = $($parent); }
+ var $el = $parent.children('.dropdown-menu')
+ if (!$el.length) {
+ $el = $('<ul class="dropdown-menu"></ul>').css({
+ display: 'none',
+ left: 0,
+ position: 'absolute',
+ zIndex: option.zIndex
+ }).appendTo($parent);
+ }
+ return $el;
+ }
+ });
+
+ $.extend(Dropdown.prototype, {
+ // Public properties
+ // -----------------
+
+ $el: null, // jQuery object of ul.dropdown-menu element.
+ $inputEl: null, // jQuery object of target textarea.
+ completer: null,
+ footer: null,
+ header: null,
+ id: null,
+ maxCount: 10,
+ placement: '',
+ shown: false,
+ data: [], // Shown zipped data.
+ className: '',
+
+ // Public methods
+ // --------------
+
+ destroy: function () {
+ // Don't remove $el because it may be shared by several textcompletes.
+ this.deactivate();
+
+ this.$el.off('.' + this.id);
+ this.$inputEl.off('.' + this.id);
+ this.clear();
+ this.$el = this.$inputEl = this.completer = null;
+ delete dropdownViews[this.id]
+ },
+
+ render: function (zippedData) {
+ var contentsHtml = this._buildContents(zippedData);
+ var unzippedData = $.map(this.data, function (d) { return d.value; });
+ if (this.data.length) {
+ this._renderHeader(unzippedData);
+ this._renderFooter(unzippedData);
+ if (contentsHtml) {
+ this._renderContents(contentsHtml);
+ this._activateIndexedItem();
+ }
+ this._setScroll();
+ } else if (this.shown) {
+ this.deactivate();
+ }
+ },
+
+ setPosition: function (position) {
+ this.$el.css(this._applyPlacement(position));
+ return this;
+ },
+
+ clear: function () {
+ this.$el.html('');
+ this.data = [];
+ this._index = 0;
+ this._$header = this._$footer = null;
+ },
+
+ activate: function () {
+ if (!this.shown) {
+ this.clear();
+ this.$el.show();
+ if (this.className) { this.$el.addClass(this.className); }
+ this.completer.fire('textComplete:show');
+ this.shown = true;
+ }
+ return this;
+ },
+
+ deactivate: function () {
+ if (this.shown) {
+ this.$el.hide();
+ if (this.className) { this.$el.removeClass(this.className); }
+ this.completer.fire('textComplete:hide');
+ this.shown = false;
+ }
+ return this;
+ },
+
+ isUp: function (e) {
+ return e.keyCode === 38 || (e.ctrlKey && e.keyCode === 80); // UP, Ctrl-P
+ },
+
+ isDown: function (e) {
+ return e.keyCode === 40 || (e.ctrlKey && e.keyCode === 78); // DOWN, Ctrl-N
+ },
+
+ isEnter: function (e) {
+ var modifiers = e.ctrlKey || e.altKey || e.metaKey || e.shiftKey;
+ return !modifiers && (e.keyCode === 13 || e.keyCode === 9 || (this.option.completeOnSpace === true && e.keyCode === 32)) // ENTER, TAB
+ },
+
+ isPageup: function (e) {
+ return e.keyCode === 33; // PAGEUP
+ },
+
+ isPagedown: function (e) {
+ return e.keyCode === 34; // PAGEDOWN
+ },
+
+ // Private properties
+ // ------------------
+
+ _data: null, // Currently shown zipped data.
+ _index: null,
+ _$header: null,
+ _$footer: null,
+
+ // Private methods
+ // ---------------
+
+ _bindEvents: function () {
+ this.$el.on('mousedown.' + this.id, '.textcomplete-item', $.proxy(this._onClick, this))
+ this.$el.on('mouseover.' + this.id, '.textcomplete-item', $.proxy(this._onMouseover, this));
+ this.$inputEl.on('keydown.' + this.id, $.proxy(this._onKeydown, this));
+ },
+
+ _onClick: function (e) {
+ var $el = $(e.target);
+ e.preventDefault();
+ e.originalEvent.keepTextCompleteDropdown = this.id;
+ if (!$el.hasClass('textcomplete-item')) {
+ $el = $el.closest('.textcomplete-item');
+ }
+ var datum = this.data[parseInt($el.data('index'), 10)];
+ this.completer.select(datum.value, datum.strategy);
+ var self = this;
+ // Deactive at next tick to allow other event handlers to know whether
+ // the dropdown has been shown or not.
+ setTimeout(function () { self.deactivate(); }, 0);
+ },
+
+ // Activate hovered item.
+ _onMouseover: function (e) {
+ var $el = $(e.target);
+ e.preventDefault();
+ if (!$el.hasClass('textcomplete-item')) {
+ $el = $el.closest('.textcomplete-item');
+ }
+ this._index = parseInt($el.data('index'), 10);
+ this._activateIndexedItem();
+ },
+
+ _onKeydown: function (e) {
+ if (!this.shown) { return; }
+ if (this.isUp(e)) {
+ e.preventDefault();
+ this._up();
+ } else if (this.isDown(e)) {
+ e.preventDefault();
+ this._down();
+ } else if (this.isEnter(e)) {
+ e.preventDefault();
+ this._enter();
+ } else if (this.isPageup(e)) {
+ e.preventDefault();
+ this._pageup();
+ } else if (this.isPagedown(e)) {
+ e.preventDefault();
+ this._pagedown();
+ }
+ },
+
+ _up: function () {
+ if (this._index === 0) {
+ this._index = this.data.length - 1;
+ } else {
+ this._index -= 1;
+ }
+ this._activateIndexedItem();
+ this._setScroll();
+ },
+
+ _down: function () {
+ if (this._index === this.data.length - 1) {
+ this._index = 0;
+ } else {
+ this._index += 1;
+ }
+ this._activateIndexedItem();
+ this._setScroll();
+ },
+
+ _enter: function () {
+ var datum = this.data[parseInt(this._getActiveElement().data('index'), 10)];
+ this.completer.select(datum.value, datum.strategy);
+ this._setScroll();
+ },
+
+ _pageup: function () {
+ var target = 0;
+ var threshold = this._getActiveElement().position().top - this.$el.innerHeight();
+ this.$el.children().each(function (i) {
+ if ($(this).position().top + $(this).outerHeight() > threshold) {
+ target = i;
+ return false;
+ }
+ });
+ this._index = target;
+ this._activateIndexedItem();
+ this._setScroll();
+ },
+
+ _pagedown: function () {
+ var target = this.data.length - 1;
+ var threshold = this._getActiveElement().position().top + this.$el.innerHeight();
+ this.$el.children().each(function (i) {
+ if ($(this).position().top > threshold) {
+ target = i;
+ return false
+ }
+ });
+ this._index = target;
+ this._activateIndexedItem();
+ this._setScroll();
+ },
+
+ _activateIndexedItem: function () {
+ this.$el.find('.textcomplete-item.active').removeClass('active');
+ this._getActiveElement().addClass('active');
+ },
+
+ _getActiveElement: function () {
+ return this.$el.children('.textcomplete-item:nth(' + this._index + ')');
+ },
+
+ _setScroll: function () {
+ var $activeEl = this._getActiveElement();
+ var itemTop = $activeEl.position().top;
+ var itemHeight = $activeEl.outerHeight();
+ var visibleHeight = this.$el.innerHeight();
+ var visibleTop = this.$el.scrollTop();
+ if (this._index === 0 || this._index == this.data.length - 1 || itemTop < 0) {
+ this.$el.scrollTop(itemTop + visibleTop);
+ } else if (itemTop + itemHeight > visibleHeight) {
+ this.$el.scrollTop(itemTop + itemHeight + visibleTop - visibleHeight);
+ }
+ },
+
+ _buildContents: function (zippedData) {
+ var datum, i, index;
+ var html = '';
+ for (i = 0; i < zippedData.length; i++) {
+ if (this.data.length === this.maxCount) break;
+ datum = zippedData[i];
+ if (include(this.data, datum)) { continue; }
+ index = this.data.length;
+ this.data.push(datum);
+ html += '<li class="textcomplete-item" data-index="' + index + '"><a>';
+ html += datum.strategy.template(datum.value);
+ html += '</a></li>';
+ }
+ return html;
+ },
+
+ _renderHeader: function (unzippedData) {
+ if (this.header) {
+ if (!this._$header) {
+ this._$header = $('<li class="textcomplete-header"></li>').prependTo(this.$el);
+ }
+ var html = $.isFunction(this.header) ? this.header(unzippedData) : this.header;
+ this._$header.html(html);
+ }
+ },
+
+ _renderFooter: function (unzippedData) {
+ if (this.footer) {
+ if (!this._$footer) {
+ this._$footer = $('<li class="textcomplete-footer"></li>').appendTo(this.$el);
+ }
+ var html = $.isFunction(this.footer) ? this.footer(unzippedData) : this.footer;
+ this._$footer.html(html);
+ }
+ },
+
+ _renderContents: function (html) {
+ if (this._$footer) {
+ this._$footer.before(html);
+ } else {
+ this.$el.append(html);
+ }
+ },
+
+ _applyPlacement: function (position) {
+ // If the 'placement' option set to 'top', move the position above the element.
+ if (this.placement.indexOf('top') !== -1) {
+ // Overwrite the position object to set the 'bottom' property instead of the top.
+ position = {
+ top: 'auto',
+ bottom: this.$el.parent().height() - position.top + position.lineHeight,
+ left: position.left
+ };
+ } else {
+ position.bottom = 'auto';
+ delete position.lineHeight;
+ }
+ if (this.placement.indexOf('absleft') !== -1) {
+ position.left = 0;
+ } else if (this.placement.indexOf('absright') !== -1) {
+ position.right = 0;
+ position.left = 'auto';
+ }
+ return position;
+ }
+ });
+
+ $.fn.textcomplete.Dropdown = Dropdown;
+}(jQuery);
+
++function ($) {
+ 'use strict';
+
+ // Memoize a search function.
+ var memoize = function (func) {
+ var memo = {};
+ return function (term, callback) {
+ if (memo[term]) {
+ callback(memo[term]);
+ } else {
+ func.call(this, term, function (data) {
+ memo[term] = (memo[term] || []).concat(data);
+ callback.apply(null, arguments);
+ });
+ }
+ };
+ };
+
+ function Strategy(options) {
+ $.extend(this, options);
+ if (this.cache) { this.search = memoize(this.search); }
+ }
+
+ Strategy.parse = function (optionsArray) {
+ return $.map(optionsArray, function (options) {
+ return new Strategy(options);
+ });
+ };
+
+ $.extend(Strategy.prototype, {
+ // Public properties
+ // -----------------
+
+ // Required
+ match: null,
+ replace: null,
+ search: null,
+
+ // Optional
+ cache: false,
+ context: function () { return true; },
+ index: 2,
+ template: function (obj) { return obj; },
+ idProperty: null
+ });
+
+ $.fn.textcomplete.Strategy = Strategy;
+
+}(jQuery);
+
++function ($) {
+ 'use strict';
+
+ var now = Date.now || function () { return new Date().getTime(); };
+
+ // Returns a function, that, as long as it continues to be invoked, will not
+ // be triggered. The function will be called after it stops being called for
+ // `wait` msec.
+ //
+ // This utility function was originally implemented at Underscore.js.
+ var debounce = function (func, wait) {
+ var timeout, args, context, timestamp, result;
+ var later = function () {
+ var last = now() - timestamp;
+ if (last < wait) {
+ timeout = setTimeout(later, wait - last);
+ } else {
+ timeout = null;
+ result = func.apply(context, args);
+ context = args = null;
+ }
+ };
+
+ return function () {
+ context = this;
+ args = arguments;
+ timestamp = now();
+ if (!timeout) {
+ timeout = setTimeout(later, wait);
+ }
+ return result;
+ };
+ };
+
+ function Adapter () {}
+
+ $.extend(Adapter.prototype, {
+ // Public properties
+ // -----------------
+
+ id: null, // Identity.
+ completer: null, // Completer object which creates it.
+ el: null, // Textarea element.
+ $el: null, // jQuery object of the textarea.
+ option: null,
+
+ // Public methods
+ // --------------
+
+ initialize: function (element, completer, option) {
+ this.el = element;
+ this.$el = $(element);
+ this.id = completer.id + this.constructor.name;
+ this.completer = completer;
+ this.option = option;
+
+ if (this.option.debounce) {
+ this._onKeyup = debounce(this._onKeyup, this.option.debounce);
+ }
+
+ this._bindEvents();
+ },
+
+ destroy: function () {
+ this.$el.off('.' + this.id); // Remove all event handlers.
+ this.$el = this.el = this.completer = null;
+ },
+
+ // Update the element with the given value and strategy.
+ //
+ // value - The selected object. It is one of the item of the array
+ // which was callbacked from the search function.
+ // strategy - The Strategy associated with the selected value.
+ select: function (/* value, strategy */) {
+ throw new Error('Not implemented');
+ },
+
+ // Returns the caret's relative coordinates from body's left top corner.
+ //
+ // FIXME: Calculate the left top corner of `this.option.appendTo` element.
+ getCaretPosition: function () {
+ var position = this._getCaretRelativePosition();
+ var offset = this.$el.offset();
+ position.top += offset.top;
+ position.left += offset.left;
+ return position;
+ },
+
+ // Focus on the element.
+ focus: function () {
+ this.$el.focus();
+ },
+
+ // Private methods
+ // ---------------
+
+ _bindEvents: function () {
+ this.$el.on('keyup.' + this.id, $.proxy(this._onKeyup, this));
+ },
+
+ _onKeyup: function (e) {
+ if (this._skipSearch(e)) { return; }
+ this.completer.trigger(this.getTextFromHeadToCaret(), true);
+ },
+
+ // Suppress searching if it returns true.
+ _skipSearch: function (clickEvent) {
+ switch (clickEvent.keyCode) {
+ case 40: // DOWN
+ case 38: // UP
+ return true;
+ }
+ if (clickEvent.ctrlKey) switch (clickEvent.keyCode) {
+ case 78: // Ctrl-N
+ case 80: // Ctrl-P
+ return true;
+ }
+ }
+ });
+
+ $.fn.textcomplete.Adapter = Adapter;
+}(jQuery);
+
++function ($) {
+ 'use strict';
+
+ // Textarea adapter
+ // ================
+ //
+ // Managing a textarea. It doesn't know a Dropdown.
+ function Textarea(element, completer, option) {
+ this.initialize(element, completer, option);
+ }
+
+ Textarea.DIV_PROPERTIES = {
+ left: -9999,
+ position: 'absolute',
+ top: 0,
+ whiteSpace: 'pre-wrap'
+ }
+
+ Textarea.COPY_PROPERTIES = [
+ 'border-width', 'font-family', 'font-size', 'font-style', 'font-variant',
+ 'font-weight', 'height', 'letter-spacing', 'word-spacing', 'line-height',
+ 'text-decoration', 'text-align', 'width', 'padding-top', 'padding-right',
+ 'padding-bottom', 'padding-left', 'margin-top', 'margin-right',
+ 'margin-bottom', 'margin-left', 'border-style', 'box-sizing', 'tab-size'
+ ];
+
+ $.extend(Textarea.prototype, $.fn.textcomplete.Adapter.prototype, {
+ // Public methods
+ // --------------
+
+ // Update the textarea with the given value and strategy.
+ select: function (value, strategy) {
+ var pre = this.getTextFromHeadToCaret();
+ var post = this.el.value.substring(this.el.selectionEnd);
+ var newSubstr = strategy.replace(value);
+ if ($.isArray(newSubstr)) {
+ post = newSubstr[1] + post;
+ newSubstr = newSubstr[0];
+ }
+ pre = pre.replace(strategy.match, newSubstr);
+ this.$el.val(pre + post);
+ this.el.selectionStart = this.el.selectionEnd = pre.length;
+ },
+
+ // Private methods
+ // ---------------
+
+ // Returns the caret's relative coordinates from textarea's left top corner.
+ //
+ // Browser native API does not provide the way to know the position of
+ // caret in pixels, so that here we use a kind of hack to accomplish
+ // the aim. First of all it puts a dummy div element and completely copies
+ // the textarea's style to the element, then it inserts the text and a
+ // span element into the textarea.
+ // Consequently, the span element's position is the thing what we want.
+ _getCaretRelativePosition: function () {
+ var dummyDiv = $('<div></div>').css(this._copyCss())
+ .text(this.getTextFromHeadToCaret());
+ var span = $('<span></span>').text('.').appendTo(dummyDiv);
+ this.$el.before(dummyDiv);
+ var position = span.position();
+ position.top += span.height() - this.$el.scrollTop();
+ position.lineHeight = span.height();
+ dummyDiv.remove();
+ return position;
+ },
+
+ _copyCss: function () {
+ return $.extend({
+ // Set 'scroll' if a scrollbar is being shown; otherwise 'auto'.
+ overflow: this.el.scrollHeight > this.el.offsetHeight ? 'scroll' : 'auto'
+ }, Textarea.DIV_PROPERTIES, this._getStyles());
+ },
+
+ _getStyles: (function ($) {
+ var color = $('<div></div>').css(['color']).color;
+ if (typeof color !== 'undefined') {
+ return function () {
+ return this.$el.css(Textarea.COPY_PROPERTIES);
+ };
+ } else { // jQuery < 1.8
+ return function () {
+ var $el = this.$el;
+ var styles = {};
+ $.each(Textarea.COPY_PROPERTIES, function (i, property) {
+ styles[property] = $el.css(property);
+ });
+ return styles;
+ };
+ }
+ })($),
+
+ getTextFromHeadToCaret: function () {
+ return this.el.value.substring(0, this.el.selectionEnd);
+ }
+ });
+
+ $.fn.textcomplete.Textarea = Textarea;
+}(jQuery);
+
++function ($) {
+ 'use strict';
+
+ var sentinelChar = 'å¶';
+
+ function IETextarea(element, completer, option) {
+ this.initialize(element, completer, option);
+ $('<span>' + sentinelChar + '</span>').css({
+ position: 'absolute',
+ top: -9999,
+ left: -9999
+ }).insertBefore(element);
+ }
+
+ $.extend(IETextarea.prototype, $.fn.textcomplete.Textarea.prototype, {
+ // Public methods
+ // --------------
+
+ select: function (value, strategy) {
+ var pre = this.getTextFromHeadToCaret();
+ var post = this.el.value.substring(pre.length);
+ var newSubstr = strategy.replace(value);
+ if ($.isArray(newSubstr)) {
+ post = newSubstr[1] + post;
+ newSubstr = newSubstr[0];
+ }
+ pre = pre.replace(strategy.match, newSubstr);
+ this.$el.val(pre + post);
+ this.el.focus();
+ var range = this.el.createTextRange();
+ range.collapse(true);
+ range.moveEnd('character', pre.length);
+ range.moveStart('character', pre.length);
+ range.select();
+ },
+
+ getTextFromHeadToCaret: function () {
+ this.el.focus();
+ var range = document.selection.createRange();
+ range.moveStart('character', -this.el.value.length);
+ var arr = range.text.split(sentinelChar)
+ return arr.length === 1 ? arr[0] : arr[1];
+ }
+ });
+
+ $.fn.textcomplete.IETextarea = IETextarea;
+}(jQuery);
+
+// NOTE: TextComplete plugin has contenteditable support but it does not work
+// fine especially on old IEs.
+// Any pull requests are REALLY welcome.
+
++function ($) {
+ 'use strict';
+
+ // ContentEditable adapter
+ // =======================
+ //
+ // Adapter for contenteditable elements.
+ function ContentEditable (element, completer, option) {
+ this.initialize(element, completer, option);
+ }
+
+ $.extend(ContentEditable.prototype, $.fn.textcomplete.Adapter.prototype, {
+ // Public methods
+ // --------------
+
+ // Update the content with the given value and strategy.
+ // When an dropdown item is selected, it is executed.
+ select: function (value, strategy) {
+ var pre = this.getTextFromHeadToCaret();
+ var sel = window.getSelection()
+ var range = sel.getRangeAt(0);
+ var selection = range.cloneRange();
+ selection.selectNodeContents(range.startContainer);
+ var content = selection.toString();
+ var post = content.substring(range.startOffset);
+ var newSubstr = strategy.replace(value);
+ if ($.isArray(newSubstr)) {
+ post = newSubstr[1] + post;
+ newSubstr = newSubstr[0];
+ }
+ pre = pre.replace(strategy.match, newSubstr);
+ range.selectNodeContents(range.startContainer);
+ range.deleteContents();
+ var node = document.createTextNode(pre + post);
+ range.insertNode(node);
+ range.setStart(node, pre.length);
+ range.collapse(true);
+ sel.removeAllRanges();
+ sel.addRange(range);
+ },
+
+ // Private methods
+ // ---------------
+
+ // Returns the caret's relative position from the contenteditable's
+ // left top corner.
+ //
+ // Examples
+ //
+ // this._getCaretRelativePosition()
+ // //=> { top: 18, left: 200, lineHeight: 16 }
+ //
+ // Dropdown's position will be decided using the result.
+ _getCaretRelativePosition: function () {
+ var range = window.getSelection().getRangeAt(0).cloneRange();
+ var node = document.createElement('span');
+ range.insertNode(node);
+ range.selectNodeContents(node);
+ range.deleteContents();
+ var $node = $(node);
+ var position = $node.offset();
+ position.left -= this.$el.offset().left;
+ position.top += $node.height() - this.$el.offset().top;
+ position.lineHeight = $node.height();
+ var dir = this.$el.attr('dir') || this.$el.css('direction');
+ if (dir === 'rtl') { position.left -= this.listView.$el.width(); }
+ return position;
+ },
+
+ // Returns the string between the first character and the caret.
+ // Completer will be triggered with the result for start autocompleting.
+ //
+ // Example
+ //
+ // // Suppose the html is '<b>hello</b> wor|ld' and | is the caret.
+ // this.getTextFromHeadToCaret()
+ // // => ' wor' // not '<b>hello</b> wor'
+ getTextFromHeadToCaret: function () {
+ var range = window.getSelection().getRangeAt(0);
+ var selection = range.cloneRange();
+ selection.selectNodeContents(range.startContainer);
+ return selection.toString().substring(0, range.startOffset);
+ }
+ });
+
+ $.fn.textcomplete.ContentEditable = ContentEditable;
+}(jQuery);
diff --git a/library/jquery.AreYouSure/.gitignore b/library/jquery.AreYouSure/.gitignore
new file mode 100644
index 000000000..345f0dbeb
--- /dev/null
+++ b/library/jquery.AreYouSure/.gitignore
@@ -0,0 +1,166 @@
+#################
+## Eclipse
+#################
+
+*.pydevproject
+.project
+.metadata
+bin/
+tmp/
+*.tmp
+*.bak
+*.swp
+*~.nib
+local.properties
+.classpath
+.settings/
+.loadpath
+
+# External tool builders
+.externalToolBuilders/
+
+# Locally stored "Eclipse launch configurations"
+*.launch
+
+# CDT-specific
+.cproject
+
+# PDT-specific
+.buildpath
+
+
+#################
+## Visual Studio
+#################
+
+## Ignore Visual Studio temporary files, build results, and
+## files generated by popular Visual Studio add-ons.
+
+# User-specific files
+*.suo
+*.user
+*.sln.docstates
+
+# Build results
+[Dd]ebug/
+[Rr]elease/
+*_i.c
+*_p.c
+*.ilk
+*.meta
+*.obj
+*.pch
+*.pdb
+*.pgc
+*.pgd
+*.rsp
+*.sbr
+*.tlb
+*.tli
+*.tlh
+*.tmp
+*.vspscc
+.builds
+*.dotCover
+
+## TODO: If you have NuGet Package Restore enabled, uncomment this
+#packages/
+
+# Visual C++ cache files
+ipch/
+*.aps
+*.ncb
+*.opensdf
+*.sdf
+
+# Visual Studio profiler
+*.psess
+*.vsp
+
+# ReSharper is a .NET coding add-in
+_ReSharper*
+
+# Installshield output folder
+[Ee]xpress
+
+# DocProject is a documentation generator add-in
+DocProject/buildhelp/
+DocProject/Help/*.HxT
+DocProject/Help/*.HxC
+DocProject/Help/*.hhc
+DocProject/Help/*.hhk
+DocProject/Help/*.hhp
+DocProject/Help/Html2
+DocProject/Help/html
+
+# Click-Once directory
+publish
+
+# Others
+[Bb]in
+[Oo]bj
+sql
+TestResults
+*.Cache
+ClientBin
+stylecop.*
+~$*
+*.dbmdl
+Generated_Code #added for RIA/Silverlight projects
+
+# Backup & report files from converting an old project file to a newer
+# Visual Studio version. Backup files are not needed, because we have git ;-)
+_UpgradeReport_Files/
+Backup*/
+UpgradeLog*.XML
+
+
+
+############
+## Windows
+############
+
+# Windows image file caches
+Thumbs.db
+
+# Folder config file
+Desktop.ini
+
+
+#############
+## Python
+#############
+
+*.py[co]
+
+# Packages
+*.egg
+*.egg-info
+dist
+build
+eggs
+parts
+bin
+var
+sdist
+develop-eggs
+.installed.cfg
+
+# Installer logs
+pip-log.txt
+
+# Unit test / coverage reports
+.coverage
+.tox
+
+#Translations
+*.mo
+
+#Mr Developer
+.mr.developer.cfg
+
+# Mac crap
+.DS_Store
+
+bower_components/
+node_modules/
diff --git a/library/jquery.AreYouSure/Gruntfile.js b/library/jquery.AreYouSure/Gruntfile.js
new file mode 100644
index 000000000..efca34c0a
--- /dev/null
+++ b/library/jquery.AreYouSure/Gruntfile.js
@@ -0,0 +1,26 @@
+module.exports = function(grunt) {
+ grunt.config.init({
+ karma: {
+ options: {
+ browsers: [ 'Chrome', 'Firefox', 'Safari', 'IE' ],
+ frameworks: [ 'jasmine' ],
+ reportSlowerThan: 500,
+ singleRun: true
+ },
+ unit: {
+ files: [
+ { pattern: 'bower_components/jquery/dist/jquery.min.js' },
+ { pattern: 'bower_components/jasmine-jquery/lib/jasmine-jquery.js' },
+ { pattern: 'jquery.are-you-sure.js' },
+ { pattern: 'spec/javascripts/*.js' },
+ { pattern: 'spec/javascripts/fixtures/**/*.html', included: false }
+ ]
+ }
+ }
+ });
+
+ grunt.registerTask('test', 'Run tests.', [ 'karma' ]);
+ grunt.registerTask('default', [ 'test' ]);
+
+ grunt.loadNpmTasks('grunt-karma');
+};
diff --git a/library/jquery.AreYouSure/README.md b/library/jquery.AreYouSure/README.md
new file mode 100644
index 000000000..6a538648a
--- /dev/null
+++ b/library/jquery.AreYouSure/README.md
@@ -0,0 +1,297 @@
+Are You Sure? - A light "dirty forms" JQuery Plugin
+======
+**Version:** 1.9
+
+*Are-you-sure* (```jquery.are-you-sure.js```) is simple light-weight "dirty
+form" JQuery Plugin for modern browsers. It helps prevent users from losing
+unsaved HTML Form changes by promoting the user to save/submit.
+
+It's simple to use. Just add the following line to your page's ready
+function:
+
+```javascript
+$('form').areYouSure();
+```
+
+*Are-you-sure* is a minimal plugin for modern browsers. There are plenty of
+"dirty forms" implementations out there, however they all seemed very
+heavyweight and over-engineered...! Most were written some time back and
+contain many 'hacks' to support legacy browsers, and/or rely on other fat
+dependencies such as FaceBox or jQueryUI. *Are-you-sure* solves this by
+doing this simple task in the simplest possible way.
+
+*Are-you-sure* is as simple as it gets:
+
+ * 100% JS with zero dependencies and no external CSS.
+ * Leverages `onBeforeUnload` to detect all page/browser exit events.
+ * Works on forms of any size.
+ * Correct state management - if a user edits then restores a value, the form
+ is not considered dirty.
+ * Easy to understand - less than a "terminal screen" of code!
+ * Graceful degradation on legacy browsers (i.e. if you're running an old
+ browser... remember to save :-)
+
+###Basic Usage
+
+```javascript
+
+$(function() {
+
+ // Enable on all forms
+ $('form').areYouSure();
+
+ // Enable on selected forms
+ $('form.dirty-check').areYouSure();
+
+ // With a custom message
+ $('form').areYouSure( {'message':'Your profile details are not saved!'} );
+
+}
+```
+To ignore selected fields from the dirtyness check:
+
+```html
+ <form id="myForm" name="myform" action="/post" method="post">
+
+ Field 1: (checked) <input type="text" name="field1"> <br />
+ Field 2: (ignored): <input type="text" name="field2" data-ays-ignore="true"> <br />
+ Field 3: (ignored): <input type="text" name="field3" class="ays-ignore"> <br />
+
+ <input type="submit" value="Submit">
+
+ </form>
+```
+
+###Advanced Usage
+
+```javascript
+
+$(function() {
+
+ /*
+ * Make Are-You-Sure "silent" by disabling the warning message
+ * (tracking/monitoring only mode). This option is useful when you wish to
+ * use the dirty/save events and/or use the dirtyness tracking in your own
+ * beforeunload handler.
+ */
+ $('form').areYouSure( {'silent':true} );
+
+ /*
+ * Dirtyness Change Events
+ * Are-You-Sure fires off "dirty" and "clean" events when the form's state
+ * changes. You can bind() or on(), these events to implement your own form
+ * state logic. A good example is enabling/disabling a Save button.
+ *
+ * "this" refers to the form that fired the event.
+ */
+ $('form').on('dirty.areYouSure', function() {
+ // Enable save button only as the form is dirty.
+ $(this).find('input[type="submit"]').removeAttr('disabled');
+ });
+ $('form').on('clean.areYouSure', function() {
+ // Form is clean so nothing to save - disable the save button.
+ $(this).find('input[type="submit"]').attr('disabled', 'disabled');
+ });
+
+ /*
+ * It's easy to test if a form is dirty in your own code - just check
+ * to see if it has a "dirty" CSS class.
+ */
+ if ($('#my-form').hasClass('dirty')) {
+ // Do something
+ }
+
+ /*
+ * If you're dynamically adding new fields/inputs, and would like to track
+ * their state, trigger Are-You-Sure to rescan the form like this:
+ */
+ $('#my-form').trigger('rescan.areYouSure');
+
+ /*
+ * If you'd like to reset/reinitialize the form's state as clean and
+ * start tracking again from this new point onwards, trigger the
+ * reinitalize as follows. This is handy if say you've managing your
+ * own form save/submit via asyc AJAX.
+ */
+ $('#my-form').trigger('reinitialize.areYouSure');
+
+ /*
+ * In some situations it may be desirable to look for other form
+ * changes such as adding/removing fields. This is useful for forms that
+ * can change their field count, such as address/phone contact forms.
+ * Form example, you might remove a phone number from a contact form
+ * but update nothing else. This should mark the form as dirty.
+ */
+ $('form').areYouSure( {'addRemoveFieldsMarksDirty':true} );
+
+ /*
+ * Sometimes you may have advanced forms that change their state via
+ * custom JavaScript or 3rd-party component JavaScript. Are-You-Sure may
+ * not automatically detect these state changes. Examples include:
+ * - Updating a hidden input field via background JS.
+ * - Using a [rich WYSIWYG edit control](https://github.com/codedance/jquery.AreYouSure/issues/17).
+ * One solution is to manually trigger a form check as follows:
+ */
+ $('#my-form').trigger('checkform.areYouSure');
+
+ /*
+ * As an alternative to using events, you can pass in a custom change
+ * function.
+ */
+ $('#my-adv-form').areYouSure({
+ change: function() {
+ // Enable save button only if the form is dirty. i.e. something to save.
+ if ($(this).hasClass('dirty')) {
+ $(this).find('input[type="submit"]').removeAttr('disabled');
+ } else {
+ $(this).find('input[type="submit"]').attr('disabled', 'disabled');
+ }
+ }
+ });
+
+ /*
+ * Mixing in your own logic into the warning.
+ */
+ $('#my-form').areYouSure( {'silent':true} );
+ $(window).on('beforeunload', function() {
+ isSunday = (0 == (new Date()).getDay());
+ if ($('#my-form').hasClass('dirty') && isSunday) {
+ return "Because it's Sunday, I'll be nice and let you know you forgot to save!";
+ }
+ }
+
+}
+```
+The [demo page](http://www.papercut.com/products/free_software/are-you-sure/demo/are-you-sure-demo.html)
+shows the advanced usage options in more detail.
+
+
+###Install
+Are-You-Sure is a light-weight jQuery plugin - it's a single standalone
+JavaScript file. You can download the
+[jquery.are-you-sure.js](https://raw.github.com/codedance/jquery.AreYouSure/master/jquery.are-you-sure.js)
+file and include it in your page. Because it's so simple it seems a shame
+to add an extra browser round trip. It's recommended that you consider
+concatenating it with other common JS lib files, and/or even cut-n-pasting
+the code (and license header) into one of your existing JS files.
+
+For experimental Mobile Safari support, also include ```ays-beforeunload-shim.js```
+(see Known Issues below).
+
+*Are-you-sure* may also be installed with [Bower](http://twitter.github.com/bower/):
+
+```bash
+$ bower install jquery.are-you-sure
+```
+
+If you're using, or like, *Are-you-sure* make sure you **star/watch** this project
+so you can stay up-to-date with updates.
+
+###Demo
+This [demo page](http://www.papercut.com/products/free_software/are-you-sure/demo/are-you-sure-demo.html)
+hosts a number of example forms.
+
+###Supported Browsers
+*Are-you-sure* has been tested on and fully supports the following browsers:
+
+* IE 9 through 11
+* Google Chrome (versions since 2012)
+* Firefox (versions since 2012)
+* Safari (versions since 2012)
+
+Experimental support is available on iOS and Opera via the *beforeunload* shim (see below).
+
+###Known Issues & Limitations
+
+####Mobile Safari and Opera
+The ```windows.beforeunload``` event is not supported on iOS (iPhone, iPad, and iPod). An
+experimental shim offering partial *beforeunload* emulation is provided to help plug this gap.
+It works by scanning the page for anchor links and augments the default behaviour to first
+check with *Are-you-sure* before navigating away. To use, simply include
+```ays-beforeunload-shim.js``` in your page.
+
+####Firefox
+The custom message option may not work on Firefox ([Firefox bug 588292](https://bugzilla.mozilla.org/show_bug.cgi?id=588292)).
+
+###Development
+The aim is to keep *Are-you-sure* simple and light. If you think you have
+a good idea which is aligned with this objective, please voice your thoughts
+in the issues list.
+
+####Pull Requests
+If possible, please submit your pull request against the most recent ```dev-*``` branch rather than master. This will make it easier to merge your code into the next planned release.
+
+####Running tests
+```bash
+$ npm install
+$ npm test
+```
+
+###Release History
+
+**2014-08-13** (1.9) - This is a minor bugfix release:
+
+* Addressed issue [#45](https://github.com/codedance/jquery.AreYouSure/issues/55) seen with empty select fields.
+* Thanks [valgen](https://github.com/valgen) and [tus124](https://github.com/tus124) for the contribution.
+
+**2014-06-22** (1.8) - This is a minor bugfix release:
+
+* Fixed NPE that may occur when using a 'multiple' option field.
+* Minor timing tweak to help mitigate bypass issue raised in [#45](https://github.com/codedance/jquery.AreYouSure/issues/45)
+* Thanks [apassant](https://github.com/apassant) and [amatenkov](https://github.com/amatenkov) for the contribution.
+
+**2014-05-28** (1.7)
+
+* Fixed multiple warning dialogs that may appear on IE and recent versions of Chrome
+* Experimental support for iOS Mobile Safari (via a *beforeunload* shim)
+* Various minor fixes (e.g. support input fields with no type=)
+* Minor performance improvements on pages with multiple forms
+* Improved documentation and examples
+* Thanks to [lfjeff](https://github.com/lfjeff) and [aqlong](https://github.com/aqlong) for the contribution and ideas!
+
+**2014-02-07** (1.6)
+
+* Add field count tracking (```addRemoveFieldsMarksDirty```) (contrib *jonegerton*)
+* Added event to manually trigger a form check/recheck (contrib *jonegerton*)
+* Thanks to [jonegerton](https://github.com/jonegerton) for the contribution!
+
+**2013-11-15** (1.5)
+
+* Added support for HTML5 input field types. (contrib *albinsunnanbo*)
+* New option to reinitialize/reset the dirty state. This is handy if you're managing your own async submit/save using AJAX. (contrib *albinsunnanbo*)
+* Thanks to [albinsunnanbo](https://github.com/albinsunnanbo) for the contribution!
+
+**2013-10-2** (1.4)
+
+* Added dirty and clean "events"
+* Added an option to disable the message (dirty tracking only)
+* Added an option to rescan a form to look/detect any new fields
+
+**2013-07-24** - Minor fix - don't fail if form elements have no "name" attribute.
+
+**2013-05-14** - Added support for form reset buttons (contributed by codev).
+
+**2013-05-01** - Added support for hidden and disabled form fields.
+
+**2013-02-03** - Add demo page.
+
+**2013-01-28** - Add ```change``` event support and a demo page.
+
+**2012-10-26** - Use dashes in class names rather than camel case.
+
+**2012-10-24** - Initial public release.
+
+
+###Prerequisites
+jQuery version 1.4.2 or higher. 2.0+ or 1.10+ recommended.
+
+
+###License
+The same as JQuery...
+
+ jQuery Plugin: Are-You-Sure (Dirty Form Detection)
+ https://github.com/codedance/jquery.AreYouSure/
+
+ Copyright (c) 2012-2014, Chris Dance - PaperCut Software http://www.papercut.com/
+ Dual licensed under the MIT or GPL Version 2 licenses.
+ http://jquery.org/license
diff --git a/library/jquery.AreYouSure/are-you-sure.jquery.json b/library/jquery.AreYouSure/are-you-sure.jquery.json
new file mode 100644
index 000000000..9c699b72b
--- /dev/null
+++ b/library/jquery.AreYouSure/are-you-sure.jquery.json
@@ -0,0 +1,39 @@
+{
+ "name": "are-you-sure",
+ "title": "Are You Sure? - a dirty forms check plugin",
+ "description": "Are-you-sure is simple light-weight dirty forms JQuery Plugin for modern browsers. It helps prevent users from loosing unsaved form changes by prompting the user to save/submit. It's dependency free and designed for modern browsers... just the features you need and nothing more! See the project page and demo for usage and examples.",
+ "keywords": [
+ "form",
+ "dirty",
+ "field",
+ "change",
+ "save",
+ "save-check",
+ "save-warning"
+ ],
+ "version": "1.9.0",
+ "author": {
+ "name": "Chris Dance (codedance) at PaperCut Software",
+ "url": "https://github.com/codedance"
+ },
+ "maintainers": [
+ {
+ "name": "Chris Dance",
+ "email": "chris.dance@papercut.com",
+ "url": "http://www.papercut.com/"
+ }
+ ],
+ "licenses": [
+ {
+ "type": "MIT",
+ "url": "https://github.com/codedance/jquery.AreYouSure/blob/master/README.md"
+ }
+ ],
+ "bugs": "https://github.com/codedance/jquery.AreYouSure/issues",
+ "homepage": "https://github.com/codedance/jquery.AreYouSure",
+ "docs": "https://github.com/codedance/jquery.AreYouSure",
+ "demo": "http://www.papercut.com/products/free_software/are-you-sure/demo/are-you-sure-demo.html",
+ "dependencies": {
+ "jquery": ">=1.4.2"
+ }
+}
diff --git a/library/jquery.AreYouSure/ays-beforeunload-shim.js b/library/jquery.AreYouSure/ays-beforeunload-shim.js
new file mode 100644
index 000000000..cb864cdeb
--- /dev/null
+++ b/library/jquery.AreYouSure/ays-beforeunload-shim.js
@@ -0,0 +1,31 @@
+/*!
+ * An experimental shim to partially emulate onBeforeUnload on iOS.
+ * Part of https://github.com/codedance/jquery.AreYouSure/
+ *
+ * Copyright (c) 2012-2014, Chris Dance and PaperCut Software http://www.papercut.com/
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ * http://jquery.org/license
+ *
+ * Author: chris.dance@papercut.com
+ * Date: 19th May 2014
+ */
+$(function() {
+ if (!navigator.userAgent.toLowerCase().match(/iphone|ipad|ipod|opera/)) {
+ return;
+ }
+ $('a').bind('click', function(evt) {
+ var href = $(evt.target).closest('a').attr('href');
+ if (href !== undefined && !(href.match(/^#/) || href.trim() == '')) {
+ var response = $(window).triggerHandler('beforeunload', response);
+ if (response && response != "") {
+ var msg = response + "\n\n"
+ + "Press OK to leave this page or Cancel to stay.";
+ if (!confirm(msg)) {
+ return false;
+ }
+ }
+ window.location.href = href;
+ return false;
+ }
+ });
+});
diff --git a/library/jquery.AreYouSure/bower.json b/library/jquery.AreYouSure/bower.json
new file mode 100644
index 000000000..8591dc0d0
--- /dev/null
+++ b/library/jquery.AreYouSure/bower.json
@@ -0,0 +1,30 @@
+{
+ "name": "jquery.are-you-sure",
+ "version": "1.9.0",
+ "homepage": "https://github.com/codedance/jquery.AreYouSure",
+ "authors": [
+ "CodeDance <chris.dance@papercut.com>"
+ ],
+ "description": "A light-weight jQuery 'dirty forms' Plugin - it monitors html forms and alerts users to unsaved changes if they attempt to close the browser or navigate away from the page. (Are you sure?)",
+ "main": "jquery.are-you-sure.js",
+ "keywords": [
+ "form",
+ "dirty",
+ "field",
+ "change",
+ "save-check",
+ "are-you-sure",
+ "save-warning"
+ ],
+ "license": "MIT/GPLv2",
+ "ignore": [
+ "**/.*",
+ "demo"
+ ],
+ "dependencies": {
+ "jquery": ">=1.4.2"
+ },
+ "devDependencies": {
+ "jasmine-jquery": "~2.0.3"
+ }
+}
diff --git a/library/jquery.AreYouSure/demo/are-you-sure-demo.html b/library/jquery.AreYouSure/demo/are-you-sure-demo.html
new file mode 100644
index 000000000..3f0327b2e
--- /dev/null
+++ b/library/jquery.AreYouSure/demo/are-you-sure-demo.html
@@ -0,0 +1,576 @@
+<!DOCTYPE html>
+<html>
+ <head>
+ <title>Demo: Are You Sure? - a dirty forms jQuery Plugin</title>
+
+ <!--
+
+ We'll use an old version of jQuery to show we're backwards compatible. In
+ production we recommend using a later version. e.g.
+
+ <script src="http://code.jquery.com/jquery-1.11.1.min.js"></script>
+ <script src="http://code.jquery.com/jquery-2.1.1.min.js"></script>
+
+ -->
+
+ <script src="http://code.jquery.com/jquery-1.4.2.min.js"></script>
+ <script src="../jquery.are-you-sure.js"></script>
+ <script src="../ays-beforeunload-shim.js"></script>
+ <script>
+
+ $(function() {
+
+ // Example 1 - ... in one line of code
+ $('#example-1-form').areYouSure();
+
+
+ // Example 2 - ignore a dynamic field
+ $('#example-2-form').areYouSure();
+
+ var defaultPickup15min = new Date((new Date()).getTime() + 15 * 60000);
+ $('#pickup').val(defaultPickup15min.getHours()
+ + ':' + defaultPickup15min.getMinutes());
+
+
+ // Example 3 - custom message and hooking the dirty change events
+ $('#example-3-form').areYouSure(
+ {
+ message: "Did you forget to save your standard coffee order?"
+ }
+ );
+ // Enable save button only if the form is dirty - using events.
+ $('#example-3-form').bind('dirty.areYouSure', function() {
+ $(this).find('input[type="submit"]').removeAttr('disabled');
+ });
+ $('#example-3-form').bind('clean.areYouSure', function() {
+ $(this).find('input[type="submit"]').attr('disabled', 'disabled');
+ });
+
+
+ // Example 4 - dynamically change and add form fields.
+ $('#example-4-form').areYouSure(
+ {
+ message: "Did you forget to submit your coffee order?"
+ }
+ );
+
+ $('#example-4-lastorder').click(function() {
+ // ... set our saved coffee type.
+ $('#example-4-coffee').val('espresso');
+ // Because we've made a change from our own JavaScript, we need to fire
+ // off manual 'form check'.
+ $('#example-4-form').trigger('checkform.areYouSure');
+ });
+
+ // If it's warm enough, offer an iced coffee special.
+ $.getJSON("http://api.openweathermap.org/data/2.5/weather?q=Melbourne,AU&mode=json&units=metric&callback=?",
+ function(data) {
+ var temp = data.main.temp;
+ if (temp > 5) {
+ $('#example-4-special').append('<p>It\'s currently '
+ + temp + 'C in Melbourne. Ice it up!</p>');
+ $('#example-4-special').append('<input type="checkbox" name="make-it-iced" value="true" />'
+ + ' Make it an iced coffee<br />');
+
+ // Trigger rescan event on the form so we start tracking the new field.
+ $('#example-4-form').trigger('rescan.areYouSure');
+ }
+ }
+ );
+
+
+ /*
+ * Example 5
+ * - extra shots button to enable/disable shots options
+ * - like/unlike button (changing hidden form field value)
+ * - hook dirty change event to enable/disable submit (using method),
+ * to more easily demonstrate when the form is dirty
+ */
+ $('#example-5-extra-shots').click(function() {
+ // we trigger a change event on the fields so that the AreYouSure event handler is called
+ $('#example-5-form input[name=shots]').removeAttr('disabled').change();
+ $('#example-5-extra-shots').hide();
+ $('#example-5-shots-options').show();
+ return false;
+ });
+ $('#example-5-like-button').click(function() {
+ var currentLike = $('#example-5-like').val() == 'true';
+ var newLike = !currentLike;
+ // we trigger a change event on the fields so that the areYouSure event handler is called
+ $('#example-5-like').val(newLike).change();
+ $('#example-5-like-button').text(newLike ? 'Unlike' : 'Like');
+ return false;
+ });
+ $('#example-5-form').areYouSure({
+ change: function() {
+ // Enable save button only if the form is dirty.
+ if ($(this).hasClass('dirty')) {
+ $(this).find('input[type="submit"]').removeAttr('disabled');
+ } else {
+ $(this).find('input[type="submit"]').attr('disabled', 'disabled');
+ }
+ }
+ });
+
+ // Example 6 - HTML5 input types
+ $('#example-6-form').areYouSure();
+
+ // Example 7 - ... in one line of code for the form and some more optional to toggle disabled state of the save button
+ $('#example-7-form').areYouSure();
+ $('#example-7-save-button').click(function () {
+ $('#example-7-form').trigger('reinitialize.areYouSure');
+ });
+ // code below is optional to handle disabled state of the save button
+ $('#example-7-form').bind('dirty.areYouSure', function () {
+ // Enable save button only as the form is dirty.
+ $('#example-7-save-button').attr({ 'disabled': false });
+ });
+ $('#example-7-form').bind('clean.areYouSure', function () {
+ // Form is clean so nothing to save - disable the save button.
+ $('#example-7-save-button').attr({ 'disabled': true });
+ });
+ });
+
+ </script>
+
+ <style type="text/css">
+ body {
+ font-family: myriad-pro-1, myriad-pro-2, 'Lucida Grande', 'Arial', sans-serif;
+ margin: 25px;
+ }
+
+ form {
+ width: 350px;
+ border: 1px solid #AA5303;
+ padding: 10px 20px;
+ background-image: -webkit-linear-gradient(top, rgba(170,83,3, 0.1), rgba(170,83,3, 0.5));
+ background-image: -moz-linear-gradient(top, rgba(170,83,3, 0.1), rgba(170,83,3, 0.5));
+ background-image: -ms-linear-gradient(top, rgba(170,83,3, 0.1), rgba(170,83,3, 0.5));
+ background-image: -o-linear-gradient(top, rgba(170,83,3, 0.1), rgba(170,83,3, 0.5));
+ background-image: linear-gradient(top, rgba(170,83,3, 0.1), rgba(170,83,3, 0.5));
+ border-radius: 5px;
+ }
+
+ /* A bit of custom styling on example 3 */
+ #example-3-form.dirty, #example-4-form.dirty {
+ box-shadow: 0 0 8px rgba(255, 0, 0, 1);
+ -webkit-box-shadow: 0 0 8px rgba(255, 0, 0, 1);
+ -moz-box-shadow: 0 0 8px rgba(255, 0, 0, 1);
+ border:1px solid rgba(255,0,0, 0.8);
+ }
+
+ form h2 {
+ font-size: 22px;
+ }
+
+ form > div {
+ padding: 8px;
+ font-size: 12px;
+ }
+ form > div input[type="text"],
+ form > div input[type="color"],
+ form > div input[type="date"],
+ form > div input[type="datetime"],
+ form > div input[type="datetime-local"],
+ form > div input[type="email"],
+ form > div input[type="month"],
+ form > div input[type="number"],
+ form > div input[type="range"],
+ form > div input[type="search"],
+ form > div input[type="tel"],
+ form > div input[type="time"],
+ form > div input[type="url"],
+ form > div input[type="week"],
+ form > div input:not([type]),
+ form > div textarea,
+ form > div select,
+ form > div button {
+ float: right;
+ width: 200px;
+ }
+
+ form > div input[type="radio"],
+ form > div input[type="checkbox"] {
+ display: inline-block;
+ margin-left: 130px;
+ }
+
+ form > div input[type="submit"] {
+ float: right;
+ }
+ form > div.buttons {
+ clear: both;
+ padding-bottom: 20px;
+ }
+ </style>
+ </head>
+
+ <body>
+ <h1>jQuery Plugin Demo: Are You Sure?</h1>
+ <p>
+ This page hosts a demo of the <a href="https://github.com/codedance/jquery.AreYouSure">jQuery Are-You-Sure</a> plugin (<code>jquery.are-you-sure.js</code>).
+ </p>
+ <p>
+ <i>Are-you-sure</i> is simple light-weight "dirty forms" JQuery Plugin for modern browsers. It helps prevent users from loosing unsaved form changes.
+ </p>
+ <p>
+ <strong>Features:</strong>
+ <ul>
+ <li>Light weight - only the features you need!</li>
+ <li>Dependency free.</li>
+ <li>Correct state management - if a user edits then restores a value, the form is not considered dirty.</li>
+ <li>Easy to understand - less than a "terminal screen" of code!</li>
+ <li>... and <a href="https://github.com/codedance/jquery.AreYouSure">more</a>.</li>
+ </ul>
+ </p>
+
+ <h2>Example 1: It's simple!</h2>
+ <p>
+ This example shows how easy it is to add a dirty check to your form(s) with one line
+ of code. (View the page's source)
+ </p>
+
+ <form id="example-1-form" name="coffeeOrder1" method="post">
+ <h2>Enter Your Coffee Order</h2>
+ <div>
+ <label for="example-1-coffee">Coffee</label>
+ <select name="coffee" id="example-1-coffee">
+ <option value="espresso">Espresso</option>
+ <option value="dbl-espresso">Caffe Doppio</option>
+ <option value="latte">Caffe Latte</option>
+ <option value="macciato">Machhiato</option>
+ <option value="cappuccino">Cappuccino</option>
+ </select>
+ </div>
+ <div>
+ <label>Shots</label><br />
+ <input type="radio" name="shots" value="1" checked /> 1 Shot - Standard<br />
+ <input type="radio" name="shots" value="2" /> 2 Shots - Morning wakeup!<br />
+ <input type="radio" name="shots" value="3" /> 3 Shots - Overdrive!<br />
+ </div>
+ <div>
+ <label for="example-1-sugar">Sugar</label> <input type="text" name="sugar" value="0" id="example-1-sugar" />
+ </div>
+ <div>
+ <label for="example-1-instructions">Special Instructions</label>
+ <textarea name="instructions" rows="5" id="example-1-instructions"></textarea>
+ </div>
+
+ <div class="buttons">
+ <input type="checkbox" name="remember" value="true" /> Remember my order<br />
+ <input type="submit" value="Submit">
+ <input type="reset" value="Reset">
+ </div>
+ <div>
+ <p>... or visit <a href="http://www.google.com/">Google</a> or close the window without saving!</p>
+ </div>
+ </form>
+
+ <h2>Example 2: Ignore the unimportant!</h2>
+ <p>
+ This example highlights how to disregard a field from the dirty check. In this form
+ the first field is dynamically populated and hence a change on this field should <em>not</em>
+ mark the form as dirty.
+ </p>
+ <form id="example-2-form" name="coffeeOrder2" method="post">
+ <h2>Enter Your Coffee Order</h2>
+ <div>
+ <!-- The ays-ignore class means a change on this field is not considered "dirty" -->
+ <label for="pickup">Pickup Time</label>
+ <input class="ays-ignore" type="text" name="pickup" id="pickup" />
+ <!-- or you can use a data attribute like this:
+ <label for="pickup">Pickup Time</label> <input data-ays-ignore="true" type="text" name="pickup" id="pickup" />
+ -->
+ </div>
+ <div>
+ <label for="example-2-coffee">Coffee</label>
+ <select name="coffee" id="example-2-coffee">
+ <option value="espresso">Espresso</option>
+ <option value="dbl-espresso">Caffe Doppio</option>
+ <option value="latte">Caffe Latte</option>
+ <option value="macciato">Machhiato</option>
+ <option value="cappuccino">Cappuccino</option>
+ </select>
+ </div>
+ <div>
+ <label>Shots</label><br />
+ <input type="radio" name="shots" value="1" checked /> 1 Shot - Standard<br />
+ <input type="radio" name="shots" value="2" /> 2 Shots - Morning wakeup!<br />
+ <input type="radio" name="shots" value="3" /> 3 Shots - Overdrive!<br />
+ </div>
+ <div>
+ <label for="example-2-sugar">Sugar</label> <input type="text" name="sugar" value="0" id="example-2-sugar" />
+ </div>
+ <div>
+ <label for="example-2-instructions">Special Instructions</label>
+ <textarea name="instructions" rows="5" id="example-2-instructions"></textarea>
+ </div>
+
+ <div class="buttons">
+ <input type="checkbox" name="remember" value="true" /> Remember my order<br />
+ <input type="submit" value="Submit">
+ </div>
+ <div>
+ <p>... or visit <a href="http://www.google.com/">Google</a> or close the window without saving!</p>
+ </div>
+ </form>
+
+
+ <h2>Example 3: Lets be intelligent!</h2>
+ <p>
+ This is a more advanced example. The <code>dirty</code> and <code>clean</code> change events are
+ intercepted so the save button is only enabled if the form is dirty (i.e. something to save).
+ It also demonstrates how to customize the warning message and change the style of a dirty
+ form (CSS styling using the <code>.dirty</code> class).
+ </p>
+ <form id="example-3-form" name="coffeeOrder3" method="post">
+ <h2>Update My Standard Order</h2>
+ <div>
+ <label for="example-3-coffee">Coffee</label>
+ <select name="coffee" id="example-3-coffee">
+ <option value=""></option>
+ <option value="cappuccino">Cappuccino</option>
+ <option value="espresso">Espresso</option>
+ <option value="dbl-espresso">Caffe Doppio</option>
+ <option value="latte">Caffe Latte</option>
+ <option value="macciato">Machhiato</option>
+ </select>
+ </div>
+ <div>
+ <label>Shots</label><br />
+ <input type="radio" name="shots" value="1" /> 1 Shot - Standard<br />
+ <input type="radio" name="shots" value="2" checked /> 2 Shots - Morning wakeup!<br />
+ <input type="radio" name="shots" value="3" /> 3 Shots - Overdrive!<br />
+ </div>
+ <div>
+ <label for="example-3-sugar">Sugar</label>
+ <input type="text" name="sugar" value="1" id="example-3-sugar" />
+ </div>
+ <div>
+ <label for="example-3-instructions">Special Instructions</label>
+ <textarea name="instructions" rows="5" id="example-3-instructions">No chocolate please</textarea>
+ </div>
+
+ <div class="buttons">
+ <input type="submit" value="Save" disabled="disabled">
+ </div>
+ <div>
+ <p>... or visit <a href="http://www.google.com/">Google</a> or close the window without saving!</p>
+ </div>
+ </form>
+
+ <h2>Example 4: Lets be dynamic!</h2>
+ <p>
+ In this example we'll dymaically add a field and fire off the <code>rescan</code> event. After
+ the rescan, Are-You-Sure will start looking for changes on the new fields as well.
+ </p>
+ <form id="example-4-form" name="coffeeOrder4" method="post">
+ <h2>Order Coffee For Pickup Now</h2>
+ <div>
+ <a id="example-4-lastorder" href="javascript:void(0);">Set my preferences from my last order</a><br />
+ </div>
+ <div>
+ <label for="example-4-coffee">Coffee</label>
+ <select name="coffee" id="example-4-coffee">
+ <option value="cappuccino">Cappuccino</option>
+ <option value="espresso">Espresso</option>
+ <option value="dbl-espresso">Caffe Doppio</option>
+ <option value="latte">Caffe Latte</option>
+ </select>
+ </div>
+ <div id="example-4-special"></div>
+ <div class="buttons">
+ <input type="submit" value="Place Order">
+ </div>
+ <div>
+ <p>... or visit <a href="http://www.google.com/">Google</a> or close the window without saving!</p>
+ </div>
+ </form>
+
+ <h2>Example 5: Edge cases</h2>
+ <p>
+ This example demonstrates tracking of hidden and disabled form elements that are changed by non-input elements.
+ E.g.:
+ </p>
+ <ul>
+ <li>clicking a link or non-input button that changes the value of a hidden form field, or</li>
+ <li>
+ clicking a link or non-input button that enables or disables some form fields (which has an effect on whether
+ or not those fields will be submitted with the form, despite the values not changing).
+ </li>
+ </ul>
+ <form id="example-5-form" name="coffeeOrder5" method="post">
+ <h2>Update My Standard Order</h2>
+ <div>
+ <label for="example-5-coffee">Coffee</label>
+ <select name="coffee" id="example-3-coffee">
+ <option value="cappuccino">Cappuccino</option>
+ <option value="espresso">Espresso</option>
+ <option value="dbl-espresso">Caffe Doppio</option>
+ <option value="latte">Caffe Latte</option>
+ <option value="macciato">Machhiato</option>
+ </select>
+ </div>
+ <div>
+ <label>Shots</label>
+ <!--
+ The visually hidden "shots" radio buttons are disabled and would not normally be submitted with the form.
+ Clicking the following button will visually show and enable these buttons, resulting in a form state change
+ (and hence the form is considered dirty) without the values having changed.
+ -->
+ <button id="example-5-extra-shots">I want extra shots</button>
+ <div id="example-5-shots-options" style="display: none;">
+ <input type="radio" name="shots" value="1" disabled /> 1 Shot - Standard<br />
+ <input type="radio" name="shots" value="2" disabled /> 2 Shots - Morning wakeup!<br />
+ <input type="radio" name="shots" value="3" disabled /> 3 Shots - Overdrive!<br />
+ </div>
+ </div>
+ <div>
+ <label>Do you like us?</label>
+ <input type="hidden" name="like" value="false" id="example-5-like" />
+ <button id="example-5-like-button">Like</button>
+ </div>
+ <div class="buttons">
+ <input type="submit" value="Save" disabled="disabled">
+ </div>
+ <div>
+ <p>... or visit <a href="http://www.google.com/">Google</a> or close the window without saving!</p>
+ </div>
+ </form>
+
+ <h2>Example 6: HTML5 inputs!</h2>
+ <p>
+ This example shows support for HTML5 input types. It's not a coffee order form,
+ but you need coffee if you're working with HTML5 :-)
+ </p>
+
+ <form id="example-6-form" name="coffeeOrder6" method="post">
+ <h2>Doing HTML5? You'll need coffee!</h2>
+ <div>
+ <label for="example-6-color">color</label>
+ <input type="color" name="example-6-color" />
+ </div>
+ <div>
+ <label for="example-6-date">date</label>
+ <input type="date" name="example-6-date" />
+ </div>
+ <div>
+ <label for="example-6-datetime">datetime</label>
+ <input type="datetime" name="example-6-datetime" />
+ </div>
+ <div>
+ <label for="example-6-datetime-local">datetime-local</label>
+ <input type="datetime-local" name="example-6-datetime-local" />
+ </div>
+ <div>
+ <label for="example-6-email">email</label>
+ <input type="email" name="example-6-email" />
+ </div>
+ <div>
+ <label for="example-6-month">month</label>
+ <input type="month" name="example-6-month" />
+ </div>
+ <div>
+ <label for="example-6-number">number</label>
+ <input type="number" name="example-6-number" />
+ </div>
+ <div>
+ <label for="example-6-range">range</label>
+ <input type="range" name="example-6-range" />
+ </div>
+ <div>
+ <label for="example-6-search">search</label>
+ <input type="search" name="example-6-search" />
+ </div>
+ <div>
+ <label for="example-6-tel">tel</label>
+ <input type="tel" name="example-6-tel" />
+ </div>
+ <div>
+ <label for="example-6-time">time</label>
+ <input type="time" name="example-6-time" />
+ </div>
+ <div>
+ <label for="example-6-url">url</label>
+ <input type="url" name="example-6-url" />
+ </div>
+ <div>
+ <label for="example-6-week">week</label>
+ <input type="week" name="example-6-week" />
+ </div>
+ <div>
+ <label for="example-6-select">select/optgroup</label>
+ <select>
+ <optgroup label="Beans">
+ <option value="india">India</option>
+ <option value="indonesia" selected="selected">Indonesia</option>
+ <option value="brazil">Brazil</option>
+ </optgroup>
+ <optgroup label="Roast">
+ <option value="l">Light</option>
+ <option value="m">Medium</option>
+ <option value="h">Heavy</option>
+ </optgroup>
+ </select>
+ </div>
+ <div>
+ <label for="example-6-mselect">multi select</label>
+ <select multiple>
+ <option value="arabica">Arabica</option>
+ <option value="arabica">Peaberry</option>
+ <option value="malabar " selected="selected">Malabar</option>
+ <option value="robusta ">Robusta</option>
+ </select>
+ </div>
+ <div style="clear:both;"></div>
+ <div>
+ <label for="example-6-plain">plain old field</label>
+ <input name="example-6-plain" />
+ </div>
+
+ <div class="buttons">
+ <input type="submit" value="Submit">
+ <input type="reset" value="Reset">
+ </div>
+ <div>
+ <p>... or visit <a href="http://www.google.com/">Google</a> or close the window without saving!</p>
+ </div>
+ </form>
+ <h2>Example 7: Mark current state as not dirty!</h2>
+ <p>
+ This example shows how you can mark the current state as not dirty. Handy for AJAX forms
+ we're you're managing your own submits.
+ </p>
+
+ <form id="example-7-form" name="coffeeOrder7" method="post">
+ <h2>Tell us your default coffee</h2>
+ <div>
+ <label for="example-7-coffee">Default coffee</label>
+ <select name="coffee" id="example-7-coffee">
+ <option value="espresso">Espresso</option>
+ <option value="dbl-espresso">Caffe Doppio</option>
+ <option value="latte">Caffe Latte</option>
+ <option value="macciato">Machhiato</option>
+ <option value="cappuccino">Cappuccino</option>
+ </select>
+ </div>
+ <div>
+ <button id="example-7-save-button" disabled="disabled">Save without submit</button>
+ </div>
+ <div class="buttons">
+ <input type="submit" value="Submit">
+ </div>
+ <div>
+ <p>... or visit <a href="http://www.google.com/">Google</a> or close the window without saving!</p>
+ </div>
+ </form>
+
+ <p>
+ This jQuery plugin is developed by <a href="https://github.com/codedance">Chris Dance</a>
+ at <a href="http://www.papercut.com/">PaperCut Software</a> - Are-You-Sure is used in
+ PaperCut's printing management software and it has been open sourced with help of
+ Tom, Jack and Matt from PaperCut's dev team.
+ </p>
+
+ </body>
+</html>
diff --git a/library/jquery.AreYouSure/jquery.are-you-sure.js b/library/jquery.AreYouSure/jquery.are-you-sure.js
new file mode 100644
index 000000000..3c41e2fcc
--- /dev/null
+++ b/library/jquery.AreYouSure/jquery.are-you-sure.js
@@ -0,0 +1,192 @@
+/*!
+ * jQuery Plugin: Are-You-Sure (Dirty Form Detection)
+ * https://github.com/codedance/jquery.AreYouSure/
+ *
+ * Copyright (c) 2012-2014, Chris Dance and PaperCut Software http://www.papercut.com/
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ * http://jquery.org/license
+ *
+ * Author: chris.dance@papercut.com
+ * Version: 1.9.0
+ * Date: 13th August 2014
+ */
+(function($) {
+
+ $.fn.areYouSure = function(options) {
+
+ var settings = $.extend(
+ {
+ 'message' : 'You have unsaved changes!',
+ 'dirtyClass' : 'dirty',
+ 'change' : null,
+ 'silent' : false,
+ 'addRemoveFieldsMarksDirty' : false,
+ 'fieldEvents' : 'change keyup propertychange input',
+ 'fieldSelector': ":input:not(input[type=submit]):not(input[type=button])"
+ }, options);
+
+ var getValue = function($field) {
+ if ($field.hasClass('ays-ignore')
+ || $field.hasClass('aysIgnore')
+ || $field.attr('data-ays-ignore')
+ || $field.attr('name') === undefined) {
+ return null;
+ }
+
+ if ($field.is(':disabled')) {
+ return 'ays-disabled';
+ }
+
+ var val;
+ var type = $field.attr('type');
+ if ($field.is('select')) {
+ type = 'select';
+ }
+
+ switch (type) {
+ case 'checkbox':
+ case 'radio':
+ val = $field.is(':checked');
+ break;
+ case 'select':
+ val = '';
+ $field.find('option').each(function(o) {
+ var $option = $(this);
+ if ($option.is(':selected')) {
+ val += $option.val();
+ }
+ });
+ break;
+ default:
+ val = $field.val();
+ }
+
+ return val;
+ };
+
+ var storeOrigValue = function($field) {
+ $field.data('ays-orig', getValue($field));
+ };
+
+ var checkForm = function(evt) {
+
+ var isFieldDirty = function($field) {
+ var origValue = $field.data('ays-orig');
+ if (undefined === origValue) {
+ return false;
+ }
+ return (getValue($field) != origValue);
+ };
+
+ var $form = ($(this).is('form'))
+ ? $(this)
+ : $(this).parents('form');
+
+ // Test on the target first as it's the most likely to be dirty
+ if (isFieldDirty($(evt.target))) {
+ setDirtyStatus($form, true);
+ return;
+ }
+
+ $fields = $form.find(settings.fieldSelector);
+
+ if (settings.addRemoveFieldsMarksDirty) {
+ // Check if field count has changed
+ var origCount = $form.data("ays-orig-field-count");
+ if (origCount != $fields.length) {
+ setDirtyStatus($form, true);
+ return;
+ }
+ }
+
+ // Brute force - check each field
+ var isDirty = false;
+ $fields.each(function() {
+ $field = $(this);
+ if (isFieldDirty($field)) {
+ isDirty = true;
+ return false; // break
+ }
+ });
+
+ setDirtyStatus($form, isDirty);
+ };
+
+ var initForm = function($form) {
+ var fields = $form.find(settings.fieldSelector);
+ $(fields).each(function() { storeOrigValue($(this)); });
+ $(fields).unbind(settings.fieldEvents, checkForm);
+ $(fields).bind(settings.fieldEvents, checkForm);
+ $form.data("ays-orig-field-count", $(fields).length);
+ setDirtyStatus($form, false);
+ };
+
+ var setDirtyStatus = function($form, isDirty) {
+ var changed = isDirty != $form.hasClass(settings.dirtyClass);
+ $form.toggleClass(settings.dirtyClass, isDirty);
+
+ // Fire change event if required
+ if (changed) {
+ if (settings.change) settings.change.call($form, $form);
+
+ if (isDirty) $form.trigger('dirty.areYouSure', [$form]);
+ if (!isDirty) $form.trigger('clean.areYouSure', [$form]);
+ $form.trigger('change.areYouSure', [$form]);
+ }
+ };
+
+ var rescan = function() {
+ var $form = $(this);
+ var fields = $form.find(settings.fieldSelector);
+ $(fields).each(function() {
+ var $field = $(this);
+ if (!$field.data('ays-orig')) {
+ storeOrigValue($field);
+ $field.bind(settings.fieldEvents, checkForm);
+ }
+ });
+ // Check for changes while we're here
+ $form.trigger('checkform.areYouSure');
+ };
+
+ var reinitialize = function() {
+ initForm($(this));
+ }
+
+ if (!settings.silent && !window.aysUnloadSet) {
+ window.aysUnloadSet = true;
+ $(window).bind('beforeunload', function() {
+ $dirtyForms = $("form").filter('.' + settings.dirtyClass);
+ if ($dirtyForms.length == 0) {
+ return;
+ }
+ // Prevent multiple prompts - seen on Chrome and IE
+ if (navigator.userAgent.toLowerCase().match(/msie|chrome/)) {
+ if (window.aysHasPrompted) {
+ return;
+ }
+ window.aysHasPrompted = true;
+ window.setTimeout(function() {window.aysHasPrompted = false;}, 900);
+ }
+ return settings.message;
+ });
+ }
+
+ return this.each(function(elem) {
+ if (!$(this).is('form')) {
+ return;
+ }
+ var $form = $(this);
+
+ $form.submit(function() {
+ $form.removeClass(settings.dirtyClass);
+ });
+ $form.bind('reset', function() { setDirtyStatus($form, false); });
+ // Add a custom events
+ $form.bind('rescan.areYouSure', rescan);
+ $form.bind('reinitialize.areYouSure', reinitialize);
+ $form.bind('checkform.areYouSure', checkForm);
+ initForm($form);
+ });
+ };
+})(jQuery);
diff --git a/library/jquery.AreYouSure/package.json b/library/jquery.AreYouSure/package.json
new file mode 100644
index 000000000..0b4c38dde
--- /dev/null
+++ b/library/jquery.AreYouSure/package.json
@@ -0,0 +1,45 @@
+{
+ "name": "jquery.AreYouSure",
+ "description": "A light-weight jQuery \"dirty forms\" Plugin - it monitors HTML forms and alerts users to unsaved changes if they attempt to close the browser or navigate away from the page. (Are you sure?)",
+ "homepage": "https://github.com/codedance/jquery.AreYouSure",
+ "author": "Chris Dance <chris.dance@papercut.com> (https://github.com/codedance)",
+ "contributors": [
+ "Tom Clift <tom.clift@papercut.com> (https://github.com/tclift)",
+ "Jon Egerton <jon@ja2.co.uk> (http://www.jonegerton.com/)",
+ "Scadoodles (https://github.com/Scadoodles)",
+ "Albin Sunnanbo (https://github.com/albinsunnanbo)",
+ "Marc Sutton <ashre@iname.com> (http://www.codev.co.uk)"
+ ],
+ "version": "1.9.0",
+ "license": "MIT/GPLv2",
+ "keywords": [ "dirty", "form", "onbeforeunload", "save", "check" ],
+ "main": "jquery.are-you-sure.js",
+ "engines": {
+ "node": ">=0.8.0"
+ },
+ "repository": {
+ "type": "git",
+ "url": "https://github.com/codedance/jquery.AreYouSure"
+ },
+ "bugs": {
+ "url": "https://github.com/codedance/jquery.AreYouSure/issues"
+ },
+ "dependencies": {
+ "jquery": ">=1.4.2"
+ },
+ "devDependencies": {
+ "bower": "^1.3.1",
+ "grunt": "^0.4.5",
+ "grunt-cli": "^0.1.13",
+ "grunt-karma": "^0.8.3",
+ "karma-chrome-launcher": "^0.1.4",
+ "karma-jasmine": "^0.2.2",
+ "karma-ie-launcher": "^0.1.5",
+ "karma-firefox-launcher": "^0.1.3",
+ "karma-safari-launcher": "^0.1.1"
+ },
+ "scripts": {
+ "postinstall": "node_modules/.bin/bower install",
+ "test": "node_modules/.bin/grunt test"
+ }
+}
diff --git a/library/jquery.AreYouSure/spec/javascripts/fixtures/input-text.html b/library/jquery.AreYouSure/spec/javascripts/fixtures/input-text.html
new file mode 100644
index 000000000..1b2850759
--- /dev/null
+++ b/library/jquery.AreYouSure/spec/javascripts/fixtures/input-text.html
@@ -0,0 +1,4 @@
+<form>
+ <input type="text" name="a">
+ <input type="submit">
+</form>
diff --git a/library/jquery.AreYouSure/spec/javascripts/jquery.are-you-sure_spec.js b/library/jquery.AreYouSure/spec/javascripts/jquery.are-you-sure_spec.js
new file mode 100644
index 000000000..5e02f7cb0
--- /dev/null
+++ b/library/jquery.AreYouSure/spec/javascripts/jquery.are-you-sure_spec.js
@@ -0,0 +1,28 @@
+'use strict';
+
+// Karma adds 'base/' to the default path
+jasmine.getFixtures().fixturesPath = 'base/spec/javascripts/fixtures';
+
+describe("A form's", function() {
+ var $form = undefined;
+
+ describe('text input', function() {
+ var $textInput = undefined;
+
+ beforeEach(function() {
+ loadFixtures('input-text.html');
+ $form = $('form');
+ $textInput = $('input[type=text]');
+ $form.areYouSure();
+ });
+
+ it('should cause dirtyness after its value changes', function(done) {
+ expect($form.hasClass('dirty')).toBe(false);
+ $textInput.val('new').change();
+ setTimeout(function() {
+ expect($form.hasClass('dirty')).toBe(true);
+ done();
+ }, 0);
+ });
+ });
+});
diff --git a/library/jquery.divgrow/divGrow-1.3.1.zip b/library/jquery.divgrow/divGrow-1.3.1.zip
deleted file mode 100644
index 8f1deacf1..000000000
--- a/library/jquery.divgrow/divGrow-1.3.1.zip
+++ /dev/null
Binary files differ
diff --git a/library/jquery.divgrow/howto b/library/jquery.divgrow/howto
deleted file mode 100644
index c2fdd66f9..000000000
--- a/library/jquery.divgrow/howto
+++ /dev/null
@@ -1,46 +0,0 @@
-1) Inlcude the JS file into your page (after jQuery):
-
-<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js" type="text/javascript"></script>
-
-<script src="JS/jquery.divgrow.js" type="text/javascript"></script>
-
-
-2) Call the divgrow function to any div element you want to grow. initialHeight sets the height of the containers before they are expanded.
-
-<script type="text/javascript">
- $().ready(function() {
- $('div.more-block').divgrow({ initialHeight: 147 });
- });
-
-
-3) Create you container and give it a reference, i.e. by classname "more-block"
-
- <div class="more-block">
- <h2>Corns and Callus (Hyperkeratosis)</h2>
- <p>
- These occur in areas of the foot that are experiencing excess pressure and/or friction. The body seeks to defend itself by producing extra layers of skin as a form of protection. However as the process continues the accumulation of extra skin exceeds that which is lost naturally so the skin in these vulnerable areas builds up and becomes compacted as the original cause of the process continues. The protective mechanism becomes the problem if left untreated and the cause not addressed.<br />
- Callus denotes a general area of hard dead skin and a corn is a much more concentrated collection which often goes deep rather than wide. Corns can produce pain completely out of proportion to their size often because of impingement upon nerves or sometimes infection.<br />
- Treatment of the symptoms is the first step to stopping the pain and discomfort and this is usually addressed without much discomfort by a foot health professional. Treating the cause can be as simple as discarding an ill fitting pair of shoes or may entail a more detailed assessment of individual foot function.<br />
- Callus is not always caused by mechanical factors but can be a symptom of a systemic disease such as Psoriasis.<br />
- There are some useful devices to assist in protecting vulnerable areas from corns and callus ? see our recommended <a href="Products.aspx">products page</a>.
- </p>
- </div>
-
-
-
------------------------------------------------------
-
-Thats it.
-
-Optional arguments:
-
-initialHeight: 100 - (default)
-moreText: "+ Show More" - (default)
-lessText: "- Show Less" - (default)
-showBrackets: true - (default)
-
-e.g.
-
-$('div.more-block').divgrow({ initialHeight: 147, moreText: "give me more", lessText: "thats enough", showBrackets: false });
-
-
diff --git a/library/jquery.divgrow/jquery.divgrow-1.3.1.js b/library/jquery.divgrow/jquery.divgrow-1.3.1.js
deleted file mode 100644
index 49788f802..000000000
--- a/library/jquery.divgrow/jquery.divgrow-1.3.1.js
+++ /dev/null
@@ -1,89 +0,0 @@
-/*
-* Copyright (c) 2010 Simon Hibbard
-*
-* 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.
-*/
-
-/*
-* Version: V1.3.1
-* Release: 22-12-2010
-* Based on jQuery 1.4.2
-*/
-
-(function ($) {
- var divgrowid = 0;
- $.fn.divgrow = function (options) {
- var options = $.extend({}, { initialHeight: 100, moreText: "+ Show More", lessText: "- Show Less", speed: 400, showBrackets: true }, options);
-
- return this.each(function () {
- divgrowid++;
-
- obj = $(this);
-
- var fullHeight = obj.height() + 10;
-
- obj.css('height', options.initialHeight).css('overflow', 'hidden');
- if (options.showBrackets) {
- obj.after('<p class="divgrow-brackets">[&hellip;]</p><div href="#" class="divgrow-showmore' + " divgrow-obj-" + divgrowid + '"' + '></div>');
- }
- else {
- obj.after('<div class="divgrow-showmore' + " divgrow-obj-" + divgrowid + '"' + '></div>');
- }
- $("div.divgrow-showmore").html(options.moreText);
-
- $("." + "divgrow-obj-" + divgrowid).toggle(function () {
- //alert(obj.attr('class'));
- // Set the height from the elements rel value
- //var height = $(this).prevAll("div:first").attr('rel');
-
- $(this).prevAll("div:first").animate({ height: fullHeight + "px" }, options.speed, function () { // Animation complete.
-
- // Hide the overlay text when expanded, change the link text
- if (options.showBrackets) {
- $(this).nextAll("p.divgrow-brackets:first").fadeOut();
- }
- $(this).nextAll("div.divgrow-showmore:first").html(options.lessText);
-
- });
-
-
- }, function () {
-
- $(this).prevAll("div:first").stop(true, false).animate({ height: options.initialHeight }, options.speed, function () { // Animation complete.
-
- // show the overlay text while closed, change the link text
- if (options.showBrackets) {
- $(this).nextAll("p.divgrow-brackets:first").stop(true, false).fadeIn();
- }
- $(this).nextAll("div.divgrow-showmore:first").stop(true, false).html(options.moreText);
-
- });
- });
-
- });
- };
-})(jQuery);
-
-
-
-
-
diff --git a/library/jquery.divgrow/jquery.divgrow-1.3.1.min.js b/library/jquery.divgrow/jquery.divgrow-1.3.1.min.js
deleted file mode 100644
index fd08f7fa8..000000000
--- a/library/jquery.divgrow/jquery.divgrow-1.3.1.min.js
+++ /dev/null
@@ -1 +0,0 @@
-(function ($) { var divgrowid = 0; $.fn.divgrow = function (options) { var options = $.extend({}, { initialHeight: 100, moreText: "+ Show More", lessText: "- Show Less", speed: 1000, showBrackets: true }, options); return this.each(function () { divgrowid++; obj = $(this); var fullHeight = obj.height() + 10; obj.css('height', options.initialHeight).css('overflow', 'hidden'); if (options.showBrackets) { obj.after('<p class="divgrow-brackets">[&hellip;]</p><a href="#" class="divgrow-showmore' + " divgrow-obj-" + divgrowid + '"' + '></a>') } else { obj.after('<a href="#" class="divgrow-showmore' + " divgrow-obj-" + divgrowid + '"' + '></a>') } $("a.divgrow-showmore").html(options.moreText); $("." + "divgrow-obj-" + divgrowid).toggle(function () { $(this).prevAll("div:first").animate({ height: fullHeight + "px" }, options.speed, function () { if (options.showBrackets) { $(this).nextAll("p.divgrow-brackets:first").fadeOut() } $(this).nextAll("a.divgrow-showmore:first").html(options.lessText) }) }, function () { $(this).prevAll("div:first").stop(true, false).animate({ height: options.initialHeight }, options.speed, function () { if (options.showBrackets) { $(this).nextAll("p.divgrow-brackets:first").stop(true, false).fadeIn() } $(this).nextAll("a.divgrow-showmore:first").stop(true, false).html(options.moreText) }) }) }) } })(jQuery); \ No newline at end of file
diff --git a/library/jslider/.gitignore b/library/jslider/.gitignore
deleted file mode 100644
index 1e0fc5a99..000000000
--- a/library/jslider/.gitignore
+++ /dev/null
@@ -1,2 +0,0 @@
-*/.DS_Store
-.DS_Store
diff --git a/library/jslider/MIT-LICENSE.txt b/library/jslider/MIT-LICENSE.txt
deleted file mode 100644
index b193a88a9..000000000
--- a/library/jslider/MIT-LICENSE.txt
+++ /dev/null
@@ -1,20 +0,0 @@
-The MIT License (MIT)
-Copyright (c) 2012 Egor Khmelev
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is
-furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in all
-copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
-SOFTWARE. \ No newline at end of file
diff --git a/library/jslider/Makefile b/library/jslider/Makefile
deleted file mode 100644
index 0559b48e5..000000000
--- a/library/jslider/Makefile
+++ /dev/null
@@ -1,15 +0,0 @@
-
-css_compiler: js_compiler
- mkdir -p bin
- cat css/jslider.css css/jslider.blue.css css/jslider.plastic.css css/jslider.round.css css/jslider.round.plastic.css > bin/jquery.slider.all.css
- java -jar tools/yuicompressor-2.4.7.jar --type=css bin/jquery.slider.all.css > bin/jquery.slider.min.css
- rm -f bin/jquery.slider.all.css
-
-js_compiler:
- mkdir -p bin
- rm -f bin/jquery.slider.all.js bin/jquery.slider.min.js
- cat js/jshashtable-2.1_src.js js/jquery.numberformatter-1.2.3.js js/tmpl.js js/jquery.dependClass-0.1.js js/draggable-0.1.js js/jquery.slider.js > bin/jquery.slider.all.js
- uglifyjs -nc bin/jquery.slider.all.js > bin/jquery.slider.min.js
- rm -f bin/jquery.slider.all.js
-
-
diff --git a/library/jslider/README.md b/library/jslider/README.md
deleted file mode 100644
index 0d4c61347..000000000
--- a/library/jslider/README.md
+++ /dev/null
@@ -1,9 +0,0 @@
-# jQuery Slider plugin
-
-jQuery Slider is easy to use and multifunctional jQuery plugin.
-
-[Check out demos and documentations here](http://egorkhmelev.github.com/jslider/)
-
-## License
-
-(MIT License) — Copyright &copy; 2012 Egor Khmelev \ No newline at end of file
diff --git a/library/jslider/bin/jquery.slider.min.css b/library/jslider/bin/jquery.slider.min.css
deleted file mode 100644
index 14b3f2210..000000000
--- a/library/jslider/bin/jquery.slider.min.css
+++ /dev/null
@@ -1 +0,0 @@
-.jslider .jslider-bg i,.jslider .jslider-pointer{background:url(../img/jslider.png) no-repeat 0 0}.jslider{display:block;width:100%;height:1em;position:relative;top:.6em;font-family:Arial,sans-serif}.jslider table{width:100%;border-collapse:collapse;border:0}.jslider td,.jslider th{padding:0;vertical-align:top;text-align:left;border:0}.jslider table,.jslider table tr,.jslider table tr td{width:100%;vertical-align:top}.jslider .jslider-bg{position:relative}.jslider .jslider-bg i{height:5px;position:absolute;font-size:0;top:0}.jslider .jslider-bg .l{width:50%;background-position:0 0;left:0}.jslider .jslider-bg .r{width:50%;left:50%;background-position:right 0}.jslider .jslider-bg .v{position:absolute;width:60%;left:20%;top:0;height:5px;background-position:0 -20px}.jslider .jslider-pointer{width:13px;height:15px;background-position:0 -40px;position:absolute;left:20%;top:-4px;margin-left:-6px;cursor:pointer;cursor:hand}.jslider .jslider-pointer-hover{background-position:-20px -40px}.jslider .jslider-pointer-to{left:80%}.jslider .jslider-label{font-size:9px;line-height:12px;color:black;opacity:.4;white-space:nowrap;padding:0 2px;position:absolute;top:-18px;left:0}.jslider .jslider-label-to{left:auto;right:0}.jslider .jslider-value{font-size:9px;white-space:nowrap;padding:1px 2px 0;position:absolute;top:-19px;left:20%;background:white;line-height:12px;-moz-border-radius:2px;-webkit-border-radius:2px;-o-border-radius:2px;border-radius:2px}.jslider .jslider-value-to{left:80%}.jslider .jslider-label small,.jslider .jslider-value small{position:relative;top:-0.4em}.jslider .jslider-scale{position:relative;top:9px}.jslider .jslider-scale span{position:absolute;height:5px;border-left:1px solid #999;font-size:0}.jslider .jslider-scale ins{font-size:9px;text-decoration:none;position:absolute;left:0;top:5px;color:#999}.jslider-single .jslider-pointer-to,.jslider-single .jslider-value-to,.jslider-single .jslider-bg .v,.jslider-limitless .jslider-label{display:none}.jslider_blue .jslider-bg i,.jslider_blue .jslider-pointer{background-image:url(../img/jslider.blue.png)}.jslider_plastic .jslider-bg i,.jslider_plastic .jslider-pointer{background-image:url(../img/jslider.plastic.png)}.jslider_round .jslider-bg i,.jslider_round .jslider-pointer{background-image:url(../img/jslider.round.png)}.jslider_round .jslider-pointer{width:17px;height:17px;top:-6px;margin-left:-8px}.jslider_round_plastic .jslider-bg i,.jslider_round_plastic .jslider-pointer{background-image:url(../img/jslider.round.plastic.png)}.jslider_round_plastic .jslider-pointer{width:18px;height:18px;top:-7px;margin-left:-8px} \ No newline at end of file
diff --git a/library/jslider/bin/jquery.slider.min.js b/library/jslider/bin/jquery.slider.min.js
deleted file mode 100644
index 562c5af80..000000000
--- a/library/jslider/bin/jquery.slider.min.js
+++ /dev/null
@@ -1 +0,0 @@
-var Hashtable=function(){function c(b){var d;if(typeof b=="string")return b;if(typeof b.hashCode==a)return d=b.hashCode(),typeof d=="string"?d:c(d);if(typeof b.toString==a)return b.toString();try{return String(b)}catch(e){return Object.prototype.toString.call(b)}}function d(a,b){return a.equals(b)}function e(b,c){return typeof c.equals==a?c.equals(b):b===c}function f(a){return function(b){if(b===null)throw new Error("null is not a valid "+a);if(typeof b=="undefined")throw new Error(a+" must not be undefined")}}function i(a,b,c,d){this[0]=a,this.entries=[],this.addEntry(b,c),d!==null&&(this.getEqualityFunction=function(){return d})}function m(a){return function(b){var c=this.entries.length,d,e=this.getEqualityFunction(b);while(c--){d=this.entries[c];if(e(b,d[0]))switch(a){case j:return!0;case k:return d;case l:return[c,d[1]]}}return!1}}function n(a){return function(b){var c=b.length;for(var d=0,e=this.entries.length;d<e;++d)b[c+d]=this.entries[d][a]}}function o(a,b){var c=a.length,d;while(c--){d=a[c];if(b===d[0])return c}return null}function p(a,b){var c=a[b];return c&&c instanceof i?c:null}function q(d,e){var f=this,j=[],k={},l=typeof d==a?d:c,m=typeof e==a?e:null;this.put=function(a,b){g(a),h(b);var c=l(a),d,e,f=null;return d=p(k,c),d?(e=d.getEntryForKey(a),e?(f=e[1],e[1]=b):d.addEntry(a,b)):(d=new i(c,a,b,m),j[j.length]=d,k[c]=d),f},this.get=function(a){g(a);var b=l(a),c=p(k,b);if(c){var d=c.getEntryForKey(a);if(d)return d[1]}return null},this.containsKey=function(a){g(a);var b=l(a),c=p(k,b);return c?c.containsKey(a):!1},this.containsValue=function(a){h(a);var b=j.length;while(b--)if(j[b].containsValue(a))return!0;return!1},this.clear=function(){j.length=0,k={}},this.isEmpty=function(){return!j.length};var n=function(a){return function(){var b=[],c=j.length;while(c--)j[c][a](b);return b}};this.keys=n("keys"),this.values=n("values"),this.entries=n("getEntries"),this.remove=function(a){g(a);var c=l(a),d,e=null,f=p(k,c);return f&&(e=f.removeEntryForKey(a),e!==null&&(f.entries.length||(d=o(j,c),b(j,d),delete k[c]))),e},this.size=function(){var a=0,b=j.length;while(b--)a+=j[b].entries.length;return a},this.each=function(a){var b=f.entries(),c=b.length,d;while(c--)d=b[c],a(d[0],d[1])},this.putAll=function(b,c){var d=b.entries(),e,g,h,i,j=d.length,k=typeof c==a;while(j--)e=d[j],g=e[0],h=e[1],k&&(i=f.get(g))&&(h=c(g,i,h)),f.put(g,h)},this.clone=function(){var a=new q(d,e);return a.putAll(f),a}}var a="function",b=typeof Array.prototype.splice==a?function(a,b){a.splice(b,1)}:function(a,b){var c,d,e;if(b===a.length-1)a.length=b;else{c=a.slice(b+1),a.length=b;for(d=0,e=c.length;d<e;++d)a[b+d]=c[d]}},g=f("key"),h=f("value"),j=0,k=1,l=2;return i.prototype={getEqualityFunction:function(b){return typeof b.equals==a?d:e},getEntryForKey:m(k),getEntryAndIndexForKey:m(l),removeEntryForKey:function(a){var c=this.getEntryAndIndexForKey(a);return c?(b(this.entries,c[0]),c[1]):null},addEntry:function(a,b){this.entries[this.entries.length]=[a,b]},keys:n(0),values:n(1),getEntries:function(a){var b=a.length;for(var c=0,d=this.entries.length;c<d;++c)a[b+c]=this.entries[c].slice(0)},containsKey:m(j),containsValue:function(a){var b=this.entries.length;while(b--)if(a===this.entries[b][1])return!0;return!1}},q}();(function(a){function i(a,b,c){this.dec=a,this.group=b,this.neg=c}function j(){for(var a=0;a<h.length;a++){localeGroup=h[a];for(var c=0;c<localeGroup.length;c++)b.put(localeGroup[c],a)}}function k(a,c){b.size()==0&&j();var d=".",e=",",f="-";c==0&&(a.indexOf("_")!=-1?a=a.split("_")[1].toLowerCase():a.indexOf("-")!=-1&&(a=a.split("-")[1].toLowerCase()));var h=b.get(a);if(h){var k=g[h];k&&(d=k[0],e=k[1])}return new i(d,e,f)}var b=new Hashtable,c=["ae","au","ca","cn","eg","gb","hk","il","in","jp","sk","th","tw","us"],d=["at","br","de","dk","es","gr","it","nl","pt","tr","vn"],e=["cz","fi","fr","ru","se","pl"],f=["ch"],g=[[".",","],[",","."],[","," "],[".","'"]],h=[c,d,e,f];a.fn.formatNumber=function(b,c,d){return this.each(function(){c==null&&(c=!0),d==null&&(d=!0);var e;a(this).is(":input")?e=new String(a(this).val()):e=new String(a(this).text());var f=a.formatNumber(e,b);c&&(a(this).is(":input")?a(this).val(f):a(this).text(f));if(d)return f})},a.formatNumber=function(b,c){var c=a.extend({},a.fn.formatNumber.defaults,c),d=k(c.locale.toLowerCase(),c.isFullLocale),e=d.dec,f=d.group,g=d.neg,h="0#-,.",i="",j=!1;for(var l=0;l<c.format.length;l++){if(h.indexOf(c.format.charAt(l))!=-1){if(l==0&&c.format.charAt(l)=="-"){j=!0;continue}break}i+=c.format.charAt(l)}var m="";for(var l=c.format.length-1;l>=0;l--){if(h.indexOf(c.format.charAt(l))!=-1)break;m=c.format.charAt(l)+m}c.format=c.format.substring(i.length),c.format=c.format.substring(0,c.format.length-m.length);var n=new Number(b);return a._formatNumber(n,c,m,i,j)},a._formatNumber=function(b,c,d,e,f){var c=a.extend({},a.fn.formatNumber.defaults,c),g=k(c.locale.toLowerCase(),c.isFullLocale),h=g.dec,i=g.group,j=g.neg,l=!1;if(isNaN(b)){if(c.nanForceZero!=1)return null;b=0,l=!0}d=="%"&&(b*=100);var m="";if(c.format.indexOf(".")>-1){var n=h,o=c.format.substring(c.format.lastIndexOf(".")+1);if(c.round==1)b=new Number(b.toFixed(o.length));else{var p=b.toString();p=p.substring(0,p.lastIndexOf(".")+o.length+1),b=new Number(p)}var q=b%1,r=new String(q.toFixed(o.length));r=r.substring(r.lastIndexOf(".")+1);for(var s=0;s<o.length;s++){if(o.charAt(s)=="#"&&r.charAt(s)!="0"){n+=r.charAt(s);continue}if(o.charAt(s)=="#"&&r.charAt(s)=="0"){var t=r.substring(s);if(t.match("[1-9]")){n+=r.charAt(s);continue}break}o.charAt(s)=="0"&&(n+=r.charAt(s))}m+=n}else b=Math.round(b);var u=Math.floor(b);b<0&&(u=Math.ceil(b));var v="";c.format.indexOf(".")==-1?v=c.format:v=c.format.substring(0,c.format.indexOf("."));var w="";if(u!=0||v.substr(v.length-1)!="#"||l){var x=new String(Math.abs(u)),y=9999;v.lastIndexOf(",")!=-1&&(y=v.length-v.lastIndexOf(",")-1);var z=0;for(var s=x.length-1;s>-1;s--)w=x.charAt(s)+w,z++,z==y&&s!=0&&(w=i+w,z=0);if(v.length>w.length){var A=v.indexOf("0");if(A!=-1){var B=v.length-A,C=v.length-w.length-1;while(w.length<B){var D=v.charAt(C);D==","&&(D=i),w=D+w,C--}}}}return!w&&v.indexOf("0",v.length-1)!==-1&&(w="0"),m=w+m,b<0&&f&&e.length>0?e=j+e:b<0&&(m=j+m),c.decimalSeparatorAlwaysShown||m.lastIndexOf(h)==m.length-1&&(m=m.substring(0,m.length-1)),m=e+m+d,m},a.fn.parseNumber=function(b,c,d){c==null&&(c=!0),d==null&&(d=!0);var e;a(this).is(":input")?e=new String(a(this).val()):e=new String(a(this).text());var f=a.parseNumber(e,b);if(f){c&&(a(this).is(":input")?a(this).val(f.toString()):a(this).text(f.toString()));if(d)return f}},a.parseNumber=function(b,c){var c=a.extend({},a.fn.parseNumber.defaults,c),d=k(c.locale.toLowerCase(),c.isFullLocale),e=d.dec,f=d.group,g=d.neg,h="1234567890.-";while(b.indexOf(f)>-1)b=b.replace(f,"");b=b.replace(e,".").replace(g,"-");var i="",j=!1;if(b.charAt(b.length-1)=="%"||c.isPercentage==1)j=!0;for(var l=0;l<b.length;l++)h.indexOf(b.charAt(l))>-1&&(i+=b.charAt(l));var m=new Number(i);if(j){m/=100;var n=i.indexOf(".");if(n!=-1){var o=i.length-n-1;m=m.toFixed(o+2)}else m=m.toFixed(i.length-1)}return m},a.fn.parseNumber.defaults={locale:"us",decimalSeparatorAlwaysShown:!1,isPercentage:!1,isFullLocale:!1},a.fn.formatNumber.defaults={format:"#,###.00",locale:"us",decimalSeparatorAlwaysShown:!1,nanForceZero:!0,round:!0,isFullLocale:!1},Number.prototype.toFixed=function(b){return a._roundNumber(this,b)},a._roundNumber=function(a,b){var c=Math.pow(10,b||0),d=String(Math.round(a*c)/c);if(b>0){var e=d.indexOf(".");e==-1?(d+=".",e=0):e=d.length-(e+1);while(e<b)d+="0",e++}return d}})(jQuery),function(){var a={};this.tmpl=function b(c,d){var e=/\W/.test(c)?new Function("obj","var p=[],print=function(){p.push.apply(p,arguments);};with(obj){p.push('"+c.replace(/[\r\t\n]/g," ").split("<%").join("\t").replace(/((^|%>)[^\t]*)'/g,"$1\r").replace(/\t=(.*?)%>/g,"',$1,'").split("\t").join("');").split("%>").join("p.push('").split("\r").join("\\'")+"');}return p.join('');"):a[c]=a[c]||b(document.getElementById(c).innerHTML);return d?e(d):e}}(),function(a){a.baseClass=function(b){return b=a(b),b.get(0).className.match(/([^ ]+)/)[1]},a.fn.addDependClass=function(b,c){var d={delimiter:c?c:"-"};return this.each(function(){var c=a.baseClass(this);c&&a(this).addClass(c+d.delimiter+b)})},a.fn.removeDependClass=function(b,c){var d={delimiter:c?c:"-"};return this.each(function(){var c=a.baseClass(this);c&&a(this).removeClass(c+d.delimiter+b)})},a.fn.toggleDependClass=function(b,c){var d={delimiter:c?c:"-"};return this.each(function(){var c=a.baseClass(this);c&&(a(this).is("."+c+d.delimiter+b)?a(this).removeClass(c+d.delimiter+b):a(this).addClass(c+d.delimiter+b))})}}(jQuery),function(a){function b(){this._init.apply(this,arguments)}b.prototype.oninit=function(){},b.prototype.events=function(){},b.prototype.onmousedown=function(){this.ptr.css({position:"absolute"})},b.prototype.onmousemove=function(a,b,c){this.ptr.css({left:b,top:c})},b.prototype.onmouseup=function(){},b.prototype.isDefault={drag:!1,clicked:!1,toclick:!0,mouseup:!1},b.prototype._init=function(){if(arguments.length>0){this.ptr=a(arguments[0]),this.outer=a(".draggable-outer"),this.is={},a.extend(this.is,this.isDefault);var b=this.ptr.offset();this.d={left:b.left,top:b.top,width:this.ptr.width(),height:this.ptr.height()},this.oninit.apply(this,arguments),this._events()}},b.prototype._getPageCoords=function(a){return a.targetTouches&&a.targetTouches[0]?{x:a.targetTouches[0].pageX,y:a.targetTouches[0].pageY}:{x:a.pageX,y:a.pageY}},b.prototype._bindEvent=function(a,b,c){var d=this;this.supportTouches_?a.get(0).addEventListener(this.events_[b],c,!1):a.bind(this.events_[b],c)},b.prototype._events=function(){var b=this;this.supportTouches_=a.browser.webkit&&navigator.userAgent.indexOf("Mobile")!=-1,this.events_={click:this.supportTouches_?"touchstart":"click",down:this.supportTouches_?"touchstart":"mousedown",move:this.supportTouches_?"touchmove":"mousemove",up:this.supportTouches_?"touchend":"mouseup"},this._bindEvent(a(document),"move",function(a){b.is.drag&&(a.stopPropagation(),a.preventDefault(),b._mousemove(a))}),this._bindEvent(a(document),"down",function(a){b.is.drag&&(a.stopPropagation(),a.preventDefault())}),this._bindEvent(a(document),"up",function(a){b._mouseup(a)}),this._bindEvent(this.ptr,"down",function(a){return b._mousedown(a),!1}),this._bindEvent(this.ptr,"up",function(a){b._mouseup(a)}),this.ptr.find("a").click(function(){b.is.clicked=!0;if(!b.is.toclick)return b.is.toclick=!0,!1}).mousedown(function(a){return b._mousedown(a),!1}),this.events()},b.prototype._mousedown=function(b){this.is.drag=!0,this.is.clicked=!1,this.is.mouseup=!1;var c=this.ptr.offset(),d=this._getPageCoords(b);this.cx=d.x-c.left,this.cy=d.y-c.top,a.extend(this.d,{left:c.left,top:c.top,width:this.ptr.width(),height:this.ptr.height()}),this.outer&&this.outer.get(0)&&this.outer.css({height:Math.max(this.outer.height(),a(document.body).height()),overflow:"hidden"}),this.onmousedown(b)},b.prototype._mousemove=function(a){this.is.toclick=!1;var b=this._getPageCoords(a);this.onmousemove(a,b.x-this.cx,b.y-this.cy)},b.prototype._mouseup=function(b){var c=this;this.is.drag&&(this.is.drag=!1,this.outer&&this.outer.get(0)&&(a.browser.mozilla?this.outer.css({overflow:"hidden"}):this.outer.css({overflow:"visible"}),a.browser.msie&&a.browser.version=="6.0"?this.outer.css({height:"100%"}):this.outer.css({height:"auto"})),this.onmouseup(b))},window.Draggable=b}(jQuery),function(a){function b(a){return typeof a=="undefined"?!1:a instanceof Array||!(a instanceof Object)&&Object.prototype.toString.call(a)=="[object Array]"||typeof a.length=="number"&&typeof a.splice!="undefined"&&typeof a.propertyIsEnumerable!="undefined"&&!a.propertyIsEnumerable("splice")?!0:!1}function d(){return this.init.apply(this,arguments)}function e(){Draggable.apply(this,arguments)}a.slider=function(b,c){var e=a(b);return e.data("jslider")||e.data("jslider",new d(b,c)),e.data("jslider")},a.fn.slider=function(c,d){function g(a){return a!==undefined}function h(a){return a!=null}var e,f=arguments;return this.each(function(){var i=a.slider(this,c);if(typeof c=="string")switch(c){case"value":if(g(f[1])&&g(f[2])){var j=i.getPointers();h(j[0])&&h(f[1])&&(j[0].set(f[1]),j[0].setIndexOver()),h(j[1])&&h(f[2])&&(j[1].set(f[2]),j[1].setIndexOver())}else if(g(f[1])){var j=i.getPointers();h(j[0])&&h(f[1])&&(j[0].set(f[1]),j[0].setIndexOver())}else e=i.getValue();break;case"prc":if(g(f[1])&&g(f[2])){var j=i.getPointers();h(j[0])&&h(f[1])&&(j[0]._set(f[1]),j[0].setIndexOver()),h(j[1])&&h(f[2])&&(j[1]._set(f[2]),j[1].setIndexOver())}else if(g(f[1])){var j=i.getPointers();h(j[0])&&h(f[1])&&(j[0]._set(f[1]),j[0].setIndexOver())}else e=i.getPrcValue();break;case"calculatedValue":var k=i.getValue().split(";");e="";for(var l=0;l<k.length;l++)e+=(l>0?";":"")+i.nice(k[l]);break;case"skin":i.setSkin(f[1])}else!c&&!d&&(b(e)||(e=[]),e.push(i))}),b(e)&&e.length==1&&(e=e[0]),e||this};var c={settings:{from:1,to:10,step:1,smooth:!0,limits:!0,round:0,format:{format:"#,##0.##"},value:"5;7",dimension:""},className:"jslider",selector:".jslider-",template:tmpl('<span class="<%=className%>"><table><tr><td><div class="<%=className%>-bg"><i class="l"></i><i class="r"></i><i class="v"></i></div><div class="<%=className%>-pointer"></div><div class="<%=className%>-pointer <%=className%>-pointer-to"></div><div class="<%=className%>-label"><span><%=settings.from%></span></div><div class="<%=className%>-label <%=className%>-label-to"><span><%=settings.to%></span><%=settings.dimension%></div><div class="<%=className%>-value"><span></span><%=settings.dimension%></div><div class="<%=className%>-value <%=className%>-value-to"><span></span><%=settings.dimension%></div><div class="<%=className%>-scale"><%=scale%></div></td></tr></table></span>')};d.prototype.init=function(b,d){this.settings=a.extend(!0,{},c.settings,d?d:{}),this.inputNode=a(b).hide(),this.settings.interval=this.settings.to-this.settings.from,this.settings.value=this.inputNode.attr("value"),this.settings.calculate&&a.isFunction(this.settings.calculate)&&(this.nice=this.settings.calculate),this.settings.onstatechange&&a.isFunction(this.settings.onstatechange)&&(this.onstatechange=this.settings.onstatechange),this.is={init:!1},this.o={},this.create()},d.prototype.onstatechange=function(){},d.prototype.create=function(){var b=this;this.domNode=a(c.template({className:c.className,settings:{from:this.nice(this.settings.from),to:this.nice(this.settings.to),dimension:this.settings.dimension},scale:this.generateScale()})),this.inputNode.after(this.domNode),this.drawScale(),this.settings.skin&&this.settings.skin.length>0&&this.setSkin(this.settings.skin),this.sizes={domWidth:this.domNode.width(),domOffset:this.domNode.offset()},a.extend(this.o,{pointers:{},labels:{0:{o:this.domNode.find(c.selector+"value").not(c.selector+"value-to")},1:{o:this.domNode.find(c.selector+"value").filter(c.selector+"value-to")}},limits:{0:this.domNode.find(c.selector+"label").not(c.selector+"label-to"),1:this.domNode.find(c.selector+"label").filter(c.selector+"label-to")}}),a.extend(this.o.labels[0],{value:this.o.labels[0].o.find("span")}),a.extend(this.o.labels[1],{value:this.o.labels[1].o.find("span")}),b.settings.value.split(";")[1]||(this.settings.single=!0,this.domNode.addDependClass("single")),b.settings.limits||this.domNode.addDependClass("limitless"),this.domNode.find(c.selector+"pointer").each(function(a){var c=b.settings.value.split(";")[a];if(c){b.o.pointers[a]=new e(this,a,b);var d=b.settings.value.split(";")[a-1];d&&new Number(c)<new Number(d)&&(c=d),c=c<b.settings.from?b.settings.from:c,c=c>b.settings.to?b.settings.to:c,b.o.pointers[a].set(c,!0)}}),this.o.value=this.domNode.find(".v"),this.is.init=!0,a.each(this.o.pointers,function(a){b.redraw(this)}),function(b){a(window).resize(function(){b.onresize()})}(this)},d.prototype.setSkin=function(a){this.skin_&&this.domNode.removeDependClass(this.skin_,"_"),this.domNode.addDependClass(this.skin_=a,"_")},d.prototype.setPointersIndex=function(b){a.each(this.getPointers(),function(a){this.index(a)})},d.prototype.getPointers=function(){return this.o.pointers},d.prototype.generateScale=function(){if(this.settings.scale&&this.settings.scale.length>0){var a="",b=this.settings.scale,c=Math.round(100/(b.length-1)*10)/10;for(var d=0;d<b.length;d++)a+='<span style="left: '+d*c+'%">'+(b[d]!="|"?"<ins>"+b[d]+"</ins>":"")+"</span>";return a}return""},d.prototype.drawScale=function(){this.domNode.find(c.selector+"scale span ins").each(function(){a(this).css({marginLeft:-a(this).outerWidth()/2})})},d.prototype.onresize=function(){var b=this;this.sizes={domWidth:this.domNode.width(),domOffset:this.domNode.offset()},a.each(this.o.pointers,function(a){b.redraw(this)})},d.prototype.update=function(){this.onresize(),this.drawScale()},d.prototype.limits=function(a,b){if(!this.settings.smooth){var c=this.settings.step*100/this.settings.interval;a=Math.round(a/c)*c}var d=this.o.pointers[1-b.uid];return d&&b.uid&&a<d.value.prc&&(a=d.value.prc),d&&!b.uid&&a>d.value.prc&&(a=d.value.prc),a<0&&(a=0),a>100&&(a=100),Math.round(a*10)/10},d.prototype.redraw=function(a){if(!this.is.init)return!1;this.setValue(),this.o.pointers[0]&&this.o.pointers[1]&&this.o.value.css({left:this.o.pointers[0].value.prc+"%",width:this.o.pointers[1].value.prc-this.o.pointers[0].value.prc+"%"}),this.o.labels[a.uid].value.html(this.nice(a.value.origin)),this.redrawLabels(a)},d.prototype.redrawLabels=function(a){function b(a,b,d){return b.margin=-b.label/2,label_left=b.border+b.margin,label_left<0&&(b.margin-=label_left),b.border+b.label/2>c.sizes.domWidth?(b.margin=0,b.right=!0):b.right=!1,a.o.css({left:d+"%",marginLeft:b.margin,right:"auto"}),b.right&&a.o.css({left:"auto",right:0}),b}var c=this,d=this.o.labels[a.uid],e=a.value.prc,f={label:d.o.outerWidth(),right:!1,border:e*this.sizes.domWidth/100};if(!this.settings.single){var g=this.o.pointers[1-a.uid],h=this.o.labels[g.uid];switch(a.uid){case 0:f.border+f.label/2>h.o.offset().left-this.sizes.domOffset.left?(h.o.css({visibility:"hidden"}),h.value.html(this.nice(g.value.origin)),d.o.css({visibility:"visible"}),e=(g.value.prc-e)/2+e,g.value.prc!=a.value.prc&&(d.value.html(this.nice(a.value.origin)+"&nbsp;&ndash;&nbsp;"+this.nice(g.value.origin)),f.label=d.o.outerWidth(),f.border=e*this.sizes.domWidth/100)):h.o.css({visibility:"visible"});break;case 1:f.border-f.label/2<h.o.offset().left-this.sizes.domOffset.left+h.o.outerWidth()?(h.o.css({visibility:"hidden"}),h.value.html(this.nice(g.value.origin)),d.o.css({visibility:"visible"}),e=(e-g.value.prc)/2+g.value.prc,g.value.prc!=a.value.prc&&(d.value.html(this.nice(g.value.origin)+"&nbsp;&ndash;&nbsp;"+this.nice(a.value.origin)),f.label=d.o.outerWidth(),f.border=e*this.sizes.domWidth/100)):h.o.css({visibility:"visible"})}}f=b(d,f,e);if(h){var f={label:h.o.outerWidth(),right:!1,border:g.value.prc*this.sizes.domWidth/100};f=b(h,f,g.value.prc)}this.redrawLimits()},d.prototype.redrawLimits=function(){if(this.settings.limits){var a=[!0,!0];for(key in this.o.pointers)if(!this.settings.single||key==0){var b=this.o.pointers[key],c=this.o.labels[b.uid],d=c.o.offset().left-this.sizes.domOffset.left,e=this.o.limits[0];d<e.outerWidth()&&(a[0]=!1);var e=this.o.limits[1];d+c.o.outerWidth()>this.sizes.domWidth-e.outerWidth()&&(a[1]=!1)}for(var f=0;f<a.length;f++)a[f]?this.o.limits[f].fadeIn("fast"):this.o.limits[f].fadeOut("fast")}},d.prototype.setValue=function(){var a=this.getValue();this.inputNode.attr("value",a),this.onstatechange.call(this,a)},d.prototype.getValue=function(){if(!this.is.init)return!1;var b=this,c="";return a.each(this.o.pointers,function(a){this.value.prc!=undefined&&!isNaN(this.value.prc)&&(c+=(a>0?";":"")+b.prcToValue(this.value.prc))}),c},d.prototype.getPrcValue=function(){if(!this.is.init)return!1;var b=this,c="";return a.each(this.o.pointers,function(a){this.value.prc!=undefined&&!isNaN(this.value.prc)&&(c+=(a>0?";":"")+this.value.prc)}),c},d.prototype.prcToValue=function(a){if(this.settings.heterogeneity&&this.settings.heterogeneity.length>0){var b=this.settings.heterogeneity,c=0,d=this.settings.from;for(var e=0;e<=b.length;e++){if(b[e])var f=b[e].split("/");else var f=[100,this.settings.to];f[0]=new Number(f[0]),f[1]=new Number(f[1]);if(a>=c&&a<=f[0])var g=d+(a-c)*(f[1]-d)/(f[0]-c);c=f[0],d=f[1]}}else var g=this.settings.from+a*this.settings.interval/100;return this.round(g)},d.prototype.valueToPrc=function(a,b){if(this.settings.heterogeneity&&this.settings.heterogeneity.length>0){var c=this.settings.heterogeneity,d=0,e=this.settings.from;for(var f=0;f<=c.length;f++){if(c[f])var g=c[f].split("/");else var g=[100,this.settings.to];g[0]=new Number(g[0]),g[1]=new Number(g[1]);if(a>=e&&a<=g[1])var h=b.limits(d+(a-e)*(g[0]-d)/(g[1]-e));d=g[0],e=g[1]}}else var h=b.limits((a-this.settings.from)*100/this.settings.interval);return h},d.prototype.round=function(a){return a=Math.round(a/this.settings.step)*this.settings.step,this.settings.round?a=Math.round(a*Math.pow(10,this.settings.round))/Math.pow(10,this.settings.round):a=Math.round(a),a},d.prototype.nice=function(b){return b=b.toString().replace(/,/gi,".").replace(/ /gi,""),a.formatNumber?a.formatNumber(new Number(b),this.settings.format||{}).replace(/-/gi,"&minus;"):new Number(b)},e.prototype=new Draggable,e.prototype.oninit=function(a,b,c){this.uid=b,this.parent=c,this.value={},this.settings=this.parent.settings},e.prototype.onmousedown=function(a){this._parent={offset:this.parent.domNode.offset(),width:this.parent.domNode.width()},this.ptr.addDependClass("hover"),this.setIndexOver()},e.prototype.onmousemove=function(a,b){var c=this._getPageCoords(a);this._set(this.calc(c.x))},e.prototype.onmouseup=function(b){this.parent.settings.callback&&a.isFunction(this.parent.settings.callback)&&this.parent.settings.callback.call(this.parent,this.parent.getValue()),this.ptr.removeDependClass("hover")},e.prototype.setIndexOver=function(){this.parent.setPointersIndex(1),this.index(2)},e.prototype.index=function(a){this.ptr.css({zIndex:a})},e.prototype.limits=function(a){return this.parent.limits(a,this)},e.prototype.calc=function(a){var b=this.limits((a-this._parent.offset.left)*100/this._parent.width);return b},e.prototype.set=function(a,b){this.value.origin=this.parent.round(a),this._set(this.parent.valueToPrc(a,this),b)},e.prototype._set=function(a,b){b||(this.value.origin=this.parent.prcToValue(a)),this.value.prc=a,this.ptr.css({left:a+"%"}),this.parent.redraw(this)}}(jQuery); \ No newline at end of file
diff --git a/library/jslider/css/jslider.blue.css b/library/jslider/css/jslider.blue.css
deleted file mode 100644
index ae378433c..000000000
--- a/library/jslider/css/jslider.blue.css
+++ /dev/null
@@ -1,4 +0,0 @@
-
- .jslider_blue .jslider-bg i,
- .jslider_blue .jslider-pointer { background-image: url(../img/jslider.blue.png); }
- \ No newline at end of file
diff --git a/library/jslider/css/jslider.css b/library/jslider/css/jslider.css
deleted file mode 100644
index fe943dc0a..000000000
--- a/library/jslider/css/jslider.css
+++ /dev/null
@@ -1,39 +0,0 @@
-
- .jslider .jslider-bg i,
- .jslider .jslider-pointer { background: url(../img/jslider.png) no-repeat 0 0; }
-
- .jslider { display: block; width: 100%; height: 1em; position: relative; top: 0.6em; font-family: Arial, sans-serif; }
- .jslider table { width: 100%; border-collapse: collapse; border: 0; }
- .jslider td, .jslider th { padding: 0; vertical-align: top; text-align: left; border: 0; }
-
- .jslider table,
- .jslider table tr,
- .jslider table tr td { width: 100%; vertical-align: top; }
-
- .jslider .jslider-bg { position: relative; }
- .jslider .jslider-bg i { height: 5px; position: absolute; font-size: 0; top: 0; }
- .jslider .jslider-bg .l { width: 50%; background-position: 0 0; left: 0; background: #888; }
- .jslider .jslider-bg .r { width: 50%; left: 50%; background-position: right 0; background: #888;}
- .jslider .jslider-bg .v { position: absolute; background: url(../img/jslider.png) repeat-x 0 0; width: 60%; left: 20%; top: 0; height: 5px; background-position: 0 -20px; }
-
- .jslider .jslider-pointer { width: 13px; height: 15px; background-position: 0 -40px; position: absolute; left: 20%; top: -4px; margin-left: -6px; cursor: pointer; cursor: hand; }
- .jslider .jslider-pointer-hover { background-position: -20px -40px; }
- .jslider .jslider-pointer-to { left: 80%; }
-
- .jslider .jslider-label { font-size: 9px; line-height: 12px; color: black; opacity: 0.4; white-space: nowrap; padding: 0px 2px; position: absolute; top: -18px; left: 0px; }
- .jslider .jslider-label-to { left: auto; right: 0; }
-
- .jslider .jslider-value { font-size: 9px; white-space: nowrap; padding: 1px 2px 0; position: absolute; top: -19px; left: 20%; line-height: 12px; }
- .jslider .jslider-value-to { left: 80%; }
-
- .jslider .jslider-label small,
- .jslider .jslider-value small { position: relative; top: -0.4em; }
-
- .jslider .jslider-scale { position: relative; top: 9px; }
- .jslider .jslider-scale span { position: absolute; height: 5px; border-left: 1px solid #999; font-size: 0; }
- .jslider .jslider-scale ins { font-size: 9px; text-decoration: none; position: absolute; left: 0px; top: 5px; color: #999; }
-
- .jslider-single .jslider-pointer-to,
- .jslider-single .jslider-value-to,
- .jslider-single .jslider-bg .v,
- .jslider-limitless .jslider-label { display: none; }
diff --git a/library/jslider/css/jslider.plastic.css b/library/jslider/css/jslider.plastic.css
deleted file mode 100644
index 32b54676b..000000000
--- a/library/jslider/css/jslider.plastic.css
+++ /dev/null
@@ -1,3 +0,0 @@
-
- .jslider_plastic .jslider-bg i,
- .jslider_plastic .jslider-pointer { background-image: url(../img/jslider.plastic.png); }
diff --git a/library/jslider/css/jslider.round.css b/library/jslider/css/jslider.round.css
deleted file mode 100644
index 00ad952e6..000000000
--- a/library/jslider/css/jslider.round.css
+++ /dev/null
@@ -1,5 +0,0 @@
-
- .jslider_round .jslider-bg i,
- .jslider_round .jslider-pointer { background-image: url(../img/jslider.round.png); }
-
- .jslider_round .jslider-pointer { width: 17px; height: 17px; top: -6px; margin-left: -8px; }
diff --git a/library/jslider/css/jslider.round.plastic.css b/library/jslider/css/jslider.round.plastic.css
deleted file mode 100644
index 4272e1fb0..000000000
--- a/library/jslider/css/jslider.round.plastic.css
+++ /dev/null
@@ -1,5 +0,0 @@
-
- .jslider_round_plastic .jslider-bg i,
- .jslider_round_plastic .jslider-pointer { background-image: url(../img/jslider.round.plastic.png); }
-
- .jslider_round_plastic .jslider-pointer { width: 18px; height: 18px; top: -7px; margin-left: -8px; }
diff --git a/library/jslider/img/jslider.blue.png b/library/jslider/img/jslider.blue.png
deleted file mode 100644
index e3d573c12..000000000
--- a/library/jslider/img/jslider.blue.png
+++ /dev/null
Binary files differ
diff --git a/library/jslider/img/jslider.plastic.png b/library/jslider/img/jslider.plastic.png
deleted file mode 100644
index 39c6d6527..000000000
--- a/library/jslider/img/jslider.plastic.png
+++ /dev/null
Binary files differ
diff --git a/library/jslider/img/jslider.png b/library/jslider/img/jslider.png
deleted file mode 100644
index 280eb7188..000000000
--- a/library/jslider/img/jslider.png
+++ /dev/null
Binary files differ
diff --git a/library/jslider/img/jslider.round.plastic.png b/library/jslider/img/jslider.round.plastic.png
deleted file mode 100644
index 3604d76bd..000000000
--- a/library/jslider/img/jslider.round.plastic.png
+++ /dev/null
Binary files differ
diff --git a/library/jslider/img/jslider.round.png b/library/jslider/img/jslider.round.png
deleted file mode 100644
index 24153eaa3..000000000
--- a/library/jslider/img/jslider.round.png
+++ /dev/null
Binary files differ
diff --git a/library/jslider/index.html b/library/jslider/index.html
deleted file mode 100644
index 994b0783f..000000000
--- a/library/jslider/index.html
+++ /dev/null
@@ -1,152 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
- <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
- <title>jSlider</title>
-
- <!-- bin/jquery.slider.min.css -->
- <link rel="stylesheet" href="css/jslider.css" type="text/css">
- <link rel="stylesheet" href="css/jslider.blue.css" type="text/css">
- <link rel="stylesheet" href="css/jslider.plastic.css" type="text/css">
- <link rel="stylesheet" href="css/jslider.round.css" type="text/css">
- <link rel="stylesheet" href="css/jslider.round.plastic.css" type="text/css">
- <!-- end -->
-
- <script type="text/javascript" src="js/jquery-1.7.1.js"></script>
-
- <!-- bin/jquery.slider.min.js -->
- <script type="text/javascript" src="js/jshashtable-2.1_src.js"></script>
- <script type="text/javascript" src="js/jquery.numberformatter-1.2.3.js"></script>
- <script type="text/javascript" src="js/tmpl.js"></script>
- <script type="text/javascript" src="js/jquery.dependClass-0.1.js"></script>
- <script type="text/javascript" src="js/draggable-0.1.js"></script>
- <script type="text/javascript" src="js/jquery.slider.js"></script>
- <!-- end -->
-
- <style type="text/css" media="screen">
- body { background: #EEF0F7; }
- .layout { padding: 50px; font-family: Georgia, serif; }
- .layout-slider { margin-bottom: 60px; width: 50%; }
- .layout-slider-settings { font-size: 12px; padding-bottom: 10px; }
- .layout-slider-settings pre { font-family: Courier; }
- </style>
-
-</head>
-<body>
-
- <div class="layout">
-
- <div class="layout-slider" style="width: 100%">
- Slider <span style="display: inline-block; width: 400px; padding: 0 5px;"><input id="Slider1" type="slider" name="price" value="30000.5;60000" /></span> in string
- </div>
- <script type="text/javascript" charset="utf-8">
- jQuery("#Slider1").slider({ from: 1000, to: 100000, step: 500, smooth: true, round: 0, dimension: "&nbsp;$", skin: "plastic" });
- </script>
-
- <div class="layout-slider-settings">
-<pre>{
- from: 5,
- to: 50,
- step: 2.5,
- round: 1,
- format: { format: '##.0', locale: 'de' },
- dimension: '&amp;nbsp;€'
-}</pre>
- </div>
- <div class="layout-slider">
- <input id="SliderSingle" type="slider" name="price" value="20" />
- </div>
- <script type="text/javascript" charset="utf-8">
- jQuery("#SliderSingle").slider({ from: 5, to: 50, step: 2.5, round: 1, format: { format: '##.0', locale: 'de' }, dimension: '&nbsp;€', skin: "round" });
- </script>
-
- <div class="layout-slider-settings">
-<pre>{
- from: 5000,
- to: 150000,
- heterogeneity: ['50/50000'],
- step: 1000,
- dimension: '&amp;nbsp;$'
-}</pre>
- </div>
- <div class="layout-slider">
- <input id="Slider2" type="slider" name="price" value="5000;50000" />
- </div>
- <script type="text/javascript" charset="utf-8">
- jQuery("#Slider2").slider({ from: 5000, to: 150000, heterogeneity: ['50/50000'], step: 1000, dimension: '&nbsp;$' });
- </script>
-
- <div class="layout-slider-settings">
-<pre>{
- from: 0,
- to: 500,
- heterogeneity: ['50/100', '75/250'],
- scale: [0, '|', 50, '|' , '100', '|', 250, '|', 500],
- limits: false,
- step: 1,
- dimension: '&amp;nbsp;m&lt;small&gt;2&lt;/small&gt;'
-}</pre>
- </div>
- <div class="layout-slider">
- <input id="Slider3" type="slider" name="area" value="25;75" />
- </div>
- <script type="text/javascript" charset="utf-8">
- jQuery("#Slider3").slider({ from: 0, to: 500, heterogeneity: ['50/100', '75/250'], scale: [0, '|', 50, '|', '100', '|', 250, '|', 500], limits: false, step: 1, dimension: '&nbsp;m<small>2</small>', skin: "round_plastic" });
- </script>
-
- <div class="layout-slider-settings">
-<pre>{
- from: 1,
- to: 30,
- heterogeneity: ['50/5', '75/15'],
- scale: [1, '|', 3, '|', '5', '|', 15, '|', 30],
- limits: false,
- step: 1,
- dimension: '',
- skin: "blue"
-}</pre>
- </div>
- <div class="layout-slider">
- <input id="Slider4" type="slider" name="area" value="2;10" />
- </div>
- <script type="text/javascript" charset="utf-8">
- jQuery("#Slider4").slider({ from: 1, to: 30, heterogeneity: ['50/5', '75/15'], scale: [1, '|', 3, '|', '5', '|', 15, '|', 30], limits: false, step: 1, dimension: '', skin: "blue", callback: function( value ){ console.dir( this ); } });
- </script>
-
-
- <div class="layout-slider-settings">
-<pre>{
- from: 480,
- to: 1020,
- step: 15,
- dimension: '',
- scale: ['8:00', '9:00', '10:00', '11:00', '12:00', '13:00', '14:00', '15:00', '16:00', '17:00'],
- limits: false,
- calculate: function( value ){
- var hours = Math.floor( value / 60 );
- var mins = ( value - hours*60 );
- return (hours &lt; 10 ? "0"+hours : hours) + ":" + ( mins == 0 ? "00" : mins );
- },
- onstatechange: function( value ){
- console.dir( this );
- }
-}</pre>
- </div>
- <div class="layout-slider">
- <input id="Slider5" type="slider" name="area" value="600;720" />
- </div>
- <script type="text/javascript" charset="utf-8">
-
- jQuery("#Slider5").slider({ from: 480, to: 1020, step: 15, dimension: '', scale: ['8:00', '9:00', '10:00', '11:00', '12:00', '13:00', '14:00', '15:00', '16:00', '17:00'], limits: false, calculate: function( value ){
- var hours = Math.floor( value / 60 );
- var mins = ( value - hours*60 );
- return (hours < 10 ? "0"+hours : hours) + ":" + ( mins == 0 ? "00" : mins );
- }})
-
- </script>
-
- </div>
-
-
-</body>
-</html> \ No newline at end of file
diff --git a/library/jslider/js/draggable-0.1.js b/library/jslider/js/draggable-0.1.js
deleted file mode 100644
index dd2688da5..000000000
--- a/library/jslider/js/draggable-0.1.js
+++ /dev/null
@@ -1,196 +0,0 @@
-/**
- * draggable - Class allows to make any element draggable
- *
- * Written by
- * Egor Khmelev (hmelyoff@gmail.com)
- *
- * Licensed under the MIT (MIT-LICENSE.txt).
- *
- * @author Egor Khmelev
- * @version 0.1.0-BETA ($Id$)
- *
- **/
-
-(function( $ ){
-
- function Draggable(){
- this._init.apply( this, arguments );
- };
-
- Draggable.prototype.oninit = function(){
-
- };
-
- Draggable.prototype.events = function(){
-
- };
-
- Draggable.prototype.onmousedown = function(){
- this.ptr.css({ position: "absolute" });
- };
-
- Draggable.prototype.onmousemove = function( evt, x, y ){
- this.ptr.css({ left: x, top: y });
- };
-
- Draggable.prototype.onmouseup = function(){
-
- };
-
- Draggable.prototype.isDefault = {
- drag: false,
- clicked: false,
- toclick: true,
- mouseup: false
- };
-
- Draggable.prototype._init = function(){
- if( arguments.length > 0 ){
- this.ptr = $(arguments[0]);
- this.outer = $(".draggable-outer");
-
- this.is = {};
- $.extend( this.is, this.isDefault );
-
- var _offset = this.ptr.offset();
- this.d = {
- left: _offset.left,
- top: _offset.top,
- width: this.ptr.width(),
- height: this.ptr.height()
- };
-
- this.oninit.apply( this, arguments );
-
- this._events();
- }
- };
-
- Draggable.prototype._getPageCoords = function( event ){
- if( event.targetTouches && event.targetTouches[0] ){
- return { x: event.targetTouches[0].pageX, y: event.targetTouches[0].pageY };
- } else
- return { x: event.pageX, y: event.pageY };
- };
-
- Draggable.prototype._bindEvent = function( ptr, eventType, handler ){
- var self = this;
-
- if( this.supportTouches_ )
- ptr.get(0).addEventListener( this.events_[ eventType ], handler, false );
-
- else
- ptr.bind( this.events_[ eventType ], handler );
- };
-
- Draggable.prototype._events = function(){
- var self = this;
-
- this.supportTouches_ = ( $.browser.webkit && navigator.userAgent.indexOf("Mobile") != -1 );
- this.events_ = {
- "click": this.supportTouches_ ? "touchstart" : "click",
- "down": this.supportTouches_ ? "touchstart" : "mousedown",
- "move": this.supportTouches_ ? "touchmove" : "mousemove",
- "up" : this.supportTouches_ ? "touchend" : "mouseup"
- };
-
- this._bindEvent( $( document ), "move", function( event ){
- if( self.is.drag ){
- event.stopPropagation();
- event.preventDefault();
- self._mousemove( event );
- }
- });
- this._bindEvent( $( document ), "down", function( event ){
- if( self.is.drag ){
- event.stopPropagation();
- event.preventDefault();
- }
- });
- this._bindEvent( $( document ), "up", function( event ){
- self._mouseup( event );
- });
-
- this._bindEvent( this.ptr, "down", function( event ){
- self._mousedown( event );
- return false;
- });
- this._bindEvent( this.ptr, "up", function( event ){
- self._mouseup( event );
- });
-
- this.ptr.find("a")
- .click(function(){
- self.is.clicked = true;
-
- if( !self.is.toclick ){
- self.is.toclick = true;
- return false;
- }
- })
- .mousedown(function( event ){
- self._mousedown( event );
- return false;
- });
-
- this.events();
- };
-
- Draggable.prototype._mousedown = function( evt ){
- this.is.drag = true;
- this.is.clicked = false;
- this.is.mouseup = false;
-
- var _offset = this.ptr.offset();
- var coords = this._getPageCoords( evt );
- this.cx = coords.x - _offset.left;
- this.cy = coords.y - _offset.top;
-
- $.extend(this.d, {
- left: _offset.left,
- top: _offset.top,
- width: this.ptr.width(),
- height: this.ptr.height()
- });
-
- if( this.outer && this.outer.get(0) ){
- this.outer.css({ height: Math.max(this.outer.height(), $(document.body).height()), overflow: "hidden" });
- }
-
- this.onmousedown( evt );
- };
-
- Draggable.prototype._mousemove = function( evt ){
- this.is.toclick = false;
- var coords = this._getPageCoords( evt );
- this.onmousemove( evt, coords.x - this.cx, coords.y - this.cy );
- };
-
- Draggable.prototype._mouseup = function( evt ){
- var oThis = this;
-
- if( this.is.drag ){
- this.is.drag = false;
-
- if( this.outer && this.outer.get(0) ){
-
- if( $.browser.mozilla ){
- this.outer.css({ overflow: "hidden" });
- } else {
- this.outer.css({ overflow: "visible" });
- }
-
- if( $.browser.msie && $.browser.version == '6.0' ){
- this.outer.css({ height: "100%" });
- } else {
- this.outer.css({ height: "auto" });
- }
- }
-
- this.onmouseup( evt );
- }
- };
-
- window.Draggable = Draggable;
-
-})( jQuery );
diff --git a/library/jslider/js/jquery-1.7.1.js b/library/jslider/js/jquery-1.7.1.js
deleted file mode 100644
index 8ccd0ea78..000000000
--- a/library/jslider/js/jquery-1.7.1.js
+++ /dev/null
@@ -1,9266 +0,0 @@
-/*!
- * jQuery JavaScript Library v1.7.1
- * http://jquery.com/
- *
- * Copyright 2011, John Resig
- * Dual licensed under the MIT or GPL Version 2 licenses.
- * http://jquery.org/license
- *
- * Includes Sizzle.js
- * http://sizzlejs.com/
- * Copyright 2011, The Dojo Foundation
- * Released under the MIT, BSD, and GPL Licenses.
- *
- * Date: Mon Nov 21 21:11:03 2011 -0500
- */
-(function( window, undefined ) {
-
-// Use the correct document accordingly with window argument (sandbox)
-var document = window.document,
- navigator = window.navigator,
- location = window.location;
-var jQuery = (function() {
-
-// Define a local copy of jQuery
-var jQuery = function( selector, context ) {
- // The jQuery object is actually just the init constructor 'enhanced'
- return new jQuery.fn.init( selector, context, rootjQuery );
- },
-
- // Map over jQuery in case of overwrite
- _jQuery = window.jQuery,
-
- // Map over the $ in case of overwrite
- _$ = window.$,
-
- // A central reference to the root jQuery(document)
- rootjQuery,
-
- // A simple way to check for HTML strings or ID strings
- // Prioritize #id over <tag> to avoid XSS via location.hash (#9521)
- quickExpr = /^(?:[^#<]*(<[\w\W]+>)[^>]*$|#([\w\-]*)$)/,
-
- // Check if a string has a non-whitespace character in it
- rnotwhite = /\S/,
-
- // Used for trimming whitespace
- trimLeft = /^\s+/,
- trimRight = /\s+$/,
-
- // Match a standalone tag
- rsingleTag = /^<(\w+)\s*\/?>(?:<\/\1>)?$/,
-
- // JSON RegExp
- rvalidchars = /^[\],:{}\s]*$/,
- rvalidescape = /\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g,
- rvalidtokens = /"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g,
- rvalidbraces = /(?:^|:|,)(?:\s*\[)+/g,
-
- // Useragent RegExp
- rwebkit = /(webkit)[ \/]([\w.]+)/,
- ropera = /(opera)(?:.*version)?[ \/]([\w.]+)/,
- rmsie = /(msie) ([\w.]+)/,
- rmozilla = /(mozilla)(?:.*? rv:([\w.]+))?/,
-
- // Matches dashed string for camelizing
- rdashAlpha = /-([a-z]|[0-9])/ig,
- rmsPrefix = /^-ms-/,
-
- // Used by jQuery.camelCase as callback to replace()
- fcamelCase = function( all, letter ) {
- return ( letter + "" ).toUpperCase();
- },
-
- // Keep a UserAgent string for use with jQuery.browser
- userAgent = navigator.userAgent,
-
- // For matching the engine and version of the browser
- browserMatch,
-
- // The deferred used on DOM ready
- readyList,
-
- // The ready event handler
- DOMContentLoaded,
-
- // Save a reference to some core methods
- toString = Object.prototype.toString,
- hasOwn = Object.prototype.hasOwnProperty,
- push = Array.prototype.push,
- slice = Array.prototype.slice,
- trim = String.prototype.trim,
- indexOf = Array.prototype.indexOf,
-
- // [[Class]] -> type pairs
- class2type = {};
-
-jQuery.fn = jQuery.prototype = {
- constructor: jQuery,
- init: function( selector, context, rootjQuery ) {
- var match, elem, ret, doc;
-
- // Handle $(""), $(null), or $(undefined)
- if ( !selector ) {
- return this;
- }
-
- // Handle $(DOMElement)
- if ( selector.nodeType ) {
- this.context = this[0] = selector;
- this.length = 1;
- return this;
- }
-
- // The body element only exists once, optimize finding it
- if ( selector === "body" && !context && document.body ) {
- this.context = document;
- this[0] = document.body;
- this.selector = selector;
- this.length = 1;
- return this;
- }
-
- // Handle HTML strings
- if ( typeof selector === "string" ) {
- // Are we dealing with HTML string or an ID?
- if ( selector.charAt(0) === "<" && selector.charAt( selector.length - 1 ) === ">" && selector.length >= 3 ) {
- // Assume that strings that start and end with <> are HTML and skip the regex check
- match = [ null, selector, null ];
-
- } else {
- match = quickExpr.exec( selector );
- }
-
- // Verify a match, and that no context was specified for #id
- if ( match && (match[1] || !context) ) {
-
- // HANDLE: $(html) -> $(array)
- if ( match[1] ) {
- context = context instanceof jQuery ? context[0] : context;
- doc = ( context ? context.ownerDocument || context : document );
-
- // If a single string is passed in and it's a single tag
- // just do a createElement and skip the rest
- ret = rsingleTag.exec( selector );
-
- if ( ret ) {
- if ( jQuery.isPlainObject( context ) ) {
- selector = [ document.createElement( ret[1] ) ];
- jQuery.fn.attr.call( selector, context, true );
-
- } else {
- selector = [ doc.createElement( ret[1] ) ];
- }
-
- } else {
- ret = jQuery.buildFragment( [ match[1] ], [ doc ] );
- selector = ( ret.cacheable ? jQuery.clone(ret.fragment) : ret.fragment ).childNodes;
- }
-
- return jQuery.merge( this, selector );
-
- // HANDLE: $("#id")
- } else {
- elem = document.getElementById( match[2] );
-
- // Check parentNode to catch when Blackberry 4.6 returns
- // nodes that are no longer in the document #6963
- if ( elem && elem.parentNode ) {
- // Handle the case where IE and Opera return items
- // by name instead of ID
- if ( elem.id !== match[2] ) {
- return rootjQuery.find( selector );
- }
-
- // Otherwise, we inject the element directly into the jQuery object
- this.length = 1;
- this[0] = elem;
- }
-
- this.context = document;
- this.selector = selector;
- return this;
- }
-
- // HANDLE: $(expr, $(...))
- } else if ( !context || context.jquery ) {
- return ( context || rootjQuery ).find( selector );
-
- // HANDLE: $(expr, context)
- // (which is just equivalent to: $(context).find(expr)
- } else {
- return this.constructor( context ).find( selector );
- }
-
- // HANDLE: $(function)
- // Shortcut for document ready
- } else if ( jQuery.isFunction( selector ) ) {
- return rootjQuery.ready( selector );
- }
-
- if ( selector.selector !== undefined ) {
- this.selector = selector.selector;
- this.context = selector.context;
- }
-
- return jQuery.makeArray( selector, this );
- },
-
- // Start with an empty selector
- selector: "",
-
- // The current version of jQuery being used
- jquery: "1.7.1",
-
- // The default length of a jQuery object is 0
- length: 0,
-
- // The number of elements contained in the matched element set
- size: function() {
- return this.length;
- },
-
- toArray: function() {
- return slice.call( this, 0 );
- },
-
- // Get the Nth element in the matched element set OR
- // Get the whole matched element set as a clean array
- get: function( num ) {
- return num == null ?
-
- // Return a 'clean' array
- this.toArray() :
-
- // Return just the object
- ( num < 0 ? this[ this.length + num ] : this[ num ] );
- },
-
- // Take an array of elements and push it onto the stack
- // (returning the new matched element set)
- pushStack: function( elems, name, selector ) {
- // Build a new jQuery matched element set
- var ret = this.constructor();
-
- if ( jQuery.isArray( elems ) ) {
- push.apply( ret, elems );
-
- } else {
- jQuery.merge( ret, elems );
- }
-
- // Add the old object onto the stack (as a reference)
- ret.prevObject = this;
-
- ret.context = this.context;
-
- if ( name === "find" ) {
- ret.selector = this.selector + ( this.selector ? " " : "" ) + selector;
- } else if ( name ) {
- ret.selector = this.selector + "." + name + "(" + selector + ")";
- }
-
- // Return the newly-formed element set
- return ret;
- },
-
- // Execute a callback for every element in the matched set.
- // (You can seed the arguments with an array of args, but this is
- // only used internally.)
- each: function( callback, args ) {
- return jQuery.each( this, callback, args );
- },
-
- ready: function( fn ) {
- // Attach the listeners
- jQuery.bindReady();
-
- // Add the callback
- readyList.add( fn );
-
- return this;
- },
-
- eq: function( i ) {
- i = +i;
- return i === -1 ?
- this.slice( i ) :
- this.slice( i, i + 1 );
- },
-
- first: function() {
- return this.eq( 0 );
- },
-
- last: function() {
- return this.eq( -1 );
- },
-
- slice: function() {
- return this.pushStack( slice.apply( this, arguments ),
- "slice", slice.call(arguments).join(",") );
- },
-
- map: function( callback ) {
- return this.pushStack( jQuery.map(this, function( elem, i ) {
- return callback.call( elem, i, elem );
- }));
- },
-
- end: function() {
- return this.prevObject || this.constructor(null);
- },
-
- // For internal use only.
- // Behaves like an Array's method, not like a jQuery method.
- push: push,
- sort: [].sort,
- splice: [].splice
-};
-
-// Give the init function the jQuery prototype for later instantiation
-jQuery.fn.init.prototype = jQuery.fn;
-
-jQuery.extend = jQuery.fn.extend = function() {
- var options, name, src, copy, copyIsArray, clone,
- target = arguments[0] || {},
- i = 1,
- length = arguments.length,
- deep = false;
-
- // Handle a deep copy situation
- if ( typeof target === "boolean" ) {
- deep = target;
- target = arguments[1] || {};
- // skip the boolean and the target
- i = 2;
- }
-
- // Handle case when target is a string or something (possible in deep copy)
- if ( typeof target !== "object" && !jQuery.isFunction(target) ) {
- target = {};
- }
-
- // extend jQuery itself if only one argument is passed
- if ( length === i ) {
- target = this;
- --i;
- }
-
- for ( ; i < length; i++ ) {
- // Only deal with non-null/undefined values
- if ( (options = arguments[ i ]) != null ) {
- // Extend the base object
- for ( name in options ) {
- src = target[ name ];
- copy = options[ name ];
-
- // Prevent never-ending loop
- if ( target === copy ) {
- continue;
- }
-
- // Recurse if we're merging plain objects or arrays
- if ( deep && copy && ( jQuery.isPlainObject(copy) || (copyIsArray = jQuery.isArray(copy)) ) ) {
- if ( copyIsArray ) {
- copyIsArray = false;
- clone = src && jQuery.isArray(src) ? src : [];
-
- } else {
- clone = src && jQuery.isPlainObject(src) ? src : {};
- }
-
- // Never move original objects, clone them
- target[ name ] = jQuery.extend( deep, clone, copy );
-
- // Don't bring in undefined values
- } else if ( copy !== undefined ) {
- target[ name ] = copy;
- }
- }
- }
- }
-
- // Return the modified object
- return target;
-};
-
-jQuery.extend({
- noConflict: function( deep ) {
- if ( window.$ === jQuery ) {
- window.$ = _$;
- }
-
- if ( deep && window.jQuery === jQuery ) {
- window.jQuery = _jQuery;
- }
-
- return jQuery;
- },
-
- // Is the DOM ready to be used? Set to true once it occurs.
- isReady: false,
-
- // A counter to track how many items to wait for before
- // the ready event fires. See #6781
- readyWait: 1,
-
- // Hold (or release) the ready event
- holdReady: function( hold ) {
- if ( hold ) {
- jQuery.readyWait++;
- } else {
- jQuery.ready( true );
- }
- },
-
- // Handle when the DOM is ready
- ready: function( wait ) {
- // Either a released hold or an DOMready/load event and not yet ready
- if ( (wait === true && !--jQuery.readyWait) || (wait !== true && !jQuery.isReady) ) {
- // Make sure body exists, at least, in case IE gets a little overzealous (ticket #5443).
- if ( !document.body ) {
- return setTimeout( jQuery.ready, 1 );
- }
-
- // Remember that the DOM is ready
- jQuery.isReady = true;
-
- // If a normal DOM Ready event fired, decrement, and wait if need be
- if ( wait !== true && --jQuery.readyWait > 0 ) {
- return;
- }
-
- // If there are functions bound, to execute
- readyList.fireWith( document, [ jQuery ] );
-
- // Trigger any bound ready events
- if ( jQuery.fn.trigger ) {
- jQuery( document ).trigger( "ready" ).off( "ready" );
- }
- }
- },
-
- bindReady: function() {
- if ( readyList ) {
- return;
- }
-
- readyList = jQuery.Callbacks( "once memory" );
-
- // Catch cases where $(document).ready() is called after the
- // browser event has already occurred.
- if ( document.readyState === "complete" ) {
- // Handle it asynchronously to allow scripts the opportunity to delay ready
- return setTimeout( jQuery.ready, 1 );
- }
-
- // Mozilla, Opera and webkit nightlies currently support this event
- if ( document.addEventListener ) {
- // Use the handy event callback
- document.addEventListener( "DOMContentLoaded", DOMContentLoaded, false );
-
- // A fallback to window.onload, that will always work
- window.addEventListener( "load", jQuery.ready, false );
-
- // If IE event model is used
- } else if ( document.attachEvent ) {
- // ensure firing before onload,
- // maybe late but safe also for iframes
- document.attachEvent( "onreadystatechange", DOMContentLoaded );
-
- // A fallback to window.onload, that will always work
- window.attachEvent( "onload", jQuery.ready );
-
- // If IE and not a frame
- // continually check to see if the document is ready
- var toplevel = false;
-
- try {
- toplevel = window.frameElement == null;
- } catch(e) {}
-
- if ( document.documentElement.doScroll && toplevel ) {
- doScrollCheck();
- }
- }
- },
-
- // See test/unit/core.js for details concerning isFunction.
- // Since version 1.3, DOM methods and functions like alert
- // aren't supported. They return false on IE (#2968).
- isFunction: function( obj ) {
- return jQuery.type(obj) === "function";
- },
-
- isArray: Array.isArray || function( obj ) {
- return jQuery.type(obj) === "array";
- },
-
- // A crude way of determining if an object is a window
- isWindow: function( obj ) {
- return obj && typeof obj === "object" && "setInterval" in obj;
- },
-
- isNumeric: function( obj ) {
- return !isNaN( parseFloat(obj) ) && isFinite( obj );
- },
-
- type: function( obj ) {
- return obj == null ?
- String( obj ) :
- class2type[ toString.call(obj) ] || "object";
- },
-
- isPlainObject: function( obj ) {
- // Must be an Object.
- // Because of IE, we also have to check the presence of the constructor property.
- // Make sure that DOM nodes and window objects don't pass through, as well
- if ( !obj || jQuery.type(obj) !== "object" || obj.nodeType || jQuery.isWindow( obj ) ) {
- return false;
- }
-
- try {
- // Not own constructor property must be Object
- if ( obj.constructor &&
- !hasOwn.call(obj, "constructor") &&
- !hasOwn.call(obj.constructor.prototype, "isPrototypeOf") ) {
- return false;
- }
- } catch ( e ) {
- // IE8,9 Will throw exceptions on certain host objects #9897
- return false;
- }
-
- // Own properties are enumerated firstly, so to speed up,
- // if last one is own, then all properties are own.
-
- var key;
- for ( key in obj ) {}
-
- return key === undefined || hasOwn.call( obj, key );
- },
-
- isEmptyObject: function( obj ) {
- for ( var name in obj ) {
- return false;
- }
- return true;
- },
-
- error: function( msg ) {
- throw new Error( msg );
- },
-
- parseJSON: function( data ) {
- if ( typeof data !== "string" || !data ) {
- return null;
- }
-
- // Make sure leading/trailing whitespace is removed (IE can't handle it)
- data = jQuery.trim( data );
-
- // Attempt to parse using the native JSON parser first
- if ( window.JSON && window.JSON.parse ) {
- return window.JSON.parse( data );
- }
-
- // Make sure the incoming data is actual JSON
- // Logic borrowed from http://json.org/json2.js
- if ( rvalidchars.test( data.replace( rvalidescape, "@" )
- .replace( rvalidtokens, "]" )
- .replace( rvalidbraces, "")) ) {
-
- return ( new Function( "return " + data ) )();
-
- }
- jQuery.error( "Invalid JSON: " + data );
- },
-
- // Cross-browser xml parsing
- parseXML: function( data ) {
- var xml, tmp;
- try {
- if ( window.DOMParser ) { // Standard
- tmp = new DOMParser();
- xml = tmp.parseFromString( data , "text/xml" );
- } else { // IE
- xml = new ActiveXObject( "Microsoft.XMLDOM" );
- xml.async = "false";
- xml.loadXML( data );
- }
- } catch( e ) {
- xml = undefined;
- }
- if ( !xml || !xml.documentElement || xml.getElementsByTagName( "parsererror" ).length ) {
- jQuery.error( "Invalid XML: " + data );
- }
- return xml;
- },
-
- noop: function() {},
-
- // Evaluates a script in a global context
- // Workarounds based on findings by Jim Driscoll
- // http://weblogs.java.net/blog/driscoll/archive/2009/09/08/eval-javascript-global-context
- globalEval: function( data ) {
- if ( data && rnotwhite.test( data ) ) {
- // We use execScript on Internet Explorer
- // We use an anonymous function so that context is window
- // rather than jQuery in Firefox
- ( window.execScript || function( data ) {
- window[ "eval" ].call( window, data );
- } )( data );
- }
- },
-
- // Convert dashed to camelCase; used by the css and data modules
- // Microsoft forgot to hump their vendor prefix (#9572)
- camelCase: function( string ) {
- return string.replace( rmsPrefix, "ms-" ).replace( rdashAlpha, fcamelCase );
- },
-
- nodeName: function( elem, name ) {
- return elem.nodeName && elem.nodeName.toUpperCase() === name.toUpperCase();
- },
-
- // args is for internal usage only
- each: function( object, callback, args ) {
- var name, i = 0,
- length = object.length,
- isObj = length === undefined || jQuery.isFunction( object );
-
- if ( args ) {
- if ( isObj ) {
- for ( name in object ) {
- if ( callback.apply( object[ name ], args ) === false ) {
- break;
- }
- }
- } else {
- for ( ; i < length; ) {
- if ( callback.apply( object[ i++ ], args ) === false ) {
- break;
- }
- }
- }
-
- // A special, fast, case for the most common use of each
- } else {
- if ( isObj ) {
- for ( name in object ) {
- if ( callback.call( object[ name ], name, object[ name ] ) === false ) {
- break;
- }
- }
- } else {
- for ( ; i < length; ) {
- if ( callback.call( object[ i ], i, object[ i++ ] ) === false ) {
- break;
- }
- }
- }
- }
-
- return object;
- },
-
- // Use native String.trim function wherever possible
- trim: trim ?
- function( text ) {
- return text == null ?
- "" :
- trim.call( text );
- } :
-
- // Otherwise use our own trimming functionality
- function( text ) {
- return text == null ?
- "" :
- text.toString().replace( trimLeft, "" ).replace( trimRight, "" );
- },
-
- // results is for internal usage only
- makeArray: function( array, results ) {
- var ret = results || [];
-
- if ( array != null ) {
- // The window, strings (and functions) also have 'length'
- // Tweaked logic slightly to handle Blackberry 4.7 RegExp issues #6930
- var type = jQuery.type( array );
-
- if ( array.length == null || type === "string" || type === "function" || type === "regexp" || jQuery.isWindow( array ) ) {
- push.call( ret, array );
- } else {
- jQuery.merge( ret, array );
- }
- }
-
- return ret;
- },
-
- inArray: function( elem, array, i ) {
- var len;
-
- if ( array ) {
- if ( indexOf ) {
- return indexOf.call( array, elem, i );
- }
-
- len = array.length;
- i = i ? i < 0 ? Math.max( 0, len + i ) : i : 0;
-
- for ( ; i < len; i++ ) {
- // Skip accessing in sparse arrays
- if ( i in array && array[ i ] === elem ) {
- return i;
- }
- }
- }
-
- return -1;
- },
-
- merge: function( first, second ) {
- var i = first.length,
- j = 0;
-
- if ( typeof second.length === "number" ) {
- for ( var l = second.length; j < l; j++ ) {
- first[ i++ ] = second[ j ];
- }
-
- } else {
- while ( second[j] !== undefined ) {
- first[ i++ ] = second[ j++ ];
- }
- }
-
- first.length = i;
-
- return first;
- },
-
- grep: function( elems, callback, inv ) {
- var ret = [], retVal;
- inv = !!inv;
-
- // Go through the array, only saving the items
- // that pass the validator function
- for ( var i = 0, length = elems.length; i < length; i++ ) {
- retVal = !!callback( elems[ i ], i );
- if ( inv !== retVal ) {
- ret.push( elems[ i ] );
- }
- }
-
- return ret;
- },
-
- // arg is for internal usage only
- map: function( elems, callback, arg ) {
- var value, key, ret = [],
- i = 0,
- length = elems.length,
- // jquery objects are treated as arrays
- isArray = elems instanceof jQuery || length !== undefined && typeof length === "number" && ( ( length > 0 && elems[ 0 ] && elems[ length -1 ] ) || length === 0 || jQuery.isArray( elems ) ) ;
-
- // Go through the array, translating each of the items to their
- if ( isArray ) {
- for ( ; i < length; i++ ) {
- value = callback( elems[ i ], i, arg );
-
- if ( value != null ) {
- ret[ ret.length ] = value;
- }
- }
-
- // Go through every key on the object,
- } else {
- for ( key in elems ) {
- value = callback( elems[ key ], key, arg );
-
- if ( value != null ) {
- ret[ ret.length ] = value;
- }
- }
- }
-
- // Flatten any nested arrays
- return ret.concat.apply( [], ret );
- },
-
- // A global GUID counter for objects
- guid: 1,
-
- // Bind a function to a context, optionally partially applying any
- // arguments.
- proxy: function( fn, context ) {
- if ( typeof context === "string" ) {
- var tmp = fn[ context ];
- context = fn;
- fn = tmp;
- }
-
- // Quick check to determine if target is callable, in the spec
- // this throws a TypeError, but we will just return undefined.
- if ( !jQuery.isFunction( fn ) ) {
- return undefined;
- }
-
- // Simulated bind
- var args = slice.call( arguments, 2 ),
- proxy = function() {
- return fn.apply( context, args.concat( slice.call( arguments ) ) );
- };
-
- // Set the guid of unique handler to the same of original handler, so it can be removed
- proxy.guid = fn.guid = fn.guid || proxy.guid || jQuery.guid++;
-
- return proxy;
- },
-
- // Mutifunctional method to get and set values to a collection
- // The value/s can optionally be executed if it's a function
- access: function( elems, key, value, exec, fn, pass ) {
- var length = elems.length;
-
- // Setting many attributes
- if ( typeof key === "object" ) {
- for ( var k in key ) {
- jQuery.access( elems, k, key[k], exec, fn, value );
- }
- return elems;
- }
-
- // Setting one attribute
- if ( value !== undefined ) {
- // Optionally, function values get executed if exec is true
- exec = !pass && exec && jQuery.isFunction(value);
-
- for ( var i = 0; i < length; i++ ) {
- fn( elems[i], key, exec ? value.call( elems[i], i, fn( elems[i], key ) ) : value, pass );
- }
-
- return elems;
- }
-
- // Getting an attribute
- return length ? fn( elems[0], key ) : undefined;
- },
-
- now: function() {
- return ( new Date() ).getTime();
- },
-
- // Use of jQuery.browser is frowned upon.
- // More details: http://docs.jquery.com/Utilities/jQuery.browser
- uaMatch: function( ua ) {
- ua = ua.toLowerCase();
-
- var match = rwebkit.exec( ua ) ||
- ropera.exec( ua ) ||
- rmsie.exec( ua ) ||
- ua.indexOf("compatible") < 0 && rmozilla.exec( ua ) ||
- [];
-
- return { browser: match[1] || "", version: match[2] || "0" };
- },
-
- sub: function() {
- function jQuerySub( selector, context ) {
- return new jQuerySub.fn.init( selector, context );
- }
- jQuery.extend( true, jQuerySub, this );
- jQuerySub.superclass = this;
- jQuerySub.fn = jQuerySub.prototype = this();
- jQuerySub.fn.constructor = jQuerySub;
- jQuerySub.sub = this.sub;
- jQuerySub.fn.init = function init( selector, context ) {
- if ( context && context instanceof jQuery && !(context instanceof jQuerySub) ) {
- context = jQuerySub( context );
- }
-
- return jQuery.fn.init.call( this, selector, context, rootjQuerySub );
- };
- jQuerySub.fn.init.prototype = jQuerySub.fn;
- var rootjQuerySub = jQuerySub(document);
- return jQuerySub;
- },
-
- browser: {}
-});
-
-// Populate the class2type map
-jQuery.each("Boolean Number String Function Array Date RegExp Object".split(" "), function(i, name) {
- class2type[ "[object " + name + "]" ] = name.toLowerCase();
-});
-
-browserMatch = jQuery.uaMatch( userAgent );
-if ( browserMatch.browser ) {
- jQuery.browser[ browserMatch.browser ] = true;
- jQuery.browser.version = browserMatch.version;
-}
-
-// Deprecated, use jQuery.browser.webkit instead
-if ( jQuery.browser.webkit ) {
- jQuery.browser.safari = true;
-}
-
-// IE doesn't match non-breaking spaces with \s
-if ( rnotwhite.test( "\xA0" ) ) {
- trimLeft = /^[\s\xA0]+/;
- trimRight = /[\s\xA0]+$/;
-}
-
-// All jQuery objects should point back to these
-rootjQuery = jQuery(document);
-
-// Cleanup functions for the document ready method
-if ( document.addEventListener ) {
- DOMContentLoaded = function() {
- document.removeEventListener( "DOMContentLoaded", DOMContentLoaded, false );
- jQuery.ready();
- };
-
-} else if ( document.attachEvent ) {
- DOMContentLoaded = function() {
- // Make sure body exists, at least, in case IE gets a little overzealous (ticket #5443).
- if ( document.readyState === "complete" ) {
- document.detachEvent( "onreadystatechange", DOMContentLoaded );
- jQuery.ready();
- }
- };
-}
-
-// The DOM ready check for Internet Explorer
-function doScrollCheck() {
- if ( jQuery.isReady ) {
- return;
- }
-
- try {
- // If IE is used, use the trick by Diego Perini
- // http://javascript.nwbox.com/IEContentLoaded/
- document.documentElement.doScroll("left");
- } catch(e) {
- setTimeout( doScrollCheck, 1 );
- return;
- }
-
- // and execute any waiting functions
- jQuery.ready();
-}
-
-return jQuery;
-
-})();
-
-
-// String to Object flags format cache
-var flagsCache = {};
-
-// Convert String-formatted flags into Object-formatted ones and store in cache
-function createFlags( flags ) {
- var object = flagsCache[ flags ] = {},
- i, length;
- flags = flags.split( /\s+/ );
- for ( i = 0, length = flags.length; i < length; i++ ) {
- object[ flags[i] ] = true;
- }
- return object;
-}
-
-/*
- * Create a callback list using the following parameters:
- *
- * flags: an optional list of space-separated flags that will change how
- * the callback list behaves
- *
- * By default a callback list will act like an event callback list and can be
- * "fired" multiple times.
- *
- * Possible flags:
- *
- * once: will ensure the callback list can only be fired once (like a Deferred)
- *
- * memory: will keep track of previous values and will call any callback added
- * after the list has been fired right away with the latest "memorized"
- * values (like a Deferred)
- *
- * unique: will ensure a callback can only be added once (no duplicate in the list)
- *
- * stopOnFalse: interrupt callings when a callback returns false
- *
- */
-jQuery.Callbacks = function( flags ) {
-
- // Convert flags from String-formatted to Object-formatted
- // (we check in cache first)
- flags = flags ? ( flagsCache[ flags ] || createFlags( flags ) ) : {};
-
- var // Actual callback list
- list = [],
- // Stack of fire calls for repeatable lists
- stack = [],
- // Last fire value (for non-forgettable lists)
- memory,
- // Flag to know if list is currently firing
- firing,
- // First callback to fire (used internally by add and fireWith)
- firingStart,
- // End of the loop when firing
- firingLength,
- // Index of currently firing callback (modified by remove if needed)
- firingIndex,
- // Add one or several callbacks to the list
- add = function( args ) {
- var i,
- length,
- elem,
- type,
- actual;
- for ( i = 0, length = args.length; i < length; i++ ) {
- elem = args[ i ];
- type = jQuery.type( elem );
- if ( type === "array" ) {
- // Inspect recursively
- add( elem );
- } else if ( type === "function" ) {
- // Add if not in unique mode and callback is not in
- if ( !flags.unique || !self.has( elem ) ) {
- list.push( elem );
- }
- }
- }
- },
- // Fire callbacks
- fire = function( context, args ) {
- args = args || [];
- memory = !flags.memory || [ context, args ];
- firing = true;
- firingIndex = firingStart || 0;
- firingStart = 0;
- firingLength = list.length;
- for ( ; list && firingIndex < firingLength; firingIndex++ ) {
- if ( list[ firingIndex ].apply( context, args ) === false && flags.stopOnFalse ) {
- memory = true; // Mark as halted
- break;
- }
- }
- firing = false;
- if ( list ) {
- if ( !flags.once ) {
- if ( stack && stack.length ) {
- memory = stack.shift();
- self.fireWith( memory[ 0 ], memory[ 1 ] );
- }
- } else if ( memory === true ) {
- self.disable();
- } else {
- list = [];
- }
- }
- },
- // Actual Callbacks object
- self = {
- // Add a callback or a collection of callbacks to the list
- add: function() {
- if ( list ) {
- var length = list.length;
- add( arguments );
- // Do we need to add the callbacks to the
- // current firing batch?
- if ( firing ) {
- firingLength = list.length;
- // With memory, if we're not firing then
- // we should call right away, unless previous
- // firing was halted (stopOnFalse)
- } else if ( memory && memory !== true ) {
- firingStart = length;
- fire( memory[ 0 ], memory[ 1 ] );
- }
- }
- return this;
- },
- // Remove a callback from the list
- remove: function() {
- if ( list ) {
- var args = arguments,
- argIndex = 0,
- argLength = args.length;
- for ( ; argIndex < argLength ; argIndex++ ) {
- for ( var i = 0; i < list.length; i++ ) {
- if ( args[ argIndex ] === list[ i ] ) {
- // Handle firingIndex and firingLength
- if ( firing ) {
- if ( i <= firingLength ) {
- firingLength--;
- if ( i <= firingIndex ) {
- firingIndex--;
- }
- }
- }
- // Remove the element
- list.splice( i--, 1 );
- // If we have some unicity property then
- // we only need to do this once
- if ( flags.unique ) {
- break;
- }
- }
- }
- }
- }
- return this;
- },
- // Control if a given callback is in the list
- has: function( fn ) {
- if ( list ) {
- var i = 0,
- length = list.length;
- for ( ; i < length; i++ ) {
- if ( fn === list[ i ] ) {
- return true;
- }
- }
- }
- return false;
- },
- // Remove all callbacks from the list
- empty: function() {
- list = [];
- return this;
- },
- // Have the list do nothing anymore
- disable: function() {
- list = stack = memory = undefined;
- return this;
- },
- // Is it disabled?
- disabled: function() {
- return !list;
- },
- // Lock the list in its current state
- lock: function() {
- stack = undefined;
- if ( !memory || memory === true ) {
- self.disable();
- }
- return this;
- },
- // Is it locked?
- locked: function() {
- return !stack;
- },
- // Call all callbacks with the given context and arguments
- fireWith: function( context, args ) {
- if ( stack ) {
- if ( firing ) {
- if ( !flags.once ) {
- stack.push( [ context, args ] );
- }
- } else if ( !( flags.once && memory ) ) {
- fire( context, args );
- }
- }
- return this;
- },
- // Call all the callbacks with the given arguments
- fire: function() {
- self.fireWith( this, arguments );
- return this;
- },
- // To know if the callbacks have already been called at least once
- fired: function() {
- return !!memory;
- }
- };
-
- return self;
-};
-
-
-
-
-var // Static reference to slice
- sliceDeferred = [].slice;
-
-jQuery.extend({
-
- Deferred: function( func ) {
- var doneList = jQuery.Callbacks( "once memory" ),
- failList = jQuery.Callbacks( "once memory" ),
- progressList = jQuery.Callbacks( "memory" ),
- state = "pending",
- lists = {
- resolve: doneList,
- reject: failList,
- notify: progressList
- },
- promise = {
- done: doneList.add,
- fail: failList.add,
- progress: progressList.add,
-
- state: function() {
- return state;
- },
-
- // Deprecated
- isResolved: doneList.fired,
- isRejected: failList.fired,
-
- then: function( doneCallbacks, failCallbacks, progressCallbacks ) {
- deferred.done( doneCallbacks ).fail( failCallbacks ).progress( progressCallbacks );
- return this;
- },
- always: function() {
- deferred.done.apply( deferred, arguments ).fail.apply( deferred, arguments );
- return this;
- },
- pipe: function( fnDone, fnFail, fnProgress ) {
- return jQuery.Deferred(function( newDefer ) {
- jQuery.each( {
- done: [ fnDone, "resolve" ],
- fail: [ fnFail, "reject" ],
- progress: [ fnProgress, "notify" ]
- }, function( handler, data ) {
- var fn = data[ 0 ],
- action = data[ 1 ],
- returned;
- if ( jQuery.isFunction( fn ) ) {
- deferred[ handler ](function() {
- returned = fn.apply( this, arguments );
- if ( returned && jQuery.isFunction( returned.promise ) ) {
- returned.promise().then( newDefer.resolve, newDefer.reject, newDefer.notify );
- } else {
- newDefer[ action + "With" ]( this === deferred ? newDefer : this, [ returned ] );
- }
- });
- } else {
- deferred[ handler ]( newDefer[ action ] );
- }
- });
- }).promise();
- },
- // Get a promise for this deferred
- // If obj is provided, the promise aspect is added to the object
- promise: function( obj ) {
- if ( obj == null ) {
- obj = promise;
- } else {
- for ( var key in promise ) {
- obj[ key ] = promise[ key ];
- }
- }
- return obj;
- }
- },
- deferred = promise.promise({}),
- key;
-
- for ( key in lists ) {
- deferred[ key ] = lists[ key ].fire;
- deferred[ key + "With" ] = lists[ key ].fireWith;
- }
-
- // Handle state
- deferred.done( function() {
- state = "resolved";
- }, failList.disable, progressList.lock ).fail( function() {
- state = "rejected";
- }, doneList.disable, progressList.lock );
-
- // Call given func if any
- if ( func ) {
- func.call( deferred, deferred );
- }
-
- // All done!
- return deferred;
- },
-
- // Deferred helper
- when: function( firstParam ) {
- var args = sliceDeferred.call( arguments, 0 ),
- i = 0,
- length = args.length,
- pValues = new Array( length ),
- count = length,
- pCount = length,
- deferred = length <= 1 && firstParam && jQuery.isFunction( firstParam.promise ) ?
- firstParam :
- jQuery.Deferred(),
- promise = deferred.promise();
- function resolveFunc( i ) {
- return function( value ) {
- args[ i ] = arguments.length > 1 ? sliceDeferred.call( arguments, 0 ) : value;
- if ( !( --count ) ) {
- deferred.resolveWith( deferred, args );
- }
- };
- }
- function progressFunc( i ) {
- return function( value ) {
- pValues[ i ] = arguments.length > 1 ? sliceDeferred.call( arguments, 0 ) : value;
- deferred.notifyWith( promise, pValues );
- };
- }
- if ( length > 1 ) {
- for ( ; i < length; i++ ) {
- if ( args[ i ] && args[ i ].promise && jQuery.isFunction( args[ i ].promise ) ) {
- args[ i ].promise().then( resolveFunc(i), deferred.reject, progressFunc(i) );
- } else {
- --count;
- }
- }
- if ( !count ) {
- deferred.resolveWith( deferred, args );
- }
- } else if ( deferred !== firstParam ) {
- deferred.resolveWith( deferred, length ? [ firstParam ] : [] );
- }
- return promise;
- }
-});
-
-
-
-
-jQuery.support = (function() {
-
- var support,
- all,
- a,
- select,
- opt,
- input,
- marginDiv,
- fragment,
- tds,
- events,
- eventName,
- i,
- isSupported,
- div = document.createElement( "div" ),
- documentElement = document.documentElement;
-
- // Preliminary tests
- div.setAttribute("className", "t");
- div.innerHTML = " <link/><table></table><a href='/a' style='top:1px;float:left;opacity:.55;'>a</a><input type='checkbox'/>";
-
- all = div.getElementsByTagName( "*" );
- a = div.getElementsByTagName( "a" )[ 0 ];
-
- // Can't get basic test support
- if ( !all || !all.length || !a ) {
- return {};
- }
-
- // First batch of supports tests
- select = document.createElement( "select" );
- opt = select.appendChild( document.createElement("option") );
- input = div.getElementsByTagName( "input" )[ 0 ];
-
- support = {
- // IE strips leading whitespace when .innerHTML is used
- leadingWhitespace: ( div.firstChild.nodeType === 3 ),
-
- // Make sure that tbody elements aren't automatically inserted
- // IE will insert them into empty tables
- tbody: !div.getElementsByTagName("tbody").length,
-
- // Make sure that link elements get serialized correctly by innerHTML
- // This requires a wrapper element in IE
- htmlSerialize: !!div.getElementsByTagName("link").length,
-
- // Get the style information from getAttribute
- // (IE uses .cssText instead)
- style: /top/.test( a.getAttribute("style") ),
-
- // Make sure that URLs aren't manipulated
- // (IE normalizes it by default)
- hrefNormalized: ( a.getAttribute("href") === "/a" ),
-
- // Make sure that element opacity exists
- // (IE uses filter instead)
- // Use a regex to work around a WebKit issue. See #5145
- opacity: /^0.55/.test( a.style.opacity ),
-
- // Verify style float existence
- // (IE uses styleFloat instead of cssFloat)
- cssFloat: !!a.style.cssFloat,
-
- // Make sure that if no value is specified for a checkbox
- // that it defaults to "on".
- // (WebKit defaults to "" instead)
- checkOn: ( input.value === "on" ),
-
- // Make sure that a selected-by-default option has a working selected property.
- // (WebKit defaults to false instead of true, IE too, if it's in an optgroup)
- optSelected: opt.selected,
-
- // Test setAttribute on camelCase class. If it works, we need attrFixes when doing get/setAttribute (ie6/7)
- getSetAttribute: div.className !== "t",
-
- // Tests for enctype support on a form(#6743)
- enctype: !!document.createElement("form").enctype,
-
- // Makes sure cloning an html5 element does not cause problems
- // Where outerHTML is undefined, this still works
- html5Clone: document.createElement("nav").cloneNode( true ).outerHTML !== "<:nav></:nav>",
-
- // Will be defined later
- submitBubbles: true,
- changeBubbles: true,
- focusinBubbles: false,
- deleteExpando: true,
- noCloneEvent: true,
- inlineBlockNeedsLayout: false,
- shrinkWrapBlocks: false,
- reliableMarginRight: true
- };
-
- // Make sure checked status is properly cloned
- input.checked = true;
- support.noCloneChecked = input.cloneNode( true ).checked;
-
- // Make sure that the options inside disabled selects aren't marked as disabled
- // (WebKit marks them as disabled)
- select.disabled = true;
- support.optDisabled = !opt.disabled;
-
- // Test to see if it's possible to delete an expando from an element
- // Fails in Internet Explorer
- try {
- delete div.test;
- } catch( e ) {
- support.deleteExpando = false;
- }
-
- if ( !div.addEventListener && div.attachEvent && div.fireEvent ) {
- div.attachEvent( "onclick", function() {
- // Cloning a node shouldn't copy over any
- // bound event handlers (IE does this)
- support.noCloneEvent = false;
- });
- div.cloneNode( true ).fireEvent( "onclick" );
- }
-
- // Check if a radio maintains its value
- // after being appended to the DOM
- input = document.createElement("input");
- input.value = "t";
- input.setAttribute("type", "radio");
- support.radioValue = input.value === "t";
-
- input.setAttribute("checked", "checked");
- div.appendChild( input );
- fragment = document.createDocumentFragment();
- fragment.appendChild( div.lastChild );
-
- // WebKit doesn't clone checked state correctly in fragments
- support.checkClone = fragment.cloneNode( true ).cloneNode( true ).lastChild.checked;
-
- // Check if a disconnected checkbox will retain its checked
- // value of true after appended to the DOM (IE6/7)
- support.appendChecked = input.checked;
-
- fragment.removeChild( input );
- fragment.appendChild( div );
-
- div.innerHTML = "";
-
- // Check if div with explicit width and no margin-right incorrectly
- // gets computed margin-right based on width of container. For more
- // info see bug #3333
- // Fails in WebKit before Feb 2011 nightlies
- // WebKit Bug 13343 - getComputedStyle returns wrong value for margin-right
- if ( window.getComputedStyle ) {
- marginDiv = document.createElement( "div" );
- marginDiv.style.width = "0";
- marginDiv.style.marginRight = "0";
- div.style.width = "2px";
- div.appendChild( marginDiv );
- support.reliableMarginRight =
- ( parseInt( ( window.getComputedStyle( marginDiv, null ) || { marginRight: 0 } ).marginRight, 10 ) || 0 ) === 0;
- }
-
- // Technique from Juriy Zaytsev
- // http://perfectionkills.com/detecting-event-support-without-browser-sniffing/
- // We only care about the case where non-standard event systems
- // are used, namely in IE. Short-circuiting here helps us to
- // avoid an eval call (in setAttribute) which can cause CSP
- // to go haywire. See: https://developer.mozilla.org/en/Security/CSP
- if ( div.attachEvent ) {
- for( i in {
- submit: 1,
- change: 1,
- focusin: 1
- }) {
- eventName = "on" + i;
- isSupported = ( eventName in div );
- if ( !isSupported ) {
- div.setAttribute( eventName, "return;" );
- isSupported = ( typeof div[ eventName ] === "function" );
- }
- support[ i + "Bubbles" ] = isSupported;
- }
- }
-
- fragment.removeChild( div );
-
- // Null elements to avoid leaks in IE
- fragment = select = opt = marginDiv = div = input = null;
-
- // Run tests that need a body at doc ready
- jQuery(function() {
- var container, outer, inner, table, td, offsetSupport,
- conMarginTop, ptlm, vb, style, html,
- body = document.getElementsByTagName("body")[0];
-
- if ( !body ) {
- // Return for frameset docs that don't have a body
- return;
- }
-
- conMarginTop = 1;
- ptlm = "position:absolute;top:0;left:0;width:1px;height:1px;margin:0;";
- vb = "visibility:hidden;border:0;";
- style = "style='" + ptlm + "border:5px solid #000;padding:0;'";
- html = "<div " + style + "><div></div></div>" +
- "<table " + style + " cellpadding='0' cellspacing='0'>" +
- "<tr><td></td></tr></table>";
-
- container = document.createElement("div");
- container.style.cssText = vb + "width:0;height:0;position:static;top:0;margin-top:" + conMarginTop + "px";
- body.insertBefore( container, body.firstChild );
-
- // Construct the test element
- div = document.createElement("div");
- container.appendChild( div );
-
- // Check if table cells still have offsetWidth/Height when they are set
- // to display:none and there are still other visible table cells in a
- // table row; if so, offsetWidth/Height are not reliable for use when
- // determining if an element has been hidden directly using
- // display:none (it is still safe to use offsets if a parent element is
- // hidden; don safety goggles and see bug #4512 for more information).
- // (only IE 8 fails this test)
- div.innerHTML = "<table><tr><td style='padding:0;border:0;display:none'></td><td>t</td></tr></table>";
- tds = div.getElementsByTagName( "td" );
- isSupported = ( tds[ 0 ].offsetHeight === 0 );
-
- tds[ 0 ].style.display = "";
- tds[ 1 ].style.display = "none";
-
- // Check if empty table cells still have offsetWidth/Height
- // (IE <= 8 fail this test)
- support.reliableHiddenOffsets = isSupported && ( tds[ 0 ].offsetHeight === 0 );
-
- // Figure out if the W3C box model works as expected
- div.innerHTML = "";
- div.style.width = div.style.paddingLeft = "1px";
- jQuery.boxModel = support.boxModel = div.offsetWidth === 2;
-
- if ( typeof div.style.zoom !== "undefined" ) {
- // Check if natively block-level elements act like inline-block
- // elements when setting their display to 'inline' and giving
- // them layout
- // (IE < 8 does this)
- div.style.display = "inline";
- div.style.zoom = 1;
- support.inlineBlockNeedsLayout = ( div.offsetWidth === 2 );
-
- // Check if elements with layout shrink-wrap their children
- // (IE 6 does this)
- div.style.display = "";
- div.innerHTML = "<div style='width:4px;'></div>";
- support.shrinkWrapBlocks = ( div.offsetWidth !== 2 );
- }
-
- div.style.cssText = ptlm + vb;
- div.innerHTML = html;
-
- outer = div.firstChild;
- inner = outer.firstChild;
- td = outer.nextSibling.firstChild.firstChild;
-
- offsetSupport = {
- doesNotAddBorder: ( inner.offsetTop !== 5 ),
- doesAddBorderForTableAndCells: ( td.offsetTop === 5 )
- };
-
- inner.style.position = "fixed";
- inner.style.top = "20px";
-
- // safari subtracts parent border width here which is 5px
- offsetSupport.fixedPosition = ( inner.offsetTop === 20 || inner.offsetTop === 15 );
- inner.style.position = inner.style.top = "";
-
- outer.style.overflow = "hidden";
- outer.style.position = "relative";
-
- offsetSupport.subtractsBorderForOverflowNotVisible = ( inner.offsetTop === -5 );
- offsetSupport.doesNotIncludeMarginInBodyOffset = ( body.offsetTop !== conMarginTop );
-
- body.removeChild( container );
- div = container = null;
-
- jQuery.extend( support, offsetSupport );
- });
-
- return support;
-})();
-
-
-
-
-var rbrace = /^(?:\{.*\}|\[.*\])$/,
- rmultiDash = /([A-Z])/g;
-
-jQuery.extend({
- cache: {},
-
- // Please use with caution
- uuid: 0,
-
- // Unique for each copy of jQuery on the page
- // Non-digits removed to match rinlinejQuery
- expando: "jQuery" + ( jQuery.fn.jquery + Math.random() ).replace( /\D/g, "" ),
-
- // The following elements throw uncatchable exceptions if you
- // attempt to add expando properties to them.
- noData: {
- "embed": true,
- // Ban all objects except for Flash (which handle expandos)
- "object": "clsid:D27CDB6E-AE6D-11cf-96B8-444553540000",
- "applet": true
- },
-
- hasData: function( elem ) {
- elem = elem.nodeType ? jQuery.cache[ elem[jQuery.expando] ] : elem[ jQuery.expando ];
- return !!elem && !isEmptyDataObject( elem );
- },
-
- data: function( elem, name, data, pvt /* Internal Use Only */ ) {
- if ( !jQuery.acceptData( elem ) ) {
- return;
- }
-
- var privateCache, thisCache, ret,
- internalKey = jQuery.expando,
- getByName = typeof name === "string",
-
- // We have to handle DOM nodes and JS objects differently because IE6-7
- // can't GC object references properly across the DOM-JS boundary
- isNode = elem.nodeType,
-
- // Only DOM nodes need the global jQuery cache; JS object data is
- // attached directly to the object so GC can occur automatically
- cache = isNode ? jQuery.cache : elem,
-
- // Only defining an ID for JS objects if its cache already exists allows
- // the code to shortcut on the same path as a DOM node with no cache
- id = isNode ? elem[ internalKey ] : elem[ internalKey ] && internalKey,
- isEvents = name === "events";
-
- // Avoid doing any more work than we need to when trying to get data on an
- // object that has no data at all
- if ( (!id || !cache[id] || (!isEvents && !pvt && !cache[id].data)) && getByName && data === undefined ) {
- return;
- }
-
- if ( !id ) {
- // Only DOM nodes need a new unique ID for each element since their data
- // ends up in the global cache
- if ( isNode ) {
- elem[ internalKey ] = id = ++jQuery.uuid;
- } else {
- id = internalKey;
- }
- }
-
- if ( !cache[ id ] ) {
- cache[ id ] = {};
-
- // Avoids exposing jQuery metadata on plain JS objects when the object
- // is serialized using JSON.stringify
- if ( !isNode ) {
- cache[ id ].toJSON = jQuery.noop;
- }
- }
-
- // An object can be passed to jQuery.data instead of a key/value pair; this gets
- // shallow copied over onto the existing cache
- if ( typeof name === "object" || typeof name === "function" ) {
- if ( pvt ) {
- cache[ id ] = jQuery.extend( cache[ id ], name );
- } else {
- cache[ id ].data = jQuery.extend( cache[ id ].data, name );
- }
- }
-
- privateCache = thisCache = cache[ id ];
-
- // jQuery data() is stored in a separate object inside the object's internal data
- // cache in order to avoid key collisions between internal data and user-defined
- // data.
- if ( !pvt ) {
- if ( !thisCache.data ) {
- thisCache.data = {};
- }
-
- thisCache = thisCache.data;
- }
-
- if ( data !== undefined ) {
- thisCache[ jQuery.camelCase( name ) ] = data;
- }
-
- // Users should not attempt to inspect the internal events object using jQuery.data,
- // it is undocumented and subject to change. But does anyone listen? No.
- if ( isEvents && !thisCache[ name ] ) {
- return privateCache.events;
- }
-
- // Check for both converted-to-camel and non-converted data property names
- // If a data property was specified
- if ( getByName ) {
-
- // First Try to find as-is property data
- ret = thisCache[ name ];
-
- // Test for null|undefined property data
- if ( ret == null ) {
-
- // Try to find the camelCased property
- ret = thisCache[ jQuery.camelCase( name ) ];
- }
- } else {
- ret = thisCache;
- }
-
- return ret;
- },
-
- removeData: function( elem, name, pvt /* Internal Use Only */ ) {
- if ( !jQuery.acceptData( elem ) ) {
- return;
- }
-
- var thisCache, i, l,
-
- // Reference to internal data cache key
- internalKey = jQuery.expando,
-
- isNode = elem.nodeType,
-
- // See jQuery.data for more information
- cache = isNode ? jQuery.cache : elem,
-
- // See jQuery.data for more information
- id = isNode ? elem[ internalKey ] : internalKey;
-
- // If there is already no cache entry for this object, there is no
- // purpose in continuing
- if ( !cache[ id ] ) {
- return;
- }
-
- if ( name ) {
-
- thisCache = pvt ? cache[ id ] : cache[ id ].data;
-
- if ( thisCache ) {
-
- // Support array or space separated string names for data keys
- if ( !jQuery.isArray( name ) ) {
-
- // try the string as a key before any manipulation
- if ( name in thisCache ) {
- name = [ name ];
- } else {
-
- // split the camel cased version by spaces unless a key with the spaces exists
- name = jQuery.camelCase( name );
- if ( name in thisCache ) {
- name = [ name ];
- } else {
- name = name.split( " " );
- }
- }
- }
-
- for ( i = 0, l = name.length; i < l; i++ ) {
- delete thisCache[ name[i] ];
- }
-
- // If there is no data left in the cache, we want to continue
- // and let the cache object itself get destroyed
- if ( !( pvt ? isEmptyDataObject : jQuery.isEmptyObject )( thisCache ) ) {
- return;
- }
- }
- }
-
- // See jQuery.data for more information
- if ( !pvt ) {
- delete cache[ id ].data;
-
- // Don't destroy the parent cache unless the internal data object
- // had been the only thing left in it
- if ( !isEmptyDataObject(cache[ id ]) ) {
- return;
- }
- }
-
- // Browsers that fail expando deletion also refuse to delete expandos on
- // the window, but it will allow it on all other JS objects; other browsers
- // don't care
- // Ensure that `cache` is not a window object #10080
- if ( jQuery.support.deleteExpando || !cache.setInterval ) {
- delete cache[ id ];
- } else {
- cache[ id ] = null;
- }
-
- // We destroyed the cache and need to eliminate the expando on the node to avoid
- // false lookups in the cache for entries that no longer exist
- if ( isNode ) {
- // IE does not allow us to delete expando properties from nodes,
- // nor does it have a removeAttribute function on Document nodes;
- // we must handle all of these cases
- if ( jQuery.support.deleteExpando ) {
- delete elem[ internalKey ];
- } else if ( elem.removeAttribute ) {
- elem.removeAttribute( internalKey );
- } else {
- elem[ internalKey ] = null;
- }
- }
- },
-
- // For internal use only.
- _data: function( elem, name, data ) {
- return jQuery.data( elem, name, data, true );
- },
-
- // A method for determining if a DOM node can handle the data expando
- acceptData: function( elem ) {
- if ( elem.nodeName ) {
- var match = jQuery.noData[ elem.nodeName.toLowerCase() ];
-
- if ( match ) {
- return !(match === true || elem.getAttribute("classid") !== match);
- }
- }
-
- return true;
- }
-});
-
-jQuery.fn.extend({
- data: function( key, value ) {
- var parts, attr, name,
- data = null;
-
- if ( typeof key === "undefined" ) {
- if ( this.length ) {
- data = jQuery.data( this[0] );
-
- if ( this[0].nodeType === 1 && !jQuery._data( this[0], "parsedAttrs" ) ) {
- attr = this[0].attributes;
- for ( var i = 0, l = attr.length; i < l; i++ ) {
- name = attr[i].name;
-
- if ( name.indexOf( "data-" ) === 0 ) {
- name = jQuery.camelCase( name.substring(5) );
-
- dataAttr( this[0], name, data[ name ] );
- }
- }
- jQuery._data( this[0], "parsedAttrs", true );
- }
- }
-
- return data;
-
- } else if ( typeof key === "object" ) {
- return this.each(function() {
- jQuery.data( this, key );
- });
- }
-
- parts = key.split(".");
- parts[1] = parts[1] ? "." + parts[1] : "";
-
- if ( value === undefined ) {
- data = this.triggerHandler("getData" + parts[1] + "!", [parts[0]]);
-
- // Try to fetch any internally stored data first
- if ( data === undefined && this.length ) {
- data = jQuery.data( this[0], key );
- data = dataAttr( this[0], key, data );
- }
-
- return data === undefined && parts[1] ?
- this.data( parts[0] ) :
- data;
-
- } else {
- return this.each(function() {
- var self = jQuery( this ),
- args = [ parts[0], value ];
-
- self.triggerHandler( "setData" + parts[1] + "!", args );
- jQuery.data( this, key, value );
- self.triggerHandler( "changeData" + parts[1] + "!", args );
- });
- }
- },
-
- removeData: function( key ) {
- return this.each(function() {
- jQuery.removeData( this, key );
- });
- }
-});
-
-function dataAttr( elem, key, data ) {
- // If nothing was found internally, try to fetch any
- // data from the HTML5 data-* attribute
- if ( data === undefined && elem.nodeType === 1 ) {
-
- var name = "data-" + key.replace( rmultiDash, "-$1" ).toLowerCase();
-
- data = elem.getAttribute( name );
-
- if ( typeof data === "string" ) {
- try {
- data = data === "true" ? true :
- data === "false" ? false :
- data === "null" ? null :
- jQuery.isNumeric( data ) ? parseFloat( data ) :
- rbrace.test( data ) ? jQuery.parseJSON( data ) :
- data;
- } catch( e ) {}
-
- // Make sure we set the data so it isn't changed later
- jQuery.data( elem, key, data );
-
- } else {
- data = undefined;
- }
- }
-
- return data;
-}
-
-// checks a cache object for emptiness
-function isEmptyDataObject( obj ) {
- for ( var name in obj ) {
-
- // if the public data object is empty, the private is still empty
- if ( name === "data" && jQuery.isEmptyObject( obj[name] ) ) {
- continue;
- }
- if ( name !== "toJSON" ) {
- return false;
- }
- }
-
- return true;
-}
-
-
-
-
-function handleQueueMarkDefer( elem, type, src ) {
- var deferDataKey = type + "defer",
- queueDataKey = type + "queue",
- markDataKey = type + "mark",
- defer = jQuery._data( elem, deferDataKey );
- if ( defer &&
- ( src === "queue" || !jQuery._data(elem, queueDataKey) ) &&
- ( src === "mark" || !jQuery._data(elem, markDataKey) ) ) {
- // Give room for hard-coded callbacks to fire first
- // and eventually mark/queue something else on the element
- setTimeout( function() {
- if ( !jQuery._data( elem, queueDataKey ) &&
- !jQuery._data( elem, markDataKey ) ) {
- jQuery.removeData( elem, deferDataKey, true );
- defer.fire();
- }
- }, 0 );
- }
-}
-
-jQuery.extend({
-
- _mark: function( elem, type ) {
- if ( elem ) {
- type = ( type || "fx" ) + "mark";
- jQuery._data( elem, type, (jQuery._data( elem, type ) || 0) + 1 );
- }
- },
-
- _unmark: function( force, elem, type ) {
- if ( force !== true ) {
- type = elem;
- elem = force;
- force = false;
- }
- if ( elem ) {
- type = type || "fx";
- var key = type + "mark",
- count = force ? 0 : ( (jQuery._data( elem, key ) || 1) - 1 );
- if ( count ) {
- jQuery._data( elem, key, count );
- } else {
- jQuery.removeData( elem, key, true );
- handleQueueMarkDefer( elem, type, "mark" );
- }
- }
- },
-
- queue: function( elem, type, data ) {
- var q;
- if ( elem ) {
- type = ( type || "fx" ) + "queue";
- q = jQuery._data( elem, type );
-
- // Speed up dequeue by getting out quickly if this is just a lookup
- if ( data ) {
- if ( !q || jQuery.isArray(data) ) {
- q = jQuery._data( elem, type, jQuery.makeArray(data) );
- } else {
- q.push( data );
- }
- }
- return q || [];
- }
- },
-
- dequeue: function( elem, type ) {
- type = type || "fx";
-
- var queue = jQuery.queue( elem, type ),
- fn = queue.shift(),
- hooks = {};
-
- // If the fx queue is dequeued, always remove the progress sentinel
- if ( fn === "inprogress" ) {
- fn = queue.shift();
- }
-
- if ( fn ) {
- // Add a progress sentinel to prevent the fx queue from being
- // automatically dequeued
- if ( type === "fx" ) {
- queue.unshift( "inprogress" );
- }
-
- jQuery._data( elem, type + ".run", hooks );
- fn.call( elem, function() {
- jQuery.dequeue( elem, type );
- }, hooks );
- }
-
- if ( !queue.length ) {
- jQuery.removeData( elem, type + "queue " + type + ".run", true );
- handleQueueMarkDefer( elem, type, "queue" );
- }
- }
-});
-
-jQuery.fn.extend({
- queue: function( type, data ) {
- if ( typeof type !== "string" ) {
- data = type;
- type = "fx";
- }
-
- if ( data === undefined ) {
- return jQuery.queue( this[0], type );
- }
- return this.each(function() {
- var queue = jQuery.queue( this, type, data );
-
- if ( type === "fx" && queue[0] !== "inprogress" ) {
- jQuery.dequeue( this, type );
- }
- });
- },
- dequeue: function( type ) {
- return this.each(function() {
- jQuery.dequeue( this, type );
- });
- },
- // Based off of the plugin by Clint Helfers, with permission.
- // http://blindsignals.com/index.php/2009/07/jquery-delay/
- delay: function( time, type ) {
- time = jQuery.fx ? jQuery.fx.speeds[ time ] || time : time;
- type = type || "fx";
-
- return this.queue( type, function( next, hooks ) {
- var timeout = setTimeout( next, time );
- hooks.stop = function() {
- clearTimeout( timeout );
- };
- });
- },
- clearQueue: function( type ) {
- return this.queue( type || "fx", [] );
- },
- // Get a promise resolved when queues of a certain type
- // are emptied (fx is the type by default)
- promise: function( type, object ) {
- if ( typeof type !== "string" ) {
- object = type;
- type = undefined;
- }
- type = type || "fx";
- var defer = jQuery.Deferred(),
- elements = this,
- i = elements.length,
- count = 1,
- deferDataKey = type + "defer",
- queueDataKey = type + "queue",
- markDataKey = type + "mark",
- tmp;
- function resolve() {
- if ( !( --count ) ) {
- defer.resolveWith( elements, [ elements ] );
- }
- }
- while( i-- ) {
- if (( tmp = jQuery.data( elements[ i ], deferDataKey, undefined, true ) ||
- ( jQuery.data( elements[ i ], queueDataKey, undefined, true ) ||
- jQuery.data( elements[ i ], markDataKey, undefined, true ) ) &&
- jQuery.data( elements[ i ], deferDataKey, jQuery.Callbacks( "once memory" ), true ) )) {
- count++;
- tmp.add( resolve );
- }
- }
- resolve();
- return defer.promise();
- }
-});
-
-
-
-
-var rclass = /[\n\t\r]/g,
- rspace = /\s+/,
- rreturn = /\r/g,
- rtype = /^(?:button|input)$/i,
- rfocusable = /^(?:button|input|object|select|textarea)$/i,
- rclickable = /^a(?:rea)?$/i,
- rboolean = /^(?:autofocus|autoplay|async|checked|controls|defer|disabled|hidden|loop|multiple|open|readonly|required|scoped|selected)$/i,
- getSetAttribute = jQuery.support.getSetAttribute,
- nodeHook, boolHook, fixSpecified;
-
-jQuery.fn.extend({
- attr: function( name, value ) {
- return jQuery.access( this, name, value, true, jQuery.attr );
- },
-
- removeAttr: function( name ) {
- return this.each(function() {
- jQuery.removeAttr( this, name );
- });
- },
-
- prop: function( name, value ) {
- return jQuery.access( this, name, value, true, jQuery.prop );
- },
-
- removeProp: function( name ) {
- name = jQuery.propFix[ name ] || name;
- return this.each(function() {
- // try/catch handles cases where IE balks (such as removing a property on window)
- try {
- this[ name ] = undefined;
- delete this[ name ];
- } catch( e ) {}
- });
- },
-
- addClass: function( value ) {
- var classNames, i, l, elem,
- setClass, c, cl;
-
- if ( jQuery.isFunction( value ) ) {
- return this.each(function( j ) {
- jQuery( this ).addClass( value.call(this, j, this.className) );
- });
- }
-
- if ( value && typeof value === "string" ) {
- classNames = value.split( rspace );
-
- for ( i = 0, l = this.length; i < l; i++ ) {
- elem = this[ i ];
-
- if ( elem.nodeType === 1 ) {
- if ( !elem.className && classNames.length === 1 ) {
- elem.className = value;
-
- } else {
- setClass = " " + elem.className + " ";
-
- for ( c = 0, cl = classNames.length; c < cl; c++ ) {
- if ( !~setClass.indexOf( " " + classNames[ c ] + " " ) ) {
- setClass += classNames[ c ] + " ";
- }
- }
- elem.className = jQuery.trim( setClass );
- }
- }
- }
- }
-
- return this;
- },
-
- removeClass: function( value ) {
- var classNames, i, l, elem, className, c, cl;
-
- if ( jQuery.isFunction( value ) ) {
- return this.each(function( j ) {
- jQuery( this ).removeClass( value.call(this, j, this.className) );
- });
- }
-
- if ( (value && typeof value === "string") || value === undefined ) {
- classNames = ( value || "" ).split( rspace );
-
- for ( i = 0, l = this.length; i < l; i++ ) {
- elem = this[ i ];
-
- if ( elem.nodeType === 1 && elem.className ) {
- if ( value ) {
- className = (" " + elem.className + " ").replace( rclass, " " );
- for ( c = 0, cl = classNames.length; c < cl; c++ ) {
- className = className.replace(" " + classNames[ c ] + " ", " ");
- }
- elem.className = jQuery.trim( className );
-
- } else {
- elem.className = "";
- }
- }
- }
- }
-
- return this;
- },
-
- toggleClass: function( value, stateVal ) {
- var type = typeof value,
- isBool = typeof stateVal === "boolean";
-
- if ( jQuery.isFunction( value ) ) {
- return this.each(function( i ) {
- jQuery( this ).toggleClass( value.call(this, i, this.className, stateVal), stateVal );
- });
- }
-
- return this.each(function() {
- if ( type === "string" ) {
- // toggle individual class names
- var className,
- i = 0,
- self = jQuery( this ),
- state = stateVal,
- classNames = value.split( rspace );
-
- while ( (className = classNames[ i++ ]) ) {
- // check each className given, space seperated list
- state = isBool ? state : !self.hasClass( className );
- self[ state ? "addClass" : "removeClass" ]( className );
- }
-
- } else if ( type === "undefined" || type === "boolean" ) {
- if ( this.className ) {
- // store className if set
- jQuery._data( this, "__className__", this.className );
- }
-
- // toggle whole className
- this.className = this.className || value === false ? "" : jQuery._data( this, "__className__" ) || "";
- }
- });
- },
-
- hasClass: function( selector ) {
- var className = " " + selector + " ",
- i = 0,
- l = this.length;
- for ( ; i < l; i++ ) {
- if ( this[i].nodeType === 1 && (" " + this[i].className + " ").replace(rclass, " ").indexOf( className ) > -1 ) {
- return true;
- }
- }
-
- return false;
- },
-
- val: function( value ) {
- var hooks, ret, isFunction,
- elem = this[0];
-
- if ( !arguments.length ) {
- if ( elem ) {
- hooks = jQuery.valHooks[ elem.nodeName.toLowerCase() ] || jQuery.valHooks[ elem.type ];
-
- if ( hooks && "get" in hooks && (ret = hooks.get( elem, "value" )) !== undefined ) {
- return ret;
- }
-
- ret = elem.value;
-
- return typeof ret === "string" ?
- // handle most common string cases
- ret.replace(rreturn, "") :
- // handle cases where value is null/undef or number
- ret == null ? "" : ret;
- }
-
- return;
- }
-
- isFunction = jQuery.isFunction( value );
-
- return this.each(function( i ) {
- var self = jQuery(this), val;
-
- if ( this.nodeType !== 1 ) {
- return;
- }
-
- if ( isFunction ) {
- val = value.call( this, i, self.val() );
- } else {
- val = value;
- }
-
- // Treat null/undefined as ""; convert numbers to string
- if ( val == null ) {
- val = "";
- } else if ( typeof val === "number" ) {
- val += "";
- } else if ( jQuery.isArray( val ) ) {
- val = jQuery.map(val, function ( value ) {
- return value == null ? "" : value + "";
- });
- }
-
- hooks = jQuery.valHooks[ this.nodeName.toLowerCase() ] || jQuery.valHooks[ this.type ];
-
- // If set returns undefined, fall back to normal setting
- if ( !hooks || !("set" in hooks) || hooks.set( this, val, "value" ) === undefined ) {
- this.value = val;
- }
- });
- }
-});
-
-jQuery.extend({
- valHooks: {
- option: {
- get: function( elem ) {
- // attributes.value is undefined in Blackberry 4.7 but
- // uses .value. See #6932
- var val = elem.attributes.value;
- return !val || val.specified ? elem.value : elem.text;
- }
- },
- select: {
- get: function( elem ) {
- var value, i, max, option,
- index = elem.selectedIndex,
- values = [],
- options = elem.options,
- one = elem.type === "select-one";
-
- // Nothing was selected
- if ( index < 0 ) {
- return null;
- }
-
- // Loop through all the selected options
- i = one ? index : 0;
- max = one ? index + 1 : options.length;
- for ( ; i < max; i++ ) {
- option = options[ i ];
-
- // Don't return options that are disabled or in a disabled optgroup
- if ( option.selected && (jQuery.support.optDisabled ? !option.disabled : option.getAttribute("disabled") === null) &&
- (!option.parentNode.disabled || !jQuery.nodeName( option.parentNode, "optgroup" )) ) {
-
- // Get the specific value for the option
- value = jQuery( option ).val();
-
- // We don't need an array for one selects
- if ( one ) {
- return value;
- }
-
- // Multi-Selects return an array
- values.push( value );
- }
- }
-
- // Fixes Bug #2551 -- select.val() broken in IE after form.reset()
- if ( one && !values.length && options.length ) {
- return jQuery( options[ index ] ).val();
- }
-
- return values;
- },
-
- set: function( elem, value ) {
- var values = jQuery.makeArray( value );
-
- jQuery(elem).find("option").each(function() {
- this.selected = jQuery.inArray( jQuery(this).val(), values ) >= 0;
- });
-
- if ( !values.length ) {
- elem.selectedIndex = -1;
- }
- return values;
- }
- }
- },
-
- attrFn: {
- val: true,
- css: true,
- html: true,
- text: true,
- data: true,
- width: true,
- height: true,
- offset: true
- },
-
- attr: function( elem, name, value, pass ) {
- var ret, hooks, notxml,
- nType = elem.nodeType;
-
- // don't get/set attributes on text, comment and attribute nodes
- if ( !elem || nType === 3 || nType === 8 || nType === 2 ) {
- return;
- }
-
- if ( pass && name in jQuery.attrFn ) {
- return jQuery( elem )[ name ]( value );
- }
-
- // Fallback to prop when attributes are not supported
- if ( typeof elem.getAttribute === "undefined" ) {
- return jQuery.prop( elem, name, value );
- }
-
- notxml = nType !== 1 || !jQuery.isXMLDoc( elem );
-
- // All attributes are lowercase
- // Grab necessary hook if one is defined
- if ( notxml ) {
- name = name.toLowerCase();
- hooks = jQuery.attrHooks[ name ] || ( rboolean.test( name ) ? boolHook : nodeHook );
- }
-
- if ( value !== undefined ) {
-
- if ( value === null ) {
- jQuery.removeAttr( elem, name );
- return;
-
- } else if ( hooks && "set" in hooks && notxml && (ret = hooks.set( elem, value, name )) !== undefined ) {
- return ret;
-
- } else {
- elem.setAttribute( name, "" + value );
- return value;
- }
-
- } else if ( hooks && "get" in hooks && notxml && (ret = hooks.get( elem, name )) !== null ) {
- return ret;
-
- } else {
-
- ret = elem.getAttribute( name );
-
- // Non-existent attributes return null, we normalize to undefined
- return ret === null ?
- undefined :
- ret;
- }
- },
-
- removeAttr: function( elem, value ) {
- var propName, attrNames, name, l,
- i = 0;
-
- if ( value && elem.nodeType === 1 ) {
- attrNames = value.toLowerCase().split( rspace );
- l = attrNames.length;
-
- for ( ; i < l; i++ ) {
- name = attrNames[ i ];
-
- if ( name ) {
- propName = jQuery.propFix[ name ] || name;
-
- // See #9699 for explanation of this approach (setting first, then removal)
- jQuery.attr( elem, name, "" );
- elem.removeAttribute( getSetAttribute ? name : propName );
-
- // Set corresponding property to false for boolean attributes
- if ( rboolean.test( name ) && propName in elem ) {
- elem[ propName ] = false;
- }
- }
- }
- }
- },
-
- attrHooks: {
- type: {
- set: function( elem, value ) {
- // We can't allow the type property to be changed (since it causes problems in IE)
- if ( rtype.test( elem.nodeName ) && elem.parentNode ) {
- jQuery.error( "type property can't be changed" );
- } else if ( !jQuery.support.radioValue && value === "radio" && jQuery.nodeName(elem, "input") ) {
- // Setting the type on a radio button after the value resets the value in IE6-9
- // Reset value to it's default in case type is set after value
- // This is for element creation
- var val = elem.value;
- elem.setAttribute( "type", value );
- if ( val ) {
- elem.value = val;
- }
- return value;
- }
- }
- },
- // Use the value property for back compat
- // Use the nodeHook for button elements in IE6/7 (#1954)
- value: {
- get: function( elem, name ) {
- if ( nodeHook && jQuery.nodeName( elem, "button" ) ) {
- return nodeHook.get( elem, name );
- }
- return name in elem ?
- elem.value :
- null;
- },
- set: function( elem, value, name ) {
- if ( nodeHook && jQuery.nodeName( elem, "button" ) ) {
- return nodeHook.set( elem, value, name );
- }
- // Does not return so that setAttribute is also used
- elem.value = value;
- }
- }
- },
-
- propFix: {
- tabindex: "tabIndex",
- readonly: "readOnly",
- "for": "htmlFor",
- "class": "className",
- maxlength: "maxLength",
- cellspacing: "cellSpacing",
- cellpadding: "cellPadding",
- rowspan: "rowSpan",
- colspan: "colSpan",
- usemap: "useMap",
- frameborder: "frameBorder",
- contenteditable: "contentEditable"
- },
-
- prop: function( elem, name, value ) {
- var ret, hooks, notxml,
- nType = elem.nodeType;
-
- // don't get/set properties on text, comment and attribute nodes
- if ( !elem || nType === 3 || nType === 8 || nType === 2 ) {
- return;
- }
-
- notxml = nType !== 1 || !jQuery.isXMLDoc( elem );
-
- if ( notxml ) {
- // Fix name and attach hooks
- name = jQuery.propFix[ name ] || name;
- hooks = jQuery.propHooks[ name ];
- }
-
- if ( value !== undefined ) {
- if ( hooks && "set" in hooks && (ret = hooks.set( elem, value, name )) !== undefined ) {
- return ret;
-
- } else {
- return ( elem[ name ] = value );
- }
-
- } else {
- if ( hooks && "get" in hooks && (ret = hooks.get( elem, name )) !== null ) {
- return ret;
-
- } else {
- return elem[ name ];
- }
- }
- },
-
- propHooks: {
- tabIndex: {
- get: function( elem ) {
- // elem.tabIndex doesn't always return the correct value when it hasn't been explicitly set
- // http://fluidproject.org/blog/2008/01/09/getting-setting-and-removing-tabindex-values-with-javascript/
- var attributeNode = elem.getAttributeNode("tabindex");
-
- return attributeNode && attributeNode.specified ?
- parseInt( attributeNode.value, 10 ) :
- rfocusable.test( elem.nodeName ) || rclickable.test( elem.nodeName ) && elem.href ?
- 0 :
- undefined;
- }
- }
- }
-});
-
-// Add the tabIndex propHook to attrHooks for back-compat (different case is intentional)
-jQuery.attrHooks.tabindex = jQuery.propHooks.tabIndex;
-
-// Hook for boolean attributes
-boolHook = {
- get: function( elem, name ) {
- // Align boolean attributes with corresponding properties
- // Fall back to attribute presence where some booleans are not supported
- var attrNode,
- property = jQuery.prop( elem, name );
- return property === true || typeof property !== "boolean" && ( attrNode = elem.getAttributeNode(name) ) && attrNode.nodeValue !== false ?
- name.toLowerCase() :
- undefined;
- },
- set: function( elem, value, name ) {
- var propName;
- if ( value === false ) {
- // Remove boolean attributes when set to false
- jQuery.removeAttr( elem, name );
- } else {
- // value is true since we know at this point it's type boolean and not false
- // Set boolean attributes to the same name and set the DOM property
- propName = jQuery.propFix[ name ] || name;
- if ( propName in elem ) {
- // Only set the IDL specifically if it already exists on the element
- elem[ propName ] = true;
- }
-
- elem.setAttribute( name, name.toLowerCase() );
- }
- return name;
- }
-};
-
-// IE6/7 do not support getting/setting some attributes with get/setAttribute
-if ( !getSetAttribute ) {
-
- fixSpecified = {
- name: true,
- id: true
- };
-
- // Use this for any attribute in IE6/7
- // This fixes almost every IE6/7 issue
- nodeHook = jQuery.valHooks.button = {
- get: function( elem, name ) {
- var ret;
- ret = elem.getAttributeNode( name );
- return ret && ( fixSpecified[ name ] ? ret.nodeValue !== "" : ret.specified ) ?
- ret.nodeValue :
- undefined;
- },
- set: function( elem, value, name ) {
- // Set the existing or create a new attribute node
- var ret = elem.getAttributeNode( name );
- if ( !ret ) {
- ret = document.createAttribute( name );
- elem.setAttributeNode( ret );
- }
- return ( ret.nodeValue = value + "" );
- }
- };
-
- // Apply the nodeHook to tabindex
- jQuery.attrHooks.tabindex.set = nodeHook.set;
-
- // Set width and height to auto instead of 0 on empty string( Bug #8150 )
- // This is for removals
- jQuery.each([ "width", "height" ], function( i, name ) {
- jQuery.attrHooks[ name ] = jQuery.extend( jQuery.attrHooks[ name ], {
- set: function( elem, value ) {
- if ( value === "" ) {
- elem.setAttribute( name, "auto" );
- return value;
- }
- }
- });
- });
-
- // Set contenteditable to false on removals(#10429)
- // Setting to empty string throws an error as an invalid value
- jQuery.attrHooks.contenteditable = {
- get: nodeHook.get,
- set: function( elem, value, name ) {
- if ( value === "" ) {
- value = "false";
- }
- nodeHook.set( elem, value, name );
- }
- };
-}
-
-
-// Some attributes require a special call on IE
-if ( !jQuery.support.hrefNormalized ) {
- jQuery.each([ "href", "src", "width", "height" ], function( i, name ) {
- jQuery.attrHooks[ name ] = jQuery.extend( jQuery.attrHooks[ name ], {
- get: function( elem ) {
- var ret = elem.getAttribute( name, 2 );
- return ret === null ? undefined : ret;
- }
- });
- });
-}
-
-if ( !jQuery.support.style ) {
- jQuery.attrHooks.style = {
- get: function( elem ) {
- // Return undefined in the case of empty string
- // Normalize to lowercase since IE uppercases css property names
- return elem.style.cssText.toLowerCase() || undefined;
- },
- set: function( elem, value ) {
- return ( elem.style.cssText = "" + value );
- }
- };
-}
-
-// Safari mis-reports the default selected property of an option
-// Accessing the parent's selectedIndex property fixes it
-if ( !jQuery.support.optSelected ) {
- jQuery.propHooks.selected = jQuery.extend( jQuery.propHooks.selected, {
- get: function( elem ) {
- var parent = elem.parentNode;
-
- if ( parent ) {
- parent.selectedIndex;
-
- // Make sure that it also works with optgroups, see #5701
- if ( parent.parentNode ) {
- parent.parentNode.selectedIndex;
- }
- }
- return null;
- }
- });
-}
-
-// IE6/7 call enctype encoding
-if ( !jQuery.support.enctype ) {
- jQuery.propFix.enctype = "encoding";
-}
-
-// Radios and checkboxes getter/setter
-if ( !jQuery.support.checkOn ) {
- jQuery.each([ "radio", "checkbox" ], function() {
- jQuery.valHooks[ this ] = {
- get: function( elem ) {
- // Handle the case where in Webkit "" is returned instead of "on" if a value isn't specified
- return elem.getAttribute("value") === null ? "on" : elem.value;
- }
- };
- });
-}
-jQuery.each([ "radio", "checkbox" ], function() {
- jQuery.valHooks[ this ] = jQuery.extend( jQuery.valHooks[ this ], {
- set: function( elem, value ) {
- if ( jQuery.isArray( value ) ) {
- return ( elem.checked = jQuery.inArray( jQuery(elem).val(), value ) >= 0 );
- }
- }
- });
-});
-
-
-
-
-var rformElems = /^(?:textarea|input|select)$/i,
- rtypenamespace = /^([^\.]*)?(?:\.(.+))?$/,
- rhoverHack = /\bhover(\.\S+)?\b/,
- rkeyEvent = /^key/,
- rmouseEvent = /^(?:mouse|contextmenu)|click/,
- rfocusMorph = /^(?:focusinfocus|focusoutblur)$/,
- rquickIs = /^(\w*)(?:#([\w\-]+))?(?:\.([\w\-]+))?$/,
- quickParse = function( selector ) {
- var quick = rquickIs.exec( selector );
- if ( quick ) {
- // 0 1 2 3
- // [ _, tag, id, class ]
- quick[1] = ( quick[1] || "" ).toLowerCase();
- quick[3] = quick[3] && new RegExp( "(?:^|\\s)" + quick[3] + "(?:\\s|$)" );
- }
- return quick;
- },
- quickIs = function( elem, m ) {
- var attrs = elem.attributes || {};
- return (
- (!m[1] || elem.nodeName.toLowerCase() === m[1]) &&
- (!m[2] || (attrs.id || {}).value === m[2]) &&
- (!m[3] || m[3].test( (attrs[ "class" ] || {}).value ))
- );
- },
- hoverHack = function( events ) {
- return jQuery.event.special.hover ? events : events.replace( rhoverHack, "mouseenter$1 mouseleave$1" );
- };
-
-/*
- * Helper functions for managing events -- not part of the public interface.
- * Props to Dean Edwards' addEvent library for many of the ideas.
- */
-jQuery.event = {
-
- add: function( elem, types, handler, data, selector ) {
-
- var elemData, eventHandle, events,
- t, tns, type, namespaces, handleObj,
- handleObjIn, quick, handlers, special;
-
- // Don't attach events to noData or text/comment nodes (allow plain objects tho)
- if ( elem.nodeType === 3 || elem.nodeType === 8 || !types || !handler || !(elemData = jQuery._data( elem )) ) {
- return;
- }
-
- // Caller can pass in an object of custom data in lieu of the handler
- if ( handler.handler ) {
- handleObjIn = handler;
- handler = handleObjIn.handler;
- }
-
- // Make sure that the handler has a unique ID, used to find/remove it later
- if ( !handler.guid ) {
- handler.guid = jQuery.guid++;
- }
-
- // Init the element's event structure and main handler, if this is the first
- events = elemData.events;
- if ( !events ) {
- elemData.events = events = {};
- }
- eventHandle = elemData.handle;
- if ( !eventHandle ) {
- elemData.handle = eventHandle = function( e ) {
- // Discard the second event of a jQuery.event.trigger() and
- // when an event is called after a page has unloaded
- return typeof jQuery !== "undefined" && (!e || jQuery.event.triggered !== e.type) ?
- jQuery.event.dispatch.apply( eventHandle.elem, arguments ) :
- undefined;
- };
- // Add elem as a property of the handle fn to prevent a memory leak with IE non-native events
- eventHandle.elem = elem;
- }
-
- // Handle multiple events separated by a space
- // jQuery(...).bind("mouseover mouseout", fn);
- types = jQuery.trim( hoverHack(types) ).split( " " );
- for ( t = 0; t < types.length; t++ ) {
-
- tns = rtypenamespace.exec( types[t] ) || [];
- type = tns[1];
- namespaces = ( tns[2] || "" ).split( "." ).sort();
-
- // If event changes its type, use the special event handlers for the changed type
- special = jQuery.event.special[ type ] || {};
-
- // If selector defined, determine special event api type, otherwise given type
- type = ( selector ? special.delegateType : special.bindType ) || type;
-
- // Update special based on newly reset type
- special = jQuery.event.special[ type ] || {};
-
- // handleObj is passed to all event handlers
- handleObj = jQuery.extend({
- type: type,
- origType: tns[1],
- data: data,
- handler: handler,
- guid: handler.guid,
- selector: selector,
- quick: quickParse( selector ),
- namespace: namespaces.join(".")
- }, handleObjIn );
-
- // Init the event handler queue if we're the first
- handlers = events[ type ];
- if ( !handlers ) {
- handlers = events[ type ] = [];
- handlers.delegateCount = 0;
-
- // Only use addEventListener/attachEvent if the special events handler returns false
- if ( !special.setup || special.setup.call( elem, data, namespaces, eventHandle ) === false ) {
- // Bind the global event handler to the element
- if ( elem.addEventListener ) {
- elem.addEventListener( type, eventHandle, false );
-
- } else if ( elem.attachEvent ) {
- elem.attachEvent( "on" + type, eventHandle );
- }
- }
- }
-
- if ( special.add ) {
- special.add.call( elem, handleObj );
-
- if ( !handleObj.handler.guid ) {
- handleObj.handler.guid = handler.guid;
- }
- }
-
- // Add to the element's handler list, delegates in front
- if ( selector ) {
- handlers.splice( handlers.delegateCount++, 0, handleObj );
- } else {
- handlers.push( handleObj );
- }
-
- // Keep track of which events have ever been used, for event optimization
- jQuery.event.global[ type ] = true;
- }
-
- // Nullify elem to prevent memory leaks in IE
- elem = null;
- },
-
- global: {},
-
- // Detach an event or set of events from an element
- remove: function( elem, types, handler, selector, mappedTypes ) {
-
- var elemData = jQuery.hasData( elem ) && jQuery._data( elem ),
- t, tns, type, origType, namespaces, origCount,
- j, events, special, handle, eventType, handleObj;
-
- if ( !elemData || !(events = elemData.events) ) {
- return;
- }
-
- // Once for each type.namespace in types; type may be omitted
- types = jQuery.trim( hoverHack( types || "" ) ).split(" ");
- for ( t = 0; t < types.length; t++ ) {
- tns = rtypenamespace.exec( types[t] ) || [];
- type = origType = tns[1];
- namespaces = tns[2];
-
- // Unbind all events (on this namespace, if provided) for the element
- if ( !type ) {
- for ( type in events ) {
- jQuery.event.remove( elem, type + types[ t ], handler, selector, true );
- }
- continue;
- }
-
- special = jQuery.event.special[ type ] || {};
- type = ( selector? special.delegateType : special.bindType ) || type;
- eventType = events[ type ] || [];
- origCount = eventType.length;
- namespaces = namespaces ? new RegExp("(^|\\.)" + namespaces.split(".").sort().join("\\.(?:.*\\.)?") + "(\\.|$)") : null;
-
- // Remove matching events
- for ( j = 0; j < eventType.length; j++ ) {
- handleObj = eventType[ j ];
-
- if ( ( mappedTypes || origType === handleObj.origType ) &&
- ( !handler || handler.guid === handleObj.guid ) &&
- ( !namespaces || namespaces.test( handleObj.namespace ) ) &&
- ( !selector || selector === handleObj.selector || selector === "**" && handleObj.selector ) ) {
- eventType.splice( j--, 1 );
-
- if ( handleObj.selector ) {
- eventType.delegateCount--;
- }
- if ( special.remove ) {
- special.remove.call( elem, handleObj );
- }
- }
- }
-
- // Remove generic event handler if we removed something and no more handlers exist
- // (avoids potential for endless recursion during removal of special event handlers)
- if ( eventType.length === 0 && origCount !== eventType.length ) {
- if ( !special.teardown || special.teardown.call( elem, namespaces ) === false ) {
- jQuery.removeEvent( elem, type, elemData.handle );
- }
-
- delete events[ type ];
- }
- }
-
- // Remove the expando if it's no longer used
- if ( jQuery.isEmptyObject( events ) ) {
- handle = elemData.handle;
- if ( handle ) {
- handle.elem = null;
- }
-
- // removeData also checks for emptiness and clears the expando if empty
- // so use it instead of delete
- jQuery.removeData( elem, [ "events", "handle" ], true );
- }
- },
-
- // Events that are safe to short-circuit if no handlers are attached.
- // Native DOM events should not be added, they may have inline handlers.
- customEvent: {
- "getData": true,
- "setData": true,
- "changeData": true
- },
-
- trigger: function( event, data, elem, onlyHandlers ) {
- // Don't do events on text and comment nodes
- if ( elem && (elem.nodeType === 3 || elem.nodeType === 8) ) {
- return;
- }
-
- // Event object or event type
- var type = event.type || event,
- namespaces = [],
- cache, exclusive, i, cur, old, ontype, special, handle, eventPath, bubbleType;
-
- // focus/blur morphs to focusin/out; ensure we're not firing them right now
- if ( rfocusMorph.test( type + jQuery.event.triggered ) ) {
- return;
- }
-
- if ( type.indexOf( "!" ) >= 0 ) {
- // Exclusive events trigger only for the exact event (no namespaces)
- type = type.slice(0, -1);
- exclusive = true;
- }
-
- if ( type.indexOf( "." ) >= 0 ) {
- // Namespaced trigger; create a regexp to match event type in handle()
- namespaces = type.split(".");
- type = namespaces.shift();
- namespaces.sort();
- }
-
- if ( (!elem || jQuery.event.customEvent[ type ]) && !jQuery.event.global[ type ] ) {
- // No jQuery handlers for this event type, and it can't have inline handlers
- return;
- }
-
- // Caller can pass in an Event, Object, or just an event type string
- event = typeof event === "object" ?
- // jQuery.Event object
- event[ jQuery.expando ] ? event :
- // Object literal
- new jQuery.Event( type, event ) :
- // Just the event type (string)
- new jQuery.Event( type );
-
- event.type = type;
- event.isTrigger = true;
- event.exclusive = exclusive;
- event.namespace = namespaces.join( "." );
- event.namespace_re = event.namespace? new RegExp("(^|\\.)" + namespaces.join("\\.(?:.*\\.)?") + "(\\.|$)") : null;
- ontype = type.indexOf( ":" ) < 0 ? "on" + type : "";
-
- // Handle a global trigger
- if ( !elem ) {
-
- // TODO: Stop taunting the data cache; remove global events and always attach to document
- cache = jQuery.cache;
- for ( i in cache ) {
- if ( cache[ i ].events && cache[ i ].events[ type ] ) {
- jQuery.event.trigger( event, data, cache[ i ].handle.elem, true );
- }
- }
- return;
- }
-
- // Clean up the event in case it is being reused
- event.result = undefined;
- if ( !event.target ) {
- event.target = elem;
- }
-
- // Clone any incoming data and prepend the event, creating the handler arg list
- data = data != null ? jQuery.makeArray( data ) : [];
- data.unshift( event );
-
- // Allow special events to draw outside the lines
- special = jQuery.event.special[ type ] || {};
- if ( special.trigger && special.trigger.apply( elem, data ) === false ) {
- return;
- }
-
- // Determine event propagation path in advance, per W3C events spec (#9951)
- // Bubble up to document, then to window; watch for a global ownerDocument var (#9724)
- eventPath = [[ elem, special.bindType || type ]];
- if ( !onlyHandlers && !special.noBubble && !jQuery.isWindow( elem ) ) {
-
- bubbleType = special.delegateType || type;
- cur = rfocusMorph.test( bubbleType + type ) ? elem : elem.parentNode;
- old = null;
- for ( ; cur; cur = cur.parentNode ) {
- eventPath.push([ cur, bubbleType ]);
- old = cur;
- }
-
- // Only add window if we got to document (e.g., not plain obj or detached DOM)
- if ( old && old === elem.ownerDocument ) {
- eventPath.push([ old.defaultView || old.parentWindow || window, bubbleType ]);
- }
- }
-
- // Fire handlers on the event path
- for ( i = 0; i < eventPath.length && !event.isPropagationStopped(); i++ ) {
-
- cur = eventPath[i][0];
- event.type = eventPath[i][1];
-
- handle = ( jQuery._data( cur, "events" ) || {} )[ event.type ] && jQuery._data( cur, "handle" );
- if ( handle ) {
- handle.apply( cur, data );
- }
- // Note that this is a bare JS function and not a jQuery handler
- handle = ontype && cur[ ontype ];
- if ( handle && jQuery.acceptData( cur ) && handle.apply( cur, data ) === false ) {
- event.preventDefault();
- }
- }
- event.type = type;
-
- // If nobody prevented the default action, do it now
- if ( !onlyHandlers && !event.isDefaultPrevented() ) {
-
- if ( (!special._default || special._default.apply( elem.ownerDocument, data ) === false) &&
- !(type === "click" && jQuery.nodeName( elem, "a" )) && jQuery.acceptData( elem ) ) {
-
- // Call a native DOM method on the target with the same name name as the event.
- // Can't use an .isFunction() check here because IE6/7 fails that test.
- // Don't do default actions on window, that's where global variables be (#6170)
- // IE<9 dies on focus/blur to hidden element (#1486)
- if ( ontype && elem[ type ] && ((type !== "focus" && type !== "blur") || event.target.offsetWidth !== 0) && !jQuery.isWindow( elem ) ) {
-
- // Don't re-trigger an onFOO event when we call its FOO() method
- old = elem[ ontype ];
-
- if ( old ) {
- elem[ ontype ] = null;
- }
-
- // Prevent re-triggering of the same event, since we already bubbled it above
- jQuery.event.triggered = type;
- elem[ type ]();
- jQuery.event.triggered = undefined;
-
- if ( old ) {
- elem[ ontype ] = old;
- }
- }
- }
- }
-
- return event.result;
- },
-
- dispatch: function( event ) {
-
- // Make a writable jQuery.Event from the native event object
- event = jQuery.event.fix( event || window.event );
-
- var handlers = ( (jQuery._data( this, "events" ) || {} )[ event.type ] || []),
- delegateCount = handlers.delegateCount,
- args = [].slice.call( arguments, 0 ),
- run_all = !event.exclusive && !event.namespace,
- handlerQueue = [],
- i, j, cur, jqcur, ret, selMatch, matched, matches, handleObj, sel, related;
-
- // Use the fix-ed jQuery.Event rather than the (read-only) native event
- args[0] = event;
- event.delegateTarget = this;
-
- // Determine handlers that should run if there are delegated events
- // Avoid disabled elements in IE (#6911) and non-left-click bubbling in Firefox (#3861)
- if ( delegateCount && !event.target.disabled && !(event.button && event.type === "click") ) {
-
- // Pregenerate a single jQuery object for reuse with .is()
- jqcur = jQuery(this);
- jqcur.context = this.ownerDocument || this;
-
- for ( cur = event.target; cur != this; cur = cur.parentNode || this ) {
- selMatch = {};
- matches = [];
- jqcur[0] = cur;
- for ( i = 0; i < delegateCount; i++ ) {
- handleObj = handlers[ i ];
- sel = handleObj.selector;
-
- if ( selMatch[ sel ] === undefined ) {
- selMatch[ sel ] = (
- handleObj.quick ? quickIs( cur, handleObj.quick ) : jqcur.is( sel )
- );
- }
- if ( selMatch[ sel ] ) {
- matches.push( handleObj );
- }
- }
- if ( matches.length ) {
- handlerQueue.push({ elem: cur, matches: matches });
- }
- }
- }
-
- // Add the remaining (directly-bound) handlers
- if ( handlers.length > delegateCount ) {
- handlerQueue.push({ elem: this, matches: handlers.slice( delegateCount ) });
- }
-
- // Run delegates first; they may want to stop propagation beneath us
- for ( i = 0; i < handlerQueue.length && !event.isPropagationStopped(); i++ ) {
- matched = handlerQueue[ i ];
- event.currentTarget = matched.elem;
-
- for ( j = 0; j < matched.matches.length && !event.isImmediatePropagationStopped(); j++ ) {
- handleObj = matched.matches[ j ];
-
- // Triggered event must either 1) be non-exclusive and have no namespace, or
- // 2) have namespace(s) a subset or equal to those in the bound event (both can have no namespace).
- if ( run_all || (!event.namespace && !handleObj.namespace) || event.namespace_re && event.namespace_re.test( handleObj.namespace ) ) {
-
- event.data = handleObj.data;
- event.handleObj = handleObj;
-
- ret = ( (jQuery.event.special[ handleObj.origType ] || {}).handle || handleObj.handler )
- .apply( matched.elem, args );
-
- if ( ret !== undefined ) {
- event.result = ret;
- if ( ret === false ) {
- event.preventDefault();
- event.stopPropagation();
- }
- }
- }
- }
- }
-
- return event.result;
- },
-
- // Includes some event props shared by KeyEvent and MouseEvent
- // *** attrChange attrName relatedNode srcElement are not normalized, non-W3C, deprecated, will be removed in 1.8 ***
- props: "attrChange attrName relatedNode srcElement altKey bubbles cancelable ctrlKey currentTarget eventPhase metaKey relatedTarget shiftKey target timeStamp view which".split(" "),
-
- fixHooks: {},
-
- keyHooks: {
- props: "char charCode key keyCode".split(" "),
- filter: function( event, original ) {
-
- // Add which for key events
- if ( event.which == null ) {
- event.which = original.charCode != null ? original.charCode : original.keyCode;
- }
-
- return event;
- }
- },
-
- mouseHooks: {
- props: "button buttons clientX clientY fromElement offsetX offsetY pageX pageY screenX screenY toElement".split(" "),
- filter: function( event, original ) {
- var eventDoc, doc, body,
- button = original.button,
- fromElement = original.fromElement;
-
- // Calculate pageX/Y if missing and clientX/Y available
- if ( event.pageX == null && original.clientX != null ) {
- eventDoc = event.target.ownerDocument || document;
- doc = eventDoc.documentElement;
- body = eventDoc.body;
-
- event.pageX = original.clientX + ( doc && doc.scrollLeft || body && body.scrollLeft || 0 ) - ( doc && doc.clientLeft || body && body.clientLeft || 0 );
- event.pageY = original.clientY + ( doc && doc.scrollTop || body && body.scrollTop || 0 ) - ( doc && doc.clientTop || body && body.clientTop || 0 );
- }
-
- // Add relatedTarget, if necessary
- if ( !event.relatedTarget && fromElement ) {
- event.relatedTarget = fromElement === event.target ? original.toElement : fromElement;
- }
-
- // Add which for click: 1 === left; 2 === middle; 3 === right
- // Note: button is not normalized, so don't use it
- if ( !event.which && button !== undefined ) {
- event.which = ( button & 1 ? 1 : ( button & 2 ? 3 : ( button & 4 ? 2 : 0 ) ) );
- }
-
- return event;
- }
- },
-
- fix: function( event ) {
- if ( event[ jQuery.expando ] ) {
- return event;
- }
-
- // Create a writable copy of the event object and normalize some properties
- var i, prop,
- originalEvent = event,
- fixHook = jQuery.event.fixHooks[ event.type ] || {},
- copy = fixHook.props ? this.props.concat( fixHook.props ) : this.props;
-
- event = jQuery.Event( originalEvent );
-
- for ( i = copy.length; i; ) {
- prop = copy[ --i ];
- event[ prop ] = originalEvent[ prop ];
- }
-
- // Fix target property, if necessary (#1925, IE 6/7/8 & Safari2)
- if ( !event.target ) {
- event.target = originalEvent.srcElement || document;
- }
-
- // Target should not be a text node (#504, Safari)
- if ( event.target.nodeType === 3 ) {
- event.target = event.target.parentNode;
- }
-
- // For mouse/key events; add metaKey if it's not there (#3368, IE6/7/8)
- if ( event.metaKey === undefined ) {
- event.metaKey = event.ctrlKey;
- }
-
- return fixHook.filter? fixHook.filter( event, originalEvent ) : event;
- },
-
- special: {
- ready: {
- // Make sure the ready event is setup
- setup: jQuery.bindReady
- },
-
- load: {
- // Prevent triggered image.load events from bubbling to window.load
- noBubble: true
- },
-
- focus: {
- delegateType: "focusin"
- },
- blur: {
- delegateType: "focusout"
- },
-
- beforeunload: {
- setup: function( data, namespaces, eventHandle ) {
- // We only want to do this special case on windows
- if ( jQuery.isWindow( this ) ) {
- this.onbeforeunload = eventHandle;
- }
- },
-
- teardown: function( namespaces, eventHandle ) {
- if ( this.onbeforeunload === eventHandle ) {
- this.onbeforeunload = null;
- }
- }
- }
- },
-
- simulate: function( type, elem, event, bubble ) {
- // Piggyback on a donor event to simulate a different one.
- // Fake originalEvent to avoid donor's stopPropagation, but if the
- // simulated event prevents default then we do the same on the donor.
- var e = jQuery.extend(
- new jQuery.Event(),
- event,
- { type: type,
- isSimulated: true,
- originalEvent: {}
- }
- );
- if ( bubble ) {
- jQuery.event.trigger( e, null, elem );
- } else {
- jQuery.event.dispatch.call( elem, e );
- }
- if ( e.isDefaultPrevented() ) {
- event.preventDefault();
- }
- }
-};
-
-// Some plugins are using, but it's undocumented/deprecated and will be removed.
-// The 1.7 special event interface should provide all the hooks needed now.
-jQuery.event.handle = jQuery.event.dispatch;
-
-jQuery.removeEvent = document.removeEventListener ?
- function( elem, type, handle ) {
- if ( elem.removeEventListener ) {
- elem.removeEventListener( type, handle, false );
- }
- } :
- function( elem, type, handle ) {
- if ( elem.detachEvent ) {
- elem.detachEvent( "on" + type, handle );
- }
- };
-
-jQuery.Event = function( src, props ) {
- // Allow instantiation without the 'new' keyword
- if ( !(this instanceof jQuery.Event) ) {
- return new jQuery.Event( src, props );
- }
-
- // Event object
- if ( src && src.type ) {
- this.originalEvent = src;
- this.type = src.type;
-
- // Events bubbling up the document may have been marked as prevented
- // by a handler lower down the tree; reflect the correct value.
- this.isDefaultPrevented = ( src.defaultPrevented || src.returnValue === false ||
- src.getPreventDefault && src.getPreventDefault() ) ? returnTrue : returnFalse;
-
- // Event type
- } else {
- this.type = src;
- }
-
- // Put explicitly provided properties onto the event object
- if ( props ) {
- jQuery.extend( this, props );
- }
-
- // Create a timestamp if incoming event doesn't have one
- this.timeStamp = src && src.timeStamp || jQuery.now();
-
- // Mark it as fixed
- this[ jQuery.expando ] = true;
-};
-
-function returnFalse() {
- return false;
-}
-function returnTrue() {
- return true;
-}
-
-// jQuery.Event is based on DOM3 Events as specified by the ECMAScript Language Binding
-// http://www.w3.org/TR/2003/WD-DOM-Level-3-Events-20030331/ecma-script-binding.html
-jQuery.Event.prototype = {
- preventDefault: function() {
- this.isDefaultPrevented = returnTrue;
-
- var e = this.originalEvent;
- if ( !e ) {
- return;
- }
-
- // if preventDefault exists run it on the original event
- if ( e.preventDefault ) {
- e.preventDefault();
-
- // otherwise set the returnValue property of the original event to false (IE)
- } else {
- e.returnValue = false;
- }
- },
- stopPropagation: function() {
- this.isPropagationStopped = returnTrue;
-
- var e = this.originalEvent;
- if ( !e ) {
- return;
- }
- // if stopPropagation exists run it on the original event
- if ( e.stopPropagation ) {
- e.stopPropagation();
- }
- // otherwise set the cancelBubble property of the original event to true (IE)
- e.cancelBubble = true;
- },
- stopImmediatePropagation: function() {
- this.isImmediatePropagationStopped = returnTrue;
- this.stopPropagation();
- },
- isDefaultPrevented: returnFalse,
- isPropagationStopped: returnFalse,
- isImmediatePropagationStopped: returnFalse
-};
-
-// Create mouseenter/leave events using mouseover/out and event-time checks
-jQuery.each({
- mouseenter: "mouseover",
- mouseleave: "mouseout"
-}, function( orig, fix ) {
- jQuery.event.special[ orig ] = {
- delegateType: fix,
- bindType: fix,
-
- handle: function( event ) {
- var target = this,
- related = event.relatedTarget,
- handleObj = event.handleObj,
- selector = handleObj.selector,
- ret;
-
- // For mousenter/leave call the handler if related is outside the target.
- // NB: No relatedTarget if the mouse left/entered the browser window
- if ( !related || (related !== target && !jQuery.contains( target, related )) ) {
- event.type = handleObj.origType;
- ret = handleObj.handler.apply( this, arguments );
- event.type = fix;
- }
- return ret;
- }
- };
-});
-
-// IE submit delegation
-if ( !jQuery.support.submitBubbles ) {
-
- jQuery.event.special.submit = {
- setup: function() {
- // Only need this for delegated form submit events
- if ( jQuery.nodeName( this, "form" ) ) {
- return false;
- }
-
- // Lazy-add a submit handler when a descendant form may potentially be submitted
- jQuery.event.add( this, "click._submit keypress._submit", function( e ) {
- // Node name check avoids a VML-related crash in IE (#9807)
- var elem = e.target,
- form = jQuery.nodeName( elem, "input" ) || jQuery.nodeName( elem, "button" ) ? elem.form : undefined;
- if ( form && !form._submit_attached ) {
- jQuery.event.add( form, "submit._submit", function( event ) {
- // If form was submitted by the user, bubble the event up the tree
- if ( this.parentNode && !event.isTrigger ) {
- jQuery.event.simulate( "submit", this.parentNode, event, true );
- }
- });
- form._submit_attached = true;
- }
- });
- // return undefined since we don't need an event listener
- },
-
- teardown: function() {
- // Only need this for delegated form submit events
- if ( jQuery.nodeName( this, "form" ) ) {
- return false;
- }
-
- // Remove delegated handlers; cleanData eventually reaps submit handlers attached above
- jQuery.event.remove( this, "._submit" );
- }
- };
-}
-
-// IE change delegation and checkbox/radio fix
-if ( !jQuery.support.changeBubbles ) {
-
- jQuery.event.special.change = {
-
- setup: function() {
-
- if ( rformElems.test( this.nodeName ) ) {
- // IE doesn't fire change on a check/radio until blur; trigger it on click
- // after a propertychange. Eat the blur-change in special.change.handle.
- // This still fires onchange a second time for check/radio after blur.
- if ( this.type === "checkbox" || this.type === "radio" ) {
- jQuery.event.add( this, "propertychange._change", function( event ) {
- if ( event.originalEvent.propertyName === "checked" ) {
- this._just_changed = true;
- }
- });
- jQuery.event.add( this, "click._change", function( event ) {
- if ( this._just_changed && !event.isTrigger ) {
- this._just_changed = false;
- jQuery.event.simulate( "change", this, event, true );
- }
- });
- }
- return false;
- }
- // Delegated event; lazy-add a change handler on descendant inputs
- jQuery.event.add( this, "beforeactivate._change", function( e ) {
- var elem = e.target;
-
- if ( rformElems.test( elem.nodeName ) && !elem._change_attached ) {
- jQuery.event.add( elem, "change._change", function( event ) {
- if ( this.parentNode && !event.isSimulated && !event.isTrigger ) {
- jQuery.event.simulate( "change", this.parentNode, event, true );
- }
- });
- elem._change_attached = true;
- }
- });
- },
-
- handle: function( event ) {
- var elem = event.target;
-
- // Swallow native change events from checkbox/radio, we already triggered them above
- if ( this !== elem || event.isSimulated || event.isTrigger || (elem.type !== "radio" && elem.type !== "checkbox") ) {
- return event.handleObj.handler.apply( this, arguments );
- }
- },
-
- teardown: function() {
- jQuery.event.remove( this, "._change" );
-
- return rformElems.test( this.nodeName );
- }
- };
-}
-
-// Create "bubbling" focus and blur events
-if ( !jQuery.support.focusinBubbles ) {
- jQuery.each({ focus: "focusin", blur: "focusout" }, function( orig, fix ) {
-
- // Attach a single capturing handler while someone wants focusin/focusout
- var attaches = 0,
- handler = function( event ) {
- jQuery.event.simulate( fix, event.target, jQuery.event.fix( event ), true );
- };
-
- jQuery.event.special[ fix ] = {
- setup: function() {
- if ( attaches++ === 0 ) {
- document.addEventListener( orig, handler, true );
- }
- },
- teardown: function() {
- if ( --attaches === 0 ) {
- document.removeEventListener( orig, handler, true );
- }
- }
- };
- });
-}
-
-jQuery.fn.extend({
-
- on: function( types, selector, data, fn, /*INTERNAL*/ one ) {
- var origFn, type;
-
- // Types can be a map of types/handlers
- if ( typeof types === "object" ) {
- // ( types-Object, selector, data )
- if ( typeof selector !== "string" ) {
- // ( types-Object, data )
- data = selector;
- selector = undefined;
- }
- for ( type in types ) {
- this.on( type, selector, data, types[ type ], one );
- }
- return this;
- }
-
- if ( data == null && fn == null ) {
- // ( types, fn )
- fn = selector;
- data = selector = undefined;
- } else if ( fn == null ) {
- if ( typeof selector === "string" ) {
- // ( types, selector, fn )
- fn = data;
- data = undefined;
- } else {
- // ( types, data, fn )
- fn = data;
- data = selector;
- selector = undefined;
- }
- }
- if ( fn === false ) {
- fn = returnFalse;
- } else if ( !fn ) {
- return this;
- }
-
- if ( one === 1 ) {
- origFn = fn;
- fn = function( event ) {
- // Can use an empty set, since event contains the info
- jQuery().off( event );
- return origFn.apply( this, arguments );
- };
- // Use same guid so caller can remove using origFn
- fn.guid = origFn.guid || ( origFn.guid = jQuery.guid++ );
- }
- return this.each( function() {
- jQuery.event.add( this, types, fn, data, selector );
- });
- },
- one: function( types, selector, data, fn ) {
- return this.on.call( this, types, selector, data, fn, 1 );
- },
- off: function( types, selector, fn ) {
- if ( types && types.preventDefault && types.handleObj ) {
- // ( event ) dispatched jQuery.Event
- var handleObj = types.handleObj;
- jQuery( types.delegateTarget ).off(
- handleObj.namespace? handleObj.type + "." + handleObj.namespace : handleObj.type,
- handleObj.selector,
- handleObj.handler
- );
- return this;
- }
- if ( typeof types === "object" ) {
- // ( types-object [, selector] )
- for ( var type in types ) {
- this.off( type, selector, types[ type ] );
- }
- return this;
- }
- if ( selector === false || typeof selector === "function" ) {
- // ( types [, fn] )
- fn = selector;
- selector = undefined;
- }
- if ( fn === false ) {
- fn = returnFalse;
- }
- return this.each(function() {
- jQuery.event.remove( this, types, fn, selector );
- });
- },
-
- bind: function( types, data, fn ) {
- return this.on( types, null, data, fn );
- },
- unbind: function( types, fn ) {
- return this.off( types, null, fn );
- },
-
- live: function( types, data, fn ) {
- jQuery( this.context ).on( types, this.selector, data, fn );
- return this;
- },
- die: function( types, fn ) {
- jQuery( this.context ).off( types, this.selector || "**", fn );
- return this;
- },
-
- delegate: function( selector, types, data, fn ) {
- return this.on( types, selector, data, fn );
- },
- undelegate: function( selector, types, fn ) {
- // ( namespace ) or ( selector, types [, fn] )
- return arguments.length == 1? this.off( selector, "**" ) : this.off( types, selector, fn );
- },
-
- trigger: function( type, data ) {
- return this.each(function() {
- jQuery.event.trigger( type, data, this );
- });
- },
- triggerHandler: function( type, data ) {
- if ( this[0] ) {
- return jQuery.event.trigger( type, data, this[0], true );
- }
- },
-
- toggle: function( fn ) {
- // Save reference to arguments for access in closure
- var args = arguments,
- guid = fn.guid || jQuery.guid++,
- i = 0,
- toggler = function( event ) {
- // Figure out which function to execute
- var lastToggle = ( jQuery._data( this, "lastToggle" + fn.guid ) || 0 ) % i;
- jQuery._data( this, "lastToggle" + fn.guid, lastToggle + 1 );
-
- // Make sure that clicks stop
- event.preventDefault();
-
- // and execute the function
- return args[ lastToggle ].apply( this, arguments ) || false;
- };
-
- // link all the functions, so any of them can unbind this click handler
- toggler.guid = guid;
- while ( i < args.length ) {
- args[ i++ ].guid = guid;
- }
-
- return this.click( toggler );
- },
-
- hover: function( fnOver, fnOut ) {
- return this.mouseenter( fnOver ).mouseleave( fnOut || fnOver );
- }
-});
-
-jQuery.each( ("blur focus focusin focusout load resize scroll unload click dblclick " +
- "mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave " +
- "change select submit keydown keypress keyup error contextmenu").split(" "), function( i, name ) {
-
- // Handle event binding
- jQuery.fn[ name ] = function( data, fn ) {
- if ( fn == null ) {
- fn = data;
- data = null;
- }
-
- return arguments.length > 0 ?
- this.on( name, null, data, fn ) :
- this.trigger( name );
- };
-
- if ( jQuery.attrFn ) {
- jQuery.attrFn[ name ] = true;
- }
-
- if ( rkeyEvent.test( name ) ) {
- jQuery.event.fixHooks[ name ] = jQuery.event.keyHooks;
- }
-
- if ( rmouseEvent.test( name ) ) {
- jQuery.event.fixHooks[ name ] = jQuery.event.mouseHooks;
- }
-});
-
-
-
-/*!
- * Sizzle CSS Selector Engine
- * Copyright 2011, The Dojo Foundation
- * Released under the MIT, BSD, and GPL Licenses.
- * More information: http://sizzlejs.com/
- */
-(function(){
-
-var chunker = /((?:\((?:\([^()]+\)|[^()]+)+\)|\[(?:\[[^\[\]]*\]|['"][^'"]*['"]|[^\[\]'"]+)+\]|\\.|[^ >+~,(\[\\]+)+|[>+~])(\s*,\s*)?((?:.|\r|\n)*)/g,
- expando = "sizcache" + (Math.random() + '').replace('.', ''),
- done = 0,
- toString = Object.prototype.toString,
- hasDuplicate = false,
- baseHasDuplicate = true,
- rBackslash = /\\/g,
- rReturn = /\r\n/g,
- rNonWord = /\W/;
-
-// Here we check if the JavaScript engine is using some sort of
-// optimization where it does not always call our comparision
-// function. If that is the case, discard the hasDuplicate value.
-// Thus far that includes Google Chrome.
-[0, 0].sort(function() {
- baseHasDuplicate = false;
- return 0;
-});
-
-var Sizzle = function( selector, context, results, seed ) {
- results = results || [];
- context = context || document;
-
- var origContext = context;
-
- if ( context.nodeType !== 1 && context.nodeType !== 9 ) {
- return [];
- }
-
- if ( !selector || typeof selector !== "string" ) {
- return results;
- }
-
- var m, set, checkSet, extra, ret, cur, pop, i,
- prune = true,
- contextXML = Sizzle.isXML( context ),
- parts = [],
- soFar = selector;
-
- // Reset the position of the chunker regexp (start from head)
- do {
- chunker.exec( "" );
- m = chunker.exec( soFar );
-
- if ( m ) {
- soFar = m[3];
-
- parts.push( m[1] );
-
- if ( m[2] ) {
- extra = m[3];
- break;
- }
- }
- } while ( m );
-
- if ( parts.length > 1 && origPOS.exec( selector ) ) {
-
- if ( parts.length === 2 && Expr.relative[ parts[0] ] ) {
- set = posProcess( parts[0] + parts[1], context, seed );
-
- } else {
- set = Expr.relative[ parts[0] ] ?
- [ context ] :
- Sizzle( parts.shift(), context );
-
- while ( parts.length ) {
- selector = parts.shift();
-
- if ( Expr.relative[ selector ] ) {
- selector += parts.shift();
- }
-
- set = posProcess( selector, set, seed );
- }
- }
-
- } else {
- // Take a shortcut and set the context if the root selector is an ID
- // (but not if it'll be faster if the inner selector is an ID)
- if ( !seed && parts.length > 1 && context.nodeType === 9 && !contextXML &&
- Expr.match.ID.test(parts[0]) && !Expr.match.ID.test(parts[parts.length - 1]) ) {
-
- ret = Sizzle.find( parts.shift(), context, contextXML );
- context = ret.expr ?
- Sizzle.filter( ret.expr, ret.set )[0] :
- ret.set[0];
- }
-
- if ( context ) {
- ret = seed ?
- { expr: parts.pop(), set: makeArray(seed) } :
- Sizzle.find( parts.pop(), parts.length === 1 && (parts[0] === "~" || parts[0] === "+") && context.parentNode ? context.parentNode : context, contextXML );
-
- set = ret.expr ?
- Sizzle.filter( ret.expr, ret.set ) :
- ret.set;
-
- if ( parts.length > 0 ) {
- checkSet = makeArray( set );
-
- } else {
- prune = false;
- }
-
- while ( parts.length ) {
- cur = parts.pop();
- pop = cur;
-
- if ( !Expr.relative[ cur ] ) {
- cur = "";
- } else {
- pop = parts.pop();
- }
-
- if ( pop == null ) {
- pop = context;
- }
-
- Expr.relative[ cur ]( checkSet, pop, contextXML );
- }
-
- } else {
- checkSet = parts = [];
- }
- }
-
- if ( !checkSet ) {
- checkSet = set;
- }
-
- if ( !checkSet ) {
- Sizzle.error( cur || selector );
- }
-
- if ( toString.call(checkSet) === "[object Array]" ) {
- if ( !prune ) {
- results.push.apply( results, checkSet );
-
- } else if ( context && context.nodeType === 1 ) {
- for ( i = 0; checkSet[i] != null; i++ ) {
- if ( checkSet[i] && (checkSet[i] === true || checkSet[i].nodeType === 1 && Sizzle.contains(context, checkSet[i])) ) {
- results.push( set[i] );
- }
- }
-
- } else {
- for ( i = 0; checkSet[i] != null; i++ ) {
- if ( checkSet[i] && checkSet[i].nodeType === 1 ) {
- results.push( set[i] );
- }
- }
- }
-
- } else {
- makeArray( checkSet, results );
- }
-
- if ( extra ) {
- Sizzle( extra, origContext, results, seed );
- Sizzle.uniqueSort( results );
- }
-
- return results;
-};
-
-Sizzle.uniqueSort = function( results ) {
- if ( sortOrder ) {
- hasDuplicate = baseHasDuplicate;
- results.sort( sortOrder );
-
- if ( hasDuplicate ) {
- for ( var i = 1; i < results.length; i++ ) {
- if ( results[i] === results[ i - 1 ] ) {
- results.splice( i--, 1 );
- }
- }
- }
- }
-
- return results;
-};
-
-Sizzle.matches = function( expr, set ) {
- return Sizzle( expr, null, null, set );
-};
-
-Sizzle.matchesSelector = function( node, expr ) {
- return Sizzle( expr, null, null, [node] ).length > 0;
-};
-
-Sizzle.find = function( expr, context, isXML ) {
- var set, i, len, match, type, left;
-
- if ( !expr ) {
- return [];
- }
-
- for ( i = 0, len = Expr.order.length; i < len; i++ ) {
- type = Expr.order[i];
-
- if ( (match = Expr.leftMatch[ type ].exec( expr )) ) {
- left = match[1];
- match.splice( 1, 1 );
-
- if ( left.substr( left.length - 1 ) !== "\\" ) {
- match[1] = (match[1] || "").replace( rBackslash, "" );
- set = Expr.find[ type ]( match, context, isXML );
-
- if ( set != null ) {
- expr = expr.replace( Expr.match[ type ], "" );
- break;
- }
- }
- }
- }
-
- if ( !set ) {
- set = typeof context.getElementsByTagName !== "undefined" ?
- context.getElementsByTagName( "*" ) :
- [];
- }
-
- return { set: set, expr: expr };
-};
-
-Sizzle.filter = function( expr, set, inplace, not ) {
- var match, anyFound,
- type, found, item, filter, left,
- i, pass,
- old = expr,
- result = [],
- curLoop = set,
- isXMLFilter = set && set[0] && Sizzle.isXML( set[0] );
-
- while ( expr && set.length ) {
- for ( type in Expr.filter ) {
- if ( (match = Expr.leftMatch[ type ].exec( expr )) != null && match[2] ) {
- filter = Expr.filter[ type ];
- left = match[1];
-
- anyFound = false;
-
- match.splice(1,1);
-
- if ( left.substr( left.length - 1 ) === "\\" ) {
- continue;
- }
-
- if ( curLoop === result ) {
- result = [];
- }
-
- if ( Expr.preFilter[ type ] ) {
- match = Expr.preFilter[ type ]( match, curLoop, inplace, result, not, isXMLFilter );
-
- if ( !match ) {
- anyFound = found = true;
-
- } else if ( match === true ) {
- continue;
- }
- }
-
- if ( match ) {
- for ( i = 0; (item = curLoop[i]) != null; i++ ) {
- if ( item ) {
- found = filter( item, match, i, curLoop );
- pass = not ^ found;
-
- if ( inplace && found != null ) {
- if ( pass ) {
- anyFound = true;
-
- } else {
- curLoop[i] = false;
- }
-
- } else if ( pass ) {
- result.push( item );
- anyFound = true;
- }
- }
- }
- }
-
- if ( found !== undefined ) {
- if ( !inplace ) {
- curLoop = result;
- }
-
- expr = expr.replace( Expr.match[ type ], "" );
-
- if ( !anyFound ) {
- return [];
- }
-
- break;
- }
- }
- }
-
- // Improper expression
- if ( expr === old ) {
- if ( anyFound == null ) {
- Sizzle.error( expr );
-
- } else {
- break;
- }
- }
-
- old = expr;
- }
-
- return curLoop;
-};
-
-Sizzle.error = function( msg ) {
- throw new Error( "Syntax error, unrecognized expression: " + msg );
-};
-
-/**
- * Utility function for retreiving the text value of an array of DOM nodes
- * @param {Array|Element} elem
- */
-var getText = Sizzle.getText = function( elem ) {
- var i, node,
- nodeType = elem.nodeType,
- ret = "";
-
- if ( nodeType ) {
- if ( nodeType === 1 || nodeType === 9 ) {
- // Use textContent || innerText for elements
- if ( typeof elem.textContent === 'string' ) {
- return elem.textContent;
- } else if ( typeof elem.innerText === 'string' ) {
- // Replace IE's carriage returns
- return elem.innerText.replace( rReturn, '' );
- } else {
- // Traverse it's children
- for ( elem = elem.firstChild; elem; elem = elem.nextSibling) {
- ret += getText( elem );
- }
- }
- } else if ( nodeType === 3 || nodeType === 4 ) {
- return elem.nodeValue;
- }
- } else {
-
- // If no nodeType, this is expected to be an array
- for ( i = 0; (node = elem[i]); i++ ) {
- // Do not traverse comment nodes
- if ( node.nodeType !== 8 ) {
- ret += getText( node );
- }
- }
- }
- return ret;
-};
-
-var Expr = Sizzle.selectors = {
- order: [ "ID", "NAME", "TAG" ],
-
- match: {
- ID: /#((?:[\w\u00c0-\uFFFF\-]|\\.)+)/,
- CLASS: /\.((?:[\w\u00c0-\uFFFF\-]|\\.)+)/,
- NAME: /\[name=['"]*((?:[\w\u00c0-\uFFFF\-]|\\.)+)['"]*\]/,
- ATTR: /\[\s*((?:[\w\u00c0-\uFFFF\-]|\\.)+)\s*(?:(\S?=)\s*(?:(['"])(.*?)\3|(#?(?:[\w\u00c0-\uFFFF\-]|\\.)*)|)|)\s*\]/,
- TAG: /^((?:[\w\u00c0-\uFFFF\*\-]|\\.)+)/,
- CHILD: /:(only|nth|last|first)-child(?:\(\s*(even|odd|(?:[+\-]?\d+|(?:[+\-]?\d*)?n\s*(?:[+\-]\s*\d+)?))\s*\))?/,
- POS: /:(nth|eq|gt|lt|first|last|even|odd)(?:\((\d*)\))?(?=[^\-]|$)/,
- PSEUDO: /:((?:[\w\u00c0-\uFFFF\-]|\\.)+)(?:\((['"]?)((?:\([^\)]+\)|[^\(\)]*)+)\2\))?/
- },
-
- leftMatch: {},
-
- attrMap: {
- "class": "className",
- "for": "htmlFor"
- },
-
- attrHandle: {
- href: function( elem ) {
- return elem.getAttribute( "href" );
- },
- type: function( elem ) {
- return elem.getAttribute( "type" );
- }
- },
-
- relative: {
- "+": function(checkSet, part){
- var isPartStr = typeof part === "string",
- isTag = isPartStr && !rNonWord.test( part ),
- isPartStrNotTag = isPartStr && !isTag;
-
- if ( isTag ) {
- part = part.toLowerCase();
- }
-
- for ( var i = 0, l = checkSet.length, elem; i < l; i++ ) {
- if ( (elem = checkSet[i]) ) {
- while ( (elem = elem.previousSibling) && elem.nodeType !== 1 ) {}
-
- checkSet[i] = isPartStrNotTag || elem && elem.nodeName.toLowerCase() === part ?
- elem || false :
- elem === part;
- }
- }
-
- if ( isPartStrNotTag ) {
- Sizzle.filter( part, checkSet, true );
- }
- },
-
- ">": function( checkSet, part ) {
- var elem,
- isPartStr = typeof part === "string",
- i = 0,
- l = checkSet.length;
-
- if ( isPartStr && !rNonWord.test( part ) ) {
- part = part.toLowerCase();
-
- for ( ; i < l; i++ ) {
- elem = checkSet[i];
-
- if ( elem ) {
- var parent = elem.parentNode;
- checkSet[i] = parent.nodeName.toLowerCase() === part ? parent : false;
- }
- }
-
- } else {
- for ( ; i < l; i++ ) {
- elem = checkSet[i];
-
- if ( elem ) {
- checkSet[i] = isPartStr ?
- elem.parentNode :
- elem.parentNode === part;
- }
- }
-
- if ( isPartStr ) {
- Sizzle.filter( part, checkSet, true );
- }
- }
- },
-
- "": function(checkSet, part, isXML){
- var nodeCheck,
- doneName = done++,
- checkFn = dirCheck;
-
- if ( typeof part === "string" && !rNonWord.test( part ) ) {
- part = part.toLowerCase();
- nodeCheck = part;
- checkFn = dirNodeCheck;
- }
-
- checkFn( "parentNode", part, doneName, checkSet, nodeCheck, isXML );
- },
-
- "~": function( checkSet, part, isXML ) {
- var nodeCheck,
- doneName = done++,
- checkFn = dirCheck;
-
- if ( typeof part === "string" && !rNonWord.test( part ) ) {
- part = part.toLowerCase();
- nodeCheck = part;
- checkFn = dirNodeCheck;
- }
-
- checkFn( "previousSibling", part, doneName, checkSet, nodeCheck, isXML );
- }
- },
-
- find: {
- ID: function( match, context, isXML ) {
- if ( typeof context.getElementById !== "undefined" && !isXML ) {
- var m = context.getElementById(match[1]);
- // Check parentNode to catch when Blackberry 4.6 returns
- // nodes that are no longer in the document #6963
- return m && m.parentNode ? [m] : [];
- }
- },
-
- NAME: function( match, context ) {
- if ( typeof context.getElementsByName !== "undefined" ) {
- var ret = [],
- results = context.getElementsByName( match[1] );
-
- for ( var i = 0, l = results.length; i < l; i++ ) {
- if ( results[i].getAttribute("name") === match[1] ) {
- ret.push( results[i] );
- }
- }
-
- return ret.length === 0 ? null : ret;
- }
- },
-
- TAG: function( match, context ) {
- if ( typeof context.getElementsByTagName !== "undefined" ) {
- return context.getElementsByTagName( match[1] );
- }
- }
- },
- preFilter: {
- CLASS: function( match, curLoop, inplace, result, not, isXML ) {
- match = " " + match[1].replace( rBackslash, "" ) + " ";
-
- if ( isXML ) {
- return match;
- }
-
- for ( var i = 0, elem; (elem = curLoop[i]) != null; i++ ) {
- if ( elem ) {
- if ( not ^ (elem.className && (" " + elem.className + " ").replace(/[\t\n\r]/g, " ").indexOf(match) >= 0) ) {
- if ( !inplace ) {
- result.push( elem );
- }
-
- } else if ( inplace ) {
- curLoop[i] = false;
- }
- }
- }
-
- return false;
- },
-
- ID: function( match ) {
- return match[1].replace( rBackslash, "" );
- },
-
- TAG: function( match, curLoop ) {
- return match[1].replace( rBackslash, "" ).toLowerCase();
- },
-
- CHILD: function( match ) {
- if ( match[1] === "nth" ) {
- if ( !match[2] ) {
- Sizzle.error( match[0] );
- }
-
- match[2] = match[2].replace(/^\+|\s*/g, '');
-
- // parse equations like 'even', 'odd', '5', '2n', '3n+2', '4n-1', '-n+6'
- var test = /(-?)(\d*)(?:n([+\-]?\d*))?/.exec(
- match[2] === "even" && "2n" || match[2] === "odd" && "2n+1" ||
- !/\D/.test( match[2] ) && "0n+" + match[2] || match[2]);
-
- // calculate the numbers (first)n+(last) including if they are negative
- match[2] = (test[1] + (test[2] || 1)) - 0;
- match[3] = test[3] - 0;
- }
- else if ( match[2] ) {
- Sizzle.error( match[0] );
- }
-
- // TODO: Move to normal caching system
- match[0] = done++;
-
- return match;
- },
-
- ATTR: function( match, curLoop, inplace, result, not, isXML ) {
- var name = match[1] = match[1].replace( rBackslash, "" );
-
- if ( !isXML && Expr.attrMap[name] ) {
- match[1] = Expr.attrMap[name];
- }
-
- // Handle if an un-quoted value was used
- match[4] = ( match[4] || match[5] || "" ).replace( rBackslash, "" );
-
- if ( match[2] === "~=" ) {
- match[4] = " " + match[4] + " ";
- }
-
- return match;
- },
-
- PSEUDO: function( match, curLoop, inplace, result, not ) {
- if ( match[1] === "not" ) {
- // If we're dealing with a complex expression, or a simple one
- if ( ( chunker.exec(match[3]) || "" ).length > 1 || /^\w/.test(match[3]) ) {
- match[3] = Sizzle(match[3], null, null, curLoop);
-
- } else {
- var ret = Sizzle.filter(match[3], curLoop, inplace, true ^ not);
-
- if ( !inplace ) {
- result.push.apply( result, ret );
- }
-
- return false;
- }
-
- } else if ( Expr.match.POS.test( match[0] ) || Expr.match.CHILD.test( match[0] ) ) {
- return true;
- }
-
- return match;
- },
-
- POS: function( match ) {
- match.unshift( true );
-
- return match;
- }
- },
-
- filters: {
- enabled: function( elem ) {
- return elem.disabled === false && elem.type !== "hidden";
- },
-
- disabled: function( elem ) {
- return elem.disabled === true;
- },
-
- checked: function( elem ) {
- return elem.checked === true;
- },
-
- selected: function( elem ) {
- // Accessing this property makes selected-by-default
- // options in Safari work properly
- if ( elem.parentNode ) {
- elem.parentNode.selectedIndex;
- }
-
- return elem.selected === true;
- },
-
- parent: function( elem ) {
- return !!elem.firstChild;
- },
-
- empty: function( elem ) {
- return !elem.firstChild;
- },
-
- has: function( elem, i, match ) {
- return !!Sizzle( match[3], elem ).length;
- },
-
- header: function( elem ) {
- return (/h\d/i).test( elem.nodeName );
- },
-
- text: function( elem ) {
- var attr = elem.getAttribute( "type" ), type = elem.type;
- // IE6 and 7 will map elem.type to 'text' for new HTML5 types (search, etc)
- // use getAttribute instead to test this case
- return elem.nodeName.toLowerCase() === "input" && "text" === type && ( attr === type || attr === null );
- },
-
- radio: function( elem ) {
- return elem.nodeName.toLowerCase() === "input" && "radio" === elem.type;
- },
-
- checkbox: function( elem ) {
- return elem.nodeName.toLowerCase() === "input" && "checkbox" === elem.type;
- },
-
- file: function( elem ) {
- return elem.nodeName.toLowerCase() === "input" && "file" === elem.type;
- },
-
- password: function( elem ) {
- return elem.nodeName.toLowerCase() === "input" && "password" === elem.type;
- },
-
- submit: function( elem ) {
- var name = elem.nodeName.toLowerCase();
- return (name === "input" || name === "button") && "submit" === elem.type;
- },
-
- image: function( elem ) {
- return elem.nodeName.toLowerCase() === "input" && "image" === elem.type;
- },
-
- reset: function( elem ) {
- var name = elem.nodeName.toLowerCase();
- return (name === "input" || name === "button") && "reset" === elem.type;
- },
-
- button: function( elem ) {
- var name = elem.nodeName.toLowerCase();
- return name === "input" && "button" === elem.type || name === "button";
- },
-
- input: function( elem ) {
- return (/input|select|textarea|button/i).test( elem.nodeName );
- },
-
- focus: function( elem ) {
- return elem === elem.ownerDocument.activeElement;
- }
- },
- setFilters: {
- first: function( elem, i ) {
- return i === 0;
- },
-
- last: function( elem, i, match, array ) {
- return i === array.length - 1;
- },
-
- even: function( elem, i ) {
- return i % 2 === 0;
- },
-
- odd: function( elem, i ) {
- return i % 2 === 1;
- },
-
- lt: function( elem, i, match ) {
- return i < match[3] - 0;
- },
-
- gt: function( elem, i, match ) {
- return i > match[3] - 0;
- },
-
- nth: function( elem, i, match ) {
- return match[3] - 0 === i;
- },
-
- eq: function( elem, i, match ) {
- return match[3] - 0 === i;
- }
- },
- filter: {
- PSEUDO: function( elem, match, i, array ) {
- var name = match[1],
- filter = Expr.filters[ name ];
-
- if ( filter ) {
- return filter( elem, i, match, array );
-
- } else if ( name === "contains" ) {
- return (elem.textContent || elem.innerText || getText([ elem ]) || "").indexOf(match[3]) >= 0;
-
- } else if ( name === "not" ) {
- var not = match[3];
-
- for ( var j = 0, l = not.length; j < l; j++ ) {
- if ( not[j] === elem ) {
- return false;
- }
- }
-
- return true;
-
- } else {
- Sizzle.error( name );
- }
- },
-
- CHILD: function( elem, match ) {
- var first, last,
- doneName, parent, cache,
- count, diff,
- type = match[1],
- node = elem;
-
- switch ( type ) {
- case "only":
- case "first":
- while ( (node = node.previousSibling) ) {
- if ( node.nodeType === 1 ) {
- return false;
- }
- }
-
- if ( type === "first" ) {
- return true;
- }
-
- node = elem;
-
- case "last":
- while ( (node = node.nextSibling) ) {
- if ( node.nodeType === 1 ) {
- return false;
- }
- }
-
- return true;
-
- case "nth":
- first = match[2];
- last = match[3];
-
- if ( first === 1 && last === 0 ) {
- return true;
- }
-
- doneName = match[0];
- parent = elem.parentNode;
-
- if ( parent && (parent[ expando ] !== doneName || !elem.nodeIndex) ) {
- count = 0;
-
- for ( node = parent.firstChild; node; node = node.nextSibling ) {
- if ( node.nodeType === 1 ) {
- node.nodeIndex = ++count;
- }
- }
-
- parent[ expando ] = doneName;
- }
-
- diff = elem.nodeIndex - last;
-
- if ( first === 0 ) {
- return diff === 0;
-
- } else {
- return ( diff % first === 0 && diff / first >= 0 );
- }
- }
- },
-
- ID: function( elem, match ) {
- return elem.nodeType === 1 && elem.getAttribute("id") === match;
- },
-
- TAG: function( elem, match ) {
- return (match === "*" && elem.nodeType === 1) || !!elem.nodeName && elem.nodeName.toLowerCase() === match;
- },
-
- CLASS: function( elem, match ) {
- return (" " + (elem.className || elem.getAttribute("class")) + " ")
- .indexOf( match ) > -1;
- },
-
- ATTR: function( elem, match ) {
- var name = match[1],
- result = Sizzle.attr ?
- Sizzle.attr( elem, name ) :
- Expr.attrHandle[ name ] ?
- Expr.attrHandle[ name ]( elem ) :
- elem[ name ] != null ?
- elem[ name ] :
- elem.getAttribute( name ),
- value = result + "",
- type = match[2],
- check = match[4];
-
- return result == null ?
- type === "!=" :
- !type && Sizzle.attr ?
- result != null :
- type === "=" ?
- value === check :
- type === "*=" ?
- value.indexOf(check) >= 0 :
- type === "~=" ?
- (" " + value + " ").indexOf(check) >= 0 :
- !check ?
- value && result !== false :
- type === "!=" ?
- value !== check :
- type === "^=" ?
- value.indexOf(check) === 0 :
- type === "$=" ?
- value.substr(value.length - check.length) === check :
- type === "|=" ?
- value === check || value.substr(0, check.length + 1) === check + "-" :
- false;
- },
-
- POS: function( elem, match, i, array ) {
- var name = match[2],
- filter = Expr.setFilters[ name ];
-
- if ( filter ) {
- return filter( elem, i, match, array );
- }
- }
- }
-};
-
-var origPOS = Expr.match.POS,
- fescape = function(all, num){
- return "\\" + (num - 0 + 1);
- };
-
-for ( var type in Expr.match ) {
- Expr.match[ type ] = new RegExp( Expr.match[ type ].source + (/(?![^\[]*\])(?![^\(]*\))/.source) );
- Expr.leftMatch[ type ] = new RegExp( /(^(?:.|\r|\n)*?)/.source + Expr.match[ type ].source.replace(/\\(\d+)/g, fescape) );
-}
-
-var makeArray = function( array, results ) {
- array = Array.prototype.slice.call( array, 0 );
-
- if ( results ) {
- results.push.apply( results, array );
- return results;
- }
-
- return array;
-};
-
-// Perform a simple check to determine if the browser is capable of
-// converting a NodeList to an array using builtin methods.
-// Also verifies that the returned array holds DOM nodes
-// (which is not the case in the Blackberry browser)
-try {
- Array.prototype.slice.call( document.documentElement.childNodes, 0 )[0].nodeType;
-
-// Provide a fallback method if it does not work
-} catch( e ) {
- makeArray = function( array, results ) {
- var i = 0,
- ret = results || [];
-
- if ( toString.call(array) === "[object Array]" ) {
- Array.prototype.push.apply( ret, array );
-
- } else {
- if ( typeof array.length === "number" ) {
- for ( var l = array.length; i < l; i++ ) {
- ret.push( array[i] );
- }
-
- } else {
- for ( ; array[i]; i++ ) {
- ret.push( array[i] );
- }
- }
- }
-
- return ret;
- };
-}
-
-var sortOrder, siblingCheck;
-
-if ( document.documentElement.compareDocumentPosition ) {
- sortOrder = function( a, b ) {
- if ( a === b ) {
- hasDuplicate = true;
- return 0;
- }
-
- if ( !a.compareDocumentPosition || !b.compareDocumentPosition ) {
- return a.compareDocumentPosition ? -1 : 1;
- }
-
- return a.compareDocumentPosition(b) & 4 ? -1 : 1;
- };
-
-} else {
- sortOrder = function( a, b ) {
- // The nodes are identical, we can exit early
- if ( a === b ) {
- hasDuplicate = true;
- return 0;
-
- // Fallback to using sourceIndex (in IE) if it's available on both nodes
- } else if ( a.sourceIndex && b.sourceIndex ) {
- return a.sourceIndex - b.sourceIndex;
- }
-
- var al, bl,
- ap = [],
- bp = [],
- aup = a.parentNode,
- bup = b.parentNode,
- cur = aup;
-
- // If the nodes are siblings (or identical) we can do a quick check
- if ( aup === bup ) {
- return siblingCheck( a, b );
-
- // If no parents were found then the nodes are disconnected
- } else if ( !aup ) {
- return -1;
-
- } else if ( !bup ) {
- return 1;
- }
-
- // Otherwise they're somewhere else in the tree so we need
- // to build up a full list of the parentNodes for comparison
- while ( cur ) {
- ap.unshift( cur );
- cur = cur.parentNode;
- }
-
- cur = bup;
-
- while ( cur ) {
- bp.unshift( cur );
- cur = cur.parentNode;
- }
-
- al = ap.length;
- bl = bp.length;
-
- // Start walking down the tree looking for a discrepancy
- for ( var i = 0; i < al && i < bl; i++ ) {
- if ( ap[i] !== bp[i] ) {
- return siblingCheck( ap[i], bp[i] );
- }
- }
-
- // We ended someplace up the tree so do a sibling check
- return i === al ?
- siblingCheck( a, bp[i], -1 ) :
- siblingCheck( ap[i], b, 1 );
- };
-
- siblingCheck = function( a, b, ret ) {
- if ( a === b ) {
- return ret;
- }
-
- var cur = a.nextSibling;
-
- while ( cur ) {
- if ( cur === b ) {
- return -1;
- }
-
- cur = cur.nextSibling;
- }
-
- return 1;
- };
-}
-
-// Check to see if the browser returns elements by name when
-// querying by getElementById (and provide a workaround)
-(function(){
- // We're going to inject a fake input element with a specified name
- var form = document.createElement("div"),
- id = "script" + (new Date()).getTime(),
- root = document.documentElement;
-
- form.innerHTML = "<a name='" + id + "'/>";
-
- // Inject it into the root element, check its status, and remove it quickly
- root.insertBefore( form, root.firstChild );
-
- // The workaround has to do additional checks after a getElementById
- // Which slows things down for other browsers (hence the branching)
- if ( document.getElementById( id ) ) {
- Expr.find.ID = function( match, context, isXML ) {
- if ( typeof context.getElementById !== "undefined" && !isXML ) {
- var m = context.getElementById(match[1]);
-
- return m ?
- m.id === match[1] || typeof m.getAttributeNode !== "undefined" && m.getAttributeNode("id").nodeValue === match[1] ?
- [m] :
- undefined :
- [];
- }
- };
-
- Expr.filter.ID = function( elem, match ) {
- var node = typeof elem.getAttributeNode !== "undefined" && elem.getAttributeNode("id");
-
- return elem.nodeType === 1 && node && node.nodeValue === match;
- };
- }
-
- root.removeChild( form );
-
- // release memory in IE
- root = form = null;
-})();
-
-(function(){
- // Check to see if the browser returns only elements
- // when doing getElementsByTagName("*")
-
- // Create a fake element
- var div = document.createElement("div");
- div.appendChild( document.createComment("") );
-
- // Make sure no comments are found
- if ( div.getElementsByTagName("*").length > 0 ) {
- Expr.find.TAG = function( match, context ) {
- var results = context.getElementsByTagName( match[1] );
-
- // Filter out possible comments
- if ( match[1] === "*" ) {
- var tmp = [];
-
- for ( var i = 0; results[i]; i++ ) {
- if ( results[i].nodeType === 1 ) {
- tmp.push( results[i] );
- }
- }
-
- results = tmp;
- }
-
- return results;
- };
- }
-
- // Check to see if an attribute returns normalized href attributes
- div.innerHTML = "<a href='#'></a>";
-
- if ( div.firstChild && typeof div.firstChild.getAttribute !== "undefined" &&
- div.firstChild.getAttribute("href") !== "#" ) {
-
- Expr.attrHandle.href = function( elem ) {
- return elem.getAttribute( "href", 2 );
- };
- }
-
- // release memory in IE
- div = null;
-})();
-
-if ( document.querySelectorAll ) {
- (function(){
- var oldSizzle = Sizzle,
- div = document.createElement("div"),
- id = "__sizzle__";
-
- div.innerHTML = "<p class='TEST'></p>";
-
- // Safari can't handle uppercase or unicode characters when
- // in quirks mode.
- if ( div.querySelectorAll && div.querySelectorAll(".TEST").length === 0 ) {
- return;
- }
-
- Sizzle = function( query, context, extra, seed ) {
- context = context || document;
-
- // Only use querySelectorAll on non-XML documents
- // (ID selectors don't work in non-HTML documents)
- if ( !seed && !Sizzle.isXML(context) ) {
- // See if we find a selector to speed up
- var match = /^(\w+$)|^\.([\w\-]+$)|^#([\w\-]+$)/.exec( query );
-
- if ( match && (context.nodeType === 1 || context.nodeType === 9) ) {
- // Speed-up: Sizzle("TAG")
- if ( match[1] ) {
- return makeArray( context.getElementsByTagName( query ), extra );
-
- // Speed-up: Sizzle(".CLASS")
- } else if ( match[2] && Expr.find.CLASS && context.getElementsByClassName ) {
- return makeArray( context.getElementsByClassName( match[2] ), extra );
- }
- }
-
- if ( context.nodeType === 9 ) {
- // Speed-up: Sizzle("body")
- // The body element only exists once, optimize finding it
- if ( query === "body" && context.body ) {
- return makeArray( [ context.body ], extra );
-
- // Speed-up: Sizzle("#ID")
- } else if ( match && match[3] ) {
- var elem = context.getElementById( match[3] );
-
- // Check parentNode to catch when Blackberry 4.6 returns
- // nodes that are no longer in the document #6963
- if ( elem && elem.parentNode ) {
- // Handle the case where IE and Opera return items
- // by name instead of ID
- if ( elem.id === match[3] ) {
- return makeArray( [ elem ], extra );
- }
-
- } else {
- return makeArray( [], extra );
- }
- }
-
- try {
- return makeArray( context.querySelectorAll(query), extra );
- } catch(qsaError) {}
-
- // qSA works strangely on Element-rooted queries
- // We can work around this by specifying an extra ID on the root
- // and working up from there (Thanks to Andrew Dupont for the technique)
- // IE 8 doesn't work on object elements
- } else if ( context.nodeType === 1 && context.nodeName.toLowerCase() !== "object" ) {
- var oldContext = context,
- old = context.getAttribute( "id" ),
- nid = old || id,
- hasParent = context.parentNode,
- relativeHierarchySelector = /^\s*[+~]/.test( query );
-
- if ( !old ) {
- context.setAttribute( "id", nid );
- } else {
- nid = nid.replace( /'/g, "\\$&" );
- }
- if ( relativeHierarchySelector && hasParent ) {
- context = context.parentNode;
- }
-
- try {
- if ( !relativeHierarchySelector || hasParent ) {
- return makeArray( context.querySelectorAll( "[id='" + nid + "'] " + query ), extra );
- }
-
- } catch(pseudoError) {
- } finally {
- if ( !old ) {
- oldContext.removeAttribute( "id" );
- }
- }
- }
- }
-
- return oldSizzle(query, context, extra, seed);
- };
-
- for ( var prop in oldSizzle ) {
- Sizzle[ prop ] = oldSizzle[ prop ];
- }
-
- // release memory in IE
- div = null;
- })();
-}
-
-(function(){
- var html = document.documentElement,
- matches = html.matchesSelector || html.mozMatchesSelector || html.webkitMatchesSelector || html.msMatchesSelector;
-
- if ( matches ) {
- // Check to see if it's possible to do matchesSelector
- // on a disconnected node (IE 9 fails this)
- var disconnectedMatch = !matches.call( document.createElement( "div" ), "div" ),
- pseudoWorks = false;
-
- try {
- // This should fail with an exception
- // Gecko does not error, returns false instead
- matches.call( document.documentElement, "[test!='']:sizzle" );
-
- } catch( pseudoError ) {
- pseudoWorks = true;
- }
-
- Sizzle.matchesSelector = function( node, expr ) {
- // Make sure that attribute selectors are quoted
- expr = expr.replace(/\=\s*([^'"\]]*)\s*\]/g, "='$1']");
-
- if ( !Sizzle.isXML( node ) ) {
- try {
- if ( pseudoWorks || !Expr.match.PSEUDO.test( expr ) && !/!=/.test( expr ) ) {
- var ret = matches.call( node, expr );
-
- // IE 9's matchesSelector returns false on disconnected nodes
- if ( ret || !disconnectedMatch ||
- // As well, disconnected nodes are said to be in a document
- // fragment in IE 9, so check for that
- node.document && node.document.nodeType !== 11 ) {
- return ret;
- }
- }
- } catch(e) {}
- }
-
- return Sizzle(expr, null, null, [node]).length > 0;
- };
- }
-})();
-
-(function(){
- var div = document.createElement("div");
-
- div.innerHTML = "<div class='test e'></div><div class='test'></div>";
-
- // Opera can't find a second classname (in 9.6)
- // Also, make sure that getElementsByClassName actually exists
- if ( !div.getElementsByClassName || div.getElementsByClassName("e").length === 0 ) {
- return;
- }
-
- // Safari caches class attributes, doesn't catch changes (in 3.2)
- div.lastChild.className = "e";
-
- if ( div.getElementsByClassName("e").length === 1 ) {
- return;
- }
-
- Expr.order.splice(1, 0, "CLASS");
- Expr.find.CLASS = function( match, context, isXML ) {
- if ( typeof context.getElementsByClassName !== "undefined" && !isXML ) {
- return context.getElementsByClassName(match[1]);
- }
- };
-
- // release memory in IE
- div = null;
-})();
-
-function dirNodeCheck( dir, cur, doneName, checkSet, nodeCheck, isXML ) {
- for ( var i = 0, l = checkSet.length; i < l; i++ ) {
- var elem = checkSet[i];
-
- if ( elem ) {
- var match = false;
-
- elem = elem[dir];
-
- while ( elem ) {
- if ( elem[ expando ] === doneName ) {
- match = checkSet[elem.sizset];
- break;
- }
-
- if ( elem.nodeType === 1 && !isXML ){
- elem[ expando ] = doneName;
- elem.sizset = i;
- }
-
- if ( elem.nodeName.toLowerCase() === cur ) {
- match = elem;
- break;
- }
-
- elem = elem[dir];
- }
-
- checkSet[i] = match;
- }
- }
-}
-
-function dirCheck( dir, cur, doneName, checkSet, nodeCheck, isXML ) {
- for ( var i = 0, l = checkSet.length; i < l; i++ ) {
- var elem = checkSet[i];
-
- if ( elem ) {
- var match = false;
-
- elem = elem[dir];
-
- while ( elem ) {
- if ( elem[ expando ] === doneName ) {
- match = checkSet[elem.sizset];
- break;
- }
-
- if ( elem.nodeType === 1 ) {
- if ( !isXML ) {
- elem[ expando ] = doneName;
- elem.sizset = i;
- }
-
- if ( typeof cur !== "string" ) {
- if ( elem === cur ) {
- match = true;
- break;
- }
-
- } else if ( Sizzle.filter( cur, [elem] ).length > 0 ) {
- match = elem;
- break;
- }
- }
-
- elem = elem[dir];
- }
-
- checkSet[i] = match;
- }
- }
-}
-
-if ( document.documentElement.contains ) {
- Sizzle.contains = function( a, b ) {
- return a !== b && (a.contains ? a.contains(b) : true);
- };
-
-} else if ( document.documentElement.compareDocumentPosition ) {
- Sizzle.contains = function( a, b ) {
- return !!(a.compareDocumentPosition(b) & 16);
- };
-
-} else {
- Sizzle.contains = function() {
- return false;
- };
-}
-
-Sizzle.isXML = function( elem ) {
- // documentElement is verified for cases where it doesn't yet exist
- // (such as loading iframes in IE - #4833)
- var documentElement = (elem ? elem.ownerDocument || elem : 0).documentElement;
-
- return documentElement ? documentElement.nodeName !== "HTML" : false;
-};
-
-var posProcess = function( selector, context, seed ) {
- var match,
- tmpSet = [],
- later = "",
- root = context.nodeType ? [context] : context;
-
- // Position selectors must be done after the filter
- // And so must :not(positional) so we move all PSEUDOs to the end
- while ( (match = Expr.match.PSEUDO.exec( selector )) ) {
- later += match[0];
- selector = selector.replace( Expr.match.PSEUDO, "" );
- }
-
- selector = Expr.relative[selector] ? selector + "*" : selector;
-
- for ( var i = 0, l = root.length; i < l; i++ ) {
- Sizzle( selector, root[i], tmpSet, seed );
- }
-
- return Sizzle.filter( later, tmpSet );
-};
-
-// EXPOSE
-// Override sizzle attribute retrieval
-Sizzle.attr = jQuery.attr;
-Sizzle.selectors.attrMap = {};
-jQuery.find = Sizzle;
-jQuery.expr = Sizzle.selectors;
-jQuery.expr[":"] = jQuery.expr.filters;
-jQuery.unique = Sizzle.uniqueSort;
-jQuery.text = Sizzle.getText;
-jQuery.isXMLDoc = Sizzle.isXML;
-jQuery.contains = Sizzle.contains;
-
-
-})();
-
-
-var runtil = /Until$/,
- rparentsprev = /^(?:parents|prevUntil|prevAll)/,
- // Note: This RegExp should be improved, or likely pulled from Sizzle
- rmultiselector = /,/,
- isSimple = /^.[^:#\[\.,]*$/,
- slice = Array.prototype.slice,
- POS = jQuery.expr.match.POS,
- // methods guaranteed to produce a unique set when starting from a unique set
- guaranteedUnique = {
- children: true,
- contents: true,
- next: true,
- prev: true
- };
-
-jQuery.fn.extend({
- find: function( selector ) {
- var self = this,
- i, l;
-
- if ( typeof selector !== "string" ) {
- return jQuery( selector ).filter(function() {
- for ( i = 0, l = self.length; i < l; i++ ) {
- if ( jQuery.contains( self[ i ], this ) ) {
- return true;
- }
- }
- });
- }
-
- var ret = this.pushStack( "", "find", selector ),
- length, n, r;
-
- for ( i = 0, l = this.length; i < l; i++ ) {
- length = ret.length;
- jQuery.find( selector, this[i], ret );
-
- if ( i > 0 ) {
- // Make sure that the results are unique
- for ( n = length; n < ret.length; n++ ) {
- for ( r = 0; r < length; r++ ) {
- if ( ret[r] === ret[n] ) {
- ret.splice(n--, 1);
- break;
- }
- }
- }
- }
- }
-
- return ret;
- },
-
- has: function( target ) {
- var targets = jQuery( target );
- return this.filter(function() {
- for ( var i = 0, l = targets.length; i < l; i++ ) {
- if ( jQuery.contains( this, targets[i] ) ) {
- return true;
- }
- }
- });
- },
-
- not: function( selector ) {
- return this.pushStack( winnow(this, selector, false), "not", selector);
- },
-
- filter: function( selector ) {
- return this.pushStack( winnow(this, selector, true), "filter", selector );
- },
-
- is: function( selector ) {
- return !!selector && (
- typeof selector === "string" ?
- // If this is a positional selector, check membership in the returned set
- // so $("p:first").is("p:last") won't return true for a doc with two "p".
- POS.test( selector ) ?
- jQuery( selector, this.context ).index( this[0] ) >= 0 :
- jQuery.filter( selector, this ).length > 0 :
- this.filter( selector ).length > 0 );
- },
-
- closest: function( selectors, context ) {
- var ret = [], i, l, cur = this[0];
-
- // Array (deprecated as of jQuery 1.7)
- if ( jQuery.isArray( selectors ) ) {
- var level = 1;
-
- while ( cur && cur.ownerDocument && cur !== context ) {
- for ( i = 0; i < selectors.length; i++ ) {
-
- if ( jQuery( cur ).is( selectors[ i ] ) ) {
- ret.push({ selector: selectors[ i ], elem: cur, level: level });
- }
- }
-
- cur = cur.parentNode;
- level++;
- }
-
- return ret;
- }
-
- // String
- var pos = POS.test( selectors ) || typeof selectors !== "string" ?
- jQuery( selectors, context || this.context ) :
- 0;
-
- for ( i = 0, l = this.length; i < l; i++ ) {
- cur = this[i];
-
- while ( cur ) {
- if ( pos ? pos.index(cur) > -1 : jQuery.find.matchesSelector(cur, selectors) ) {
- ret.push( cur );
- break;
-
- } else {
- cur = cur.parentNode;
- if ( !cur || !cur.ownerDocument || cur === context || cur.nodeType === 11 ) {
- break;
- }
- }
- }
- }
-
- ret = ret.length > 1 ? jQuery.unique( ret ) : ret;
-
- return this.pushStack( ret, "closest", selectors );
- },
-
- // Determine the position of an element within
- // the matched set of elements
- index: function( elem ) {
-
- // No argument, return index in parent
- if ( !elem ) {
- return ( this[0] && this[0].parentNode ) ? this.prevAll().length : -1;
- }
-
- // index in selector
- if ( typeof elem === "string" ) {
- return jQuery.inArray( this[0], jQuery( elem ) );
- }
-
- // Locate the position of the desired element
- return jQuery.inArray(
- // If it receives a jQuery object, the first element is used
- elem.jquery ? elem[0] : elem, this );
- },
-
- add: function( selector, context ) {
- var set = typeof selector === "string" ?
- jQuery( selector, context ) :
- jQuery.makeArray( selector && selector.nodeType ? [ selector ] : selector ),
- all = jQuery.merge( this.get(), set );
-
- return this.pushStack( isDisconnected( set[0] ) || isDisconnected( all[0] ) ?
- all :
- jQuery.unique( all ) );
- },
-
- andSelf: function() {
- return this.add( this.prevObject );
- }
-});
-
-// A painfully simple check to see if an element is disconnected
-// from a document (should be improved, where feasible).
-function isDisconnected( node ) {
- return !node || !node.parentNode || node.parentNode.nodeType === 11;
-}
-
-jQuery.each({
- parent: function( elem ) {
- var parent = elem.parentNode;
- return parent && parent.nodeType !== 11 ? parent : null;
- },
- parents: function( elem ) {
- return jQuery.dir( elem, "parentNode" );
- },
- parentsUntil: function( elem, i, until ) {
- return jQuery.dir( elem, "parentNode", until );
- },
- next: function( elem ) {
- return jQuery.nth( elem, 2, "nextSibling" );
- },
- prev: function( elem ) {
- return jQuery.nth( elem, 2, "previousSibling" );
- },
- nextAll: function( elem ) {
- return jQuery.dir( elem, "nextSibling" );
- },
- prevAll: function( elem ) {
- return jQuery.dir( elem, "previousSibling" );
- },
- nextUntil: function( elem, i, until ) {
- return jQuery.dir( elem, "nextSibling", until );
- },
- prevUntil: function( elem, i, until ) {
- return jQuery.dir( elem, "previousSibling", until );
- },
- siblings: function( elem ) {
- return jQuery.sibling( elem.parentNode.firstChild, elem );
- },
- children: function( elem ) {
- return jQuery.sibling( elem.firstChild );
- },
- contents: function( elem ) {
- return jQuery.nodeName( elem, "iframe" ) ?
- elem.contentDocument || elem.contentWindow.document :
- jQuery.makeArray( elem.childNodes );
- }
-}, function( name, fn ) {
- jQuery.fn[ name ] = function( until, selector ) {
- var ret = jQuery.map( this, fn, until );
-
- if ( !runtil.test( name ) ) {
- selector = until;
- }
-
- if ( selector && typeof selector === "string" ) {
- ret = jQuery.filter( selector, ret );
- }
-
- ret = this.length > 1 && !guaranteedUnique[ name ] ? jQuery.unique( ret ) : ret;
-
- if ( (this.length > 1 || rmultiselector.test( selector )) && rparentsprev.test( name ) ) {
- ret = ret.reverse();
- }
-
- return this.pushStack( ret, name, slice.call( arguments ).join(",") );
- };
-});
-
-jQuery.extend({
- filter: function( expr, elems, not ) {
- if ( not ) {
- expr = ":not(" + expr + ")";
- }
-
- return elems.length === 1 ?
- jQuery.find.matchesSelector(elems[0], expr) ? [ elems[0] ] : [] :
- jQuery.find.matches(expr, elems);
- },
-
- dir: function( elem, dir, until ) {
- var matched = [],
- cur = elem[ dir ];
-
- while ( cur && cur.nodeType !== 9 && (until === undefined || cur.nodeType !== 1 || !jQuery( cur ).is( until )) ) {
- if ( cur.nodeType === 1 ) {
- matched.push( cur );
- }
- cur = cur[dir];
- }
- return matched;
- },
-
- nth: function( cur, result, dir, elem ) {
- result = result || 1;
- var num = 0;
-
- for ( ; cur; cur = cur[dir] ) {
- if ( cur.nodeType === 1 && ++num === result ) {
- break;
- }
- }
-
- return cur;
- },
-
- sibling: function( n, elem ) {
- var r = [];
-
- for ( ; n; n = n.nextSibling ) {
- if ( n.nodeType === 1 && n !== elem ) {
- r.push( n );
- }
- }
-
- return r;
- }
-});
-
-// Implement the identical functionality for filter and not
-function winnow( elements, qualifier, keep ) {
-
- // Can't pass null or undefined to indexOf in Firefox 4
- // Set to 0 to skip string check
- qualifier = qualifier || 0;
-
- if ( jQuery.isFunction( qualifier ) ) {
- return jQuery.grep(elements, function( elem, i ) {
- var retVal = !!qualifier.call( elem, i, elem );
- return retVal === keep;
- });
-
- } else if ( qualifier.nodeType ) {
- return jQuery.grep(elements, function( elem, i ) {
- return ( elem === qualifier ) === keep;
- });
-
- } else if ( typeof qualifier === "string" ) {
- var filtered = jQuery.grep(elements, function( elem ) {
- return elem.nodeType === 1;
- });
-
- if ( isSimple.test( qualifier ) ) {
- return jQuery.filter(qualifier, filtered, !keep);
- } else {
- qualifier = jQuery.filter( qualifier, filtered );
- }
- }
-
- return jQuery.grep(elements, function( elem, i ) {
- return ( jQuery.inArray( elem, qualifier ) >= 0 ) === keep;
- });
-}
-
-
-
-
-function createSafeFragment( document ) {
- var list = nodeNames.split( "|" ),
- safeFrag = document.createDocumentFragment();
-
- if ( safeFrag.createElement ) {
- while ( list.length ) {
- safeFrag.createElement(
- list.pop()
- );
- }
- }
- return safeFrag;
-}
-
-var nodeNames = "abbr|article|aside|audio|canvas|datalist|details|figcaption|figure|footer|" +
- "header|hgroup|mark|meter|nav|output|progress|section|summary|time|video",
- rinlinejQuery = / jQuery\d+="(?:\d+|null)"/g,
- rleadingWhitespace = /^\s+/,
- rxhtmlTag = /<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/ig,
- rtagName = /<([\w:]+)/,
- rtbody = /<tbody/i,
- rhtml = /<|&#?\w+;/,
- rnoInnerhtml = /<(?:script|style)/i,
- rnocache = /<(?:script|object|embed|option|style)/i,
- rnoshimcache = new RegExp("<(?:" + nodeNames + ")", "i"),
- // checked="checked" or checked
- rchecked = /checked\s*(?:[^=]|=\s*.checked.)/i,
- rscriptType = /\/(java|ecma)script/i,
- rcleanScript = /^\s*<!(?:\[CDATA\[|\-\-)/,
- wrapMap = {
- option: [ 1, "<select multiple='multiple'>", "</select>" ],
- legend: [ 1, "<fieldset>", "</fieldset>" ],
- thead: [ 1, "<table>", "</table>" ],
- tr: [ 2, "<table><tbody>", "</tbody></table>" ],
- td: [ 3, "<table><tbody><tr>", "</tr></tbody></table>" ],
- col: [ 2, "<table><tbody></tbody><colgroup>", "</colgroup></table>" ],
- area: [ 1, "<map>", "</map>" ],
- _default: [ 0, "", "" ]
- },
- safeFragment = createSafeFragment( document );
-
-wrapMap.optgroup = wrapMap.option;
-wrapMap.tbody = wrapMap.tfoot = wrapMap.colgroup = wrapMap.caption = wrapMap.thead;
-wrapMap.th = wrapMap.td;
-
-// IE can't serialize <link> and <script> tags normally
-if ( !jQuery.support.htmlSerialize ) {
- wrapMap._default = [ 1, "div<div>", "</div>" ];
-}
-
-jQuery.fn.extend({
- text: function( text ) {
- if ( jQuery.isFunction(text) ) {
- return this.each(function(i) {
- var self = jQuery( this );
-
- self.text( text.call(this, i, self.text()) );
- });
- }
-
- if ( typeof text !== "object" && text !== undefined ) {
- return this.empty().append( (this[0] && this[0].ownerDocument || document).createTextNode( text ) );
- }
-
- return jQuery.text( this );
- },
-
- wrapAll: function( html ) {
- if ( jQuery.isFunction( html ) ) {
- return this.each(function(i) {
- jQuery(this).wrapAll( html.call(this, i) );
- });
- }
-
- if ( this[0] ) {
- // The elements to wrap the target around
- var wrap = jQuery( html, this[0].ownerDocument ).eq(0).clone(true);
-
- if ( this[0].parentNode ) {
- wrap.insertBefore( this[0] );
- }
-
- wrap.map(function() {
- var elem = this;
-
- while ( elem.firstChild && elem.firstChild.nodeType === 1 ) {
- elem = elem.firstChild;
- }
-
- return elem;
- }).append( this );
- }
-
- return this;
- },
-
- wrapInner: function( html ) {
- if ( jQuery.isFunction( html ) ) {
- return this.each(function(i) {
- jQuery(this).wrapInner( html.call(this, i) );
- });
- }
-
- return this.each(function() {
- var self = jQuery( this ),
- contents = self.contents();
-
- if ( contents.length ) {
- contents.wrapAll( html );
-
- } else {
- self.append( html );
- }
- });
- },
-
- wrap: function( html ) {
- var isFunction = jQuery.isFunction( html );
-
- return this.each(function(i) {
- jQuery( this ).wrapAll( isFunction ? html.call(this, i) : html );
- });
- },
-
- unwrap: function() {
- return this.parent().each(function() {
- if ( !jQuery.nodeName( this, "body" ) ) {
- jQuery( this ).replaceWith( this.childNodes );
- }
- }).end();
- },
-
- append: function() {
- return this.domManip(arguments, true, function( elem ) {
- if ( this.nodeType === 1 ) {
- this.appendChild( elem );
- }
- });
- },
-
- prepend: function() {
- return this.domManip(arguments, true, function( elem ) {
- if ( this.nodeType === 1 ) {
- this.insertBefore( elem, this.firstChild );
- }
- });
- },
-
- before: function() {
- if ( this[0] && this[0].parentNode ) {
- return this.domManip(arguments, false, function( elem ) {
- this.parentNode.insertBefore( elem, this );
- });
- } else if ( arguments.length ) {
- var set = jQuery.clean( arguments );
- set.push.apply( set, this.toArray() );
- return this.pushStack( set, "before", arguments );
- }
- },
-
- after: function() {
- if ( this[0] && this[0].parentNode ) {
- return this.domManip(arguments, false, function( elem ) {
- this.parentNode.insertBefore( elem, this.nextSibling );
- });
- } else if ( arguments.length ) {
- var set = this.pushStack( this, "after", arguments );
- set.push.apply( set, jQuery.clean(arguments) );
- return set;
- }
- },
-
- // keepData is for internal use only--do not document
- remove: function( selector, keepData ) {
- for ( var i = 0, elem; (elem = this[i]) != null; i++ ) {
- if ( !selector || jQuery.filter( selector, [ elem ] ).length ) {
- if ( !keepData && elem.nodeType === 1 ) {
- jQuery.cleanData( elem.getElementsByTagName("*") );
- jQuery.cleanData( [ elem ] );
- }
-
- if ( elem.parentNode ) {
- elem.parentNode.removeChild( elem );
- }
- }
- }
-
- return this;
- },
-
- empty: function() {
- for ( var i = 0, elem; (elem = this[i]) != null; i++ ) {
- // Remove element nodes and prevent memory leaks
- if ( elem.nodeType === 1 ) {
- jQuery.cleanData( elem.getElementsByTagName("*") );
- }
-
- // Remove any remaining nodes
- while ( elem.firstChild ) {
- elem.removeChild( elem.firstChild );
- }
- }
-
- return this;
- },
-
- clone: function( dataAndEvents, deepDataAndEvents ) {
- dataAndEvents = dataAndEvents == null ? false : dataAndEvents;
- deepDataAndEvents = deepDataAndEvents == null ? dataAndEvents : deepDataAndEvents;
-
- return this.map( function () {
- return jQuery.clone( this, dataAndEvents, deepDataAndEvents );
- });
- },
-
- html: function( value ) {
- if ( value === undefined ) {
- return this[0] && this[0].nodeType === 1 ?
- this[0].innerHTML.replace(rinlinejQuery, "") :
- null;
-
- // See if we can take a shortcut and just use innerHTML
- } else if ( typeof value === "string" && !rnoInnerhtml.test( value ) &&
- (jQuery.support.leadingWhitespace || !rleadingWhitespace.test( value )) &&
- !wrapMap[ (rtagName.exec( value ) || ["", ""])[1].toLowerCase() ] ) {
-
- value = value.replace(rxhtmlTag, "<$1></$2>");
-
- try {
- for ( var i = 0, l = this.length; i < l; i++ ) {
- // Remove element nodes and prevent memory leaks
- if ( this[i].nodeType === 1 ) {
- jQuery.cleanData( this[i].getElementsByTagName("*") );
- this[i].innerHTML = value;
- }
- }
-
- // If using innerHTML throws an exception, use the fallback method
- } catch(e) {
- this.empty().append( value );
- }
-
- } else if ( jQuery.isFunction( value ) ) {
- this.each(function(i){
- var self = jQuery( this );
-
- self.html( value.call(this, i, self.html()) );
- });
-
- } else {
- this.empty().append( value );
- }
-
- return this;
- },
-
- replaceWith: function( value ) {
- if ( this[0] && this[0].parentNode ) {
- // Make sure that the elements are removed from the DOM before they are inserted
- // this can help fix replacing a parent with child elements
- if ( jQuery.isFunction( value ) ) {
- return this.each(function(i) {
- var self = jQuery(this), old = self.html();
- self.replaceWith( value.call( this, i, old ) );
- });
- }
-
- if ( typeof value !== "string" ) {
- value = jQuery( value ).detach();
- }
-
- return this.each(function() {
- var next = this.nextSibling,
- parent = this.parentNode;
-
- jQuery( this ).remove();
-
- if ( next ) {
- jQuery(next).before( value );
- } else {
- jQuery(parent).append( value );
- }
- });
- } else {
- return this.length ?
- this.pushStack( jQuery(jQuery.isFunction(value) ? value() : value), "replaceWith", value ) :
- this;
- }
- },
-
- detach: function( selector ) {
- return this.remove( selector, true );
- },
-
- domManip: function( args, table, callback ) {
- var results, first, fragment, parent,
- value = args[0],
- scripts = [];
-
- // We can't cloneNode fragments that contain checked, in WebKit
- if ( !jQuery.support.checkClone && arguments.length === 3 && typeof value === "string" && rchecked.test( value ) ) {
- return this.each(function() {
- jQuery(this).domManip( args, table, callback, true );
- });
- }
-
- if ( jQuery.isFunction(value) ) {
- return this.each(function(i) {
- var self = jQuery(this);
- args[0] = value.call(this, i, table ? self.html() : undefined);
- self.domManip( args, table, callback );
- });
- }
-
- if ( this[0] ) {
- parent = value && value.parentNode;
-
- // If we're in a fragment, just use that instead of building a new one
- if ( jQuery.support.parentNode && parent && parent.nodeType === 11 && parent.childNodes.length === this.length ) {
- results = { fragment: parent };
-
- } else {
- results = jQuery.buildFragment( args, this, scripts );
- }
-
- fragment = results.fragment;
-
- if ( fragment.childNodes.length === 1 ) {
- first = fragment = fragment.firstChild;
- } else {
- first = fragment.firstChild;
- }
-
- if ( first ) {
- table = table && jQuery.nodeName( first, "tr" );
-
- for ( var i = 0, l = this.length, lastIndex = l - 1; i < l; i++ ) {
- callback.call(
- table ?
- root(this[i], first) :
- this[i],
- // Make sure that we do not leak memory by inadvertently discarding
- // the original fragment (which might have attached data) instead of
- // using it; in addition, use the original fragment object for the last
- // item instead of first because it can end up being emptied incorrectly
- // in certain situations (Bug #8070).
- // Fragments from the fragment cache must always be cloned and never used
- // in place.
- results.cacheable || ( l > 1 && i < lastIndex ) ?
- jQuery.clone( fragment, true, true ) :
- fragment
- );
- }
- }
-
- if ( scripts.length ) {
- jQuery.each( scripts, evalScript );
- }
- }
-
- return this;
- }
-});
-
-function root( elem, cur ) {
- return jQuery.nodeName(elem, "table") ?
- (elem.getElementsByTagName("tbody")[0] ||
- elem.appendChild(elem.ownerDocument.createElement("tbody"))) :
- elem;
-}
-
-function cloneCopyEvent( src, dest ) {
-
- if ( dest.nodeType !== 1 || !jQuery.hasData( src ) ) {
- return;
- }
-
- var type, i, l,
- oldData = jQuery._data( src ),
- curData = jQuery._data( dest, oldData ),
- events = oldData.events;
-
- if ( events ) {
- delete curData.handle;
- curData.events = {};
-
- for ( type in events ) {
- for ( i = 0, l = events[ type ].length; i < l; i++ ) {
- jQuery.event.add( dest, type + ( events[ type ][ i ].namespace ? "." : "" ) + events[ type ][ i ].namespace, events[ type ][ i ], events[ type ][ i ].data );
- }
- }
- }
-
- // make the cloned public data object a copy from the original
- if ( curData.data ) {
- curData.data = jQuery.extend( {}, curData.data );
- }
-}
-
-function cloneFixAttributes( src, dest ) {
- var nodeName;
-
- // We do not need to do anything for non-Elements
- if ( dest.nodeType !== 1 ) {
- return;
- }
-
- // clearAttributes removes the attributes, which we don't want,
- // but also removes the attachEvent events, which we *do* want
- if ( dest.clearAttributes ) {
- dest.clearAttributes();
- }
-
- // mergeAttributes, in contrast, only merges back on the
- // original attributes, not the events
- if ( dest.mergeAttributes ) {
- dest.mergeAttributes( src );
- }
-
- nodeName = dest.nodeName.toLowerCase();
-
- // IE6-8 fail to clone children inside object elements that use
- // the proprietary classid attribute value (rather than the type
- // attribute) to identify the type of content to display
- if ( nodeName === "object" ) {
- dest.outerHTML = src.outerHTML;
-
- } else if ( nodeName === "input" && (src.type === "checkbox" || src.type === "radio") ) {
- // IE6-8 fails to persist the checked state of a cloned checkbox
- // or radio button. Worse, IE6-7 fail to give the cloned element
- // a checked appearance if the defaultChecked value isn't also set
- if ( src.checked ) {
- dest.defaultChecked = dest.checked = src.checked;
- }
-
- // IE6-7 get confused and end up setting the value of a cloned
- // checkbox/radio button to an empty string instead of "on"
- if ( dest.value !== src.value ) {
- dest.value = src.value;
- }
-
- // IE6-8 fails to return the selected option to the default selected
- // state when cloning options
- } else if ( nodeName === "option" ) {
- dest.selected = src.defaultSelected;
-
- // IE6-8 fails to set the defaultValue to the correct value when
- // cloning other types of input fields
- } else if ( nodeName === "input" || nodeName === "textarea" ) {
- dest.defaultValue = src.defaultValue;
- }
-
- // Event data gets referenced instead of copied if the expando
- // gets copied too
- dest.removeAttribute( jQuery.expando );
-}
-
-jQuery.buildFragment = function( args, nodes, scripts ) {
- var fragment, cacheable, cacheresults, doc,
- first = args[ 0 ];
-
- // nodes may contain either an explicit document object,
- // a jQuery collection or context object.
- // If nodes[0] contains a valid object to assign to doc
- if ( nodes && nodes[0] ) {
- doc = nodes[0].ownerDocument || nodes[0];
- }
-
- // Ensure that an attr object doesn't incorrectly stand in as a document object
- // Chrome and Firefox seem to allow this to occur and will throw exception
- // Fixes #8950
- if ( !doc.createDocumentFragment ) {
- doc = document;
- }
-
- // Only cache "small" (1/2 KB) HTML strings that are associated with the main document
- // Cloning options loses the selected state, so don't cache them
- // IE 6 doesn't like it when you put <object> or <embed> elements in a fragment
- // Also, WebKit does not clone 'checked' attributes on cloneNode, so don't cache
- // Lastly, IE6,7,8 will not correctly reuse cached fragments that were created from unknown elems #10501
- if ( args.length === 1 && typeof first === "string" && first.length < 512 && doc === document &&
- first.charAt(0) === "<" && !rnocache.test( first ) &&
- (jQuery.support.checkClone || !rchecked.test( first )) &&
- (jQuery.support.html5Clone || !rnoshimcache.test( first )) ) {
-
- cacheable = true;
-
- cacheresults = jQuery.fragments[ first ];
- if ( cacheresults && cacheresults !== 1 ) {
- fragment = cacheresults;
- }
- }
-
- if ( !fragment ) {
- fragment = doc.createDocumentFragment();
- jQuery.clean( args, doc, fragment, scripts );
- }
-
- if ( cacheable ) {
- jQuery.fragments[ first ] = cacheresults ? fragment : 1;
- }
-
- return { fragment: fragment, cacheable: cacheable };
-};
-
-jQuery.fragments = {};
-
-jQuery.each({
- appendTo: "append",
- prependTo: "prepend",
- insertBefore: "before",
- insertAfter: "after",
- replaceAll: "replaceWith"
-}, function( name, original ) {
- jQuery.fn[ name ] = function( selector ) {
- var ret = [],
- insert = jQuery( selector ),
- parent = this.length === 1 && this[0].parentNode;
-
- if ( parent && parent.nodeType === 11 && parent.childNodes.length === 1 && insert.length === 1 ) {
- insert[ original ]( this[0] );
- return this;
-
- } else {
- for ( var i = 0, l = insert.length; i < l; i++ ) {
- var elems = ( i > 0 ? this.clone(true) : this ).get();
- jQuery( insert[i] )[ original ]( elems );
- ret = ret.concat( elems );
- }
-
- return this.pushStack( ret, name, insert.selector );
- }
- };
-});
-
-function getAll( elem ) {
- if ( typeof elem.getElementsByTagName !== "undefined" ) {
- return elem.getElementsByTagName( "*" );
-
- } else if ( typeof elem.querySelectorAll !== "undefined" ) {
- return elem.querySelectorAll( "*" );
-
- } else {
- return [];
- }
-}
-
-// Used in clean, fixes the defaultChecked property
-function fixDefaultChecked( elem ) {
- if ( elem.type === "checkbox" || elem.type === "radio" ) {
- elem.defaultChecked = elem.checked;
- }
-}
-// Finds all inputs and passes them to fixDefaultChecked
-function findInputs( elem ) {
- var nodeName = ( elem.nodeName || "" ).toLowerCase();
- if ( nodeName === "input" ) {
- fixDefaultChecked( elem );
- // Skip scripts, get other children
- } else if ( nodeName !== "script" && typeof elem.getElementsByTagName !== "undefined" ) {
- jQuery.grep( elem.getElementsByTagName("input"), fixDefaultChecked );
- }
-}
-
-// Derived From: http://www.iecss.com/shimprove/javascript/shimprove.1-0-1.js
-function shimCloneNode( elem ) {
- var div = document.createElement( "div" );
- safeFragment.appendChild( div );
-
- div.innerHTML = elem.outerHTML;
- return div.firstChild;
-}
-
-jQuery.extend({
- clone: function( elem, dataAndEvents, deepDataAndEvents ) {
- var srcElements,
- destElements,
- i,
- // IE<=8 does not properly clone detached, unknown element nodes
- clone = jQuery.support.html5Clone || !rnoshimcache.test( "<" + elem.nodeName ) ?
- elem.cloneNode( true ) :
- shimCloneNode( elem );
-
- if ( (!jQuery.support.noCloneEvent || !jQuery.support.noCloneChecked) &&
- (elem.nodeType === 1 || elem.nodeType === 11) && !jQuery.isXMLDoc(elem) ) {
- // IE copies events bound via attachEvent when using cloneNode.
- // Calling detachEvent on the clone will also remove the events
- // from the original. In order to get around this, we use some
- // proprietary methods to clear the events. Thanks to MooTools
- // guys for this hotness.
-
- cloneFixAttributes( elem, clone );
-
- // Using Sizzle here is crazy slow, so we use getElementsByTagName instead
- srcElements = getAll( elem );
- destElements = getAll( clone );
-
- // Weird iteration because IE will replace the length property
- // with an element if you are cloning the body and one of the
- // elements on the page has a name or id of "length"
- for ( i = 0; srcElements[i]; ++i ) {
- // Ensure that the destination node is not null; Fixes #9587
- if ( destElements[i] ) {
- cloneFixAttributes( srcElements[i], destElements[i] );
- }
- }
- }
-
- // Copy the events from the original to the clone
- if ( dataAndEvents ) {
- cloneCopyEvent( elem, clone );
-
- if ( deepDataAndEvents ) {
- srcElements = getAll( elem );
- destElements = getAll( clone );
-
- for ( i = 0; srcElements[i]; ++i ) {
- cloneCopyEvent( srcElements[i], destElements[i] );
- }
- }
- }
-
- srcElements = destElements = null;
-
- // Return the cloned set
- return clone;
- },
-
- clean: function( elems, context, fragment, scripts ) {
- var checkScriptType;
-
- context = context || document;
-
- // !context.createElement fails in IE with an error but returns typeof 'object'
- if ( typeof context.createElement === "undefined" ) {
- context = context.ownerDocument || context[0] && context[0].ownerDocument || document;
- }
-
- var ret = [], j;
-
- for ( var i = 0, elem; (elem = elems[i]) != null; i++ ) {
- if ( typeof elem === "number" ) {
- elem += "";
- }
-
- if ( !elem ) {
- continue;
- }
-
- // Convert html string into DOM nodes
- if ( typeof elem === "string" ) {
- if ( !rhtml.test( elem ) ) {
- elem = context.createTextNode( elem );
- } else {
- // Fix "XHTML"-style tags in all browsers
- elem = elem.replace(rxhtmlTag, "<$1></$2>");
-
- // Trim whitespace, otherwise indexOf won't work as expected
- var tag = ( rtagName.exec( elem ) || ["", ""] )[1].toLowerCase(),
- wrap = wrapMap[ tag ] || wrapMap._default,
- depth = wrap[0],
- div = context.createElement("div");
-
- // Append wrapper element to unknown element safe doc fragment
- if ( context === document ) {
- // Use the fragment we've already created for this document
- safeFragment.appendChild( div );
- } else {
- // Use a fragment created with the owner document
- createSafeFragment( context ).appendChild( div );
- }
-
- // Go to html and back, then peel off extra wrappers
- div.innerHTML = wrap[1] + elem + wrap[2];
-
- // Move to the right depth
- while ( depth-- ) {
- div = div.lastChild;
- }
-
- // Remove IE's autoinserted <tbody> from table fragments
- if ( !jQuery.support.tbody ) {
-
- // String was a <table>, *may* have spurious <tbody>
- var hasBody = rtbody.test(elem),
- tbody = tag === "table" && !hasBody ?
- div.firstChild && div.firstChild.childNodes :
-
- // String was a bare <thead> or <tfoot>
- wrap[1] === "<table>" && !hasBody ?
- div.childNodes :
- [];
-
- for ( j = tbody.length - 1; j >= 0 ; --j ) {
- if ( jQuery.nodeName( tbody[ j ], "tbody" ) && !tbody[ j ].childNodes.length ) {
- tbody[ j ].parentNode.removeChild( tbody[ j ] );
- }
- }
- }
-
- // IE completely kills leading whitespace when innerHTML is used
- if ( !jQuery.support.leadingWhitespace && rleadingWhitespace.test( elem ) ) {
- div.insertBefore( context.createTextNode( rleadingWhitespace.exec(elem)[0] ), div.firstChild );
- }
-
- elem = div.childNodes;
- }
- }
-
- // Resets defaultChecked for any radios and checkboxes
- // about to be appended to the DOM in IE 6/7 (#8060)
- var len;
- if ( !jQuery.support.appendChecked ) {
- if ( elem[0] && typeof (len = elem.length) === "number" ) {
- for ( j = 0; j < len; j++ ) {
- findInputs( elem[j] );
- }
- } else {
- findInputs( elem );
- }
- }
-
- if ( elem.nodeType ) {
- ret.push( elem );
- } else {
- ret = jQuery.merge( ret, elem );
- }
- }
-
- if ( fragment ) {
- checkScriptType = function( elem ) {
- return !elem.type || rscriptType.test( elem.type );
- };
- for ( i = 0; ret[i]; i++ ) {
- if ( scripts && jQuery.nodeName( ret[i], "script" ) && (!ret[i].type || ret[i].type.toLowerCase() === "text/javascript") ) {
- scripts.push( ret[i].parentNode ? ret[i].parentNode.removeChild( ret[i] ) : ret[i] );
-
- } else {
- if ( ret[i].nodeType === 1 ) {
- var jsTags = jQuery.grep( ret[i].getElementsByTagName( "script" ), checkScriptType );
-
- ret.splice.apply( ret, [i + 1, 0].concat( jsTags ) );
- }
- fragment.appendChild( ret[i] );
- }
- }
- }
-
- return ret;
- },
-
- cleanData: function( elems ) {
- var data, id,
- cache = jQuery.cache,
- special = jQuery.event.special,
- deleteExpando = jQuery.support.deleteExpando;
-
- for ( var i = 0, elem; (elem = elems[i]) != null; i++ ) {
- if ( elem.nodeName && jQuery.noData[elem.nodeName.toLowerCase()] ) {
- continue;
- }
-
- id = elem[ jQuery.expando ];
-
- if ( id ) {
- data = cache[ id ];
-
- if ( data && data.events ) {
- for ( var type in data.events ) {
- if ( special[ type ] ) {
- jQuery.event.remove( elem, type );
-
- // This is a shortcut to avoid jQuery.event.remove's overhead
- } else {
- jQuery.removeEvent( elem, type, data.handle );
- }
- }
-
- // Null the DOM reference to avoid IE6/7/8 leak (#7054)
- if ( data.handle ) {
- data.handle.elem = null;
- }
- }
-
- if ( deleteExpando ) {
- delete elem[ jQuery.expando ];
-
- } else if ( elem.removeAttribute ) {
- elem.removeAttribute( jQuery.expando );
- }
-
- delete cache[ id ];
- }
- }
- }
-});
-
-function evalScript( i, elem ) {
- if ( elem.src ) {
- jQuery.ajax({
- url: elem.src,
- async: false,
- dataType: "script"
- });
- } else {
- jQuery.globalEval( ( elem.text || elem.textContent || elem.innerHTML || "" ).replace( rcleanScript, "/*$0*/" ) );
- }
-
- if ( elem.parentNode ) {
- elem.parentNode.removeChild( elem );
- }
-}
-
-
-
-
-var ralpha = /alpha\([^)]*\)/i,
- ropacity = /opacity=([^)]*)/,
- // fixed for IE9, see #8346
- rupper = /([A-Z]|^ms)/g,
- rnumpx = /^-?\d+(?:px)?$/i,
- rnum = /^-?\d/,
- rrelNum = /^([\-+])=([\-+.\de]+)/,
-
- cssShow = { position: "absolute", visibility: "hidden", display: "block" },
- cssWidth = [ "Left", "Right" ],
- cssHeight = [ "Top", "Bottom" ],
- curCSS,
-
- getComputedStyle,
- currentStyle;
-
-jQuery.fn.css = function( name, value ) {
- // Setting 'undefined' is a no-op
- if ( arguments.length === 2 && value === undefined ) {
- return this;
- }
-
- return jQuery.access( this, name, value, true, function( elem, name, value ) {
- return value !== undefined ?
- jQuery.style( elem, name, value ) :
- jQuery.css( elem, name );
- });
-};
-
-jQuery.extend({
- // Add in style property hooks for overriding the default
- // behavior of getting and setting a style property
- cssHooks: {
- opacity: {
- get: function( elem, computed ) {
- if ( computed ) {
- // We should always get a number back from opacity
- var ret = curCSS( elem, "opacity", "opacity" );
- return ret === "" ? "1" : ret;
-
- } else {
- return elem.style.opacity;
- }
- }
- }
- },
-
- // Exclude the following css properties to add px
- cssNumber: {
- "fillOpacity": true,
- "fontWeight": true,
- "lineHeight": true,
- "opacity": true,
- "orphans": true,
- "widows": true,
- "zIndex": true,
- "zoom": true
- },
-
- // Add in properties whose names you wish to fix before
- // setting or getting the value
- cssProps: {
- // normalize float css property
- "float": jQuery.support.cssFloat ? "cssFloat" : "styleFloat"
- },
-
- // Get and set the style property on a DOM Node
- style: function( elem, name, value, extra ) {
- // Don't set styles on text and comment nodes
- if ( !elem || elem.nodeType === 3 || elem.nodeType === 8 || !elem.style ) {
- return;
- }
-
- // Make sure that we're working with the right name
- var ret, type, origName = jQuery.camelCase( name ),
- style = elem.style, hooks = jQuery.cssHooks[ origName ];
-
- name = jQuery.cssProps[ origName ] || origName;
-
- // Check if we're setting a value
- if ( value !== undefined ) {
- type = typeof value;
-
- // convert relative number strings (+= or -=) to relative numbers. #7345
- if ( type === "string" && (ret = rrelNum.exec( value )) ) {
- value = ( +( ret[1] + 1) * +ret[2] ) + parseFloat( jQuery.css( elem, name ) );
- // Fixes bug #9237
- type = "number";
- }
-
- // Make sure that NaN and null values aren't set. See: #7116
- if ( value == null || type === "number" && isNaN( value ) ) {
- return;
- }
-
- // If a number was passed in, add 'px' to the (except for certain CSS properties)
- if ( type === "number" && !jQuery.cssNumber[ origName ] ) {
- value += "px";
- }
-
- // If a hook was provided, use that value, otherwise just set the specified value
- if ( !hooks || !("set" in hooks) || (value = hooks.set( elem, value )) !== undefined ) {
- // Wrapped to prevent IE from throwing errors when 'invalid' values are provided
- // Fixes bug #5509
- try {
- style[ name ] = value;
- } catch(e) {}
- }
-
- } else {
- // If a hook was provided get the non-computed value from there
- if ( hooks && "get" in hooks && (ret = hooks.get( elem, false, extra )) !== undefined ) {
- return ret;
- }
-
- // Otherwise just get the value from the style object
- return style[ name ];
- }
- },
-
- css: function( elem, name, extra ) {
- var ret, hooks;
-
- // Make sure that we're working with the right name
- name = jQuery.camelCase( name );
- hooks = jQuery.cssHooks[ name ];
- name = jQuery.cssProps[ name ] || name;
-
- // cssFloat needs a special treatment
- if ( name === "cssFloat" ) {
- name = "float";
- }
-
- // If a hook was provided get the computed value from there
- if ( hooks && "get" in hooks && (ret = hooks.get( elem, true, extra )) !== undefined ) {
- return ret;
-
- // Otherwise, if a way to get the computed value exists, use that
- } else if ( curCSS ) {
- return curCSS( elem, name );
- }
- },
-
- // A method for quickly swapping in/out CSS properties to get correct calculations
- swap: function( elem, options, callback ) {
- var old = {};
-
- // Remember the old values, and insert the new ones
- for ( var name in options ) {
- old[ name ] = elem.style[ name ];
- elem.style[ name ] = options[ name ];
- }
-
- callback.call( elem );
-
- // Revert the old values
- for ( name in options ) {
- elem.style[ name ] = old[ name ];
- }
- }
-});
-
-// DEPRECATED, Use jQuery.css() instead
-jQuery.curCSS = jQuery.css;
-
-jQuery.each(["height", "width"], function( i, name ) {
- jQuery.cssHooks[ name ] = {
- get: function( elem, computed, extra ) {
- var val;
-
- if ( computed ) {
- if ( elem.offsetWidth !== 0 ) {
- return getWH( elem, name, extra );
- } else {
- jQuery.swap( elem, cssShow, function() {
- val = getWH( elem, name, extra );
- });
- }
-
- return val;
- }
- },
-
- set: function( elem, value ) {
- if ( rnumpx.test( value ) ) {
- // ignore negative width and height values #1599
- value = parseFloat( value );
-
- if ( value >= 0 ) {
- return value + "px";
- }
-
- } else {
- return value;
- }
- }
- };
-});
-
-if ( !jQuery.support.opacity ) {
- jQuery.cssHooks.opacity = {
- get: function( elem, computed ) {
- // IE uses filters for opacity
- return ropacity.test( (computed && elem.currentStyle ? elem.currentStyle.filter : elem.style.filter) || "" ) ?
- ( parseFloat( RegExp.$1 ) / 100 ) + "" :
- computed ? "1" : "";
- },
-
- set: function( elem, value ) {
- var style = elem.style,
- currentStyle = elem.currentStyle,
- opacity = jQuery.isNumeric( value ) ? "alpha(opacity=" + value * 100 + ")" : "",
- filter = currentStyle && currentStyle.filter || style.filter || "";
-
- // IE has trouble with opacity if it does not have layout
- // Force it by setting the zoom level
- style.zoom = 1;
-
- // if setting opacity to 1, and no other filters exist - attempt to remove filter attribute #6652
- if ( value >= 1 && jQuery.trim( filter.replace( ralpha, "" ) ) === "" ) {
-
- // Setting style.filter to null, "" & " " still leave "filter:" in the cssText
- // if "filter:" is present at all, clearType is disabled, we want to avoid this
- // style.removeAttribute is IE Only, but so apparently is this code path...
- style.removeAttribute( "filter" );
-
- // if there there is no filter style applied in a css rule, we are done
- if ( currentStyle && !currentStyle.filter ) {
- return;
- }
- }
-
- // otherwise, set new filter values
- style.filter = ralpha.test( filter ) ?
- filter.replace( ralpha, opacity ) :
- filter + " " + opacity;
- }
- };
-}
-
-jQuery(function() {
- // This hook cannot be added until DOM ready because the support test
- // for it is not run until after DOM ready
- if ( !jQuery.support.reliableMarginRight ) {
- jQuery.cssHooks.marginRight = {
- get: function( elem, computed ) {
- // WebKit Bug 13343 - getComputedStyle returns wrong value for margin-right
- // Work around by temporarily setting element display to inline-block
- var ret;
- jQuery.swap( elem, { "display": "inline-block" }, function() {
- if ( computed ) {
- ret = curCSS( elem, "margin-right", "marginRight" );
- } else {
- ret = elem.style.marginRight;
- }
- });
- return ret;
- }
- };
- }
-});
-
-if ( document.defaultView && document.defaultView.getComputedStyle ) {
- getComputedStyle = function( elem, name ) {
- var ret, defaultView, computedStyle;
-
- name = name.replace( rupper, "-$1" ).toLowerCase();
-
- if ( (defaultView = elem.ownerDocument.defaultView) &&
- (computedStyle = defaultView.getComputedStyle( elem, null )) ) {
- ret = computedStyle.getPropertyValue( name );
- if ( ret === "" && !jQuery.contains( elem.ownerDocument.documentElement, elem ) ) {
- ret = jQuery.style( elem, name );
- }
- }
-
- return ret;
- };
-}
-
-if ( document.documentElement.currentStyle ) {
- currentStyle = function( elem, name ) {
- var left, rsLeft, uncomputed,
- ret = elem.currentStyle && elem.currentStyle[ name ],
- style = elem.style;
-
- // Avoid setting ret to empty string here
- // so we don't default to auto
- if ( ret === null && style && (uncomputed = style[ name ]) ) {
- ret = uncomputed;
- }
-
- // From the awesome hack by Dean Edwards
- // http://erik.eae.net/archives/2007/07/27/18.54.15/#comment-102291
-
- // If we're not dealing with a regular pixel number
- // but a number that has a weird ending, we need to convert it to pixels
- if ( !rnumpx.test( ret ) && rnum.test( ret ) ) {
-
- // Remember the original values
- left = style.left;
- rsLeft = elem.runtimeStyle && elem.runtimeStyle.left;
-
- // Put in the new values to get a computed value out
- if ( rsLeft ) {
- elem.runtimeStyle.left = elem.currentStyle.left;
- }
- style.left = name === "fontSize" ? "1em" : ( ret || 0 );
- ret = style.pixelLeft + "px";
-
- // Revert the changed values
- style.left = left;
- if ( rsLeft ) {
- elem.runtimeStyle.left = rsLeft;
- }
- }
-
- return ret === "" ? "auto" : ret;
- };
-}
-
-curCSS = getComputedStyle || currentStyle;
-
-function getWH( elem, name, extra ) {
-
- // Start with offset property
- var val = name === "width" ? elem.offsetWidth : elem.offsetHeight,
- which = name === "width" ? cssWidth : cssHeight,
- i = 0,
- len = which.length;
-
- if ( val > 0 ) {
- if ( extra !== "border" ) {
- for ( ; i < len; i++ ) {
- if ( !extra ) {
- val -= parseFloat( jQuery.css( elem, "padding" + which[ i ] ) ) || 0;
- }
- if ( extra === "margin" ) {
- val += parseFloat( jQuery.css( elem, extra + which[ i ] ) ) || 0;
- } else {
- val -= parseFloat( jQuery.css( elem, "border" + which[ i ] + "Width" ) ) || 0;
- }
- }
- }
-
- return val + "px";
- }
-
- // Fall back to computed then uncomputed css if necessary
- val = curCSS( elem, name, name );
- if ( val < 0 || val == null ) {
- val = elem.style[ name ] || 0;
- }
- // Normalize "", auto, and prepare for extra
- val = parseFloat( val ) || 0;
-
- // Add padding, border, margin
- if ( extra ) {
- for ( ; i < len; i++ ) {
- val += parseFloat( jQuery.css( elem, "padding" + which[ i ] ) ) || 0;
- if ( extra !== "padding" ) {
- val += parseFloat( jQuery.css( elem, "border" + which[ i ] + "Width" ) ) || 0;
- }
- if ( extra === "margin" ) {
- val += parseFloat( jQuery.css( elem, extra + which[ i ] ) ) || 0;
- }
- }
- }
-
- return val + "px";
-}
-
-if ( jQuery.expr && jQuery.expr.filters ) {
- jQuery.expr.filters.hidden = function( elem ) {
- var width = elem.offsetWidth,
- height = elem.offsetHeight;
-
- return ( width === 0 && height === 0 ) || (!jQuery.support.reliableHiddenOffsets && ((elem.style && elem.style.display) || jQuery.css( elem, "display" )) === "none");
- };
-
- jQuery.expr.filters.visible = function( elem ) {
- return !jQuery.expr.filters.hidden( elem );
- };
-}
-
-
-
-
-var r20 = /%20/g,
- rbracket = /\[\]$/,
- rCRLF = /\r?\n/g,
- rhash = /#.*$/,
- rheaders = /^(.*?):[ \t]*([^\r\n]*)\r?$/mg, // IE leaves an \r character at EOL
- rinput = /^(?:color|date|datetime|datetime-local|email|hidden|month|number|password|range|search|tel|text|time|url|week)$/i,
- // #7653, #8125, #8152: local protocol detection
- rlocalProtocol = /^(?:about|app|app\-storage|.+\-extension|file|res|widget):$/,
- rnoContent = /^(?:GET|HEAD)$/,
- rprotocol = /^\/\//,
- rquery = /\?/,
- rscript = /<script\b[^<]*(?:(?!<\/script>)<[^<]*)*<\/script>/gi,
- rselectTextarea = /^(?:select|textarea)/i,
- rspacesAjax = /\s+/,
- rts = /([?&])_=[^&]*/,
- rurl = /^([\w\+\.\-]+:)(?:\/\/([^\/?#:]*)(?::(\d+))?)?/,
-
- // Keep a copy of the old load method
- _load = jQuery.fn.load,
-
- /* Prefilters
- * 1) They are useful to introduce custom dataTypes (see ajax/jsonp.js for an example)
- * 2) These are called:
- * - BEFORE asking for a transport
- * - AFTER param serialization (s.data is a string if s.processData is true)
- * 3) key is the dataType
- * 4) the catchall symbol "*" can be used
- * 5) execution will start with transport dataType and THEN continue down to "*" if needed
- */
- prefilters = {},
-
- /* Transports bindings
- * 1) key is the dataType
- * 2) the catchall symbol "*" can be used
- * 3) selection will start with transport dataType and THEN go to "*" if needed
- */
- transports = {},
-
- // Document location
- ajaxLocation,
-
- // Document location segments
- ajaxLocParts,
-
- // Avoid comment-prolog char sequence (#10098); must appease lint and evade compression
- allTypes = ["*/"] + ["*"];
-
-// #8138, IE may throw an exception when accessing
-// a field from window.location if document.domain has been set
-try {
- ajaxLocation = location.href;
-} catch( e ) {
- // Use the href attribute of an A element
- // since IE will modify it given document.location
- ajaxLocation = document.createElement( "a" );
- ajaxLocation.href = "";
- ajaxLocation = ajaxLocation.href;
-}
-
-// Segment location into parts
-ajaxLocParts = rurl.exec( ajaxLocation.toLowerCase() ) || [];
-
-// Base "constructor" for jQuery.ajaxPrefilter and jQuery.ajaxTransport
-function addToPrefiltersOrTransports( structure ) {
-
- // dataTypeExpression is optional and defaults to "*"
- return function( dataTypeExpression, func ) {
-
- if ( typeof dataTypeExpression !== "string" ) {
- func = dataTypeExpression;
- dataTypeExpression = "*";
- }
-
- if ( jQuery.isFunction( func ) ) {
- var dataTypes = dataTypeExpression.toLowerCase().split( rspacesAjax ),
- i = 0,
- length = dataTypes.length,
- dataType,
- list,
- placeBefore;
-
- // For each dataType in the dataTypeExpression
- for ( ; i < length; i++ ) {
- dataType = dataTypes[ i ];
- // We control if we're asked to add before
- // any existing element
- placeBefore = /^\+/.test( dataType );
- if ( placeBefore ) {
- dataType = dataType.substr( 1 ) || "*";
- }
- list = structure[ dataType ] = structure[ dataType ] || [];
- // then we add to the structure accordingly
- list[ placeBefore ? "unshift" : "push" ]( func );
- }
- }
- };
-}
-
-// Base inspection function for prefilters and transports
-function inspectPrefiltersOrTransports( structure, options, originalOptions, jqXHR,
- dataType /* internal */, inspected /* internal */ ) {
-
- dataType = dataType || options.dataTypes[ 0 ];
- inspected = inspected || {};
-
- inspected[ dataType ] = true;
-
- var list = structure[ dataType ],
- i = 0,
- length = list ? list.length : 0,
- executeOnly = ( structure === prefilters ),
- selection;
-
- for ( ; i < length && ( executeOnly || !selection ); i++ ) {
- selection = list[ i ]( options, originalOptions, jqXHR );
- // If we got redirected to another dataType
- // we try there if executing only and not done already
- if ( typeof selection === "string" ) {
- if ( !executeOnly || inspected[ selection ] ) {
- selection = undefined;
- } else {
- options.dataTypes.unshift( selection );
- selection = inspectPrefiltersOrTransports(
- structure, options, originalOptions, jqXHR, selection, inspected );
- }
- }
- }
- // If we're only executing or nothing was selected
- // we try the catchall dataType if not done already
- if ( ( executeOnly || !selection ) && !inspected[ "*" ] ) {
- selection = inspectPrefiltersOrTransports(
- structure, options, originalOptions, jqXHR, "*", inspected );
- }
- // unnecessary when only executing (prefilters)
- // but it'll be ignored by the caller in that case
- return selection;
-}
-
-// A special extend for ajax options
-// that takes "flat" options (not to be deep extended)
-// Fixes #9887
-function ajaxExtend( target, src ) {
- var key, deep,
- flatOptions = jQuery.ajaxSettings.flatOptions || {};
- for ( key in src ) {
- if ( src[ key ] !== undefined ) {
- ( flatOptions[ key ] ? target : ( deep || ( deep = {} ) ) )[ key ] = src[ key ];
- }
- }
- if ( deep ) {
- jQuery.extend( true, target, deep );
- }
-}
-
-jQuery.fn.extend({
- load: function( url, params, callback ) {
- if ( typeof url !== "string" && _load ) {
- return _load.apply( this, arguments );
-
- // Don't do a request if no elements are being requested
- } else if ( !this.length ) {
- return this;
- }
-
- var off = url.indexOf( " " );
- if ( off >= 0 ) {
- var selector = url.slice( off, url.length );
- url = url.slice( 0, off );
- }
-
- // Default to a GET request
- var type = "GET";
-
- // If the second parameter was provided
- if ( params ) {
- // If it's a function
- if ( jQuery.isFunction( params ) ) {
- // We assume that it's the callback
- callback = params;
- params = undefined;
-
- // Otherwise, build a param string
- } else if ( typeof params === "object" ) {
- params = jQuery.param( params, jQuery.ajaxSettings.traditional );
- type = "POST";
- }
- }
-
- var self = this;
-
- // Request the remote document
- jQuery.ajax({
- url: url,
- type: type,
- dataType: "html",
- data: params,
- // Complete callback (responseText is used internally)
- complete: function( jqXHR, status, responseText ) {
- // Store the response as specified by the jqXHR object
- responseText = jqXHR.responseText;
- // If successful, inject the HTML into all the matched elements
- if ( jqXHR.isResolved() ) {
- // #4825: Get the actual response in case
- // a dataFilter is present in ajaxSettings
- jqXHR.done(function( r ) {
- responseText = r;
- });
- // See if a selector was specified
- self.html( selector ?
- // Create a dummy div to hold the results
- jQuery("<div>")
- // inject the contents of the document in, removing the scripts
- // to avoid any 'Permission Denied' errors in IE
- .append(responseText.replace(rscript, ""))
-
- // Locate the specified elements
- .find(selector) :
-
- // If not, just inject the full result
- responseText );
- }
-
- if ( callback ) {
- self.each( callback, [ responseText, status, jqXHR ] );
- }
- }
- });
-
- return this;
- },
-
- serialize: function() {
- return jQuery.param( this.serializeArray() );
- },
-
- serializeArray: function() {
- return this.map(function(){
- return this.elements ? jQuery.makeArray( this.elements ) : this;
- })
- .filter(function(){
- return this.name && !this.disabled &&
- ( this.checked || rselectTextarea.test( this.nodeName ) ||
- rinput.test( this.type ) );
- })
- .map(function( i, elem ){
- var val = jQuery( this ).val();
-
- return val == null ?
- null :
- jQuery.isArray( val ) ?
- jQuery.map( val, function( val, i ){
- return { name: elem.name, value: val.replace( rCRLF, "\r\n" ) };
- }) :
- { name: elem.name, value: val.replace( rCRLF, "\r\n" ) };
- }).get();
- }
-});
-
-// Attach a bunch of functions for handling common AJAX events
-jQuery.each( "ajaxStart ajaxStop ajaxComplete ajaxError ajaxSuccess ajaxSend".split( " " ), function( i, o ){
- jQuery.fn[ o ] = function( f ){
- return this.on( o, f );
- };
-});
-
-jQuery.each( [ "get", "post" ], function( i, method ) {
- jQuery[ method ] = function( url, data, callback, type ) {
- // shift arguments if data argument was omitted
- if ( jQuery.isFunction( data ) ) {
- type = type || callback;
- callback = data;
- data = undefined;
- }
-
- return jQuery.ajax({
- type: method,
- url: url,
- data: data,
- success: callback,
- dataType: type
- });
- };
-});
-
-jQuery.extend({
-
- getScript: function( url, callback ) {
- return jQuery.get( url, undefined, callback, "script" );
- },
-
- getJSON: function( url, data, callback ) {
- return jQuery.get( url, data, callback, "json" );
- },
-
- // Creates a full fledged settings object into target
- // with both ajaxSettings and settings fields.
- // If target is omitted, writes into ajaxSettings.
- ajaxSetup: function( target, settings ) {
- if ( settings ) {
- // Building a settings object
- ajaxExtend( target, jQuery.ajaxSettings );
- } else {
- // Extending ajaxSettings
- settings = target;
- target = jQuery.ajaxSettings;
- }
- ajaxExtend( target, settings );
- return target;
- },
-
- ajaxSettings: {
- url: ajaxLocation,
- isLocal: rlocalProtocol.test( ajaxLocParts[ 1 ] ),
- global: true,
- type: "GET",
- contentType: "application/x-www-form-urlencoded",
- processData: true,
- async: true,
- /*
- timeout: 0,
- data: null,
- dataType: null,
- username: null,
- password: null,
- cache: null,
- traditional: false,
- headers: {},
- */
-
- accepts: {
- xml: "application/xml, text/xml",
- html: "text/html",
- text: "text/plain",
- json: "application/json, text/javascript",
- "*": allTypes
- },
-
- contents: {
- xml: /xml/,
- html: /html/,
- json: /json/
- },
-
- responseFields: {
- xml: "responseXML",
- text: "responseText"
- },
-
- // List of data converters
- // 1) key format is "source_type destination_type" (a single space in-between)
- // 2) the catchall symbol "*" can be used for source_type
- converters: {
-
- // Convert anything to text
- "* text": window.String,
-
- // Text to html (true = no transformation)
- "text html": true,
-
- // Evaluate text as a json expression
- "text json": jQuery.parseJSON,
-
- // Parse text as xml
- "text xml": jQuery.parseXML
- },
-
- // For options that shouldn't be deep extended:
- // you can add your own custom options here if
- // and when you create one that shouldn't be
- // deep extended (see ajaxExtend)
- flatOptions: {
- context: true,
- url: true
- }
- },
-
- ajaxPrefilter: addToPrefiltersOrTransports( prefilters ),
- ajaxTransport: addToPrefiltersOrTransports( transports ),
-
- // Main method
- ajax: function( url, options ) {
-
- // If url is an object, simulate pre-1.5 signature
- if ( typeof url === "object" ) {
- options = url;
- url = undefined;
- }
-
- // Force options to be an object
- options = options || {};
-
- var // Create the final options object
- s = jQuery.ajaxSetup( {}, options ),
- // Callbacks context
- callbackContext = s.context || s,
- // Context for global events
- // It's the callbackContext if one was provided in the options
- // and if it's a DOM node or a jQuery collection
- globalEventContext = callbackContext !== s &&
- ( callbackContext.nodeType || callbackContext instanceof jQuery ) ?
- jQuery( callbackContext ) : jQuery.event,
- // Deferreds
- deferred = jQuery.Deferred(),
- completeDeferred = jQuery.Callbacks( "once memory" ),
- // Status-dependent callbacks
- statusCode = s.statusCode || {},
- // ifModified key
- ifModifiedKey,
- // Headers (they are sent all at once)
- requestHeaders = {},
- requestHeadersNames = {},
- // Response headers
- responseHeadersString,
- responseHeaders,
- // transport
- transport,
- // timeout handle
- timeoutTimer,
- // Cross-domain detection vars
- parts,
- // The jqXHR state
- state = 0,
- // To know if global events are to be dispatched
- fireGlobals,
- // Loop variable
- i,
- // Fake xhr
- jqXHR = {
-
- readyState: 0,
-
- // Caches the header
- setRequestHeader: function( name, value ) {
- if ( !state ) {
- var lname = name.toLowerCase();
- name = requestHeadersNames[ lname ] = requestHeadersNames[ lname ] || name;
- requestHeaders[ name ] = value;
- }
- return this;
- },
-
- // Raw string
- getAllResponseHeaders: function() {
- return state === 2 ? responseHeadersString : null;
- },
-
- // Builds headers hashtable if needed
- getResponseHeader: function( key ) {
- var match;
- if ( state === 2 ) {
- if ( !responseHeaders ) {
- responseHeaders = {};
- while( ( match = rheaders.exec( responseHeadersString ) ) ) {
- responseHeaders[ match[1].toLowerCase() ] = match[ 2 ];
- }
- }
- match = responseHeaders[ key.toLowerCase() ];
- }
- return match === undefined ? null : match;
- },
-
- // Overrides response content-type header
- overrideMimeType: function( type ) {
- if ( !state ) {
- s.mimeType = type;
- }
- return this;
- },
-
- // Cancel the request
- abort: function( statusText ) {
- statusText = statusText || "abort";
- if ( transport ) {
- transport.abort( statusText );
- }
- done( 0, statusText );
- return this;
- }
- };
-
- // Callback for when everything is done
- // It is defined here because jslint complains if it is declared
- // at the end of the function (which would be more logical and readable)
- function done( status, nativeStatusText, responses, headers ) {
-
- // Called once
- if ( state === 2 ) {
- return;
- }
-
- // State is "done" now
- state = 2;
-
- // Clear timeout if it exists
- if ( timeoutTimer ) {
- clearTimeout( timeoutTimer );
- }
-
- // Dereference transport for early garbage collection
- // (no matter how long the jqXHR object will be used)
- transport = undefined;
-
- // Cache response headers
- responseHeadersString = headers || "";
-
- // Set readyState
- jqXHR.readyState = status > 0 ? 4 : 0;
-
- var isSuccess,
- success,
- error,
- statusText = nativeStatusText,
- response = responses ? ajaxHandleResponses( s, jqXHR, responses ) : undefined,
- lastModified,
- etag;
-
- // If successful, handle type chaining
- if ( status >= 200 && status < 300 || status === 304 ) {
-
- // Set the If-Modified-Since and/or If-None-Match header, if in ifModified mode.
- if ( s.ifModified ) {
-
- if ( ( lastModified = jqXHR.getResponseHeader( "Last-Modified" ) ) ) {
- jQuery.lastModified[ ifModifiedKey ] = lastModified;
- }
- if ( ( etag = jqXHR.getResponseHeader( "Etag" ) ) ) {
- jQuery.etag[ ifModifiedKey ] = etag;
- }
- }
-
- // If not modified
- if ( status === 304 ) {
-
- statusText = "notmodified";
- isSuccess = true;
-
- // If we have data
- } else {
-
- try {
- success = ajaxConvert( s, response );
- statusText = "success";
- isSuccess = true;
- } catch(e) {
- // We have a parsererror
- statusText = "parsererror";
- error = e;
- }
- }
- } else {
- // We extract error from statusText
- // then normalize statusText and status for non-aborts
- error = statusText;
- if ( !statusText || status ) {
- statusText = "error";
- if ( status < 0 ) {
- status = 0;
- }
- }
- }
-
- // Set data for the fake xhr object
- jqXHR.status = status;
- jqXHR.statusText = "" + ( nativeStatusText || statusText );
-
- // Success/Error
- if ( isSuccess ) {
- deferred.resolveWith( callbackContext, [ success, statusText, jqXHR ] );
- } else {
- deferred.rejectWith( callbackContext, [ jqXHR, statusText, error ] );
- }
-
- // Status-dependent callbacks
- jqXHR.statusCode( statusCode );
- statusCode = undefined;
-
- if ( fireGlobals ) {
- globalEventContext.trigger( "ajax" + ( isSuccess ? "Success" : "Error" ),
- [ jqXHR, s, isSuccess ? success : error ] );
- }
-
- // Complete
- completeDeferred.fireWith( callbackContext, [ jqXHR, statusText ] );
-
- if ( fireGlobals ) {
- globalEventContext.trigger( "ajaxComplete", [ jqXHR, s ] );
- // Handle the global AJAX counter
- if ( !( --jQuery.active ) ) {
- jQuery.event.trigger( "ajaxStop" );
- }
- }
- }
-
- // Attach deferreds
- deferred.promise( jqXHR );
- jqXHR.success = jqXHR.done;
- jqXHR.error = jqXHR.fail;
- jqXHR.complete = completeDeferred.add;
-
- // Status-dependent callbacks
- jqXHR.statusCode = function( map ) {
- if ( map ) {
- var tmp;
- if ( state < 2 ) {
- for ( tmp in map ) {
- statusCode[ tmp ] = [ statusCode[tmp], map[tmp] ];
- }
- } else {
- tmp = map[ jqXHR.status ];
- jqXHR.then( tmp, tmp );
- }
- }
- return this;
- };
-
- // Remove hash character (#7531: and string promotion)
- // Add protocol if not provided (#5866: IE7 issue with protocol-less urls)
- // We also use the url parameter if available
- s.url = ( ( url || s.url ) + "" ).replace( rhash, "" ).replace( rprotocol, ajaxLocParts[ 1 ] + "//" );
-
- // Extract dataTypes list
- s.dataTypes = jQuery.trim( s.dataType || "*" ).toLowerCase().split( rspacesAjax );
-
- // Determine if a cross-domain request is in order
- if ( s.crossDomain == null ) {
- parts = rurl.exec( s.url.toLowerCase() );
- s.crossDomain = !!( parts &&
- ( parts[ 1 ] != ajaxLocParts[ 1 ] || parts[ 2 ] != ajaxLocParts[ 2 ] ||
- ( parts[ 3 ] || ( parts[ 1 ] === "http:" ? 80 : 443 ) ) !=
- ( ajaxLocParts[ 3 ] || ( ajaxLocParts[ 1 ] === "http:" ? 80 : 443 ) ) )
- );
- }
-
- // Convert data if not already a string
- if ( s.data && s.processData && typeof s.data !== "string" ) {
- s.data = jQuery.param( s.data, s.traditional );
- }
-
- // Apply prefilters
- inspectPrefiltersOrTransports( prefilters, s, options, jqXHR );
-
- // If request was aborted inside a prefiler, stop there
- if ( state === 2 ) {
- return false;
- }
-
- // We can fire global events as of now if asked to
- fireGlobals = s.global;
-
- // Uppercase the type
- s.type = s.type.toUpperCase();
-
- // Determine if request has content
- s.hasContent = !rnoContent.test( s.type );
-
- // Watch for a new set of requests
- if ( fireGlobals && jQuery.active++ === 0 ) {
- jQuery.event.trigger( "ajaxStart" );
- }
-
- // More options handling for requests with no content
- if ( !s.hasContent ) {
-
- // If data is available, append data to url
- if ( s.data ) {
- s.url += ( rquery.test( s.url ) ? "&" : "?" ) + s.data;
- // #9682: remove data so that it's not used in an eventual retry
- delete s.data;
- }
-
- // Get ifModifiedKey before adding the anti-cache parameter
- ifModifiedKey = s.url;
-
- // Add anti-cache in url if needed
- if ( s.cache === false ) {
-
- var ts = jQuery.now(),
- // try replacing _= if it is there
- ret = s.url.replace( rts, "$1_=" + ts );
-
- // if nothing was replaced, add timestamp to the end
- s.url = ret + ( ( ret === s.url ) ? ( rquery.test( s.url ) ? "&" : "?" ) + "_=" + ts : "" );
- }
- }
-
- // Set the correct header, if data is being sent
- if ( s.data && s.hasContent && s.contentType !== false || options.contentType ) {
- jqXHR.setRequestHeader( "Content-Type", s.contentType );
- }
-
- // Set the If-Modified-Since and/or If-None-Match header, if in ifModified mode.
- if ( s.ifModified ) {
- ifModifiedKey = ifModifiedKey || s.url;
- if ( jQuery.lastModified[ ifModifiedKey ] ) {
- jqXHR.setRequestHeader( "If-Modified-Since", jQuery.lastModified[ ifModifiedKey ] );
- }
- if ( jQuery.etag[ ifModifiedKey ] ) {
- jqXHR.setRequestHeader( "If-None-Match", jQuery.etag[ ifModifiedKey ] );
- }
- }
-
- // Set the Accepts header for the server, depending on the dataType
- jqXHR.setRequestHeader(
- "Accept",
- s.dataTypes[ 0 ] && s.accepts[ s.dataTypes[0] ] ?
- s.accepts[ s.dataTypes[0] ] + ( s.dataTypes[ 0 ] !== "*" ? ", " + allTypes + "; q=0.01" : "" ) :
- s.accepts[ "*" ]
- );
-
- // Check for headers option
- for ( i in s.headers ) {
- jqXHR.setRequestHeader( i, s.headers[ i ] );
- }
-
- // Allow custom headers/mimetypes and early abort
- if ( s.beforeSend && ( s.beforeSend.call( callbackContext, jqXHR, s ) === false || state === 2 ) ) {
- // Abort if not done already
- jqXHR.abort();
- return false;
-
- }
-
- // Install callbacks on deferreds
- for ( i in { success: 1, error: 1, complete: 1 } ) {
- jqXHR[ i ]( s[ i ] );
- }
-
- // Get transport
- transport = inspectPrefiltersOrTransports( transports, s, options, jqXHR );
-
- // If no transport, we auto-abort
- if ( !transport ) {
- done( -1, "No Transport" );
- } else {
- jqXHR.readyState = 1;
- // Send global event
- if ( fireGlobals ) {
- globalEventContext.trigger( "ajaxSend", [ jqXHR, s ] );
- }
- // Timeout
- if ( s.async && s.timeout > 0 ) {
- timeoutTimer = setTimeout( function(){
- jqXHR.abort( "timeout" );
- }, s.timeout );
- }
-
- try {
- state = 1;
- transport.send( requestHeaders, done );
- } catch (e) {
- // Propagate exception as error if not done
- if ( state < 2 ) {
- done( -1, e );
- // Simply rethrow otherwise
- } else {
- throw e;
- }
- }
- }
-
- return jqXHR;
- },
-
- // Serialize an array of form elements or a set of
- // key/values into a query string
- param: function( a, traditional ) {
- var s = [],
- add = function( key, value ) {
- // If value is a function, invoke it and return its value
- value = jQuery.isFunction( value ) ? value() : value;
- s[ s.length ] = encodeURIComponent( key ) + "=" + encodeURIComponent( value );
- };
-
- // Set traditional to true for jQuery <= 1.3.2 behavior.
- if ( traditional === undefined ) {
- traditional = jQuery.ajaxSettings.traditional;
- }
-
- // If an array was passed in, assume that it is an array of form elements.
- if ( jQuery.isArray( a ) || ( a.jquery && !jQuery.isPlainObject( a ) ) ) {
- // Serialize the form elements
- jQuery.each( a, function() {
- add( this.name, this.value );
- });
-
- } else {
- // If traditional, encode the "old" way (the way 1.3.2 or older
- // did it), otherwise encode params recursively.
- for ( var prefix in a ) {
- buildParams( prefix, a[ prefix ], traditional, add );
- }
- }
-
- // Return the resulting serialization
- return s.join( "&" ).replace( r20, "+" );
- }
-});
-
-function buildParams( prefix, obj, traditional, add ) {
- if ( jQuery.isArray( obj ) ) {
- // Serialize array item.
- jQuery.each( obj, function( i, v ) {
- if ( traditional || rbracket.test( prefix ) ) {
- // Treat each array item as a scalar.
- add( prefix, v );
-
- } else {
- // If array item is non-scalar (array or object), encode its
- // numeric index to resolve deserialization ambiguity issues.
- // Note that rack (as of 1.0.0) can't currently deserialize
- // nested arrays properly, and attempting to do so may cause
- // a server error. Possible fixes are to modify rack's
- // deserialization algorithm or to provide an option or flag
- // to force array serialization to be shallow.
- buildParams( prefix + "[" + ( typeof v === "object" || jQuery.isArray(v) ? i : "" ) + "]", v, traditional, add );
- }
- });
-
- } else if ( !traditional && obj != null && typeof obj === "object" ) {
- // Serialize object item.
- for ( var name in obj ) {
- buildParams( prefix + "[" + name + "]", obj[ name ], traditional, add );
- }
-
- } else {
- // Serialize scalar item.
- add( prefix, obj );
- }
-}
-
-// This is still on the jQuery object... for now
-// Want to move this to jQuery.ajax some day
-jQuery.extend({
-
- // Counter for holding the number of active queries
- active: 0,
-
- // Last-Modified header cache for next request
- lastModified: {},
- etag: {}
-
-});
-
-/* Handles responses to an ajax request:
- * - sets all responseXXX fields accordingly
- * - finds the right dataType (mediates between content-type and expected dataType)
- * - returns the corresponding response
- */
-function ajaxHandleResponses( s, jqXHR, responses ) {
-
- var contents = s.contents,
- dataTypes = s.dataTypes,
- responseFields = s.responseFields,
- ct,
- type,
- finalDataType,
- firstDataType;
-
- // Fill responseXXX fields
- for ( type in responseFields ) {
- if ( type in responses ) {
- jqXHR[ responseFields[type] ] = responses[ type ];
- }
- }
-
- // Remove auto dataType and get content-type in the process
- while( dataTypes[ 0 ] === "*" ) {
- dataTypes.shift();
- if ( ct === undefined ) {
- ct = s.mimeType || jqXHR.getResponseHeader( "content-type" );
- }
- }
-
- // Check if we're dealing with a known content-type
- if ( ct ) {
- for ( type in contents ) {
- if ( contents[ type ] && contents[ type ].test( ct ) ) {
- dataTypes.unshift( type );
- break;
- }
- }
- }
-
- // Check to see if we have a response for the expected dataType
- if ( dataTypes[ 0 ] in responses ) {
- finalDataType = dataTypes[ 0 ];
- } else {
- // Try convertible dataTypes
- for ( type in responses ) {
- if ( !dataTypes[ 0 ] || s.converters[ type + " " + dataTypes[0] ] ) {
- finalDataType = type;
- break;
- }
- if ( !firstDataType ) {
- firstDataType = type;
- }
- }
- // Or just use first one
- finalDataType = finalDataType || firstDataType;
- }
-
- // If we found a dataType
- // We add the dataType to the list if needed
- // and return the corresponding response
- if ( finalDataType ) {
- if ( finalDataType !== dataTypes[ 0 ] ) {
- dataTypes.unshift( finalDataType );
- }
- return responses[ finalDataType ];
- }
-}
-
-// Chain conversions given the request and the original response
-function ajaxConvert( s, response ) {
-
- // Apply the dataFilter if provided
- if ( s.dataFilter ) {
- response = s.dataFilter( response, s.dataType );
- }
-
- var dataTypes = s.dataTypes,
- converters = {},
- i,
- key,
- length = dataTypes.length,
- tmp,
- // Current and previous dataTypes
- current = dataTypes[ 0 ],
- prev,
- // Conversion expression
- conversion,
- // Conversion function
- conv,
- // Conversion functions (transitive conversion)
- conv1,
- conv2;
-
- // For each dataType in the chain
- for ( i = 1; i < length; i++ ) {
-
- // Create converters map
- // with lowercased keys
- if ( i === 1 ) {
- for ( key in s.converters ) {
- if ( typeof key === "string" ) {
- converters[ key.toLowerCase() ] = s.converters[ key ];
- }
- }
- }
-
- // Get the dataTypes
- prev = current;
- current = dataTypes[ i ];
-
- // If current is auto dataType, update it to prev
- if ( current === "*" ) {
- current = prev;
- // If no auto and dataTypes are actually different
- } else if ( prev !== "*" && prev !== current ) {
-
- // Get the converter
- conversion = prev + " " + current;
- conv = converters[ conversion ] || converters[ "* " + current ];
-
- // If there is no direct converter, search transitively
- if ( !conv ) {
- conv2 = undefined;
- for ( conv1 in converters ) {
- tmp = conv1.split( " " );
- if ( tmp[ 0 ] === prev || tmp[ 0 ] === "*" ) {
- conv2 = converters[ tmp[1] + " " + current ];
- if ( conv2 ) {
- conv1 = converters[ conv1 ];
- if ( conv1 === true ) {
- conv = conv2;
- } else if ( conv2 === true ) {
- conv = conv1;
- }
- break;
- }
- }
- }
- }
- // If we found no converter, dispatch an error
- if ( !( conv || conv2 ) ) {
- jQuery.error( "No conversion from " + conversion.replace(" "," to ") );
- }
- // If found converter is not an equivalence
- if ( conv !== true ) {
- // Convert with 1 or 2 converters accordingly
- response = conv ? conv( response ) : conv2( conv1(response) );
- }
- }
- }
- return response;
-}
-
-
-
-
-var jsc = jQuery.now(),
- jsre = /(\=)\?(&|$)|\?\?/i;
-
-// Default jsonp settings
-jQuery.ajaxSetup({
- jsonp: "callback",
- jsonpCallback: function() {
- return jQuery.expando + "_" + ( jsc++ );
- }
-});
-
-// Detect, normalize options and install callbacks for jsonp requests
-jQuery.ajaxPrefilter( "json jsonp", function( s, originalSettings, jqXHR ) {
-
- var inspectData = s.contentType === "application/x-www-form-urlencoded" &&
- ( typeof s.data === "string" );
-
- if ( s.dataTypes[ 0 ] === "jsonp" ||
- s.jsonp !== false && ( jsre.test( s.url ) ||
- inspectData && jsre.test( s.data ) ) ) {
-
- var responseContainer,
- jsonpCallback = s.jsonpCallback =
- jQuery.isFunction( s.jsonpCallback ) ? s.jsonpCallback() : s.jsonpCallback,
- previous = window[ jsonpCallback ],
- url = s.url,
- data = s.data,
- replace = "$1" + jsonpCallback + "$2";
-
- if ( s.jsonp !== false ) {
- url = url.replace( jsre, replace );
- if ( s.url === url ) {
- if ( inspectData ) {
- data = data.replace( jsre, replace );
- }
- if ( s.data === data ) {
- // Add callback manually
- url += (/\?/.test( url ) ? "&" : "?") + s.jsonp + "=" + jsonpCallback;
- }
- }
- }
-
- s.url = url;
- s.data = data;
-
- // Install callback
- window[ jsonpCallback ] = function( response ) {
- responseContainer = [ response ];
- };
-
- // Clean-up function
- jqXHR.always(function() {
- // Set callback back to previous value
- window[ jsonpCallback ] = previous;
- // Call if it was a function and we have a response
- if ( responseContainer && jQuery.isFunction( previous ) ) {
- window[ jsonpCallback ]( responseContainer[ 0 ] );
- }
- });
-
- // Use data converter to retrieve json after script execution
- s.converters["script json"] = function() {
- if ( !responseContainer ) {
- jQuery.error( jsonpCallback + " was not called" );
- }
- return responseContainer[ 0 ];
- };
-
- // force json dataType
- s.dataTypes[ 0 ] = "json";
-
- // Delegate to script
- return "script";
- }
-});
-
-
-
-
-// Install script dataType
-jQuery.ajaxSetup({
- accepts: {
- script: "text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"
- },
- contents: {
- script: /javascript|ecmascript/
- },
- converters: {
- "text script": function( text ) {
- jQuery.globalEval( text );
- return text;
- }
- }
-});
-
-// Handle cache's special case and global
-jQuery.ajaxPrefilter( "script", function( s ) {
- if ( s.cache === undefined ) {
- s.cache = false;
- }
- if ( s.crossDomain ) {
- s.type = "GET";
- s.global = false;
- }
-});
-
-// Bind script tag hack transport
-jQuery.ajaxTransport( "script", function(s) {
-
- // This transport only deals with cross domain requests
- if ( s.crossDomain ) {
-
- var script,
- head = document.head || document.getElementsByTagName( "head" )[0] || document.documentElement;
-
- return {
-
- send: function( _, callback ) {
-
- script = document.createElement( "script" );
-
- script.async = "async";
-
- if ( s.scriptCharset ) {
- script.charset = s.scriptCharset;
- }
-
- script.src = s.url;
-
- // Attach handlers for all browsers
- script.onload = script.onreadystatechange = function( _, isAbort ) {
-
- if ( isAbort || !script.readyState || /loaded|complete/.test( script.readyState ) ) {
-
- // Handle memory leak in IE
- script.onload = script.onreadystatechange = null;
-
- // Remove the script
- if ( head && script.parentNode ) {
- head.removeChild( script );
- }
-
- // Dereference the script
- script = undefined;
-
- // Callback if not abort
- if ( !isAbort ) {
- callback( 200, "success" );
- }
- }
- };
- // Use insertBefore instead of appendChild to circumvent an IE6 bug.
- // This arises when a base node is used (#2709 and #4378).
- head.insertBefore( script, head.firstChild );
- },
-
- abort: function() {
- if ( script ) {
- script.onload( 0, 1 );
- }
- }
- };
- }
-});
-
-
-
-
-var // #5280: Internet Explorer will keep connections alive if we don't abort on unload
- xhrOnUnloadAbort = window.ActiveXObject ? function() {
- // Abort all pending requests
- for ( var key in xhrCallbacks ) {
- xhrCallbacks[ key ]( 0, 1 );
- }
- } : false,
- xhrId = 0,
- xhrCallbacks;
-
-// Functions to create xhrs
-function createStandardXHR() {
- try {
- return new window.XMLHttpRequest();
- } catch( e ) {}
-}
-
-function createActiveXHR() {
- try {
- return new window.ActiveXObject( "Microsoft.XMLHTTP" );
- } catch( e ) {}
-}
-
-// Create the request object
-// (This is still attached to ajaxSettings for backward compatibility)
-jQuery.ajaxSettings.xhr = window.ActiveXObject ?
- /* Microsoft failed to properly
- * implement the XMLHttpRequest in IE7 (can't request local files),
- * so we use the ActiveXObject when it is available
- * Additionally XMLHttpRequest can be disabled in IE7/IE8 so
- * we need a fallback.
- */
- function() {
- return !this.isLocal && createStandardXHR() || createActiveXHR();
- } :
- // For all other browsers, use the standard XMLHttpRequest object
- createStandardXHR;
-
-// Determine support properties
-(function( xhr ) {
- jQuery.extend( jQuery.support, {
- ajax: !!xhr,
- cors: !!xhr && ( "withCredentials" in xhr )
- });
-})( jQuery.ajaxSettings.xhr() );
-
-// Create transport if the browser can provide an xhr
-if ( jQuery.support.ajax ) {
-
- jQuery.ajaxTransport(function( s ) {
- // Cross domain only allowed if supported through XMLHttpRequest
- if ( !s.crossDomain || jQuery.support.cors ) {
-
- var callback;
-
- return {
- send: function( headers, complete ) {
-
- // Get a new xhr
- var xhr = s.xhr(),
- handle,
- i;
-
- // Open the socket
- // Passing null username, generates a login popup on Opera (#2865)
- if ( s.username ) {
- xhr.open( s.type, s.url, s.async, s.username, s.password );
- } else {
- xhr.open( s.type, s.url, s.async );
- }
-
- // Apply custom fields if provided
- if ( s.xhrFields ) {
- for ( i in s.xhrFields ) {
- xhr[ i ] = s.xhrFields[ i ];
- }
- }
-
- // Override mime type if needed
- if ( s.mimeType && xhr.overrideMimeType ) {
- xhr.overrideMimeType( s.mimeType );
- }
-
- // X-Requested-With header
- // For cross-domain requests, seeing as conditions for a preflight are
- // akin to a jigsaw puzzle, we simply never set it to be sure.
- // (it can always be set on a per-request basis or even using ajaxSetup)
- // For same-domain requests, won't change header if already provided.
- if ( !s.crossDomain && !headers["X-Requested-With"] ) {
- headers[ "X-Requested-With" ] = "XMLHttpRequest";
- }
-
- // Need an extra try/catch for cross domain requests in Firefox 3
- try {
- for ( i in headers ) {
- xhr.setRequestHeader( i, headers[ i ] );
- }
- } catch( _ ) {}
-
- // Do send the request
- // This may raise an exception which is actually
- // handled in jQuery.ajax (so no try/catch here)
- xhr.send( ( s.hasContent && s.data ) || null );
-
- // Listener
- callback = function( _, isAbort ) {
-
- var status,
- statusText,
- responseHeaders,
- responses,
- xml;
-
- // Firefox throws exceptions when accessing properties
- // of an xhr when a network error occured
- // http://helpful.knobs-dials.com/index.php/Component_returned_failure_code:_0x80040111_(NS_ERROR_NOT_AVAILABLE)
- try {
-
- // Was never called and is aborted or complete
- if ( callback && ( isAbort || xhr.readyState === 4 ) ) {
-
- // Only called once
- callback = undefined;
-
- // Do not keep as active anymore
- if ( handle ) {
- xhr.onreadystatechange = jQuery.noop;
- if ( xhrOnUnloadAbort ) {
- delete xhrCallbacks[ handle ];
- }
- }
-
- // If it's an abort
- if ( isAbort ) {
- // Abort it manually if needed
- if ( xhr.readyState !== 4 ) {
- xhr.abort();
- }
- } else {
- status = xhr.status;
- responseHeaders = xhr.getAllResponseHeaders();
- responses = {};
- xml = xhr.responseXML;
-
- // Construct response list
- if ( xml && xml.documentElement /* #4958 */ ) {
- responses.xml = xml;
- }
- responses.text = xhr.responseText;
-
- // Firefox throws an exception when accessing
- // statusText for faulty cross-domain requests
- try {
- statusText = xhr.statusText;
- } catch( e ) {
- // We normalize with Webkit giving an empty statusText
- statusText = "";
- }
-
- // Filter status for non standard behaviors
-
- // If the request is local and we have data: assume a success
- // (success with no data won't get notified, that's the best we
- // can do given current implementations)
- if ( !status && s.isLocal && !s.crossDomain ) {
- status = responses.text ? 200 : 404;
- // IE - #1450: sometimes returns 1223 when it should be 204
- } else if ( status === 1223 ) {
- status = 204;
- }
- }
- }
- } catch( firefoxAccessException ) {
- if ( !isAbort ) {
- complete( -1, firefoxAccessException );
- }
- }
-
- // Call complete if needed
- if ( responses ) {
- complete( status, statusText, responses, responseHeaders );
- }
- };
-
- // if we're in sync mode or it's in cache
- // and has been retrieved directly (IE6 & IE7)
- // we need to manually fire the callback
- if ( !s.async || xhr.readyState === 4 ) {
- callback();
- } else {
- handle = ++xhrId;
- if ( xhrOnUnloadAbort ) {
- // Create the active xhrs callbacks list if needed
- // and attach the unload handler
- if ( !xhrCallbacks ) {
- xhrCallbacks = {};
- jQuery( window ).unload( xhrOnUnloadAbort );
- }
- // Add to list of active xhrs callbacks
- xhrCallbacks[ handle ] = callback;
- }
- xhr.onreadystatechange = callback;
- }
- },
-
- abort: function() {
- if ( callback ) {
- callback(0,1);
- }
- }
- };
- }
- });
-}
-
-
-
-
-var elemdisplay = {},
- iframe, iframeDoc,
- rfxtypes = /^(?:toggle|show|hide)$/,
- rfxnum = /^([+\-]=)?([\d+.\-]+)([a-z%]*)$/i,
- timerId,
- fxAttrs = [
- // height animations
- [ "height", "marginTop", "marginBottom", "paddingTop", "paddingBottom" ],
- // width animations
- [ "width", "marginLeft", "marginRight", "paddingLeft", "paddingRight" ],
- // opacity animations
- [ "opacity" ]
- ],
- fxNow;
-
-jQuery.fn.extend({
- show: function( speed, easing, callback ) {
- var elem, display;
-
- if ( speed || speed === 0 ) {
- return this.animate( genFx("show", 3), speed, easing, callback );
-
- } else {
- for ( var i = 0, j = this.length; i < j; i++ ) {
- elem = this[ i ];
-
- if ( elem.style ) {
- display = elem.style.display;
-
- // Reset the inline display of this element to learn if it is
- // being hidden by cascaded rules or not
- if ( !jQuery._data(elem, "olddisplay") && display === "none" ) {
- display = elem.style.display = "";
- }
-
- // Set elements which have been overridden with display: none
- // in a stylesheet to whatever the default browser style is
- // for such an element
- if ( display === "" && jQuery.css(elem, "display") === "none" ) {
- jQuery._data( elem, "olddisplay", defaultDisplay(elem.nodeName) );
- }
- }
- }
-
- // Set the display of most of the elements in a second loop
- // to avoid the constant reflow
- for ( i = 0; i < j; i++ ) {
- elem = this[ i ];
-
- if ( elem.style ) {
- display = elem.style.display;
-
- if ( display === "" || display === "none" ) {
- elem.style.display = jQuery._data( elem, "olddisplay" ) || "";
- }
- }
- }
-
- return this;
- }
- },
-
- hide: function( speed, easing, callback ) {
- if ( speed || speed === 0 ) {
- return this.animate( genFx("hide", 3), speed, easing, callback);
-
- } else {
- var elem, display,
- i = 0,
- j = this.length;
-
- for ( ; i < j; i++ ) {
- elem = this[i];
- if ( elem.style ) {
- display = jQuery.css( elem, "display" );
-
- if ( display !== "none" && !jQuery._data( elem, "olddisplay" ) ) {
- jQuery._data( elem, "olddisplay", display );
- }
- }
- }
-
- // Set the display of the elements in a second loop
- // to avoid the constant reflow
- for ( i = 0; i < j; i++ ) {
- if ( this[i].style ) {
- this[i].style.display = "none";
- }
- }
-
- return this;
- }
- },
-
- // Save the old toggle function
- _toggle: jQuery.fn.toggle,
-
- toggle: function( fn, fn2, callback ) {
- var bool = typeof fn === "boolean";
-
- if ( jQuery.isFunction(fn) && jQuery.isFunction(fn2) ) {
- this._toggle.apply( this, arguments );
-
- } else if ( fn == null || bool ) {
- this.each(function() {
- var state = bool ? fn : jQuery(this).is(":hidden");
- jQuery(this)[ state ? "show" : "hide" ]();
- });
-
- } else {
- this.animate(genFx("toggle", 3), fn, fn2, callback);
- }
-
- return this;
- },
-
- fadeTo: function( speed, to, easing, callback ) {
- return this.filter(":hidden").css("opacity", 0).show().end()
- .animate({opacity: to}, speed, easing, callback);
- },
-
- animate: function( prop, speed, easing, callback ) {
- var optall = jQuery.speed( speed, easing, callback );
-
- if ( jQuery.isEmptyObject( prop ) ) {
- return this.each( optall.complete, [ false ] );
- }
-
- // Do not change referenced properties as per-property easing will be lost
- prop = jQuery.extend( {}, prop );
-
- function doAnimation() {
- // XXX 'this' does not always have a nodeName when running the
- // test suite
-
- if ( optall.queue === false ) {
- jQuery._mark( this );
- }
-
- var opt = jQuery.extend( {}, optall ),
- isElement = this.nodeType === 1,
- hidden = isElement && jQuery(this).is(":hidden"),
- name, val, p, e,
- parts, start, end, unit,
- method;
-
- // will store per property easing and be used to determine when an animation is complete
- opt.animatedProperties = {};
-
- for ( p in prop ) {
-
- // property name normalization
- name = jQuery.camelCase( p );
- if ( p !== name ) {
- prop[ name ] = prop[ p ];
- delete prop[ p ];
- }
-
- val = prop[ name ];
-
- // easing resolution: per property > opt.specialEasing > opt.easing > 'swing' (default)
- if ( jQuery.isArray( val ) ) {
- opt.animatedProperties[ name ] = val[ 1 ];
- val = prop[ name ] = val[ 0 ];
- } else {
- opt.animatedProperties[ name ] = opt.specialEasing && opt.specialEasing[ name ] || opt.easing || 'swing';
- }
-
- if ( val === "hide" && hidden || val === "show" && !hidden ) {
- return opt.complete.call( this );
- }
-
- if ( isElement && ( name === "height" || name === "width" ) ) {
- // Make sure that nothing sneaks out
- // Record all 3 overflow attributes because IE does not
- // change the overflow attribute when overflowX and
- // overflowY are set to the same value
- opt.overflow = [ this.style.overflow, this.style.overflowX, this.style.overflowY ];
-
- // Set display property to inline-block for height/width
- // animations on inline elements that are having width/height animated
- if ( jQuery.css( this, "display" ) === "inline" &&
- jQuery.css( this, "float" ) === "none" ) {
-
- // inline-level elements accept inline-block;
- // block-level elements need to be inline with layout
- if ( !jQuery.support.inlineBlockNeedsLayout || defaultDisplay( this.nodeName ) === "inline" ) {
- this.style.display = "inline-block";
-
- } else {
- this.style.zoom = 1;
- }
- }
- }
- }
-
- if ( opt.overflow != null ) {
- this.style.overflow = "hidden";
- }
-
- for ( p in prop ) {
- e = new jQuery.fx( this, opt, p );
- val = prop[ p ];
-
- if ( rfxtypes.test( val ) ) {
-
- // Tracks whether to show or hide based on private
- // data attached to the element
- method = jQuery._data( this, "toggle" + p ) || ( val === "toggle" ? hidden ? "show" : "hide" : 0 );
- if ( method ) {
- jQuery._data( this, "toggle" + p, method === "show" ? "hide" : "show" );
- e[ method ]();
- } else {
- e[ val ]();
- }
-
- } else {
- parts = rfxnum.exec( val );
- start = e.cur();
-
- if ( parts ) {
- end = parseFloat( parts[2] );
- unit = parts[3] || ( jQuery.cssNumber[ p ] ? "" : "px" );
-
- // We need to compute starting value
- if ( unit !== "px" ) {
- jQuery.style( this, p, (end || 1) + unit);
- start = ( (end || 1) / e.cur() ) * start;
- jQuery.style( this, p, start + unit);
- }
-
- // If a +=/-= token was provided, we're doing a relative animation
- if ( parts[1] ) {
- end = ( (parts[ 1 ] === "-=" ? -1 : 1) * end ) + start;
- }
-
- e.custom( start, end, unit );
-
- } else {
- e.custom( start, val, "" );
- }
- }
- }
-
- // For JS strict compliance
- return true;
- }
-
- return optall.queue === false ?
- this.each( doAnimation ) :
- this.queue( optall.queue, doAnimation );
- },
-
- stop: function( type, clearQueue, gotoEnd ) {
- if ( typeof type !== "string" ) {
- gotoEnd = clearQueue;
- clearQueue = type;
- type = undefined;
- }
- if ( clearQueue && type !== false ) {
- this.queue( type || "fx", [] );
- }
-
- return this.each(function() {
- var index,
- hadTimers = false,
- timers = jQuery.timers,
- data = jQuery._data( this );
-
- // clear marker counters if we know they won't be
- if ( !gotoEnd ) {
- jQuery._unmark( true, this );
- }
-
- function stopQueue( elem, data, index ) {
- var hooks = data[ index ];
- jQuery.removeData( elem, index, true );
- hooks.stop( gotoEnd );
- }
-
- if ( type == null ) {
- for ( index in data ) {
- if ( data[ index ] && data[ index ].stop && index.indexOf(".run") === index.length - 4 ) {
- stopQueue( this, data, index );
- }
- }
- } else if ( data[ index = type + ".run" ] && data[ index ].stop ){
- stopQueue( this, data, index );
- }
-
- for ( index = timers.length; index--; ) {
- if ( timers[ index ].elem === this && (type == null || timers[ index ].queue === type) ) {
- if ( gotoEnd ) {
-
- // force the next step to be the last
- timers[ index ]( true );
- } else {
- timers[ index ].saveState();
- }
- hadTimers = true;
- timers.splice( index, 1 );
- }
- }
-
- // start the next in the queue if the last step wasn't forced
- // timers currently will call their complete callbacks, which will dequeue
- // but only if they were gotoEnd
- if ( !( gotoEnd && hadTimers ) ) {
- jQuery.dequeue( this, type );
- }
- });
- }
-
-});
-
-// Animations created synchronously will run synchronously
-function createFxNow() {
- setTimeout( clearFxNow, 0 );
- return ( fxNow = jQuery.now() );
-}
-
-function clearFxNow() {
- fxNow = undefined;
-}
-
-// Generate parameters to create a standard animation
-function genFx( type, num ) {
- var obj = {};
-
- jQuery.each( fxAttrs.concat.apply([], fxAttrs.slice( 0, num )), function() {
- obj[ this ] = type;
- });
-
- return obj;
-}
-
-// Generate shortcuts for custom animations
-jQuery.each({
- slideDown: genFx( "show", 1 ),
- slideUp: genFx( "hide", 1 ),
- slideToggle: genFx( "toggle", 1 ),
- fadeIn: { opacity: "show" },
- fadeOut: { opacity: "hide" },
- fadeToggle: { opacity: "toggle" }
-}, function( name, props ) {
- jQuery.fn[ name ] = function( speed, easing, callback ) {
- return this.animate( props, speed, easing, callback );
- };
-});
-
-jQuery.extend({
- speed: function( speed, easing, fn ) {
- var opt = speed && typeof speed === "object" ? jQuery.extend( {}, speed ) : {
- complete: fn || !fn && easing ||
- jQuery.isFunction( speed ) && speed,
- duration: speed,
- easing: fn && easing || easing && !jQuery.isFunction( easing ) && easing
- };
-
- opt.duration = jQuery.fx.off ? 0 : typeof opt.duration === "number" ? opt.duration :
- opt.duration in jQuery.fx.speeds ? jQuery.fx.speeds[ opt.duration ] : jQuery.fx.speeds._default;
-
- // normalize opt.queue - true/undefined/null -> "fx"
- if ( opt.queue == null || opt.queue === true ) {
- opt.queue = "fx";
- }
-
- // Queueing
- opt.old = opt.complete;
-
- opt.complete = function( noUnmark ) {
- if ( jQuery.isFunction( opt.old ) ) {
- opt.old.call( this );
- }
-
- if ( opt.queue ) {
- jQuery.dequeue( this, opt.queue );
- } else if ( noUnmark !== false ) {
- jQuery._unmark( this );
- }
- };
-
- return opt;
- },
-
- easing: {
- linear: function( p, n, firstNum, diff ) {
- return firstNum + diff * p;
- },
- swing: function( p, n, firstNum, diff ) {
- return ( ( -Math.cos( p*Math.PI ) / 2 ) + 0.5 ) * diff + firstNum;
- }
- },
-
- timers: [],
-
- fx: function( elem, options, prop ) {
- this.options = options;
- this.elem = elem;
- this.prop = prop;
-
- options.orig = options.orig || {};
- }
-
-});
-
-jQuery.fx.prototype = {
- // Simple function for setting a style value
- update: function() {
- if ( this.options.step ) {
- this.options.step.call( this.elem, this.now, this );
- }
-
- ( jQuery.fx.step[ this.prop ] || jQuery.fx.step._default )( this );
- },
-
- // Get the current size
- cur: function() {
- if ( this.elem[ this.prop ] != null && (!this.elem.style || this.elem.style[ this.prop ] == null) ) {
- return this.elem[ this.prop ];
- }
-
- var parsed,
- r = jQuery.css( this.elem, this.prop );
- // Empty strings, null, undefined and "auto" are converted to 0,
- // complex values such as "rotate(1rad)" are returned as is,
- // simple values such as "10px" are parsed to Float.
- return isNaN( parsed = parseFloat( r ) ) ? !r || r === "auto" ? 0 : r : parsed;
- },
-
- // Start an animation from one number to another
- custom: function( from, to, unit ) {
- var self = this,
- fx = jQuery.fx;
-
- this.startTime = fxNow || createFxNow();
- this.end = to;
- this.now = this.start = from;
- this.pos = this.state = 0;
- this.unit = unit || this.unit || ( jQuery.cssNumber[ this.prop ] ? "" : "px" );
-
- function t( gotoEnd ) {
- return self.step( gotoEnd );
- }
-
- t.queue = this.options.queue;
- t.elem = this.elem;
- t.saveState = function() {
- if ( self.options.hide && jQuery._data( self.elem, "fxshow" + self.prop ) === undefined ) {
- jQuery._data( self.elem, "fxshow" + self.prop, self.start );
- }
- };
-
- if ( t() && jQuery.timers.push(t) && !timerId ) {
- timerId = setInterval( fx.tick, fx.interval );
- }
- },
-
- // Simple 'show' function
- show: function() {
- var dataShow = jQuery._data( this.elem, "fxshow" + this.prop );
-
- // Remember where we started, so that we can go back to it later
- this.options.orig[ this.prop ] = dataShow || jQuery.style( this.elem, this.prop );
- this.options.show = true;
-
- // Begin the animation
- // Make sure that we start at a small width/height to avoid any flash of content
- if ( dataShow !== undefined ) {
- // This show is picking up where a previous hide or show left off
- this.custom( this.cur(), dataShow );
- } else {
- this.custom( this.prop === "width" || this.prop === "height" ? 1 : 0, this.cur() );
- }
-
- // Start by showing the element
- jQuery( this.elem ).show();
- },
-
- // Simple 'hide' function
- hide: function() {
- // Remember where we started, so that we can go back to it later
- this.options.orig[ this.prop ] = jQuery._data( this.elem, "fxshow" + this.prop ) || jQuery.style( this.elem, this.prop );
- this.options.hide = true;
-
- // Begin the animation
- this.custom( this.cur(), 0 );
- },
-
- // Each step of an animation
- step: function( gotoEnd ) {
- var p, n, complete,
- t = fxNow || createFxNow(),
- done = true,
- elem = this.elem,
- options = this.options;
-
- if ( gotoEnd || t >= options.duration + this.startTime ) {
- this.now = this.end;
- this.pos = this.state = 1;
- this.update();
-
- options.animatedProperties[ this.prop ] = true;
-
- for ( p in options.animatedProperties ) {
- if ( options.animatedProperties[ p ] !== true ) {
- done = false;
- }
- }
-
- if ( done ) {
- // Reset the overflow
- if ( options.overflow != null && !jQuery.support.shrinkWrapBlocks ) {
-
- jQuery.each( [ "", "X", "Y" ], function( index, value ) {
- elem.style[ "overflow" + value ] = options.overflow[ index ];
- });
- }
-
- // Hide the element if the "hide" operation was done
- if ( options.hide ) {
- jQuery( elem ).hide();
- }
-
- // Reset the properties, if the item has been hidden or shown
- if ( options.hide || options.show ) {
- for ( p in options.animatedProperties ) {
- jQuery.style( elem, p, options.orig[ p ] );
- jQuery.removeData( elem, "fxshow" + p, true );
- // Toggle data is no longer needed
- jQuery.removeData( elem, "toggle" + p, true );
- }
- }
-
- // Execute the complete function
- // in the event that the complete function throws an exception
- // we must ensure it won't be called twice. #5684
-
- complete = options.complete;
- if ( complete ) {
-
- options.complete = false;
- complete.call( elem );
- }
- }
-
- return false;
-
- } else {
- // classical easing cannot be used with an Infinity duration
- if ( options.duration == Infinity ) {
- this.now = t;
- } else {
- n = t - this.startTime;
- this.state = n / options.duration;
-
- // Perform the easing function, defaults to swing
- this.pos = jQuery.easing[ options.animatedProperties[this.prop] ]( this.state, n, 0, 1, options.duration );
- this.now = this.start + ( (this.end - this.start) * this.pos );
- }
- // Perform the next step of the animation
- this.update();
- }
-
- return true;
- }
-};
-
-jQuery.extend( jQuery.fx, {
- tick: function() {
- var timer,
- timers = jQuery.timers,
- i = 0;
-
- for ( ; i < timers.length; i++ ) {
- timer = timers[ i ];
- // Checks the timer has not already been removed
- if ( !timer() && timers[ i ] === timer ) {
- timers.splice( i--, 1 );
- }
- }
-
- if ( !timers.length ) {
- jQuery.fx.stop();
- }
- },
-
- interval: 13,
-
- stop: function() {
- clearInterval( timerId );
- timerId = null;
- },
-
- speeds: {
- slow: 600,
- fast: 200,
- // Default speed
- _default: 400
- },
-
- step: {
- opacity: function( fx ) {
- jQuery.style( fx.elem, "opacity", fx.now );
- },
-
- _default: function( fx ) {
- if ( fx.elem.style && fx.elem.style[ fx.prop ] != null ) {
- fx.elem.style[ fx.prop ] = fx.now + fx.unit;
- } else {
- fx.elem[ fx.prop ] = fx.now;
- }
- }
- }
-});
-
-// Adds width/height step functions
-// Do not set anything below 0
-jQuery.each([ "width", "height" ], function( i, prop ) {
- jQuery.fx.step[ prop ] = function( fx ) {
- jQuery.style( fx.elem, prop, Math.max(0, fx.now) + fx.unit );
- };
-});
-
-if ( jQuery.expr && jQuery.expr.filters ) {
- jQuery.expr.filters.animated = function( elem ) {
- return jQuery.grep(jQuery.timers, function( fn ) {
- return elem === fn.elem;
- }).length;
- };
-}
-
-// Try to restore the default display value of an element
-function defaultDisplay( nodeName ) {
-
- if ( !elemdisplay[ nodeName ] ) {
-
- var body = document.body,
- elem = jQuery( "<" + nodeName + ">" ).appendTo( body ),
- display = elem.css( "display" );
- elem.remove();
-
- // If the simple way fails,
- // get element's real default display by attaching it to a temp iframe
- if ( display === "none" || display === "" ) {
- // No iframe to use yet, so create it
- if ( !iframe ) {
- iframe = document.createElement( "iframe" );
- iframe.frameBorder = iframe.width = iframe.height = 0;
- }
-
- body.appendChild( iframe );
-
- // Create a cacheable copy of the iframe document on first call.
- // IE and Opera will allow us to reuse the iframeDoc without re-writing the fake HTML
- // document to it; WebKit & Firefox won't allow reusing the iframe document.
- if ( !iframeDoc || !iframe.createElement ) {
- iframeDoc = ( iframe.contentWindow || iframe.contentDocument ).document;
- iframeDoc.write( ( document.compatMode === "CSS1Compat" ? "<!doctype html>" : "" ) + "<html><body>" );
- iframeDoc.close();
- }
-
- elem = iframeDoc.createElement( nodeName );
-
- iframeDoc.body.appendChild( elem );
-
- display = jQuery.css( elem, "display" );
- body.removeChild( iframe );
- }
-
- // Store the correct default display
- elemdisplay[ nodeName ] = display;
- }
-
- return elemdisplay[ nodeName ];
-}
-
-
-
-
-var rtable = /^t(?:able|d|h)$/i,
- rroot = /^(?:body|html)$/i;
-
-if ( "getBoundingClientRect" in document.documentElement ) {
- jQuery.fn.offset = function( options ) {
- var elem = this[0], box;
-
- if ( options ) {
- return this.each(function( i ) {
- jQuery.offset.setOffset( this, options, i );
- });
- }
-
- if ( !elem || !elem.ownerDocument ) {
- return null;
- }
-
- if ( elem === elem.ownerDocument.body ) {
- return jQuery.offset.bodyOffset( elem );
- }
-
- try {
- box = elem.getBoundingClientRect();
- } catch(e) {}
-
- var doc = elem.ownerDocument,
- docElem = doc.documentElement;
-
- // Make sure we're not dealing with a disconnected DOM node
- if ( !box || !jQuery.contains( docElem, elem ) ) {
- return box ? { top: box.top, left: box.left } : { top: 0, left: 0 };
- }
-
- var body = doc.body,
- win = getWindow(doc),
- clientTop = docElem.clientTop || body.clientTop || 0,
- clientLeft = docElem.clientLeft || body.clientLeft || 0,
- scrollTop = win.pageYOffset || jQuery.support.boxModel && docElem.scrollTop || body.scrollTop,
- scrollLeft = win.pageXOffset || jQuery.support.boxModel && docElem.scrollLeft || body.scrollLeft,
- top = box.top + scrollTop - clientTop,
- left = box.left + scrollLeft - clientLeft;
-
- return { top: top, left: left };
- };
-
-} else {
- jQuery.fn.offset = function( options ) {
- var elem = this[0];
-
- if ( options ) {
- return this.each(function( i ) {
- jQuery.offset.setOffset( this, options, i );
- });
- }
-
- if ( !elem || !elem.ownerDocument ) {
- return null;
- }
-
- if ( elem === elem.ownerDocument.body ) {
- return jQuery.offset.bodyOffset( elem );
- }
-
- var computedStyle,
- offsetParent = elem.offsetParent,
- prevOffsetParent = elem,
- doc = elem.ownerDocument,
- docElem = doc.documentElement,
- body = doc.body,
- defaultView = doc.defaultView,
- prevComputedStyle = defaultView ? defaultView.getComputedStyle( elem, null ) : elem.currentStyle,
- top = elem.offsetTop,
- left = elem.offsetLeft;
-
- while ( (elem = elem.parentNode) && elem !== body && elem !== docElem ) {
- if ( jQuery.support.fixedPosition && prevComputedStyle.position === "fixed" ) {
- break;
- }
-
- computedStyle = defaultView ? defaultView.getComputedStyle(elem, null) : elem.currentStyle;
- top -= elem.scrollTop;
- left -= elem.scrollLeft;
-
- if ( elem === offsetParent ) {
- top += elem.offsetTop;
- left += elem.offsetLeft;
-
- if ( jQuery.support.doesNotAddBorder && !(jQuery.support.doesAddBorderForTableAndCells && rtable.test(elem.nodeName)) ) {
- top += parseFloat( computedStyle.borderTopWidth ) || 0;
- left += parseFloat( computedStyle.borderLeftWidth ) || 0;
- }
-
- prevOffsetParent = offsetParent;
- offsetParent = elem.offsetParent;
- }
-
- if ( jQuery.support.subtractsBorderForOverflowNotVisible && computedStyle.overflow !== "visible" ) {
- top += parseFloat( computedStyle.borderTopWidth ) || 0;
- left += parseFloat( computedStyle.borderLeftWidth ) || 0;
- }
-
- prevComputedStyle = computedStyle;
- }
-
- if ( prevComputedStyle.position === "relative" || prevComputedStyle.position === "static" ) {
- top += body.offsetTop;
- left += body.offsetLeft;
- }
-
- if ( jQuery.support.fixedPosition && prevComputedStyle.position === "fixed" ) {
- top += Math.max( docElem.scrollTop, body.scrollTop );
- left += Math.max( docElem.scrollLeft, body.scrollLeft );
- }
-
- return { top: top, left: left };
- };
-}
-
-jQuery.offset = {
-
- bodyOffset: function( body ) {
- var top = body.offsetTop,
- left = body.offsetLeft;
-
- if ( jQuery.support.doesNotIncludeMarginInBodyOffset ) {
- top += parseFloat( jQuery.css(body, "marginTop") ) || 0;
- left += parseFloat( jQuery.css(body, "marginLeft") ) || 0;
- }
-
- return { top: top, left: left };
- },
-
- setOffset: function( elem, options, i ) {
- var position = jQuery.css( elem, "position" );
-
- // set position first, in-case top/left are set even on static elem
- if ( position === "static" ) {
- elem.style.position = "relative";
- }
-
- var curElem = jQuery( elem ),
- curOffset = curElem.offset(),
- curCSSTop = jQuery.css( elem, "top" ),
- curCSSLeft = jQuery.css( elem, "left" ),
- calculatePosition = ( position === "absolute" || position === "fixed" ) && jQuery.inArray("auto", [curCSSTop, curCSSLeft]) > -1,
- props = {}, curPosition = {}, curTop, curLeft;
-
- // need to be able to calculate position if either top or left is auto and position is either absolute or fixed
- if ( calculatePosition ) {
- curPosition = curElem.position();
- curTop = curPosition.top;
- curLeft = curPosition.left;
- } else {
- curTop = parseFloat( curCSSTop ) || 0;
- curLeft = parseFloat( curCSSLeft ) || 0;
- }
-
- if ( jQuery.isFunction( options ) ) {
- options = options.call( elem, i, curOffset );
- }
-
- if ( options.top != null ) {
- props.top = ( options.top - curOffset.top ) + curTop;
- }
- if ( options.left != null ) {
- props.left = ( options.left - curOffset.left ) + curLeft;
- }
-
- if ( "using" in options ) {
- options.using.call( elem, props );
- } else {
- curElem.css( props );
- }
- }
-};
-
-
-jQuery.fn.extend({
-
- position: function() {
- if ( !this[0] ) {
- return null;
- }
-
- var elem = this[0],
-
- // Get *real* offsetParent
- offsetParent = this.offsetParent(),
-
- // Get correct offsets
- offset = this.offset(),
- parentOffset = rroot.test(offsetParent[0].nodeName) ? { top: 0, left: 0 } : offsetParent.offset();
-
- // Subtract element margins
- // note: when an element has margin: auto the offsetLeft and marginLeft
- // are the same in Safari causing offset.left to incorrectly be 0
- offset.top -= parseFloat( jQuery.css(elem, "marginTop") ) || 0;
- offset.left -= parseFloat( jQuery.css(elem, "marginLeft") ) || 0;
-
- // Add offsetParent borders
- parentOffset.top += parseFloat( jQuery.css(offsetParent[0], "borderTopWidth") ) || 0;
- parentOffset.left += parseFloat( jQuery.css(offsetParent[0], "borderLeftWidth") ) || 0;
-
- // Subtract the two offsets
- return {
- top: offset.top - parentOffset.top,
- left: offset.left - parentOffset.left
- };
- },
-
- offsetParent: function() {
- return this.map(function() {
- var offsetParent = this.offsetParent || document.body;
- while ( offsetParent && (!rroot.test(offsetParent.nodeName) && jQuery.css(offsetParent, "position") === "static") ) {
- offsetParent = offsetParent.offsetParent;
- }
- return offsetParent;
- });
- }
-});
-
-
-// Create scrollLeft and scrollTop methods
-jQuery.each( ["Left", "Top"], function( i, name ) {
- var method = "scroll" + name;
-
- jQuery.fn[ method ] = function( val ) {
- var elem, win;
-
- if ( val === undefined ) {
- elem = this[ 0 ];
-
- if ( !elem ) {
- return null;
- }
-
- win = getWindow( elem );
-
- // Return the scroll offset
- return win ? ("pageXOffset" in win) ? win[ i ? "pageYOffset" : "pageXOffset" ] :
- jQuery.support.boxModel && win.document.documentElement[ method ] ||
- win.document.body[ method ] :
- elem[ method ];
- }
-
- // Set the scroll offset
- return this.each(function() {
- win = getWindow( this );
-
- if ( win ) {
- win.scrollTo(
- !i ? val : jQuery( win ).scrollLeft(),
- i ? val : jQuery( win ).scrollTop()
- );
-
- } else {
- this[ method ] = val;
- }
- });
- };
-});
-
-function getWindow( elem ) {
- return jQuery.isWindow( elem ) ?
- elem :
- elem.nodeType === 9 ?
- elem.defaultView || elem.parentWindow :
- false;
-}
-
-
-
-
-// Create width, height, innerHeight, innerWidth, outerHeight and outerWidth methods
-jQuery.each([ "Height", "Width" ], function( i, name ) {
-
- var type = name.toLowerCase();
-
- // innerHeight and innerWidth
- jQuery.fn[ "inner" + name ] = function() {
- var elem = this[0];
- return elem ?
- elem.style ?
- parseFloat( jQuery.css( elem, type, "padding" ) ) :
- this[ type ]() :
- null;
- };
-
- // outerHeight and outerWidth
- jQuery.fn[ "outer" + name ] = function( margin ) {
- var elem = this[0];
- return elem ?
- elem.style ?
- parseFloat( jQuery.css( elem, type, margin ? "margin" : "border" ) ) :
- this[ type ]() :
- null;
- };
-
- jQuery.fn[ type ] = function( size ) {
- // Get window width or height
- var elem = this[0];
- if ( !elem ) {
- return size == null ? null : this;
- }
-
- if ( jQuery.isFunction( size ) ) {
- return this.each(function( i ) {
- var self = jQuery( this );
- self[ type ]( size.call( this, i, self[ type ]() ) );
- });
- }
-
- if ( jQuery.isWindow( elem ) ) {
- // Everyone else use document.documentElement or document.body depending on Quirks vs Standards mode
- // 3rd condition allows Nokia support, as it supports the docElem prop but not CSS1Compat
- var docElemProp = elem.document.documentElement[ "client" + name ],
- body = elem.document.body;
- return elem.document.compatMode === "CSS1Compat" && docElemProp ||
- body && body[ "client" + name ] || docElemProp;
-
- // Get document width or height
- } else if ( elem.nodeType === 9 ) {
- // Either scroll[Width/Height] or offset[Width/Height], whichever is greater
- return Math.max(
- elem.documentElement["client" + name],
- elem.body["scroll" + name], elem.documentElement["scroll" + name],
- elem.body["offset" + name], elem.documentElement["offset" + name]
- );
-
- // Get or set width or height on the element
- } else if ( size === undefined ) {
- var orig = jQuery.css( elem, type ),
- ret = parseFloat( orig );
-
- return jQuery.isNumeric( ret ) ? ret : orig;
-
- // Set the width or height on the element (default to pixels if value is unitless)
- } else {
- return this.css( type, typeof size === "string" ? size : size + "px" );
- }
- };
-
-});
-
-
-
-
-// Expose jQuery to the global object
-window.jQuery = window.$ = jQuery;
-
-// Expose jQuery as an AMD module, but only for AMD loaders that
-// understand the issues with loading multiple versions of jQuery
-// in a page that all might call define(). The loader will indicate
-// they have special allowances for multiple jQuery versions by
-// specifying define.amd.jQuery = true. Register as a named module,
-// since jQuery can be concatenated with other files that may use define,
-// but not use a proper concatenation script that understands anonymous
-// AMD modules. A named AMD is safest and most robust way to register.
-// Lowercase jquery is used because AMD module names are derived from
-// file names, and jQuery is normally delivered in a lowercase file name.
-// Do this after creating the global so that if an AMD module wants to call
-// noConflict to hide this version of jQuery, it will work.
-if ( typeof define === "function" && define.amd && define.amd.jQuery ) {
- define( "jquery", [], function () { return jQuery; } );
-}
-
-
-
-})( window );
diff --git a/library/jslider/js/jquery.dependClass-0.1.js b/library/jslider/js/jquery.dependClass-0.1.js
deleted file mode 100644
index 2636f6673..000000000
--- a/library/jslider/js/jquery.dependClass-0.1.js
+++ /dev/null
@@ -1,56 +0,0 @@
-/**
- * jquery.dependClass - Attach class based on first class in list of current element
- *
- * Written by
- * Egor Khmelev (hmelyoff@gmail.com)
- *
- * Licensed under the MIT (MIT-LICENSE.txt).
- *
- * @author Egor Khmelev
- * @version 0.1.0-BETA ($Id$)
- *
- **/
-
-(function($) {
- $.baseClass = function(obj){
- obj = $(obj);
- return obj.get(0).className.match(/([^ ]+)/)[1];
- };
-
- $.fn.addDependClass = function(className, delimiter){
- var options = {
- delimiter: delimiter ? delimiter : '-'
- }
- return this.each(function(){
- var baseClass = $.baseClass(this);
- if(baseClass)
- $(this).addClass(baseClass + options.delimiter + className);
- });
- };
-
- $.fn.removeDependClass = function(className, delimiter){
- var options = {
- delimiter: delimiter ? delimiter : '-'
- }
- return this.each(function(){
- var baseClass = $.baseClass(this);
- if(baseClass)
- $(this).removeClass(baseClass + options.delimiter + className);
- });
- };
-
- $.fn.toggleDependClass = function(className, delimiter){
- var options = {
- delimiter: delimiter ? delimiter : '-'
- }
- return this.each(function(){
- var baseClass = $.baseClass(this);
- if(baseClass)
- if($(this).is("." + baseClass + options.delimiter + className))
- $(this).removeClass(baseClass + options.delimiter + className);
- else
- $(this).addClass(baseClass + options.delimiter + className);
- });
- };
-
-})(jQuery); \ No newline at end of file
diff --git a/library/jslider/js/jquery.numberformatter-1.2.3.js b/library/jslider/js/jquery.numberformatter-1.2.3.js
deleted file mode 100644
index 213db297a..000000000
--- a/library/jslider/js/jquery.numberformatter-1.2.3.js
+++ /dev/null
@@ -1,510 +0,0 @@
-/**
- * jquery.numberformatter - Formatting/Parsing Numbers in jQuery
- *
- * Written by
- * Michael Abernethy (mike@abernethysoft.com),
- * Andrew Parry (aparry0@gmail.com)
- *
- * Dual licensed under the MIT (MIT-LICENSE.txt)
- * and GPL (GPL-LICENSE.txt) licenses.
- *
- * @author Michael Abernethy, Andrew Parry
- * @version 1.2.3-SNAPSHOT ($Id$)
- *
- * Dependencies
- *
- * jQuery (http://jquery.com)
- * jshashtable (http://www.timdown.co.uk/jshashtable)
- *
- * Notes & Thanks
- *
- * many thanks to advweb.nanasi.jp for his bug fixes
- * jsHashtable is now used also, so thanks to the author for that excellent little class.
- *
- * This plugin can be used to format numbers as text and parse text as Numbers
- * Because we live in an international world, we cannot assume that everyone
- * uses "," to divide thousands, and "." as a decimal point.
- *
- * As of 1.2 the way this plugin works has changed slightly, parsing text to a number
- * has 1 set of functions, formatting a number to text has it's own. Before things
- * were a little confusing, so I wanted to separate the 2 out more.
- *
- *
- * jQuery extension functions:
- *
- * formatNumber(options, writeBack, giveReturnValue) - Reads the value from the subject, parses to
- * a Javascript Number object, then formats back to text using the passed options and write back to
- * the subject.
- *
- * parseNumber(options) - Parses the value in the subject to a Number object using the passed options
- * to decipher the actual number from the text, then writes the value as text back to the subject.
- *
- *
- * Generic functions:
- *
- * formatNumber(numberString, options) - Takes a plain number as a string (e.g. '1002.0123') and returns
- * a string of the given format options.
- *
- * parseNumber(numberString, options) - Takes a number as text that is formatted the same as the given
- * options then and returns it as a plain Number object.
- *
- * To achieve the old way of combining parsing and formatting to keep say a input field always formatted
- * to a given format after it has lost focus you'd simply use a combination of the functions.
- *
- * e.g.
- * $("#salary").blur(function(){
- * $(this).parseNumber({format:"#,###.00", locale:"us"});
- * $(this).formatNumber({format:"#,###.00", locale:"us"});
- * });
- *
- * The syntax for the formatting is:
- * 0 = Digit
- * # = Digit, zero shows as absent
- * . = Decimal separator
- * - = Negative sign
- * , = Grouping Separator
- * % = Percent (multiplies the number by 100)
- *
- * For example, a format of "#,###.00" and text of 4500.20 will
- * display as "4.500,20" with a locale of "de", and "4,500.20" with a locale of "us"
- *
- *
- * As of now, the only acceptable locales are
- * Arab Emirates -> "ae"
- * Australia -> "au"
- * Austria -> "at"
- * Brazil -> "br"
- * Canada -> "ca"
- * China -> "cn"
- * Czech -> "cz"
- * Denmark -> "dk"
- * Egypt -> "eg"
- * Finland -> "fi"
- * France -> "fr"
- * Germany -> "de"
- * Greece -> "gr"
- * Great Britain -> "gb"
- * Hong Kong -> "hk"
- * India -> "in"
- * Israel -> "il"
- * Japan -> "jp"
- * Russia -> "ru"
- * South Korea -> "kr"
- * Spain -> "es"
- * Sweden -> "se"
- * Switzerland -> "ch"
- * Taiwan -> "tw"
- * Thailand -> "th"
- * United States -> "us"
- * Vietnam -> "vn"
- **/
-
-(function(jQuery) {
-
- var nfLocales = new Hashtable();
-
- var nfLocalesLikeUS = [ 'ae','au','ca','cn','eg','gb','hk','il','in','jp','sk','th','tw','us' ];
- var nfLocalesLikeDE = [ 'at','br','de','dk','es','gr','it','nl','pt','tr','vn' ];
- var nfLocalesLikeFR = [ 'cz','fi','fr','ru','se','pl' ];
- var nfLocalesLikeCH = [ 'ch' ];
-
- var nfLocaleFormatting = [ [".", ","], [",", "."], [",", " "], [".", "'"] ];
- var nfAllLocales = [ nfLocalesLikeUS, nfLocalesLikeDE, nfLocalesLikeFR, nfLocalesLikeCH ]
-
- function FormatData(dec, group, neg) {
- this.dec = dec;
- this.group = group;
- this.neg = neg;
- };
-
- function init() {
- // write the arrays into the hashtable
- for (var localeGroupIdx = 0; localeGroupIdx < nfAllLocales.length; localeGroupIdx++) {
- localeGroup = nfAllLocales[localeGroupIdx];
- for (var i = 0; i < localeGroup.length; i++) {
- nfLocales.put(localeGroup[i], localeGroupIdx);
- }
- }
- };
-
- function formatCodes(locale, isFullLocale) {
- if (nfLocales.size() == 0)
- init();
-
- // default values
- var dec = ".";
- var group = ",";
- var neg = "-";
-
- if (isFullLocale == false) {
- // Extract and convert to lower-case any language code from a real 'locale' formatted string, if not use as-is
- // (To prevent locale format like : "fr_FR", "en_US", "de_DE", "fr_FR", "en-US", "de-DE")
- if (locale.indexOf('_') != -1)
- locale = locale.split('_')[1].toLowerCase();
- else if (locale.indexOf('-') != -1)
- locale = locale.split('-')[1].toLowerCase();
- }
-
- // hashtable lookup to match locale with codes
- var codesIndex = nfLocales.get(locale);
- if (codesIndex) {
- var codes = nfLocaleFormatting[codesIndex];
- if (codes) {
- dec = codes[0];
- group = codes[1];
- }
- }
- return new FormatData(dec, group, neg);
- };
-
-
- /* Formatting Methods */
-
-
- /**
- * Formats anything containing a number in standard js number notation.
- *
- * @param {Object} options The formatting options to use
- * @param {Boolean} writeBack (true) If the output value should be written back to the subject
- * @param {Boolean} giveReturnValue (true) If the function should return the output string
- */
- jQuery.fn.formatNumber = function(options, writeBack, giveReturnValue) {
-
- return this.each(function() {
- // enforce defaults
- if (writeBack == null)
- writeBack = true;
- if (giveReturnValue == null)
- giveReturnValue = true;
-
- // get text
- var text;
- if (jQuery(this).is(":input"))
- text = new String(jQuery(this).val());
- else
- text = new String(jQuery(this).text());
-
- // format
- var returnString = jQuery.formatNumber(text, options);
-
- // set formatted string back, only if a success
-// if (returnString) {
- if (writeBack) {
- if (jQuery(this).is(":input"))
- jQuery(this).val(returnString);
- else
- jQuery(this).text(returnString);
- }
- if (giveReturnValue)
- return returnString;
-// }
-// return '';
- });
- };
-
- /**
- * First parses a string and reformats it with the given options.
- *
- * @param {Object} numberString
- * @param {Object} options
- */
- jQuery.formatNumber = function(numberString, options){
- var options = jQuery.extend({}, jQuery.fn.formatNumber.defaults, options);
- var formatData = formatCodes(options.locale.toLowerCase(), options.isFullLocale);
-
- var dec = formatData.dec;
- var group = formatData.group;
- var neg = formatData.neg;
-
- var validFormat = "0#-,.";
-
- // strip all the invalid characters at the beginning and the end
- // of the format, and we'll stick them back on at the end
- // make a special case for the negative sign "-" though, so
- // we can have formats like -$23.32
- var prefix = "";
- var negativeInFront = false;
- for (var i = 0; i < options.format.length; i++) {
- if (validFormat.indexOf(options.format.charAt(i)) == -1)
- prefix = prefix + options.format.charAt(i);
- else
- if (i == 0 && options.format.charAt(i) == '-') {
- negativeInFront = true;
- continue;
- }
- else
- break;
- }
- var suffix = "";
- for (var i = options.format.length - 1; i >= 0; i--) {
- if (validFormat.indexOf(options.format.charAt(i)) == -1)
- suffix = options.format.charAt(i) + suffix;
- else
- break;
- }
-
- options.format = options.format.substring(prefix.length);
- options.format = options.format.substring(0, options.format.length - suffix.length);
-
- // now we need to convert it into a number
- //while (numberString.indexOf(group) > -1)
- // numberString = numberString.replace(group, '');
- //var number = new Number(numberString.replace(dec, ".").replace(neg, "-"));
- var number = new Number(numberString);
-
- return jQuery._formatNumber(number, options, suffix, prefix, negativeInFront);
- };
-
- /**
- * Formats a Number object into a string, using the given formatting options
- *
- * @param {Object} numberString
- * @param {Object} options
- */
- jQuery._formatNumber = function(number, options, suffix, prefix, negativeInFront) {
- var options = jQuery.extend({}, jQuery.fn.formatNumber.defaults, options);
- var formatData = formatCodes(options.locale.toLowerCase(), options.isFullLocale);
-
- var dec = formatData.dec;
- var group = formatData.group;
- var neg = formatData.neg;
-
- var forcedToZero = false;
- if (isNaN(number)) {
- if (options.nanForceZero == true) {
- number = 0;
- forcedToZero = true;
- } else
- return null;
- }
-
- // special case for percentages
- if (suffix == "%")
- number = number * 100;
-
- var returnString = "";
- if (options.format.indexOf(".") > -1) {
- var decimalPortion = dec;
- var decimalFormat = options.format.substring(options.format.lastIndexOf(".") + 1);
-
- // round or truncate number as needed
- if (options.round == true)
- number = new Number(number.toFixed(decimalFormat.length));
- else {
- var numStr = number.toString();
- numStr = numStr.substring(0, numStr.lastIndexOf('.') + decimalFormat.length + 1);
- number = new Number(numStr);
- }
-
- var decimalValue = number % 1;
- var decimalString = new String(decimalValue.toFixed(decimalFormat.length));
- decimalString = decimalString.substring(decimalString.lastIndexOf(".") + 1);
-
- for (var i = 0; i < decimalFormat.length; i++) {
- if (decimalFormat.charAt(i) == '#' && decimalString.charAt(i) != '0') {
- decimalPortion += decimalString.charAt(i);
- continue;
- } else if (decimalFormat.charAt(i) == '#' && decimalString.charAt(i) == '0') {
- var notParsed = decimalString.substring(i);
- if (notParsed.match('[1-9]')) {
- decimalPortion += decimalString.charAt(i);
- continue;
- } else
- break;
- } else if (decimalFormat.charAt(i) == "0")
- decimalPortion += decimalString.charAt(i);
- }
- returnString += decimalPortion
- } else
- number = Math.round(number);
-
- var ones = Math.floor(number);
- if (number < 0)
- ones = Math.ceil(number);
-
- var onesFormat = "";
- if (options.format.indexOf(".") == -1)
- onesFormat = options.format;
- else
- onesFormat = options.format.substring(0, options.format.indexOf("."));
-
- var onePortion = "";
- if (!(ones == 0 && onesFormat.substr(onesFormat.length - 1) == '#') || forcedToZero) {
- // find how many digits are in the group
- var oneText = new String(Math.abs(ones));
- var groupLength = 9999;
- if (onesFormat.lastIndexOf(",") != -1)
- groupLength = onesFormat.length - onesFormat.lastIndexOf(",") - 1;
- var groupCount = 0;
- for (var i = oneText.length - 1; i > -1; i--) {
- onePortion = oneText.charAt(i) + onePortion;
- groupCount++;
- if (groupCount == groupLength && i != 0) {
- onePortion = group + onePortion;
- groupCount = 0;
- }
- }
-
- // account for any pre-data padding
- if (onesFormat.length > onePortion.length) {
- var padStart = onesFormat.indexOf('0');
- if (padStart != -1) {
- var padLen = onesFormat.length - padStart;
-
- // pad to left with 0's or group char
- var pos = onesFormat.length - onePortion.length - 1;
- while (onePortion.length < padLen) {
- var padChar = onesFormat.charAt(pos);
- // replace with real group char if needed
- if (padChar == ',')
- padChar = group;
- onePortion = padChar + onePortion;
- pos--;
- }
- }
- }
- }
-
- if (!onePortion && onesFormat.indexOf('0', onesFormat.length - 1) !== -1)
- onePortion = '0';
-
- returnString = onePortion + returnString;
-
- // handle special case where negative is in front of the invalid characters
- if (number < 0 && negativeInFront && prefix.length > 0)
- prefix = neg + prefix;
- else if (number < 0)
- returnString = neg + returnString;
-
- if (!options.decimalSeparatorAlwaysShown) {
- if (returnString.lastIndexOf(dec) == returnString.length - 1) {
- returnString = returnString.substring(0, returnString.length - 1);
- }
- }
- returnString = prefix + returnString + suffix;
- return returnString;
- };
-
-
- /* Parsing Methods */
-
-
- /**
- * Parses a number of given format from the element and returns a Number object.
- * @param {Object} options
- */
- jQuery.fn.parseNumber = function(options, writeBack, giveReturnValue) {
- // enforce defaults
- if (writeBack == null)
- writeBack = true;
- if (giveReturnValue == null)
- giveReturnValue = true;
-
- // get text
- var text;
- if (jQuery(this).is(":input"))
- text = new String(jQuery(this).val());
- else
- text = new String(jQuery(this).text());
-
- // parse text
- var number = jQuery.parseNumber(text, options);
-
- if (number) {
- if (writeBack) {
- if (jQuery(this).is(":input"))
- jQuery(this).val(number.toString());
- else
- jQuery(this).text(number.toString());
- }
- if (giveReturnValue)
- return number;
- }
- };
-
- /**
- * Parses a string of given format into a Number object.
- *
- * @param {Object} string
- * @param {Object} options
- */
- jQuery.parseNumber = function(numberString, options) {
- var options = jQuery.extend({}, jQuery.fn.parseNumber.defaults, options);
- var formatData = formatCodes(options.locale.toLowerCase(), options.isFullLocale);
-
- var dec = formatData.dec;
- var group = formatData.group;
- var neg = formatData.neg;
-
- var valid = "1234567890.-";
-
- // now we need to convert it into a number
- while (numberString.indexOf(group)>-1)
- numberString = numberString.replace(group,'');
- numberString = numberString.replace(dec,".").replace(neg,"-");
- var validText = "";
- var hasPercent = false;
- if (numberString.charAt(numberString.length - 1) == "%" || options.isPercentage == true)
- hasPercent = true;
- for (var i=0; i<numberString.length; i++) {
- if (valid.indexOf(numberString.charAt(i))>-1)
- validText = validText + numberString.charAt(i);
- }
- var number = new Number(validText);
- if (hasPercent) {
- number = number / 100;
- var decimalPos = validText.indexOf('.');
- if (decimalPos != -1) {
- var decimalPoints = validText.length - decimalPos - 1;
- number = number.toFixed(decimalPoints + 2);
- } else {
- number = number.toFixed(validText.length - 1);
- }
- }
-
- return number;
- };
-
- jQuery.fn.parseNumber.defaults = {
- locale: "us",
- decimalSeparatorAlwaysShown: false,
- isPercentage: false,
- isFullLocale: false
- };
-
- jQuery.fn.formatNumber.defaults = {
- format: "#,###.00",
- locale: "us",
- decimalSeparatorAlwaysShown: false,
- nanForceZero: true,
- round: true,
- isFullLocale: false
- };
-
- Number.prototype.toFixed = function(precision) {
- return jQuery._roundNumber(this, precision);
- };
-
- jQuery._roundNumber = function(number, decimalPlaces) {
- var power = Math.pow(10, decimalPlaces || 0);
- var value = String(Math.round(number * power) / power);
-
- // ensure the decimal places are there
- if (decimalPlaces > 0) {
- var dp = value.indexOf(".");
- if (dp == -1) {
- value += '.';
- dp = 0;
- } else {
- dp = value.length - (dp + 1);
- }
-
- while (dp < decimalPlaces) {
- value += '0';
- dp++;
- }
- }
- return value;
- };
-
- })(jQuery); \ No newline at end of file
diff --git a/library/jslider/js/jquery.slider.js b/library/jslider/js/jquery.slider.js
deleted file mode 100644
index 6d903775f..000000000
--- a/library/jslider/js/jquery.slider.js
+++ /dev/null
@@ -1,700 +0,0 @@
-/**
- * jquery.slider - Slider ui control in jQuery
- *
- * Written by
- * Egor Khmelev (hmelyoff@gmail.com)
- *
- * Licensed under the MIT (MIT-LICENSE.txt).
- *
- * @author Egor Khmelev
- * @version 1.1.0-RELEASE ($Id$)
- *
- * Dependencies
- *
- * jQuery (http://jquery.com)
- * jquery.numberformatter (http://code.google.com/p/jquery-numberformatter/)
- * tmpl (http://ejohn.org/blog/javascript-micro-templating/)
- * jquery.dependClass
- * draggable
- *
- **/
-
-(function( $ ) {
-
- function isArray( value ){
- if( typeof value == "undefined" ) return false;
-
- if (value instanceof Array || (!(value instanceof Object) &&
- (Object.prototype.toString.call((value)) == '[object Array]') ||
- typeof value.length == 'number' &&
- typeof value.splice != 'undefined' &&
- typeof value.propertyIsEnumerable != 'undefined' &&
- !value.propertyIsEnumerable('splice')
- )) {
- return true;
- }
-
- return false;
- }
-
- $.slider = function( node, settings ){
- var jNode = $(node);
- if( !jNode.data( "jslider" ) )
- jNode.data( "jslider", new jSlider( node, settings ) );
-
- return jNode.data( "jslider" );
- };
-
- $.fn.slider = function( action, opt_value ){
- var returnValue, args = arguments;
-
- function isDef( val ){
- return val !== undefined;
- };
-
- function isDefAndNotNull( val ){
- return val != null;
- };
-
- this.each(function(){
- var self = $.slider( this, action );
-
- // do actions
- if( typeof action == "string" ){
- switch( action ){
- case "value":
- if( isDef( args[ 1 ] ) && isDef( args[ 2 ] ) ){
- var pointers = self.getPointers();
- if( isDefAndNotNull( pointers[0] ) && isDefAndNotNull( args[1] ) ){
- pointers[0].set( args[ 1 ] );
- pointers[0].setIndexOver();
- }
-
- if( isDefAndNotNull( pointers[1] ) && isDefAndNotNull( args[2] ) ){
- pointers[1].set( args[ 2 ] );
- pointers[1].setIndexOver();
- }
- }
-
- else if( isDef( args[ 1 ] ) ){
- var pointers = self.getPointers();
- if( isDefAndNotNull( pointers[0] ) && isDefAndNotNull( args[1] ) ){
- pointers[0].set( args[ 1 ] );
- pointers[0].setIndexOver();
- }
- }
-
- else
- returnValue = self.getValue();
-
- break;
-
- case "prc":
- if( isDef( args[ 1 ] ) && isDef( args[ 2 ] ) ){
- var pointers = self.getPointers();
- if( isDefAndNotNull( pointers[0] ) && isDefAndNotNull( args[1] ) ){
- pointers[0]._set( args[ 1 ] );
- pointers[0].setIndexOver();
- }
-
- if( isDefAndNotNull( pointers[1] ) && isDefAndNotNull( args[2] ) ){
- pointers[1]._set( args[ 2 ] );
- pointers[1].setIndexOver();
- }
- }
-
- else if( isDef( args[ 1 ] ) ){
- var pointers = self.getPointers();
- if( isDefAndNotNull( pointers[0] ) && isDefAndNotNull( args[1] ) ){
- pointers[0]._set( args[ 1 ] );
- pointers[0].setIndexOver();
- }
- }
-
- else
- returnValue = self.getPrcValue();
-
- break;
-
- case "calculatedValue":
- var value = self.getValue().split(";");
- returnValue = "";
- for (var i=0; i < value.length; i++) {
- returnValue += (i > 0 ? ";" : "") + self.nice( value[i] );
- };
-
- break;
-
- case "skin":
- self.setSkin( args[1] );
-
- break;
- };
-
- }
-
- // return actual object
- else if( !action && !opt_value ){
- if( !isArray( returnValue ) )
- returnValue = [];
-
- returnValue.push( self );
- }
- });
-
- // flatten array just with one slider
- if( isArray( returnValue ) && returnValue.length == 1 )
- returnValue = returnValue[ 0 ];
-
- return returnValue || this;
- };
-
- var OPTIONS = {
-
- settings: {
- from: 1,
- to: 10,
- step: 1,
- smooth: true,
- limits: true,
- round: 0,
- format: { format: "#,##0.##" },
- value: "5;7",
- dimension: ""
- },
-
- className: "jslider",
- selector: ".jslider-",
-
- template: tmpl(
- '<span class="<%=className%>">' +
- '<table><tr><td>' +
- '<div class="<%=className%>-bg">' +
- '<i class="l"></i><i class="r"></i>' +
- '<i class="v"></i>' +
- '</div>' +
-
- '<div class="<%=className%>-pointer"></div>' +
- '<div class="<%=className%>-pointer <%=className%>-pointer-to"></div>' +
-
- '<div class="<%=className%>-label"><span><%=settings.from%></span></div>' +
- '<div class="<%=className%>-label <%=className%>-label-to"><span><%=settings.to%></span><%=settings.dimension%></div>' +
-
- '<div class="<%=className%>-value"><span></span><%=settings.dimension%></div>' +
- '<div class="<%=className%>-value <%=className%>-value-to"><span></span><%=settings.dimension%></div>' +
-
- '<div class="<%=className%>-scale"><%=scale%></div>'+
-
- '</td></tr></table>' +
- '</span>'
- )
-
- };
-
- function jSlider(){
- return this.init.apply( this, arguments );
- };
-
- jSlider.prototype.init = function( node, settings ){
- this.settings = $.extend(true, {}, OPTIONS.settings, settings ? settings : {});
-
- // obj.sliderHandler = this;
- this.inputNode = $( node ).hide();
-
- this.settings.interval = this.settings.to-this.settings.from;
- this.settings.value = this.inputNode.attr("value");
-
- if( this.settings.calculate && $.isFunction( this.settings.calculate ) )
- this.nice = this.settings.calculate;
-
- if( this.settings.onstatechange && $.isFunction( this.settings.onstatechange ) )
- this.onstatechange = this.settings.onstatechange;
-
- this.is = {
- init: false
- };
- this.o = {};
-
- this.create();
- };
-
- jSlider.prototype.onstatechange = function(){
-
- };
-
- jSlider.prototype.create = function(){
- var $this = this;
-
- this.domNode = $( OPTIONS.template({
- className: OPTIONS.className,
- settings: {
- from: this.nice( this.settings.from ),
- to: this.nice( this.settings.to ),
- dimension: this.settings.dimension
- },
- scale: this.generateScale()
- }) );
-
- this.inputNode.after( this.domNode );
- this.drawScale();
-
- // set skin class
- if( this.settings.skin && this.settings.skin.length > 0 )
- this.setSkin( this.settings.skin );
-
- this.sizes = {
- domWidth: this.domNode.width(),
- domOffset: this.domNode.offset()
- };
-
- // find some objects
- $.extend(this.o, {
- pointers: {},
- labels: {
- 0: {
- o: this.domNode.find(OPTIONS.selector + "value").not(OPTIONS.selector + "value-to")
- },
- 1: {
- o: this.domNode.find(OPTIONS.selector + "value").filter(OPTIONS.selector + "value-to")
- }
- },
- limits: {
- 0: this.domNode.find(OPTIONS.selector + "label").not(OPTIONS.selector + "label-to"),
- 1: this.domNode.find(OPTIONS.selector + "label").filter(OPTIONS.selector + "label-to")
- }
- });
-
- $.extend(this.o.labels[0], {
- value: this.o.labels[0].o.find("span")
- });
-
- $.extend(this.o.labels[1], {
- value: this.o.labels[1].o.find("span")
- });
-
-
- if( !$this.settings.value.split(";")[1] ){
- this.settings.single = true;
- this.domNode.addDependClass("single");
- }
-
- if( !$this.settings.limits )
- this.domNode.addDependClass("limitless");
-
- this.domNode.find(OPTIONS.selector + "pointer").each(function( i ){
- var value = $this.settings.value.split(";")[i];
- if( value ){
- $this.o.pointers[i] = new jSliderPointer( this, i, $this );
-
- var prev = $this.settings.value.split(";")[i-1];
- if( prev && new Number(value) < new Number(prev) ) value = prev;
-
- value = value < $this.settings.from ? $this.settings.from : value;
- value = value > $this.settings.to ? $this.settings.to : value;
-
- $this.o.pointers[i].set( value, true );
- }
- });
-
- this.o.value = this.domNode.find(".v");
- this.is.init = true;
-
- $.each(this.o.pointers, function(i){
- $this.redraw(this);
- });
-
- (function(self){
- $(window).resize(function(){
- self.onresize();
- });
- })(this);
-
- };
-
- jSlider.prototype.setSkin = function( skin ){
- if( this.skin_ )
- this.domNode.removeDependClass( this.skin_, "_" );
-
- this.domNode.addDependClass( this.skin_ = skin, "_" );
- };
-
- jSlider.prototype.setPointersIndex = function( i ){
- $.each(this.getPointers(), function(i){
- this.index( i );
- });
- };
-
- jSlider.prototype.getPointers = function(){
- return this.o.pointers;
- };
-
- jSlider.prototype.generateScale = function(){
- if( this.settings.scale && this.settings.scale.length > 0 ){
- var str = "";
- var s = this.settings.scale;
- var prc = Math.round((100/(s.length-1))*10)/10;
- for( var i=0; i < s.length; i++ ){
- str += '<span style="left: ' + i*prc + '%">' + ( s[i] != '|' ? '<ins>' + s[i] + '</ins>' : '' ) + '</span>';
- };
- return str;
- } else return "";
-
- return "";
- };
-
- jSlider.prototype.drawScale = function(){
- this.domNode.find(OPTIONS.selector + "scale span ins").each(function(){
- $(this).css({ marginLeft: -$(this).outerWidth()/2 });
- });
- };
-
- jSlider.prototype.onresize = function(){
- var self = this;
- this.sizes = {
- domWidth: this.domNode.width(),
- domOffset: this.domNode.offset()
- };
-
- $.each(this.o.pointers, function(i){
- self.redraw(this);
- });
- };
-
- jSlider.prototype.update = function(){
- this.onresize();
- this.drawScale();
- };
-
- jSlider.prototype.limits = function( x, pointer ){
- // smooth
- if( !this.settings.smooth ){
- var step = this.settings.step*100 / ( this.settings.interval );
- x = Math.round( x/step ) * step;
- }
-
- var another = this.o.pointers[1-pointer.uid];
- if( another && pointer.uid && x < another.value.prc ) x = another.value.prc;
- if( another && !pointer.uid && x > another.value.prc ) x = another.value.prc;
-
- // base limit
- if( x < 0 ) x = 0;
- if( x > 100 ) x = 100;
-
- return Math.round( x*10 ) / 10;
- };
-
- jSlider.prototype.redraw = function( pointer ){
- if( !this.is.init ) return false;
-
- this.setValue();
-
- // redraw range line
- if( this.o.pointers[0] && this.o.pointers[1] )
- this.o.value.css({ left: this.o.pointers[0].value.prc + "%", width: ( this.o.pointers[1].value.prc - this.o.pointers[0].value.prc ) + "%" });
-
- this.o.labels[pointer.uid].value.html(
- this.nice(
- pointer.value.origin
- )
- );
-
- // redraw position of labels
- this.redrawLabels( pointer );
-
- };
-
- jSlider.prototype.redrawLabels = function( pointer ){
-
- function setPosition( label, sizes, prc ){
- sizes.margin = -sizes.label/2;
-
- // left limit
- label_left = sizes.border + sizes.margin;
- if( label_left < 0 )
- sizes.margin -= label_left;
-
- // right limit
- if( sizes.border+sizes.label / 2 > self.sizes.domWidth ){
- sizes.margin = 0;
- sizes.right = true;
- } else
- sizes.right = false;
-
- label.o.css({ left: prc + "%", marginLeft: sizes.margin, right: "auto" });
- if( sizes.right ) label.o.css({ left: "auto", right: 0 });
- return sizes;
- }
-
- var self = this;
- var label = this.o.labels[pointer.uid];
- var prc = pointer.value.prc;
-
- var sizes = {
- label: label.o.outerWidth(),
- right: false,
- border: ( prc * this.sizes.domWidth ) / 100
- };
-
- if( !this.settings.single ){
- // glue if near;
- var another = this.o.pointers[1-pointer.uid];
- var another_label = this.o.labels[another.uid];
-
- switch( pointer.uid ){
- case 0:
- if( sizes.border+sizes.label / 2 > another_label.o.offset().left-this.sizes.domOffset.left ){
- another_label.o.css({ visibility: "hidden" });
- another_label.value.html( this.nice( another.value.origin ) );
-
- label.o.css({ visibility: "visible" });
-
- prc = ( another.value.prc - prc ) / 2 + prc;
- if( another.value.prc != pointer.value.prc ){
- label.value.html( this.nice(pointer.value.origin) + "&nbsp;&ndash;&nbsp;" + this.nice(another.value.origin) );
- sizes.label = label.o.outerWidth();
- sizes.border = ( prc * this.sizes.domWidth ) / 100;
- }
- } else {
- another_label.o.css({ visibility: "visible" });
- }
- break;
-
- case 1:
- if( sizes.border - sizes.label / 2 < another_label.o.offset().left - this.sizes.domOffset.left + another_label.o.outerWidth() ){
- another_label.o.css({ visibility: "hidden" });
- another_label.value.html( this.nice(another.value.origin) );
-
- label.o.css({ visibility: "visible" });
-
- prc = ( prc - another.value.prc ) / 2 + another.value.prc;
- if( another.value.prc != pointer.value.prc ){
- label.value.html( this.nice(another.value.origin) + "&nbsp;&ndash;&nbsp;" + this.nice(pointer.value.origin) );
- sizes.label = label.o.outerWidth();
- sizes.border = ( prc * this.sizes.domWidth ) / 100;
- }
- } else {
- another_label.o.css({ visibility: "visible" });
- }
- break;
- }
- }
-
- sizes = setPosition( label, sizes, prc );
-
- /* draw second label */
- if( another_label ){
- var sizes = {
- label: another_label.o.outerWidth(),
- right: false,
- border: ( another.value.prc * this.sizes.domWidth ) / 100
- };
- sizes = setPosition( another_label, sizes, another.value.prc );
- }
-
- this.redrawLimits();
- };
-
- jSlider.prototype.redrawLimits = function(){
- if( this.settings.limits ){
-
- var limits = [ true, true ];
-
- for( key in this.o.pointers ){
-
- if( !this.settings.single || key == 0 ){
-
- var pointer = this.o.pointers[key];
- var label = this.o.labels[pointer.uid];
- var label_left = label.o.offset().left - this.sizes.domOffset.left;
-
- var limit = this.o.limits[0];
- if( label_left < limit.outerWidth() )
- limits[0] = false;
-
- var limit = this.o.limits[1];
- if( label_left + label.o.outerWidth() > this.sizes.domWidth - limit.outerWidth() )
- limits[1] = false;
- }
-
- };
-
- for( var i=0; i < limits.length; i++ ){
- if( limits[i] )
- this.o.limits[i].fadeIn("fast");
- else
- this.o.limits[i].fadeOut("fast");
- };
-
- }
- };
-
- jSlider.prototype.setValue = function(){
- var value = this.getValue();
- this.inputNode.attr( "value", value );
- this.onstatechange.call( this, value );
- };
-
- jSlider.prototype.getValue = function(){
- if(!this.is.init) return false;
- var $this = this;
-
- var value = "";
- $.each( this.o.pointers, function(i){
- if( this.value.prc != undefined && !isNaN(this.value.prc) ) value += (i > 0 ? ";" : "") + $this.prcToValue( this.value.prc );
- });
- return value;
- };
-
- jSlider.prototype.getPrcValue = function(){
- if(!this.is.init) return false;
- var $this = this;
-
- var value = "";
- $.each( this.o.pointers, function(i){
- if( this.value.prc != undefined && !isNaN(this.value.prc) ) value += (i > 0 ? ";" : "") + this.value.prc;
- });
- return value;
- };
-
- jSlider.prototype.prcToValue = function( prc ){
-
- if( this.settings.heterogeneity && this.settings.heterogeneity.length > 0 ){
- var h = this.settings.heterogeneity;
-
- var _start = 0;
- var _from = this.settings.from;
-
- for( var i=0; i <= h.length; i++ ){
- if( h[i] ) var v = h[i].split("/");
- else var v = [100, this.settings.to];
-
- v[0] = new Number(v[0]);
- v[1] = new Number(v[1]);
-
- if( prc >= _start && prc <= v[0] ) {
- var value = _from + ( (prc-_start) * (v[1]-_from) ) / (v[0]-_start);
- }
-
- _start = v[0];
- _from = v[1];
- };
-
- } else {
- var value = this.settings.from + ( prc * this.settings.interval ) / 100;
- }
-
- return this.round( value );
- };
-
- jSlider.prototype.valueToPrc = function( value, pointer ){
- if( this.settings.heterogeneity && this.settings.heterogeneity.length > 0 ){
- var h = this.settings.heterogeneity;
-
- var _start = 0;
- var _from = this.settings.from;
-
- for (var i=0; i <= h.length; i++) {
- if(h[i]) var v = h[i].split("/");
- else var v = [100, this.settings.to];
- v[0] = new Number(v[0]); v[1] = new Number(v[1]);
-
- if(value >= _from && value <= v[1]){
- var prc = pointer.limits(_start + (value-_from)*(v[0]-_start)/(v[1]-_from));
- }
-
- _start = v[0]; _from = v[1];
- };
-
- } else {
- var prc = pointer.limits((value-this.settings.from)*100/this.settings.interval);
- }
-
- return prc;
- };
-
- jSlider.prototype.round = function( value ){
- value = Math.round( value / this.settings.step ) * this.settings.step;
- if( this.settings.round ) value = Math.round( value * Math.pow(10, this.settings.round) ) / Math.pow(10, this.settings.round);
- else value = Math.round( value );
- return value;
- };
-
- jSlider.prototype.nice = function( value ){
- value = value.toString().replace(/,/gi, ".").replace(/ /gi, "");;
-
- if( $.formatNumber ){
- return $.formatNumber( new Number(value), this.settings.format || {} ).replace( /-/gi, "&minus;" );
- }
-
- else {
- return new Number(value);
- }
- };
-
-
- function jSliderPointer(){
- Draggable.apply( this, arguments );
- }
- jSliderPointer.prototype = new Draggable();
-
- jSliderPointer.prototype.oninit = function( ptr, id, _constructor ){
- this.uid = id;
- this.parent = _constructor;
- this.value = {};
- this.settings = this.parent.settings;
- };
-
- jSliderPointer.prototype.onmousedown = function(evt){
- this._parent = {
- offset: this.parent.domNode.offset(),
- width: this.parent.domNode.width()
- };
- this.ptr.addDependClass("hover");
- this.setIndexOver();
- };
-
- jSliderPointer.prototype.onmousemove = function( evt, x ){
- var coords = this._getPageCoords( evt );
- this._set( this.calc( coords.x ) );
- };
-
- jSliderPointer.prototype.onmouseup = function( evt ){
- if( this.parent.settings.callback && $.isFunction(this.parent.settings.callback) )
- this.parent.settings.callback.call( this.parent, this.parent.getValue() );
-
- this.ptr.removeDependClass("hover");
- };
-
- jSliderPointer.prototype.setIndexOver = function(){
- this.parent.setPointersIndex( 1 );
- this.index( 2 );
- };
-
- jSliderPointer.prototype.index = function( i ){
- this.ptr.css({ zIndex: i });
- };
-
- jSliderPointer.prototype.limits = function( x ){
- return this.parent.limits( x, this );
- };
-
- jSliderPointer.prototype.calc = function(coords){
- var x = this.limits(((coords-this._parent.offset.left)*100)/this._parent.width);
- return x;
- };
-
- jSliderPointer.prototype.set = function( value, opt_origin ){
- this.value.origin = this.parent.round(value);
- this._set( this.parent.valueToPrc( value, this ), opt_origin );
- };
-
- jSliderPointer.prototype._set = function( prc, opt_origin ){
- if( !opt_origin )
- this.value.origin = this.parent.prcToValue(prc);
-
- this.value.prc = prc;
- this.ptr.css({ left: prc + "%" });
- this.parent.redraw(this);
- };
-
-})(jQuery); \ No newline at end of file
diff --git a/library/jslider/js/jshashtable-2.1_src.js b/library/jslider/js/jshashtable-2.1_src.js
deleted file mode 100644
index 086f3de5b..000000000
--- a/library/jslider/js/jshashtable-2.1_src.js
+++ /dev/null
@@ -1,370 +0,0 @@
-/**
- * Copyright 2010 Tim Down.
- *
- * 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.
- */
-
-/**
- * jshashtable
- *
- * jshashtable is a JavaScript implementation of a hash table. It creates a single constructor function called Hashtable
- * in the global scope.
- *
- * Author: Tim Down <tim@timdown.co.uk>
- * Version: 2.1
- * Build date: 21 March 2010
- * Website: http://www.timdown.co.uk/jshashtable
- */
-
-var Hashtable = (function() {
- var FUNCTION = "function";
-
- var arrayRemoveAt = (typeof Array.prototype.splice == FUNCTION) ?
- function(arr, idx) {
- arr.splice(idx, 1);
- } :
-
- function(arr, idx) {
- var itemsAfterDeleted, i, len;
- if (idx === arr.length - 1) {
- arr.length = idx;
- } else {
- itemsAfterDeleted = arr.slice(idx + 1);
- arr.length = idx;
- for (i = 0, len = itemsAfterDeleted.length; i < len; ++i) {
- arr[idx + i] = itemsAfterDeleted[i];
- }
- }
- };
-
- function hashObject(obj) {
- var hashCode;
- if (typeof obj == "string") {
- return obj;
- } else if (typeof obj.hashCode == FUNCTION) {
- // Check the hashCode method really has returned a string
- hashCode = obj.hashCode();
- return (typeof hashCode == "string") ? hashCode : hashObject(hashCode);
- } else if (typeof obj.toString == FUNCTION) {
- return obj.toString();
- } else {
- try {
- return String(obj);
- } catch (ex) {
- // For host objects (such as ActiveObjects in IE) that have no toString() method and throw an error when
- // passed to String()
- return Object.prototype.toString.call(obj);
- }
- }
- }
-
- function equals_fixedValueHasEquals(fixedValue, variableValue) {
- return fixedValue.equals(variableValue);
- }
-
- function equals_fixedValueNoEquals(fixedValue, variableValue) {
- return (typeof variableValue.equals == FUNCTION) ?
- variableValue.equals(fixedValue) : (fixedValue === variableValue);
- }
-
- function createKeyValCheck(kvStr) {
- return function(kv) {
- if (kv === null) {
- throw new Error("null is not a valid " + kvStr);
- } else if (typeof kv == "undefined") {
- throw new Error(kvStr + " must not be undefined");
- }
- };
- }
-
- var checkKey = createKeyValCheck("key"), checkValue = createKeyValCheck("value");
-
- /*----------------------------------------------------------------------------------------------------------------*/
-
- function Bucket(hash, firstKey, firstValue, equalityFunction) {
- this[0] = hash;
- this.entries = [];
- this.addEntry(firstKey, firstValue);
-
- if (equalityFunction !== null) {
- this.getEqualityFunction = function() {
- return equalityFunction;
- };
- }
- }
-
- var EXISTENCE = 0, ENTRY = 1, ENTRY_INDEX_AND_VALUE = 2;
-
- function createBucketSearcher(mode) {
- return function(key) {
- var i = this.entries.length, entry, equals = this.getEqualityFunction(key);
- while (i--) {
- entry = this.entries[i];
- if ( equals(key, entry[0]) ) {
- switch (mode) {
- case EXISTENCE:
- return true;
- case ENTRY:
- return entry;
- case ENTRY_INDEX_AND_VALUE:
- return [ i, entry[1] ];
- }
- }
- }
- return false;
- };
- }
-
- function createBucketLister(entryProperty) {
- return function(aggregatedArr) {
- var startIndex = aggregatedArr.length;
- for (var i = 0, len = this.entries.length; i < len; ++i) {
- aggregatedArr[startIndex + i] = this.entries[i][entryProperty];
- }
- };
- }
-
- Bucket.prototype = {
- getEqualityFunction: function(searchValue) {
- return (typeof searchValue.equals == FUNCTION) ? equals_fixedValueHasEquals : equals_fixedValueNoEquals;
- },
-
- getEntryForKey: createBucketSearcher(ENTRY),
-
- getEntryAndIndexForKey: createBucketSearcher(ENTRY_INDEX_AND_VALUE),
-
- removeEntryForKey: function(key) {
- var result = this.getEntryAndIndexForKey(key);
- if (result) {
- arrayRemoveAt(this.entries, result[0]);
- return result[1];
- }
- return null;
- },
-
- addEntry: function(key, value) {
- this.entries[this.entries.length] = [key, value];
- },
-
- keys: createBucketLister(0),
-
- values: createBucketLister(1),
-
- getEntries: function(entries) {
- var startIndex = entries.length;
- for (var i = 0, len = this.entries.length; i < len; ++i) {
- // Clone the entry stored in the bucket before adding to array
- entries[startIndex + i] = this.entries[i].slice(0);
- }
- },
-
- containsKey: createBucketSearcher(EXISTENCE),
-
- containsValue: function(value) {
- var i = this.entries.length;
- while (i--) {
- if ( value === this.entries[i][1] ) {
- return true;
- }
- }
- return false;
- }
- };
-
- /*----------------------------------------------------------------------------------------------------------------*/
-
- // Supporting functions for searching hashtable buckets
-
- function searchBuckets(buckets, hash) {
- var i = buckets.length, bucket;
- while (i--) {
- bucket = buckets[i];
- if (hash === bucket[0]) {
- return i;
- }
- }
- return null;
- }
-
- function getBucketForHash(bucketsByHash, hash) {
- var bucket = bucketsByHash[hash];
-
- // Check that this is a genuine bucket and not something inherited from the bucketsByHash's prototype
- return ( bucket && (bucket instanceof Bucket) ) ? bucket : null;
- }
-
- /*----------------------------------------------------------------------------------------------------------------*/
-
- function Hashtable(hashingFunctionParam, equalityFunctionParam) {
- var that = this;
- var buckets = [];
- var bucketsByHash = {};
-
- var hashingFunction = (typeof hashingFunctionParam == FUNCTION) ? hashingFunctionParam : hashObject;
- var equalityFunction = (typeof equalityFunctionParam == FUNCTION) ? equalityFunctionParam : null;
-
- this.put = function(key, value) {
- checkKey(key);
- checkValue(value);
- var hash = hashingFunction(key), bucket, bucketEntry, oldValue = null;
-
- // Check if a bucket exists for the bucket key
- bucket = getBucketForHash(bucketsByHash, hash);
- if (bucket) {
- // Check this bucket to see if it already contains this key
- bucketEntry = bucket.getEntryForKey(key);
- if (bucketEntry) {
- // This bucket entry is the current mapping of key to value, so replace old value and we're done.
- oldValue = bucketEntry[1];
- bucketEntry[1] = value;
- } else {
- // The bucket does not contain an entry for this key, so add one
- bucket.addEntry(key, value);
- }
- } else {
- // No bucket exists for the key, so create one and put our key/value mapping in
- bucket = new Bucket(hash, key, value, equalityFunction);
- buckets[buckets.length] = bucket;
- bucketsByHash[hash] = bucket;
- }
- return oldValue;
- };
-
- this.get = function(key) {
- checkKey(key);
-
- var hash = hashingFunction(key);
-
- // Check if a bucket exists for the bucket key
- var bucket = getBucketForHash(bucketsByHash, hash);
- if (bucket) {
- // Check this bucket to see if it contains this key
- var bucketEntry = bucket.getEntryForKey(key);
- if (bucketEntry) {
- // This bucket entry is the current mapping of key to value, so return the value.
- return bucketEntry[1];
- }
- }
- return null;
- };
-
- this.containsKey = function(key) {
- checkKey(key);
- var bucketKey = hashingFunction(key);
-
- // Check if a bucket exists for the bucket key
- var bucket = getBucketForHash(bucketsByHash, bucketKey);
-
- return bucket ? bucket.containsKey(key) : false;
- };
-
- this.containsValue = function(value) {
- checkValue(value);
- var i = buckets.length;
- while (i--) {
- if (buckets[i].containsValue(value)) {
- return true;
- }
- }
- return false;
- };
-
- this.clear = function() {
- buckets.length = 0;
- bucketsByHash = {};
- };
-
- this.isEmpty = function() {
- return !buckets.length;
- };
-
- var createBucketAggregator = function(bucketFuncName) {
- return function() {
- var aggregated = [], i = buckets.length;
- while (i--) {
- buckets[i][bucketFuncName](aggregated);
- }
- return aggregated;
- };
- };
-
- this.keys = createBucketAggregator("keys");
- this.values = createBucketAggregator("values");
- this.entries = createBucketAggregator("getEntries");
-
- this.remove = function(key) {
- checkKey(key);
-
- var hash = hashingFunction(key), bucketIndex, oldValue = null;
-
- // Check if a bucket exists for the bucket key
- var bucket = getBucketForHash(bucketsByHash, hash);
-
- if (bucket) {
- // Remove entry from this bucket for this key
- oldValue = bucket.removeEntryForKey(key);
- if (oldValue !== null) {
- // Entry was removed, so check if bucket is empty
- if (!bucket.entries.length) {
- // Bucket is empty, so remove it from the bucket collections
- bucketIndex = searchBuckets(buckets, hash);
- arrayRemoveAt(buckets, bucketIndex);
- delete bucketsByHash[hash];
- }
- }
- }
- return oldValue;
- };
-
- this.size = function() {
- var total = 0, i = buckets.length;
- while (i--) {
- total += buckets[i].entries.length;
- }
- return total;
- };
-
- this.each = function(callback) {
- var entries = that.entries(), i = entries.length, entry;
- while (i--) {
- entry = entries[i];
- callback(entry[0], entry[1]);
- }
- };
-
- this.putAll = function(hashtable, conflictCallback) {
- var entries = hashtable.entries();
- var entry, key, value, thisValue, i = entries.length;
- var hasConflictCallback = (typeof conflictCallback == FUNCTION);
- while (i--) {
- entry = entries[i];
- key = entry[0];
- value = entry[1];
-
- // Check for a conflict. The default behaviour is to overwrite the value for an existing key
- if ( hasConflictCallback && (thisValue = that.get(key)) ) {
- value = conflictCallback(key, thisValue, value);
- }
- that.put(key, value);
- }
- };
-
- this.clone = function() {
- var clone = new Hashtable(hashingFunctionParam, equalityFunctionParam);
- clone.putAll(that);
- return clone;
- };
- }
-
- return Hashtable;
-})(); \ No newline at end of file
diff --git a/library/jslider/js/tmpl.js b/library/jslider/js/tmpl.js
deleted file mode 100644
index 36eadf28a..000000000
--- a/library/jslider/js/tmpl.js
+++ /dev/null
@@ -1,35 +0,0 @@
-// Simple JavaScript Templating
-// John Resig - http://ejohn.org/ - MIT Licensed
-(function(){
- var cache = {};
-
- this.tmpl = function tmpl(str, data){
- // Figure out if we're getting a template, or if we need to
- // load the template - and be sure to cache the result.
- var fn = !/\W/.test(str) ?
- cache[str] = cache[str] ||
- tmpl(document.getElementById(str).innerHTML) :
-
- // Generate a reusable function that will serve as a template
- // generator (and which will be cached).
- new Function("obj",
- "var p=[],print=function(){p.push.apply(p,arguments);};" +
-
- // Introduce the data as local variables using with(){}
- "with(obj){p.push('" +
-
- // Convert the template into pure JavaScript
- str
- .replace(/[\r\t\n]/g, " ")
- .split("<%").join("\t")
- .replace(/((^|%>)[^\t]*)'/g, "$1\r")
- .replace(/\t=(.*?)%>/g, "',$1,'")
- .split("\t").join("');")
- .split("%>").join("p.push('")
- .split("\r").join("\\'")
- + "');}return p.join('');");
-
- // Provide some basic currying to the user
- return data ? fn( data ) : fn;
- };
-})(); \ No newline at end of file
diff --git a/library/jslider/src/skin.psd b/library/jslider/src/skin.psd
deleted file mode 100644
index 2c46c91db..000000000
--- a/library/jslider/src/skin.psd
+++ /dev/null
Binary files differ
diff --git a/library/jslider/tests/show_hide.html b/library/jslider/tests/show_hide.html
deleted file mode 100644
index 57d3e929d..000000000
--- a/library/jslider/tests/show_hide.html
+++ /dev/null
@@ -1,53 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
- <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
- <title>jSlider Show/hide test</title>
-
- <!-- bin/jquery.slider.min.css -->
- <link rel="stylesheet" href="../css/jslider.css" type="text/css">
- <link rel="stylesheet" href="../css/jslider.plastic.css" type="text/css">
- <!-- end -->
-
- <script type="text/javascript" src="../js/jquery-1.7.1.js"></script>
-
- <!-- bin/jquery.slider.min.js -->
- <script type="text/javascript" src="../js/jshashtable-2.1_src.js"></script>
- <script type="text/javascript" src="../js/jquery.numberformatter-1.2.3.js"></script>
- <script type="text/javascript" src="../js/tmpl.js"></script>
- <script type="text/javascript" src="../js/jquery.dependClass-0.1.js"></script>
- <script type="text/javascript" src="../js/draggable-0.1.js"></script>
- <script type="text/javascript" src="../js/jquery.slider.js"></script>
- <!-- end -->
-
- <style type="text/css" media="screen">
- body { background: #EEF0F7; }
- .layout { padding: 50px; font-family: Georgia, serif; }
- .layout-slider { margin-bottom: 60px; width: 50%; padding: 20px 0; }
- </style>
-
-</head>
-<body>
-
- <div class="layout">
-
- <div class="layout-slider" style="width: 100%; display: none;">
- Slider <span style="display: inline-block; width: 400px; padding: 0 5px;"><input id="Slider3" type="text" name="area" value="25;75" /></span> in string
- </div>
- <a href="#" id="trigger">Show/Hide</a>
-
- <script type="text/javascript" charset="utf-8">
- var layout = $(".layout-slider"),
- trigger = $("#trigger");
-
- jQuery("#Slider3").slider({ from: 0, to: 500, heterogeneity: ['50/100', '75/250'], scale: [0, '|', 50, '|', '100', '|', 250, '|', 500], limits: false, step: 1, dimension: '&nbsp;m<small>2</small>', skin: "plastic" });
-
- $(trigger).click( function(){
- layout.slideToggle("fast");
- $("#Slider3").slider().update();
- });
- </script>
-
- </div>
-</body>
-</html> \ No newline at end of file
diff --git a/library/jslider/tests/zero_value.html b/library/jslider/tests/zero_value.html
deleted file mode 100644
index 7d9e9f874..000000000
--- a/library/jslider/tests/zero_value.html
+++ /dev/null
@@ -1,64 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
- <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
- <title>jSlider Zero value test</title>
-
- <!-- bin/jquery.slider.min.css -->
- <link rel="stylesheet" href="../css/jslider.css" type="text/css">
- <link rel="stylesheet" href="../css/jslider.plastic.css" type="text/css">
- <!-- end -->
-
- <script type="text/javascript" src="../js/jquery-1.7.1.js"></script>
-
- <!-- bin/jquery.slider.min.js -->
- <script type="text/javascript" src="../js/jshashtable-2.1_src.js"></script>
- <script type="text/javascript" src="../js/jquery.numberformatter-1.2.3.js"></script>
- <script type="text/javascript" src="../js/tmpl.js"></script>
- <script type="text/javascript" src="../js/jquery.dependClass-0.1.js"></script>
- <script type="text/javascript" src="../js/draggable-0.1.js"></script>
- <script type="text/javascript" src="../js/jquery.slider.js"></script>
- <!-- end -->
-
- <style type="text/css" media="screen">
- body { background: #EEF0F7; }
- .layout { padding: 50px; font-family: Georgia, serif; }
- .layout-slider { margin-bottom: 60px; width: 50%; }
- </style>
-
-</head>
-<body>
-
- <div class="layout">
-
- <div class="layout-slider" style="width: 100%">
- Slider <span style="display: inline-block; width: 400px; padding: 0 5px;"><input id="Slider1" type="slider" name="price" value="50" /></span> in string
- </div>
- <script type="text/javascript" charset="utf-8">
- jQuery("#Slider1").slider({
- from: -50,
- to: 200,
- step: 5,
- dimension: '%',
- skin: 'plastic',
- scale: ['-50', '|', '0', '|', '50', '|', '100', '|', '150', '|', '200']
- });
- </script>
-
- <div class="layout-slider" style="width: 100%">
- Slider <span style="display: inline-block; width: 400px; padding: 0 5px;"><input id="Slider2" type="slider" name="price" value="-0.5;0.5" /></span> in string
- </div>
- <script type="text/javascript" charset="utf-8">
- jQuery("#Slider2").slider({
- from: -1,
- to: 1,
- step: 0.1,
- round: 1,
- dimension: 'px',
- skin: 'plastic'
- });
- </script>
-
- </div>
-</body>
-</html> \ No newline at end of file
diff --git a/library/jslider/tools/yuicompressor-2.4.7.jar b/library/jslider/tools/yuicompressor-2.4.7.jar
deleted file mode 100644
index 3c9a408aa..000000000
--- a/library/jslider/tools/yuicompressor-2.4.7.jar
+++ /dev/null
Binary files differ
diff --git a/library/justifiedGallery/dist/css/justifiedGallery.css b/library/justifiedGallery/dist/css/justifiedGallery.css
new file mode 100644
index 000000000..97585f3ed
--- /dev/null
+++ b/library/justifiedGallery/dist/css/justifiedGallery.css
@@ -0,0 +1,149 @@
+/*!
+ * Justified Gallery - v3.2.0
+ * http://miromannino.com/projects/justified-gallery/
+ * Copyright (c) 2014 Miro Mannino
+ * Licensed under the MIT license.
+ */
+@-webkit-keyframes justified-gallery-show-caption-animation {
+ from {
+ opacity: 0;
+ }
+ to {
+ opacity: 0.7;
+ }
+}
+@-moz-keyframes justified-gallery-show-caption-animation {
+ from {
+ opacity: 0;
+ }
+ to {
+ opacity: 0.7;
+ }
+}
+@-o-keyframes justified-gallery-show-caption-animation {
+ from {
+ opacity: 0;
+ }
+ to {
+ opacity: 0.7;
+ }
+}
+@keyframes justified-gallery-show-caption-animation {
+ from {
+ opacity: 0;
+ }
+ to {
+ opacity: 0.7;
+ }
+}
+@-webkit-keyframes justified-gallery-show-entry-animation {
+ from {
+ opacity: 0;
+ }
+ to {
+ opacity: 1.0;
+ }
+}
+@-moz-keyframes justified-gallery-show-entry-animation {
+ from {
+ opacity: 0;
+ }
+ to {
+ opacity: 1.0;
+ }
+}
+@-o-keyframes justified-gallery-show-entry-animation {
+ from {
+ opacity: 0;
+ }
+ to {
+ opacity: 1.0;
+ }
+}
+@keyframes justified-gallery-show-entry-animation {
+ from {
+ opacity: 0;
+ }
+ to {
+ opacity: 1.0;
+ }
+}
+.justified-gallery {
+ width: 100%;
+ position: relative;
+ overflow: hidden;
+}
+.justified-gallery > a,
+.justified-gallery > div {
+ position: absolute;
+ display: inline-block;
+ overflow: hidden;
+ opacity: 0;
+ filter: alpha(opacity=0);
+ /* IE8 or Earlier */
+}
+.justified-gallery > a > img,
+.justified-gallery > div > img {
+ position: absolute;
+ top: 50%;
+ left: 50%;
+ margin: 0;
+ padding: 0;
+ border: none;
+}
+.justified-gallery > a > .caption,
+.justified-gallery > div > .caption {
+ display: none;
+ position: absolute;
+ bottom: 0;
+ padding: 5px;
+ background-color: #000000;
+ left: 0;
+ right: 0;
+ margin: 0;
+ color: white;
+ font-size: 12px;
+ font-family: sans-serif;
+}
+.justified-gallery > a > .caption.caption-visible,
+.justified-gallery > div > .caption.caption-visible {
+ display: initial;
+ opacity: 0.7;
+ filter: "alpha(opacity=70)";
+ /* IE8 or Earlier */
+ -webkit-animation: justified-gallery-show-caption-animation 500ms 0 ease;
+ -moz-animation: justified-gallery-show-caption-animation 500ms 0 ease;
+ -ms-animation: justified-gallery-show-caption-animation 500ms 0 ease;
+}
+.justified-gallery > .entry-visible {
+ opacity: 1.0;
+ filter: alpha(opacity=100);
+ /* IE8 or Earlier */
+ -webkit-animation: justified-gallery-show-entry-animation 300ms 0 ease;
+ -moz-animation: justified-gallery-show-entry-animation 300ms 0 ease;
+ -ms-animation: justified-gallery-show-entry-animation 300ms 0 ease;
+}
+.justified-gallery > .spinner {
+ position: absolute;
+ bottom: 0;
+ margin-left: -24px;
+ padding: 10px 0 10px 0;
+ left: 50%;
+ opacity: initial;
+ filter: initial;
+ overflow: initial;
+}
+.justified-gallery > .spinner > span {
+ display: inline-block;
+ opacity: 0;
+ filter: alpha(opacity=0);
+ /* IE8 or Earlier */
+ width: 8px;
+ height: 8px;
+ margin: 0 4px 0 4px;
+ background-color: #000;
+ border-top-left-radius: 6px;
+ border-top-right-radius: 6px;
+ border-bottom-right-radius: 6px;
+ border-bottom-left-radius: 6px;
+}
diff --git a/library/justifiedGallery/dist/css/justifiedGallery.min.css b/library/justifiedGallery/dist/css/justifiedGallery.min.css
new file mode 100644
index 000000000..f59d7c7c1
--- /dev/null
+++ b/library/justifiedGallery/dist/css/justifiedGallery.min.css
@@ -0,0 +1,7 @@
+/*!
+ * Justified Gallery - v3.2.0
+ * http://miromannino.com/projects/justified-gallery/
+ * Copyright (c) 2014 Miro Mannino
+ * Licensed under the MIT license.
+ */
+@-webkit-keyframes justified-gallery-show-caption-animation{from{opacity:0}to{opacity:.7}}@-moz-keyframes justified-gallery-show-caption-animation{from{opacity:0}to{opacity:.7}}@-o-keyframes justified-gallery-show-caption-animation{from{opacity:0}to{opacity:.7}}@keyframes justified-gallery-show-caption-animation{from{opacity:0}to{opacity:.7}}@-webkit-keyframes justified-gallery-show-entry-animation{from{opacity:0}to{opacity:1}}@-moz-keyframes justified-gallery-show-entry-animation{from{opacity:0}to{opacity:1}}@-o-keyframes justified-gallery-show-entry-animation{from{opacity:0}to{opacity:1}}@keyframes justified-gallery-show-entry-animation{from{opacity:0}to{opacity:1}}.justified-gallery{width:100%;position:relative;overflow:hidden}.justified-gallery>a,.justified-gallery>div{position:absolute;display:inline-block;overflow:hidden;opacity:0;filter:alpha(opacity=0)}.justified-gallery>a>img,.justified-gallery>div>img{position:absolute;top:50%;left:50%;margin:0;padding:0;border:0}.justified-gallery>a>.caption,.justified-gallery>div>.caption{display:none;position:absolute;bottom:0;padding:5px;background-color:#000;left:0;right:0;margin:0;color:#fff;font-size:12px;font-weight:300;font-family:sans-serif}.justified-gallery>a>.caption.caption-visible,.justified-gallery>div>.caption.caption-visible{display:initial;opacity:.7;filter:"alpha(opacity=70)";-webkit-animation:justified-gallery-show-caption-animation 500ms 0 ease;-moz-animation:justified-gallery-show-caption-animation 500ms 0 ease;-ms-animation:justified-gallery-show-caption-animation 500ms 0 ease}.justified-gallery>.entry-visible{opacity:1;filter:alpha(opacity=100);-webkit-animation:justified-gallery-show-entry-animation 300ms 0 ease;-moz-animation:justified-gallery-show-entry-animation 300ms 0 ease;-ms-animation:justified-gallery-show-entry-animation 300ms 0 ease}.justified-gallery>.spinner{position:absolute;bottom:0;margin-left:-24px;padding:10px 0;left:50%;opacity:initial;filter:initial;overflow:initial}.justified-gallery>.spinner>span{display:inline-block;opacity:0;filter:alpha(opacity=0);width:8px;height:8px;margin:0 4px;background-color:#000;border-top-left-radius:6px;border-top-right-radius:6px;border-bottom-right-radius:6px;border-bottom-left-radius:6px} \ No newline at end of file
diff --git a/library/justifiedGallery/dist/js/jquery.justifiedGallery.js b/library/justifiedGallery/dist/js/jquery.justifiedGallery.js
new file mode 100644
index 000000000..7754ae437
--- /dev/null
+++ b/library/justifiedGallery/dist/js/jquery.justifiedGallery.js
@@ -0,0 +1,661 @@
+/*
+ * Justified Gallery - v3.4.0
+ * http://miromannino.com/projects/justified-gallery/
+ * Copyright (c) 2014 Miro Mannino
+ * Licensed under the MIT license.
+ */
+(function($) {
+
+ /* Events
+ jg.complete : called when all the gallery has been created
+ jg.resize : called when the gallery has been resized
+ */
+
+ $.fn.justifiedGallery = function (arg) {
+
+ // Default options
+ var defaults = {
+ sizeRangeSuffixes : {
+ 'lt100': '_t',
+ 'lt240': '_m',
+ 'lt320': '_n',
+ 'lt500': '',
+ 'lt640': '_z',
+ 'lt1024': '_b'
+ },
+ rowHeight : 120,
+ maxRowHeight : 0, //negative value = no limits, 0 = 1.5 * rowHeight
+ margins : 1,
+ lastRow : 'nojustify', // or can be 'justify' or 'hide'
+ justifyThreshold: 0.75, /* if row width / available space > 0.75 it will be always justified
+ (i.e. lastRow setting is not considered) */
+ fixedHeight : false,
+ waitThumbnailsLoad : true,
+ captions : true,
+ cssAnimation: false,
+ imagesAnimationDuration : 500, //ignored with css animations
+ captionSettings : { //ignored with css animations
+ animationDuration : 500,
+ visibleOpacity : 0.7,
+ nonVisibleOpacity : 0.0
+ },
+ rel : null, //rewrite the rel of each analyzed links
+ target : null, //rewrite the target of all links
+ extension : /\.[^.\\/]+$/,
+ refreshTime : 100,
+ randomize : false
+ };
+
+ function getSuffix(width, height, context) {
+ var longestSide;
+ longestSide = (width > height) ? width : height;
+ if (longestSide <= 100) {
+ return context.settings.sizeRangeSuffixes.lt100;
+ } else if (longestSide <= 240) {
+ return context.settings.sizeRangeSuffixes.lt240;
+ } else if (longestSide <= 320) {
+ return context.settings.sizeRangeSuffixes.lt320;
+ } else if (longestSide <= 500) {
+ return context.settings.sizeRangeSuffixes.lt500;
+ } else if (longestSide <= 640) {
+ return context.settings.sizeRangeSuffixes.lt640;
+ } else {
+ return context.settings.sizeRangeSuffixes.lt1024;
+ }
+ }
+
+ function endsWith(str, suffix) {
+ return str.indexOf(suffix, str.length - suffix.length) !== -1;
+ }
+
+ function removeSuffix(str, suffix) {
+ return str.substring(0, str.length - suffix.length);
+ }
+
+ function getUsedSuffix(str, context) {
+ var voidSuffix = false;
+ for (var si in context.settings.sizeRangeSuffixes) {
+ if (context.settings.sizeRangeSuffixes[si].length === 0) {
+ voidSuffix = true;
+ continue;
+ }
+ if (endsWith(str, context.settings.sizeRangeSuffixes[si])) {
+ return context.settings.sizeRangeSuffixes[si];
+ }
+ }
+
+ if (voidSuffix) return "";
+ else throw 'unknown suffix for ' + str;
+ }
+
+ /* Given an image src, with the width and the height, returns the new image src with the
+ best suffix to show the best quality thumbnail. */
+ function newSrc(imageSrc, imgWidth, imgHeight, context) {
+ var matchRes = imageSrc.match(context.settings.extension);
+ var ext = (matchRes != null) ? matchRes[0] : '';
+ var newImageSrc = imageSrc.replace(context.settings.extension, '');
+ newImageSrc = removeSuffix(newImageSrc, getUsedSuffix(newImageSrc, context));
+ newImageSrc += getSuffix(imgWidth, imgHeight, context) + ext;
+ return newImageSrc;
+ }
+
+ function onEntryMouseEnterForCaption (ev) {
+ var $caption = $(ev.currentTarget).find('.caption');
+ if (ev.data.settings.cssAnimation) {
+ $caption.addClass('caption-visible').removeClass('caption-hidden');
+ } else {
+ $caption.stop().fadeTo(ev.data.settings.captionSettings.animationDuration,
+ ev.data.settings.captionSettings.visibleOpacity);
+ }
+ }
+
+ function onEntryMouseLeaveForCaption (ev) {
+ var $caption = $(ev.currentTarget).find('.caption');
+ if (ev.data.settings.cssAnimation) {
+ $caption.removeClass('caption-visible').removeClass('caption-hidden');
+ } else {
+ $caption.stop().fadeTo(ev.data.settings.captionSettings.animationDuration,
+ ev.data.settings.captionSettings.nonVisibleOpacity);
+ }
+ }
+
+ function showImg($entry, callback, context) {
+ if (context.settings.cssAnimation) {
+ $entry.addClass('entry-visible');
+ callback();
+ } else {
+ $entry.stop().fadeTo(context.settings.imagesAnimationDuration, 1.0, callback);
+ }
+ }
+
+ function hideImgImmediately($entry, context) {
+ if (context.settings.cssAnimation) {
+ $entry.removeClass('entry-visible');
+ } else {
+ $entry.stop().fadeTo(0, 0);
+ }
+ }
+
+ function displayEntry($entry, x, y, imgWidth, imgHeight, rowHeight, context) {
+ var $image = $entry.find('img');
+ $image.css('width', imgWidth);
+ $image.css('height', imgHeight);
+ $image.css('margin-left', - imgWidth / 2);
+ $image.css('margin-top', - imgHeight / 2);
+ $entry.width(imgWidth);
+ $entry.height(rowHeight);
+ $entry.css('top', y);
+ $entry.css('left', x);
+
+ //DEBUG// console.log('displayEntry (w: ' + $image.width() + ' h: ' + $image.height());
+
+ // Image reloading for an high quality of thumbnails
+ var imageSrc = $image.attr('src');
+ var newImageSrc = newSrc(imageSrc, imgWidth, imgHeight, context);
+
+ $image.one('error', function () {
+ //DEBUG// console.log('revert the original image');
+ $image.attr('src', $image.data('jg.originalSrc')); //revert to the original thumbnail, we got it.
+ });
+
+ function loadNewImage() {
+ if (imageSrc !== newImageSrc) { //load the new image after the fadeIn
+ $image.attr('src', newImageSrc);
+ }
+ }
+
+ if ($image.data('jg.loaded') === 'skipped') {
+ $image.one('load', function() {
+ showImg($entry, loadNewImage, context);
+ $image.data('jg.loaded', 'loaded');
+ });
+ } else {
+ showImg($entry, loadNewImage, context);
+ }
+
+ // Captions ------------------------------
+ var captionMouseEvents = $entry.data('jg.captionMouseEvents');
+ if (context.settings.captions === true) {
+ var $imgCaption = $entry.find('.caption');
+ if ($imgCaption.length === 0) { // Create it if it doesn't exists
+ var caption = $image.attr('alt');
+ if (typeof caption === 'undefined') caption = $entry.attr('title');
+ if (typeof caption !== 'undefined') { // Create only we found something
+ $imgCaption = $('<div class="caption">' + caption + '</div>');
+ $entry.append($imgCaption);
+ }
+ }
+
+ // Create events (we check again the $imgCaption because it can be still inexistent)
+ if ($imgCaption.length !== 0) {
+ if (!context.settings.cssAnimation) {
+ $imgCaption.stop().fadeTo(context.settings.imagesAnimationDuration,
+ context.settings.captionSettings.nonVisibleOpacity);
+ }
+ if (typeof captionMouseEvents === 'undefined') {
+ captionMouseEvents = {
+ mouseenter: onEntryMouseEnterForCaption,
+ mouseleave: onEntryMouseLeaveForCaption
+ };
+ $entry.on('mouseenter', undefined, context, captionMouseEvents.mouseenter);
+ $entry.on('mouseleave', undefined, context, captionMouseEvents.mouseleave);
+ $entry.data('jg.captionMouseEvents', captionMouseEvents);
+ }
+ }
+ } else {
+ if (typeof captionMouseEvents !== 'undefined') {
+ $entry.off('mouseenter', undefined, context, captionMouseEvents.mouseenter);
+ $entry.off('mouseleave', undefined, context, captionMouseEvents.mouseleave);
+ $entry.removeData('jg.captionMouseEvents');
+ }
+ }
+
+ }
+
+ function prepareBuildingRow(context, isLastRow) {
+ var settings = context.settings;
+ var i, $entry, $image, imgAspectRatio, newImgW, newImgH, justify = true;
+ var minHeight = 0;
+ var availableWidth = context.galleryWidth - (
+ (context.buildingRow.entriesBuff.length - 1) * settings.margins);
+ var rowHeight = availableWidth / context.buildingRow.aspectRatio;
+ var justificable = context.buildingRow.width / availableWidth > settings.justifyThreshold;
+
+ //Skip the last row if we can't justify it and the lastRow == 'hide'
+ if (isLastRow && settings.lastRow === 'hide' && !justificable) {
+ for (i = 0; i < context.buildingRow.entriesBuff.length; i++) {
+ $entry = context.buildingRow.entriesBuff[i];
+ if (settings.cssAnimation)
+ $entry.removeClass('entry-visible');
+ else
+ $entry.stop().fadeTo(0, 0);
+ }
+ return -1;
+ }
+
+ // With lastRow = nojustify, justify if is justificable (the images will not become too big)
+ if (isLastRow && !justificable && settings.lastRow === 'nojustify') justify = false;
+
+ for (i = 0; i < context.buildingRow.entriesBuff.length; i++) {
+ $image = context.buildingRow.entriesBuff[i].find('img');
+ imgAspectRatio = $image.data('jg.imgw') / $image.data('jg.imgh');
+
+ if (justify) {
+ newImgW = rowHeight * imgAspectRatio;
+ newImgH = rowHeight;
+
+ /* With fixedHeight the newImgH must be greater than rowHeight.
+ In some cases here this is not satisfied (due to the justification).
+ But we comment it, because is better to have a shorter but justified row instead
+ to have a cropped image at the end. */
+ /*if (settings.fixedHeight && newImgH < settings.rowHeight) {
+ newImgW = settings.rowHeight * imgAspectRatio;
+ newImgH = settings.rowHeight;
+ }*/
+ } else {
+ newImgW = settings.rowHeight * imgAspectRatio;
+ newImgH = settings.rowHeight;
+ }
+
+ $image.data('jg.imgw', Math.ceil(newImgW));
+ $image.data('jg.imgh', Math.ceil(newImgH));
+ if (i === 0 || minHeight > newImgH) minHeight = newImgH;
+ }
+
+ if (settings.fixedHeight && minHeight > settings.rowHeight)
+ minHeight = settings.rowHeight;
+
+ return {minHeight: minHeight, justify: justify};
+ }
+
+ function rewind(context) {
+ context.lastAnalyzedIndex = -1;
+ context.buildingRow.entriesBuff = [];
+ context.buildingRow.aspectRatio = 0;
+ context.buildingRow.width = 0;
+ context.offY = 0;
+ }
+
+ function flushRow(context, isLastRow) {
+ var settings = context.settings;
+ var $entry, $image, minHeight, buildingRowRes, offX = 0;
+
+ //DEBUG// console.log('flush (isLastRow: ' + isLastRow + ')');
+
+ buildingRowRes = prepareBuildingRow(context, isLastRow);
+ minHeight = buildingRowRes.minHeight;
+ if (isLastRow && settings.lastRow === 'hide' && minHeight === -1) {
+ context.buildingRow.entriesBuff = [];
+ context.buildingRow.aspectRatio = 0;
+ context.buildingRow.width = 0;
+ return;
+ }
+
+ if (settings.maxRowHeight > 0 && settings.maxRowHeight < minHeight)
+ minHeight = settings.maxRowHeight;
+ else if (settings.maxRowHeight === 0 && (1.5 * settings.rowHeight) < minHeight)
+ minHeight = 1.5 * settings.rowHeight;
+
+ for (var i = 0; i < context.buildingRow.entriesBuff.length; i++) {
+ $entry = context.buildingRow.entriesBuff[i];
+ $image = $entry.find('img');
+ displayEntry($entry, offX, context.offY, $image.data('jg.imgw'),
+ $image.data('jg.imgh'), minHeight, context);
+ offX += $image.data('jg.imgw') + settings.margins;
+ }
+
+ //Gallery Height
+ context.$gallery.height(context.offY + minHeight +
+ (context.spinner.active ? context.spinner.$el.innerHeight() : 0)
+ );
+
+ if (!isLastRow || (minHeight <= context.settings.rowHeight && buildingRowRes.justify)) {
+ //Ready for a new row
+ context.offY += minHeight + context.settings.margins;
+
+ //DEBUG// console.log('minHeight: ' + minHeight + ' offY: ' + context.offY);
+
+ context.buildingRow.entriesBuff = []; //clear the array creating a new one
+ context.buildingRow.aspectRatio = 0;
+ context.buildingRow.width = 0;
+ context.$gallery.trigger('jg.rowflush');
+ }
+ }
+
+ function checkWidth(context) {
+ context.checkWidthIntervalId = setInterval(function () {
+ var galleryWidth = parseInt(context.$gallery.width(), 10);
+ if (context.galleryWidth !== galleryWidth) {
+ //DEBUG// console.log("resize. old: " + context.galleryWidth + " new: " + galleryWidth);
+
+ context.galleryWidth = galleryWidth;
+ rewind(context);
+
+ // Restart to analyze
+ startImgAnalyzer(context, true);
+ }
+ }, context.settings.refreshTime);
+ }
+
+ function startLoadingSpinnerAnimation(spinnerContext) {
+ clearInterval(spinnerContext.intervalId);
+ spinnerContext.intervalId = setInterval(function () {
+ if (spinnerContext.phase < spinnerContext.$points.length)
+ spinnerContext.$points.eq(spinnerContext.phase).fadeTo(spinnerContext.timeslot, 1);
+ else
+ spinnerContext.$points.eq(spinnerContext.phase - spinnerContext.$points.length)
+ .fadeTo(spinnerContext.timeslot, 0);
+ spinnerContext.phase = (spinnerContext.phase + 1) % (spinnerContext.$points.length * 2);
+ }, spinnerContext.timeslot);
+ }
+
+ function stopLoadingSpinnerAnimation(spinnerContext) {
+ clearInterval(spinnerContext.intervalId);
+ spinnerContext.intervalId = null;
+ }
+
+ function stopImgAnalyzerStarter(context) {
+ context.yield.flushed = 0;
+ if (context.imgAnalyzerTimeout !== null) clearTimeout(context.imgAnalyzerTimeout);
+ }
+
+ function startImgAnalyzer(context, isForResize) {
+ stopImgAnalyzerStarter(context);
+ context.imgAnalyzerTimeout = setTimeout(function () {
+ analyzeImages(context, isForResize);
+ }, 0.001);
+ analyzeImages(context, isForResize);
+ }
+
+ function analyzeImages(context, isForResize) {
+
+ /* //DEBUG//
+ var rnd = parseInt(Math.random() * 10000, 10);
+ console.log('analyzeImages ' + rnd + ' start');
+ console.log('images status: ');
+ for (var i = 0; i < context.entries.length; i++) {
+ var $entry = $(context.entries[i]);
+ var $image = $entry.find('img');
+ console.log(i + ' (alt: ' + $image.attr('alt') + 'loaded: ' + $image.data('jg.loaded') + ')');
+ }*/
+
+ /* The first row */
+ var settings = context.settings;
+ var isLastRow;
+
+ for (var i = context.lastAnalyzedIndex + 1; i < context.entries.length; i++) {
+ var $entry = $(context.entries[i]);
+ var $image = $entry.find('img');
+
+ if ($image.data('jg.loaded') === true || $image.data('jg.loaded') === 'skipped') {
+ isLastRow = i >= context.entries.length - 1;
+
+ var availableWidth = context.galleryWidth - (
+ (context.buildingRow.entriesBuff.length - 1) * settings.margins);
+ var imgAspectRatio = $image.data('jg.imgw') / $image.data('jg.imgh');
+ if (availableWidth / (context.buildingRow.aspectRatio + imgAspectRatio) < settings.rowHeight) {
+ flushRow(context, isLastRow);
+ if(++context.yield.flushed >= context.yield.every) {
+ //DEBUG// console.log("yield");
+ startImgAnalyzer(context, isForResize);
+ return;
+ }
+ }
+
+ context.buildingRow.entriesBuff.push($entry);
+ context.buildingRow.aspectRatio += imgAspectRatio;
+ context.buildingRow.width += imgAspectRatio * settings.rowHeight;
+ context.lastAnalyzedIndex = i;
+
+ } else if ($image.data('jg.loaded') !== 'error') {
+ return;
+ }
+ }
+
+ // Last row flush (the row is not full)
+ if (context.buildingRow.entriesBuff.length > 0) flushRow(context, true);
+
+ if (context.spinner.active) {
+ context.spinner.active = false;
+ context.$gallery.height(context.$gallery.height() - context.spinner.$el.innerHeight());
+ context.spinner.$el.detach();
+ stopLoadingSpinnerAnimation(context.spinner);
+ }
+
+ /* Stop, if there is, the timeout to start the analyzeImages.
+ This is because an image can be set loaded, and the timeout can be set,
+ but this image can be analyzed yet.
+ */
+ stopImgAnalyzerStarter(context);
+
+ //On complete callback
+ if (!isForResize)
+ context.$gallery.trigger('jg.complete');
+ else
+ context.$gallery.trigger('jg.resize');
+
+ //DEBUG// console.log('analyzeImages ' + rnd + ' end');
+ }
+
+ function checkSettings (context) {
+ var settings = context.settings;
+
+ function checkSuffixesRange(range) {
+ if (typeof settings.sizeRangeSuffixes[range] !== 'string')
+ throw 'sizeRangeSuffixes.' + range + ' must be a string';
+ }
+
+ function checkOrConvertNumber(parent, settingName) {
+ if (typeof parent[settingName] === 'string') {
+ parent[settingName] = parseFloat(parent[settingName], 10);
+ if (isNaN(parent[settingName])) throw 'invalid number for ' + settingName;
+ } else if (typeof parent[settingName] === 'number') {
+ if (isNaN(parent[settingName])) throw 'invalid number for ' + settingName;
+ } else {
+ throw settingName + ' must be a number';
+ }
+ }
+
+ if (typeof settings.sizeRangeSuffixes !== 'object')
+ throw 'sizeRangeSuffixes must be defined and must be an object';
+
+ checkSuffixesRange('lt100');
+ checkSuffixesRange('lt240');
+ checkSuffixesRange('lt320');
+ checkSuffixesRange('lt500');
+ checkSuffixesRange('lt640');
+ checkSuffixesRange('lt1024');
+
+ checkOrConvertNumber(settings, 'rowHeight');
+ checkOrConvertNumber(settings, 'maxRowHeight');
+
+ if (settings.maxRowHeight > 0 &&
+ settings.maxRowHeight < settings.rowHeight) {
+ settings.maxRowHeight = settings.rowHeight;
+ }
+
+ checkOrConvertNumber(settings, 'margins');
+
+ if (settings.lastRow !== 'nojustify' &&
+ settings.lastRow !== 'justify' &&
+ settings.lastRow !== 'hide') {
+ throw 'lastRow must be "nojustify", "justify" or "hide"';
+ }
+
+ checkOrConvertNumber(settings, 'justifyThreshold');
+ if (settings.justifyThreshold < 0 || settings.justifyThreshold > 1)
+ throw 'justifyThreshold must be in the interval [0,1]';
+ if (typeof settings.cssAnimation !== 'boolean') {
+ throw 'cssAnimation must be a boolean';
+ }
+
+ checkOrConvertNumber(settings.captionSettings, 'animationDuration');
+ checkOrConvertNumber(settings, 'imagesAnimationDuration');
+
+ checkOrConvertNumber(settings.captionSettings, 'visibleOpacity');
+ if (settings.captionSettings.visibleOpacity < 0 || settings.captionSettings.visibleOpacity > 1)
+ throw 'captionSettings.visibleOpacity must be in the interval [0, 1]';
+
+ checkOrConvertNumber(settings.captionSettings, 'nonVisibleOpacity');
+ if (settings.captionSettings.visibleOpacity < 0 || settings.captionSettings.visibleOpacity > 1)
+ throw 'captionSettings.nonVisibleOpacity must be in the interval [0, 1]';
+
+ if (typeof settings.fixedHeight !== 'boolean') {
+ throw 'fixedHeight must be a boolean';
+ }
+
+ if (typeof settings.captions !== 'boolean') {
+ throw 'captions must be a boolean';
+ }
+
+ checkOrConvertNumber(settings, 'refreshTime');
+
+ if (typeof settings.randomize !== 'boolean') {
+ throw 'randomize must be a boolean';
+ }
+
+ }
+
+ return this.each(function (index, gallery) {
+
+ var $gallery = $(gallery);
+ $gallery.addClass('justified-gallery');
+
+ var context = $gallery.data('jg.context');
+ if (typeof context === 'undefined') {
+
+ if (typeof arg !== 'undefined' && arg !== null && typeof arg !== 'object')
+ throw 'The argument must be an object';
+
+ // Spinner init
+ var $spinner = $('<div class="spinner"><span></span><span></span><span></span></div>');
+
+ //Context init
+ context = {
+ settings : $.extend({}, defaults, arg),
+ imgAnalyzerTimeout : null,
+ entries : null,
+ buildingRow : {
+ entriesBuff : [],
+ width : 0,
+ aspectRatio : 0
+ },
+ lastAnalyzedIndex : -1,
+ yield : {
+ every : 2, /* do a flush every context.yield.every flushes (
+ * must be greater than 1, else the analyzeImages will loop */
+ flushed : 0 //flushed rows without a yield
+ },
+ offY : 0,
+ spinner : {
+ active : false,
+ phase : 0,
+ timeslot : 150,
+ $el : $spinner,
+ $points : $spinner.find('span'),
+ intervalId : null
+ },
+ checkWidthIntervalId : null,
+ galleryWidth : $gallery.width(),
+ $gallery : $gallery
+ };
+
+ $gallery.data('jg.context', context);
+
+ } else if (arg === 'norewind') {
+ /* Hide the image of the buildingRow to prevent strange effects when the row will be
+ re-justified again */
+ for (var i = 0; i < context.buildingRow.entriesBuff.length; i++) {
+ hideImgImmediately(context.buildingRow.entriesBuff[i], context);
+ }
+ // In this case we don't rewind, and analyze all the images
+ } else {
+ context.settings = $.extend({}, context.settings, arg);
+ rewind(context);
+ }
+
+ checkSettings(context);
+
+ context.entries = $gallery.find('> a, > div:not(.spinner, #page-end)').toArray();
+ if (context.entries.length === 0) return;
+
+ // Randomize
+ if (context.settings.randomize) {
+ context.entries.sort(function () { return Math.random() * 2 - 1; });
+ $.each(context.entries, function () {
+ $(this).appendTo($gallery);
+ });
+ }
+
+ var imagesToLoad = false;
+ $.each(context.entries, function (index, entry) {
+ var $entry = $(entry);
+ var $image = $entry.find('img');
+
+ if ($image.data('jg.loaded') !== true && $image.data('jg.loaded') !== 'skipped') {
+
+ // Link Rel global overwrite
+ if (context.settings.rel !== null) $entry.attr('rel', context.settings.rel);
+
+ // Link Target global overwrite
+ if (context.settings.target !== null) $entry.attr('target', context.settings.target);
+
+ // Image src
+ var imageSrc = (typeof $image.data('safe-src') !== 'undefined') ?
+ $image.data('safe-src') : $image.attr('src');
+ $image.data('jg.originalSrc', imageSrc);
+ $image.attr('src', imageSrc);
+
+ var width = parseInt($image.attr('width'), 10);
+ var height = parseInt($image.attr('height'), 10);
+ if(context.settings.waitThumbnailsLoad !== true && !isNaN(width) && !isNaN(height)) {
+ $image.data('jg.imgw', width);
+ $image.data('jg.imgh', height);
+ $image.data('jg.loaded', 'skipped');
+ startImgAnalyzer(context, false);
+ return true;
+ }
+
+ $image.data('jg.loaded', false);
+ imagesToLoad = true;
+
+ // Spinner start
+ if (context.spinner.active === false) {
+ context.spinner.active = true;
+ $gallery.append(context.spinner.$el);
+ $gallery.height(context.offY + context.spinner.$el.innerHeight());
+ startLoadingSpinnerAnimation(context.spinner);
+ }
+
+ /* Check if the image is loaded or not using another image object.
+ We cannot use the 'complete' image property, because some browsers,
+ with a 404 set complete = true */
+ var loadImg = new Image();
+ var $loadImg = $(loadImg);
+ $loadImg.one('load', function imgLoaded () {
+ //DEBUG// console.log('img load (alt: ' + $image.attr('alt') + ')');
+ $image.off('load error');
+ $image.data('jg.imgw', loadImg.width);
+ $image.data('jg.imgh', loadImg.height);
+ $image.data('jg.loaded', true);
+ startImgAnalyzer(context, false);
+ });
+ $loadImg.one('error', function imgLoadError () {
+ //DEBUG// console.log('img error (alt: ' + $image.attr('alt') + ')');
+ $image.off('load error');
+ $image.data('jg.loaded', 'error');
+ startImgAnalyzer(context, false);
+ });
+ loadImg.src = imageSrc;
+
+ }
+
+ });
+
+ if (!imagesToLoad) startImgAnalyzer(context, false);
+ checkWidth(context);
+ });
+
+ };
+
+}(jQuery));
diff --git a/library/justifiedGallery/dist/js/jquery.justifiedGallery.min.js b/library/justifiedGallery/dist/js/jquery.justifiedGallery.min.js
new file mode 100644
index 000000000..2b4584466
--- /dev/null
+++ b/library/justifiedGallery/dist/js/jquery.justifiedGallery.min.js
@@ -0,0 +1,7 @@
+/*!
+ * Justified Gallery - v3.2.0
+ * http://miromannino.com/projects/justified-gallery/
+ * Copyright (c) 2014 Miro Mannino
+ * Licensed under the MIT license.
+ */
+!function(a){a.fn.justifiedGallery=function(b){function c(a,b,c){var d;return d=a>b?a:b,100>=d?c.settings.sizeRangeSuffixes.lt100:240>=d?c.settings.sizeRangeSuffixes.lt240:320>=d?c.settings.sizeRangeSuffixes.lt320:500>=d?c.settings.sizeRangeSuffixes.lt500:640>=d?c.settings.sizeRangeSuffixes.lt640:c.settings.sizeRangeSuffixes.lt1024}function d(b){var c=a(b.currentTarget).find(".caption");b.data.settings.cssAnimation?c.addClass("caption-visible").removeClass("caption-hidden"):c.stop().fadeTo(b.data.settings.captionSettings.animationDuration,b.data.settings.captionSettings.visibleOpacity)}function e(b){var c=a(b.currentTarget).find(".caption");b.data.settings.cssAnimation?c.removeClass("caption-visible").removeClass("caption-hidden"):c.stop().fadeTo(b.data.settings.captionSettings.animationDuration,b.data.settings.captionSettings.nonVisibleOpacity)}function f(b,f,g,h,i,j,k){var l=b.find("img");l.css("width",h),l.css("height",i),l.css("margin-left",-h/2),l.css("margin-top",-i/2),b.width(h),b.height(j),b.css("top",g),b.css("left",f);var m=l.attr("src"),n=m.replace(k.settings.extension,"").replace(k.usedSizeRangeRegExp,"")+c(h,i,k)+m.match(k.settings.extension)[0];l.one("error",function(){l.attr("src",l.data("jg.originalSrc"))});var o=function(){m!==n&&l.attr("src",n)};k.settings.cssAnimation?(b.addClass("entry-visible"),o()):b.stop().fadeTo(k.settings.imagesAnimationDuration,1,o);var p=b.data("jg.captionMouseEvents");if(k.settings.captions===!0){var q=b.find(".caption");if(0===q.length){var r=l.attr("alt");"undefined"==typeof r&&(r=b.attr("title")),"undefined"!=typeof r&&(q=a('<div class="caption">'+r+"</div>"),b.append(q))}0!==q.length&&(k.settings.cssAnimation||q.stop().fadeTo(k.settings.imagesAnimationDuration,k.settings.captionSettings.nonVisibleOpacity),"undefined"==typeof p&&(p={mouseenter:d,mouseleave:e},b.on("mouseenter",void 0,k,p.mouseenter),b.on("mouseleave",void 0,k,p.mouseleave),b.data("jg.captionMouseEvents",p)))}else"undefined"!=typeof p&&(b.off("mouseenter",void 0,k,p.mouseenter),b.off("mouseleave",void 0,k,p.mouseleave),b.removeData("jg.captionMouseEvents"))}function g(a,b){var c,d,e,f,g,h,i=!0,j=0,k=a.galleryWidth-(a.buildingRow.entriesBuff.length-1)*a.settings.margins,l=k/a.buildingRow.aspectRatio,m=a.buildingRow.width/k>a.settings.justifyThreshold;if(b&&"hide"===a.settings.lastRow&&!m){for(c=0;c<a.buildingRow.entriesBuff.length;c++)d=a.buildingRow.entriesBuff[c],a.settings.cssAnimation?d.removeClass("entry-visible"):d.stop().fadeTo(0,0);return-1}for(b&&"nojustify"===a.settings.lastRow&&!m&&(i=!1),c=0;c<a.buildingRow.entriesBuff.length;c++)e=a.buildingRow.entriesBuff[c].find("img"),f=e.data("jg.imgw")/e.data("jg.imgh"),i?(g=l*f,h=l):(g=a.settings.rowHeight*f,h=a.settings.rowHeight),e.data("jg.imgw",Math.ceil(g)),e.data("jg.imgh",Math.ceil(h)),(0===c||j>h)&&(j=h);return a.settings.fixedHeight&&j>a.settings.rowHeight&&(j=a.settings.rowHeight),j}function h(a){a.lastAnalyzedIndex=-1,a.buildingRow.entriesBuff=[],a.buildingRow.aspectRatio=0,a.buildingRow.width=0,a.offY=0,a.firstRowFlushed=!1}function i(a,b){var c,d,e,h=0;if(e=g(a,b),b&&"hide"===a.settings.lastRow&&-1===e)return a.buildingRow.entriesBuff=[],a.buildingRow.aspectRatio=0,void(a.buildingRow.width=0);a.settings.maxRowHeight>0&&a.settings.maxRowHeight<e?e=a.settings.maxRowHeight:0===a.settings.maxRowHeight&&1.5*a.settings.rowHeight<e&&(e=1.5*a.settings.rowHeight);for(var i=0;i<a.buildingRow.entriesBuff.length;i++)c=a.buildingRow.entriesBuff[i],d=c.find("img"),f(c,h,a.offY,d.data("jg.imgw"),d.data("jg.imgh"),e,a),h+=d.data("jg.imgw")+a.settings.margins;a.$gallery.height(a.offY+e+(a.spinner.active?a.spinner.$el.innerHeight():0)),b||(a.offY+=e+a.settings.margins,a.buildingRow.entriesBuff=[],a.buildingRow.aspectRatio=0,a.buildingRow.width=0,a.firstRowFlushed=!0,a.$gallery.trigger("jg.rowflush"))}function j(a){a.checkWidthIntervalId=setInterval(function(){var b=parseInt(a.$gallery.width(),10);a.galleryWidth!==b&&(a.galleryWidth=b,h(a),n(a,!0))},a.settings.refreshTime)}function k(a){clearInterval(a.intervalId),a.intervalId=setInterval(function(){a.phase<a.$points.length?a.$points.eq(a.phase).fadeTo(a.timeslot,1):a.$points.eq(a.phase-a.$points.length).fadeTo(a.timeslot,0),a.phase=(a.phase+1)%(2*a.$points.length)},a.timeslot)}function l(a){clearInterval(a.intervalId),a.intervalId=null}function m(a){a.yield.flushed=0,null!==a.imgAnalyzerTimeout&&clearTimeout(a.imgAnalyzerTimeout)}function n(a,b){m(a),a.imgAnalyzerTimeout=setTimeout(function(){o(a,b)},.001),o(a,b)}function o(b,c){for(var d,e=b.lastAnalyzedIndex+1;e<b.entries.length;e++){var f=a(b.entries[e]),g=f.find("img");if(g.data("jg.loaded")===!0){d=b.firstRowFlushed&&e>=b.entries.length-1;var h=b.galleryWidth-(b.buildingRow.entriesBuff.length-1)*b.settings.margins,j=g.data("jg.imgw")/g.data("jg.imgh");if(h/(b.buildingRow.aspectRatio+j)<b.settings.rowHeight&&(i(b,d),++b.yield.flushed>=b.yield.every))return void n(b,c);b.buildingRow.entriesBuff.push(f),b.buildingRow.aspectRatio+=j,b.buildingRow.width+=j*b.settings.rowHeight,b.lastAnalyzedIndex=e}else if("error"!==g.data("jg.loaded"))return}b.buildingRow.entriesBuff.length>0&&i(b,b.firstRowFlushed),b.spinner.active&&(b.spinner.active=!1,b.$gallery.height(b.$gallery.height()-b.spinner.$el.innerHeight()),b.spinner.$el.detach(),l(b.spinner)),m(b),b.$gallery.trigger(c?"jg.resize":"jg.complete")}function p(a){function b(b){if("string"!=typeof a.settings.sizeRangeSuffixes[b])throw"sizeRangeSuffixes."+b+" must be a string"}function c(a,b){if("string"==typeof a[b]){if(a[b]=parseFloat(a[b],10),isNaN(a[b]))throw"invalid number for "+b}else{if("number"!=typeof a[b])throw b+" must be a number";if(isNaN(a[b]))throw"invalid number for "+b}}if("object"!=typeof a.settings.sizeRangeSuffixes)throw"sizeRangeSuffixes must be defined and must be an object";if(b("lt100"),b("lt240"),b("lt320"),b("lt500"),b("lt640"),b("lt1024"),c(a.settings,"rowHeight"),c(a.settings,"maxRowHeight"),c(a.settings,"margins"),"nojustify"!==a.settings.lastRow&&"justify"!==a.settings.lastRow&&"hide"!==a.settings.lastRow)throw'lastRow must be "nojustify", "justify" or "hide"';if(c(a.settings,"justifyThreshold"),a.settings.justifyThreshold<0||a.settings.justifyThreshold>1)throw"justifyThreshold must be in the interval [0,1]";if("boolean"!=typeof a.settings.cssAnimation)throw"cssAnimation must be a boolean";if(c(a.settings.captionSettings,"animationDuration"),c(a.settings,"imagesAnimationDuration"),c(a.settings.captionSettings,"visibleOpacity"),a.settings.captionSettings.visibleOpacity<0||a.settings.captionSettings.visibleOpacity>1)throw"captionSettings.visibleOpacity must be in the interval [0, 1]";if(c(a.settings.captionSettings,"nonVisibleOpacity"),a.settings.captionSettings.visibleOpacity<0||a.settings.captionSettings.visibleOpacity>1)throw"captionSettings.nonVisibleOpacity must be in the interval [0, 1]";if("boolean"!=typeof a.settings.fixedHeight)throw"fixedHeight must be a boolean";if("boolean"!=typeof a.settings.captions)throw"captions must be a boolean";if(c(a.settings,"refreshTime"),"boolean"!=typeof a.settings.randomize)throw"randomize must be a boolean"}var q={sizeRangeSuffixes:{lt100:"_t",lt240:"_m",lt320:"_n",lt500:"",lt640:"_z",lt1024:"_b"},rowHeight:120,maxRowHeight:0,margins:1,lastRow:"nojustify",justifyThreshold:.75,fixedHeight:!1,captions:!0,cssAnimation:!1,imagesAnimationDuration:300,captionSettings:{animationDuration:500,visibleOpacity:.7,nonVisibleOpacity:0},rel:null,target:null,extension:/\.[^.]+$/,refreshTime:250,randomize:!1};return this.each(function(c,d){var e=a(d);e.addClass("justified-gallery");var f=e.data("jg.context");if("undefined"==typeof f){if("undefined"!=typeof b&&null!==b&&"object"!=typeof b)throw"The argument must be an object";var g=a('<div class="spinner"><span></span><span></span><span></span></div>');f={settings:a.extend({},q,b),imgAnalyzerTimeout:null,entries:null,buildingRow:{entriesBuff:[],width:0,aspectRatio:0},lastAnalyzedIndex:-1,firstRowFlushed:!1,"yield":{every:2,flushed:0},offY:0,spinner:{active:!1,phase:0,timeslot:150,$el:g,$points:g.find("span"),intervalId:null},checkWidthIntervalId:null,galleryWidth:e.width(),$gallery:e},e.data("jg.context",f)}else"norewind"===b||(f.settings=a.extend({},f.settings,b),h(f));if(p(f),f.entries=e.find("> a, > div").toArray(),0!==f.entries.length){f.settings.randomize&&(f.entries.sort(function(){return 2*Math.random()-1}),a.each(f.entries,function(){a(this).appendTo(e)})),f.usedSizeRangeRegExp=new RegExp("("+f.settings.sizeRangeSuffixes.lt100+"|"+f.settings.sizeRangeSuffixes.lt240+"|"+f.settings.sizeRangeSuffixes.lt320+"|"+f.settings.sizeRangeSuffixes.lt500+"|"+f.settings.sizeRangeSuffixes.lt640+"|"+f.settings.sizeRangeSuffixes.lt1024+")$"),f.settings.maxRowHeight>0&&f.settings.maxRowHeight<f.settings.rowHeight&&(f.settings.maxRowHeight=f.settings.rowHeight);var i=!1;a.each(f.entries,function(b,c){var d=a(c),g=d.find("img");if(g.data("jg.loaded")!==!0){g.data("jg.loaded",!1),i=!0,f.spinner.active===!1&&(f.spinner.active=!0,e.append(f.spinner.$el),e.height(f.offY+f.spinner.$el.innerHeight()),k(f.spinner)),null!==f.settings.rel&&d.attr("rel",f.settings.rel),null!==f.settings.target&&d.attr("target",f.settings.target);var h="undefined"!=typeof g.data("safe-src")?g.data("safe-src"):g.attr("src");g.data("jg.originalSrc",h),g.attr("src",h);var j=new Image,l=a(j);l.one("load",function(){g.off("load error"),g.data("jg.imgw",j.width),g.data("jg.imgh",j.height),g.data("jg.loaded",!0),n(f,!1)}),l.one("error",function(){g.off("load error"),g.data("jg.loaded","error"),n(f,!1)}),j.src=h}}),i||n(f,!1),j(f)}})}}(jQuery); \ No newline at end of file
diff --git a/library/oauth/LICENSE b/library/oauth/LICENSE
new file mode 100644
index 000000000..7078ba251
--- /dev/null
+++ b/library/oauth/LICENSE
@@ -0,0 +1,37 @@
+PHP OAuth API - Access API authorized by the users
+using the OAuth protocol
+
+This LICENSE is in the BSD license style.
+
+License Version Control:
+@(#) $Id: LICENSE,v 1.2 2013/02/11 05:17:53 mlemos Exp $
+
+Copyright (c) 2012-2013, Manuel Lemos
+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 Manuel Lemos nor the names of his 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 REGENTS 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/library/oauth/LICENSE.txt b/library/oauth/LICENSE.txt
new file mode 100644
index 000000000..29e83e173
--- /dev/null
+++ b/library/oauth/LICENSE.txt
@@ -0,0 +1,36 @@
+HTTP client PHP class
+
+This LICENSE is in the BSD license style.
+
+License Version Control:
+@(#) $Id: LICENSE.txt,v 1.1 2006/04/17 19:44:04 mlemos Exp $
+
+Copyright (c) 1999 - 2006, Manuel Lemos
+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 Manuel Lemos nor the names of his 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 REGENTS 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/library/oauth/http.php b/library/oauth/http.php
new file mode 100644
index 000000000..cb336fcfa
--- /dev/null
+++ b/library/oauth/http.php
@@ -0,0 +1,2092 @@
+<?php
+/*
+ * http.php
+ *
+ * @(#) $Header: /opt2/ena/metal/http/http.php,v 1.90 2013/02/20 11:45:28 mlemos Exp $
+ *
+ */
+
+define('HTTP_CLIENT_ERROR_UNSPECIFIED_ERROR', -1);
+define('HTTP_CLIENT_ERROR_NO_ERROR', 0);
+define('HTTP_CLIENT_ERROR_INVALID_SERVER_ADDRESS', 1);
+define('HTTP_CLIENT_ERROR_CANNOT_CONNECT', 2);
+define('HTTP_CLIENT_ERROR_COMMUNICATION_FAILURE', 3);
+define('HTTP_CLIENT_ERROR_CANNOT_ACCESS_LOCAL_FILE', 4);
+define('HTTP_CLIENT_ERROR_PROTOCOL_FAILURE', 5);
+define('HTTP_CLIENT_ERROR_INVALID_PARAMETERS', 6);
+
+class http_class
+{
+ var $host_name="";
+ var $host_port=0;
+ var $proxy_host_name="";
+ var $proxy_host_port=80;
+ var $socks_host_name = '';
+ var $socks_host_port = 1080;
+ var $socks_version = '5';
+
+ var $protocol="http";
+ var $request_method="GET";
+ var $user_agent='httpclient (http://www.phpclasses.org/httpclient $Revision: 1.90 $)';
+ var $accept='';
+ var $authentication_mechanism="";
+ var $user;
+ var $password;
+ var $realm;
+ var $workstation;
+ var $proxy_authentication_mechanism="";
+ var $proxy_user;
+ var $proxy_password;
+ var $proxy_realm;
+ var $proxy_workstation;
+ var $request_uri="";
+ var $request="";
+ var $request_headers=array();
+ var $request_user;
+ var $request_password;
+ var $request_realm;
+ var $request_workstation;
+ var $proxy_request_user;
+ var $proxy_request_password;
+ var $proxy_request_realm;
+ var $proxy_request_workstation;
+ var $request_body="";
+ var $request_arguments=array();
+ var $protocol_version="1.1";
+ var $timeout=0;
+ var $data_timeout=0;
+ var $debug=0;
+ var $log_debug=0;
+ var $debug_response_body=1;
+ var $html_debug=0;
+ var $support_cookies=1;
+ var $cookies=array();
+ var $error="";
+ var $error_code = HTTP_CLIENT_ERROR_NO_ERROR;
+ var $exclude_address="";
+ var $follow_redirect=0;
+ var $redirection_limit=5;
+ var $response_status="";
+ var $response_message="";
+ var $file_buffer_length=8000;
+ var $force_multipart_form_post=0;
+ var $prefer_curl = 0;
+ var $keep_alive = 1;
+ var $sasl_authenticate = 1;
+
+ /* private variables - DO NOT ACCESS */
+
+ var $state="Disconnected";
+ var $use_curl=0;
+ var $connection=0;
+ var $content_length=0;
+ var $response="";
+ var $read_response=0;
+ var $read_length=0;
+ var $request_host="";
+ var $next_token="";
+ var $redirection_level=0;
+ var $chunked=0;
+ var $remaining_chunk=0;
+ var $last_chunk_read=0;
+ var $months=array(
+ "Jan"=>"01",
+ "Feb"=>"02",
+ "Mar"=>"03",
+ "Apr"=>"04",
+ "May"=>"05",
+ "Jun"=>"06",
+ "Jul"=>"07",
+ "Aug"=>"08",
+ "Sep"=>"09",
+ "Oct"=>"10",
+ "Nov"=>"11",
+ "Dec"=>"12");
+ var $session='';
+ var $connection_close=0;
+ var $force_close = 0;
+ var $connected_host = '';
+ var $connected_port = -1;
+ var $connected_ssl = 0;
+
+ /* Private methods - DO NOT CALL */
+
+ Function Tokenize($string,$separator="")
+ {
+ if(!strcmp($separator,""))
+ {
+ $separator=$string;
+ $string=$this->next_token;
+ }
+ for($character=0;$character<strlen($separator);$character++)
+ {
+ if(GetType($position=strpos($string,$separator[$character]))=="integer")
+ $found=(IsSet($found) ? min($found,$position) : $position);
+ }
+ if(IsSet($found))
+ {
+ $this->next_token=substr($string,$found+1);
+ return(substr($string,0,$found));
+ }
+ else
+ {
+ $this->next_token="";
+ return($string);
+ }
+ }
+
+ Function CookieEncode($value, $name)
+ {
+ return($name ? str_replace("=", "%25", $value) : str_replace(";", "%3B", $value));
+ }
+
+ Function SetError($error, $error_code = HTTP_CLIENT_ERROR_UNSPECIFIED_ERROR)
+ {
+ $this->error_code = $error_code;
+ return($this->error=$error);
+ }
+
+ Function SetPHPError($error, &$php_error_message, $error_code = HTTP_CLIENT_ERROR_UNSPECIFIED_ERROR)
+ {
+ if(IsSet($php_error_message)
+ && strlen($php_error_message))
+ $error.=": ".$php_error_message;
+ return($this->SetError($error, $error_code));
+ }
+
+ Function SetDataAccessError($error,$check_connection=0)
+ {
+ $this->error=$error;
+ $this->error_code = HTTP_CLIENT_ERROR_COMMUNICATION_FAILURE;
+ if(!$this->use_curl
+ && function_exists("socket_get_status"))
+ {
+ $status=socket_get_status($this->connection);
+ if($status["timed_out"])
+ $this->error.=": data access time out";
+ elseif($status["eof"])
+ {
+ if($check_connection)
+ $this->error="";
+ else
+ $this->error.=": the server disconnected";
+ }
+ }
+ }
+
+ Function OutputDebug($message)
+ {
+ if($this->log_debug)
+ error_log($message);
+ else
+ {
+ $message.="\n";
+ if($this->html_debug)
+ $message=str_replace("\n","<br />\n",HtmlEntities($message));
+ echo $message;
+ flush();
+ }
+ }
+
+ Function GetLine()
+ {
+ for($line="";;)
+ {
+ if($this->use_curl)
+ {
+ $eol=strpos($this->response,"\n",$this->read_response);
+ $data=($eol ? substr($this->response,$this->read_response,$eol+1-$this->read_response) : "");
+ $this->read_response+=strlen($data);
+ }
+ else
+ {
+ if(feof($this->connection))
+ {
+ $this->SetDataAccessError("reached the end of data while reading from the HTTP server connection");
+ return(0);
+ }
+ $data=fgets($this->connection,100);
+ }
+ if(GetType($data)!="string"
+ || strlen($data)==0)
+ {
+ $this->SetDataAccessError("it was not possible to read line from the HTTP server");
+ return(0);
+ }
+ $line.=$data;
+ $length=strlen($line);
+ if($length
+ && !strcmp(substr($line,$length-1,1),"\n"))
+ {
+ $length-=(($length>=2 && !strcmp(substr($line,$length-2,1),"\r")) ? 2 : 1);
+ $line=substr($line,0,$length);
+ if($this->debug)
+ $this->OutputDebug("S $line");
+ return($line);
+ }
+ }
+ }
+
+ Function PutLine($line)
+ {
+ if($this->debug)
+ $this->OutputDebug("C $line");
+ if(!fputs($this->connection,$line."\r\n"))
+ {
+ $this->SetDataAccessError("it was not possible to send a line to the HTTP server");
+ return(0);
+ }
+ return(1);
+ }
+
+ Function PutData($data)
+ {
+ if(strlen($data))
+ {
+ if($this->debug)
+ $this->OutputDebug('C '.$data);
+ if(!fputs($this->connection,$data))
+ {
+ $this->SetDataAccessError("it was not possible to send data to the HTTP server");
+ return(0);
+ }
+ }
+ return(1);
+ }
+
+ Function FlushData()
+ {
+ if(!fflush($this->connection))
+ {
+ $this->SetDataAccessError("it was not possible to send data to the HTTP server");
+ return(0);
+ }
+ return(1);
+ }
+
+ Function ReadChunkSize()
+ {
+ if($this->remaining_chunk==0)
+ {
+ $debug=$this->debug;
+ if(!$this->debug_response_body)
+ $this->debug=0;
+ $line=$this->GetLine();
+ $this->debug=$debug;
+ if(GetType($line)!="string")
+ return($this->SetError("could not read chunk start: ".$this->error, $this->error_code));
+ $this->remaining_chunk=hexdec($line);
+ if($this->remaining_chunk == 0)
+ {
+ if(!$this->debug_response_body)
+ $this->debug=0;
+ $line=$this->GetLine();
+ $this->debug=$debug;
+ if(GetType($line)!="string")
+ return($this->SetError("could not read chunk end: ".$this->error, $this->error_code));
+ }
+ }
+ return("");
+ }
+
+ Function ReadBytes($length)
+ {
+ if($this->use_curl)
+ {
+ $bytes=substr($this->response,$this->read_response,min($length,strlen($this->response)-$this->read_response));
+ $this->read_response+=strlen($bytes);
+ if($this->debug
+ && $this->debug_response_body
+ && strlen($bytes))
+ $this->OutputDebug("S ".$bytes);
+ }
+ else
+ {
+ if($this->chunked)
+ {
+ for($bytes="",$remaining=$length;$remaining;)
+ {
+ if(strlen($this->ReadChunkSize()))
+ return("");
+ if($this->remaining_chunk==0)
+ {
+ $this->last_chunk_read=1;
+ break;
+ }
+ $ask=min($this->remaining_chunk,$remaining);
+ $chunk=@fread($this->connection,$ask);
+ $read=strlen($chunk);
+ if($read==0)
+ {
+ $this->SetDataAccessError("it was not possible to read data chunk from the HTTP server");
+ return("");
+ }
+ if($this->debug
+ && $this->debug_response_body)
+ $this->OutputDebug("S ".$chunk);
+ $bytes.=$chunk;
+ $this->remaining_chunk-=$read;
+ $remaining-=$read;
+ if($this->remaining_chunk==0)
+ {
+ if(feof($this->connection))
+ return($this->SetError("reached the end of data while reading the end of data chunk mark from the HTTP server", HTTP_CLIENT_ERROR_PROTOCOL_FAILURE));
+ $data=@fread($this->connection,2);
+ if(strcmp($data,"\r\n"))
+ {
+ $this->SetDataAccessError("it was not possible to read end of data chunk from the HTTP server");
+ return("");
+ }
+ }
+ }
+ }
+ else
+ {
+ $bytes=@fread($this->connection,$length);
+ if(strlen($bytes))
+ {
+ if($this->debug
+ && $this->debug_response_body)
+ $this->OutputDebug("S ".$bytes);
+ }
+ else
+ $this->SetDataAccessError("it was not possible to read data from the HTTP server", $this->connection_close);
+ }
+ }
+ return($bytes);
+ }
+
+ Function EndOfInput()
+ {
+ if($this->use_curl)
+ return($this->read_response>=strlen($this->response));
+ if($this->chunked)
+ return($this->last_chunk_read);
+ if($this->content_length_set)
+ return($this->content_length <= $this->read_length);
+ return(feof($this->connection));
+ }
+
+ Function Resolve($domain, &$ip, $server_type)
+ {
+ if(preg_match('/^[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}$/',$domain))
+ $ip=$domain;
+ else
+ {
+ if($this->debug)
+ $this->OutputDebug('Resolving '.$server_type.' server domain "'.$domain.'"...');
+ if(!strcmp($ip=@gethostbyname($domain),$domain))
+ $ip="";
+ }
+ if(strlen($ip)==0
+ || (strlen($this->exclude_address)
+ && !strcmp(@gethostbyname($this->exclude_address),$ip)))
+ return($this->SetError("could not resolve the host domain \"".$domain."\"", HTTP_CLIENT_ERROR_INVALID_SERVER_ADDRESS));
+ return('');
+ }
+
+ Function Connect($host_name, $host_port, $ssl, $server_type = 'HTTP')
+ {
+ $domain=$host_name;
+ $port = $host_port;
+ if(strlen($error = $this->Resolve($domain, $ip, $server_type)))
+ return($error);
+ if(strlen($this->socks_host_name))
+ {
+ switch($this->socks_version)
+ {
+ case '4':
+ $version = 4;
+ break;
+ case '5':
+ $version = 5;
+ break;
+ default:
+ return('it was not specified a supported SOCKS protocol version');
+ break;
+ }
+ $host_ip = $ip;
+ $port = $this->socks_host_port;
+ $host_server_type = $server_type;
+ $server_type = 'SOCKS';
+ if(strlen($error = $this->Resolve($this->socks_host_name, $ip, $server_type)))
+ return($error);
+ }
+ if($this->debug)
+ $this->OutputDebug('Connecting to '.$server_type.' server IP '.$ip.' port '.$port.'...');
+ if($ssl)
+ $ip="ssl://".$host_name;
+ if(($this->connection=($this->timeout ? @fsockopen($ip, $port, $errno, $error, $this->timeout) : @fsockopen($ip, $port, $errno)))==0)
+ {
+ $error_code = HTTP_CLIENT_ERROR_CANNOT_CONNECT;
+ switch($errno)
+ {
+ case -3:
+ return($this->SetError("socket could not be created", $error_code));
+ case -4:
+ return($this->SetError("dns lookup on hostname \"".$host_name."\" failed", $error_code));
+ case -5:
+ return($this->SetError("connection refused or timed out", $error_code));
+ case -6:
+ return($this->SetError("fdopen() call failed", $error_code));
+ case -7:
+ return($this->SetError("setvbuf() call failed", $error_code));
+ default:
+ return($this->SetPHPError($errno." could not connect to the host \"".$host_name."\"",$php_errormsg, $error_code));
+ }
+ }
+ else
+ {
+ if($this->data_timeout
+ && function_exists("socket_set_timeout"))
+ socket_set_timeout($this->connection,$this->data_timeout,0);
+ if(strlen($this->socks_host_name))
+ {
+ if($this->debug)
+ $this->OutputDebug('Connected to the SOCKS server '.$this->socks_host_name);
+ $send_error = 'it was not possible to send data to the SOCKS server';
+ $receive_error = 'it was not possible to receive data from the SOCKS server';
+ switch($version)
+ {
+ case 4:
+ $command = 1;
+ $user = '';
+ if(!fputs($this->connection, chr($version).chr($command).pack('nN', $host_port, ip2long($host_ip)).$user.Chr(0)))
+ $error = $this->SetDataAccessError($send_error);
+ else
+ {
+ $response = fgets($this->connection, 9);
+ if(strlen($response) != 8)
+ $error = $this->SetDataAccessError($receive_error);
+ else
+ {
+ $socks_errors = array(
+ "\x5a"=>'',
+ "\x5b"=>'request rejected',
+ "\x5c"=>'request failed because client is not running identd (or not reachable from the server)',
+ "\x5d"=>'request failed because client\'s identd could not confirm the user ID string in the request',
+ );
+ $error_code = $response[1];
+ $error = (IsSet($socks_errors[$error_code]) ? $socks_errors[$error_code] : 'unknown');
+ if(strlen($error))
+ $error = 'SOCKS error: '.$error;
+ }
+ }
+ break;
+ case 5:
+ if($this->debug)
+ $this->OutputDebug('Negotiating the authentication method ...');
+ $methods = 1;
+ $method = 0;
+ if(!fputs($this->connection, chr($version).chr($methods).chr($method)))
+ $error = $this->SetDataAccessError($send_error);
+ else
+ {
+ $response = fgets($this->connection, 3);
+ if(strlen($response) != 2)
+ $error = $this->SetDataAccessError($receive_error);
+ elseif(Ord($response[1]) != $method)
+ $error = 'the SOCKS server requires an authentication method that is not yet supported';
+ else
+ {
+ if($this->debug)
+ $this->OutputDebug('Connecting to '.$host_server_type.' server IP '.$host_ip.' port '.$host_port.'...');
+ $command = 1;
+ $address_type = 1;
+ if(!fputs($this->connection, chr($version).chr($command)."\x00".chr($address_type).pack('Nn', ip2long($host_ip), $host_port)))
+ $error = $this->SetDataAccessError($send_error);
+ else
+ {
+ $response = fgets($this->connection, 11);
+ if(strlen($response) != 10)
+ $error = $this->SetDataAccessError($receive_error);
+ else
+ {
+ $socks_errors = array(
+ "\x00"=>'',
+ "\x01"=>'general SOCKS server failure',
+ "\x02"=>'connection not allowed by ruleset',
+ "\x03"=>'Network unreachable',
+ "\x04"=>'Host unreachable',
+ "\x05"=>'Connection refused',
+ "\x06"=>'TTL expired',
+ "\x07"=>'Command not supported',
+ "\x08"=>'Address type not supported'
+ );
+ $error_code = $response[1];
+ $error = (IsSet($socks_errors[$error_code]) ? $socks_errors[$error_code] : 'unknown');
+ if(strlen($error))
+ $error = 'SOCKS error: '.$error;
+ }
+ }
+ }
+ }
+ break;
+ default:
+ $error = 'support for SOCKS protocol version '.$this->socks_version.' is not yet implemented';
+ break;
+ }
+ if(strlen($error))
+ {
+ fclose($this->connection);
+ return($error);
+ }
+ }
+ if($this->debug)
+ $this->OutputDebug("Connected to $host_name");
+ if(strlen($this->proxy_host_name)
+ && !strcmp(strtolower($this->protocol), 'https'))
+ {
+ if(function_exists('stream_socket_enable_crypto')
+ && in_array('ssl', stream_get_transports()))
+ $this->state = "ConnectedToProxy";
+ else
+ {
+ $this->OutputDebug("It is not possible to start SSL after connecting to the proxy server. If the proxy refuses to forward the SSL request, you may need to upgrade to PHP 5.1 or later with OpenSSL support enabled.");
+ $this->state="Connected";
+ }
+ }
+ else
+ $this->state="Connected";
+ return("");
+ }
+ }
+
+ Function Disconnect()
+ {
+ if($this->debug)
+ $this->OutputDebug("Disconnected from ".$this->connected_host);
+ if($this->use_curl)
+ {
+ curl_close($this->connection);
+ $this->response="";
+ }
+ else
+ fclose($this->connection);
+ $this->state="Disconnected";
+ return("");
+ }
+
+ /* Public methods */
+
+ Function GetRequestArguments($url, &$arguments)
+ {
+ $this->error = '';
+ $this->error_code = HTTP_CLIENT_ERROR_NO_ERROR;
+ $arguments=array();
+ $url = str_replace(' ', '%20', $url);
+ $parameters=@parse_url($url);
+ if(!$parameters)
+ return($this->SetError("it was not specified a valid URL", HTTP_CLIENT_ERROR_INVALID_PARAMETERS));
+ if(!IsSet($parameters["scheme"]))
+ return($this->SetError("it was not specified the protocol type argument", HTTP_CLIENT_ERROR_INVALID_PARAMETERS));
+ switch(strtolower($parameters["scheme"]))
+ {
+ case "http":
+ case "https":
+ $arguments["Protocol"]=$parameters["scheme"];
+ break;
+ default:
+ return($parameters["scheme"]." connection scheme is not yet supported");
+ }
+ if(!IsSet($parameters["host"]))
+ return($this->SetError("it was not specified the connection host argument", HTTP_CLIENT_ERROR_INVALID_PARAMETERS));
+ $arguments["HostName"]=$parameters["host"];
+ $arguments["Headers"]=array("Host"=>$parameters["host"].(IsSet($parameters["port"]) ? ":".$parameters["port"] : ""));
+ if(IsSet($parameters["user"]))
+ {
+ $arguments["AuthUser"]=UrlDecode($parameters["user"]);
+ if(!IsSet($parameters["pass"]))
+ $arguments["AuthPassword"]="";
+ }
+ if(IsSet($parameters["pass"]))
+ {
+ if(!IsSet($parameters["user"]))
+ $arguments["AuthUser"]="";
+ $arguments["AuthPassword"]=UrlDecode($parameters["pass"]);
+ }
+ if(IsSet($parameters["port"]))
+ {
+ if(strcmp($parameters["port"],strval(intval($parameters["port"]))))
+ return($this->SetError("it was not specified a valid connection host argument", HTTP_CLIENT_ERROR_INVALID_PARAMETERS));
+ $arguments["HostPort"]=intval($parameters["port"]);
+ }
+ else
+ $arguments["HostPort"]=0;
+ $arguments["RequestURI"]=(IsSet($parameters["path"]) ? $parameters["path"] : "/").(IsSet($parameters["query"]) ? "?".$parameters["query"] : "");
+ if(strlen($this->user_agent))
+ $arguments["Headers"]["User-Agent"]=$this->user_agent;
+ if(strlen($this->accept))
+ $arguments["Headers"]["Accept"]=$this->accept;
+ return("");
+ }
+
+ Function Open($arguments)
+ {
+ if(strlen($this->error))
+ return($this->error);
+ $error_code = HTTP_CLIENT_ERROR_UNSPECIFIED_ERROR;
+ if(IsSet($arguments["HostName"]))
+ $this->host_name=$arguments["HostName"];
+ if(IsSet($arguments["HostPort"]))
+ $this->host_port=$arguments["HostPort"];
+ if(IsSet($arguments["ProxyHostName"]))
+ $this->proxy_host_name=$arguments["ProxyHostName"];
+ if(IsSet($arguments["ProxyHostPort"]))
+ $this->proxy_host_port=$arguments["ProxyHostPort"];
+ if(IsSet($arguments["SOCKSHostName"]))
+ $this->socks_host_name=$arguments["SOCKSHostName"];
+ if(IsSet($arguments["SOCKSHostPort"]))
+ $this->socks_host_port=$arguments["SOCKSHostPort"];
+ if(IsSet($arguments["SOCKSVersion"]))
+ $this->socks_version=$arguments["SOCKSVersion"];
+ if(IsSet($arguments["Protocol"]))
+ $this->protocol=$arguments["Protocol"];
+ switch(strtolower($this->protocol))
+ {
+ case "http":
+ $default_port=80;
+ break;
+ case "https":
+ $default_port=443;
+ break;
+ default:
+ return($this->SetError("it was not specified a valid connection protocol", HTTP_CLIENT_ERROR_INVALID_PARAMETERS));
+ }
+ if(strlen($this->proxy_host_name)==0)
+ {
+ if(strlen($this->host_name)==0)
+ return($this->SetError("it was not specified a valid hostname", HTTP_CLIENT_ERROR_INVALID_PARAMETERS));
+ $host_name=$this->host_name;
+ $host_port=($this->host_port ? $this->host_port : $default_port);
+ $server_type = 'HTTP';
+ }
+ else
+ {
+ $host_name=$this->proxy_host_name;
+ $host_port=$this->proxy_host_port;
+ $server_type = 'HTTP proxy';
+ }
+ $ssl=(strtolower($this->protocol)=="https" && strlen($this->proxy_host_name)==0);
+ if($ssl
+ && strlen($this->socks_host_name))
+ return($this->SetError('establishing SSL connections via a SOCKS server is not yet supported', HTTP_CLIENT_ERROR_INVALID_PARAMETERS));
+ $this->use_curl=($ssl && $this->prefer_curl && function_exists("curl_init"));
+ switch($this->state)
+ {
+ case 'Connected':
+ if(!strcmp($host_name, $this->connected_host)
+ && intval($host_port) == $this->connected_port
+ && intval($ssl) == $this->connected_ssl)
+ {
+ if($this->debug)
+ $this->OutputDebug("Reusing connection to ".$this->connected_host);
+ return('');
+ }
+ if(strlen($error = $this->Disconnect()))
+ return($error);
+ case "Disconnected":
+ break;
+ default:
+ return("1 already connected");
+ }
+ if($this->debug)
+ $this->OutputDebug("Connecting to ".$this->host_name);
+ if($this->use_curl)
+ {
+ $error=(($this->connection=curl_init($this->protocol."://".$this->host_name.($host_port==$default_port ? "" : ":".strval($host_port))."/")) ? "" : "Could not initialize a CURL session");
+ if(strlen($error)==0)
+ {
+ if(IsSet($arguments["SSLCertificateFile"]))
+ curl_setopt($this->connection,CURLOPT_SSLCERT,$arguments["SSLCertificateFile"]);
+ if(IsSet($arguments["SSLCertificatePassword"]))
+ curl_setopt($this->connection,CURLOPT_SSLCERTPASSWD,$arguments["SSLCertificatePassword"]);
+ if(IsSet($arguments["SSLKeyFile"]))
+ curl_setopt($this->connection,CURLOPT_SSLKEY,$arguments["SSLKeyFile"]);
+ if(IsSet($arguments["SSLKeyPassword"]))
+ curl_setopt($this->connection,CURLOPT_SSLKEYPASSWD,$arguments["SSLKeyPassword"]);
+ }
+ $this->state="Connected";
+ }
+ else
+ {
+ $error="";
+ if(strlen($this->proxy_host_name)
+ && (IsSet($arguments["SSLCertificateFile"])
+ || IsSet($arguments["SSLCertificateFile"])))
+ $error="establishing SSL connections using certificates or private keys via non-SSL proxies is not supported";
+ else
+ {
+ if($ssl)
+ {
+ if(IsSet($arguments["SSLCertificateFile"]))
+ $error="establishing SSL connections using certificates is only supported when the cURL extension is enabled";
+ elseif(IsSet($arguments["SSLKeyFile"]))
+ $error="establishing SSL connections using a private key is only supported when the cURL extension is enabled";
+ else
+ {
+ $version=explode(".",function_exists("phpversion") ? phpversion() : "3.0.7");
+ $php_version=intval($version[0])*1000000+intval($version[1])*1000+intval($version[2]);
+ if($php_version<4003000)
+ $error="establishing SSL connections requires at least PHP version 4.3.0 or having the cURL extension enabled";
+ elseif(!function_exists("extension_loaded")
+ || !extension_loaded("openssl"))
+ $error="establishing SSL connections requires the OpenSSL extension enabled";
+ }
+ }
+ if(strlen($error)==0)
+ {
+ $error=$this->Connect($host_name, $host_port, $ssl, $server_type);
+ $error_code = $this->error_code;
+ }
+ }
+ }
+ if(strlen($error))
+ return($this->SetError($error, $error_code));
+ $this->session=md5(uniqid(""));
+ $this->connected_host = $host_name;
+ $this->connected_port = intval($host_port);
+ $this->connected_ssl = intval($ssl);
+ return("");
+ }
+
+ Function Close($force = 0)
+ {
+ if($this->state=="Disconnected")
+ return("1 already disconnected");
+ if(!$this->force_close
+ && $this->keep_alive
+ && !$force
+ && $this->state == 'ResponseReceived')
+ {
+ if($this->debug)
+ $this->OutputDebug('Keeping the connection alive to '.$this->connected_host);
+ $this->state = 'Connected';
+ return('');
+ }
+ return($this->Disconnect());
+ }
+
+ Function PickCookies(&$cookies,$secure)
+ {
+ if(IsSet($this->cookies[$secure]))
+ {
+ $now=gmdate("Y-m-d H-i-s");
+ for($domain=0,Reset($this->cookies[$secure]);$domain<count($this->cookies[$secure]);Next($this->cookies[$secure]),$domain++)
+ {
+ $domain_pattern=Key($this->cookies[$secure]);
+ $match=strlen($this->request_host)-strlen($domain_pattern);
+ if($match>=0
+ && !strcmp($domain_pattern,substr($this->request_host,$match))
+ && ($match==0
+ || $domain_pattern[0]=="."
+ || $this->request_host[$match-1]=="."))
+ {
+ for(Reset($this->cookies[$secure][$domain_pattern]),$path_part=0;$path_part<count($this->cookies[$secure][$domain_pattern]);Next($this->cookies[$secure][$domain_pattern]),$path_part++)
+ {
+ $path=Key($this->cookies[$secure][$domain_pattern]);
+ if(strlen($this->request_uri)>=strlen($path)
+ && substr($this->request_uri,0,strlen($path))==$path)
+ {
+ for(Reset($this->cookies[$secure][$domain_pattern][$path]),$cookie=0;$cookie<count($this->cookies[$secure][$domain_pattern][$path]);Next($this->cookies[$secure][$domain_pattern][$path]),$cookie++)
+ {
+ $cookie_name=Key($this->cookies[$secure][$domain_pattern][$path]);
+ $expires=$this->cookies[$secure][$domain_pattern][$path][$cookie_name]["expires"];
+ if($expires==""
+ || strcmp($now,$expires)<0)
+ $cookies[$cookie_name]=$this->cookies[$secure][$domain_pattern][$path][$cookie_name];
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+
+ Function GetFileDefinition($file, &$definition)
+ {
+ $name="";
+ if(IsSet($file["FileName"]))
+ $name=basename($file["FileName"]);
+ if(IsSet($file["Name"]))
+ $name=$file["Name"];
+ if(strlen($name)==0)
+ return("it was not specified the file part name");
+ if(IsSet($file["Content-Type"]))
+ {
+ $content_type=$file["Content-Type"];
+ $type=$this->Tokenize(strtolower($content_type),"/");
+ $sub_type=$this->Tokenize("");
+ switch($type)
+ {
+ case "text":
+ case "image":
+ case "audio":
+ case "video":
+ case "application":
+ case "message":
+ break;
+ case "automatic":
+ switch($sub_type)
+ {
+ case "name":
+ switch(GetType($dot=strrpos($name,"."))=="integer" ? strtolower(substr($name,$dot)) : "")
+ {
+ case ".xls":
+ $content_type="application/excel";
+ break;
+ case ".hqx":
+ $content_type="application/macbinhex40";
+ break;
+ case ".doc":
+ case ".dot":
+ case ".wrd":
+ $content_type="application/msword";
+ break;
+ case ".pdf":
+ $content_type="application/pdf";
+ break;
+ case ".pgp":
+ $content_type="application/pgp";
+ break;
+ case ".ps":
+ case ".eps":
+ case ".ai":
+ $content_type="application/postscript";
+ break;
+ case ".ppt":
+ $content_type="application/powerpoint";
+ break;
+ case ".rtf":
+ $content_type="application/rtf";
+ break;
+ case ".tgz":
+ case ".gtar":
+ $content_type="application/x-gtar";
+ break;
+ case ".gz":
+ $content_type="application/x-gzip";
+ break;
+ case ".php":
+ case ".php3":
+ $content_type="application/x-httpd-php";
+ break;
+ case ".js":
+ $content_type="application/x-javascript";
+ break;
+ case ".ppd":
+ case ".psd":
+ $content_type="application/x-photoshop";
+ break;
+ case ".swf":
+ case ".swc":
+ case ".rf":
+ $content_type="application/x-shockwave-flash";
+ break;
+ case ".tar":
+ $content_type="application/x-tar";
+ break;
+ case ".zip":
+ $content_type="application/zip";
+ break;
+ case ".mid":
+ case ".midi":
+ case ".kar":
+ $content_type="audio/midi";
+ break;
+ case ".mp2":
+ case ".mp3":
+ case ".mpga":
+ $content_type="audio/mpeg";
+ break;
+ case ".ra":
+ $content_type="audio/x-realaudio";
+ break;
+ case ".wav":
+ $content_type="audio/wav";
+ break;
+ case ".bmp":
+ $content_type="image/bitmap";
+ break;
+ case ".gif":
+ $content_type="image/gif";
+ break;
+ case ".iff":
+ $content_type="image/iff";
+ break;
+ case ".jb2":
+ $content_type="image/jb2";
+ break;
+ case ".jpg":
+ case ".jpe":
+ case ".jpeg":
+ $content_type="image/jpeg";
+ break;
+ case ".jpx":
+ $content_type="image/jpx";
+ break;
+ case ".png":
+ $content_type="image/png";
+ break;
+ case ".tif":
+ case ".tiff":
+ $content_type="image/tiff";
+ break;
+ case ".wbmp":
+ $content_type="image/vnd.wap.wbmp";
+ break;
+ case ".xbm":
+ $content_type="image/xbm";
+ break;
+ case ".css":
+ $content_type="text/css";
+ break;
+ case ".txt":
+ $content_type="text/plain";
+ break;
+ case ".htm":
+ case ".html":
+ $content_type="text/html";
+ break;
+ case ".xml":
+ $content_type="text/xml";
+ break;
+ case ".mpg":
+ case ".mpe":
+ case ".mpeg":
+ $content_type="video/mpeg";
+ break;
+ case ".qt":
+ case ".mov":
+ $content_type="video/quicktime";
+ break;
+ case ".avi":
+ $content_type="video/x-ms-video";
+ break;
+ case ".eml":
+ $content_type="message/rfc822";
+ break;
+ default:
+ $content_type="application/octet-stream";
+ break;
+ }
+ break;
+ default:
+ return($content_type." is not a supported automatic content type detection method");
+ }
+ break;
+ default:
+ return($content_type." is not a supported file content type");
+ }
+ }
+ else
+ $content_type="application/octet-stream";
+ $definition=array(
+ "Content-Type"=>$content_type,
+ "NAME"=>$name
+ );
+ if(IsSet($file["FileName"]))
+ {
+ if(GetType($length=@filesize($file["FileName"]))!="integer")
+ {
+ $error="it was not possible to determine the length of the file ".$file["FileName"];
+ if(IsSet($php_errormsg)
+ && strlen($php_errormsg))
+ $error.=": ".$php_errormsg;
+ if(!file_exists($file["FileName"]))
+ $error="it was not possible to access the file ".$file["FileName"];
+ return($error);
+ }
+ $definition["FILENAME"]=$file["FileName"];
+ $definition["Content-Length"]=$length;
+ }
+ elseif(IsSet($file["Data"]))
+ $definition["Content-Length"]=strlen($definition["DATA"]=$file["Data"]);
+ else
+ return("it was not specified a valid file name");
+ return("");
+ }
+
+ Function ConnectFromProxy($arguments, &$headers)
+ {
+ if(!$this->PutLine('CONNECT '.$this->host_name.':'.($this->host_port ? $this->host_port : 443).' HTTP/1.0')
+ || (strlen($this->user_agent)
+ && !$this->PutLine('User-Agent: '.$this->user_agent))
+ || (strlen($this->accept)
+ && !$this->PutLine('Accept: '.$this->accept))
+ || (IsSet($arguments['Headers']['Proxy-Authorization'])
+ && !$this->PutLine('Proxy-Authorization: '.$arguments['Headers']['Proxy-Authorization']))
+ || !$this->PutLine(''))
+ {
+ $this->Disconnect();
+ return($this->error);
+ }
+ $this->state = "ConnectSent";
+ if(strlen($error=$this->ReadReplyHeadersResponse($headers)))
+ return($error);
+ $proxy_authorization="";
+ while(!strcmp($this->response_status, "100"))
+ {
+ $this->state="ConnectSent";
+ if(strlen($error=$this->ReadReplyHeadersResponse($headers)))
+ return($error);
+ }
+ switch($this->response_status)
+ {
+ case "200":
+ if(!@stream_socket_enable_crypto($this->connection, 1, STREAM_CRYPTO_METHOD_SSLv23_CLIENT))
+ {
+ $this->SetPHPError('it was not possible to start a SSL encrypted connection via this proxy', $php_errormsg, HTTP_CLIENT_ERROR_COMMUNICATION_FAILURE);
+ $this->Disconnect();
+ return($this->error);
+ }
+ $this->state = "Connected";
+ break;
+ case "407":
+ if(strlen($error=$this->Authenticate($headers, -1, $proxy_authorization, $this->proxy_request_user, $this->proxy_request_password, $this->proxy_request_realm, $this->proxy_request_workstation)))
+ return($error);
+ break;
+ default:
+ return($this->SetError("unable to send request via proxy", HTTP_CLIENT_ERROR_PROTOCOL_FAILURE));
+ }
+ return("");
+ }
+
+ Function SendRequest($arguments)
+ {
+ if(strlen($this->error))
+ return($this->error);
+ if(IsSet($arguments["ProxyUser"]))
+ $this->proxy_request_user=$arguments["ProxyUser"];
+ elseif(IsSet($this->proxy_user))
+ $this->proxy_request_user=$this->proxy_user;
+ if(IsSet($arguments["ProxyPassword"]))
+ $this->proxy_request_password=$arguments["ProxyPassword"];
+ elseif(IsSet($this->proxy_password))
+ $this->proxy_request_password=$this->proxy_password;
+ if(IsSet($arguments["ProxyRealm"]))
+ $this->proxy_request_realm=$arguments["ProxyRealm"];
+ elseif(IsSet($this->proxy_realm))
+ $this->proxy_request_realm=$this->proxy_realm;
+ if(IsSet($arguments["ProxyWorkstation"]))
+ $this->proxy_request_workstation=$arguments["ProxyWorkstation"];
+ elseif(IsSet($this->proxy_workstation))
+ $this->proxy_request_workstation=$this->proxy_workstation;
+ switch($this->state)
+ {
+ case "Disconnected":
+ return($this->SetError("connection was not yet established", HTTP_CLIENT_ERROR_INVALID_PARAMETERS));
+ case "Connected":
+ $connect = 0;
+ break;
+ case "ConnectedToProxy":
+ if(strlen($error = $this->ConnectFromProxy($arguments, $headers)))
+ return($error);
+ $connect = 1;
+ break;
+ default:
+ return($this->SetError("can not send request in the current connection state", HTTP_CLIENT_ERROR_INVALID_PARAMETERS));
+ }
+ if(IsSet($arguments["RequestMethod"]))
+ $this->request_method=$arguments["RequestMethod"];
+ if(IsSet($arguments["User-Agent"]))
+ $this->user_agent=$arguments["User-Agent"];
+ if(!IsSet($arguments["Headers"]["User-Agent"])
+ && strlen($this->user_agent))
+ $arguments["Headers"]["User-Agent"]=$this->user_agent;
+ if(IsSet($arguments["KeepAlive"]))
+ $this->keep_alive=intval($arguments["KeepAlive"]);
+ if(!IsSet($arguments["Headers"]["Connection"])
+ && $this->keep_alive)
+ $arguments["Headers"]["Connection"]='Keep-Alive';
+ if(IsSet($arguments["Accept"]))
+ $this->user_agent=$arguments["Accept"];
+ if(!IsSet($arguments["Headers"]["Accept"])
+ && strlen($this->accept))
+ $arguments["Headers"]["Accept"]=$this->accept;
+ if(strlen($this->request_method)==0)
+ return($this->SetError("it was not specified a valid request method", HTTP_CLIENT_ERROR_INVALID_PARAMETERS));
+ if(IsSet($arguments["RequestURI"]))
+ $this->request_uri=$arguments["RequestURI"];
+ if(strlen($this->request_uri)==0
+ || substr($this->request_uri,0,1)!="/")
+ return($this->SetError("it was not specified a valid request URI", HTTP_CLIENT_ERROR_INVALID_PARAMETERS));
+ $this->request_arguments=$arguments;
+ $this->request_headers=(IsSet($arguments["Headers"]) ? $arguments["Headers"] : array());
+ $body_length=0;
+ $this->request_body="";
+ $get_body=1;
+ if($this->request_method=="POST"
+ || $this->request_method=="PUT")
+ {
+ if(IsSet($arguments['StreamRequest']))
+ {
+ $get_body = 0;
+ $this->request_headers["Transfer-Encoding"]="chunked";
+ }
+ elseif(IsSet($arguments["PostFiles"])
+ || ($this->force_multipart_form_post
+ && IsSet($arguments["PostValues"])))
+ {
+ $boundary="--".md5(uniqid(time()));
+ $this->request_headers["Content-Type"]="multipart/form-data; boundary=".$boundary.(IsSet($arguments["CharSet"]) ? "; charset=".$arguments["CharSet"] : "");
+ $post_parts=array();
+ if(IsSet($arguments["PostValues"]))
+ {
+ $values=$arguments["PostValues"];
+ if(GetType($values)!="array")
+ return($this->SetError("it was not specified a valid POST method values array", HTTP_CLIENT_ERROR_INVALID_PARAMETERS));
+ for(Reset($values),$value=0;$value<count($values);Next($values),$value++)
+ {
+ $input=Key($values);
+ $headers="--".$boundary."\r\nContent-Disposition: form-data; name=\"".$input."\"\r\n\r\n";
+ $data=$values[$input];
+ $post_parts[]=array("HEADERS"=>$headers,"DATA"=>$data);
+ $body_length+=strlen($headers)+strlen($data)+strlen("\r\n");
+ }
+ }
+ $body_length+=strlen("--".$boundary."--\r\n");
+ $files=(IsSet($arguments["PostFiles"]) ? $arguments["PostFiles"] : array());
+ Reset($files);
+ $end=(GetType($input=Key($files))!="string");
+ for(;!$end;)
+ {
+ if(strlen($error=$this->GetFileDefinition($files[$input],$definition)))
+ return("3 ".$error);
+ $headers="--".$boundary."\r\nContent-Disposition: form-data; name=\"".$input."\"; filename=\"".$definition["NAME"]."\"\r\nContent-Type: ".$definition["Content-Type"]."\r\n\r\n";
+ $part=count($post_parts);
+ $post_parts[$part]=array("HEADERS"=>$headers);
+ if(IsSet($definition["FILENAME"]))
+ {
+ $post_parts[$part]["FILENAME"]=$definition["FILENAME"];
+ $data="";
+ }
+ else
+ $data=$definition["DATA"];
+ $post_parts[$part]["DATA"]=$data;
+ $body_length+=strlen($headers)+$definition["Content-Length"]+strlen("\r\n");
+ Next($files);
+ $end=(GetType($input=Key($files))!="string");
+ }
+ $get_body=0;
+ }
+ elseif(IsSet($arguments["PostValues"]))
+ {
+ $values=$arguments["PostValues"];
+ if(GetType($values)!="array")
+ return($this->SetError("it was not specified a valid POST method values array", HTTP_CLIENT_ERROR_INVALID_PARAMETERS));
+ for(Reset($values),$value=0;$value<count($values);Next($values),$value++)
+ {
+ $k=Key($values);
+ if(GetType($values[$k])=="array")
+ {
+ for($v = 0; $v < count($values[$k]); $v++)
+ {
+ if($value+$v>0)
+ $this->request_body.="&";
+ $this->request_body.=UrlEncode($k)."=".UrlEncode($values[$k][$v]);
+ }
+ }
+ else
+ {
+ if($value>0)
+ $this->request_body.="&";
+ $this->request_body.=UrlEncode($k)."=".UrlEncode($values[$k]);
+ }
+ }
+ $this->request_headers["Content-Type"]="application/x-www-form-urlencoded".(IsSet($arguments["CharSet"]) ? "; charset=".$arguments["CharSet"] : "");
+ $get_body=0;
+ }
+ }
+ if($get_body
+ && (IsSet($arguments["Body"])
+ || IsSet($arguments["BodyStream"])))
+ {
+ if(IsSet($arguments["Body"]))
+ $this->request_body=$arguments["Body"];
+ else
+ {
+ $stream=$arguments["BodyStream"];
+ $this->request_body="";
+ for($part=0; $part<count($stream); $part++)
+ {
+ if(IsSet($stream[$part]["Data"]))
+ $this->request_body.=$stream[$part]["Data"];
+ elseif(IsSet($stream[$part]["File"]))
+ {
+ if(!($file=@fopen($stream[$part]["File"],"rb")))
+ return($this->SetPHPError("could not open upload file ".$stream[$part]["File"], $php_errormsg, HTTP_CLIENT_ERROR_CANNOT_ACCESS_LOCAL_FILE));
+ while(!feof($file))
+ {
+ if(GetType($block=@fread($file,$this->file_buffer_length))!="string")
+ {
+ $error=$this->SetPHPError("could not read body stream file ".$stream[$part]["File"], $php_errormsg, HTTP_CLIENT_ERROR_CANNOT_ACCESS_LOCAL_FILE);
+ fclose($file);
+ return($error);
+ }
+ $this->request_body.=$block;
+ }
+ fclose($file);
+ }
+ else
+ return("5 it was not specified a valid file or data body stream element at position ".$part);
+ }
+ }
+ if(!IsSet($this->request_headers["Content-Type"]))
+ $this->request_headers["Content-Type"]="application/octet-stream".(IsSet($arguments["CharSet"]) ? "; charset=".$arguments["CharSet"] : "");
+ }
+ if(IsSet($arguments["AuthUser"]))
+ $this->request_user=$arguments["AuthUser"];
+ elseif(IsSet($this->user))
+ $this->request_user=$this->user;
+ if(IsSet($arguments["AuthPassword"]))
+ $this->request_password=$arguments["AuthPassword"];
+ elseif(IsSet($this->password))
+ $this->request_password=$this->password;
+ if(IsSet($arguments["AuthRealm"]))
+ $this->request_realm=$arguments["AuthRealm"];
+ elseif(IsSet($this->realm))
+ $this->request_realm=$this->realm;
+ if(IsSet($arguments["AuthWorkstation"]))
+ $this->request_workstation=$arguments["AuthWorkstation"];
+ elseif(IsSet($this->workstation))
+ $this->request_workstation=$this->workstation;
+ if(strlen($this->proxy_host_name)==0
+ || $connect)
+ $request_uri=$this->request_uri;
+ else
+ {
+ switch(strtolower($this->protocol))
+ {
+ case "http":
+ $default_port=80;
+ break;
+ case "https":
+ $default_port=443;
+ break;
+ }
+ $request_uri=strtolower($this->protocol)."://".$this->host_name.(($this->host_port==0 || $this->host_port==$default_port) ? "" : ":".$this->host_port).$this->request_uri;
+ }
+ if($this->use_curl)
+ {
+ $version=(GetType($v=curl_version())=="array" ? (IsSet($v["version"]) ? $v["version"] : "0.0.0") : (preg_match("/^libcurl\\/([0-9]+\\.[0-9]+\\.[0-9]+)/",$v,$m) ? $m[1] : "0.0.0"));
+ $curl_version=100000*intval($this->Tokenize($version,"."))+1000*intval($this->Tokenize("."))+intval($this->Tokenize(""));
+ $protocol_version=($curl_version<713002 ? "1.0" : $this->protocol_version);
+ }
+ else
+ $protocol_version=$this->protocol_version;
+ $this->request=$this->request_method." ".$request_uri." HTTP/".$protocol_version;
+ if($body_length
+ || ($body_length=strlen($this->request_body))
+ || !strcmp($this->request_method, 'POST'))
+ $this->request_headers["Content-Length"]=$body_length;
+ for($headers=array(),$host_set=0,Reset($this->request_headers),$header=0;$header<count($this->request_headers);Next($this->request_headers),$header++)
+ {
+ $header_name=Key($this->request_headers);
+ $header_value=$this->request_headers[$header_name];
+ if(GetType($header_value)=="array")
+ {
+ for(Reset($header_value),$value=0;$value<count($header_value);Next($header_value),$value++)
+ $headers[]=$header_name.": ".$header_value[Key($header_value)];
+ }
+ else
+ $headers[]=$header_name.": ".$header_value;
+ if(strtolower(Key($this->request_headers))=="host")
+ {
+ $this->request_host=strtolower($header_value);
+ $host_set=1;
+ }
+ }
+ if(!$host_set)
+ {
+ $headers[]="Host: ".$this->host_name;
+ $this->request_host=strtolower($this->host_name);
+ }
+ if(count($this->cookies))
+ {
+ $cookies=array();
+ $this->PickCookies($cookies,0);
+ if(strtolower($this->protocol)=="https")
+ $this->PickCookies($cookies,1);
+ if(count($cookies))
+ {
+ $h=count($headers);
+ $headers[$h]="Cookie:";
+ for(Reset($cookies),$cookie=0;$cookie<count($cookies);Next($cookies),$cookie++)
+ {
+ $cookie_name=Key($cookies);
+ $headers[$h].=" ".$cookie_name."=".$cookies[$cookie_name]["value"].";";
+ }
+ }
+ }
+ $next_state = "RequestSent";
+ if($this->use_curl)
+ {
+ if(IsSet($arguments['StreamRequest']))
+ return($this->SetError("Streaming request data is not supported when using Curl", HTTP_CLIENT_ERROR_INVALID_PARAMETERS));
+ if($body_length
+ && strlen($this->request_body)==0)
+ {
+ for($request_body="",$success=1,$part=0;$part<count($post_parts);$part++)
+ {
+ $request_body.=$post_parts[$part]["HEADERS"].$post_parts[$part]["DATA"];
+ if(IsSet($post_parts[$part]["FILENAME"]))
+ {
+ if(!($file=@fopen($post_parts[$part]["FILENAME"],"rb")))
+ {
+ $this->SetPHPError("could not open upload file ".$post_parts[$part]["FILENAME"], $php_errormsg, HTTP_CLIENT_ERROR_CANNOT_ACCESS_LOCAL_FILE);
+ $success=0;
+ break;
+ }
+ while(!feof($file))
+ {
+ if(GetType($block=@fread($file,$this->file_buffer_length))!="string")
+ {
+ $this->SetPHPError("could not read upload file", $php_errormsg, HTTP_CLIENT_ERROR_CANNOT_ACCESS_LOCAL_FILE);
+ $success=0;
+ break;
+ }
+ $request_body.=$block;
+ }
+ fclose($file);
+ if(!$success)
+ break;
+ }
+ $request_body.="\r\n";
+ }
+ $request_body.="--".$boundary."--\r\n";
+ }
+ else
+ $request_body=$this->request_body;
+ curl_setopt($this->connection,CURLOPT_HEADER,1);
+ curl_setopt($this->connection,CURLOPT_RETURNTRANSFER,1);
+ if($this->timeout)
+ curl_setopt($this->connection,CURLOPT_TIMEOUT,$this->timeout);
+ curl_setopt($this->connection,CURLOPT_SSL_VERIFYPEER,0);
+ curl_setopt($this->connection,CURLOPT_SSL_VERIFYHOST,0);
+ $request=$this->request."\r\n".implode("\r\n",$headers)."\r\n\r\n".$request_body;
+ curl_setopt($this->connection,CURLOPT_CUSTOMREQUEST,$request);
+ if($this->debug)
+ $this->OutputDebug("C ".$request);
+ if(!($success=(strlen($this->response=curl_exec($this->connection))!=0)))
+ {
+ $error=curl_error($this->connection);
+ $this->SetError("Could not execute the request".(strlen($error) ? ": ".$error : ""), HTTP_CLIENT_ERROR_PROTOCOL_FAILURE);
+ }
+ }
+ else
+ {
+ if(($success=$this->PutLine($this->request)))
+ {
+ for($header=0;$header<count($headers);$header++)
+ {
+ if(!$success=$this->PutLine($headers[$header]))
+ break;
+ }
+ if($success
+ && ($success=$this->PutLine("")))
+ {
+ if(IsSet($arguments['StreamRequest']))
+ $next_state = "SendingRequestBody";
+ elseif($body_length)
+ {
+ if(strlen($this->request_body))
+ $success=$this->PutData($this->request_body);
+ else
+ {
+ for($part=0;$part<count($post_parts);$part++)
+ {
+ if(!($success=$this->PutData($post_parts[$part]["HEADERS"]))
+ || !($success=$this->PutData($post_parts[$part]["DATA"])))
+ break;
+ if(IsSet($post_parts[$part]["FILENAME"]))
+ {
+ if(!($file=@fopen($post_parts[$part]["FILENAME"],"rb")))
+ {
+ $this->SetPHPError("could not open upload file ".$post_parts[$part]["FILENAME"], $php_errormsg, HTTP_CLIENT_ERROR_CANNOT_ACCESS_LOCAL_FILE);
+ $success=0;
+ break;
+ }
+ while(!feof($file))
+ {
+ if(GetType($block=@fread($file,$this->file_buffer_length))!="string")
+ {
+ $this->SetPHPError("could not read upload file", $php_errormsg, HTTP_CLIENT_ERROR_CANNOT_ACCESS_LOCAL_FILE);
+ $success=0;
+ break;
+ }
+ if(!($success=$this->PutData($block)))
+ break;
+ }
+ fclose($file);
+ if(!$success)
+ break;
+ }
+ if(!($success=$this->PutLine("")))
+ break;
+ }
+ if($success)
+ $success=$this->PutLine("--".$boundary."--");
+ }
+ if($success)
+ $sucess=$this->FlushData();
+ }
+ }
+ }
+ }
+ if(!$success)
+ return($this->SetError("could not send the HTTP request: ".$this->error, $this->error_code));
+ $this->state=$next_state;
+ return("");
+ }
+
+ Function SetCookie($name, $value, $expires="" , $path="/" , $domain="" , $secure=0, $verbatim=0)
+ {
+ if(strlen($this->error))
+ return($this->error);
+ if(strlen($name)==0)
+ return($this->SetError("it was not specified a valid cookie name", HTTP_CLIENT_ERROR_INVALID_PARAMETERS));
+ if(strlen($path)==0
+ || strcmp($path[0],"/"))
+ return($this->SetError($path." is not a valid path for setting cookie ".$name, HTTP_CLIENT_ERROR_INVALID_PARAMETERS));
+ if($domain==""
+ || !strpos($domain,".",$domain[0]=="." ? 1 : 0))
+ return($this->SetError($domain." is not a valid domain for setting cookie ".$name, HTTP_CLIENT_ERROR_INVALID_PARAMETERS));
+ $domain=strtolower($domain);
+ if(!strcmp($domain[0],"."))
+ $domain=substr($domain,1);
+ if(!$verbatim)
+ {
+ $name=$this->CookieEncode($name,1);
+ $value=$this->CookieEncode($value,0);
+ }
+ $secure=intval($secure);
+ $this->cookies[$secure][$domain][$path][$name]=array(
+ "name"=>$name,
+ "value"=>$value,
+ "domain"=>$domain,
+ "path"=>$path,
+ "expires"=>$expires,
+ "secure"=>$secure
+ );
+ return("");
+ }
+
+ Function SendRequestBody($data, $end_of_data)
+ {
+ if(strlen($this->error))
+ return($this->error);
+ switch($this->state)
+ {
+ case "Disconnected":
+ return($this->SetError("connection was not yet established", HTTP_CLIENT_ERROR_INVALID_PARAMETERS));
+ case "Connected":
+ case "ConnectedToProxy":
+ return($this->SetError("request was not sent", HTTP_CLIENT_ERROR_INVALID_PARAMETERS));
+ case "SendingRequestBody":
+ break;
+ case "RequestSent":
+ return($this->SetError("request body was already sent", HTTP_CLIENT_ERROR_INVALID_PARAMETERS));
+ default:
+ return($this->SetError("can not send the request body in the current connection state", HTTP_CLIENT_ERROR_INVALID_PARAMETERS));
+ }
+ $length = strlen($data);
+ if($length)
+ {
+ $size = dechex($length)."\r\n";
+ if(!$this->PutData($size)
+ || !$this->PutData($data))
+ return($this->error);
+ }
+ if($end_of_data)
+ {
+ $size = "0\r\n";
+ if(!$this->PutData($size))
+ return($this->error);
+ $this->state = "RequestSent";
+ }
+ return("");
+ }
+
+ Function ReadReplyHeadersResponse(&$headers)
+ {
+ $headers=array();
+ if(strlen($this->error))
+ return($this->error);
+ switch($this->state)
+ {
+ case "Disconnected":
+ return($this->SetError("connection was not yet established", HTTP_CLIENT_ERROR_INVALID_PARAMETERS));
+ case "Connected":
+ return($this->SetError("request was not sent", HTTP_CLIENT_ERROR_INVALID_PARAMETERS));
+ case "ConnectedToProxy":
+ return($this->SetError("connection from the remote server from the proxy was not yet established", HTTP_CLIENT_ERROR_INVALID_PARAMETERS));
+ case "SendingRequestBody":
+ return($this->SetError("request body data was not completely sent", HTTP_CLIENT_ERROR_INVALID_PARAMETERS));
+ case "ConnectSent":
+ $connect = 1;
+ break;
+ case "RequestSent":
+ $connect = 0;
+ break;
+ default:
+ return($this->SetError("can not get request headers in the current connection state", HTTP_CLIENT_ERROR_INVALID_PARAMETERS));
+ }
+ $this->content_length=$this->read_length=$this->read_response=$this->remaining_chunk=0;
+ $this->content_length_set=$this->chunked=$this->last_chunk_read=$chunked=0;
+ $this->force_close = $this->connection_close=0;
+ for($this->response_status="";;)
+ {
+ $line=$this->GetLine();
+ if(GetType($line)!="string")
+ return($this->SetError("could not read request reply: ".$this->error, $this->error_code));
+ if(strlen($this->response_status)==0)
+ {
+ if(!preg_match($match="/^http\\/[0-9]+\\.[0-9]+[ \t]+([0-9]+)[ \t]*(.*)\$/i",$line,$matches))
+ return($this->SetError("it was received an unexpected HTTP response status", HTTP_CLIENT_ERROR_PROTOCOL_FAILURE));
+ $this->response_status=$matches[1];
+ $this->response_message=$matches[2];
+ }
+ if($line=="")
+ {
+ if(strlen($this->response_status)==0)
+ return($this->SetError("it was not received HTTP response status", HTTP_CLIENT_ERROR_PROTOCOL_FAILURE));
+ $this->state=($connect ? "GotConnectHeaders" : "GotReplyHeaders");
+ break;
+ }
+ $header_name=strtolower($this->Tokenize($line,":"));
+ $header_value=Trim(Chop($this->Tokenize("\r\n")));
+ if(IsSet($headers[$header_name]))
+ {
+ if(GetType($headers[$header_name])=="string")
+ $headers[$header_name]=array($headers[$header_name]);
+ $headers[$header_name][]=$header_value;
+ }
+ else
+ $headers[$header_name]=$header_value;
+ if(!$connect)
+ {
+ switch($header_name)
+ {
+ case "content-length":
+ $this->content_length=intval($headers[$header_name]);
+ $this->content_length_set=1;
+ break;
+ case "transfer-encoding":
+ $encoding=$this->Tokenize($header_value,"; \t");
+ if(!$this->use_curl
+ && !strcmp($encoding,"chunked"))
+ $chunked=1;
+ break;
+ case "set-cookie":
+ if($this->support_cookies)
+ {
+ if(GetType($headers[$header_name])=="array")
+ $cookie_headers=$headers[$header_name];
+ else
+ $cookie_headers=array($headers[$header_name]);
+ for($cookie=0;$cookie<count($cookie_headers);$cookie++)
+ {
+ $cookie_name=trim($this->Tokenize($cookie_headers[$cookie],"="));
+ $cookie_value=$this->Tokenize(";");
+ $domain=$this->request_host;
+ $path="/";
+ $expires="";
+ $secure=0;
+ while(($name = strtolower(trim(UrlDecode($this->Tokenize("=")))))!="")
+ {
+ $value=UrlDecode($this->Tokenize(";"));
+ switch($name)
+ {
+ case "domain":
+ $domain=$value;
+ break;
+ case "path":
+ $path=$value;
+ break;
+ case "expires":
+ if(preg_match("/^((Mon|Monday|Tue|Tuesday|Wed|Wednesday|Thu|Thursday|Fri|Friday|Sat|Saturday|Sun|Sunday), )?([0-9]{2})\\-(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)\\-([0-9]{2,4}) ([0-9]{2})\\:([0-9]{2})\\:([0-9]{2}) GMT\$/",$value,$matches))
+ {
+ $year=intval($matches[5]);
+ if($year<1900)
+ $year+=($year<70 ? 2000 : 1900);
+ $expires="$year-".$this->months[$matches[4]]."-".$matches[3]." ".$matches[6].":".$matches[7].":".$matches[8];
+ }
+ break;
+ case "secure":
+ $secure=1;
+ break;
+ }
+ }
+ if(strlen($this->SetCookie($cookie_name, $cookie_value, $expires, $path , $domain, $secure, 1)))
+ $this->error="";
+ }
+ }
+ break;
+ case "connection":
+ $this->force_close = $this->connection_close=!strcmp(strtolower($header_value),"close");
+ break;
+ }
+ }
+ }
+ $this->chunked=$chunked;
+ if($this->content_length_set)
+ $this->connection_close=0;
+ return("");
+ }
+
+ Function Redirect(&$headers)
+ {
+ if($this->follow_redirect)
+ {
+ if(!IsSet($headers["location"])
+ || (GetType($headers["location"])!="array"
+ && strlen($location=$headers["location"])==0)
+ || (GetType($headers["location"])=="array"
+ && strlen($location=$headers["location"][0])==0))
+ return($this->SetError("it was received a redirect without location URL", HTTP_CLIENT_ERROR_PROTOCOL_FAILURE));
+ if(strcmp($location[0],"/"))
+ {
+ if(!($location_arguments=@parse_url($location)))
+ return($this->SetError("the server did not return a valid redirection location URL", HTTP_CLIENT_ERROR_PROTOCOL_FAILURE));
+ if(!IsSet($location_arguments["scheme"]))
+ $location=((GetType($end=strrpos($this->request_uri,"/"))=="integer" && $end>1) ? substr($this->request_uri,0,$end) : "")."/".$location;
+ }
+ if(!strcmp($location[0],"/"))
+ $location=$this->protocol."://".$this->host_name.($this->host_port ? ":".$this->host_port : "").$location;
+ $error=$this->GetRequestArguments($location,$arguments);
+ if(strlen($error))
+ return($this->SetError("could not process redirect url: ".$error, HTTP_CLIENT_ERROR_PROTOCOL_FAILURE));
+ $arguments["RequestMethod"]="GET";
+ if(strlen($error=$this->Close())==0
+ && strlen($error=$this->Open($arguments))==0
+ && strlen($error=$this->SendRequest($arguments))==0)
+ {
+ $this->redirection_level++;
+ if($this->redirection_level>$this->redirection_limit)
+ {
+ $error="it was exceeded the limit of request redirections";
+ $this->error_code = HTTP_CLIENT_ERROR_PROTOCOL_FAILURE;
+ }
+ else
+ $error=$this->ReadReplyHeaders($headers);
+ $this->redirection_level--;
+ }
+ if(strlen($error))
+ return($this->SetError($error, $this->error_code));
+ }
+ return("");
+ }
+
+ Function Authenticate(&$headers, $proxy, &$proxy_authorization, &$user, &$password, &$realm, &$workstation)
+ {
+ if($proxy)
+ {
+ $authenticate_header="proxy-authenticate";
+ $authorization_header="Proxy-Authorization";
+ $authenticate_status="407";
+ $authentication_mechanism=$this->proxy_authentication_mechanism;
+ }
+ else
+ {
+ $authenticate_header="www-authenticate";
+ $authorization_header="Authorization";
+ $authenticate_status="401";
+ $authentication_mechanism=$this->authentication_mechanism;
+ }
+ if(IsSet($headers[$authenticate_header])
+ && $this->sasl_authenticate)
+ {
+ if(function_exists("class_exists")
+ && !class_exists("sasl_client_class"))
+ return($this->SetError("the SASL client class needs to be loaded to be able to authenticate".($proxy ? " with the proxy server" : "")." and access this site", HTTP_CLIENT_ERROR_INVALID_PARAMETERS));
+ if(GetType($headers[$authenticate_header])=="array")
+ $authenticate=$headers[$authenticate_header];
+ else
+ $authenticate=array($headers[$authenticate_header]);
+ for($response="", $mechanisms=array(),$m=0;$m<count($authenticate);$m++)
+ {
+ $mechanism=$this->Tokenize($authenticate[$m]," ");
+ $response=$this->Tokenize("");
+ if(strlen($authentication_mechanism))
+ {
+ if(!strcmp($authentication_mechanism,$mechanism))
+ {
+ $mechanisms[]=$mechanism;
+ break;
+ }
+ }
+ else
+ $mechanisms[]=$mechanism;
+ }
+ $sasl=new sasl_client_class;
+ if(IsSet($user))
+ $sasl->SetCredential("user",$user);
+ if(IsSet($password))
+ $sasl->SetCredential("password",$password);
+ if(IsSet($realm))
+ $sasl->SetCredential("realm",$realm);
+ if(IsSet($workstation))
+ $sasl->SetCredential("workstation",$workstation);
+ $sasl->SetCredential("uri",$this->request_uri);
+ $sasl->SetCredential("method",$this->request_method);
+ $sasl->SetCredential("session",$this->session);
+ do
+ {
+ $status=$sasl->Start($mechanisms,$message,$interactions);
+ }
+ while($status==SASL_INTERACT);
+ switch($status)
+ {
+ case SASL_CONTINUE:
+ break;
+ case SASL_NOMECH:
+ return($this->SetError(($proxy ? "proxy " : "")."authentication error: ".(strlen($authentication_mechanism) ? "authentication mechanism ".$authentication_mechanism." may not be used: " : "").$sasl->error, HTTP_CLIENT_ERROR_INVALID_PARAMETERS));
+ default:
+ return($this->SetError("Could not start the SASL ".($proxy ? "proxy " : "")."authentication client: ".$sasl->error, HTTP_CLIENT_ERROR_INVALID_PARAMETERS));
+ }
+ if($proxy >= 0)
+ {
+ for(;;)
+ {
+ if(strlen($error=$this->ReadReplyBody($body,$this->file_buffer_length)))
+ return($error);
+ if(strlen($body)==0)
+ break;
+ }
+ }
+ $authorization_value=$sasl->mechanism.(IsSet($message) ? " ".($sasl->encode_response ? base64_encode($message) : $message) : "");
+ $request_arguments=$this->request_arguments;
+ $arguments=$request_arguments;
+ $arguments["Headers"][$authorization_header]=$authorization_value;
+ if(!$proxy
+ && strlen($proxy_authorization))
+ $arguments["Headers"]["Proxy-Authorization"]=$proxy_authorization;
+ if(strlen($error=$this->Close())
+ || strlen($error=$this->Open($arguments)))
+ return($this->SetError($error, $this->error_code));
+ $authenticated=0;
+ if(IsSet($message))
+ {
+ if($proxy < 0)
+ {
+ if(strlen($error=$this->ConnectFromProxy($arguments, $headers)))
+ return($this->SetError($error, $this->error_code));
+ }
+ else
+ {
+ if(strlen($error=$this->SendRequest($arguments))
+ || strlen($error=$this->ReadReplyHeadersResponse($headers)))
+ return($this->SetError($error, $this->error_code));
+ }
+ if(!IsSet($headers[$authenticate_header]))
+ $authenticate=array();
+ elseif(GetType($headers[$authenticate_header])=="array")
+ $authenticate=$headers[$authenticate_header];
+ else
+ $authenticate=array($headers[$authenticate_header]);
+ for($mechanism=0;$mechanism<count($authenticate);$mechanism++)
+ {
+ if(!strcmp($this->Tokenize($authenticate[$mechanism]," "),$sasl->mechanism))
+ {
+ $response=$this->Tokenize("");
+ break;
+ }
+ }
+ switch($this->response_status)
+ {
+ case $authenticate_status:
+ break;
+ case "301":
+ case "302":
+ case "303":
+ case "307":
+ if($proxy >= 0)
+ return($this->Redirect($headers));
+ default:
+ if(intval($this->response_status/100)==2)
+ {
+ if($proxy)
+ $proxy_authorization=$authorization_value;
+ $authenticated=1;
+ break;
+ }
+ if($proxy
+ && !strcmp($this->response_status,"401"))
+ {
+ $proxy_authorization=$authorization_value;
+ $authenticated=1;
+ break;
+ }
+ return($this->SetError(($proxy ? "proxy " : "")."authentication error: ".$this->response_status." ".$this->response_message, HTTP_CLIENT_ERROR_PROTOCOL_FAILURE));
+ }
+ }
+ for(;!$authenticated;)
+ {
+ do
+ {
+ $status=$sasl->Step($response,$message,$interactions);
+ }
+ while($status==SASL_INTERACT);
+ switch($status)
+ {
+ case SASL_CONTINUE:
+ $authorization_value=$sasl->mechanism.(IsSet($message) ? " ".($sasl->encode_response ? base64_encode($message) : $message) : "");
+ $arguments=$request_arguments;
+ $arguments["Headers"][$authorization_header]=$authorization_value;
+ if(!$proxy
+ && strlen($proxy_authorization))
+ $arguments["Headers"]["Proxy-Authorization"]=$proxy_authorization;
+ if($proxy < 0)
+ {
+ if(strlen($error=$this->ConnectFromProxy($arguments, $headers)))
+ return($this->SetError($error, $this->error_code));
+ }
+ else
+ {
+ if(strlen($error=$this->SendRequest($arguments))
+ || strlen($error=$this->ReadReplyHeadersResponse($headers)))
+ return($this->SetError($error, $this->error_code));
+ }
+ switch($this->response_status)
+ {
+ case $authenticate_status:
+ if(GetType($headers[$authenticate_header])=="array")
+ $authenticate=$headers[$authenticate_header];
+ else
+ $authenticate=array($headers[$authenticate_header]);
+ for($response="",$mechanism=0;$mechanism<count($authenticate);$mechanism++)
+ {
+ if(!strcmp($this->Tokenize($authenticate[$mechanism]," "),$sasl->mechanism))
+ {
+ $response=$this->Tokenize("");
+ break;
+ }
+ }
+ if($proxy >= 0)
+ {
+ for(;;)
+ {
+ if(strlen($error=$this->ReadReplyBody($body,$this->file_buffer_length)))
+ return($error);
+ if(strlen($body)==0)
+ break;
+ }
+ }
+ $this->state="Connected";
+ break;
+ case "301":
+ case "302":
+ case "303":
+ case "307":
+ if($proxy >= 0)
+ return($this->Redirect($headers));
+ default:
+ if(intval($this->response_status/100)==2)
+ {
+ if($proxy)
+ $proxy_authorization=$authorization_value;
+ $authenticated=1;
+ break;
+ }
+ if($proxy
+ && !strcmp($this->response_status,"401"))
+ {
+ $proxy_authorization=$authorization_value;
+ $authenticated=1;
+ break;
+ }
+ return($this->SetError(($proxy ? "proxy " : "")."authentication error: ".$this->response_status." ".$this->response_message));
+ }
+ break;
+ default:
+ return($this->SetError("Could not process the SASL ".($proxy ? "proxy " : "")."authentication step: ".$sasl->error, HTTP_CLIENT_ERROR_PROTOCOL_FAILURE));
+ }
+ }
+ }
+ return("");
+ }
+
+ Function ReadReplyHeaders(&$headers)
+ {
+ if(strlen($error=$this->ReadReplyHeadersResponse($headers)))
+ return($error);
+ $proxy_authorization="";
+ while(!strcmp($this->response_status, "100"))
+ {
+ $this->state="RequestSent";
+ if(strlen($error=$this->ReadReplyHeadersResponse($headers)))
+ return($error);
+ }
+ switch($this->response_status)
+ {
+ case "301":
+ case "302":
+ case "303":
+ case "307":
+ if(strlen($error=$this->Redirect($headers)))
+ return($error);
+ break;
+ case "407":
+ if(strlen($error=$this->Authenticate($headers, 1, $proxy_authorization, $this->proxy_request_user, $this->proxy_request_password, $this->proxy_request_realm, $this->proxy_request_workstation)))
+ return($error);
+ if(strcmp($this->response_status,"401"))
+ return("");
+ case "401":
+ return($this->Authenticate($headers, 0, $proxy_authorization, $this->request_user, $this->request_password, $this->request_realm, $this->request_workstation));
+ }
+ return("");
+ }
+
+ Function ReadReplyBody(&$body,$length)
+ {
+ $body="";
+ if(strlen($this->error))
+ return($this->error);
+ switch($this->state)
+ {
+ case "Disconnected":
+ return($this->SetError("connection was not yet established", HTTP_CLIENT_ERROR_INVALID_PARAMETERS));
+ case "Connected":
+ case "ConnectedToProxy":
+ return($this->SetError("request was not sent", HTTP_CLIENT_ERROR_INVALID_PARAMETERS));
+ case "RequestSent":
+ if(($error=$this->ReadReplyHeaders($headers))!="")
+ return($error);
+ break;
+ case "GotReplyHeaders":
+ break;
+ case 'ResponseReceived':
+ $body = '';
+ return('');
+ default:
+ return($this->SetError("can not get request headers in the current connection state", HTTP_CLIENT_ERROR_INVALID_PARAMETERS));
+ }
+ if($this->content_length_set)
+ $length=min($this->content_length-$this->read_length,$length);
+ $body = '';
+ if($length>0)
+ {
+ if(!$this->EndOfInput()
+ && ($body=$this->ReadBytes($length))=="")
+ {
+ if(strlen($this->error))
+ return($this->SetError("could not get the request reply body: ".$this->error, $this->error_code));
+ }
+ $this->read_length+=strlen($body);
+ if($this->EndOfInput())
+ $this->state = 'ResponseReceived';
+ }
+ return("");
+ }
+
+ Function ReadWholeReplyBody(&$body)
+ {
+ $body = '';
+ for(;;)
+ {
+ if(strlen($error = $this->ReadReplyBody($block, $this->file_buffer_length)))
+ return($error);
+ if(strlen($block) == 0)
+ return('');
+ $body .= $block;
+ }
+ }
+
+ Function SaveCookies(&$cookies, $domain='', $secure_only=0, $persistent_only=0)
+ {
+ $now=gmdate("Y-m-d H-i-s");
+ $cookies=array();
+ for($secure_cookies=0,Reset($this->cookies);$secure_cookies<count($this->cookies);Next($this->cookies),$secure_cookies++)
+ {
+ $secure=Key($this->cookies);
+ if(!$secure_only
+ || $secure)
+ {
+ for($cookie_domain=0,Reset($this->cookies[$secure]);$cookie_domain<count($this->cookies[$secure]);Next($this->cookies[$secure]),$cookie_domain++)
+ {
+ $domain_pattern=Key($this->cookies[$secure]);
+ $match=strlen($domain)-strlen($domain_pattern);
+ if(strlen($domain)==0
+ || ($match>=0
+ && !strcmp($domain_pattern,substr($domain,$match))
+ && ($match==0
+ || $domain_pattern[0]=="."
+ || $domain[$match-1]==".")))
+ {
+ for(Reset($this->cookies[$secure][$domain_pattern]),$path_part=0;$path_part<count($this->cookies[$secure][$domain_pattern]);Next($this->cookies[$secure][$domain_pattern]),$path_part++)
+ {
+ $path=Key($this->cookies[$secure][$domain_pattern]);
+ for(Reset($this->cookies[$secure][$domain_pattern][$path]),$cookie=0;$cookie<count($this->cookies[$secure][$domain_pattern][$path]);Next($this->cookies[$secure][$domain_pattern][$path]),$cookie++)
+ {
+ $cookie_name=Key($this->cookies[$secure][$domain_pattern][$path]);
+ $expires=$this->cookies[$secure][$domain_pattern][$path][$cookie_name]["expires"];
+ if((!$persistent_only
+ && strlen($expires)==0)
+ || (strlen($expires)
+ && strcmp($now,$expires)<0))
+ $cookies[$secure][$domain_pattern][$path][$cookie_name]=$this->cookies[$secure][$domain_pattern][$path][$cookie_name];
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+
+ Function SavePersistentCookies(&$cookies, $domain='', $secure_only=0)
+ {
+ $this->SaveCookies($cookies, $domain, $secure_only, 1);
+ }
+
+ Function GetPersistentCookies(&$cookies, $domain='', $secure_only=0)
+ {
+ $this->SavePersistentCookies($cookies, $domain, $secure_only);
+ }
+
+ Function RestoreCookies($cookies, $clear=1)
+ {
+ $new_cookies=($clear ? array() : $this->cookies);
+ for($secure_cookies=0, Reset($cookies); $secure_cookies<count($cookies); Next($cookies), $secure_cookies++)
+ {
+ $secure=Key($cookies);
+ if(GetType($secure)!="integer")
+ return($this->SetError("invalid cookie secure value type (".serialize($secure).")", HTTP_CLIENT_ERROR_INVALID_PARAMETERS));
+ for($cookie_domain=0,Reset($cookies[$secure]);$cookie_domain<count($cookies[$secure]);Next($cookies[$secure]),$cookie_domain++)
+ {
+ $domain_pattern=Key($cookies[$secure]);
+ if(GetType($domain_pattern)!="string")
+ return($this->SetError("invalid cookie domain value type (".serialize($domain_pattern).")", HTTP_CLIENT_ERROR_INVALID_PARAMETERS));
+ for(Reset($cookies[$secure][$domain_pattern]),$path_part=0;$path_part<count($cookies[$secure][$domain_pattern]);Next($cookies[$secure][$domain_pattern]),$path_part++)
+ {
+ $path=Key($cookies[$secure][$domain_pattern]);
+ if(GetType($path)!="string"
+ || strcmp(substr($path, 0, 1), "/"))
+ return($this->SetError("invalid cookie path value type (".serialize($path).")", HTTP_CLIENT_ERROR_INVALID_PARAMETERS));
+ for(Reset($cookies[$secure][$domain_pattern][$path]),$cookie=0;$cookie<count($cookies[$secure][$domain_pattern][$path]);Next($cookies[$secure][$domain_pattern][$path]),$cookie++)
+ {
+ $cookie_name=Key($cookies[$secure][$domain_pattern][$path]);
+ $expires=$cookies[$secure][$domain_pattern][$path][$cookie_name]["expires"];
+ $value=$cookies[$secure][$domain_pattern][$path][$cookie_name]["value"];
+ if(GetType($expires)!="string"
+ || (strlen($expires)
+ && !preg_match("/^[0-9]{4}-[0-9]{2}-[0-9]{2} [0-9]{2}:[0-9]{2}:[0-9]{2}\$/", $expires)))
+ return($this->SetError("invalid cookie expiry value type (".serialize($expires).")", HTTP_CLIENT_ERROR_INVALID_PARAMETERS));
+ $new_cookies[$secure][$domain_pattern][$path][$cookie_name]=array(
+ "name"=>$cookie_name,
+ "value"=>$value,
+ "domain"=>$domain_pattern,
+ "path"=>$path,
+ "expires"=>$expires,
+ "secure"=>$secure
+ );
+ }
+ }
+ }
+ }
+ $this->cookies=$new_cookies;
+ return("");
+ }
+};
+
+?> \ No newline at end of file
diff --git a/library/oauth/oauth_client.php b/library/oauth/oauth_client.php
new file mode 100644
index 000000000..5047e0e9b
--- /dev/null
+++ b/library/oauth/oauth_client.php
@@ -0,0 +1,2176 @@
+<?php
+/*
+ * oauth_client.php
+ *
+ * @(#) $Id: oauth_client.php,v 1.58 2013/04/11 09:33:16 mlemos Exp $
+ *
+ */
+
+/*
+{metadocument}<?xml version="1.0" encoding="ISO-8859-1" ?>
+<class>
+
+ <package>net.manuellemos.oauth</package>
+
+ <version>@(#) $Id: oauth_client.php,v 1.58 2013/04/11 09:33:16 mlemos Exp $</version>
+ <copyright>Copyright © (C) Manuel Lemos 2012</copyright>
+ <title>OAuth client</title>
+ <author>Manuel Lemos</author>
+ <authoraddress>mlemos-at-acm.org</authoraddress>
+
+ <documentation>
+ <idiom>en</idiom>
+ <purpose>This class serves two main purposes:<paragraphbreak />
+ 1) Implement the OAuth protocol to retrieve a token from a server to
+ authorize the access to an API on behalf of the current
+ user.<paragraphbreak />
+ 2) Perform calls to a Web services API using a token previously
+ obtained using this class or a token provided some other way by the
+ Web services provider.</purpose>
+ <usage>Regardless of your purposes, you always need to start calling
+ the class <functionlink>Initialize</functionlink> function after
+ initializing setup variables. After you are done with the class,
+ always call the <functionlink>Finalize</functionlink> function at
+ the end.<paragraphbreak />
+ This class supports either OAuth protocol versions 1.0, 1.0a and
+ 2.0. It abstracts the differences between these protocol versions,
+ so the class usage is the same independently of the OAuth
+ version of the server.<paragraphbreak />
+ The class also provides built-in support to several popular OAuth
+ servers, so you do not have to manually configure all the details to
+ access those servers. Just set the
+ <variablelink>server</variablelink> variable to configure the class
+ to access one of the built-in supported servers.<paragraphbreak />
+ If you need to access one type of server that is not yet directly
+ supported by the class, you need to configure it explicitly setting
+ the variables: <variablelink>oauth_version</variablelink>,
+ <variablelink>url_parameters</variablelink>,
+ <variablelink>authorization_header</variablelink>,
+ <variablelink>request_token_url</variablelink>,
+ <variablelink>dialog_url</variablelink>,
+ <variablelink>offline_dialog_url</variablelink>,
+ <variablelink>append_state_to_redirect_uri</variablelink> and
+ <variablelink>access_token_url</variablelink>.<paragraphbreak />
+ Before proceeding to the actual OAuth authorization process, you
+ need to have registered your application with the OAuth server. The
+ registration provides you values to set the variables
+ <variablelink>client_id</variablelink> and
+ <variablelink>client_secret</variablelink>.<paragraphbreak />
+ You also need to set the variables
+ <variablelink>redirect_uri</variablelink> and
+ <variablelink>scope</variablelink> before calling the
+ <functionlink>Process</functionlink> function to make the class
+ perform the necessary interactions with the OAuth
+ server.<paragraphbreak />
+ The OAuth protocol involves multiple steps that include redirection
+ to the OAuth server. There it asks permission to the current user to
+ grant your application access to APIs on his/her behalf. When there
+ is a redirection, the class will set the
+ <variablelink>exit</variablelink> variable to
+ <booleanvalue>1</booleanvalue>. Then your script should exit
+ immediately without outputting anything.<paragraphbreak />
+ When the OAuth access token is successfully obtained, the following
+ variables are set by the class with the obtained values:
+ <variablelink>access_token</variablelink>,
+ <variablelink>access_token_secret</variablelink>,
+ <variablelink>access_token_expiry</variablelink>,
+ <variablelink>access_token_type</variablelink>. You may want to
+ store these values to use them later when calling the server
+ APIs.<paragraphbreak />
+ If there was a problem during OAuth authorization process, check the
+ variable <variablelink>authorization_error</variablelink> to
+ determine the reason.<paragraphbreak />
+ Once you get the access token, you can call the server APIs using
+ the <functionlink>CallAPI</functionlink> function. Check the
+ <variablelink>access_token_error</variablelink> variable to
+ determine if there was an error when trying to to call the
+ API.<paragraphbreak />
+ If for some reason the user has revoked the access to your
+ application, you need to ask the user to authorize your application
+ again. First you may need to call the function
+ <functionlink>ResetAccessToken</functionlink> to reset the value of
+ the access token that may be cached in session variables.</usage>
+ </documentation>
+
+{/metadocument}
+*/
+
+class oauth_client_class
+{
+/*
+{metadocument}
+ <variable>
+ <name>error</name>
+ <type>STRING</type>
+ <value></value>
+ <documentation>
+ <purpose>Store the message that is returned when an error
+ occurs.</purpose>
+ <usage>Check this variable to understand what happened when a call to
+ any of the class functions has failed.<paragraphbreak />
+ This class uses cumulative error handling. This means that if one
+ class functions that may fail is called and this variable was
+ already set to an error message due to a failure in a previous call
+ to the same or other function, the function will also fail and does
+ not do anything.<paragraphbreak />
+ This allows programs using this class to safely call several
+ functions that may fail and only check the failure condition after
+ the last function call.<paragraphbreak />
+ Just set this variable to an empty string to clear the error
+ condition.</usage>
+ </documentation>
+ </variable>
+{/metadocument}
+*/
+ var $error = '';
+
+/*
+{metadocument}
+ <variable>
+ <name>debug</name>
+ <type>BOOLEAN</type>
+ <value>0</value>
+ <documentation>
+ <purpose>Control whether debug output is enabled</purpose>
+ <usage>Set this variable to <booleanvalue>1</booleanvalue> if you
+ need to check what is going on during calls to the class. When
+ enabled, the debug output goes either to the variable
+ <variablelink>debug_output</variablelink> and the PHP error log.</usage>
+ </documentation>
+ </variable>
+{/metadocument}
+*/
+ var $debug = false;
+
+/*
+{metadocument}
+ <variable>
+ <name>debug_http</name>
+ <type>BOOLEAN</type>
+ <value>0</value>
+ <documentation>
+ <purpose>Control whether the dialog with the remote Web server
+ should also be logged.</purpose>
+ <usage>Set this variable to <booleanvalue>1</booleanvalue> if you
+ want to inspect the data exchange with the OAuth server.</usage>
+ </documentation>
+ </variable>
+{/metadocument}
+*/
+ var $debug_http = false;
+
+/*
+{metadocument}
+ <variable>
+ <name>exit</name>
+ <type>BOOLEAN</type>
+ <value>0</value>
+ <documentation>
+ <purpose>Determine if the current script should be exited.</purpose>
+ <usage>Check this variable after calling the
+ <functionlink>Process</functionlink> function and exit your script
+ immediately if the variable is set to
+ <booleanvalue>1</booleanvalue>.</usage>
+ </documentation>
+ </variable>
+{/metadocument}
+*/
+ var $exit = false;
+
+/*
+{metadocument}
+ <variable>
+ <name>debug_output</name>
+ <type>STRING</type>
+ <value></value>
+ <documentation>
+ <purpose>Capture the debug output generated by the class</purpose>
+ <usage>Inspect this variable if you need to see what happened during
+ the class function calls.</usage>
+ </documentation>
+ </variable>
+{/metadocument}
+*/
+ var $debug_output = '';
+
+/*
+{metadocument}
+ <variable>
+ <name>debug_prefix</name>
+ <type>STRING</type>
+ <value>OAuth client: </value>
+ <documentation>
+ <purpose>Mark the lines of the debug output to identify actions
+ performed by this class.</purpose>
+ <usage>Change this variable if you prefer the debug output lines to
+ be prefixed with a different text.</usage>
+ </documentation>
+ </variable>
+{/metadocument}
+*/
+ var $debug_prefix = 'OAuth client: ';
+
+/*
+{metadocument}
+ <variable>
+ <name>server</name>
+ <type>STRING</type>
+ <value></value>
+ <documentation>
+ <purpose>Identify the type of OAuth server to access.</purpose>
+ <usage>The class provides built-in support to several types of OAuth
+ servers. This means that the class can automatically initialize
+ several configuration variables just by setting this server
+ variable.<paragraphbreak />
+ Currently it supports the following servers:
+ <stringvalue>Bitbucket</stringvalue>,
+ <stringvalue>Box</stringvalue>,
+ <stringvalue>Dropbox</stringvalue>,
+ <stringvalue>Eventful</stringvalue>,
+ <stringvalue>Facebook</stringvalue>,
+ <stringvalue>Fitbit</stringvalue>,
+ <stringvalue>Flickr</stringvalue>,
+ <stringvalue>Foursquare</stringvalue>,
+ <stringvalue>github</stringvalue>,
+ <stringvalue>Google</stringvalue>,
+ <stringvalue>Instagram</stringvalue>,
+ <stringvalue>LinkedIn</stringvalue>,
+ <stringvalue>Microsoft</stringvalue>,
+ <stringvalue>Scoop.it</stringvalue>,
+ <stringvalue>StockTwits</stringvalue>,
+ <stringvalue>Tumblr</stringvalue>,
+ <stringvalue>Twitter</stringvalue>,
+ <stringvalue>XING</stringvalue> and
+ <stringvalue>Yahoo</stringvalue>. Please contact the author if you
+ would like to ask to add built-in support for other types of OAuth
+ servers.<paragraphbreak />
+ If you want to access other types of OAuth servers that are not
+ yet supported, set this variable to an empty string and configure
+ other variables with values specific to those servers.</usage>
+ </documentation>
+ </variable>
+{/metadocument}
+*/
+ var $server = '';
+
+/*
+{metadocument}
+ <variable>
+ <name>request_token_url</name>
+ <type>STRING</type>
+ <value></value>
+ <documentation>
+ <purpose>URL of the OAuth server to request the initial token for
+ OAuth 1.0 and 1.0a servers.</purpose>
+ <usage>Set this variable to the OAuth request token URL when you are
+ not accessing one of the built-in supported OAuth
+ servers.<paragraphbreak />
+ For OAuth 1.0 and 1.0a servers, the request token URL can have
+ certain marks that will act as template placeholders which will be
+ replaced with given values before requesting the authorization
+ token. Currently it supports the following placeholder
+ marks:<paragraphbreak />
+ {SCOPE} - scope of the requested permissions to the granted by the
+ OAuth server with the user permissions</usage>
+ </documentation>
+ </variable>
+{/metadocument}
+*/
+ var $request_token_url = '';
+
+/*
+{metadocument}
+ <variable>
+ <name>dialog_url</name>
+ <type>STRING</type>
+ <value></value>
+ <documentation>
+ <purpose>URL of the OAuth server to redirect the browser so the user
+ can grant access to your application.</purpose>
+ <usage>Set this variable to the OAuth request token URL when you are
+ not accessing one of the built-in supported OAuth servers.<paragraphbreak />
+ For certain servers, the dialog URL can have certain marks that
+ will act as template placeholders which will be replaced with
+ values defined before redirecting the users browser. Currently it
+ supports the following placeholder marks:<paragraphbreak />
+ {REDIRECT_URI} - URL to redirect when returning from the OAuth
+ server authorization page<paragraphbreak />
+ {CLIENT_ID} - client application identifier registered at the
+ server<paragraphbreak />
+ {SCOPE} - scope of the requested permissions to the granted by the
+ OAuth server with the user permissions<paragraphbreak />
+ {STATE} - identifier of the OAuth session state</usage>
+ </documentation>
+ </variable>
+{/metadocument}
+*/
+ var $dialog_url = '';
+
+/*
+{metadocument}
+ <variable>
+ <name>offline_dialog_url</name>
+ <type>STRING</type>
+ <value></value>
+ <documentation>
+ <purpose>URL of the OAuth server to redirect the browser so the user
+ can grant access to your application when offline access is
+ requested.</purpose>
+ <usage>Set this variable to the OAuth request token URL when you are
+ not accessing one of the built-in supported OAuth servers and the
+ OAuth server supports offline access.<paragraphbreak />
+ It should have the same format as the
+ <variablelink>dialog_url</variablelink> variable.</usage>
+ </documentation>
+ </variable>
+{/metadocument}
+*/
+ var $offline_dialog_url = '';
+
+/*
+{metadocument}
+ <variable>
+ <name>append_state_to_redirect_uri</name>
+ <type>STRING</type>
+ <value></value>
+ <documentation>
+ <purpose>Pass the OAuth session state in a variable with a different
+ name to work around implementation bugs of certain OAuth
+ servers</purpose>
+ <usage>Set this variable when you are not accessing one of the
+ built-in supported OAuth servers if the OAuth server has a bug
+ that makes it not pass back the OAuth state identifier in a
+ request variable named state.</usage>
+ </documentation>
+ </variable>
+{/metadocument}
+*/
+ var $append_state_to_redirect_uri = '';
+
+/*
+{metadocument}
+ <variable>
+ <name>access_token_url</name>
+ <type>STRING</type>
+ <value></value>
+ <documentation>
+ <purpose>OAuth server URL that will return the access token
+ URL.</purpose>
+ <usage>Set this variable to the OAuth access token URL when you are
+ not accessing one of the built-in supported OAuth servers.</usage>
+ </documentation>
+ </variable>
+{/metadocument}
+*/
+ var $access_token_url = '';
+
+
+/*
+{metadocument}
+ <variable>
+ <name>oauth_version</name>
+ <type>STRING</type>
+ <value>2.0</value>
+ <documentation>
+ <purpose>Version of the protocol version supported by the OAuth
+ server.</purpose>
+ <usage>Set this variable to the OAuth server protocol version when
+ you are not accessing one of the built-in supported OAuth
+ servers.</usage>
+ </documentation>
+ </variable>
+{/metadocument}
+*/
+ var $oauth_version = '2.0';
+
+/*
+{metadocument}
+ <variable>
+ <name>url_parameters</name>
+ <type>BOOLEAN</type>
+ <value>0</value>
+ <documentation>
+ <purpose>Determine if the API call parameters should be moved to the
+ call URL.</purpose>
+ <usage>Set this variable to <booleanvalue>1</booleanvalue> if the
+ API you need to call requires that the call parameters always be
+ passed via the API URL.</usage>
+ </documentation>
+ </variable>
+{/metadocument}
+*/
+ var $url_parameters = false;
+
+/*
+{metadocument}
+ <variable>
+ <name>authorization_header</name>
+ <type>BOOLEAN</type>
+ <value>1</value>
+ <documentation>
+ <purpose>Determine if the OAuth parameters should be passed via HTTP
+ Authorization request header.</purpose>
+ <usage>Set this variable to <booleanvalue>1</booleanvalue> if the
+ OAuth server requires that the OAuth parameters be passed using
+ the HTTP Authorization instead of the request URI parameters.</usage>
+ </documentation>
+ </variable>
+{/metadocument}
+*/
+ var $authorization_header = true;
+
+/*
+{metadocument}
+ <variable>
+ <name>token_request_method</name>
+ <type>STRING</type>
+ <value>GET</value>
+ <documentation>
+ <purpose>Define the HTTP method that should be used to request
+ tokens from the server.</purpose>
+ <usage>Set this variable to <stringvalue>POST</stringvalue> if the
+ OAuth server does not support requesting tokens using the HTTP GET
+ method.</usage>
+ </documentation>
+ </variable>
+{/metadocument}
+*/
+ var $token_request_method = 'GET';
+
+/*
+{metadocument}
+ <variable>
+ <name>signature_method</name>
+ <type>STRING</type>
+ <value>HMAC-SHA1</value>
+ <documentation>
+ <purpose>Define the method to generate the signature for API request
+ parameters values.</purpose>
+ <usage>Currently it supports <stringvalue>PLAINTEXT</stringvalue>
+ and <stringvalue>HMAC-SHA1</stringvalue>.</usage>
+ </documentation>
+ </variable>
+{/metadocument}
+*/
+ var $signature_method = 'HMAC-SHA1';
+
+/*
+{metadocument}
+ <variable>
+ <name>redirect_uri</name>
+ <type>STRING</type>
+ <value></value>
+ <documentation>
+ <purpose>URL of the current script page that is calling this
+ class</purpose>
+ <usage>Set this variable to the current script page URL before
+ proceeding the the OAuth authorization process.</usage>
+ </documentation>
+ </variable>
+{/metadocument}
+*/
+ var $redirect_uri = '';
+
+/*
+{metadocument}
+ <variable>
+ <name>client_id</name>
+ <type>STRING</type>
+ <value></value>
+ <documentation>
+ <purpose>Identifier of your application registered with the OAuth
+ server</purpose>
+ <usage>Set this variable to the application identifier that is
+ provided by the OAuth server when you register the
+ application.</usage>
+ </documentation>
+ </variable>
+{/metadocument}
+*/
+ var $client_id = '';
+
+/*
+{metadocument}
+ <variable>
+ <name>client_secret</name>
+ <type>STRING</type>
+ <value></value>
+ <documentation>
+ <purpose>Secret value assigned to your application when it is
+ registered with the OAuth server.</purpose>
+ <usage>Set this variable to the application secret that is provided
+ by the OAuth server when you register the application.</usage>
+ </documentation>
+ </variable>
+{/metadocument}
+*/
+ var $client_secret = '';
+
+/*
+{metadocument}
+ <variable>
+ <name>scope</name>
+ <type>STRING</type>
+ <value></value>
+ <documentation>
+ <purpose>Permissions that your application needs to call the OAuth
+ server APIs</purpose>
+ <usage>Check the documentation of the APIs that your application
+ needs to call to set this variable with the identifiers of the
+ permissions that the user needs to grant to your application.</usage>
+ </documentation>
+ </variable>
+{/metadocument}
+*/
+ var $scope = '';
+
+/*
+{metadocument}
+ <variable>
+ <name>offline</name>
+ <type>BOOLEAN</type>
+ <value>0</value>
+ <documentation>
+ <purpose>Specify whether it will be necessary to call the API when
+ the user is not present and the server supports renewing expired
+ access tokens using refresh tokens.</purpose>
+ <usage>Set this variable to <booleanvalue>1</booleanvalue> if the
+ server supports renewing expired tokens automatically when the
+ user is not present.</usage>
+ </documentation>
+ </variable>
+{/metadocument}
+*/
+ var $offline = false;
+
+/*
+{metadocument}
+ <variable>
+ <name>access_token</name>
+ <type>STRING</type>
+ <value></value>
+ <documentation>
+ <purpose>Access token obtained from the OAuth server</purpose>
+ <usage>Check this variable to get the obtained access token upon
+ successful OAuth authorization.</usage>
+ </documentation>
+ </variable>
+{/metadocument}
+*/
+ var $access_token = '';
+
+/*
+{metadocument}
+ <variable>
+ <name>access_token_secret</name>
+ <type>STRING</type>
+ <value></value>
+ <documentation>
+ <purpose>Access token secret obtained from the OAuth server</purpose>
+ <usage>If the OAuth protocol version is 1.0 or 1.0a, check this
+ variable to get the obtained access token secret upon successful
+ OAuth authorization.</usage>
+ </documentation>
+ </variable>
+{/metadocument}
+*/
+ var $access_token_secret = '';
+
+/*
+{metadocument}
+ <variable>
+ <name>access_token_expiry</name>
+ <type>STRING</type>
+ <value></value>
+ <documentation>
+ <purpose>Timestamp of the expiry of the access token obtained from
+ the OAuth server.</purpose>
+ <usage>Check this variable to get the obtained access token expiry
+ time upon successful OAuth authorization. If this variable is
+ empty, that means no expiry time was set.</usage>
+ </documentation>
+ </variable>
+{/metadocument}
+*/
+ var $access_token_expiry = '';
+
+/*
+{metadocument}
+ <variable>
+ <name>access_token_type</name>
+ <type>STRING</type>
+ <value></value>
+ <documentation>
+ <purpose>Type of access token obtained from the OAuth server.</purpose>
+ <usage>Check this variable to get the obtained access token type
+ upon successful OAuth authorization.</usage>
+ </documentation>
+ </variable>
+{/metadocument}
+*/
+ var $access_token_type = '';
+
+/*
+{metadocument}
+ <variable>
+ <name>refresh_token</name>
+ <type>STRING</type>
+ <value></value>
+ <documentation>
+ <purpose>Refresh token obtained from the OAuth server</purpose>
+ <usage>Check this variable to get the obtained refresh token upon
+ successful OAuth authorization.</usage>
+ </documentation>
+ </variable>
+{/metadocument}
+*/
+ var $refresh_token = '';
+
+/*
+{metadocument}
+ <variable>
+ <name>access_token_error</name>
+ <type>STRING</type>
+ <value></value>
+ <documentation>
+ <purpose>Error message returned when a call to the API fails.</purpose>
+ <usage>Check this variable to determine if there was an error while
+ calling the Web services API when using the
+ <functionlink>CallAPI</functionlink> function.</usage>
+ </documentation>
+ </variable>
+{/metadocument}
+*/
+ var $access_token_error = '';
+
+/*
+{metadocument}
+ <variable>
+ <name>authorization_error</name>
+ <type>STRING</type>
+ <value></value>
+ <documentation>
+ <purpose>Error message returned when it was not possible to obtain
+ an OAuth access token</purpose>
+ <usage>Check this variable to determine if there was an error while
+ trying to obtain the OAuth access token.</usage>
+ </documentation>
+ </variable>
+{/metadocument}
+*/
+ var $authorization_error = '';
+
+/*
+{metadocument}
+ <variable>
+ <name>response_status</name>
+ <type>INTEGER</type>
+ <value>0</value>
+ <documentation>
+ <purpose>HTTP response status returned by the server when calling an
+ API</purpose>
+ <usage>Check this variable after calling the
+ <functionlink>CallAPI</functionlink> function if the API calls and you
+ need to process the error depending the response status.
+ <integervalue>200</integervalue> means no error.
+ <integervalue>0</integervalue> means the server response was not
+ retrieved.</usage>
+ </documentation>
+ </variable>
+{/metadocument}
+*/
+ var $response_status = 0;
+
+ var $oauth_user_agent = 'PHP-OAuth-API (http://www.phpclasses.org/oauth-api $Revision: 1.58 $)';
+ var $session_started = false;
+
+ Function SetError($error)
+ {
+ $this->error = $error;
+ if($this->debug)
+ $this->OutputDebug('Error: '.$error);
+ return(false);
+ }
+
+ Function SetPHPError($error, &$php_error_message)
+ {
+ if(IsSet($php_error_message)
+ && strlen($php_error_message))
+ $error.=": ".$php_error_message;
+ return($this->SetError($error));
+ }
+
+ Function OutputDebug($message)
+ {
+ if($this->debug)
+ {
+ $message = $this->debug_prefix.$message;
+ $this->debug_output .= $message."\n";;
+ error_log($message);
+ }
+ return(true);
+ }
+
+ Function GetRequestTokenURL(&$request_token_url)
+ {
+ $request_token_url = $this->request_token_url;
+ return(true);
+ }
+
+ Function GetDialogURL(&$url, $redirect_uri = '', $state = '')
+ {
+ $url = (($this->offline && strlen($this->offline_dialog_url)) ? $this->offline_dialog_url : $this->dialog_url);
+ if(strlen($url) === 0)
+ return $this->SetError('the dialog URL '.($this->offline ? 'for offline access ' : '').'is not defined for this server');
+ $url = str_replace(
+ '{REDIRECT_URI}', UrlEncode($redirect_uri), str_replace(
+ '{STATE}', UrlEncode($state), str_replace(
+ '{CLIENT_ID}', UrlEncode($this->client_id), str_replace(
+ '{SCOPE}', UrlEncode($this->scope),
+ $url))));
+ return(true);
+ }
+
+ Function GetAccessTokenURL(&$access_token_url)
+ {
+ $access_token_url = $this->access_token_url;
+ return(true);
+ }
+
+ Function GetStoredState(&$state)
+ {
+ if(!$this->session_started)
+ {
+ if(!function_exists('session_start'))
+ return $this->SetError('Session variables are not accessible in this PHP environment');
+ }
+ if(IsSet($_SESSION['OAUTH_STATE']))
+ $state = $_SESSION['OAUTH_STATE'];
+ else
+ $state = $_SESSION['OAUTH_STATE'] = time().'-'.substr(md5(rand().time()), 0, 6);
+ return(true);
+ }
+
+ Function GetRequestState(&$state)
+ {
+ $check = (strlen($this->append_state_to_redirect_uri) ? $this->append_state_to_redirect_uri : 'state');
+ $state = (IsSet($_GET[$check]) ? $_GET[$check] : null);
+ return(true);
+ }
+
+ Function GetRequestCode(&$code)
+ {
+ $code = (IsSet($_GET['code']) ? $_GET['code'] : null);
+ return(true);
+ }
+
+ Function GetRequestError(&$error)
+ {
+ $error = (IsSet($_GET['error']) ? $_GET['error'] : null);
+ return(true);
+ }
+
+ Function GetRequestDenied(&$denied)
+ {
+ $denied = (IsSet($_GET['denied']) ? $_GET['denied'] : null);
+ return(true);
+ }
+
+ Function GetRequestToken(&$token, &$verifier)
+ {
+ $token = (IsSet($_GET['oauth_token']) ? $_GET['oauth_token'] : null);
+ $verifier = (IsSet($_GET['oauth_verifier']) ? $_GET['oauth_verifier'] : null);
+ return(true);
+ }
+
+ Function GetRedirectURI(&$redirect_uri)
+ {
+ if(strlen($this->redirect_uri))
+ $redirect_uri = $this->redirect_uri;
+ else
+ $redirect_uri = 'http://'.$_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI'];
+ return true;
+ }
+
+/*
+{metadocument}
+ <function>
+ <name>StoreAccessToken</name>
+ <type>BOOLEAN</type>
+ <documentation>
+ <purpose>Store the values of the access token when it is succefully
+ retrieved from the OAuth server.</purpose>
+ <usage>This function is meant to be only be called from inside the
+ class. By default it stores access tokens in a session variable
+ named <stringvalue>OAUTH_ACCESS_TOKEN</stringvalue>.<paragraphbreak />
+ Actual implementations should create a sub-class and override this
+ function to make the access token values be stored in other types
+ of containers, like for instance databases.</usage>
+ <returnvalue>This function should return
+ <booleanvalue>1</booleanvalue> if the access token was stored
+ successfully.</returnvalue>
+ </documentation>
+ <argument>
+ <name>access_token</name>
+ <type>HASH</type>
+ <documentation>
+ <purpose>Associative array with properties of the access token.
+ The array may have set the following
+ properties:<paragraphbreak />
+ <stringvalue>value</stringvalue>: string value of the access
+ token<paragraphbreak />
+ <stringvalue>authorized</stringvalue>: boolean value that
+ determines if the access token was obtained
+ successfully<paragraphbreak />
+ <stringvalue>expiry</stringvalue>: (optional) timestamp in ISO
+ format relative to UTC time zone of the access token expiry
+ time<paragraphbreak />
+ <stringvalue>type</stringvalue>: (optional) type of OAuth token
+ that may determine how it should be used when sending API call
+ requests.<paragraphbreak />
+ <stringvalue>refresh</stringvalue>: (optional) token that some
+ servers may set to allowing refreshing access tokens when they
+ expire.</purpose>
+ </documentation>
+ </argument>
+ <do>
+{/metadocument}
+*/
+ Function StoreAccessToken($access_token)
+ {
+ if(!$this->session_started)
+ {
+ if(!function_exists('session_start'))
+ return $this->SetError('Session variables are not accessible in this PHP environment');
+ }
+ $_SESSION['OAUTH_ACCESS_TOKEN'][$this->access_token_url] = $access_token;
+ return true;
+ }
+/*
+{metadocument}
+ </do>
+ </function>
+{/metadocument}
+*/
+
+/*
+{metadocument}
+ <function>
+ <name>GetAccessToken</name>
+ <type>BOOLEAN</type>
+ <documentation>
+ <purpose>Retrieve the OAuth access token if it was already
+ previously stored by the
+ <functionlink>StoreAccessToken</functionlink> function.</purpose>
+ <usage>This function is meant to be only be called from inside the
+ class. By default it retrieves access tokens stored in a session
+ variable named
+ <stringvalue>OAUTH_ACCESS_TOKEN</stringvalue>.<paragraphbreak />
+ Actual implementations should create a sub-class and override this
+ function to retrieve the access token values from other types of
+ containers, like for instance databases.</usage>
+ <returnvalue>This function should return
+ <booleanvalue>1</booleanvalue> if the access token was retrieved
+ successfully.</returnvalue>
+ </documentation>
+ <argument>
+ <name>access_token</name>
+ <type>STRING</type>
+ <out />
+ <documentation>
+ <purpose>Return the properties of the access token in an
+ associative array. If the access token was not yet stored, it
+ returns an empty array. Otherwise, the properties it may return
+ are the same that may be passed to the
+ <functionlink>StoreAccessToken</functionlink>.</purpose>
+ </documentation>
+ </argument>
+ <do>
+{/metadocument}
+*/
+ Function GetAccessToken(&$access_token)
+ {
+ if(!$this->session_started)
+ {
+ if(!function_exists('session_start'))
+ return $this->SetError('Session variables are not accessible in this PHP environment');
+ if(!session_start())
+ return($this->SetPHPError('it was not possible to start the PHP session', $php_error_message));
+ $this->session_started = true;
+ }
+ if(IsSet($_SESSION['OAUTH_ACCESS_TOKEN'][$this->access_token_url]))
+ $access_token = $_SESSION['OAUTH_ACCESS_TOKEN'][$this->access_token_url];
+ else
+ $access_token = array();
+ return true;
+ }
+/*
+{metadocument}
+ </do>
+ </function>
+{/metadocument}
+*/
+
+/*
+{metadocument}
+ <function>
+ <name>ResetAccessToken</name>
+ <type>BOOLEAN</type>
+ <documentation>
+ <purpose>Reset the access token to a state back when the user has
+ not yet authorized the access to the OAuth server API.</purpose>
+ <usage>Call this function if for some reason the token to access
+ the API was revoked and you need to ask the user to authorize
+ the access again.<paragraphbreak />
+ By default the class stores and retrieves access tokens in a
+ session variable named
+ <stringvalue>OAUTH_ACCESS_TOKEN</stringvalue>.<paragraphbreak />
+ This function must be called when the user is accessing your site
+ pages, so it can reset the information stored in session variables
+ that cache the state of a previously retrieved access
+ token.<paragraphbreak />
+ Actual implementations should create a sub-class and override this
+ function to reset the access token state when it is stored in
+ other types of containers, like for instance databases.</usage>
+ <returnvalue>This function should return
+ <booleanvalue>1</booleanvalue> if the access token was resetted
+ successfully.</returnvalue>
+ </documentation>
+ <do>
+{/metadocument}
+*/
+ Function ResetAccessToken()
+ {
+ if($this->debug)
+ $this->OutputDebug('Resetting the access token status for OAuth server located at '.$this->access_token_url);
+ if(!$this->session_started)
+ {
+ if(!function_exists('session_start'))
+ return $this->SetError('Session variables are not accessible in this PHP environment');
+ if(!session_start())
+ return($this->SetPHPError('it was not possible to start the PHP session', $php_error_message));
+ }
+ $this->session_started = true;
+ if(IsSet($_SESSION['OAUTH_ACCESS_TOKEN'][$this->access_token_url]))
+ Unset($_SESSION['OAUTH_ACCESS_TOKEN'][$this->access_token_url]);
+ return true;
+ }
+/*
+{metadocument}
+ </do>
+ </function>
+{/metadocument}
+*/
+
+ Function Encode($value)
+ {
+ return(is_array($value) ? $this->EncodeArray($value) : str_replace('%7E', '~', str_replace('+',' ', RawURLEncode($value))));
+ }
+
+ Function EncodeArray($array)
+ {
+ foreach($array as $key => $value)
+ $array[$key] = $this->Encode($value);
+ return $array;
+ }
+
+ Function HMAC($function, $data, $key)
+ {
+ switch($function)
+ {
+ case 'sha1':
+ $pack = 'H40';
+ break;
+ default:
+ if($this->debug)
+ $this->OutputDebug($function.' is not a supported an HMAC hash type');
+ return('');
+ }
+ if(strlen($key) > 64)
+ $key = pack($pack, $function($key));
+ if(strlen($key) < 64)
+ $key = str_pad($key, 64, "\0");
+ return(pack($pack, $function((str_repeat("\x5c", 64) ^ $key).pack($pack, $function((str_repeat("\x36", 64) ^ $key).$data)))));
+ }
+
+ Function SendAPIRequest($url, $method, $parameters, $oauth, $options, &$response)
+ {
+ $this->response_status = 0;
+ $http = new http_class;
+ $http->debug = ($this->debug && $this->debug_http);
+ $http->log_debug = true;
+ $http->sasl_authenticate = 0;
+ $http->user_agent = $this->oauth_user_agent;
+ $http->redirection_limit = (IsSet($options['FollowRedirection']) ? intval($options['FollowRedirection']) : 0);
+ $http->follow_redirect = ($http->redirection_limit != 0);
+ if($this->debug)
+ $this->OutputDebug('Accessing the '.$options['Resource'].' at '.$url);
+ $post_files = array();
+ $method = strtoupper($method);
+ $authorization = '';
+ $type = (IsSet($options['RequestContentType']) ? strtolower(trim(strtok($options['RequestContentType'], ';'))) : 'application/x-www-form-urlencoded');
+ if(IsSet($oauth))
+ {
+ $values = array(
+ 'oauth_consumer_key'=>$this->client_id,
+ 'oauth_nonce'=>md5(uniqid(rand(), true)),
+ 'oauth_signature_method'=>$this->signature_method,
+ 'oauth_timestamp'=>time(),
+ 'oauth_version'=>'1.0',
+ );
+ $files = (IsSet($options['Files']) ? $options['Files'] : array());
+ if(count($files))
+ {
+ foreach($files as $name => $value)
+ {
+ if(!IsSet($parameters[$name]))
+ return($this->SetError('it was specified an file parameters named '.$name));
+ $file = array();
+ switch(IsSet($value['Type']) ? $value['Type'] : 'FileName')
+ {
+ case 'FileName':
+ $file['FileName'] = $parameters[$name];
+ break;
+ case 'Data':
+ $file['Data'] = $parameters[$name];
+ break;
+ default:
+ return($this->SetError($value['Type'].' is not a valid type for file '.$name));
+ }
+ $file['ContentType'] = (IsSet($value['Content-Type']) ? $value['Content-Type'] : 'automatic/name');
+ $post_files[$name] = $file;
+ }
+ UnSet($parameters[$name]);
+ if($method !== 'POST')
+ {
+ $this->OutputDebug('For uploading files the method should be POST not '.$method);
+ $method = 'POST';
+ }
+ if($type !== 'multipart/form-data')
+ {
+ if(IsSet($options['RequestContentType']))
+ return($this->SetError('the request content type for uploading files should be multipart/form-data'));
+ $type = 'multipart/form-data';
+ }
+ $value_parameters = array();
+ }
+ else
+ {
+ if($this->url_parameters
+ && $type === 'application/x-www-form-urlencoded'
+ && count($parameters))
+ {
+ $first = (strpos($url, '?') === false);
+ foreach($parameters as $parameter => $value)
+ {
+ $url .= ($first ? '?' : '&').UrlEncode($parameter).'='.UrlEncode($value);
+ $first = false;
+ }
+ $parameters = array();
+ }
+ $value_parameters = ($type !== 'application/x-www-form-urlencoded' ? array() : $parameters);
+ }
+ $values = array_merge($values, $oauth, $value_parameters);
+ $key = $this->Encode($this->client_secret).'&'.$this->Encode($this->access_token_secret);
+ switch($this->signature_method)
+ {
+ case 'PLAINTEXT':
+ $values['oauth_signature'] = $key;
+ break;
+ case 'HMAC-SHA1':
+ $uri = strtok($url, '?');
+ $sign = $method.'&'.$this->Encode($uri).'&';
+ $first = true;
+ $sign_values = $values;
+ $u = parse_url($url);
+ if(IsSet($u['query']))
+ {
+ parse_str($u['query'], $q);
+ foreach($q as $parameter => $value)
+ $sign_values[$parameter] = $value;
+ }
+ KSort($sign_values);
+ foreach($sign_values as $parameter => $value)
+ {
+ $sign .= $this->Encode(($first ? '' : '&').$parameter.'='.$this->Encode($value));
+ $first = false;
+ }
+ $values['oauth_signature'] = base64_encode($this->HMAC('sha1', $sign, $key));
+ break;
+ default:
+ return $this->SetError($this->signature_method.' signature method is not yet supported');
+ }
+ if($this->authorization_header)
+ {
+ $authorization = 'OAuth';
+ $first = true;
+ foreach($values as $parameter => $value)
+ {
+ $authorization .= ($first ? ' ' : ',').$parameter.'="'.$this->Encode($value).'"';
+ $first = false;
+ }
+ }
+ else
+ {
+ if($method === 'GET'
+ || (IsSet($options['PostValuesInURI'])
+ && $options['PostValuesInURI']))
+ {
+ $first = (strcspn($url, '?') == strlen($url));
+ foreach($values as $parameter => $value)
+ {
+ $url .= ($first ? '?' : '&').$parameter.'='.$this->Encode($value);
+ $first = false;
+ }
+ $post_values = array();
+ }
+ else
+ $post_values = $values;
+ }
+ }
+ if(strlen($error = $http->GetRequestArguments($url, $arguments)))
+ return($this->SetError('it was not possible to open the '.$options['Resource'].' URL: '.$error));
+ if(strlen($error = $http->Open($arguments)))
+ return($this->SetError('it was not possible to open the '.$options['Resource'].' URL: '.$error));
+ if(count($post_files))
+ $arguments['PostFiles'] = $post_files;
+ $arguments['RequestMethod'] = $method;
+ switch($type)
+ {
+ case 'application/x-www-form-urlencoded':
+ case 'multipart/form-data':
+ if(IsSet($options['RequestBody']))
+ return($this->SetError('the request body is defined automatically from the parameters'));
+ $arguments['PostValues'] = $parameters;
+ break;
+ case 'application/json':
+ $arguments['Headers']['Content-Type'] = $options['RequestContentType'];
+ if(!IsSet($options['RequestBody']))
+ {
+ $arguments['Body'] = json_encode($parameters);
+ break;
+ }
+ default:
+ if(!IsSet($options['RequestBody']))
+ return($this->SetError('it was not specified the body value of the of the API call request'));
+ $arguments['Headers']['Content-Type'] = $options['RequestContentType'];
+ $arguments['Body'] = $options['RequestBody'];
+ break;
+ }
+ $arguments['Headers']['Accept'] = (IsSet($options['Accept']) ? $options['Accept'] : '*/*');
+ if(strlen($authorization))
+ $arguments['Headers']['Authorization'] = $authorization;
+ if(strlen($error = $http->SendRequest($arguments))
+ || strlen($error = $http->ReadReplyHeaders($headers)))
+ {
+ $http->Close();
+ return($this->SetError('it was not possible to retrieve the '.$options['Resource'].': '.$error));
+ }
+ $error = $http->ReadWholeReplyBody($data);
+ $http->Close();
+ if(strlen($error))
+ {
+ return($this->SetError('it was not possible to access the '.$options['Resource'].': '.$error));
+ }
+ $this->response_status = intval($http->response_status);
+ $content_type = (IsSet($options['ResponseContentType']) ? $options['ResponseContentType'] : (IsSet($headers['content-type']) ? strtolower(trim(strtok($headers['content-type'], ';'))) : 'unspecified'));
+ switch($content_type)
+ {
+ case 'text/javascript':
+ case 'application/json':
+ if(!function_exists('json_decode'))
+ return($this->SetError('the JSON extension is not available in this PHP setup'));
+ $object = json_decode($data);
+ switch(GetType($object))
+ {
+ case 'object':
+ if(!IsSet($options['ConvertObjects'])
+ || !$options['ConvertObjects'])
+ $response = $object;
+ else
+ {
+ $response = array();
+ foreach($object as $property => $value)
+ $response[$property] = $value;
+ }
+ break;
+ case 'array':
+ $response = $object;
+ break;
+ default:
+ if(!IsSet($object))
+ return($this->SetError('it was not returned a valid JSON definition of the '.$options['Resource'].' values'));
+ $response = $object;
+ break;
+ }
+ break;
+ case 'application/x-www-form-urlencoded':
+ case 'text/plain':
+ case 'text/html':
+ parse_str($data, $response);
+ break;
+ default:
+ $response = $data;
+ break;
+ }
+ if($this->response_status >= 200
+ && $this->response_status < 300)
+ $this->access_token_error = '';
+ else
+ {
+ $this->access_token_error = 'it was not possible to access the '.$options['Resource'].': it was returned an unexpected response status '.$http->response_status.' Response: '.$data;
+ if($this->debug)
+ $this->OutputDebug('Could not retrieve the OAuth access. Error: '.$this->access_token_error);
+ if(IsSet($options['FailOnAccessError'])
+ && $options['FailOnAccessError'])
+ {
+ $this->error = $this->access_token_error;
+ return false;
+ }
+ }
+ return true;
+ }
+
+ Function ProcessToken($code, $refresh)
+ {
+ if($refresh)
+ {
+ $values = array(
+ 'client_id'=>$this->client_id,
+ 'client_secret'=>$this->client_secret,
+ 'refresh_token'=>$this->refresh_token,
+ 'grant_type'=>'refresh_token'
+ );
+ }
+ else
+ {
+ if(!$this->GetRedirectURI($redirect_uri))
+ return false;
+ $values = array(
+ 'code'=>$code,
+ 'client_id'=>$this->client_id,
+ 'client_secret'=>$this->client_secret,
+ 'redirect_uri'=>$redirect_uri,
+ 'grant_type'=>'authorization_code'
+ );
+ }
+ if(!$this->GetAccessTokenURL($url))
+ return false;
+ if(!$this->SendAPIRequest($url, 'POST', $values, null, array('Resource'=>'OAuth '.($refresh ? 'refresh' : 'access').' token', 'ConvertObjects'=>true), $response))
+ return false;
+ if(strlen($this->access_token_error))
+ {
+ $this->authorization_error = $this->access_token_error;
+ return true;
+ }
+ if(!IsSet($response['access_token']))
+ {
+ if(IsSet($response['error']))
+ {
+ $this->authorization_error = 'it was not possible to retrieve the access token: it was returned the error: '.$response['error'];
+ return true;
+ }
+ return($this->SetError('OAuth server did not return the access token'));
+ }
+ $access_token = array(
+ 'value'=>$this->access_token = $response['access_token'],
+ 'authorized'=>true
+ );
+ if($this->debug)
+ $this->OutputDebug('Access token: '.$this->access_token);
+ if(IsSet($response['expires'])
+ || IsSet($response['expires_in']))
+ {
+ $expires = (IsSet($response['expires']) ? $response['expires'] : $response['expires_in']);
+ if(strval($expires) !== strval(intval($expires))
+ || $expires <= 0)
+ return($this->SetError('OAuth server did not return a supported type of access token expiry time'));
+ $this->access_token_expiry = gmstrftime('%Y-%m-%d %H:%M:%S', time() + $expires);
+ if($this->debug)
+ $this->OutputDebug('Access token expiry: '.$this->access_token_expiry.' UTC');
+ $access_token['expiry'] = $this->access_token_expiry;
+ }
+ else
+ $this->access_token_expiry = '';
+ if(IsSet($response['token_type']))
+ {
+ $this->access_token_type = $response['token_type'];
+ if($this->debug)
+ $this->OutputDebug('Access token type: '.$this->access_token_type);
+ $access_token['type'] = $this->access_token_type;
+ }
+ else
+ $this->access_token_type = '';
+ if($refresh)
+ $response['refresh_token'] = $this->refresh_token;
+ elseif(IsSet($response['refresh_token']))
+ {
+ $this->refresh_token = $response['refresh_token'];
+ if($this->debug)
+ $this->OutputDebug('Refresh token: '.$this->refresh_token);
+ $access_token['refresh'] = $this->refresh_token;
+ }
+ else
+ $this->refresh_token = '';
+ if(!$this->StoreAccessToken($access_token))
+ return false;
+ return true;
+ }
+
+ Function RetrieveToken(&$valid)
+ {
+ $valid = false;
+ if(!$this->GetAccessToken($access_token))
+ return false;
+ if(IsSet($access_token['value']))
+ {
+ $this->access_token_expiry = '';
+ if(IsSet($access_token['expiry'])
+ && strcmp($this->access_token_expiry = $access_token['expiry'], gmstrftime('%Y-%m-%d %H:%M:%S')) < 0)
+ {
+ $this->access_token = '';
+ if($this->debug)
+ $this->OutputDebug('The OAuth access token expired in '.$this->access_token_expiry);
+ }
+ else
+ {
+ $this->access_token = $access_token['value'];
+ if(IsSet($access_token['type']))
+ $this->access_token_type = $access_token['type'];
+ else
+ $this->access_token_type = '';
+ if($this->debug)
+ $this->OutputDebug('The OAuth access token '.$this->access_token.' is valid');
+ if(strlen($this->access_token_type)
+ && $this->debug)
+ $this->OutputDebug('The OAuth access token is of type '.$this->access_token_type);
+ if(IsSet($access_token['refresh']))
+ $this->refresh_token = $access_token['refresh'];
+ else
+ $this->refresh_token = '';
+ $valid = true;
+ }
+ }
+ return true;
+ }
+/*
+{metadocument}
+ <function>
+ <name>CallAPI</name>
+ <type>BOOLEAN</type>
+ <documentation>
+ <purpose>Send a HTTP request to the Web services API using a
+ previously obtained authorization token via OAuth.</purpose>
+ <usage>This function can be used to call an API after having
+ previously obtained an access token through the OAuth protocol
+ using the <functionlink>Process</functionlink> function, or by
+ directly setting the variables
+ <variablelink>access_token</variablelink>, as well as
+ <variablelink>access_token_secret</variablelink> in case of using
+ OAuth 1.0 or 1.0a services.</usage>
+ <returnvalue>This function returns <booleanvalue>1</booleanvalue> if
+ the call was done successfully.</returnvalue>
+ </documentation>
+ <argument>
+ <name>url</name>
+ <type>STRING</type>
+ <documentation>
+ <purpose>URL of the API where the HTTP request will be sent.</purpose>
+ </documentation>
+ </argument>
+ <argument>
+ <name>method</name>
+ <type>STRING</type>
+ <documentation>
+ <purpose>HTTP method that will be used to send the request. It can
+ be <stringvalue>GET</stringvalue>,
+ <stringvalue>POST</stringvalue>,
+ <stringvalue>DELETE</stringvalue>, <stringvalue>PUT</stringvalue>,
+ etc..</purpose>
+ </documentation>
+ </argument>
+ <argument>
+ <name>parameters</name>
+ <type>HASH</type>
+ <documentation>
+ <purpose>Associative array with the names and values of the API
+ call request parameters.</purpose>
+ </documentation>
+ </argument>
+ <argument>
+ <name>options</name>
+ <type>HASH</type>
+ <documentation>
+ <purpose>Associative array with additional options to configure
+ the request. Currently it supports the following
+ options:<paragraphbreak />
+ <stringvalue>2Legged</stringvalue>: boolean option that
+ determines if the API request should be 2 legged. The default
+ value is <tt><booleanvalue>0</booleanvalue></tt>.<paragraphbreak />
+ <stringvalue>Accept</stringvalue>: content type value of the
+ Accept HTTP header to be sent in the API call HTTP request.
+ Some APIs require that a certain value be sent to specify
+ which version of the API is being called. The default value is
+ <stringvalue>*&#47;*</stringvalue>.<paragraphbreak />
+ <stringvalue>ConvertObjects</stringvalue>: boolean option that
+ determines if objects should be converted into arrays when the
+ response is returned in JSON format. The default value is
+ <booleanvalue>0</booleanvalue>.<paragraphbreak />
+ <stringvalue>FailOnAccessError</stringvalue>: boolean option
+ that determines if this functions should fail when the server
+ response status is not between 200 and 299. The default value
+ is <booleanvalue>0</booleanvalue>.<paragraphbreak />
+ <stringvalue>Files</stringvalue>: associative array with
+ details of the parameters that must be passed as file uploads.
+ The array indexes must have the same name of the parameters
+ to be sent as files. The respective array entry values must
+ also be associative arrays with the parameters for each file.
+ Currently it supports the following parameters:<paragraphbreak />
+ - <tt>Type</tt> - defines how the parameter value should be
+ treated. It can be <tt>'FileName'</tt> if the parameter value is
+ is the name of a local file to be uploaded. It may also be
+ <tt>'Data'</tt> if the parameter value is the actual data of
+ the file to be uploaded.<paragraphbreak />
+ - Default: <tt>'FileName'</tt><paragraphbreak />
+ - <tt>ContentType</tt> - MIME value of the content type of the
+ file. It can be <tt>'automatic/name'</tt> if the content type
+ should be determine from the file name extension.<paragraphbreak />
+ - Default: <tt>'automatic/name'</tt><paragraphbreak />
+ <stringvalue>PostValuesInURI</stringvalue>: boolean option to
+ determine that a POST request should pass the request values
+ in the URI. The default value is
+ <booleanvalue>0</booleanvalue>.<paragraphbreak />
+ <stringvalue>FollowRedirection</stringvalue>: limit number of
+ times that HTTP response redirects will be followed. If it is
+ set to <integervalue>0</integervalue>, redirection responses
+ fail in error. The default value is
+ <integervalue>0</integervalue>.<paragraphbreak />
+ <stringvalue>RequestBody</stringvalue>: request body data of a
+ custom type. The <stringvalue>RequestContentType</stringvalue>
+ option must be specified, so the
+ <stringvalue>RequestBody</stringvalue> option is considered.<paragraphbreak />
+ <stringvalue>RequestContentType</stringvalue>: content type that
+ should be used to send the request values. It can be either
+ <stringvalue>application/x-www-form-urlencoded</stringvalue>
+ for sending values like from Web forms, or
+ <stringvalue>application/json</stringvalue> for sending the
+ values encoded in JSON format. Other types are accepted if the
+ <stringvalue>RequestBody</stringvalue> option is specified.
+ The default value is
+ <stringvalue>application/x-www-form-urlencoded</stringvalue>.<paragraphbreak />
+ <stringvalue>RequestBody</stringvalue>: request body data of a
+ custom type. The <stringvalue>RequestContentType</stringvalue>
+ option must be specified, so the
+ <stringvalue>RequestBody</stringvalue> option is considered.<paragraphbreak />
+ <stringvalue>Resource</stringvalue>: string with a label that
+ will be used in the error messages and debug log entries to
+ identify what operation the request is performing. The default
+ value is <stringvalue>API call</stringvalue>.<paragraphbreak />
+ <stringvalue>ResponseContentType</stringvalue>: content type
+ that should be considered when decoding the API request
+ response. This overrides the <tt>Content-Type</tt> header
+ returned by the server. If the content type is
+ <stringvalue>application/x-www-form-urlencoded</stringvalue>
+ the function will parse the data returning an array of
+ key-value pairs. If the content type is
+ <stringvalue>application/json</stringvalue> the response will
+ be decode as a JSON-encoded data type. Other content type
+ values will make the function return the original response
+ value as it was returned from the server. The default value
+ for this option is to use what the server returned in the
+ <tt>Content-Type</tt> header.</purpose>
+ </documentation>
+ </argument>
+ <argument>
+ <name>response</name>
+ <type>STRING</type>
+ <out />
+ <documentation>
+ <purpose>Return the value of the API response. If the value is
+ JSON encoded, this function will decode it and return the value
+ converted to respective types. If the value is form encoded,
+ this function will decode the response and return it as an
+ array. Otherwise, the class will return the value as a
+ string.</purpose>
+ </documentation>
+ </argument>
+ <do>
+{/metadocument}
+*/
+ Function CallAPI($url, $method, $parameters, $options, &$response)
+ {
+ if(!IsSet($options['Resource']))
+ $options['Resource'] = 'API call';
+ if(!IsSet($options['ConvertObjects']))
+ $options['ConvertObjects'] = false;
+ if(strlen($this->access_token) === 0)
+ {
+ if(!$this->RetrieveToken($valid))
+ return false;
+ if(!$valid)
+ return $this->SetError('the access token is not set to a valid value');
+ }
+ switch(intval($this->oauth_version))
+ {
+ case 1:
+ $oauth = array(
+ 'oauth_token'=>((IsSet($options['2Legged']) && $options['2Legged']) ? '' : $this->access_token)
+ );
+ break;
+
+ case 2:
+ if(strlen($this->access_token_expiry)
+ && strcmp($this->access_token_expiry, gmstrftime('%Y-%m-%d %H:%M:%S')) <= 0)
+ {
+ if(strlen($this->refresh_token) === 0)
+ return($this->SetError('the access token expired and no refresh token is available'));
+ if($this->debug)
+ {
+ $this->OutputDebug('The access token expired on '.$this->access_token_expiry);
+ $this->OutputDebug('Refreshing the access token');
+ }
+ if(!$this->ProcessToken(null, true))
+ return false;
+ }
+ $oauth = null;
+ $url .= (strcspn($url, '?') < strlen($url) ? '&' : '?').'access_token='.UrlEncode($this->access_token);
+ break;
+
+ default:
+ return($this->SetError($this->oauth_version.' is not a supported version of the OAuth protocol'));
+ }
+ return($this->SendAPIRequest($url, $method, $parameters, $oauth, $options, $response));
+ }
+/*
+{metadocument}
+ </do>
+ </function>
+{/metadocument}
+*/
+
+/*
+{metadocument}
+ <function>
+ <name>Initialize</name>
+ <type>BOOLEAN</type>
+ <documentation>
+ <purpose>Initialize the class variables and internal state. It must
+ be called before calling other class functions.</purpose>
+ <usage>Set the <variablelink>server</variablelink> variable before
+ calling this function to let it initialize the class variables to
+ work with the specified server type. Alternatively, you can set
+ other class variables manually to make it work with servers that
+ are not yet built-in supported.</usage>
+ <returnvalue>This function returns <booleanvalue>1</booleanvalue> if
+ it was able to successfully initialize the class for the specified
+ server type.</returnvalue>
+ </documentation>
+ <do>
+{/metadocument}
+*/
+ Function Initialize()
+ {
+ if(strlen($this->server) === 0)
+ return true;
+ $this->request_token_url = '';
+ $this->append_state_to_redirect_uri = '';
+ $this->authorization_header = true;
+ $this->url_parameters = false;
+ $this->token_request_method = 'GET';
+ $this->signature_method = 'HMAC-SHA1';
+ switch($this->server)
+ {
+ case 'Bitbucket':
+ $this->oauth_version = '1.0a';
+ $this->request_token_url = 'https://bitbucket.org/!api/1.0/oauth/request_token';
+ $this->dialog_url = 'https://bitbucket.org/!api/1.0/oauth/authenticate';
+ $this->access_token_url = 'https://bitbucket.org/!api/1.0/oauth/access_token';
+ $this->url_parameters = true;
+ break;
+
+ case 'Box':
+ $this->oauth_version = '2.0';
+ $this->dialog_url = 'https://www.box.com/api/oauth2/authorize?response_type=code&client_id={CLIENT_ID}&redirect_uri={REDIRECT_URI}&state={STATE}';
+ $this->offline_dialog_url = 'https://www.box.com/api/oauth2/authorize?response_type=code&client_id={CLIENT_ID}&redirect_uri={REDIRECT_URI}&state={STATE}&access_type=offline&approval_prompt=force';
+ $this->access_token_url = 'https://www.box.com/api/oauth2/token';
+ break;
+
+ case 'Dropbox':
+ $this->oauth_version = '1.0';
+ $this->request_token_url = 'https://api.dropbox.com/1/oauth/request_token';
+ $this->dialog_url = 'https://www.dropbox.com/1/oauth/authorize';
+ $this->access_token_url = 'https://api.dropbox.com/1/oauth/access_token';
+ $this->authorization_header = false;
+ break;
+
+ case 'Eventful':
+ $this->oauth_version = '1.0a';
+ $this->request_token_url = 'http://eventful.com/oauth/request_token';
+ $this->dialog_url = 'http://eventful.com/oauth/authorize';
+ $this->access_token_url = 'http://eventful.com/oauth/access_token';
+ $this->authorization_header = false;
+ $this->url_parameters = true;
+ $this->token_request_method = 'POST';
+ break;
+
+ case 'Evernote':
+ $this->oauth_version = '1.0a';
+ $this->request_token_url = 'https://sandbox.evernote.com/oauth';
+ $this->dialog_url = 'https://sandbox.evernote.com/OAuth.action';
+ $this->access_token_url = 'https://sandbox.evernote.com/oauth';
+ $this->url_parameters = true;
+ $this->authorization_header = false;
+ break;
+
+ case 'Facebook':
+ $this->oauth_version = '2.0';
+ $this->dialog_url = 'https://www.facebook.com/dialog/oauth?client_id={CLIENT_ID}&redirect_uri={REDIRECT_URI}&scope={SCOPE}&state={STATE}';
+ $this->access_token_url = 'https://graph.facebook.com/oauth/access_token';
+ break;
+
+ case 'Fitbit':
+ $this->oauth_version = '1.0a';
+ $this->request_token_url = 'http://api.fitbit.com/oauth/request_token';
+ $this->dialog_url = 'http://api.fitbit.com/oauth/authorize';
+ $this->access_token_url = 'http://api.fitbit.com/oauth/access_token';
+ break;
+
+ case 'Flickr':
+ $this->oauth_version = '1.0a';
+ $this->request_token_url = 'http://www.flickr.com/services/oauth/request_token';
+ $this->dialog_url = 'http://www.flickr.com/services/oauth/authorize?perms={SCOPE}';
+ $this->access_token_url = 'http://www.flickr.com/services/oauth/access_token';
+ $this->authorization_header = false;
+ break;
+
+ case 'Foursquare':
+ $this->oauth_version = '2.0';
+ $this->dialog_url = 'https://foursquare.com/oauth2/authorize?client_id={CLIENT_ID}&scope={SCOPE}&response_type=code&redirect_uri={REDIRECT_URI}&state={STATE}';
+ $this->access_token_url = 'https://foursquare.com/oauth2/access_token';
+ break;
+
+ case 'github':
+ $this->oauth_version = '2.0';
+ $this->dialog_url = 'https://github.com/login/oauth/authorize?client_id={CLIENT_ID}&redirect_uri={REDIRECT_URI}&scope={SCOPE}&state={STATE}';
+ $this->access_token_url = 'https://github.com/login/oauth/access_token';
+ break;
+
+ case 'Google':
+ $this->oauth_version = '2.0';
+ $this->dialog_url = 'https://accounts.google.com/o/oauth2/auth?response_type=code&client_id={CLIENT_ID}&redirect_uri={REDIRECT_URI}&scope={SCOPE}&state={STATE}';
+ $this->offline_dialog_url = 'https://accounts.google.com/o/oauth2/auth?response_type=code&client_id={CLIENT_ID}&redirect_uri={REDIRECT_URI}&scope={SCOPE}&state={STATE}&access_type=offline&approval_prompt=force';
+ $this->access_token_url = 'https://accounts.google.com/o/oauth2/token';
+ break;
+
+ case 'Instagram':
+ $this->oauth_version = '2.0';
+ $this->dialog_url ='https://api.instagram.com/oauth/authorize/?client_id={CLIENT_ID}&redirect_uri={REDIRECT_URI}&scope={SCOPE}&response_type=code&state={STATE}';
+ $this->access_token_url = 'https://api.instagram.com/oauth/access_token';
+ break;
+
+ case 'LinkedIn':
+ $this->oauth_version = '1.0a';
+ $this->request_token_url = 'https://api.linkedin.com/uas/oauth/requestToken?scope={SCOPE}';
+ $this->dialog_url = 'https://api.linkedin.com/uas/oauth/authenticate';
+ $this->access_token_url = 'https://api.linkedin.com/uas/oauth/accessToken';
+ $this->url_parameters = true;
+ break;
+
+ case 'Microsoft':
+ $this->oauth_version = '2.0';
+ $this->dialog_url = 'https://login.live.com/oauth20_authorize.srf?client_id={CLIENT_ID}&scope={SCOPE}&response_type=code&redirect_uri={REDIRECT_URI}&state={STATE}';
+ $this->access_token_url = 'https://login.live.com/oauth20_token.srf';
+ break;
+
+ case 'RightSignature':
+ $this->oauth_version = '1.0a';
+ $this->request_token_url = 'https://rightsignature.com/oauth/request_token';
+ $this->dialog_url = 'https://rightsignature.com/oauth/authorize';
+ $this->access_token_url = 'https://rightsignature.com/oauth/access_token';
+ $this->authorization_header = false;
+ break;
+
+ case 'Scoop.it':
+ $this->oauth_version = '1.0a';
+ $this->request_token_url = 'https://www.scoop.it/oauth/request';
+ $this->dialog_url = 'https://www.scoop.it/oauth/authorize';
+ $this->access_token_url = 'https://www.scoop.it/oauth/access';
+ $this->authorization_header = false;
+ break;
+
+ case 'StockTwits':
+ $this->oauth_version = '2.0';
+ $this->dialog_url = 'https://api.stocktwits.com/api/2/oauth/authorize?client_id={CLIENT_ID}&response_type=code&redirect_uri={REDIRECT_URI}&scope={SCOPE}&state={STATE}';
+ $this->access_token_url = 'https://api.stocktwits.com/api/2/oauth/token';
+ break;
+
+ case 'Tumblr':
+ $this->oauth_version = '1.0a';
+ $this->request_token_url = 'http://www.tumblr.com/oauth/request_token';
+ $this->dialog_url = 'http://www.tumblr.com/oauth/authorize';
+ $this->access_token_url = 'http://www.tumblr.com/oauth/access_token';
+ break;
+
+ case 'Twitter':
+ $this->oauth_version = '1.0a';
+ $this->request_token_url = 'https://api.twitter.com/oauth/request_token';
+ $this->dialog_url = 'https://api.twitter.com/oauth/authenticate';
+ $this->access_token_url = 'https://api.twitter.com/oauth/access_token';
+ $this->url_parameters = true;
+ break;
+
+ case 'XING':
+ $this->oauth_version = '1.0a';
+ $this->request_token_url = 'https://api.xing.com/v1/request_token';
+ $this->dialog_url = 'https://api.xing.com/v1/authorize';
+ $this->access_token_url = 'https://api.xing.com/v1/access_token';
+ $this->authorization_header = false;
+ break;
+
+ case 'Yahoo':
+ $this->oauth_version = '1.0a';
+ $this->request_token_url = 'https://api.login.yahoo.com/oauth/v2/get_request_token';
+ $this->dialog_url = 'https://api.login.yahoo.com/oauth/v2/request_auth';
+ $this->access_token_url = 'https://api.login.yahoo.com/oauth/v2/get_token';
+ $this->authorization_header = false;
+ break;
+
+ default:
+ return($this->SetError($this->server.' is not yet a supported type of OAuth server. Please contact the author Manuel Lemos <mlemos@acm.org> to request adding built-in support to this type of OAuth server.'));
+ }
+ return(true);
+ }
+/*
+{metadocument}
+ </do>
+ </function>
+{/metadocument}
+*/
+
+/*
+{metadocument}
+ <function>
+ <name>Process</name>
+ <type>BOOLEAN</type>
+ <documentation>
+ <purpose>Process the OAuth protocol interaction with the OAuth
+ server.</purpose>
+ <usage>Call this function when you need to retrieve the OAuth access
+ token. Check the <variablelink>access_token</variablelink> to
+ determine if the access token was obtained successfully.</usage>
+ <returnvalue>This function returns <booleanvalue>1</booleanvalue> if
+ the OAuth protocol was processed without errors.</returnvalue>
+ </documentation>
+ <do>
+{/metadocument}
+*/
+ Function Process()
+ {
+ switch(intval($this->oauth_version))
+ {
+ case 1:
+ $one_a = ($this->oauth_version === '1.0a');
+ if($this->debug)
+ $this->OutputDebug('Checking the OAuth token authorization state');
+ if(!$this->GetAccessToken($access_token))
+ return false;
+ if(IsSet($access_token['authorized'])
+ && IsSet($access_token['value']))
+ {
+ $expired = (IsSet($access_token['expiry']) && strcmp($access_token['expiry'], gmstrftime('%Y-%m-%d %H:%M:%S')) <= 0);
+ if(!$access_token['authorized']
+ || $expired)
+ {
+ if($this->debug)
+ {
+ if($expired)
+ $this->OutputDebug('The OAuth token expired on '.$access_token['expiry'].'UTC');
+ else
+ $this->OutputDebug('The OAuth token is not yet authorized');
+ $this->OutputDebug('Checking the OAuth token and verifier');
+ }
+ if(!$this->GetRequestToken($token, $verifier))
+ return false;
+ if(!IsSet($token)
+ || ($one_a
+ && !IsSet($verifier)))
+ {
+ if(!$this->GetRequestDenied($denied))
+ return false;
+ if(IsSet($denied)
+ && $denied === $access_token['value'])
+ {
+ if($this->debug)
+ $this->OutputDebug('The authorization request was denied');
+ $this->authorization_error = 'the request was denied';
+ return true;
+ }
+ else
+ {
+ if($this->debug)
+ $this->OutputDebug('Reset the OAuth token state because token and verifier are not both set');
+ $access_token = array();
+ }
+ }
+ elseif($token !== $access_token['value'])
+ {
+ if($this->debug)
+ $this->OutputDebug('Reset the OAuth token state because token does not match what as previously retrieved');
+ $access_token = array();
+ }
+ else
+ {
+ if(!$this->GetAccessTokenURL($url))
+ return false;
+ $oauth = array(
+ 'oauth_token'=>$token,
+ );
+ if($one_a)
+ $oauth['oauth_verifier'] = $verifier;
+ $this->access_token_secret = $access_token['secret'];
+ $options = array('Resource'=>'OAuth access token');
+ $method = strtoupper($this->token_request_method);
+ switch($method)
+ {
+ case 'GET':
+ break;
+ case 'POST':
+ $options['PostValuesInURI'] = true;
+ break;
+ default:
+ $this->error = $method.' is not a supported method to request tokens';
+ break;
+ }
+ if(!$this->SendAPIRequest($url, $method, array(), $oauth, $options, $response))
+ return false;
+ if(strlen($this->access_token_error))
+ {
+ $this->authorization_error = $this->access_token_error;
+ return true;
+ }
+ if(!IsSet($response['oauth_token'])
+ || !IsSet($response['oauth_token_secret']))
+ {
+ $this->authorization_error= 'it was not returned the access token and secret';
+ return true;
+ }
+ $access_token = array(
+ 'value'=>$response['oauth_token'],
+ 'secret'=>$response['oauth_token_secret'],
+ 'authorized'=>true
+ );
+ if(IsSet($response['oauth_expires_in']))
+ {
+ $expires = $response['oauth_expires_in'];
+ if(strval($expires) !== strval(intval($expires))
+ || $expires <= 0)
+ return($this->SetError('OAuth server did not return a supported type of access token expiry time'));
+ $this->access_token_expiry = gmstrftime('%Y-%m-%d %H:%M:%S', time() + $expires);
+ if($this->debug)
+ $this->OutputDebug('Access token expiry: '.$this->access_token_expiry.' UTC');
+ $access_token['expiry'] = $this->access_token_expiry;
+ }
+ else
+ $this->access_token_expiry = '';
+
+ if(!$this->StoreAccessToken($access_token))
+ return false;
+ if($this->debug)
+ $this->OutputDebug('The OAuth token was authorized');
+ }
+ }
+ elseif($this->debug)
+ $this->OutputDebug('The OAuth token was already authorized');
+ if(IsSet($access_token['authorized'])
+ && $access_token['authorized'])
+ {
+ $this->access_token = $access_token['value'];
+ $this->access_token_secret = $access_token['secret'];
+ return true;
+ }
+ }
+ else
+ {
+ if($this->debug)
+ $this->OutputDebug('The OAuth access token is not set');
+ $access_token = array();
+ }
+ if(!IsSet($access_token['authorized']))
+ {
+ if($this->debug)
+ $this->OutputDebug('Requesting the unauthorized OAuth token');
+ if(!$this->GetRequestTokenURL($url))
+ return false;
+ $url = str_replace('{SCOPE}', UrlEncode($this->scope), $url);
+ if(!$this->GetRedirectURI($redirect_uri))
+ return false;
+ $oauth = array(
+ 'oauth_callback'=>$redirect_uri,
+ );
+ $options = array('Resource'=>'OAuth request token');
+ $method = strtoupper($this->token_request_method);
+ switch($method)
+ {
+ case 'GET':
+ break;
+ case 'POST':
+ $options['PostValuesInURI'] = true;
+ break;
+ default:
+ $this->error = $method.' is not a supported method to request tokens';
+ break;
+ }
+ if(!$this->SendAPIRequest($url, $method, array(), $oauth, $options, $response))
+ return false;
+ if(strlen($this->access_token_error))
+ {
+ $this->authorization_error = $this->access_token_error;
+ return true;
+ }
+ if(!IsSet($response['oauth_token'])
+ || !IsSet($response['oauth_token_secret']))
+ {
+ $this->authorization_error = 'it was not returned the requested token';
+ return true;
+ }
+ $access_token = array(
+ 'value'=>$response['oauth_token'],
+ 'secret'=>$response['oauth_token_secret'],
+ 'authorized'=>false
+ );
+ if(!$this->StoreAccessToken($access_token))
+ return false;
+ }
+ if(!$this->GetDialogURL($url))
+ return false;
+ $url .= (strpos($url, '?') === false ? '?' : '&').'oauth_token='.$access_token['value'];
+ if(!$one_a)
+ {
+ if(!$this->GetRedirectURI($redirect_uri))
+ return false;
+ $url .= '&oauth_callback='.UrlEncode($redirect_uri);
+ }
+ if($this->debug)
+ $this->OutputDebug('Redirecting to OAuth authorize page '.$url);
+ Header('HTTP/1.0 302 OAuth Redirection');
+ Header('Location: '.$url);
+ $this->exit = true;
+ return true;
+
+ case 2:
+ if($this->debug)
+ $this->OutputDebug('Checking if OAuth access token was already retrieved from '.$this->access_token_url);
+ if(!$this->RetrieveToken($valid))
+ return false;
+ if($valid)
+ return true;
+ if($this->debug)
+ $this->OutputDebug('Checking the authentication state in URI '.$_SERVER['REQUEST_URI']);
+ if(!$this->GetStoredState($stored_state))
+ return false;
+ if(strlen($stored_state) == 0)
+ return($this->SetError('it was not set the OAuth state'));
+ if(!$this->GetRequestState($state))
+ return false;
+ if($state === $stored_state)
+ {
+ if($this->debug)
+ $this->OutputDebug('Checking the authentication code');
+ if(!$this->GetRequestCode($code))
+ return false;
+ if(strlen($code) == 0)
+ {
+ if(!$this->GetRequestError($this->authorization_error))
+ return false;
+ if(IsSet($this->authorization_error))
+ {
+ if($this->debug)
+ $this->OutputDebug('Authorization failed with error code '.$this->authorization_error);
+ switch($this->authorization_error)
+ {
+ case 'invalid_request':
+ case 'unauthorized_client':
+ case 'access_denied':
+ case 'unsupported_response_type':
+ case 'invalid_scope':
+ case 'server_error':
+ case 'temporarily_unavailable':
+ case 'user_denied':
+ return true;
+ default:
+ return($this->SetError('it was returned an unknown OAuth error code'));
+ }
+ }
+ return($this->SetError('it was not returned the OAuth dialog code'));
+ }
+ if(!$this->ProcessToken($code, false))
+ return false;
+ }
+ else
+ {
+ if(!$this->GetRedirectURI($redirect_uri))
+ return false;
+ if(strlen($this->append_state_to_redirect_uri))
+ $redirect_uri .= (strpos($redirect_uri, '?') === false ? '?' : '&').$this->append_state_to_redirect_uri.'='.$stored_state;
+ if(!$this->GetDialogURL($url, $redirect_uri, $stored_state))
+ return false;
+ if(strlen($url) == 0)
+ return($this->SetError('it was not set the OAuth dialog URL'));
+ if($this->debug)
+ $this->OutputDebug('Redirecting to OAuth Dialog '.$url);
+ Header('HTTP/1.0 302 OAuth Redirection');
+ Header('Location: '.$url);
+ $this->exit = true;
+ }
+ break;
+
+ default:
+ return($this->SetError($this->oauth_version.' is not a supported version of the OAuth protocol'));
+ }
+ return(true);
+ }
+/*
+{metadocument}
+ </do>
+ </function>
+{/metadocument}
+*/
+
+/*
+{metadocument}
+ <function>
+ <name>Finalize</name>
+ <type>BOOLEAN</type>
+ <documentation>
+ <purpose>Cleanup any resources that may have been used during the
+ OAuth protocol processing or execution of API calls.</purpose>
+ <usage>Always call this function as the last step after calling the
+ functions <functionlink>Process</functionlink> or
+ <functionlink>CallAPI</functionlink>.</usage>
+ <returnvalue>This function returns <booleanvalue>1</booleanvalue> if
+ the function cleaned up any resources successfully.</returnvalue>
+ </documentation>
+ <argument>
+ <name>success</name>
+ <type>BOOLEAN</type>
+ <documentation>
+ <purpose>Pass the last success state returned by the class or any
+ external code processing the class function results.</purpose>
+ </documentation>
+ </argument>
+ <do>
+{/metadocument}
+*/
+ Function Finalize($success)
+ {
+ return($success);
+ }
+/*
+{metadocument}
+ </do>
+ </function>
+{/metadocument}
+*/
+
+/*
+{metadocument}
+ <function>
+ <name>Output</name>
+ <type>VOID</type>
+ <documentation>
+ <purpose>Display the results of the OAuth protocol processing.</purpose>
+ <usage>Only call this function if you are debugging the OAuth
+ authorization process and you need to view what was its
+ results.</usage>
+ </documentation>
+ <do>
+{/metadocument}
+*/
+ Function Output()
+ {
+ if(strlen($this->authorization_error)
+ || strlen($this->access_token_error)
+ || strlen($this->access_token))
+ {
+?>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+<title>OAuth client result</title>
+</head>
+<body>
+<h1>OAuth client result</h1>
+<?php
+ if(strlen($this->authorization_error))
+ {
+?>
+<p>It was not possible to authorize the application.<?php
+ if($this->debug)
+ {
+?>
+<br>Authorization error: <?php echo HtmlSpecialChars($this->authorization_error);
+ }
+?></p>
+<?php
+ }
+ elseif(strlen($this->access_token_error))
+ {
+?>
+<p>It was not possible to use the application access token.
+<?php
+ if($this->debug)
+ {
+?>
+<br>Error: <?php echo HtmlSpecialChars($this->access_token_error);
+ }
+?></p>
+<?php
+ }
+ elseif(strlen($this->access_token))
+ {
+?>
+<p>The application authorization was obtained successfully.
+<?php
+ if($this->debug)
+ {
+?>
+<br>Access token: <?php echo HtmlSpecialChars($this->access_token);
+ if(IsSet($this->access_token_secret))
+ {
+?>
+<br>Access token secret: <?php echo HtmlSpecialChars($this->access_token_secret);
+ }
+ }
+?></p>
+<?php
+ if(strlen($this->access_token_expiry))
+ {
+?>
+<p>Access token expiry: <?php echo $this->access_token_expiry; ?> UTC</p>
+<?php
+ }
+ }
+?>
+</body>
+</html>
+<?php
+ }
+ }
+/*
+{metadocument}
+ </do>
+ </function>
+{/metadocument}
+*/
+
+};
+
+/*
+
+{metadocument}
+</class>
+{/metadocument}
+
+*/
+
+?> \ No newline at end of file
diff --git a/library/oauth/oauth_client_class.html b/library/oauth/oauth_client_class.html
new file mode 100644
index 000000000..690730a7e
--- /dev/null
+++ b/library/oauth/oauth_client_class.html
@@ -0,0 +1,607 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+<title>Class: OAuth client</title>
+</head>
+<body>
+<center><h1>Class: OAuth client</h1></center>
+<hr />
+<ul>
+<p><b>Version:</b> <tt>@(#) $Id: oauth_client.php,v 1.58 2013/04/11 09:33:16 mlemos Exp $</tt></p>
+<h2><a name="table_of_contents">Contents</a></h2>
+<ul>
+<li><a href="#2.1.1">Summary</a></li>
+<ul>
+<li><a href="#3.2.0">Name</a></li>
+<li><a href="#3.2.0.0">Author</a></li>
+<li><a href="#3.2.0.1">Copyright</a></li>
+<li><a href="#3.2.0.2">Version</a></li>
+<li><a href="#3.2.0.3">Purpose</a></li>
+<li><a href="#3.2.0.4">Usage</a></li>
+</ul>
+<li><a href="#4.1.1">Variables</a></li>
+<ul>
+<li><a href="#5.2.31">error</a></li>
+<li><a href="#5.2.32">debug</a></li>
+<li><a href="#5.2.33">debug_http</a></li>
+<li><a href="#5.2.34">exit</a></li>
+<li><a href="#5.2.35">debug_output</a></li>
+<li><a href="#5.2.36">debug_prefix</a></li>
+<li><a href="#5.2.37">server</a></li>
+<li><a href="#5.2.38">request_token_url</a></li>
+<li><a href="#5.2.39">dialog_url</a></li>
+<li><a href="#5.2.40">offline_dialog_url</a></li>
+<li><a href="#5.2.41">append_state_to_redirect_uri</a></li>
+<li><a href="#5.2.42">access_token_url</a></li>
+<li><a href="#5.2.43">oauth_version</a></li>
+<li><a href="#5.2.44">url_parameters</a></li>
+<li><a href="#5.2.45">authorization_header</a></li>
+<li><a href="#5.2.46">token_request_method</a></li>
+<li><a href="#5.2.47">signature_method</a></li>
+<li><a href="#5.2.48">redirect_uri</a></li>
+<li><a href="#5.2.49">client_id</a></li>
+<li><a href="#5.2.50">client_secret</a></li>
+<li><a href="#5.2.51">scope</a></li>
+<li><a href="#5.2.52">offline</a></li>
+<li><a href="#5.2.53">access_token</a></li>
+<li><a href="#5.2.54">access_token_secret</a></li>
+<li><a href="#5.2.55">access_token_expiry</a></li>
+<li><a href="#5.2.56">access_token_type</a></li>
+<li><a href="#5.2.57">refresh_token</a></li>
+<li><a href="#5.2.58">access_token_error</a></li>
+<li><a href="#5.2.59">authorization_error</a></li>
+<li><a href="#5.2.60">response_status</a></li>
+</ul>
+<li><a href="#6.1.1">Functions</a></li>
+<ul>
+<li><a href="#7.2.9">StoreAccessToken</a></li>
+<li><a href="#9.2.10">GetAccessToken</a></li>
+<li><a href="#11.2.11">ResetAccessToken</a></li>
+<li><a href="#11.2.12">CallAPI</a></li>
+<li><a href="#13.2.13">Initialize</a></li>
+<li><a href="#13.2.14">Process</a></li>
+<li><a href="#13.2.15">Finalize</a></li>
+<li><a href="#15.2.16">Output</a></li>
+</ul>
+</ul>
+<p><a href="#table_of_contents">Top of the table of contents</a></p>
+</ul>
+<hr />
+<ul>
+<h2><li><a name="2.1.1">Summary</a></li></h2>
+<ul>
+<h3><a name="3.2.0">Name</a></h3>
+<p>OAuth client</p>
+<h3><a name="3.2.0.0">Author</a></h3>
+<p>Manuel Lemos (<a href="mailto:mlemos-at-acm.org">mlemos-at-acm.org</a>)</p>
+<h3><a name="3.2.0.1">Copyright</a></h3>
+<p>Copyright &copy; (C) Manuel Lemos 2012</p>
+<h3><a name="3.2.0.2">Version</a></h3>
+<p>@(#) $Id: oauth_client.php,v 1.58 2013/04/11 09:33:16 mlemos Exp $</p>
+<h3><a name="3.2.0.3">Purpose</a></h3>
+<p>This class serves two main purposes:</p>
+<p> 1) Implement the OAuth protocol to retrieve a token from a server to authorize the access to an API on behalf of the current user.</p>
+<p> 2) Perform calls to a Web services API using a token previously obtained using this class or a token provided some other way by the Web services provider.</p>
+<h3><a name="3.2.0.4">Usage</a></h3>
+<p>Regardless of your purposes, you always need to start calling the class <tt><a href="#function_Initialize">Initialize</a></tt> function after initializing setup variables. After you are done with the class, always call the <tt><a href="#function_Finalize">Finalize</a></tt> function at the end.</p>
+<p> This class supports either OAuth protocol versions 1.0, 1.0a and 2.0. It abstracts the differences between these protocol versions, so the class usage is the same independently of the OAuth version of the server.</p>
+<p> The class also provides built-in support to several popular OAuth servers, so you do not have to manually configure all the details to access those servers. Just set the <tt><a href="#variable_server">server</a></tt> variable to configure the class to access one of the built-in supported servers.</p>
+<p> If you need to access one type of server that is not yet directly supported by the class, you need to configure it explicitly setting the variables: <tt><a href="#variable_oauth_version">oauth_version</a></tt>, <tt><a href="#variable_url_parameters">url_parameters</a></tt>, <tt><a href="#variable_authorization_header">authorization_header</a></tt>, <tt><a href="#variable_request_token_url">request_token_url</a></tt>, <tt><a href="#variable_dialog_url">dialog_url</a></tt>, <tt><a href="#variable_offline_dialog_url">offline_dialog_url</a></tt>, <tt><a href="#variable_append_state_to_redirect_uri">append_state_to_redirect_uri</a></tt> and <tt><a href="#variable_access_token_url">access_token_url</a></tt>.</p>
+<p> Before proceeding to the actual OAuth authorization process, you need to have registered your application with the OAuth server. The registration provides you values to set the variables <tt><a href="#variable_client_id">client_id</a></tt> and <tt><a href="#variable_client_secret">client_secret</a></tt>.</p>
+<p> You also need to set the variables <tt><a href="#variable_redirect_uri">redirect_uri</a></tt> and <tt><a href="#variable_scope">scope</a></tt> before calling the <tt><a href="#function_Process">Process</a></tt> function to make the class perform the necessary interactions with the OAuth server.</p>
+<p> The OAuth protocol involves multiple steps that include redirection to the OAuth server. There it asks permission to the current user to grant your application access to APIs on his/her behalf. When there is a redirection, the class will set the <tt><a href="#variable_exit">exit</a></tt> variable to 1. Then your script should exit immediately without outputting anything.</p>
+<p> When the OAuth access token is successfully obtained, the following variables are set by the class with the obtained values: <tt><a href="#variable_access_token">access_token</a></tt>, <tt><a href="#variable_access_token_secret">access_token_secret</a></tt>, <tt><a href="#variable_access_token_expiry">access_token_expiry</a></tt>, <tt><a href="#variable_access_token_type">access_token_type</a></tt>. You may want to store these values to use them later when calling the server APIs.</p>
+<p> If there was a problem during OAuth authorization process, check the variable <tt><a href="#variable_authorization_error">authorization_error</a></tt> to determine the reason.</p>
+<p> Once you get the access token, you can call the server APIs using the <tt><a href="#function_CallAPI">CallAPI</a></tt> function. Check the <tt><a href="#variable_access_token_error">access_token_error</a></tt> variable to determine if there was an error when trying to to call the API.</p>
+<p> If for some reason the user has revoked the access to your application, you need to ask the user to authorize your application again. First you may need to call the function <tt><a href="#function_ResetAccessToken">ResetAccessToken</a></tt> to reset the value of the access token that may be cached in session variables.</p>
+<p><a href="#table_of_contents">Table of contents</a></p>
+</ul>
+</ul>
+<hr />
+<ul>
+<h2><li><a name="variables"></a><a name="4.1.1">Variables</a></li></h2>
+<ul>
+<li><tt><a href="#variable_error">error</a></tt></li><br />
+<li><tt><a href="#variable_debug">debug</a></tt></li><br />
+<li><tt><a href="#variable_debug_http">debug_http</a></tt></li><br />
+<li><tt><a href="#variable_exit">exit</a></tt></li><br />
+<li><tt><a href="#variable_debug_output">debug_output</a></tt></li><br />
+<li><tt><a href="#variable_debug_prefix">debug_prefix</a></tt></li><br />
+<li><tt><a href="#variable_server">server</a></tt></li><br />
+<li><tt><a href="#variable_request_token_url">request_token_url</a></tt></li><br />
+<li><tt><a href="#variable_dialog_url">dialog_url</a></tt></li><br />
+<li><tt><a href="#variable_offline_dialog_url">offline_dialog_url</a></tt></li><br />
+<li><tt><a href="#variable_append_state_to_redirect_uri">append_state_to_redirect_uri</a></tt></li><br />
+<li><tt><a href="#variable_access_token_url">access_token_url</a></tt></li><br />
+<li><tt><a href="#variable_oauth_version">oauth_version</a></tt></li><br />
+<li><tt><a href="#variable_url_parameters">url_parameters</a></tt></li><br />
+<li><tt><a href="#variable_authorization_header">authorization_header</a></tt></li><br />
+<li><tt><a href="#variable_token_request_method">token_request_method</a></tt></li><br />
+<li><tt><a href="#variable_signature_method">signature_method</a></tt></li><br />
+<li><tt><a href="#variable_redirect_uri">redirect_uri</a></tt></li><br />
+<li><tt><a href="#variable_client_id">client_id</a></tt></li><br />
+<li><tt><a href="#variable_client_secret">client_secret</a></tt></li><br />
+<li><tt><a href="#variable_scope">scope</a></tt></li><br />
+<li><tt><a href="#variable_offline">offline</a></tt></li><br />
+<li><tt><a href="#variable_access_token">access_token</a></tt></li><br />
+<li><tt><a href="#variable_access_token_secret">access_token_secret</a></tt></li><br />
+<li><tt><a href="#variable_access_token_expiry">access_token_expiry</a></tt></li><br />
+<li><tt><a href="#variable_access_token_type">access_token_type</a></tt></li><br />
+<li><tt><a href="#variable_refresh_token">refresh_token</a></tt></li><br />
+<li><tt><a href="#variable_access_token_error">access_token_error</a></tt></li><br />
+<li><tt><a href="#variable_authorization_error">authorization_error</a></tt></li><br />
+<li><tt><a href="#variable_response_status">response_status</a></tt></li><br />
+<p><a href="#table_of_contents">Table of contents</a></p>
+<h3><a name="variable_error"></a><li><a name="5.2.31">error</a></li></h3>
+<h3>Type</h3>
+<p><tt><i>string</i></tt></p>
+<h3>Default value</h3>
+<p><tt>''</tt></p>
+<h3>Purpose</h3>
+<p>Store the message that is returned when an error occurs.</p>
+<h3>Usage</h3>
+<p>Check this variable to understand what happened when a call to any of the class functions has failed.</p>
+<p> This class uses cumulative error handling. This means that if one class functions that may fail is called and this variable was already set to an error message due to a failure in a previous call to the same or other function, the function will also fail and does not do anything.</p>
+<p> This allows programs using this class to safely call several functions that may fail and only check the failure condition after the last function call.</p>
+<p> Just set this variable to an empty string to clear the error condition.</p>
+<p><a href="#variables">Variables</a></p>
+<h3><a name="variable_debug"></a><li><a name="5.2.32">debug</a></li></h3>
+<h3>Type</h3>
+<p><tt><i>bool</i></tt></p>
+<h3>Default value</h3>
+<p><tt>0</tt></p>
+<h3>Purpose</h3>
+<p>Control whether debug output is enabled</p>
+<h3>Usage</h3>
+<p>Set this variable to 1 if you need to check what is going on during calls to the class. When enabled, the debug output goes either to the variable <tt><a href="#variable_debug_output">debug_output</a></tt> and the PHP error log.</p>
+<p><a href="#variables">Variables</a></p>
+<h3><a name="variable_debug_http"></a><li><a name="5.2.33">debug_http</a></li></h3>
+<h3>Type</h3>
+<p><tt><i>bool</i></tt></p>
+<h3>Default value</h3>
+<p><tt>0</tt></p>
+<h3>Purpose</h3>
+<p>Control whether the dialog with the remote Web server should also be logged.</p>
+<h3>Usage</h3>
+<p>Set this variable to 1 if you want to inspect the data exchange with the OAuth server.</p>
+<p><a href="#variables">Variables</a></p>
+<h3><a name="variable_exit"></a><li><a name="5.2.34">exit</a></li></h3>
+<h3>Type</h3>
+<p><tt><i>bool</i></tt></p>
+<h3>Default value</h3>
+<p><tt>0</tt></p>
+<h3>Purpose</h3>
+<p>Determine if the current script should be exited.</p>
+<h3>Usage</h3>
+<p>Check this variable after calling the <tt><a href="#function_Process">Process</a></tt> function and exit your script immediately if the variable is set to 1.</p>
+<p><a href="#variables">Variables</a></p>
+<h3><a name="variable_debug_output"></a><li><a name="5.2.35">debug_output</a></li></h3>
+<h3>Type</h3>
+<p><tt><i>string</i></tt></p>
+<h3>Default value</h3>
+<p><tt>''</tt></p>
+<h3>Purpose</h3>
+<p>Capture the debug output generated by the class</p>
+<h3>Usage</h3>
+<p>Inspect this variable if you need to see what happened during the class function calls.</p>
+<p><a href="#variables">Variables</a></p>
+<h3><a name="variable_debug_prefix"></a><li><a name="5.2.36">debug_prefix</a></li></h3>
+<h3>Type</h3>
+<p><tt><i>string</i></tt></p>
+<h3>Default value</h3>
+<p><tt>'OAuth client: '</tt></p>
+<h3>Purpose</h3>
+<p>Mark the lines of the debug output to identify actions performed by this class.</p>
+<h3>Usage</h3>
+<p>Change this variable if you prefer the debug output lines to be prefixed with a different text.</p>
+<p><a href="#variables">Variables</a></p>
+<h3><a name="variable_server"></a><li><a name="5.2.37">server</a></li></h3>
+<h3>Type</h3>
+<p><tt><i>string</i></tt></p>
+<h3>Default value</h3>
+<p><tt>''</tt></p>
+<h3>Purpose</h3>
+<p>Identify the type of OAuth server to access.</p>
+<h3>Usage</h3>
+<p>The class provides built-in support to several types of OAuth servers. This means that the class can automatically initialize several configuration variables just by setting this server variable.</p>
+<p> Currently it supports the following servers: 'Bitbucket', 'Box', 'Dropbox', 'Eventful', 'Facebook', 'Fitbit', 'Flickr', 'Foursquare', 'github', 'Google', 'Instagram', 'LinkedIn', 'Microsoft', 'Scoop.it', 'StockTwits', 'Tumblr', 'Twitter', 'XING' and 'Yahoo'. Please contact the author if you would like to ask to add built-in support for other types of OAuth servers.</p>
+<p> If you want to access other types of OAuth servers that are not yet supported, set this variable to an empty string and configure other variables with values specific to those servers.</p>
+<p><a href="#variables">Variables</a></p>
+<h3><a name="variable_request_token_url"></a><li><a name="5.2.38">request_token_url</a></li></h3>
+<h3>Type</h3>
+<p><tt><i>string</i></tt></p>
+<h3>Default value</h3>
+<p><tt>''</tt></p>
+<h3>Purpose</h3>
+<p>URL of the OAuth server to request the initial token for OAuth 1.0 and 1.0a servers.</p>
+<h3>Usage</h3>
+<p>Set this variable to the OAuth request token URL when you are not accessing one of the built-in supported OAuth servers.</p>
+<p> For OAuth 1.0 and 1.0a servers, the request token URL can have certain marks that will act as template placeholders which will be replaced with given values before requesting the authorization token. Currently it supports the following placeholder marks:</p>
+<p> {SCOPE} - scope of the requested permissions to the granted by the OAuth server with the user permissions</p>
+<p><a href="#variables">Variables</a></p>
+<h3><a name="variable_dialog_url"></a><li><a name="5.2.39">dialog_url</a></li></h3>
+<h3>Type</h3>
+<p><tt><i>string</i></tt></p>
+<h3>Default value</h3>
+<p><tt>''</tt></p>
+<h3>Purpose</h3>
+<p>URL of the OAuth server to redirect the browser so the user can grant access to your application.</p>
+<h3>Usage</h3>
+<p>Set this variable to the OAuth request token URL when you are not accessing one of the built-in supported OAuth servers.</p>
+<p> For certain servers, the dialog URL can have certain marks that will act as template placeholders which will be replaced with values defined before redirecting the users browser. Currently it supports the following placeholder marks:</p>
+<p> {REDIRECT_URI} - URL to redirect when returning from the OAuth server authorization page</p>
+<p> {CLIENT_ID} - client application identifier registered at the server</p>
+<p> {SCOPE} - scope of the requested permissions to the granted by the OAuth server with the user permissions</p>
+<p> {STATE} - identifier of the OAuth session state</p>
+<p><a href="#variables">Variables</a></p>
+<h3><a name="variable_offline_dialog_url"></a><li><a name="5.2.40">offline_dialog_url</a></li></h3>
+<h3>Type</h3>
+<p><tt><i>string</i></tt></p>
+<h3>Default value</h3>
+<p><tt>''</tt></p>
+<h3>Purpose</h3>
+<p>URL of the OAuth server to redirect the browser so the user can grant access to your application when offline access is requested.</p>
+<h3>Usage</h3>
+<p>Set this variable to the OAuth request token URL when you are not accessing one of the built-in supported OAuth servers and the OAuth server supports offline access.</p>
+<p> It should have the same format as the <tt><a href="#variable_dialog_url">dialog_url</a></tt> variable.</p>
+<p><a href="#variables">Variables</a></p>
+<h3><a name="variable_append_state_to_redirect_uri"></a><li><a name="5.2.41">append_state_to_redirect_uri</a></li></h3>
+<h3>Type</h3>
+<p><tt><i>string</i></tt></p>
+<h3>Default value</h3>
+<p><tt>''</tt></p>
+<h3>Purpose</h3>
+<p>Pass the OAuth session state in a variable with a different name to work around implementation bugs of certain OAuth servers</p>
+<h3>Usage</h3>
+<p>Set this variable when you are not accessing one of the built-in supported OAuth servers if the OAuth server has a bug that makes it not pass back the OAuth state identifier in a request variable named state.</p>
+<p><a href="#variables">Variables</a></p>
+<h3><a name="variable_access_token_url"></a><li><a name="5.2.42">access_token_url</a></li></h3>
+<h3>Type</h3>
+<p><tt><i>string</i></tt></p>
+<h3>Default value</h3>
+<p><tt>''</tt></p>
+<h3>Purpose</h3>
+<p>OAuth server URL that will return the access token URL.</p>
+<h3>Usage</h3>
+<p>Set this variable to the OAuth access token URL when you are not accessing one of the built-in supported OAuth servers.</p>
+<p><a href="#variables">Variables</a></p>
+<h3><a name="variable_oauth_version"></a><li><a name="5.2.43">oauth_version</a></li></h3>
+<h3>Type</h3>
+<p><tt><i>string</i></tt></p>
+<h3>Default value</h3>
+<p><tt>'2.0'</tt></p>
+<h3>Purpose</h3>
+<p>Version of the protocol version supported by the OAuth server.</p>
+<h3>Usage</h3>
+<p>Set this variable to the OAuth server protocol version when you are not accessing one of the built-in supported OAuth servers.</p>
+<p><a href="#variables">Variables</a></p>
+<h3><a name="variable_url_parameters"></a><li><a name="5.2.44">url_parameters</a></li></h3>
+<h3>Type</h3>
+<p><tt><i>bool</i></tt></p>
+<h3>Default value</h3>
+<p><tt>0</tt></p>
+<h3>Purpose</h3>
+<p>Determine if the API call parameters should be moved to the call URL.</p>
+<h3>Usage</h3>
+<p>Set this variable to 1 if the API you need to call requires that the call parameters always be passed via the API URL.</p>
+<p><a href="#variables">Variables</a></p>
+<h3><a name="variable_authorization_header"></a><li><a name="5.2.45">authorization_header</a></li></h3>
+<h3>Type</h3>
+<p><tt><i>bool</i></tt></p>
+<h3>Default value</h3>
+<p><tt>1</tt></p>
+<h3>Purpose</h3>
+<p>Determine if the OAuth parameters should be passed via HTTP Authorization request header.</p>
+<h3>Usage</h3>
+<p>Set this variable to 1 if the OAuth server requires that the OAuth parameters be passed using the HTTP Authorization instead of the request URI parameters.</p>
+<p><a href="#variables">Variables</a></p>
+<h3><a name="variable_token_request_method"></a><li><a name="5.2.46">token_request_method</a></li></h3>
+<h3>Type</h3>
+<p><tt><i>string</i></tt></p>
+<h3>Default value</h3>
+<p><tt>'GET'</tt></p>
+<h3>Purpose</h3>
+<p>Define the HTTP method that should be used to request tokens from the server.</p>
+<h3>Usage</h3>
+<p>Set this variable to 'POST' if the OAuth server does not support requesting tokens using the HTTP GET method.</p>
+<p><a href="#variables">Variables</a></p>
+<h3><a name="variable_signature_method"></a><li><a name="5.2.47">signature_method</a></li></h3>
+<h3>Type</h3>
+<p><tt><i>string</i></tt></p>
+<h3>Default value</h3>
+<p><tt>'HMAC-SHA1'</tt></p>
+<h3>Purpose</h3>
+<p>Define the method to generate the signature for API request parameters values.</p>
+<h3>Usage</h3>
+<p>Currently it supports 'PLAINTEXT' and 'HMAC-SHA1'.</p>
+<p><a href="#variables">Variables</a></p>
+<h3><a name="variable_redirect_uri"></a><li><a name="5.2.48">redirect_uri</a></li></h3>
+<h3>Type</h3>
+<p><tt><i>string</i></tt></p>
+<h3>Default value</h3>
+<p><tt>''</tt></p>
+<h3>Purpose</h3>
+<p>URL of the current script page that is calling this class</p>
+<h3>Usage</h3>
+<p>Set this variable to the current script page URL before proceeding the the OAuth authorization process.</p>
+<p><a href="#variables">Variables</a></p>
+<h3><a name="variable_client_id"></a><li><a name="5.2.49">client_id</a></li></h3>
+<h3>Type</h3>
+<p><tt><i>string</i></tt></p>
+<h3>Default value</h3>
+<p><tt>''</tt></p>
+<h3>Purpose</h3>
+<p>Identifier of your application registered with the OAuth server</p>
+<h3>Usage</h3>
+<p>Set this variable to the application identifier that is provided by the OAuth server when you register the application.</p>
+<p><a href="#variables">Variables</a></p>
+<h3><a name="variable_client_secret"></a><li><a name="5.2.50">client_secret</a></li></h3>
+<h3>Type</h3>
+<p><tt><i>string</i></tt></p>
+<h3>Default value</h3>
+<p><tt>''</tt></p>
+<h3>Purpose</h3>
+<p>Secret value assigned to your application when it is registered with the OAuth server.</p>
+<h3>Usage</h3>
+<p>Set this variable to the application secret that is provided by the OAuth server when you register the application.</p>
+<p><a href="#variables">Variables</a></p>
+<h3><a name="variable_scope"></a><li><a name="5.2.51">scope</a></li></h3>
+<h3>Type</h3>
+<p><tt><i>string</i></tt></p>
+<h3>Default value</h3>
+<p><tt>''</tt></p>
+<h3>Purpose</h3>
+<p>Permissions that your application needs to call the OAuth server APIs</p>
+<h3>Usage</h3>
+<p>Check the documentation of the APIs that your application needs to call to set this variable with the identifiers of the permissions that the user needs to grant to your application.</p>
+<p><a href="#variables">Variables</a></p>
+<h3><a name="variable_offline"></a><li><a name="5.2.52">offline</a></li></h3>
+<h3>Type</h3>
+<p><tt><i>bool</i></tt></p>
+<h3>Default value</h3>
+<p><tt>0</tt></p>
+<h3>Purpose</h3>
+<p>Specify whether it will be necessary to call the API when the user is not present and the server supports renewing expired access tokens using refresh tokens.</p>
+<h3>Usage</h3>
+<p>Set this variable to 1 if the server supports renewing expired tokens automatically when the user is not present.</p>
+<p><a href="#variables">Variables</a></p>
+<h3><a name="variable_access_token"></a><li><a name="5.2.53">access_token</a></li></h3>
+<h3>Type</h3>
+<p><tt><i>string</i></tt></p>
+<h3>Default value</h3>
+<p><tt>''</tt></p>
+<h3>Purpose</h3>
+<p>Access token obtained from the OAuth server</p>
+<h3>Usage</h3>
+<p>Check this variable to get the obtained access token upon successful OAuth authorization.</p>
+<p><a href="#variables">Variables</a></p>
+<h3><a name="variable_access_token_secret"></a><li><a name="5.2.54">access_token_secret</a></li></h3>
+<h3>Type</h3>
+<p><tt><i>string</i></tt></p>
+<h3>Default value</h3>
+<p><tt>''</tt></p>
+<h3>Purpose</h3>
+<p>Access token secret obtained from the OAuth server</p>
+<h3>Usage</h3>
+<p>If the OAuth protocol version is 1.0 or 1.0a, check this variable to get the obtained access token secret upon successful OAuth authorization.</p>
+<p><a href="#variables">Variables</a></p>
+<h3><a name="variable_access_token_expiry"></a><li><a name="5.2.55">access_token_expiry</a></li></h3>
+<h3>Type</h3>
+<p><tt><i>string</i></tt></p>
+<h3>Default value</h3>
+<p><tt>''</tt></p>
+<h3>Purpose</h3>
+<p>Timestamp of the expiry of the access token obtained from the OAuth server.</p>
+<h3>Usage</h3>
+<p>Check this variable to get the obtained access token expiry time upon successful OAuth authorization. If this variable is empty, that means no expiry time was set.</p>
+<p><a href="#variables">Variables</a></p>
+<h3><a name="variable_access_token_type"></a><li><a name="5.2.56">access_token_type</a></li></h3>
+<h3>Type</h3>
+<p><tt><i>string</i></tt></p>
+<h3>Default value</h3>
+<p><tt>''</tt></p>
+<h3>Purpose</h3>
+<p>Type of access token obtained from the OAuth server.</p>
+<h3>Usage</h3>
+<p>Check this variable to get the obtained access token type upon successful OAuth authorization.</p>
+<p><a href="#variables">Variables</a></p>
+<h3><a name="variable_refresh_token"></a><li><a name="5.2.57">refresh_token</a></li></h3>
+<h3>Type</h3>
+<p><tt><i>string</i></tt></p>
+<h3>Default value</h3>
+<p><tt>''</tt></p>
+<h3>Purpose</h3>
+<p>Refresh token obtained from the OAuth server</p>
+<h3>Usage</h3>
+<p>Check this variable to get the obtained refresh token upon successful OAuth authorization.</p>
+<p><a href="#variables">Variables</a></p>
+<h3><a name="variable_access_token_error"></a><li><a name="5.2.58">access_token_error</a></li></h3>
+<h3>Type</h3>
+<p><tt><i>string</i></tt></p>
+<h3>Default value</h3>
+<p><tt>''</tt></p>
+<h3>Purpose</h3>
+<p>Error message returned when a call to the API fails.</p>
+<h3>Usage</h3>
+<p>Check this variable to determine if there was an error while calling the Web services API when using the <tt><a href="#function_CallAPI">CallAPI</a></tt> function.</p>
+<p><a href="#variables">Variables</a></p>
+<h3><a name="variable_authorization_error"></a><li><a name="5.2.59">authorization_error</a></li></h3>
+<h3>Type</h3>
+<p><tt><i>string</i></tt></p>
+<h3>Default value</h3>
+<p><tt>''</tt></p>
+<h3>Purpose</h3>
+<p>Error message returned when it was not possible to obtain an OAuth access token</p>
+<h3>Usage</h3>
+<p>Check this variable to determine if there was an error while trying to obtain the OAuth access token.</p>
+<p><a href="#variables">Variables</a></p>
+<h3><a name="variable_response_status"></a><li><a name="5.2.60">response_status</a></li></h3>
+<h3>Type</h3>
+<p><tt><i>int</i></tt></p>
+<h3>Default value</h3>
+<p><tt>0</tt></p>
+<h3>Purpose</h3>
+<p>HTTP response status returned by the server when calling an API</p>
+<h3>Usage</h3>
+<p>Check this variable after calling the <tt><a href="#function_CallAPI">CallAPI</a></tt> function if the API calls and you need to process the error depending the response status. 200 means no error. 0 means the server response was not retrieved.</p>
+<p><a href="#variables">Variables</a></p>
+<p><a href="#table_of_contents">Table of contents</a></p>
+</ul>
+</ul>
+<hr />
+<ul>
+<h2><li><a name="functions"></a><a name="6.1.1">Functions</a></li></h2>
+<ul>
+<li><tt><a href="#function_StoreAccessToken">StoreAccessToken</a></tt></li><br />
+<li><tt><a href="#function_GetAccessToken">GetAccessToken</a></tt></li><br />
+<li><tt><a href="#function_ResetAccessToken">ResetAccessToken</a></tt></li><br />
+<li><tt><a href="#function_CallAPI">CallAPI</a></tt></li><br />
+<li><tt><a href="#function_Initialize">Initialize</a></tt></li><br />
+<li><tt><a href="#function_Process">Process</a></tt></li><br />
+<li><tt><a href="#function_Finalize">Finalize</a></tt></li><br />
+<li><tt><a href="#function_Output">Output</a></tt></li><br />
+<p><a href="#table_of_contents">Table of contents</a></p>
+<h3><a name="function_StoreAccessToken"></a><li><a name="7.2.9">StoreAccessToken</a></li></h3>
+<h3>Synopsis</h3>
+<p><tt><i>bool</i> StoreAccessToken(</tt><ul>
+<tt>(input and output) <i>array</i> </tt><tt><a href="#argument_StoreAccessToken_access_token">access_token</a></tt></ul>
+<tt>)</tt></p>
+<h3>Purpose</h3>
+<p>Store the values of the access token when it is succefully retrieved from the OAuth server.</p>
+<h3>Usage</h3>
+<p>This function is meant to be only be called from inside the class. By default it stores access tokens in a session variable named 'OAUTH_ACCESS_TOKEN'.</p>
+<p> Actual implementations should create a sub-class and override this function to make the access token values be stored in other types of containers, like for instance databases.</p>
+<h3>Arguments</h3>
+<ul>
+<p><tt><b><a name="argument_StoreAccessToken_access_token">access_token</a></b></tt> - Associative array with properties of the access token. The array may have set the following properties:</p>
+<p> 'value': string value of the access token</p>
+<p> 'authorized': boolean value that determines if the access token was obtained successfully</p>
+<p> 'expiry': (optional) timestamp in ISO format relative to UTC time zone of the access token expiry time</p>
+<p> 'type': (optional) type of OAuth token that may determine how it should be used when sending API call requests.</p>
+<p> 'refresh': (optional) token that some servers may set to allowing refreshing access tokens when they expire.</p>
+</ul>
+<h3>Return value</h3>
+<p>This function should return 1 if the access token was stored successfully.</p>
+<p><a href="#functions">Functions</a></p>
+<h3><a name="function_GetAccessToken"></a><li><a name="9.2.10">GetAccessToken</a></li></h3>
+<h3>Synopsis</h3>
+<p><tt><i>bool</i> GetAccessToken(</tt><ul>
+<tt>(output) <i>string &amp;</i> </tt><tt><a href="#argument_GetAccessToken_access_token">access_token</a></tt></ul>
+<tt>)</tt></p>
+<h3>Purpose</h3>
+<p>Retrieve the OAuth access token if it was already previously stored by the <tt><a href="#function_StoreAccessToken">StoreAccessToken</a></tt> function.</p>
+<h3>Usage</h3>
+<p>This function is meant to be only be called from inside the class. By default it retrieves access tokens stored in a session variable named 'OAUTH_ACCESS_TOKEN'.</p>
+<p> Actual implementations should create a sub-class and override this function to retrieve the access token values from other types of containers, like for instance databases.</p>
+<h3>Arguments</h3>
+<ul>
+<p><tt><b><a name="argument_GetAccessToken_access_token">access_token</a></b></tt> - Return the properties of the access token in an associative array. If the access token was not yet stored, it returns an empty array. Otherwise, the properties it may return are the same that may be passed to the <tt><a href="#function_StoreAccessToken">StoreAccessToken</a></tt>.</p>
+</ul>
+<h3>Return value</h3>
+<p>This function should return 1 if the access token was retrieved successfully.</p>
+<p><a href="#functions">Functions</a></p>
+<h3><a name="function_ResetAccessToken"></a><li><a name="11.2.11">ResetAccessToken</a></li></h3>
+<h3>Synopsis</h3>
+<p><tt><i>bool</i> ResetAccessToken(</tt><tt>)</tt></p>
+<h3>Purpose</h3>
+<p>Reset the access token to a state back when the user has not yet authorized the access to the OAuth server API.</p>
+<h3>Usage</h3>
+<p>Call this function if for some reason the token to access the API was revoked and you need to ask the user to authorize the access again.</p>
+<p> By default the class stores and retrieves access tokens in a session variable named 'OAUTH_ACCESS_TOKEN'.</p>
+<p> This function must be called when the user is accessing your site pages, so it can reset the information stored in session variables that cache the state of a previously retrieved access token.</p>
+<p> Actual implementations should create a sub-class and override this function to reset the access token state when it is stored in other types of containers, like for instance databases.</p>
+<h3>Return value</h3>
+<p>This function should return 1 if the access token was resetted successfully.</p>
+<p><a href="#functions">Functions</a></p>
+<h3><a name="function_CallAPI"></a><li><a name="11.2.12">CallAPI</a></li></h3>
+<h3>Synopsis</h3>
+<p><tt><i>bool</i> CallAPI(</tt><ul>
+<tt><i>string</i> </tt><tt><a href="#argument_CallAPI_url">url</a></tt><tt>,</tt><br />
+<tt><i>string</i> </tt><tt><a href="#argument_CallAPI_method">method</a></tt><tt>,</tt><br />
+<tt>(input and output) <i>array</i> </tt><tt><a href="#argument_CallAPI_parameters">parameters</a></tt><tt>,</tt><br />
+<tt>(input and output) <i>array</i> </tt><tt><a href="#argument_CallAPI_options">options</a></tt><tt>,</tt><br />
+<tt>(output) <i>string &amp;</i> </tt><tt><a href="#argument_CallAPI_response">response</a></tt></ul>
+<tt>)</tt></p>
+<h3>Purpose</h3>
+<p>Send a HTTP request to the Web services API using a previously obtained authorization token via OAuth.</p>
+<h3>Usage</h3>
+<p>This function can be used to call an API after having previously obtained an access token through the OAuth protocol using the <tt><a href="#function_Process">Process</a></tt> function, or by directly setting the variables <tt><a href="#variable_access_token">access_token</a></tt>, as well as <tt><a href="#variable_access_token_secret">access_token_secret</a></tt> in case of using OAuth 1.0 or 1.0a services.</p>
+<h3>Arguments</h3>
+<ul>
+<p><tt><b><a name="argument_CallAPI_url">url</a></b></tt> - URL of the API where the HTTP request will be sent.</p>
+<p><tt><b><a name="argument_CallAPI_method">method</a></b></tt> - HTTP method that will be used to send the request. It can be 'GET', 'POST', 'DELETE', 'PUT', etc..</p>
+<p><tt><b><a name="argument_CallAPI_parameters">parameters</a></b></tt> - Associative array with the names and values of the API call request parameters.</p>
+<p><tt><b><a name="argument_CallAPI_options">options</a></b></tt> - Associative array with additional options to configure the request. Currently it supports the following options:</p>
+<p> '2Legged': boolean option that determines if the API request should be 2 legged. The default value is <tt>0</tt>.</p>
+<p> 'Accept': content type value of the Accept HTTP header to be sent in the API call HTTP request. Some APIs require that a certain value be sent to specify which version of the API is being called. The default value is '*/*'.</p>
+<p> 'ConvertObjects': boolean option that determines if objects should be converted into arrays when the response is returned in JSON format. The default value is 0.</p>
+<p> 'FailOnAccessError': boolean option that determines if this functions should fail when the server response status is not between 200 and 299. The default value is 0.</p>
+<p> 'Files': associative array with details of the parameters that must be passed as file uploads. The array indexes must have the same name of the parameters to be sent as files. The respective array entry values must also be associative arrays with the parameters for each file. Currently it supports the following parameters:</p>
+<p> - <tt>Type</tt> - defines how the parameter value should be treated. It can be <tt>'FileName'</tt> if the parameter value is is the name of a local file to be uploaded. It may also be <tt>'Data'</tt> if the parameter value is the actual data of the file to be uploaded.</p>
+<p> - Default: <tt>'FileName'</tt></p>
+<p> - <tt>ContentType</tt> - MIME value of the content type of the file. It can be <tt>'automatic/name'</tt> if the content type should be determine from the file name extension.</p>
+<p> - Default: <tt>'automatic/name'</tt></p>
+<p> 'PostValuesInURI': boolean option to determine that a POST request should pass the request values in the URI. The default value is 0.</p>
+<p> 'FollowRedirection': limit number of times that HTTP response redirects will be followed. If it is set to 0, redirection responses fail in error. The default value is 0.</p>
+<p> 'RequestBody': request body data of a custom type. The 'RequestContentType' option must be specified, so the 'RequestBody' option is considered.</p>
+<p> 'RequestContentType': content type that should be used to send the request values. It can be either 'application/x-www-form-urlencoded' for sending values like from Web forms, or 'application/json' for sending the values encoded in JSON format. Other types are accepted if the 'RequestBody' option is specified. The default value is 'application/x-www-form-urlencoded'.</p>
+<p> 'RequestBody': request body data of a custom type. The 'RequestContentType' option must be specified, so the 'RequestBody' option is considered.</p>
+<p> 'Resource': string with a label that will be used in the error messages and debug log entries to identify what operation the request is performing. The default value is 'API call'.</p>
+<p> 'ResponseContentType': content type that should be considered when decoding the API request response. This overrides the <tt>Content-Type</tt> header returned by the server. If the content type is 'application/x-www-form-urlencoded' the function will parse the data returning an array of key-value pairs. If the content type is 'application/json' the response will be decode as a JSON-encoded data type. Other content type values will make the function return the original response value as it was returned from the server. The default value for this option is to use what the server returned in the <tt>Content-Type</tt> header.</p>
+<p><tt><b><a name="argument_CallAPI_response">response</a></b></tt> - Return the value of the API response. If the value is JSON encoded, this function will decode it and return the value converted to respective types. If the value is form encoded, this function will decode the response and return it as an array. Otherwise, the class will return the value as a string.</p>
+</ul>
+<h3>Return value</h3>
+<p>This function returns 1 if the call was done successfully.</p>
+<p><a href="#functions">Functions</a></p>
+<h3><a name="function_Initialize"></a><li><a name="13.2.13">Initialize</a></li></h3>
+<h3>Synopsis</h3>
+<p><tt><i>bool</i> Initialize(</tt><tt>)</tt></p>
+<h3>Purpose</h3>
+<p>Initialize the class variables and internal state. It must be called before calling other class functions.</p>
+<h3>Usage</h3>
+<p>Set the <tt><a href="#variable_server">server</a></tt> variable before calling this function to let it initialize the class variables to work with the specified server type. Alternatively, you can set other class variables manually to make it work with servers that are not yet built-in supported.</p>
+<h3>Return value</h3>
+<p>This function returns 1 if it was able to successfully initialize the class for the specified server type.</p>
+<p><a href="#functions">Functions</a></p>
+<h3><a name="function_Process"></a><li><a name="13.2.14">Process</a></li></h3>
+<h3>Synopsis</h3>
+<p><tt><i>bool</i> Process(</tt><tt>)</tt></p>
+<h3>Purpose</h3>
+<p>Process the OAuth protocol interaction with the OAuth server.</p>
+<h3>Usage</h3>
+<p>Call this function when you need to retrieve the OAuth access token. Check the <tt><a href="#variable_access_token">access_token</a></tt> to determine if the access token was obtained successfully.</p>
+<h3>Return value</h3>
+<p>This function returns 1 if the OAuth protocol was processed without errors.</p>
+<p><a href="#functions">Functions</a></p>
+<h3><a name="function_Finalize"></a><li><a name="13.2.15">Finalize</a></li></h3>
+<h3>Synopsis</h3>
+<p><tt><i>bool</i> Finalize(</tt><ul>
+<tt><i>bool</i> </tt><tt><a href="#argument_Finalize_success">success</a></tt></ul>
+<tt>)</tt></p>
+<h3>Purpose</h3>
+<p>Cleanup any resources that may have been used during the OAuth protocol processing or execution of API calls.</p>
+<h3>Usage</h3>
+<p>Always call this function as the last step after calling the functions <tt><a href="#function_Process">Process</a></tt> or <tt><a href="#function_CallAPI">CallAPI</a></tt>.</p>
+<h3>Arguments</h3>
+<ul>
+<p><tt><b><a name="argument_Finalize_success">success</a></b></tt> - Pass the last success state returned by the class or any external code processing the class function results.</p>
+</ul>
+<h3>Return value</h3>
+<p>This function returns 1 if the function cleaned up any resources successfully.</p>
+<p><a href="#functions">Functions</a></p>
+<h3><a name="function_Output"></a><li><a name="15.2.16">Output</a></li></h3>
+<h3>Synopsis</h3>
+<p><tt><i></i> Output(</tt><tt>)</tt></p>
+<h3>Purpose</h3>
+<p>Display the results of the OAuth protocol processing.</p>
+<h3>Usage</h3>
+<p>Only call this function if you are debugging the OAuth authorization process and you need to view what was its results.</p>
+<p><a href="#functions">Functions</a></p>
+<p><a href="#table_of_contents">Table of contents</a></p>
+</ul>
+</ul>
+
+<hr />
+<address>Manuel Lemos (<a href="mailto:mlemos-at-acm.org">mlemos-at-acm.org</a>)</address>
+</body>
+</html>
diff --git a/library/readmore.js/README.md b/library/readmore.js/README.md
new file mode 100644
index 000000000..0116fbe8b
--- /dev/null
+++ b/library/readmore.js/README.md
@@ -0,0 +1,171 @@
+# Readmore.js
+
+A smooth, responsive jQuery plugin for collapsing and expanding long blocks of text with "Read more" and "Close" links.
+
+The markup Readmore.js requires is so simple, you can probably use it with your existing HTML—there's no need for complicated sets of `div`'s or hardcoded classes, just call `.readmore()` on the element containing your block of text and Readmore.js takes care of the rest. Readmore.js plays well in a responsive environment, too.
+
+Readmore.js is tested with—and supported on—all versions of jQuery greater than 1.9.1. All the "good" browsers are supported, as well as IE10+; IE8 & 9 _should_ work, but are not supported and the experience will not be ideal.
+
+
+## Install
+
+Install Readmore.js with Bower:
+
+```
+$ bower install readmore
+```
+
+Then include it in your HTML:
+
+```html
+<script src="/bower_components/readmore/readmore.min.js"></script>
+```
+
+
+## Use
+
+```javascript
+$('article').readmore();
+```
+
+It's that simple. You can change the speed of the animation, the height of the collapsed block, and the open and close elements.
+
+```javascript
+$('article').readmore({
+ speed: 75,
+ lessLink: '<a href="#">Read less</a>'
+});
+```
+
+### The options:
+
+* `speed: 100` in milliseconds
+* `collapsedHeight: 200` in pixels
+* `heightMargin: 16` in pixels, avoids collapsing blocks that are only slightly larger than `collapsedHeight`
+* `moreLink: '<a href="#">Read more</a>'`
+* `lessLink: '<a href="#">Close</a>'`
+* `embedCSS: true` insert required CSS dynamically, set this to `false` if you include the necessary CSS in a stylesheet
+* `blockCSS: 'display: block; width: 100%;'` sets the styling of the blocks, ignored if `embedCSS` is `false`
+* `startOpen: false` do not immediately truncate, start in the fully opened position
+* `beforeToggle: function() {}` called after a more or less link is clicked, but *before* the block is collapsed or expanded
+* `afterToggle: function() {}` called *after* the block is collapsed or expanded
+
+If the element has a `max-height` CSS property, Readmore.js will use that value rather than the value of the `collapsedHeight` option.
+
+### The callbacks:
+
+The callback functions, `beforeToggle` and `afterToggle`, both receive the same arguments: `trigger`, `element`, and `expanded`.
+
+* `trigger`: the "Read more" or "Close" element that was clicked
+* `element`: the block that is being collapsed or expanded
+* `expanded`: Boolean; `true` means the block is expanded
+
+#### Callback example:
+
+Here's an example of how you could use the `afterToggle` callback to scroll back to the top of a block when the "Close" link is clicked.
+
+```javascript
+$('article').readmore({
+ afterToggle: function(trigger, element, expanded) {
+ if(! expanded) { // The "Close" link was clicked
+ $('html, body').animate( { scrollTop: element.offset().top }, {duration: 100 } );
+ }
+ }
+});
+```
+
+### Removing Readmore:
+
+You can remove the Readmore.js functionality like so:
+
+```javascript
+$('article').readmore('destroy');
+```
+
+Or, you can be more surgical by specifying a particular element:
+
+```javascript
+$('article:first').readmore('destroy');
+```
+
+### Toggling blocks programmatically:
+
+You can toggle a block from code:
+
+```javascript
+$('article:nth-of-type(3)').readmore('toggle');
+```
+
+
+## CSS:
+
+Readmore.js is designed to use CSS for as much functionality as possible: collapsed height can be set in CSS with the `max-height` property; "collapsing" is achieved by setting `overflow: hidden` on the containing block and changing the `height` property; and, finally, the expanding/collapsing animation is done with CSS3 transitions.
+
+By default, Readmore.js inserts the following CSS, in addition to some transition-related rules:
+
+```css
+selector + [data-readmore-toggle], selector[data-readmore] {
+ display: block;
+ width: 100%;
+}
+```
+
+_`selector` would be the element you invoked `readmore()` on, e.g.: `$('selector').readmore()`_
+
+You can override the base rules when you set up Readmore.js like so:
+
+```javascript
+$('article').readmore({blockCSS: 'display: inline-block; width: 50%;'});
+```
+
+If you want to include the necessary styling in your site's stylesheet, you can disable the dynamic embedding by setting `embedCSS` to `false`:
+
+```javascript
+$('article').readmore({embedCSS: false});
+```
+
+### Media queries and other CSS tricks:
+
+If you wanted to set a `maxHeight` based on lines, you could do so in CSS with something like:
+
+```css
+body {
+ font: 16px/1.5 sans-serif;
+}
+
+/* Show only 4 lines in smaller screens */
+article {
+ max-height: 6em; /* (4 * 1.5 = 6) */
+}
+```
+
+Then, with a media query you could change the number of lines shown, like so:
+
+```css
+/* Show 8 lines on larger screens */
+@media screen and (min-width: 640px) {
+ article {
+ max-height: 12em;
+ }
+}
+```
+
+
+## Contributing
+
+Pull requests are always welcome, but not all suggested features will get merged. Feel free to contact me if you have an idea for a feature.
+
+Pull requests should include the minified script and this readme and the demo HTML should be updated with descriptions of your new feature.
+
+You'll need NPM:
+
+```
+$ npm install
+```
+
+Which will install the necessary development dependencies. Then, to build the minified script:
+
+```
+$ gulp compress
+```
+
diff --git a/library/readmore.js/readmore.js b/library/readmore.js/readmore.js
new file mode 100644
index 000000000..81cfb3cea
--- /dev/null
+++ b/library/readmore.js/readmore.js
@@ -0,0 +1,319 @@
+/*!
+ * @preserve
+ *
+ * Readmore.js jQuery plugin
+ * Author: @jed_foster
+ * Project home: http://jedfoster.github.io/Readmore.js
+ * Licensed under the MIT license
+ *
+ * Debounce function from http://davidwalsh.name/javascript-debounce-function
+ */
+
+/* global jQuery */
+
+(function($) {
+ 'use strict';
+
+ var readmore = 'readmore',
+ defaults = {
+ speed: 100,
+ collapsedHeight: 200,
+ heightMargin: 16,
+ moreLink: '<a href="#">Read More</a>',
+ lessLink: '<a href="#">Close</a>',
+ embedCSS: true,
+ blockCSS: 'display: block; width: 100%;',
+ startOpen: false,
+
+ // callbacks
+ beforeToggle: function(){},
+ afterToggle: function(){}
+ },
+ cssEmbedded = {},
+ uniqueIdCounter = 0;
+
+ function debounce(func, wait, immediate) {
+ var timeout;
+
+ return function() {
+ var context = this, args = arguments;
+ var later = function() {
+ timeout = null;
+ if (! immediate) {
+ func.apply(context, args);
+ }
+ };
+ var callNow = immediate && !timeout;
+
+ clearTimeout(timeout);
+ timeout = setTimeout(later, wait);
+
+ if (callNow) {
+ func.apply(context, args);
+ }
+ };
+ }
+
+ function uniqueId(prefix) {
+ var id = ++uniqueIdCounter;
+
+ return String(prefix == null ? 'rmjs-' : prefix) + id;
+ }
+
+ function setBoxHeights(element) {
+ var el = element.clone().css({
+ height: 'auto',
+ width: element.width(),
+ maxHeight: 'none',
+ overflow: 'hidden'
+ }).insertAfter(element),
+ expandedHeight = el.outerHeight(),
+ cssMaxHeight = parseInt(el.css({maxHeight: ''}).css('max-height').replace(/[^-\d\.]/g, ''), 10),
+ defaultHeight = element.data('defaultHeight');
+
+ el.remove();
+
+ var collapsedHeight = element.data('collapsedHeight') || defaultHeight;
+
+ if (!cssMaxHeight) {
+ collapsedHeight = defaultHeight;
+ }
+ else if (cssMaxHeight > collapsedHeight) {
+ collapsedHeight = cssMaxHeight;
+ }
+
+ // Store our measurements.
+ element.data({
+ expandedHeight: expandedHeight,
+ maxHeight: cssMaxHeight,
+ collapsedHeight: collapsedHeight
+ })
+ // and disable any `max-height` property set in CSS
+ .css({
+ maxHeight: 'none'
+ });
+ }
+
+ var resizeBoxes = debounce(function() {
+ $('[data-readmore]').each(function() {
+ var current = $(this),
+ isExpanded = (current.attr('aria-expanded') === 'true');
+
+ setBoxHeights(current);
+
+ current.css({
+ height: current.data( (isExpanded ? 'expandedHeight' : 'collapsedHeight') )
+ });
+ });
+ }, 100);
+
+ function embedCSS(options) {
+ if (! cssEmbedded[options.selector]) {
+ var styles = ' ';
+
+ if (options.embedCSS && options.blockCSS !== '') {
+ styles += options.selector + ' + [data-readmore-toggle], ' +
+ options.selector + '[data-readmore]{' +
+ options.blockCSS +
+ '}';
+ }
+
+ // Include the transition CSS even if embedCSS is false
+ styles += options.selector + '[data-readmore]{' +
+ 'transition: height ' + options.speed + 'ms;' +
+ 'overflow: hidden;' +
+ '}';
+
+ (function(d, u) {
+ var css = d.createElement('style');
+ css.type = 'text/css';
+
+ if (css.styleSheet) {
+ css.styleSheet.cssText = u;
+ }
+ else {
+ css.appendChild(d.createTextNode(u));
+ }
+
+ d.getElementsByTagName('head')[0].appendChild(css);
+ }(document, styles));
+
+ cssEmbedded[options.selector] = true;
+ }
+ }
+
+ function Readmore(element, options) {
+ var $this = this;
+
+ this.element = element;
+
+ this.options = $.extend({}, defaults, options);
+
+ $(this.element).data({
+ defaultHeight: this.options.collapsedHeight,
+ heightMargin: this.options.heightMargin
+ });
+
+ embedCSS(this.options);
+
+ this._defaults = defaults;
+ this._name = readmore;
+
+ window.addEventListener('load', function() {
+ $this.init();
+ });
+ }
+
+
+ Readmore.prototype = {
+ init: function() {
+ var $this = this;
+
+ $(this.element).each(function() {
+ var current = $(this);
+
+ setBoxHeights(current);
+
+ var collapsedHeight = current.data('collapsedHeight'),
+ heightMargin = current.data('heightMargin');
+
+ if (current.outerHeight(true) <= collapsedHeight + heightMargin) {
+ // The block is shorter than the limit, so there's no need to truncate it.
+ return true;
+ }
+ else {
+ var id = current.attr('id') || uniqueId(),
+ useLink = $this.options.startOpen ? $this.options.lessLink : $this.options.moreLink;
+
+ current.attr({
+ 'data-readmore': '',
+ 'aria-expanded': false,
+ 'id': id
+ });
+
+ current.after($(useLink)
+ .on('click', function(event) { $this.toggle(this, current[0], event); })
+ .attr({
+ 'data-readmore-toggle': '',
+ 'aria-controls': id
+ }));
+
+ if (! $this.options.startOpen) {
+ current.css({
+ height: collapsedHeight
+ });
+ }
+ }
+ });
+
+ window.addEventListener('resize', function() {
+ resizeBoxes();
+ });
+ },
+
+ toggle: function(trigger, element, event) {
+ if (event) {
+ event.preventDefault();
+ }
+
+ if (! trigger) {
+ trigger = $('[aria-controls="' + this.element.id + '"]')[0];
+ }
+
+ if (! element) {
+ element = this.element;
+ }
+
+ var $this = this,
+ $element = $(element),
+ newHeight = '',
+ newLink = '',
+ expanded = false,
+ collapsedHeight = $element.data('collapsedHeight');
+
+ if ($element.height() <= collapsedHeight) {
+ newHeight = $element.data('expandedHeight') + 'px';
+ newLink = 'lessLink';
+ expanded = true;
+ }
+ else {
+ newHeight = collapsedHeight;
+ newLink = 'moreLink';
+ }
+
+ // Fire beforeToggle callback
+ // Since we determined the new "expanded" state above we're now out of sync
+ // with our true current state, so we need to flip the value of `expanded`
+ $this.options.beforeToggle(trigger, element, ! expanded);
+
+ $element.css({'height': newHeight});
+
+ // Fire afterToggle callback
+ $element.on('transitionend', function() {
+ $this.options.afterToggle(trigger, element, expanded);
+
+ $(this).attr({
+ 'aria-expanded': expanded
+ }).off('transitionend');
+ });
+
+ $(trigger).replaceWith($($this.options[newLink])
+ .on('click', function(event) { $this.toggle(this, element, event); })
+ .attr({
+ 'data-readmore-toggle': '',
+ 'aria-controls': $element.attr('id')
+ }));
+ },
+
+ destroy: function() {
+ $(this.element).each(function() {
+ var current = $(this);
+
+ current.attr({
+ 'data-readmore': null,
+ 'aria-expanded': null
+ })
+ .css({
+ maxHeight: '',
+ height: ''
+ })
+ .next('[data-readmore-toggle]')
+ .remove();
+
+ current.removeData();
+ });
+ }
+ };
+
+
+ $.fn.readmore = function(options) {
+ var args = arguments,
+ selector = this.selector;
+
+ options = options || {};
+
+ if (typeof options === 'object') {
+ return this.each(function() {
+ if ($.data(this, 'plugin_' + readmore)) {
+ var instance = $.data(this, 'plugin_' + readmore);
+ instance.destroy.apply(instance);
+ }
+
+ options.selector = selector;
+
+ $.data(this, 'plugin_' + readmore, new Readmore(this, options));
+ });
+ }
+ else if (typeof options === 'string' && options[0] !== '_' && options !== 'init') {
+ return this.each(function () {
+ var instance = $.data(this, 'plugin_' + readmore);
+ if (instance instanceof Readmore && typeof instance[options] === 'function') {
+ instance[options].apply(instance, Array.prototype.slice.call(args, 1));
+ }
+ });
+ }
+ };
+
+})(jQuery);
+
+
diff --git a/library/stylish_select/index.html b/library/stylish_select/index.html
new file mode 100644
index 000000000..b711c09f6
--- /dev/null
+++ b/library/stylish_select/index.html
@@ -0,0 +1,314 @@
+<!DOCTYPE html>
+<html>
+ <head>
+ <title>jQuery Stylish Select 0.4.9 plugin examples</title>
+ <meta http-equiv="content-type" content="text/html;charset=utf-8" />
+ <link rel="stylesheet" type="text/css" href="stylish-select.css" />
+
+ <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.7/jquery.min.js"></script>
+ <script src="jquery.stylish-select.js" type="text/javascript"></script>
+
+ <script type="text/javascript">
+ $(function(){
+
+ $('#my-dropdown, #my-dropdown2, #my-dropdown3, #my-dropdown4, #my-dropdown5, #my-dropdown6, #my-dropdown7, #my-dropdown8, #my-dropdown9').sSelect();
+
+ //set max height
+ $('#my-dropdownCountries').sSelect({ddMaxHeight: '300px'});
+
+ //set value on click
+ $('#setVal').click(function(){
+ $('#my-dropdown5').getSetSSValue('4');
+ });
+
+ //get value on click
+ $('#getVal').click(function(){
+ alert('The value is: '+$('#my-dropdown5').getSetSSValue());
+ });
+
+ //alert change event
+ $('#my-dropdownChange').sSelect().change(function(){alert('changed')});
+
+ //add options to select and update
+ $('#addOptions').click(function(){
+ $('#my-dropdown6').append('<option value="newOpt">New Option</option>').resetSS();
+ return false;
+ });
+
+ });
+ </script>
+
+ <style type="text/css">
+ body {font-family:Arial, Helvetica, sans-serif; font-size:12px;}
+ .selCont {clear:both; margin-bottom:20px; padding-bottom:40px; float:left; border-bottom:dotted 1px #000; width:600px;}
+ </style>
+
+ </head>
+ <body>
+ <form action="" method="post">
+ <h1>Stylish Select 0.4.9</h1>
+ <h2>A cross-browser, accessible alternative to the standard form element which can be fully customised with CSS</h2>
+ <p>Stylish Select attempts to replicate the functionality of the browser default select box as closely as possible with support for keyboard navigation, and intelligent positioning.</p>
+ <p>Stylish Select aims to have a minimal code footprint and weighs in at just over 3KB when minified.</p>
+ <a href="http://github.com/scottdarby/Stylish-Select">Get latest source code from GitHub</a>
+ <h2>Usage</h2>
+ <p>First, include the stylesheet, jQuery and the stylish select .js file in your html head tag.</p>
+ <p>The plugin can be used to replace any select with the following:</p>
+ <pre class="brush: javascript">
+$(document).ready(function(){
+$('#my-dropdown').sSelect();
+});
+ </pre>
+ <div class="selCont">
+ <h2>Simplest example, option selected by default</h2>
+ <p>You can use the alphabetical and arrow keys to navigate the list as you would a browser default select.</p>
+ <select id="my-dropdown" name="my-dropdown">
+ <option value="1">A cappella</option>
+ <option value="test">Acid Jazz</option>
+ <option value="3">Big Band</option>
+ <option value="4">Big Beat</option>
+ <option value="5">Cakewalk</option>
+ <option value="6">Calenda</option>
+ <option value="7">Dark ambient</option>
+ <option value="8">Dark cabaret</option>
+ <option value="9">Chalk &amp; Cheese</option>
+ </select>
+ </div>
+ <div class="selCont">
+ <h2>Change event</h2>
+ <p>Stylish Select alters the original select on the page, so you can access it's change event:</p>
+ <pre class="brush: javascript">
+//change event
+$('#my-dropdownChange').sSelect().change(function(){alert('changed')});
+ </pre>
+ <select id="my-dropdownChange" name="my-dropdown">
+ <option value="1">A cappella</option>
+ <option value="test">Acid Jazz</option>
+ <option value="3" selected="selected">Big Band</option>
+ <option value="4">Big Beat</option>
+ <option value="5">Cakewalk</option>
+ <option value="6">Calenda</option>
+ <option value="7">Dark ambient</option>
+ <option value="8">Dark cabaret</option>
+ </select>
+ </div>
+ <div class="selCont">
+ <h2>Grouped options</h2>
+ <p>Stylish Select supports optgroups and also optgroups and options together.</p>
+ <select id="my-dropdown2" name="my-dropdown">
+ <option>Please select</option>
+ <optgroup label="Tool">
+ <option value="1">Opiate</option>
+ <option value="2">Undertow</option>
+ <option value="3">Aenima</option>
+ <option value="4">Lateralus</option>
+ </optgroup>
+ <optgroup label="A Tribe Called Quest">
+ <option value="5">People's Instinctive Travels and the Paths of Rhythm</option>
+ <option value="6">The Low End Theory</option>
+ <option selected="selected" value="7">Midnight Marauders</option>
+ <option value="8">Beats, Rhymes and Life</option>
+ <option value="9">The Love Movement</option>
+ </optgroup>
+ </select>
+ </div>
+ <div id="get-set" class="selCont">
+ <h2>Getting/setting the value</h2>
+ <pre class="brush: javascript">
+//set value
+$('#setVal').click(function(){
+$('#my-dropdown5').getSetSSValue(4);
+});
+
+//get value
+$('#getVal').click(function(){
+alert('The value is: '+$('#my-dropdown5').getSetSSValue());
+});
+ </pre>
+ <p><a id="setVal" href="javascript:void(0)">Set value to 4</a></p>
+ <p><a id="getVal" href="javascript:void(0)">Get value</a></p>
+ <select id="my-dropdown5" name="my-dropdown">
+ <option value="1">Lorem</option>
+ <option value="2">Ipsum</option>
+ <option value="3">Dolor</option>
+ <option value="4">Sit</option>
+ <option value="5">Amet</option>
+ <option value="6">Consectetuer</option>
+ <option value="7">Adipiscing</option>
+ </select>
+ </div>
+ <div id="update" class="selCont">
+ <h2>Add new options to Stylish Select</h2>
+ <pre class="brush: javascript">
+//add options to select and update
+$('#addOptions').click(function(){
+$('#my-dropdown6').append('&lt;option value="newOpt">New Option&lt;/option&gt;').resetSS();
+});
+ </pre>
+ <p>If you add or remove options from the initial select element on the page, be sure to call the .resetSS() method on the select to update the Stylish Select replacement.</p>
+
+ <p><a id="addOptions" href="javascript:void(0)">Add new options to select and update</a></p>
+ <select id="my-dropdown6" name="my-dropdown">
+ <option value="1">Lorem</option>
+ <option value="2">Ipsum</option>
+ <option value="3">Dolor</option>
+ <option value="4">Sit</option>
+ <option value="5">Amet</option>
+ <option value="6">Consectetuer</option>
+ <option value="7">Adipiscing</option>
+ <option value="7">Adipiscing</option>
+ <option value="7">Adipiscing</option>
+ <option value="7">Adipiscing</option>
+ </select>
+ </div>
+ <div class="selCont">
+ <h2>Max-height for large lists</h2>
+ <pre class="brush: javascript">
+$('#my-dropdown').sSelect({ddMaxHeight: '300px'});
+ </pre>
+ <select id="my-dropdownCountries" name="my-dropdown">
+ <option value="1">Afghanistan</option>
+ <option value="1">Akrotiri</option>
+ <option value="1">Albania</option>
+ <option value="1">Algeria</option>
+ <option value="1">American Samoa</option>
+ <option value="1">Andorra</option>
+ <option value="1">Angola</option>
+ <option value="1">Anguilla</option>
+ <option value="1">Antarctica</option>
+ <option value="1">Antigua and Barbuda</option>
+ <option value="1">Argentina</option>
+ <option value="1">Armenia</option>
+ <option value="1">Aruba</option>
+ <option value="1">Ashmore and Cartier Islands</option>
+ <option value="1">Australia</option>
+ <option value="1">Austria</option>
+ <option value="1">Azerbaijan</option>
+ <option value="1">Bahamas, The</option>
+ <option value="1">Bahrain</option>
+ <option value="1">Bangladesh</option>
+ <option value="1">Barbados</option>
+ <option value="1">Bassas da India</option>
+ <option value="1">Belarus</option>
+ <option value="1">Belgium</option>
+ <option value="1">Belize</option>
+ <option value="1">Benin</option>
+ <option value="1">Bermuda</option>
+ <option value="1">Bhutan</option>
+ <option value="1">Bolivia</option>
+ <option value="1">Bosnia and Herzegovina</option>
+ <option value="1">Botswana</option>
+ <option value="1">Bouvet Island</option>
+ <option value="1">Brazil</option>
+ <option value="1">British Indian Ocean Territory</option>
+ <option value="1">British Virgin Islands</option>
+ <option value="1">Brunei</option>
+ <option value="1">Bulgaria</option>
+ <option value="1">Burkina Faso</option>
+ <option value="1">Burma</option>
+ <option value="1">Burundi</option>
+ <option value="1">Cambodia</option>
+ <option value="1">Cameroon</option>
+ <option value="1">Canada</option>
+ <option value="1">Cape Verde</option>
+ <option value="1">Cayman Islands</option>
+ <option value="1">Central African Republic</option>
+ <option value="1">Chad</option>
+ <option value="1">Chile</option>
+ <option value="1">China</option>
+ <option value="1">Christmas Island</option>
+ <option value="1">Clipperton Island</option>
+ <option value="1">Cocos (Keeling) Islands</option>
+ <option value="1">Colombia</option>
+ <option value="1">Comoros</option>
+ <option value="1">Congo, Democratic Republic of the</option>
+ <option value="1">Congo, Republic of the</option>
+ <option value="1">Cook Islands</option>
+ <option value="1">Coral Sea Islands</option>
+ <option value="1">Costa Rica</option>
+ <option value="1">Cote d'Ivoire</option>
+ <option value="1">Croatia</option>
+ <option value="1">Cuba</option>
+ <option value="1">Cyprus</option>
+ <option value="1">Czech Republic</option>
+ <option value="1">Denmark</option>
+ <option value="1">Dhekelia</option>
+ <option value="1">Djibouti</option>
+ <option value="1">Dominica</option>
+ <option value="1">Dominican Republic</option>
+ <option value="1">Ecuador</option>
+ <option value="1">Egypt</option>
+ <option value="1">El Salvador</option>
+ <option value="1">Equatorial Guinea</option>
+ <option value="1">Eritrea</option>
+ <option value="1">Estonia</option>
+ <option value="1">Ethiopia</option>
+ <option value="1">Europa Island</option>
+ <option value="1">Falkland Islands (Islas Malvinas)</option>
+ <option value="1">Faroe Islands</option>
+ <option value="1">Fiji</option>
+ <option value="1">Finland</option>
+ <option value="1">France</option>
+ <option value="1">French Guiana</option>
+ </select>
+ </div>
+ <div class="selCont">
+ <h2>Intelligent positioning</h2>
+ <p>Stylish Select will always remain visible on the page.</p>
+ <select id="my-dropdown4" name="my-dropdown">
+ <optgroup label="Tool">
+ <option value="1">Opiate</option>
+ <option value="2">Undertow</option>
+ <option value="3">Aenima</option>
+ <option value="4">Lateralus</option>
+ </optgroup>
+ <optgroup label="A Tribe Called Quest">
+ <option value="5">People's Instinctive Travels and the Paths of Rhythm</option>
+ <option value="6">The Low End Theory</option>
+ <option value="7" selected="selected">Midnight Marauders</option>
+ <option value="8">Beats, Rhymes and Life</option>
+ <option value="9">The Love Movement</option>
+ </optgroup>
+ </select>
+ </div>
+ <div class="selCont">
+ <h2>Disabled Select</h2>
+ <select disabled="disabled" id="my-dropdown7" name="my-dropdown">
+ <option value="1">Opiate</option>
+ <option value="2">Undertow</option>
+ <option value="3">Aenima</option>
+ <option value="4">Lateralus</option>
+ <option value="9">The Love Movement</option>
+ </select>
+ </div>
+ <div class="selCont">
+ <h2>Disabled Options</h2>
+ <select id="my-dropdown8" name="my-dropdown">
+ <option value="1">Opiate</option>
+ <option disabled="disabled" value="2">Undertow</option>
+ <option value="3">Aenima</option>
+ <option selected="selected" value="4">Lateralus</option>
+ <option value="9">The Love Movement</option>
+ </select>
+ </div>
+ <div class="selCont">
+ <h2>Disabled Grouped options</h2>
+ <select id="my-dropdown9" name="my-dropdown">
+ <optgroup label="Tool" disabled="disabled">
+ <option value="1">Opiate</option>
+ <option value="2">Undertow</option>
+ <option value="3">Aenima</option>
+ <option value="4">Lateralus</option>
+ </optgroup>
+ <optgroup label="A Tribe Called Quest">
+ <option value="5">People's Instinctive Travels and the Paths of Rhythm</option>
+ <option value="6">The Low End Theory</option>
+ <option value="7" selected="selected">Midnight Marauders</option>
+ <option value="8">Beats, Rhymes and Life</option>
+ <option value="9">The Love Movement</option>
+ </optgroup>
+ </select>
+ </div>
+ </form>
+ </body>
+</html> \ No newline at end of file
diff --git a/library/stylish_select/jquery.stylish-select.js b/library/stylish_select/jquery.stylish-select.js
new file mode 100644
index 000000000..61a38ca8d
--- /dev/null
+++ b/library/stylish_select/jquery.stylish-select.js
@@ -0,0 +1,492 @@
+/**
+* Stylish Select 0.4.9 - jQuery plugin to replace a select drop down box with a stylable unordered list
+* http://github.com/scottdarby/Stylish-Select
+*
+* Requires: jQuery 1.3 or newer
+*
+* Contributions from Justin Beasley: http://www.harvest.org/
+* Anatoly Ressin: http://www.artazor.lv/ Wilfred Hughes: https://github.com/Wilfred
+* Grigory Zarubin: https://github.com/Craigy-
+*
+* Dual licensed under the MIT and GPL licenses.
+*/
+(function($){
+ //add class to html tag
+ $('html').addClass('stylish-select');
+
+ //Cross-browser implementation of indexOf from MDN: https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Array/indexOf
+ if (!Array.prototype.indexOf){
+ Array.prototype.indexOf = function(searchElement /*, fromIndex */){
+ if (this === void 0 || this === null)
+ throw new TypeError();
+
+ var t = Object(this);
+ var len = t.length >>> 0;
+ if (len === 0)
+ return -1;
+
+ var n = 0;
+ if (arguments.length > 0){
+ n = Number(arguments[1]);
+ if (n !== n) // shortcut for verifying if it's NaN
+ n = 0;
+ else if (n !== 0 && n !== (1 / 0) && n !== -(1 / 0))
+ n = (n > 0 || -1) * Math.floor(Math.abs(n));
+ }
+
+ if (n >= len)
+ return -1;
+
+ var k = n >= 0
+ ? n
+ : Math.max(len - Math.abs(n), 0);
+
+ for (; k < len; k++){
+ if (k in t && t[k] === searchElement)
+ return k;
+ }
+ return -1;
+ };
+ }
+
+ //utility methods
+ $.fn.extend({
+ getSetSSValue: function(value){
+ if (value){
+ //set value and trigger change event
+ $(this).val(value).change();
+ return this;
+ } else {
+ return $(this).find(':selected').val();
+ }
+ },
+ //added by Justin Beasley
+ resetSS: function(){
+ var oldOpts = $(this).data('ssOpts');
+ $this = $(this);
+ $this.next().remove();
+ //unbind all events and redraw
+ $this.unbind('.sSelect').sSelect(oldOpts);
+ }
+ });
+
+ $.fn.sSelect = function(options){
+ return this.each(function(){
+ var defaults = {
+ defaultText: 'Please select',
+ animationSpeed: 0, //set speed of dropdown
+ ddMaxHeight: '', //set css max-height value of dropdown
+ containerClass: '' //additional classes for container div
+ };
+
+ //initial variables
+ var opts = $.extend(defaults, options),
+ $input = $(this),
+ $containerDivText = $('<div class="selectedTxt"></div>'),
+ $containerDiv = $('<div class="newListSelected ' + opts.containerClass + ($input.is(':disabled') ? ' newListDisabled' : '') + '"></div>'),
+ $containerDivWrapper = $('<div class="SSContainerDivWrapper" style="visibility:hidden;"></div>'),
+ $newUl = $('<ul class="newList"></ul>'),
+ currentIndex = -1,
+ prevIndex = -1,
+ keys = [],
+ prevKey = false,
+ prevented = false,
+ $newLi;
+
+ //added by Justin Beasley
+ $(this).data('ssOpts',options);
+
+ if( $(this).next('.newListSelected').length ) {
+ return;
+ }
+
+ //build new list
+ $containerDiv.insertAfter($input);
+ $containerDiv.attr("tabindex", $input.attr("tabindex") || "0");
+ $containerDivText.prependTo($containerDiv);
+ $newUl.appendTo($containerDiv);
+ $newUl.wrap($containerDivWrapper);
+ $containerDivWrapper = $newUl.parent();
+ $input.hide();
+
+ if($input.is(':disabled')){
+ return;
+ }
+
+ //added by Justin Beasley (used for lists initialized while hidden)
+ $containerDivText.data('ssReRender',!$containerDivText.is(':visible'));
+
+ //add one item to list
+ function addItem(item, container) {
+ var option = $(item).text(),
+ key = $(item).val(),
+ isDisabled = $(item).is(':disabled');
+
+ if (!isDisabled && !$(item).parents().is(':disabled')) {
+ //add first letter of each word to array
+ keys.push(option.charAt(0).toLowerCase());
+ }
+ container.append($('<li><a'+(isDisabled ? ' class="newListItemDisabled"' : '')+' href="JavaScript:void(0);">'+option+'</a></li>').data({
+ 'key' : key,
+ 'selected' : $(item).is(':selected')
+ }));
+ }
+
+ $input.children().each(function(){
+ if ($(this).is('option')){
+ addItem(this, $newUl);
+ } else {
+ var optionTitle = $(this).attr('label'),
+ $optGroup = $('<li class="newListOptionTitle ' + ($(this).is(':disabled') ? 'newListOptionDisabled' : '') + '">'+optionTitle+'</li>'),
+ $optGroupList = $('<ul></ul>');
+
+ $optGroup.appendTo($newUl);
+ $optGroupList.appendTo($optGroup);
+
+ $(this).children().each(function(){
+ addItem(this, $optGroupList);
+ });
+ }
+ });
+
+ //cache list items object
+ $newLi = $newUl.find('li a:not(.newListItemDisabled)').not(function(){
+ return $(this).parents().hasClass('newListOptionDisabled');
+ });
+
+ //get selected item from new list (because it doesn't contain disabled options)
+ $newLi.each(function(i){
+ if ($(this).parent().data('selected')){
+ opts.defaultText = $(this).html();
+ currentIndex = prevIndex = i;
+ }
+ });
+
+ //get heights of new elements for use later
+ var newUlHeight = $newUl.height(),
+ containerHeight = $containerDiv.height(),
+ newLiLength = $newLi.length;
+
+ //check if a value is selected
+ if (currentIndex != -1){
+ navigateList(currentIndex);
+ } else {
+ //set placeholder text
+ $containerDivText.text(opts.defaultText);
+ }
+
+ //decide if to place the new list above or below the drop-down
+ function newUlPos(){
+ var containerPosY = $containerDiv.offset().top,
+ docHeight = $(window).height(),
+ scrollTop = $(window).scrollTop();
+
+ //if height of list is greater then max height, set list height to max height value
+ if (newUlHeight > parseInt(opts.ddMaxHeight)){
+ newUlHeight = parseInt(opts.ddMaxHeight);
+ }
+
+ containerPosY = containerPosY-scrollTop;
+ if (containerPosY+newUlHeight >= docHeight){
+ $newUl.css({
+ height: newUlHeight
+ });
+ $containerDivWrapper.css({
+ top: '-'+newUlHeight+'px',
+ height: newUlHeight
+ });
+ $input.onTop = true;
+ } else {
+ $newUl.css({
+ height: newUlHeight
+ });
+ $containerDivWrapper.css({
+ top: containerHeight+'px',
+ height: newUlHeight
+ });
+ $input.onTop = false;
+ }
+ }
+
+ //run function on page load
+ newUlPos();
+
+ //run function on browser window resize
+ $(window).bind('resize.sSelect scroll.sSelect', newUlPos);
+
+ //positioning
+ function positionFix(){
+ $containerDiv.css('position','relative');
+ }
+
+ function positionHideFix(){
+ $containerDiv.css(
+ {
+ position: 'static'
+ });
+ }
+
+ $containerDivText.bind('click.sSelect',function(event){
+ event.stopPropagation();
+
+ //added by Justin Beasley
+ if($(this).data('ssReRender')){
+ newUlHeight = $newUl.height('').height();
+ $containerDivWrapper.height('');
+ containerHeight = $containerDiv.height();
+ $(this).data('ssReRender',false);
+ newUlPos();
+ }
+
+ //hide all menus apart from this one
+ $('.SSContainerDivWrapper')
+ .not($(this).next())
+ .hide()
+ .parent()
+ .css('position', 'static')
+ .removeClass('newListSelFocus');
+
+ //show/hide this menu
+ $containerDivWrapper.toggle();
+ positionFix();
+
+ //scroll list to selected item
+ if(currentIndex == -1) currentIndex = 0;
+ try {
+ $newLi.eq(currentIndex).focus();
+ } catch(ex) {}
+ });
+
+ function closeDropDown(fireChange, resetText){
+ if(fireChange == true){
+ prevIndex = currentIndex;
+ $input.change();
+ }
+
+ if(resetText == true){
+ currentIndex = prevIndex;
+ navigateList(currentIndex);
+ }
+
+ $containerDivWrapper.hide();
+ positionHideFix();
+ }
+
+ $newLi.bind('click.sSelect',function(e){
+ var $clickedLi = $(e.target);
+
+ //update counter
+ currentIndex = $newLi.index($clickedLi);
+
+ //remove all hilites, then add hilite to selected item
+ prevented = true;
+ navigateList(currentIndex, true);
+ closeDropDown();
+ });
+
+ $newLi.bind('mouseenter.sSelect',
+ function(e){
+ var $hoveredLi = $(e.target);
+ $hoveredLi.addClass('newListHover');
+ }).bind('mouseleave.sSelect',
+ function(e){
+ var $hoveredLi = $(e.target);
+ $hoveredLi.removeClass('newListHover');
+ });
+
+ function navigateList(currentIndex, fireChange){
+ if(currentIndex == -1){
+ $containerDivText.text(opts.defaultText);
+ $newLi.removeClass('hiLite');
+ } else {
+ $newLi.removeClass('hiLite')
+ .eq(currentIndex)
+ .addClass('hiLite');
+
+ var text = $newLi.eq(currentIndex).text(),
+ val = $newLi.eq(currentIndex).parent().data('key');
+
+ try {
+ $input.val(val);
+ } catch(ex) {
+ // handle ie6 exception
+ $input[0].selectedIndex = currentIndex;
+ }
+
+ $containerDivText.text(text);
+
+ //only fire change event if specified
+ if(fireChange == true){
+ prevIndex = currentIndex;
+ $input.change();
+ }
+
+ if ($containerDivWrapper.is(':visible')){
+ try {
+ $newLi.eq(currentIndex).focus();
+ } catch(ex) {}
+ }
+ }
+ }
+
+ $input.bind('change.sSelect',function(event){
+ var $targetInput = $(event.target);
+ //stop change function from firing
+ if (prevented == true){
+ prevented = false;
+ return false;
+ }
+ var $currentOpt = $targetInput.find(':selected');
+ currentIndex = $targetInput.find('option').index($currentOpt);
+ navigateList(currentIndex);
+ });
+
+ //handle up and down keys
+ function keyPress(element){
+ //when keys are pressed
+ $(element).unbind('keydown.sSelect').bind('keydown.sSelect',function(e){
+ var keycode = e.which;
+
+ //prevent change function from firing
+ prevented = true;
+
+ switch(keycode){
+ case 40: //down
+ case 39: //right
+ incrementList();
+ return false;
+ break;
+ case 38: //up
+ case 37: //left
+ decrementList();
+ return false;
+ break;
+ case 33: //page up
+ case 36: //home
+ gotoFirst();
+ return false;
+ break;
+ case 34: //page down
+ case 35: //end
+ gotoLast();
+ return false;
+ break;
+ case 13: //enter
+ case 27: //esc
+ closeDropDown(true);
+ return false;
+ break;
+ case 9: //tab
+ closeDropDown(true);
+ nextFormElement();
+ return false;
+ break;
+ }
+
+ //check for keyboard shortcuts
+ keyPressed = String.fromCharCode(keycode).toLowerCase();
+
+ var currentKeyIndex = keys.indexOf(keyPressed);
+
+ if (typeof currentKeyIndex != 'undefined'){ //if key code found in array
+ ++currentIndex;
+ currentIndex = keys.indexOf(keyPressed, currentIndex); //search array from current index
+
+ if (currentIndex == -1 || currentIndex == null || prevKey != keyPressed){
+ // if no entry was found or new key pressed search from start of array
+ currentIndex = keys.indexOf(keyPressed);
+ }
+
+ navigateList(currentIndex);
+ //store last key pressed
+ prevKey = keyPressed;
+ return false;
+ }
+ });
+ }
+
+ function incrementList(){
+ if (currentIndex < (newLiLength-1)){
+ ++currentIndex;
+ navigateList(currentIndex);
+ }
+ }
+
+ function decrementList(){
+ if (currentIndex > 0){
+ --currentIndex;
+ navigateList(currentIndex);
+ }
+ }
+
+ function gotoFirst(){
+ currentIndex = 0;
+ navigateList(currentIndex);
+ }
+
+ function gotoLast(){
+ currentIndex = newLiLength-1;
+ navigateList(currentIndex);
+ }
+
+ $containerDiv.bind('click.sSelect',function(e){
+ e.stopPropagation();
+ keyPress(this);
+ });
+
+ $containerDiv.bind('focus.sSelect',function(){
+ $(this).addClass('newListSelFocus');
+ keyPress(this);
+ });
+
+ $containerDiv.bind('blur.sSelect',function(){
+ $(this).removeClass('newListSelFocus');
+ });
+
+ //hide list on blur
+ $(document).bind('click.sSelect',function(){
+ $containerDiv.removeClass('newListSelFocus');
+ if ($containerDivWrapper.is(':visible')){
+ closeDropDown(false, true);
+ } else {
+ closeDropDown(false);
+ }
+ });
+
+ //select next form element in document
+ function nextFormElement() {
+ var fields = $('body').find('button,input,textarea,select'),
+ index = fields.index($input);
+ if (index > -1 && (index + 1) < fields.length) {
+ fields.eq(index + 1).focus();
+ }
+ return false;
+ }
+ // handle focus on original select element
+ $input.focus(function(){
+ $input.next().focus();
+ });
+
+ //add classes on hover
+ $containerDivText.bind('mouseenter.sSelect',
+ function(e){
+ var $hoveredTxt = $(e.target);
+ $hoveredTxt.parent().addClass('newListSelHover');
+ }).bind('mouseleave.sSelect',
+ function(e){
+ var $hoveredTxt = $(e.target);
+ $hoveredTxt.parent().removeClass('newListSelHover');
+ });
+
+ //reset left property and hide
+ $containerDivWrapper.css({
+ left: '0',
+ display: 'none',
+ visibility: 'visible'
+ });
+
+ });
+
+ };
+
+})(jQuery); \ No newline at end of file
diff --git a/library/stylish_select/select-bg.png b/library/stylish_select/select-bg.png
new file mode 100755
index 000000000..151eda726
--- /dev/null
+++ b/library/stylish_select/select-bg.png
Binary files differ
diff --git a/library/stylish_select/stylish-select.css b/library/stylish_select/stylish-select.css
new file mode 100755
index 000000000..1f3dcd28d
--- /dev/null
+++ b/library/stylish_select/stylish-select.css
@@ -0,0 +1,121 @@
+/**
+* Stylish Select 0.4.9 - $ plugin to replace a select drop down box with a stylable unordered list
+* http://github.com/scottdarby/Stylish-Select/
+*
+* Copyright (c) 2009 Scott Darby
+*
+* Requires: jQuery 1.3 or newer
+*
+* Dual licensed under the MIT and GPL licenses.
+*/
+
+/**
+* Hide lists on page load
+---------------------------------------------------------*/
+
+.stylish-select .SSContainerDivWrapper {
+ left:-9999px;
+}
+
+/*
+* Red example
+---------------------------------------------------------*/
+.stylish-select .SSContainerDivWrapper {
+ margin:0;
+ padding:0;
+ width:290px;
+ position:absolute;
+ top:22px;
+ left:0;
+ z-index:2;
+}
+
+.stylish-select ul.newList {
+ margin:0;
+ padding:0;
+ list-style:none;
+ color:#000;
+ background:#fff;
+ border:1px solid #ccc;
+ overflow:auto;
+}
+
+.stylish-select ul.newList * {
+ margin:0;
+ padding:0;
+}
+
+
+.stylish-select ul.newList a {
+ color: #000;
+ text-decoration:none;
+ display:block;
+ padding:3px 8px;
+}
+
+.stylish-select .newListSelected {
+ width:285px;
+ color:#000;
+ height:19px;
+ padding:3px 0 0 6px;
+ float:left;
+ background:url(select-bg.png) no-repeat;
+}
+
+.stylish-select ul.newList li a:focus {
+ -moz-outline-style: none;
+}
+
+.stylish-select .selectedTxt {
+ width:258px;
+ overflow:hidden;
+ height:16px;
+ padding:0 23px 0 0;
+}
+
+.stylish-select .hiLite {
+ background:#650101!important;
+ color:#fff!important;
+}
+
+.stylish-select .newListHover {
+ background:#ccc!important;
+ color:#000!important;
+ cursor:default;
+}
+
+.stylish-select .newListDisabled {
+ opacity: 0.6;
+ -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=60)";
+ filter: alpha(opacity=60);
+}
+
+.stylish-select .newListItemDisabled {
+ opacity: 0.6;
+ -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=60)";
+ filter: alpha(opacity=60);
+}
+
+.stylish-select .newListOptionDisabled {
+ opacity: 0.6;
+ -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=60)";
+ filter: alpha(opacity=60);
+}
+
+.stylish-select .newListSelHover,
+.stylish-select .newListSelFocus {
+ background-position:0 -22px;
+ cursor:default;
+}
+
+.stylish-select .newListOptionTitle {
+ font-weight:bold;
+}
+
+.stylish-select .newListOptionTitle ul {
+ margin:3px 0 0;
+}
+
+.stylish-select .newListOptionTitle li {
+ font-weight:normal;
+} \ No newline at end of file
diff --git a/library/twitteroauth.php b/library/twitteroauth.php
index 7f3dcba4d..009ad56bd 100644
--- a/library/twitteroauth.php
+++ b/library/twitteroauth.php
@@ -18,7 +18,7 @@ class TwitterOAuth {
/* Contains the last API call. */
public $url;
/* Set up the API root URL. */
- public $host = "https://api.twitter.com/1/";
+ public $host = "https://api.twitter.com/1.1/";
/* Set timeout default. */
public $timeout = 30;
/* Set connect timeout. */
diff --git a/mod/achievements.php b/mod/achievements.php
index 1910def73..1d0018b08 100644
--- a/mod/achievements.php
+++ b/mod/achievements.php
@@ -1,6 +1,9 @@
<?php
function achievements_content(&$a) {
+ // This doesn't work, so
+ if (! is_developer())
+ return;
if(argc() > 1)
$which = argv(1);
@@ -28,6 +31,9 @@ function achievements_content(&$a) {
return;
}
+ $newmembertext = t('Some blurb about what to do when you\'re new here');
+
+
// By default, all badges are false
$contactbadge = false;
$profilebadge = false;
@@ -70,15 +76,12 @@ function achievements_content(&$a) {
if($r)
$keywordsbadge = 1;
-// FIXME - stick ths in a template, and make it look pretty.
- $o .= "Template not implemented";
- $o .= "If this is one, you get the profile badge" . $profilebadge . "<br>";
- $o .= "If this is one, you get the contact badge" . $contactbadge . "<br>";
- $o .= "If this is one you get the keywords badge" . $keywordsbadge . "<br>";
- $o .= "I haven't done the top level posts badge yet" . $toplevelpostsbadge . "<br>";
- $o .= "I haven't done the number of channels badge yet" . $channelsbadge;
-
-
-return $o;
+ return replace_macros(get_markup_template("achievements.tpl"), array(
+ '$newmembertext' => $newmembertext,
+ '$profilebadge' => $profilebadge,
+ '$contactbadge' => $contactbadge,
+ '$keywordsbadge' => $keywordsbadge,
+ '$channelsbadge' => $channelsbadge
+));
}
diff --git a/mod/acl.php b/mod/acl.php
index fa399a9b5..e6733351b 100644
--- a/mod/acl.php
+++ b/mod/acl.php
@@ -11,7 +11,10 @@ function acl_init(&$a){
$count = (x($_REQUEST,'count')?$_REQUEST['count']:100);
$search = (x($_REQUEST,'search')?$_REQUEST['search']:"");
$type = (x($_REQUEST,'type')?$_REQUEST['type']:"");
-
+ $noforums = (x($_REQUEST,'n') ? $_REQUEST['n'] : false);
+
+ // List of channels whose connections to also suggest, e.g. currently viewed channel or channels mentioned in a post
+ $extra_channels = (x($_REQUEST,'extra_channels') ? $_REQUEST['extra_channels'] : array());
// For use with jquery.autocomplete for private mail completion
@@ -21,15 +24,17 @@ function acl_init(&$a){
$search = $_REQUEST['query'];
}
-
if(!(local_user()))
- if($type != 'x')
+ if(!($type == 'x' || $type == 'c'))
killme();
if ($search != "") {
$sql_extra = " AND `name` LIKE " . protect_sprintf( "'%" . dbesc($search) . "%'" ) . " ";
- $sql_extra2 = "AND ( xchan_name LIKE " . protect_sprintf( "'%" . dbesc($search) . "%'" ) . " OR xchan_addr LIKE " . protect_sprintf( "'%" . dbesc($search) . "%'" ) . ") ";
+ $sql_extra2 = "AND ( xchan_name LIKE " . protect_sprintf( "'%" . dbesc($search) . "%'" ) . " OR xchan_addr LIKE " . protect_sprintf( "'%" . dbesc($search) . ((strpos($search,'@') === false) ? "%@%'" : "%'")) . ") ";
+ // This horrible mess is needed because position also returns 0 if nothing is found. W/ould be MUCH easier if it instead returned a very large value
+ // Otherwise we could just order by LEAST(POSTION($search IN xchan_name),POSITION($search IN xchan_addr)).
+ $order_extra2 = "CASE WHEN xchan_name LIKE " . protect_sprintf( "'%" . dbesc($search) . "%'" ) ." then POSITION('".dbesc($search)."' IN xchan_name) else position('".dbesc($search)."' IN xchan_addr) end, ";
$col = ((strpos($search,'@') !== false) ? 'xchan_addr' : 'xchan_name' );
$sql_extra3 = "AND $col like " . protect_sprintf( "'%" . dbesc($search) . "%'" ) . " ";
@@ -37,72 +42,6 @@ function acl_init(&$a){
$sql_extra = $sql_extra2 = $sql_extra3 = "";
}
- // count groups and contacts
- if ($type=='' || $type=='g'){
- $r = q("SELECT COUNT(`id`) AS g FROM `groups` WHERE `deleted` = 0 AND `uid` = %d $sql_extra",
- intval(local_user())
- );
- $group_count = (int)$r[0]['g'];
- } else {
- $group_count = 0;
- }
-
- if ($type=='' || $type=='c'){
- $r = q("SELECT COUNT(abook_id) AS c FROM abook left join xchan on abook_xchan = xchan_hash
- WHERE abook_channel = %d AND not ( abook_flags & %d ) and not (xchan_flags & %d ) $sql_extra2" ,
- intval(local_user()),
- intval(ABOOK_FLAG_BLOCKED|ABOOK_FLAG_PENDING|ABOOK_FLAG_ARCHIVED),
- intval(XCHAN_FLAGS_DELETED)
- );
- $contact_count = (int)$r[0]['c'];
-
- if(intval(get_config('system','taganyone')) || intval(get_pconfig(local_user(),'system','taganyone'))) {
- if(((! $r) || (! $r[0]['total'])) && $type == 'c') {
- $r = q("SELECT COUNT(xchan_hash) AS c FROM xchan
- WHERE not (xchan_flags & %d ) $sql_extra2" ,
- intval(XCHAN_FLAGS_DELETED)
- );
- $contact_count = (int)$r[0]['c'];
- }
- }
-
- }
-
- elseif ($type == 'm') {
-
- // autocomplete for Private Messages
-
-
- $r = q("SELECT count(xchan_hash) as c
- FROM abook left join xchan on abook_xchan = xchan_hash
- WHERE abook_channel = %d and ( (abook_their_perms = null) or (abook_their_perms & %d ))
- and not ( xchan_flags & %d )
- $sql_extra2 ",
- intval(local_user()),
- intval(PERMS_W_MAIL),
- intval(XCHAN_FLAGS_DELETED)
- );
-
- if($r)
- $contact_count = (int)$r[0]['c'];
-
- }
- elseif ($type == 'a') {
-
- // autocomplete for Contacts
-
- $r = q("SELECT COUNT(abook_id) AS c FROM abook left join xchan on abook_xchan = xchan_hash
- WHERE abook_channel = %d and not ( xchan_flags & %d ) $sql_extra2" ,
- intval(local_user()),
- intval(XCHAN_FLAGS_DELETED)
- );
- $contact_count = (int)$r[0]['c'];
-
- } else {
- $contact_count = 0;
- }
-
- $tot = $group_count+$contact_count;
$groups = array();
$contacts = array();
@@ -110,17 +49,18 @@ function acl_init(&$a){
if ($type=='' || $type=='g'){
$r = q("SELECT `groups`.`id`, `groups`.`hash`, `groups`.`name`,
- GROUP_CONCAT(DISTINCT `group_member`.`xchan` SEPARATOR ',') as uids
+ %s as uids
FROM `groups`,`group_member`
WHERE `groups`.`deleted` = 0 AND `groups`.`uid` = %d
AND `group_member`.`gid`=`groups`.`id`
$sql_extra
GROUP BY `groups`.`id`
ORDER BY `groups`.`name`
- LIMIT %d,%d",
+ LIMIT %d OFFSET %d",
+ db_concat('group_member.xchan', ','),
intval(local_user()),
- intval($start),
- intval($count)
+ intval($count),
+ intval($start)
);
foreach($r as $g){
@@ -138,18 +78,80 @@ function acl_init(&$a){
}
if ($type=='' || $type=='c') {
- $r = q("SELECT abook_id as id, xchan_hash as hash, xchan_name as name, xchan_photo_s as micro, xchan_url as url, xchan_addr as nick, abook_their_perms, abook_flags
+ $extra_channels_sql = '';
+ // Only include channels who allow the observer to view their permissions
+ foreach($extra_channels as $channel) {
+ if(perm_is_allowed(intval($channel), get_observer_hash(),'view_contacts'))
+ $extra_channels_sql .= "," . intval($channel);
+ }
+
+ $extra_channels_sql = substr($extra_channels_sql,1); // Remove initial comma
+
+ // Getting info from the abook is better for local users because it contains info about permissions
+ if(local_user()) {
+ if($extra_channels_sql != '')
+ $extra_channels_sql = " OR (abook_channel IN ($extra_channels_sql)) and not (abook_flags & ". intval(ABOOK_FLAG_HIDDEN) . ') > 0';
+
+ $r = q("SELECT abook_id as id, xchan_hash as hash, xchan_name as name, xchan_photo_s as micro, xchan_url as url, xchan_addr as nick, abook_their_perms, abook_flags
FROM abook left join xchan on abook_xchan = xchan_hash
- WHERE abook_channel = %d AND not ( abook_flags & %d ) and not (xchan_flags & %d ) $sql_extra2 order by xchan_name asc" ,
- intval(local_user()),
- intval(ABOOK_FLAG_BLOCKED|ABOOK_FLAG_PENDING|ABOOK_FLAG_ARCHIVED),
- intval(XCHAN_FLAGS_DELETED)
- );
+ WHERE (abook_channel = %d $extra_channels_sql) AND not ( abook_flags & %d )>0 and not (xchan_flags & %d )>0 $sql_extra2 order by $order_extra2 xchan_name asc" ,
+ intval(local_user()),
+ intval(ABOOK_FLAG_BLOCKED|ABOOK_FLAG_PENDING|ABOOK_FLAG_ARCHIVED),
+ intval(XCHAN_FLAGS_DELETED)
+ );
+ }
+ else { // Visitors
+ $r = q("SELECT xchan_hash as id, xchan_hash as hash, xchan_name as name, xchan_photo_s as micro, xchan_url as url, xchan_addr as nick, 0 as abook_their_perms, 0 as abook_flags
+ FROM xchan left join xlink on xlink_link = xchan_hash
+ WHERE xlink_xchan = '%s' AND NOT (xchan_flags & %d) > 0 $sql_extra2 order by $order_extra2 xchan_name asc" ,
+ dbesc(get_observer_hash()),
+ intval(XCHAN_FLAGS_DELETED));
+
+ // Find contacts of extra channels
+ // This is probably more complicated than it needs to be
+ if($extra_channels_sql) {
+ // Build a list of hashes that we got previously so we don't get them again
+ $known_hashes = array("'".get_observer_hash()."'");
+ if($r)
+ foreach($r as $rr)
+ $known_hashes[] = "'".$rr['hash']."'";
+ $known_hashes_sql = 'AND xchan_hash not in ('.join(',',$known_hashes).')';
+
+ $r2 = q("SELECT abook_id as id, xchan_hash as hash, xchan_name as name, xchan_photo_s as micro, xchan_url as url, xchan_addr as nick, abook_their_perms, abook_flags
+ FROM abook left join xchan on abook_xchan = xchan_hash
+ WHERE abook_channel IN ($extra_channels_sql) $known_hashes_sql AND not ( abook_flags & %d )>0 and not (xchan_flags & %d )>0 $sql_extra2 order by $order_extra2 xchan_name asc" ,
+ intval(ABOOK_FLAG_BLOCKED|ABOOK_FLAG_PENDING|ABOOK_FLAG_ARCHIVED|ABOOK_FLAG_HIDDEN),
+ intval(XCHAN_FLAGS_DELETED)
+ );
+ if($r2)
+ $r = array_merge($r,$r2);
+
+ // Sort accoring to match position, then alphabetically. This could be avoided if the above two SQL queries could be combined into one, and the sorting could be done on the SQl server (like in the case of a local user)
+ $matchpos = function($x) use($search) {
+ $namepos = strpos($x['name'],$search);
+ $nickpos = strpos($x['nick'],$search);
+ // Use a large position if not found
+ return min($namepos === false ? 9999 : $namepos, $nickpos === false ? 9999 : $nickpos);
+ };
+ // This could be made simpler if PHP supported stable sorting
+ usort($r,function($a,$b) use($matchpos) {
+ $pos1 = $matchpos($a);
+ $pos2 = $matchpos($b);
+ if($pos1 == $pos2) { // Order alphabetically if match position is the same
+ if($a['name'] == $b['name'])
+ return 0;
+ else
+ return ($a['name'] < $b['name']) ? -1 : 1;
+ }
+ return ($pos1 < $pos2) ? -1 : 1;
+ });
+ }
+ }
if(intval(get_config('system','taganyone')) || intval(get_pconfig(local_user(),'system','taganyone'))) {
if((! $r) && $type == 'c') {
$r = q("SELECT substr(xchan_hash,1,18) as id, xchan_hash as hash, xchan_name as name, xchan_photo_s as micro, xchan_url as url, xchan_addr as nick, 0 as abook_their_perms, 0 as abook_flags
FROM xchan
- WHERE not (xchan_flags & %d ) $sql_extra2 order by xchan_name asc" ,
+ WHERE not (xchan_flags & %d )>0 $sql_extra2 order by $order_extra2 xchan_name asc" ,
intval(XCHAN_FLAGS_DELETED)
);
}
@@ -159,8 +161,8 @@ function acl_init(&$a){
$r = q("SELECT xchan_hash as id, xchan_name as name, xchan_addr as nick, xchan_photo_s as micro, xchan_url as url
FROM abook left join xchan on abook_xchan = xchan_hash
- WHERE abook_channel = %d and ( (abook_their_perms = null) or (abook_their_perms & %d ))
- and not (xchan_flags & %d)
+ WHERE abook_channel = %d and ( (abook_their_perms = null) or (abook_their_perms & %d )>0)
+ and not (xchan_flags & %d)>0
$sql_extra3
ORDER BY `xchan_name` ASC ",
intval(local_user()),
@@ -168,10 +170,10 @@ function acl_init(&$a){
intval(XCHAN_FLAGS_DELETED)
);
}
- elseif($type == 'a') {
+ elseif(($type == 'a') || ($type == 'p')) {
$r = q("SELECT abook_id as id, xchan_name as name, xchan_hash as hash, xchan_addr as nick, xchan_photo_s as micro, xchan_network as network, xchan_url as url, xchan_addr as attag , abook_their_perms FROM abook left join xchan on abook_xchan = xchan_hash
WHERE abook_channel = %d
- and not (xchan_flags & %d)
+ and not (xchan_flags & %d)>0
$sql_extra3
ORDER BY xchan_name ASC ",
intval(local_user()),
@@ -204,7 +206,7 @@ function acl_init(&$a){
$r = array();
- if($type == 'm' || $type == 'a') {
+ if($type == 'm' || $type == 'a' || $type == 'p') {
$x = array();
$x['query'] = $search;
$x['photos'] = array();
@@ -216,7 +218,7 @@ function acl_init(&$a){
$x['photos'][] = $g['micro'];
$x['links'][] = $g['url'];
$x['suggestions'][] = $g['name'];
- $x['data'][] = $g['id'];
+ $x['data'][] = (($type === 'p') ? '@' . str_replace(' ','_',$g['name']) : $g['id']);
}
}
echo json_encode($x);
@@ -225,7 +227,12 @@ function acl_init(&$a){
if(count($r)) {
foreach($r as $g){
- if(($g['abook_their_perms'] & PERMS_W_TAGWALL) && $type == 'c') {
+
+ // remove RSS feeds from ACLs - they are inaccessible
+ if(strpos($g['hash'],'/'))
+ continue;
+
+ if(($g['abook_their_perms'] & PERMS_W_TAGWALL) && $type == 'c' && (! $noforums)) {
$contacts[] = array(
"type" => "c",
"photo" => "images/twopeople.png",
@@ -257,7 +264,6 @@ function acl_init(&$a){
$items = array_merge($groups, $contacts);
$o = array(
- 'tot' => $tot,
'start' => $start,
'count' => $count,
'items' => $items,
diff --git a/mod/admin.php b/mod/admin.php
index 464edddd4..0e580960a 100644
--- a/mod/admin.php
+++ b/mod/admin.php
@@ -65,6 +65,11 @@ function admin_post(&$a){
case 'dbsync':
admin_page_dbsync_post($a);
break;
+
+ case 'profs':
+ admin_page_profs_post($a);
+ break;
+
}
}
@@ -95,6 +100,7 @@ function admin_content(&$a) {
'plugins' => Array($a->get_baseurl(true)."/admin/plugins/", t("Plugins") , "plugins"),
'themes' => Array($a->get_baseurl(true)."/admin/themes/", t("Themes") , "themes"),
'hubloc' => Array($a->get_baseurl(true)."/admin/hubloc/", t("Server") , "server"),
+ 'profs' => array(z_root() . '/admin/profs', t('Profile Config'), 'profs'),
'dbsync' => Array($a->get_baseurl(true)."/admin/dbsync/", t('DB updates'), "dbsync")
);
@@ -155,6 +161,9 @@ function admin_content(&$a) {
case 'dbsync':
$o = admin_page_dbsync($a);
break;
+ case 'profs':
+ $o = admin_page_profs($a);
+ break;
default:
notice( t("Item not found.") );
}
@@ -229,8 +238,7 @@ function admin_page_site_post(&$a){
$language = ((x($_POST,'language')) ? notags(trim($_POST['language'])) : '');
$theme = ((x($_POST,'theme')) ? notags(trim($_POST['theme'])) : '');
$theme_mobile = ((x($_POST,'theme_mobile')) ? notags(trim($_POST['theme_mobile'])) : '');
- $theme_accessibility = ((x($_POST,'theme_accessibility')) ? notags(trim($_POST['theme_accessibility'])) : '');
- $site_channel = ((x($_POST,'site_channel')) ? notags(trim($_POST['site_channel'])) : '');
+// $site_channel = ((x($_POST,'site_channel')) ? notags(trim($_POST['site_channel'])) : '');
$maximagesize = ((x($_POST,'maximagesize')) ? intval(trim($_POST['maximagesize'])) : 0);
@@ -256,55 +264,18 @@ function admin_page_site_post(&$a){
$delivery_interval = ((x($_POST,'delivery_interval'))? intval(trim($_POST['delivery_interval'])) : 0);
$poll_interval = ((x($_POST,'poll_interval'))? intval(trim($_POST['poll_interval'])) : 0);
$maxloadavg = ((x($_POST,'maxloadavg'))? intval(trim($_POST['maxloadavg'])) : 50);
-// $ssl_policy = ((x($_POST,'ssl_policy')) ? intval($_POST['ssl_policy']) : 0);
-/*
- if($ssl_policy != intval(get_config('system','ssl_policy'))) {
- if($ssl_policy == SSL_POLICY_FULL) {
- q("update `contact` set
- `url` = replace(`url` , 'http:' , 'https:'),
- `photo` = replace(`photo` , 'http:' , 'https:'),
- `thumb` = replace(`thumb` , 'http:' , 'https:'),
- `micro` = replace(`micro` , 'http:' , 'https:'),
- `request` = replace(`request`, 'http:' , 'https:'),
- `notify` = replace(`notify` , 'http:' , 'https:'),
- `poll` = replace(`poll` , 'http:' , 'https:'),
- `confirm` = replace(`confirm`, 'http:' , 'https:'),
- `poco` = replace(`poco` , 'http:' , 'https:')
- where `self` = 1"
- );
- q("update `profile` set
- `photo` = replace(`photo` , 'http:' , 'https:'),
- `thumb` = replace(`thumb` , 'http:' , 'https:')
- where 1 "
- );
- }
- elseif($ssl_policy == SSL_POLICY_SELFSIGN) {
- q("update `contact` set
- `url` = replace(`url` , 'https:' , 'http:'),
- `photo` = replace(`photo` , 'https:' , 'http:'),
- `thumb` = replace(`thumb` , 'https:' , 'http:'),
- `micro` = replace(`micro` , 'https:' , 'http:'),
- `request` = replace(`request`, 'https:' , 'http:'),
- `notify` = replace(`notify` , 'https:' , 'http:'),
- `poll` = replace(`poll` , 'https:' , 'http:'),
- `confirm` = replace(`confirm`, 'https:' , 'http:'),
- `poco` = replace(`poco` , 'https:' , 'http:')
- where `self` = 1"
- );
- q("update `profile` set
- `photo` = replace(`photo` , 'https:' , 'http:'),
- `thumb` = replace(`thumb` , 'https:' , 'http:')
- where 1 "
- );
- }
- }
-*/
-// set_config('system','ssl_policy',$ssl_policy);
+ $feed_contacts = ((x($_POST,'feed_contacts')) ? intval($_POST['feed_contacts']) : 0);
+ $diaspora_enabled = ((x($_POST,'diaspora_enabled')) ? intval($_POST['diaspora_enabled']) : 0);
+ $verify_email = ((x($_POST,'verify_email')) ? 1 : 0);
+
+ set_config('system','feed_contacts',$feed_contacts);
+ set_config('system','diaspora_enabled',$diaspora_enabled);
set_config('system','delivery_interval',$delivery_interval);
set_config('system','poll_interval',$poll_interval);
set_config('system','maxloadavg',$maxloadavg);
set_config('system','sitename',$sitename);
set_config('system','no_login_on_homepage',$no_login_on_homepage);
+ set_config('system','verify_email',$verify_email);
if ($banner=="") {
del_config('system','banner');
@@ -326,13 +297,7 @@ function admin_page_site_post(&$a){
} else {
set_config('system','mobile_theme', $theme_mobile);
}
- if ( $theme_accessibility === '---' ) {
- del_config('system','accessibility_theme');
- } else {
- set_config('system','accessibility_theme', $theme_accessibility);
- }
-
- set_config('system','site_channel', $site_channel);
+// set_config('system','site_channel', $site_channel);
set_config('system','maximagesize', $maximagesize);
set_config('system','register_policy', $register_policy);
@@ -385,27 +350,32 @@ function admin_page_site(&$a) {
}
/* Installed themes */
- $theme_choices = array();
- $theme_choices_mobile = array();
- $theme_choices_mobile["---"] = t("No special theme for mobile devices");
- $theme_choices_accessibility = array();
- $theme_choices_accessibility["---"] =t("No special theme for accessibility");
- $files = glob('view/theme/*');
- if($files) {
- foreach($files as $file) {
- $f = basename($file);
- $theme_name = ((file_exists($file . '/experimental')) ? sprintf("%s - Experimental", $f) : $f);
- if (file_exists($file . '/mobile')) {
- $theme_choices_mobile[$f] = $theme_name;
- }
- if (file_exists($file . '/accessibility')) {
- $theme_choices_accessibility[$f] = $theme_name;
+ $theme_choices_mobile["---"] = t("Default");
+ $theme_choices = array();
+ $files = glob('view/theme/*');
+ if($files) {
+ foreach($files as $file) {
+ $vars = '';
+ $f = basename($file);
+ if (file_exists($file . '/library'))
+ continue;
+ if (file_exists($file . '/mobile'))
+ $vars = t('mobile');
+ if (file_exists($file . '/experimental'))
+ $vars .= t('experimental');
+ if (file_exists($file . '/unsupported'))
+ $vars .= t('unsupported');
+ if ($vars) {
+ $theme_choices[$f] = $f . ' (' . $vars . ')';
+ $theme_choices_mobile[$f] = $f . ' (' . $vars . ')';
}
- $theme_choices[$f] = $theme_name;
- }
- }
-
-
+ else {
+ $theme_choices[$f] = $f;
+ $theme_choices_mobile[$f] = $f;
+ }
+ }
+ }
+
/* Banner */
$banner = get_config('system','banner');
if($banner == false)
@@ -453,9 +423,9 @@ function admin_page_site(&$a) {
'$language' => array('language', t("System language"), get_config('system','language'), "", $lang_choices),
'$theme' => array('theme', t("System theme"), get_config('system','theme'), t("Default system theme - may be over-ridden by user profiles - <a href='#' id='cnftheme'>change theme settings</a>"), $theme_choices),
'$theme_mobile' => array('theme_mobile', t("Mobile system theme"), get_config('system','mobile_theme'), t("Theme for mobile devices"), $theme_choices_mobile),
- '$theme_accessibility' => array('theme_accessibility', t("Accessibility system theme"), get_config('system','accessibility_theme'), t("Accessibility theme"), $theme_choices_accessibility),
- '$site_channel' => array('site_channel', t("Channel to use for this website's static pages"), get_config('system','site_channel'), t("Site Channel")),
-// '$ssl_policy' => array('ssl_policy', t("SSL link policy"), (string) intval(get_config('system','ssl_policy')), t("Determines whether generated links should be forced to use SSL"), $ssl_choices),
+// '$site_channel' => array('site_channel', t("Channel to use for this website's static pages"), get_config('system','site_channel'), t("Site Channel")),
+ '$diaspora_enabled' => array('diaspora_enabled',t('Enable Diaspora Protocol'), get_config('system','diaspora_enabled'), t('Communicate with Diaspora and Friendica - experimental')),
+ '$feed_contacts' => array('feed_contacts', t('Allow Feeds as Connections'),get_config('system','feed_contacts'),t('(Heavy system resource usage)')),
'$maximagesize' => array('maximagesize', t("Maximum image size"), intval(get_config('system','maximagesize')), t("Maximum size in bytes of uploaded images. Default is 0, which means no limits.")),
'$register_policy' => array('register_policy', t("Does this site allow new member registration?"), get_config('system','register_policy'), "", $register_choices),
'$access_policy' => array('access_policy', t("Which best describes the types of account offered by this hub?"), get_config('system','access_policy'), "This is displayed on the public server site list.", $access_choices),
@@ -464,6 +434,7 @@ function admin_page_site(&$a) {
'$allowed_sites' => array('allowed_sites', t("Allowed friend domains"), get_config('system','allowed_sites'), t("Comma separated list of domains which are allowed to establish friendships with this site. Wildcards are accepted. Empty to allow any domains")),
'$allowed_email' => array('allowed_email', t("Allowed email domains"), get_config('system','allowed_email'), t("Comma separated list of domains which are allowed in email addresses for registrations to this site. Wildcards are accepted. Empty to allow any domains")),
'$block_public' => array('block_public', t("Block public"), get_config('system','block_public'), t("Check to block public access to all otherwise public personal pages on this site unless you are currently logged in.")),
+ '$verify_email' => array('verify_email', t("Verify Email Addresses"), get_config('system','verify_email'), t("Check to verify email addresses used in account registration (recommended).")),
'$force_publish' => array('publish_all', t("Force publish"), get_config('system','publish_all'), t("Check to force all profiles on this site to be listed in the site directory.")),
'$disable_discover_tab' => array('disable_discover_tab', t("Disable discovery tab"), get_config('system','disable_discover_tab'), t("Remove the tab in the network view with public content pulled from sources chosen for this site.")),
'$no_login_on_homepage' => array('no_login_on_homepage', t("No login on Homepage"), get_config('system','no_login_on_homepage'), t("Check to hide the login form from your sites homepage when visitors arrive who are not logged in (e.g. when you put the content of the homepage in via the site channel).")),
@@ -620,7 +591,7 @@ function admin_page_users_post(&$a){
if (x($_POST,'page_users_block')){
foreach($users as $uid){
- q("UPDATE account SET account_flags = (account_flags & %d) where account_id = %d limit 1",
+ q("UPDATE account SET account_flags = (account_flags & %d) where account_id = %d",
intval(ACCOUNT_BLOCKED),
intval( $uid )
);
@@ -630,19 +601,17 @@ function admin_page_users_post(&$a){
if (x($_POST,'page_users_delete')){
require_once("include/Contact.php");
foreach($users as $uid){
- account_remove($uid,true);
+ account_remove($uid,true,false);
}
notice( sprintf( tt("%s user deleted", "%s users deleted", count($users)), count($users)) );
}
if (x($_POST,'page_users_approve')){
- require_once('include/account.php');
foreach($pending as $hash){
user_allow($hash);
}
}
if (x($_POST,'page_users_deny')){
- require_once('include/account.php');
foreach($pending as $hash){
user_deny($hash);
}
@@ -672,13 +641,13 @@ function admin_page_users(&$a){
check_form_security_token_redirectOnErr('/admin/users', 'admin_users', 't');
// delete user
require_once("include/Contact.php");
- account_remove($uid,true);
+ account_remove($uid,true,false);
notice( sprintf(t("User '%s' deleted"), $account[0]['account_email']) . EOL);
}; break;
case "block":{
check_form_security_token_redirectOnErr('/admin/users', 'admin_users', 't');
- q("UPDATE account SET account_flags = ( account_flags ^ %d ) where account_id = %d",
+ q("UPDATE account SET account_flags = ( account_flags & ~%d ) where account_id = %d",
intval(ACCOUNT_BLOCKED),
intval( $uid )
);
@@ -692,13 +661,13 @@ function admin_page_users(&$a){
}
/* get pending */
- $pending = q("SELECT account.*, register.hash from account left join register on account_id = register.uid where (account_flags & %d ) ",
+ $pending = q("SELECT account.*, register.hash from account left join register on account_id = register.uid where (account_flags & %d )>0 ",
intval(ACCOUNT_PENDING)
);
/* get users */
- $total = q("SELECT count(*) as total FROM account where 1");
+ $total = q("SELECT count(*) as total FROM account");
if(count($total)) {
$a->set_pager_total($total[0]['total']);
$a->set_pager_itemspage(100);
@@ -715,15 +684,18 @@ function admin_page_users(&$a){
$order = " order by account_email asc ";
if($_REQUEST['order'] === 'expires')
$order = " order by account_expires desc ";
-
- $users =q("SELECT `account_id` , `account_email`, `account_lastlog`, `account_created`, `account_expires`, " . "`account_service_class`, ( account_flags & %d ) > 0 as `blocked`, " .
- "(SELECT GROUP_CONCAT( ch.channel_address SEPARATOR ' ') FROM channel as ch " .
- "WHERE ch.channel_account_id = ac.account_id and not (ch.channel_pageflags & %d )) as `channels` " .
- "FROM account as ac where true $serviceclass $order limit %d , %d ",
+ if($_REQUEST['order'] === 'created')
+ $order = " order by account_created desc ";
+
+ $users =q("SELECT `account_id` , `account_email`, `account_lastlog`, `account_created`, `account_expires`, " . "`account_service_class`, ( account_flags & %d )>0 as `blocked`, " .
+ "(SELECT %s FROM channel as ch " .
+ "WHERE ch.channel_account_id = ac.account_id and not (ch.channel_pageflags & %d )>0) as `channels` " .
+ "FROM account as ac where true $serviceclass $order limit %d offset %d ",
intval(ACCOUNT_BLOCKED),
+ db_concat('ch.channel_address', ' '),
intval(PAGE_REMOVED),
- intval($a->pager['start']),
- intval($a->pager['itemspage'])
+ intval($a->pager['itemspage']),
+ intval($a->pager['start'])
);
// function _setup_users($e){
@@ -790,13 +762,13 @@ function admin_page_channels_post(&$a){
if (x($_POST,'page_channels_block')){
foreach($channels as $uid){
- q("UPDATE channel SET channel_pageflags = ( channel_pageflags ^ %d ) where channel_id = %d",
+ q("UPDATE channel SET channel_pageflags = ( channel_pageflags & ~%d ) where channel_id = %d",
intval(PAGE_CENSORED),
intval( $uid )
);
proc_run('php','include/directory.php',$uid,'nopush');
}
- notice( sprintf( tt("%s channel censored/uncensored", "%s channelss censored/uncensored", count($channels)), count($channels)) );
+ notice( sprintf( tt("%s channel censored/uncensored", "%s channels censored/uncensored", count($channels)), count($channels)) );
}
if (x($_POST,'page_channels_delete')){
require_once("include/Contact.php");
@@ -838,10 +810,11 @@ function admin_page_channels(&$a){
case "block":{
check_form_security_token_redirectOnErr('/admin/channels', 'admin_channels', 't');
- q("UPDATE channel SET channel_pageflags = ( channel_pageflags ^ %d ) where channel_id = %d",
+ q("UPDATE channel SET channel_pageflags = ( channel_pageflags & ~%d ) where channel_id = %d",
intval(PAGE_CENSORED),
intval( $uid )
);
+ proc_run('php','include/directory.php',$uid,'nopush');
notice( sprintf( (($channel[0]['channel_pageflags'] & PAGE_CENSORED) ? t("Channel '%s' uncensored"): t("Channel '%s' censored")) , $channel[0]['channel_name'] . ' (' . $channel[0]['channel_address'] . ')' ) . EOL);
}; break;
@@ -853,7 +826,7 @@ function admin_page_channels(&$a){
/* get channels */
- $total = q("SELECT count(*) as total FROM channel where not (channel_pageflags & %d)",
+ $total = q("SELECT count(*) as total FROM channel where not (channel_pageflags & %d)>0",
intval(PAGE_REMOVED)
);
if($total) {
@@ -863,10 +836,10 @@ function admin_page_channels(&$a){
$order = " order by channel_name asc ";
- $channels = q("SELECT * from channel where not ( channel_pageflags & %d ) $order limit %d , %d ",
+ $channels = q("SELECT * from channel where not ( channel_pageflags & %d )>0 $order limit %d offset %d ",
intval(PAGE_REMOVED),
- intval($a->pager['start']),
- intval($a->pager['itemspage'])
+ intval($a->pager['itemspage']),
+ intval($a->pager['start'])
);
if($channels) {
@@ -1317,3 +1290,80 @@ readable.");
));
}
+function admin_page_profs_post(&$a) {
+
+ if($_REQUEST['id']) {
+ $r = q("update profdef set field_name = '%s', field_type = '%s', field_desc = '%s' field_help = '%s', field_inputs = '%s' where id = %d",
+ dbesc($_REQUEST['field_name']),
+ dbesc($_REQUEST['field_type']),
+ dbesc($_REQUEST['field_desc']),
+ dbesc($_REQUEST['field_help']),
+ dbesc($_REQUEST['field_inputs']),
+ intval($_REQUEST['id'])
+ );
+ }
+ else {
+ $r = q("insert into profdef ( field_name, field_type, field_desc, field_help, field_inputs ) values ( '%s' , '%s', '%s', '%s', '%s' )",
+ dbesc($_REQUEST['field_name']),
+ dbesc($_REQUEST['field_type']),
+ dbesc($_REQUEST['field_desc']),
+ dbesc($_REQUEST['field_help']),
+ dbesc($_REQUEST['field_inputs'])
+ );
+ }
+
+ // add to chosen array basic or advanced
+
+ goaway(z_root() . '/admin/profs');
+
+}
+
+function admin_page_profs(&$a) {
+
+ if((argc() > 3) && argv(2) == 'drop' && intval(argv(3))) {
+ $r = q("delete from profdef where id = %d",
+ intval(argv(3))
+ );
+ // remove from allowed fields
+
+ goaway(z_root() . '/admin/profs');
+ }
+
+ if((argc() > 2) && argv(2) === 'new') {
+ return replace_macros(get_markup_template('profdef_edit.tpl'),array(
+ '$header' => t('New Profile Field'),
+ '$field_name' => array('field_name',t('Field nickname'),$_REQUEST['field_name'],t('System name of field')),
+ '$field_type' => array('field_type',t('Input type'),(($_REQUEST['field_type']) ? $_REQUEST['field_type'] : 'text'),''),
+ '$field_desc' => array('field_desc',t('Field Name'),$_REQUEST['field_desc'],t('Label on profile pages')),
+ '$field_help' => array('field_help',t('Help text'),$_REQUEST['field_help'],t('Additional info (optional)')),
+ '$submit' => t('Save')
+ ));
+
+ }
+
+ if((argc() > 2) && intval(argv(2))) {
+ $r = q("select * from profdef where id = %d limit 1",
+ intval(argv(2))
+ );
+ if(! $r) {
+ notice( t('Field definition not found') . EOL);
+ goaway(z_root() . '/admin/profs');
+ }
+
+ return replace_macros(get_markup_template('profdef_edit.tpl'),array(
+ '$id' => intval($r[0]['id']),
+ '$header' => t('Edit Profile Field'),
+ '$field_name' => array('field_name',t('Field nickname'),$r[0]['field_name'],t('System name of field')),
+ '$field_type' => array('field_type',t('Input type'),$r[0]['field_type'],''),
+ '$field_desc' => array('field_desc',t('Field Name'),$r[0]['field_desc'],t('Label on profile pages')),
+ '$field_help' => array('field_help',t('Help text'),$r[0]['field_help'],t('Additional info (optional)')),
+ '$submit' => t('Save')
+ ));
+ }
+
+}
+
+
+
+
+
diff --git a/mod/apps.php b/mod/apps.php
index 07d1968d2..8c9706d2f 100644
--- a/mod/apps.php
+++ b/mod/apps.php
@@ -30,6 +30,7 @@ function apps_content(&$a) {
}
return replace_macros(get_markup_template('myapps.tpl'), array(
+ '$sitename' => get_config('system','sitename'),
'$title' => t('Apps'),
'$apps' => $apps,
));
diff --git a/mod/blocks.php b/mod/blocks.php
index 74a980c25..6237a645b 100644
--- a/mod/blocks.php
+++ b/mod/blocks.php
@@ -1,103 +1,140 @@
<?php
-function blocks_content(&$a) {
+require_once('include/identity.php');
+require_once('include/conversation.php');
+require_once('include/acl_selectors.php');
+function blocks_init(&$a) {
+ if(argc() > 1 && argv(1) === 'sys' && is_site_admin()) {
+ $sys = get_sys_channel();
+ if($sys && intval($sys['channel_id'])) {
+ $a->is_sys = true;
+ }
+ }
if(argc() > 1)
$which = argv(1);
- else {
+ else
+ return;
+
+ profile_load($a,$which);
+
+}
+
+
+function blocks_content(&$a) {
+
+ if(! $a->profile) {
notice( t('Requested profile is not available.') . EOL );
$a->error = 404;
return;
}
- profile_load($a,$which,0);
+ $which = argv(1);
+ $uid = local_user();
+ $owner = 0;
+ $channel = null;
+ $observer = $a->get_observer();
- // Figure out who the page owner is.
- $r = q("select channel_id from channel where channel_address = '%s'",
- dbesc($which)
- );
- if($r) {
- $owner = intval($r[0]['channel_id']);
+ $channel = $a->get_channel();
+
+ if($a->is_sys && is_site_admin()) {
+ $sys = get_sys_channel();
+ if($sys && intval($sys['channel_id'])) {
+ $uid = $owner = intval($sys['channel_id']);
+ $channel = $sys;
+ $observer = $sys;
+ }
}
- // Block design features from visitors
+ if(! $owner) {
+ // Figure out who the page owner is.
+ $r = q("select channel_id from channel where channel_address = '%s'",
+ dbesc($which)
+ );
+ if($r) {
+ $owner = intval($r[0]['channel_id']);
+ }
+ }
+
+ $ob_hash = (($observer) ? $observer['xchan_hash'] : '');
+
+ $perms = get_all_perms($owner,$ob_hash);
- if((! local_user()) || (local_user() != $owner)) {
+ if(! $perms['write_pages']) {
notice( t('Permission denied.') . EOL);
return;
}
+ // Block design features from visitors
+ if((! $uid) || ($uid != $owner)) {
+ notice( t('Permission denied.') . EOL);
+ return;
+ }
-// Get the observer, check their permissions
-
- $observer = $a->get_observer();
- $ob_hash = (($observer) ? $observer['xchan_hash'] : '');
-
- $perms = get_all_perms($owner,$ob_hash);
- if(! $perms['write_pages']) {
- notice( t('Permission denied.') . EOL);
- return;
- }
+ if(feature_enabled($owner,'expert')) {
+ $mimetype = (($_REQUEST['mimetype']) ? $_REQUEST['mimetype'] : get_pconfig($owner,'system','page_mimetype'));
+ if(! $mimetype)
+ $mimetype = 'choose';
+ }
+ else {
+ $mimetype = 'text/bbcode';
+ }
-// if(local_user() && local_user() == $owner) {
- // $a->set_widget('design',design_tools());
- // }
+ $x = array(
+ 'webpage' => ITEM_BUILDBLOCK,
+ 'is_owner' => true,
+ 'nickname' => $a->profile['channel_address'],
+ 'lockstate' => (($channel['channel_allow_cid'] || $channel['channel_allow_gid'] || $channel['channel_deny_cid'] || $channel['channel_deny_gid']) ? 'lock' : 'unlock'),
+ 'bang' => '',
+ 'showacl' => false,
+ 'visitor' => true,
+ 'mimetype' => $mimetype,
+ 'ptlabel' => t('Block Name'),
+ 'profile_uid' => intval($owner),
+ );
+ if($_REQUEST['title'])
+ $x['title'] = $_REQUEST['title'];
+ if($_REQUEST['body'])
+ $x['body'] = $_REQUEST['body'];
+ if($_REQUEST['pagetitle'])
+ $x['pagetitle'] = $_REQUEST['pagetitle'];
-// Create a status editor (for now - we'll need a WYSIWYG eventually) to create pages
-// Nickname is set to the observers xchan, and profile_uid to the owners. This lets you post pages at other people's channels.
-require_once ('include/conversation.php');
- $x = array(
- 'webpage' => ITEM_BUILDBLOCK,
- 'is_owner' => true,
- 'nickname' => $a->profile['channel_address'],
- 'lockstate' => (($group || $cid || $channel['channel_allow_cid'] || $channel['channel_allow_gid'] || $channel['channel_deny_cid'] || $channel['channel_deny_gid']) ? 'lock' : 'unlock'),
- 'bang' => (($group || $cid) ? '!' : ''),
- 'showacl' => false,
- 'visitor' => true,
- 'mimetype' => 'choose',
- 'ptlabel' => t('Block Name'),
- 'profile_uid' => intval($owner),
- );
- $o .= status_editor($a,$x);
- //Get a list of blocks. We can't display all them because endless scroll makes that unusable, so just list titles and an edit link.
-//TODO - this should be replaced with pagelist_widget
+ $o .= status_editor($a,$x);
-$r = q("select * from item_id where uid = %d and service = 'BUILDBLOCK' order by sid asc",
- intval($owner)
-);
+ $r = q("select * from item_id where uid = %d and service = 'BUILDBLOCK' order by sid asc",
+ intval($owner)
+ );
- $pages = null;
+ $pages = null;
- if($r) {
- $pages = array();
- foreach($r as $rr) {
- $pages[$rr['iid']][] = array('url' => $rr['iid'],'title' => $rr['sid']);
- }
- }
+ if($r) {
+ $pages = array();
+ foreach($r as $rr) {
+ $pages[$rr['iid']][] = array('url' => $rr['iid'],'title' => $rr['sid']);
+ }
+ }
+ //Build the base URL for edit links
+ $url = z_root() . '/editblock/' . $which;
-//Build the base URL for edit links
- $url = z_root() . "/editblock/" . $which;
-// This isn't pretty, but it works. Until I figure out what to do with the UI, it's Good Enough(TM).
- return $o . replace_macros(get_markup_template("blocklist.tpl"), array(
+ $o .= replace_macros(get_markup_template('blocklist.tpl'), array(
'$baseurl' => $url,
'$edit' => t('Edit'),
'$pages' => $pages,
'$channel' => $which,
'$view' => t('View'),
'$preview' => '1',
-
- ));
+ ));
-
+ return $o;
}
diff --git a/mod/bookmarks.php b/mod/bookmarks.php
index 9ccc171fe..6b2476a8e 100644
--- a/mod/bookmarks.php
+++ b/mod/bookmarks.php
@@ -55,6 +55,8 @@ function bookmarks_content(&$a) {
$o = profile_tabs($a,true,$channel['channel_address']);
+ $o .= '<div class="generic-content-wrapper-styled">';
+
$o .= '<h3>' . t('My Bookmarks') . '</h3>';
$x = menu_list(local_user(),'',MENU_BOOKMARK);
@@ -78,7 +80,7 @@ function bookmarks_content(&$a) {
}
}
-
+ $o .= '</div>';
return $o;
diff --git a/mod/chanman.php b/mod/chanman.php
deleted file mode 100644
index 7a89708d7..000000000
--- a/mod/chanman.php
+++ /dev/null
@@ -1,31 +0,0 @@
-<?php /** @file */
-
-
-/**
- Placeholder file at present. This is going to involve a bit of work.
-
- This file will deal with the deletion of channels and management of hublocs.
-
- We need to provide the following functionality:
-
- - Delete my account and all channels from the entire network
-
- - Delete my account and all channels from this server
-
- - Delete a channel from the entire network
-
- - Delete a channel from this server
-
- - List all hub locations for this channel
-
- - Remove this/some hub location from this channel
-
- - promote this/some hub location to primary
-
- - Remove hub location 'xyz' from this channel, (this should possibly only be allowed if that hub has been down for a period of time)
-
- - Some of these actions should probably require email verification
-
-*/
-
-
diff --git a/mod/channel.php b/mod/channel.php
index 395160d2c..e819de0e0 100644
--- a/mod/channel.php
+++ b/mod/channel.php
@@ -47,7 +47,7 @@ function channel_content(&$a, $update = 0, $load = false) {
$category = $datequery = $datequery2 = '';
- $mid = $_GET['mid'];
+ $mid = ((x($_REQUEST,'mid')) ? $_REQUEST['mid'] : '');
$datequery = ((x($_GET,'dend') && is_a_date_arg($_GET['dend'])) ? notags($_GET['dend']) : '');
$datequery2 = ((x($_GET,'dbegin') && is_a_date_arg($_GET['dbegin'])) ? notags($_GET['dbegin']) : '');
@@ -57,6 +57,7 @@ function channel_content(&$a, $update = 0, $load = false) {
}
$category = ((x($_REQUEST,'cat')) ? $_REQUEST['cat'] : '');
+ $hashtags = ((x($_REQUEST,'tag')) ? $_REQUEST['tag'] : '');
$groups = array();
@@ -64,7 +65,7 @@ function channel_content(&$a, $update = 0, $load = false) {
if($update) {
// Ensure we've got a profile owner if updating.
- $a->profile['profile_uid'] = $update;
+ $a->profile['profile_uid'] = $a->profile_uid = $update;
}
else {
if($a->profile['profile_uid'] == local_user()) {
@@ -137,21 +138,26 @@ function channel_content(&$a, $update = 0, $load = false) {
$sql_extra = item_permissions_sql($a->profile['profile_uid'],$remote_contact,$groups);
+ if(get_pconfig($a->profile['profile_uid'],'system','channel_list_mode') && (! $mid))
+ $page_mode = 'list';
+ else
+ $page_mode = 'client';
+
if(($update) && (! $load)) {
if ($mid) {
$r = q("SELECT parent AS item_id from item where mid = '%s' and uid = %d AND item_restrict = 0
- AND (item_flags & %d) AND (item_flags & %d) $sql_extra limit 1",
+ AND (item_flags & %d) > 0 AND (item_flags & %d) > 0 $sql_extra limit 1",
dbesc($mid),
intval($a->profile['profile_uid']),
intval(ITEM_WALL),
intval(ITEM_UNSEEN)
);
} else {
- $r = q("SELECT distinct parent AS `item_id` from item
+ $r = q("SELECT distinct parent AS `item_id`, created from item
left join abook on item.author_xchan = abook.abook_xchan
WHERE uid = %d AND item_restrict = 0
- AND (item_flags & %d) AND ( item_flags & %d )
+ AND (item_flags & %d) > 0 AND ( item_flags & %d ) > 0
AND ((abook.abook_flags & %d) = 0 or abook.abook_flags is null)
$sql_extra
ORDER BY created DESC",
@@ -165,10 +171,12 @@ function channel_content(&$a, $update = 0, $load = false) {
}
else {
-
if(x($category)) {
$sql_extra .= protect_sprintf(term_query('item', $category, TERM_CATEGORY));
}
+ if(x($hashtags)) {
+ $sql_extra .= protect_sprintf(term_query('item', $hashtags, TERM_HASHTAG));
+ }
if($datequery) {
$sql_extra2 .= protect_sprintf(sprintf(" AND item.created <= '%s' ", dbesc(datetime_convert(date_default_timezone_get(),'',$datequery))));
@@ -179,12 +187,12 @@ function channel_content(&$a, $update = 0, $load = false) {
$itemspage = get_pconfig(local_user(),'system','itemspage');
$a->set_pager_itemspage(((intval($itemspage)) ? $itemspage : 20));
- $pager_sql = sprintf(" LIMIT %d, %d ",intval($a->pager['start']), intval($a->pager['itemspage']));
+ $pager_sql = sprintf(" LIMIT %d OFFSET %d ", intval($a->pager['itemspage']), intval($a->pager['start']));
if($load || ($_COOKIE['jsAvailable'] != 1)) {
if ($mid) {
$r = q("SELECT parent AS item_id from item where mid = '%s' and uid = %d AND item_restrict = 0
- AND (item_flags & %d) $sql_extra limit 1",
+ AND (item_flags & %d)>0 $sql_extra limit 1",
dbesc($mid),
intval($a->profile['profile_uid']),
intval(ITEM_WALL)
@@ -194,10 +202,10 @@ function channel_content(&$a, $update = 0, $load = false) {
}
} else {
- $r = q("SELECT distinct id AS item_id FROM item
+ $r = q("SELECT distinct id AS item_id, created FROM item
left join abook on item.author_xchan = abook.abook_xchan
WHERE uid = %d AND item_restrict = 0
- AND (item_flags & %d) and (item_flags & %d)
+ AND (item_flags & %d)>0 and (item_flags & %d)>0
AND ((abook.abook_flags & %d) = 0 or abook.abook_flags is null)
$sql_extra $sql_extra2
ORDER BY created DESC $pager_sql ",
@@ -246,9 +254,14 @@ function channel_content(&$a, $update = 0, $load = false) {
// This is ugly, but we can't pass the profile_uid through the session to the ajax updater,
// because browser prefetching might change it on us. We have to deliver it with the page.
+ $maxheight = get_pconfig($a->profile['profile_uid'],'system','channel_divmore_height');
+ if(! $maxheight)
+ $maxheight = 400;
+
$o .= '<div id="live-channel"></div>' . "\r\n";
$o .= "<script> var profile_uid = " . $a->profile['profile_uid']
- . "; var netargs = '?f='; var profile_page = " . $a->pager['page'] . "; </script>\r\n";
+ . "; var netargs = '?f='; var profile_page = " . $a->pager['page']
+ . "; divmore_height = " . intval($maxheight) . "; </script>\r\n";
$a->page['htmlhead'] .= replace_macros(get_markup_template("build_query.tpl"),array(
'$baseurl' => z_root(),
@@ -271,6 +284,7 @@ function channel_content(&$a, $update = 0, $load = false) {
'$list' => ((x($_REQUEST,'list')) ? intval($_REQUEST['list']) : 0),
'$file' => '',
'$cats' => (($category) ? $category : ''),
+ '$tags' => (($hashtags) ? $hashtags : ''),
'$mid' => $mid,
'$dend' => $datequery,
'$dbegin' => $datequery2
@@ -279,12 +293,31 @@ function channel_content(&$a, $update = 0, $load = false) {
}
+ $update_unseen = '';
+
+ if($page_mode === 'list') {
+ /**
+ * in "list mode", only mark the parent item and any like activities as "seen".
+ * We won't distinguish between comment likes and post likes. The important thing
+ * is that the number of unseen comments will be accurate. The SQL to separate the
+ * comment likes could also get somewhat hairy.
+ */
- if($is_owner) {
+ if($parents_str) {
+ $update_unseen = " AND ( id IN ( " . dbesc($parents_str) . " )";
+ $update_unseen .= " OR ( parent IN ( " . dbesc($parents_str) . " ) AND verb in ( '" . dbesc(ACTIVITY_LIKE) . "','" . dbesc(ACTIVITY_DISLIKE) . "' ))) ";
+ }
+ }
+ else {
+ if($parents_str) {
+ $update_unseen = " AND parent IN ( " . dbesc($parents_str) . " )";
+ }
+ }
- $r = q("UPDATE item SET item_flags = (item_flags ^ %d)
- WHERE (item_flags & %d) AND (item_flags & %d) AND uid = %d ",
+ if($is_owner && $update_unseen) {
+ $r = q("UPDATE item SET item_flags = (item_flags & ~%d)
+ WHERE (item_flags & %d) > 0 AND (item_flags & %d) > 0 AND uid = %d $update_unseen",
intval(ITEM_UNSEEN),
intval(ITEM_UNSEEN),
intval(ITEM_WALL),
@@ -294,7 +327,7 @@ function channel_content(&$a, $update = 0, $load = false) {
if($_COOKIE['jsAvailable'] == 1) {
- $o .= conversation($a,$items,'channel',$update,'client');
+ $o .= conversation($a,$items,'channel',$update,$page_mode);
} else {
$o .= conversation($a,$items,'channel',$update,'traditional');
}
diff --git a/mod/chanview.php b/mod/chanview.php
index 449a98bb1..3bf0f3268 100644
--- a/mod/chanview.php
+++ b/mod/chanview.php
@@ -74,15 +74,19 @@ function chanview_content(&$a) {
}
if(! $a->poi) {
- notice( t('Channel not found.') . EOL);
- return;
+// We don't know who this is, and we can't figure it out from the URL
+// On the plus side, there's a good chance we know somebody else at that
+// hub so sending them there with a Zid will probably work anyway.
+ $url = ($_REQUEST['url']);
+ if($observer)
+ $url = zid($url);
}
-
+ if ($a->poi) {
$url = $a->poi['xchan_url'];
if($observer)
$url = zid($url);
-
+ }
// let somebody over-ride the iframed viewport presentation
// or let's just declare this a failed experiment.
@@ -97,4 +101,4 @@ function chanview_content(&$a) {
// return $o;
-} \ No newline at end of file
+}
diff --git a/mod/chatsvc.php b/mod/chatsvc.php
index 43aa3d3c0..44225e6dd 100644
--- a/mod/chatsvc.php
+++ b/mod/chatsvc.php
@@ -73,7 +73,7 @@ function chatsvc_content(&$a) {
intval($a->data['chat']['uid'])
);
- $r = q("update chatpresence set cp_status = '%s', cp_last = '%s' where cp_room = %d and cp_xchan = '%s' and cp_client = '%s' limit 1",
+ $r = q("update chatpresence set cp_status = '%s', cp_last = '%s' where cp_room = %d and cp_xchan = '%s' and cp_client = '%s'",
dbesc($status),
dbesc(datetime_convert()),
intval($room_id),
@@ -141,7 +141,7 @@ function chatsvc_content(&$a) {
}
}
- $r = q("update chatpresence set cp_last = '%s' where cp_room = %d and cp_xchan = '%s' and cp_client = '%s' limit 1",
+ $r = q("update chatpresence set cp_last = '%s' where cp_room = %d and cp_xchan = '%s' and cp_client = '%s'",
dbesc(datetime_convert()),
intval($a->data['chat']['room_id']),
dbesc(get_observer_hash()),
diff --git a/mod/cloud.php b/mod/cloud.php
index 3734f769a..27724f6b0 100644
--- a/mod/cloud.php
+++ b/mod/cloud.php
@@ -1,31 +1,35 @@
<?php
/**
* @file mod/cloud.php
- * @brief Initialize Red Matrix's cloud (SabreDAV)
+ * @brief Initialize RedMatrix's cloud (SabreDAV).
*
+ * Module for accessing the DAV storage area.
*/
- use Sabre\DAV;
- require_once('vendor/autoload.php');
+use Sabre\DAV;
+use RedMatrix\RedDAV;
- // workaround for HTTP-auth in CGI mode
- if(x($_SERVER,'REDIRECT_REMOTE_USER')) {
- $userpass = base64_decode(substr($_SERVER["REDIRECT_REMOTE_USER"], 6)) ;
- if(strlen($userpass)) {
- list($name, $password) = explode(':', $userpass);
- $_SERVER['PHP_AUTH_USER'] = $name;
- $_SERVER['PHP_AUTH_PW'] = $password;
- }
- }
+// composer autoloader for SabreDAV
+require_once('vendor/autoload.php');
- if(x($_SERVER,'HTTP_AUTHORIZATION')) {
- $userpass = base64_decode(substr($_SERVER["HTTP_AUTHORIZATION"], 6)) ;
- if(strlen($userpass)) {
- list($name, $password) = explode(':', $userpass);
- $_SERVER['PHP_AUTH_USER'] = $name;
- $_SERVER['PHP_AUTH_PW'] = $password;
- }
+// workaround for HTTP-auth in CGI mode
+if (x($_SERVER, 'REDIRECT_REMOTE_USER')) {
+ $userpass = base64_decode(substr($_SERVER["REDIRECT_REMOTE_USER"], 6)) ;
+ if(strlen($userpass)) {
+ list($name, $password) = explode(':', $userpass);
+ $_SERVER['PHP_AUTH_USER'] = $name;
+ $_SERVER['PHP_AUTH_PW'] = $password;
}
+}
+
+if (x($_SERVER, 'HTTP_AUTHORIZATION')) {
+ $userpass = base64_decode(substr($_SERVER["HTTP_AUTHORIZATION"], 6)) ;
+ if(strlen($userpass)) {
+ list($name, $password) = explode(':', $userpass);
+ $_SERVER['PHP_AUTH_USER'] = $name;
+ $_SERVER['PHP_AUTH_PW'] = $password;
+ }
+}
/**
* @brief Fires up the SabreDAV server.
@@ -33,54 +37,61 @@
* @param App &$a
*/
function cloud_init(&$a) {
+ // call ($currenttheme)_init since we're operating outside of index.php
+ $theme_info_file = "view/theme/" . current_theme() . "/php/theme.php";
+ if (file_exists($theme_info_file)){
+ require_once($theme_info_file);
+ if (function_exists(str_replace('-', '_', current_theme()) . '_init')) {
+ $func = str_replace('-', '_', current_theme()) . '_init';
+ $func($a);
+ }
+ }
require_once('include/reddav.php');
- if(! is_dir('store'))
- os_mkdir('store',STORAGE_DEFAULT_PERMISSIONS,false);
+ if (! is_dir('store'))
+ os_mkdir('store', STORAGE_DEFAULT_PERMISSIONS, false);
$which = null;
- if(argc() > 1)
+ if (argc() > 1)
$which = argv(1);
$profile = 0;
- $channel = $a->get_channel();
- $a->page['htmlhead'] .= '<link rel="alternate" type="application/atom+xml" href="' . $a->get_baseurl() . '/feed/' . $which . '" />' . "\r\n" ;
+ $a->page['htmlhead'] .= '<link rel="alternate" type="application/atom+xml" href="' . $a->get_baseurl() . '/feed/' . $which . '" />' . "\r\n";
- if($which)
+ if ($which)
profile_load($a, $which, $profile);
- $auth = new RedBasicAuth();
+ $auth = new RedDAV\RedBasicAuth();
$ob_hash = get_observer_hash();
- if($ob_hash) {
- if(local_user()) {
+ if ($ob_hash) {
+ if (local_user()) {
$channel = $a->get_channel();
$auth->setCurrentUser($channel['channel_address']);
- $auth->channel_name = $channel['channel_address'];
$auth->channel_id = $channel['channel_id'];
$auth->channel_hash = $channel['channel_hash'];
$auth->channel_account_id = $channel['channel_account_id'];
if($channel['channel_timezone'])
- $auth->timezone = $channel['channel_timezone'];
+ $auth->setTimezone($channel['channel_timezone']);
}
$auth->observer = $ob_hash;
}
- if($_GET['davguest'])
+ if ($_GET['davguest'])
$_SESSION['davguest'] = true;
- $_SERVER['QUERY_STRING'] = str_replace(array('?f=','&f='),array('',''),$_SERVER['QUERY_STRING']);
+ $_SERVER['QUERY_STRING'] = str_replace(array('?f=', '&f='), array('', ''), $_SERVER['QUERY_STRING']);
$_SERVER['QUERY_STRING'] = strip_zids($_SERVER['QUERY_STRING']);
- $_SERVER['QUERY_STRING'] = preg_replace('/[\?&]davguest=(.*?)([\?&]|$)/ism','',$_SERVER['QUERY_STRING']);
+ $_SERVER['QUERY_STRING'] = preg_replace('/[\?&]davguest=(.*?)([\?&]|$)/ism', '', $_SERVER['QUERY_STRING']);
- $_SERVER['REQUEST_URI'] = str_replace(array('?f=','&f='),array('',''),$_SERVER['REQUEST_URI']);
+ $_SERVER['REQUEST_URI'] = str_replace(array('?f=', '&f='), array('', ''), $_SERVER['REQUEST_URI']);
$_SERVER['REQUEST_URI'] = strip_zids($_SERVER['REQUEST_URI']);
- $_SERVER['REQUEST_URI'] = preg_replace('/[\?&]davguest=(.*?)([\?&]|$)/ism','',$_SERVER['REQUEST_URI']);
+ $_SERVER['REQUEST_URI'] = preg_replace('/[\?&]davguest=(.*?)([\?&]|$)/ism', '', $_SERVER['REQUEST_URI']);
- $rootDirectory = new RedDirectory('/', $auth);
+ $rootDirectory = new RedDAV\RedDirectory('/', $auth);
// A SabreDAV server-object
$server = new DAV\Server($rootDirectory);
@@ -90,46 +101,53 @@ function cloud_init(&$a) {
$server->addPlugin($lockPlugin);
- // The next section of code allows us to bypass prompting for http-auth if a FILE is being accessed anonymously and permissions
- // allow this. This way one can create hotlinks to public media files in their cloud and anonymous viewers won't get asked to login.
- // If a DIRECTORY is accessed or there are permission issues accessing the file and we aren't previously authenticated via zot,
- // prompt for HTTP-auth. This will be the default case for mounting a DAV directory.
- // In order to avoid prompting for passwords for viewing a DIRECTORY, add the URL query parameter 'davguest=1'
+ // The next section of code allows us to bypass prompting for http-auth if a
+ // FILE is being accessed anonymously and permissions allow this. This way
+ // one can create hotlinks to public media files in their cloud and anonymous
+ // viewers won't get asked to login.
+ // If a DIRECTORY is accessed or there are permission issues accessing the
+ // file and we aren't previously authenticated via zot, prompt for HTTP-auth.
+ // This will be the default case for mounting a DAV directory.
+ // In order to avoid prompting for passwords for viewing a DIRECTORY, add
+ // the URL query parameter 'davguest=1'.
$isapublic_file = false;
$davguest = ((x($_SESSION, 'davguest')) ? true : false);
- if((! $auth->observer) && ($_SERVER['REQUEST_METHOD'] === 'GET')) {
+ if ((! $auth->observer) && ($_SERVER['REQUEST_METHOD'] === 'GET')) {
try {
$x = RedFileData('/' . $a->cmd, $auth);
- if($x instanceof RedFile)
+ if($x instanceof RedDAV\RedFile)
$isapublic_file = true;
}
- catch ( Exception $e ) {
+ catch (Exception $e) {
$isapublic_file = false;
}
}
- if((! $auth->observer) && (! $isapublic_file) && (! $davguest)) {
+ if ((! $auth->observer) && (! $isapublic_file) && (! $davguest)) {
try {
- $auth->Authenticate($server, t('Red Matrix - Guests: Username: {your email address}, Password: +++'));
+ $auth->Authenticate($server, t('RedMatrix - Guests: Username: {your email address}, Password: +++'));
}
- catch ( Exception $e) {
+ catch (Exception $e) {
logger('mod_cloud: auth exception' . $e->getMessage());
http_status_exit($e->getHTTPCode(), $e->getMessage());
}
}
-
+ require_once('include/RedDAV/RedBrowser.php');
// provide a directory view for the cloud in Red Matrix
- $browser = new RedBrowser($auth);
-
+ $browser = new RedDAV\RedBrowser($auth);
$auth->setBrowserPlugin($browser);
$server->addPlugin($browser);
+ // Experimental QuotaPlugin
+// require_once('include/RedDAV/QuotaPlugin.php');
+// $server->addPlugin(new RedDAV\QuotaPlugin($auth));
+
// All we need to do now, is to fire up the server
$server->exec();
killme();
-} \ No newline at end of file
+}
diff --git a/mod/connect.php b/mod/connect.php
index f7748bcaf..396fca645 100644
--- a/mod/connect.php
+++ b/mod/connect.php
@@ -38,7 +38,8 @@ function connect_post(&$a) {
$text = escape_tags($_POST['text']);
if($has_premium != $premium) {
- $r = q("update channel set channel_pageflags = ( channel_pageflags ^ %d ) where channel_id = %d limit 1",
+ $r = q("update channel set channel_pageflags = ( channel_pageflags %s %d ) where channel_id = %d",
+ db_getfunc('^'),
intval(PAGE_PREMIUM),
intval(local_user())
);
diff --git a/mod/connections.php b/mod/connections.php
index 1875ed908..70e28913a 100644
--- a/mod/connections.php
+++ b/mod/connections.php
@@ -81,7 +81,7 @@ function connections_post(&$a) {
}
$r = q("UPDATE abook SET abook_profile = '%s', abook_my_perms = %d , abook_closeness = %d, abook_flags = %d
- where abook_id = %d AND abook_channel = %d LIMIT 1",
+ where abook_id = %d AND abook_channel = %d",
dbesc($profile_id),
intval($abook_my_perms),
intval($closeness),
@@ -213,7 +213,7 @@ function connections_content(&$a) {
nav_set_selected('intros');
break;
case 'ifpending':
- $r = q("SELECT COUNT(abook.abook_id) AS total FROM abook left join xchan on abook.abook_xchan = xchan.xchan_hash where abook_channel = %d and (abook_flags & %d) and not ((abook_flags & %d) or (xchan_flags & %d))",
+ $r = q("SELECT COUNT(abook.abook_id) AS total FROM abook left join xchan on abook.abook_xchan = xchan.xchan_hash where abook_channel = %d and (abook_flags & %d)>0 and not ((abook_flags & %d)>0 or (xchan_flags & %d)>0)",
intval(local_user()),
intval(ABOOK_FLAG_PENDING),
intval(ABOOK_FLAG_SELF|ABOOK_FLAG_IGNORED),
@@ -250,13 +250,13 @@ function connections_content(&$a) {
}
- $sql_extra = (($search_flags) ? " and ( abook_flags & " . $search_flags . " ) " : "");
+ $sql_extra = (($search_flags) ? " and ( abook_flags & " . $search_flags . " )>0 " : "");
if(argv(1) === 'pending')
- $sql_extra .= " and not ( abook_flags & " . ABOOK_FLAG_IGNORED . " ) ";
+ $sql_extra .= " and not ( abook_flags & " . ABOOK_FLAG_IGNORED . " )>0 ";
}
else {
- $sql_extra = " and not ( abook_flags & " . ABOOK_FLAG_BLOCKED . " ) ";
+ $sql_extra = " and not ( abook_flags & " . ABOOK_FLAG_BLOCKED . " )>0 ";
$unblocked = true;
}
@@ -337,9 +337,12 @@ function connections_content(&$a) {
}
$sql_extra .= (($searching) ? protect_sprintf(" AND xchan_name like '%$search_txt%' ") : "");
+ if($_REQUEST['gid']) {
+ $sql_extra .= " and xchan_hash in ( select xchan from group_member where gid = " . intval($_REQUEST['gid']) . " and uid = " . intval(local_user()) . " ) ";
+ }
$r = q("SELECT COUNT(abook.abook_id) AS total FROM abook left join xchan on abook.abook_xchan = xchan.xchan_hash
- where abook_channel = %d and not (abook_flags & %d) and not (xchan_flags & %d ) $sql_extra $sql_extra2 ",
+ where abook_channel = %d and not (abook_flags & %d)>0 and not (xchan_flags & %d )>0 $sql_extra $sql_extra2 ",
intval(local_user()),
intval(ABOOK_FLAG_SELF),
intval(XCHAN_FLAGS_DELETED|XCHAN_FLAGS_ORPHAN)
@@ -350,12 +353,12 @@ function connections_content(&$a) {
}
$r = q("SELECT abook.*, xchan.* FROM abook left join xchan on abook.abook_xchan = xchan.xchan_hash
- WHERE abook_channel = %d and not (abook_flags & %d) and not ( xchan_flags & %d) $sql_extra $sql_extra2 ORDER BY xchan_name LIMIT %d , %d ",
+ WHERE abook_channel = %d and not (abook_flags & %d)>0 and not ( xchan_flags & %d)>0 $sql_extra $sql_extra2 ORDER BY xchan_name LIMIT %d OFFSET %d ",
intval(local_user()),
intval(ABOOK_FLAG_SELF),
intval(XCHAN_FLAGS_DELETED|XCHAN_FLAGS_ORPHAN),
- intval($a->pager['start']),
- intval($a->pager['itemspage'])
+ intval($a->pager['itemspage']),
+ intval($a->pager['start'])
);
$contacts = array();
@@ -366,7 +369,7 @@ function connections_content(&$a) {
if($rr['xchan_url']) {
$contacts[] = array(
'img_hover' => sprintf( t('%1$s [%2$s]'),$rr['xchan_name'],$rr['xchan_url']),
- 'edit_hover' => t('Edit contact'),
+ 'edit_hover' => t('Edit connection'),
'id' => $rr['abook_id'],
'alt_text' => $alt_text,
'dir_icon' => $dir_icon,
@@ -375,6 +378,7 @@ function connections_content(&$a) {
'username' => $rr['xchan_name'],
'classes' => (($rr['abook_flags'] & ABOOK_FLAG_ARCHIVED) ? 'archived' : ''),
'link' => z_root() . '/connedit/' . $rr['abook_id'],
+ 'edit' => t('Edit'),
'url' => chanlink_url($rr['xchan_url']),
'network' => network_to_name($rr['network']),
);
@@ -382,20 +386,40 @@ function connections_content(&$a) {
}
}
- $o .= replace_macros(get_markup_template('connections.tpl'),array(
- '$header' => t('Connections') . (($head) ? ' - ' . $head : ''),
- '$tabs' => $t,
- '$total' => $total,
- '$search' => $search_hdr,
- '$desc' => t('Search your connections'),
- '$finding' => (($searching) ? t('Finding: ') . "'" . $search . "'" : ""),
- '$submit' => t('Find'),
- '$edit' => t('Edit'),
- '$cmd' => $a->cmd,
- '$contacts' => $contacts,
- '$paginate' => paginate($a),
-
- ));
-
+
+ if($_REQUEST['aj']) {
+ if($contacts) {
+ $o = replace_macros(get_markup_template('contactsajax.tpl'),array(
+ '$contacts' => $contacts,
+ '$edit' => t('Edit'),
+ ));
+ }
+ else {
+ $o = '<div id="content-complete"></div>';
+ }
+ echo $o;
+ killme();
+ }
+ else {
+ $o .= "<script> var page_query = '" . $_GET['q'] . "'; var extra_args = '" . extra_query_args() . "' ; </script>";
+ $o .= replace_macros(get_markup_template('connections.tpl'),array(
+ '$header' => t('Connections') . (($head) ? ' - ' . $head : ''),
+ '$tabs' => $t,
+ '$total' => $total,
+ '$search' => $search_hdr,
+ '$desc' => t('Search your connections'),
+ '$finding' => (($searching) ? t('Finding: ') . "'" . $search . "'" : ""),
+ '$submit' => t('Find'),
+ '$edit' => t('Edit'),
+ '$cmd' => $a->cmd,
+ '$contacts' => $contacts,
+ '$paginate' => paginate($a),
+
+ ));
+ }
+
+ if(! $contacts)
+ $o .= '<div id="content-complete"></div>';
+
return $o;
}
diff --git a/mod/connedit.php b/mod/connedit.php
index b9f0299e2..6729029ac 100644
--- a/mod/connedit.php
+++ b/mod/connedit.php
@@ -68,6 +68,14 @@ function connedit_post(&$a) {
call_hooks('contact_edit_post', $_POST);
+ if($orig_record[0]['abook_flags'] & ABOOK_FLAG_SELF) {
+ $autoperms = intval($_POST['autoperms']);
+ }
+ else {
+ $autoperms = null;
+ }
+
+
$profile_id = $_POST['profile_assign'];
if($profile_id) {
$r = q("SELECT profile_guid FROM profile WHERE profile_guid = '%s' AND `uid` = %d LIMIT 1",
@@ -109,7 +117,7 @@ function connedit_post(&$a) {
}
$r = q("UPDATE abook SET abook_profile = '%s', abook_my_perms = %d , abook_closeness = %d, abook_flags = %d
- where abook_id = %d AND abook_channel = %d LIMIT 1",
+ where abook_id = %d AND abook_channel = %d",
dbesc($profile_id),
intval($abook_my_perms),
intval($closeness),
@@ -118,13 +126,14 @@ function connedit_post(&$a) {
intval(local_user())
);
- if($orig_record[0]['abook_profile'] != $profile_id) { //Update profile photo permissions
+ if($orig_record[0]['abook_profile'] != $profile_id) {
+ //Update profile photo permissions
- logger('As a new profile was assigned updateing profile photos');
- require_once('mod/profile_photo.php');
- profile_photo_set_profile_perms($profile_id);
+ logger('A new profile was assigned - updating profile photos');
+ require_once('mod/profile_photo.php');
+ profile_photo_set_profile_perms($profile_id);
- }
+ }
if($r)
@@ -147,12 +156,44 @@ function connedit_post(&$a) {
group_add_member(local_user(),'',$a->poi['abook_xchan'],$g['id']);
}
-
-
// Check if settings permit ("post new friend activity" is allowed, and
// friends in general or this friend in particular aren't hidden)
// and send out a new friend activity
- // TODO
+
+ $pr = q("select * from profile where uid = %d and is_default = 1 and hide_friends = 0",
+ intval($channel['channel_id'])
+ );
+ if(($pr) && (! ($abook_flags & ABOOK_FLAG_HIDDEN))
+ && (intval(get_pconfig($channel['channel_id'],'system','post_newfriend')))) {
+ $xarr = array();
+ $xarr['verb'] = ACTIVITY_FRIEND;
+ $xarr['item_flags'] = ITEM_WALL|ITEM_ORIGIN|ITEM_THREAD_TOP;
+ $xarr['owner_xchan'] = $xarr['author_xchan'] = $channel['channel_hash'];
+ $xarr['allow_cid'] = $channel['channel_allow_cid'];
+ $xarr['allow_gid'] = $channel['channel_allow_gid'];
+ $xarr['deny_cid'] = $channel['channel_deny_cid'];
+ $xarr['deny_gid'] = $channel['channel_deny_gid'];
+ $xarr['item_private'] = (($xarr['allow_cid']||$xarr['allow_gid']||$xarr['deny_cid']||$xarr['deny_gid']) ? 1 : 0);
+ $obj = array(
+ 'type' => ACTIVITY_OBJ_PERSON,
+ 'title' => $a->poi['xchan_name'],
+ 'id' => $a->poi['xchan_hash'],
+ 'link' => array(
+ array('rel' => 'alternate', 'type' => 'text/html', 'href' => $a->poi['xchan_url']),
+ array('rel' => 'photo', 'type' => $a->poi['xchan_photo_mimetype'], 'href' => $a->poi['xchan_photo_l'])
+ ),
+ );
+ $xarr['object'] = json_encode($obj);
+ $xarr['obj_type'] = ACTIVITY_OBJ_PERSON;
+
+ $xarr['body'] = '[zrl=' . $channel['xchan_url'] . ']' . $channel['xchan_name'] . '[/zrl]' . ' ' . t('is now connected to') . ' ' . '[zrl=' . $a->poi['xchan_url'] . ']' . $a->poi['xchan_name'] . '[/zrl]';
+
+ $xarr['body'] .= "\n\n\n" . '[zrl=' . $a->poi['xchan_url'] . '][zmg=80x80]' . $a->poi['xchan_photo_m'] . '[/zmg][/zrl]';
+
+ post_activity_item($xarr);
+
+ }
+
// pull in a bit of content if there is any to pull in
proc_run('php','include/onepoll.php',$contact_id);
@@ -175,6 +216,10 @@ function connedit_post(&$a) {
$arr = array('channel_id' => local_user(), 'abook' => $a->poi);
call_hooks('accept_follow', $arr);
}
+dbg(1);
+ if(! is_null($autoperms))
+ set_pconfig(local_user(),'system','autoperms',(($autoperms) ? $abook_my_perms : 0));
+dbg(0);
connedit_clone($a);
@@ -222,6 +267,30 @@ function connedit_content(&$a) {
return login();
}
+ $my_perms = 0;
+ $role = get_pconfig(local_user(),'system','permissions_role');
+ if($role) {
+ $x = get_role_perms($role);
+ if($x['perms_accept'])
+ $my_perms = $x['perms_accept'];
+ else
+ $my_perms = get_channel_default_perms(local_user());
+ }
+ if($my_perms) {
+ $o .= "<script>function connectDefaultShare() {
+ \$('.abook-edit-me').each(function() {
+ if(! $(this).is(':disabled'))
+ $(this).removeAttr('checked');
+ });\n\n";
+ $perms = get_perms();
+ foreach($perms as $p => $v) {
+ if($my_perms & $v[1]) {
+ $o .= "\$('#me_id_perms_" . $p . "').attr('checked','checked'); \n";
+ }
+ }
+ $o .= "abook_perms_msg(); }\n</script>\n";
+ }
+
if(argc() == 3) {
$contact_id = intval(argv(1));
@@ -231,12 +300,10 @@ function connedit_content(&$a) {
$cmd = argv(2);
$orig_record = q("SELECT abook.*, xchan.* FROM abook left join xchan on abook_xchan = xchan_hash
- WHERE abook_id = %d AND abook_channel = %d AND NOT ( abook_flags & %d ) and not ( abook_flags & %d ) LIMIT 1",
+ WHERE abook_id = %d AND abook_channel = %d AND NOT ( abook_flags & %d )>0 LIMIT 1",
intval($contact_id),
intval(local_user()),
- intval(ABOOK_FLAG_SELF),
- // allow drop even if pending, just duplicate the self query
- intval(($cmd === 'drop') ? ABOOK_FLAG_SELF : ABOOK_FLAG_PENDING)
+ intval(ABOOK_FLAG_SELF)
);
if(! count($orig_record)) {
@@ -306,7 +373,8 @@ function connedit_content(&$a) {
goaway($a->get_baseurl(true) . '/connedit/' . $contact_id);
}
- // We'll prevent somebody from unapproving a contact.
+ // We'll prevent somebody from unapproving an already approved contact.
+ // Though maybe somebody will want this eventually (??)
if($cmd === 'approve') {
if($orig_record[0]['abook_flags'] & ABOOK_FLAG_PENDING) {
@@ -326,11 +394,21 @@ function connedit_content(&$a) {
if($cmd === 'drop') {
require_once('include/Contact.php');
+
// FIXME
-// terminate_friendship($a->get_channel(),$orig_record[0]);
+// We need to send either a purge or a refresh packet to the other side (the channel being unfriended).
+// The issue is that the abook DB record _may_ get destroyed when we call contact_remove. As the notifier runs
+// in the background there could be a race condition preventing this packet from being sent in all cases.
+// PLACEHOLDER
contact_remove(local_user(), $orig_record[0]['abook_id']);
-// FIXME - send to clones
+ build_sync_packet(0 /* use the current local_user */,
+ array('abook' => array(
+ 'abook_xchan' => $orig_record[0]['abook_xchan'],
+ 'entry_deleted' => true)
+ )
+ );
+
info( t('Connection has been removed.') . EOL );
if(x($_SESSION,'return_url'))
goaway($a->get_baseurl(true) . '/' . $_SESSION['return_url']);
@@ -366,32 +444,34 @@ function connedit_content(&$a) {
'url' => $a->get_baseurl(true) . '/network/?f=&cid=' . $contact['abook_id'],
'sel' => '',
'title' => t('View recent posts and comments'),
- ),
+ )
+ );
+ $buttons = array(
array(
'label' => (($contact['abook_flags'] & ABOOK_FLAG_BLOCKED) ? t('Unblock') : t('Block')),
'url' => $a->get_baseurl(true) . '/connedit/' . $contact['abook_id'] . '/block',
'sel' => (($contact['abook_flags'] & ABOOK_FLAG_BLOCKED) ? 'active' : ''),
- 'title' => t('Block or Unblock this connection'),
+ 'title' => t('Block (or Unblock) all communications with this connection'),
),
array(
'label' => (($contact['abook_flags'] & ABOOK_FLAG_IGNORED) ? t('Unignore') : t('Ignore')),
'url' => $a->get_baseurl(true) . '/connedit/' . $contact['abook_id'] . '/ignore',
'sel' => (($contact['abook_flags'] & ABOOK_FLAG_IGNORED) ? 'active' : ''),
- 'title' => t('Ignore or Unignore this connection'),
+ 'title' => t('Ignore (or Unignore) all inbound communications from this connection'),
),
array(
'label' => (($contact['abook_flags'] & ABOOK_FLAG_ARCHIVED) ? t('Unarchive') : t('Archive')),
'url' => $a->get_baseurl(true) . '/connedit/' . $contact['abook_id'] . '/archive',
'sel' => (($contact['abook_flags'] & ABOOK_FLAG_ARCHIVED) ? 'active' : ''),
- 'title' => t('Archive or Unarchive this connection'),
+ 'title' => t('Archive (or Unarchive) this connection - mark channel dead but keep content'),
),
array(
'label' => (($contact['abook_flags'] & ABOOK_FLAG_HIDDEN) ? t('Unhide') : t('Hide')),
'url' => $a->get_baseurl(true) . '/connedit/' . $contact['abook_id'] . '/hide',
'sel' => (($contact['abook_flags'] & ABOOK_FLAG_HIDDEN) ? 'active' : ''),
- 'title' => t('Hide or Unhide this connection'),
+ 'title' => t('Hide or Unhide this connection from your other connections'),
),
array(
@@ -426,6 +506,7 @@ function connedit_content(&$a) {
$slider_tpl = get_markup_template('contact_slider.tpl');
$slide = replace_macros($slider_tpl,array(
'$me' => t('Me'),
+ '$min' => 1,
'$val' => (($contact['abook_closeness']) ? $contact['abook_closeness'] : 99),
'$intimate' => t('Best Friends'),
'$friends' => t('Friends'),
@@ -452,21 +533,26 @@ function connedit_content(&$a) {
if((! $self) && ($existing[$k]))
$thisperm = "1";
- $perms[] = array('perms_' . $k, $v[3], (($contact['abook_their_perms'] & $v[1]) ? "1" : ""),$thisperm, $v[1], (($channel[$v[0]] == PERMS_SPECIFIC) ? '' : '1'), $v[4]);
+ $perms[] = array('perms_' . $k, $v[3], (($contact['abook_their_perms'] & $v[1]) ? "1" : ""),$thisperm, $v[1], (($channel[$v[0]] == PERMS_SPECIFIC || $self) ? '' : '1'), $v[4]);
}
$o .= replace_macros($tpl,array(
- '$header' => (($self) ? t('Automatic Permissions Settings') : sprintf( t('Connections: settings for %s'),$contact['xchan_name'])),
+ '$header' => (($self) ? t('Connection Default Permissions') : sprintf( t('Connections: settings for %s'),$contact['xchan_name'])),
+ '$autoperms' => array('autoperms',t('Apply these permissions automatically'), ((get_pconfig(local_user(),'system','autoperms')) ? 1 : 0), ''),
'$addr' => $contact['xchan_addr'],
'$notself' => (($self) ? '' : '1'),
'$self' => (($self) ? '1' : ''),
- '$autolbl' => t('When receiving a channel introduction, any permissions provided here will be applied to the new connection automatically and the introduction approved. Leave this page if you do not wish to use this feature.'),
+ '$autolbl' => t('Apply the permissions indicated on this page to all new connections.'),
+ '$buttons' => (($self) ? '' : $buttons),
'$viewprof' => t('View Profile'),
'$lbl_slider' => t('Slide to adjust your degree of friendship'),
'$slide' => $slide,
'$tabs' => $t,
'$tab_str' => $tab_str,
+ '$perms_step1' => t('<p>Step #1. (Completed).</p><p>Create connection with minimal or no permissions.</p>'),
+ '$perms_step2' => t('<p>Step #2. (Incomplete).</p><p>Review and/or edit the default individual permissions on this page, if desired.</p>'),
+ '$perms_step3' => t('<p>Step #3. (Incomplete).</p><p>Submit this page to apply the selected permissions.</p><p>Until this is complete, this connection may have insufficient permission to communicate with you.</p>'),
'$is_pending' => (($contact['abook_flags'] & ABOOK_FLAG_PENDING) ? 1 : ''),
'$unapproved' => $unapproved,
'$inherited' => t('inherited'),
@@ -518,12 +604,8 @@ function connedit_content(&$a) {
'$ignored' => (($contact['readonly']) ? t('Currently ignored') : ''),
'$archived' => (($contact['archive']) ? t('Currently archived') : ''),
'$pending' => (($contact['archive']) ? t('Currently pending') : ''),
- '$hidden' => array('hidden', t('Hide this contact from others'), ($contact['hidden'] == 1), t('Replies/likes to your public posts <strong>may</strong> still be visible')),
- '$photo' => $contact['photo'],
'$name' => $contact['name'],
- '$dir_icon' => $dir_icon,
'$alt_text' => $alt_text,
- '$sparkle' => $sparkle,
'$url' => $url
));
diff --git a/mod/contactgroup.php b/mod/contactgroup.php
index 8b23f9f10..4515c4c4c 100644
--- a/mod/contactgroup.php
+++ b/mod/contactgroup.php
@@ -9,8 +9,8 @@ function contactgroup_content(&$a) {
}
if((argc() > 2) && (intval(argv(1))) && (argv(2))) {
- $r = q("SELECT abook_xchan from abook where abook_xchan = '%s' and abook_channel = %d and not ( abook_flags & %d ) limit 1",
- dbesc(argv(2)),
+ $r = q("SELECT abook_xchan from abook where abook_xchan = '%s' and abook_channel = %d and not ( abook_flags & %d )>0 limit 1",
+ dbesc(base64url_decode(argv(2))),
intval(local_user()),
intval(ABOOK_FLAG_SELF)
);
diff --git a/mod/delegate.php b/mod/delegate.php
index e582b9387..c78898b7f 100644
--- a/mod/delegate.php
+++ b/mod/delegate.php
@@ -42,7 +42,7 @@ function delegate_content(&$a) {
if(x($_SESSION,'submanage') && intval($_SESSION['submanage']))
goaway($a->get_baseurl() . '/delegate');
- q("delete from manage where uid = %d and mid = %d limit 1",
+ q("delete from manage where uid = %d and mid = %d",
intval($a->argv[2]),
intval(local_user())
);
diff --git a/mod/directory.php b/mod/directory.php
index b11b0d410..4ceda293d 100644
--- a/mod/directory.php
+++ b/mod/directory.php
@@ -1,12 +1,19 @@
<?php
+require_once('include/socgraph.php');
require_once('include/dir_fns.php');
require_once('include/widgets.php');
-
+require_once('include/bbcode.php');
function directory_init(&$a) {
- $a->set_pager_itemspage(80);
+ $a->set_pager_itemspage(60);
+ if(x($_GET,'ignore')) {
+ q("insert into xign ( uid, xchan ) values ( %d, '%s' ) ",
+ intval(local_user()),
+ dbesc($_GET['ignore'])
+ );
+ }
}
function directory_content(&$a) {
@@ -31,8 +38,9 @@ function directory_content(&$a) {
if(x($_REQUEST,'safe'))
$safe_mode = (intval($_REQUEST['safe']));
-
-
+ $pubforums = null;
+ if(array_key_exists('pubforums',$_REQUEST))
+ $pubforums = intval($_REQUEST['pubforums']);
$o = '';
nav_set_selected('directory');
@@ -42,13 +50,38 @@ function directory_content(&$a) {
else
$search = ((x($_GET,'search')) ? notags(trim(rawurldecode($_GET['search']))) : '');
- $advanced = ((x($_REQUEST,'query')) ? notags(trim($_REQUEST['query'])) : '');
+
+ if(strpos($search,'=') && local_user() && get_pconfig(local_user(),'feature','expert'))
+ $advanced = $search;
+
$keywords = (($_GET['keywords']) ? $_GET['keywords'] : '');
+ // Suggest channels if no search terms or keywords are given
+ $suggest = (local_user() && x($_REQUEST,'suggest')) ? $_REQUEST['suggest'] : '';
+
+ if($suggest) {
+ $r = suggestion_query(local_user(),get_observer_hash());
+
+ // Remember in which order the suggestions were
+ $addresses = array();
+ $index = 0;
+ foreach($r as $rr) {
+ $addresses[$rr['xchan_addr']] = $index++;
+ }
+
+ // Build query to get info about suggested people
+ $advanced = '';
+ foreach(array_keys($addresses) as $address) {
+ $advanced .= "address=\"$address\" ";
+ }
+ // Remove last space in the advanced query
+ $advanced = rtrim($advanced);
+
+ }
+
$tpl = get_markup_template('directory_header.tpl');
-
$dirmode = intval(get_config('system','directory_mode'));
if(($dirmode == DIRECTORY_MODE_PRIMARY) || ($dirmode == DIRECTORY_MODE_STANDALONE)) {
@@ -91,11 +124,19 @@ function directory_content(&$a) {
$query .= '&keywords=' . urlencode($keywords);
if($advanced)
$query .= '&query=' . urlencode($advanced);
+ if(! is_null($pubforums))
+ $query .= '&pubforums=' . intval($pubforums);
+
+ if(! is_null($pubforums))
+ $query .= '&pubforums=' . intval($pubforums);
+
+ $sort_order = ((x($_REQUEST,'order')) ? $_REQUEST['order'] : 'normal');
- $sort_order = ((x($_REQUEST,'order')) ? $_REQUEST['order'] : '');
if($sort_order)
$query .= '&order=' . urlencode($sort_order);
+
+
if($a->pager['page'] != 1)
$query .= '&p=' . $a->pager['page'];
@@ -122,6 +163,10 @@ function directory_content(&$a) {
$pdesc = (($rr['description']) ? $rr['description'] . '<br />' : '');
$connect_link = ((local_user()) ? z_root() . '/follow?f=&url=' . urlencode($rr['address']) : '');
+ // Checking status is disabled ATM until someone checks the performance impact more carefully
+ //$online = remote_online_status($rr['address']);
+ $online = '';
+
if(in_array($rr['hash'],$contacts))
$connect_link = '';
@@ -142,8 +187,6 @@ function directory_content(&$a) {
if(($years = age($rr['birthday'],'UTC','')) != 0)
$details .= '<br />' . t('Age: ') . $years ;
}
- if(strlen($rr['gender']))
- $details .= '<br />' . t('Gender: ') . $rr['gender'];
$page_type = '';
@@ -155,18 +198,53 @@ function directory_content(&$a) {
|| (x($profile,'country') == 1))
$location = t('Location:');
- $gender = ((x($profile,'gender') == 1) ? t('Gender:') : False);
+ $gender = ((x($profile,'gender') == 1) ? t('Gender: ') . $profile['gender']: False);
- $marital = ((x($profile,'marital') == 1) ? t('Status:') : False);
+ $marital = ((x($profile,'marital') == 1) ? t('Status: ') . $profile['marital']: False);
- $homepage = ((x($profile,'homepage') == 1) ? t('Homepage:') : False);
-
- $about = ((x($profile,'about') == 1) ? t('About:') : False);
+ $homepage = ((x($profile,'homepage') == 1) ? t('Homepage: ') : False);
+ $homepageurl = ((x($profile,'homepage') == 1) ? $profile['homepage'] : '');
+
+ $hometown = ((x($profile,'hometown') == 1) ? t('Hometown: ') . $profile['hometown'] : False);
+
+ $about = ((x($profile,'about') == 1) ? t('About: ') . bbcode($profile['about']) : False);
+
+ $keywords = ((x($profile,'keywords')) ? $profile['keywords'] : '');
+
+ $out = '';
+
+ if($keywords) {
+ $keywords = str_replace(',',' ', $keywords);
+ $keywords = str_replace(' ',' ', $keywords);
+ $karr = explode(' ', $keywords);
+
+ if($karr) {
+ if(local_user()) {
+ $r = q("select keywords from profile where uid = %d and is_default = 1 limit 1",
+ intval(local_user())
+ );
+ if($r) {
+ $keywords = str_replace(',',' ', $r[0]['keywords']);
+ $keywords = str_replace(' ',' ', $keywords);
+ $marr = explode(' ', $keywords);
+ }
+ }
+ foreach($karr as $k) {
+ if(strlen($out))
+ $out .= ', ';
+ if($marr && in_arrayi($k,$marr))
+ $out .= '<strong>' . $k . '</strong>';
+ else
+ $out .= $k;
+ }
+ }
+ }
$entry = array(
'id' => ++$t,
'profile_link' => $profile_link,
+ 'public_forum' => $rr['public_forum'],
'photo' => $rr['photo'],
'hash' => $rr['hash'],
'alttext' => $rr['name'] . ' ' . $rr['address'],
@@ -174,48 +252,88 @@ function directory_content(&$a) {
'details' => $pdesc . $details,
'profile' => $profile,
'address' => $rr['address'],
+ 'nickname' => substr($rr['address'],0,strpos($rr['address'],'@')),
'location' => $location,
'gender' => $gender,
'pdesc' => $pdesc,
'marital' => $marital,
'homepage' => $homepage,
+ 'homepageurl' => linkify($homepageurl),
+ 'hometown' => $hometown,
'about' => $about,
'conn_label' => t('Connect'),
+ 'forum_label' => t('Public Forum:'),
'connect' => $connect_link,
+ 'online' => $online,
+ 'kw' => (($out) ? t('Keywords: ') : ''),
+ 'keywords' => $out,
+ 'ignlink' => $suggest ? $a->get_baseurl() . '/directory?ignore=' . $rr['hash'] : '',
+ 'ignore_label' => "Don't suggest",
);
$arr = array('contact' => $rr, 'entry' => $entry);
call_hooks('directory_item', $arr);
- $entries[] = $arr['entry'];
+ if($sort_order == '' && $suggest) {
+ $entries[$addresses[$rr['address']]] = $arr['entry']; // Use the same indexes as originally to get the best suggestion first
+ }
+ else {
+ $entries[] = $arr['entry'];
+ }
unset($profile);
unset($location);
}
+ ksort($entries); // Sort array by key so that foreach-constructs work as expected
+
if($j['keywords']) {
$a->data['directory_keywords'] = $j['keywords'];
}
-// logger('mod_directory: entries: ' . print_r($entries,true), LOGGER_DATA);
+ logger('mod_directory: entries: ' . print_r($entries,true), LOGGER_DATA);
- $o .= replace_macros($tpl, array(
- '$search' => $search,
- '$desc' => t('Find'),
- '$finddsc' => t('Finding:'),
- '$safetxt' => htmlspecialchars($search,ENT_QUOTES,'UTF-8'),
- '$entries' => $entries,
- '$dirlbl' => t('Directory'),
- '$submit' => t('Find')
- ));
+ if($_REQUEST['aj']) {
+ if($entries) {
+ $o = replace_macros(get_markup_template('directajax.tpl'),array(
+ '$entries' => $entries
+ ));
+ }
+ else {
+ $o = '<div id="content-complete"></div>';
+ }
+ echo $o;
+ killme();
+ }
+ else {
+ $maxheight = 175;
+
+ $o .= "<script> var page_query = '" . $_GET['q'] . "'; var extra_args = '" . extra_query_args() . "' ; divmore_height = " . intval($maxheight) . "; </script>";
+ $o .= replace_macros($tpl, array(
+ '$search' => $search,
+ '$desc' => t('Find'),
+ '$finddsc' => t('Finding:'),
+ '$safetxt' => htmlspecialchars($search,ENT_QUOTES,'UTF-8'),
+ '$entries' => $entries,
+ '$dirlbl' => $suggest ? t('Channel Suggestions') : t('Directory'),
+ '$submit' => t('Find'),
+ '$next' => alt_pager($a,$j['records'], t('next page'), t('previous page'))
- $o .= alt_pager($a,$j['records'], t('next page'), t('previous page'));
+ ));
+
+
+ }
}
else {
+ if($_REQUEST['aj']) {
+ $o = '<div id="content-complete"></div>';
+ echo $o;
+ killme();
+ }
if($a->pager['page'] == 1 && $j['records'] == 0 && strpos($search,'@')) {
goaway(z_root() . '/chanview/?f=&address=' . $search);
}
diff --git a/mod/dirprofile.php b/mod/dirprofile.php
deleted file mode 100644
index e9b12ada7..000000000
--- a/mod/dirprofile.php
+++ /dev/null
@@ -1,184 +0,0 @@
-<?php
-
-require_once('include/dir_fns.php');
-require_once('include/bbcode.php');
-
-function dirprofile_init(&$a) {
-
- if((get_config('system','block_public')) && (! local_user()) && (! remote_user())) {
- notice( t('Public access denied.') . EOL);
- return;
- }
-
- $hash = $_REQUEST['hash'];
- if(! $hash)
- return '';
-
- $o = '';
-
- $dirmode = intval(get_config('system','directory_mode'));
-
- if(($dirmode == DIRECTORY_MODE_PRIMARY) || ($dirmode == DIRECTORY_MODE_STANDALONE)) {
- $url = z_root() . '/dirsearch';
- }
- if(! $url) {
- $directory = find_upstream_directory($dirmode);
- $url = $directory['url'] . '/dirsearch';
- }
- logger('mod_directory: URL = ' . $url, LOGGER_DEBUG);
-
- $contacts = array();
-
- if(local_user()) {
- $x = q("select abook_xchan from abook where abook_channel = %d",
- intval(local_user())
- );
- if($x) {
- foreach($x as $xx)
- $contacts[] = $xx['abook_xchan'];
- }
- }
-
-
-
- if($url) {
-
- $query = $url . '?f=&hash=' . $hash;
-
- $x = z_fetch_url($query);
- logger('dirprofile: return from upstream: ' . print_r($x,true), LOGGER_DATA);
-
- if($x['success']) {
- $t = 0;
- $j = json_decode($x['body'],true);
- if($j) {
-
- if($j['results']) {
-
- $entries = array();
-
- $photo = 'thumb';
-
- foreach($j['results'] as $rr) {
-
- $profile_link = chanlink_url($rr['url']);
-
- $pdesc = (($rr['description']) ? $rr['description'] . '<br />' : '');
-
- $qrlink = zid($rr['url']);
- $connect_link = ((local_user()) ? z_root() . '/follow?f=&url=' . urlencode($rr['address']) : '');
-
- $online = remote_online_status($rr['address']);
-
-
- if(in_array($rr['hash'],$contacts))
- $connect_link = '';
-
- $details = '';
- if(strlen($rr['locale']))
- $details .= $rr['locale'];
- if(strlen($rr['region'])) {
- if(strlen($rr['locale']))
- $details .= ', ';
- $details .= $rr['region'];
- }
- if(strlen($rr['country'])) {
- if(strlen($details))
- $details .= ', ';
- $details .= $rr['country'];
- }
- if(strlen($rr['birthday'])) {
- if(($years = age($rr['birthday'],'UTC','')) != 0)
- $details .= '<br />' . t('Age: ') . $years ;
- }
- if(strlen($rr['gender']))
- $details .= '<br />' . t('Gender: ') . $rr['gender'];
-
- $page_type = '';
-
- $profile = $rr;
-
- if ((x($profile,'locale') == 1)
- || (x($profile,'region') == 1)
- || (x($profile,'postcode') == 1)
- || (x($profile,'country') == 1))
- $location = t('Location:');
-
-
- $marital = ((x($profile,'marital') == 1) ? t('Status: ') . $profile['marital'] : False);
- $sexual = ((x($profile,'sexual') == 1) ? t('Sexual Preference: ') . $profile['sexual'] : False);
-
- $homepage = ((x($profile,'homepage') == 1) ? t('Homepage: ') . linkify($profile['homepage']) : False);
- $hometown = ((x($profile,'hometown') == 1) ? t('Hometown: ') . $profile['hometown'] : False);
-
- $about = ((x($profile,'about') == 1) ? t('About: ') . bbcode($profile['about']) : False);
-
- $keywords = ((x($profile,'keywords')) ? $profile['keywords'] : '');
- if($keywords) {
- $keywords = str_replace(',',' ', $keywords);
- $keywords = str_replace(' ',' ', $keywords);
- $karr = explode(' ', $keywords);
- $out = '';
- if($karr) {
- if(local_user()) {
- $r = q("select keywords from profile where uid = %d and is_default = 1 limit 1",
- intval(local_user())
- );
- if($r) {
- $keywords = str_replace(',',' ', $r[0]['keywords']);
- $keywords = str_replace(' ',' ', $keywords);
- $marr = explode(' ', $keywords);
- }
- }
- foreach($karr as $k) {
- if(strlen($out))
- $out .= ', ';
- if($marr && in_arrayi($k,$marr))
- $out .= '<strong>' . $k . '</strong>';
- else
- $out .= $k;
- }
- }
-
- }
- $entry = replace_macros(get_markup_template('direntry_large.tpl'), array(
- '$id' => ++$t,
- '$profile_link' => $profile_link,
- '$qrlink' => $qrlink,
- '$photo' => $rr['photo_l'],
- '$alttext' => $rr['name'] . ' ' . $rr['address'],
- '$name' => $rr['name'],
- '$online' => (($online) ? t('Online Now') : ''),
- '$details' => $pdesc . $details,
- '$profile' => $profile,
- '$address' => $rr['address'],
- '$location' => $location,
- '$gender' => $gender,
- '$pdesc' => $pdesc,
- '$marital' => $marital,
- '$homepage' => $homepage,
- '$hometown' => $hometown,
- '$about' => $about,
- '$kw' => (($out) ? t('Keywords: ') : ''),
- '$keywords' => $out,
- '$conn_label' => t('Connect'),
- '$connect' => $connect_link,
- ));
-
-
- echo $entry;
- killme();
-
- }
- }
- else {
- info( t("Not found.") . EOL);
- }
- }
- }
- }
-
-
-
-
-} \ No newline at end of file
diff --git a/mod/dirsearch.php b/mod/dirsearch.php
index 0ace4ecae..a88db0a2c 100644
--- a/mod/dirsearch.php
+++ b/mod/dirsearch.php
@@ -4,7 +4,7 @@ require_once('include/dir_fns.php');
function dirsearch_init(&$a) {
- $a->set_pager_itemspage(80);
+ $a->set_pager_itemspage(60);
}
@@ -29,6 +29,7 @@ function dirsearch_content(&$a) {
$sql_extra = '';
+
$tables = array('name','address','locale','region','postcode','country','gender','marital','sexual','keywords');
if($_REQUEST['query']) {
@@ -63,6 +64,9 @@ function dirsearch_content(&$a) {
$agege = ((x($_REQUEST,'agege')) ? intval($_REQUEST['agege']) : 0 );
$agele = ((x($_REQUEST,'agele')) ? intval($_REQUEST['agele']) : 0 );
$kw = ((x($_REQUEST,'kw')) ? intval($_REQUEST['kw']) : 0 );
+ $forums = ((array_key_exists('pubforums',$_REQUEST)) ? intval($_REQUEST['pubforums']) : 0);
+
+
// by default use a safe search
$safe = ((x($_REQUEST,'safe'))); // ? intval($_REQUEST['safe']) : 1 );
@@ -107,6 +111,10 @@ function dirsearch_content(&$a) {
if($keywords)
$sql_extra .= dir_query_build($joiner,'xprof_keywords',$keywords);
+ if($forums)
+ $sql_extra .= dir_flag_build($joiner,'xprof_flags',XCHAN_FLAGS_PUBFORUM, $forums);
+
+
// we only support an age range currently. You must set both agege
// (greater than or equal) and agele (less than or equal)
@@ -121,7 +129,7 @@ function dirsearch_content(&$a) {
}
- $perpage = (($_REQUEST['n']) ? $_REQUEST['n'] : 80);
+ $perpage = (($_REQUEST['n']) ? $_REQUEST['n'] : 60);
$page = (($_REQUEST['p']) ? intval($_REQUEST['p'] - 1) : 0);
$startrec = (($page+1) * $perpage) - $perpage;
$limit = (($_REQUEST['limit']) ? intval($_REQUEST['limit']) : 0);
@@ -145,16 +153,21 @@ function dirsearch_content(&$a) {
if($hash)
$logic = 1;
- $safesql = (($safe > 0) ? " and not ( xchan_flags & " . intval(XCHAN_FLAGS_CENSORED|XCHAN_FLAGS_SELFCENSORED) . " ) " : '');
+ if($dirmode == DIRECTORY_MODE_STANDALONE) {
+ $sql_extra .= " and xchan_addr like '%%" . get_app()->get_hostname() . "' ";
+ }
+
+
+ $safesql = (($safe > 0) ? " and not ( xchan_flags & " . intval(XCHAN_FLAGS_CENSORED|XCHAN_FLAGS_SELFCENSORED) . " )>0 " : '');
if($safe < 0)
- $safesql = " and ( xchan_flags & " . intval(XCHAN_FLAGS_CENSORED|XCHAN_FLAGS_SELFCENSORED) . " ) ";
+ $safesql = " and ( xchan_flags & " . intval(XCHAN_FLAGS_CENSORED|XCHAN_FLAGS_SELFCENSORED) . " )>0 ";
if($limit)
$qlimit = " LIMIT $limit ";
else {
$qlimit = " LIMIT " . intval($startrec) . " , " . intval($perpage);
if($return_total) {
- $r = q("SELECT COUNT(xchan_hash) AS `total` FROM xchan left join xprof on xchan_hash = xprof_hash where $logic $sql_extra and not ( xchan_flags & %d) and not ( xchan_flags & %d ) and not ( xchan_flags & %d ) $safesql ",
+ $r = q("SELECT COUNT(xchan_hash) AS `total` FROM xchan left join xprof on xchan_hash = xprof_hash where $logic $sql_extra and xchan_network = 'zot' and not ( xchan_flags & %d)>0 and not ( xchan_flags & %d )>0 and not ( xchan_flags & %d )>0 $safesql ",
intval(XCHAN_FLAGS_HIDDEN),
intval(XCHAN_FLAGS_ORPHAN),
intval(XCHAN_FLAGS_DELETED)
@@ -170,10 +183,11 @@ function dirsearch_content(&$a) {
$order = " order by xchan_name asc ";
elseif($sort_order == 'reverse')
$order = " order by xchan_name desc ";
+ elseif($sort_order == 'reversedate')
+ $order = " order by xchan_name_date asc ";
else
$order = " order by xchan_name_date desc ";
-
if($sync) {
$spkt = array('transactions' => array());
$r = q("select * from updates where ud_date >= '%s' and ud_guid != '' order by ud_date desc",
@@ -199,7 +213,7 @@ function dirsearch_content(&$a) {
json_return_and_die($spkt);
}
else {
- $r = q("SELECT xchan.*, xprof.* from xchan left join xprof on xchan_hash = xprof_hash where ( $logic $sql_extra ) and not ( xchan_flags & %d ) and not ( xchan_flags & %d ) and not ( xchan_flags & %d ) $safesql $order $qlimit ",
+ $r = q("SELECT xchan.*, xprof.* from xchan left join xprof on xchan_hash = xprof_hash where ( $logic $sql_extra ) and xchan_network = 'zot' and not ( xchan_flags & %d )>0 and not ( xchan_flags & %d )>0 and not ( xchan_flags & %d )>0 $safesql $order $qlimit ",
intval(XCHAN_FLAGS_HIDDEN),
intval(XCHAN_FLAGS_ORPHAN),
intval(XCHAN_FLAGS_DELETED)
@@ -220,6 +234,8 @@ function dirsearch_content(&$a) {
$entry['name'] = $rr['xchan_name'];
$entry['hash'] = $rr['xchan_hash'];
+ $entry['public_forum'] = (($rr['xchan_flags'] & XCHAN_FLAGS_PUBFORUM) ? true : false);
+
$entry['url'] = $rr['xchan_url'];
$entry['photo_l'] = $rr['xchan_photo_l'];
$entry['photo'] = $rr['xchan_photo_m'];
@@ -254,8 +270,8 @@ function dirsearch_content(&$a) {
}
}
}
- json_return_and_die($ret);
+ json_return_and_die($ret);
}
function dir_query_build($joiner,$field,$s) {
@@ -265,6 +281,11 @@ function dir_query_build($joiner,$field,$s) {
return $ret;
}
+function dir_flag_build($joiner,$field,$bit,$s) {
+ return dbesc($joiner) . " ( " . dbesc('xchan_flags') . " & " . intval($bit) . " ) " . ((intval($s)) ? '>' : '=' ) . " 0 ";
+}
+
+
function dir_parse_query($s) {
$ret = array();
@@ -274,35 +295,44 @@ function dir_parse_query($s) {
if($all) {
foreach($all as $q) {
- if($q === 'and') {
- $curr['logic'] = 'and';
- continue;
- }
- if($q === 'or') {
- $curr['logic'] = 'or';
- continue;
- }
- if($q === 'not') {
- $curr['logic'] .= ' not';
- continue;
- }
- if(strpos($q,'=')) {
- if(! isset($curr['logic']))
+ if($quoted_string === false) {
+ if($q === 'and') {
+ $curr['logic'] = 'and';
+ continue;
+ }
+ if($q === 'or') {
$curr['logic'] = 'or';
- $curr['field'] = trim(substr($q,0,strpos($q,'=')));
- $curr['value'] = trim(substr($q,strpos($q,'=')+1));
- if(strpos($curr['value'],'"') !== false) {
- $quoted_string = true;
- $curr['value'] = substr($curr['value'],strpos($curr['value'],'"')+1);
+ continue;
}
- else {
- $ret[] = $curr;
- $curr = array();
- $continue;
+ if($q === 'not') {
+ $curr['logic'] .= ' not';
+ continue;
+ }
+ if(strpos($q,'=')) {
+ if(! isset($curr['logic']))
+ $curr['logic'] = 'or';
+ $curr['field'] = trim(substr($q,0,strpos($q,'=')));
+ $curr['value'] = trim(substr($q,strpos($q,'=')+1));
+ if($curr['value'][0] == '"' && $curr['value'][strlen($curr['value'])-1] != '"') {
+ $quoted_string = true;
+ $curr['value'] = substr($curr['value'],1);
+ continue;
+ }
+ elseif($curr['value'][0] == '"' && $curr['value'][strlen($curr['value'])-1] == '"') {
+ $curr['value'] = substr($curr['value'],1,strlen($curr['value'])-2);
+ $ret[] = $curr;
+ $curr = array();
+ continue;
+ }
+ else {
+ $ret[] = $curr;
+ $curr = array();
+ continue;
+ }
}
}
- elseif($quoted_string) {
- if(strpos($q,'"') !== false) {
+ else {
+ if($q[strlen($q)-1] == '"') {
$curr['value'] .= ' ' . str_replace('"','',trim($q));
$ret[] = $curr;
$curr = array();
@@ -325,8 +355,18 @@ function dir_parse_query($s) {
function list_public_sites() {
-
- $r = q("select * from site where site_access != 0 and site_register !=0 order by rand()");
+ $realm = get_directory_realm();
+ if($realm == DIRECTORY_REALM) {
+ $r = q("select * from site where site_access != 0 and site_register !=0 and ( site_realm = '%s' or site_realm = '') order by rand()",
+ dbesc($realm)
+ );
+ }
+ else {
+ $r = q("select * from site where site_access != 0 and site_register !=0 and site_realm = '%s' order by rand()",
+ dbesc($realm)
+ );
+ }
+
$ret = array('success' => false);
if($r) {
diff --git a/mod/display.php b/mod/display.php
index 31cce95d3..7d7f4ca13 100644
--- a/mod/display.php
+++ b/mod/display.php
@@ -85,6 +85,8 @@ function display_content(&$a, $update = 0, $load = false) {
$target_item = $r[0];
}
+ $r = null;
+
if($target_item['item_restrict'] & ITEM_WEBPAGE) {
$x = q("select * from channel where channel_id = %d limit 1",
intval($target_item['uid'])
@@ -131,6 +133,7 @@ function display_content(&$a, $update = 0, $load = false) {
'$order' => '',
'$file' => '',
'$cats' => '',
+ '$tags' => '',
'$dend' => '',
'$dbegin' => '',
'$mid' => $item_hash
@@ -139,19 +142,22 @@ function display_content(&$a, $update = 0, $load = false) {
}
- $sql_extra = public_permissions_sql(get_observer_hash());
+ $observer_hash = get_observer_hash();
+
+ $sql_extra = public_permissions_sql($observer_hash);
if(($update && $load) || ($_COOKIE['jsAvailable'] != 1)) {
$updateable = false;
- $pager_sql = sprintf(" LIMIT %d, %d ",intval($a->pager['start']), intval($a->pager['itemspage']));
+ $pager_sql = sprintf(" LIMIT %d OFFSET %d ", intval($a->pager['itemspage']),intval($a->pager['start']));
if($load || ($_COOKIE['jsAvailable'] != 1)) {
$r = null;
require_once('include/identity.php');
$sys = get_sys_channel();
+ $sysid = $sys['channel_id'];
if(local_user()) {
$r = q("SELECT * from item
@@ -170,17 +176,24 @@ function display_content(&$a, $update = 0, $load = false) {
}
if($r === null) {
+ // in case somebody turned off public access to sys channel content using permissions
+ // make that content unsearchable by ensuring the owner_xchan can't match
+
+ if(! perm_is_allowed($sysid,$observer_hash,'view_stream'))
+ $sysid = 0;
+
+
$r = q("SELECT * from item
WHERE item_restrict = 0
and mid = '%s'
AND (((( `item`.`allow_cid` = '' AND `item`.`allow_gid` = '' AND `item`.`deny_cid` = ''
AND `item`.`deny_gid` = '' AND item_private = 0 )
- and owner_xchan in ( " . stream_perms_xchans(($observer) ? (PERMS_NETWORK|PERMS_PUBLIC) : PERMS_PUBLIC) . " ))
- OR owner_xchan = '%s')
+ and owner_xchan in ( " . stream_perms_xchans(($observer_hash) ? (PERMS_NETWORK|PERMS_PUBLIC) : PERMS_PUBLIC) . " ))
+ OR uid = %d )
$sql_extra )
- group by mid limit 1",
+ limit 1",
dbesc($target_item['parent_mid']),
- dbesc($sys['xchan_hash'])
+ intval($sysid)
);
}
@@ -217,8 +230,8 @@ function display_content(&$a, $update = 0, $load = false) {
}
if($updateable) {
- $x = q("UPDATE item SET item_flags = ( item_flags ^ %d )
- WHERE (item_flags & %d) AND uid = %d and parent = %d ",
+ $x = q("UPDATE item SET item_flags = ( item_flags & ~%d )
+ WHERE (item_flags & %d)>0 AND uid = %d and parent = %d ",
intval(ITEM_UNSEEN),
intval(ITEM_UNSEEN),
intval(local_user()),
diff --git a/mod/editblock.php b/mod/editblock.php
index 536ddd7d2..6ec840af7 100644
--- a/mod/editblock.php
+++ b/mod/editblock.php
@@ -1,50 +1,92 @@
<?php
+require_once('include/identity.php');
+require_once('include/acl_selectors.php');
-function editblock_content(&$a) {
+function editblock_init(&$a) {
+ if(argc() > 1 && argv(1) === 'sys' && is_site_admin()) {
+ $sys = get_sys_channel();
+ if($sys && intval($sys['channel_id'])) {
+ $a->is_sys = true;
+ }
+ }
- if(argc() < 2) {
- notice( t('Item not found') . EOL);
+ if(argc() > 1)
+ $which = argv(1);
+ else
return;
- }
- $channel = get_channel_by_nick(argv(1));
+ profile_load($a,$which);
- if($c) {
- $owner = intval($channel['channel_id']);
- }
+}
- $o = '';
+function editblock_content(&$a) {
- // Figure out which post we're editing
- $post_id = ((argc() > 2) ? intval(argv(2)) : 0);
+ if(! $a->profile) {
+ notice( t('Requested profile is not available.') . EOL );
+ $a->error = 404;
+ return;
+ }
+ $which = argv(1);
- if(! ($post_id && $channel)) {
- notice( t('Item not found') . EOL);
- return;
+ $uid = local_user();
+ $owner = 0;
+ $channel = null;
+ $observer = $a->get_observer();
+
+ $channel = $a->get_channel();
+
+ if($a->is_sys && is_site_admin()) {
+ $sys = get_sys_channel();
+ if($sys && intval($sys['channel_id'])) {
+ $uid = $owner = intval($sys['channel_id']);
+ $channel = $sys;
+ $observer = $sys;
+ }
+ }
+
+ if(! $owner) {
+ // Figure out who the page owner is.
+ $r = q("select channel_id from channel where channel_address = '%s'",
+ dbesc($which)
+ );
+ if($r) {
+ $owner = intval($r[0]['channel_id']);
+ }
}
- // Now we've got a post and an owner, let's find out if we're allowed to edit it
+ $ob_hash = (($observer) ? $observer['xchan_hash'] : '');
- if(! perm_is_allowed($channel['channel_id'],get_observer_hash(),'write_pages')) {
+ if(! perm_is_allowed($owner,$ob_hash,'write_pages')) {
notice( t('Permission denied.') . EOL);
return;
}
+ $is_owner = (($uid && $uid == $owner) ? true : false);
+
+ $o = '';
+
+
+ // Figure out which post we're editing
+ $post_id = ((argc() > 2) ? intval(argv(2)) : 0);
- // We've already figured out which item we want and whose copy we need, so we don't need anything fancy here
+ if(! ($post_id && $owner)) {
+ notice( t('Item not found') . EOL);
+ return;
+ }
+
$itm = q("SELECT * FROM `item` WHERE `id` = %d and uid = %s LIMIT 1",
intval($post_id),
- intval($channel['channel_id'])
+ intval($owner)
);
if($itm) {
$item_id = q("select * from item_id where service = 'BUILDBLOCK' and iid = %d limit 1",
- $itm[0]['id']
+ intval($itm[0]['id'])
);
if($item_id)
$block_title = $item_id[0]['sid'];
@@ -57,10 +99,6 @@ function editblock_content(&$a) {
$plaintext = true;
- // You may or may not be a local user.
-// if(local_user() && feature_enabled(local_user(),'richtext'))
-// $plaintext = false;
-
$mimeselect = '';
$mimetype = $itm[0]['mimetype'];
@@ -79,11 +117,11 @@ function editblock_content(&$a) {
$a->page['htmlhead'] .= replace_macros(get_markup_template('jot-header.tpl'), array(
- '$baseurl' => $a->get_baseurl(),
- '$editselect' => (($plaintext) ? 'none' : '/(profile-jot-text|prvmail-text)/'),
- '$ispublic' => '&nbsp;', // t('Visible to <strong>everybody</strong>'),
- '$geotag' => '',
- '$nickname' => $channel['channel_address'],
+ '$baseurl' => $a->get_baseurl(),
+ '$editselect' => (($plaintext) ? 'none' : '/(profile-jot-text|prvmail-text)/'),
+ '$ispublic' => '&nbsp;', // t('Visible to <strong>everybody</strong>'),
+ '$geotag' => '',
+ '$nickname' => $channel['channel_address'],
'$confirmdelete' => t('Delete block?')
));
@@ -96,62 +134,70 @@ function editblock_content(&$a) {
call_hooks('jot_tool', $jotplugins);
call_hooks('jot_networks', $jotnets);
-
- //$tpl = replace_macros($tpl,array('$jotplugins' => $jotplugins));
-
- // FIXME A return path with $_SESSION doesn't always work for observer - it may WSoD instead of loading a sensible page.
- //So, send folk to the webpage list.
-
$rp = 'blocks/' . $channel['channel_address'];
$o .= replace_macros($tpl,array(
- '$return_path' => $rp,
- '$action' => 'item',
- '$webpage' => ITEM_BUILDBLOCK,
- '$share' => t('Edit'),
- '$upload' => t('Upload photo'),
- '$attach' => t('Attach file'),
- '$weblink' => t('Insert web link'),
- '$youtube' => t('Insert YouTube video'),
- '$video' => t('Insert Vorbis [.ogg] video'),
- '$audio' => t('Insert Vorbis [.ogg] audio'),
- '$setloc' => t('Set your location'),
- '$noloc' => t('Clear browser location'),
- '$wait' => t('Please wait'),
- '$permset' => t('Permission settings'),
- '$ptyp' => $itm[0]['type'],
- '$mimeselect' => $mimeselect,
- '$content' => undo_post_tagging($itm[0]['body']),
- '$post_id' => $post_id,
- '$baseurl' => $a->get_baseurl(),
- '$defloc' => $channel['channel_location'],
- '$visitor' => false,
- '$public' => t('Public post'),
- '$jotnets' => $jotnets,
- '$title' => htmlspecialchars($itm[0]['title'],ENT_COMPAT,'UTF-8'),
- '$placeholdertitle' => t('Set title'),
- '$pagetitle' => $block_title,
- '$category' => '',
- '$placeholdercategory' => t('Categories (comma-separated list)'),
- '$emtitle' => t('Example: bob@example.com, mary@example.com'),
- '$lockstate' => $lockstate,
- '$acl' => '',
- '$bang' => '',
- '$profile_uid' => (intval($channel['channel_id'])),
- '$preview' => ((feature_enabled(local_user(),'preview')) ? t('Preview') : ''),
- '$jotplugins' => $jotplugins,
- '$sourceapp' => $itm[0]['app'],
- '$defexpire' => '',
- '$feature_expire' => false,
- '$expires' => t('Set expiration date'),
+ '$return_path' => $rp,
+ '$action' => 'item',
+ '$webpage' => ITEM_BUILDBLOCK,
+ '$share' => t('Edit'),
+ '$upload' => t('Upload photo'),
+ '$attach' => t('Attach file'),
+ '$weblink' => t('Insert web link'),
+ '$youtube' => t('Insert YouTube video'),
+ '$video' => t('Insert Vorbis [.ogg] video'),
+ '$audio' => t('Insert Vorbis [.ogg] audio'),
+ '$setloc' => t('Set your location'),
+ '$noloc' => t('Clear browser location'),
+ '$wait' => t('Please wait'),
+ '$permset' => t('Permission settings'),
+ '$ptyp' => $itm[0]['type'],
+ '$mimeselect' => $mimeselect,
+ '$content' => undo_post_tagging($itm[0]['body']),
+ '$post_id' => $post_id,
+ '$baseurl' => $a->get_baseurl(),
+ '$defloc' => $channel['channel_location'],
+ '$visitor' => false,
+ '$public' => t('Public post'),
+ '$jotnets' => $jotnets,
+ '$title' => htmlspecialchars($itm[0]['title'],ENT_COMPAT,'UTF-8'),
+ '$placeholdertitle' => t('Title (optional)'),
+ '$pagetitle' => $block_title,
+ '$category' => '',
+ '$placeholdercategory' => t('Categories (optional, comma-separated list)'),
+ '$emtitle' => t('Example: bob@example.com, mary@example.com'),
+ '$lockstate' => $lockstate,
+ '$acl' => '',
+ '$bang' => '',
+ '$profile_uid' => (intval($channel['channel_id'])),
+ '$preview' => true, // ((feature_enabled($uid,'preview')) ? t('Preview') : ''),
+ '$jotplugins' => $jotplugins,
+ '$sourceapp' => $itm[0]['app'],
+ '$defexpire' => '',
+ '$feature_expire' => false,
+ '$expires' => t('Set expiration date'),
));
- $ob = get_observer_hash();
-
- if(($itm[0]['author_xchan'] === $ob) || ($itm[0]['owner_xchan'] === $ob))
+ if(($itm[0]['author_xchan'] === $ob_hash) || ($itm[0]['owner_xchan'] === $ob_hash))
$o .= '<br /><br /><a class="block-delete-link" href="item/drop/' . $itm[0]['id'] . '" >' . t('Delete Block') . '</a><br />';
+
+ $x = array(
+ 'type' => 'block',
+ 'title' => $itm[0]['title'],
+ 'body' => $itm[0]['body'],
+ 'term' => $itm[0]['term'],
+ 'created' => $itm[0]['created'],
+ 'edited' => $itm[0]['edited'],
+ 'mimetype' => $itm[0]['mimetype'],
+ 'pagetitle' => $page_title,
+ 'mid' => $itm[0]['mid']
+ );
+
+ $o .= EOL . EOL . t('Share') . EOL . '<textarea onclick="this.select();" class="shareable_element_text" >[element]' . base64url_encode(json_encode($x)) . '[/element]</textarea>' . EOL . EOL;
+
+
return $o;
}
diff --git a/mod/editlayout.php b/mod/editlayout.php
index 1e8a6e990..d76aa484d 100644
--- a/mod/editlayout.php
+++ b/mod/editlayout.php
@@ -1,34 +1,76 @@
<?php
-// What is this here for? I think it's cruft, but comment out for now in case it's here for a reason
-// require_once('acl_selectors.php');
+require_once('include/identity.php');
+require_once('include/acl_selectors.php');
+
+function editlayout_init(&$a) {
+
+ if(argc() > 1 && argv(1) === 'sys' && is_site_admin()) {
+ $sys = get_sys_channel();
+ if($sys && intval($sys['channel_id'])) {
+ $a->is_sys = true;
+ }
+ }
+
+ if(argc() > 1)
+ $which = argv(1);
+ else
+ return;
+
+ profile_load($a,$which);
+
+}
function editlayout_content(&$a) {
-// We first need to figure out who owns the webpage, grab it from an argument
- $which = argv(1);
-// $a->get_channel() and stuff don't work here, so we've got to find the owner for ourselves.
- $r = q("select channel_id from channel where channel_address = '%s'",
- dbesc($which)
+ if(! $a->profile) {
+ notice( t('Requested profile is not available.') . EOL );
+ $a->error = 404;
+ return;
+ }
+
+ $which = argv(1);
+
+ $uid = local_user();
+ $owner = 0;
+ $channel = null;
+ $observer = $a->get_observer();
+
+ $channel = $a->get_channel();
+
+ if($a->is_sys && is_site_admin()) {
+ $sys = get_sys_channel();
+ if($sys && intval($sys['channel_id'])) {
+ $uid = $owner = intval($sys['channel_id']);
+ $channel = $sys;
+ $observer = $sys;
+ }
+ }
+
+ if(! $owner) {
+ // Figure out who the page owner is.
+ $r = q("select channel_id from channel where channel_address = '%s'",
+ dbesc($which)
);
- if($r) {
- $owner = intval($r[0]['channel_id']);
- //logger('owner: ' . print_r($owner,true));
- }
+ if($r) {
+ $owner = intval($r[0]['channel_id']);
+ }
+ }
+ $ob_hash = (($observer) ? $observer['xchan_hash'] : '');
-
-
- if((local_user()) && (argc() > 2) && (argv(2) === 'view')) {
- $which = $channel['channel_address'];
- }
+ if(! perm_is_allowed($owner,$ob_hash,'write_pages')) {
+ notice( t('Permission denied.') . EOL);
+ return;
+ }
+ $is_owner = (($uid && $uid == $owner) ? true : false);
$o = '';
-// Figure out which post we're editing
+ // Figure out which post we're editing
$post_id = ((argc() > 2) ? intval(argv(2)) : 0);
@@ -37,48 +79,41 @@ function editlayout_content(&$a) {
return;
}
-// Now we've got a post and an owner, let's find out if we're allowed to edit it
-
- $observer = $a->get_observer();
- $ob_hash = (($observer) ? $observer['xchan_hash'] : '');
+ // Now we've got a post and an owner, let's find out if we're allowed to edit it
- $perms = get_all_perms($owner,$ob_hash);
+ $ob_hash = (($observer) ? $observer['xchan_hash'] : '');
- if(! $perms['write_pages']) {
- notice( t('Permission denied.') . EOL);
- return;
- }
+ $perms = get_all_perms($owner,$ob_hash);
+ if(! $perms['write_pages']) {
+ notice( t('Permission denied.') . EOL);
+ return;
+ }
-// We've already figured out which item we want and whose copy we need, so we don't need anything fancy here
- $itm = q("SELECT * FROM `item` WHERE `id` = %d and uid = %s LIMIT 1",
- intval($post_id),
- intval($owner)
- );
+ $itm = q("SELECT * FROM `item` WHERE `id` = %d and uid = %s LIMIT 1",
+ intval($post_id),
+ intval($owner)
+ );
$item_id = q("select * from item_id where service = 'PDL' and iid = %d limit 1",
- $itm[0]['id']
+ intval($itm[0]['id'])
);
if($item_id)
$layout_title = $item_id[0]['sid'];
$plaintext = true;
-// You may or may not be a local user. This won't work,
-// if(feature_enabled(local_user(),'richtext'))
-// $plaintext = false;
$o .= replace_macros(get_markup_template('edpost_head.tpl'), array(
'$title' => t('Edit Layout')
));
-
$a->page['htmlhead'] .= replace_macros(get_markup_template('jot-header.tpl'), array(
- '$baseurl' => $a->get_baseurl(),
- '$editselect' => (($plaintext) ? 'none' : '/(profile-jot-text|prvmail-text)/'),
- '$ispublic' => '&nbsp;', // t('Visible to <strong>everybody</strong>'),
- '$geotag' => $geotag,
- '$nickname' => $a->user['nickname'],
+ '$baseurl' => $a->get_baseurl(),
+ '$editselect' => (($plaintext) ? 'none' : '/(profile-jot-text|prvmail-text)/'),
+ '$ispublic' => '&nbsp;', // t('Visible to <strong>everybody</strong>'),
+ '$geotag' => $geotag,
+ '$nickname' => $channel['channel_address'],
'$confirmdelete' => t('Delete layout?')
));
@@ -91,60 +126,74 @@ function editlayout_content(&$a) {
call_hooks('jot_tool', $jotplugins);
call_hooks('jot_networks', $jotnets);
- $channel = $a->get_channel();
-
- //$tpl = replace_macros($tpl,array('$jotplugins' => $jotplugins));
-//FIXME A return path with $_SESSION doesn't always work for observer - it may WSoD instead of loading a sensible page. So, send folk to the webpage list.
+ // FIXME A return path with $_SESSION doesn't always work for observer - it may WSoD
+ // instead of loading a sensible page. So, send folk to the webpage list.
$rp = '/layouts/' . $which;
$o .= replace_macros($tpl,array(
- '$return_path' => $rp,
- '$action' => 'item',
- '$webpage' => ITEM_PDL,
- '$share' => t('Edit'),
- '$upload' => t('Upload photo'),
- '$attach' => t('Attach file'),
- '$weblink' => t('Insert web link'),
- '$youtube' => t('Insert YouTube video'),
- '$video' => t('Insert Vorbis [.ogg] video'),
- '$audio' => t('Insert Vorbis [.ogg] audio'),
- '$setloc' => t('Set your location'),
- '$noloc' => t('Clear browser location'),
- '$wait' => t('Please wait'),
- '$permset' => t('Permission settings'),
- '$ptyp' => $itm[0]['type'],
- '$content' => undo_post_tagging($itm[0]['body']),
- '$post_id' => $post_id,
- '$baseurl' => $a->get_baseurl(),
- '$defloc' => $channel['channel_location'],
- '$visitor' => false,
- '$public' => t('Public post'),
- '$jotnets' => $jotnets,
- '$title' => htmlspecialchars($itm[0]['title'],ENT_COMPAT,'UTF-8'),
- '$placeholdertitle' => t('Set title'),
- '$pagetitle' => $layout_title,
- '$category' => '',
- '$placeholdercategory' => t('Categories (comma-separated list)'),
- '$emtitle' => t('Example: bob@example.com, mary@example.com'),
- '$lockstate' => $lockstate,
- '$acl' => '',
- '$bang' => '',
- '$profile_uid' => (intval($owner)),
- '$preview' => ((feature_enabled(local_user(),'preview')) ? t('Preview') : ''),
- '$jotplugins' => $jotplugins,
- '$sourceapp' => t($a->sourcename),
- '$defexpire' => '',
- '$feature_expire' => false,
- '$expires' => t('Set expiration date'),
+ '$return_path' => $rp,
+ '$action' => 'item',
+ '$webpage' => ITEM_PDL,
+ '$share' => t('Edit'),
+ '$upload' => t('Upload photo'),
+ '$attach' => t('Attach file'),
+ '$weblink' => t('Insert web link'),
+ '$youtube' => t('Insert YouTube video'),
+ '$video' => t('Insert Vorbis [.ogg] video'),
+ '$audio' => t('Insert Vorbis [.ogg] audio'),
+ '$setloc' => t('Set your location'),
+ '$noloc' => t('Clear browser location'),
+ '$wait' => t('Please wait'),
+ '$permset' => t('Permission settings'),
+ '$ptyp' => $itm[0]['type'],
+ '$content' => undo_post_tagging($itm[0]['body']),
+ '$post_id' => $post_id,
+ '$baseurl' => $a->get_baseurl(),
+ '$defloc' => $channel['channel_location'],
+ '$visitor' => false,
+ '$public' => t('Public post'),
+ '$jotnets' => $jotnets,
+ '$title' => htmlspecialchars($itm[0]['title'],ENT_COMPAT,'UTF-8'),
+ '$placeholdertitle' => t('Title (optional)'),
+ '$pagetitle' => $layout_title,
+ '$category' => '',
+ '$placeholdercategory' => t('Categories (optional, comma-separated list)'),
+ '$emtitle' => t('Example: bob@example.com, mary@example.com'),
+ '$lockstate' => $lockstate,
+ '$acl' => '',
+ '$bang' => '',
+ '$profile_uid' => (intval($owner)),
+ '$preview' => true, // ((feature_enabled($uid,'preview')) ? t('Preview') : ''),
+ '$jotplugins' => $jotplugins,
+ '$sourceapp' => t($a->sourcename),
+ '$defexpire' => '',
+ '$feature_expire' => false,
+ '$expires' => t('Set expiration date'),
));
- $ob = get_observer_hash();
- if(($itm[0]['author_xchan'] === $ob) || ($itm[0]['owner_xchan'] === $ob))
+ if(($itm[0]['author_xchan'] === $ob_hash) || ($itm[0]['owner_xchan'] === $ob_hash))
$o .= '<br /><br /><a class="layout-delete-link" href="item/drop/' . $itm[0]['id'] . '" >' . t('Delete Layout') . '</a><br />';
+
+ $x = array(
+ 'type' => 'layout',
+ 'title' => $itm[0]['title'],
+ 'body' => $itm[0]['body'],
+ 'term' => $itm[0]['term'],
+ 'created' => $itm[0]['created'],
+ 'edited' => $itm[0]['edited'],
+ 'mimetype' => $itm[0]['mimetype'],
+ 'pagetitle' => $page_title,
+ 'mid' => $itm[0]['mid']
+ );
+
+ $o .= EOL . EOL . t('Share') . EOL . '<textarea onclick="this.select();" class="shareable_element_text" >[element]' . base64url_encode(json_encode($x)) . '[/element]</textarea>' . EOL . EOL;
+
+
+
return $o;
}
diff --git a/mod/editpost.php b/mod/editpost.php
index ed7fcff8a..dfbc8766e 100644
--- a/mod/editpost.php
+++ b/mod/editpost.php
@@ -129,15 +129,15 @@ function editpost_content(&$a) {
'$public' => t('Public post'),
'$jotnets' => $jotnets,
'$title' => htmlspecialchars($itm[0]['title'],ENT_COMPAT,'UTF-8'),
- '$placeholdertitle' => t('Set title'),
+ '$placeholdertitle' => t('Title (optional)'),
'$category' => $category,
- '$placeholdercategory' => t('Categories (comma-separated list)'),
+ '$placeholdercategory' => t('Categories (optional, comma-separated list)'),
'$emtitle' => t('Example: bob@example.com, mary@example.com'),
'$lockstate' => $lockstate,
'$acl' => '',
'$bang' => '',
'$profile_uid' => local_user(),
- '$preview' => ((feature_enabled(local_user(),'preview')) ? t('Preview') : ''),
+ '$preview' => true, // ((feature_enabled(local_user(),'preview')) ? t('Preview') : ''),
'$jotplugins' => $jotplugins,
'$sourceapp' => t($a->sourcename),
'$catsenabled' => $catsenabled,
diff --git a/mod/editwebpage.php b/mod/editwebpage.php
index 9fe76ba98..191c9a9ac 100644
--- a/mod/editwebpage.php
+++ b/mod/editwebpage.php
@@ -1,26 +1,71 @@
<?php
-// Required for setting permissions. (FIXME)
+require_once('include/identity.php');
+require_once('include/acl_selectors.php');
+
+function editwebpage_init(&$a) {
+
+ if(argc() > 1 && argv(1) === 'sys' && is_site_admin()) {
+ $sys = get_sys_channel();
+ if($sys && intval($sys['channel_id'])) {
+ $a->is_sys = true;
+ }
+ }
+
+ if(argc() > 1)
+ $which = argv(1);
+ else
+ return;
+
+ profile_load($a,$which);
+
+}
-require_once('acl_selectors.php');
function editwebpage_content(&$a) {
- // We first need to figure out who owns the webpage, grab it from an argument
+ if(! $a->profile) {
+ notice( t('Requested profile is not available.') . EOL );
+ $a->error = 404;
+ return;
+ }
$which = argv(1);
- // $a->get_channel() and stuff don't work here, so we've got to find the owner for ourselves.
-
- $r = q("select channel_id from channel where channel_address = '%s'",
- dbesc($which)
- );
- if($r) {
- $owner = intval($r[0]['channel_id']);
- //logger('owner: ' . print_r($owner,true));
+ $uid = local_user();
+ $owner = 0;
+ $channel = null;
+ $observer = $a->get_observer();
+
+ $channel = $a->get_channel();
+
+ if($a->is_sys && is_site_admin()) {
+ $sys = get_sys_channel();
+ if($sys && intval($sys['channel_id'])) {
+ $uid = $owner = intval($sys['channel_id']);
+ $channel = $sys;
+ $observer = $sys;
+ }
+ }
+
+ if(! $owner) {
+ // Figure out who the page owner is.
+ $r = q("select channel_id from channel where channel_address = '%s'",
+ dbesc($which)
+ );
+ if($r) {
+ $owner = intval($r[0]['channel_id']);
+ }
+ }
+
+ $ob_hash = (($observer) ? $observer['xchan_hash'] : '');
+
+ if(! perm_is_allowed($owner,$ob_hash,'write_pages')) {
+ notice( t('Permission denied.') . EOL);
+ return;
}
- $is_owner = ((local_user() && local_user() == $owner) ? true : false);
+ $is_owner = (($uid && $uid == $owner) ? true : false);
$o = '';
@@ -33,9 +78,6 @@ function editwebpage_content(&$a) {
return;
}
- // Now we've got a post and an owner, let's find out if we're allowed to edit it
-
- $observer = $a->get_observer();
$ob_hash = (($observer) ? $observer['xchan_hash'] : '');
$perms = get_all_perms($owner,$ob_hash);
@@ -45,14 +87,13 @@ function editwebpage_content(&$a) {
return;
}
+ // We've already figured out which item we want and whose copy we need,
+ // so we don't need anything fancy here
-
- // We've already figured out which item we want and whose copy we need, so we don't need anything fancy here
$itm = q("SELECT * FROM `item` WHERE `id` = %d and uid = %s LIMIT 1",
intval($post_id),
intval($owner)
- );
-
+ );
if($itm[0]['item_flags'] & ITEM_OBSCURED) {
$key = get_config('system','prvkey');
@@ -63,23 +104,17 @@ function editwebpage_content(&$a) {
}
$item_id = q("select * from item_id where service = 'WEBPAGE' and iid = %d limit 1",
- $itm[0]['id']
+ intval($itm[0]['id'])
);
if($item_id)
$page_title = $item_id[0]['sid'];
-
-
-
$plaintext = true;
-// if(feature_enabled($itm[0]['uid'],'richtext'))
-// $plaintext = false;
-
$mimetype = $itm[0]['mimetype'];
if($mimetype === 'application/x-php') {
- if((! local_user()) || (local_user() != $itm[0]['uid'])) {
+ if((! $uid) || ($uid != $itm[0]['uid'])) {
notice( t('Permission denied.') . EOL);
return;
}
@@ -101,7 +136,6 @@ function editwebpage_content(&$a) {
else
$layoutselect = layout_select($itm[0]['uid'],$itm[0]['layout_mid']);
-
$o .= replace_macros(get_markup_template('edpost_head.tpl'), array(
'$title' => t('Edit Webpage')
));
@@ -112,7 +146,7 @@ function editwebpage_content(&$a) {
'$editselect' => (($plaintext) ? 'none' : '/(profile-jot-text|prvmail-text)/'),
'$ispublic' => '&nbsp;', // t('Visible to <strong>everybody</strong>'),
'$geotag' => $geotag,
- '$nickname' => $a->user['nickname'],
+ '$nickname' => $channel['channel_address'],
'$confirmdelete' => t('Delete webpage?')
));
@@ -124,12 +158,9 @@ function editwebpage_content(&$a) {
call_hooks('jot_tool', $jotplugins);
call_hooks('jot_networks', $jotnets);
-
- $channel = $a->get_channel();
-
- //$tpl = replace_macros($tpl,array('$jotplugins' => $jotplugins));
-//FIXME A return path with $_SESSION doesn't always work for observer - it may WSoD instead of loading a sensible page. So, send folk to the webpage list.
+ // FIXME A return path with $_SESSION doesn't always work for observer - it may WSoD
+ // instead of loading a sensible page. So, send folk to the webpage list.
$rp = 'webpages/' . $which;
@@ -164,27 +195,40 @@ function editwebpage_content(&$a) {
'$mimeselect' => $mimeselect,
'$layoutselect' => $layoutselect,
'$title' => htmlspecialchars($itm[0]['title'],ENT_COMPAT,'UTF-8'),
- '$placeholdertitle' => t('Set title'),
+ '$placeholdertitle' => t('Title (optional)'),
'$category' => '',
- '$placeholdercategory' => t('Categories (comma-separated list)'),
+ '$placeholdercategory' => t('Categories (optional, comma-separated list)'),
'$emtitle' => t('Example: bob@example.com, mary@example.com'),
'lockstate' => (((strlen($itm[0]['allow_cid'])) || (strlen($itm[0]['allow_gid'])) || (strlen($itm[0]['deny_cid'])) || (strlen($itm[0]['deny_gid']))) ? 'lock' : 'unlock'),
'$bang' => '',
'$profile_uid' => (intval($owner)),
- '$preview' => ((feature_enabled(local_user(),'preview')) ? t('Preview') : ''),
+ '$preview' => true, // ((feature_enabled($uid,'preview')) ? t('Preview') : ''),
'$jotplugins' => $jotplugins,
- '$sourceapp' => t($a->sourcename),
+ '$sourceapp' => $a->sourcename,
'$defexpire' => '',
'$feature_expire' => false,
'$expires' => t('Set expiration date'),
));
- $ob = get_observer_hash();
-
- if(($itm[0]['author_xchan'] === $ob) || ($itm[0]['owner_xchan'] === $ob))
+ if(($itm[0]['author_xchan'] === $ob_hash) || ($itm[0]['owner_xchan'] === $ob_hash))
$o .= '<br /><br /><a class="page-delete-link" href="item/drop/' . $itm[0]['id'] . '" >' . t('Delete Webpage') . '</a><br />';
+
+ $x = array(
+ 'type' => 'webpage',
+ 'title' => $itm[0]['title'],
+ 'body' => $itm[0]['body'],
+ 'term' => $itm[0]['term'],
+ 'created' => $itm[0]['created'],
+ 'edited' => $itm[0]['edited'],
+ 'mimetype' => $itm[0]['mimetype'],
+ 'pagetitle' => $page_title,
+ 'mid' => $itm[0]['mid']
+ );
+
+ $o .= EOL . EOL . t('Share') . EOL . '<textarea onclick="this.select();" class="shareable_element_text" >[element]' . base64url_encode(json_encode($x)) . '[/element]</textarea>' . EOL . EOL;
+
return $o;
}
diff --git a/mod/events.php b/mod/events.php
index 02a9d1ed9..e016311d5 100755
--- a/mod/events.php
+++ b/mod/events.php
@@ -12,23 +12,21 @@ function events_post(&$a) {
return;
$event_id = ((x($_POST,'event_id')) ? intval($_POST['event_id']) : 0);
+ $event_hash = ((x($_POST,'event_hash')) ? $_POST['event_hash'] : '');
+
$xchan = ((x($_POST,'xchan')) ? dbesc($_POST['xchan']) : '');
$uid = local_user();
- $startyear = intval($_POST['startyear']);
- $startmonth = intval($_POST['startmonth']);
- $startday = intval($_POST['startday']);
- $starthour = intval($_POST['starthour']);
- $startminute = intval($_POST['startminute']);
-
- $finishyear = intval($_POST['finishyear']);
- $finishmonth = intval($_POST['finishmonth']);
- $finishday = intval($_POST['finishday']);
- $finishhour = intval($_POST['finishhour']);
- $finishminute = intval($_POST['finishminute']);
+
+ $start_text = escape_tags($_REQUEST['start_text']);
+ $finish_text = escape_tags($_REQUEST['finish_text']);
$adjust = intval($_POST['adjust']);
$nofinish = intval($_POST['nofinish']);
+ $categories = escape_tags(trim($_POST['category']));
+
+
+
// only allow editing your own events.
if(($xchan) && ($xchan !== get_observer_hash()))
@@ -37,12 +35,23 @@ function events_post(&$a) {
// The default setting for the `private` field in event_store() is false, so mirror that
$private_event = false;
+ if($start_text) {
+ $start = $start_text;
+ }
+ else {
+ $start = sprintf('%d-%d-%d %d:%d:0',$startyear,$startmonth,$startday,$starthour,$startminute);
+ }
- $start = sprintf('%d-%d-%d %d:%d:0',$startyear,$startmonth,$startday,$starthour,$startminute);
- if($nofinish)
- $finish = '0000-00-00 00:00:00';
- else
- $finish = sprintf('%d-%d-%d %d:%d:0',$finishyear,$finishmonth,$finishday,$finishhour,$finishminute);
+ if($nofinish) {
+ $finish = NULL_DATE;
+ }
+
+ if($finish_text) {
+ $finish = $finish_text;
+ }
+ else {
+ $finish = sprintf('%d-%d-%d %d:%d:0',$finishyear,$finishmonth,$finishday,$finishhour,$finishminute);
+ }
if($adjust) {
$start = datetime_convert(date_default_timezone_get(),'UTC',$start);
@@ -60,17 +69,22 @@ function events_post(&$a) {
// and we'll waste a bunch of time responding to it. Time that
// could've been spent doing something else.
- if(strcmp($finish,$start) < 0)
- $finish = $start;
$summary = escape_tags(trim($_POST['summary']));
$desc = escape_tags(trim($_POST['desc']));
$location = escape_tags(trim($_POST['location']));
$type = 'event';
+ $action = ($event_hash == '') ? 'new' : "event/" . $event_hash;
+ $onerror_url = $a->get_baseurl() . "/events/" . $action . "?summary=$summary&description=$desc&location=$location&start=$start_text&finish=$finish_text&adjust=$adjust&nofinish=$nofinish";
+ if(strcmp($finish,$start) < 0 && !$nofinish) {
+ notice( t('Event can not end before it has started.') . EOL);
+ goaway($onerror_url);
+ }
+
if((! $summary) || (! $start)) {
notice( t('Event title and start time are required.') . EOL);
- goaway($a->get_baseurl() . '/events/new');
+ goaway($onerror_url);
}
$share = ((intval($_POST['share'])) ? intval($_POST['share']) : 0);
@@ -123,6 +137,22 @@ function events_post(&$a) {
}
}
+ $post_tags = array();
+ $channel = $a->get_channel();
+
+ if(strlen($categories)) {
+ $cats = explode(',',$categories);
+ foreach($cats as $cat) {
+ $post_tags[] = array(
+ 'uid' => $profile_uid,
+ 'type' => TERM_CATEGORY,
+ 'otype' => TERM_OBJ_POST,
+ 'term' => trim($cat),
+ 'url' => $channel['xchan_url'] . '?f=&cat=' . urlencode(trim($cat))
+ );
+ }
+ }
+
$datarray = array();
$datarray['start'] = $start;
$datarray['finish'] = $finish;
@@ -145,6 +175,11 @@ function events_post(&$a) {
$datarray['edited'] = $edited;
$event = event_store_event($datarray);
+
+
+ if($post_tags)
+ $datarray['term'] = $post_tags;
+
$item_id = event_store_item($datarray,$event);
if($share)
@@ -164,14 +199,14 @@ function events_content(&$a) {
nav_set_selected('all_events');
if((argc() > 2) && (argv(1) === 'ignore') && intval(argv(2))) {
- $r = q("update event set ignore = 1 where id = %d and uid = %d limit 1",
+ $r = q("update event set ignore = 1 where id = %d and uid = %d",
intval(argv(2)),
intval(local_user())
);
}
if((argc() > 2) && (argv(1) === 'unignore') && intval(argv(2))) {
- $r = q("update event set ignore = 0 where id = %d and uid = %d limit 1",
+ $r = q("update event set ignore = 0 where id = %d and uid = %d",
intval(argv(2)),
intval(local_user())
);
@@ -233,13 +268,18 @@ function events_content(&$a) {
if($mode == 'view') {
- $thisyear = datetime_convert('UTC',date_default_timezone_get(),'now','Y');
- $thismonth = datetime_convert('UTC',date_default_timezone_get(),'now','m');
+ $thisyear = datetime_convert('UTC',date_default_timezone_get(),'now','Y');
+ $thismonth = datetime_convert('UTC',date_default_timezone_get(),'now','m');
if(! $y)
$y = intval($thisyear);
if(! $m)
$m = intval($thismonth);
+ $export = false;
+ if(argc() === 4 && argv(3) === 'export')
+ $export = true;
+
+
// Put some limits on dates. The PHP date functions don't seem to do so well before 1900.
// An upper limit was chosen to keep search engines from exploring links millions of years in the future.
@@ -295,8 +335,8 @@ function events_content(&$a) {
$r = q("SELECT event.*, item.plink, item.item_flags, item.author_xchan, item.owner_xchan
from event left join item on event_hash = resource_id
where resource_type = 'event' and event.uid = %d and event.ignore = %d
- AND (( `adjust` = 0 AND ( `finish` >= '%s' or nofinish ) AND `start` <= '%s' )
- OR ( `adjust` = 1 AND ( `finish` >= '%s' or nofinish ) AND `start` <= '%s' )) ",
+ AND (( `adjust` = 0 AND ( `finish` >= '%s' or nofinish = 1 ) AND `start` <= '%s' )
+ OR ( `adjust` = 1 AND ( `finish` >= '%s' or nofinish = 1 ) AND `start` <= '%s' )) ",
intval(local_user()),
intval($ignored),
dbesc($start),
@@ -378,6 +418,12 @@ function events_content(&$a) {
}
}
+ if($export) {
+ header('Content-type: text/calendar');
+ echo ical_wrapper($r);
+ killme();
+ }
+
if ($a->argv[1] === 'json'){
echo json_encode($events); killme();
}
@@ -397,6 +443,7 @@ function events_content(&$a) {
'$new_event'=> array($a->get_baseurl().'/events/new',t('Create New Event'),'',''),
'$previus' => array($a->get_baseurl()."/events/$prevyear/$prevmonth",t('Previous'),'',''),
'$next' => array($a->get_baseurl()."/events/$nextyear/$nextmonth",t('Next'),'',''),
+ '$export' => array($a->get_baseurl()."/events/$y/$m/export",t('Export'),'',''),
'$calendar' => cal($y,$m,$links, ' eventcal'),
'$events' => $events,
@@ -420,6 +467,19 @@ function events_content(&$a) {
$channel = $a->get_channel();
+ // Passed parameters overrides anything found in the DB
+ if($mode === 'edit' || $mode === 'new') {
+ if(!x($orig_event)) $orig_event = array();
+ // In case of an error the browser is redirected back here, with these parameters filled in with the previous values
+ if(x($_REQUEST,'nofinish')) $orig_event['nofinish'] = $_REQUEST['nofinish'];
+ if(x($_REQUEST,'adjust')) $orig_event['adjust'] = $_REQUEST['adjust'];
+ if(x($_REQUEST,'summary')) $orig_event['summary'] = $_REQUEST['summary'];
+ if(x($_REQUEST,'description')) $orig_event['description'] = $_REQUEST['description'];
+ if(x($_REQUEST,'location')) $orig_event['location'] = $_REQUEST['location'];
+ if(x($_REQUEST,'start')) $orig_event['start'] = $_REQUEST['start'];
+ if(x($_REQUEST,'finish')) $orig_event['finish'] = $_REQUEST['finish'];
+ }
+
if($mode === 'edit' || $mode === 'new') {
$n_checked = ((x($orig_event) && $orig_event['nofinish']) ? ' checked="checked" ' : '');
@@ -451,8 +511,11 @@ function events_content(&$a) {
$smonth = datetime_convert('UTC', $tz, $sdt, 'm');
$sday = datetime_convert('UTC', $tz, $sdt, 'd');
+
$shour = ((x($orig_event)) ? datetime_convert('UTC', $tz, $sdt, 'H') : 0);
$sminute = ((x($orig_event)) ? datetime_convert('UTC', $tz, $sdt, 'i') : 0);
+ $stext = datetime_convert('UTC',$tz,$sdt);
+ $stext = substr($stext,0,14) . "00:00";
$fyear = datetime_convert('UTC', $tz, $fdt, 'Y');
$fmonth = datetime_convert('UTC', $tz, $fdt, 'm');
@@ -460,13 +523,32 @@ function events_content(&$a) {
$fhour = ((x($orig_event)) ? datetime_convert('UTC', $tz, $fdt, 'H') : 0);
$fminute = ((x($orig_event)) ? datetime_convert('UTC', $tz, $fdt, 'i') : 0);
+ $ftext = datetime_convert('UTC',$tz,$fdt);
+ $ftext = substr($ftext,0,14) . "00:00";
$f = get_config('system','event_input_format');
if(! $f)
$f = 'ymd';
- $dateformat = datesel_format($f);
- $timeformat = t('hour:minute');
+ $catsenabled = feature_enabled(local_user(),'categories');
+
+ $category = '';
+
+ if($catsenabled && x($orig_event)){
+ $itm = q("select * from item where resource_type = 'event' and resource_id = '%s' and uid = %d limit 1",
+ dbesc($orig_event['event_hash']),
+ intval(local_user())
+ );
+ $itm = fetch_post_tags($itm);
+ if($itm) {
+ $cats = get_terms_oftype($itm[0]['term'], TERM_CATEGORY);
+ foreach ($cats as $cat) {
+ if(strlen($category))
+ $category .= ', ';
+ $category .= $cat['term'];
+ }
+ }
+ }
require_once('include/acl_selectors.php');
@@ -479,24 +561,28 @@ function events_content(&$a) {
$tpl = get_markup_template('event_form.tpl');
-
$o .= replace_macros($tpl,array(
'$post' => $a->get_baseurl() . '/events',
'$eid' => $eid,
'$xchan' => $event_xchan,
'$mid' => $mid,
+ '$event_hash' => $event_id,
'$title' => t('Event details'),
- '$desc' => sprintf( t('Format is %s %s. Starting date and Title are required.'),$dateformat,$timeformat),
-
+ '$desc' => t('Starting date and Title are required.'),
+ '$catsenabled' => $catsenabled,
+ '$placeholdercategory' => t('Categories (comma-separated list)'),
+ '$category' => $category,
'$s_text' => t('Event Starts:') . ' <span class="required" title="' . t('Required') . '">*</span>',
- '$s_dsel' => datesel($f,'start',$syear+5,$syear,false,$syear,$smonth,$sday),
- '$s_tsel' => timesel('start',$shour,$sminute),
+ '$stext' => $stext,
+ '$ftext' => $ftext,
+ '$ModalCANCEL' => t('Cancel'),
+ '$ModalOK' => t('OK'),
+ '$s_dsel' => datetimesel($f,new DateTime(),DateTime::createFromFormat('Y',$syear+5),DateTime::createFromFormat('Y-m-d H:i',"$syear-$smonth-$sday $shour:$sminute"),'start_text'),
'$n_text' => t('Finish date/time is not known or not relevant'),
'$n_checked' => $n_checked,
'$f_text' => t('Event Finishes:'),
- '$f_dsel' => datesel($f,'finish',$fyear+5,$fyear,false,$fyear,$fmonth,$fday),
- '$f_tsel' => timesel('finish',$fhour,$fminute),
+ '$f_dsel' => datetimesel($f,new DateTime(),DateTime::createFromFormat('Y',$fyear+5),DateTime::createFromFormat('Y-m-d H:i',"$fyear-$fmonth-$fday $fhour:$fminute"),'finish_text',true,true,'start_text'),
'$a_text' => t('Adjust for viewer timezone'),
'$a_checked' => $a_checked,
'$d_text' => t('Description:'),
@@ -507,6 +593,7 @@ function events_content(&$a) {
'$t_orig' => $t_orig,
'$sh_text' => t('Share this event'),
'$sh_checked' => $sh_checked,
+ '$permissions' => t('Permissions'),
'$acl' => (($orig_event['event_xchan']) ? '' : populate_acl(((x($orig_event)) ? $orig_event : $perm_defaults),false)),
'$submit' => t('Submit')
diff --git a/mod/feed.php b/mod/feed.php
index 0f8296ed1..3b622fc17 100644
--- a/mod/feed.php
+++ b/mod/feed.php
@@ -7,10 +7,14 @@ function feed_init(&$a) {
$params = array();
- $params['begin'] = ((x($_REQUEST,'date_begin')) ? $_REQUEST['date_begin'] : '0000-00-00 00:00:00');
+ $params['begin'] = ((x($_REQUEST,'date_begin')) ? $_REQUEST['date_begin'] : NULL_DATE);
$params['end'] = ((x($_REQUEST,'date_end')) ? $_REQUEST['date_end'] : '');
$params['type'] = ((stristr(argv(0),'json')) ? 'json' : 'xml');
$params['pages'] = ((x($_REQUEST,'pages')) ? intval($_REQUEST['pages']) : 0);
+ $params['top'] = ((x($_REQUEST,'top')) ? intval($_REQUEST['top']) : 0);
+ $params['start'] = ((x($params,'start')) ? intval($params['start']) : 0);
+ $params['records'] = ((x($params,'records')) ? intval($params['records']) : 40);
+ $params['direction'] = ((x($params,'direction')) ? dbesc($params['direction']) : 'desc');
$channel = '';
if(argc() > 1) {
diff --git a/mod/filer.php b/mod/filer.php
index 3340fc999..9a409177c 100644
--- a/mod/filer.php
+++ b/mod/filer.php
@@ -27,7 +27,7 @@ function filer_content(&$a) {
intval(local_user())
);
if($r) {
- $x = q("update item set item_flags = ( item_flags | %d ) where id = %d and uid = %d limit 1",
+ $x = q("update item set item_flags = ( item_flags | %d ) where id = %d and uid = %d",
intval(ITEM_RETAINED),
intval($r[0]['parent']),
intval(local_user())
diff --git a/mod/filerm.php b/mod/filerm.php
index a37e80b31..900cfe60b 100644
--- a/mod/filerm.php
+++ b/mod/filerm.php
@@ -18,7 +18,7 @@ function filerm_content(&$a) {
logger('filerm: tag ' . $term . ' item ' . $item_id);
if($item_id && strlen($term)) {
- $r = q("delete from term where uid = %d and type = %d and oid = %d and term = '%s' limit 1",
+ $r = q("delete from term where uid = %d and type = %d and oid = %d and term = '%s'",
intval(local_user()),
intval(($category) ? TERM_CATEGORY : TERM_FILE),
intval($item_id),
diff --git a/mod/filestorage.php b/mod/filestorage.php
index 383af84fc..0a25617f0 100644
--- a/mod/filestorage.php
+++ b/mod/filestorage.php
@@ -1,18 +1,26 @@
<?php
+/**
+ * @file mod/filestorage.php
+ *
+ */
require_once('include/attach.php');
+/**
+ *
+ * @param object &$a
+ */
function filestorage_post(&$a) {
- $channel_id = ((x($_POST,'uid')) ? intval($_POST['uid']) : 0);
+ $channel_id = ((x($_POST, 'uid')) ? intval($_POST['uid']) : 0);
if((! $channel_id) || (! local_user()) || ($channel_id != local_user())) {
notice( t('Permission denied.') . EOL);
return;
}
- $recurse = ((x($_POST,'recurse')) ? intval($_POST['recurse']) : 0);
- $resource = ((x($_POST,'filehash')) ? notags($_POST['filehash']) : '');
+ $recurse = ((x($_POST, 'recurse')) ? intval($_POST['recurse']) : 0);
+ $resource = ((x($_POST, 'filehash')) ? notags($_POST['filehash']) : '');
if(! $resource) {
notice(t('Item not found.') . EOL);
@@ -24,11 +32,11 @@ function filestorage_post(&$a) {
$str_group_deny = perms2str($_REQUEST['group_deny']);
$str_contact_deny = perms2str($_REQUEST['contact_deny']);
- attach_change_permissions($channel_id,$resource,$str_contact_allow,$str_group_allow,$str_contact_deny,$str_group_deny,$recurse = false);
+ attach_change_permissions($channel_id, $resource, $str_contact_allow, $str_group_allow, $str_contact_deny, $str_group_deny, $recurse);
//Build directory tree and redirect
$channel = $a->get_channel();
- $cloudPath = get_parent_cloudpath($channel_id, $channel['channel_address'], $resource) ;
+ $cloudPath = get_parent_cloudpath($channel_id, $channel['channel_address'], $resource);
goaway($cloudPath);
}
@@ -53,15 +61,15 @@ function filestorage_content(&$a) {
$observer = $a->get_observer();
$ob_hash = (($observer) ? $observer['xchan_hash'] : '');
- $perms = get_all_perms($owner,$ob_hash);
+ $perms = get_all_perms($owner, $ob_hash);
if(! $perms['view_storage']) {
notice( t('Permission denied.') . EOL);
return;
}
- // Since we have ACL'd files in the wild, but don't have ACL here yet, we
- // need to return for anyone other than the owner, despite the perms check for now.
+ // Since we have ACL'd files in the wild, but don't have ACL here yet, we
+ // need to return for anyone other than the owner, despite the perms check for now.
$is_owner = (((local_user()) && ($owner == local_user())) ? true : false);
if(! $is_owner) {
@@ -69,7 +77,6 @@ function filestorage_content(&$a) {
return;
}
-
if(argc() > 3 && argv(3) === 'delete') {
if(! $perms['write_storage']) {
notice( t('Permission denied.') . EOL);
@@ -77,7 +84,7 @@ function filestorage_content(&$a) {
}
$file = intval(argv(2));
- $r = q("select hash from attach where id = %d and uid = %d limit 1",
+ $r = q("SELECT hash FROM attach WHERE id = %d AND uid = %d LIMIT 1",
dbesc($file),
intval($owner)
);
@@ -86,11 +93,15 @@ function filestorage_content(&$a) {
goaway(z_root() . '/cloud/' . $which);
}
- attach_delete($owner,$r[0]['hash']);
-
- goaway(z_root() . '/cloud/' . $which);
- }
+ $f = $r[0];
+ $channel = $a->get_channel();
+
+ $parentpath = get_parent_cloudpath($channel['channel_id'], $channel['channel_address'], $f['hash']);
+
+ attach_delete($owner, $f['hash']);
+ goaway($parentpath);
+ }
if(argc() > 3 && argv(3) === 'edit') {
require_once('include/acl_selectors.php');
@@ -106,22 +117,24 @@ function filestorage_content(&$a) {
);
$f = $r[0];
-
$channel = $a->get_channel();
$cloudpath = get_cloudpath($f) . (($f['flags'] & ATTACH_FLAG_DIR) ? '?f=&davguest=1' : '');
$parentpath = get_parent_cloudpath($channel['channel_id'], $channel['channel_address'], $f['hash']);
- $aclselect_e = populate_acl($f,false);
+ $aclselect_e = populate_acl($f, false);
$is_a_dir = (($f['flags'] & ATTACH_FLAG_DIR) ? true : false);
$lockstate = (($f['allow_cid'] || $f['allow_gid'] || $f['deny_cid'] || $f['deny_gid']) ? 'lock' : 'unlock');
+ // Encode path that is used for link so it's a valid URL
+ // Keep slashes as slashes, otherwise mod_rewrite doesn't work correctly
+ $encoded_path = str_replace('%2F', '/', rawurlencode($cloudpath));
$o = replace_macros(get_markup_template('attach_edit.tpl'), array(
'$header' => t('Edit file permissions'),
'$file' => $f,
- '$cloudpath' => z_root() . '/' . $cloudpath,
+ '$cloudpath' => z_root() . '/' . $encoded_path,
'$parentpath' => $parentpath,
'$uid' => $channel['channel_id'],
'$channelnick' => $channel['channel_address'],
@@ -134,13 +147,14 @@ function filestorage_content(&$a) {
'$isadir' => $is_a_dir,
'$cpdesc' => t('Copy/paste this code to attach file to a post'),
'$cpldesc' => t('Copy/paste this URL to link file from a web page'),
- '$submit' => t('Submit')
-
+ '$submit' => t('Submit'),
+ '$attach_btn_title' => t('Attach this file to a new post'),
+ '$link_btn_title' => t('Show URL to this file'),
));
- return $o;
- }
+ echo $o;
+ killme();
+ }
goaway(z_root() . '/cloud/' . $which);
-
}
diff --git a/mod/follow.php b/mod/follow.php
index 663fb7536..e480a0964 100644
--- a/mod/follow.php
+++ b/mod/follow.php
@@ -26,10 +26,9 @@ function follow_init(&$a) {
// If we can view their stream, pull in some posts
- if($result['abook']['abook_their_perms'] & PERMS_R_STREAM)
+ if(($result['abook']['abook_their_perms'] & PERMS_R_STREAM) || ($result['abook']['xchan_network'] === 'rss'))
proc_run('php','include/onepoll.php',$result['abook']['abook_id']);
-
goaway(z_root() . '/connedit/' . $result['abook']['abook_id'] . '?f=&follow=1');
}
diff --git a/mod/fsuggest.php b/mod/fsuggest.php
index 8b6f077d3..2f4f9606b 100644
--- a/mod/fsuggest.php
+++ b/mod/fsuggest.php
@@ -52,7 +52,7 @@ function fsuggest_post(&$a) {
);
if(count($r)) {
$fsuggest_id = $r[0]['id'];
- q("UPDATE `fsuggest` SET `note` = '%s' WHERE `id` = %d AND `uid` = %d LIMIT 1",
+ q("UPDATE `fsuggest` SET `note` = '%s' WHERE `id` = %d AND `uid` = %d",
dbesc($note),
intval($fsuggest_id),
intval(local_user())
diff --git a/mod/group.php b/mod/group.php
index 0f265f6fb..f67623a83 100644
--- a/mod/group.php
+++ b/mod/group.php
@@ -44,7 +44,7 @@ function group_post(&$a) {
$public = intval($_POST['public']);
if((strlen($groupname)) && (($groupname != $group['name']) || ($public != $group['visible']))) {
- $r = q("UPDATE `groups` SET `name` = '%s', visible = %d WHERE `uid` = %d AND `id` = %d LIMIT 1",
+ $r = q("UPDATE `groups` SET `name` = '%s', visible = %d WHERE `uid` = %d AND `id` = %d",
dbesc($groupname),
intval($public),
intval(local_user()),
@@ -117,15 +117,15 @@ function group_content(&$a) {
check_form_security_token_ForbiddenOnErr('group_member_change', 't');
- $r = q("SELECT abook_xchan from abook left join xchan on abook_xchan = xchan_hash where abook_xchan = '%s' and abook_channel = %d and not (xchan_flags & %d) and not (abook_flags & %d) and not (abook_flags & %d) limit 1",
- dbesc(argv(2)),
+ $r = q("SELECT abook_xchan from abook left join xchan on abook_xchan = xchan_hash where abook_xchan = '%s' and abook_channel = %d and not (xchan_flags & %d)>0 and not (abook_flags & %d)>0 and not (abook_flags & %d)>0 limit 1",
+ dbesc(base64url_decode(argv(2))),
intval(local_user()),
intval(XCHAN_FLAGS_DELETED),
intval(ABOOK_FLAG_BLOCKED),
intval(ABOOK_FLAG_PENDING)
);
if(count($r))
- $change = argv(2);
+ $change = base64url_decode(argv(2));
}
@@ -204,14 +204,14 @@ function group_content(&$a) {
foreach($members as $member) {
if($member['xchan_url']) {
$member['archived'] = (($member['abook_flags'] & ABOOK_FLAG_ARCHIVED) ? true : false);
- $member['click'] = 'groupChangeMember(' . $group['id'] . ',\'' . $member['xchan_hash'] . '\',\'' . $sec_token . '\'); return false;';
+ $member['click'] = 'groupChangeMember(' . $group['id'] . ',\'' . base64url_encode($member['xchan_hash']) . '\',\'' . $sec_token . '\'); return false;';
$groupeditor['members'][] = micropro($member,true,'mpgroup', $textmode);
}
else
group_rmv_member(local_user(),$group['name'],$member['xchan_hash']);
}
- $r = q("SELECT abook.*, xchan.* FROM `abook` left join xchan on abook_xchan = xchan_hash WHERE `abook_channel` = %d AND not (abook_flags & %d) and not (xchan_flags & %d) and not (abook_flags & %d) order by xchan_name asc",
+ $r = q("SELECT abook.*, xchan.* FROM `abook` left join xchan on abook_xchan = xchan_hash WHERE `abook_channel` = %d AND not (abook_flags & %d)>0 and not (xchan_flags & %d)>0 and not (abook_flags & %d)>0 order by xchan_name asc",
intval(local_user()),
intval(ABOOK_FLAG_BLOCKED),
intval(XCHAN_FLAGS_DELETED),
@@ -223,7 +223,7 @@ function group_content(&$a) {
foreach($r as $member) {
if(! in_array($member['xchan_hash'],$preselected)) {
$member['archived'] = (($member['abook_flags'] & ABOOK_FLAG_ARCHIVED) ? true : false);
- $member['click'] = 'groupChangeMember(' . $group['id'] . ',\'' . $member['xchan_hash'] . '\',\'' . $sec_token . '\'); return false;';
+ $member['click'] = 'groupChangeMember(' . $group['id'] . ',\'' . base64url_encode($member['xchan_hash']) . '\',\'' . $sec_token . '\'); return false;';
$groupeditor['contacts'][] = micropro($member,true,'mpall', $textmode);
}
}
diff --git a/mod/hcard.php b/mod/hcard.php
new file mode 100644
index 000000000..3cb2fa01e
--- /dev/null
+++ b/mod/hcard.php
@@ -0,0 +1,54 @@
+<?php
+
+function hcard_init(&$a) {
+
+ if(argc() > 1)
+ $which = argv(1);
+ else {
+ notice( t('Requested profile is not available.') . EOL );
+ $a->error = 404;
+ return;
+ }
+
+ $profile = '';
+ $channel = $a->get_channel();
+
+ if((local_user()) && (argc() > 2) && (argv(2) === 'view')) {
+ $which = $channel['channel_address'];
+ $profile = argv(1);
+ $r = q("select profile_guid from profile where id = %d and uid = %d limit 1",
+ intval($profile),
+ intval(local_user())
+ );
+ if(! $r)
+ $profile = '';
+ $profile = $r[0]['profile_guid'];
+ }
+
+ $a->page['htmlhead'] .= '<link rel="alternate" type="application/atom+xml" href="' . $a->get_baseurl() . '/feed/' . $which .'" />' . "\r\n" ;
+
+ if(! $profile) {
+ $x = q("select channel_id as profile_uid from channel where channel_address = '%s' limit 1",
+ dbesc(argv(1))
+ );
+ if($x) {
+ $a->profile = $x[0];
+ }
+ }
+
+ profile_load($a,$which,$profile);
+
+
+}
+
+
+function hcard_content(&$a) {
+
+ require_once('include/widgets.php');
+ return widget_profile(array());
+
+
+
+}
+
+
diff --git a/mod/help.php b/mod/help.php
index 81ecd6ba9..a3dafcc9b 100644
--- a/mod/help.php
+++ b/mod/help.php
@@ -34,8 +34,6 @@ function help_content(&$a) {
$doctype = 'markdown';
- require_once('library/markdown.php');
-
$text = '';
if(argc() > 1) {
@@ -73,17 +71,22 @@ function help_content(&$a) {
));
}
- $text = preg_replace_callback("/#include (.*?)\;/ism", 'preg_callback_help_include', $text);
-
if($doctype === 'html')
$content = $text;
- if($doctype === 'markdown')
+ if($doctype === 'markdown') {
+ require_once('library/markdown.php');
+ # escape #include tags
+ $text = preg_replace('/#include/ism', '%%include', $text);
$content = Markdown($text);
+ $content = preg_replace('/%%include/ism', '#include', $content);
+ }
if($doctype === 'bbcode') {
require_once('include/bbcode.php');
$content = bbcode($text);
}
+ $content = preg_replace_callback("/#include (.*?)\;/ism", 'preg_callback_help_include', $content);
+
return replace_macros(get_markup_template("help.tpl"), array(
'$content' => $content
));
@@ -93,8 +96,17 @@ function help_content(&$a) {
function preg_callback_help_include($matches) {
- if($matches[1])
- return str_replace($matches[0],load_doc_file($matches[1]),$matches[0]);
+ if($matches[1]) {
+ $include = str_replace($matches[0],load_doc_file($matches[1]),$matches[0]);
+ if(preg_match('/\.bb$/', $matches[1]) || preg_match('/\.txt$/', $matches[1])) {
+ require_once('include/bbcode.php');
+ $include = bbcode($include);
+ } elseif(preg_match('/\.md$/', $matches[1])) {
+ require_once('library/markdown.php');
+ $include = Markdown($include);
+ }
+ return $include;
+ }
}
diff --git a/mod/home.php b/mod/home.php
index bc352976d..b2538795f 100644
--- a/mod/home.php
+++ b/mod/home.php
@@ -9,9 +9,10 @@ function home_init(&$a) {
$ret = array();
call_hooks('home_init',$ret);
- $channel = $a->get_channel();
+ $splash = ((argc() > 1 && argv(1) === 'splash') ? true : false);
- if(local_user() && $channel && $channel['xchan_url']) {
+ $channel = $a->get_channel();
+ if(local_user() && $channel && $channel['xchan_url'] && ! $splash) {
$dest = $channel['channel_startpage'];
if(! $dest)
$dest = get_pconfig(local_user(),'system','startpage');
@@ -23,14 +24,14 @@ function home_init(&$a) {
goaway($dest);
}
- if(get_account_id()) {
+ if(get_account_id() && ! $splash) {
goaway(z_root() . '/new_channel');
}
}
-function home_content(&$a) {
+function home_content(&$a, $update = 0, $load = false) {
$o = '';
@@ -39,10 +40,31 @@ function home_content(&$a) {
if(x($_SESSION,'mobile_theme'))
unset($_SESSION['mobile_theme']);
+ $splash = ((argc() > 1 && argv(1) === 'splash') ? true : false);
+
+ if(get_config('system','projecthome')) {
+ $o .= file_get_contents('assets/home.html');
+ $a->page['template'] = 'full';
+ $a->page['title'] = t('Red Matrix - &quot;The Network&quot;');
+ return $o;
+ }
+
+
+ // Deprecated
$channel_address = get_config("system", "site_channel" );
- if ($channel_address){
+
+ // See if the sys channel set a homepage
+ if (! $channel_address) {
+ require_once('include/identity.php');
+ $u = get_sys_channel();
+ if ($u) {
+ $u = array($u);
+ // change to channel_id when below deprecated and skip the $u=...
+ $channel_address = $u[0]['channel_address'];
+ }
+ }
- // We can do better, but until we figure out auto-linkification, let's keep things simple
+ if($channel_address) {
$page_id = 'home';
@@ -50,11 +72,6 @@ function home_content(&$a) {
dbesc($channel_address)
);
- if(! $u) {
- notice( t('Channel not found.') . EOL);
- return;
- }
-
$r = q("select item.* from item left join item_id on item.id = item_id.iid
where item.uid = %d and sid = '%s' and service = 'WEBPAGE' and
item_restrict = %d limit 1",
@@ -63,39 +80,161 @@ function home_content(&$a) {
intval(ITEM_WEBPAGE)
);
- if(! $r) {
- notice( t('Item not found.') . EOL);
- return;
+ if($r) {
+ xchan_query($r);
+ $r = fetch_post_tags($r,true);
+ $a->profile = array('profile_uid' => $u[0]['channel_id']);
+ $a->profile_uid = $u[0]['channel_id'];
+ $o .= prepare_page($r[0]);
+ return $o;
}
-
- xchan_query($r);
- $r = fetch_post_tags($r,true);
- $a->profile = array('profile_uid' => $u[0]['channel_id']);
- $o .= prepare_page($r[0]);
- return $o;
}
- if(get_config('system','projecthome')) {
- $o .= file_get_contents('assets/home.html');
- $a->page['template'] = 'full';
- $a->page['title'] = t('Red Matrix - &quot;The Network&quot;');
- return $o;
- }
+ // Nope, we didn't find an item. Let's see if there's any html
if(file_exists('home.html')) {
$o .= file_get_contents('home.html');
}
else {
-
- // If there's no site channel or home contents configured, fallback to the old behaviour
-
$sitename = get_config('system','sitename');
if($sitename)
$o .= '<h1>' . sprintf( t("Welcome to %s") ,$sitename) . '</h1>';
- if (! $a->config['system']['no_login_on_homepage'])
- $o .= login(($a->config['system']['register_policy'] == REGISTER_CLOSED) ? 0 : 1);
+
+ if(intval(get_config('system','block_public')) && (! local_user()) && (! remote_user())) {
+ // If there's nothing special happening, just spit out a login box
+
+ if (! $a->config['system']['no_login_on_homepage'])
+ $o .= login(($a->config['system']['register_policy'] == REGISTER_CLOSED) ? 0 : 1);
+ return $o;
+ }
+ else {
+
+ if(! $update) {
+
+ $maxheight = get_config('system','home_divmore_height');
+ if(! $maxheight)
+ $maxheight = 75;
+
+ $o .= '<div id="live-home"></div>' . "\r\n";
+ $o .= "<script> var profile_uid = " . ((intval(local_user())) ? local_user() : (-1))
+ . "; var profile_page = " . $a->pager['page']
+ . "; divmore_height = " . intval($maxheight) . "; </script>\r\n";
+
+ $a->page['htmlhead'] .= replace_macros(get_markup_template("build_query.tpl"),array(
+ '$baseurl' => z_root(),
+ '$pgtype' => 'home',
+ '$uid' => ((local_user()) ? local_user() : '0'),
+ '$gid' => '0',
+ '$cid' => '0',
+ '$cmin' => '0',
+ '$cmax' => '99',
+ '$star' => '0',
+ '$liked' => '0',
+ '$conv' => '0',
+ '$spam' => '0',
+ '$fh' => '1',
+ '$nouveau' => '0',
+ '$wall' => '0',
+ '$list' => '0',
+ '$page' => (($a->pager['page'] != 1) ? $a->pager['page'] : 1),
+ '$search' => '',
+ '$order' => 'comment',
+ '$file' => '',
+ '$cats' => '',
+ '$tags' => '',
+ '$dend' => '',
+ '$mid' => '',
+ '$dbegin' => ''
+ ));
+ }
+
+ if($update && ! $load) {
+ // only setup pagination on initial page view
+ $pager_sql = '';
+ }
+ else {
+ $a->set_pager_itemspage(20);
+ $pager_sql = sprintf(" LIMIT %d OFFSET %d ", intval($a->pager['itemspage']), intval($a->pager['start']));
+ }
+
+ require_once('include/identity.php');
+ $sys = get_sys_channel();
+ $uids = " and item.uid = " . intval($sys['channel_id']) . " ";
+ $a->data['firehose'] = intval($sys['channel_id']);
+
+ $page_mode = 'list';
+
+ $simple_update = (($update) ? " and ( item.item_flags & " . intval(ITEM_UNSEEN) . " ) > 0 " : '');
+
+ if($update && $_SESSION['loadtime'])
+ $simple_update .= " and item.changed > '" . datetime_convert('UTC','UTC',$_SESSION['loadtime']) . "' ";
+ if($load)
+ $simple_update = '';
+
+ //logger('update: ' . $update . ' load: ' . $load);
+
+ if($update) {
+
+ $ordering = "commented";
+
+ if($load) {
+
+ $_SESSION['loadtime'] = datetime_convert();
+
+ // Fetch a page full of parent items for this page
+
+ $r = q("SELECT distinct item.id AS item_id, $ordering FROM item
+ left join abook on item.author_xchan = abook.abook_xchan
+ WHERE true $uids AND item.item_restrict = 0
+ AND item.parent = item.id
+ and ((abook.abook_flags & %d) = 0 or abook.abook_flags is null)
+ $sql_extra3 $sql_extra $sql_nets
+ ORDER BY $ordering DESC $pager_sql ",
+ intval(ABOOK_FLAG_BLOCKED)
+ );
+
+ }
+
+ // Then fetch all the children of the parents that are on this page
+ $parents_str = '';
+ $update_unseen = '';
+
+ if($r) {
+
+ $parents_str = ids_to_querystr($r,'item_id');
+
+ $items = q("SELECT item.*, item.id AS item_id FROM item
+ WHERE true $uids AND item.item_restrict = 0
+ AND item.parent IN ( %s )
+ $sql_extra ",
+ dbesc($parents_str)
+ );
+
+ xchan_query($items,true,(-1));
+ $items = fetch_post_tags($items,true);
+ $items = conv_sort($items,$ordering);
+ }
+ else {
+ $items = array();
+ }
+
+ }
+
+ // fake it
+ $mode = ('network');
+
+ $o .= conversation($a,$items,$mode,$update,$page_mode);
+
+ if(($items) && (! $update))
+ $o .= alt_pager($a,count($items));
+
+ return $o;
+
+ }
+ call_hooks('home_content',$o);
+ return $o;
}
-
- call_hooks('home_content',$o);
- return $o;
-}
+
+ return $o;
+
+} \ No newline at end of file
diff --git a/mod/impel.php b/mod/impel.php
new file mode 100644
index 000000000..1c7541bef
--- /dev/null
+++ b/mod/impel.php
@@ -0,0 +1,121 @@
+<?php /** @file */
+
+// import page design element
+
+
+function impel_init(&$a) {
+
+ $ret = array('success' => false);
+
+ if(! local_user())
+ json_return_and_die($ret);
+
+ logger('impel: ' . print_r($_REQUEST,true), LOGGER_DATA);
+
+ $elm = $_REQUEST['element'];
+ $x = base64url_decode($elm);
+ if(! $x)
+ json_return_and_die($ret);
+
+ $j = json_decode($x,true);
+ if(! $j)
+ json_return_and_die($ret);
+
+
+ $channel = $a->get_channel();
+
+ $arr = array();
+
+ switch($j['type']) {
+ case 'webpage':
+ $arr['item_restrict'] = ITEM_WEBPAGE;
+ $namespace = 'WEBPAGE';
+ $installed_type = t('webpage');
+ break;
+ case 'block':
+ $arr['item_restrict'] = ITEM_BUILDBLOCK;
+ $namespace = 'BUILDBLOCK';
+ $installed_type = t('block');
+ break;
+ case 'layout':
+ $arr['item_restrict'] = ITEM_PDL;
+ $namespace = 'PDL';
+ $installed_type = t('layout');
+ break;
+ default:
+ logger('mod_impel: unrecognised element type' . print_r($j,true));
+ break;
+ }
+ $arr['uid'] = local_user();
+ $arr['aid'] = $channel['channel_account_id'];
+ $arr['title'] = $j['title'];
+ $arr['body'] = $j['body'];
+ $arr['term'] = $j['term'];
+ $arr['created'] = datetime_convert('UTC','UTC', $j['created']);
+ $arr['edited'] = datetime_convert('UTC','UTC',$j['edited']);
+ $arr['owner_xchan'] = get_observer_hash();
+ $arr['author_xchan'] = (($j['author_xchan']) ? $j['author_xchan'] : get_observer_hash());
+ $arr['mimetype'] = (($j['mimetype']) ? $j['mimetype'] : 'text/bbcode');
+
+ if(! $j['mid'])
+ $j['mid'] = item_message_id();
+
+ $arr['mid'] = $arr['parent_mid'] = $j['mid'];
+
+
+ if($j['pagetitle']) {
+ require_once('library/urlify/URLify.php');
+ $pagetitle = strtolower(URLify::transliterate($j['pagetitle']));
+ }
+
+
+
+ // Verify ability to use html or php!!!
+
+ $execflag = false;
+
+ if($arr['mimetype'] === 'application/x-php') {
+ $z = q("select account_id, account_roles from account left join channel on channel_account_id = account_id where channel_id = %d limit 1",
+ intval(local_user())
+ );
+
+ if($z && ($z[0]['account_roles'] & ACCOUNT_ROLE_ALLOWCODE)) {
+ $execflag = true;
+ }
+ }
+
+ $remote_id = 0;
+
+ $z = q("select * from item_id where sid = '%s' and service = '%s' and uid = %d limit 1",
+ dbesc($pagetitle),
+ dbesc($namespace),
+ intval(local_user())
+ );
+ $i = q("select id from item where mid = '%s' and uid = %d limit 1",
+ dbesc($arr['mid']),
+ intval(local_user())
+ );
+ if($z && $i) {
+ $remote_id = $z[0]['id'];
+ $arr['id'] = $i[0]['id'];
+ // don't update if it has the same timestamp as the original
+ if($arr['edited'] > $i[0]['edited'])
+ $x = item_store_update($arr,$execflag);
+ }
+ else {
+ $x = item_store($arr,$execflag);
+ }
+ if($x['success'])
+ $item_id = $x['item_id'];
+
+
+ update_remote_id($channel,$item_id,$arr['item_restrict'],$pagetitle,$namespace,$remote_id,$arr['mid']);
+
+
+ $ret['success'] = true;
+
+ info( sprintf( t('%s element installed'), $installed_type));
+
+ json_return_and_die(true);
+
+} \ No newline at end of file
diff --git a/mod/import.php b/mod/import.php
index d3b237c3a..c9a4edb67 100644
--- a/mod/import.php
+++ b/mod/import.php
@@ -9,13 +9,28 @@ require_once('include/identity.php');
function import_post(&$a) {
- if(! get_account_id()) {
+ $account_id = get_account_id();
+ if(! $account_id)
return;
+
+ $max_identities = account_service_class_fetch($account_id,'total_identities');
+ $max_friends = account_service_class_fetch($account_id,'total_channels');
+ $max_feeds = account_service_class_fetch($account_id,'total_feeds');
+
+ if($max_identities !== false) {
+ $r = q("select channel_id from channel where channel_account_id = %d",
+ intval($account_id)
+ );
+ if($r && count($r) > $max_identities) {
+ notice( sprintf( t('Your service plan only allows %d channels.'), $max_identities) . EOL);
+ return;
+ }
}
+
$data = null;
$seize = ((x($_REQUEST,'make_primary')) ? intval($_REQUEST['make_primary']) : 0);
-
+ $import_posts = ((x($_REQUEST,'import_posts')) ? intval($_REQUEST['import_posts']) : 0);
$src = $_FILES['filename']['tmp_name'];
$filename = basename($_FILES['filename']['name']);
$filesize = intval($_FILES['filename']['size']);
@@ -45,6 +60,8 @@ function import_post(&$a) {
$scheme = 'https://';
$api_path = '/api/red/channel/export/basic?f=&channel=' . $channelname;
+ if($import_posts)
+ $api_path .= '&posts=1';
$binary = false;
$redirects = 0;
$opts = array('http_auth' => $email . ':' . $password);
@@ -84,9 +101,33 @@ function import_post(&$a) {
// We should probably also verify the hash
if($r) {
- logger('mod_import: duplicate channel. ', print_r($channel,true));
- notice( t('Cannot create a duplicate channel identifier on this system. Import failed.') . EOL);
- return;
+ if($r[0]['channel_guid'] === $channel['channel_guid'] || $r[0]['channel_hash'] === $channel['channel_hash']) {
+ logger('mod_import: duplicate channel. ', print_r($channel,true));
+ notice( t('Cannot create a duplicate channel identifier on this system. Import failed.') . EOL);
+ return;
+ }
+ else {
+ // try at most ten times to generate a unique address.
+ $x = 0;
+ $found_unique = false;
+ do {
+ $tmp = $channel['channel_address'] . mt_rand(1000,9999);
+ $r = q("select * from channel where channel_address = '%s' limit 1",
+ dbesc($tmp)
+ );
+ if(! $r) {
+ $channel['channel_address'] = $tmp;
+ $found_unique = true;
+ break;
+ }
+ $x ++;
+ } while ($x < 10);
+ if(! $found_unique) {
+ logger('mod_import: duplicate channel. randomisation failed.', print_r($channel,true));
+ notice( t('Unable to create a unique channel address. Import failed.') . EOL);
+ return;
+ }
+ }
}
unset($channel['channel_id']);
@@ -179,13 +220,14 @@ function import_post(&$a) {
// create new hubloc for the new channel at this site
- $r = q("insert into hubloc ( hubloc_guid, hubloc_guid_sig, hubloc_hash, hubloc_addr, hubloc_flags,
+ $r = q("insert into hubloc ( hubloc_guid, hubloc_guid_sig, hubloc_hash, hubloc_addr, hubloc_network, hubloc_flags,
hubloc_url, hubloc_url_sig, hubloc_host, hubloc_callback, hubloc_sitekey )
- values ( '%s', '%s', '%s', '%s', %d, '%s', '%s', '%s', '%s', '%s' )",
+ values ( '%s', '%s', '%s', '%s', '%s', %d, '%s', '%s', '%s', '%s', '%s' )",
dbesc($channel['channel_guid']),
dbesc($channel['channel_guid_sig']),
dbesc($channel['channel_hash']),
dbesc($channel['channel_address'] . '@' . get_app()->get_hostname()),
+ dbesc('zot'),
intval(($seize) ? HUBLOC_FLAGS_PRIMARY : 0),
dbesc(z_root()),
dbesc(base64url_encode(rsa_sign(z_root(),$channel['channel_prvkey']))),
@@ -197,7 +239,7 @@ function import_post(&$a) {
// reset the original primary hubloc if it is being seized
if($seize)
- $r = q("update hubloc set hubloc_flags = (hubloc_flags ^ %d) where (hubloc_flags & %d) and hubloc_hash = '%s' and hubloc_url != '%s' ",
+ $r = q("update hubloc set hubloc_flags = (hubloc_flags & ~%d) where (hubloc_flags & %d)>0 and hubloc_hash = '%s' and hubloc_url != '%s' ",
intval(HUBLOC_FLAGS_PRIMARY),
intval(HUBLOC_FLAGS_PRIMARY),
dbesc($channel['channel_hash']),
@@ -210,7 +252,7 @@ function import_post(&$a) {
// replace our existing xchan if we're seizing control
- $r = q("delete from xchan where xchan_hash = '%s' limit 1",
+ $r = q("delete from xchan where xchan_hash = '%s'",
dbesc($channel['channel_hash'])
);
@@ -255,12 +297,12 @@ function import_post(&$a) {
require_once('include/photo/photo_driver.php');
$photos = import_profile_photo($xchan['xchan_photo_l'],$xchan['xchan_hash']);
if($photos[4])
- $photodate = '0000-00-00 00:00:00';
+ $photodate = NULL_DATE;
else
$photodate = $xchan['xchan_photo_date'];
$r = q("update xchan set xchan_photo_l = '%s', xchan_photo_m = '%s', xchan_photo_s = '%s', xchan_photo_mimetype = '%s', xchan_photo_date = '%s'
- where xchan_hash = '%s' limit 1",
+ where xchan_hash = '%s'",
dbesc($photos[0]),
dbesc($photos[1]),
dbesc($photos[2]),
@@ -275,10 +317,18 @@ function import_post(&$a) {
// FIXME - ensure we have an xchan if somebody is trying to pull a fast one
+ $friends = 0;
+ $feeds = 0;
+
// import contacts
$abooks = $data['abook'];
if($abooks) {
foreach($abooks as $abook) {
+ if($max_friends !== false && $friends > $max_friends)
+ continue;
+ if($max_feeds !== false && ($abook['abook_flags'] & ABOOK_FLAG_FEED) && $feeds > $max_feeds)
+ continue;
+
unset($abook['abook_id']);
$abook['abook_account'] = get_account_id();
$abook['abook_channel'] = $channel['channel_id'];
@@ -288,6 +338,10 @@ function import_post(&$a) {
. "`) VALUES ('"
. implode("', '", array_values($abook))
. "')" );
+
+ $friends ++;
+ if($abook['abook_flags'] & ABOOK_FLAG_FEED)
+ $feeds ++;
}
}
@@ -314,7 +368,7 @@ function import_post(&$a) {
unset($group['id']);
$group['uid'] = $channel['channel_id'];
dbesc_array($group);
- $r = dbq("INSERT INTO group (`"
+ $r = dbq("INSERT INTO groups (`"
. implode("`, `", array_keys($group))
. "`) VALUES ('"
. implode("', '", array_values($group))
@@ -348,18 +402,75 @@ function import_post(&$a) {
}
}
-// FIXME - ensure we have a self entry if somebody is trying to pull a fast one
+ $saved_notification_flags = notifications_off($channel['channel_id']);
- if($seize) {
- // notify old server that it is no longer primary.
-
+ if($import_posts && array_key_exists('item',$data) && $data['item']) {
+
+ foreach($data['item'] as $i) {
+ $item = get_item_elements($i);
+
+ $r = q("select id, edited from item where mid = '%s' and uid = %d limit 1",
+ dbesc($item['mid']),
+ intval($channel['channel_id'])
+ );
+ if($r) {
+ if($item['edited'] > $r[0]['edited']) {
+ $item['id'] = $r[0]['id'];
+ $item['uid'] = $channel['channel_id'];
+ item_store_update($item);
+ continue;
+ }
+ }
+ else {
+ $item['aid'] = $channel['channel_account_id'];
+ $item['uid'] = $channel['channel_id'];
+ $item_result = item_store($item);
+ }
+
+ }
+
+ }
+
+ notifications_on($channel['channel_id'],$saved_notification_flags);
+
+ if(array_key_exists('item_id',$data) && $data['item_id']) {
+ foreach($data['item_id'] as $i) {
+ $r = q("select id from item where mid = '%s' and uid = %d limit 1",
+ dbesc($i['mid']),
+ intval($channel['channel_id'])
+ );
+ if(! $r)
+ continue;
+ $z = q("select * from item_id where service = '%s' and sid = '%s' and iid = %d and uid = %d limit 1",
+ dbesc($i['service']),
+ dbesc($i['sid']),
+ intval($r[0]['id']),
+ intval($channel['channel_id'])
+ );
+ if(! $z) {
+ q("insert into item_id (iid,uid,sid,service) values(%d,%d,'%s','%s')",
+ intval($r[0]['id']),
+ intval($channel['channel_id']),
+ dbesc($i['sid']),
+ dbesc($i['service'])
+ );
+ }
+ }
}
+
+
+// FIXME - ensure we have a self entry if somebody is trying to pull a fast one
+
+ // send out refresh requests
+ // notify old server that it may no longer be primary.
+
+ proc_run('php','include/notifier.php','location',$channel['channel_id']);
+
// This will indirectly perform a refresh_all *and* update the directory
proc_run('php', 'include/directory.php', $channel['channel_id']);
- // send out refresh requests
notice( t('Import completed.') . EOL);
@@ -367,7 +478,6 @@ function import_post(&$a) {
goaway(z_root() . '/network' );
-
}
@@ -388,6 +498,7 @@ function import_content(&$a) {
'$label_old_pass' => t('Your old login password'),
'$common' => t('For either option, please choose whether to make this hub your new primary address, or whether your old location should continue this role. You will be able to post from either location, but only one can be marked as the primary location for files, photos, and media.'),
'$label_import_primary' => t('Make this hub my primary location'),
+ '$label_import_posts' => t('Import existing posts if possible'),
'$email' => '',
'$pass' => '',
'$submit' => t('Submit')
diff --git a/mod/invite.php b/mod/invite.php
index 9e37d1e6d..12080c4d9 100644
--- a/mod/invite.php
+++ b/mod/invite.php
@@ -117,18 +117,6 @@ function invite_content(&$a) {
}
}
-// $dirloc = get_config('system','directory_submit_url');
-// if(strlen($dirloc)) {
-// if($a->config['system']['register_policy'] == REGISTER_CLOSED)
-// $linktxt = sprintf( t('Visit %s for a list of public sites that you can join. Friendica members on other sites can all connect with each other, as well as with members of many other social networks.'), dirname($dirloc) . '/siteinfo');
-// elseif($a->config['system']['register_policy'] != REGISTER_CLOSED)
-// $linktxt = sprintf( t('To accept this invitation, please visit and register at %s or any other public Friendica website.'), $a->get_baseurl())
-// . "\r\n" . "\r\n" . sprintf( t('Friendica sites all inter-connect to create a huge privacy-enhanced social web that is owned and controlled by its members. They can also connect with many traditional social networks. See %s for a list of alternate Friendica sites you can join.'),dirname($dirloc) . '/siteinfo');
-// }
-// else {
-// $o = t('Our apologies. This system is not currently configured to connect with other public sites or invite members.');
-// return $o;
-// }
$ob = $a->get_observer();
if(! $ob)
@@ -141,18 +129,16 @@ function invite_content(&$a) {
'$invite' => t('Send invitations'),
'$addr_text' => t('Enter email addresses, one per line:'),
'$msg_text' => t('Your message:'),
- '$default_message' => t('You are cordially invited to join me and some other close friends on the Red Matrix - a revolutionary new decentralised communication and information tool.') . "\r\n" . "\r\n"
+ '$default_message' => t('Please join my community on RedMatrix.') . "\r\n" . "\r\n"
. $linktxt
- . (($invonly) ? "\r\n" . "\r\n" . t('You will need to supply this invitation code: $invite_code') . "\r\n" . "\r\n" : '')
- . t('Please visit my channel at')
+ . (($invonly) ? "\r\n" . "\r\n" . t('You will need to supply this invitation code: ') . $invite_code . "\r\n" . "\r\n" : '')
+ . t('1. Register at any RedMatrix location (they are all inter-connected)')
+ . "\r\n" . "\r\n" . z_root() . '/register'
+ . "\r\n" . "\r\n" . t('2. Enter my RedMatrix network address into the site searchbar.')
+ . "\r\n" . "\r\n" . $ob['xchan_addr'] . ' (' . t('or visit ') . z_root() . '/channel/' . $channel['channel_address'] . ')'
. "\r\n" . "\r\n"
- . z_root() . "/channel/" . $channel['channel_address']
- . "\r\n" . "\r\n"
- . t('Once you have registered (on ANY Red Matrix site - they are all inter-connected), please connect with my Red Matrix channel address:')
- . "\r\n" . "\r\n" . $ob['xchan_addr']
- . "\r\n" . "\r\n" . t('Click the [Register] link on the following page to join.') . "\r\n" . "\r\n" . z_root()
-
- . "\r\n" . "\r\n" . t('For more information about the Red Matrix Project and why it has the potential to change the internet as we know it, please visit http://getzot.com') . "\r\n" . "\r\n" ,
+ . t('3. Click [Connect]')
+ . "\r\n" . "\r\n" ,
'$submit' => t('Submit')
));
diff --git a/mod/item.php b/mod/item.php
index d4739244a..894e23a0f 100644
--- a/mod/item.php
+++ b/mod/item.php
@@ -32,8 +32,17 @@ function item_post(&$a) {
require_once('include/security.php');
$uid = local_user();
-
$channel = null;
+ $observer = null;
+
+ $profile_uid = ((x($_REQUEST,'profile_uid')) ? intval($_REQUEST['profile_uid']) : 0);
+ require_once('include/identity.php');
+ $sys = get_sys_channel();
+ if($sys && $profile_uid && ($sys['channel_id'] == $profile_uid) && is_site_admin()) {
+ $uid = intval($sys['channel_id']);
+ $channel = $sys;
+ $observer = $sys;
+ }
if(x($_REQUEST,'dropitems')) {
require_once('include/items.php');
@@ -70,30 +79,32 @@ function item_post(&$a) {
$message_id = ((x($_REQUEST,'message_id') && $api_source) ? strip_tags($_REQUEST['message_id']) : '');
$created = ((x($_REQUEST,'created')) ? datetime_convert('UTC','UTC',$_REQUEST['created']) : datetime_convert());
- $profile_uid = ((x($_REQUEST,'profile_uid')) ? intval($_REQUEST['profile_uid']) : 0);
$post_id = ((x($_REQUEST,'post_id')) ? intval($_REQUEST['post_id']) : 0);
$app = ((x($_REQUEST,'source')) ? strip_tags($_REQUEST['source']) : '');
$return_path = ((x($_REQUEST,'return')) ? $_REQUEST['return'] : '');
$preview = ((x($_REQUEST,'preview')) ? intval($_REQUEST['preview']) : 0);
$categories = ((x($_REQUEST,'category')) ? escape_tags($_REQUEST['category']) : '');
$webpage = ((x($_REQUEST,'webpage')) ? intval($_REQUEST['webpage']) : 0);
- $pagetitle = ((x($_REQUEST,'pagetitle')) ? escape_tags($_REQUEST['pagetitle']) : '');
+ $pagetitle = ((x($_REQUEST,'pagetitle')) ? escape_tags(urlencode($_REQUEST['pagetitle'])) : '');
$layout_mid = ((x($_REQUEST,'layout_mid')) ? escape_tags($_REQUEST['layout_mid']): '');
$plink = ((x($_REQUEST,'permalink')) ? escape_tags($_REQUEST['permalink']) : '');
+ // allow API to bulk load a bunch of imported items with sending out a bunch of posts.
+ $nopush = ((x($_REQUEST,'nopush')) ? intval($_REQUEST['nopush']) : 0);
/*
- Check service class limits
- */
- if (local_user() && !(x($_REQUEST,'parent')) && !(x($_REQUEST,'post_id'))) {
- $ret=item_check_service_class(local_user(),x($_REQUEST,'webpage'));
- if (!$ret['success']) {
- notice( t($ret['message']) . EOL) ;
- if(x($_REQUEST,'return'))
+ * Check service class limits
+ */
+ if ($uid && !(x($_REQUEST,'parent')) && !(x($_REQUEST,'post_id'))) {
+ $ret = item_check_service_class($uid,x($_REQUEST,'webpage'));
+ if (!$ret['success']) {
+ notice( t($ret['message']) . EOL) ;
+ if(x($_REQUEST,'return'))
goaway($a->get_baseurl() . "/" . $return_path );
killme();
+ }
}
- }
+
if($pagetitle) {
require_once('library/urlify/URLify.php');
$pagetitle = strtolower(URLify::transliterate($pagetitle));
@@ -109,6 +120,7 @@ function item_post(&$a) {
$parent = ((x($_REQUEST,'parent')) ? intval($_REQUEST['parent']) : 0);
$parent_mid = ((x($_REQUEST,'parent_mid')) ? trim($_REQUEST['parent_mid']) : '');
+ $route = '';
$parent_item = null;
$parent_contact = null;
$thr_parent = '';
@@ -125,11 +137,11 @@ function item_post(&$a) {
intval($parent)
);
}
- elseif($parent_mid && local_user()) {
+ elseif($parent_mid && $uid) {
// This is coming from an API source, and we are logged in
$r = q("SELECT * FROM `item` WHERE `mid` = '%s' AND `uid` = %d LIMIT 1",
dbesc($parent_mid),
- intval(local_user())
+ intval($uid)
);
}
// if this isn't the real parent of the conversation, find it
@@ -160,12 +172,12 @@ function item_post(&$a) {
$thr_parent = $parent_mid;
+ $route = $parent_item['route'];
}
-
- $observer = $a->get_observer();
-
+ if(! $observer)
+ $observer = $a->get_observer();
if($parent) {
logger('mod_item: item_post parent=' . $parent);
@@ -218,7 +230,7 @@ function item_post(&$a) {
if(! $channel) {
- if(local_user() && local_user() == $profile_uid) {
+ if($uid && $uid == $profile_uid) {
$channel = $a->get_channel();
}
else {
@@ -254,12 +266,32 @@ function item_post(&$a) {
killme();
}
+ $walltowall = false;
+ $walltowall_comment = false;
+
if($observer) {
logger('mod_item: post accepted from ' . $observer['xchan_name'] . ' for ' . $owner_xchan['xchan_name'], LOGGER_DEBUG);
- }
-
+ // wall-to-wall detection.
+ // For top-level posts, if the author and owner are different it's a wall-to-wall
+ // For comments, We need to additionally look at the parent and see if it's a wall post that originated locally.
+ if($observer['xchan_name'] != $owner_xchan['xchan_name']) {
+ if($parent_item && ($parent_item['item_flags'] & (ITEM_WALL|ITEM_ORIGIN)) == (ITEM_WALL|ITEM_ORIGIN)) {
+ $walltowall_comment = true;
+ $walltowall = true;
+ }
+ if(! $parent) {
+ $walltowall = true;
+ }
+ }
+ }
+
+ $public_policy = ((x($_REQUEST,'public_policy')) ? escape_tags($_REQUEST['public_policy']) : map_scope($channel['channel_r_stream'],true));
+ if($webpage)
+ $public_policy = '';
+ if($public_policy)
+ $private = 1;
if($orig_post) {
$private = 0;
@@ -275,12 +307,14 @@ function item_post(&$a) {
$str_contact_allow = $orig_post['allow_cid'];
$str_group_deny = $orig_post['deny_gid'];
$str_contact_deny = $orig_post['deny_cid'];
+ $public_policy = $orig_post['public_policy'];
}
if((strlen($str_group_allow))
|| strlen($str_contact_allow)
|| strlen($str_group_deny)
- || strlen($str_contact_deny)) {
+ || strlen($str_contact_deny)
+ || strlen($public_policy)) {
$private = 1;
}
@@ -321,6 +355,15 @@ function item_post(&$a) {
$str_group_deny = $channel['channel_deny_gid'];
$str_contact_deny = $channel['channel_deny_cid'];
}
+ elseif($walltowall) {
+
+ // use the channel owner's default permissions
+
+ $str_group_allow = $channel['channel_allow_gid'];
+ $str_contact_allow = $channel['channel_allow_cid'];
+ $str_group_deny = $channel['channel_deny_gid'];
+ $str_contact_deny = $channel['channel_deny_cid'];
+ }
else {
// use the posted permissions
@@ -344,6 +387,7 @@ function item_post(&$a) {
|| strlen($str_contact_allow)
|| strlen($str_group_deny)
|| strlen($str_contact_deny)
+ || strlen($public_policy)
) ? 1 : 0);
// If this is a comment, set the permissions from the parent.
@@ -355,10 +399,12 @@ function item_post(&$a) {
|| strlen($parent_item['allow_cid'])
|| strlen($parent_item['allow_gid'])
|| strlen($parent_item['deny_cid'])
- || strlen($parent_item['deny_gid'])) {
+ || strlen($parent_item['deny_gid'])
+ || strlen($parent_item['public_policy'])) {
$private = (($parent_item['item_private']) ? $parent_item['item_private'] : 1);
}
+ $public_policy = $parent_item['public_policy'];
$str_contact_allow = $parent_item['allow_cid'];
$str_group_allow = $parent_item['allow_gid'];
$str_contact_deny = $parent_item['deny_cid'];
@@ -377,13 +423,13 @@ function item_post(&$a) {
}
- $expires = '0000-00-00 00:00:00';
+ $expires = NULL_DATE;
if(feature_enabled($profile_uid,'content_expire')) {
if(x($_REQUEST,'expire')) {
$expires = datetime_convert(date_default_timezone_get(),'UTC', $_REQUEST['expire']);
if($expires <= datetime_convert())
- $expires = '0000-00-00 00:00:00';
+ $expires = NULL_DATE;
}
}
@@ -407,7 +453,7 @@ function item_post(&$a) {
intval($profile_uid)
);
if($z && ($z[0]['account_roles'] & ACCOUNT_ROLE_ALLOWCODE)) {
- if(local_user() && (get_account_id() == $z[0]['account_id'])) {
+ if($uid && (get_account_id() == $z[0]['account_id'])) {
$execflag = true;
}
else {
@@ -422,12 +468,15 @@ function item_post(&$a) {
if($mimetype === 'text/bbcode') {
- if(local_user() && local_user() == $profile_uid && feature_enabled(local_user(),'markdown')) {
+ require_once('include/text.php');
+ if($uid && $uid == $profile_uid && feature_enabled($uid,'markdown')) {
require_once('include/bb2diaspora.php');
+ $body = escape_tags($body);
+ $body = preg_replace_callback('/\[share(.*?)\]/ism','share_shield',$body);
$body = diaspora2bb($body,true);
+ $body = preg_replace_callback('/\[share(.*?)\]/ism','share_unshield',$body);
}
-
// BBCODE alert: the following functions assume bbcode input
// and will require alternatives for alternative content-types (text/html, text/markdown, text/plain, etc.)
// we may need virtual or template classes to implement the possible alternatives
@@ -555,11 +604,18 @@ function item_post(&$a) {
if($fullnametagged)
continue;
- $success = handle_tag($a, $body, $access_tag, $str_tags, (local_user()) ? local_user() : $profile_uid , $tag);
- logger('handle_tag: ' . print_r($success,tue), LOGGER_DATA);
+ $success = handle_tag($a, $body, $access_tag, $str_tags, ($uid) ? $uid : $profile_uid , $tag);
+ logger('handle_tag: ' . print_r($success,true), LOGGER_DATA);
if(($access_tag) && (! $parent_item)) {
logger('access_tag: ' . $tag . ' ' . print_r($access_tag,true), LOGGER_DATA);
- if ($first_access_tag) {
+ if ($first_access_tag && (! get_pconfig($profile_uid,'system','no_private_mention_acl_override'))) {
+
+ // This is a tough call, hence configurable. The issue is that one can type in a @!privacy mention
+ // and also have a default ACL (perhaps from viewing a collection) and could be suprised that the
+ // privacy mention wasn't the only recipient. So the default is to wipe out the existing ACL if a
+ // private mention is found. This can be over-ridden if you wish private mentions to be in
+ // addition to the current ACL settings.
+
$str_contact_allow = '';
$str_group_allow = '';
$first_access_tag = false;
@@ -629,7 +685,8 @@ function item_post(&$a) {
}
}
- $item_flags |= ITEM_UNSEEN;
+ if(local_user() != $profile_uid)
+ $item_flags |= ITEM_UNSEEN;
if($post_type === 'wall' || $post_type === 'wall-comment')
$item_flags = $item_flags | ITEM_WALL;
@@ -705,9 +762,11 @@ function item_post(&$a) {
$datarray['item_restrict'] = $item_restrict;
$datarray['item_flags'] = $item_flags;
$datarray['layout_mid'] = $layout_mid;
+ $datarray['public_policy'] = $public_policy;
$datarray['comment_policy'] = map_scope($channel['channel_w_comment']);
$datarray['term'] = $post_tags;
$datarray['plink'] = $plink;
+ $datarray['route'] = $route;
// preview mode - prepare the body for display and send it via json
@@ -749,7 +808,7 @@ function item_post(&$a) {
$datarray['body'] = z_input_filter($datarray['uid'],$datarray['body'],$datarray['mimetype']);
- if(local_user()) {
+ if($uid) {
if($channel['channel_hash'] === $datarray['author_xchan']) {
$datarray['sig'] = base64url_encode(rsa_sign($datarray['body'],$channel['channel_prvkey']));
$datarray['item_flags'] = $datarray['item_flags'] | ITEM_VERIFIED;
@@ -760,9 +819,9 @@ function item_post(&$a) {
$key = get_config('system','pubkey');
$datarray['item_flags'] = $datarray['item_flags'] | ITEM_OBSCURED;
if($datarray['title'])
- $datarray['title'] = json_encode(aes_encapsulate($datarray['title'],$key));
+ $datarray['title'] = json_encode(crypto_encapsulate($datarray['title'],$key));
if($datarray['body'])
- $datarray['body'] = json_encode(aes_encapsulate($datarray['body'],$key));
+ $datarray['body'] = json_encode(crypto_encapsulate($datarray['body'],$key));
}
if($orig_post) {
@@ -772,7 +831,9 @@ function item_post(&$a) {
update_remote_id($channel,$post_id,$webpage,$pagetitle,$namespace,$remote_id,$mid);
- proc_run('php', "include/notifier.php", 'edit_post', $post_id);
+ if(! $nopush)
+ proc_run('php', "include/notifier.php", 'edit_post', $post_id);
+
if((x($_REQUEST,'return')) && strlen($return_path)) {
logger('return: ' . $return_path);
goaway($a->get_baseurl() . "/" . $return_path );
@@ -782,7 +843,6 @@ function item_post(&$a) {
else
$post_id = 0;
-
$post = item_store($datarray,$execflag);
$post_id = $post['item_id'];
@@ -831,7 +891,7 @@ function item_post(&$a) {
// They will show up as people comment on them.
if($parent_item['item_restrict'] & ITEM_HIDDEN) {
- $r = q("UPDATE `item` SET `item_restrict` = %d WHERE `id` = %d LIMIT 1",
+ $r = q("UPDATE `item` SET `item_restrict` = %d WHERE `id` = %d",
intval($parent_item['item_restrict'] - ITEM_HIDDEN),
intval($parent_item['id'])
);
@@ -844,6 +904,12 @@ function item_post(&$a) {
// NOTREACHED
}
+ if($parent) {
+ // Store the comment signature information in case we need to relay to Diaspora
+ $ditem = $datarray;
+ $ditem['author'] = $observer;
+ store_diaspora_comment_sig($ditem,$channel,$parent_item, $post_id, (($walltowall_comment) ? 1 : 0));
+ }
update_remote_id($channel,$post_id,$webpage,$pagetitle,$namespace,$remote_id,$mid);
@@ -852,7 +918,8 @@ function item_post(&$a) {
call_hooks('post_local_end', $datarray);
- proc_run('php', 'include/notifier.php', $notify_type, $post_id);
+ if(! $nopush)
+ proc_run('php', 'include/notifier.php', $notify_type, $post_id);
logger('post_complete');
@@ -924,251 +991,14 @@ function item_content(&$a) {
}
}
-/**
- * This function removes the tag $tag from the text $body and replaces it with
- * the appropiate link.
- *
- * @param unknown_type $body the text to replace the tag in
- * @param unknown_type $access_tag - used to return tag ACL exclusions e.g. @!foo
- * @param unknown_type $str_tags string to add the tag to
- * @param unknown_type $profile_uid
- * @param unknown_type $tag the tag to replace
- *
- * @return boolean true if replaced, false if not replaced
- */
-function handle_tag($a, &$body, &$access_tag, &$str_tags, $profile_uid, $tag) {
-
- $replaced = false;
- $r = null;
-
-
- $termtype = ((strpos($tag,'#') === 0) ? TERM_HASHTAG : TERM_UNKNOWN);
- $termtype = ((strpos($tag,'@') === 0) ? TERM_MENTION : $termtype);
- $termtype = ((strpos($tag,'#^[') === 0) ? TERM_BOOKMARK : $termtype);
-
-
- //is it a hash tag?
- if(strpos($tag,'#') === 0) {
- if(strpos($tag,'#^[') === 0) {
- if(preg_match('/#\^\[(url|zrl)(.*?)\](.*?)\[\/(url|zrl)\]/',$tag,$match)) {
- $basetag = $match[3];
- $url = ((substr($match[2],0,1) === '=') ? substr($match[2],1) : $match[3]);
- $replaced = true;
-
- }
- }
- // if the tag is already replaced...
- elseif(strpos($tag,'[zrl=')) {
- //...do nothing
- return $replaced;
- }
- if($tag == '#getzot') {
- $basetag = 'getzot';
- $url = 'https://redmatrix.me';
- $newtag = '#[zrl=' . $url . ']' . $basetag . '[/zrl]';
- $body = str_replace($tag,$newtag,$body);
- $replaced = true;
- }
- if(! $replaced) {
-
- //base tag has the tags name only
-
- if((substr($tag,0,7) === '#&quot;') && (substr($tag,-6,6) === '&quot;')) {
- $basetag = substr($tag,7);
- $basetag = substr($basetag,0,-6);
- }
- else
- $basetag = str_replace('_',' ',substr($tag,1));
-
- //create text for link
- $url = $a->get_baseurl() . '/search?tag=' . rawurlencode($basetag);
- $newtag = '#[zrl=' . $a->get_baseurl() . '/search?tag=' . rawurlencode($basetag) . ']' . $basetag . '[/zrl]';
- //replace tag by the link
- $body = str_replace($tag, $newtag, $body);
- $replaced = true;
- }
- //is the link already in str_tags?
- if(! stristr($str_tags,$newtag)) {
- //append or set str_tags
- if(strlen($str_tags))
- $str_tags .= ',';
- $str_tags .= $newtag;
- }
- return array('replaced' => $replaced, 'termtype' => $termtype, 'term' => $basetag, 'url' => $url, 'contact' => $r[0]);
- }
-
- //is it a person tag?
-
- if(strpos($tag,'@') === 0) {
-
- // The @! tag will alter permissions
- $exclusive = ((strpos($tag,'!') === 1) ? true : false);
-
- //is it already replaced?
- if(strpos($tag,'[zrl='))
- return $replaced;
-
- //get the person's name
-
- $name = substr($tag,(($exclusive) ? 2 : 1)); // The name or name fragment we are going to replace
- $newname = $name; // a copy that we can mess with
- $tagcid = 0;
-
- $r = null;
-
- // is it some generated name?
-
- $forum = false;
- $trailing_plus_name = false;
-
- // @channel+ is a forum or network delivery tag
-
- if(substr($newname,-1,1) === '+') {
- $forum = true;
- $newname = substr($newname,0,-1);
- }
-
- // Here we're looking for an address book entry as provided by the auto-completer
- // of the form something+nnn where nnn is an abook_id or the first chars of xchan_hash
-
- if(strrpos($newname,'+')) {
- //get the id
-
- if(strrpos($tagcid,' '))
- $tagcid = substr($tagcid,0,strrpos($tagcid,' '));
-
- $tagcid = substr($newname,strrpos($newname,'+') + 1);
-
- if(strlen($tagcid) < 16)
- $abook_id = intval($tagcid);
- //remove the next word from tag's name
- if(strpos($name,' ')) {
- $name = substr($name,0,strpos($name,' '));
- }
-
- if($abook_id) { // if there was an id
- // select channel with that id from the logged in user's address book
- $r = q("SELECT * FROM abook left join xchan on abook_xchan = xchan_hash
- WHERE abook_id = %d AND abook_channel = %d LIMIT 1",
- intval($abook_id),
- intval($profile_uid)
- );
- }
- else {
- $r = q("SELECT * FROM xchan
- WHERE xchan_hash like '%s%%' LIMIT 1",
- dbesc($tagcid)
- );
- }
- }
-
- if(! $r) {
-
- // look for matching names in the address book
-
- // Two ways to deal with spaces - doube quote the name or use underscores
- // we see this after input filtering so quotes have been html entity encoded
-
- if((substr($name,0,6) === '&quot;') && (substr($name,-6,6) === '&quot;')) {
- $newname = substr($name,6);
- $newname = substr($newname,0,-6);
- }
- else
- $newname = str_replace('_',' ',$name);
-
- //select someone from this user's contacts by name
- $r = q("SELECT * FROM abook left join xchan on abook_xchan = xchan_hash
- WHERE xchan_name = '%s' AND abook_channel = %d LIMIT 1",
- dbesc($newname),
- intval($profile_uid)
- );
-
- if(! $r) {
- //select someone by attag or nick and the name passed in
- $r = q("SELECT * FROM abook left join xchan on abook_xchan = xchan_hash
- WHERE xchan_addr like ('%s') AND abook_channel = %d LIMIT 1",
- dbesc($newname . '@%'),
- intval($profile_uid)
- );
- }
-
- if(! $r) {
-
- // it's possible somebody has a name ending with '+', which we stripped off as a forum indicator
- // This is very rare but we want to get it right.
-
- $r = q("SELECT * FROM abook left join xchan on abook_xchan = xchan_hash
- WHERE xchan_name = '%s' AND abook_channel = %d LIMIT 1",
- dbesc($newname . '+'),
- intval($profile_uid)
- );
- if($r)
- $trailing_plus_name = true;
- }
- }
-
- // $r is set if we found something
-
- if($r) {
- $profile = $r[0]['xchan_url'];
- $newname = $r[0]['xchan_name'];
- // add the channel's xchan_hash to $access_tag if exclusive
- if($exclusive) {
- $access_tag .= 'cid:' . $r[0]['xchan_hash'];
- }
- }
- else {
- // check for a group/collection exclusion tag
-
- // note that we aren't setting $replaced even though we're replacing text.
- // This tag isn't going to get a term attached to it. It's only used for
- // access control. The link points to out own channel just so it doesn't look
- // weird - as all the other tags are linked to something.
-
- if(local_user() && local_user() == $profile_uid) {
- require_once('include/group.php');
- $grp = group_byname($profile_uid,$name);
- if($grp) {
- $g = q("select hash from groups where id = %d and visible = 1 limit 1",
- intval($grp[0]['id'])
- );
- if($g && $exclusive) {
- $access_tag .= 'gid:' . $g[0]['hash'];
- }
- $channel = get_app()->get_channel();
- if($channel) {
- $newtag = '@' . (($exclusive) ? '!' : '') . '[zrl=' . z_root() . '/channel/' . $channel['channel_address'] . ']' . $newname . '[/zrl]';
- $body = str_replace('@' . (($exclusive) ? '!' : '') . $name, $newtag, $body);
- }
- }
- }
- }
-
- // if there is an url for this channel
-
- if(isset($profile)) {
- $replaced = true;
- //create profile link
- $profile = str_replace(',','%2c',$profile);
- $url = $profile;
- $newtag = '@' . (($exclusive) ? '!' : '') . '[zrl=' . $profile . ']' . $newname . (($forum && ! $trailing_plus_name) ? '+' : '') . '[/zrl]';
- $body = str_replace('@' . (($exclusive) ? '!' : '') . $name, $newtag, $body);
- //append tag to str_tags
- if(! stristr($str_tags,$newtag)) {
- if(strlen($str_tags))
- $str_tags .= ',';
- $str_tags .= $newtag;
- }
- }
- }
- return array('replaced' => $replaced, 'termtype' => $termtype, 'term' => $newname, 'url' => $url, 'contact' => $r[0]);
-}
-
-
function fix_attached_photo_permissions($uid,$xchan_hash,$body,
$str_contact_allow,$str_group_allow,$str_contact_deny,$str_group_deny) {
+ if(get_pconfig($uid,'system','force_public_uploads')) {
+ $str_contact_allow = $str_group_allow = $str_contact_deny = $str_group_deny = '';
+ }
+
$match = null;
// match img and zmg image links
if(preg_match_all("/\[[zi]mg(.*?)\](.*?)\[\/[zi]mg\]/",$body,$match)) {
@@ -1218,7 +1048,7 @@ function fix_attached_photo_permissions($uid,$xchan_hash,$body,
$private = (($str_contact_allow || $str_group_allow || $str_contact_deny || $str_group_deny) ? true : false);
$r = q("UPDATE item SET allow_cid = '%s', allow_gid = '%s', deny_cid = '%s', deny_gid = '%s', item_private = %d
- WHERE id = %d AND uid = %d limit 1",
+ WHERE id = %d AND uid = %d",
dbesc($str_contact_allow),
dbesc($str_group_allow),
dbesc($str_contact_deny),
@@ -1238,6 +1068,10 @@ function fix_attached_photo_permissions($uid,$xchan_hash,$body,
function fix_attached_file_permissions($channel,$observer_hash,$body,
$str_contact_allow,$str_group_allow,$str_contact_deny,$str_group_deny) {
+ if(get_pconfig($channel['channel_id'],'system','force_public_uploads')) {
+ $str_contact_allow = $str_group_allow = $str_contact_deny = $str_group_deny = '';
+ }
+
$match = false;
if(preg_match_all("/\[attachment\](.*?)\[\/attachment\]/",$body,$match)) {
@@ -1258,12 +1092,13 @@ function fix_attached_file_permissions($channel,$observer_hash,$body,
}
}
}
+
function item_check_service_class($channel_id,$iswebpage) {
$ret = array('success' => false, $message => '');
if ($iswebpage) {
$r = q("select count(i.id) as total from item i
right join channel c on (i.author_xchan=c.channel_hash and i.uid=c.channel_id )
- and i.parent=i.id and (i.item_restrict & %d) and not (i.item_restrict & %d) and i.uid= %d ",
+ and i.parent=i.id and (i.item_restrict & %d)>0 and not (i.item_restrict & %d)>0 and i.uid= %d ",
intval(ITEM_WEBPAGE),
intval(ITEM_DELETED),
intval($channel_id)
@@ -1296,3 +1131,4 @@ function item_check_service_class($channel_id,$iswebpage) {
$ret['success'] = true;
return $ret;
}
+
diff --git a/mod/layouts.php b/mod/layouts.php
index 318e6e29f..aaf5db0ef 100644
--- a/mod/layouts.php
+++ b/mod/layouts.php
@@ -1,36 +1,82 @@
<?php
-function layouts_content(&$a) {
+require_once('include/identity.php');
+require_once('include/conversation.php');
+require_once('include/acl_selectors.php');
+
+function layouts_init(&$a) {
+
+ if(argc() > 1 && argv(1) === 'sys' && is_site_admin()) {
+ $sys = get_sys_channel();
+ if($sys && intval($sys['channel_id'])) {
+ $a->is_sys = true;
+ }
+ }
if(argc() > 1)
$which = argv(1);
- else {
+ else
+ return;
+
+ profile_load($a,$which);
+
+}
+
+
+function layouts_content(&$a) {
+
+ if(! $a->profile) {
notice( t('Requested profile is not available.') . EOL );
$a->error = 404;
return;
}
- profile_load($a,$which,0);
+ $which = argv(1);
+ $uid = local_user();
+ $owner = 0;
+ $channel = null;
+ $observer = $a->get_observer();
- // Figure out who the page owner is.
- $r = q("select channel_id from channel where channel_address = '%s'",
- dbesc($which)
- );
- if($r) {
- $owner = intval($r[0]['channel_id']);
+ $channel = $a->get_channel();
+
+ if($a->is_sys && is_site_admin()) {
+ $sys = get_sys_channel();
+ if($sys && intval($sys['channel_id'])) {
+ $uid = $owner = intval($sys['channel_id']);
+ $channel = $sys;
+ $observer = $sys;
+ }
+ }
+
+ if(! $owner) {
+ // Figure out who the page owner is.
+ $r = q("select channel_id from channel where channel_address = '%s'",
+ dbesc($which)
+ );
+ if($r) {
+ $owner = intval($r[0]['channel_id']);
+ }
+ }
+
+ $ob_hash = (($observer) ? $observer['xchan_hash'] : '');
+
+ $perms = get_all_perms($owner,$ob_hash);
+
+ if(! $perms['write_pages']) {
+ notice( t('Permission denied.') . EOL);
+ return;
}
// Block design features from visitors
- if((! local_user()) || (local_user() != $owner)) {
+ if((! $uid) || ($uid != $owner)) {
notice( t('Permission denied.') . EOL);
return;
}
// Get the observer, check their permissions
- $observer = $a->get_observer();
$ob_hash = (($observer) ? $observer['xchan_hash'] : '');
$perms = get_all_perms($owner,$ob_hash);
@@ -41,7 +87,9 @@ function layouts_content(&$a) {
}
if((argc() > 3) && (argv(2) === 'share') && (argv(3))) {
- $r = q("select sid, service, mimetype, title, body from item_id left join item on item.id = item_id.iid where item_id.uid = %d and item.mid = '%s' and service = 'PDL' order by sid asc",
+ $r = q("select sid, service, mimetype, title, body from item_id
+ left join item on item.id = item_id.iid
+ where item_id.uid = %d and item.mid = '%s' and service = 'PDL' order by sid asc",
intval($owner),
dbesc(argv(3))
);
@@ -63,34 +111,38 @@ function layouts_content(&$a) {
'id' => 'layout-help-tab',
));
-
$o .= replace_macros(get_markup_template('common_tabs.tpl'),array('$tabs' => $tabs));
// Create a status editor (for now - we'll need a WYSIWYG eventually) to create pages
- // Nickname is set to the observers xchan, and profile_uid to the owners. This lets you post pages at other people's channels.
-
- require_once ('include/conversation.php');
+ // Nickname is set to the observers xchan, and profile_uid to the owners.
+ // This lets you post pages at other people's channels.
$x = array(
- 'webpage' => ITEM_PDL,
- 'is_owner' => true,
- 'nickname' => $a->profile['channel_address'],
- 'lockstate' => (($group || $cid || $channel['channel_allow_cid'] || $channel['channel_allow_gid'] || $channel['channel_deny_cid'] || $channel['channel_deny_gid']) ? 'lock' : 'unlock'),
- 'bang' => (($group || $cid) ? '!' : ''),
- 'showacl' => false,
- 'visitor' => false,
- 'nopreview' => 1,
- 'ptlabel' => t('Layout Name'),
+ 'webpage' => ITEM_PDL,
+ 'is_owner' => true,
+ 'nickname' => $a->profile['channel_address'],
+ 'lockstate' => (($channel['channel_allow_cid'] || $channel['channel_allow_gid'] || $channel['channel_deny_cid'] || $channel['channel_deny_gid']) ? 'lock' : 'unlock'),
+ 'bang' => '',
+ 'showacl' => false,
+ 'visitor' => false,
+ 'nopreview' => 1,
+ 'ptlabel' => t('Layout Name'),
'profile_uid' => intval($owner),
);
- $o .= status_editor($a,$x);
+ if($_REQUEST['title'])
+ $x['title'] = $_REQUEST['title'];
+ if($_REQUEST['body'])
+ $x['body'] = $_REQUEST['body'];
+ if($_REQUEST['pagetitle'])
+ $x['pagetitle'] = $_REQUEST['pagetitle'];
+
- // Get a list of blocks. We can't display all them because endless scroll makes that unusable, so just list titles and an edit link.
- // TODO - this should be replaced with pagelist_widget
+ $o .= status_editor($a,$x);
- $r = q("select iid, sid, mid from item_id left join item on item.id = item_id.iid where item_id.uid = %d and service = 'PDL' order by sid asc",
+ $r = q("select iid, sid, mid from item_id left join item on item.id = item_id.iid
+ where item_id.uid = %d and service = 'PDL' order by sid asc",
intval($owner)
);
@@ -99,24 +151,28 @@ function layouts_content(&$a) {
if($r) {
$pages = array();
foreach($r as $rr) {
- $pages[$rr['iid']][] = array('url' => $rr['iid'],'title' => $rr['sid'], 'mid' => $rr['mid']);
+ $pages[$rr['iid']][] = array(
+ 'url' => $rr['iid'],
+ 'title' => $rr['sid'],
+ 'mid' => $rr['mid']
+ );
}
}
-
//Build the base URL for edit links
- $url = z_root() . "/editlayout/" . $which;
+ $url = z_root() . '/editlayout/' . $which;
- return $o . replace_macros(get_markup_template("layoutlist.tpl"), array(
+ $o .= replace_macros(get_markup_template('layoutlist.tpl'), array(
'$baseurl' => $url,
- '$edit' => t('Edit'),
- '$share' => t('Share'),
- '$pages' => $pages,
+ '$edit' => t('Edit'),
+ '$share' => t('Share'),
+ '$pages' => $pages,
'$channel' => $which,
- '$view' => t('View'),
+ '$view' => t('View'),
'$preview' => '1',
));
+ return $o;
}
diff --git a/mod/like.php b/mod/like.php
index 916faf230..04a2b43cd 100755
--- a/mod/like.php
+++ b/mod/like.php
@@ -209,13 +209,17 @@ function like_content(&$a) {
}
else {
+ // this is used to like an item or comment
+
$item_id = ((argc() == 2) ? notags(trim(argv(1))) : 0);
logger('like: verb ' . $verb . ' item ' . $item_id, LOGGER_DEBUG);
+ // get the item. Allow linked photos (which are normally hidden) to be liked
- $r = q("SELECT * FROM item WHERE id = %d and item_restrict = 0 LIMIT 1",
- dbesc($item_id)
+ $r = q("SELECT * FROM item WHERE id = %d and (item_restrict = 0 or item_restrict = %d) LIMIT 1",
+ intval($item_id),
+ intval(ITEM_HIDDEN)
);
if(! $item_id || (! $r)) {
@@ -259,26 +263,18 @@ function like_content(&$a) {
else
killme();
-
- $r = q("SELECT * FROM item WHERE verb = '%s' AND item_restrict = 0
+ $r = q("SELECT id FROM item WHERE verb = '%s' AND item_restrict = 0
AND author_xchan = '%s' AND ( parent = %d OR thr_parent = '%s') LIMIT 1",
dbesc($activity),
dbesc($observer['xchan_hash']),
intval($item_id),
dbesc($item['mid'])
);
- if($r) {
- $like_item = $r[0];
-
- // Already liked/disliked it, delete it
- $r = q("UPDATE item SET item_restrict = ( item_restrict ^ %d ), changed = '%s' WHERE id = %d LIMIT 1",
- intval(ITEM_DELETED),
- dbesc(datetime_convert()),
- intval($like_item['id'])
- );
-
- proc_run('php',"include/notifier.php","like",$like_item['id']);
+ if($r) {
+ // already liked it. Drop that item.
+ require_once('include/items.php');
+ drop_item($r[0]['id'],false,DROPITEM_PHASE1);
return;
}
@@ -325,6 +321,15 @@ function like_content(&$a) {
if($item['item_flags'] & ITEM_WALL)
$item_flags |= ITEM_WALL;
+ // if this was a linked photo and was hidden, unhide it.
+
+ if($item['item_restrict'] & ITEM_HIDDEN) {
+ $r = q("update item set item_restrict = (item_restrict ^ %d) where id = %d",
+ intval(ITEM_HIDDEN),
+ intval($item['id'])
+ );
+ }
+
}
if($verb === 'like')
diff --git a/mod/lockview.php b/mod/lockview.php
index 0ea708c80..e39f2707b 100644
--- a/mod/lockview.php
+++ b/mod/lockview.php
@@ -16,11 +16,12 @@ function lockview_content(&$a) {
if (!in_array($type, array('item','photo','event')))
killme();
-
+
$r = q("SELECT * FROM %s WHERE id = %d LIMIT 1",
dbesc($type),
intval($item_id)
);
+
if(! $r)
killme();
@@ -33,7 +34,13 @@ function lockview_content(&$a) {
if(($item['item_private'] == 1) && (! strlen($item['allow_cid'])) && (! strlen($item['allow_gid']))
&& (! strlen($item['deny_cid'])) && (! strlen($item['deny_gid']))) {
- echo '<li>' . t('Remote privacy information not available.') . '</li>';
+
+ // if the post is private, but public_policy is blank ("visible to the internet"), and there aren't any
+ // specific recipients, we're the recipient of a post with "bcc" or targeted recipients; so we'll just show it
+ // as unknown specific recipients. The sender will have the visibility list and will fall through to the
+ // next section.
+
+ echo '<li>' . translate_scope((! $item['public_policy']) ? 'specific' : $item['public_policy']) . '</li>';
killme();
}
@@ -78,4 +85,5 @@ function lockview_content(&$a) {
echo $o . implode($l);
killme();
+
}
diff --git a/mod/locs.php b/mod/locs.php
new file mode 100644
index 000000000..b1169fcca
--- /dev/null
+++ b/mod/locs.php
@@ -0,0 +1,104 @@
+<?php /** @file */
+
+
+function locs_post(&$a) {
+
+ if(! local_user())
+ return;
+
+ $channel = $a->get_channel();
+
+ if($_REQUEST['primary']) {
+ $hubloc_id = intval($_REQUEST['primary']);
+ if($hubloc_id) {
+ $r = q("select hubloc_id from hubloc where hubloc_id = %d and hubloc_hash = '%s' limit 1",
+ intval($hubloc_id),
+ dbesc($channel['channel_hash'])
+ );
+ if(! $r) {
+ notice( t('Location not found.') . EOL);
+ return;
+ }
+ $r = q("update hubloc set hubloc_flags = (hubloc_flags & ~%d) where (hubloc_flags & %d)>0 and hubloc_hash = '%s' ",
+ intval(HUBLOC_FLAGS_PRIMARY),
+ intval(HUBLOC_FLAGS_PRIMARY),
+ dbesc($channel['channel_hash'])
+ );
+ $r = q("update hubloc set hubloc_flags = (hubloc_flags & %d) where hubloc_id = %d and hubloc_hash = '%s'",
+ intval(HUBLOC_FLAGS_PRIMARY),
+ intval($hubloc_id),
+ dbesc($channel['channel_hash'])
+ );
+ proc_run('php','include/notifier.php','location',$channel['channel_id']);
+ return;
+ }
+ }
+
+ if($_REQUEST['drop']) {
+ $hubloc_id = intval($_REQUEST['drop']);
+ if($hubloc_id) {
+ $r = q("select hubloc_id, hubloc_flags from hubloc where hubloc_id = %d and hubloc_url != '%s' and hubloc_hash = '%s' limit 1",
+ intval($hubloc_id),
+ dbesc(z_root()),
+ dbesc($channel['channel_hash'])
+ );
+ if(! $r) {
+ notice( t('Location not found.') . EOL);
+ return;
+ }
+ if($r[0]['hubloc_flags'] & HUBLOC_FLAGS_PRIMARY) {
+ notice( t('Primary location cannot be removed.') . EOL);
+ return;
+ }
+ $r = q("update hubloc set hubloc_flags = (hubloc_flags & %d) where hubloc_id = %d and hubloc_hash = '%s'",
+ intval(HUBLOC_FLAGS_DELETED),
+ intval($hubloc_id),
+ dbesc($channel['channel_hash'])
+ );
+ proc_run('php','include/notifier.php','location',$channel['channel_id']);
+ return;
+ }
+ }
+}
+
+
+
+function locs_content(&$a) {
+
+
+
+ if(! local_user()) {
+ notice( t('Permission denied.') . EOL);
+ return;
+ }
+
+ $channel = $a->get_channel();
+
+ $r = q("select * from hubloc where hubloc_hash = '%s'",
+ dbesc($channel['channel_hash'])
+ );
+
+ if(! $r) {
+ notice( t('No locations found.') . EOL);
+ return;
+ }
+
+
+ for($x = 0; $x < count($r); $x ++) {
+ $r[$x]['primary'] = (($r[$x]['hubloc_flags'] & HUBLOC_FLAGS_PRIMARY) ? true : false);
+ $r[$x]['deleted'] = (($r[$x]['hubloc_flags'] & HUBLOC_FLAGS_DELETED) ? true : false);
+ }
+
+
+
+ $o = replace_macros(get_markup_template('locmanage.tpl'), array(
+ '$header' => t('Manage Channel Locations'),
+ '$loc' => t('Location (address)'),
+ '$mkprm' => t('Primary Location'),
+ '$drop' => t('Drop location'),
+ '$submit' => t('Submit'),
+ '$hubs' => $r
+ ));
+
+ return $o;
+} \ No newline at end of file
diff --git a/mod/lostpass.php b/mod/lostpass.php
index dd7c7a7d5..3269128f1 100644
--- a/mod/lostpass.php
+++ b/mod/lostpass.php
@@ -21,7 +21,7 @@ function lostpass_post(&$a) {
$hash = random_string();
- $r = q("UPDATE account SET account_reset = '%s' WHERE account_id = %d LIMIT 1",
+ $r = q("UPDATE account SET account_reset = '%s' WHERE account_id = %d",
dbesc($hash),
intval($aid)
);
@@ -73,7 +73,7 @@ function lostpass_content(&$a) {
$salt = random_string(32);
$password_encoded = hash('whirlpool', $salt . $new_password);
- $r = q("UPDATE account SET account_salt = '%s', account_password = '%s', account_reset = '' where account_id = %d limit 1",
+ $r = q("UPDATE account SET account_salt = '%s', account_password = '%s', account_reset = '' where account_id = %d",
dbesc($salt),
dbesc($password_encoded),
intval($aid)
diff --git a/mod/mail.php b/mod/mail.php
index 6976209b7..6c778b956 100644
--- a/mod/mail.php
+++ b/mod/mail.php
@@ -17,7 +17,7 @@ function mail_post(&$a) {
$body = ((x($_REQUEST,'body')) ? escape_tags(trim($_REQUEST['body'])) : '');
$recipient = ((x($_REQUEST,'messageto')) ? notags(trim($_REQUEST['messageto'])) : '');
$rstr = ((x($_REQUEST,'messagerecip')) ? notags(trim($_REQUEST['messagerecip'])) : '');
- $expires = ((x($_REQUEST,'expires')) ? datetime_convert(date_default_timezone_get(),'UTC', $_REQUEST['expires']) : '0000-00-00 00:00:00');
+ $expires = ((x($_REQUEST,'expires')) ? datetime_convert(date_default_timezone_get(),'UTC', $_REQUEST['expires']) : NULL_DATE);
// If we have a raw string for a recipient which hasn't been auto-filled,
// it means they probably aren't in our address book, hence we don't know
@@ -72,7 +72,10 @@ function mail_post(&$a) {
if(! ($their_perms & PERMS_W_MAIL)) {
notice( t('Selected channel has private message restrictions. Send failed.'));
- return;
+ // reported issue: let's still save the message and continue. We'll just tell them
+ // that nothing useful is likely to happen. They might have spent hours on it.
+ // return;
+
}
}
@@ -110,6 +113,7 @@ function mail_content(&$a) {
}
$channel = $a->get_channel();
+
head_set_icon($channel['xchan_photo_s']);
$cipher = get_pconfig(local_user(),'system','default_cipher');
@@ -138,7 +142,7 @@ function mail_content(&$a) {
if(! intval(argv(2)))
return;
$cmd = argv(1);
- $r = q("update mail set mail_flags = mail_flags | %d where id = %d and channel_id = %d limit 1",
+ $r = q("update mail set mail_flags = mail_flags | %d where id = %d and channel_id = %d",
intval(MAIL_RECALLED),
intval(argv(2)),
intval(local_user())
@@ -160,13 +164,16 @@ function mail_content(&$a) {
$tpl = get_markup_template('msg-header.tpl');
- $a->page['htmlhead'] .= replace_macros($tpl, array(
+ $header = replace_macros($tpl, array(
'$baseurl' => $a->get_baseurl(true),
'$editselect' => (($plaintext) ? 'none' : '/(profile-jot-text|prvmail-text)/'),
'$nickname' => $channel['channel_address'],
'$linkurl' => t('Please enter a link URL:'),
'$expireswhen' => t('Expires YYYY-MM-DD HH:MM')
));
+
+ $a->page['htmlhead'] .= $header;
+
$preselect = (isset($a->argv[2])?array($a->argv[2]):false);
$prename = $preurl = $preid = '';
@@ -229,7 +236,7 @@ function mail_content(&$a) {
'$attach' => t('Attach file'),
'$insert' => t('Insert web link'),
'$wait' => t('Please wait'),
- '$submit' => t('Submit'),
+ '$submit' => t('Send'),
'$defexpire' => '',
'$feature_expire' => ((feature_enabled(local_user(),'content_expire')) ? true : false),
'$expires' => t('Set expiration date'),
@@ -273,7 +280,7 @@ function mail_content(&$a) {
$tpl = get_markup_template('msg-header.tpl');
$a->page['htmlhead'] .= replace_macros($tpl, array(
- '$nickname' => $channel['channel_addr'],
+ '$nickname' => $channel['channel_address'],
'$baseurl' => $a->get_baseurl(true),
'$editselect' => (($plaintext) ? 'none' : '/(profile-jot-text|prvmail-text)/'),
'$linkurl' => t('Please enter a link URL:'),
diff --git a/mod/manage.php b/mod/manage.php
index 0772e2d61..b0de945bf 100644
--- a/mod/manage.php
+++ b/mod/manage.php
@@ -17,7 +17,7 @@ function manage_content(&$a) {
intval(get_account_id())
);
if($r) {
- q("update account set account_default_channel = %d where account_id = %d limit 1",
+ q("update account set account_default_channel = %d where account_id = %d",
intval($change_channel),
intval(get_account_id())
);
@@ -28,34 +28,108 @@ function manage_content(&$a) {
if($change_channel) {
$r = change_channel($change_channel);
- if($r && $r['channel_startpage'])
- goaway(z_root() . '/' . $r['channel_startpage']);
+ if((argc() > 2) && !(argv(2) === 'default')) {
+ goaway(z_root() . '/' . implode('/',array_slice($a->argv,2))); // Go to whatever is after /manage/, but with the new channel
+ }
+ else {
+ if($r && $r['channel_startpage'])
+ goaway(z_root() . '/' . $r['channel_startpage']); // If nothing extra is specified, go to the default page
+ }
goaway(z_root());
}
$channels = null;
if(local_user()) {
- $r = q("select channel.*, xchan.* from channel left join xchan on channel.channel_hash = xchan.xchan_hash where channel.channel_account_id = %d and not ( channel_pageflags & %d ) order by channel_name ",
+ $r = q("select channel.*, xchan.* from channel left join xchan on channel.channel_hash = xchan.xchan_hash where channel.channel_account_id = %d and not ( channel_pageflags & %d )>0 order by channel_name ",
intval(get_account_id()),
intval(PAGE_REMOVED)
);
- $selected_channel = null;
$account = get_app()->get_account();
if($r && count($r)) {
$channels = $r;
for($x = 0; $x < count($channels); $x ++) {
$channels[$x]['link'] = 'manage/' . intval($channels[$x]['channel_id']);
- if($channels[$x]['channel_id'] == local_user())
- $selected_channel = $channels[$x];
$channels[$x]['default'] = (($channels[$x]['channel_id'] == $account['account_default_channel']) ? "1" : '');
$channels[$x]['default_links'] = '1';
+
+
+ $c = q("SELECT id, item_restrict, item_flags FROM item
+ WHERE (item_restrict = %d) and ( item_flags & %d )>0 and uid = %d",
+ intval(ITEM_VISIBLE),
+ intval(ITEM_UNSEEN),
+ intval($channels[$x]['channel_id'])
+ );
+
+ if($c) {
+ foreach ($c as $it) {
+ if($it['item_flags'] & ITEM_WALL)
+ $channels[$x]['home'] ++;
+ else
+ $channels[$x]['network'] ++;
+ }
+ }
+
+
+ $intr = q("SELECT COUNT(abook.abook_id) AS total FROM abook left join xchan on abook.abook_xchan = xchan.xchan_hash where abook_channel = %d and (abook_flags & %d)>0 and not ((abook_flags & %d)>0 or (xchan_flags & %d)>0)",
+ intval($channels[$x]['channel_id']),
+ intval(ABOOK_FLAG_PENDING),
+ intval(ABOOK_FLAG_SELF|ABOOK_FLAG_IGNORED),
+ intval(XCHAN_FLAGS_DELETED|XCHAN_FLAGS_ORPHAN)
+ );
+
+ if($intr)
+ $channels[$x]['intros'] = intval($intr[0]['total']);
+
+
+ $mails = q("SELECT count(id) as total from mail WHERE channel_id = %d AND not (mail_flags & %d)>0 and from_xchan != '%s' ",
+ intval($channels[$x]['channel_id']),
+ intval(MAIL_SEEN),
+ dbesc($channels[$x]['channel_hash'])
+ );
+
+ if($mails)
+ $channels[$x]['mail'] = intval($mails[0]['total']);
+
+
+ $events = q("SELECT type, start, adjust FROM `event`
+ WHERE `event`.`uid` = %d AND start < '%s' AND start > '%s' and `ignore` = 0
+ ORDER BY `start` ASC ",
+ intval($channels[$x]['channel_id']),
+ dbesc(datetime_convert('UTC', date_default_timezone_get(), 'now + 7 days')),
+ dbesc(datetime_convert('UTC', date_default_timezone_get(), 'now - 1 days'))
+ );
+
+ if($events) {
+ $channels[$x]['all_events'] = count($events);
+
+ if($channels[$x]['all_events']) {
+ $str_now = datetime_convert('UTC', date_default_timezone_get(), 'now', 'Y-m-d');
+ foreach($events as $e) {
+ $bd = false;
+ if($e['type'] === 'birthday') {
+ $channels[$x]['birthdays'] ++;
+ $bd = true;
+ }
+ else {
+ $channels[$x]['events'] ++;
+ }
+ if(datetime_convert('UTC', ((intval($e['adjust'])) ? date_default_timezone_get() : 'UTC'), $e['start'], 'Y-m-d') === $str_now) {
+ $channels[$x]['all_events_today'] ++;
+ if($bd)
+ $channels[$x]['birthdays_today'] ++;
+ else
+ $channels[$x]['events_today'] ++;
+ }
+ }
+ }
+ }
}
}
- $r = q("select count(channel_id) as total from channel where channel_account_id = %d and not ( channel_pageflags & %d )",
+ $r = q("select count(channel_id) as total from channel where channel_account_id = %d and not ( channel_pageflags & %d )>0",
intval(get_account_id()),
intval(PAGE_REMOVED)
);
@@ -72,16 +146,17 @@ function manage_content(&$a) {
array( 'new_channel', t('Create a new channel'), t('Create a new channel'))
);
-
$o = replace_macros(get_markup_template('channels.tpl'), array(
'$header' => t('Channel Manager'),
'$msg_selected' => t('Current Channel'),
- '$selected' => $selected_channel,
- '$desc' => t('Attach to one of your channels by selecting it.'),
+ '$selected' => local_user(),
+ '$desc' => t('Switch to one of your channels by selecting it.'),
'$msg_default' => t('Default Channel'),
'$msg_make_default' => t('Make Default'),
'$links' => $links,
'$all_channels' => $channels,
+ '$mail_format' => t('%d new messages'),
+ '$intros_format' => t('%d new introductions'),
'$channel_usage_message' => $channel_usage_message,
));
diff --git a/mod/menu.php b/mod/menu.php
index a2d0c2385..92923e1ff 100644
--- a/mod/menu.php
+++ b/mod/menu.php
@@ -1,13 +1,23 @@
<?php
require_once('include/menu.php');
+require_once('include/identity.php');
function menu_post(&$a) {
- if(! local_user())
+ $uid = local_user();
+
+ if(array_key_exists('sys',$_REQUEST) && $_REQUEST['sys'] && is_site_admin()) {
+ $sys = get_sys_channel();
+ $uid = intval($sys['channel_id']);
+ $a->is_sys = true;
+ }
+
+ if(! $uid)
return;
- $_REQUEST['menu_channel_id'] = local_user();
+ $_REQUEST['menu_channel_id'] = $uid;
+
if($_REQUEST['menu_bookmark'])
$_REQUEST['menu_flags'] |= MENU_BOOKMARK;
if($_REQUEST['menu_system'])
@@ -19,7 +29,7 @@ function menu_post(&$a) {
$r = menu_edit($_REQUEST);
if($r) {
info( t('Menu updated.') . EOL);
- goaway(z_root() . '/mitem/' . $menu_id);
+ goaway(z_root() . '/mitem/' . $menu_id . (($a->is_sys) ? '?f=&sys=1' : ''));
}
else
notice( t('Unable to update menu.'). EOL);
@@ -28,7 +38,7 @@ function menu_post(&$a) {
$r = menu_create($_REQUEST);
if($r) {
info( t('Menu created.') . EOL);
- goaway(z_root() . '/mitem/' . $r);
+ goaway(z_root() . '/mitem/' . $r . (($a->is_sys) ? '?f=&sys=1' : ''));
}
else
notice( t('Unable to create menu.'). EOL);
@@ -40,36 +50,42 @@ function menu_post(&$a) {
function menu_content(&$a) {
- if(! local_user()) {
+ $uid = local_user();
+
+ if($a->is_sys && is_site_admin()) {
+ $sys = get_sys_channel();
+ $uid = intval($sys['channel_id']);
+ }
+
+ if(! $uid) {
notice( t('Permission denied.') . EOL);
return '';
}
-// $a->set_widget('design',design_tools());
-
-
if(argc() == 1) {
// list menus
- $x = menu_list(local_user());
-
- $o = replace_macros(get_markup_template('menulist.tpl'),array(
- '$title' => t('Manage Menus'),
- '$menus' => $x,
- '$edit' => t('Edit'),
- '$drop' => t('Drop'),
- '$new' => t('New'),
- '$hintnew' => t('Create a new menu'),
- '$hintdrop' => t('Delete this menu'),
- '$hintcontent' => t('Edit menu contents'),
- '$hintedit' => t('Edit this menu')
- ));
-
- return $o;
-
-
+ $x = menu_list($uid);
+ if($x) {
+ for($y = 0; $y < count($x); $y ++) {
+ $x[$y]['bookmark'] = (($x[$y]['menu_flags'] & MENU_BOOKMARK) ? true : false);
+ }
+ }
+ $o = replace_macros(get_markup_template('menulist.tpl'),array(
+ '$title' => t('Manage Menus'),
+ '$menus' => $x,
+ '$edit' => t('Edit'),
+ '$drop' => t('Drop'),
+ '$new' => t('New'),
+ '$bmark' => t('Bookmarks allowed'),
+ '$hintnew' => t('Create a new menu'),
+ '$hintdrop' => t('Delete this menu'),
+ '$hintcontent' => t('Edit menu contents'),
+ '$hintedit' => t('Edit this menu')
+ ));
+ return $o;
}
@@ -87,19 +103,19 @@ function menu_content(&$a) {
}
elseif(intval(argv(1))) {
- $m = menu_fetch_id(intval(argv(1)),local_user());
+ $m = menu_fetch_id(intval(argv(1)),$uid);
if(! $m) {
notice( t('Menu not found.') . EOL);
return '';
}
if(argc() == 3 && argv(2) == 'drop') {
- $r = menu_delete_id(intval(argv(1)),local_user());
+ $r = menu_delete_id(intval(argv(1)),$uid);
if($r)
info( t('Menu deleted.') . EOL);
else
notice( t('Menu could not be deleted.'). EOL);
- goaway(z_root() . '/menu');
+ goaway(z_root() . '/menu' . (($a->is_sys) ? '?f=&sys=1' : ''));
}
else {
$o = replace_macros(get_markup_template('menuedit.tpl'), array(
diff --git a/mod/message.php b/mod/message.php
index c14bf2161..7f3b6180a 100644
--- a/mod/message.php
+++ b/mod/message.php
@@ -61,18 +61,18 @@ function message_content(&$a) {
foreach($r as $rr) {
$o .= replace_macros($tpl, array(
- '$id' => $rr['id'],
- '$from_name' => $rr['from']['xchan_name'],
- '$from_url' => chanlink_hash($rr['from_xchan']),
+ '$id' => $rr['id'],
+ '$from_name' => $rr['from']['xchan_name'],
+ '$from_url' => chanlink_hash($rr['from_xchan']),
'$from_photo' => $rr['from']['xchan_photo_s'],
- '$to_name' => $rr['to']['xchan_name'],
- '$to_url' => chanlink_hash($rr['to_xchan']),
- '$to_photo' => $rr['to']['xchan_photo_s'],
- '$subject' => (($rr['seen']) ? $rr['title'] : '<strong>' . $rr['title'] . '</strong>'),
- '$delete' => t('Delete message'),
- '$body' => smilies(bbcode($rr['body'])),
- '$date' => datetime_convert('UTC',date_default_timezone_get(),$rr['created'], t('D, d M Y - g:i A')),
- '$seen' => $rr['seen']
+ '$to_name' => $rr['to']['xchan_name'],
+ '$to_url' => chanlink_hash($rr['to_xchan']),
+ '$to_photo' => $rr['to']['xchan_photo_s'],
+ '$subject' => (($rr['seen']) ? $rr['title'] : '<strong>' . $rr['title'] . '</strong>'),
+ '$delete' => t('Delete conversation'),
+ '$body' => smilies(bbcode($rr['body'])),
+ '$date' => datetime_convert('UTC',date_default_timezone_get(),$rr['created'], t('D, d M Y - g:i A')),
+ '$seen' => $rr['seen']
));
}
$o .= alt_pager($a,count($r));
diff --git a/mod/mitem.php b/mod/mitem.php
index 3240bb68b..7098d7489 100644
--- a/mod/mitem.php
+++ b/mod/mitem.php
@@ -4,12 +4,22 @@ require_once('include/menu.php');
require_once('include/acl_selectors.php');
function mitem_init(&$a) {
- if(! local_user())
+
+ $uid = local_user();
+
+ if(array_key_exists('sys',$_REQUEST) && $_REQUEST['sys'] && is_site_admin()) {
+ $sys = get_sys_channel();
+ $uid = intval($sys['channel_id']);
+ $a->is_sys = true;
+ }
+
+ if(! $uid)
return;
+
if(argc() < 2)
return;
- $m = menu_fetch_id(intval(argv(1)),local_user());
+ $m = menu_fetch_id(intval(argv(1)),$uid);
if(! $m) {
notice( t('Menu not found.') . EOL);
return '';
@@ -20,8 +30,18 @@ function mitem_init(&$a) {
function mitem_post(&$a) {
- if(! local_user())
+ $uid = local_user();
+
+ if($a->is_sys && is_site_admin()) {
+ $sys = get_sys_channel();
+ $uid = intval($sys['channel_id']);
+ }
+
+ if(! $uid) {
return;
+ }
+
+
if(! $a->data['menu'])
return;
@@ -29,7 +49,7 @@ function mitem_post(&$a) {
$channel = $a->get_channel();
- $_REQUEST['mitem_channel_id'] = local_user();
+ $_REQUEST['mitem_channel_id'] = $uid;
$_REQUEST['menu_id'] = $a->data['menu']['menu_id'];
$_REQUEST['mitem_flags'] = 0;
@@ -42,20 +62,20 @@ function mitem_post(&$a) {
$mitem_id = ((argc() > 2) ? intval(argv(2)) : 0);
if($mitem_id) {
$_REQUEST['mitem_id'] = $mitem_id;
- $r = menu_edit_item($_REQUEST['menu_id'],local_user(),$_REQUEST);
+ $r = menu_edit_item($_REQUEST['menu_id'],$uid,$_REQUEST);
if($r) {
info( t('Menu element updated.') . EOL);
- goaway(z_root() . '/mitem/' . $_REQUEST['menu_id']);
+ goaway(z_root() . '/mitem/' . $_REQUEST['menu_id'] . (($a->is_sys) ? '?f=&sys=1' : ''));
}
else
notice( t('Unable to update menu element.') . EOL);
}
else {
- $r = menu_add_item($_REQUEST['menu_id'],local_user(),$_REQUEST);
+ $r = menu_add_item($_REQUEST['menu_id'],$uid,$_REQUEST);
if($r) {
info( t('Menu element added.') . EOL);
- goaway(z_root() . '/mitem/' . $_REQUEST['menu_id']);
+ goaway(z_root() . '/mitem/' . $_REQUEST['menu_id'] . (($a->is_sys) ? '?f=&sys=1' : ''));
}
else
notice( t('Unable to add menu element.') . EOL);
@@ -69,7 +89,20 @@ function mitem_post(&$a) {
function mitem_content(&$a) {
- if(! local_user()) {
+ $uid = local_user();
+ $channel = $a->get_channel();
+ $observer = $a->get_observer();
+
+ $ob_hash = (($observer) ? $observer['xchan_hash'] : '');
+
+ if($a->is_sys && is_site_admin()) {
+ $sys = get_sys_channel();
+ $uid = intval($sys['channel_id']);
+ $channel = $sys;
+ $ob_hash = $sys['xchan_hash'];
+ }
+
+ if(! $uid) {
notice( t('Permission denied.') . EOL);
return '';
}
@@ -79,67 +112,61 @@ function mitem_content(&$a) {
return '';
}
- $channel = $a->get_channel();
-
- $m = menu_fetch($a->data['menu']['menu_name'],local_user(), get_observer_hash());
+ $m = menu_fetch($a->data['menu']['menu_name'],$uid,$ob_hash);
$a->data['menu_item'] = $m;
if(argc() == 2) {
$r = q("select * from menu_item where mitem_menu_id = %d and mitem_channel_id = %d order by mitem_order asc, mitem_desc asc",
intval($a->data['menu']['menu_id']),
- local_user()
+ intval($uid)
);
$o .= replace_macros(get_markup_template('mitemlist.tpl'),array(
- '$title' => t('Manage Menu Elements'),
+ '$title' => t('Manage Menu Elements'),
'$menuname' => $a->data['menu']['menu_name'],
'$menudesc' => $a->data['menu']['menu_desc'],
- '$edmenu' => t('Edit menu'),
- '$menu_id' => $a->data['menu']['menu_id'],
- '$mlist' => $r,
- '$edit' => t('Edit element'),
- '$drop' => t('Drop element'),
- '$new' => t('New element'),
+ '$edmenu' => t('Edit menu'),
+ '$menu_id' => $a->data['menu']['menu_id'],
+ '$mlist' => $r,
+ '$edit' => t('Edit element'),
+ '$drop' => t('Drop element'),
+ '$new' => t('New element'),
'$hintmenu' => t('Edit this menu container'),
- '$hintnew' => t('Add menu element'),
+ '$hintnew' => t('Add menu element'),
'$hintdrop' => t('Delete this menu item'),
'$hintedit' => t('Edit this menu item')
- ));
-
-
+ ));
+
return $o;
-
}
if(argc() > 2) {
-
-
if(argv(2) === 'new') {
$perm_defaults = array(
'allow_cid' => $channel['channel_allow_cid'],
'allow_gid' => $channel['channel_allow_gid'],
- 'deny_cid' => $channel['channel_deny_cid'],
- 'deny_gid' => $channel['channel_deny_gid']
+ 'deny_cid' => $channel['channel_deny_cid'],
+ 'deny_gid' => $channel['channel_deny_gid']
);
$o = replace_macros(get_markup_template('mitemedit.tpl'), array(
- '$header' => t('New Menu Element'),
- '$menu_id' => $a->data['menu']['menu_id'],
+ '$header' => t('New Menu Element'),
+ '$menu_id' => $a->data['menu']['menu_id'],
'$permissions' => t('Menu Item Permissions'),
- '$permdesc' => t("\x28click to open/close\x29"),
- '$aclselect' => populate_acl($perm_defaults,false),
- '$mitem_desc' => array('mitem_desc', t('Link text'), '', '','*'),
- '$mitem_link' => array('mitem_link', t('URL of link'), '', '', '*'),
- '$usezid' => array('usezid', t('Use Red magic-auth if available'), true, ''),
- '$newwin' => array('newwin', t('Open link in new window'), false,''),
+ '$permdesc' => t("\x28click to open/close\x29"),
+ '$aclselect' => populate_acl($perm_defaults,false),
+ '$mitem_desc' => array('mitem_desc', t('Link text'), '', '','*'),
+ '$mitem_link' => array('mitem_link', t('URL of link'), '', '', '*'),
+ '$usezid' => array('usezid', t('Use RedMatrix magic-auth if available'), true, ''),
+ '$newwin' => array('newwin', t('Open link in new window'), false,''),
// permissions go here
'$mitem_order' => array('mitem_order', t('Order in list'),'0',t('Higher numbers will sink to bottom of listing')),
- '$submit' => t('Create')
+ '$submit' => t('Create')
));
return $o;
}
@@ -148,23 +175,23 @@ function mitem_content(&$a) {
elseif(intval(argv(2))) {
$m = q("select * from menu_item where mitem_id = %d and mitem_channel_id = %d limit 1",
intval(argv(2)),
- intval(local_user())
+ intval($uid)
);
if(! $m) {
notice( t('Menu item not found.') . EOL);
- goaway(z_root() . '/menu');
+ goaway(z_root() . '/menu'. (($a->is_sys) ? '?f=&sys=1' : ''));
}
$mitem = $m[0];
if(argc() == 4 && argv(3) == 'drop') {
- $r = menu_del_item($mitem['mitem_menu_id'], local_user(),intval(argv(2)));
+ $r = menu_del_item($mitem['mitem_menu_id'], $uid, intval(argv(2)));
if($r)
info( t('Menu item deleted.') . EOL);
else
notice( t('Menu item could not be deleted.'). EOL);
- goaway(z_root() . '/mitem/' . $mitem['mitem_menu_id']);
+ goaway(z_root() . '/mitem/' . $mitem['mitem_menu_id'] . (($a->is_sys) ? '?f=&sys=1' : ''));
}
else {
@@ -179,7 +206,7 @@ function mitem_content(&$a) {
'$mitem_id' => intval(argv(2)),
'$mitem_desc' => array('mitem_desc', t('Link text'), $mitem['mitem_desc'], '','*'),
'$mitem_link' => array('mitem_link', t('URL of link'), $mitem['mitem_link'], '', '*'),
- '$usezid' => array('usezid', t('Use Red magic-auth if available'), (($mitem['mitem_flags'] & MENU_ITEM_ZID) ? 1 : 0), ''),
+ '$usezid' => array('usezid', t('Use RedMatrix magic-auth if available'), (($mitem['mitem_flags'] & MENU_ITEM_ZID) ? 1 : 0), ''),
'$newwin' => array('newwin', t('Open link in new window'), (($mitem['mitem_flags'] & MENU_ITEM_NEWWIN) ? 1 : 0),''),
// permissions go here
'$mitem_order' => array('mitem_order', t('Order in list'),$mitem['mitem_order'],t('Higher numbers will sink to bottom of listing')),
@@ -188,10 +215,5 @@ function mitem_content(&$a) {
return $o;
}
}
-
}
-
-
-
-
}
diff --git a/mod/network.php b/mod/network.php
index f12471467..d444dbd59 100644
--- a/mod/network.php
+++ b/mod/network.php
@@ -24,7 +24,7 @@ function network_content(&$a, $update = 0, $load = false) {
if(! local_user()) {
$_SESSION['return_url'] = $a->query_string;
- return login(false);
+ return login(false);
}
@@ -34,6 +34,21 @@ function network_content(&$a, $update = 0, $load = false) {
$channel = $a->get_channel();
+
+ $datequery = $datequery2 = '';
+
+ $group = 0;
+
+ $nouveau = false;
+
+ $datequery = ((x($_GET,'dend') && is_a_date_arg($_GET['dend'])) ? notags($_GET['dend']) : '');
+ $datequery2 = ((x($_GET,'dbegin') && is_a_date_arg($_GET['dbegin'])) ? notags($_GET['dbegin']) : '');
+ $nouveau = ((x($_GET,'new')) ? intval($_GET['new']) : 0);
+ $gid = ((x($_GET,'gid')) ? intval($_GET['gid']) : 0);
+ $category = ((x($_REQUEST,'cat')) ? $_REQUEST['cat'] : '');
+ $hashtags = ((x($_REQUEST,'tag')) ? $_REQUEST['tag'] : '');
+
+
$search = (($_GET['search']) ? $_GET['search'] : '');
if($search) {
if(strpos($search,'@') === 0) {
@@ -47,33 +62,23 @@ function network_content(&$a, $update = 0, $load = false) {
}
}
elseif(strpos($search,'#') === 0) {
- $search = $_GET['search'] = substr($search,1);
+ $hashtags = substr($search,1);
+ $search = $_GET['search'] = '';
}
}
-
-
- $datequery = $datequery2 = '';
-
- $group = 0;
-
- $nouveau = false;
-
- $datequery = ((x($_GET,'dend') && is_a_date_arg($_GET['dend'])) ? notags($_GET['dend']) : '');
- $datequery2 = ((x($_GET,'dbegin') && is_a_date_arg($_GET['dbegin'])) ? notags($_GET['dbegin']) : '');
- $nouveau = ((x($_GET,'new')) ? intval($_GET['new']) : 0);
- $gid = ((x($_GET,'gid')) ? intval($_GET['gid']) : 0);
-
-
if($datequery)
$_GET['order'] = 'post';
+
+ // filter by collection (e.g. group)
+
if($gid) {
- $r = q("SELECT * FROM `groups` WHERE id = %d AND uid = %d LIMIT 1",
- intval($gid),
- intval(local_user())
- );
- if(! $r) {
+ $r = q("SELECT * FROM groups WHERE id = %d AND uid = %d LIMIT 1",
+ intval($gid),
+ intval(local_user())
+ );
+ if(! $r) {
if($update)
killme();
notice( t('No such group') . EOL );
@@ -81,27 +86,26 @@ function network_content(&$a, $update = 0, $load = false) {
// NOTREACHED
}
- $group = $gid;
+ $group = $gid;
$group_hash = $r[0]['hash'];
- $def_acl = array('allow_gid' => '<' . $r[0]['hash'] . '>');
+ $def_acl = array('allow_gid' => '<' . $r[0]['hash'] . '>');
}
$o = '';
-
// if no tabs are selected, defaults to comments
- $cid = ((x($_GET,'cid')) ? intval($_GET['cid']) : 0);
- $star = ((x($_GET,'star')) ? intval($_GET['star']) : 0);
- $order = ((x($_GET,'order')) ? notags($_GET['order']) : 'comment');
- $liked = ((x($_GET,'liked')) ? intval($_GET['liked']) : 0);
- $conv = ((x($_GET,'conv')) ? intval($_GET['conv']) : 0);
- $spam = ((x($_GET,'spam')) ? intval($_GET['spam']) : 0);
- $cmin = ((x($_GET,'cmin')) ? intval($_GET['cmin']) : 0);
- $cmax = ((x($_GET,'cmax')) ? intval($_GET['cmax']) : 99);
- $firehose = ((x($_GET,'fh')) ? intval($_GET['fh']) : 0);
- $file = ((x($_GET,'file')) ? $_GET['file'] : '');
+ $cid = ((x($_GET,'cid')) ? intval($_GET['cid']) : 0);
+ $star = ((x($_GET,'star')) ? intval($_GET['star']) : 0);
+ $order = ((x($_GET,'order')) ? notags($_GET['order']) : 'comment');
+ $liked = ((x($_GET,'liked')) ? intval($_GET['liked']) : 0);
+ $conv = ((x($_GET,'conv')) ? intval($_GET['conv']) : 0);
+ $spam = ((x($_GET,'spam')) ? intval($_GET['spam']) : 0);
+ $cmin = ((x($_GET,'cmin')) ? intval($_GET['cmin']) : 0);
+ $cmax = ((x($_GET,'cmax')) ? intval($_GET['cmax']) : 99);
+ $firehose = ((x($_GET,'fh')) ? intval($_GET['fh']) : 0);
+ $file = ((x($_GET,'file')) ? $_GET['file'] : '');
if(x($_GET,'search') || x($_GET,'file'))
@@ -122,21 +126,21 @@ function network_content(&$a, $update = 0, $load = false) {
$channel_acl = array(
'allow_cid' => $channel['channel_allow_cid'],
'allow_gid' => $channel['channel_allow_gid'],
- 'deny_cid' => $channel['channel_deny_cid'],
- 'deny_gid' => $channel['channel_deny_gid']
+ 'deny_cid' => $channel['channel_deny_cid'],
+ 'deny_gid' => $channel['channel_deny_gid']
);
$x = array(
- 'is_owner' => true,
- 'allow_location' => ((intval(get_pconfig($channel['channel_id'],'system','use_browser_location'))) ? '1' : ''),
+ 'is_owner' => true,
+ 'allow_location' => ((intval(get_pconfig($channel['channel_id'],'system','use_browser_location'))) ? '1' : ''),
'default_location' => $channel['channel_location'],
- 'nickname' => $channel['channel_address'],
- 'lockstate' => (($group || $cid || $channel['channel_allow_cid'] || $channel['channel_allow_gid'] || $channel['channel_deny_cid'] || $channel['channel_deny_gid']) ? 'lock' : 'unlock'),
- 'acl' => populate_acl((($group || $cid) ? $def_acl : $channel_acl)),
- 'bang' => (($group || $cid) ? '!' : ''),
- 'visitor' => true,
- 'profile_uid' => local_user()
+ 'nickname' => $channel['channel_address'],
+ 'lockstate' => (($group || $cid || $channel['channel_allow_cid'] || $channel['channel_allow_gid'] || $channel['channel_deny_cid'] || $channel['channel_deny_gid']) ? 'lock' : 'unlock'),
+ 'acl' => populate_acl((($group || $cid) ? $def_acl : $channel_acl)),
+ 'bang' => (($group || $cid) ? '!' : ''),
+ 'visitor' => true,
+ 'profile_uid' => local_user()
);
$o .= status_editor($a,$x);
@@ -146,33 +150,33 @@ function network_content(&$a, $update = 0, $load = false) {
// We don't have to deal with ACL's on this page. You're looking at everything
// that belongs to you, hence you can see all of it. We will filter by group if
- // desired.
+ // desired.
-
- $sql_options = (($star)
- ? " and (item_flags & " . intval(ITEM_STARRED) . ")"
+
+ $sql_options = (($star)
+ ? " and (item_flags & " . intval(ITEM_STARRED) . ") > 0"
: '');
$sql_nets = '';
- $sql_extra = " AND `item`.`parent` IN ( SELECT `parent` FROM `item` WHERE (item_flags & " . intval(ITEM_THREAD_TOP) . ") $sql_options ) ";
+ $sql_extra = " AND `item`.`parent` IN ( SELECT `parent` FROM `item` WHERE (item_flags & " . intval(ITEM_THREAD_TOP) . ")>0 $sql_options ) ";
if($group) {
$contact_str = '';
- $contacts = group_get_members($group);
- if($contacts) {
+ $contacts = group_get_members($group);
+ if($contacts) {
foreach($contacts as $c) {
if($contact_str)
$contact_str .= ',';
- $contact_str .= "'" . $c['xchan'] . "'";
+ $contact_str .= "'" . $c['xchan'] . "'";
}
- }
- else {
- $contact_str = ' 0 ';
+ }
+ else {
+ $contact_str = ' 0 ';
info( t('Collection is empty'));
- }
+ }
- $sql_extra = " AND item.parent IN ( SELECT DISTINCT parent FROM item WHERE true $sql_options AND (( author_xchan IN ( $contact_str ) OR owner_xchan in ( $contact_str )) or allow_gid like '" . protect_sprintf('%<' . dbesc($group_hash) . '>%') . "' ) and id = parent and item_restrict = 0 ) ";
+ $sql_extra = " AND item.parent IN ( SELECT DISTINCT parent FROM item WHERE true $sql_options AND (( author_xchan IN ( $contact_str ) OR owner_xchan in ( $contact_str )) or allow_gid like '" . protect_sprintf('%<' . dbesc($group_hash) . '>%') . "' ) and id = parent and item_restrict = 0 ) ";
$x = group_rec_byhash(local_user(), $group_hash);
@@ -180,60 +184,74 @@ function network_content(&$a, $update = 0, $load = false) {
$o = '<h2>' . t('Collection: ') . $x['name'] . '</h2>' . $o;
- }
+ }
elseif($cid) {
- $r = q("SELECT abook.*, xchan.* from abook left join xchan on abook_xchan = xchan_hash where abook_id = %d and abook_channel = %d and not ( abook_flags & " . intval(ABOOK_FLAG_BLOCKED) . ") limit 1",
+ $r = q("SELECT abook.*, xchan.* from abook left join xchan on abook_xchan = xchan_hash where abook_id = %d and abook_channel = %d and not ( abook_flags & " . intval(ABOOK_FLAG_BLOCKED) . ") > 0 limit 1",
intval($cid),
intval(local_user())
- );
- if($r) {
- $sql_extra = " AND item.parent IN ( SELECT DISTINCT parent FROM item WHERE true $sql_options AND uid = " . intval(local_user()) . " AND ( author_xchan = '" . dbesc($r[0]['abook_xchan']) . "' or owner_xchan = '" . dbesc($r[0]['abook_xchan']) . "' ) and item_restrict = 0 ) ";
+ );
+ if($r) {
+ $sql_extra = " AND item.parent IN ( SELECT DISTINCT parent FROM item WHERE true $sql_options AND uid = " . intval(local_user()) . " AND ( author_xchan = '" . dbesc($r[0]['abook_xchan']) . "' or owner_xchan = '" . dbesc($r[0]['abook_xchan']) . "' ) and item_restrict = 0 ) ";
$o = '<h2>' . t('Connection: ') . $r[0]['xchan_name'] . '</h2>' . $o;
- }
- else {
+ }
+ else {
notice( t('Invalid connection.') . EOL);
goaway($a->get_baseurl(true) . '/network');
- }
+ }
}
+ if(x($category)) {
+ $sql_extra .= protect_sprintf(term_query('item', $category, TERM_CATEGORY));
+ }
+ if(x($hashtags)) {
+ $sql_extra .= protect_sprintf(term_query('item', $hashtags, TERM_HASHTAG));
+ }
if(! $update) {
// The special div is needed for liveUpdate to kick in for this page.
- // We only launch liveUpdate if you aren't filtering in some incompatible
+ // We only launch liveUpdate if you aren't filtering in some incompatible
// way and also you aren't writing a comment (discovered in javascript).
if($gid || $cid || $cmin || ($cmax != 99) || $star || $liked || $conv || $spam || $nouveau || $list)
- $firehose = 0;
+ $firehose = 0;
+
+ $maxheight = get_pconfig(local_user(),'system','network_divmore_height');
+ if(! $maxheight)
+ $maxheight = 400;
+
$o .= '<div id="live-network"></div>' . "\r\n";
- $o .= "<script> var profile_uid = " . $_SESSION['uid'] . "; var profile_page = " . $a->pager['page'] . ";</script>";
+ $o .= "<script> var profile_uid = " . local_user()
+ . "; var profile_page = " . $a->pager['page']
+ . "; divmore_height = " . intval($maxheight) . "; </script>\r\n";
$a->page['htmlhead'] .= replace_macros(get_markup_template("build_query.tpl"),array(
'$baseurl' => z_root(),
- '$pgtype' => 'network',
- '$uid' => ((local_user()) ? local_user() : '0'),
- '$gid' => (($gid) ? $gid : '0'),
- '$cid' => (($cid) ? $cid : '0'),
- '$cmin' => (($cmin) ? $cmin : '0'),
- '$cmax' => (($cmax) ? $cmax : '0'),
- '$star' => (($star) ? $star : '0'),
- '$liked' => (($liked) ? $liked : '0'),
- '$conv' => (($conv) ? $conv : '0'),
- '$spam' => (($spam) ? $spam : '0'),
- '$fh' => (($firehose) ? $firehose : '0'),
+ '$pgtype' => 'network',
+ '$uid' => ((local_user()) ? local_user() : '0'),
+ '$gid' => (($gid) ? $gid : '0'),
+ '$cid' => (($cid) ? $cid : '0'),
+ '$cmin' => (($cmin) ? $cmin : '0'),
+ '$cmax' => (($cmax) ? $cmax : '0'),
+ '$star' => (($star) ? $star : '0'),
+ '$liked' => (($liked) ? $liked : '0'),
+ '$conv' => (($conv) ? $conv : '0'),
+ '$spam' => (($spam) ? $spam : '0'),
+ '$fh' => (($firehose) ? $firehose : '0'),
'$nouveau' => (($nouveau) ? $nouveau : '0'),
- '$wall' => '0',
- '$list' => ((x($_REQUEST,'list')) ? intval($_REQUEST['list']) : 0),
- '$page' => (($a->pager['page'] != 1) ? $a->pager['page'] : 1),
- '$search' => (($search) ? $search : ''),
- '$order' => $order,
- '$file' => $file,
- '$cats' => '',
- '$dend' => $datequery,
- '$mid' => '',
- '$dbegin' => $datequery2
+ '$wall' => '0',
+ '$list' => ((x($_REQUEST,'list')) ? intval($_REQUEST['list']) : 0),
+ '$page' => (($a->pager['page'] != 1) ? $a->pager['page'] : 1),
+ '$search' => (($search) ? $search : ''),
+ '$order' => $order,
+ '$file' => $file,
+ '$cats' => $category,
+ '$tags' => $hashtags,
+ '$dend' => $datequery,
+ '$mid' => '',
+ '$dbegin' => $datequery2
));
}
@@ -246,17 +264,19 @@ function network_content(&$a, $update = 0, $load = false) {
$sql_extra3 .= protect_sprintf(sprintf(" AND item.created >= '%s' ", dbesc(datetime_convert(date_default_timezone_get(),'',$datequery2))));
}
- $sql_extra2 = (($nouveau) ? '' : " AND `item`.`parent` = `item`.`id` ");
+ $sql_extra2 = (($nouveau) ? '' : " AND item.parent = item.id ");
$sql_extra3 = (($nouveau) ? '' : $sql_extra3);
if(x($_GET,'search')) {
$search = escape_tags($_GET['search']);
- if(strpos($search,'#') === 0)
+ if(strpos($search,'#') === 0) {
$sql_extra .= term_query('item',substr($search,1),TERM_HASHTAG);
- else
- $sql_extra .= sprintf(" AND `item`.`body` like '%s' ",
+ }
+ else {
+ $sql_extra .= sprintf(" AND item.body like '%s' ",
dbesc(protect_sprintf('%' . $search . '%'))
);
+ }
}
if(strlen($file)) {
@@ -264,7 +284,7 @@ function network_content(&$a, $update = 0, $load = false) {
}
if($conv) {
- $sql_extra .= sprintf(" AND parent IN (SELECT distinct(parent) from item where ( author_xchan like '%s' or ( item_flags & %d ))) ",
+ $sql_extra .= sprintf(" AND parent IN (SELECT distinct(parent) from item where ( author_xchan like '%s' or ( item_flags & %d ) > 0)) ",
dbesc(protect_sprintf($channel['channel_hash'])),
intval(ITEM_MENTIONSME)
);
@@ -279,7 +299,7 @@ function network_content(&$a, $update = 0, $load = false) {
else {
$itemspage = get_pconfig(local_user(),'system','itemspage');
$a->set_pager_itemspage(((intval($itemspage)) ? $itemspage : 20));
- $pager_sql = sprintf(" LIMIT %d, %d ",intval($a->pager['start']), intval($a->pager['itemspage']));
+ $pager_sql = sprintf(" LIMIT %d OFFSET %d ", intval($a->pager['itemspage']), intval($a->pager['start']));
}
@@ -287,7 +307,7 @@ function network_content(&$a, $update = 0, $load = false) {
// Not everybody who shows up in the network stream will be in your address book.
// By default those that aren't are assumed to have closeness = 99; but this isn't
- // recorded anywhere. So if cmax is 99, we'll open the search up to anybody in
+ // recorded anywhere. So if cmax is 99, we'll open the search up to anybody in
// the stream with a NULL address book entry.
$sql_nets .= " AND ";
@@ -314,18 +334,38 @@ function network_content(&$a, $update = 0, $load = false) {
$uids = " and item.uid = " . local_user() . " ";
}
- $simple_update = (($update) ? " and ( item.item_flags & " . intval(ITEM_UNSEEN) . " ) " : '');
+ if(get_pconfig(local_user(),'system','network_list_mode'))
+ $page_mode = 'list';
+ else
+ $page_mode = 'client';
+
+ $simple_update = (($update) ? " and ( item.item_flags & " . intval(ITEM_UNSEEN) . " ) > 0 " : '');
+
+ // This fixes a very subtle bug so I'd better explain it. You wake up in the morning or return after a day
+ // or three and look at your matrix page - after opening up your browser. The first page loads just as it
+ // should. All of a sudden a few seconds later, page 2 will get inserted at the beginning of the page
+ // (before the page 1 content). The update code is actually doing just what it's supposed
+ // to, it's fetching posts that have the ITEM_UNSEEN bit set. But the reason that page 2 content is being
+ // returned in an UPDATE is because you hadn't gotten that far yet - you're still on page 1 and everything
+ // that we loaded for page 1 is now marked as seen. But the stuff on page 2 hasn't been. So... it's being
+ // treated as "new fresh" content because it is unseen. We need to distinguish it somehow from content
+ // which "arrived as you were reading page 1". We're going to do this
+ // by storing in your session the current UTC time whenever you LOAD a network page, and only UPDATE items
+ // which are both ITEM_UNSEEN and have "changed" since that time. Cross fingers...
+
+ if($update && $_SESSION['loadtime'])
+ $simple_update .= " and item.changed > '" . datetime_convert('UTC','UTC',$_SESSION['loadtime']) . "' ";
if($load)
$simple_update = '';
if($nouveau && $load) {
// "New Item View" - show all items unthreaded in reverse created date order
- $items = q("SELECT `item`.*, `item`.`id` AS `item_id` FROM `item`
- WHERE true $uids AND item_restrict = 0
+ $items = q("SELECT item.*, item.id AS item_id, received FROM item
+ WHERE true $uids AND item_restrict = 0
$simple_update
$sql_extra $sql_nets
- ORDER BY `item`.`received` DESC $pager_sql "
+ ORDER BY item.received DESC $pager_sql "
);
require_once('include/items.php');
@@ -339,27 +379,29 @@ function network_content(&$a, $update = 0, $load = false) {
// Normal conversation view
if($order === 'post')
- $ordering = "`created`";
+ $ordering = "created";
else
- $ordering = "`commented`";
+ $ordering = "commented";
if($load) {
+ $_SESSION['loadtime'] = datetime_convert();
+
// Fetch a page full of parent items for this page
- $r = q("SELECT distinct item.id AS item_id FROM item
+ $r = q("SELECT distinct item.id AS item_id, $ordering FROM item
left join abook on item.author_xchan = abook.abook_xchan
WHERE true $uids AND item.item_restrict = 0
AND item.parent = item.id
and ((abook.abook_flags & %d) = 0 or abook.abook_flags is null)
$sql_extra3 $sql_extra $sql_nets
- ORDER BY item.$ordering DESC $pager_sql ",
+ ORDER BY $ordering DESC $pager_sql ",
intval(ABOOK_FLAG_BLOCKED)
);
}
else {
- if(! $firehose) {
+ if(! $firehose) {
// update
$r = q("SELECT item.parent AS item_id FROM item
left join abook on item.author_xchan = abook.abook_xchan
@@ -379,29 +421,45 @@ function network_content(&$a, $update = 0, $load = false) {
$parents_str = ids_to_querystr($r,'item_id');
- $items = q("SELECT `item`.*, `item`.`id` AS `item_id` FROM `item`
- WHERE true $uids AND `item`.`item_restrict` = 0
- AND `item`.`parent` IN ( %s )
+ $items = q("SELECT item.*, item.id AS item_id FROM item
+ WHERE true $uids AND item.item_restrict = 0
+ AND item.parent IN ( %s )
$sql_extra ",
dbesc($parents_str)
);
- xchan_query($items);
+ xchan_query($items,true,(($firehose) ? local_user() : 0));
$items = fetch_post_tags($items,true);
$items = conv_sort($items,$ordering);
- }
+ }
else {
$items = array();
}
- if($parents_str)
- $update_unseen = ' AND parent IN ( ' . dbesc($parents_str) . ' )';
+ if($page_mode === 'list') {
+
+ /**
+ * in "list mode", only mark the parent item and any like activities as "seen".
+ * We won't distinguish between comment likes and post likes. The important thing
+ * is that the number of unseen comments will be accurate. The SQL to separate the
+ * comment likes could also get somewhat hairy.
+ */
+ if($parents_str) {
+ $update_unseen = " AND ( id IN ( " . dbesc($parents_str) . " )";
+ $update_unseen .= " OR ( parent IN ( " . dbesc($parents_str) . " ) AND verb in ( '" . dbesc(ACTIVITY_LIKE) . "','" . dbesc(ACTIVITY_DISLIKE) . "' ))) ";
+ }
+ }
+ else {
+ if($parents_str) {
+ $update_unseen = " AND parent IN ( " . dbesc($parents_str) . " )";
+ }
+ }
}
if(($update_unseen) && (! $firehose))
- $r = q("UPDATE `item` SET item_flags = ( item_flags ^ %d)
- WHERE (item_flags & %d) AND `uid` = %d $update_unseen ",
+ $r = q("UPDATE item SET item_flags = ( item_flags & ~%d)
+ WHERE (item_flags & %d) > 0 AND uid = %d $update_unseen ",
intval(ITEM_UNSEEN),
intval(ITEM_UNSEEN),
intval(local_user())
@@ -409,10 +467,11 @@ function network_content(&$a, $update = 0, $load = false) {
$mode = (($nouveau) ? 'network-new' : 'network');
- $o .= conversation($a,$items,$mode,$update,'client');
- if(($items) && (! $update))
- $o .= alt_pager($a,count($items));
+ $o .= conversation($a,$items,$mode,$update,$page_mode);
+
+ if(($items) && (! $update))
+ $o .= alt_pager($a,count($items));
return $o;
}
diff --git a/mod/new_channel.php b/mod/new_channel.php
index eafef2c08..047048f0a 100644
--- a/mod/new_channel.php
+++ b/mod/new_channel.php
@@ -1,6 +1,8 @@
<?php
require_once('include/identity.php');
+require_once('include/permissions.php');
+
function new_channel_init(&$a) {
@@ -100,7 +102,7 @@ function new_channel_content(&$a) {
$name = ((x($_REQUEST,'name')) ? $_REQUEST['name'] : "" );
$nickname = ((x($_REQUEST,'nickname')) ? $_REQUEST['nickname'] : "" );
-
+ $privacy_role = ((x($_REQUEST,'permissions_role')) ? $_REQUEST['permissions_role'] : "" );
$o = replace_macros(get_markup_template('new_channel.tpl'), array(
@@ -113,6 +115,8 @@ function new_channel_content(&$a) {
'$nick_desc' => t('Your nickname will be used to create an easily remembered channel address (like an email address) which you can share with others.'),
'$label_import' => t('Or <a href="import">import an existing channel</a> from another location'),
'$name' => $name,
+ '$help_role' => t('Please choose a channel type (such as social networking or community forum) and privacy requirements so we can select the best permissions for you'),
+ '$role' => array('permissions_role' , t('Channel Type'), ($privacy_role) ? $privacy_role : 'social', '<a href="help/roles" target="_blank">'.t('Read more about roles').'</a>',get_roles()),
'$nickname' => $nickname,
'$submit' => t('Create')
));
diff --git a/mod/notifications.php b/mod/notifications.php
index 09f89e88a..5507ee7e2 100644
--- a/mod/notifications.php
+++ b/mod/notifications.php
@@ -33,7 +33,7 @@ function notifications_post(&$a) {
$fid = $r[0]['fid'];
if($_POST['submit'] == t('Discard')) {
- $r = q("DELETE FROM `intro` WHERE `id` = %d LIMIT 1",
+ $r = q("DELETE FROM `intro` WHERE `id` = %d",
intval($intro_id)
);
if(! $fid) {
@@ -41,7 +41,7 @@ function notifications_post(&$a) {
// The check for blocked and pending is in case the friendship was already approved
// and we just want to get rid of the now pointless notification
- $r = q("DELETE FROM `contact` WHERE `id` = %d AND `uid` = %d AND `self` = 0 AND `blocked` = 1 AND `pending` = 1 LIMIT 1",
+ $r = q("DELETE FROM `contact` WHERE `id` = %d AND `uid` = %d AND `self` = 0 AND `blocked` = 1 AND `pending` = 1",
intval($contact_id),
intval(local_user())
);
@@ -49,7 +49,7 @@ function notifications_post(&$a) {
goaway($a->get_baseurl(true) . '/notifications/intros');
}
if($_POST['submit'] == t('Ignore')) {
- $r = q("UPDATE `intro` SET `ignore` = 1 WHERE `id` = %d LIMIT 1",
+ $r = q("UPDATE `intro` SET `ignore` = 1 WHERE `id` = %d",
intval($intro_id));
goaway($a->get_baseurl(true) . '/notifications/intros');
}
diff --git a/mod/oembed.php b/mod/oembed.php
index a053a8c98..d4a4424f5 100644
--- a/mod/oembed.php
+++ b/mod/oembed.php
@@ -19,9 +19,10 @@ function oembed_init(&$a){
else {
echo "<html><body>";
- $j = oembed_fetch_url(base64url_decode(argv(1)));
+ $src = base64url_decode(argv(1));
+ $j = oembed_fetch_url($src);
echo $j->html;
-// logger('mod-oembed ' . $j->html, LOGGER_ALL);
+// logger('mod-oembed ' . $h, LOGGER_ALL);
echo "</body></html>";
}
}
diff --git a/mod/openid.php b/mod/openid.php
index 2112e0af4..9752db440 100644
--- a/mod/openid.php
+++ b/mod/openid.php
@@ -127,6 +127,8 @@ function openid_content(&$a) {
elseif($photo_other)
$pphoto = $photo_other;
+ $mimetype = guess_image_type($pphoto);
+
$x = q("insert into xchan ( xchan_hash, xchan_guid, xchan_guid_sig, xchan_pubkey, xchan_photo_mimetype,
xchan_photo_l, xchan_addr, xchan_url, xchan_connurl, xchan_follow, xchan_connpage, xchan_name, xchan_network, xchan_photo_date,
xchan_name_date, xchan_flags)
@@ -135,7 +137,7 @@ function openid_content(&$a) {
dbesc(''),
dbesc(''),
dbesc(''),
- dbesc('image/jpeg'),
+ dbesc($mimetype),
dbesc($pphoto),
dbesc($addr),
dbesc($url),
@@ -157,7 +159,7 @@ function openid_content(&$a) {
$photos = import_profile_photo($pphoto,$url);
if($photos) {
$z = q("update xchan set xchan_photo_date = '%s', xchan_photo_l = '%s', xchan_photo_m = '%s',
- xchan_photo_s = '%s', xchan_photo_mimetype = '%s' where xchan_hash = '%s' limit 1",
+ xchan_photo_s = '%s', xchan_photo_mimetype = '%s' where xchan_hash = '%s'",
dbesc(datetime_convert()),
dbesc($photos[0]),
dbesc($photos[1]),
diff --git a/mod/p.php b/mod/p.php
new file mode 100644
index 000000000..9d1c12dbc
--- /dev/null
+++ b/mod/p.php
@@ -0,0 +1,52 @@
+<?php /** @file */
+
+require_once('include/bb2diaspora.php');
+
+// used in Diaspora communications to provide a server copy of a sent post in XML format.
+
+function p_init(&$a) {
+
+ if(argc() < 2)
+ http_status_exit(401);
+
+ $mid = str_replace('.xml','',argv(1));
+
+ $r = q("select * from item where mid = '%s' and (item_flags & %d)>0 and item_private = 0 limit 1",
+ dbesc($mid),
+ intval(ITEM_WALL)
+ );
+
+
+ if((! $r) || (! perm_is_allowed($r[0]['uid'],'','view_stream')))
+ http_status_exit(404);
+
+
+ $c = q("select * from channel where channel_id = %d limit 1",
+ intval($r[0]['uid'])
+ );
+
+ if(! $c)
+ http_status_exit(404);
+
+ $myaddr = $c[0]['channel_address'] . '@' . $a->get_hostname();
+
+ $item = $r[0];
+
+ $title = $item['title'];
+ $body = bb2diaspora_itembody($item);
+ $created = datetime_convert('UTC','UTC',$item['created'],'Y-m-d H:i:s \U\T\C');
+
+ $tpl = get_markup_template('diaspora_post.tpl');
+ $msg = replace_macros($tpl, array(
+ '$body' => xmlify($body),
+ '$guid' => $item['mid'],
+ '$handle' => xmlify($myaddr),
+ '$public' => 'true',
+ '$created' => $created,
+ '$provider' => (($item['app']) ? $item['app'] : 'redmatrix')
+ ));
+
+ header('Content-type: text/xml');
+ echo $msg;
+ killme();
+} \ No newline at end of file
diff --git a/mod/page.php b/mod/page.php
index b3f53a227..e8f17ebda 100644
--- a/mod/page.php
+++ b/mod/page.php
@@ -14,13 +14,11 @@ function page_init(&$a) {
if($a->profile['profile_uid'])
head_set_icon($a->profile['thumb']);
-}
-
+ // load the item here in the init function because we need to extract
+ // the page layout and initialise the correct theme.
-function page_content(&$a) {
-
$observer = $a->get_observer();
$ob_hash = (($observer) ? $observer['xchan_hash'] : '');
@@ -97,11 +95,27 @@ function page_content(&$a) {
}
}
+ $a->data['webpage'] = $r;
+
+
+
+}
+
+
+
+
+function page_content(&$a) {
+
+ $r = $a->data['webpage'];
+ if(! $r)
+ return;
// logger('layout: ' . print_r($a->layout,true));
// Use of widgets should be determined by Comanche, but we don't have it on system pages yet, so...
+ // I recommend we now get rid of this bit - it's quite a hack to work around... - mike
+
if ($perms['write_pages']) {
$chan = $a->channel['channel_id'];
$who = $channel_address;
diff --git a/mod/parse_url.php b/mod/parse_url.php
index 340e1a67e..23d608411 100644
--- a/mod/parse_url.php
+++ b/mod/parse_url.php
@@ -307,7 +307,14 @@ function parse_url_content(&$a) {
$max_images = intval($max_images);
foreach ($siteinfo["images"] as $imagedata) {
- $image .= '[img='.$imagedata["width"].'x'.$imagedata["height"].']'.$imagedata["src"].'[/img]' . "\n";
+ if ($url) {
+ $image .= sprintf('[url=%s]', $url);
+ }
+ $image .= '[img='.$imagedata["width"].'x'.$imagedata["height"].']'.$imagedata["src"].'[/img]';
+ if ($url) {
+ $image .= '[/url]';
+ }
+ $image .= "\n";
$total_images ++;
if($max_images && $max_images >= $total_images)
break;
diff --git a/mod/photo.php b/mod/photo.php
index 9302278b6..66280cb76 100644
--- a/mod/photo.php
+++ b/mod/photo.php
@@ -66,12 +66,12 @@ function photo_init(&$a) {
intval($uid)
);
if(count($r)) {
- $data = $r[0]['data'];
+ $data = dbunescbin($r[0]['data']);
$mimetype = $r[0]['type'];
}
if(! isset($data)) {
$data = file_get_contents($default);
- $mimetype = 'image/jpeg';
+ $mimetype = 'image/png';
}
}
else {
@@ -140,7 +140,7 @@ function photo_init(&$a) {
);
if($r && $allowed) {
- $data = $r[0]['data'];
+ $data = dbunescbin($r[0]['data']);
$mimetype = $r[0]['type'];
}
else {
@@ -176,15 +176,15 @@ function photo_init(&$a) {
case 4:
$data = file_get_contents(get_default_profile_photo());
- $mimetype = 'image/jpeg';
+ $mimetype = 'image/png';
break;
case 5:
$data = file_get_contents(get_default_profile_photo(80));
- $mimetype = 'image/jpeg';
+ $mimetype = 'image/png';
break;
case 6:
$data = file_get_contents(get_default_profile_photo(48));
- $mimetype = 'image/jpeg';
+ $mimetype = 'image/png';
break;
default:
killme();
@@ -224,9 +224,21 @@ function photo_init(&$a) {
}
else {
-
- header("Expires: " . gmdate("D, d M Y H:i:s", time() + (3600*24)) . " GMT");
- header("Cache-Control: max-age=" . (3600*24));
+ // The photo cache default is 1 day to provide a privacy trade-off,
+ // as somebody reducing photo permissions on a photo that is already
+ // "in the wild" won't be able to stop the photo from being viewed
+ // for this amount amount of time once it is in the browser cache.
+ // The privacy expectations of your site members and their perception
+ // of privacy where it affects the entire project may be affected.
+ // This has performance considerations but we highly recommend you
+ // leave it alone.
+
+ $cache = get_config('system','photo_cache_time');
+ if(! $cache)
+ $cache = (3600 * 24); // 1 day
+
+ header("Expires: " . gmdate("D, d M Y H:i:s", time() + $cache) . " GMT");
+ header("Cache-Control: max-age=" . $cache);
}
echo $data;
diff --git a/mod/photos.php b/mod/photos.php
index c43beb8d4..8a54eca4f 100644
--- a/mod/photos.php
+++ b/mod/photos.php
@@ -196,7 +196,7 @@ function photos_post(&$a) {
}
}
- goaway($a->get_baseurl() . '/' . $_SESSION['photo_return']);
+ goaway($a->get_baseurl() . '/photos/' . $a->data['channel']['channel_address'] . '/album/' . $_SESSION['album_return']);
}
if(($a->argc > 2) && ((x($_POST,'desc') !== false) || (x($_POST,'newtag') !== false)) || (x($_POST,'albname') !== false)) {
@@ -206,6 +206,7 @@ function photos_post(&$a) {
$rawtags = ((x($_POST,'newtag')) ? notags(trim($_POST['newtag'])) : '');
$item_id = ((x($_POST,'item_id')) ? intval($_POST['item_id']) : 0);
$albname = ((x($_POST,'albname')) ? notags(trim($_POST['albname'])) : '');
+ $adult = ((x($_POST,'adult')) ? intval($_POST['adult']) : 0);
$str_group_allow = perms2str($_POST['group_allow']);
$str_contact_allow = perms2str($_POST['contact_allow']);
$str_group_deny = perms2str($_POST['group_deny']);
@@ -226,7 +227,7 @@ function photos_post(&$a) {
intval($page_owner_uid)
);
if(count($r)) {
- $ph = photo_factory($r[0]['data'], $r[0]['type']);
+ $ph = photo_factory(dbunescbin($r[0]['data']), $r[0]['type']);
if($ph->is_valid()) {
$rotate_deg = ( (intval($_POST['rotate']) == 1) ? 270 : 90 );
$ph->rotate($rotate_deg);
@@ -234,8 +235,8 @@ function photos_post(&$a) {
$width = $ph->getWidth();
$height = $ph->getHeight();
- $x = q("update photo set data = '%s', height = %d, width = %d where `resource_id` = '%s' and uid = %d and scale = 0 limit 1",
- dbesc($ph->imageString()),
+ $x = q("update photo set data = '%s', height = %d, width = %d where `resource_id` = '%s' and uid = %d and scale = 0",
+ dbescbin($ph->imageString()),
intval($height),
intval($width),
dbesc($resource_id),
@@ -247,8 +248,8 @@ function photos_post(&$a) {
$width = $ph->getWidth();
$height = $ph->getHeight();
- $x = q("update photo set data = '%s', height = %d, width = %d where `resource_id` = '%s' and uid = %d and scale = 1 limit 1",
- dbesc($ph->imageString()),
+ $x = q("update photo set data = '%s', height = %d, width = %d where `resource_id` = '%s' and uid = %d and scale = 1",
+ dbescbin($ph->imageString()),
intval($height),
intval($width),
dbesc($resource_id),
@@ -261,8 +262,8 @@ function photos_post(&$a) {
$width = $ph->getWidth();
$height = $ph->getHeight();
- $x = q("update photo set data = '%s', height = %d, width = %d where `resource_id` = '%s' and uid = %d and scale = 2 limit 1",
- dbesc($ph->imageString()),
+ $x = q("update photo set data = '%s', height = %d, width = %d where `resource_id` = '%s' and uid = %d and scale = 2",
+ dbescbin($ph->imageString()),
intval($height),
intval($width),
dbesc($resource_id),
@@ -273,13 +274,11 @@ function photos_post(&$a) {
}
}
- $p = q("SELECT * FROM `photo` WHERE `resource_id` = '%s' AND `uid` = %d and ( photo_flags = %d or photo_flags = %d ) ORDER BY `scale` DESC",
+ $p = q("SELECT * FROM `photo` WHERE `resource_id` = '%s' AND `uid` = %d ORDER BY `scale` DESC",
dbesc($resource_id),
- intval($page_owner_uid),
- intval(PHOTO_NORMAL),
- intval(PHOTO_PROFILE)
+ intval($page_owner_uid)
);
- if(count($p)) {
+ if($p) {
$ext = $phototypes[$p[0]['type']];
$r = q("UPDATE `photo` SET `description` = '%s', `album` = '%s', `allow_cid` = '%s', `allow_gid` = '%s', `deny_cid` = '%s', `deny_gid` = '%s' WHERE `resource_id` = '%s' AND `uid` = %d",
@@ -296,6 +295,14 @@ function photos_post(&$a) {
$item_private = (($str_contact_allow || $str_group_allow || $str_contact_deny || $str_group_deny) ? true : false);
+ $old_adult = (($p[0]['photo_flags'] & PHOTO_ADULT) ? 1 : 0);
+ if($old_adult != $adult) {
+ $r = q("update photo set photo_flags = ( photo_flags ^ %d) where resource_id = '%s' and uid = %d",
+ intval(PHOTO_ADULT),
+ dbesc($resource_id),
+ intval($page_owner_uid)
+ );
+ }
/* Don't make the item visible if the only change was the album name */
@@ -313,15 +320,17 @@ function photos_post(&$a) {
intval($item_id),
intval($page_owner_uid)
);
+
+ if($r) {
+ $old_tag = $r[0]['tag'];
+ $old_inform = $r[0]['inform'];
+ }
}
- if($r) {
- $old_tag = $r[0]['tag'];
- $old_inform = $r[0]['inform'];
- }
+
// make sure the linked item has the same permissions as the photo regardless of any other changes
$x = q("update item set allow_cid = '%s', allow_gid = '%s', deny_cid = '%s', deny_gid = '%s', item_private = %d
- where id = %d limit 1",
+ where id = %d",
dbesc($str_contact_allow),
dbesc($str_group_allow),
dbesc($str_contact_deny),
@@ -361,7 +370,7 @@ function photos_post(&$a) {
if($fullnametagged)
continue;
- require_once('mod/item.php');
+ require_once('include/text.php');
$body = $access_tag = '';
$success = handle_tag($a, $body, $access_tag, $str_tags, (local_user()) ? local_user() : $a->profile['profile_uid'] , $tag);
@@ -380,6 +389,7 @@ function photos_post(&$a) {
if($success['replaced']) {
$tagged[] = $tag;
+
$post_tags[] = array(
'uid' => $a->profile['profile_uid'],
'type' => $success['termtype'],
@@ -397,8 +407,14 @@ function photos_post(&$a) {
);
if($r) {
+ $r = fetch_post_tags($r,true);
$datarray = $r[0];
- $datarray['term'] = $post_tags;
+ if($post_tags) {
+ if((! array_key_exists('term',$datarray)) || (! is_array($datarray['term'])))
+ $datarray['term'] = $post_tags;
+ else
+ $datarray['term'] = array_merge($datarray['term'],$post_tags);
+ }
item_store_update($datarray,$execflag);
}
@@ -420,8 +436,11 @@ function photos_post(&$a) {
if(! $r['success']) {
notice($r['message'] . EOL);
}
-
- goaway($a->get_baseurl() . '/' . $_SESSION['photo_return']);
+
+ if($_REQUEST['newalbum'])
+ goaway($a->get_baseurl() . '/photos/' . $a->data['channel']['channel_address'] . '/album/' . bin2hex($_REQUEST['newalbum']));
+ else
+ goaway($a->get_baseurl() . '/photos/' . $a->data['channel']['channel_address'] . '/album/' . bin2hex(datetime_convert('UTC',date_default_timezone_get(),'now', 'Y')));
}
@@ -431,20 +450,17 @@ function photos_content(&$a) {
// URLs:
// photos/name
- // photos/name/upload
- // photos/name/upload/xxxxx (xxxxx is album name)
- // photos/name/album/xxxxx
- // photos/name/album/xxxxx/edit
+ // photos/name/album/xxxxx (xxxxx is album name)
// photos/name/image/xxxxx
- // photos/name/image/xxxxx/edit
if((get_config('system','block_public')) && (! local_user()) && (! remote_user())) {
notice( t('Public access denied.') . EOL);
return;
}
-
-
+
+ $unsafe = ((array_key_exists('unsafe',$_REQUEST) && $_REQUEST['unsafe']) ? 1 : 0);
+
require_once('include/bbcode.php');
require_once('include/security.php');
require_once('include/conversation.php');
@@ -468,11 +484,9 @@ function photos_content(&$a) {
if(argc() > 3) {
$datatype = argv(2);
$datum = argv(3);
- }
- elseif((argc() > 2) && (argv(2) === 'upload'))
- $datatype = 'upload';
- else
+ } else {
$datatype = 'summary';
+ }
if(argc() > 4)
$cmd = argv(4);
@@ -495,7 +509,6 @@ function photos_content(&$a) {
$can_post = perm_is_allowed($owner_uid,$observer['xchan_hash'],'post_photos');
$can_view = perm_is_allowed($owner_uid,$observer['xchan_hash'],'view_photos');
-
if(! $can_view) {
notice( t('Access to this item is restricted.') . EOL);
return;
@@ -513,42 +526,11 @@ function photos_content(&$a) {
$_is_owner = (local_user() && (local_user() == $owner_uid));
$o .= profile_tabs($a,$_is_owner, $a->data['channel']['channel_address']);
- //
- // dispatch request
- //
-
/**
* Display upload form
*/
- if($datatype === 'upload') {
- if(! ($can_post)) {
- notice( t('Permission denied.'));
- return;
- }
-
-
-
- if(array_key_exists('albums', $a->data))
- $albums = get_app()->data['albums'];
- else
- $albums = photos_albums_list($a->data['channel'],$a->data['observer']);
-
-
- $selname = (($datum) ? hex2bin($datum) : '');
- $albumselect = '<select id="photos-upload-album-select" name="album" size="4">';
-
- $albumselect .= '<option value="" ' . ((! $selname) ? ' selected="selected" ' : '') . '>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</option>';
- if(count($albums['albums'])) {
- foreach($albums['albums'] as $album) {
- if(! $album['text'])
- continue;
- $selected = (($selname === $album['text']) ? ' selected="selected" ' : '');
- $albumselect .= '<option value="' . $album['text'] . '"' . $selected . '>' . $album['text'] . '</option>';
- }
- }
-
- $albumselect .= '</select>';
+ if( $can_post) {
$uploader = '';
@@ -556,12 +538,8 @@ function photos_content(&$a) {
'addon_text' => $uploader,
'default_upload' => true);
-
call_hooks('photo_upload_form',$ret);
- $default_upload = '<input id="photos-upload-choose" type="file" name="userfile" /> <div class="photos-upload-submit-wrapper" >
- <input type="submit" name="submit" value="' . t('Submit') . '" id="photos-upload-submit" /> </div>';
-
/* Show space usage */
$r = q("select sum(size) as total from photo where aid = %d and scale = 0 ",
@@ -571,10 +549,10 @@ function photos_content(&$a) {
$limit = service_class_fetch($a->data['channel']['channel_id'],'photo_upload_limit');
if($limit !== false) {
- $usage_message = sprintf( t("You have used %1$.2f Mbytes of %2$.2f Mbytes photo storage."), $r[0]['total'] / 1024000, $limit / 1024000 );
+ $usage_message = sprintf( t("%1$.2f MB of %2$.2f MB photo storage used."), $r[0]['total'] / 1024000, $limit / 1024000 );
}
else {
- $usage_message = sprintf( t('You have used %1$.2f Mbytes of photo storage.'), $r[0]['total'] / 1024000 );
+ $usage_message = sprintf( t('%1$.2f MB photo storage used.'), $r[0]['total'] / 1024000 );
}
if($_is_owner) {
@@ -586,50 +564,71 @@ function photos_content(&$a) {
'deny_cid' => $channel['channel_deny_cid'],
'deny_gid' => $channel['channel_deny_gid']
);
- }
- $albumselect_e = $albumselect;
+ $lockstate = (($channel['channel_allow_cid'] || $channel['channel_allow_gid'] || $channel['channel_deny_cid'] || $channel['channel_deny_gid']) ? 'lock' : 'unlock');
+ }
+
$aclselect_e = (($_is_owner) ? populate_acl($channel_acl,false) : '');
+ $selname = (($datum) ? hex2bin($datum) : '');
+
+ $albums = ((array_key_exists('albums', $a->data)) ? $a->data['albums'] : photos_albums_list($a->data['channel'],$a->data['observer']));
+
$tpl = get_markup_template('photos_upload.tpl');
- $o .= replace_macros($tpl,array(
+ $upload_form = replace_macros($tpl,array(
'$pagename' => t('Upload Photos'),
'$sessid' => session_id(),
'$usage' => $usage_message,
'$nickname' => $a->data['channel']['channel_address'],
- '$newalbum' => t('New album name: '),
- '$existalbumtext' => t('or existing album name: '),
+ '$newalbum_label' => t('Enter a new album name'),
+ '$newalbum_placeholder' => t('or select an existing one (doubleclick)'),
'$nosharetext' => t('Do not show a status post for this upload'),
- '$albumselect' => $albumselect_e,
+ '$albums' => $albums['albums'],
+ '$selname' => $selname,
'$permissions' => t('Permissions'),
'$aclselect' => $aclselect_e,
+ '$lockstate' => $lockstate,
'$uploader' => $ret['addon_text'],
- '$default' => (($ret['default_upload']) ? $default_upload : ''),
- '$uploadurl' => $ret['post_url']
+ '$default' => (($ret['default_upload']) ? true : false),
+ '$uploadurl' => $ret['post_url'],
+ '$submit' => t('Submit')
));
- return $o;
}
+ //
+ // dispatch request
+ //
+
/*
* Display a single photo album
*/
if($datatype === 'album') {
+
+
+ if((strlen($datum) & 1) || (! ctype_xdigit($datum))) {
+ notice( t('Album name could not be decoded') . EOL);
+ logger('mod_photos: illegal album encoding: ' . $datum);
+ $datum = '';
+ }
+
$album = hex2bin($datum);
$r = q("SELECT `resource_id`, max(`scale`) AS `scale` FROM `photo` WHERE `uid` = %d AND `album` = '%s'
- AND `scale` <= 4 and (photo_flags = %d or photo_flags = %d ) $sql_extra GROUP BY `resource_id`",
+ AND `scale` <= 4 and ((photo_flags = %d) or (photo_flags & %d ) > 0) $sql_extra GROUP BY `resource_id`",
intval($owner_uid),
dbesc($album),
intval(PHOTO_NORMAL),
- intval(PHOTO_PROFILE)
+ intval(($unsafe) ? (PHOTO_PROFILE|PHOTO_ADULT) : PHOTO_PROFILE)
);
if(count($r)) {
$a->set_pager_total(count($r));
- $a->set_pager_itemspage(40);
+ $a->set_pager_itemspage(60);
+ } else {
+ goaway($a->get_baseurl() . '/photos/' . $a->data['channel']['channel_address']);
}
if($_GET['order'] === 'posted')
@@ -637,62 +636,51 @@ function photos_content(&$a) {
else
$order = 'DESC';
- $r = q("SELECT `resource_id`, `id`, `filename`, type, max(`scale`) AS `scale`, `description` FROM `photo` WHERE `uid` = %d AND `album` = '%s'
- AND `scale` <= 4 and (photo_flags = %d or photo_flags = %d ) $sql_extra GROUP BY `resource_id` ORDER BY `created` $order LIMIT %d , %d",
+
+ $r = q("SELECT p.resource_id, p.id, p.filename, p.type, p.scale, p.description, p.created FROM photo p INNER JOIN
+ (SELECT resource_id, max(scale) scale FROM photo WHERE uid = %d AND album = '%s' AND scale <= 4 AND (photo_flags = %d or photo_flags = %d ) $sql_extra GROUP BY resource_id) ph
+ ON (p.resource_id = ph.resource_id AND p.scale = ph.scale)
+ ORDER BY created $order LIMIT %d OFFSET %d",
intval($owner_uid),
dbesc($album),
intvaL(PHOTO_NORMAL),
- intval(PHOTO_PROFILE),
- intval($a->pager['start']),
- intval($a->pager['itemspage'])
+ intval(($unsafe) ? (PHOTO_PROFILE|PHOTO_ADULT) : PHOTO_PROFILE),
+ intval($a->pager['itemspage']),
+ intval($a->pager['start'])
);
-
- $o .= '<h3>' . $album . '</h3>';
- if($cmd === 'edit') {
- if(($album !== t('Profile Photos')) && ($album !== 'Contact Photos') && ($album !== t('Contact Photos'))) {
- if($can_post) {
- if($a->get_template_engine() === 'internal') {
- $album_e = template_escape($album);
- }
- else {
- $album_e = $album;
- }
-
- $edit_tpl = get_markup_template('album_edit.tpl');
- $o .= replace_macros($edit_tpl,array(
- '$nametext' => t('New album name: '),
- '$nickname' => $a->data['channel']['channel_address'],
- '$album' => $album_e,
- '$hexalbum' => bin2hex($album),
- '$submit' => t('Submit'),
- '$dropsubmit' => t('Delete Album')
- ));
+ //edit album name
+ $album_edit = null;
+ if(($album !== t('Profile Photos')) && ($album !== 'Profile Photos') && ($album !== 'Contact Photos') && ($album !== t('Contact Photos'))) {
+ if($can_post) {
+ if($a->get_template_engine() === 'internal') {
+ $album_e = template_escape($album);
}
- }
- }
- else {
- if(($album !== t('Profile Photos')) && ($album !== 'Contact Photos') && ($album !== t('Contact Photos'))) {
- if($can_post) {
- $o .= '<div id="album-edit-link"><a href="'. $a->get_baseurl() . '/photos/'
- . $a->data['channel']['channel_address'] . '/album/' . bin2hex($album) . '/edit' . '">'
- . t('Edit Album') . '</a></div>';
- }
+ else {
+ $album_e = $album;
+ }
+ $albums = ((array_key_exists('albums', $a->data)) ? $a->data['albums'] : photos_albums_list($a->data['channel'],$a->data['observer']));
+ $edit_tpl = get_markup_template('album_edit.tpl');
+ $album_edit = replace_macros($edit_tpl,array(
+ '$nametext' => t('Enter a new album name'),
+ '$name_placeholder' => t('or select an existing one (doubleclick)'),
+ '$nickname' => $a->data['channel']['channel_address'],
+ '$album' => $album_e,
+ '$albums' => $albums['albums'],
+ '$hexalbum' => bin2hex($album),
+ '$submit' => t('Submit'),
+ '$dropsubmit' => t('Delete Album')
+ ));
}
}
if($_GET['order'] === 'posted')
- $o .= '<div class="photos-upload-link" ><a href="' . $a->get_baseurl() . '/photos/' . $a->data['channel']['channel_address'] . '/album/' . bin2hex($album) . '" >' . t('Show Newest First') . '</a></div>';
+ $order = array(t('Show Newest First'), $a->get_baseurl() . '/photos/' . $a->data['channel']['channel_address'] . '/album/' . bin2hex($album));
else
- $o .= '<div class="photos-upload-link" ><a href="' . $a->get_baseurl() . '/photos/' . $a->data['channel']['channel_address'] . '/album/' . bin2hex($album) . '?f=&order=posted" >' . t('Show Oldest First') . '</a></div>';
-
-
- if($can_post) {
- $o .= '<div class="photos-upload-link" ><a href="' . $a->get_baseurl() . '/photos/' . $a->data['channel']['channel_address'] . '/upload/' . bin2hex($album) . '" >' . t('Upload New Photos') . '</a></div>';
- }
+ $order = array(t('Show Oldest First'), $a->get_baseurl() . '/photos/' . $a->data['channel']['channel_address'] . '/album/' . bin2hex($album) . '?f=&order=posted');
- $tpl = get_markup_template('photo_album.tpl');
- if(count($r))
+ $photos = array();
+ if(count($r)) {
$twist = 'rotright';
foreach($r as $rr) {
@@ -706,38 +694,59 @@ function photos_content(&$a) {
$imgalt_e = $rr['filename'];
$desc_e = $rr['description'];
+ $imagelink = ($a->get_baseurl() . '/photos/' . $a->data['channel']['channel_address'] . '/image/' . $rr['resource_id']
+ . (($_GET['order'] === 'posted') ? '?f=&order=posted' : ''));
+
+ $photos[] = array(
+ 'id' => $rr['id'],
+ 'twist' => ' ' . $twist . rand(2,4),
+ 'link' => $imagelink,
+ 'title' => t('View Photo'),
+ 'src' => $a->get_baseurl() . '/photo/' . $rr['resource_id'] . '-' . $rr['scale'] . '.' .$ext,
+ 'alt' => $imgalt_e,
+ 'desc'=> $desc_e,
+ 'ext' => $ext,
+ 'hash'=> $rr['resource_id'],
+ 'unknown' => t('Unknown')
+ );
+ }
+ }
-// prettyphoto has potential license issues, so we can no longer include it in core
-// The following lines would need to be modified so that they are provided in theme specific files
-// instead of core modules for themes that wish to make use of prettyphoto. I would suggest
-// the feature as a per-theme display option and putting the rel line inside a template.
-
-// if(feature_enabled($a->data['channel']['channel_id'],'prettyphoto')){
-// $imagelink = ($a->get_baseurl() . '/photo/' . $rr['resource_id'] . '.' . $ext );
-// $rel=("prettyPhoto[pp_gal]");
-// }
-// else {
- $imagelink = ($a->get_baseurl() . '/photos/' . $a->data['channel']['channel_address'] . '/image/' . $rr['resource_id']
- . (($_GET['order'] === 'posted') ? '?f=&order=posted' : ''));
- $rel=("photo");
-// }
-
- $o .= replace_macros($tpl,array(
- '$id' => $rr['id'],
- '$twist' => ' ' . $twist . rand(2,4),
- '$photolink' => $imagelink,
- '$rel' => $rel,
- '$phototitle' => t('View Photo'),
- '$imgsrc' => $a->get_baseurl() . '/photo/' . $rr['resource_id'] . '-' . $rr['scale'] . '.' .$ext,
- '$imgalt' => $imgalt_e,
- '$desc'=> $desc_e,
- '$ext' => $ext,
- '$hash'=> $rr['resource_id'],
+ if($_REQUEST['aj']) {
+ if($photos) {
+ $o = replace_macros(get_markup_template('photosajax.tpl'),array(
+ '$photos' => $photos,
));
+ }
+ else {
+ $o = '<div id="content-complete"></div>';
+ }
+ echo $o;
+ killme();
+ }
+ else {
+ $o .= "<script> var page_query = '" . $_GET['q'] . "'; var extra_args = '" . extra_query_args() . "' ; </script>";
+ $tpl = get_markup_template('photo_album.tpl');
+ $o .= replace_macros($tpl, array(
+ '$photos' => $photos,
+ '$album' => $album,
+ '$album_edit' => array(t('Edit Album'), $album_edit),
+ '$can_post' => $can_post,
+ '$upload' => array(t('Upload'), $a->get_baseurl() . '/photos/' . $a->data['channel']['channel_address'] . '/upload/' . bin2hex($album)),
+ '$order' => $order,
+ '$upload_form' => $upload_form,
+ '$usage' => $usage_message
+ ));
}
- $o .= '<div id="photo-album-end"></div>';
- $o .= paginate($a);
+
+ if((! $photos) && ($_REQUEST['aj'])) {
+ $o .= '<div id="content-complete"></div>';
+ echo $o;
+ killme();
+ }
+
+// $o .= paginate($a);
return $o;
@@ -752,25 +761,18 @@ function photos_content(&$a) {
// fetch image, item containing image, then comments
$ph = q("SELECT aid,uid,xchan,resource_id,created,edited,title,`description`,album,filename,`type`,height,width,`size`,scale,profile,photo_flags,allow_cid,allow_gid,deny_cid,deny_gid FROM `photo` WHERE `uid` = %d AND `resource_id` = '%s'
- and (photo_flags = %d or photo_flags = %d ) $sql_extra ORDER BY `scale` ASC ",
+ $sql_extra ORDER BY `scale` ASC ",
intval($owner_uid),
- dbesc($datum),
- intval(PHOTO_NORMAL),
- intval(PHOTO_PROFILE)
-
+ dbesc($datum)
);
if(! $ph) {
/* Check again - this time without specifying permissions */
- $ph = q("SELECT id FROM photo WHERE uid = %d AND resource_id = '%s'
- and ( photo_flags = %d or photo_flags = %d )
- LIMIT 1",
+ $ph = q("SELECT id FROM photo WHERE uid = %d AND resource_id = '%s' LIMIT 1",
intval($owner_uid),
- dbesc($datum),
- intval(PHOTO_NORMAL),
- intval(PHOTO_PROFILE)
+ dbesc($datum)
);
if($ph)
notice( t('Permission denied. Access to this item may be restricted.') . EOL);
@@ -791,11 +793,9 @@ function photos_content(&$a) {
$prvnxt = q("SELECT `resource_id` FROM `photo` WHERE `album` = '%s' AND `uid` = %d AND `scale` = 0
- and ( photo_flags = %d or photo_flags = %d ) $sql_extra ORDER BY `created` $order ",
+ $sql_extra ORDER BY `created` $order ",
dbesc($ph[0]['album']),
- intval($owner_uid),
- intval(PHOTO_NORMAL),
- intval(PHOTO_PROFILE)
+ intval($owner_uid)
);
if(count($prvnxt)) {
@@ -837,16 +837,14 @@ function photos_content(&$a) {
$tools = array(
'profile'=>array($a->get_baseurl() . '/profile_photo/use/'.$ph[0]['resource_id'], t('Use as profile photo')),
);
-
- // lock
- $lock = ( ( ($ph[0]['uid'] == local_user()) && (strlen($ph[0]['allow_cid']) || strlen($ph[0]['allow_gid'])
- || strlen($ph[0]['deny_cid']) || strlen($ph[0]['deny_gid'])) )
- ? t('Private Message')
- : Null);
-
-
}
+ // lockstate
+ $lockstate = ( ( (strlen($ph[0]['allow_cid']) || strlen($ph[0]['allow_gid'])
+ || strlen($ph[0]['deny_cid']) || strlen($ph[0]['deny_gid'])) )
+ ? array('lock', t('Private Photo'))
+ : array('unlock', Null));
+
$a->page['htmlhead'] .= '<script>$(document).keydown(function(event) {' . "\n";
if($prevlink)
$a->page['htmlhead'] .= 'if(event.ctrlKey && event.keyCode == 37) { event.preventDefault(); window.location.href = \'' . $prevlink . '\'; }' . "\n";
@@ -855,7 +853,7 @@ function photos_content(&$a) {
$a->page['htmlhead'] .= '});</script>';
if($prevlink)
- $prevlink = array($prevlink, '<i class="icon-backward photo-icons""></i>') ;
+ $prevlink = array($prevlink, t('Previous'));
$photo = array(
'href' => $a->get_baseurl() . '/photo/' . $hires['resource_id'] . '-' . $hires['scale'] . '.' . $phototypes[$hires['type']],
@@ -864,7 +862,7 @@ function photos_content(&$a) {
);
if($nextlink)
- $nextlink = array($nextlink, '<i class="icon-forward photo-icons"></i>');
+ $nextlink = array($nextlink, t('Next'));
// Do we have an item for this photo?
@@ -894,23 +892,21 @@ function photos_content(&$a) {
$r = conv_sort($r,'commented');
}
-
-
$tags = array();
if($link_item['term']) {
$cnt = 0;
- foreach($link_item['term'] as $t)
+ foreach($link_item['term'] as $t) {
$tags[$cnt] = array(0 => format_term_for_display($t));
if($can_post && ($ph[0]['uid'] == $owner_uid)) {
- $tags[$cnt][1] = 'tagrm?f=&item=' . $link_item['id'];
+ $tags[$cnt][1] = 'tagrm/drop/' . $link_item['id'] . '/' . bin2hex($t['term']); //?f=&item=' . $link_item['id'];
$tags[$cnt][2] = t('Remove');
}
$cnt ++;
+ }
}
-
if((local_user()) && (local_user() == $link_item['uid'])) {
- q("UPDATE `item` SET item_flags = (item_flags ^ %d) WHERE parent = %d and uid = %d and (item_flags & %d)",
+ q("UPDATE `item` SET item_flags = (item_flags & ~%d) WHERE parent = %d and uid = %d and (item_flags & %d)>0",
intval(ITEM_UNSEEN),
intval($link_item['parent']),
intval(local_user()),
@@ -927,23 +923,22 @@ function photos_content(&$a) {
$edit = null;
if($can_post) {
- if(array_key_exists('albums', $a->data))
- $albums = get_app()->data['albums'];
- else
- $albums = photos_albums_list($a->data['channel'],$a->data['observer']);
-
$album_e = $ph[0]['album'];
$caption_e = $ph[0]['description'];
$aclselect_e = populate_acl($ph[0]);
+ $albums = ((array_key_exists('albums', $a->data)) ? $a->data['albums'] : photos_albums_list($a->data['channel'],$a->data['observer']));
+
+ $_SESSION['album_return'] = bin2hex($ph[0]['album']);
$edit = array(
'edit' => t('Edit photo'),
- 'id' => $ph[0]['id'],
+ 'id' => $link_item['id'],
'rotatecw' => t('Rotate CW (right)'),
'rotateccw' => t('Rotate CCW (left)'),
'albums' => $albums['albums'],
'album' => $album_e,
- 'newalbum' => t('New album name'),
+ 'newalbum_label' => t('Enter a new album name'),
+ 'newalbum_placeholder' => t('or select an existing one (doubleclick)'),
'nickname' => $a->data['channel']['channel_address'],
'resource_id' => $ph[0]['resource_id'],
'capt_label' => t('Caption'),
@@ -951,8 +946,11 @@ function photos_content(&$a) {
'tag_label' => t('Add a Tag'),
'permissions' => t('Permissions'),
'aclselect' => $aclselect_e,
- 'help_tags' => t('Example: @bob, @Barbara_Jensen, @jim@example.com, #California, #camping'),
+ 'lockstate' => $lockstate[0],
+ 'help_tags' => t('Example: @bob, @Barbara_Jensen, @jim@example.com'),
'item_id' => ((count($linked_items)) ? $link_item['id'] : 0),
+ 'adult_enabled' => feature_enabled($owner_uid,'adult_photo_flagging'),
+ 'adult' => array('adult',t('Flag as adult in album view'), (($ph[0]['photo_flags'] & PHOTO_ADULT) ? 1 : 0),''),
'submit' => t('Submit'),
'delete' => t('Delete Photo')
);
@@ -981,7 +979,7 @@ function photos_content(&$a) {
$comments = '';
if(! count($r)) {
if($can_post || $can_comment) {
- $comments .= replace_macros($cmnt_tpl,array(
+ $commentbox = replace_macros($cmnt_tpl,array(
'$return_path' => '',
'$mode' => 'photos',
'$jsreload' => $return_url,
@@ -1007,7 +1005,7 @@ function photos_content(&$a) {
$like = '';
$dislike = '';
- // display comments
+
if($r) {
foreach($r as $item) {
@@ -1015,10 +1013,33 @@ function photos_content(&$a) {
like_puller($a,$item,$dlike,'dislike');
}
- $like = ((isset($alike[$link_item['id']])) ? format_like($alike[$link_item['id']],$alike[$link_item['id'] . '-l'],'like',$link_item['id']) : '');
- $dislike = ((isset($dlike[$link_item['id']])) ? format_like($dlike[$link_item['id']],$dlike[$link_item['id'] . '-l'],'dislike',$link_item['id']) : '');
+ $like_count = ((x($alike,$link_item['mid'])) ? $alike[$link_item['mid']] : '');
+ $like_list = ((x($alike,$link_item['mid'])) ? $alike[$link_item['mid'] . '-l'] : '');
+ if (count($like_list) > MAX_LIKERS) {
+ $like_list_part = array_slice($like_list, 0, MAX_LIKERS);
+ array_push($like_list_part, '<a href="#" data-toggle="modal" data-target="#likeModal-' . $this->get_id() . '"><b>' . t('View all') . '</b></a>');
+ } else {
+ $like_list_part = '';
+ }
+ $like_button_label = tt('Like','Likes',$like_count,'noun');
+
+ //if (feature_enabled($conv->get_profile_owner(),'dislike')) {
+ $dislike_count = ((x($dlike,$link_item['mid'])) ? $dlike[$link_item['mid']] : '');
+ $dislike_list = ((x($dlike,$link_item['mid'])) ? $dlike[$link_item['mid'] . '-l'] : '');
+ $dislike_button_label = tt('Dislike','Dislikes',$dislike_count,'noun');
+ if (count($dislike_list) > MAX_LIKERS) {
+ $dislike_list_part = array_slice($dislike_list, 0, MAX_LIKERS);
+ array_push($dislike_list_part, '<a href="#" data-toggle="modal" data-target="#dislikeModal-' . $this->get_id() . '"><b>' . t('View all') . '</b></a>');
+ } else {
+ $dislike_list_part = '';
+ }
+ //}
+
+ $like = ((isset($alike[$link_item['mid']])) ? format_like($alike[$link_item['mid']],$alike[$link_item['mid'] . '-l'],'like',$link_item['mid']) : '');
+ $dislike = ((isset($dlike[$link_item['mid']])) ? format_like($dlike[$link_item['mid']],$dlike[$link_item['mid'] . '-l'],'dislike',$link_item['mid']) : '');
+ // display comments
foreach($r as $item) {
$comment = '';
@@ -1052,7 +1073,7 @@ function photos_content(&$a) {
$body_e = prepare_text($item['body'],$item['mimetype']);
$comments .= replace_macros($template,array(
- '$id' => $item['item_id'],
+ '$id' => $item['id'],
'$mode' => 'photos',
'$profile_url' => $profile_link,
'$name' => $name_e,
@@ -1061,7 +1082,7 @@ function photos_content(&$a) {
'$title' => $title_e,
'$body' => $body_e,
'$ago' => relative_date($item['created']),
- '$indent' => (($item['parent'] != $item['item_id']) ? ' comment' : ''),
+ '$indent' => (($item['parent'] != $item['id']) ? ' comment' : ''),
'$drop' => $drop,
'$comment' => $comment
));
@@ -1069,7 +1090,7 @@ function photos_content(&$a) {
}
if($can_post || $can_comment) {
- $comments .= replace_macros($cmnt_tpl,array(
+ $commentbox = replace_macros($cmnt_tpl,array(
'$return_path' => '',
'$jsreload' => $return_url,
'$type' => 'wall-comment',
@@ -1096,21 +1117,35 @@ function photos_content(&$a) {
$photo_tpl = get_markup_template('photo_view.tpl');
$o .= replace_macros($photo_tpl, array(
- '$id' => $ph[0]['id'],
+ '$id' => $link_item['id'], //$ph[0]['id'],
'$album' => $album_e,
'$tools' => $tools,
- '$lock' => $lock,
+ '$lock' => $lockstate[1],
'$photo' => $photo,
'$prevlink' => $prevlink,
'$nextlink' => $nextlink,
'$desc' => $ph[0]['description'],
+ '$filename' => $ph[0]['filename'],
+ '$unknown' => t('Unknown'),
'$tag_hdr' => t('In This Photo:'),
'$tags' => $tags,
'$edit' => $edit,
'$likebuttons' => $likebuttons,
'$like' => $like_e,
'$dislike' => $dislike_e,
+ '$like_count' => $like_count,
+ '$like_list' => $like_list,
+ '$like_list_part' => $like_list_part,
+ '$like_button_label' => $like_button_label,
+ '$like_modal_title' => t('Likes','noun'),
+ '$dislike_modal_title' => t('Dislikes','noun'),
+ '$dislike_count' => $dislike_count, //((feature_enabled($conv->get_profile_owner(),'dislike')) ? $dislike_count : ''),
+ '$dislike_list' => $dislike_list, //((feature_enabled($conv->get_profile_owner(),'dislike')) ? $dislike_list : ''),
+ '$dislike_list_part' => $dislike_list_part, //((feature_enabled($conv->get_profile_owner(),'dislike')) ? $dislike_list_part : ''),
+ '$dislike_button_label' => $dislike_button_label, //((feature_enabled($conv->get_profile_owner(),'dislike')) ? $dislike_button_label : ''),
+ '$modal_dismiss' => t('Close'),
'$comments' => $comments,
+ '$commentbox' => $commentbox,
'$paginate' => $paginate,
));
@@ -1123,29 +1158,30 @@ function photos_content(&$a) {
//$o = '';
$r = q("SELECT `resource_id`, max(`scale`) AS `scale` FROM `photo` WHERE `uid` = %d AND `album` != '%s' AND `album` != '%s'
- and ( photo_flags = %d or photo_flags = %d ) $sql_extra GROUP BY `resource_id`",
+ and ((photo_flags = %d) or (photo_flags & %d) > 0) $sql_extra GROUP BY `resource_id`",
intval($a->data['channel']['channel_id']),
dbesc('Contact Photos'),
dbesc( t('Contact Photos')),
intval(PHOTO_NORMAL),
- intval(PHOTO_PROFILE)
+ intval(($unsafe) ? (PHOTO_PROFILE|PHOTO_ADULT) : PHOTO_PROFILE)
);
if(count($r)) {
$a->set_pager_total(count($r));
- $a->set_pager_itemspage(20);
+ $a->set_pager_itemspage(60);
}
-
- $r = q("SELECT `resource_id`, `id`, `filename`, type, `album`, max(`scale`) AS `scale` FROM `photo`
- WHERE `uid` = %d AND `album` != '%s' AND `album` != '%s'
- and ( photo_flags = %d or photo_flags = %d )
- $sql_extra GROUP BY `resource_id` ORDER BY `created` DESC LIMIT %d , %d",
+
+ $r = q("SELECT p.resource_id, p.id, p.filename, p.type, p.album, p.scale, p.created FROM photo p INNER JOIN
+ (SELECT resource_id, max(scale) scale FROM photo
+ WHERE uid=%d AND album != '%s' AND album != '%s'
+ AND (photo_flags = %d or ( photo_flags & %d ) > 0 ) $sql_extra group by resource_id) ph
+ ON (p.resource_id = ph.resource_id and p.scale = ph.scale) ORDER by p.created DESC LIMIT %d OFFSET %d",
intval($a->data['channel']['channel_id']),
dbesc('Contact Photos'),
dbesc( t('Contact Photos')),
intval(PHOTO_NORMAL),
- intval(PHOTO_PROFILE),
- intval($a->pager['start']),
- intval($a->pager['itemspage'])
+ intval(($unsafe) ? (PHOTO_PROFILE|PHOTO_ADULT) : PHOTO_PROFILE),
+ intval($a->pager['itemspage']),
+ intval($a->pager['start'])
);
@@ -1186,16 +1222,39 @@ function photos_content(&$a) {
}
}
- $tpl = get_markup_template('photos_recent.tpl');
- $o .= replace_macros($tpl, array(
- '$title' => t('Recent Photos'),
- '$can_post' => $can_post,
- '$upload' => array(t('Upload New Photos'), $a->get_baseurl().'/photos/'.$a->data['channel']['channel_address'].'/upload'),
- '$photos' => $photos,
- ));
+ if($_REQUEST['aj']) {
+ if($photos) {
+ $o = replace_macros(get_markup_template('photosajax.tpl'),array(
+ '$photos' => $photos,
+ ));
+ }
+ else {
+ $o = '<div id="content-complete"></div>';
+ }
+ echo $o;
+ killme();
+ }
+ else {
+ $o .= "<script> var page_query = '" . $_GET['q'] . "'; var extra_args = '" . extra_query_args() . "' ; </script>";
+ $tpl = get_markup_template('photos_recent.tpl');
+ $o .= replace_macros($tpl, array(
+ '$title' => t('Recent Photos'),
+ '$can_post' => $can_post,
+ '$upload' => array(t('Upload'), $a->get_baseurl().'/photos/'.$a->data['channel']['channel_address'].'/upload'),
+ '$photos' => $photos,
+ '$upload_form' => $upload_form,
+ '$usage' => $usage_message
+ ));
-
- $o .= paginate($a);
+ }
+
+ if((! $photos) && ($_REQUEST['aj'])) {
+ $o .= '<div id="content-complete"></div>';
+ echo $o;
+ killme();
+ }
+
+// paginate($a);
return $o;
}
diff --git a/mod/ping.php b/mod/ping.php
index 49475de66..593ae21f8 100644
--- a/mod/ping.php
+++ b/mod/ping.php
@@ -41,6 +41,20 @@ function ping_init(&$a) {
header("content-type: application/json");
+ $vnotify = false;
+
+ if(local_user()) {
+ $vnotify = get_pconfig(local_user(),'system','vnotify');
+ $evdays = intval(get_pconfig(local_user(),'system','evdays'));
+ $ob_hash = get_observer_hash();
+ }
+
+ // if unset show all visual notification types
+ if($vnotify === false)
+ $vnotify = (-1);
+ if($evdays < 1)
+ $evdays = 3;
+
/**
* If you have several windows open to this site and switch to a different channel
* in one of them, the others may get into a confused state showing you a page or options
@@ -71,6 +85,11 @@ function ping_init(&$a) {
}
unset($_SESSION['sysmsg_info']);
}
+ if(! ($vnotify & VNOTIFY_INFO))
+ $result['info'] = array();
+ if(! ($vnotify & VNOTIFY_ALERT))
+ $result['notice'] = array();
+
if($a->install) {
echo json_encode($result);
@@ -89,7 +108,7 @@ function ping_init(&$a) {
$basic_presence = false;
if($r) {
$basic_presence = true;
- q("update chatpresence set cp_last = '%s' where cp_id = %d limit 1",
+ q("update chatpresence set cp_last = '%s' where cp_id = %d",
dbesc(datetime_convert()),
intval($r[0]['cp_id'])
);
@@ -110,7 +129,9 @@ function ping_init(&$a) {
* and shouldn't count as online anymore. We allow an expection for bots.
*/
- q("delete from chatpresence where cp_last < UTC_TIMESTAMP() - INTERVAL 3 MINUTE and cp_client != 'auto' ");
+ q("delete from chatpresence where cp_last < %s - INTERVAL %s and cp_client != 'auto' ",
+ db_utcnow(), db_quoteinterval('3 MINUTE')
+ );
if((! local_user()) || ($result['invalid'])) {
echo json_encode($result);
@@ -130,14 +151,14 @@ function ping_init(&$a) {
if(x($_REQUEST, 'markRead') && local_user()) {
switch($_REQUEST['markRead']) {
case 'network':
- $r = q("update item set item_flags = ( item_flags ^ %d ) where (item_flags & %d) and uid = %d",
+ $r = q("update item set item_flags = ( item_flags & ~%d ) where (item_flags & %d) > 0 and uid = %d",
intval(ITEM_UNSEEN),
intval(ITEM_UNSEEN),
intval(local_user())
);
break;
case 'home':
- $r = q("update item set item_flags = ( item_flags ^ %d ) where (item_flags & %d) and (item_flags & %d) and uid = %d",
+ $r = q("update item set item_flags = ( item_flags & ~%d ) where (item_flags & %d) > 0 and (item_flags & %d) > 0 and uid = %d",
intval(ITEM_UNSEEN),
intval(ITEM_UNSEEN),
intval(ITEM_WALL),
@@ -145,7 +166,7 @@ function ping_init(&$a) {
);
break;
case 'messages':
- $r = q("update mail set mail_flags = ( mail_flags ^ %d ) where channel_id = %d and not (mail_flags & %d)",
+ $r = q("update mail set mail_flags = ( mail_flags | %d ) where channel_id = %d and not (mail_flags & %d) > 0",
intval(MAIL_SEEN),
intval(local_user()),
intval(MAIL_SEEN)
@@ -166,6 +187,14 @@ function ping_init(&$a) {
}
}
+ if(x($_REQUEST, 'markItemRead') && local_user()) {
+ $r = q("update item set item_flags = ( item_flags & ~%d ) where parent = %d and uid = %d",
+ intval(ITEM_UNSEEN),
+ intval($_REQUEST['markItemRead']),
+ intval(local_user())
+ );
+ }
+
/**
@@ -179,17 +208,17 @@ function ping_init(&$a) {
);
if($t && intval($t[0]['total']) > 49) {
$z = q("select * from notify where uid = %d
- and seen = 0 order by date desc limit 0, 50",
+ and seen = 0 order by date desc limit 50",
intval(local_user())
);
}
else {
$z1 = q("select * from notify where uid = %d
- and seen = 0 order by date desc limit 0, 50",
+ and seen = 0 order by date desc limit 50",
intval(local_user())
);
$z2 = q("select * from notify where uid = %d
- and seen = 1 order by date desc limit 0, %d",
+ and seen = 1 order by date desc limit %d",
intval(local_user()),
intval(50 - intval($t[0]['total']))
);
@@ -204,7 +233,7 @@ function ping_init(&$a) {
'url' => $zz['url'],
'photo' => $zz['photo'],
'when' => relative_date($zz['date']),
- 'class' => (($zz['seen']) ? 'notify-seen' : 'notify-unseen'),
+ 'hclass' => (($zz['seen']) ? 'notify-seen' : 'notify-unseen'),
'message' => strip_tags(bbcode($zz['msg']))
);
}
@@ -217,8 +246,8 @@ function ping_init(&$a) {
if(argc() > 1 && argv(1) === 'messages') {
$channel = $a->get_channel();
$t = q("select mail.*, xchan.* from mail left join xchan on xchan_hash = from_xchan
- where channel_id = %d and not ( mail_flags & %d ) and not (mail_flags & %d )
- and from_xchan != '%s' order by created desc limit 0,50",
+ where channel_id = %d and not ( mail_flags & %d ) > 0 and not (mail_flags & %d ) > 0
+ and from_xchan != '%s' order by created desc limit 50",
intval(local_user()),
intval(MAIL_SEEN),
intval(MAIL_DELETED),
@@ -233,7 +262,7 @@ function ping_init(&$a) {
'url' => $zz['xchan_url'],
'photo' => $zz['xchan_photo_s'],
'when' => relative_date($zz['created']),
- 'class' => (($zz['mail_flags'] & MAIL_SEEN) ? 'notify-seen' : 'notify-unseen'),
+ 'hclass' => (($zz['mail_flags'] & MAIL_SEEN) ? 'notify-seen' : 'notify-unseen'),
'message' => t('sent you a private message'),
);
}
@@ -247,10 +276,12 @@ function ping_init(&$a) {
$result = array();
$r = q("SELECT * FROM item
- WHERE item_restrict = %d and ( item_flags & %d ) and uid = %d",
+ WHERE item_restrict = %d and ( item_flags & %d ) > 0 and uid = %d
+ and author_xchan != '%s' ORDER BY created DESC",
intval(ITEM_VISIBLE),
intval(ITEM_UNSEEN),
- intval(local_user())
+ intval(local_user()),
+ dbesc($ob_hash)
);
if($r) {
@@ -269,7 +300,7 @@ function ping_init(&$a) {
if(argc() > 1 && (argv(1) === 'intros')) {
$result = array();
- $r = q("SELECT * FROM abook left join xchan on abook.abook_xchan = xchan.xchan_hash where abook_channel = %d and (abook_flags & %d) and not ((abook_flags & %d) or (xchan_flags & %d))",
+ $r = q("SELECT * FROM abook left join xchan on abook.abook_xchan = xchan.xchan_hash where abook_channel = %d and (abook_flags & %d) > 0 and not ((abook_flags & %d) > 0 or (xchan_flags & %d) > 0) ORDER BY abook_created DESC",
intval(local_user()),
intval(ABOOK_FLAG_PENDING),
intval(ABOOK_FLAG_SELF|ABOOK_FLAG_IGNORED),
@@ -284,7 +315,7 @@ function ping_init(&$a) {
'url' => $rr['xchan_url'],
'photo' => $rr['xchan_photo_s'],
'when' => relative_date($rr['abook_created']),
- 'class' => ('notify-unseen'),
+ 'hclass' => ('notify-unseen'),
'message' => t('added your channel')
);
}
@@ -303,7 +334,7 @@ function ping_init(&$a) {
WHERE `event`.`uid` = %d AND start < '%s' AND start > '%s' and `ignore` = 0
ORDER BY `start` DESC ",
intval(local_user()),
- dbesc(datetime_convert('UTC', date_default_timezone_get(), 'now + 7 days')),
+ dbesc(datetime_convert('UTC', date_default_timezone_get(), 'now + ' . intval($evdays) . ' days')),
dbesc(datetime_convert('UTC', date_default_timezone_get(), 'now - 1 days'))
);
@@ -325,7 +356,7 @@ function ping_init(&$a) {
'url' => $rr['xchan_url'],
'photo' => $rr['xchan_photo_s'],
'when' => $when,
- 'class' => ('notify-unseen'),
+ 'hclass' => ('notify-unseen'),
'message' => t('posted an event')
);
}
@@ -341,101 +372,127 @@ function ping_init(&$a) {
* Normal ping - just the counts, no detail
*/
- $t = q("select count(*) as total from notify where uid = %d and seen = 0",
- intval(local_user())
- );
- if($t)
- $result['notify'] = intval($t[0]['total']);
+ if($vnotify & VNOTIFY_SYSTEM) {
+ $t = q("select count(*) as total from notify where uid = %d and seen = 0",
+ intval(local_user())
+ );
+ if($t)
+ $result['notify'] = intval($t[0]['total']);
+ }
$t1 = dba_timer();
- $r = q("SELECT id, item_restrict, item_flags FROM item
- WHERE (item_restrict = %d) and ( item_flags & %d ) and uid = %d",
- intval(ITEM_VISIBLE),
- intval(ITEM_UNSEEN),
- intval(local_user())
- );
+ if($vnotify & (VNOTIFY_NETWORK|VNOTIFY_CHANNEL)) {
+ $r = q("SELECT id, item_restrict, item_flags FROM item
+ WHERE (item_restrict = %d) and ( item_flags & %d ) > 0 and uid = %d
+ and author_xchan != '%s'",
+ intval(ITEM_VISIBLE),
+ intval(ITEM_UNSEEN),
+ intval(local_user()),
+ dbesc($ob_hash)
+ );
- if(count($r)) {
- $arr = array('items' => $r);
- call_hooks('network_ping', $arr);
+ if($r) {
+ $arr = array('items' => $r);
+ call_hooks('network_ping', $arr);
- foreach ($r as $it) {
- if($it['item_flags'] & ITEM_WALL)
- $result['home'] ++;
- else
- $result['network'] ++;
+ foreach ($r as $it) {
+ if($it['item_flags'] & ITEM_WALL)
+ $result['home'] ++;
+ else
+ $result['network'] ++;
+ }
}
}
+ if(! ($vnotify & VNOTIFY_NETWORK))
+ $result['network'] = 0;
+ if(! ($vnotify & VNOTIFY_CHANNEL))
+ $result['home'] = 0;
+
$t2 = dba_timer();
- $intr = q("SELECT COUNT(abook.abook_id) AS total FROM abook left join xchan on abook.abook_xchan = xchan.xchan_hash where abook_channel = %d and (abook_flags & %d) and not ((abook_flags & %d) or (xchan_flags & %d))",
- intval(local_user()),
- intval(ABOOK_FLAG_PENDING),
- intval(ABOOK_FLAG_SELF|ABOOK_FLAG_IGNORED),
- intval(XCHAN_FLAGS_DELETED|XCHAN_FLAGS_ORPHAN)
- );
+ if($vnotify & VNOTIFY_INTRO) {
+ $intr = q("SELECT COUNT(abook.abook_id) AS total FROM abook left join xchan on abook.abook_xchan = xchan.xchan_hash where abook_channel = %d and (abook_flags & %d) > 0 and not ((abook_flags & %d) > 0 or (xchan_flags & %d) > 0)",
+ intval(local_user()),
+ intval(ABOOK_FLAG_PENDING),
+ intval(ABOOK_FLAG_SELF|ABOOK_FLAG_IGNORED),
+ intval(XCHAN_FLAGS_DELETED|XCHAN_FLAGS_ORPHAN)
+ );
- $t3 = dba_timer();
+ $t3 = dba_timer();
- if($intr)
- $result['intros'] = intval($intr[0]['total']);
+ if($intr)
+ $result['intros'] = intval($intr[0]['total']);
+ }
$t4 = dba_timer();
$channel = get_app()->get_channel();
- $mails = q("SELECT count(id) as total from mail
- WHERE channel_id = %d AND not (mail_flags & %d) and from_xchan != '%s' ",
- intval(local_user()),
- intval(MAIL_SEEN),
- dbesc($channel['channel_hash'])
- );
- if($mails)
- $result['mail'] = intval($mails[0]['total']);
-
- if ($a->config['system']['register_policy'] == REGISTER_APPROVE && is_site_admin()) {
- $regs = q("SELECT count(account_id) as total from account where (account_flags & %d)",
- intval(ACCOUNT_PENDING)
+ if($vnotify & VNOTIFY_MAIL) {
+ $mails = q("SELECT count(id) as total from mail
+ WHERE channel_id = %d AND not (mail_flags & %d) > 0 and from_xchan != '%s' ",
+ intval(local_user()),
+ intval(MAIL_SEEN),
+ dbesc($channel['channel_hash'])
);
- if($regs)
- $result['register'] = intval($regs[0]['total']);
+ if($mails)
+ $result['mail'] = intval($mails[0]['total']);
+ }
+
+ if($vnotify & VNOTIFY_REGISTER) {
+ if ($a->config['system']['register_policy'] == REGISTER_APPROVE && is_site_admin()) {
+ $regs = q("SELECT count(account_id) as total from account where (account_flags & %d) > 0",
+ intval(ACCOUNT_PENDING)
+ );
+ if($regs)
+ $result['register'] = intval($regs[0]['total']);
+ }
}
$t5 = dba_timer();
- $events = q("SELECT type, start, adjust FROM `event`
- WHERE `event`.`uid` = %d AND start < '%s' AND start > '%s' and `ignore` = 0
- ORDER BY `start` ASC ",
- intval(local_user()),
- dbesc(datetime_convert('UTC', date_default_timezone_get(), 'now + 7 days')),
- dbesc(datetime_convert('UTC', date_default_timezone_get(), 'now - 1 days'))
- );
-
- if($events) {
- $result['all_events'] = count($events);
-
- if($result['all_events']) {
- $str_now = datetime_convert('UTC', date_default_timezone_get(), 'now', 'Y-m-d');
- foreach($events as $x) {
- $bd = false;
- if($x['type'] === 'birthday') {
- $result['birthdays'] ++;
- $bd = true;
- }
- else {
- $result['events'] ++;
- }
- if(datetime_convert('UTC', ((intval($x['adjust'])) ? date_default_timezone_get() : 'UTC'), $x['start'], 'Y-m-d') === $str_now) {
- $result['all_events_today'] ++;
- if($bd)
- $result['birthdays_today'] ++;
- else
- $result['events_today'] ++;
+ if($vnotify & (VNOTIFY_EVENT|VNOTIFY_EVENTTODAY|VNOTIFY_BIRTHDAY)) {
+ $events = q("SELECT type, start, adjust FROM `event`
+ WHERE `event`.`uid` = %d AND start < '%s' AND start > '%s' and `ignore` = 0
+ ORDER BY `start` ASC ",
+ intval(local_user()),
+ dbesc(datetime_convert('UTC', date_default_timezone_get(), 'now + ' . intval($evdays) . ' days')),
+ dbesc(datetime_convert('UTC', date_default_timezone_get(), 'now - 1 days'))
+ );
+
+ if($events) {
+ $result['all_events'] = count($events);
+
+ if($result['all_events']) {
+ $str_now = datetime_convert('UTC', date_default_timezone_get(), 'now', 'Y-m-d');
+ foreach($events as $x) {
+ $bd = false;
+ if($x['type'] === 'birthday') {
+ $result['birthdays'] ++;
+ $bd = true;
+ }
+ else {
+ $result['events'] ++;
+ }
+ if(datetime_convert('UTC', ((intval($x['adjust'])) ? date_default_timezone_get() : 'UTC'), $x['start'], 'Y-m-d') === $str_now) {
+ $result['all_events_today'] ++;
+ if($bd)
+ $result['birthdays_today'] ++;
+ else
+ $result['events_today'] ++;
+ }
}
}
}
}
+ if(! ($vnotify & VNOTIFY_EVENT))
+ $result['all_events'] = $result['events'] = 0;
+ if(! ($vnotify & VNOTIFY_EVENTTODAY))
+ $result['all_events_today'] = $result['events_today'] = 0;
+ if(! ($vnotify & VNOTIFY_BIRTHDAY))
+ $result['birthdays'] = 0;
+
$x = json_encode($result);
diff --git a/mod/poco.php b/mod/poco.php
index 9295f13de..3f932e92f 100644
--- a/mod/poco.php
+++ b/mod/poco.php
@@ -15,7 +15,7 @@ function poco_init(&$a) {
$user = notags(trim(argv(1)));
}
if(! x($user)) {
- $c = q("select * from pconfig where cat = 'system' and k = 'suggestme' and v = 1");
+ $c = q("select * from pconfig where cat = 'system' and k = 'suggestme' and v = '1'");
if(! $c) {
logger('mod_poco: system mode. No candidates.', LOGGER_DEBUG);
http_status_exit(404);
@@ -60,7 +60,7 @@ function poco_init(&$a) {
}
if($justme)
- $sql_extra = " and ( abook_flags & " . ABOOK_FLAG_SELF . " ) ";
+ $sql_extra = " and ( abook_flags & " . ABOOK_FLAG_SELF . " )>0 ";
else
$sql_extra = " and abook_flags = 0 ";
@@ -69,14 +69,14 @@ function poco_init(&$a) {
if($system_mode) {
$r = q("SELECT count(*) as `total` from abook where ( abook_flags & " . ABOOK_FLAG_SELF .
- " ) and abook_channel in (select uid from pconfig where cat = 'system' and k = 'suggestme' and v = 1) ");
+ " )>0 and abook_channel in (select uid from pconfig where cat = 'system' and k = 'suggestme' and v = '1') ");
}
else {
$r = q("SELECT count(*) as `total` from abook where abook_channel = %d
$sql_extra ",
intval($channel_id)
);
- $c = q("select * from menu_item where ( mitem_flags & " . intval(MENU_ITEM_CHATROOM) . " ) and allow_cid = '' and allow_gid = '' and deny_cid = '' and deny_gid = '' and mitem_channel_id = %d",
+ $c = q("select * from menu_item where ( mitem_flags & " . intval(MENU_ITEM_CHATROOM) . " )>0 and allow_cid = '' and allow_gid = '' and deny_cid = '' and deny_gid = '' and mitem_channel_id = %d",
intval($channel_id)
);
}
@@ -93,17 +93,17 @@ function poco_init(&$a) {
if($system_mode) {
$r = q("SELECT abook.*, xchan.* from abook left join xchan on abook_xchan = xchan_hash where ( abook_flags & " . ABOOK_FLAG_SELF .
- " ) and abook_channel in (select uid from pconfig where cat = 'system' and k = 'suggestme' and v = 1) limit %d, %d ",
- intval($startIndex),
- intval($itemsPerPage)
+ " )>0 and abook_channel in (select uid from pconfig where cat = 'system' and k = 'suggestme' and v = '1') limit %d offset %d ",
+ intval($itemsPerPage),
+ intval($startIndex)
);
}
else {
$r = q("SELECT abook.*, xchan.* from abook left join xchan on abook_xchan = xchan_hash where abook_channel = %d
- $sql_extra LIMIT %d, %d",
+ $sql_extra LIMIT %d OFFSET %d",
intval($channel_id),
- intval($startIndex),
- intval($itemsPerPage)
+ intval($itemsPerPage),
+ intval($startIndex)
);
}
@@ -167,8 +167,11 @@ function poco_init(&$a) {
$entry['displayName'] = $rr['xchan_name'];
if($fields_ret['urls']) {
$entry['urls'] = array(array('value' => $rr['xchan_url'], 'type' => 'profile'));
+ $network = $rr['xchan_network'];
+ if(strpos($network,'friendica') !== false)
+ $network = 'friendica';
if($rr['xchan_addr'])
- $entry['urls'][] = array('value' => 'acct:' . $rr['xchan_addr'], 'type' => 'zot');
+ $entry['urls'][] = array('value' => 'acct:' . $rr['xchan_addr'], 'type' => $network);
}
if($fields_ret['preferredUsername'])
$entry['preferredUsername'] = substr($rr['xchan_addr'],0,strpos($rr['xchan_addr'],'@'));
diff --git a/mod/post.php b/mod/post.php
index 3b4f66baf..9e818a7e2 100644
--- a/mod/post.php
+++ b/mod/post.php
@@ -98,7 +98,7 @@ function post_init(&$a) {
// Any channel will do, providing it's currently active. We just need to have an
// identity to attach to the packet we send back. So find one.
- $c = q("select * from channel where not ( channel_pageflags & %d ) limit 1",
+ $c = q("select * from channel where not ( channel_pageflags & %d )>0 limit 1",
intval(PAGE_REMOVED)
);
@@ -415,8 +415,8 @@ function post_init(&$a) {
* }
*}
*
- * Currently defined message types are 'activity', 'mail', 'profile' and 'channel_sync', which each have
- * different content schemas.
+ * Currently defined message types are 'activity', 'mail', 'profile', 'location' and 'channel_sync',
+ * which each have different content schemas.
*
* Ping packet:
* A ping packet does not require any parameters except the type. It may or may not be encrypted.
@@ -507,6 +507,7 @@ function post_post(&$a) {
json_return_and_die($ret);
}
+
if($msgtype === 'pickup') {
/**
@@ -597,11 +598,24 @@ function post_post(&$a) {
$ret['success'] = true;
$ret['pickup'] = array();
foreach($r as $rr) {
- $ret['pickup'][] = array('notify' => json_decode($rr['outq_notify'],true),'message' => json_decode($rr['outq_msg'],true));
+ if($rr['outq_msg']) {
+ $x = json_decode($rr['outq_msg'],true);
- $x = q("delete from outq where outq_hash = '%s' limit 1",
- dbesc($rr['outq_hash'])
- );
+ if(! $x)
+ continue;
+
+ if(array_key_exists('message_list',$x)) {
+ foreach($x['message_list'] as $xx) {
+ $ret['pickup'][] = array('notify' => json_decode($rr['outq_notify'],true),'message' => $xx);
+ }
+ }
+ else
+ $ret['pickup'][] = array('notify' => json_decode($rr['outq_notify'],true),'message' => $x);
+
+ $x = q("delete from outq where outq_hash = '%s'",
+ dbesc($rr['outq_hash'])
+ );
+ }
}
}
@@ -645,7 +659,7 @@ function post_post(&$a) {
// Update our DB to show when we last communicated successfully with this hub
// This will allow us to prune dead hubs from using up resources
- $r = q("update hubloc set hubloc_connected = '%s' where hubloc_id = %d limit 1",
+ $r = q("update hubloc set hubloc_connected = '%s' where hubloc_id = %d",
dbesc(datetime_convert()),
intval($hub['hubloc_id'])
);
@@ -653,17 +667,17 @@ function post_post(&$a) {
// a dead hub came back to life - reset any tombstones we might have
if($hub['hubloc_status'] & HUBLOC_OFFLINE) {
- q("update hubloc set hubloc_status = (hubloc_status ^ %d) where hubloc_id = %d limit 1",
+ q("update hubloc set hubloc_status = (hubloc_status & ~%d) where hubloc_id = %d",
intval(HUBLOC_OFFLINE),
intval($hub['hubloc_id'])
);
if($r[0]['hubloc_flags'] & HUBLOC_FLAGS_ORPHANCHECK) {
- q("update hubloc set hubloc_flags = (hubloc_flags ^ %d) where hubloc_id = %d limit 1",
+ q("update hubloc set hubloc_flags = (hubloc_flags & ~%d) where hubloc_id = %d",
intval(HUBLOC_FLAGS_ORPHANCHECK),
intval($hub['hubloc_id'])
);
}
- q("update xchan set xchan_flags = (xchan_flags ^ %d) where (xchan_flags & %d) and xchan_hash = '%s' limit 1",
+ q("update xchan set xchan_flags = (xchan_flags & ~%d) where (xchan_flags & %d)>0 and xchan_hash = '%s'",
intval(XCHAN_FLAGS_ORPHAN),
intval(XCHAN_FLAGS_ORPHAN),
dbesc($hub['hubloc_hash'])
@@ -718,7 +732,9 @@ function post_post(&$a) {
$sender_hash = make_xchan_hash($arr['guid'],$arr['guid_sig']);
// garbage collect any old unused notifications
- q("delete from verify where type = 'auth' and created < UTC_TIMESTAMP() - INTERVAL 10 MINUTE");
+ q("delete from verify where type = 'auth' and created < %s - INTERVAL %s",
+ db_utcnow(), db_quoteinterval('10 MINUTE')
+ );
$y = q("select xchan_pubkey from xchan where xchan_hash = '%s' limit 1",
dbesc($sender_hash)
@@ -767,7 +783,7 @@ function post_post(&$a) {
$ret['message'] .= 'verification key not found' . EOL;
json_return_and_die($ret);
}
- $r = q("delete from verify where id = %d limit 1",
+ $r = q("delete from verify where id = %d",
intval($z[0]['id'])
);
@@ -782,6 +798,7 @@ function post_post(&$a) {
$ret['service_class'] = $u[0]['account_service_class'];
// Set "do not track" flag if this site or this channel's profile is restricted
+ // in some way
if(intval(get_config('system','block_public')))
$ret['DNT'] = true;
@@ -789,6 +806,8 @@ function post_post(&$a) {
$ret['DNT'] = true;
if(get_pconfig($c[0]['channel_id'],'system','do_not_track'))
$ret['DNT'] = true;
+ if(get_pconfig($c[0]['channel_id'],'system','hide_online_status'))
+ $ret['DNT'] = true;
json_return_and_die($ret);
@@ -796,6 +815,12 @@ function post_post(&$a) {
json_return_and_die($ret);
}
+ if($msgtype === 'request') {
+ // request a particular post/conversation by message_id
+ $x = zot_process_message_request($data);
+ json_return_and_die($x);
+ }
+
if($msgtype === 'purge') {
if($recipients) {
diff --git a/mod/profile_photo.php b/mod/profile_photo.php
index c587b9606..e9dad6f51 100644
--- a/mod/profile_photo.php
+++ b/mod/profile_photo.php
@@ -33,7 +33,7 @@ function profile_photo_set_profile_perms($profileid = '') {
if (intval($profile['is_default']) != 1) {
$r0 = q("SELECT channel_hash FROM channel WHERE channel_id = %d LIMIT 1", intval(local_user()) );
- $r1 = q("SELECT abook.abook_xchan FROM abook WHERE abook_profile = %d ", intval($profile['id'])); //Should not be needed in future. Catches old int-profile-ids.
+ $r1 = q("SELECT abook.abook_xchan FROM abook WHERE abook_profile = '%d' ", intval($profile['id'])); //Should not be needed in future. Catches old int-profile-ids.
$r2 = q("SELECT abook.abook_xchan FROM abook WHERE abook_profile = '%s'", dbesc($profile['profile_guid']));
$allowcid = "<" . $r0[0]['channel_hash'] . ">";
foreach ($r1 as $entry) {
@@ -173,7 +173,7 @@ function profile_photo_post(&$a) {
dbesc($base_image['resource_id']),
intval(local_user())
);
- $r = q("UPDATE photo SET photo_flags = ( photo_flags ^ %d ) WHERE ( photo_flags & %d )
+ $r = q("UPDATE photo SET photo_flags = ( photo_flags & ~%d ) WHERE ( photo_flags & %d )>0
AND resource_id != '%s' AND `uid` = %d",
intval(PHOTO_PROFILE),
intval(PHOTO_PROFILE),
@@ -182,7 +182,7 @@ function profile_photo_post(&$a) {
);
}
else {
- $r = q("update profile set photo = '%s', thumb = '%s' where id = %d and uid = %d limit 1",
+ $r = q("update profile set photo = '%s', thumb = '%s' where id = %d and uid = %d",
dbesc($a->get_baseurl() . '/photo/' . $base_image['resource_id'] . '-4'),
dbesc($a->get_baseurl() . '/photo/' . $base_image['resource_id'] . '-5'),
intval($_REQUEST['profile']),
@@ -196,7 +196,7 @@ function profile_photo_post(&$a) {
$channel = $a->get_channel();
$r = q("UPDATE xchan set xchan_photo_mimetype = '%s', xchan_photo_date = '%s'
- where xchan_hash = '%s' limit 1",
+ where xchan_hash = '%s'",
dbesc($im->getType()),
dbesc(datetime_convert()),
dbesc($channel['xchan_hash'])
@@ -302,7 +302,7 @@ function profile_photo_content(&$a) {
// unset any existing profile photos
$r = q("UPDATE photo SET profile = 0 WHERE profile = 1 AND uid = %d",
intval(local_user()));
- $r = q("UPDATE photo SET photo_flags = (photo_flags ^ %d ) WHERE (photo_flags & %d ) AND uid = %d",
+ $r = q("UPDATE photo SET photo_flags = (photo_flags & ~%d ) WHERE (photo_flags & %d )>0 AND uid = %d",
intval(PHOTO_PROFILE),
intval(PHOTO_PROFILE),
intval(local_user()));
@@ -320,7 +320,7 @@ function profile_photo_content(&$a) {
);
$r = q("UPDATE xchan set xchan_photo_date = '%s'
- where xchan_hash = '%s' limit 1",
+ where xchan_hash = '%s'",
dbesc(datetime_convert()),
dbesc($channel['xchan_hash'])
);
@@ -364,7 +364,9 @@ function profile_photo_content(&$a) {
// FIXME - yuk
'$select' => sprintf('%s %s', t('or'), ($newuser) ? '<a href="' . $a->get_baseurl() . '">' . t('skip this step') . '</a>' : '<a href="'. $a->get_baseurl() . '/photos/' . $a->channel['channel_address'] . '">' . t('select a photo from your photo albums') . '</a>')
));
-
+
+ call_hooks('profile_photo_content_end', $o);
+
return $o;
}
else {
diff --git a/mod/profiles.php b/mod/profiles.php
index f6392d4ab..fa6a6e35c 100644
--- a/mod/profiles.php
+++ b/mod/profiles.php
@@ -11,7 +11,7 @@ function profiles_init(&$a) {
if((argc() > 2) && (argv(1) === "drop") && intval(argv(2))) {
$r = q("SELECT * FROM `profile` WHERE `id` = %d AND `uid` = %d AND `is_default` = 0 LIMIT 1",
- intval($a->argv[2]),
+ intval(argv(2)),
intval(local_user())
);
if(! count($r)) {
@@ -30,7 +30,7 @@ function profiles_init(&$a) {
dbesc($profile_guid),
intval(local_user())
);
- $r = q("DELETE FROM `profile` WHERE `id` = %d AND `uid` = %d LIMIT 1",
+ $r = q("DELETE FROM `profile` WHERE `id` = %d AND `uid` = %d",
intval(argv(2)),
intval(local_user())
);
@@ -126,12 +126,48 @@ function profiles_init(&$a) {
return; // NOTREACHED
}
+ if((argc() > 2) && (argv(1) === 'export')) {
+
+ $r1 = q("SELECT * FROM `profile` WHERE `uid` = %d AND `id` = %d LIMIT 1",
+ intval(local_user()),
+ intval(argv(2))
+ );
+ if(! $r1) {
+ notice( t('Profile unavailable to export.') . EOL);
+ $a->error = 404;
+ return;
+ }
+ header('content-type: application/octet_stream');
+ header('content-disposition: attachment; filename="' . $r1[0]['profile_name'] . '.json"' );
+
+ unset($r1[0]['id']);
+ unset($r1[0]['aid']);
+ unset($r1[0]['uid']);
+ unset($r1[0]['is_default']);
+ unset($r1[0]['publish']);
+ unset($r1[0]['profile_name']);
+ unset($r1[0]['profile_guid']);
+ echo json_encode($r1[0]);
+ killme();
+ }
+
+
+
// Run profile_load() here to make sure the theme is set before
// we start loading content
- if((argc() > 1) && (intval(argv(1)))) {
+ if(((argc() > 1) && (intval(argv(1)))) || !feature_enabled(local_user(),'multi_profiles')) {
+ if(feature_enabled(local_user(),'multi_profiles'))
+ $id = $a->argv[1];
+ else {
+ $x = q("select id from profile where uid = %d and is_default = 1",
+ intval(local_user())
+ );
+ if($x)
+ $id = $x[0]['id'];
+ }
$r = q("SELECT * FROM `profile` WHERE `id` = %d AND `uid` = %d LIMIT 1",
- intval($a->argv[1]),
+ intval($id),
intval(local_user())
);
if(! count($r)) {
@@ -159,6 +195,33 @@ function profiles_post(&$a) {
call_hooks('profile_post', $_POST);
+ // import from json export file.
+ // Only import fields that are allowed on this hub
+
+ if(x($_FILES,'userfile')) {
+ $src = $_FILES['userfile']['tmp_name'];
+ $filesize = intval($_FILES['userfile']['size']);
+ if($filesize) {
+ $j = @json_decode(@file_get_contents($src),true);
+ @unlink($src);
+ if($j) {
+ $fields = get_profile_fields_advanced();
+ if($fields) {
+ foreach($j as $jj => $v) {
+ foreach($fields as $f => $n) {
+ if($jj == $f) {
+ $_POST[$f] = $v;
+ break;
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+
+
+
if((argc() > 1) && (argv(1) !== "new") && intval(argv(1))) {
$orig = q("SELECT * FROM `profile` WHERE `id` = %d AND `uid` = %d LIMIT 1",
intval($a->argv[1]),
@@ -178,32 +241,30 @@ function profiles_post(&$a) {
notify( t('Profile Name is required.') . EOL);
return;
}
-
- $year = intval($_POST['year']);
- if($year < 1900 || $year > 2100 || $year < 0)
- $year = 0;
- $month = intval($_POST['month']);
- if(($month > 12) || ($month < 0))
- $month = 0;
- $mtab = array(0,31,29,31,30,31,30,31,31,30,31,30,31);
- $day = intval($_POST['day']);
- if(($day > $mtab[$month]) || ($day < 0))
- $day = 0;
-
-// if($year && (! ($month && $day))) {
-// $month = 1; $day = 1;
-// }
-
- $dob = '0000-00-00';
- $dob = sprintf('%04d-%02d-%02d',$year,$month,$day);
+ $dob = $_POST['dob'] ? escape_tags(trim($_POST['dob'])) : '0000-00-00'; // FIXME: Needs to be validated?
+
+ $y = substr($dob,0,4);
+ if((! ctype_digit($y)) || ($y < 1900))
+ $ignore_year = true;
+ else
+ $ignore_year = false;
+
+ if($dob != '0000-00-00') {
+ if(strpos($dob,'0000-') === 0) {
+ $ignore_year = true;
+ $dob = substr($dob,5);
+ }
+ $dob = datetime_convert('UTC','UTC',(($ignore_year) ? '1900-' . $dob : $dob),(($ignore_year) ? 'm-d' : 'Y-m-d'));
+ if($ignore_year)
+ $dob = '0000-' . $dob;
+ }
$name = escape_tags(trim($_POST['name']));
if($orig[0]['name'] != $name)
$namechanged = true;
-
$pdesc = escape_tags(trim($_POST['pdesc']));
$gender = escape_tags(trim($_POST['gender']));
$address = escape_tags(trim($_POST['address']));
@@ -240,7 +301,7 @@ function profiles_post(&$a) {
$with = ((x($_POST,'with')) ? escape_tags(trim($_POST['with'])) : '');
if(! strlen($howlong))
- $howlong = '0000-00-00 00:00:00';
+ $howlong = NULL_DATE;
else
$howlong = datetime_convert(date_default_timezone_get(),'UTC',$howlong);
@@ -284,9 +345,41 @@ function profiles_post(&$a) {
$with = $orig[0]['with'];
}
-
-
-
+ $profile_fields_basic = get_profile_fields_basic();
+ $profile_fields_advanced = get_profile_fields_advanced();
+ $advanced = ((feature_enabled(local_user(),'advanced_profiles')) ? true : false);
+ if($advanced)
+ $fields = $profile_fields_advanced;
+ else
+ $fields = $profile_fields_basic;
+
+ $z = q("select * from profdef where true");
+ if($z) {
+ foreach($z as $zz) {
+ if(array_key_exists($zz['field_name'],$fields)) {
+ $w = q("select * from profext where channel_id = %d and hash = '%s' and k = '%s' limit 1",
+ intval(local_user()),
+ dbesc($orig[0]['profile_guid']),
+ dbesc($zz['field_name'])
+ );
+ if($w) {
+ q("update profext set v = '%s' where id = %d",
+ dbesc(escape_tags(trim($_POST[$zz['field_name']]))),
+ intval($w[0]['id'])
+ );
+ }
+ else {
+ q("insert into profext ( channel_id, hash, k, v ) values ( %d, '%s', '%s', '%s') ",
+ intval(local_user()),
+ dbesc($orig[0]['profile_guid']),
+ dbesc($zz['field_name']),
+ dbesc(escape_tags(trim($_POST[$zz['field_name']])))
+ );
+ }
+ }
+ }
+ }
+
$changes = array();
$value = '';
if($is_default) {
@@ -385,7 +478,7 @@ function profiles_post(&$a) {
`work` = '%s',
`education` = '%s',
`hide_friends` = %d
- WHERE `id` = %d AND `uid` = %d LIMIT 1",
+ WHERE `id` = %d AND `uid` = %d",
dbesc($profile_name),
dbesc($name),
dbesc($pdesc),
@@ -438,7 +531,7 @@ function profiles_post(&$a) {
$channel = $a->get_channel();
if($namechanged && $is_default) {
- $r = q("UPDATE xchan SET xchan_name = '%s', xchan_name_date = '%s' WHERE xchan_hash = '%s' limit 1",
+ $r = q("UPDATE xchan SET xchan_name = '%s', xchan_name_date = '%s' WHERE xchan_hash = '%s'",
dbesc($name),
dbesc(datetime_convert()),
dbesc($channel['xchan_hash'])
@@ -446,6 +539,8 @@ function profiles_post(&$a) {
}
if($is_default) {
+ // reload the info for the sidebar widget - why does this not work?
+ profile_load($a,$channel['channel_address']);
proc_run('php','include/directory.php',local_user());
}
}
@@ -458,14 +553,30 @@ function profiles_content(&$a) {
$o = '';
+ $channel = $a->get_channel();
+
if(! local_user()) {
notice( t('Permission denied.') . EOL);
return;
}
- if((argc() > 1) && (intval(argv(1)))) {
+ require_once('include/identity.php');
+
+ $profile_fields_basic = get_profile_fields_basic();
+ $profile_fields_advanced = get_profile_fields_advanced();
+
+ if(((argc() > 1) && (intval(argv(1)))) || !feature_enabled(local_user(),'multi_profiles')) {
+ if(feature_enabled(local_user(),'multi_profiles'))
+ $id = $a->argv[1];
+ else {
+ $x = q("select id from profile where uid = %d and is_default = 1",
+ intval(local_user())
+ );
+ if($x)
+ $id = $x[0]['id'];
+ }
$r = q("SELECT * FROM `profile` WHERE `id` = %d AND `uid` = %d LIMIT 1",
- intval($a->argv[1]),
+ intval($id),
intval(local_user())
);
if(! count($r)) {
@@ -485,16 +596,39 @@ function profiles_content(&$a) {
'$editselect' => $editselect,
));
+ $advanced = ((feature_enabled(local_user(),'advanced_profiles')) ? true : false);
+ if($advanced)
+ $fields = $profile_fields_advanced;
+ else
+ $fields = $profile_fields_basic;
- $opt_tpl = get_markup_template("profile-hide_friends.tpl");
- $hide_friends = replace_macros($opt_tpl,array(
- '$desc' => t('Hide your contact/friend list from viewers of this profile?'),
- '$yes_str' => t('Yes'),
- '$no_str' => t('No'),
- '$yes_selected' => (($r[0]['hide_friends']) ? " checked=\"checked\" " : ""),
- '$no_selected' => (($r[0]['hide_friends'] == 0) ? " checked=\"checked\" " : "")
- ));
+ $opt_tpl = get_markup_template("profile_hide_friends.tpl");
+ $hide_friends = replace_macros($opt_tpl,array('$field' => array(
+ 'hide-friends',
+ t('Hide your contact/friend list from viewers of this profile?'),
+ $r[0]['hide_friends'],
+ '',
+ )));
+
+ $q = q("select * from profdef where true");
+ if($q) {
+ $extra_fields = array();
+
+ foreach($q as $qq) {
+ $mine = q("select v from profext where k = '%s' and hash = '%s' and channel_id = %d limit 1",
+ dbesc($qq['field_name']),
+ dbesc($r[0]['profile_guid']),
+ intval(local_user())
+ );
+
+ if(array_key_exists($qq['field_name'],$fields)) {
+ $extra_fields[] = array($qq['field_name'],$qq['field_desc'],(($mine) ? $mine[0]['v'] : ''), $qq['field_help']);
+ }
+ }
+ }
+
+//logger('extra_fields: ' . print_r($extra_fields,true));
$f = get_config('system','birthday_input_format');
if(! $f)
@@ -505,24 +639,29 @@ function profiles_content(&$a) {
$o .= replace_macros($tpl,array(
'$form_security_token' => get_form_security_token("profile_edit"),
- '$profile_clone_link' => 'profiles/clone/' . $r[0]['id'] . '?t='
- . get_form_security_token("profile_clone"),
+ '$profile_clone_link' => ((feature_enabled(local_user(),'multi_profiles')) ? 'profiles/clone/' . $r[0]['id'] . '?t='
+ . get_form_security_token("profile_clone") : ''),
'$profile_drop_link' => 'profiles/drop/' . $r[0]['id'] . '?t='
. get_form_security_token("profile_drop"),
+ '$fields' => $fields,
'$guid' => $r[0]['profile_guid'],
'$banner' => t('Edit Profile Details'),
'$submit' => t('Submit'),
'$viewprof' => t('View this profile'),
+ '$editvis' => t('Edit visibility'),
'$profpic' => t('Change Profile Photo'),
'$cr_prof' => t('Create a new profile using these settings'),
'$cl_prof' => t('Clone this profile'),
'$del_prof' => t('Delete this profile'),
+ '$exportable' => feature_enabled(local_user(),'profile_export'),
+ '$lbl_import' => t('Import profile from file'),
+ '$lbl_export' => t('Export profile to file'),
'$lbl_profname' => t('Profile Name:'),
'$lbl_fullname' => t('Your Full Name:'),
'$lbl_title' => t('Title/Description:'),
'$lbl_gender' => t('Your Gender:'),
- '$lbl_bd' => sprintf( t("Birthday \x28%s\x29:"),datesel_format($f)),
+ '$lbl_bd' => t("Birthday :"),
'$lbl_address' => t('Street Address:'),
'$lbl_city' => t('Locality/City:'),
'$lbl_zip' => t('Postal/Zip Code:'),
@@ -557,7 +696,9 @@ function profiles_content(&$a) {
'$baseurl' => $a->get_baseurl(true),
'$profile_id' => $r[0]['id'],
'$profile_name' => $r[0]['profile_name'],
- '$default' => (($is_default) ? '<p id="profile-edit-default-desc">' . t('This is your <strong>public</strong> profile.<br />It <strong>may</strong> be visible to anybody using the internet.') . '</p>' : ""),
+ '$is_default' => $is_default,
+ '$default' => t('This is your default profile.') . EOL . translate_scope(map_scope($channel['channel_r_profile'])),
+ '$advanced' => $advanced,
'$name' => $r[0]['name'],
'$pdesc' => $r[0]['pdesc'],
'$dob' => dob($r[0]['dob']),
@@ -569,10 +710,13 @@ function profiles_content(&$a) {
'$country_name' => $r[0]['country_name'],
'$age' => ((intval($r[0]['dob'])) ? '(' . t('Age: ') . age($r[0]['dob'],$a->user['timezone'],$a->user['timezone']) . ')' : ''),
'$gender' => gender_selector($r[0]['gender']),
+ '$gender_min' => gender_selector_min($r[0]['gender']),
'$marital' => marital_selector($r[0]['marital']),
+ '$marital_min' => marital_selector_min($r[0]['marital']),
'$with' => $r[0]['with'],
- '$howlong' => ($r[0]['howlong'] === '0000-00-00 00:00:00' ? '' : datetime_convert('UTC',date_default_timezone_get(),$r[0]['howlong'])),
+ '$howlong' => ($r[0]['howlong'] === NULL_DATE ? '' : datetime_convert('UTC',date_default_timezone_get(),$r[0]['howlong'])),
'$sexual' => sexpref_selector($r[0]['sexual']),
+ '$sexual_min' => sexpref_selector_min($r[0]['sexual']),
'$about' => $r[0]['about'],
'$homepage' => $r[0]['homepage'],
'$hometown' => $r[0]['hometown'],
@@ -591,6 +735,7 @@ function profiles_content(&$a) {
'$education' => $r[0]['education'],
'$contact' => $r[0]['contact'],
'$channels' => $r[0]['channels'],
+ '$extra_fields' => $extra_fields,
));
$arr = array('profile' => $r[0], 'entry' => $o);
@@ -624,10 +769,11 @@ function profiles_content(&$a) {
'$alt' => t('Profile Image'),
'$profile_name' => $rr['profile_name'],
'$visible' => (($rr['is_default'])
- ? '<strong>' . t('visible to everybody') . '</strong>'
+ ? '<strong>' . translate_scope(map_scope($channel['channel_r_profile'])) . '</strong>'
: '<a href="' . $a->get_baseurl(true) . '/profperm/' . $rr['id'] . '" />' . t('Edit visibility') . '</a>')
));
}
+
}
return $o;
}
diff --git a/mod/profperm.php b/mod/profperm.php
index 197062936..55dc8cc77 100644
--- a/mod/profperm.php
+++ b/mod/profperm.php
@@ -75,13 +75,13 @@ function profperm_content(&$a) {
if($change) {
if(in_array($change,$ingroup)) {
- q("UPDATE abook SET abook_profile = '' WHERE abook_id = %d AND abook_channel = %d LIMIT 1",
+ q("UPDATE abook SET abook_profile = '' WHERE abook_id = %d AND abook_channel = %d",
intval($change),
intval(local_user())
);
}
else {
- q("UPDATE abook SET abook_profile = '%s' WHERE abook_id = %d AND abook_channel = %d LIMIT 1",
+ q("UPDATE abook SET abook_profile = '%s' WHERE abook_id = %d AND abook_channel = %d",
dbesc($profile['profile_guid']),
intval($change),
intval(local_user())
diff --git a/mod/receive.php b/mod/receive.php
new file mode 100644
index 000000000..b7d27d40f
--- /dev/null
+++ b/mod/receive.php
@@ -0,0 +1,77 @@
+<?php
+
+/**
+ * Diaspora endpoint
+ */
+
+require_once('include/crypto.php');
+require_once('include/diaspora.php');
+
+
+function receive_post(&$a) {
+
+
+ $enabled = intval(get_config('system','diaspora_enabled'));
+ if(! $enabled) {
+ logger('mod-diaspora: disabled');
+ http_status_exit(500);
+ }
+
+ $public = false;
+
+ if((argc() == 2) && (argv(1) === 'public')) {
+ $public = true;
+ }
+ else {
+
+ if(argc() != 3 || argv(1) !== 'users')
+ http_status_exit(500);
+
+ $guid = argv(2);
+
+ // Diaspora sites *may* provide a truncated guid.
+
+ $r = q("SELECT * FROM channel left join xchan on channel_hash = xchan_hash WHERE channel_guid like '%s' AND NOT (channel_pageflags & %d )>0 LIMIT 1",
+ dbesc($guid . '%'),
+ intval(PAGE_REMOVED)
+ );
+ if(! $r)
+ http_status_exit(500);
+
+ $importer = $r[0];
+ }
+
+ // It is an application/x-www-form-urlencoded that has been urlencoded twice.
+
+ logger('mod-diaspora: receiving post', LOGGER_DEBUG);
+
+ $xml = urldecode($_POST['xml']);
+
+ logger('mod-diaspora: new salmon ' . $xml, LOGGER_DATA);
+
+ if(! $xml)
+ http_status_exit(500);
+
+ logger('mod-diaspora: message is okay', LOGGER_DEBUG);
+
+ $msg = diaspora_decode($importer,$xml);
+
+ logger('mod-diaspora: decoded', LOGGER_DEBUG);
+
+ logger('mod-diaspora: decoded msg: ' . print_r($msg,true), LOGGER_DATA);
+
+ if(! is_array($msg))
+ http_status_exit(500);
+
+ logger('mod-diaspora: dispatching', LOGGER_DEBUG);
+
+ $ret = 0;
+ if($public)
+ diaspora_dispatch_public($msg);
+ else
+ $ret = diaspora_dispatch($importer,$msg);
+
+ http_status_exit(($ret) ? $ret : 200);
+ // NOTREACHED
+}
+
diff --git a/mod/register.php b/mod/register.php
index 954a32fbf..70bdcf350 100644
--- a/mod/register.php
+++ b/mod/register.php
@@ -1,6 +1,5 @@
<?php
-require_once('include/account.php');
function register_init(&$a) {
@@ -38,7 +37,9 @@ function register_post(&$a) {
$max_dailies = intval(get_config('system','max_daily_registrations'));
if($max_dailies) {
- $r = q("select count(account_id) as total from account where account_created > UTC_TIMESTAMP() - INTERVAL 1 day");
+ $r = q("select count(account_id) as total from account where account_created > %s - INTERVAL %s",
+ db_utcnow(), db_quoteinterval('1 day')
+ );
if($r && $r[0]['total'] >= $max_dailies) {
notice( t('Maximum daily site registrations exceeded. Please try again tomorrow.') . EOL);
return;
@@ -101,7 +102,7 @@ function register_post(&$a) {
$invite_code = ((x($_POST,'invite_code')) ? notags(trim($_POST['invite_code'])) : '');
if($using_invites && $invite_code) {
- q("delete * from register where hash = '%s' limit 1", dbesc($invite_code));
+ q("delete * from register where hash = '%s'", dbesc($invite_code));
set_pconfig($result['account']['account_id'],'system','invites_remaining',$num_invites);
}
@@ -165,7 +166,9 @@ function register_content(&$a) {
$max_dailies = intval(get_config('system','max_daily_registrations'));
if($max_dailies) {
- $r = q("select count(account_id) as total from account where account_created > UTC_TIMESTAMP() - INTERVAL 1 day");
+ $r = q("select count(account_id) as total from account where account_created > %s - INTERVAL %s",
+ db_utcnow(), db_quoteinterval('1 day')
+ );
if($r && $r[0]['total'] >= $max_dailies) {
logger('max daily registrations exceeded.');
notice( t('This site has exceeded the number of allowed daily account registrations. Please try again tomorrow.') . EOL);
@@ -197,13 +200,13 @@ function register_content(&$a) {
$invite_code = ((x($_REQUEST,'invite_code')) ? strip_tags(trim($_REQUEST['invite_code'])) : "" );
-
+ require_once('include/bbcode.php');
$o = replace_macros(get_markup_template('register.tpl'), array(
'$title' => t('Registration'),
'$reg_is' => $registration_is,
- '$registertext' => get_config('system','register_text'),
+ '$registertext' => bbcode(get_config('system','register_text')),
'$other_sites' => $other_sites,
'$invitations' => get_config('system','invitation_only'),
'$invite_desc' => t('Membership on this site is by invitation only.'),
diff --git a/mod/regmod.php b/mod/regmod.php
index c54c0d88e..d75355d5f 100644
--- a/mod/regmod.php
+++ b/mod/regmod.php
@@ -1,6 +1,5 @@
<?php
-require_once('include/account.php');
function regmod_content(&$a) {
diff --git a/mod/regver.php b/mod/regver.php
index 988fa8c0d..c3ade2ee1 100644
--- a/mod/regver.php
+++ b/mod/regver.php
@@ -1,7 +1,5 @@
<?php
-require_once('include/account.php');
-
function regver_content(&$a) {
global $lang;
diff --git a/mod/removeaccount.php b/mod/removeaccount.php
new file mode 100644
index 000000000..70979c07d
--- /dev/null
+++ b/mod/removeaccount.php
@@ -0,0 +1,66 @@
+<?php
+
+function removeaccount_post(&$a) {
+
+ if(! local_user())
+ return;
+
+ if(x($_SESSION,'submanage') && intval($_SESSION['submanage']))
+ return;
+
+ if((! x($_POST,'qxz_password')) || (! strlen(trim($_POST['qxz_password']))))
+ return;
+
+ if((! x($_POST,'verify')) || (! strlen(trim($_POST['verify']))))
+ return;
+
+ if($_POST['verify'] !== $_SESSION['remove_account_verify'])
+ return;
+
+
+ $account = $a->get_account();
+ $account_id = get_account_id();
+
+ if(! account_verify_password($account['account_email'],$_POST['qxz_password']))
+ return;
+
+ if($account['account_password_changed'] != NULL_DATE) {
+ $d1 = datetime_convert('UTC','UTC','now - 48 hours');
+ if($account['account_password_changed'] > d1) {
+ notice( t('Account removals are not allowed within 48 hours of changing the account password.') . EOL);
+ return;
+ }
+ }
+
+ require_once('include/Contact.php');
+
+ $global_remove = intval($_POST['global']);
+
+ account_remove($account_id,true);
+
+}
+
+
+
+function removeaccount_content(&$a) {
+
+ if(! local_user())
+ goaway(z_root());
+
+ $hash = random_string();
+
+ $_SESSION['remove_account_verify'] = $hash;
+ $tpl = get_markup_template('removeaccount.tpl');
+ $o .= replace_macros($tpl, array(
+ '$basedir' => $a->get_baseurl(),
+ '$hash' => $hash,
+ '$title' => t('Remove This Account'),
+ '$desc' => t('This will completely remove this account including all its channels from the network. Once this has been done it is not recoverable.'),
+ '$passwd' => t('Please enter your password for verification:'),
+ '$global' => array('global', t('Remove this account, all its channels and all its channel clones from the network'), false, t('By default only the instances of the channels located on this hub will be removed from the network')),
+ '$submit' => t('Remove Account')
+ ));
+
+ return $o;
+
+} \ No newline at end of file
diff --git a/mod/removeme.php b/mod/removeme.php
index f0b4ae3c0..d2ff013b8 100644
--- a/mod/removeme.php
+++ b/mod/removeme.php
@@ -23,11 +23,19 @@ function removeme_post(&$a) {
if(! account_verify_password($account['account_email'],$_POST['qxz_password']))
return;
+ if($account['account_password_changed'] != NULL_DATE) {
+ $d1 = datetime_convert('UTC','UTC','now - 48 hours');
+ if($account['account_password_changed'] > d1) {
+ notice( t('Channel removals are not allowed within 48 hours of changing the account password.') . EOL);
+ return;
+ }
+ }
+
require_once('include/Contact.php');
$global_remove = intval($_POST['global']);
- channel_remove(local_user(),1 - $global_remove);
+ channel_remove(local_user(),1 - $global_remove,true);
}
diff --git a/mod/rpost.php b/mod/rpost.php
index 80406ebef..933db24e3 100644
--- a/mod/rpost.php
+++ b/mod/rpost.php
@@ -115,7 +115,7 @@ function rpost_content(&$a) {
'nickname' => $channel['channel_address'],
'lockstate' => (($channel['channel_allow_cid'] || $channel['channel_allow_gid']
|| $channel['channel_deny_cid'] || $channel['channel_deny_gid']) ? 'lock' : 'unlock'),
- 'acl' => populate_acl($channel, $false),
+ 'acl' => populate_acl($channel),
'bang' => '',
// 'channel_select' => true,
'visitor' => true,
diff --git a/mod/search.php b/mod/search.php
index 663d355e2..6df9d631a 100644
--- a/mod/search.php
+++ b/mod/search.php
@@ -23,6 +23,7 @@ function search_content(&$a,$update = 0, $load = false) {
$observer = $a->get_observer();
+ $observer_hash = (($observer) ? $observer['xchan_hash'] : '');
$o = '<div id="live-search"></div>' . "\r\n";
@@ -67,7 +68,8 @@ function search_content(&$a,$update = 0, $load = false) {
);
}
else {
- $sql_extra = sprintf(" AND `item`.`body` REGEXP '%s' ", dbesc(protect_sprintf(preg_quote($search))));
+ $regstr = db_getfunc('REGEXP');
+ $sql_extra = sprintf(" AND `item`.`body` $regstr '%s' ", dbesc(protect_sprintf(preg_quote($search))));
}
// Here is the way permissions work in the search module...
@@ -105,6 +107,7 @@ function search_content(&$a,$update = 0, $load = false) {
'$order' => '',
'$file' => '',
'$cats' => '',
+ '$tags' => '',
'$mid' => '',
'$dend' => '',
'$dbegin' => ''
@@ -113,7 +116,7 @@ function search_content(&$a,$update = 0, $load = false) {
}
- $pub_sql = public_permissions_sql(get_observer_hash());
+ $pub_sql = public_permissions_sql($observer_hash);
require_once('include/identity.php');
@@ -122,33 +125,45 @@ function search_content(&$a,$update = 0, $load = false) {
if(($update) && ($load)) {
$itemspage = get_pconfig(local_user(),'system','itemspage');
$a->set_pager_itemspage(((intval($itemspage)) ? $itemspage : 20));
- $pager_sql = sprintf(" LIMIT %d, %d ",intval($a->pager['start']), intval($a->pager['itemspage']));
+ $pager_sql = sprintf(" LIMIT %d OFFSET %d ", intval($a->pager['itemspage']), intval($a->pager['start']));
+
+ // in case somebody turned off public access to sys channel content with permissions
+
+ if(! perm_is_allowed($sys['channel_id'],$observer_hash,'view_stream'))
+ $sys['xchan_hash'] .= 'disabled';
if($load) {
$r = null;
-
+
+ if(ACTIVE_DBTYPE == DBTYPE_POSTGRES) {
+ $prefix = 'distinct on (created, mid)';
+ $suffix = 'ORDER BY created DESC, mid';
+ } else {
+ $prefix = 'distinct';
+ $suffix = 'group by mid ORDER BY created DESC';
+ }
if(local_user()) {
- $r = q("SELECT distinct mid, item.id as item_id, item.* from item
+ $r = q("SELECT $prefix mid, item.id as item_id, item.* from item
WHERE item_restrict = 0
AND ((( `item`.`allow_cid` = '' AND `item`.`allow_gid` = '' AND `item`.`deny_cid` = '' AND `item`.`deny_gid` = '' AND item_private = 0 )
OR ( `item`.`uid` = %d )) OR item.owner_xchan = '%s' )
$sql_extra
- group by mid ORDER BY created DESC $pager_sql ",
+ $suffix $pager_sql ",
intval(local_user()),
dbesc($sys['xchan_hash'])
);
}
if($r === null) {
- $r = q("SELECT distinct mid, item.id as item_id, item.* from item
- WHERE item_restrict = 0
- AND (((( `item`.`allow_cid` = '' AND `item`.`allow_gid` = '' AND `item`.`deny_cid` = ''
- AND `item`.`deny_gid` = '' AND item_private = 0 )
- and owner_xchan in ( " . stream_perms_xchans(($observer) ? (PERMS_NETWORK|PERMS_PUBLIC) : PERMS_PUBLIC) . " ))
- $pub_sql ) OR owner_xchan = '%s')
- $sql_extra
- group by mid ORDER BY created DESC $pager_sql",
+ $r = q("SELECT $prefix mid, item.id as item_id, item.* from item
+ WHERE item_restrict = 0
+ AND (((( `item`.`allow_cid` = '' AND `item`.`allow_gid` = '' AND `item`.`deny_cid` = ''
+ AND `item`.`deny_gid` = '' AND item_private = 0 )
+ and owner_xchan in ( " . stream_perms_xchans(($observer) ? (PERMS_NETWORK|PERMS_PUBLIC) : PERMS_PUBLIC) . " ))
+ $pub_sql ) OR owner_xchan = '%s')
+ $sql_extra
+ $suffix $pager_sql",
dbesc($sys['xchan_hash'])
- );
+ );
}
}
else {
diff --git a/mod/service_limits.php b/mod/service_limits.php
new file mode 100644
index 000000000..83ae2e06c
--- /dev/null
+++ b/mod/service_limits.php
@@ -0,0 +1,23 @@
+<?php /** @file */
+
+
+function service_limits_content(&$a) {
+
+ if(! local_user()) {
+ notice( t('Permission denied.') . EOL);
+ return;
+ }
+
+ $account = $a->get_account();
+ if($account['account_service_class']) {
+ $x = get_config('service_class',$account['account_service_class']);
+ if($x) {
+ $o = print_r($x,true);
+ return $o;
+ }
+ }
+ return t('No service class restrictions found.');
+}
+
+
+ \ No newline at end of file
diff --git a/mod/settings.php b/mod/settings.php
index e036755fc..59ce98a2a 100644
--- a/mod/settings.php
+++ b/mod/settings.php
@@ -39,7 +39,9 @@ function settings_post(&$a) {
if(! local_user())
return;
- // logger('mod_settings: ' . print_r($_REQUEST,true));
+ $channel = $a->get_channel();
+
+ logger('mod_settings: ' . print_r($_REQUEST,true));
if(x($_SESSION,'submanage') && intval($_SESSION['submanage']))
return;
@@ -120,10 +122,19 @@ function settings_post(&$a) {
if((argc() > 1) && (argv(1) === 'features')) {
check_form_security_token_redirectOnErr('/settings/features', 'settings_features');
- foreach($_POST as $k => $v) {
- if(strpos($k,'feature_') === 0) {
- set_pconfig(local_user(),'feature',substr($k,8),((intval($v)) ? 1 : 0));
- }
+
+ // Build list of features and check which are set
+ $features = get_features();
+ $all_features = array();
+ foreach($features as $k => $v) {
+ foreach($v as $f)
+ $all_features[] = $f[0];
+ }
+ foreach($all_features as $k) {
+ if(x($_POST,"feature_$k"))
+ set_pconfig(local_user(),'feature',$k, 1);
+ else
+ set_pconfig(local_user(),'feature',$k, 0);
}
build_sync_packet();
return;
@@ -135,7 +146,19 @@ function settings_post(&$a) {
$theme = ((x($_POST,'theme')) ? notags(trim($_POST['theme'])) : $a->channel['channel_theme']);
$mobile_theme = ((x($_POST,'mobile_theme')) ? notags(trim($_POST['mobile_theme'])) : '');
- $nosmile = ((x($_POST,'nosmile')) ? intval($_POST['nosmile']) : 0);
+ $user_scalable = ((x($_POST,'user_scalable')) ? intval($_POST['user_scalable']) : 0);
+ $nosmile = ((x($_POST,'nosmile')) ? intval($_POST['nosmile']) : 0);
+ $title_tosource = ((x($_POST,'title_tosource')) ? intval($_POST['title_tosource']) : 0);
+ $channel_list_mode = ((x($_POST,'channel_list_mode')) ? intval($_POST['channel_list_mode']) : 0);
+ $network_list_mode = ((x($_POST,'network_list_mode')) ? intval($_POST['network_list_mode']) : 0);
+
+ $channel_divmore_height = ((x($_POST,'channel_divmore_height')) ? intval($_POST['channel_divmore_height']) : 400);
+ if($channel_divmore_height < 50)
+ $channel_divmore_height = 50;
+ $network_divmore_height = ((x($_POST,'network_divmore_height')) ? intval($_POST['network_divmore_height']) : 400);
+ if($network_divmore_height < 50)
+ $network_divmore_height = 50;
+
$browser_update = ((x($_POST,'browser_update')) ? intval($_POST['browser_update']) : 0);
$browser_update = $browser_update * 1000;
if($browser_update < 10000)
@@ -146,17 +169,21 @@ function settings_post(&$a) {
$itemspage = 100;
- if($mobile_theme !== '') {
+ if ($mobile_theme == "---")
+ del_pconfig(local_user(),'system','mobile_theme');
+ else {
set_pconfig(local_user(),'system','mobile_theme',$mobile_theme);
}
-// $chanview_full = ((x($_POST,'chanview_full')) ? intval($_POST['chanview_full']) : 0);
-
+ set_pconfig(local_user(),'system','user_scalable',$user_scalable);
set_pconfig(local_user(),'system','update_interval', $browser_update);
set_pconfig(local_user(),'system','itemspage', $itemspage);
set_pconfig(local_user(),'system','no_smilies',$nosmile);
-// set_pconfig(local_user(),'system','chanview_full',$chanview_full);
-
+ set_pconfig(local_user(),'system','title_tosource',$title_tosource);
+ set_pconfig(local_user(),'system','channel_list_mode', $channel_list_mode);
+ set_pconfig(local_user(),'system','network_list_mode', $network_list_mode);
+ set_pconfig(local_user(),'system','channel_divmore_height', $channel_divmore_height);
+ set_pconfig(local_user(),'system','network_divmore_height', $network_divmore_height);
if ($theme == $a->channel['channel_theme']){
// call theme_post only if theme has not been changed
@@ -166,7 +193,7 @@ function settings_post(&$a) {
}
}
- $r = q("UPDATE channel SET channel_theme = '%s' WHERE channel_id = %d LIMIT 1",
+ $r = q("UPDATE channel SET channel_theme = '%s' WHERE channel_id = %d",
dbesc($theme),
intval(local_user())
);
@@ -202,10 +229,11 @@ function settings_post(&$a) {
if(! $errs) {
$salt = random_string(32);
$password_encoded = hash('whirlpool', $salt . $newpass);
- $r = q("update account set account_salt = '%s', account_password = '%s'
- where account_id = %d limit 1",
+ $r = q("update account set account_salt = '%s', account_password = '%s', account_password_changed = '%s'
+ where account_id = %d",
dbesc($salt),
dbesc($password_encoded),
+ dbesc(datetime_convert()),
intval(get_account_id())
);
if($r)
@@ -232,7 +260,7 @@ function settings_post(&$a) {
$email = $a->user['email'];
}
if(! $errs) {
- $r = q("update account set account_email = '%s' where account_id = %d limit 1",
+ $r = q("update account set account_email = '%s' where account_id = %d",
dbesc($email),
intval($account['account_id'])
);
@@ -253,14 +281,111 @@ function settings_post(&$a) {
call_hooks('settings_post', $_POST);
-
+ $set_perms = '';
+
+ $role = ((x($_POST,'permissions_role')) ? notags(trim($_POST['permissions_role'])) : '');
+ $oldrole = get_pconfig(local_user(),'system','permissions_role');
+
+ if(($role != $oldrole) || ($role === 'custom')) {
+
+ if($role === 'custom') {
+ $hide_presence = (((x($_POST,'hide_presence')) && (intval($_POST['hide_presence']) == 1)) ? 1: 0);
+ $publish = (((x($_POST,'profile_in_directory')) && (intval($_POST['profile_in_directory']) == 1)) ? 1: 0);
+ $def_group = ((x($_POST,'group-selection')) ? notags(trim($_POST['group-selection'])) : '');
+ $r = q("update channel set channel_default_group = '%s' where channel_id = %d",
+ dbesc($def_group),
+ intval(local_user())
+ );
+
+ $global_perms = get_perms();
+
+ foreach($global_perms as $k => $v) {
+ $set_perms .= ', ' . $v[0] . ' = ' . intval($_POST[$k]) . ' ';
+ }
+
+ $str_group_allow = perms2str($_POST['group_allow']);
+ $str_contact_allow = perms2str($_POST['contact_allow']);
+ $str_group_deny = perms2str($_POST['group_deny']);
+ $str_contact_deny = perms2str($_POST['contact_deny']);
+ $r = q("update channel set channel_allow_cid = '%s', channel_allow_gid = '%s', channel_deny_cid = '%s', channel_deny_gid = '%s'
+ where channel_id = %d",
+ dbesc($str_contact_allow),
+ dbesc($str_group_allow),
+ dbesc($str_contact_deny),
+ dbesc($str_group_deny),
+ intval(local_user())
+ );
+ }
+ else {
+ $role_permissions = get_role_perms($_POST['permissions_role']);
+ if(! $role_permissions) {
+ notice('Permissions category could not be found.');
+ return;
+ }
+ $hide_presence = 1 - (intval($role_permissions['online']));
+ if($role_permissions['default_collection']) {
+ $r = q("select hash from groups where uid = %d and name = '%s' limit 1",
+ intval(local_user()),
+ dbesc( t('Friends') )
+ );
+ if(! $r) {
+ require_once('include/group.php');
+ group_add(local_user(), t('Friends'));
+ group_add_member(local_user(),t('Friends'),$channel['channel_hash']);
+ $r = q("select hash from groups where uid = %d and name = '%s' limit 1",
+ intval(local_user()),
+ dbesc( t('Friends') )
+ );
+ }
+ if($r) {
+ q("update channel set channel_default_group = '%s', channel_allow_gid = '%s', channel_allow_cid = '', channel_deny_gid = '', channel_deny_cid = '' where channel_id = %d",
+ dbesc($r[0]['hash']),
+ dbesc('<' . $r[0]['hash'] . '>'),
+ intval(local_user())
+ );
+ }
+ else {
+ notice( sprintf('Default privacy collection \'%s\' not found. Please create and re-submit permission change.', t('Friends')) . EOL);
+ return;
+ }
+ }
+ // no default collection
+ else {
+ q("update channel set channel_default_group = '', channel_allow_gid = '', channel_allow_cid = '', channel_deny_gid = '',
+ channel_deny_cid = '' where channel_id = %d",
+ intval(local_user())
+ );
+ }
+
+ $r = q("update abook set abook_my_perms = %d where abook_channel = %d and (abook_flags & %d)>0",
+ intval(($role_permissions['perms_auto']) ? intval($role_permissions['perms_accept']) : 0),
+ intval(local_user()),
+ intval(ABOOK_FLAG_SELF)
+ );
+ set_pconfig(local_user(),'system','autoperms',(($role_permissions['perms_auto']) ? intval($role_permissions['perms_accept']) : 0));
+
+ foreach($role_permissions as $p => $v) {
+ if(strpos($p,'channel_') !== false) {
+ $set_perms .= ', ' . $p . ' = ' . intval($v) . ' ';
+ }
+ if($p === 'directory_publish') {
+ $publish = intval($v);
+ }
+ }
+ }
+
+ set_pconfig(local_user(),'system','hide_online_status',$hide_presence);
+ set_pconfig(local_user(),'system','permissions_role',$role);
+ }
+
$username = ((x($_POST,'username')) ? notags(trim($_POST['username'])) : '');
$timezone = ((x($_POST,'timezone')) ? notags(trim($_POST['timezone'])) : '');
$defloc = ((x($_POST,'defloc')) ? notags(trim($_POST['defloc'])) : '');
$openid = ((x($_POST,'openid_url')) ? notags(trim($_POST['openid_url'])) : '');
$maxreq = ((x($_POST,'maxreq')) ? intval($_POST['maxreq']) : 0);
$expire = ((x($_POST,'expire')) ? intval($_POST['expire']) : 0);
- $def_group = ((x($_POST,'group-selection')) ? notags(trim($_POST['group-selection'])) : '');
+ $evdays = ((x($_POST,'evdays')) ? intval($_POST['evdays']) : 3);
+
$channel_menu = ((x($_POST['channel_menu'])) ? htmlspecialchars_decode(trim($_POST['channel_menu']),ENT_QUOTES) : '');
$expire_items = ((x($_POST,'expire_items')) ? intval($_POST['expire_items']) : 0);
@@ -269,17 +394,13 @@ function settings_post(&$a) {
$expire_network_only = ((x($_POST,'expire_network_only'))? intval($_POST['expire_network_only']) : 0);
$allow_location = (((x($_POST,'allow_location')) && (intval($_POST['allow_location']) == 1)) ? 1: 0);
- $hide_presence = (((x($_POST,'hide_presence')) && (intval($_POST['hide_presence']) == 1)) ? 1: 0);
- $publish = (((x($_POST,'profile_in_directory')) && (intval($_POST['profile_in_directory']) == 1)) ? 1: 0);
- $page_flags = (((x($_POST,'page-flags')) && (intval($_POST['page-flags']))) ? intval($_POST['page-flags']) : 0);
- $blockwall = (((x($_POST,'blockwall')) && (intval($_POST['blockwall']) == 1)) ? 0: 1); // this setting is inverted!
+
$blocktags = (((x($_POST,'blocktags')) && (intval($_POST['blocktags']) == 1)) ? 0: 1); // this setting is inverted!
$unkmail = (((x($_POST,'unkmail')) && (intval($_POST['unkmail']) == 1)) ? 1: 0);
$cntunkmail = ((x($_POST,'cntunkmail')) ? intval($_POST['cntunkmail']) : 0);
$suggestme = ((x($_POST,'suggestme')) ? intval($_POST['suggestme']) : 0);
- $hide_friends = (($_POST['hide_friends'] == 1) ? 1: 0);
- $hidewall = (($_POST['hidewall'] == 1) ? 1: 0);
+
$post_newfriend = (($_POST['post_newfriend'] == 1) ? 1: 0);
$post_joingroup = (($_POST['post_joingroup'] == 1) ? 1: 0);
$post_profilechange = (($_POST['post_profilechange'] == 1) ? 1: 0);
@@ -291,63 +412,6 @@ function settings_post(&$a) {
if($adult != $existing_adult)
$pageflags = ($pageflags ^ PAGE_ADULT);
- $arr = array();
- $arr['channel_r_stream'] = (($_POST['view_stream']) ? $_POST['view_stream'] : 0);
- $arr['channel_r_profile'] = (($_POST['view_profile']) ? $_POST['view_profile'] : 0);
- $arr['channel_r_photos'] = (($_POST['view_photos']) ? $_POST['view_photos'] : 0);
- $arr['channel_r_abook'] = (($_POST['view_contacts']) ? $_POST['view_contacts'] : 0);
- $arr['channel_w_stream'] = (($_POST['send_stream']) ? $_POST['send_stream'] : 0);
- $arr['channel_w_wall'] = (($_POST['post_wall']) ? $_POST['post_wall'] : 0);
- $arr['channel_w_tagwall'] = (($_POST['tag_deliver']) ? $_POST['tag_deliver'] : 0);
- $arr['channel_w_comment'] = (($_POST['post_comments']) ? $_POST['post_comments'] : 0);
- $arr['channel_w_mail'] = (($_POST['post_mail']) ? $_POST['post_mail'] : 0);
- $arr['channel_w_photos'] = (($_POST['post_photos']) ? $_POST['post_photos'] : 0);
- $arr['channel_w_chat'] = (($_POST['chat']) ? $_POST['chat'] : 0);
- $arr['channel_a_delegate'] = (($_POST['delegate']) ? $_POST['delegate'] : 0);
- $arr['channel_r_storage'] = (($_POST['view_storage']) ? $_POST['view_storage'] : 0);
- $arr['channel_w_storage'] = (($_POST['write_storage']) ? $_POST['write_storage'] : 0);
- $arr['channel_r_pages'] = (($_POST['view_pages']) ? $_POST['view_pages'] : 0);
- $arr['channel_w_pages'] = (($_POST['write_pages']) ? $_POST['write_pages'] : 0);
- $arr['channel_a_republish'] = (($_POST['republish']) ? $_POST['republish'] : 0);
- $arr['channel_w_like'] = (($_POST['post_like']) ? $_POST['post_like'] : 0);
-
- $defperms = 0;
- if(x($_POST['def_view_stream']))
- $defperms += $_POST['def_view_stream'];
- if(x($_POST['def_view_profile']))
- $defperms += $_POST['def_view_profile'];
- if(x($_POST['def_view_photos']))
- $defperms += $_POST['def_view_photos'];
- if(x($_POST['def_view_contacts']))
- $defperms += $_POST['def_view_contacts'];
- if(x($_POST['def_send_stream']))
- $defperms += $_POST['def_send_stream'];
- if(x($_POST['def_post_wall']))
- $defperms += $_POST['def_post_wall'];
- if(x($_POST['def_tag_deliver']))
- $defperms += $_POST['def_tag_deliver'];
- if(x($_POST['def_post_comments']))
- $defperms += $_POST['def_post_comments'];
- if(x($_POST['def_post_mail']))
- $defperms += $_POST['def_post_mail'];
- if(x($_POST['def_post_photos']))
- $defperms += $_POST['def_post_photos'];
- if(x($_POST['def_chat']))
- $defperms += $_POST['def_chat'];
- if(x($_POST['def_delegate']))
- $defperms += $_POST['def_delegate'];
- if(x($_POST['def_view_storage']))
- $defperms += $_POST['def_view_storage'];
- if(x($_POST['def_write_storage']))
- $defperms += $_POST['def_write_storage'];
- if(x($_POST['def_view_pages']))
- $defperms += $_POST['def_view_pages'];
- if(x($_POST['def_write_pages']))
- $defperms += $_POST['def_write_pages'];
- if(x($_POST['def_republish']))
- $defperms += $_POST['def_republish'];
- if(x($_POST['def_post_like']))
- $defperms += $_POST['def_post_like'];
$notify = 0;
@@ -369,6 +433,33 @@ function settings_post(&$a) {
$notify += intval($_POST['notify8']);
+ $vnotify = 0;
+
+ if(x($_POST,'vnotify1'))
+ $vnotify += intval($_POST['vnotify1']);
+ if(x($_POST,'vnotify2'))
+ $vnotify += intval($_POST['vnotify2']);
+ if(x($_POST,'vnotify3'))
+ $vnotify += intval($_POST['vnotify3']);
+ if(x($_POST,'vnotify4'))
+ $vnotify += intval($_POST['vnotify4']);
+ if(x($_POST,'vnotify5'))
+ $vnotify += intval($_POST['vnotify5']);
+ if(x($_POST,'vnotify6'))
+ $vnotify += intval($_POST['vnotify6']);
+ if(x($_POST,'vnotify7'))
+ $vnotify += intval($_POST['vnotify7']);
+ if(x($_POST,'vnotify8'))
+ $vnotify += intval($_POST['vnotify8']);
+ if(x($_POST,'vnotify9'))
+ $vnotify += intval($_POST['vnotify9']);
+ if(x($_POST,'vnotify10'))
+ $vnotify += intval($_POST['vnotify10']);
+ if(x($_POST,'vnotify11'))
+ $vnotify += intval($_POST['vnotify11']);
+
+ $always_show_in_notices = x($_POST,'always_show_in_notices') ? 1 : 0;
+
$channel = $a->get_channel();
$err = '';
@@ -385,27 +476,23 @@ function settings_post(&$a) {
}
}
-
if($timezone != $channel['channel_timezone']) {
if(strlen($timezone))
date_default_timezone_set($timezone);
}
- $str_group_allow = perms2str($_POST['group_allow']);
- $str_contact_allow = perms2str($_POST['contact_allow']);
- $str_group_deny = perms2str($_POST['group_deny']);
- $str_contact_deny = perms2str($_POST['contact_deny']);
-
set_pconfig(local_user(),'system','use_browser_location',$allow_location);
set_pconfig(local_user(),'system','suggestme', $suggestme);
set_pconfig(local_user(),'system','post_newfriend', $post_newfriend);
set_pconfig(local_user(),'system','post_joingroup', $post_joingroup);
set_pconfig(local_user(),'system','post_profilechange', $post_profilechange);
set_pconfig(local_user(),'system','blocktags',$blocktags);
- set_pconfig(local_user(),'system','hide_online_status',$hide_presence);
set_pconfig(local_user(),'system','channel_menu',$channel_menu);
+ set_pconfig(local_user(),'system','vnotify',$vnotify);
+ set_pconfig(local_user(),'system','always_show_in_notices',$always_show_in_notices);
+ set_pconfig(local_user(),'system','evdays',$evdays);
- $r = q("update channel set channel_name = '%s', channel_pageflags = %d, channel_timezone = '%s', channel_location = '%s', channel_notifyflags = %d, channel_max_anon_mail = %d, channel_max_friend_req = %d, channel_expire_days = %d, channel_default_group = '%s', channel_r_stream = %d, channel_r_profile = %d, channel_r_photos = %d, channel_r_abook = %d, channel_w_stream = %d, channel_w_wall = %d, channel_w_tagwall = %d, channel_w_comment = %d, channel_w_mail = %d, channel_w_photos = %d, channel_w_chat = %d, channel_a_delegate = %d, channel_r_storage = %d, channel_w_storage = %d, channel_r_pages = %d, channel_w_pages = %d, channel_a_republish = %d, channel_w_like = %d, channel_allow_cid = '%s', channel_allow_gid = '%s', channel_deny_cid = '%s', channel_deny_gid = '%s' where channel_id = %d limit 1",
+ $r = q("update channel set channel_name = '%s', channel_pageflags = %d, channel_timezone = '%s', channel_location = '%s', channel_notifyflags = %d, channel_max_anon_mail = %d, channel_max_friend_req = %d, channel_expire_days = %d $set_perms where channel_id = %d",
dbesc($username),
intval($pageflags),
dbesc($timezone),
@@ -414,45 +501,20 @@ function settings_post(&$a) {
intval($unkmail),
intval($maxreq),
intval($expire),
- dbesc($def_group),
- intval($arr['channel_r_stream']),
- intval($arr['channel_r_profile']),
- intval($arr['channel_r_photos']),
- intval($arr['channel_r_abook']),
- intval($arr['channel_w_stream']),
- intval($arr['channel_w_wall']),
- intval($arr['channel_w_tagwall']),
- intval($arr['channel_w_comment']),
- intval($arr['channel_w_mail']),
- intval($arr['channel_w_photos']),
- intval($arr['channel_w_chat']),
- intval($arr['channel_a_delegate']),
- intval($arr['channel_r_storage']),
- intval($arr['channel_w_storage']),
- intval($arr['channel_r_pages']),
- intval($arr['channel_w_pages']),
- intval($arr['channel_a_republish']),
- intval($arr['channel_w_like']),
- dbesc($str_contact_allow),
- dbesc($str_group_allow),
- dbesc($str_contact_deny),
- dbesc($str_group_deny),
intval(local_user())
);
if($r)
info( t('Settings updated.') . EOL);
- $r = q("UPDATE `profile`
- SET `publish` = %d,
- `hide_friends` = %d
- WHERE `is_default` = 1 AND `uid` = %d LIMIT 1",
- intval($publish),
- intval($hide_friends),
- intval(local_user())
- );
+ if(! is_null($publish)) {
+ $r = q("UPDATE profile SET publish = %d WHERE is_default = 1 AND uid = %d",
+ intval($publish),
+ intval(local_user())
+ );
+ }
if($name_change) {
- $r = q("update xchan set xchan_name = '%s', xchan_name_date = '%s' where xchan_hash = '%s' limit 1",
+ $r = q("update xchan set xchan_name = '%s', xchan_name_date = '%s' where xchan_hash = '%s'",
dbesc($username),
dbesc(datetime_convert()),
dbesc($channel['channel_hash'])
@@ -587,7 +649,7 @@ function settings_content(&$a) {
if((argc() > 1) && (argv(1) === 'featured')) {
$settings_addons = "";
- $r = q("SELECT * FROM `hook` WHERE `hook` = 'plugin_settings' ");
+ $r = q("SELECT * FROM `hook` WHERE `hook` = 'feature_settings' ");
if(! count($r))
$settings_addons = t('No feature settings configured');
@@ -627,6 +689,7 @@ function settings_content(&$a) {
'$submit' => t('Submit'),
'$email' => array('email', t('Email Address:'), $email, ''),
'$removeme' => t('Remove Account'),
+ '$removeaccount' => t('Remove this account from this server including all its channels'),
'$permanent' => t('Warning: This action is permanent and cannot be reversed.'),
'$account_settings' => $account_settings
));
@@ -653,7 +716,6 @@ function settings_content(&$a) {
'$title' => t('Additional Features'),
'$features' => $arr,
'$submit' => t('Submit'),
- '$field_yesno' => 'field_yesno.tpl',
));
return $o;
@@ -687,6 +749,7 @@ function settings_content(&$a) {
/*
* DISPLAY SETTINGS
*/
+
if((argc() > 1) && (argv(1) === 'display')) {
$default_theme = get_config('system','theme');
if(! $default_theme)
@@ -705,7 +768,6 @@ function settings_content(&$a) {
$themes = array();
- $mobile_themes = array("---" => t('No special theme for mobile devices'));
$files = glob('view/theme/*');
if($allowed_themes) {
foreach($allowed_themes as $th) {
@@ -713,22 +775,31 @@ function settings_content(&$a) {
$is_experimental = file_exists('view/theme/' . $th . '/experimental');
$unsupported = file_exists('view/theme/' . $th . '/unsupported');
$is_mobile = file_exists('view/theme/' . $th . '/mobile');
+ $is_library = file_exists('view/theme/'. $th . '/library');
+ $mobile_themes["---"] = t("No special theme for mobile devices");
+
if (!$is_experimental or ($is_experimental && (get_config('experimentals','exp_themes')==1 or get_config('experimentals','exp_themes')===false))){
$theme_name = (($is_experimental) ? sprintf(t('%s - (Experimental)'), $f) : $f);
- if($is_mobile) {
- $mobile_themes[$f]=$theme_name;
- }
- else {
- $themes[$f]=$theme_name;
+ if (! $is_library) {
+ if($is_mobile) {
+ $mobile_themes[$f] = $themes[$f] = $theme_name . ' (' . t('mobile') . ')';
+ }
+ else {
+ $mobile_themes[$f] = $themes[$f] = $theme_name;
+ }
}
}
+
}
}
$theme_selected = (!x($_SESSION,'theme')? $default_theme : $_SESSION['theme']);
$mobile_theme_selected = (!x($_SESSION,'mobile_theme')? $default_mobile_theme : $_SESSION['mobile_theme']);
+
+ $user_scalable = get_pconfig(local_user(),'system','user_scalable');
+ $user_scalable = (($user_scalable===false)? '1': $user_scalable); // default if not set: 1
$browser_update = intval(get_pconfig(local_user(), 'system','update_interval'));
- $browser_update = (($browser_update == 0) ? 40 : $browser_update / 1000); // default if not set: 40 seconds
+ $browser_update = (($browser_update == 0) ? 80 : $browser_update / 1000); // default if not set: 40 seconds
$itemspage = intval(get_pconfig(local_user(), 'system','itemspage'));
$itemspage = (($itemspage > 0 && $itemspage < 101) ? $itemspage : 20); // default if not set: 20 items
@@ -736,6 +807,9 @@ function settings_content(&$a) {
$nosmile = get_pconfig(local_user(),'system','no_smilies');
$nosmile = (($nosmile===false)? '0': $nosmile); // default if not set: 0
+ $title_tosource = get_pconfig(local_user(),'system','title_tosource');
+ $title_tosource = (($title_tosource===false)? '0': $title_tosource); // default if not set: 0
+
$theme_config = "";
if( ($themeconfigfile = get_theme_config_file($theme_selected)) != null){
require_once($themeconfigfile);
@@ -752,11 +826,20 @@ function settings_content(&$a) {
'$theme' => array('theme', t('Display Theme:'), $theme_selected, '', $themes, 'preview'),
'$mobile_theme' => array('mobile_theme', t('Mobile Theme:'), $mobile_theme_selected, '', $mobile_themes, ''),
+ '$user_scalable' => array('user_scalable', t("Enable user zoom on mobile devices"), $user_scalable, ''),
'$ajaxint' => array('browser_update', t("Update browser every xx seconds"), $browser_update, t('Minimum of 10 seconds, no maximum')),
'$itemspage' => array('itemspage', t("Maximum number of conversations to load at any time:"), $itemspage, t('Maximum of 100 items')),
'$nosmile' => array('nosmile', t("Don't show emoticons"), $nosmile, ''),
+ '$title_tosource' => array('title_tosource', t("Link post titles to source"), $title_tosource, ''),
'$layout_editor' => t('System Page Layout Editor - (advanced)'),
'$theme_config' => $theme_config,
+ '$expert' => feature_enabled(local_user(),'expert'),
+ '$channel_list_mode' => array('channel_list_mode', t('Use blog/list mode on channel page'), get_pconfig(local_user(),'system','channel_list_mode'), t('(comments displayed separately)')),
+ '$network_list_mode' => array('network_list_mode', t('Use blog/list mode on matrix page'), get_pconfig(local_user(),'system','network_list_mode'), t('(comments displayed separately)')),
+ '$channel_divmore_height' => array('channel_divmore_height', t('Channel page max height of content (in pixels)'), ((get_pconfig(local_user(),'system','channel_divmore_height')) ? get_pconfig(local_user(),'system','channel_divmore_height') : 400), t('click to expand content exceeding this height')),
+ '$network_divmore_height' => array('network_divmore_height', t('Matrix page max height of content (in pixels)'), ((get_pconfig(local_user(),'system','network_divmore_height')) ? get_pconfig(local_user(),'system','network_divmore_height') : 400) , t('click to expand content exceeding this height')),
+
+
));
return $o;
@@ -772,8 +855,6 @@ function settings_content(&$a) {
require_once('include/permissions.php');
-
-
$p = q("SELECT * FROM `profile` WHERE `is_default` = 1 AND `uid` = %d LIMIT 1",
intval(local_user())
);
@@ -826,9 +907,8 @@ function settings_content(&$a) {
$expire = $channel['channel_expire_days'];
$adult_flag = intval($channel['channel_pageflags'] & PAGE_ADULT);
- $blockwall = $a->user['blockwall'];
- $unkmail = $a->user['unkmail'];
- $cntunkmail = $a->user['cntunkmail'];
+// $unkmail = $a->user['unkmail'];
+// $cntunkmail = $a->user['cntunkmail'];
$hide_presence = intval(get_pconfig(local_user(), 'system','hide_online_status'));
@@ -866,9 +946,7 @@ function settings_content(&$a) {
$timezone = date_default_timezone_get();
-
-
- $opt_tpl = get_markup_template("field_yesno.tpl");
+ $opt_tpl = get_markup_template("field_checkbox.tpl");
if(get_config('system','publish_all')) {
$profile_in_dir = '<input type="hidden" name="profile_in_directory" value="1" />';
}
@@ -921,6 +999,17 @@ function settings_content(&$a) {
}
}
+ $evdays = get_pconfig(local_user(),'system','evdays');
+ if(! $evdays)
+ $evdays = 3;
+
+ $permissions_role = get_pconfig(local_user(),'system','permissions_role');
+ $permissions_set = (($permissions_role && $permissions_role != 'custom') ? true : false);
+ $vnotify = get_pconfig(local_user(),'system','vnotify');
+ $always_show_in_notices = get_pconfig(local_user(),'system','always_show_in_notices');
+ if($vnotify === false)
+ $vnotify = (-1);
+
$o .= replace_macros($stpl,array(
'$ptitle' => t('Channel Settings'),
@@ -929,18 +1018,18 @@ function settings_content(&$a) {
'$uid' => local_user(),
'$form_security_token' => get_form_security_token("settings"),
'$nickname_block' => $prof_addr,
-
-
'$h_basic' => t('Basic Settings'),
'$username' => array('username', t('Full Name:'), $username,''),
'$email' => array('email', t('Email Address:'), $email, ''),
- '$timezone' => array('timezone_select' , t('Your Timezone:'), select_timezone($timezone), ''),
+ '$timezone' => array('timezone_select' , t('Your Timezone:'), $timezone, '', get_timezones()),
'$defloc' => array('defloc', t('Default Post Location:'), $defloc, t('Geographical location to display on your posts')),
'$allowloc' => array('allow_location', t('Use Browser Location:'), ((get_pconfig(local_user(),'system','use_browser_location')) ? 1 : ''), ''),
'$adult' => array('adult', t('Adult Content'), $adult_flag, t('This channel frequently or regularly publishes adult content. (Please tag any adult material and/or nudity with #NSFW)')),
'$h_prv' => t('Security and Privacy Settings'),
+ '$permissions_set' => $permissions_set,
+ '$perms_set_msg' => t('Your permissions are already configured. Click to view/adjust'),
'$hide_presence' => array('hide_presence', t('Hide my online presence'),$hide_presence, t('Prevents displaying in your profile that you are online')),
@@ -960,9 +1049,8 @@ function settings_content(&$a) {
'$permdesc' => t("\x28click to open/close\x29"),
'$aclselect' => populate_acl($perm_defaults,false),
'$suggestme' => $suggestme,
-
'$group_select' => $group_select,
-
+ '$role' => array('permissions_role' , t('Channel permissions category:'), $permissions_role, '', get_roles()),
'$profile_in_dir' => $profile_in_dir,
'$hide_friends' => $hide_friends,
@@ -986,7 +1074,24 @@ function settings_content(&$a) {
'$notify7' => array('notify7', t('You are tagged in a post'), ($notify & NOTIFY_TAGSELF), NOTIFY_TAGSELF, ''),
'$notify8' => array('notify8', t('You are poked/prodded/etc. in a post'), ($notify & NOTIFY_POKE), NOTIFY_POKE, ''),
-
+
+ '$lbl_vnot' => t('Show visual notifications including:'),
+
+ '$vnotify1' => array('vnotify1', t('Unseen matrix activity'), ($vnotify & VNOTIFY_NETWORK), VNOTIFY_NETWORK, ''),
+ '$vnotify2' => array('vnotify2', t('Unseen channel activity'), ($vnotify & VNOTIFY_CHANNEL), VNOTIFY_CHANNEL, ''),
+ '$vnotify3' => array('vnotify3', t('Unseen private messages'), ($vnotify & VNOTIFY_MAIL), VNOTIFY_MAIL, t('Recommended')),
+ '$vnotify4' => array('vnotify4', t('Upcoming events'), ($vnotify & VNOTIFY_EVENT), VNOTIFY_EVENT, ''),
+ '$vnotify5' => array('vnotify5', t('Events today'), ($vnotify & VNOTIFY_EVENTTODAY), VNOTIFY_EVENTTODAY, ''),
+ '$vnotify6' => array('vnotify6', t('Upcoming birthdays'), ($vnotify & VNOTIFY_BIRTHDAY), VNOTIFY_BIRTHDAY, t('Not available in all themes')),
+ '$vnotify7' => array('vnotify7', t('System (personal) notifications'), ($vnotify & VNOTIFY_SYSTEM), VNOTIFY_SYSTEM, ''),
+ '$vnotify8' => array('vnotify8', t('System info messages'), ($vnotify & VNOTIFY_INFO), VNOTIFY_INFO, t('Recommended')),
+ '$vnotify9' => array('vnotify9', t('System critical alerts'), ($vnotify & VNOTIFY_ALERT), VNOTIFY_ALERT, t('Recommended')),
+ '$vnotify10' => array('vnotify10', t('New connections'), ($vnotify & VNOTIFY_INTRO), VNOTIFY_INTRO, t('Recommended')),
+ '$vnotify11' => array('vnotify11', t('System Registrations'), ($vnotify & VNOTIFY_REGISTER), VNOTIFY_REGISTER, ''),
+ '$always_show_in_notices' => array('always_show_in_notices', t('Also show new wall posts, private messages and connections under Notices'), $always_show_in_notices, 1, ''),
+
+ '$evdays' => array('evdays', t('Notify me of events this many days in advance'), $evdays, t('Must be greater than 0')),
+
'$h_advn' => t('Advanced Account/Page Type Settings'),
'$h_descadvn' => t('Change the behaviour of this account for special situations'),
'$pagetype' => $pagetype,
diff --git a/mod/setup.php b/mod/setup.php
index ad5394335..6f2c7c074 100755
--- a/mod/setup.php
+++ b/mod/setup.php
@@ -50,16 +50,18 @@ function setup_post(&$a) {
$dbuser = trim($_POST['dbuser']);
$dbpass = trim($_POST['dbpass']);
$dbdata = trim($_POST['dbdata']);
+ $dbtype = intval(trim($_POST['dbtype']));
$phpath = trim($_POST['phpath']);
$adminmail = trim($_POST['adminmail']);
$siteurl = trim($_POST['siteurl']);
require_once('include/dba/dba_driver.php');
unset($db);
- $db = dba_factory($dbhost, $dbport, $dbuser, $dbpass, $dbdata, true);
+ $db = dba_factory($dbhost, $dbport, $dbuser, $dbpass, $dbdata, $dbtype, true);
if(! $db->connected) {
echo "Database Connect failed: " . $db->error;
killme();
+ $a->data['db_conn_failed']=true;
}
/*if(get_db_errno()) {
unset($db);
@@ -80,9 +82,9 @@ function setup_post(&$a) {
return;
}
}*/
- if(get_db_errno()) {
- $a->data['db_conn_failed']=true;
- }
+ //if(get_db_errno()) {
+
+ //}
return;
break;
@@ -93,6 +95,7 @@ function setup_post(&$a) {
$dbuser = notags(trim($_POST['dbuser']));
$dbpass = notags(trim($_POST['dbpass']));
$dbdata = notags(trim($_POST['dbdata']));
+ $dbtype = intval(notags(trim($_POST['dbtype'])));
$phpath = notags(trim($_POST['phpath']));
$timezone = notags(trim($_POST['timezone']));
$adminmail = notags(trim($_POST['adminmail']));
@@ -109,7 +112,7 @@ function setup_post(&$a) {
}
// connect to db
- $db = dba_factory($dbhost, $dbport, $dbuser, $dbpass, $dbdata, true);
+ $db = dba_factory($dbhost, $dbport, $dbuser, $dbpass, $dbdata, $dbtype, true);
if(! $db->connected) {
echo 'CRITICAL: DB not connected.';
@@ -123,6 +126,7 @@ function setup_post(&$a) {
'$dbuser' => $dbuser,
'$dbpass' => $dbpass,
'$dbdata' => $dbdata,
+ '$dbtype' => $dbtype,
'$timezone' => $timezone,
'$siteurl' => $siteurl,
'$site_id' => random_string(),
@@ -187,7 +191,7 @@ function setup_content(&$a) {
}
if(x($a->data,'db_failed')) {
- $txt = t('You may need to import the file "install/database.sql" manually using phpmyadmin or mysql.') . EOL;
+ $txt = t('You may need to import the file "install/schema_xxx.sql" manually using a database client.') . EOL;
$txt .= t('Please see the file "install/INSTALL.txt".') . EOL ."<hr>" ;
$txt .= "<pre>".$a->data['db_failed'] . "</pre>". EOL ;
$db_return_text .= $txt;
@@ -273,6 +277,7 @@ function setup_content(&$a) {
$dbport = intval(notags(trim($_POST['dbport'])));
$dbpass = notags(trim($_POST['dbpass']));
$dbdata = notags(trim($_POST['dbdata']));
+ $dbtype = intval(notags(trim($_POST['dbtype'])));
$phpath = notags(trim($_POST['phpath']));
$adminmail = notags(trim($_POST['adminmail']));
$siteurl = notags(trim($_POST['siteurl']));
@@ -293,6 +298,7 @@ function setup_content(&$a) {
'$dbuser' => array('dbuser', t('Database Login Name'), $dbuser, ''),
'$dbpass' => array('dbpass', t('Database Login Password'), $dbpass, ''),
'$dbdata' => array('dbdata', t('Database Name'), $dbdata, ''),
+ '$dbtype' => array('dbtype', t('Database Type'), $dbtype, '', array( 0=>'MySQL', 1=>'PostgreSQL' )),
'$adminmail' => array('adminmail', t('Site administrator email address'), $adminmail, t('Your account email address must match this in order to use the web admin panel.')),
'$siteurl' => array('siteurl', t('Website URL'), z_root(), t('Please use SSL (https) URL if available.')),
@@ -316,6 +322,7 @@ function setup_content(&$a) {
$dbuser = notags(trim($_POST['dbuser']));
$dbpass = notags(trim($_POST['dbpass']));
$dbdata = notags(trim($_POST['dbdata']));
+ $dbtype = intval(notags(trim($_POST['dbtype'])));
$phpath = notags(trim($_POST['phpath']));
$adminmail = notags(trim($_POST['adminmail']));
@@ -335,13 +342,14 @@ function setup_content(&$a) {
'$dbpass' => $dbpass,
'$dbdata' => $dbdata,
'$phpath' => $phpath,
+ '$dbtype' => $dbtype,
'$adminmail' => array('adminmail', t('Site administrator email address'), $adminmail, t('Your account email address must match this in order to use the web admin panel.')),
'$siteurl' => array('siteurl', t('Website URL'), z_root(), t('Please use SSL (https) URL if available.')),
- '$timezone' => field_timezone('timezone', t('Please select a default timezone for your website'), $timezone, ''),
+ '$timezone' => array('timezone', t('Please select a default timezone for your website'), $timezone, '', get_timezones()),
'$baseurl' => $a->get_baseurl(),
@@ -440,7 +448,7 @@ function check_funcs(&$checks) {
check_add($ck_funcs, t('libCurl PHP module'), true, true, "");
check_add($ck_funcs, t('GD graphics PHP module'), true, true, "");
check_add($ck_funcs, t('OpenSSL PHP module'), true, true, "");
- check_add($ck_funcs, t('mysqli PHP module'), true, true, "");
+ check_add($ck_funcs, t('mysqli or postgres PHP module'), true, true, "");
check_add($ck_funcs, t('mb_string PHP module'), true, true, "");
check_add($ck_funcs, t('mcrypt PHP module'), true, true, "");
@@ -471,9 +479,9 @@ function check_funcs(&$checks) {
$ck_funcs[2]['status']= false;
$ck_funcs[2]['help']= t('Error: openssl PHP module required but not installed.');
}
- if(! function_exists('mysqli_connect')){
+ if(! function_exists('mysqli_connect') && !function_exists('pg_connect')){
$ck_funcs[3]['status']= false;
- $ck_funcs[3]['help']= t('Error: mysqli PHP module required but not installed.');
+ $ck_funcs[3]['help']= t('Error: mysqli or postgres PHP module required but neither are installed.');
}
if(! function_exists('mb_strlen')){
$ck_funcs[4]['status']= false;
@@ -569,7 +577,7 @@ function check_htaccess(&$checks) {
$help = t('SSL certificate cannot be validated. Fix certificate or disable https access to this site.') . EOL;
$help .= t('If you have https access to your website or allow connections to TCP port 443 (the https: port), you MUST use a browser-valid certificate. You MUST NOT use self-signed certificates!') . EOL;
$help .= t('This restriction is incorporated because public posts from you may for example contain references to images on your own hub.') . EOL;
- $help .= t('If your certificate is not recognised, members of other sites (who may themselves have valid certificates) will get a warning message on their own site complaining about security issues.') . EOL;
+ $help .= t('If your certificate is not recognized, members of other sites (who may themselves have valid certificates) will get a warning message on their own site complaining about security issues.') . EOL;
$help .= t('This can cause usability issues elsewhere (not just on your own site) so we must insist on this requirement.') .EOL;
$help .= t('Providers are available that issue free certificates which are browser-valid.'). EOL;
@@ -579,7 +587,7 @@ function check_htaccess(&$checks) {
if ((! $test['success']) || ($test['body'] != "ok")) {
$status = false;
- $help = t('Url rewrite in .htaccess is not working. Check your server configuration.');
+ $help = t('Url rewrite in .htaccess is not working. Check your server configuration.'.'Test: '.var_export($test,true));
}
check_add($checks, t('Url rewrite is working'), $status, true, $help);
} else {
@@ -607,8 +615,8 @@ function load_database_rem($v, $i){
function load_database($db) {
-
- $str = file_get_contents('install/database.sql');
+ file_put_contents('debug-foo.log', 'Loading schema: '.$db->get_install_script());
+ $str = file_get_contents($db->get_install_script());
$arr = explode(';',$str);
$errors = false;
foreach($arr as $a) {
diff --git a/mod/share.php b/mod/share.php
index 8b0403663..78a25ee10 100644
--- a/mod/share.php
+++ b/mod/share.php
@@ -14,10 +14,12 @@ function share_init(&$a) {
killme();
- $r = q("SELECT * from item WHERE id = %d LIMIT 1",
+ $r = q("SELECT * from item left join xchan on author_xchan = xchan_hash WHERE id = %d LIMIT 1",
intval($post_id)
);
- if((! $r) || $r[0]['item_private'])
+ if(! $r)
+ killme();
+ if(($r[0]['item_private']) && ($r[0]['xchan_network'] !== 'rss'))
killme();
$sql_extra = item_permissions_sql($r[0]['uid']);
diff --git a/mod/siteinfo.php b/mod/siteinfo.php
index bdf9b1af6..01804e62a 100644
--- a/mod/siteinfo.php
+++ b/mod/siteinfo.php
@@ -1,24 +1,39 @@
<?php
function siteinfo_init(&$a) {
-
+ global $db;
+
if ($a->argv[1]=="json"){
$register_policy = Array('REGISTER_CLOSED', 'REGISTER_APPROVE', 'REGISTER_OPEN');
-
+ $directory_mode = Array('DIRECTORY_MODE_NORMAL', 'DIRECTORY_MODE_SECONDARY','DIRECTORY_MODE_PRIMARY', 'DIRECTORY_MODE_STANDALONE');
+
$sql_extra = '';
- if(x($a->config,'admin_nickname')) {
- $sql_extra = sprintf(" AND nickname = '%s' ",dbesc($a->config['admin_nickname']));
+
+ $r = q("select * from channel left join account on account_id = channel_account_id where ( account_roles & 4096 )>0 and account_default_channel = channel_id");
+
+
+ if($r) {
+ $admin = array();
+ foreach($r as $rr) {
+ if($rr['channel_pageflags'] & PAGE_HUBADMIN)
+ $admin[] = array( 'name' => $rr['channel_name'], 'address' => $rr['channel_address'] . '@' . get_app()->get_hostname(), 'channel' => z_root() . '/channel/' . $rr['channel_address']);
+ }
+ if(! $admin) {
+ foreach($r as $rr) {
+ $admin[] = array( 'name' => $rr['channel_name'], 'address' => $rr['channel_address'] . '@' . get_app()->get_hostname(), 'channel' => z_root() . '/channel/' . $rr['channel_address']);
+ }
+ }
}
- if (isset($a->config['admin_email']) && $a->config['admin_email']!=''){
- $r = q("SELECT username, nickname FROM user WHERE email='%s' $sql_extra", dbesc($a->config['admin_email']));
- $admin = array(
- 'name' => $r[0]['username'],
- 'profile'=> $a->get_baseurl().'/channel/'.$r[0]['nickname'],
- );
- } else {
+ else {
$admin = false;
}
+ $def_service_class = get_config('system','default_service_class');
+ if($def_service_class)
+ $service_class = get_config('service_class',$def_service_class);
+ else
+ $service_class = false;
+
$visible_plugins = array();
if(is_array($a->plugins) && count($a->plugins)) {
$r = q("select * from addon where hidden = 0");
@@ -26,26 +41,47 @@ function siteinfo_init(&$a) {
foreach($r as $rr)
$visible_plugins[] = $rr['name'];
}
+ sort($visible_plugins);
if(@is_dir('.git') && function_exists('shell_exec'))
- $commit = @shell_exec('git log -1 --format="%h"');
+ $commit = trim(@shell_exec('git log -1 --format="%h"'));
if(! isset($commit) || strlen($commit) > 16)
$commit = '';
+ $site_info = get_config('system','info');
+ $site_name = get_config('system','sitename');
+
+ //Statistics
+ $channels_total_stat = intval(get_config('system','channels_total_stat'));
+ $channels_active_halfyear_stat = intval(get_config('system','channels_active_halfyear_stat'));
+ $channels_active_monthly_stat = intval(get_config('system','channels_active_monthly_stat'));
+ $local_posts_stat = intval(get_config('system','local_posts_stat'));
+ $hide_in_statistics = intval(get_config('system','hide_in_statistics'));
+
$data = Array(
'version' => RED_VERSION,
'commit' => $commit,
'url' => z_root(),
'plugins' => $visible_plugins,
'register_policy' => $register_policy[$a->config['system']['register_policy']],
+ 'directory_mode' => $directory_mode[$a->config['system']['directory_mode']],
+ 'language' => get_config('system','language'),
+ 'diaspora_emulation' => get_config('system','diaspora_enabled'),
+ 'rss_connections' => get_config('system','feed_contacts'),
+ 'default_service_restrictions' => $service_class,
'admin' => $admin,
- 'site_name' => $a->config['sitename'],
+ 'site_name' => (($site_name) ? $site_name : ''),
'platform' => RED_PLATFORM,
- 'info' => ((x($a->config,'info')) ? $a->config['info'] : '')
+ 'dbdriver' => $db->getdriver(),
+ 'lastpoll' => get_config('system','lastpoll'),
+ 'info' => (($site_info) ? $site_info : ''),
+ 'channels_total' => $channels_total_stat,
+ 'channels_active_halfyear' => $channels_active_halfyear_stat,
+ 'channels_active_monthly' => $channels_active_monthly_stat,
+ 'local_posts' => $local_posts_stat,
+ 'hide_in_statistics' => $hide_in_statistics
);
-
- echo json_encode($data);
- killme();
+ json_return_and_die($data);
}
}
@@ -55,8 +91,10 @@ function siteinfo_content(&$a) {
if(! get_config('system','hidden_version_siteinfo')) {
$version = sprintf( t('Version %s'), RED_VERSION );
- if(@is_dir('.git') && function_exists('shell_exec'))
+ if(@is_dir('.git') && function_exists('shell_exec')) {
$commit = @shell_exec('git log -1 --format="%h"');
+ $tag = @shell_exec('git describe --tags --abbrev=0');
+ }
if(! isset($commit) || strlen($commit) > 16)
$commit = '';
}
@@ -95,11 +133,15 @@ function siteinfo_content(&$a) {
$o = replace_macros(get_markup_template('siteinfo.tpl'), array(
'$title' => t('Red'),
- '$description' => t('This is a hub of the Red Matrix - a global cooperative network of decentralised privacy enhanced websites.'),
+ '$description' => t('This is a hub of the Red Matrix - a global cooperative network of decentralized privacy enhanced websites.'),
'$version' => $version,
+ '$tag_txt' => t('Tag: '),
+ '$tag' => $tag,
+ '$polled' => t('Last background fetch: '),
+ '$lastpoll' => get_poller_runtime(),
'$commit' => $commit,
'$web_location' => t('Running at web location') . ' ' . z_root(),
- '$visit' => t('Please visit <a href="http://getzot.com">GetZot.com</a> to learn more about the Red Matrix.'),
+ '$visit' => t('Please visit <a href="https://redmatrix.me">RedMatrix.me</a> to learn more about the Red Matrix.'),
'$bug_text' => t('Bug reports and issues: please visit'),
'$bug_link_url' => 'https://github.com/friendica/red/issues',
'$bug_link_text' => 'redmatrix issues',
diff --git a/mod/sitelist.php b/mod/sitelist.php
index 1e6d0fcfb..95cf862df 100644
--- a/mod/sitelist.php
+++ b/mod/sitelist.php
@@ -18,6 +18,12 @@ function sitelist_init(&$a) {
if($open)
$sql_extra = " and site_register = " . intval(REGISTER_OPEN) . " ";
+ $realm = get_directory_realm();
+ if($realm == DIRECTORY_REALM) {
+ $sql_extra .= " and ( site_realm = '" . dbesc($realm) . "' or site_realm = '') ";
+ }
+ else
+ $sql_extra .= " and site_realm = '" . dbesc($realm) . "' ";
$result = array('success' => false);
diff --git a/mod/smilies.php b/mod/smilies.php
index c47f95da7..b22d0c6d2 100644
--- a/mod/smilies.php
+++ b/mod/smilies.php
@@ -1,3 +1,15 @@
<?php
-function smilies_content(&$a) { return smilies('',true); }
+function smilies_content(&$a) {
+ if ($a->argv[1]==="json"){
+ $tmp = list_smilies();
+ $results = array();
+ for($i = 0; $i < count($tmp['texts']); $i++) {
+ $results[] = array('text' => $tmp['texts'][$i], 'icon' => $tmp['icons'][$i]);
+ }
+ json_return_and_die($results);
+ }
+ else {
+ return smilies('',true);
+ }
+}
diff --git a/mod/sources.php b/mod/sources.php
index f4b36508f..73d78bbbf 100644
--- a/mod/sources.php
+++ b/mod/sources.php
@@ -47,7 +47,7 @@ function sources_post(&$a) {
goaway(z_root() . '/sources');
}
else {
- $r = q("update source set src_xchan = '%s', src_patt = '%s' where src_channel_id = %d and src_id = %d limit 1",
+ $r = q("update source set src_xchan = '%s', src_patt = '%s' where src_channel_id = %d and src_id = %d",
dbesc($xchan),
dbesc($words),
intval(local_user()),
@@ -150,7 +150,7 @@ function sources_content(&$a) {
notice( t('Source not found.') . EOL);
return '';
}
- $r = q("delete from source where src_id = %d and src_channel_id = %d limit 1",
+ $r = q("delete from source where src_id = %d and src_channel_id = %d",
intval(argv(1)),
intval(local_user())
);
diff --git a/mod/sslify.php b/mod/sslify.php
index ed06d87c1..f37a8e23e 100644
--- a/mod/sslify.php
+++ b/mod/sslify.php
@@ -3,7 +3,7 @@
function sslify_init(&$a) {
$x = z_fetch_url($_REQUEST['url']);
if($x['success']) {
- $h = explode("\n",$x['headers']);
+ $h = explode("\n",$x['header']);
foreach ($h as $l) {
list($k,$v) = array_map("trim", explode(":", trim($l), 2));
$hdrs[$k] = $v;
diff --git a/mod/starred.php b/mod/starred.php
index ca7621b0f..05b45bea3 100644
--- a/mod/starred.php
+++ b/mod/starred.php
@@ -21,7 +21,7 @@ function starred_init(&$a) {
$item_flags = ( $r[0]['item_flags'] ^ ITEM_STARRED );
- $r = q("UPDATE item SET item_flags = %d WHERE uid = %d and id = %d LIMIT 1",
+ $r = q("UPDATE item SET item_flags = %d WHERE uid = %d and id = %d",
intval($item_flags),
intval(local_user()),
intval($message_id)
diff --git a/mod/subthread.php b/mod/subthread.php
index 5ef0615b1..f0f54f4a6 100755
--- a/mod/subthread.php
+++ b/mod/subthread.php
@@ -228,7 +228,7 @@ EOT;
$post_id = $post['item_id'];
if(! $item['visible']) {
- $r = q("UPDATE `item` SET `visible` = 1 WHERE `id` = %d AND `uid` = %d LIMIT 1",
+ $r = q("UPDATE `item` SET `visible` = 1 WHERE `id` = %d AND `uid` = %d",
intval($item['id']),
intval($owner_uid)
);
diff --git a/mod/tagrm.php b/mod/tagrm.php
index 957cf0d71..38787cb0b 100644
--- a/mod/tagrm.php
+++ b/mod/tagrm.php
@@ -19,24 +19,27 @@ function tagrm_post(&$a) {
intval(local_user())
);
- if(! count($r))
+ if(! $r)
goaway($a->get_baseurl() . '/' . $_SESSION['photo_return']);
- $arr = explode(',', $r[0]['tag']);
- for($x = 0; $x < count($arr); $x ++) {
- if($arr[$x] === $tag) {
- unset($arr[$x]);
- break;
+ $r = fetch_post_tags($r,true);
+
+ $item = $r[0];
+ $new_tags = array();
+
+ if($item['term']) {
+ for($x = 0; $x < count($item['term']); $x ++) {
+ if($item['term'][$x]['term'] !== hex2bin($tag))
+ $new_tags[] = $item['term'][$x];
}
}
- $tag_str = implode(',',$arr);
+ if($new_tags)
+ $item['term'] = $new_tags;
+ else
+ unset($item['term']);
- q("UPDATE `item` SET `tag` = '%s' WHERE `id` = %d AND `uid` = %d LIMIT 1",
- dbesc($tag_str),
- intval($item),
- intval(local_user())
- );
+ item_store_update($item);
info( t('Tag removed') . EOL );
goaway($a->get_baseurl() . '/' . $_SESSION['photo_return']);
@@ -49,51 +52,90 @@ function tagrm_post(&$a) {
function tagrm_content(&$a) {
- $o = '';
-
if(! local_user()) {
goaway($a->get_baseurl() . '/' . $_SESSION['photo_return']);
// NOTREACHED
}
- $item = (($a->argc > 1) ? intval($a->argv[1]) : 0);
- if(! $item) {
+ // remove tag on the fly if item and tag are provided
+ if((argc() == 4) && (argv(1) === 'drop') && intval(argv(2))) {
+
+ $item = intval(argv(2));
+ $tag = argv(3);
+
+ $r = q("SELECT * FROM `item` WHERE `id` = %d AND `uid` = %d LIMIT 1",
+ intval($item),
+ intval(local_user())
+ );
+
+ if(! $r)
+ goaway($a->get_baseurl() . '/' . $_SESSION['photo_return']);
+
+ $r = fetch_post_tags($r,true);
+
+ $item = $r[0];
+
+ $new_tags = array();
+
+ if($item['term']) {
+ for($x = 0; $x < count($item['term']); $x ++) {
+ if($item['term'][$x]['term'] !== hex2bin($tag))
+ $new_tags[] = $item['term'][$x];
+ }
+ }
+
+ if($new_tags)
+ $item['term'] = $new_tags;
+ else
+ unset($item['term']);
+
+ item_store_update($item);
+
+ info( t('Tag removed') . EOL );
goaway($a->get_baseurl() . '/' . $_SESSION['photo_return']);
- // NOTREACHED
+
}
+ //if we got only the item print a list of tags to select
+ if((argc() == 3) && (argv(1) === 'drop') && intval(argv(2))) {
- $r = q("SELECT * FROM `item` WHERE `id` = %d AND `uid` = %d LIMIT 1",
- intval($item),
- intval(local_user())
- );
+ $o = '';
- if(! count($r))
- goaway($a->get_baseurl() . '/' . $_SESSION['photo_return']);
+ $item = intval(argv(2));
- $arr = explode(',', $r[0]['tag']);
+ $r = q("SELECT * FROM `item` WHERE `id` = %d AND `uid` = %d LIMIT 1",
+ intval($item),
+ intval(local_user())
+ );
- if(! count($arr))
- goaway($a->get_baseurl() . '/' . $_SESSION['photo_return']);
+ if(! $r)
+ goaway($a->get_baseurl() . '/' . $_SESSION['photo_return']);
- $o .= '<h3>' . t('Remove Item Tag') . '</h3>';
+ $r = fetch_post_tags($r,true);
- $o .= '<p id="tag-remove-desc">' . t('Select a tag to remove: ') . '</p>';
+ if(! count($r[0]['term']))
+ goaway($a->get_baseurl() . '/' . $_SESSION['photo_return']);
- $o .= '<form id="tagrm" action="tagrm" method="post" >';
- $o .= '<input type="hidden" name="item" value="' . $item . '" />';
- $o .= '<ul>';
+ $o .= '<h3>' . t('Remove Item Tag') . '</h3>';
+ $o .= '<p id="tag-remove-desc">' . t('Select a tag to remove: ') . '</p>';
- foreach($arr as $x) {
- $o .= '<li><input type="checkbox" name="tag" value="' . bin2hex($x) . '" >' . bbcode($x) . '</input></li>';
- }
+ $o .= '<form id="tagrm" action="tagrm" method="post" >';
+ $o .= '<input type="hidden" name="item" value="' . $item . '" />';
+ $o .= '<ul>';
- $o .= '</ul>';
- $o .= '<input id="tagrm-submit" type="submit" name="submit" value="' . t('Remove') .'" />';
- $o .= '<input id="tagrm-cancel" type="submit" name="submit" value="' . t('Cancel') .'" />';
- $o .= '</form>';
- return $o;
+ foreach($r[0]['term'] as $x) {
+ $o .= '<li><input type="checkbox" name="tag" value="' . bin2hex($x['term']) . '" >' . bbcode($x['term']) . '</input></li>';
+ }
+
+ $o .= '</ul>';
+ $o .= '<input id="tagrm-submit" type="submit" name="submit" value="' . t('Remove') .'" />';
+ $o .= '<input id="tagrm-cancel" type="submit" name="submit" value="' . t('Cancel') .'" />';
+ $o .= '</form>';
+
+ return $o;
+
+ }
}
diff --git a/mod/thing.php b/mod/thing.php
index b6d59a3ee..f53a6ab7b 100644
--- a/mod/thing.php
+++ b/mod/thing.php
@@ -67,8 +67,6 @@ function thing_init(&$a) {
-
-
if($term_hash) {
$t = q("select * from obj left join term on obj_obj = term_hash where term_hash != '' and obj_type = %d and term_hash = '%s' limit 1",
intval(TERM_OBJ_THING),
@@ -87,7 +85,7 @@ function thing_init(&$a) {
else
$local_photo = $orig_record['imgurl'];
- $r = q("update term set term = '%s', url = '%s', imgurl = '%s' where term_hash = '%s' and uid = %d limit 1",
+ $r = q("update term set term = '%s', url = '%s', imgurl = '%s' where term_hash = '%s' and uid = %d",
dbesc($name),
dbesc(($url) ? $url : z_root() . '/thing/' . $term_hash),
dbesc($local_photo),
@@ -303,12 +301,12 @@ function thing_content(&$a) {
}
- $x = q("delete from obj where obj_obj = '%s' and obj_type = %d and obj_channel = %d limit 1",
+ $x = q("delete from obj where obj_obj = '%s' and obj_type = %d and obj_channel = %d",
dbesc($thing_hash),
intval(TERM_OBJ_THING),
intval(local_user())
);
- $x = q("delete from term where term_hash = '%s' and uid = %d limit 1",
+ $x = q("delete from term where term_hash = '%s' and uid = %d",
dbesc($thing_hash),
intval(local_user())
);
@@ -321,7 +319,7 @@ function thing_content(&$a) {
'$profile_lbl' => t('Select a profile'),
'$profile_select' => contact_profile_assign(''),
'$verb_lbl' => $channel['channel_name'],
- '$activity' => array('activity',t('Post an activity'),true,t('Only sends to viewers of the applicable profile')),
+ '$activity' => array('activity',t('Post an activity'),((array_key_exists('activity',$_REQUEST)) ? $_REQUEST['activity'] : true),t('Only sends to viewers of the applicable profile')),
'$verb_select' => obj_verb_selector(),
'$thing_lbl' => t('Name of thing e.g. something'),
'$url_lbl' => t('URL of thing (optional)'),
diff --git a/mod/uexport.php b/mod/uexport.php
index f3a2ce67c..250a001a2 100644
--- a/mod/uexport.php
+++ b/mod/uexport.php
@@ -4,22 +4,37 @@ function uexport_init(&$a) {
if(! local_user())
killme();
- $channel = $a->get_channel();
+ if(argc() > 1) {
+ $channel = $a->get_channel();
- require_once('include/identity.php');
+ require_once('include/identity.php');
- header('content-type: application/octet_stream');
- header('content-disposition: attachment; filename="' . $channel['channel_address'] . '.json"' );
+ header('content-type: application/octet_stream');
+ header('content-disposition: attachment; filename="' . $channel['channel_address'] . '.json"' );
- if(argc() > 1 && argv(1) === 'basic') {
- echo json_encode(identity_basic_export(local_user()));
- killme();
- }
+ if(argc() > 1 && argv(1) === 'basic') {
+ echo json_encode(identity_basic_export(local_user()));
+ killme();
+ }
- if(argc() > 1 && argv(1) === 'complete') {
- echo json_encode('not yet implemented');
- killme();
+ // FIXME - this basically doesn't work in the wild with a channel more than a few months old due to memory and execution time limits.
+ // It probably needs to be built at the CLI and offered to download as a tarball. Maybe stored in the members dav.
+
+ if(argc() > 1 && argv(1) === 'complete') {
+ echo json_encode(identity_basic_export(local_user(),true));
+ killme();
+ }
}
+}
-} \ No newline at end of file
+function uexport_content(&$a) {
+ $o = replace_macros(get_markup_template('uexport.tpl'), array(
+ '$title' => t('Export Channel'),
+ '$basictitle' => t('Export Channel'),
+ '$basic' => t('Export your basic channel information to a small file. This acts as a backup of your connections, permissions, profile and basic data, which can be used to import your data to a new hub, but does not contain your content.'),
+ '$fulltitle' => t('Export Content'),
+ '$full' => t('Export your channel information and all the content to a JSON backup. This backs up all of your connections, permissions, profile data and all of your content, but is generally not suitable for importing a channel to a new hub as this file may be VERY large. Please be patient - it may take several minutes for this download to begin.')
+ ));
+return $o;
+}
diff --git a/mod/update_home.php b/mod/update_home.php
new file mode 100644
index 000000000..c139682e1
--- /dev/null
+++ b/mod/update_home.php
@@ -0,0 +1,38 @@
+<?php
+
+// See update_profile.php for documentation
+
+require_once('mod/home.php');
+
+function update_home_content(&$a) {
+
+ $profile_uid = ((intval($_GET['p'])) ? intval($_GET['p']) : (-1));
+ $load = (((argc() > 1) && (argv(1) == 'load')) ? 1 : 0);
+ header("Content-type: text/html");
+ echo "<!DOCTYPE html><html><body>\r\n";
+ echo ((array_key_exists('msie',$_GET) && $_GET['msie'] == 1) ? '<div>' : '<section>');
+
+ $text = home_content($a,$profile_uid, $load);
+ $pattern = "/<img([^>]*) src=\"([^\"]*)\"/";
+ $replace = "<img\${1} dst=\"\${2}\"";
+ $text = preg_replace($pattern, $replace, $text);
+
+ if(! $load) {
+ $replace = '<br />' . t('[Embedded content - reload page to view]') . '<br />';
+ $pattern = "/<\s*audio[^>]*>(.*?)<\s*\/\s*audio>/i";
+ $text = preg_replace($pattern, $replace, $text);
+ $pattern = "/<\s*video[^>]*>(.*?)<\s*\/\s*video>/i";
+ $text = preg_replace($pattern, $replace, $text);
+ $pattern = "/<\s*embed[^>]*>(.*?)<\s*\/\s*embed>/i";
+ $text = preg_replace($pattern, $replace, $text);
+ $pattern = "/<\s*iframe[^>]*>(.*?)<\s*\/\s*iframe>/i";
+ $text = preg_replace($pattern, $replace, $text);
+ }
+
+ echo str_replace("\t",' ',$text);
+ echo ((array_key_exists('msie',$_GET) && $_GET['msie'] == 1) ? '</div>' : '</section>');
+ echo "</body></html>\r\n";
+// logger('update_home: ' . $text);
+ killme();
+
+} \ No newline at end of file
diff --git a/mod/viewconnections.php b/mod/viewconnections.php
index 40ce28efe..40d26c823 100644
--- a/mod/viewconnections.php
+++ b/mod/viewconnections.php
@@ -37,7 +37,7 @@ function viewconnections_content(&$a) {
$xchan_flags = $xchan_flags | XCHAN_FLAGS_HIDDEN;
}
- $r = q("SELECT count(*) as total FROM abook left join xchan on abook_xchan = xchan_hash where abook_channel = %d and not (abook_flags & %d ) and not ( xchan_flags & %d ) ",
+ $r = q("SELECT count(*) as total FROM abook left join xchan on abook_xchan = xchan_hash where abook_channel = %d and not (abook_flags & %d )>0 and not ( xchan_flags & %d )>0 ",
intval($a->profile['uid']),
intval($abook_flags),
intval($xchan_flags)
@@ -46,12 +46,12 @@ function viewconnections_content(&$a) {
$a->set_pager_total($r[0]['total']);
}
- $r = q("SELECT * FROM abook left join xchan on abook_xchan = xchan_hash where abook_channel = %d and not ( abook_flags & %d ) and not ( xchan_flags & %d ) order by xchan_name LIMIT %d , %d ",
+ $r = q("SELECT * FROM abook left join xchan on abook_xchan = xchan_hash where abook_channel = %d and not ( abook_flags & %d )>0 and not ( xchan_flags & %d )>0 order by xchan_name LIMIT %d OFFSET %d ",
intval($a->profile['uid']),
intval($abook_flags),
intval($xchan_flags),
- intval($a->pager['start']),
- intval($a->pager['itemspage'])
+ intval($a->pager['itemspage']),
+ intval($a->pager['start'])
);
if(! $r) {
diff --git a/mod/viewsrc.php b/mod/viewsrc.php
index 0f4df9b9b..982d1c417 100644
--- a/mod/viewsrc.php
+++ b/mod/viewsrc.php
@@ -5,6 +5,8 @@ function viewsrc_content(&$a) {
$o = '';
+ $sys = get_sys_channel();
+
$item_id = ((argc() > 1) ? intval(argv(1)) : 0);
$json = ((argc() > 2 && argv(2) === 'json') ? true : false);
@@ -19,13 +21,17 @@ function viewsrc_content(&$a) {
}
if(local_user() && $item_id) {
- $r = q("select body from item where item_restrict = 0 and uid = %d and id = %d limit 1",
+ $r = q("select item_flags, body from item where item_restrict = 0 and uid in (%d , %d) and id = %d limit 1",
intval(local_user()),
+ intval($sys['channel_id']),
intval($item_id)
);
- if($r)
+ if($r) {
+ if($r[0]['item_flags'] & ITEM_OBSCURED)
+ $r[0]['body'] = crypto_unencapsulate(json_decode($r[0]['body'],true),get_config('system','prvkey'));
$o = (($json) ? json_encode($r[0]['body']) : str_replace("\n",'<br />',$r[0]['body']));
+ }
}
if(is_ajax()) {
diff --git a/mod/wall_upload.php b/mod/wall_upload.php
index f83f4f7cf..7ed1859a8 100644
--- a/mod/wall_upload.php
+++ b/mod/wall_upload.php
@@ -8,6 +8,7 @@ require_once('include/photos.php');
function wall_upload_post(&$a) {
+
$using_api = ((x($_FILES,'media')) ? true : false);
if($using_api) {
@@ -43,10 +44,6 @@ function wall_upload_post(&$a) {
killme();
}
- $m = $ret['body'];
-
-
-
if($using_api)
return("\n\n" . $ret['body'] . "\n\n");
else
diff --git a/mod/webpages.php b/mod/webpages.php
index 431caa628..baddebec8 100644
--- a/mod/webpages.php
+++ b/mod/webpages.php
@@ -1,37 +1,64 @@
<?php
-function webpages_content(&$a) {
+require_once('include/identity.php');
+require_once('include/conversation.php');
+require_once('include/acl_selectors.php');
+
+function webpages_init(&$a) {
+
+ if(argc() > 1 && argv(1) === 'sys' && is_site_admin()) {
+ $sys = get_sys_channel();
+ if($sys && intval($sys['channel_id'])) {
+ $a->is_sys = true;
+ }
+ }
if(argc() > 1)
$which = argv(1);
- else {
+ else
+ return;
+
+ profile_load($a,$which);
+
+}
+
+
+function webpages_content(&$a) {
+
+ if(! $a->profile) {
notice( t('Requested profile is not available.') . EOL );
$a->error = 404;
return;
}
- $profile = 0;
- $channel = $a->get_channel();
-
- if((local_user()) && (argc() > 2) && (argv(2) === 'view')) {
- $which = $channel['channel_address'];
- $profile = argv(1);
- }
+ $which = argv(1);
- profile_load($a,$which,$profile);
+ $uid = local_user();
+ $owner = 0;
+ $channel = null;
+ $observer = $a->get_observer();
+ $channel = $a->get_channel();
- // Figure out who the page owner is.
- $r = q("select channel_id from channel where channel_address = '%s'",
- dbesc($which)
- );
- if($r) {
- $owner = intval($r[0]['channel_id']);
+ if($a->is_sys && is_site_admin()) {
+ $sys = get_sys_channel();
+ if($sys && intval($sys['channel_id'])) {
+ $uid = $owner = intval($sys['channel_id']);
+ $channel = $sys;
+ $observer = $sys;
+ }
}
- // Get the observer, check their permissions
+ if(! $owner) {
+ // Figure out who the page owner is.
+ $r = q("select channel_id from channel where channel_address = '%s'",
+ dbesc($which)
+ );
+ if($r) {
+ $owner = intval($r[0]['channel_id']);
+ }
+ }
- $observer = $a->get_observer();
$ob_hash = (($observer) ? $observer['xchan_hash'] : '');
$perms = get_all_perms($owner,$ob_hash);
@@ -41,28 +68,30 @@ function webpages_content(&$a) {
return;
}
-// if(local_user() && local_user() == $owner) {
-// $a->set_widget('design',design_tools());
-// }
-
-
- $mimetype = get_config('system','page_mimetype');
- if(! $mimetype)
- $mimetype = 'choose';
+ if(feature_enabled($owner,'expert')) {
+ $mimetype = (($_REQUEST['mimetype']) ? $_REQUEST['mimetype'] : get_pconfig($owner,'system','page_mimetype'));
+ if(! $mimetype)
+ $mimetype = 'choose';
+ }
+ else {
+ $mimetype = 'text/bbcode';
+ }
- $layout = get_config('system','page_layout');
+ $layout = (($_REQUEST['layout']) ? $_REQUEST['layout'] : get_pconfig($owner,'system','page_layout'));
if(! $layout)
$layout = 'choose';
-// Create a status editor (for now - we'll need a WYSIWYG eventually) to create pages
-// Nickname is set to the observers xchan, and profile_uid to the owners. This lets you post pages at other people's channels.
- require_once ('include/conversation.php');
- require_once('include/acl_selectors.php');
+ // Create a status editor (for now - we'll need a WYSIWYG eventually) to create pages
+ // Nickname is set to the observers xchan, and profile_uid to the owner's.
+ // This lets you post pages at other people's channels.
+
- if(local_user() && local_user() == $a->profile_uid) {
+ if((! $channel) && ($uid) && ($uid == $a->profile_uid)) {
$channel = $a->get_channel();
+ }
+ if($channel) {
$channel_acl = array(
'allow_cid' => $channel['channel_allow_cid'],
'allow_gid' => $channel['channel_allow_gid'],
@@ -73,31 +102,37 @@ function webpages_content(&$a) {
else
$channel_acl = array();
- require_once('include/conversation.php');
- $o = profile_tabs($a,true);
- $o .= '<h2>' . t('Webpages') . '</h2>';
+ $o = profile_tabs($a,true);
$x = array(
- 'webpage' => ITEM_WEBPAGE,
- 'is_owner' => true,
- 'nickname' => $a->profile['channel_address'],
- 'lockstate' => (($group || $cid || $channel['channel_allow_cid'] || $channel['channel_allow_gid'] || $channel['channel_deny_cid'] || $channel['channel_deny_gid']) ? 'lock' : 'unlock'),
- 'bang' => (($group || $cid) ? '!' : ''),
- 'acl' => ((local_user() && local_user() == $owner) ? populate_acl($channel_acl,false) : ''),
- 'visitor' => true,
+ 'webpage' => ITEM_WEBPAGE,
+ 'is_owner' => true,
+ 'nickname' => $a->profile['channel_address'],
+ 'lockstate' => (($channel['channel_allow_cid'] || $channel['channel_allow_gid'] || $channel['channel_deny_cid'] || $channel['channel_deny_gid']) ? 'lock' : 'unlock'),
+ 'bang' => '',
+ 'acl' => (($uid && $uid == $owner) ? populate_acl($channel_acl,false) : ''),
+ 'visitor' => true,
'profile_uid' => intval($owner),
- 'mimetype' => $mimetype,
- 'layout' => $layout,
+ 'mimetype' => $mimetype,
+ 'layout' => $layout,
);
+
+ if($_REQUEST['title'])
+ $x['title'] = $_REQUEST['title'];
+ if($_REQUEST['body'])
+ $x['body'] = $_REQUEST['body'];
+ if($_REQUEST['pagetitle'])
+ $x['pagetitle'] = $_REQUEST['pagetitle'];
$o .= status_editor($a,$x);
-
- // Get a list of webpages. We can't display all them because endless scroll makes that unusable, so just list titles and an edit link.
+ // Get a list of webpages. We can't display all them because endless scroll makes that unusable,
+ // so just list titles and an edit link.
//TODO - this should be replaced with pagelist_widget
- $r = q("select * from item_id left join item on item_id.iid = item.id where item_id.uid = %d and service = 'WEBPAGE' order by item.created desc",
+ $r = q("select * from item_id left join item on item_id.iid = item.id
+ where item_id.uid = %d and service = 'WEBPAGE' order by item.created desc",
intval($owner)
);
@@ -107,28 +142,36 @@ function webpages_content(&$a) {
$pages = array();
foreach($r as $rr) {
unobscure($rr);
- $pages[$rr['iid']][] = array('url' => $rr['iid'],'pagetitle' => $rr['sid'],'title' => $rr['title'],'created' => datetime_convert('UTC',date_default_timezone_get(),$rr['created']),'edited' => datetime_convert('UTC',date_default_timezone_get(),$rr['edited']));
+ $pages[$rr['iid']][] = array(
+ 'url' => $rr['iid'],
+ 'pagetitle' => $rr['sid'],
+ 'title' => $rr['title'],
+ 'created' => datetime_convert('UTC',date_default_timezone_get(),$rr['created']),
+ 'edited' => datetime_convert('UTC',date_default_timezone_get(),$rr['edited'])
+ );
}
}
-//Build the base URL for edit links
- $url = z_root() . "/editwebpage/" . $which;
-// This isn't pretty, but it works. Until I figure out what to do with the UI, it's Good Enough(TM).
- return $o . replace_macros(get_markup_template("webpagelist.tpl"), array(
- '$baseurl' => $url,
- '$edit' => t('Edit'),
- '$pages' => $pages,
- '$channel' => $which,
- '$view' => t('View'),
- '$preview' => t('Preview'),
- '$actions_txt' => t('Actions'),
+ //Build the base URL for edit links
+ $url = z_root() . '/editwebpage/' . $which;
+
+ $o .= replace_macros(get_markup_template('webpagelist.tpl'), array(
+ '$listtitle' => t('Webpages'),
+ '$baseurl' => $url,
+ '$edit' => t('Edit'),
+ '$pages' => $pages,
+ '$channel' => $which,
+ '$view' => t('View'),
+ '$preview' => t('Preview'),
+ '$actions_txt' => t('Actions'),
'$pagelink_txt' => t('Page Link'),
- '$title_txt' => t('Title'),
- '$created_txt' => t('Created'),
- '$edited_txt' => t('Edited')
+ '$title_txt' => t('Title'),
+ '$created_txt' => t('Created'),
+ '$edited_txt' => t('Edited')
-));
+ ));
+ return $o;
}
diff --git a/mod/xchan.php b/mod/xchan.php
index 9d4cdcc22..69fbdb77d 100644
--- a/mod/xchan.php
+++ b/mod/xchan.php
@@ -3,28 +3,39 @@
function xchan_content(&$a) {
-
- $o .= '<h3>Xchan Lookup</h3>';
+ $o = '<h3>' . t('Xchan Lookup') . '</h3>';
$o .= '<form action="xchan" method="get">';
- $o .= 'Lookup xchan beginning with: <input type="text" style="width: 250px;" name="addr" value="' . $_GET['addr'] .'" />';
- $o .= '<input type="submit" name="submit" value="Submit" /></form>';
-
- $o .= '<br /><br />';
+ $o .= t('Lookup xchan beginning with (or webbie): ');
+ $o .= '<input type="text" style="width:250px;" name="addr" value="' . $_GET['addr'] .'">';
+ $o .= '<input type="submit" name="submit" value="' . t('Submit') .'"></form>';
+ $o .= '<br><br>';
- if(x($_GET,'addr')) {
+ if(x($_GET, 'addr')) {
$addr = trim($_GET['addr']);
- $r = q("select xchan_name from xchan where xchan_hash like '%s%%'",
+ $r = q("select * from xchan where xchan_hash like '%s%%' or xchan_addr = '%s' group by xchan_hash",
+ dbesc($addr),
dbesc($addr)
);
if($r) {
- foreach($r as $rr)
- $o .= $rr['xchan_name'] . EOL;
+ foreach($r as $rr) {
+ $o .= str_replace(array("\n", " "), array("<br>", "&nbsp;"), print_r($rr, true)) . EOL;
+
+ $s = q("select * from hubloc where hubloc_hash like '%s'",
+ dbesc($r[0]['xchan_hash'])
+ );
+
+ if($s) {
+ foreach($s as $rrr)
+ $o .= str_replace(array("\n", " "), array("<br>", "&nbsp;"), print_r($rrr, true)) . EOL;
+ }
+ }
}
else
notice( t('Not found.') . EOL);
+
}
return $o;
}
diff --git a/mod/xrd.php b/mod/xrd.php
index 4d6a530e4..4fa81c7f3 100644
--- a/mod/xrd.php
+++ b/mod/xrd.php
@@ -22,7 +22,13 @@ function xrd_init(&$a) {
if(! $r)
killme();
-// $salmon_key = salmon_key($r[0]['pubkey']);
+ $dspr = replace_macros(get_markup_template('xrd_diaspora.tpl'),array(
+ '$baseurl' => $a->get_baseurl(),
+ '$dspr_guid' => $r[0]['channel_guid'],
+ '$dspr_key' => base64_encode(pemtorsa($r[0]['channel_pubkey']))
+ ));
+
+ $salmon_key = salmon_key($r[0]['channel_pubkey']);
header('Access-Control-Allow-Origin: *');
header("Content-type: text/xml");
@@ -34,15 +40,15 @@ function xrd_init(&$a) {
'$nick' => $r[0]['channel_address'],
'$accturi' => $uri,
'$profile_url' => $a->get_baseurl() . '/channel/' . $r[0]['channel_address'],
-// '$hcard_url' => $a->get_baseurl() . '/hcard/' . $r[0]['channel_address'],
+ '$hcard_url' => $a->get_baseurl() . '/hcard/' . $r[0]['channel_address'],
'$atom' => $a->get_baseurl() . '/feed/' . $r[0]['channel_address'],
'$zot_post' => $a->get_baseurl() . '/post/' . $r[0]['channel_address'],
'$poco_url' => $a->get_baseurl() . '/poco/' . $r[0]['channel_address'],
'$photo' => $a->get_baseurl() . '/photo/profile/l/' . $r[0]['channel_id'],
-// '$dspr' => $dspr,
+ '$dspr' => $dspr,
// '$salmon' => $a->get_baseurl() . '/salmon/' . $r[0]['channel_address'],
// '$salmen' => $a->get_baseurl() . '/salmon/' . $r[0]['channel_address'] . '/mention',
-// '$modexp' => 'data:application/magic-public-key,' . $salmon_key,
+ '$modexp' => 'data:application/magic-public-key,' . $salmon_key,
// '$bigkey' => salmon_key($r[0]['pubkey'])
));
diff --git a/mod/zfinger.php b/mod/zfinger.php
index d1493da03..6f4febc6f 100644
--- a/mod/zfinger.php
+++ b/mod/zfinger.php
@@ -74,12 +74,12 @@ function zfinger_init(&$a) {
*/
$r = q("select channel.*, xchan.* from channel left join xchan on channel_hash = xchan_hash
- where ( channel_pageflags & %d ) order by channel_id limit 1",
+ where ( channel_pageflags & %d )>0 order by channel_id limit 1",
intval(PAGE_SYSTEM)
);
if(! $r) {
$r = q("select channel.*, xchan.* from channel left join xchan on channel_hash = xchan_hash
- where not ( channel_pageflags & %d ) order by channel_id limit 1",
+ where not ( channel_pageflags & %d )>0 order by channel_id limit 1",
intval(PAGE_REMOVED)
);
}
@@ -108,6 +108,21 @@ function zfinger_init(&$a) {
if($deleted || $censored)
$searchable = false;
+ $public_forum = false;
+
+ $role = get_pconfig($e['channel_id'],'system','permissions_role');
+ if($role === 'forum') {
+ $public_forum = true;
+ }
+ else {
+ // check if it has characteristics of a public forum based on custom permissions.
+ $t = q("select abook_my_perms from abook where abook_channel = %d and (abook_flags & %d)>0 limit 1",
+ intval($e['channel_id']),
+ intval(ABOOK_FLAG_SELF)
+ );
+ if($t && ($t[0]['abook_my_perms'] & PERMS_W_TAGWALL))
+ $public_forum = true;
+ }
// This is for birthdays and keywords, but must check access permissions
@@ -174,6 +189,7 @@ function zfinger_init(&$a) {
$ret['target_sig'] = $zsig;
$ret['searchable'] = $searchable;
$ret['adult_content'] = $adult_channel;
+ $ret['public_forum'] = $public_forum;
if($deleted)
$ret['deleted'] = $deleted;
@@ -203,33 +219,16 @@ function zfinger_init(&$a) {
$permissions['connected'] = true;
}
- $ret['permissions'] = (($ztarget && $zkey) ? aes_encapsulate(json_encode($permissions),$zkey) : $permissions);
+ $ret['permissions'] = (($ztarget && $zkey) ? crypto_encapsulate(json_encode($permissions),$zkey) : $permissions);
if($permissions['view_profile'])
$ret['profile'] = $profile;
-
// array of (verified) hubs this channel uses
- $ret['locations'] = array();
-
- $x = zot_get_hublocs($e['channel_hash']);
- if($x && count($x)) {
- foreach($x as $hub) {
- if(! ($hub['hubloc_flags'] & HUBLOC_FLAGS_UNVERIFIED)) {
- $ret['locations'][] = array(
- 'host' => $hub['hubloc_host'],
- 'address' => $hub['hubloc_addr'],
- 'primary' => (($hub['hubloc_flags'] & HUBLOC_FLAGS_PRIMARY) ? true : false),
- 'url' => $hub['hubloc_url'],
- 'url_sig' => $hub['hubloc_url_sig'],
- 'callback' => $hub['hubloc_callback'],
- 'sitekey' => $hub['hubloc_sitekey'],
- 'deleted' => (($hub['hubloc_flags'] & HUBLOC_FLAGS_DELETED) ? true : false)
- );
- }
- }
- }
+ $x = zot_encode_locations($e);
+ if($x)
+ $ret['locations'] = $x;
$ret['site'] = array();
$ret['site']['url'] = z_root();
@@ -273,7 +272,6 @@ function zfinger_init(&$a) {
if($access_policy == ACCESS_TIERED)
$ret['site']['access_policy'] = 'tiered';
- require_once('include/account.php');
$ret['site']['accounts'] = account_total();
require_once('include/identity.php');
@@ -297,6 +295,7 @@ function zfinger_init(&$a) {
$ret['site']['sitename'] = get_config('system','sitename');
$ret['site']['sellpage'] = get_config('system','sellpage');
$ret['site']['location'] = get_config('system','site_location');
+ $ret['site']['realm'] = get_directory_realm();
}
call_hooks('zot_finger',$ret);
diff --git a/mod/zotfeed.php b/mod/zotfeed.php
index 480e886cd..9ad93c1d4 100644
--- a/mod/zotfeed.php
+++ b/mod/zotfeed.php
@@ -21,7 +21,7 @@ function zotfeed_init(&$a) {
$channel_address = ((argc() > 1) ? argv(1) : '');
if($channel_address) {
- $r = q("select channel_id, channel_name from channel where channel_address = '%s' and not (channel_pageflags & %d) limit 1",
+ $r = q("select channel_id, channel_name from channel where channel_address = '%s' and not (channel_pageflags & %d)>0 limit 1",
dbesc(argv(1)),
intval(PAGE_REMOVED)
);
@@ -38,7 +38,7 @@ function zotfeed_init(&$a) {
logger('zotfeed request: ' . $r[0]['channel_name'], LOGGER_DEBUG);
- $result['messages'] = zot_feed($r[0]['channel_id'],$observer['xchan_hash'],$mindate);
+ $result['messages'] = zot_feed($r[0]['channel_id'],$observer['xchan_hash'],array('mindate' => $mindate));
$result['success'] = true;
json_return_and_die($result);
diff --git a/util/README b/util/README
index aceade3e2..9d8fe299c 100644
--- a/util/README
+++ b/util/README
@@ -115,7 +115,7 @@ When strings are added or modified in source, you could run
to extract strings from source files and join them with the existing .po file:
new strings are added, the existing are not overwritten.
-If you already translated Friendica using strings.php, you could import your old
+If you already translated the RedMatrix using strings.php, you could import your old
translation to messages.po. Run:
$ php util/php2po.php view/<language>/strings.php
diff --git a/util/messages.po b/util/messages.po
index 013a2e788..1a05e4cac 100644
--- a/util/messages.po
+++ b/util/messages.po
@@ -6,9 +6,9 @@
#, fuzzy
msgid ""
msgstr ""
-"Project-Id-Version: 2014-07-11.733\n"
+"Project-Id-Version: 2015-01-02.907\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2014-07-11 00:03-0700\n"
+"POT-Creation-Date: 2015-01-02 00:04-0800\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
@@ -17,1251 +17,1281 @@ msgstr ""
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-#: ../../include/dba/dba_driver.php:50
+#: ../../include/dba/dba_driver.php:142
#, php-format
msgid "Cannot locate DNS info for database server '%s'"
msgstr ""
-#: ../../include/photo/photo_driver.php:643 ../../include/photos.php:51
+#: ../../include/photo/photo_driver.php:680 ../../include/photos.php:52
#: ../../mod/profile_photo.php:142 ../../mod/profile_photo.php:301
-#: ../../mod/profile_photo.php:421 ../../mod/photos.php:91
-#: ../../mod/photos.php:653 ../../mod/photos.php:675
+#: ../../mod/profile_photo.php:423 ../../mod/photos.php:91
+#: ../../mod/photos.php:654
msgid "Profile Photos"
msgstr ""
-#: ../../include/oembed.php:171
-msgid "Embedded content"
+#: ../../include/items.php:382 ../../mod/group.php:68
+#: ../../mod/subthread.php:49 ../../mod/profperm.php:23 ../../mod/like.php:246
+#: ../../index.php:389
+msgid "Permission denied"
msgstr ""
-#: ../../include/oembed.php:180
-msgid "Embedding disabled"
+#: ../../include/items.php:969 ../../include/items.php:1014
+msgid "(Unknown)"
msgstr ""
-#: ../../include/notify.php:23
-msgid "created a new post"
+#: ../../include/items.php:1171
+msgid "Visible to anybody on the internet."
msgstr ""
-#: ../../include/notify.php:24
+#: ../../include/items.php:1173
+msgid "Visible to you only."
+msgstr ""
+
+#: ../../include/items.php:1175
+msgid "Visible to anybody in this network."
+msgstr ""
+
+#: ../../include/items.php:1177
+msgid "Visible to anybody authenticated."
+msgstr ""
+
+#: ../../include/items.php:1179
#, php-format
-msgid "commented on %s's post"
+msgid "Visible to anybody on %s."
msgstr ""
-#: ../../include/conversation.php:120 ../../include/text.php:1730
-#: ../../mod/subthread.php:72 ../../mod/subthread.php:174
-#: ../../mod/tagger.php:45 ../../mod/like.php:254
-msgid "photo"
+#: ../../include/items.php:1181
+msgid "Visible to all connections."
msgstr ""
-#: ../../include/conversation.php:123 ../../include/text.php:1733
-#: ../../mod/tagger.php:49
-msgid "event"
+#: ../../include/items.php:1183
+msgid "Visible to approved connections."
msgstr ""
-#: ../../include/conversation.php:126 ../../mod/like.php:72
-msgid "channel"
+#: ../../include/items.php:1185
+msgid "Visible to specific connections."
msgstr ""
-#: ../../include/conversation.php:148 ../../include/text.php:1736
-#: ../../mod/subthread.php:72 ../../mod/subthread.php:174
-#: ../../mod/tagger.php:53 ../../mod/like.php:254
-msgid "status"
+#: ../../include/items.php:3952 ../../mod/display.php:32
+#: ../../mod/thing.php:76 ../../mod/filestorage.php:26 ../../mod/admin.php:168
+#: ../../mod/admin.php:896 ../../mod/admin.php:1099 ../../mod/viewsrc.php:20
+msgid "Item not found."
msgstr ""
-#: ../../include/conversation.php:150 ../../include/text.php:1738
-#: ../../mod/tagger.php:55
-msgid "comment"
+#: ../../include/items.php:4019 ../../include/photos.php:15
+#: ../../include/attach.php:116 ../../include/attach.php:163
+#: ../../include/attach.php:226 ../../include/attach.php:240
+#: ../../include/attach.php:280 ../../include/attach.php:294
+#: ../../include/attach.php:318 ../../include/attach.php:511
+#: ../../include/attach.php:585 ../../include/chat.php:116
+#: ../../mod/mood.php:112 ../../mod/register.php:72 ../../mod/mitem.php:106
+#: ../../mod/achievements.php:30 ../../mod/group.php:9 ../../mod/poke.php:128
+#: ../../mod/api.php:26 ../../mod/api.php:31 ../../mod/profiles.php:188
+#: ../../mod/profiles.php:559 ../../mod/authtest.php:13
+#: ../../mod/profile.php:64 ../../mod/profile.php:72 ../../mod/block.php:22
+#: ../../mod/block.php:72 ../../mod/delegate.php:6 ../../mod/sources.php:66
+#: ../../mod/events.php:195 ../../mod/channel.php:90 ../../mod/channel.php:201
+#: ../../mod/channel.php:244 ../../mod/chat.php:90 ../../mod/chat.php:95
+#: ../../mod/regmod.php:17 ../../mod/editpost.php:13 ../../mod/common.php:35
+#: ../../mod/settings.php:554 ../../mod/connections.php:169
+#: ../../mod/manage.php:6 ../../mod/connedit.php:266 ../../mod/mail.php:111
+#: ../../mod/webpages.php:67 ../../mod/bookmarks.php:46
+#: ../../mod/blocks.php:67 ../../mod/blocks.php:75 ../../mod/editblock.php:65
+#: ../../mod/pdledit.php:21 ../../mod/editlayout.php:64
+#: ../../mod/editlayout.php:89 ../../mod/editwebpage.php:64
+#: ../../mod/editwebpage.php:86 ../../mod/editwebpage.php:118
+#: ../../mod/profile_photo.php:263 ../../mod/profile_photo.php:276
+#: ../../mod/like.php:154 ../../mod/thing.php:247 ../../mod/thing.php:264
+#: ../../mod/thing.php:299 ../../mod/fsuggest.php:78
+#: ../../mod/filestorage.php:18 ../../mod/filestorage.php:67
+#: ../../mod/filestorage.php:82 ../../mod/filestorage.php:109
+#: ../../mod/locs.php:71 ../../mod/item.php:191 ../../mod/item.php:199
+#: ../../mod/item.php:975 ../../mod/suggest.php:26 ../../mod/layouts.php:67
+#: ../../mod/layouts.php:74 ../../mod/layouts.php:85 ../../mod/setup.php:207
+#: ../../mod/menu.php:61 ../../mod/invite.php:13 ../../mod/invite.php:104
+#: ../../mod/network.php:12 ../../mod/notifications.php:66
+#: ../../mod/viewconnections.php:22 ../../mod/viewconnections.php:27
+#: ../../mod/viewsrc.php:14 ../../mod/message.php:16
+#: ../../mod/new_channel.php:68 ../../mod/new_channel.php:99
+#: ../../mod/photos.php:68 ../../mod/page.php:28 ../../mod/page.php:78
+#: ../../mod/appman.php:66 ../../mod/service_limits.php:7 ../../index.php:190
+#: ../../index.php:390
+msgid "Permission denied."
msgstr ""
-#: ../../include/conversation.php:164 ../../mod/like.php:291
-#, php-format
-msgid "%1$s likes %2$s's %3$s"
+#: ../../include/items.php:4410 ../../mod/group.php:38 ../../mod/group.php:140
+msgid "Collection not found."
msgstr ""
-#: ../../include/conversation.php:167 ../../mod/like.php:293
-#, php-format
-msgid "%1$s doesn't like %2$s's %3$s"
+#: ../../include/items.php:4425
+msgid "Collection is empty."
msgstr ""
-#: ../../include/conversation.php:204
+#: ../../include/items.php:4432
#, php-format
-msgid "%1$s is now connected with %2$s"
+msgid "Collection: %s"
msgstr ""
-#: ../../include/conversation.php:239
+#: ../../include/items.php:4443
#, php-format
-msgid "%1$s poked %2$s"
+msgid "Connection: %s"
msgstr ""
-#: ../../include/conversation.php:243 ../../include/text.php:895
-msgid "poked"
+#: ../../include/items.php:4446
+msgid "Connection not found."
msgstr ""
-#: ../../include/conversation.php:261 ../../mod/mood.php:63
-#, php-format
-msgctxt "mood"
-msgid "%1$s is %2$s"
+#: ../../include/menu.php:42 ../../include/page_widgets.php:8
+#: ../../include/page_widgets.php:36 ../../include/RedDAV/RedBrowser.php:263
+#: ../../include/ItemObject.php:100 ../../include/apps.php:254
+#: ../../mod/editpost.php:112 ../../mod/settings.php:639
+#: ../../mod/connections.php:381 ../../mod/connections.php:394
+#: ../../mod/connections.php:413 ../../mod/webpages.php:162
+#: ../../mod/blocks.php:132 ../../mod/editblock.php:143
+#: ../../mod/editlayout.php:139 ../../mod/editwebpage.php:174
+#: ../../mod/thing.php:233 ../../mod/layouts.php:167 ../../mod/menu.php:78
+msgid "Edit"
msgstr ""
-#: ../../include/conversation.php:634 ../../include/ItemObject.php:114
-msgid "Select"
+#: ../../include/message.php:18
+msgid "No recipient provided."
msgstr ""
-#: ../../include/conversation.php:635 ../../include/reddav.php:1290
-#: ../../include/apps.php:241 ../../include/ItemObject.php:108
-#: ../../mod/settings.php:578 ../../mod/connedit.php:398
-#: ../../mod/photos.php:1046 ../../mod/group.php:176 ../../mod/admin.php:758
-#: ../../mod/admin.php:888 ../../mod/thing.php:236
-msgid "Delete"
+#: ../../include/message.php:23
+msgid "[no subject]"
msgstr ""
-#: ../../include/conversation.php:642 ../../include/ItemObject.php:89
-#: ../../mod/photos.php:844
-msgid "Private Message"
+#: ../../include/message.php:45
+msgid "Unable to determine sender."
msgstr ""
-#: ../../include/conversation.php:649 ../../include/ItemObject.php:182
-msgid "Message is verified"
+#: ../../include/message.php:200
+msgid "Stored post could not be verified."
msgstr ""
-#: ../../include/conversation.php:669
-#, php-format
-msgid "View %s's profile @ %s"
+#: ../../include/network.php:590
+msgid "view full size"
msgstr ""
-#: ../../include/conversation.php:683
-msgid "Categories:"
+#: ../../include/permissions.php:26
+msgid "Can view my normal stream and posts"
msgstr ""
-#: ../../include/conversation.php:684
-msgid "Filed under:"
+#: ../../include/permissions.php:27
+msgid "Can view my default channel profile"
msgstr ""
-#: ../../include/conversation.php:693 ../../include/ItemObject.php:250
-#, php-format
-msgid " from %s"
+#: ../../include/permissions.php:28
+msgid "Can view my photo albums"
msgstr ""
-#: ../../include/conversation.php:696 ../../include/ItemObject.php:253
-#, php-format
-msgid "last edited: %s"
+#: ../../include/permissions.php:29
+msgid "Can view my connections"
msgstr ""
-#: ../../include/conversation.php:697 ../../include/ItemObject.php:254
-#, php-format
-msgid "Expires: %s"
+#: ../../include/permissions.php:30
+msgid "Can view my file storage"
msgstr ""
-#: ../../include/conversation.php:712
-msgid "View in context"
+#: ../../include/permissions.php:31
+msgid "Can view my webpages"
msgstr ""
-#: ../../include/conversation.php:714 ../../include/conversation.php:1130
-#: ../../include/ItemObject.php:294 ../../mod/editblock.php:120
-#: ../../mod/editlayout.php:115 ../../mod/editpost.php:121
-#: ../../mod/editwebpage.php:152 ../../mod/photos.php:977
-#: ../../mod/mail.php:218 ../../mod/mail.php:333
-msgid "Please wait"
+#: ../../include/permissions.php:34
+msgid "Can send me their channel stream and posts"
msgstr ""
-#: ../../include/conversation.php:841
-msgid "remove"
+#: ../../include/permissions.php:35
+msgid "Can post on my channel page (\"wall\")"
msgstr ""
-#: ../../include/conversation.php:845
-msgid "Loading..."
+#: ../../include/permissions.php:36
+msgid "Can comment on or like my posts"
msgstr ""
-#: ../../include/conversation.php:846
-msgid "Delete Selected Items"
+#: ../../include/permissions.php:37
+msgid "Can send me private mail messages"
msgstr ""
-#: ../../include/conversation.php:937
-msgid "View Source"
+#: ../../include/permissions.php:38
+msgid "Can post photos to my photo albums"
msgstr ""
-#: ../../include/conversation.php:938
-msgid "Follow Thread"
+#: ../../include/permissions.php:39
+msgid "Can like/dislike stuff"
msgstr ""
-#: ../../include/conversation.php:939
-msgid "View Status"
+#: ../../include/permissions.php:39
+msgid "Profiles and things other than posts/comments"
msgstr ""
-#: ../../include/conversation.php:940 ../../include/nav.php:81
-#: ../../mod/connedit.php:351 ../../mod/connedit.php:465
-msgid "View Profile"
+#: ../../include/permissions.php:41
+msgid "Can forward to all my channel contacts via post @mentions"
msgstr ""
-#: ../../include/conversation.php:941
-msgid "View Photos"
+#: ../../include/permissions.php:41
+msgid "Advanced - useful for creating group forum channels"
msgstr ""
-#: ../../include/conversation.php:942
-msgid "Matrix Activity"
+#: ../../include/permissions.php:42
+msgid "Can chat with me (when available)"
msgstr ""
-#: ../../include/conversation.php:943
-msgid "Edit Contact"
+#: ../../include/permissions.php:43
+msgid "Can write to my file storage"
msgstr ""
-#: ../../include/conversation.php:944
-msgid "Send PM"
+#: ../../include/permissions.php:44
+msgid "Can edit my webpages"
msgstr ""
-#: ../../include/conversation.php:945 ../../include/apps.php:140
-msgid "Poke"
+#: ../../include/permissions.php:46
+msgid "Can source my public posts in derived channels"
msgstr ""
-#: ../../include/conversation.php:1001
-#, php-format
-msgid "%s likes this."
+#: ../../include/permissions.php:46
+msgid "Somewhat advanced - very useful in open communities"
msgstr ""
-#: ../../include/conversation.php:1001
-#, php-format
-msgid "%s doesn't like this."
+#: ../../include/permissions.php:48
+msgid "Can administer my channel resources"
msgstr ""
-#: ../../include/conversation.php:1005
-#, php-format
-msgid "<span %1$s>%2$d people</span> like this."
-msgid_plural "<span %1$s>%2$d people</span> like this."
-msgstr[0] ""
-msgstr[1] ""
+#: ../../include/permissions.php:48
+msgid "Extremely advanced. Leave this alone unless you know what you are doing"
+msgstr ""
-#: ../../include/conversation.php:1007
-#, php-format
-msgid "<span %1$s>%2$d people</span> don't like this."
-msgid_plural "<span %1$s>%2$d people</span> don't like this."
-msgstr[0] ""
-msgstr[1] ""
+#: ../../include/permissions.php:810
+msgid "Social Networking"
+msgstr ""
-#: ../../include/conversation.php:1013
-msgid "and"
+#: ../../include/permissions.php:810 ../../include/permissions.php:811
+#: ../../include/permissions.php:812
+msgid "Mostly Public"
msgstr ""
-#: ../../include/conversation.php:1016
-#, php-format
-msgid ", and %d other people"
-msgid_plural ", and %d other people"
-msgstr[0] ""
-msgstr[1] ""
+#: ../../include/permissions.php:810 ../../include/permissions.php:811
+#: ../../include/permissions.php:812
+msgid "Restricted"
+msgstr ""
-#: ../../include/conversation.php:1017
-#, php-format
-msgid "%s like this."
+#: ../../include/permissions.php:810 ../../include/permissions.php:811
+msgid "Private"
msgstr ""
-#: ../../include/conversation.php:1017
+#: ../../include/permissions.php:811
+msgid "Community Forum"
+msgstr ""
+
+#: ../../include/permissions.php:812
+msgid "Feed Republish"
+msgstr ""
+
+#: ../../include/permissions.php:813
+msgid "Special Purpose"
+msgstr ""
+
+#: ../../include/permissions.php:813
+msgid "Celebrity/Soapbox"
+msgstr ""
+
+#: ../../include/permissions.php:813
+msgid "Group Repository"
+msgstr ""
+
+#: ../../include/permissions.php:814 ../../include/profile_selectors.php:6
+#: ../../include/profile_selectors.php:23
+#: ../../include/profile_selectors.php:61
+#: ../../include/profile_selectors.php:97
+msgid "Other"
+msgstr ""
+
+#: ../../include/permissions.php:814
+msgid "Custom/Expert Mode"
+msgstr ""
+
+#: ../../include/notify.php:23
+msgid "created a new post"
+msgstr ""
+
+#: ../../include/notify.php:24
#, php-format
-msgid "%s don't like this."
+msgid "commented on %s's post"
msgstr ""
-#: ../../include/conversation.php:1074
-msgid "Visible to <strong>everybody</strong>"
+#: ../../include/taxonomy.php:210 ../../include/taxonomy.php:229
+msgid "Tags"
msgstr ""
-#: ../../include/conversation.php:1075 ../../mod/mail.php:167
-#: ../../mod/mail.php:266
-msgid "Please enter a link URL:"
+#: ../../include/taxonomy.php:250 ../../include/contact_widgets.php:92
+#: ../../include/widgets.php:35
+msgid "Categories"
msgstr ""
-#: ../../include/conversation.php:1076
-msgid "Please enter a video link/URL:"
+#: ../../include/taxonomy.php:269
+msgid "Keywords"
msgstr ""
-#: ../../include/conversation.php:1077
-msgid "Please enter an audio link/URL:"
+#: ../../include/taxonomy.php:294
+msgid "have"
msgstr ""
-#: ../../include/conversation.php:1078
-msgid "Tag term:"
+#: ../../include/taxonomy.php:294
+msgid "has"
msgstr ""
-#: ../../include/conversation.php:1079 ../../mod/filer.php:49
-msgid "Save to Folder:"
+#: ../../include/taxonomy.php:295
+msgid "want"
msgstr ""
-#: ../../include/conversation.php:1080
-msgid "Where are you right now?"
+#: ../../include/taxonomy.php:295
+msgid "wants"
msgstr ""
-#: ../../include/conversation.php:1081 ../../mod/editpost.php:52
-#: ../../mod/mail.php:168 ../../mod/mail.php:267
-msgid "Expires YYYY-MM-DD HH:MM"
+#: ../../include/taxonomy.php:296 ../../include/ItemObject.php:221
+msgid "like"
msgstr ""
-#: ../../include/conversation.php:1091 ../../include/page_widgets.php:40
-#: ../../include/ItemObject.php:592 ../../mod/editblock.php:141
-#: ../../mod/editlayout.php:135 ../../mod/editpost.php:140
-#: ../../mod/editwebpage.php:174 ../../mod/photos.php:997
-#: ../../mod/webpages.php:124
-msgid "Preview"
+#: ../../include/taxonomy.php:296
+msgid "likes"
msgstr ""
-#: ../../include/conversation.php:1105 ../../mod/photos.php:976
-#: ../../mod/layouts.php:113
-msgid "Share"
+#: ../../include/taxonomy.php:297 ../../include/ItemObject.php:222
+msgid "dislike"
msgstr ""
-#: ../../include/conversation.php:1107 ../../mod/editwebpage.php:139
-msgid "Page link title"
+#: ../../include/taxonomy.php:297
+msgid "dislikes"
msgstr ""
-#: ../../include/conversation.php:1110
-msgid "Post as"
+#: ../../include/taxonomy.php:380 ../../include/identity.php:1151
+#: ../../include/ItemObject.php:146 ../../mod/photos.php:1024
+msgctxt "noun"
+msgid "Like"
+msgid_plural "Likes"
+msgstr[0] ""
+msgstr[1] ""
+
+#: ../../include/page_widgets.php:6
+msgid "New Page"
msgstr ""
-#: ../../include/conversation.php:1111 ../../mod/editblock.php:112
-#: ../../mod/editlayout.php:107 ../../mod/editpost.php:113
-#: ../../mod/editwebpage.php:144 ../../mod/mail.php:215 ../../mod/mail.php:329
-msgid "Upload photo"
+#: ../../include/page_widgets.php:39 ../../mod/webpages.php:165
+#: ../../mod/blocks.php:135 ../../mod/layouts.php:171
+msgid "View"
msgstr ""
-#: ../../include/conversation.php:1112
-msgid "upload photo"
+#: ../../include/page_widgets.php:40 ../../include/conversation.php:1102
+#: ../../include/ItemObject.php:638 ../../mod/webpages.php:166
+#: ../../mod/photos.php:995
+msgid "Preview"
msgstr ""
-#: ../../include/conversation.php:1113 ../../mod/editblock.php:113
-#: ../../mod/editlayout.php:108 ../../mod/editpost.php:114
-#: ../../mod/editwebpage.php:145 ../../mod/mail.php:216 ../../mod/mail.php:330
-msgid "Attach file"
+#: ../../include/page_widgets.php:41 ../../mod/webpages.php:167
+msgid "Actions"
msgstr ""
-#: ../../include/conversation.php:1114
-msgid "attach file"
+#: ../../include/page_widgets.php:42 ../../mod/webpages.php:168
+msgid "Page Link"
msgstr ""
-#: ../../include/conversation.php:1115 ../../mod/editblock.php:114
-#: ../../mod/editlayout.php:109 ../../mod/editpost.php:115
-#: ../../mod/editwebpage.php:146 ../../mod/mail.php:217 ../../mod/mail.php:331
-msgid "Insert web link"
+#: ../../include/page_widgets.php:43 ../../mod/webpages.php:169
+msgid "Title"
msgstr ""
-#: ../../include/conversation.php:1116
-msgid "web link"
+#: ../../include/page_widgets.php:44 ../../mod/webpages.php:170
+msgid "Created"
msgstr ""
-#: ../../include/conversation.php:1117
-msgid "Insert video link"
+#: ../../include/page_widgets.php:45 ../../mod/webpages.php:171
+msgid "Edited"
msgstr ""
-#: ../../include/conversation.php:1118
-msgid "video link"
+#: ../../include/oembed.php:171
+msgid "Embedded content"
msgstr ""
-#: ../../include/conversation.php:1119
-msgid "Insert audio link"
+#: ../../include/oembed.php:180
+msgid "Embedding disabled"
msgstr ""
-#: ../../include/conversation.php:1120
-msgid "audio link"
+#: ../../include/photos.php:105
+#, php-format
+msgid "Image exceeds website size limit of %lu bytes"
msgstr ""
-#: ../../include/conversation.php:1121 ../../mod/editblock.php:118
-#: ../../mod/editlayout.php:113 ../../mod/editpost.php:119
-#: ../../mod/editwebpage.php:150
-msgid "Set your location"
+#: ../../include/photos.php:112
+msgid "Image file is empty."
msgstr ""
-#: ../../include/conversation.php:1122
-msgid "set location"
+#: ../../include/photos.php:141 ../../mod/profile_photo.php:216
+msgid "Unable to process image"
msgstr ""
-#: ../../include/conversation.php:1123 ../../mod/editblock.php:119
-#: ../../mod/editlayout.php:114 ../../mod/editpost.php:120
-#: ../../mod/editwebpage.php:151
-msgid "Clear browser location"
+#: ../../include/photos.php:213
+msgid "Photo storage failed."
msgstr ""
-#: ../../include/conversation.php:1124
-msgid "clear location"
+#: ../../include/photos.php:341 ../../include/conversation.php:1533
+msgid "Photo Albums"
msgstr ""
-#: ../../include/conversation.php:1126 ../../mod/editblock.php:132
-#: ../../mod/editlayout.php:126 ../../mod/editpost.php:132
-#: ../../mod/editwebpage.php:167
-msgid "Set title"
+#: ../../include/photos.php:345
+msgid "Upload New Photos"
msgstr ""
-#: ../../include/conversation.php:1129 ../../mod/editblock.php:135
-#: ../../mod/editlayout.php:129 ../../mod/editpost.php:134
-#: ../../mod/editwebpage.php:169
-msgid "Categories (comma-separated list)"
+#: ../../include/activities.php:39
+msgid " and "
msgstr ""
-#: ../../include/conversation.php:1131 ../../mod/editblock.php:121
-#: ../../mod/editlayout.php:116 ../../mod/editpost.php:122
-#: ../../mod/editwebpage.php:153
-msgid "Permission settings"
+#: ../../include/activities.php:47
+msgid "public profile"
msgstr ""
-#: ../../include/conversation.php:1132
-msgid "permissions"
+#: ../../include/activities.php:56
+#, php-format
+msgid "%1$s changed %2$s to &ldquo;%3$s&rdquo;"
msgstr ""
-#: ../../include/conversation.php:1139 ../../mod/editblock.php:129
-#: ../../mod/editlayout.php:123 ../../mod/editpost.php:129
-#: ../../mod/editwebpage.php:162
-msgid "Public post"
+#: ../../include/activities.php:57
+#, php-format
+msgid "Visit %1$s's %2$s"
msgstr ""
-#: ../../include/conversation.php:1141 ../../mod/editblock.php:136
-#: ../../mod/editlayout.php:130 ../../mod/editpost.php:135
-#: ../../mod/editwebpage.php:170
-msgid "Example: bob@example.com, mary@example.com"
+#: ../../include/activities.php:60
+#, php-format
+msgid "%1$s has an updated %2$s, changing %3$s."
msgstr ""
-#: ../../include/conversation.php:1154 ../../mod/editblock.php:146
-#: ../../mod/editlayout.php:140 ../../mod/editpost.php:146
-#: ../../mod/editwebpage.php:179 ../../mod/mail.php:222 ../../mod/mail.php:336
-msgid "Set expiration date"
+#: ../../include/bb2diaspora.php:366
+msgid "Attachments:"
msgstr ""
-#: ../../include/conversation.php:1156 ../../include/ItemObject.php:595
-#: ../../mod/editpost.php:148 ../../mod/mail.php:224 ../../mod/mail.php:338
-msgid "Encrypt text"
+#: ../../include/bb2diaspora.php:445 ../../include/event.php:11
+msgid "l F d, Y \\@ g:i A"
msgstr ""
-#: ../../include/conversation.php:1158 ../../mod/editpost.php:150
-msgid "OK"
+#: ../../include/bb2diaspora.php:447
+msgid "Redmatrix event notification:"
msgstr ""
-#: ../../include/conversation.php:1159 ../../mod/settings.php:516
-#: ../../mod/settings.php:542 ../../mod/editpost.php:151
-#: ../../mod/fbrowser.php:82 ../../mod/fbrowser.php:117 ../../mod/tagrm.php:11
-#: ../../mod/tagrm.php:94
-msgid "Cancel"
+#: ../../include/bb2diaspora.php:451 ../../include/event.php:20
+msgid "Starts:"
msgstr ""
-#: ../../include/conversation.php:1401
-msgid "Discover"
+#: ../../include/bb2diaspora.php:459 ../../include/event.php:30
+msgid "Finishes:"
msgstr ""
-#: ../../include/conversation.php:1404
-msgid "Imported public streams"
+#: ../../include/bb2diaspora.php:467 ../../include/identity.php:894
+#: ../../include/event.php:40 ../../mod/events.php:590
+#: ../../mod/directory.php:199
+msgid "Location:"
msgstr ""
-#: ../../include/conversation.php:1409
-msgid "Commented Order"
+#: ../../include/attach.php:221 ../../include/attach.php:275
+msgid "Item was not found."
msgstr ""
-#: ../../include/conversation.php:1412
-msgid "Sort by Comment Date"
+#: ../../include/attach.php:331
+msgid "No source file."
msgstr ""
-#: ../../include/conversation.php:1416
-msgid "Posted Order"
+#: ../../include/attach.php:348
+msgid "Cannot locate file to replace"
msgstr ""
-#: ../../include/conversation.php:1419
-msgid "Sort by Post Date"
+#: ../../include/attach.php:366
+msgid "Cannot locate file to revise/update"
msgstr ""
-#: ../../include/conversation.php:1424 ../../include/widgets.php:82
-msgid "Personal"
+#: ../../include/attach.php:377
+#, php-format
+msgid "File exceeds size limit of %d"
msgstr ""
-#: ../../include/conversation.php:1427
-msgid "Posts that mention or involve you"
+#: ../../include/attach.php:389
+#, php-format
+msgid "You have reached your limit of %1$.0f Mbytes attachment storage."
msgstr ""
-#: ../../include/conversation.php:1433 ../../mod/connections.php:211
-#: ../../mod/connections.php:224 ../../mod/menu.php:61
-msgid "New"
+#: ../../include/attach.php:472
+msgid "File upload failed. Possible system limit or action terminated."
msgstr ""
-#: ../../include/conversation.php:1436
-msgid "Activity Stream - by date"
+#: ../../include/attach.php:484
+msgid "Stored file could not be verified. Upload failed."
msgstr ""
-#: ../../include/conversation.php:1442
-msgid "Starred"
+#: ../../include/attach.php:526 ../../include/attach.php:543
+msgid "Path not available."
msgstr ""
-#: ../../include/conversation.php:1445
-msgid "Favourite Posts"
+#: ../../include/attach.php:590
+msgid "Empty pathname"
msgstr ""
-#: ../../include/conversation.php:1452
-msgid "Spam"
+#: ../../include/attach.php:606
+msgid "duplicate filename or path"
msgstr ""
-#: ../../include/conversation.php:1455
-msgid "Posts flagged as SPAM"
+#: ../../include/attach.php:630
+msgid "Path not found."
msgstr ""
-#: ../../include/conversation.php:1488 ../../mod/admin.php:892
-msgid "Channel"
+#: ../../include/attach.php:681
+msgid "mkdir failed."
msgstr ""
-#: ../../include/conversation.php:1491
-msgid "Status Messages and Posts"
+#: ../../include/attach.php:685
+msgid "database storage failed."
msgstr ""
-#: ../../include/conversation.php:1500
-msgid "About"
+#: ../../include/features.php:23
+msgid "General Features"
msgstr ""
-#: ../../include/conversation.php:1503
-msgid "Profile Details"
+#: ../../include/features.php:25
+msgid "Content Expiration"
msgstr ""
-#: ../../include/conversation.php:1509 ../../include/nav.php:84
-#: ../../include/apps.php:134 ../../mod/fbrowser.php:25
-msgid "Photos"
+#: ../../include/features.php:25
+msgid "Remove posts/comments and/or private messages at a future time"
msgstr ""
-#: ../../include/conversation.php:1512 ../../include/photos.php:313
-msgid "Photo Albums"
+#: ../../include/features.php:26
+msgid "Multiple Profiles"
msgstr ""
-#: ../../include/conversation.php:1518 ../../include/nav.php:85
-#: ../../include/reddav.php:1280 ../../include/apps.php:130
-#: ../../mod/fbrowser.php:114
-msgid "Files"
+#: ../../include/features.php:26
+msgid "Ability to create multiple profiles"
msgstr ""
-#: ../../include/conversation.php:1521
-msgid "Files and Storage"
+#: ../../include/features.php:27
+msgid "Advanced Profiles"
msgstr ""
-#: ../../include/conversation.php:1530 ../../include/conversation.php:1533
-msgid "Chatrooms"
+#: ../../include/features.php:27
+msgid "Additional profile sections and selections"
msgstr ""
-#: ../../include/conversation.php:1540 ../../include/nav.php:93
-#: ../../include/apps.php:124
-msgid "Bookmarks"
+#: ../../include/features.php:28
+msgid "Profile Import/Export"
msgstr ""
-#: ../../include/conversation.php:1543
-msgid "Saved Bookmarks"
+#: ../../include/features.php:28
+msgid "Save and load profile details across sites/channels"
msgstr ""
-#: ../../include/conversation.php:1551 ../../include/nav.php:95
-#: ../../include/apps.php:131 ../../mod/webpages.php:79
-msgid "Webpages"
+#: ../../include/features.php:29
+msgid "Web Pages"
msgstr ""
-#: ../../include/conversation.php:1554
-msgid "Manage Webpages"
+#: ../../include/features.php:29
+msgid "Provide managed web pages on your channel"
msgstr ""
-#: ../../include/page_widgets.php:6
-msgid "New Page"
+#: ../../include/features.php:30
+msgid "Private Notes"
msgstr ""
-#: ../../include/page_widgets.php:8 ../../include/page_widgets.php:36
-#: ../../include/reddav.php:1289 ../../include/apps.php:240
-#: ../../include/menu.php:42 ../../include/ItemObject.php:96
-#: ../../mod/settings.php:577 ../../mod/blocks.php:94
-#: ../../mod/connections.php:393 ../../mod/editblock.php:111
-#: ../../mod/editlayout.php:106 ../../mod/editpost.php:112
-#: ../../mod/editwebpage.php:143 ../../mod/thing.php:235
-#: ../../mod/layouts.php:112 ../../mod/menu.php:59 ../../mod/webpages.php:120
-msgid "Edit"
+#: ../../include/features.php:30
+msgid "Enables a tool to store notes and reminders"
msgstr ""
-#: ../../include/page_widgets.php:39 ../../mod/blocks.php:97
-#: ../../mod/layouts.php:116 ../../mod/webpages.php:123
-msgid "View"
+#: ../../include/features.php:34
+msgid "Navigation Channel Select"
msgstr ""
-#: ../../include/page_widgets.php:41 ../../mod/webpages.php:125
-msgid "Actions"
+#: ../../include/features.php:34
+msgid "Change channels directly from within the navigation dropdown menu"
msgstr ""
-#: ../../include/page_widgets.php:42 ../../mod/webpages.php:126
-msgid "Page Link"
+#: ../../include/features.php:38
+msgid "Extended Identity Sharing"
msgstr ""
-#: ../../include/page_widgets.php:43 ../../mod/webpages.php:127
-msgid "Title"
+#: ../../include/features.php:38
+msgid ""
+"Share your identity with all websites on the internet. When disabled, "
+"identity is only shared with sites in the matrix."
msgstr ""
-#: ../../include/page_widgets.php:44 ../../mod/webpages.php:128
-msgid "Created"
+#: ../../include/features.php:39
+msgid "Expert Mode"
msgstr ""
-#: ../../include/page_widgets.php:45 ../../mod/webpages.php:129
-msgid "Edited"
+#: ../../include/features.php:39
+msgid "Enable Expert Mode to provide advanced configuration options"
msgstr ""
-#: ../../include/security.php:301
+#: ../../include/features.php:40
+msgid "Premium Channel"
+msgstr ""
+
+#: ../../include/features.php:40
msgid ""
-"The form security token was not correct. This probably happened because the "
-"form has been opened for too long (>3 hours) before submitting it."
+"Allows you to set restrictions and terms on those that connect with your "
+"channel"
msgstr ""
-#: ../../include/account.php:23
-msgid "Not a valid email address"
+#: ../../include/features.php:45
+msgid "Post Composition Features"
msgstr ""
-#: ../../include/account.php:25
-msgid "Your email domain is not among those allowed on this site"
+#: ../../include/features.php:47
+msgid "Use Markdown"
msgstr ""
-#: ../../include/account.php:31
-msgid "Your email address is already registered at this site."
+#: ../../include/features.php:47
+msgid "Allow use of \"Markdown\" to format posts"
msgstr ""
-#: ../../include/account.php:64
-msgid "An invitation is required."
+#: ../../include/features.php:49 ../../include/widgets.php:527
+#: ../../mod/sources.php:88
+msgid "Channel Sources"
msgstr ""
-#: ../../include/account.php:68
-msgid "Invitation could not be verified."
+#: ../../include/features.php:49
+msgid "Automatically import channel content from other channels or feeds"
msgstr ""
-#: ../../include/account.php:119
-msgid "Please enter the required information."
+#: ../../include/features.php:50
+msgid "Even More Encryption"
msgstr ""
-#: ../../include/account.php:187
-msgid "Failed to store account information."
+#: ../../include/features.php:50
+msgid ""
+"Allow optional encryption of content end-to-end with a shared secret key"
msgstr ""
-#: ../../include/account.php:245
-#, php-format
-msgid "Registration confirmation for %s"
+#: ../../include/features.php:51
+msgid "Flag Adult Photos"
msgstr ""
-#: ../../include/account.php:313
-#, php-format
-msgid "Registration request at %s"
+#: ../../include/features.php:51
+msgid "Provide photo edit option to hide adult photos from default album view"
msgstr ""
-#: ../../include/account.php:315 ../../include/account.php:342
-#: ../../include/account.php:399
-msgid "Administrator"
+#: ../../include/features.php:56
+msgid "Network and Stream Filtering"
msgstr ""
-#: ../../include/account.php:337
-msgid "your registration password"
+#: ../../include/features.php:57
+msgid "Search by Date"
msgstr ""
-#: ../../include/account.php:340 ../../include/account.php:397
-#, php-format
-msgid "Registration details for %s"
+#: ../../include/features.php:57
+msgid "Ability to select posts by date ranges"
msgstr ""
-#: ../../include/account.php:406
-msgid "Account approved."
+#: ../../include/features.php:58
+msgid "Collections Filter"
msgstr ""
-#: ../../include/account.php:440
-#, php-format
-msgid "Registration revoked for %s"
+#: ../../include/features.php:58
+msgid "Enable widget to display Network posts only from selected collections"
msgstr ""
-#: ../../include/account.php:486
-msgid "Account verified. Please login."
+#: ../../include/features.php:59 ../../include/widgets.php:272
+msgid "Saved Searches"
msgstr ""
-#: ../../include/photos.php:15 ../../include/attach.php:119
-#: ../../include/attach.php:166 ../../include/attach.php:229
-#: ../../include/attach.php:243 ../../include/attach.php:283
-#: ../../include/attach.php:297 ../../include/attach.php:322
-#: ../../include/attach.php:513 ../../include/attach.php:585
-#: ../../include/chat.php:116 ../../include/items.php:3676
-#: ../../mod/mood.php:112 ../../mod/mitem.php:73 ../../mod/achievements.php:27
-#: ../../mod/settings.php:492 ../../mod/poke.php:128 ../../mod/api.php:26
-#: ../../mod/api.php:31 ../../mod/authtest.php:13 ../../mod/profile.php:64
-#: ../../mod/profile.php:72 ../../mod/block.php:22 ../../mod/block.php:72
-#: ../../mod/profile_photo.php:263 ../../mod/profile_photo.php:276
-#: ../../mod/blocks.php:29 ../../mod/blocks.php:44 ../../mod/profiles.php:152
-#: ../../mod/profiles.php:462 ../../mod/bookmarks.php:46
-#: ../../mod/channel.php:89 ../../mod/channel.php:193
-#: ../../mod/channel.php:236 ../../mod/chat.php:90 ../../mod/chat.php:95
-#: ../../mod/register.php:71 ../../mod/regmod.php:18 ../../mod/common.php:35
-#: ../../mod/network.php:12 ../../mod/connections.php:169
-#: ../../mod/connedit.php:221 ../../mod/delegate.php:6 ../../mod/page.php:30
-#: ../../mod/page.php:80 ../../mod/setup.php:203 ../../mod/editblock.php:34
-#: ../../mod/pdledit.php:21 ../../mod/editlayout.php:48
-#: ../../mod/editpost.php:13 ../../mod/editwebpage.php:44
-#: ../../mod/editwebpage.php:83 ../../mod/photos.php:68
-#: ../../mod/photos.php:526 ../../mod/sources.php:66 ../../mod/events.php:160
-#: ../../mod/filestorage.php:10 ../../mod/filestorage.php:59
-#: ../../mod/filestorage.php:75 ../../mod/filestorage.php:98
-#: ../../mod/fsuggest.php:78 ../../mod/suggest.php:26 ../../mod/group.php:9
-#: ../../mod/thing.php:249 ../../mod/thing.php:266 ../../mod/thing.php:301
-#: ../../mod/invite.php:13 ../../mod/invite.php:104 ../../mod/item.php:179
-#: ../../mod/item.php:187 ../../mod/item.php:908 ../../mod/layouts.php:27
-#: ../../mod/layouts.php:39 ../../mod/viewconnections.php:22
-#: ../../mod/viewconnections.php:27 ../../mod/viewsrc.php:12
-#: ../../mod/mail.php:108 ../../mod/manage.php:6 ../../mod/menu.php:44
-#: ../../mod/webpages.php:40 ../../mod/message.php:16
-#: ../../mod/new_channel.php:66 ../../mod/new_channel.php:97
-#: ../../mod/notifications.php:66 ../../mod/appman.php:66 ../../index.php:186
-#: ../../index.php:361
-msgid "Permission denied."
+#: ../../include/features.php:59
+msgid "Save search terms for re-use"
msgstr ""
-#: ../../include/photos.php:89
-#, php-format
-msgid "Image exceeds website size limit of %lu bytes"
+#: ../../include/features.php:60
+msgid "Network Personal Tab"
msgstr ""
-#: ../../include/photos.php:96
-msgid "Image file is empty."
+#: ../../include/features.php:60
+msgid "Enable tab to display only Network posts that you've interacted on"
msgstr ""
-#: ../../include/photos.php:123 ../../mod/profile_photo.php:216
-msgid "Unable to process image"
+#: ../../include/features.php:61
+msgid "Network New Tab"
msgstr ""
-#: ../../include/photos.php:186
-msgid "Photo storage failed."
+#: ../../include/features.php:61
+msgid "Enable tab to display all new Network activity"
msgstr ""
-#: ../../include/photos.php:317 ../../mod/photos.php:691
-#: ../../mod/photos.php:1193
-msgid "Upload New Photos"
+#: ../../include/features.php:62
+msgid "Affinity Tool"
msgstr ""
-#: ../../include/acl_selectors.php:240
-msgid "Visible to everybody"
+#: ../../include/features.php:62
+msgid "Filter stream activity by depth of relationships"
msgstr ""
-#: ../../include/acl_selectors.php:241
-msgid "Show"
+#: ../../include/features.php:63
+msgid "Suggest Channels"
msgstr ""
-#: ../../include/acl_selectors.php:242
-msgid "Don't show"
+#: ../../include/features.php:63
+msgid "Show channel suggestions"
msgstr ""
-#: ../../include/acl_selectors.php:248 ../../mod/chat.php:209
-#: ../../mod/photos.php:604 ../../mod/photos.php:952
-#: ../../mod/filestorage.php:128
-msgid "Permissions"
+#: ../../include/features.php:68
+msgid "Post/Comment Tools"
msgstr ""
-#: ../../include/acl_selectors.php:249 ../../include/ItemObject.php:289
-msgid "Close"
+#: ../../include/features.php:71
+msgid "Tagging"
msgstr ""
-#: ../../include/activities.php:39
-msgid " and "
+#: ../../include/features.php:71
+msgid "Ability to tag existing posts"
msgstr ""
-#: ../../include/activities.php:47
-msgid "public profile"
+#: ../../include/features.php:72
+msgid "Post Categories"
msgstr ""
-#: ../../include/activities.php:52
-#, php-format
-msgid "%1$s changed %2$s to &ldquo;%3$s&rdquo;"
+#: ../../include/features.php:72
+msgid "Add categories to your posts"
msgstr ""
-#: ../../include/activities.php:53
-#, php-format
-msgid "Visit %1$s's %2$s"
+#: ../../include/features.php:73 ../../include/contact_widgets.php:57
+#: ../../include/widgets.php:302
+msgid "Saved Folders"
msgstr ""
-#: ../../include/activities.php:56
-#, php-format
-msgid "%1$s has an updated %2$s, changing %3$s."
+#: ../../include/features.php:73
+msgid "Ability to file posts under folders"
msgstr ""
-#: ../../include/api.php:1016
-msgid "Public Timeline"
+#: ../../include/features.php:74
+msgid "Dislike Posts"
msgstr ""
-#: ../../include/attach.php:224 ../../include/attach.php:278
-msgid "Item was not found."
+#: ../../include/features.php:74
+msgid "Ability to dislike posts/comments"
msgstr ""
-#: ../../include/attach.php:335
-msgid "No source file."
+#: ../../include/features.php:75
+msgid "Star Posts"
msgstr ""
-#: ../../include/attach.php:352
-msgid "Cannot locate file to replace"
+#: ../../include/features.php:75
+msgid "Ability to mark special posts with a star indicator"
msgstr ""
-#: ../../include/attach.php:370
-msgid "Cannot locate file to revise/update"
+#: ../../include/features.php:76
+msgid "Tag Cloud"
msgstr ""
-#: ../../include/attach.php:381
-#, php-format
-msgid "File exceeds size limit of %d"
+#: ../../include/features.php:76
+msgid "Provide a personal tag cloud on your channel page"
msgstr ""
-#: ../../include/attach.php:393
-#, php-format
-msgid "You have reached your limit of %1$.0f Mbytes attachment storage."
+#: ../../include/RedDAV/RedBrowser.php:106
+#: ../../include/RedDAV/RedBrowser.php:262
+msgid "parent"
msgstr ""
-#: ../../include/attach.php:475
-msgid "File upload failed. Possible system limit or action terminated."
+#: ../../include/RedDAV/RedBrowser.php:130
+#: ../../include/RedDAV/RedBrowser.php:339
+msgid "Collection"
msgstr ""
-#: ../../include/attach.php:487
-msgid "Stored file could not be verified. Upload failed."
+#: ../../include/RedDAV/RedBrowser.php:133
+msgid "Principal"
msgstr ""
-#: ../../include/attach.php:528 ../../include/attach.php:545
-msgid "Path not available."
+#: ../../include/RedDAV/RedBrowser.php:136
+msgid "Addressbook"
msgstr ""
-#: ../../include/attach.php:590
-msgid "Empty pathname"
+#: ../../include/RedDAV/RedBrowser.php:139
+msgid "Calendar"
msgstr ""
-#: ../../include/attach.php:606
-msgid "duplicate filename or path"
+#: ../../include/RedDAV/RedBrowser.php:142
+msgid "Schedule Inbox"
msgstr ""
-#: ../../include/attach.php:630
-msgid "Path not found."
+#: ../../include/RedDAV/RedBrowser.php:145
+msgid "Schedule Outbox"
msgstr ""
-#: ../../include/attach.php:681
-msgid "mkdir failed."
+#: ../../include/RedDAV/RedBrowser.php:163 ../../include/conversation.php:992
+#: ../../include/apps.php:336 ../../include/apps.php:387
+#: ../../mod/connedit.php:513 ../../mod/photos.php:710
+#: ../../mod/photos.php:1129
+msgid "Unknown"
msgstr ""
-#: ../../include/attach.php:685
-msgid "database storage failed."
+#: ../../include/RedDAV/RedBrowser.php:225
+#, php-format
+msgid "%1$s used"
msgstr ""
-#: ../../include/plugin.php:502 ../../include/plugin.php:504
-msgid "Click here to upgrade."
+#: ../../include/RedDAV/RedBrowser.php:230
+#, php-format
+msgid "%1$s used of %2$s (%3$s&#37;)"
msgstr ""
-#: ../../include/plugin.php:510
-msgid "This action exceeds the limits set by your subscription plan."
+#: ../../include/RedDAV/RedBrowser.php:249 ../../include/conversation.php:1539
+#: ../../include/apps.php:135 ../../include/nav.php:106
+#: ../../mod/fbrowser.php:114
+msgid "Files"
msgstr ""
-#: ../../include/plugin.php:515
-msgid "This action is not available under your subscription plan."
+#: ../../include/RedDAV/RedBrowser.php:251
+msgid "Total"
msgstr ""
-#: ../../include/bb2diaspora.php:446 ../../include/event.php:11
-msgid "l F d, Y \\@ g:i A"
+#: ../../include/RedDAV/RedBrowser.php:258 ../../mod/settings.php:579
+#: ../../mod/settings.php:605 ../../mod/admin.php:866
+msgid "Name"
msgstr ""
-#: ../../include/bb2diaspora.php:452 ../../include/event.php:20
-msgid "Starts:"
+#: ../../include/RedDAV/RedBrowser.php:259
+msgid "Type"
msgstr ""
-#: ../../include/bb2diaspora.php:460 ../../include/event.php:30
-msgid "Finishes:"
+#: ../../include/RedDAV/RedBrowser.php:260
+msgid "Size"
msgstr ""
-#: ../../include/bb2diaspora.php:468 ../../include/event.php:40
-#: ../../include/identity.php:726 ../../mod/directory.php:156
-#: ../../mod/dirprofile.php:105 ../../mod/events.php:504
-msgid "Location:"
+#: ../../include/RedDAV/RedBrowser.php:261
+msgid "Last Modified"
msgstr ""
-#: ../../include/nav.php:77 ../../include/nav.php:101 ../../boot.php:1468
-msgid "Logout"
+#: ../../include/RedDAV/RedBrowser.php:264 ../../include/conversation.php:639
+#: ../../include/ItemObject.php:120 ../../include/apps.php:255
+#: ../../mod/group.php:176 ../../mod/settings.php:640
+#: ../../mod/connedit.php:476 ../../mod/thing.php:234 ../../mod/admin.php:730
+#: ../../mod/admin.php:861 ../../mod/photos.php:1067
+msgid "Delete"
msgstr ""
-#: ../../include/nav.php:77 ../../include/nav.php:101
-msgid "End this session"
+#: ../../include/RedDAV/RedBrowser.php:312
+msgid "Create new folder"
msgstr ""
-#: ../../include/nav.php:80 ../../include/nav.php:135
-msgid "Home"
+#: ../../include/RedDAV/RedBrowser.php:313 ../../mod/mitem.php:169
+#: ../../mod/menu.php:100 ../../mod/new_channel.php:121
+msgid "Create"
msgstr ""
-#: ../../include/nav.php:80
-msgid "Your posts and conversations"
+#: ../../include/RedDAV/RedBrowser.php:314
+msgid "Upload file"
msgstr ""
-#: ../../include/nav.php:81
-msgid "Your profile page"
+#: ../../include/RedDAV/RedBrowser.php:315 ../../mod/profile_photo.php:361
+#: ../../mod/photos.php:735 ../../mod/photos.php:1243
+msgid "Upload"
msgstr ""
-#: ../../include/nav.php:83
-msgid "Edit Profiles"
+#: ../../include/bookmarks.php:35
+#, php-format
+msgid "%1$s's bookmarks"
msgstr ""
-#: ../../include/nav.php:83
-msgid "Manage/Edit profiles"
+#: ../../include/dir_fns.php:68
+msgid "Directory Options"
msgstr ""
-#: ../../include/nav.php:84
-msgid "Your photos"
+#: ../../include/dir_fns.php:69
+msgid "Alphabetic"
msgstr ""
-#: ../../include/nav.php:85
-msgid "Your files"
+#: ../../include/dir_fns.php:70
+msgid "Reverse Alphabetic"
msgstr ""
-#: ../../include/nav.php:90 ../../include/apps.php:141
-msgid "Chat"
+#: ../../include/dir_fns.php:71
+msgid "Newest to Oldest"
msgstr ""
-#: ../../include/nav.php:90
-msgid "Your chatrooms"
+#: ../../include/dir_fns.php:72
+msgid "Oldest to Newest"
msgstr ""
-#: ../../include/nav.php:93
-msgid "Your bookmarks"
+#: ../../include/dir_fns.php:73
+msgid "Public Forums Only"
msgstr ""
-#: ../../include/nav.php:95
-msgid "Your webpages"
+#: ../../include/dir_fns.php:75
+msgid "Sort"
msgstr ""
-#: ../../include/nav.php:99 ../../include/apps.php:126 ../../boot.php:1469
-msgid "Login"
+#: ../../include/dir_fns.php:91
+msgid "Enable Safe Search"
msgstr ""
-#: ../../include/nav.php:99
-msgid "Sign in"
+#: ../../include/dir_fns.php:93
+msgid "Disable Safe Search"
msgstr ""
-#: ../../include/nav.php:116
-#, php-format
-msgid "%s - click to logout"
+#: ../../include/dir_fns.php:95
+msgid "Safe Mode"
msgstr ""
-#: ../../include/nav.php:121
-msgid "Click to authenticate to your home hub"
+#: ../../include/comanche.php:35 ../../mod/admin.php:353
+#: ../../view/theme/apw/php/config.php:185
+msgid "Default"
msgstr ""
-#: ../../include/nav.php:135
-msgid "Home Page"
+#: ../../include/contact_selectors.php:56
+msgid "Frequently"
msgstr ""
-#: ../../include/nav.php:139 ../../mod/register.php:221 ../../boot.php:1445
-msgid "Register"
+#: ../../include/contact_selectors.php:57
+msgid "Hourly"
msgstr ""
-#: ../../include/nav.php:139
-msgid "Create an account"
+#: ../../include/contact_selectors.php:58
+msgid "Twice daily"
msgstr ""
-#: ../../include/nav.php:144 ../../include/apps.php:137 ../../mod/help.php:60
-#: ../../mod/help.php:65
-msgid "Help"
+#: ../../include/contact_selectors.php:59
+msgid "Daily"
msgstr ""
-#: ../../include/nav.php:144
-msgid "Help and documentation"
+#: ../../include/contact_selectors.php:60
+msgid "Weekly"
msgstr ""
-#: ../../include/nav.php:147 ../../include/widgets.php:79
-#: ../../mod/apps.php:33
-msgid "Apps"
+#: ../../include/contact_selectors.php:61
+msgid "Monthly"
msgstr ""
-#: ../../include/nav.php:147
-msgid "Applications, utilities, links, games"
+#: ../../include/contact_selectors.php:76
+msgid "Friendica"
msgstr ""
-#: ../../include/nav.php:149 ../../include/text.php:813
-#: ../../include/text.php:827 ../../include/apps.php:142
-#: ../../mod/search.php:29
-msgid "Search"
+#: ../../include/contact_selectors.php:77
+msgid "OStatus"
msgstr ""
-#: ../../include/nav.php:149
-msgid "Search site content"
+#: ../../include/contact_selectors.php:78
+msgid "RSS/Atom"
msgstr ""
-#: ../../include/nav.php:152 ../../include/apps.php:136
-#: ../../mod/directory.php:210
-msgid "Directory"
+#: ../../include/contact_selectors.php:79 ../../mod/admin.php:726
+#: ../../mod/admin.php:735 ../../boot.php:1544
+msgid "Email"
msgstr ""
-#: ../../include/nav.php:152
-msgid "Channel Locator"
+#: ../../include/contact_selectors.php:80
+msgid "Diaspora"
msgstr ""
-#: ../../include/nav.php:163 ../../include/apps.php:128
-msgid "Matrix"
+#: ../../include/contact_selectors.php:81
+msgid "Facebook"
msgstr ""
-#: ../../include/nav.php:163
-msgid "Your matrix"
+#: ../../include/contact_selectors.php:82
+msgid "Zot!"
msgstr ""
-#: ../../include/nav.php:164
-msgid "Mark all matrix notifications seen"
+#: ../../include/contact_selectors.php:83
+msgid "LinkedIn"
msgstr ""
-#: ../../include/nav.php:166 ../../include/apps.php:132
-msgid "Channel Home"
+#: ../../include/contact_selectors.php:84
+msgid "XMPP/IM"
msgstr ""
-#: ../../include/nav.php:166
-msgid "Channel home"
+#: ../../include/contact_selectors.php:85
+msgid "MySpace"
msgstr ""
-#: ../../include/nav.php:167
-msgid "Mark all channel notifications seen"
+#: ../../include/auth.php:130
+msgid "Logged out."
msgstr ""
-#: ../../include/nav.php:170 ../../mod/connections.php:386
-msgid "Connections"
+#: ../../include/auth.php:271
+msgid "Failed authentication"
msgstr ""
-#: ../../include/nav.php:173
-msgid "Notices"
+#: ../../include/auth.php:285 ../../mod/openid.php:190
+msgid "Login failed."
msgstr ""
-#: ../../include/nav.php:173
-msgid "Notifications"
+#: ../../include/acl_selectors.php:240
+msgid "Visible to your default audience"
msgstr ""
-#: ../../include/nav.php:174
-msgid "See all notifications"
+#: ../../include/acl_selectors.php:241
+msgid "Show"
msgstr ""
-#: ../../include/nav.php:175 ../../mod/notifications.php:99
-msgid "Mark all system notifications seen"
+#: ../../include/acl_selectors.php:242
+msgid "Don't show"
msgstr ""
-#: ../../include/nav.php:177 ../../include/apps.php:138
-msgid "Mail"
+#: ../../include/acl_selectors.php:248 ../../mod/events.php:596
+#: ../../mod/chat.php:209 ../../mod/filestorage.php:141
+#: ../../mod/photos.php:588 ../../mod/photos.php:947
+msgid "Permissions"
msgstr ""
-#: ../../include/nav.php:177
-msgid "Private mail"
+#: ../../include/acl_selectors.php:249 ../../include/ItemObject.php:320
+#: ../../mod/photos.php:1146
+msgid "Close"
msgstr ""
-#: ../../include/nav.php:178
-msgid "See all private messages"
+#: ../../include/identity.php:31 ../../mod/item.php:1115
+msgid "Unable to obtain identity information from database"
msgstr ""
-#: ../../include/nav.php:179
-msgid "Mark all private messages seen"
+#: ../../include/identity.php:66
+msgid "Empty name"
msgstr ""
-#: ../../include/nav.php:180
-msgid "Inbox"
+#: ../../include/identity.php:68
+msgid "Name too long"
msgstr ""
-#: ../../include/nav.php:181
-msgid "Outbox"
+#: ../../include/identity.php:169
+msgid "No account identifier"
msgstr ""
-#: ../../include/nav.php:182 ../../include/widgets.php:536
-msgid "New Message"
+#: ../../include/identity.php:182
+msgid "Nickname is required."
msgstr ""
-#: ../../include/nav.php:185 ../../include/apps.php:135
-#: ../../mod/events.php:396
-msgid "Events"
+#: ../../include/identity.php:196
+msgid "Reserved nickname. Please choose another."
msgstr ""
-#: ../../include/nav.php:185
-msgid "Event Calendar"
+#: ../../include/identity.php:201 ../../include/dimport.php:34
+msgid ""
+"Nickname has unsupported characters or is already being used on this site."
msgstr ""
-#: ../../include/nav.php:186
-msgid "See all events"
+#: ../../include/identity.php:283
+msgid "Unable to retrieve created identity"
msgstr ""
-#: ../../include/nav.php:187
-msgid "Mark all events seen"
+#: ../../include/identity.php:343
+msgid "Default Profile"
msgstr ""
-#: ../../include/nav.php:189 ../../include/apps.php:127
-msgid "Channel Select"
+#: ../../include/identity.php:387 ../../include/identity.php:388
+#: ../../include/identity.php:395 ../../include/widgets.php:428
+#: ../../include/profile_selectors.php:80 ../../mod/settings.php:329
+#: ../../mod/settings.php:333 ../../mod/settings.php:334
+#: ../../mod/settings.php:337 ../../mod/settings.php:348
+#: ../../mod/connedit.php:510
+msgid "Friends"
msgstr ""
-#: ../../include/nav.php:189
-msgid "Manage Your Channels"
+#: ../../include/identity.php:643
+msgid "Requested channel is not available."
msgstr ""
-#: ../../include/nav.php:191 ../../include/apps.php:129
-#: ../../include/widgets.php:514 ../../mod/admin.php:978
-#: ../../mod/admin.php:1183
-msgid "Settings"
+#: ../../include/identity.php:691 ../../mod/achievements.php:11
+#: ../../mod/profile.php:16 ../../mod/webpages.php:29 ../../mod/blocks.php:29
+#: ../../mod/editblock.php:29 ../../mod/editlayout.php:28
+#: ../../mod/editwebpage.php:28 ../../mod/filestorage.php:48
+#: ../../mod/connect.php:13 ../../mod/layouts.php:29 ../../mod/hcard.php:8
+msgid "Requested profile is not available."
msgstr ""
-#: ../../include/nav.php:191
-msgid "Account/Channel Settings"
+#: ../../include/identity.php:840 ../../include/conversation.php:937
+#: ../../include/widgets.php:136 ../../include/widgets.php:175
+#: ../../include/Contact.php:107 ../../mod/suggest.php:51
+#: ../../mod/match.php:62 ../../mod/directory.php:264
+msgid "Connect"
msgstr ""
-#: ../../include/nav.php:199 ../../mod/admin.php:117
-msgid "Admin"
+#: ../../include/identity.php:854 ../../mod/profiles.php:757
+msgid "Change profile photo"
msgstr ""
-#: ../../include/nav.php:199
-msgid "Site Setup and Configuration"
+#: ../../include/identity.php:861
+msgid "Profiles"
msgstr ""
-#: ../../include/nav.php:224
-msgid "Nothing new here"
+#: ../../include/identity.php:861
+msgid "Manage/edit profiles"
msgstr ""
-#: ../../include/nav.php:228
-msgid "Please wait..."
+#: ../../include/identity.php:862 ../../mod/profiles.php:758
+msgid "Create New Profile"
msgstr ""
-#: ../../include/bookmarks.php:42
-#, php-format
-msgid "%1$s's bookmarks"
+#: ../../include/identity.php:865 ../../include/nav.php:103
+msgid "Edit Profile"
msgstr ""
-#: ../../include/chat.php:10
-msgid "Missing room name"
+#: ../../include/identity.php:878 ../../mod/profiles.php:769
+msgid "Profile Image"
msgstr ""
-#: ../../include/chat.php:19
-msgid "Duplicate room name"
+#: ../../include/identity.php:881
+msgid "visible to everybody"
msgstr ""
-#: ../../include/chat.php:68 ../../include/chat.php:76
-msgid "Invalid room specifier."
+#: ../../include/identity.php:882 ../../mod/profiles.php:652
+#: ../../mod/profiles.php:773
+msgid "Edit visibility"
msgstr ""
-#: ../../include/chat.php:105
-msgid "Room not found."
+#: ../../include/identity.php:898 ../../include/identity.php:1135
+msgid "Gender:"
msgstr ""
-#: ../../include/chat.php:126
-msgid "Room is full"
+#: ../../include/identity.php:899 ../../include/identity.php:1179
+msgid "Status:"
msgstr ""
-#: ../../include/taxonomy.php:210
-msgid "Tags"
+#: ../../include/identity.php:900 ../../include/identity.php:1190
+msgid "Homepage:"
msgstr ""
-#: ../../include/taxonomy.php:227
-msgid "Keywords"
+#: ../../include/identity.php:901
+msgid "Online Now"
msgstr ""
-#: ../../include/taxonomy.php:252
-msgid "have"
+#: ../../include/identity.php:979 ../../include/identity.php:1059
+#: ../../mod/ping.php:329
+msgid "g A l F d"
msgstr ""
-#: ../../include/taxonomy.php:252
-msgid "has"
+#: ../../include/identity.php:980 ../../include/identity.php:1060
+msgid "F d"
msgstr ""
-#: ../../include/taxonomy.php:253
-msgid "want"
+#: ../../include/identity.php:1025 ../../include/identity.php:1100
+#: ../../mod/ping.php:351
+msgid "[today]"
msgstr ""
-#: ../../include/taxonomy.php:253
-msgid "wants"
+#: ../../include/identity.php:1037
+msgid "Birthday Reminders"
msgstr ""
-#: ../../include/taxonomy.php:254 ../../include/ItemObject.php:208
-msgid "like"
+#: ../../include/identity.php:1038
+msgid "Birthdays this week:"
msgstr ""
-#: ../../include/taxonomy.php:254
-msgid "likes"
+#: ../../include/identity.php:1093
+msgid "[No description]"
msgstr ""
-#: ../../include/taxonomy.php:255 ../../include/ItemObject.php:209
-msgid "dislike"
+#: ../../include/identity.php:1111
+msgid "Event Reminders"
msgstr ""
-#: ../../include/taxonomy.php:255
-msgid "dislikes"
+#: ../../include/identity.php:1112
+msgid "Events this week:"
msgstr ""
-#: ../../include/taxonomy.php:338 ../../include/identity.php:968
-#: ../../include/ItemObject.php:134
-msgctxt "noun"
-msgid "Like"
-msgid_plural "Likes"
-msgstr[0] ""
-msgstr[1] ""
+#: ../../include/identity.php:1125 ../../include/identity.php:1254
+#: ../../include/apps.php:138 ../../mod/profperm.php:112
+msgid "Profile"
+msgstr ""
-#: ../../include/comanche.php:35 ../../view/theme/apw/php/config.php:185
-msgid "Default"
+#: ../../include/identity.php:1133 ../../mod/settings.php:1022
+msgid "Full Name:"
+msgstr ""
+
+#: ../../include/identity.php:1140
+msgid "Like this channel"
+msgstr ""
+
+#: ../../include/identity.php:1164
+msgid "j F, Y"
msgstr ""
-#: ../../include/contact_selectors.php:30
-msgid "Unknown | Not categorised"
+#: ../../include/identity.php:1165
+msgid "j F"
msgstr ""
-#: ../../include/contact_selectors.php:31
-msgid "Block immediately"
+#: ../../include/identity.php:1172
+msgid "Birthday:"
msgstr ""
-#: ../../include/contact_selectors.php:32
-msgid "Shady, spammer, self-marketer"
+#: ../../include/identity.php:1176
+msgid "Age:"
msgstr ""
-#: ../../include/contact_selectors.php:33
-msgid "Known to me, but no opinion"
+#: ../../include/identity.php:1185
+#, php-format
+msgid "for %1$d %2$s"
msgstr ""
-#: ../../include/contact_selectors.php:34
-msgid "OK, probably harmless"
+#: ../../include/identity.php:1188 ../../mod/profiles.php:674
+msgid "Sexual Preference:"
msgstr ""
-#: ../../include/contact_selectors.php:35
-msgid "Reputable, has my trust"
+#: ../../include/identity.php:1192 ../../mod/profiles.php:676
+msgid "Hometown:"
msgstr ""
-#: ../../include/contact_selectors.php:54
-msgid "Frequently"
+#: ../../include/identity.php:1194
+msgid "Tags:"
msgstr ""
-#: ../../include/contact_selectors.php:55
-msgid "Hourly"
+#: ../../include/identity.php:1196 ../../mod/profiles.php:677
+msgid "Political Views:"
msgstr ""
-#: ../../include/contact_selectors.php:56
-msgid "Twice daily"
+#: ../../include/identity.php:1198
+msgid "Religion:"
msgstr ""
-#: ../../include/contact_selectors.php:57
-msgid "Daily"
+#: ../../include/identity.php:1200
+msgid "About:"
msgstr ""
-#: ../../include/contact_selectors.php:58
-msgid "Weekly"
+#: ../../include/identity.php:1202
+msgid "Hobbies/Interests:"
msgstr ""
-#: ../../include/contact_selectors.php:59
-msgid "Monthly"
+#: ../../include/identity.php:1204 ../../mod/profiles.php:680
+msgid "Likes:"
msgstr ""
-#: ../../include/contact_selectors.php:74
-msgid "Friendica"
+#: ../../include/identity.php:1206 ../../mod/profiles.php:681
+msgid "Dislikes:"
msgstr ""
-#: ../../include/contact_selectors.php:75
-msgid "OStatus"
+#: ../../include/identity.php:1209
+msgid "Contact information and Social Networks:"
msgstr ""
-#: ../../include/contact_selectors.php:76
-msgid "RSS/Atom"
+#: ../../include/identity.php:1221
+msgid "My other channels:"
msgstr ""
-#: ../../include/contact_selectors.php:77 ../../mod/admin.php:754
-#: ../../mod/admin.php:763 ../../boot.php:1471
-msgid "Email"
+#: ../../include/identity.php:1224
+msgid "Musical interests:"
msgstr ""
-#: ../../include/contact_selectors.php:78
-msgid "Diaspora"
+#: ../../include/identity.php:1226
+msgid "Books, literature:"
msgstr ""
-#: ../../include/contact_selectors.php:79
-msgid "Facebook"
+#: ../../include/identity.php:1228
+msgid "Television:"
msgstr ""
-#: ../../include/contact_selectors.php:80
-msgid "Zot!"
+#: ../../include/identity.php:1230
+msgid "Film/dance/culture/entertainment:"
msgstr ""
-#: ../../include/contact_selectors.php:81
-msgid "LinkedIn"
+#: ../../include/identity.php:1232
+msgid "Love/Romance:"
msgstr ""
-#: ../../include/contact_selectors.php:82
-msgid "XMPP/IM"
+#: ../../include/identity.php:1234
+msgid "Work/employment:"
msgstr ""
-#: ../../include/contact_selectors.php:83
-msgid "MySpace"
+#: ../../include/identity.php:1236
+msgid "School/education:"
+msgstr ""
+
+#: ../../include/identity.php:1256
+msgid "Like this thing"
msgstr ""
#: ../../include/contact_widgets.php:14
@@ -1271,7 +1301,7 @@ msgid_plural "%d invitations available"
msgstr[0] ""
msgstr[1] ""
-#: ../../include/contact_widgets.php:19 ../../mod/admin.php:446
+#: ../../include/contact_widgets.php:19 ../../mod/admin.php:416
msgid "Advanced"
msgstr ""
@@ -1291,12 +1321,13 @@ msgstr ""
msgid "Examples: Robert Morgenstein, Fishing"
msgstr ""
-#: ../../include/contact_widgets.php:26 ../../mod/connections.php:392
-#: ../../mod/directory.php:206 ../../mod/directory.php:211
+#: ../../include/contact_widgets.php:26 ../../mod/connections.php:412
+#: ../../mod/directory.php:317 ../../mod/directory.php:322
msgid "Find"
msgstr ""
#: ../../include/contact_widgets.php:27 ../../mod/suggest.php:59
+#: ../../mod/directory.php:321
msgid "Channel Suggestions"
msgstr ""
@@ -1309,27 +1340,14 @@ msgid "Invite Friends"
msgstr ""
#: ../../include/contact_widgets.php:32
-msgid "Exammple: name=fred and country=iceland"
-msgstr ""
-
-#: ../../include/contact_widgets.php:33
-msgid "Advanced Find"
+msgid "Advanced example: name=fred and country=iceland"
msgstr ""
-#: ../../include/contact_widgets.php:58 ../../include/features.php:67
-#: ../../include/widgets.php:296
-msgid "Saved Folders"
-msgstr ""
-
-#: ../../include/contact_widgets.php:61 ../../include/contact_widgets.php:95
-#: ../../include/widgets.php:299
+#: ../../include/contact_widgets.php:60 ../../include/contact_widgets.php:95
+#: ../../include/widgets.php:305
msgid "Everything"
msgstr ""
-#: ../../include/contact_widgets.php:92 ../../include/widgets.php:29
-msgid "Categories"
-msgstr ""
-
#: ../../include/contact_widgets.php:125
#, php-format
msgid "%d connection in common"
@@ -1341,1640 +1359,1751 @@ msgstr[1] ""
msgid "show more"
msgstr ""
-#: ../../include/event.php:326
+#: ../../include/event.php:376
msgid "This event has been added to your calendar."
msgstr ""
-#: ../../include/zot.php:610
-msgid "Invalid data packet"
+#: ../../include/group.php:26
+msgid ""
+"A deleted group with this name was revived. Existing item permissions "
+"<strong>may</strong> apply to this group and any future members. If this is "
+"not what you intended, please create another group with a different name."
msgstr ""
-#: ../../include/zot.php:620
-msgid "Unable to verify channel signature"
+#: ../../include/group.php:235
+msgid "Default privacy group for new contacts"
msgstr ""
-#: ../../include/zot.php:817
-#, php-format
-msgid "Unable to verify site signature for %s"
+#: ../../include/group.php:254 ../../mod/admin.php:735
+msgid "All Channels"
msgstr ""
-#: ../../include/datetime.php:43 ../../include/datetime.php:45
-msgid "Miscellaneous"
+#: ../../include/group.php:276
+msgid "edit"
msgstr ""
-#: ../../include/datetime.php:152 ../../include/datetime.php:284
-msgid "year"
+#: ../../include/group.php:298
+msgid "Collections"
msgstr ""
-#: ../../include/datetime.php:157 ../../include/datetime.php:285
-msgid "month"
+#: ../../include/group.php:299
+msgid "Edit collection"
msgstr ""
-#: ../../include/datetime.php:162 ../../include/datetime.php:287
-msgid "day"
+#: ../../include/group.php:300
+msgid "Create a new collection"
msgstr ""
-#: ../../include/datetime.php:275
-msgid "never"
+#: ../../include/group.php:301
+msgid "Channels not in any collection"
msgstr ""
-#: ../../include/datetime.php:281
-msgid "less than a second ago"
+#: ../../include/group.php:303 ../../include/widgets.php:273
+msgid "add"
msgstr ""
-#: ../../include/datetime.php:284
-msgid "years"
+#: ../../include/account.php:23
+msgid "Not a valid email address"
msgstr ""
-#: ../../include/datetime.php:285
-msgid "months"
+#: ../../include/account.php:25
+msgid "Your email domain is not among those allowed on this site"
msgstr ""
-#: ../../include/datetime.php:286
-msgid "week"
+#: ../../include/account.php:31
+msgid "Your email address is already registered at this site."
msgstr ""
-#: ../../include/datetime.php:286
-msgid "weeks"
+#: ../../include/account.php:64
+msgid "An invitation is required."
msgstr ""
-#: ../../include/datetime.php:287
-msgid "days"
+#: ../../include/account.php:68
+msgid "Invitation could not be verified."
msgstr ""
-#: ../../include/datetime.php:288
-msgid "hour"
+#: ../../include/account.php:119
+msgid "Please enter the required information."
msgstr ""
-#: ../../include/datetime.php:288
-msgid "hours"
+#: ../../include/account.php:187
+msgid "Failed to store account information."
msgstr ""
-#: ../../include/datetime.php:289
-msgid "minute"
+#: ../../include/account.php:245
+#, php-format
+msgid "Registration confirmation for %s"
msgstr ""
-#: ../../include/datetime.php:289
-msgid "minutes"
+#: ../../include/account.php:313
+#, php-format
+msgid "Registration request at %s"
msgstr ""
-#: ../../include/datetime.php:290
-msgid "second"
+#: ../../include/account.php:315 ../../include/account.php:342
+#: ../../include/account.php:399
+msgid "Administrator"
msgstr ""
-#: ../../include/datetime.php:290
-msgid "seconds"
+#: ../../include/account.php:337
+msgid "your registration password"
msgstr ""
-#: ../../include/datetime.php:299
+#: ../../include/account.php:340 ../../include/account.php:397
#, php-format
-msgid "%1$d %2$s ago"
+msgid "Registration details for %s"
msgstr ""
-#: ../../include/datetime.php:504
-#, php-format
-msgid "%1$s's birthday"
+#: ../../include/account.php:406
+msgid "Account approved."
msgstr ""
-#: ../../include/datetime.php:505
+#: ../../include/account.php:440
#, php-format
-msgid "Happy Birthday %1$s"
+msgid "Registration revoked for %s"
msgstr ""
-#: ../../include/dir_fns.php:36
-msgid "Sort Options"
+#: ../../include/account.php:486
+msgid "Account verified. Please login."
msgstr ""
-#: ../../include/dir_fns.php:37
-msgid "Alphabetic"
+#: ../../include/account.php:648 ../../include/account.php:650
+msgid "Click here to upgrade."
msgstr ""
-#: ../../include/dir_fns.php:38
-msgid "Reverse Alphabetic"
+#: ../../include/account.php:656
+msgid "This action exceeds the limits set by your subscription plan."
msgstr ""
-#: ../../include/dir_fns.php:39
-msgid "Newest to Oldest"
+#: ../../include/account.php:661
+msgid "This action is not available under your subscription plan."
msgstr ""
-#: ../../include/dir_fns.php:51
-msgid "Enable Safe Search"
+#: ../../include/text.php:320
+msgid "prev"
msgstr ""
-#: ../../include/dir_fns.php:53
-msgid "Disable Safe Search"
+#: ../../include/text.php:322
+msgid "first"
msgstr ""
-#: ../../include/dir_fns.php:55
-msgid "Safe Mode"
+#: ../../include/text.php:351
+msgid "last"
msgstr ""
-#: ../../include/enotify.php:41
-msgid "Red Matrix Notification"
+#: ../../include/text.php:354
+msgid "next"
msgstr ""
-#: ../../include/enotify.php:42
-msgid "redmatrix"
+#: ../../include/text.php:366
+msgid "older"
msgstr ""
-#: ../../include/enotify.php:44
-msgid "Thank You,"
+#: ../../include/text.php:368
+msgid "newer"
msgstr ""
-#: ../../include/enotify.php:46
-#, php-format
-msgid "%s Administrator"
+#: ../../include/text.php:756
+msgid "No connections"
msgstr ""
-#: ../../include/enotify.php:81
+#: ../../include/text.php:772
#, php-format
-msgid "%s <!item_type!>"
+msgid "%d Connection"
+msgid_plural "%d Connections"
+msgstr[0] ""
+msgstr[1] ""
+
+#: ../../include/text.php:785
+msgid "View Connections"
msgstr ""
-#: ../../include/enotify.php:85
-#, php-format
-msgid "[Red:Notify] New mail received at %s"
+#: ../../include/text.php:842 ../../include/text.php:854
+#: ../../include/apps.php:147 ../../include/nav.php:173
+#: ../../mod/search.php:30
+msgid "Search"
msgstr ""
-#: ../../include/enotify.php:87
-#, php-format
-msgid "%1$s, %2$s sent you a new private message at %3$s."
+#: ../../include/text.php:843 ../../include/text.php:855
+#: ../../include/widgets.php:192 ../../mod/rbmark.php:28
+#: ../../mod/rbmark.php:98 ../../mod/filer.php:50 ../../mod/admin.php:1339
+#: ../../mod/admin.php:1360
+msgid "Save"
msgstr ""
-#: ../../include/enotify.php:88
-#, php-format
-msgid "%1$s sent you %2$s."
+#: ../../include/text.php:920
+msgid "poke"
msgstr ""
-#: ../../include/enotify.php:88
-msgid "a private message"
+#: ../../include/text.php:920 ../../include/conversation.php:243
+msgid "poked"
msgstr ""
-#: ../../include/enotify.php:89
-#, php-format
-msgid "Please visit %s to view and/or reply to your private messages."
+#: ../../include/text.php:921
+msgid "ping"
msgstr ""
-#: ../../include/enotify.php:144
-#, php-format
-msgid "%1$s, %2$s commented on [zrl=%3$s]a %4$s[/zrl]"
+#: ../../include/text.php:921
+msgid "pinged"
msgstr ""
-#: ../../include/enotify.php:152
-#, php-format
-msgid "%1$s, %2$s commented on [zrl=%3$s]%4$s's %5$s[/zrl]"
+#: ../../include/text.php:922
+msgid "prod"
msgstr ""
-#: ../../include/enotify.php:161
-#, php-format
-msgid "%1$s, %2$s commented on [zrl=%3$s]your %4$s[/zrl]"
+#: ../../include/text.php:922
+msgid "prodded"
msgstr ""
-#: ../../include/enotify.php:172
-#, php-format
-msgid "[Red:Notify] Comment to conversation #%1$d by %2$s"
+#: ../../include/text.php:923
+msgid "slap"
msgstr ""
-#: ../../include/enotify.php:173
-#, php-format
-msgid "%1$s, %2$s commented on an item/conversation you have been following."
+#: ../../include/text.php:923
+msgid "slapped"
msgstr ""
-#: ../../include/enotify.php:176 ../../include/enotify.php:191
-#: ../../include/enotify.php:217 ../../include/enotify.php:236
-#: ../../include/enotify.php:250
-#, php-format
-msgid "Please visit %s to view and/or reply to the conversation."
+#: ../../include/text.php:924
+msgid "finger"
msgstr ""
-#: ../../include/enotify.php:182
-#, php-format
-msgid "[Red:Notify] %s posted to your profile wall"
+#: ../../include/text.php:924
+msgid "fingered"
msgstr ""
-#: ../../include/enotify.php:184
-#, php-format
-msgid "%1$s, %2$s posted to your profile wall at %3$s"
+#: ../../include/text.php:925
+msgid "rebuff"
msgstr ""
-#: ../../include/enotify.php:186
-#, php-format
-msgid "%1$s, %2$s posted to [zrl=%3$s]your wall[/zrl]"
+#: ../../include/text.php:925
+msgid "rebuffed"
msgstr ""
-#: ../../include/enotify.php:210
-#, php-format
-msgid "[Red:Notify] %s tagged you"
+#: ../../include/text.php:935
+msgid "happy"
msgstr ""
-#: ../../include/enotify.php:211
-#, php-format
-msgid "%1$s, %2$s tagged you at %3$s"
+#: ../../include/text.php:936
+msgid "sad"
msgstr ""
-#: ../../include/enotify.php:212
-#, php-format
-msgid "%1$s, %2$s [zrl=%3$s]tagged you[/zrl]."
+#: ../../include/text.php:937
+msgid "mellow"
msgstr ""
-#: ../../include/enotify.php:225
-#, php-format
-msgid "[Red:Notify] %1$s poked you"
+#: ../../include/text.php:938
+msgid "tired"
msgstr ""
-#: ../../include/enotify.php:226
-#, php-format
-msgid "%1$s, %2$s poked you at %3$s"
+#: ../../include/text.php:939
+msgid "perky"
msgstr ""
-#: ../../include/enotify.php:227
-#, php-format
-msgid "%1$s, %2$s [zrl=%2$s]poked you[/zrl]."
+#: ../../include/text.php:940
+msgid "angry"
msgstr ""
-#: ../../include/enotify.php:243
-#, php-format
-msgid "[Red:Notify] %s tagged your post"
+#: ../../include/text.php:941
+msgid "stupified"
msgstr ""
-#: ../../include/enotify.php:244
-#, php-format
-msgid "%1$s, %2$s tagged your post at %3$s"
+#: ../../include/text.php:942
+msgid "puzzled"
msgstr ""
-#: ../../include/enotify.php:245
-#, php-format
-msgid "%1$s, %2$s tagged [zrl=%3$s]your post[/zrl]"
+#: ../../include/text.php:943
+msgid "interested"
msgstr ""
-#: ../../include/enotify.php:257
-msgid "[Red:Notify] Introduction received"
+#: ../../include/text.php:944
+msgid "bitter"
msgstr ""
-#: ../../include/enotify.php:258
-#, php-format
-msgid "%1$s, you've received an new connection request from '%2$s' at %3$s"
+#: ../../include/text.php:945
+msgid "cheerful"
msgstr ""
-#: ../../include/enotify.php:259
-#, php-format
-msgid ""
-"%1$s, you've received [zrl=%2$s]a new connection request[/zrl] from %3$s."
+#: ../../include/text.php:946
+msgid "alive"
msgstr ""
-#: ../../include/enotify.php:263 ../../include/enotify.php:282
-#, php-format
-msgid "You may visit their profile at %s"
+#: ../../include/text.php:947
+msgid "annoyed"
msgstr ""
-#: ../../include/enotify.php:265
-#, php-format
-msgid "Please visit %s to approve or reject the connection request."
+#: ../../include/text.php:948
+msgid "anxious"
msgstr ""
-#: ../../include/enotify.php:272
-msgid "[Red:Notify] Friend suggestion received"
+#: ../../include/text.php:949
+msgid "cranky"
msgstr ""
-#: ../../include/enotify.php:273
-#, php-format
-msgid "%1$s, you've received a friend suggestion from '%2$s' at %3$s"
+#: ../../include/text.php:950
+msgid "disturbed"
msgstr ""
-#: ../../include/enotify.php:274
-#, php-format
-msgid ""
-"%1$s, you've received [zrl=%2$s]a friend suggestion[/zrl] for %3$s from %4$s."
+#: ../../include/text.php:951
+msgid "frustrated"
msgstr ""
-#: ../../include/enotify.php:280
-msgid "Name:"
+#: ../../include/text.php:952
+msgid "depressed"
msgstr ""
-#: ../../include/enotify.php:281
-msgid "Photo:"
+#: ../../include/text.php:953
+msgid "motivated"
msgstr ""
-#: ../../include/enotify.php:284
-#, php-format
-msgid "Please visit %s to approve or reject the suggestion."
+#: ../../include/text.php:954
+msgid "relaxed"
msgstr ""
-#: ../../include/reddav.php:1145 ../../include/reddav.php:1288
-msgid "parent"
+#: ../../include/text.php:955
+msgid "surprised"
msgstr ""
-#: ../../include/reddav.php:1169
-msgid "Collection"
+#: ../../include/text.php:1121
+msgid "Monday"
msgstr ""
-#: ../../include/reddav.php:1172
-msgid "Principal"
+#: ../../include/text.php:1121
+msgid "Tuesday"
msgstr ""
-#: ../../include/reddav.php:1175
-msgid "Addressbook"
+#: ../../include/text.php:1121
+msgid "Wednesday"
msgstr ""
-#: ../../include/reddav.php:1178
-msgid "Calendar"
+#: ../../include/text.php:1121
+msgid "Thursday"
msgstr ""
-#: ../../include/reddav.php:1181
-msgid "Schedule Inbox"
+#: ../../include/text.php:1121
+msgid "Friday"
msgstr ""
-#: ../../include/reddav.php:1184
-msgid "Schedule Outbox"
+#: ../../include/text.php:1121
+msgid "Saturday"
msgstr ""
-#: ../../include/reddav.php:1202 ../../include/apps.php:322
-#: ../../include/apps.php:373 ../../mod/connedit.php:434
-msgid "Unknown"
+#: ../../include/text.php:1121
+msgid "Sunday"
msgstr ""
-#: ../../include/reddav.php:1262
-#, php-format
-msgid "%1$s used"
+#: ../../include/text.php:1125
+msgid "January"
msgstr ""
-#: ../../include/reddav.php:1267
-#, php-format
-msgid "%1$s used of %2$s (%3$s&#37;)"
+#: ../../include/text.php:1125
+msgid "February"
msgstr ""
-#: ../../include/reddav.php:1284 ../../mod/settings.php:517
-#: ../../mod/settings.php:543 ../../mod/admin.php:893
-msgid "Name"
+#: ../../include/text.php:1125
+msgid "March"
msgstr ""
-#: ../../include/reddav.php:1285
-msgid "Type"
+#: ../../include/text.php:1125
+msgid "April"
msgstr ""
-#: ../../include/reddav.php:1286
-msgid "Size"
+#: ../../include/text.php:1125
+msgid "May"
msgstr ""
-#: ../../include/reddav.php:1287
-msgid "Last Modified"
+#: ../../include/text.php:1125
+msgid "June"
msgstr ""
-#: ../../include/reddav.php:1291
-msgid "Total"
+#: ../../include/text.php:1125
+msgid "July"
msgstr ""
-#: ../../include/reddav.php:1344
-msgid "Create new folder"
+#: ../../include/text.php:1125
+msgid "August"
msgstr ""
-#: ../../include/reddav.php:1345 ../../mod/mitem.php:142 ../../mod/menu.php:84
-#: ../../mod/new_channel.php:117
-msgid "Create"
+#: ../../include/text.php:1125
+msgid "September"
msgstr ""
-#: ../../include/reddav.php:1346
-msgid "Upload file"
+#: ../../include/text.php:1125
+msgid "October"
msgstr ""
-#: ../../include/reddav.php:1347 ../../mod/profile_photo.php:361
-msgid "Upload"
+#: ../../include/text.php:1125
+msgid "November"
msgstr ""
-#: ../../include/features.php:23
-msgid "General Features"
+#: ../../include/text.php:1125
+msgid "December"
msgstr ""
-#: ../../include/features.php:25
-msgid "Content Expiration"
+#: ../../include/text.php:1203
+msgid "unknown.???"
msgstr ""
-#: ../../include/features.php:25
-msgid "Remove posts/comments and/or private messages at a future time"
+#: ../../include/text.php:1204
+msgid "bytes"
msgstr ""
-#: ../../include/features.php:26
-msgid "Multiple Profiles"
+#: ../../include/text.php:1240
+msgid "remove category"
msgstr ""
-#: ../../include/features.php:26
-msgid "Ability to create multiple profiles"
+#: ../../include/text.php:1309
+msgid "remove from file"
msgstr ""
-#: ../../include/features.php:27
-msgid "Web Pages"
+#: ../../include/text.php:1385 ../../include/text.php:1396
+msgid "Click to open/close"
msgstr ""
-#: ../../include/features.php:27
-msgid "Provide managed web pages on your channel"
+#: ../../include/text.php:1544 ../../mod/events.php:414
+msgid "Link to Source"
msgstr ""
-#: ../../include/features.php:28
-msgid "Private Notes"
+#: ../../include/text.php:1563
+msgid "Select a page layout: "
msgstr ""
-#: ../../include/features.php:28
-msgid "Enables a tool to store notes and reminders"
+#: ../../include/text.php:1566 ../../include/text.php:1626
+msgid "default"
msgstr ""
-#: ../../include/features.php:33
-msgid "Extended Identity Sharing"
+#: ../../include/text.php:1599
+msgid "Page content type: "
msgstr ""
-#: ../../include/features.php:33
-msgid ""
-"Share your identity with all websites on the internet. When disabled, "
-"identity is only shared with sites in the matrix."
+#: ../../include/text.php:1638
+msgid "Select an alternate language"
msgstr ""
-#: ../../include/features.php:34
-msgid "Expert Mode"
+#: ../../include/text.php:1757 ../../include/conversation.php:120
+#: ../../include/diaspora.php:1928 ../../mod/subthread.php:72
+#: ../../mod/subthread.php:174 ../../mod/like.php:290 ../../mod/tagger.php:45
+msgid "photo"
msgstr ""
-#: ../../include/features.php:34
-msgid "Enable Expert Mode to provide advanced configuration options"
+#: ../../include/text.php:1760 ../../include/conversation.php:123
+#: ../../mod/tagger.php:49
+msgid "event"
msgstr ""
-#: ../../include/features.php:35
-msgid "Premium Channel"
+#: ../../include/text.php:1763 ../../include/conversation.php:148
+#: ../../include/diaspora.php:1928 ../../mod/subthread.php:72
+#: ../../mod/subthread.php:174 ../../mod/like.php:290 ../../mod/tagger.php:53
+msgid "status"
msgstr ""
-#: ../../include/features.php:35
-msgid ""
-"Allows you to set restrictions and terms on those that connect with your "
-"channel"
+#: ../../include/text.php:1765 ../../include/conversation.php:150
+#: ../../mod/tagger.php:55
+msgid "comment"
msgstr ""
-#: ../../include/features.php:40
-msgid "Post Composition Features"
+#: ../../include/text.php:1770
+msgid "activity"
msgstr ""
-#: ../../include/features.php:42
-msgid "Use Markdown"
+#: ../../include/text.php:2057
+msgid "Design"
msgstr ""
-#: ../../include/features.php:42
-msgid "Allow use of \"Markdown\" to format posts"
+#: ../../include/text.php:2060
+msgid "Blocks"
msgstr ""
-#: ../../include/features.php:43
-msgid "Post Preview"
+#: ../../include/text.php:2061
+msgid "Menus"
msgstr ""
-#: ../../include/features.php:43
-msgid "Allow previewing posts and comments before publishing them"
+#: ../../include/text.php:2062
+msgid "Layouts"
msgstr ""
-#: ../../include/features.php:44 ../../include/widgets.php:503
-#: ../../mod/sources.php:88
-msgid "Channel Sources"
+#: ../../include/text.php:2063
+msgid "Pages"
msgstr ""
-#: ../../include/features.php:44
-msgid "Automatically import channel content from other channels or feeds"
+#: ../../include/api.php:1084
+msgid "Public Timeline"
msgstr ""
-#: ../../include/features.php:45
-msgid "Even More Encryption"
+#: ../../include/chat.php:10
+msgid "Missing room name"
msgstr ""
-#: ../../include/features.php:45
-msgid ""
-"Allow optional encryption of content end-to-end with a shared secret key"
+#: ../../include/chat.php:19
+msgid "Duplicate room name"
msgstr ""
-#: ../../include/features.php:50
-msgid "Network and Stream Filtering"
+#: ../../include/chat.php:68 ../../include/chat.php:76
+msgid "Invalid room specifier."
msgstr ""
-#: ../../include/features.php:51
-msgid "Search by Date"
+#: ../../include/chat.php:105
+msgid "Room not found."
msgstr ""
-#: ../../include/features.php:51
-msgid "Ability to select posts by date ranges"
+#: ../../include/chat.php:126
+msgid "Room is full"
msgstr ""
-#: ../../include/features.php:52
-msgid "Collections Filter"
+#: ../../include/follow.php:28
+msgid "Channel is blocked on this site."
msgstr ""
-#: ../../include/features.php:52
-msgid "Enable widget to display Network posts only from selected collections"
+#: ../../include/follow.php:33
+msgid "Channel location missing."
msgstr ""
-#: ../../include/features.php:53 ../../include/widgets.php:265
-msgid "Saved Searches"
+#: ../../include/follow.php:82
+msgid "Response from remote channel was incomplete."
msgstr ""
-#: ../../include/features.php:53
-msgid "Save search terms for re-use"
+#: ../../include/follow.php:99
+msgid "Channel was deleted and no longer exists."
msgstr ""
-#: ../../include/features.php:54
-msgid "Network Personal Tab"
+#: ../../include/follow.php:135 ../../include/follow.php:202
+msgid "Protocol disabled."
msgstr ""
-#: ../../include/features.php:54
-msgid "Enable tab to display only Network posts that you've interacted on"
+#: ../../include/follow.php:176
+msgid "Channel discovery failed."
msgstr ""
-#: ../../include/features.php:55
-msgid "Network New Tab"
+#: ../../include/follow.php:192
+msgid "local account not found."
msgstr ""
-#: ../../include/features.php:55
-msgid "Enable tab to display all new Network activity"
+#: ../../include/follow.php:220
+msgid "Cannot connect to yourself."
msgstr ""
-#: ../../include/features.php:56
-msgid "Affinity Tool"
+#: ../../include/conversation.php:126 ../../mod/like.php:89
+msgid "channel"
msgstr ""
-#: ../../include/features.php:56
-msgid "Filter stream activity by depth of relationships"
+#: ../../include/conversation.php:164 ../../include/diaspora.php:1957
+#: ../../mod/like.php:336
+#, php-format
+msgid "%1$s likes %2$s's %3$s"
msgstr ""
-#: ../../include/features.php:57
-msgid "Suggest Channels"
+#: ../../include/conversation.php:167 ../../mod/like.php:338
+#, php-format
+msgid "%1$s doesn't like %2$s's %3$s"
msgstr ""
-#: ../../include/features.php:57
-msgid "Show channel suggestions"
+#: ../../include/conversation.php:204
+#, php-format
+msgid "%1$s is now connected with %2$s"
msgstr ""
-#: ../../include/features.php:62
-msgid "Post/Comment Tools"
+#: ../../include/conversation.php:239
+#, php-format
+msgid "%1$s poked %2$s"
msgstr ""
-#: ../../include/features.php:64
-msgid "Edit Sent Posts"
+#: ../../include/conversation.php:261 ../../mod/mood.php:63
+#, php-format
+msgctxt "mood"
+msgid "%1$s is %2$s"
msgstr ""
-#: ../../include/features.php:64
-msgid "Edit and correct posts and comments after sending"
+#: ../../include/conversation.php:638 ../../include/ItemObject.php:126
+msgid "Select"
msgstr ""
-#: ../../include/features.php:65
-msgid "Tagging"
+#: ../../include/conversation.php:646 ../../include/ItemObject.php:89
+msgid "Private Message"
msgstr ""
-#: ../../include/features.php:65
-msgid "Ability to tag existing posts"
+#: ../../include/conversation.php:653 ../../include/ItemObject.php:194
+msgid "Message signature validated"
msgstr ""
-#: ../../include/features.php:66
-msgid "Post Categories"
+#: ../../include/conversation.php:654 ../../include/ItemObject.php:195
+msgid "Message signature incorrect"
msgstr ""
-#: ../../include/features.php:66
-msgid "Add categories to your posts"
+#: ../../include/conversation.php:674
+#, php-format
+msgid "View %s's profile @ %s"
msgstr ""
-#: ../../include/features.php:67
-msgid "Ability to file posts under folders"
+#: ../../include/conversation.php:689
+msgid "Categories:"
msgstr ""
-#: ../../include/features.php:68
-msgid "Dislike Posts"
+#: ../../include/conversation.php:690
+msgid "Filed under:"
msgstr ""
-#: ../../include/features.php:68
-msgid "Ability to dislike posts/comments"
+#: ../../include/conversation.php:698 ../../include/ItemObject.php:274
+#, php-format
+msgid " from %s"
msgstr ""
-#: ../../include/features.php:69
-msgid "Star Posts"
+#: ../../include/conversation.php:701 ../../include/ItemObject.php:277
+#, php-format
+msgid "last edited: %s"
msgstr ""
-#: ../../include/features.php:69
-msgid "Ability to mark special posts with a star indicator"
+#: ../../include/conversation.php:702 ../../include/ItemObject.php:278
+#, php-format
+msgid "Expires: %s"
msgstr ""
-#: ../../include/features.php:70
-msgid "Tag Cloud"
+#: ../../include/conversation.php:717
+msgid "View in context"
msgstr ""
-#: ../../include/features.php:70
-msgid "Provide a personal tag cloud on your channel page"
+#: ../../include/conversation.php:719 ../../include/conversation.php:1142
+#: ../../include/ItemObject.php:325 ../../mod/editpost.php:121
+#: ../../mod/mail.php:238 ../../mod/mail.php:353 ../../mod/editblock.php:152
+#: ../../mod/editlayout.php:148 ../../mod/editwebpage.php:183
+#: ../../mod/photos.php:975
+msgid "Please wait"
msgstr ""
-#: ../../include/follow.php:23
-msgid "Channel is blocked on this site."
+#: ../../include/conversation.php:835
+msgid "remove"
msgstr ""
-#: ../../include/follow.php:28
-msgid "Channel location missing."
+#: ../../include/conversation.php:839 ../../include/nav.php:257
+msgid "Loading..."
msgstr ""
-#: ../../include/follow.php:54
-msgid "Response from remote channel was incomplete."
+#: ../../include/conversation.php:840
+msgid "Delete Selected Items"
msgstr ""
-#: ../../include/follow.php:85
-msgid "Channel was deleted and no longer exists."
+#: ../../include/conversation.php:931
+msgid "View Source"
msgstr ""
-#: ../../include/follow.php:132
-msgid "Channel discovery failed."
+#: ../../include/conversation.php:932
+msgid "Follow Thread"
msgstr ""
-#: ../../include/follow.php:149
-msgid "local account not found."
+#: ../../include/conversation.php:933
+msgid "View Status"
msgstr ""
-#: ../../include/follow.php:158
-msgid "Cannot connect to yourself."
+#: ../../include/conversation.php:934 ../../include/nav.php:99
+#: ../../mod/connedit.php:429 ../../mod/connedit.php:545
+msgid "View Profile"
msgstr ""
-#: ../../include/group.php:25
-msgid ""
-"A deleted group with this name was revived. Existing item permissions "
-"<strong>may</strong> apply to this group and any future members. If this is "
-"not what you intended, please create another group with a different name."
+#: ../../include/conversation.php:935
+msgid "View Photos"
msgstr ""
-#: ../../include/group.php:223
-msgid "Default privacy group for new contacts"
+#: ../../include/conversation.php:936
+msgid "Matrix Activity"
msgstr ""
-#: ../../include/group.php:242 ../../mod/admin.php:763
-msgid "All Channels"
+#: ../../include/conversation.php:938
+msgid "Edit Contact"
msgstr ""
-#: ../../include/group.php:264
-msgid "edit"
+#: ../../include/conversation.php:939
+msgid "Send PM"
msgstr ""
-#: ../../include/group.php:285
-msgid "Collections"
+#: ../../include/conversation.php:940 ../../include/apps.php:145
+msgid "Poke"
msgstr ""
-#: ../../include/group.php:286
-msgid "Edit collection"
+#: ../../include/conversation.php:1013
+#, php-format
+msgid "%s likes this."
msgstr ""
-#: ../../include/group.php:287
-msgid "Create a new collection"
+#: ../../include/conversation.php:1013
+#, php-format
+msgid "%s doesn't like this."
msgstr ""
-#: ../../include/group.php:288
-msgid "Channels not in any collection"
+#: ../../include/conversation.php:1017
+#, php-format
+msgid "<span %1$s>%2$d people</span> like this."
+msgid_plural "<span %1$s>%2$d people</span> like this."
+msgstr[0] ""
+msgstr[1] ""
+
+#: ../../include/conversation.php:1019
+#, php-format
+msgid "<span %1$s>%2$d people</span> don't like this."
+msgid_plural "<span %1$s>%2$d people</span> don't like this."
+msgstr[0] ""
+msgstr[1] ""
+
+#: ../../include/conversation.php:1025
+msgid "and"
msgstr ""
-#: ../../include/group.php:290 ../../include/widgets.php:266
-msgid "add"
+#: ../../include/conversation.php:1028
+#, php-format
+msgid ", and %d other people"
+msgid_plural ", and %d other people"
+msgstr[0] ""
+msgstr[1] ""
+
+#: ../../include/conversation.php:1029
+#, php-format
+msgid "%s like this."
msgstr ""
-#: ../../include/identity.php:30 ../../mod/item.php:1280
-msgid "Unable to obtain identity information from database"
+#: ../../include/conversation.php:1029
+#, php-format
+msgid "%s don't like this."
msgstr ""
-#: ../../include/identity.php:63
-msgid "Empty name"
+#: ../../include/conversation.php:1086
+msgid "Visible to <strong>everybody</strong>"
msgstr ""
-#: ../../include/identity.php:65
-msgid "Name too long"
+#: ../../include/conversation.php:1087 ../../mod/mail.php:171
+#: ../../mod/mail.php:286
+msgid "Please enter a link URL:"
msgstr ""
-#: ../../include/identity.php:166
-msgid "No account identifier"
+#: ../../include/conversation.php:1088
+msgid "Please enter a video link/URL:"
msgstr ""
-#: ../../include/identity.php:176
-msgid "Nickname is required."
+#: ../../include/conversation.php:1089
+msgid "Please enter an audio link/URL:"
msgstr ""
-#: ../../include/identity.php:190
-msgid "Reserved nickname. Please choose another."
+#: ../../include/conversation.php:1090
+msgid "Tag term:"
msgstr ""
-#: ../../include/identity.php:195
-msgid ""
-"Nickname has unsupported characters or is already being used on this site."
+#: ../../include/conversation.php:1091 ../../mod/filer.php:49
+msgid "Save to Folder:"
msgstr ""
-#: ../../include/identity.php:258
-msgid "Unable to retrieve created identity"
+#: ../../include/conversation.php:1092
+msgid "Where are you right now?"
msgstr ""
-#: ../../include/identity.php:317
-msgid "Default Profile"
+#: ../../include/conversation.php:1093 ../../mod/editpost.php:52
+#: ../../mod/mail.php:172 ../../mod/mail.php:287
+msgid "Expires YYYY-MM-DD HH:MM"
msgstr ""
-#: ../../include/identity.php:342 ../../include/widgets.php:400
-#: ../../include/profile_selectors.php:42 ../../mod/connedit.php:431
-msgid "Friends"
+#: ../../include/conversation.php:1117 ../../mod/editblock.php:198
+#: ../../mod/editlayout.php:193 ../../mod/editwebpage.php:230
+#: ../../mod/layouts.php:168 ../../mod/photos.php:974
+msgid "Share"
msgstr ""
-#: ../../include/identity.php:509
-msgid "Requested channel is not available."
+#: ../../include/conversation.php:1119 ../../mod/editwebpage.php:170
+msgid "Page link title"
msgstr ""
-#: ../../include/identity.php:557 ../../mod/achievements.php:8
-#: ../../mod/profile.php:16 ../../mod/blocks.php:10 ../../mod/connect.php:13
-#: ../../mod/filestorage.php:40 ../../mod/layouts.php:8
-#: ../../mod/webpages.php:8
-msgid "Requested profile is not available."
+#: ../../include/conversation.php:1122
+msgid "Post as"
msgstr ""
-#: ../../include/identity.php:675 ../../include/widgets.php:128
-#: ../../include/widgets.php:168 ../../include/Contact.php:107
-#: ../../mod/directory.php:183 ../../mod/dirprofile.php:164
-#: ../../mod/suggest.php:51 ../../mod/match.php:62
-msgid "Connect"
+#: ../../include/conversation.php:1123 ../../mod/editpost.php:113
+#: ../../mod/mail.php:235 ../../mod/mail.php:349 ../../mod/editblock.php:144
+#: ../../mod/editlayout.php:140 ../../mod/editwebpage.php:175
+msgid "Upload photo"
msgstr ""
-#: ../../include/identity.php:689 ../../mod/profiles.php:612
-msgid "Change profile photo"
+#: ../../include/conversation.php:1124
+msgid "upload photo"
msgstr ""
-#: ../../include/identity.php:695
-msgid "Profiles"
+#: ../../include/conversation.php:1125 ../../mod/editpost.php:114
+#: ../../mod/mail.php:236 ../../mod/mail.php:350 ../../mod/editblock.php:145
+#: ../../mod/editlayout.php:141 ../../mod/editwebpage.php:176
+msgid "Attach file"
msgstr ""
-#: ../../include/identity.php:695
-msgid "Manage/edit profiles"
+#: ../../include/conversation.php:1126
+msgid "attach file"
msgstr ""
-#: ../../include/identity.php:696 ../../mod/profiles.php:613
-msgid "Create New Profile"
+#: ../../include/conversation.php:1127 ../../mod/editpost.php:115
+#: ../../mod/mail.php:237 ../../mod/mail.php:351 ../../mod/editblock.php:146
+#: ../../mod/editlayout.php:142 ../../mod/editwebpage.php:177
+msgid "Insert web link"
msgstr ""
-#: ../../include/identity.php:699
-msgid "Edit Profile"
+#: ../../include/conversation.php:1128
+msgid "web link"
msgstr ""
-#: ../../include/identity.php:710 ../../mod/profiles.php:624
-msgid "Profile Image"
+#: ../../include/conversation.php:1129
+msgid "Insert video link"
msgstr ""
-#: ../../include/identity.php:713 ../../mod/profiles.php:627
-msgid "visible to everybody"
+#: ../../include/conversation.php:1130
+msgid "video link"
msgstr ""
-#: ../../include/identity.php:714 ../../mod/profiles.php:628
-msgid "Edit visibility"
+#: ../../include/conversation.php:1131
+msgid "Insert audio link"
msgstr ""
-#: ../../include/identity.php:728 ../../include/identity.php:952
-#: ../../mod/directory.php:158
-msgid "Gender:"
+#: ../../include/conversation.php:1132
+msgid "audio link"
msgstr ""
-#: ../../include/identity.php:729 ../../include/identity.php:996
-#: ../../mod/directory.php:160
-msgid "Status:"
+#: ../../include/conversation.php:1133 ../../mod/editpost.php:119
+#: ../../mod/editblock.php:150 ../../mod/editlayout.php:146
+#: ../../mod/editwebpage.php:181
+msgid "Set your location"
msgstr ""
-#: ../../include/identity.php:730 ../../include/identity.php:1007
-#: ../../mod/directory.php:162
-msgid "Homepage:"
+#: ../../include/conversation.php:1134
+msgid "set location"
msgstr ""
-#: ../../include/identity.php:731 ../../mod/dirprofile.php:151
-msgid "Online Now"
+#: ../../include/conversation.php:1135 ../../mod/editpost.php:120
+#: ../../mod/editblock.php:151 ../../mod/editlayout.php:147
+#: ../../mod/editwebpage.php:182
+msgid "Clear browser location"
msgstr ""
-#: ../../include/identity.php:796 ../../include/identity.php:876
-#: ../../mod/ping.php:298
-msgid "g A l F d"
+#: ../../include/conversation.php:1136
+msgid "clear location"
msgstr ""
-#: ../../include/identity.php:797 ../../include/identity.php:877
-msgid "F d"
+#: ../../include/conversation.php:1138 ../../mod/editpost.php:132
+#: ../../mod/editblock.php:164 ../../mod/editlayout.php:159
+#: ../../mod/editwebpage.php:198
+msgid "Title (optional)"
msgstr ""
-#: ../../include/identity.php:842 ../../include/identity.php:917
-#: ../../mod/ping.php:320
-msgid "[today]"
+#: ../../include/conversation.php:1141 ../../mod/editpost.php:134
+#: ../../mod/editblock.php:167 ../../mod/editlayout.php:162
+#: ../../mod/editwebpage.php:200
+msgid "Categories (optional, comma-separated list)"
msgstr ""
-#: ../../include/identity.php:854
-msgid "Birthday Reminders"
+#: ../../include/conversation.php:1143 ../../mod/editpost.php:122
+#: ../../mod/editblock.php:153 ../../mod/editlayout.php:149
+#: ../../mod/editwebpage.php:184
+msgid "Permission settings"
msgstr ""
-#: ../../include/identity.php:855
-msgid "Birthdays this week:"
+#: ../../include/conversation.php:1144
+msgid "permissions"
msgstr ""
-#: ../../include/identity.php:910
-msgid "[No description]"
+#: ../../include/conversation.php:1151 ../../mod/editpost.php:129
+#: ../../mod/editblock.php:161 ../../mod/editlayout.php:156
+#: ../../mod/editwebpage.php:193
+msgid "Public post"
msgstr ""
-#: ../../include/identity.php:928
-msgid "Event Reminders"
+#: ../../include/conversation.php:1153 ../../mod/editpost.php:135
+#: ../../mod/editblock.php:168 ../../mod/editlayout.php:163
+#: ../../mod/editwebpage.php:201
+msgid "Example: bob@example.com, mary@example.com"
msgstr ""
-#: ../../include/identity.php:929
-msgid "Events this week:"
+#: ../../include/conversation.php:1166 ../../mod/editpost.php:146
+#: ../../mod/mail.php:242 ../../mod/mail.php:356 ../../mod/editblock.php:178
+#: ../../mod/editlayout.php:173 ../../mod/editwebpage.php:210
+msgid "Set expiration date"
msgstr ""
-#: ../../include/identity.php:942 ../../include/identity.php:1050
-#: ../../include/apps.php:133 ../../mod/profperm.php:112
-msgid "Profile"
+#: ../../include/conversation.php:1168 ../../include/ItemObject.php:641
+#: ../../mod/editpost.php:148 ../../mod/mail.php:244 ../../mod/mail.php:358
+msgid "Encrypt text"
msgstr ""
-#: ../../include/identity.php:950 ../../mod/settings.php:935
-msgid "Full Name:"
+#: ../../include/conversation.php:1170 ../../mod/events.php:580
+#: ../../mod/editpost.php:150
+msgid "OK"
msgstr ""
-#: ../../include/identity.php:957
-msgid "Like this channel"
+#: ../../include/conversation.php:1171 ../../mod/events.php:579
+#: ../../mod/editpost.php:151 ../../mod/settings.php:578
+#: ../../mod/settings.php:604 ../../mod/fbrowser.php:82
+#: ../../mod/fbrowser.php:117 ../../mod/tagrm.php:11 ../../mod/tagrm.php:134
+msgid "Cancel"
msgstr ""
-#: ../../include/identity.php:981
-msgid "j F, Y"
+#: ../../include/conversation.php:1415
+msgid "Discover"
msgstr ""
-#: ../../include/identity.php:982
-msgid "j F"
+#: ../../include/conversation.php:1418
+msgid "Imported public streams"
msgstr ""
-#: ../../include/identity.php:989
-msgid "Birthday:"
+#: ../../include/conversation.php:1423
+msgid "Commented Order"
msgstr ""
-#: ../../include/identity.php:993
-msgid "Age:"
+#: ../../include/conversation.php:1426
+msgid "Sort by Comment Date"
msgstr ""
-#: ../../include/identity.php:1002
-#, php-format
-msgid "for %1$d %2$s"
+#: ../../include/conversation.php:1430
+msgid "Posted Order"
msgstr ""
-#: ../../include/identity.php:1005 ../../mod/profiles.php:535
-msgid "Sexual Preference:"
+#: ../../include/conversation.php:1433
+msgid "Sort by Post Date"
msgstr ""
-#: ../../include/identity.php:1009 ../../mod/profiles.php:537
-msgid "Hometown:"
+#: ../../include/conversation.php:1438 ../../include/widgets.php:94
+msgid "Personal"
msgstr ""
-#: ../../include/identity.php:1011
-msgid "Tags:"
+#: ../../include/conversation.php:1441
+msgid "Posts that mention or involve you"
msgstr ""
-#: ../../include/identity.php:1013 ../../mod/profiles.php:538
-msgid "Political Views:"
+#: ../../include/conversation.php:1447 ../../mod/connections.php:211
+#: ../../mod/connections.php:224 ../../mod/menu.php:80
+msgid "New"
msgstr ""
-#: ../../include/identity.php:1015
-msgid "Religion:"
+#: ../../include/conversation.php:1450
+msgid "Activity Stream - by date"
msgstr ""
-#: ../../include/identity.php:1017 ../../mod/directory.php:164
-msgid "About:"
+#: ../../include/conversation.php:1456
+msgid "Starred"
msgstr ""
-#: ../../include/identity.php:1019
-msgid "Hobbies/Interests:"
+#: ../../include/conversation.php:1459
+msgid "Favourite Posts"
msgstr ""
-#: ../../include/identity.php:1021 ../../mod/profiles.php:541
-msgid "Likes:"
+#: ../../include/conversation.php:1466
+msgid "Spam"
msgstr ""
-#: ../../include/identity.php:1023 ../../mod/profiles.php:542
-msgid "Dislikes:"
+#: ../../include/conversation.php:1469
+msgid "Posts flagged as SPAM"
msgstr ""
-#: ../../include/identity.php:1026
-msgid "Contact information and Social Networks:"
+#: ../../include/conversation.php:1509 ../../mod/admin.php:865
+msgid "Channel"
msgstr ""
-#: ../../include/identity.php:1028
-msgid "My other channels:"
+#: ../../include/conversation.php:1512
+msgid "Status Messages and Posts"
msgstr ""
-#: ../../include/identity.php:1030
-msgid "Musical interests:"
+#: ../../include/conversation.php:1521
+msgid "About"
msgstr ""
-#: ../../include/identity.php:1032
-msgid "Books, literature:"
+#: ../../include/conversation.php:1524
+msgid "Profile Details"
msgstr ""
-#: ../../include/identity.php:1034
-msgid "Television:"
+#: ../../include/conversation.php:1530 ../../include/apps.php:139
+#: ../../include/nav.php:105 ../../mod/fbrowser.php:25
+msgid "Photos"
msgstr ""
-#: ../../include/identity.php:1036
-msgid "Film/dance/culture/entertainment:"
+#: ../../include/conversation.php:1542
+msgid "Files and Storage"
msgstr ""
-#: ../../include/identity.php:1038
-msgid "Love/Romance:"
+#: ../../include/conversation.php:1552 ../../include/conversation.php:1555
+msgid "Chatrooms"
msgstr ""
-#: ../../include/identity.php:1040
-msgid "Work/employment:"
+#: ../../include/conversation.php:1565 ../../include/apps.php:129
+#: ../../include/nav.php:117
+msgid "Bookmarks"
msgstr ""
-#: ../../include/identity.php:1042
-msgid "School/education:"
+#: ../../include/conversation.php:1568
+msgid "Saved Bookmarks"
msgstr ""
-#: ../../include/identity.php:1052
-msgid "Like this thing"
+#: ../../include/conversation.php:1576 ../../include/apps.php:136
+#: ../../include/nav.php:121 ../../mod/webpages.php:160
+msgid "Webpages"
msgstr ""
-#: ../../include/network.php:652
-msgid "view full size"
+#: ../../include/conversation.php:1579
+msgid "Manage Webpages"
msgstr ""
-#: ../../include/text.php:320
-msgid "prev"
+#: ../../include/widgets.php:91 ../../include/nav.php:171
+#: ../../mod/apps.php:34
+msgid "Apps"
msgstr ""
-#: ../../include/text.php:322
-msgid "first"
+#: ../../include/widgets.php:92
+msgid "System"
msgstr ""
-#: ../../include/text.php:351
-msgid "last"
+#: ../../include/widgets.php:95
+msgid "Create Personal App"
msgstr ""
-#: ../../include/text.php:354
-msgid "next"
+#: ../../include/widgets.php:96
+msgid "Edit Personal App"
msgstr ""
-#: ../../include/text.php:366
-msgid "older"
+#: ../../include/widgets.php:138 ../../mod/suggest.php:53
+msgid "Ignore/Hide"
msgstr ""
-#: ../../include/text.php:368
-msgid "newer"
+#: ../../include/widgets.php:143 ../../mod/connections.php:267
+msgid "Suggestions"
msgstr ""
-#: ../../include/text.php:729
-msgid "No connections"
+#: ../../include/widgets.php:144
+msgid "See more..."
msgstr ""
-#: ../../include/text.php:742
+#: ../../include/widgets.php:166
#, php-format
-msgid "%d Connection"
-msgid_plural "%d Connections"
-msgstr[0] ""
-msgstr[1] ""
+msgid "You have %1$.0f of %2$.0f allowed connections."
+msgstr ""
-#: ../../include/text.php:754
-msgid "View Connections"
+#: ../../include/widgets.php:172
+msgid "Add New Connection"
msgstr ""
-#: ../../include/text.php:815 ../../include/text.php:829
-#: ../../include/widgets.php:186 ../../mod/rbmark.php:28
-#: ../../mod/rbmark.php:98 ../../mod/filer.php:50
-msgid "Save"
+#: ../../include/widgets.php:173
+msgid "Enter the channel address"
msgstr ""
-#: ../../include/text.php:895
-msgid "poke"
+#: ../../include/widgets.php:174
+msgid "Example: bob@example.com, http://example.com/barbara"
msgstr ""
-#: ../../include/text.php:896
-msgid "ping"
+#: ../../include/widgets.php:190
+msgid "Notes"
msgstr ""
-#: ../../include/text.php:896
-msgid "pinged"
+#: ../../include/widgets.php:264
+msgid "Remove term"
msgstr ""
-#: ../../include/text.php:897
-msgid "prod"
+#: ../../include/widgets.php:347
+msgid "Archives"
msgstr ""
-#: ../../include/text.php:897
-msgid "prodded"
+#: ../../include/widgets.php:425
+msgid "Refresh"
msgstr ""
-#: ../../include/text.php:898
-msgid "slap"
+#: ../../include/widgets.php:426 ../../mod/connedit.php:506
+msgid "Me"
msgstr ""
-#: ../../include/text.php:898
-msgid "slapped"
+#: ../../include/widgets.php:427 ../../mod/connedit.php:509
+msgid "Best Friends"
msgstr ""
-#: ../../include/text.php:899
-msgid "finger"
+#: ../../include/widgets.php:429
+msgid "Co-workers"
msgstr ""
-#: ../../include/text.php:899
-msgid "fingered"
+#: ../../include/widgets.php:430 ../../mod/connedit.php:511
+msgid "Former Friends"
msgstr ""
-#: ../../include/text.php:900
-msgid "rebuff"
+#: ../../include/widgets.php:431 ../../mod/connedit.php:512
+msgid "Acquaintances"
msgstr ""
-#: ../../include/text.php:900
-msgid "rebuffed"
+#: ../../include/widgets.php:432
+msgid "Everybody"
msgstr ""
-#: ../../include/text.php:909
-msgid "happy"
+#: ../../include/widgets.php:466
+msgid "Account settings"
msgstr ""
-#: ../../include/text.php:910
-msgid "sad"
+#: ../../include/widgets.php:472
+msgid "Channel settings"
msgstr ""
-#: ../../include/text.php:911
-msgid "mellow"
+#: ../../include/widgets.php:478
+msgid "Additional features"
msgstr ""
-#: ../../include/text.php:912
-msgid "tired"
+#: ../../include/widgets.php:484
+msgid "Feature settings"
msgstr ""
-#: ../../include/text.php:913
-msgid "perky"
+#: ../../include/widgets.php:490
+msgid "Display settings"
msgstr ""
-#: ../../include/text.php:914
-msgid "angry"
+#: ../../include/widgets.php:496
+msgid "Connected apps"
msgstr ""
-#: ../../include/text.php:915
-msgid "stupified"
+#: ../../include/widgets.php:502
+msgid "Export channel"
msgstr ""
-#: ../../include/text.php:916
-msgid "puzzled"
+#: ../../include/widgets.php:511 ../../mod/connedit.php:539
+msgid "Connection Default Permissions"
msgstr ""
-#: ../../include/text.php:917
-msgid "interested"
+#: ../../include/widgets.php:519
+msgid "Premium Channel Settings"
msgstr ""
-#: ../../include/text.php:918
-msgid "bitter"
+#: ../../include/widgets.php:535 ../../include/apps.php:134
+#: ../../include/nav.php:218 ../../mod/admin.php:951 ../../mod/admin.php:1156
+msgid "Settings"
msgstr ""
-#: ../../include/text.php:919
-msgid "cheerful"
+#: ../../include/widgets.php:548 ../../mod/mail.php:125
+#: ../../mod/message.php:31
+msgid "Messages"
msgstr ""
-#: ../../include/text.php:920
-msgid "alive"
+#: ../../include/widgets.php:551
+msgid "Check Mail"
msgstr ""
-#: ../../include/text.php:921
-msgid "annoyed"
+#: ../../include/widgets.php:556 ../../include/nav.php:209
+msgid "New Message"
msgstr ""
-#: ../../include/text.php:922
-msgid "anxious"
+#: ../../include/widgets.php:634
+msgid "Chat Rooms"
msgstr ""
-#: ../../include/text.php:923
-msgid "cranky"
+#: ../../include/widgets.php:654
+msgid "Bookmarked Chatrooms"
msgstr ""
-#: ../../include/text.php:924
-msgid "disturbed"
+#: ../../include/widgets.php:674
+msgid "Suggested Chatrooms"
msgstr ""
-#: ../../include/text.php:925
-msgid "frustrated"
+#: ../../include/widgets.php:801 ../../include/widgets.php:859
+msgid "photo/image"
msgstr ""
-#: ../../include/text.php:926
-msgid "depressed"
+#: ../../include/zot.php:664
+msgid "Invalid data packet"
msgstr ""
-#: ../../include/text.php:927
-msgid "motivated"
+#: ../../include/zot.php:680
+msgid "Unable to verify channel signature"
msgstr ""
-#: ../../include/text.php:928
-msgid "relaxed"
+#: ../../include/zot.php:1829
+#, php-format
+msgid "Unable to verify site signature for %s"
msgstr ""
-#: ../../include/text.php:929
-msgid "surprised"
+#: ../../include/ItemObject.php:130
+msgid "Save to Folder"
msgstr ""
-#: ../../include/text.php:1090
-msgid "Monday"
+#: ../../include/ItemObject.php:142 ../../include/ItemObject.php:154
+#: ../../mod/photos.php:1020 ../../mod/photos.php:1032
+msgid "View all"
msgstr ""
-#: ../../include/text.php:1090
-msgid "Tuesday"
+#: ../../include/ItemObject.php:151 ../../mod/photos.php:1029
+msgctxt "noun"
+msgid "Dislike"
+msgid_plural "Dislikes"
+msgstr[0] ""
+msgstr[1] ""
+
+#: ../../include/ItemObject.php:179
+msgid "Add Star"
msgstr ""
-#: ../../include/text.php:1090
-msgid "Wednesday"
+#: ../../include/ItemObject.php:180
+msgid "Remove Star"
msgstr ""
-#: ../../include/text.php:1090
-msgid "Thursday"
+#: ../../include/ItemObject.php:181
+msgid "Toggle Star Status"
msgstr ""
-#: ../../include/text.php:1090
-msgid "Friday"
+#: ../../include/ItemObject.php:185
+msgid "starred"
msgstr ""
-#: ../../include/text.php:1090
-msgid "Saturday"
+#: ../../include/ItemObject.php:203
+msgid "Add Tag"
msgstr ""
-#: ../../include/text.php:1090
-msgid "Sunday"
+#: ../../include/ItemObject.php:221 ../../mod/photos.php:972
+msgid "I like this (toggle)"
msgstr ""
-#: ../../include/text.php:1094
-msgid "January"
+#: ../../include/ItemObject.php:222 ../../mod/photos.php:973
+msgid "I don't like this (toggle)"
msgstr ""
-#: ../../include/text.php:1094
-msgid "February"
+#: ../../include/ItemObject.php:226
+msgid "Share This"
msgstr ""
-#: ../../include/text.php:1094
-msgid "March"
+#: ../../include/ItemObject.php:226
+msgid "share"
msgstr ""
-#: ../../include/text.php:1094
-msgid "April"
+#: ../../include/ItemObject.php:243
+#, php-format
+msgid "%d comment"
+msgid_plural "%d comments"
+msgstr[0] ""
+msgstr[1] ""
+
+#: ../../include/ItemObject.php:256 ../../include/ItemObject.php:257
+#, php-format
+msgid "View %s's profile - %s"
msgstr ""
-#: ../../include/text.php:1094
-msgid "May"
+#: ../../include/ItemObject.php:260
+msgid "to"
msgstr ""
-#: ../../include/text.php:1094
-msgid "June"
+#: ../../include/ItemObject.php:261
+msgid "via"
msgstr ""
-#: ../../include/text.php:1094
-msgid "July"
+#: ../../include/ItemObject.php:262
+msgid "Wall-to-Wall"
msgstr ""
-#: ../../include/text.php:1094
-msgid "August"
+#: ../../include/ItemObject.php:263
+msgid "via Wall-To-Wall:"
msgstr ""
-#: ../../include/text.php:1094
-msgid "September"
+#: ../../include/ItemObject.php:299
+msgid "Save Bookmarks"
msgstr ""
-#: ../../include/text.php:1094
-msgid "October"
+#: ../../include/ItemObject.php:300
+msgid "Add to Calendar"
msgstr ""
-#: ../../include/text.php:1094
-msgid "November"
+#: ../../include/ItemObject.php:309
+msgid "Mark all seen"
msgstr ""
-#: ../../include/text.php:1094
-msgid "December"
+#: ../../include/ItemObject.php:314 ../../mod/photos.php:1140
+msgctxt "noun"
+msgid "Likes"
msgstr ""
-#: ../../include/text.php:1172
-msgid "unknown.???"
+#: ../../include/ItemObject.php:315 ../../mod/photos.php:1141
+msgctxt "noun"
+msgid "Dislikes"
msgstr ""
-#: ../../include/text.php:1173
-msgid "bytes"
+#: ../../include/ItemObject.php:345 ../../include/js_strings.php:7
+msgid "[+] show all"
msgstr ""
-#: ../../include/text.php:1208
-msgid "remove category"
+#: ../../include/ItemObject.php:626 ../../mod/photos.php:991
+#: ../../mod/photos.php:1101
+msgid "This is you"
msgstr ""
-#: ../../include/text.php:1278
-msgid "remove from file"
+#: ../../include/ItemObject.php:628 ../../include/js_strings.php:6
+#: ../../mod/photos.php:993 ../../mod/photos.php:1103
+msgid "Comment"
msgstr ""
-#: ../../include/text.php:1343 ../../include/text.php:1355
-msgid "Click to open/close"
+#: ../../include/ItemObject.php:629 ../../mod/mood.php:135
+#: ../../mod/group.php:81 ../../mod/poke.php:166 ../../mod/profiles.php:650
+#: ../../mod/sources.php:104 ../../mod/sources.php:138
+#: ../../mod/events.php:598 ../../mod/chat.php:177 ../../mod/chat.php:211
+#: ../../mod/settings.php:577 ../../mod/settings.php:689
+#: ../../mod/settings.php:718 ../../mod/settings.php:741
+#: ../../mod/settings.php:823 ../../mod/settings.php:1016
+#: ../../mod/connedit.php:556 ../../mod/mail.php:352 ../../mod/pdledit.php:58
+#: ../../mod/thing.php:284 ../../mod/thing.php:327 ../../mod/fsuggest.php:108
+#: ../../mod/filestorage.php:150 ../../mod/connect.php:93
+#: ../../mod/locs.php:99 ../../mod/import.php:504 ../../mod/setup.php:313
+#: ../../mod/setup.php:358 ../../mod/admin.php:412 ../../mod/admin.php:723
+#: ../../mod/admin.php:859 ../../mod/admin.php:992 ../../mod/admin.php:1191
+#: ../../mod/admin.php:1278 ../../mod/invite.php:142 ../../mod/xchan.php:11
+#: ../../mod/photos.php:594 ../../mod/photos.php:671 ../../mod/photos.php:954
+#: ../../mod/photos.php:994 ../../mod/photos.php:1104 ../../mod/appman.php:99
+#: ../../mod/poll.php:68 ../../view/theme/apw/php/config.php:256
+#: ../../view/theme/redbasic/php/config.php:99
+msgid "Submit"
msgstr ""
-#: ../../include/text.php:1510 ../../mod/events.php:374
-msgid "Link to Source"
+#: ../../include/ItemObject.php:630
+msgid "Bold"
msgstr ""
-#: ../../include/text.php:1529
-msgid "Select a page layout: "
+#: ../../include/ItemObject.php:631
+msgid "Italic"
msgstr ""
-#: ../../include/text.php:1532 ../../include/text.php:1597
-msgid "default"
+#: ../../include/ItemObject.php:632
+msgid "Underline"
msgstr ""
-#: ../../include/text.php:1568
-msgid "Page content type: "
+#: ../../include/ItemObject.php:633
+msgid "Quote"
msgstr ""
-#: ../../include/text.php:1609
-msgid "Select an alternate language"
+#: ../../include/ItemObject.php:634
+msgid "Code"
msgstr ""
-#: ../../include/text.php:1743
-msgid "activity"
+#: ../../include/ItemObject.php:635
+msgid "Image"
msgstr ""
-#: ../../include/text.php:2002
-msgid "Design"
+#: ../../include/ItemObject.php:636
+msgid "Link"
msgstr ""
-#: ../../include/text.php:2004
-msgid "Blocks"
+#: ../../include/ItemObject.php:637
+msgid "Video"
msgstr ""
-#: ../../include/text.php:2005
-msgid "Menus"
+#: ../../include/datetime.php:35
+msgid "Miscellaneous"
msgstr ""
-#: ../../include/text.php:2006
-msgid "Layouts"
+#: ../../include/datetime.php:113
+msgid "YYYY-MM-DD or MM-DD"
msgstr ""
-#: ../../include/text.php:2007
-msgid "Pages"
+#: ../../include/datetime.php:230
+msgid "never"
msgstr ""
-#: ../../include/apps.php:123
-msgid "Site Admin"
+#: ../../include/datetime.php:236
+msgid "less than a second ago"
msgstr ""
-#: ../../include/apps.php:125
-msgid "Address Book"
+#: ../../include/datetime.php:239
+msgid "year"
msgstr ""
-#: ../../include/apps.php:139 ../../mod/mood.php:131
-msgid "Mood"
+#: ../../include/datetime.php:239
+msgid "years"
msgstr ""
-#: ../../include/apps.php:143
-msgid "Probe"
+#: ../../include/datetime.php:240
+msgid "month"
msgstr ""
-#: ../../include/apps.php:144
-msgid "Suggest"
+#: ../../include/datetime.php:240
+msgid "months"
msgstr ""
-#: ../../include/apps.php:233 ../../mod/settings.php:79
-#: ../../mod/settings.php:541
-msgid "Update"
+#: ../../include/datetime.php:241
+msgid "week"
msgstr ""
-#: ../../include/apps.php:233
-msgid "Install"
+#: ../../include/datetime.php:241
+msgid "weeks"
msgstr ""
-#: ../../include/apps.php:238
-msgid "Purchase"
+#: ../../include/datetime.php:242
+msgid "day"
msgstr ""
-#: ../../include/bbcode.php:128 ../../include/bbcode.php:654
-#: ../../include/bbcode.php:657 ../../include/bbcode.php:662
-#: ../../include/bbcode.php:665 ../../include/bbcode.php:668
-#: ../../include/bbcode.php:671 ../../include/bbcode.php:676
-#: ../../include/bbcode.php:679 ../../include/bbcode.php:684
-#: ../../include/bbcode.php:687 ../../include/bbcode.php:690
-#: ../../include/bbcode.php:693
-msgid "Image/photo"
+#: ../../include/datetime.php:242
+msgid "days"
msgstr ""
-#: ../../include/bbcode.php:163 ../../include/bbcode.php:704
-msgid "Encrypted content"
+#: ../../include/datetime.php:243
+msgid "hour"
msgstr ""
-#: ../../include/bbcode.php:179
-msgid "QR code"
+#: ../../include/datetime.php:243
+msgid "hours"
+msgstr ""
+
+#: ../../include/datetime.php:244
+msgid "minute"
msgstr ""
-#: ../../include/bbcode.php:228
+#: ../../include/datetime.php:244
+msgid "minutes"
+msgstr ""
+
+#: ../../include/datetime.php:245
+msgid "second"
+msgstr ""
+
+#: ../../include/datetime.php:245
+msgid "seconds"
+msgstr ""
+
+#: ../../include/datetime.php:254
#, php-format
-msgid "%1$s wrote the following %2$s %3$s"
+msgid "%1$d %2$s ago"
msgstr ""
-#: ../../include/bbcode.php:230
-msgid "post"
+#: ../../include/datetime.php:462
+#, php-format
+msgid "%1$s's birthday"
msgstr ""
-#: ../../include/bbcode.php:622 ../../include/bbcode.php:642
-msgid "$1 wrote:"
+#: ../../include/datetime.php:463
+#, php-format
+msgid "Happy Birthday %1$s"
msgstr ""
-#: ../../include/message.php:18
-msgid "No recipient provided."
+#: ../../include/apps.php:128
+msgid "Site Admin"
msgstr ""
-#: ../../include/message.php:23
-msgid "[no subject]"
+#: ../../include/apps.php:130
+msgid "Address Book"
msgstr ""
-#: ../../include/message.php:42
-msgid "Unable to determine sender."
+#: ../../include/apps.php:131 ../../include/nav.php:125 ../../boot.php:1542
+msgid "Login"
msgstr ""
-#: ../../include/message.php:143
-msgid "Stored post could not be verified."
+#: ../../include/apps.php:132 ../../include/nav.php:216
+#: ../../mod/manage.php:150
+msgid "Channel Manager"
msgstr ""
-#: ../../include/widgets.php:80
-msgid "System"
+#: ../../include/apps.php:133 ../../include/nav.php:190
+msgid "Matrix"
msgstr ""
-#: ../../include/widgets.php:83
-msgid "Create Personal App"
+#: ../../include/apps.php:137 ../../include/nav.php:193
+msgid "Channel Home"
msgstr ""
-#: ../../include/widgets.php:84
-msgid "Edit Personal App"
+#: ../../include/apps.php:140 ../../include/nav.php:212
+#: ../../mod/events.php:442
+msgid "Events"
msgstr ""
-#: ../../include/widgets.php:130 ../../mod/suggest.php:53
-msgid "Ignore/Hide"
+#: ../../include/apps.php:141 ../../include/nav.php:176
+#: ../../mod/directory.php:321
+msgid "Directory"
msgstr ""
-#: ../../include/widgets.php:136 ../../mod/connections.php:267
-msgid "Suggestions"
+#: ../../include/apps.php:142 ../../include/nav.php:168 ../../mod/help.php:58
+#: ../../mod/help.php:63
+msgid "Help"
msgstr ""
-#: ../../include/widgets.php:137
-msgid "See more..."
+#: ../../include/apps.php:143 ../../include/nav.php:204
+msgid "Mail"
msgstr ""
-#: ../../include/widgets.php:159
-#, php-format
-msgid "You have %1$.0f of %2$.0f allowed connections."
+#: ../../include/apps.php:144 ../../mod/mood.php:131
+msgid "Mood"
msgstr ""
-#: ../../include/widgets.php:165
-msgid "Add New Connection"
+#: ../../include/apps.php:146 ../../include/nav.php:111
+msgid "Chat"
msgstr ""
-#: ../../include/widgets.php:166
-msgid "Enter the channel address"
+#: ../../include/apps.php:148
+msgid "Probe"
msgstr ""
-#: ../../include/widgets.php:167
-msgid "Example: bob@example.com, http://example.com/barbara"
+#: ../../include/apps.php:149
+msgid "Suggest"
msgstr ""
-#: ../../include/widgets.php:184
-msgid "Notes"
+#: ../../include/apps.php:150
+msgid "Random Channel"
msgstr ""
-#: ../../include/widgets.php:256
-msgid "Remove term"
+#: ../../include/apps.php:151
+msgid "Invite"
msgstr ""
-#: ../../include/widgets.php:335
-msgid "Archives"
+#: ../../include/apps.php:152
+msgid "Features"
msgstr ""
-#: ../../include/widgets.php:397
-msgid "Refresh"
+#: ../../include/apps.php:153
+msgid "Language"
msgstr ""
-#: ../../include/widgets.php:398 ../../mod/connedit.php:428
-msgid "Me"
+#: ../../include/apps.php:154
+msgid "Post"
msgstr ""
-#: ../../include/widgets.php:399 ../../mod/connedit.php:430
-msgid "Best Friends"
+#: ../../include/apps.php:155
+msgid "Profile Photo"
msgstr ""
-#: ../../include/widgets.php:401
-msgid "Co-workers"
+#: ../../include/apps.php:247 ../../mod/settings.php:81
+#: ../../mod/settings.php:603
+msgid "Update"
msgstr ""
-#: ../../include/widgets.php:402 ../../mod/connedit.php:432
-msgid "Former Friends"
+#: ../../include/apps.php:247
+msgid "Install"
msgstr ""
-#: ../../include/widgets.php:403 ../../mod/connedit.php:433
-msgid "Acquaintances"
+#: ../../include/apps.php:252
+msgid "Purchase"
msgstr ""
-#: ../../include/widgets.php:404
-msgid "Everybody"
+#: ../../include/Contact.php:123
+msgid "New window"
msgstr ""
-#: ../../include/widgets.php:436
-msgid "Account settings"
+#: ../../include/Contact.php:124
+msgid "Open the selected location in a different window or browser tab"
msgstr ""
-#: ../../include/widgets.php:442
-msgid "Channel settings"
+#: ../../include/Contact.php:214 ../../mod/admin.php:646
+#, php-format
+msgid "User '%s' deleted"
msgstr ""
-#: ../../include/widgets.php:448
-msgid "Additional features"
+#: ../../include/bbcode.php:112 ../../include/bbcode.php:677
+#: ../../include/bbcode.php:680 ../../include/bbcode.php:685
+#: ../../include/bbcode.php:688 ../../include/bbcode.php:691
+#: ../../include/bbcode.php:694 ../../include/bbcode.php:699
+#: ../../include/bbcode.php:702 ../../include/bbcode.php:707
+#: ../../include/bbcode.php:710 ../../include/bbcode.php:713
+#: ../../include/bbcode.php:716
+msgid "Image/photo"
msgstr ""
-#: ../../include/widgets.php:454
-msgid "Feature settings"
+#: ../../include/bbcode.php:147 ../../include/bbcode.php:727
+msgid "Encrypted content"
msgstr ""
-#: ../../include/widgets.php:460
-msgid "Display settings"
+#: ../../include/bbcode.php:165
+msgid "Install design element: "
msgstr ""
-#: ../../include/widgets.php:466
-msgid "Connected apps"
+#: ../../include/bbcode.php:171
+msgid "QR code"
msgstr ""
-#: ../../include/widgets.php:472
-msgid "Export channel"
+#: ../../include/bbcode.php:220
+#, php-format
+msgid "%1$s wrote the following %2$s %3$s"
msgstr ""
-#: ../../include/widgets.php:484
-msgid "Automatic Permissions (Advanced)"
+#: ../../include/bbcode.php:222
+msgid "post"
msgstr ""
-#: ../../include/widgets.php:494
-msgid "Premium Channel Settings"
+#: ../../include/bbcode.php:645
+msgid "$1 spoiler"
msgstr ""
-#: ../../include/widgets.php:531
-msgid "Check Mail"
+#: ../../include/bbcode.php:665
+msgid "$1 wrote:"
msgstr ""
-#: ../../include/widgets.php:612
-msgid "Chat Rooms"
+#: ../../include/enotify.php:41
+msgid "Red Matrix Notification"
msgstr ""
-#: ../../include/widgets.php:630
-msgid "Bookmarked Chatrooms"
+#: ../../include/enotify.php:42
+msgid "redmatrix"
msgstr ""
-#: ../../include/widgets.php:648
-msgid "Suggested Chatrooms"
+#: ../../include/enotify.php:44
+msgid "Thank You,"
msgstr ""
-#: ../../include/ItemObject.php:118
-msgid "Save to Folder"
+#: ../../include/enotify.php:46
+#, php-format
+msgid "%s Administrator"
msgstr ""
-#: ../../include/ItemObject.php:130 ../../include/ItemObject.php:142
-msgid "View all"
+#: ../../include/enotify.php:81
+#, php-format
+msgid "%s <!item_type!>"
msgstr ""
-#: ../../include/ItemObject.php:139
-msgctxt "noun"
-msgid "Dislike"
-msgid_plural "Dislikes"
-msgstr[0] ""
-msgstr[1] ""
+#: ../../include/enotify.php:85
+#, php-format
+msgid "[Red:Notify] New mail received at %s"
+msgstr ""
-#: ../../include/ItemObject.php:167
-msgid "Add Star"
+#: ../../include/enotify.php:87
+#, php-format
+msgid "%1$s, %2$s sent you a new private message at %3$s."
msgstr ""
-#: ../../include/ItemObject.php:168
-msgid "Remove Star"
+#: ../../include/enotify.php:88
+#, php-format
+msgid "%1$s sent you %2$s."
msgstr ""
-#: ../../include/ItemObject.php:169
-msgid "Toggle Star Status"
+#: ../../include/enotify.php:88
+msgid "a private message"
msgstr ""
-#: ../../include/ItemObject.php:173
-msgid "starred"
+#: ../../include/enotify.php:89
+#, php-format
+msgid "Please visit %s to view and/or reply to your private messages."
msgstr ""
-#: ../../include/ItemObject.php:190
-msgid "Add Tag"
+#: ../../include/enotify.php:144
+#, php-format
+msgid "%1$s, %2$s commented on [zrl=%3$s]a %4$s[/zrl]"
msgstr ""
-#: ../../include/ItemObject.php:208 ../../mod/photos.php:974
-msgid "I like this (toggle)"
+#: ../../include/enotify.php:152
+#, php-format
+msgid "%1$s, %2$s commented on [zrl=%3$s]%4$s's %5$s[/zrl]"
msgstr ""
-#: ../../include/ItemObject.php:209 ../../mod/photos.php:975
-msgid "I don't like this (toggle)"
+#: ../../include/enotify.php:161
+#, php-format
+msgid "%1$s, %2$s commented on [zrl=%3$s]your %4$s[/zrl]"
msgstr ""
-#: ../../include/ItemObject.php:211
-msgid "Share This"
+#: ../../include/enotify.php:172
+#, php-format
+msgid "[Red:Notify] Comment to conversation #%1$d by %2$s"
msgstr ""
-#: ../../include/ItemObject.php:211
-msgid "share"
+#: ../../include/enotify.php:173
+#, php-format
+msgid "%1$s, %2$s commented on an item/conversation you have been following."
msgstr ""
-#: ../../include/ItemObject.php:235 ../../include/ItemObject.php:236
+#: ../../include/enotify.php:176 ../../include/enotify.php:191
+#: ../../include/enotify.php:217 ../../include/enotify.php:236
+#: ../../include/enotify.php:250
#, php-format
-msgid "View %s's profile - %s"
+msgid "Please visit %s to view and/or reply to the conversation."
msgstr ""
-#: ../../include/ItemObject.php:237
-msgid "to"
+#: ../../include/enotify.php:182
+#, php-format
+msgid "[Red:Notify] %s posted to your profile wall"
msgstr ""
-#: ../../include/ItemObject.php:238
-msgid "via"
+#: ../../include/enotify.php:184
+#, php-format
+msgid "%1$s, %2$s posted to your profile wall at %3$s"
msgstr ""
-#: ../../include/ItemObject.php:239
-msgid "Wall-to-Wall"
+#: ../../include/enotify.php:186
+#, php-format
+msgid "%1$s, %2$s posted to [zrl=%3$s]your wall[/zrl]"
msgstr ""
-#: ../../include/ItemObject.php:240
-msgid "via Wall-To-Wall:"
+#: ../../include/enotify.php:210
+#, php-format
+msgid "[Red:Notify] %s tagged you"
msgstr ""
-#: ../../include/ItemObject.php:274
-msgid "Save Bookmarks"
+#: ../../include/enotify.php:211
+#, php-format
+msgid "%1$s, %2$s tagged you at %3$s"
msgstr ""
-#: ../../include/ItemObject.php:275
-msgid "Add to Calendar"
+#: ../../include/enotify.php:212
+#, php-format
+msgid "%1$s, %2$s [zrl=%3$s]tagged you[/zrl]."
msgstr ""
-#: ../../include/ItemObject.php:283
-msgctxt "noun"
-msgid "Likes"
+#: ../../include/enotify.php:225
+#, php-format
+msgid "[Red:Notify] %1$s poked you"
msgstr ""
-#: ../../include/ItemObject.php:284
-msgctxt "noun"
-msgid "Dislikes"
+#: ../../include/enotify.php:226
+#, php-format
+msgid "%1$s, %2$s poked you at %3$s"
msgstr ""
-#: ../../include/ItemObject.php:315
+#: ../../include/enotify.php:227
#, php-format
-msgid "%d comment"
-msgid_plural "%d comments"
-msgstr[0] ""
-msgstr[1] ""
+msgid "%1$s, %2$s [zrl=%2$s]poked you[/zrl]."
+msgstr ""
-#: ../../include/ItemObject.php:316 ../../include/js_strings.php:7
-msgid "[+] show all"
+#: ../../include/enotify.php:243
+#, php-format
+msgid "[Red:Notify] %s tagged your post"
msgstr ""
-#: ../../include/ItemObject.php:580 ../../mod/photos.php:993
-#: ../../mod/photos.php:1080
-msgid "This is you"
+#: ../../include/enotify.php:244
+#, php-format
+msgid "%1$s, %2$s tagged your post at %3$s"
msgstr ""
-#: ../../include/ItemObject.php:582 ../../include/js_strings.php:6
-#: ../../mod/photos.php:995 ../../mod/photos.php:1082
-msgid "Comment"
+#: ../../include/enotify.php:245
+#, php-format
+msgid "%1$s, %2$s tagged [zrl=%3$s]your post[/zrl]"
msgstr ""
-#: ../../include/ItemObject.php:583 ../../mod/mood.php:135
-#: ../../mod/settings.php:515 ../../mod/settings.php:627
-#: ../../mod/settings.php:655 ../../mod/settings.php:679
-#: ../../mod/settings.php:749 ../../mod/settings.php:927
-#: ../../mod/poke.php:166 ../../mod/profiles.php:515 ../../mod/chat.php:177
-#: ../../mod/chat.php:211 ../../mod/connect.php:92 ../../mod/connedit.php:476
-#: ../../mod/setup.php:307 ../../mod/setup.php:350 ../../mod/pdledit.php:58
-#: ../../mod/photos.php:563 ../../mod/photos.php:668 ../../mod/photos.php:956
-#: ../../mod/photos.php:996 ../../mod/photos.php:1083
-#: ../../mod/sources.php:104 ../../mod/sources.php:138
-#: ../../mod/events.php:511 ../../mod/filestorage.php:137
-#: ../../mod/fsuggest.php:108 ../../mod/group.php:81 ../../mod/admin.php:442
-#: ../../mod/admin.php:751 ../../mod/admin.php:886 ../../mod/admin.php:1019
-#: ../../mod/admin.php:1218 ../../mod/admin.php:1305 ../../mod/thing.php:286
-#: ../../mod/thing.php:329 ../../mod/import.php:393 ../../mod/invite.php:156
-#: ../../mod/mail.php:219 ../../mod/mail.php:332 ../../mod/appman.php:99
-#: ../../view/theme/apw/php/config.php:256
-#: ../../view/theme/blogga/php/config.php:67
-#: ../../view/theme/blogga/view/theme/blog/config.php:67
-#: ../../view/theme/redbasic/php/config.php:99
-msgid "Submit"
+#: ../../include/enotify.php:257
+msgid "[Red:Notify] Introduction received"
msgstr ""
-#: ../../include/ItemObject.php:584
-msgid "Bold"
+#: ../../include/enotify.php:258
+#, php-format
+msgid "%1$s, you've received an new connection request from '%2$s' at %3$s"
msgstr ""
-#: ../../include/ItemObject.php:585
-msgid "Italic"
+#: ../../include/enotify.php:259
+#, php-format
+msgid ""
+"%1$s, you've received [zrl=%2$s]a new connection request[/zrl] from %3$s."
msgstr ""
-#: ../../include/ItemObject.php:586
-msgid "Underline"
+#: ../../include/enotify.php:263 ../../include/enotify.php:282
+#, php-format
+msgid "You may visit their profile at %s"
msgstr ""
-#: ../../include/ItemObject.php:587
-msgid "Quote"
+#: ../../include/enotify.php:265
+#, php-format
+msgid "Please visit %s to approve or reject the connection request."
msgstr ""
-#: ../../include/ItemObject.php:588
-msgid "Code"
+#: ../../include/enotify.php:272
+msgid "[Red:Notify] Friend suggestion received"
msgstr ""
-#: ../../include/ItemObject.php:589
-msgid "Image"
+#: ../../include/enotify.php:273
+#, php-format
+msgid "%1$s, you've received a friend suggestion from '%2$s' at %3$s"
msgstr ""
-#: ../../include/ItemObject.php:590
-msgid "Link"
+#: ../../include/enotify.php:274
+#, php-format
+msgid ""
+"%1$s, you've received [zrl=%2$s]a friend suggestion[/zrl] for %3$s from %4$s."
msgstr ""
-#: ../../include/ItemObject.php:591
-msgid "Video"
+#: ../../include/enotify.php:280
+msgid "Name:"
+msgstr ""
+
+#: ../../include/enotify.php:281
+msgid "Photo:"
+msgstr ""
+
+#: ../../include/enotify.php:284
+#, php-format
+msgid "Please visit %s to approve or reject the suggestion."
+msgstr ""
+
+#: ../../include/enotify.php:490
+msgid "[Red:Notify]"
msgstr ""
#: ../../include/js_strings.php:5
@@ -3021,92 +3150,90 @@ msgstr ""
msgid "close all"
msgstr ""
-#: ../../include/js_strings.php:19
-msgid "timeago.prefixAgo"
+#: ../../include/js_strings.php:18
+msgid "Nothing new here"
msgstr ""
#: ../../include/js_strings.php:20
-msgid "timeago.prefixFromNow"
+msgid "timeago.prefixAgo"
msgstr ""
#: ../../include/js_strings.php:21
-msgid "ago"
+msgid "timeago.prefixFromNow"
msgstr ""
#: ../../include/js_strings.php:22
-msgid "from now"
+msgid "ago"
msgstr ""
#: ../../include/js_strings.php:23
-msgid "less than a minute"
+msgid "from now"
msgstr ""
#: ../../include/js_strings.php:24
-msgid "about a minute"
+msgid "less than a minute"
msgstr ""
#: ../../include/js_strings.php:25
+msgid "about a minute"
+msgstr ""
+
+#: ../../include/js_strings.php:26
#, php-format
msgid "%d minutes"
msgstr ""
-#: ../../include/js_strings.php:26
+#: ../../include/js_strings.php:27
msgid "about an hour"
msgstr ""
-#: ../../include/js_strings.php:27
+#: ../../include/js_strings.php:28
#, php-format
msgid "about %d hours"
msgstr ""
-#: ../../include/js_strings.php:28
+#: ../../include/js_strings.php:29
msgid "a day"
msgstr ""
-#: ../../include/js_strings.php:29
+#: ../../include/js_strings.php:30
#, php-format
msgid "%d days"
msgstr ""
-#: ../../include/js_strings.php:30
+#: ../../include/js_strings.php:31
msgid "about a month"
msgstr ""
-#: ../../include/js_strings.php:31
+#: ../../include/js_strings.php:32
#, php-format
msgid "%d months"
msgstr ""
-#: ../../include/js_strings.php:32
+#: ../../include/js_strings.php:33
msgid "about a year"
msgstr ""
-#: ../../include/js_strings.php:33
+#: ../../include/js_strings.php:34
#, php-format
msgid "%d years"
msgstr ""
-#: ../../include/js_strings.php:34
+#: ../../include/js_strings.php:35
msgid " "
msgstr ""
-#: ../../include/js_strings.php:35
+#: ../../include/js_strings.php:36
msgid "timeago.numbers"
msgstr ""
-#: ../../include/Contact.php:123
-msgid "New window"
-msgstr ""
-
-#: ../../include/Contact.php:124
-msgid "Open the selected location in a different window or browser tab"
-msgstr ""
-
#: ../../include/profile_selectors.php:6
+#: ../../include/profile_selectors.php:23
msgid "Male"
msgstr ""
#: ../../include/profile_selectors.php:6
+#: ../../include/profile_selectors.php:23
msgid "Female"
msgstr ""
@@ -3151,1667 +3278,2121 @@ msgid "Non-specific"
msgstr ""
#: ../../include/profile_selectors.php:6
-msgid "Other"
-msgstr ""
-
-#: ../../include/profile_selectors.php:6
msgid "Undecided"
msgstr ""
-#: ../../include/profile_selectors.php:23
+#: ../../include/profile_selectors.php:42
+#: ../../include/profile_selectors.php:61
msgid "Males"
msgstr ""
-#: ../../include/profile_selectors.php:23
+#: ../../include/profile_selectors.php:42
+#: ../../include/profile_selectors.php:61
msgid "Females"
msgstr ""
-#: ../../include/profile_selectors.php:23
+#: ../../include/profile_selectors.php:42
msgid "Gay"
msgstr ""
-#: ../../include/profile_selectors.php:23
+#: ../../include/profile_selectors.php:42
msgid "Lesbian"
msgstr ""
-#: ../../include/profile_selectors.php:23
+#: ../../include/profile_selectors.php:42
msgid "No Preference"
msgstr ""
-#: ../../include/profile_selectors.php:23
+#: ../../include/profile_selectors.php:42
msgid "Bisexual"
msgstr ""
-#: ../../include/profile_selectors.php:23
+#: ../../include/profile_selectors.php:42
msgid "Autosexual"
msgstr ""
-#: ../../include/profile_selectors.php:23
+#: ../../include/profile_selectors.php:42
msgid "Abstinent"
msgstr ""
-#: ../../include/profile_selectors.php:23
+#: ../../include/profile_selectors.php:42
msgid "Virgin"
msgstr ""
-#: ../../include/profile_selectors.php:23
+#: ../../include/profile_selectors.php:42
msgid "Deviant"
msgstr ""
-#: ../../include/profile_selectors.php:23
+#: ../../include/profile_selectors.php:42
msgid "Fetish"
msgstr ""
-#: ../../include/profile_selectors.php:23
+#: ../../include/profile_selectors.php:42
msgid "Oodles"
msgstr ""
-#: ../../include/profile_selectors.php:23
+#: ../../include/profile_selectors.php:42
msgid "Nonsexual"
msgstr ""
-#: ../../include/profile_selectors.php:42
+#: ../../include/profile_selectors.php:80
+#: ../../include/profile_selectors.php:97
msgid "Single"
msgstr ""
-#: ../../include/profile_selectors.php:42
+#: ../../include/profile_selectors.php:80
msgid "Lonely"
msgstr ""
-#: ../../include/profile_selectors.php:42
+#: ../../include/profile_selectors.php:80
msgid "Available"
msgstr ""
-#: ../../include/profile_selectors.php:42
+#: ../../include/profile_selectors.php:80
msgid "Unavailable"
msgstr ""
-#: ../../include/profile_selectors.php:42
+#: ../../include/profile_selectors.php:80
msgid "Has crush"
msgstr ""
-#: ../../include/profile_selectors.php:42
+#: ../../include/profile_selectors.php:80
msgid "Infatuated"
msgstr ""
-#: ../../include/profile_selectors.php:42
+#: ../../include/profile_selectors.php:80
+#: ../../include/profile_selectors.php:97
msgid "Dating"
msgstr ""
-#: ../../include/profile_selectors.php:42
+#: ../../include/profile_selectors.php:80
msgid "Unfaithful"
msgstr ""
-#: ../../include/profile_selectors.php:42
+#: ../../include/profile_selectors.php:80
msgid "Sex Addict"
msgstr ""
-#: ../../include/profile_selectors.php:42
+#: ../../include/profile_selectors.php:80
msgid "Friends/Benefits"
msgstr ""
-#: ../../include/profile_selectors.php:42
+#: ../../include/profile_selectors.php:80
msgid "Casual"
msgstr ""
-#: ../../include/profile_selectors.php:42
+#: ../../include/profile_selectors.php:80
msgid "Engaged"
msgstr ""
-#: ../../include/profile_selectors.php:42
+#: ../../include/profile_selectors.php:80
+#: ../../include/profile_selectors.php:97
msgid "Married"
msgstr ""
-#: ../../include/profile_selectors.php:42
+#: ../../include/profile_selectors.php:80
msgid "Imaginarily married"
msgstr ""
-#: ../../include/profile_selectors.php:42
+#: ../../include/profile_selectors.php:80
msgid "Partners"
msgstr ""
-#: ../../include/profile_selectors.php:42
+#: ../../include/profile_selectors.php:80
+#: ../../include/profile_selectors.php:97
msgid "Cohabiting"
msgstr ""
-#: ../../include/profile_selectors.php:42
+#: ../../include/profile_selectors.php:80
msgid "Common law"
msgstr ""
-#: ../../include/profile_selectors.php:42
+#: ../../include/profile_selectors.php:80
msgid "Happy"
msgstr ""
-#: ../../include/profile_selectors.php:42
+#: ../../include/profile_selectors.php:80
msgid "Not looking"
msgstr ""
-#: ../../include/profile_selectors.php:42
+#: ../../include/profile_selectors.php:80
msgid "Swinger"
msgstr ""
-#: ../../include/profile_selectors.php:42
+#: ../../include/profile_selectors.php:80
msgid "Betrayed"
msgstr ""
-#: ../../include/profile_selectors.php:42
+#: ../../include/profile_selectors.php:80
+#: ../../include/profile_selectors.php:97
msgid "Separated"
msgstr ""
-#: ../../include/profile_selectors.php:42
+#: ../../include/profile_selectors.php:80
msgid "Unstable"
msgstr ""
-#: ../../include/profile_selectors.php:42
+#: ../../include/profile_selectors.php:80
+#: ../../include/profile_selectors.php:97
msgid "Divorced"
msgstr ""
-#: ../../include/profile_selectors.php:42
+#: ../../include/profile_selectors.php:80
msgid "Imaginarily divorced"
msgstr ""
-#: ../../include/profile_selectors.php:42
+#: ../../include/profile_selectors.php:80
+#: ../../include/profile_selectors.php:97
msgid "Widowed"
msgstr ""
-#: ../../include/profile_selectors.php:42
+#: ../../include/profile_selectors.php:80
msgid "Uncertain"
msgstr ""
-#: ../../include/profile_selectors.php:42
+#: ../../include/profile_selectors.php:80
+#: ../../include/profile_selectors.php:97
msgid "It's complicated"
msgstr ""
-#: ../../include/profile_selectors.php:42
+#: ../../include/profile_selectors.php:80
msgid "Don't care"
msgstr ""
-#: ../../include/profile_selectors.php:42
+#: ../../include/profile_selectors.php:80
msgid "Ask me"
msgstr ""
-#: ../../include/auth.php:90
-msgid "Logged out."
+#: ../../include/nav.php:95 ../../include/nav.php:128 ../../boot.php:1541
+msgid "Logout"
msgstr ""
-#: ../../include/auth.php:209
-msgid "Failed authentication"
+#: ../../include/nav.php:95 ../../include/nav.php:128
+msgid "End this session"
msgstr ""
-#: ../../include/auth.php:224 ../../mod/openid.php:188
-msgid "Login failed."
+#: ../../include/nav.php:98 ../../include/nav.php:159
+msgid "Home"
msgstr ""
-#: ../../include/items.php:302 ../../mod/profperm.php:23
-#: ../../mod/subthread.php:49 ../../mod/group.php:68 ../../mod/like.php:202
-#: ../../index.php:360
-msgid "Permission denied"
+#: ../../include/nav.php:98
+msgid "Your posts and conversations"
msgstr ""
-#: ../../include/items.php:826
-msgid "(Unknown)"
+#: ../../include/nav.php:99
+msgid "Your profile page"
msgstr ""
-#: ../../include/items.php:3614 ../../mod/home.php:67 ../../mod/display.php:32
-#: ../../mod/filestorage.php:18 ../../mod/admin.php:159
-#: ../../mod/admin.php:923 ../../mod/admin.php:1126 ../../mod/thing.php:78
-#: ../../mod/viewsrc.php:18
-msgid "Item not found."
+#: ../../include/nav.php:101
+msgid "Edit Profiles"
msgstr ""
-#: ../../include/items.php:4047 ../../mod/group.php:38 ../../mod/group.php:140
-msgid "Collection not found."
+#: ../../include/nav.php:101
+msgid "Manage/Edit profiles"
msgstr ""
-#: ../../include/items.php:4062
-msgid "Collection is empty."
+#: ../../include/nav.php:103
+msgid "Edit your profile"
msgstr ""
-#: ../../include/items.php:4069
-#, php-format
-msgid "Collection: %s"
+#: ../../include/nav.php:105
+msgid "Your photos"
+msgstr ""
+
+#: ../../include/nav.php:106
+msgid "Your files"
+msgstr ""
+
+#: ../../include/nav.php:111
+msgid "Your chatrooms"
+msgstr ""
+
+#: ../../include/nav.php:117
+msgid "Your bookmarks"
+msgstr ""
+
+#: ../../include/nav.php:121
+msgid "Your webpages"
msgstr ""
-#: ../../include/items.php:4080
+#: ../../include/nav.php:125
+msgid "Sign in"
+msgstr ""
+
+#: ../../include/nav.php:142
#, php-format
-msgid "Connection: %s"
+msgid "%s - click to logout"
msgstr ""
-#: ../../include/items.php:4083
-msgid "Connection not found."
+#: ../../include/nav.php:145
+msgid "Remote authentication"
msgstr ""
-#: ../../include/permissions.php:13
-msgid "Can view my \"public\" stream and posts"
+#: ../../include/nav.php:145
+msgid "Click to authenticate to your home hub"
msgstr ""
-#: ../../include/permissions.php:14
-msgid "Can view my \"public\" channel profile"
+#: ../../include/nav.php:159
+msgid "Home Page"
msgstr ""
-#: ../../include/permissions.php:15
-msgid "Can view my \"public\" photo albums"
+#: ../../include/nav.php:163 ../../mod/register.php:224 ../../boot.php:1518
+msgid "Register"
msgstr ""
-#: ../../include/permissions.php:16
-msgid "Can view my \"public\" address book"
+#: ../../include/nav.php:163
+msgid "Create an account"
msgstr ""
-#: ../../include/permissions.php:17
-msgid "Can view my \"public\" file storage"
+#: ../../include/nav.php:168
+msgid "Help and documentation"
msgstr ""
-#: ../../include/permissions.php:18
-msgid "Can view my \"public\" pages"
+#: ../../include/nav.php:171
+msgid "Applications, utilities, links, games"
msgstr ""
-#: ../../include/permissions.php:21
-msgid "Can send me their channel stream and posts"
+#: ../../include/nav.php:173
+msgid "Search site content"
msgstr ""
-#: ../../include/permissions.php:22
-msgid "Can post on my channel page (\"wall\")"
+#: ../../include/nav.php:176
+msgid "Channel Directory"
msgstr ""
-#: ../../include/permissions.php:23
-msgid "Can comment on my posts"
+#: ../../include/nav.php:190
+msgid "Your matrix"
msgstr ""
-#: ../../include/permissions.php:24
-msgid "Can send me private mail messages"
+#: ../../include/nav.php:191
+msgid "Mark all matrix notifications seen"
msgstr ""
-#: ../../include/permissions.php:25
-msgid "Can post photos to my photo albums"
+#: ../../include/nav.php:193
+msgid "Channel home"
msgstr ""
-#: ../../include/permissions.php:26
-msgid "Can forward to all my channel contacts via post @mentions"
+#: ../../include/nav.php:194
+msgid "Mark all channel notifications seen"
msgstr ""
-#: ../../include/permissions.php:26
-msgid "Advanced - useful for creating group forum channels"
+#: ../../include/nav.php:197 ../../mod/connections.php:406
+msgid "Connections"
msgstr ""
-#: ../../include/permissions.php:27
-msgid "Can chat with me (when available)"
+#: ../../include/nav.php:200
+msgid "Notices"
msgstr ""
-#: ../../include/permissions.php:28
-msgid "Can write to my \"public\" file storage"
+#: ../../include/nav.php:200
+msgid "Notifications"
msgstr ""
-#: ../../include/permissions.php:29
-msgid "Can edit my \"public\" pages"
+#: ../../include/nav.php:201
+msgid "See all notifications"
msgstr ""
-#: ../../include/permissions.php:31
-msgid "Can source my \"public\" posts in derived channels"
+#: ../../include/nav.php:202 ../../mod/notifications.php:99
+msgid "Mark all system notifications seen"
msgstr ""
-#: ../../include/permissions.php:31
-msgid "Somewhat advanced - very useful in open communities"
+#: ../../include/nav.php:204
+msgid "Private mail"
msgstr ""
-#: ../../include/permissions.php:33
-msgid "Can administer my channel resources"
+#: ../../include/nav.php:205
+msgid "See all private messages"
msgstr ""
-#: ../../include/permissions.php:33
-msgid "Extremely advanced. Leave this alone unless you know what you are doing"
+#: ../../include/nav.php:206
+msgid "Mark all private messages seen"
+msgstr ""
+
+#: ../../include/nav.php:207
+msgid "Inbox"
+msgstr ""
+
+#: ../../include/nav.php:208
+msgid "Outbox"
+msgstr ""
+
+#: ../../include/nav.php:212
+msgid "Event Calendar"
+msgstr ""
+
+#: ../../include/nav.php:213
+msgid "See all events"
+msgstr ""
+
+#: ../../include/nav.php:214
+msgid "Mark all events seen"
+msgstr ""
+
+#: ../../include/nav.php:216
+msgid "Manage Your Channels"
+msgstr ""
+
+#: ../../include/nav.php:218
+msgid "Account/Channel Settings"
+msgstr ""
+
+#: ../../include/nav.php:226 ../../mod/admin.php:123
+msgid "Admin"
+msgstr ""
+
+#: ../../include/nav.php:226
+msgid "Site Setup and Configuration"
+msgstr ""
+
+#: ../../include/nav.php:262
+msgid "@name, #tag, content"
+msgstr ""
+
+#: ../../include/nav.php:263
+msgid "Please wait..."
+msgstr ""
+
+#: ../../include/security.php:357
+msgid ""
+"The form security token was not correct. This probably happened because the "
+"form has been opened for too long (>3 hours) before submitting it."
msgstr ""
#: ../../mod/mood.php:132
msgid "Set your current mood and tell your friends"
msgstr ""
-#: ../../mod/mitem.php:14 ../../mod/menu.php:92
+#: ../../mod/register.php:44
+msgid "Maximum daily site registrations exceeded. Please try again tomorrow."
+msgstr ""
+
+#: ../../mod/register.php:50
+msgid ""
+"Please indicate acceptance of the Terms of Service. Registration failed."
+msgstr ""
+
+#: ../../mod/register.php:84
+msgid "Passwords do not match."
+msgstr ""
+
+#: ../../mod/register.php:117
+msgid ""
+"Registration successful. Please check your email for validation instructions."
+msgstr ""
+
+#: ../../mod/register.php:123
+msgid "Your registration is pending approval by the site owner."
+msgstr ""
+
+#: ../../mod/register.php:126
+msgid "Your registration can not be processed."
+msgstr ""
+
+#: ../../mod/register.php:163
+msgid "Registration on this site/hub is by approval only."
+msgstr ""
+
+#: ../../mod/register.php:164
+msgid "<a href=\"pubsites\">Register at another affiliated site/hub</a>"
+msgstr ""
+
+#: ../../mod/register.php:174
+msgid ""
+"This site has exceeded the number of allowed daily account registrations. "
+"Please try again tomorrow."
+msgstr ""
+
+#: ../../mod/register.php:185
+msgid "Terms of Service"
+msgstr ""
+
+#: ../../mod/register.php:191
+#, php-format
+msgid "I accept the %s for this website"
+msgstr ""
+
+#: ../../mod/register.php:193
+#, php-format
+msgid "I am over 13 years of age and accept the %s for this website"
+msgstr ""
+
+#: ../../mod/register.php:207 ../../mod/admin.php:413
+msgid "Registration"
+msgstr ""
+
+#: ../../mod/register.php:212
+msgid "Membership on this site is by invitation only."
+msgstr ""
+
+#: ../../mod/register.php:213
+msgid "Please enter your invitation code"
+msgstr ""
+
+#: ../../mod/register.php:216
+msgid "Your email address"
+msgstr ""
+
+#: ../../mod/register.php:217
+msgid "Choose a password"
+msgstr ""
+
+#: ../../mod/register.php:218
+msgid "Please re-enter your password"
+msgstr ""
+
+#: ../../mod/mitem.php:24 ../../mod/menu.php:108
msgid "Menu not found."
msgstr ""
-#: ../../mod/mitem.php:47
+#: ../../mod/mitem.php:67
msgid "Menu element updated."
msgstr ""
-#: ../../mod/mitem.php:51
+#: ../../mod/mitem.php:71
msgid "Unable to update menu element."
msgstr ""
-#: ../../mod/mitem.php:57
+#: ../../mod/mitem.php:77
msgid "Menu element added."
msgstr ""
-#: ../../mod/mitem.php:61
+#: ../../mod/mitem.php:81
msgid "Unable to add menu element."
msgstr ""
-#: ../../mod/mitem.php:78 ../../mod/dirprofile.php:175 ../../mod/menu.php:120
-#: ../../mod/xchan.php:27
+#: ../../mod/mitem.php:111 ../../mod/menu.php:136 ../../mod/xchan.php:37
msgid "Not found."
msgstr ""
-#: ../../mod/mitem.php:96
+#: ../../mod/mitem.php:127
msgid "Manage Menu Elements"
msgstr ""
-#: ../../mod/mitem.php:99
+#: ../../mod/mitem.php:130
msgid "Edit menu"
msgstr ""
-#: ../../mod/mitem.php:102
+#: ../../mod/mitem.php:133
msgid "Edit element"
msgstr ""
-#: ../../mod/mitem.php:103
+#: ../../mod/mitem.php:134
msgid "Drop element"
msgstr ""
-#: ../../mod/mitem.php:104
+#: ../../mod/mitem.php:135
msgid "New element"
msgstr ""
-#: ../../mod/mitem.php:105
+#: ../../mod/mitem.php:136
msgid "Edit this menu container"
msgstr ""
-#: ../../mod/mitem.php:106
+#: ../../mod/mitem.php:137
msgid "Add menu element"
msgstr ""
-#: ../../mod/mitem.php:107
+#: ../../mod/mitem.php:138
msgid "Delete this menu item"
msgstr ""
-#: ../../mod/mitem.php:108
+#: ../../mod/mitem.php:139
msgid "Edit this menu item"
msgstr ""
-#: ../../mod/mitem.php:131
+#: ../../mod/mitem.php:158
msgid "New Menu Element"
msgstr ""
-#: ../../mod/mitem.php:133 ../../mod/mitem.php:176
+#: ../../mod/mitem.php:160 ../../mod/mitem.php:203
msgid "Menu Item Permissions"
msgstr ""
-#: ../../mod/mitem.php:134 ../../mod/mitem.php:177 ../../mod/settings.php:960
+#: ../../mod/mitem.php:161 ../../mod/mitem.php:204 ../../mod/settings.php:1049
msgid "(click to open/close)"
msgstr ""
-#: ../../mod/mitem.php:136 ../../mod/mitem.php:180
+#: ../../mod/mitem.php:163 ../../mod/mitem.php:207
msgid "Link text"
msgstr ""
-#: ../../mod/mitem.php:137 ../../mod/mitem.php:181
+#: ../../mod/mitem.php:164 ../../mod/mitem.php:208
msgid "URL of link"
msgstr ""
-#: ../../mod/mitem.php:138 ../../mod/mitem.php:182
-msgid "Use Red magic-auth if available"
+#: ../../mod/mitem.php:165 ../../mod/mitem.php:209
+msgid "Use RedMatrix magic-auth if available"
msgstr ""
-#: ../../mod/mitem.php:139 ../../mod/mitem.php:183
+#: ../../mod/mitem.php:166 ../../mod/mitem.php:210
msgid "Open link in new window"
msgstr ""
-#: ../../mod/mitem.php:141 ../../mod/mitem.php:185
+#: ../../mod/mitem.php:168 ../../mod/mitem.php:212
msgid "Order in list"
msgstr ""
-#: ../../mod/mitem.php:141 ../../mod/mitem.php:185
+#: ../../mod/mitem.php:168 ../../mod/mitem.php:212
msgid "Higher numbers will sink to bottom of listing"
msgstr ""
-#: ../../mod/mitem.php:154
+#: ../../mod/mitem.php:181
msgid "Menu item not found."
msgstr ""
-#: ../../mod/mitem.php:163
+#: ../../mod/mitem.php:190
msgid "Menu item deleted."
msgstr ""
-#: ../../mod/mitem.php:165
+#: ../../mod/mitem.php:192
msgid "Menu item could not be deleted."
msgstr ""
-#: ../../mod/mitem.php:174
+#: ../../mod/mitem.php:201
msgid "Edit Menu Element"
msgstr ""
-#: ../../mod/mitem.php:186 ../../mod/menu.php:114
+#: ../../mod/mitem.php:213 ../../mod/menu.php:130
msgid "Modify"
msgstr ""
-#: ../../mod/ping.php:237
+#: ../../mod/achievements.php:34
+msgid "Some blurb about what to do when you're new here"
+msgstr ""
+
+#: ../../mod/ping.php:266
msgid "sent you a private message"
msgstr ""
-#: ../../mod/ping.php:288
+#: ../../mod/ping.php:319
msgid "added your channel"
msgstr ""
-#: ../../mod/ping.php:329
+#: ../../mod/ping.php:360
msgid "posted an event"
msgstr ""
-#: ../../mod/acl.php:239
-msgid "network"
+#: ../../mod/group.php:20
+msgid "Collection created."
msgstr ""
-#: ../../mod/settings.php:71
-msgid "Name is required"
+#: ../../mod/group.php:26
+msgid "Could not create collection."
msgstr ""
-#: ../../mod/settings.php:75
-msgid "Key and Secret are required"
+#: ../../mod/group.php:54
+msgid "Collection updated."
msgstr ""
-#: ../../mod/settings.php:195
-msgid "Passwords do not match. Password unchanged."
+#: ../../mod/group.php:86
+msgid "Create a collection of channels."
msgstr ""
-#: ../../mod/settings.php:199
-msgid "Empty passwords are not allowed. Password unchanged."
+#: ../../mod/group.php:87 ../../mod/group.php:183
+msgid "Collection Name: "
msgstr ""
-#: ../../mod/settings.php:212
-msgid "Password changed."
+#: ../../mod/group.php:89 ../../mod/group.php:186
+msgid "Members are visible to other channels"
msgstr ""
-#: ../../mod/settings.php:214
-msgid "Password update failed. Please try again."
+#: ../../mod/group.php:107
+msgid "Collection removed."
msgstr ""
-#: ../../mod/settings.php:228
-msgid "Not valid email."
+#: ../../mod/group.php:109
+msgid "Unable to remove collection."
msgstr ""
-#: ../../mod/settings.php:231
-msgid "Protected email address. Cannot change to that email."
+#: ../../mod/group.php:182
+msgid "Collection Editor"
msgstr ""
-#: ../../mod/settings.php:240
-msgid "System failure storing new email. Please try again."
+#: ../../mod/group.php:196
+msgid "Members"
msgstr ""
-#: ../../mod/settings.php:443
-msgid "Settings updated."
+#: ../../mod/group.php:198
+msgid "All Connected Channels"
msgstr ""
-#: ../../mod/settings.php:514 ../../mod/settings.php:540
-#: ../../mod/settings.php:576
-msgid "Add application"
+#: ../../mod/group.php:233
+msgid "Click on a channel to add or remove."
msgstr ""
-#: ../../mod/settings.php:517
-msgid "Name of application"
+#: ../../mod/search.php:13 ../../mod/display.php:9
+#: ../../mod/viewconnections.php:17 ../../mod/photos.php:458
+#: ../../mod/directory.php:22
+msgid "Public access denied."
msgstr ""
-#: ../../mod/settings.php:518 ../../mod/settings.php:544
-msgid "Consumer Key"
+#: ../../mod/subthread.php:103
+#, php-format
+msgid "%1$s is following %2$s's %3$s"
msgstr ""
-#: ../../mod/settings.php:518 ../../mod/settings.php:519
-msgid "Automatically generated - change if desired. Max length 20"
+#: ../../mod/poke.php:159
+msgid "Poke/Prod"
msgstr ""
-#: ../../mod/settings.php:519 ../../mod/settings.php:545
-msgid "Consumer Secret"
+#: ../../mod/poke.php:160
+msgid "poke, prod or do other things to somebody"
msgstr ""
-#: ../../mod/settings.php:520 ../../mod/settings.php:546
-msgid "Redirect"
+#: ../../mod/poke.php:161
+msgid "Recipient"
+msgstr ""
+
+#: ../../mod/poke.php:162
+msgid "Choose what you wish to do to recipient"
+msgstr ""
+
+#: ../../mod/poke.php:165
+msgid "Make this post private"
+msgstr ""
+
+#: ../../mod/api.php:76 ../../mod/api.php:102
+msgid "Authorize application connection"
+msgstr ""
+
+#: ../../mod/api.php:77
+msgid "Return to your app and insert this Securty Code:"
+msgstr ""
+
+#: ../../mod/api.php:89
+msgid "Please login to continue."
msgstr ""
-#: ../../mod/settings.php:520
+#: ../../mod/api.php:104
msgid ""
-"Redirect URI - leave blank unless your application specifically requires this"
+"Do you want to authorize this application to access your posts and contacts, "
+"and/or create new posts for you?"
msgstr ""
-#: ../../mod/settings.php:521 ../../mod/settings.php:547
-msgid "Icon url"
+#: ../../mod/api.php:105 ../../mod/settings.php:955 ../../mod/settings.php:960
+#: ../../mod/settings.php:1042 ../../mod/admin.php:392
+msgid "Yes"
msgstr ""
-#: ../../mod/settings.php:521
-msgid "Optional"
+#: ../../mod/api.php:106 ../../mod/settings.php:955 ../../mod/settings.php:960
+#: ../../mod/settings.php:1042 ../../mod/admin.php:390
+msgid "No"
msgstr ""
-#: ../../mod/settings.php:532
-msgid "You can't edit this application."
+#: ../../mod/profiles.php:18 ../../mod/profiles.php:174
+#: ../../mod/profiles.php:231 ../../mod/profiles.php:583
+msgid "Profile not found."
msgstr ""
-#: ../../mod/settings.php:575
-msgid "Connected Apps"
+#: ../../mod/profiles.php:38
+msgid "Profile deleted."
msgstr ""
-#: ../../mod/settings.php:579
-msgid "Client key starts with"
+#: ../../mod/profiles.php:56 ../../mod/profiles.php:92
+msgid "Profile-"
msgstr ""
-#: ../../mod/settings.php:580
-msgid "No name"
+#: ../../mod/profiles.php:77 ../../mod/profiles.php:120
+msgid "New profile created."
msgstr ""
-#: ../../mod/settings.php:581
-msgid "Remove authorization"
+#: ../../mod/profiles.php:98
+msgid "Profile unavailable to clone."
msgstr ""
-#: ../../mod/settings.php:592
-msgid "No feature settings configured"
+#: ../../mod/profiles.php:136
+msgid "Profile unavailable to export."
msgstr ""
-#: ../../mod/settings.php:600
-msgid "Feature Settings"
+#: ../../mod/profiles.php:241
+msgid "Profile Name is required."
msgstr ""
-#: ../../mod/settings.php:623
-msgid "Account Settings"
+#: ../../mod/profiles.php:387
+msgid "Marital Status"
msgstr ""
-#: ../../mod/settings.php:624
-msgid "Password Settings"
+#: ../../mod/profiles.php:391
+msgid "Romantic Partner"
msgstr ""
-#: ../../mod/settings.php:625
-msgid "New Password:"
+#: ../../mod/profiles.php:395
+msgid "Likes"
msgstr ""
-#: ../../mod/settings.php:626
-msgid "Confirm:"
+#: ../../mod/profiles.php:399
+msgid "Dislikes"
msgstr ""
-#: ../../mod/settings.php:626
-msgid "Leave password fields blank unless changing"
+#: ../../mod/profiles.php:403
+msgid "Work/Employment"
msgstr ""
-#: ../../mod/settings.php:628 ../../mod/settings.php:936
-msgid "Email Address:"
+#: ../../mod/profiles.php:406
+msgid "Religion"
msgstr ""
-#: ../../mod/settings.php:629
-msgid "Remove Account"
+#: ../../mod/profiles.php:410
+msgid "Political Views"
msgstr ""
-#: ../../mod/settings.php:630 ../../mod/settings.php:999
-msgid "Warning: This action is permanent and cannot be reversed."
+#: ../../mod/profiles.php:414
+msgid "Gender"
msgstr ""
-#: ../../mod/settings.php:646
-msgid "Off"
+#: ../../mod/profiles.php:418
+msgid "Sexual Preference"
msgstr ""
-#: ../../mod/settings.php:646
-msgid "On"
+#: ../../mod/profiles.php:422
+msgid "Homepage"
msgstr ""
-#: ../../mod/settings.php:653
-msgid "Additional Features"
+#: ../../mod/profiles.php:426
+msgid "Interests"
msgstr ""
-#: ../../mod/settings.php:678
-msgid "Connector Settings"
+#: ../../mod/profiles.php:430 ../../mod/admin.php:866
+msgid "Address"
msgstr ""
-#: ../../mod/settings.php:708 ../../mod/admin.php:390
-msgid "No special theme for mobile devices"
+#: ../../mod/profiles.php:437 ../../mod/pubsites.php:25
+msgid "Location"
msgstr ""
-#: ../../mod/settings.php:717
-#, php-format
-msgid "%s - (Experimental)"
+#: ../../mod/profiles.php:520
+msgid "Profile updated."
msgstr ""
-#: ../../mod/settings.php:747
-msgid "Display Settings"
+#: ../../mod/profiles.php:609
+msgid "Hide your contact/friend list from viewers of this profile?"
msgstr ""
-#: ../../mod/settings.php:753
-msgid "Display Theme:"
+#: ../../mod/profiles.php:649
+msgid "Edit Profile Details"
msgstr ""
-#: ../../mod/settings.php:754
-msgid "Mobile Theme:"
+#: ../../mod/profiles.php:651
+msgid "View this profile"
msgstr ""
-#: ../../mod/settings.php:755
-msgid "Update browser every xx seconds"
+#: ../../mod/profiles.php:653
+msgid "Change Profile Photo"
msgstr ""
-#: ../../mod/settings.php:755
-msgid "Minimum of 10 seconds, no maximum"
+#: ../../mod/profiles.php:654
+msgid "Create a new profile using these settings"
msgstr ""
-#: ../../mod/settings.php:756
-msgid "Maximum number of conversations to load at any time:"
+#: ../../mod/profiles.php:655
+msgid "Clone this profile"
msgstr ""
-#: ../../mod/settings.php:756
-msgid "Maximum of 100 items"
+#: ../../mod/profiles.php:656
+msgid "Delete this profile"
msgstr ""
-#: ../../mod/settings.php:757
-msgid "Don't show emoticons"
+#: ../../mod/profiles.php:658
+msgid "Import profile from file"
msgstr ""
-#: ../../mod/settings.php:758
-msgid "System Page Layout Editor - (advanced)"
+#: ../../mod/profiles.php:659
+msgid "Export profile to file"
msgstr ""
-#: ../../mod/settings.php:793
-msgid "Nobody except yourself"
+#: ../../mod/profiles.php:660
+msgid "Profile Name:"
msgstr ""
-#: ../../mod/settings.php:794
-msgid "Only those you specifically allow"
+#: ../../mod/profiles.php:661
+msgid "Your Full Name:"
msgstr ""
-#: ../../mod/settings.php:795
-msgid "Approved connections"
+#: ../../mod/profiles.php:662
+msgid "Title/Description:"
msgstr ""
-#: ../../mod/settings.php:796
-msgid "Any connections"
+#: ../../mod/profiles.php:663
+msgid "Your Gender:"
msgstr ""
-#: ../../mod/settings.php:797
-msgid "Anybody on this website"
+#: ../../mod/profiles.php:664
+msgid "Birthday :"
msgstr ""
-#: ../../mod/settings.php:798
-msgid "Anybody in this network"
+#: ../../mod/profiles.php:665
+msgid "Street Address:"
msgstr ""
-#: ../../mod/settings.php:799
-msgid "Anybody authenticated"
+#: ../../mod/profiles.php:666
+msgid "Locality/City:"
msgstr ""
-#: ../../mod/settings.php:800
-msgid "Anybody on the internet"
+#: ../../mod/profiles.php:667
+msgid "Postal/Zip Code:"
msgstr ""
-#: ../../mod/settings.php:877
-msgid "Publish your default profile in the network directory"
+#: ../../mod/profiles.php:668
+msgid "Country:"
msgstr ""
-#: ../../mod/settings.php:877 ../../mod/settings.php:882
-#: ../../mod/settings.php:953 ../../mod/api.php:106 ../../mod/profiles.php:493
-#: ../../mod/admin.php:420
-msgid "No"
+#: ../../mod/profiles.php:669
+msgid "Region/State:"
msgstr ""
-#: ../../mod/settings.php:877 ../../mod/settings.php:882
-#: ../../mod/settings.php:953 ../../mod/api.php:105 ../../mod/profiles.php:492
-#: ../../mod/admin.php:422
-msgid "Yes"
+#: ../../mod/profiles.php:670
+msgid "<span class=\"heart\">&hearts;</span> Marital Status:"
msgstr ""
-#: ../../mod/settings.php:882
-msgid "Allow us to suggest you as a potential friend to new members?"
+#: ../../mod/profiles.php:671
+msgid "Who: (if applicable)"
msgstr ""
-#: ../../mod/settings.php:886 ../../mod/profile_photo.php:365
-msgid "or"
+#: ../../mod/profiles.php:672
+msgid "Examples: cathy123, Cathy Williams, cathy@example.com"
msgstr ""
-#: ../../mod/settings.php:891
-msgid "Your channel address is"
+#: ../../mod/profiles.php:673
+msgid "Since [date]:"
msgstr ""
-#: ../../mod/settings.php:925
-msgid "Channel Settings"
+#: ../../mod/profiles.php:675
+msgid "Homepage URL:"
msgstr ""
-#: ../../mod/settings.php:934
-msgid "Basic Settings"
+#: ../../mod/profiles.php:678
+msgid "Religious Views:"
msgstr ""
-#: ../../mod/settings.php:937
-msgid "Your Timezone:"
+#: ../../mod/profiles.php:679
+msgid "Keywords:"
msgstr ""
-#: ../../mod/settings.php:938
-msgid "Default Post Location:"
+#: ../../mod/profiles.php:682
+msgid "Example: fishing photography software"
msgstr ""
-#: ../../mod/settings.php:938
-msgid "Geographical location to display on your posts"
+#: ../../mod/profiles.php:683
+msgid "Used in directory listings"
msgstr ""
-#: ../../mod/settings.php:939
-msgid "Use Browser Location:"
+#: ../../mod/profiles.php:684
+msgid "Tell us about yourself..."
msgstr ""
-#: ../../mod/settings.php:941
-msgid "Adult Content"
+#: ../../mod/profiles.php:685
+msgid "Hobbies/Interests"
+msgstr ""
+
+#: ../../mod/profiles.php:686
+msgid "Contact information and Social Networks"
+msgstr ""
+
+#: ../../mod/profiles.php:687
+msgid "My other channels"
+msgstr ""
+
+#: ../../mod/profiles.php:688
+msgid "Musical interests"
+msgstr ""
+
+#: ../../mod/profiles.php:689
+msgid "Books, literature"
+msgstr ""
+
+#: ../../mod/profiles.php:690
+msgid "Television"
msgstr ""
-#: ../../mod/settings.php:941
+#: ../../mod/profiles.php:691
+msgid "Film/dance/culture/entertainment"
+msgstr ""
+
+#: ../../mod/profiles.php:692
+msgid "Love/romance"
+msgstr ""
+
+#: ../../mod/profiles.php:693
+msgid "Work/employment"
+msgstr ""
+
+#: ../../mod/profiles.php:694
+msgid "School/education"
+msgstr ""
+
+#: ../../mod/profiles.php:700
+msgid "This is your default profile."
+msgstr ""
+
+#: ../../mod/profiles.php:711 ../../mod/directory.php:188
+msgid "Age: "
+msgstr ""
+
+#: ../../mod/profiles.php:754
+msgid "Edit/Manage Profiles"
+msgstr ""
+
+#: ../../mod/profiles.php:755
+msgid "Add profile things"
+msgstr ""
+
+#: ../../mod/profiles.php:756
+msgid "Include desirable objects in your profile"
+msgstr ""
+
+#: ../../mod/attach.php:9
+msgid "Item not available."
+msgstr ""
+
+#: ../../mod/probe.php:23 ../../mod/probe.php:29
+#, php-format
+msgid "Fetching URL returns error: %1$s"
+msgstr ""
+
+#: ../../mod/block.php:27 ../../mod/page.php:33
+msgid "Invalid item."
+msgstr ""
+
+#: ../../mod/block.php:39 ../../mod/wall_upload.php:29 ../../mod/page.php:45
+msgid "Channel not found."
+msgstr ""
+
+#: ../../mod/block.php:75 ../../mod/display.php:102 ../../mod/help.php:70
+#: ../../mod/page.php:81 ../../index.php:241
+msgid "Page not found."
+msgstr ""
+
+#: ../../mod/uexport.php:33 ../../mod/uexport.php:34
+msgid "Export Channel"
+msgstr ""
+
+#: ../../mod/uexport.php:35
msgid ""
-"This channel frequently or regularly publishes adult content. (Please tag "
-"any adult material and/or nudity with #NSFW)"
+"Export your basic channel information to a small file. This acts as a "
+"backup of your connections, permissions, profile and basic data, which can "
+"be used to import your data to a new hub, but\tdoes not contain your content."
msgstr ""
-#: ../../mod/settings.php:943
-msgid "Security and Privacy Settings"
+#: ../../mod/uexport.php:36
+msgid "Export Content"
msgstr ""
-#: ../../mod/settings.php:945
-msgid "Hide my online presence"
+#: ../../mod/uexport.php:37
+msgid ""
+"Export your channel information and all the content to a JSON backup. This "
+"backs up all of your connections, permissions, profile data and all of your "
+"content, but is generally not suitable for importing a channel to a new hub "
+"as this file may be VERY large. Please be patient - it may take several "
+"minutes for this download to begin."
msgstr ""
-#: ../../mod/settings.php:945
-msgid "Prevents displaying in your profile that you are online"
+#: ../../mod/delegate.php:95
+msgid "No potential page delegates located."
msgstr ""
-#: ../../mod/settings.php:947
-msgid "Simple Privacy Settings:"
+#: ../../mod/delegate.php:121
+msgid "Delegate Page Management"
msgstr ""
-#: ../../mod/settings.php:948
+#: ../../mod/delegate.php:123
msgid ""
-"Very Public - <em>extremely permissive (should be used with caution)</em>"
+"Delegates are able to manage all aspects of this account/page except for "
+"basic account settings. Please do not delegate your personal account to "
+"anybody that you do not trust completely."
+msgstr ""
+
+#: ../../mod/delegate.php:124
+msgid "Existing Page Managers"
msgstr ""
-#: ../../mod/settings.php:949
+#: ../../mod/delegate.php:126
+msgid "Existing Page Delegates"
+msgstr ""
+
+#: ../../mod/delegate.php:128
+msgid "Potential Delegates"
+msgstr ""
+
+#: ../../mod/delegate.php:130 ../../mod/tagrm.php:133 ../../mod/photos.php:902
+msgid "Remove"
+msgstr ""
+
+#: ../../mod/delegate.php:131
+msgid "Add"
+msgstr ""
+
+#: ../../mod/delegate.php:132
+msgid "No entries."
+msgstr ""
+
+#: ../../mod/siteinfo.php:93
+#, php-format
+msgid "Version %s"
+msgstr ""
+
+#: ../../mod/siteinfo.php:114
+msgid "Installed plugins/addons/apps:"
+msgstr ""
+
+#: ../../mod/siteinfo.php:127
+msgid "No installed plugins/addons/apps"
+msgstr ""
+
+#: ../../mod/siteinfo.php:135
+msgid "Red"
+msgstr ""
+
+#: ../../mod/siteinfo.php:136
msgid ""
-"Typical - <em>default public, privacy when desired (similar to social "
-"network permissions but with improved privacy)</em>"
+"This is a hub of the Red Matrix - a global cooperative network of "
+"decentralized privacy enhanced websites."
msgstr ""
-#: ../../mod/settings.php:950
-msgid "Private - <em>default private, never open or public</em>"
+#: ../../mod/siteinfo.php:138
+msgid "Tag: "
msgstr ""
-#: ../../mod/settings.php:951
-msgid "Blocked - <em>default blocked to/from everybody</em>"
+#: ../../mod/siteinfo.php:140
+msgid "Last background fetch: "
msgstr ""
-#: ../../mod/settings.php:953
-msgid "Allow others to tag your posts"
+#: ../../mod/siteinfo.php:143
+msgid "Running at web location"
msgstr ""
-#: ../../mod/settings.php:953
+#: ../../mod/siteinfo.php:144
msgid ""
-"Often used by the community to retro-actively flag inappropriate content"
+"Please visit <a href=\"https://redmatrix.me\">RedMatrix.me</a> to learn more "
+"about the Red Matrix."
msgstr ""
-#: ../../mod/settings.php:955
-msgid "Advanced Privacy Settings"
+#: ../../mod/siteinfo.php:145
+msgid "Bug reports and issues: please visit"
msgstr ""
-#: ../../mod/settings.php:957
-msgid "Expire other channel content after this many days"
+#: ../../mod/siteinfo.php:148
+msgid ""
+"Suggestions, praise, etc. - please email \"redmatrix\" at librelist - dot com"
msgstr ""
-#: ../../mod/settings.php:957
-msgid "0 or blank prevents expiration"
+#: ../../mod/siteinfo.php:150
+msgid "Site Administrators"
msgstr ""
-#: ../../mod/settings.php:958
-msgid "Maximum Friend Requests/Day:"
+#: ../../mod/sources.php:32
+msgid "Failed to create source. No channel selected."
msgstr ""
-#: ../../mod/settings.php:958
-msgid "May reduce spam activity"
+#: ../../mod/sources.php:45
+msgid "Source created."
msgstr ""
-#: ../../mod/settings.php:959
-msgid "Default Post Permissions"
+#: ../../mod/sources.php:57
+msgid "Source updated."
msgstr ""
-#: ../../mod/settings.php:971
-msgid "Maximum private messages per day from unknown people:"
+#: ../../mod/sources.php:82
+msgid "*"
msgstr ""
-#: ../../mod/settings.php:971
-msgid "Useful to reduce spamming"
+#: ../../mod/sources.php:89
+msgid "Manage remote sources of content for your channel."
msgstr ""
-#: ../../mod/settings.php:974
-msgid "Notification Settings"
+#: ../../mod/sources.php:90 ../../mod/sources.php:100
+msgid "New Source"
msgstr ""
-#: ../../mod/settings.php:975
-msgid "By default post a status message when:"
+#: ../../mod/sources.php:101 ../../mod/sources.php:133
+msgid ""
+"Import all or selected content from the following channel into this channel "
+"and distribute it according to your channel settings."
msgstr ""
-#: ../../mod/settings.php:976
-msgid "accepting a friend request"
+#: ../../mod/sources.php:102 ../../mod/sources.php:134
+msgid "Only import content with these words (one per line)"
msgstr ""
-#: ../../mod/settings.php:977
-msgid "joining a forum/community"
+#: ../../mod/sources.php:102 ../../mod/sources.php:134
+msgid "Leave blank to import all public content"
msgstr ""
-#: ../../mod/settings.php:978
-msgid "making an <em>interesting</em> profile change"
+#: ../../mod/sources.php:103 ../../mod/sources.php:137
+#: ../../mod/new_channel.php:112
+msgid "Channel Name"
msgstr ""
-#: ../../mod/settings.php:979
-msgid "Send a notification email when:"
+#: ../../mod/sources.php:123 ../../mod/sources.php:150
+msgid "Source not found."
msgstr ""
-#: ../../mod/settings.php:980
-msgid "You receive a connection request"
+#: ../../mod/sources.php:130
+msgid "Edit Source"
msgstr ""
-#: ../../mod/settings.php:981
-msgid "Your connections are confirmed"
+#: ../../mod/sources.php:131
+msgid "Delete Source"
msgstr ""
-#: ../../mod/settings.php:982
-msgid "Someone writes on your profile wall"
+#: ../../mod/sources.php:158
+msgid "Source removed"
msgstr ""
-#: ../../mod/settings.php:983
-msgid "Someone writes a followup comment"
+#: ../../mod/sources.php:160
+msgid "Unable to remove source."
msgstr ""
-#: ../../mod/settings.php:984
-msgid "You receive a private message"
+#: ../../mod/profperm.php:29 ../../mod/profperm.php:58
+msgid "Invalid profile identifier."
msgstr ""
-#: ../../mod/settings.php:985
-msgid "You receive a friend suggestion"
+#: ../../mod/profperm.php:110
+msgid "Profile Visibility Editor"
msgstr ""
-#: ../../mod/settings.php:986
-msgid "You are tagged in a post"
+#: ../../mod/profperm.php:114
+msgid "Click on a contact to add or remove."
msgstr ""
-#: ../../mod/settings.php:987
-msgid "You are poked/prodded/etc. in a post"
+#: ../../mod/profperm.php:123
+msgid "Visible To"
msgstr ""
-#: ../../mod/settings.php:990
-msgid "Advanced Account/Page Type Settings"
+#: ../../mod/profperm.php:139 ../../mod/connections.php:279
+msgid "All Connections"
msgstr ""
-#: ../../mod/settings.php:991
-msgid "Change the behaviour of this account for special situations"
+#: ../../mod/events.php:81
+msgid "Event can not end before it has started."
msgstr ""
-#: ../../mod/settings.php:994
-msgid ""
-"Please enable expert mode (in <a href=\"settings/features\">Settings > "
-"Additional features</a>) to adjust!"
+#: ../../mod/events.php:86
+msgid "Event title and start time are required."
msgstr ""
-#: ../../mod/settings.php:995
-msgid "Miscellaneous Settings"
+#: ../../mod/events.php:100
+msgid "Event not found."
msgstr ""
-#: ../../mod/settings.php:997
-msgid "Personal menu to display in your channel pages"
+#: ../../mod/events.php:369
+msgid "l, F j"
msgstr ""
-#: ../../mod/settings.php:998
-msgid "Remove this channel"
+#: ../../mod/events.php:391
+msgid "Edit event"
msgstr ""
-#: ../../mod/poke.php:159
-msgid "Poke/Prod"
+#: ../../mod/events.php:443
+msgid "Create New Event"
msgstr ""
-#: ../../mod/poke.php:160
-msgid "poke, prod or do other things to somebody"
+#: ../../mod/events.php:444 ../../mod/photos.php:856
+msgid "Previous"
msgstr ""
-#: ../../mod/poke.php:161
-msgid "Recipient"
+#: ../../mod/events.php:445 ../../mod/setup.php:265 ../../mod/photos.php:865
+msgid "Next"
msgstr ""
-#: ../../mod/poke.php:162
-msgid "Choose what you wish to do to recipient"
+#: ../../mod/events.php:446
+msgid "Export"
msgstr ""
-#: ../../mod/poke.php:165
-msgid "Make this post private"
+#: ../../mod/events.php:571
+msgid "Event details"
msgstr ""
-#: ../../mod/api.php:76 ../../mod/api.php:102
-msgid "Authorize application connection"
+#: ../../mod/events.php:572
+msgid "Starting date and Title are required."
msgstr ""
-#: ../../mod/api.php:77
-msgid "Return to your app and insert this Securty Code:"
+#: ../../mod/events.php:574
+msgid "Categories (comma-separated list)"
msgstr ""
-#: ../../mod/api.php:89
-msgid "Please login to continue."
+#: ../../mod/events.php:576
+msgid "Event Starts:"
msgstr ""
-#: ../../mod/api.php:104
-msgid ""
-"Do you want to authorize this application to access your posts and contacts, "
-"and/or create new posts for you?"
+#: ../../mod/events.php:576 ../../mod/events.php:592 ../../mod/appman.php:91
+#: ../../mod/appman.php:92
+msgid "Required"
msgstr ""
-#: ../../mod/post.php:229
+#: ../../mod/events.php:582
+msgid "Finish date/time is not known or not relevant"
+msgstr ""
+
+#: ../../mod/events.php:584
+msgid "Event Finishes:"
+msgstr ""
+
+#: ../../mod/events.php:586
+msgid "Adjust for viewer timezone"
+msgstr ""
+
+#: ../../mod/events.php:588
+msgid "Description:"
+msgstr ""
+
+#: ../../mod/events.php:592
+msgid "Title:"
+msgstr ""
+
+#: ../../mod/events.php:594
+msgid "Share this event"
+msgstr ""
+
+#: ../../mod/pubsites.php:16
+msgid "Public Sites"
+msgstr ""
+
+#: ../../mod/pubsites.php:19
msgid ""
-"Remote authentication blocked. You are logged into this site locally. Please "
-"logout and retry."
+"The listed sites allow public registration into the Red Matrix. All sites in "
+"the matrix are interlinked so membership on any of them conveys membership "
+"in the matrix as a whole. Some sites may require subscription or provide "
+"tiered service plans. The provider links <strong>may</strong> provide "
+"additional details."
msgstr ""
-#: ../../mod/post.php:261 ../../mod/openid.php:72 ../../mod/openid.php:178
-#, php-format
-msgid "Welcome %s. Remote authentication successful."
+#: ../../mod/pubsites.php:25
+msgid "Site URL"
msgstr ""
-#: ../../mod/attach.php:9
-msgid "Item not available."
+#: ../../mod/pubsites.php:25
+msgid "Access Type"
msgstr ""
-#: ../../mod/probe.php:23 ../../mod/probe.php:29
+#: ../../mod/pubsites.php:25
+msgid "Registration Policy"
+msgstr ""
+
+#: ../../mod/channel.php:25 ../../mod/chat.php:19
+msgid "You must be logged in to see this page."
+msgstr ""
+
+#: ../../mod/channel.php:87
+msgid "Insufficient permissions. Request redirected to profile page."
+msgstr ""
+
+#: ../../mod/rbmark.php:88
+msgid "Select a bookmark folder"
+msgstr ""
+
+#: ../../mod/rbmark.php:93
+msgid "Save Bookmark"
+msgstr ""
+
+#: ../../mod/rbmark.php:94
+msgid "URL of bookmark"
+msgstr ""
+
+#: ../../mod/rbmark.php:95 ../../mod/appman.php:93
+msgid "Description"
+msgstr ""
+
+#: ../../mod/rbmark.php:99
+msgid "Or enter new bookmark folder name"
+msgstr ""
+
+#: ../../mod/chat.php:167
+msgid "Room not found"
+msgstr ""
+
+#: ../../mod/chat.php:178
+msgid "Leave Room"
+msgstr ""
+
+#: ../../mod/chat.php:179
+msgid "Delete This Room"
+msgstr ""
+
+#: ../../mod/chat.php:180
+msgid "I am away right now"
+msgstr ""
+
+#: ../../mod/chat.php:181
+msgid "I am online"
+msgstr ""
+
+#: ../../mod/chat.php:183
+msgid "Bookmark this room"
+msgstr ""
+
+#: ../../mod/chat.php:207 ../../mod/chat.php:229
+msgid "New Chatroom"
+msgstr ""
+
+#: ../../mod/chat.php:208
+msgid "Chatroom Name"
+msgstr ""
+
+#: ../../mod/chat.php:225
#, php-format
-msgid "Fetching URL returns error: %1$s"
+msgid "%1$s's Chatrooms"
msgstr ""
-#: ../../mod/block.php:27 ../../mod/page.php:35
-msgid "Invalid item."
+#: ../../mod/chatsvc.php:111
+msgid "Away"
msgstr ""
-#: ../../mod/block.php:39 ../../mod/chanview.php:77 ../../mod/page.php:47
-#: ../../mod/home.php:54 ../../mod/wall_upload.php:28
-msgid "Channel not found."
+#: ../../mod/chatsvc.php:115
+msgid "Online"
msgstr ""
-#: ../../mod/block.php:75 ../../mod/page.php:83 ../../mod/display.php:100
-#: ../../mod/help.php:72 ../../index.php:236
-msgid "Page not found."
+#: ../../mod/regmod.php:11
+msgid "Please login."
msgstr ""
-#: ../../mod/profile_photo.php:108
-msgid "Image uploaded but image cropping failed."
+#: ../../mod/editpost.php:20 ../../mod/editblock.php:79
+#: ../../mod/editblock.php:95 ../../mod/editlayout.php:78
+#: ../../mod/editwebpage.php:77
+msgid "Item not found"
msgstr ""
-#: ../../mod/profile_photo.php:161
-msgid "Image resize failed."
+#: ../../mod/editpost.php:31
+msgid "Item is not editable"
msgstr ""
-#: ../../mod/profile_photo.php:205
+#: ../../mod/editpost.php:42 ../../mod/rpost.php:97
+msgid "Edit post"
+msgstr ""
+
+#: ../../mod/editpost.php:53
+msgid "Delete item?"
+msgstr ""
+
+#: ../../mod/editpost.php:116 ../../mod/editblock.php:147
+#: ../../mod/editlayout.php:143 ../../mod/editwebpage.php:178
+msgid "Insert YouTube video"
+msgstr ""
+
+#: ../../mod/editpost.php:117 ../../mod/editblock.php:148
+#: ../../mod/editlayout.php:144 ../../mod/editwebpage.php:179
+msgid "Insert Vorbis [.ogg] video"
+msgstr ""
+
+#: ../../mod/editpost.php:118 ../../mod/editblock.php:149
+#: ../../mod/editlayout.php:145 ../../mod/editwebpage.php:180
+msgid "Insert Vorbis [.ogg] audio"
+msgstr ""
+
+#: ../../mod/removeme.php:29
msgid ""
-"Shift-reload the page or clear browser cache if the new photo does not "
-"display immediately."
+"Channel removals are not allowed within 48 hours of changing the account "
+"password."
msgstr ""
-#: ../../mod/profile_photo.php:232
-#, php-format
-msgid "Image exceeds size limit of %d"
+#: ../../mod/removeme.php:57
+msgid "Remove This Channel"
msgstr ""
-#: ../../mod/profile_photo.php:241
-msgid "Unable to process image."
+#: ../../mod/removeme.php:58
+msgid ""
+"This will completely remove this channel from the network. Once this has "
+"been done it is not recoverable."
msgstr ""
-#: ../../mod/profile_photo.php:290 ../../mod/profile_photo.php:339
-msgid "Photo not available."
+#: ../../mod/removeme.php:59 ../../mod/removeaccount.php:59
+msgid "Please enter your password for verification:"
msgstr ""
-#: ../../mod/profile_photo.php:358
-msgid "Upload File:"
+#: ../../mod/removeme.php:60
+msgid "Remove this channel and all its clones from the network"
msgstr ""
-#: ../../mod/profile_photo.php:359
-msgid "Select a profile:"
+#: ../../mod/removeme.php:60
+msgid ""
+"By default only the instance of the channel located on this hub will be "
+"removed from the network"
msgstr ""
-#: ../../mod/profile_photo.php:360
-msgid "Upload Profile Photo"
+#: ../../mod/removeme.php:61
+msgid "Remove Channel"
msgstr ""
-#: ../../mod/profile_photo.php:365
-msgid "skip this step"
+#: ../../mod/common.php:10
+msgid "No channel."
msgstr ""
-#: ../../mod/profile_photo.php:365
-msgid "select a photo from your photo albums"
+#: ../../mod/common.php:39
+msgid "Common connections"
msgstr ""
-#: ../../mod/profile_photo.php:379
-msgid "Crop Image"
+#: ../../mod/common.php:44
+msgid "No connections in common."
msgstr ""
-#: ../../mod/profile_photo.php:380
-msgid "Please adjust the image cropping for optimum viewing."
+#: ../../mod/rmagic.php:38
+msgid ""
+"We encountered a problem while logging in with the OpenID you provided. "
+"Please check the correct spelling of the ID."
msgstr ""
-#: ../../mod/profile_photo.php:382
-msgid "Done Editing"
+#: ../../mod/rmagic.php:38
+msgid "The error message was:"
msgstr ""
-#: ../../mod/profile_photo.php:425
-msgid "Image uploaded successfully."
+#: ../../mod/rmagic.php:42
+msgid "Authentication failed."
msgstr ""
-#: ../../mod/profile_photo.php:427
-msgid "Image upload failed."
+#: ../../mod/rmagic.php:82
+msgid "Remote Authentication"
msgstr ""
-#: ../../mod/profile_photo.php:436
-#, php-format
-msgid "Image size reduction [%s] failed."
+#: ../../mod/rmagic.php:83
+msgid "Enter your channel address (e.g. channel@example.com)"
msgstr ""
-#: ../../mod/blocks.php:66
-msgid "Block Name"
+#: ../../mod/rmagic.php:84
+msgid "Authenticate"
msgstr ""
-#: ../../mod/profiles.php:18 ../../mod/profiles.php:138
-#: ../../mod/profiles.php:168 ../../mod/profiles.php:472
-msgid "Profile not found."
+#: ../../mod/lostpass.php:15
+msgid "No valid account found."
msgstr ""
-#: ../../mod/profiles.php:38
-msgid "Profile deleted."
+#: ../../mod/lostpass.php:29
+msgid "Password reset request issued. Check your email."
msgstr ""
-#: ../../mod/profiles.php:56 ../../mod/profiles.php:92
-msgid "Profile-"
+#: ../../mod/lostpass.php:35 ../../mod/lostpass.php:102
+#, php-format
+msgid "Site Member (%s)"
msgstr ""
-#: ../../mod/profiles.php:77 ../../mod/profiles.php:120
-msgid "New profile created."
+#: ../../mod/lostpass.php:40
+#, php-format
+msgid "Password reset requested at %s"
msgstr ""
-#: ../../mod/profiles.php:98
-msgid "Profile unavailable to clone."
+#: ../../mod/lostpass.php:63
+msgid ""
+"Request could not be verified. (You may have previously submitted it.) "
+"Password reset failed."
msgstr ""
-#: ../../mod/profiles.php:178
-msgid "Profile Name is required."
+#: ../../mod/lostpass.php:85 ../../boot.php:1550
+msgid "Password Reset"
msgstr ""
-#: ../../mod/profiles.php:294
-msgid "Marital Status"
+#: ../../mod/lostpass.php:86
+msgid "Your password has been reset as requested."
msgstr ""
-#: ../../mod/profiles.php:298
-msgid "Romantic Partner"
+#: ../../mod/lostpass.php:87
+msgid "Your new password is"
msgstr ""
-#: ../../mod/profiles.php:302
-msgid "Likes"
+#: ../../mod/lostpass.php:88
+msgid "Save or copy your new password - and then"
msgstr ""
-#: ../../mod/profiles.php:306
-msgid "Dislikes"
+#: ../../mod/lostpass.php:89
+msgid "click here to login"
msgstr ""
-#: ../../mod/profiles.php:310
-msgid "Work/Employment"
+#: ../../mod/lostpass.php:90
+msgid ""
+"Your password may be changed from the <em>Settings</em> page after "
+"successful login."
msgstr ""
-#: ../../mod/profiles.php:313
-msgid "Religion"
+#: ../../mod/lostpass.php:107
+#, php-format
+msgid "Your password has changed at %s"
msgstr ""
-#: ../../mod/profiles.php:317
-msgid "Political Views"
+#: ../../mod/lostpass.php:122
+msgid "Forgot your Password?"
msgstr ""
-#: ../../mod/profiles.php:321
-msgid "Gender"
+#: ../../mod/lostpass.php:123
+msgid ""
+"Enter your email address and submit to have your password reset. Then check "
+"your email for further instructions."
msgstr ""
-#: ../../mod/profiles.php:325
-msgid "Sexual Preference"
+#: ../../mod/lostpass.php:124
+msgid "Email Address"
msgstr ""
-#: ../../mod/profiles.php:329
-msgid "Homepage"
+#: ../../mod/lostpass.php:125
+msgid "Reset"
msgstr ""
-#: ../../mod/profiles.php:333
-msgid "Interests"
+#: ../../mod/settings.php:73
+msgid "Name is required"
msgstr ""
-#: ../../mod/profiles.php:337 ../../mod/admin.php:893
-msgid "Address"
+#: ../../mod/settings.php:77
+msgid "Key and Secret are required"
msgstr ""
-#: ../../mod/profiles.php:344 ../../mod/pubsites.php:25
-msgid "Location"
+#: ../../mod/settings.php:222
+msgid "Passwords do not match. Password unchanged."
msgstr ""
-#: ../../mod/profiles.php:427
-msgid "Profile updated."
+#: ../../mod/settings.php:226
+msgid "Empty passwords are not allowed. Password unchanged."
msgstr ""
-#: ../../mod/profiles.php:491
-msgid "Hide your contact/friend list from viewers of this profile?"
+#: ../../mod/settings.php:240
+msgid "Password changed."
msgstr ""
-#: ../../mod/profiles.php:514
-msgid "Edit Profile Details"
+#: ../../mod/settings.php:242
+msgid "Password update failed. Please try again."
msgstr ""
-#: ../../mod/profiles.php:516
-msgid "View this profile"
+#: ../../mod/settings.php:256
+msgid "Not valid email."
msgstr ""
-#: ../../mod/profiles.php:517
-msgid "Change Profile Photo"
+#: ../../mod/settings.php:259
+msgid "Protected email address. Cannot change to that email."
msgstr ""
-#: ../../mod/profiles.php:518
-msgid "Create a new profile using these settings"
+#: ../../mod/settings.php:268
+msgid "System failure storing new email. Please try again."
msgstr ""
-#: ../../mod/profiles.php:519
-msgid "Clone this profile"
+#: ../../mod/settings.php:507
+msgid "Settings updated."
msgstr ""
-#: ../../mod/profiles.php:520
-msgid "Delete this profile"
+#: ../../mod/settings.php:576 ../../mod/settings.php:602
+#: ../../mod/settings.php:638
+msgid "Add application"
msgstr ""
-#: ../../mod/profiles.php:521
-msgid "Profile Name:"
+#: ../../mod/settings.php:579
+msgid "Name of application"
msgstr ""
-#: ../../mod/profiles.php:522
-msgid "Your Full Name:"
+#: ../../mod/settings.php:580 ../../mod/settings.php:606
+msgid "Consumer Key"
msgstr ""
-#: ../../mod/profiles.php:523
-msgid "Title/Description:"
+#: ../../mod/settings.php:580 ../../mod/settings.php:581
+msgid "Automatically generated - change if desired. Max length 20"
msgstr ""
-#: ../../mod/profiles.php:524
-msgid "Your Gender:"
+#: ../../mod/settings.php:581 ../../mod/settings.php:607
+msgid "Consumer Secret"
msgstr ""
-#: ../../mod/profiles.php:525
-#, php-format
-msgid "Birthday (%s):"
+#: ../../mod/settings.php:582 ../../mod/settings.php:608
+msgid "Redirect"
msgstr ""
-#: ../../mod/profiles.php:526
-msgid "Street Address:"
+#: ../../mod/settings.php:582
+msgid ""
+"Redirect URI - leave blank unless your application specifically requires this"
msgstr ""
-#: ../../mod/profiles.php:527
-msgid "Locality/City:"
+#: ../../mod/settings.php:583 ../../mod/settings.php:609
+msgid "Icon url"
msgstr ""
-#: ../../mod/profiles.php:528
-msgid "Postal/Zip Code:"
+#: ../../mod/settings.php:583
+msgid "Optional"
msgstr ""
-#: ../../mod/profiles.php:529
-msgid "Country:"
+#: ../../mod/settings.php:594
+msgid "You can't edit this application."
msgstr ""
-#: ../../mod/profiles.php:530
-msgid "Region/State:"
+#: ../../mod/settings.php:637
+msgid "Connected Apps"
msgstr ""
-#: ../../mod/profiles.php:531
-msgid "<span class=\"heart\">&hearts;</span> Marital Status:"
+#: ../../mod/settings.php:641
+msgid "Client key starts with"
msgstr ""
-#: ../../mod/profiles.php:532
-msgid "Who: (if applicable)"
+#: ../../mod/settings.php:642
+msgid "No name"
msgstr ""
-#: ../../mod/profiles.php:533
-msgid "Examples: cathy123, Cathy Williams, cathy@example.com"
+#: ../../mod/settings.php:643
+msgid "Remove authorization"
msgstr ""
-#: ../../mod/profiles.php:534
-msgid "Since [date]:"
+#: ../../mod/settings.php:654
+msgid "No feature settings configured"
msgstr ""
-#: ../../mod/profiles.php:536
-msgid "Homepage URL:"
+#: ../../mod/settings.php:662
+msgid "Feature Settings"
msgstr ""
-#: ../../mod/profiles.php:539
-msgid "Religious Views:"
+#: ../../mod/settings.php:685
+msgid "Account Settings"
msgstr ""
-#: ../../mod/profiles.php:540
-msgid "Keywords:"
+#: ../../mod/settings.php:686
+msgid "Password Settings"
msgstr ""
-#: ../../mod/profiles.php:543
-msgid "Example: fishing photography software"
+#: ../../mod/settings.php:687
+msgid "New Password:"
msgstr ""
-#: ../../mod/profiles.php:544
-msgid "Used in directory listings"
+#: ../../mod/settings.php:688
+msgid "Confirm:"
msgstr ""
-#: ../../mod/profiles.php:545
-msgid "Tell us about yourself..."
+#: ../../mod/settings.php:688
+msgid "Leave password fields blank unless changing"
msgstr ""
-#: ../../mod/profiles.php:546
-msgid "Hobbies/Interests"
+#: ../../mod/settings.php:690 ../../mod/settings.php:1023
+msgid "Email Address:"
msgstr ""
-#: ../../mod/profiles.php:547
-msgid "Contact information and Social Networks"
+#: ../../mod/settings.php:691 ../../mod/removeaccount.php:61
+msgid "Remove Account"
msgstr ""
-#: ../../mod/profiles.php:548
-msgid "My other channels"
+#: ../../mod/settings.php:692
+msgid "Remove this account from this server including all its channels"
msgstr ""
-#: ../../mod/profiles.php:549
-msgid "Musical interests"
+#: ../../mod/settings.php:693 ../../mod/settings.php:1104
+msgid "Warning: This action is permanent and cannot be reversed."
msgstr ""
-#: ../../mod/profiles.php:550
-msgid "Books, literature"
+#: ../../mod/settings.php:709
+msgid "Off"
msgstr ""
-#: ../../mod/profiles.php:551
-msgid "Television"
+#: ../../mod/settings.php:709
+msgid "On"
msgstr ""
-#: ../../mod/profiles.php:552
-msgid "Film/dance/culture/entertainment"
+#: ../../mod/settings.php:716
+msgid "Additional Features"
msgstr ""
-#: ../../mod/profiles.php:553
-msgid "Love/romance"
+#: ../../mod/settings.php:740
+msgid "Connector Settings"
msgstr ""
-#: ../../mod/profiles.php:554
-msgid "Work/employment"
+#: ../../mod/settings.php:779
+msgid "No special theme for mobile devices"
msgstr ""
-#: ../../mod/profiles.php:555
-msgid "School/education"
+#: ../../mod/settings.php:782
+#, php-format
+msgid "%s - (Experimental)"
msgstr ""
-#: ../../mod/profiles.php:560
-msgid ""
-"This is your <strong>public</strong> profile.<br />It <strong>may</strong> "
-"be visible to anybody using the internet."
+#: ../../mod/settings.php:785 ../../mod/admin.php:363
+msgid "mobile"
msgstr ""
-#: ../../mod/profiles.php:570 ../../mod/directory.php:143
-#: ../../mod/dirprofile.php:92
-msgid "Age: "
+#: ../../mod/settings.php:821
+msgid "Display Settings"
msgstr ""
-#: ../../mod/profiles.php:609
-msgid "Edit/Manage Profiles"
+#: ../../mod/settings.php:827
+msgid "Display Theme:"
msgstr ""
-#: ../../mod/profiles.php:610
-msgid "Add profile things"
+#: ../../mod/settings.php:828
+msgid "Mobile Theme:"
msgstr ""
-#: ../../mod/profiles.php:611
-msgid "Include desirable objects in your profile"
+#: ../../mod/settings.php:829
+msgid "Enable user zoom on mobile devices"
msgstr ""
-#: ../../mod/bookmarks.php:38
-msgid "Bookmark added"
+#: ../../mod/settings.php:830
+msgid "Update browser every xx seconds"
msgstr ""
-#: ../../mod/bookmarks.php:58
-msgid "My Bookmarks"
+#: ../../mod/settings.php:830
+msgid "Minimum of 10 seconds, no maximum"
msgstr ""
-#: ../../mod/bookmarks.php:69
-msgid "My Connections Bookmarks"
+#: ../../mod/settings.php:831
+msgid "Maximum number of conversations to load at any time:"
msgstr ""
-#: ../../mod/profperm.php:29 ../../mod/profperm.php:58
-msgid "Invalid profile identifier."
+#: ../../mod/settings.php:831
+msgid "Maximum of 100 items"
msgstr ""
-#: ../../mod/profperm.php:110
-msgid "Profile Visibility Editor"
+#: ../../mod/settings.php:832
+msgid "Don't show emoticons"
msgstr ""
-#: ../../mod/profperm.php:114
-msgid "Click on a contact to add or remove."
+#: ../../mod/settings.php:833
+msgid "Link post titles to source"
msgstr ""
-#: ../../mod/profperm.php:123
-msgid "Visible To"
+#: ../../mod/settings.php:834
+msgid "System Page Layout Editor - (advanced)"
msgstr ""
-#: ../../mod/profperm.php:139 ../../mod/connections.php:279
-msgid "All Connections"
+#: ../../mod/settings.php:837
+msgid "Use blog/list mode on channel page"
msgstr ""
-#: ../../mod/pubsites.php:16
-msgid "Public Sites"
+#: ../../mod/settings.php:837 ../../mod/settings.php:838
+msgid "(comments displayed separately)"
msgstr ""
-#: ../../mod/pubsites.php:19
-msgid ""
-"The listed sites allow public registration into the Red Matrix. All sites in "
-"the matrix are interlinked so membership on any of them conveys membership "
-"in the matrix as a whole. Some sites may require subscription or provide "
-"tiered service plans. The provider links <strong>may</strong> provide "
-"additional details."
+#: ../../mod/settings.php:838
+msgid "Use blog/list mode on matrix page"
msgstr ""
-#: ../../mod/pubsites.php:25
-msgid "Site URL"
+#: ../../mod/settings.php:839
+msgid "Channel page max height of content (in pixels)"
msgstr ""
-#: ../../mod/pubsites.php:25
-msgid "Access Type"
+#: ../../mod/settings.php:839 ../../mod/settings.php:840
+msgid "click to expand content exceeding this height"
msgstr ""
-#: ../../mod/pubsites.php:25
-msgid "Registration Policy"
+#: ../../mod/settings.php:840
+msgid "Matrix page max height of content (in pixels)"
msgstr ""
-#: ../../mod/channel.php:25 ../../mod/chat.php:19
-msgid "You must be logged in to see this page."
+#: ../../mod/settings.php:874
+msgid "Nobody except yourself"
msgstr ""
-#: ../../mod/channel.php:86
-msgid "Insufficient permissions. Request redirected to profile page."
+#: ../../mod/settings.php:875
+msgid "Only those you specifically allow"
msgstr ""
-#: ../../mod/rbmark.php:88
-msgid "Select a bookmark folder"
+#: ../../mod/settings.php:876
+msgid "Approved connections"
msgstr ""
-#: ../../mod/rbmark.php:93
-msgid "Save Bookmark"
+#: ../../mod/settings.php:877
+msgid "Any connections"
msgstr ""
-#: ../../mod/rbmark.php:94
-msgid "URL of bookmark"
+#: ../../mod/settings.php:878
+msgid "Anybody on this website"
msgstr ""
-#: ../../mod/rbmark.php:95 ../../mod/appman.php:93
-msgid "Description"
+#: ../../mod/settings.php:879
+msgid "Anybody in this network"
msgstr ""
-#: ../../mod/rbmark.php:99
-msgid "Or enter new bookmark folder name"
+#: ../../mod/settings.php:880
+msgid "Anybody authenticated"
msgstr ""
-#: ../../mod/chat.php:167
-msgid "Room not found"
+#: ../../mod/settings.php:881
+msgid "Anybody on the internet"
msgstr ""
-#: ../../mod/chat.php:178
-msgid "Leave Room"
+#: ../../mod/settings.php:955
+msgid "Publish your default profile in the network directory"
msgstr ""
-#: ../../mod/chat.php:179
-msgid "Delete This Room"
+#: ../../mod/settings.php:960
+msgid "Allow us to suggest you as a potential friend to new members?"
msgstr ""
-#: ../../mod/chat.php:180
-msgid "I am away right now"
+#: ../../mod/settings.php:964 ../../mod/profile_photo.php:365
+msgid "or"
msgstr ""
-#: ../../mod/chat.php:181
-msgid "I am online"
+#: ../../mod/settings.php:969
+msgid "Your channel address is"
msgstr ""
-#: ../../mod/chat.php:183
-msgid "Bookmark this room"
+#: ../../mod/settings.php:1014
+msgid "Channel Settings"
msgstr ""
-#: ../../mod/chat.php:207 ../../mod/chat.php:229
-msgid "New Chatroom"
+#: ../../mod/settings.php:1021
+msgid "Basic Settings"
msgstr ""
-#: ../../mod/chat.php:208
-msgid "Chatroom Name"
+#: ../../mod/settings.php:1024
+msgid "Your Timezone:"
msgstr ""
-#: ../../mod/chat.php:225
-#, php-format
-msgid "%1$s's Chatrooms"
+#: ../../mod/settings.php:1025
+msgid "Default Post Location:"
msgstr ""
-#: ../../mod/register.php:43
-msgid "Maximum daily site registrations exceeded. Please try again tomorrow."
+#: ../../mod/settings.php:1025
+msgid "Geographical location to display on your posts"
+msgstr ""
+
+#: ../../mod/settings.php:1026
+msgid "Use Browser Location:"
msgstr ""
-#: ../../mod/register.php:49
+#: ../../mod/settings.php:1028
+msgid "Adult Content"
+msgstr ""
+
+#: ../../mod/settings.php:1028
msgid ""
-"Please indicate acceptance of the Terms of Service. Registration failed."
+"This channel frequently or regularly publishes adult content. (Please tag "
+"any adult material and/or nudity with #NSFW)"
msgstr ""
-#: ../../mod/register.php:83
-msgid "Passwords do not match."
+#: ../../mod/settings.php:1030
+msgid "Security and Privacy Settings"
+msgstr ""
+
+#: ../../mod/settings.php:1032
+msgid "Your permissions are already configured. Click to view/adjust"
+msgstr ""
+
+#: ../../mod/settings.php:1034
+msgid "Hide my online presence"
+msgstr ""
+
+#: ../../mod/settings.php:1034
+msgid "Prevents displaying in your profile that you are online"
+msgstr ""
+
+#: ../../mod/settings.php:1036
+msgid "Simple Privacy Settings:"
msgstr ""
-#: ../../mod/register.php:116
+#: ../../mod/settings.php:1037
msgid ""
-"Registration successful. Please check your email for validation instructions."
+"Very Public - <em>extremely permissive (should be used with caution)</em>"
msgstr ""
-#: ../../mod/register.php:122
-msgid "Your registration is pending approval by the site owner."
+#: ../../mod/settings.php:1038
+msgid ""
+"Typical - <em>default public, privacy when desired (similar to social "
+"network permissions but with improved privacy)</em>"
msgstr ""
-#: ../../mod/register.php:125
-msgid "Your registration can not be processed."
+#: ../../mod/settings.php:1039
+msgid "Private - <em>default private, never open or public</em>"
msgstr ""
-#: ../../mod/register.php:162
-msgid "Registration on this site/hub is by approval only."
+#: ../../mod/settings.php:1040
+msgid "Blocked - <em>default blocked to/from everybody</em>"
msgstr ""
-#: ../../mod/register.php:163
-msgid "<a href=\"pubsites\">Register at another affiliated site/hub</a>"
+#: ../../mod/settings.php:1042
+msgid "Allow others to tag your posts"
msgstr ""
-#: ../../mod/register.php:171
+#: ../../mod/settings.php:1042
msgid ""
-"This site has exceeded the number of allowed daily account registrations. "
-"Please try again tomorrow."
+"Often used by the community to retro-actively flag inappropriate content"
msgstr ""
-#: ../../mod/register.php:182
-msgid "Terms of Service"
+#: ../../mod/settings.php:1044
+msgid "Advanced Privacy Settings"
msgstr ""
-#: ../../mod/register.php:188
-#, php-format
-msgid "I accept the %s for this website"
+#: ../../mod/settings.php:1046
+msgid "Expire other channel content after this many days"
msgstr ""
-#: ../../mod/register.php:190
-#, php-format
-msgid "I am over 13 years of age and accept the %s for this website"
+#: ../../mod/settings.php:1046
+msgid "0 or blank prevents expiration"
msgstr ""
-#: ../../mod/register.php:204 ../../mod/admin.php:443
-msgid "Registration"
+#: ../../mod/settings.php:1047
+msgid "Maximum Friend Requests/Day:"
msgstr ""
-#: ../../mod/register.php:209
-msgid "Membership on this site is by invitation only."
+#: ../../mod/settings.php:1047
+msgid "May reduce spam activity"
msgstr ""
-#: ../../mod/register.php:210
-msgid "Please enter your invitation code"
+#: ../../mod/settings.php:1048
+msgid "Default Post Permissions"
msgstr ""
-#: ../../mod/register.php:213
-msgid "Your email address"
+#: ../../mod/settings.php:1053
+msgid "Channel permissions category:"
msgstr ""
-#: ../../mod/register.php:214
-msgid "Choose a password"
+#: ../../mod/settings.php:1059
+msgid "Maximum private messages per day from unknown people:"
msgstr ""
-#: ../../mod/register.php:215
-msgid "Please re-enter your password"
+#: ../../mod/settings.php:1059
+msgid "Useful to reduce spamming"
msgstr ""
-#: ../../mod/chatsvc.php:111
-msgid "Away"
+#: ../../mod/settings.php:1062
+msgid "Notification Settings"
msgstr ""
-#: ../../mod/chatsvc.php:115
-msgid "Online"
+#: ../../mod/settings.php:1063
+msgid "By default post a status message when:"
msgstr ""
-#: ../../mod/regmod.php:12
-msgid "Please login."
+#: ../../mod/settings.php:1064
+msgid "accepting a friend request"
msgstr ""
-#: ../../mod/cloud.php:115
-msgid "Red Matrix - Guests: Username: {your email address}, Password: +++"
+#: ../../mod/settings.php:1065
+msgid "joining a forum/community"
msgstr ""
-#: ../../mod/removeme.php:49
-msgid "Remove This Channel"
+#: ../../mod/settings.php:1066
+msgid "making an <em>interesting</em> profile change"
msgstr ""
-#: ../../mod/removeme.php:50
-msgid ""
-"This will completely remove this channel from the network. Once this has "
-"been done it is not recoverable."
+#: ../../mod/settings.php:1067
+msgid "Send a notification email when:"
msgstr ""
-#: ../../mod/removeme.php:51
-msgid "Please enter your password for verification:"
+#: ../../mod/settings.php:1068
+msgid "You receive a connection request"
msgstr ""
-#: ../../mod/removeme.php:52
-msgid "Remove this channel and all its clones from the network"
+#: ../../mod/settings.php:1069
+msgid "Your connections are confirmed"
msgstr ""
-#: ../../mod/removeme.php:52
-msgid ""
-"By default only the instance of the channel located on this hub will be "
-"removed from the network"
+#: ../../mod/settings.php:1070
+msgid "Someone writes on your profile wall"
msgstr ""
-#: ../../mod/removeme.php:53
-msgid "Remove Channel"
+#: ../../mod/settings.php:1071
+msgid "Someone writes a followup comment"
msgstr ""
-#: ../../mod/common.php:10
-msgid "No channel."
+#: ../../mod/settings.php:1072
+msgid "You receive a private message"
msgstr ""
-#: ../../mod/common.php:39
-msgid "Common connections"
+#: ../../mod/settings.php:1073
+msgid "You receive a friend suggestion"
msgstr ""
-#: ../../mod/common.php:44
-msgid "No connections in common."
+#: ../../mod/settings.php:1074
+msgid "You are tagged in a post"
msgstr ""
-#: ../../mod/rmagic.php:38
-msgid ""
-"We encountered a problem while logging in with the OpenID you provided. "
-"Please check the correct spelling of the ID."
+#: ../../mod/settings.php:1075
+msgid "You are poked/prodded/etc. in a post"
msgstr ""
-#: ../../mod/rmagic.php:38
-msgid "The error message was:"
+#: ../../mod/settings.php:1078
+msgid "Show visual notifications including:"
msgstr ""
-#: ../../mod/rmagic.php:42
-msgid "Authentication failed."
+#: ../../mod/settings.php:1080
+msgid "Unseen matrix activity"
msgstr ""
-#: ../../mod/rmagic.php:78
-msgid "Remote Authentication"
+#: ../../mod/settings.php:1081
+msgid "Unseen channel activity"
msgstr ""
-#: ../../mod/rmagic.php:79
-msgid "Enter your channel address (e.g. channel@example.com)"
+#: ../../mod/settings.php:1082
+msgid "Unseen private messages"
msgstr ""
-#: ../../mod/rmagic.php:80
-msgid "Authenticate"
+#: ../../mod/settings.php:1082 ../../mod/settings.php:1087
+#: ../../mod/settings.php:1088 ../../mod/settings.php:1089
+msgid "Recommended"
msgstr ""
-#: ../../mod/connect.php:55 ../../mod/connect.php:103
-msgid "Continue"
+#: ../../mod/settings.php:1083
+msgid "Upcoming events"
msgstr ""
-#: ../../mod/connect.php:84
-msgid "Premium Channel Setup"
+#: ../../mod/settings.php:1084
+msgid "Events today"
msgstr ""
-#: ../../mod/connect.php:86
-msgid "Enable premium channel connection restrictions"
+#: ../../mod/settings.php:1085
+msgid "Upcoming birthdays"
msgstr ""
-#: ../../mod/connect.php:87
-msgid ""
-"Please enter your restrictions or conditions, such as paypal receipt, usage "
-"guidelines, etc."
+#: ../../mod/settings.php:1085
+msgid "Not available in all themes"
msgstr ""
-#: ../../mod/connect.php:89 ../../mod/connect.php:109
-msgid ""
-"This channel may require additional steps or acknowledgement of the "
-"following conditions prior to connecting:"
+#: ../../mod/settings.php:1086
+msgid "System (personal) notifications"
msgstr ""
-#: ../../mod/connect.php:90
-msgid ""
-"Potential connections will then see the following text before proceeding:"
+#: ../../mod/settings.php:1087
+msgid "System info messages"
+msgstr ""
+
+#: ../../mod/settings.php:1088
+msgid "System critical alerts"
+msgstr ""
+
+#: ../../mod/settings.php:1089
+msgid "New connections"
msgstr ""
-#: ../../mod/connect.php:91 ../../mod/connect.php:112
+#: ../../mod/settings.php:1090
+msgid "System Registrations"
+msgstr ""
+
+#: ../../mod/settings.php:1091
msgid ""
-"By continuing, I certify that I have complied with any instructions provided "
-"on this page."
+"Also show new wall posts, private messages and connections under Notices"
msgstr ""
-#: ../../mod/connect.php:100
-msgid "(No specific instructions have been provided by the channel owner.)"
+#: ../../mod/settings.php:1093
+msgid "Notify me of events this many days in advance"
msgstr ""
-#: ../../mod/connect.php:108
-msgid "Restricted or Premium Channel"
+#: ../../mod/settings.php:1093
+msgid "Must be greater than 0"
msgstr ""
-#: ../../mod/network.php:79
-msgid "No such group"
+#: ../../mod/settings.php:1095
+msgid "Advanced Account/Page Type Settings"
msgstr ""
-#: ../../mod/network.php:118
-msgid "Search Results For:"
+#: ../../mod/settings.php:1096
+msgid "Change the behaviour of this account for special situations"
msgstr ""
-#: ../../mod/network.php:172
-msgid "Collection is empty"
+#: ../../mod/settings.php:1099
+msgid ""
+"Please enable expert mode (in <a href=\"settings/features\">Settings > "
+"Additional features</a>) to adjust!"
msgstr ""
-#: ../../mod/network.php:180
-msgid "Collection: "
+#: ../../mod/settings.php:1100
+msgid "Miscellaneous Settings"
msgstr ""
-#: ../../mod/network.php:193
-msgid "Connection: "
+#: ../../mod/settings.php:1102
+msgid "Personal menu to display in your channel pages"
msgstr ""
-#: ../../mod/network.php:196
-msgid "Invalid connection."
+#: ../../mod/settings.php:1103
+msgid "Remove this channel"
msgstr ""
#: ../../mod/connections.php:37 ../../mod/connedit.php:64
msgid "Could not access contact record."
msgstr ""
-#: ../../mod/connections.php:51 ../../mod/connedit.php:78
+#: ../../mod/connections.php:51 ../../mod/connedit.php:86
msgid "Could not locate selected profile."
msgstr ""
-#: ../../mod/connections.php:94 ../../mod/connedit.php:131
+#: ../../mod/connections.php:94 ../../mod/connedit.php:140
msgid "Connection updated."
msgstr ""
-#: ../../mod/connections.php:96 ../../mod/connedit.php:133
+#: ../../mod/connections.php:96 ../../mod/connedit.php:142
msgid "Failed to update connection record."
msgstr ""
@@ -4835,10 +5416,6 @@ msgstr ""
msgid "All"
msgstr ""
-#: ../../mod/connections.php:240 ../../mod/connections.php:320
-msgid "Unconnected"
-msgstr ""
-
#: ../../mod/connections.php:270
msgid "Suggest new connections"
msgstr ""
@@ -4879,1351 +5456,1385 @@ msgstr ""
msgid "Only show hidden connections"
msgstr ""
-#: ../../mod/connections.php:323
-msgid "Only show one-way connections"
-msgstr ""
-
-#: ../../mod/connections.php:368
+#: ../../mod/connections.php:371
#, php-format
msgid "%1$s [%2$s]"
msgstr ""
-#: ../../mod/connections.php:369
-msgid "Edit contact"
+#: ../../mod/connections.php:372
+msgid "Edit connection"
msgstr ""
-#: ../../mod/connections.php:390
+#: ../../mod/connections.php:410
msgid "Search your connections"
msgstr ""
-#: ../../mod/connections.php:391
+#: ../../mod/connections.php:411
msgid "Finding: "
msgstr ""
-#: ../../mod/rpost.php:97 ../../mod/editpost.php:42
-msgid "Edit post"
+#: ../../mod/manage.php:138
+#, php-format
+msgid "You have created %1$.0f of %2$.0f allowed channels."
+msgstr ""
+
+#: ../../mod/manage.php:146
+msgid "Create a new channel"
+msgstr ""
+
+#: ../../mod/manage.php:151
+msgid "Current Channel"
+msgstr ""
+
+#: ../../mod/manage.php:153
+msgid "Switch to one of your channels by selecting it."
msgstr ""
-#: ../../mod/connedit.php:243
+#: ../../mod/manage.php:154
+msgid "Default Channel"
+msgstr ""
+
+#: ../../mod/manage.php:155
+msgid "Make Default"
+msgstr ""
+
+#: ../../mod/manage.php:158
+#, php-format
+msgid "%d new messages"
+msgstr ""
+
+#: ../../mod/manage.php:159
+#, php-format
+msgid "%d new introductions"
+msgstr ""
+
+#: ../../mod/connedit.php:189
+msgid "is now connected to"
+msgstr ""
+
+#: ../../mod/connedit.php:310
msgid "Could not access address book record."
msgstr ""
-#: ../../mod/connedit.php:257
+#: ../../mod/connedit.php:324
msgid "Refresh failed - channel is currently unavailable."
msgstr ""
-#: ../../mod/connedit.php:264
+#: ../../mod/connedit.php:331
msgid "Channel has been unblocked"
msgstr ""
-#: ../../mod/connedit.php:265
+#: ../../mod/connedit.php:332
msgid "Channel has been blocked"
msgstr ""
-#: ../../mod/connedit.php:269 ../../mod/connedit.php:281
-#: ../../mod/connedit.php:293 ../../mod/connedit.php:305
-#: ../../mod/connedit.php:320
+#: ../../mod/connedit.php:336 ../../mod/connedit.php:348
+#: ../../mod/connedit.php:360 ../../mod/connedit.php:372
+#: ../../mod/connedit.php:388
msgid "Unable to set address book parameters."
msgstr ""
-#: ../../mod/connedit.php:276
+#: ../../mod/connedit.php:343
msgid "Channel has been unignored"
msgstr ""
-#: ../../mod/connedit.php:277
+#: ../../mod/connedit.php:344
msgid "Channel has been ignored"
msgstr ""
-#: ../../mod/connedit.php:288
+#: ../../mod/connedit.php:355
msgid "Channel has been unarchived"
msgstr ""
-#: ../../mod/connedit.php:289
+#: ../../mod/connedit.php:356
msgid "Channel has been archived"
msgstr ""
-#: ../../mod/connedit.php:300
+#: ../../mod/connedit.php:367
msgid "Channel has been unhidden"
msgstr ""
-#: ../../mod/connedit.php:301
+#: ../../mod/connedit.php:368
msgid "Channel has been hidden"
msgstr ""
-#: ../../mod/connedit.php:315
+#: ../../mod/connedit.php:383
msgid "Channel has been approved"
msgstr ""
-#: ../../mod/connedit.php:316
+#: ../../mod/connedit.php:384
msgid "Channel has been unapproved"
msgstr ""
-#: ../../mod/connedit.php:334
+#: ../../mod/connedit.php:412
msgid "Connection has been removed."
msgstr ""
-#: ../../mod/connedit.php:354
+#: ../../mod/connedit.php:432
#, php-format
msgid "View %s's profile"
msgstr ""
-#: ../../mod/connedit.php:358
+#: ../../mod/connedit.php:436
msgid "Refresh Permissions"
msgstr ""
-#: ../../mod/connedit.php:361
+#: ../../mod/connedit.php:439
msgid "Fetch updated permissions"
msgstr ""
-#: ../../mod/connedit.php:365
+#: ../../mod/connedit.php:443
msgid "Recent Activity"
msgstr ""
-#: ../../mod/connedit.php:368
+#: ../../mod/connedit.php:446
msgid "View recent posts and comments"
msgstr ""
-#: ../../mod/connedit.php:372 ../../mod/connedit.php:515
-#: ../../mod/admin.php:760
+#: ../../mod/connedit.php:450 ../../mod/connedit.php:595
+#: ../../mod/admin.php:732
msgid "Unblock"
msgstr ""
-#: ../../mod/connedit.php:372 ../../mod/connedit.php:515
-#: ../../mod/admin.php:759
+#: ../../mod/connedit.php:450 ../../mod/connedit.php:595
+#: ../../mod/admin.php:731
msgid "Block"
msgstr ""
-#: ../../mod/connedit.php:375
+#: ../../mod/connedit.php:453
msgid "Block or Unblock this connection"
msgstr ""
-#: ../../mod/connedit.php:379 ../../mod/connedit.php:516
+#: ../../mod/connedit.php:457 ../../mod/connedit.php:596
msgid "Unignore"
msgstr ""
-#: ../../mod/connedit.php:379 ../../mod/connedit.php:516
+#: ../../mod/connedit.php:457 ../../mod/connedit.php:596
#: ../../mod/notifications.php:51
msgid "Ignore"
msgstr ""
-#: ../../mod/connedit.php:382
+#: ../../mod/connedit.php:460
msgid "Ignore or Unignore this connection"
msgstr ""
-#: ../../mod/connedit.php:385
+#: ../../mod/connedit.php:463
msgid "Unarchive"
msgstr ""
-#: ../../mod/connedit.php:385
+#: ../../mod/connedit.php:463
msgid "Archive"
msgstr ""
-#: ../../mod/connedit.php:388
+#: ../../mod/connedit.php:466
msgid "Archive or Unarchive this connection"
msgstr ""
-#: ../../mod/connedit.php:391
+#: ../../mod/connedit.php:469
msgid "Unhide"
msgstr ""
-#: ../../mod/connedit.php:391
+#: ../../mod/connedit.php:469
msgid "Hide"
msgstr ""
-#: ../../mod/connedit.php:394
+#: ../../mod/connedit.php:472
msgid "Hide or Unhide this connection"
msgstr ""
-#: ../../mod/connedit.php:401
+#: ../../mod/connedit.php:479
msgid "Delete this connection"
msgstr ""
-#: ../../mod/connedit.php:444 ../../mod/connedit.php:473
+#: ../../mod/connedit.php:523 ../../mod/connedit.php:553
msgid "Approve this connection"
msgstr ""
-#: ../../mod/connedit.php:444
+#: ../../mod/connedit.php:523
msgid "Accept connection to allow communication"
msgstr ""
-#: ../../mod/connedit.php:460
-msgid "Automatic Permissions Settings"
-msgstr ""
-
-#: ../../mod/connedit.php:460
+#: ../../mod/connedit.php:539
#, php-format
msgid "Connections: settings for %s"
msgstr ""
-#: ../../mod/connedit.php:464
-msgid ""
-"When receiving a channel introduction, any permissions provided here will be "
-"applied to the new connection automatically and the introduction approved. "
-"Leave this page if you do not wish to use this feature."
+#: ../../mod/connedit.php:540
+msgid "Apply these permissions automatically"
msgstr ""
-#: ../../mod/connedit.php:466
+#: ../../mod/connedit.php:544
+msgid "Apply the permissions indicated on this page to all new connections."
+msgstr ""
+
+#: ../../mod/connedit.php:546
msgid "Slide to adjust your degree of friendship"
msgstr ""
-#: ../../mod/connedit.php:472
+#: ../../mod/connedit.php:552
msgid "inherited"
msgstr ""
-#: ../../mod/connedit.php:474
+#: ../../mod/connedit.php:554
msgid "Connection has no individual permissions!"
msgstr ""
-#: ../../mod/connedit.php:475
+#: ../../mod/connedit.php:555
msgid ""
"This may be appropriate based on your <a href=\"settings\">privacy settings</"
"a>, though you may wish to review the \"Advanced Permissions\"."
msgstr ""
-#: ../../mod/connedit.php:477
+#: ../../mod/connedit.php:557
msgid "Profile Visibility"
msgstr ""
-#: ../../mod/connedit.php:478
+#: ../../mod/connedit.php:558
#, php-format
msgid ""
"Please choose the profile you would like to display to %s when viewing your "
"profile securely."
msgstr ""
-#: ../../mod/connedit.php:479
+#: ../../mod/connedit.php:559
msgid "Contact Information / Notes"
msgstr ""
-#: ../../mod/connedit.php:480
+#: ../../mod/connedit.php:560
msgid "Edit contact notes"
msgstr ""
-#: ../../mod/connedit.php:482
+#: ../../mod/connedit.php:562
msgid "Their Settings"
msgstr ""
-#: ../../mod/connedit.php:483
+#: ../../mod/connedit.php:563
msgid "My Settings"
msgstr ""
-#: ../../mod/connedit.php:485
+#: ../../mod/connedit.php:565
msgid "Clear/Disable Automatic Permissions"
msgstr ""
-#: ../../mod/connedit.php:486
+#: ../../mod/connedit.php:566
msgid "Forum Members"
msgstr ""
-#: ../../mod/connedit.php:487
+#: ../../mod/connedit.php:567
msgid "Soapbox"
msgstr ""
-#: ../../mod/connedit.php:488
+#: ../../mod/connedit.php:568
msgid "Full Sharing (typical social network permissions)"
msgstr ""
-#: ../../mod/connedit.php:489
+#: ../../mod/connedit.php:569
msgid "Cautious Sharing "
msgstr ""
-#: ../../mod/connedit.php:490
+#: ../../mod/connedit.php:570
msgid "Follow Only"
msgstr ""
-#: ../../mod/connedit.php:491
+#: ../../mod/connedit.php:571
msgid "Individual Permissions"
msgstr ""
-#: ../../mod/connedit.php:492
+#: ../../mod/connedit.php:572
msgid ""
"Some permissions may be inherited from your channel <a href=\"settings"
"\">privacy settings</a>, which have higher priority than individual "
"settings. Changing those inherited settings on this page will have no effect."
msgstr ""
-#: ../../mod/connedit.php:493
+#: ../../mod/connedit.php:573
msgid "Advanced Permissions"
msgstr ""
-#: ../../mod/connedit.php:494
+#: ../../mod/connedit.php:574
msgid "Simple Permissions (select one and submit)"
msgstr ""
-#: ../../mod/connedit.php:498
+#: ../../mod/connedit.php:578
#, php-format
msgid "Visit %s's profile - %s"
msgstr ""
-#: ../../mod/connedit.php:499
+#: ../../mod/connedit.php:579
msgid "Block/Unblock contact"
msgstr ""
-#: ../../mod/connedit.php:500
+#: ../../mod/connedit.php:580
msgid "Ignore contact"
msgstr ""
-#: ../../mod/connedit.php:501
+#: ../../mod/connedit.php:581
msgid "Repair URL settings"
msgstr ""
-#: ../../mod/connedit.php:502
+#: ../../mod/connedit.php:582
msgid "View conversations"
msgstr ""
-#: ../../mod/connedit.php:504
+#: ../../mod/connedit.php:584
msgid "Delete contact"
msgstr ""
-#: ../../mod/connedit.php:507
+#: ../../mod/connedit.php:587
msgid "Last update:"
msgstr ""
-#: ../../mod/connedit.php:509
+#: ../../mod/connedit.php:589
msgid "Update public posts"
msgstr ""
-#: ../../mod/connedit.php:511
+#: ../../mod/connedit.php:591
msgid "Update now"
msgstr ""
-#: ../../mod/connedit.php:517
+#: ../../mod/connedit.php:597
msgid "Currently blocked"
msgstr ""
-#: ../../mod/connedit.php:518
+#: ../../mod/connedit.php:598
msgid "Currently ignored"
msgstr ""
-#: ../../mod/connedit.php:519
+#: ../../mod/connedit.php:599
msgid "Currently archived"
msgstr ""
-#: ../../mod/connedit.php:520
+#: ../../mod/connedit.php:600
msgid "Currently pending"
msgstr ""
-#: ../../mod/connedit.php:521
+#: ../../mod/connedit.php:601
msgid "Hide this contact from others"
msgstr ""
-#: ../../mod/connedit.php:521
+#: ../../mod/connedit.php:601
msgid ""
"Replies/likes to your public posts <strong>may</strong> still be visible"
msgstr ""
-#: ../../mod/delegate.php:95
-msgid "No potential page delegates located."
+#: ../../mod/mail.php:33
+msgid "Unable to lookup recipient."
msgstr ""
-#: ../../mod/delegate.php:121
-msgid "Delegate Page Management"
+#: ../../mod/mail.php:41
+msgid "Unable to communicate with requested channel."
msgstr ""
-#: ../../mod/delegate.php:123
-msgid ""
-"Delegates are able to manage all aspects of this account/page except for "
-"basic account settings. Please do not delegate your personal account to "
-"anybody that you do not trust completely."
+#: ../../mod/mail.php:48
+msgid "Cannot verify requested channel."
msgstr ""
-#: ../../mod/delegate.php:124
-msgid "Existing Page Managers"
+#: ../../mod/mail.php:74
+msgid "Selected channel has private message restrictions. Send failed."
msgstr ""
-#: ../../mod/delegate.php:126
-msgid "Existing Page Delegates"
+#: ../../mod/mail.php:136
+msgid "Message deleted."
msgstr ""
-#: ../../mod/delegate.php:128
-msgid "Potential Delegates"
+#: ../../mod/mail.php:153
+msgid "Message recalled."
msgstr ""
-#: ../../mod/delegate.php:130 ../../mod/photos.php:906 ../../mod/tagrm.php:93
-msgid "Remove"
+#: ../../mod/mail.php:222
+msgid "Send Private Message"
msgstr ""
-#: ../../mod/delegate.php:131
-msgid "Add"
+#: ../../mod/mail.php:223 ../../mod/mail.php:340
+msgid "To:"
msgstr ""
-#: ../../mod/delegate.php:132
-msgid "No entries."
+#: ../../mod/mail.php:228 ../../mod/mail.php:342
+msgid "Subject:"
msgstr ""
-#: ../../mod/search.php:13 ../../mod/directory.php:15
-#: ../../mod/dirprofile.php:9 ../../mod/display.php:9 ../../mod/photos.php:443
-#: ../../mod/viewconnections.php:17
-msgid "Public access denied."
+#: ../../mod/mail.php:232 ../../mod/mail.php:345 ../../mod/invite.php:131
+msgid "Your message:"
msgstr ""
-#: ../../mod/directory.php:146 ../../mod/dirprofile.php:95
-msgid "Gender: "
+#: ../../mod/mail.php:239
+msgid "Send"
msgstr ""
-#: ../../mod/directory.php:207
-msgid "Finding:"
+#: ../../mod/mail.php:266
+msgid "Message not found."
msgstr ""
-#: ../../mod/directory.php:215
-msgid "next page"
+#: ../../mod/mail.php:309
+msgid "Delete message"
msgstr ""
-#: ../../mod/directory.php:215
-msgid "previous page"
+#: ../../mod/mail.php:310
+msgid "Recall message"
msgstr ""
-#: ../../mod/directory.php:222
-msgid "No entries (some entries may be hidden)."
+#: ../../mod/mail.php:312
+msgid "Message has been recalled."
msgstr ""
-#: ../../mod/dirprofile.php:108
-msgid "Status: "
+#: ../../mod/mail.php:329
+msgid "Private Conversation"
msgstr ""
-#: ../../mod/dirprofile.php:109
-msgid "Sexual Preference: "
+#: ../../mod/mail.php:333 ../../mod/message.php:72
+msgid "Delete conversation"
msgstr ""
-#: ../../mod/dirprofile.php:111
-msgid "Homepage: "
+#: ../../mod/mail.php:335
+msgid ""
+"No secure communications available. You <strong>may</strong> be able to "
+"respond from the sender's profile page."
msgstr ""
-#: ../../mod/dirprofile.php:112
-msgid "Hometown: "
+#: ../../mod/mail.php:339
+msgid "Send Reply"
msgstr ""
-#: ../../mod/dirprofile.php:114
-msgid "About: "
+#: ../../mod/bookmarks.php:38
+msgid "Bookmark added"
msgstr ""
-#: ../../mod/dirprofile.php:162
-msgid "Keywords: "
+#: ../../mod/bookmarks.php:60
+msgid "My Bookmarks"
+msgstr ""
+
+#: ../../mod/bookmarks.php:71
+msgid "My Connections Bookmarks"
msgstr ""
#: ../../mod/dirsearch.php:21
msgid "This site is not a directory server"
msgstr ""
-#: ../../mod/home.php:81
-msgid "Red Matrix - &quot;The Network&quot;"
+#: ../../mod/cloud.php:130
+msgid "RedMatrix - Guests: Username: {your email address}, Password: +++"
msgstr ""
-#: ../../mod/home.php:94
-#, php-format
-msgid "Welcome to %s"
+#: ../../mod/acl.php:245
+msgid "network"
msgstr ""
-#: ../../mod/setup.php:162
-msgid "Red Matrix Server - Setup"
+#: ../../mod/blocks.php:99
+msgid "Block Name"
msgstr ""
-#: ../../mod/setup.php:168
-msgid "Could not connect to database."
+#: ../../mod/editblock.php:115
+msgid "Edit Block"
msgstr ""
-#: ../../mod/setup.php:172
-msgid ""
-"Could not connect to specified site URL. Possible SSL certificate or DNS "
-"issue."
+#: ../../mod/editblock.php:125
+msgid "Delete block?"
msgstr ""
-#: ../../mod/setup.php:179
-msgid "Could not create table."
+#: ../../mod/editblock.php:183
+msgid "Delete Block"
msgstr ""
-#: ../../mod/setup.php:185
-msgid "Your site database has been installed."
+#: ../../mod/pdledit.php:13
+msgid "Layout updated."
msgstr ""
-#: ../../mod/setup.php:190
-msgid ""
-"You may need to import the file \"install/database.sql\" manually using "
-"phpmyadmin or mysql."
+#: ../../mod/pdledit.php:28 ../../mod/pdledit.php:53
+msgid "Edit System Page Description"
msgstr ""
-#: ../../mod/setup.php:191 ../../mod/setup.php:260 ../../mod/setup.php:655
-msgid "Please see the file \"install/INSTALL.txt\"."
+#: ../../mod/pdledit.php:48
+msgid "Layout not found."
msgstr ""
-#: ../../mod/setup.php:257
-msgid "System check"
+#: ../../mod/pdledit.php:54
+msgid "Module Name:"
msgstr ""
-#: ../../mod/setup.php:261 ../../mod/events.php:399
-msgid "Next"
+#: ../../mod/pdledit.php:55 ../../mod/layouts.php:107
+msgid "Layout Help"
msgstr ""
-#: ../../mod/setup.php:262
-msgid "Check again"
+#: ../../mod/editlayout.php:108
+msgid "Edit Layout"
msgstr ""
-#: ../../mod/setup.php:284
-msgid "Database connection"
+#: ../../mod/editlayout.php:117
+msgid "Delete layout?"
msgstr ""
-#: ../../mod/setup.php:285
-msgid ""
-"In order to install Red Matrix we need to know how to connect to your "
-"database."
+#: ../../mod/editlayout.php:178
+msgid "Delete Layout"
msgstr ""
-#: ../../mod/setup.php:286
-msgid ""
-"Please contact your hosting provider or site administrator if you have "
-"questions about these settings."
+#: ../../mod/home.php:48
+msgid "Red Matrix - &quot;The Network&quot;"
msgstr ""
-#: ../../mod/setup.php:287
-msgid ""
-"The database you specify below should already exist. If it does not, please "
-"create it before continuing."
+#: ../../mod/home.php:101
+#, php-format
+msgid "Welcome to %s"
msgstr ""
-#: ../../mod/setup.php:291
-msgid "Database Server Name"
+#: ../../mod/editwebpage.php:140
+msgid "Edit Webpage"
msgstr ""
-#: ../../mod/setup.php:291
-msgid "Default is localhost"
+#: ../../mod/editwebpage.php:150
+msgid "Delete webpage?"
msgstr ""
-#: ../../mod/setup.php:292
-msgid "Database Port"
+#: ../../mod/editwebpage.php:215
+msgid "Delete Webpage"
msgstr ""
-#: ../../mod/setup.php:292
-msgid "Communication port number - use 0 for default"
+#: ../../mod/impel.php:33
+msgid "webpage"
msgstr ""
-#: ../../mod/setup.php:293
-msgid "Database Login Name"
+#: ../../mod/impel.php:38
+msgid "block"
msgstr ""
-#: ../../mod/setup.php:294
-msgid "Database Login Password"
+#: ../../mod/impel.php:43
+msgid "layout"
msgstr ""
-#: ../../mod/setup.php:295
-msgid "Database Name"
+#: ../../mod/impel.php:117
+#, php-format
+msgid "%s element installed"
msgstr ""
-#: ../../mod/setup.php:297 ../../mod/setup.php:339
-msgid "Site administrator email address"
+#: ../../mod/profile_photo.php:108
+msgid "Image uploaded but image cropping failed."
msgstr ""
-#: ../../mod/setup.php:297 ../../mod/setup.php:339
+#: ../../mod/profile_photo.php:161
+msgid "Image resize failed."
+msgstr ""
+
+#: ../../mod/profile_photo.php:205
msgid ""
-"Your account email address must match this in order to use the web admin "
-"panel."
+"Shift-reload the page or clear browser cache if the new photo does not "
+"display immediately."
msgstr ""
-#: ../../mod/setup.php:298 ../../mod/setup.php:341
-msgid "Website URL"
+#: ../../mod/profile_photo.php:232
+#, php-format
+msgid "Image exceeds size limit of %d"
msgstr ""
-#: ../../mod/setup.php:298 ../../mod/setup.php:341
-msgid "Please use SSL (https) URL if available."
+#: ../../mod/profile_photo.php:241
+msgid "Unable to process image."
msgstr ""
-#: ../../mod/setup.php:301 ../../mod/setup.php:344
-msgid "Please select a default timezone for your website"
+#: ../../mod/profile_photo.php:290 ../../mod/profile_photo.php:339
+msgid "Photo not available."
msgstr ""
-#: ../../mod/setup.php:328
-msgid "Site settings"
+#: ../../mod/profile_photo.php:358
+msgid "Upload File:"
msgstr ""
-#: ../../mod/setup.php:387
-msgid "Could not find a command line version of PHP in the web server PATH."
+#: ../../mod/profile_photo.php:359
+msgid "Select a profile:"
msgstr ""
-#: ../../mod/setup.php:388
-msgid ""
-"If you don't have a command line version of PHP installed on server, you "
-"will not be able to run background polling via cron."
+#: ../../mod/profile_photo.php:360
+msgid "Upload Profile Photo"
msgstr ""
-#: ../../mod/setup.php:392
-msgid "PHP executable path"
+#: ../../mod/profile_photo.php:365
+msgid "skip this step"
msgstr ""
-#: ../../mod/setup.php:392
-msgid ""
-"Enter full path to php executable. You can leave this blank to continue the "
-"installation."
+#: ../../mod/profile_photo.php:365
+msgid "select a photo from your photo albums"
msgstr ""
-#: ../../mod/setup.php:397
-msgid "Command line PHP"
+#: ../../mod/profile_photo.php:381
+msgid "Crop Image"
msgstr ""
-#: ../../mod/setup.php:406
-msgid ""
-"The command line version of PHP on your system does not have "
-"\"register_argc_argv\" enabled."
+#: ../../mod/profile_photo.php:382
+msgid "Please adjust the image cropping for optimum viewing."
msgstr ""
-#: ../../mod/setup.php:407
-msgid "This is required for message delivery to work."
+#: ../../mod/profile_photo.php:384
+msgid "Done Editing"
msgstr ""
-#: ../../mod/setup.php:409
-msgid "PHP register_argc_argv"
+#: ../../mod/profile_photo.php:427
+msgid "Image uploaded successfully."
msgstr ""
-#: ../../mod/setup.php:430
-msgid ""
-"Error: the \"openssl_pkey_new\" function on this system is not able to "
-"generate encryption keys"
+#: ../../mod/profile_photo.php:429
+msgid "Image upload failed."
msgstr ""
-#: ../../mod/setup.php:431
-msgid ""
-"If running under Windows, please see \"http://www.php.net/manual/en/openssl."
-"installation.php\"."
+#: ../../mod/profile_photo.php:438
+#, php-format
+msgid "Image size reduction [%s] failed."
msgstr ""
-#: ../../mod/setup.php:433
-msgid "Generate encryption keys"
+#: ../../mod/like.php:15
+msgid "Like/Dislike"
msgstr ""
-#: ../../mod/setup.php:440
-msgid "libCurl PHP module"
+#: ../../mod/like.php:20
+msgid "This action is restricted to members."
msgstr ""
-#: ../../mod/setup.php:441
-msgid "GD graphics PHP module"
+#: ../../mod/like.php:21
+msgid ""
+"Please <a href=\"rmagic\">login with your RedMatrix ID</a> or <a href="
+"\"register\">register as a new RedMatrix member</a> to continue."
msgstr ""
-#: ../../mod/setup.php:442
-msgid "OpenSSL PHP module"
+#: ../../mod/like.php:77 ../../mod/like.php:104 ../../mod/like.php:142
+msgid "Invalid request."
msgstr ""
-#: ../../mod/setup.php:443
-msgid "mysqli PHP module"
+#: ../../mod/like.php:119
+msgid "thing"
msgstr ""
-#: ../../mod/setup.php:444
-msgid "mb_string PHP module"
+#: ../../mod/like.php:165
+msgid "Channel unavailable."
msgstr ""
-#: ../../mod/setup.php:445
-msgid "mcrypt PHP module"
+#: ../../mod/like.php:204
+msgid "Previous action reversed."
msgstr ""
-#: ../../mod/setup.php:450 ../../mod/setup.php:452
-msgid "Apache mod_rewrite module"
+#: ../../mod/like.php:422
+msgid "Action completed."
msgstr ""
-#: ../../mod/setup.php:450
-msgid ""
-"Error: Apache webserver mod-rewrite module is required but not installed."
+#: ../../mod/like.php:423
+msgid "Thank you."
msgstr ""
-#: ../../mod/setup.php:456 ../../mod/setup.php:459
-msgid "proc_open"
+#: ../../mod/help.php:41 ../../mod/help.php:47 ../../mod/help.php:53
+msgid "Help:"
msgstr ""
-#: ../../mod/setup.php:456
-msgid ""
-"Error: proc_open is required but is either not installed or has been "
-"disabled in php.ini"
+#: ../../mod/help.php:67 ../../index.php:238
+msgid "Not Found"
msgstr ""
-#: ../../mod/setup.php:464
-msgid "Error: libCURL PHP module required but not installed."
+#: ../../mod/thing.php:96
+msgid "Thing updated"
msgstr ""
-#: ../../mod/setup.php:468
-msgid ""
-"Error: GD graphics PHP module with JPEG support required but not installed."
+#: ../../mod/thing.php:156
+msgid "Object store: failed"
msgstr ""
-#: ../../mod/setup.php:472
-msgid "Error: openssl PHP module required but not installed."
+#: ../../mod/thing.php:160
+msgid "Thing added"
msgstr ""
-#: ../../mod/setup.php:476
-msgid "Error: mysqli PHP module required but not installed."
+#: ../../mod/thing.php:180
+#, php-format
+msgid "OBJ: %1$s %2$s %3$s"
msgstr ""
-#: ../../mod/setup.php:480
-msgid "Error: mb_string PHP module required but not installed."
+#: ../../mod/thing.php:232
+msgid "Show Thing"
msgstr ""
-#: ../../mod/setup.php:484
-msgid "Error: mcrypt PHP module required but not installed."
+#: ../../mod/thing.php:239
+msgid "item not found."
msgstr ""
-#: ../../mod/setup.php:500
-msgid ""
-"The web installer needs to be able to create a file called \".htconfig.php\" "
-"in the top folder of your web server and it is unable to do so."
+#: ../../mod/thing.php:270
+msgid "Edit Thing"
msgstr ""
-#: ../../mod/setup.php:501
-msgid ""
-"This is most often a permission setting, as the web server may not be able "
-"to write files in your folder - even if you can."
+#: ../../mod/thing.php:272 ../../mod/thing.php:319
+msgid "Select a profile"
msgstr ""
-#: ../../mod/setup.php:502
-msgid ""
-"At the end of this procedure, we will give you a text to save in a file "
-"named .htconfig.php in your Red top folder."
+#: ../../mod/thing.php:276 ../../mod/thing.php:322
+msgid "Post an activity"
msgstr ""
-#: ../../mod/setup.php:503
-msgid ""
-"You can alternatively skip this procedure and perform a manual installation. "
-"Please see the file \"install/INSTALL.txt\" for instructions."
+#: ../../mod/thing.php:276 ../../mod/thing.php:322
+msgid "Only sends to viewers of the applicable profile"
msgstr ""
-#: ../../mod/setup.php:506
-msgid ".htconfig.php is writable"
+#: ../../mod/thing.php:278 ../../mod/thing.php:324
+msgid "Name of thing e.g. something"
msgstr ""
-#: ../../mod/setup.php:516
-msgid ""
-"Red uses the Smarty3 template engine to render its web views. Smarty3 "
-"compiles templates to PHP to speed up rendering."
+#: ../../mod/thing.php:280 ../../mod/thing.php:325
+msgid "URL of thing (optional)"
msgstr ""
-#: ../../mod/setup.php:517
-#, php-format
-msgid ""
-"In order to store these compiled templates, the web server needs to have "
-"write access to the directory %s under the Red top level folder."
+#: ../../mod/thing.php:282 ../../mod/thing.php:326
+msgid "URL for photo of thing (optional)"
msgstr ""
-#: ../../mod/setup.php:518 ../../mod/setup.php:536
-msgid ""
-"Please ensure that the user that your web server runs as (e.g. www-data) has "
-"write access to this folder."
+#: ../../mod/thing.php:317
+msgid "Add Thing to your Profile"
msgstr ""
-#: ../../mod/setup.php:519
-#, php-format
-msgid ""
-"Note: as a security measure, you should give the web server write access to "
-"%s only--not the template files (.tpl) that it contains."
+#: ../../mod/fsuggest.php:20 ../../mod/fsuggest.php:92
+msgid "Contact not found."
msgstr ""
-#: ../../mod/setup.php:522
-#, php-format
-msgid "%s is writable"
+#: ../../mod/fsuggest.php:63
+msgid "Friend suggestion sent."
msgstr ""
-#: ../../mod/setup.php:535
-msgid ""
-"Red uses the store directory to save uploaded files. The web server needs to "
-"have write access to the store directory under the Red top level folder"
+#: ../../mod/fsuggest.php:97
+msgid "Suggest Friends"
msgstr ""
-#: ../../mod/setup.php:539
-msgid "store is writable"
+#: ../../mod/fsuggest.php:99
+#, php-format
+msgid "Suggest a friend for %s"
msgstr ""
-#: ../../mod/setup.php:569
-msgid ""
-"SSL certificate cannot be validated. Fix certificate or disable https access "
-"to this site."
+#: ../../mod/filestorage.php:76
+msgid "Permission Denied."
msgstr ""
-#: ../../mod/setup.php:570
-msgid ""
-"If you have https access to your website or allow connections to TCP port "
-"443 (the https: port), you MUST use a browser-valid certificate. You MUST "
-"NOT use self-signed certificates!"
+#: ../../mod/filestorage.php:92
+msgid "File not found."
msgstr ""
-#: ../../mod/setup.php:571
-msgid ""
-"This restriction is incorporated because public posts from you may for "
-"example contain references to images on your own hub."
+#: ../../mod/filestorage.php:135
+msgid "Edit file permissions"
msgstr ""
-#: ../../mod/setup.php:572
-msgid ""
-"If your certificate is not recognised, members of other sites (who may "
-"themselves have valid certificates) will get a warning message on their own "
-"site complaining about security issues."
+#: ../../mod/filestorage.php:144
+msgid "Set/edit permissions"
msgstr ""
-#: ../../mod/setup.php:573
-msgid ""
-"This can cause usability issues elsewhere (not just on your own site) so we "
-"must insist on this requirement."
+#: ../../mod/filestorage.php:145
+msgid "Include all files and sub folders"
msgstr ""
-#: ../../mod/setup.php:574
-msgid ""
-"Providers are available that issue free certificates which are browser-valid."
+#: ../../mod/filestorage.php:146
+msgid "Return to file list"
msgstr ""
-#: ../../mod/setup.php:576
-msgid "SSL certificate validation"
+#: ../../mod/filestorage.php:148
+msgid "Copy/paste this code to attach file to a post"
msgstr ""
-#: ../../mod/setup.php:582
-msgid ""
-"Url rewrite in .htaccess is not working. Check your server configuration."
+#: ../../mod/filestorage.php:149
+msgid "Copy/paste this URL to link file from a web page"
msgstr ""
-#: ../../mod/setup.php:584
-msgid "Url rewrite is working"
+#: ../../mod/connect.php:56 ../../mod/connect.php:104
+msgid "Continue"
msgstr ""
-#: ../../mod/setup.php:594
-msgid ""
-"The database configuration file \".htconfig.php\" could not be written. "
-"Please use the enclosed text to create a configuration file in your web "
-"server root."
+#: ../../mod/connect.php:85
+msgid "Premium Channel Setup"
msgstr ""
-#: ../../mod/setup.php:618
-msgid "Errors encountered creating database tables."
+#: ../../mod/connect.php:87
+msgid "Enable premium channel connection restrictions"
msgstr ""
-#: ../../mod/setup.php:653
-msgid "<h1>What next</h1>"
+#: ../../mod/connect.php:88
+msgid ""
+"Please enter your restrictions or conditions, such as paypal receipt, usage "
+"guidelines, etc."
msgstr ""
-#: ../../mod/setup.php:654
+#: ../../mod/connect.php:90 ../../mod/connect.php:110
msgid ""
-"IMPORTANT: You will need to [manually] setup a scheduled task for the poller."
+"This channel may require additional steps or acknowledgement of the "
+"following conditions prior to connecting:"
msgstr ""
-#: ../../mod/editblock.php:8 ../../mod/editblock.php:27
-#: ../../mod/editblock.php:53 ../../mod/editlayout.php:36
-#: ../../mod/editpost.php:20 ../../mod/editwebpage.php:32
-msgid "Item not found"
+#: ../../mod/connect.php:91
+msgid ""
+"Potential connections will then see the following text before proceeding:"
msgstr ""
-#: ../../mod/editblock.php:77
-msgid "Edit Block"
+#: ../../mod/connect.php:92 ../../mod/connect.php:113
+msgid ""
+"By continuing, I certify that I have complied with any instructions provided "
+"on this page."
msgstr ""
-#: ../../mod/editblock.php:87
-msgid "Delete block?"
+#: ../../mod/connect.php:101
+msgid "(No specific instructions have been provided by the channel owner.)"
msgstr ""
-#: ../../mod/editblock.php:115 ../../mod/editlayout.php:110
-#: ../../mod/editpost.php:116 ../../mod/editwebpage.php:147
-msgid "Insert YouTube video"
+#: ../../mod/connect.php:109
+msgid "Restricted or Premium Channel"
msgstr ""
-#: ../../mod/editblock.php:116 ../../mod/editlayout.php:111
-#: ../../mod/editpost.php:117 ../../mod/editwebpage.php:148
-msgid "Insert Vorbis [.ogg] video"
+#: ../../mod/filer.php:49
+msgid "- select -"
msgstr ""
-#: ../../mod/editblock.php:117 ../../mod/editlayout.php:112
-#: ../../mod/editpost.php:118 ../../mod/editwebpage.php:149
-msgid "Insert Vorbis [.ogg] audio"
+#: ../../mod/locs.php:19 ../../mod/locs.php:46
+msgid "Location not found."
msgstr ""
-#: ../../mod/editblock.php:153
-msgid "Delete Block"
+#: ../../mod/locs.php:50
+msgid "Primary location cannot be removed."
msgstr ""
-#: ../../mod/pdledit.php:13
-msgid "Layout updated."
+#: ../../mod/locs.php:82
+msgid "No locations found."
msgstr ""
-#: ../../mod/pdledit.php:28 ../../mod/pdledit.php:53
-msgid "Edit System Page Description"
+#: ../../mod/locs.php:95
+msgid "Manage Channel Locations"
msgstr ""
-#: ../../mod/pdledit.php:48
-msgid "Layout not found."
+#: ../../mod/locs.php:96
+msgid "Location (address)"
msgstr ""
-#: ../../mod/pdledit.php:54
-msgid "Module Name:"
+#: ../../mod/locs.php:97
+msgid "Primary Location"
msgstr ""
-#: ../../mod/pdledit.php:55 ../../mod/layouts.php:59
-msgid "Layout Help"
+#: ../../mod/locs.php:98
+msgid "Drop location"
msgstr ""
-#: ../../mod/editlayout.php:72
-msgid "Edit Layout"
+#: ../../mod/follow.php:25
+msgid "Channel added."
msgstr ""
-#: ../../mod/editlayout.php:82
-msgid "Delete layout?"
+#: ../../mod/import.php:25
+#, php-format
+msgid "Your service plan only allows %d channels."
msgstr ""
-#: ../../mod/editlayout.php:146
-msgid "Delete Layout"
+#: ../../mod/import.php:51
+msgid "Nothing to import."
msgstr ""
-#: ../../mod/editpost.php:31
-msgid "Item is not editable"
+#: ../../mod/import.php:75
+msgid "Unable to download data from old server"
msgstr ""
-#: ../../mod/editpost.php:53
-msgid "Delete item?"
+#: ../../mod/import.php:81
+msgid "Imported file is empty."
msgstr ""
-#: ../../mod/editwebpage.php:106
-msgid "Edit Webpage"
+#: ../../mod/import.php:106
+msgid ""
+"Cannot create a duplicate channel identifier on this system. Import failed."
msgstr ""
-#: ../../mod/editwebpage.php:116
-msgid "Delete webpage?"
+#: ../../mod/import.php:127
+msgid "Unable to create a unique channel address. Import failed."
msgstr ""
-#: ../../mod/editwebpage.php:186
-msgid "Delete Webpage"
+#: ../../mod/import.php:147
+msgid "Channel clone failed. Import failed."
msgstr ""
-#: ../../mod/siteinfo.php:57
-#, php-format
-msgid "Version %s"
+#: ../../mod/import.php:157
+msgid "Cloned channel not found. Import failed."
msgstr ""
-#: ../../mod/siteinfo.php:76
-msgid "Installed plugins/addons/apps:"
+#: ../../mod/import.php:475
+msgid "Import completed."
msgstr ""
-#: ../../mod/siteinfo.php:89
-msgid "No installed plugins/addons/apps"
+#: ../../mod/import.php:487
+msgid "You must be logged in to use this feature."
msgstr ""
-#: ../../mod/siteinfo.php:97
-msgid "Red"
+#: ../../mod/import.php:492
+msgid "Import Channel"
msgstr ""
-#: ../../mod/siteinfo.php:98
+#: ../../mod/import.php:493
msgid ""
-"This is a hub of the Red Matrix - a global cooperative network of "
-"decentralised privacy enhanced websites."
+"Use this form to import an existing channel from a different server/hub. You "
+"may retrieve the channel identity from the old server/hub via the network or "
+"provide an export file. Only identity and connections/relationships will be "
+"imported. Importation of content is not yet available."
msgstr ""
-#: ../../mod/siteinfo.php:101
-msgid "Running at web location"
+#: ../../mod/import.php:494
+msgid "File to Upload"
msgstr ""
-#: ../../mod/siteinfo.php:102
-msgid ""
-"Please visit <a href=\"http://getzot.com\">GetZot.com</a> to learn more "
-"about the Red Matrix."
+#: ../../mod/import.php:495
+msgid "Or provide the old server/hub details"
msgstr ""
-#: ../../mod/siteinfo.php:103
-msgid "Bug reports and issues: please visit"
+#: ../../mod/import.php:496
+msgid "Your old identity address (xyz@example.com)"
msgstr ""
-#: ../../mod/siteinfo.php:106
-msgid ""
-"Suggestions, praise, etc. - please email \"redmatrix\" at librelist - dot com"
+#: ../../mod/import.php:497
+msgid "Your old login email address"
msgstr ""
-#: ../../mod/siteinfo.php:108
-msgid "Site Administrators"
+#: ../../mod/import.php:498
+msgid "Your old login password"
msgstr ""
-#: ../../mod/photos.php:77
-msgid "Page owner information could not be retrieved."
+#: ../../mod/import.php:499
+msgid ""
+"For either option, please choose whether to make this hub your new primary "
+"address, or whether your old location should continue this role. You will be "
+"able to post from either location, but only one can be marked as the primary "
+"location for files, photos, and media."
msgstr ""
-#: ../../mod/photos.php:97
-msgid "Album not found."
+#: ../../mod/import.php:500
+msgid "Make this hub my primary location"
msgstr ""
-#: ../../mod/photos.php:119 ../../mod/photos.php:669
-msgid "Delete Album"
+#: ../../mod/import.php:501
+msgid "Import existing posts if possible"
msgstr ""
-#: ../../mod/photos.php:159 ../../mod/photos.php:957
-msgid "Delete Photo"
+#: ../../mod/item.php:159
+msgid "Unable to locate original post."
msgstr ""
-#: ../../mod/photos.php:453
-msgid "No photos selected"
+#: ../../mod/item.php:418
+msgid "Empty post discarded."
msgstr ""
-#: ../../mod/photos.php:500
-msgid "Access to this item is restricted."
+#: ../../mod/item.php:460
+msgid "Executable content type not permitted to this channel."
msgstr ""
-#: ../../mod/photos.php:574
-#, php-format
-msgid "You have used %1$.2f Mbytes of %2$.2f Mbytes photo storage."
+#: ../../mod/item.php:902
+msgid "System error. Post not saved."
msgstr ""
-#: ../../mod/photos.php:577
+#: ../../mod/item.php:1120
#, php-format
-msgid "You have used %1$.2f Mbytes of photo storage."
+msgid "You have reached your limit of %1$.0f top level posts."
msgstr ""
-#: ../../mod/photos.php:596
-msgid "Upload Photos"
+#: ../../mod/item.php:1126
+#, php-format
+msgid "You have reached your limit of %1$.0f webpages."
msgstr ""
-#: ../../mod/photos.php:600 ../../mod/photos.php:664
-msgid "New album name: "
+#: ../../mod/suggest.php:35
+msgid ""
+"No suggestions available. If this is a new site, please try again in 24 "
+"hours."
msgstr ""
-#: ../../mod/photos.php:601
-msgid "or existing album name: "
+#: ../../mod/layouts.php:110
+msgid "Help with this feature"
msgstr ""
-#: ../../mod/photos.php:602
-msgid "Do not show a status post for this upload"
+#: ../../mod/layouts.php:130
+msgid "Layout Name"
msgstr ""
-#: ../../mod/photos.php:653 ../../mod/photos.php:675 ../../mod/photos.php:1129
-#: ../../mod/photos.php:1144
-msgid "Contact Photos"
+#: ../../mod/tagger.php:98
+#, php-format
+msgid "%1$s tagged %2$s's %3$s with %4$s"
msgstr ""
-#: ../../mod/photos.php:679
-msgid "Edit Album"
+#: ../../mod/setup.php:166
+msgid "Red Matrix Server - Setup"
msgstr ""
-#: ../../mod/photos.php:685
-msgid "Show Newest First"
+#: ../../mod/setup.php:172
+msgid "Could not connect to database."
msgstr ""
-#: ../../mod/photos.php:687
-msgid "Show Oldest First"
+#: ../../mod/setup.php:176
+msgid ""
+"Could not connect to specified site URL. Possible SSL certificate or DNS "
+"issue."
msgstr ""
-#: ../../mod/photos.php:730 ../../mod/photos.php:1176
-msgid "View Photo"
+#: ../../mod/setup.php:183
+msgid "Could not create table."
msgstr ""
-#: ../../mod/photos.php:776
-msgid "Permission denied. Access to this item may be restricted."
+#: ../../mod/setup.php:189
+msgid "Your site database has been installed."
msgstr ""
-#: ../../mod/photos.php:778
-msgid "Photo not available"
+#: ../../mod/setup.php:194
+msgid ""
+"You may need to import the file \"install/schema_xxx.sql\" manually using a "
+"database client."
msgstr ""
-#: ../../mod/photos.php:838
-msgid "Use as profile photo"
+#: ../../mod/setup.php:195 ../../mod/setup.php:264 ../../mod/setup.php:663
+msgid "Please see the file \"install/INSTALL.txt\"."
msgstr ""
-#: ../../mod/photos.php:862
-msgid "View Full Size"
+#: ../../mod/setup.php:261
+msgid "System check"
msgstr ""
-#: ../../mod/photos.php:940
-msgid "Edit photo"
+#: ../../mod/setup.php:266
+msgid "Check again"
msgstr ""
-#: ../../mod/photos.php:942
-msgid "Rotate CW (right)"
+#: ../../mod/setup.php:289
+msgid "Database connection"
msgstr ""
-#: ../../mod/photos.php:943
-msgid "Rotate CCW (left)"
+#: ../../mod/setup.php:290
+msgid ""
+"In order to install Red Matrix we need to know how to connect to your "
+"database."
msgstr ""
-#: ../../mod/photos.php:946
-msgid "New album name"
+#: ../../mod/setup.php:291
+msgid ""
+"Please contact your hosting provider or site administrator if you have "
+"questions about these settings."
msgstr ""
-#: ../../mod/photos.php:949
-msgid "Caption"
+#: ../../mod/setup.php:292
+msgid ""
+"The database you specify below should already exist. If it does not, please "
+"create it before continuing."
msgstr ""
-#: ../../mod/photos.php:951
-msgid "Add a Tag"
+#: ../../mod/setup.php:296
+msgid "Database Server Name"
msgstr ""
-#: ../../mod/photos.php:954
-msgid "Example: @bob, @Barbara_Jensen, @jim@example.com, #California, #camping"
+#: ../../mod/setup.php:296
+msgid "Default is localhost"
msgstr ""
-#: ../../mod/photos.php:1107
-msgid "In This Photo:"
+#: ../../mod/setup.php:297
+msgid "Database Port"
msgstr ""
-#: ../../mod/photos.php:1182
-msgid "View Album"
+#: ../../mod/setup.php:297
+msgid "Communication port number - use 0 for default"
msgstr ""
-#: ../../mod/photos.php:1191
-msgid "Recent Photos"
+#: ../../mod/setup.php:298
+msgid "Database Login Name"
msgstr ""
-#: ../../mod/sources.php:32
-msgid "Failed to create source. No channel selected."
+#: ../../mod/setup.php:299
+msgid "Database Login Password"
msgstr ""
-#: ../../mod/sources.php:45
-msgid "Source created."
+#: ../../mod/setup.php:300
+msgid "Database Name"
msgstr ""
-#: ../../mod/sources.php:57
-msgid "Source updated."
+#: ../../mod/setup.php:301
+msgid "Database Type"
msgstr ""
-#: ../../mod/sources.php:82
-msgid "*"
+#: ../../mod/setup.php:303 ../../mod/setup.php:347
+msgid "Site administrator email address"
msgstr ""
-#: ../../mod/sources.php:89
-msgid "Manage remote sources of content for your channel."
+#: ../../mod/setup.php:303 ../../mod/setup.php:347
+msgid ""
+"Your account email address must match this in order to use the web admin "
+"panel."
msgstr ""
-#: ../../mod/sources.php:90 ../../mod/sources.php:100
-msgid "New Source"
+#: ../../mod/setup.php:304 ../../mod/setup.php:349
+msgid "Website URL"
msgstr ""
-#: ../../mod/sources.php:101 ../../mod/sources.php:133
-msgid ""
-"Import all or selected content from the following channel into this channel "
-"and distribute it according to your channel settings."
+#: ../../mod/setup.php:304 ../../mod/setup.php:349
+msgid "Please use SSL (https) URL if available."
msgstr ""
-#: ../../mod/sources.php:102 ../../mod/sources.php:134
-msgid "Only import content with these words (one per line)"
+#: ../../mod/setup.php:307 ../../mod/setup.php:352
+msgid "Please select a default timezone for your website"
msgstr ""
-#: ../../mod/sources.php:102 ../../mod/sources.php:134
-msgid "Leave blank to import all public content"
+#: ../../mod/setup.php:335
+msgid "Site settings"
msgstr ""
-#: ../../mod/sources.php:103 ../../mod/sources.php:137
-#: ../../mod/new_channel.php:110
-msgid "Channel Name"
+#: ../../mod/setup.php:395
+msgid "Could not find a command line version of PHP in the web server PATH."
msgstr ""
-#: ../../mod/sources.php:123 ../../mod/sources.php:150
-msgid "Source not found."
+#: ../../mod/setup.php:396
+msgid ""
+"If you don't have a command line version of PHP installed on server, you "
+"will not be able to run background polling via cron."
msgstr ""
-#: ../../mod/sources.php:130
-msgid "Edit Source"
+#: ../../mod/setup.php:400
+msgid "PHP executable path"
msgstr ""
-#: ../../mod/sources.php:131
-msgid "Delete Source"
+#: ../../mod/setup.php:400
+msgid ""
+"Enter full path to php executable. You can leave this blank to continue the "
+"installation."
msgstr ""
-#: ../../mod/sources.php:158
-msgid "Source removed"
+#: ../../mod/setup.php:405
+msgid "Command line PHP"
msgstr ""
-#: ../../mod/sources.php:160
-msgid "Unable to remove source."
+#: ../../mod/setup.php:414
+msgid ""
+"The command line version of PHP on your system does not have "
+"\"register_argc_argv\" enabled."
msgstr ""
-#: ../../mod/filer.php:49
-msgid "- select -"
+#: ../../mod/setup.php:415
+msgid "This is required for message delivery to work."
msgstr ""
-#: ../../mod/events.php:72
-msgid "Event title and start time are required."
+#: ../../mod/setup.php:417
+msgid "PHP register_argc_argv"
msgstr ""
-#: ../../mod/events.php:86
-msgid "Event not found."
+#: ../../mod/setup.php:438
+msgid ""
+"Error: the \"openssl_pkey_new\" function on this system is not able to "
+"generate encryption keys"
msgstr ""
-#: ../../mod/events.php:329
-msgid "l, F j"
+#: ../../mod/setup.php:439
+msgid ""
+"If running under Windows, please see \"http://www.php.net/manual/en/openssl."
+"installation.php\"."
msgstr ""
-#: ../../mod/events.php:351
-msgid "Edit event"
+#: ../../mod/setup.php:441
+msgid "Generate encryption keys"
msgstr ""
-#: ../../mod/events.php:397
-msgid "Create New Event"
+#: ../../mod/setup.php:448
+msgid "libCurl PHP module"
msgstr ""
-#: ../../mod/events.php:398
-msgid "Previous"
+#: ../../mod/setup.php:449
+msgid "GD graphics PHP module"
msgstr ""
-#: ../../mod/events.php:469
-msgid "hour:minute"
+#: ../../mod/setup.php:450
+msgid "OpenSSL PHP module"
msgstr ""
-#: ../../mod/events.php:489
-msgid "Event details"
+#: ../../mod/setup.php:451
+msgid "mysqli or postgres PHP module"
msgstr ""
-#: ../../mod/events.php:490
-#, php-format
-msgid "Format is %s %s. Starting date and Title are required."
+#: ../../mod/setup.php:452
+msgid "mb_string PHP module"
msgstr ""
-#: ../../mod/events.php:492
-msgid "Event Starts:"
+#: ../../mod/setup.php:453
+msgid "mcrypt PHP module"
msgstr ""
-#: ../../mod/events.php:492 ../../mod/events.php:506 ../../mod/appman.php:91
-#: ../../mod/appman.php:92
-msgid "Required"
+#: ../../mod/setup.php:458 ../../mod/setup.php:460
+msgid "Apache mod_rewrite module"
msgstr ""
-#: ../../mod/events.php:495
-msgid "Finish date/time is not known or not relevant"
+#: ../../mod/setup.php:458
+msgid ""
+"Error: Apache webserver mod-rewrite module is required but not installed."
msgstr ""
-#: ../../mod/events.php:497
-msgid "Event Finishes:"
+#: ../../mod/setup.php:464 ../../mod/setup.php:467
+msgid "proc_open"
msgstr ""
-#: ../../mod/events.php:500
-msgid "Adjust for viewer timezone"
+#: ../../mod/setup.php:464
+msgid ""
+"Error: proc_open is required but is either not installed or has been "
+"disabled in php.ini"
msgstr ""
-#: ../../mod/events.php:502
-msgid "Description:"
+#: ../../mod/setup.php:472
+msgid "Error: libCURL PHP module required but not installed."
msgstr ""
-#: ../../mod/events.php:506
-msgid "Title:"
+#: ../../mod/setup.php:476
+msgid ""
+"Error: GD graphics PHP module with JPEG support required but not installed."
msgstr ""
-#: ../../mod/events.php:508
-msgid "Share this event"
+#: ../../mod/setup.php:480
+msgid "Error: openssl PHP module required but not installed."
msgstr ""
-#: ../../mod/filestorage.php:68
-msgid "Permission Denied."
+#: ../../mod/setup.php:484
+msgid ""
+"Error: mysqli or postgres PHP module required but neither are installed."
msgstr ""
-#: ../../mod/filestorage.php:85
-msgid "File not found."
+#: ../../mod/setup.php:488
+msgid "Error: mb_string PHP module required but not installed."
msgstr ""
-#: ../../mod/filestorage.php:122
-msgid "Edit file permissions"
+#: ../../mod/setup.php:492
+msgid "Error: mcrypt PHP module required but not installed."
msgstr ""
-#: ../../mod/filestorage.php:131
-msgid "Set/edit permissions"
+#: ../../mod/setup.php:508
+msgid ""
+"The web installer needs to be able to create a file called \".htconfig.php\" "
+"in the top folder of your web server and it is unable to do so."
msgstr ""
-#: ../../mod/filestorage.php:132
-msgid "Include all files and sub folders"
+#: ../../mod/setup.php:509
+msgid ""
+"This is most often a permission setting, as the web server may not be able "
+"to write files in your folder - even if you can."
msgstr ""
-#: ../../mod/filestorage.php:133
-msgid "Return to file list"
+#: ../../mod/setup.php:510
+msgid ""
+"At the end of this procedure, we will give you a text to save in a file "
+"named .htconfig.php in your Red top folder."
msgstr ""
-#: ../../mod/filestorage.php:135
-msgid "Copy/paste this code to attach file to a post"
+#: ../../mod/setup.php:511
+msgid ""
+"You can alternatively skip this procedure and perform a manual installation. "
+"Please see the file \"install/INSTALL.txt\" for instructions."
msgstr ""
-#: ../../mod/filestorage.php:136
-msgid "Copy/paste this URL to link file from a web page"
+#: ../../mod/setup.php:514
+msgid ".htconfig.php is writable"
msgstr ""
-#: ../../mod/follow.php:25
-msgid "Channel added."
+#: ../../mod/setup.php:524
+msgid ""
+"Red uses the Smarty3 template engine to render its web views. Smarty3 "
+"compiles templates to PHP to speed up rendering."
msgstr ""
-#: ../../mod/subthread.php:103
+#: ../../mod/setup.php:525
#, php-format
-msgid "%1$s is following %2$s's %3$s"
-msgstr ""
-
-#: ../../mod/fsuggest.php:20 ../../mod/fsuggest.php:92
-msgid "Contact not found."
+msgid ""
+"In order to store these compiled templates, the web server needs to have "
+"write access to the directory %s under the Red top level folder."
msgstr ""
-#: ../../mod/fsuggest.php:63
-msgid "Friend suggestion sent."
+#: ../../mod/setup.php:526 ../../mod/setup.php:544
+msgid ""
+"Please ensure that the user that your web server runs as (e.g. www-data) has "
+"write access to this folder."
msgstr ""
-#: ../../mod/fsuggest.php:97
-msgid "Suggest Friends"
+#: ../../mod/setup.php:527
+#, php-format
+msgid ""
+"Note: as a security measure, you should give the web server write access to "
+"%s only--not the template files (.tpl) that it contains."
msgstr ""
-#: ../../mod/fsuggest.php:99
+#: ../../mod/setup.php:530
#, php-format
-msgid "Suggest a friend for %s"
+msgid "%s is writable"
msgstr ""
-#: ../../mod/suggest.php:35
+#: ../../mod/setup.php:543
msgid ""
-"No suggestions available. If this is a new site, please try again in 24 "
-"hours."
-msgstr ""
-
-#: ../../mod/group.php:20
-msgid "Collection created."
+"Red uses the store directory to save uploaded files. The web server needs to "
+"have write access to the store directory under the Red top level folder"
msgstr ""
-#: ../../mod/group.php:26
-msgid "Could not create collection."
+#: ../../mod/setup.php:547
+msgid "store is writable"
msgstr ""
-#: ../../mod/group.php:54
-msgid "Collection updated."
+#: ../../mod/setup.php:577
+msgid ""
+"SSL certificate cannot be validated. Fix certificate or disable https access "
+"to this site."
msgstr ""
-#: ../../mod/group.php:86
-msgid "Create a collection of channels."
+#: ../../mod/setup.php:578
+msgid ""
+"If you have https access to your website or allow connections to TCP port "
+"443 (the https: port), you MUST use a browser-valid certificate. You MUST "
+"NOT use self-signed certificates!"
msgstr ""
-#: ../../mod/group.php:87 ../../mod/group.php:183
-msgid "Collection Name: "
+#: ../../mod/setup.php:579
+msgid ""
+"This restriction is incorporated because public posts from you may for "
+"example contain references to images on your own hub."
msgstr ""
-#: ../../mod/group.php:89 ../../mod/group.php:186
-msgid "Members are visible to other channels"
+#: ../../mod/setup.php:580
+msgid ""
+"If your certificate is not recognized, members of other sites (who may "
+"themselves have valid certificates) will get a warning message on their own "
+"site complaining about security issues."
msgstr ""
-#: ../../mod/group.php:107
-msgid "Collection removed."
+#: ../../mod/setup.php:581
+msgid ""
+"This can cause usability issues elsewhere (not just on your own site) so we "
+"must insist on this requirement."
msgstr ""
-#: ../../mod/group.php:109
-msgid "Unable to remove collection."
+#: ../../mod/setup.php:582
+msgid ""
+"Providers are available that issue free certificates which are browser-valid."
msgstr ""
-#: ../../mod/group.php:182
-msgid "Collection Editor"
+#: ../../mod/setup.php:584
+msgid "SSL certificate validation"
msgstr ""
-#: ../../mod/group.php:196
-msgid "Members"
+#: ../../mod/setup.php:590
+msgid ""
+"Url rewrite in .htaccess is not working. Check your server configuration."
+"Test: "
msgstr ""
-#: ../../mod/group.php:198
-msgid "All Connected Channels"
+#: ../../mod/setup.php:592
+msgid "Url rewrite is working"
msgstr ""
-#: ../../mod/group.php:231
-msgid "Click on a channel to add or remove."
+#: ../../mod/setup.php:602
+msgid ""
+"The database configuration file \".htconfig.php\" could not be written. "
+"Please use the enclosed text to create a configuration file in your web "
+"server root."
msgstr ""
-#: ../../mod/tagger.php:98
-#, php-format
-msgid "%1$s tagged %2$s's %3$s with %4$s"
+#: ../../mod/setup.php:626
+msgid "Errors encountered creating database tables."
msgstr ""
-#: ../../mod/help.php:43 ../../mod/help.php:49 ../../mod/help.php:55
-msgid "Help:"
+#: ../../mod/setup.php:661
+msgid "<h1>What next</h1>"
msgstr ""
-#: ../../mod/help.php:69 ../../index.php:233
-msgid "Not Found"
+#: ../../mod/setup.php:662
+msgid ""
+"IMPORTANT: You will need to [manually] setup a scheduled task for the poller."
msgstr ""
-#: ../../mod/tagrm.php:41
+#: ../../mod/tagrm.php:44 ../../mod/tagrm.php:94
msgid "Tag removed"
msgstr ""
-#: ../../mod/tagrm.php:79
+#: ../../mod/tagrm.php:119
msgid "Remove Item Tag"
msgstr ""
-#: ../../mod/tagrm.php:81
+#: ../../mod/tagrm.php:121
msgid "Select a tag to remove: "
msgstr ""
@@ -6231,722 +6842,728 @@ msgstr ""
msgid "Theme settings updated."
msgstr ""
-#: ../../mod/admin.php:92 ../../mod/admin.php:441
+#: ../../mod/admin.php:97 ../../mod/admin.php:411
msgid "Site"
msgstr ""
-#: ../../mod/admin.php:93
+#: ../../mod/admin.php:98
msgid "Accounts"
msgstr ""
-#: ../../mod/admin.php:94 ../../mod/admin.php:885
+#: ../../mod/admin.php:99 ../../mod/admin.php:858
msgid "Channels"
msgstr ""
-#: ../../mod/admin.php:95 ../../mod/admin.php:976 ../../mod/admin.php:1018
+#: ../../mod/admin.php:100 ../../mod/admin.php:949 ../../mod/admin.php:991
msgid "Plugins"
msgstr ""
-#: ../../mod/admin.php:96 ../../mod/admin.php:1181 ../../mod/admin.php:1217
+#: ../../mod/admin.php:101 ../../mod/admin.php:1154 ../../mod/admin.php:1190
msgid "Themes"
msgstr ""
-#: ../../mod/admin.php:97 ../../mod/admin.php:541
+#: ../../mod/admin.php:102 ../../mod/admin.php:512
msgid "Server"
msgstr ""
-#: ../../mod/admin.php:98
+#: ../../mod/admin.php:103
+msgid "Profile Config"
+msgstr ""
+
+#: ../../mod/admin.php:104
msgid "DB updates"
msgstr ""
-#: ../../mod/admin.php:112 ../../mod/admin.php:119 ../../mod/admin.php:1304
+#: ../../mod/admin.php:118 ../../mod/admin.php:125 ../../mod/admin.php:1277
msgid "Logs"
msgstr ""
-#: ../../mod/admin.php:118
+#: ../../mod/admin.php:124
msgid "Plugin Features"
msgstr ""
-#: ../../mod/admin.php:120
+#: ../../mod/admin.php:126
msgid "User registrations waiting for confirmation"
msgstr ""
-#: ../../mod/admin.php:197
+#: ../../mod/admin.php:206
msgid "Message queues"
msgstr ""
-#: ../../mod/admin.php:202 ../../mod/admin.php:440 ../../mod/admin.php:540
-#: ../../mod/admin.php:749 ../../mod/admin.php:884 ../../mod/admin.php:975
-#: ../../mod/admin.php:1017 ../../mod/admin.php:1180 ../../mod/admin.php:1216
-#: ../../mod/admin.php:1303
+#: ../../mod/admin.php:211 ../../mod/admin.php:410 ../../mod/admin.php:511
+#: ../../mod/admin.php:721 ../../mod/admin.php:857 ../../mod/admin.php:948
+#: ../../mod/admin.php:990 ../../mod/admin.php:1153 ../../mod/admin.php:1189
+#: ../../mod/admin.php:1276
msgid "Administration"
msgstr ""
-#: ../../mod/admin.php:203
+#: ../../mod/admin.php:212
msgid "Summary"
msgstr ""
-#: ../../mod/admin.php:205
+#: ../../mod/admin.php:214
msgid "Registered users"
msgstr ""
-#: ../../mod/admin.php:207 ../../mod/admin.php:544
+#: ../../mod/admin.php:216 ../../mod/admin.php:515
msgid "Pending registrations"
msgstr ""
-#: ../../mod/admin.php:208
+#: ../../mod/admin.php:217
msgid "Version"
msgstr ""
-#: ../../mod/admin.php:210 ../../mod/admin.php:545
+#: ../../mod/admin.php:219 ../../mod/admin.php:516
msgid "Active plugins"
msgstr ""
-#: ../../mod/admin.php:361
+#: ../../mod/admin.php:326
msgid "Site settings updated."
msgstr ""
-#: ../../mod/admin.php:392
-msgid "No special theme for accessibility"
+#: ../../mod/admin.php:365
+msgid "experimental"
msgstr ""
-#: ../../mod/admin.php:421
+#: ../../mod/admin.php:367
+msgid "unsupported"
+msgstr ""
+
+#: ../../mod/admin.php:391
msgid "Yes - with approval"
msgstr ""
-#: ../../mod/admin.php:427
+#: ../../mod/admin.php:397
msgid "My site is not a public server"
msgstr ""
-#: ../../mod/admin.php:428
+#: ../../mod/admin.php:398
msgid "My site has paid access only"
msgstr ""
-#: ../../mod/admin.php:429
+#: ../../mod/admin.php:399
msgid "My site has free access only"
msgstr ""
-#: ../../mod/admin.php:430
+#: ../../mod/admin.php:400
msgid "My site offers free accounts with optional paid upgrades"
msgstr ""
-#: ../../mod/admin.php:444
+#: ../../mod/admin.php:414
msgid "File upload"
msgstr ""
-#: ../../mod/admin.php:445
+#: ../../mod/admin.php:415
msgid "Policies"
msgstr ""
-#: ../../mod/admin.php:450
+#: ../../mod/admin.php:420
msgid "Site name"
msgstr ""
-#: ../../mod/admin.php:451
+#: ../../mod/admin.php:421
msgid "Banner/Logo"
msgstr ""
-#: ../../mod/admin.php:452
+#: ../../mod/admin.php:422
msgid "Administrator Information"
msgstr ""
-#: ../../mod/admin.php:452
+#: ../../mod/admin.php:422
msgid ""
"Contact information for site administrators. Displayed on siteinfo page. "
"BBCode can be used here"
msgstr ""
-#: ../../mod/admin.php:453
+#: ../../mod/admin.php:423
msgid "System language"
msgstr ""
-#: ../../mod/admin.php:454
+#: ../../mod/admin.php:424
msgid "System theme"
msgstr ""
-#: ../../mod/admin.php:454
+#: ../../mod/admin.php:424
msgid ""
"Default system theme - may be over-ridden by user profiles - <a href='#' "
"id='cnftheme'>change theme settings</a>"
msgstr ""
-#: ../../mod/admin.php:455
+#: ../../mod/admin.php:425
msgid "Mobile system theme"
msgstr ""
-#: ../../mod/admin.php:455
+#: ../../mod/admin.php:425
msgid "Theme for mobile devices"
msgstr ""
-#: ../../mod/admin.php:456
-msgid "Accessibility system theme"
+#: ../../mod/admin.php:427
+msgid "Enable Diaspora Protocol"
msgstr ""
-#: ../../mod/admin.php:456
-msgid "Accessibility theme"
+#: ../../mod/admin.php:427
+msgid "Communicate with Diaspora and Friendica - experimental"
msgstr ""
-#: ../../mod/admin.php:457
-msgid "Channel to use for this website's static pages"
+#: ../../mod/admin.php:428
+msgid "Allow Feeds as Connections"
msgstr ""
-#: ../../mod/admin.php:457
-msgid "Site Channel"
+#: ../../mod/admin.php:428
+msgid "(Heavy system resource usage)"
msgstr ""
-#: ../../mod/admin.php:459
+#: ../../mod/admin.php:429
msgid "Maximum image size"
msgstr ""
-#: ../../mod/admin.php:459
+#: ../../mod/admin.php:429
msgid ""
"Maximum size in bytes of uploaded images. Default is 0, which means no "
"limits."
msgstr ""
-#: ../../mod/admin.php:460
+#: ../../mod/admin.php:430
msgid "Does this site allow new member registration?"
msgstr ""
-#: ../../mod/admin.php:461
+#: ../../mod/admin.php:431
msgid "Which best describes the types of account offered by this hub?"
msgstr ""
-#: ../../mod/admin.php:462
+#: ../../mod/admin.php:432
msgid "Register text"
msgstr ""
-#: ../../mod/admin.php:462
+#: ../../mod/admin.php:432
msgid "Will be displayed prominently on the registration page."
msgstr ""
-#: ../../mod/admin.php:463
+#: ../../mod/admin.php:433
msgid "Accounts abandoned after x days"
msgstr ""
-#: ../../mod/admin.php:463
+#: ../../mod/admin.php:433
msgid ""
"Will not waste system resources polling external sites for abandonded "
"accounts. Enter 0 for no time limit."
msgstr ""
-#: ../../mod/admin.php:464
+#: ../../mod/admin.php:434
msgid "Allowed friend domains"
msgstr ""
-#: ../../mod/admin.php:464
+#: ../../mod/admin.php:434
msgid ""
"Comma separated list of domains which are allowed to establish friendships "
"with this site. Wildcards are accepted. Empty to allow any domains"
msgstr ""
-#: ../../mod/admin.php:465
+#: ../../mod/admin.php:435
msgid "Allowed email domains"
msgstr ""
-#: ../../mod/admin.php:465
+#: ../../mod/admin.php:435
msgid ""
"Comma separated list of domains which are allowed in email addresses for "
"registrations to this site. Wildcards are accepted. Empty to allow any "
"domains"
msgstr ""
-#: ../../mod/admin.php:466
+#: ../../mod/admin.php:436
msgid "Block public"
msgstr ""
-#: ../../mod/admin.php:466
+#: ../../mod/admin.php:436
msgid ""
"Check to block public access to all otherwise public personal pages on this "
"site unless you are currently logged in."
msgstr ""
-#: ../../mod/admin.php:467
+#: ../../mod/admin.php:437
+msgid "Verify Email Addresses"
+msgstr ""
+
+#: ../../mod/admin.php:437
+msgid ""
+"Check to verify email addresses used in account registration (recommended)."
+msgstr ""
+
+#: ../../mod/admin.php:438
msgid "Force publish"
msgstr ""
-#: ../../mod/admin.php:467
+#: ../../mod/admin.php:438
msgid ""
"Check to force all profiles on this site to be listed in the site directory."
msgstr ""
-#: ../../mod/admin.php:468
+#: ../../mod/admin.php:439
msgid "Disable discovery tab"
msgstr ""
-#: ../../mod/admin.php:468
+#: ../../mod/admin.php:439
msgid ""
"Remove the tab in the network view with public content pulled from sources "
"chosen for this site."
msgstr ""
-#: ../../mod/admin.php:469
+#: ../../mod/admin.php:440
msgid "No login on Homepage"
msgstr ""
-#: ../../mod/admin.php:469
+#: ../../mod/admin.php:440
msgid ""
"Check to hide the login form from your sites homepage when visitors arrive "
"who are not logged in (e.g. when you put the content of the homepage in via "
"the site channel)."
msgstr ""
-#: ../../mod/admin.php:471
+#: ../../mod/admin.php:442
msgid "Proxy user"
msgstr ""
-#: ../../mod/admin.php:472
+#: ../../mod/admin.php:443
msgid "Proxy URL"
msgstr ""
-#: ../../mod/admin.php:473
+#: ../../mod/admin.php:444
msgid "Network timeout"
msgstr ""
-#: ../../mod/admin.php:473
+#: ../../mod/admin.php:444
msgid "Value is in seconds. Set to 0 for unlimited (not recommended)."
msgstr ""
-#: ../../mod/admin.php:474
+#: ../../mod/admin.php:445
msgid "Delivery interval"
msgstr ""
-#: ../../mod/admin.php:474
+#: ../../mod/admin.php:445
msgid ""
"Delay background delivery processes by this many seconds to reduce system "
"load. Recommend: 4-5 for shared hosts, 2-3 for virtual private servers. 0-1 "
"for large dedicated servers."
msgstr ""
-#: ../../mod/admin.php:475
+#: ../../mod/admin.php:446
msgid "Poll interval"
msgstr ""
-#: ../../mod/admin.php:475
+#: ../../mod/admin.php:446
msgid ""
"Delay background polling processes by this many seconds to reduce system "
"load. If 0, use delivery interval."
msgstr ""
-#: ../../mod/admin.php:476
+#: ../../mod/admin.php:447
msgid "Maximum Load Average"
msgstr ""
-#: ../../mod/admin.php:476
+#: ../../mod/admin.php:447
msgid ""
"Maximum system load before delivery and poll processes are deferred - "
"default 50."
msgstr ""
-#: ../../mod/admin.php:532
+#: ../../mod/admin.php:503
msgid "No server found"
msgstr ""
-#: ../../mod/admin.php:539 ../../mod/admin.php:763
+#: ../../mod/admin.php:510 ../../mod/admin.php:735
msgid "ID"
msgstr ""
-#: ../../mod/admin.php:539
+#: ../../mod/admin.php:510
msgid "for channel"
msgstr ""
-#: ../../mod/admin.php:539
+#: ../../mod/admin.php:510
msgid "on server"
msgstr ""
-#: ../../mod/admin.php:539
+#: ../../mod/admin.php:510
msgid "Status"
msgstr ""
-#: ../../mod/admin.php:560
+#: ../../mod/admin.php:531
msgid "Update has been marked successful"
msgstr ""
-#: ../../mod/admin.php:570
+#: ../../mod/admin.php:541
#, php-format
msgid "Executing %s failed. Check system logs."
msgstr ""
-#: ../../mod/admin.php:573
+#: ../../mod/admin.php:544
#, php-format
msgid "Update %s was successfully applied."
msgstr ""
-#: ../../mod/admin.php:577
+#: ../../mod/admin.php:548
#, php-format
msgid "Update %s did not return a status. Unknown if it succeeded."
msgstr ""
-#: ../../mod/admin.php:580
+#: ../../mod/admin.php:551
#, php-format
msgid "Update function %s could not be found."
msgstr ""
-#: ../../mod/admin.php:595
+#: ../../mod/admin.php:566
msgid "No failed updates."
msgstr ""
-#: ../../mod/admin.php:599
+#: ../../mod/admin.php:570
msgid "Failed Updates"
msgstr ""
-#: ../../mod/admin.php:601
+#: ../../mod/admin.php:572
msgid "Mark success (if update was manually applied)"
msgstr ""
-#: ../../mod/admin.php:602
+#: ../../mod/admin.php:573
msgid "Attempt to execute this update step automatically"
msgstr ""
-#: ../../mod/admin.php:628
+#: ../../mod/admin.php:599
#, php-format
msgid "%s user blocked/unblocked"
msgid_plural "%s users blocked/unblocked"
msgstr[0] ""
msgstr[1] ""
-#: ../../mod/admin.php:635
+#: ../../mod/admin.php:606
#, php-format
msgid "%s user deleted"
msgid_plural "%s users deleted"
msgstr[0] ""
msgstr[1] ""
-#: ../../mod/admin.php:666
+#: ../../mod/admin.php:635
msgid "Account not found"
msgstr ""
-#: ../../mod/admin.php:677
-#, php-format
-msgid "User '%s' deleted"
-msgstr ""
-
-#: ../../mod/admin.php:686
+#: ../../mod/admin.php:655
#, php-format
msgid "User '%s' unblocked"
msgstr ""
-#: ../../mod/admin.php:686
+#: ../../mod/admin.php:655
#, php-format
msgid "User '%s' blocked"
msgstr ""
-#: ../../mod/admin.php:750 ../../mod/admin.php:762
+#: ../../mod/admin.php:722 ../../mod/admin.php:734
msgid "Users"
msgstr ""
-#: ../../mod/admin.php:752 ../../mod/admin.php:887
+#: ../../mod/admin.php:724 ../../mod/admin.php:860
msgid "select all"
msgstr ""
-#: ../../mod/admin.php:753
+#: ../../mod/admin.php:725
msgid "User registrations waiting for confirm"
msgstr ""
-#: ../../mod/admin.php:754
+#: ../../mod/admin.php:726
msgid "Request date"
msgstr ""
-#: ../../mod/admin.php:755
+#: ../../mod/admin.php:727
msgid "No registrations."
msgstr ""
-#: ../../mod/admin.php:756
+#: ../../mod/admin.php:728
msgid "Approve"
msgstr ""
-#: ../../mod/admin.php:757
+#: ../../mod/admin.php:729
msgid "Deny"
msgstr ""
-#: ../../mod/admin.php:763
+#: ../../mod/admin.php:735
msgid "Register date"
msgstr ""
-#: ../../mod/admin.php:763
+#: ../../mod/admin.php:735
msgid "Last login"
msgstr ""
-#: ../../mod/admin.php:763
+#: ../../mod/admin.php:735
msgid "Expires"
msgstr ""
-#: ../../mod/admin.php:763
+#: ../../mod/admin.php:735
msgid "Service Class"
msgstr ""
-#: ../../mod/admin.php:765
+#: ../../mod/admin.php:737
msgid ""
"Selected users will be deleted!\\n\\nEverything these users had posted on "
"this site will be permanently deleted!\\n\\nAre you sure?"
msgstr ""
-#: ../../mod/admin.php:766
+#: ../../mod/admin.php:738
msgid ""
"The user {0} will be deleted!\\n\\nEverything this user has posted on this "
"site will be permanently deleted!\\n\\nAre you sure?"
msgstr ""
-#: ../../mod/admin.php:799
+#: ../../mod/admin.php:771
#, php-format
msgid "%s channel censored/uncensored"
-msgid_plural "%s channelss censored/uncensored"
+msgid_plural "%s channels censored/uncensored"
msgstr[0] ""
msgstr[1] ""
-#: ../../mod/admin.php:806
+#: ../../mod/admin.php:778
#, php-format
msgid "%s channel deleted"
msgid_plural "%s channels deleted"
msgstr[0] ""
msgstr[1] ""
-#: ../../mod/admin.php:825
+#: ../../mod/admin.php:797
msgid "Channel not found"
msgstr ""
-#: ../../mod/admin.php:836
+#: ../../mod/admin.php:808
#, php-format
msgid "Channel '%s' deleted"
msgstr ""
-#: ../../mod/admin.php:846
+#: ../../mod/admin.php:819
#, php-format
msgid "Channel '%s' uncensored"
msgstr ""
-#: ../../mod/admin.php:846
+#: ../../mod/admin.php:819
#, php-format
msgid "Channel '%s' censored"
msgstr ""
-#: ../../mod/admin.php:889
+#: ../../mod/admin.php:862
msgid "Censor"
msgstr ""
-#: ../../mod/admin.php:890
+#: ../../mod/admin.php:863
msgid "Uncensor"
msgstr ""
-#: ../../mod/admin.php:893
+#: ../../mod/admin.php:866
msgid "UID"
msgstr ""
-#: ../../mod/admin.php:895
+#: ../../mod/admin.php:868
msgid ""
"Selected channels will be deleted!\\n\\nEverything that was posted in these "
"channels on this site will be permanently deleted!\\n\\nAre you sure?"
msgstr ""
-#: ../../mod/admin.php:896
+#: ../../mod/admin.php:869
msgid ""
"The channel {0} will be deleted!\\n\\nEverything that was posted in this "
"channel on this site will be permanently deleted!\\n\\nAre you sure?"
msgstr ""
-#: ../../mod/admin.php:935
+#: ../../mod/admin.php:908
#, php-format
msgid "Plugin %s disabled."
msgstr ""
-#: ../../mod/admin.php:939
+#: ../../mod/admin.php:912
#, php-format
msgid "Plugin %s enabled."
msgstr ""
-#: ../../mod/admin.php:949 ../../mod/admin.php:1151
+#: ../../mod/admin.php:922 ../../mod/admin.php:1124
msgid "Disable"
msgstr ""
-#: ../../mod/admin.php:951 ../../mod/admin.php:1153
+#: ../../mod/admin.php:924 ../../mod/admin.php:1126
msgid "Enable"
msgstr ""
-#: ../../mod/admin.php:977 ../../mod/admin.php:1182
+#: ../../mod/admin.php:950 ../../mod/admin.php:1155
msgid "Toggle"
msgstr ""
-#: ../../mod/admin.php:985 ../../mod/admin.php:1192
+#: ../../mod/admin.php:958 ../../mod/admin.php:1165
msgid "Author: "
msgstr ""
-#: ../../mod/admin.php:986 ../../mod/admin.php:1193
+#: ../../mod/admin.php:959 ../../mod/admin.php:1166
msgid "Maintainer: "
msgstr ""
-#: ../../mod/admin.php:1115
+#: ../../mod/admin.php:1088
msgid "No themes found."
msgstr ""
-#: ../../mod/admin.php:1174
+#: ../../mod/admin.php:1147
msgid "Screenshot"
msgstr ""
-#: ../../mod/admin.php:1222
+#: ../../mod/admin.php:1195
msgid "[Experimental]"
msgstr ""
-#: ../../mod/admin.php:1223
+#: ../../mod/admin.php:1196
msgid "[Unsupported]"
msgstr ""
-#: ../../mod/admin.php:1250
+#: ../../mod/admin.php:1223
msgid "Log settings updated."
msgstr ""
-#: ../../mod/admin.php:1306
+#: ../../mod/admin.php:1279
msgid "Clear"
msgstr ""
-#: ../../mod/admin.php:1312
+#: ../../mod/admin.php:1285
msgid "Debugging"
msgstr ""
-#: ../../mod/admin.php:1313
+#: ../../mod/admin.php:1286
msgid "Log file"
msgstr ""
-#: ../../mod/admin.php:1313
+#: ../../mod/admin.php:1286
msgid ""
"Must be writable by web server. Relative to your Red top-level directory."
msgstr ""
-#: ../../mod/admin.php:1314
+#: ../../mod/admin.php:1287
msgid "Log level"
msgstr ""
-#: ../../mod/thing.php:98
-msgid "Thing updated"
+#: ../../mod/admin.php:1334
+msgid "New Profile Field"
msgstr ""
-#: ../../mod/thing.php:158
-msgid "Object store: failed"
+#: ../../mod/admin.php:1335 ../../mod/admin.php:1356
+msgid "Field nickname"
msgstr ""
-#: ../../mod/thing.php:162
-msgid "Thing added"
+#: ../../mod/admin.php:1335 ../../mod/admin.php:1356
+msgid "System name of field"
msgstr ""
-#: ../../mod/thing.php:182
-#, php-format
-msgid "OBJ: %1$s %2$s %3$s"
+#: ../../mod/admin.php:1336 ../../mod/admin.php:1357
+msgid "Input type"
msgstr ""
-#: ../../mod/thing.php:234
-msgid "Show Thing"
+#: ../../mod/admin.php:1337 ../../mod/admin.php:1358
+msgid "Field Name"
msgstr ""
-#: ../../mod/thing.php:241
-msgid "item not found."
+#: ../../mod/admin.php:1337 ../../mod/admin.php:1358
+msgid "Label on profile pages"
msgstr ""
-#: ../../mod/thing.php:272
-msgid "Edit Thing"
+#: ../../mod/admin.php:1338 ../../mod/admin.php:1359
+msgid "Help text"
msgstr ""
-#: ../../mod/thing.php:274 ../../mod/thing.php:321
-msgid "Select a profile"
+#: ../../mod/admin.php:1338 ../../mod/admin.php:1359
+msgid "Additional info (optional)"
msgstr ""
-#: ../../mod/thing.php:278 ../../mod/thing.php:324
-msgid "Post an activity"
+#: ../../mod/admin.php:1349
+msgid "Field definition not found"
msgstr ""
-#: ../../mod/thing.php:278 ../../mod/thing.php:324
-msgid "Only sends to viewers of the applicable profile"
+#: ../../mod/admin.php:1355
+msgid "Edit Profile Field"
msgstr ""
-#: ../../mod/thing.php:280 ../../mod/thing.php:326
-msgid "Name of thing e.g. something"
+#: ../../mod/menu.php:31
+msgid "Menu updated."
msgstr ""
-#: ../../mod/thing.php:282 ../../mod/thing.php:327
-msgid "URL of thing (optional)"
+#: ../../mod/menu.php:35
+msgid "Unable to update menu."
msgstr ""
-#: ../../mod/thing.php:284 ../../mod/thing.php:328
-msgid "URL for photo of thing (optional)"
+#: ../../mod/menu.php:40
+msgid "Menu created."
msgstr ""
-#: ../../mod/thing.php:319
-msgid "Add Thing to your Profile"
+#: ../../mod/menu.php:44
+msgid "Unable to create menu."
msgstr ""
-#: ../../mod/import.php:36
-msgid "Nothing to import."
+#: ../../mod/menu.php:76
+msgid "Manage Menus"
msgstr ""
-#: ../../mod/import.php:58
-msgid "Unable to download data from old server"
+#: ../../mod/menu.php:79
+msgid "Drop"
msgstr ""
-#: ../../mod/import.php:64
-msgid "Imported file is empty."
+#: ../../mod/menu.php:81
+msgid "Bookmarks allowed"
msgstr ""
-#: ../../mod/import.php:88
-msgid ""
-"Cannot create a duplicate channel identifier on this system. Import failed."
+#: ../../mod/menu.php:82
+msgid "Create a new menu"
msgstr ""
-#: ../../mod/import.php:106
-msgid "Channel clone failed. Import failed."
+#: ../../mod/menu.php:83
+msgid "Delete this menu"
msgstr ""
-#: ../../mod/import.php:116
-msgid "Cloned channel not found. Import failed."
+#: ../../mod/menu.php:84 ../../mod/menu.php:125
+msgid "Edit menu contents"
msgstr ""
-#: ../../mod/import.php:364
-msgid "Import completed."
+#: ../../mod/menu.php:85
+msgid "Edit this menu"
msgstr ""
-#: ../../mod/import.php:377
-msgid "You must be logged in to use this feature."
+#: ../../mod/menu.php:96
+msgid "New Menu"
msgstr ""
-#: ../../mod/import.php:382
-msgid "Import Channel"
+#: ../../mod/menu.php:97 ../../mod/menu.php:126
+msgid "Menu name"
msgstr ""
-#: ../../mod/import.php:383
-msgid ""
-"Use this form to import an existing channel from a different server/hub. You "
-"may retrieve the channel identity from the old server/hub via the network or "
-"provide an export file. Only identity and connections/relationships will be "
-"imported. Importation of content is not yet available."
+#: ../../mod/menu.php:97 ../../mod/menu.php:126
+msgid "Must be unique, only seen by you"
msgstr ""
-#: ../../mod/import.php:384
-msgid "File to Upload"
+#: ../../mod/menu.php:98 ../../mod/menu.php:127
+msgid "Menu title"
msgstr ""
-#: ../../mod/import.php:385
-msgid "Or provide the old server/hub details"
+#: ../../mod/menu.php:98 ../../mod/menu.php:127
+msgid "Menu title as seen by others"
msgstr ""
-#: ../../mod/import.php:386
-msgid "Your old identity address (xyz@example.com)"
+#: ../../mod/menu.php:99 ../../mod/menu.php:128
+msgid "Allow bookmarks"
msgstr ""
-#: ../../mod/import.php:387
-msgid "Your old login email address"
+#: ../../mod/menu.php:99 ../../mod/menu.php:128
+msgid "Menu may be used to store saved bookmarks"
msgstr ""
-#: ../../mod/import.php:388
-msgid "Your old login password"
+#: ../../mod/menu.php:114
+msgid "Menu deleted."
msgstr ""
-#: ../../mod/import.php:389
-msgid ""
-"For either option, please choose whether to make this hub your new primary "
-"address, or whether your old location should continue this role. You will be "
-"able to post from either location, but only one can be marked as the primary "
-"location for files, photos, and media."
+#: ../../mod/menu.php:116
+msgid "Menu could not be deleted."
msgstr ""
-#: ../../mod/import.php:390
-msgid "Make this hub my primary location"
+#: ../../mod/menu.php:122
+msgid "Edit Menu"
+msgstr ""
+
+#: ../../mod/menu.php:124
+msgid "Add or remove entries to this menu"
msgstr ""
#: ../../mod/invite.php:25
@@ -6982,98 +7599,89 @@ msgstr[1] ""
msgid "You have no more invitations available"
msgstr ""
-#: ../../mod/invite.php:141
+#: ../../mod/invite.php:129
msgid "Send invitations"
msgstr ""
-#: ../../mod/invite.php:142
+#: ../../mod/invite.php:130
msgid "Enter email addresses, one per line:"
msgstr ""
-#: ../../mod/invite.php:143 ../../mod/mail.php:212 ../../mod/mail.php:325
-msgid "Your message:"
+#: ../../mod/invite.php:132
+msgid "Please join my community on RedMatrix."
msgstr ""
-#: ../../mod/invite.php:144
-msgid ""
-"You are cordially invited to join me and some other close friends on the Red "
-"Matrix - a revolutionary new decentralised communication and information "
-"tool."
+#: ../../mod/invite.php:134
+msgid "You will need to supply this invitation code: "
msgstr ""
-#: ../../mod/invite.php:146
-msgid "You will need to supply this invitation code: $invite_code"
+#: ../../mod/invite.php:135
+msgid "1. Register at any RedMatrix location (they are all inter-connected)"
msgstr ""
-#: ../../mod/invite.php:147
-msgid "Please visit my channel at"
+#: ../../mod/invite.php:137
+msgid "2. Enter my RedMatrix network address into the site searchbar."
msgstr ""
-#: ../../mod/invite.php:151
-msgid ""
-"Once you have registered (on ANY Red Matrix site - they are all inter-"
-"connected), please connect with my Red Matrix channel address:"
+#: ../../mod/invite.php:138
+msgid "or visit "
msgstr ""
-#: ../../mod/invite.php:153
-msgid "Click the [Register] link on the following page to join."
+#: ../../mod/invite.php:140
+msgid "3. Click [Connect]"
msgstr ""
-#: ../../mod/invite.php:155
-msgid ""
-"For more information about the Red Matrix Project and why it has the "
-"potential to change the internet as we know it, please visit http://getzot."
-"com"
+#: ../../mod/network.php:84
+msgid "No such group"
msgstr ""
-#: ../../mod/item.php:147
-msgid "Unable to locate original post."
+#: ../../mod/network.php:122
+msgid "Search Results For:"
msgstr ""
-#: ../../mod/item.php:372
-msgid "Empty post discarded."
+#: ../../mod/network.php:176
+msgid "Collection is empty"
msgstr ""
-#: ../../mod/item.php:414
-msgid "Executable content type not permitted to this channel."
+#: ../../mod/network.php:184
+msgid "Collection: "
msgstr ""
-#: ../../mod/item.php:842
-msgid "System error. Post not saved."
+#: ../../mod/network.php:197
+msgid "Connection: "
msgstr ""
-#: ../../mod/item.php:1285
-#, php-format
-msgid "You have reached your limit of %1$.0f top level posts."
+#: ../../mod/network.php:200
+msgid "Invalid connection."
msgstr ""
-#: ../../mod/item.php:1291
-#, php-format
-msgid "You have reached your limit of %1$.0f webpages."
+#: ../../mod/notifications.php:26
+msgid "Invalid request identifier."
msgstr ""
-#: ../../mod/update_channel.php:43 ../../mod/update_display.php:25
-#: ../../mod/update_network.php:23 ../../mod/update_search.php:46
-msgid "[Embedded content - reload page to view]"
+#: ../../mod/notifications.php:35
+msgid "Discard"
msgstr ""
-#: ../../mod/layouts.php:62
-msgid "Help with this feature"
+#: ../../mod/notifications.php:94 ../../mod/notify.php:53
+msgid "No more system notifications."
msgstr ""
-#: ../../mod/layouts.php:84
-msgid "Layout Name"
+#: ../../mod/notifications.php:98 ../../mod/notify.php:57
+msgid "System Notifications"
msgstr ""
-#: ../../mod/like.php:97
-msgid "thing"
+#: ../../mod/update_channel.php:43 ../../mod/update_display.php:25
+#: ../../mod/update_network.php:23 ../../mod/update_search.php:46
+#: ../../mod/update_home.php:21
+msgid "[Embedded content - reload page to view]"
msgstr ""
-#: ../../mod/lockview.php:30 ../../mod/lockview.php:36
+#: ../../mod/lockview.php:31
msgid "Remote privacy information not available."
msgstr ""
-#: ../../mod/lockview.php:45
+#: ../../mod/lockview.php:52
msgid "Visible to:"
msgstr ""
@@ -7081,88 +7689,15 @@ msgstr ""
msgid "No connections."
msgstr ""
-#: ../../mod/viewconnections.php:70
+#: ../../mod/viewconnections.php:71
#, php-format
msgid "Visit %s's profile [%s]"
msgstr ""
-#: ../../mod/viewconnections.php:85
+#: ../../mod/viewconnections.php:86
msgid "View Connnections"
msgstr ""
-#: ../../mod/lostpass.php:15
-msgid "No valid account found."
-msgstr ""
-
-#: ../../mod/lostpass.php:29
-msgid "Password reset request issued. Check your email."
-msgstr ""
-
-#: ../../mod/lostpass.php:35 ../../mod/lostpass.php:102
-#, php-format
-msgid "Site Member (%s)"
-msgstr ""
-
-#: ../../mod/lostpass.php:40
-#, php-format
-msgid "Password reset requested at %s"
-msgstr ""
-
-#: ../../mod/lostpass.php:63
-msgid ""
-"Request could not be verified. (You may have previously submitted it.) "
-"Password reset failed."
-msgstr ""
-
-#: ../../mod/lostpass.php:85 ../../boot.php:1479
-msgid "Password Reset"
-msgstr ""
-
-#: ../../mod/lostpass.php:86
-msgid "Your password has been reset as requested."
-msgstr ""
-
-#: ../../mod/lostpass.php:87
-msgid "Your new password is"
-msgstr ""
-
-#: ../../mod/lostpass.php:88
-msgid "Save or copy your new password - and then"
-msgstr ""
-
-#: ../../mod/lostpass.php:89
-msgid "click here to login"
-msgstr ""
-
-#: ../../mod/lostpass.php:90
-msgid ""
-"Your password may be changed from the <em>Settings</em> page after "
-"successful login."
-msgstr ""
-
-#: ../../mod/lostpass.php:107
-#, php-format
-msgid "Your password has changed at %s"
-msgstr ""
-
-#: ../../mod/lostpass.php:122
-msgid "Forgot your Password?"
-msgstr ""
-
-#: ../../mod/lostpass.php:123
-msgid ""
-"Enter your email address and submit to have your password reset. Then check "
-"your email for further instructions."
-msgstr ""
-
-#: ../../mod/lostpass.php:124
-msgid "Email Address"
-msgstr ""
-
-#: ../../mod/lostpass.php:125
-msgid "Reset"
-msgstr ""
-
#: ../../mod/magic.php:70
msgid "Hub not found."
msgstr ""
@@ -7175,288 +7710,297 @@ msgstr ""
msgid "Average Rating"
msgstr ""
-#: ../../mod/mail.php:33
-msgid "Unable to lookup recipient."
+#: ../../mod/openid.php:26
+msgid "OpenID protocol error. No ID returned."
msgstr ""
-#: ../../mod/mail.php:41
-msgid "Unable to communicate with requested channel."
+#: ../../mod/openid.php:72 ../../mod/openid.php:180 ../../mod/post.php:261
+#, php-format
+msgid "Welcome %s. Remote authentication successful."
msgstr ""
-#: ../../mod/mail.php:48
-msgid "Cannot verify requested channel."
+#: ../../mod/wall_upload.php:35
+msgid "Wall Photos"
msgstr ""
-#: ../../mod/mail.php:74
-msgid "Selected channel has private message restrictions. Send failed."
+#: ../../mod/match.php:16
+msgid "Profile Match"
msgstr ""
-#: ../../mod/mail.php:121 ../../mod/message.php:31
-msgid "Messages"
+#: ../../mod/match.php:24
+msgid "No keywords to match. Please add keywords to your default profile."
msgstr ""
-#: ../../mod/mail.php:132
-msgid "Message deleted."
+#: ../../mod/match.php:61
+msgid "is interested in:"
msgstr ""
-#: ../../mod/mail.php:149
-msgid "Message recalled."
+#: ../../mod/match.php:69
+msgid "No matches"
msgstr ""
-#: ../../mod/mail.php:202
-msgid "Send Private Message"
+#: ../../mod/message.php:41
+msgid "Conversation removed."
msgstr ""
-#: ../../mod/mail.php:203 ../../mod/mail.php:320
-msgid "To:"
+#: ../../mod/message.php:56
+msgid "No messages."
msgstr ""
-#: ../../mod/mail.php:208 ../../mod/mail.php:322
-msgid "Subject:"
+#: ../../mod/message.php:74
+msgid "D, d M Y - g:i A"
msgstr ""
-#: ../../mod/mail.php:246
-msgid "Message not found."
+#: ../../mod/new_channel.php:109
+msgid "Add a Channel"
msgstr ""
-#: ../../mod/mail.php:289 ../../mod/message.php:72
-msgid "Delete message"
+#: ../../mod/new_channel.php:110
+msgid ""
+"A channel is your own collection of related web pages. A channel can be used "
+"to hold social network profiles, blogs, conversation groups and forums, "
+"celebrity pages, and much more. You may create as many channels as your "
+"service provider allows."
msgstr ""
-#: ../../mod/mail.php:290
-msgid "Recall message"
+#: ../../mod/new_channel.php:113
+msgid ""
+"Examples: \"Bob Jameson\", \"Lisa and her Horses\", \"Soccer\", \"Aviation "
+"Group\" "
msgstr ""
-#: ../../mod/mail.php:292
-msgid "Message has been recalled."
+#: ../../mod/new_channel.php:114
+msgid "Choose a short nickname"
msgstr ""
-#: ../../mod/mail.php:309
-msgid "Private Conversation"
+#: ../../mod/new_channel.php:115
+msgid ""
+"Your nickname will be used to create an easily remembered channel address "
+"(like an email address) which you can share with others."
msgstr ""
-#: ../../mod/mail.php:313
-msgid "Delete conversation"
+#: ../../mod/new_channel.php:116
+msgid ""
+"Or <a href=\"import\">import an existing channel</a> from another location"
msgstr ""
-#: ../../mod/mail.php:315
+#: ../../mod/new_channel.php:118
msgid ""
-"No secure communications available. You <strong>may</strong> be able to "
-"respond from the sender's profile page."
+"Please choose a channel type (such as social networking or community forum) "
+"and privacy requirements so we can select the best permissions for you"
msgstr ""
-#: ../../mod/mail.php:319
-msgid "Send Reply"
+#: ../../mod/new_channel.php:119
+msgid "Channel Type"
msgstr ""
-#: ../../mod/manage.php:64
-#, php-format
-msgid "You have created %1$.0f of %2$.0f allowed channels."
+#: ../../mod/new_channel.php:119
+msgid "Read more about roles"
msgstr ""
-#: ../../mod/manage.php:72
-msgid "Create a new channel"
+#: ../../mod/xchan.php:6
+msgid "Xchan Lookup"
msgstr ""
-#: ../../mod/manage.php:77
-msgid "Channel Manager"
+#: ../../mod/xchan.php:9
+msgid "Lookup xchan beginning with (or webbie): "
msgstr ""
-#: ../../mod/manage.php:78
-msgid "Current Channel"
+#: ../../mod/zfinger.php:23
+msgid "invalid target signature"
msgstr ""
-#: ../../mod/manage.php:80
-msgid "Attach to one of your channels by selecting it."
+#: ../../mod/photos.php:77
+msgid "Page owner information could not be retrieved."
msgstr ""
-#: ../../mod/manage.php:81
-msgid "Default Channel"
+#: ../../mod/photos.php:97
+msgid "Album not found."
msgstr ""
-#: ../../mod/manage.php:82
-msgid "Make Default"
+#: ../../mod/photos.php:119 ../../mod/photos.php:672
+msgid "Delete Album"
msgstr ""
-#: ../../mod/wall_upload.php:34
-msgid "Wall Photos"
+#: ../../mod/photos.php:159 ../../mod/photos.php:955
+msgid "Delete Photo"
msgstr ""
-#: ../../mod/match.php:16
-msgid "Profile Match"
+#: ../../mod/photos.php:469
+msgid "No photos selected"
msgstr ""
-#: ../../mod/match.php:24
-msgid "No keywords to match. Please add keywords to your default profile."
+#: ../../mod/photos.php:513
+msgid "Access to this item is restricted."
msgstr ""
-#: ../../mod/match.php:61
-msgid "is interested in:"
+#: ../../mod/photos.php:552
+#, php-format
+msgid "%1$.2f MB of %2$.2f MB photo storage used."
msgstr ""
-#: ../../mod/match.php:69
-msgid "No matches"
+#: ../../mod/photos.php:555
+#, php-format
+msgid "%1$.2f MB photo storage used."
msgstr ""
-#: ../../mod/menu.php:21
-msgid "Menu updated."
+#: ../../mod/photos.php:579
+msgid "Upload Photos"
msgstr ""
-#: ../../mod/menu.php:25
-msgid "Unable to update menu."
+#: ../../mod/photos.php:583 ../../mod/photos.php:665 ../../mod/photos.php:940
+msgid "Enter a new album name"
msgstr ""
-#: ../../mod/menu.php:30
-msgid "Menu created."
+#: ../../mod/photos.php:584 ../../mod/photos.php:666 ../../mod/photos.php:941
+msgid "or select an existing one (doubleclick)"
msgstr ""
-#: ../../mod/menu.php:34
-msgid "Unable to create menu."
+#: ../../mod/photos.php:585
+msgid "Do not show a status post for this upload"
msgstr ""
-#: ../../mod/menu.php:57
-msgid "Manage Menus"
+#: ../../mod/photos.php:613
+msgid "Album name could not be decoded"
msgstr ""
-#: ../../mod/menu.php:60
-msgid "Drop"
+#: ../../mod/photos.php:654 ../../mod/photos.php:1164
+#: ../../mod/photos.php:1180
+msgid "Contact Photos"
msgstr ""
-#: ../../mod/menu.php:62
-msgid "Create a new menu"
+#: ../../mod/photos.php:678
+msgid "Show Newest First"
msgstr ""
-#: ../../mod/menu.php:63
-msgid "Delete this menu"
+#: ../../mod/photos.php:680
+msgid "Show Oldest First"
msgstr ""
-#: ../../mod/menu.php:64 ../../mod/menu.php:109
-msgid "Edit menu contents"
+#: ../../mod/photos.php:704 ../../mod/photos.php:1212
+msgid "View Photo"
msgstr ""
-#: ../../mod/menu.php:65
-msgid "Edit this menu"
+#: ../../mod/photos.php:733
+msgid "Edit Album"
msgstr ""
-#: ../../mod/menu.php:80
-msgid "New Menu"
+#: ../../mod/photos.php:778
+msgid "Permission denied. Access to this item may be restricted."
msgstr ""
-#: ../../mod/menu.php:81 ../../mod/menu.php:110
-msgid "Menu name"
+#: ../../mod/photos.php:780
+msgid "Photo not available"
msgstr ""
-#: ../../mod/menu.php:81 ../../mod/menu.php:110
-msgid "Must be unique, only seen by you"
+#: ../../mod/photos.php:838
+msgid "Use as profile photo"
msgstr ""
-#: ../../mod/menu.php:82 ../../mod/menu.php:111
-msgid "Menu title"
+#: ../../mod/photos.php:845
+msgid "Private Photo"
msgstr ""
-#: ../../mod/menu.php:82 ../../mod/menu.php:111
-msgid "Menu title as seen by others"
+#: ../../mod/photos.php:860
+msgid "View Full Size"
msgstr ""
-#: ../../mod/menu.php:83 ../../mod/menu.php:112
-msgid "Allow bookmarks"
+#: ../../mod/photos.php:934
+msgid "Edit photo"
msgstr ""
-#: ../../mod/menu.php:83 ../../mod/menu.php:112
-msgid "Menu may be used to store saved bookmarks"
+#: ../../mod/photos.php:936
+msgid "Rotate CW (right)"
msgstr ""
-#: ../../mod/menu.php:98
-msgid "Menu deleted."
+#: ../../mod/photos.php:937
+msgid "Rotate CCW (left)"
msgstr ""
-#: ../../mod/menu.php:100
-msgid "Menu could not be deleted."
+#: ../../mod/photos.php:944
+msgid "Caption"
msgstr ""
-#: ../../mod/menu.php:106
-msgid "Edit Menu"
+#: ../../mod/photos.php:946
+msgid "Add a Tag"
msgstr ""
-#: ../../mod/menu.php:108
-msgid "Add or remove entries to this menu"
+#: ../../mod/photos.php:950
+msgid "Example: @bob, @Barbara_Jensen, @jim@example.com"
msgstr ""
-#: ../../mod/message.php:41
-msgid "Conversation removed."
+#: ../../mod/photos.php:953
+msgid "Flag as adult in album view"
msgstr ""
-#: ../../mod/message.php:56
-msgid "No messages."
+#: ../../mod/photos.php:1130
+msgid "In This Photo:"
msgstr ""
-#: ../../mod/message.php:74
-msgid "D, d M Y - g:i A"
+#: ../../mod/photos.php:1218
+msgid "View Album"
msgstr ""
-#: ../../mod/new_channel.php:107
-msgid "Add a Channel"
+#: ../../mod/photos.php:1241
+msgid "Recent Photos"
msgstr ""
-#: ../../mod/new_channel.php:108
-msgid ""
-"A channel is your own collection of related web pages. A channel can be used "
-"to hold social network profiles, blogs, conversation groups and forums, "
-"celebrity pages, and much more. You may create as many channels as your "
-"service provider allows."
+#: ../../mod/oexchange.php:23
+msgid "Unable to find your hub."
msgstr ""
-#: ../../mod/new_channel.php:111
-msgid ""
-"Examples: \"Bob Jameson\", \"Lisa and her Horses\", \"Soccer\", \"Aviation "
-"Group\" "
+#: ../../mod/oexchange.php:37
+msgid "Post successful."
msgstr ""
-#: ../../mod/new_channel.php:112
-msgid "Choose a short nickname"
+#: ../../mod/directory.php:201
+msgid "Gender: "
msgstr ""
-#: ../../mod/new_channel.php:113
-msgid ""
-"Your nickname will be used to create an easily remembered channel address "
-"(like an email address) which you can share with others."
+#: ../../mod/directory.php:203
+msgid "Status: "
msgstr ""
-#: ../../mod/new_channel.php:114
-msgid ""
-"Or <a href=\"import\">import an existing channel</a> from another location"
+#: ../../mod/directory.php:205
+msgid "Homepage: "
msgstr ""
-#: ../../mod/notifications.php:26
-msgid "Invalid request identifier."
+#: ../../mod/directory.php:208
+msgid "Hometown: "
msgstr ""
-#: ../../mod/notifications.php:35
-msgid "Discard"
+#: ../../mod/directory.php:210
+msgid "About: "
msgstr ""
-#: ../../mod/notifications.php:94 ../../mod/notify.php:53
-msgid "No more system notifications."
+#: ../../mod/directory.php:265
+msgid "Public Forum:"
msgstr ""
-#: ../../mod/notifications.php:98 ../../mod/notify.php:57
-msgid "System Notifications"
+#: ../../mod/directory.php:268
+msgid "Keywords: "
msgstr ""
-#: ../../mod/oexchange.php:23
-msgid "Unable to find your hub."
+#: ../../mod/directory.php:318
+msgid "Finding:"
msgstr ""
-#: ../../mod/oexchange.php:37
-msgid "Post successful."
+#: ../../mod/directory.php:323
+msgid "next page"
msgstr ""
-#: ../../mod/zfinger.php:23
-msgid "invalid target signature"
+#: ../../mod/directory.php:323
+msgid "previous page"
msgstr ""
-#: ../../mod/openid.php:26
-msgid "OpenID protocol error. No ID returned."
+#: ../../mod/directory.php:340
+msgid "No entries (some entries may be hidden)."
+msgstr ""
+
+#: ../../mod/post.php:229
+msgid ""
+"Remote authentication blocked. You are logged into this site locally. Please "
+"logout and retry."
msgstr ""
#: ../../mod/appman.php:28 ../../mod/appman.php:44
@@ -7507,6 +8051,46 @@ msgstr ""
msgid "Location (URL) to purchase app"
msgstr ""
+#: ../../mod/poll.php:64
+msgid "Poll"
+msgstr ""
+
+#: ../../mod/poll.php:69
+msgid "View Results"
+msgstr ""
+
+#: ../../mod/removeaccount.php:30
+msgid ""
+"Account removals are not allowed within 48 hours of changing the account "
+"password."
+msgstr ""
+
+#: ../../mod/removeaccount.php:57
+msgid "Remove This Account"
+msgstr ""
+
+#: ../../mod/removeaccount.php:58
+msgid ""
+"This will completely remove this account including all its channels from the "
+"network. Once this has been done it is not recoverable."
+msgstr ""
+
+#: ../../mod/removeaccount.php:60
+msgid ""
+"Remove this account, all its channels and all its channel clones from the "
+"network"
+msgstr ""
+
+#: ../../mod/removeaccount.php:60
+msgid ""
+"By default only the instances of the channels located on this hub will be "
+"removed from the network"
+msgstr ""
+
+#: ../../mod/service_limits.php:19
+msgid "No service class restrictions found."
+msgstr ""
+
#: ../../view/theme/apw/php/config.php:202
#: ../../view/theme/apw/php/config.php:236
msgid "Schema Default"
@@ -7521,8 +8105,6 @@ msgid "Monospace"
msgstr ""
#: ../../view/theme/apw/php/config.php:259
-#: ../../view/theme/blogga/php/config.php:69
-#: ../../view/theme/blogga/view/theme/blog/config.php:69
#: ../../view/theme/redbasic/php/config.php:102
msgid "Theme settings"
msgstr ""
@@ -7554,7 +8136,7 @@ msgid "Set small shadow size, default 5px 5px 5px"
msgstr ""
#: ../../view/theme/apw/php/config.php:266
-msgid "Set shadow colour, default #000"
+msgid "Set shadow color, default #000"
msgstr ""
#: ../../view/theme/apw/php/config.php:267
@@ -7574,7 +8156,7 @@ msgid "Set background attachment"
msgstr ""
#: ../../view/theme/apw/php/config.php:271
-msgid "Set background colour"
+msgid "Set background color"
msgstr ""
#: ../../view/theme/apw/php/config.php:272
@@ -7582,15 +8164,15 @@ msgid "Set section background image"
msgstr ""
#: ../../view/theme/apw/php/config.php:273
-msgid "Set section background colour"
+msgid "Set section background color"
msgstr ""
#: ../../view/theme/apw/php/config.php:274
-msgid "Set colour of items - use hex"
+msgid "Set color of items - use hex"
msgstr ""
#: ../../view/theme/apw/php/config.php:275
-msgid "Set colour of links - use hex"
+msgid "Set color of links - use hex"
msgstr ""
#: ../../view/theme/apw/php/config.php:276
@@ -7606,7 +8188,7 @@ msgid "Set the generic content wrapper width. Default 48%"
msgstr ""
#: ../../view/theme/apw/php/config.php:279
-msgid "Set colour of fonts - use hex"
+msgid "Set color of fonts - use hex"
msgstr ""
#: ../../view/theme/apw/php/config.php:280
@@ -7653,21 +8235,6 @@ msgstr ""
msgid "Right offset of the aside element"
msgstr ""
-#: ../../view/theme/blogga/php/config.php:47
-#: ../../view/theme/blogga/view/theme/blog/config.php:47
-msgid "None"
-msgstr ""
-
-#: ../../view/theme/blogga/php/config.php:70
-#: ../../view/theme/blogga/view/theme/blog/config.php:70
-msgid "Header image"
-msgstr ""
-
-#: ../../view/theme/blogga/php/config.php:71
-#: ../../view/theme/blogga/view/theme/blog/config.php:71
-msgid "Header image only on profile pages"
-msgstr ""
-
#: ../../view/theme/redbasic/php/config.php:84
msgid "Light (Red Matrix default)"
msgstr ""
@@ -7677,47 +8244,47 @@ msgid "Narrow navbar"
msgstr ""
#: ../../view/theme/redbasic/php/config.php:105
-msgid "Navigation bar background colour"
+msgid "Navigation bar background color"
msgstr ""
#: ../../view/theme/redbasic/php/config.php:106
-msgid "Navigation bar gradient top colour"
+msgid "Navigation bar gradient top color"
msgstr ""
#: ../../view/theme/redbasic/php/config.php:107
-msgid "Navigation bar gradient bottom colour"
+msgid "Navigation bar gradient bottom color"
msgstr ""
#: ../../view/theme/redbasic/php/config.php:108
-msgid "Navigation active button gradient top colour"
+msgid "Navigation active button gradient top color"
msgstr ""
#: ../../view/theme/redbasic/php/config.php:109
-msgid "Navigation active button gradient bottom colour"
+msgid "Navigation active button gradient bottom color"
msgstr ""
#: ../../view/theme/redbasic/php/config.php:110
-msgid "Navigation bar border colour "
+msgid "Navigation bar border color "
msgstr ""
#: ../../view/theme/redbasic/php/config.php:111
-msgid "Navigation bar icon colour "
+msgid "Navigation bar icon color "
msgstr ""
#: ../../view/theme/redbasic/php/config.php:112
-msgid "Navigation bar active icon colour "
+msgid "Navigation bar active icon color "
msgstr ""
#: ../../view/theme/redbasic/php/config.php:113
-msgid "link colour"
+msgid "link color"
msgstr ""
#: ../../view/theme/redbasic/php/config.php:114
-msgid "Set font-colour for banner"
+msgid "Set font-color for banner"
msgstr ""
#: ../../view/theme/redbasic/php/config.php:115
-msgid "Set the background colour"
+msgid "Set the background color"
msgstr ""
#: ../../view/theme/redbasic/php/config.php:116
@@ -7725,15 +8292,15 @@ msgid "Set the background image"
msgstr ""
#: ../../view/theme/redbasic/php/config.php:117
-msgid "Set the background colour of items"
+msgid "Set the background color of items"
msgstr ""
#: ../../view/theme/redbasic/php/config.php:118
-msgid "Set the background colour of comments"
+msgid "Set the background color of comments"
msgstr ""
#: ../../view/theme/redbasic/php/config.php:119
-msgid "Set the border colour of comments"
+msgid "Set the border color of comments"
msgstr ""
#: ../../view/theme/redbasic/php/config.php:120
@@ -7741,11 +8308,11 @@ msgid "Set the indent for comments"
msgstr ""
#: ../../view/theme/redbasic/php/config.php:121
-msgid "Set the basic colour for item icons"
+msgid "Set the basic color for item icons"
msgstr ""
#: ../../view/theme/redbasic/php/config.php:122
-msgid "Set the hover colour for item icons"
+msgid "Set the hover color for item icons"
msgstr ""
#: ../../view/theme/redbasic/php/config.php:123
@@ -7753,7 +8320,7 @@ msgid "Set font-size for the entire application"
msgstr ""
#: ../../view/theme/redbasic/php/config.php:125
-msgid "Set font-colour for posts and comments"
+msgid "Set font-color for posts and comments"
msgstr ""
#: ../../view/theme/redbasic/php/config.php:126
@@ -7792,41 +8359,41 @@ msgstr ""
msgid "Are you a clean desk or a messy desk person?"
msgstr ""
-#: ../../boot.php:1277
+#: ../../boot.php:1347
#, php-format
msgid "Update %s failed. See error logs."
msgstr ""
-#: ../../boot.php:1280
+#: ../../boot.php:1350
#, php-format
msgid "Update Error at %s"
msgstr ""
-#: ../../boot.php:1444
+#: ../../boot.php:1517
msgid ""
"Create an account to access services and applications within the Red Matrix"
msgstr ""
-#: ../../boot.php:1472
+#: ../../boot.php:1545
msgid "Password"
msgstr ""
-#: ../../boot.php:1473
+#: ../../boot.php:1546
msgid "Remember me"
msgstr ""
-#: ../../boot.php:1478
+#: ../../boot.php:1549
msgid "Forgot your password?"
msgstr ""
-#: ../../boot.php:1543
+#: ../../boot.php:1630
msgid "permission denied"
msgstr ""
-#: ../../boot.php:1544
+#: ../../boot.php:1631
msgid "Got Zot?"
msgstr ""
-#: ../../boot.php:1974
+#: ../../boot.php:2114
msgid "toggle mobile"
msgstr ""
diff --git a/util/po2php.php b/util/po2php.php
index d3e6d190c..cf295d8cb 100644
--- a/util/po2php.php
+++ b/util/po2php.php
@@ -73,7 +73,7 @@ function po2php_run($argv, $argc) {
}
$match=Array();
preg_match("|\[([0-9]*)\] (.*)|", $l, $match);
- $out .= "\t".
+ $out .= "\t".
preg_replace_callback($escape_s_exp,'escape_s',$match[1])
." => "
.preg_replace_callback($escape_s_exp,'escape_s',$match[2]) .",\n";
@@ -83,7 +83,7 @@ function po2php_run($argv, $argc) {
if ($ink) {
- $k .= trim($l,"\"\r\n");
+ $k .= trim_message($l);
$k = preg_replace_callback($escape_s_exp,'escape_s',$k);
//$out .= '$a->strings['.$k.'] = ';
}
@@ -93,7 +93,7 @@ function po2php_run($argv, $argc) {
if ($k!="") $out .= $arr?");\n":";\n";
$arr=False;
$k = str_replace("msgid ","",$l);
- $k = trim($k,"\"\r\n");
+ $k = trim_message($k);
$k = $ctx.$k;
// echo $ctx ? $ctx."\nX\n":"";
$k = preg_replace_callback($escape_s_exp,'escape_s',$k);
@@ -102,14 +102,14 @@ function po2php_run($argv, $argc) {
}
if ($inv && substr($l,0,6)!="msgstr" && substr($l,0,7)!="msgctxt") {
- $v .= trim($l,"\"\r\n");
+ $v .= trim_message($l);
$v = preg_replace_callback($escape_s_exp,'escape_s',$v);
//$out .= '$a->strings['.$k.'] = ';
}
if (substr($l,0,7)=="msgctxt") {
$ctx = str_replace("msgctxt ","",$l);
- $ctx = trim($ctx,"\"\r\n");
+ $ctx = trim_message($ctx);
$ctx = "__ctx:".$ctx."__ ";
$ctx = preg_replace_callback($escape_s_exp,'escape_s',$ctx);
}
@@ -123,6 +123,14 @@ function po2php_run($argv, $argc) {
}
+function trim_message($str) {
+ // Almost same as trim("\"\r\n") except that escaped quotes are preserved
+ $str = trim($str, "\r\n");
+ $str = ltrim($str, "\"");
+ $str = preg_replace('/(?<!\\\)"+$/', '', $str);
+ return $str;
+}
+
if (array_search(__file__,get_included_files())===0){
po2php_run($argv,$argc);
}
diff --git a/util/shredder/shredder b/util/shredder/shredder
index 1586746e0..ac84f0541 100755
--- a/util/shredder/shredder
+++ b/util/shredder/shredder
@@ -203,18 +203,18 @@ main () {
return $FO_rval
;;
-# statuses_update)
-# [[ "$fcli_status" == "" ]] && show_statuses_update 1
-# FO_statuses_update 'json' "$fcli_status" "$fcli_in_reply_to_status_id"
-# JS_Parsed=$(echo "$FO_ret" | tokenize | parse)
-# echo "$JS_Parsed" | js "user" "name" ,
-# echo -n " - "
-# echo "$JS_Parsed" | js "created_at"
-# echo "$JS_Parsed" | js "text"
-# echo ""
-# echo "------------------------------------------------------------------------------"
-# return $FO_rval
-# ;;
+ statuses_update)
+ [[ "$fcli_status" == "" ]] && show_statuses_update 1
+ FO_statuses_update 'json' "$fcli_status" "$fcli_in_reply_to_status_id"
+ JS_Parsed=$(echo "$FO_ret" | tokenize | parse)
+ echo "$JS_Parsed" | js "user" "name" ,
+ echo -n " - "
+ echo "$JS_Parsed" | js "created_at"
+ echo "$JS_Parsed" | js "text"
+ echo ""
+ echo "------------------------------------------------------------------------------"
+ return $FO_rval
+ ;;
*)
diff --git a/util/strings.php b/util/strings.php
index ef15500f1..cfd6538e0 100644
--- a/util/strings.php
+++ b/util/strings.php
@@ -1,63 +1,162 @@
<?php
;
-$a->strings["Channel is blocked on this site."] = "";
-$a->strings["Channel location missing."] = "";
-$a->strings["Response from remote channel was incomplete."] = "";
-$a->strings["Channel was deleted and no longer exists."] = "";
-$a->strings["Channel discovery failed."] = "";
-$a->strings["local account not found."] = "";
-$a->strings["Cannot connect to yourself."] = "";
-$a->strings["Edit File properties"] = "";
+$a->strings["Cannot locate DNS info for database server '%s'"] = "";
+$a->strings["Profile Photos"] = "";
+$a->strings["Embedded content"] = "";
+$a->strings["Embedding disabled"] = "";
+$a->strings["created a new post"] = "";
+$a->strings["commented on %s's post"] = "";
+$a->strings["prev"] = "";
+$a->strings["first"] = "";
+$a->strings["last"] = "";
+$a->strings["next"] = "";
+$a->strings["older"] = "";
+$a->strings["newer"] = "";
+$a->strings["No connections"] = "";
+$a->strings["%d Connection"] = array(
+ 0 => "",
+ 1 => "",
+);
+$a->strings["View Connections"] = "";
+$a->strings["Search"] = "";
+$a->strings["Save"] = "";
+$a->strings["poke"] = "";
+$a->strings["poked"] = "";
+$a->strings["ping"] = "";
+$a->strings["pinged"] = "";
+$a->strings["prod"] = "";
+$a->strings["prodded"] = "";
+$a->strings["slap"] = "";
+$a->strings["slapped"] = "";
+$a->strings["finger"] = "";
+$a->strings["fingered"] = "";
+$a->strings["rebuff"] = "";
+$a->strings["rebuffed"] = "";
+$a->strings["happy"] = "";
+$a->strings["sad"] = "";
+$a->strings["mellow"] = "";
+$a->strings["tired"] = "";
+$a->strings["perky"] = "";
+$a->strings["angry"] = "";
+$a->strings["stupified"] = "";
+$a->strings["puzzled"] = "";
+$a->strings["interested"] = "";
+$a->strings["bitter"] = "";
+$a->strings["cheerful"] = "";
+$a->strings["alive"] = "";
+$a->strings["annoyed"] = "";
+$a->strings["anxious"] = "";
+$a->strings["cranky"] = "";
+$a->strings["disturbed"] = "";
+$a->strings["frustrated"] = "";
+$a->strings["depressed"] = "";
+$a->strings["motivated"] = "";
+$a->strings["relaxed"] = "";
+$a->strings["surprised"] = "";
+$a->strings["Monday"] = "";
+$a->strings["Tuesday"] = "";
+$a->strings["Wednesday"] = "";
+$a->strings["Thursday"] = "";
+$a->strings["Friday"] = "";
+$a->strings["Saturday"] = "";
+$a->strings["Sunday"] = "";
+$a->strings["January"] = "";
+$a->strings["February"] = "";
+$a->strings["March"] = "";
+$a->strings["April"] = "";
+$a->strings["May"] = "";
+$a->strings["June"] = "";
+$a->strings["July"] = "";
+$a->strings["August"] = "";
+$a->strings["September"] = "";
+$a->strings["October"] = "";
+$a->strings["November"] = "";
+$a->strings["December"] = "";
+$a->strings["unknown.???"] = "";
+$a->strings["bytes"] = "";
+$a->strings["remove category"] = "";
+$a->strings["remove from file"] = "";
+$a->strings["Click to open/close"] = "";
+$a->strings["Link to Source"] = "";
+$a->strings["Select a page layout: "] = "";
+$a->strings["default"] = "";
+$a->strings["Page content type: "] = "";
+$a->strings["Select an alternate language"] = "";
+$a->strings["photo"] = "";
+$a->strings["event"] = "";
+$a->strings["status"] = "";
+$a->strings["comment"] = "";
+$a->strings["activity"] = "";
+$a->strings["Design"] = "";
+$a->strings["Blocks"] = "";
+$a->strings["Menus"] = "";
+$a->strings["Layouts"] = "";
+$a->strings["Pages"] = "";
+$a->strings["New Page"] = "";
+$a->strings["Edit"] = "";
+$a->strings["View"] = "";
+$a->strings["Preview"] = "";
+$a->strings["Actions"] = "";
+$a->strings["Page Link"] = "";
+$a->strings["Title"] = "";
+$a->strings["Created"] = "";
+$a->strings["Edited"] = "";
+$a->strings["The form security token was not correct. This probably happened because the form has been opened for too long (>3 hours) before submitting it."] = "";
+$a->strings["Not a valid email address"] = "";
+$a->strings["Your email domain is not among those allowed on this site"] = "";
+$a->strings["Your email address is already registered at this site."] = "";
+$a->strings["An invitation is required."] = "";
+$a->strings["Invitation could not be verified."] = "";
+$a->strings["Please enter the required information."] = "";
+$a->strings["Failed to store account information."] = "";
+$a->strings["Registration confirmation for %s"] = "";
+$a->strings["Registration request at %s"] = "";
+$a->strings["Administrator"] = "";
+$a->strings["your registration password"] = "";
+$a->strings["Registration details for %s"] = "";
+$a->strings["Account approved."] = "";
+$a->strings["Registration revoked for %s"] = "";
+$a->strings["Account verified. Please login."] = "";
+$a->strings["Permission denied."] = "";
+$a->strings["Image exceeds website size limit of %lu bytes"] = "";
+$a->strings["Image file is empty."] = "";
+$a->strings["Unable to process image"] = "";
+$a->strings["Photo storage failed."] = "";
+$a->strings["Photo Albums"] = "";
+$a->strings["Upload New Photos"] = "";
+$a->strings["Visible to everybody"] = "";
+$a->strings["Show"] = "";
+$a->strings["Don't show"] = "";
+$a->strings["Permissions"] = "";
+$a->strings["Close"] = "";
+$a->strings[" and "] = "";
+$a->strings["public profile"] = "";
+$a->strings["%1\$s changed %2\$s to &ldquo;%3\$s&rdquo;"] = "";
+$a->strings["Visit %1\$s's %2\$s"] = "";
+$a->strings["%1\$s has an updated %2\$s, changing %3\$s."] = "";
+$a->strings["Public Timeline"] = "";
+$a->strings["Item was not found."] = "";
+$a->strings["No source file."] = "";
+$a->strings["Cannot locate file to replace"] = "";
+$a->strings["Cannot locate file to revise/update"] = "";
+$a->strings["File exceeds size limit of %d"] = "";
+$a->strings["You have reached your limit of %1$.0f Mbytes attachment storage."] = "";
+$a->strings["File upload failed. Possible system limit or action terminated."] = "";
+$a->strings["Stored file could not be verified. Upload failed."] = "";
+$a->strings["Path not available."] = "";
+$a->strings["Empty pathname"] = "";
+$a->strings["duplicate filename or path"] = "";
+$a->strings["Path not found."] = "";
+$a->strings["mkdir failed."] = "";
+$a->strings["database storage failed."] = "";
+$a->strings["Click here to upgrade."] = "";
+$a->strings["This action exceeds the limits set by your subscription plan."] = "";
+$a->strings["This action is not available under your subscription plan."] = "";
$a->strings["l F d, Y \\@ g:i A"] = "";
$a->strings["Starts:"] = "";
$a->strings["Finishes:"] = "";
$a->strings["Location:"] = "";
-$a->strings["Categories"] = "";
-$a->strings["App Category"] = "";
-$a->strings["System"] = "";
-$a->strings["Personal"] = "";
-$a->strings["Connect"] = "";
-$a->strings["Ignore/Hide"] = "";
-$a->strings["Suggestions"] = "";
-$a->strings["See more..."] = "";
-$a->strings["You have %1$.0f of %2$.0f allowed connections."] = "";
-$a->strings["Add New Connection"] = "";
-$a->strings["Enter the channel address"] = "";
-$a->strings["Example: bob@example.com, http://example.com/barbara"] = "";
-$a->strings["Notes"] = "";
-$a->strings["Save"] = "";
-$a->strings["Remove term"] = "";
-$a->strings["Saved Searches"] = "";
-$a->strings["add"] = "";
-$a->strings["Saved Folders"] = "";
-$a->strings["Everything"] = "";
-$a->strings["Archives"] = "";
-$a->strings["Refresh"] = "";
-$a->strings["Me"] = "";
-$a->strings["Best Friends"] = "";
-$a->strings["Friends"] = "";
-$a->strings["Co-workers"] = "";
-$a->strings["Former Friends"] = "";
-$a->strings["Acquaintances"] = "";
-$a->strings["Everybody"] = "";
-$a->strings["Account settings"] = "";
-$a->strings["Channel settings"] = "";
-$a->strings["Additional features"] = "";
-$a->strings["Feature settings"] = "";
-$a->strings["Display settings"] = "";
-$a->strings["Connected apps"] = "";
-$a->strings["Export channel"] = "";
-$a->strings["Automatic Permissions (Advanced)"] = "";
-$a->strings["Premium Channel Settings"] = "";
-$a->strings["Channel Sources"] = "";
-$a->strings["Settings"] = "";
-$a->strings["Check Mail"] = "";
-$a->strings["New Message"] = "";
-$a->strings["Chat Rooms"] = "";
-$a->strings["Bookmarked Chatrooms"] = "";
-$a->strings["Suggested Chatrooms"] = "";
-$a->strings["Public Timeline"] = "";
$a->strings["Logout"] = "";
$a->strings["End this session"] = "";
$a->strings["Home"] = "";
@@ -66,14 +165,14 @@ $a->strings["View Profile"] = "";
$a->strings["Your profile page"] = "";
$a->strings["Edit Profiles"] = "";
$a->strings["Manage/Edit profiles"] = "";
+$a->strings["Edit Profile"] = "";
+$a->strings["Edit your profile"] = "";
$a->strings["Photos"] = "";
$a->strings["Your photos"] = "";
$a->strings["Files"] = "";
$a->strings["Your files"] = "";
$a->strings["Chat"] = "";
$a->strings["Your chatrooms"] = "";
-$a->strings["Events"] = "";
-$a->strings["Your events"] = "";
$a->strings["Bookmarks"] = "";
$a->strings["Your bookmarks"] = "";
$a->strings["Webpages"] = "";
@@ -88,8 +187,7 @@ $a->strings["Create an account"] = "";
$a->strings["Help"] = "";
$a->strings["Help and documentation"] = "";
$a->strings["Apps"] = "";
-$a->strings["Addon applications, utilities, games"] = "";
-$a->strings["Search"] = "";
+$a->strings["Applications, utilities, links, games"] = "";
$a->strings["Search site content"] = "";
$a->strings["Directory"] = "";
$a->strings["Channel Locator"] = "";
@@ -110,46 +208,171 @@ $a->strings["See all private messages"] = "";
$a->strings["Mark all private messages seen"] = "";
$a->strings["Inbox"] = "";
$a->strings["Outbox"] = "";
+$a->strings["New Message"] = "";
+$a->strings["Events"] = "";
$a->strings["Event Calendar"] = "";
$a->strings["See all events"] = "";
$a->strings["Mark all events seen"] = "";
$a->strings["Channel Select"] = "";
$a->strings["Manage Your Channels"] = "";
+$a->strings["Settings"] = "";
$a->strings["Account/Channel Settings"] = "";
-$a->strings["Manage/Edit Friends and Connections"] = "";
$a->strings["Admin"] = "";
$a->strings["Site Setup and Configuration"] = "";
$a->strings["Nothing new here"] = "";
$a->strings["Please wait..."] = "";
-$a->strings["Embedded content"] = "";
-$a->strings["Embedding disabled"] = "";
-$a->strings["Image/photo"] = "";
-$a->strings["Encrypted content"] = "";
-$a->strings["QR code"] = "";
-$a->strings["%1\$s wrote the following %2\$s %3\$s"] = "";
-$a->strings["post"] = "";
-$a->strings["$1 wrote:"] = "";
-$a->strings["A deleted group with this name was revived. Existing item permissions <strong>may</strong> apply to this group and any future members. If this is not what you intended, please create another group with a different name."] = "";
-$a->strings["Default privacy group for new contacts"] = "";
-$a->strings["All Channels"] = "";
-$a->strings["edit"] = "";
-$a->strings["Collections"] = "";
-$a->strings["Edit collection"] = "";
-$a->strings["Create a new collection"] = "";
-$a->strings["Channels not in any collection"] = "";
-$a->strings["photo"] = "";
-$a->strings["event"] = "";
+$a->strings["%1\$s's bookmarks"] = "";
+$a->strings["Tags"] = "";
+$a->strings["Keywords"] = "";
+$a->strings["have"] = "";
+$a->strings["has"] = "";
+$a->strings["want"] = "";
+$a->strings["wants"] = "";
+$a->strings["like"] = "";
+$a->strings["likes"] = "";
+$a->strings["dislike"] = "";
+$a->strings["dislikes"] = "";
+$a->strings["__ctx:noun__ Like"] = array(
+ 0 => "",
+ 1 => "",
+);
+$a->strings["Default"] = "";
+$a->strings["Frequently"] = "";
+$a->strings["Hourly"] = "";
+$a->strings["Twice daily"] = "";
+$a->strings["Daily"] = "";
+$a->strings["Weekly"] = "";
+$a->strings["Monthly"] = "";
+$a->strings["Friendica"] = "";
+$a->strings["OStatus"] = "";
+$a->strings["RSS/Atom"] = "";
+$a->strings["Email"] = "";
+$a->strings["Diaspora"] = "";
+$a->strings["Facebook"] = "";
+$a->strings["Zot!"] = "";
+$a->strings["LinkedIn"] = "";
+$a->strings["XMPP/IM"] = "";
+$a->strings["MySpace"] = "";
+$a->strings["%d invitation available"] = array(
+ 0 => "",
+ 1 => "",
+);
+$a->strings["Advanced"] = "";
+$a->strings["Find Channels"] = "";
+$a->strings["Enter name or interest"] = "";
+$a->strings["Connect/Follow"] = "";
+$a->strings["Examples: Robert Morgenstein, Fishing"] = "";
+$a->strings["Find"] = "";
+$a->strings["Channel Suggestions"] = "";
+$a->strings["Random Profile"] = "";
+$a->strings["Invite Friends"] = "";
+$a->strings["Exammple: name=fred and country=iceland"] = "";
+$a->strings["Advanced Find"] = "";
+$a->strings["Saved Folders"] = "";
+$a->strings["Everything"] = "";
+$a->strings["Categories"] = "";
+$a->strings["%d connection in common"] = array(
+ 0 => "",
+ 1 => "",
+);
+$a->strings["show more"] = "";
+$a->strings["This event has been added to your calendar."] = "";
+$a->strings["Invalid data packet"] = "";
+$a->strings["Unable to verify channel signature"] = "";
+$a->strings["Unable to verify site signature for %s"] = "";
+$a->strings["Miscellaneous"] = "";
+$a->strings["year"] = "";
+$a->strings["month"] = "";
+$a->strings["day"] = "";
+$a->strings["never"] = "";
+$a->strings["less than a second ago"] = "";
+$a->strings["years"] = "";
+$a->strings["months"] = "";
+$a->strings["week"] = "";
+$a->strings["weeks"] = "";
+$a->strings["days"] = "";
+$a->strings["hour"] = "";
+$a->strings["hours"] = "";
+$a->strings["minute"] = "";
+$a->strings["minutes"] = "";
+$a->strings["second"] = "";
+$a->strings["seconds"] = "";
+$a->strings["%1\$d %2\$s ago"] = "";
+$a->strings["%1\$s's birthday"] = "";
+$a->strings["Happy Birthday %1\$s"] = "";
+$a->strings["Sort Options"] = "";
+$a->strings["Alphabetic"] = "";
+$a->strings["Reverse Alphabetic"] = "";
+$a->strings["Newest to Oldest"] = "";
+$a->strings["Enable Safe Search"] = "";
+$a->strings["Disable Safe Search"] = "";
+$a->strings["Safe Mode"] = "";
+$a->strings["Red Matrix Notification"] = "";
+$a->strings["redmatrix"] = "";
+$a->strings["Thank You,"] = "";
+$a->strings["%s Administrator"] = "";
+$a->strings["%s <!item_type!>"] = "";
+$a->strings["[Red:Notify] New mail received at %s"] = "";
+$a->strings["%1\$s, %2\$s sent you a new private message at %3\$s."] = "";
+$a->strings["%1\$s sent you %2\$s."] = "";
+$a->strings["a private message"] = "";
+$a->strings["Please visit %s to view and/or reply to your private messages."] = "";
+$a->strings["%1\$s, %2\$s commented on [zrl=%3\$s]a %4\$s[/zrl]"] = "";
+$a->strings["%1\$s, %2\$s commented on [zrl=%3\$s]%4\$s's %5\$s[/zrl]"] = "";
+$a->strings["%1\$s, %2\$s commented on [zrl=%3\$s]your %4\$s[/zrl]"] = "";
+$a->strings["[Red:Notify] Comment to conversation #%1\$d by %2\$s"] = "";
+$a->strings["%1\$s, %2\$s commented on an item/conversation you have been following."] = "";
+$a->strings["Please visit %s to view and/or reply to the conversation."] = "";
+$a->strings["[Red:Notify] %s posted to your profile wall"] = "";
+$a->strings["%1\$s, %2\$s posted to your profile wall at %3\$s"] = "";
+$a->strings["%1\$s, %2\$s posted to [zrl=%3\$s]your wall[/zrl]"] = "";
+$a->strings["[Red:Notify] %s tagged you"] = "";
+$a->strings["%1\$s, %2\$s tagged you at %3\$s"] = "";
+$a->strings["%1\$s, %2\$s [zrl=%3\$s]tagged you[/zrl]."] = "";
+$a->strings["[Red:Notify] %1\$s poked you"] = "";
+$a->strings["%1\$s, %2\$s poked you at %3\$s"] = "";
+$a->strings["%1\$s, %2\$s [zrl=%2\$s]poked you[/zrl]."] = "";
+$a->strings["[Red:Notify] %s tagged your post"] = "";
+$a->strings["%1\$s, %2\$s tagged your post at %3\$s"] = "";
+$a->strings["%1\$s, %2\$s tagged [zrl=%3\$s]your post[/zrl]"] = "";
+$a->strings["[Red:Notify] Introduction received"] = "";
+$a->strings["%1\$s, you've received an new connection request from '%2\$s' at %3\$s"] = "";
+$a->strings["%1\$s, you've received [zrl=%2\$s]a new connection request[/zrl] from %3\$s."] = "";
+$a->strings["You may visit their profile at %s"] = "";
+$a->strings["Please visit %s to approve or reject the connection request."] = "";
+$a->strings["[Red:Notify] Friend suggestion received"] = "";
+$a->strings["%1\$s, you've received a friend suggestion from '%2\$s' at %3\$s"] = "";
+$a->strings["%1\$s, you've received [zrl=%2\$s]a friend suggestion[/zrl] for %3\$s from %4\$s."] = "";
+$a->strings["Name:"] = "";
+$a->strings["Photo:"] = "";
+$a->strings["Please visit %s to approve or reject the suggestion."] = "";
+$a->strings["parent"] = "";
+$a->strings["Collection"] = "";
+$a->strings["Principal"] = "";
+$a->strings["Addressbook"] = "";
+$a->strings["Calendar"] = "";
+$a->strings["Schedule Inbox"] = "";
+$a->strings["Schedule Outbox"] = "";
+$a->strings["Unknown"] = "";
+$a->strings["%1\$s used"] = "";
+$a->strings["%1\$s used of %2\$s (%3\$s&#37;)"] = "";
+$a->strings["Name"] = "";
+$a->strings["Type"] = "";
+$a->strings["Size"] = "";
+$a->strings["Last Modified"] = "";
+$a->strings["Delete"] = "";
+$a->strings["Total"] = "";
+$a->strings["Create new folder"] = "";
+$a->strings["Create"] = "";
+$a->strings["Upload file"] = "";
+$a->strings["Upload"] = "";
$a->strings["channel"] = "";
-$a->strings["status"] = "";
-$a->strings["comment"] = "";
$a->strings["%1\$s likes %2\$s's %3\$s"] = "";
$a->strings["%1\$s doesn't like %2\$s's %3\$s"] = "";
$a->strings["%1\$s is now connected with %2\$s"] = "";
$a->strings["%1\$s poked %2\$s"] = "";
-$a->strings["poked"] = "";
-$a->strings["%1\$s is currently %2\$s"] = "";
+$a->strings["__ctx:mood__ %1\$s is %2\$s"] = "";
$a->strings["Select"] = "";
-$a->strings["Delete"] = "";
$a->strings["Private Message"] = "";
$a->strings["Message is verified"] = "";
$a->strings["View %s's profile @ %s"] = "";
@@ -196,7 +419,6 @@ $a->strings["Tag term:"] = "";
$a->strings["Save to Folder:"] = "";
$a->strings["Where are you right now?"] = "";
$a->strings["Expires YYYY-MM-DD HH:MM"] = "";
-$a->strings["Preview"] = "";
$a->strings["Share"] = "";
$a->strings["Page link title"] = "";
$a->strings["Post as"] = "";
@@ -230,6 +452,7 @@ $a->strings["Commented Order"] = "";
$a->strings["Sort by Comment Date"] = "";
$a->strings["Posted Order"] = "";
$a->strings["Sort by Post Date"] = "";
+$a->strings["Personal"] = "";
$a->strings["Posts that mention or involve you"] = "";
$a->strings["New"] = "";
$a->strings["Activity Stream - by date"] = "";
@@ -241,362 +464,19 @@ $a->strings["Channel"] = "";
$a->strings["Status Messages and Posts"] = "";
$a->strings["About"] = "";
$a->strings["Profile Details"] = "";
-$a->strings["Photo Albums"] = "";
$a->strings["Files and Storage"] = "";
$a->strings["Chatrooms"] = "";
-$a->strings["Events and Calendar"] = "";
$a->strings["Saved Bookmarks"] = "";
$a->strings["Manage Webpages"] = "";
-$a->strings["Default"] = "";
-$a->strings["No recipient provided."] = "";
-$a->strings["[no subject]"] = "";
-$a->strings["Unable to determine sender."] = "";
-$a->strings["Stored post could not be verified."] = "";
-$a->strings[" and "] = "";
-$a->strings["public profile"] = "";
-$a->strings["%1\$s changed %2\$s to &ldquo;%3\$s&rdquo;"] = "";
-$a->strings["Visit %1\$s's %2\$s"] = "";
-$a->strings["%1\$s has an updated %2\$s, changing %3\$s."] = "";
-$a->strings["view full size"] = "";
-$a->strings["%1\$s's bookmarks"] = "";
-$a->strings["Tags"] = "";
-$a->strings["Keywords"] = "";
-$a->strings["have"] = "";
-$a->strings["has"] = "";
-$a->strings["want"] = "";
-$a->strings["wants"] = "";
-$a->strings["like"] = "";
-$a->strings["likes"] = "";
-$a->strings["dislike"] = "";
-$a->strings["dislikes"] = "";
-$a->strings["Edit"] = "";
-$a->strings["save to folder"] = "";
-$a->strings["View all"] = "";
-$a->strings["__ctx:noun__ Like"] = array(
- 0 => "",
- 1 => "",
-);
-$a->strings["__ctx:noun__ Dislike"] = array(
- 0 => "",
- 1 => "",
-);
-$a->strings["add star"] = "";
-$a->strings["remove star"] = "";
-$a->strings["toggle star status"] = "";
-$a->strings["starred"] = "";
-$a->strings["add tag"] = "";
-$a->strings["I like this (toggle)"] = "";
-$a->strings["I don't like this (toggle)"] = "";
-$a->strings["Share this"] = "";
-$a->strings["share"] = "";
-$a->strings["View %s's profile - %s"] = "";
-$a->strings["to"] = "";
-$a->strings["via"] = "";
-$a->strings["Wall-to-Wall"] = "";
-$a->strings["via Wall-To-Wall:"] = "";
-$a->strings["Bookmark Links"] = "";
-$a->strings["__ctx:noun__ Likes"] = "";
-$a->strings["__ctx:noun__ Dislikes"] = "";
-$a->strings["Close"] = "";
-$a->strings["%d comment"] = array(
- 0 => "",
- 1 => "",
-);
-$a->strings["show more"] = "";
-$a->strings["This is you"] = "";
-$a->strings["Comment"] = "";
-$a->strings["Submit"] = "";
-$a->strings["Bold"] = "";
-$a->strings["Italic"] = "";
-$a->strings["Underline"] = "";
-$a->strings["Quote"] = "";
-$a->strings["Code"] = "";
-$a->strings["Image"] = "";
-$a->strings["Link"] = "";
-$a->strings["Video"] = "";
-$a->strings["Permission denied"] = "";
-$a->strings["(Unknown)"] = "";
-$a->strings["Item not found."] = "";
-$a->strings["Permission denied."] = "";
-$a->strings["Collection not found."] = "";
-$a->strings["Collection is empty."] = "";
-$a->strings["Collection: %s"] = "";
-$a->strings["Connection: %s"] = "";
-$a->strings["Connection not found."] = "";
-$a->strings["Sort Options"] = "";
-$a->strings["Alphabetic"] = "";
-$a->strings["Reverse Alphabetic"] = "";
-$a->strings["Newest to Oldest"] = "";
-$a->strings["Enable Safe Search"] = "";
-$a->strings["Disable Safe Search"] = "";
-$a->strings["Safe Mode"] = "";
-$a->strings["The form security token was not correct. This probably happened because the form has been opened for too long (>3 hours) before submitting it."] = "";
-$a->strings["created a new post"] = "";
-$a->strings["commented on %s's post"] = "";
-$a->strings["Red Matrix Notification"] = "";
-$a->strings["redmatrix"] = "";
-$a->strings["Thank You,"] = "";
-$a->strings["%s Administrator"] = "";
-$a->strings["%s <!item_type!>"] = "";
-$a->strings["[Red:Notify] New mail received at %s"] = "";
-$a->strings["%1\$s, %2\$s sent you a new private message at %3\$s."] = "";
-$a->strings["%1\$s sent you %2\$s."] = "";
-$a->strings["a private message"] = "";
-$a->strings["Please visit %s to view and/or reply to your private messages."] = "";
-$a->strings["%1\$s, %2\$s commented on [zrl=%3\$s]a %4\$s[/zrl]"] = "";
-$a->strings["%1\$s, %2\$s commented on [zrl=%3\$s]%4\$s's %5\$s[/zrl]"] = "";
-$a->strings["%1\$s, %2\$s commented on [zrl=%3\$s]your %4\$s[/zrl]"] = "";
-$a->strings["[Red:Notify] Comment to conversation #%1\$d by %2\$s"] = "";
-$a->strings["%1\$s, %2\$s commented on an item/conversation you have been following."] = "";
-$a->strings["Please visit %s to view and/or reply to the conversation."] = "";
-$a->strings["[Red:Notify] %s posted to your profile wall"] = "";
-$a->strings["%1\$s, %2\$s posted to your profile wall at %3\$s"] = "";
-$a->strings["%1\$s, %2\$s posted to [zrl=%3\$s]your wall[/zrl]"] = "";
-$a->strings["[Red:Notify] %s tagged you"] = "";
-$a->strings["%1\$s, %2\$s tagged you at %3\$s"] = "";
-$a->strings["%1\$s, %2\$s [zrl=%3\$s]tagged you[/zrl]."] = "";
-$a->strings["[Red:Notify] %1\$s poked you"] = "";
-$a->strings["%1\$s, %2\$s poked you at %3\$s"] = "";
-$a->strings["%1\$s, %2\$s [zrl=%2\$s]poked you[/zrl]."] = "";
-$a->strings["[Red:Notify] %s tagged your post"] = "";
-$a->strings["%1\$s, %2\$s tagged your post at %3\$s"] = "";
-$a->strings["%1\$s, %2\$s tagged [zrl=%3\$s]your post[/zrl]"] = "";
-$a->strings["[Red:Notify] Introduction received"] = "";
-$a->strings["%1\$s, you've received an new connection request from '%2\$s' at %3\$s"] = "";
-$a->strings["%1\$s, you've received [zrl=%2\$s]a new connection request[/zrl] from %3\$s."] = "";
-$a->strings["You may visit their profile at %s"] = "";
-$a->strings["Please visit %s to approve or reject the connection request."] = "";
-$a->strings["[Red:Notify] Friend suggestion received"] = "";
-$a->strings["%1\$s, you've received a friend suggestion from '%2\$s' at %3\$s"] = "";
-$a->strings["%1\$s, you've received [zrl=%2\$s]a friend suggestion[/zrl] for %3\$s from %4\$s."] = "";
-$a->strings["Name:"] = "";
-$a->strings["Photo:"] = "";
-$a->strings["Please visit %s to approve or reject the suggestion."] = "";
-$a->strings["Item was not found."] = "";
-$a->strings["No source file."] = "";
-$a->strings["Cannot locate file to replace"] = "";
-$a->strings["Cannot locate file to revise/update"] = "";
-$a->strings["File exceeds size limit of %d"] = "";
-$a->strings["You have reached your limit of %1$.0f Mbytes attachment storage."] = "";
-$a->strings["File upload failed. Possible system limit or action terminated."] = "";
-$a->strings["Stored file could not be verified. Upload failed."] = "";
-$a->strings["Path not available."] = "";
-$a->strings["Empty pathname"] = "";
-$a->strings["duplicate filename or path"] = "";
-$a->strings["Path not found."] = "";
-$a->strings["mkdir failed."] = "";
-$a->strings["database storage failed."] = "";
-$a->strings["New Page"] = "";
-$a->strings["View"] = "";
-$a->strings["Actions"] = "";
-$a->strings["Page Link"] = "";
-$a->strings["Title"] = "";
-$a->strings["Created"] = "";
-$a->strings["Edited"] = "";
-$a->strings["Profile Photos"] = "";
-$a->strings["Image exceeds website size limit of %lu bytes"] = "";
-$a->strings["Image file is empty."] = "";
-$a->strings["Unable to process image"] = "";
-$a->strings["Photo storage failed."] = "";
-$a->strings["Upload New Photos"] = "";
-$a->strings["Cannot locate DNS info for database server '%s'"] = "";
-$a->strings["Male"] = "";
-$a->strings["Female"] = "";
-$a->strings["Currently Male"] = "";
-$a->strings["Currently Female"] = "";
-$a->strings["Mostly Male"] = "";
-$a->strings["Mostly Female"] = "";
-$a->strings["Transgender"] = "";
-$a->strings["Intersex"] = "";
-$a->strings["Transsexual"] = "";
-$a->strings["Hermaphrodite"] = "";
-$a->strings["Neuter"] = "";
-$a->strings["Non-specific"] = "";
-$a->strings["Other"] = "";
-$a->strings["Undecided"] = "";
-$a->strings["Males"] = "";
-$a->strings["Females"] = "";
-$a->strings["Gay"] = "";
-$a->strings["Lesbian"] = "";
-$a->strings["No Preference"] = "";
-$a->strings["Bisexual"] = "";
-$a->strings["Autosexual"] = "";
-$a->strings["Abstinent"] = "";
-$a->strings["Virgin"] = "";
-$a->strings["Deviant"] = "";
-$a->strings["Fetish"] = "";
-$a->strings["Oodles"] = "";
-$a->strings["Nonsexual"] = "";
-$a->strings["Single"] = "";
-$a->strings["Lonely"] = "";
-$a->strings["Available"] = "";
-$a->strings["Unavailable"] = "";
-$a->strings["Has crush"] = "";
-$a->strings["Infatuated"] = "";
-$a->strings["Dating"] = "";
-$a->strings["Unfaithful"] = "";
-$a->strings["Sex Addict"] = "";
-$a->strings["Friends/Benefits"] = "";
-$a->strings["Casual"] = "";
-$a->strings["Engaged"] = "";
-$a->strings["Married"] = "";
-$a->strings["Imaginarily married"] = "";
-$a->strings["Partners"] = "";
-$a->strings["Cohabiting"] = "";
-$a->strings["Common law"] = "";
-$a->strings["Happy"] = "";
-$a->strings["Not looking"] = "";
-$a->strings["Swinger"] = "";
-$a->strings["Betrayed"] = "";
-$a->strings["Separated"] = "";
-$a->strings["Unstable"] = "";
-$a->strings["Divorced"] = "";
-$a->strings["Imaginarily divorced"] = "";
-$a->strings["Widowed"] = "";
-$a->strings["Uncertain"] = "";
-$a->strings["It's complicated"] = "";
-$a->strings["Don't care"] = "";
-$a->strings["Ask me"] = "";
-$a->strings["Click here to upgrade."] = "";
-$a->strings["This action exceeds the limits set by your subscription plan."] = "";
-$a->strings["This action is not available under your subscription plan."] = "";
-$a->strings["Visible to everybody"] = "";
-$a->strings["Show"] = "";
-$a->strings["Don't show"] = "";
-$a->strings["Permissions"] = "";
-$a->strings["Not a valid email address"] = "";
-$a->strings["Your email domain is not among those allowed on this site"] = "";
-$a->strings["Your email address is already registered at this site."] = "";
-$a->strings["An invitation is required."] = "";
-$a->strings["Invitation could not be verified."] = "";
-$a->strings["Please enter the required information."] = "";
-$a->strings["Failed to store account information."] = "";
-$a->strings["Registration request at %s"] = "";
-$a->strings["Administrator"] = "";
-$a->strings["your registration password"] = "";
-$a->strings["Registration details for %s"] = "";
-$a->strings["Account approved."] = "";
-$a->strings["Registration revoked for %s"] = "";
-$a->strings["New window"] = "";
-$a->strings["Open the selected location in a different window or browser tab"] = "";
-$a->strings["Unknown | Not categorised"] = "";
-$a->strings["Block immediately"] = "";
-$a->strings["Shady, spammer, self-marketer"] = "";
-$a->strings["Known to me, but no opinion"] = "";
-$a->strings["OK, probably harmless"] = "";
-$a->strings["Reputable, has my trust"] = "";
-$a->strings["Frequently"] = "";
-$a->strings["Hourly"] = "";
-$a->strings["Twice daily"] = "";
-$a->strings["Daily"] = "";
-$a->strings["Weekly"] = "";
-$a->strings["Monthly"] = "";
-$a->strings["Friendica"] = "";
-$a->strings["OStatus"] = "";
-$a->strings["RSS/Atom"] = "";
-$a->strings["Email"] = "";
-$a->strings["Diaspora"] = "";
-$a->strings["Facebook"] = "";
-$a->strings["Zot!"] = "";
-$a->strings["LinkedIn"] = "";
-$a->strings["XMPP/IM"] = "";
-$a->strings["MySpace"] = "";
-$a->strings["Profile"] = "";
-$a->strings["Update"] = "";
-$a->strings["Install"] = "";
-$a->strings["Unknown"] = "";
-$a->strings["Logged out."] = "";
-$a->strings["Failed authentication"] = "";
-$a->strings["Login failed."] = "";
-$a->strings["prev"] = "";
-$a->strings["first"] = "";
-$a->strings["last"] = "";
-$a->strings["next"] = "";
-$a->strings["older"] = "";
-$a->strings["newer"] = "";
-$a->strings["No connections"] = "";
-$a->strings["%d Connection"] = array(
- 0 => "",
- 1 => "",
-);
-$a->strings["View Connections"] = "";
-$a->strings["poke"] = "";
-$a->strings["ping"] = "";
-$a->strings["pinged"] = "";
-$a->strings["prod"] = "";
-$a->strings["prodded"] = "";
-$a->strings["slap"] = "";
-$a->strings["slapped"] = "";
-$a->strings["finger"] = "";
-$a->strings["fingered"] = "";
-$a->strings["rebuff"] = "";
-$a->strings["rebuffed"] = "";
-$a->strings["happy"] = "";
-$a->strings["sad"] = "";
-$a->strings["mellow"] = "";
-$a->strings["tired"] = "";
-$a->strings["perky"] = "";
-$a->strings["angry"] = "";
-$a->strings["stupified"] = "";
-$a->strings["puzzled"] = "";
-$a->strings["interested"] = "";
-$a->strings["bitter"] = "";
-$a->strings["cheerful"] = "";
-$a->strings["alive"] = "";
-$a->strings["annoyed"] = "";
-$a->strings["anxious"] = "";
-$a->strings["cranky"] = "";
-$a->strings["disturbed"] = "";
-$a->strings["frustrated"] = "";
-$a->strings["depressed"] = "";
-$a->strings["motivated"] = "";
-$a->strings["relaxed"] = "";
-$a->strings["surprised"] = "";
-$a->strings["Monday"] = "";
-$a->strings["Tuesday"] = "";
-$a->strings["Wednesday"] = "";
-$a->strings["Thursday"] = "";
-$a->strings["Friday"] = "";
-$a->strings["Saturday"] = "";
-$a->strings["Sunday"] = "";
-$a->strings["January"] = "";
-$a->strings["February"] = "";
-$a->strings["March"] = "";
-$a->strings["April"] = "";
-$a->strings["May"] = "";
-$a->strings["June"] = "";
-$a->strings["July"] = "";
-$a->strings["August"] = "";
-$a->strings["September"] = "";
-$a->strings["October"] = "";
-$a->strings["November"] = "";
-$a->strings["December"] = "";
-$a->strings["unknown.???"] = "";
-$a->strings["bytes"] = "";
-$a->strings["remove category"] = "";
-$a->strings["remove from file"] = "";
-$a->strings["Click to open/close"] = "";
-$a->strings["link to source"] = "";
-$a->strings["Select a page layout: "] = "";
-$a->strings["default"] = "";
-$a->strings["Page content type: "] = "";
-$a->strings["Select an alternate language"] = "";
-$a->strings["activity"] = "";
-$a->strings["Design"] = "";
-$a->strings["Blocks"] = "";
-$a->strings["Menus"] = "";
-$a->strings["Layouts"] = "";
-$a->strings["Pages"] = "";
-$a->strings["Missing room name"] = "";
-$a->strings["Duplicate room name"] = "";
-$a->strings["Invalid room specifier."] = "";
-$a->strings["Room not found."] = "";
-$a->strings["Room is full"] = "";
$a->strings["General Features"] = "";
$a->strings["Content Expiration"] = "";
$a->strings["Remove posts/comments and/or private messages at a future time"] = "";
$a->strings["Multiple Profiles"] = "";
$a->strings["Ability to create multiple profiles"] = "";
+$a->strings["Advanced Profiles"] = "";
+$a->strings["Additional profile sections and selections"] = "";
+$a->strings["Profile Import/Export"] = "";
+$a->strings["Save and load profile details across sites/channels"] = "";
$a->strings["Web Pages"] = "";
$a->strings["Provide managed web pages on your channel"] = "";
$a->strings["Private Notes"] = "";
@@ -608,10 +488,11 @@ $a->strings["Enable Expert Mode to provide advanced configuration options"] = ""
$a->strings["Premium Channel"] = "";
$a->strings["Allows you to set restrictions and terms on those that connect with your channel"] = "";
$a->strings["Post Composition Features"] = "";
-$a->strings["Richtext Editor"] = "";
-$a->strings["Enable richtext editor"] = "";
+$a->strings["Use Markdown"] = "";
+$a->strings["Allow use of \"Markdown\" to format posts"] = "";
$a->strings["Post Preview"] = "";
$a->strings["Allow previewing posts and comments before publishing them"] = "";
+$a->strings["Channel Sources"] = "";
$a->strings["Automatically import channel content from other channels or feeds"] = "";
$a->strings["Even More Encryption"] = "";
$a->strings["Allow optional encryption of content end-to-end with a shared secret key"] = "";
@@ -620,6 +501,7 @@ $a->strings["Search by Date"] = "";
$a->strings["Ability to select posts by date ranges"] = "";
$a->strings["Collections Filter"] = "";
$a->strings["Enable widget to display Network posts only from selected collections"] = "";
+$a->strings["Saved Searches"] = "";
$a->strings["Save search terms for re-use"] = "";
$a->strings["Network Personal Tab"] = "";
$a->strings["Enable tab to display only Network posts that you've interacted on"] = "";
@@ -643,66 +525,27 @@ $a->strings["Star Posts"] = "";
$a->strings["Ability to mark special posts with a star indicator"] = "";
$a->strings["Tag Cloud"] = "";
$a->strings["Provide a personal tag cloud on your channel page"] = "";
-$a->strings["Can view my \"public\" stream and posts"] = "";
-$a->strings["Can view my \"public\" channel profile"] = "";
-$a->strings["Can view my \"public\" photo albums"] = "";
-$a->strings["Can view my \"public\" address book"] = "";
-$a->strings["Can view my \"public\" file storage"] = "";
-$a->strings["Can view my \"public\" pages"] = "";
-$a->strings["Can send me their channel stream and posts"] = "";
-$a->strings["Can post on my channel page (\"wall\")"] = "";
-$a->strings["Can comment on my posts"] = "";
-$a->strings["Can send me private mail messages"] = "";
-$a->strings["Can post photos to my photo albums"] = "";
-$a->strings["Can forward to all my channel contacts via post @mentions"] = "";
-$a->strings["Advanced - useful for creating group forum channels"] = "";
-$a->strings["Can chat with me (when available)"] = "";
-$a->strings["Can write to my \"public\" file storage"] = "";
-$a->strings["Can edit my \"public\" pages"] = "";
-$a->strings["Can source my \"public\" posts in derived channels"] = "";
-$a->strings["Somewhat advanced - very useful in open communities"] = "";
-$a->strings["Can administer my channel resources"] = "";
-$a->strings["Extremely advanced. Leave this alone unless you know what you are doing"] = "";
-$a->strings["Invalid data packet"] = "";
-$a->strings["Unable to verify channel signature"] = "";
-$a->strings["Unable to verify site signature for %s"] = "";
-$a->strings["%d invitation available"] = array(
- 0 => "",
- 1 => "",
-);
-$a->strings["Advanced"] = "";
-$a->strings["Find Channels"] = "";
-$a->strings["Enter name or interest"] = "";
-$a->strings["Connect/Follow"] = "";
-$a->strings["Examples: Robert Morgenstein, Fishing"] = "";
-$a->strings["Find"] = "";
-$a->strings["Channel Suggestions"] = "";
-$a->strings["Random Profile"] = "";
-$a->strings["Invite Friends"] = "";
-$a->strings["Exammple: name=fred and country=iceland"] = "";
-$a->strings["Advanced Find"] = "";
-$a->strings["%d connection in common"] = array(
- 0 => "",
- 1 => "",
-);
-$a->strings["Miscellaneous"] = "";
-$a->strings["year"] = "";
-$a->strings["month"] = "";
-$a->strings["day"] = "";
-$a->strings["never"] = "";
-$a->strings["less than a second ago"] = "";
-$a->strings["years"] = "";
-$a->strings["months"] = "";
-$a->strings["week"] = "";
-$a->strings["weeks"] = "";
-$a->strings["days"] = "";
-$a->strings["hour"] = "";
-$a->strings["hours"] = "";
-$a->strings["minute"] = "";
-$a->strings["minutes"] = "";
-$a->strings["second"] = "";
-$a->strings["seconds"] = "";
-$a->strings["%1\$d %2\$s ago"] = "";
+$a->strings["Channel is blocked on this site."] = "";
+$a->strings["Channel location missing."] = "";
+$a->strings["Response from remote channel was incomplete."] = "";
+$a->strings["Channel was deleted and no longer exists."] = "";
+$a->strings["Channel discovery failed."] = "";
+$a->strings["local account not found."] = "";
+$a->strings["Cannot connect to yourself."] = "";
+$a->strings["Missing room name"] = "";
+$a->strings["Duplicate room name"] = "";
+$a->strings["Invalid room specifier."] = "";
+$a->strings["Room not found."] = "";
+$a->strings["Room is full"] = "";
+$a->strings["A deleted group with this name was revived. Existing item permissions <strong>may</strong> apply to this group and any future members. If this is not what you intended, please create another group with a different name."] = "";
+$a->strings["Default privacy group for new contacts"] = "";
+$a->strings["All Channels"] = "";
+$a->strings["edit"] = "";
+$a->strings["Collections"] = "";
+$a->strings["Edit collection"] = "";
+$a->strings["Create a new collection"] = "";
+$a->strings["Channels not in any collection"] = "";
+$a->strings["add"] = "";
$a->strings["Unable to obtain identity information from database"] = "";
$a->strings["Empty name"] = "";
$a->strings["Name too long"] = "";
@@ -712,13 +555,14 @@ $a->strings["Reserved nickname. Please choose another."] = "";
$a->strings["Nickname has unsupported characters or is already being used on this site."] = "";
$a->strings["Unable to retrieve created identity"] = "";
$a->strings["Default Profile"] = "";
+$a->strings["Friends"] = "";
$a->strings["Requested channel is not available."] = "";
$a->strings["Requested profile is not available."] = "";
+$a->strings["Connect"] = "";
$a->strings["Change profile photo"] = "";
$a->strings["Profiles"] = "";
$a->strings["Manage/edit profiles"] = "";
$a->strings["Create New Profile"] = "";
-$a->strings["Edit Profile"] = "";
$a->strings["Profile Image"] = "";
$a->strings["visible to everybody"] = "";
$a->strings["Edit visibility"] = "";
@@ -734,7 +578,9 @@ $a->strings["Birthdays this week:"] = "";
$a->strings["[No description]"] = "";
$a->strings["Event Reminders"] = "";
$a->strings["Events this week:"] = "";
+$a->strings["Profile"] = "";
$a->strings["Full Name:"] = "";
+$a->strings["Like this channel"] = "";
$a->strings["j F, Y"] = "";
$a->strings["j F"] = "";
$a->strings["Birthday:"] = "";
@@ -758,10 +604,103 @@ $a->strings["Film/dance/culture/entertainment:"] = "";
$a->strings["Love/Romance:"] = "";
$a->strings["Work/employment:"] = "";
$a->strings["School/education:"] = "";
+$a->strings["Like this thing"] = "";
+$a->strings["view full size"] = "";
+$a->strings["Site Admin"] = "";
+$a->strings["Address Book"] = "";
+$a->strings["Mood"] = "";
+$a->strings["Probe"] = "";
+$a->strings["Suggest"] = "";
+$a->strings["Update"] = "";
+$a->strings["Install"] = "";
+$a->strings["Purchase"] = "";
+$a->strings["Image/photo"] = "";
+$a->strings["Encrypted content"] = "";
+$a->strings["QR code"] = "";
+$a->strings["%1\$s wrote the following %2\$s %3\$s"] = "";
+$a->strings["post"] = "";
+$a->strings["$1 wrote:"] = "";
+$a->strings["No recipient provided."] = "";
+$a->strings["[no subject]"] = "";
+$a->strings["Unable to determine sender."] = "";
+$a->strings["Stored post could not be verified."] = "";
+$a->strings["System"] = "";
+$a->strings["Create Personal App"] = "";
+$a->strings["Edit Personal App"] = "";
+$a->strings["Ignore/Hide"] = "";
+$a->strings["Suggestions"] = "";
+$a->strings["See more..."] = "";
+$a->strings["You have %1$.0f of %2$.0f allowed connections."] = "";
+$a->strings["Add New Connection"] = "";
+$a->strings["Enter the channel address"] = "";
+$a->strings["Example: bob@example.com, http://example.com/barbara"] = "";
+$a->strings["Notes"] = "";
+$a->strings["Remove term"] = "";
+$a->strings["Archives"] = "";
+$a->strings["Refresh"] = "";
+$a->strings["Me"] = "";
+$a->strings["Best Friends"] = "";
+$a->strings["Co-workers"] = "";
+$a->strings["Former Friends"] = "";
+$a->strings["Acquaintances"] = "";
+$a->strings["Everybody"] = "";
+$a->strings["Account settings"] = "";
+$a->strings["Channel settings"] = "";
+$a->strings["Additional features"] = "";
+$a->strings["Feature settings"] = "";
+$a->strings["Display settings"] = "";
+$a->strings["Connected apps"] = "";
+$a->strings["Export channel"] = "";
+$a->strings["Automatic Permissions (Advanced)"] = "";
+$a->strings["Premium Channel Settings"] = "";
+$a->strings["Check Mail"] = "";
+$a->strings["Chat Rooms"] = "";
+$a->strings["Bookmarked Chatrooms"] = "";
+$a->strings["Suggested Chatrooms"] = "";
+$a->strings["Save to Folder"] = "";
+$a->strings["View all"] = "";
+$a->strings["__ctx:noun__ Dislike"] = array(
+ 0 => "",
+ 1 => "",
+);
+$a->strings["Add Star"] = "";
+$a->strings["Remove Star"] = "";
+$a->strings["Toggle Star Status"] = "";
+$a->strings["starred"] = "";
+$a->strings["Add Tag"] = "";
+$a->strings["I like this (toggle)"] = "";
+$a->strings["I don't like this (toggle)"] = "";
+$a->strings["Share This"] = "";
+$a->strings["share"] = "";
+$a->strings["View %s's profile - %s"] = "";
+$a->strings["to"] = "";
+$a->strings["via"] = "";
+$a->strings["Wall-to-Wall"] = "";
+$a->strings["via Wall-To-Wall:"] = "";
+$a->strings["Save Bookmarks"] = "";
+$a->strings["Add to Calendar"] = "";
+$a->strings["__ctx:noun__ Likes"] = "";
+$a->strings["__ctx:noun__ Dislikes"] = "";
+$a->strings["%d comment"] = array(
+ 0 => "",
+ 1 => "",
+);
+$a->strings["[+] show all"] = "";
+$a->strings["This is you"] = "";
+$a->strings["Comment"] = "";
+$a->strings["Submit"] = "";
+$a->strings["Bold"] = "";
+$a->strings["Italic"] = "";
+$a->strings["Underline"] = "";
+$a->strings["Quote"] = "";
+$a->strings["Code"] = "";
+$a->strings["Image"] = "";
+$a->strings["Link"] = "";
+$a->strings["Video"] = "";
$a->strings["Delete this item?"] = "";
-$a->strings["show fewer"] = "";
-$a->strings["+ Show More"] = "";
-$a->strings["- Show Less"] = "";
+$a->strings["[-] show less"] = "";
+$a->strings["[+] expand"] = "";
+$a->strings["[-] collapse"] = "";
$a->strings["Password too short"] = "";
$a->strings["Passwords do not match"] = "";
$a->strings["everybody"] = "";
@@ -786,103 +725,104 @@ $a->strings["about a year"] = "";
$a->strings["%d years"] = "";
$a->strings[" "] = "";
$a->strings["timeago.numbers"] = "";
-$a->strings["Channel not found."] = "";
-$a->strings["Welcome to %s"] = "";
-$a->strings["Channel added."] = "";
-$a->strings["Public access denied."] = "";
-$a->strings["Age: "] = "";
-$a->strings["Gender: "] = "";
-$a->strings["Status: "] = "";
-$a->strings["Sexual Preference: "] = "";
-$a->strings["Homepage: "] = "";
-$a->strings["Hometown: "] = "";
-$a->strings["About: "] = "";
-$a->strings["Keywords: "] = "";
-$a->strings["Not found."] = "";
-$a->strings["network"] = "";
-$a->strings["Authorize application connection"] = "";
-$a->strings["Return to your app and insert this Securty Code:"] = "";
-$a->strings["Please login to continue."] = "";
-$a->strings["Do you want to authorize this application to access your posts and contacts, and/or create new posts for you?"] = "";
-$a->strings["Yes"] = "";
-$a->strings["No"] = "";
-$a->strings["Item not found"] = "";
-$a->strings["Edit Layout"] = "";
-$a->strings["Delete layout?"] = "";
-$a->strings["Insert YouTube video"] = "";
-$a->strings["Insert Vorbis [.ogg] video"] = "";
-$a->strings["Insert Vorbis [.ogg] audio"] = "";
-$a->strings["Delete Layout"] = "";
-$a->strings["Hub not found."] = "";
-$a->strings["Fetching URL returns error: %1\$s"] = "";
-$a->strings["Tag removed"] = "";
-$a->strings["Remove Item Tag"] = "";
-$a->strings["Select a tag to remove: "] = "";
-$a->strings["Remove"] = "";
-$a->strings["Add a Channel"] = "";
-$a->strings["A channel is your own collection of related web pages. A channel can be used to hold social network profiles, blogs, conversation groups and forums, celebrity pages, and much more. You may create as many channels as your service provider allows."] = "";
-$a->strings["Channel Name"] = "";
-$a->strings["Examples: \"Bob Jameson\", \"Lisa and her Horses\", \"Soccer\", \"Aviation Group\" "] = "";
-$a->strings["Choose a short nickname"] = "";
-$a->strings["Your nickname will be used to create an easily remembered channel address (like an email address) which you can share with others."] = "";
-$a->strings["Or <a href=\"import\">import an existing channel</a> from another location"] = "";
-$a->strings["Create"] = "";
-$a->strings["Public Sites"] = "";
-$a->strings["The listed sites allow public registration into the Red Matrix. All sites in the matrix are interlinked so membership on any of them conveys membership in the matrix as a whole. Some sites may require subscription or provide tiered service plans. The provider links <strong>may</strong> provide additional details."] = "";
-$a->strings["Site URL"] = "";
-$a->strings["Access Type"] = "";
-$a->strings["Registration Policy"] = "";
-$a->strings["Location"] = "";
-$a->strings["[Embedded content - reload page to view]"] = "";
-$a->strings["Collection created."] = "";
-$a->strings["Could not create collection."] = "";
-$a->strings["Collection updated."] = "";
-$a->strings["Create a collection of channels."] = "";
-$a->strings["Collection Name: "] = "";
-$a->strings["Members are visible to other channels"] = "";
-$a->strings["Collection removed."] = "";
-$a->strings["Unable to remove collection."] = "";
-$a->strings["Collection Editor"] = "";
-$a->strings["Members"] = "";
-$a->strings["All Connected Channels"] = "";
-$a->strings["Click on a channel to add or remove."] = "";
-$a->strings["Thing updated"] = "";
-$a->strings["Object store: failed"] = "";
-$a->strings["Thing added"] = "";
-$a->strings["OBJ: %1\$s %2\$s %3\$s"] = "";
-$a->strings["Show Thing"] = "";
-$a->strings["item not found."] = "";
-$a->strings["Edit Thing"] = "";
-$a->strings["Select a profile"] = "";
-$a->strings["Select a category of stuff. e.g. I ______ something"] = "";
-$a->strings["Post an activity"] = "";
-$a->strings["Only sends to viewers of the applicable profile"] = "";
-$a->strings["Name of thing e.g. something"] = "";
-$a->strings["URL of thing (optional)"] = "";
-$a->strings["URL for photo of thing (optional)"] = "";
-$a->strings["Add Thing to your Profile"] = "";
-$a->strings["Invalid request identifier."] = "";
-$a->strings["Discard"] = "";
-$a->strings["Ignore"] = "";
-$a->strings["No more system notifications."] = "";
-$a->strings["System Notifications"] = "";
-$a->strings["Invalid item."] = "";
-$a->strings["Page not found."] = "";
-$a->strings["Messages"] = "";
-$a->strings["Conversation removed."] = "";
-$a->strings["No messages."] = "";
-$a->strings["Delete message"] = "";
-$a->strings["D, d M Y - g:i A"] = "";
-$a->strings["Edit post"] = "";
-$a->strings["Finding:"] = "";
-$a->strings["next page"] = "";
-$a->strings["previous page"] = "";
-$a->strings["No entries (some entries may be hidden)."] = "";
+$a->strings["New window"] = "";
+$a->strings["Open the selected location in a different window or browser tab"] = "";
+$a->strings["Male"] = "";
+$a->strings["Female"] = "";
+$a->strings["Currently Male"] = "";
+$a->strings["Currently Female"] = "";
+$a->strings["Mostly Male"] = "";
+$a->strings["Mostly Female"] = "";
+$a->strings["Transgender"] = "";
+$a->strings["Intersex"] = "";
+$a->strings["Transsexual"] = "";
+$a->strings["Hermaphrodite"] = "";
+$a->strings["Neuter"] = "";
+$a->strings["Non-specific"] = "";
+$a->strings["Other"] = "";
+$a->strings["Undecided"] = "";
+$a->strings["Males"] = "";
+$a->strings["Females"] = "";
+$a->strings["Gay"] = "";
+$a->strings["Lesbian"] = "";
+$a->strings["No Preference"] = "";
+$a->strings["Bisexual"] = "";
+$a->strings["Autosexual"] = "";
+$a->strings["Abstinent"] = "";
+$a->strings["Virgin"] = "";
+$a->strings["Deviant"] = "";
+$a->strings["Fetish"] = "";
+$a->strings["Oodles"] = "";
+$a->strings["Nonsexual"] = "";
+$a->strings["Single"] = "";
+$a->strings["Lonely"] = "";
+$a->strings["Available"] = "";
+$a->strings["Unavailable"] = "";
+$a->strings["Has crush"] = "";
+$a->strings["Infatuated"] = "";
+$a->strings["Dating"] = "";
+$a->strings["Unfaithful"] = "";
+$a->strings["Sex Addict"] = "";
+$a->strings["Friends/Benefits"] = "";
+$a->strings["Casual"] = "";
+$a->strings["Engaged"] = "";
+$a->strings["Married"] = "";
+$a->strings["Imaginarily married"] = "";
+$a->strings["Partners"] = "";
+$a->strings["Cohabiting"] = "";
+$a->strings["Common law"] = "";
+$a->strings["Happy"] = "";
+$a->strings["Not looking"] = "";
+$a->strings["Swinger"] = "";
+$a->strings["Betrayed"] = "";
+$a->strings["Separated"] = "";
+$a->strings["Unstable"] = "";
+$a->strings["Divorced"] = "";
+$a->strings["Imaginarily divorced"] = "";
+$a->strings["Widowed"] = "";
+$a->strings["Uncertain"] = "";
+$a->strings["It's complicated"] = "";
+$a->strings["Don't care"] = "";
+$a->strings["Ask me"] = "";
+$a->strings["Logged out."] = "";
+$a->strings["Failed authentication"] = "";
+$a->strings["Login failed."] = "";
+$a->strings["Permission denied"] = "";
+$a->strings["(Unknown)"] = "";
+$a->strings["Item not found."] = "";
+$a->strings["Collection not found."] = "";
+$a->strings["Collection is empty."] = "";
+$a->strings["Collection: %s"] = "";
+$a->strings["Connection: %s"] = "";
+$a->strings["Connection not found."] = "";
+$a->strings["Can view my \"public\" stream and posts"] = "";
+$a->strings["Can view my \"public\" channel profile"] = "";
+$a->strings["Can view my \"public\" photo albums"] = "";
+$a->strings["Can view my \"public\" address book"] = "";
+$a->strings["Can view my \"public\" file storage"] = "";
+$a->strings["Can view my \"public\" pages"] = "";
+$a->strings["Can send me their channel stream and posts"] = "";
+$a->strings["Can post on my channel page (\"wall\")"] = "";
+$a->strings["Can comment on or like my posts"] = "";
+$a->strings["Can send me private mail messages"] = "";
+$a->strings["Can post photos to my photo albums"] = "";
+$a->strings["Can like/dislike stuff"] = "";
+$a->strings["Can forward to all my channel contacts via post @mentions"] = "";
+$a->strings["Advanced - useful for creating group forum channels"] = "";
+$a->strings["Can chat with me (when available)"] = "";
+$a->strings["Can write to my \"public\" file storage"] = "";
+$a->strings["Can edit my \"public\" pages"] = "";
+$a->strings["Can source my \"public\" posts in derived channels"] = "";
+$a->strings["Somewhat advanced - very useful in open communities"] = "";
+$a->strings["Can administer my channel resources"] = "";
+$a->strings["Extremely advanced. Leave this alone unless you know what you are doing"] = "";
+$a->strings["Set your current mood and tell your friends"] = "";
$a->strings["Menu not found."] = "";
$a->strings["Menu element updated."] = "";
$a->strings["Unable to update menu element."] = "";
$a->strings["Menu element added."] = "";
$a->strings["Unable to add menu element."] = "";
+$a->strings["Not found."] = "";
$a->strings["Manage Menu Elements"] = "";
$a->strings["Edit menu"] = "";
$a->strings["Edit element"] = "";
@@ -906,198 +846,10 @@ $a->strings["Menu item deleted."] = "";
$a->strings["Menu item could not be deleted."] = "";
$a->strings["Edit Menu Element"] = "";
$a->strings["Modify"] = "";
-$a->strings["Continue"] = "";
-$a->strings["Premium Channel Setup"] = "";
-$a->strings["Enable premium channel connection restrictions"] = "";
-$a->strings["Please enter your restrictions or conditions, such as paypal receipt, usage guidelines, etc."] = "";
-$a->strings["This channel may require additional steps or acknowledgement of the following conditions prior to connecting:"] = "";
-$a->strings["Potential connections will then see the following text before proceeding:"] = "";
-$a->strings["By continuing, I certify that I have complied with any instructions provided on this page."] = "";
-$a->strings["(No specific instructions have been provided by the channel owner.)"] = "";
-$a->strings["Restricted or Premium Channel"] = "";
-$a->strings["Unable to locate original post."] = "";
-$a->strings["Empty post discarded."] = "";
-$a->strings["Executable content type not permitted to this channel."] = "";
-$a->strings["System error. Post not saved."] = "";
-$a->strings["You have reached your limit of %1$.0f top level posts."] = "";
-$a->strings["You have reached your limit of %1$.0f webpages."] = "";
-$a->strings["No suggestions available. If this is a new site, please try again in 24 hours."] = "";
-$a->strings["No such group"] = "";
-$a->strings["Search Results For:"] = "";
-$a->strings["Collection is empty"] = "";
-$a->strings["Collection: "] = "";
-$a->strings["Connection: "] = "";
-$a->strings["Invalid connection."] = "";
-$a->strings["Version %s"] = "";
-$a->strings["Installed plugins/addons/apps:"] = "";
-$a->strings["No installed plugins/addons/apps"] = "";
-$a->strings["Red"] = "";
-$a->strings["This is a hub of the Red Matrix - a global cooperative network of decentralised privacy enhanced websites."] = "";
-$a->strings["Running at web location"] = "";
-$a->strings["Please visit <a href=\"http://getzot.com\">GetZot.com</a> to learn more about the Red Matrix."] = "";
-$a->strings["Bug reports and issues: please visit"] = "";
-$a->strings["Suggestions, praise, etc. - please email \"redmatrix\" at librelist - dot com"] = "";
-$a->strings["Site Administrators"] = "";
-$a->strings["Bookmark added"] = "";
-$a->strings["My Bookmarks"] = "";
-$a->strings["My Connections Bookmarks"] = "";
-$a->strings["You must be logged in to see this page."] = "";
-$a->strings["Insufficient permissions. Request redirected to profile page."] = "";
-$a->strings["Layout updated."] = "";
-$a->strings["Edit System Page Description"] = "";
-$a->strings["Layout not found."] = "";
-$a->strings["Module Name:"] = "";
-$a->strings["Layout Help"] = "";
-$a->strings["Unable to find your hub."] = "";
-$a->strings["Post successful."] = "";
-$a->strings["%1\$s is following %2\$s's %3\$s"] = "";
-$a->strings["toggle full screen mode"] = "";
-$a->strings["invalid target signature"] = "";
-$a->strings["Failed to create source. No channel selected."] = "";
-$a->strings["Source created."] = "";
-$a->strings["Source updated."] = "";
-$a->strings["*"] = "";
-$a->strings["Manage remote sources of content for your channel."] = "";
-$a->strings["New Source"] = "";
-$a->strings["Import all or selected content from the following channel into this channel and distribute it according to your channel settings."] = "";
-$a->strings["Only import content with these words (one per line)"] = "";
-$a->strings["Leave blank to import all public content"] = "";
-$a->strings["Source not found."] = "";
-$a->strings["Edit Source"] = "";
-$a->strings["Delete Source"] = "";
-$a->strings["Source removed"] = "";
-$a->strings["Unable to remove source."] = "";
-$a->strings["Invalid profile identifier."] = "";
-$a->strings["Profile Visibility Editor"] = "";
-$a->strings["Click on a contact to add or remove."] = "";
-$a->strings["Visible To"] = "";
-$a->strings["All Connections"] = "";
-$a->strings["Image uploaded but image cropping failed."] = "";
-$a->strings["Image resize failed."] = "";
-$a->strings["Shift-reload the page or clear browser cache if the new photo does not display immediately."] = "";
-$a->strings["Image exceeds size limit of %d"] = "";
-$a->strings["Unable to process image."] = "";
-$a->strings["Photo not available."] = "";
-$a->strings["Upload File:"] = "";
-$a->strings["Select a profile:"] = "";
-$a->strings["Upload Profile Photo"] = "";
-$a->strings["Upload"] = "";
-$a->strings["or"] = "";
-$a->strings["skip this step"] = "";
-$a->strings["select a photo from your photo albums"] = "";
-$a->strings["Crop Image"] = "";
-$a->strings["Please adjust the image cropping for optimum viewing."] = "";
-$a->strings["Done Editing"] = "";
-$a->strings["Image uploaded successfully."] = "";
-$a->strings["Image upload failed."] = "";
-$a->strings["Image size reduction [%s] failed."] = "";
-$a->strings["Block Name"] = "";
-$a->strings["Remote authentication blocked. You are logged into this site locally. Please logout and retry."] = "";
-$a->strings["Welcome %s. Remote authentication successful."] = "";
-$a->strings["Permission Denied."] = "";
-$a->strings["File not found."] = "";
-$a->strings["Edit file permissions"] = "";
-$a->strings["Set/edit permissions"] = "";
-$a->strings["Include all files and sub folders"] = "";
-$a->strings["Return to file list"] = "";
-$a->strings["Copy/paste this code to attach file to a post"] = "";
-$a->strings["Copy/paste this URL to link file from a web page"] = "";
-$a->strings["Download"] = "";
-$a->strings["Used: "] = "";
-$a->strings["[directory]"] = "";
-$a->strings["Limit: "] = "";
-$a->strings["Remote privacy information not available."] = "";
-$a->strings["Visible to:"] = "";
-$a->strings["Contact not found."] = "";
-$a->strings["Friend suggestion sent."] = "";
-$a->strings["Suggest Friends"] = "";
-$a->strings["Suggest a friend for %s"] = "";
-$a->strings["%1\$s tagged %2\$s's %3\$s with %4\$s"] = "";
-$a->strings["Could not access contact record."] = "";
-$a->strings["Could not locate selected profile."] = "";
-$a->strings["Connection updated."] = "";
-$a->strings["Failed to update connection record."] = "";
-$a->strings["Could not access address book record."] = "";
-$a->strings["Refresh failed - channel is currently unavailable."] = "";
-$a->strings["Channel has been unblocked"] = "";
-$a->strings["Channel has been blocked"] = "";
-$a->strings["Unable to set address book parameters."] = "";
-$a->strings["Channel has been unignored"] = "";
-$a->strings["Channel has been ignored"] = "";
-$a->strings["Channel has been unarchived"] = "";
-$a->strings["Channel has been archived"] = "";
-$a->strings["Channel has been unhidden"] = "";
-$a->strings["Channel has been hidden"] = "";
-$a->strings["Channel has been approved"] = "";
-$a->strings["Channel has been unapproved"] = "";
-$a->strings["Connection has been removed."] = "";
-$a->strings["View %s's profile"] = "";
-$a->strings["Refresh Permissions"] = "";
-$a->strings["Fetch updated permissions"] = "";
-$a->strings["Recent Activity"] = "";
-$a->strings["View recent posts and comments"] = "";
-$a->strings["Unblock"] = "";
-$a->strings["Block"] = "";
-$a->strings["Block or Unblock this connection"] = "";
-$a->strings["Unignore"] = "";
-$a->strings["Ignore or Unignore this connection"] = "";
-$a->strings["Unarchive"] = "";
-$a->strings["Archive"] = "";
-$a->strings["Archive or Unarchive this connection"] = "";
-$a->strings["Unhide"] = "";
-$a->strings["Hide"] = "";
-$a->strings["Hide or Unhide this connection"] = "";
-$a->strings["Delete this connection"] = "";
-$a->strings["Approve this connection"] = "";
-$a->strings["Accept connection to allow communication"] = "";
-$a->strings["Automatic Permissions Settings"] = "";
-$a->strings["Connections: settings for %s"] = "";
-$a->strings["When receiving a channel introduction, any permissions provided here will be applied to the new connection automatically and the introduction approved. Leave this page if you do not wish to use this feature."] = "";
-$a->strings["Slide to adjust your degree of friendship"] = "";
-$a->strings["inherited"] = "";
-$a->strings["Connection has no individual permissions!"] = "";
-$a->strings["This may be appropriate based on your <a href=\"settings\">privacy settings</a>, though you may wish to review the \"Advanced Permissions\"."] = "";
-$a->strings["Profile Visibility"] = "";
-$a->strings["Please choose the profile you would like to display to %s when viewing your profile securely."] = "";
-$a->strings["Contact Information / Notes"] = "";
-$a->strings["Edit contact notes"] = "";
-$a->strings["Their Settings"] = "";
-$a->strings["My Settings"] = "";
-$a->strings["Clear/Disable Automatic Permissions"] = "";
-$a->strings["Forum Members"] = "";
-$a->strings["Soapbox"] = "";
-$a->strings["Full Sharing (typical social network permissions)"] = "";
-$a->strings["Cautious Sharing "] = "";
-$a->strings["Follow Only"] = "";
-$a->strings["Individual Permissions"] = "";
-$a->strings["Some permissions may be inherited from your channel <a href=\"settings\">privacy settings</a>, which have higher priority than individual settings. Changing those inherited settings on this page will have no effect."] = "";
-$a->strings["Advanced Permissions"] = "";
-$a->strings["Simple Permissions (select one and submit)"] = "";
-$a->strings["Visit %s's profile - %s"] = "";
-$a->strings["Block/Unblock contact"] = "";
-$a->strings["Ignore contact"] = "";
-$a->strings["Repair URL settings"] = "";
-$a->strings["View conversations"] = "";
-$a->strings["Delete contact"] = "";
-$a->strings["Last update:"] = "";
-$a->strings["Update public posts"] = "";
-$a->strings["Update now"] = "";
-$a->strings["Currently blocked"] = "";
-$a->strings["Currently ignored"] = "";
-$a->strings["Currently archived"] = "";
-$a->strings["Currently pending"] = "";
-$a->strings["Hide this contact from others"] = "";
-$a->strings["Replies/likes to your public posts <strong>may</strong> still be visible"] = "";
-$a->strings["This site is not a directory server"] = "";
-$a->strings["We encountered a problem while logging in with the OpenID you provided. Please check the correct spelling of the ID."] = "";
-$a->strings["The error message was:"] = "";
-$a->strings["Authentication failed."] = "";
-$a->strings["Remote Authentication"] = "";
-$a->strings["Enter your channel address (e.g. channel@example.com)"] = "";
-$a->strings["Authenticate"] = "";
-$a->strings["Item not available."] = "";
-$a->strings["Item is not editable"] = "";
-$a->strings["Delete item?"] = "";
+$a->strings["sent you a private message"] = "";
+$a->strings["added your channel"] = "";
+$a->strings["posted an event"] = "";
+$a->strings["network"] = "";
$a->strings["Name is required"] = "";
$a->strings["Key and Secret are required"] = "";
$a->strings["Passwords do not match. Password unchanged."] = "";
@@ -1109,7 +861,6 @@ $a->strings["Protected email address. Cannot change to that email."] = "";
$a->strings["System failure storing new email. Please try again."] = "";
$a->strings["Settings updated."] = "";
$a->strings["Add application"] = "";
-$a->strings["Name"] = "";
$a->strings["Name of application"] = "";
$a->strings["Consumer Key"] = "";
$a->strings["Automatically generated - change if desired. Max length 20"] = "";
@@ -1138,6 +889,7 @@ $a->strings["On"] = "";
$a->strings["Additional Features"] = "";
$a->strings["Connector Settings"] = "";
$a->strings["No special theme for mobile devices"] = "";
+$a->strings["%s - (Experimental)"] = "";
$a->strings["Display Settings"] = "";
$a->strings["Display Theme:"] = "";
$a->strings["Mobile Theme:"] = "";
@@ -1146,18 +898,20 @@ $a->strings["Minimum of 10 seconds, no maximum"] = "";
$a->strings["Maximum number of conversations to load at any time:"] = "";
$a->strings["Maximum of 100 items"] = "";
$a->strings["Don't show emoticons"] = "";
-$a->strings["Do not view remote profiles in frames"] = "";
-$a->strings["By default open in a sub-window of your own site"] = "";
$a->strings["System Page Layout Editor - (advanced)"] = "";
$a->strings["Nobody except yourself"] = "";
$a->strings["Only those you specifically allow"] = "";
-$a->strings["Anybody in your address book"] = "";
+$a->strings["Approved connections"] = "";
+$a->strings["Any connections"] = "";
$a->strings["Anybody on this website"] = "";
$a->strings["Anybody in this network"] = "";
$a->strings["Anybody authenticated"] = "";
$a->strings["Anybody on the internet"] = "";
$a->strings["Publish your default profile in the network directory"] = "";
+$a->strings["No"] = "";
+$a->strings["Yes"] = "";
$a->strings["Allow us to suggest you as a potential friend to new members?"] = "";
+$a->strings["or"] = "";
$a->strings["Your channel address is"] = "";
$a->strings["Channel Settings"] = "";
$a->strings["Basic Settings"] = "";
@@ -1204,6 +958,309 @@ $a->strings["Change the behaviour of this account for special situations"] = "";
$a->strings["Please enable expert mode (in <a href=\"settings/features\">Settings > Additional features</a>) to adjust!"] = "";
$a->strings["Miscellaneous Settings"] = "";
$a->strings["Personal menu to display in your channel pages"] = "";
+$a->strings["Remove this channel"] = "";
+$a->strings["Poke/Prod"] = "";
+$a->strings["poke, prod or do other things to somebody"] = "";
+$a->strings["Recipient"] = "";
+$a->strings["Choose what you wish to do to recipient"] = "";
+$a->strings["Make this post private"] = "";
+$a->strings["Authorize application connection"] = "";
+$a->strings["Return to your app and insert this Securty Code:"] = "";
+$a->strings["Please login to continue."] = "";
+$a->strings["Do you want to authorize this application to access your posts and contacts, and/or create new posts for you?"] = "";
+$a->strings["Remote authentication blocked. You are logged into this site locally. Please logout and retry."] = "";
+$a->strings["Welcome %s. Remote authentication successful."] = "";
+$a->strings["Item not available."] = "";
+$a->strings["Fetching URL returns error: %1\$s"] = "";
+$a->strings["Invalid item."] = "";
+$a->strings["Channel not found."] = "";
+$a->strings["Page not found."] = "";
+$a->strings["Image uploaded but image cropping failed."] = "";
+$a->strings["Image resize failed."] = "";
+$a->strings["Shift-reload the page or clear browser cache if the new photo does not display immediately."] = "";
+$a->strings["Image exceeds size limit of %d"] = "";
+$a->strings["Unable to process image."] = "";
+$a->strings["Photo not available."] = "";
+$a->strings["Upload File:"] = "";
+$a->strings["Select a profile:"] = "";
+$a->strings["Upload Profile Photo"] = "";
+$a->strings["skip this step"] = "";
+$a->strings["select a photo from your photo albums"] = "";
+$a->strings["Crop Image"] = "";
+$a->strings["Please adjust the image cropping for optimum viewing."] = "";
+$a->strings["Done Editing"] = "";
+$a->strings["Image uploaded successfully."] = "";
+$a->strings["Image upload failed."] = "";
+$a->strings["Image size reduction [%s] failed."] = "";
+$a->strings["Block Name"] = "";
+$a->strings["Profile not found."] = "";
+$a->strings["Profile deleted."] = "";
+$a->strings["Profile-"] = "";
+$a->strings["New profile created."] = "";
+$a->strings["Profile unavailable to clone."] = "";
+$a->strings["Profile unavailable to export."] = "";
+$a->strings["Profile Name is required."] = "";
+$a->strings["Marital Status"] = "";
+$a->strings["Romantic Partner"] = "";
+$a->strings["Likes"] = "";
+$a->strings["Dislikes"] = "";
+$a->strings["Work/Employment"] = "";
+$a->strings["Religion"] = "";
+$a->strings["Political Views"] = "";
+$a->strings["Gender"] = "";
+$a->strings["Sexual Preference"] = "";
+$a->strings["Homepage"] = "";
+$a->strings["Interests"] = "";
+$a->strings["Address"] = "";
+$a->strings["Location"] = "";
+$a->strings["Profile updated."] = "";
+$a->strings["Hide your contact/friend list from viewers of this profile?"] = "";
+$a->strings["Edit Profile Details"] = "";
+$a->strings["View this profile"] = "";
+$a->strings["Change Profile Photo"] = "";
+$a->strings["Create a new profile using these settings"] = "";
+$a->strings["Clone this profile"] = "";
+$a->strings["Delete this profile"] = "";
+$a->strings["Import profile from file"] = "";
+$a->strings["Export profile to file"] = "";
+$a->strings["Profile Name:"] = "";
+$a->strings["Your Full Name:"] = "";
+$a->strings["Title/Description:"] = "";
+$a->strings["Your Gender:"] = "";
+$a->strings["Birthday (%s):"] = "";
+$a->strings["Street Address:"] = "";
+$a->strings["Locality/City:"] = "";
+$a->strings["Postal/Zip Code:"] = "";
+$a->strings["Country:"] = "";
+$a->strings["Region/State:"] = "";
+$a->strings["<span class=\"heart\">&hearts;</span> Marital Status:"] = "";
+$a->strings["Who: (if applicable)"] = "";
+$a->strings["Examples: cathy123, Cathy Williams, cathy@example.com"] = "";
+$a->strings["Since [date]:"] = "";
+$a->strings["Homepage URL:"] = "";
+$a->strings["Religious Views:"] = "";
+$a->strings["Keywords:"] = "";
+$a->strings["Example: fishing photography software"] = "";
+$a->strings["Used in directory listings"] = "";
+$a->strings["Tell us about yourself..."] = "";
+$a->strings["Hobbies/Interests"] = "";
+$a->strings["Contact information and Social Networks"] = "";
+$a->strings["My other channels"] = "";
+$a->strings["Musical interests"] = "";
+$a->strings["Books, literature"] = "";
+$a->strings["Television"] = "";
+$a->strings["Film/dance/culture/entertainment"] = "";
+$a->strings["Love/romance"] = "";
+$a->strings["Work/employment"] = "";
+$a->strings["School/education"] = "";
+$a->strings["This is your <strong>public</strong> profile.<br />It <strong>may</strong> be visible to anybody using the internet."] = "";
+$a->strings["Age: "] = "";
+$a->strings["Edit/Manage Profiles"] = "";
+$a->strings["Add profile things"] = "";
+$a->strings["Include desirable objects in your profile"] = "";
+$a->strings["Bookmark added"] = "";
+$a->strings["My Bookmarks"] = "";
+$a->strings["My Connections Bookmarks"] = "";
+$a->strings["Invalid profile identifier."] = "";
+$a->strings["Profile Visibility Editor"] = "";
+$a->strings["Click on a contact to add or remove."] = "";
+$a->strings["Visible To"] = "";
+$a->strings["All Connections"] = "";
+$a->strings["Public Sites"] = "";
+$a->strings["The listed sites allow public registration into the Red Matrix. All sites in the matrix are interlinked so membership on any of them conveys membership in the matrix as a whole. Some sites may require subscription or provide tiered service plans. The provider links <strong>may</strong> provide additional details."] = "";
+$a->strings["Site URL"] = "";
+$a->strings["Access Type"] = "";
+$a->strings["Registration Policy"] = "";
+$a->strings["You must be logged in to see this page."] = "";
+$a->strings["Insufficient permissions. Request redirected to profile page."] = "";
+$a->strings["Select a bookmark folder"] = "";
+$a->strings["Save Bookmark"] = "";
+$a->strings["URL of bookmark"] = "";
+$a->strings["Description"] = "";
+$a->strings["Or enter new bookmark folder name"] = "";
+$a->strings["Room not found"] = "";
+$a->strings["Leave Room"] = "";
+$a->strings["Delete This Room"] = "";
+$a->strings["I am away right now"] = "";
+$a->strings["I am online"] = "";
+$a->strings["Bookmark this room"] = "";
+$a->strings["New Chatroom"] = "";
+$a->strings["Chatroom Name"] = "";
+$a->strings["%1\$s's Chatrooms"] = "";
+$a->strings["Maximum daily site registrations exceeded. Please try again tomorrow."] = "";
+$a->strings["Please indicate acceptance of the Terms of Service. Registration failed."] = "";
+$a->strings["Passwords do not match."] = "";
+$a->strings["Registration successful. Please check your email for validation instructions."] = "";
+$a->strings["Your registration is pending approval by the site owner."] = "";
+$a->strings["Your registration can not be processed."] = "";
+$a->strings["Registration on this site/hub is by approval only."] = "";
+$a->strings["<a href=\"pubsites\">Register at another affiliated site/hub</a>"] = "";
+$a->strings["This site has exceeded the number of allowed daily account registrations. Please try again tomorrow."] = "";
+$a->strings["Terms of Service"] = "";
+$a->strings["I accept the %s for this website"] = "";
+$a->strings["I am over 13 years of age and accept the %s for this website"] = "";
+$a->strings["Registration"] = "";
+$a->strings["Membership on this site is by invitation only."] = "";
+$a->strings["Please enter your invitation code"] = "";
+$a->strings["Your email address"] = "";
+$a->strings["Choose a password"] = "";
+$a->strings["Please re-enter your password"] = "";
+$a->strings["Away"] = "";
+$a->strings["Online"] = "";
+$a->strings["Please login."] = "";
+$a->strings["Red Matrix - Guests: Username: {your email address}, Password: +++"] = "";
+$a->strings["Channel removals are not allowed within 48 hours of changing the account password."] = "";
+$a->strings["Remove This Channel"] = "";
+$a->strings["This will completely remove this channel from the network. Once this has been done it is not recoverable."] = "";
+$a->strings["Please enter your password for verification:"] = "";
+$a->strings["Remove this channel and all its clones from the network"] = "";
+$a->strings["By default only the instance of the channel located on this hub will be removed from the network"] = "";
+$a->strings["Remove Channel"] = "";
+$a->strings["No channel."] = "";
+$a->strings["Common connections"] = "";
+$a->strings["No connections in common."] = "";
+$a->strings["We encountered a problem while logging in with the OpenID you provided. Please check the correct spelling of the ID."] = "";
+$a->strings["The error message was:"] = "";
+$a->strings["Authentication failed."] = "";
+$a->strings["Remote Authentication"] = "";
+$a->strings["Enter your channel address (e.g. channel@example.com)"] = "";
+$a->strings["Authenticate"] = "";
+$a->strings["Continue"] = "";
+$a->strings["Premium Channel Setup"] = "";
+$a->strings["Enable premium channel connection restrictions"] = "";
+$a->strings["Please enter your restrictions or conditions, such as paypal receipt, usage guidelines, etc."] = "";
+$a->strings["This channel may require additional steps or acknowledgement of the following conditions prior to connecting:"] = "";
+$a->strings["Potential connections will then see the following text before proceeding:"] = "";
+$a->strings["By continuing, I certify that I have complied with any instructions provided on this page."] = "";
+$a->strings["(No specific instructions have been provided by the channel owner.)"] = "";
+$a->strings["Restricted or Premium Channel"] = "";
+$a->strings["No such group"] = "";
+$a->strings["Search Results For:"] = "";
+$a->strings["Collection is empty"] = "";
+$a->strings["Collection: "] = "";
+$a->strings["Connection: "] = "";
+$a->strings["Invalid connection."] = "";
+$a->strings["Could not access contact record."] = "";
+$a->strings["Could not locate selected profile."] = "";
+$a->strings["Connection updated."] = "";
+$a->strings["Failed to update connection record."] = "";
+$a->strings["Blocked"] = "";
+$a->strings["Ignored"] = "";
+$a->strings["Hidden"] = "";
+$a->strings["Archived"] = "";
+$a->strings["All"] = "";
+$a->strings["Suggest new connections"] = "";
+$a->strings["New Connections"] = "";
+$a->strings["Show pending (new) connections"] = "";
+$a->strings["Show all connections"] = "";
+$a->strings["Unblocked"] = "";
+$a->strings["Only show unblocked connections"] = "";
+$a->strings["Only show blocked connections"] = "";
+$a->strings["Only show ignored connections"] = "";
+$a->strings["Only show archived connections"] = "";
+$a->strings["Only show hidden connections"] = "";
+$a->strings["%1\$s [%2\$s]"] = "";
+$a->strings["Edit contact"] = "";
+$a->strings["Search your connections"] = "";
+$a->strings["Finding: "] = "";
+$a->strings["Edit post"] = "";
+$a->strings["is now connected to"] = "";
+$a->strings["Could not access address book record."] = "";
+$a->strings["Refresh failed - channel is currently unavailable."] = "";
+$a->strings["Channel has been unblocked"] = "";
+$a->strings["Channel has been blocked"] = "";
+$a->strings["Unable to set address book parameters."] = "";
+$a->strings["Channel has been unignored"] = "";
+$a->strings["Channel has been ignored"] = "";
+$a->strings["Channel has been unarchived"] = "";
+$a->strings["Channel has been archived"] = "";
+$a->strings["Channel has been unhidden"] = "";
+$a->strings["Channel has been hidden"] = "";
+$a->strings["Channel has been approved"] = "";
+$a->strings["Channel has been unapproved"] = "";
+$a->strings["Connection has been removed."] = "";
+$a->strings["View %s's profile"] = "";
+$a->strings["Refresh Permissions"] = "";
+$a->strings["Fetch updated permissions"] = "";
+$a->strings["Recent Activity"] = "";
+$a->strings["View recent posts and comments"] = "";
+$a->strings["Unblock"] = "";
+$a->strings["Block"] = "";
+$a->strings["Block or Unblock this connection"] = "";
+$a->strings["Unignore"] = "";
+$a->strings["Ignore"] = "";
+$a->strings["Ignore or Unignore this connection"] = "";
+$a->strings["Unarchive"] = "";
+$a->strings["Archive"] = "";
+$a->strings["Archive or Unarchive this connection"] = "";
+$a->strings["Unhide"] = "";
+$a->strings["Hide"] = "";
+$a->strings["Hide or Unhide this connection"] = "";
+$a->strings["Delete this connection"] = "";
+$a->strings["Approve this connection"] = "";
+$a->strings["Accept connection to allow communication"] = "";
+$a->strings["Automatic Permissions Settings"] = "";
+$a->strings["Connections: settings for %s"] = "";
+$a->strings["When receiving a channel introduction, any permissions provided here will be applied to the new connection automatically and the introduction approved. Leave this page if you do not wish to use this feature."] = "";
+$a->strings["Slide to adjust your degree of friendship"] = "";
+$a->strings["inherited"] = "";
+$a->strings["Connection has no individual permissions!"] = "";
+$a->strings["This may be appropriate based on your <a href=\"settings\">privacy settings</a>, though you may wish to review the \"Advanced Permissions\"."] = "";
+$a->strings["Profile Visibility"] = "";
+$a->strings["Please choose the profile you would like to display to %s when viewing your profile securely."] = "";
+$a->strings["Contact Information / Notes"] = "";
+$a->strings["Edit contact notes"] = "";
+$a->strings["Their Settings"] = "";
+$a->strings["My Settings"] = "";
+$a->strings["Clear/Disable Automatic Permissions"] = "";
+$a->strings["Forum Members"] = "";
+$a->strings["Soapbox"] = "";
+$a->strings["Full Sharing (typical social network permissions)"] = "";
+$a->strings["Cautious Sharing "] = "";
+$a->strings["Follow Only"] = "";
+$a->strings["Individual Permissions"] = "";
+$a->strings["Some permissions may be inherited from your channel <a href=\"settings\">privacy settings</a>, which have higher priority than individual settings. Changing those inherited settings on this page will have no effect."] = "";
+$a->strings["Advanced Permissions"] = "";
+$a->strings["Simple Permissions (select one and submit)"] = "";
+$a->strings["Visit %s's profile - %s"] = "";
+$a->strings["Block/Unblock contact"] = "";
+$a->strings["Ignore contact"] = "";
+$a->strings["Repair URL settings"] = "";
+$a->strings["View conversations"] = "";
+$a->strings["Delete contact"] = "";
+$a->strings["Last update:"] = "";
+$a->strings["Update public posts"] = "";
+$a->strings["Update now"] = "";
+$a->strings["Currently blocked"] = "";
+$a->strings["Currently ignored"] = "";
+$a->strings["Currently archived"] = "";
+$a->strings["Currently pending"] = "";
+$a->strings["Hide this contact from others"] = "";
+$a->strings["Replies/likes to your public posts <strong>may</strong> still be visible"] = "";
+$a->strings["No potential page delegates located."] = "";
+$a->strings["Delegate Page Management"] = "";
+$a->strings["Delegates are able to manage all aspects of this account/page except for basic account settings. Please do not delegate your personal account to anybody that you do not trust completely."] = "";
+$a->strings["Existing Page Managers"] = "";
+$a->strings["Existing Page Delegates"] = "";
+$a->strings["Potential Delegates"] = "";
+$a->strings["Remove"] = "";
+$a->strings["Add"] = "";
+$a->strings["No entries."] = "";
+$a->strings["Public access denied."] = "";
+$a->strings["Gender: "] = "";
+$a->strings["Finding:"] = "";
+$a->strings["next page"] = "";
+$a->strings["previous page"] = "";
+$a->strings["No entries (some entries may be hidden)."] = "";
+$a->strings["Status: "] = "";
+$a->strings["Sexual Preference: "] = "";
+$a->strings["Homepage: "] = "";
+$a->strings["Hometown: "] = "";
+$a->strings["About: "] = "";
+$a->strings["Keywords: "] = "";
+$a->strings["This site is not a directory server"] = "";
+$a->strings["Red Matrix - &quot;The Network&quot;"] = "";
+$a->strings["Welcome to %s"] = "";
$a->strings["Red Matrix Server - Setup"] = "";
$a->strings["Could not connect to database."] = "";
$a->strings["Could not connect to specified site URL. Possible SSL certificate or DNS issue."] = "";
@@ -1264,16 +1321,16 @@ $a->strings["At the end of this procedure, we will give you a text to save in a
$a->strings["You can alternatively skip this procedure and perform a manual installation. Please see the file \"install/INSTALL.txt\" for instructions."] = "";
$a->strings[".htconfig.php is writable"] = "";
$a->strings["Red uses the Smarty3 template engine to render its web views. Smarty3 compiles templates to PHP to speed up rendering."] = "";
-$a->strings["In order to store these compiled templates, the web server needs to have write access to the directory view/tpl/smarty3/ under the Red top level folder."] = "";
+$a->strings["In order to store these compiled templates, the web server needs to have write access to the directory %s under the Red top level folder."] = "";
$a->strings["Please ensure that the user that your web server runs as (e.g. www-data) has write access to this folder."] = "";
-$a->strings["Note: as a security measure, you should give the web server write access to view/tpl/smarty3/ only--not the template files (.tpl) that it contains."] = "";
-$a->strings["view/tpl/smarty3 is writable"] = "";
+$a->strings["Note: as a security measure, you should give the web server write access to %s only--not the template files (.tpl) that it contains."] = "";
+$a->strings["%s is writable"] = "";
$a->strings["Red uses the store directory to save uploaded files. The web server needs to have write access to the store directory under the Red top level folder"] = "";
$a->strings["store is writable"] = "";
$a->strings["SSL certificate cannot be validated. Fix certificate or disable https access to this site."] = "";
$a->strings["If you have https access to your website or allow connections to TCP port 443 (the https: port), you MUST use a browser-valid certificate. You MUST NOT use self-signed certificates!"] = "";
$a->strings["This restriction is incorporated because public posts from you may for example contain references to images on your own hub."] = "";
-$a->strings["If your certificate is not recognised, members of other sites (who may themselves have valid certificates) will get a warning message on their own site complaining about security issues."] = "";
+$a->strings["If your certificate is not recognized, members of other sites (who may themselves have valid certificates) will get a warning message on their own site complaining about security issues."] = "";
$a->strings["This can cause usability issues elsewhere (not just on your own site) so we must insist on this requirement."] = "";
$a->strings["Providers are available that issue free certificates which are browser-valid."] = "";
$a->strings["SSL certificate validation"] = "";
@@ -1283,22 +1340,36 @@ $a->strings["The database configuration file \".htconfig.php\" could not be writ
$a->strings["Errors encountered creating database tables."] = "";
$a->strings["<h1>What next</h1>"] = "";
$a->strings["IMPORTANT: You will need to [manually] setup a scheduled task for the poller."] = "";
-$a->strings["Event title and start time are required."] = "";
-$a->strings["l, F j"] = "";
-$a->strings["Edit event"] = "";
-$a->strings["Create New Event"] = "";
-$a->strings["Previous"] = "";
-$a->strings["hour:minute"] = "";
-$a->strings["Event details"] = "";
-$a->strings["Format is %s %s. Starting date and Title are required."] = "";
-$a->strings["Event Starts:"] = "";
-$a->strings["Required"] = "";
-$a->strings["Finish date/time is not known or not relevant"] = "";
-$a->strings["Event Finishes:"] = "";
-$a->strings["Adjust for viewer timezone"] = "";
-$a->strings["Description:"] = "";
-$a->strings["Title:"] = "";
-$a->strings["Share this event"] = "";
+$a->strings["Item not found"] = "";
+$a->strings["Edit Block"] = "";
+$a->strings["Delete block?"] = "";
+$a->strings["Insert YouTube video"] = "";
+$a->strings["Insert Vorbis [.ogg] video"] = "";
+$a->strings["Insert Vorbis [.ogg] audio"] = "";
+$a->strings["Delete Block"] = "";
+$a->strings["Layout updated."] = "";
+$a->strings["Edit System Page Description"] = "";
+$a->strings["Layout not found."] = "";
+$a->strings["Module Name:"] = "";
+$a->strings["Layout Help"] = "";
+$a->strings["Edit Layout"] = "";
+$a->strings["Delete layout?"] = "";
+$a->strings["Delete Layout"] = "";
+$a->strings["Item is not editable"] = "";
+$a->strings["Delete item?"] = "";
+$a->strings["Edit Webpage"] = "";
+$a->strings["Delete webpage?"] = "";
+$a->strings["Delete Webpage"] = "";
+$a->strings["Version %s"] = "";
+$a->strings["Installed plugins/addons/apps:"] = "";
+$a->strings["No installed plugins/addons/apps"] = "";
+$a->strings["Red"] = "";
+$a->strings["This is a hub of the Red Matrix - a global cooperative network of decentralized privacy enhanced websites."] = "";
+$a->strings["Running at web location"] = "";
+$a->strings["Please visit <a href=\"http://getzot.com\">GetZot.com</a> to learn more about the Red Matrix."] = "";
+$a->strings["Bug reports and issues: please visit"] = "";
+$a->strings["Suggestions, praise, etc. - please email \"redmatrix\" at librelist - dot com"] = "";
+$a->strings["Site Administrators"] = "";
$a->strings["Page owner information could not be retrieved."] = "";
$a->strings["Album not found."] = "";
$a->strings["Delete Album"] = "";
@@ -1330,224 +1401,72 @@ $a->strings["Example: @bob, @Barbara_Jensen, @jim@example.com, #California, #cam
$a->strings["In This Photo:"] = "";
$a->strings["View Album"] = "";
$a->strings["Recent Photos"] = "";
+$a->strings["Failed to create source. No channel selected."] = "";
+$a->strings["Source created."] = "";
+$a->strings["Source updated."] = "";
+$a->strings["*"] = "";
+$a->strings["Manage remote sources of content for your channel."] = "";
+$a->strings["New Source"] = "";
+$a->strings["Import all or selected content from the following channel into this channel and distribute it according to your channel settings."] = "";
+$a->strings["Only import content with these words (one per line)"] = "";
+$a->strings["Leave blank to import all public content"] = "";
+$a->strings["Channel Name"] = "";
+$a->strings["Source not found."] = "";
+$a->strings["Edit Source"] = "";
+$a->strings["Delete Source"] = "";
+$a->strings["Source removed"] = "";
+$a->strings["Unable to remove source."] = "";
+$a->strings["- select -"] = "";
+$a->strings["Event title and start time are required."] = "";
+$a->strings["Event not found."] = "";
+$a->strings["l, F j"] = "";
+$a->strings["Edit event"] = "";
+$a->strings["Create New Event"] = "";
+$a->strings["Previous"] = "";
+$a->strings["hour:minute"] = "";
+$a->strings["Event details"] = "";
+$a->strings["Format is %s %s. Starting date and Title are required."] = "";
+$a->strings["Event Starts:"] = "";
+$a->strings["Required"] = "";
+$a->strings["Finish date/time is not known or not relevant"] = "";
+$a->strings["Event Finishes:"] = "";
+$a->strings["Adjust for viewer timezone"] = "";
+$a->strings["Description:"] = "";
+$a->strings["Title:"] = "";
+$a->strings["Share this event"] = "";
+$a->strings["Permission Denied."] = "";
+$a->strings["File not found."] = "";
+$a->strings["Edit file permissions"] = "";
+$a->strings["Set/edit permissions"] = "";
+$a->strings["Include all files and sub folders"] = "";
+$a->strings["Return to file list"] = "";
+$a->strings["Copy/paste this code to attach file to a post"] = "";
+$a->strings["Copy/paste this URL to link file from a web page"] = "";
+$a->strings["Channel added."] = "";
+$a->strings["%1\$s is following %2\$s's %3\$s"] = "";
+$a->strings["Contact not found."] = "";
+$a->strings["Friend suggestion sent."] = "";
+$a->strings["Suggest Friends"] = "";
+$a->strings["Suggest a friend for %s"] = "";
+$a->strings["No suggestions available. If this is a new site, please try again in 24 hours."] = "";
+$a->strings["Collection created."] = "";
+$a->strings["Could not create collection."] = "";
+$a->strings["Collection updated."] = "";
+$a->strings["Create a collection of channels."] = "";
+$a->strings["Collection Name: "] = "";
+$a->strings["Members are visible to other channels"] = "";
+$a->strings["Collection removed."] = "";
+$a->strings["Unable to remove collection."] = "";
+$a->strings["Collection Editor"] = "";
+$a->strings["Members"] = "";
+$a->strings["All Connected Channels"] = "";
+$a->strings["Click on a channel to add or remove."] = "";
+$a->strings["%1\$s tagged %2\$s's %3\$s with %4\$s"] = "";
$a->strings["Help:"] = "";
$a->strings["Not Found"] = "";
-$a->strings["sent you a private message"] = "";
-$a->strings["added your channel"] = "";
-$a->strings["posted an event"] = "";
-$a->strings["No valid account found."] = "";
-$a->strings["Password reset request issued. Check your email."] = "";
-$a->strings["Site Member (%s)"] = "";
-$a->strings["Password reset requested at %s"] = "";
-$a->strings["Request could not be verified. (You may have previously submitted it.) Password reset failed."] = "";
-$a->strings["Password Reset"] = "";
-$a->strings["Your password has been reset as requested."] = "";
-$a->strings["Your new password is"] = "";
-$a->strings["Save or copy your new password - and then"] = "";
-$a->strings["click here to login"] = "";
-$a->strings["Your password may be changed from the <em>Settings</em> page after successful login."] = "";
-$a->strings["Your password has changed at %s"] = "";
-$a->strings["Forgot your Password?"] = "";
-$a->strings["Enter your email address and submit to have your password reset. Then check your email for further instructions."] = "";
-$a->strings["Email Address"] = "";
-$a->strings["Reset"] = "";
-$a->strings["Remove This Channel"] = "";
-$a->strings["This will completely remove this channel from the network. Once this has been done it is not recoverable."] = "";
-$a->strings["Please enter your password for verification:"] = "";
-$a->strings["Remove this channel and all its clones from the network"] = "";
-$a->strings["By default only the instance of the channel located on this hub will be removed from the network"] = "";
-$a->strings["Remove Channel"] = "";
-$a->strings["No potential page delegates located."] = "";
-$a->strings["Delegate Page Management"] = "";
-$a->strings["Delegates are able to manage all aspects of this account/page except for basic account settings. Please do not delegate your personal account to anybody that you do not trust completely."] = "";
-$a->strings["Existing Page Managers"] = "";
-$a->strings["Existing Page Delegates"] = "";
-$a->strings["Potential Delegates"] = "";
-$a->strings["Add"] = "";
-$a->strings["No entries."] = "";
-$a->strings["Help with this feature"] = "";
-$a->strings["Layout Name"] = "";
-$a->strings["Blocked"] = "";
-$a->strings["Ignored"] = "";
-$a->strings["Hidden"] = "";
-$a->strings["Archived"] = "";
-$a->strings["All"] = "";
-$a->strings["Unconnected"] = "";
-$a->strings["Suggest new connections"] = "";
-$a->strings["New Connections"] = "";
-$a->strings["Show pending (new) connections"] = "";
-$a->strings["Show all connections"] = "";
-$a->strings["Unblocked"] = "";
-$a->strings["Only show unblocked connections"] = "";
-$a->strings["Only show blocked connections"] = "";
-$a->strings["Only show ignored connections"] = "";
-$a->strings["Only show archived connections"] = "";
-$a->strings["Only show hidden connections"] = "";
-$a->strings["Only show one-way connections"] = "";
-$a->strings["%1\$s [%2\$s]"] = "";
-$a->strings["Edit contact"] = "";
-$a->strings["Search your connections"] = "";
-$a->strings["Finding: "] = "";
-$a->strings["Nothing to import."] = "";
-$a->strings["Unable to download data from old server"] = "";
-$a->strings["Imported file is empty."] = "";
-$a->strings["Cannot create a duplicate channel identifier on this system. Import failed."] = "";
-$a->strings["Channel clone failed. Import failed."] = "";
-$a->strings["Cloned channel not found. Import failed."] = "";
-$a->strings["Import completed."] = "";
-$a->strings["You must be logged in to use this feature."] = "";
-$a->strings["Import Channel"] = "";
-$a->strings["Use this form to import an existing channel from a different server/hub. You may retrieve the channel identity from the old server/hub via the network or provide an export file. Only identity and connections/relationships will be imported. Importation of content is not yet available."] = "";
-$a->strings["File to Upload"] = "";
-$a->strings["Or provide the old server/hub details"] = "";
-$a->strings["Your old identity address (xyz@example.com)"] = "";
-$a->strings["Your old login email address"] = "";
-$a->strings["Your old login password"] = "";
-$a->strings["For either option, please choose whether to make this hub your new primary address, or whether your old location should continue this role. You will be able to post from either location, but only one can be marked as the primary location for files, photos, and media."] = "";
-$a->strings["Make this hub my primary location"] = "";
-$a->strings["Mood"] = "";
-$a->strings["Set your current mood and tell your friends"] = "";
-$a->strings["Room not found"] = "";
-$a->strings["Leave Room"] = "";
-$a->strings["Delete This Room"] = "";
-$a->strings["I am away right now"] = "";
-$a->strings["I am online"] = "";
-$a->strings["Bookmark this room"] = "";
-$a->strings["New Chatroom"] = "";
-$a->strings["Chatroom Name"] = "";
-$a->strings["%1\$s's Chatrooms"] = "";
-$a->strings["Edit Block"] = "";
-$a->strings["Delete block?"] = "";
-$a->strings["Delete Block"] = "";
-$a->strings["Profile Match"] = "";
-$a->strings["No keywords to match. Please add keywords to your default profile."] = "";
-$a->strings["is interested in:"] = "";
-$a->strings["No matches"] = "";
-$a->strings["Away"] = "";
-$a->strings["Online"] = "";
-$a->strings["Edit Webpage"] = "";
-$a->strings["Delete webpage?"] = "";
-$a->strings["Delete Webpage"] = "";
-$a->strings["Profile not found."] = "";
-$a->strings["Profile deleted."] = "";
-$a->strings["Profile-"] = "";
-$a->strings["New profile created."] = "";
-$a->strings["Profile unavailable to clone."] = "";
-$a->strings["Profile Name is required."] = "";
-$a->strings["Marital Status"] = "";
-$a->strings["Romantic Partner"] = "";
-$a->strings["Likes"] = "";
-$a->strings["Dislikes"] = "";
-$a->strings["Work/Employment"] = "";
-$a->strings["Religion"] = "";
-$a->strings["Political Views"] = "";
-$a->strings["Gender"] = "";
-$a->strings["Sexual Preference"] = "";
-$a->strings["Homepage"] = "";
-$a->strings["Interests"] = "";
-$a->strings["Address"] = "";
-$a->strings["Profile updated."] = "";
-$a->strings["Hide your contact/friend list from viewers of this profile?"] = "";
-$a->strings["Edit Profile Details"] = "";
-$a->strings["View this profile"] = "";
-$a->strings["Change Profile Photo"] = "";
-$a->strings["Create a new profile using these settings"] = "";
-$a->strings["Clone this profile"] = "";
-$a->strings["Delete this profile"] = "";
-$a->strings["Profile Name:"] = "";
-$a->strings["Your Full Name:"] = "";
-$a->strings["Title/Description:"] = "";
-$a->strings["Your Gender:"] = "";
-$a->strings["Birthday (%s):"] = "";
-$a->strings["Street Address:"] = "";
-$a->strings["Locality/City:"] = "";
-$a->strings["Postal/Zip Code:"] = "";
-$a->strings["Country:"] = "";
-$a->strings["Region/State:"] = "";
-$a->strings["<span class=\"heart\">&hearts;</span> Marital Status:"] = "";
-$a->strings["Who: (if applicable)"] = "";
-$a->strings["Examples: cathy123, Cathy Williams, cathy@example.com"] = "";
-$a->strings["Since [date]:"] = "";
-$a->strings["Homepage URL:"] = "";
-$a->strings["Religious Views:"] = "";
-$a->strings["Keywords:"] = "";
-$a->strings["Example: fishing photography software"] = "";
-$a->strings["Used in directory listings"] = "";
-$a->strings["Tell us about yourself..."] = "";
-$a->strings["Hobbies/Interests"] = "";
-$a->strings["Contact information and Social Networks"] = "";
-$a->strings["My other channels"] = "";
-$a->strings["Musical interests"] = "";
-$a->strings["Books, literature"] = "";
-$a->strings["Television"] = "";
-$a->strings["Film/dance/culture/entertainment"] = "";
-$a->strings["Love/romance"] = "";
-$a->strings["Work/employment"] = "";
-$a->strings["School/education"] = "";
-$a->strings["This is your <strong>public</strong> profile.<br />It <strong>may</strong> be visible to anybody using the internet."] = "";
-$a->strings["Edit/Manage Profiles"] = "";
-$a->strings["Add profile things"] = "";
-$a->strings["Include desirable objects in your profile"] = "";
-$a->strings["Menu updated."] = "";
-$a->strings["Unable to update menu."] = "";
-$a->strings["Menu created."] = "";
-$a->strings["Unable to create menu."] = "";
-$a->strings["Manage Menus"] = "";
-$a->strings["Drop"] = "";
-$a->strings["Create a new menu"] = "";
-$a->strings["Delete this menu"] = "";
-$a->strings["Edit menu contents"] = "";
-$a->strings["Edit this menu"] = "";
-$a->strings["New Menu"] = "";
-$a->strings["Menu name"] = "";
-$a->strings["Must be unique, only seen by you"] = "";
-$a->strings["Menu title"] = "";
-$a->strings["Menu title as seen by others"] = "";
-$a->strings["Allow bookmarks"] = "";
-$a->strings["Menu may be used to store saved bookmarks"] = "";
-$a->strings["Menu deleted."] = "";
-$a->strings["Menu could not be deleted."] = "";
-$a->strings["Edit Menu"] = "";
-$a->strings["Add or remove entries to this menu"] = "";
-$a->strings["OpenID protocol error. No ID returned."] = "";
-$a->strings["Red Matrix - Guests: Username: {your email address}, Password: +++"] = "";
-$a->strings["Unable to lookup recipient."] = "";
-$a->strings["Unable to communicate with requested channel."] = "";
-$a->strings["Cannot verify requested channel."] = "";
-$a->strings["Selected channel has private message restrictions. Send failed."] = "";
-$a->strings["Message deleted."] = "";
-$a->strings["Message recalled."] = "";
-$a->strings["Send Private Message"] = "";
-$a->strings["To:"] = "";
-$a->strings["Subject:"] = "";
-$a->strings["Your message:"] = "";
-$a->strings["Message not found."] = "";
-$a->strings["Recall message"] = "";
-$a->strings["Message has been recalled."] = "";
-$a->strings["Private Conversation"] = "";
-$a->strings["Delete conversation"] = "";
-$a->strings["No secure communications available. You <strong>may</strong> be able to respond from the sender's profile page."] = "";
-$a->strings["Send Reply"] = "";
-$a->strings["App installed."] = "";
-$a->strings["Malformed app."] = "";
-$a->strings["Embed code"] = "";
-$a->strings["Create App"] = "";
-$a->strings["Name of app"] = "";
-$a->strings["Location (URL) of app"] = "";
-$a->strings["Description"] = "";
-$a->strings["Photo icon URL"] = "";
-$a->strings["80 x 80 pixels - optional"] = "";
-$a->strings["Version ID"] = "";
-$a->strings["Price of app"] = "";
-$a->strings["Location (URL) to purchase app"] = "";
-$a->strings["Poke/Prod"] = "";
-$a->strings["poke, prod or do other things to somebody"] = "";
-$a->strings["Recipient"] = "";
-$a->strings["Choose what you wish to do to recipient"] = "";
-$a->strings["Make this post private"] = "";
-$a->strings["No connections."] = "";
-$a->strings["Visit %s's profile [%s]"] = "";
-$a->strings["View Connnections"] = "";
+$a->strings["Tag removed"] = "";
+$a->strings["Remove Item Tag"] = "";
+$a->strings["Select a tag to remove: "] = "";
$a->strings["Theme settings updated."] = "";
$a->strings["Site"] = "";
$a->strings["Accounts"] = "";
@@ -1573,7 +1492,6 @@ $a->strings["My site is not a public server"] = "";
$a->strings["My site has paid access only"] = "";
$a->strings["My site has free access only"] = "";
$a->strings["My site offers free accounts with optional paid upgrades"] = "";
-$a->strings["Registration"] = "";
$a->strings["File upload"] = "";
$a->strings["Policies"] = "";
$a->strings["Site name"] = "";
@@ -1692,31 +1610,37 @@ $a->strings["Debugging"] = "";
$a->strings["Log file"] = "";
$a->strings["Must be writable by web server. Relative to your Red top-level directory."] = "";
$a->strings["Log level"] = "";
-$a->strings["Maximum daily site registrations exceeded. Please try again tomorrow."] = "";
-$a->strings["Please indicate acceptance of the Terms of Service. Registration failed."] = "";
-$a->strings["Passwords do not match."] = "";
-$a->strings["Registration successful. Please check your email for validation instructions."] = "";
-$a->strings["Your registration is pending approval by the site owner."] = "";
-$a->strings["Your registration can not be processed."] = "";
-$a->strings["Registration on this site/hub is by approval only."] = "";
-$a->strings["<a href=\"pubsites\">Register at another affiliated site/hub</a>"] = "";
-$a->strings["This site has exceeded the number of allowed daily account registrations. Please try again tomorrow."] = "";
-$a->strings["Terms of Service"] = "";
-$a->strings["I accept the %s for this website"] = "";
-$a->strings["I am over 13 years of age and accept the %s for this website"] = "";
-$a->strings["Membership on this site is by invitation only."] = "";
-$a->strings["Please enter your invitation code"] = "";
-$a->strings["Your email address"] = "";
-$a->strings["Choose a password"] = "";
-$a->strings["Please re-enter your password"] = "";
-$a->strings["- select -"] = "";
-$a->strings["You have created %1$.0f of %2$.0f allowed channels."] = "";
-$a->strings["Create a new channel"] = "";
-$a->strings["Channel Manager"] = "";
-$a->strings["Current Channel"] = "";
-$a->strings["Attach to one of your channels by selecting it."] = "";
-$a->strings["Default Channel"] = "";
-$a->strings["Make Default"] = "";
+$a->strings["Thing updated"] = "";
+$a->strings["Object store: failed"] = "";
+$a->strings["Thing added"] = "";
+$a->strings["OBJ: %1\$s %2\$s %3\$s"] = "";
+$a->strings["Show Thing"] = "";
+$a->strings["item not found."] = "";
+$a->strings["Edit Thing"] = "";
+$a->strings["Select a profile"] = "";
+$a->strings["Post an activity"] = "";
+$a->strings["Only sends to viewers of the applicable profile"] = "";
+$a->strings["Name of thing e.g. something"] = "";
+$a->strings["URL of thing (optional)"] = "";
+$a->strings["URL for photo of thing (optional)"] = "";
+$a->strings["Add Thing to your Profile"] = "";
+$a->strings["Nothing to import."] = "";
+$a->strings["Unable to download data from old server"] = "";
+$a->strings["Imported file is empty."] = "";
+$a->strings["Cannot create a duplicate channel identifier on this system. Import failed."] = "";
+$a->strings["Channel clone failed. Import failed."] = "";
+$a->strings["Cloned channel not found. Import failed."] = "";
+$a->strings["Import completed."] = "";
+$a->strings["You must be logged in to use this feature."] = "";
+$a->strings["Import Channel"] = "";
+$a->strings["Use this form to import an existing channel from a different server/hub. You may retrieve the channel identity from the old server/hub via the network or provide an export file. Only identity and connections/relationships will be imported. Importation of content is not yet available."] = "";
+$a->strings["File to Upload"] = "";
+$a->strings["Or provide the old server/hub details"] = "";
+$a->strings["Your old identity address (xyz@example.com)"] = "";
+$a->strings["Your old login email address"] = "";
+$a->strings["Your old login password"] = "";
+$a->strings["For either option, please choose whether to make this hub your new primary address, or whether your old location should continue this role. You will be able to post from either location, but only one can be marked as the primary location for files, photos, and media."] = "";
+$a->strings["Make this hub my primary location"] = "";
$a->strings["Total invitation limit exceeded."] = "";
$a->strings["%s : Not a valid email address."] = "";
$a->strings["Please join us on Red"] = "";
@@ -1729,54 +1653,197 @@ $a->strings["%d message sent."] = array(
$a->strings["You have no more invitations available"] = "";
$a->strings["Send invitations"] = "";
$a->strings["Enter email addresses, one per line:"] = "";
-$a->strings["You are cordially invited to join me and some other close friends on the Red Matrix - a revolutionary new decentralised communication and information tool."] = "";
+$a->strings["Your message:"] = "";
+$a->strings["You are cordially invited to join me and some other close friends on the Red Matrix - a revolutionary new decentralized communication and information tool."] = "";
$a->strings["You will need to supply this invitation code: \$invite_code"] = "";
$a->strings["Please visit my channel at"] = "";
$a->strings["Once you have registered (on ANY Red Matrix site - they are all inter-connected), please connect with my Red Matrix channel address:"] = "";
$a->strings["Click the [Register] link on the following page to join."] = "";
$a->strings["For more information about the Red Matrix Project and why it has the potential to change the internet as we know it, please visit http://getzot.com"] = "";
+$a->strings["Unable to locate original post."] = "";
+$a->strings["Empty post discarded."] = "";
+$a->strings["Executable content type not permitted to this channel."] = "";
+$a->strings["System error. Post not saved."] = "";
+$a->strings["You have reached your limit of %1$.0f top level posts."] = "";
+$a->strings["You have reached your limit of %1$.0f webpages."] = "";
+$a->strings["[Embedded content - reload page to view]"] = "";
+$a->strings["Help with this feature"] = "";
+$a->strings["Layout Name"] = "";
+$a->strings["Like/Dislike"] = "";
+$a->strings["This action is restricted to members."] = "";
+$a->strings["Please <a href=\"rmagic\">login with your RedMatrix ID</a> or <a href=\"register\">register as a new RedMatrix member</a> to continue."] = "";
+$a->strings["Invalid request."] = "";
+$a->strings["thing"] = "";
+$a->strings["Channel unavailable."] = "";
+$a->strings["Previous action reversed."] = "";
+$a->strings["Action completed."] = "";
+$a->strings["Thank you."] = "";
+$a->strings["Remote privacy information not available."] = "";
+$a->strings["Visible to:"] = "";
+$a->strings["No connections."] = "";
+$a->strings["Visit %s's profile [%s]"] = "";
+$a->strings["View Connnections"] = "";
+$a->strings["No valid account found."] = "";
+$a->strings["Password reset request issued. Check your email."] = "";
+$a->strings["Site Member (%s)"] = "";
+$a->strings["Password reset requested at %s"] = "";
+$a->strings["Request could not be verified. (You may have previously submitted it.) Password reset failed."] = "";
+$a->strings["Password Reset"] = "";
+$a->strings["Your password has been reset as requested."] = "";
+$a->strings["Your new password is"] = "";
+$a->strings["Save or copy your new password - and then"] = "";
+$a->strings["click here to login"] = "";
+$a->strings["Your password may be changed from the <em>Settings</em> page after successful login."] = "";
+$a->strings["Your password has changed at %s"] = "";
+$a->strings["Forgot your Password?"] = "";
+$a->strings["Enter your email address and submit to have your password reset. Then check your email for further instructions."] = "";
+$a->strings["Email Address"] = "";
+$a->strings["Reset"] = "";
+$a->strings["Hub not found."] = "";
+$a->strings["Total votes"] = "";
+$a->strings["Average Rating"] = "";
+$a->strings["Unable to lookup recipient."] = "";
+$a->strings["Unable to communicate with requested channel."] = "";
+$a->strings["Cannot verify requested channel."] = "";
+$a->strings["Selected channel has private message restrictions. Send failed."] = "";
+$a->strings["Messages"] = "";
+$a->strings["Message deleted."] = "";
+$a->strings["Message recalled."] = "";
+$a->strings["Send Private Message"] = "";
+$a->strings["To:"] = "";
+$a->strings["Subject:"] = "";
+$a->strings["Message not found."] = "";
+$a->strings["Delete message"] = "";
+$a->strings["Recall message"] = "";
+$a->strings["Message has been recalled."] = "";
+$a->strings["Private Conversation"] = "";
+$a->strings["Delete conversation"] = "";
+$a->strings["No secure communications available. You <strong>may</strong> be able to respond from the sender's profile page."] = "";
+$a->strings["Send Reply"] = "";
+$a->strings["You have created %1$.0f of %2$.0f allowed channels."] = "";
+$a->strings["Create a new channel"] = "";
+$a->strings["Channel Manager"] = "";
+$a->strings["Current Channel"] = "";
+$a->strings["Attach to one of your channels by selecting it."] = "";
+$a->strings["Default Channel"] = "";
+$a->strings["Make Default"] = "";
$a->strings["Wall Photos"] = "";
-$a->strings["No channel."] = "";
-$a->strings["Common connections"] = "";
-$a->strings["No connections in common."] = "";
-$a->strings["Please login."] = "";
-$a->strings["Select a bookmark folder"] = "";
-$a->strings["Save Bookmark"] = "";
-$a->strings["URL of bookmark"] = "";
-$a->strings["Or enter new bookmark folder name"] = "";
-$a->strings["Update %s failed. See error logs."] = "";
-$a->strings["Update Error at %s"] = "";
-$a->strings["Create an account to access services and applications within the Red Matrix"] = "";
-$a->strings["Password"] = "";
-$a->strings["Remember me"] = "";
-$a->strings["Forgot your password?"] = "";
-$a->strings["permission denied"] = "";
-$a->strings["Got Zot?"] = "";
-$a->strings["toggle mobile"] = "";
+$a->strings["Profile Match"] = "";
+$a->strings["No keywords to match. Please add keywords to your default profile."] = "";
+$a->strings["is interested in:"] = "";
+$a->strings["No matches"] = "";
+$a->strings["Menu updated."] = "";
+$a->strings["Unable to update menu."] = "";
+$a->strings["Menu created."] = "";
+$a->strings["Unable to create menu."] = "";
+$a->strings["Manage Menus"] = "";
+$a->strings["Drop"] = "";
+$a->strings["Create a new menu"] = "";
+$a->strings["Delete this menu"] = "";
+$a->strings["Edit menu contents"] = "";
+$a->strings["Edit this menu"] = "";
+$a->strings["New Menu"] = "";
+$a->strings["Menu name"] = "";
+$a->strings["Must be unique, only seen by you"] = "";
+$a->strings["Menu title"] = "";
+$a->strings["Menu title as seen by others"] = "";
+$a->strings["Allow bookmarks"] = "";
+$a->strings["Menu may be used to store saved bookmarks"] = "";
+$a->strings["Menu deleted."] = "";
+$a->strings["Menu could not be deleted."] = "";
+$a->strings["Edit Menu"] = "";
+$a->strings["Add or remove entries to this menu"] = "";
+$a->strings["Conversation removed."] = "";
+$a->strings["No messages."] = "";
+$a->strings["D, d M Y - g:i A"] = "";
+$a->strings["Add a Channel"] = "";
+$a->strings["A channel is your own collection of related web pages. A channel can be used to hold social network profiles, blogs, conversation groups and forums, celebrity pages, and much more. You may create as many channels as your service provider allows."] = "";
+$a->strings["Examples: \"Bob Jameson\", \"Lisa and her Horses\", \"Soccer\", \"Aviation Group\" "] = "";
+$a->strings["Choose a short nickname"] = "";
+$a->strings["Your nickname will be used to create an easily remembered channel address (like an email address) which you can share with others."] = "";
+$a->strings["Or <a href=\"import\">import an existing channel</a> from another location"] = "";
+$a->strings["Invalid request identifier."] = "";
+$a->strings["Discard"] = "";
+$a->strings["No more system notifications."] = "";
+$a->strings["System Notifications"] = "";
+$a->strings["Unable to find your hub."] = "";
+$a->strings["Post successful."] = "";
+$a->strings["invalid target signature"] = "";
+$a->strings["OpenID protocol error. No ID returned."] = "";
+$a->strings["App installed."] = "";
+$a->strings["Malformed app."] = "";
+$a->strings["Embed code"] = "";
+$a->strings["Edit App"] = "";
+$a->strings["Create App"] = "";
+$a->strings["Name of app"] = "";
+$a->strings["Location (URL) of app"] = "";
+$a->strings["Photo icon URL"] = "";
+$a->strings["80 x 80 pixels - optional"] = "";
+$a->strings["Version ID"] = "";
+$a->strings["Price of app"] = "";
+$a->strings["Location (URL) to purchase app"] = "";
+$a->strings["Poll"] = "";
+$a->strings["View Results"] = "";
+$a->strings["Schema Default"] = "";
+$a->strings["Sans-Serif"] = "";
+$a->strings["Monospace"] = "";
$a->strings["Theme settings"] = "";
$a->strings["Set scheme"] = "";
+$a->strings["Set font-size for posts and comments"] = "";
+$a->strings["Set font face"] = "";
+$a->strings["Set iconset"] = "";
+$a->strings["Set big shadow size, default 15px 15px 15px"] = "";
+$a->strings["Set small shadow size, default 5px 5px 5px"] = "";
+$a->strings["Set shadow color, default #000"] = "";
+$a->strings["Set radius size, default 5px"] = "";
+$a->strings["Set line-height for posts and comments"] = "";
+$a->strings["Set background image"] = "";
+$a->strings["Set background attachment"] = "";
+$a->strings["Set background color"] = "";
+$a->strings["Set section background image"] = "";
+$a->strings["Set section background color"] = "";
+$a->strings["Set color of items - use hex"] = "";
+$a->strings["Set color of links - use hex"] = "";
+$a->strings["Set max-width for items. Default 400px"] = "";
+$a->strings["Set min-width for items. Default 240px"] = "";
+$a->strings["Set the generic content wrapper width. Default 48%"] = "";
+$a->strings["Set color of fonts - use hex"] = "";
+$a->strings["Set background-size element"] = "";
+$a->strings["Item opacity"] = "";
+$a->strings["Display post previews only"] = "";
+$a->strings["Display side bar on channel page"] = "";
+$a->strings["Colour of the navigation bar"] = "";
+$a->strings["Item float"] = "";
+$a->strings["Left offset of the section element"] = "";
+$a->strings["Right offset of the section element"] = "";
+$a->strings["Section width"] = "";
+$a->strings["Left offset of the aside"] = "";
+$a->strings["Right offset of the aside element"] = "";
+$a->strings["None"] = "";
+$a->strings["Header image"] = "";
+$a->strings["Header image only on profile pages"] = "";
+$a->strings["Light (Red Matrix default)"] = "";
$a->strings["Narrow navbar"] = "";
-$a->strings["Navigation bar background colour"] = "";
-$a->strings["Navigation bar gradient top colour"] = "";
-$a->strings["Navigation bar gradient bottom colour"] = "";
-$a->strings["Navigation active button gradient top colour"] = "";
-$a->strings["Navigation active button gradient bottom colour"] = "";
-$a->strings["Navigation bar border colour "] = "";
-$a->strings["Navigation bar icon colour "] = "";
-$a->strings["Navigation bar active icon colour "] = "";
-$a->strings["link colour"] = "";
-$a->strings["Set font-colour for banner"] = "";
-$a->strings["Set the background colour"] = "";
+$a->strings["Navigation bar background color"] = "";
+$a->strings["Navigation bar gradient top color"] = "";
+$a->strings["Navigation bar gradient bottom color"] = "";
+$a->strings["Navigation active button gradient top color"] = "";
+$a->strings["Navigation active button gradient bottom color"] = "";
+$a->strings["Navigation bar border color "] = "";
+$a->strings["Navigation bar icon color "] = "";
+$a->strings["Navigation bar active icon color "] = "";
+$a->strings["link color"] = "";
+$a->strings["Set font-color for banner"] = "";
+$a->strings["Set the background color"] = "";
$a->strings["Set the background image"] = "";
-$a->strings["Set the background colour of items"] = "";
-$a->strings["Set the background colour of comments"] = "";
-$a->strings["Set the border colour of comments"] = "";
+$a->strings["Set the background color of items"] = "";
+$a->strings["Set the background color of comments"] = "";
+$a->strings["Set the border color of comments"] = "";
$a->strings["Set the indent for comments"] = "";
-$a->strings["Set the basic colour for item icons"] = "";
-$a->strings["Set the hover colour for item icons"] = "";
+$a->strings["Set the basic color for item icons"] = "";
+$a->strings["Set the hover color for item icons"] = "";
$a->strings["Set font-size for the entire application"] = "";
-$a->strings["Set font-size for posts and comments"] = "";
-$a->strings["Set font-colour for posts and comments"] = "";
+$a->strings["Set font-color for posts and comments"] = "";
$a->strings["Set radius of corners"] = "";
$a->strings["Set shadow depth of photos"] = "";
$a->strings["Set maximum width of conversation regions"] = "";
@@ -1786,3 +1853,12 @@ $a->strings["Set size of conversation author photo"] = "";
$a->strings["Set size of followup author photos"] = "";
$a->strings["Sloppy photo albums"] = "";
$a->strings["Are you a clean desk or a messy desk person?"] = "";
+$a->strings["Update %s failed. See error logs."] = "";
+$a->strings["Update Error at %s"] = "";
+$a->strings["Create an account to access services and applications within the Red Matrix"] = "";
+$a->strings["Password"] = "";
+$a->strings["Remember me"] = "";
+$a->strings["Forgot your password?"] = "";
+$a->strings["permission denied"] = "";
+$a->strings["Got Zot?"] = "";
+$a->strings["toggle mobile"] = "";
diff --git a/util/wp/post_to_red/post_to_red.php b/util/wp/post_to_red/post_to_red.php
deleted file mode 100644
index 5146b8be1..000000000
--- a/util/wp/post_to_red/post_to_red.php
+++ /dev/null
@@ -1,489 +0,0 @@
-<?php
-/*
-Plugin Name: CrossPost to Red Matrix
-Plugin URI: http://blog.duthied.com/2011/09/12/friendika-cross-poster-wordpress-plugin/
-Description: This plugin allows you to cross post to your Red Matrix account. Extended by Mike Macgirvin from a Friendica cross-posting tool
-Version: 1.2
-Author: Devlon Duthied
-Author URI: http://blog.duthied.com
-*/
-
-/* Copyright 2011 Devlon Duthie (email: duthied@gmail.com)
-
- This program is free software; you can redistribute it and/or modify
- it under the terms of the GNU General Public License, version 2, as
- published by the Free Software Foundation.
-
- 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
-*/
-
-define("post_to_red_path", WP_PLUGIN_URL . "/" . str_replace(basename( __FILE__), "", plugin_basename(__FILE__)));
-define("post_to_red_version", "1.2");
-$plugin_dir = basename(dirname(__FILE__));
-$plugin = plugin_basename(__FILE__);
-
-define("post_to_red_acct_name", "post_to_red_admin_options");
-
-function post_to_red_deactivate() {
- delete_option('post_to_red_seed_location');
- delete_option('post_to_red_acct_name');
- delete_option('post_to_red_user_name');
- delete_option('post_to_red_password');
-}
-
-function post_to_red_get_seed_location() {
- return get_option('post_to_red_seed_location');
-}
-
-function post_to_red_get_acct_name() {
- return get_option('post_to_red_acct_name');
-}
-
-function post_to_red_get_channel_name() {
- return get_option('post_to_red_channel_name');
-}
-
-function post_to_red_get_password() {
- return get_option('post_to_red_password');
-}
-
-function post_to_red_post($post_id) {
-
- $post = get_post($post_id);
-
- if (isset($_POST['post_to_red'])) {
- update_post_meta($post_id, 'post_to_red', '1');
- }
-
- // if meta has been set
- if (get_post_meta($post_id, "post_to_red", true) === '1') {
-
- $user_name = post_to_red_get_acct_name();
- $password = post_to_red_get_password();
- $seed_location = post_to_red_get_seed_location();
- $channel = post_to_red_get_channel_name();
- $backlink = get_option('post_to_red_backlink');
-
- if ((isset($user_name)) && (isset($password)) && (isset($seed_location))) {
- // remove potential comments
- $message = preg_replace('/<!--(.*)-->/Uis', '', $post->post_content);
-
- // get any tags and make them hashtags
- $post_tags = get_the_tags($post_id);
- if ($post_tags) {
- foreach($post_tags as $tag) {
- $tag_string .= "#" . $tag->name . " ";
- }
- }
-
- $message_id = site_url() . '/' . $post_id;
-
- if (isset($tag_string)) {
- $message .= "<br />$tag_string";
- }
-
- $cats = '';
-
- $terms = get_the_terms($post_id,'category');
- if($terms) {
- foreach($terms as $term) {
- if(strlen($cats))
- $cats .= ',';
- $cats .= htmlspecialchars_decode($term->name, ENT_COMPAT);
- }
- }
-
-
-
- $bbcode = xpost_to_html2bbcode($message);
-
- if($backlink)
- $bbcode .= "\n\n" . _('Source:') . ' ' . '[url]' . get_permalink($post_id) . '[/url]';
-
- $url = $seed_location . '/api/statuses/update';
-
- $headers = array('Authorization' => 'Basic '.base64_encode("$user_name:$password"));
- $body = array(
- 'title' => xpost_to_html2bbcode($post->post_title),
- 'status' => $bbcode,
- 'source' => 'WordPress',
- 'namespace' => 'wordpress',
- 'remote_id' => $message_id,
- 'permalink' => $post->guid
- );
- if($channel)
- $body['channel'] = $channel;
- if($cats)
- $body['category'] = $cats;
-
- // post:
- $request = new WP_Http;
- $result = $request->request($url , array( 'method' => 'POST', 'body' => $body, 'headers' => $headers));
-
- }
-
- }
-}
-
-
-function post_to_red_delete_post($post_id) {
-
- $post = get_post($post_id);
-
- // if meta has been set
- if ((get_post_meta($post_id, "post_to_red", true) == '1') || (get_post_meta($post_id, "post_from_red", true) == '1')) {
-
- $user_name = post_to_red_get_acct_name();
- $password = post_to_red_get_password();
- $seed_location = post_to_red_get_seed_location();
- $channel = post_to_red_get_channel_name();
-
- if ((isset($user_name)) && (isset($password)) && (isset($seed_location))) {
-
- $message_id = site_url() . '/' . $post_id;
- $url = $seed_location . '/api/statuses/destroy';
-
- $headers = array('Authorization' => 'Basic '.base64_encode("$user_name:$password"));
- $body = array(
- 'namespace' => 'wordpress',
- 'remote_id' => $message_id,
- );
- if($channel)
- $body['channel'] = $channel;
-
- // post:
- $request = new WP_Http;
- $result = $request->request($url , array( 'method' => 'POST', 'body' => $body, 'headers' => $headers));
-
- }
-
- }
-}
-
-function post_to_red_delete_comment($post_id) {
-
- // The comment may already be destroyed so we can't query it or the parent post. That means
- // we have to make a network call for any deleted comment to see if it's registered on Red.
- // We really need a "before_delete_comment" action in WP to make
- // this more efficient.
-
- $user_name = post_to_red_get_acct_name();
- $password = post_to_red_get_password();
- $seed_location = post_to_red_get_seed_location();
- $channel = post_to_red_get_channel_name();
-
- if ((isset($user_name)) && (isset($password)) && (isset($seed_location))) {
-
- $message_id = site_url() . '/' . $post_id;
- $url = $seed_location . '/api/statuses/destroy';
-
- $headers = array('Authorization' => 'Basic '.base64_encode("$user_name:$password"));
- $body = array(
- 'namespace' => 'wordpress',
- 'comment_id' => $message_id,
- );
- if($channel)
- $body['channel'] = $channel;
-
- // post:
- $request = new WP_Http;
- $result = $request->request($url , array( 'method' => 'POST', 'body' => $body, 'headers' => $headers));
- }
-}
-
-
-
-
-function post_to_red_displayAdminContent() {
-
- $seed_url = post_to_red_get_seed_location();
- $password = post_to_red_get_password();
- $user_acct = post_to_red_get_acct_name();
- $channel = post_to_red_get_channel_name();
- $backlink = get_option('post_to_red_backlink');
- $backlink_checked = ((intval($backlink)) ? ' checked="checked" ' : '');
- // debug...
- // echo "seed location: $seed_url</br>";
- // echo "password: $password</br>";
- // echo "user_acct: $user_acct</br>";
-
- echo <<<EOF
- <div class='wrap'>
- <h2>CrossPost to Red Matrix</h2>
- <p>This plugin allows you to cross post to your Red Matrix channel.</p>
- </div>
-
- <div class="wrap">
- <h2>Configuration</h2>
- <form method="post" action="{$_SERVER["REQUEST_URI"]}">
- Enter the login details of your Red Matrix account<br /><br />
- Login (email): <input type="text" name="post_to_red_acct_name" value="{$user_acct}"/><br />
- Password: <input type="password" name="post_to_red_password" value="{$password}"/><br />
- Red Matrix URL: <input type="text" name="post_to_red_url" value="{$seed_url}"/><br />
- Optional channel nickname: <input type="text" name="post_to_red_channel" value="{$channel}"/><br />
- Add permalink to posts? <input type="checkbox" name="post_to_red_backlink" value="1" {$backlink_checked} /><br />
- <input type="submit" value="Save" name="submit" />
- </form>
- <p></p>
- </div>
-EOF;
-
- if(isset($_POST['submit'])) {
- echo "<div style='text-align:center;padding:4px;width:200px;background-color:#FFFF99;border:1xp solid #CCCCCC;color:#000000;'>Settings Saved!</div>";
- }
-}
-
-function post_to_red_post_checkbox() {
-
- add_meta_box(
- 'post_to_red_meta_box_id',
- 'Cross Post to Red Matrix',
- 'post_to_red_post_meta_content',
- 'post',
- 'normal',
- 'default'
- );
-}
-
-function post_to_red_post_meta_content($post_id) {
- wp_nonce_field(plugin_basename( __FILE__ ), 'post_to_red_nonce');
- echo '<input type="checkbox" name="post_to_red" value="1" /> Cross post?';
-}
-
-function post_to_red_post_field_data($post_id) {
-
- // check if this isn't an auto save
- if (defined('DOING_AUTOSAVE') && DOING_AUTOSAVE)
- return;
-
- // security check
- if((! array_key_exists('post_to_red_nonce', $_POST))
- || (!wp_verify_nonce( $_POST['post_to_red_nonce'], plugin_basename( __FILE__ ))))
- return;
-
- // now store data in custom fields based on checkboxes selected
- if (isset($_POST['post_to_red'])) {
- update_post_meta($post_id, 'post_to_red', '1');
- }
-}
-
-function post_to_red_display_admin_page() {
-
- if ((isset($_REQUEST["post_to_red_acct_name"])) && (isset($_REQUEST["post_to_red_password"]))) {
-
- $password = $_REQUEST["post_to_red_password"];
- $red_url = $_REQUEST["post_to_red_url"];
- $channelname = $_REQUEST['post_to_red_channel'];
-
-
- update_option('post_to_red_acct_name', $_REQUEST["post_to_red_acct_name"]);
- update_option('post_to_red_channel_name', $channelname);
- update_option('post_to_red_seed_location', $red_url);
- update_option('post_to_red_password', $password);
- update_option('post_to_red_backlink', $_REQUEST['post_to_red_backlink']);
- }
-
- post_to_red_displayAdminContent();
-}
-
-function post_to_red_settings_link($links) {
- $settings_link = '<a href="options-general.php?page=xpost-to-redmatrix">Settings</a>';
- array_unshift($links, $settings_link);
- return $links;
-}
-
-function post_to_red_admin() {
- add_options_page("Crosspost to redmatrix", "Crosspost to redmatrix", "manage_options", "xpost-to-redmatrix", "post_to_red_display_admin_page");
-}
-
-register_deactivation_hook( __FILE__, 'post_to_red_deactivate' );
-
-add_filter("plugin_action_links_$plugin", "post_to_red_settings_link");
-
-add_action("admin_menu", "post_to_red_admin");
-add_action('publish_post', 'post_to_red_post');
-add_action('add_meta_boxes', 'post_to_red_post_checkbox');
-add_action('save_post', 'post_to_red_post_field_data');
-add_action('before_delete_post', 'post_to_red_delete_post');
-
-add_action('delete_comment', 'post_to_red_delete_comment');
-
-add_filter('xmlrpc_methods', 'red_xmlrpc_methods');
-
-add_filter('get_avatar', 'post_to_red_get_avatar',10,5);
-
-
-function red_xmlrpc_methods($methods) {
- $methods['red.Comment'] = 'red_comment';
- return $methods;
-}
-
-function red_comment($args) {
- global $wp_xmlrpc_server;
- $wp_xmlrpc_server->escape( $args );
-
- $blog_id = $args[0];
- $username = $args[1];
- $password = $args[2];
- $post = $args[3];
- $content_struct = $args[4];
-
- if ( ! $user = $wp_xmlrpc_server->login( $username, $password ) )
- return $wp_xmlrpc_server->error;
-
- if ( is_numeric($post) )
- $post_id = absint($post);
- else
- $post_id = url_to_postid($post);
-
- if ( ! $post_id )
- return new IXR_Error( 404, __( 'Invalid post ID.' ) );
- if ( ! get_post($post_id) )
- return new IXR_Error( 404, __( 'Invalid post ID.' ) );
-
- $comment['comment_post_ID'] = $post_id;
-
- $comment['comment_author'] = '';
- if ( isset($content_struct['author']) )
- $comment['comment_author'] = $content_struct['author'];
-
- $comment['comment_author_email'] = '';
- if ( isset($content_struct['author_email']) )
- $comment['comment_author_email'] = $content_struct['author_email'];
-
- $comment['comment_author_url'] = '';
- if ( isset($content_struct['author_url']) )
- $comment['comment_author_url'] = $content_struct['author_url'];
-
- $comment['user_ID'] = 0;
-
- if ( get_option('require_name_email') ) {
- if ( 6 > strlen($comment['comment_author_email']) || '' == $comment['comment_author'] )
- return new IXR_Error( 403, __( 'Comment author name and email are required' ) );
- elseif ( !is_email($comment['comment_author_email']) )
- return new IXR_Error( 403, __( 'A valid email address is required' ) );
- }
-
- if(isset($content_struct['comment_id'])) {
- $comment['comment_ID'] = intval($content_struct['comment_id']);
- $edit = true;
- }
- $comment['comment_post_ID'] = $post_id;
- $comment['comment_parent'] = isset($content_struct['comment_parent']) ? absint($content_struct['comment_parent']) : 0;
- $comment['comment_content'] = isset($content_struct['content']) ? $content_struct['content'] : null;
-
- do_action('xmlrpc_call', 'red.Comment');
-
- if($edit) {
- $result = wp_update_comment($comment);
- $comment_ID = $comment['comment_ID'];
- }
- else {
- $comment_ID = wp_new_comment( $comment );
- if($comment_ID)
- wp_set_comment_status($comment_ID,'approve');
- }
-
- if(isset($content_struct['red_avatar']))
- add_comment_meta($comment_ID,'red_avatar',$content_struct['red_avatar'],true);
-
- do_action( 'xmlrpc_call_success_red_Comment', $comment_ID, $args );
-
- return $comment_ID;
-}
-
-function post_to_red_get_avatar($avatar,$id_or_email,$size,$default,$alt) {
-
- if(! is_object($id_or_email))
- return $avatar;
- if((! array_key_exists('comment_author_email',$id_or_email)) || (empty($id_or_email->comment_author_email)))
- return $avatar;
- if((! array_key_exists('comment_ID', $id_or_email)) || (! intval($id_or_email->comment_ID)))
- return $avatar;
- $l = get_comment_meta($id_or_email->comment_ID,'red_avatar',true);
- if($l) {
- $safe_alt = esc_attr($alt);
- $avatar = "<img alt='{$safe_alt}' src='{$l}' class='avatar avatar-{$size} photo' height='{$size}' width='{$size}' />";
- }
- return $avatar;
-}
-
-
-// from:
-// http://www.docgate.com/tutorial/php/how-to-convert-html-to-bbcode-with-php-script.html
-function xpost_to_html2bbcode($text) {
- $htmltags = array(
- '/\<b\>(.*?)\<\/b\>/is',
- '/\<i\>(.*?)\<\/i\>/is',
- '/\<u\>(.*?)\<\/u\>/is',
- '/\<ul.*?\>(.*?)\<\/ul\>/is',
- '/\<li\>(.*?)\<\/li\>/is',
- '/\<img(.*?) src=\"(.*?)\" alt=\"(.*?)\" title=\"Smile(y?)\" \/\>/is', // some smiley
- '/\<img(.*?) src=\"http:\/\/(.*?)\" (.*?)\>/is',
- '/\<img(.*?) src=\"(.*?)\" alt=\":(.*?)\" .*? \/\>/is', // some smiley
- '/\<div class=\"quotecontent\"\>(.*?)\<\/div\>/is',
- '/\<div class=\"codecontent\"\>(.*?)\<\/div\>/is',
- '/\<div class=\"quotetitle\"\>(.*?)\<\/div\>/is',
- '/\<div class=\"codetitle\"\>(.*?)\<\/div\>/is',
- '/\<cite.*?\>(.*?)\<\/cite\>/is',
- '/\<blockquote.*?\>(.*?)\<\/blockquote\>/is',
- '/\<div\>(.*?)\<\/div\>/is',
- '/\<code\>(.*?)\<\/code\>/is',
- '/\<br(.*?)\>/is',
- '/\<strong\>(.*?)\<\/strong\>/is',
- '/\<em\>(.*?)\<\/em\>/is',
- '/\<a href=\"mailto:(.*?)\"(.*?)\>(.*?)\<\/a\>/is',
- '/\<a .*?href=\"(.*?)\"(.*?)\>http:\/\/(.*?)\<\/a\>/is',
- '/\<a .*?href=\"(.*?)\"(.*?)\>(.*?)\<\/a\>/is'
- );
-
- $bbtags = array(
- '[b]$1[/b]',
- '[i]$1[/i]',
- '[u]$1[/u]',
- '[list]$1[/list]',
- '[*]$1',
- '$3',
- '[img]http://$2[/img]' . "\n",
- ':$3',
- '[quote]$1[/quote]',
- '[code]$1[/code]',
- '',
- '',
- '',
- '[quote]$1[/quote]',
- '$1',
- '[code]$1[/code]',
- "\n",
- '[b]$1[/b]',
- '[i]$1[/i]',
- '[email=$1]$3[/email]',
- '[url]$1[/url]',
- '[url=$1]$3[/url]'
- );
-
- $text = str_replace ("\n", ' ', $text);
- $ntext = preg_replace ($htmltags, $bbtags, $text);
- $ntext = preg_replace ($htmltags, $bbtags, $ntext);
-
- // for too large text and cannot handle by str_replace
- if (!$ntext) {
- $ntext = str_replace(array('<br>', '<br />'), "\n", $text);
- $ntext = str_replace(array('<strong>', '</strong>'), array('[b]', '[/b]'), $ntext);
- $ntext = str_replace(array('<em>', '</em>'), array('[i]', '[/i]'), $ntext);
- }
-
- $ntext = strip_tags($ntext);
-
- $ntext = trim(html_entity_decode($ntext,ENT_QUOTES,'UTF-8'));
- return $ntext;
-}
-
-
diff --git a/util/wp/post_to_red/readme.txt b/util/wp/post_to_red/readme.txt
deleted file mode 100644
index e27c46236..000000000
--- a/util/wp/post_to_red/readme.txt
+++ /dev/null
@@ -1,39 +0,0 @@
-=== CrossPost to redmatrix ===
-Contributors: duthied, macgirvin
-Donate link: TBD
-Tags: redmatrix, crosspost
-Requires at least: 3.2
-Tested up to: 3.2
-Stable tag: 1.2
-
-CrossPost to Red Matrix for WordPress
-
-== Description ==
-This plugin allows you to cross post to your Red Matrix account.
-
-**Note, this plugin converts the html from wordpress into bbcode.
-The bbcode conversion doesn't handle height and width of an image, so be warned that if you post a very large
-image that is resized via height and with attributes, those attributes won't be honored in the resulatant post.
-
-== Changelog ==
-= 1.2 =
-* ensured no function name collision
-
-= 1.1 =
-* Added feedback to settings form post.
-
-= 1.0 =
-* Initial release.
-
-== Installation ==
-
-1. Install the plugin from your Wordpress admin panel.
-
-OR
-
-1. Upload the plugin folder to the `/wp-content/plugins/` directory.
-2. Activate the plugin through the 'Plugins' menu in WordPress.
-3. On the settings page enter your account name and password and the nickname of the channel to post to - then click the submit button
-4. To cross-post ensure the check box in the 'Cross Post To redmatrix' is checked before publishing.
-
-== Frequently Asked Questions ==
diff --git a/vendor/bin/sabredav b/vendor/bin/sabredav
deleted file mode 120000
index 3b5e4511d..000000000
--- a/vendor/bin/sabredav
+++ /dev/null
@@ -1 +0,0 @@
-../sabre/dav/bin/sabredav \ No newline at end of file
diff --git a/vendor/bin/vobjectvalidate.php b/vendor/bin/vobjectvalidate.php
deleted file mode 120000
index 4121667bf..000000000
--- a/vendor/bin/vobjectvalidate.php
+++ /dev/null
@@ -1 +0,0 @@
-../sabre/vobject/bin/vobjectvalidate.php \ No newline at end of file
diff --git a/version.inc b/version.inc
index 7956ea5b8..95fdfb820 100644
--- a/version.inc
+++ b/version.inc
@@ -1 +1 @@
-2014-07-17.739
+2015-01-05.910
diff --git a/view/ca/cmnt_received_eml.tpl b/view/ca/cmnt_received_eml.tpl
deleted file mode 100644
index ca61ca492..000000000
--- a/view/ca/cmnt_received_eml.tpl
+++ /dev/null
@@ -1,18 +0,0 @@
-
-Apreciat/da $username,
-
- '$from' ha comentat un element/conversació que estàs seguint.
-
------
-$body
------
-
-Accedeix a $siteurl per a veure la conversa completa:
-
-$display
-
-
- $sitename
-
-
-
diff --git a/view/ca/follow_notify_eml.tpl b/view/ca/follow_notify_eml.tpl
deleted file mode 100644
index ab5a4b371..000000000
--- a/view/ca/follow_notify_eml.tpl
+++ /dev/null
@@ -1,13 +0,0 @@
-
-Apreciat/da $myname,
-
-Tens un nou seguidor en $sitename - '$requestor'.
-
-Pots visitar el seu perfil en $url.
-
-Iniciï sessió en el seu lloc per a aprovar o rebutjar/cancelar la sol·licitud.
-
-$siteurl
-
-
- $sitename
diff --git a/view/ca/friend_complete_eml.tpl b/view/ca/friend_complete_eml.tpl
deleted file mode 100644
index 539d9ff3d..000000000
--- a/view/ca/friend_complete_eml.tpl
+++ /dev/null
@@ -1,19 +0,0 @@
-
-Apreciat/da $username,
-
- Grans noticies... '$fn' a '$dfrn_url' ha acceptat la teva sol·licitud de connexió en '$sitename'.
-
-Ara sous amics mutus i podreu intercanviar actualizacions de estatus, fotos, i correu electrónic
-sense cap restricció.
-
-Visita la teva pàgina de 'Contactes' en $sitename si desitja realizar qualsevol canvi en aquesta relació.
-
-$siteurl
-
-[Per exemple, pots crear un perfil independent amb informació que no esta disponible al públic en general
-- i assignar drets de visualització a '$fn'].
-
-
- $sitename
-
-
diff --git a/view/ca/intro_complete_eml.tpl b/view/ca/intro_complete_eml.tpl
deleted file mode 100644
index 70507d71d..000000000
--- a/view/ca/intro_complete_eml.tpl
+++ /dev/null
@@ -1,21 +0,0 @@
-
-Apreciat/da $username,
-
- '$fn' en '$dfrn_url' ha acceptat la teva petició
-connexió a '$sitename'.
-
- '$fn' ha optat per acceptar-te com a "fan", que restringeix certes
-formes de comunicació, com missatges privats i algunes interaccions
-amb el perfil. Si ets una "celebritat" o una pàgina de comunitat,
-aquests ajustos s'aplican automàticament
-
- '$fn' pot optar per extendre aixó en una relació més permisiva
-en el futur.
-
- Començaràs a rebre les actualizacions públiques de estatus de '$fn',
-que apareixeran a la teva pàgina "Xarxa" en
-
-$siteurl
-
-
- $sitename
diff --git a/view/ca/mail_received_html_body_eml.tpl b/view/ca/mail_received_html_body_eml.tpl
deleted file mode 100644
index 64eee0bf1..000000000
--- a/view/ca/mail_received_html_body_eml.tpl
+++ /dev/null
@@ -1,24 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional //EN">
-<html>
-<head>
- <title>Mensaje de Friendica</title>
- <meta http-equiv="Content-Type" content="text/html;charset=utf-8" />
-</head>
-<body>
-<table style="border:1px solid #ccc">
- <tbody>
- <tr><td colspan="2" style="background:#3b5998; color:#FFFFFF; font-weight:bold; font-family:'lucida grande', tahoma, verdana,arial, sans-serif; padding: 4px 8px; vertical-align: middle; font-size:16px; letter-spacing: -0.03em; text-align: left;"><img style="width:32px;height:32px;" src='$siteurl/images/friendika-32.png'><span style="padding:7px;">Friendica</span></td></tr>
-
- <tr><td style="padding-top:22px;" colspan="2">Has rebut un nou missatge privat de '$from' en $siteName.</td></tr>
-
-
- <tr><td style="padding-left:22px;padding-top:22px;width:60px;" valign="top" rowspan=3><a href="$url"><img style="border:0px;width:48px;height:48px;" src="$thumb"></a></td>
- <td style="padding-top:22px;"><a href="$url">$from</a></td></tr>
- <tr><td style="font-weight:bold;padding-bottom:5px;">$title</td></tr>
- <tr><td style="padding-right:22px;">$htmlversion</td></tr>
- <tr><td style="padding-top:11px;padding-bottom:11px;" colspan="2">Accedeix a <a href="$siteurl">$siteurl</a> per a llegir i respondre als teus missatges privats.</td></tr>
- <tr><td></td><td>$siteName</td></tr>
- </tbody>
-</table>
-</body>
-</html>
diff --git a/view/ca/mail_received_text_body_eml.tpl b/view/ca/mail_received_text_body_eml.tpl
deleted file mode 100644
index b343c4e6d..000000000
--- a/view/ca/mail_received_text_body_eml.tpl
+++ /dev/null
@@ -1,9 +0,0 @@
-Has rebut un nou missatge privat de '$from' en $siteName.
-
-$title
-
-$textversion
-
-Accedeix a $siteurl per a llegir i respondre als teus missatges privats.
-
- $siteName
diff --git a/view/ca/request_notify_eml.tpl b/view/ca/request_notify_eml.tpl
deleted file mode 100644
index 276624aae..000000000
--- a/view/ca/request_notify_eml.tpl
+++ /dev/null
@@ -1,13 +0,0 @@
-
-Apreciat/da $myname,
-
-Acabes de rebre una sol·licitud de connexió de '$requestor' en $sitename.
-
-Pots visitar el seu perfil en $url.
-
-Accedeix al teu lloc per a veure la presentació completa i acceptar o ignorar/cancel·lar la sol·licitud.
-
-$siteurl
-
-
- $sitename
diff --git a/view/ca/wall_received_eml.tpl b/view/ca/wall_received_eml.tpl
deleted file mode 100644
index 0b5c150fd..000000000
--- a/view/ca/wall_received_eml.tpl
+++ /dev/null
@@ -1,18 +0,0 @@
-
-Apreciat/da $username,
-
- '$from' ha escrit quelcom en el mur del teu perfil.
-
------
-$body
------
-
-Accedeix a $siteurl per a veure o esborrar l'element:
-
-$display
-
-
- $sitename
-
-
-
diff --git a/view/cs/cmnt_received_eml.tpl b/view/cs/cmnt_received_eml.tpl
deleted file mode 100644
index ff4492322..000000000
--- a/view/cs/cmnt_received_eml.tpl
+++ /dev/null
@@ -1,14 +0,0 @@
-Milý/Milá $username,
-
- '$from' okommentoval položku/konverzaci, kterou následujete.
-
------
-$body
------
-
-Přihlaste se na $siteurl pro zobrazení kompletní konverzace:
-
-$display
-
-Díky,
- $sitename administrátor
diff --git a/view/cs/cmnt_received_html_body_eml.tpl b/view/cs/cmnt_received_html_body_eml.tpl
deleted file mode 100644
index 6b6318743..000000000
--- a/view/cs/cmnt_received_html_body_eml.tpl
+++ /dev/null
@@ -1,25 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional //EN">
-<html>
-<head>
- <title>Friendika zpráva</title>
- <meta http-equiv="Content-Type" content="text/html;charset=utf-8" />
-</head>
-<body>
-<table style="border:1px solid #ccc">
- <tbody>
- <tr><td colspan="2" style="background:#084769; color:#FFFFFF; font-weight:bold; font-family:'lucida grande', tahoma, verdana,arial, sans-serif; padding: 4px 8px; vertical-align: middle; font-size:16px; letter-spacing: -0.03em; text-align: left;"><img style="width:32px;height:32px; float:left;" src='$siteurl/images/friendika-32.png'><div style="padding:7px; margin-left: 5px; float:left; font-size:18px;letter-spacing:1px;">Friendika</div><div style="clear: both;"></div></td></tr>
-
- <tr><td style="padding-top:22px;" colspan="2">$from okomentoval položku/konverzaci, kterou následujete.</td></tr>
-
-
- <tr><td style="padding-left:22px;padding-top:22px;width:60px;" valign="top" rowspan=3><a href="$url"><img style="border:0px;width:48px;height:48px;" src="$thumb"></a></td>
- <td style="padding-top:22px;"><a href="$url">$from</a></td></tr>
- <tr><td style="padding-bottom:5px;"></td></tr>
- <tr><td style="padding-right:22px;">$body</td></tr>
- <tr><td style="padding-top:11px;padding-bottom:11px;" colspan="2">Přihlaste se na <a href="$display">pro zobrazení kompletní konverzace</a>.</td></tr>
- <tr><td></td><td>Díky,</td></tr>
- <tr><td></td><td>$sitename administrátor</td></tr>
- </tbody>
-</table>
-</body>
-</html>
diff --git a/view/cs/cmnt_received_text_body_eml.tpl b/view/cs/cmnt_received_text_body_eml.tpl
deleted file mode 100644
index ff4492322..000000000
--- a/view/cs/cmnt_received_text_body_eml.tpl
+++ /dev/null
@@ -1,14 +0,0 @@
-Milý/Milá $username,
-
- '$from' okommentoval položku/konverzaci, kterou následujete.
-
------
-$body
------
-
-Přihlaste se na $siteurl pro zobrazení kompletní konverzace:
-
-$display
-
-Díky,
- $sitename administrátor
diff --git a/view/cs/follow_notify_eml.tpl b/view/cs/follow_notify_eml.tpl
deleted file mode 100644
index ba07b19da..000000000
--- a/view/cs/follow_notify_eml.tpl
+++ /dev/null
@@ -1,14 +0,0 @@
-
-Dear {{$myname}},
-
-You have a new follower at {{$sitename}} - '{{$requestor}}'.
-
-You may visit their profile at {{$url}}.
-
-Please login to your site to approve or ignore/cancel the request.
-
-{{$siteurl}}
-
-Regards,
-
- {{$sitename}} administrator
diff --git a/view/cs/friend_complete_eml.tpl b/view/cs/friend_complete_eml.tpl
deleted file mode 100644
index 1c647b994..000000000
--- a/view/cs/friend_complete_eml.tpl
+++ /dev/null
@@ -1,22 +0,0 @@
-
-Dear {{$username}},
-
- Great news... '{{$fn}}' at '{{$dfrn_url}}' has accepted
-your connection request at '{{$sitename}}'.
-
-You are now mutual friends and may exchange status updates, photos, and email
-without restriction.
-
-Please visit your 'Connnections' page at {{$sitename}} if you wish to make
-any changes to this relationship.
-
-{{$siteurl}}
-
-[For instance, you may create a separate profile with information that is not
-available to the general public - and assign viewing rights to '{{$fn}}'].
-
-Sincerely,
-
- {{$sitename}} Administrator
-
-
diff --git a/view/cs/intro_complete_eml.tpl b/view/cs/intro_complete_eml.tpl
deleted file mode 100644
index 2c2428d68..000000000
--- a/view/cs/intro_complete_eml.tpl
+++ /dev/null
@@ -1,22 +0,0 @@
-
-Dear {{$username}},
-
- '{{$fn}}' at '{{$dfrn_url}}' has accepted
-your connection request at '{{$sitename}}'.
-
- '{{$fn}}' has chosen to accept you a "fan", which restricts
-some forms of communication - such as private messaging and some profile
-interactions. If this is a celebrity or community page, these settings were
-applied automatically.
-
- '{{$fn}}' may choose to extend this into a two-way or more permissive
-relationship in the future.
-
- You will start receiving public status updates from '{{$fn}}',
-which will appear on your 'Matrix' page at
-
-{{$siteurl}}
-
-Sincerely,
-
- {{$sitename}} Administrator
diff --git a/view/cs/mail_received_html_body_eml.tpl b/view/cs/mail_received_html_body_eml.tpl
deleted file mode 100644
index 427c6c98d..000000000
--- a/view/cs/mail_received_html_body_eml.tpl
+++ /dev/null
@@ -1,25 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional //EN">
-<html>
-<head>
- <title>Friendika Zpráva</title>
- <meta http-equiv="Content-Type" content="text/html;charset=utf-8" />
-</head>
-<body>
-<table style="border:1px solid #ccc">
- <tbody>
- <tr><td colspan="2" style="background:#084769; color:#FFFFFF; font-weight:bold; font-family:'lucida grande', tahoma, verdana,arial, sans-serif; padding: 4px 8px; vertical-align: middle; font-size:16px; letter-spacing: -0.03em; text-align: left;"><img style="width:32px;height:32px; float:left;" src='$siteurl/images/friendika-32.png'><div style="padding:7px; margin-left: 5px; float:left; font-size:18px;letter-spacing:1px;">Friendika</div><div style="clear: both;"></div></td></tr>
-
- <tr><td style="padding-top:22px;" colspan="2">$from Vám poslal(a) novou soukromou zprávu na $siteName.</td></tr>
-
-
- <tr><td style="padding-left:22px;padding-top:22px;width:60px;" valign="top" rowspan=3><a href="$url"><img style="border:0px;width:48px;height:48px;" src="$thumb"></a></td>
- <td style="padding-top:22px;"><a href="$url">$from</a></td></tr>
- <tr><td style="font-weight:bold;padding-bottom:5px;">$title</td></tr>
- <tr><td style="padding-right:22px;">$htmlversion</td></tr>
- <tr><td style="padding-top:11px;padding-bottom:11px;" colspan="2">PÅ™ihlaste se na <a href="$siteurl">$siteurl<a/> pro Ätení a zaslání odpovÄ›dí na VaÅ¡e soukromé zprávy.</td></tr>
- <tr><td></td><td>Díky,</td></tr>
- <tr><td></td><td>$siteName administrátor</td></tr>
- </tbody>
-</table>
-</body>
-</html>
diff --git a/view/cs/mail_received_text_body_eml.tpl b/view/cs/mail_received_text_body_eml.tpl
deleted file mode 100644
index c69872377..000000000
--- a/view/cs/mail_received_text_body_eml.tpl
+++ /dev/null
@@ -1,10 +0,0 @@
-$from Vám poslal(a) novou soukromou zprávu na $siteName.
-
-$title
-
-$textversion
-
-PÅ™ihlaste se na $siteurl pro Ätení a zaslání odpovÄ›dí na VaÅ¡e soukromé zprávy.
-
-Díky,
-$siteName administrátor
diff --git a/view/cs/request_notify_eml.tpl b/view/cs/request_notify_eml.tpl
deleted file mode 100644
index d01b8ff27..000000000
--- a/view/cs/request_notify_eml.tpl
+++ /dev/null
@@ -1,17 +0,0 @@
-
-Dear {{$myname}},
-
-You have just received a connection request at {{$sitename}}
-
-from '{{$requestor}}'.
-
-You may visit their profile at {{$url}}.
-
-Please login to your site to view the complete introduction
-and approve or ignore/cancel the request.
-
-{{$siteurl}}
-
-Regards,
-
- {{$sitename}} administrator
diff --git a/view/cs/wall_received_eml.tpl b/view/cs/wall_received_eml.tpl
deleted file mode 100644
index 9fb27ddd8..000000000
--- a/view/cs/wall_received_eml.tpl
+++ /dev/null
@@ -1,14 +0,0 @@
-Milý/Milá $username,
-
- '$from' obohatil VaÅ¡i profilovou zeÄ.
-
------
-$body
------
-
-Přihlaste se na $siteurl k zobrazení nebo smazání této položky:
-
-$display
-
-Díky,
- $sitename administrátor
diff --git a/view/cs/wall_received_html_body_eml.tpl b/view/cs/wall_received_html_body_eml.tpl
deleted file mode 100644
index 893eec20c..000000000
--- a/view/cs/wall_received_html_body_eml.tpl
+++ /dev/null
@@ -1,24 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional //EN">
-<html>
-<head>
- <title>Friendika zpráva</title>
- <meta http-equiv="Content-Type" content="text/html;charset=utf-8" />
-</head>
-<body>
-<table style="border:1px solid #ccc">
- <tbody>
- <tr><td colspan="2" style="background:#084769; color:#FFFFFF; font-weight:bold; font-family:'lucida grande', tahoma, verdana,arial, sans-serif; padding: 4px 8px; vertical-align: middle; font-size:16px; letter-spacing: -0.03em; text-align: left;"><img style="width:32px;height:32px; float:left;" src='$siteurl/images/friendika-32.png'><div style="padding:7px; margin-left: 5px; float:left; font-size:18px;letter-spacing:1px;">Friendika</div><div style="clear: both;"></div></td></tr>
-
- <tr><td style="padding-top:22px;" colspan="2">$from obohatil VaÅ¡i profilovou zeÄ.</td></tr>
-
-
- <tr><td style="padding-left:22px;padding-top:22px;width:60px;" valign="top" rowspan=3><a href="$url"><img style="border:0px;width:48px;height:48px;" src="$thumb"></a></td>
- <td style="padding-top:22px;"><a href="$url">$from</a></td></tr>
- <tr><td style="padding-right:22px;">$body</td></tr>
- <tr><td style="padding-top:11px;padding-bottom:11px;" colspan="2">Přihlaste se na <a href="$siteurl">$siteurl</a> k <a href="$display">zobrazení nebo smazání této položky.</a></td></tr>
- <tr><td></td><td>Díky,</td></tr>
- <tr><td></td><td>$sitename administrátor</td></tr>
- </tbody>
-</table>
-</body>
-</html>
diff --git a/view/cs/wall_received_text_body_eml.tpl b/view/cs/wall_received_text_body_eml.tpl
deleted file mode 100644
index 088f7f9db..000000000
--- a/view/cs/wall_received_text_body_eml.tpl
+++ /dev/null
@@ -1,14 +0,0 @@
-Milý/Milá $username,
-
- '$from' obohatil VaÅ¡i profilovou zeÄ.
-
------
-$body
------
-
-Přihlaste se na $siteurl k zobrazení nebo smazání této položky:
-
-$display
-
-Díky,
- $sitename administrátor
diff --git a/view/css/bootstrap-red.css b/view/css/bootstrap-red.css
index 10d341691..5d9bb6e90 100644
--- a/view/css/bootstrap-red.css
+++ b/view/css/bootstrap-red.css
@@ -1,52 +1,5 @@
/* override some bootstrap settings */
-html {
-font-size: 100%;
-}
-
-h1,
-.h1 {
- font-size: 24px;
-}
-
-h2,
-.h2 {
- font-size: 18px;
-}
-
-h3,
-.h3 {
- font-size: 16px;
-}
-
-h4,
-.h4 {
- font-size: 14px;
-}
-
-h5,
-.h5 {
- font-size: 12px;
-}
-
-h6,
-.h6 {
- font-size: 10px;
-}
-textarea {
-line-height: initial;
-}
-
-.radio, .checkbox{
-padding-left: 0px;
-margin-left: 0px;
-}
-
-.checkbox input[type="checkbox"], inline input[type="checkbox"]{
-float:none;
-margin-left:0px;
-}
-
/* nav overrides */
nav .badge {
@@ -58,8 +11,21 @@ nav .badge {
cursor: pointer;
}
+nav i {
+ font-size: 14px;
+}
+
+nav ul li {
+ max-height: 49px;
+}
+
+nav img {
+ height: 48px;
+ width: 48px;
+ margin-top: 1px;
+}
+
nav .dropdown-menu {
- top: 50px;
max-height: 450px;
max-width: 300px;
overflow-y: auto;
@@ -94,6 +60,10 @@ nav .navbar-collapse .navbar-right {
float: right;
}
+nav .navbar-toggle {
+ margin-bottom: 7px;
+}
+
/* nav overrides end */
.dropdown-menu img {
@@ -109,3 +79,7 @@ nav .navbar-collapse .navbar-right {
code {
white-space: normal;
}
+
+/* Bootstrap assumes that checkboxes are on the left of labels, while it's usually the opposite in Red */
+.field.checkbox input[type="checkbox"] { margin-left: 0px; }
+.field.checkbox label { padding-left: 0px; font-weight: 700}
diff --git a/view/css/conversation.css b/view/css/conversation.css
index 4653ede89..7a5ffc2f7 100644
--- a/view/css/conversation.css
+++ b/view/css/conversation.css
@@ -1,8 +1,14 @@
+/* common */
+
+code {
+ font-family: Courier, monospace;
+ display: block;
+ overflow: auto;
+}
+
/* jot */
-#jot-title,
-#jot-category,
-#jot-pagetitle {
+.jothidden input {
border: 0px;
margin: 0px;
padding: 8px;
@@ -93,6 +99,10 @@
float: left;
}
+a.wall-item-name-link {
+ font-weight: bold !important;
+}
+
.wall-item-author {
white-space: nowrap;
overflow: hidden;
@@ -107,8 +117,16 @@
overflow: auto;
}
+.wall-item-content h1, .wall-item-content h2 {
+ font-size: 1.319em;
+}
+
+.wall-item-title h3, .wall-item-content h3, .wall-item-content h4 {
+ font-size: 1.112em;
+}
+
.wall-item-content img {
- max-width: 95%;
+ max-width: 100%;
}
.wall-item-title h3 {
@@ -182,10 +200,11 @@
.comment-edit-text-empty, .comment-edit-text-full {
float: left;
width: 100%;
- padding: 8px;
}
.comment-edit-text-empty {
+ padding: 0px 8px;
+ line-height: 28px;
height: 30px;
overflow: hidden;
resize: none;
@@ -193,6 +212,7 @@
}
.comment-edit-text-full {
+ padding: 8px;
height: 150px;
overflow: auto;
}
@@ -230,3 +250,14 @@
display: none;
margin-top: 7px;
}
+
+/* disable link handling for unknown entries */
+.dropdown-menu > li > a.disabled {
+ pointer-events: none;
+ cursor: default;
+}
+
+.item-forged {
+ color: #FF0000;
+ font-size: 1.5em !important;
+}
diff --git a/view/css/default.css b/view/css/default.css
index d47fdfe80..56173f932 100644
--- a/view/css/default.css
+++ b/view/css/default.css
@@ -23,13 +23,9 @@ aside#region_1 {
padding: 65px 7px 0px 7px;
}
-aside input[type='text'] {
- width: 100%;
-}
-
section {
width: 100%;
display: table-cell;
vertical-align: top;
- padding: 65px 10px 200px 10px;
+ padding: 65px 7px 200px 7px;
}
diff --git a/view/css/mod_cloud.css b/view/css/mod_cloud.css
new file mode 100644
index 000000000..76ac82690
--- /dev/null
+++ b/view/css/mod_cloud.css
@@ -0,0 +1,43 @@
+#files-mkdir-tools,
+#files-upload-tools,
+[id^="perms-panel-"] {
+ display: none;
+}
+
+[id^="perms-panel-"] {
+ padding: 3px 10px 0px 10px !important;
+}
+
+#attach-code,
+#link-code {
+ display: none;
+}
+
+#cloud-index {
+ width: 100%;
+}
+
+#cloud-index td:nth-child(1){
+ padding: 7px 3px 7px 10px;
+}
+
+#cloud-index th:nth-child(8),
+#cloud-index td:nth-child(8){
+ padding: 7px 3px;
+ white-space: nowrap;
+}
+
+#cloud-index th:nth-child(9),
+#cloud-index td:nth-child(9){
+ padding: 7px 10px 7px 7px;
+ white-space: nowrap;
+}
+
+.cloud-index-tool {
+ padding: 7px 10px;
+}
+
+#files-upload {
+ padding: 4px;
+ width: 100%;
+}
diff --git a/view/css/mod_connect.css b/view/css/mod_connect.css
index d1a46ec48..e1f28484a 100644
--- a/view/css/mod_connect.css
+++ b/view/css/mod_connect.css
@@ -6,6 +6,6 @@
margin-top: 25px;
}
-#sellpage-edit label{
+#sellpage-edit > label {
width: 300px;
-} \ No newline at end of file
+}
diff --git a/view/css/mod_connedit.css b/view/css/mod_connedit.css
index 8b80b4e70..82cc6bc9d 100644
--- a/view/css/mod_connedit.css
+++ b/view/css/mod_connedit.css
@@ -14,13 +14,33 @@
margin-bottom: 5px !important;
}
-.abook-pending-contact, .abook-permschange {
+.abook-pending-contact, .abook-autotext {
background: orange;
font-weight: bold;
margin: 10px;
padding: 20px 5px 10px;
}
+.abook-permschange {
+ width: 100%;
+}
+
+.abook-perms-steps {
+ float: left;
+ width: 200px;
+ height: 210px;
+ background: orange;
+ font-weight: bold;
+ margin: 10px;
+ padding: 20px 5px 10px;
+
+}
+
+.abook-permssave {
+ margin-left: 10px;
+ clear: both;
+}
+
#contact-slider {
width: 600px !important;
}
diff --git a/view/css/mod_directory.css b/view/css/mod_directory.css
index bc8054937..20facbaf8 100644
--- a/view/css/mod_directory.css
+++ b/view/css/mod_directory.css
@@ -8,17 +8,23 @@
.directory-photo {
margin-left: 25px;
}
+.directory-photo-img {
+ margin-left: auto;
+ margin-right: auto;
+ display:block;
+ width: 80px;
+ height: 80px;
+}
.directory-details {
text-align: center;
margin-left: 5px;
margin-right: 5px;
}
.directory-item {
- float: left;
- width: 225px;
- height: 260px;
overflow: hidden;
margin: 2px;
+ border-bottom: 2px solid #f1f1f1;
+ padding-bottom: 3px;
}
#directory-search-wrapper {
@@ -42,3 +48,27 @@ div.dirtagblock.widget {
float: left;
width: 225px;
}
+
+.contact-photo {
+ float: left;
+ margin-right: 16px;
+}
+
+.contact-name {
+ font-size: larger;
+}
+
+.contact-info {
+ display: block;
+ overflow: hidden;
+}
+
+.directory-item {
+ margin: 16px;
+}
+.directory-connect {
+ margin-top: 3px;
+ display:block;
+ margin-left:auto;
+ margin-right: auto;
+}
diff --git a/view/css/mod_events.css b/view/css/mod_events.css
index 657eff082..0aef13aa6 100644
--- a/view/css/mod_events.css
+++ b/view/css/mod_events.css
@@ -1,3 +1,17 @@
#event-desc-textarea, #event-location-textarea {
width: 400px;
+}
+
+#event-summary {
+ width: 400px;
+}
+
+.event-cats {
+ margin-top: 15px;
+ width: 400px;
+}
+
+.required {
+ color: #ff0000;
+ font-size: 1.2rem;
} \ No newline at end of file
diff --git a/view/css/mod_group.css b/view/css/mod_group.css
index cc5f15843..91d5b2136 100644
--- a/view/css/mod_group.css
+++ b/view/css/mod_group.css
@@ -3,7 +3,7 @@
margin-top: 30px;
}
-#group-edit-form label {
+#group-edit-form > label {
float: left;
width: 300px;
}
diff --git a/view/css/mod_locs.css b/view/css/mod_locs.css
new file mode 100644
index 000000000..95aee6aef
--- /dev/null
+++ b/view/css/mod_locs.css
@@ -0,0 +1,3 @@
+td {
+padding: 10px;
+}
diff --git a/view/css/mod_mail.css b/view/css/mod_mail.css
index c278f4d53..011c3edd5 100644
--- a/view/css/mod_mail.css
+++ b/view/css/mod_mail.css
@@ -45,8 +45,8 @@ img.mail-list-sender-photo {
#prvmail-rotator-wrapper {
float: left;
margin-top: 10px;
- margin-right: 10px;
- width: 24px;
+/* margin-right: 10px;
+ width: 24px; */
cursor: pointer;
}
diff --git a/view/css/mod_manage.css b/view/css/mod_manage.css
index 4780820ba..bb7ef566d 100644
--- a/view/css/mod_manage.css
+++ b/view/css/mod_manage.css
@@ -1,7 +1,6 @@
#channels-selected {
color: #666666;
font-size: 0.8em;
-
}
#channels-desc {
@@ -14,36 +13,41 @@
.channels-break {
margin-bottom: 15px;
}
-#selected-channel {
- float: left;
- margin-left: 0;
-}
-
-.channels-end.selected {
- clear: both;
-}
-
-#selected-channel .channel-selection {
- clear: both;
- width: 120px;
- margin: 0px auto 0px auto;
-}
.channel-selection-default {
font-size: 0.8em;
margin-bottom: 10px;
}
-#all-channels .channel-selection {
- width: 120px;
+.channel-selection {
+ width: 12em;
+ height: 16em;
float: left;
- margin-bottom: 15px;
+ text-align: center;
}
-.channels-end {
- clear: both;
+
+.channel-selection img {
+ display: block;
+ margin-left: auto;
+ margin-right: auto;
}
.channel-selection-name-link {
font-size: 1.2em;
margin-top: 10px;
-} \ No newline at end of file
+}
+
+.channel-selection-name-link .channel-name {
+ padding-top: 10px;
+ word-wrap: break-word;
+ overflow: hidden;
+}
+
+.channels-notifications-wrapper {
+ clear: both;
+ padding-top: 10px;
+}
+
+.selected-channel img {
+ border: 2px solid #ff0000;
+}
diff --git a/view/css/mod_menu.css b/view/css/mod_menu.css
new file mode 100644
index 000000000..6123ea56b
--- /dev/null
+++ b/view/css/mod_menu.css
@@ -0,0 +1,3 @@
+#menulist > li {
+ margin-top: 15px;
+} \ No newline at end of file
diff --git a/view/css/mod_message.css b/view/css/mod_message.css
index c278f4d53..011c3edd5 100644
--- a/view/css/mod_message.css
+++ b/view/css/mod_message.css
@@ -45,8 +45,8 @@ img.mail-list-sender-photo {
#prvmail-rotator-wrapper {
float: left;
margin-top: 10px;
- margin-right: 10px;
- width: 24px;
+/* margin-right: 10px;
+ width: 24px; */
cursor: pointer;
}
diff --git a/view/css/mod_new_channel.css b/view/css/mod_new_channel.css
index 3b9c80953..397601635 100644
--- a/view/css/mod_new_channel.css
+++ b/view/css/mod_new_channel.css
@@ -1,13 +1,13 @@
h2 {
margin-left: 15%;
- margin-top: 15%;
+ margin-top: 5%;
}
#newchannel-form {
font-size: 1.4em;
margin-left: 15%;
- margin-top: 5%;
+ margin-top: 20px;
width: 50%;
}
@@ -22,6 +22,10 @@ h2 {
width: 275px;
}
+.newchannel-role-morehelp {
+ float: left;
+ width: 32px;
+}
.newchannel-input {
float: left;
width: 275px;
@@ -38,3 +42,131 @@ h2 {
margin-bottom: 20px;
}
+/**
+* Stylish Select 0.4.9 - $ plugin to replace a select drop down box with a stylable unordered list
+* http://github.com/scottdarby/Stylish-Select/
+*
+* Copyright (c) 2009 Scott Darby
+*
+* Requires: jQuery 1.3 or newer
+*
+* Dual licensed under the MIT and GPL licenses.
+*/
+
+/**
+* Hide lists on page load
+---------------------------------------------------------*/
+
+.stylish-select .SSContainerDivWrapper {
+ left:-9999px;
+}
+
+/*
+* Red example
+---------------------------------------------------------*/
+.stylish-select .SSContainerDivWrapper {
+ margin:0;
+ padding:0;
+ width:290px;
+ position:absolute;
+ top:22px;
+ left:0;
+ z-index:9999;
+ font-size: 60%;
+ line-height: 1.1;
+}
+
+.stylish-select a {
+ font-weight: normal !important;
+}
+
+.stylish-select ul.newList {
+ margin:0;
+ padding:0;
+ list-style:none;
+ color:#000;
+ background:#fff;
+ border:1px solid #ccc;
+ overflow:auto;
+}
+
+.stylish-select ul.newList * {
+ margin:0;
+ padding:0;
+}
+
+
+.stylish-select ul.newList a {
+ color: #000;
+ text-decoration:none;
+ display:block;
+ padding:3px 8px;
+}
+
+.stylish-select .newListSelected {
+ width:285px;
+ color:#000;
+ height:19px;
+ padding:3px 0 0 6px;
+ float:left;
+ background:url(select-bg.png) no-repeat;
+}
+
+.stylish-select ul.newList li a:focus {
+ -moz-outline-style: none;
+}
+
+.stylish-select .selectedTxt {
+ width:258px;
+ overflow:hidden;
+ height:18px;
+ font-size: 90%;
+ padding:0 23px 0 0;
+}
+
+.stylish-select .hiLite {
+ background:#650101!important;
+ color:#fff!important;
+}
+
+.stylish-select .newListHover {
+ background:#ccc!important;
+ color:#000!important;
+ cursor:default;
+}
+
+.stylish-select .newListDisabled {
+ opacity: 0.6;
+ -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=60)";
+ filter: alpha(opacity=60);
+}
+
+.stylish-select .newListItemDisabled {
+ opacity: 0.6;
+ -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=60)";
+ filter: alpha(opacity=60);
+}
+
+.stylish-select .newListOptionDisabled {
+ opacity: 0.6;
+ -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=60)";
+ filter: alpha(opacity=60);
+}
+
+.stylish-select .newListSelHover,
+.stylish-select .newListSelFocus {
+ background-position:0 -22px;
+ cursor:default;
+}
+
+.stylish-select .newListOptionTitle {
+ font-weight:bold;
+}
+
+.stylish-select .newListOptionTitle ul {
+ margin:3px 0 0;
+}
+
+.stylish-select .newListOptionTitle li {
+ font-weight:normal;
+} \ No newline at end of file
diff --git a/view/css/mod_photos.css b/view/css/mod_photos.css
index 58a9bea38..a2b3459cf 100644
--- a/view/css/mod_photos.css
+++ b/view/css/mod_photos.css
@@ -1,167 +1,30 @@
-
-
-.photo-top-photo, .photo-album-photo {
- padding: 10px;
- max-width: 300px;
-}
-
-
.photos-end {
clear: both;
margin-bottom: 25px;
}
-#photo-prev-link, #photo-next-link {
- padding: 10px;
- float: left;
-}
-
-#photo-photo {
- float: left;
-}
-
-#photo-photo-end {
- clear: both;
-}
-
-.photo-album-image-wrapper {
- float: left;
- margin-top: 15px;
- margin-right: 15px;
- margin-left: 15px;
-}
-.photo-album-image-wrapper .caption {
- display: none;
- width: 100%;
- bottom: 0px;
- padding: 0.5em 0.5em 0px 0.5em;
- margin: 0px;
-}
-.photo-album-image-wrapper a:hover .caption {
- display:block;
-}
-
-#photo-album-end {
- clear: both;
- margin-bottom: 25px;
-}
-
-.photo-top-image-wrapper {
- float: left;
- margin-top: 15px;
- margin-right: 15px;
- margin-left: 15px;
- margin-bottom: 15px;
-}
-.photo-top-album-name {
- width: 100%;
- min-height: 2em;
- bottom: 0px;
- padding: 0px 3px;
- padding-top: 0.5em;
-}
-#photo-top-end {
- clear: both;
-}
-
-#photo-top-links {
- margin-bottom: 30px;
- margin-left: 30px;
-}
-
-#photos-upload-newalbum-div {
- float: left;
- width: 175px;
+.photo-item-tools-left,
+.photo-item-tools-right {
+ padding: 7px 10px;
}
-#photos-upload-noshare {
- margin-bottom: 10px;
-}
-#photos-upload-existing-album-text {
- float: left;
- width: 175px;
-}
-#photos-upload-newalbum {
- float: left;
-}
-#photos-upload-album-select {
- float: left;
+.photo-like-rotator {
+ margin-top: 23px;
+ margin-right: 5px;
}
-#photos-upload-spacer {
- margin-top: 25px;
-}
-#photos-upload-new-end, #photos-upload-exist-end {
- clear: both;
-}
-#photos-upload-exist-end {
- margin-bottom: 15px;
-}
-#photos-upload-submit {
- margin-top: 15px;
-}
-
-
-#photos-upload-select-files-text {
- margin-top: 15px;
- margin-bottom: 15px;
-}
-
-#photo-edit-caption-label, #photo-edit-tags-label, #photo-edit-albumname-label, #photo-edit-rotate-label {
- float: left;
- width: 150px;
-}
-
-#photo-edit-perms-end {
- margin-bottom: 15px;
-}
-
-#photo-edit-caption, #photo-edit-newtag, #photo-edit-albumname, #photo-edit-rotate {
- float: left;
- margin-bottom: 25px;
-}
-#photo-edit-link-wrap {
- margin-bottom: 15px;
-}
-#photo-like-div {
- margin-bottom: 25px;
-}
-
-#photo-edit-caption-end, #photo-edit-tags-end, #photo-edit-albumname-end, #photo-edit-rotate-end {
- clear: both;
-}
-
-#photo-edit-rotate-end {
- margin-bottom: 15px;
-}
-
-#photo-edit-delete-button {
- margin-left: 200px;
-}
-#photo-edit-end {
- margin-bottom: 35px;
-}
-#photo-caption {
- margin-top: 15px;
- margin-bottom: 15px;
-}
-
-#in-this-photo-text {
- margin-left: 30px;
-}
-
-#in-this-photo {
- margin-left: 60px;
- margin-top: 10px;
- margin-bottom: 20px;
+#photo-photo {
+ display: table;
+ margin: 0 auto;
}
-#photo-album-edit-submit, #photo-album-edit-drop {
- margin-top: 15px;
- margin-bottom: 15px;
+#photo-edit,
+#photo-album-edit-wrapper,
+#photo-upload-form {
+ display: none;
}
-#photo-album-edit-drop {
- margin-left: 200px;
+#photos-upload-choose {
+ padding: 4px;
+ width: 100%;
}
-
diff --git a/view/css/mod_profile.css b/view/css/mod_profile.css
new file mode 100644
index 000000000..e1ceae7f7
--- /dev/null
+++ b/view/css/mod_profile.css
@@ -0,0 +1,16 @@
+.aprofile dt {
+ font-weight: bold;
+}
+
+.profile-thing-list {
+ list-style-type: none;
+}
+
+.profile-thing-list img {
+ margin-bottom: 5px;
+}
+
+.profile-thing-list > li {
+ margin-bottom: 15px;
+}
+
diff --git a/view/css/mod_profiles.css b/view/css/mod_profiles.css
index 5f930248f..35ef73cec 100644
--- a/view/css/mod_profiles.css
+++ b/view/css/mod_profiles.css
@@ -1,8 +1,8 @@
#profile-edit-default-desc {
- color: #FF0000;
- border: 1px solid #FF8888;
- background-color: #FFEEEE;
- padding: 7px;
+ background: none repeat scroll 0 0 orange;
+ font-weight: bold;
+ margin: 10px;
+ padding: 20px 5px 10px;
}
#profile-edit-clone-link-wrapper {
@@ -13,16 +13,10 @@
}
-#profile-listing-desc, #profile-stuff-link {
- margin-left: 30px;
-}
-
-#profile-listing-new-link-wrapper {
- margin-left: 30px;
- margin-bottom: 30px;
+#profile-listing-desc, #profile-stuff-link, #profile-listing-new-link-wrapper {
+ margin: 15px 10px 15px 0;
}
-
#profile-edit-links-end {
clear: both;
margin-bottom: 15px;
diff --git a/view/css/mod_settings.css b/view/css/mod_settings.css
index 651167b47..cd66684f8 100644
--- a/view/css/mod_settings.css
+++ b/view/css/mod_settings.css
@@ -12,6 +12,10 @@ ul#settings-privacy-macros {
margin-top: 15px;
}
+#settings-default-perms {
+ margin-top: 15px;
+}
+
#settings-perm-advanced {
margin-top: 15px;
}
@@ -24,7 +28,7 @@ ul#settings-privacy-macros {
margin-bottom: 10px;
}
-#settings-permissions-wrapper .field label{
+#settings-permissions-wrapper .field > label {
width: 350px;
}
@@ -37,11 +41,11 @@ ul#settings-privacy-macros {
margin-bottom: 45px;
}
-#settings-notifications label {
+#settings-notifications .field > label {
margin-left: 20px;
width: 330px;
}
-#settings-notify-desc, #settings-activity-desc {
+#settings-notify-desc, #settings-activity-desc, #settings-vnotify-desc {
font-weight: bold;
margin-bottom: 15px;
}
@@ -59,4 +63,4 @@ ul#settings-privacy-macros {
#settings-channel-menu-end {
clear: both;
margin-bottom: 15px;
-} \ No newline at end of file
+}
diff --git a/view/css/mod_thing.css b/view/css/mod_thing.css
index 125230b38..1b091860b 100644
--- a/view/css/mod_thing.css
+++ b/view/css/mod_thing.css
@@ -4,8 +4,7 @@
margin-left: 0;
}
-
-.thing-label, .field label, .thing-verb-label, .thing-profile-label{
+.thing-label, .field > label, .thing-verb-label, .thing-profile-label{
float: left;
width: 350px;
}
@@ -18,4 +17,4 @@
.thing-field-end {
clear: both;
-} \ No newline at end of file
+}
diff --git a/view/css/redable.css b/view/css/redable.css
index c0f253d55..b8e31eab0 100644
--- a/view/css/redable.css
+++ b/view/css/redable.css
@@ -14,15 +14,15 @@ main {
height: 100%;
}
-@media screen and (max-width: 767px) {
+@media screen and (max-width: 801px) {
main {
- left: -14rem !important;
- right: -14rem !important;
- width: calc(100% + 14rem + 14rem) !important;
+ left: -14rem !important;
+ right: -14rem !important;
+ width: calc(100% + 14rem + 14rem) !important;
}
#profile-photo-wrapper {
-display:none;
+ display:none;
}
}
diff --git a/view/css/widgets.css b/view/css/widgets.css
index 8607cb562..4db87e633 100644
--- a/view/css/widgets.css
+++ b/view/css/widgets.css
@@ -1,13 +1,21 @@
-
-/* Easiest way to indent the widget body - indent the entire widget and then shift the header label back to the left */
-
.widget {
- margin-left: 10px;
- padding: 0 8px 8px 8px;
+ margin-bottom: 10px;
+ padding: 10px;
}
.widget h3 {
- margin-left: -10px;
+ margin-top: 0px;
+}
+
+
+.widget .nav-pills > li > a {
+ padding: 6px 10px;
+}
+
+.widget-input {
+ width: 100%;
+ border-top-right-radius: 0px;
+ border-bottom-right-radius: 0px;
}
/* suggest */
@@ -29,63 +37,16 @@
/* notes */
#note-text {
+ padding: 5px;
width: 100%;
resize: vertical;
height: 150px;
}
-#note-save {
- margin-top: 10px;
-}
-
/* saved searches */
-
-#netsearch-box #search-submit {
- margin: 10px 0 7px 0;
-}
-
-#netsearch-box #search-save {
- margin: 9px 0 7px 6px;
-}
-.search-save {
- margin: 7px 0 7px 7px;
-}
-
-.saved-search-li {
- margin-top: 3px;
-}
-
-.saved-search-li i {
- opacity: 0;
-}
-
-.saved-search-li:hover i {
- opacity: 1;
-}
-
-.saved-search-icon {
- float: right;
-}
-
-.savedsearchterm {
- display: block;
- width: 150px;
- overflow: hidden;
-}
-
-/* peoplefind */
-
-#peoplefind-sidebar .btn {
- margin: 10px 0 10px 0;
-}
-
-#side-peoplefind-url {
- margin-top: 5px;
-}
-
-#side-peoplefind-url {
- font-size: 1em;
+#saved-search-list {
+ margin-top: 2px;
}
@@ -95,54 +56,24 @@
/* posted date */
.posted-date-selector-months {
- margin-left: 10px;
+ margin: 2px 0px 0px 10px;
}
-#datebrowse-sidebar select {
- width: 190px;
- max-width: 190px;
- max-height: 150px;
+#posted-date-selector li:not(:first-child) {
+ margin-top: 2px;
}
-/* categories */
-
-
-/* group */
-
-#group-sidebar {
- margin-bottom: 10px;
+#posted-date-selector-drop li:not(:first-child) {
+ margin-top: 2px;
}
-#sidebar-new-group {
- margin-bottom: 10px;
-}
-
-#sidebar-group-list .icon, #sidebar-group-list .iconspacer {
- display: inline-block;
- height: 12px;
- width: 12px;
-}
-
-.sidebar-group-name {
- display: block;
- width: 170px;
- overflow: hidden;
-}
-
-#sidebar-group-ul {
- margin-bottom: 10px;
-}
+/* categories */
-#sidebar-group-list li {
- margin-top: 3px;
-}
-.sidebar-group-li input {
- float: right;
-}
+/* group */
-.groupsideedit {
- float: right;
+a.group-edit-tool {
+ z-index: 1;
}
.group-edit-icon {
@@ -167,12 +98,9 @@ li:hover .group-edit-icon {
/* photo albums */
-#photo-albums-upload-link {
- margin-top: 10px;
-}
/* Chatrooms */
.chatroomlist td {
padding: 0 5px 0;
-} \ No newline at end of file
+}
diff --git a/view/de/cmnt_received_eml.tpl b/view/de/cmnt_received_eml.tpl
deleted file mode 100644
index 500c93eb4..000000000
--- a/view/de/cmnt_received_eml.tpl
+++ /dev/null
@@ -1,17 +0,0 @@
-
-Hallo $username,
-
-'$from' hat einen Pinnwandeintrag kommentiert dem du auch folgst.
-
------
-$body
------
-
-Um die gesamte Konversation zu sehen melde dich bitte bei $siteurl an:
-
-$display
-
-Danke für die Aufmerksamkeit
- $sitename Administrator
-
-
diff --git a/view/de/cmnt_received_html_body_eml.tpl b/view/de/cmnt_received_html_body_eml.tpl
deleted file mode 100644
index db7f829bc..000000000
--- a/view/de/cmnt_received_html_body_eml.tpl
+++ /dev/null
@@ -1,25 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional //EN">
-<html>
-<head>
- <title>Friendica Nachricht</title>
- <meta http-equiv="Content-Type" content="text/html;charset=utf-8" />
-</head>
-<body>
-<table style="border:1px solid #ccc">
- <tbody>
- <tr><td colspan="2" style="background:#084769; color:#FFFFFF; font-weight:bold; font-family:'lucida grande', tahoma, verdana,arial, sans-serif; padding: 4px 8px; vertical-align: middle; font-size:16px; letter-spacing: -0.03em; text-align: left;"><img style="width:32px;height:32px; float:left;" src='$siteurl/images/friendica-32.png'><div style="padding:7px; margin-left: 5px; float:left; font-size:18px;letter-spacing:1px;">Friendica</div><div style="clear: both;"></div></td></tr>
-
- <tr><td style="padding-top:22px;" colspan="2">$from hat einen Beitrag kommentiert dem du auch folgst.</td></tr>
-
-
- <tr><td style="padding-left:22px;padding-top:22px;width:60px;" valign="top" rowspan=3><a href="$url"><img style="border:0px;width:48px;height:48px;" src="$thumb"></a></td>
- <td style="padding-top:22px;"><a href="$url">$from</a></td></tr>
- <tr><td style="padding-bottom:5px;"></td></tr>
- <tr><td style="padding-right:22px;">$body</td></tr>
- <tr><td style="padding-top:11px;padding-bottom:11px;" colspan="2">Bitte melde dich an um <a href="$display">die komplette Unterhaltung anzuzeigen</a>.</td></tr>
- <tr><td></td><td>Beste Gr&uuml;&szlig;e,</td></tr>
- <tr><td></td><td>$sitename Administrator</td></tr>
- </tbody>
-</table>
-</body>
-</html>
diff --git a/view/de/cmnt_received_text_body_eml.tpl b/view/de/cmnt_received_text_body_eml.tpl
deleted file mode 100644
index e00a868af..000000000
--- a/view/de/cmnt_received_text_body_eml.tpl
+++ /dev/null
@@ -1,16 +0,0 @@
-Hallo $username,
-
-'$from' hat einen Pinnwandeintrag kommentiert dem du auch folgst.
-
------
-$body
------
-
-Um die gesamte Konversation zu sehen melde dich bitte bei $siteurl an:
-
-$display
-
-Danke fŸr die Aufmerksamkeit
- $sitename Administrator
-
-
diff --git a/view/de/follow_notify_eml.tpl b/view/de/follow_notify_eml.tpl
deleted file mode 100644
index ba07b19da..000000000
--- a/view/de/follow_notify_eml.tpl
+++ /dev/null
@@ -1,14 +0,0 @@
-
-Dear {{$myname}},
-
-You have a new follower at {{$sitename}} - '{{$requestor}}'.
-
-You may visit their profile at {{$url}}.
-
-Please login to your site to approve or ignore/cancel the request.
-
-{{$siteurl}}
-
-Regards,
-
- {{$sitename}} administrator
diff --git a/view/de/friend_complete_eml.tpl b/view/de/friend_complete_eml.tpl
deleted file mode 100644
index 1c647b994..000000000
--- a/view/de/friend_complete_eml.tpl
+++ /dev/null
@@ -1,22 +0,0 @@
-
-Dear {{$username}},
-
- Great news... '{{$fn}}' at '{{$dfrn_url}}' has accepted
-your connection request at '{{$sitename}}'.
-
-You are now mutual friends and may exchange status updates, photos, and email
-without restriction.
-
-Please visit your 'Connnections' page at {{$sitename}} if you wish to make
-any changes to this relationship.
-
-{{$siteurl}}
-
-[For instance, you may create a separate profile with information that is not
-available to the general public - and assign viewing rights to '{{$fn}}'].
-
-Sincerely,
-
- {{$sitename}} Administrator
-
-
diff --git a/view/de/htconfig.tpl b/view/de/htconfig.tpl
index 493cb5d00..550b018fe 100644
--- a/view/de/htconfig.tpl
+++ b/view/de/htconfig.tpl
@@ -33,6 +33,7 @@ $a->config['system']['baseurl'] = '{{$siteurl}}';
$a->config['system']['sitename'] = "Red Matrix";
$a->config['system']['location_hash'] = '{{$site_id}}';
+
// Your choices are REGISTER_OPEN, REGISTER_APPROVE, or REGISTER_CLOSED.
// Be certain to create your own personal account before setting
// REGISTER_CLOSED. 'register_text' (if set) will be displayed prominently on
@@ -44,13 +45,34 @@ $a->config['system']['register_policy'] = REGISTER_OPEN;
$a->config['system']['register_text'] = '';
$a->config['system']['admin_email'] = '{{$adminmail}}';
-// Maximum size of an imported message, 0 is unlimited
+// Recommend you leave this set to 1. Set to 0 to let people register without
+// proving they own the email address they register with.
-$a->config['system']['max_import_size'] = 200000;
+$a->config['system']['verify_email'] = 1;
+
+
+// Site access restrictions. By default we will create private sites.
+// Your choices are ACCESS_PRIVATE, ACCESS_PAID, ACCESS_TIERED, and ACCESS_FREE.
+// If you leave REGISTER_OPEN above, anybody may register on your
+// site, however your site will not be listed anywhere as an open
+// registration hub. We will use the system access policy (below)
+// to determine whether or not to list your site in the directory
+// as an open hub where anybody may create accounts. Your choice of
+// paid, tiered, or free determines how these listings will be presented.
+
+
+$a->config['system']['access_policy'] = ACCESS_PRIVATE;
-// maximum size of uploaded photos
+// If you operate a public site, you might wish that people are directed
+// to a "sellpage" where you can describe for features or policies or service plans in depth.
+// This must be an absolute URL beginning with http:// or https:// .
-$a->config['system']['maximagesize'] = 800000;
+$a->config['system']['sellpage'] = '';
+
+// Maximum size of an imported message, 0 is unlimited
+// FIXME - NOT currently implemented.
+
+$a->config['system']['max_import_size'] = 200000;
// Location of PHP command line processor
@@ -68,3 +90,14 @@ $a->config['system']['directory_mode'] = DIRECTORY_MODE_NORMAL;
$a->config['system']['theme'] = 'redbasic';
+
+// PHP error logging setup
+// Before doing this ensure that the webserver has permission
+// to create and write to php.out in the top level Red directory,
+// or change the name (below) to a file/path where this is allowed.
+
+// Uncomment the following 4 lines to turn on PHP error logging.
+//error_reporting(E_ERROR | E_WARNING | E_PARSE );
+//ini_set('error_log','php.out');
+//ini_set('log_errors','1');
+//ini_set('display_errors', '0');
diff --git a/view/de/intro_complete_eml.tpl b/view/de/intro_complete_eml.tpl
deleted file mode 100644
index 2c2428d68..000000000
--- a/view/de/intro_complete_eml.tpl
+++ /dev/null
@@ -1,22 +0,0 @@
-
-Dear {{$username}},
-
- '{{$fn}}' at '{{$dfrn_url}}' has accepted
-your connection request at '{{$sitename}}'.
-
- '{{$fn}}' has chosen to accept you a "fan", which restricts
-some forms of communication - such as private messaging and some profile
-interactions. If this is a celebrity or community page, these settings were
-applied automatically.
-
- '{{$fn}}' may choose to extend this into a two-way or more permissive
-relationship in the future.
-
- You will start receiving public status updates from '{{$fn}}',
-which will appear on your 'Matrix' page at
-
-{{$siteurl}}
-
-Sincerely,
-
- {{$sitename}} Administrator
diff --git a/view/de/lostpass_eml.tpl b/view/de/lostpass_eml.tpl
index 3b79d2791..2175d2e5d 100644
--- a/view/de/lostpass_eml.tpl
+++ b/view/de/lostpass_eml.tpl
@@ -1,32 +1,32 @@
-Dear {{$username}},
- A request was recently received at {{$sitename}} to reset your account
-password. In order to confirm this request, please select the verification link
-below or paste it into your web browser address bar.
+Hallo {{$username}},
+ auf {{$sitename} wurde eine Rücksetzung Deines Passwortes angefordert.
+Bitte klicke auf den Link unten, um diese Anforderung zu bestätigen,
+oder kopiere den Link und füge ihn in die Adresszeile Deines Browsers ein.
-If you did NOT request this change, please DO NOT follow the link
-provided and ignore and/or delete this email.
+Falls Du KEINE Rücksetzung Deines Passwortes angefordert hast, folge dem Link
+NICHT! Ignoriere einfach diese E-Mail.
-Your password will not be changed unless we can verify that you
-issued this request.
+Dein Passwort wird nicht geändert, wenn Du nicht auf den
+Link klickst.
-Follow this link to verify your identity:
+Folge diesem Link, um Dein Passwort zurückzusetzen:
{{$reset_link}}
-You will then receive a follow-up message containing the new password.
+Du wirst dann eine E-Mail mit dem neuen Passwort bekommen.
-You may change that password from your account settings page after logging in.
+Du solltest das Passwort nach dem Einloggen in den Einstellungen ändern.
-The login details are as follows:
+Die Anmeldedetails lauten wie folgt:
-Site Location: {{$siteurl}}
-Login Name: {{$email}}
+Adresse des Servers: {{$siteurl}}
+Username: {{$email}}
-Sincerely,
- {{$sitename}} Administrator
+Viele Grüße,
+ der Administrator von {{$sitename}}
-
+ \ No newline at end of file
diff --git a/view/de/mail_received_html_body_eml.tpl b/view/de/mail_received_html_body_eml.tpl
deleted file mode 100644
index 34eea59da..000000000
--- a/view/de/mail_received_html_body_eml.tpl
+++ /dev/null
@@ -1,26 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional //EN">
-<html>
-<head>
- <title>Friendica Nachricht</title>
- <meta http-equiv="Content-Type" content="text/html;charset=utf-8" />
-</head>
-<body>
-<table style="border:1px solid #ccc">
- <tbody>
- <tr><td colspan="2" style="background:#084769; color:#FFFFFF; font-weight:bold; font-family:'lucida grande', tahoma, verdana,arial, sans-serif; padding: 4px 8px; vertical-align: middle; font-size:16px; letter-spacing: -0.03em; text-align: left;"><img style="width:32px;height:32px; float:left;" src='$siteurl/images/friendica-32.png'><div style="padding:7px; margin-left: 5px; float:left; font-size:18px;letter-spacing:1px;">Friendica</div><div style="clear: both;"></div></td></tr>
-
-
- <tr><td style="padding-top:22px;" colspan="2">$fromi hat dir eine private Nachricht auf $siteName gesendet.</td></tr>
-
-
- <tr><td style="padding-left:22px;padding-top:22px;width:60px;" valign="top" rowspan=3><a href="$url"><img style="border:0px;width:48px;height:48px;" src="$thumb"></a></td>
- <td style="padding-top:22px;"><a href="$url">$from</a></td></tr>
- <tr><td style="font-weight:bold;padding-bottom:5px;">$title</td></tr>
- <tr><td style="padding-right:22px;">$htmlversion</td></tr>
- <tr><td style="padding-top:11px;padding-bottom:11px;" colspan="2">Bitte melde dich auf <a href="$siteurl/message">$siteurl/message</a> an um die Nachricht zu bearbeiten.</td></tr>
- <tr><td></td><td>Beste Gr&uuml;&szlig;e,</td></tr>
- <tr><td></td><td>$siteName Administrator</td></tr>
- </tbody>
-</table>
-</body>
-</html>
diff --git a/view/de/mail_received_text_body_eml.tpl b/view/de/mail_received_text_body_eml.tpl
deleted file mode 100644
index f5c90cfed..000000000
--- a/view/de/mail_received_text_body_eml.tpl
+++ /dev/null
@@ -1,11 +0,0 @@
-Du hast eine neue private Nachricht von '$from' auf '$siteName' erhhalten.
-
-$title
-
-$textversion
-
-Bitte melde dich unter $siteurl an um deine privaten Nachrichte zu lesen und zu
-beantworten.
-
-Viele Gr٤e,
-$siteName Administrator
diff --git a/view/de/messages.po b/view/de/messages.po
index 5c9b7bad4..247cc2ce9 100644
--- a/view/de/messages.po
+++ b/view/de/messages.po
@@ -3,25 +3,30 @@
# This file is distributed under the same license as the Red package.
#
# Translators:
-# alexej <info@pixelbits.de>, 2013
-# alexej <info@pixelbits.de>, 2013
-# balder <andreas.bauer@ymail.com>, 2013
-# balder <andreas.bauer@ymail.com>, 2013
+# Alex <info@pixelbits.de>, 2013
+# Alex <info@pixelbits.de>, 2013
+# Balder <andreas.bauer@ymail.com>, 2013
+# Balder <andreas.bauer@ymail.com>, 2013
# bavatar <tobias.diekershoff@gmx.net>, 2013
-# EinerVonVielen <tom@jfellow.net>, 2013
-# EinerVonVielen <tom@jfellow.net>, 2013
-# Fraengii <frank@lumina-verte.org>, 2013
-# Fraengii <frank@lumina-verte.org>, 2013
-# Oliver <post@toktan.org>, 2013
+# JooBee <d13@raclan.de>, 2014
+# Einer von Vielen <tom@jfellow.net>, 2013
+# Einer von Vielen <tom@jfellow.net>, 2013
+# Ettore Atalan <atalanttore@googlemail.com>, 2014
+# Frank Dieckmann <frank@lumina-verte.org>, 2013
+# Frank Dieckmann <frank@lumina-verte.org>, 2013
+# Oliver <post@toktan.org>, 2013-2014
+# Phellmes <forum@suschka.de>, 2014
# bavatar <tobias.diekershoff@gmx.net>, 2013-2014
+# do.t <tobias@tonstrom.de>, 2014
# zottel <transifex@zottel.net>, 2013-2014
+# sasiflo <transiflex@sasiflo.de>, 2014
msgid ""
msgstr ""
"Project-Id-Version: Red Matrix\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2014-02-21 00:03-0800\n"
-"PO-Revision-Date: 2014-02-22 12:04+0000\n"
-"Last-Translator: bavatar <tobias.diekershoff@gmx.net>\n"
+"POT-Creation-Date: 2014-11-14 00:04-0800\n"
+"PO-Revision-Date: 2014-11-24 10:45+0000\n"
+"Last-Translator: zottel <transifex@zottel.net>\n"
"Language-Team: German (http://www.transifex.com/projects/p/red-matrix/language/de/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
@@ -29,183 +34,899 @@ msgstr ""
"Language: de\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-#: ../../include/widgets.php:29 ../../include/contact_widgets.php:87
-msgid "Categories"
-msgstr "Kategorien"
+#: ../../include/dba/dba_driver.php:132
+#, php-format
+msgid "Cannot locate DNS info for database server '%s'"
+msgstr "Kann die DNS-Informationen für den Datenbank-Server '%s' nicht finden"
+
+#: ../../include/photo/photo_driver.php:680 ../../include/photos.php:52
+#: ../../mod/photos.php:91 ../../mod/photos.php:654
+#: ../../mod/profile_photo.php:142 ../../mod/profile_photo.php:301
+#: ../../mod/profile_photo.php:423
+msgid "Profile Photos"
+msgstr "Profilfotos"
+
+#: ../../include/conversation.php:120 ../../include/diaspora.php:1923
+#: ../../include/text.php:1747 ../../mod/subthread.php:72
+#: ../../mod/subthread.php:174 ../../mod/tagger.php:45 ../../mod/like.php:298
+msgid "photo"
+msgstr "Foto"
+
+#: ../../include/conversation.php:123 ../../include/text.php:1750
+#: ../../mod/tagger.php:49
+msgid "event"
+msgstr "Termin"
+
+#: ../../include/conversation.php:126 ../../mod/like.php:89
+msgid "channel"
+msgstr "Kanal"
+
+#: ../../include/conversation.php:148 ../../include/diaspora.php:1923
+#: ../../include/text.php:1753 ../../mod/subthread.php:72
+#: ../../mod/subthread.php:174 ../../mod/tagger.php:53 ../../mod/like.php:298
+msgid "status"
+msgstr "Status"
+
+#: ../../include/conversation.php:150 ../../include/text.php:1755
+#: ../../mod/tagger.php:55
+msgid "comment"
+msgstr "Kommentar"
+
+#: ../../include/conversation.php:164 ../../include/diaspora.php:1952
+#: ../../mod/like.php:344
+#, php-format
+msgid "%1$s likes %2$s's %3$s"
+msgstr "%1$s gefällt %2$ss %3$s"
+
+#: ../../include/conversation.php:167 ../../mod/like.php:346
+#, php-format
+msgid "%1$s doesn't like %2$s's %3$s"
+msgstr "%1$s gefällt %2$ss %3$s nicht"
+
+#: ../../include/conversation.php:204
+#, php-format
+msgid "%1$s is now connected with %2$s"
+msgstr "%1$s ist jetzt mit %2$s verbunden"
+
+#: ../../include/conversation.php:239
+#, php-format
+msgid "%1$s poked %2$s"
+msgstr "%1$s stupste %2$s an"
+
+#: ../../include/conversation.php:243 ../../include/text.php:905
+msgid "poked"
+msgstr "stupste"
+
+#: ../../include/conversation.php:261 ../../mod/mood.php:63
+#, php-format
+msgctxt "mood"
+msgid "%1$s is %2$s"
+msgstr "%1$s ist %2$s"
+
+#: ../../include/conversation.php:637 ../../include/ItemObject.php:126
+msgid "Select"
+msgstr "Auswählen"
+
+#: ../../include/conversation.php:638 ../../include/RedDAV/RedBrowser.php:251
+#: ../../include/apps.php:250 ../../include/ItemObject.php:120
+#: ../../mod/photos.php:1069 ../../mod/connedit.php:476
+#: ../../mod/thing.php:234 ../../mod/settings.php:612 ../../mod/group.php:176
+#: ../../mod/admin.php:730 ../../mod/admin.php:861
+msgid "Delete"
+msgstr "Löschen"
+
+#: ../../include/conversation.php:645 ../../include/ItemObject.php:89
+msgid "Private Message"
+msgstr "Private Nachricht"
+
+#: ../../include/conversation.php:652 ../../include/ItemObject.php:194
+msgid "Message signature validated"
+msgstr "Signatur überprüft"
+
+#: ../../include/conversation.php:653 ../../include/ItemObject.php:195
+msgid "Message signature incorrect"
+msgstr "Signatur nicht korrekt"
+
+#: ../../include/conversation.php:674
+#, php-format
+msgid "View %s's profile @ %s"
+msgstr "%ss Profil auf %s ansehen"
+
+#: ../../include/conversation.php:689
+msgid "Categories:"
+msgstr "Kategorien:"
+
+#: ../../include/conversation.php:690
+msgid "Filed under:"
+msgstr "Gespeichert unter:"
+
+#: ../../include/conversation.php:698 ../../include/ItemObject.php:265
+#, php-format
+msgid " from %s"
+msgstr "von %s"
+
+#: ../../include/conversation.php:701 ../../include/ItemObject.php:268
+#, php-format
+msgid "last edited: %s"
+msgstr "zuletzt bearbeitet: %s"
+
+#: ../../include/conversation.php:702 ../../include/ItemObject.php:269
+#, php-format
+msgid "Expires: %s"
+msgstr "Verfällt: %s"
+
+#: ../../include/conversation.php:717
+msgid "View in context"
+msgstr "Im Zusammenhang anschauen"
+
+#: ../../include/conversation.php:719 ../../include/conversation.php:1153
+#: ../../include/ItemObject.php:310 ../../mod/photos.php:977
+#: ../../mod/editblock.php:152 ../../mod/editlayout.php:148
+#: ../../mod/editpost.php:121 ../../mod/editwebpage.php:183
+#: ../../mod/mail.php:234 ../../mod/mail.php:349
+msgid "Please wait"
+msgstr "Bitte warten"
+
+#: ../../include/conversation.php:843
+msgid "remove"
+msgstr "lösche"
+
+#: ../../include/conversation.php:847 ../../include/nav.php:257
+msgid "Loading..."
+msgstr "Lädt ..."
+
+#: ../../include/conversation.php:848
+msgid "Delete Selected Items"
+msgstr "Lösche die ausgewählten Elemente"
+
+#: ../../include/conversation.php:942
+msgid "View Source"
+msgstr "Quelle anzeigen"
+
+#: ../../include/conversation.php:943
+msgid "Follow Thread"
+msgstr "Unterhaltung folgen"
+
+#: ../../include/conversation.php:944
+msgid "View Status"
+msgstr "Status ansehen"
+
+#: ../../include/conversation.php:945 ../../include/nav.php:99
+#: ../../mod/connedit.php:429 ../../mod/connedit.php:544
+msgid "View Profile"
+msgstr "Profil ansehen"
-#: ../../include/widgets.php:115 ../../include/widgets.php:155
-#: ../../include/Contact.php:107 ../../include/identity.php:632
-#: ../../mod/directory.php:184 ../../mod/match.php:62
-#: ../../mod/dirprofile.php:170 ../../mod/suggest.php:51
+#: ../../include/conversation.php:946
+msgid "View Photos"
+msgstr "Fotos ansehen"
+
+#: ../../include/conversation.php:947
+msgid "Matrix Activity"
+msgstr "Matrix-Aktivität"
+
+#: ../../include/conversation.php:948 ../../include/widgets.php:135
+#: ../../include/widgets.php:175 ../../include/Contact.php:107
+#: ../../include/identity.php:840 ../../mod/directory.php:224
+#: ../../mod/suggest.php:51 ../../mod/match.php:62
msgid "Connect"
msgstr "Verbinden"
-#: ../../include/widgets.php:117 ../../mod/suggest.php:53
+#: ../../include/conversation.php:949
+msgid "Edit Contact"
+msgstr "Kontakt bearbeiten"
+
+#: ../../include/conversation.php:950
+msgid "Send PM"
+msgstr "Sende PN"
+
+#: ../../include/conversation.php:951 ../../include/apps.php:143
+msgid "Poke"
+msgstr "Anstupsen"
+
+#: ../../include/conversation.php:1003 ../../include/RedDAV/RedBrowser.php:163
+#: ../../include/apps.php:331 ../../include/apps.php:382
+#: ../../mod/photos.php:713 ../../mod/photos.php:1131
+#: ../../mod/connedit.php:512
+msgid "Unknown"
+msgstr "Unbekannt"
+
+#: ../../include/conversation.php:1024
+#, php-format
+msgid "%s likes this."
+msgstr "%s gefällt das."
+
+#: ../../include/conversation.php:1024
+#, php-format
+msgid "%s doesn't like this."
+msgstr "%s gefällt das nicht."
+
+#: ../../include/conversation.php:1028
+#, php-format
+msgid "<span %1$s>%2$d people</span> like this."
+msgid_plural "<span %1$s>%2$d people</span> like this."
+msgstr[0] "<span %1$s>%2$d Person</span> gefällt das."
+msgstr[1] "<span %1$s>%2$d Leuten</span> gefällt das."
+
+#: ../../include/conversation.php:1030
+#, php-format
+msgid "<span %1$s>%2$d people</span> don't like this."
+msgid_plural "<span %1$s>%2$d people</span> don't like this."
+msgstr[0] "<span %1$s>%2$d Person</span> gefällt das nicht."
+msgstr[1] "<span %1$s>%2$d Leuten</span> gefällt das nicht."
+
+#: ../../include/conversation.php:1036
+msgid "and"
+msgstr "und"
+
+#: ../../include/conversation.php:1039
+#, php-format
+msgid ", and %d other people"
+msgid_plural ", and %d other people"
+msgstr[0] ""
+msgstr[1] ", und %d andere"
+
+#: ../../include/conversation.php:1040
+#, php-format
+msgid "%s like this."
+msgstr "%s gefällt das."
+
+#: ../../include/conversation.php:1040
+#, php-format
+msgid "%s don't like this."
+msgstr "%s gefällt das nicht."
+
+#: ../../include/conversation.php:1097
+msgid "Visible to <strong>everybody</strong>"
+msgstr "Sichtbar für <strong>jeden</strong>"
+
+#: ../../include/conversation.php:1098 ../../mod/mail.php:170
+#: ../../mod/mail.php:282
+msgid "Please enter a link URL:"
+msgstr "Gib eine URL ein:"
+
+#: ../../include/conversation.php:1099
+msgid "Please enter a video link/URL:"
+msgstr "Gib einen Video-Link/URL ein:"
+
+#: ../../include/conversation.php:1100
+msgid "Please enter an audio link/URL:"
+msgstr "Gib einen Audio-Link/URL ein:"
+
+#: ../../include/conversation.php:1101
+msgid "Tag term:"
+msgstr "Schlagwort:"
+
+#: ../../include/conversation.php:1102 ../../mod/filer.php:49
+msgid "Save to Folder:"
+msgstr "Speichern in Ordner:"
+
+#: ../../include/conversation.php:1103
+msgid "Where are you right now?"
+msgstr "Wo bist Du jetzt grade?"
+
+#: ../../include/conversation.php:1104 ../../mod/editpost.php:52
+#: ../../mod/mail.php:171 ../../mod/mail.php:283
+msgid "Expires YYYY-MM-DD HH:MM"
+msgstr "Verfällt YYYY-MM-DD HH;MM"
+
+#: ../../include/conversation.php:1114 ../../include/page_widgets.php:40
+#: ../../include/ItemObject.php:608 ../../mod/photos.php:997
+#: ../../mod/webpages.php:166 ../../mod/editblock.php:173
+#: ../../mod/editlayout.php:168 ../../mod/editpost.php:140
+#: ../../mod/editwebpage.php:205
+msgid "Preview"
+msgstr "Vorschau"
+
+#: ../../include/conversation.php:1128 ../../mod/photos.php:976
+#: ../../mod/editblock.php:198 ../../mod/editlayout.php:193
+#: ../../mod/editwebpage.php:230 ../../mod/layouts.php:168
+msgid "Share"
+msgstr "Teilen"
+
+#: ../../include/conversation.php:1130 ../../mod/editwebpage.php:170
+msgid "Page link title"
+msgstr "Seitentitel-Link"
+
+#: ../../include/conversation.php:1133
+msgid "Post as"
+msgstr "Posten als"
+
+#: ../../include/conversation.php:1134 ../../mod/editblock.php:144
+#: ../../mod/editlayout.php:140 ../../mod/editpost.php:113
+#: ../../mod/editwebpage.php:175 ../../mod/mail.php:231 ../../mod/mail.php:345
+msgid "Upload photo"
+msgstr "Foto hochladen"
+
+#: ../../include/conversation.php:1135
+msgid "upload photo"
+msgstr "Foto hochladen"
+
+#: ../../include/conversation.php:1136 ../../mod/editblock.php:145
+#: ../../mod/editlayout.php:141 ../../mod/editpost.php:114
+#: ../../mod/editwebpage.php:176 ../../mod/mail.php:232 ../../mod/mail.php:346
+msgid "Attach file"
+msgstr "Datei anhängen"
+
+#: ../../include/conversation.php:1137
+msgid "attach file"
+msgstr "Datei anfügen"
+
+#: ../../include/conversation.php:1138 ../../mod/editblock.php:146
+#: ../../mod/editlayout.php:142 ../../mod/editpost.php:115
+#: ../../mod/editwebpage.php:177 ../../mod/mail.php:233 ../../mod/mail.php:347
+msgid "Insert web link"
+msgstr "Link einfügen"
+
+#: ../../include/conversation.php:1139
+msgid "web link"
+msgstr "Web-Link"
+
+#: ../../include/conversation.php:1140
+msgid "Insert video link"
+msgstr "Video-Link einfügen"
+
+#: ../../include/conversation.php:1141
+msgid "video link"
+msgstr "Video-Link"
+
+#: ../../include/conversation.php:1142
+msgid "Insert audio link"
+msgstr "Audio-Link einfügen"
+
+#: ../../include/conversation.php:1143
+msgid "audio link"
+msgstr "Audio-Link"
+
+#: ../../include/conversation.php:1144 ../../mod/editblock.php:150
+#: ../../mod/editlayout.php:146 ../../mod/editpost.php:119
+#: ../../mod/editwebpage.php:181
+msgid "Set your location"
+msgstr "Standort"
+
+#: ../../include/conversation.php:1145
+msgid "set location"
+msgstr "Standort"
+
+#: ../../include/conversation.php:1146 ../../mod/editblock.php:151
+#: ../../mod/editlayout.php:147 ../../mod/editpost.php:120
+#: ../../mod/editwebpage.php:182
+msgid "Clear browser location"
+msgstr "Browser-Standort löschen"
+
+#: ../../include/conversation.php:1147
+msgid "clear location"
+msgstr "Standort löschen"
+
+#: ../../include/conversation.php:1149 ../../mod/editblock.php:164
+#: ../../mod/editlayout.php:159 ../../mod/editpost.php:132
+#: ../../mod/editwebpage.php:198
+msgid "Set title"
+msgstr "Titel"
+
+#: ../../include/conversation.php:1152 ../../mod/events.php:563
+#: ../../mod/editblock.php:167 ../../mod/editlayout.php:162
+#: ../../mod/editpost.php:134 ../../mod/editwebpage.php:200
+msgid "Categories (comma-separated list)"
+msgstr "Kategorien (Kommagetrennte Liste)"
+
+#: ../../include/conversation.php:1154 ../../mod/editblock.php:153
+#: ../../mod/editlayout.php:149 ../../mod/editpost.php:122
+#: ../../mod/editwebpage.php:184
+msgid "Permission settings"
+msgstr "Berechtigungs-Einstellungen"
+
+#: ../../include/conversation.php:1155
+msgid "permissions"
+msgstr "Berechtigungen"
+
+#: ../../include/conversation.php:1162 ../../mod/editblock.php:161
+#: ../../mod/editlayout.php:156 ../../mod/editpost.php:129
+#: ../../mod/editwebpage.php:193
+msgid "Public post"
+msgstr "Öffentlicher Beitrag"
+
+#: ../../include/conversation.php:1164 ../../mod/editblock.php:168
+#: ../../mod/editlayout.php:163 ../../mod/editpost.php:135
+#: ../../mod/editwebpage.php:201
+msgid "Example: bob@example.com, mary@example.com"
+msgstr "Beispiel: bob@example.com, mary@example.com"
+
+#: ../../include/conversation.php:1177 ../../mod/editblock.php:178
+#: ../../mod/editlayout.php:173 ../../mod/editpost.php:146
+#: ../../mod/editwebpage.php:210 ../../mod/mail.php:238 ../../mod/mail.php:352
+msgid "Set expiration date"
+msgstr "Verfallsdatum"
+
+#: ../../include/conversation.php:1179 ../../include/ItemObject.php:611
+#: ../../mod/editpost.php:148 ../../mod/mail.php:240 ../../mod/mail.php:354
+msgid "Encrypt text"
+msgstr "Text verschlüsseln"
+
+#: ../../include/conversation.php:1181 ../../mod/events.php:569
+#: ../../mod/editpost.php:150
+msgid "OK"
+msgstr "Ok"
+
+#: ../../include/conversation.php:1182 ../../mod/events.php:568
+#: ../../mod/editpost.php:151 ../../mod/settings.php:550
+#: ../../mod/settings.php:576 ../../mod/fbrowser.php:82
+#: ../../mod/fbrowser.php:117 ../../mod/tagrm.php:11 ../../mod/tagrm.php:134
+msgid "Cancel"
+msgstr "Abbrechen"
+
+#: ../../include/conversation.php:1426
+msgid "Discover"
+msgstr "Entdecken"
+
+#: ../../include/conversation.php:1429
+msgid "Imported public streams"
+msgstr "Importierte öffentliche Beiträge"
+
+#: ../../include/conversation.php:1434
+msgid "Commented Order"
+msgstr "Neueste Kommentare"
+
+#: ../../include/conversation.php:1437
+msgid "Sort by Comment Date"
+msgstr "Nach Kommentardatum sortiert"
+
+#: ../../include/conversation.php:1441
+msgid "Posted Order"
+msgstr "Neueste Beiträge"
+
+#: ../../include/conversation.php:1444
+msgid "Sort by Post Date"
+msgstr "Nach Beitragsdatum sortiert"
+
+#: ../../include/conversation.php:1449 ../../include/widgets.php:89
+msgid "Personal"
+msgstr "Persönlich"
+
+#: ../../include/conversation.php:1452
+msgid "Posts that mention or involve you"
+msgstr "Beiträge mit Beteiligung Deinerseits"
+
+#: ../../include/conversation.php:1458 ../../mod/connections.php:211
+#: ../../mod/connections.php:224 ../../mod/menu.php:80
+msgid "New"
+msgstr "Neu"
+
+#: ../../include/conversation.php:1461
+msgid "Activity Stream - by date"
+msgstr "Activity Stream – nach Datum sortiert"
+
+#: ../../include/conversation.php:1467
+msgid "Starred"
+msgstr "Markiert"
+
+#: ../../include/conversation.php:1470
+msgid "Favourite Posts"
+msgstr "Markierte Beiträge"
+
+#: ../../include/conversation.php:1477
+msgid "Spam"
+msgstr "Spam"
+
+#: ../../include/conversation.php:1480
+msgid "Posts flagged as SPAM"
+msgstr "Nachrichten, die als SPAM markiert wurden"
+
+#: ../../include/conversation.php:1520 ../../mod/admin.php:865
+msgid "Channel"
+msgstr "Kanal"
+
+#: ../../include/conversation.php:1523
+msgid "Status Messages and Posts"
+msgstr "Statusnachrichten und Beiträge"
+
+#: ../../include/conversation.php:1532
+msgid "About"
+msgstr "Ãœber"
+
+#: ../../include/conversation.php:1535
+msgid "Profile Details"
+msgstr "Profil-Details"
+
+#: ../../include/conversation.php:1541 ../../include/nav.php:105
+#: ../../include/apps.php:137 ../../mod/fbrowser.php:25
+msgid "Photos"
+msgstr "Fotos"
+
+#: ../../include/conversation.php:1544 ../../include/photos.php:341
+msgid "Photo Albums"
+msgstr "Fotoalben"
+
+#: ../../include/conversation.php:1550 ../../include/RedDAV/RedBrowser.php:241
+#: ../../include/nav.php:106 ../../include/apps.php:133
+#: ../../mod/fbrowser.php:114
+msgid "Files"
+msgstr "Dateien"
+
+#: ../../include/conversation.php:1553
+msgid "Files and Storage"
+msgstr "Dateien und Speicher"
+
+#: ../../include/conversation.php:1563 ../../include/conversation.php:1566
+msgid "Chatrooms"
+msgstr "Chaträume"
+
+#: ../../include/conversation.php:1576 ../../include/nav.php:117
+#: ../../include/apps.php:127
+msgid "Bookmarks"
+msgstr "Lesezeichen"
+
+#: ../../include/conversation.php:1579
+msgid "Saved Bookmarks"
+msgstr "Gespeicherte Lesezeichen"
+
+#: ../../include/conversation.php:1587 ../../include/nav.php:121
+#: ../../include/apps.php:134 ../../mod/webpages.php:160
+msgid "Webpages"
+msgstr "Webseiten"
+
+#: ../../include/conversation.php:1590
+msgid "Manage Webpages"
+msgstr "Webseiten verwalten"
+
+#: ../../include/notify.php:23
+msgid "created a new post"
+msgstr "Neuer Beitrag wurde erzeugt"
+
+#: ../../include/notify.php:24
+#, php-format
+msgid "commented on %s's post"
+msgstr "hat %s's Beitrag kommentiert"
+
+#: ../../include/dir_fns.php:56
+msgid "Sort Options"
+msgstr "Sortieroptionen"
+
+#: ../../include/dir_fns.php:57
+msgid "Alphabetic"
+msgstr "alphabetisch"
+
+#: ../../include/dir_fns.php:58
+msgid "Reverse Alphabetic"
+msgstr "Entgegengesetzt alphabetisch"
+
+#: ../../include/dir_fns.php:59
+msgid "Newest to Oldest"
+msgstr "Neueste zuerst"
+
+#: ../../include/dir_fns.php:71
+msgid "Enable Safe Search"
+msgstr "Sichere Suche einschalten"
+
+#: ../../include/dir_fns.php:73
+msgid "Disable Safe Search"
+msgstr "Sichere Suche ausschalten"
+
+#: ../../include/dir_fns.php:75
+msgid "Safe Mode"
+msgstr "Sicherer Modus"
+
+#: ../../include/page_widgets.php:6
+msgid "New Page"
+msgstr "Neue Seite"
+
+#: ../../include/page_widgets.php:8 ../../include/page_widgets.php:36
+#: ../../include/RedDAV/RedBrowser.php:250 ../../include/menu.php:42
+#: ../../include/apps.php:249 ../../include/ItemObject.php:100
+#: ../../mod/blocks.php:132 ../../mod/connections.php:381
+#: ../../mod/connections.php:394 ../../mod/connections.php:413
+#: ../../mod/thing.php:233 ../../mod/webpages.php:162
+#: ../../mod/editblock.php:143 ../../mod/editlayout.php:139
+#: ../../mod/editpost.php:112 ../../mod/settings.php:611
+#: ../../mod/editwebpage.php:174 ../../mod/layouts.php:167
+#: ../../mod/menu.php:78
+msgid "Edit"
+msgstr "Bearbeiten"
+
+#: ../../include/page_widgets.php:39 ../../mod/blocks.php:135
+#: ../../mod/webpages.php:165 ../../mod/layouts.php:171
+msgid "View"
+msgstr "Ansicht"
+
+#: ../../include/page_widgets.php:41 ../../mod/webpages.php:167
+msgid "Actions"
+msgstr "Aktionen"
+
+#: ../../include/page_widgets.php:42 ../../mod/webpages.php:168
+msgid "Page Link"
+msgstr "Seiten-Link"
+
+#: ../../include/page_widgets.php:43 ../../mod/webpages.php:169
+msgid "Title"
+msgstr "Titel"
+
+#: ../../include/page_widgets.php:44 ../../mod/webpages.php:170
+msgid "Created"
+msgstr "Erstellt"
+
+#: ../../include/page_widgets.php:45 ../../mod/webpages.php:171
+msgid "Edited"
+msgstr "Geändert"
+
+#: ../../include/chat.php:10
+msgid "Missing room name"
+msgstr "Der Chatraum hat keinen Namen"
+
+#: ../../include/chat.php:19
+msgid "Duplicate room name"
+msgstr "Name des Chatraums bereits vergeben"
+
+#: ../../include/chat.php:68 ../../include/chat.php:76
+msgid "Invalid room specifier."
+msgstr "Ungültiger Raumbezeichner."
+
+#: ../../include/chat.php:105
+msgid "Room not found."
+msgstr "Chatraum konnte nicht gefunden werden."
+
+#: ../../include/chat.php:116 ../../include/items.php:4013
+#: ../../include/attach.php:116 ../../include/attach.php:163
+#: ../../include/attach.php:226 ../../include/attach.php:240
+#: ../../include/attach.php:280 ../../include/attach.php:294
+#: ../../include/attach.php:318 ../../include/attach.php:511
+#: ../../include/attach.php:584 ../../include/photos.php:15
+#: ../../mod/mood.php:112 ../../mod/mitem.php:106
+#: ../../mod/achievements.php:30 ../../mod/profiles.php:179
+#: ../../mod/profiles.php:550 ../../mod/setup.php:207 ../../mod/poke.php:128
+#: ../../mod/api.php:26 ../../mod/api.php:31 ../../mod/authtest.php:13
+#: ../../mod/profile.php:64 ../../mod/profile.php:72 ../../mod/block.php:22
+#: ../../mod/block.php:72 ../../mod/sources.php:66 ../../mod/blocks.php:67
+#: ../../mod/blocks.php:75 ../../mod/register.php:72 ../../mod/events.php:195
+#: ../../mod/channel.php:89 ../../mod/channel.php:193
+#: ../../mod/channel.php:236 ../../mod/chat.php:90 ../../mod/chat.php:95
+#: ../../mod/regmod.php:17 ../../mod/network.php:12 ../../mod/common.php:35
+#: ../../mod/photos.php:68 ../../mod/connections.php:169
+#: ../../mod/manage.php:6 ../../mod/connedit.php:266 ../../mod/thing.php:247
+#: ../../mod/thing.php:264 ../../mod/thing.php:299 ../../mod/webpages.php:67
+#: ../../mod/bookmarks.php:46 ../../mod/editblock.php:65
+#: ../../mod/pdledit.php:21 ../../mod/editlayout.php:64
+#: ../../mod/editlayout.php:89 ../../mod/editpost.php:13
+#: ../../mod/settings.php:526 ../../mod/editwebpage.php:64
+#: ../../mod/editwebpage.php:86 ../../mod/editwebpage.php:118
+#: ../../mod/profile_photo.php:263 ../../mod/profile_photo.php:276
+#: ../../mod/fsuggest.php:78 ../../mod/filestorage.php:18
+#: ../../mod/filestorage.php:67 ../../mod/filestorage.php:82
+#: ../../mod/filestorage.php:109 ../../mod/delegate.php:6
+#: ../../mod/group.php:9 ../../mod/suggest.php:26 ../../mod/item.php:191
+#: ../../mod/item.php:199 ../../mod/item.php:971 ../../mod/like.php:154
+#: ../../mod/invite.php:13 ../../mod/invite.php:104 ../../mod/locs.php:71
+#: ../../mod/layouts.php:67 ../../mod/layouts.php:74 ../../mod/layouts.php:85
+#: ../../mod/viewconnections.php:22 ../../mod/viewconnections.php:27
+#: ../../mod/viewsrc.php:14 ../../mod/mail.php:111 ../../mod/menu.php:61
+#: ../../mod/message.php:16 ../../mod/new_channel.php:68
+#: ../../mod/new_channel.php:99 ../../mod/notifications.php:66
+#: ../../mod/page.php:28 ../../mod/page.php:78 ../../mod/appman.php:66
+#: ../../mod/service_limits.php:7 ../../index.php:190 ../../index.php:390
+msgid "Permission denied."
+msgstr "Zugang verweigert"
+
+#: ../../include/chat.php:126
+msgid "Room is full"
+msgstr "Der Raum ist voll"
+
+#: ../../include/oembed.php:171
+msgid "Embedded content"
+msgstr "Eingebetteter Inhalt"
+
+#: ../../include/oembed.php:180
+msgid "Embedding disabled"
+msgstr "Einbetten ausgeschaltet"
+
+#: ../../include/widgets.php:29 ../../include/contact_widgets.php:92
+#: ../../include/taxonomy.php:230
+msgid "Categories"
+msgstr "Kategorien"
+
+#: ../../include/widgets.php:86 ../../include/nav.php:171
+#: ../../mod/apps.php:33
+msgid "Apps"
+msgstr "Apps"
+
+#: ../../include/widgets.php:87
+msgid "System"
+msgstr "System"
+
+#: ../../include/widgets.php:90
+msgid "Create Personal App"
+msgstr "Persönliche App erstellen"
+
+#: ../../include/widgets.php:91
+msgid "Edit Personal App"
+msgstr "Persönliche App bearbeiten"
+
+#: ../../include/widgets.php:137 ../../mod/suggest.php:53
msgid "Ignore/Hide"
msgstr "Ignorieren/Verstecken"
-#: ../../include/widgets.php:123 ../../mod/connections.php:238
+#: ../../include/widgets.php:143 ../../mod/connections.php:267
msgid "Suggestions"
msgstr "Vorschläge"
-#: ../../include/widgets.php:124
+#: ../../include/widgets.php:144
msgid "See more..."
msgstr "Mehr anzeigen …"
-#: ../../include/widgets.php:146
+#: ../../include/widgets.php:166
#, php-format
msgid "You have %1$.0f of %2$.0f allowed connections."
msgstr "Du bist %1$.0f von maximal %2$.0f erlaubten Verbindungen eingegangen."
-#: ../../include/widgets.php:152
+#: ../../include/widgets.php:172
msgid "Add New Connection"
msgstr "Neue Verbindung hinzufügen"
-#: ../../include/widgets.php:153
+#: ../../include/widgets.php:173
msgid "Enter the channel address"
msgstr "Adresse des Kanals eingeben"
-#: ../../include/widgets.php:154
+#: ../../include/widgets.php:174
msgid "Example: bob@example.com, http://example.com/barbara"
msgstr "Beispiel: bob@beispiel.com, http://beispiel.com/barbara"
-#: ../../include/widgets.php:171
+#: ../../include/widgets.php:191
msgid "Notes"
msgstr "Notizen"
-#: ../../include/widgets.php:173 ../../include/text.php:759
-#: ../../include/text.php:773 ../../mod/filer.php:36
+#: ../../include/widgets.php:193 ../../include/text.php:827
+#: ../../include/text.php:839 ../../mod/rbmark.php:28 ../../mod/rbmark.php:98
+#: ../../mod/filer.php:50 ../../mod/admin.php:1339 ../../mod/admin.php:1360
msgid "Save"
msgstr "Speichern"
-#: ../../include/widgets.php:243
+#: ../../include/widgets.php:263
msgid "Remove term"
msgstr "Eintrag löschen"
-#: ../../include/widgets.php:252 ../../include/features.php:52
+#: ../../include/widgets.php:272 ../../include/features.php:58
msgid "Saved Searches"
-msgstr "Gesicherte Suchanfragen"
+msgstr "Gespeicherte Suchanfragen"
-#: ../../include/widgets.php:253 ../../include/group.php:290
+#: ../../include/widgets.php:273 ../../include/group.php:303
msgid "add"
msgstr "hinzufügen"
-#: ../../include/widgets.php:283 ../../include/features.php:66
-#: ../../include/contact_widgets.php:53
+#: ../../include/widgets.php:303 ../../include/contact_widgets.php:57
+#: ../../include/features.php:72
msgid "Saved Folders"
-msgstr "Gesicherte Ordner"
+msgstr "Gespeicherte Ordner"
-#: ../../include/widgets.php:286 ../../include/contact_widgets.php:56
-#: ../../include/contact_widgets.php:90
+#: ../../include/widgets.php:306 ../../include/contact_widgets.php:60
+#: ../../include/contact_widgets.php:95
msgid "Everything"
msgstr "Alles"
-#: ../../include/widgets.php:318
+#: ../../include/widgets.php:352
msgid "Archives"
msgstr "Archive"
-#: ../../include/widgets.php:370
+#: ../../include/widgets.php:428
msgid "Refresh"
msgstr "Aktualisieren"
-#: ../../include/widgets.php:371 ../../mod/connedit.php:389
+#: ../../include/widgets.php:429 ../../mod/connedit.php:506
msgid "Me"
msgstr "Ich"
-#: ../../include/widgets.php:372 ../../mod/connedit.php:391
+#: ../../include/widgets.php:430 ../../mod/connedit.php:508
msgid "Best Friends"
msgstr "Beste Freunde"
-#: ../../include/widgets.php:373 ../../include/identity.php:314
-#: ../../include/profile_selectors.php:42 ../../mod/connedit.php:392
+#: ../../include/widgets.php:431 ../../include/identity.php:387
+#: ../../include/identity.php:388 ../../include/identity.php:395
+#: ../../include/profile_selectors.php:80 ../../mod/connedit.php:509
+#: ../../mod/settings.php:304 ../../mod/settings.php:308
+#: ../../mod/settings.php:309 ../../mod/settings.php:312
+#: ../../mod/settings.php:323
msgid "Friends"
msgstr "Freunde"
-#: ../../include/widgets.php:374
+#: ../../include/widgets.php:432
msgid "Co-workers"
msgstr "Kollegen"
-#: ../../include/widgets.php:375 ../../mod/connedit.php:393
+#: ../../include/widgets.php:433 ../../mod/connedit.php:510
msgid "Former Friends"
msgstr "ehem. Freunde"
-#: ../../include/widgets.php:376 ../../mod/connedit.php:394
+#: ../../include/widgets.php:434 ../../mod/connedit.php:511
msgid "Acquaintances"
msgstr "Bekannte"
-#: ../../include/widgets.php:377
+#: ../../include/widgets.php:435
msgid "Everybody"
msgstr "Jeder"
-#: ../../include/widgets.php:409
+#: ../../include/widgets.php:469
msgid "Account settings"
msgstr "Konto-Einstellungen"
-#: ../../include/widgets.php:415
+#: ../../include/widgets.php:475
msgid "Channel settings"
msgstr "Kanal-Einstellungen"
-#: ../../include/widgets.php:421
+#: ../../include/widgets.php:481
msgid "Additional features"
msgstr "Zusätzliche Funktionen"
-#: ../../include/widgets.php:427
+#: ../../include/widgets.php:487
msgid "Feature settings"
msgstr "Funktions-Einstellungen"
-#: ../../include/widgets.php:433
+#: ../../include/widgets.php:493
msgid "Display settings"
msgstr "Anzeige-Einstellungen"
-#: ../../include/widgets.php:439
+#: ../../include/widgets.php:499
msgid "Connected apps"
msgstr "Verbundene Apps"
-#: ../../include/widgets.php:445
+#: ../../include/widgets.php:505
msgid "Export channel"
msgstr "Kanal exportieren"
-#: ../../include/widgets.php:457
-msgid "Automatic Permissions (Advanced)"
-msgstr "Automatische Berechtigungen (Erweitert)"
+#: ../../include/widgets.php:511
+msgid "Export content"
+msgstr "Kanal-Inhalte exportieren"
-#: ../../include/widgets.php:467
+#: ../../include/widgets.php:520 ../../mod/connedit.php:538
+msgid "Connection Default Permissions"
+msgstr "Standardzugriffsrechte für neue Verbindungen:"
+
+#: ../../include/widgets.php:528
msgid "Premium Channel Settings"
msgstr "Premium-Kanal-Einstellungen"
-#: ../../include/widgets.php:476 ../../include/features.php:43
+#: ../../include/widgets.php:537 ../../include/features.php:49
#: ../../mod/sources.php:88
msgid "Channel Sources"
msgstr "Kanal-Quellen"
-#: ../../include/widgets.php:487 ../../include/nav.php:181
-#: ../../mod/admin.php:838 ../../mod/admin.php:1043
+#: ../../include/widgets.php:548 ../../include/nav.php:218
+#: ../../include/apps.php:132 ../../mod/admin.php:951 ../../mod/admin.php:1156
msgid "Settings"
msgstr "Einstellungen"
-#: ../../include/widgets.php:504
+#: ../../include/widgets.php:562 ../../mod/mail.php:124
+#: ../../mod/message.php:31
+msgid "Messages"
+msgstr "Nachrichten"
+
+#: ../../include/widgets.php:567
msgid "Check Mail"
msgstr "E-Mails abrufen"
-#: ../../include/widgets.php:509 ../../include/nav.php:172
+#: ../../include/widgets.php:572 ../../include/nav.php:209
msgid "New Message"
msgstr "Neue Nachricht"
-#: ../../include/widgets.php:585
+#: ../../include/widgets.php:648
msgid "Chat Rooms"
msgstr "Chaträume"
-#: ../../include/acl_selectors.php:235
-msgid "Visible to everybody"
-msgstr "Für jeden sichtbar"
+#: ../../include/widgets.php:666
+msgid "Bookmarked Chatrooms"
+msgstr "Gespeicherte Chatrooms"
-#: ../../include/acl_selectors.php:236
-msgid "show"
-msgstr "zeigen"
+#: ../../include/widgets.php:684
+msgid "Suggested Chatrooms"
+msgstr "Chatraum-Vorschläge"
-#: ../../include/acl_selectors.php:237
-msgid "don't show"
-msgstr "Verbergen"
+#: ../../include/zot.php:664
+msgid "Invalid data packet"
+msgstr "Ungültiges Datenpaket"
+
+#: ../../include/zot.php:680
+msgid "Unable to verify channel signature"
+msgstr "Konnte die Signatur des Kanals nicht verifizieren"
+
+#: ../../include/zot.php:1799
+#, php-format
+msgid "Unable to verify site signature for %s"
+msgstr "Kann die Signatur der Seite von %s nicht verifizieren"
#: ../../include/activities.php:39
msgid " and "
@@ -230,629 +951,970 @@ msgstr "Besuche %1$s's %2$s"
msgid "%1$s has an updated %2$s, changing %3$s."
msgstr "%1$s hat ein aktualisiertes %2$s, %3$s wurde verändert."
-#: ../../include/nav.php:72 ../../include/nav.php:91 ../../boot.php:1425
+#: ../../include/bb2diaspora.php:384
+msgid "Attachments:"
+msgstr "Anhänge:"
+
+#: ../../include/bb2diaspora.php:463 ../../include/event.php:11
+msgid "l F d, Y \\@ g:i A"
+msgstr "l, d. F Y\\\\, H:i"
+
+#: ../../include/bb2diaspora.php:465
+msgid "Redmatrix event notification:"
+msgstr "RedMatrix Termin-Benachrichtigung:"
+
+#: ../../include/bb2diaspora.php:469 ../../include/event.php:20
+msgid "Starts:"
+msgstr "Beginnt:"
+
+#: ../../include/bb2diaspora.php:477 ../../include/event.php:30
+msgid "Finishes:"
+msgstr "Endet:"
+
+#: ../../include/bb2diaspora.php:485 ../../include/event.php:40
+#: ../../include/identity.php:891 ../../mod/directory.php:159
+#: ../../mod/events.php:579
+msgid "Location:"
+msgstr "Ort:"
+
+#: ../../include/RedDAV/RedBrowser.php:106
+#: ../../include/RedDAV/RedBrowser.php:249
+msgid "parent"
+msgstr "Ãœbergeordnetes Verzeichnis"
+
+#: ../../include/RedDAV/RedBrowser.php:130
+msgid "Collection"
+msgstr "Ordner"
+
+#: ../../include/RedDAV/RedBrowser.php:133
+msgid "Principal"
+msgstr "Prinzipal"
+
+#: ../../include/RedDAV/RedBrowser.php:136
+msgid "Addressbook"
+msgstr "Adressbuch"
+
+#: ../../include/RedDAV/RedBrowser.php:139
+msgid "Calendar"
+msgstr "Kalender"
+
+#: ../../include/RedDAV/RedBrowser.php:142
+msgid "Schedule Inbox"
+msgstr "Posteingang für überwachte Kalender"
+
+#: ../../include/RedDAV/RedBrowser.php:145
+msgid "Schedule Outbox"
+msgstr "Postausgang für überwachte Kalender"
+
+#: ../../include/RedDAV/RedBrowser.php:223
+#, php-format
+msgid "%1$s used"
+msgstr "%1$s verwendet"
+
+#: ../../include/RedDAV/RedBrowser.php:228
+#, php-format
+msgid "%1$s used of %2$s (%3$s&#37;)"
+msgstr "%1$s von %2$s verwendet (%3$s&#37;)"
+
+#: ../../include/RedDAV/RedBrowser.php:245 ../../mod/settings.php:551
+#: ../../mod/settings.php:577 ../../mod/admin.php:866
+msgid "Name"
+msgstr "Name"
+
+#: ../../include/RedDAV/RedBrowser.php:246
+msgid "Type"
+msgstr "Typ"
+
+#: ../../include/RedDAV/RedBrowser.php:247
+msgid "Size"
+msgstr "Größe"
+
+#: ../../include/RedDAV/RedBrowser.php:248
+msgid "Last Modified"
+msgstr "Zuletzt geändert"
+
+#: ../../include/RedDAV/RedBrowser.php:252
+msgid "Total"
+msgstr "Summe"
+
+#: ../../include/RedDAV/RedBrowser.php:305
+msgid "Create new folder"
+msgstr "Neuen Ordner anlegen"
+
+#: ../../include/RedDAV/RedBrowser.php:306 ../../mod/mitem.php:169
+#: ../../mod/menu.php:100 ../../mod/new_channel.php:122
+msgid "Create"
+msgstr "Erstelle"
+
+#: ../../include/RedDAV/RedBrowser.php:307
+msgid "Upload file"
+msgstr "Datei hochladen"
+
+#: ../../include/RedDAV/RedBrowser.php:308 ../../mod/photos.php:738
+#: ../../mod/photos.php:1245 ../../mod/profile_photo.php:361
+msgid "Upload"
+msgstr "Hochladen"
+
+#: ../../include/bookmarks.php:35
+#, php-format
+msgid "%1$s's bookmarks"
+msgstr "%1$ss Lesezeichen"
+
+#: ../../include/follow.php:28
+msgid "Channel is blocked on this site."
+msgstr "Der Kanal ist auf dieser Seite blockiert "
+
+#: ../../include/follow.php:33
+msgid "Channel location missing."
+msgstr "Adresse des Kanals fehlt."
+
+#: ../../include/follow.php:82
+msgid "Response from remote channel was incomplete."
+msgstr "Antwort des entfernten Kanals war unvollständig."
+
+#: ../../include/follow.php:99
+msgid "Channel was deleted and no longer exists."
+msgstr "Kanal wurde gelöscht und existiert nicht mehr."
+
+#: ../../include/follow.php:135 ../../include/follow.php:202
+msgid "Protocol disabled."
+msgstr "Protokoll deaktiviert."
+
+#: ../../include/follow.php:176
+msgid "Channel discovery failed."
+msgstr "Kanalsuche fehlgeschlagen"
+
+#: ../../include/follow.php:192
+msgid "local account not found."
+msgstr "Lokales Konto nicht gefunden."
+
+#: ../../include/follow.php:220
+msgid "Cannot connect to yourself."
+msgstr "Du kannst Dich nicht mit Dir selbst verbinden."
+
+#: ../../include/comanche.php:35 ../../mod/admin.php:353
+#: ../../view/theme/apw/php/config.php:185
+msgid "Default"
+msgstr "Standard"
+
+#: ../../include/contact_selectors.php:56
+msgid "Frequently"
+msgstr "Häufig"
+
+#: ../../include/contact_selectors.php:57
+msgid "Hourly"
+msgstr "Stündlich"
+
+#: ../../include/contact_selectors.php:58
+msgid "Twice daily"
+msgstr "Zwei Mal am Tag"
+
+#: ../../include/contact_selectors.php:59
+msgid "Daily"
+msgstr "Täglich"
+
+#: ../../include/contact_selectors.php:60
+msgid "Weekly"
+msgstr "Wöchentlich"
+
+#: ../../include/contact_selectors.php:61
+msgid "Monthly"
+msgstr "Monatlich"
+
+#: ../../include/contact_selectors.php:76
+msgid "Friendica"
+msgstr "Friendica"
+
+#: ../../include/contact_selectors.php:77
+msgid "OStatus"
+msgstr "OStatus"
+
+#: ../../include/contact_selectors.php:78
+msgid "RSS/Atom"
+msgstr "RSS/Atom"
+
+#: ../../include/contact_selectors.php:79 ../../mod/admin.php:726
+#: ../../mod/admin.php:735 ../../boot.php:1488
+msgid "Email"
+msgstr "E-Mail"
+
+#: ../../include/contact_selectors.php:80
+msgid "Diaspora"
+msgstr "Diaspora"
+
+#: ../../include/contact_selectors.php:81
+msgid "Facebook"
+msgstr "Facebook"
+
+#: ../../include/contact_selectors.php:82
+msgid "Zot!"
+msgstr "Zot!"
+
+#: ../../include/contact_selectors.php:83
+msgid "LinkedIn"
+msgstr "LinkedIn"
+
+#: ../../include/contact_selectors.php:84
+msgid "XMPP/IM"
+msgstr "XMPP/IM"
+
+#: ../../include/contact_selectors.php:85
+msgid "MySpace"
+msgstr "MySpace"
+
+#: ../../include/contact_widgets.php:14
+#, php-format
+msgid "%d invitation available"
+msgid_plural "%d invitations available"
+msgstr[0] "%d Einladung verfügbar"
+msgstr[1] "%d Einladungen verfügbar"
+
+#: ../../include/contact_widgets.php:19 ../../mod/admin.php:416
+msgid "Advanced"
+msgstr "Fortgeschritten"
+
+#: ../../include/contact_widgets.php:22
+msgid "Find Channels"
+msgstr "Finde Kanäle"
+
+#: ../../include/contact_widgets.php:23
+msgid "Enter name or interest"
+msgstr "Name oder Interessen eingeben"
+
+#: ../../include/contact_widgets.php:24
+msgid "Connect/Follow"
+msgstr "Verbinden/Folgen"
+
+#: ../../include/contact_widgets.php:25
+msgid "Examples: Robert Morgenstein, Fishing"
+msgstr "Beispiele: Robert Morgenstein, Angeln"
+
+#: ../../include/contact_widgets.php:26 ../../mod/directory.php:267
+#: ../../mod/directory.php:272 ../../mod/connections.php:412
+msgid "Find"
+msgstr "Finde"
+
+#: ../../include/contact_widgets.php:27 ../../mod/suggest.php:59
+msgid "Channel Suggestions"
+msgstr "Kanal-Vorschläge"
+
+#: ../../include/contact_widgets.php:29
+msgid "Random Profile"
+msgstr "Zufallsprofil"
+
+#: ../../include/contact_widgets.php:30
+msgid "Invite Friends"
+msgstr "Lade Freunde ein"
+
+#: ../../include/contact_widgets.php:32
+msgid "Advanced example: name=fred and country=iceland"
+msgstr "Fortgeschrittenes Beispiel: name=fred and country=iceland"
+
+#: ../../include/contact_widgets.php:125
+#, php-format
+msgid "%d connection in common"
+msgid_plural "%d connections in common"
+msgstr[0] "%d gemeinsame Verbindung"
+msgstr[1] "%d gemeinsame Verbindungen"
+
+#: ../../include/contact_widgets.php:130
+msgid "show more"
+msgstr "mehr zeigen"
+
+#: ../../include/enotify.php:41
+msgid "Red Matrix Notification"
+msgstr "Red Matrix Benachrichtigung"
+
+#: ../../include/enotify.php:42
+msgid "redmatrix"
+msgstr "redmatrix"
+
+#: ../../include/enotify.php:44
+msgid "Thank You,"
+msgstr "Danke."
+
+#: ../../include/enotify.php:46
+#, php-format
+msgid "%s Administrator"
+msgstr "der Administrator von %s"
+
+#: ../../include/enotify.php:81
+#, php-format
+msgid "%s <!item_type!>"
+msgstr "%s <!item_type!>"
+
+#: ../../include/enotify.php:85
+#, php-format
+msgid "[Red:Notify] New mail received at %s"
+msgstr "[Red:Benachrichtigung] Neue Mail auf %s empfangen"
+
+#: ../../include/enotify.php:87
+#, php-format
+msgid "%1$s, %2$s sent you a new private message at %3$s."
+msgstr "%1$s, %2$s hat Dir eine private Nachricht auf %3$s gesendet."
+
+#: ../../include/enotify.php:88
+#, php-format
+msgid "%1$s sent you %2$s."
+msgstr "%1$s hat Dir %2$s geschickt."
+
+#: ../../include/enotify.php:88
+msgid "a private message"
+msgstr "eine private Nachricht"
+
+#: ../../include/enotify.php:89
+#, php-format
+msgid "Please visit %s to view and/or reply to your private messages."
+msgstr "Bitte besuche %s, um die private Nachricht anzusehen und/oder darauf zu antworten."
+
+#: ../../include/enotify.php:144
+#, php-format
+msgid "%1$s, %2$s commented on [zrl=%3$s]a %4$s[/zrl]"
+msgstr "%1$s, %2$s hat [zrl=%3$s]a %4$s[/zrl] kommentiert"
+
+#: ../../include/enotify.php:152
+#, php-format
+msgid "%1$s, %2$s commented on [zrl=%3$s]%4$s's %5$s[/zrl]"
+msgstr "%1$s, %2$s hat [zrl=%3$s]%4$ss %5$s[/zrl] kommentiert"
+
+#: ../../include/enotify.php:161
+#, php-format
+msgid "%1$s, %2$s commented on [zrl=%3$s]your %4$s[/zrl]"
+msgstr "%1$s, %2$s hat [zrl=%3$s]Deinen %4$s[/zrl] kommentiert"
+
+#: ../../include/enotify.php:172
+#, php-format
+msgid "[Red:Notify] Comment to conversation #%1$d by %2$s"
+msgstr "[Red:Benachrichtigung] Kommentar in Unterhaltung #%1$d von %2$s"
+
+#: ../../include/enotify.php:173
+#, php-format
+msgid "%1$s, %2$s commented on an item/conversation you have been following."
+msgstr "%1$s, %2$s hat eine Unterhaltung kommentiert, der Du folgst."
+
+#: ../../include/enotify.php:176 ../../include/enotify.php:191
+#: ../../include/enotify.php:217 ../../include/enotify.php:236
+#: ../../include/enotify.php:250
+#, php-format
+msgid "Please visit %s to view and/or reply to the conversation."
+msgstr "Bitte besuche %s, um die Unterhaltung anzusehen und/oder zu kommentieren."
+
+#: ../../include/enotify.php:182
+#, php-format
+msgid "[Red:Notify] %s posted to your profile wall"
+msgstr "[Red:Hinweis] %s schrieb auf Deine Pinnwand"
+
+#: ../../include/enotify.php:184
+#, php-format
+msgid "%1$s, %2$s posted to your profile wall at %3$s"
+msgstr "%1$s, %2$s hat auf Deine Pinnwand auf %3$s geschrieben"
+
+#: ../../include/enotify.php:186
+#, php-format
+msgid "%1$s, %2$s posted to [zrl=%3$s]your wall[/zrl]"
+msgstr "%1$s, %2$s hat auf [zrl=%3$s]Deine Pinnwand[/zrl] geschrieben"
+
+#: ../../include/enotify.php:210
+#, php-format
+msgid "[Red:Notify] %s tagged you"
+msgstr "[Red:Benachrichtigung] %s hat Dich erwähnt"
+
+#: ../../include/enotify.php:211
+#, php-format
+msgid "%1$s, %2$s tagged you at %3$s"
+msgstr "%1$s, %2$s hat Dich auf %3$s erwähnt"
+
+#: ../../include/enotify.php:212
+#, php-format
+msgid "%1$s, %2$s [zrl=%3$s]tagged you[/zrl]."
+msgstr "%1$s, %2$s [zrl=%3$s]hat Dich erwähnt[/zrl]."
+
+#: ../../include/enotify.php:225
+#, php-format
+msgid "[Red:Notify] %1$s poked you"
+msgstr "[Red:Benachrichtigung] %1$s hat Dich angestupst"
+
+#: ../../include/enotify.php:226
+#, php-format
+msgid "%1$s, %2$s poked you at %3$s"
+msgstr "%1$s, %2$s hat Dich auf %3$s angestupst"
+
+#: ../../include/enotify.php:227
+#, php-format
+msgid "%1$s, %2$s [zrl=%2$s]poked you[/zrl]."
+msgstr "%1$s, %2$s [zrl=%2$s]hat Dich angestupst[/zrl]."
+
+#: ../../include/enotify.php:243
+#, php-format
+msgid "[Red:Notify] %s tagged your post"
+msgstr "[Red:Benachrichtigung] %s hat Deinen Beitrag verschlagwortet"
+
+#: ../../include/enotify.php:244
+#, php-format
+msgid "%1$s, %2$s tagged your post at %3$s"
+msgstr "%1$s, %2$s hat Deinen Beitrag auf %3$s verschlagwortet"
+
+#: ../../include/enotify.php:245
+#, php-format
+msgid "%1$s, %2$s tagged [zrl=%3$s]your post[/zrl]"
+msgstr "%1$s, %2$s hat [zrl=%3$s]Deinen Beitrag[/zrl] verschlagwortet"
+
+#: ../../include/enotify.php:257
+msgid "[Red:Notify] Introduction received"
+msgstr "[Red:Benachrichtigung] Vorstellung erhalten"
+
+#: ../../include/enotify.php:258
+#, php-format
+msgid "%1$s, you've received an new connection request from '%2$s' at %3$s"
+msgstr "%1$s, Du hast eine neue Verbindungsanfrage von '%2$s' auf %3$s erhalten"
+
+#: ../../include/enotify.php:259
+#, php-format
+msgid ""
+"%1$s, you've received [zrl=%2$s]a new connection request[/zrl] from %3$s."
+msgstr "%1$s, Du hast [zrl=%2$s]eine neue Verbindungsanfrage[/zrl] von %3$s erhalten."
+
+#: ../../include/enotify.php:263 ../../include/enotify.php:282
+#, php-format
+msgid "You may visit their profile at %s"
+msgstr "Du kannst Dir das Profil unter %s ansehen"
+
+#: ../../include/enotify.php:265
+#, php-format
+msgid "Please visit %s to approve or reject the connection request."
+msgstr "Bitte besuche %s , um die Verbindungsanfrage anzunehmen oder abzulehnen."
+
+#: ../../include/enotify.php:272
+msgid "[Red:Notify] Friend suggestion received"
+msgstr "[Red:Benachrichtigung] Freundschaftsvorschlag erhalten"
+
+#: ../../include/enotify.php:273
+#, php-format
+msgid "%1$s, you've received a friend suggestion from '%2$s' at %3$s"
+msgstr "%1$s, Du hast einen Kontaktvorschlag von „%2$s“ auf %3$s erhalten"
+
+#: ../../include/enotify.php:274
+#, php-format
+msgid ""
+"%1$s, you've received [zrl=%2$s]a friend suggestion[/zrl] for %3$s from "
+"%4$s."
+msgstr "%1$s, Du hast [zrl=%2$s]einen Kontaktvorschlag[/zrl] für %3$s von %4$s erhalten."
+
+#: ../../include/enotify.php:280
+msgid "Name:"
+msgstr "Name:"
+
+#: ../../include/enotify.php:281
+msgid "Photo:"
+msgstr "Foto:"
+
+#: ../../include/enotify.php:284
+#, php-format
+msgid "Please visit %s to approve or reject the suggestion."
+msgstr "Bitte besuche %s um den Vorschlag zu akzeptieren oder abzulehnen."
+
+#: ../../include/enotify.php:477
+msgid "[Red:Notify]"
+msgstr "[Red:Benachrichtigung]"
+
+#: ../../include/event.php:326
+msgid "This event has been added to your calendar."
+msgstr "Dieser Termin wurde zu Deinem Kalender hinzugefügt"
+
+#: ../../include/group.php:26
+msgid ""
+"A deleted group with this name was revived. Existing item permissions "
+"<strong>may</strong> apply to this group and any future members. If this is "
+"not what you intended, please create another group with a different name."
+msgstr "Es hat früher schon einmal eine Sammlung mit diesem Namen existiert, die gelöscht wurde. Es <strong>könnten</strong> von damals noch Elemente (Beiträge, Dateien etc.) vorhanden sein, die allen jetzigen und zukünftigen Mitgliedern dieser Sammlung den Zugriff erlauben. Wenn das nicht Dein Plan war, erstelle bitte eine neue Sammlung mit einem anderen Namen."
+
+#: ../../include/group.php:235
+msgid "Default privacy group for new contacts"
+msgstr "Standard-Sammlung für neue Kontakte"
+
+#: ../../include/group.php:254 ../../mod/admin.php:735
+msgid "All Channels"
+msgstr "Alle Kanäle"
+
+#: ../../include/group.php:276
+msgid "edit"
+msgstr "Bearbeiten"
+
+#: ../../include/group.php:298
+msgid "Collections"
+msgstr "Sammlungen"
+
+#: ../../include/group.php:299
+msgid "Edit collection"
+msgstr "Sammlung bearbeiten"
+
+#: ../../include/group.php:300
+msgid "Create a new collection"
+msgstr "Neue Sammlung erzeugen"
+
+#: ../../include/group.php:301
+msgid "Channels not in any collection"
+msgstr "Kanäle, die nicht in einer Sammlung sind"
+
+#: ../../include/bbcode.php:112 ../../include/bbcode.php:653
+#: ../../include/bbcode.php:656 ../../include/bbcode.php:661
+#: ../../include/bbcode.php:664 ../../include/bbcode.php:667
+#: ../../include/bbcode.php:670 ../../include/bbcode.php:675
+#: ../../include/bbcode.php:678 ../../include/bbcode.php:683
+#: ../../include/bbcode.php:686 ../../include/bbcode.php:689
+#: ../../include/bbcode.php:692
+msgid "Image/photo"
+msgstr "Bild/Foto"
+
+#: ../../include/bbcode.php:147 ../../include/bbcode.php:703
+msgid "Encrypted content"
+msgstr "Verschlüsselter Inhalt"
+
+#: ../../include/bbcode.php:165
+msgid "Install design element: "
+msgstr "Design-Element installieren:"
+
+#: ../../include/bbcode.php:171
+msgid "QR code"
+msgstr "QR-Code"
+
+#: ../../include/bbcode.php:220
+#, php-format
+msgid "%1$s wrote the following %2$s %3$s"
+msgstr "%1$s schrieb den folgenden %2$s %3$s"
+
+#: ../../include/bbcode.php:222
+msgid "post"
+msgstr "Beitrag"
+
+#: ../../include/bbcode.php:621
+msgid "$1 spoiler"
+msgstr "$1 Spoiler"
+
+#: ../../include/bbcode.php:641
+msgid "$1 wrote:"
+msgstr "$1 schrieb:"
+
+#: ../../include/taxonomy.php:210
+msgid "Tags"
+msgstr "Schlagwörter"
+
+#: ../../include/taxonomy.php:249
+msgid "Keywords"
+msgstr "Schlüsselwörter"
+
+#: ../../include/taxonomy.php:274
+msgid "have"
+msgstr "habe"
+
+#: ../../include/taxonomy.php:274
+msgid "has"
+msgstr "hat"
+
+#: ../../include/taxonomy.php:275
+msgid "want"
+msgstr "will"
+
+#: ../../include/taxonomy.php:275
+msgid "wants"
+msgstr "will"
+
+#: ../../include/taxonomy.php:276 ../../include/ItemObject.php:221
+msgid "like"
+msgstr "mag"
+
+#: ../../include/taxonomy.php:276
+msgid "likes"
+msgstr "gefällt"
+
+#: ../../include/taxonomy.php:277 ../../include/ItemObject.php:222
+msgid "dislike"
+msgstr "verurteile"
+
+#: ../../include/taxonomy.php:277
+msgid "dislikes"
+msgstr "missfällt"
+
+#: ../../include/taxonomy.php:360 ../../include/identity.php:1148
+#: ../../include/ItemObject.php:146 ../../mod/photos.php:1026
+msgctxt "noun"
+msgid "Like"
+msgid_plural "Likes"
+msgstr[0] "Gefällt mir"
+msgstr[1] "Gefällt mir"
+
+#: ../../include/nav.php:95 ../../include/nav.php:128 ../../boot.php:1485
msgid "Logout"
msgstr "Abmelden"
-#: ../../include/nav.php:72 ../../include/nav.php:91
+#: ../../include/nav.php:95 ../../include/nav.php:128
msgid "End this session"
msgstr "Beende diese Sitzung"
-#: ../../include/nav.php:75 ../../include/nav.php:125
+#: ../../include/nav.php:98 ../../include/nav.php:159
msgid "Home"
msgstr "Home"
-#: ../../include/nav.php:75
+#: ../../include/nav.php:98
msgid "Your posts and conversations"
msgstr "Deine Beiträge und Unterhaltungen"
-#: ../../include/nav.php:76 ../../include/conversation.php:933
-#: ../../mod/connedit.php:312 ../../mod/connedit.php:426
-msgid "View Profile"
-msgstr "Profil ansehen"
-
-#: ../../include/nav.php:76
+#: ../../include/nav.php:99
msgid "Your profile page"
msgstr "Deine Profilseite"
-#: ../../include/nav.php:78
+#: ../../include/nav.php:101
msgid "Edit Profiles"
msgstr "Profile bearbeiten"
-#: ../../include/nav.php:78
+#: ../../include/nav.php:101
msgid "Manage/Edit profiles"
msgstr "Profile verwalten"
-#: ../../include/nav.php:79 ../../include/conversation.php:1475
-#: ../../mod/fbrowser.php:25
-msgid "Photos"
-msgstr "Fotos"
+#: ../../include/nav.php:103 ../../include/identity.php:864
+msgid "Edit Profile"
+msgstr "Profile bearbeiten"
+
+#: ../../include/nav.php:103
+msgid "Edit your profile"
+msgstr "Profil bearbeiten"
-#: ../../include/nav.php:79
+#: ../../include/nav.php:105
msgid "Your photos"
msgstr "Deine Bilder"
-#: ../../include/nav.php:80 ../../include/conversation.php:1484
-#: ../../mod/fbrowser.php:114
-msgid "Files"
-msgstr "Dateien"
-
-#: ../../include/nav.php:80
+#: ../../include/nav.php:106
msgid "Your files"
msgstr "Deine Dateien"
-#: ../../include/nav.php:81
+#: ../../include/nav.php:111 ../../include/apps.php:144
msgid "Chat"
msgstr "Chat"
-#: ../../include/nav.php:81
+#: ../../include/nav.php:111
msgid "Your chatrooms"
msgstr "Deine Chaträume"
-#: ../../include/nav.php:82 ../../include/nav.php:175
-#: ../../include/conversation.php:1506 ../../mod/events.php:354
-msgid "Events"
-msgstr "Veranstaltungen"
-
-#: ../../include/nav.php:82
-msgid "Your events"
-msgstr "Deine Veranstaltungen"
-
-#: ../../include/nav.php:83 ../../include/conversation.php:1514
-msgid "Bookmarks"
-msgstr "Lesezeichen"
-
-#: ../../include/nav.php:83
+#: ../../include/nav.php:117
msgid "Your bookmarks"
msgstr "Deine Lesezeichen"
-#: ../../include/nav.php:85 ../../include/conversation.php:1525
-msgid "Webpages"
-msgstr "Webseiten"
-
-#: ../../include/nav.php:85
+#: ../../include/nav.php:121
msgid "Your webpages"
msgstr "Deine Webseiten"
-#: ../../include/nav.php:89 ../../boot.php:1426
+#: ../../include/nav.php:125 ../../include/apps.php:129 ../../boot.php:1486
msgid "Login"
msgstr "Anmelden"
-#: ../../include/nav.php:89
+#: ../../include/nav.php:125
msgid "Sign in"
msgstr "Anmelden"
-#: ../../include/nav.php:106
+#: ../../include/nav.php:142
#, php-format
msgid "%s - click to logout"
msgstr "%s - Klick zum Abmelden"
-#: ../../include/nav.php:111
+#: ../../include/nav.php:145
+msgid "Remote authentication"
+msgstr "Ãœber Konto auf anderem Server einloggen"
+
+#: ../../include/nav.php:145
msgid "Click to authenticate to your home hub"
msgstr "Klicke, um Dich über Deinen Heimat-Server zu authentifizieren"
-#: ../../include/nav.php:125
+#: ../../include/nav.php:159
msgid "Home Page"
msgstr "Homepage"
-#: ../../include/nav.php:129 ../../mod/register.php:206 ../../boot.php:1402
+#: ../../include/nav.php:163 ../../mod/register.php:224 ../../boot.php:1464
msgid "Register"
msgstr "Registrieren"
-#: ../../include/nav.php:129
+#: ../../include/nav.php:163
msgid "Create an account"
msgstr "Erzeuge ein Konto"
-#: ../../include/nav.php:134 ../../mod/help.php:60 ../../mod/help.php:64
+#: ../../include/nav.php:168 ../../include/apps.php:140 ../../mod/help.php:58
+#: ../../mod/help.php:63
msgid "Help"
msgstr "Hilfe"
-#: ../../include/nav.php:134
+#: ../../include/nav.php:168
msgid "Help and documentation"
msgstr "Hilfe und Dokumentation"
-#: ../../include/nav.php:137
-msgid "Apps"
-msgstr "Apps"
-
-#: ../../include/nav.php:137
-msgid "Addon applications, utilities, games"
-msgstr "Addon Programme, Helferlein, Spiele"
+#: ../../include/nav.php:171
+msgid "Applications, utilities, links, games"
+msgstr "Anwendungen (Apps), Zubehör, Links, Spiele"
-#: ../../include/nav.php:139 ../../include/text.php:757
-#: ../../include/text.php:771 ../../mod/search.php:29
+#: ../../include/nav.php:173 ../../include/text.php:826
+#: ../../include/text.php:838 ../../include/apps.php:145
+#: ../../mod/search.php:30
msgid "Search"
msgstr "Suche"
-#: ../../include/nav.php:139
+#: ../../include/nav.php:173
msgid "Search site content"
msgstr "Durchsuche Seiten-Inhalt"
-#: ../../include/nav.php:142 ../../mod/directory.php:211
+#: ../../include/nav.php:176 ../../include/apps.php:139
+#: ../../mod/directory.php:271
msgid "Directory"
msgstr "Verzeichnis"
-#: ../../include/nav.php:142
-msgid "Channel Locator"
-msgstr "Kanal-Anzeiger"
+#: ../../include/nav.php:176
+msgid "Channel Directory"
+msgstr "Kanal-Verzeichnis"
-#: ../../include/nav.php:153
+#: ../../include/nav.php:190 ../../include/apps.php:131
msgid "Matrix"
msgstr "Matrix"
-#: ../../include/nav.php:153
+#: ../../include/nav.php:190
msgid "Your matrix"
msgstr "Deine Matrix"
-#: ../../include/nav.php:154
+#: ../../include/nav.php:191
msgid "Mark all matrix notifications seen"
msgstr "Markiere alle Matrix-Benachrichtigungen als angesehen"
-#: ../../include/nav.php:156
+#: ../../include/nav.php:193 ../../include/apps.php:135
msgid "Channel Home"
msgstr "Mein Kanal"
-#: ../../include/nav.php:156
+#: ../../include/nav.php:193
msgid "Channel home"
msgstr "Mein Kanal"
-#: ../../include/nav.php:157
+#: ../../include/nav.php:194
msgid "Mark all channel notifications seen"
msgstr "Markiere alle Kanal-Benachrichtigungen als angesehen"
-#: ../../include/nav.php:160
-msgid "Intros"
-msgstr "Vorstellungen"
-
-#: ../../include/nav.php:160 ../../mod/connections.php:244
-msgid "New Connections"
-msgstr "Neue Verbindungen"
+#: ../../include/nav.php:197 ../../mod/connections.php:406
+msgid "Connections"
+msgstr "Verbindungen"
-#: ../../include/nav.php:163
+#: ../../include/nav.php:200
msgid "Notices"
msgstr "Benachrichtigungen"
-#: ../../include/nav.php:163
+#: ../../include/nav.php:200
msgid "Notifications"
msgstr "Benachrichtigungen"
-#: ../../include/nav.php:164
+#: ../../include/nav.php:201
msgid "See all notifications"
msgstr "Alle Benachrichtigungen ansehen"
-#: ../../include/nav.php:165
+#: ../../include/nav.php:202 ../../mod/notifications.php:99
msgid "Mark all system notifications seen"
msgstr "Markiere alle System-Benachrichtigungen als gesehen"
-#: ../../include/nav.php:167
+#: ../../include/nav.php:204 ../../include/apps.php:141
msgid "Mail"
msgstr "Mail"
-#: ../../include/nav.php:167
+#: ../../include/nav.php:204
msgid "Private mail"
msgstr "Persönliche Mail"
-#: ../../include/nav.php:168
+#: ../../include/nav.php:205
msgid "See all private messages"
msgstr "Alle persönlichen Nachrichten ansehen"
-#: ../../include/nav.php:169
+#: ../../include/nav.php:206
msgid "Mark all private messages seen"
msgstr "Markiere alle persönlichen Nachrichten als gesehen"
-#: ../../include/nav.php:170
+#: ../../include/nav.php:207
msgid "Inbox"
msgstr "Eingang"
-#: ../../include/nav.php:171
+#: ../../include/nav.php:208
msgid "Outbox"
msgstr "Ausgang"
-#: ../../include/nav.php:175
+#: ../../include/nav.php:212 ../../include/apps.php:138
+#: ../../mod/events.php:431
+msgid "Events"
+msgstr "Termine"
+
+#: ../../include/nav.php:212
msgid "Event Calendar"
-msgstr "Veranstaltungskalender"
+msgstr "Terminkalender"
-#: ../../include/nav.php:176
+#: ../../include/nav.php:213
msgid "See all events"
-msgstr "Alle Ereignisse ansehen"
+msgstr "Alle Termine ansehen"
-#: ../../include/nav.php:177
+#: ../../include/nav.php:214
msgid "Mark all events seen"
-msgstr "Markiere alle Ereignisse als gesehen"
+msgstr "Markiere alle Termine als gesehen"
-#: ../../include/nav.php:179
-msgid "Channel Select"
-msgstr "Kanal-Auswahl"
+#: ../../include/nav.php:216 ../../include/apps.php:130
+#: ../../mod/manage.php:148
+msgid "Channel Manager"
+msgstr "Kanal-Manager"
-#: ../../include/nav.php:179
+#: ../../include/nav.php:216
msgid "Manage Your Channels"
msgstr "Verwalte Deine Kanäle"
-#: ../../include/nav.php:181
+#: ../../include/nav.php:218
msgid "Account/Channel Settings"
msgstr "Konto-/Kanal-Einstellungen"
-#: ../../include/nav.php:183 ../../mod/connections.php:351
-msgid "Connections"
-msgstr "Verbindungen"
-
-#: ../../include/nav.php:183
-msgid "Manage/Edit Friends and Connections"
-msgstr "Freunde und Verbindungen verwalten"
-
-#: ../../include/nav.php:190 ../../mod/admin.php:112
+#: ../../include/nav.php:226 ../../mod/admin.php:123
msgid "Admin"
-msgstr "Admin"
+msgstr "Administration"
-#: ../../include/nav.php:190
+#: ../../include/nav.php:226
msgid "Site Setup and Configuration"
msgstr "Seiten-Einrichtung und -Konfiguration"
-#: ../../include/nav.php:216
-msgid "Nothing new here"
-msgstr "Nichts Neues hier"
-
-#: ../../include/nav.php:221
+#: ../../include/nav.php:262
msgid "Please wait..."
msgstr "Bitte warten..."
-#: ../../include/text.php:315
-msgid "prev"
-msgstr "vorherige"
-
-#: ../../include/text.php:317
-msgid "first"
-msgstr "erste"
-
-#: ../../include/text.php:346
-msgid "last"
-msgstr "letzte"
-
-#: ../../include/text.php:349
-msgid "next"
-msgstr "nächste"
-
-#: ../../include/text.php:361
-msgid "older"
-msgstr "älter"
-
-#: ../../include/text.php:363
-msgid "newer"
-msgstr "neuer"
-
-#: ../../include/text.php:675
-msgid "No connections"
-msgstr "Keine Verbindungen"
-
-#: ../../include/text.php:686
-#, php-format
-msgid "%d Connection"
-msgid_plural "%d Connections"
-msgstr[0] "%d Verbindung"
-msgstr[1] "%d Verbindungen"
-
-#: ../../include/text.php:698
-msgid "View Connections"
-msgstr "Verbindungen anzeigen"
-
-#: ../../include/text.php:839
-msgid "poke"
-msgstr "anstupsen"
-
-#: ../../include/text.php:839 ../../include/conversation.php:240
-msgid "poked"
-msgstr "stupste"
-
-#: ../../include/text.php:840
-msgid "ping"
-msgstr "anpingen"
-
-#: ../../include/text.php:840
-msgid "pinged"
-msgstr "pingte"
-
-#: ../../include/text.php:841
-msgid "prod"
-msgstr "knuffen"
-
-#: ../../include/text.php:841
-msgid "prodded"
-msgstr "knuffte"
-
-#: ../../include/text.php:842
-msgid "slap"
-msgstr "ohrfeigen"
-
-#: ../../include/text.php:842
-msgid "slapped"
-msgstr "ohrfeigte"
-
-#: ../../include/text.php:843
-msgid "finger"
-msgstr "befummeln"
-
-#: ../../include/text.php:843
-msgid "fingered"
-msgstr "befummelte"
-
-#: ../../include/text.php:844
-msgid "rebuff"
-msgstr "eine Abfuhr erteilen"
-
-#: ../../include/text.php:844
-msgid "rebuffed"
-msgstr "abfuhrerteilte"
-
-#: ../../include/text.php:856
-msgid "happy"
-msgstr "glücklich"
-
-#: ../../include/text.php:857
-msgid "sad"
-msgstr "traurig"
-
-#: ../../include/text.php:858
-msgid "mellow"
-msgstr "sanft"
-
-#: ../../include/text.php:859
-msgid "tired"
-msgstr "müde"
-
-#: ../../include/text.php:860
-msgid "perky"
-msgstr "frech"
-
-#: ../../include/text.php:861
-msgid "angry"
-msgstr "sauer"
-
-#: ../../include/text.php:862
-msgid "stupified"
-msgstr "verblüfft"
-
-#: ../../include/text.php:863
-msgid "puzzled"
-msgstr "verwirrt"
-
-#: ../../include/text.php:864
-msgid "interested"
-msgstr "interessiert"
-
-#: ../../include/text.php:865
-msgid "bitter"
-msgstr "verbittert"
-
-#: ../../include/text.php:866
-msgid "cheerful"
-msgstr "fröhlich"
-
-#: ../../include/text.php:867
-msgid "alive"
-msgstr "lebendig"
-
-#: ../../include/text.php:868
-msgid "annoyed"
-msgstr "verärgert"
-
-#: ../../include/text.php:869
-msgid "anxious"
-msgstr "unruhig"
-
-#: ../../include/text.php:870
-msgid "cranky"
-msgstr "schrullig"
-
-#: ../../include/text.php:871
-msgid "disturbed"
-msgstr "verstört"
-
-#: ../../include/text.php:872
-msgid "frustrated"
-msgstr "frustriert"
-
-#: ../../include/text.php:873
-msgid "motivated"
-msgstr "motiviert"
-
-#: ../../include/text.php:874
-msgid "relaxed"
-msgstr "entspannt"
-
-#: ../../include/text.php:875
-msgid "surprised"
-msgstr "überrascht"
-
-#: ../../include/text.php:1036
-msgid "Monday"
-msgstr "Montag"
-
-#: ../../include/text.php:1036
-msgid "Tuesday"
-msgstr "Dienstag"
-
-#: ../../include/text.php:1036
-msgid "Wednesday"
-msgstr "Mittwoch"
-
-#: ../../include/text.php:1036
-msgid "Thursday"
-msgstr "Donnerstag"
-
-#: ../../include/text.php:1036
-msgid "Friday"
-msgstr "Freitag"
-
-#: ../../include/text.php:1036
-msgid "Saturday"
-msgstr "Samstag"
-
-#: ../../include/text.php:1036
-msgid "Sunday"
-msgstr "Sonntag"
-
-#: ../../include/text.php:1040
-msgid "January"
-msgstr "Januar"
-
-#: ../../include/text.php:1040
-msgid "February"
-msgstr "Februar"
-
-#: ../../include/text.php:1040
-msgid "March"
-msgstr "März"
-
-#: ../../include/text.php:1040
-msgid "April"
-msgstr "April"
-
-#: ../../include/text.php:1040
-msgid "May"
-msgstr "Mai"
-
-#: ../../include/text.php:1040
-msgid "June"
-msgstr "Juni"
+#: ../../include/permissions.php:13
+msgid "Can view my normal stream and posts"
+msgstr "Kann meine normalen Beiträge sehen"
-#: ../../include/text.php:1040
-msgid "July"
-msgstr "Juli"
+#: ../../include/permissions.php:14
+msgid "Can view my default channel profile"
+msgstr "Kann mein Standardprofil sehen"
-#: ../../include/text.php:1040
-msgid "August"
-msgstr "August"
+#: ../../include/permissions.php:15
+msgid "Can view my photo albums"
+msgstr "Kann meine Fotoalben betrachten"
-#: ../../include/text.php:1040
-msgid "September"
-msgstr "September"
+#: ../../include/permissions.php:16
+msgid "Can view my connections"
+msgstr "Kann meine Verbindungen sehen"
-#: ../../include/text.php:1040
-msgid "October"
-msgstr "Oktober"
+#: ../../include/permissions.php:17
+msgid "Can view my file storage"
+msgstr "Kann meine Dateiordner lesen"
-#: ../../include/text.php:1040
-msgid "November"
-msgstr "November"
+#: ../../include/permissions.php:18
+msgid "Can view my webpages"
+msgstr "Kann meine Webseiten sehen"
-#: ../../include/text.php:1040
-msgid "December"
-msgstr "Dezember"
+#: ../../include/permissions.php:21
+msgid "Can send me their channel stream and posts"
+msgstr "Kann mir die Beiträge aus seinem/ihrem Kanal schicken"
-#: ../../include/text.php:1118
-msgid "unknown.???"
-msgstr "unbekannt.???"
+#: ../../include/permissions.php:22
+msgid "Can post on my channel page (\"wall\")"
+msgstr "Kann auf meiner Kanal-Seite (\"wall\") Beiträge veröffentlichen"
-#: ../../include/text.php:1119
-msgid "bytes"
-msgstr "Bytes"
+#: ../../include/permissions.php:23
+msgid "Can comment on or like my posts"
+msgstr "Darf meine Beiträge kommentieren und mögen/nicht mögen"
-#: ../../include/text.php:1154
-msgid "remove category"
-msgstr "Kategorie entfernen"
+#: ../../include/permissions.php:24
+msgid "Can send me private mail messages"
+msgstr "Kann mir private Nachrichten schicken"
-#: ../../include/text.php:1176
-msgid "remove from file"
-msgstr "aus der Datei entfernen"
+#: ../../include/permissions.php:25
+msgid "Can post photos to my photo albums"
+msgstr "Kann Fotos in meinen Fotoalben veröffentlichen"
-#: ../../include/text.php:1234 ../../include/text.php:1246
-msgid "Click to open/close"
-msgstr "Klicke zum Öffnen/Schließen"
+#: ../../include/permissions.php:26
+msgid "Can like/dislike stuff"
+msgstr "Kann andere Elemente mögen/nicht mögen"
-#: ../../include/text.php:1401 ../../mod/events.php:332
-msgid "link to source"
-msgstr "Link zum Originalbeitrag"
+#: ../../include/permissions.php:26
+msgid "Profiles and things other than posts/comments"
+msgstr "Profile und alles außer Beiträge und Kommentare"
-#: ../../include/text.php:1420
-msgid "Select a page layout: "
-msgstr "Ein Seiten-Layout auswählen:"
+#: ../../include/permissions.php:28
+msgid "Can forward to all my channel contacts via post @mentions"
+msgstr "Kann an alle meine Kontakte via @-Erwähnung Nachrichten weiterleiten"
-#: ../../include/text.php:1423 ../../include/text.php:1488
-msgid "default"
-msgstr "Standard"
+#: ../../include/permissions.php:28
+msgid "Advanced - useful for creating group forum channels"
+msgstr "Fortgeschritten - sinnvoll, um Gruppen-Kanäle/-Foren zu erstellen"
-#: ../../include/text.php:1459
-msgid "Page content type: "
-msgstr "Content-Typ der Seite:"
+#: ../../include/permissions.php:29
+msgid "Can chat with me (when available)"
+msgstr "Kann mit mir chatten (wenn verfügbar)"
-#: ../../include/text.php:1500
-msgid "Select an alternate language"
-msgstr "Wähle eine alternative Sprache"
+#: ../../include/permissions.php:30
+msgid "Can write to my file storage"
+msgstr "Kann in meine Dateiordner schreiben"
-#: ../../include/text.php:1621 ../../include/conversation.php:117
-#: ../../mod/like.php:103 ../../mod/subthread.php:89 ../../mod/tagger.php:45
-msgid "photo"
-msgstr "Foto"
+#: ../../include/permissions.php:31
+msgid "Can edit my webpages"
+msgstr "Kann meine Webseiten bearbeiten"
-#: ../../include/text.php:1624 ../../include/conversation.php:120
-#: ../../mod/tagger.php:49
-msgid "event"
-msgstr "Ereignis"
+#: ../../include/permissions.php:33
+msgid "Can source my public posts in derived channels"
+msgstr "Kann meine öffentlichen Beiträge als Quellen für Kanäle verwenden"
-#: ../../include/text.php:1627 ../../include/conversation.php:145
-#: ../../mod/like.php:103 ../../mod/subthread.php:89 ../../mod/tagger.php:53
-msgid "status"
-msgstr "Status"
+#: ../../include/permissions.php:33
+msgid "Somewhat advanced - very useful in open communities"
+msgstr "Etwas fortgeschritten – sehr nützlich in offenen Gemeinschaften"
-#: ../../include/text.php:1629 ../../include/conversation.php:147
-#: ../../mod/tagger.php:55
-msgid "comment"
-msgstr "Kommentar"
+#: ../../include/permissions.php:35
+msgid "Can administer my channel resources"
+msgstr "Kann meine Kanäle administrieren"
-#: ../../include/text.php:1634
-msgid "activity"
-msgstr "Aktivität"
+#: ../../include/permissions.php:35
+msgid ""
+"Extremely advanced. Leave this alone unless you know what you are doing"
+msgstr "Sehr fortgeschritten. Bearbeite das nur, wenn Du genau weißt, was Du tust"
-#: ../../include/text.php:1891
-msgid "Design"
-msgstr "Design"
+#: ../../include/permissions.php:785
+msgid "Social Networking"
+msgstr "Soziales Netzwerk"
-#: ../../include/text.php:1893
-msgid "Blocks"
-msgstr "Blöcke"
+#: ../../include/permissions.php:786 ../../include/permissions.php:788
+#: ../../include/permissions.php:790
+msgid "Mostly Public"
+msgstr "Weitgehend öffentlich"
-#: ../../include/text.php:1894
-msgid "Menus"
-msgstr "Menüs"
+#: ../../include/permissions.php:786 ../../include/permissions.php:788
+#: ../../include/permissions.php:790
+msgid "Restricted"
+msgstr "Beschränkt"
-#: ../../include/text.php:1895
-msgid "Layouts"
-msgstr "Layouts"
+#: ../../include/permissions.php:786 ../../include/permissions.php:788
+msgid "Private"
+msgstr "Privat"
-#: ../../include/text.php:1896
-msgid "Pages"
-msgstr "Seiten"
+#: ../../include/permissions.php:787
+msgid "Community Forum"
+msgstr "Forum"
-#: ../../include/bbcode.php:128 ../../include/bbcode.php:601
-#: ../../include/bbcode.php:604 ../../include/bbcode.php:609
-#: ../../include/bbcode.php:612 ../../include/bbcode.php:615
-#: ../../include/bbcode.php:618 ../../include/bbcode.php:623
-#: ../../include/bbcode.php:626 ../../include/bbcode.php:631
-#: ../../include/bbcode.php:634 ../../include/bbcode.php:637
-#: ../../include/bbcode.php:640
-msgid "Image/photo"
-msgstr "Bild/Foto"
+#: ../../include/permissions.php:789
+msgid "Feed Republish"
+msgstr "Teilen von Feeds"
-#: ../../include/bbcode.php:163 ../../include/bbcode.php:651
-msgid "Encrypted content"
-msgstr "Verschlüsselter Inhalt"
+#: ../../include/permissions.php:791
+msgid "Special Purpose"
+msgstr "Für besondere Zwecke"
-#: ../../include/bbcode.php:170
-msgid "QR code"
-msgstr "QR-Code"
+#: ../../include/permissions.php:792
+msgid "Celebrity/Soapbox"
+msgstr "Mitteilungs-Kanal (keine Kommentare)"
-#: ../../include/bbcode.php:213
-#, php-format
-msgid "%1$s wrote the following %2$s %3$s"
-msgstr "%1$s schrieb den folgenden %2$s %3$s"
+#: ../../include/permissions.php:792
+msgid "Group Repository"
+msgstr "Gruppenarchiv"
-#: ../../include/bbcode.php:215
-msgid "post"
-msgstr "Beitrag"
+#: ../../include/permissions.php:793 ../../include/profile_selectors.php:6
+#: ../../include/profile_selectors.php:23
+#: ../../include/profile_selectors.php:61
+#: ../../include/profile_selectors.php:97
+msgid "Other"
+msgstr "Andere"
-#: ../../include/bbcode.php:569 ../../include/bbcode.php:589
-msgid "$1 wrote:"
-msgstr "$1 schrieb:"
+#: ../../include/permissions.php:794
+msgid "Custom/Expert Mode"
+msgstr "Benutzerdefiniert/Expertenmodus"
#: ../../include/Contact.php:123
msgid "New window"
@@ -862,6 +1924,11 @@ msgstr "Neues Fenster"
msgid "Open the selected location in a different window or browser tab"
msgstr "Öffne die markierte Adresse in einem neuen Browser Fenster oder Tab"
+#: ../../include/Contact.php:211 ../../mod/admin.php:646
+#, php-format
+msgid "User '%s' deleted"
+msgstr "Benutzer '%s' gelöscht"
+
#: ../../include/features.php:23
msgid "General Features"
msgstr "Allgemeine Funktionen"
@@ -883,3294 +1950,4662 @@ msgid "Ability to create multiple profiles"
msgstr "Mehrfachprofile anlegen können"
#: ../../include/features.php:27
+msgid "Advanced Profiles"
+msgstr "Erweiterte Profile"
+
+#: ../../include/features.php:27
+msgid "Additional profile sections and selections"
+msgstr "Stellt zusätzliche Bereiche und Felder im Profil zur Verfügung"
+
+#: ../../include/features.php:28
+msgid "Profile Import/Export"
+msgstr "Profil-Import/Export"
+
+#: ../../include/features.php:28
+msgid "Save and load profile details across sites/channels"
+msgstr "Speichere Dein Profil, um es in einen anderen Kanal zu importieren"
+
+#: ../../include/features.php:29
msgid "Web Pages"
msgstr "Webseiten"
-#: ../../include/features.php:27
+#: ../../include/features.php:29
msgid "Provide managed web pages on your channel"
msgstr "Stelle verwaltete Webseiten in Deinem Kanal zur Verfügung"
-#: ../../include/features.php:28
+#: ../../include/features.php:30
msgid "Private Notes"
msgstr "Private Notizen"
-#: ../../include/features.php:28
+#: ../../include/features.php:30
msgid "Enables a tool to store notes and reminders"
msgstr "Werkzeug zum Speichern von Notizen und Erinnerungen aktivieren"
-#: ../../include/features.php:33
+#: ../../include/features.php:34
+msgid "Navigation Channel Select"
+msgstr "Kanal-Auswahl in der Navigationsleiste"
+
+#: ../../include/features.php:34
+msgid "Change channels directly from within the navigation dropdown menu"
+msgstr "Wechsle direkt über das Navigationsmenü zu anderen Kanälen"
+
+#: ../../include/features.php:38
msgid "Extended Identity Sharing"
msgstr "Erweitertes Teilen von Identitäten"
-#: ../../include/features.php:33
+#: ../../include/features.php:38
msgid ""
"Share your identity with all websites on the internet. When disabled, "
"identity is only shared with sites in the matrix."
msgstr "Teile Deine Identität mit allen Webseiten im Internet. Ist dies deaktiviert, wird Deine Identität nur mit Red-Servern geteilt."
-#: ../../include/features.php:34
+#: ../../include/features.php:39
msgid "Expert Mode"
msgstr "Expertenmodus"
-#: ../../include/features.php:34
+#: ../../include/features.php:39
msgid "Enable Expert Mode to provide advanced configuration options"
msgstr "Aktiviere den Expertenmodus, um fortgeschrittene Konfigurationsoptionen zu aktivieren"
-#: ../../include/features.php:35
+#: ../../include/features.php:40
msgid "Premium Channel"
msgstr "Premium-Kanal"
-#: ../../include/features.php:35
+#: ../../include/features.php:40
msgid ""
"Allows you to set restrictions and terms on those that connect with your "
"channel"
-msgstr "Ermöglicht Einschränkungen und Bedingungen für Kontakte dieses Kanals"
+msgstr "Ermöglicht es, Einschränkungen und Bedingungen für Verbindungen dieses Kanals festzulegen"
-#: ../../include/features.php:40
+#: ../../include/features.php:45
msgid "Post Composition Features"
msgstr "Nachbearbeitungsfunktionen"
-#: ../../include/features.php:41
-msgid "Richtext Editor"
-msgstr "Formatierungseditor"
+#: ../../include/features.php:47
+msgid "Use Markdown"
+msgstr "Markdown benutzen"
-#: ../../include/features.php:41
-msgid "Enable richtext editor"
-msgstr "Aktiviere Formatierungseditor"
+#: ../../include/features.php:47
+msgid "Allow use of \"Markdown\" to format posts"
+msgstr "Erlaube die Verwendung von \"Markdown\"-Syntax zur Formatierung von Beiträgen"
-#: ../../include/features.php:42
+#: ../../include/features.php:48
msgid "Post Preview"
msgstr "Voransicht"
-#: ../../include/features.php:42
+#: ../../include/features.php:48
msgid "Allow previewing posts and comments before publishing them"
msgstr "Erlaube Voransicht von Beiträgen und Kommentaren vor Veröffentlichung"
-#: ../../include/features.php:43
+#: ../../include/features.php:49
msgid "Automatically import channel content from other channels or feeds"
msgstr "Importiere automatisch Inhalte für diesen Kanal von anderen Kanälen oder Feeds"
-#: ../../include/features.php:44
+#: ../../include/features.php:50
msgid "Even More Encryption"
msgstr "Noch mehr Verschlüsselung"
-#: ../../include/features.php:44
+#: ../../include/features.php:50
msgid ""
"Allow optional encryption of content end-to-end with a shared secret key"
msgstr "Erlaube optionale Verschlüsselung von Inhalten (Ende-zu-Ende mit geteiltem Sicherheitsschlüssel)"
-#: ../../include/features.php:49
+#: ../../include/features.php:55
msgid "Network and Stream Filtering"
msgstr "Netzwerk- und Stream-Filter"
-#: ../../include/features.php:50
+#: ../../include/features.php:56
msgid "Search by Date"
msgstr "Suche nach Datum"
-#: ../../include/features.php:50
+#: ../../include/features.php:56
msgid "Ability to select posts by date ranges"
msgstr "Möglichkeit, Beiträge nach Zeiträumen auszuwählen"
-#: ../../include/features.php:51
+#: ../../include/features.php:57
msgid "Collections Filter"
msgstr "Filter für Sammlung"
-#: ../../include/features.php:51
+#: ../../include/features.php:57
msgid "Enable widget to display Network posts only from selected collections"
msgstr "Aktiviere nur Netzwerk-Beiträge von ausgewählten Sammlungen"
-#: ../../include/features.php:52
+#: ../../include/features.php:58
msgid "Save search terms for re-use"
-msgstr "Gesicherte Suchbegriffe zur Wiederverwendung"
+msgstr "Suchbegriffe zur Wiederverwendung abspeichern"
-#: ../../include/features.php:53
+#: ../../include/features.php:59
msgid "Network Personal Tab"
msgstr "Persönlicher Netzwerkreiter"
-#: ../../include/features.php:53
+#: ../../include/features.php:59
msgid "Enable tab to display only Network posts that you've interacted on"
msgstr "Aktiviere Reiter nur für die Netzwerk-Beiträge, mit denen Du interagiert hast"
-#: ../../include/features.php:54
+#: ../../include/features.php:60
msgid "Network New Tab"
msgstr "Netzwerkreiter Neu"
-#: ../../include/features.php:54
+#: ../../include/features.php:60
msgid "Enable tab to display all new Network activity"
msgstr "Aktiviere Reiter, um alle neuen Netzwerkaktivitäten zu zeigen"
-#: ../../include/features.php:55
+#: ../../include/features.php:61
msgid "Affinity Tool"
msgstr "Beziehungs-Tool"
-#: ../../include/features.php:55
+#: ../../include/features.php:61
msgid "Filter stream activity by depth of relationships"
msgstr "Filter Aktivitätenstream nach Tiefe der Beziehung"
-#: ../../include/features.php:56
+#: ../../include/features.php:62
msgid "Suggest Channels"
msgstr "Kanäle vorschlagen"
-#: ../../include/features.php:56
+#: ../../include/features.php:62
msgid "Show channel suggestions"
msgstr "Kanal-Vorschläge anzeigen"
-#: ../../include/features.php:61
+#: ../../include/features.php:67
msgid "Post/Comment Tools"
msgstr "Beitrag-/Kommentar-Tools"
-#: ../../include/features.php:63
+#: ../../include/features.php:69
msgid "Edit Sent Posts"
msgstr "Bearbeite gesendete Beiträge"
-#: ../../include/features.php:63
+#: ../../include/features.php:69
msgid "Edit and correct posts and comments after sending"
msgstr "Bearbeite und korrigiere Beiträge und Kommentare nach dem Senden"
-#: ../../include/features.php:64
+#: ../../include/features.php:70
msgid "Tagging"
msgstr "Verschlagworten"
-#: ../../include/features.php:64
+#: ../../include/features.php:70
msgid "Ability to tag existing posts"
msgstr "Möglichkeit, um existierende Beiträge zu verschlagworten"
-#: ../../include/features.php:65
+#: ../../include/features.php:71
msgid "Post Categories"
msgstr "Beitrags-Kategorien"
-#: ../../include/features.php:65
+#: ../../include/features.php:71
msgid "Add categories to your posts"
msgstr "Kategorien für Beiträge"
-#: ../../include/features.php:66
+#: ../../include/features.php:72
msgid "Ability to file posts under folders"
msgstr "Möglichkeit, Beiträge in Verzeichnissen zu sammeln"
-#: ../../include/features.php:67
+#: ../../include/features.php:73
msgid "Dislike Posts"
msgstr "Gefällt-mir-nicht Beiträge"
-#: ../../include/features.php:67
+#: ../../include/features.php:73
msgid "Ability to dislike posts/comments"
msgstr "„Gefällt mir nicht“ ermöglichen"
-#: ../../include/features.php:68
+#: ../../include/features.php:74
msgid "Star Posts"
msgstr "Beiträge mit Sternchen versehen"
-#: ../../include/features.php:68
+#: ../../include/features.php:74
msgid "Ability to mark special posts with a star indicator"
msgstr "Möglichkeit, spezielle Beiträge mit Sternchen-Symbol zu markieren"
-#: ../../include/features.php:69
+#: ../../include/features.php:75
msgid "Tag Cloud"
msgstr "Schlagwort-Wolke"
-#: ../../include/features.php:69
+#: ../../include/features.php:75
msgid "Provide a personal tag cloud on your channel page"
msgstr "Persönliche Schlagwort-Wolke auf Deiner Kanal-Seite anzeigen"
-#: ../../include/contact_selectors.php:30
-msgid "Unknown | Not categorised"
-msgstr "Unbekannt | Nicht kategorisiert"
+#: ../../include/account.php:23
+msgid "Not a valid email address"
+msgstr "Ungültige E-Mail-Adresse"
-#: ../../include/contact_selectors.php:31
-msgid "Block immediately"
-msgstr "Sofort blockieren"
+#: ../../include/account.php:25
+msgid "Your email domain is not among those allowed on this site"
+msgstr "Deine E-Mail-Adresse ist dieser Seite nicht erlaubt"
-#: ../../include/contact_selectors.php:32
-msgid "Shady, spammer, self-marketer"
-msgstr "Zwielichtig, Spammer, Selbstdarsteller"
+#: ../../include/account.php:31
+msgid "Your email address is already registered at this site."
+msgstr "Deine E-Mail-Adresse ist auf dieser Seite bereits registriert."
-#: ../../include/contact_selectors.php:33
-msgid "Known to me, but no opinion"
-msgstr "Mir bekannt, aber keine Meinung"
+#: ../../include/account.php:64
+msgid "An invitation is required."
+msgstr "Eine Einladung wird benötigt"
-#: ../../include/contact_selectors.php:34
-msgid "OK, probably harmless"
-msgstr "Ok, wahrscheinlich harmlos"
+#: ../../include/account.php:68
+msgid "Invitation could not be verified."
+msgstr "Die Einladung konnte nicht bestätigt werden"
-#: ../../include/contact_selectors.php:35
-msgid "Reputable, has my trust"
-msgstr "Seriös, hat mein Vertrauen"
+#: ../../include/account.php:119
+msgid "Please enter the required information."
+msgstr "Bitte gib die benötigten Informationen ein."
-#: ../../include/contact_selectors.php:54
-msgid "Frequently"
-msgstr "Häufig"
+#: ../../include/account.php:187
+msgid "Failed to store account information."
+msgstr "Speichern der Account-Informationen fehlgeschlagen"
-#: ../../include/contact_selectors.php:55
-msgid "Hourly"
-msgstr "Stündlich"
+#: ../../include/account.php:245
+#, php-format
+msgid "Registration confirmation for %s"
+msgstr "Registrierungsbestätigung für %s"
-#: ../../include/contact_selectors.php:56
-msgid "Twice daily"
-msgstr "Zwei Mal am Tag"
+#: ../../include/account.php:313
+#, php-format
+msgid "Registration request at %s"
+msgstr "Registrierungsanfrage auf %s"
-#: ../../include/contact_selectors.php:57
-msgid "Daily"
-msgstr "Täglich"
+#: ../../include/account.php:315 ../../include/account.php:342
+#: ../../include/account.php:399
+msgid "Administrator"
+msgstr "Administrator"
-#: ../../include/contact_selectors.php:58
-msgid "Weekly"
-msgstr "Wöchentlich"
+#: ../../include/account.php:337
+msgid "your registration password"
+msgstr "Dein Registrierungspasswort"
-#: ../../include/contact_selectors.php:59
-msgid "Monthly"
-msgstr "Monatlich"
+#: ../../include/account.php:340 ../../include/account.php:397
+#, php-format
+msgid "Registration details for %s"
+msgstr "Registrierungsdetails für %s"
-#: ../../include/contact_selectors.php:74
-msgid "Friendica"
-msgstr "Friendica"
+#: ../../include/account.php:406
+msgid "Account approved."
+msgstr "Account bestätigt."
-#: ../../include/contact_selectors.php:75
-msgid "OStatus"
-msgstr "OStatus"
+#: ../../include/account.php:440
+#, php-format
+msgid "Registration revoked for %s"
+msgstr "Registrierung für %s widerrufen"
-#: ../../include/contact_selectors.php:76
-msgid "RSS/Atom"
-msgstr "RSS/Atom"
+#: ../../include/account.php:486
+msgid "Account verified. Please login."
+msgstr "Konto geprüft. Bitte melde Dich an!"
-#: ../../include/contact_selectors.php:77 ../../mod/admin.php:742
-#: ../../mod/admin.php:751 ../../boot.php:1428
-msgid "Email"
-msgstr "E-Mail"
+#: ../../include/account.php:648 ../../include/account.php:650
+msgid "Click here to upgrade."
+msgstr "Klicke hier, um das Upgrade durchzuführen."
-#: ../../include/contact_selectors.php:78
-msgid "Diaspora"
-msgstr "Diaspora"
+#: ../../include/account.php:656
+msgid "This action exceeds the limits set by your subscription plan."
+msgstr "Diese Aktion überschreitet die Grenzen Ihres Abonnements."
-#: ../../include/contact_selectors.php:79
-msgid "Facebook"
-msgstr "Facebook"
+#: ../../include/account.php:661
+msgid "This action is not available under your subscription plan."
+msgstr "Diese Aktion ist in Ihrem Abonnement nicht verfügbar."
-#: ../../include/contact_selectors.php:80
-msgid "Zot!"
-msgstr "Zot!"
+#: ../../include/identity.php:31 ../../mod/item.php:1368
+msgid "Unable to obtain identity information from database"
+msgstr "Kann keine Identitäts-Informationen aus Datenbank beziehen"
-#: ../../include/contact_selectors.php:81
-msgid "LinkedIn"
-msgstr "LinkedIn"
+#: ../../include/identity.php:66
+msgid "Empty name"
+msgstr "Namensfeld leer"
-#: ../../include/contact_selectors.php:82
-msgid "XMPP/IM"
-msgstr "XMPP/IM"
+#: ../../include/identity.php:68
+msgid "Name too long"
+msgstr "Name ist zu lang"
-#: ../../include/contact_selectors.php:83
-msgid "MySpace"
-msgstr "MySpace"
+#: ../../include/identity.php:169
+msgid "No account identifier"
+msgstr "Keine Account-Kennung"
+
+#: ../../include/identity.php:182
+msgid "Nickname is required."
+msgstr "Spitzname ist erforderlich."
+
+#: ../../include/identity.php:196
+msgid "Reserved nickname. Please choose another."
+msgstr "Reservierter Kurzname. Bitte wähle einen anderen."
+
+#: ../../include/identity.php:201 ../../include/dimport.php:34
+msgid ""
+"Nickname has unsupported characters or is already being used on this site."
+msgstr "Der Spitzname enthält nicht-unterstütze Zeichen oder wird bereits auf dieser Seite genutzt."
+
+#: ../../include/identity.php:283
+msgid "Unable to retrieve created identity"
+msgstr "Kann die erstellte Identität nicht empfangen"
+
+#: ../../include/identity.php:343
+msgid "Default Profile"
+msgstr "Standard-Profil"
+
+#: ../../include/identity.php:643
+msgid "Requested channel is not available."
+msgstr "Angeforderte Kanal nicht verfügbar."
+
+#: ../../include/identity.php:691 ../../mod/achievements.php:11
+#: ../../mod/connect.php:13 ../../mod/profile.php:16 ../../mod/blocks.php:29
+#: ../../mod/webpages.php:29 ../../mod/editblock.php:29
+#: ../../mod/editlayout.php:28 ../../mod/editwebpage.php:28
+#: ../../mod/filestorage.php:48 ../../mod/layouts.php:29 ../../mod/hcard.php:8
+msgid "Requested profile is not available."
+msgstr "Erwünschte Profil ist nicht verfügbar."
+
+#: ../../include/identity.php:854 ../../mod/profiles.php:740
+msgid "Change profile photo"
+msgstr "Profilfoto ändern"
+
+#: ../../include/identity.php:860
+msgid "Profiles"
+msgstr "Profile"
+
+#: ../../include/identity.php:860
+msgid "Manage/edit profiles"
+msgstr "Profile verwalten/bearbeiten"
+
+#: ../../include/identity.php:861 ../../mod/profiles.php:741
+msgid "Create New Profile"
+msgstr "Neues Profil erstellen"
+
+#: ../../include/identity.php:875 ../../mod/profiles.php:752
+msgid "Profile Image"
+msgstr "Profilfoto:"
+
+#: ../../include/identity.php:878
+msgid "visible to everybody"
+msgstr "sichtbar für jeden"
+
+#: ../../include/identity.php:879 ../../mod/profiles.php:635
+#: ../../mod/profiles.php:756
+msgid "Edit visibility"
+msgstr "Sichtbarkeit bearbeiten"
+
+#: ../../include/identity.php:895 ../../include/identity.php:1132
+msgid "Gender:"
+msgstr "Geschlecht:"
+
+#: ../../include/identity.php:896 ../../include/identity.php:1176
+msgid "Status:"
+msgstr "Status:"
+
+#: ../../include/identity.php:897 ../../include/identity.php:1187
+msgid "Homepage:"
+msgstr "Homepage:"
+
+#: ../../include/identity.php:898
+msgid "Online Now"
+msgstr "gerade online"
+
+#: ../../include/identity.php:976 ../../include/identity.php:1056
+#: ../../mod/ping.php:318
+msgid "g A l F d"
+msgstr "l, d. F G \\\\U\\\\h\\\\r"
+
+#: ../../include/identity.php:977 ../../include/identity.php:1057
+msgid "F d"
+msgstr "d. F"
+
+#: ../../include/identity.php:1022 ../../include/identity.php:1097
+#: ../../mod/ping.php:340
+msgid "[today]"
+msgstr "[Heute]"
+
+#: ../../include/identity.php:1034
+msgid "Birthday Reminders"
+msgstr "Geburtstags Erinnerungen"
+
+#: ../../include/identity.php:1035
+msgid "Birthdays this week:"
+msgstr "Geburtstage in dieser Woche:"
+
+#: ../../include/identity.php:1090
+msgid "[No description]"
+msgstr "[Keine Beschreibung]"
+
+#: ../../include/identity.php:1108
+msgid "Event Reminders"
+msgstr "Termin-Erinnerungen"
+
+#: ../../include/identity.php:1109
+msgid "Events this week:"
+msgstr "Termine in dieser Woche:"
+
+#: ../../include/identity.php:1122 ../../include/identity.php:1240
+#: ../../include/apps.php:136 ../../mod/profperm.php:112
+msgid "Profile"
+msgstr "Profil"
+
+#: ../../include/identity.php:1130 ../../mod/settings.php:984
+msgid "Full Name:"
+msgstr "Voller Name:"
+
+#: ../../include/identity.php:1137
+msgid "Like this channel"
+msgstr "Dieser Kanal gefällt mir"
+
+#: ../../include/identity.php:1161
+msgid "j F, Y"
+msgstr "j. F Y"
+
+#: ../../include/identity.php:1162
+msgid "j F"
+msgstr "j. F"
+
+#: ../../include/identity.php:1169
+msgid "Birthday:"
+msgstr "Geburtstag:"
+
+#: ../../include/identity.php:1173
+msgid "Age:"
+msgstr "Alter:"
+
+#: ../../include/identity.php:1182
+#, php-format
+msgid "for %1$d %2$s"
+msgstr "seit %1$d %2$s"
+
+#: ../../include/identity.php:1185 ../../mod/profiles.php:657
+msgid "Sexual Preference:"
+msgstr "Sexuelle Orientierung:"
+
+#: ../../include/identity.php:1189 ../../mod/profiles.php:659
+msgid "Hometown:"
+msgstr "Heimatstadt:"
+
+#: ../../include/identity.php:1191
+msgid "Tags:"
+msgstr "Schlagworte:"
+
+#: ../../include/identity.php:1193 ../../mod/profiles.php:660
+msgid "Political Views:"
+msgstr "Politische Ansichten:"
+
+#: ../../include/identity.php:1195
+msgid "Religion:"
+msgstr "Religion:"
+
+#: ../../include/identity.php:1197
+msgid "About:"
+msgstr "Ãœber:"
+
+#: ../../include/identity.php:1199
+msgid "Hobbies/Interests:"
+msgstr "Hobbys/Interessen:"
+
+#: ../../include/identity.php:1201 ../../mod/profiles.php:663
+msgid "Likes:"
+msgstr "Gefällt:"
+
+#: ../../include/identity.php:1203 ../../mod/profiles.php:664
+msgid "Dislikes:"
+msgstr "Gefällt nicht:"
+
+#: ../../include/identity.php:1206
+msgid "Contact information and Social Networks:"
+msgstr "Kontaktinformation und soziale Netzwerke:"
+
+#: ../../include/identity.php:1208
+msgid "My other channels:"
+msgstr "Meine anderen Kanäle:"
+
+#: ../../include/identity.php:1210
+msgid "Musical interests:"
+msgstr "Musikalische Interessen:"
+
+#: ../../include/identity.php:1212
+msgid "Books, literature:"
+msgstr "Bücher, Literatur:"
+
+#: ../../include/identity.php:1214
+msgid "Television:"
+msgstr "Fernsehen:"
+
+#: ../../include/identity.php:1216
+msgid "Film/dance/culture/entertainment:"
+msgstr "Film/Tanz/Kultur/Unterhaltung:"
+
+#: ../../include/identity.php:1218
+msgid "Love/Romance:"
+msgstr "Liebe/Romantik:"
+
+#: ../../include/identity.php:1220
+msgid "Work/employment:"
+msgstr "Arbeit/Anstellung:"
+
+#: ../../include/identity.php:1222
+msgid "School/education:"
+msgstr "Schule/Ausbildung:"
+
+#: ../../include/identity.php:1242
+msgid "Like this thing"
+msgstr "Gefällt mir"
+
+#: ../../include/items.php:377 ../../mod/profperm.php:23
+#: ../../mod/subthread.php:49 ../../mod/group.php:68 ../../mod/like.php:246
+#: ../../index.php:389
+msgid "Permission denied"
+msgstr "Keine Berechtigung"
+
+#: ../../include/items.php:964 ../../include/items.php:1009
+msgid "(Unknown)"
+msgstr "(Unbekannt)"
+
+#: ../../include/items.php:1165
+msgid "Visible to anybody on the internet."
+msgstr "Für jeden im Internet sichtbar."
+
+#: ../../include/items.php:1167
+msgid "Visible to you only."
+msgstr "Nur für Dich sichtbar."
+
+#: ../../include/items.php:1169
+msgid "Visible to anybody in this network."
+msgstr "Für jedes Mitglied der RedMatrix sichtbar."
+
+#: ../../include/items.php:1171
+msgid "Visible to anybody authenticated."
+msgstr "Für jeden sichtbar, der angemeldet ist."
+
+#: ../../include/items.php:1173
+#, php-format
+msgid "Visible to anybody on %s."
+msgstr "Für jeden auf %s sichtbar."
+
+#: ../../include/items.php:1175
+msgid "Visible to all connections."
+msgstr "Für alle Verbindungen sichtbar."
+
+#: ../../include/items.php:1177
+msgid "Visible to approved connections."
+msgstr "Nur für akzeptierte Verbindungen sichtbar."
+
+#: ../../include/items.php:1179
+msgid "Visible to specific connections."
+msgstr "Sichtbar für bestimmte Verbindungen."
+
+#: ../../include/items.php:3946 ../../mod/thing.php:76
+#: ../../mod/display.php:32 ../../mod/filestorage.php:26
+#: ../../mod/admin.php:168 ../../mod/admin.php:896 ../../mod/admin.php:1099
+#: ../../mod/viewsrc.php:20
+msgid "Item not found."
+msgstr "Element nicht gefunden."
+
+#: ../../include/items.php:4402 ../../mod/group.php:38 ../../mod/group.php:140
+msgid "Collection not found."
+msgstr "Sammlung nicht gefunden"
+
+#: ../../include/items.php:4417
+msgid "Collection is empty."
+msgstr "Sammlung ist leer."
+
+#: ../../include/items.php:4424
+#, php-format
+msgid "Collection: %s"
+msgstr "Sammlung: %s"
+
+#: ../../include/items.php:4435
+#, php-format
+msgid "Connection: %s"
+msgstr "Verbindung: %s"
+
+#: ../../include/items.php:4438
+msgid "Connection not found."
+msgstr "Die Verbindung wurde nicht gefunden."
+
+#: ../../include/message.php:18
+msgid "No recipient provided."
+msgstr "Kein Empfänger angegeben"
+
+#: ../../include/message.php:23
+msgid "[no subject]"
+msgstr "[no subject]"
+
+#: ../../include/message.php:45
+msgid "Unable to determine sender."
+msgstr "Kann Absender nicht bestimmen."
+
+#: ../../include/message.php:200
+msgid "Stored post could not be verified."
+msgstr "Gespeicherter Beitrag konnten nicht überprüft werden."
+
+#: ../../include/network.php:590
+msgid "view full size"
+msgstr "In Vollbildansicht anschauen"
+
+#: ../../include/attach.php:221 ../../include/attach.php:275
+msgid "Item was not found."
+msgstr "Beitrag wurde nicht gefunden."
+
+#: ../../include/attach.php:331
+msgid "No source file."
+msgstr "Keine Quelldatei."
+
+#: ../../include/attach.php:348
+msgid "Cannot locate file to replace"
+msgstr "Kann Datei zum Ersetzen nicht finden"
+
+#: ../../include/attach.php:366
+msgid "Cannot locate file to revise/update"
+msgstr "Kann Datei zum Prüfen/Aktualisieren nicht finden"
+
+#: ../../include/attach.php:377
+#, php-format
+msgid "File exceeds size limit of %d"
+msgstr "Datei überschreitet das Größen-Limit von %d"
+
+#: ../../include/attach.php:389
+#, php-format
+msgid "You have reached your limit of %1$.0f Mbytes attachment storage."
+msgstr "Die Größe Deiner Datei-Anhänge hat das Maximum von %1$.0f MByte erreicht."
+
+#: ../../include/attach.php:472
+msgid "File upload failed. Possible system limit or action terminated."
+msgstr "Datei-Upload fehlgeschlagen. Mögliche Systembegrenzung oder abgebrochener Prozess."
+
+#: ../../include/attach.php:484
+msgid "Stored file could not be verified. Upload failed."
+msgstr "Gespeichert Datei konnte nicht verifiziert werden. Upload abgebrochen."
+
+#: ../../include/attach.php:526 ../../include/attach.php:543
+msgid "Path not available."
+msgstr "Pfad nicht verfügbar."
+
+#: ../../include/attach.php:589
+msgid "Empty pathname"
+msgstr "Leere Pfadangabe"
+
+#: ../../include/attach.php:605
+msgid "duplicate filename or path"
+msgstr "doppelter Dateiname oder Pfad"
+
+#: ../../include/attach.php:629
+msgid "Path not found."
+msgstr "Pfad nicht gefunden."
+
+#: ../../include/attach.php:680
+msgid "mkdir failed."
+msgstr "mkdir fehlgeschlagen."
+
+#: ../../include/attach.php:684
+msgid "database storage failed."
+msgstr "Speichern in der Datenbank fehlgeschlagen."
+
+#: ../../include/auth.php:116
+msgid "Logged out."
+msgstr "Ausgeloggt."
+
+#: ../../include/auth.php:257
+msgid "Failed authentication"
+msgstr "Authentifizierung fehlgeschlagen"
+
+#: ../../include/auth.php:271 ../../mod/openid.php:190
+msgid "Login failed."
+msgstr "Login fehlgeschlagen."
#: ../../include/datetime.php:43 ../../include/datetime.php:45
msgid "Miscellaneous"
msgstr "Verschiedenes"
-#: ../../include/datetime.php:152 ../../include/datetime.php:284
-msgid "year"
-msgstr "Jahr"
+#: ../../include/datetime.php:142
+msgid "YYYY-MM-DD or MM-DD"
+msgstr "JJJJ-MM-TT oder MM-TT"
-#: ../../include/datetime.php:157 ../../include/datetime.php:285
-msgid "month"
-msgstr "Monat"
-
-#: ../../include/datetime.php:162 ../../include/datetime.php:287
-msgid "day"
-msgstr "Tag"
-
-#: ../../include/datetime.php:275
+#: ../../include/datetime.php:248
msgid "never"
msgstr "Nie"
-#: ../../include/datetime.php:281
+#: ../../include/datetime.php:254
msgid "less than a second ago"
msgstr "Vor weniger als einer Sekunde"
-#: ../../include/datetime.php:284
+#: ../../include/datetime.php:257
+msgid "year"
+msgstr "Jahr"
+
+#: ../../include/datetime.php:257
msgid "years"
msgstr "Jahre"
-#: ../../include/datetime.php:285
+#: ../../include/datetime.php:258
+msgid "month"
+msgstr "Monat"
+
+#: ../../include/datetime.php:258
msgid "months"
msgstr "Monate"
-#: ../../include/datetime.php:286
+#: ../../include/datetime.php:259
msgid "week"
msgstr "Woche"
-#: ../../include/datetime.php:286
+#: ../../include/datetime.php:259
msgid "weeks"
msgstr "Wochen"
-#: ../../include/datetime.php:287
+#: ../../include/datetime.php:260
+msgid "day"
+msgstr "Tag"
+
+#: ../../include/datetime.php:260
msgid "days"
msgstr "Tage"
-#: ../../include/datetime.php:288
+#: ../../include/datetime.php:261
msgid "hour"
msgstr "Stunde"
-#: ../../include/datetime.php:288
+#: ../../include/datetime.php:261
msgid "hours"
msgstr "Stunden"
-#: ../../include/datetime.php:289
+#: ../../include/datetime.php:262
msgid "minute"
msgstr "Minute"
-#: ../../include/datetime.php:289
+#: ../../include/datetime.php:262
msgid "minutes"
msgstr "Minuten"
-#: ../../include/datetime.php:290
+#: ../../include/datetime.php:263
msgid "second"
msgstr "Sekunde"
-#: ../../include/datetime.php:290
+#: ../../include/datetime.php:263
msgid "seconds"
msgstr "Sekunden"
-#: ../../include/datetime.php:299
+#: ../../include/datetime.php:272
#, php-format
msgid "%1$d %2$s ago"
msgstr "vor %1$d %2$s"
-#: ../../include/dba/dba_driver.php:50
+#: ../../include/datetime.php:480
#, php-format
-msgid "Cannot locate DNS info for database server '%s'"
-msgstr "Kann die DNS-Informationen für den Datenbank-Server '%s' nicht finden"
-
-#: ../../include/event.php:11 ../../include/bb2diaspora.php:433
-msgid "l F d, Y \\@ g:i A"
-msgstr "l, d. F Y\\\\, H:i"
+msgid "%1$s's birthday"
+msgstr "%1$ss Geburtstag"
-#: ../../include/event.php:20 ../../include/bb2diaspora.php:439
-msgid "Starts:"
-msgstr "Beginnt:"
-
-#: ../../include/event.php:30 ../../include/bb2diaspora.php:447
-msgid "Finishes:"
-msgstr "Endet:"
-
-#: ../../include/event.php:40 ../../include/identity.php:683
-#: ../../include/bb2diaspora.php:455 ../../mod/events.php:462
-#: ../../mod/directory.php:157 ../../mod/dirprofile.php:111
-msgid "Location:"
-msgstr "Ort:"
-
-#: ../../include/group.php:25
-msgid ""
-"A deleted group with this name was revived. Existing item permissions "
-"<strong>may</strong> apply to this group and any future members. If this is "
-"not what you intended, please create another group with a different name."
-msgstr "Ein gelöschte Gruppe mit diesem Namen wurde gefunden. Existierende Zugangsregeln für Elemente <strong>könnten</strong> für diese Gruppe angewendet werden, sowie für alle zukünftigen Elemente."
-
-#: ../../include/group.php:223
-msgid "Default privacy group for new contacts"
-msgstr "Standard-Privatsphärengruppe für neue Kontakte"
+#: ../../include/datetime.php:481
+#, php-format
+msgid "Happy Birthday %1$s"
+msgstr "Alles Gute zum Geburtstag, %1$s"
-#: ../../include/group.php:242 ../../mod/admin.php:751
-msgid "All Channels"
-msgstr "Alle Kanäle"
+#: ../../include/photos.php:105
+#, php-format
+msgid "Image exceeds website size limit of %lu bytes"
+msgstr "Bild überschreitet das Limit der Webseite von %lu bytes"
-#: ../../include/group.php:264
-msgid "edit"
-msgstr "Bearbeiten"
+#: ../../include/photos.php:112
+msgid "Image file is empty."
+msgstr "Bilddatei ist leer."
-#: ../../include/group.php:285
-msgid "Collections"
-msgstr "Sammlungen"
+#: ../../include/photos.php:141 ../../mod/profile_photo.php:216
+msgid "Unable to process image"
+msgstr "Kann Bild nicht verarbeiten"
-#: ../../include/group.php:286
-msgid "Edit collection"
-msgstr "Bearbeite Sammlungen"
+#: ../../include/photos.php:213
+msgid "Photo storage failed."
+msgstr "Foto speichern schlug fehl"
-#: ../../include/group.php:287
-msgid "Create a new collection"
-msgstr "Neue Sammlung erzeugen"
+#: ../../include/photos.php:345
+msgid "Upload New Photos"
+msgstr "Lade neue Fotos hoch"
-#: ../../include/group.php:288
-msgid "Channels not in any collection"
-msgstr "Kanäle, die nicht in einer Sammlung sind"
+#: ../../include/security.php:323
+msgid ""
+"The form security token was not correct. This probably happened because the "
+"form has been opened for too long (>3 hours) before submitting it."
+msgstr "Das Security-Token des Formulars war nicht korrekt. Das ist wahrscheinlich passiert, weil das Formular zu lange (>3 Stunden) offen war, bevor es abgeschickt wurde."
#: ../../include/js_strings.php:5
msgid "Delete this item?"
msgstr "Dieses Element löschen?"
-#: ../../include/js_strings.php:6 ../../include/ItemObject.php:547
-#: ../../mod/photos.php:993 ../../mod/photos.php:1080
+#: ../../include/js_strings.php:6 ../../include/ItemObject.php:598
+#: ../../mod/photos.php:995 ../../mod/photos.php:1105
msgid "Comment"
msgstr "Kommentar"
-#: ../../include/js_strings.php:7 ../../include/ItemObject.php:281
-#: ../../include/contact_widgets.php:125
-msgid "show more"
-msgstr "mehr zeigen"
+#: ../../include/js_strings.php:7 ../../include/ItemObject.php:332
+msgid "[+] show all"
+msgstr "[+] Zeige alle"
#: ../../include/js_strings.php:8
-msgid "show fewer"
-msgstr "Zeige weniger"
+msgid "[-] show less"
+msgstr "[-] zeige weniger"
#: ../../include/js_strings.php:9
+msgid "[+] expand"
+msgstr "[+] aufklappen"
+
+#: ../../include/js_strings.php:10
+msgid "[-] collapse"
+msgstr "[-] einklappen"
+
+#: ../../include/js_strings.php:11
msgid "Password too short"
msgstr "Kennwort zu kurz"
-#: ../../include/js_strings.php:10
+#: ../../include/js_strings.php:12
msgid "Passwords do not match"
msgstr "Kennwörter stimmen nicht überein"
-#: ../../include/js_strings.php:11 ../../mod/photos.php:39
+#: ../../include/js_strings.php:13 ../../mod/photos.php:39
msgid "everybody"
msgstr "alle"
-#: ../../include/js_strings.php:12
+#: ../../include/js_strings.php:14
msgid "Secret Passphrase"
msgstr "geheime Passphrase"
-#: ../../include/js_strings.php:13
+#: ../../include/js_strings.php:15
msgid "Passphrase hint"
msgstr "Hinweis zur Passphrase"
-#: ../../include/js_strings.php:15
+#: ../../include/js_strings.php:16
+msgid "Notice: Permissions have changed but have not yet been submitted."
+msgstr "Achtung: Berechtigungen wurden verändert, aber noch nicht gespeichert."
+
+#: ../../include/js_strings.php:17
+msgid "close all"
+msgstr "Alle schließen"
+
+#: ../../include/js_strings.php:18
+msgid "Nothing new here"
+msgstr "Nichts Neues hier"
+
+#: ../../include/js_strings.php:20
msgid "timeago.prefixAgo"
msgstr "timeago.prefixAgo"
-#: ../../include/js_strings.php:16
-msgid "timeago.suffixAgo"
-msgstr "timeago.suffixAgo"
+#: ../../include/js_strings.php:21
+msgid "timeago.prefixFromNow"
+msgstr " "
-#: ../../include/js_strings.php:17
+#: ../../include/js_strings.php:22
msgid "ago"
msgstr "her"
-#: ../../include/js_strings.php:18
+#: ../../include/js_strings.php:23
msgid "from now"
msgstr "von jetzt"
-#: ../../include/js_strings.php:19
+#: ../../include/js_strings.php:24
msgid "less than a minute"
msgstr "weniger als eine Minute"
-#: ../../include/js_strings.php:20
+#: ../../include/js_strings.php:25
msgid "about a minute"
msgstr "ungefähr eine Minute"
-#: ../../include/js_strings.php:21
+#: ../../include/js_strings.php:26
#, php-format
msgid "%d minutes"
msgstr "%d Minuten"
-#: ../../include/js_strings.php:22
+#: ../../include/js_strings.php:27
msgid "about an hour"
msgstr "ungefähr eine Stunde"
-#: ../../include/js_strings.php:23
+#: ../../include/js_strings.php:28
#, php-format
msgid "about %d hours"
msgstr "ungefähr %d Stunden"
-#: ../../include/js_strings.php:24
+#: ../../include/js_strings.php:29
msgid "a day"
msgstr "ein Tag"
-#: ../../include/js_strings.php:25
+#: ../../include/js_strings.php:30
#, php-format
msgid "%d days"
msgstr "%d Tage"
-#: ../../include/js_strings.php:26
+#: ../../include/js_strings.php:31
msgid "about a month"
msgstr "ungefähr ein Monat"
-#: ../../include/js_strings.php:27
+#: ../../include/js_strings.php:32
#, php-format
msgid "%d months"
msgstr "%d Monate"
-#: ../../include/js_strings.php:28
+#: ../../include/js_strings.php:33
msgid "about a year"
msgstr "ungefähr ein Jahr"
-#: ../../include/js_strings.php:29
+#: ../../include/js_strings.php:34
#, php-format
msgid "%d years"
msgstr "%d Jahre"
-#: ../../include/js_strings.php:30
+#: ../../include/js_strings.php:35
msgid " "
msgstr " "
-#: ../../include/js_strings.php:31
+#: ../../include/js_strings.php:36
msgid "timeago.numbers"
msgstr "timeago.numbers"
-#: ../../include/message.php:18
-msgid "No recipient provided."
-msgstr "Kein Empfänger angegeben"
-
-#: ../../include/message.php:23
-msgid "[no subject]"
-msgstr "[no subject]"
-
-#: ../../include/message.php:42
-msgid "Unable to determine sender."
-msgstr "Kann Absender nicht bestimmen."
-
-#: ../../include/message.php:143
-msgid "Stored post could not be verified."
-msgstr "Gespeicherter Beitrag konnten nicht überprüft werden."
-
-#: ../../include/photo/photo_driver.php:643 ../../include/photos.php:51
-#: ../../mod/profile_photo.php:78 ../../mod/profile_photo.php:225
-#: ../../mod/profile_photo.php:336 ../../mod/photos.php:91
-#: ../../mod/photos.php:656 ../../mod/photos.php:678
-msgid "Profile Photos"
-msgstr "Profilfotos"
-
-#: ../../include/attach.php:119 ../../include/attach.php:166
-#: ../../include/attach.php:229 ../../include/attach.php:243
-#: ../../include/attach.php:283 ../../include/attach.php:297
-#: ../../include/attach.php:322 ../../include/attach.php:513
-#: ../../include/attach.php:585 ../../include/chat.php:113
-#: ../../include/photos.php:15 ../../include/items.php:3575
-#: ../../mod/common.php:35 ../../mod/events.php:140 ../../mod/thing.php:247
-#: ../../mod/thing.php:263 ../../mod/thing.php:298 ../../mod/invite.php:13
-#: ../../mod/invite.php:104 ../../mod/settings.php:493 ../../mod/menu.php:44
-#: ../../mod/webpages.php:40 ../../mod/api.php:26 ../../mod/api.php:31
-#: ../../mod/bookmarks.php:46 ../../mod/item.php:182 ../../mod/item.php:190
-#: ../../mod/chat.php:87 ../../mod/chat.php:92
-#: ../../mod/viewconnections.php:22 ../../mod/viewconnections.php:27
-#: ../../mod/delegate.php:6 ../../mod/mitem.php:73 ../../mod/group.php:9
-#: ../../mod/viewsrc.php:12 ../../mod/editpost.php:13
-#: ../../mod/connedit.php:182 ../../mod/layouts.php:27
-#: ../../mod/layouts.php:42 ../../mod/page.php:30 ../../mod/page.php:80
-#: ../../mod/network.php:12 ../../mod/profiles.php:152
-#: ../../mod/profiles.php:453 ../../mod/sources.php:66 ../../mod/setup.php:200
-#: ../../mod/new_channel.php:66 ../../mod/new_channel.php:97
-#: ../../mod/achievements.php:27 ../../mod/manage.php:6 ../../mod/mail.php:108
-#: ../../mod/editlayout.php:48 ../../mod/profile_photo.php:187
-#: ../../mod/profile_photo.php:200 ../../mod/connections.php:169
-#: ../../mod/notifications.php:66 ../../mod/blocks.php:29
-#: ../../mod/blocks.php:44 ../../mod/editwebpage.php:44
-#: ../../mod/editwebpage.php:83 ../../mod/poke.php:128
-#: ../../mod/channel.php:88 ../../mod/channel.php:188
-#: ../../mod/channel.php:231 ../../mod/fsuggest.php:78
-#: ../../mod/editblock.php:48 ../../mod/filestorage.php:10
-#: ../../mod/filestorage.php:59 ../../mod/filestorage.php:75
-#: ../../mod/filestorage.php:98 ../../mod/suggest.php:26
-#: ../../mod/message.php:16 ../../mod/register.php:68 ../../mod/regmod.php:18
-#: ../../mod/authtest.php:13 ../../mod/photos.php:68 ../../mod/photos.php:526
-#: ../../mod/mood.php:119 ../../index.php:176 ../../index.php:351
-msgid "Permission denied."
-msgstr "Zugang verweigert"
-
-#: ../../include/attach.php:224 ../../include/attach.php:278
-msgid "Item was not found."
-msgstr "Beitrag wurde nicht gefunden."
-
-#: ../../include/attach.php:335
-msgid "No source file."
-msgstr "Keine Quelldatei."
-
-#: ../../include/attach.php:352
-msgid "Cannot locate file to replace"
-msgstr "Kann Datei zum Ersetzen nicht finden"
-
-#: ../../include/attach.php:370
-msgid "Cannot locate file to revise/update"
-msgstr "Kann Datei zum Prüfen/Aktualisieren nicht finden"
-
-#: ../../include/attach.php:381
-#, php-format
-msgid "File exceeds size limit of %d"
-msgstr "Datei überschreitet das Größen-Limit von %d"
-
-#: ../../include/attach.php:393
-#, php-format
-msgid "You have reached your limit of %1$.0f Mbytes attachment storage."
-msgstr "Die Größe Deiner Datei-Anhänge hat das Maximum von %1$.0f MByte erreicht."
-
-#: ../../include/attach.php:475
-msgid "File upload failed. Possible system limit or action terminated."
-msgstr "Datei-Upload fehlgeschlagen. Mögliche Systembegrenzung oder abgebrochener Prozess."
-
-#: ../../include/attach.php:487
-msgid "Stored file could not be verified. Upload failed."
-msgstr "Gespeichert Datei konnte nicht verifiziert werden. Upload abgebrochen."
-
-#: ../../include/attach.php:528 ../../include/attach.php:545
-msgid "Path not available."
-msgstr "Pfad nicht verfügbar."
-
-#: ../../include/attach.php:590
-msgid "Empty pathname"
-msgstr "Leere Pfadangabe"
-
-#: ../../include/attach.php:606
-msgid "duplicate filename or path"
-msgstr "doppelter Dateiname oder Pfad"
-
-#: ../../include/attach.php:630
-msgid "Path not found."
-msgstr "Pfad nicht gefunden."
-
-#: ../../include/attach.php:674
-msgid "mkdir failed."
-msgstr "mkdir fehlgeschlagen."
+#: ../../include/profile_selectors.php:6
+#: ../../include/profile_selectors.php:23
+msgid "Male"
+msgstr "Männlich"
-#: ../../include/attach.php:678
-msgid "database storage failed."
-msgstr "Speichern in der Datenbank fehlgeschlagen."
+#: ../../include/profile_selectors.php:6
+#: ../../include/profile_selectors.php:23
+msgid "Female"
+msgstr "Weiblich"
-#: ../../include/bookmarks.php:31
-#, php-format
-msgid "%1$s's bookmarks"
-msgstr "%1$ss Lesezeichen"
+#: ../../include/profile_selectors.php:6
+msgid "Currently Male"
+msgstr "Momentan männlich"
-#: ../../include/conversation.php:123
-msgid "channel"
-msgstr "Kanal"
+#: ../../include/profile_selectors.php:6
+msgid "Currently Female"
+msgstr "Momentan weiblich"
-#: ../../include/conversation.php:161 ../../mod/like.php:134
-#, php-format
-msgid "%1$s likes %2$s's %3$s"
-msgstr "%1$s gefällt %2$ss %3$s"
+#: ../../include/profile_selectors.php:6
+msgid "Mostly Male"
+msgstr "Größtenteils männlich"
-#: ../../include/conversation.php:164 ../../mod/like.php:136
-#, php-format
-msgid "%1$s doesn't like %2$s's %3$s"
-msgstr "%1$s gefällt %2$ss %3$s nicht"
+#: ../../include/profile_selectors.php:6
+msgid "Mostly Female"
+msgstr "Größtenteils weiblich"
-#: ../../include/conversation.php:201
-#, php-format
-msgid "%1$s is now connected with %2$s"
-msgstr "%1$s ist jetzt mit %2$s verbunden"
+#: ../../include/profile_selectors.php:6
+msgid "Transgender"
+msgstr "Transsexuell"
-#: ../../include/conversation.php:236
-#, php-format
-msgid "%1$s poked %2$s"
-msgstr "%1$s stupste %2$s an"
+#: ../../include/profile_selectors.php:6
+msgid "Intersex"
+msgstr "Zwischengeschlechtlich"
-#: ../../include/conversation.php:258 ../../mod/mood.php:63
-#, php-format
-msgid "%1$s is currently %2$s"
-msgstr "%1$s ist momentan %2$s"
+#: ../../include/profile_selectors.php:6
+msgid "Transsexual"
+msgstr "Transsexuell"
-#: ../../include/conversation.php:631 ../../include/ItemObject.php:114
-msgid "Select"
-msgstr "Auswählen"
+#: ../../include/profile_selectors.php:6
+msgid "Hermaphrodite"
+msgstr "Zwitter"
-#: ../../include/conversation.php:632 ../../include/ItemObject.php:108
-#: ../../mod/thing.php:236 ../../mod/settings.php:579 ../../mod/group.php:176
-#: ../../mod/admin.php:746 ../../mod/connedit.php:359
-#: ../../mod/filestorage.php:171 ../../mod/photos.php:1044
-msgid "Delete"
-msgstr "Löschen"
+#: ../../include/profile_selectors.php:6
+msgid "Neuter"
+msgstr "Geschlechtslos"
-#: ../../include/conversation.php:642 ../../include/ItemObject.php:161
-msgid "Message is verified"
-msgstr "Nachricht überprüft"
+#: ../../include/profile_selectors.php:6
+msgid "Non-specific"
+msgstr "unklar"
-#: ../../include/conversation.php:662
-#, php-format
-msgid "View %s's profile @ %s"
-msgstr "%ss Profil auf %s ansehen"
+#: ../../include/profile_selectors.php:6
+msgid "Undecided"
+msgstr "Unentschieden"
-#: ../../include/conversation.php:676
-msgid "Categories:"
-msgstr "Kategorien:"
+#: ../../include/profile_selectors.php:42
+#: ../../include/profile_selectors.php:61
+msgid "Males"
+msgstr "Männer"
-#: ../../include/conversation.php:677
-msgid "Filed under:"
-msgstr "Gespeichert unter:"
+#: ../../include/profile_selectors.php:42
+#: ../../include/profile_selectors.php:61
+msgid "Females"
+msgstr "Frauen"
-#: ../../include/conversation.php:686 ../../include/ItemObject.php:226
-#, php-format
-msgid " from %s"
-msgstr "von %s"
+#: ../../include/profile_selectors.php:42
+msgid "Gay"
+msgstr "Schwul"
-#: ../../include/conversation.php:689 ../../include/ItemObject.php:229
-#, php-format
-msgid "last edited: %s"
-msgstr "zuletzt bearbeitet: %s"
+#: ../../include/profile_selectors.php:42
+msgid "Lesbian"
+msgstr "Lesbisch"
-#: ../../include/conversation.php:690 ../../include/ItemObject.php:230
-#, php-format
-msgid "Expires: %s"
-msgstr "Verfällt: %s"
+#: ../../include/profile_selectors.php:42
+msgid "No Preference"
+msgstr "Keine Bevorzugung"
-#: ../../include/conversation.php:705
-msgid "View in context"
-msgstr "Im Zusammenhang anschauen"
+#: ../../include/profile_selectors.php:42
+msgid "Bisexual"
+msgstr "Bisexuell"
-#: ../../include/conversation.php:707 ../../include/conversation.php:1120
-#: ../../include/ItemObject.php:259 ../../mod/editpost.php:121
-#: ../../mod/mail.php:222 ../../mod/mail.php:336 ../../mod/editlayout.php:115
-#: ../../mod/editwebpage.php:153 ../../mod/editblock.php:129
-#: ../../mod/photos.php:975
-msgid "Please wait"
-msgstr "Bitte warten"
+#: ../../include/profile_selectors.php:42
+msgid "Autosexual"
+msgstr "Autosexuell"
-#: ../../include/conversation.php:834
-msgid "remove"
-msgstr "lösche"
+#: ../../include/profile_selectors.php:42
+msgid "Abstinent"
+msgstr "Enthaltsam"
-#: ../../include/conversation.php:838
-msgid "Loading..."
-msgstr "Lädt ..."
+#: ../../include/profile_selectors.php:42
+msgid "Virgin"
+msgstr "Jungfräulich"
-#: ../../include/conversation.php:839
-msgid "Delete Selected Items"
-msgstr "Lösche die ausgewählten Elemente"
+#: ../../include/profile_selectors.php:42
+msgid "Deviant"
+msgstr "Abweichend"
-#: ../../include/conversation.php:930
-msgid "View Source"
-msgstr "Quelle anzeigen"
+#: ../../include/profile_selectors.php:42
+msgid "Fetish"
+msgstr "Fetisch"
-#: ../../include/conversation.php:931
-msgid "Follow Thread"
-msgstr "Unterhaltung folgen"
+#: ../../include/profile_selectors.php:42
+msgid "Oodles"
+msgstr "Unmengen"
-#: ../../include/conversation.php:932
-msgid "View Status"
-msgstr "Status ansehen"
+#: ../../include/profile_selectors.php:42
+msgid "Nonsexual"
+msgstr "Sexlos"
-#: ../../include/conversation.php:934
-msgid "View Photos"
-msgstr "Fotos ansehen"
+#: ../../include/profile_selectors.php:80
+#: ../../include/profile_selectors.php:97
+msgid "Single"
+msgstr "Single"
-#: ../../include/conversation.php:935
-msgid "Matrix Activity"
-msgstr "Matrix-Aktivität"
+#: ../../include/profile_selectors.php:80
+msgid "Lonely"
+msgstr "Einsam"
-#: ../../include/conversation.php:936
-msgid "Edit Contact"
-msgstr "Kontakt bearbeiten"
+#: ../../include/profile_selectors.php:80
+msgid "Available"
+msgstr "Verfügbar"
-#: ../../include/conversation.php:937
-msgid "Send PM"
-msgstr "Sende PN"
+#: ../../include/profile_selectors.php:80
+msgid "Unavailable"
+msgstr "Nicht verfügbar"
-#: ../../include/conversation.php:938
-msgid "Poke"
-msgstr "Anstupsen"
+#: ../../include/profile_selectors.php:80
+msgid "Has crush"
+msgstr "Verguckt"
-#: ../../include/conversation.php:1000
-#, php-format
-msgid "%s likes this."
-msgstr "%s gefällt das."
+#: ../../include/profile_selectors.php:80
+msgid "Infatuated"
+msgstr "Verknallt"
-#: ../../include/conversation.php:1000
-#, php-format
-msgid "%s doesn't like this."
-msgstr "%s gefällt das nicht."
+#: ../../include/profile_selectors.php:80
+#: ../../include/profile_selectors.php:97
+msgid "Dating"
+msgstr "Lerne gerade jemanden kennen"
-#: ../../include/conversation.php:1004
-#, php-format
-msgid "<span %1$s>%2$d people</span> like this."
-msgid_plural "<span %1$s>%2$d people</span> like this."
-msgstr[0] "<span %1$s>%2$d Person</span> gefällt das."
-msgstr[1] "<span %1$s>%2$d Leuten</span> gefällt das."
+#: ../../include/profile_selectors.php:80
+msgid "Unfaithful"
+msgstr "Treulos"
-#: ../../include/conversation.php:1006
-#, php-format
-msgid "<span %1$s>%2$d people</span> don't like this."
-msgid_plural "<span %1$s>%2$d people</span> don't like this."
-msgstr[0] "<span %1$s>%2$d Person</span> gefällt das nicht."
-msgstr[1] "<span %1$s>%2$d Leuten</span> gefällt das nicht."
+#: ../../include/profile_selectors.php:80
+msgid "Sex Addict"
+msgstr "Sexabhängig"
-#: ../../include/conversation.php:1012
-msgid "and"
-msgstr "und"
+#: ../../include/profile_selectors.php:80
+msgid "Friends/Benefits"
+msgstr "Freunde/Begünstigte"
-#: ../../include/conversation.php:1015
-#, php-format
-msgid ", and %d other people"
-msgid_plural ", and %d other people"
-msgstr[0] ""
-msgstr[1] ", und %d andere"
+#: ../../include/profile_selectors.php:80
+msgid "Casual"
+msgstr "Lose"
-#: ../../include/conversation.php:1016
-#, php-format
-msgid "%s like this."
-msgstr "%s gefällt das."
+#: ../../include/profile_selectors.php:80
+msgid "Engaged"
+msgstr "Verlobt"
-#: ../../include/conversation.php:1016
-#, php-format
-msgid "%s don't like this."
-msgstr "%s gefällt das nicht."
+#: ../../include/profile_selectors.php:80
+#: ../../include/profile_selectors.php:97
+msgid "Married"
+msgstr "Verheiratet"
-#: ../../include/conversation.php:1066
-msgid "Visible to <strong>everybody</strong>"
-msgstr "Sichtbar für <strong>jeden</strong>"
+#: ../../include/profile_selectors.php:80
+msgid "Imaginarily married"
+msgstr "Gewissermaßen verheiratet"
-#: ../../include/conversation.php:1067 ../../mod/mail.php:171
-#: ../../mod/mail.php:269
-msgid "Please enter a link URL:"
-msgstr "Gib eine URL ein:"
+#: ../../include/profile_selectors.php:80
+msgid "Partners"
+msgstr "Partner"
-#: ../../include/conversation.php:1068
-msgid "Please enter a video link/URL:"
-msgstr "Gib einen Video-Link/URL ein:"
+#: ../../include/profile_selectors.php:80
+#: ../../include/profile_selectors.php:97
+msgid "Cohabiting"
+msgstr "Lebensgemeinschaft"
-#: ../../include/conversation.php:1069
-msgid "Please enter an audio link/URL:"
-msgstr "Gib einen Audio-Link/URL ein:"
+#: ../../include/profile_selectors.php:80
+msgid "Common law"
+msgstr "Informelle Ehe"
-#: ../../include/conversation.php:1070
-msgid "Tag term:"
-msgstr "Schlagwort:"
+#: ../../include/profile_selectors.php:80
+msgid "Happy"
+msgstr "Glücklich"
-#: ../../include/conversation.php:1071 ../../mod/filer.php:35
-msgid "Save to Folder:"
-msgstr "Speichern in Ordner:"
+#: ../../include/profile_selectors.php:80
+msgid "Not looking"
+msgstr "Nicht Ausschau haltend"
-#: ../../include/conversation.php:1072
-msgid "Where are you right now?"
-msgstr "Wo bist Du jetzt grade?"
+#: ../../include/profile_selectors.php:80
+msgid "Swinger"
+msgstr "Swinger"
-#: ../../include/conversation.php:1073 ../../mod/editpost.php:52
-#: ../../mod/mail.php:172 ../../mod/mail.php:270
-msgid "Expires YYYY-MM-DD HH:MM"
-msgstr "Verfällt YYYY-MM-DD HH;MM"
+#: ../../include/profile_selectors.php:80
+msgid "Betrayed"
+msgstr "Betrogen"
-#: ../../include/conversation.php:1083 ../../include/ItemObject.php:557
-#: ../../mod/webpages.php:122 ../../mod/editpost.php:141
-#: ../../mod/editlayout.php:136 ../../mod/editwebpage.php:177
-#: ../../mod/editblock.php:151 ../../mod/photos.php:995
-msgid "Preview"
-msgstr "Vorschau"
+#: ../../include/profile_selectors.php:80
+#: ../../include/profile_selectors.php:97
+msgid "Separated"
+msgstr "Getrennt"
-#: ../../include/conversation.php:1097 ../../mod/photos.php:974
-msgid "Share"
-msgstr "Teilen"
+#: ../../include/profile_selectors.php:80
+msgid "Unstable"
+msgstr "Labil"
-#: ../../include/conversation.php:1099 ../../mod/editwebpage.php:140
-msgid "Page link title"
-msgstr "Seitentitel-Link"
+#: ../../include/profile_selectors.php:80
+#: ../../include/profile_selectors.php:97
+msgid "Divorced"
+msgstr "Geschieden"
-#: ../../include/conversation.php:1101 ../../mod/editpost.php:113
-#: ../../mod/mail.php:219 ../../mod/mail.php:332 ../../mod/editlayout.php:107
-#: ../../mod/editwebpage.php:145 ../../mod/editblock.php:121
-msgid "Upload photo"
-msgstr "Foto hochladen"
+#: ../../include/profile_selectors.php:80
+msgid "Imaginarily divorced"
+msgstr "Gewissermaßen geschieden"
-#: ../../include/conversation.php:1102
-msgid "upload photo"
-msgstr "Foto hochladen"
+#: ../../include/profile_selectors.php:80
+#: ../../include/profile_selectors.php:97
+msgid "Widowed"
+msgstr "Verwitwet"
-#: ../../include/conversation.php:1103 ../../mod/editpost.php:114
-#: ../../mod/mail.php:220 ../../mod/mail.php:333 ../../mod/editlayout.php:108
-#: ../../mod/editwebpage.php:146 ../../mod/editblock.php:122
-msgid "Attach file"
-msgstr "Datei anhängen"
+#: ../../include/profile_selectors.php:80
+msgid "Uncertain"
+msgstr "Ungewiss"
-#: ../../include/conversation.php:1104
-msgid "attach file"
-msgstr "Datei anfügen"
+#: ../../include/profile_selectors.php:80
+#: ../../include/profile_selectors.php:97
+msgid "It's complicated"
+msgstr "Es ist kompliziert"
-#: ../../include/conversation.php:1105 ../../mod/editpost.php:115
-#: ../../mod/mail.php:221 ../../mod/mail.php:334 ../../mod/editlayout.php:109
-#: ../../mod/editwebpage.php:147 ../../mod/editblock.php:123
-msgid "Insert web link"
-msgstr "Link einfügen"
+#: ../../include/profile_selectors.php:80
+msgid "Don't care"
+msgstr "Interessiert mich nicht"
-#: ../../include/conversation.php:1106
-msgid "web link"
-msgstr "Web-Link"
+#: ../../include/profile_selectors.php:80
+msgid "Ask me"
+msgstr "Frag mich mal"
-#: ../../include/conversation.php:1107
-msgid "Insert video link"
-msgstr "Video-Link einfügen"
+#: ../../include/text.php:321
+msgid "prev"
+msgstr "vorherige"
-#: ../../include/conversation.php:1108
-msgid "video link"
-msgstr "Video-Link"
+#: ../../include/text.php:323
+msgid "first"
+msgstr "erste"
-#: ../../include/conversation.php:1109
-msgid "Insert audio link"
-msgstr "Audio-Link einfügen"
+#: ../../include/text.php:352
+msgid "last"
+msgstr "letzte"
-#: ../../include/conversation.php:1110
-msgid "audio link"
-msgstr "Audio-Link"
+#: ../../include/text.php:355
+msgid "next"
+msgstr "nächste"
-#: ../../include/conversation.php:1111 ../../mod/editpost.php:119
-#: ../../mod/editlayout.php:113 ../../mod/editwebpage.php:151
-#: ../../mod/editblock.php:127
-msgid "Set your location"
-msgstr "Standort"
+#: ../../include/text.php:367
+msgid "older"
+msgstr "älter"
-#: ../../include/conversation.php:1112
-msgid "set location"
-msgstr "Standort"
+#: ../../include/text.php:369
+msgid "newer"
+msgstr "neuer"
-#: ../../include/conversation.php:1113 ../../mod/editpost.php:120
-#: ../../mod/editlayout.php:114 ../../mod/editwebpage.php:152
-#: ../../mod/editblock.php:128
-msgid "Clear browser location"
-msgstr "Browser-Standort löschen"
+#: ../../include/text.php:736
+msgid "No connections"
+msgstr "Keine Verbindungen"
-#: ../../include/conversation.php:1114
-msgid "clear location"
-msgstr "Standort löschen"
+#: ../../include/text.php:753
+#, php-format
+msgid "%d Connection"
+msgid_plural "%d Connections"
+msgstr[0] "%d Verbindung"
+msgstr[1] "%d Verbindungen"
-#: ../../include/conversation.php:1116 ../../mod/editpost.php:133
-#: ../../mod/editlayout.php:127 ../../mod/editwebpage.php:169
-#: ../../mod/editblock.php:142
-msgid "Set title"
-msgstr "Titel"
+#: ../../include/text.php:766
+msgid "View Connections"
+msgstr "Verbindungen anzeigen"
-#: ../../include/conversation.php:1119 ../../mod/editpost.php:135
-#: ../../mod/editlayout.php:130 ../../mod/editwebpage.php:171
-#: ../../mod/editblock.php:145
-msgid "Categories (comma-separated list)"
-msgstr "Kategorien (Kommagetrennte Liste)"
+#: ../../include/text.php:905
+msgid "poke"
+msgstr "anstupsen"
-#: ../../include/conversation.php:1121 ../../mod/editpost.php:122
-#: ../../mod/editlayout.php:116 ../../mod/editwebpage.php:154
-#: ../../mod/editblock.php:130
-msgid "Permission settings"
-msgstr "Berechtigungs-Einstellungen"
+#: ../../include/text.php:906
+msgid "ping"
+msgstr "anpingen"
-#: ../../include/conversation.php:1122
-msgid "permissions"
-msgstr "Berechtigungen"
+#: ../../include/text.php:906
+msgid "pinged"
+msgstr "pingte"
-#: ../../include/conversation.php:1130 ../../mod/editpost.php:130
-#: ../../mod/editlayout.php:124 ../../mod/editwebpage.php:164
-#: ../../mod/editblock.php:139
-msgid "Public post"
-msgstr "Öffentlicher Beitrag"
+#: ../../include/text.php:907
+msgid "prod"
+msgstr "knuffen"
-#: ../../include/conversation.php:1132 ../../mod/editpost.php:136
-#: ../../mod/editlayout.php:131 ../../mod/editwebpage.php:172
-#: ../../mod/editblock.php:146
-msgid "Example: bob@example.com, mary@example.com"
-msgstr "Beispiel: bob@example.com, mary@example.com"
+#: ../../include/text.php:907
+msgid "prodded"
+msgstr "knuffte"
-#: ../../include/conversation.php:1145 ../../mod/editpost.php:147
-#: ../../mod/mail.php:226 ../../mod/mail.php:339 ../../mod/editlayout.php:141
-#: ../../mod/editwebpage.php:182 ../../mod/editblock.php:156
-msgid "Set expiration date"
-msgstr "Verfallsdatum"
+#: ../../include/text.php:908
+msgid "slap"
+msgstr "ohrfeigen"
-#: ../../include/conversation.php:1147 ../../include/ItemObject.php:560
-#: ../../mod/editpost.php:149 ../../mod/mail.php:228 ../../mod/mail.php:341
-msgid "Encrypt text"
-msgstr "Text verschlüsseln"
+#: ../../include/text.php:908
+msgid "slapped"
+msgstr "ohrfeigte"
-#: ../../include/conversation.php:1149 ../../mod/editpost.php:151
-msgid "OK"
-msgstr "Ok"
+#: ../../include/text.php:909
+msgid "finger"
+msgstr "befummeln"
-#: ../../include/conversation.php:1150 ../../mod/settings.php:517
-#: ../../mod/settings.php:543 ../../mod/tagrm.php:11 ../../mod/tagrm.php:94
-#: ../../mod/editpost.php:152 ../../mod/fbrowser.php:82
-#: ../../mod/fbrowser.php:117
-msgid "Cancel"
-msgstr "Abbrechen"
+#: ../../include/text.php:909
+msgid "fingered"
+msgstr "befummelte"
-#: ../../include/conversation.php:1381
-msgid "Commented Order"
-msgstr "Neueste Kommentare"
+#: ../../include/text.php:910
+msgid "rebuff"
+msgstr "eine Abfuhr erteilen"
-#: ../../include/conversation.php:1384
-msgid "Sort by Comment Date"
-msgstr "Nach Kommentardatum sortiert"
+#: ../../include/text.php:910
+msgid "rebuffed"
+msgstr "zurückgewiesen"
-#: ../../include/conversation.php:1387
-msgid "Posted Order"
-msgstr "Neueste Beiträge"
+#: ../../include/text.php:919
+msgid "happy"
+msgstr "glücklich"
-#: ../../include/conversation.php:1390
-msgid "Sort by Post Date"
-msgstr "Nach Beitragsdatum sortiert"
+#: ../../include/text.php:920
+msgid "sad"
+msgstr "traurig"
-#: ../../include/conversation.php:1394
-msgid "Personal"
-msgstr "Persönlich"
+#: ../../include/text.php:921
+msgid "mellow"
+msgstr "sanft"
-#: ../../include/conversation.php:1397
-msgid "Posts that mention or involve you"
-msgstr "Beiträge mit Beteiligung Deinerseits"
+#: ../../include/text.php:922
+msgid "tired"
+msgstr "müde"
-#: ../../include/conversation.php:1400 ../../mod/menu.php:61
-#: ../../mod/connections.php:211
-msgid "New"
-msgstr "Neu"
+#: ../../include/text.php:923
+msgid "perky"
+msgstr "frech"
-#: ../../include/conversation.php:1403
-msgid "Activity Stream - by date"
-msgstr "Activity Stream – nach Datum sortiert"
+#: ../../include/text.php:924
+msgid "angry"
+msgstr "sauer"
-#: ../../include/conversation.php:1410
-msgid "Starred"
-msgstr "Markiert"
+#: ../../include/text.php:925
+msgid "stupified"
+msgstr "verblüfft"
-#: ../../include/conversation.php:1413
-msgid "Favourite Posts"
-msgstr "Markierte Beiträge"
+#: ../../include/text.php:926
+msgid "puzzled"
+msgstr "verwirrt"
-#: ../../include/conversation.php:1420
-msgid "Spam"
-msgstr "Spam"
+#: ../../include/text.php:927
+msgid "interested"
+msgstr "interessiert"
-#: ../../include/conversation.php:1423
-msgid "Posts flagged as SPAM"
-msgstr "Nachrichten, die als SPAM markiert wurden"
+#: ../../include/text.php:928
+msgid "bitter"
+msgstr "verbittert"
-#: ../../include/conversation.php:1454
-msgid "Channel"
-msgstr "Kanal"
+#: ../../include/text.php:929
+msgid "cheerful"
+msgstr "fröhlich"
-#: ../../include/conversation.php:1457
-msgid "Status Messages and Posts"
-msgstr "Statusnachrichten und Beiträge"
+#: ../../include/text.php:930
+msgid "alive"
+msgstr "lebendig"
-#: ../../include/conversation.php:1466
-msgid "About"
-msgstr "Ãœber"
+#: ../../include/text.php:931
+msgid "annoyed"
+msgstr "verärgert"
-#: ../../include/conversation.php:1469
-msgid "Profile Details"
-msgstr "Profil-Details"
+#: ../../include/text.php:932
+msgid "anxious"
+msgstr "unruhig"
-#: ../../include/conversation.php:1478 ../../include/photos.php:302
-msgid "Photo Albums"
-msgstr "Fotoalben"
+#: ../../include/text.php:933
+msgid "cranky"
+msgstr "schrullig"
-#: ../../include/conversation.php:1487
-msgid "Files and Storage"
-msgstr "Dateien und Speicher"
+#: ../../include/text.php:934
+msgid "disturbed"
+msgstr "verstört"
-#: ../../include/conversation.php:1496 ../../include/conversation.php:1499
-msgid "Chatrooms"
-msgstr "Chaträume"
+#: ../../include/text.php:935
+msgid "frustrated"
+msgstr "frustriert"
-#: ../../include/conversation.php:1509
-msgid "Events and Calendar"
-msgstr "Veranstaltungen und Kalender"
+#: ../../include/text.php:936
+msgid "depressed"
+msgstr "deprimiert"
-#: ../../include/conversation.php:1517
-msgid "Saved Bookmarks"
-msgstr "Gespeicherte Lesezeichen"
+#: ../../include/text.php:937
+msgid "motivated"
+msgstr "motiviert"
-#: ../../include/conversation.php:1528
-msgid "Manage Webpages"
-msgstr "Webseiten verwalten"
+#: ../../include/text.php:938
+msgid "relaxed"
+msgstr "entspannt"
-#: ../../include/identity.php:30 ../../mod/item.php:1187
-msgid "Unable to obtain identity information from database"
-msgstr "Kann keine Identitäts-Informationen aus Datenbank beziehen"
+#: ../../include/text.php:939
+msgid "surprised"
+msgstr "überrascht"
-#: ../../include/identity.php:63
-msgid "Empty name"
-msgstr "Namensfeld leer"
+#: ../../include/text.php:1103
+msgid "Monday"
+msgstr "Montag"
-#: ../../include/identity.php:65
-msgid "Name too long"
-msgstr "Name ist zu lang"
+#: ../../include/text.php:1103
+msgid "Tuesday"
+msgstr "Dienstag"
-#: ../../include/identity.php:147
-msgid "No account identifier"
-msgstr "Keine Account-Kennung"
+#: ../../include/text.php:1103
+msgid "Wednesday"
+msgstr "Mittwoch"
-#: ../../include/identity.php:157
-msgid "Nickname is required."
-msgstr "Spitzname ist erforderlich."
+#: ../../include/text.php:1103
+msgid "Thursday"
+msgstr "Donnerstag"
-#: ../../include/identity.php:171
-msgid ""
-"Nickname has unsupported characters or is already being used on this site."
-msgstr "Der Spitzname enthält nicht-unterstütze Zeichen oder wird bereits auf dieser Seite genutzt."
+#: ../../include/text.php:1103
+msgid "Friday"
+msgstr "Freitag"
-#: ../../include/identity.php:230
-msgid "Unable to retrieve created identity"
-msgstr "Kann die erstellte Identität nicht empfangen"
+#: ../../include/text.php:1103
+msgid "Saturday"
+msgstr "Samstag"
-#: ../../include/identity.php:289
-msgid "Default Profile"
-msgstr "Standard-Profil"
+#: ../../include/text.php:1103
+msgid "Sunday"
+msgstr "Sonntag"
-#: ../../include/identity.php:481
-msgid "Requested channel is not available."
-msgstr "Angeforderte Kanal nicht verfügbar."
+#: ../../include/text.php:1107
+msgid "January"
+msgstr "Januar"
-#: ../../include/identity.php:493
-msgid " Sorry, you don't have the permission to view this profile. "
-msgstr "Entschuldigung, Du besitzt nicht die nötigen Rechte, um dieses Profil zu betrachten."
+#: ../../include/text.php:1107
+msgid "February"
+msgstr "Februar"
-#: ../../include/identity.php:528 ../../mod/webpages.php:8
-#: ../../mod/connect.php:13 ../../mod/layouts.php:8
-#: ../../mod/achievements.php:8 ../../mod/blocks.php:10
-#: ../../mod/profile.php:16 ../../mod/filestorage.php:40
-msgid "Requested profile is not available."
-msgstr "Erwünschte Profil ist nicht verfügbar."
+#: ../../include/text.php:1107
+msgid "March"
+msgstr "März"
-#: ../../include/identity.php:646 ../../mod/profiles.php:603
-msgid "Change profile photo"
-msgstr "Profilfoto ändern"
+#: ../../include/text.php:1107
+msgid "April"
+msgstr "April"
-#: ../../include/identity.php:652
-msgid "Profiles"
-msgstr "Profile"
+#: ../../include/text.php:1107
+msgid "May"
+msgstr "Mai"
-#: ../../include/identity.php:652
-msgid "Manage/edit profiles"
-msgstr "Verwalte/Bearbeite Profile"
+#: ../../include/text.php:1107
+msgid "June"
+msgstr "Juni"
-#: ../../include/identity.php:653 ../../mod/profiles.php:604
-msgid "Create New Profile"
-msgstr "Neues Profil erstellen"
+#: ../../include/text.php:1107
+msgid "July"
+msgstr "Juli"
-#: ../../include/identity.php:656
-msgid "Edit Profile"
-msgstr "Profile bearbeiten"
+#: ../../include/text.php:1107
+msgid "August"
+msgstr "August"
-#: ../../include/identity.php:667 ../../mod/profiles.php:615
-msgid "Profile Image"
-msgstr "Profilfoto:"
+#: ../../include/text.php:1107
+msgid "September"
+msgstr "September"
-#: ../../include/identity.php:670 ../../mod/profiles.php:618
-msgid "visible to everybody"
-msgstr "sichtbar für jeden"
+#: ../../include/text.php:1107
+msgid "October"
+msgstr "Oktober"
-#: ../../include/identity.php:671 ../../mod/profiles.php:619
-msgid "Edit visibility"
-msgstr "Sichtbarkeit bearbeiten"
+#: ../../include/text.php:1107
+msgid "November"
+msgstr "November"
-#: ../../include/identity.php:685 ../../include/identity.php:912
-#: ../../mod/directory.php:159
-msgid "Gender:"
-msgstr "Geschlecht:"
+#: ../../include/text.php:1107
+msgid "December"
+msgstr "Dezember"
-#: ../../include/identity.php:686 ../../include/identity.php:932
-#: ../../mod/directory.php:161
-msgid "Status:"
-msgstr "Status:"
+#: ../../include/text.php:1185
+msgid "unknown.???"
+msgstr "unbekannt.???"
-#: ../../include/identity.php:687 ../../include/identity.php:943
-#: ../../mod/directory.php:163
-msgid "Homepage:"
-msgstr "Homepage:"
+#: ../../include/text.php:1186
+msgid "bytes"
+msgstr "Bytes"
-#: ../../include/identity.php:688 ../../mod/dirprofile.php:157
-msgid "Online Now"
-msgstr "gerade online"
+#: ../../include/text.php:1225
+msgid "remove category"
+msgstr "Kategorie entfernen"
-#: ../../include/identity.php:756 ../../include/identity.php:836
-#: ../../mod/ping.php:262
-msgid "g A l F d"
-msgstr "l, d. F G \\\\U\\\\h\\\\r"
+#: ../../include/text.php:1295
+msgid "remove from file"
+msgstr "aus der Datei entfernen"
-#: ../../include/identity.php:757 ../../include/identity.php:837
-msgid "F d"
-msgstr "d. F"
+#: ../../include/text.php:1360 ../../include/text.php:1372
+msgid "Click to open/close"
+msgstr "Klicke zum Öffnen/Schließen"
-#: ../../include/identity.php:802 ../../include/identity.php:877
-#: ../../mod/ping.php:284
-msgid "[today]"
-msgstr "[Heute]"
+#: ../../include/text.php:1527 ../../mod/events.php:409
+msgid "Link to Source"
+msgstr "Link zur Quelle"
-#: ../../include/identity.php:814
-msgid "Birthday Reminders"
-msgstr "Geburtstags Erinnerungen"
+#: ../../include/text.php:1546
+msgid "Select a page layout: "
+msgstr "Ein Seiten-Layout auswählen:"
-#: ../../include/identity.php:815
-msgid "Birthdays this week:"
-msgstr "Geburtstage in dieser Woche:"
+#: ../../include/text.php:1549 ../../include/text.php:1614
+msgid "default"
+msgstr "Standard"
-#: ../../include/identity.php:870
-msgid "[No description]"
-msgstr "[Keine Beschreibung]"
+#: ../../include/text.php:1585
+msgid "Page content type: "
+msgstr "Content-Typ der Seite:"
-#: ../../include/identity.php:888
-msgid "Event Reminders"
-msgstr "Veranstaltungs- Erinnerungen"
+#: ../../include/text.php:1626
+msgid "Select an alternate language"
+msgstr "Wähle eine alternative Sprache"
-#: ../../include/identity.php:889
-msgid "Events this week:"
-msgstr "Veranstaltungen in dieser Woche:"
+#: ../../include/text.php:1760
+msgid "activity"
+msgstr "Aktivität"
-#: ../../include/identity.php:902 ../../include/identity.php:986
-#: ../../mod/profperm.php:107
-msgid "Profile"
-msgstr "Profil"
+#: ../../include/text.php:2041
+msgid "Design"
+msgstr "Design"
-#: ../../include/identity.php:910 ../../mod/settings.php:937
-msgid "Full Name:"
-msgstr "Voller Name:"
+#: ../../include/text.php:2044
+msgid "Blocks"
+msgstr "Blöcke"
-#: ../../include/identity.php:917
-msgid "j F, Y"
-msgstr "j F, Y"
+#: ../../include/text.php:2045
+msgid "Menus"
+msgstr "Menüs"
-#: ../../include/identity.php:918
-msgid "j F"
-msgstr "j F"
+#: ../../include/text.php:2046
+msgid "Layouts"
+msgstr "Layouts"
-#: ../../include/identity.php:925
-msgid "Birthday:"
-msgstr "Geburtstag:"
+#: ../../include/text.php:2047
+msgid "Pages"
+msgstr "Seiten"
-#: ../../include/identity.php:929
-msgid "Age:"
-msgstr "Alter:"
+#: ../../include/acl_selectors.php:240
+msgid "Visible to your default audience"
+msgstr "Standard-Sichtbarkeit"
-#: ../../include/identity.php:938
-#, php-format
-msgid "for %1$d %2$s"
-msgstr "seit %1$d %2$s"
+#: ../../include/acl_selectors.php:241
+msgid "Show"
+msgstr "Zeigen"
-#: ../../include/identity.php:941 ../../mod/profiles.php:526
-msgid "Sexual Preference:"
-msgstr "Sexuelle Orientierung:"
+#: ../../include/acl_selectors.php:242
+msgid "Don't show"
+msgstr "Nicht zeigen"
-#: ../../include/identity.php:945 ../../mod/profiles.php:528
-msgid "Hometown:"
-msgstr "Heimatstadt:"
+#: ../../include/acl_selectors.php:248 ../../mod/events.php:585
+#: ../../mod/chat.php:209 ../../mod/photos.php:588 ../../mod/photos.php:950
+#: ../../mod/filestorage.php:137
+msgid "Permissions"
+msgstr "Berechtigungen"
-#: ../../include/identity.php:947
-msgid "Tags:"
-msgstr "Schlagworte:"
+#: ../../include/acl_selectors.php:249 ../../include/ItemObject.php:305
+#: ../../mod/photos.php:1148
+msgid "Close"
+msgstr "Schließen"
-#: ../../include/identity.php:949 ../../mod/profiles.php:529
-msgid "Political Views:"
-msgstr "Politische Ansichten:"
+#: ../../include/api.php:1084
+msgid "Public Timeline"
+msgstr "Öffentliche Zeitleiste"
-#: ../../include/identity.php:951
-msgid "Religion:"
-msgstr "Religion:"
+#: ../../include/apps.php:126
+msgid "Site Admin"
+msgstr "Hub-Administration"
-#: ../../include/identity.php:953 ../../mod/directory.php:165
-msgid "About:"
-msgstr "Ãœber:"
+#: ../../include/apps.php:128
+msgid "Address Book"
+msgstr "Adressbuch"
-#: ../../include/identity.php:955
-msgid "Hobbies/Interests:"
-msgstr "Hobbys/Interessen:"
+#: ../../include/apps.php:142 ../../mod/mood.php:131
+msgid "Mood"
+msgstr "Laune"
-#: ../../include/identity.php:957 ../../mod/profiles.php:532
-msgid "Likes:"
-msgstr "Gefällt:"
+#: ../../include/apps.php:146
+msgid "Probe"
+msgstr "Testen"
-#: ../../include/identity.php:959 ../../mod/profiles.php:533
-msgid "Dislikes:"
-msgstr "Gefällt nicht:"
+#: ../../include/apps.php:147
+msgid "Suggest"
+msgstr "Empfehlen"
-#: ../../include/identity.php:962
-msgid "Contact information and Social Networks:"
-msgstr "Kontaktinformation und soziale Netzwerke:"
+#: ../../include/apps.php:148
+msgid "Random Channel"
+msgstr "Zufälliger Kanal"
-#: ../../include/identity.php:964
-msgid "My other channels:"
-msgstr "Meine anderen Kanäle:"
+#: ../../include/apps.php:149
+msgid "Invite"
+msgstr "Einladen"
-#: ../../include/identity.php:966
-msgid "Musical interests:"
-msgstr "Musikalische Interessen:"
+#: ../../include/apps.php:150
+msgid "Features"
+msgstr "Funktionen"
-#: ../../include/identity.php:968
-msgid "Books, literature:"
-msgstr "Bücher, Literatur:"
+#: ../../include/apps.php:151
+msgid "Language"
+msgstr "Sprache"
-#: ../../include/identity.php:970
-msgid "Television:"
-msgstr "Fernsehen:"
+#: ../../include/apps.php:152
+msgid "Post"
+msgstr "Beitrag"
-#: ../../include/identity.php:972
-msgid "Film/dance/culture/entertainment:"
-msgstr "Film/Tanz/Kultur/Unterhaltung:"
+#: ../../include/apps.php:153
+msgid "Profile Photo"
+msgstr "Profilfoto"
-#: ../../include/identity.php:974
-msgid "Love/Romance:"
-msgstr "Liebe/Romantik:"
+#: ../../include/apps.php:242 ../../mod/settings.php:81
+#: ../../mod/settings.php:575
+msgid "Update"
+msgstr "Aktualisieren"
-#: ../../include/identity.php:976
-msgid "Work/employment:"
-msgstr "Arbeit/Anstellung:"
+#: ../../include/apps.php:242
+msgid "Install"
+msgstr "Installieren"
-#: ../../include/identity.php:978
-msgid "School/education:"
-msgstr "Schule/Ausbildung:"
+#: ../../include/apps.php:247
+msgid "Purchase"
+msgstr "Kaufen"
-#: ../../include/ItemObject.php:89 ../../mod/photos.php:847
-msgid "Private Message"
-msgstr "Private Nachricht"
+#: ../../include/ItemObject.php:130
+msgid "Save to Folder"
+msgstr "In Ordner speichern"
-#: ../../include/ItemObject.php:96 ../../include/page_widgets.php:8
-#: ../../include/menu.php:41 ../../mod/thing.php:235
-#: ../../mod/settings.php:578 ../../mod/menu.php:59 ../../mod/webpages.php:118
-#: ../../mod/editpost.php:112 ../../mod/layouts.php:102
-#: ../../mod/editlayout.php:106 ../../mod/blocks.php:93
-#: ../../mod/editwebpage.php:144 ../../mod/editblock.php:120
-#: ../../mod/filestorage.php:170
-msgid "Edit"
-msgstr "Bearbeiten"
+#: ../../include/ItemObject.php:142 ../../include/ItemObject.php:154
+#: ../../mod/photos.php:1022 ../../mod/photos.php:1034
+msgid "View all"
+msgstr "Alles anzeigen"
-#: ../../include/ItemObject.php:118
-msgid "save to folder"
-msgstr "In Ordner speichern"
+#: ../../include/ItemObject.php:151 ../../mod/photos.php:1031
+msgctxt "noun"
+msgid "Dislike"
+msgid_plural "Dislikes"
+msgstr[0] "Gefällt nicht"
+msgstr[1] "Gefällt nicht"
-#: ../../include/ItemObject.php:146
-msgid "add star"
-msgstr "markieren"
+#: ../../include/ItemObject.php:179
+msgid "Add Star"
+msgstr "Stern hinzufügen"
-#: ../../include/ItemObject.php:147
-msgid "remove star"
-msgstr "Markierung entfernen"
+#: ../../include/ItemObject.php:180
+msgid "Remove Star"
+msgstr "Stern entfernen"
-#: ../../include/ItemObject.php:148
-msgid "toggle star status"
-msgstr "Markierung umschalten"
+#: ../../include/ItemObject.php:181
+msgid "Toggle Star Status"
+msgstr "Markierungsstatus (Stern) umschalten"
-#: ../../include/ItemObject.php:152
+#: ../../include/ItemObject.php:185
msgid "starred"
msgstr "markiert"
-#: ../../include/ItemObject.php:169
-msgid "add tag"
-msgstr "Schlagwort hinzufügen"
+#: ../../include/ItemObject.php:203
+msgid "Add Tag"
+msgstr "Tag hinzufügen"
-#: ../../include/ItemObject.php:184 ../../mod/photos.php:972
+#: ../../include/ItemObject.php:221 ../../mod/photos.php:974
msgid "I like this (toggle)"
msgstr "Mir gefällt das (Umschalter)"
-#: ../../include/ItemObject.php:184 ../../include/taxonomy.php:254
-msgid "like"
-msgstr "mag"
-
-#: ../../include/ItemObject.php:185 ../../mod/photos.php:973
+#: ../../include/ItemObject.php:222 ../../mod/photos.php:975
msgid "I don't like this (toggle)"
msgstr "Mir gefällt das nicht (Umschalter)"
-#: ../../include/ItemObject.php:185 ../../include/taxonomy.php:255
-msgid "dislike"
-msgstr "verurteile"
-
-#: ../../include/ItemObject.php:187
-msgid "Share this"
-msgstr "Teile dies"
+#: ../../include/ItemObject.php:226
+msgid "Share This"
+msgstr "Teilen"
-#: ../../include/ItemObject.php:187
+#: ../../include/ItemObject.php:226
msgid "share"
msgstr "Teilen"
-#: ../../include/ItemObject.php:211 ../../include/ItemObject.php:212
+#: ../../include/ItemObject.php:249 ../../include/ItemObject.php:250
#, php-format
msgid "View %s's profile - %s"
msgstr "Schaue Dir %ss Profil an – %s"
-#: ../../include/ItemObject.php:213
+#: ../../include/ItemObject.php:251
msgid "to"
msgstr "an"
-#: ../../include/ItemObject.php:214
+#: ../../include/ItemObject.php:252
msgid "via"
msgstr "via"
-#: ../../include/ItemObject.php:215
+#: ../../include/ItemObject.php:253
msgid "Wall-to-Wall"
msgstr "Wall-to-Wall"
-#: ../../include/ItemObject.php:216
+#: ../../include/ItemObject.php:254
msgid "via Wall-To-Wall:"
msgstr "via Wall-To-Wall:"
-#: ../../include/ItemObject.php:250
-msgid "Bookmark Links"
-msgstr "Setze Lesezeichen für die Links"
+#: ../../include/ItemObject.php:290
+msgid "Save Bookmarks"
+msgstr "Favoriten speichern"
+
+#: ../../include/ItemObject.php:291
+msgid "Add to Calendar"
+msgstr "Zum Kalender hinzufügen"
+
+#: ../../include/ItemObject.php:299 ../../mod/photos.php:1142
+msgctxt "noun"
+msgid "Likes"
+msgstr "Gefällt mir"
+
+#: ../../include/ItemObject.php:300 ../../mod/photos.php:1143
+msgctxt "noun"
+msgid "Dislikes"
+msgstr "Gefällt nicht"
-#: ../../include/ItemObject.php:280
+#: ../../include/ItemObject.php:331
#, php-format
msgid "%d comment"
msgid_plural "%d comments"
msgstr[0] "%d Kommentar"
msgstr[1] "%d Kommentare"
-#: ../../include/ItemObject.php:545 ../../mod/photos.php:991
-#: ../../mod/photos.php:1078
+#: ../../include/ItemObject.php:596 ../../mod/photos.php:993
+#: ../../mod/photos.php:1103
msgid "This is you"
msgstr "Das bist Du"
-#: ../../include/ItemObject.php:548 ../../mod/events.php:469
-#: ../../mod/thing.php:283 ../../mod/thing.php:326 ../../mod/invite.php:156
-#: ../../mod/settings.php:516 ../../mod/settings.php:628
-#: ../../mod/settings.php:656 ../../mod/settings.php:680
-#: ../../mod/settings.php:752 ../../mod/settings.php:929
-#: ../../mod/chat.php:162 ../../mod/chat.php:192 ../../mod/connect.php:92
-#: ../../mod/group.php:81 ../../mod/admin.php:431 ../../mod/admin.php:739
-#: ../../mod/admin.php:879 ../../mod/admin.php:1078 ../../mod/admin.php:1165
-#: ../../mod/connedit.php:437 ../../mod/profiles.php:506
-#: ../../mod/sources.php:104 ../../mod/sources.php:138 ../../mod/setup.php:304
-#: ../../mod/setup.php:347 ../../mod/import.php:387 ../../mod/mail.php:223
-#: ../../mod/mail.php:335 ../../mod/poke.php:166 ../../mod/fsuggest.php:108
-#: ../../mod/filestorage.php:131 ../../mod/photos.php:566
-#: ../../mod/photos.php:671 ../../mod/photos.php:954 ../../mod/photos.php:994
-#: ../../mod/photos.php:1081 ../../mod/mood.php:142
-#: ../../view/theme/redbasic/php/config.php:95
-#: ../../view/theme/apw/php/config.php:231
-#: ../../view/theme/blogga/view/theme/blog/config.php:67
+#: ../../include/ItemObject.php:599 ../../mod/mood.php:135
+#: ../../mod/profiles.php:633 ../../mod/connect.php:92 ../../mod/setup.php:313
+#: ../../mod/setup.php:358 ../../mod/poke.php:166 ../../mod/sources.php:104
+#: ../../mod/sources.php:138 ../../mod/events.php:587 ../../mod/chat.php:177
+#: ../../mod/chat.php:211 ../../mod/photos.php:594 ../../mod/photos.php:671
+#: ../../mod/photos.php:956 ../../mod/photos.php:996 ../../mod/photos.php:1106
+#: ../../mod/connedit.php:555 ../../mod/thing.php:284 ../../mod/thing.php:327
+#: ../../mod/pdledit.php:58 ../../mod/settings.php:549
+#: ../../mod/settings.php:661 ../../mod/settings.php:690
+#: ../../mod/settings.php:714 ../../mod/settings.php:790
+#: ../../mod/settings.php:976 ../../mod/fsuggest.php:108
+#: ../../mod/filestorage.php:146 ../../mod/group.php:81
+#: ../../mod/import.php:480 ../../mod/admin.php:412 ../../mod/admin.php:723
+#: ../../mod/admin.php:859 ../../mod/admin.php:992 ../../mod/admin.php:1191
+#: ../../mod/admin.php:1278 ../../mod/invite.php:142 ../../mod/locs.php:99
+#: ../../mod/mail.php:348 ../../mod/xchan.php:11 ../../mod/appman.php:99
+#: ../../mod/poll.php:68 ../../view/theme/apw/php/config.php:256
#: ../../view/theme/blogga/php/config.php:67
+#: ../../view/theme/blogga/view/theme/blog/config.php:67
+#: ../../view/theme/redbasic/php/config.php:99
msgid "Submit"
msgstr "Bestätigen"
-#: ../../include/ItemObject.php:549
+#: ../../include/ItemObject.php:600
msgid "Bold"
msgstr "Fett"
-#: ../../include/ItemObject.php:550
+#: ../../include/ItemObject.php:601
msgid "Italic"
msgstr "Kursiv"
-#: ../../include/ItemObject.php:551
+#: ../../include/ItemObject.php:602
msgid "Underline"
msgstr "Unterstrichen"
-#: ../../include/ItemObject.php:552
+#: ../../include/ItemObject.php:603
msgid "Quote"
msgstr "Zitat"
-#: ../../include/ItemObject.php:553
+#: ../../include/ItemObject.php:604
msgid "Code"
msgstr "Code"
-#: ../../include/ItemObject.php:554
+#: ../../include/ItemObject.php:605
msgid "Image"
msgstr "Bild"
-#: ../../include/ItemObject.php:555
+#: ../../include/ItemObject.php:606
msgid "Link"
msgstr "Link"
-#: ../../include/ItemObject.php:556
+#: ../../include/ItemObject.php:607
msgid "Video"
msgstr "Video"
-#: ../../include/api.php:974
-msgid "Public Timeline"
-msgstr "Öffentliche Zeitleiste"
+#: ../../mod/mood.php:132
+msgid "Set your current mood and tell your friends"
+msgstr "Wähle Deine aktuelle Stimmung und teile sie mit Deinen Freunden"
-#: ../../include/network.php:640
-msgid "view full size"
-msgstr "In Vollbildansicht anschauen"
+#: ../../mod/profperm.php:29 ../../mod/profperm.php:58
+msgid "Invalid profile identifier."
+msgstr "Ungültiger Profil-Identifikator"
-#: ../../include/notify.php:23
-msgid "created a new post"
-msgstr "Neuer Beitrag wurde erzeugt"
+#: ../../mod/profperm.php:110
+msgid "Profile Visibility Editor"
+msgstr "Profil-Sichtbarkeits-Editor"
-#: ../../include/notify.php:24
-#, php-format
-msgid "commented on %s's post"
-msgstr "hat %s's Beitrag kommentiert"
+#: ../../mod/profperm.php:114
+msgid "Click on a contact to add or remove."
+msgstr "Klicke auf einen Kontakt, um ihn hinzuzufügen oder zu entfernen."
-#: ../../include/profile_selectors.php:6
-msgid "Male"
-msgstr "Männlich"
+#: ../../mod/profperm.php:123
+msgid "Visible To"
+msgstr "Sichtbar für"
-#: ../../include/profile_selectors.php:6
-msgid "Female"
-msgstr "Weiblich"
+#: ../../mod/profperm.php:139 ../../mod/connections.php:279
+msgid "All Connections"
+msgstr "Alle Verbindungen"
-#: ../../include/profile_selectors.php:6
-msgid "Currently Male"
-msgstr "Momentan männlich"
+#: ../../mod/mitem.php:24 ../../mod/menu.php:108
+msgid "Menu not found."
+msgstr "Menü nicht gefunden"
-#: ../../include/profile_selectors.php:6
-msgid "Currently Female"
-msgstr "Momentan weiblich"
+#: ../../mod/mitem.php:67
+msgid "Menu element updated."
+msgstr "Menü-Element aktualisiert."
-#: ../../include/profile_selectors.php:6
-msgid "Mostly Male"
-msgstr "Größtenteils männlich"
+#: ../../mod/mitem.php:71
+msgid "Unable to update menu element."
+msgstr "Kann Menü-Element nicht aktualisieren."
-#: ../../include/profile_selectors.php:6
-msgid "Mostly Female"
-msgstr "Größtenteils weiblich"
+#: ../../mod/mitem.php:77
+msgid "Menu element added."
+msgstr "Menü-Bestandteil hinzugefügt."
-#: ../../include/profile_selectors.php:6
-msgid "Transgender"
-msgstr "Transsexuell"
+#: ../../mod/mitem.php:81
+msgid "Unable to add menu element."
+msgstr "Kann Menü-Bestandteil nicht hinzufügen."
-#: ../../include/profile_selectors.php:6
-msgid "Intersex"
-msgstr "Zwischengeschlechtlich"
+#: ../../mod/mitem.php:111 ../../mod/menu.php:136 ../../mod/xchan.php:37
+msgid "Not found."
+msgstr "Nicht gefunden."
-#: ../../include/profile_selectors.php:6
-msgid "Transsexual"
-msgstr "Transsexuell"
+#: ../../mod/mitem.php:127
+msgid "Manage Menu Elements"
+msgstr "Menü-Bestandteile verwalten"
-#: ../../include/profile_selectors.php:6
-msgid "Hermaphrodite"
-msgstr "Zwitter"
+#: ../../mod/mitem.php:130
+msgid "Edit menu"
+msgstr "Menü bearbeiten"
-#: ../../include/profile_selectors.php:6
-msgid "Neuter"
-msgstr "Geschlechtslos"
+#: ../../mod/mitem.php:133
+msgid "Edit element"
+msgstr "Bestandteil bearbeiten"
-#: ../../include/profile_selectors.php:6
-msgid "Non-specific"
-msgstr "unklar"
+#: ../../mod/mitem.php:134
+msgid "Drop element"
+msgstr "Bestandteil löschen"
-#: ../../include/profile_selectors.php:6
-msgid "Other"
-msgstr "Anders"
+#: ../../mod/mitem.php:135
+msgid "New element"
+msgstr "Neues Bestandteil"
-#: ../../include/profile_selectors.php:6
-msgid "Undecided"
-msgstr "Unentschieden"
+#: ../../mod/mitem.php:136
+msgid "Edit this menu container"
+msgstr "Diesen Menü-Container bearbeiten"
-#: ../../include/profile_selectors.php:23
-msgid "Males"
-msgstr "Männer"
+#: ../../mod/mitem.php:137
+msgid "Add menu element"
+msgstr "Menüelement hinzufügen"
-#: ../../include/profile_selectors.php:23
-msgid "Females"
-msgstr "Frauen"
+#: ../../mod/mitem.php:138
+msgid "Delete this menu item"
+msgstr "Lösche dieses Menü-Bestandteil"
-#: ../../include/profile_selectors.php:23
-msgid "Gay"
-msgstr "Schwul"
+#: ../../mod/mitem.php:139
+msgid "Edit this menu item"
+msgstr "Bearbeite dieses Menü-Bestandteil"
-#: ../../include/profile_selectors.php:23
-msgid "Lesbian"
-msgstr "Lesbisch"
+#: ../../mod/mitem.php:158
+msgid "New Menu Element"
+msgstr "Neues Menü-Bestandteil"
-#: ../../include/profile_selectors.php:23
-msgid "No Preference"
-msgstr "Keine Bevorzugung"
+#: ../../mod/mitem.php:160 ../../mod/mitem.php:203
+msgid "Menu Item Permissions"
+msgstr "Zugriffsrechte des Menü-Elements"
-#: ../../include/profile_selectors.php:23
-msgid "Bisexual"
-msgstr "Bisexuell"
+#: ../../mod/mitem.php:161 ../../mod/mitem.php:204 ../../mod/settings.php:1011
+msgid "(click to open/close)"
+msgstr "(zum öffnen/schließen anklicken)"
-#: ../../include/profile_selectors.php:23
-msgid "Autosexual"
-msgstr "Autosexuell"
+#: ../../mod/mitem.php:163 ../../mod/mitem.php:207
+msgid "Link text"
+msgstr "Link Text"
-#: ../../include/profile_selectors.php:23
-msgid "Abstinent"
-msgstr "Enthaltsam"
+#: ../../mod/mitem.php:164 ../../mod/mitem.php:208
+msgid "URL of link"
+msgstr "URL des Links"
-#: ../../include/profile_selectors.php:23
-msgid "Virgin"
-msgstr "Jungfräulich"
+#: ../../mod/mitem.php:165 ../../mod/mitem.php:209
+msgid "Use RedMatrix magic-auth if available"
+msgstr "Verwende die automatische RedMatrix-Authentifizierung (magic-auth), wenn verfügbar"
-#: ../../include/profile_selectors.php:23
-msgid "Deviant"
-msgstr "Abweichend"
+#: ../../mod/mitem.php:166 ../../mod/mitem.php:210
+msgid "Open link in new window"
+msgstr "Öffne Link in neuem Fenster"
-#: ../../include/profile_selectors.php:23
-msgid "Fetish"
-msgstr "Fetisch"
+#: ../../mod/mitem.php:168 ../../mod/mitem.php:212
+msgid "Order in list"
+msgstr "Reihenfolge in der Liste"
-#: ../../include/profile_selectors.php:23
-msgid "Oodles"
-msgstr "Unmengen"
+#: ../../mod/mitem.php:168 ../../mod/mitem.php:212
+msgid "Higher numbers will sink to bottom of listing"
+msgstr "Größere Nummern werden weiter unten in der Auflistung einsortiert"
-#: ../../include/profile_selectors.php:23
-msgid "Nonsexual"
-msgstr "Sexlos"
+#: ../../mod/mitem.php:181
+msgid "Menu item not found."
+msgstr "Menü-Bestandteil nicht gefunden."
-#: ../../include/profile_selectors.php:42
-msgid "Single"
-msgstr "Single"
+#: ../../mod/mitem.php:190
+msgid "Menu item deleted."
+msgstr "Menü-Bestandteil gelöscht."
-#: ../../include/profile_selectors.php:42
-msgid "Lonely"
-msgstr "Einsam"
+#: ../../mod/mitem.php:192
+msgid "Menu item could not be deleted."
+msgstr "Menü-Bestandteil kann nicht gelöscht werden."
-#: ../../include/profile_selectors.php:42
-msgid "Available"
-msgstr "Verfügbar"
+#: ../../mod/mitem.php:201
+msgid "Edit Menu Element"
+msgstr "Bearbeite Menü-Bestandteil"
-#: ../../include/profile_selectors.php:42
-msgid "Unavailable"
-msgstr "Nicht verfügbar"
+#: ../../mod/mitem.php:213 ../../mod/menu.php:130
+msgid "Modify"
+msgstr "Ändern"
-#: ../../include/profile_selectors.php:42
-msgid "Has crush"
-msgstr "Verguckt"
+#: ../../mod/achievements.php:34
+msgid "Some blurb about what to do when you're new here"
+msgstr "Ein Hinweis, was man tun kann, wenn man neu hier ist"
-#: ../../include/profile_selectors.php:42
-msgid "Infatuated"
-msgstr "Verknallt"
+#: ../../mod/profiles.php:18 ../../mod/profiles.php:165
+#: ../../mod/profiles.php:222 ../../mod/profiles.php:565
+msgid "Profile not found."
+msgstr "Profil nicht gefunden."
-#: ../../include/profile_selectors.php:42
-msgid "Dating"
-msgstr "Lerne gerade jemanden kennen"
+#: ../../mod/profiles.php:38
+msgid "Profile deleted."
+msgstr "Profil gelöscht."
-#: ../../include/profile_selectors.php:42
-msgid "Unfaithful"
-msgstr "Treulos"
+#: ../../mod/profiles.php:56 ../../mod/profiles.php:92
+msgid "Profile-"
+msgstr "Profil-"
-#: ../../include/profile_selectors.php:42
-msgid "Sex Addict"
-msgstr "Sexabhängig"
+#: ../../mod/profiles.php:77 ../../mod/profiles.php:120
+msgid "New profile created."
+msgstr "Neues Profil erstellt."
-#: ../../include/profile_selectors.php:42
-msgid "Friends/Benefits"
-msgstr "Freunde/Begünstigte"
+#: ../../mod/profiles.php:98
+msgid "Profile unavailable to clone."
+msgstr "Profil kann nicht geklont werden."
-#: ../../include/profile_selectors.php:42
-msgid "Casual"
-msgstr "Lose"
+#: ../../mod/profiles.php:136
+msgid "Profile unavailable to export."
+msgstr "Dieses Profil kann nicht exportiert werden."
-#: ../../include/profile_selectors.php:42
-msgid "Engaged"
-msgstr "Verlobt"
+#: ../../mod/profiles.php:232
+msgid "Profile Name is required."
+msgstr "Profil-Name erforderlich."
-#: ../../include/profile_selectors.php:42
-msgid "Married"
-msgstr "Verheiratet"
+#: ../../mod/profiles.php:378
+msgid "Marital Status"
+msgstr "Familienstand"
-#: ../../include/profile_selectors.php:42
-msgid "Imaginarily married"
-msgstr "Gewissermaßen verheiratet"
+#: ../../mod/profiles.php:382
+msgid "Romantic Partner"
+msgstr "Romantische Partner"
-#: ../../include/profile_selectors.php:42
-msgid "Partners"
-msgstr "Partner"
+#: ../../mod/profiles.php:386
+msgid "Likes"
+msgstr "Gefällt"
-#: ../../include/profile_selectors.php:42
-msgid "Cohabiting"
-msgstr "Lebensgemeinschaft"
+#: ../../mod/profiles.php:390
+msgid "Dislikes"
+msgstr "Gefällt nicht"
-#: ../../include/profile_selectors.php:42
-msgid "Common law"
-msgstr "Informelle Ehe"
+#: ../../mod/profiles.php:394
+msgid "Work/Employment"
+msgstr "Arbeit/Anstellung"
-#: ../../include/profile_selectors.php:42
-msgid "Happy"
-msgstr "Glücklich"
+#: ../../mod/profiles.php:397
+msgid "Religion"
+msgstr "Religion"
-#: ../../include/profile_selectors.php:42
-msgid "Not looking"
-msgstr "Nicht Ausschau haltend"
+#: ../../mod/profiles.php:401
+msgid "Political Views"
+msgstr "Politische Ansichten"
-#: ../../include/profile_selectors.php:42
-msgid "Swinger"
-msgstr "Swinger"
+#: ../../mod/profiles.php:405
+msgid "Gender"
+msgstr "Geschlecht"
-#: ../../include/profile_selectors.php:42
-msgid "Betrayed"
-msgstr "Betrogen"
+#: ../../mod/profiles.php:409
+msgid "Sexual Preference"
+msgstr "Sexuelle Orientierung"
-#: ../../include/profile_selectors.php:42
-msgid "Separated"
-msgstr "Getrennt"
+#: ../../mod/profiles.php:413
+msgid "Homepage"
+msgstr "Webseite"
-#: ../../include/profile_selectors.php:42
-msgid "Unstable"
-msgstr "Labil"
+#: ../../mod/profiles.php:417
+msgid "Interests"
+msgstr "Hobbys/Interessen"
-#: ../../include/profile_selectors.php:42
-msgid "Divorced"
-msgstr "Geschieden"
+#: ../../mod/profiles.php:421 ../../mod/admin.php:866
+msgid "Address"
+msgstr "Adresse"
-#: ../../include/profile_selectors.php:42
-msgid "Imaginarily divorced"
-msgstr "Gewissermaßen geschieden"
+#: ../../mod/profiles.php:428 ../../mod/pubsites.php:25
+msgid "Location"
+msgstr "Ort"
-#: ../../include/profile_selectors.php:42
-msgid "Widowed"
-msgstr "Verwitwet"
+#: ../../mod/profiles.php:511
+msgid "Profile updated."
+msgstr "Profil aktualisiert."
-#: ../../include/profile_selectors.php:42
-msgid "Uncertain"
-msgstr "Ungewiss"
+#: ../../mod/profiles.php:590
+msgid "Hide your contact/friend list from viewers of this profile?"
+msgstr "Deine Kontaktliste vor Betrachtern dieses Profils verbergen?"
-#: ../../include/profile_selectors.php:42
-msgid "It's complicated"
-msgstr "Es ist kompliziert"
+#: ../../mod/profiles.php:591 ../../mod/api.php:105 ../../mod/settings.php:916
+#: ../../mod/settings.php:921 ../../mod/settings.php:1004
+#: ../../mod/admin.php:392
+msgid "Yes"
+msgstr "Ja"
-#: ../../include/profile_selectors.php:42
-msgid "Don't care"
-msgstr "Interessiert mich nicht"
+#: ../../mod/profiles.php:592 ../../mod/api.php:106 ../../mod/settings.php:916
+#: ../../mod/settings.php:921 ../../mod/settings.php:1004
+#: ../../mod/admin.php:390
+msgid "No"
+msgstr "Nein"
-#: ../../include/profile_selectors.php:42
-msgid "Ask me"
-msgstr "Frag mich mal"
+#: ../../mod/profiles.php:632
+msgid "Edit Profile Details"
+msgstr "Bearbeite Profil-Details"
-#: ../../include/chat.php:10
-msgid "Missing room name"
-msgstr "Der Chatraum hat keinen Namen"
+#: ../../mod/profiles.php:634
+msgid "View this profile"
+msgstr "Dieses Profil ansehen"
-#: ../../include/chat.php:19
-msgid "Duplicate room name"
-msgstr "Name des Chatraums bereits vergeben"
+#: ../../mod/profiles.php:636
+msgid "Change Profile Photo"
+msgstr "Profilfoto ändern"
-#: ../../include/chat.php:68 ../../include/chat.php:76
-msgid "Invalid room specifier."
-msgstr "Ungültiger Raumbezeichner."
+#: ../../mod/profiles.php:637
+msgid "Create a new profile using these settings"
+msgstr "Neues Profil anlegen und diese Einstellungen übernehmen"
-#: ../../include/chat.php:102
-msgid "Room not found."
-msgstr "Chatraum konnte nicht gefunden werden."
+#: ../../mod/profiles.php:638
+msgid "Clone this profile"
+msgstr "Dieses Profil klonen"
-#: ../../include/chat.php:123
-msgid "Room is full"
-msgstr "Der Raum ist voll"
+#: ../../mod/profiles.php:639
+msgid "Delete this profile"
+msgstr "Dieses Profil löschen"
-#: ../../include/taxonomy.php:210
-msgid "Tags"
-msgstr "Schlagwörter"
+#: ../../mod/profiles.php:641
+msgid "Import profile from file"
+msgstr "Profil aus einer Datei importieren"
-#: ../../include/taxonomy.php:227
-msgid "Keywords"
-msgstr "Schlüsselwörter"
+#: ../../mod/profiles.php:642
+msgid "Export profile to file"
+msgstr "Profil in eine Datei exportieren"
-#: ../../include/taxonomy.php:252
-msgid "have"
-msgstr "habe"
+#: ../../mod/profiles.php:643
+msgid "Profile Name:"
+msgstr "Profilname:"
-#: ../../include/taxonomy.php:252
-msgid "has"
-msgstr "hat"
+#: ../../mod/profiles.php:644
+msgid "Your Full Name:"
+msgstr "Dein voller Name:"
-#: ../../include/taxonomy.php:253
-msgid "want"
-msgstr "will"
+#: ../../mod/profiles.php:645
+msgid "Title/Description:"
+msgstr "Titel/Stellenbeschreibung:"
-#: ../../include/taxonomy.php:253
-msgid "wants"
-msgstr "will"
+#: ../../mod/profiles.php:646
+msgid "Your Gender:"
+msgstr "Dein Geschlecht:"
-#: ../../include/taxonomy.php:254
-msgid "likes"
-msgstr "gefällt"
+#: ../../mod/profiles.php:647
+msgid "Birthday :"
+msgstr "Geburtstag:"
-#: ../../include/taxonomy.php:255
-msgid "dislikes"
-msgstr "missfällt"
+#: ../../mod/profiles.php:648
+msgid "Street Address:"
+msgstr "Straße und Hausnummer:"
-#: ../../include/auth.php:76
-msgid "Logged out."
-msgstr "Ausgeloggt."
+#: ../../mod/profiles.php:649
+msgid "Locality/City:"
+msgstr "Wohnort:"
-#: ../../include/auth.php:188
-msgid "Failed authentication"
-msgstr "Authentifizierung fehlgeschlagen"
+#: ../../mod/profiles.php:650
+msgid "Postal/Zip Code:"
+msgstr "Postleitzahl:"
-#: ../../include/auth.php:203 ../../mod/openid.php:185
-msgid "Login failed."
-msgstr "Login fehlgeschlagen."
+#: ../../mod/profiles.php:651
+msgid "Country:"
+msgstr "Land:"
-#: ../../include/account.php:23
-msgid "Not a valid email address"
-msgstr "Ungültige E-Mail-Adresse"
+#: ../../mod/profiles.php:652
+msgid "Region/State:"
+msgstr "Region/Bundesstaat:"
-#: ../../include/account.php:25
-msgid "Your email domain is not among those allowed on this site"
-msgstr "Deine E-Mail-Adresse ist dieser Seite nicht erlaubt"
+#: ../../mod/profiles.php:653
+msgid "<span class=\"heart\">&hearts;</span> Marital Status:"
+msgstr "<span class=\"heart\">&hearts;</span> Beziehungsstatus:"
-#: ../../include/account.php:31
-msgid "Your email address is already registered at this site."
-msgstr "Deine E-Mail-Adresse ist auf dieser Seite bereits registriert."
+#: ../../mod/profiles.php:654
+msgid "Who: (if applicable)"
+msgstr "Wer: (falls anwendbar)"
-#: ../../include/account.php:64
-msgid "An invitation is required."
-msgstr "Eine Einladung wird benötigt"
+#: ../../mod/profiles.php:655
+msgid "Examples: cathy123, Cathy Williams, cathy@example.com"
+msgstr "Beispiele: cathy123, Cathy Williams, cathy@example.com"
-#: ../../include/account.php:68
-msgid "Invitation could not be verified."
-msgstr "Die Einladung konnte nicht bestätigt werden"
+#: ../../mod/profiles.php:656
+msgid "Since [date]:"
+msgstr "Seit [Datum]:"
-#: ../../include/account.php:119
-msgid "Please enter the required information."
-msgstr "Bitte gib die benötigten Informationen ein."
+#: ../../mod/profiles.php:658
+msgid "Homepage URL:"
+msgstr "Homepage URL:"
-#: ../../include/account.php:187
-msgid "Failed to store account information."
-msgstr "Speichern der Account-Informationen fehlgeschlagen"
+#: ../../mod/profiles.php:661
+msgid "Religious Views:"
+msgstr "Religiöse Ansichten:"
-#: ../../include/account.php:273
-#, php-format
-msgid "Registration request at %s"
-msgstr "Registrierungsanfrage auf %s"
+#: ../../mod/profiles.php:662
+msgid "Keywords:"
+msgstr "Schlüsselwörter:"
-#: ../../include/account.php:275 ../../include/account.php:302
-#: ../../include/account.php:359
-msgid "Administrator"
-msgstr "Administrator"
+#: ../../mod/profiles.php:665
+msgid "Example: fishing photography software"
+msgstr "Beispiel: Angeln Fotografie Software"
-#: ../../include/account.php:297
-msgid "your registration password"
-msgstr "Dein Registrierungspasswort"
+#: ../../mod/profiles.php:666
+msgid "Used in directory listings"
+msgstr "Wird in Verzeichnis-Auflistungen verwendet"
-#: ../../include/account.php:300 ../../include/account.php:357
-#, php-format
-msgid "Registration details for %s"
-msgstr "Registrierungsdetails für %s"
+#: ../../mod/profiles.php:667
+msgid "Tell us about yourself..."
+msgstr "Erzähle uns ein wenig von Dir …"
-#: ../../include/account.php:366
-msgid "Account approved."
-msgstr "Account bestätigt."
+#: ../../mod/profiles.php:668
+msgid "Hobbies/Interests"
+msgstr "Hobbys/Interessen"
-#: ../../include/account.php:400
-#, php-format
-msgid "Registration revoked for %s"
-msgstr "Registrierung für %s widerrufen"
+#: ../../mod/profiles.php:669
+msgid "Contact information and Social Networks"
+msgstr "Kontaktinformation und soziale Netzwerke"
-#: ../../include/dir_fns.php:15
-msgid "Sort Options"
-msgstr "Sortieroptionen"
+#: ../../mod/profiles.php:670
+msgid "My other channels"
+msgstr "Meine anderen Kanäle"
-#: ../../include/dir_fns.php:16
-msgid "Alphabetic"
-msgstr "alphabetisch"
+#: ../../mod/profiles.php:671
+msgid "Musical interests"
+msgstr "Musikalische Interessen"
-#: ../../include/dir_fns.php:17
-msgid "Reverse Alphabetic"
-msgstr "Entgegengesetzt alphabetisch"
+#: ../../mod/profiles.php:672
+msgid "Books, literature"
+msgstr "Bücher, Literatur"
-#: ../../include/dir_fns.php:18
-msgid "Newest to Oldest"
-msgstr "Neueste zuerst"
+#: ../../mod/profiles.php:673
+msgid "Television"
+msgstr "Fernsehen"
-#: ../../include/dir_fns.php:30
-msgid "Enable Safe Search"
-msgstr "Sichere Suche einschalten"
+#: ../../mod/profiles.php:674
+msgid "Film/dance/culture/entertainment"
+msgstr "Film/Tanz/Kultur/Unterhaltung"
-#: ../../include/dir_fns.php:32
-msgid "Disable Safe Search"
-msgstr "Sichere Suche ausschalten"
+#: ../../mod/profiles.php:675
+msgid "Love/romance"
+msgstr "Liebe/Romantik"
-#: ../../include/dir_fns.php:34
-msgid "Safe Mode"
-msgstr "Sicherer Modus"
+#: ../../mod/profiles.php:676
+msgid "Work/employment"
+msgstr "Arbeit/Anstellung"
-#: ../../include/enotify.php:40
-msgid "Red Matrix Notification"
-msgstr "Red Matrix Benachrichtigung"
+#: ../../mod/profiles.php:677
+msgid "School/education"
+msgstr "Schule/Ausbildung"
-#: ../../include/enotify.php:41
-msgid "redmatrix"
-msgstr "redmatrix"
+#: ../../mod/profiles.php:683
+msgid "This is your default profile."
+msgstr "Das ist Dein Standardprofil."
-#: ../../include/enotify.php:43
-msgid "Thank You,"
-msgstr "Danke."
+#: ../../mod/profiles.php:694 ../../mod/directory.php:148
+msgid "Age: "
+msgstr "Alter:"
-#: ../../include/enotify.php:45
-#, php-format
-msgid "%s Administrator"
-msgstr "%s Administrator"
+#: ../../mod/profiles.php:737
+msgid "Edit/Manage Profiles"
+msgstr "Profile bearbeiten/verwalten"
-#: ../../include/enotify.php:80
-#, php-format
-msgid "%s <!item_type!>"
-msgstr "%s <!item_type!>"
+#: ../../mod/profiles.php:738
+msgid "Add profile things"
+msgstr "Sachen zum Profil hinzufügen"
-#: ../../include/enotify.php:84
-#, php-format
-msgid "[Red:Notify] New mail received at %s"
-msgstr "[Red Notify] Neue Mail auf %s empfangen"
+#: ../../mod/profiles.php:739
+msgid "Include desirable objects in your profile"
+msgstr "Binde begehrenswerte Dinge in Dein Profil ein"
-#: ../../include/enotify.php:86
-#, php-format
-msgid "%1$s, %2$s sent you a new private message at %3$s."
-msgstr "%1$s, %2$s hat Dir eine private Nachricht auf %3$s gesendet."
+#: ../../mod/connect.php:55 ../../mod/connect.php:103
+msgid "Continue"
+msgstr "Fortfahren"
-#: ../../include/enotify.php:87
-#, php-format
-msgid "%1$s sent you %2$s."
-msgstr "%1$s hat Dir %2$s geschickt."
+#: ../../mod/connect.php:84
+msgid "Premium Channel Setup"
+msgstr "Premium-Kanal-Einrichtung"
-#: ../../include/enotify.php:87
-msgid "a private message"
-msgstr "eine private Nachricht"
+#: ../../mod/connect.php:86
+msgid "Enable premium channel connection restrictions"
+msgstr "Einschränkungen für einen Premium-Kanal aktivieren"
-#: ../../include/enotify.php:88
-#, php-format
-msgid "Please visit %s to view and/or reply to your private messages."
-msgstr "Bitte besuche %s, um die private Nachricht anzusehen und/oder darauf zu antworten."
+#: ../../mod/connect.php:87
+msgid ""
+"Please enter your restrictions or conditions, such as paypal receipt, usage "
+"guidelines, etc."
+msgstr "Bitte gib Deine Nutzungsbedingungen ein, z.B. Paypal-Quittung, Richtlinien etc."
-#: ../../include/enotify.php:142
-#, php-format
-msgid "%1$s, %2$s commented on [zrl=%3$s]a %4$s[/zrl]"
-msgstr "%1$s, %2$s hat [zrl=%3$s]a %4$s[/zrl] kommentiert"
+#: ../../mod/connect.php:89 ../../mod/connect.php:109
+msgid ""
+"This channel may require additional steps or acknowledgement of the "
+"following conditions prior to connecting:"
+msgstr "Unter Umständen sind weitere Schritte oder die Bestätigung der folgenden Bedingungen vor dem Verbinden mit diesem Kanal nötig."
-#: ../../include/enotify.php:150
-#, php-format
-msgid "%1$s, %2$s commented on [zrl=%3$s]%4$s's %5$s[/zrl]"
-msgstr "%1$s, %2$s hat [zrl=%3$s]%4$ss %5$s[/zrl] kommentiert"
+#: ../../mod/connect.php:90
+msgid ""
+"Potential connections will then see the following text before proceeding:"
+msgstr "Potentielle Kontakte werden den folgenden Text sehen, bevor fortgefahren wird:"
-#: ../../include/enotify.php:159
-#, php-format
-msgid "%1$s, %2$s commented on [zrl=%3$s]your %4$s[/zrl]"
-msgstr "%1$s, %2$s hat [zrl=%3$s]Deinen %4$s[/zrl] kommentiert"
+#: ../../mod/connect.php:91 ../../mod/connect.php:112
+msgid ""
+"By continuing, I certify that I have complied with any instructions provided"
+" on this page."
+msgstr "Indem ich fortfahre, bestätige ich die Erfüllung aller Anweisungen auf dieser Seite."
-#: ../../include/enotify.php:170
-#, php-format
-msgid "[Red:Notify] Comment to conversation #%1$d by %2$s"
-msgstr "[Red:Benachrichtigung] Kommentar in Unterhaltung #%1$d von %2$s"
+#: ../../mod/connect.php:100
+msgid "(No specific instructions have been provided by the channel owner.)"
+msgstr "(Der Kanal-Besitzer hat keine speziellen Anweisungen hinterlegt.)"
-#: ../../include/enotify.php:171
-#, php-format
-msgid "%1$s, %2$s commented on an item/conversation you have been following."
-msgstr "%1$s, %2$s hat eine Unterhaltung kommentiert, der Du folgst."
+#: ../../mod/connect.php:108
+msgid "Restricted or Premium Channel"
+msgstr "Eingeschränkter oder Premium-Kanal"
-#: ../../include/enotify.php:174 ../../include/enotify.php:189
-#: ../../include/enotify.php:215 ../../include/enotify.php:234
-#: ../../include/enotify.php:248
-#, php-format
-msgid "Please visit %s to view and/or reply to the conversation."
-msgstr "Bitte besuche %s, um die Unterhaltung anzusehen und/oder zu kommentieren."
+#: ../../mod/post.php:229
+msgid ""
+"Remote authentication blocked. You are logged into this site locally. Please"
+" logout and retry."
+msgstr "Fern-Authentifizierung blockiert. Du bist lokal auf diesem Server angemeldet. Bitte melde Dich ab und versuche es erneut."
-#: ../../include/enotify.php:180
+#: ../../mod/post.php:261 ../../mod/openid.php:72 ../../mod/openid.php:180
#, php-format
-msgid "[Red:Notify] %s posted to your profile wall"
-msgstr "[Red:Hinweis] %s schrieb auf Deine Pinnwand"
+msgid "Welcome %s. Remote authentication successful."
+msgstr "Willkommen %s. Entfernte Authentifizierung erfolgreich."
-#: ../../include/enotify.php:182
-#, php-format
-msgid "%1$s, %2$s posted to your profile wall at %3$s"
-msgstr "%1$s, %2$s hat auf Deine Pinnwand auf %3$s geschrieben"
+#: ../../mod/setup.php:166
+msgid "Red Matrix Server - Setup"
+msgstr "Red Matrix Server - Installation"
-#: ../../include/enotify.php:184
-#, php-format
-msgid "%1$s, %2$s posted to [zrl=%3$s]your wall[/zrl]"
-msgstr "%1$s, %2$s hat auf [zrl=%3$s]Deine Pinnwand[/zrl] geschrieben"
+#: ../../mod/setup.php:172
+msgid "Could not connect to database."
+msgstr "Kann nicht mit der Datenbank verbinden."
-#: ../../include/enotify.php:208
-#, php-format
-msgid "[Red:Notify] %s tagged you"
-msgstr "[Red Notify] %s hat Dich erwähnt"
+#: ../../mod/setup.php:176
+msgid ""
+"Could not connect to specified site URL. Possible SSL certificate or DNS "
+"issue."
+msgstr "Konnte die angegebene Webseiten-URL nicht erreichen. Möglicherweise ein Problem mit dem SSL-Zertifikat oder dem DNS."
-#: ../../include/enotify.php:209
-#, php-format
-msgid "%1$s, %2$s tagged you at %3$s"
-msgstr "%1$s, %2$s hat Dich auf %3$s erwähnt"
+#: ../../mod/setup.php:183
+msgid "Could not create table."
+msgstr "Kann Tabelle nicht erstellen."
-#: ../../include/enotify.php:210
-#, php-format
-msgid "%1$s, %2$s [zrl=%3$s]tagged you[/zrl]."
-msgstr "%1$s, %2$s [zrl=%3$s]hat Dich erwähnt[/zrl]."
+#: ../../mod/setup.php:189
+msgid "Your site database has been installed."
+msgstr "Die Datenbank Deines Hubs wurde installiert."
-#: ../../include/enotify.php:223
-#, php-format
-msgid "[Red:Notify] %1$s poked you"
-msgstr "[Red Notify] %1$s hat Dich angestupst"
+#: ../../mod/setup.php:194
+msgid ""
+"You may need to import the file \"install/schema_xxx.sql\" manually using a "
+"database client."
+msgstr "Möglicherweise musst Du die Datei install/schema_xxx.sql manuell mit Hilfe eines Datenkbank-Clients importieren."
-#: ../../include/enotify.php:224
-#, php-format
-msgid "%1$s, %2$s poked you at %3$s"
-msgstr "%1$s, %2$s hat Dich auf %3$s angestupst"
+#: ../../mod/setup.php:195 ../../mod/setup.php:264 ../../mod/setup.php:663
+msgid "Please see the file \"install/INSTALL.txt\"."
+msgstr "Lies die Datei \"install/INSTALL.txt\"."
-#: ../../include/enotify.php:225
-#, php-format
-msgid "%1$s, %2$s [zrl=%2$s]poked you[/zrl]."
-msgstr "%1$s, %2$s [zrl=%2$s]hat Dich angestupst[/zrl]."
+#: ../../mod/setup.php:261
+msgid "System check"
+msgstr "Systemprüfung"
-#: ../../include/enotify.php:241
-#, php-format
-msgid "[Red:Notify] %s tagged your post"
-msgstr "[Red:Hinweis] %s hat Deinen Beitrag verschlagwortet"
+#: ../../mod/setup.php:265 ../../mod/events.php:434 ../../mod/photos.php:868
+msgid "Next"
+msgstr "Nächste"
-#: ../../include/enotify.php:242
-#, php-format
-msgid "%1$s, %2$s tagged your post at %3$s"
-msgstr "%1$s, %2$s hat Deinen Beitrag auf %3$s verschlagwortet"
+#: ../../mod/setup.php:266
+msgid "Check again"
+msgstr "Bitte nochmal prüfen"
-#: ../../include/enotify.php:243
-#, php-format
-msgid "%1$s, %2$s tagged [zrl=%3$s]your post[/zrl]"
-msgstr "%1$s, %2$s hat [zrl=%3$s]Deinen Beitrag[/zrl] verschlagwortet"
+#: ../../mod/setup.php:289
+msgid "Database connection"
+msgstr "Datenbank Verbindung"
-#: ../../include/enotify.php:255
-msgid "[Red:Notify] Introduction received"
-msgstr "[Red:Notify] Vorstellung erhalten"
+#: ../../mod/setup.php:290
+msgid ""
+"In order to install Red Matrix we need to know how to connect to your "
+"database."
+msgstr "Um die Red-Matrix installieren zu können, müssen wir wissen, wie wir eine Verbindung zu Deiner Datenbank aufbauen können."
-#: ../../include/enotify.php:256
-#, php-format
-msgid "%1$s, you've received an introduction from '%2$s' at %3$s"
-msgstr "%1$s, Du hast eine Vorstellung von „%2$s“ auf %3$s erhalten"
+#: ../../mod/setup.php:291
+msgid ""
+"Please contact your hosting provider or site administrator if you have "
+"questions about these settings."
+msgstr "Bitte kontaktiere Deinen Hosting-Provider oder Administrator, falls Du Fragen zu diesen Einstellungen hast."
-#: ../../include/enotify.php:257
-#, php-format
-msgid "%1$s, you've received [zrl=%2$s]an introduction[/zrl] from %3$s."
-msgstr "%1$s, Du hast [zrl=%2$s]eine Vorstellung[/zrl] von %3$s erhalten."
+#: ../../mod/setup.php:292
+msgid ""
+"The database you specify below should already exist. If it does not, please "
+"create it before continuing."
+msgstr "Die Datenbank, die Du weiter unten angibst, sollte bereits existieren. Sollte das noch nicht der Fall sein, erzeuge sie bitte bevor Du fortfährst."
-#: ../../include/enotify.php:261 ../../include/enotify.php:280
-#, php-format
-msgid "You may visit their profile at %s"
-msgstr "Du kannst Dir das Profil unter %s ansehen"
+#: ../../mod/setup.php:296
+msgid "Database Server Name"
+msgstr "Datenbank-Servername"
+
+#: ../../mod/setup.php:296
+msgid "Default is localhost"
+msgstr "Standard ist localhost"
+
+#: ../../mod/setup.php:297
+msgid "Database Port"
+msgstr "Datenbank-Port"
+
+#: ../../mod/setup.php:297
+msgid "Communication port number - use 0 for default"
+msgstr "Port-Nummer für die Kommunikation – verwende 0 für die Standardeinstellung"
+
+#: ../../mod/setup.php:298
+msgid "Database Login Name"
+msgstr "Datenbank-Benutzername"
+
+#: ../../mod/setup.php:299
+msgid "Database Login Password"
+msgstr "Datenbank-Kennwort"
+
+#: ../../mod/setup.php:300
+msgid "Database Name"
+msgstr "Datenbank-Name"
+
+#: ../../mod/setup.php:301
+msgid "Database Type"
+msgstr "Datenbanktyp"
+
+#: ../../mod/setup.php:303 ../../mod/setup.php:347
+msgid "Site administrator email address"
+msgstr "E-Mail Adresse des Seiten-Administrators"
+
+#: ../../mod/setup.php:303 ../../mod/setup.php:347
+msgid ""
+"Your account email address must match this in order to use the web admin "
+"panel."
+msgstr "Die E-Mail-Adresse Deines Accounts muss dieser Adresse entsprechen, damit Du Zugriff zur Administrations-Seite erhältst."
+
+#: ../../mod/setup.php:304 ../../mod/setup.php:349
+msgid "Website URL"
+msgstr "Server-URL"
+
+#: ../../mod/setup.php:304 ../../mod/setup.php:349
+msgid "Please use SSL (https) URL if available."
+msgstr "Nutze wenn möglich eine SSL-URL (https)."
+
+#: ../../mod/setup.php:307 ../../mod/setup.php:352
+msgid "Please select a default timezone for your website"
+msgstr "Standard-Zeitzone für Deinen Server"
+
+#: ../../mod/setup.php:335
+msgid "Site settings"
+msgstr "Seiteneinstellungen"
+
+#: ../../mod/setup.php:395
+msgid "Could not find a command line version of PHP in the web server PATH."
+msgstr "Konnte die Kommandozeilen-Version von PHP nicht im PATH des Web-Servers finden."
+
+#: ../../mod/setup.php:396
+msgid ""
+"If you don't have a command line version of PHP installed on server, you "
+"will not be able to run background polling via cron."
+msgstr "Ohne Kommandozeilen-Version von PHP auf dem Server wirst Du nicht in der Lage sein, Hintergrundprozesse via cron auszuführen."
+
+#: ../../mod/setup.php:400
+msgid "PHP executable path"
+msgstr "PHP Pfad zu ausführbarer Datei"
+
+#: ../../mod/setup.php:400
+msgid ""
+"Enter full path to php executable. You can leave this blank to continue the "
+"installation."
+msgstr "Gib den vollen Pfad zum PHP-Interpreter an. Du kannst dieses Feld frei lassen und mit der Installation fortfahren."
+
+#: ../../mod/setup.php:405
+msgid "Command line PHP"
+msgstr "PHP Befehlszeile"
+
+#: ../../mod/setup.php:414
+msgid ""
+"The command line version of PHP on your system does not have "
+"\"register_argc_argv\" enabled."
+msgstr "Bei der Kommandozeilen-Version von PHP auf Deinem System ist \"register_argc_argv\" nicht aktiviert."
+
+#: ../../mod/setup.php:415
+msgid "This is required for message delivery to work."
+msgstr "Das wird benötigt, damit die Auslieferung von Nachrichten funktioniert."
+
+#: ../../mod/setup.php:417
+msgid "PHP register_argc_argv"
+msgstr "PHP register_argc_argv"
+
+#: ../../mod/setup.php:438
+msgid ""
+"Error: the \"openssl_pkey_new\" function on this system is not able to "
+"generate encryption keys"
+msgstr "Fehler: Die „openssl_pkey_new“-Funktion auf diesem System ist nicht in der Lage, Schlüssel für die Verschlüsselung zu erzeugen."
+
+#: ../../mod/setup.php:439
+msgid ""
+"If running under Windows, please see "
+"\"http://www.php.net/manual/en/openssl.installation.php\"."
+msgstr "Wenn Du Windows verwendest, findest Du unter http://www.php.net/manual/en/openssl.installation.php eine Installationsanleitung."
+
+#: ../../mod/setup.php:441
+msgid "Generate encryption keys"
+msgstr "Verschlüsselungsschlüssel generieren"
+
+#: ../../mod/setup.php:448
+msgid "libCurl PHP module"
+msgstr "libCurl-PHP-Modul"
+
+#: ../../mod/setup.php:449
+msgid "GD graphics PHP module"
+msgstr "GD-Grafik-PHP-Modul"
+
+#: ../../mod/setup.php:450
+msgid "OpenSSL PHP module"
+msgstr "OpenSSL-PHP-Modul"
+
+#: ../../mod/setup.php:451
+msgid "mysqli or postgres PHP module"
+msgstr "mysqli oder postgres PHP-Modul"
+
+#: ../../mod/setup.php:452
+msgid "mb_string PHP module"
+msgstr "mb_string-PHP-Modul"
+
+#: ../../mod/setup.php:453
+msgid "mcrypt PHP module"
+msgstr "mcrypt-PHP-Modul"
+
+#: ../../mod/setup.php:458 ../../mod/setup.php:460
+msgid "Apache mod_rewrite module"
+msgstr "Apache-mod_rewrite-Modul"
+
+#: ../../mod/setup.php:458
+msgid ""
+"Error: Apache webserver mod-rewrite module is required but not installed."
+msgstr "Fehler: Das Apache-Modul mod-rewrite wird benötigt, ist aber nicht installiert."
+
+#: ../../mod/setup.php:464 ../../mod/setup.php:467
+msgid "proc_open"
+msgstr "proc_open"
+
+#: ../../mod/setup.php:464
+msgid ""
+"Error: proc_open is required but is either not installed or has been "
+"disabled in php.ini"
+msgstr "Fehler: proc_open wird benötigt, ist aber entweder nicht installiert oder wurde in der php.ini deaktiviert"
+
+#: ../../mod/setup.php:472
+msgid "Error: libCURL PHP module required but not installed."
+msgstr "Fehler: Das PHP-Modul libCURL wird benötigt, ist aber nicht installiert."
+
+#: ../../mod/setup.php:476
+msgid ""
+"Error: GD graphics PHP module with JPEG support required but not installed."
+msgstr "Fehler: Das PHP-Modul GD-Grafik mit JPEG-Unterstützung wird benötigt, ist aber nicht installiert."
+
+#: ../../mod/setup.php:480
+msgid "Error: openssl PHP module required but not installed."
+msgstr "Fehler: Das PHP-Modul openssl wird benötigt, ist aber nicht installiert."
+
+#: ../../mod/setup.php:484
+msgid ""
+"Error: mysqli or postgres PHP module required but neither are installed."
+msgstr "Fehler: Das mysqli oder postgres PHP-Modul ist erforderlich, aber keines von beiden ist installiert."
+
+#: ../../mod/setup.php:488
+msgid "Error: mb_string PHP module required but not installed."
+msgstr "Fehler: Das PHP-Modul mb_string wird benötigt, ist aber nicht installiert."
+
+#: ../../mod/setup.php:492
+msgid "Error: mcrypt PHP module required but not installed."
+msgstr "Fehler: Das PHP-Modul mcrypt wird benötigt, ist aber nicht installiert."
+
+#: ../../mod/setup.php:508
+msgid ""
+"The web installer needs to be able to create a file called \".htconfig.php\""
+" in the top folder of your web server and it is unable to do so."
+msgstr "Der Installations-Assistent muss in der Lage sein, die Datei \".htconfig.php\" im Stammverzeichnis des Web-Servers anzulegen, ist er aber nicht."
+
+#: ../../mod/setup.php:509
+msgid ""
+"This is most often a permission setting, as the web server may not be able "
+"to write files in your folder - even if you can."
+msgstr "Meist liegt das daran, dass der Nutzer, unter dem der Web-Server läuft, keine Schreibrechte in dem Verzeichnis hat – selbst wenn Du selbst das darfst."
+
+#: ../../mod/setup.php:510
+msgid ""
+"At the end of this procedure, we will give you a text to save in a file "
+"named .htconfig.php in your Red top folder."
+msgstr "Am Schluss dieses Vorgangs wird ein Text generiert, den Du unter dem Dateinamen .htconfig.php im Stammverzeichnis Deiner Red-Installation speichern musst."
+
+#: ../../mod/setup.php:511
+msgid ""
+"You can alternatively skip this procedure and perform a manual installation."
+" Please see the file \"install/INSTALL.txt\" for instructions."
+msgstr "Alternativ kannst Du diesen Schritt überspringen und die Installation manuell vornehmen. Lies dazu die Datei install/INSTALL.txt."
-#: ../../include/enotify.php:263
+#: ../../mod/setup.php:514
+msgid ".htconfig.php is writable"
+msgstr ".htconfig.php ist beschreibbar"
+
+#: ../../mod/setup.php:524
+msgid ""
+"Red uses the Smarty3 template engine to render its web views. Smarty3 "
+"compiles templates to PHP to speed up rendering."
+msgstr "Red verwendet Smarty3 um Vorlagen für die Webdarstellung zu übersetzen. Smarty3 übersetzt diese Vorlagen nach PHP, um die Darstellung zu beschleunigen."
+
+#: ../../mod/setup.php:525
#, php-format
-msgid "Please visit %s to approve or reject the introduction."
-msgstr "Bitte besuche %s um sie anzunehmen oder abzulehnen."
+msgid ""
+"In order to store these compiled templates, the web server needs to have "
+"write access to the directory %s under the Red top level folder."
+msgstr "Um diese kompilierten Vorlagen speichern zu können, braucht der Web-Server Schreibzugriff auf das Verzeichnis %s unterhalb des Red-Installationsverzeichnisses."
-#: ../../include/enotify.php:270
-msgid "[Red:Notify] Friend suggestion received"
-msgstr "[Red:Benachrichtigung] Freundschaftsvorschlag erhalten"
+#: ../../mod/setup.php:526 ../../mod/setup.php:544
+msgid ""
+"Please ensure that the user that your web server runs as (e.g. www-data) has"
+" write access to this folder."
+msgstr "Bitte stelle sicher, dass der Nutzer, unter dem der Web-Server läuft (z.B. www-data), Schreibzugriff auf dieses Verzeichnis hat."
-#: ../../include/enotify.php:271
+#: ../../mod/setup.php:527
#, php-format
-msgid "%1$s, you've received a friend suggestion from '%2$s' at %3$s"
-msgstr "%1$s, Du hast einen Kontaktvorschlag von „%2$s“ auf %3$s erhalten"
+msgid ""
+"Note: as a security measure, you should give the web server write access to "
+"%s only--not the template files (.tpl) that it contains."
+msgstr " Hinweis: Aus Sicherheitsgründen sollte der Web-Server nur auf %s Schreibrechte haben, nicht in der restlichen Red-Installation."
-#: ../../include/enotify.php:272
+#: ../../mod/setup.php:530
#, php-format
+msgid "%s is writable"
+msgstr "%s ist beschreibbar"
+
+#: ../../mod/setup.php:543
msgid ""
-"%1$s, you've received [zrl=%2$s]a friend suggestion[/zrl] for %3$s from "
-"%4$s."
-msgstr "%1$s, Du hast [zrl=%2$s]einen Kontaktvorschlag[/zrl] für %3$s von %4$s erhalten."
+"Red uses the store directory to save uploaded files. The web server needs to"
+" have write access to the store directory under the Red top level folder"
+msgstr "Red benutzt das Verzeichnis store, um hochgeladene Dateien zu speichern. Der Web-Server benötigt Schreibrechte für dieses Verzeichnis direkt unterhalb des Red-Stammverzeichnisses"
-#: ../../include/enotify.php:278
-msgid "Name:"
-msgstr "Name:"
+#: ../../mod/setup.php:547
+msgid "store is writable"
+msgstr "store ist schreibbar"
-#: ../../include/enotify.php:279
-msgid "Photo:"
-msgstr "Foto:"
+#: ../../mod/setup.php:577
+msgid ""
+"SSL certificate cannot be validated. Fix certificate or disable https access"
+" to this site."
+msgstr "Das SSL-Zertifikat konnte nicht validiert werden. Korrigiere das Zertifikat oder deaktiviere den HTTPS-Zugriff auf diesen Server."
-#: ../../include/enotify.php:282
-#, php-format
-msgid "Please visit %s to approve or reject the suggestion."
-msgstr "Bitte besuche %s um den Vorschlag zu akzeptieren oder abzulehnen."
+#: ../../mod/setup.php:578
+msgid ""
+"If you have https access to your website or allow connections to TCP port "
+"443 (the https: port), you MUST use a browser-valid certificate. You MUST "
+"NOT use self-signed certificates!"
+msgstr "Wenn Du via HTTPS auf Deinen Server zugreifen möchtest, also Verbindungen über den Port 443 möglich sein sollen, ist ein SSL-Zertifikat einer Zertifizierungsstelle (CA) notwendig, das von den Browsern ohne Sicherheitsabfrage akzeptiert wird. Die Verwendung eines selbst signierten Zertifikates ist nicht möglich."
-#: ../../include/photos.php:89
-#, php-format
-msgid "Image exceeds website size limit of %lu bytes"
-msgstr "Bild überschreitet das Limit der Webseite von %lu bytes"
+#: ../../mod/setup.php:579
+msgid ""
+"This restriction is incorporated because public posts from you may for "
+"example contain references to images on your own hub."
+msgstr "Diese Einschränkung wurde eingebaut, weil Deine öffentlichen Beiträge zum Beispiel Verweise auf Bilder auf Deinem eigenen Hub enthalten können."
-#: ../../include/photos.php:96
-msgid "Image file is empty."
-msgstr "Bilddatei ist leer."
+#: ../../mod/setup.php:580
+msgid ""
+"If your certificate is not recognized, members of other sites (who may "
+"themselves have valid certificates) will get a warning message on their own "
+"site complaining about security issues."
+msgstr "Wenn Dein Zertifikat nicht von jedem Browser akzeptiert wird, erhalten die Mitglieder anderer Red-Server (die mit korrekten Zertifikaten ausgestattet sind) Sicherheits-Warnmeldungen, obwohl sie gar nicht direkt auf Deinem Server unterwegs sind (zum Beispiel, wenn ein Bild aus einem Deiner Beiträge angezeigt wird)."
-#: ../../include/photos.php:123 ../../mod/profile_photo.php:147
-msgid "Unable to process image"
-msgstr "Kann Bild nicht verarbeiten"
+#: ../../mod/setup.php:581
+msgid ""
+"This can cause usability issues elsewhere (not just on your own site) so we "
+"must insist on this requirement."
+msgstr "Dies kann Probleme für andere Nutzer (nicht nur auf Deinem eigenen Server) verursachen, so dass wir auf dieser Forderung bestehen müssen."
-#: ../../include/photos.php:185
-msgid "Photo storage failed."
-msgstr "Foto speichern schlug fehl"
+#: ../../mod/setup.php:582
+msgid ""
+"Providers are available that issue free certificates which are browser-"
+"valid."
+msgstr "Es gibt einige Zertifizierungsstellen (CAs), bei denen solche Zertifikate kostenlos zu haben sind."
-#: ../../include/photos.php:306 ../../mod/photos.php:694
-#: ../../mod/photos.php:1191
-msgid "Upload New Photos"
-msgstr "Lade neue Fotos hoch"
+#: ../../mod/setup.php:584
+msgid "SSL certificate validation"
+msgstr "SSL Zertifikatverifizierung"
-#: ../../include/reddav.php:1061
-msgid "Edit File properties"
-msgstr "Dateieigenschaften ändern"
+#: ../../mod/setup.php:590
+msgid ""
+"Url rewrite in .htaccess is not working. Check your server "
+"configuration.Test: "
+msgstr "Das Umschreiben von URLs (rewrite) per .htaccess funktioniert nicht. Bitte prüfe die Server-Konfiguration. Test:"
-#: ../../include/contact_widgets.php:14
+#: ../../mod/setup.php:592
+msgid "Url rewrite is working"
+msgstr "Url rewrite funktioniert"
+
+#: ../../mod/setup.php:602
+msgid ""
+"The database configuration file \".htconfig.php\" could not be written. "
+"Please use the enclosed text to create a configuration file in your web "
+"server root."
+msgstr "Die Datenbank-Konfigurationsdatei „.htconfig.php“ konnte nicht geschrieben werden. Bitte verwende den unten angegebenen Text, um die Konfigurationsdatei im Stammverzeichnis des Webservers anzulegen."
+
+#: ../../mod/setup.php:626
+msgid "Errors encountered creating database tables."
+msgstr "Fehler beim Anlegen der Datenbank-Tabellen aufgetreten."
+
+#: ../../mod/setup.php:661
+msgid "<h1>What next</h1>"
+msgstr "<h1>Was als Nächstes</h1>"
+
+#: ../../mod/setup.php:662
+msgid ""
+"IMPORTANT: You will need to [manually] setup a scheduled task for the "
+"poller."
+msgstr "WICHTIG: Du musst [manuell] einen Cronjob für den Poller einrichten."
+
+#: ../../mod/siteinfo.php:90
#, php-format
-msgid "%d invitation available"
-msgid_plural "%d invitations available"
-msgstr[0] "%d Einladung verfügbar"
-msgstr[1] "%d Einladungen verfügbar"
+msgid "Version %s"
+msgstr "Version %s"
-#: ../../include/contact_widgets.php:20
-msgid "Find Channels"
-msgstr "Finde Kanäle"
+#: ../../mod/siteinfo.php:111
+msgid "Installed plugins/addons/apps:"
+msgstr "Installierte Plugins/Addons/Apps"
-#: ../../include/contact_widgets.php:21
-msgid "Enter name or interest"
-msgstr "Name oder Interessen eingeben"
+#: ../../mod/siteinfo.php:124
+msgid "No installed plugins/addons/apps"
+msgstr "Keine installierten Plugins/Addons/Apps"
-#: ../../include/contact_widgets.php:22
-msgid "Connect/Follow"
-msgstr "Verbinden/Folgen"
+#: ../../mod/siteinfo.php:132
+msgid "Red"
+msgstr "Red"
-#: ../../include/contact_widgets.php:23
-msgid "Examples: Robert Morgenstein, Fishing"
-msgstr "Beispiele: Robert Morgenstein, Angeln"
+#: ../../mod/siteinfo.php:133
+msgid ""
+"This is a hub of the Red Matrix - a global cooperative network of "
+"decentralized privacy enhanced websites."
+msgstr "Dieser Hub ist Teil der RedMatrix – eines globalen, kooperativen Netzwerks aus dezentralen Websites, die Rücksicht auf Deine Privatsphäre nehmen."
-#: ../../include/contact_widgets.php:24 ../../mod/directory.php:207
-#: ../../mod/directory.php:212 ../../mod/connections.php:357
-msgid "Find"
-msgstr "Finde"
+#: ../../mod/siteinfo.php:137
+msgid "Running at web location"
+msgstr "Erreichbar unter der Web-Adresse"
-#: ../../include/contact_widgets.php:25 ../../mod/suggest.php:59
-msgid "Channel Suggestions"
-msgstr "Kanal-Vorschläge"
+#: ../../mod/siteinfo.php:138
+msgid ""
+"Please visit <a href=\"http://getzot.com\">GetZot.com</a> to learn more "
+"about the Red Matrix."
+msgstr "Besuche <a href=\"http://getzot.com\">GetZot.com</a>, um mehr über die Red-Matrix zu erfahren."
-#: ../../include/contact_widgets.php:27
-msgid "Random Profile"
-msgstr "Zufallsprofil"
+#: ../../mod/siteinfo.php:139
+msgid "Bug reports and issues: please visit"
+msgstr "Probleme oder Fehler gefunden? Bitte besuche"
-#: ../../include/contact_widgets.php:28
-msgid "Invite Friends"
-msgstr "Lade Freunde ein"
+#: ../../mod/siteinfo.php:142
+msgid ""
+"Suggestions, praise, etc. - please email \"redmatrix\" at librelist - dot "
+"com"
+msgstr "Vorschläge, Lob, usw.: E-Mail an 'redmatrix' at librelist - dot - com"
-#: ../../include/contact_widgets.php:120
-#, php-format
-msgid "%d connection in common"
-msgid_plural "%d connections in common"
-msgstr[0] "%d gemeinsame Verbindung"
-msgstr[1] "%d gemeinsame Verbindungen"
+#: ../../mod/siteinfo.php:144
+msgid "Site Administrators"
+msgstr "Administratoren"
-#: ../../include/page_widgets.php:6
-msgid "New Page"
-msgstr "Neue Seite"
+#: ../../mod/poke.php:159
+msgid "Poke/Prod"
+msgstr "Anstupsen/Knuffen"
-#: ../../include/plugin.php:475 ../../include/plugin.php:477
-msgid "Click here to upgrade."
-msgstr "Klicke hier, um das Upgrade durchzuführen."
+#: ../../mod/poke.php:160
+msgid "poke, prod or do other things to somebody"
+msgstr "Stupse Leute an oder mache anderes mit ihnen"
-#: ../../include/plugin.php:483
-msgid "This action exceeds the limits set by your subscription plan."
-msgstr "Diese Aktion überschreitet die Grenzen Ihres Abonnements."
+#: ../../mod/poke.php:161
+msgid "Recipient"
+msgstr "Empfänger"
-#: ../../include/plugin.php:488
-msgid "This action is not available under your subscription plan."
-msgstr "Diese Aktion ist in Ihrem Abonnement nicht verfügbar."
+#: ../../mod/poke.php:162
+msgid "Choose what you wish to do to recipient"
+msgstr "Wähle, was Du mit dem/r Empfänger/in tun willst"
-#: ../../include/follow.php:23
-msgid "Channel is blocked on this site."
-msgstr "Der Kanal ist auf dieser Seite blockiert "
+#: ../../mod/poke.php:165
+msgid "Make this post private"
+msgstr "Diesen Beitrag privat machen"
-#: ../../include/follow.php:28
-msgid "Channel location missing."
-msgstr "Adresse des Kanals fehlt."
+#: ../../mod/api.php:76 ../../mod/api.php:102
+msgid "Authorize application connection"
+msgstr "Zugriff für die Anwendung autorisieren"
-#: ../../include/follow.php:54
-msgid "Response from remote channel was incomplete."
-msgstr "Antwort des entfernten Kanals war unvollständig."
+#: ../../mod/api.php:77
+msgid "Return to your app and insert this Securty Code:"
+msgstr "Trage folgenden Sicherheitscode in der Anwendung ein:"
-#: ../../include/follow.php:126
-msgid "Channel discovery failed."
-msgstr ""
+#: ../../mod/api.php:89
+msgid "Please login to continue."
+msgstr "Zum Weitermachen, bitte einloggen."
-#: ../../include/follow.php:143
-msgid "local account not found."
-msgstr "Lokales Konto nicht gefunden."
+#: ../../mod/api.php:104
+msgid ""
+"Do you want to authorize this application to access your posts and contacts,"
+" and/or create new posts for you?"
+msgstr "Möchtest Du dieser Anwendung erlauben, Deine Nachrichten und Kontakte abzurufen und/oder neue Nachrichten für Dich zu erstellen?"
-#: ../../include/follow.php:152
-msgid "Cannot connect to yourself."
-msgstr "Du kannst Dich nicht mit Dir selbst verbinden."
+#: ../../mod/attach.php:9
+msgid "Item not available."
+msgstr "Element nicht verfügbar."
-#: ../../include/security.php:291
+#: ../../mod/probe.php:23 ../../mod/probe.php:29
+#, php-format
+msgid "Fetching URL returns error: %1$s"
+msgstr "Abrufen der URL gab einen Fehler zurück: %1$s"
+
+#: ../../mod/block.php:27 ../../mod/page.php:33
+msgid "Invalid item."
+msgstr "Ungültiges Element."
+
+#: ../../mod/block.php:39 ../../mod/wall_upload.php:28 ../../mod/page.php:45
+msgid "Channel not found."
+msgstr "Kanal nicht gefunden."
+
+#: ../../mod/block.php:75 ../../mod/display.php:102 ../../mod/help.php:70
+#: ../../mod/page.php:81 ../../index.php:241
+msgid "Page not found."
+msgstr "Seite nicht gefunden."
+
+#: ../../mod/sources.php:32
+msgid "Failed to create source. No channel selected."
+msgstr "Konnte die Quelle nicht anlegen. Kein Kanal ausgewählt."
+
+#: ../../mod/sources.php:45
+msgid "Source created."
+msgstr "Quelle erstellt."
+
+#: ../../mod/sources.php:57
+msgid "Source updated."
+msgstr "Quelle aktualisiert."
+
+#: ../../mod/sources.php:82
+msgid "*"
+msgstr "*"
+
+#: ../../mod/sources.php:89
+msgid "Manage remote sources of content for your channel."
+msgstr "Externe Inhaltsquellen für Deinen Kanal verwalten."
+
+#: ../../mod/sources.php:90 ../../mod/sources.php:100
+msgid "New Source"
+msgstr "Neue Quelle"
+
+#: ../../mod/sources.php:101 ../../mod/sources.php:133
msgid ""
-"The form security token was not correct. This probably happened because the "
-"form has been opened for too long (>3 hours) before submitting it."
-msgstr "Das Security-Token des Formulars war nicht korrekt. Das ist wahrscheinlich passiert, weil das Formular zu lange (>3 Stunden) offen war, bevor es abgeschickt wurde."
+"Import all or selected content from the following channel into this channel "
+"and distribute it according to your channel settings."
+msgstr "Importiere alle oder ausgewählte Inhalte des folgenden Kanals in diesen Kanal und verteile sie gemäß der Einstellungen dieses Kanals."
-#: ../../include/comanche.php:35 ../../view/theme/redbasic/php/config.php:64
-#: ../../view/theme/apw/php/config.php:176
-msgid "Default"
-msgstr "Standard"
+#: ../../mod/sources.php:102 ../../mod/sources.php:134
+msgid "Only import content with these words (one per line)"
+msgstr "Importiere nur Beiträge, die folgende Wörter (eines pro Zeile) enthalten"
-#: ../../include/oembed.php:157
-msgid "Embedded content"
-msgstr "Eingebetteter Inhalt"
+#: ../../mod/sources.php:102 ../../mod/sources.php:134
+msgid "Leave blank to import all public content"
+msgstr "Leer lassen, um alle öffentlichen Beiträge zu importieren"
-#: ../../include/oembed.php:166
-msgid "Embedding disabled"
-msgstr "Einbetten ausgeschaltet"
+#: ../../mod/sources.php:103 ../../mod/sources.php:137
+#: ../../mod/new_channel.php:112
+msgid "Channel Name"
+msgstr "Name des Kanals"
-#: ../../include/permissions.php:13
-msgid "Can view my \"public\" stream and posts"
-msgstr "Kann meinen öffentlichen Stream und Beiträge sehen"
+#: ../../mod/sources.php:123 ../../mod/sources.php:150
+msgid "Source not found."
+msgstr "Quelle nicht gefunden."
-#: ../../include/permissions.php:14
-msgid "Can view my \"public\" channel profile"
-msgstr "Kann meinen öffentliches Kanal-Profil sehen"
+#: ../../mod/sources.php:130
+msgid "Edit Source"
+msgstr "Quelle bearbeiten"
-#: ../../include/permissions.php:15
-msgid "Can view my \"public\" photo albums"
-msgstr "Kann meine öffentlichen Fotoalben sehen"
+#: ../../mod/sources.php:131
+msgid "Delete Source"
+msgstr "Quelle löschen"
-#: ../../include/permissions.php:16
-msgid "Can view my \"public\" address book"
-msgstr "Kann mein öffentliches Adressbuch sehen"
+#: ../../mod/sources.php:158
+msgid "Source removed"
+msgstr "Quelle gelöscht"
-#: ../../include/permissions.php:17
-msgid "Can view my \"public\" file storage"
-msgstr "Kann meinen öffentlichen Dateiordner sehen"
+#: ../../mod/sources.php:160
+msgid "Unable to remove source."
+msgstr "Konnte die Quelle nicht löschen."
-#: ../../include/permissions.php:18
-msgid "Can view my \"public\" pages"
-msgstr "Kann meine öffentlichen Seiten sehen"
+#: ../../mod/blocks.php:99
+msgid "Block Name"
+msgstr "Block-Name"
-#: ../../include/permissions.php:21
-msgid "Can send me their channel stream and posts"
-msgstr "Können mir den Stream und die Beiträge aus ihrem Kanal schicken"
+#: ../../mod/search.php:13 ../../mod/directory.php:15 ../../mod/photos.php:458
+#: ../../mod/display.php:9 ../../mod/viewconnections.php:17
+msgid "Public access denied."
+msgstr "Öffentlicher Zugang verweigert."
-#: ../../include/permissions.php:22
-msgid "Can post on my channel page (\"wall\")"
-msgstr "Kann auf meiner Kanal-Seite (\"wall\") Beiträge veröffentlichen"
+#: ../../mod/directory.php:161
+msgid "Gender: "
+msgstr "Geschlecht:"
-#: ../../include/permissions.php:23
-msgid "Can comment on my posts"
-msgstr "Kann meine Beiträge kommentieren"
+#: ../../mod/directory.php:163
+msgid "Status: "
+msgstr "Status:"
-#: ../../include/permissions.php:24
-msgid "Can send me private mail messages"
-msgstr "Kann mir private Nachrichten schicken"
+#: ../../mod/directory.php:165
+msgid "Homepage: "
+msgstr "Webseite:"
-#: ../../include/permissions.php:25
-msgid "Can post photos to my photo albums"
-msgstr "Kann Fotos in meinen Fotoalben veröffentlichen"
+#: ../../mod/directory.php:168
+msgid "Hometown: "
+msgstr "Wohnort:"
-#: ../../include/permissions.php:26
-msgid "Can forward to all my channel contacts via post @mentions"
-msgstr "Kann an alle meine Kontakte via @-Erwähnung Nachrichten weiterleiten"
+#: ../../mod/directory.php:170
+msgid "About: "
+msgstr "Ãœber:"
-#: ../../include/permissions.php:26
-msgid "Advanced - useful for creating group forum channels"
-msgstr "Fortgeschritten - sinnvoll, um Gruppen-Kanäle/-Foren zu erstellen"
+#: ../../mod/directory.php:225
+msgid "Public Forum:"
+msgstr "Öffentliches Forum:"
-#: ../../include/permissions.php:27
-msgid "Can chat with me (when available)"
-msgstr "Kann mit mir chatten (wenn verfügbar)"
+#: ../../mod/directory.php:228
+msgid "Keywords: "
+msgstr "Schlüsselwörter:"
-#: ../../include/permissions.php:28
-msgid "Can write to my \"public\" file storage"
-msgstr "Kann in meinen öffentlichen Dateiordner schreiben"
+#: ../../mod/directory.php:268
+msgid "Finding:"
+msgstr "Ergebnisse:"
-#: ../../include/permissions.php:29
-msgid "Can edit my \"public\" pages"
-msgstr "Kann meine öffentlichen Seiten bearbeiten"
+#: ../../mod/directory.php:273
+msgid "next page"
+msgstr "nächste Seite"
-#: ../../include/permissions.php:31
-msgid "Can source my \"public\" posts in derived channels"
-msgstr "Kann meine „öffentlichen“ Beiträge als Quellen für andere Kanäle verwenden"
+#: ../../mod/directory.php:273
+msgid "previous page"
+msgstr "vorherige Seite"
-#: ../../include/permissions.php:31
-msgid "Somewhat advanced - very useful in open communities"
-msgstr "Etwas fortgeschritten – sehr nützlich in offenen Gemeinschaften"
+#: ../../mod/directory.php:290
+msgid "No entries (some entries may be hidden)."
+msgstr "Keine Einträge gefunden (einige könnten versteckt sein)."
-#: ../../include/permissions.php:32
-msgid "Can send me bookmarks"
-msgstr "Darf mir Lesezeichen senden"
+#: ../../mod/register.php:44
+msgid "Maximum daily site registrations exceeded. Please try again tomorrow."
+msgstr "Maximale Anzahl täglicher Neuanmeldungen erreicht. Bitte versuche es morgen noch einmal."
-#: ../../include/permissions.php:33
-msgid "Can administer my channel resources"
-msgstr "Kann meine Kanäle administrieren"
+#: ../../mod/register.php:50
+msgid ""
+"Please indicate acceptance of the Terms of Service. Registration failed."
+msgstr "Bitte stimme den Nutzungsbedingungen zu. Registrierung fehlgeschlagen."
-#: ../../include/permissions.php:33
+#: ../../mod/register.php:84
+msgid "Passwords do not match."
+msgstr "Passwörter stimmen nicht überein."
+
+#: ../../mod/register.php:117
msgid ""
-"Extremely advanced. Leave this alone unless you know what you are doing"
-msgstr "Sehr fortgeschritten. Bearbeite das nur, wenn Du genau weißt, was Du tust"
+"Registration successful. Please check your email for validation "
+"instructions."
+msgstr "Registrierung erfolgreich. Eine E-Mail mit weiteren Anweisungen wurde an Dich gesendet."
-#: ../../include/items.php:240 ../../mod/like.php:55 ../../mod/profperm.php:23
-#: ../../mod/group.php:68 ../../index.php:350
-msgid "Permission denied"
-msgstr "Keine Berechtigung"
+#: ../../mod/register.php:123
+msgid "Your registration is pending approval by the site owner."
+msgstr "Deine Registrierung muss noch vom Betreiber der Seite freigegeben werden."
-#: ../../include/items.php:756 ../../mod/connedit.php:395
-msgid "Unknown"
-msgstr "Unbekannt"
+#: ../../mod/register.php:126
+msgid "Your registration can not be processed."
+msgstr "Deine Registrierung konnte nicht verarbeitet werden."
-#: ../../include/items.php:3513 ../../mod/thing.php:78 ../../mod/admin.php:151
-#: ../../mod/admin.php:783 ../../mod/admin.php:986 ../../mod/viewsrc.php:18
-#: ../../mod/home.php:63 ../../mod/display.php:32 ../../mod/filestorage.php:18
-msgid "Item not found."
-msgstr "Element nicht gefunden."
+#: ../../mod/register.php:163
+msgid "Registration on this site/hub is by approval only."
+msgstr "Anmeldungen auf diesem Server erfordern Zustimmung durch den Administrator"
-#: ../../include/items.php:3849 ../../mod/group.php:38 ../../mod/group.php:140
-msgid "Collection not found."
-msgstr "Sammlung nicht gefunden"
+#: ../../mod/register.php:164
+msgid "<a href=\"pubsites\">Register at another affiliated site/hub</a>"
+msgstr "<a href=\"pubsites\">Registrierung auf einem anderen, angeschlossenen Server</a>"
-#: ../../include/items.php:3864
-msgid "Collection is empty."
-msgstr "Sammlung ist leer."
+#: ../../mod/register.php:174
+msgid ""
+"This site has exceeded the number of allowed daily account registrations. "
+"Please try again tomorrow."
+msgstr "Die maximale Anzahl täglicher Registrierungen auf diesem Server wurde überschritten. Bitte versuche es morgen noch einmal."
-#: ../../include/items.php:3871
+#: ../../mod/register.php:185
+msgid "Terms of Service"
+msgstr "Nutzungsbedingungen"
+
+#: ../../mod/register.php:191
#, php-format
-msgid "Collection: %s"
-msgstr "Sammlung: %s"
+msgid "I accept the %s for this website"
+msgstr "Ich akzeptiere die %s für diese Webseite"
-#: ../../include/items.php:3882
+#: ../../mod/register.php:193
#, php-format
-msgid "Connection: %s"
-msgstr "Verbindung: %s"
+msgid "I am over 13 years of age and accept the %s for this website"
+msgstr "Ich bin älter als 13 Jahre und akzeptiere die %s dieser Webseite"
-#: ../../include/items.php:3885
-msgid "Connection not found."
-msgstr "Die Verbindung wurde nicht gefunden."
+#: ../../mod/register.php:207 ../../mod/admin.php:413
+msgid "Registration"
+msgstr "Registrierung"
-#: ../../include/zot.php:548
-msgid "Invalid data packet"
-msgstr "Ungültiges Datenpaket"
+#: ../../mod/register.php:212
+msgid "Membership on this site is by invitation only."
+msgstr "Mitgliedschaft auf dieser Seite ist nur nach vorheriger Einladung möglich."
-#: ../../include/zot.php:558
-msgid "Unable to verify channel signature"
-msgstr "Konnte die Signatur des Kanals nicht verifizieren"
+#: ../../mod/register.php:213
+msgid "Please enter your invitation code"
+msgstr "Bitte trage Deinen Einladungs-Code ein"
-#: ../../include/zot.php:735
-#, php-format
-msgid "Unable to verify site signature for %s"
-msgstr "Kann die Signatur der Seite von %s nicht verifizieren"
+#: ../../mod/register.php:216
+msgid "Your email address"
+msgstr "Ihre E-Mail Adresse"
-#: ../../mod/common.php:10
-msgid "No channel."
-msgstr "Kein Kanal."
+#: ../../mod/register.php:217
+msgid "Choose a password"
+msgstr "Passwort"
-#: ../../mod/common.php:39
-msgid "Common connections"
-msgstr "Gemeinsame Verbindungen"
+#: ../../mod/register.php:218
+msgid "Please re-enter your password"
+msgstr "Bitte gib Dein Passwort noch einmal ein"
-#: ../../mod/common.php:44
-msgid "No connections in common."
-msgstr "Keine gemeinsamen Verbindungen."
+#: ../../mod/events.php:81
+msgid "Event can not end before it has started."
+msgstr "Termin-Ende liegt vor dem Beginn."
-#: ../../mod/events.php:72
+#: ../../mod/events.php:86
msgid "Event title and start time are required."
-msgstr "Veranstaltungs- Titel und Startzeit sind erforderlich."
+msgstr "Titel und Startzeit des Termins sind erforderlich."
-#: ../../mod/events.php:287
+#: ../../mod/events.php:100
+msgid "Event not found."
+msgstr "Termin nicht gefunden."
+
+#: ../../mod/events.php:364
msgid "l, F j"
-msgstr "l, F j"
+msgstr "l, j. F"
-#: ../../mod/events.php:309
+#: ../../mod/events.php:386
msgid "Edit event"
-msgstr "Veranstaltung bearbeiten"
+msgstr "Termin bearbeiten"
-#: ../../mod/events.php:355
+#: ../../mod/events.php:432
msgid "Create New Event"
-msgstr "Neue Veranstaltung erstellen"
+msgstr "Neuen Termin erstellen"
-#: ../../mod/events.php:356
+#: ../../mod/events.php:433 ../../mod/photos.php:859
msgid "Previous"
msgstr "Voriges"
-#: ../../mod/events.php:357 ../../mod/setup.php:258
-msgid "Next"
-msgstr "Nächste"
-
-#: ../../mod/events.php:428
-msgid "hour:minute"
-msgstr "Stunde:Minute"
-
-#: ../../mod/events.php:447
+#: ../../mod/events.php:560
msgid "Event details"
-msgstr "Veranstaltungs-Details"
+msgstr "Termin-Details"
-#: ../../mod/events.php:448
-#, php-format
-msgid "Format is %s %s. Starting date and Title are required."
-msgstr "Format ist %s %s. Startzeit und Titel sind erforderlich."
+#: ../../mod/events.php:561
+msgid "Starting date and Title are required."
+msgstr "Startdatum und Titel sind erforderlich."
-#: ../../mod/events.php:450
+#: ../../mod/events.php:565
msgid "Event Starts:"
-msgstr "Veranstaltung startet:"
+msgstr "Termin beginnt:"
-#: ../../mod/events.php:450 ../../mod/events.php:464
+#: ../../mod/events.php:565 ../../mod/events.php:581 ../../mod/appman.php:91
+#: ../../mod/appman.php:92
msgid "Required"
msgstr "Benötigt"
-#: ../../mod/events.php:453
+#: ../../mod/events.php:571
msgid "Finish date/time is not known or not relevant"
msgstr "Ende Datum/Zeit sind unbekannt oder unwichtig"
-#: ../../mod/events.php:455
+#: ../../mod/events.php:573
msgid "Event Finishes:"
-msgstr "Veranstaltung endet:"
+msgstr "Termin endet:"
-#: ../../mod/events.php:458
+#: ../../mod/events.php:575
msgid "Adjust for viewer timezone"
msgstr "An die Zeitzone des Betrachters anpassen"
-#: ../../mod/events.php:460
+#: ../../mod/events.php:577
msgid "Description:"
msgstr "Beschreibung:"
-#: ../../mod/events.php:464
+#: ../../mod/events.php:581
msgid "Title:"
msgstr "Titel:"
-#: ../../mod/events.php:466
+#: ../../mod/events.php:583
msgid "Share this event"
-msgstr "Die Veranstaltung teilen"
+msgstr "Den Termin teilen"
+
+#: ../../mod/pubsites.php:16
+msgid "Public Sites"
+msgstr "Öffentliche Server"
+
+#: ../../mod/pubsites.php:19
+msgid ""
+"The listed sites allow public registration into the Red Matrix. All sites in"
+" the matrix are interlinked so membership on any of them conveys membership "
+"in the matrix as a whole. Some sites may require subscription or provide "
+"tiered service plans. The provider links <strong>may</strong> provide "
+"additional details."
+msgstr "Die hier aufgeführten Server erlauben Dir, einen Account in der Red-Matrix anzulegen. Alle Server der Matrix sind miteinander verbunden, so dass die Mitgliedschaft auf einem Server eine Verbindung zu beliebigen anderen Servern der Matrix ermöglicht. Es könnte sein, dass einige dieser Server kostenpflichtig sind oder abgestufte, je nach Umfang kostenpflichtige Mitgliedschaften anbieten. Auf den jeweiligen Seiten <strong>könnten</strong> nähere Details dazu stehen."
+
+#: ../../mod/pubsites.php:25
+msgid "Site URL"
+msgstr "Server-URL"
+
+#: ../../mod/pubsites.php:25
+msgid "Access Type"
+msgstr "Zugangstyp"
+
+#: ../../mod/pubsites.php:25
+msgid "Registration Policy"
+msgstr "Registrierungsrichtlinien"
+
+#: ../../mod/channel.php:25 ../../mod/chat.php:19
+msgid "You must be logged in to see this page."
+msgstr "Du musst angemeldet sein, um diese Seite betrachten zu können."
+
+#: ../../mod/channel.php:86
+msgid "Insufficient permissions. Request redirected to profile page."
+msgstr "Unzureichende Zugriffsrechte. Die Anfrage wurde zur Profil-Seite umgeleitet."
+
+#: ../../mod/rbmark.php:88
+msgid "Select a bookmark folder"
+msgstr "Lesezeichenordner wählen"
+
+#: ../../mod/rbmark.php:93
+msgid "Save Bookmark"
+msgstr "Lesezeichen speichern"
+
+#: ../../mod/rbmark.php:94
+msgid "URL of bookmark"
+msgstr "URL des Lesezeichens"
+
+#: ../../mod/rbmark.php:95 ../../mod/appman.php:93
+msgid "Description"
+msgstr "Beschreibung"
+
+#: ../../mod/rbmark.php:99
+msgid "Or enter new bookmark folder name"
+msgstr "Oder gib einen neuen Namen für den Lesezeichenordner ein"
+
+#: ../../mod/chat.php:167
+msgid "Room not found"
+msgstr "Chatraum nicht gefunden"
+
+#: ../../mod/chat.php:178
+msgid "Leave Room"
+msgstr "Raum verlassen"
+
+#: ../../mod/chat.php:179
+msgid "Delete This Room"
+msgstr "Diesen Raum löschen"
+
+#: ../../mod/chat.php:180
+msgid "I am away right now"
+msgstr "Ich bin gerade nicht da"
+
+#: ../../mod/chat.php:181
+msgid "I am online"
+msgstr "Ich bin online"
+
+#: ../../mod/chat.php:183
+msgid "Bookmark this room"
+msgstr "Lesezeichen für diesen Raum setzen"
+
+#: ../../mod/chat.php:207 ../../mod/chat.php:229
+msgid "New Chatroom"
+msgstr "Neuer Chatraum"
+
+#: ../../mod/chat.php:208
+msgid "Chatroom Name"
+msgstr "Name des Chatraums"
+
+#: ../../mod/chat.php:225
+#, php-format
+msgid "%1$s's Chatrooms"
+msgstr "%1$ss Chaträume"
+
+#: ../../mod/subthread.php:103
+#, php-format
+msgid "%1$s is following %2$s's %3$s"
+msgstr "%1$s folgt nun %2$ss %3$s"
+
+#: ../../mod/chatsvc.php:111
+msgid "Away"
+msgstr "Abwesend"
+
+#: ../../mod/chatsvc.php:115
+msgid "Online"
+msgstr "Online"
+
+#: ../../mod/regmod.php:11
+msgid "Please login."
+msgstr "Bitte melde dich an."
+
+#: ../../mod/network.php:79
+msgid "No such group"
+msgstr "Sammlung nicht gefunden"
+
+#: ../../mod/network.php:118
+msgid "Search Results For:"
+msgstr "Suchergebnisse für:"
+
+#: ../../mod/network.php:172
+msgid "Collection is empty"
+msgstr "Sammlung ist leer"
+
+#: ../../mod/network.php:180
+msgid "Collection: "
+msgstr "Sammlung:"
+
+#: ../../mod/network.php:193
+msgid "Connection: "
+msgstr "Verbindung:"
+
+#: ../../mod/network.php:196
+msgid "Invalid connection."
+msgstr "Ungültige Verbindung."
+
+#: ../../mod/removeme.php:29
+msgid ""
+"Channel removals are not allowed within 48 hours of changing the account "
+"password."
+msgstr "Innerhalb von 48 Stunden nach einer Änderung des Passworts können keine Kanäle gelöscht werden."
+
+#: ../../mod/removeme.php:57
+msgid "Remove This Channel"
+msgstr "Diesen Kanal löschen"
+
+#: ../../mod/removeme.php:58
+msgid ""
+"This will completely remove this channel from the network. Once this has "
+"been done it is not recoverable."
+msgstr "Hiermit wird dieser Kanal komplett aus dem Netzwerk gelöscht. Einmal eingeleitet, kann dieser Prozess nicht wieder rückgängig gemacht werden."
+
+#: ../../mod/removeme.php:59 ../../mod/removeaccount.php:59
+msgid "Please enter your password for verification:"
+msgstr "Bitte gib zur Bestätigung Dein Passwort ein:"
+
+#: ../../mod/removeme.php:60
+msgid "Remove this channel and all its clones from the network"
+msgstr "Lösche diesen Kanal und all seine Klone aus dem Netzwerk"
+
+#: ../../mod/removeme.php:60
+msgid ""
+"By default only the instance of the channel located on this hub will be "
+"removed from the network"
+msgstr "Standardmäßig wird der Kanal nur auf diesem Server gelöscht, seine Klone verbleiben im Netzwerk"
+
+#: ../../mod/removeme.php:61
+msgid "Remove Channel"
+msgstr "Kanal löschen"
+
+#: ../../mod/common.php:10
+msgid "No channel."
+msgstr "Kein Kanal."
+
+#: ../../mod/common.php:39
+msgid "Common connections"
+msgstr "Gemeinsame Verbindungen"
+
+#: ../../mod/common.php:44
+msgid "No connections in common."
+msgstr "Keine gemeinsamen Verbindungen."
+
+#: ../../mod/rmagic.php:38
+msgid ""
+"We encountered a problem while logging in with the OpenID you provided. "
+"Please check the correct spelling of the ID."
+msgstr "Wir haben ein Problem mit der OpenID festgestellt, mit der Du Dich anmelden wolltest. Bitte überprüfe sie noch einmal."
+
+#: ../../mod/rmagic.php:38
+msgid "The error message was:"
+msgstr "Die Fehlermeldung war:"
+
+#: ../../mod/rmagic.php:42
+msgid "Authentication failed."
+msgstr "Authentifizierung fehlgeschlagen."
+
+#: ../../mod/rmagic.php:82
+msgid "Remote Authentication"
+msgstr "Entfernte Authentifizierung"
+
+#: ../../mod/rmagic.php:83
+msgid "Enter your channel address (e.g. channel@example.com)"
+msgstr "Deine Kanal-Adresse (z. B. channel@example.com)"
+
+#: ../../mod/rmagic.php:84
+msgid "Authenticate"
+msgstr "Authentifizieren"
+
+#: ../../mod/filer.php:49
+msgid "- select -"
+msgstr "– auswählen –"
+
+#: ../../mod/photos.php:77
+msgid "Page owner information could not be retrieved."
+msgstr "Informationen über den Besitzer der Seite konnten nicht gefunden werden."
+
+#: ../../mod/photos.php:97
+msgid "Album not found."
+msgstr "Album nicht gefunden."
+
+#: ../../mod/photos.php:119 ../../mod/photos.php:672
+msgid "Delete Album"
+msgstr "Album löschen"
+
+#: ../../mod/photos.php:159 ../../mod/photos.php:957
+msgid "Delete Photo"
+msgstr "Foto löschen"
+
+#: ../../mod/photos.php:469
+msgid "No photos selected"
+msgstr "Keine Fotos ausgewählt"
+
+#: ../../mod/photos.php:513
+msgid "Access to this item is restricted."
+msgstr "Der Zugriff auf dieses Foto ist eingeschränkt."
+
+#: ../../mod/photos.php:552
+#, php-format
+msgid "%1$.2f MB of %2$.2f MB photo storage used."
+msgstr "%1$.2f MB von %2$.2f MB Foto-Speicher belegt."
+
+#: ../../mod/photos.php:555
+#, php-format
+msgid "%1$.2f MB photo storage used."
+msgstr "%1$.2f MB Foto-Speicher belegt."
+
+#: ../../mod/photos.php:579
+msgid "Upload Photos"
+msgstr "Fotos hochladen"
+
+#: ../../mod/photos.php:583 ../../mod/photos.php:665 ../../mod/photos.php:943
+msgid "Enter a new album name"
+msgstr "Gib einen Namen für ein neues Album ein"
+
+#: ../../mod/photos.php:584 ../../mod/photos.php:666 ../../mod/photos.php:944
+msgid "or select an existing one (doubleclick)"
+msgstr "oder wähle ein bereits vorhandenes aus (Doppelklick)"
-#: ../../mod/thing.php:98
+#: ../../mod/photos.php:585
+msgid "Do not show a status post for this upload"
+msgstr "Keine Statusnachricht für diesen Upload senden"
+
+#: ../../mod/photos.php:613
+msgid "Album name could not be decoded"
+msgstr "Albumname konnte nicht dekodiert werden"
+
+#: ../../mod/photos.php:654 ../../mod/photos.php:1166
+#: ../../mod/photos.php:1182
+msgid "Contact Photos"
+msgstr "Kontakt-Bilder"
+
+#: ../../mod/photos.php:678
+msgid "Show Newest First"
+msgstr "Zeige Neueste zuerst"
+
+#: ../../mod/photos.php:680
+msgid "Show Oldest First"
+msgstr "Zeige Älteste zuerst"
+
+#: ../../mod/photos.php:707 ../../mod/photos.php:1214
+msgid "View Photo"
+msgstr "Foto ansehen"
+
+#: ../../mod/photos.php:736
+msgid "Edit Album"
+msgstr "Album bearbeiten"
+
+#: ../../mod/photos.php:781
+msgid "Permission denied. Access to this item may be restricted."
+msgstr "Berechtigung verweigert. Der Zugriff ist wahrscheinlich eingeschränkt worden."
+
+#: ../../mod/photos.php:783
+msgid "Photo not available"
+msgstr "Foto nicht verfügbar"
+
+#: ../../mod/photos.php:841
+msgid "Use as profile photo"
+msgstr "Als Profilfoto verwenden"
+
+#: ../../mod/photos.php:848
+msgid "Private Photo"
+msgstr "Privates Foto"
+
+#: ../../mod/photos.php:863
+msgid "View Full Size"
+msgstr "In voller Größe anzeigen"
+
+#: ../../mod/photos.php:905 ../../mod/delegate.php:130 ../../mod/tagrm.php:133
+msgid "Remove"
+msgstr "Entferne"
+
+#: ../../mod/photos.php:937
+msgid "Edit photo"
+msgstr "Foto bearbeiten"
+
+#: ../../mod/photos.php:939
+msgid "Rotate CW (right)"
+msgstr "Drehen im UZS (rechts)"
+
+#: ../../mod/photos.php:940
+msgid "Rotate CCW (left)"
+msgstr "Drehen gegen UZS (links)"
+
+#: ../../mod/photos.php:947
+msgid "Caption"
+msgstr "Bildunterschrift"
+
+#: ../../mod/photos.php:949
+msgid "Add a Tag"
+msgstr "Schlagwort hinzufügen"
+
+#: ../../mod/photos.php:953
+msgid "Example: @bob, @Barbara_Jensen, @jim@example.com"
+msgstr "Beispiele: @ben, @Karl_Prester, @lieschen@example.com"
+
+#: ../../mod/photos.php:955
+msgid "Flag as adult in album view"
+msgstr "In der Albumansicht als nicht jugendfrei markieren"
+
+#: ../../mod/photos.php:1132
+msgid "In This Photo:"
+msgstr "Auf diesem Foto:"
+
+#: ../../mod/photos.php:1220
+msgid "View Album"
+msgstr "Album ansehen"
+
+#: ../../mod/photos.php:1243
+msgid "Recent Photos"
+msgstr "Neueste Fotos"
+
+#: ../../mod/connections.php:37 ../../mod/connedit.php:64
+msgid "Could not access contact record."
+msgstr "Konnte nicht auf den Kontakteintrag zugreifen."
+
+#: ../../mod/connections.php:51 ../../mod/connedit.php:86
+msgid "Could not locate selected profile."
+msgstr "Gewähltes Profil nicht gefunden."
+
+#: ../../mod/connections.php:94 ../../mod/connedit.php:140
+msgid "Connection updated."
+msgstr "Verbindung aktualisiert."
+
+#: ../../mod/connections.php:96 ../../mod/connedit.php:142
+msgid "Failed to update connection record."
+msgstr "Konnte den Verbindungseintrag nicht aktualisieren."
+
+#: ../../mod/connections.php:191 ../../mod/connections.php:292
+msgid "Blocked"
+msgstr "Blockiert"
+
+#: ../../mod/connections.php:196 ../../mod/connections.php:299
+msgid "Ignored"
+msgstr "Ignoriert"
+
+#: ../../mod/connections.php:201 ../../mod/connections.php:313
+msgid "Hidden"
+msgstr "Versteckt"
+
+#: ../../mod/connections.php:206 ../../mod/connections.php:306
+msgid "Archived"
+msgstr "Archiviert"
+
+#: ../../mod/connections.php:230 ../../mod/connections.php:245
+msgid "All"
+msgstr "Alle"
+
+#: ../../mod/connections.php:270
+msgid "Suggest new connections"
+msgstr "Neue Verbindungen vorschlagen"
+
+#: ../../mod/connections.php:273
+msgid "New Connections"
+msgstr "Neue Verbindungen"
+
+#: ../../mod/connections.php:276
+msgid "Show pending (new) connections"
+msgstr "Zeige ausstehende (neue) Verbindungsanfragen"
+
+#: ../../mod/connections.php:282
+msgid "Show all connections"
+msgstr "Zeige alle Verbindungen"
+
+#: ../../mod/connections.php:285
+msgid "Unblocked"
+msgstr "Freigegeben"
+
+#: ../../mod/connections.php:288
+msgid "Only show unblocked connections"
+msgstr "Zeige nur freigegebene Verbindungen"
+
+#: ../../mod/connections.php:295
+msgid "Only show blocked connections"
+msgstr "Zeige nur blockierte Verbindungen"
+
+#: ../../mod/connections.php:302
+msgid "Only show ignored connections"
+msgstr "Zeige nur ignorierte Verbindungen"
+
+#: ../../mod/connections.php:309
+msgid "Only show archived connections"
+msgstr "Zeige nur archivierte Verbindungen"
+
+#: ../../mod/connections.php:316
+msgid "Only show hidden connections"
+msgstr "Zeige nur versteckte Verbindungen"
+
+#: ../../mod/connections.php:371
+#, php-format
+msgid "%1$s [%2$s]"
+msgstr "%1$s [%2$s]"
+
+#: ../../mod/connections.php:372
+msgid "Edit connection"
+msgstr "Verbindung bearbeiten"
+
+#: ../../mod/connections.php:410
+msgid "Search your connections"
+msgstr "Verbindungen durchsuchen"
+
+#: ../../mod/connections.php:411
+msgid "Finding: "
+msgstr "Ergebnisse:"
+
+#: ../../mod/manage.php:136
+#, php-format
+msgid "You have created %1$.0f of %2$.0f allowed channels."
+msgstr "Du hast %1$.0f von maximal %2$.0f erlaubten Kanälen eingerichtet."
+
+#: ../../mod/manage.php:144
+msgid "Create a new channel"
+msgstr "Neuen Kanal anlegen"
+
+#: ../../mod/manage.php:149
+msgid "Current Channel"
+msgstr "Aktueller Kanal"
+
+#: ../../mod/manage.php:151
+msgid "Attach to one of your channels by selecting it."
+msgstr "Wähle einen Deiner Kanäle aus, um ihn zu verwenden."
+
+#: ../../mod/manage.php:152
+msgid "Default Channel"
+msgstr "Standard Kanal"
+
+#: ../../mod/manage.php:153
+msgid "Make Default"
+msgstr "Zum Standard machen"
+
+#: ../../mod/rpost.php:97 ../../mod/editpost.php:42
+msgid "Edit post"
+msgstr "Bearbeite Beitrag"
+
+#: ../../mod/connedit.php:189
+msgid "is now connected to"
+msgstr "ist jetzt verbunden mit"
+
+#: ../../mod/connedit.php:310
+msgid "Could not access address book record."
+msgstr "Konnte nicht auf den Adressbuch-Eintrag zugreifen."
+
+#: ../../mod/connedit.php:324
+msgid "Refresh failed - channel is currently unavailable."
+msgstr "Aktualisierung fehlgeschlagen – der Kanal ist im Moment nicht erreichbar."
+
+#: ../../mod/connedit.php:331
+msgid "Channel has been unblocked"
+msgstr "Kanal nicht mehr blockiert"
+
+#: ../../mod/connedit.php:332
+msgid "Channel has been blocked"
+msgstr "Kanal blockiert"
+
+#: ../../mod/connedit.php:336 ../../mod/connedit.php:348
+#: ../../mod/connedit.php:360 ../../mod/connedit.php:372
+#: ../../mod/connedit.php:388
+msgid "Unable to set address book parameters."
+msgstr "Konnte die Adressbuch-Parameter nicht setzen."
+
+#: ../../mod/connedit.php:343
+msgid "Channel has been unignored"
+msgstr "Kanal wird nicht mehr ignoriert"
+
+#: ../../mod/connedit.php:344
+msgid "Channel has been ignored"
+msgstr "Kanal wird ignoriert"
+
+#: ../../mod/connedit.php:355
+msgid "Channel has been unarchived"
+msgstr "Kanal wurde aus dem Archiv zurück geholt"
+
+#: ../../mod/connedit.php:356
+msgid "Channel has been archived"
+msgstr "Kanal wurde archiviert"
+
+#: ../../mod/connedit.php:367
+msgid "Channel has been unhidden"
+msgstr "Kanal wird nicht mehr versteckt"
+
+#: ../../mod/connedit.php:368
+msgid "Channel has been hidden"
+msgstr "Kanal wurde versteckt"
+
+#: ../../mod/connedit.php:383
+msgid "Channel has been approved"
+msgstr "Kanal wurde zugelassen"
+
+#: ../../mod/connedit.php:384
+msgid "Channel has been unapproved"
+msgstr "Zulassung des Kanals entfernt"
+
+#: ../../mod/connedit.php:412
+msgid "Connection has been removed."
+msgstr "Verbindung wurde gelöscht."
+
+#: ../../mod/connedit.php:432
+#, php-format
+msgid "View %s's profile"
+msgstr "%ss Profil ansehen"
+
+#: ../../mod/connedit.php:436
+msgid "Refresh Permissions"
+msgstr "Zugriffsrechte neu laden"
+
+#: ../../mod/connedit.php:439
+msgid "Fetch updated permissions"
+msgstr "Aktualisierte Zugriffsrechte abfragen"
+
+#: ../../mod/connedit.php:443
+msgid "Recent Activity"
+msgstr "Kürzliche Aktivitäten"
+
+#: ../../mod/connedit.php:446
+msgid "View recent posts and comments"
+msgstr "Betrachte die neuesten Beiträge und Kommentare"
+
+#: ../../mod/connedit.php:450 ../../mod/connedit.php:594
+#: ../../mod/admin.php:732
+msgid "Unblock"
+msgstr "Freigeben"
+
+#: ../../mod/connedit.php:450 ../../mod/connedit.php:594
+#: ../../mod/admin.php:731
+msgid "Block"
+msgstr "Blockieren"
+
+#: ../../mod/connedit.php:453
+msgid "Block or Unblock this connection"
+msgstr "Verbindung blockieren oder freigeben"
+
+#: ../../mod/connedit.php:457 ../../mod/connedit.php:595
+msgid "Unignore"
+msgstr "Nicht ignorieren"
+
+#: ../../mod/connedit.php:457 ../../mod/connedit.php:595
+#: ../../mod/notifications.php:51
+msgid "Ignore"
+msgstr "Ignorieren"
+
+#: ../../mod/connedit.php:460
+msgid "Ignore or Unignore this connection"
+msgstr "Verbindung ignorieren oder wieder beachten"
+
+#: ../../mod/connedit.php:463
+msgid "Unarchive"
+msgstr "Aus Archiv zurückholen"
+
+#: ../../mod/connedit.php:463
+msgid "Archive"
+msgstr "Archivieren"
+
+#: ../../mod/connedit.php:466
+msgid "Archive or Unarchive this connection"
+msgstr "Verbindung archivieren oder aus dem Archiv zurückholen"
+
+#: ../../mod/connedit.php:469
+msgid "Unhide"
+msgstr "Wieder sichtbar machen"
+
+#: ../../mod/connedit.php:469
+msgid "Hide"
+msgstr "Verstecken"
+
+#: ../../mod/connedit.php:472
+msgid "Hide or Unhide this connection"
+msgstr "Diese Verbindung verstecken oder wieder sichtbar machen"
+
+#: ../../mod/connedit.php:479
+msgid "Delete this connection"
+msgstr "Verbindung löschen"
+
+#: ../../mod/connedit.php:522 ../../mod/connedit.php:552
+msgid "Approve this connection"
+msgstr "Verbindung genehmigen"
+
+#: ../../mod/connedit.php:522
+msgid "Accept connection to allow communication"
+msgstr "Akzeptiere die Verbindung, um Kommunikation zu ermöglichen"
+
+#: ../../mod/connedit.php:538
+#, php-format
+msgid "Connections: settings for %s"
+msgstr "Verbindungseinstellungen für %s"
+
+#: ../../mod/connedit.php:539
+msgid "Apply these permissions automatically"
+msgstr "Diese Berechtigungen automatisch anwenden"
+
+#: ../../mod/connedit.php:543
+msgid "Apply the permissions indicated on this page to all new connections."
+msgstr "Wende die auf dieser Seite gewählten Berechtigungen auf alle neuen Verbindungen an."
+
+#: ../../mod/connedit.php:545
+msgid "Slide to adjust your degree of friendship"
+msgstr "Verschieben, um den Grad der Freundschaft zu einzustellen"
+
+#: ../../mod/connedit.php:551
+msgid "inherited"
+msgstr "geerbt"
+
+#: ../../mod/connedit.php:553
+msgid "Connection has no individual permissions!"
+msgstr "Diese Verbindung hat keine individuellen Zugriffsrechte!"
+
+#: ../../mod/connedit.php:554
+msgid ""
+"This may be appropriate based on your <a href=\"settings\">privacy "
+"settings</a>, though you may wish to review the \"Advanced Permissions\"."
+msgstr "Abhängig von Deinen <a href=\"settings\">Privatsphäre-Einstellungen</a> könnte das passen, eventuell solltest Du aber die „Zugriffsrechte für Fortgeschrittene“ überprüfen."
+
+#: ../../mod/connedit.php:556
+msgid "Profile Visibility"
+msgstr "Sichtbarkeit des Profils"
+
+#: ../../mod/connedit.php:557
+#, php-format
+msgid ""
+"Please choose the profile you would like to display to %s when viewing your "
+"profile securely."
+msgstr "Bitte wähle ein Profil, das wir %s zeigen sollen, wenn Deine Profilseite über eine verifizierte Verbindung aufgerufen wird."
+
+#: ../../mod/connedit.php:558
+msgid "Contact Information / Notes"
+msgstr "Kontaktinformationen / Notizen"
+
+#: ../../mod/connedit.php:559
+msgid "Edit contact notes"
+msgstr "Kontaktnotizen bearbeiten"
+
+#: ../../mod/connedit.php:561
+msgid "Their Settings"
+msgstr "Deren Einstellungen"
+
+#: ../../mod/connedit.php:562
+msgid "My Settings"
+msgstr "Meine Einstellungen"
+
+#: ../../mod/connedit.php:564
+msgid "Clear/Disable Automatic Permissions"
+msgstr "Automatische Berechtigungen abschalten/entfernen"
+
+#: ../../mod/connedit.php:565
+msgid "Forum Members"
+msgstr "Forum Mitglieder"
+
+#: ../../mod/connedit.php:566
+msgid "Soapbox"
+msgstr "Marktschreier"
+
+#: ../../mod/connedit.php:567
+msgid "Full Sharing (typical social network permissions)"
+msgstr "Vollumfängliches Teilen (übliche Berechtigungen in sozialen Netzwerken)"
+
+#: ../../mod/connedit.php:568
+msgid "Cautious Sharing "
+msgstr "Vorsichtiges Teilen"
+
+#: ../../mod/connedit.php:569
+msgid "Follow Only"
+msgstr "Nur folgen"
+
+#: ../../mod/connedit.php:570
+msgid "Individual Permissions"
+msgstr "Individuelle Zugriffsrechte"
+
+#: ../../mod/connedit.php:571
+msgid ""
+"Some permissions may be inherited from your channel <a "
+"href=\"settings\">privacy settings</a>, which have higher priority than "
+"individual settings. Changing those inherited settings on this page will "
+"have no effect."
+msgstr "Einige Berechtigungen werden von den globalen <a href=\"settings\">Sicherheits- und Privatsphäre-Einstellungen</a> dieses Kanals geerbt, die eine höhere Priorität haben als die Einstellungen bei einer Verbindung. Werden geerbte Einstellungen hier geändert, hat das keine Auswirkungen."
+
+#: ../../mod/connedit.php:572
+msgid "Advanced Permissions"
+msgstr "Zugriffsrechte für Fortgeschrittene"
+
+#: ../../mod/connedit.php:573
+msgid "Simple Permissions (select one and submit)"
+msgstr "Einfache Berechtigungs-Einstellungen (wähle eine aus und klicke auf Senden)"
+
+#: ../../mod/connedit.php:577
+#, php-format
+msgid "Visit %s's profile - %s"
+msgstr "%ss Profil besuchen - %s"
+
+#: ../../mod/connedit.php:578
+msgid "Block/Unblock contact"
+msgstr "Kontakt blockieren/freigeben"
+
+#: ../../mod/connedit.php:579
+msgid "Ignore contact"
+msgstr "Kontakt ignorieren"
+
+#: ../../mod/connedit.php:580
+msgid "Repair URL settings"
+msgstr "URL-Einstellungen reparieren"
+
+#: ../../mod/connedit.php:581
+msgid "View conversations"
+msgstr "Unterhaltungen anzeigen"
+
+#: ../../mod/connedit.php:583
+msgid "Delete contact"
+msgstr "Kontakt löschen"
+
+#: ../../mod/connedit.php:586
+msgid "Last update:"
+msgstr "Letzte Aktualisierung:"
+
+#: ../../mod/connedit.php:588
+msgid "Update public posts"
+msgstr "Öffentliche Beiträge aktualisieren"
+
+#: ../../mod/connedit.php:590
+msgid "Update now"
+msgstr "Jetzt aktualisieren"
+
+#: ../../mod/connedit.php:596
+msgid "Currently blocked"
+msgstr "Derzeit blockiert"
+
+#: ../../mod/connedit.php:597
+msgid "Currently ignored"
+msgstr "Derzeit ignoriert"
+
+#: ../../mod/connedit.php:598
+msgid "Currently archived"
+msgstr "Derzeit archiviert"
+
+#: ../../mod/connedit.php:599
+msgid "Currently pending"
+msgstr "Derzeit anstehend"
+
+#: ../../mod/connedit.php:600
+msgid "Hide this contact from others"
+msgstr "Diese Verbindung vor den anderen verbergen."
+
+#: ../../mod/connedit.php:600
+msgid ""
+"Replies/likes to your public posts <strong>may</strong> still be visible"
+msgstr "Antworten/Likes auf deine öffentlichen Beiträge <strong>können</strong> immer noch sichtbar sein"
+
+#: ../../mod/openid.php:26
+msgid "OpenID protocol error. No ID returned."
+msgstr "OpenID Protokollfehler. Keine ID zurückgegeben."
+
+#: ../../mod/thing.php:96
msgid "Thing updated"
-msgstr "Ding aktualisiert"
+msgstr "Sache aktualisiert"
-#: ../../mod/thing.php:158
+#: ../../mod/thing.php:156
msgid "Object store: failed"
msgstr "Speichern des Objekts fehlgeschlagen"
-#: ../../mod/thing.php:162
+#: ../../mod/thing.php:160
msgid "Thing added"
-msgstr "Ding hinzugefügt"
+msgstr "Sache hinzugefügt"
-#: ../../mod/thing.php:182
+#: ../../mod/thing.php:180
#, php-format
msgid "OBJ: %1$s %2$s %3$s"
msgstr "OBJ: %1$s %2$s %3$s"
-#: ../../mod/thing.php:234
+#: ../../mod/thing.php:232
msgid "Show Thing"
-msgstr "Ding anzeigen"
+msgstr "Sache anzeigen"
-#: ../../mod/thing.php:241
+#: ../../mod/thing.php:239
msgid "item not found."
msgstr "Eintrag nicht gefunden"
-#: ../../mod/thing.php:269
+#: ../../mod/thing.php:270
msgid "Edit Thing"
-msgstr "Ding bearbeiten"
+msgstr "Sache bearbeiten"
-#: ../../mod/thing.php:271 ../../mod/thing.php:318
+#: ../../mod/thing.php:272 ../../mod/thing.php:319
msgid "Select a profile"
msgstr "Wähle ein Profil"
-#: ../../mod/thing.php:273 ../../mod/thing.php:320
-msgid "Select a category of stuff. e.g. I ______ something"
-msgstr "Wähle eine Kategorie/Art, z.B. Ich ______ etwas"
-
-#: ../../mod/thing.php:275 ../../mod/thing.php:321
+#: ../../mod/thing.php:276 ../../mod/thing.php:322
msgid "Post an activity"
msgstr "Aktivitätsnachricht senden"
-#: ../../mod/thing.php:275 ../../mod/thing.php:321
+#: ../../mod/thing.php:276 ../../mod/thing.php:322
msgid "Only sends to viewers of the applicable profile"
msgstr "Nur an Betrachter des ausgewählten Profils senden"
-#: ../../mod/thing.php:277 ../../mod/thing.php:323
+#: ../../mod/thing.php:278 ../../mod/thing.php:324
msgid "Name of thing e.g. something"
-msgstr "Name des Dings, z.B. Etwas"
+msgstr "Name der Sache, z. B. irgendwas"
-#: ../../mod/thing.php:279 ../../mod/thing.php:324
+#: ../../mod/thing.php:280 ../../mod/thing.php:325
msgid "URL of thing (optional)"
-msgstr "URL des Dings (optional)"
+msgstr "URL der Sache (optional)"
-#: ../../mod/thing.php:281 ../../mod/thing.php:325
+#: ../../mod/thing.php:282 ../../mod/thing.php:326
msgid "URL for photo of thing (optional)"
-msgstr "URL eines Fotos von dem Ding (optional)"
+msgstr "URL eines Fotos der Sache (optional)"
-#: ../../mod/thing.php:316
+#: ../../mod/thing.php:317
msgid "Add Thing to your Profile"
-msgstr "Das Ding Deinem Profil hinzufügen"
-
-#: ../../mod/invite.php:25
-msgid "Total invitation limit exceeded."
-msgstr "Einladungslimit überschritten."
-
-#: ../../mod/invite.php:49
-#, php-format
-msgid "%s : Not a valid email address."
-msgstr "%s : Keine gültige Email Adresse."
+msgstr "Die Sache Deinem Profil hinzufügen"
-#: ../../mod/invite.php:76
-msgid "Please join us on Red"
-msgstr "Schließe Dich uns an und werde Teil der Red-Matrix"
+#: ../../mod/lostpass.php:15
+msgid "No valid account found."
+msgstr "Kein gültiges Konto gefunden."
-#: ../../mod/invite.php:87
-msgid "Invitation limit exceeded. Please contact your site administrator."
-msgstr "Einladungslimit überschritten. Bitte kontaktiere den Administrator Deines Red-Servers."
+#: ../../mod/lostpass.php:29
+msgid "Password reset request issued. Check your email."
+msgstr "Zurücksetzen des Passworts eingeleitet. Schau in Deine E-Mails."
-#: ../../mod/invite.php:92
+#: ../../mod/lostpass.php:35 ../../mod/lostpass.php:102
#, php-format
-msgid "%s : Message delivery failed."
-msgstr "%s : Nachricht konnte nicht zugestellt werden."
+msgid "Site Member (%s)"
+msgstr "Nutzer (%s)"
-#: ../../mod/invite.php:96
+#: ../../mod/lostpass.php:40
#, php-format
-msgid "%d message sent."
-msgid_plural "%d messages sent."
-msgstr[0] "%d Nachricht gesendet."
-msgstr[1] "%d Nachrichten gesendet."
+msgid "Password reset requested at %s"
+msgstr "Passwort-Rücksetzung auf %s angefordert"
-#: ../../mod/invite.php:115
-msgid "You have no more invitations available"
-msgstr "Du hast keine weiteren verfügbare Einladungen"
+#: ../../mod/lostpass.php:63
+msgid ""
+"Request could not be verified. (You may have previously submitted it.) "
+"Password reset failed."
+msgstr "Die Anfrage konnte nicht verifiziert werden. (Vielleicht hast Du schon einmal auf den Link in der E-Mail geklickt?) Passwort-Rücksetzung fehlgeschlagen."
-#: ../../mod/invite.php:141
-msgid "Send invitations"
-msgstr "Einladungen senden"
+#: ../../mod/lostpass.php:85 ../../boot.php:1494
+msgid "Password Reset"
+msgstr "Zurücksetzen des Kennworts"
-#: ../../mod/invite.php:142
-msgid "Enter email addresses, one per line:"
-msgstr "Email-Adressen eintragen, eine pro Zeile:"
+#: ../../mod/lostpass.php:86
+msgid "Your password has been reset as requested."
+msgstr "Dein Passwort wurde wie angefordert neu erstellt."
-#: ../../mod/invite.php:143 ../../mod/mail.php:216 ../../mod/mail.php:328
-msgid "Your message:"
-msgstr "Deine Nachricht:"
+#: ../../mod/lostpass.php:87
+msgid "Your new password is"
+msgstr "Dein neues Passwort lautet"
+
+#: ../../mod/lostpass.php:88
+msgid "Save or copy your new password - and then"
+msgstr "Speichere oder kopiere Dein neues Passwort – und dann"
+
+#: ../../mod/lostpass.php:89
+msgid "click here to login"
+msgstr "Klicke hier, um dich anzumelden"
-#: ../../mod/invite.php:144
+#: ../../mod/lostpass.php:90
msgid ""
-"You are cordially invited to join me and some other close friends on the Red"
-" Matrix - a revolutionary new decentralised communication and information "
-"tool."
-msgstr "Du bist herzlich eingeladen, mir und einigen anderen guten Freunden in die Red-Matrix zu folgen – einem revolutionär neuen, dezentralen Kommunikations- und Informationsnetzwerk."
+"Your password may be changed from the <em>Settings</em> page after "
+"successful login."
+msgstr "Dein Passwort kann unter <em>Einstellungen</em> nach einer erfolgreichen Anmeldung geändert werden."
-#: ../../mod/invite.php:146
-msgid "You will need to supply this invitation code: $invite_code"
-msgstr "Du musst dann den folgenden Einladungs-Code angeben: $invite_code"
+#: ../../mod/lostpass.php:107
+#, php-format
+msgid "Your password has changed at %s"
+msgstr "Auf %s wurde Dein Passwort geändert"
-#: ../../mod/invite.php:147
-msgid "Please visit my channel at"
-msgstr "Bitte besuche meinen Kanal auf"
+#: ../../mod/lostpass.php:122
+msgid "Forgot your Password?"
+msgstr "Kennwort vergessen?"
-#: ../../mod/invite.php:151
+#: ../../mod/lostpass.php:123
msgid ""
-"Once you have registered (on ANY Red Matrix site - they are all inter-"
-"connected), please connect with my Red Matrix channel address:"
-msgstr "Wenn Du Dich registriert hast (egal auf welchem Server in der Red-Matrix, sie sind alle miteinander verbunden) verbinde Dich bitte mit meinem Kanal in der Matrix. Adresse:"
+"Enter your email address and submit to have your password reset. Then check "
+"your email for further instructions."
+msgstr "Gib Deine E-Mail-Adresse ein, um Dein Passwort zurücksetzen zu lassen. Du erhältst dann weitere Anweisungen per E-Mail."
-#: ../../mod/invite.php:153
-msgid "Click the [Register] link on the following page to join."
-msgstr "Klicke den [Registrieren]-Link auf der nächsten Seite, um dich anzumelden."
+#: ../../mod/lostpass.php:124
+msgid "Email Address"
+msgstr "E-Mail Adresse"
-#: ../../mod/invite.php:155
-msgid ""
-"For more information about the Red Matrix Project and why it has the "
-"potential to change the internet as we know it, please visit "
-"http://getzot.com"
-msgstr "Für weitere Informationen über das Red-Matrix-Projekt und warum es das Potential hat, das Internet, wie wir es kennen, grundlegend zu verändern, besuche http://getzot.com"
+#: ../../mod/lostpass.php:125
+msgid "Reset"
+msgstr "Zurücksetzen"
+
+#: ../../mod/bookmarks.php:38
+msgid "Bookmark added"
+msgstr "Lesezeichen hinzugefügt"
+
+#: ../../mod/bookmarks.php:60
+msgid "My Bookmarks"
+msgstr "Meine Lesezeichen"
+
+#: ../../mod/bookmarks.php:71
+msgid "My Connections Bookmarks"
+msgstr "Lesezeichen meiner Kontakte"
+
+#: ../../mod/dirsearch.php:21
+msgid "This site is not a directory server"
+msgstr "Diese Website ist kein Verzeichnis-Server"
-#: ../../mod/settings.php:71
+#: ../../mod/cloud.php:130
+msgid "RedMatrix - Guests: Username: {your email address}, Password: +++"
+msgstr "RedMatrix – Gäste: Username: {Deine E-Mail-Adresse}, Passwort: +++"
+
+#: ../../mod/ping.php:257
+msgid "sent you a private message"
+msgstr "eine private Nachricht schicken"
+
+#: ../../mod/ping.php:308
+msgid "added your channel"
+msgstr "hat deinen Kanal hinzugefügt"
+
+#: ../../mod/ping.php:349
+msgid "posted an event"
+msgstr "hat einen Termin veröffentlicht"
+
+#: ../../mod/editblock.php:79 ../../mod/editblock.php:95
+#: ../../mod/editlayout.php:78 ../../mod/editpost.php:20
+#: ../../mod/editwebpage.php:77
+msgid "Item not found"
+msgstr "Element nicht gefunden"
+
+#: ../../mod/editblock.php:115
+msgid "Edit Block"
+msgstr "Block bearbeiten"
+
+#: ../../mod/editblock.php:125
+msgid "Delete block?"
+msgstr "Block löschen?"
+
+#: ../../mod/editblock.php:147 ../../mod/editlayout.php:143
+#: ../../mod/editpost.php:116 ../../mod/editwebpage.php:178
+msgid "Insert YouTube video"
+msgstr "YouTube-Video einfügen"
+
+#: ../../mod/editblock.php:148 ../../mod/editlayout.php:144
+#: ../../mod/editpost.php:117 ../../mod/editwebpage.php:179
+msgid "Insert Vorbis [.ogg] video"
+msgstr "Vorbis [.ogg]-Video einfügen"
+
+#: ../../mod/editblock.php:149 ../../mod/editlayout.php:145
+#: ../../mod/editpost.php:118 ../../mod/editwebpage.php:180
+msgid "Insert Vorbis [.ogg] audio"
+msgstr "Vorbis [.ogg]-Audio einfügen"
+
+#: ../../mod/editblock.php:183
+msgid "Delete Block"
+msgstr "Block löschen"
+
+#: ../../mod/pdledit.php:13
+msgid "Layout updated."
+msgstr "Layout aktualisiert."
+
+#: ../../mod/pdledit.php:28 ../../mod/pdledit.php:53
+msgid "Edit System Page Description"
+msgstr "Systemseitenbeschreibung bearbeiten"
+
+#: ../../mod/pdledit.php:48
+msgid "Layout not found."
+msgstr "Layout nicht gefunden."
+
+#: ../../mod/pdledit.php:54
+msgid "Module Name:"
+msgstr "Modulname:"
+
+#: ../../mod/pdledit.php:55 ../../mod/layouts.php:107
+msgid "Layout Help"
+msgstr "Layout-Hilfe"
+
+#: ../../mod/editlayout.php:108
+msgid "Edit Layout"
+msgstr "Layout bearbeiten"
+
+#: ../../mod/editlayout.php:117
+msgid "Delete layout?"
+msgstr "Layout löschen?"
+
+#: ../../mod/editlayout.php:178
+msgid "Delete Layout"
+msgstr "Layout löschen"
+
+#: ../../mod/editpost.php:31
+msgid "Item is not editable"
+msgstr "Element kann nicht bearbeitet werden."
+
+#: ../../mod/editpost.php:53
+msgid "Delete item?"
+msgstr "Eintrag löschen?"
+
+#: ../../mod/settings.php:73
msgid "Name is required"
msgstr "Name ist erforderlich"
-#: ../../mod/settings.php:75
+#: ../../mod/settings.php:77
msgid "Key and Secret are required"
msgstr "Schlüssel und Geheimnis werden benötigt"
-#: ../../mod/settings.php:79 ../../mod/settings.php:542
-msgid "Update"
-msgstr "Aktualisieren"
-
-#: ../../mod/settings.php:195
+#: ../../mod/settings.php:197
msgid "Passwords do not match. Password unchanged."
msgstr "Kennwörter stimmen nicht überein. Kennwort nicht verändert."
-#: ../../mod/settings.php:199
+#: ../../mod/settings.php:201
msgid "Empty passwords are not allowed. Password unchanged."
msgstr "Leere Kennwörter sind nicht erlaubt. Kennwort nicht verändert."
-#: ../../mod/settings.php:212
+#: ../../mod/settings.php:215
msgid "Password changed."
msgstr "Kennwort geändert."
-#: ../../mod/settings.php:214
+#: ../../mod/settings.php:217
msgid "Password update failed. Please try again."
msgstr "Kennwortänderung fehlgeschlagen. Bitte versuche es noch einmal."
-#: ../../mod/settings.php:228
+#: ../../mod/settings.php:231
msgid "Not valid email."
msgstr "Keine gültige E-Mail Adresse."
-#: ../../mod/settings.php:231
+#: ../../mod/settings.php:234
msgid "Protected email address. Cannot change to that email."
msgstr "Geschützte E-Mail Adresse. Diese kann nicht verändert werden."
-#: ../../mod/settings.php:240
+#: ../../mod/settings.php:243
msgid "System failure storing new email. Please try again."
msgstr "Systemfehler während des Speicherns der neuen Mail. Bitte versuche es noch einmal."
-#: ../../mod/settings.php:444
+#: ../../mod/settings.php:479
msgid "Settings updated."
msgstr "Einstellungen aktualisiert."
-#: ../../mod/settings.php:515 ../../mod/settings.php:541
-#: ../../mod/settings.php:577
+#: ../../mod/settings.php:548 ../../mod/settings.php:574
+#: ../../mod/settings.php:610
msgid "Add application"
msgstr "Anwendung hinzufügen"
-#: ../../mod/settings.php:518 ../../mod/settings.php:544
-msgid "Name"
-msgstr "Name"
-
-#: ../../mod/settings.php:518
+#: ../../mod/settings.php:551
msgid "Name of application"
msgstr "Name der Anwendung"
-#: ../../mod/settings.php:519 ../../mod/settings.php:545
+#: ../../mod/settings.php:552 ../../mod/settings.php:578
msgid "Consumer Key"
msgstr "Consumer Key"
-#: ../../mod/settings.php:519 ../../mod/settings.php:520
+#: ../../mod/settings.php:552 ../../mod/settings.php:553
msgid "Automatically generated - change if desired. Max length 20"
msgstr "Automatisch erzeugt – ändern, falls erwünscht. Maximale Länge 20"
-#: ../../mod/settings.php:520 ../../mod/settings.php:546
+#: ../../mod/settings.php:553 ../../mod/settings.php:579
msgid "Consumer Secret"
msgstr "Consumer Secret"
-#: ../../mod/settings.php:521 ../../mod/settings.php:547
+#: ../../mod/settings.php:554 ../../mod/settings.php:580
msgid "Redirect"
msgstr "Umleitung"
-#: ../../mod/settings.php:521
+#: ../../mod/settings.php:554
msgid ""
"Redirect URI - leave blank unless your application specifically requires "
"this"
-msgstr "Umleitungs-URl – lasse das leer, wenn Deine Anwendung es nicht explizit erfordert"
+msgstr "Umleitungs-URl – lasse das leer, solange Deine Anwendung es nicht explizit erfordert"
-#: ../../mod/settings.php:522 ../../mod/settings.php:548
+#: ../../mod/settings.php:555 ../../mod/settings.php:581
msgid "Icon url"
msgstr "Symbol-URL"
-#: ../../mod/settings.php:522
+#: ../../mod/settings.php:555
msgid "Optional"
msgstr "Optional"
-#: ../../mod/settings.php:533
+#: ../../mod/settings.php:566
msgid "You can't edit this application."
msgstr "Diese Anwendung kann nicht bearbeitet werden."
-#: ../../mod/settings.php:576
+#: ../../mod/settings.php:609
msgid "Connected Apps"
msgstr "Verbundene Apps"
-#: ../../mod/settings.php:580
+#: ../../mod/settings.php:613
msgid "Client key starts with"
-msgstr "Client key beginnt mit"
+msgstr "Client Key beginnt mit"
-#: ../../mod/settings.php:581
+#: ../../mod/settings.php:614
msgid "No name"
msgstr "Kein Name"
-#: ../../mod/settings.php:582
+#: ../../mod/settings.php:615
msgid "Remove authorization"
msgstr "Authorisierung aufheben"
-#: ../../mod/settings.php:593
+#: ../../mod/settings.php:626
msgid "No feature settings configured"
msgstr "Keine Funktions-Einstellungen konfiguriert"
-#: ../../mod/settings.php:601
+#: ../../mod/settings.php:634
msgid "Feature Settings"
msgstr "Funktions-Einstellungen"
-#: ../../mod/settings.php:624
+#: ../../mod/settings.php:657
msgid "Account Settings"
msgstr "Konto-Einstellungen"
-#: ../../mod/settings.php:625
+#: ../../mod/settings.php:658
msgid "Password Settings"
msgstr "Kennwort-Einstellungen"
-#: ../../mod/settings.php:626
+#: ../../mod/settings.php:659
msgid "New Password:"
msgstr "Neues Passwort:"
-#: ../../mod/settings.php:627
+#: ../../mod/settings.php:660
msgid "Confirm:"
msgstr "Bestätigen:"
-#: ../../mod/settings.php:627
+#: ../../mod/settings.php:660
msgid "Leave password fields blank unless changing"
msgstr "Lasse die Passwort-Felder leer, außer Du möchtest das Passwort ändern"
-#: ../../mod/settings.php:629 ../../mod/settings.php:938
+#: ../../mod/settings.php:662 ../../mod/settings.php:985
msgid "Email Address:"
msgstr "Email Adresse:"
-#: ../../mod/settings.php:630
+#: ../../mod/settings.php:663 ../../mod/removeaccount.php:61
msgid "Remove Account"
msgstr "Konto entfernen"
-#: ../../mod/settings.php:631
+#: ../../mod/settings.php:664
+msgid "Remove this account from this server including all its channels"
+msgstr "Lösche dieses Konto einschließlich aller zugehörigen Kanäle von diesem Server"
+
+#: ../../mod/settings.php:665 ../../mod/settings.php:1067
msgid "Warning: This action is permanent and cannot be reversed."
msgstr "Achtung: Diese Aktion ist endgültig und kann nicht rückgängig gemacht werden."
-#: ../../mod/settings.php:647
+#: ../../mod/settings.php:681
msgid "Off"
msgstr "Aus"
-#: ../../mod/settings.php:647
+#: ../../mod/settings.php:681
msgid "On"
msgstr "An"
-#: ../../mod/settings.php:654
+#: ../../mod/settings.php:688
msgid "Additional Features"
msgstr "Zusätzliche Funktionen"
-#: ../../mod/settings.php:679
+#: ../../mod/settings.php:713
msgid "Connector Settings"
msgstr "Connector-Einstellungen"
-#: ../../mod/settings.php:709 ../../mod/admin.php:379
+#: ../../mod/settings.php:743
msgid "No special theme for mobile devices"
msgstr "Keine spezielle Theme für mobile Geräte"
-#: ../../mod/settings.php:750
+#: ../../mod/settings.php:752
+#, php-format
+msgid "%s - (Experimental)"
+msgstr "%s – (experimentell)"
+
+#: ../../mod/settings.php:788
msgid "Display Settings"
msgstr "Anzeige-Einstellungen"
-#: ../../mod/settings.php:756
+#: ../../mod/settings.php:794
msgid "Display Theme:"
msgstr "Anzeige-Theme:"
-#: ../../mod/settings.php:757
+#: ../../mod/settings.php:795
msgid "Mobile Theme:"
msgstr "Mobile Theme:"
-#: ../../mod/settings.php:758
+#: ../../mod/settings.php:796
+msgid "Enable user zoom on mobile devices"
+msgstr "Zoom auf Mobilgeräten aktivieren"
+
+#: ../../mod/settings.php:797
msgid "Update browser every xx seconds"
msgstr "Browser alle xx Sekunden aktualisieren"
-#: ../../mod/settings.php:758
+#: ../../mod/settings.php:797
msgid "Minimum of 10 seconds, no maximum"
msgstr "Minimum 10 Sekunden, kein Maximum"
-#: ../../mod/settings.php:759
+#: ../../mod/settings.php:798
msgid "Maximum number of conversations to load at any time:"
msgstr "Maximale Anzahl von Unterhaltungen, die auf einmal geladen werden sollen:"
-#: ../../mod/settings.php:759
+#: ../../mod/settings.php:798
msgid "Maximum of 100 items"
msgstr "Maximum: 100 Beiträge"
-#: ../../mod/settings.php:760
+#: ../../mod/settings.php:799
msgid "Don't show emoticons"
msgstr "Emoticons nicht zeigen"
-#: ../../mod/settings.php:761
-msgid "Do not view remote profiles in frames"
-msgstr "Profile/Kanäle direkt anzeigen"
+#: ../../mod/settings.php:800
+msgid "Link post titles to source"
+msgstr "Beitragstitel zum Originalbeitrag verlinken"
-#: ../../mod/settings.php:761
-msgid "By default open in a sub-window of your own site"
-msgstr "Wenn dieser Haken nicht gesetzt ist, werden Profile in einem Unterfenster auf Deinem eigenen Server angezeigt."
+#: ../../mod/settings.php:801
+msgid "System Page Layout Editor - (advanced)"
+msgstr "System-Seitenlayout-Editor (für Experten)"
-#: ../../mod/settings.php:796
+#: ../../mod/settings.php:835
msgid "Nobody except yourself"
msgstr "Niemand außer Dir selbst"
-#: ../../mod/settings.php:797
+#: ../../mod/settings.php:836
msgid "Only those you specifically allow"
msgstr "Nur die, denen Du es explizit erlaubst"
-#: ../../mod/settings.php:798
-msgid "Anybody in your address book"
-msgstr "Jeder aus Ihrem Adressbuch"
+#: ../../mod/settings.php:837
+msgid "Approved connections"
+msgstr "Angenommene Verbindungen"
-#: ../../mod/settings.php:799
+#: ../../mod/settings.php:838
+msgid "Any connections"
+msgstr "Beliebige Verbindungen"
+
+#: ../../mod/settings.php:839
msgid "Anybody on this website"
msgstr "Jeder auf dieser Website"
-#: ../../mod/settings.php:800
+#: ../../mod/settings.php:840
msgid "Anybody in this network"
-msgstr "Jeder in diesem Netzwerk"
+msgstr "Alle Red-Nutzer"
-#: ../../mod/settings.php:801
+#: ../../mod/settings.php:841
msgid "Anybody authenticated"
msgstr "Jeder authentifizierte"
-#: ../../mod/settings.php:802
+#: ../../mod/settings.php:842
msgid "Anybody on the internet"
msgstr "Jeder im Internet"
-#: ../../mod/settings.php:879
+#: ../../mod/settings.php:916
msgid "Publish your default profile in the network directory"
msgstr "Standard-Profil im Netzwerk-Verzeichnis veröffentlichen"
-#: ../../mod/settings.php:879 ../../mod/settings.php:884
-#: ../../mod/settings.php:955 ../../mod/api.php:106 ../../mod/profiles.php:484
-msgid "No"
-msgstr "Nein"
-
-#: ../../mod/settings.php:879 ../../mod/settings.php:884
-#: ../../mod/settings.php:955 ../../mod/api.php:105 ../../mod/profiles.php:483
-msgid "Yes"
-msgstr "Ja"
-
-#: ../../mod/settings.php:884
+#: ../../mod/settings.php:921
msgid "Allow us to suggest you as a potential friend to new members?"
msgstr "Dürfen wir Dich neuen Mitgliedern als potentiellen Kontakt vorschlagen?"
-#: ../../mod/settings.php:888 ../../mod/profile_photo.php:288
+#: ../../mod/settings.php:925 ../../mod/profile_photo.php:365
msgid "or"
msgstr "oder"
-#: ../../mod/settings.php:893
+#: ../../mod/settings.php:930
msgid "Your channel address is"
msgstr "Deine Kanal-Adresse lautet"
-#: ../../mod/settings.php:927
+#: ../../mod/settings.php:974
msgid "Channel Settings"
msgstr "Kanal-Einstellungen"
-#: ../../mod/settings.php:936
+#: ../../mod/settings.php:983
msgid "Basic Settings"
msgstr "Grundeinstellungen"
-#: ../../mod/settings.php:939
+#: ../../mod/settings.php:986
msgid "Your Timezone:"
msgstr "Ihre Zeitzone:"
-#: ../../mod/settings.php:940
+#: ../../mod/settings.php:987
msgid "Default Post Location:"
msgstr "Standardstandort:"
-#: ../../mod/settings.php:941
+#: ../../mod/settings.php:987
+msgid "Geographical location to display on your posts"
+msgstr "Geografischer Ort, der bei Deinen Beiträgen angezeigt werden soll"
+
+#: ../../mod/settings.php:988
msgid "Use Browser Location:"
msgstr "Standort des Browsers verwenden:"
-#: ../../mod/settings.php:943
+#: ../../mod/settings.php:990
msgid "Adult Content"
msgstr "Nicht jugendfreie Inhalte"
-#: ../../mod/settings.php:943
+#: ../../mod/settings.php:990
msgid ""
"This channel frequently or regularly publishes adult content. (Please tag "
"any adult material and/or nudity with #NSFW)"
msgstr "Dieser Kanal veröffentlicht regelmäßig Inhalte, die für Minderjährige ungeeignet sind. (Bitte markiere solche Inhalte mit dem Schlagwort #NSFW)"
-#: ../../mod/settings.php:945
+#: ../../mod/settings.php:992
msgid "Security and Privacy Settings"
msgstr "Sicherheits- und Datenschutz-Einstellungen"
-#: ../../mod/settings.php:947
+#: ../../mod/settings.php:994
+msgid "Your permissions are already configured. Click to view/adjust"
+msgstr "Deine Zugriffsrechte sind schon konfiguriert. Klicke hier, um sie zu betrachten oder zu ändern"
+
+#: ../../mod/settings.php:996
msgid "Hide my online presence"
msgstr "Meine Online-Präsenz verbergen"
-#: ../../mod/settings.php:947
+#: ../../mod/settings.php:996
msgid "Prevents displaying in your profile that you are online"
msgstr "Verhindert die Anzeige Deines Online-Status in deinem Profil"
-#: ../../mod/settings.php:949
+#: ../../mod/settings.php:998
msgid "Simple Privacy Settings:"
msgstr "Einfache Privatsphäre-Einstellungen"
-#: ../../mod/settings.php:950
+#: ../../mod/settings.php:999
msgid ""
"Very Public - <em>extremely permissive (should be used with caution)</em>"
msgstr "Komplett offen – <em>extrem ungeschützt (mit großer Vorsicht verwenden!)</em>"
-#: ../../mod/settings.php:951
+#: ../../mod/settings.php:1000
msgid ""
"Typical - <em>default public, privacy when desired (similar to social "
"network permissions but with improved privacy)</em>"
-msgstr "Typisch – <em>Default öffentlich, Privatsphäre, wo sie erwünscht ist (ähnlich den Einstellungen in sozialen Netzwerken, aber mit besser geschützter Privatsphäre)</em>"
+msgstr "Typisch – <em>Standard öffentlich, Privatsphäre, wo sie erwünscht ist (ähnlich den Einstellungen in sozialen Netzwerken, aber mit besser geschützter Privatsphäre)</em>"
-#: ../../mod/settings.php:952
+#: ../../mod/settings.php:1001
msgid "Private - <em>default private, never open or public</em>"
-msgstr "Private – <em>Default privat, nie offen oder öffentlich</em>"
+msgstr "Privat – <em>Standard privat, nie offen oder öffentlich</em>"
-#: ../../mod/settings.php:953
+#: ../../mod/settings.php:1002
msgid "Blocked - <em>default blocked to/from everybody</em>"
-msgstr "Blockiert – <em>Alle per Default blockiert</em>"
+msgstr "Blockiert – <em>Alle standardmäßig blockiert</em>"
-#: ../../mod/settings.php:955
+#: ../../mod/settings.php:1004
msgid "Allow others to tag your posts"
-msgstr "Erlaube anderen deine Beiträge mit Schlagwörtern zu versehen"
+msgstr "Erlaube anderen, Deine Beiträge zu verschlagworten"
-#: ../../mod/settings.php:955
+#: ../../mod/settings.php:1004
msgid ""
"Often used by the community to retro-actively flag inappropriate content"
-msgstr ""
+msgstr "Wird oft von der Community genutzt um rückwirkend anstößigen Inhalt zu markieren"
-#: ../../mod/settings.php:957
+#: ../../mod/settings.php:1006
msgid "Advanced Privacy Settings"
msgstr "Fortgeschrittene Privatsphäre-Einstellungen"
-#: ../../mod/settings.php:959
+#: ../../mod/settings.php:1008
+msgid "Expire other channel content after this many days"
+msgstr "Den Inhalt anderer Kanäle nach dieser Anzahl Tage verfallen lassen"
+
+#: ../../mod/settings.php:1008
+msgid "0 or blank prevents expiration"
+msgstr "0 oder kein Inhalt verhindern das Verfallen"
+
+#: ../../mod/settings.php:1009
msgid "Maximum Friend Requests/Day:"
msgstr "Maximale Kontaktanfragen pro Tag:"
-#: ../../mod/settings.php:959
+#: ../../mod/settings.php:1009
msgid "May reduce spam activity"
msgstr "Kann die Spam-Aktivität verringern"
-#: ../../mod/settings.php:960
+#: ../../mod/settings.php:1010
msgid "Default Post Permissions"
msgstr "Standardeinstellungen für Beitrags-Zugriffsrechte"
-#: ../../mod/settings.php:961 ../../mod/mitem.php:134 ../../mod/mitem.php:177
-msgid "(click to open/close)"
-msgstr "(zum öffnen/schließen anklicken)"
+#: ../../mod/settings.php:1015
+msgid "Channel permissions category:"
+msgstr "Zugriffsrechte-Kategorie des Kanals:"
-#: ../../mod/settings.php:972
+#: ../../mod/settings.php:1023
msgid "Maximum private messages per day from unknown people:"
msgstr "Maximale Anzahl privater Nachrichten pro Tag von unbekannten Leuten:"
-#: ../../mod/settings.php:972
+#: ../../mod/settings.php:1023
msgid "Useful to reduce spamming"
msgstr "Nützlich, um Spam zu verringern"
-#: ../../mod/settings.php:975
+#: ../../mod/settings.php:1026
msgid "Notification Settings"
msgstr "Benachrichtigungs-Einstellungen"
-#: ../../mod/settings.php:976
+#: ../../mod/settings.php:1027
msgid "By default post a status message when:"
msgstr "Sende standardmäßig Status-Nachrichten, wenn:"
-#: ../../mod/settings.php:977
+#: ../../mod/settings.php:1028
msgid "accepting a friend request"
-msgstr "Du eine Kontaktanfrage annimmst"
+msgstr "Du eine Verbindungsanfrage annimmst"
-#: ../../mod/settings.php:978
+#: ../../mod/settings.php:1029
msgid "joining a forum/community"
msgstr "Du einem Forum beitrittst"
-#: ../../mod/settings.php:979
+#: ../../mod/settings.php:1030
msgid "making an <em>interesting</em> profile change"
msgstr "Du eine <em>interessante</em> Änderung an Deinem Profil vornimmst"
-#: ../../mod/settings.php:980
+#: ../../mod/settings.php:1031
msgid "Send a notification email when:"
msgstr "Eine E-Mail-Benachrichtigung senden, wenn:"
-#: ../../mod/settings.php:981
-msgid "You receive an introduction"
-msgstr "Du eine Vorstellung erhältst"
+#: ../../mod/settings.php:1032
+msgid "You receive a connection request"
+msgstr "Du eine Verbindungsanfrage erhältst"
-#: ../../mod/settings.php:982
-msgid "Your introductions are confirmed"
-msgstr "Deine Vorstellung bestätigt wurde."
+#: ../../mod/settings.php:1033
+msgid "Your connections are confirmed"
+msgstr "Eine Verbindung bestätigt wurde"
-#: ../../mod/settings.php:983
+#: ../../mod/settings.php:1034
msgid "Someone writes on your profile wall"
msgstr "Jemand auf Deine Pinnwand schreibt"
-#: ../../mod/settings.php:984
+#: ../../mod/settings.php:1035
msgid "Someone writes a followup comment"
msgstr "Jemand einen Beitrag kommentiert"
-#: ../../mod/settings.php:985
+#: ../../mod/settings.php:1036
msgid "You receive a private message"
msgstr "Du eine private Nachricht erhältst"
-#: ../../mod/settings.php:986
+#: ../../mod/settings.php:1037
msgid "You receive a friend suggestion"
msgstr "Du einen Kontaktvorschlag erhältst"
-#: ../../mod/settings.php:987
+#: ../../mod/settings.php:1038
msgid "You are tagged in a post"
msgstr "Du in einem Beitrag erwähnt wurdest"
-#: ../../mod/settings.php:988
+#: ../../mod/settings.php:1039
msgid "You are poked/prodded/etc. in a post"
msgstr "Du in einem Beitrag angestupst/geknufft/o.ä. wurdest"
-#: ../../mod/settings.php:991
-msgid "Advanced Account/Page Type Settings"
-msgstr "Erweiterte Account- und Seitenart-Einstellungen"
+#: ../../mod/settings.php:1042
+msgid "Show visual notifications including:"
+msgstr "Visuelle Benachrichtigungen anzeigen für:"
-#: ../../mod/settings.php:992
-msgid "Change the behaviour of this account for special situations"
-msgstr "Ändere das Verhalten dieses Accounts unter speziellen Umständen"
+#: ../../mod/settings.php:1044
+msgid "Unseen matrix activity"
+msgstr "Ungesehene Matrix-Aktivität"
-#: ../../mod/settings.php:995
-msgid ""
-"Please enable expert mode (in <a href=\"settings/features\">Settings > "
-"Additional features</a>) to adjust!"
-msgstr "Aktiviere den Expertenmodus (unter <a href=\"settings/features\">Settings > Zusätzliche Funktionen</a>), um hier Einstellungen vorzunehmen!"
+#: ../../mod/settings.php:1045
+msgid "Unseen channel activity"
+msgstr "Ungesehene Kanal-Aktivität"
-#: ../../mod/settings.php:996
-msgid "Miscellaneous Settings"
-msgstr ""
+#: ../../mod/settings.php:1046
+msgid "Unseen private messages"
+msgstr "Ungelesene persönliche Nachrichten"
-#: ../../mod/settings.php:998
-msgid "Personal menu to display in your channel pages"
-msgstr "Persönliches Menü zur Anzeige auf den Seiten deines Kanals"
+#: ../../mod/settings.php:1046 ../../mod/settings.php:1051
+#: ../../mod/settings.php:1052 ../../mod/settings.php:1053
+msgid "Recommended"
+msgstr "Empfohlen"
-#: ../../mod/menu.php:21
-msgid "Menu updated."
-msgstr "Menü aktualisiert."
+#: ../../mod/settings.php:1047
+msgid "Upcoming events"
+msgstr "Baldige Termine"
-#: ../../mod/menu.php:25
-msgid "Unable to update menu."
-msgstr "Kann Menü nicht aktualisieren."
+#: ../../mod/settings.php:1048
+msgid "Events today"
+msgstr "Heutige Termine"
-#: ../../mod/menu.php:30
-msgid "Menu created."
-msgstr "Menü erstellt."
+#: ../../mod/settings.php:1049
+msgid "Upcoming birthdays"
+msgstr "Baldige Geburtstage"
-#: ../../mod/menu.php:34
-msgid "Unable to create menu."
-msgstr "Kann Menü nicht erstellen."
+#: ../../mod/settings.php:1049
+msgid "Not available in all themes"
+msgstr "Nicht in allen Themes verfügbar"
-#: ../../mod/menu.php:57
-msgid "Manage Menus"
-msgstr "Menüs verwalten"
+#: ../../mod/settings.php:1050
+msgid "System (personal) notifications"
+msgstr "System – (persönliche) Benachrichtigungen"
-#: ../../mod/menu.php:60
-msgid "Drop"
-msgstr "Löschen"
-
-#: ../../mod/menu.php:62
-msgid "Create a new menu"
-msgstr "Neues Menü erstellen"
-
-#: ../../mod/menu.php:63
-msgid "Delete this menu"
-msgstr "Lösche dieses Menü"
-
-#: ../../mod/menu.php:64 ../../mod/menu.php:109
-msgid "Edit menu contents"
-msgstr "Bearbeite Menü Inhalte"
+#: ../../mod/settings.php:1051
+msgid "System info messages"
+msgstr "System – Info-Nachrichten"
-#: ../../mod/menu.php:65
-msgid "Edit this menu"
-msgstr "Dieses Menü bearbeiten"
+#: ../../mod/settings.php:1052
+msgid "System critical alerts"
+msgstr "System – kritische Warnungen"
-#: ../../mod/menu.php:80
-msgid "New Menu"
-msgstr "Neues Menü"
+#: ../../mod/settings.php:1053
+msgid "New connections"
+msgstr "Neue Verbindungen"
-#: ../../mod/menu.php:81 ../../mod/menu.php:110
-msgid "Menu name"
-msgstr "Menü Name"
+#: ../../mod/settings.php:1054
+msgid "System Registrations"
+msgstr "System – Registrierungen"
-#: ../../mod/menu.php:81 ../../mod/menu.php:110
-msgid "Must be unique, only seen by you"
-msgstr "Muss eindeutig sein, ist aber nur für Dich sichtbar"
+#: ../../mod/settings.php:1056
+msgid "Notify me of events this many days in advance"
+msgstr "Benachrichtige mich zu Terminen so viele Tage im Voraus"
-#: ../../mod/menu.php:82 ../../mod/menu.php:111
-msgid "Menu title"
-msgstr "Menü Titel"
+#: ../../mod/settings.php:1056
+msgid "Must be greater than 0"
+msgstr "Muss größer als 0 sein"
-#: ../../mod/menu.php:82 ../../mod/menu.php:111
-msgid "Menu title as seen by others"
-msgstr "Menü Titel wie er von anderen gesehen wird"
+#: ../../mod/settings.php:1058
+msgid "Advanced Account/Page Type Settings"
+msgstr "Erweiterte Account- und Seitenart-Einstellungen"
-#: ../../mod/menu.php:83 ../../mod/menu.php:112
-msgid "Allow bookmarks"
-msgstr "Erlaube Lesezeichen"
+#: ../../mod/settings.php:1059
+msgid "Change the behaviour of this account for special situations"
+msgstr "Ändere das Verhalten dieses Accounts unter speziellen Umständen"
-#: ../../mod/menu.php:83 ../../mod/menu.php:112
-msgid "Menu may be used to store saved bookmarks"
-msgstr "Im Menü können gespeicherte Lesezeichen abgelegt werden"
+#: ../../mod/settings.php:1062
+msgid ""
+"Please enable expert mode (in <a href=\"settings/features\">Settings > "
+"Additional features</a>) to adjust!"
+msgstr "Aktiviere den Expertenmodus (unter <a href=\"settings/features\">Settings > Zusätzliche Funktionen</a>), um hier Einstellungen vorzunehmen!"
-#: ../../mod/menu.php:84 ../../mod/mitem.php:142 ../../mod/new_channel.php:117
-msgid "Create"
-msgstr "Erstelle"
+#: ../../mod/settings.php:1063
+msgid "Miscellaneous Settings"
+msgstr "Sonstige Einstellungen"
-#: ../../mod/menu.php:92 ../../mod/mitem.php:14
-msgid "Menu not found."
-msgstr "Menü nicht gefunden"
+#: ../../mod/settings.php:1065
+msgid "Personal menu to display in your channel pages"
+msgstr "Eigenes Menü zur Anzeige auf den Seiten deines Kanals"
-#: ../../mod/menu.php:98
-msgid "Menu deleted."
-msgstr "Menü gelöscht."
+#: ../../mod/settings.php:1066
+msgid "Remove this channel"
+msgstr "Diesen Kanal löschen"
-#: ../../mod/menu.php:100
-msgid "Menu could not be deleted."
-msgstr "Menü konnte nicht gelöscht werden."
+#: ../../mod/editwebpage.php:140
+msgid "Edit Webpage"
+msgstr "Webseite bearbeiten"
-#: ../../mod/menu.php:106
-msgid "Edit Menu"
-msgstr "Menü bearbeiten"
+#: ../../mod/editwebpage.php:150
+msgid "Delete webpage?"
+msgstr "Webseite löschen?"
-#: ../../mod/menu.php:108
-msgid "Add or remove entries to this menu"
-msgstr "Einträge zu diesem Menü hinzufügen oder entfernen"
+#: ../../mod/editwebpage.php:215
+msgid "Delete Webpage"
+msgstr "Webseite löschen"
-#: ../../mod/menu.php:114 ../../mod/mitem.php:186
-msgid "Modify"
-msgstr "Ändern"
+#: ../../mod/impel.php:33
+msgid "webpage"
+msgstr "Webseite"
-#: ../../mod/menu.php:120 ../../mod/mitem.php:78 ../../mod/xchan.php:27
-#: ../../mod/dirprofile.php:181
-msgid "Not found."
-msgstr "Nicht gefunden."
+#: ../../mod/impel.php:38
+msgid "block"
+msgstr "Block"
-#: ../../mod/webpages.php:121 ../../mod/layouts.php:105
-#: ../../mod/blocks.php:96
-msgid "View"
-msgstr "Ansicht"
+#: ../../mod/impel.php:43
+msgid "layout"
+msgstr "Layout"
-#: ../../mod/api.php:76 ../../mod/api.php:102
-msgid "Authorize application connection"
-msgstr "Zugriff für die Anwendung autorisieren"
+#: ../../mod/impel.php:117
+#, php-format
+msgid "%s element installed"
+msgstr "Element für %s installiert"
-#: ../../mod/api.php:77
-msgid "Return to your app and insert this Securty Code:"
-msgstr "Trage folgenden Sicherheitscode in der Anwendung ein:"
+#: ../../mod/profile_photo.php:108
+msgid "Image uploaded but image cropping failed."
+msgstr "Bild hochgeladen, aber das Zurechtschneiden schlug fehl."
-#: ../../mod/api.php:89
-msgid "Please login to continue."
-msgstr "Zum Weitermachen, bitte einloggen."
+#: ../../mod/profile_photo.php:161
+msgid "Image resize failed."
+msgstr "Bild-Anpassung fehlgeschlagen."
-#: ../../mod/api.php:104
+#: ../../mod/profile_photo.php:205
msgid ""
-"Do you want to authorize this application to access your posts and contacts,"
-" and/or create new posts for you?"
-msgstr "Möchtest Du dieser Anwendung erlauben, Deine Nachrichten und Kontakte abzurufen und/oder neue Nachrichten für Dich zu erstellen?"
-
-#: ../../mod/apps.php:8
-msgid "No installed applications."
-msgstr "Keine installierten Anwendungen."
-
-#: ../../mod/apps.php:13
-msgid "Applications"
-msgstr "Anwendungen"
-
-#: ../../mod/rpost.php:86 ../../mod/editpost.php:42
-msgid "Edit post"
-msgstr "Bearbeite Beitrag"
-
-#: ../../mod/cloud.php:112
-msgid "Red Matrix - Guests: Username: {your email address}, Password: +++"
-msgstr "Red-Matrix-Gäste: Nutzername: {Deine E-Mail-Adresse}; Passwort: +++"
-
-#: ../../mod/bookmarks.php:38
-msgid "Bookmark added"
-msgstr "Lesezeichen hinzugefügt"
-
-#: ../../mod/bookmarks.php:53
-msgid "My Bookmarks"
-msgstr "Meine Lesezeichen"
-
-#: ../../mod/bookmarks.php:64
-msgid "My Connections Bookmarks"
-msgstr "Lesezeichen meiner Kontakte"
-
-#: ../../mod/item.php:145
-msgid "Unable to locate original post."
-msgstr "Originalbeitrag nicht gefunden."
-
-#: ../../mod/item.php:346
-msgid "Empty post discarded."
-msgstr "Leeren Beitrag verworfen."
-
-#: ../../mod/item.php:388
-msgid "Executable content type not permitted to this channel."
-msgstr "Ausführbarer Content-Typ ist für diesen Kanal nicht freigegeben."
-
-#: ../../mod/item.php:845
-msgid "System error. Post not saved."
-msgstr "Systemfehler. Beitrag nicht gespeichert."
-
-#: ../../mod/item.php:1112 ../../mod/wall_upload.php:34
-msgid "Wall Photos"
-msgstr "Wall Fotos"
+"Shift-reload the page or clear browser cache if the new photo does not "
+"display immediately."
+msgstr "Leere den Browser Cache oder nutze Umschalten-Neu Laden, falls das neue Foto nicht sofort angezeigt wird."
-#: ../../mod/item.php:1192
+#: ../../mod/profile_photo.php:232
#, php-format
-msgid "You have reached your limit of %1$.0f top level posts."
-msgstr "Du hast die maximale Anzahl von %1$.0f Beiträgen erreicht."
+msgid "Image exceeds size limit of %d"
+msgstr "Bild ist größer als das Limit von %d"
-#: ../../mod/item.php:1198
-#, php-format
-msgid "You have reached your limit of %1$.0f webpages."
-msgstr "Du hast die maximale Anzahl von %1$.0f Webseiten erreicht."
+#: ../../mod/profile_photo.php:241
+msgid "Unable to process image."
+msgstr "Kann Bild nicht verarbeiten."
-#: ../../mod/subthread.php:105
-#, php-format
-msgid "%1$s is following %2$s's %3$s"
-msgstr "%1$s folgt nun %2$ss %3$s"
+#: ../../mod/profile_photo.php:290 ../../mod/profile_photo.php:339
+msgid "Photo not available."
+msgstr "Foto nicht verfügbar."
-#: ../../mod/update_network.php:23 ../../mod/update_channel.php:43
-#: ../../mod/update_search.php:46 ../../mod/update_display.php:25
-#: ../../mod/update_community.php:18
-msgid "[Embedded content - reload page to view]"
-msgstr "[Eingebettete Inhalte – lade die Seite neu, um sie anzuzeigen]"
+#: ../../mod/profile_photo.php:358
+msgid "Upload File:"
+msgstr "Datei hochladen:"
-#: ../../mod/chanview.php:77 ../../mod/home.php:50 ../../mod/page.php:47
-#: ../../mod/wall_upload.php:28
-msgid "Channel not found."
-msgstr "Kanal nicht gefunden."
+#: ../../mod/profile_photo.php:359
+msgid "Select a profile:"
+msgstr "Wähle ein Profil:"
-#: ../../mod/chanview.php:93
-msgid "toggle full screen mode"
-msgstr "auf Vollbildmodus umschalten"
+#: ../../mod/profile_photo.php:360
+msgid "Upload Profile Photo"
+msgstr "Lade neues Profilfoto hoch"
-#: ../../mod/tagger.php:98
-#, php-format
-msgid "%1$s tagged %2$s's %3$s with %4$s"
-msgstr "%1$s hat %2$ss %3$s mit %4$s verschlagwortet"
+#: ../../mod/profile_photo.php:365
+msgid "skip this step"
+msgstr "diesen Schritt überspringen"
-#: ../../mod/chat.php:18 ../../mod/channel.php:25
-msgid "You must be logged in to see this page."
-msgstr "Du musst angemeldet sein, um diese Seite betrachten zu können."
+#: ../../mod/profile_photo.php:365
+msgid "select a photo from your photo albums"
+msgstr "ein Foto aus meinen Fotoalben"
-#: ../../mod/chat.php:163
-msgid "Leave Room"
-msgstr "Raum verlassen"
+#: ../../mod/profile_photo.php:381
+msgid "Crop Image"
+msgstr "Bild zuschneiden"
-#: ../../mod/chat.php:164
-msgid "I am away right now"
-msgstr "Ich bin gerade nicht da"
+#: ../../mod/profile_photo.php:382
+msgid "Please adjust the image cropping for optimum viewing."
+msgstr "Bitte schneide das Bild für eine optimale Anzeige passend zu."
-#: ../../mod/chat.php:165
-msgid "I am online"
-msgstr "Ich bin online"
+#: ../../mod/profile_photo.php:384
+msgid "Done Editing"
+msgstr "Bearbeitung fertigstellen"
-#: ../../mod/chat.php:189 ../../mod/chat.php:209
-msgid "New Chatroom"
-msgstr "Neuer Chatraum"
+#: ../../mod/profile_photo.php:427
+msgid "Image uploaded successfully."
+msgstr "Bild erfolgreich hochgeladen."
-#: ../../mod/chat.php:190
-msgid "Chatroom Name"
-msgstr "Name des Chatraums"
+#: ../../mod/profile_photo.php:429
+msgid "Image upload failed."
+msgstr "Hochladen des Bilds fehlgeschlagen."
-#: ../../mod/chat.php:205
+#: ../../mod/profile_photo.php:438
#, php-format
-msgid "%1$s's Chatrooms"
-msgstr "%1$ss Chaträume"
-
-#: ../../mod/viewconnections.php:17 ../../mod/search.php:13
-#: ../../mod/directory.php:15 ../../mod/display.php:9
-#: ../../mod/community.php:18 ../../mod/dirprofile.php:9
-#: ../../mod/photos.php:443
-msgid "Public access denied."
-msgstr "Öffentlicher Zugang verweigert."
+msgid "Image size reduction [%s] failed."
+msgstr "Reduzierung der Bildgröße [%s] fehlgeschlagen."
-#: ../../mod/viewconnections.php:43
-msgid "No connections."
-msgstr "Keine Verbindungen."
+#: ../../mod/fsuggest.php:20 ../../mod/fsuggest.php:92
+msgid "Contact not found."
+msgstr "Kontakt nicht gefunden"
-#: ../../mod/viewconnections.php:55
-#, php-format
-msgid "Visit %s's profile [%s]"
-msgstr "%ss Profil [%s] besuchen"
+#: ../../mod/fsuggest.php:63
+msgid "Friend suggestion sent."
+msgstr "Freundschaftsempfehlung senden."
-#: ../../mod/viewconnections.php:70
-msgid "View Connnections"
-msgstr "Zeige Verbindungen"
+#: ../../mod/fsuggest.php:97
+msgid "Suggest Friends"
+msgstr "Kontakte vorschlagen"
-#: ../../mod/tagrm.php:41
-msgid "Tag removed"
-msgstr "Schlagwort entfernt"
+#: ../../mod/fsuggest.php:99
+#, php-format
+msgid "Suggest a friend for %s"
+msgstr "Schlage %s einen Kontakt vor"
-#: ../../mod/tagrm.php:79
-msgid "Remove Item Tag"
-msgstr "Schlagwort entfernen"
+#: ../../mod/filestorage.php:76
+msgid "Permission Denied."
+msgstr "Zugriff verweigert."
-#: ../../mod/tagrm.php:81
-msgid "Select a tag to remove: "
-msgstr "Schlagwort zum Entfernen auswählen:"
+#: ../../mod/filestorage.php:92
+msgid "File not found."
+msgstr "Datei nicht gefunden."
-#: ../../mod/tagrm.php:93 ../../mod/delegate.php:130 ../../mod/photos.php:909
-msgid "Remove"
-msgstr "Entferne"
+#: ../../mod/filestorage.php:131
+msgid "Edit file permissions"
+msgstr "Dateiberechtigungen bearbeiten"
-#: ../../mod/connect.php:55 ../../mod/connect.php:103
-msgid "Continue"
-msgstr "Fortfahren"
+#: ../../mod/filestorage.php:140
+msgid "Set/edit permissions"
+msgstr "Berechtigungen setzen/ändern"
-#: ../../mod/connect.php:84
-msgid "Premium Channel Setup"
-msgstr "Premium-Kanal-Einrichtung"
+#: ../../mod/filestorage.php:141
+msgid "Include all files and sub folders"
+msgstr "Alle Dateien und Unterverzeichnisse einbinden"
-#: ../../mod/connect.php:86
-msgid "Enable premium channel connection restrictions"
-msgstr "Einschränkungen für einen Premium-Kanal aktivieren"
+#: ../../mod/filestorage.php:142
+msgid "Return to file list"
+msgstr "Zurück zur Dateiliste"
-#: ../../mod/connect.php:87
-msgid ""
-"Please enter your restrictions or conditions, such as paypal receipt, usage "
-"guidelines, etc."
-msgstr "Bitte gib Deine Nutzungsbedingungen ein, z.B. Paypal-Quittung, Richtlinien etc."
+#: ../../mod/filestorage.php:144
+msgid "Copy/paste this code to attach file to a post"
+msgstr "Diesen Code kopieren und einfügen, um die Datei an einen Beitrag anzuhängen"
-#: ../../mod/connect.php:89 ../../mod/connect.php:109
-msgid ""
-"This channel may require additional steps or acknowledgement of the "
-"following conditions prior to connecting:"
-msgstr "Unter Umständen sind weitere Schritte oder die Bestätigung der folgenden Bedingungen vor dem Verbinden mit diesem Kanal nötig."
+#: ../../mod/filestorage.php:145
+msgid "Copy/paste this URL to link file from a web page"
+msgstr "Diese URL verwenden, um von einer Webseite aus auf die Datei zu verlinken"
-#: ../../mod/connect.php:90
-msgid ""
-"Potential connections will then see the following text before proceeding:"
-msgstr "Potentielle Kontakte werden den folgenden Text sehen, bevor fortgefahren wird:"
+#: ../../mod/help.php:41 ../../mod/help.php:47 ../../mod/help.php:53
+msgid "Help:"
+msgstr "Hilfe:"
-#: ../../mod/connect.php:91 ../../mod/connect.php:112
-msgid ""
-"By continuing, I certify that I have complied with any instructions provided"
-" on this page."
-msgstr "Indem ich fortfahre, bestätige ich die Erfüllung aller Anweisungen aus dieser Seite."
+#: ../../mod/help.php:67 ../../index.php:238
+msgid "Not Found"
+msgstr "Nicht gefunden"
-#: ../../mod/connect.php:100
-msgid "(No specific instructions have been provided by the channel owner.)"
-msgstr "(Der Kanal-Besitzer hat keine speziellen Anweisungen hinterlegt.)"
+#: ../../mod/acl.php:245
+msgid "network"
+msgstr "Netzwerk"
-#: ../../mod/connect.php:108
-msgid "Restricted or Premium Channel"
-msgstr "Eingeschränkter oder Premium-Kanal"
+#: ../../mod/follow.php:25
+msgid "Channel added."
+msgstr "Kanal hinzugefügt."
#: ../../mod/delegate.php:95
msgid "No potential page delegates located."
@@ -4207,138 +6642,6 @@ msgstr "Hinzufügen"
msgid "No entries."
msgstr "Keine Einträge."
-#: ../../mod/chatsvc.php:102
-msgid "Away"
-msgstr "Abwesend"
-
-#: ../../mod/chatsvc.php:106
-msgid "Online"
-msgstr "Online"
-
-#: ../../mod/attach.php:9
-msgid "Item not available."
-msgstr "Element nicht verfügbar."
-
-#: ../../mod/mitem.php:47
-msgid "Menu element updated."
-msgstr "Menü-Element aktualisiert."
-
-#: ../../mod/mitem.php:51
-msgid "Unable to update menu element."
-msgstr "Kann Menü-Element nicht aktualisieren."
-
-#: ../../mod/mitem.php:57
-msgid "Menu element added."
-msgstr "Menü-Bestandteil hinzugefügt."
-
-#: ../../mod/mitem.php:61
-msgid "Unable to add menu element."
-msgstr "Kann Menü-Bestandteil nicht hinzufügen."
-
-#: ../../mod/mitem.php:96
-msgid "Manage Menu Elements"
-msgstr "Menü-Bestandteile verwalten"
-
-#: ../../mod/mitem.php:99
-msgid "Edit menu"
-msgstr "Menü bearbeiten"
-
-#: ../../mod/mitem.php:102
-msgid "Edit element"
-msgstr "Bestandteil bearbeiten"
-
-#: ../../mod/mitem.php:103
-msgid "Drop element"
-msgstr "Bestandteil löschen"
-
-#: ../../mod/mitem.php:104
-msgid "New element"
-msgstr "Neues Bestandteil"
-
-#: ../../mod/mitem.php:105
-msgid "Edit this menu container"
-msgstr "Diesen Menü-Container bearbeiten"
-
-#: ../../mod/mitem.php:106
-msgid "Add menu element"
-msgstr "Menüelement hinzufügen"
-
-#: ../../mod/mitem.php:107
-msgid "Delete this menu item"
-msgstr "Lösche dieses Menü-Bestandteil"
-
-#: ../../mod/mitem.php:108
-msgid "Edit this menu item"
-msgstr "Bearbeite dieses Menü-Bestandteil"
-
-#: ../../mod/mitem.php:131
-msgid "New Menu Element"
-msgstr "Neues Menü-Bestandteil"
-
-#: ../../mod/mitem.php:133 ../../mod/mitem.php:176
-msgid "Menu Item Permissions"
-msgstr "Zugriffsrechte des Menü-Elements"
-
-#: ../../mod/mitem.php:136 ../../mod/mitem.php:180
-msgid "Link text"
-msgstr "Link Text"
-
-#: ../../mod/mitem.php:137 ../../mod/mitem.php:181
-msgid "URL of link"
-msgstr "URL des Links"
-
-#: ../../mod/mitem.php:138 ../../mod/mitem.php:182
-msgid "Use Red magic-auth if available"
-msgstr "Verwende Red Magic-Auth wenn verfügbar"
-
-#: ../../mod/mitem.php:139 ../../mod/mitem.php:183
-msgid "Open link in new window"
-msgstr "Öffne Link in neuem Fenster"
-
-#: ../../mod/mitem.php:141 ../../mod/mitem.php:185
-msgid "Order in list"
-msgstr "Reihenfolge in der Liste"
-
-#: ../../mod/mitem.php:141 ../../mod/mitem.php:185
-msgid "Higher numbers will sink to bottom of listing"
-msgstr "Größere Nummern werden weiter unten in der Auflistung einsortiert"
-
-#: ../../mod/mitem.php:154
-msgid "Menu item not found."
-msgstr "Menü-Bestandteil nicht gefunden."
-
-#: ../../mod/mitem.php:163
-msgid "Menu item deleted."
-msgstr "Menü-Bestandteil gelöscht."
-
-#: ../../mod/mitem.php:165
-msgid "Menu item could not be deleted."
-msgstr "Menü-Bestandteil kann nicht gelöscht werden."
-
-#: ../../mod/mitem.php:174
-msgid "Edit Menu Element"
-msgstr "Bearbeite Menü-Bestandteil"
-
-#: ../../mod/profperm.php:29 ../../mod/profperm.php:58
-msgid "Invalid profile identifier."
-msgstr "Ungültiger Profil-Identifikator"
-
-#: ../../mod/profperm.php:105
-msgid "Profile Visibility Editor"
-msgstr "Profil-Sichtbarkeits-Editor"
-
-#: ../../mod/profperm.php:109
-msgid "Click on a contact to add or remove."
-msgstr "Klicke auf einen Kontakt, um ihn hinzuzufügen oder zu entfernen."
-
-#: ../../mod/profperm.php:118
-msgid "Visible To"
-msgstr "Sichtbar für"
-
-#: ../../mod/profperm.php:134 ../../mod/connections.php:250
-msgid "All Connections"
-msgstr "Alle Verbindungen"
-
#: ../../mod/group.php:20
msgid "Collection created."
msgstr "Sammlung erstellt."
@@ -4383,1962 +6686,961 @@ msgstr "Mitglieder"
msgid "All Connected Channels"
msgstr "Alle verbundenen Kanäle"
-#: ../../mod/group.php:231
+#: ../../mod/group.php:233
msgid "Click on a channel to add or remove."
msgstr "Wähle einen Kanal zum hinzufügen oder entfernen aus."
-#: ../../mod/admin.php:48
+#: ../../mod/suggest.php:35
+msgid ""
+"No suggestions available. If this is a new site, please try again in 24 "
+"hours."
+msgstr "Keine Vorschläge vorhanden. Wenn das ein neuer Server ist, versuche es in 24 Stunden noch einmal."
+
+#: ../../mod/import.php:25
+#, php-format
+msgid "Your service plan only allows %d channels."
+msgstr "Dein Vertrag erlaubt nur %d Kanäle."
+
+#: ../../mod/import.php:51
+msgid "Nothing to import."
+msgstr "Nichts zu importieren."
+
+#: ../../mod/import.php:75
+msgid "Unable to download data from old server"
+msgstr "Daten können vom alten Server nicht heruntergeladen werden"
+
+#: ../../mod/import.php:81
+msgid "Imported file is empty."
+msgstr "Die importierte Datei ist leer."
+
+#: ../../mod/import.php:105
+msgid ""
+"Cannot create a duplicate channel identifier on this system. Import failed."
+msgstr "Kann keinen doppelten Kanal-Identifikator auf diesem System erzeugen (Spitzname oder Hash schon belegt). Import fehlgeschlagen."
+
+#: ../../mod/import.php:123
+msgid "Channel clone failed. Import failed."
+msgstr "Klonen des Kanals fehlgeschlagen. Import fehlgeschlagen."
+
+#: ../../mod/import.php:133
+msgid "Cloned channel not found. Import failed."
+msgstr "Geklonter Kanal nicht gefunden. Import fehlgeschlagen."
+
+#: ../../mod/import.php:451
+msgid "Import completed."
+msgstr "Import abgeschlossen."
+
+#: ../../mod/import.php:463
+msgid "You must be logged in to use this feature."
+msgstr "Du musst angemeldet sein um diese Funktion zu nutzen."
+
+#: ../../mod/import.php:468
+msgid "Import Channel"
+msgstr "Kanal importieren"
+
+#: ../../mod/import.php:469
+msgid ""
+"Use this form to import an existing channel from a different server/hub. You"
+" may retrieve the channel identity from the old server/hub via the network "
+"or provide an export file. Only identity and connections/relationships will "
+"be imported. Importation of content is not yet available."
+msgstr "Verwende dieses Formular, um einen existierenden Kanal von einem anderen Red-Server zu importieren. Du kannst den Kanal direkt vom bisherigen Red-Server über das Netzwerk importieren oder eine exportierte Sicherheitskopie benutzen. Es werden ausschließlich die Identität und die Verbindungen/Beziehungen importiert. Das Importieren von Inhalten ist derzeit nicht möglich."
+
+#: ../../mod/import.php:470
+msgid "File to Upload"
+msgstr "Hochzuladende Datei:"
+
+#: ../../mod/import.php:471
+msgid "Or provide the old server/hub details"
+msgstr "Oder gib die Details Deines bisherigen Red-Servers ein"
+
+#: ../../mod/import.php:472
+msgid "Your old identity address (xyz@example.com)"
+msgstr "Bisherige Kanal-Adresse (xyz@example.com)"
+
+#: ../../mod/import.php:473
+msgid "Your old login email address"
+msgstr "Deine alte Login-E-Mail-Adresse"
+
+#: ../../mod/import.php:474
+msgid "Your old login password"
+msgstr "Dein altes Passwort"
+
+#: ../../mod/import.php:475
+msgid ""
+"For either option, please choose whether to make this hub your new primary "
+"address, or whether your old location should continue this role. You will be"
+" able to post from either location, but only one can be marked as the "
+"primary location for files, photos, and media."
+msgstr "Egal, welche Option Du wählst – bitte lege fest, ob dieser Server die neue primäre Adresse dieses Kanals sein soll, oder ob der bisherige Red-Server diese Rolle weiterhin wahrnimmt. Du kannst von beiden Servern aus posten, aber nur einer kann der primäre Ort Deiner Dateien, Fotos und Medien sein."
+
+#: ../../mod/import.php:476
+msgid "Make this hub my primary location"
+msgstr "Dieser Red-Server ist mein primärer Server."
+
+#: ../../mod/import.php:477
+msgid "Import existing posts if possible"
+msgstr "Existierende Beiträge importieren, falls möglich"
+
+#: ../../mod/tagger.php:98
+#, php-format
+msgid "%1$s tagged %2$s's %3$s with %4$s"
+msgstr "%1$s hat %2$ss %3$s mit %4$s verschlagwortet"
+
+#: ../../mod/tagrm.php:44 ../../mod/tagrm.php:94
+msgid "Tag removed"
+msgstr "Schlagwort entfernt"
+
+#: ../../mod/tagrm.php:119
+msgid "Remove Item Tag"
+msgstr "Schlagwort entfernen"
+
+#: ../../mod/tagrm.php:121
+msgid "Select a tag to remove: "
+msgstr "Schlagwort zum Entfernen auswählen:"
+
+#: ../../mod/admin.php:52
msgid "Theme settings updated."
msgstr "Theme-Einstellungen aktualisiert."
-#: ../../mod/admin.php:88 ../../mod/admin.php:430
+#: ../../mod/admin.php:97 ../../mod/admin.php:411
msgid "Site"
msgstr "Seite"
-#: ../../mod/admin.php:89 ../../mod/admin.php:738 ../../mod/admin.php:750
-msgid "Users"
-msgstr "Benutzer"
+#: ../../mod/admin.php:98
+msgid "Accounts"
+msgstr "Konten"
-#: ../../mod/admin.php:90 ../../mod/admin.php:836 ../../mod/admin.php:878
+#: ../../mod/admin.php:99 ../../mod/admin.php:858
+msgid "Channels"
+msgstr "Kanäle"
+
+#: ../../mod/admin.php:100 ../../mod/admin.php:949 ../../mod/admin.php:991
msgid "Plugins"
msgstr "Plug-Ins"
-#: ../../mod/admin.php:91 ../../mod/admin.php:1041 ../../mod/admin.php:1077
+#: ../../mod/admin.php:101 ../../mod/admin.php:1154 ../../mod/admin.php:1190
msgid "Themes"
msgstr "Themes"
-#: ../../mod/admin.php:92 ../../mod/admin.php:529
+#: ../../mod/admin.php:102 ../../mod/admin.php:512
msgid "Server"
msgstr "Server"
-#: ../../mod/admin.php:93
+#: ../../mod/admin.php:103
+msgid "Profile Config"
+msgstr "Profilkonfiguration"
+
+#: ../../mod/admin.php:104
msgid "DB updates"
msgstr "DB-Aktualisierungen"
-#: ../../mod/admin.php:107 ../../mod/admin.php:114 ../../mod/admin.php:1164
+#: ../../mod/admin.php:118 ../../mod/admin.php:125 ../../mod/admin.php:1277
msgid "Logs"
msgstr "Protokolle"
-#: ../../mod/admin.php:113
+#: ../../mod/admin.php:124
msgid "Plugin Features"
msgstr "Plug-In Funktionen"
-#: ../../mod/admin.php:115
+#: ../../mod/admin.php:126
msgid "User registrations waiting for confirmation"
msgstr "Nutzer-Anmeldungen, die auf Bestätigung warten"
-#: ../../mod/admin.php:189
+#: ../../mod/admin.php:206
msgid "Message queues"
msgstr "Nachrichten-Warteschlangen"
-#: ../../mod/admin.php:194 ../../mod/admin.php:429 ../../mod/admin.php:528
-#: ../../mod/admin.php:737 ../../mod/admin.php:835 ../../mod/admin.php:877
-#: ../../mod/admin.php:1040 ../../mod/admin.php:1076 ../../mod/admin.php:1163
+#: ../../mod/admin.php:211 ../../mod/admin.php:410 ../../mod/admin.php:511
+#: ../../mod/admin.php:721 ../../mod/admin.php:857 ../../mod/admin.php:948
+#: ../../mod/admin.php:990 ../../mod/admin.php:1153 ../../mod/admin.php:1189
+#: ../../mod/admin.php:1276
msgid "Administration"
msgstr "Administration"
-#: ../../mod/admin.php:195
+#: ../../mod/admin.php:212
msgid "Summary"
msgstr "Zusammenfassung"
-#: ../../mod/admin.php:197
+#: ../../mod/admin.php:214
msgid "Registered users"
msgstr "Registrierte Benutzer"
-#: ../../mod/admin.php:199 ../../mod/admin.php:532
+#: ../../mod/admin.php:216 ../../mod/admin.php:515
msgid "Pending registrations"
msgstr "Ausstehende Registrierungen"
-#: ../../mod/admin.php:200
+#: ../../mod/admin.php:217
msgid "Version"
msgstr "Version"
-#: ../../mod/admin.php:202 ../../mod/admin.php:533
+#: ../../mod/admin.php:219 ../../mod/admin.php:516
msgid "Active plugins"
msgstr "Aktive Plug-Ins"
-#: ../../mod/admin.php:350
+#: ../../mod/admin.php:326
msgid "Site settings updated."
msgstr "Site-Einstellungen aktualisiert."
-#: ../../mod/admin.php:381
-msgid "No special theme for accessibility"
-msgstr "Kein spezielles Accessibility-Theme vorhanden"
+#: ../../mod/admin.php:363
+msgid "mobile"
+msgstr "mobil"
-#: ../../mod/admin.php:409
-msgid "Closed"
-msgstr "Geschlossen"
+#: ../../mod/admin.php:365
+msgid "experimental"
+msgstr "experimentell"
-#: ../../mod/admin.php:410
-msgid "Requires approval"
-msgstr "Genehmigung erforderlich"
+#: ../../mod/admin.php:367
+msgid "unsupported"
+msgstr "nicht unterstützt"
-#: ../../mod/admin.php:411
-msgid "Open"
-msgstr "Offen"
+#: ../../mod/admin.php:391
+msgid "Yes - with approval"
+msgstr "Ja - mit Zustimmung"
-#: ../../mod/admin.php:416
-msgid "Private"
-msgstr "Privat"
+#: ../../mod/admin.php:397
+msgid "My site is not a public server"
+msgstr "Mein Server ist kein öffentlicher Server"
-#: ../../mod/admin.php:417
-msgid "Paid Access"
-msgstr "Kostenpflichtiger Zugang"
+#: ../../mod/admin.php:398
+msgid "My site has paid access only"
+msgstr "Mein Server erlaubt nur bezahlten Zugang"
-#: ../../mod/admin.php:418
-msgid "Free Access"
-msgstr "Kostenloser Zugang"
+#: ../../mod/admin.php:399
+msgid "My site has free access only"
+msgstr "Mein Server erlaubt ausschließlich freien Zugang"
-#: ../../mod/admin.php:419
-msgid "Tiered Access"
-msgstr "Abgestufter Zugang"
-
-#: ../../mod/admin.php:432 ../../mod/register.php:189
-msgid "Registration"
-msgstr "Registrierung"
+#: ../../mod/admin.php:400
+msgid "My site offers free accounts with optional paid upgrades"
+msgstr "Mein Server bietet kostenlose Konten mit der Möglichkeit zu bezahlten Upgrades"
-#: ../../mod/admin.php:433
+#: ../../mod/admin.php:414
msgid "File upload"
msgstr "Dateiupload"
-#: ../../mod/admin.php:434
+#: ../../mod/admin.php:415
msgid "Policies"
msgstr "Richtlinien"
-#: ../../mod/admin.php:435
-msgid "Advanced"
-msgstr "Fortgeschritten"
-
-#: ../../mod/admin.php:439
+#: ../../mod/admin.php:420
msgid "Site name"
msgstr "Seitenname"
-#: ../../mod/admin.php:440
+#: ../../mod/admin.php:421
msgid "Banner/Logo"
msgstr "Banner/Logo"
-#: ../../mod/admin.php:441
+#: ../../mod/admin.php:422
msgid "Administrator Information"
msgstr "Administrator-Informationen"
-#: ../../mod/admin.php:441
+#: ../../mod/admin.php:422
msgid ""
"Contact information for site administrators. Displayed on siteinfo page. "
"BBCode can be used here"
msgstr "Kontaktinformationen für Administratoren des Servers. Wird auf der siteinfo-Seite angezeigt. BBCode kann verwendet werden."
-#: ../../mod/admin.php:442
+#: ../../mod/admin.php:423
msgid "System language"
msgstr "System-Sprache"
-#: ../../mod/admin.php:443
+#: ../../mod/admin.php:424
msgid "System theme"
msgstr "System-Theme"
-#: ../../mod/admin.php:443
+#: ../../mod/admin.php:424
msgid ""
"Default system theme - may be over-ridden by user profiles - <a href='#' "
"id='cnftheme'>change theme settings</a>"
msgstr "Standard-System-Theme – kann durch Nutzerprofile überschieben werden – <a href='#' id='cnftheme'>Theme-Einstellungen ändern</a>"
-#: ../../mod/admin.php:444
+#: ../../mod/admin.php:425
msgid "Mobile system theme"
msgstr "Mobile System-Theme:"
-#: ../../mod/admin.php:444
+#: ../../mod/admin.php:425
msgid "Theme for mobile devices"
msgstr "Theme für mobile Geräte"
-#: ../../mod/admin.php:445
-msgid "Accessibility system theme"
-msgstr "Accessibility-System-Theme"
+#: ../../mod/admin.php:427
+msgid "Enable Diaspora Protocol"
+msgstr "Diaspora-Protokoll aktivieren"
-#: ../../mod/admin.php:445
-msgid "Accessibility theme"
-msgstr "Accessibility-Theme"
+#: ../../mod/admin.php:427
+msgid "Communicate with Diaspora and Friendica - experimental"
+msgstr "Kommunikation mit Diaspora und Friendica – experimentell"
-#: ../../mod/admin.php:446
-msgid "Channel to use for this website's static pages"
-msgstr "Kanal für die statischen Seiten dieser Webseite verwenden"
+#: ../../mod/admin.php:428
+msgid "Allow Feeds as Connections"
+msgstr "Feeds als Verbindungen erlauben"
-#: ../../mod/admin.php:446
-msgid "Site Channel"
-msgstr "Seiten Kanal"
+#: ../../mod/admin.php:428
+msgid "(Heavy system resource usage)"
+msgstr "(führt zu hoher Systemlast)"
-#: ../../mod/admin.php:448
+#: ../../mod/admin.php:429
msgid "Maximum image size"
msgstr "Maximale Bildgröße"
-#: ../../mod/admin.php:448
+#: ../../mod/admin.php:429
msgid ""
"Maximum size in bytes of uploaded images. Default is 0, which means no "
"limits."
msgstr "Maximale Größe hochgeladener Bilder in Bytes. Standard ist 0 (keine Einschränkung)."
-#: ../../mod/admin.php:449
-msgid "Register policy"
-msgstr "Registrierungsrichtlinie"
+#: ../../mod/admin.php:430
+msgid "Does this site allow new member registration?"
+msgstr "Erlaubt dieser Server die Registrierung neuer Nutzer?"
-#: ../../mod/admin.php:450
-msgid "Access policy"
-msgstr "Zugangsrichtlinien"
+#: ../../mod/admin.php:431
+msgid "Which best describes the types of account offered by this hub?"
+msgstr "Was ist die passendste Beschreibung der Konten auf diesem Hub?"
-#: ../../mod/admin.php:451
+#: ../../mod/admin.php:432
msgid "Register text"
msgstr "Registrierungstext"
-#: ../../mod/admin.php:451
+#: ../../mod/admin.php:432
msgid "Will be displayed prominently on the registration page."
msgstr "Wird gut sichtbar auf der Registrierungs-Seite angezeigt."
-#: ../../mod/admin.php:452
+#: ../../mod/admin.php:433
msgid "Accounts abandoned after x days"
msgstr "Konten gelten nach X Tagen als unbenutzt"
-#: ../../mod/admin.php:452
+#: ../../mod/admin.php:433
msgid ""
"Will not waste system resources polling external sites for abandonded "
"accounts. Enter 0 for no time limit."
msgstr "Verschwende keine Systemressourcen auf das Pollen von externen Seiten, wenn das Konto nicht mehr benutzt wird. Trage hier 0 für kein zeitliches Limit."
-#: ../../mod/admin.php:453
+#: ../../mod/admin.php:434
msgid "Allowed friend domains"
msgstr "Erlaubte Domains für Kontakte"
-#: ../../mod/admin.php:453
+#: ../../mod/admin.php:434
msgid ""
"Comma separated list of domains which are allowed to establish friendships "
"with this site. Wildcards are accepted. Empty to allow any domains"
msgstr "Liste der Domains, die für Freundschaften erlaubt sind, durch Kommas getrennt. Platzhalter werden akzeptiert. Leer lassen, um alle Domains zu erlauben."
-#: ../../mod/admin.php:454
+#: ../../mod/admin.php:435
msgid "Allowed email domains"
msgstr "Erlaubte Domains für E-Mails"
-#: ../../mod/admin.php:454
+#: ../../mod/admin.php:435
msgid ""
"Comma separated list of domains which are allowed in email addresses for "
"registrations to this site. Wildcards are accepted. Empty to allow any "
"domains"
msgstr "Liste der Domains, die für E-Mail-Adressen bei der Registrierung erlaubt sind, durch Kommas getrennt. Platzhalter werden akzeptiert. Leer lassen, um alle Domains zu erlauben."
-#: ../../mod/admin.php:455
+#: ../../mod/admin.php:436
msgid "Block public"
msgstr "Öffentlichen Zugriff blockieren"
-#: ../../mod/admin.php:455
+#: ../../mod/admin.php:436
msgid ""
"Check to block public access to all otherwise public personal pages on this "
"site unless you are currently logged in."
msgstr "Zugriff auf sonst öffentliche persönliche Seiten blockieren, wenn man nicht eingeloggt ist."
-#: ../../mod/admin.php:456
+#: ../../mod/admin.php:437
+msgid "Verify Email Addresses"
+msgstr "E-Mail-Adressen überprüfen"
+
+#: ../../mod/admin.php:437
+msgid ""
+"Check to verify email addresses used in account registration (recommended)."
+msgstr "Aktivieren, um die Überprüfung von E-Mail-Adressen bei der Registrierung von Benutzerkonten zu aktivieren (empfohlen)."
+
+#: ../../mod/admin.php:438
msgid "Force publish"
msgstr "Veröffentlichung erzwingen"
-#: ../../mod/admin.php:456
+#: ../../mod/admin.php:438
msgid ""
"Check to force all profiles on this site to be listed in the site directory."
msgstr "Die Veröffentlichung aller Profile dieses Servers im Verzeichnis erzwingen."
-#: ../../mod/admin.php:457
+#: ../../mod/admin.php:439
+msgid "Disable discovery tab"
+msgstr "Den „Entdecken“-Reiter ausblenden"
+
+#: ../../mod/admin.php:439
+msgid ""
+"Remove the tab in the network view with public content pulled from sources "
+"chosen for this site."
+msgstr "Entferne den „Entdecken“-Reiter aus der Matrix-Seite, in dem öffentliche Inhalte angezeigt werden, die von anderen RedMatrix-Hubs geholt wurden."
+
+#: ../../mod/admin.php:440
msgid "No login on Homepage"
msgstr "Kein Login auf der Homepage"
-#: ../../mod/admin.php:457
+#: ../../mod/admin.php:440
msgid ""
"Check to hide the login form from your sites homepage when visitors arrive "
"who are not logged in (e.g. when you put the content of the homepage in via "
"the site channel)."
-msgstr "Ktivieren, um das Login-Formular auf der Startseite der Seite zu verbergen, z.B. weil es das Layout der Homepage des Seiten-Kanals stört."
+msgstr "Aktivieren, um das Login-Formular auf der Startseite der Seite zu verbergen (z.B. weil es das Layout der Homepage des Seiten-Kanals stört)."
-#: ../../mod/admin.php:459
+#: ../../mod/admin.php:442
msgid "Proxy user"
msgstr "Proxy Benutzer"
-#: ../../mod/admin.php:460
+#: ../../mod/admin.php:443
msgid "Proxy URL"
msgstr "Proxy URL"
-#: ../../mod/admin.php:461
+#: ../../mod/admin.php:444
msgid "Network timeout"
msgstr "Netzwerk-Timeout"
-#: ../../mod/admin.php:461
+#: ../../mod/admin.php:444
msgid "Value is in seconds. Set to 0 for unlimited (not recommended)."
msgstr "Wert in Sekunden. 0 für unbegrenzt (nicht empfohlen)."
-#: ../../mod/admin.php:462
+#: ../../mod/admin.php:445
msgid "Delivery interval"
msgstr "Auslieferung Intervall"
-#: ../../mod/admin.php:462
+#: ../../mod/admin.php:445
msgid ""
"Delay background delivery processes by this many seconds to reduce system "
"load. Recommend: 4-5 for shared hosts, 2-3 for virtual private servers. 0-1 "
"for large dedicated servers."
msgstr "Verzögere im Hintergrund laufende Auslieferungsprozesse um die angegebene Anzahl Sekunden, um die Systemlast zu verringern. Empfehlungen: 4-5 für Shared Hosts, 2-3 für VPS, 0-1 für große dedizierte Server."
-#: ../../mod/admin.php:463
+#: ../../mod/admin.php:446
msgid "Poll interval"
msgstr "Abfrageintervall"
-#: ../../mod/admin.php:463
+#: ../../mod/admin.php:446
msgid ""
"Delay background polling processes by this many seconds to reduce system "
"load. If 0, use delivery interval."
msgstr "Verzögere Hintergrundprozesse um diese Anzahl Sekunden, um die Systemlast zu reduzieren. Bei 0 wird das Auslieferungsintervall verwendet."
-#: ../../mod/admin.php:464
+#: ../../mod/admin.php:447
msgid "Maximum Load Average"
msgstr "Maximales Load Average"
-#: ../../mod/admin.php:464
+#: ../../mod/admin.php:447
msgid ""
"Maximum system load before delivery and poll processes are deferred - "
"default 50."
msgstr "Maximale Systemlast, bevor Verteil- und Empfangsprozesse verschoben werden – Standard 50"
-#: ../../mod/admin.php:520
+#: ../../mod/admin.php:503
msgid "No server found"
msgstr "Kein Server gefunden"
-#: ../../mod/admin.php:527 ../../mod/admin.php:751
+#: ../../mod/admin.php:510 ../../mod/admin.php:735
msgid "ID"
msgstr "ID"
-#: ../../mod/admin.php:527
+#: ../../mod/admin.php:510
msgid "for channel"
msgstr "für Kanal"
-#: ../../mod/admin.php:527
+#: ../../mod/admin.php:510
msgid "on server"
msgstr "auf Server"
-#: ../../mod/admin.php:527
+#: ../../mod/admin.php:510
msgid "Status"
msgstr "Status"
-#: ../../mod/admin.php:548
+#: ../../mod/admin.php:531
msgid "Update has been marked successful"
msgstr "Update wurde als erfolgreich markiert"
-#: ../../mod/admin.php:558
+#: ../../mod/admin.php:541
#, php-format
msgid "Executing %s failed. Check system logs."
msgstr "Ausführen von %s fehlgeschlagen. Überprüfe die Systemprotokolle."
-#: ../../mod/admin.php:561
+#: ../../mod/admin.php:544
#, php-format
msgid "Update %s was successfully applied."
msgstr "Update %s wurde erfolgreich ausgeführt."
-#: ../../mod/admin.php:565
+#: ../../mod/admin.php:548
#, php-format
msgid "Update %s did not return a status. Unknown if it succeeded."
msgstr "Update %s lieferte keinen Rückgabewert. Erfolg unbekannt."
-#: ../../mod/admin.php:568
+#: ../../mod/admin.php:551
#, php-format
msgid "Update function %s could not be found."
msgstr "Update-Funktion %s konnte nicht gefunden werden."
-#: ../../mod/admin.php:583
+#: ../../mod/admin.php:566
msgid "No failed updates."
msgstr "Keine fehlgeschlagenen Aktualisierungen."
-#: ../../mod/admin.php:587
+#: ../../mod/admin.php:570
msgid "Failed Updates"
msgstr "Fehlgeschlagene Aktualisierungen"
-#: ../../mod/admin.php:589
+#: ../../mod/admin.php:572
msgid "Mark success (if update was manually applied)"
msgstr "Als erfolgreich markieren (wenn das Update manuell ausgeführt wurde)"
-#: ../../mod/admin.php:590
+#: ../../mod/admin.php:573
msgid "Attempt to execute this update step automatically"
msgstr "Versuche, diesen Updateschritt automatisch auszuführen"
-#: ../../mod/admin.php:616
+#: ../../mod/admin.php:599
#, php-format
msgid "%s user blocked/unblocked"
msgid_plural "%s users blocked/unblocked"
msgstr[0] "%s Nutzer blockiert/freigegeben"
msgstr[1] "%s Nutzer blockiert/freigegeben"
-#: ../../mod/admin.php:623
+#: ../../mod/admin.php:606
#, php-format
msgid "%s user deleted"
msgid_plural "%s users deleted"
msgstr[0] "%s Nutzer gelöscht"
msgstr[1] "%s Nutzer gelöscht"
-#: ../../mod/admin.php:654
+#: ../../mod/admin.php:635
msgid "Account not found"
msgstr "Konto nicht gefunden"
-#: ../../mod/admin.php:665
-#, php-format
-msgid "User '%s' deleted"
-msgstr "Benutzer '%s' gelöscht"
-
-#: ../../mod/admin.php:674
+#: ../../mod/admin.php:655
#, php-format
msgid "User '%s' unblocked"
msgstr "Benutzer '%s' freigegeben"
-#: ../../mod/admin.php:674
+#: ../../mod/admin.php:655
#, php-format
msgid "User '%s' blocked"
msgstr "Benutzer '%s' blockiert"
-#: ../../mod/admin.php:740
+#: ../../mod/admin.php:722 ../../mod/admin.php:734
+msgid "Users"
+msgstr "Benutzer"
+
+#: ../../mod/admin.php:724 ../../mod/admin.php:860
msgid "select all"
msgstr "Alle auswählen"
-#: ../../mod/admin.php:741
+#: ../../mod/admin.php:725
msgid "User registrations waiting for confirm"
msgstr "Neuanmeldungen, die auf Deine Bestätigung warten"
-#: ../../mod/admin.php:742
+#: ../../mod/admin.php:726
msgid "Request date"
msgstr "Antragsdatum"
-#: ../../mod/admin.php:743
+#: ../../mod/admin.php:727
msgid "No registrations."
msgstr "Keine Registrierungen."
-#: ../../mod/admin.php:744
+#: ../../mod/admin.php:728
msgid "Approve"
msgstr "Genehmigen"
-#: ../../mod/admin.php:745
+#: ../../mod/admin.php:729
msgid "Deny"
msgstr "Verweigern"
-#: ../../mod/admin.php:747 ../../mod/connedit.php:333
-#: ../../mod/connedit.php:475
-msgid "Block"
-msgstr "Blockieren"
-
-#: ../../mod/admin.php:748 ../../mod/connedit.php:333
-#: ../../mod/connedit.php:475
-msgid "Unblock"
-msgstr "Freigeben"
-
-#: ../../mod/admin.php:751
+#: ../../mod/admin.php:735
msgid "Register date"
msgstr "Registrierungs-Datum"
-#: ../../mod/admin.php:751
+#: ../../mod/admin.php:735
msgid "Last login"
msgstr "Letzte Anmeldung"
-#: ../../mod/admin.php:751
+#: ../../mod/admin.php:735
msgid "Expires"
msgstr "Verfällt"
-#: ../../mod/admin.php:751
+#: ../../mod/admin.php:735
msgid "Service Class"
msgstr "Service-Klasse"
-#: ../../mod/admin.php:753
+#: ../../mod/admin.php:737
msgid ""
"Selected users will be deleted!\\n\\nEverything these users had posted on "
"this site will be permanently deleted!\\n\\nAre you sure?"
msgstr "Die markierten Nutzer werden gelöscht!\\n\\nAlles, was diese Nutzer auf dieser Seite veröffentlicht haben, wird endgültig gelöscht!\\n\\nBist Du sicher?"
-#: ../../mod/admin.php:754
+#: ../../mod/admin.php:738
msgid ""
"The user {0} will be deleted!\\n\\nEverything this user has posted on this "
"site will be permanently deleted!\\n\\nAre you sure?"
msgstr "Der Nutzer {0} wird gelöscht!\\n\\nAlles, was dieser Nutzer auf dieser Seite veröffentlicht hat, wird endgültig gelöscht werden!\\n\\nBist Du sicher?"
-#: ../../mod/admin.php:795
+#: ../../mod/admin.php:771
+#, php-format
+msgid "%s channel censored/uncensored"
+msgid_plural "%s channels censored/uncensored"
+msgstr[0] "%s Kanal gesperrt/freigegeben"
+msgstr[1] "%s Kanäle gesperrt/freigegeben"
+
+#: ../../mod/admin.php:778
+#, php-format
+msgid "%s channel deleted"
+msgid_plural "%s channels deleted"
+msgstr[0] "%s Kanal gelöscht"
+msgstr[1] "%s Kanäle gelöscht"
+
+#: ../../mod/admin.php:797
+msgid "Channel not found"
+msgstr "Kanal nicht gefunden"
+
+#: ../../mod/admin.php:808
+#, php-format
+msgid "Channel '%s' deleted"
+msgstr "Kanal '%s' gelöscht"
+
+#: ../../mod/admin.php:819
+#, php-format
+msgid "Channel '%s' uncensored"
+msgstr "Kanal '%s' freigegeben"
+
+#: ../../mod/admin.php:819
+#, php-format
+msgid "Channel '%s' censored"
+msgstr "Kanal '%s' gesperrt"
+
+#: ../../mod/admin.php:862
+msgid "Censor"
+msgstr "Sperren"
+
+#: ../../mod/admin.php:863
+msgid "Uncensor"
+msgstr "Freigeben"
+
+#: ../../mod/admin.php:866
+msgid "UID"
+msgstr "UID"
+
+#: ../../mod/admin.php:868
+msgid ""
+"Selected channels will be deleted!\\n\\nEverything that was posted in these "
+"channels on this site will be permanently deleted!\\n\\nAre you sure?"
+msgstr "Alle ausgewählten Kanäle werden gelöscht!\\n\\nAlles was von diesen Kanälen auf diesem Server geschrieben wurde, wird dauerhaft gelöscht!\\n\\nBist Du sicher?"
+
+#: ../../mod/admin.php:869
+msgid ""
+"The channel {0} will be deleted!\\n\\nEverything that was posted in this "
+"channel on this site will be permanently deleted!\\n\\nAre you sure?"
+msgstr "Der Kanal {0} wird gelöscht!\\n\\nAlles was von diesem Kanal auf diesem Server geschrieben wurde, wird gelöscht!\\n\\nBist Du sicher?"
+
+#: ../../mod/admin.php:908
#, php-format
msgid "Plugin %s disabled."
msgstr "Plug-In %s deaktiviert."
-#: ../../mod/admin.php:799
+#: ../../mod/admin.php:912
#, php-format
msgid "Plugin %s enabled."
msgstr "Plug-In %s aktiviert."
-#: ../../mod/admin.php:809 ../../mod/admin.php:1011
+#: ../../mod/admin.php:922 ../../mod/admin.php:1124
msgid "Disable"
msgstr "Deaktivieren"
-#: ../../mod/admin.php:811 ../../mod/admin.php:1013
+#: ../../mod/admin.php:924 ../../mod/admin.php:1126
msgid "Enable"
msgstr "Aktivieren"
-#: ../../mod/admin.php:837 ../../mod/admin.php:1042
+#: ../../mod/admin.php:950 ../../mod/admin.php:1155
msgid "Toggle"
msgstr "Umschalten"
-#: ../../mod/admin.php:845 ../../mod/admin.php:1052
+#: ../../mod/admin.php:958 ../../mod/admin.php:1165
msgid "Author: "
msgstr "Autor: "
-#: ../../mod/admin.php:846 ../../mod/admin.php:1053
+#: ../../mod/admin.php:959 ../../mod/admin.php:1166
msgid "Maintainer: "
msgstr "Betreuer:"
-#: ../../mod/admin.php:975
+#: ../../mod/admin.php:1088
msgid "No themes found."
msgstr "Keine Theme gefunden."
-#: ../../mod/admin.php:1034
+#: ../../mod/admin.php:1147
msgid "Screenshot"
msgstr "Bildschirmfoto"
-#: ../../mod/admin.php:1082
+#: ../../mod/admin.php:1195
msgid "[Experimental]"
msgstr "[Experimentell]"
-#: ../../mod/admin.php:1083
+#: ../../mod/admin.php:1196
msgid "[Unsupported]"
msgstr "[Nicht unterstützt]"
-#: ../../mod/admin.php:1110
+#: ../../mod/admin.php:1223
msgid "Log settings updated."
msgstr "Protokoll-Einstellungen aktualisiert."
-#: ../../mod/admin.php:1166
+#: ../../mod/admin.php:1279
msgid "Clear"
msgstr "Leeren"
-#: ../../mod/admin.php:1172
+#: ../../mod/admin.php:1285
msgid "Debugging"
msgstr "Debugging"
-#: ../../mod/admin.php:1173
+#: ../../mod/admin.php:1286
msgid "Log file"
msgstr "Protokolldatei"
-#: ../../mod/admin.php:1173
+#: ../../mod/admin.php:1286
msgid ""
"Must be writable by web server. Relative to your Red top-level directory."
msgstr "Muss für den Web-Server schreibbar sein. Relativ zum Red-Stammverzeichnis."
-#: ../../mod/admin.php:1174
+#: ../../mod/admin.php:1287
msgid "Log level"
msgstr "Protokollstufe"
-#: ../../mod/filer.php:35
-msgid "- select -"
-msgstr "– auswählen –"
-
-#: ../../mod/home.php:89
-#, php-format
-msgid "Welcome to %s"
-msgstr "Willkommen auf %s"
-
-#: ../../mod/editpost.php:20 ../../mod/editlayout.php:36
-#: ../../mod/editwebpage.php:32 ../../mod/editblock.php:36
-msgid "Item not found"
-msgstr "Element nicht gefunden"
-
-#: ../../mod/editpost.php:31
-msgid "Item is not editable"
-msgstr "Element kann nicht bearbeitet werden."
-
-#: ../../mod/editpost.php:53
-msgid "Delete item?"
-msgstr "Eintrag löschen?"
-
-#: ../../mod/editpost.php:116 ../../mod/editlayout.php:110
-#: ../../mod/editwebpage.php:148 ../../mod/editblock.php:124
-msgid "Insert YouTube video"
-msgstr "YouTube-Video einfügen"
-
-#: ../../mod/editpost.php:117 ../../mod/editlayout.php:111
-#: ../../mod/editwebpage.php:149 ../../mod/editblock.php:125
-msgid "Insert Vorbis [.ogg] video"
-msgstr "Vorbis [.ogg]-Video einfügen"
-
-#: ../../mod/editpost.php:118 ../../mod/editlayout.php:112
-#: ../../mod/editwebpage.php:150 ../../mod/editblock.php:126
-msgid "Insert Vorbis [.ogg] audio"
-msgstr "Vorbis [.ogg]-Audio einfügen"
-
-#: ../../mod/directory.php:144 ../../mod/profiles.php:561
-#: ../../mod/dirprofile.php:98
-msgid "Age: "
-msgstr "Alter:"
-
-#: ../../mod/directory.php:147 ../../mod/dirprofile.php:101
-msgid "Gender: "
-msgstr "Geschlecht:"
-
-#: ../../mod/directory.php:208
-msgid "Finding:"
-msgstr "Ergebnisse:"
-
-#: ../../mod/directory.php:216
-msgid "next page"
-msgstr "nächste Seite"
-
-#: ../../mod/directory.php:216
-msgid "previous page"
-msgstr "vorige Seite"
-
-#: ../../mod/directory.php:223
-msgid "No entries (some entries may be hidden)."
-msgstr "Keine Einträge gefunden (einige könnten versteckt sein)."
-
-#: ../../mod/connedit.php:49 ../../mod/connections.php:37
-msgid "Could not access contact record."
-msgstr "Konnte nicht auf den Kontakteintrag zugreifen."
-
-#: ../../mod/connedit.php:63 ../../mod/connections.php:51
-msgid "Could not locate selected profile."
-msgstr "Gewähltes Profil nicht gefunden."
-
-#: ../../mod/connedit.php:107 ../../mod/connections.php:94
-msgid "Connection updated."
-msgstr "Verbindung aktualisiert."
+#: ../../mod/admin.php:1334
+msgid "New Profile Field"
+msgstr "Neues Profilfeld"
-#: ../../mod/connedit.php:109 ../../mod/connections.php:96
-msgid "Failed to update connection record."
-msgstr "Konnte den Verbindungseintrag nicht aktualisieren."
+#: ../../mod/admin.php:1335 ../../mod/admin.php:1356
+msgid "Field nickname"
+msgstr "Kurzname für das Feld"
-#: ../../mod/connedit.php:204
-msgid "Could not access address book record."
-msgstr "Konnte nicht auf den Adressbuch-Eintrag zugreifen."
-
-#: ../../mod/connedit.php:218
-msgid "Refresh failed - channel is currently unavailable."
-msgstr "Aktualisierung fehlgeschlagen – der Kanal ist im Moment nicht erreichbar."
-
-#: ../../mod/connedit.php:225
-msgid "Channel has been unblocked"
-msgstr "Kanal nicht mehr blockiert"
+#: ../../mod/admin.php:1335 ../../mod/admin.php:1356
+msgid "System name of field"
+msgstr "Systemname des Feldes"
-#: ../../mod/connedit.php:226
-msgid "Channel has been blocked"
-msgstr "Kanal blockiert"
+#: ../../mod/admin.php:1336 ../../mod/admin.php:1357
+msgid "Input type"
+msgstr "Art des Inhalts"
-#: ../../mod/connedit.php:230 ../../mod/connedit.php:242
-#: ../../mod/connedit.php:254 ../../mod/connedit.php:266
-#: ../../mod/connedit.php:281
-msgid "Unable to set address book parameters."
-msgstr "Konnte die Adressbuch-Parameter nicht setzen."
+#: ../../mod/admin.php:1337 ../../mod/admin.php:1358
+msgid "Field Name"
+msgstr "Feldname"
-#: ../../mod/connedit.php:237
-msgid "Channel has been unignored"
-msgstr "Kanal wird nicht mehr ignoriert"
+#: ../../mod/admin.php:1337 ../../mod/admin.php:1358
+msgid "Label on profile pages"
+msgstr "Bezeichnung auf Profilseiten"
-#: ../../mod/connedit.php:238
-msgid "Channel has been ignored"
-msgstr "Kanal wird ignoriert"
+#: ../../mod/admin.php:1338 ../../mod/admin.php:1359
+msgid "Help text"
+msgstr "Hilfetext"
-#: ../../mod/connedit.php:249
-msgid "Channel has been unarchived"
-msgstr "Kanal wurde aus dem Archiv zurück geholt"
+#: ../../mod/admin.php:1338 ../../mod/admin.php:1359
+msgid "Additional info (optional)"
+msgstr "Zusätzliche Informationen (optional)"
-#: ../../mod/connedit.php:250
-msgid "Channel has been archived"
-msgstr "Kanal wurde archiviert"
+#: ../../mod/admin.php:1349
+msgid "Field definition not found"
+msgstr "Feld-Definition nicht gefunden"
-#: ../../mod/connedit.php:261
-msgid "Channel has been unhidden"
-msgstr "Kanal wird nicht mehr versteckt"
+#: ../../mod/admin.php:1355
+msgid "Edit Profile Field"
+msgstr "Profilfeld bearbeiten"
-#: ../../mod/connedit.php:262
-msgid "Channel has been hidden"
-msgstr "Kanal wurde versteckt"
+#: ../../mod/item.php:159
+msgid "Unable to locate original post."
+msgstr "Originalbeitrag nicht gefunden."
-#: ../../mod/connedit.php:276
-msgid "Channel has been approved"
-msgstr "Kanal wurde zugelassen"
+#: ../../mod/item.php:418
+msgid "Empty post discarded."
+msgstr "Leeren Beitrag verworfen."
-#: ../../mod/connedit.php:277
-msgid "Channel has been unapproved"
-msgstr "Zulassung des Kanals entfernt"
+#: ../../mod/item.php:460
+msgid "Executable content type not permitted to this channel."
+msgstr "Ausführbarer Content-Typ ist für diesen Kanal nicht freigegeben."
-#: ../../mod/connedit.php:295
-msgid "Contact has been removed."
-msgstr "Kontakt wurde entfernt."
+#: ../../mod/item.php:898
+msgid "System error. Post not saved."
+msgstr "Systemfehler. Beitrag nicht gespeichert."
-#: ../../mod/connedit.php:315
+#: ../../mod/item.php:1373
#, php-format
-msgid "View %s's profile"
-msgstr "%ss Profil ansehen"
-
-#: ../../mod/connedit.php:319
-msgid "Refresh Permissions"
-msgstr "Zugriffsrechte neu laden"
-
-#: ../../mod/connedit.php:322
-msgid "Fetch updated permissions"
-msgstr "Aktualisierte Zugriffsrechte abfragen"
-
-#: ../../mod/connedit.php:326
-msgid "Recent Activity"
-msgstr "Kürzliche Aktivitäten"
-
-#: ../../mod/connedit.php:329
-msgid "View recent posts and comments"
-msgstr "Betrachte die neuesten Beiträge und Kommentare"
-
-#: ../../mod/connedit.php:336
-msgid "Block or Unblock this connection"
-msgstr "Verbindung blockieren oder freigeben"
-
-#: ../../mod/connedit.php:340 ../../mod/connedit.php:476
-msgid "Unignore"
-msgstr "Nicht ignorieren"
-
-#: ../../mod/connedit.php:340 ../../mod/connedit.php:476
-#: ../../mod/notifications.php:51
-msgid "Ignore"
-msgstr "Ignorieren"
-
-#: ../../mod/connedit.php:343
-msgid "Ignore or Unignore this connection"
-msgstr "Verbindung ignorieren oder wieder beachten"
-
-#: ../../mod/connedit.php:346
-msgid "Unarchive"
-msgstr "Aus Archiv zurückholen"
-
-#: ../../mod/connedit.php:346
-msgid "Archive"
-msgstr "Archivieren"
-
-#: ../../mod/connedit.php:349
-msgid "Archive or Unarchive this connection"
-msgstr "Verbindung archivieren oder aus dem Archiv zurückholen"
-
-#: ../../mod/connedit.php:352
-msgid "Unhide"
-msgstr "Wieder sichtbar machen"
-
-#: ../../mod/connedit.php:352
-msgid "Hide"
-msgstr "Verstecken"
-
-#: ../../mod/connedit.php:355
-msgid "Hide or Unhide this connection"
-msgstr "Diese Verbindung verstecken oder wieder sichtbar machen"
-
-#: ../../mod/connedit.php:362
-msgid "Delete this connection"
-msgstr "Verbindung löschen"
-
-#: ../../mod/connedit.php:405 ../../mod/connedit.php:434
-msgid "Approve this connection"
-msgstr "Verbindung genehmigen"
-
-#: ../../mod/connedit.php:405
-msgid "Accept connection to allow communication"
-msgstr "Akzeptiere die Verbindung, um Kommunikation zu ermöglichen"
-
-#: ../../mod/connedit.php:421
-msgid "Automatic Permissions Settings"
-msgstr "Automatische Berechtigungs-Einstellungen"
+msgid "You have reached your limit of %1$.0f top level posts."
+msgstr "Du hast die maximale Anzahl von %1$.0f Beiträgen erreicht."
-#: ../../mod/connedit.php:421
+#: ../../mod/item.php:1379
#, php-format
-msgid "Connections: settings for %s"
-msgstr "Verbindungseinstellungen für %s"
-
-#: ../../mod/connedit.php:425
-msgid ""
-"When receiving a channel introduction, any permissions provided here will be"
-" applied to the new connection automatically and the introduction approved. "
-"Leave this page if you do not wish to use this feature."
-msgstr "Wenn eine Verbindungsanfrage empfangen wird, werden die hier getroffenen Einstellungen automatisch angewandt, und die Anfrage wird genehmigt. Verlasse diese Seite, wenn Du diese Funktion nicht verwenden möchtest."
+msgid "You have reached your limit of %1$.0f webpages."
+msgstr "Du hast die maximale Anzahl von %1$.0f Webseiten erreicht."
-#: ../../mod/connedit.php:427
-msgid "Slide to adjust your degree of friendship"
-msgstr "Verschieben, um den Grad der Freundschaft zu einzustellen"
+#: ../../mod/like.php:15
+msgid "Like/Dislike"
+msgstr "Mögen/Nicht mögen"
-#: ../../mod/connedit.php:433
-msgid "inherited"
-msgstr "geerbt"
+#: ../../mod/like.php:20
+msgid "This action is restricted to members."
+msgstr "Diese Aktion kann nur von Mitgliedern ausgeführt werden."
-#: ../../mod/connedit.php:435
-msgid "Connection has no individual permissions!"
-msgstr "Diese Verbindung hat keine individuellen Zugriffsrechte!"
-
-#: ../../mod/connedit.php:436
+#: ../../mod/like.php:21
msgid ""
-"This may be appropriate based on your <a href=\"settings\">privacy "
-"settings</a>, though you may wish to review the \"Advanced Permissions\"."
-msgstr "Abhängig von Deinen <a href=\"settings\">Privatsphäre-Einstellungen</a> könnte das passen, eventuell solltest Du aber die „Zugriffsrechte für Fortgeschrittene“ überprüfen."
+"Please <a href=\"rmagic\">login with your RedMatrix ID</a> or <a "
+"href=\"register\">register as a new RedMatrix member</a> to continue."
+msgstr "Bitte <a href=\"rmagic\">melde Dich mit Deiner RedMatrix-ID an</a> oder <a href=\"register\">registriere Dich als neues Mitglied der RedMatrix</a>, um fortzufahren."
-#: ../../mod/connedit.php:438
-msgid "Profile Visibility"
-msgstr "Sichtbarkeit des Profils"
+#: ../../mod/like.php:77 ../../mod/like.php:104 ../../mod/like.php:142
+msgid "Invalid request."
+msgstr "Ungültige Anfrage."
-#: ../../mod/connedit.php:439
-#, php-format
-msgid ""
-"Please choose the profile you would like to display to %s when viewing your "
-"profile securely."
-msgstr "Bitte wähle ein Profil, das wir %s zeigen sollen, wenn Deine Profilseite über eine verifizierte Verbindung aufgerufen wird."
-
-#: ../../mod/connedit.php:440
-msgid "Contact Information / Notes"
-msgstr "Kontaktinformationen / Notizen"
+#: ../../mod/like.php:119
+msgid "thing"
+msgstr "Sache"
-#: ../../mod/connedit.php:441
-msgid "Edit contact notes"
-msgstr "Kontaktnotizen bearbeiten"
+#: ../../mod/like.php:165
+msgid "Channel unavailable."
+msgstr "Kanal nicht vorhanden."
-#: ../../mod/connedit.php:443
-msgid "Their Settings"
-msgstr "Deren Einstellungen"
+#: ../../mod/like.php:204
+msgid "Previous action reversed."
+msgstr "Die vorherige Aktion wurde rückgängig gemacht."
-#: ../../mod/connedit.php:444
-msgid "My Settings"
-msgstr "Meine Einstellungen"
+#: ../../mod/like.php:430
+msgid "Action completed."
+msgstr "Aktion durchgeführt."
-#: ../../mod/connedit.php:446
-msgid "Forum Members"
-msgstr "Forum Mitglieder"
+#: ../../mod/like.php:431
+msgid "Thank you."
+msgstr "Vielen Dank."
-#: ../../mod/connedit.php:447
-msgid "Soapbox"
-msgstr "Marktschreier"
+#: ../../mod/invite.php:25
+msgid "Total invitation limit exceeded."
+msgstr "Einladungslimit überschritten."
-#: ../../mod/connedit.php:448
-msgid "Full Sharing (typical social network permissions)"
-msgstr "Vollumfängliches Teilen (übliche Berechtigungen in sozialen Netzwerken)"
+#: ../../mod/invite.php:49
+#, php-format
+msgid "%s : Not a valid email address."
+msgstr "%s : Keine gültige Email Adresse."
-#: ../../mod/connedit.php:449
-msgid "Cautious Sharing "
-msgstr "Vorsichtiges Teilen"
+#: ../../mod/invite.php:76
+msgid "Please join us on Red"
+msgstr "Schließe Dich uns an und werde Teil der Red-Matrix"
-#: ../../mod/connedit.php:450
-msgid "Follow Only"
-msgstr "Nur folgen"
+#: ../../mod/invite.php:87
+msgid "Invitation limit exceeded. Please contact your site administrator."
+msgstr "Einladungslimit überschritten. Bitte kontaktiere den Administrator Deines Red-Servers."
-#: ../../mod/connedit.php:451
-msgid "Individual Permissions"
-msgstr "Individuelle Zugriffsrechte"
+#: ../../mod/invite.php:92
+#, php-format
+msgid "%s : Message delivery failed."
+msgstr "%s : Nachricht konnte nicht zugestellt werden."
-#: ../../mod/connedit.php:452
-msgid ""
-"Some permissions may be inherited from your channel <a "
-"href=\"settings\">privacy settings</a>, which have higher priority than "
-"individual settings. Changing those inherited settings on this page will "
-"have no effect."
-msgstr "Einige Berechtigungen werden von den <a href=\"settings\">Sicherheits- und Privatsphäre-Einstellungen</a> dieses Kanals geerbt, die eine höhere Priorität haben als die Einstellungen bei einer Verbindung. Werden geerbte Einstellungen hier geändert, hat das keine Auswirkungen."
+#: ../../mod/invite.php:96
+#, php-format
+msgid "%d message sent."
+msgid_plural "%d messages sent."
+msgstr[0] "%d Nachricht gesendet."
+msgstr[1] "%d Nachrichten gesendet."
-#: ../../mod/connedit.php:453
-msgid "Advanced Permissions"
-msgstr "Zugriffsrechte für Fortgeschrittene"
+#: ../../mod/invite.php:115
+msgid "You have no more invitations available"
+msgstr "Du hast keine weiteren verfügbare Einladungen"
-#: ../../mod/connedit.php:454
-msgid "Simple Permissions (select one and submit)"
-msgstr "Einfache Berechtigungs-Einstellungen (wähle eine aus und klicke auf Senden)"
+#: ../../mod/invite.php:129
+msgid "Send invitations"
+msgstr "Einladungen senden"
-#: ../../mod/connedit.php:458
-#, php-format
-msgid "Visit %s's profile - %s"
-msgstr "%ss Profil besuchen - %s"
+#: ../../mod/invite.php:130
+msgid "Enter email addresses, one per line:"
+msgstr "Email-Adressen eintragen, eine pro Zeile:"
-#: ../../mod/connedit.php:459
-msgid "Block/Unblock contact"
-msgstr "Kontakt blockieren/freigeben"
+#: ../../mod/invite.php:131 ../../mod/mail.php:228 ../../mod/mail.php:341
+msgid "Your message:"
+msgstr "Deine Nachricht:"
-#: ../../mod/connedit.php:460
-msgid "Ignore contact"
-msgstr "Kontakt ignorieren"
+#: ../../mod/invite.php:132
+msgid "Please join my community on RedMatrix."
+msgstr "Schließe Dich uns in der RedMatrix an!"
-#: ../../mod/connedit.php:461
-msgid "Repair URL settings"
-msgstr "URL-Einstellungen reparieren"
+#: ../../mod/invite.php:134
+msgid "You will need to supply this invitation code: "
+msgstr "Gib diesen Invite-Code ein:"
-#: ../../mod/connedit.php:462
-msgid "View conversations"
-msgstr "Unterhaltungen anzeigen"
+#: ../../mod/invite.php:135
+msgid "1. Register at any RedMatrix location (they are all inter-connected)"
+msgstr "1. Registriere Dich auf irgendeinem RedMatrix-Server (sie sind alle miteinander verbunden)"
-#: ../../mod/connedit.php:464
-msgid "Delete contact"
-msgstr "Kontakt löschen"
+#: ../../mod/invite.php:137
+msgid "2. Enter my RedMatrix network address into the site searchbar."
+msgstr "2. Gib meine RedMatrix-Adresse im Suchfeld ein."
-#: ../../mod/connedit.php:467
-msgid "Last update:"
-msgstr "Letzte Aktualisierung:"
+#: ../../mod/invite.php:138
+msgid "or visit "
+msgstr "oder besuche"
-#: ../../mod/connedit.php:469
-msgid "Update public posts"
-msgstr "Öffentliche Beiträge aktualisieren"
+#: ../../mod/invite.php:140
+msgid "3. Click [Connect]"
+msgstr "3. Klicke auf [Verbinden]"
-#: ../../mod/connedit.php:471
-msgid "Update now"
-msgstr "Jetzt aktualisieren"
+#: ../../mod/locs.php:19 ../../mod/locs.php:46
+msgid "Location not found."
+msgstr "Klon nicht gefunden."
-#: ../../mod/connedit.php:477
-msgid "Currently blocked"
-msgstr "Derzeit blockiert"
+#: ../../mod/locs.php:50
+msgid "Primary location cannot be removed."
+msgstr "Der primäre Klon kann nicht gelöscht werden."
-#: ../../mod/connedit.php:478
-msgid "Currently ignored"
-msgstr "Derzeit ignoriert"
+#: ../../mod/locs.php:82
+msgid "No locations found."
+msgstr "Keine Klon-Adressen gefunden"
-#: ../../mod/connedit.php:479
-msgid "Currently archived"
-msgstr "Derzeit archiviert"
+#: ../../mod/locs.php:95
+msgid "Manage Channel Locations"
+msgstr "Klon-Adressen verwalten"
-#: ../../mod/connedit.php:480
-msgid "Currently pending"
-msgstr "Derzeit anstehend"
+#: ../../mod/locs.php:96
+msgid "Location (address)"
+msgstr "URL (Adresse)"
-#: ../../mod/connedit.php:481
-msgid "Hide this contact from others"
-msgstr "Diese Verbindung vor den anderen verbergen."
+#: ../../mod/locs.php:97
+msgid "Primary Location"
+msgstr "Primärer Klon"
-#: ../../mod/connedit.php:481
-msgid ""
-"Replies/likes to your public posts <strong>may</strong> still be visible"
-msgstr "Antworten/Likes auf deine öffentlichen Beiträge <strong>können</strong> immer noch sichtbar sein"
+#: ../../mod/locs.php:98
+msgid "Drop location"
+msgstr "Klon löschen"
-#: ../../mod/layouts.php:52
-msgid "Layout Help"
-msgstr "Layout-Hilfe"
+#: ../../mod/update_channel.php:43 ../../mod/update_display.php:25
+#: ../../mod/update_network.php:23 ../../mod/update_search.php:46
+msgid "[Embedded content - reload page to view]"
+msgstr "[Eingebettete Inhalte – lade die Seite neu, um sie anzuzeigen]"
-#: ../../mod/layouts.php:55
+#: ../../mod/layouts.php:110
msgid "Help with this feature"
msgstr "Hilfe zu dieser Funktion"
-#: ../../mod/layouts.php:74
+#: ../../mod/layouts.php:130
msgid "Layout Name"
msgstr "Layout-Name"
-#: ../../mod/help.php:43 ../../mod/help.php:49 ../../mod/help.php:55
-msgid "Help:"
-msgstr "Hilfe:"
-
-#: ../../mod/help.php:68 ../../index.php:223
-msgid "Not Found"
-msgstr "Nicht gefunden"
-
-#: ../../mod/help.php:71 ../../mod/page.php:83 ../../mod/display.php:100
-#: ../../index.php:226
-msgid "Page not found."
-msgstr "Seite nicht gefunden."
-
-#: ../../mod/rmagic.php:38
-msgid ""
-"We encountered a problem while logging in with the OpenID you provided. "
-"Please check the correct spelling of the ID."
-msgstr "Wir haben ein Problem mit der OpenID festgestellt, mit der du dich anmelden wolltest. Bitte überprüfe die Schreibweise der ID noch einmal."
-
-#: ../../mod/rmagic.php:38
-msgid "The error message was:"
-msgstr "Die Fehlermeldung lautet:"
-
-#: ../../mod/rmagic.php:42
-msgid "Authentication failed."
-msgstr "Authentifizierung fehlgeschlagen."
-
-#: ../../mod/rmagic.php:78
-msgid "Remote Authentication"
-msgstr "Entfernte Authentifizierung"
-
-#: ../../mod/rmagic.php:79
-msgid "Enter your channel address (e.g. channel@example.com)"
-msgstr "Deine Kanal-Adresse (z. B. channel@example.com)"
-
-#: ../../mod/rmagic.php:80
-msgid "Authenticate"
-msgstr "Authentifizieren"
-
-#: ../../mod/page.php:35
-msgid "Invalid item."
-msgstr "Ungültiges Element."
-
-#: ../../mod/network.php:79
-msgid "No such group"
-msgstr "Gruppe existiert nicht"
-
-#: ../../mod/network.php:118
-msgid "Search Results For:"
-msgstr "Suchergebnisse für:"
-
-#: ../../mod/network.php:172
-msgid "Collection is empty"
-msgstr "Sammlung ist leer"
-
-#: ../../mod/network.php:180
-msgid "Collection: "
-msgstr "Sammlung:"
-
-#: ../../mod/network.php:193
-msgid "Connection: "
-msgstr "Verbindung:"
-
-#: ../../mod/network.php:196
-msgid "Invalid connection."
-msgstr "Ungültige Verbindung."
-
-#: ../../mod/profiles.php:18 ../../mod/profiles.php:138
-#: ../../mod/profiles.php:168 ../../mod/profiles.php:463
-msgid "Profile not found."
-msgstr "Profil nicht gefunden."
-
-#: ../../mod/profiles.php:38
-msgid "Profile deleted."
-msgstr "Profil gelöscht."
-
-#: ../../mod/profiles.php:56 ../../mod/profiles.php:92
-msgid "Profile-"
-msgstr "Profil-"
-
-#: ../../mod/profiles.php:77 ../../mod/profiles.php:120
-msgid "New profile created."
-msgstr "Neues Profil erstellt."
-
-#: ../../mod/profiles.php:98
-msgid "Profile unavailable to clone."
-msgstr "Profil kann nicht geklont werden."
-
-#: ../../mod/profiles.php:178
-msgid "Profile Name is required."
-msgstr "Profil-Name erforderlich."
-
-#: ../../mod/profiles.php:294
-msgid "Marital Status"
-msgstr "Familienstand"
-
-#: ../../mod/profiles.php:298
-msgid "Romantic Partner"
-msgstr "Romantische Partner"
-
-#: ../../mod/profiles.php:302
-msgid "Likes"
-msgstr "Gefällt"
-
-#: ../../mod/profiles.php:306
-msgid "Dislikes"
-msgstr "Gefällt nicht"
-
-#: ../../mod/profiles.php:310
-msgid "Work/Employment"
-msgstr "Arbeit/Anstellung"
-
-#: ../../mod/profiles.php:313
-msgid "Religion"
-msgstr "Religion"
-
-#: ../../mod/profiles.php:317
-msgid "Political Views"
-msgstr "Politische Ansichten"
-
-#: ../../mod/profiles.php:321
-msgid "Gender"
-msgstr "Geschlecht"
-
-#: ../../mod/profiles.php:325
-msgid "Sexual Preference"
-msgstr "Sexuelle Orientierung"
-
-#: ../../mod/profiles.php:329
-msgid "Homepage"
-msgstr "Webseite"
-
-#: ../../mod/profiles.php:333
-msgid "Interests"
-msgstr "Hobbys/Interessen"
-
-#: ../../mod/profiles.php:337
-msgid "Address"
-msgstr "Adresse"
-
-#: ../../mod/profiles.php:344 ../../mod/pubsites.php:31
-msgid "Location"
-msgstr "Ort"
-
-#: ../../mod/profiles.php:427
-msgid "Profile updated."
-msgstr "Profil aktualisiert."
-
-#: ../../mod/profiles.php:482
-msgid "Hide your contact/friend list from viewers of this profile?"
-msgstr "Deine Kontaktliste vor Betrachtern dieses Profils verbergen?"
-
-#: ../../mod/profiles.php:505
-msgid "Edit Profile Details"
-msgstr "Bearbeite Profil-Details"
-
-#: ../../mod/profiles.php:507
-msgid "View this profile"
-msgstr "Dieses Profil ansehen"
-
-#: ../../mod/profiles.php:508
-msgid "Change Profile Photo"
-msgstr "Profilfoto ändern"
-
-#: ../../mod/profiles.php:509
-msgid "Create a new profile using these settings"
-msgstr "Neues Profil anlegen und diese Einstellungen übernehmen"
-
-#: ../../mod/profiles.php:510
-msgid "Clone this profile"
-msgstr "Dieses Profil klonen"
-
-#: ../../mod/profiles.php:511
-msgid "Delete this profile"
-msgstr "Dieses Profil löschen"
-
-#: ../../mod/profiles.php:512
-msgid "Profile Name:"
-msgstr "Profilname:"
-
-#: ../../mod/profiles.php:513
-msgid "Your Full Name:"
-msgstr "Dein voller Name:"
-
-#: ../../mod/profiles.php:514
-msgid "Title/Description:"
-msgstr "Titel/Stellenbeschreibung:"
-
-#: ../../mod/profiles.php:515
-msgid "Your Gender:"
-msgstr "Dein Geschlecht:"
-
-#: ../../mod/profiles.php:516
-#, php-format
-msgid "Birthday (%s):"
-msgstr "Geburtstag (%s):"
-
-#: ../../mod/profiles.php:517
-msgid "Street Address:"
-msgstr "Straße und Hausnummer:"
-
-#: ../../mod/profiles.php:518
-msgid "Locality/City:"
-msgstr "Wohnort:"
-
-#: ../../mod/profiles.php:519
-msgid "Postal/Zip Code:"
-msgstr "Postleitzahl:"
-
-#: ../../mod/profiles.php:520
-msgid "Country:"
-msgstr "Land:"
-
-#: ../../mod/profiles.php:521
-msgid "Region/State:"
-msgstr "Region/Bundesstaat:"
-
-#: ../../mod/profiles.php:522
-msgid "<span class=\"heart\">&hearts;</span> Marital Status:"
-msgstr "<span class=\"heart\">&hearts;</span> Beziehungsstatus:"
-
-#: ../../mod/profiles.php:523
-msgid "Who: (if applicable)"
-msgstr "Wer: (falls anwendbar)"
-
-#: ../../mod/profiles.php:524
-msgid "Examples: cathy123, Cathy Williams, cathy@example.com"
-msgstr "Beispiele: cathy123, Cathy Williams, cathy@example.com"
-
-#: ../../mod/profiles.php:525
-msgid "Since [date]:"
-msgstr "Seit [Datum]:"
-
-#: ../../mod/profiles.php:527
-msgid "Homepage URL:"
-msgstr "Homepage URL:"
-
-#: ../../mod/profiles.php:530
-msgid "Religious Views:"
-msgstr "Religiöse Ansichten:"
-
-#: ../../mod/profiles.php:531
-msgid "Keywords:"
-msgstr "Schlüsselwörter:"
-
-#: ../../mod/profiles.php:534
-msgid "Example: fishing photography software"
-msgstr "Beispiel: Angeln Fotografie Software"
-
-#: ../../mod/profiles.php:535
-msgid "Used in directory listings"
-msgstr "Wird in Verzeichnis-Auflistungen verwendet"
-
-#: ../../mod/profiles.php:536
-msgid "Tell us about yourself..."
-msgstr "Erzähle uns ein wenig von Dir …"
-
-#: ../../mod/profiles.php:537
-msgid "Hobbies/Interests"
-msgstr "Hobbys/Interessen"
-
-#: ../../mod/profiles.php:538
-msgid "Contact information and Social Networks"
-msgstr "Kontaktinformation und soziale Netzwerke"
-
-#: ../../mod/profiles.php:539
-msgid "My other channels"
-msgstr "Meine anderen Kanäle"
-
-#: ../../mod/profiles.php:540
-msgid "Musical interests"
-msgstr "Musikalische Interessen"
-
-#: ../../mod/profiles.php:541
-msgid "Books, literature"
-msgstr "Bücher, Literatur"
-
-#: ../../mod/profiles.php:542
-msgid "Television"
-msgstr "Fernsehen"
-
-#: ../../mod/profiles.php:543
-msgid "Film/dance/culture/entertainment"
-msgstr "Film/Tanz/Kultur/Unterhaltung"
-
-#: ../../mod/profiles.php:544
-msgid "Love/romance"
-msgstr "Liebe/Romantik"
-
-#: ../../mod/profiles.php:545
-msgid "Work/employment"
-msgstr "Arbeit/Anstellung"
-
-#: ../../mod/profiles.php:546
-msgid "School/education"
-msgstr "Schule/Ausbildung"
-
-#: ../../mod/profiles.php:551
-msgid ""
-"This is your <strong>public</strong> profile.<br />It <strong>may</strong> "
-"be visible to anybody using the internet."
-msgstr "Das ist Dein <strong>öffentliches</strong> Profil.<br />Es <strong>könnte</strong> für jeden im Internet sichtbar sein."
-
-#: ../../mod/profiles.php:600
-msgid "Edit/Manage Profiles"
-msgstr "Bearbeite/Verwalte Profile"
-
-#: ../../mod/profiles.php:601
-msgid "Add profile things"
-msgstr "Profil-Dinge hinzufügen"
-
-#: ../../mod/profiles.php:602
-msgid "Include desirable objects in your profile"
-msgstr "Binde begehrenswerte Dinge in Dein Profil ein"
-
-#: ../../mod/follow.php:25
-msgid "Channel added."
-msgstr "Kanal hinzugefügt."
-
-#: ../../mod/post.php:226
-msgid ""
-"Remote authentication blocked. You are logged into this site locally. Please"
-" logout and retry."
-msgstr "Fern-Authentifizierung blockiert. Du bist lokal auf diesem Server angemeldet. Bitte melde Dich ab und versuche es erneut."
-
-#: ../../mod/post.php:256 ../../mod/openid.php:70 ../../mod/openid.php:175
-#, php-format
-msgid "Welcome %s. Remote authentication successful."
-msgstr "Willkommen %s. Entfernte Authentifizierung erfolgreich."
-
-#: ../../mod/dirsearch.php:21
-msgid "This site is not a directory server"
-msgstr "Diese Website ist kein Verzeichnis-Server"
-
-#: ../../mod/sources.php:32
-msgid "Failed to create source. No channel selected."
-msgstr "Konnte die Quelle nicht anlegen. Kein Kanal ausgewählt."
-
-#: ../../mod/sources.php:45
-msgid "Source created."
-msgstr "Quelle erstellt."
-
-#: ../../mod/sources.php:57
-msgid "Source updated."
-msgstr "Quelle aktualisiert."
-
-#: ../../mod/sources.php:82
-msgid "*"
-msgstr "*"
-
-#: ../../mod/sources.php:89
-msgid "Manage remote sources of content for your channel."
-msgstr "Quellen von Inhalten Deines Kanals verwalten."
-
-#: ../../mod/sources.php:90 ../../mod/sources.php:100
-msgid "New Source"
-msgstr "Neue Quelle"
-
-#: ../../mod/sources.php:101 ../../mod/sources.php:133
-msgid ""
-"Import all or selected content from the following channel into this channel "
-"and distribute it according to your channel settings."
-msgstr "Importiere alle oder ausgewählte Inhalte des folgenden Kanals in diesen Kanal und verteile sie gemäß der Einstellungen dieses Kanals."
-
-#: ../../mod/sources.php:102 ../../mod/sources.php:134
-msgid "Only import content with these words (one per line)"
-msgstr "Importiere nur Beiträge, die folgende Wörter (eines pro Zeile) enthalten"
-
-#: ../../mod/sources.php:102 ../../mod/sources.php:134
-msgid "Leave blank to import all public content"
-msgstr "Leer lassen, um alle öffentlichen Beiträge zu importieren"
-
-#: ../../mod/sources.php:103 ../../mod/sources.php:137
-#: ../../mod/new_channel.php:110
-msgid "Channel Name"
-msgstr "Name des Kanals"
-
-#: ../../mod/sources.php:123 ../../mod/sources.php:150
-msgid "Source not found."
-msgstr "Quelle nicht gefunden."
-
-#: ../../mod/sources.php:130
-msgid "Edit Source"
-msgstr "Quelle bearbeiten"
-
-#: ../../mod/sources.php:131
-msgid "Delete Source"
-msgstr "Quelle löschen"
-
-#: ../../mod/sources.php:158
-msgid "Source removed"
-msgstr "Quelle gelöscht"
-
-#: ../../mod/sources.php:160
-msgid "Unable to remove source."
-msgstr "Konnte die Quelle nicht löschen."
-
-#: ../../mod/lockview.php:34
+#: ../../mod/lockview.php:31
msgid "Remote privacy information not available."
msgstr "Privatsphäre-Einstellungen anderer Nutzer sind nicht verfügbar."
-#: ../../mod/lockview.php:43
+#: ../../mod/lockview.php:52
msgid "Visible to:"
msgstr "Sichtbar für:"
-#: ../../mod/magic.php:70
-msgid "Hub not found."
-msgstr "Server nicht gefunden."
-
-#: ../../mod/setup.php:161
-msgid "Red Matrix Server - Setup"
-msgstr "Red Matrix Server - Installation"
-
-#: ../../mod/setup.php:167
-msgid "Could not connect to database."
-msgstr "Kann nicht mit der Datenbank verbinden."
-
-#: ../../mod/setup.php:171
-msgid ""
-"Could not connect to specified site URL. Possible SSL certificate or DNS "
-"issue."
-msgstr "Konnte die angegebene Webseiten-URL nicht erreichen. Möglicherweise ein Problem mit dem SSL-Zertifikat oder dem DNS."
-
-#: ../../mod/setup.php:176
-msgid "Could not create table."
-msgstr "Kann Tabelle nicht erstellen."
-
-#: ../../mod/setup.php:182
-msgid "Your site database has been installed."
-msgstr "Die Datenbank Deines Servers wurde installiert."
-
-#: ../../mod/setup.php:187
-msgid ""
-"You may need to import the file \"install/database.sql\" manually using "
-"phpmyadmin or mysql."
-msgstr "Eventuell musst Du die Datei \"install/database.sql\" per Hand mit phpmyadmin oder mysql importieren."
-
-#: ../../mod/setup.php:188 ../../mod/setup.php:257 ../../mod/setup.php:609
-msgid "Please see the file \"install/INSTALL.txt\"."
-msgstr "Lies die Datei \"install/INSTALL.txt\"."
-
-#: ../../mod/setup.php:254
-msgid "System check"
-msgstr "Systemprüfung"
-
-#: ../../mod/setup.php:259
-msgid "Check again"
-msgstr "Bitte nochmal prüfen"
-
-#: ../../mod/setup.php:281
-msgid "Database connection"
-msgstr "Datenbank Verbindung"
-
-#: ../../mod/setup.php:282
-msgid ""
-"In order to install Red Matrix we need to know how to connect to your "
-"database."
-msgstr "Um die Red-Matrix installieren zu können, müssen wir wissen, wie wir eine Verbindung zu Deiner Datenbank aufbauen können."
-
-#: ../../mod/setup.php:283
-msgid ""
-"Please contact your hosting provider or site administrator if you have "
-"questions about these settings."
-msgstr "Bitte kontaktiere Deinen Hosting-Provider oder Administrator, falls Du Fragen zu diesen Einstellungen hast."
-
-#: ../../mod/setup.php:284
-msgid ""
-"The database you specify below should already exist. If it does not, please "
-"create it before continuing."
-msgstr "Die Datenbank, die Du weiter unten angibst, sollte bereits existieren. Sollte das noch nicht der Fall sein, erzeuge sie bitte bevor Du fortfährst."
-
-#: ../../mod/setup.php:288
-msgid "Database Server Name"
-msgstr "Datenbank-Servername"
-
-#: ../../mod/setup.php:288
-msgid "Default is localhost"
-msgstr "Standard ist localhost"
-
-#: ../../mod/setup.php:289
-msgid "Database Port"
-msgstr "Datenbank-Port"
-
-#: ../../mod/setup.php:289
-msgid "Communication port number - use 0 for default"
-msgstr "Port-Nummer für die Kommunikation – verwende 0 für die Standardeinstellung"
-
-#: ../../mod/setup.php:290
-msgid "Database Login Name"
-msgstr "Datenbank-Benutzername"
-
-#: ../../mod/setup.php:291
-msgid "Database Login Password"
-msgstr "Datenbank-Kennwort"
-
-#: ../../mod/setup.php:292
-msgid "Database Name"
-msgstr "Datenbank-Name"
-
-#: ../../mod/setup.php:294 ../../mod/setup.php:336
-msgid "Site administrator email address"
-msgstr "E-Mail Adresse des Seiten-Administrators"
-
-#: ../../mod/setup.php:294 ../../mod/setup.php:336
-msgid ""
-"Your account email address must match this in order to use the web admin "
-"panel."
-msgstr "Die E-Mail-Adresse Deines Accounts muss dieser Adresse entsprechen, damit Du Zugriff zur Administrations-Seite erhältst."
-
-#: ../../mod/setup.php:295 ../../mod/setup.php:338
-msgid "Website URL"
-msgstr "Server-URL"
-
-#: ../../mod/setup.php:295 ../../mod/setup.php:338
-msgid "Please use SSL (https) URL if available."
-msgstr "Nutze wenn möglich eine SSL-URL (https)."
-
-#: ../../mod/setup.php:298 ../../mod/setup.php:341
-msgid "Please select a default timezone for your website"
-msgstr "Standard-Zeitzone für Deinen Server"
-
-#: ../../mod/setup.php:325
-msgid "Site settings"
-msgstr "Seiteneinstellungen"
-
-#: ../../mod/setup.php:384
-msgid "Could not find a command line version of PHP in the web server PATH."
-msgstr "Konnte die Kommandozeilen-Version von PHP nicht im PATH des Web-Servers finden."
-
-#: ../../mod/setup.php:385
-msgid ""
-"If you don't have a command line version of PHP installed on server, you "
-"will not be able to run background polling via cron."
-msgstr "Ohne Kommandozeilen-Version von PHP auf dem Server wirst Du nicht in der Lage sein, Hintergrundprozesse via cron auszuführen."
-
-#: ../../mod/setup.php:389
-msgid "PHP executable path"
-msgstr "PHP Pfad zu ausführbarer Datei"
-
-#: ../../mod/setup.php:389
-msgid ""
-"Enter full path to php executable. You can leave this blank to continue the "
-"installation."
-msgstr "Gib den vollen Pfad zum PHP-Interpreter an. Du kannst dieses Feld frei lassen und mit der Installation fortfahren."
-
-#: ../../mod/setup.php:394
-msgid "Command line PHP"
-msgstr "PHP Befehlszeile"
-
-#: ../../mod/setup.php:403
-msgid ""
-"The command line version of PHP on your system does not have "
-"\"register_argc_argv\" enabled."
-msgstr "Bei der Kommandozeilen-Version von PHP auf Deinem System ist \"register_argc_argv\" nicht aktiviert."
-
-#: ../../mod/setup.php:404
-msgid "This is required for message delivery to work."
-msgstr "Das wird benötigt, damit die Auslieferung von Nachrichten funktioniert."
-
-#: ../../mod/setup.php:406
-msgid "PHP register_argc_argv"
-msgstr "PHP register_argc_argv"
-
-#: ../../mod/setup.php:427
-msgid ""
-"Error: the \"openssl_pkey_new\" function on this system is not able to "
-"generate encryption keys"
-msgstr "Fehler: Die „openssl_pkey_new“-Funktion auf diesem System ist nicht in der Lage, Schlüssel für die Verschlüsselung zu erzeugen."
-
-#: ../../mod/setup.php:428
-msgid ""
-"If running under Windows, please see "
-"\"http://www.php.net/manual/en/openssl.installation.php\"."
-msgstr "Wenn Du Windows verwendest, findest Du unter http://www.php.net/manual/en/openssl.installation.php eine Installationsanleitung."
-
-#: ../../mod/setup.php:430
-msgid "Generate encryption keys"
-msgstr "Verschlüsselungsschlüssel generieren"
-
-#: ../../mod/setup.php:437
-msgid "libCurl PHP module"
-msgstr "libCurl-PHP-Modul"
-
-#: ../../mod/setup.php:438
-msgid "GD graphics PHP module"
-msgstr "GD-Grafik-PHP-Modul"
-
-#: ../../mod/setup.php:439
-msgid "OpenSSL PHP module"
-msgstr "OpenSSL-PHP-Modul"
-
-#: ../../mod/setup.php:440
-msgid "mysqli PHP module"
-msgstr "mysqli-PHP-Modul"
-
-#: ../../mod/setup.php:441
-msgid "mb_string PHP module"
-msgstr "mb_string-PHP-Modul"
-
-#: ../../mod/setup.php:442
-msgid "mcrypt PHP module"
-msgstr "mcrypt-PHP-Modul"
-
-#: ../../mod/setup.php:447 ../../mod/setup.php:449
-msgid "Apache mod_rewrite module"
-msgstr "Apache-mod_rewrite-Modul"
-
-#: ../../mod/setup.php:447
-msgid ""
-"Error: Apache webserver mod-rewrite module is required but not installed."
-msgstr "Fehler: Das Apache-Modul mod-rewrite wird benötigt, ist aber nicht installiert."
-
-#: ../../mod/setup.php:453 ../../mod/setup.php:456
-msgid "proc_open"
-msgstr "proc_open"
-
-#: ../../mod/setup.php:453
-msgid ""
-"Error: proc_open is required but is either not installed or has been "
-"disabled in php.ini"
-msgstr "Fehler: proc_open wird benötigt, ist aber entweder nicht installiert oder wurde in der php.ini deaktiviert"
-
-#: ../../mod/setup.php:461
-msgid "Error: libCURL PHP module required but not installed."
-msgstr "Fehler: Das PHP-Modul libCURL wird benötigt, ist aber nicht installiert."
-
-#: ../../mod/setup.php:465
-msgid ""
-"Error: GD graphics PHP module with JPEG support required but not installed."
-msgstr "Fehler: Das PHP-Modul GD-Grafik mit JPEG-Unterstützung wird benötigt, ist aber nicht installiert."
-
-#: ../../mod/setup.php:469
-msgid "Error: openssl PHP module required but not installed."
-msgstr "Fehler: Das PHP-Modul openssl wird benötigt, ist aber nicht installiert."
-
-#: ../../mod/setup.php:473
-msgid "Error: mysqli PHP module required but not installed."
-msgstr "Fehler: Das PHP-Modul mysqli wird benötigt, ist aber nicht installiert."
-
-#: ../../mod/setup.php:477
-msgid "Error: mb_string PHP module required but not installed."
-msgstr "Fehler: Das PHP-Modul mb_string wird benötigt, ist aber nicht installiert."
-
-#: ../../mod/setup.php:481
-msgid "Error: mcrypt PHP module required but not installed."
-msgstr "Fehler: Das PHP-Modul mcrypt wird benötigt, ist aber nicht installiert."
-
-#: ../../mod/setup.php:497
-msgid ""
-"The web installer needs to be able to create a file called \".htconfig.php\""
-" in the top folder of your web server and it is unable to do so."
-msgstr "Der Installations-Assistent muss in der Lage sein, die Datei \".htconfig.php\" im Stammverzeichnis des Web-Servers anzulegen, ist er aber nicht."
-
-#: ../../mod/setup.php:498
-msgid ""
-"This is most often a permission setting, as the web server may not be able "
-"to write files in your folder - even if you can."
-msgstr "Meist liegt das daran, dass der Nutzer, unter dem der Web-Server läuft, keine Rechte Schreibrechte in dem Verzeichnis hat – selbst wenn Du selbst das darfst."
-
-#: ../../mod/setup.php:499
-msgid ""
-"At the end of this procedure, we will give you a text to save in a file "
-"named .htconfig.php in your Red top folder."
-msgstr "Am Schluss dieses Vorgangs wird ein Text generiert, den Du unter dem Dateinamen .htconfig.php im Stammverzeichnis Deiner Red-Installation speichern musst."
-
-#: ../../mod/setup.php:500
-msgid ""
-"You can alternatively skip this procedure and perform a manual installation."
-" Please see the file \"install/INSTALL.txt\" for instructions."
-msgstr "Alternativ kannst Du diesen Schritt überspringen und die Installation manuell vornehmen. Lies dazu die Datei install/INSTALL.txt."
-
-#: ../../mod/setup.php:503
-msgid ".htconfig.php is writable"
-msgstr ".htconfig.php ist beschreibbar"
-
-#: ../../mod/setup.php:513
-msgid ""
-"Red uses the Smarty3 template engine to render its web views. Smarty3 "
-"compiles templates to PHP to speed up rendering."
-msgstr "Red verwendet Smarty3 um Vorlagen für die Webdarstellung zu übersetzen. Smarty3 übersetzt diese Vorlagen nach PHP, um die Darstellung zu beschleunigen."
-
-#: ../../mod/setup.php:514
-msgid ""
-"In order to store these compiled templates, the web server needs to have "
-"write access to the directory view/tpl/smarty3/ under the Red top level "
-"folder."
-msgstr "Um die übersetzten Vorlagen speichern zu können muss der Webserver Schreibzugriff auf das Verzeichnis view/tpl/smarty3/ unterhalb des Red-Stammverzeichnisses haben."
-
-#: ../../mod/setup.php:515 ../../mod/setup.php:533
-msgid ""
-"Please ensure that the user that your web server runs as (e.g. www-data) has"
-" write access to this folder."
-msgstr "Bitte stelle sicher, dass der Nutzer, unter dem der Webserver läuft (z.B. www-data), Schreibzugriff auf dieses Verzeichnis hat."
-
-#: ../../mod/setup.php:516
-msgid ""
-"Note: as a security measure, you should give the web server write access to "
-"view/tpl/smarty3/ only--not the template files (.tpl) that it contains."
-msgstr "Hinweis: Als Sicherheitsvorkehrung solltest Du dem Webserver nur Schreib-Zugriff auf das Verzeichnis view/tpl/smarty3 geben, nicht auf die Vorlagen (.tpl-Dateien) in view/tpl/ ."
-
-#: ../../mod/setup.php:519
-msgid "view/tpl/smarty3 is writable"
-msgstr "view/tpl/smarty3 ist beschreibbar"
-
-#: ../../mod/setup.php:532
-msgid ""
-"Red uses the store directory to save uploaded files. The web server needs to"
-" have write access to the store directory under the Red top level folder"
-msgstr "Red benutzt das Verzeichnis store, um hochgeladene Dateien zu speichern. Der Web-Server benötigt Schreibrechte für dieses Verzeichnis direkt unterhalb des Red-Stammverzeichnisses"
-
-#: ../../mod/setup.php:536
-msgid "store is writable"
-msgstr "store ist schreibbar"
-
-#: ../../mod/setup.php:551
-msgid "SSL certificate validation"
-msgstr "SSL Zertifikatverifizierung"
-
-#: ../../mod/setup.php:551
-msgid ""
-"SSL certificate cannot be validated. Fix certificate or disable https access"
-" to this site."
-msgstr "Das SSL-Zertifikat konnte nicht validiert werden. Korrigiere das Zertifikat oder deaktiviere den HTTPS-Zugriff auf diesen Server."
-
-#: ../../mod/setup.php:558
-msgid ""
-"Url rewrite in .htaccess is not working. Check your server configuration."
-msgstr "URL rewrite via .htaccess funktioniert nicht. Überprüfe Deine Server-Konfiguration."
-
-#: ../../mod/setup.php:560
-msgid "Url rewrite is working"
-msgstr "Url rewrite funktioniert"
-
-#: ../../mod/setup.php:570
-msgid ""
-"The database configuration file \".htconfig.php\" could not be written. "
-"Please use the enclosed text to create a configuration file in your web "
-"server root."
-msgstr "Die Datenbank-Konfigurationsdatei „.htconfig.php“ konnte nicht geschrieben werden. Bitte verwende den unten angegebenen Text, um die Konfigurationsdatei im Stammverzeichnis des Webservers anzulegen."
-
-#: ../../mod/setup.php:594
-msgid "Errors encountered creating database tables."
-msgstr "Fehler beim Anlegen der Datenbank-Tabellen aufgetreten."
-
-#: ../../mod/setup.php:607
-msgid "<h1>What next</h1>"
-msgstr "<h1>Was als Nächstes</h1>"
-
-#: ../../mod/setup.php:608
-msgid ""
-"IMPORTANT: You will need to [manually] setup a scheduled task for the "
-"poller."
-msgstr "WICHTIG: Du musst [manuell] einen Cronjob für den Poller einrichten."
-
-#: ../../mod/siteinfo.php:57
-#, php-format
-msgid "Version %s"
-msgstr "Version %s"
-
-#: ../../mod/siteinfo.php:76
-msgid "Installed plugins/addons/apps:"
-msgstr "Installierte Plugins/Addons/Apps"
-
-#: ../../mod/siteinfo.php:89
-msgid "No installed plugins/addons/apps"
-msgstr "Keine installierten Plugins/Addons/Apps"
-
-#: ../../mod/siteinfo.php:93
-msgid "Project Donations"
-msgstr "Projekt Spenden"
-
-#: ../../mod/siteinfo.php:94
-msgid ""
-"<p>The Red Matrix is provided for you by volunteers working in their spare "
-"time. Your support will help us to build a better, freer, and privacy "
-"respecting web. Select the following option for a one-time donation of your "
-"choosing</p>"
-msgstr ""
-
-#: ../../mod/siteinfo.php:95
-msgid "<p>or</p>"
-msgstr "<p>oder</p>"
-
-#: ../../mod/siteinfo.php:96
-msgid "Recurring Donation Options"
-msgstr "Optionen für regelmäßige Spenden"
-
-#: ../../mod/siteinfo.php:115
-msgid "Red"
-msgstr "Red"
-
-#: ../../mod/siteinfo.php:116
-msgid ""
-"This is a hub of the Red Matrix - a global cooperative network of "
-"decentralised privacy enhanced websites."
-msgstr "Dieser Server ist Teil der Red-Matrix – einem global vernetzten Verbund aus dezentralen Websites mit Rücksicht auf die Privatsphäre."
-
-#: ../../mod/siteinfo.php:119
-msgid "Running at web location"
-msgstr "Erreichbar unter der Web-Adresse"
-
-#: ../../mod/siteinfo.php:120
-msgid ""
-"Please visit <a href=\"http://getzot.com\">GetZot.com</a> to learn more "
-"about the Red Matrix."
-msgstr "Besuche <a href=\"http://getzot.com\">GetZot.com</a>, um mehr über die Red-Matrix zu erfahren."
-
-#: ../../mod/siteinfo.php:121
-msgid "Bug reports and issues: please visit"
-msgstr "Probleme oder Fehler gefunden? Bitte besuche"
-
-#: ../../mod/siteinfo.php:124
-msgid ""
-"Suggestions, praise, etc. - please email \"redmatrix\" at librelist - dot "
-"com"
-msgstr "Vorschläge, Lob, usw.: E-Mail an 'redmatrix' at librelist - dot - com"
-
-#: ../../mod/siteinfo.php:126
-msgid "Site Administrators"
-msgstr "Administratoren"
-
-#: ../../mod/new_channel.php:107
-msgid "Add a Channel"
-msgstr "Kanal hinzufügen"
-
-#: ../../mod/new_channel.php:108
-msgid ""
-"A channel is your own collection of related web pages. A channel can be used"
-" to hold social network profiles, blogs, conversation groups and forums, "
-"celebrity pages, and much more. You may create as many channels as your "
-"service provider allows."
-msgstr "Ein Kanal ist Deine eigene Sammlung von verbundenen Webseiten. Ein Kanal kann genutzt werden, um ein Social-Network-Profil, ein Blog, eine Gesprächsgruppe oder ein Forum, Promi-Seiten und vieles mehr zu erstellen. Du kannst so viele Kanäle erstellen, wie es der Betreiber Deiner Seite zulässt."
-
-#: ../../mod/new_channel.php:111
-msgid "Examples: \"Bob Jameson\", \"Lisa and her Horses\", \"Soccer\", \"Aviation Group\" "
-msgstr "Beispiele: „Horst Weidinger“, „Lisa und ihr Meerschweinchen“, „Fußball“, „Segelflieger-Forum“ "
-
-#: ../../mod/new_channel.php:112
-msgid "Choose a short nickname"
-msgstr "Wähle einen kurzen Spitznamen"
-
-#: ../../mod/new_channel.php:113
-msgid ""
-"Your nickname will be used to create an easily remembered channel address "
-"(like an email address) which you can share with others."
-msgstr "Dein Spitzname wird verwendet, um eine leicht zu merkende Kanal-Adresse (ähnlich einer E-Mail-Adresse) zu erzeugen, die Du mit anderen austauschen kannst."
-
-#: ../../mod/new_channel.php:114
-msgid "Or <a href=\"import\">import an existing channel</a> from another location"
-msgstr "Oder <a href=\"import\">importiere einen bestehenden Kanal</a> von einem anderen Server"
-
-#: ../../mod/lostpass.php:15
-msgid "No valid account found."
-msgstr "Kein gültiges Konto gefunden."
-
-#: ../../mod/lostpass.php:29
-msgid "Password reset request issued. Check your email."
-msgstr "Zurücksetzen des Passworts eingeleitet. Schau in Deine E-Mails."
-
-#: ../../mod/lostpass.php:35 ../../mod/lostpass.php:102
-#, php-format
-msgid "Site Member (%s)"
-msgstr "Nutzer (%s)"
-
-#: ../../mod/lostpass.php:40
-#, php-format
-msgid "Password reset requested at %s"
-msgstr "Passwort-Rücksetzung auf %s angefordert"
-
-#: ../../mod/lostpass.php:63
-msgid ""
-"Request could not be verified. (You may have previously submitted it.) "
-"Password reset failed."
-msgstr "Die Anfrage konnte nicht verifiziert werden. (Vielleicht hast Du schon einmal auf den Link in der E-Mail geklickt?) Passwort-Rücksetzung fehlgeschlagen."
-
-#: ../../mod/lostpass.php:85 ../../boot.php:1436
-msgid "Password Reset"
-msgstr "Zurücksetzen des Kennworts"
-
-#: ../../mod/lostpass.php:86
-msgid "Your password has been reset as requested."
-msgstr "Dein Passwort wurde wie angefordert neu erstellt."
-
-#: ../../mod/lostpass.php:87
-msgid "Your new password is"
-msgstr "Dein neues Passwort lautet"
-
-#: ../../mod/lostpass.php:88
-msgid "Save or copy your new password - and then"
-msgstr "Speichere oder kopiere Dein neues Passwort – und dann"
-
-#: ../../mod/lostpass.php:89
-msgid "click here to login"
-msgstr "Klicke hier, um dich anzumelden"
-
-#: ../../mod/lostpass.php:90
-msgid ""
-"Your password may be changed from the <em>Settings</em> page after "
-"successful login."
-msgstr "Dein Passwort kann unter <em>Einstellungen</em> nach einer erfolgreichen Anmeldung geändert werden."
-
-#: ../../mod/lostpass.php:107
-#, php-format
-msgid "Your password has changed at %s"
-msgstr "Auf %s wurde Dein Passwort geändert"
-
-#: ../../mod/lostpass.php:122
-msgid "Forgot your Password?"
-msgstr "Kennwort vergessen?"
-
-#: ../../mod/lostpass.php:123
-msgid ""
-"Enter your email address and submit to have your password reset. Then check "
-"your email for further instructions."
-msgstr "Gib Deine E-Mail-Adresse ein, um Dein Passwort zurücksetzen zu lassen. Du erhältst dann weitere Anweisungen per E-Mail."
-
-#: ../../mod/lostpass.php:124
-msgid "Email Address"
-msgstr "E-Mail Adresse"
-
-#: ../../mod/lostpass.php:125
-msgid "Reset"
-msgstr "Zurücksetzen"
-
-#: ../../mod/import.php:36
-msgid "Nothing to import."
-msgstr "Nichts zu importieren."
-
-#: ../../mod/import.php:58
-msgid "Unable to download data from old server"
-msgstr "Daten können vom alten Server nicht heruntergeladen werden"
-
-#: ../../mod/import.php:64
-msgid "Imported file is empty."
-msgstr "Die importierte Datei ist leer."
-
-#: ../../mod/import.php:88
-msgid ""
-"Cannot create a duplicate channel identifier on this system. Import failed."
-msgstr "Kann keinen doppelten Kanal-Identifikator auf diesem System erzeugen (Spitzname oder Hash schon belegt). Import fehlgeschlagen."
-
-#: ../../mod/import.php:106
-msgid "Channel clone failed. Import failed."
-msgstr "Klonen des Kanals fehlgeschlagen. Import fehlgeschlagen."
-
-#: ../../mod/import.php:116
-msgid "Cloned channel not found. Import failed."
-msgstr "Geklonter Kanal nicht gefunden. Import fehlgeschlagen."
-
-#: ../../mod/import.php:358
-msgid "Import completed."
-msgstr "Import abgeschlossen."
-
-#: ../../mod/import.php:371
-msgid "You must be logged in to use this feature."
-msgstr "Du musst angemeldet sein um diese Funktion zu nutzen."
-
-#: ../../mod/import.php:376
-msgid "Import Channel"
-msgstr "Kanal importieren"
-
-#: ../../mod/import.php:377
-msgid ""
-"Use this form to import an existing channel from a different server/hub. You"
-" may retrieve the channel identity from the old server/hub via the network "
-"or provide an export file. Only identity and connections/relationships will "
-"be imported. Importation of content is not yet available."
-msgstr "Verwende dieses Formular, um einen existierenden Kanal von einem anderen Red-Server zu importieren. Du kannst den Kanal direkt vom bisherigen Red-Server über das Netzwerk importieren oder eine exportierte Sicherheitskopie benutzen. Es werden ausschließlich die Identität und die Verbindungen/Beziehungen importiert. Das Importieren von Inhalten ist derzeit nicht möglich."
-
-#: ../../mod/import.php:378
-msgid "File to Upload"
-msgstr "Hochzuladende Datei:"
-
-#: ../../mod/import.php:379
-msgid "Or provide the old server/hub details"
-msgstr "Oder gib die Details Deines bisherigen Red-Servers ein"
-
-#: ../../mod/import.php:380
-msgid "Your old identity address (xyz@example.com)"
-msgstr "Bisherige Kanal-Adresse (xyz@example.com)"
-
-#: ../../mod/import.php:381
-msgid "Your old login email address"
-msgstr "Ihre alte Login E-Mail Adresse"
-
-#: ../../mod/import.php:382
-msgid "Your old login password"
-msgstr "Ihr altes Login Kennwort"
-
-#: ../../mod/import.php:383
-msgid ""
-"For either option, please choose whether to make this hub your new primary "
-"address, or whether your old location should continue this role. You will be"
-" able to post from either location, but only one can be marked as the "
-"primary location for files, photos, and media."
-msgstr "Egal welche Option Du wählst, bitte lege fest, ob dieser Server die neue primäre Adresse dieses Kanals sein soll, oder ob der bisherige Red-Server diese Rolle weiterhin wahrnimmt. Du kannst von beiden Servern aus posten, aber nur einer kann der primäre Ort Deiner Dateien, Fotos und Medien sein."
-
-#: ../../mod/import.php:384
-msgid "Make this hub my primary location"
-msgstr "Dieser Red-Server ist mein primärer Server."
+#: ../../mod/viewconnections.php:58
+msgid "No connections."
+msgstr "Keine Verbindungen."
-#: ../../mod/manage.php:64
+#: ../../mod/viewconnections.php:71
#, php-format
-msgid "You have created %1$.0f of %2$.0f allowed channels."
-msgstr "Du hast %1$.0f von maximal %2$.0f erlaubten Kanälen eingerichtet."
-
-#: ../../mod/manage.php:72
-msgid "Create a new channel"
-msgstr "Erzeuge neuen Kanal"
-
-#: ../../mod/manage.php:77
-msgid "Channel Manager"
-msgstr "Kanal-Manager"
-
-#: ../../mod/manage.php:78
-msgid "Current Channel"
-msgstr "Aktueller Kanal"
-
-#: ../../mod/manage.php:80
-msgid "Attach to one of your channels by selecting it."
-msgstr "Wähle einen Deiner Kanäle aus, um ihn zu verwenden."
+msgid "Visit %s's profile [%s]"
+msgstr "%ss Profil [%s] besuchen"
-#: ../../mod/manage.php:81
-msgid "Default Channel"
-msgstr "Standard Kanal"
+#: ../../mod/viewconnections.php:86
+msgid "View Connnections"
+msgstr "Zeige Verbindungen"
-#: ../../mod/manage.php:82
-msgid "Make Default"
-msgstr "Zum Standard machen"
+#: ../../mod/magic.php:70
+msgid "Hub not found."
+msgstr "Server nicht gefunden."
#: ../../mod/vote.php:97
msgid "Total votes"
@@ -6348,26 +7650,6 @@ msgstr "Stimmen gesamt"
msgid "Average Rating"
msgstr "Durchschnittliche Bewertung"
-#: ../../mod/match.php:16
-msgid "Profile Match"
-msgstr "Profil-Ãœbereinstimmungen"
-
-#: ../../mod/match.php:24
-msgid "No keywords to match. Please add keywords to your default profile."
-msgstr "Keine Schlüsselwörter für den Abgleich gefunden. Bitte füge Schlüsselwörter zu Deinem Standardprofil hinzu."
-
-#: ../../mod/match.php:61
-msgid "is interested in:"
-msgstr "interessiert sich für:"
-
-#: ../../mod/match.php:69
-msgid "No matches"
-msgstr "Keine Ãœbereinstimmungen"
-
-#: ../../mod/zfinger.php:23
-msgid "invalid target signature"
-msgstr "Ungültige Signatur des Ziels"
-
#: ../../mod/mail.php:33
msgid "Unable to lookup recipient."
msgstr "Konnte den Empfänger nicht finden."
@@ -6384,228 +7666,232 @@ msgstr "Verifizierung des angeforderten Kanals fehlgeschlagen."
msgid "Selected channel has private message restrictions. Send failed."
msgstr "Der ausgewählte Kanal hat Einschränkungen bzgl. privater Nachrichten. Senden fehlgeschlagen."
-#: ../../mod/mail.php:121 ../../mod/message.php:31
-msgid "Messages"
-msgstr "Nachrichten"
-
-#: ../../mod/mail.php:132
+#: ../../mod/mail.php:135
msgid "Message deleted."
msgstr "Nachricht gelöscht."
-#: ../../mod/mail.php:149
+#: ../../mod/mail.php:152
msgid "Message recalled."
msgstr "Nachricht widerrufen."
-#: ../../mod/mail.php:206
+#: ../../mod/mail.php:218
msgid "Send Private Message"
msgstr "Private Nachricht senden"
-#: ../../mod/mail.php:207 ../../mod/mail.php:323
+#: ../../mod/mail.php:219 ../../mod/mail.php:336
msgid "To:"
msgstr "An:"
-#: ../../mod/mail.php:212 ../../mod/mail.php:325
+#: ../../mod/mail.php:224 ../../mod/mail.php:338
msgid "Subject:"
msgstr "Betreff:"
-#: ../../mod/mail.php:249
+#: ../../mod/mail.php:235
+msgid "Send"
+msgstr "Absenden"
+
+#: ../../mod/mail.php:262
msgid "Message not found."
msgstr "Nachricht nicht gefunden."
-#: ../../mod/mail.php:292 ../../mod/message.php:72
+#: ../../mod/mail.php:305
msgid "Delete message"
msgstr "Nachricht löschen"
-#: ../../mod/mail.php:293
+#: ../../mod/mail.php:306
msgid "Recall message"
msgstr "Nachricht widerrufen"
-#: ../../mod/mail.php:295
+#: ../../mod/mail.php:308
msgid "Message has been recalled."
msgstr "Die Nachricht wurde widerrufen."
-#: ../../mod/mail.php:312
+#: ../../mod/mail.php:325
msgid "Private Conversation"
msgstr "Private Unterhaltung"
-#: ../../mod/mail.php:316
+#: ../../mod/mail.php:329 ../../mod/message.php:72
msgid "Delete conversation"
msgstr "Unterhaltung löschen"
-#: ../../mod/mail.php:318
+#: ../../mod/mail.php:331
msgid ""
"No secure communications available. You <strong>may</strong> be able to "
"respond from the sender's profile page."
msgstr "Keine sichere Kommunikation verfügbar. <strong>Eventuell</strong> kannst Du auf der Profilseite des Absenders antworten."
-#: ../../mod/mail.php:322
+#: ../../mod/mail.php:335
msgid "Send Reply"
msgstr "Antwort senden"
-#: ../../mod/openid.php:26
-msgid "OpenID protocol error. No ID returned."
-msgstr "OpenID Protokollfehler. Keine ID zurückgegeben."
+#: ../../mod/wall_upload.php:34
+msgid "Wall Photos"
+msgstr "Wall Fotos"
-#: ../../mod/editlayout.php:72
-msgid "Edit Layout"
-msgstr "Layout bearbeiten"
+#: ../../mod/match.php:16
+msgid "Profile Match"
+msgstr "Profil-Ãœbereinstimmungen"
-#: ../../mod/editlayout.php:82
-msgid "Delete layout?"
-msgstr "Layout löschen?"
+#: ../../mod/match.php:24
+msgid "No keywords to match. Please add keywords to your default profile."
+msgstr "Keine Schlüsselwörter für den Abgleich gefunden. Bitte füge Schlüsselwörter zu Deinem Standardprofil hinzu."
-#: ../../mod/editlayout.php:147
-msgid "Delete Layout"
-msgstr "Layout löschen"
+#: ../../mod/match.php:61
+msgid "is interested in:"
+msgstr "interessiert sich für:"
-#: ../../mod/profile_photo.php:44
-msgid "Image uploaded but image cropping failed."
-msgstr "Bild hochgeladen, aber das Zurechtschneiden schlug fehl."
+#: ../../mod/match.php:69
+msgid "No matches"
+msgstr "Keine Ãœbereinstimmungen"
-#: ../../mod/profile_photo.php:97
-msgid "Image resize failed."
-msgstr "Bild-Anpassung fehlgeschlagen."
+#: ../../mod/menu.php:31
+msgid "Menu updated."
+msgstr "Menü aktualisiert."
-#: ../../mod/profile_photo.php:141
-msgid ""
-"Shift-reload the page or clear browser cache if the new photo does not "
-"display immediately."
-msgstr "Leere den Browser Cache oder nutze Umschalten-Neu Laden, falls das neue Foto nicht sofort angezeigt wird."
+#: ../../mod/menu.php:35
+msgid "Unable to update menu."
+msgstr "Kann Menü nicht aktualisieren."
-#: ../../mod/profile_photo.php:163
-#, php-format
-msgid "Image exceeds size limit of %d"
-msgstr "Bild ist größer als das Limit von %d"
+#: ../../mod/menu.php:40
+msgid "Menu created."
+msgstr "Menü erstellt."
-#: ../../mod/profile_photo.php:172
-msgid "Unable to process image."
-msgstr "Kann Bild nicht verarbeiten."
+#: ../../mod/menu.php:44
+msgid "Unable to create menu."
+msgstr "Kann Menü nicht erstellen."
-#: ../../mod/profile_photo.php:214 ../../mod/profile_photo.php:262
-msgid "Photo not available."
-msgstr "Foto nicht verfügbar."
+#: ../../mod/menu.php:76
+msgid "Manage Menus"
+msgstr "Menüs verwalten"
-#: ../../mod/profile_photo.php:281
-msgid "Upload File:"
-msgstr "Datei hochladen:"
+#: ../../mod/menu.php:79
+msgid "Drop"
+msgstr "Löschen"
-#: ../../mod/profile_photo.php:282
-msgid "Select a profile:"
-msgstr "Wählen Sie ein Profil:"
+#: ../../mod/menu.php:81
+msgid "Bookmarks allowed"
+msgstr "Lesezeichen erlaubt"
-#: ../../mod/profile_photo.php:283
-msgid "Upload Profile Photo"
-msgstr "Lade neues Profilfoto hoch"
+#: ../../mod/menu.php:82
+msgid "Create a new menu"
+msgstr "Neues Menü erstellen"
-#: ../../mod/profile_photo.php:284
-msgid "Upload"
-msgstr "Hochladen"
+#: ../../mod/menu.php:83
+msgid "Delete this menu"
+msgstr "Lösche dieses Menü"
-#: ../../mod/profile_photo.php:288
-msgid "skip this step"
-msgstr "diesen Schritt überspringen"
+#: ../../mod/menu.php:84 ../../mod/menu.php:125
+msgid "Edit menu contents"
+msgstr "Bearbeite Menü Inhalte"
-#: ../../mod/profile_photo.php:288
-msgid "select a photo from your photo albums"
-msgstr "ein Foto aus meinen Fotoalben"
+#: ../../mod/menu.php:85
+msgid "Edit this menu"
+msgstr "Dieses Menü bearbeiten"
-#: ../../mod/profile_photo.php:302
-msgid "Crop Image"
-msgstr "Bild zuschneiden"
+#: ../../mod/menu.php:96
+msgid "New Menu"
+msgstr "Neues Menü"
-#: ../../mod/profile_photo.php:303
-msgid "Please adjust the image cropping for optimum viewing."
-msgstr "Bitte schneide das Bild für eine optimale Anzeige passend zu."
+#: ../../mod/menu.php:97 ../../mod/menu.php:126
+msgid "Menu name"
+msgstr "Menü Name"
-#: ../../mod/profile_photo.php:305
-msgid "Done Editing"
-msgstr "Bearbeitung fertigstellen"
+#: ../../mod/menu.php:97 ../../mod/menu.php:126
+msgid "Must be unique, only seen by you"
+msgstr "Muss eindeutig sein, ist aber nur für Dich sichtbar"
-#: ../../mod/profile_photo.php:340
-msgid "Image uploaded successfully."
-msgstr "Bild erfolgreich hochgeladen."
+#: ../../mod/menu.php:98 ../../mod/menu.php:127
+msgid "Menu title"
+msgstr "Menü Titel"
-#: ../../mod/profile_photo.php:342
-msgid "Image upload failed."
-msgstr "Hochladen des Bilds fehlgeschlagen."
+#: ../../mod/menu.php:98 ../../mod/menu.php:127
+msgid "Menu title as seen by others"
+msgstr "Menü Titel wie er von anderen gesehen wird"
-#: ../../mod/profile_photo.php:351
-#, php-format
-msgid "Image size reduction [%s] failed."
-msgstr "Reduzierung der Bildgröße [%s] fehlgeschlagen."
+#: ../../mod/menu.php:99 ../../mod/menu.php:128
+msgid "Allow bookmarks"
+msgstr "Erlaube Lesezeichen"
-#: ../../mod/connections.php:191 ../../mod/connections.php:263
-msgid "Blocked"
-msgstr "Blockiert"
+#: ../../mod/menu.php:99 ../../mod/menu.php:128
+msgid "Menu may be used to store saved bookmarks"
+msgstr "Im Menü können gespeicherte Lesezeichen abgelegt werden"
-#: ../../mod/connections.php:196 ../../mod/connections.php:270
-msgid "Ignored"
-msgstr "Ignoriert"
+#: ../../mod/menu.php:114
+msgid "Menu deleted."
+msgstr "Menü gelöscht."
-#: ../../mod/connections.php:201 ../../mod/connections.php:284
-msgid "Hidden"
-msgstr "Versteckt"
+#: ../../mod/menu.php:116
+msgid "Menu could not be deleted."
+msgstr "Menü konnte nicht gelöscht werden."
-#: ../../mod/connections.php:206 ../../mod/connections.php:277
-msgid "Archived"
-msgstr "Archiviert"
+#: ../../mod/menu.php:122
+msgid "Edit Menu"
+msgstr "Menü bearbeiten"
-#: ../../mod/connections.php:217
-msgid "All"
-msgstr "Alle"
+#: ../../mod/menu.php:124
+msgid "Add or remove entries to this menu"
+msgstr "Einträge zu diesem Menü hinzufügen oder entfernen"
-#: ../../mod/connections.php:241
-msgid "Suggest new connections"
-msgstr "Neue Verbindungen vorschlagen"
+#: ../../mod/message.php:41
+msgid "Conversation removed."
+msgstr "Unterhaltung gelöscht."
-#: ../../mod/connections.php:247
-msgid "Show pending (new) connections"
-msgstr "Zeige ausstehende (neue) Verbindungsanfragen"
+#: ../../mod/message.php:56
+msgid "No messages."
+msgstr "Keine Nachrichten."
-#: ../../mod/connections.php:253
-msgid "Show all connections"
-msgstr "Zeige alle Verbindungen"
+#: ../../mod/message.php:74
+msgid "D, d M Y - g:i A"
+msgstr "D, d. M Y - G:i"
-#: ../../mod/connections.php:256
-msgid "Unblocked"
-msgstr "Freigegeben"
+#: ../../mod/new_channel.php:109
+msgid "Add a Channel"
+msgstr "Kanal hinzufügen"
-#: ../../mod/connections.php:259
-msgid "Only show unblocked connections"
-msgstr "Zeige nur freigegebene Verbindungen"
+#: ../../mod/new_channel.php:110
+msgid ""
+"A channel is your own collection of related web pages. A channel can be used"
+" to hold social network profiles, blogs, conversation groups and forums, "
+"celebrity pages, and much more. You may create as many channels as your "
+"service provider allows."
+msgstr "Ein Kanal ist Deine eigene Sammlung von verbundenen Webseiten. Ein Kanal kann genutzt werden, um ein Social-Network-Profil, ein Blog, eine Gesprächsgruppe oder ein Forum, Promi-Seiten und vieles mehr zu erstellen. Du kannst so viele Kanäle erstellen, wie es der Betreiber Deiner Seite zulässt."
-#: ../../mod/connections.php:266
-msgid "Only show blocked connections"
-msgstr "Zeige nur blockierte Verbindungen"
+#: ../../mod/new_channel.php:113
+msgid "Examples: \"Bob Jameson\", \"Lisa and her Horses\", \"Soccer\", \"Aviation Group\" "
+msgstr "Beispiele: „Horst Weidinger“, „Lisa und ihr Meerschweinchen“, „Fußball“, „Segelflieger-Forum“ "
-#: ../../mod/connections.php:273
-msgid "Only show ignored connections"
-msgstr "Zeige nur ignorierte Verbindungen"
+#: ../../mod/new_channel.php:114
+msgid "Choose a short nickname"
+msgstr "Wähle einen kurzen Spitznamen"
-#: ../../mod/connections.php:280
-msgid "Only show archived connections"
-msgstr "Zeige nur archivierte Verbindungen"
+#: ../../mod/new_channel.php:115
+msgid ""
+"Your nickname will be used to create an easily remembered channel address "
+"(like an email address) which you can share with others."
+msgstr "Dein Spitzname wird verwendet, um eine leicht zu merkende Kanal-Adresse (ähnlich einer E-Mail-Adresse) zu erzeugen, die Du mit anderen austauschen kannst."
-#: ../../mod/connections.php:287
-msgid "Only show hidden connections"
-msgstr "Zeige nur versteckte Verbindungen"
+#: ../../mod/new_channel.php:116
+msgid "Or <a href=\"import\">import an existing channel</a> from another location"
+msgstr "Oder <a href=\"import\">importiere einen bestehenden Kanal</a> von einem anderen Server"
-#: ../../mod/connections.php:331
-#, php-format
-msgid "%1$s [%2$s]"
-msgstr "%1$s [%2$s]"
+#: ../../mod/new_channel.php:118
+msgid "Channel Type"
+msgstr "Kanaltyp"
-#: ../../mod/connections.php:332
-msgid "Edit contact"
-msgstr "Kontakt bearbeiten"
+#: ../../mod/new_channel.php:119
+msgid ""
+"Please choose a channel type (such as social networking or community forum) "
+"and privacy requirements so we can select the best permissions for you"
+msgstr "Wähle einen Kanaltyp (wie Soziales Netzwerk oder Forum) und Privatsphäre-Vorgaben, so dass wir die passenden Kanal-Zugriffsrechte für Dich setzen können"
-#: ../../mod/connections.php:355
-msgid "Search your connections"
-msgstr "Verbindungen durchsuchen"
+#: ../../mod/home.php:46
+msgid "Red Matrix - &quot;The Network&quot;"
+msgstr "RedMatrix – &quot;Das Netzwerk&quot;"
-#: ../../mod/connections.php:356
-msgid "Finding: "
-msgstr "Ergebnisse:"
+#: ../../mod/home.php:101
+#, php-format
+msgid "Welcome to %s"
+msgstr "Willkommen auf %s"
#: ../../mod/notifications.php:26
msgid "Invalid request identifier."
@@ -6615,17 +7901,21 @@ msgstr "Ungültiger Anfrage-Identifikator."
msgid "Discard"
msgstr "Verwerfen"
-#: ../../mod/notifications.php:93 ../../mod/notify.php:54
+#: ../../mod/notifications.php:94 ../../mod/notify.php:53
msgid "No more system notifications."
msgstr "Keine System-Benachrichtigungen mehr."
-#: ../../mod/notifications.php:97 ../../mod/notify.php:58
+#: ../../mod/notifications.php:98 ../../mod/notify.php:57
msgid "System Notifications"
msgstr "System-Benachrichtigungen"
-#: ../../mod/blocks.php:65
-msgid "Block Name"
-msgstr "Block-Name"
+#: ../../mod/xchan.php:6
+msgid "Xchan Lookup"
+msgstr "Xchan-Suche"
+
+#: ../../mod/xchan.php:9
+msgid "Lookup xchan beginning with (or webbie): "
+msgstr "Nach xchans oder Webbies (Kanal-Adressen) suchen, die wie folgt beginnen:"
#: ../../mod/oexchange.php:23
msgid "Unable to find your hub."
@@ -6635,734 +7925,418 @@ msgstr "Konnte Deinen Server nicht finden."
msgid "Post successful."
msgstr "Veröffentlichung erfolgreich."
-#: ../../mod/editwebpage.php:106
-msgid "Edit Webpage"
-msgstr "Webseite bearbeiten"
-
-#: ../../mod/editwebpage.php:116
-msgid "Delete webpage?"
-msgstr "Webseite löschen?"
-
-#: ../../mod/editwebpage.php:189
-msgid "Delete Webpage"
-msgstr "Webseite löschen"
-
-#: ../../mod/profile.php:64 ../../mod/profile.php:72
-msgid "Access to this profile has been restricted."
-msgstr "Der Zugang zu diesem Profil ist begrenzt."
-
-#: ../../mod/poke.php:159
-msgid "Poke/Prod"
-msgstr "Anstupsen/Knuffen"
-
-#: ../../mod/poke.php:160
-msgid "poke, prod or do other things to somebody"
-msgstr "Stupse Leute an oder mache anderes mit ihnen"
-
-#: ../../mod/poke.php:161
-msgid "Recipient"
-msgstr "Empfänger"
-
-#: ../../mod/poke.php:162
-msgid "Choose what you wish to do to recipient"
-msgstr "Wähle, was Du mit dem/r Empfänger/in tun willst"
-
-#: ../../mod/poke.php:165
-msgid "Make this post private"
-msgstr "Diesen Beitrag privat machen"
-
-#: ../../mod/channel.php:85
-msgid "Insufficient permissions. Request redirected to profile page."
-msgstr "Unzureichende Zugriffsrechte. Die Anfrage wurde zur Profil-Seite umgeleitet."
-
-#: ../../mod/community.php:23
-msgid "Not available."
-msgstr "Nicht verfügbar."
-
-#: ../../mod/community.php:32
-msgid "Community"
-msgstr "Gemeinschaft"
-
-#: ../../mod/community.php:63 ../../mod/community.php:88
-msgid "No results."
-msgstr "Keine Ergebnisse."
-
-#: ../../mod/fsuggest.php:20 ../../mod/fsuggest.php:92
-msgid "Contact not found."
-msgstr "Kontakt nicht gefunden"
-
-#: ../../mod/fsuggest.php:63
-msgid "Friend suggestion sent."
-msgstr "Freundschaftsempfehlung senden."
-
-#: ../../mod/fsuggest.php:97
-msgid "Suggest Friends"
-msgstr "Kontakte vorschlagen"
-
-#: ../../mod/fsuggest.php:99
-#, php-format
-msgid "Suggest a friend for %s"
-msgstr "Schlage %s einen Kontakt vor"
-
-#: ../../mod/editblock.php:86
-msgid "Edit Block"
-msgstr "Block bearbeiten"
-
-#: ../../mod/editblock.php:96
-msgid "Delete block?"
-msgstr "Block löschen?"
-
-#: ../../mod/editblock.php:163
-msgid "Delete Block"
-msgstr "Block löschen"
-
-#: ../../mod/dirprofile.php:114
-msgid "Status: "
-msgstr "Status:"
-
-#: ../../mod/dirprofile.php:115
-msgid "Sexual Preference: "
-msgstr "Sexuelle Ausrichtung:"
-
-#: ../../mod/dirprofile.php:117
-msgid "Homepage: "
-msgstr "Webseite:"
-
-#: ../../mod/dirprofile.php:118
-msgid "Hometown: "
-msgstr "Wohnort:"
-
-#: ../../mod/dirprofile.php:120
-msgid "About: "
-msgstr "Ãœber:"
-
-#: ../../mod/dirprofile.php:168
-msgid "Keywords: "
-msgstr "Schlüsselwörter:"
-
-#: ../../mod/filestorage.php:68
-msgid "Permission Denied."
-msgstr "Zugriff verweigert."
-
-#: ../../mod/filestorage.php:85
-msgid "File not found."
-msgstr "Datei nicht gefunden."
-
-#: ../../mod/filestorage.php:119
-msgid "Edit file permissions"
-msgstr "Dateiberechtigungen bearbeiten"
+#: ../../mod/zfinger.php:23
+msgid "invalid target signature"
+msgstr "Ungültige Signatur des Ziels"
-#: ../../mod/filestorage.php:124 ../../mod/photos.php:607
-#: ../../mod/photos.php:950
-msgid "Permissions"
-msgstr "Berechtigungen"
+#: ../../mod/appman.php:28 ../../mod/appman.php:44
+msgid "App installed."
+msgstr "App installiert."
-#: ../../mod/filestorage.php:126
-msgid "Include all files and sub folders"
-msgstr "Alle Dateien und Unterverzeichnisse einbinden"
+#: ../../mod/appman.php:37
+msgid "Malformed app."
+msgstr "Fehlerhafte App."
-#: ../../mod/filestorage.php:127
-msgid "Return to file list"
-msgstr "Zurück zur Dateiliste"
+#: ../../mod/appman.php:80
+msgid "Embed code"
+msgstr "Code einbetten"
-#: ../../mod/filestorage.php:129
-msgid "Copy/paste this code to attach file to a post"
-msgstr "Diesen Code kopieren und einfügen, um die Datei an einen Beitrag anzuhängen"
+#: ../../mod/appman.php:86
+msgid "Edit App"
+msgstr "App bearbeiten"
-#: ../../mod/filestorage.php:130
-msgid "Copy/paste this URL to link file from a web page"
-msgstr "Diese URL verwenden, um von einer Webseite aus auf die Datei zu verlinken"
+#: ../../mod/appman.php:86
+msgid "Create App"
+msgstr "App erstellen"
-#: ../../mod/filestorage.php:167
-msgid "Download"
-msgstr "Download"
+#: ../../mod/appman.php:91
+msgid "Name of app"
+msgstr "Name der App"
-#: ../../mod/filestorage.php:173
-msgid "Used: "
-msgstr "Verwendet:"
+#: ../../mod/appman.php:92
+msgid "Location (URL) of app"
+msgstr "Ort (URL) der App"
-#: ../../mod/filestorage.php:174
-msgid "[directory]"
-msgstr "[Verzeichnis]"
+#: ../../mod/appman.php:94
+msgid "Photo icon URL"
+msgstr "URL zum Icon"
-#: ../../mod/filestorage.php:176
-msgid "Limit: "
-msgstr "Limit:"
+#: ../../mod/appman.php:94
+msgid "80 x 80 pixels - optional"
+msgstr "80 x 80 Pixel – optional"
-#: ../../mod/suggest.php:35
-msgid ""
-"No suggestions available. If this is a new site, please try again in 24 "
-"hours."
-msgstr "Keine Vorschläge vorhanden. Wenn das ein neuer Server ist, versuche es in 24 Stunden noch einmal."
+#: ../../mod/appman.php:95
+msgid "Version ID"
+msgstr "Versions-ID"
-#: ../../mod/message.php:41
-msgid "Conversation removed."
-msgstr "Unterhaltung gelöscht."
+#: ../../mod/appman.php:96
+msgid "Price of app"
+msgstr "Preis der App"
-#: ../../mod/message.php:56
-msgid "No messages."
-msgstr "Keine Nachrichten."
+#: ../../mod/appman.php:97
+msgid "Location (URL) to purchase app"
+msgstr "Ort (URL), um die App zu kaufen"
-#: ../../mod/message.php:74
-msgid "D, d M Y - g:i A"
-msgstr "D, d. M Y - g:i A"
+#: ../../mod/poll.php:64
+msgid "Poll"
+msgstr "Umfrage"
-#: ../../mod/pubsites.php:22
-msgid "Public Sites"
-msgstr "Öffentliche Server"
+#: ../../mod/poll.php:69
+msgid "View Results"
+msgstr "Ergebnisse"
-#: ../../mod/pubsites.php:25
+#: ../../mod/removeaccount.php:30
msgid ""
-"The listed sites allow public registration into the Red Matrix. All sites in"
-" the matrix are interlinked so membership on any of them conveys membership "
-"in the matrix as a whole. Some sites may require subscription or provide "
-"tiered service plans. The provider links <strong>may</strong> provide "
-"additional details."
-msgstr "Die hier aufgeführten Server erlauben Dir, einen Account in der Red-Matrix anzulegen. Alle Server der Matrix sind miteinander verbunden, so dass die Mitgliedschaft auf einem Server eine Verbindung zu beliebigen anderen Servern der Matrix ermöglicht. Es könnte sein, dass einige dieser Server kostenpflichtig sind oder abgestufte, je nach Umfang kostenpflichtige Mitgliedschaften anbieten. Auf den jeweiligen Seiten <strong>könnten</strong> nähere Details dazu stehen."
-
-#: ../../mod/pubsites.php:31
-msgid "Site URL"
-msgstr "Server-URL"
-
-#: ../../mod/pubsites.php:31
-msgid "Access Type"
-msgstr "Zugangstyp"
+"Account removals are not allowed within 48 hours of changing the account "
+"password."
+msgstr "Das Löschen von Konten innerhalb 48 Stunden nachdem deren Passwort geändert wurde ist nicht erlaubt."
-#: ../../mod/pubsites.php:31
-msgid "Registration Policy"
-msgstr "Registrierungsrichtlinien"
-
-#: ../../mod/register.php:43
-msgid "Maximum daily site registrations exceeded. Please try again tomorrow."
-msgstr "Maximale Anzahl täglicher Neuanmeldungen erreicht. Bitte versuche es morgen noch einmal."
+#: ../../mod/removeaccount.php:57
+msgid "Remove This Account"
+msgstr "Dieses Konto löschen"
-#: ../../mod/register.php:49
+#: ../../mod/removeaccount.php:58
msgid ""
-"Please indicate acceptance of the Terms of Service. Registration failed."
-msgstr "Bitte stimme den Nutzungsbedingungen zu. Registrierung fehlgeschlagen."
-
-#: ../../mod/register.php:77
-msgid "Passwords do not match."
-msgstr "Passwörter stimmen nicht überein."
+"This will completely remove this account including all its channels from the"
+" network. Once this has been done it is not recoverable."
+msgstr "Hiermit wird dieses Nutzerkonto einschließlich all seiner Kanäle komplett aus dem Netzwerk entfernt. Dieser Vorgang kann nicht rückgängig gemacht werden."
-#: ../../mod/register.php:105
+#: ../../mod/removeaccount.php:60
msgid ""
-"Registration successful. Please check your email for validation "
-"instructions."
-msgstr "Registrierung erfolgreich. Eine E-Mail mit weiteren Anweisungen wurde an Dich gesendet."
-
-#: ../../mod/register.php:111
-msgid "Your registration is pending approval by the site owner."
-msgstr "Deine Registrierung muss noch vom Betreiber der Seite freigegeben werden."
-
-#: ../../mod/register.php:114
-msgid "Your registration can not be processed."
-msgstr "Deine Registrierung konnte nicht verarbeitet werden."
-
-#: ../../mod/register.php:147
-msgid "Registration on this site/hub is by approval only."
-msgstr "Anmeldungen auf diesem Server erfordern Zustimmung durch den Administrator"
-
-#: ../../mod/register.php:148
-msgid "<a href=\"pubsites\">Register at another affiliated site/hub</a>"
-msgstr "<a href=\"pubsites\">Registrierung auf einem anderen, angeschlossenen Server</a>"
+"Remove this account, all its channels and all its channel clones from the "
+"network"
+msgstr "Dieses Konto, all seine Kanäle sowie alle Kanal-Klone aus dem Netzwerk löschen"
-#: ../../mod/register.php:156
+#: ../../mod/removeaccount.php:60
msgid ""
-"This site has exceeded the number of allowed daily account registrations. "
-"Please try again tomorrow."
-msgstr "Die maximale Anzahl täglicher Registrierungen auf diesem Server wurde überschritten. Bitte versuche es morgen noch einmal."
-
-#: ../../mod/register.php:167
-msgid "Terms of Service"
-msgstr "Nutzungsbedingungen"
-
-#: ../../mod/register.php:173
-#, php-format
-msgid "I accept the %s for this website"
-msgstr "Ich akzeptiere die %s für diese Webseite"
-
-#: ../../mod/register.php:175
-#, php-format
-msgid "I am over 13 years of age and accept the %s for this website"
-msgstr "Ich bin älter als 13 Jahre und akzeptiere die %s dieser Webseite"
-
-#: ../../mod/register.php:194
-msgid "Membership on this site is by invitation only."
-msgstr "Mitgliedschaft auf dieser Seite ist nur nach vorheriger Einladung möglich."
-
-#: ../../mod/register.php:195
-msgid "Please enter your invitation code"
-msgstr "Bitte trage Deinen Einladungs-Code ein"
-
-#: ../../mod/register.php:198
-msgid "Your email address"
-msgstr "Ihre E-Mail Adresse"
-
-#: ../../mod/register.php:199
-msgid "Choose a password"
-msgstr "Passwort"
+"By default only the instances of the channels located on this hub will be "
+"removed from the network"
+msgstr "Standardmäßig werden nur die Kanalklone auf diesem RedMatrix-Hub aus dem Netzwerk entfernt"
-#: ../../mod/register.php:200
-msgid "Please re-enter your password"
-msgstr "Bitte gib Dein Passwort noch einmal ein"
+#: ../../mod/service_limits.php:19
+msgid "No service class restrictions found."
+msgstr "Keine Dienstklassenbeschränkungen gefunden."
-#: ../../mod/regmod.php:12
-msgid "Please login."
-msgstr "Bitte melde dich an."
+#: ../../view/theme/apw/php/config.php:202
+#: ../../view/theme/apw/php/config.php:236
+msgid "Schema Default"
+msgstr "Standard-Schema"
-#: ../../mod/removeme.php:49
-msgid "Remove This Channel"
-msgstr "Diesen Kanal löschen"
+#: ../../view/theme/apw/php/config.php:203
+msgid "Sans-Serif"
+msgstr "Sans-Serif"
-#: ../../mod/removeme.php:50
-msgid ""
-"This will completely remove this channel from the network. Once this has "
-"been done it is not recoverable."
-msgstr "Hiermit wird dieser Kanal komplett aus dem Netzwerk gelöscht. Einmal eingeleitet kann dieser Prozess nicht rückgängig gemacht werden."
+#: ../../view/theme/apw/php/config.php:204
+msgid "Monospace"
+msgstr "Monospace"
-#: ../../mod/removeme.php:51
-msgid "Please enter your password for verification:"
-msgstr "Bitte gib zur Bestätigung Dein Passwort ein:"
+#: ../../view/theme/apw/php/config.php:259
+#: ../../view/theme/blogga/php/config.php:69
+#: ../../view/theme/blogga/view/theme/blog/config.php:69
+#: ../../view/theme/redbasic/php/config.php:102
+msgid "Theme settings"
+msgstr "Theme-Einstellungen"
-#: ../../mod/removeme.php:52
-msgid "Remove this channel and all its clones from the network"
-msgstr "Lösche diesen Kanal und all seine Klone aus dem Netzwerk"
+#: ../../view/theme/apw/php/config.php:260
+#: ../../view/theme/redbasic/php/config.php:103
+msgid "Set scheme"
+msgstr "Schema"
-#: ../../mod/removeme.php:52
-msgid ""
-"By default only the instance of the channel located on this hub will be "
-"removed from the network"
-msgstr "Standardmäßig wird der Kanal nur auf diesem Server gelöscht, seine Klone verbleiben im Netzwerk"
+#: ../../view/theme/apw/php/config.php:261
+#: ../../view/theme/redbasic/php/config.php:124
+msgid "Set font-size for posts and comments"
+msgstr "Schriftgröße für Beiträge und Kommentare"
-#: ../../mod/removeme.php:53
-msgid "Remove Channel"
-msgstr "Kanal löschen"
+#: ../../view/theme/apw/php/config.php:262
+msgid "Set font face"
+msgstr "Schriftart"
-#: ../../mod/photos.php:77
-msgid "Page owner information could not be retrieved."
-msgstr "Informationen über den Besitzer der Seite konnten nicht gefunden werden."
+#: ../../view/theme/apw/php/config.php:263
+msgid "Set iconset"
+msgstr "Iconset"
-#: ../../mod/photos.php:97
-msgid "Album not found."
-msgstr "Album nicht gefunden."
+#: ../../view/theme/apw/php/config.php:264
+msgid "Set big shadow size, default 15px 15px 15px"
+msgstr "Ausmaß der großen Schatten (Default 15px 15px 15px)"
-#: ../../mod/photos.php:119 ../../mod/photos.php:672
-msgid "Delete Album"
-msgstr "Album löschen"
+#: ../../view/theme/apw/php/config.php:265
+msgid "Set small shadow size, default 5px 5px 5px"
+msgstr "Ausmaß der kleinen Schatten (Default 5px 5px 5px)"
-#: ../../mod/photos.php:159 ../../mod/photos.php:955
-msgid "Delete Photo"
-msgstr "Foto löschen"
+#: ../../view/theme/apw/php/config.php:266
+msgid "Set shadow color, default #000"
+msgstr "Farbe der Schatten (Default #000)"
-#: ../../mod/photos.php:453
-msgid "No photos selected"
-msgstr "Keine Fotos ausgewählt"
+#: ../../view/theme/apw/php/config.php:267
+msgid "Set radius size, default 5px"
+msgstr "Ecken-Radius (Default 5px)"
-#: ../../mod/photos.php:500
-msgid "Access to this item is restricted."
-msgstr "Der Zugriff auf dieses Foto ist eingeschränkt."
+#: ../../view/theme/apw/php/config.php:268
+msgid "Set line-height for posts and comments"
+msgstr "Zeilenhöhe in Beiträgen und Kommentaren"
-#: ../../mod/photos.php:577
-#, php-format
-msgid "You have used %1$.2f Mbytes of %2$.2f Mbytes photo storage."
-msgstr "Du benutzt %1$.2f MBytes Deines %2$.2f MBytes großen Bilder-Speichers."
+#: ../../view/theme/apw/php/config.php:269
+msgid "Set background image"
+msgstr "Hintergrundbild"
-#: ../../mod/photos.php:580
-#, php-format
-msgid "You have used %1$.2f Mbytes of photo storage."
-msgstr "Du verwendest %1$.2f MBytes Deines Foto-Speichers."
+#: ../../view/theme/apw/php/config.php:270
+msgid "Set background attachment"
+msgstr "Hintergrunddatei"
-#: ../../mod/photos.php:599
-msgid "Upload Photos"
-msgstr "Fotos hochladen"
+#: ../../view/theme/apw/php/config.php:271
+msgid "Set background color"
+msgstr "Hintergrundfarbe"
-#: ../../mod/photos.php:603 ../../mod/photos.php:667
-msgid "New album name: "
-msgstr "Name des neuen Albums:"
+#: ../../view/theme/apw/php/config.php:272
+msgid "Set section background image"
+msgstr "Hintergrundbild für die Section"
-#: ../../mod/photos.php:604
-msgid "or existing album name: "
-msgstr "Oder bestehender Album-Name:"
+#: ../../view/theme/apw/php/config.php:273
+msgid "Set section background color"
+msgstr "Hintergrundfarbe für die Section"
-#: ../../mod/photos.php:605
-msgid "Do not show a status post for this upload"
-msgstr "Keine Statusnachricht für diesen Upload senden"
+#: ../../view/theme/apw/php/config.php:274
+msgid "Set color of items - use hex"
+msgstr "Farbe für Beiträge – Hex benutzen"
-#: ../../mod/photos.php:656 ../../mod/photos.php:678 ../../mod/photos.php:1127
-#: ../../mod/photos.php:1142
-msgid "Contact Photos"
-msgstr "Kontakt-Bilder"
+#: ../../view/theme/apw/php/config.php:275
+msgid "Set color of links - use hex"
+msgstr "Farbe für Links – Hex benutzen"
-#: ../../mod/photos.php:682
-msgid "Edit Album"
-msgstr "Album bearbeiten"
+#: ../../view/theme/apw/php/config.php:276
+msgid "Set max-width for items. Default 400px"
+msgstr "Maximale Breite von Beiträgen (Default 400px)"
-#: ../../mod/photos.php:688
-msgid "Show Newest First"
-msgstr "Zeige Neueste zuerst"
+#: ../../view/theme/apw/php/config.php:277
+msgid "Set min-width for items. Default 240px"
+msgstr "Minimale Breite von Beiträgen (Default 240px)"
-#: ../../mod/photos.php:690
-msgid "Show Oldest First"
-msgstr "Zeige Älteste zuerst"
+#: ../../view/theme/apw/php/config.php:278
+msgid "Set the generic content wrapper width. Default 48%"
+msgstr "Breite des \"generic content wrapper\" (Default 48%)"
-#: ../../mod/photos.php:733 ../../mod/photos.php:1174
-msgid "View Photo"
-msgstr "Foto ansehen"
+#: ../../view/theme/apw/php/config.php:279
+msgid "Set color of fonts - use hex"
+msgstr "Schriftfarbe – Hex benutzen"
-#: ../../mod/photos.php:779
-msgid "Permission denied. Access to this item may be restricted."
-msgstr "Berechtigung verweigert. Der Zugriff ist wahrscheinlich eingeschränkt worden."
+#: ../../view/theme/apw/php/config.php:280
+msgid "Set background-size element"
+msgstr "Größe des Hintergrund-Elements"
-#: ../../mod/photos.php:781
-msgid "Photo not available"
-msgstr "Foto nicht verfügbar"
+#: ../../view/theme/apw/php/config.php:281
+msgid "Item opacity"
+msgstr "Deckkraft der Beiträge"
-#: ../../mod/photos.php:841
-msgid "Use as profile photo"
-msgstr "Als Profilfoto verwenden"
+#: ../../view/theme/apw/php/config.php:282
+msgid "Display post previews only"
+msgstr "Nur Beitragsvorschau anzeigen"
-#: ../../mod/photos.php:865
-msgid "View Full Size"
-msgstr "In voller Größe anzeigen"
+#: ../../view/theme/apw/php/config.php:283
+msgid "Display side bar on channel page"
+msgstr "Zeige die Seitenleiste auf der Kanal-Seite"
-#: ../../mod/photos.php:939
-msgid "Edit photo"
-msgstr "Foto bearbeiten"
+#: ../../view/theme/apw/php/config.php:284
+msgid "Colour of the navigation bar"
+msgstr "Farbe der Navigationsleiste"
-#: ../../mod/photos.php:941
-msgid "Rotate CW (right)"
-msgstr "Drehen im UZS (rechts)"
+#: ../../view/theme/apw/php/config.php:285
+msgid "Item float"
+msgstr "Beitragsfluss"
-#: ../../mod/photos.php:942
-msgid "Rotate CCW (left)"
-msgstr "Drehen gegen UZS (links)"
+#: ../../view/theme/apw/php/config.php:286
+msgid "Left offset of the section element"
+msgstr "Linker Rand des Section Elements"
-#: ../../mod/photos.php:944
-msgid "New album name"
-msgstr "Name des neuen Albums:"
+#: ../../view/theme/apw/php/config.php:287
+msgid "Right offset of the section element"
+msgstr "Rechter Rand des Section Elements"
-#: ../../mod/photos.php:947
-msgid "Caption"
-msgstr "Bildunterschrift"
+#: ../../view/theme/apw/php/config.php:288
+msgid "Section width"
+msgstr "Breite der Section"
-#: ../../mod/photos.php:949
-msgid "Add a Tag"
-msgstr "Schlagwort hinzufügen"
+#: ../../view/theme/apw/php/config.php:289
+msgid "Left offset of the aside"
+msgstr "Linker Rand des Aside-Elements"
-#: ../../mod/photos.php:952
-msgid ""
-"Example: @bob, @Barbara_Jensen, @jim@example.com, #California, #camping"
-msgstr "Beispiel: @bob, @Barbara_Jensen, @jim@example.com, #California, #camping"
+#: ../../view/theme/apw/php/config.php:290
+msgid "Right offset of the aside element"
+msgstr "Rechter Rand des Aside-Elements"
-#: ../../mod/photos.php:1105
-msgid "In This Photo:"
-msgstr "Auf diesem Foto:"
+#: ../../view/theme/blogga/php/config.php:47
+#: ../../view/theme/blogga/view/theme/blog/config.php:47
+msgid "None"
+msgstr "Kein"
-#: ../../mod/photos.php:1180
-msgid "View Album"
-msgstr "Album ansehen"
+#: ../../view/theme/blogga/php/config.php:70
+#: ../../view/theme/blogga/view/theme/blog/config.php:70
+msgid "Header image"
+msgstr "Titelbild"
-#: ../../mod/photos.php:1189
-msgid "Recent Photos"
-msgstr "Neueste Fotos"
+#: ../../view/theme/blogga/php/config.php:71
+#: ../../view/theme/blogga/view/theme/blog/config.php:71
+msgid "Header image only on profile pages"
+msgstr "Titelbild nur auf Profil-Seiten anzeigen"
-#: ../../mod/mood.php:138
-msgid "Mood"
-msgstr "Laune"
+#: ../../view/theme/redbasic/php/config.php:84
+msgid "Light (Red Matrix default)"
+msgstr "Hell (RedMatrix-Voreinstellung)"
-#: ../../mod/mood.php:139
-msgid "Set your current mood and tell your friends"
-msgstr "Wähle Deine aktuelle Stimmung und teile sie mit Deinen Freunden"
+#: ../../view/theme/redbasic/php/config.php:104
+msgid "Narrow navbar"
+msgstr "Schmale Navigationsleiste"
-#: ../../mod/ping.php:192
-msgid "sent you a private message"
-msgstr "eine private Nachricht schicken"
+#: ../../view/theme/redbasic/php/config.php:105
+msgid "Navigation bar background color"
+msgstr "Hintergrundfarbe der Navigationsleiste"
-#: ../../mod/ping.php:250
-msgid "added your channel"
-msgstr "hat deinen Kanal hinzugefügt"
+#: ../../view/theme/redbasic/php/config.php:106
+msgid "Navigation bar gradient top color"
+msgstr "Farbverlauf der Navigationsleiste: Farbe oben"
-#: ../../mod/ping.php:294
-msgid "posted an event"
-msgstr "hat eine Veranstaltung veröffentlicht"
+#: ../../view/theme/redbasic/php/config.php:107
+msgid "Navigation bar gradient bottom color"
+msgstr "Farbverlauf der Navigationsleiste: Farbe unten"
-#: ../../view/theme/redbasic/php/config.php:76
-msgid "Scheme Default"
-msgstr "Standard-Schema"
+#: ../../view/theme/redbasic/php/config.php:108
+msgid "Navigation active button gradient top color"
+msgstr "Navigations-Button aktiv: Farbe für Farbverlauf oben"
-#: ../../view/theme/redbasic/php/config.php:87
-msgid "silver"
-msgstr "silbern"
+#: ../../view/theme/redbasic/php/config.php:109
+msgid "Navigation active button gradient bottom color"
+msgstr "Navigations-Button aktiv: Farbe für Farbverlauf unten"
-#: ../../view/theme/redbasic/php/config.php:98
-#: ../../view/theme/apw/php/config.php:234
-#: ../../view/theme/blogga/view/theme/blog/config.php:69
-#: ../../view/theme/blogga/php/config.php:69
-msgid "Theme settings"
-msgstr "Theme-Einstellungen"
+#: ../../view/theme/redbasic/php/config.php:110
+msgid "Navigation bar border color "
+msgstr "Farbe für den Rand der Navigationsleiste"
-#: ../../view/theme/redbasic/php/config.php:99
-#: ../../view/theme/apw/php/config.php:235
-msgid "Set scheme"
-msgstr "Schema"
+#: ../../view/theme/redbasic/php/config.php:111
+msgid "Navigation bar icon color "
+msgstr "Farbe für die Icons der Navigationsleiste"
-#: ../../view/theme/redbasic/php/config.php:100
-msgid "Navigation bar colour"
-msgstr "Farbe der Navigationsleiste"
+#: ../../view/theme/redbasic/php/config.php:112
+msgid "Navigation bar active icon color "
+msgstr "Farbe für aktive Icons der Navigationsleiste"
-#: ../../view/theme/redbasic/php/config.php:101
-msgid "link colour"
-msgstr "Farbe der Links"
+#: ../../view/theme/redbasic/php/config.php:113
+msgid "link color"
+msgstr "Farbe für Links"
-#: ../../view/theme/redbasic/php/config.php:102
-msgid "Set font-colour for banner"
-msgstr "Farbe des Banners"
+#: ../../view/theme/redbasic/php/config.php:114
+msgid "Set font-color for banner"
+msgstr "Farbe der Schrift des Banners"
-#: ../../view/theme/redbasic/php/config.php:103
-msgid "Set the background colour"
+#: ../../view/theme/redbasic/php/config.php:115
+msgid "Set the background color"
msgstr "Hintergrundfarbe"
-#: ../../view/theme/redbasic/php/config.php:104
+#: ../../view/theme/redbasic/php/config.php:116
msgid "Set the background image"
msgstr "Hintergrundbild"
-#: ../../view/theme/redbasic/php/config.php:105
-msgid "Set the background colour of items"
-msgstr "Hintergrundfarbe von Beiträgen"
+#: ../../view/theme/redbasic/php/config.php:117
+msgid "Set the background color of items"
+msgstr "Hintergrundfarbe für Beiträge"
-#: ../../view/theme/redbasic/php/config.php:106
-msgid "Set the opacity of items"
-msgstr "Deckkraft von Beiträgen"
+#: ../../view/theme/redbasic/php/config.php:118
+msgid "Set the background color of comments"
+msgstr "Hintergrundfarbe für Kommentare"
-#: ../../view/theme/redbasic/php/config.php:107
-msgid "Set the basic colour for item icons"
-msgstr "Basisfarbe der Beitrags-Icons"
+#: ../../view/theme/redbasic/php/config.php:119
+msgid "Set the border color of comments"
+msgstr "Farbe des Randes von Kommentaren"
-#: ../../view/theme/redbasic/php/config.php:108
-msgid "Set the hover colour for item icons"
+#: ../../view/theme/redbasic/php/config.php:120
+msgid "Set the indent for comments"
+msgstr "Einzug für Kommentare"
+
+#: ../../view/theme/redbasic/php/config.php:121
+msgid "Set the basic color for item icons"
+msgstr "Grundfarbe für Beitrags-Icons"
+
+#: ../../view/theme/redbasic/php/config.php:122
+msgid "Set the hover color for item icons"
msgstr "Farbe für Beitrags-Icons unter dem Mauszeiger"
-#: ../../view/theme/redbasic/php/config.php:109
+#: ../../view/theme/redbasic/php/config.php:123
msgid "Set font-size for the entire application"
msgstr "Schriftgröße für die ganze Applikation"
-#: ../../view/theme/redbasic/php/config.php:110
-#: ../../view/theme/apw/php/config.php:236
-msgid "Set font-size for posts and comments"
-msgstr "Schriftgröße für Beiträge und Kommentare"
-
-#: ../../view/theme/redbasic/php/config.php:111
-msgid "Set font-colour for posts and comments"
-msgstr "Schriftfarbe für Beiträge und Kommentare"
+#: ../../view/theme/redbasic/php/config.php:125
+msgid "Set font-color for posts and comments"
+msgstr "Schriftfarbe für Posts und Kommentare"
-#: ../../view/theme/redbasic/php/config.php:112
+#: ../../view/theme/redbasic/php/config.php:126
msgid "Set radius of corners"
msgstr "Ecken-Radius"
-#: ../../view/theme/redbasic/php/config.php:113
+#: ../../view/theme/redbasic/php/config.php:127
msgid "Set shadow depth of photos"
msgstr "Schattentiefe von Fotos"
-#: ../../view/theme/redbasic/php/config.php:114
+#: ../../view/theme/redbasic/php/config.php:128
msgid "Set maximum width of conversation regions"
msgstr "Maximalbreite der Unterhaltungsbereiche"
-#: ../../view/theme/redbasic/php/config.php:115
+#: ../../view/theme/redbasic/php/config.php:129
+msgid "Center conversation regions"
+msgstr "Konversationsbereich zentrieren"
+
+#: ../../view/theme/redbasic/php/config.php:130
msgid "Set minimum opacity of nav bar - to hide it"
msgstr "Mindest-Deckkraft der Navigationsleiste ( - versteckt sie)"
-#: ../../view/theme/redbasic/php/config.php:116
+#: ../../view/theme/redbasic/php/config.php:131
msgid "Set size of conversation author photo"
msgstr "Größe der Avatare von Themenstartern"
-#: ../../view/theme/redbasic/php/config.php:117
+#: ../../view/theme/redbasic/php/config.php:132
msgid "Set size of followup author photos"
msgstr "Größe der Avatare von Kommentatoren"
-#: ../../view/theme/redbasic/php/config.php:118
+#: ../../view/theme/redbasic/php/config.php:133
msgid "Sloppy photo albums"
msgstr "Schräge Fotoalben"
-#: ../../view/theme/redbasic/php/config.php:118
+#: ../../view/theme/redbasic/php/config.php:133
msgid "Are you a clean desk or a messy desk person?"
msgstr "Bist Du jemand, der einen aufgeräumten Schreibtisch hat, oder eher einen chaotischen?"
-#: ../../view/theme/apw/php/config.php:193
-#: ../../view/theme/apw/php/config.php:211
-msgid "Schema Default"
-msgstr "Standard-Schema"
-
-#: ../../view/theme/apw/php/config.php:194
-msgid "Sans-Serif"
-msgstr "Sans-Serif"
-
-#: ../../view/theme/apw/php/config.php:195
-msgid "Monospace"
-msgstr "Monospace"
-
-#: ../../view/theme/apw/php/config.php:237
-msgid "Set font face"
-msgstr "Schriftart"
-
-#: ../../view/theme/apw/php/config.php:238
-msgid "Set iconset"
-msgstr "Icon-Set"
-
-#: ../../view/theme/apw/php/config.php:239
-msgid "Set big shadow size, default 15px 15px 15px"
-msgstr "Ausmaß der großen Schatten (Default 15px 15px 15px)"
-
-#: ../../view/theme/apw/php/config.php:240
-msgid "Set small shadow size, default 5px 5px 5px"
-msgstr "Ausmaß der kleinen Schatten (Default 5px 5px 5px)"
-
-#: ../../view/theme/apw/php/config.php:241
-msgid "Set shadow colour, default #000"
-msgstr "Farbe der Schatten (Default #000)"
-
-#: ../../view/theme/apw/php/config.php:242
-msgid "Set radius size, default 5px"
-msgstr "Ecken-Radius (Default 5px)"
-
-#: ../../view/theme/apw/php/config.php:243
-msgid "Set line-height for posts and comments"
-msgstr "Zeilenhöhe für Beiträge und Kommentare"
-
-#: ../../view/theme/apw/php/config.php:244
-msgid "Set background image"
-msgstr "Hintergrundbild"
-
-#: ../../view/theme/apw/php/config.php:245
-msgid "Set background colour"
-msgstr "Hintergrundfarbe"
-
-#: ../../view/theme/apw/php/config.php:246
-msgid "Set section background image"
-msgstr "Hintergrundbild des mittleren Bereichs"
-
-#: ../../view/theme/apw/php/config.php:247
-msgid "Set section background colour"
-msgstr "Hintergrundfarbe des mittleren Bereichs"
-
-#: ../../view/theme/apw/php/config.php:248
-msgid "Set colour of items - use hex"
-msgstr "Farbe von Beiträgen (HEX)"
-
-#: ../../view/theme/apw/php/config.php:249
-msgid "Set colour of links - use hex"
-msgstr "Farbe von Links (HEX)"
-
-#: ../../view/theme/apw/php/config.php:250
-msgid "Set max-width for items. Default 400px"
-msgstr "Maximalbreite von Beiträgen (Default 400px)"
-
-#: ../../view/theme/apw/php/config.php:251
-msgid "Set min-width for items. Default 240px"
-msgstr "Minimalbreite von Beiträgen (Default 240px)"
-
-#: ../../view/theme/apw/php/config.php:252
-msgid "Set the generic content wrapper width. Default 48%"
-msgstr "Breite des „generic content wrapper“ (Default 48%)"
-
-#: ../../view/theme/apw/php/config.php:253
-msgid "Set colour of fonts - use hex"
-msgstr "Schriftfarbe (HEX)"
-
-#: ../../view/theme/apw/php/config.php:254
-msgid "Set background-size element"
-msgstr "Größe des Hintergrund-Elements"
-
-#: ../../view/theme/apw/php/config.php:255
-msgid "Item opacity"
-msgstr "Deckkraft von Beiträgen (z.B. 0.8)"
-
-#: ../../view/theme/apw/php/config.php:256
-msgid "Display post previews only"
-msgstr "Nur Beitragsvorschau anzeigen"
-
-#: ../../view/theme/apw/php/config.php:257
-msgid "Display side bar on channel page"
-msgstr "Zeige die Seitenleiste auf der Kanal-Seite"
-
-#: ../../view/theme/apw/php/config.php:258
-msgid "Colour of the navigation bar"
-msgstr "Farbe der Navigationsleiste"
-
-#: ../../view/theme/apw/php/config.php:259
-msgid "Item float"
-msgstr "Beitragsfluss"
-
-#: ../../view/theme/apw/php/config.php:260
-msgid "Left offset of the section element"
-msgstr "Linker Rand des mittleren Bereichs"
-
-#: ../../view/theme/apw/php/config.php:261
-msgid "Right offset of the section element"
-msgstr "Rechter Rand des mittleren Bereichs"
-
-#: ../../view/theme/apw/php/config.php:262
-msgid "Section width"
-msgstr "Breite des mittleren Bereichs"
-
-#: ../../view/theme/apw/php/config.php:263
-msgid "Left offset of the aside"
-msgstr "Linker Rand des seitlichen Bereichs"
-
-#: ../../view/theme/apw/php/config.php:264
-msgid "Right offset of the aside element"
-msgstr "Rechter Rand des seitlichen Bereichs"
-
-#: ../../view/theme/blogga/view/theme/blog/config.php:47
-#: ../../view/theme/blogga/php/config.php:47
-msgid "None"
-msgstr "Keine"
-
-#: ../../view/theme/blogga/view/theme/blog/config.php:70
-#: ../../view/theme/blogga/php/config.php:70
-msgid "Header image"
-msgstr "Titelbild"
-
-#: ../../view/theme/blogga/view/theme/blog/config.php:71
-#: ../../view/theme/blogga/php/config.php:71
-msgid "Header image only on profile pages"
-msgstr "Titelbild nur auf Profil-Seiten anzeigen"
-
-#: ../../boot.php:1234
+#: ../../boot.php:1293
#, php-format
msgid "Update %s failed. See error logs."
msgstr "Aktualisierung %s fehlgeschlagen. Details in den Fehlerprotokollen."
-#: ../../boot.php:1237
+#: ../../boot.php:1296
#, php-format
msgid "Update Error at %s"
msgstr "Aktualisierungsfehler auf %s"
-#: ../../boot.php:1401
+#: ../../boot.php:1463
msgid ""
"Create an account to access services and applications within the Red Matrix"
msgstr "Erstelle einen Account, um Anwendungen und Dienste innerhalb der Red-Matrix verwenden zu können."
-#: ../../boot.php:1429
+#: ../../boot.php:1489
msgid "Password"
msgstr "Kennwort"
-#: ../../boot.php:1430
+#: ../../boot.php:1490
msgid "Remember me"
msgstr "Angaben speichern"
-#: ../../boot.php:1435
+#: ../../boot.php:1493
msgid "Forgot your password?"
msgstr "Passwort vergessen?"
-#: ../../boot.php:1500
+#: ../../boot.php:1567
msgid "permission denied"
msgstr "Zugriff verweigert"
-#: ../../boot.php:1501
+#: ../../boot.php:1568
msgid "Got Zot?"
msgstr "Haste schon Zot?"
-#: ../../boot.php:1906
+#: ../../boot.php:2030
msgid "toggle mobile"
msgstr "auf/von mobile Ansicht wechseln"
diff --git a/view/de/passchanged_eml.tpl b/view/de/passchanged_eml.tpl
index 0d94be3c2..95805f677 100644
--- a/view/de/passchanged_eml.tpl
+++ b/view/de/passchanged_eml.tpl
@@ -1,20 +1,20 @@
-Dear {{$username}},
- Your password has been changed as requested. Please retain this
-information for your records (or change your password immediately to
-something that you will remember).
+Hallo {{$username}},
+ Dein Passwort wurde wie gewünscht geändert. Bitte nimm diese
+Information zu Deinen Unterlagen (oder ändere Dein Passwort sofort auf
+etwas, an das Du Dich erinnern kannst).
-Your login details are as follows:
+Deine Anmeldedetails lauten wie folgt:
-Site Location: {{$siteurl}}
-Login Name: {{$email}}
-Password: {{$new_password}}
+Web-Adresse des Servers: {{$siteurl}}
+Username: {{$email}}
+Passwort: {{$new_password}}
-You may change that password from your account settings page after logging in.
+Du solltest das Passwort nach dem Einloggen in den Einstellungen ändern.
-Sincerely,
- {{$sitename}} Administrator
+Mit freundlichen Grüßen,
+ der Administrator von {{$sitename}}
-
+ \ No newline at end of file
diff --git a/view/de/register_open_eml.tpl b/view/de/register_open_eml.tpl
index 4b397201c..ce96d2ec6 100644
--- a/view/de/register_open_eml.tpl
+++ b/view/de/register_open_eml.tpl
@@ -1,19 +1,19 @@
-An account has been created at {{$sitename}} for this email address.
-The login details are as follows:
+Auf {{$sitename}} für diese E-Mail-Adresse ein Konto angelegt.
+Die Anmeldedetails lauten wie folgt:
-Site Location: {{$siteurl}}
-Login: {{$email}}
-Password: (the password which was provided during registration)
+Adresse des Servers: {{$siteurl}}
+Username: {{$email}}
+Passwort: (das Passwort, das Du während des Registrierungsvorgangs angegeben hast)
-If this account was created without your knowledge and is not desired, you may
-visit this site and reset the password. This will allow you to remove the
-account from the links on the Settings page, and we
-apologise for any inconvenience.
+Falls das Konto ohne Dein Wissen erstellt wurde und Du es löschen möchtest, kannst Du auf der
+Login-Seite des Servers das Passwort zurücksetzen lassen. Mit dem neuen Passwort kannst Du
+Dich einloggen und dann auf der Einstellungen-Seite das Konto löschen. Bitte
+entschuldige die Unannehmlichkeit.
-Thank you and welcome to {{$sitename}}.
+Danke, und herzlich Willkommen auf {{$sitename}}!
-Sincerely,
- {{$sitename}} Administrator
+Viele Grüße,
+ der Administrator von {{$sitename}}
-
+ \ No newline at end of file
diff --git a/view/de/register_verify_eml.tpl b/view/de/register_verify_eml.tpl
index 85d9a12d3..4da21265d 100644
--- a/view/de/register_verify_eml.tpl
+++ b/view/de/register_verify_eml.tpl
@@ -1,25 +1,24 @@
-A new user registration request was received at {{$sitename}} which requires
-your approval.
+Eine neuer Benutzer hat sich auf {{$sitename}} registriert und benötigt
+Deine Freigabe.
-The login details are as follows:
+Die Anmeldedetails lauten wie folgt:
-Site Location: {{$siteurl}}
-Login Name: {{$email}}
-IP Address: {{$details}}
+Adresse des Servers: {{$siteurl}}
+Username: {{$email}}
+IP-Adresse: {{$details}}
-To approve this request please visit the following link:
+Um die Anfrage zu bestätigen besuche bitte folgenden Link:
{{$siteurl}}/regmod/allow/{{$hash}}
-To deny the request and remove the account, please visit:
+Um die Anfrage abzulehnen und das Konto zu entfernen besuche bitte:
{{$siteurl}}/regmod/deny/{{$hash}}
-Thank you.
-
+Vielen Dank.
diff --git a/view/de/request_notify_eml.tpl b/view/de/request_notify_eml.tpl
deleted file mode 100644
index d01b8ff27..000000000
--- a/view/de/request_notify_eml.tpl
+++ /dev/null
@@ -1,17 +0,0 @@
-
-Dear {{$myname}},
-
-You have just received a connection request at {{$sitename}}
-
-from '{{$requestor}}'.
-
-You may visit their profile at {{$url}}.
-
-Please login to your site to view the complete introduction
-and approve or ignore/cancel the request.
-
-{{$siteurl}}
-
-Regards,
-
- {{$sitename}} administrator
diff --git a/view/de/strings.php b/view/de/strings.php
index 443b2ec0c..2d7265e18 100644
--- a/view/de/strings.php
+++ b/view/de/strings.php
@@ -5,8 +5,156 @@ function string_plural_select_de($n){
return ($n != 1);;
}}
;
-$a->strings["Categories"] = "Kategorien";
+$a->strings["Cannot locate DNS info for database server '%s'"] = "Kann die DNS-Informationen für den Datenbank-Server '%s' nicht finden";
+$a->strings["Profile Photos"] = "Profilfotos";
+$a->strings["photo"] = "Foto";
+$a->strings["event"] = "Termin";
+$a->strings["channel"] = "Kanal";
+$a->strings["status"] = "Status";
+$a->strings["comment"] = "Kommentar";
+$a->strings["%1\$s likes %2\$s's %3\$s"] = "%1\$s gefällt %2\$ss %3\$s";
+$a->strings["%1\$s doesn't like %2\$s's %3\$s"] = "%1\$s gefällt %2\$ss %3\$s nicht";
+$a->strings["%1\$s is now connected with %2\$s"] = "%1\$s ist jetzt mit %2\$s verbunden";
+$a->strings["%1\$s poked %2\$s"] = "%1\$s stupste %2\$s an";
+$a->strings["poked"] = "stupste";
+$a->strings["__ctx:mood__ %1\$s is %2\$s"] = "%1\$s ist %2\$s";
+$a->strings["Select"] = "Auswählen";
+$a->strings["Delete"] = "Löschen";
+$a->strings["Private Message"] = "Private Nachricht";
+$a->strings["Message signature validated"] = "Signatur überprüft";
+$a->strings["Message signature incorrect"] = "Signatur nicht korrekt";
+$a->strings["View %s's profile @ %s"] = "%ss Profil auf %s ansehen";
+$a->strings["Categories:"] = "Kategorien:";
+$a->strings["Filed under:"] = "Gespeichert unter:";
+$a->strings[" from %s"] = "von %s";
+$a->strings["last edited: %s"] = "zuletzt bearbeitet: %s";
+$a->strings["Expires: %s"] = "Verfällt: %s";
+$a->strings["View in context"] = "Im Zusammenhang anschauen";
+$a->strings["Please wait"] = "Bitte warten";
+$a->strings["remove"] = "lösche";
+$a->strings["Loading..."] = "Lädt ...";
+$a->strings["Delete Selected Items"] = "Lösche die ausgewählten Elemente";
+$a->strings["View Source"] = "Quelle anzeigen";
+$a->strings["Follow Thread"] = "Unterhaltung folgen";
+$a->strings["View Status"] = "Status ansehen";
+$a->strings["View Profile"] = "Profil ansehen";
+$a->strings["View Photos"] = "Fotos ansehen";
+$a->strings["Matrix Activity"] = "Matrix-Aktivität";
$a->strings["Connect"] = "Verbinden";
+$a->strings["Edit Contact"] = "Kontakt bearbeiten";
+$a->strings["Send PM"] = "Sende PN";
+$a->strings["Poke"] = "Anstupsen";
+$a->strings["Unknown"] = "Unbekannt";
+$a->strings["%s likes this."] = "%s gefällt das.";
+$a->strings["%s doesn't like this."] = "%s gefällt das nicht.";
+$a->strings["<span %1\$s>%2\$d people</span> like this."] = array(
+ 0 => "<span %1\$s>%2\$d Person</span> gefällt das.",
+ 1 => "<span %1\$s>%2\$d Leuten</span> gefällt das.",
+);
+$a->strings["<span %1\$s>%2\$d people</span> don't like this."] = array(
+ 0 => "<span %1\$s>%2\$d Person</span> gefällt das nicht.",
+ 1 => "<span %1\$s>%2\$d Leuten</span> gefällt das nicht.",
+);
+$a->strings["and"] = "und";
+$a->strings[", and %d other people"] = array(
+ 0 => "",
+ 1 => ", und %d andere",
+);
+$a->strings["%s like this."] = "%s gefällt das.";
+$a->strings["%s don't like this."] = "%s gefällt das nicht.";
+$a->strings["Visible to <strong>everybody</strong>"] = "Sichtbar für <strong>jeden</strong>";
+$a->strings["Please enter a link URL:"] = "Gib eine URL ein:";
+$a->strings["Please enter a video link/URL:"] = "Gib einen Video-Link/URL ein:";
+$a->strings["Please enter an audio link/URL:"] = "Gib einen Audio-Link/URL ein:";
+$a->strings["Tag term:"] = "Schlagwort:";
+$a->strings["Save to Folder:"] = "Speichern in Ordner:";
+$a->strings["Where are you right now?"] = "Wo bist Du jetzt grade?";
+$a->strings["Expires YYYY-MM-DD HH:MM"] = "Verfällt YYYY-MM-DD HH;MM";
+$a->strings["Preview"] = "Vorschau";
+$a->strings["Share"] = "Teilen";
+$a->strings["Page link title"] = "Seitentitel-Link";
+$a->strings["Post as"] = "Posten als";
+$a->strings["Upload photo"] = "Foto hochladen";
+$a->strings["upload photo"] = "Foto hochladen";
+$a->strings["Attach file"] = "Datei anhängen";
+$a->strings["attach file"] = "Datei anfügen";
+$a->strings["Insert web link"] = "Link einfügen";
+$a->strings["web link"] = "Web-Link";
+$a->strings["Insert video link"] = "Video-Link einfügen";
+$a->strings["video link"] = "Video-Link";
+$a->strings["Insert audio link"] = "Audio-Link einfügen";
+$a->strings["audio link"] = "Audio-Link";
+$a->strings["Set your location"] = "Standort";
+$a->strings["set location"] = "Standort";
+$a->strings["Clear browser location"] = "Browser-Standort löschen";
+$a->strings["clear location"] = "Standort löschen";
+$a->strings["Set title"] = "Titel";
+$a->strings["Categories (comma-separated list)"] = "Kategorien (Kommagetrennte Liste)";
+$a->strings["Permission settings"] = "Berechtigungs-Einstellungen";
+$a->strings["permissions"] = "Berechtigungen";
+$a->strings["Public post"] = "Öffentlicher Beitrag";
+$a->strings["Example: bob@example.com, mary@example.com"] = "Beispiel: bob@example.com, mary@example.com";
+$a->strings["Set expiration date"] = "Verfallsdatum";
+$a->strings["Encrypt text"] = "Text verschlüsseln";
+$a->strings["OK"] = "Ok";
+$a->strings["Cancel"] = "Abbrechen";
+$a->strings["Discover"] = "Entdecken";
+$a->strings["Imported public streams"] = "Importierte öffentliche Beiträge";
+$a->strings["Commented Order"] = "Neueste Kommentare";
+$a->strings["Sort by Comment Date"] = "Nach Kommentardatum sortiert";
+$a->strings["Posted Order"] = "Neueste Beiträge";
+$a->strings["Sort by Post Date"] = "Nach Beitragsdatum sortiert";
+$a->strings["Personal"] = "Persönlich";
+$a->strings["Posts that mention or involve you"] = "Beiträge mit Beteiligung Deinerseits";
+$a->strings["New"] = "Neu";
+$a->strings["Activity Stream - by date"] = "Activity Stream – nach Datum sortiert";
+$a->strings["Starred"] = "Markiert";
+$a->strings["Favourite Posts"] = "Markierte Beiträge";
+$a->strings["Spam"] = "Spam";
+$a->strings["Posts flagged as SPAM"] = "Nachrichten, die als SPAM markiert wurden";
+$a->strings["Channel"] = "Kanal";
+$a->strings["Status Messages and Posts"] = "Statusnachrichten und Beiträge";
+$a->strings["About"] = "Ãœber";
+$a->strings["Profile Details"] = "Profil-Details";
+$a->strings["Photos"] = "Fotos";
+$a->strings["Photo Albums"] = "Fotoalben";
+$a->strings["Files"] = "Dateien";
+$a->strings["Files and Storage"] = "Dateien und Speicher";
+$a->strings["Chatrooms"] = "Chaträume";
+$a->strings["Bookmarks"] = "Lesezeichen";
+$a->strings["Saved Bookmarks"] = "Gespeicherte Lesezeichen";
+$a->strings["Webpages"] = "Webseiten";
+$a->strings["Manage Webpages"] = "Webseiten verwalten";
+$a->strings["created a new post"] = "Neuer Beitrag wurde erzeugt";
+$a->strings["commented on %s's post"] = "hat %s's Beitrag kommentiert";
+$a->strings["Sort Options"] = "Sortieroptionen";
+$a->strings["Alphabetic"] = "alphabetisch";
+$a->strings["Reverse Alphabetic"] = "Entgegengesetzt alphabetisch";
+$a->strings["Newest to Oldest"] = "Neueste zuerst";
+$a->strings["Enable Safe Search"] = "Sichere Suche einschalten";
+$a->strings["Disable Safe Search"] = "Sichere Suche ausschalten";
+$a->strings["Safe Mode"] = "Sicherer Modus";
+$a->strings["New Page"] = "Neue Seite";
+$a->strings["Edit"] = "Bearbeiten";
+$a->strings["View"] = "Ansicht";
+$a->strings["Actions"] = "Aktionen";
+$a->strings["Page Link"] = "Seiten-Link";
+$a->strings["Title"] = "Titel";
+$a->strings["Created"] = "Erstellt";
+$a->strings["Edited"] = "Geändert";
+$a->strings["Missing room name"] = "Der Chatraum hat keinen Namen";
+$a->strings["Duplicate room name"] = "Name des Chatraums bereits vergeben";
+$a->strings["Invalid room specifier."] = "Ungültiger Raumbezeichner.";
+$a->strings["Room not found."] = "Chatraum konnte nicht gefunden werden.";
+$a->strings["Permission denied."] = "Zugang verweigert";
+$a->strings["Room is full"] = "Der Raum ist voll";
+$a->strings["Embedded content"] = "Eingebetteter Inhalt";
+$a->strings["Embedding disabled"] = "Einbetten ausgeschaltet";
+$a->strings["Categories"] = "Kategorien";
+$a->strings["Apps"] = "Apps";
+$a->strings["System"] = "System";
+$a->strings["Create Personal App"] = "Persönliche App erstellen";
+$a->strings["Edit Personal App"] = "Persönliche App bearbeiten";
$a->strings["Ignore/Hide"] = "Ignorieren/Verstecken";
$a->strings["Suggestions"] = "Vorschläge";
$a->strings["See more..."] = "Mehr anzeigen …";
@@ -17,9 +165,9 @@ $a->strings["Example: bob@example.com, http://example.com/barbara"] = "Beispiel:
$a->strings["Notes"] = "Notizen";
$a->strings["Save"] = "Speichern";
$a->strings["Remove term"] = "Eintrag löschen";
-$a->strings["Saved Searches"] = "Gesicherte Suchanfragen";
+$a->strings["Saved Searches"] = "Gespeicherte Suchanfragen";
$a->strings["add"] = "hinzufügen";
-$a->strings["Saved Folders"] = "Gesicherte Ordner";
+$a->strings["Saved Folders"] = "Gespeicherte Ordner";
$a->strings["Everything"] = "Alles";
$a->strings["Archives"] = "Archive";
$a->strings["Refresh"] = "Aktualisieren";
@@ -37,64 +185,202 @@ $a->strings["Feature settings"] = "Funktions-Einstellungen";
$a->strings["Display settings"] = "Anzeige-Einstellungen";
$a->strings["Connected apps"] = "Verbundene Apps";
$a->strings["Export channel"] = "Kanal exportieren";
-$a->strings["Automatic Permissions (Advanced)"] = "Automatische Berechtigungen (Erweitert)";
+$a->strings["Export content"] = "Kanal-Inhalte exportieren";
+$a->strings["Connection Default Permissions"] = "Standardzugriffsrechte für neue Verbindungen:";
$a->strings["Premium Channel Settings"] = "Premium-Kanal-Einstellungen";
$a->strings["Channel Sources"] = "Kanal-Quellen";
$a->strings["Settings"] = "Einstellungen";
+$a->strings["Messages"] = "Nachrichten";
$a->strings["Check Mail"] = "E-Mails abrufen";
$a->strings["New Message"] = "Neue Nachricht";
$a->strings["Chat Rooms"] = "Chaträume";
-$a->strings["Visible to everybody"] = "Für jeden sichtbar";
-$a->strings["show"] = "zeigen";
-$a->strings["don't show"] = "Verbergen";
+$a->strings["Bookmarked Chatrooms"] = "Gespeicherte Chatrooms";
+$a->strings["Suggested Chatrooms"] = "Chatraum-Vorschläge";
+$a->strings["Invalid data packet"] = "Ungültiges Datenpaket";
+$a->strings["Unable to verify channel signature"] = "Konnte die Signatur des Kanals nicht verifizieren";
+$a->strings["Unable to verify site signature for %s"] = "Kann die Signatur der Seite von %s nicht verifizieren";
$a->strings[" and "] = "und";
$a->strings["public profile"] = "öffentliches Profil";
$a->strings["%1\$s changed %2\$s to &ldquo;%3\$s&rdquo;"] = "%1\$s hat %2\$s auf &ldquo;%3\$s&rdquo; geändert";
$a->strings["Visit %1\$s's %2\$s"] = "Besuche %1\$s's %2\$s";
$a->strings["%1\$s has an updated %2\$s, changing %3\$s."] = "%1\$s hat ein aktualisiertes %2\$s, %3\$s wurde verändert.";
+$a->strings["Attachments:"] = "Anhänge:";
+$a->strings["l F d, Y \\@ g:i A"] = "l, d. F Y\\\\, H:i";
+$a->strings["Redmatrix event notification:"] = "RedMatrix Termin-Benachrichtigung:";
+$a->strings["Starts:"] = "Beginnt:";
+$a->strings["Finishes:"] = "Endet:";
+$a->strings["Location:"] = "Ort:";
+$a->strings["parent"] = "Ãœbergeordnetes Verzeichnis";
+$a->strings["Collection"] = "Ordner";
+$a->strings["Principal"] = "Prinzipal";
+$a->strings["Addressbook"] = "Adressbuch";
+$a->strings["Calendar"] = "Kalender";
+$a->strings["Schedule Inbox"] = "Posteingang für überwachte Kalender";
+$a->strings["Schedule Outbox"] = "Postausgang für überwachte Kalender";
+$a->strings["%1\$s used"] = "%1\$s verwendet";
+$a->strings["%1\$s used of %2\$s (%3\$s&#37;)"] = "%1\$s von %2\$s verwendet (%3\$s&#37;)";
+$a->strings["Name"] = "Name";
+$a->strings["Type"] = "Typ";
+$a->strings["Size"] = "Größe";
+$a->strings["Last Modified"] = "Zuletzt geändert";
+$a->strings["Total"] = "Summe";
+$a->strings["Create new folder"] = "Neuen Ordner anlegen";
+$a->strings["Create"] = "Erstelle";
+$a->strings["Upload file"] = "Datei hochladen";
+$a->strings["Upload"] = "Hochladen";
+$a->strings["%1\$s's bookmarks"] = "%1\$ss Lesezeichen";
+$a->strings["Channel is blocked on this site."] = "Der Kanal ist auf dieser Seite blockiert ";
+$a->strings["Channel location missing."] = "Adresse des Kanals fehlt.";
+$a->strings["Response from remote channel was incomplete."] = "Antwort des entfernten Kanals war unvollständig.";
+$a->strings["Channel was deleted and no longer exists."] = "Kanal wurde gelöscht und existiert nicht mehr.";
+$a->strings["Protocol disabled."] = "Protokoll deaktiviert.";
+$a->strings["Channel discovery failed."] = "Kanalsuche fehlgeschlagen";
+$a->strings["local account not found."] = "Lokales Konto nicht gefunden.";
+$a->strings["Cannot connect to yourself."] = "Du kannst Dich nicht mit Dir selbst verbinden.";
+$a->strings["Default"] = "Standard";
+$a->strings["Frequently"] = "Häufig";
+$a->strings["Hourly"] = "Stündlich";
+$a->strings["Twice daily"] = "Zwei Mal am Tag";
+$a->strings["Daily"] = "Täglich";
+$a->strings["Weekly"] = "Wöchentlich";
+$a->strings["Monthly"] = "Monatlich";
+$a->strings["Friendica"] = "Friendica";
+$a->strings["OStatus"] = "OStatus";
+$a->strings["RSS/Atom"] = "RSS/Atom";
+$a->strings["Email"] = "E-Mail";
+$a->strings["Diaspora"] = "Diaspora";
+$a->strings["Facebook"] = "Facebook";
+$a->strings["Zot!"] = "Zot!";
+$a->strings["LinkedIn"] = "LinkedIn";
+$a->strings["XMPP/IM"] = "XMPP/IM";
+$a->strings["MySpace"] = "MySpace";
+$a->strings["%d invitation available"] = array(
+ 0 => "%d Einladung verfügbar",
+ 1 => "%d Einladungen verfügbar",
+);
+$a->strings["Advanced"] = "Fortgeschritten";
+$a->strings["Find Channels"] = "Finde Kanäle";
+$a->strings["Enter name or interest"] = "Name oder Interessen eingeben";
+$a->strings["Connect/Follow"] = "Verbinden/Folgen";
+$a->strings["Examples: Robert Morgenstein, Fishing"] = "Beispiele: Robert Morgenstein, Angeln";
+$a->strings["Find"] = "Finde";
+$a->strings["Channel Suggestions"] = "Kanal-Vorschläge";
+$a->strings["Random Profile"] = "Zufallsprofil";
+$a->strings["Invite Friends"] = "Lade Freunde ein";
+$a->strings["Advanced example: name=fred and country=iceland"] = "Fortgeschrittenes Beispiel: name=fred and country=iceland";
+$a->strings["%d connection in common"] = array(
+ 0 => "%d gemeinsame Verbindung",
+ 1 => "%d gemeinsame Verbindungen",
+);
+$a->strings["show more"] = "mehr zeigen";
+$a->strings["Red Matrix Notification"] = "Red Matrix Benachrichtigung";
+$a->strings["redmatrix"] = "redmatrix";
+$a->strings["Thank You,"] = "Danke.";
+$a->strings["%s Administrator"] = "der Administrator von %s";
+$a->strings["%s <!item_type!>"] = "%s <!item_type!>";
+$a->strings["[Red:Notify] New mail received at %s"] = "[Red:Benachrichtigung] Neue Mail auf %s empfangen";
+$a->strings["%1\$s, %2\$s sent you a new private message at %3\$s."] = "%1\$s, %2\$s hat Dir eine private Nachricht auf %3\$s gesendet.";
+$a->strings["%1\$s sent you %2\$s."] = "%1\$s hat Dir %2\$s geschickt.";
+$a->strings["a private message"] = "eine private Nachricht";
+$a->strings["Please visit %s to view and/or reply to your private messages."] = "Bitte besuche %s, um die private Nachricht anzusehen und/oder darauf zu antworten.";
+$a->strings["%1\$s, %2\$s commented on [zrl=%3\$s]a %4\$s[/zrl]"] = "%1\$s, %2\$s hat [zrl=%3\$s]a %4\$s[/zrl] kommentiert";
+$a->strings["%1\$s, %2\$s commented on [zrl=%3\$s]%4\$s's %5\$s[/zrl]"] = "%1\$s, %2\$s hat [zrl=%3\$s]%4\$ss %5\$s[/zrl] kommentiert";
+$a->strings["%1\$s, %2\$s commented on [zrl=%3\$s]your %4\$s[/zrl]"] = "%1\$s, %2\$s hat [zrl=%3\$s]Deinen %4\$s[/zrl] kommentiert";
+$a->strings["[Red:Notify] Comment to conversation #%1\$d by %2\$s"] = "[Red:Benachrichtigung] Kommentar in Unterhaltung #%1\$d von %2\$s";
+$a->strings["%1\$s, %2\$s commented on an item/conversation you have been following."] = "%1\$s, %2\$s hat eine Unterhaltung kommentiert, der Du folgst.";
+$a->strings["Please visit %s to view and/or reply to the conversation."] = "Bitte besuche %s, um die Unterhaltung anzusehen und/oder zu kommentieren.";
+$a->strings["[Red:Notify] %s posted to your profile wall"] = "[Red:Hinweis] %s schrieb auf Deine Pinnwand";
+$a->strings["%1\$s, %2\$s posted to your profile wall at %3\$s"] = "%1\$s, %2\$s hat auf Deine Pinnwand auf %3\$s geschrieben";
+$a->strings["%1\$s, %2\$s posted to [zrl=%3\$s]your wall[/zrl]"] = "%1\$s, %2\$s hat auf [zrl=%3\$s]Deine Pinnwand[/zrl] geschrieben";
+$a->strings["[Red:Notify] %s tagged you"] = "[Red:Benachrichtigung] %s hat Dich erwähnt";
+$a->strings["%1\$s, %2\$s tagged you at %3\$s"] = "%1\$s, %2\$s hat Dich auf %3\$s erwähnt";
+$a->strings["%1\$s, %2\$s [zrl=%3\$s]tagged you[/zrl]."] = "%1\$s, %2\$s [zrl=%3\$s]hat Dich erwähnt[/zrl].";
+$a->strings["[Red:Notify] %1\$s poked you"] = "[Red:Benachrichtigung] %1\$s hat Dich angestupst";
+$a->strings["%1\$s, %2\$s poked you at %3\$s"] = "%1\$s, %2\$s hat Dich auf %3\$s angestupst";
+$a->strings["%1\$s, %2\$s [zrl=%2\$s]poked you[/zrl]."] = "%1\$s, %2\$s [zrl=%2\$s]hat Dich angestupst[/zrl].";
+$a->strings["[Red:Notify] %s tagged your post"] = "[Red:Benachrichtigung] %s hat Deinen Beitrag verschlagwortet";
+$a->strings["%1\$s, %2\$s tagged your post at %3\$s"] = "%1\$s, %2\$s hat Deinen Beitrag auf %3\$s verschlagwortet";
+$a->strings["%1\$s, %2\$s tagged [zrl=%3\$s]your post[/zrl]"] = "%1\$s, %2\$s hat [zrl=%3\$s]Deinen Beitrag[/zrl] verschlagwortet";
+$a->strings["[Red:Notify] Introduction received"] = "[Red:Benachrichtigung] Vorstellung erhalten";
+$a->strings["%1\$s, you've received an new connection request from '%2\$s' at %3\$s"] = "%1\$s, Du hast eine neue Verbindungsanfrage von '%2\$s' auf %3\$s erhalten";
+$a->strings["%1\$s, you've received [zrl=%2\$s]a new connection request[/zrl] from %3\$s."] = "%1\$s, Du hast [zrl=%2\$s]eine neue Verbindungsanfrage[/zrl] von %3\$s erhalten.";
+$a->strings["You may visit their profile at %s"] = "Du kannst Dir das Profil unter %s ansehen";
+$a->strings["Please visit %s to approve or reject the connection request."] = "Bitte besuche %s , um die Verbindungsanfrage anzunehmen oder abzulehnen.";
+$a->strings["[Red:Notify] Friend suggestion received"] = "[Red:Benachrichtigung] Freundschaftsvorschlag erhalten";
+$a->strings["%1\$s, you've received a friend suggestion from '%2\$s' at %3\$s"] = "%1\$s, Du hast einen Kontaktvorschlag von „%2\$s“ auf %3\$s erhalten";
+$a->strings["%1\$s, you've received [zrl=%2\$s]a friend suggestion[/zrl] for %3\$s from %4\$s."] = "%1\$s, Du hast [zrl=%2\$s]einen Kontaktvorschlag[/zrl] für %3\$s von %4\$s erhalten.";
+$a->strings["Name:"] = "Name:";
+$a->strings["Photo:"] = "Foto:";
+$a->strings["Please visit %s to approve or reject the suggestion."] = "Bitte besuche %s um den Vorschlag zu akzeptieren oder abzulehnen.";
+$a->strings["[Red:Notify]"] = "[Red:Benachrichtigung]";
+$a->strings["This event has been added to your calendar."] = "Dieser Termin wurde zu Deinem Kalender hinzugefügt";
+$a->strings["A deleted group with this name was revived. Existing item permissions <strong>may</strong> apply to this group and any future members. If this is not what you intended, please create another group with a different name."] = "Es hat früher schon einmal eine Sammlung mit diesem Namen existiert, die gelöscht wurde. Es <strong>könnten</strong> von damals noch Elemente (Beiträge, Dateien etc.) vorhanden sein, die allen jetzigen und zukünftigen Mitgliedern dieser Sammlung den Zugriff erlauben. Wenn das nicht Dein Plan war, erstelle bitte eine neue Sammlung mit einem anderen Namen.";
+$a->strings["Default privacy group for new contacts"] = "Standard-Sammlung für neue Kontakte";
+$a->strings["All Channels"] = "Alle Kanäle";
+$a->strings["edit"] = "Bearbeiten";
+$a->strings["Collections"] = "Sammlungen";
+$a->strings["Edit collection"] = "Sammlung bearbeiten";
+$a->strings["Create a new collection"] = "Neue Sammlung erzeugen";
+$a->strings["Channels not in any collection"] = "Kanäle, die nicht in einer Sammlung sind";
+$a->strings["Image/photo"] = "Bild/Foto";
+$a->strings["Encrypted content"] = "Verschlüsselter Inhalt";
+$a->strings["Install design element: "] = "Design-Element installieren:";
+$a->strings["QR code"] = "QR-Code";
+$a->strings["%1\$s wrote the following %2\$s %3\$s"] = "%1\$s schrieb den folgenden %2\$s %3\$s";
+$a->strings["post"] = "Beitrag";
+$a->strings["$1 spoiler"] = "$1 Spoiler";
+$a->strings["$1 wrote:"] = "$1 schrieb:";
+$a->strings["Tags"] = "Schlagwörter";
+$a->strings["Keywords"] = "Schlüsselwörter";
+$a->strings["have"] = "habe";
+$a->strings["has"] = "hat";
+$a->strings["want"] = "will";
+$a->strings["wants"] = "will";
+$a->strings["like"] = "mag";
+$a->strings["likes"] = "gefällt";
+$a->strings["dislike"] = "verurteile";
+$a->strings["dislikes"] = "missfällt";
+$a->strings["__ctx:noun__ Like"] = array(
+ 0 => "Gefällt mir",
+ 1 => "Gefällt mir",
+);
$a->strings["Logout"] = "Abmelden";
$a->strings["End this session"] = "Beende diese Sitzung";
$a->strings["Home"] = "Home";
$a->strings["Your posts and conversations"] = "Deine Beiträge und Unterhaltungen";
-$a->strings["View Profile"] = "Profil ansehen";
$a->strings["Your profile page"] = "Deine Profilseite";
$a->strings["Edit Profiles"] = "Profile bearbeiten";
$a->strings["Manage/Edit profiles"] = "Profile verwalten";
-$a->strings["Photos"] = "Fotos";
+$a->strings["Edit Profile"] = "Profile bearbeiten";
+$a->strings["Edit your profile"] = "Profil bearbeiten";
$a->strings["Your photos"] = "Deine Bilder";
-$a->strings["Files"] = "Dateien";
$a->strings["Your files"] = "Deine Dateien";
$a->strings["Chat"] = "Chat";
$a->strings["Your chatrooms"] = "Deine Chaträume";
-$a->strings["Events"] = "Veranstaltungen";
-$a->strings["Your events"] = "Deine Veranstaltungen";
-$a->strings["Bookmarks"] = "Lesezeichen";
$a->strings["Your bookmarks"] = "Deine Lesezeichen";
-$a->strings["Webpages"] = "Webseiten";
$a->strings["Your webpages"] = "Deine Webseiten";
$a->strings["Login"] = "Anmelden";
$a->strings["Sign in"] = "Anmelden";
$a->strings["%s - click to logout"] = "%s - Klick zum Abmelden";
+$a->strings["Remote authentication"] = "Ãœber Konto auf anderem Server einloggen";
$a->strings["Click to authenticate to your home hub"] = "Klicke, um Dich über Deinen Heimat-Server zu authentifizieren";
$a->strings["Home Page"] = "Homepage";
$a->strings["Register"] = "Registrieren";
$a->strings["Create an account"] = "Erzeuge ein Konto";
$a->strings["Help"] = "Hilfe";
$a->strings["Help and documentation"] = "Hilfe und Dokumentation";
-$a->strings["Apps"] = "Apps";
-$a->strings["Addon applications, utilities, games"] = "Addon Programme, Helferlein, Spiele";
+$a->strings["Applications, utilities, links, games"] = "Anwendungen (Apps), Zubehör, Links, Spiele";
$a->strings["Search"] = "Suche";
$a->strings["Search site content"] = "Durchsuche Seiten-Inhalt";
$a->strings["Directory"] = "Verzeichnis";
-$a->strings["Channel Locator"] = "Kanal-Anzeiger";
+$a->strings["Channel Directory"] = "Kanal-Verzeichnis";
$a->strings["Matrix"] = "Matrix";
$a->strings["Your matrix"] = "Deine Matrix";
$a->strings["Mark all matrix notifications seen"] = "Markiere alle Matrix-Benachrichtigungen als angesehen";
$a->strings["Channel Home"] = "Mein Kanal";
$a->strings["Channel home"] = "Mein Kanal";
$a->strings["Mark all channel notifications seen"] = "Markiere alle Kanal-Benachrichtigungen als angesehen";
-$a->strings["Intros"] = "Vorstellungen";
-$a->strings["New Connections"] = "Neue Verbindungen";
+$a->strings["Connections"] = "Verbindungen";
$a->strings["Notices"] = "Benachrichtigungen";
$a->strings["Notifications"] = "Benachrichtigungen";
$a->strings["See all notifications"] = "Alle Benachrichtigungen ansehen";
@@ -105,127 +391,76 @@ $a->strings["See all private messages"] = "Alle persönlichen Nachrichten ansehe
$a->strings["Mark all private messages seen"] = "Markiere alle persönlichen Nachrichten als gesehen";
$a->strings["Inbox"] = "Eingang";
$a->strings["Outbox"] = "Ausgang";
-$a->strings["Event Calendar"] = "Veranstaltungskalender";
-$a->strings["See all events"] = "Alle Ereignisse ansehen";
-$a->strings["Mark all events seen"] = "Markiere alle Ereignisse als gesehen";
-$a->strings["Channel Select"] = "Kanal-Auswahl";
+$a->strings["Events"] = "Termine";
+$a->strings["Event Calendar"] = "Terminkalender";
+$a->strings["See all events"] = "Alle Termine ansehen";
+$a->strings["Mark all events seen"] = "Markiere alle Termine als gesehen";
+$a->strings["Channel Manager"] = "Kanal-Manager";
$a->strings["Manage Your Channels"] = "Verwalte Deine Kanäle";
$a->strings["Account/Channel Settings"] = "Konto-/Kanal-Einstellungen";
-$a->strings["Connections"] = "Verbindungen";
-$a->strings["Manage/Edit Friends and Connections"] = "Freunde und Verbindungen verwalten";
-$a->strings["Admin"] = "Admin";
+$a->strings["Admin"] = "Administration";
$a->strings["Site Setup and Configuration"] = "Seiten-Einrichtung und -Konfiguration";
-$a->strings["Nothing new here"] = "Nichts Neues hier";
$a->strings["Please wait..."] = "Bitte warten...";
-$a->strings["prev"] = "vorherige";
-$a->strings["first"] = "erste";
-$a->strings["last"] = "letzte";
-$a->strings["next"] = "nächste";
-$a->strings["older"] = "älter";
-$a->strings["newer"] = "neuer";
-$a->strings["No connections"] = "Keine Verbindungen";
-$a->strings["%d Connection"] = array(
- 0 => "%d Verbindung",
- 1 => "%d Verbindungen",
-);
-$a->strings["View Connections"] = "Verbindungen anzeigen";
-$a->strings["poke"] = "anstupsen";
-$a->strings["poked"] = "stupste";
-$a->strings["ping"] = "anpingen";
-$a->strings["pinged"] = "pingte";
-$a->strings["prod"] = "knuffen";
-$a->strings["prodded"] = "knuffte";
-$a->strings["slap"] = "ohrfeigen";
-$a->strings["slapped"] = "ohrfeigte";
-$a->strings["finger"] = "befummeln";
-$a->strings["fingered"] = "befummelte";
-$a->strings["rebuff"] = "eine Abfuhr erteilen";
-$a->strings["rebuffed"] = "abfuhrerteilte";
-$a->strings["happy"] = "glücklich";
-$a->strings["sad"] = "traurig";
-$a->strings["mellow"] = "sanft";
-$a->strings["tired"] = "müde";
-$a->strings["perky"] = "frech";
-$a->strings["angry"] = "sauer";
-$a->strings["stupified"] = "verblüfft";
-$a->strings["puzzled"] = "verwirrt";
-$a->strings["interested"] = "interessiert";
-$a->strings["bitter"] = "verbittert";
-$a->strings["cheerful"] = "fröhlich";
-$a->strings["alive"] = "lebendig";
-$a->strings["annoyed"] = "verärgert";
-$a->strings["anxious"] = "unruhig";
-$a->strings["cranky"] = "schrullig";
-$a->strings["disturbed"] = "verstört";
-$a->strings["frustrated"] = "frustriert";
-$a->strings["motivated"] = "motiviert";
-$a->strings["relaxed"] = "entspannt";
-$a->strings["surprised"] = "überrascht";
-$a->strings["Monday"] = "Montag";
-$a->strings["Tuesday"] = "Dienstag";
-$a->strings["Wednesday"] = "Mittwoch";
-$a->strings["Thursday"] = "Donnerstag";
-$a->strings["Friday"] = "Freitag";
-$a->strings["Saturday"] = "Samstag";
-$a->strings["Sunday"] = "Sonntag";
-$a->strings["January"] = "Januar";
-$a->strings["February"] = "Februar";
-$a->strings["March"] = "März";
-$a->strings["April"] = "April";
-$a->strings["May"] = "Mai";
-$a->strings["June"] = "Juni";
-$a->strings["July"] = "Juli";
-$a->strings["August"] = "August";
-$a->strings["September"] = "September";
-$a->strings["October"] = "Oktober";
-$a->strings["November"] = "November";
-$a->strings["December"] = "Dezember";
-$a->strings["unknown.???"] = "unbekannt.???";
-$a->strings["bytes"] = "Bytes";
-$a->strings["remove category"] = "Kategorie entfernen";
-$a->strings["remove from file"] = "aus der Datei entfernen";
-$a->strings["Click to open/close"] = "Klicke zum Öffnen/Schließen";
-$a->strings["link to source"] = "Link zum Originalbeitrag";
-$a->strings["Select a page layout: "] = "Ein Seiten-Layout auswählen:";
-$a->strings["default"] = "Standard";
-$a->strings["Page content type: "] = "Content-Typ der Seite:";
-$a->strings["Select an alternate language"] = "Wähle eine alternative Sprache";
-$a->strings["photo"] = "Foto";
-$a->strings["event"] = "Ereignis";
-$a->strings["status"] = "Status";
-$a->strings["comment"] = "Kommentar";
-$a->strings["activity"] = "Aktivität";
-$a->strings["Design"] = "Design";
-$a->strings["Blocks"] = "Blöcke";
-$a->strings["Menus"] = "Menüs";
-$a->strings["Layouts"] = "Layouts";
-$a->strings["Pages"] = "Seiten";
-$a->strings["Image/photo"] = "Bild/Foto";
-$a->strings["Encrypted content"] = "Verschlüsselter Inhalt";
-$a->strings["QR code"] = "QR-Code";
-$a->strings["%1\$s wrote the following %2\$s %3\$s"] = "%1\$s schrieb den folgenden %2\$s %3\$s";
-$a->strings["post"] = "Beitrag";
-$a->strings["$1 wrote:"] = "$1 schrieb:";
+$a->strings["Can view my normal stream and posts"] = "Kann meine normalen Beiträge sehen";
+$a->strings["Can view my default channel profile"] = "Kann mein Standardprofil sehen";
+$a->strings["Can view my photo albums"] = "Kann meine Fotoalben betrachten";
+$a->strings["Can view my connections"] = "Kann meine Verbindungen sehen";
+$a->strings["Can view my file storage"] = "Kann meine Dateiordner lesen";
+$a->strings["Can view my webpages"] = "Kann meine Webseiten sehen";
+$a->strings["Can send me their channel stream and posts"] = "Kann mir die Beiträge aus seinem/ihrem Kanal schicken";
+$a->strings["Can post on my channel page (\"wall\")"] = "Kann auf meiner Kanal-Seite (\"wall\") Beiträge veröffentlichen";
+$a->strings["Can comment on or like my posts"] = "Darf meine Beiträge kommentieren und mögen/nicht mögen";
+$a->strings["Can send me private mail messages"] = "Kann mir private Nachrichten schicken";
+$a->strings["Can post photos to my photo albums"] = "Kann Fotos in meinen Fotoalben veröffentlichen";
+$a->strings["Can like/dislike stuff"] = "Kann andere Elemente mögen/nicht mögen";
+$a->strings["Profiles and things other than posts/comments"] = "Profile und alles außer Beiträge und Kommentare";
+$a->strings["Can forward to all my channel contacts via post @mentions"] = "Kann an alle meine Kontakte via @-Erwähnung Nachrichten weiterleiten";
+$a->strings["Advanced - useful for creating group forum channels"] = "Fortgeschritten - sinnvoll, um Gruppen-Kanäle/-Foren zu erstellen";
+$a->strings["Can chat with me (when available)"] = "Kann mit mir chatten (wenn verfügbar)";
+$a->strings["Can write to my file storage"] = "Kann in meine Dateiordner schreiben";
+$a->strings["Can edit my webpages"] = "Kann meine Webseiten bearbeiten";
+$a->strings["Can source my public posts in derived channels"] = "Kann meine öffentlichen Beiträge als Quellen für Kanäle verwenden";
+$a->strings["Somewhat advanced - very useful in open communities"] = "Etwas fortgeschritten – sehr nützlich in offenen Gemeinschaften";
+$a->strings["Can administer my channel resources"] = "Kann meine Kanäle administrieren";
+$a->strings["Extremely advanced. Leave this alone unless you know what you are doing"] = "Sehr fortgeschritten. Bearbeite das nur, wenn Du genau weißt, was Du tust";
+$a->strings["Social Networking"] = "Soziales Netzwerk";
+$a->strings["Mostly Public"] = "Weitgehend öffentlich";
+$a->strings["Restricted"] = "Beschränkt";
+$a->strings["Private"] = "Privat";
+$a->strings["Community Forum"] = "Forum";
+$a->strings["Feed Republish"] = "Teilen von Feeds";
+$a->strings["Special Purpose"] = "Für besondere Zwecke";
+$a->strings["Celebrity/Soapbox"] = "Mitteilungs-Kanal (keine Kommentare)";
+$a->strings["Group Repository"] = "Gruppenarchiv";
+$a->strings["Other"] = "Andere";
+$a->strings["Custom/Expert Mode"] = "Benutzerdefiniert/Expertenmodus";
$a->strings["New window"] = "Neues Fenster";
$a->strings["Open the selected location in a different window or browser tab"] = "Öffne die markierte Adresse in einem neuen Browser Fenster oder Tab";
+$a->strings["User '%s' deleted"] = "Benutzer '%s' gelöscht";
$a->strings["General Features"] = "Allgemeine Funktionen";
$a->strings["Content Expiration"] = "Verfall von Inhalten";
$a->strings["Remove posts/comments and/or private messages at a future time"] = "Lösche Beiträge, Kommentare und/oder private Nachrichten automatisch zu einem zukünftigen Datum.";
$a->strings["Multiple Profiles"] = "Mehrfachprofile";
$a->strings["Ability to create multiple profiles"] = "Mehrfachprofile anlegen können";
+$a->strings["Advanced Profiles"] = "Erweiterte Profile";
+$a->strings["Additional profile sections and selections"] = "Stellt zusätzliche Bereiche und Felder im Profil zur Verfügung";
+$a->strings["Profile Import/Export"] = "Profil-Import/Export";
+$a->strings["Save and load profile details across sites/channels"] = "Speichere Dein Profil, um es in einen anderen Kanal zu importieren";
$a->strings["Web Pages"] = "Webseiten";
$a->strings["Provide managed web pages on your channel"] = "Stelle verwaltete Webseiten in Deinem Kanal zur Verfügung";
$a->strings["Private Notes"] = "Private Notizen";
$a->strings["Enables a tool to store notes and reminders"] = "Werkzeug zum Speichern von Notizen und Erinnerungen aktivieren";
+$a->strings["Navigation Channel Select"] = "Kanal-Auswahl in der Navigationsleiste";
+$a->strings["Change channels directly from within the navigation dropdown menu"] = "Wechsle direkt über das Navigationsmenü zu anderen Kanälen";
$a->strings["Extended Identity Sharing"] = "Erweitertes Teilen von Identitäten";
$a->strings["Share your identity with all websites on the internet. When disabled, identity is only shared with sites in the matrix."] = "Teile Deine Identität mit allen Webseiten im Internet. Ist dies deaktiviert, wird Deine Identität nur mit Red-Servern geteilt.";
$a->strings["Expert Mode"] = "Expertenmodus";
$a->strings["Enable Expert Mode to provide advanced configuration options"] = "Aktiviere den Expertenmodus, um fortgeschrittene Konfigurationsoptionen zu aktivieren";
$a->strings["Premium Channel"] = "Premium-Kanal";
-$a->strings["Allows you to set restrictions and terms on those that connect with your channel"] = "Ermöglicht Einschränkungen und Bedingungen für Kontakte dieses Kanals";
+$a->strings["Allows you to set restrictions and terms on those that connect with your channel"] = "Ermöglicht es, Einschränkungen und Bedingungen für Verbindungen dieses Kanals festzulegen";
$a->strings["Post Composition Features"] = "Nachbearbeitungsfunktionen";
-$a->strings["Richtext Editor"] = "Formatierungseditor";
-$a->strings["Enable richtext editor"] = "Aktiviere Formatierungseditor";
+$a->strings["Use Markdown"] = "Markdown benutzen";
+$a->strings["Allow use of \"Markdown\" to format posts"] = "Erlaube die Verwendung von \"Markdown\"-Syntax zur Formatierung von Beiträgen";
$a->strings["Post Preview"] = "Voransicht";
$a->strings["Allow previewing posts and comments before publishing them"] = "Erlaube Voransicht von Beiträgen und Kommentaren vor Veröffentlichung";
$a->strings["Automatically import channel content from other channels or feeds"] = "Importiere automatisch Inhalte für diesen Kanal von anderen Kanälen oder Feeds";
@@ -236,7 +471,7 @@ $a->strings["Search by Date"] = "Suche nach Datum";
$a->strings["Ability to select posts by date ranges"] = "Möglichkeit, Beiträge nach Zeiträumen auszuwählen";
$a->strings["Collections Filter"] = "Filter für Sammlung";
$a->strings["Enable widget to display Network posts only from selected collections"] = "Aktiviere nur Netzwerk-Beiträge von ausgewählten Sammlungen";
-$a->strings["Save search terms for re-use"] = "Gesicherte Suchbegriffe zur Wiederverwendung";
+$a->strings["Save search terms for re-use"] = "Suchbegriffe zur Wiederverwendung abspeichern";
$a->strings["Network Personal Tab"] = "Persönlicher Netzwerkreiter";
$a->strings["Enable tab to display only Network posts that you've interacted on"] = "Aktiviere Reiter nur für die Netzwerk-Beiträge, mit denen Du interagiert hast";
$a->strings["Network New Tab"] = "Netzwerkreiter Neu";
@@ -259,224 +494,39 @@ $a->strings["Star Posts"] = "Beiträge mit Sternchen versehen";
$a->strings["Ability to mark special posts with a star indicator"] = "Möglichkeit, spezielle Beiträge mit Sternchen-Symbol zu markieren";
$a->strings["Tag Cloud"] = "Schlagwort-Wolke";
$a->strings["Provide a personal tag cloud on your channel page"] = "Persönliche Schlagwort-Wolke auf Deiner Kanal-Seite anzeigen";
-$a->strings["Unknown | Not categorised"] = "Unbekannt | Nicht kategorisiert";
-$a->strings["Block immediately"] = "Sofort blockieren";
-$a->strings["Shady, spammer, self-marketer"] = "Zwielichtig, Spammer, Selbstdarsteller";
-$a->strings["Known to me, but no opinion"] = "Mir bekannt, aber keine Meinung";
-$a->strings["OK, probably harmless"] = "Ok, wahrscheinlich harmlos";
-$a->strings["Reputable, has my trust"] = "Seriös, hat mein Vertrauen";
-$a->strings["Frequently"] = "Häufig";
-$a->strings["Hourly"] = "Stündlich";
-$a->strings["Twice daily"] = "Zwei Mal am Tag";
-$a->strings["Daily"] = "Täglich";
-$a->strings["Weekly"] = "Wöchentlich";
-$a->strings["Monthly"] = "Monatlich";
-$a->strings["Friendica"] = "Friendica";
-$a->strings["OStatus"] = "OStatus";
-$a->strings["RSS/Atom"] = "RSS/Atom";
-$a->strings["Email"] = "E-Mail";
-$a->strings["Diaspora"] = "Diaspora";
-$a->strings["Facebook"] = "Facebook";
-$a->strings["Zot!"] = "Zot!";
-$a->strings["LinkedIn"] = "LinkedIn";
-$a->strings["XMPP/IM"] = "XMPP/IM";
-$a->strings["MySpace"] = "MySpace";
-$a->strings["Miscellaneous"] = "Verschiedenes";
-$a->strings["year"] = "Jahr";
-$a->strings["month"] = "Monat";
-$a->strings["day"] = "Tag";
-$a->strings["never"] = "Nie";
-$a->strings["less than a second ago"] = "Vor weniger als einer Sekunde";
-$a->strings["years"] = "Jahre";
-$a->strings["months"] = "Monate";
-$a->strings["week"] = "Woche";
-$a->strings["weeks"] = "Wochen";
-$a->strings["days"] = "Tage";
-$a->strings["hour"] = "Stunde";
-$a->strings["hours"] = "Stunden";
-$a->strings["minute"] = "Minute";
-$a->strings["minutes"] = "Minuten";
-$a->strings["second"] = "Sekunde";
-$a->strings["seconds"] = "Sekunden";
-$a->strings["%1\$d %2\$s ago"] = "vor %1\$d %2\$s";
-$a->strings["Cannot locate DNS info for database server '%s'"] = "Kann die DNS-Informationen für den Datenbank-Server '%s' nicht finden";
-$a->strings["l F d, Y \\@ g:i A"] = "l, d. F Y\\\\, H:i";
-$a->strings["Starts:"] = "Beginnt:";
-$a->strings["Finishes:"] = "Endet:";
-$a->strings["Location:"] = "Ort:";
-$a->strings["A deleted group with this name was revived. Existing item permissions <strong>may</strong> apply to this group and any future members. If this is not what you intended, please create another group with a different name."] = "Ein gelöschte Gruppe mit diesem Namen wurde gefunden. Existierende Zugangsregeln für Elemente <strong>könnten</strong> für diese Gruppe angewendet werden, sowie für alle zukünftigen Elemente.";
-$a->strings["Default privacy group for new contacts"] = "Standard-Privatsphärengruppe für neue Kontakte";
-$a->strings["All Channels"] = "Alle Kanäle";
-$a->strings["edit"] = "Bearbeiten";
-$a->strings["Collections"] = "Sammlungen";
-$a->strings["Edit collection"] = "Bearbeite Sammlungen";
-$a->strings["Create a new collection"] = "Neue Sammlung erzeugen";
-$a->strings["Channels not in any collection"] = "Kanäle, die nicht in einer Sammlung sind";
-$a->strings["Delete this item?"] = "Dieses Element löschen?";
-$a->strings["Comment"] = "Kommentar";
-$a->strings["show more"] = "mehr zeigen";
-$a->strings["show fewer"] = "Zeige weniger";
-$a->strings["Password too short"] = "Kennwort zu kurz";
-$a->strings["Passwords do not match"] = "Kennwörter stimmen nicht überein";
-$a->strings["everybody"] = "alle";
-$a->strings["Secret Passphrase"] = "geheime Passphrase";
-$a->strings["Passphrase hint"] = "Hinweis zur Passphrase";
-$a->strings["timeago.prefixAgo"] = "timeago.prefixAgo";
-$a->strings["timeago.suffixAgo"] = "timeago.suffixAgo";
-$a->strings["ago"] = "her";
-$a->strings["from now"] = "von jetzt";
-$a->strings["less than a minute"] = "weniger als eine Minute";
-$a->strings["about a minute"] = "ungefähr eine Minute";
-$a->strings["%d minutes"] = "%d Minuten";
-$a->strings["about an hour"] = "ungefähr eine Stunde";
-$a->strings["about %d hours"] = "ungefähr %d Stunden";
-$a->strings["a day"] = "ein Tag";
-$a->strings["%d days"] = "%d Tage";
-$a->strings["about a month"] = "ungefähr ein Monat";
-$a->strings["%d months"] = "%d Monate";
-$a->strings["about a year"] = "ungefähr ein Jahr";
-$a->strings["%d years"] = "%d Jahre";
-$a->strings[" "] = " ";
-$a->strings["timeago.numbers"] = "timeago.numbers";
-$a->strings["No recipient provided."] = "Kein Empfänger angegeben";
-$a->strings["[no subject]"] = "[no subject]";
-$a->strings["Unable to determine sender."] = "Kann Absender nicht bestimmen.";
-$a->strings["Stored post could not be verified."] = "Gespeicherter Beitrag konnten nicht überprüft werden.";
-$a->strings["Profile Photos"] = "Profilfotos";
-$a->strings["Permission denied."] = "Zugang verweigert";
-$a->strings["Item was not found."] = "Beitrag wurde nicht gefunden.";
-$a->strings["No source file."] = "Keine Quelldatei.";
-$a->strings["Cannot locate file to replace"] = "Kann Datei zum Ersetzen nicht finden";
-$a->strings["Cannot locate file to revise/update"] = "Kann Datei zum Prüfen/Aktualisieren nicht finden";
-$a->strings["File exceeds size limit of %d"] = "Datei überschreitet das Größen-Limit von %d";
-$a->strings["You have reached your limit of %1$.0f Mbytes attachment storage."] = "Die Größe Deiner Datei-Anhänge hat das Maximum von %1$.0f MByte erreicht.";
-$a->strings["File upload failed. Possible system limit or action terminated."] = "Datei-Upload fehlgeschlagen. Mögliche Systembegrenzung oder abgebrochener Prozess.";
-$a->strings["Stored file could not be verified. Upload failed."] = "Gespeichert Datei konnte nicht verifiziert werden. Upload abgebrochen.";
-$a->strings["Path not available."] = "Pfad nicht verfügbar.";
-$a->strings["Empty pathname"] = "Leere Pfadangabe";
-$a->strings["duplicate filename or path"] = "doppelter Dateiname oder Pfad";
-$a->strings["Path not found."] = "Pfad nicht gefunden.";
-$a->strings["mkdir failed."] = "mkdir fehlgeschlagen.";
-$a->strings["database storage failed."] = "Speichern in der Datenbank fehlgeschlagen.";
-$a->strings["%1\$s's bookmarks"] = "%1\$ss Lesezeichen";
-$a->strings["channel"] = "Kanal";
-$a->strings["%1\$s likes %2\$s's %3\$s"] = "%1\$s gefällt %2\$ss %3\$s";
-$a->strings["%1\$s doesn't like %2\$s's %3\$s"] = "%1\$s gefällt %2\$ss %3\$s nicht";
-$a->strings["%1\$s is now connected with %2\$s"] = "%1\$s ist jetzt mit %2\$s verbunden";
-$a->strings["%1\$s poked %2\$s"] = "%1\$s stupste %2\$s an";
-$a->strings["%1\$s is currently %2\$s"] = "%1\$s ist momentan %2\$s";
-$a->strings["Select"] = "Auswählen";
-$a->strings["Delete"] = "Löschen";
-$a->strings["Message is verified"] = "Nachricht überprüft";
-$a->strings["View %s's profile @ %s"] = "%ss Profil auf %s ansehen";
-$a->strings["Categories:"] = "Kategorien:";
-$a->strings["Filed under:"] = "Gespeichert unter:";
-$a->strings[" from %s"] = "von %s";
-$a->strings["last edited: %s"] = "zuletzt bearbeitet: %s";
-$a->strings["Expires: %s"] = "Verfällt: %s";
-$a->strings["View in context"] = "Im Zusammenhang anschauen";
-$a->strings["Please wait"] = "Bitte warten";
-$a->strings["remove"] = "lösche";
-$a->strings["Loading..."] = "Lädt ...";
-$a->strings["Delete Selected Items"] = "Lösche die ausgewählten Elemente";
-$a->strings["View Source"] = "Quelle anzeigen";
-$a->strings["Follow Thread"] = "Unterhaltung folgen";
-$a->strings["View Status"] = "Status ansehen";
-$a->strings["View Photos"] = "Fotos ansehen";
-$a->strings["Matrix Activity"] = "Matrix-Aktivität";
-$a->strings["Edit Contact"] = "Kontakt bearbeiten";
-$a->strings["Send PM"] = "Sende PN";
-$a->strings["Poke"] = "Anstupsen";
-$a->strings["%s likes this."] = "%s gefällt das.";
-$a->strings["%s doesn't like this."] = "%s gefällt das nicht.";
-$a->strings["<span %1\$s>%2\$d people</span> like this."] = array(
- 0 => "<span %1\$s>%2\$d Person</span> gefällt das.",
- 1 => "<span %1\$s>%2\$d Leuten</span> gefällt das.",
-);
-$a->strings["<span %1\$s>%2\$d people</span> don't like this."] = array(
- 0 => "<span %1\$s>%2\$d Person</span> gefällt das nicht.",
- 1 => "<span %1\$s>%2\$d Leuten</span> gefällt das nicht.",
-);
-$a->strings["and"] = "und";
-$a->strings[", and %d other people"] = array(
- 0 => "",
- 1 => ", und %d andere",
-);
-$a->strings["%s like this."] = "%s gefällt das.";
-$a->strings["%s don't like this."] = "%s gefällt das nicht.";
-$a->strings["Visible to <strong>everybody</strong>"] = "Sichtbar für <strong>jeden</strong>";
-$a->strings["Please enter a link URL:"] = "Gib eine URL ein:";
-$a->strings["Please enter a video link/URL:"] = "Gib einen Video-Link/URL ein:";
-$a->strings["Please enter an audio link/URL:"] = "Gib einen Audio-Link/URL ein:";
-$a->strings["Tag term:"] = "Schlagwort:";
-$a->strings["Save to Folder:"] = "Speichern in Ordner:";
-$a->strings["Where are you right now?"] = "Wo bist Du jetzt grade?";
-$a->strings["Expires YYYY-MM-DD HH:MM"] = "Verfällt YYYY-MM-DD HH;MM";
-$a->strings["Preview"] = "Vorschau";
-$a->strings["Share"] = "Teilen";
-$a->strings["Page link title"] = "Seitentitel-Link";
-$a->strings["Upload photo"] = "Foto hochladen";
-$a->strings["upload photo"] = "Foto hochladen";
-$a->strings["Attach file"] = "Datei anhängen";
-$a->strings["attach file"] = "Datei anfügen";
-$a->strings["Insert web link"] = "Link einfügen";
-$a->strings["web link"] = "Web-Link";
-$a->strings["Insert video link"] = "Video-Link einfügen";
-$a->strings["video link"] = "Video-Link";
-$a->strings["Insert audio link"] = "Audio-Link einfügen";
-$a->strings["audio link"] = "Audio-Link";
-$a->strings["Set your location"] = "Standort";
-$a->strings["set location"] = "Standort";
-$a->strings["Clear browser location"] = "Browser-Standort löschen";
-$a->strings["clear location"] = "Standort löschen";
-$a->strings["Set title"] = "Titel";
-$a->strings["Categories (comma-separated list)"] = "Kategorien (Kommagetrennte Liste)";
-$a->strings["Permission settings"] = "Berechtigungs-Einstellungen";
-$a->strings["permissions"] = "Berechtigungen";
-$a->strings["Public post"] = "Öffentlicher Beitrag";
-$a->strings["Example: bob@example.com, mary@example.com"] = "Beispiel: bob@example.com, mary@example.com";
-$a->strings["Set expiration date"] = "Verfallsdatum";
-$a->strings["Encrypt text"] = "Text verschlüsseln";
-$a->strings["OK"] = "Ok";
-$a->strings["Cancel"] = "Abbrechen";
-$a->strings["Commented Order"] = "Neueste Kommentare";
-$a->strings["Sort by Comment Date"] = "Nach Kommentardatum sortiert";
-$a->strings["Posted Order"] = "Neueste Beiträge";
-$a->strings["Sort by Post Date"] = "Nach Beitragsdatum sortiert";
-$a->strings["Personal"] = "Persönlich";
-$a->strings["Posts that mention or involve you"] = "Beiträge mit Beteiligung Deinerseits";
-$a->strings["New"] = "Neu";
-$a->strings["Activity Stream - by date"] = "Activity Stream – nach Datum sortiert";
-$a->strings["Starred"] = "Markiert";
-$a->strings["Favourite Posts"] = "Markierte Beiträge";
-$a->strings["Spam"] = "Spam";
-$a->strings["Posts flagged as SPAM"] = "Nachrichten, die als SPAM markiert wurden";
-$a->strings["Channel"] = "Kanal";
-$a->strings["Status Messages and Posts"] = "Statusnachrichten und Beiträge";
-$a->strings["About"] = "Ãœber";
-$a->strings["Profile Details"] = "Profil-Details";
-$a->strings["Photo Albums"] = "Fotoalben";
-$a->strings["Files and Storage"] = "Dateien und Speicher";
-$a->strings["Chatrooms"] = "Chaträume";
-$a->strings["Events and Calendar"] = "Veranstaltungen und Kalender";
-$a->strings["Saved Bookmarks"] = "Gespeicherte Lesezeichen";
-$a->strings["Manage Webpages"] = "Webseiten verwalten";
+$a->strings["Not a valid email address"] = "Ungültige E-Mail-Adresse";
+$a->strings["Your email domain is not among those allowed on this site"] = "Deine E-Mail-Adresse ist dieser Seite nicht erlaubt";
+$a->strings["Your email address is already registered at this site."] = "Deine E-Mail-Adresse ist auf dieser Seite bereits registriert.";
+$a->strings["An invitation is required."] = "Eine Einladung wird benötigt";
+$a->strings["Invitation could not be verified."] = "Die Einladung konnte nicht bestätigt werden";
+$a->strings["Please enter the required information."] = "Bitte gib die benötigten Informationen ein.";
+$a->strings["Failed to store account information."] = "Speichern der Account-Informationen fehlgeschlagen";
+$a->strings["Registration confirmation for %s"] = "Registrierungsbestätigung für %s";
+$a->strings["Registration request at %s"] = "Registrierungsanfrage auf %s";
+$a->strings["Administrator"] = "Administrator";
+$a->strings["your registration password"] = "Dein Registrierungspasswort";
+$a->strings["Registration details for %s"] = "Registrierungsdetails für %s";
+$a->strings["Account approved."] = "Account bestätigt.";
+$a->strings["Registration revoked for %s"] = "Registrierung für %s widerrufen";
+$a->strings["Account verified. Please login."] = "Konto geprüft. Bitte melde Dich an!";
+$a->strings["Click here to upgrade."] = "Klicke hier, um das Upgrade durchzuführen.";
+$a->strings["This action exceeds the limits set by your subscription plan."] = "Diese Aktion überschreitet die Grenzen Ihres Abonnements.";
+$a->strings["This action is not available under your subscription plan."] = "Diese Aktion ist in Ihrem Abonnement nicht verfügbar.";
$a->strings["Unable to obtain identity information from database"] = "Kann keine Identitäts-Informationen aus Datenbank beziehen";
$a->strings["Empty name"] = "Namensfeld leer";
$a->strings["Name too long"] = "Name ist zu lang";
$a->strings["No account identifier"] = "Keine Account-Kennung";
$a->strings["Nickname is required."] = "Spitzname ist erforderlich.";
+$a->strings["Reserved nickname. Please choose another."] = "Reservierter Kurzname. Bitte wähle einen anderen.";
$a->strings["Nickname has unsupported characters or is already being used on this site."] = "Der Spitzname enthält nicht-unterstütze Zeichen oder wird bereits auf dieser Seite genutzt.";
$a->strings["Unable to retrieve created identity"] = "Kann die erstellte Identität nicht empfangen";
$a->strings["Default Profile"] = "Standard-Profil";
$a->strings["Requested channel is not available."] = "Angeforderte Kanal nicht verfügbar.";
-$a->strings[" Sorry, you don't have the permission to view this profile. "] = "Entschuldigung, Du besitzt nicht die nötigen Rechte, um dieses Profil zu betrachten.";
$a->strings["Requested profile is not available."] = "Erwünschte Profil ist nicht verfügbar.";
$a->strings["Change profile photo"] = "Profilfoto ändern";
$a->strings["Profiles"] = "Profile";
-$a->strings["Manage/edit profiles"] = "Verwalte/Bearbeite Profile";
+$a->strings["Manage/edit profiles"] = "Profile verwalten/bearbeiten";
$a->strings["Create New Profile"] = "Neues Profil erstellen";
-$a->strings["Edit Profile"] = "Profile bearbeiten";
$a->strings["Profile Image"] = "Profilfoto:";
$a->strings["visible to everybody"] = "sichtbar für jeden";
$a->strings["Edit visibility"] = "Sichtbarkeit bearbeiten";
@@ -490,12 +540,13 @@ $a->strings["[today]"] = "[Heute]";
$a->strings["Birthday Reminders"] = "Geburtstags Erinnerungen";
$a->strings["Birthdays this week:"] = "Geburtstage in dieser Woche:";
$a->strings["[No description]"] = "[Keine Beschreibung]";
-$a->strings["Event Reminders"] = "Veranstaltungs- Erinnerungen";
-$a->strings["Events this week:"] = "Veranstaltungen in dieser Woche:";
+$a->strings["Event Reminders"] = "Termin-Erinnerungen";
+$a->strings["Events this week:"] = "Termine in dieser Woche:";
$a->strings["Profile"] = "Profil";
$a->strings["Full Name:"] = "Voller Name:";
-$a->strings["j F, Y"] = "j F, Y";
-$a->strings["j F"] = "j F";
+$a->strings["Like this channel"] = "Dieser Kanal gefällt mir";
+$a->strings["j F, Y"] = "j. F Y";
+$a->strings["j F"] = "j. F";
$a->strings["Birthday:"] = "Geburtstag:";
$a->strings["Age:"] = "Alter:";
$a->strings["for %1\$d %2\$s"] = "seit %1\$d %2\$s";
@@ -517,44 +568,103 @@ $a->strings["Film/dance/culture/entertainment:"] = "Film/Tanz/Kultur/Unterhaltun
$a->strings["Love/Romance:"] = "Liebe/Romantik:";
$a->strings["Work/employment:"] = "Arbeit/Anstellung:";
$a->strings["School/education:"] = "Schule/Ausbildung:";
-$a->strings["Private Message"] = "Private Nachricht";
-$a->strings["Edit"] = "Bearbeiten";
-$a->strings["save to folder"] = "In Ordner speichern";
-$a->strings["add star"] = "markieren";
-$a->strings["remove star"] = "Markierung entfernen";
-$a->strings["toggle star status"] = "Markierung umschalten";
-$a->strings["starred"] = "markiert";
-$a->strings["add tag"] = "Schlagwort hinzufügen";
-$a->strings["I like this (toggle)"] = "Mir gefällt das (Umschalter)";
-$a->strings["like"] = "mag";
-$a->strings["I don't like this (toggle)"] = "Mir gefällt das nicht (Umschalter)";
-$a->strings["dislike"] = "verurteile";
-$a->strings["Share this"] = "Teile dies";
-$a->strings["share"] = "Teilen";
-$a->strings["View %s's profile - %s"] = "Schaue Dir %ss Profil an – %s";
-$a->strings["to"] = "an";
-$a->strings["via"] = "via";
-$a->strings["Wall-to-Wall"] = "Wall-to-Wall";
-$a->strings["via Wall-To-Wall:"] = "via Wall-To-Wall:";
-$a->strings["Bookmark Links"] = "Setze Lesezeichen für die Links";
-$a->strings["%d comment"] = array(
- 0 => "%d Kommentar",
- 1 => "%d Kommentare",
-);
-$a->strings["This is you"] = "Das bist Du";
-$a->strings["Submit"] = "Bestätigen";
-$a->strings["Bold"] = "Fett";
-$a->strings["Italic"] = "Kursiv";
-$a->strings["Underline"] = "Unterstrichen";
-$a->strings["Quote"] = "Zitat";
-$a->strings["Code"] = "Code";
-$a->strings["Image"] = "Bild";
-$a->strings["Link"] = "Link";
-$a->strings["Video"] = "Video";
-$a->strings["Public Timeline"] = "Öffentliche Zeitleiste";
+$a->strings["Like this thing"] = "Gefällt mir";
+$a->strings["Permission denied"] = "Keine Berechtigung";
+$a->strings["(Unknown)"] = "(Unbekannt)";
+$a->strings["Visible to anybody on the internet."] = "Für jeden im Internet sichtbar.";
+$a->strings["Visible to you only."] = "Nur für Dich sichtbar.";
+$a->strings["Visible to anybody in this network."] = "Für jedes Mitglied der RedMatrix sichtbar.";
+$a->strings["Visible to anybody authenticated."] = "Für jeden sichtbar, der angemeldet ist.";
+$a->strings["Visible to anybody on %s."] = "Für jeden auf %s sichtbar.";
+$a->strings["Visible to all connections."] = "Für alle Verbindungen sichtbar.";
+$a->strings["Visible to approved connections."] = "Nur für akzeptierte Verbindungen sichtbar.";
+$a->strings["Visible to specific connections."] = "Sichtbar für bestimmte Verbindungen.";
+$a->strings["Item not found."] = "Element nicht gefunden.";
+$a->strings["Collection not found."] = "Sammlung nicht gefunden";
+$a->strings["Collection is empty."] = "Sammlung ist leer.";
+$a->strings["Collection: %s"] = "Sammlung: %s";
+$a->strings["Connection: %s"] = "Verbindung: %s";
+$a->strings["Connection not found."] = "Die Verbindung wurde nicht gefunden.";
+$a->strings["No recipient provided."] = "Kein Empfänger angegeben";
+$a->strings["[no subject]"] = "[no subject]";
+$a->strings["Unable to determine sender."] = "Kann Absender nicht bestimmen.";
+$a->strings["Stored post could not be verified."] = "Gespeicherter Beitrag konnten nicht überprüft werden.";
$a->strings["view full size"] = "In Vollbildansicht anschauen";
-$a->strings["created a new post"] = "Neuer Beitrag wurde erzeugt";
-$a->strings["commented on %s's post"] = "hat %s's Beitrag kommentiert";
+$a->strings["Item was not found."] = "Beitrag wurde nicht gefunden.";
+$a->strings["No source file."] = "Keine Quelldatei.";
+$a->strings["Cannot locate file to replace"] = "Kann Datei zum Ersetzen nicht finden";
+$a->strings["Cannot locate file to revise/update"] = "Kann Datei zum Prüfen/Aktualisieren nicht finden";
+$a->strings["File exceeds size limit of %d"] = "Datei überschreitet das Größen-Limit von %d";
+$a->strings["You have reached your limit of %1$.0f Mbytes attachment storage."] = "Die Größe Deiner Datei-Anhänge hat das Maximum von %1$.0f MByte erreicht.";
+$a->strings["File upload failed. Possible system limit or action terminated."] = "Datei-Upload fehlgeschlagen. Mögliche Systembegrenzung oder abgebrochener Prozess.";
+$a->strings["Stored file could not be verified. Upload failed."] = "Gespeichert Datei konnte nicht verifiziert werden. Upload abgebrochen.";
+$a->strings["Path not available."] = "Pfad nicht verfügbar.";
+$a->strings["Empty pathname"] = "Leere Pfadangabe";
+$a->strings["duplicate filename or path"] = "doppelter Dateiname oder Pfad";
+$a->strings["Path not found."] = "Pfad nicht gefunden.";
+$a->strings["mkdir failed."] = "mkdir fehlgeschlagen.";
+$a->strings["database storage failed."] = "Speichern in der Datenbank fehlgeschlagen.";
+$a->strings["Logged out."] = "Ausgeloggt.";
+$a->strings["Failed authentication"] = "Authentifizierung fehlgeschlagen";
+$a->strings["Login failed."] = "Login fehlgeschlagen.";
+$a->strings["Miscellaneous"] = "Verschiedenes";
+$a->strings["YYYY-MM-DD or MM-DD"] = "JJJJ-MM-TT oder MM-TT";
+$a->strings["never"] = "Nie";
+$a->strings["less than a second ago"] = "Vor weniger als einer Sekunde";
+$a->strings["year"] = "Jahr";
+$a->strings["years"] = "Jahre";
+$a->strings["month"] = "Monat";
+$a->strings["months"] = "Monate";
+$a->strings["week"] = "Woche";
+$a->strings["weeks"] = "Wochen";
+$a->strings["day"] = "Tag";
+$a->strings["days"] = "Tage";
+$a->strings["hour"] = "Stunde";
+$a->strings["hours"] = "Stunden";
+$a->strings["minute"] = "Minute";
+$a->strings["minutes"] = "Minuten";
+$a->strings["second"] = "Sekunde";
+$a->strings["seconds"] = "Sekunden";
+$a->strings["%1\$d %2\$s ago"] = "vor %1\$d %2\$s";
+$a->strings["%1\$s's birthday"] = "%1\$ss Geburtstag";
+$a->strings["Happy Birthday %1\$s"] = "Alles Gute zum Geburtstag, %1\$s";
+$a->strings["Image exceeds website size limit of %lu bytes"] = "Bild überschreitet das Limit der Webseite von %lu bytes";
+$a->strings["Image file is empty."] = "Bilddatei ist leer.";
+$a->strings["Unable to process image"] = "Kann Bild nicht verarbeiten";
+$a->strings["Photo storage failed."] = "Foto speichern schlug fehl";
+$a->strings["Upload New Photos"] = "Lade neue Fotos hoch";
+$a->strings["The form security token was not correct. This probably happened because the form has been opened for too long (>3 hours) before submitting it."] = "Das Security-Token des Formulars war nicht korrekt. Das ist wahrscheinlich passiert, weil das Formular zu lange (>3 Stunden) offen war, bevor es abgeschickt wurde.";
+$a->strings["Delete this item?"] = "Dieses Element löschen?";
+$a->strings["Comment"] = "Kommentar";
+$a->strings["[+] show all"] = "[+] Zeige alle";
+$a->strings["[-] show less"] = "[-] zeige weniger";
+$a->strings["[+] expand"] = "[+] aufklappen";
+$a->strings["[-] collapse"] = "[-] einklappen";
+$a->strings["Password too short"] = "Kennwort zu kurz";
+$a->strings["Passwords do not match"] = "Kennwörter stimmen nicht überein";
+$a->strings["everybody"] = "alle";
+$a->strings["Secret Passphrase"] = "geheime Passphrase";
+$a->strings["Passphrase hint"] = "Hinweis zur Passphrase";
+$a->strings["Notice: Permissions have changed but have not yet been submitted."] = "Achtung: Berechtigungen wurden verändert, aber noch nicht gespeichert.";
+$a->strings["close all"] = "Alle schließen";
+$a->strings["Nothing new here"] = "Nichts Neues hier";
+$a->strings["timeago.prefixAgo"] = "timeago.prefixAgo";
+$a->strings["timeago.prefixFromNow"] = " ";
+$a->strings["ago"] = "her";
+$a->strings["from now"] = "von jetzt";
+$a->strings["less than a minute"] = "weniger als eine Minute";
+$a->strings["about a minute"] = "ungefähr eine Minute";
+$a->strings["%d minutes"] = "%d Minuten";
+$a->strings["about an hour"] = "ungefähr eine Stunde";
+$a->strings["about %d hours"] = "ungefähr %d Stunden";
+$a->strings["a day"] = "ein Tag";
+$a->strings["%d days"] = "%d Tage";
+$a->strings["about a month"] = "ungefähr ein Monat";
+$a->strings["%d months"] = "%d Monate";
+$a->strings["about a year"] = "ungefähr ein Jahr";
+$a->strings["%d years"] = "%d Jahre";
+$a->strings[" "] = " ";
+$a->strings["timeago.numbers"] = "timeago.numbers";
$a->strings["Male"] = "Männlich";
$a->strings["Female"] = "Weiblich";
$a->strings["Currently Male"] = "Momentan männlich";
@@ -567,7 +677,6 @@ $a->strings["Transsexual"] = "Transsexuell";
$a->strings["Hermaphrodite"] = "Zwitter";
$a->strings["Neuter"] = "Geschlechtslos";
$a->strings["Non-specific"] = "unklar";
-$a->strings["Other"] = "Anders";
$a->strings["Undecided"] = "Unentschieden";
$a->strings["Males"] = "Männer";
$a->strings["Females"] = "Frauen";
@@ -612,206 +721,667 @@ $a->strings["Uncertain"] = "Ungewiss";
$a->strings["It's complicated"] = "Es ist kompliziert";
$a->strings["Don't care"] = "Interessiert mich nicht";
$a->strings["Ask me"] = "Frag mich mal";
-$a->strings["Missing room name"] = "Der Chatraum hat keinen Namen";
-$a->strings["Duplicate room name"] = "Name des Chatraums bereits vergeben";
-$a->strings["Invalid room specifier."] = "Ungültiger Raumbezeichner.";
-$a->strings["Room not found."] = "Chatraum konnte nicht gefunden werden.";
-$a->strings["Room is full"] = "Der Raum ist voll";
-$a->strings["Tags"] = "Schlagwörter";
-$a->strings["Keywords"] = "Schlüsselwörter";
-$a->strings["have"] = "habe";
-$a->strings["has"] = "hat";
-$a->strings["want"] = "will";
-$a->strings["wants"] = "will";
-$a->strings["likes"] = "gefällt";
-$a->strings["dislikes"] = "missfällt";
-$a->strings["Logged out."] = "Ausgeloggt.";
-$a->strings["Failed authentication"] = "Authentifizierung fehlgeschlagen";
-$a->strings["Login failed."] = "Login fehlgeschlagen.";
-$a->strings["Not a valid email address"] = "Ungültige E-Mail-Adresse";
-$a->strings["Your email domain is not among those allowed on this site"] = "Deine E-Mail-Adresse ist dieser Seite nicht erlaubt";
-$a->strings["Your email address is already registered at this site."] = "Deine E-Mail-Adresse ist auf dieser Seite bereits registriert.";
-$a->strings["An invitation is required."] = "Eine Einladung wird benötigt";
-$a->strings["Invitation could not be verified."] = "Die Einladung konnte nicht bestätigt werden";
-$a->strings["Please enter the required information."] = "Bitte gib die benötigten Informationen ein.";
-$a->strings["Failed to store account information."] = "Speichern der Account-Informationen fehlgeschlagen";
-$a->strings["Registration request at %s"] = "Registrierungsanfrage auf %s";
-$a->strings["Administrator"] = "Administrator";
-$a->strings["your registration password"] = "Dein Registrierungspasswort";
-$a->strings["Registration details for %s"] = "Registrierungsdetails für %s";
-$a->strings["Account approved."] = "Account bestätigt.";
-$a->strings["Registration revoked for %s"] = "Registrierung für %s widerrufen";
-$a->strings["Sort Options"] = "Sortieroptionen";
-$a->strings["Alphabetic"] = "alphabetisch";
-$a->strings["Reverse Alphabetic"] = "Entgegengesetzt alphabetisch";
-$a->strings["Newest to Oldest"] = "Neueste zuerst";
-$a->strings["Enable Safe Search"] = "Sichere Suche einschalten";
-$a->strings["Disable Safe Search"] = "Sichere Suche ausschalten";
-$a->strings["Safe Mode"] = "Sicherer Modus";
-$a->strings["Red Matrix Notification"] = "Red Matrix Benachrichtigung";
-$a->strings["redmatrix"] = "redmatrix";
-$a->strings["Thank You,"] = "Danke.";
-$a->strings["%s Administrator"] = "%s Administrator";
-$a->strings["%s <!item_type!>"] = "%s <!item_type!>";
-$a->strings["[Red:Notify] New mail received at %s"] = "[Red Notify] Neue Mail auf %s empfangen";
-$a->strings["%1\$s, %2\$s sent you a new private message at %3\$s."] = "%1\$s, %2\$s hat Dir eine private Nachricht auf %3\$s gesendet.";
-$a->strings["%1\$s sent you %2\$s."] = "%1\$s hat Dir %2\$s geschickt.";
-$a->strings["a private message"] = "eine private Nachricht";
-$a->strings["Please visit %s to view and/or reply to your private messages."] = "Bitte besuche %s, um die private Nachricht anzusehen und/oder darauf zu antworten.";
-$a->strings["%1\$s, %2\$s commented on [zrl=%3\$s]a %4\$s[/zrl]"] = "%1\$s, %2\$s hat [zrl=%3\$s]a %4\$s[/zrl] kommentiert";
-$a->strings["%1\$s, %2\$s commented on [zrl=%3\$s]%4\$s's %5\$s[/zrl]"] = "%1\$s, %2\$s hat [zrl=%3\$s]%4\$ss %5\$s[/zrl] kommentiert";
-$a->strings["%1\$s, %2\$s commented on [zrl=%3\$s]your %4\$s[/zrl]"] = "%1\$s, %2\$s hat [zrl=%3\$s]Deinen %4\$s[/zrl] kommentiert";
-$a->strings["[Red:Notify] Comment to conversation #%1\$d by %2\$s"] = "[Red:Benachrichtigung] Kommentar in Unterhaltung #%1\$d von %2\$s";
-$a->strings["%1\$s, %2\$s commented on an item/conversation you have been following."] = "%1\$s, %2\$s hat eine Unterhaltung kommentiert, der Du folgst.";
-$a->strings["Please visit %s to view and/or reply to the conversation."] = "Bitte besuche %s, um die Unterhaltung anzusehen und/oder zu kommentieren.";
-$a->strings["[Red:Notify] %s posted to your profile wall"] = "[Red:Hinweis] %s schrieb auf Deine Pinnwand";
-$a->strings["%1\$s, %2\$s posted to your profile wall at %3\$s"] = "%1\$s, %2\$s hat auf Deine Pinnwand auf %3\$s geschrieben";
-$a->strings["%1\$s, %2\$s posted to [zrl=%3\$s]your wall[/zrl]"] = "%1\$s, %2\$s hat auf [zrl=%3\$s]Deine Pinnwand[/zrl] geschrieben";
-$a->strings["[Red:Notify] %s tagged you"] = "[Red Notify] %s hat Dich erwähnt";
-$a->strings["%1\$s, %2\$s tagged you at %3\$s"] = "%1\$s, %2\$s hat Dich auf %3\$s erwähnt";
-$a->strings["%1\$s, %2\$s [zrl=%3\$s]tagged you[/zrl]."] = "%1\$s, %2\$s [zrl=%3\$s]hat Dich erwähnt[/zrl].";
-$a->strings["[Red:Notify] %1\$s poked you"] = "[Red Notify] %1\$s hat Dich angestupst";
-$a->strings["%1\$s, %2\$s poked you at %3\$s"] = "%1\$s, %2\$s hat Dich auf %3\$s angestupst";
-$a->strings["%1\$s, %2\$s [zrl=%2\$s]poked you[/zrl]."] = "%1\$s, %2\$s [zrl=%2\$s]hat Dich angestupst[/zrl].";
-$a->strings["[Red:Notify] %s tagged your post"] = "[Red:Hinweis] %s hat Deinen Beitrag verschlagwortet";
-$a->strings["%1\$s, %2\$s tagged your post at %3\$s"] = "%1\$s, %2\$s hat Deinen Beitrag auf %3\$s verschlagwortet";
-$a->strings["%1\$s, %2\$s tagged [zrl=%3\$s]your post[/zrl]"] = "%1\$s, %2\$s hat [zrl=%3\$s]Deinen Beitrag[/zrl] verschlagwortet";
-$a->strings["[Red:Notify] Introduction received"] = "[Red:Notify] Vorstellung erhalten";
-$a->strings["%1\$s, you've received an introduction from '%2\$s' at %3\$s"] = "%1\$s, Du hast eine Vorstellung von „%2\$s“ auf %3\$s erhalten";
-$a->strings["%1\$s, you've received [zrl=%2\$s]an introduction[/zrl] from %3\$s."] = "%1\$s, Du hast [zrl=%2\$s]eine Vorstellung[/zrl] von %3\$s erhalten.";
-$a->strings["You may visit their profile at %s"] = "Du kannst Dir das Profil unter %s ansehen";
-$a->strings["Please visit %s to approve or reject the introduction."] = "Bitte besuche %s um sie anzunehmen oder abzulehnen.";
-$a->strings["[Red:Notify] Friend suggestion received"] = "[Red:Benachrichtigung] Freundschaftsvorschlag erhalten";
-$a->strings["%1\$s, you've received a friend suggestion from '%2\$s' at %3\$s"] = "%1\$s, Du hast einen Kontaktvorschlag von „%2\$s“ auf %3\$s erhalten";
-$a->strings["%1\$s, you've received [zrl=%2\$s]a friend suggestion[/zrl] for %3\$s from %4\$s."] = "%1\$s, Du hast [zrl=%2\$s]einen Kontaktvorschlag[/zrl] für %3\$s von %4\$s erhalten.";
-$a->strings["Name:"] = "Name:";
-$a->strings["Photo:"] = "Foto:";
-$a->strings["Please visit %s to approve or reject the suggestion."] = "Bitte besuche %s um den Vorschlag zu akzeptieren oder abzulehnen.";
-$a->strings["Image exceeds website size limit of %lu bytes"] = "Bild überschreitet das Limit der Webseite von %lu bytes";
-$a->strings["Image file is empty."] = "Bilddatei ist leer.";
-$a->strings["Unable to process image"] = "Kann Bild nicht verarbeiten";
-$a->strings["Photo storage failed."] = "Foto speichern schlug fehl";
-$a->strings["Upload New Photos"] = "Lade neue Fotos hoch";
-$a->strings["Edit File properties"] = "Dateieigenschaften ändern";
-$a->strings["%d invitation available"] = array(
- 0 => "%d Einladung verfügbar",
- 1 => "%d Einladungen verfügbar",
+$a->strings["prev"] = "vorherige";
+$a->strings["first"] = "erste";
+$a->strings["last"] = "letzte";
+$a->strings["next"] = "nächste";
+$a->strings["older"] = "älter";
+$a->strings["newer"] = "neuer";
+$a->strings["No connections"] = "Keine Verbindungen";
+$a->strings["%d Connection"] = array(
+ 0 => "%d Verbindung",
+ 1 => "%d Verbindungen",
);
-$a->strings["Find Channels"] = "Finde Kanäle";
-$a->strings["Enter name or interest"] = "Name oder Interessen eingeben";
-$a->strings["Connect/Follow"] = "Verbinden/Folgen";
-$a->strings["Examples: Robert Morgenstein, Fishing"] = "Beispiele: Robert Morgenstein, Angeln";
-$a->strings["Find"] = "Finde";
-$a->strings["Channel Suggestions"] = "Kanal-Vorschläge";
-$a->strings["Random Profile"] = "Zufallsprofil";
-$a->strings["Invite Friends"] = "Lade Freunde ein";
-$a->strings["%d connection in common"] = array(
- 0 => "%d gemeinsame Verbindung",
- 1 => "%d gemeinsame Verbindungen",
+$a->strings["View Connections"] = "Verbindungen anzeigen";
+$a->strings["poke"] = "anstupsen";
+$a->strings["ping"] = "anpingen";
+$a->strings["pinged"] = "pingte";
+$a->strings["prod"] = "knuffen";
+$a->strings["prodded"] = "knuffte";
+$a->strings["slap"] = "ohrfeigen";
+$a->strings["slapped"] = "ohrfeigte";
+$a->strings["finger"] = "befummeln";
+$a->strings["fingered"] = "befummelte";
+$a->strings["rebuff"] = "eine Abfuhr erteilen";
+$a->strings["rebuffed"] = "zurückgewiesen";
+$a->strings["happy"] = "glücklich";
+$a->strings["sad"] = "traurig";
+$a->strings["mellow"] = "sanft";
+$a->strings["tired"] = "müde";
+$a->strings["perky"] = "frech";
+$a->strings["angry"] = "sauer";
+$a->strings["stupified"] = "verblüfft";
+$a->strings["puzzled"] = "verwirrt";
+$a->strings["interested"] = "interessiert";
+$a->strings["bitter"] = "verbittert";
+$a->strings["cheerful"] = "fröhlich";
+$a->strings["alive"] = "lebendig";
+$a->strings["annoyed"] = "verärgert";
+$a->strings["anxious"] = "unruhig";
+$a->strings["cranky"] = "schrullig";
+$a->strings["disturbed"] = "verstört";
+$a->strings["frustrated"] = "frustriert";
+$a->strings["depressed"] = "deprimiert";
+$a->strings["motivated"] = "motiviert";
+$a->strings["relaxed"] = "entspannt";
+$a->strings["surprised"] = "überrascht";
+$a->strings["Monday"] = "Montag";
+$a->strings["Tuesday"] = "Dienstag";
+$a->strings["Wednesday"] = "Mittwoch";
+$a->strings["Thursday"] = "Donnerstag";
+$a->strings["Friday"] = "Freitag";
+$a->strings["Saturday"] = "Samstag";
+$a->strings["Sunday"] = "Sonntag";
+$a->strings["January"] = "Januar";
+$a->strings["February"] = "Februar";
+$a->strings["March"] = "März";
+$a->strings["April"] = "April";
+$a->strings["May"] = "Mai";
+$a->strings["June"] = "Juni";
+$a->strings["July"] = "Juli";
+$a->strings["August"] = "August";
+$a->strings["September"] = "September";
+$a->strings["October"] = "Oktober";
+$a->strings["November"] = "November";
+$a->strings["December"] = "Dezember";
+$a->strings["unknown.???"] = "unbekannt.???";
+$a->strings["bytes"] = "Bytes";
+$a->strings["remove category"] = "Kategorie entfernen";
+$a->strings["remove from file"] = "aus der Datei entfernen";
+$a->strings["Click to open/close"] = "Klicke zum Öffnen/Schließen";
+$a->strings["Link to Source"] = "Link zur Quelle";
+$a->strings["Select a page layout: "] = "Ein Seiten-Layout auswählen:";
+$a->strings["default"] = "Standard";
+$a->strings["Page content type: "] = "Content-Typ der Seite:";
+$a->strings["Select an alternate language"] = "Wähle eine alternative Sprache";
+$a->strings["activity"] = "Aktivität";
+$a->strings["Design"] = "Design";
+$a->strings["Blocks"] = "Blöcke";
+$a->strings["Menus"] = "Menüs";
+$a->strings["Layouts"] = "Layouts";
+$a->strings["Pages"] = "Seiten";
+$a->strings["Visible to your default audience"] = "Standard-Sichtbarkeit";
+$a->strings["Show"] = "Zeigen";
+$a->strings["Don't show"] = "Nicht zeigen";
+$a->strings["Permissions"] = "Berechtigungen";
+$a->strings["Close"] = "Schließen";
+$a->strings["Public Timeline"] = "Öffentliche Zeitleiste";
+$a->strings["Site Admin"] = "Hub-Administration";
+$a->strings["Address Book"] = "Adressbuch";
+$a->strings["Mood"] = "Laune";
+$a->strings["Probe"] = "Testen";
+$a->strings["Suggest"] = "Empfehlen";
+$a->strings["Random Channel"] = "Zufälliger Kanal";
+$a->strings["Invite"] = "Einladen";
+$a->strings["Features"] = "Funktionen";
+$a->strings["Language"] = "Sprache";
+$a->strings["Post"] = "Beitrag";
+$a->strings["Profile Photo"] = "Profilfoto";
+$a->strings["Update"] = "Aktualisieren";
+$a->strings["Install"] = "Installieren";
+$a->strings["Purchase"] = "Kaufen";
+$a->strings["Save to Folder"] = "In Ordner speichern";
+$a->strings["View all"] = "Alles anzeigen";
+$a->strings["__ctx:noun__ Dislike"] = array(
+ 0 => "Gefällt nicht",
+ 1 => "Gefällt nicht",
);
-$a->strings["New Page"] = "Neue Seite";
-$a->strings["Click here to upgrade."] = "Klicke hier, um das Upgrade durchzuführen.";
-$a->strings["This action exceeds the limits set by your subscription plan."] = "Diese Aktion überschreitet die Grenzen Ihres Abonnements.";
-$a->strings["This action is not available under your subscription plan."] = "Diese Aktion ist in Ihrem Abonnement nicht verfügbar.";
-$a->strings["Channel is blocked on this site."] = "Der Kanal ist auf dieser Seite blockiert ";
-$a->strings["Channel location missing."] = "Adresse des Kanals fehlt.";
-$a->strings["Response from remote channel was incomplete."] = "Antwort des entfernten Kanals war unvollständig.";
-$a->strings["Channel discovery failed."] = "";
-$a->strings["local account not found."] = "Lokales Konto nicht gefunden.";
-$a->strings["Cannot connect to yourself."] = "Du kannst Dich nicht mit Dir selbst verbinden.";
-$a->strings["The form security token was not correct. This probably happened because the form has been opened for too long (>3 hours) before submitting it."] = "Das Security-Token des Formulars war nicht korrekt. Das ist wahrscheinlich passiert, weil das Formular zu lange (>3 Stunden) offen war, bevor es abgeschickt wurde.";
-$a->strings["Default"] = "Standard";
-$a->strings["Embedded content"] = "Eingebetteter Inhalt";
-$a->strings["Embedding disabled"] = "Einbetten ausgeschaltet";
-$a->strings["Can view my \"public\" stream and posts"] = "Kann meinen öffentlichen Stream und Beiträge sehen";
-$a->strings["Can view my \"public\" channel profile"] = "Kann meinen öffentliches Kanal-Profil sehen";
-$a->strings["Can view my \"public\" photo albums"] = "Kann meine öffentlichen Fotoalben sehen";
-$a->strings["Can view my \"public\" address book"] = "Kann mein öffentliches Adressbuch sehen";
-$a->strings["Can view my \"public\" file storage"] = "Kann meinen öffentlichen Dateiordner sehen";
-$a->strings["Can view my \"public\" pages"] = "Kann meine öffentlichen Seiten sehen";
-$a->strings["Can send me their channel stream and posts"] = "Können mir den Stream und die Beiträge aus ihrem Kanal schicken";
-$a->strings["Can post on my channel page (\"wall\")"] = "Kann auf meiner Kanal-Seite (\"wall\") Beiträge veröffentlichen";
-$a->strings["Can comment on my posts"] = "Kann meine Beiträge kommentieren";
-$a->strings["Can send me private mail messages"] = "Kann mir private Nachrichten schicken";
-$a->strings["Can post photos to my photo albums"] = "Kann Fotos in meinen Fotoalben veröffentlichen";
-$a->strings["Can forward to all my channel contacts via post @mentions"] = "Kann an alle meine Kontakte via @-Erwähnung Nachrichten weiterleiten";
-$a->strings["Advanced - useful for creating group forum channels"] = "Fortgeschritten - sinnvoll, um Gruppen-Kanäle/-Foren zu erstellen";
-$a->strings["Can chat with me (when available)"] = "Kann mit mir chatten (wenn verfügbar)";
-$a->strings["Can write to my \"public\" file storage"] = "Kann in meinen öffentlichen Dateiordner schreiben";
-$a->strings["Can edit my \"public\" pages"] = "Kann meine öffentlichen Seiten bearbeiten";
-$a->strings["Can source my \"public\" posts in derived channels"] = "Kann meine „öffentlichen“ Beiträge als Quellen für andere Kanäle verwenden";
-$a->strings["Somewhat advanced - very useful in open communities"] = "Etwas fortgeschritten – sehr nützlich in offenen Gemeinschaften";
-$a->strings["Can send me bookmarks"] = "Darf mir Lesezeichen senden";
-$a->strings["Can administer my channel resources"] = "Kann meine Kanäle administrieren";
-$a->strings["Extremely advanced. Leave this alone unless you know what you are doing"] = "Sehr fortgeschritten. Bearbeite das nur, wenn Du genau weißt, was Du tust";
-$a->strings["Permission denied"] = "Keine Berechtigung";
-$a->strings["Unknown"] = "Unbekannt";
-$a->strings["Item not found."] = "Element nicht gefunden.";
-$a->strings["Collection not found."] = "Sammlung nicht gefunden";
-$a->strings["Collection is empty."] = "Sammlung ist leer.";
-$a->strings["Collection: %s"] = "Sammlung: %s";
-$a->strings["Connection: %s"] = "Verbindung: %s";
-$a->strings["Connection not found."] = "Die Verbindung wurde nicht gefunden.";
-$a->strings["Invalid data packet"] = "Ungültiges Datenpaket";
-$a->strings["Unable to verify channel signature"] = "Konnte die Signatur des Kanals nicht verifizieren";
-$a->strings["Unable to verify site signature for %s"] = "Kann die Signatur der Seite von %s nicht verifizieren";
-$a->strings["No channel."] = "Kein Kanal.";
-$a->strings["Common connections"] = "Gemeinsame Verbindungen";
-$a->strings["No connections in common."] = "Keine gemeinsamen Verbindungen.";
-$a->strings["Event title and start time are required."] = "Veranstaltungs- Titel und Startzeit sind erforderlich.";
-$a->strings["l, F j"] = "l, F j";
-$a->strings["Edit event"] = "Veranstaltung bearbeiten";
-$a->strings["Create New Event"] = "Neue Veranstaltung erstellen";
-$a->strings["Previous"] = "Voriges";
+$a->strings["Add Star"] = "Stern hinzufügen";
+$a->strings["Remove Star"] = "Stern entfernen";
+$a->strings["Toggle Star Status"] = "Markierungsstatus (Stern) umschalten";
+$a->strings["starred"] = "markiert";
+$a->strings["Add Tag"] = "Tag hinzufügen";
+$a->strings["I like this (toggle)"] = "Mir gefällt das (Umschalter)";
+$a->strings["I don't like this (toggle)"] = "Mir gefällt das nicht (Umschalter)";
+$a->strings["Share This"] = "Teilen";
+$a->strings["share"] = "Teilen";
+$a->strings["View %s's profile - %s"] = "Schaue Dir %ss Profil an – %s";
+$a->strings["to"] = "an";
+$a->strings["via"] = "via";
+$a->strings["Wall-to-Wall"] = "Wall-to-Wall";
+$a->strings["via Wall-To-Wall:"] = "via Wall-To-Wall:";
+$a->strings["Save Bookmarks"] = "Favoriten speichern";
+$a->strings["Add to Calendar"] = "Zum Kalender hinzufügen";
+$a->strings["__ctx:noun__ Likes"] = "Gefällt mir";
+$a->strings["__ctx:noun__ Dislikes"] = "Gefällt nicht";
+$a->strings["%d comment"] = array(
+ 0 => "%d Kommentar",
+ 1 => "%d Kommentare",
+);
+$a->strings["This is you"] = "Das bist Du";
+$a->strings["Submit"] = "Bestätigen";
+$a->strings["Bold"] = "Fett";
+$a->strings["Italic"] = "Kursiv";
+$a->strings["Underline"] = "Unterstrichen";
+$a->strings["Quote"] = "Zitat";
+$a->strings["Code"] = "Code";
+$a->strings["Image"] = "Bild";
+$a->strings["Link"] = "Link";
+$a->strings["Video"] = "Video";
+$a->strings["Set your current mood and tell your friends"] = "Wähle Deine aktuelle Stimmung und teile sie mit Deinen Freunden";
+$a->strings["Invalid profile identifier."] = "Ungültiger Profil-Identifikator";
+$a->strings["Profile Visibility Editor"] = "Profil-Sichtbarkeits-Editor";
+$a->strings["Click on a contact to add or remove."] = "Klicke auf einen Kontakt, um ihn hinzuzufügen oder zu entfernen.";
+$a->strings["Visible To"] = "Sichtbar für";
+$a->strings["All Connections"] = "Alle Verbindungen";
+$a->strings["Menu not found."] = "Menü nicht gefunden";
+$a->strings["Menu element updated."] = "Menü-Element aktualisiert.";
+$a->strings["Unable to update menu element."] = "Kann Menü-Element nicht aktualisieren.";
+$a->strings["Menu element added."] = "Menü-Bestandteil hinzugefügt.";
+$a->strings["Unable to add menu element."] = "Kann Menü-Bestandteil nicht hinzufügen.";
+$a->strings["Not found."] = "Nicht gefunden.";
+$a->strings["Manage Menu Elements"] = "Menü-Bestandteile verwalten";
+$a->strings["Edit menu"] = "Menü bearbeiten";
+$a->strings["Edit element"] = "Bestandteil bearbeiten";
+$a->strings["Drop element"] = "Bestandteil löschen";
+$a->strings["New element"] = "Neues Bestandteil";
+$a->strings["Edit this menu container"] = "Diesen Menü-Container bearbeiten";
+$a->strings["Add menu element"] = "Menüelement hinzufügen";
+$a->strings["Delete this menu item"] = "Lösche dieses Menü-Bestandteil";
+$a->strings["Edit this menu item"] = "Bearbeite dieses Menü-Bestandteil";
+$a->strings["New Menu Element"] = "Neues Menü-Bestandteil";
+$a->strings["Menu Item Permissions"] = "Zugriffsrechte des Menü-Elements";
+$a->strings["(click to open/close)"] = "(zum öffnen/schließen anklicken)";
+$a->strings["Link text"] = "Link Text";
+$a->strings["URL of link"] = "URL des Links";
+$a->strings["Use RedMatrix magic-auth if available"] = "Verwende die automatische RedMatrix-Authentifizierung (magic-auth), wenn verfügbar";
+$a->strings["Open link in new window"] = "Öffne Link in neuem Fenster";
+$a->strings["Order in list"] = "Reihenfolge in der Liste";
+$a->strings["Higher numbers will sink to bottom of listing"] = "Größere Nummern werden weiter unten in der Auflistung einsortiert";
+$a->strings["Menu item not found."] = "Menü-Bestandteil nicht gefunden.";
+$a->strings["Menu item deleted."] = "Menü-Bestandteil gelöscht.";
+$a->strings["Menu item could not be deleted."] = "Menü-Bestandteil kann nicht gelöscht werden.";
+$a->strings["Edit Menu Element"] = "Bearbeite Menü-Bestandteil";
+$a->strings["Modify"] = "Ändern";
+$a->strings["Some blurb about what to do when you're new here"] = "Ein Hinweis, was man tun kann, wenn man neu hier ist";
+$a->strings["Profile not found."] = "Profil nicht gefunden.";
+$a->strings["Profile deleted."] = "Profil gelöscht.";
+$a->strings["Profile-"] = "Profil-";
+$a->strings["New profile created."] = "Neues Profil erstellt.";
+$a->strings["Profile unavailable to clone."] = "Profil kann nicht geklont werden.";
+$a->strings["Profile unavailable to export."] = "Dieses Profil kann nicht exportiert werden.";
+$a->strings["Profile Name is required."] = "Profil-Name erforderlich.";
+$a->strings["Marital Status"] = "Familienstand";
+$a->strings["Romantic Partner"] = "Romantische Partner";
+$a->strings["Likes"] = "Gefällt";
+$a->strings["Dislikes"] = "Gefällt nicht";
+$a->strings["Work/Employment"] = "Arbeit/Anstellung";
+$a->strings["Religion"] = "Religion";
+$a->strings["Political Views"] = "Politische Ansichten";
+$a->strings["Gender"] = "Geschlecht";
+$a->strings["Sexual Preference"] = "Sexuelle Orientierung";
+$a->strings["Homepage"] = "Webseite";
+$a->strings["Interests"] = "Hobbys/Interessen";
+$a->strings["Address"] = "Adresse";
+$a->strings["Location"] = "Ort";
+$a->strings["Profile updated."] = "Profil aktualisiert.";
+$a->strings["Hide your contact/friend list from viewers of this profile?"] = "Deine Kontaktliste vor Betrachtern dieses Profils verbergen?";
+$a->strings["Yes"] = "Ja";
+$a->strings["No"] = "Nein";
+$a->strings["Edit Profile Details"] = "Bearbeite Profil-Details";
+$a->strings["View this profile"] = "Dieses Profil ansehen";
+$a->strings["Change Profile Photo"] = "Profilfoto ändern";
+$a->strings["Create a new profile using these settings"] = "Neues Profil anlegen und diese Einstellungen übernehmen";
+$a->strings["Clone this profile"] = "Dieses Profil klonen";
+$a->strings["Delete this profile"] = "Dieses Profil löschen";
+$a->strings["Import profile from file"] = "Profil aus einer Datei importieren";
+$a->strings["Export profile to file"] = "Profil in eine Datei exportieren";
+$a->strings["Profile Name:"] = "Profilname:";
+$a->strings["Your Full Name:"] = "Dein voller Name:";
+$a->strings["Title/Description:"] = "Titel/Stellenbeschreibung:";
+$a->strings["Your Gender:"] = "Dein Geschlecht:";
+$a->strings["Birthday :"] = "Geburtstag:";
+$a->strings["Street Address:"] = "Straße und Hausnummer:";
+$a->strings["Locality/City:"] = "Wohnort:";
+$a->strings["Postal/Zip Code:"] = "Postleitzahl:";
+$a->strings["Country:"] = "Land:";
+$a->strings["Region/State:"] = "Region/Bundesstaat:";
+$a->strings["<span class=\"heart\">&hearts;</span> Marital Status:"] = "<span class=\"heart\">&hearts;</span> Beziehungsstatus:";
+$a->strings["Who: (if applicable)"] = "Wer: (falls anwendbar)";
+$a->strings["Examples: cathy123, Cathy Williams, cathy@example.com"] = "Beispiele: cathy123, Cathy Williams, cathy@example.com";
+$a->strings["Since [date]:"] = "Seit [Datum]:";
+$a->strings["Homepage URL:"] = "Homepage URL:";
+$a->strings["Religious Views:"] = "Religiöse Ansichten:";
+$a->strings["Keywords:"] = "Schlüsselwörter:";
+$a->strings["Example: fishing photography software"] = "Beispiel: Angeln Fotografie Software";
+$a->strings["Used in directory listings"] = "Wird in Verzeichnis-Auflistungen verwendet";
+$a->strings["Tell us about yourself..."] = "Erzähle uns ein wenig von Dir …";
+$a->strings["Hobbies/Interests"] = "Hobbys/Interessen";
+$a->strings["Contact information and Social Networks"] = "Kontaktinformation und soziale Netzwerke";
+$a->strings["My other channels"] = "Meine anderen Kanäle";
+$a->strings["Musical interests"] = "Musikalische Interessen";
+$a->strings["Books, literature"] = "Bücher, Literatur";
+$a->strings["Television"] = "Fernsehen";
+$a->strings["Film/dance/culture/entertainment"] = "Film/Tanz/Kultur/Unterhaltung";
+$a->strings["Love/romance"] = "Liebe/Romantik";
+$a->strings["Work/employment"] = "Arbeit/Anstellung";
+$a->strings["School/education"] = "Schule/Ausbildung";
+$a->strings["This is your default profile."] = "Das ist Dein Standardprofil.";
+$a->strings["Age: "] = "Alter:";
+$a->strings["Edit/Manage Profiles"] = "Profile bearbeiten/verwalten";
+$a->strings["Add profile things"] = "Sachen zum Profil hinzufügen";
+$a->strings["Include desirable objects in your profile"] = "Binde begehrenswerte Dinge in Dein Profil ein";
+$a->strings["Continue"] = "Fortfahren";
+$a->strings["Premium Channel Setup"] = "Premium-Kanal-Einrichtung";
+$a->strings["Enable premium channel connection restrictions"] = "Einschränkungen für einen Premium-Kanal aktivieren";
+$a->strings["Please enter your restrictions or conditions, such as paypal receipt, usage guidelines, etc."] = "Bitte gib Deine Nutzungsbedingungen ein, z.B. Paypal-Quittung, Richtlinien etc.";
+$a->strings["This channel may require additional steps or acknowledgement of the following conditions prior to connecting:"] = "Unter Umständen sind weitere Schritte oder die Bestätigung der folgenden Bedingungen vor dem Verbinden mit diesem Kanal nötig.";
+$a->strings["Potential connections will then see the following text before proceeding:"] = "Potentielle Kontakte werden den folgenden Text sehen, bevor fortgefahren wird:";
+$a->strings["By continuing, I certify that I have complied with any instructions provided on this page."] = "Indem ich fortfahre, bestätige ich die Erfüllung aller Anweisungen auf dieser Seite.";
+$a->strings["(No specific instructions have been provided by the channel owner.)"] = "(Der Kanal-Besitzer hat keine speziellen Anweisungen hinterlegt.)";
+$a->strings["Restricted or Premium Channel"] = "Eingeschränkter oder Premium-Kanal";
+$a->strings["Remote authentication blocked. You are logged into this site locally. Please logout and retry."] = "Fern-Authentifizierung blockiert. Du bist lokal auf diesem Server angemeldet. Bitte melde Dich ab und versuche es erneut.";
+$a->strings["Welcome %s. Remote authentication successful."] = "Willkommen %s. Entfernte Authentifizierung erfolgreich.";
+$a->strings["Red Matrix Server - Setup"] = "Red Matrix Server - Installation";
+$a->strings["Could not connect to database."] = "Kann nicht mit der Datenbank verbinden.";
+$a->strings["Could not connect to specified site URL. Possible SSL certificate or DNS issue."] = "Konnte die angegebene Webseiten-URL nicht erreichen. Möglicherweise ein Problem mit dem SSL-Zertifikat oder dem DNS.";
+$a->strings["Could not create table."] = "Kann Tabelle nicht erstellen.";
+$a->strings["Your site database has been installed."] = "Die Datenbank Deines Hubs wurde installiert.";
+$a->strings["You may need to import the file \"install/schema_xxx.sql\" manually using a database client."] = "Möglicherweise musst Du die Datei install/schema_xxx.sql manuell mit Hilfe eines Datenkbank-Clients importieren.";
+$a->strings["Please see the file \"install/INSTALL.txt\"."] = "Lies die Datei \"install/INSTALL.txt\".";
+$a->strings["System check"] = "Systemprüfung";
$a->strings["Next"] = "Nächste";
-$a->strings["hour:minute"] = "Stunde:Minute";
-$a->strings["Event details"] = "Veranstaltungs-Details";
-$a->strings["Format is %s %s. Starting date and Title are required."] = "Format ist %s %s. Startzeit und Titel sind erforderlich.";
-$a->strings["Event Starts:"] = "Veranstaltung startet:";
+$a->strings["Check again"] = "Bitte nochmal prüfen";
+$a->strings["Database connection"] = "Datenbank Verbindung";
+$a->strings["In order to install Red Matrix we need to know how to connect to your database."] = "Um die Red-Matrix installieren zu können, müssen wir wissen, wie wir eine Verbindung zu Deiner Datenbank aufbauen können.";
+$a->strings["Please contact your hosting provider or site administrator if you have questions about these settings."] = "Bitte kontaktiere Deinen Hosting-Provider oder Administrator, falls Du Fragen zu diesen Einstellungen hast.";
+$a->strings["The database you specify below should already exist. If it does not, please create it before continuing."] = "Die Datenbank, die Du weiter unten angibst, sollte bereits existieren. Sollte das noch nicht der Fall sein, erzeuge sie bitte bevor Du fortfährst.";
+$a->strings["Database Server Name"] = "Datenbank-Servername";
+$a->strings["Default is localhost"] = "Standard ist localhost";
+$a->strings["Database Port"] = "Datenbank-Port";
+$a->strings["Communication port number - use 0 for default"] = "Port-Nummer für die Kommunikation – verwende 0 für die Standardeinstellung";
+$a->strings["Database Login Name"] = "Datenbank-Benutzername";
+$a->strings["Database Login Password"] = "Datenbank-Kennwort";
+$a->strings["Database Name"] = "Datenbank-Name";
+$a->strings["Database Type"] = "Datenbanktyp";
+$a->strings["Site administrator email address"] = "E-Mail Adresse des Seiten-Administrators";
+$a->strings["Your account email address must match this in order to use the web admin panel."] = "Die E-Mail-Adresse Deines Accounts muss dieser Adresse entsprechen, damit Du Zugriff zur Administrations-Seite erhältst.";
+$a->strings["Website URL"] = "Server-URL";
+$a->strings["Please use SSL (https) URL if available."] = "Nutze wenn möglich eine SSL-URL (https).";
+$a->strings["Please select a default timezone for your website"] = "Standard-Zeitzone für Deinen Server";
+$a->strings["Site settings"] = "Seiteneinstellungen";
+$a->strings["Could not find a command line version of PHP in the web server PATH."] = "Konnte die Kommandozeilen-Version von PHP nicht im PATH des Web-Servers finden.";
+$a->strings["If you don't have a command line version of PHP installed on server, you will not be able to run background polling via cron."] = "Ohne Kommandozeilen-Version von PHP auf dem Server wirst Du nicht in der Lage sein, Hintergrundprozesse via cron auszuführen.";
+$a->strings["PHP executable path"] = "PHP Pfad zu ausführbarer Datei";
+$a->strings["Enter full path to php executable. You can leave this blank to continue the installation."] = "Gib den vollen Pfad zum PHP-Interpreter an. Du kannst dieses Feld frei lassen und mit der Installation fortfahren.";
+$a->strings["Command line PHP"] = "PHP Befehlszeile";
+$a->strings["The command line version of PHP on your system does not have \"register_argc_argv\" enabled."] = "Bei der Kommandozeilen-Version von PHP auf Deinem System ist \"register_argc_argv\" nicht aktiviert.";
+$a->strings["This is required for message delivery to work."] = "Das wird benötigt, damit die Auslieferung von Nachrichten funktioniert.";
+$a->strings["PHP register_argc_argv"] = "PHP register_argc_argv";
+$a->strings["Error: the \"openssl_pkey_new\" function on this system is not able to generate encryption keys"] = "Fehler: Die „openssl_pkey_new“-Funktion auf diesem System ist nicht in der Lage, Schlüssel für die Verschlüsselung zu erzeugen.";
+$a->strings["If running under Windows, please see \"http://www.php.net/manual/en/openssl.installation.php\"."] = "Wenn Du Windows verwendest, findest Du unter http://www.php.net/manual/en/openssl.installation.php eine Installationsanleitung.";
+$a->strings["Generate encryption keys"] = "Verschlüsselungsschlüssel generieren";
+$a->strings["libCurl PHP module"] = "libCurl-PHP-Modul";
+$a->strings["GD graphics PHP module"] = "GD-Grafik-PHP-Modul";
+$a->strings["OpenSSL PHP module"] = "OpenSSL-PHP-Modul";
+$a->strings["mysqli or postgres PHP module"] = "mysqli oder postgres PHP-Modul";
+$a->strings["mb_string PHP module"] = "mb_string-PHP-Modul";
+$a->strings["mcrypt PHP module"] = "mcrypt-PHP-Modul";
+$a->strings["Apache mod_rewrite module"] = "Apache-mod_rewrite-Modul";
+$a->strings["Error: Apache webserver mod-rewrite module is required but not installed."] = "Fehler: Das Apache-Modul mod-rewrite wird benötigt, ist aber nicht installiert.";
+$a->strings["proc_open"] = "proc_open";
+$a->strings["Error: proc_open is required but is either not installed or has been disabled in php.ini"] = "Fehler: proc_open wird benötigt, ist aber entweder nicht installiert oder wurde in der php.ini deaktiviert";
+$a->strings["Error: libCURL PHP module required but not installed."] = "Fehler: Das PHP-Modul libCURL wird benötigt, ist aber nicht installiert.";
+$a->strings["Error: GD graphics PHP module with JPEG support required but not installed."] = "Fehler: Das PHP-Modul GD-Grafik mit JPEG-Unterstützung wird benötigt, ist aber nicht installiert.";
+$a->strings["Error: openssl PHP module required but not installed."] = "Fehler: Das PHP-Modul openssl wird benötigt, ist aber nicht installiert.";
+$a->strings["Error: mysqli or postgres PHP module required but neither are installed."] = "Fehler: Das mysqli oder postgres PHP-Modul ist erforderlich, aber keines von beiden ist installiert.";
+$a->strings["Error: mb_string PHP module required but not installed."] = "Fehler: Das PHP-Modul mb_string wird benötigt, ist aber nicht installiert.";
+$a->strings["Error: mcrypt PHP module required but not installed."] = "Fehler: Das PHP-Modul mcrypt wird benötigt, ist aber nicht installiert.";
+$a->strings["The web installer needs to be able to create a file called \".htconfig.php\ in the top folder of your web server and it is unable to do so."] = "Der Installations-Assistent muss in der Lage sein, die Datei \".htconfig.php\" im Stammverzeichnis des Web-Servers anzulegen, ist er aber nicht.";
+$a->strings["This is most often a permission setting, as the web server may not be able to write files in your folder - even if you can."] = "Meist liegt das daran, dass der Nutzer, unter dem der Web-Server läuft, keine Schreibrechte in dem Verzeichnis hat – selbst wenn Du selbst das darfst.";
+$a->strings["At the end of this procedure, we will give you a text to save in a file named .htconfig.php in your Red top folder."] = "Am Schluss dieses Vorgangs wird ein Text generiert, den Du unter dem Dateinamen .htconfig.php im Stammverzeichnis Deiner Red-Installation speichern musst.";
+$a->strings["You can alternatively skip this procedure and perform a manual installation. Please see the file \"install/INSTALL.txt\" for instructions."] = "Alternativ kannst Du diesen Schritt überspringen und die Installation manuell vornehmen. Lies dazu die Datei install/INSTALL.txt.";
+$a->strings[".htconfig.php is writable"] = ".htconfig.php ist beschreibbar";
+$a->strings["Red uses the Smarty3 template engine to render its web views. Smarty3 compiles templates to PHP to speed up rendering."] = "Red verwendet Smarty3 um Vorlagen für die Webdarstellung zu übersetzen. Smarty3 übersetzt diese Vorlagen nach PHP, um die Darstellung zu beschleunigen.";
+$a->strings["In order to store these compiled templates, the web server needs to have write access to the directory %s under the Red top level folder."] = "Um diese kompilierten Vorlagen speichern zu können, braucht der Web-Server Schreibzugriff auf das Verzeichnis %s unterhalb des Red-Installationsverzeichnisses.";
+$a->strings["Please ensure that the user that your web server runs as (e.g. www-data) has write access to this folder."] = "Bitte stelle sicher, dass der Nutzer, unter dem der Web-Server läuft (z.B. www-data), Schreibzugriff auf dieses Verzeichnis hat.";
+$a->strings["Note: as a security measure, you should give the web server write access to %s only--not the template files (.tpl) that it contains."] = " Hinweis: Aus Sicherheitsgründen sollte der Web-Server nur auf %s Schreibrechte haben, nicht in der restlichen Red-Installation.";
+$a->strings["%s is writable"] = "%s ist beschreibbar";
+$a->strings["Red uses the store directory to save uploaded files. The web server needs to have write access to the store directory under the Red top level folder"] = "Red benutzt das Verzeichnis store, um hochgeladene Dateien zu speichern. Der Web-Server benötigt Schreibrechte für dieses Verzeichnis direkt unterhalb des Red-Stammverzeichnisses";
+$a->strings["store is writable"] = "store ist schreibbar";
+$a->strings["SSL certificate cannot be validated. Fix certificate or disable https access to this site."] = "Das SSL-Zertifikat konnte nicht validiert werden. Korrigiere das Zertifikat oder deaktiviere den HTTPS-Zugriff auf diesen Server.";
+$a->strings["If you have https access to your website or allow connections to TCP port 443 (the https: port), you MUST use a browser-valid certificate. You MUST NOT use self-signed certificates!"] = "Wenn Du via HTTPS auf Deinen Server zugreifen möchtest, also Verbindungen über den Port 443 möglich sein sollen, ist ein SSL-Zertifikat einer Zertifizierungsstelle (CA) notwendig, das von den Browsern ohne Sicherheitsabfrage akzeptiert wird. Die Verwendung eines selbst signierten Zertifikates ist nicht möglich.";
+$a->strings["This restriction is incorporated because public posts from you may for example contain references to images on your own hub."] = "Diese Einschränkung wurde eingebaut, weil Deine öffentlichen Beiträge zum Beispiel Verweise auf Bilder auf Deinem eigenen Hub enthalten können.";
+$a->strings["If your certificate is not recognized, members of other sites (who may themselves have valid certificates) will get a warning message on their own site complaining about security issues."] = "Wenn Dein Zertifikat nicht von jedem Browser akzeptiert wird, erhalten die Mitglieder anderer Red-Server (die mit korrekten Zertifikaten ausgestattet sind) Sicherheits-Warnmeldungen, obwohl sie gar nicht direkt auf Deinem Server unterwegs sind (zum Beispiel, wenn ein Bild aus einem Deiner Beiträge angezeigt wird).";
+$a->strings["This can cause usability issues elsewhere (not just on your own site) so we must insist on this requirement."] = "Dies kann Probleme für andere Nutzer (nicht nur auf Deinem eigenen Server) verursachen, so dass wir auf dieser Forderung bestehen müssen.";
+$a->strings["Providers are available that issue free certificates which are browser-valid."] = "Es gibt einige Zertifizierungsstellen (CAs), bei denen solche Zertifikate kostenlos zu haben sind.";
+$a->strings["SSL certificate validation"] = "SSL Zertifikatverifizierung";
+$a->strings["Url rewrite in .htaccess is not working. Check your server configuration.Test: "] = "Das Umschreiben von URLs (rewrite) per .htaccess funktioniert nicht. Bitte prüfe die Server-Konfiguration. Test:";
+$a->strings["Url rewrite is working"] = "Url rewrite funktioniert";
+$a->strings["The database configuration file \".htconfig.php\" could not be written. Please use the enclosed text to create a configuration file in your web server root."] = "Die Datenbank-Konfigurationsdatei „.htconfig.php“ konnte nicht geschrieben werden. Bitte verwende den unten angegebenen Text, um die Konfigurationsdatei im Stammverzeichnis des Webservers anzulegen.";
+$a->strings["Errors encountered creating database tables."] = "Fehler beim Anlegen der Datenbank-Tabellen aufgetreten.";
+$a->strings["<h1>What next</h1>"] = "<h1>Was als Nächstes</h1>";
+$a->strings["IMPORTANT: You will need to [manually] setup a scheduled task for the poller."] = "WICHTIG: Du musst [manuell] einen Cronjob für den Poller einrichten.";
+$a->strings["Version %s"] = "Version %s";
+$a->strings["Installed plugins/addons/apps:"] = "Installierte Plugins/Addons/Apps";
+$a->strings["No installed plugins/addons/apps"] = "Keine installierten Plugins/Addons/Apps";
+$a->strings["Red"] = "Red";
+$a->strings["This is a hub of the Red Matrix - a global cooperative network of decentralized privacy enhanced websites."] = "Dieser Hub ist Teil der RedMatrix – eines globalen, kooperativen Netzwerks aus dezentralen Websites, die Rücksicht auf Deine Privatsphäre nehmen.";
+$a->strings["Running at web location"] = "Erreichbar unter der Web-Adresse";
+$a->strings["Please visit <a href=\"http://getzot.com\">GetZot.com</a> to learn more about the Red Matrix."] = "Besuche <a href=\"http://getzot.com\">GetZot.com</a>, um mehr über die Red-Matrix zu erfahren.";
+$a->strings["Bug reports and issues: please visit"] = "Probleme oder Fehler gefunden? Bitte besuche";
+$a->strings["Suggestions, praise, etc. - please email \"redmatrix\" at librelist - dot com"] = "Vorschläge, Lob, usw.: E-Mail an 'redmatrix' at librelist - dot - com";
+$a->strings["Site Administrators"] = "Administratoren";
+$a->strings["Poke/Prod"] = "Anstupsen/Knuffen";
+$a->strings["poke, prod or do other things to somebody"] = "Stupse Leute an oder mache anderes mit ihnen";
+$a->strings["Recipient"] = "Empfänger";
+$a->strings["Choose what you wish to do to recipient"] = "Wähle, was Du mit dem/r Empfänger/in tun willst";
+$a->strings["Make this post private"] = "Diesen Beitrag privat machen";
+$a->strings["Authorize application connection"] = "Zugriff für die Anwendung autorisieren";
+$a->strings["Return to your app and insert this Securty Code:"] = "Trage folgenden Sicherheitscode in der Anwendung ein:";
+$a->strings["Please login to continue."] = "Zum Weitermachen, bitte einloggen.";
+$a->strings["Do you want to authorize this application to access your posts and contacts, and/or create new posts for you?"] = "Möchtest Du dieser Anwendung erlauben, Deine Nachrichten und Kontakte abzurufen und/oder neue Nachrichten für Dich zu erstellen?";
+$a->strings["Item not available."] = "Element nicht verfügbar.";
+$a->strings["Fetching URL returns error: %1\$s"] = "Abrufen der URL gab einen Fehler zurück: %1\$s";
+$a->strings["Invalid item."] = "Ungültiges Element.";
+$a->strings["Channel not found."] = "Kanal nicht gefunden.";
+$a->strings["Page not found."] = "Seite nicht gefunden.";
+$a->strings["Failed to create source. No channel selected."] = "Konnte die Quelle nicht anlegen. Kein Kanal ausgewählt.";
+$a->strings["Source created."] = "Quelle erstellt.";
+$a->strings["Source updated."] = "Quelle aktualisiert.";
+$a->strings["*"] = "*";
+$a->strings["Manage remote sources of content for your channel."] = "Externe Inhaltsquellen für Deinen Kanal verwalten.";
+$a->strings["New Source"] = "Neue Quelle";
+$a->strings["Import all or selected content from the following channel into this channel and distribute it according to your channel settings."] = "Importiere alle oder ausgewählte Inhalte des folgenden Kanals in diesen Kanal und verteile sie gemäß der Einstellungen dieses Kanals.";
+$a->strings["Only import content with these words (one per line)"] = "Importiere nur Beiträge, die folgende Wörter (eines pro Zeile) enthalten";
+$a->strings["Leave blank to import all public content"] = "Leer lassen, um alle öffentlichen Beiträge zu importieren";
+$a->strings["Channel Name"] = "Name des Kanals";
+$a->strings["Source not found."] = "Quelle nicht gefunden.";
+$a->strings["Edit Source"] = "Quelle bearbeiten";
+$a->strings["Delete Source"] = "Quelle löschen";
+$a->strings["Source removed"] = "Quelle gelöscht";
+$a->strings["Unable to remove source."] = "Konnte die Quelle nicht löschen.";
+$a->strings["Block Name"] = "Block-Name";
+$a->strings["Public access denied."] = "Öffentlicher Zugang verweigert.";
+$a->strings["Gender: "] = "Geschlecht:";
+$a->strings["Status: "] = "Status:";
+$a->strings["Homepage: "] = "Webseite:";
+$a->strings["Hometown: "] = "Wohnort:";
+$a->strings["About: "] = "Ãœber:";
+$a->strings["Public Forum:"] = "Öffentliches Forum:";
+$a->strings["Keywords: "] = "Schlüsselwörter:";
+$a->strings["Finding:"] = "Ergebnisse:";
+$a->strings["next page"] = "nächste Seite";
+$a->strings["previous page"] = "vorherige Seite";
+$a->strings["No entries (some entries may be hidden)."] = "Keine Einträge gefunden (einige könnten versteckt sein).";
+$a->strings["Maximum daily site registrations exceeded. Please try again tomorrow."] = "Maximale Anzahl täglicher Neuanmeldungen erreicht. Bitte versuche es morgen noch einmal.";
+$a->strings["Please indicate acceptance of the Terms of Service. Registration failed."] = "Bitte stimme den Nutzungsbedingungen zu. Registrierung fehlgeschlagen.";
+$a->strings["Passwords do not match."] = "Passwörter stimmen nicht überein.";
+$a->strings["Registration successful. Please check your email for validation instructions."] = "Registrierung erfolgreich. Eine E-Mail mit weiteren Anweisungen wurde an Dich gesendet.";
+$a->strings["Your registration is pending approval by the site owner."] = "Deine Registrierung muss noch vom Betreiber der Seite freigegeben werden.";
+$a->strings["Your registration can not be processed."] = "Deine Registrierung konnte nicht verarbeitet werden.";
+$a->strings["Registration on this site/hub is by approval only."] = "Anmeldungen auf diesem Server erfordern Zustimmung durch den Administrator";
+$a->strings["<a href=\"pubsites\">Register at another affiliated site/hub</a>"] = "<a href=\"pubsites\">Registrierung auf einem anderen, angeschlossenen Server</a>";
+$a->strings["This site has exceeded the number of allowed daily account registrations. Please try again tomorrow."] = "Die maximale Anzahl täglicher Registrierungen auf diesem Server wurde überschritten. Bitte versuche es morgen noch einmal.";
+$a->strings["Terms of Service"] = "Nutzungsbedingungen";
+$a->strings["I accept the %s for this website"] = "Ich akzeptiere die %s für diese Webseite";
+$a->strings["I am over 13 years of age and accept the %s for this website"] = "Ich bin älter als 13 Jahre und akzeptiere die %s dieser Webseite";
+$a->strings["Registration"] = "Registrierung";
+$a->strings["Membership on this site is by invitation only."] = "Mitgliedschaft auf dieser Seite ist nur nach vorheriger Einladung möglich.";
+$a->strings["Please enter your invitation code"] = "Bitte trage Deinen Einladungs-Code ein";
+$a->strings["Your email address"] = "Ihre E-Mail Adresse";
+$a->strings["Choose a password"] = "Passwort";
+$a->strings["Please re-enter your password"] = "Bitte gib Dein Passwort noch einmal ein";
+$a->strings["Event can not end before it has started."] = "Termin-Ende liegt vor dem Beginn.";
+$a->strings["Event title and start time are required."] = "Titel und Startzeit des Termins sind erforderlich.";
+$a->strings["Event not found."] = "Termin nicht gefunden.";
+$a->strings["l, F j"] = "l, j. F";
+$a->strings["Edit event"] = "Termin bearbeiten";
+$a->strings["Create New Event"] = "Neuen Termin erstellen";
+$a->strings["Previous"] = "Voriges";
+$a->strings["Event details"] = "Termin-Details";
+$a->strings["Starting date and Title are required."] = "Startdatum und Titel sind erforderlich.";
+$a->strings["Event Starts:"] = "Termin beginnt:";
$a->strings["Required"] = "Benötigt";
$a->strings["Finish date/time is not known or not relevant"] = "Ende Datum/Zeit sind unbekannt oder unwichtig";
-$a->strings["Event Finishes:"] = "Veranstaltung endet:";
+$a->strings["Event Finishes:"] = "Termin endet:";
$a->strings["Adjust for viewer timezone"] = "An die Zeitzone des Betrachters anpassen";
$a->strings["Description:"] = "Beschreibung:";
$a->strings["Title:"] = "Titel:";
-$a->strings["Share this event"] = "Die Veranstaltung teilen";
-$a->strings["Thing updated"] = "Ding aktualisiert";
+$a->strings["Share this event"] = "Den Termin teilen";
+$a->strings["Public Sites"] = "Öffentliche Server";
+$a->strings["The listed sites allow public registration into the Red Matrix. All sites in the matrix are interlinked so membership on any of them conveys membership in the matrix as a whole. Some sites may require subscription or provide tiered service plans. The provider links <strong>may</strong> provide additional details."] = "Die hier aufgeführten Server erlauben Dir, einen Account in der Red-Matrix anzulegen. Alle Server der Matrix sind miteinander verbunden, so dass die Mitgliedschaft auf einem Server eine Verbindung zu beliebigen anderen Servern der Matrix ermöglicht. Es könnte sein, dass einige dieser Server kostenpflichtig sind oder abgestufte, je nach Umfang kostenpflichtige Mitgliedschaften anbieten. Auf den jeweiligen Seiten <strong>könnten</strong> nähere Details dazu stehen.";
+$a->strings["Site URL"] = "Server-URL";
+$a->strings["Access Type"] = "Zugangstyp";
+$a->strings["Registration Policy"] = "Registrierungsrichtlinien";
+$a->strings["You must be logged in to see this page."] = "Du musst angemeldet sein, um diese Seite betrachten zu können.";
+$a->strings["Insufficient permissions. Request redirected to profile page."] = "Unzureichende Zugriffsrechte. Die Anfrage wurde zur Profil-Seite umgeleitet.";
+$a->strings["Select a bookmark folder"] = "Lesezeichenordner wählen";
+$a->strings["Save Bookmark"] = "Lesezeichen speichern";
+$a->strings["URL of bookmark"] = "URL des Lesezeichens";
+$a->strings["Description"] = "Beschreibung";
+$a->strings["Or enter new bookmark folder name"] = "Oder gib einen neuen Namen für den Lesezeichenordner ein";
+$a->strings["Room not found"] = "Chatraum nicht gefunden";
+$a->strings["Leave Room"] = "Raum verlassen";
+$a->strings["Delete This Room"] = "Diesen Raum löschen";
+$a->strings["I am away right now"] = "Ich bin gerade nicht da";
+$a->strings["I am online"] = "Ich bin online";
+$a->strings["Bookmark this room"] = "Lesezeichen für diesen Raum setzen";
+$a->strings["New Chatroom"] = "Neuer Chatraum";
+$a->strings["Chatroom Name"] = "Name des Chatraums";
+$a->strings["%1\$s's Chatrooms"] = "%1\$ss Chaträume";
+$a->strings["%1\$s is following %2\$s's %3\$s"] = "%1\$s folgt nun %2\$ss %3\$s";
+$a->strings["Away"] = "Abwesend";
+$a->strings["Online"] = "Online";
+$a->strings["Please login."] = "Bitte melde dich an.";
+$a->strings["No such group"] = "Sammlung nicht gefunden";
+$a->strings["Search Results For:"] = "Suchergebnisse für:";
+$a->strings["Collection is empty"] = "Sammlung ist leer";
+$a->strings["Collection: "] = "Sammlung:";
+$a->strings["Connection: "] = "Verbindung:";
+$a->strings["Invalid connection."] = "Ungültige Verbindung.";
+$a->strings["Channel removals are not allowed within 48 hours of changing the account password."] = "Innerhalb von 48 Stunden nach einer Änderung des Passworts können keine Kanäle gelöscht werden.";
+$a->strings["Remove This Channel"] = "Diesen Kanal löschen";
+$a->strings["This will completely remove this channel from the network. Once this has been done it is not recoverable."] = "Hiermit wird dieser Kanal komplett aus dem Netzwerk gelöscht. Einmal eingeleitet, kann dieser Prozess nicht wieder rückgängig gemacht werden.";
+$a->strings["Please enter your password for verification:"] = "Bitte gib zur Bestätigung Dein Passwort ein:";
+$a->strings["Remove this channel and all its clones from the network"] = "Lösche diesen Kanal und all seine Klone aus dem Netzwerk";
+$a->strings["By default only the instance of the channel located on this hub will be removed from the network"] = "Standardmäßig wird der Kanal nur auf diesem Server gelöscht, seine Klone verbleiben im Netzwerk";
+$a->strings["Remove Channel"] = "Kanal löschen";
+$a->strings["No channel."] = "Kein Kanal.";
+$a->strings["Common connections"] = "Gemeinsame Verbindungen";
+$a->strings["No connections in common."] = "Keine gemeinsamen Verbindungen.";
+$a->strings["We encountered a problem while logging in with the OpenID you provided. Please check the correct spelling of the ID."] = "Wir haben ein Problem mit der OpenID festgestellt, mit der Du Dich anmelden wolltest. Bitte überprüfe sie noch einmal.";
+$a->strings["The error message was:"] = "Die Fehlermeldung war:";
+$a->strings["Authentication failed."] = "Authentifizierung fehlgeschlagen.";
+$a->strings["Remote Authentication"] = "Entfernte Authentifizierung";
+$a->strings["Enter your channel address (e.g. channel@example.com)"] = "Deine Kanal-Adresse (z. B. channel@example.com)";
+$a->strings["Authenticate"] = "Authentifizieren";
+$a->strings["- select -"] = "– auswählen –";
+$a->strings["Page owner information could not be retrieved."] = "Informationen über den Besitzer der Seite konnten nicht gefunden werden.";
+$a->strings["Album not found."] = "Album nicht gefunden.";
+$a->strings["Delete Album"] = "Album löschen";
+$a->strings["Delete Photo"] = "Foto löschen";
+$a->strings["No photos selected"] = "Keine Fotos ausgewählt";
+$a->strings["Access to this item is restricted."] = "Der Zugriff auf dieses Foto ist eingeschränkt.";
+$a->strings["%1$.2f MB of %2$.2f MB photo storage used."] = "%1$.2f MB von %2$.2f MB Foto-Speicher belegt.";
+$a->strings["%1$.2f MB photo storage used."] = "%1$.2f MB Foto-Speicher belegt.";
+$a->strings["Upload Photos"] = "Fotos hochladen";
+$a->strings["Enter a new album name"] = "Gib einen Namen für ein neues Album ein";
+$a->strings["or select an existing one (doubleclick)"] = "oder wähle ein bereits vorhandenes aus (Doppelklick)";
+$a->strings["Do not show a status post for this upload"] = "Keine Statusnachricht für diesen Upload senden";
+$a->strings["Album name could not be decoded"] = "Albumname konnte nicht dekodiert werden";
+$a->strings["Contact Photos"] = "Kontakt-Bilder";
+$a->strings["Show Newest First"] = "Zeige Neueste zuerst";
+$a->strings["Show Oldest First"] = "Zeige Älteste zuerst";
+$a->strings["View Photo"] = "Foto ansehen";
+$a->strings["Edit Album"] = "Album bearbeiten";
+$a->strings["Permission denied. Access to this item may be restricted."] = "Berechtigung verweigert. Der Zugriff ist wahrscheinlich eingeschränkt worden.";
+$a->strings["Photo not available"] = "Foto nicht verfügbar";
+$a->strings["Use as profile photo"] = "Als Profilfoto verwenden";
+$a->strings["Private Photo"] = "Privates Foto";
+$a->strings["View Full Size"] = "In voller Größe anzeigen";
+$a->strings["Remove"] = "Entferne";
+$a->strings["Edit photo"] = "Foto bearbeiten";
+$a->strings["Rotate CW (right)"] = "Drehen im UZS (rechts)";
+$a->strings["Rotate CCW (left)"] = "Drehen gegen UZS (links)";
+$a->strings["Caption"] = "Bildunterschrift";
+$a->strings["Add a Tag"] = "Schlagwort hinzufügen";
+$a->strings["Example: @bob, @Barbara_Jensen, @jim@example.com"] = "Beispiele: @ben, @Karl_Prester, @lieschen@example.com";
+$a->strings["Flag as adult in album view"] = "In der Albumansicht als nicht jugendfrei markieren";
+$a->strings["In This Photo:"] = "Auf diesem Foto:";
+$a->strings["View Album"] = "Album ansehen";
+$a->strings["Recent Photos"] = "Neueste Fotos";
+$a->strings["Could not access contact record."] = "Konnte nicht auf den Kontakteintrag zugreifen.";
+$a->strings["Could not locate selected profile."] = "Gewähltes Profil nicht gefunden.";
+$a->strings["Connection updated."] = "Verbindung aktualisiert.";
+$a->strings["Failed to update connection record."] = "Konnte den Verbindungseintrag nicht aktualisieren.";
+$a->strings["Blocked"] = "Blockiert";
+$a->strings["Ignored"] = "Ignoriert";
+$a->strings["Hidden"] = "Versteckt";
+$a->strings["Archived"] = "Archiviert";
+$a->strings["All"] = "Alle";
+$a->strings["Suggest new connections"] = "Neue Verbindungen vorschlagen";
+$a->strings["New Connections"] = "Neue Verbindungen";
+$a->strings["Show pending (new) connections"] = "Zeige ausstehende (neue) Verbindungsanfragen";
+$a->strings["Show all connections"] = "Zeige alle Verbindungen";
+$a->strings["Unblocked"] = "Freigegeben";
+$a->strings["Only show unblocked connections"] = "Zeige nur freigegebene Verbindungen";
+$a->strings["Only show blocked connections"] = "Zeige nur blockierte Verbindungen";
+$a->strings["Only show ignored connections"] = "Zeige nur ignorierte Verbindungen";
+$a->strings["Only show archived connections"] = "Zeige nur archivierte Verbindungen";
+$a->strings["Only show hidden connections"] = "Zeige nur versteckte Verbindungen";
+$a->strings["%1\$s [%2\$s]"] = "%1\$s [%2\$s]";
+$a->strings["Edit connection"] = "Verbindung bearbeiten";
+$a->strings["Search your connections"] = "Verbindungen durchsuchen";
+$a->strings["Finding: "] = "Ergebnisse:";
+$a->strings["You have created %1$.0f of %2$.0f allowed channels."] = "Du hast %1$.0f von maximal %2$.0f erlaubten Kanälen eingerichtet.";
+$a->strings["Create a new channel"] = "Neuen Kanal anlegen";
+$a->strings["Current Channel"] = "Aktueller Kanal";
+$a->strings["Attach to one of your channels by selecting it."] = "Wähle einen Deiner Kanäle aus, um ihn zu verwenden.";
+$a->strings["Default Channel"] = "Standard Kanal";
+$a->strings["Make Default"] = "Zum Standard machen";
+$a->strings["Edit post"] = "Bearbeite Beitrag";
+$a->strings["is now connected to"] = "ist jetzt verbunden mit";
+$a->strings["Could not access address book record."] = "Konnte nicht auf den Adressbuch-Eintrag zugreifen.";
+$a->strings["Refresh failed - channel is currently unavailable."] = "Aktualisierung fehlgeschlagen – der Kanal ist im Moment nicht erreichbar.";
+$a->strings["Channel has been unblocked"] = "Kanal nicht mehr blockiert";
+$a->strings["Channel has been blocked"] = "Kanal blockiert";
+$a->strings["Unable to set address book parameters."] = "Konnte die Adressbuch-Parameter nicht setzen.";
+$a->strings["Channel has been unignored"] = "Kanal wird nicht mehr ignoriert";
+$a->strings["Channel has been ignored"] = "Kanal wird ignoriert";
+$a->strings["Channel has been unarchived"] = "Kanal wurde aus dem Archiv zurück geholt";
+$a->strings["Channel has been archived"] = "Kanal wurde archiviert";
+$a->strings["Channel has been unhidden"] = "Kanal wird nicht mehr versteckt";
+$a->strings["Channel has been hidden"] = "Kanal wurde versteckt";
+$a->strings["Channel has been approved"] = "Kanal wurde zugelassen";
+$a->strings["Channel has been unapproved"] = "Zulassung des Kanals entfernt";
+$a->strings["Connection has been removed."] = "Verbindung wurde gelöscht.";
+$a->strings["View %s's profile"] = "%ss Profil ansehen";
+$a->strings["Refresh Permissions"] = "Zugriffsrechte neu laden";
+$a->strings["Fetch updated permissions"] = "Aktualisierte Zugriffsrechte abfragen";
+$a->strings["Recent Activity"] = "Kürzliche Aktivitäten";
+$a->strings["View recent posts and comments"] = "Betrachte die neuesten Beiträge und Kommentare";
+$a->strings["Unblock"] = "Freigeben";
+$a->strings["Block"] = "Blockieren";
+$a->strings["Block or Unblock this connection"] = "Verbindung blockieren oder freigeben";
+$a->strings["Unignore"] = "Nicht ignorieren";
+$a->strings["Ignore"] = "Ignorieren";
+$a->strings["Ignore or Unignore this connection"] = "Verbindung ignorieren oder wieder beachten";
+$a->strings["Unarchive"] = "Aus Archiv zurückholen";
+$a->strings["Archive"] = "Archivieren";
+$a->strings["Archive or Unarchive this connection"] = "Verbindung archivieren oder aus dem Archiv zurückholen";
+$a->strings["Unhide"] = "Wieder sichtbar machen";
+$a->strings["Hide"] = "Verstecken";
+$a->strings["Hide or Unhide this connection"] = "Diese Verbindung verstecken oder wieder sichtbar machen";
+$a->strings["Delete this connection"] = "Verbindung löschen";
+$a->strings["Approve this connection"] = "Verbindung genehmigen";
+$a->strings["Accept connection to allow communication"] = "Akzeptiere die Verbindung, um Kommunikation zu ermöglichen";
+$a->strings["Connections: settings for %s"] = "Verbindungseinstellungen für %s";
+$a->strings["Apply these permissions automatically"] = "Diese Berechtigungen automatisch anwenden";
+$a->strings["Apply the permissions indicated on this page to all new connections."] = "Wende die auf dieser Seite gewählten Berechtigungen auf alle neuen Verbindungen an.";
+$a->strings["Slide to adjust your degree of friendship"] = "Verschieben, um den Grad der Freundschaft zu einzustellen";
+$a->strings["inherited"] = "geerbt";
+$a->strings["Connection has no individual permissions!"] = "Diese Verbindung hat keine individuellen Zugriffsrechte!";
+$a->strings["This may be appropriate based on your <a href=\"settings\">privacy settings</a>, though you may wish to review the \"Advanced Permissions\"."] = "Abhängig von Deinen <a href=\"settings\">Privatsphäre-Einstellungen</a> könnte das passen, eventuell solltest Du aber die „Zugriffsrechte für Fortgeschrittene“ überprüfen.";
+$a->strings["Profile Visibility"] = "Sichtbarkeit des Profils";
+$a->strings["Please choose the profile you would like to display to %s when viewing your profile securely."] = "Bitte wähle ein Profil, das wir %s zeigen sollen, wenn Deine Profilseite über eine verifizierte Verbindung aufgerufen wird.";
+$a->strings["Contact Information / Notes"] = "Kontaktinformationen / Notizen";
+$a->strings["Edit contact notes"] = "Kontaktnotizen bearbeiten";
+$a->strings["Their Settings"] = "Deren Einstellungen";
+$a->strings["My Settings"] = "Meine Einstellungen";
+$a->strings["Clear/Disable Automatic Permissions"] = "Automatische Berechtigungen abschalten/entfernen";
+$a->strings["Forum Members"] = "Forum Mitglieder";
+$a->strings["Soapbox"] = "Marktschreier";
+$a->strings["Full Sharing (typical social network permissions)"] = "Vollumfängliches Teilen (übliche Berechtigungen in sozialen Netzwerken)";
+$a->strings["Cautious Sharing "] = "Vorsichtiges Teilen";
+$a->strings["Follow Only"] = "Nur folgen";
+$a->strings["Individual Permissions"] = "Individuelle Zugriffsrechte";
+$a->strings["Some permissions may be inherited from your channel <a href=\"settings\">privacy settings</a>, which have higher priority than individual settings. Changing those inherited settings on this page will have no effect."] = "Einige Berechtigungen werden von den globalen <a href=\"settings\">Sicherheits- und Privatsphäre-Einstellungen</a> dieses Kanals geerbt, die eine höhere Priorität haben als die Einstellungen bei einer Verbindung. Werden geerbte Einstellungen hier geändert, hat das keine Auswirkungen.";
+$a->strings["Advanced Permissions"] = "Zugriffsrechte für Fortgeschrittene";
+$a->strings["Simple Permissions (select one and submit)"] = "Einfache Berechtigungs-Einstellungen (wähle eine aus und klicke auf Senden)";
+$a->strings["Visit %s's profile - %s"] = "%ss Profil besuchen - %s";
+$a->strings["Block/Unblock contact"] = "Kontakt blockieren/freigeben";
+$a->strings["Ignore contact"] = "Kontakt ignorieren";
+$a->strings["Repair URL settings"] = "URL-Einstellungen reparieren";
+$a->strings["View conversations"] = "Unterhaltungen anzeigen";
+$a->strings["Delete contact"] = "Kontakt löschen";
+$a->strings["Last update:"] = "Letzte Aktualisierung:";
+$a->strings["Update public posts"] = "Öffentliche Beiträge aktualisieren";
+$a->strings["Update now"] = "Jetzt aktualisieren";
+$a->strings["Currently blocked"] = "Derzeit blockiert";
+$a->strings["Currently ignored"] = "Derzeit ignoriert";
+$a->strings["Currently archived"] = "Derzeit archiviert";
+$a->strings["Currently pending"] = "Derzeit anstehend";
+$a->strings["Hide this contact from others"] = "Diese Verbindung vor den anderen verbergen.";
+$a->strings["Replies/likes to your public posts <strong>may</strong> still be visible"] = "Antworten/Likes auf deine öffentlichen Beiträge <strong>können</strong> immer noch sichtbar sein";
+$a->strings["OpenID protocol error. No ID returned."] = "OpenID Protokollfehler. Keine ID zurückgegeben.";
+$a->strings["Thing updated"] = "Sache aktualisiert";
$a->strings["Object store: failed"] = "Speichern des Objekts fehlgeschlagen";
-$a->strings["Thing added"] = "Ding hinzugefügt";
+$a->strings["Thing added"] = "Sache hinzugefügt";
$a->strings["OBJ: %1\$s %2\$s %3\$s"] = "OBJ: %1\$s %2\$s %3\$s";
-$a->strings["Show Thing"] = "Ding anzeigen";
+$a->strings["Show Thing"] = "Sache anzeigen";
$a->strings["item not found."] = "Eintrag nicht gefunden";
-$a->strings["Edit Thing"] = "Ding bearbeiten";
+$a->strings["Edit Thing"] = "Sache bearbeiten";
$a->strings["Select a profile"] = "Wähle ein Profil";
-$a->strings["Select a category of stuff. e.g. I ______ something"] = "Wähle eine Kategorie/Art, z.B. Ich ______ etwas";
$a->strings["Post an activity"] = "Aktivitätsnachricht senden";
$a->strings["Only sends to viewers of the applicable profile"] = "Nur an Betrachter des ausgewählten Profils senden";
-$a->strings["Name of thing e.g. something"] = "Name des Dings, z.B. Etwas";
-$a->strings["URL of thing (optional)"] = "URL des Dings (optional)";
-$a->strings["URL for photo of thing (optional)"] = "URL eines Fotos von dem Ding (optional)";
-$a->strings["Add Thing to your Profile"] = "Das Ding Deinem Profil hinzufügen";
-$a->strings["Total invitation limit exceeded."] = "Einladungslimit überschritten.";
-$a->strings["%s : Not a valid email address."] = "%s : Keine gültige Email Adresse.";
-$a->strings["Please join us on Red"] = "Schließe Dich uns an und werde Teil der Red-Matrix";
-$a->strings["Invitation limit exceeded. Please contact your site administrator."] = "Einladungslimit überschritten. Bitte kontaktiere den Administrator Deines Red-Servers.";
-$a->strings["%s : Message delivery failed."] = "%s : Nachricht konnte nicht zugestellt werden.";
-$a->strings["%d message sent."] = array(
- 0 => "%d Nachricht gesendet.",
- 1 => "%d Nachrichten gesendet.",
-);
-$a->strings["You have no more invitations available"] = "Du hast keine weiteren verfügbare Einladungen";
-$a->strings["Send invitations"] = "Einladungen senden";
-$a->strings["Enter email addresses, one per line:"] = "Email-Adressen eintragen, eine pro Zeile:";
-$a->strings["Your message:"] = "Deine Nachricht:";
-$a->strings["You are cordially invited to join me and some other close friends on the Red Matrix - a revolutionary new decentralised communication and information tool."] = "Du bist herzlich eingeladen, mir und einigen anderen guten Freunden in die Red-Matrix zu folgen – einem revolutionär neuen, dezentralen Kommunikations- und Informationsnetzwerk.";
-$a->strings["You will need to supply this invitation code: \$invite_code"] = "Du musst dann den folgenden Einladungs-Code angeben: \$invite_code";
-$a->strings["Please visit my channel at"] = "Bitte besuche meinen Kanal auf";
-$a->strings["Once you have registered (on ANY Red Matrix site - they are all inter-connected), please connect with my Red Matrix channel address:"] = "Wenn Du Dich registriert hast (egal auf welchem Server in der Red-Matrix, sie sind alle miteinander verbunden) verbinde Dich bitte mit meinem Kanal in der Matrix. Adresse:";
-$a->strings["Click the [Register] link on the following page to join."] = "Klicke den [Registrieren]-Link auf der nächsten Seite, um dich anzumelden.";
-$a->strings["For more information about the Red Matrix Project and why it has the potential to change the internet as we know it, please visit http://getzot.com"] = "Für weitere Informationen über das Red-Matrix-Projekt und warum es das Potential hat, das Internet, wie wir es kennen, grundlegend zu verändern, besuche http://getzot.com";
+$a->strings["Name of thing e.g. something"] = "Name der Sache, z. B. irgendwas";
+$a->strings["URL of thing (optional)"] = "URL der Sache (optional)";
+$a->strings["URL for photo of thing (optional)"] = "URL eines Fotos der Sache (optional)";
+$a->strings["Add Thing to your Profile"] = "Die Sache Deinem Profil hinzufügen";
+$a->strings["No valid account found."] = "Kein gültiges Konto gefunden.";
+$a->strings["Password reset request issued. Check your email."] = "Zurücksetzen des Passworts eingeleitet. Schau in Deine E-Mails.";
+$a->strings["Site Member (%s)"] = "Nutzer (%s)";
+$a->strings["Password reset requested at %s"] = "Passwort-Rücksetzung auf %s angefordert";
+$a->strings["Request could not be verified. (You may have previously submitted it.) Password reset failed."] = "Die Anfrage konnte nicht verifiziert werden. (Vielleicht hast Du schon einmal auf den Link in der E-Mail geklickt?) Passwort-Rücksetzung fehlgeschlagen.";
+$a->strings["Password Reset"] = "Zurücksetzen des Kennworts";
+$a->strings["Your password has been reset as requested."] = "Dein Passwort wurde wie angefordert neu erstellt.";
+$a->strings["Your new password is"] = "Dein neues Passwort lautet";
+$a->strings["Save or copy your new password - and then"] = "Speichere oder kopiere Dein neues Passwort – und dann";
+$a->strings["click here to login"] = "Klicke hier, um dich anzumelden";
+$a->strings["Your password may be changed from the <em>Settings</em> page after successful login."] = "Dein Passwort kann unter <em>Einstellungen</em> nach einer erfolgreichen Anmeldung geändert werden.";
+$a->strings["Your password has changed at %s"] = "Auf %s wurde Dein Passwort geändert";
+$a->strings["Forgot your Password?"] = "Kennwort vergessen?";
+$a->strings["Enter your email address and submit to have your password reset. Then check your email for further instructions."] = "Gib Deine E-Mail-Adresse ein, um Dein Passwort zurücksetzen zu lassen. Du erhältst dann weitere Anweisungen per E-Mail.";
+$a->strings["Email Address"] = "E-Mail Adresse";
+$a->strings["Reset"] = "Zurücksetzen";
+$a->strings["Bookmark added"] = "Lesezeichen hinzugefügt";
+$a->strings["My Bookmarks"] = "Meine Lesezeichen";
+$a->strings["My Connections Bookmarks"] = "Lesezeichen meiner Kontakte";
+$a->strings["This site is not a directory server"] = "Diese Website ist kein Verzeichnis-Server";
+$a->strings["RedMatrix - Guests: Username: {your email address}, Password: +++"] = "RedMatrix – Gäste: Username: {Deine E-Mail-Adresse}, Passwort: +++";
+$a->strings["sent you a private message"] = "eine private Nachricht schicken";
+$a->strings["added your channel"] = "hat deinen Kanal hinzugefügt";
+$a->strings["posted an event"] = "hat einen Termin veröffentlicht";
+$a->strings["Item not found"] = "Element nicht gefunden";
+$a->strings["Edit Block"] = "Block bearbeiten";
+$a->strings["Delete block?"] = "Block löschen?";
+$a->strings["Insert YouTube video"] = "YouTube-Video einfügen";
+$a->strings["Insert Vorbis [.ogg] video"] = "Vorbis [.ogg]-Video einfügen";
+$a->strings["Insert Vorbis [.ogg] audio"] = "Vorbis [.ogg]-Audio einfügen";
+$a->strings["Delete Block"] = "Block löschen";
+$a->strings["Layout updated."] = "Layout aktualisiert.";
+$a->strings["Edit System Page Description"] = "Systemseitenbeschreibung bearbeiten";
+$a->strings["Layout not found."] = "Layout nicht gefunden.";
+$a->strings["Module Name:"] = "Modulname:";
+$a->strings["Layout Help"] = "Layout-Hilfe";
+$a->strings["Edit Layout"] = "Layout bearbeiten";
+$a->strings["Delete layout?"] = "Layout löschen?";
+$a->strings["Delete Layout"] = "Layout löschen";
+$a->strings["Item is not editable"] = "Element kann nicht bearbeitet werden.";
+$a->strings["Delete item?"] = "Eintrag löschen?";
$a->strings["Name is required"] = "Name ist erforderlich";
$a->strings["Key and Secret are required"] = "Schlüssel und Geheimnis werden benötigt";
-$a->strings["Update"] = "Aktualisieren";
$a->strings["Passwords do not match. Password unchanged."] = "Kennwörter stimmen nicht überein. Kennwort nicht verändert.";
$a->strings["Empty passwords are not allowed. Password unchanged."] = "Leere Kennwörter sind nicht erlaubt. Kennwort nicht verändert.";
$a->strings["Password changed."] = "Kennwort geändert.";
@@ -821,18 +1391,17 @@ $a->strings["Protected email address. Cannot change to that email."] = "Geschüt
$a->strings["System failure storing new email. Please try again."] = "Systemfehler während des Speicherns der neuen Mail. Bitte versuche es noch einmal.";
$a->strings["Settings updated."] = "Einstellungen aktualisiert.";
$a->strings["Add application"] = "Anwendung hinzufügen";
-$a->strings["Name"] = "Name";
$a->strings["Name of application"] = "Name der Anwendung";
$a->strings["Consumer Key"] = "Consumer Key";
$a->strings["Automatically generated - change if desired. Max length 20"] = "Automatisch erzeugt – ändern, falls erwünscht. Maximale Länge 20";
$a->strings["Consumer Secret"] = "Consumer Secret";
$a->strings["Redirect"] = "Umleitung";
-$a->strings["Redirect URI - leave blank unless your application specifically requires this"] = "Umleitungs-URl – lasse das leer, wenn Deine Anwendung es nicht explizit erfordert";
+$a->strings["Redirect URI - leave blank unless your application specifically requires this"] = "Umleitungs-URl – lasse das leer, solange Deine Anwendung es nicht explizit erfordert";
$a->strings["Icon url"] = "Symbol-URL";
$a->strings["Optional"] = "Optional";
$a->strings["You can't edit this application."] = "Diese Anwendung kann nicht bearbeitet werden.";
$a->strings["Connected Apps"] = "Verbundene Apps";
-$a->strings["Client key starts with"] = "Client key beginnt mit";
+$a->strings["Client key starts with"] = "Client Key beginnt mit";
$a->strings["No name"] = "Kein Name";
$a->strings["Remove authorization"] = "Authorisierung aufheben";
$a->strings["No feature settings configured"] = "Keine Funktions-Einstellungen konfiguriert";
@@ -844,32 +1413,34 @@ $a->strings["Confirm:"] = "Bestätigen:";
$a->strings["Leave password fields blank unless changing"] = "Lasse die Passwort-Felder leer, außer Du möchtest das Passwort ändern";
$a->strings["Email Address:"] = "Email Adresse:";
$a->strings["Remove Account"] = "Konto entfernen";
+$a->strings["Remove this account from this server including all its channels"] = "Lösche dieses Konto einschließlich aller zugehörigen Kanäle von diesem Server";
$a->strings["Warning: This action is permanent and cannot be reversed."] = "Achtung: Diese Aktion ist endgültig und kann nicht rückgängig gemacht werden.";
$a->strings["Off"] = "Aus";
$a->strings["On"] = "An";
$a->strings["Additional Features"] = "Zusätzliche Funktionen";
$a->strings["Connector Settings"] = "Connector-Einstellungen";
$a->strings["No special theme for mobile devices"] = "Keine spezielle Theme für mobile Geräte";
+$a->strings["%s - (Experimental)"] = "%s – (experimentell)";
$a->strings["Display Settings"] = "Anzeige-Einstellungen";
$a->strings["Display Theme:"] = "Anzeige-Theme:";
$a->strings["Mobile Theme:"] = "Mobile Theme:";
+$a->strings["Enable user zoom on mobile devices"] = "Zoom auf Mobilgeräten aktivieren";
$a->strings["Update browser every xx seconds"] = "Browser alle xx Sekunden aktualisieren";
$a->strings["Minimum of 10 seconds, no maximum"] = "Minimum 10 Sekunden, kein Maximum";
$a->strings["Maximum number of conversations to load at any time:"] = "Maximale Anzahl von Unterhaltungen, die auf einmal geladen werden sollen:";
$a->strings["Maximum of 100 items"] = "Maximum: 100 Beiträge";
$a->strings["Don't show emoticons"] = "Emoticons nicht zeigen";
-$a->strings["Do not view remote profiles in frames"] = "Profile/Kanäle direkt anzeigen";
-$a->strings["By default open in a sub-window of your own site"] = "Wenn dieser Haken nicht gesetzt ist, werden Profile in einem Unterfenster auf Deinem eigenen Server angezeigt.";
+$a->strings["Link post titles to source"] = "Beitragstitel zum Originalbeitrag verlinken";
+$a->strings["System Page Layout Editor - (advanced)"] = "System-Seitenlayout-Editor (für Experten)";
$a->strings["Nobody except yourself"] = "Niemand außer Dir selbst";
$a->strings["Only those you specifically allow"] = "Nur die, denen Du es explizit erlaubst";
-$a->strings["Anybody in your address book"] = "Jeder aus Ihrem Adressbuch";
+$a->strings["Approved connections"] = "Angenommene Verbindungen";
+$a->strings["Any connections"] = "Beliebige Verbindungen";
$a->strings["Anybody on this website"] = "Jeder auf dieser Website";
-$a->strings["Anybody in this network"] = "Jeder in diesem Netzwerk";
+$a->strings["Anybody in this network"] = "Alle Red-Nutzer";
$a->strings["Anybody authenticated"] = "Jeder authentifizierte";
$a->strings["Anybody on the internet"] = "Jeder im Internet";
$a->strings["Publish your default profile in the network directory"] = "Standard-Profil im Netzwerk-Verzeichnis veröffentlichen";
-$a->strings["No"] = "Nein";
-$a->strings["Yes"] = "Ja";
$a->strings["Allow us to suggest you as a potential friend to new members?"] = "Dürfen wir Dich neuen Mitgliedern als potentiellen Kontakt vorschlagen?";
$a->strings["or"] = "oder";
$a->strings["Your channel address is"] = "Deine Kanal-Adresse lautet";
@@ -877,118 +1448,106 @@ $a->strings["Channel Settings"] = "Kanal-Einstellungen";
$a->strings["Basic Settings"] = "Grundeinstellungen";
$a->strings["Your Timezone:"] = "Ihre Zeitzone:";
$a->strings["Default Post Location:"] = "Standardstandort:";
+$a->strings["Geographical location to display on your posts"] = "Geografischer Ort, der bei Deinen Beiträgen angezeigt werden soll";
$a->strings["Use Browser Location:"] = "Standort des Browsers verwenden:";
$a->strings["Adult Content"] = "Nicht jugendfreie Inhalte";
$a->strings["This channel frequently or regularly publishes adult content. (Please tag any adult material and/or nudity with #NSFW)"] = "Dieser Kanal veröffentlicht regelmäßig Inhalte, die für Minderjährige ungeeignet sind. (Bitte markiere solche Inhalte mit dem Schlagwort #NSFW)";
$a->strings["Security and Privacy Settings"] = "Sicherheits- und Datenschutz-Einstellungen";
+$a->strings["Your permissions are already configured. Click to view/adjust"] = "Deine Zugriffsrechte sind schon konfiguriert. Klicke hier, um sie zu betrachten oder zu ändern";
$a->strings["Hide my online presence"] = "Meine Online-Präsenz verbergen";
$a->strings["Prevents displaying in your profile that you are online"] = "Verhindert die Anzeige Deines Online-Status in deinem Profil";
$a->strings["Simple Privacy Settings:"] = "Einfache Privatsphäre-Einstellungen";
$a->strings["Very Public - <em>extremely permissive (should be used with caution)</em>"] = "Komplett offen – <em>extrem ungeschützt (mit großer Vorsicht verwenden!)</em>";
-$a->strings["Typical - <em>default public, privacy when desired (similar to social network permissions but with improved privacy)</em>"] = "Typisch – <em>Default öffentlich, Privatsphäre, wo sie erwünscht ist (ähnlich den Einstellungen in sozialen Netzwerken, aber mit besser geschützter Privatsphäre)</em>";
-$a->strings["Private - <em>default private, never open or public</em>"] = "Private – <em>Default privat, nie offen oder öffentlich</em>";
-$a->strings["Blocked - <em>default blocked to/from everybody</em>"] = "Blockiert – <em>Alle per Default blockiert</em>";
-$a->strings["Allow others to tag your posts"] = "Erlaube anderen deine Beiträge mit Schlagwörtern zu versehen";
-$a->strings["Often used by the community to retro-actively flag inappropriate content"] = "";
+$a->strings["Typical - <em>default public, privacy when desired (similar to social network permissions but with improved privacy)</em>"] = "Typisch – <em>Standard öffentlich, Privatsphäre, wo sie erwünscht ist (ähnlich den Einstellungen in sozialen Netzwerken, aber mit besser geschützter Privatsphäre)</em>";
+$a->strings["Private - <em>default private, never open or public</em>"] = "Privat – <em>Standard privat, nie offen oder öffentlich</em>";
+$a->strings["Blocked - <em>default blocked to/from everybody</em>"] = "Blockiert – <em>Alle standardmäßig blockiert</em>";
+$a->strings["Allow others to tag your posts"] = "Erlaube anderen, Deine Beiträge zu verschlagworten";
+$a->strings["Often used by the community to retro-actively flag inappropriate content"] = "Wird oft von der Community genutzt um rückwirkend anstößigen Inhalt zu markieren";
$a->strings["Advanced Privacy Settings"] = "Fortgeschrittene Privatsphäre-Einstellungen";
+$a->strings["Expire other channel content after this many days"] = "Den Inhalt anderer Kanäle nach dieser Anzahl Tage verfallen lassen";
+$a->strings["0 or blank prevents expiration"] = "0 oder kein Inhalt verhindern das Verfallen";
$a->strings["Maximum Friend Requests/Day:"] = "Maximale Kontaktanfragen pro Tag:";
$a->strings["May reduce spam activity"] = "Kann die Spam-Aktivität verringern";
$a->strings["Default Post Permissions"] = "Standardeinstellungen für Beitrags-Zugriffsrechte";
-$a->strings["(click to open/close)"] = "(zum öffnen/schließen anklicken)";
+$a->strings["Channel permissions category:"] = "Zugriffsrechte-Kategorie des Kanals:";
$a->strings["Maximum private messages per day from unknown people:"] = "Maximale Anzahl privater Nachrichten pro Tag von unbekannten Leuten:";
$a->strings["Useful to reduce spamming"] = "Nützlich, um Spam zu verringern";
$a->strings["Notification Settings"] = "Benachrichtigungs-Einstellungen";
$a->strings["By default post a status message when:"] = "Sende standardmäßig Status-Nachrichten, wenn:";
-$a->strings["accepting a friend request"] = "Du eine Kontaktanfrage annimmst";
+$a->strings["accepting a friend request"] = "Du eine Verbindungsanfrage annimmst";
$a->strings["joining a forum/community"] = "Du einem Forum beitrittst";
$a->strings["making an <em>interesting</em> profile change"] = "Du eine <em>interessante</em> Änderung an Deinem Profil vornimmst";
$a->strings["Send a notification email when:"] = "Eine E-Mail-Benachrichtigung senden, wenn:";
-$a->strings["You receive an introduction"] = "Du eine Vorstellung erhältst";
-$a->strings["Your introductions are confirmed"] = "Deine Vorstellung bestätigt wurde.";
+$a->strings["You receive a connection request"] = "Du eine Verbindungsanfrage erhältst";
+$a->strings["Your connections are confirmed"] = "Eine Verbindung bestätigt wurde";
$a->strings["Someone writes on your profile wall"] = "Jemand auf Deine Pinnwand schreibt";
$a->strings["Someone writes a followup comment"] = "Jemand einen Beitrag kommentiert";
$a->strings["You receive a private message"] = "Du eine private Nachricht erhältst";
$a->strings["You receive a friend suggestion"] = "Du einen Kontaktvorschlag erhältst";
$a->strings["You are tagged in a post"] = "Du in einem Beitrag erwähnt wurdest";
$a->strings["You are poked/prodded/etc. in a post"] = "Du in einem Beitrag angestupst/geknufft/o.ä. wurdest";
+$a->strings["Show visual notifications including:"] = "Visuelle Benachrichtigungen anzeigen für:";
+$a->strings["Unseen matrix activity"] = "Ungesehene Matrix-Aktivität";
+$a->strings["Unseen channel activity"] = "Ungesehene Kanal-Aktivität";
+$a->strings["Unseen private messages"] = "Ungelesene persönliche Nachrichten";
+$a->strings["Recommended"] = "Empfohlen";
+$a->strings["Upcoming events"] = "Baldige Termine";
+$a->strings["Events today"] = "Heutige Termine";
+$a->strings["Upcoming birthdays"] = "Baldige Geburtstage";
+$a->strings["Not available in all themes"] = "Nicht in allen Themes verfügbar";
+$a->strings["System (personal) notifications"] = "System – (persönliche) Benachrichtigungen";
+$a->strings["System info messages"] = "System – Info-Nachrichten";
+$a->strings["System critical alerts"] = "System – kritische Warnungen";
+$a->strings["New connections"] = "Neue Verbindungen";
+$a->strings["System Registrations"] = "System – Registrierungen";
+$a->strings["Notify me of events this many days in advance"] = "Benachrichtige mich zu Terminen so viele Tage im Voraus";
+$a->strings["Must be greater than 0"] = "Muss größer als 0 sein";
$a->strings["Advanced Account/Page Type Settings"] = "Erweiterte Account- und Seitenart-Einstellungen";
$a->strings["Change the behaviour of this account for special situations"] = "Ändere das Verhalten dieses Accounts unter speziellen Umständen";
$a->strings["Please enable expert mode (in <a href=\"settings/features\">Settings > Additional features</a>) to adjust!"] = "Aktiviere den Expertenmodus (unter <a href=\"settings/features\">Settings > Zusätzliche Funktionen</a>), um hier Einstellungen vorzunehmen!";
-$a->strings["Miscellaneous Settings"] = "";
-$a->strings["Personal menu to display in your channel pages"] = "Persönliches Menü zur Anzeige auf den Seiten deines Kanals";
-$a->strings["Menu updated."] = "Menü aktualisiert.";
-$a->strings["Unable to update menu."] = "Kann Menü nicht aktualisieren.";
-$a->strings["Menu created."] = "Menü erstellt.";
-$a->strings["Unable to create menu."] = "Kann Menü nicht erstellen.";
-$a->strings["Manage Menus"] = "Menüs verwalten";
-$a->strings["Drop"] = "Löschen";
-$a->strings["Create a new menu"] = "Neues Menü erstellen";
-$a->strings["Delete this menu"] = "Lösche dieses Menü";
-$a->strings["Edit menu contents"] = "Bearbeite Menü Inhalte";
-$a->strings["Edit this menu"] = "Dieses Menü bearbeiten";
-$a->strings["New Menu"] = "Neues Menü";
-$a->strings["Menu name"] = "Menü Name";
-$a->strings["Must be unique, only seen by you"] = "Muss eindeutig sein, ist aber nur für Dich sichtbar";
-$a->strings["Menu title"] = "Menü Titel";
-$a->strings["Menu title as seen by others"] = "Menü Titel wie er von anderen gesehen wird";
-$a->strings["Allow bookmarks"] = "Erlaube Lesezeichen";
-$a->strings["Menu may be used to store saved bookmarks"] = "Im Menü können gespeicherte Lesezeichen abgelegt werden";
-$a->strings["Create"] = "Erstelle";
-$a->strings["Menu not found."] = "Menü nicht gefunden";
-$a->strings["Menu deleted."] = "Menü gelöscht.";
-$a->strings["Menu could not be deleted."] = "Menü konnte nicht gelöscht werden.";
-$a->strings["Edit Menu"] = "Menü bearbeiten";
-$a->strings["Add or remove entries to this menu"] = "Einträge zu diesem Menü hinzufügen oder entfernen";
-$a->strings["Modify"] = "Ändern";
-$a->strings["Not found."] = "Nicht gefunden.";
-$a->strings["View"] = "Ansicht";
-$a->strings["Authorize application connection"] = "Zugriff für die Anwendung autorisieren";
-$a->strings["Return to your app and insert this Securty Code:"] = "Trage folgenden Sicherheitscode in der Anwendung ein:";
-$a->strings["Please login to continue."] = "Zum Weitermachen, bitte einloggen.";
-$a->strings["Do you want to authorize this application to access your posts and contacts, and/or create new posts for you?"] = "Möchtest Du dieser Anwendung erlauben, Deine Nachrichten und Kontakte abzurufen und/oder neue Nachrichten für Dich zu erstellen?";
-$a->strings["No installed applications."] = "Keine installierten Anwendungen.";
-$a->strings["Applications"] = "Anwendungen";
-$a->strings["Edit post"] = "Bearbeite Beitrag";
-$a->strings["Red Matrix - Guests: Username: {your email address}, Password: +++"] = "Red-Matrix-Gäste: Nutzername: {Deine E-Mail-Adresse}; Passwort: +++";
-$a->strings["Bookmark added"] = "Lesezeichen hinzugefügt";
-$a->strings["My Bookmarks"] = "Meine Lesezeichen";
-$a->strings["My Connections Bookmarks"] = "Lesezeichen meiner Kontakte";
-$a->strings["Unable to locate original post."] = "Originalbeitrag nicht gefunden.";
-$a->strings["Empty post discarded."] = "Leeren Beitrag verworfen.";
-$a->strings["Executable content type not permitted to this channel."] = "Ausführbarer Content-Typ ist für diesen Kanal nicht freigegeben.";
-$a->strings["System error. Post not saved."] = "Systemfehler. Beitrag nicht gespeichert.";
-$a->strings["Wall Photos"] = "Wall Fotos";
-$a->strings["You have reached your limit of %1$.0f top level posts."] = "Du hast die maximale Anzahl von %1$.0f Beiträgen erreicht.";
-$a->strings["You have reached your limit of %1$.0f webpages."] = "Du hast die maximale Anzahl von %1$.0f Webseiten erreicht.";
-$a->strings["%1\$s is following %2\$s's %3\$s"] = "%1\$s folgt nun %2\$ss %3\$s";
-$a->strings["[Embedded content - reload page to view]"] = "[Eingebettete Inhalte – lade die Seite neu, um sie anzuzeigen]";
-$a->strings["Channel not found."] = "Kanal nicht gefunden.";
-$a->strings["toggle full screen mode"] = "auf Vollbildmodus umschalten";
-$a->strings["%1\$s tagged %2\$s's %3\$s with %4\$s"] = "%1\$s hat %2\$ss %3\$s mit %4\$s verschlagwortet";
-$a->strings["You must be logged in to see this page."] = "Du musst angemeldet sein, um diese Seite betrachten zu können.";
-$a->strings["Leave Room"] = "Raum verlassen";
-$a->strings["I am away right now"] = "Ich bin gerade nicht da";
-$a->strings["I am online"] = "Ich bin online";
-$a->strings["New Chatroom"] = "Neuer Chatraum";
-$a->strings["Chatroom Name"] = "Name des Chatraums";
-$a->strings["%1\$s's Chatrooms"] = "%1\$ss Chaträume";
-$a->strings["Public access denied."] = "Öffentlicher Zugang verweigert.";
-$a->strings["No connections."] = "Keine Verbindungen.";
-$a->strings["Visit %s's profile [%s]"] = "%ss Profil [%s] besuchen";
-$a->strings["View Connnections"] = "Zeige Verbindungen";
-$a->strings["Tag removed"] = "Schlagwort entfernt";
-$a->strings["Remove Item Tag"] = "Schlagwort entfernen";
-$a->strings["Select a tag to remove: "] = "Schlagwort zum Entfernen auswählen:";
-$a->strings["Remove"] = "Entferne";
-$a->strings["Continue"] = "Fortfahren";
-$a->strings["Premium Channel Setup"] = "Premium-Kanal-Einrichtung";
-$a->strings["Enable premium channel connection restrictions"] = "Einschränkungen für einen Premium-Kanal aktivieren";
-$a->strings["Please enter your restrictions or conditions, such as paypal receipt, usage guidelines, etc."] = "Bitte gib Deine Nutzungsbedingungen ein, z.B. Paypal-Quittung, Richtlinien etc.";
-$a->strings["This channel may require additional steps or acknowledgement of the following conditions prior to connecting:"] = "Unter Umständen sind weitere Schritte oder die Bestätigung der folgenden Bedingungen vor dem Verbinden mit diesem Kanal nötig.";
-$a->strings["Potential connections will then see the following text before proceeding:"] = "Potentielle Kontakte werden den folgenden Text sehen, bevor fortgefahren wird:";
-$a->strings["By continuing, I certify that I have complied with any instructions provided on this page."] = "Indem ich fortfahre, bestätige ich die Erfüllung aller Anweisungen aus dieser Seite.";
-$a->strings["(No specific instructions have been provided by the channel owner.)"] = "(Der Kanal-Besitzer hat keine speziellen Anweisungen hinterlegt.)";
-$a->strings["Restricted or Premium Channel"] = "Eingeschränkter oder Premium-Kanal";
+$a->strings["Miscellaneous Settings"] = "Sonstige Einstellungen";
+$a->strings["Personal menu to display in your channel pages"] = "Eigenes Menü zur Anzeige auf den Seiten deines Kanals";
+$a->strings["Remove this channel"] = "Diesen Kanal löschen";
+$a->strings["Edit Webpage"] = "Webseite bearbeiten";
+$a->strings["Delete webpage?"] = "Webseite löschen?";
+$a->strings["Delete Webpage"] = "Webseite löschen";
+$a->strings["webpage"] = "Webseite";
+$a->strings["block"] = "Block";
+$a->strings["layout"] = "Layout";
+$a->strings["%s element installed"] = "Element für %s installiert";
+$a->strings["Image uploaded but image cropping failed."] = "Bild hochgeladen, aber das Zurechtschneiden schlug fehl.";
+$a->strings["Image resize failed."] = "Bild-Anpassung fehlgeschlagen.";
+$a->strings["Shift-reload the page or clear browser cache if the new photo does not display immediately."] = "Leere den Browser Cache oder nutze Umschalten-Neu Laden, falls das neue Foto nicht sofort angezeigt wird.";
+$a->strings["Image exceeds size limit of %d"] = "Bild ist größer als das Limit von %d";
+$a->strings["Unable to process image."] = "Kann Bild nicht verarbeiten.";
+$a->strings["Photo not available."] = "Foto nicht verfügbar.";
+$a->strings["Upload File:"] = "Datei hochladen:";
+$a->strings["Select a profile:"] = "Wähle ein Profil:";
+$a->strings["Upload Profile Photo"] = "Lade neues Profilfoto hoch";
+$a->strings["skip this step"] = "diesen Schritt überspringen";
+$a->strings["select a photo from your photo albums"] = "ein Foto aus meinen Fotoalben";
+$a->strings["Crop Image"] = "Bild zuschneiden";
+$a->strings["Please adjust the image cropping for optimum viewing."] = "Bitte schneide das Bild für eine optimale Anzeige passend zu.";
+$a->strings["Done Editing"] = "Bearbeitung fertigstellen";
+$a->strings["Image uploaded successfully."] = "Bild erfolgreich hochgeladen.";
+$a->strings["Image upload failed."] = "Hochladen des Bilds fehlgeschlagen.";
+$a->strings["Image size reduction [%s] failed."] = "Reduzierung der Bildgröße [%s] fehlgeschlagen.";
+$a->strings["Contact not found."] = "Kontakt nicht gefunden";
+$a->strings["Friend suggestion sent."] = "Freundschaftsempfehlung senden.";
+$a->strings["Suggest Friends"] = "Kontakte vorschlagen";
+$a->strings["Suggest a friend for %s"] = "Schlage %s einen Kontakt vor";
+$a->strings["Permission Denied."] = "Zugriff verweigert.";
+$a->strings["File not found."] = "Datei nicht gefunden.";
+$a->strings["Edit file permissions"] = "Dateiberechtigungen bearbeiten";
+$a->strings["Set/edit permissions"] = "Berechtigungen setzen/ändern";
+$a->strings["Include all files and sub folders"] = "Alle Dateien und Unterverzeichnisse einbinden";
+$a->strings["Return to file list"] = "Zurück zur Dateiliste";
+$a->strings["Copy/paste this code to attach file to a post"] = "Diesen Code kopieren und einfügen, um die Datei an einen Beitrag anzuhängen";
+$a->strings["Copy/paste this URL to link file from a web page"] = "Diese URL verwenden, um von einer Webseite aus auf die Datei zu verlinken";
+$a->strings["Help:"] = "Hilfe:";
+$a->strings["Not Found"] = "Nicht gefunden";
+$a->strings["network"] = "Netzwerk";
+$a->strings["Channel added."] = "Kanal hinzugefügt.";
$a->strings["No potential page delegates located."] = "Keine potentiellen Bevollmächtigten für die Seite gefunden.";
$a->strings["Delegate Page Management"] = "Delegiere das Management für diese Seite";
$a->strings["Delegates are able to manage all aspects of this account/page except for basic account settings. Please do not delegate your personal account to anybody that you do not trust completely."] = "Bevollmächtigte sind in der Lage, alle Aspekte dieses Kontos/dieser Seite zu verwalten, abgesehen von den Grundeinstellungen des Kontos. Gib niemandem eine Bevollmächtigung für Deinen privaten Account, dem Du nicht absolut vertraust!";
@@ -997,39 +1556,6 @@ $a->strings["Existing Page Delegates"] = "Vorhandene Bevollmächtigte für die S
$a->strings["Potential Delegates"] = "Potentielle Bevollmächtigte";
$a->strings["Add"] = "Hinzufügen";
$a->strings["No entries."] = "Keine Einträge.";
-$a->strings["Away"] = "Abwesend";
-$a->strings["Online"] = "Online";
-$a->strings["Item not available."] = "Element nicht verfügbar.";
-$a->strings["Menu element updated."] = "Menü-Element aktualisiert.";
-$a->strings["Unable to update menu element."] = "Kann Menü-Element nicht aktualisieren.";
-$a->strings["Menu element added."] = "Menü-Bestandteil hinzugefügt.";
-$a->strings["Unable to add menu element."] = "Kann Menü-Bestandteil nicht hinzufügen.";
-$a->strings["Manage Menu Elements"] = "Menü-Bestandteile verwalten";
-$a->strings["Edit menu"] = "Menü bearbeiten";
-$a->strings["Edit element"] = "Bestandteil bearbeiten";
-$a->strings["Drop element"] = "Bestandteil löschen";
-$a->strings["New element"] = "Neues Bestandteil";
-$a->strings["Edit this menu container"] = "Diesen Menü-Container bearbeiten";
-$a->strings["Add menu element"] = "Menüelement hinzufügen";
-$a->strings["Delete this menu item"] = "Lösche dieses Menü-Bestandteil";
-$a->strings["Edit this menu item"] = "Bearbeite dieses Menü-Bestandteil";
-$a->strings["New Menu Element"] = "Neues Menü-Bestandteil";
-$a->strings["Menu Item Permissions"] = "Zugriffsrechte des Menü-Elements";
-$a->strings["Link text"] = "Link Text";
-$a->strings["URL of link"] = "URL des Links";
-$a->strings["Use Red magic-auth if available"] = "Verwende Red Magic-Auth wenn verfügbar";
-$a->strings["Open link in new window"] = "Öffne Link in neuem Fenster";
-$a->strings["Order in list"] = "Reihenfolge in der Liste";
-$a->strings["Higher numbers will sink to bottom of listing"] = "Größere Nummern werden weiter unten in der Auflistung einsortiert";
-$a->strings["Menu item not found."] = "Menü-Bestandteil nicht gefunden.";
-$a->strings["Menu item deleted."] = "Menü-Bestandteil gelöscht.";
-$a->strings["Menu item could not be deleted."] = "Menü-Bestandteil kann nicht gelöscht werden.";
-$a->strings["Edit Menu Element"] = "Bearbeite Menü-Bestandteil";
-$a->strings["Invalid profile identifier."] = "Ungültiger Profil-Identifikator";
-$a->strings["Profile Visibility Editor"] = "Profil-Sichtbarkeits-Editor";
-$a->strings["Click on a contact to add or remove."] = "Klicke auf einen Kontakt, um ihn hinzuzufügen oder zu entfernen.";
-$a->strings["Visible To"] = "Sichtbar für";
-$a->strings["All Connections"] = "Alle Verbindungen";
$a->strings["Collection created."] = "Sammlung erstellt.";
$a->strings["Could not create collection."] = "Sammlung kann nicht erstellt werden.";
$a->strings["Collection updated."] = "Sammlung aktualisiert.";
@@ -1042,12 +1568,38 @@ $a->strings["Collection Editor"] = "Sammlung-Editor";
$a->strings["Members"] = "Mitglieder";
$a->strings["All Connected Channels"] = "Alle verbundenen Kanäle";
$a->strings["Click on a channel to add or remove."] = "Wähle einen Kanal zum hinzufügen oder entfernen aus.";
+$a->strings["No suggestions available. If this is a new site, please try again in 24 hours."] = "Keine Vorschläge vorhanden. Wenn das ein neuer Server ist, versuche es in 24 Stunden noch einmal.";
+$a->strings["Your service plan only allows %d channels."] = "Dein Vertrag erlaubt nur %d Kanäle.";
+$a->strings["Nothing to import."] = "Nichts zu importieren.";
+$a->strings["Unable to download data from old server"] = "Daten können vom alten Server nicht heruntergeladen werden";
+$a->strings["Imported file is empty."] = "Die importierte Datei ist leer.";
+$a->strings["Cannot create a duplicate channel identifier on this system. Import failed."] = "Kann keinen doppelten Kanal-Identifikator auf diesem System erzeugen (Spitzname oder Hash schon belegt). Import fehlgeschlagen.";
+$a->strings["Channel clone failed. Import failed."] = "Klonen des Kanals fehlgeschlagen. Import fehlgeschlagen.";
+$a->strings["Cloned channel not found. Import failed."] = "Geklonter Kanal nicht gefunden. Import fehlgeschlagen.";
+$a->strings["Import completed."] = "Import abgeschlossen.";
+$a->strings["You must be logged in to use this feature."] = "Du musst angemeldet sein um diese Funktion zu nutzen.";
+$a->strings["Import Channel"] = "Kanal importieren";
+$a->strings["Use this form to import an existing channel from a different server/hub. You may retrieve the channel identity from the old server/hub via the network or provide an export file. Only identity and connections/relationships will be imported. Importation of content is not yet available."] = "Verwende dieses Formular, um einen existierenden Kanal von einem anderen Red-Server zu importieren. Du kannst den Kanal direkt vom bisherigen Red-Server über das Netzwerk importieren oder eine exportierte Sicherheitskopie benutzen. Es werden ausschließlich die Identität und die Verbindungen/Beziehungen importiert. Das Importieren von Inhalten ist derzeit nicht möglich.";
+$a->strings["File to Upload"] = "Hochzuladende Datei:";
+$a->strings["Or provide the old server/hub details"] = "Oder gib die Details Deines bisherigen Red-Servers ein";
+$a->strings["Your old identity address (xyz@example.com)"] = "Bisherige Kanal-Adresse (xyz@example.com)";
+$a->strings["Your old login email address"] = "Deine alte Login-E-Mail-Adresse";
+$a->strings["Your old login password"] = "Dein altes Passwort";
+$a->strings["For either option, please choose whether to make this hub your new primary address, or whether your old location should continue this role. You will be able to post from either location, but only one can be marked as the primary location for files, photos, and media."] = "Egal, welche Option Du wählst – bitte lege fest, ob dieser Server die neue primäre Adresse dieses Kanals sein soll, oder ob der bisherige Red-Server diese Rolle weiterhin wahrnimmt. Du kannst von beiden Servern aus posten, aber nur einer kann der primäre Ort Deiner Dateien, Fotos und Medien sein.";
+$a->strings["Make this hub my primary location"] = "Dieser Red-Server ist mein primärer Server.";
+$a->strings["Import existing posts if possible"] = "Existierende Beiträge importieren, falls möglich";
+$a->strings["%1\$s tagged %2\$s's %3\$s with %4\$s"] = "%1\$s hat %2\$ss %3\$s mit %4\$s verschlagwortet";
+$a->strings["Tag removed"] = "Schlagwort entfernt";
+$a->strings["Remove Item Tag"] = "Schlagwort entfernen";
+$a->strings["Select a tag to remove: "] = "Schlagwort zum Entfernen auswählen:";
$a->strings["Theme settings updated."] = "Theme-Einstellungen aktualisiert.";
$a->strings["Site"] = "Seite";
-$a->strings["Users"] = "Benutzer";
+$a->strings["Accounts"] = "Konten";
+$a->strings["Channels"] = "Kanäle";
$a->strings["Plugins"] = "Plug-Ins";
$a->strings["Themes"] = "Themes";
$a->strings["Server"] = "Server";
+$a->strings["Profile Config"] = "Profilkonfiguration";
$a->strings["DB updates"] = "DB-Aktualisierungen";
$a->strings["Logs"] = "Protokolle";
$a->strings["Plugin Features"] = "Plug-In Funktionen";
@@ -1060,18 +1612,16 @@ $a->strings["Pending registrations"] = "Ausstehende Registrierungen";
$a->strings["Version"] = "Version";
$a->strings["Active plugins"] = "Aktive Plug-Ins";
$a->strings["Site settings updated."] = "Site-Einstellungen aktualisiert.";
-$a->strings["No special theme for accessibility"] = "Kein spezielles Accessibility-Theme vorhanden";
-$a->strings["Closed"] = "Geschlossen";
-$a->strings["Requires approval"] = "Genehmigung erforderlich";
-$a->strings["Open"] = "Offen";
-$a->strings["Private"] = "Privat";
-$a->strings["Paid Access"] = "Kostenpflichtiger Zugang";
-$a->strings["Free Access"] = "Kostenloser Zugang";
-$a->strings["Tiered Access"] = "Abgestufter Zugang";
-$a->strings["Registration"] = "Registrierung";
+$a->strings["mobile"] = "mobil";
+$a->strings["experimental"] = "experimentell";
+$a->strings["unsupported"] = "nicht unterstützt";
+$a->strings["Yes - with approval"] = "Ja - mit Zustimmung";
+$a->strings["My site is not a public server"] = "Mein Server ist kein öffentlicher Server";
+$a->strings["My site has paid access only"] = "Mein Server erlaubt nur bezahlten Zugang";
+$a->strings["My site has free access only"] = "Mein Server erlaubt ausschließlich freien Zugang";
+$a->strings["My site offers free accounts with optional paid upgrades"] = "Mein Server bietet kostenlose Konten mit der Möglichkeit zu bezahlten Upgrades";
$a->strings["File upload"] = "Dateiupload";
$a->strings["Policies"] = "Richtlinien";
-$a->strings["Advanced"] = "Fortgeschritten";
$a->strings["Site name"] = "Seitenname";
$a->strings["Banner/Logo"] = "Banner/Logo";
$a->strings["Administrator Information"] = "Administrator-Informationen";
@@ -1081,14 +1631,14 @@ $a->strings["System theme"] = "System-Theme";
$a->strings["Default system theme - may be over-ridden by user profiles - <a href='#' id='cnftheme'>change theme settings</a>"] = "Standard-System-Theme – kann durch Nutzerprofile überschieben werden – <a href='#' id='cnftheme'>Theme-Einstellungen ändern</a>";
$a->strings["Mobile system theme"] = "Mobile System-Theme:";
$a->strings["Theme for mobile devices"] = "Theme für mobile Geräte";
-$a->strings["Accessibility system theme"] = "Accessibility-System-Theme";
-$a->strings["Accessibility theme"] = "Accessibility-Theme";
-$a->strings["Channel to use for this website's static pages"] = "Kanal für die statischen Seiten dieser Webseite verwenden";
-$a->strings["Site Channel"] = "Seiten Kanal";
+$a->strings["Enable Diaspora Protocol"] = "Diaspora-Protokoll aktivieren";
+$a->strings["Communicate with Diaspora and Friendica - experimental"] = "Kommunikation mit Diaspora und Friendica – experimentell";
+$a->strings["Allow Feeds as Connections"] = "Feeds als Verbindungen erlauben";
+$a->strings["(Heavy system resource usage)"] = "(führt zu hoher Systemlast)";
$a->strings["Maximum image size"] = "Maximale Bildgröße";
$a->strings["Maximum size in bytes of uploaded images. Default is 0, which means no limits."] = "Maximale Größe hochgeladener Bilder in Bytes. Standard ist 0 (keine Einschränkung).";
-$a->strings["Register policy"] = "Registrierungsrichtlinie";
-$a->strings["Access policy"] = "Zugangsrichtlinien";
+$a->strings["Does this site allow new member registration?"] = "Erlaubt dieser Server die Registrierung neuer Nutzer?";
+$a->strings["Which best describes the types of account offered by this hub?"] = "Was ist die passendste Beschreibung der Konten auf diesem Hub?";
$a->strings["Register text"] = "Registrierungstext";
$a->strings["Will be displayed prominently on the registration page."] = "Wird gut sichtbar auf der Registrierungs-Seite angezeigt.";
$a->strings["Accounts abandoned after x days"] = "Konten gelten nach X Tagen als unbenutzt";
@@ -1099,10 +1649,14 @@ $a->strings["Allowed email domains"] = "Erlaubte Domains für E-Mails";
$a->strings["Comma separated list of domains which are allowed in email addresses for registrations to this site. Wildcards are accepted. Empty to allow any domains"] = "Liste der Domains, die für E-Mail-Adressen bei der Registrierung erlaubt sind, durch Kommas getrennt. Platzhalter werden akzeptiert. Leer lassen, um alle Domains zu erlauben.";
$a->strings["Block public"] = "Öffentlichen Zugriff blockieren";
$a->strings["Check to block public access to all otherwise public personal pages on this site unless you are currently logged in."] = "Zugriff auf sonst öffentliche persönliche Seiten blockieren, wenn man nicht eingeloggt ist.";
+$a->strings["Verify Email Addresses"] = "E-Mail-Adressen überprüfen";
+$a->strings["Check to verify email addresses used in account registration (recommended)."] = "Aktivieren, um die Überprüfung von E-Mail-Adressen bei der Registrierung von Benutzerkonten zu aktivieren (empfohlen).";
$a->strings["Force publish"] = "Veröffentlichung erzwingen";
$a->strings["Check to force all profiles on this site to be listed in the site directory."] = "Die Veröffentlichung aller Profile dieses Servers im Verzeichnis erzwingen.";
+$a->strings["Disable discovery tab"] = "Den „Entdecken“-Reiter ausblenden";
+$a->strings["Remove the tab in the network view with public content pulled from sources chosen for this site."] = "Entferne den „Entdecken“-Reiter aus der Matrix-Seite, in dem öffentliche Inhalte angezeigt werden, die von anderen RedMatrix-Hubs geholt wurden.";
$a->strings["No login on Homepage"] = "Kein Login auf der Homepage";
-$a->strings["Check to hide the login form from your sites homepage when visitors arrive who are not logged in (e.g. when you put the content of the homepage in via the site channel)."] = "Ktivieren, um das Login-Formular auf der Startseite der Seite zu verbergen, z.B. weil es das Layout der Homepage des Seiten-Kanals stört.";
+$a->strings["Check to hide the login form from your sites homepage when visitors arrive who are not logged in (e.g. when you put the content of the homepage in via the site channel)."] = "Aktivieren, um das Login-Formular auf der Startseite der Seite zu verbergen (z.B. weil es das Layout der Homepage des Seiten-Kanals stört).";
$a->strings["Proxy user"] = "Proxy Benutzer";
$a->strings["Proxy URL"] = "Proxy URL";
$a->strings["Network timeout"] = "Netzwerk-Timeout";
@@ -1136,23 +1690,38 @@ $a->strings["%s user deleted"] = array(
1 => "%s Nutzer gelöscht",
);
$a->strings["Account not found"] = "Konto nicht gefunden";
-$a->strings["User '%s' deleted"] = "Benutzer '%s' gelöscht";
$a->strings["User '%s' unblocked"] = "Benutzer '%s' freigegeben";
$a->strings["User '%s' blocked"] = "Benutzer '%s' blockiert";
+$a->strings["Users"] = "Benutzer";
$a->strings["select all"] = "Alle auswählen";
$a->strings["User registrations waiting for confirm"] = "Neuanmeldungen, die auf Deine Bestätigung warten";
$a->strings["Request date"] = "Antragsdatum";
$a->strings["No registrations."] = "Keine Registrierungen.";
$a->strings["Approve"] = "Genehmigen";
$a->strings["Deny"] = "Verweigern";
-$a->strings["Block"] = "Blockieren";
-$a->strings["Unblock"] = "Freigeben";
$a->strings["Register date"] = "Registrierungs-Datum";
$a->strings["Last login"] = "Letzte Anmeldung";
$a->strings["Expires"] = "Verfällt";
$a->strings["Service Class"] = "Service-Klasse";
$a->strings["Selected users will be deleted!\\n\\nEverything these users had posted on this site will be permanently deleted!\\n\\nAre you sure?"] = "Die markierten Nutzer werden gelöscht!\\n\\nAlles, was diese Nutzer auf dieser Seite veröffentlicht haben, wird endgültig gelöscht!\\n\\nBist Du sicher?";
$a->strings["The user {0} will be deleted!\\n\\nEverything this user has posted on this site will be permanently deleted!\\n\\nAre you sure?"] = "Der Nutzer {0} wird gelöscht!\\n\\nAlles, was dieser Nutzer auf dieser Seite veröffentlicht hat, wird endgültig gelöscht werden!\\n\\nBist Du sicher?";
+$a->strings["%s channel censored/uncensored"] = array(
+ 0 => "%s Kanal gesperrt/freigegeben",
+ 1 => "%s Kanäle gesperrt/freigegeben",
+);
+$a->strings["%s channel deleted"] = array(
+ 0 => "%s Kanal gelöscht",
+ 1 => "%s Kanäle gelöscht",
+);
+$a->strings["Channel not found"] = "Kanal nicht gefunden";
+$a->strings["Channel '%s' deleted"] = "Kanal '%s' gelöscht";
+$a->strings["Channel '%s' uncensored"] = "Kanal '%s' freigegeben";
+$a->strings["Channel '%s' censored"] = "Kanal '%s' gesperrt";
+$a->strings["Censor"] = "Sperren";
+$a->strings["Uncensor"] = "Freigeben";
+$a->strings["UID"] = "UID";
+$a->strings["Selected channels will be deleted!\\n\\nEverything that was posted in these channels on this site will be permanently deleted!\\n\\nAre you sure?"] = "Alle ausgewählten Kanäle werden gelöscht!\\n\\nAlles was von diesen Kanälen auf diesem Server geschrieben wurde, wird dauerhaft gelöscht!\\n\\nBist Du sicher?";
+$a->strings["The channel {0} will be deleted!\\n\\nEverything that was posted in this channel on this site will be permanently deleted!\\n\\nAre you sure?"] = "Der Kanal {0} wird gelöscht!\\n\\nAlles was von diesem Kanal auf diesem Server geschrieben wurde, wird gelöscht!\\n\\nBist Du sicher?";
$a->strings["Plugin %s disabled."] = "Plug-In %s deaktiviert.";
$a->strings["Plugin %s enabled."] = "Plug-In %s aktiviert.";
$a->strings["Disable"] = "Deaktivieren";
@@ -1170,345 +1739,78 @@ $a->strings["Debugging"] = "Debugging";
$a->strings["Log file"] = "Protokolldatei";
$a->strings["Must be writable by web server. Relative to your Red top-level directory."] = "Muss für den Web-Server schreibbar sein. Relativ zum Red-Stammverzeichnis.";
$a->strings["Log level"] = "Protokollstufe";
-$a->strings["- select -"] = "– auswählen –";
-$a->strings["Welcome to %s"] = "Willkommen auf %s";
-$a->strings["Item not found"] = "Element nicht gefunden";
-$a->strings["Item is not editable"] = "Element kann nicht bearbeitet werden.";
-$a->strings["Delete item?"] = "Eintrag löschen?";
-$a->strings["Insert YouTube video"] = "YouTube-Video einfügen";
-$a->strings["Insert Vorbis [.ogg] video"] = "Vorbis [.ogg]-Video einfügen";
-$a->strings["Insert Vorbis [.ogg] audio"] = "Vorbis [.ogg]-Audio einfügen";
-$a->strings["Age: "] = "Alter:";
-$a->strings["Gender: "] = "Geschlecht:";
-$a->strings["Finding:"] = "Ergebnisse:";
-$a->strings["next page"] = "nächste Seite";
-$a->strings["previous page"] = "vorige Seite";
-$a->strings["No entries (some entries may be hidden)."] = "Keine Einträge gefunden (einige könnten versteckt sein).";
-$a->strings["Could not access contact record."] = "Konnte nicht auf den Kontakteintrag zugreifen.";
-$a->strings["Could not locate selected profile."] = "Gewähltes Profil nicht gefunden.";
-$a->strings["Connection updated."] = "Verbindung aktualisiert.";
-$a->strings["Failed to update connection record."] = "Konnte den Verbindungseintrag nicht aktualisieren.";
-$a->strings["Could not access address book record."] = "Konnte nicht auf den Adressbuch-Eintrag zugreifen.";
-$a->strings["Refresh failed - channel is currently unavailable."] = "Aktualisierung fehlgeschlagen – der Kanal ist im Moment nicht erreichbar.";
-$a->strings["Channel has been unblocked"] = "Kanal nicht mehr blockiert";
-$a->strings["Channel has been blocked"] = "Kanal blockiert";
-$a->strings["Unable to set address book parameters."] = "Konnte die Adressbuch-Parameter nicht setzen.";
-$a->strings["Channel has been unignored"] = "Kanal wird nicht mehr ignoriert";
-$a->strings["Channel has been ignored"] = "Kanal wird ignoriert";
-$a->strings["Channel has been unarchived"] = "Kanal wurde aus dem Archiv zurück geholt";
-$a->strings["Channel has been archived"] = "Kanal wurde archiviert";
-$a->strings["Channel has been unhidden"] = "Kanal wird nicht mehr versteckt";
-$a->strings["Channel has been hidden"] = "Kanal wurde versteckt";
-$a->strings["Channel has been approved"] = "Kanal wurde zugelassen";
-$a->strings["Channel has been unapproved"] = "Zulassung des Kanals entfernt";
-$a->strings["Contact has been removed."] = "Kontakt wurde entfernt.";
-$a->strings["View %s's profile"] = "%ss Profil ansehen";
-$a->strings["Refresh Permissions"] = "Zugriffsrechte neu laden";
-$a->strings["Fetch updated permissions"] = "Aktualisierte Zugriffsrechte abfragen";
-$a->strings["Recent Activity"] = "Kürzliche Aktivitäten";
-$a->strings["View recent posts and comments"] = "Betrachte die neuesten Beiträge und Kommentare";
-$a->strings["Block or Unblock this connection"] = "Verbindung blockieren oder freigeben";
-$a->strings["Unignore"] = "Nicht ignorieren";
-$a->strings["Ignore"] = "Ignorieren";
-$a->strings["Ignore or Unignore this connection"] = "Verbindung ignorieren oder wieder beachten";
-$a->strings["Unarchive"] = "Aus Archiv zurückholen";
-$a->strings["Archive"] = "Archivieren";
-$a->strings["Archive or Unarchive this connection"] = "Verbindung archivieren oder aus dem Archiv zurückholen";
-$a->strings["Unhide"] = "Wieder sichtbar machen";
-$a->strings["Hide"] = "Verstecken";
-$a->strings["Hide or Unhide this connection"] = "Diese Verbindung verstecken oder wieder sichtbar machen";
-$a->strings["Delete this connection"] = "Verbindung löschen";
-$a->strings["Approve this connection"] = "Verbindung genehmigen";
-$a->strings["Accept connection to allow communication"] = "Akzeptiere die Verbindung, um Kommunikation zu ermöglichen";
-$a->strings["Automatic Permissions Settings"] = "Automatische Berechtigungs-Einstellungen";
-$a->strings["Connections: settings for %s"] = "Verbindungseinstellungen für %s";
-$a->strings["When receiving a channel introduction, any permissions provided here will be applied to the new connection automatically and the introduction approved. Leave this page if you do not wish to use this feature."] = "Wenn eine Verbindungsanfrage empfangen wird, werden die hier getroffenen Einstellungen automatisch angewandt, und die Anfrage wird genehmigt. Verlasse diese Seite, wenn Du diese Funktion nicht verwenden möchtest.";
-$a->strings["Slide to adjust your degree of friendship"] = "Verschieben, um den Grad der Freundschaft zu einzustellen";
-$a->strings["inherited"] = "geerbt";
-$a->strings["Connection has no individual permissions!"] = "Diese Verbindung hat keine individuellen Zugriffsrechte!";
-$a->strings["This may be appropriate based on your <a href=\"settings\">privacy settings</a>, though you may wish to review the \"Advanced Permissions\"."] = "Abhängig von Deinen <a href=\"settings\">Privatsphäre-Einstellungen</a> könnte das passen, eventuell solltest Du aber die „Zugriffsrechte für Fortgeschrittene“ überprüfen.";
-$a->strings["Profile Visibility"] = "Sichtbarkeit des Profils";
-$a->strings["Please choose the profile you would like to display to %s when viewing your profile securely."] = "Bitte wähle ein Profil, das wir %s zeigen sollen, wenn Deine Profilseite über eine verifizierte Verbindung aufgerufen wird.";
-$a->strings["Contact Information / Notes"] = "Kontaktinformationen / Notizen";
-$a->strings["Edit contact notes"] = "Kontaktnotizen bearbeiten";
-$a->strings["Their Settings"] = "Deren Einstellungen";
-$a->strings["My Settings"] = "Meine Einstellungen";
-$a->strings["Forum Members"] = "Forum Mitglieder";
-$a->strings["Soapbox"] = "Marktschreier";
-$a->strings["Full Sharing (typical social network permissions)"] = "Vollumfängliches Teilen (übliche Berechtigungen in sozialen Netzwerken)";
-$a->strings["Cautious Sharing "] = "Vorsichtiges Teilen";
-$a->strings["Follow Only"] = "Nur folgen";
-$a->strings["Individual Permissions"] = "Individuelle Zugriffsrechte";
-$a->strings["Some permissions may be inherited from your channel <a href=\"settings\">privacy settings</a>, which have higher priority than individual settings. Changing those inherited settings on this page will have no effect."] = "Einige Berechtigungen werden von den <a href=\"settings\">Sicherheits- und Privatsphäre-Einstellungen</a> dieses Kanals geerbt, die eine höhere Priorität haben als die Einstellungen bei einer Verbindung. Werden geerbte Einstellungen hier geändert, hat das keine Auswirkungen.";
-$a->strings["Advanced Permissions"] = "Zugriffsrechte für Fortgeschrittene";
-$a->strings["Simple Permissions (select one and submit)"] = "Einfache Berechtigungs-Einstellungen (wähle eine aus und klicke auf Senden)";
-$a->strings["Visit %s's profile - %s"] = "%ss Profil besuchen - %s";
-$a->strings["Block/Unblock contact"] = "Kontakt blockieren/freigeben";
-$a->strings["Ignore contact"] = "Kontakt ignorieren";
-$a->strings["Repair URL settings"] = "URL-Einstellungen reparieren";
-$a->strings["View conversations"] = "Unterhaltungen anzeigen";
-$a->strings["Delete contact"] = "Kontakt löschen";
-$a->strings["Last update:"] = "Letzte Aktualisierung:";
-$a->strings["Update public posts"] = "Öffentliche Beiträge aktualisieren";
-$a->strings["Update now"] = "Jetzt aktualisieren";
-$a->strings["Currently blocked"] = "Derzeit blockiert";
-$a->strings["Currently ignored"] = "Derzeit ignoriert";
-$a->strings["Currently archived"] = "Derzeit archiviert";
-$a->strings["Currently pending"] = "Derzeit anstehend";
-$a->strings["Hide this contact from others"] = "Diese Verbindung vor den anderen verbergen.";
-$a->strings["Replies/likes to your public posts <strong>may</strong> still be visible"] = "Antworten/Likes auf deine öffentlichen Beiträge <strong>können</strong> immer noch sichtbar sein";
-$a->strings["Layout Help"] = "Layout-Hilfe";
+$a->strings["New Profile Field"] = "Neues Profilfeld";
+$a->strings["Field nickname"] = "Kurzname für das Feld";
+$a->strings["System name of field"] = "Systemname des Feldes";
+$a->strings["Input type"] = "Art des Inhalts";
+$a->strings["Field Name"] = "Feldname";
+$a->strings["Label on profile pages"] = "Bezeichnung auf Profilseiten";
+$a->strings["Help text"] = "Hilfetext";
+$a->strings["Additional info (optional)"] = "Zusätzliche Informationen (optional)";
+$a->strings["Field definition not found"] = "Feld-Definition nicht gefunden";
+$a->strings["Edit Profile Field"] = "Profilfeld bearbeiten";
+$a->strings["Unable to locate original post."] = "Originalbeitrag nicht gefunden.";
+$a->strings["Empty post discarded."] = "Leeren Beitrag verworfen.";
+$a->strings["Executable content type not permitted to this channel."] = "Ausführbarer Content-Typ ist für diesen Kanal nicht freigegeben.";
+$a->strings["System error. Post not saved."] = "Systemfehler. Beitrag nicht gespeichert.";
+$a->strings["You have reached your limit of %1$.0f top level posts."] = "Du hast die maximale Anzahl von %1$.0f Beiträgen erreicht.";
+$a->strings["You have reached your limit of %1$.0f webpages."] = "Du hast die maximale Anzahl von %1$.0f Webseiten erreicht.";
+$a->strings["Like/Dislike"] = "Mögen/Nicht mögen";
+$a->strings["This action is restricted to members."] = "Diese Aktion kann nur von Mitgliedern ausgeführt werden.";
+$a->strings["Please <a href=\"rmagic\">login with your RedMatrix ID</a> or <a href=\"register\">register as a new RedMatrix member</a> to continue."] = "Bitte <a href=\"rmagic\">melde Dich mit Deiner RedMatrix-ID an</a> oder <a href=\"register\">registriere Dich als neues Mitglied der RedMatrix</a>, um fortzufahren.";
+$a->strings["Invalid request."] = "Ungültige Anfrage.";
+$a->strings["thing"] = "Sache";
+$a->strings["Channel unavailable."] = "Kanal nicht vorhanden.";
+$a->strings["Previous action reversed."] = "Die vorherige Aktion wurde rückgängig gemacht.";
+$a->strings["Action completed."] = "Aktion durchgeführt.";
+$a->strings["Thank you."] = "Vielen Dank.";
+$a->strings["Total invitation limit exceeded."] = "Einladungslimit überschritten.";
+$a->strings["%s : Not a valid email address."] = "%s : Keine gültige Email Adresse.";
+$a->strings["Please join us on Red"] = "Schließe Dich uns an und werde Teil der Red-Matrix";
+$a->strings["Invitation limit exceeded. Please contact your site administrator."] = "Einladungslimit überschritten. Bitte kontaktiere den Administrator Deines Red-Servers.";
+$a->strings["%s : Message delivery failed."] = "%s : Nachricht konnte nicht zugestellt werden.";
+$a->strings["%d message sent."] = array(
+ 0 => "%d Nachricht gesendet.",
+ 1 => "%d Nachrichten gesendet.",
+);
+$a->strings["You have no more invitations available"] = "Du hast keine weiteren verfügbare Einladungen";
+$a->strings["Send invitations"] = "Einladungen senden";
+$a->strings["Enter email addresses, one per line:"] = "Email-Adressen eintragen, eine pro Zeile:";
+$a->strings["Your message:"] = "Deine Nachricht:";
+$a->strings["Please join my community on RedMatrix."] = "Schließe Dich uns in der RedMatrix an!";
+$a->strings["You will need to supply this invitation code: "] = "Gib diesen Invite-Code ein:";
+$a->strings["1. Register at any RedMatrix location (they are all inter-connected)"] = "1. Registriere Dich auf irgendeinem RedMatrix-Server (sie sind alle miteinander verbunden)";
+$a->strings["2. Enter my RedMatrix network address into the site searchbar."] = "2. Gib meine RedMatrix-Adresse im Suchfeld ein.";
+$a->strings["or visit "] = "oder besuche";
+$a->strings["3. Click [Connect]"] = "3. Klicke auf [Verbinden]";
+$a->strings["Location not found."] = "Klon nicht gefunden.";
+$a->strings["Primary location cannot be removed."] = "Der primäre Klon kann nicht gelöscht werden.";
+$a->strings["No locations found."] = "Keine Klon-Adressen gefunden";
+$a->strings["Manage Channel Locations"] = "Klon-Adressen verwalten";
+$a->strings["Location (address)"] = "URL (Adresse)";
+$a->strings["Primary Location"] = "Primärer Klon";
+$a->strings["Drop location"] = "Klon löschen";
+$a->strings["[Embedded content - reload page to view]"] = "[Eingebettete Inhalte – lade die Seite neu, um sie anzuzeigen]";
$a->strings["Help with this feature"] = "Hilfe zu dieser Funktion";
$a->strings["Layout Name"] = "Layout-Name";
-$a->strings["Help:"] = "Hilfe:";
-$a->strings["Not Found"] = "Nicht gefunden";
-$a->strings["Page not found."] = "Seite nicht gefunden.";
-$a->strings["We encountered a problem while logging in with the OpenID you provided. Please check the correct spelling of the ID."] = "Wir haben ein Problem mit der OpenID festgestellt, mit der du dich anmelden wolltest. Bitte überprüfe die Schreibweise der ID noch einmal.";
-$a->strings["The error message was:"] = "Die Fehlermeldung lautet:";
-$a->strings["Authentication failed."] = "Authentifizierung fehlgeschlagen.";
-$a->strings["Remote Authentication"] = "Entfernte Authentifizierung";
-$a->strings["Enter your channel address (e.g. channel@example.com)"] = "Deine Kanal-Adresse (z. B. channel@example.com)";
-$a->strings["Authenticate"] = "Authentifizieren";
-$a->strings["Invalid item."] = "Ungültiges Element.";
-$a->strings["No such group"] = "Gruppe existiert nicht";
-$a->strings["Search Results For:"] = "Suchergebnisse für:";
-$a->strings["Collection is empty"] = "Sammlung ist leer";
-$a->strings["Collection: "] = "Sammlung:";
-$a->strings["Connection: "] = "Verbindung:";
-$a->strings["Invalid connection."] = "Ungültige Verbindung.";
-$a->strings["Profile not found."] = "Profil nicht gefunden.";
-$a->strings["Profile deleted."] = "Profil gelöscht.";
-$a->strings["Profile-"] = "Profil-";
-$a->strings["New profile created."] = "Neues Profil erstellt.";
-$a->strings["Profile unavailable to clone."] = "Profil kann nicht geklont werden.";
-$a->strings["Profile Name is required."] = "Profil-Name erforderlich.";
-$a->strings["Marital Status"] = "Familienstand";
-$a->strings["Romantic Partner"] = "Romantische Partner";
-$a->strings["Likes"] = "Gefällt";
-$a->strings["Dislikes"] = "Gefällt nicht";
-$a->strings["Work/Employment"] = "Arbeit/Anstellung";
-$a->strings["Religion"] = "Religion";
-$a->strings["Political Views"] = "Politische Ansichten";
-$a->strings["Gender"] = "Geschlecht";
-$a->strings["Sexual Preference"] = "Sexuelle Orientierung";
-$a->strings["Homepage"] = "Webseite";
-$a->strings["Interests"] = "Hobbys/Interessen";
-$a->strings["Address"] = "Adresse";
-$a->strings["Location"] = "Ort";
-$a->strings["Profile updated."] = "Profil aktualisiert.";
-$a->strings["Hide your contact/friend list from viewers of this profile?"] = "Deine Kontaktliste vor Betrachtern dieses Profils verbergen?";
-$a->strings["Edit Profile Details"] = "Bearbeite Profil-Details";
-$a->strings["View this profile"] = "Dieses Profil ansehen";
-$a->strings["Change Profile Photo"] = "Profilfoto ändern";
-$a->strings["Create a new profile using these settings"] = "Neues Profil anlegen und diese Einstellungen übernehmen";
-$a->strings["Clone this profile"] = "Dieses Profil klonen";
-$a->strings["Delete this profile"] = "Dieses Profil löschen";
-$a->strings["Profile Name:"] = "Profilname:";
-$a->strings["Your Full Name:"] = "Dein voller Name:";
-$a->strings["Title/Description:"] = "Titel/Stellenbeschreibung:";
-$a->strings["Your Gender:"] = "Dein Geschlecht:";
-$a->strings["Birthday (%s):"] = "Geburtstag (%s):";
-$a->strings["Street Address:"] = "Straße und Hausnummer:";
-$a->strings["Locality/City:"] = "Wohnort:";
-$a->strings["Postal/Zip Code:"] = "Postleitzahl:";
-$a->strings["Country:"] = "Land:";
-$a->strings["Region/State:"] = "Region/Bundesstaat:";
-$a->strings["<span class=\"heart\">&hearts;</span> Marital Status:"] = "<span class=\"heart\">&hearts;</span> Beziehungsstatus:";
-$a->strings["Who: (if applicable)"] = "Wer: (falls anwendbar)";
-$a->strings["Examples: cathy123, Cathy Williams, cathy@example.com"] = "Beispiele: cathy123, Cathy Williams, cathy@example.com";
-$a->strings["Since [date]:"] = "Seit [Datum]:";
-$a->strings["Homepage URL:"] = "Homepage URL:";
-$a->strings["Religious Views:"] = "Religiöse Ansichten:";
-$a->strings["Keywords:"] = "Schlüsselwörter:";
-$a->strings["Example: fishing photography software"] = "Beispiel: Angeln Fotografie Software";
-$a->strings["Used in directory listings"] = "Wird in Verzeichnis-Auflistungen verwendet";
-$a->strings["Tell us about yourself..."] = "Erzähle uns ein wenig von Dir …";
-$a->strings["Hobbies/Interests"] = "Hobbys/Interessen";
-$a->strings["Contact information and Social Networks"] = "Kontaktinformation und soziale Netzwerke";
-$a->strings["My other channels"] = "Meine anderen Kanäle";
-$a->strings["Musical interests"] = "Musikalische Interessen";
-$a->strings["Books, literature"] = "Bücher, Literatur";
-$a->strings["Television"] = "Fernsehen";
-$a->strings["Film/dance/culture/entertainment"] = "Film/Tanz/Kultur/Unterhaltung";
-$a->strings["Love/romance"] = "Liebe/Romantik";
-$a->strings["Work/employment"] = "Arbeit/Anstellung";
-$a->strings["School/education"] = "Schule/Ausbildung";
-$a->strings["This is your <strong>public</strong> profile.<br />It <strong>may</strong> be visible to anybody using the internet."] = "Das ist Dein <strong>öffentliches</strong> Profil.<br />Es <strong>könnte</strong> für jeden im Internet sichtbar sein.";
-$a->strings["Edit/Manage Profiles"] = "Bearbeite/Verwalte Profile";
-$a->strings["Add profile things"] = "Profil-Dinge hinzufügen";
-$a->strings["Include desirable objects in your profile"] = "Binde begehrenswerte Dinge in Dein Profil ein";
-$a->strings["Channel added."] = "Kanal hinzugefügt.";
-$a->strings["Remote authentication blocked. You are logged into this site locally. Please logout and retry."] = "Fern-Authentifizierung blockiert. Du bist lokal auf diesem Server angemeldet. Bitte melde Dich ab und versuche es erneut.";
-$a->strings["Welcome %s. Remote authentication successful."] = "Willkommen %s. Entfernte Authentifizierung erfolgreich.";
-$a->strings["This site is not a directory server"] = "Diese Website ist kein Verzeichnis-Server";
-$a->strings["Failed to create source. No channel selected."] = "Konnte die Quelle nicht anlegen. Kein Kanal ausgewählt.";
-$a->strings["Source created."] = "Quelle erstellt.";
-$a->strings["Source updated."] = "Quelle aktualisiert.";
-$a->strings["*"] = "*";
-$a->strings["Manage remote sources of content for your channel."] = "Quellen von Inhalten Deines Kanals verwalten.";
-$a->strings["New Source"] = "Neue Quelle";
-$a->strings["Import all or selected content from the following channel into this channel and distribute it according to your channel settings."] = "Importiere alle oder ausgewählte Inhalte des folgenden Kanals in diesen Kanal und verteile sie gemäß der Einstellungen dieses Kanals.";
-$a->strings["Only import content with these words (one per line)"] = "Importiere nur Beiträge, die folgende Wörter (eines pro Zeile) enthalten";
-$a->strings["Leave blank to import all public content"] = "Leer lassen, um alle öffentlichen Beiträge zu importieren";
-$a->strings["Channel Name"] = "Name des Kanals";
-$a->strings["Source not found."] = "Quelle nicht gefunden.";
-$a->strings["Edit Source"] = "Quelle bearbeiten";
-$a->strings["Delete Source"] = "Quelle löschen";
-$a->strings["Source removed"] = "Quelle gelöscht";
-$a->strings["Unable to remove source."] = "Konnte die Quelle nicht löschen.";
$a->strings["Remote privacy information not available."] = "Privatsphäre-Einstellungen anderer Nutzer sind nicht verfügbar.";
$a->strings["Visible to:"] = "Sichtbar für:";
+$a->strings["No connections."] = "Keine Verbindungen.";
+$a->strings["Visit %s's profile [%s]"] = "%ss Profil [%s] besuchen";
+$a->strings["View Connnections"] = "Zeige Verbindungen";
$a->strings["Hub not found."] = "Server nicht gefunden.";
-$a->strings["Red Matrix Server - Setup"] = "Red Matrix Server - Installation";
-$a->strings["Could not connect to database."] = "Kann nicht mit der Datenbank verbinden.";
-$a->strings["Could not connect to specified site URL. Possible SSL certificate or DNS issue."] = "Konnte die angegebene Webseiten-URL nicht erreichen. Möglicherweise ein Problem mit dem SSL-Zertifikat oder dem DNS.";
-$a->strings["Could not create table."] = "Kann Tabelle nicht erstellen.";
-$a->strings["Your site database has been installed."] = "Die Datenbank Deines Servers wurde installiert.";
-$a->strings["You may need to import the file \"install/database.sql\" manually using phpmyadmin or mysql."] = "Eventuell musst Du die Datei \"install/database.sql\" per Hand mit phpmyadmin oder mysql importieren.";
-$a->strings["Please see the file \"install/INSTALL.txt\"."] = "Lies die Datei \"install/INSTALL.txt\".";
-$a->strings["System check"] = "Systemprüfung";
-$a->strings["Check again"] = "Bitte nochmal prüfen";
-$a->strings["Database connection"] = "Datenbank Verbindung";
-$a->strings["In order to install Red Matrix we need to know how to connect to your database."] = "Um die Red-Matrix installieren zu können, müssen wir wissen, wie wir eine Verbindung zu Deiner Datenbank aufbauen können.";
-$a->strings["Please contact your hosting provider or site administrator if you have questions about these settings."] = "Bitte kontaktiere Deinen Hosting-Provider oder Administrator, falls Du Fragen zu diesen Einstellungen hast.";
-$a->strings["The database you specify below should already exist. If it does not, please create it before continuing."] = "Die Datenbank, die Du weiter unten angibst, sollte bereits existieren. Sollte das noch nicht der Fall sein, erzeuge sie bitte bevor Du fortfährst.";
-$a->strings["Database Server Name"] = "Datenbank-Servername";
-$a->strings["Default is localhost"] = "Standard ist localhost";
-$a->strings["Database Port"] = "Datenbank-Port";
-$a->strings["Communication port number - use 0 for default"] = "Port-Nummer für die Kommunikation – verwende 0 für die Standardeinstellung";
-$a->strings["Database Login Name"] = "Datenbank-Benutzername";
-$a->strings["Database Login Password"] = "Datenbank-Kennwort";
-$a->strings["Database Name"] = "Datenbank-Name";
-$a->strings["Site administrator email address"] = "E-Mail Adresse des Seiten-Administrators";
-$a->strings["Your account email address must match this in order to use the web admin panel."] = "Die E-Mail-Adresse Deines Accounts muss dieser Adresse entsprechen, damit Du Zugriff zur Administrations-Seite erhältst.";
-$a->strings["Website URL"] = "Server-URL";
-$a->strings["Please use SSL (https) URL if available."] = "Nutze wenn möglich eine SSL-URL (https).";
-$a->strings["Please select a default timezone for your website"] = "Standard-Zeitzone für Deinen Server";
-$a->strings["Site settings"] = "Seiteneinstellungen";
-$a->strings["Could not find a command line version of PHP in the web server PATH."] = "Konnte die Kommandozeilen-Version von PHP nicht im PATH des Web-Servers finden.";
-$a->strings["If you don't have a command line version of PHP installed on server, you will not be able to run background polling via cron."] = "Ohne Kommandozeilen-Version von PHP auf dem Server wirst Du nicht in der Lage sein, Hintergrundprozesse via cron auszuführen.";
-$a->strings["PHP executable path"] = "PHP Pfad zu ausführbarer Datei";
-$a->strings["Enter full path to php executable. You can leave this blank to continue the installation."] = "Gib den vollen Pfad zum PHP-Interpreter an. Du kannst dieses Feld frei lassen und mit der Installation fortfahren.";
-$a->strings["Command line PHP"] = "PHP Befehlszeile";
-$a->strings["The command line version of PHP on your system does not have \"register_argc_argv\" enabled."] = "Bei der Kommandozeilen-Version von PHP auf Deinem System ist \"register_argc_argv\" nicht aktiviert.";
-$a->strings["This is required for message delivery to work."] = "Das wird benötigt, damit die Auslieferung von Nachrichten funktioniert.";
-$a->strings["PHP register_argc_argv"] = "PHP register_argc_argv";
-$a->strings["Error: the \"openssl_pkey_new\" function on this system is not able to generate encryption keys"] = "Fehler: Die „openssl_pkey_new“-Funktion auf diesem System ist nicht in der Lage, Schlüssel für die Verschlüsselung zu erzeugen.";
-$a->strings["If running under Windows, please see \"http://www.php.net/manual/en/openssl.installation.php\"."] = "Wenn Du Windows verwendest, findest Du unter http://www.php.net/manual/en/openssl.installation.php eine Installationsanleitung.";
-$a->strings["Generate encryption keys"] = "Verschlüsselungsschlüssel generieren";
-$a->strings["libCurl PHP module"] = "libCurl-PHP-Modul";
-$a->strings["GD graphics PHP module"] = "GD-Grafik-PHP-Modul";
-$a->strings["OpenSSL PHP module"] = "OpenSSL-PHP-Modul";
-$a->strings["mysqli PHP module"] = "mysqli-PHP-Modul";
-$a->strings["mb_string PHP module"] = "mb_string-PHP-Modul";
-$a->strings["mcrypt PHP module"] = "mcrypt-PHP-Modul";
-$a->strings["Apache mod_rewrite module"] = "Apache-mod_rewrite-Modul";
-$a->strings["Error: Apache webserver mod-rewrite module is required but not installed."] = "Fehler: Das Apache-Modul mod-rewrite wird benötigt, ist aber nicht installiert.";
-$a->strings["proc_open"] = "proc_open";
-$a->strings["Error: proc_open is required but is either not installed or has been disabled in php.ini"] = "Fehler: proc_open wird benötigt, ist aber entweder nicht installiert oder wurde in der php.ini deaktiviert";
-$a->strings["Error: libCURL PHP module required but not installed."] = "Fehler: Das PHP-Modul libCURL wird benötigt, ist aber nicht installiert.";
-$a->strings["Error: GD graphics PHP module with JPEG support required but not installed."] = "Fehler: Das PHP-Modul GD-Grafik mit JPEG-Unterstützung wird benötigt, ist aber nicht installiert.";
-$a->strings["Error: openssl PHP module required but not installed."] = "Fehler: Das PHP-Modul openssl wird benötigt, ist aber nicht installiert.";
-$a->strings["Error: mysqli PHP module required but not installed."] = "Fehler: Das PHP-Modul mysqli wird benötigt, ist aber nicht installiert.";
-$a->strings["Error: mb_string PHP module required but not installed."] = "Fehler: Das PHP-Modul mb_string wird benötigt, ist aber nicht installiert.";
-$a->strings["Error: mcrypt PHP module required but not installed."] = "Fehler: Das PHP-Modul mcrypt wird benötigt, ist aber nicht installiert.";
-$a->strings["The web installer needs to be able to create a file called \".htconfig.php\ in the top folder of your web server and it is unable to do so."] = "Der Installations-Assistent muss in der Lage sein, die Datei \".htconfig.php\" im Stammverzeichnis des Web-Servers anzulegen, ist er aber nicht.";
-$a->strings["This is most often a permission setting, as the web server may not be able to write files in your folder - even if you can."] = "Meist liegt das daran, dass der Nutzer, unter dem der Web-Server läuft, keine Rechte Schreibrechte in dem Verzeichnis hat – selbst wenn Du selbst das darfst.";
-$a->strings["At the end of this procedure, we will give you a text to save in a file named .htconfig.php in your Red top folder."] = "Am Schluss dieses Vorgangs wird ein Text generiert, den Du unter dem Dateinamen .htconfig.php im Stammverzeichnis Deiner Red-Installation speichern musst.";
-$a->strings["You can alternatively skip this procedure and perform a manual installation. Please see the file \"install/INSTALL.txt\" for instructions."] = "Alternativ kannst Du diesen Schritt überspringen und die Installation manuell vornehmen. Lies dazu die Datei install/INSTALL.txt.";
-$a->strings[".htconfig.php is writable"] = ".htconfig.php ist beschreibbar";
-$a->strings["Red uses the Smarty3 template engine to render its web views. Smarty3 compiles templates to PHP to speed up rendering."] = "Red verwendet Smarty3 um Vorlagen für die Webdarstellung zu übersetzen. Smarty3 übersetzt diese Vorlagen nach PHP, um die Darstellung zu beschleunigen.";
-$a->strings["In order to store these compiled templates, the web server needs to have write access to the directory view/tpl/smarty3/ under the Red top level folder."] = "Um die übersetzten Vorlagen speichern zu können muss der Webserver Schreibzugriff auf das Verzeichnis view/tpl/smarty3/ unterhalb des Red-Stammverzeichnisses haben.";
-$a->strings["Please ensure that the user that your web server runs as (e.g. www-data) has write access to this folder."] = "Bitte stelle sicher, dass der Nutzer, unter dem der Webserver läuft (z.B. www-data), Schreibzugriff auf dieses Verzeichnis hat.";
-$a->strings["Note: as a security measure, you should give the web server write access to view/tpl/smarty3/ only--not the template files (.tpl) that it contains."] = "Hinweis: Als Sicherheitsvorkehrung solltest Du dem Webserver nur Schreib-Zugriff auf das Verzeichnis view/tpl/smarty3 geben, nicht auf die Vorlagen (.tpl-Dateien) in view/tpl/ .";
-$a->strings["view/tpl/smarty3 is writable"] = "view/tpl/smarty3 ist beschreibbar";
-$a->strings["Red uses the store directory to save uploaded files. The web server needs to have write access to the store directory under the Red top level folder"] = "Red benutzt das Verzeichnis store, um hochgeladene Dateien zu speichern. Der Web-Server benötigt Schreibrechte für dieses Verzeichnis direkt unterhalb des Red-Stammverzeichnisses";
-$a->strings["store is writable"] = "store ist schreibbar";
-$a->strings["SSL certificate validation"] = "SSL Zertifikatverifizierung";
-$a->strings["SSL certificate cannot be validated. Fix certificate or disable https access to this site."] = "Das SSL-Zertifikat konnte nicht validiert werden. Korrigiere das Zertifikat oder deaktiviere den HTTPS-Zugriff auf diesen Server.";
-$a->strings["Url rewrite in .htaccess is not working. Check your server configuration."] = "URL rewrite via .htaccess funktioniert nicht. Überprüfe Deine Server-Konfiguration.";
-$a->strings["Url rewrite is working"] = "Url rewrite funktioniert";
-$a->strings["The database configuration file \".htconfig.php\" could not be written. Please use the enclosed text to create a configuration file in your web server root."] = "Die Datenbank-Konfigurationsdatei „.htconfig.php“ konnte nicht geschrieben werden. Bitte verwende den unten angegebenen Text, um die Konfigurationsdatei im Stammverzeichnis des Webservers anzulegen.";
-$a->strings["Errors encountered creating database tables."] = "Fehler beim Anlegen der Datenbank-Tabellen aufgetreten.";
-$a->strings["<h1>What next</h1>"] = "<h1>Was als Nächstes</h1>";
-$a->strings["IMPORTANT: You will need to [manually] setup a scheduled task for the poller."] = "WICHTIG: Du musst [manuell] einen Cronjob für den Poller einrichten.";
-$a->strings["Version %s"] = "Version %s";
-$a->strings["Installed plugins/addons/apps:"] = "Installierte Plugins/Addons/Apps";
-$a->strings["No installed plugins/addons/apps"] = "Keine installierten Plugins/Addons/Apps";
-$a->strings["Project Donations"] = "Projekt Spenden";
-$a->strings["<p>The Red Matrix is provided for you by volunteers working in their spare time. Your support will help us to build a better, freer, and privacy respecting web. Select the following option for a one-time donation of your choosing</p>"] = "";
-$a->strings["<p>or</p>"] = "<p>oder</p>";
-$a->strings["Recurring Donation Options"] = "Optionen für regelmäßige Spenden";
-$a->strings["Red"] = "Red";
-$a->strings["This is a hub of the Red Matrix - a global cooperative network of decentralised privacy enhanced websites."] = "Dieser Server ist Teil der Red-Matrix – einem global vernetzten Verbund aus dezentralen Websites mit Rücksicht auf die Privatsphäre.";
-$a->strings["Running at web location"] = "Erreichbar unter der Web-Adresse";
-$a->strings["Please visit <a href=\"http://getzot.com\">GetZot.com</a> to learn more about the Red Matrix."] = "Besuche <a href=\"http://getzot.com\">GetZot.com</a>, um mehr über die Red-Matrix zu erfahren.";
-$a->strings["Bug reports and issues: please visit"] = "Probleme oder Fehler gefunden? Bitte besuche";
-$a->strings["Suggestions, praise, etc. - please email \"redmatrix\" at librelist - dot com"] = "Vorschläge, Lob, usw.: E-Mail an 'redmatrix' at librelist - dot - com";
-$a->strings["Site Administrators"] = "Administratoren";
-$a->strings["Add a Channel"] = "Kanal hinzufügen";
-$a->strings["A channel is your own collection of related web pages. A channel can be used to hold social network profiles, blogs, conversation groups and forums, celebrity pages, and much more. You may create as many channels as your service provider allows."] = "Ein Kanal ist Deine eigene Sammlung von verbundenen Webseiten. Ein Kanal kann genutzt werden, um ein Social-Network-Profil, ein Blog, eine Gesprächsgruppe oder ein Forum, Promi-Seiten und vieles mehr zu erstellen. Du kannst so viele Kanäle erstellen, wie es der Betreiber Deiner Seite zulässt.";
-$a->strings["Examples: \"Bob Jameson\", \"Lisa and her Horses\", \"Soccer\", \"Aviation Group\" "] = "Beispiele: „Horst Weidinger“, „Lisa und ihr Meerschweinchen“, „Fußball“, „Segelflieger-Forum“ ";
-$a->strings["Choose a short nickname"] = "Wähle einen kurzen Spitznamen";
-$a->strings["Your nickname will be used to create an easily remembered channel address (like an email address) which you can share with others."] = "Dein Spitzname wird verwendet, um eine leicht zu merkende Kanal-Adresse (ähnlich einer E-Mail-Adresse) zu erzeugen, die Du mit anderen austauschen kannst.";
-$a->strings["Or <a href=\"import\">import an existing channel</a> from another location"] = "Oder <a href=\"import\">importiere einen bestehenden Kanal</a> von einem anderen Server";
-$a->strings["No valid account found."] = "Kein gültiges Konto gefunden.";
-$a->strings["Password reset request issued. Check your email."] = "Zurücksetzen des Passworts eingeleitet. Schau in Deine E-Mails.";
-$a->strings["Site Member (%s)"] = "Nutzer (%s)";
-$a->strings["Password reset requested at %s"] = "Passwort-Rücksetzung auf %s angefordert";
-$a->strings["Request could not be verified. (You may have previously submitted it.) Password reset failed."] = "Die Anfrage konnte nicht verifiziert werden. (Vielleicht hast Du schon einmal auf den Link in der E-Mail geklickt?) Passwort-Rücksetzung fehlgeschlagen.";
-$a->strings["Password Reset"] = "Zurücksetzen des Kennworts";
-$a->strings["Your password has been reset as requested."] = "Dein Passwort wurde wie angefordert neu erstellt.";
-$a->strings["Your new password is"] = "Dein neues Passwort lautet";
-$a->strings["Save or copy your new password - and then"] = "Speichere oder kopiere Dein neues Passwort – und dann";
-$a->strings["click here to login"] = "Klicke hier, um dich anzumelden";
-$a->strings["Your password may be changed from the <em>Settings</em> page after successful login."] = "Dein Passwort kann unter <em>Einstellungen</em> nach einer erfolgreichen Anmeldung geändert werden.";
-$a->strings["Your password has changed at %s"] = "Auf %s wurde Dein Passwort geändert";
-$a->strings["Forgot your Password?"] = "Kennwort vergessen?";
-$a->strings["Enter your email address and submit to have your password reset. Then check your email for further instructions."] = "Gib Deine E-Mail-Adresse ein, um Dein Passwort zurücksetzen zu lassen. Du erhältst dann weitere Anweisungen per E-Mail.";
-$a->strings["Email Address"] = "E-Mail Adresse";
-$a->strings["Reset"] = "Zurücksetzen";
-$a->strings["Nothing to import."] = "Nichts zu importieren.";
-$a->strings["Unable to download data from old server"] = "Daten können vom alten Server nicht heruntergeladen werden";
-$a->strings["Imported file is empty."] = "Die importierte Datei ist leer.";
-$a->strings["Cannot create a duplicate channel identifier on this system. Import failed."] = "Kann keinen doppelten Kanal-Identifikator auf diesem System erzeugen (Spitzname oder Hash schon belegt). Import fehlgeschlagen.";
-$a->strings["Channel clone failed. Import failed."] = "Klonen des Kanals fehlgeschlagen. Import fehlgeschlagen.";
-$a->strings["Cloned channel not found. Import failed."] = "Geklonter Kanal nicht gefunden. Import fehlgeschlagen.";
-$a->strings["Import completed."] = "Import abgeschlossen.";
-$a->strings["You must be logged in to use this feature."] = "Du musst angemeldet sein um diese Funktion zu nutzen.";
-$a->strings["Import Channel"] = "Kanal importieren";
-$a->strings["Use this form to import an existing channel from a different server/hub. You may retrieve the channel identity from the old server/hub via the network or provide an export file. Only identity and connections/relationships will be imported. Importation of content is not yet available."] = "Verwende dieses Formular, um einen existierenden Kanal von einem anderen Red-Server zu importieren. Du kannst den Kanal direkt vom bisherigen Red-Server über das Netzwerk importieren oder eine exportierte Sicherheitskopie benutzen. Es werden ausschließlich die Identität und die Verbindungen/Beziehungen importiert. Das Importieren von Inhalten ist derzeit nicht möglich.";
-$a->strings["File to Upload"] = "Hochzuladende Datei:";
-$a->strings["Or provide the old server/hub details"] = "Oder gib die Details Deines bisherigen Red-Servers ein";
-$a->strings["Your old identity address (xyz@example.com)"] = "Bisherige Kanal-Adresse (xyz@example.com)";
-$a->strings["Your old login email address"] = "Ihre alte Login E-Mail Adresse";
-$a->strings["Your old login password"] = "Ihr altes Login Kennwort";
-$a->strings["For either option, please choose whether to make this hub your new primary address, or whether your old location should continue this role. You will be able to post from either location, but only one can be marked as the primary location for files, photos, and media."] = "Egal welche Option Du wählst, bitte lege fest, ob dieser Server die neue primäre Adresse dieses Kanals sein soll, oder ob der bisherige Red-Server diese Rolle weiterhin wahrnimmt. Du kannst von beiden Servern aus posten, aber nur einer kann der primäre Ort Deiner Dateien, Fotos und Medien sein.";
-$a->strings["Make this hub my primary location"] = "Dieser Red-Server ist mein primärer Server.";
-$a->strings["You have created %1$.0f of %2$.0f allowed channels."] = "Du hast %1$.0f von maximal %2$.0f erlaubten Kanälen eingerichtet.";
-$a->strings["Create a new channel"] = "Erzeuge neuen Kanal";
-$a->strings["Channel Manager"] = "Kanal-Manager";
-$a->strings["Current Channel"] = "Aktueller Kanal";
-$a->strings["Attach to one of your channels by selecting it."] = "Wähle einen Deiner Kanäle aus, um ihn zu verwenden.";
-$a->strings["Default Channel"] = "Standard Kanal";
-$a->strings["Make Default"] = "Zum Standard machen";
$a->strings["Total votes"] = "Stimmen gesamt";
$a->strings["Average Rating"] = "Durchschnittliche Bewertung";
-$a->strings["Profile Match"] = "Profil-Ãœbereinstimmungen";
-$a->strings["No keywords to match. Please add keywords to your default profile."] = "Keine Schlüsselwörter für den Abgleich gefunden. Bitte füge Schlüsselwörter zu Deinem Standardprofil hinzu.";
-$a->strings["is interested in:"] = "interessiert sich für:";
-$a->strings["No matches"] = "Keine Ãœbereinstimmungen";
-$a->strings["invalid target signature"] = "Ungültige Signatur des Ziels";
$a->strings["Unable to lookup recipient."] = "Konnte den Empfänger nicht finden.";
$a->strings["Unable to communicate with requested channel."] = "Die Kommunikation mit dem ausgewählten Kanal ist fehlgeschlagen.";
$a->strings["Cannot verify requested channel."] = "Verifizierung des angeforderten Kanals fehlgeschlagen.";
$a->strings["Selected channel has private message restrictions. Send failed."] = "Der ausgewählte Kanal hat Einschränkungen bzgl. privater Nachrichten. Senden fehlgeschlagen.";
-$a->strings["Messages"] = "Nachrichten";
$a->strings["Message deleted."] = "Nachricht gelöscht.";
$a->strings["Message recalled."] = "Nachricht widerrufen.";
$a->strings["Send Private Message"] = "Private Nachricht senden";
$a->strings["To:"] = "An:";
$a->strings["Subject:"] = "Betreff:";
+$a->strings["Send"] = "Absenden";
$a->strings["Message not found."] = "Nachricht nicht gefunden.";
$a->strings["Delete message"] = "Nachricht löschen";
$a->strings["Recall message"] = "Nachricht widerrufen";
@@ -1517,218 +1819,144 @@ $a->strings["Private Conversation"] = "Private Unterhaltung";
$a->strings["Delete conversation"] = "Unterhaltung löschen";
$a->strings["No secure communications available. You <strong>may</strong> be able to respond from the sender's profile page."] = "Keine sichere Kommunikation verfügbar. <strong>Eventuell</strong> kannst Du auf der Profilseite des Absenders antworten.";
$a->strings["Send Reply"] = "Antwort senden";
-$a->strings["OpenID protocol error. No ID returned."] = "OpenID Protokollfehler. Keine ID zurückgegeben.";
-$a->strings["Edit Layout"] = "Layout bearbeiten";
-$a->strings["Delete layout?"] = "Layout löschen?";
-$a->strings["Delete Layout"] = "Layout löschen";
-$a->strings["Image uploaded but image cropping failed."] = "Bild hochgeladen, aber das Zurechtschneiden schlug fehl.";
-$a->strings["Image resize failed."] = "Bild-Anpassung fehlgeschlagen.";
-$a->strings["Shift-reload the page or clear browser cache if the new photo does not display immediately."] = "Leere den Browser Cache oder nutze Umschalten-Neu Laden, falls das neue Foto nicht sofort angezeigt wird.";
-$a->strings["Image exceeds size limit of %d"] = "Bild ist größer als das Limit von %d";
-$a->strings["Unable to process image."] = "Kann Bild nicht verarbeiten.";
-$a->strings["Photo not available."] = "Foto nicht verfügbar.";
-$a->strings["Upload File:"] = "Datei hochladen:";
-$a->strings["Select a profile:"] = "Wählen Sie ein Profil:";
-$a->strings["Upload Profile Photo"] = "Lade neues Profilfoto hoch";
-$a->strings["Upload"] = "Hochladen";
-$a->strings["skip this step"] = "diesen Schritt überspringen";
-$a->strings["select a photo from your photo albums"] = "ein Foto aus meinen Fotoalben";
-$a->strings["Crop Image"] = "Bild zuschneiden";
-$a->strings["Please adjust the image cropping for optimum viewing."] = "Bitte schneide das Bild für eine optimale Anzeige passend zu.";
-$a->strings["Done Editing"] = "Bearbeitung fertigstellen";
-$a->strings["Image uploaded successfully."] = "Bild erfolgreich hochgeladen.";
-$a->strings["Image upload failed."] = "Hochladen des Bilds fehlgeschlagen.";
-$a->strings["Image size reduction [%s] failed."] = "Reduzierung der Bildgröße [%s] fehlgeschlagen.";
-$a->strings["Blocked"] = "Blockiert";
-$a->strings["Ignored"] = "Ignoriert";
-$a->strings["Hidden"] = "Versteckt";
-$a->strings["Archived"] = "Archiviert";
-$a->strings["All"] = "Alle";
-$a->strings["Suggest new connections"] = "Neue Verbindungen vorschlagen";
-$a->strings["Show pending (new) connections"] = "Zeige ausstehende (neue) Verbindungsanfragen";
-$a->strings["Show all connections"] = "Zeige alle Verbindungen";
-$a->strings["Unblocked"] = "Freigegeben";
-$a->strings["Only show unblocked connections"] = "Zeige nur freigegebene Verbindungen";
-$a->strings["Only show blocked connections"] = "Zeige nur blockierte Verbindungen";
-$a->strings["Only show ignored connections"] = "Zeige nur ignorierte Verbindungen";
-$a->strings["Only show archived connections"] = "Zeige nur archivierte Verbindungen";
-$a->strings["Only show hidden connections"] = "Zeige nur versteckte Verbindungen";
-$a->strings["%1\$s [%2\$s]"] = "%1\$s [%2\$s]";
-$a->strings["Edit contact"] = "Kontakt bearbeiten";
-$a->strings["Search your connections"] = "Verbindungen durchsuchen";
-$a->strings["Finding: "] = "Ergebnisse:";
+$a->strings["Wall Photos"] = "Wall Fotos";
+$a->strings["Profile Match"] = "Profil-Ãœbereinstimmungen";
+$a->strings["No keywords to match. Please add keywords to your default profile."] = "Keine Schlüsselwörter für den Abgleich gefunden. Bitte füge Schlüsselwörter zu Deinem Standardprofil hinzu.";
+$a->strings["is interested in:"] = "interessiert sich für:";
+$a->strings["No matches"] = "Keine Ãœbereinstimmungen";
+$a->strings["Menu updated."] = "Menü aktualisiert.";
+$a->strings["Unable to update menu."] = "Kann Menü nicht aktualisieren.";
+$a->strings["Menu created."] = "Menü erstellt.";
+$a->strings["Unable to create menu."] = "Kann Menü nicht erstellen.";
+$a->strings["Manage Menus"] = "Menüs verwalten";
+$a->strings["Drop"] = "Löschen";
+$a->strings["Bookmarks allowed"] = "Lesezeichen erlaubt";
+$a->strings["Create a new menu"] = "Neues Menü erstellen";
+$a->strings["Delete this menu"] = "Lösche dieses Menü";
+$a->strings["Edit menu contents"] = "Bearbeite Menü Inhalte";
+$a->strings["Edit this menu"] = "Dieses Menü bearbeiten";
+$a->strings["New Menu"] = "Neues Menü";
+$a->strings["Menu name"] = "Menü Name";
+$a->strings["Must be unique, only seen by you"] = "Muss eindeutig sein, ist aber nur für Dich sichtbar";
+$a->strings["Menu title"] = "Menü Titel";
+$a->strings["Menu title as seen by others"] = "Menü Titel wie er von anderen gesehen wird";
+$a->strings["Allow bookmarks"] = "Erlaube Lesezeichen";
+$a->strings["Menu may be used to store saved bookmarks"] = "Im Menü können gespeicherte Lesezeichen abgelegt werden";
+$a->strings["Menu deleted."] = "Menü gelöscht.";
+$a->strings["Menu could not be deleted."] = "Menü konnte nicht gelöscht werden.";
+$a->strings["Edit Menu"] = "Menü bearbeiten";
+$a->strings["Add or remove entries to this menu"] = "Einträge zu diesem Menü hinzufügen oder entfernen";
+$a->strings["Conversation removed."] = "Unterhaltung gelöscht.";
+$a->strings["No messages."] = "Keine Nachrichten.";
+$a->strings["D, d M Y - g:i A"] = "D, d. M Y - G:i";
+$a->strings["Add a Channel"] = "Kanal hinzufügen";
+$a->strings["A channel is your own collection of related web pages. A channel can be used to hold social network profiles, blogs, conversation groups and forums, celebrity pages, and much more. You may create as many channels as your service provider allows."] = "Ein Kanal ist Deine eigene Sammlung von verbundenen Webseiten. Ein Kanal kann genutzt werden, um ein Social-Network-Profil, ein Blog, eine Gesprächsgruppe oder ein Forum, Promi-Seiten und vieles mehr zu erstellen. Du kannst so viele Kanäle erstellen, wie es der Betreiber Deiner Seite zulässt.";
+$a->strings["Examples: \"Bob Jameson\", \"Lisa and her Horses\", \"Soccer\", \"Aviation Group\" "] = "Beispiele: „Horst Weidinger“, „Lisa und ihr Meerschweinchen“, „Fußball“, „Segelflieger-Forum“ ";
+$a->strings["Choose a short nickname"] = "Wähle einen kurzen Spitznamen";
+$a->strings["Your nickname will be used to create an easily remembered channel address (like an email address) which you can share with others."] = "Dein Spitzname wird verwendet, um eine leicht zu merkende Kanal-Adresse (ähnlich einer E-Mail-Adresse) zu erzeugen, die Du mit anderen austauschen kannst.";
+$a->strings["Or <a href=\"import\">import an existing channel</a> from another location"] = "Oder <a href=\"import\">importiere einen bestehenden Kanal</a> von einem anderen Server";
+$a->strings["Channel Type"] = "Kanaltyp";
+$a->strings["Please choose a channel type (such as social networking or community forum) and privacy requirements so we can select the best permissions for you"] = "Wähle einen Kanaltyp (wie Soziales Netzwerk oder Forum) und Privatsphäre-Vorgaben, so dass wir die passenden Kanal-Zugriffsrechte für Dich setzen können";
+$a->strings["Red Matrix - &quot;The Network&quot;"] = "RedMatrix – &quot;Das Netzwerk&quot;";
+$a->strings["Welcome to %s"] = "Willkommen auf %s";
$a->strings["Invalid request identifier."] = "Ungültiger Anfrage-Identifikator.";
$a->strings["Discard"] = "Verwerfen";
$a->strings["No more system notifications."] = "Keine System-Benachrichtigungen mehr.";
$a->strings["System Notifications"] = "System-Benachrichtigungen";
-$a->strings["Block Name"] = "Block-Name";
+$a->strings["Xchan Lookup"] = "Xchan-Suche";
+$a->strings["Lookup xchan beginning with (or webbie): "] = "Nach xchans oder Webbies (Kanal-Adressen) suchen, die wie folgt beginnen:";
$a->strings["Unable to find your hub."] = "Konnte Deinen Server nicht finden.";
$a->strings["Post successful."] = "Veröffentlichung erfolgreich.";
-$a->strings["Edit Webpage"] = "Webseite bearbeiten";
-$a->strings["Delete webpage?"] = "Webseite löschen?";
-$a->strings["Delete Webpage"] = "Webseite löschen";
-$a->strings["Access to this profile has been restricted."] = "Der Zugang zu diesem Profil ist begrenzt.";
-$a->strings["Poke/Prod"] = "Anstupsen/Knuffen";
-$a->strings["poke, prod or do other things to somebody"] = "Stupse Leute an oder mache anderes mit ihnen";
-$a->strings["Recipient"] = "Empfänger";
-$a->strings["Choose what you wish to do to recipient"] = "Wähle, was Du mit dem/r Empfänger/in tun willst";
-$a->strings["Make this post private"] = "Diesen Beitrag privat machen";
-$a->strings["Insufficient permissions. Request redirected to profile page."] = "Unzureichende Zugriffsrechte. Die Anfrage wurde zur Profil-Seite umgeleitet.";
-$a->strings["Not available."] = "Nicht verfügbar.";
-$a->strings["Community"] = "Gemeinschaft";
-$a->strings["No results."] = "Keine Ergebnisse.";
-$a->strings["Contact not found."] = "Kontakt nicht gefunden";
-$a->strings["Friend suggestion sent."] = "Freundschaftsempfehlung senden.";
-$a->strings["Suggest Friends"] = "Kontakte vorschlagen";
-$a->strings["Suggest a friend for %s"] = "Schlage %s einen Kontakt vor";
-$a->strings["Edit Block"] = "Block bearbeiten";
-$a->strings["Delete block?"] = "Block löschen?";
-$a->strings["Delete Block"] = "Block löschen";
-$a->strings["Status: "] = "Status:";
-$a->strings["Sexual Preference: "] = "Sexuelle Ausrichtung:";
-$a->strings["Homepage: "] = "Webseite:";
-$a->strings["Hometown: "] = "Wohnort:";
-$a->strings["About: "] = "Ãœber:";
-$a->strings["Keywords: "] = "Schlüsselwörter:";
-$a->strings["Permission Denied."] = "Zugriff verweigert.";
-$a->strings["File not found."] = "Datei nicht gefunden.";
-$a->strings["Edit file permissions"] = "Dateiberechtigungen bearbeiten";
-$a->strings["Permissions"] = "Berechtigungen";
-$a->strings["Include all files and sub folders"] = "Alle Dateien und Unterverzeichnisse einbinden";
-$a->strings["Return to file list"] = "Zurück zur Dateiliste";
-$a->strings["Copy/paste this code to attach file to a post"] = "Diesen Code kopieren und einfügen, um die Datei an einen Beitrag anzuhängen";
-$a->strings["Copy/paste this URL to link file from a web page"] = "Diese URL verwenden, um von einer Webseite aus auf die Datei zu verlinken";
-$a->strings["Download"] = "Download";
-$a->strings["Used: "] = "Verwendet:";
-$a->strings["[directory]"] = "[Verzeichnis]";
-$a->strings["Limit: "] = "Limit:";
-$a->strings["No suggestions available. If this is a new site, please try again in 24 hours."] = "Keine Vorschläge vorhanden. Wenn das ein neuer Server ist, versuche es in 24 Stunden noch einmal.";
-$a->strings["Conversation removed."] = "Unterhaltung gelöscht.";
-$a->strings["No messages."] = "Keine Nachrichten.";
-$a->strings["D, d M Y - g:i A"] = "D, d. M Y - g:i A";
-$a->strings["Public Sites"] = "Öffentliche Server";
-$a->strings["The listed sites allow public registration into the Red Matrix. All sites in the matrix are interlinked so membership on any of them conveys membership in the matrix as a whole. Some sites may require subscription or provide tiered service plans. The provider links <strong>may</strong> provide additional details."] = "Die hier aufgeführten Server erlauben Dir, einen Account in der Red-Matrix anzulegen. Alle Server der Matrix sind miteinander verbunden, so dass die Mitgliedschaft auf einem Server eine Verbindung zu beliebigen anderen Servern der Matrix ermöglicht. Es könnte sein, dass einige dieser Server kostenpflichtig sind oder abgestufte, je nach Umfang kostenpflichtige Mitgliedschaften anbieten. Auf den jeweiligen Seiten <strong>könnten</strong> nähere Details dazu stehen.";
-$a->strings["Site URL"] = "Server-URL";
-$a->strings["Access Type"] = "Zugangstyp";
-$a->strings["Registration Policy"] = "Registrierungsrichtlinien";
-$a->strings["Maximum daily site registrations exceeded. Please try again tomorrow."] = "Maximale Anzahl täglicher Neuanmeldungen erreicht. Bitte versuche es morgen noch einmal.";
-$a->strings["Please indicate acceptance of the Terms of Service. Registration failed."] = "Bitte stimme den Nutzungsbedingungen zu. Registrierung fehlgeschlagen.";
-$a->strings["Passwords do not match."] = "Passwörter stimmen nicht überein.";
-$a->strings["Registration successful. Please check your email for validation instructions."] = "Registrierung erfolgreich. Eine E-Mail mit weiteren Anweisungen wurde an Dich gesendet.";
-$a->strings["Your registration is pending approval by the site owner."] = "Deine Registrierung muss noch vom Betreiber der Seite freigegeben werden.";
-$a->strings["Your registration can not be processed."] = "Deine Registrierung konnte nicht verarbeitet werden.";
-$a->strings["Registration on this site/hub is by approval only."] = "Anmeldungen auf diesem Server erfordern Zustimmung durch den Administrator";
-$a->strings["<a href=\"pubsites\">Register at another affiliated site/hub</a>"] = "<a href=\"pubsites\">Registrierung auf einem anderen, angeschlossenen Server</a>";
-$a->strings["This site has exceeded the number of allowed daily account registrations. Please try again tomorrow."] = "Die maximale Anzahl täglicher Registrierungen auf diesem Server wurde überschritten. Bitte versuche es morgen noch einmal.";
-$a->strings["Terms of Service"] = "Nutzungsbedingungen";
-$a->strings["I accept the %s for this website"] = "Ich akzeptiere die %s für diese Webseite";
-$a->strings["I am over 13 years of age and accept the %s for this website"] = "Ich bin älter als 13 Jahre und akzeptiere die %s dieser Webseite";
-$a->strings["Membership on this site is by invitation only."] = "Mitgliedschaft auf dieser Seite ist nur nach vorheriger Einladung möglich.";
-$a->strings["Please enter your invitation code"] = "Bitte trage Deinen Einladungs-Code ein";
-$a->strings["Your email address"] = "Ihre E-Mail Adresse";
-$a->strings["Choose a password"] = "Passwort";
-$a->strings["Please re-enter your password"] = "Bitte gib Dein Passwort noch einmal ein";
-$a->strings["Please login."] = "Bitte melde dich an.";
-$a->strings["Remove This Channel"] = "Diesen Kanal löschen";
-$a->strings["This will completely remove this channel from the network. Once this has been done it is not recoverable."] = "Hiermit wird dieser Kanal komplett aus dem Netzwerk gelöscht. Einmal eingeleitet kann dieser Prozess nicht rückgängig gemacht werden.";
-$a->strings["Please enter your password for verification:"] = "Bitte gib zur Bestätigung Dein Passwort ein:";
-$a->strings["Remove this channel and all its clones from the network"] = "Lösche diesen Kanal und all seine Klone aus dem Netzwerk";
-$a->strings["By default only the instance of the channel located on this hub will be removed from the network"] = "Standardmäßig wird der Kanal nur auf diesem Server gelöscht, seine Klone verbleiben im Netzwerk";
-$a->strings["Remove Channel"] = "Kanal löschen";
-$a->strings["Page owner information could not be retrieved."] = "Informationen über den Besitzer der Seite konnten nicht gefunden werden.";
-$a->strings["Album not found."] = "Album nicht gefunden.";
-$a->strings["Delete Album"] = "Album löschen";
-$a->strings["Delete Photo"] = "Foto löschen";
-$a->strings["No photos selected"] = "Keine Fotos ausgewählt";
-$a->strings["Access to this item is restricted."] = "Der Zugriff auf dieses Foto ist eingeschränkt.";
-$a->strings["You have used %1$.2f Mbytes of %2$.2f Mbytes photo storage."] = "Du benutzt %1$.2f MBytes Deines %2$.2f MBytes großen Bilder-Speichers.";
-$a->strings["You have used %1$.2f Mbytes of photo storage."] = "Du verwendest %1$.2f MBytes Deines Foto-Speichers.";
-$a->strings["Upload Photos"] = "Fotos hochladen";
-$a->strings["New album name: "] = "Name des neuen Albums:";
-$a->strings["or existing album name: "] = "Oder bestehender Album-Name:";
-$a->strings["Do not show a status post for this upload"] = "Keine Statusnachricht für diesen Upload senden";
-$a->strings["Contact Photos"] = "Kontakt-Bilder";
-$a->strings["Edit Album"] = "Album bearbeiten";
-$a->strings["Show Newest First"] = "Zeige Neueste zuerst";
-$a->strings["Show Oldest First"] = "Zeige Älteste zuerst";
-$a->strings["View Photo"] = "Foto ansehen";
-$a->strings["Permission denied. Access to this item may be restricted."] = "Berechtigung verweigert. Der Zugriff ist wahrscheinlich eingeschränkt worden.";
-$a->strings["Photo not available"] = "Foto nicht verfügbar";
-$a->strings["Use as profile photo"] = "Als Profilfoto verwenden";
-$a->strings["View Full Size"] = "In voller Größe anzeigen";
-$a->strings["Edit photo"] = "Foto bearbeiten";
-$a->strings["Rotate CW (right)"] = "Drehen im UZS (rechts)";
-$a->strings["Rotate CCW (left)"] = "Drehen gegen UZS (links)";
-$a->strings["New album name"] = "Name des neuen Albums:";
-$a->strings["Caption"] = "Bildunterschrift";
-$a->strings["Add a Tag"] = "Schlagwort hinzufügen";
-$a->strings["Example: @bob, @Barbara_Jensen, @jim@example.com, #California, #camping"] = "Beispiel: @bob, @Barbara_Jensen, @jim@example.com, #California, #camping";
-$a->strings["In This Photo:"] = "Auf diesem Foto:";
-$a->strings["View Album"] = "Album ansehen";
-$a->strings["Recent Photos"] = "Neueste Fotos";
-$a->strings["Mood"] = "Laune";
-$a->strings["Set your current mood and tell your friends"] = "Wähle Deine aktuelle Stimmung und teile sie mit Deinen Freunden";
-$a->strings["sent you a private message"] = "eine private Nachricht schicken";
-$a->strings["added your channel"] = "hat deinen Kanal hinzugefügt";
-$a->strings["posted an event"] = "hat eine Veranstaltung veröffentlicht";
-$a->strings["Scheme Default"] = "Standard-Schema";
-$a->strings["silver"] = "silbern";
-$a->strings["Theme settings"] = "Theme-Einstellungen";
-$a->strings["Set scheme"] = "Schema";
-$a->strings["Navigation bar colour"] = "Farbe der Navigationsleiste";
-$a->strings["link colour"] = "Farbe der Links";
-$a->strings["Set font-colour for banner"] = "Farbe des Banners";
-$a->strings["Set the background colour"] = "Hintergrundfarbe";
-$a->strings["Set the background image"] = "Hintergrundbild";
-$a->strings["Set the background colour of items"] = "Hintergrundfarbe von Beiträgen";
-$a->strings["Set the opacity of items"] = "Deckkraft von Beiträgen";
-$a->strings["Set the basic colour for item icons"] = "Basisfarbe der Beitrags-Icons";
-$a->strings["Set the hover colour for item icons"] = "Farbe für Beitrags-Icons unter dem Mauszeiger";
-$a->strings["Set font-size for the entire application"] = "Schriftgröße für die ganze Applikation";
-$a->strings["Set font-size for posts and comments"] = "Schriftgröße für Beiträge und Kommentare";
-$a->strings["Set font-colour for posts and comments"] = "Schriftfarbe für Beiträge und Kommentare";
-$a->strings["Set radius of corners"] = "Ecken-Radius";
-$a->strings["Set shadow depth of photos"] = "Schattentiefe von Fotos";
-$a->strings["Set maximum width of conversation regions"] = "Maximalbreite der Unterhaltungsbereiche";
-$a->strings["Set minimum opacity of nav bar - to hide it"] = "Mindest-Deckkraft der Navigationsleiste ( - versteckt sie)";
-$a->strings["Set size of conversation author photo"] = "Größe der Avatare von Themenstartern";
-$a->strings["Set size of followup author photos"] = "Größe der Avatare von Kommentatoren";
-$a->strings["Sloppy photo albums"] = "Schräge Fotoalben";
-$a->strings["Are you a clean desk or a messy desk person?"] = "Bist Du jemand, der einen aufgeräumten Schreibtisch hat, oder eher einen chaotischen?";
+$a->strings["invalid target signature"] = "Ungültige Signatur des Ziels";
+$a->strings["App installed."] = "App installiert.";
+$a->strings["Malformed app."] = "Fehlerhafte App.";
+$a->strings["Embed code"] = "Code einbetten";
+$a->strings["Edit App"] = "App bearbeiten";
+$a->strings["Create App"] = "App erstellen";
+$a->strings["Name of app"] = "Name der App";
+$a->strings["Location (URL) of app"] = "Ort (URL) der App";
+$a->strings["Photo icon URL"] = "URL zum Icon";
+$a->strings["80 x 80 pixels - optional"] = "80 x 80 Pixel – optional";
+$a->strings["Version ID"] = "Versions-ID";
+$a->strings["Price of app"] = "Preis der App";
+$a->strings["Location (URL) to purchase app"] = "Ort (URL), um die App zu kaufen";
+$a->strings["Poll"] = "Umfrage";
+$a->strings["View Results"] = "Ergebnisse";
+$a->strings["Account removals are not allowed within 48 hours of changing the account password."] = "Das Löschen von Konten innerhalb 48 Stunden nachdem deren Passwort geändert wurde ist nicht erlaubt.";
+$a->strings["Remove This Account"] = "Dieses Konto löschen";
+$a->strings["This will completely remove this account including all its channels from the network. Once this has been done it is not recoverable."] = "Hiermit wird dieses Nutzerkonto einschließlich all seiner Kanäle komplett aus dem Netzwerk entfernt. Dieser Vorgang kann nicht rückgängig gemacht werden.";
+$a->strings["Remove this account, all its channels and all its channel clones from the network"] = "Dieses Konto, all seine Kanäle sowie alle Kanal-Klone aus dem Netzwerk löschen";
+$a->strings["By default only the instances of the channels located on this hub will be removed from the network"] = "Standardmäßig werden nur die Kanalklone auf diesem RedMatrix-Hub aus dem Netzwerk entfernt";
+$a->strings["No service class restrictions found."] = "Keine Dienstklassenbeschränkungen gefunden.";
$a->strings["Schema Default"] = "Standard-Schema";
$a->strings["Sans-Serif"] = "Sans-Serif";
$a->strings["Monospace"] = "Monospace";
+$a->strings["Theme settings"] = "Theme-Einstellungen";
+$a->strings["Set scheme"] = "Schema";
+$a->strings["Set font-size for posts and comments"] = "Schriftgröße für Beiträge und Kommentare";
$a->strings["Set font face"] = "Schriftart";
-$a->strings["Set iconset"] = "Icon-Set";
+$a->strings["Set iconset"] = "Iconset";
$a->strings["Set big shadow size, default 15px 15px 15px"] = "Ausmaß der großen Schatten (Default 15px 15px 15px)";
$a->strings["Set small shadow size, default 5px 5px 5px"] = "Ausmaß der kleinen Schatten (Default 5px 5px 5px)";
-$a->strings["Set shadow colour, default #000"] = "Farbe der Schatten (Default #000)";
+$a->strings["Set shadow color, default #000"] = "Farbe der Schatten (Default #000)";
$a->strings["Set radius size, default 5px"] = "Ecken-Radius (Default 5px)";
-$a->strings["Set line-height for posts and comments"] = "Zeilenhöhe für Beiträge und Kommentare";
+$a->strings["Set line-height for posts and comments"] = "Zeilenhöhe in Beiträgen und Kommentaren";
$a->strings["Set background image"] = "Hintergrundbild";
-$a->strings["Set background colour"] = "Hintergrundfarbe";
-$a->strings["Set section background image"] = "Hintergrundbild des mittleren Bereichs";
-$a->strings["Set section background colour"] = "Hintergrundfarbe des mittleren Bereichs";
-$a->strings["Set colour of items - use hex"] = "Farbe von Beiträgen (HEX)";
-$a->strings["Set colour of links - use hex"] = "Farbe von Links (HEX)";
-$a->strings["Set max-width for items. Default 400px"] = "Maximalbreite von Beiträgen (Default 400px)";
-$a->strings["Set min-width for items. Default 240px"] = "Minimalbreite von Beiträgen (Default 240px)";
-$a->strings["Set the generic content wrapper width. Default 48%"] = "Breite des „generic content wrapper“ (Default 48%)";
-$a->strings["Set colour of fonts - use hex"] = "Schriftfarbe (HEX)";
+$a->strings["Set background attachment"] = "Hintergrunddatei";
+$a->strings["Set background color"] = "Hintergrundfarbe";
+$a->strings["Set section background image"] = "Hintergrundbild für die Section";
+$a->strings["Set section background color"] = "Hintergrundfarbe für die Section";
+$a->strings["Set color of items - use hex"] = "Farbe für Beiträge – Hex benutzen";
+$a->strings["Set color of links - use hex"] = "Farbe für Links – Hex benutzen";
+$a->strings["Set max-width for items. Default 400px"] = "Maximale Breite von Beiträgen (Default 400px)";
+$a->strings["Set min-width for items. Default 240px"] = "Minimale Breite von Beiträgen (Default 240px)";
+$a->strings["Set the generic content wrapper width. Default 48%"] = "Breite des \"generic content wrapper\" (Default 48%)";
+$a->strings["Set color of fonts - use hex"] = "Schriftfarbe – Hex benutzen";
$a->strings["Set background-size element"] = "Größe des Hintergrund-Elements";
-$a->strings["Item opacity"] = "Deckkraft von Beiträgen (z.B. 0.8)";
+$a->strings["Item opacity"] = "Deckkraft der Beiträge";
$a->strings["Display post previews only"] = "Nur Beitragsvorschau anzeigen";
$a->strings["Display side bar on channel page"] = "Zeige die Seitenleiste auf der Kanal-Seite";
$a->strings["Colour of the navigation bar"] = "Farbe der Navigationsleiste";
$a->strings["Item float"] = "Beitragsfluss";
-$a->strings["Left offset of the section element"] = "Linker Rand des mittleren Bereichs";
-$a->strings["Right offset of the section element"] = "Rechter Rand des mittleren Bereichs";
-$a->strings["Section width"] = "Breite des mittleren Bereichs";
-$a->strings["Left offset of the aside"] = "Linker Rand des seitlichen Bereichs";
-$a->strings["Right offset of the aside element"] = "Rechter Rand des seitlichen Bereichs";
-$a->strings["None"] = "Keine";
+$a->strings["Left offset of the section element"] = "Linker Rand des Section Elements";
+$a->strings["Right offset of the section element"] = "Rechter Rand des Section Elements";
+$a->strings["Section width"] = "Breite der Section";
+$a->strings["Left offset of the aside"] = "Linker Rand des Aside-Elements";
+$a->strings["Right offset of the aside element"] = "Rechter Rand des Aside-Elements";
+$a->strings["None"] = "Kein";
$a->strings["Header image"] = "Titelbild";
$a->strings["Header image only on profile pages"] = "Titelbild nur auf Profil-Seiten anzeigen";
+$a->strings["Light (Red Matrix default)"] = "Hell (RedMatrix-Voreinstellung)";
+$a->strings["Narrow navbar"] = "Schmale Navigationsleiste";
+$a->strings["Navigation bar background color"] = "Hintergrundfarbe der Navigationsleiste";
+$a->strings["Navigation bar gradient top color"] = "Farbverlauf der Navigationsleiste: Farbe oben";
+$a->strings["Navigation bar gradient bottom color"] = "Farbverlauf der Navigationsleiste: Farbe unten";
+$a->strings["Navigation active button gradient top color"] = "Navigations-Button aktiv: Farbe für Farbverlauf oben";
+$a->strings["Navigation active button gradient bottom color"] = "Navigations-Button aktiv: Farbe für Farbverlauf unten";
+$a->strings["Navigation bar border color "] = "Farbe für den Rand der Navigationsleiste";
+$a->strings["Navigation bar icon color "] = "Farbe für die Icons der Navigationsleiste";
+$a->strings["Navigation bar active icon color "] = "Farbe für aktive Icons der Navigationsleiste";
+$a->strings["link color"] = "Farbe für Links";
+$a->strings["Set font-color for banner"] = "Farbe der Schrift des Banners";
+$a->strings["Set the background color"] = "Hintergrundfarbe";
+$a->strings["Set the background image"] = "Hintergrundbild";
+$a->strings["Set the background color of items"] = "Hintergrundfarbe für Beiträge";
+$a->strings["Set the background color of comments"] = "Hintergrundfarbe für Kommentare";
+$a->strings["Set the border color of comments"] = "Farbe des Randes von Kommentaren";
+$a->strings["Set the indent for comments"] = "Einzug für Kommentare";
+$a->strings["Set the basic color for item icons"] = "Grundfarbe für Beitrags-Icons";
+$a->strings["Set the hover color for item icons"] = "Farbe für Beitrags-Icons unter dem Mauszeiger";
+$a->strings["Set font-size for the entire application"] = "Schriftgröße für die ganze Applikation";
+$a->strings["Set font-color for posts and comments"] = "Schriftfarbe für Posts und Kommentare";
+$a->strings["Set radius of corners"] = "Ecken-Radius";
+$a->strings["Set shadow depth of photos"] = "Schattentiefe von Fotos";
+$a->strings["Set maximum width of conversation regions"] = "Maximalbreite der Unterhaltungsbereiche";
+$a->strings["Center conversation regions"] = "Konversationsbereich zentrieren";
+$a->strings["Set minimum opacity of nav bar - to hide it"] = "Mindest-Deckkraft der Navigationsleiste ( - versteckt sie)";
+$a->strings["Set size of conversation author photo"] = "Größe der Avatare von Themenstartern";
+$a->strings["Set size of followup author photos"] = "Größe der Avatare von Kommentatoren";
+$a->strings["Sloppy photo albums"] = "Schräge Fotoalben";
+$a->strings["Are you a clean desk or a messy desk person?"] = "Bist Du jemand, der einen aufgeräumten Schreibtisch hat, oder eher einen chaotischen?";
$a->strings["Update %s failed. See error logs."] = "Aktualisierung %s fehlgeschlagen. Details in den Fehlerprotokollen.";
$a->strings["Update Error at %s"] = "Aktualisierungsfehler auf %s";
$a->strings["Create an account to access services and applications within the Red Matrix"] = "Erstelle einen Account, um Anwendungen und Dienste innerhalb der Red-Matrix verwenden zu können.";
diff --git a/view/de/update_fail_eml.tpl b/view/de/update_fail_eml.tpl
index a7df8fc2f..ca1a4985d 100644
--- a/view/de/update_fail_eml.tpl
+++ b/view/de/update_fail_eml.tpl
@@ -1,13 +1,13 @@
-Hey,
-I'm the web server at {{$sitename}};
+Hallo,
+ich bin der Webserver für {{$sitename}};
-The Red Matrix developers released update {{$update}} recently,
-but when I tried to install it, something went terribly wrong.
-This needs to be fixed soon and it requires human intervention.
-Please contact a Red developer if you can not figure out how to
-fix it on your own. My database might be invalid.
+Die RedMatrix-Entwickler haben kürzlich das Update {{$update}} veröffentlicht,
+aber als ich versuchte, es zu installieren, ging irgendwas furchtbar schief.
+Das muss so bald als möglich gelöst werden und erfordert einen manuellen Eingriff.
+Bitte kontaktiere einen Red-Entwickler, wenn Du nicht weißt, wie Du das Problem
+selbst beheben kannst. Meine Datenbank ist eventuell ungültig.
-The error message is '{{$error}}'.
+Die Fehlermeldung ist '{{$error}}'.
-Apologies for the inconvenience,
- your web server at {{$siteurl}} \ No newline at end of file
+Bitte entschuldige die Unannehmlichkeit,
+ Dein Web-Server auf {{$siteurl}} \ No newline at end of file
diff --git a/view/de/wall_received_eml.tpl b/view/de/wall_received_eml.tpl
deleted file mode 100644
index b0ca45b24..000000000
--- a/view/de/wall_received_eml.tpl
+++ /dev/null
@@ -1,18 +0,0 @@
-
-Hallo $username,
-
-'$from' hat etwas auf deiner Profilwand gepostet.
-
------
-$body
------
-
-Bitte melde dich unter $siteurl an um den Eintrag anzusehen oder zu löschen.
-
-$display
-
-Besten Dank!
- $sitename Administrator
-
-
-
diff --git a/view/de/wall_received_html_body_eml.tpl b/view/de/wall_received_html_body_eml.tpl
deleted file mode 100644
index 407e4fdce..000000000
--- a/view/de/wall_received_html_body_eml.tpl
+++ /dev/null
@@ -1,24 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional //EN">
-<html>
-<head>
- <title>Friendica Nachricht</title>
- <meta http-equiv="Content-Type" content="text/html;charset=utf-8" />
-</head>
-<body>
-<table style="border:1px solid #ccc">
- <tbody>
- <tr><td colspan="2" style="background:#084769; color:#FFFFFF; font-weight:bold; font-family:'lucida grande', tahoma, verdana,arial, sans-serif; padding: 4px 8px; vertical-align: middle; font-size:16px; letter-spacing: -0.03em; text-align: left;"><img style="width:32px;height:32px; float:left;" src='$siteurl/images/friendica-32.png'><div style="padding:7px; margin-left: 5px; float:left; font-size:18px;letter-spacing:1px;">Friendica</div><div style="clear: both;"></div></td></tr>
-
- <tr><td style="padding-top:22px;" colspan="2">$from hat etwas auf deine Pinnwand gepostet.</td></tr>
-
-
- <tr><td style="padding-left:22px;padding-top:22px;width:60px;" valign="top" rowspan=3><a href="$url"><img style="border:0px;width:48px;height:48px;" src="$thumb"></a></td>
- <td style="padding-top:22px;"><a href="$url">$from</a></td></tr>
- <tr><td style="padding-right:22px;">$body</td></tr>
- <tr><td style="padding-top:11px;padding-bottom:11px;" colspan="2">Bitte melde dich auf <a href="$siteurl">$siteurl</a> an um <a href="$display">den Eintrag anzusehen oder ihn zu l&ouml;schen</a>.</td></tr>
- <tr><td></td><td>Beste Gr&uuml;&szlig;e,</td></tr>
- <tr><td></td><td>$sitename Administrator</td></tr>
- </tbody>
-</table>
-</body>
-</html>
diff --git a/view/de/wall_received_text_body_eml.tpl b/view/de/wall_received_text_body_eml.tpl
deleted file mode 100644
index c627b0c7e..000000000
--- a/view/de/wall_received_text_body_eml.tpl
+++ /dev/null
@@ -1,18 +0,0 @@
-
-Hallo $username,
-
- '$from' hat etwas auf deiner Pinnwand gepostet.
-
------
-$body
------
-
-Bitte melde dich auf $siteurl an um den Beitrag anzusehen oder ihn zu löschen:
-
-$display
-
-Besten Dank!
- $sitename Administrator
-
-
-
diff --git a/view/en-au/htconfig.tpl b/view/en-au/htconfig.tpl
new file mode 100644
index 000000000..9377472bd
--- /dev/null
+++ b/view/en-au/htconfig.tpl
@@ -0,0 +1,98 @@
+<?php
+
+// Set the following for your MySQL installation
+// Copy or rename this file to .htconfig.php
+
+$db_host = '{{$dbhost}}';
+$db_port = '{{$dbport}}';
+$db_user = '{{$dbuser}}';
+$db_pass = '{{$dbpass}}';
+$db_data = '{{$dbdata}}';
+
+/*
+ * Notice: Many of the following settings will be available in the admin panel
+ * after a successful site install. Once they are set in the admin panel, they
+ * are stored in the DB - and the DB setting will over-ride any corresponding
+ * setting in this file
+ *
+ * The command-line tool util/config is able to query and set the DB items
+ * directly if for some reason the admin panel is not available and a system
+ * setting requires modification.
+ *
+ */
+
+
+// Choose a legal default timezone. If you are unsure, use "America/Los_Angeles".
+// It can be changed later and only applies to timestamps for anonymous viewers.
+
+$default_timezone = '{{$timezone}}';
+
+// What is your site name?
+
+$a->config['system']['baseurl'] = '{{$siteurl}}';
+$a->config['system']['sitename'] = "Red Matrix";
+$a->config['system']['location_hash'] = '{{$site_id}}';
+
+
+// Your choices are REGISTER_OPEN, REGISTER_APPROVE, or REGISTER_CLOSED.
+// Be certain to create your own personal account before setting
+// REGISTER_CLOSED. 'register_text' (if set) will be displayed prominently on
+// the registration page. REGISTER_APPROVE requires you set 'admin_email'
+// to the email address of an already registered person who can authorise
+// and/or approve/deny the request.
+
+$a->config['system']['register_policy'] = REGISTER_OPEN;
+$a->config['system']['register_text'] = '';
+$a->config['system']['admin_email'] = '{{$adminmail}}';
+
+
+// Site access restrictions. By default we will create private sites.
+// Your choices are ACCESS_PRIVATE, ACCESS_PAID, ACCESS_TIERED, and ACCESS_FREE.
+// If you leave REGISTER_OPEN above, anybody may register on your
+// site, however your site will not be listed anywhere as an open
+// registration hub. We will use the system access policy (below)
+// to determine whether or not to list your site in the directory
+// as an open hub where anybody may create accounts. Your choice of
+// paid, tiered, or free determines how these listings will be presented.
+
+
+$a->config['system']['access_policy'] = ACCESS_PRIVATE;
+
+// If you operate a public site, you might wish that people are directed
+// to a "sellpage" where you can describe for features or policies or service plans in depth.
+// This must be an absolute URL beginning with http:// or https:// .
+
+$a->config['system']['sellpage'] = '';
+
+// Maximum size of an imported message, 0 is unlimited
+// FIXME - NOT currently implemented.
+
+$a->config['system']['max_import_size'] = 200000;
+
+// Location of PHP command line processor
+
+$a->config['system']['php_path'] = '{{$phpath}}';
+
+// Configure how we communicate with directory servers.
+// DIRECTORY_MODE_NORMAL = directory client, we will find a directory
+// DIRECTORY_MODE_SECONDARY = caching directory or mirror
+// DIRECTORY_MODE_PRIMARY = main directory server
+// DIRECTORY_MODE_STANDALONE = "off the grid" or private directory services
+
+$a->config['system']['directory_mode'] = DIRECTORY_MODE_NORMAL;
+
+// default system theme
+
+$a->config['system']['theme'] = 'redbasic';
+
+
+// PHP error logging setup
+// Before doing this ensure that the webserver has permission
+// to create and write to php.out in the top level Red directory,
+// or change the name (below) to a file/path where this is allowed.
+
+// Uncomment the following 4 lines to turn on PHP error logging.
+//error_reporting(E_ERROR | E_WARNING | E_PARSE );
+//ini_set('error_log','php.out');
+//ini_set('log_errors','1');
+//ini_set('display_errors', '0');
diff --git a/view/en-au/lostpass_eml.tpl b/view/en-au/lostpass_eml.tpl
new file mode 100644
index 000000000..3b79d2791
--- /dev/null
+++ b/view/en-au/lostpass_eml.tpl
@@ -0,0 +1,32 @@
+
+Dear {{$username}},
+ A request was recently received at {{$sitename}} to reset your account
+password. In order to confirm this request, please select the verification link
+below or paste it into your web browser address bar.
+
+If you did NOT request this change, please DO NOT follow the link
+provided and ignore and/or delete this email.
+
+Your password will not be changed unless we can verify that you
+issued this request.
+
+Follow this link to verify your identity:
+
+{{$reset_link}}
+
+You will then receive a follow-up message containing the new password.
+
+You may change that password from your account settings page after logging in.
+
+The login details are as follows:
+
+Site Location: {{$siteurl}}
+Login Name: {{$email}}
+
+
+
+
+Sincerely,
+ {{$sitename}} Administrator
+
+
diff --git a/view/en-au/passchanged_eml.tpl b/view/en-au/passchanged_eml.tpl
new file mode 100644
index 000000000..0d94be3c2
--- /dev/null
+++ b/view/en-au/passchanged_eml.tpl
@@ -0,0 +1,20 @@
+
+Dear {{$username}},
+ Your password has been changed as requested. Please retain this
+information for your records (or change your password immediately to
+something that you will remember).
+
+
+Your login details are as follows:
+
+Site Location: {{$siteurl}}
+Login Name: {{$email}}
+Password: {{$new_password}}
+
+You may change that password from your account settings page after logging in.
+
+
+Sincerely,
+ {{$sitename}} Administrator
+
+
diff --git a/view/en-au/register_open_eml.tpl b/view/en-au/register_open_eml.tpl
new file mode 100644
index 000000000..4b397201c
--- /dev/null
+++ b/view/en-au/register_open_eml.tpl
@@ -0,0 +1,19 @@
+
+An account has been created at {{$sitename}} for this email address.
+The login details are as follows:
+
+Site Location: {{$siteurl}}
+Login: {{$email}}
+Password: (the password which was provided during registration)
+
+If this account was created without your knowledge and is not desired, you may
+visit this site and reset the password. This will allow you to remove the
+account from the links on the Settings page, and we
+apologise for any inconvenience.
+
+Thank you and welcome to {{$sitename}}.
+
+Sincerely,
+ {{$sitename}} Administrator
+
+
diff --git a/view/en-au/register_verify_eml.tpl b/view/en-au/register_verify_eml.tpl
new file mode 100644
index 000000000..85d9a12d3
--- /dev/null
+++ b/view/en-au/register_verify_eml.tpl
@@ -0,0 +1,25 @@
+
+A new user registration request was received at {{$sitename}} which requires
+your approval.
+
+
+The login details are as follows:
+
+Site Location: {{$siteurl}}
+Login Name: {{$email}}
+IP Address: {{$details}}
+
+To approve this request please visit the following link:
+
+
+{{$siteurl}}/regmod/allow/{{$hash}}
+
+
+To deny the request and remove the account, please visit:
+
+
+{{$siteurl}}/regmod/deny/{{$hash}}
+
+
+Thank you.
+
diff --git a/view/en-au/register_verify_member.tpl b/view/en-au/register_verify_member.tpl
new file mode 100644
index 000000000..d1e34be67
--- /dev/null
+++ b/view/en-au/register_verify_member.tpl
@@ -0,0 +1,25 @@
+
+Thank you for registering at {{$sitename}}.
+
+Your login details are as follows:
+
+Site Location: {{$siteurl}}
+Login Name: {{$email}}
+
+Login with the password you chose at registration.
+
+We need to verify your email address in order to give you full access.
+
+If you registered this account, please visit the following link:
+
+{{$siteurl}}/regver/allow/{{$hash}}
+
+
+To deny the request and remove the account, please visit:
+
+
+{{$siteurl}}/regver/deny/{{$hash}}
+
+
+Thank you.
+
diff --git a/view/en-au/strings.php b/view/en-au/strings.php
new file mode 100644
index 000000000..db383f50f
--- /dev/null
+++ b/view/en-au/strings.php
@@ -0,0 +1,5 @@
+<?php
+require_once('view/en-gb/strings.php');
+$a->strings['Welcome %s. Remote authentication successful.'] = "G'day %s. Remote authentication successful";
+
+
diff --git a/view/en-au/update_fail_eml.tpl b/view/en-au/update_fail_eml.tpl
new file mode 100644
index 000000000..a7df8fc2f
--- /dev/null
+++ b/view/en-au/update_fail_eml.tpl
@@ -0,0 +1,13 @@
+Hey,
+I'm the web server at {{$sitename}};
+
+The Red Matrix developers released update {{$update}} recently,
+but when I tried to install it, something went terribly wrong.
+This needs to be fixed soon and it requires human intervention.
+Please contact a Red developer if you can not figure out how to
+fix it on your own. My database might be invalid.
+
+The error message is '{{$error}}'.
+
+Apologies for the inconvenience,
+ your web server at {{$siteurl}} \ No newline at end of file
diff --git a/view/en-gb/htconfig.tpl b/view/en-gb/htconfig.tpl
new file mode 100644
index 000000000..9377472bd
--- /dev/null
+++ b/view/en-gb/htconfig.tpl
@@ -0,0 +1,98 @@
+<?php
+
+// Set the following for your MySQL installation
+// Copy or rename this file to .htconfig.php
+
+$db_host = '{{$dbhost}}';
+$db_port = '{{$dbport}}';
+$db_user = '{{$dbuser}}';
+$db_pass = '{{$dbpass}}';
+$db_data = '{{$dbdata}}';
+
+/*
+ * Notice: Many of the following settings will be available in the admin panel
+ * after a successful site install. Once they are set in the admin panel, they
+ * are stored in the DB - and the DB setting will over-ride any corresponding
+ * setting in this file
+ *
+ * The command-line tool util/config is able to query and set the DB items
+ * directly if for some reason the admin panel is not available and a system
+ * setting requires modification.
+ *
+ */
+
+
+// Choose a legal default timezone. If you are unsure, use "America/Los_Angeles".
+// It can be changed later and only applies to timestamps for anonymous viewers.
+
+$default_timezone = '{{$timezone}}';
+
+// What is your site name?
+
+$a->config['system']['baseurl'] = '{{$siteurl}}';
+$a->config['system']['sitename'] = "Red Matrix";
+$a->config['system']['location_hash'] = '{{$site_id}}';
+
+
+// Your choices are REGISTER_OPEN, REGISTER_APPROVE, or REGISTER_CLOSED.
+// Be certain to create your own personal account before setting
+// REGISTER_CLOSED. 'register_text' (if set) will be displayed prominently on
+// the registration page. REGISTER_APPROVE requires you set 'admin_email'
+// to the email address of an already registered person who can authorise
+// and/or approve/deny the request.
+
+$a->config['system']['register_policy'] = REGISTER_OPEN;
+$a->config['system']['register_text'] = '';
+$a->config['system']['admin_email'] = '{{$adminmail}}';
+
+
+// Site access restrictions. By default we will create private sites.
+// Your choices are ACCESS_PRIVATE, ACCESS_PAID, ACCESS_TIERED, and ACCESS_FREE.
+// If you leave REGISTER_OPEN above, anybody may register on your
+// site, however your site will not be listed anywhere as an open
+// registration hub. We will use the system access policy (below)
+// to determine whether or not to list your site in the directory
+// as an open hub where anybody may create accounts. Your choice of
+// paid, tiered, or free determines how these listings will be presented.
+
+
+$a->config['system']['access_policy'] = ACCESS_PRIVATE;
+
+// If you operate a public site, you might wish that people are directed
+// to a "sellpage" where you can describe for features or policies or service plans in depth.
+// This must be an absolute URL beginning with http:// or https:// .
+
+$a->config['system']['sellpage'] = '';
+
+// Maximum size of an imported message, 0 is unlimited
+// FIXME - NOT currently implemented.
+
+$a->config['system']['max_import_size'] = 200000;
+
+// Location of PHP command line processor
+
+$a->config['system']['php_path'] = '{{$phpath}}';
+
+// Configure how we communicate with directory servers.
+// DIRECTORY_MODE_NORMAL = directory client, we will find a directory
+// DIRECTORY_MODE_SECONDARY = caching directory or mirror
+// DIRECTORY_MODE_PRIMARY = main directory server
+// DIRECTORY_MODE_STANDALONE = "off the grid" or private directory services
+
+$a->config['system']['directory_mode'] = DIRECTORY_MODE_NORMAL;
+
+// default system theme
+
+$a->config['system']['theme'] = 'redbasic';
+
+
+// PHP error logging setup
+// Before doing this ensure that the webserver has permission
+// to create and write to php.out in the top level Red directory,
+// or change the name (below) to a file/path where this is allowed.
+
+// Uncomment the following 4 lines to turn on PHP error logging.
+//error_reporting(E_ERROR | E_WARNING | E_PARSE );
+//ini_set('error_log','php.out');
+//ini_set('log_errors','1');
+//ini_set('display_errors', '0');
diff --git a/view/en-gb/lostpass_eml.tpl b/view/en-gb/lostpass_eml.tpl
new file mode 100644
index 000000000..3b79d2791
--- /dev/null
+++ b/view/en-gb/lostpass_eml.tpl
@@ -0,0 +1,32 @@
+
+Dear {{$username}},
+ A request was recently received at {{$sitename}} to reset your account
+password. In order to confirm this request, please select the verification link
+below or paste it into your web browser address bar.
+
+If you did NOT request this change, please DO NOT follow the link
+provided and ignore and/or delete this email.
+
+Your password will not be changed unless we can verify that you
+issued this request.
+
+Follow this link to verify your identity:
+
+{{$reset_link}}
+
+You will then receive a follow-up message containing the new password.
+
+You may change that password from your account settings page after logging in.
+
+The login details are as follows:
+
+Site Location: {{$siteurl}}
+Login Name: {{$email}}
+
+
+
+
+Sincerely,
+ {{$sitename}} Administrator
+
+
diff --git a/view/en-gb/passchanged_eml.tpl b/view/en-gb/passchanged_eml.tpl
new file mode 100644
index 000000000..0d94be3c2
--- /dev/null
+++ b/view/en-gb/passchanged_eml.tpl
@@ -0,0 +1,20 @@
+
+Dear {{$username}},
+ Your password has been changed as requested. Please retain this
+information for your records (or change your password immediately to
+something that you will remember).
+
+
+Your login details are as follows:
+
+Site Location: {{$siteurl}}
+Login Name: {{$email}}
+Password: {{$new_password}}
+
+You may change that password from your account settings page after logging in.
+
+
+Sincerely,
+ {{$sitename}} Administrator
+
+
diff --git a/view/en-gb/register_open_eml.tpl b/view/en-gb/register_open_eml.tpl
new file mode 100644
index 000000000..4b397201c
--- /dev/null
+++ b/view/en-gb/register_open_eml.tpl
@@ -0,0 +1,19 @@
+
+An account has been created at {{$sitename}} for this email address.
+The login details are as follows:
+
+Site Location: {{$siteurl}}
+Login: {{$email}}
+Password: (the password which was provided during registration)
+
+If this account was created without your knowledge and is not desired, you may
+visit this site and reset the password. This will allow you to remove the
+account from the links on the Settings page, and we
+apologise for any inconvenience.
+
+Thank you and welcome to {{$sitename}}.
+
+Sincerely,
+ {{$sitename}} Administrator
+
+
diff --git a/view/en-gb/register_verify_eml.tpl b/view/en-gb/register_verify_eml.tpl
new file mode 100644
index 000000000..85d9a12d3
--- /dev/null
+++ b/view/en-gb/register_verify_eml.tpl
@@ -0,0 +1,25 @@
+
+A new user registration request was received at {{$sitename}} which requires
+your approval.
+
+
+The login details are as follows:
+
+Site Location: {{$siteurl}}
+Login Name: {{$email}}
+IP Address: {{$details}}
+
+To approve this request please visit the following link:
+
+
+{{$siteurl}}/regmod/allow/{{$hash}}
+
+
+To deny the request and remove the account, please visit:
+
+
+{{$siteurl}}/regmod/deny/{{$hash}}
+
+
+Thank you.
+
diff --git a/view/en-gb/register_verify_member.tpl b/view/en-gb/register_verify_member.tpl
new file mode 100644
index 000000000..d1e34be67
--- /dev/null
+++ b/view/en-gb/register_verify_member.tpl
@@ -0,0 +1,25 @@
+
+Thank you for registering at {{$sitename}}.
+
+Your login details are as follows:
+
+Site Location: {{$siteurl}}
+Login Name: {{$email}}
+
+Login with the password you chose at registration.
+
+We need to verify your email address in order to give you full access.
+
+If you registered this account, please visit the following link:
+
+{{$siteurl}}/regver/allow/{{$hash}}
+
+
+To deny the request and remove the account, please visit:
+
+
+{{$siteurl}}/regver/deny/{{$hash}}
+
+
+Thank you.
+
diff --git a/view/en-gb/strings.php b/view/en-gb/strings.php
new file mode 100644
index 000000000..a95915844
--- /dev/null
+++ b/view/en-gb/strings.php
@@ -0,0 +1,31 @@
+<?php
+$a->strings["Set shadow color, default #000"] = "Set shadow colour, default #000";
+$a->strings["Set background color"] = "Set background colour";
+$a->strings["Set section background color"] = "Set section background colour";
+$a->strings["Set color of items - use hex"] = "Set colour of items - use hex";
+$a->strings["Set color of links - use hex"] = "Set colour of links - use hex";
+$a->strings["Set color of fonts - use hex"] = "Set colour of fonts - use hex";
+$a->strings["Navigation bar background color"] = "Navigation bar background colour";
+$a->strings["Navigation bar gradient top color"] = "Navigation bar gradient top colour";
+$a->strings["Navigation bar gradient bottom color"] = "Navigation bar gradient bottom colour";
+$a->strings["Navigation active button gradient top color"] = "Navigation active button gradient top colour";
+$a->strings["Navigation active button gradient bottom color"] = "Navigation active button gradient bottom colour";
+$a->strings["Navigation bar border color "] = "Navigation bar border colour ";
+$a->strings["Navigation bar icon color "] = "Navigation bar icon colour ";
+$a->strings["Navigation bar active icon color "] = "Navigation bar active icon colour ";
+$a->strings["link color"] = "link colour";
+$a->strings["Set font-color for banner"] = "Set font-colour for banner";
+$a->strings["Set the background color"] = "Set the background colour";
+$a->strings["Set the background color of items"] = "Set the background colour of items";
+$a->strings["Set the background color of comments"] = "Set the background colour of comments";
+$a->strings["Set the border color of comments"] = "Set the border colour of comments";
+$a->strings["Set the basic color for item icons"] = "Set the basic colour for item icons";
+$a->strings["Set the hover color for item icons"] = "Set the hover colour for item icons";
+$a->strings["Set font-color for posts and comments"] = "Set font-colour for posts and comments";
+$a->strings["Authorize application connection"] = "Authorise application connection";
+$a->strings["Do you want to authorize this application to access your posts and contacts, and/or create new posts for you?"] = "Do you want to authorise this application to access your posts and contacts, and/or create new posts for you?";
+$a->strings["If your certificate is not recognized, members of other sites (who may themselves have valid certificates) will get a warning message on their own site complaining about security issues."] = "If your certificate is not recognised, members of other sites (who may themselves have valid certificates) will get a warning message on their own site complaining about security issues.";
+$a->strings["This is a hub of the Red Matrix - a global cooperative network of decentralized privacy enhanced websites."] = "This is a hub of the Red Matrix - a global cooperative network of decentralised privacy enhanced websites.";
+$a->strings["You are cordially invited to join me and some other close friends on the Red Matrix - a revolutionary new decentralized communication and information tool."] = "You are cordially invited to join me and some other close friends on the Red Matrix - a revolutionary new decentralised communication and information tool.";
+$a->strings["l F d, Y \\@ g:i A"] = "l j F, Y \\@ G:i";
+$a->strings["D, d M Y - g:i A"] = "D, d M Y - G:i";
diff --git a/view/en-gb/update_fail_eml.tpl b/view/en-gb/update_fail_eml.tpl
new file mode 100644
index 000000000..a7df8fc2f
--- /dev/null
+++ b/view/en-gb/update_fail_eml.tpl
@@ -0,0 +1,13 @@
+Hey,
+I'm the web server at {{$sitename}};
+
+The Red Matrix developers released update {{$update}} recently,
+but when I tried to install it, something went terribly wrong.
+This needs to be fixed soon and it requires human intervention.
+Please contact a Red developer if you can not figure out how to
+fix it on your own. My database might be invalid.
+
+The error message is '{{$error}}'.
+
+Apologies for the inconvenience,
+ your web server at {{$siteurl}} \ No newline at end of file
diff --git a/view/en/follow_notify_eml.tpl b/view/en/follow_notify_eml.tpl
deleted file mode 100644
index ba07b19da..000000000
--- a/view/en/follow_notify_eml.tpl
+++ /dev/null
@@ -1,14 +0,0 @@
-
-Dear {{$myname}},
-
-You have a new follower at {{$sitename}} - '{{$requestor}}'.
-
-You may visit their profile at {{$url}}.
-
-Please login to your site to approve or ignore/cancel the request.
-
-{{$siteurl}}
-
-Regards,
-
- {{$sitename}} administrator
diff --git a/view/en/friend_complete_eml.tpl b/view/en/friend_complete_eml.tpl
deleted file mode 100644
index 1c647b994..000000000
--- a/view/en/friend_complete_eml.tpl
+++ /dev/null
@@ -1,22 +0,0 @@
-
-Dear {{$username}},
-
- Great news... '{{$fn}}' at '{{$dfrn_url}}' has accepted
-your connection request at '{{$sitename}}'.
-
-You are now mutual friends and may exchange status updates, photos, and email
-without restriction.
-
-Please visit your 'Connnections' page at {{$sitename}} if you wish to make
-any changes to this relationship.
-
-{{$siteurl}}
-
-[For instance, you may create a separate profile with information that is not
-available to the general public - and assign viewing rights to '{{$fn}}'].
-
-Sincerely,
-
- {{$sitename}} Administrator
-
-
diff --git a/view/en/htconfig.tpl b/view/en/htconfig.tpl
index 9377472bd..d06e5da49 100644
--- a/view/en/htconfig.tpl
+++ b/view/en/htconfig.tpl
@@ -1,6 +1,6 @@
<?php
-// Set the following for your MySQL installation
+// Set the following for your database installation
// Copy or rename this file to .htconfig.php
$db_host = '{{$dbhost}}';
@@ -8,6 +8,7 @@ $db_port = '{{$dbport}}';
$db_user = '{{$dbuser}}';
$db_pass = '{{$dbpass}}';
$db_data = '{{$dbdata}}';
+$db_type = '{{$dbtype}}'; // an integer. 0 or unset for mysql, 1 for postgres
/*
* Notice: Many of the following settings will be available in the admin panel
@@ -45,6 +46,11 @@ $a->config['system']['register_policy'] = REGISTER_OPEN;
$a->config['system']['register_text'] = '';
$a->config['system']['admin_email'] = '{{$adminmail}}';
+// Recommend you leave this set to 1. Set to 0 to let people register without
+// proving they own the email address they register with.
+
+$a->config['system']['verify_email'] = 1;
+
// Site access restrictions. By default we will create private sites.
// Your choices are ACCESS_PRIVATE, ACCESS_PAID, ACCESS_TIERED, and ACCESS_FREE.
diff --git a/view/en/intro_complete_eml.tpl b/view/en/intro_complete_eml.tpl
deleted file mode 100644
index 2c2428d68..000000000
--- a/view/en/intro_complete_eml.tpl
+++ /dev/null
@@ -1,22 +0,0 @@
-
-Dear {{$username}},
-
- '{{$fn}}' at '{{$dfrn_url}}' has accepted
-your connection request at '{{$sitename}}'.
-
- '{{$fn}}' has chosen to accept you a "fan", which restricts
-some forms of communication - such as private messaging and some profile
-interactions. If this is a celebrity or community page, these settings were
-applied automatically.
-
- '{{$fn}}' may choose to extend this into a two-way or more permissive
-relationship in the future.
-
- You will start receiving public status updates from '{{$fn}}',
-which will appear on your 'Matrix' page at
-
-{{$siteurl}}
-
-Sincerely,
-
- {{$sitename}} Administrator
diff --git a/view/en/request_notify_eml.tpl b/view/en/request_notify_eml.tpl
deleted file mode 100644
index d01b8ff27..000000000
--- a/view/en/request_notify_eml.tpl
+++ /dev/null
@@ -1,17 +0,0 @@
-
-Dear {{$myname}},
-
-You have just received a connection request at {{$sitename}}
-
-from '{{$requestor}}'.
-
-You may visit their profile at {{$url}}.
-
-Please login to your site to view the complete introduction
-and approve or ignore/cancel the request.
-
-{{$siteurl}}
-
-Regards,
-
- {{$sitename}} administrator
diff --git a/view/eo/follow_notify_eml.tpl b/view/eo/follow_notify_eml.tpl
deleted file mode 100644
index ba07b19da..000000000
--- a/view/eo/follow_notify_eml.tpl
+++ /dev/null
@@ -1,14 +0,0 @@
-
-Dear {{$myname}},
-
-You have a new follower at {{$sitename}} - '{{$requestor}}'.
-
-You may visit their profile at {{$url}}.
-
-Please login to your site to approve or ignore/cancel the request.
-
-{{$siteurl}}
-
-Regards,
-
- {{$sitename}} administrator
diff --git a/view/eo/friend_complete_eml.tpl b/view/eo/friend_complete_eml.tpl
deleted file mode 100644
index 1c647b994..000000000
--- a/view/eo/friend_complete_eml.tpl
+++ /dev/null
@@ -1,22 +0,0 @@
-
-Dear {{$username}},
-
- Great news... '{{$fn}}' at '{{$dfrn_url}}' has accepted
-your connection request at '{{$sitename}}'.
-
-You are now mutual friends and may exchange status updates, photos, and email
-without restriction.
-
-Please visit your 'Connnections' page at {{$sitename}} if you wish to make
-any changes to this relationship.
-
-{{$siteurl}}
-
-[For instance, you may create a separate profile with information that is not
-available to the general public - and assign viewing rights to '{{$fn}}'].
-
-Sincerely,
-
- {{$sitename}} Administrator
-
-
diff --git a/view/eo/intro_complete_eml.tpl b/view/eo/intro_complete_eml.tpl
deleted file mode 100644
index 2c2428d68..000000000
--- a/view/eo/intro_complete_eml.tpl
+++ /dev/null
@@ -1,22 +0,0 @@
-
-Dear {{$username}},
-
- '{{$fn}}' at '{{$dfrn_url}}' has accepted
-your connection request at '{{$sitename}}'.
-
- '{{$fn}}' has chosen to accept you a "fan", which restricts
-some forms of communication - such as private messaging and some profile
-interactions. If this is a celebrity or community page, these settings were
-applied automatically.
-
- '{{$fn}}' may choose to extend this into a two-way or more permissive
-relationship in the future.
-
- You will start receiving public status updates from '{{$fn}}',
-which will appear on your 'Matrix' page at
-
-{{$siteurl}}
-
-Sincerely,
-
- {{$sitename}} Administrator
diff --git a/view/eo/request_notify_eml.tpl b/view/eo/request_notify_eml.tpl
deleted file mode 100644
index d01b8ff27..000000000
--- a/view/eo/request_notify_eml.tpl
+++ /dev/null
@@ -1,17 +0,0 @@
-
-Dear {{$myname}},
-
-You have just received a connection request at {{$sitename}}
-
-from '{{$requestor}}'.
-
-You may visit their profile at {{$url}}.
-
-Please login to your site to view the complete introduction
-and approve or ignore/cancel the request.
-
-{{$siteurl}}
-
-Regards,
-
- {{$sitename}} administrator
diff --git a/view/es/cmnt_received_eml.tpl b/view/es/cmnt_received_eml.tpl
deleted file mode 100644
index abf2d95df..000000000
--- a/view/es/cmnt_received_eml.tpl
+++ /dev/null
@@ -1,18 +0,0 @@
-
-Estimado/a $username,
-
- '$from' ha comentado un elemento/conversación que estás siguiendo.
-
------
-$body
------
-
-Accede a $siteurl para ver la conversación completa:
-
-$display
-
-
- $sitename
-
-
-
diff --git a/view/es/follow_notify_eml.tpl b/view/es/follow_notify_eml.tpl
deleted file mode 100644
index ba07b19da..000000000
--- a/view/es/follow_notify_eml.tpl
+++ /dev/null
@@ -1,14 +0,0 @@
-
-Dear {{$myname}},
-
-You have a new follower at {{$sitename}} - '{{$requestor}}'.
-
-You may visit their profile at {{$url}}.
-
-Please login to your site to approve or ignore/cancel the request.
-
-{{$siteurl}}
-
-Regards,
-
- {{$sitename}} administrator
diff --git a/view/es/friend_complete_eml.tpl b/view/es/friend_complete_eml.tpl
deleted file mode 100644
index 1c647b994..000000000
--- a/view/es/friend_complete_eml.tpl
+++ /dev/null
@@ -1,22 +0,0 @@
-
-Dear {{$username}},
-
- Great news... '{{$fn}}' at '{{$dfrn_url}}' has accepted
-your connection request at '{{$sitename}}'.
-
-You are now mutual friends and may exchange status updates, photos, and email
-without restriction.
-
-Please visit your 'Connnections' page at {{$sitename}} if you wish to make
-any changes to this relationship.
-
-{{$siteurl}}
-
-[For instance, you may create a separate profile with information that is not
-available to the general public - and assign viewing rights to '{{$fn}}'].
-
-Sincerely,
-
- {{$sitename}} Administrator
-
-
diff --git a/view/es/intro_complete_eml.tpl b/view/es/intro_complete_eml.tpl
deleted file mode 100644
index 2c2428d68..000000000
--- a/view/es/intro_complete_eml.tpl
+++ /dev/null
@@ -1,22 +0,0 @@
-
-Dear {{$username}},
-
- '{{$fn}}' at '{{$dfrn_url}}' has accepted
-your connection request at '{{$sitename}}'.
-
- '{{$fn}}' has chosen to accept you a "fan", which restricts
-some forms of communication - such as private messaging and some profile
-interactions. If this is a celebrity or community page, these settings were
-applied automatically.
-
- '{{$fn}}' may choose to extend this into a two-way or more permissive
-relationship in the future.
-
- You will start receiving public status updates from '{{$fn}}',
-which will appear on your 'Matrix' page at
-
-{{$siteurl}}
-
-Sincerely,
-
- {{$sitename}} Administrator
diff --git a/view/es/mail_received_html_body_eml.tpl b/view/es/mail_received_html_body_eml.tpl
deleted file mode 100644
index 5086ec246..000000000
--- a/view/es/mail_received_html_body_eml.tpl
+++ /dev/null
@@ -1,24 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional //EN">
-<html>
-<head>
- <title>Mensaje de Friendika</title>
- <meta http-equiv="Content-Type" content="text/html;charset=utf-8" />
-</head>
-<body>
-<table style="border:1px solid #ccc">
- <tbody>
- <tr><td colspan="2" style="background:#3b5998; color:#FFFFFF; font-weight:bold; font-family:'lucida grande', tahoma, verdana,arial, sans-serif; padding: 4px 8px; vertical-align: middle; font-size:16px; letter-spacing: -0.03em; text-align: left;"><img style="width:32px;height:32px;" src='$siteurl/images/friendika-32.png'><span style="padding:7px;">Friendika</span></td></tr>
-
- <tr><td style="padding-top:22px;" colspan="2">Has recibido un nuevo mensaje privado de '$from' en $siteName.</td></tr>
-
-
- <tr><td style="padding-left:22px;padding-top:22px;width:60px;" valign="top" rowspan=3><a href="$url"><img style="border:0px;width:48px;height:48px;" src="$thumb"></a></td>
- <td style="padding-top:22px;"><a href="$url">$from</a></td></tr>
- <tr><td style="font-weight:bold;padding-bottom:5px;">$title</td></tr>
- <tr><td style="padding-right:22px;">$htmlversion</td></tr>
- <tr><td style="padding-top:11px;padding-bottom:11px;" colspan="2">Accede a <a href="$siteurl">$siteurl</a> para leer y responder a tus mensajes privados.</td></tr>
- <tr><td></td><td>$siteName</td></tr>
- </tbody>
-</table>
-</body>
-</html>
diff --git a/view/es/mail_received_text_body_eml.tpl b/view/es/mail_received_text_body_eml.tpl
deleted file mode 100644
index 8400b9d01..000000000
--- a/view/es/mail_received_text_body_eml.tpl
+++ /dev/null
@@ -1,9 +0,0 @@
-Has recibido un nuevo mensaje privado de '$from' en $siteName.
-
-$title
-
-$textversion
-
-Accede a $siteurl para leer y responder a tus mensajes privados.
-
- $siteName
diff --git a/view/es/request_notify_eml.tpl b/view/es/request_notify_eml.tpl
deleted file mode 100644
index d01b8ff27..000000000
--- a/view/es/request_notify_eml.tpl
+++ /dev/null
@@ -1,17 +0,0 @@
-
-Dear {{$myname}},
-
-You have just received a connection request at {{$sitename}}
-
-from '{{$requestor}}'.
-
-You may visit their profile at {{$url}}.
-
-Please login to your site to view the complete introduction
-and approve or ignore/cancel the request.
-
-{{$siteurl}}
-
-Regards,
-
- {{$sitename}} administrator
diff --git a/view/es/wall_received_eml.tpl b/view/es/wall_received_eml.tpl
deleted file mode 100644
index 4cd253c72..000000000
--- a/view/es/wall_received_eml.tpl
+++ /dev/null
@@ -1,18 +0,0 @@
-
-Estimado/a $username,
-
- '$from' ha escrito algo en el muro de tu perfil.
-
------
-$body
------
-
-Accede a $siteurl para ver o borrar el elemento:
-
-$display
-
-
- $sitename
-
-
-
diff --git a/view/fr/cmnt_received_eml.tpl b/view/fr/cmnt_received_eml.tpl
deleted file mode 100644
index 762a0c4cd..000000000
--- a/view/fr/cmnt_received_eml.tpl
+++ /dev/null
@@ -1,18 +0,0 @@
-
-Cher(e) $username,
-
- « $from » a commenté un élément ou une conversation que vous suivez.
-
------
-$body
------
-
-Connectez-vous à $siteurl si vous souhaitez voir la conversation complète :
-
-$display
-
-Merci,
- L'administrateur de $sitename
-
-
-
diff --git a/view/fr/cmnt_received_html_body_eml.tpl b/view/fr/cmnt_received_html_body_eml.tpl
deleted file mode 100644
index b56ef9e64..000000000
--- a/view/fr/cmnt_received_html_body_eml.tpl
+++ /dev/null
@@ -1,25 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional //EN">
-<html>
-<head>
- <title>Message de Friendica</title>
- <meta http-equiv="Content-Type" content="text/html;charset=utf-8" />
-</head>
-<body>
-<table style="border:1px solid #ccc">
- <tbody>
- <tr><td colspan="2" style="background:#3b5998; color:#FFFFFF; font-weight:bold; font-family:'lucida grande', tahoma, verdana,arial, sans-serif; padding: 4px 8px; vertical-align: middle; font-size:16px; letter-spacing: -0.03em; text-align: left;"><img style="width:32px;height:32px;" src='$siteurl/images/friendika-32.png'><span style="padding:7px;">Friendica</span></td></tr>
-
- <tr><td style="padding-top:22px;" colspan="2">$from a commenté un élément ou une conversation que vous suivez.</td></tr>
-
-
- <tr><td style="padding-left:22px;padding-top:22px;width:60px;" valign="top" rowspan=3><a href="$url"><img style="border:0px;width:48px;height:48px;" src="$thumb"></a></td>
- <td style="padding-top:22px;"><a href="$url">$from</a></td></tr>
- <tr><td style="padding-bottom:5px;"></td></tr>
- <tr><td style="padding-right:22px;">$body</td></tr>
- <tr><td style="padding-top:11px;padding-bottom:11px;" colspan="2"><a href="$display">Connectez-vous à $siteurl si vous souhaitez voir la conversation complète</a></td></tr>
- <tr><td></td><td>Merci,</td></tr>
- <tr><td></td><td>L'administrateur de $sitename</td></tr>
- </tbody>
-</table>
-</body>
-</html> \ No newline at end of file
diff --git a/view/fr/cmnt_received_text_body_eml.tpl b/view/fr/cmnt_received_text_body_eml.tpl
deleted file mode 100644
index 876b53e12..000000000
--- a/view/fr/cmnt_received_text_body_eml.tpl
+++ /dev/null
@@ -1,15 +0,0 @@
-
-Cher(e) $username,
-
- « $from » a commenté un éléŽment ou une conversation que vous suivez.
-
------
-$body
------
-
-Connectez-vous à $siteurl si vous souhaitez voir la conversation complète :
-
-$display
-
-Merci,
- L'administrateur de $sitename \ No newline at end of file
diff --git a/view/fr/follow_notify_eml.tpl b/view/fr/follow_notify_eml.tpl
deleted file mode 100644
index ba07b19da..000000000
--- a/view/fr/follow_notify_eml.tpl
+++ /dev/null
@@ -1,14 +0,0 @@
-
-Dear {{$myname}},
-
-You have a new follower at {{$sitename}} - '{{$requestor}}'.
-
-You may visit their profile at {{$url}}.
-
-Please login to your site to approve or ignore/cancel the request.
-
-{{$siteurl}}
-
-Regards,
-
- {{$sitename}} administrator
diff --git a/view/fr/friend_complete_eml.tpl b/view/fr/friend_complete_eml.tpl
deleted file mode 100644
index 1c647b994..000000000
--- a/view/fr/friend_complete_eml.tpl
+++ /dev/null
@@ -1,22 +0,0 @@
-
-Dear {{$username}},
-
- Great news... '{{$fn}}' at '{{$dfrn_url}}' has accepted
-your connection request at '{{$sitename}}'.
-
-You are now mutual friends and may exchange status updates, photos, and email
-without restriction.
-
-Please visit your 'Connnections' page at {{$sitename}} if you wish to make
-any changes to this relationship.
-
-{{$siteurl}}
-
-[For instance, you may create a separate profile with information that is not
-available to the general public - and assign viewing rights to '{{$fn}}'].
-
-Sincerely,
-
- {{$sitename}} Administrator
-
-
diff --git a/view/fr/htconfig.tpl b/view/fr/htconfig.tpl
index 493cb5d00..2a7f77186 100644
--- a/view/fr/htconfig.tpl
+++ b/view/fr/htconfig.tpl
@@ -1,7 +1,9 @@
<?php
// Set the following for your MySQL installation
+// Utilisez ces informations pour configurer votre instance de BD (MySQL)
// Copy or rename this file to .htconfig.php
+// Copier ou renomer ce fichier .htconfig.php et placer le à la racine de l'installation de la Matrice Rouge.
$db_host = '{{$dbhost}}';
$db_port = '{{$dbport}}';
@@ -10,61 +12,60 @@ $db_pass = '{{$dbpass}}';
$db_data = '{{$dbdata}}';
/*
- * Notice: Many of the following settings will be available in the admin panel
- * after a successful site install. Once they are set in the admin panel, they
- * are stored in the DB - and the DB setting will over-ride any corresponding
- * setting in this file
+ * Note: Plusieurs de ces réglages seront disponibles via le panneau d'administration
+ * après l'installation. Lorsque des modifications sont apportés à travers le panneau d'administration
+ * elle sont automatiquement enregistrées dans la base de données.
+ * Les configurations inscrites dans la BD prévalent sur celles de ce fichier de configuration.
*
- * The command-line tool util/config is able to query and set the DB items
- * directly if for some reason the admin panel is not available and a system
- * setting requires modification.
+ * En cas de difficultés d'accès au panneau d'administration, nous mettons à votre disposition,
+ * un outil en ligne de commande est disponible [util/config] pour rechercher et apporter des modifications
+ * sur les entrées dans la BD.
*
*/
-
-// Choose a legal default timezone. If you are unsure, use "America/Los_Angeles".
-// It can be changed later and only applies to timestamps for anonymous viewers.
+// Choisissez votre emplacement géographique. Si vous n'êtes pas certain, utilisez "America/Los_Angeles".
+// Vous pourrez le changer plus tard et ce réglage n'affecte que les visiteurs anonymes.
$default_timezone = '{{$timezone}}';
-// What is your site name?
+// Quel sera le nom de votre site?
$a->config['system']['baseurl'] = '{{$siteurl}}';
-$a->config['system']['sitename'] = "Red Matrix";
+$a->config['system']['sitename'] = "Matrice Rouge";
$a->config['system']['location_hash'] = '{{$site_id}}';
-// Your choices are REGISTER_OPEN, REGISTER_APPROVE, or REGISTER_CLOSED.
-// Be certain to create your own personal account before setting
-// REGISTER_CLOSED. 'register_text' (if set) will be displayed prominently on
-// the registration page. REGISTER_APPROVE requires you set 'admin_email'
-// to the email address of an already registered person who can authorise
-// and/or approve/deny the request.
+// Vos choix sont REGISTER_OPEN, REGISTER_APPROVE, ou REGISTER_CLOSED.
+// Soyez certains de créer votre compte personnel avant de déclarer
+// votre site REGISTER_CLOSED. 'register_text' (si vous décider de l'utiliser)
+// renvois son contenu systématiquement sur la page d'enregistrement des nouveaux membres.
+// REGISTER_APPROVE requiert la configuration de 'admin_email' avec l'adresse de courriel
+// d'un membre déjà inscrit qui pourra autoriser et/ou approuver/supprimer la demande.
$a->config['system']['register_policy'] = REGISTER_OPEN;
$a->config['system']['register_text'] = '';
$a->config['system']['admin_email'] = '{{$adminmail}}';
-// Maximum size of an imported message, 0 is unlimited
+// taille maximale pour l'importation d'un message, 0 est illimité
$a->config['system']['max_import_size'] = 200000;
-// maximum size of uploaded photos
+// taille maximale pour le téléversement de photos
$a->config['system']['maximagesize'] = 800000;
-// Location of PHP command line processor
+// Lien absolu vers le compilateur PHP
$a->config['system']['php_path'] = '{{$phpath}}';
-// Configure how we communicate with directory servers.
-// DIRECTORY_MODE_NORMAL = directory client, we will find a directory
-// DIRECTORY_MODE_SECONDARY = caching directory or mirror
-// DIRECTORY_MODE_PRIMARY = main directory server
-// DIRECTORY_MODE_STANDALONE = "off the grid" or private directory services
+// configurez la façon dont votre site communique avec les autres serveurs. [Répertoire des membres inscrits à la Matrice]
+// DIRECTORY_MODE_NORMAL = client du répertoire de membres, nous vous trouverons un répertoire accessible autre serveur.
+// DIRECTORY_MODE_SECONDARY = copie mirroir du répertoire des membres.
+// DIRECTORY_MODE_PRIMARY = répertoire des membres principal.
+// DIRECTORY_MODE_STANDALONE = "autonome/déconnecté" ou répertoire de membres privés
$a->config['system']['directory_mode'] = DIRECTORY_MODE_NORMAL;
-// default system theme
+// Thème par défaut
$a->config['system']['theme'] = 'redbasic';
diff --git a/view/fr/intro_complete_eml.tpl b/view/fr/intro_complete_eml.tpl
deleted file mode 100644
index 2c2428d68..000000000
--- a/view/fr/intro_complete_eml.tpl
+++ /dev/null
@@ -1,22 +0,0 @@
-
-Dear {{$username}},
-
- '{{$fn}}' at '{{$dfrn_url}}' has accepted
-your connection request at '{{$sitename}}'.
-
- '{{$fn}}' has chosen to accept you a "fan", which restricts
-some forms of communication - such as private messaging and some profile
-interactions. If this is a celebrity or community page, these settings were
-applied automatically.
-
- '{{$fn}}' may choose to extend this into a two-way or more permissive
-relationship in the future.
-
- You will start receiving public status updates from '{{$fn}}',
-which will appear on your 'Matrix' page at
-
-{{$siteurl}}
-
-Sincerely,
-
- {{$sitename}} Administrator
diff --git a/view/fr/lostpass_eml.tpl b/view/fr/lostpass_eml.tpl
index 3b79d2791..0421d41a8 100644
--- a/view/fr/lostpass_eml.tpl
+++ b/view/fr/lostpass_eml.tpl
@@ -1,32 +1,30 @@
-Dear {{$username}},
- A request was recently received at {{$sitename}} to reset your account
-password. In order to confirm this request, please select the verification link
-below or paste it into your web browser address bar.
+Cher {{$username}},
+ Une demande pour réinitialiser votre mot de passe a récemment été reçue par {{$sitename}}
+Pour confirmer cette requête, veuillez suivre le lien de vérification
+ci-dessous ou en faire un copier-coller dans la barre d'adresse de votre navigateur.
-If you did NOT request this change, please DO NOT follow the link
-provided and ignore and/or delete this email.
+Si vous N'AVEZ PAS demandé ce changement, NE SUIVEZ PAS ce lien, ignorez-le simplement et/ou supprimez ce courriel.
-Your password will not be changed unless we can verify that you
-issued this request.
+Votre mot de passe ne sera pas changé à moins que nous puissions vérifier vos intentions.
-Follow this link to verify your identity:
+Suivez ce lien pour confirmer votre identité:
{{$reset_link}}
-You will then receive a follow-up message containing the new password.
+Vous recevrez ensuite un second courriel avec votre nouveau mot de passe.
-You may change that password from your account settings page after logging in.
+Vous pouvez changer ce mot de passe à partir des réglages du profil après vous être connecté.
-The login details are as follows:
+Voici les détails de connexion:
-Site Location: {{$siteurl}}
-Login Name: {{$email}}
+Emplacement du site:⇥{{$siteurl}}
+Utilisateur:⇥{{$email}}
-Sincerely,
- {{$sitename}} Administrator
+Sincèrement,
+ L'administrateur {{$sitename}}
-
+ \ No newline at end of file
diff --git a/view/fr/mail_received_html_body_eml.tpl b/view/fr/mail_received_html_body_eml.tpl
deleted file mode 100644
index 9961a0c01..000000000
--- a/view/fr/mail_received_html_body_eml.tpl
+++ /dev/null
@@ -1,25 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional //EN">
-<html>
-<head>
- <title>Message de Friendica</title>
- <meta http-equiv="Content-Type" content="text/html;charset=utf-8" />
-</head>
-<body>
-<table style="border:1px solid #ccc">
- <tbody>
- <tr><td colspan="2" style="background:#3b5998; color:#FFFFFF; font-weight:bold; font-family:'lucida grande', tahoma, verdana,arial, sans-serif; padding: 4px 8px; vertical-align: middle; font-size:16px; letter-spacing: -0.03em; text-align: left;"><img style="width:32px;height:32px;" src='$siteurl/images/friendika-32.png'><span style="padding:7px;">Friendica</span></td></tr>
-
- <tr><td style="padding-top:22px;" colspan="2">$from vous a envoyé un message à $siteName.</td></tr>
-
-
- <tr><td style="padding-left:22px;padding-top:22px;width:60px;" valign="top" rowspan=3><a href="$url"><img style="border:0px;width:48px;height:48px;" src="$thumb"></a></td>
- <td style="padding-top:22px;"><a href="$url">$from</a></td></tr>
- <tr><td style="font-weight:bold;padding-bottom:5px;">$title</td></tr>
- <tr><td style="padding-right:22px;">$htmlversion</td></tr>
- <tr><td style="padding-top:11px;padding-bottom:11px;" colspan="2">Veuillez Ouvrir une session sur <a href="$siteurl">$siteurl</a> pour lire et répondre à vos messages privés.</td></tr>
- <tr><td></td><td>Merci,</td></tr>
- <tr><td></td><td>$siteName Administrateur</td></tr>
- </tbody>
-</table>
-</body>
-</html>
diff --git a/view/fr/mail_received_text_body_eml.tpl b/view/fr/mail_received_text_body_eml.tpl
deleted file mode 100644
index 65d034c15..000000000
--- a/view/fr/mail_received_text_body_eml.tpl
+++ /dev/null
@@ -1,10 +0,0 @@
-$from vous a envoyé un message à $siteName.
-
-$title
-
-$textversion
-
-Veuillez ouvrir une session sur $siteurl pour lire et répondre à vos messages privés.
-
-Merci,
-$siteName Administrateur
diff --git a/view/fr/messages.po b/view/fr/messages.po
index 8eecf1ddd..dfff156a2 100644
--- a/view/fr/messages.po
+++ b/view/fr/messages.po
@@ -4,13 +4,15 @@
#
# Translators:
# Olivier <olivier+transifex@migeot.org>, 2013-2014
+# Webmaster_Redmatrix.ca <webmaster@redmatrix.ca>, 2014
+# Webmaster_Redmatrix.ca <webmaster@redmatrix.ca>, 2014
msgid ""
msgstr ""
"Project-Id-Version: Red Matrix\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2014-02-14 00:02-0800\n"
-"PO-Revision-Date: 2014-02-20 09:28+0000\n"
-"Last-Translator: fabrixxm <fabrix.xm@gmail.com>\n"
+"POT-Creation-Date: 2014-08-15 00:03-0700\n"
+"PO-Revision-Date: 2014-08-17 00:08+0000\n"
+"Last-Translator: Webmaster_Redmatrix.ca <webmaster@redmatrix.ca>\n"
"Language-Team: French (http://www.transifex.com/projects/p/red-matrix/language/fr/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
@@ -18,1137 +20,1284 @@ msgstr ""
"Language: fr\n"
"Plural-Forms: nplurals=2; plural=(n > 1);\n"
-#: ../../include/widgets.php:29 ../../include/contact_widgets.php:87
-msgid "Categories"
-msgstr "Catégories"
-
-#: ../../include/widgets.php:115 ../../include/widgets.php:155
-#: ../../include/Contact.php:104 ../../include/identity.php:628
-#: ../../mod/directory.php:184 ../../mod/match.php:62
-#: ../../mod/dirprofile.php:170 ../../mod/suggest.php:51
-msgid "Connect"
-msgstr "Relier"
-
-#: ../../include/widgets.php:117 ../../mod/suggest.php:53
-msgid "Ignore/Hide"
-msgstr "Ignorer/Cacher"
-
-#: ../../include/widgets.php:123 ../../mod/connections.php:238
-msgid "Suggestions"
-msgstr "Suggestion"
-
-#: ../../include/widgets.php:124
-msgid "See more..."
-msgstr "Voir plus..."
-
-#: ../../include/widgets.php:146
+#: ../../include/dba/dba_driver.php:50
#, php-format
-msgid "You have %1$.0f of %2$.0f allowed connections."
-msgstr "Vous avez %1$.0f des %2$.0f relations autorisées."
-
-#: ../../include/widgets.php:152
-msgid "Add New Connection"
-msgstr "Ajouter une nouvelle relation"
-
-#: ../../include/widgets.php:153
-msgid "Enter the channel address"
-msgstr "Adresse du canal"
-
-#: ../../include/widgets.php:154
-msgid "Example: bob@example.com, http://example.com/barbara"
-msgstr "Exemple&nbsp;: bob@exemple.com, http://exemple.com/barbara"
-
-#: ../../include/widgets.php:171
-msgid "Notes"
-msgstr "Notes"
-
-#: ../../include/widgets.php:173 ../../include/text.php:754
-#: ../../include/text.php:768 ../../mod/filer.php:36
-msgid "Save"
-msgstr "Sauver"
-
-#: ../../include/widgets.php:243
-msgid "Remove term"
-msgstr "Retirer le terme"
-
-#: ../../include/widgets.php:252 ../../include/features.php:52
-msgid "Saved Searches"
-msgstr "Recherches sauvées"
-
-#: ../../include/widgets.php:253 ../../include/group.php:290
-msgid "add"
-msgstr "ajouter"
-
-#: ../../include/widgets.php:283 ../../include/features.php:66
-#: ../../include/contact_widgets.php:53
-msgid "Saved Folders"
-msgstr "Dossiers sauvegardés"
-
-#: ../../include/widgets.php:286 ../../include/contact_widgets.php:56
-#: ../../include/contact_widgets.php:90
-msgid "Everything"
-msgstr "Tout"
-
-#: ../../include/widgets.php:318 ../../include/items.php:3636
-msgid "Archives"
-msgstr "Archives"
-
-#: ../../include/widgets.php:370
-msgid "Refresh"
-msgstr "Actualiser"
+msgid "Cannot locate DNS info for database server '%s'"
+msgstr "Impossible de trouver les infos DNS du serveur de base de données '%s'"
-#: ../../include/widgets.php:371 ../../mod/connedit.php:389
-msgid "Me"
-msgstr "Moi"
+#: ../../include/photo/photo_driver.php:653 ../../include/photos.php:51
+#: ../../mod/profile_photo.php:142 ../../mod/profile_photo.php:301
+#: ../../mod/profile_photo.php:421 ../../mod/photos.php:91
+#: ../../mod/photos.php:659 ../../mod/photos.php:681
+msgid "Profile Photos"
+msgstr "Photos du profil"
-#: ../../include/widgets.php:372 ../../mod/connedit.php:391
-msgid "Best Friends"
-msgstr "Mes meilleurs amis"
+#: ../../include/diaspora.php:610
+#, php-format
+msgid "%1$s is now friends with %2$s"
+msgstr "%1$s et %2$s sont maintenant amis."
-#: ../../include/widgets.php:373 ../../include/identity.php:310
-#: ../../include/profile_selectors.php:42 ../../mod/connedit.php:392
-msgid "Friends"
-msgstr "Amis"
+#: ../../include/diaspora.php:693
+msgid "Sharing notification from Diaspora network"
+msgstr "Partage de vos notifications du réseau Diaspora"
-#: ../../include/widgets.php:374
-msgid "Co-workers"
-msgstr "Mes collègues"
+#: ../../include/diaspora.php:1910 ../../include/text.php:1732
+#: ../../include/conversation.php:120 ../../mod/subthread.php:72
+#: ../../mod/subthread.php:174 ../../mod/tagger.php:45 ../../mod/like.php:294
+msgid "photo"
+msgstr "photo"
-#: ../../include/widgets.php:375 ../../mod/connedit.php:393
-msgid "Former Friends"
-msgstr "Mes anciens amis"
+#: ../../include/diaspora.php:1910 ../../include/text.php:1738
+#: ../../include/conversation.php:148 ../../mod/subthread.php:72
+#: ../../mod/subthread.php:174 ../../mod/tagger.php:53 ../../mod/like.php:294
+msgid "status"
+msgstr "le statut"
-#: ../../include/widgets.php:376 ../../mod/connedit.php:394
-msgid "Acquaintances"
-msgstr "Mes accointances"
+#: ../../include/diaspora.php:1926 ../../include/conversation.php:164
+#: ../../mod/like.php:331
+#, php-format
+msgid "%1$s likes %2$s's %3$s"
+msgstr "%1$s aime %3$s de %2$s"
-#: ../../include/widgets.php:377
-msgid "Everybody"
-msgstr "Tout le monde"
+#: ../../include/diaspora.php:2303
+msgid "Attachments:"
+msgstr "Pièces jointes:"
-#: ../../include/widgets.php:409
-msgid "Account settings"
-msgstr "Compte"
+#: ../../include/oembed.php:163
+msgid "Embedded content"
+msgstr "Contenu imbriqué"
-#: ../../include/widgets.php:415
-msgid "Channel settings"
-msgstr "Canal"
+#: ../../include/oembed.php:172
+msgid "Embedding disabled"
+msgstr "Imbrication désactivée"
-#: ../../include/widgets.php:421
-msgid "Additional features"
-msgstr "Fonc. supplémentaires"
+#: ../../include/notify.php:23
+msgid "created a new post"
+msgstr "a publié"
-#: ../../include/widgets.php:427
-msgid "Feature settings"
-msgstr "Fonctionnalités"
+#: ../../include/notify.php:24
+#, php-format
+msgid "commented on %s's post"
+msgstr "a commenté la publication de %s"
-#: ../../include/widgets.php:433
-msgid "Display settings"
-msgstr "Affichage"
+#: ../../include/apps.php:123
+msgid "Site Admin"
+msgstr "Administrateur"
-#: ../../include/widgets.php:439
-msgid "Connected apps"
-msgstr "Applications"
+#: ../../include/apps.php:124 ../../include/nav.php:100
+#: ../../include/conversation.php:1543
+msgid "Bookmarks"
+msgstr "Favoris"
-#: ../../include/widgets.php:445
-msgid "Export channel"
-msgstr "Exporter canal"
+#: ../../include/apps.php:125
+msgid "Address Book"
+msgstr "Carnet d'adresses"
-#: ../../include/widgets.php:457
-msgid "Automatic Permissions (Advanced)"
-msgstr "Permissions automatiques (avancé)"
+#: ../../include/apps.php:126 ../../include/nav.php:106 ../../boot.php:1498
+msgid "Login"
+msgstr "Connexion"
-#: ../../include/widgets.php:467
-msgid "Premium Channel Settings"
-msgstr "Canal Premium"
+#: ../../include/apps.php:127 ../../include/nav.php:196
+msgid "Channel Select"
+msgstr "Changer de canal"
-#: ../../include/widgets.php:476 ../../include/features.php:43
-#: ../../mod/sources.php:88
-msgid "Channel Sources"
-msgstr "Canaux sources"
+#: ../../include/apps.php:128 ../../include/nav.php:170
+msgid "Matrix"
+msgstr "Matrice"
-#: ../../include/widgets.php:487 ../../include/nav.php:181
-#: ../../mod/admin.php:837 ../../mod/admin.php:1042
+#: ../../include/apps.php:129 ../../include/nav.php:198
+#: ../../include/widgets.php:514 ../../mod/admin.php:987
+#: ../../mod/admin.php:1192
msgid "Settings"
msgstr "Réglages"
-#: ../../include/widgets.php:504
-msgid "Check Mail"
-msgstr "Vérifier courriel"
-
-#: ../../include/widgets.php:509 ../../include/nav.php:172
-msgid "New Message"
-msgstr "Nouveau message"
-
-#: ../../include/widgets.php:585
-msgid "Chat Rooms"
-msgstr "Salons"
-
-#: ../../include/acl_selectors.php:235
-msgid "Visible to everybody"
-msgstr "Visible par tous"
-
-#: ../../include/acl_selectors.php:236
-msgid "show"
-msgstr "montrer"
-
-#: ../../include/acl_selectors.php:237
-msgid "don't show"
-msgstr "cacher"
-
-#: ../../include/activities.php:39
-msgid " and "
-msgstr "et"
-
-#: ../../include/activities.php:47
-msgid "public profile"
-msgstr "profil public"
-
-#: ../../include/activities.php:52
-#, php-format
-msgid "%1$s changed %2$s to &ldquo;%3$s&rdquo;"
-msgstr "%1$s a changé %2$s en &ldquo;%3$s&rdquo;"
-
-#: ../../include/activities.php:53
-#, php-format
-msgid "Visit %1$s's %2$s"
-msgstr "Visiter %1$s de %2$s"
-
-#: ../../include/activities.php:56
-#, php-format
-msgid "%1$s has an updated %2$s, changing %3$s."
-msgstr "%1$s a mis-à-jour %2$s, modifiant %3$s."
-
-#: ../../include/nav.php:72 ../../include/nav.php:91 ../../boot.php:1423
-msgid "Logout"
-msgstr "Déconnexion"
-
-#: ../../include/nav.php:72 ../../include/nav.php:91
-msgid "End this session"
-msgstr "Mettre fin à la session"
-
-#: ../../include/nav.php:75 ../../include/nav.php:125
-msgid "Home"
-msgstr "Canal"
-
-#: ../../include/nav.php:75
-msgid "Your posts and conversations"
-msgstr "Vos publications et conversations"
-
-#: ../../include/nav.php:76 ../../include/conversation.php:933
-#: ../../mod/connedit.php:312 ../../mod/connedit.php:426
-msgid "View Profile"
-msgstr "Voir profil"
-
-#: ../../include/nav.php:76
-msgid "Your profile page"
-msgstr "Votre profil"
-
-#: ../../include/nav.php:78
-msgid "Edit Profiles"
-msgstr "Éditer profils"
-
-#: ../../include/nav.php:78
-msgid "Manage/Edit profiles"
-msgstr "Gérer/éditer profils"
-
-#: ../../include/nav.php:79 ../../include/conversation.php:1475
-#: ../../mod/fbrowser.php:25
-msgid "Photos"
-msgstr "Photos"
-
-#: ../../include/nav.php:79
-msgid "Your photos"
-msgstr "Vos photos"
-
-#: ../../include/nav.php:80 ../../include/conversation.php:1484
+#: ../../include/apps.php:130 ../../include/nav.php:92
+#: ../../include/reddav.php:1280 ../../include/conversation.php:1521
#: ../../mod/fbrowser.php:114
msgid "Files"
msgstr "Fichiers"
-#: ../../include/nav.php:80
-msgid "Your files"
-msgstr "Vos fichiers"
-
-#: ../../include/nav.php:81
-msgid "Chat"
-msgstr "Discussion"
-
-#: ../../include/nav.php:81
-msgid "Your chatrooms"
-msgstr "Vos salons"
-
-#: ../../include/nav.php:82 ../../include/nav.php:175
-#: ../../include/conversation.php:1506 ../../mod/events.php:354
-msgid "Events"
-msgstr "Événements"
-
-#: ../../include/nav.php:82
-msgid "Your events"
-msgstr "Vos événements"
-
-#: ../../include/nav.php:83 ../../include/conversation.php:1514
-msgid "Bookmarks"
-msgstr "Marque-pages"
-
-#: ../../include/nav.php:83
-msgid "Your bookmarks"
-msgstr "Vos marque-pages"
-
-#: ../../include/nav.php:85 ../../include/conversation.php:1525
+#: ../../include/apps.php:131 ../../include/nav.php:102
+#: ../../include/conversation.php:1554 ../../mod/webpages.php:79
msgid "Webpages"
msgstr "Pages web"
-#: ../../include/nav.php:85
-msgid "Your webpages"
-msgstr "Vos pages web"
-
-#: ../../include/nav.php:89 ../../boot.php:1424
-msgid "Login"
-msgstr "Connexion"
-
-#: ../../include/nav.php:89
-msgid "Sign in"
-msgstr "Connexion"
-
-#: ../../include/nav.php:106
-#, php-format
-msgid "%s - click to logout"
-msgstr "%s - cliquer pour déconnecter"
-
-#: ../../include/nav.php:111
-msgid "Click to authenticate to your home hub"
-msgstr "S'authentifier auprès de son hébergement"
-
-#: ../../include/nav.php:125
-msgid "Home Page"
-msgstr "Page d'accueil"
-
-#: ../../include/nav.php:129 ../../mod/register.php:206 ../../boot.php:1400
-msgid "Register"
-msgstr "Inscription"
-
-#: ../../include/nav.php:129
-msgid "Create an account"
-msgstr "Créer un compte"
-
-#: ../../include/nav.php:134 ../../mod/help.php:60 ../../mod/help.php:64
-msgid "Help"
-msgstr "Aide"
-
-#: ../../include/nav.php:134
-msgid "Help and documentation"
-msgstr "Aide et documentation"
-
-#: ../../include/nav.php:137
-msgid "Apps"
-msgstr "Applications"
-
-#: ../../include/nav.php:137
-msgid "Addon applications, utilities, games"
-msgstr "Applications supplémentaires, jeux, utilitaires"
-
-#: ../../include/nav.php:139 ../../include/text.php:752
-#: ../../include/text.php:766 ../../mod/search.php:29
-msgid "Search"
-msgstr "Recherche"
-
-#: ../../include/nav.php:139
-msgid "Search site content"
-msgstr "Recherche parmi le contenu du site"
-
-#: ../../include/nav.php:142 ../../mod/directory.php:211
-msgid "Directory"
-msgstr "Annuaire"
-
-#: ../../include/nav.php:142
-msgid "Channel Locator"
-msgstr "Localisation de canaux"
-
-#: ../../include/nav.php:153
-msgid "Matrix"
-msgstr "Matrice"
-
-#: ../../include/nav.php:153
-msgid "Your matrix"
-msgstr "Votre matrice"
-
-#: ../../include/nav.php:154
-msgid "Mark all matrix notifications seen"
-msgstr "Marquer toutes les notifications de la matrice comme vues"
-
-#: ../../include/nav.php:156
+#: ../../include/apps.php:132 ../../include/nav.php:173
msgid "Channel Home"
msgstr "Mon canal"
-#: ../../include/nav.php:156
-msgid "Channel home"
-msgstr "Mon canal"
-
-#: ../../include/nav.php:157
-msgid "Mark all channel notifications seen"
-msgstr "Marquer toutes les notifications du canal comme vues"
-
-#: ../../include/nav.php:160
-msgid "Intros"
-msgstr "Introductions"
-
-#: ../../include/nav.php:160 ../../mod/connections.php:244
-msgid "New Connections"
-msgstr "Nouvelles relations"
+#: ../../include/apps.php:133 ../../include/identity.php:973
+#: ../../include/identity.php:1091 ../../mod/profperm.php:112
+msgid "Profile"
+msgstr "Profil"
-#: ../../include/nav.php:163
-msgid "Notices"
-msgstr "Notifications"
+#: ../../include/apps.php:134 ../../include/nav.php:91
+#: ../../include/conversation.php:1512 ../../mod/fbrowser.php:25
+msgid "Photos"
+msgstr "Photos"
-#: ../../include/nav.php:163
-msgid "Notifications"
-msgstr "Notifications"
+#: ../../include/apps.php:135 ../../include/nav.php:192
+#: ../../mod/events.php:396
+msgid "Events"
+msgstr "Événements"
-#: ../../include/nav.php:164
-msgid "See all notifications"
-msgstr "Voir toutes les notifications"
+#: ../../include/apps.php:136 ../../include/nav.php:159
+#: ../../mod/directory.php:226
+msgid "Directory"
+msgstr "Annuaire"
-#: ../../include/nav.php:165
-msgid "Mark all system notifications seen"
-msgstr "Marquer toutes les notifications système comme vues"
+#: ../../include/apps.php:137 ../../include/nav.php:151 ../../mod/help.php:60
+#: ../../mod/help.php:65
+msgid "Help"
+msgstr "Aide"
-#: ../../include/nav.php:167
+#: ../../include/apps.php:138 ../../include/nav.php:184
msgid "Mail"
msgstr "Messages"
-#: ../../include/nav.php:167
-msgid "Private mail"
-msgstr "Messages privés"
-
-#: ../../include/nav.php:168
-msgid "See all private messages"
-msgstr "Voir tous les messages privés"
-
-#: ../../include/nav.php:169
-msgid "Mark all private messages seen"
-msgstr "Marquer tous les messages privés comme vus"
+#: ../../include/apps.php:139 ../../mod/mood.php:131
+msgid "Mood"
+msgstr "Humeur"
-#: ../../include/nav.php:170
-msgid "Inbox"
-msgstr "Boîte de réception"
+#: ../../include/apps.php:140 ../../include/conversation.php:945
+msgid "Poke"
+msgstr "Cogner"
-#: ../../include/nav.php:171
-msgid "Outbox"
-msgstr "Boîte d'envoi"
+#: ../../include/apps.php:141 ../../include/nav.php:97
+msgid "Chat"
+msgstr "Clavardage"
-#: ../../include/nav.php:175
-msgid "Event Calendar"
-msgstr "Calendrier des événements"
+#: ../../include/apps.php:142 ../../include/text.php:815
+#: ../../include/text.php:829 ../../include/nav.php:156
+#: ../../mod/search.php:30
+msgid "Search"
+msgstr "Recherche"
-#: ../../include/nav.php:176
-msgid "See all events"
-msgstr "Voir tous les événements"
+#: ../../include/apps.php:143
+msgid "Probe"
+msgstr "Sonder"
-#: ../../include/nav.php:177
-msgid "Mark all events seen"
-msgstr "Marquer tous les événements comme vus"
+#: ../../include/apps.php:144
+msgid "Suggest"
+msgstr "Suggérer"
-#: ../../include/nav.php:179
-msgid "Channel Select"
-msgstr "Changer de canal"
+#: ../../include/apps.php:145
+msgid "Random Channel"
+msgstr "Un canal au hasard"
-#: ../../include/nav.php:179
-msgid "Manage Your Channels"
-msgstr "Gérer vos canaux"
+#: ../../include/apps.php:146
+msgid "Invite"
+msgstr "Invitation"
-#: ../../include/nav.php:181
-msgid "Account/Channel Settings"
-msgstr "Compte/Canal"
+#: ../../include/apps.php:147
+msgid "Features"
+msgstr "Fonctionalités"
-#: ../../include/nav.php:183 ../../mod/connections.php:351
-msgid "Connections"
-msgstr "Relations"
+#: ../../include/apps.php:148
+msgid "Language"
+msgstr "Langue"
-#: ../../include/nav.php:183
-msgid "Manage/Edit Friends and Connections"
-msgstr "Gérer les amis et relations"
+#: ../../include/apps.php:149
+msgid "Post"
+msgstr "Envoyer"
-#: ../../include/nav.php:190 ../../mod/admin.php:112
-msgid "Admin"
-msgstr "Admin"
+#: ../../include/apps.php:150
+msgid "Profile Photo"
+msgstr "Photo du profil"
-#: ../../include/nav.php:190
-msgid "Site Setup and Configuration"
-msgstr "Configuration du site"
+#: ../../include/apps.php:239 ../../mod/settings.php:79
+#: ../../mod/settings.php:543
+msgid "Update"
+msgstr "Mise à jour"
+
+#: ../../include/apps.php:239
+msgid "Install"
+msgstr "Installer"
+
+#: ../../include/apps.php:244
+msgid "Purchase"
+msgstr "Acheter"
+
+#: ../../include/apps.php:246 ../../include/page_widgets.php:8
+#: ../../include/page_widgets.php:36 ../../include/reddav.php:1289
+#: ../../include/menu.php:42 ../../include/ItemObject.php:96
+#: ../../mod/settings.php:579 ../../mod/blocks.php:94
+#: ../../mod/connections.php:393 ../../mod/editblock.php:111
+#: ../../mod/editlayout.php:106 ../../mod/editpost.php:112
+#: ../../mod/editwebpage.php:143 ../../mod/thing.php:235
+#: ../../mod/layouts.php:112 ../../mod/menu.php:59 ../../mod/webpages.php:120
+msgid "Edit"
+msgstr "Éditer"
-#: ../../include/nav.php:216
-msgid "Nothing new here"
-msgstr "Rien de neuf ici"
+#: ../../include/apps.php:247 ../../include/reddav.php:1290
+#: ../../include/conversation.php:635 ../../include/ItemObject.php:108
+#: ../../mod/settings.php:580 ../../mod/connedit.php:440
+#: ../../mod/photos.php:1052 ../../mod/group.php:176 ../../mod/admin.php:767
+#: ../../mod/admin.php:897 ../../mod/thing.php:236
+msgid "Delete"
+msgstr "Supprimer"
-#: ../../include/nav.php:221
-msgid "Please wait..."
-msgstr "Merci de patienter..."
+#: ../../include/apps.php:328 ../../include/apps.php:379
+#: ../../include/reddav.php:1202 ../../mod/connedit.php:476
+msgid "Unknown"
+msgstr "Inconnu"
-#: ../../include/text.php:315
+#: ../../include/text.php:321
msgid "prev"
msgstr "préc."
-#: ../../include/text.php:317
+#: ../../include/text.php:323
msgid "first"
msgstr "premier"
-#: ../../include/text.php:346
+#: ../../include/text.php:352
msgid "last"
msgstr "dernier"
-#: ../../include/text.php:349
+#: ../../include/text.php:355
msgid "next"
msgstr "suiv."
-#: ../../include/text.php:361
+#: ../../include/text.php:367
msgid "older"
msgstr "plus ancien"
-#: ../../include/text.php:363
+#: ../../include/text.php:369
msgid "newer"
msgstr "plus récent"
-#: ../../include/text.php:670
+#: ../../include/text.php:730
msgid "No connections"
msgstr "Sans relations"
-#: ../../include/text.php:681
+#: ../../include/text.php:743
#, php-format
msgid "%d Connection"
msgid_plural "%d Connections"
msgstr[0] "%d relation"
msgstr[1] "%d relations"
-#: ../../include/text.php:693
+#: ../../include/text.php:756
msgid "View Connections"
msgstr "Voir les relations"
-#: ../../include/text.php:834
+#: ../../include/text.php:817 ../../include/text.php:831
+#: ../../include/widgets.php:186 ../../mod/rbmark.php:28
+#: ../../mod/rbmark.php:98 ../../mod/filer.php:50
+msgid "Save"
+msgstr "Sauver"
+
+#: ../../include/text.php:897
msgid "poke"
-msgstr "tapoter"
+msgstr "cogner"
-#: ../../include/text.php:834 ../../include/conversation.php:240
+#: ../../include/text.php:897 ../../include/conversation.php:243
msgid "poked"
-msgstr "tapoté"
+msgstr "a cogné"
-#: ../../include/text.php:835
+#: ../../include/text.php:898
msgid "ping"
msgstr "solliciter"
-#: ../../include/text.php:835
+#: ../../include/text.php:898
msgid "pinged"
-msgstr "sollicité"
+msgstr "a sollicité"
-#: ../../include/text.php:836
+#: ../../include/text.php:899
msgid "prod"
-msgstr "aiguillonner"
+msgstr "encourager"
-#: ../../include/text.php:836
+#: ../../include/text.php:899
msgid "prodded"
-msgstr "aiguillonné"
+msgstr "a encouragé"
-#: ../../include/text.php:837
+#: ../../include/text.php:900
msgid "slap"
-msgstr "baffer"
+msgstr "gifler"
-#: ../../include/text.php:837
+#: ../../include/text.php:900
msgid "slapped"
-msgstr "baffé"
+msgstr "a giflé"
-#: ../../include/text.php:838
+#: ../../include/text.php:901
msgid "finger"
msgstr "pointer"
-#: ../../include/text.php:838
+#: ../../include/text.php:901
msgid "fingered"
-msgstr "pointé"
+msgstr "a pointé"
-#: ../../include/text.php:839
+#: ../../include/text.php:902
msgid "rebuff"
-msgstr "rejetter"
+msgstr "rejeter"
-#: ../../include/text.php:839
+#: ../../include/text.php:902
msgid "rebuffed"
-msgstr "rejetté"
+msgstr "a rejeté"
-#: ../../include/text.php:851
+#: ../../include/text.php:911
msgid "happy"
-msgstr "bonheur"
+msgstr "heureux"
-#: ../../include/text.php:852
+#: ../../include/text.php:912
msgid "sad"
msgstr "triste"
-#: ../../include/text.php:853
+#: ../../include/text.php:913
msgid "mellow"
-msgstr "mélancolie"
+msgstr "mélancolique"
-#: ../../include/text.php:854
+#: ../../include/text.php:914
msgid "tired"
-msgstr "fatigue"
+msgstr "fatigué"
-#: ../../include/text.php:855
+#: ../../include/text.php:915
msgid "perky"
-msgstr "impertinence"
+msgstr "impertinent"
-#: ../../include/text.php:856
+#: ../../include/text.php:916
msgid "angry"
-msgstr "colère"
+msgstr "colérique"
-#: ../../include/text.php:857
+#: ../../include/text.php:917
msgid "stupified"
-msgstr "stupeur"
+msgstr "stupéfié"
-#: ../../include/text.php:858
+#: ../../include/text.php:918
msgid "puzzled"
-msgstr "perplexité"
+msgstr "perplexe"
-#: ../../include/text.php:859
+#: ../../include/text.php:919
msgid "interested"
-msgstr "intérêt"
+msgstr "intéressé"
-#: ../../include/text.php:860
+#: ../../include/text.php:920
msgid "bitter"
-msgstr "amertune"
+msgstr "amer"
-#: ../../include/text.php:861
+#: ../../include/text.php:921
msgid "cheerful"
-msgstr "entrain"
+msgstr "joyeux"
-#: ../../include/text.php:862
+#: ../../include/text.php:922
msgid "alive"
-msgstr "vivacité"
+msgstr "énergique"
-#: ../../include/text.php:863
+#: ../../include/text.php:923
msgid "annoyed"
-msgstr "agaçement"
+msgstr "agacé"
-#: ../../include/text.php:864
+#: ../../include/text.php:924
msgid "anxious"
-msgstr "anxiété"
+msgstr "anxieux"
-#: ../../include/text.php:865
+#: ../../include/text.php:925
msgid "cranky"
-msgstr "mauvais poil"
+msgstr "énervé"
-#: ../../include/text.php:866
+#: ../../include/text.php:926
msgid "disturbed"
-msgstr "perturbation"
+msgstr "perturbé"
-#: ../../include/text.php:867
+#: ../../include/text.php:927
msgid "frustrated"
-msgstr "frustration"
+msgstr "frustré"
+
+#: ../../include/text.php:928
+msgid "depressed"
+msgstr "déprimé"
-#: ../../include/text.php:868
+#: ../../include/text.php:929
msgid "motivated"
-msgstr "motivation"
+msgstr "motivé"
-#: ../../include/text.php:869
+#: ../../include/text.php:930
msgid "relaxed"
-msgstr "détente"
+msgstr "détendu"
-#: ../../include/text.php:870
+#: ../../include/text.php:931
msgid "surprised"
-msgstr "surprise"
+msgstr "surpris"
-#: ../../include/text.php:1031
+#: ../../include/text.php:1092
msgid "Monday"
msgstr "Lundi"
-#: ../../include/text.php:1031
+#: ../../include/text.php:1092
msgid "Tuesday"
msgstr "Mardi"
-#: ../../include/text.php:1031
+#: ../../include/text.php:1092
msgid "Wednesday"
msgstr "Mercredi"
-#: ../../include/text.php:1031
+#: ../../include/text.php:1092
msgid "Thursday"
msgstr "Jeudi"
-#: ../../include/text.php:1031
+#: ../../include/text.php:1092
msgid "Friday"
msgstr "Vendredi"
-#: ../../include/text.php:1031
+#: ../../include/text.php:1092
msgid "Saturday"
msgstr "Samedi"
-#: ../../include/text.php:1031
+#: ../../include/text.php:1092
msgid "Sunday"
msgstr "Dimanche"
-#: ../../include/text.php:1035
+#: ../../include/text.php:1096
msgid "January"
msgstr "Janvier"
-#: ../../include/text.php:1035
+#: ../../include/text.php:1096
msgid "February"
msgstr "Février"
-#: ../../include/text.php:1035
+#: ../../include/text.php:1096
msgid "March"
msgstr "Mars"
-#: ../../include/text.php:1035
+#: ../../include/text.php:1096
msgid "April"
msgstr "Avril"
-#: ../../include/text.php:1035
+#: ../../include/text.php:1096
msgid "May"
msgstr "Mai"
-#: ../../include/text.php:1035
+#: ../../include/text.php:1096
msgid "June"
msgstr "Juin"
-#: ../../include/text.php:1035
+#: ../../include/text.php:1096
msgid "July"
msgstr "Juillet"
-#: ../../include/text.php:1035
+#: ../../include/text.php:1096
msgid "August"
msgstr "Août"
-#: ../../include/text.php:1035
+#: ../../include/text.php:1096
msgid "September"
msgstr "Septembre"
-#: ../../include/text.php:1035
+#: ../../include/text.php:1096
msgid "October"
msgstr "Octobre"
-#: ../../include/text.php:1035
+#: ../../include/text.php:1096
msgid "November"
msgstr "Novembre"
-#: ../../include/text.php:1035
+#: ../../include/text.php:1096
msgid "December"
msgstr "Décembre"
-#: ../../include/text.php:1113
+#: ../../include/text.php:1174
msgid "unknown.???"
msgstr "inconnu.???"
-#: ../../include/text.php:1114
+#: ../../include/text.php:1175
msgid "bytes"
msgstr "octets"
-#: ../../include/text.php:1149
+#: ../../include/text.php:1210
msgid "remove category"
-msgstr "suppr. catégorie"
+msgstr "supprimer la catégorie"
-#: ../../include/text.php:1171
+#: ../../include/text.php:1280
msgid "remove from file"
-msgstr "supprimer du fichier"
+msgstr "retirer du fichier"
-#: ../../include/text.php:1229 ../../include/text.php:1241
+#: ../../include/text.php:1345 ../../include/text.php:1357
msgid "Click to open/close"
msgstr "Cliquer pour ouvrir/fermer"
-#: ../../include/text.php:1417 ../../mod/events.php:332
-msgid "link to source"
-msgstr "lien vers source"
+#: ../../include/text.php:1512 ../../mod/events.php:374
+msgid "Link to Source"
+msgstr "Lien vers la source"
-#: ../../include/text.php:1436
+#: ../../include/text.php:1531
msgid "Select a page layout: "
msgstr "Choisir une mise en page&nbsp;:"
-#: ../../include/text.php:1439 ../../include/text.php:1504
+#: ../../include/text.php:1534 ../../include/text.php:1599
msgid "default"
msgstr "défaut"
-#: ../../include/text.php:1475
+#: ../../include/text.php:1570
msgid "Page content type: "
msgstr "Type de contenu&nbsp;:"
-#: ../../include/text.php:1516
+#: ../../include/text.php:1611
msgid "Select an alternate language"
msgstr "Choisir une langue alternative"
-#: ../../include/text.php:1637 ../../include/conversation.php:117
-#: ../../mod/like.php:103 ../../mod/subthread.php:89 ../../mod/tagger.php:45
-msgid "photo"
-msgstr "photo"
-
-#: ../../include/text.php:1640 ../../include/conversation.php:120
+#: ../../include/text.php:1735 ../../include/conversation.php:123
#: ../../mod/tagger.php:49
msgid "event"
msgstr "événement"
-#: ../../include/text.php:1643 ../../include/conversation.php:145
-#: ../../mod/like.php:103 ../../mod/subthread.php:89 ../../mod/tagger.php:53
-msgid "status"
-msgstr "le statut"
-
-#: ../../include/text.php:1645 ../../include/conversation.php:147
+#: ../../include/text.php:1740 ../../include/conversation.php:150
#: ../../mod/tagger.php:55
msgid "comment"
msgstr "commentaire"
-#: ../../include/text.php:1650
+#: ../../include/text.php:1745
msgid "activity"
msgstr "activité"
-#: ../../include/text.php:1907
+#: ../../include/text.php:2004
msgid "Design"
msgstr "Conception"
-#: ../../include/text.php:1909
+#: ../../include/text.php:2006
msgid "Blocks"
msgstr "Blocs"
-#: ../../include/text.php:1910
+#: ../../include/text.php:2007
msgid "Menus"
msgstr "Menus"
-#: ../../include/text.php:1911
+#: ../../include/text.php:2008
msgid "Layouts"
-msgstr "Mises-en-page"
+msgstr "Mises en page"
-#: ../../include/text.php:1912
+#: ../../include/text.php:2009
msgid "Pages"
msgstr "Pages"
-#: ../../include/bbcode.php:128 ../../include/bbcode.php:594
-#: ../../include/bbcode.php:597 ../../include/bbcode.php:602
-#: ../../include/bbcode.php:605 ../../include/bbcode.php:608
-#: ../../include/bbcode.php:611 ../../include/bbcode.php:616
-#: ../../include/bbcode.php:619 ../../include/bbcode.php:624
-#: ../../include/bbcode.php:627 ../../include/bbcode.php:630
-#: ../../include/bbcode.php:633
-msgid "Image/photo"
-msgstr "Image/photo"
+#: ../../include/page_widgets.php:6
+msgid "New Page"
+msgstr "Nouvelle page"
-#: ../../include/bbcode.php:163 ../../include/bbcode.php:644
-msgid "Encrypted content"
-msgstr "Contenu chiffré"
+#: ../../include/page_widgets.php:39 ../../mod/blocks.php:97
+#: ../../mod/layouts.php:116 ../../mod/webpages.php:123
+msgid "View"
+msgstr "Voir"
-#: ../../include/bbcode.php:170
-msgid "QR code"
-msgstr "QR code"
+#: ../../include/page_widgets.php:40 ../../include/conversation.php:1091
+#: ../../include/ItemObject.php:592 ../../mod/editblock.php:141
+#: ../../mod/editlayout.php:135 ../../mod/editpost.php:140
+#: ../../mod/editwebpage.php:174 ../../mod/photos.php:1003
+#: ../../mod/webpages.php:124
+msgid "Preview"
+msgstr "Aperçu"
+
+#: ../../include/page_widgets.php:41 ../../mod/webpages.php:125
+msgid "Actions"
+msgstr "Actions"
+
+#: ../../include/page_widgets.php:42 ../../mod/webpages.php:126
+msgid "Page Link"
+msgstr "Lien vers la page"
+
+#: ../../include/page_widgets.php:43 ../../mod/webpages.php:127
+msgid "Title"
+msgstr "Titre"
+
+#: ../../include/page_widgets.php:44 ../../mod/webpages.php:128
+msgid "Created"
+msgstr "Créé"
+
+#: ../../include/page_widgets.php:45 ../../mod/webpages.php:129
+msgid "Edited"
+msgstr "Édité"
+
+#: ../../include/security.php:301
+msgid ""
+"The form security token was not correct. This probably happened because the "
+"form has been opened for too long (>3 hours) before submitting it."
+msgstr "Le formulaire n'est plus sécurisé, probablement parce qu'il est ouvert depuis trop longtemps (plus de 3 heures)."
+
+#: ../../include/account.php:23
+msgid "Not a valid email address"
+msgstr "Ce n'est pas une adresse de courriel valide"
+
+#: ../../include/account.php:25
+msgid "Your email domain is not among those allowed on this site"
+msgstr "Votre domaine de courriel ne fait pas partie de ceux autorisés par ce site"
+
+#: ../../include/account.php:31
+msgid "Your email address is already registered at this site."
+msgstr "Votre adresse de courriel est déjà inscrite sur ce site."
+
+#: ../../include/account.php:64
+msgid "An invitation is required."
+msgstr "Une invitation est requise."
+
+#: ../../include/account.php:68
+msgid "Invitation could not be verified."
+msgstr "Votre invitation n'a pas pu être vérifiée."
+
+#: ../../include/account.php:119
+msgid "Please enter the required information."
+msgstr "Merci d'entrer les informations requises."
+
+#: ../../include/account.php:187
+msgid "Failed to store account information."
+msgstr "Impossible de stocker les informations liées au compte."
-#: ../../include/bbcode.php:213
+#: ../../include/account.php:245
#, php-format
-msgid "%1$s wrote the following %2$s %3$s"
-msgstr "%1$s a écrit %2$s qui suit %3$s"
+msgid "Registration confirmation for %s"
+msgstr "Confirmation de l'enregistrement pour %s"
-#: ../../include/bbcode.php:215
-msgid "post"
-msgstr "l'article"
+#: ../../include/account.php:313
+#, php-format
+msgid "Registration request at %s"
+msgstr "Demande d'inscription sur %s"
-#: ../../include/bbcode.php:562 ../../include/bbcode.php:582
-msgid "$1 wrote:"
-msgstr "$1 a écrit&nbsp;:"
+#: ../../include/account.php:315 ../../include/account.php:342
+#: ../../include/account.php:399
+msgid "Administrator"
+msgstr "Administrateur"
-#: ../../include/Contact.php:120
-msgid "New window"
-msgstr "Nouvelle fenêtre"
+#: ../../include/account.php:337
+msgid "your registration password"
+msgstr "votre mot de passe d'inscription"
-#: ../../include/Contact.php:121
-msgid "Open the selected location in a different window or browser tab"
-msgstr "Ouvrir l'emplacement dans une fenêtre (ou un onglet) différent"
+#: ../../include/account.php:340 ../../include/account.php:397
+#, php-format
+msgid "Registration details for %s"
+msgstr "Détails de l'inscription à %s"
-#: ../../include/features.php:23
-msgid "General Features"
-msgstr "Fonctionnalités générales"
+#: ../../include/account.php:406
+msgid "Account approved."
+msgstr "Compte approuvé."
-#: ../../include/features.php:25
-msgid "Content Expiration"
-msgstr "Expiration de contenu"
+#: ../../include/account.php:440
+#, php-format
+msgid "Registration revoked for %s"
+msgstr "Inscription révoquée pour %s"
-#: ../../include/features.php:25
-msgid "Remove posts/comments and/or private messages at a future time"
-msgstr "Supprimer les contributions/commentaires et/ou messages privés à un moment futur"
+#: ../../include/account.php:486
+msgid "Account verified. Please login."
+msgstr "Compte vérifié. Veuillez vous connecter."
+
+#: ../../include/photos.php:15 ../../include/attach.php:119
+#: ../../include/attach.php:166 ../../include/attach.php:229
+#: ../../include/attach.php:243 ../../include/attach.php:283
+#: ../../include/attach.php:297 ../../include/attach.php:322
+#: ../../include/attach.php:513 ../../include/attach.php:585
+#: ../../include/chat.php:116 ../../include/items.php:3711
+#: ../../mod/mood.php:112 ../../mod/mitem.php:73 ../../mod/achievements.php:27
+#: ../../mod/settings.php:494 ../../mod/poke.php:128 ../../mod/api.php:26
+#: ../../mod/api.php:31 ../../mod/authtest.php:13 ../../mod/profile.php:64
+#: ../../mod/profile.php:72 ../../mod/block.php:22 ../../mod/block.php:72
+#: ../../mod/profile_photo.php:263 ../../mod/profile_photo.php:276
+#: ../../mod/blocks.php:29 ../../mod/blocks.php:44 ../../mod/profiles.php:179
+#: ../../mod/profiles.php:524 ../../mod/bookmarks.php:46
+#: ../../mod/channel.php:89 ../../mod/channel.php:193
+#: ../../mod/channel.php:236 ../../mod/chat.php:90 ../../mod/chat.php:95
+#: ../../mod/register.php:71 ../../mod/regmod.php:18 ../../mod/common.php:35
+#: ../../mod/network.php:12 ../../mod/connections.php:169
+#: ../../mod/connedit.php:254 ../../mod/delegate.php:6 ../../mod/page.php:30
+#: ../../mod/page.php:80 ../../mod/setup.php:203 ../../mod/editblock.php:34
+#: ../../mod/pdledit.php:21 ../../mod/editlayout.php:48
+#: ../../mod/editpost.php:13 ../../mod/editwebpage.php:44
+#: ../../mod/editwebpage.php:83 ../../mod/photos.php:68
+#: ../../mod/photos.php:526 ../../mod/sources.php:66 ../../mod/events.php:160
+#: ../../mod/filestorage.php:10 ../../mod/filestorage.php:59
+#: ../../mod/filestorage.php:75 ../../mod/filestorage.php:98
+#: ../../mod/fsuggest.php:78 ../../mod/suggest.php:26 ../../mod/group.php:9
+#: ../../mod/thing.php:249 ../../mod/thing.php:266 ../../mod/thing.php:301
+#: ../../mod/invite.php:13 ../../mod/invite.php:104 ../../mod/item.php:178
+#: ../../mod/item.php:186 ../../mod/item.php:916 ../../mod/layouts.php:27
+#: ../../mod/layouts.php:39 ../../mod/like.php:154
+#: ../../mod/viewconnections.php:22 ../../mod/viewconnections.php:27
+#: ../../mod/viewsrc.php:12 ../../mod/mail.php:108 ../../mod/manage.php:6
+#: ../../mod/menu.php:44 ../../mod/webpages.php:40 ../../mod/message.php:16
+#: ../../mod/new_channel.php:66 ../../mod/new_channel.php:97
+#: ../../mod/notifications.php:66 ../../mod/appman.php:66 ../../index.php:186
+#: ../../index.php:361
+msgid "Permission denied."
+msgstr "Permission refusée."
-#: ../../include/features.php:26
-msgid "Multiple Profiles"
-msgstr "Profils multiples"
+#: ../../include/photos.php:104
+#, php-format
+msgid "Image exceeds website size limit of %lu bytes"
+msgstr "L'image dépasse la taille limite de %lu octets"
-#: ../../include/features.php:26
-msgid "Ability to create multiple profiles"
-msgstr "Possibilité de créer plusieurs profils"
+#: ../../include/photos.php:111
+msgid "Image file is empty."
+msgstr "L'image est vide."
-#: ../../include/features.php:27
-msgid "Web Pages"
-msgstr "Pages web"
+#: ../../include/photos.php:140 ../../mod/profile_photo.php:216
+msgid "Unable to process image"
+msgstr "Impossible de traiter l'image"
-#: ../../include/features.php:27
-msgid "Provide managed web pages on your channel"
-msgstr "Fournir des pages web, sous votre contrôle, sur votre canal"
+#: ../../include/photos.php:212
+msgid "Photo storage failed."
+msgstr "Le stockage de l'image a échoué."
-#: ../../include/features.php:28
-msgid "Private Notes"
-msgstr "Notes privées"
+#: ../../include/photos.php:339 ../../include/conversation.php:1515
+msgid "Photo Albums"
+msgstr "Albums photo"
-#: ../../include/features.php:28
-msgid "Enables a tool to store notes and reminders"
-msgstr "Active un outil pour stocker notes et mémos"
+#: ../../include/photos.php:343 ../../mod/photos.php:697
+#: ../../mod/photos.php:1199
+msgid "Upload New Photos"
+msgstr "Ajouter des photos"
-#: ../../include/features.php:33
-msgid "Extended Identity Sharing"
-msgstr "Partage d'identité étendue"
+#: ../../include/acl_selectors.php:240
+msgid "Visible to your default audience"
+msgstr "Visible pour vos contacts seulement."
-#: ../../include/features.php:33
-msgid ""
-"Share your identity with all websites on the internet. When disabled, "
-"identity is only shared with sites in the matrix."
-msgstr "Partage votre identité avec tous les sites web du Monde. Si décoché, l'identité sera seulement partagée avec les sites de la matrice."
+#: ../../include/acl_selectors.php:241
+msgid "Show"
+msgstr "Voir plus"
-#: ../../include/features.php:34
-msgid "Expert Mode"
-msgstr "Mode expert"
+#: ../../include/acl_selectors.php:242
+msgid "Don't show"
+msgstr "Cacher"
-#: ../../include/features.php:34
-msgid "Enable Expert Mode to provide advanced configuration options"
-msgstr "Activer le mode expert pour accéder aux options avancées"
+#: ../../include/acl_selectors.php:248 ../../mod/chat.php:209
+#: ../../mod/photos.php:604 ../../mod/photos.php:958
+#: ../../mod/filestorage.php:128
+msgid "Permissions"
+msgstr "Permissions"
-#: ../../include/features.php:35
-msgid "Premium Channel"
-msgstr "Canal Premium"
+#: ../../include/acl_selectors.php:249 ../../include/ItemObject.php:289
+msgid "Close"
+msgstr "Fermer"
-#: ../../include/features.php:35
-msgid ""
-"Allows you to set restrictions and terms on those that connect with your "
-"channel"
-msgstr "Vous permet d'appliquer des règles et restrictions aux relations de votre canal"
+#: ../../include/activities.php:39
+msgid " and "
+msgstr " et "
-#: ../../include/features.php:40
-msgid "Post Composition Features"
-msgstr "Fonctionnalités de composition"
+#: ../../include/activities.php:47
+msgid "public profile"
+msgstr "profil public"
-#: ../../include/features.php:41
-msgid "Richtext Editor"
-msgstr "Éditeur enrichi"
+#: ../../include/activities.php:52
+#, php-format
+msgid "%1$s changed %2$s to &ldquo;%3$s&rdquo;"
+msgstr "%1$s a changé %2$s en &ldquo;%3$s&rdquo;"
-#: ../../include/features.php:41
-msgid "Enable richtext editor"
-msgstr "Activer l'éditeur de texte enrichi"
+#: ../../include/activities.php:53
+#, php-format
+msgid "Visit %1$s's %2$s"
+msgstr "Visiter %1$s sur %2$s"
-#: ../../include/features.php:42
-msgid "Post Preview"
-msgstr "Aperçu avant publication"
+#: ../../include/activities.php:56
+#, php-format
+msgid "%1$s has an updated %2$s, changing %3$s."
+msgstr "%1$s a mis à jour %2$s, modifiant %3$s."
-#: ../../include/features.php:42
-msgid "Allow previewing posts and comments before publishing them"
-msgstr "Permettre de voir les publications/commentaires avant de les valider"
+#: ../../include/api.php:1036
+msgid "Public Timeline"
+msgstr "Fil public"
-#: ../../include/features.php:43
-msgid "Automatically import channel content from other channels or feeds"
-msgstr "Importe automatiquement le contenus d'autres canaux ou flux dans le canal en cours"
+#: ../../include/attach.php:224 ../../include/attach.php:278
+msgid "Item was not found."
+msgstr "Élément introuvable."
-#: ../../include/features.php:44
-msgid "Even More Encryption"
-msgstr "Encore plus de chiffrement"
+#: ../../include/attach.php:335
+msgid "No source file."
+msgstr "Pas de fichier source."
-#: ../../include/features.php:44
-msgid ""
-"Allow optional encryption of content end-to-end with a shared secret key"
-msgstr "Permettre le chiffrement - optionnel - du contenu de bout-en-bout au moyen d'un secret partagé"
+#: ../../include/attach.php:352
+msgid "Cannot locate file to replace"
+msgstr "Impossible de trouver le fichier à remplacer."
-#: ../../include/features.php:49
-msgid "Network and Stream Filtering"
-msgstr "Filtrage du réseau et des flux"
+#: ../../include/attach.php:370
+msgid "Cannot locate file to revise/update"
+msgstr "Impossible de trouver le fichier à corriger/mettre à jour"
-#: ../../include/features.php:50
-msgid "Search by Date"
-msgstr "Chercher par date"
+#: ../../include/attach.php:381
+#, php-format
+msgid "File exceeds size limit of %d"
+msgstr "Le fichier dépasse la taille limite de %d"
-#: ../../include/features.php:50
-msgid "Ability to select posts by date ranges"
-msgstr "Pouvoir choisir des publications par date"
+#: ../../include/attach.php:393
+#, php-format
+msgid "You have reached your limit of %1$.0f Mbytes attachment storage."
+msgstr "Vous avez atteint votre limite de %1$.0f méga-octets autorisés pour le stockage des pièces-jointes"
-#: ../../include/features.php:51
-msgid "Collections Filter"
-msgstr "Filtre des collections"
+#: ../../include/attach.php:475
+msgid "File upload failed. Possible system limit or action terminated."
+msgstr "Envoi du fichier impossible. Limite système ou action avortée."
-#: ../../include/features.php:51
-msgid "Enable widget to display Network posts only from selected collections"
-msgstr "Activer une boîte qui permet de filtrer les publications du réseau parmi les collections selectionnées"
+#: ../../include/attach.php:487
+msgid "Stored file could not be verified. Upload failed."
+msgstr "Le fichier stocké n'a pu être vérifié. Envoi impossible."
-#: ../../include/features.php:52
-msgid "Save search terms for re-use"
-msgstr "Sauver des termes de recherche pour utilisation ultérieure"
+#: ../../include/attach.php:528 ../../include/attach.php:545
+msgid "Path not available."
+msgstr "Chemin non disponible."
-#: ../../include/features.php:53
-msgid "Network Personal Tab"
-msgstr "Onglet \"réseau personnel\""
+#: ../../include/attach.php:590
+msgid "Empty pathname"
+msgstr "Chemin vide"
-#: ../../include/features.php:53
-msgid "Enable tab to display only Network posts that you've interacted on"
-msgstr "Activer un onglet affichant seulement les publications du réseau sur lesquelles vous êtes intervenu"
+#: ../../include/attach.php:606
+msgid "duplicate filename or path"
+msgstr "doublon de chemin ou de fichier"
-#: ../../include/features.php:54
-msgid "Network New Tab"
-msgstr "Onglet \"nouveautés réseau\""
+#: ../../include/attach.php:630
+msgid "Path not found."
+msgstr "Chemin introuvable."
-#: ../../include/features.php:54
-msgid "Enable tab to display all new Network activity"
-msgstr "Activer un onglet avec toute activité récente sur le réseau"
+#: ../../include/attach.php:681
+msgid "mkdir failed."
+msgstr "mkdir a échoué."
-#: ../../include/features.php:55
-msgid "Affinity Tool"
-msgstr "Gérer l'affinité"
+#: ../../include/attach.php:685
+msgid "database storage failed."
+msgstr "l'écriture dans la BD a échoué"
-#: ../../include/features.php:55
-msgid "Filter stream activity by depth of relationships"
-msgstr "Filtrer le flux d'activité en fonction de la profondeur des relations"
+#: ../../include/plugin.php:504 ../../include/plugin.php:506
+msgid "Click here to upgrade."
+msgstr "Cliquez ici pour mettre à jour."
-#: ../../include/features.php:56
-msgid "Suggest Channels"
-msgstr "Suggérer des canaux"
+#: ../../include/plugin.php:512
+msgid "This action exceeds the limits set by your subscription plan."
+msgstr "Cette action outrepasserait les limites prévues par votre forfait."
-#: ../../include/features.php:56
-msgid "Show channel suggestions"
-msgstr "Montrer les suggestions de canaux"
+#: ../../include/plugin.php:517
+msgid "This action is not available under your subscription plan."
+msgstr "Cette action n'est pas possible avec la formule choisie."
-#: ../../include/features.php:61
-msgid "Post/Comment Tools"
-msgstr "Gérer les publications/commentaires"
+#: ../../include/bb2diaspora.php:463 ../../include/event.php:11
+msgid "l F d, Y \\@ g:i A"
+msgstr "l d F Y \\à G\\hi"
-#: ../../include/features.php:63
-msgid "Edit Sent Posts"
-msgstr "Éditer les publications envoyées"
+#: ../../include/bb2diaspora.php:469 ../../include/event.php:20
+msgid "Starts:"
+msgstr "Début&nbsp;:"
-#: ../../include/features.php:63
-msgid "Edit and correct posts and comments after sending"
-msgstr "Permettre d'éditer/corriger les publications/commentaires après envoi"
+#: ../../include/bb2diaspora.php:477 ../../include/event.php:30
+msgid "Finishes:"
+msgstr "Fin&nbsp;:"
-#: ../../include/features.php:64
-msgid "Tagging"
-msgstr "Marquage"
+#: ../../include/bb2diaspora.php:485 ../../include/event.php:40
+#: ../../include/identity.php:757 ../../mod/directory.php:156
+#: ../../mod/dirprofile.php:105 ../../mod/events.php:504
+msgid "Location:"
+msgstr "Emplacement&nbsp;:"
-#: ../../include/features.php:64
-msgid "Ability to tag existing posts"
-msgstr "Permettre de marquer les publications existantes"
+#: ../../include/nav.php:81 ../../include/nav.php:108 ../../boot.php:1497
+msgid "Logout"
+msgstr "Déconnexion"
-#: ../../include/features.php:65
-msgid "Post Categories"
-msgstr "Catégoriser les publications"
+#: ../../include/nav.php:81 ../../include/nav.php:108
+msgid "End this session"
+msgstr "Mettre fin à la session"
-#: ../../include/features.php:65
-msgid "Add categories to your posts"
-msgstr "Ajouter des catégories à vos publications"
+#: ../../include/nav.php:84 ../../include/nav.php:142
+msgid "Home"
+msgstr "Canal"
-#: ../../include/features.php:66
-msgid "Ability to file posts under folders"
-msgstr "Permettre de classer les publications dans des dossiers"
+#: ../../include/nav.php:84
+msgid "Your posts and conversations"
+msgstr "Vos publications et conversations"
-#: ../../include/features.php:67
-msgid "Dislike Posts"
-msgstr "Détester une publication"
+#: ../../include/nav.php:85 ../../include/conversation.php:940
+#: ../../mod/connedit.php:393 ../../mod/connedit.php:507
+msgid "View Profile"
+msgstr "Voir profil"
-#: ../../include/features.php:67
-msgid "Ability to dislike posts/comments"
-msgstr "Pouvoir détester les publications/commentaires"
+#: ../../include/nav.php:85
+msgid "Your profile page"
+msgstr "Votre profil"
-#: ../../include/features.php:68
-msgid "Star Posts"
-msgstr "Mettre en avant les publications"
+#: ../../include/nav.php:87
+msgid "Edit Profiles"
+msgstr "Éditer les profils"
-#: ../../include/features.php:68
-msgid "Ability to mark special posts with a star indicator"
-msgstr "Pouvoir marquer certaines publications d'une étoile"
+#: ../../include/nav.php:87
+msgid "Manage/Edit profiles"
+msgstr "Gérer/éditer les profils"
-#: ../../include/features.php:69
-msgid "Tag Cloud"
-msgstr "Nuage de tags"
+#: ../../include/nav.php:89 ../../include/identity.php:730
+msgid "Edit Profile"
+msgstr "Éditer le profil"
-#: ../../include/features.php:69
-msgid "Provide a personal tag cloud on your channel page"
-msgstr "Afficher un nuage de vos tags sur votre canal"
+#: ../../include/nav.php:89
+msgid "Edit your profile"
+msgstr "Éditer votre profil"
+
+#: ../../include/nav.php:91
+msgid "Your photos"
+msgstr "Vos photos"
+
+#: ../../include/nav.php:92
+msgid "Your files"
+msgstr "Vos fichiers"
+
+#: ../../include/nav.php:97
+msgid "Your chatrooms"
+msgstr "Vos salons"
+
+#: ../../include/nav.php:100
+msgid "Your bookmarks"
+msgstr "Vos favoris"
+
+#: ../../include/nav.php:102
+msgid "Your webpages"
+msgstr "Vos pages web"
+
+#: ../../include/nav.php:106
+msgid "Sign in"
+msgstr "Connexion"
+
+#: ../../include/nav.php:123
+#, php-format
+msgid "%s - click to logout"
+msgstr "%s - cliquer ici pour déconnecter"
+
+#: ../../include/nav.php:128
+msgid "Click to authenticate to your home hub"
+msgstr "S'authentifier auprès de votre hub"
+
+#: ../../include/nav.php:142
+msgid "Home Page"
+msgstr "Page d'accueil"
+
+#: ../../include/nav.php:146 ../../mod/register.php:221 ../../boot.php:1474
+msgid "Register"
+msgstr "S'inscrire"
+
+#: ../../include/nav.php:146
+msgid "Create an account"
+msgstr "Créer un compte"
+
+#: ../../include/nav.php:151
+msgid "Help and documentation"
+msgstr "Aide et documentation"
+
+#: ../../include/nav.php:154 ../../include/widgets.php:79
+#: ../../mod/apps.php:33
+msgid "Apps"
+msgstr "Applications"
+
+#: ../../include/nav.php:154
+msgid "Applications, utilities, links, games"
+msgstr "Applications, utilitaires, liens, jeux"
+
+#: ../../include/nav.php:156
+msgid "Search site content"
+msgstr "Rechercher parmi le contenu du site"
+
+#: ../../include/nav.php:159
+msgid "Channel Locator"
+msgstr "Localisation de canaux"
+
+#: ../../include/nav.php:170
+msgid "Your matrix"
+msgstr "Votre matrice"
+
+#: ../../include/nav.php:171
+msgid "Mark all matrix notifications seen"
+msgstr "Marquer toutes les notifications de la matrice comme vues"
+
+#: ../../include/nav.php:173
+msgid "Channel home"
+msgstr "Mon canal"
+
+#: ../../include/nav.php:174
+msgid "Mark all channel notifications seen"
+msgstr "Marquer toutes les notifications du canal comme vues"
+
+#: ../../include/nav.php:177 ../../mod/connections.php:386
+msgid "Connections"
+msgstr "Relations"
+
+#: ../../include/nav.php:180
+msgid "Notices"
+msgstr "Notifications"
+
+#: ../../include/nav.php:180
+msgid "Notifications"
+msgstr "Notifications"
+
+#: ../../include/nav.php:181
+msgid "See all notifications"
+msgstr "Voir toutes les notifications"
+
+#: ../../include/nav.php:182 ../../mod/notifications.php:99
+msgid "Mark all system notifications seen"
+msgstr "Marquer toutes les notifications système comme vues"
+
+#: ../../include/nav.php:184
+msgid "Private mail"
+msgstr "Messages privés"
+
+#: ../../include/nav.php:185
+msgid "See all private messages"
+msgstr "Voir tous les messages privés"
+
+#: ../../include/nav.php:186
+msgid "Mark all private messages seen"
+msgstr "Marquer tous les messages privés comme vus"
+
+#: ../../include/nav.php:187
+msgid "Inbox"
+msgstr "Boîte de réception"
+
+#: ../../include/nav.php:188
+msgid "Outbox"
+msgstr "Boîte d'envoi"
+
+#: ../../include/nav.php:189 ../../include/widgets.php:536
+msgid "New Message"
+msgstr "Nouveau message"
+
+#: ../../include/nav.php:192
+msgid "Event Calendar"
+msgstr "Calendrier des événements"
+
+#: ../../include/nav.php:193
+msgid "See all events"
+msgstr "Voir tous les événements"
+
+#: ../../include/nav.php:194
+msgid "Mark all events seen"
+msgstr "Marquer tous les événements comme vus"
+
+#: ../../include/nav.php:196
+msgid "Manage Your Channels"
+msgstr "Gérer vos canaux"
+
+#: ../../include/nav.php:198
+msgid "Account/Channel Settings"
+msgstr "Réglages du Compte/Canal"
+
+#: ../../include/nav.php:206 ../../mod/admin.php:123
+msgid "Admin"
+msgstr "Administrateur"
+
+#: ../../include/nav.php:206
+msgid "Site Setup and Configuration"
+msgstr "Configuration du site"
+
+#: ../../include/nav.php:231
+msgid "Nothing new here"
+msgstr "Aucun nouveau contenu trouvé"
+
+#: ../../include/nav.php:235
+msgid "Please wait..."
+msgstr "Merci de patienter..."
+
+#: ../../include/bookmarks.php:35
+#, php-format
+msgid "%1$s's bookmarks"
+msgstr "Favoris de %1$s"
-#: ../../include/contact_selectors.php:30
-msgid "Unknown | Not categorised"
-msgstr "Inconnu / Non-classé"
+#: ../../include/taxonomy.php:210
+msgid "Tags"
+msgstr "Étiquettes"
+
+#: ../../include/taxonomy.php:227
+msgid "Keywords"
+msgstr "Mots-clefs"
+
+#: ../../include/taxonomy.php:252
+msgid "have"
+msgstr "ont"
+
+#: ../../include/taxonomy.php:252
+msgid "has"
+msgstr "a"
+
+#: ../../include/taxonomy.php:253
+msgid "want"
+msgstr "veulent"
+
+#: ../../include/taxonomy.php:253
+msgid "wants"
+msgstr "veut"
+
+#: ../../include/taxonomy.php:254 ../../include/ItemObject.php:208
+msgid "like"
+msgstr "aime"
-#: ../../include/contact_selectors.php:31
-msgid "Block immediately"
-msgstr "Bloquer directement"
+#: ../../include/taxonomy.php:254
+msgid "likes"
+msgstr "aiment"
-#: ../../include/contact_selectors.php:32
-msgid "Shady, spammer, self-marketer"
-msgstr "Douteux, spammeur, donne dans l'auto-promotion"
+#: ../../include/taxonomy.php:255 ../../include/ItemObject.php:209
+msgid "dislike"
+msgstr "déteste"
-#: ../../include/contact_selectors.php:33
-msgid "Known to me, but no opinion"
-msgstr "M'est connu, n'ai pas d'opinion à son sujet"
+#: ../../include/taxonomy.php:255
+msgid "dislikes"
+msgstr "détestent"
-#: ../../include/contact_selectors.php:34
-msgid "OK, probably harmless"
-msgstr "OK, probablement anodin"
+#: ../../include/taxonomy.php:338 ../../include/identity.php:999
+#: ../../include/ItemObject.php:134
+msgctxt "noun"
+msgid "Like"
+msgid_plural "Likes"
+msgstr[0] "J'aime"
+msgstr[1] "J'aime"
-#: ../../include/contact_selectors.php:35
-msgid "Reputable, has my trust"
-msgstr "Réputé, je lui fais confiance"
+#: ../../include/comanche.php:35 ../../view/theme/apw/php/config.php:185
+msgid "Default"
+msgstr "Défaut"
-#: ../../include/contact_selectors.php:54
+#: ../../include/contact_selectors.php:56
msgid "Frequently"
msgstr "Constamment"
-#: ../../include/contact_selectors.php:55
+#: ../../include/contact_selectors.php:57
msgid "Hourly"
msgstr "Chaque heure"
-#: ../../include/contact_selectors.php:56
+#: ../../include/contact_selectors.php:58
msgid "Twice daily"
msgstr "Deux fois par jour"
-#: ../../include/contact_selectors.php:57
+#: ../../include/contact_selectors.php:59
msgid "Daily"
msgstr "Chaque jour"
-#: ../../include/contact_selectors.php:58
+#: ../../include/contact_selectors.php:60
msgid "Weekly"
msgstr "Chaque semaine"
-#: ../../include/contact_selectors.php:59
+#: ../../include/contact_selectors.php:61
msgid "Monthly"
msgstr "Chaque mois"
-#: ../../include/contact_selectors.php:74
+#: ../../include/contact_selectors.php:76
msgid "Friendica"
msgstr "Friendica"
-#: ../../include/contact_selectors.php:75
+#: ../../include/contact_selectors.php:77
msgid "OStatus"
msgstr "OStatus"
-#: ../../include/contact_selectors.php:76
+#: ../../include/contact_selectors.php:78
msgid "RSS/Atom"
msgstr "RSS/Atom"
-#: ../../include/contact_selectors.php:77 ../../mod/admin.php:741
-#: ../../mod/admin.php:750 ../../boot.php:1426
+#: ../../include/contact_selectors.php:79 ../../mod/admin.php:763
+#: ../../mod/admin.php:772 ../../boot.php:1500
msgid "Email"
msgstr "Courriel"
-#: ../../include/contact_selectors.php:78
+#: ../../include/contact_selectors.php:80
msgid "Diaspora"
msgstr "Diaspora"
-#: ../../include/contact_selectors.php:79
+#: ../../include/contact_selectors.php:81
msgid "Facebook"
msgstr "Facebook"
-#: ../../include/contact_selectors.php:80
+#: ../../include/contact_selectors.php:82
msgid "Zot!"
msgstr "Zot!"
-#: ../../include/contact_selectors.php:81
+#: ../../include/contact_selectors.php:83
msgid "LinkedIn"
msgstr "Linkedin"
-#: ../../include/contact_selectors.php:82
+#: ../../include/contact_selectors.php:84
msgid "XMPP/IM"
msgstr "XMPP/IM"
-#: ../../include/contact_selectors.php:83
+#: ../../include/contact_selectors.php:85
msgid "MySpace"
msgstr "MySpace"
+#: ../../include/contact_widgets.php:14
+#, php-format
+msgid "%d invitation available"
+msgid_plural "%d invitations available"
+msgstr[0] "%d invitation disponible"
+msgstr[1] "%d invitations disponibles"
+
+#: ../../include/contact_widgets.php:19 ../../mod/admin.php:455
+msgid "Advanced"
+msgstr "Avancé"
+
+#: ../../include/contact_widgets.php:22
+msgid "Find Channels"
+msgstr "Trouver des canaux"
+
+#: ../../include/contact_widgets.php:23
+msgid "Enter name or interest"
+msgstr "Saisir nom ou centre d'intérêt"
+
+#: ../../include/contact_widgets.php:24
+msgid "Connect/Follow"
+msgstr "Ajouter/Suivre"
+
+#: ../../include/contact_widgets.php:25
+msgid "Examples: Robert Morgenstein, Fishing"
+msgstr "Exemples: Robert Morgenstein, Course à pieds"
+
+#: ../../include/contact_widgets.php:26 ../../mod/connections.php:392
+#: ../../mod/directory.php:222 ../../mod/directory.php:227
+msgid "Find"
+msgstr "Trouver"
+
+#: ../../include/contact_widgets.php:27 ../../mod/suggest.php:59
+msgid "Channel Suggestions"
+msgstr "Canaux suggérés"
+
+#: ../../include/contact_widgets.php:29
+msgid "Random Profile"
+msgstr "Un profil au hasard"
+
+#: ../../include/contact_widgets.php:30
+msgid "Invite Friends"
+msgstr "Inviter des amis"
+
+#: ../../include/contact_widgets.php:32
+msgid "Exammple: name=fred and country=iceland"
+msgstr "Exemple: name=fred and country=iceland"
+
+#: ../../include/contact_widgets.php:33
+msgid "Advanced Find"
+msgstr "Recherche avancée"
+
+#: ../../include/contact_widgets.php:58 ../../include/features.php:69
+#: ../../include/widgets.php:296
+msgid "Saved Folders"
+msgstr "Dossiers sauvegardés"
+
+#: ../../include/contact_widgets.php:61 ../../include/contact_widgets.php:96
+#: ../../include/widgets.php:299
+msgid "Everything"
+msgstr "Tout"
+
+#: ../../include/contact_widgets.php:93 ../../include/widgets.php:29
+msgid "Categories"
+msgstr "Catégories"
+
+#: ../../include/contact_widgets.php:126
+#, php-format
+msgid "%d connection in common"
+msgid_plural "%d connections in common"
+msgstr[0] "%d relation en commun"
+msgstr[1] "%d relations en commun"
+
+#: ../../include/contact_widgets.php:131
+msgid "show more"
+msgstr "montrer plus"
+
+#: ../../include/event.php:326
+msgid "This event has been added to your calendar."
+msgstr "Cet événement a été ajouté à votre calendrier."
+
+#: ../../include/zot.php:624
+msgid "Invalid data packet"
+msgstr "Paquet de données invalide"
+
+#: ../../include/zot.php:638
+msgid "Unable to verify channel signature"
+msgstr "Impossible de vérifier la signature du canal"
+
+#: ../../include/zot.php:835
+#, php-format
+msgid "Unable to verify site signature for %s"
+msgstr "Impossible de vérifier la signature de site pour %s"
+
#: ../../include/datetime.php:43 ../../include/datetime.php:45
msgid "Miscellaneous"
msgstr "Divers"
@@ -1222,1139 +1371,1855 @@ msgstr "secondes"
msgid "%1$d %2$s ago"
msgstr "il y a %1$d %2$s"
-#: ../../include/dba/dba_driver.php:50
+#: ../../include/datetime.php:504
#, php-format
-msgid "Cannot locate DNS info for database server '%s'"
-msgstr "Impossible de trouver les infos DNS du serveur de DB '%s'"
+msgid "%1$s's birthday"
+msgstr "Anniversaire de %1$s"
-#: ../../include/event.php:11 ../../include/bb2diaspora.php:433
-msgid "l F d, Y \\@ g:i A"
-msgstr "l d F Y \\à G\\hi"
+#: ../../include/datetime.php:505
+#, php-format
+msgid "Happy Birthday %1$s"
+msgstr "Joyeux Anniversaire %1$s"
-#: ../../include/event.php:20 ../../include/bb2diaspora.php:439
-msgid "Starts:"
-msgstr "Début&nbsp;:"
+#: ../../include/dir_fns.php:36
+msgid "Sort Options"
+msgstr "Options de tri"
-#: ../../include/event.php:30 ../../include/bb2diaspora.php:447
-msgid "Finishes:"
-msgstr "Fin&nbsp;:"
+#: ../../include/dir_fns.php:37
+msgid "Alphabetic"
+msgstr "Alphabétique"
-#: ../../include/event.php:40 ../../include/identity.php:679
-#: ../../include/bb2diaspora.php:455 ../../mod/events.php:462
-#: ../../mod/directory.php:157 ../../mod/dirprofile.php:111
-msgid "Location:"
-msgstr "Localisation&nbsp;:"
+#: ../../include/dir_fns.php:38
+msgid "Reverse Alphabetic"
+msgstr "Alphabétique inversé"
-#: ../../include/group.php:25
-msgid ""
-"A deleted group with this name was revived. Existing item permissions "
-"<strong>may</strong> apply to this group and any future members. If this is "
-"not what you intended, please create another group with a different name."
-msgstr "Un groupe supprimé portant ce nom a été ressuscité. Les permissions liées aux éléments existants <strong>peuvent</strong> s'appliquer au groupe et aux membres futurs. Si ce n'est pas ce que vous attendiez, merci de recréer un nouveau groupe avec un nom différent."
+#: ../../include/dir_fns.php:39
+msgid "Newest to Oldest"
+msgstr "Anté-chronologique"
-#: ../../include/group.php:223
-msgid "Default privacy group for new contacts"
-msgstr "Groupe de confidentialité par défaut pour les nouveaux contacts"
+#: ../../include/dir_fns.php:51
+msgid "Enable Safe Search"
+msgstr "Activer la recherche sûre"
-#: ../../include/group.php:242 ../../mod/admin.php:750
-msgid "All Channels"
-msgstr "Tous canaux"
+#: ../../include/dir_fns.php:53
+msgid "Disable Safe Search"
+msgstr "Désactiver la recherche sûre"
-#: ../../include/group.php:264
-msgid "edit"
-msgstr "éditer"
+#: ../../include/dir_fns.php:55
+msgid "Safe Mode"
+msgstr "Mode sûr"
-#: ../../include/group.php:285
-msgid "Collections"
-msgstr "Collections"
+#: ../../include/enotify.php:41
+msgid "Red Matrix Notification"
+msgstr "Notification Matrice Rouge"
-#: ../../include/group.php:286
-msgid "Edit collection"
-msgstr "Éditer collection"
+#: ../../include/enotify.php:42
+msgid "redmatrix"
+msgstr "Matrice Rouge"
-#: ../../include/group.php:287
-msgid "Create a new collection"
-msgstr "Créer collection"
+#: ../../include/enotify.php:44
+msgid "Thank You,"
+msgstr "Merci,"
-#: ../../include/group.php:288
-msgid "Channels not in any collection"
-msgstr "Canaux dans aucune collection"
+#: ../../include/enotify.php:46
+#, php-format
+msgid "%s Administrator"
+msgstr "l'administrateur de %s"
-#: ../../include/js_strings.php:5
-msgid "Delete this item?"
-msgstr "Supprimer cet élément?"
+#: ../../include/enotify.php:81
+#, php-format
+msgid "%s <!item_type!>"
+msgstr "%s <!item_type!>"
-#: ../../include/js_strings.php:6 ../../include/ItemObject.php:547
-#: ../../mod/photos.php:993 ../../mod/photos.php:1080
-msgid "Comment"
-msgstr "Commenter"
+#: ../../include/enotify.php:85
+#, php-format
+msgid "[Red:Notify] New mail received at %s"
+msgstr "[Red:Notification] Nouveau message reçu sur %s"
-#: ../../include/js_strings.php:7 ../../include/ItemObject.php:281
-#: ../../include/contact_widgets.php:125
-msgid "show more"
-msgstr "montrer plus"
+#: ../../include/enotify.php:87
+#, php-format
+msgid "%1$s, %2$s sent you a new private message at %3$s."
+msgstr "%1$s, vous avez reçu un message privé sur %3$s, de la part de %2$s."
-#: ../../include/js_strings.php:8
-msgid "show fewer"
-msgstr "montrer moins"
+#: ../../include/enotify.php:88
+#, php-format
+msgid "%1$s sent you %2$s."
+msgstr "%1$s vous a envoyé %2$s."
-#: ../../include/js_strings.php:9
-msgid "Password too short"
-msgstr "Mot de passe trop court"
+#: ../../include/enotify.php:88
+msgid "a private message"
+msgstr "un message privé"
-#: ../../include/js_strings.php:10
-msgid "Passwords do not match"
-msgstr "Les mots de passe ne correspondent pas"
+#: ../../include/enotify.php:89
+#, php-format
+msgid "Please visit %s to view and/or reply to your private messages."
+msgstr "Merci de visiter %s pour voir et/ou répondre à vos messages privés."
-#: ../../include/js_strings.php:11 ../../mod/photos.php:39
-msgid "everybody"
-msgstr "tout le monde"
+#: ../../include/enotify.php:144
+#, php-format
+msgid "%1$s, %2$s commented on [zrl=%3$s]a %4$s[/zrl]"
+msgstr "%1$s, %2$s a commenté sur [zrl=%3$s]%4$s[/zrl]"
-#: ../../include/js_strings.php:12
-msgid "Secret Passphrase"
-msgstr "Phrase de passe secrète"
+#: ../../include/enotify.php:152
+#, php-format
+msgid "%1$s, %2$s commented on [zrl=%3$s]%4$s's %5$s[/zrl]"
+msgstr "%1$s, %2$s a commenté sur [zrl=%3$s]%5$s de %4$s[/zrl]"
-#: ../../include/js_strings.php:13
-msgid "Passphrase hint"
-msgstr "Indice pour la phrase de passe"
+#: ../../include/enotify.php:161
+#, php-format
+msgid "%1$s, %2$s commented on [zrl=%3$s]your %4$s[/zrl]"
+msgstr "%1$s, %2$s a commenté [zrl=%3$s]votre %4$s[/zrl]"
-#: ../../include/js_strings.php:15
-msgid "timeago.prefixAgo"
-msgstr "timeago.prefixAgo"
+#: ../../include/enotify.php:172
+#, php-format
+msgid "[Red:Notify] Comment to conversation #%1$d by %2$s"
+msgstr "[Red:Notification] Commentaire de %2$s sur conversation #%1$d"
-#: ../../include/js_strings.php:16
-msgid "timeago.suffixAgo"
-msgstr "timeago.suffixAgo"
+#: ../../include/enotify.php:173
+#, php-format
+msgid "%1$s, %2$s commented on an item/conversation you have been following."
+msgstr "%1$s, %2$s a commenté un élément de conversation que vous suivez."
-#: ../../include/js_strings.php:17
-msgid "ago"
-msgstr "auparavant"
+#: ../../include/enotify.php:176 ../../include/enotify.php:191
+#: ../../include/enotify.php:217 ../../include/enotify.php:236
+#: ../../include/enotify.php:250
+#, php-format
+msgid "Please visit %s to view and/or reply to the conversation."
+msgstr "Merci de visiter %s pour voir et/ou répondre sur cette conversation."
-#: ../../include/js_strings.php:18
-msgid "from now"
-msgstr "de maintenant"
+#: ../../include/enotify.php:182
+#, php-format
+msgid "[Red:Notify] %s posted to your profile wall"
+msgstr "[Red:Notification] %s a publié sur votre profil"
-#: ../../include/js_strings.php:19
-msgid "less than a minute"
-msgstr "moins d'une minute"
+#: ../../include/enotify.php:184
+#, php-format
+msgid "%1$s, %2$s posted to your profile wall at %3$s"
+msgstr "%1$s, %2$s a publié sur votre profil à %3$s"
-#: ../../include/js_strings.php:20
-msgid "about a minute"
-msgstr "environ une minute"
+#: ../../include/enotify.php:186
+#, php-format
+msgid "%1$s, %2$s posted to [zrl=%3$s]your wall[/zrl]"
+msgstr "%1$s, %2$s a publié sur [zrl=%3$s]votre profil[/zrl]"
-#: ../../include/js_strings.php:21
+#: ../../include/enotify.php:210
#, php-format
-msgid "%d minutes"
-msgstr "%d minutes"
+msgid "[Red:Notify] %s tagged you"
+msgstr "[Red:Notification] %s vous a étiqueté"
-#: ../../include/js_strings.php:22
-msgid "about an hour"
-msgstr "environ une heure"
+#: ../../include/enotify.php:211
+#, php-format
+msgid "%1$s, %2$s tagged you at %3$s"
+msgstr "%1$s, vous avez été étiqueté sur %3$s par %2$s"
-#: ../../include/js_strings.php:23
+#: ../../include/enotify.php:212
#, php-format
-msgid "about %d hours"
-msgstr "environ %d heures"
+msgid "%1$s, %2$s [zrl=%3$s]tagged you[/zrl]."
+msgstr "%1$s, %2$s [zrl=%3$s]vous a étiqueté[/zrl]."
-#: ../../include/js_strings.php:24
-msgid "a day"
-msgstr "un jour"
+#: ../../include/enotify.php:225
+#, php-format
+msgid "[Red:Notify] %1$s poked you"
+msgstr "[Red:Notification] %1$s vous a cogné"
-#: ../../include/js_strings.php:25
+#: ../../include/enotify.php:226
#, php-format
-msgid "%d days"
-msgstr "%d jours"
+msgid "%1$s, %2$s poked you at %3$s"
+msgstr "%1$s, %2$s vous a cogné sur %3$s
-#: ../../include/js_strings.php:26
-msgid "about a month"
-msgstr "environ un mois"
+#: ../../include/enotify.php:227
+#, php-format
+msgid "%1$s, %2$s [zrl=%2$s]poked you[/zrl]."
+msgstr "%1$s, %2$s [zrl=%2$s]vous a cogné[/zrl]."
-#: ../../include/js_strings.php:27
+#: ../../include/enotify.php:243
#, php-format
-msgid "%d months"
-msgstr "%d mois"
+msgid "[Red:Notify] %s tagged your post"
+msgstr "[Red:Notification] %s a étiqueté votre publication"
-#: ../../include/js_strings.php:28
-msgid "about a year"
-msgstr "environ un an"
+#: ../../include/enotify.php:244
+#, php-format
+msgid "%1$s, %2$s tagged your post at %3$s"
+msgstr "%1$s, %2$s a étiqueté votre publication sur %3$s"
-#: ../../include/js_strings.php:29
+#: ../../include/enotify.php:245
#, php-format
-msgid "%d years"
-msgstr "%d années"
+msgid "%1$s, %2$s tagged [zrl=%3$s]your post[/zrl]"
+msgstr "%1$s, %2$s a étiqueté [zrl=%3$s]votre publication[/zrl]"
-#: ../../include/js_strings.php:30
-msgid " "
-msgstr " "
+#: ../../include/enotify.php:257
+msgid "[Red:Notify] Introduction received"
+msgstr "[Red:Notification] Nouvelle introduction"
-#: ../../include/js_strings.php:31
-msgid "timeago.numbers"
-msgstr "timeago.numbers"
+#: ../../include/enotify.php:258
+#, php-format
+msgid "%1$s, you've received an new connection request from '%2$s' at %3$s"
+msgstr "%1$s, vous avez reçu une demande de mise en relation de '%2$s' sur %3$s"
-#: ../../include/message.php:18
-msgid "No recipient provided."
-msgstr "Pas de destinataire."
+#: ../../include/enotify.php:259
+#, php-format
+msgid ""
+"%1$s, you've received [zrl=%2$s]a new connection request[/zrl] from %3$s."
+msgstr "%1$s, vous avez reçu [zrl=%2$s]une demande de mise en relation[/zrl] de %3$s."
-#: ../../include/message.php:23
-msgid "[no subject]"
-msgstr "[sans objet]"
+#: ../../include/enotify.php:263 ../../include/enotify.php:282
+#, php-format
+msgid "You may visit their profile at %s"
+msgstr "Vous pouvez visiter leur profil sur %s"
-#: ../../include/message.php:42
-msgid "Unable to determine sender."
-msgstr "Impossible de déterminer l'émetteur."
+#: ../../include/enotify.php:265
+#, php-format
+msgid "Please visit %s to approve or reject the connection request."
+msgstr "Merci de visiter %s avant d'approuver (ou non) cette demande de relation."
-#: ../../include/message.php:143
-msgid "Stored post could not be verified."
-msgstr "Le message stocké n'a pas pu être vérifié."
+#: ../../include/enotify.php:272
+msgid "[Red:Notify] Friend suggestion received"
+msgstr "[Red:Notification] Nouvelle suggestion d'amitié"
-#: ../../include/photo/photo_driver.php:637 ../../include/photos.php:51
-#: ../../mod/profile_photo.php:78 ../../mod/profile_photo.php:225
-#: ../../mod/profile_photo.php:336 ../../mod/photos.php:91
-#: ../../mod/photos.php:656 ../../mod/photos.php:678
-msgid "Profile Photos"
-msgstr "Photos du profil"
+#: ../../include/enotify.php:273
+#, php-format
+msgid "%1$s, you've received a friend suggestion from '%2$s' at %3$s"
+msgstr "%1$s, vous avez reçu une suggestion de relation de '%2$s' à %3$s"
-#: ../../include/attach.php:98 ../../include/attach.php:129
-#: ../../include/attach.php:185 ../../include/attach.php:200
-#: ../../include/attach.php:233 ../../include/attach.php:247
-#: ../../include/attach.php:268 ../../include/attach.php:463
-#: ../../include/attach.php:541 ../../include/chat.php:113
-#: ../../include/photos.php:15 ../../include/items.php:3515
-#: ../../mod/common.php:35 ../../mod/events.php:140 ../../mod/thing.php:247
-#: ../../mod/thing.php:263 ../../mod/thing.php:298 ../../mod/invite.php:13
-#: ../../mod/invite.php:104 ../../mod/item.php:182 ../../mod/item.php:190
-#: ../../mod/menu.php:44 ../../mod/webpages.php:40 ../../mod/api.php:26
-#: ../../mod/api.php:31 ../../mod/bookmarks.php:46 ../../mod/chat.php:87
-#: ../../mod/chat.php:92 ../../mod/viewconnections.php:22
-#: ../../mod/viewconnections.php:27 ../../mod/delegate.php:6
-#: ../../mod/mitem.php:73 ../../mod/group.php:9 ../../mod/viewsrc.php:12
-#: ../../mod/editpost.php:13 ../../mod/connedit.php:182
-#: ../../mod/layouts.php:27 ../../mod/layouts.php:42 ../../mod/page.php:30
-#: ../../mod/page.php:80 ../../mod/network.php:12 ../../mod/profiles.php:152
-#: ../../mod/profiles.php:453 ../../mod/sources.php:66 ../../mod/setup.php:200
-#: ../../mod/new_channel.php:66 ../../mod/new_channel.php:97
-#: ../../mod/achievements.php:27 ../../mod/settings.php:493
-#: ../../mod/manage.php:6 ../../mod/mail.php:108 ../../mod/editlayout.php:48
-#: ../../mod/profile_photo.php:187 ../../mod/profile_photo.php:200
-#: ../../mod/connections.php:169 ../../mod/notifications.php:66
-#: ../../mod/blocks.php:29 ../../mod/blocks.php:44
-#: ../../mod/editwebpage.php:44 ../../mod/editwebpage.php:83
-#: ../../mod/poke.php:128 ../../mod/channel.php:88 ../../mod/channel.php:188
-#: ../../mod/channel.php:231 ../../mod/fsuggest.php:78
-#: ../../mod/editblock.php:48 ../../mod/filestorage.php:10
-#: ../../mod/filestorage.php:59 ../../mod/filestorage.php:75
-#: ../../mod/filestorage.php:98 ../../mod/suggest.php:26
-#: ../../mod/message.php:16 ../../mod/register.php:68 ../../mod/regmod.php:18
-#: ../../mod/authtest.php:13 ../../mod/photos.php:68 ../../mod/photos.php:526
-#: ../../mod/mood.php:119 ../../index.php:176 ../../index.php:351
-msgid "Permission denied."
-msgstr "Permission refusée."
+#: ../../include/enotify.php:274
+#, php-format
+msgid ""
+"%1$s, you've received [zrl=%2$s]a friend suggestion[/zrl] for %3$s from "
+"%4$s."
+msgstr "%1$s, avez reçu %3$s comme [zrl=%2$s]une suggestion de relation[/zrl] de %4$s."
-#: ../../include/attach.php:180 ../../include/attach.php:228
-msgid "Item was not found."
-msgstr "Élément introuvable."
+#: ../../include/enotify.php:280
+msgid "Name:"
+msgstr "Nom&nbsp;:"
-#: ../../include/attach.php:281
-msgid "No source file."
-msgstr "Pas de fichier source."
+#: ../../include/enotify.php:281
+msgid "Photo:"
+msgstr "Photo&nbsp;:"
-#: ../../include/attach.php:298
-msgid "Cannot locate file to replace"
-msgstr "Impossible de trouver le fichier à remplacer."
+#: ../../include/enotify.php:284
+#, php-format
+msgid "Please visit %s to approve or reject the suggestion."
+msgstr "Merci de visiter %s pour donner suite (ou non) à cette suggestion."
-#: ../../include/attach.php:316
-msgid "Cannot locate file to revise/update"
-msgstr "Impossible de trouver le fichier à corriger/mettre-à-jour"
+#: ../../include/enotify.php:474
+msgid "[Red:Notify]"
+msgstr "[Red:Notification]"
+
+#: ../../include/reddav.php:1145 ../../include/reddav.php:1288
+msgid "parent"
+msgstr "retour"
+
+#: ../../include/reddav.php:1169
+msgid "Collection"
+msgstr "Collection"
+
+#: ../../include/reddav.php:1172
+msgid "Principal"
+msgstr "Principal"
-#: ../../include/attach.php:327
+#: ../../include/reddav.php:1175
+msgid "Addressbook"
+msgstr "Carnet d'adresse"
+
+#: ../../include/reddav.php:1178
+msgid "Calendar"
+msgstr "Calendrier"
+
+#: ../../include/reddav.php:1181
+msgid "Schedule Inbox"
+msgstr "Calendrier - Message entrants"
+
+#: ../../include/reddav.php:1184
+msgid "Schedule Outbox"
+msgstr "Calendrier - Message sortants"
+
+#: ../../include/reddav.php:1262
#, php-format
-msgid "File exceeds size limit of %d"
-msgstr "Le fichier dépasse la taille limite de %d"
+msgid "%1$s used"
+msgstr "%1$s utilisé"
-#: ../../include/attach.php:339
+#: ../../include/reddav.php:1267
#, php-format
-msgid "You have reached your limit of %1$.0f Mbytes attachment storage."
-msgstr "Vous avez atteint votre limite de %1$.0f méga-octets autorisés pour le stockage des pièces-jointes"
+msgid "%1$s used of %2$s (%3$s&#37;)"
+msgstr "%1$s utilisé de %2$s (%3$s&#37;)"
-#: ../../include/attach.php:423
-msgid "File upload failed. Possible system limit or action terminated."
-msgstr "Envoi du fichier impossible. Limite système ou action avortée."
+#: ../../include/reddav.php:1284 ../../mod/settings.php:519
+#: ../../mod/settings.php:545 ../../mod/admin.php:902
+msgid "Name"
+msgstr "Nom"
-#: ../../include/attach.php:435
-msgid "Stored file could not be verified. Upload failed."
-msgstr "Le fichier stocké n'a pu être vérifié. Envoi impossible."
+#: ../../include/reddav.php:1285
+msgid "Type"
+msgstr "Type"
-#: ../../include/attach.php:479 ../../include/attach.php:496
-msgid "Path not available."
-msgstr "Chemin non disponible."
+#: ../../include/reddav.php:1286
+msgid "Size"
+msgstr "Taille"
-#: ../../include/attach.php:546
-msgid "Empty pathname"
-msgstr "Chemin vide"
+#: ../../include/reddav.php:1287
+msgid "Last Modified"
+msgstr "Modifié le"
-#: ../../include/attach.php:564
-msgid "duplicate filename or path"
-msgstr "doublon de chemin ou de fichier"
+#: ../../include/reddav.php:1291
+msgid "Total"
+msgstr "Total"
-#: ../../include/attach.php:589
-msgid "Path not found."
-msgstr "Chemin introuvable."
+#: ../../include/reddav.php:1344
+msgid "Create new folder"
+msgstr "Nouveau dossier"
-#: ../../include/attach.php:634
-msgid "mkdir failed."
-msgstr "mkdir a échoué."
+#: ../../include/reddav.php:1345 ../../mod/mitem.php:142 ../../mod/menu.php:84
+#: ../../mod/new_channel.php:117
+msgid "Create"
+msgstr "Créer"
-#: ../../include/attach.php:638
-msgid "database storage failed."
-msgstr "le stockage en BD a échoué"
+#: ../../include/reddav.php:1346
+msgid "Upload file"
+msgstr "Téléverser un fichier"
-#: ../../include/bookmarks.php:31
-#, php-format
-msgid "%1$s's bookmarks"
-msgstr "Marque-pages de %1$s"
+#: ../../include/reddav.php:1347 ../../mod/profile_photo.php:361
+msgid "Upload"
+msgstr "Envoyer"
-#: ../../include/conversation.php:123
+#: ../../include/conversation.php:126 ../../mod/like.php:89
msgid "channel"
msgstr "canal"
-#: ../../include/conversation.php:161 ../../mod/like.php:134
-#, php-format
-msgid "%1$s likes %2$s's %3$s"
-msgstr "%1$s aime %3$s de %2$s"
-
-#: ../../include/conversation.php:164 ../../mod/like.php:136
+#: ../../include/conversation.php:167 ../../mod/like.php:333
#, php-format
msgid "%1$s doesn't like %2$s's %3$s"
msgstr "%1$s déteste %3$s de %2$s"
-#: ../../include/conversation.php:201
+#: ../../include/conversation.php:204
#, php-format
msgid "%1$s is now connected with %2$s"
-msgstr "%1$s est désormais relié à %2$s"
+msgstr "%1$s ajoute %2$s à ses relations"
-#: ../../include/conversation.php:236
+#: ../../include/conversation.php:239
#, php-format
msgid "%1$s poked %2$s"
-msgstr "%1$s a tapoté %2$s"
+msgstr "%1$s a cogné %2$s"
-#: ../../include/conversation.php:258 ../../mod/mood.php:63
+#: ../../include/conversation.php:261 ../../mod/mood.php:63
#, php-format
-msgid "%1$s is currently %2$s"
-msgstr "%1$s est actuellement %2$s"
+msgctxt "mood"
+msgid "%1$s is %2$s"
+msgstr "%1$s est %2$s"
-#: ../../include/conversation.php:631 ../../include/ItemObject.php:114
+#: ../../include/conversation.php:634 ../../include/ItemObject.php:114
msgid "Select"
msgstr "Sélectionner"
-#: ../../include/conversation.php:632 ../../include/ItemObject.php:108
-#: ../../mod/thing.php:236 ../../mod/group.php:176 ../../mod/admin.php:745
-#: ../../mod/connedit.php:359 ../../mod/settings.php:579
-#: ../../mod/filestorage.php:171 ../../mod/photos.php:1044
-msgid "Delete"
-msgstr "Supprimer"
+#: ../../include/conversation.php:642 ../../include/ItemObject.php:89
+#: ../../mod/photos.php:850
+msgid "Private Message"
+msgstr "Message Privé"
-#: ../../include/conversation.php:642 ../../include/ItemObject.php:161
+#: ../../include/conversation.php:649 ../../include/ItemObject.php:182
msgid "Message is verified"
msgstr "Message vérifié"
-#: ../../include/conversation.php:662
+#: ../../include/conversation.php:669
#, php-format
msgid "View %s's profile @ %s"
msgstr "Voir le profil de %s @ %s"
-#: ../../include/conversation.php:676
+#: ../../include/conversation.php:683
msgid "Categories:"
msgstr "Catégories&nbsp;:"
-#: ../../include/conversation.php:677
+#: ../../include/conversation.php:684
msgid "Filed under:"
msgstr "Classé sous&nbsp;:"
-#: ../../include/conversation.php:686 ../../include/ItemObject.php:226
+#: ../../include/conversation.php:693 ../../include/ItemObject.php:250
#, php-format
msgid " from %s"
msgstr "de %s"
-#: ../../include/conversation.php:689 ../../include/ItemObject.php:229
+#: ../../include/conversation.php:696 ../../include/ItemObject.php:253
#, php-format
msgid "last edited: %s"
msgstr "dernière édition&nbsp;: %s"
-#: ../../include/conversation.php:690 ../../include/ItemObject.php:230
+#: ../../include/conversation.php:697 ../../include/ItemObject.php:254
#, php-format
msgid "Expires: %s"
msgstr "Expire&nbsp;: %s"
-#: ../../include/conversation.php:705
+#: ../../include/conversation.php:712
msgid "View in context"
msgstr "Voir en contexte"
-#: ../../include/conversation.php:707 ../../include/conversation.php:1120
-#: ../../include/ItemObject.php:259 ../../mod/editpost.php:112
-#: ../../mod/mail.php:222 ../../mod/mail.php:336 ../../mod/editlayout.php:115
-#: ../../mod/editwebpage.php:153 ../../mod/editblock.php:129
-#: ../../mod/photos.php:975
+#: ../../include/conversation.php:714 ../../include/conversation.php:1130
+#: ../../include/ItemObject.php:294 ../../mod/editblock.php:120
+#: ../../mod/editlayout.php:115 ../../mod/editpost.php:121
+#: ../../mod/editwebpage.php:152 ../../mod/photos.php:983
+#: ../../mod/mail.php:231 ../../mod/mail.php:346
msgid "Please wait"
msgstr "Merci de patienter"
-#: ../../include/conversation.php:834
+#: ../../include/conversation.php:841
msgid "remove"
msgstr "supprimer"
-#: ../../include/conversation.php:838
+#: ../../include/conversation.php:845
msgid "Loading..."
msgstr "Chargement..."
-#: ../../include/conversation.php:839
+#: ../../include/conversation.php:846
msgid "Delete Selected Items"
msgstr "Supprimer les éléments selectionnés"
-#: ../../include/conversation.php:930
+#: ../../include/conversation.php:937
msgid "View Source"
msgstr "Voir source"
-#: ../../include/conversation.php:931
+#: ../../include/conversation.php:938
msgid "Follow Thread"
msgstr "Suivre discussion"
-#: ../../include/conversation.php:932
+#: ../../include/conversation.php:939
msgid "View Status"
msgstr "Voir état"
-#: ../../include/conversation.php:934
+#: ../../include/conversation.php:941
msgid "View Photos"
msgstr "Voir photos"
-#: ../../include/conversation.php:935
+#: ../../include/conversation.php:942
msgid "Matrix Activity"
-msgstr "Activité de la matrice"
+msgstr "Activité sur la matrice"
-#: ../../include/conversation.php:936
+#: ../../include/conversation.php:943
msgid "Edit Contact"
msgstr "Éditer contact"
-#: ../../include/conversation.php:937
+#: ../../include/conversation.php:944
msgid "Send PM"
-msgstr "Message privé"
-
-#: ../../include/conversation.php:938
-msgid "Poke"
-msgstr "Tapoter"
+msgstr "Envoyer un Message Privé"
-#: ../../include/conversation.php:1000
+#: ../../include/conversation.php:1001
#, php-format
msgid "%s likes this."
msgstr "%s aime ça."
-#: ../../include/conversation.php:1000
+#: ../../include/conversation.php:1001
#, php-format
msgid "%s doesn't like this."
msgstr "%s déteste ça."
-#: ../../include/conversation.php:1004
+#: ../../include/conversation.php:1005
#, php-format
msgid "<span %1$s>%2$d people</span> like this."
msgid_plural "<span %1$s>%2$d people</span> like this."
msgstr[0] ""
msgstr[1] "<span %1$s>%2$d personne(s)</span> aime(nt) ça."
-#: ../../include/conversation.php:1006
+#: ../../include/conversation.php:1007
#, php-format
msgid "<span %1$s>%2$d people</span> don't like this."
msgid_plural "<span %1$s>%2$d people</span> don't like this."
msgstr[0] ""
msgstr[1] "<span %1$s>%2$d personne(s)</span> déteste(nt) ça."
-#: ../../include/conversation.php:1012
+#: ../../include/conversation.php:1013
msgid "and"
msgstr "et"
-#: ../../include/conversation.php:1015
+#: ../../include/conversation.php:1016
#, php-format
msgid ", and %d other people"
msgid_plural ", and %d other people"
msgstr[0] ""
msgstr[1] ", et %d autre(s) personne(s)"
-#: ../../include/conversation.php:1016
+#: ../../include/conversation.php:1017
#, php-format
msgid "%s like this."
msgstr "%s aime ça."
-#: ../../include/conversation.php:1016
+#: ../../include/conversation.php:1017
#, php-format
msgid "%s don't like this."
msgstr "%s déteste ça."
-#: ../../include/conversation.php:1066
+#: ../../include/conversation.php:1074
msgid "Visible to <strong>everybody</strong>"
msgstr "Visible par <strong>tout le monde</strong>"
-#: ../../include/conversation.php:1067 ../../mod/mail.php:171
-#: ../../mod/mail.php:269
+#: ../../include/conversation.php:1075 ../../mod/mail.php:167
+#: ../../mod/mail.php:279
msgid "Please enter a link URL:"
msgstr "Merci d'entrer l'URL d'un lien&nbsp;:"
-#: ../../include/conversation.php:1068
+#: ../../include/conversation.php:1076
msgid "Please enter a video link/URL:"
msgstr "Merci d'entrer l'URL d'une video&nbsp;:"
-#: ../../include/conversation.php:1069
+#: ../../include/conversation.php:1077
msgid "Please enter an audio link/URL:"
-msgstr "Merci d'entrer l'URL d'un contenu audio&nsbp;:"
+msgstr "Merci d'entrer l'URL d'un contenu audio&nbsp;:"
-#: ../../include/conversation.php:1070
+#: ../../include/conversation.php:1078
msgid "Tag term:"
msgstr "Étiquette&nbsp;:"
-#: ../../include/conversation.php:1071 ../../mod/filer.php:35
+#: ../../include/conversation.php:1079 ../../mod/filer.php:49
msgid "Save to Folder:"
-msgstr "Classer dans Dossier&nbsp;:"
+msgstr "Classer dans le dossier&nbsp;:"
-#: ../../include/conversation.php:1072
+#: ../../include/conversation.php:1080
msgid "Where are you right now?"
msgstr "Où êtes-vous présentement?"
-#: ../../include/conversation.php:1073 ../../mod/editpost.php:52
-#: ../../mod/mail.php:172 ../../mod/mail.php:270
+#: ../../include/conversation.php:1081 ../../mod/editpost.php:52
+#: ../../mod/mail.php:168 ../../mod/mail.php:280
msgid "Expires YYYY-MM-DD HH:MM"
msgstr "Expire YYYY-MM-DD HH:MM"
-#: ../../include/conversation.php:1083 ../../include/ItemObject.php:557
-#: ../../mod/webpages.php:122 ../../mod/editpost.php:132
-#: ../../mod/editlayout.php:136 ../../mod/editwebpage.php:177
-#: ../../mod/editblock.php:151 ../../mod/photos.php:995
-msgid "Preview"
-msgstr "Aperçu"
-
-#: ../../include/conversation.php:1097 ../../mod/photos.php:974
+#: ../../include/conversation.php:1105 ../../mod/photos.php:982
+#: ../../mod/layouts.php:113
msgid "Share"
msgstr "Partager"
-#: ../../include/conversation.php:1099 ../../mod/editwebpage.php:140
+#: ../../include/conversation.php:1107 ../../mod/editwebpage.php:139
msgid "Page link title"
-msgstr "Titre de la page liée"
+msgstr "Titre du lien vers la page"
+
+#: ../../include/conversation.php:1110
+msgid "Post as"
+msgstr "Publier en tant que"
-#: ../../include/conversation.php:1101 ../../mod/editpost.php:104
-#: ../../mod/mail.php:219 ../../mod/mail.php:332 ../../mod/editlayout.php:107
-#: ../../mod/editwebpage.php:145 ../../mod/editblock.php:121
+#: ../../include/conversation.php:1111 ../../mod/editblock.php:112
+#: ../../mod/editlayout.php:107 ../../mod/editpost.php:113
+#: ../../mod/editwebpage.php:144 ../../mod/mail.php:228 ../../mod/mail.php:342
msgid "Upload photo"
-msgstr "Téléverser photo"
+msgstr "Téléverser une photo"
-#: ../../include/conversation.php:1102
+#: ../../include/conversation.php:1112
msgid "upload photo"
-msgstr "téléverser photo"
+msgstr "téléverser une photo"
-#: ../../include/conversation.php:1103 ../../mod/editpost.php:105
-#: ../../mod/mail.php:220 ../../mod/mail.php:333 ../../mod/editlayout.php:108
-#: ../../mod/editwebpage.php:146 ../../mod/editblock.php:122
+#: ../../include/conversation.php:1113 ../../mod/editblock.php:113
+#: ../../mod/editlayout.php:108 ../../mod/editpost.php:114
+#: ../../mod/editwebpage.php:145 ../../mod/mail.php:229 ../../mod/mail.php:343
msgid "Attach file"
-msgstr "Attacher fichier"
+msgstr "Attacher un fichier"
-#: ../../include/conversation.php:1104
+#: ../../include/conversation.php:1114
msgid "attach file"
-msgstr "attacher fichier"
+msgstr "attacher un fichier"
-#: ../../include/conversation.php:1105 ../../mod/editpost.php:106
-#: ../../mod/mail.php:221 ../../mod/mail.php:334 ../../mod/editlayout.php:109
-#: ../../mod/editwebpage.php:147 ../../mod/editblock.php:123
+#: ../../include/conversation.php:1115 ../../mod/editblock.php:114
+#: ../../mod/editlayout.php:109 ../../mod/editpost.php:115
+#: ../../mod/editwebpage.php:146 ../../mod/mail.php:230 ../../mod/mail.php:344
msgid "Insert web link"
msgstr "Insérer lien web"
-#: ../../include/conversation.php:1106
+#: ../../include/conversation.php:1116
msgid "web link"
msgstr "lien web"
-#: ../../include/conversation.php:1107
+#: ../../include/conversation.php:1117
msgid "Insert video link"
msgstr "Insérer lien vidéo"
-#: ../../include/conversation.php:1108
+#: ../../include/conversation.php:1118
msgid "video link"
msgstr "lien vidéo"
-#: ../../include/conversation.php:1109
+#: ../../include/conversation.php:1119
msgid "Insert audio link"
-msgstr "Insérer lien audio"
+msgstr "Insérer un lien audio"
-#: ../../include/conversation.php:1110
+#: ../../include/conversation.php:1120
msgid "audio link"
msgstr "lien audio"
-#: ../../include/conversation.php:1111 ../../mod/editpost.php:110
-#: ../../mod/editlayout.php:113 ../../mod/editwebpage.php:151
-#: ../../mod/editblock.php:127
+#: ../../include/conversation.php:1121 ../../mod/editblock.php:118
+#: ../../mod/editlayout.php:113 ../../mod/editpost.php:119
+#: ../../mod/editwebpage.php:150
msgid "Set your location"
-msgstr "Spécifier votre localisation"
+msgstr "Spécifier votre emplacement géographique"
-#: ../../include/conversation.php:1112
+#: ../../include/conversation.php:1122
msgid "set location"
-msgstr "spécifier localisation"
+msgstr "spécifier l'emplacement géographique"
-#: ../../include/conversation.php:1113 ../../mod/editpost.php:111
-#: ../../mod/editlayout.php:114 ../../mod/editwebpage.php:152
-#: ../../mod/editblock.php:128
+#: ../../include/conversation.php:1123 ../../mod/editblock.php:119
+#: ../../mod/editlayout.php:114 ../../mod/editpost.php:120
+#: ../../mod/editwebpage.php:151
msgid "Clear browser location"
-msgstr "Nettoyer la localisation du navigateur"
+msgstr "Nettoyer l'emplacement géographique du navigateur"
-#: ../../include/conversation.php:1114
+#: ../../include/conversation.php:1124
msgid "clear location"
-msgstr "nettoyer localisation"
+msgstr "nettoyer l'emplacement géographique"
-#: ../../include/conversation.php:1116 ../../mod/editpost.php:124
-#: ../../mod/editlayout.php:127 ../../mod/editwebpage.php:169
-#: ../../mod/editblock.php:142
+#: ../../include/conversation.php:1126 ../../mod/editblock.php:132
+#: ../../mod/editlayout.php:126 ../../mod/editpost.php:132
+#: ../../mod/editwebpage.php:167
msgid "Set title"
msgstr "Spécifier le titre"
-#: ../../include/conversation.php:1119 ../../mod/editpost.php:126
-#: ../../mod/editlayout.php:130 ../../mod/editwebpage.php:171
-#: ../../mod/editblock.php:145
+#: ../../include/conversation.php:1129 ../../mod/editblock.php:135
+#: ../../mod/editlayout.php:129 ../../mod/editpost.php:134
+#: ../../mod/editwebpage.php:169
msgid "Categories (comma-separated list)"
msgstr "Catégories (séparées par des virgules)"
-#: ../../include/conversation.php:1121 ../../mod/editpost.php:113
-#: ../../mod/editlayout.php:116 ../../mod/editwebpage.php:154
-#: ../../mod/editblock.php:130
+#: ../../include/conversation.php:1131 ../../mod/editblock.php:121
+#: ../../mod/editlayout.php:116 ../../mod/editpost.php:122
+#: ../../mod/editwebpage.php:153
msgid "Permission settings"
msgstr "Permissions"
-#: ../../include/conversation.php:1122
+#: ../../include/conversation.php:1132
msgid "permissions"
msgstr "permissions"
-#: ../../include/conversation.php:1130 ../../mod/editpost.php:121
-#: ../../mod/editlayout.php:124 ../../mod/editwebpage.php:164
-#: ../../mod/editblock.php:139
+#: ../../include/conversation.php:1139 ../../mod/editblock.php:129
+#: ../../mod/editlayout.php:123 ../../mod/editpost.php:129
+#: ../../mod/editwebpage.php:162
msgid "Public post"
msgstr "Contenu public"
-#: ../../include/conversation.php:1132 ../../mod/editpost.php:127
-#: ../../mod/editlayout.php:131 ../../mod/editwebpage.php:172
-#: ../../mod/editblock.php:146
+#: ../../include/conversation.php:1141 ../../mod/editblock.php:136
+#: ../../mod/editlayout.php:130 ../../mod/editpost.php:135
+#: ../../mod/editwebpage.php:170
msgid "Example: bob@example.com, mary@example.com"
msgstr "Exemple: robert@exemple.com, marie@exemple.com"
-#: ../../include/conversation.php:1145 ../../mod/editpost.php:138
-#: ../../mod/mail.php:226 ../../mod/mail.php:339 ../../mod/editlayout.php:141
-#: ../../mod/editwebpage.php:182 ../../mod/editblock.php:156
+#: ../../include/conversation.php:1154 ../../mod/editblock.php:146
+#: ../../mod/editlayout.php:140 ../../mod/editpost.php:146
+#: ../../mod/editwebpage.php:179 ../../mod/mail.php:235 ../../mod/mail.php:349
msgid "Set expiration date"
msgstr "Définir la date d'expiration"
-#: ../../include/conversation.php:1147 ../../include/ItemObject.php:560
-#: ../../mod/editpost.php:140 ../../mod/mail.php:228 ../../mod/mail.php:341
+#: ../../include/conversation.php:1156 ../../include/ItemObject.php:595
+#: ../../mod/editpost.php:148 ../../mod/mail.php:237 ../../mod/mail.php:351
msgid "Encrypt text"
msgstr "Chiffrer le texte"
-#: ../../include/conversation.php:1149 ../../mod/editpost.php:142
+#: ../../include/conversation.php:1158 ../../mod/editpost.php:150
msgid "OK"
msgstr "Ok"
-#: ../../include/conversation.php:1150 ../../mod/tagrm.php:11
-#: ../../mod/tagrm.php:94 ../../mod/editpost.php:143
-#: ../../mod/settings.php:517 ../../mod/settings.php:543
-#: ../../mod/fbrowser.php:82 ../../mod/fbrowser.php:117
+#: ../../include/conversation.php:1159 ../../mod/settings.php:518
+#: ../../mod/settings.php:544 ../../mod/editpost.php:151
+#: ../../mod/fbrowser.php:82 ../../mod/fbrowser.php:117 ../../mod/tagrm.php:11
+#: ../../mod/tagrm.php:94
msgid "Cancel"
msgstr "Annuler"
-#: ../../include/conversation.php:1381
+#: ../../include/conversation.php:1401
+msgid "Discover"
+msgstr "À découvrir"
+
+#: ../../include/conversation.php:1404
+msgid "Imported public streams"
+msgstr "Flux publics importés"
+
+#: ../../include/conversation.php:1409
msgid "Commented Order"
-msgstr "Dans l'ordre des commentaires"
+msgstr "Commentaires Récents"
-#: ../../include/conversation.php:1384
+#: ../../include/conversation.php:1412
msgid "Sort by Comment Date"
msgstr "Trier par date de dernier commentaire"
-#: ../../include/conversation.php:1387
+#: ../../include/conversation.php:1416
msgid "Posted Order"
-msgstr "Dans l'ordre des publications"
+msgstr "Publications Récentes"
-#: ../../include/conversation.php:1390
+#: ../../include/conversation.php:1419
msgid "Sort by Post Date"
msgstr "Trier par date de publication"
-#: ../../include/conversation.php:1394
+#: ../../include/conversation.php:1424 ../../include/widgets.php:82
msgid "Personal"
msgstr "Personnel"
-#: ../../include/conversation.php:1397
+#: ../../include/conversation.php:1427
msgid "Posts that mention or involve you"
msgstr "Publications qui vous mentionnent ou vous concernent d'une manière ou d'une autre"
-#: ../../include/conversation.php:1400 ../../mod/menu.php:61
-#: ../../mod/connections.php:211
+#: ../../include/conversation.php:1433 ../../mod/connections.php:211
+#: ../../mod/connections.php:224 ../../mod/menu.php:61
msgid "New"
msgstr "Nouveautés"
-#: ../../include/conversation.php:1403
+#: ../../include/conversation.php:1436
msgid "Activity Stream - by date"
msgstr "Flux d'activité - par date"
-#: ../../include/conversation.php:1410
+#: ../../include/conversation.php:1442
msgid "Starred"
msgstr "Mis en avant"
-#: ../../include/conversation.php:1413
+#: ../../include/conversation.php:1445
msgid "Favourite Posts"
msgstr "Publications préférées"
-#: ../../include/conversation.php:1420
+#: ../../include/conversation.php:1452
msgid "Spam"
-msgstr "Spam"
+msgstr "Indésirable"
-#: ../../include/conversation.php:1423
+#: ../../include/conversation.php:1455
msgid "Posts flagged as SPAM"
msgstr "Publications marquées comme indésirables"
-#: ../../include/conversation.php:1454
+#: ../../include/conversation.php:1491 ../../mod/admin.php:901
msgid "Channel"
msgstr "Canal"
-#: ../../include/conversation.php:1457
+#: ../../include/conversation.php:1494
msgid "Status Messages and Posts"
msgstr "Messages d'état et contributions"
-#: ../../include/conversation.php:1466
+#: ../../include/conversation.php:1503
msgid "About"
msgstr "À propos"
-#: ../../include/conversation.php:1469
+#: ../../include/conversation.php:1506
msgid "Profile Details"
msgstr "Détails du profil"
-#: ../../include/conversation.php:1478 ../../include/photos.php:302
-msgid "Photo Albums"
-msgstr "Albums photo"
-
-#: ../../include/conversation.php:1487
+#: ../../include/conversation.php:1524
msgid "Files and Storage"
msgstr "Fichiers et Stockage"
-#: ../../include/conversation.php:1496 ../../include/conversation.php:1499
+#: ../../include/conversation.php:1533 ../../include/conversation.php:1536
msgid "Chatrooms"
-msgstr "Salons"
-
-#: ../../include/conversation.php:1509
-msgid "Events and Calendar"
-msgstr "Événements et agenda"
+msgstr "Salons de clavardage"
-#: ../../include/conversation.php:1517
+#: ../../include/conversation.php:1546
msgid "Saved Bookmarks"
-msgstr "Marque-pages sauvegardés"
+msgstr "Favoris sauvegardés"
-#: ../../include/conversation.php:1528
+#: ../../include/conversation.php:1557
msgid "Manage Webpages"
msgstr "Gérer les pages web"
-#: ../../include/identity.php:29 ../../mod/item.php:1177
+#: ../../include/features.php:23
+msgid "General Features"
+msgstr "Fonctionnalités générales"
+
+#: ../../include/features.php:25
+msgid "Content Expiration"
+msgstr "Expiration de contenu"
+
+#: ../../include/features.php:25
+msgid "Remove posts/comments and/or private messages at a future time"
+msgstr "Supprimer les contributions/commentaires et/ou messages privés plus tard"
+
+#: ../../include/features.php:26
+msgid "Multiple Profiles"
+msgstr "Profils multiples"
+
+#: ../../include/features.php:26
+msgid "Ability to create multiple profiles"
+msgstr "Possibilité de créer plusieurs profils"
+
+#: ../../include/features.php:27
+msgid "Advanced Profiles"
+msgstr "Profils Avancés"
+
+#: ../../include/features.php:27
+msgid "Additional profile sections and selections"
+msgstr "Sections additionnelles du profil"
+
+#: ../../include/features.php:28
+msgid "Profile Import/Export"
+msgstr "Importer/Exporter le profil"
+
+#: ../../include/features.php:28
+msgid "Save and load profile details across sites/channels"
+msgstr "Distribuer les détails du profil sur la matrice."
+
+#: ../../include/features.php:29
+msgid "Web Pages"
+msgstr "Pages web"
+
+#: ../../include/features.php:29
+msgid "Provide managed web pages on your channel"
+msgstr "Fournir des pages web, sous votre contrôle, sur votre canal"
+
+#: ../../include/features.php:30
+msgid "Private Notes"
+msgstr "Notes privées"
+
+#: ../../include/features.php:30
+msgid "Enables a tool to store notes and reminders"
+msgstr "Active un outil pour stocker notes et mémos"
+
+#: ../../include/features.php:35
+msgid "Extended Identity Sharing"
+msgstr "Partage d'identité étendue"
+
+#: ../../include/features.php:35
+msgid ""
+"Share your identity with all websites on the internet. When disabled, "
+"identity is only shared with sites in the matrix."
+msgstr "Partage votre identité avec tous les sites web du Monde. Si décoché, l'identité sera seulement partagée avec les sites de la matrice."
+
+#: ../../include/features.php:36
+msgid "Expert Mode"
+msgstr "Mode expert"
+
+#: ../../include/features.php:36
+msgid "Enable Expert Mode to provide advanced configuration options"
+msgstr "Activer le mode expert pour accéder aux options avancées"
+
+#: ../../include/features.php:37
+msgid "Premium Channel"
+msgstr "Canal VIP"
+
+#: ../../include/features.php:37
+msgid ""
+"Allows you to set restrictions and terms on those that connect with your "
+"channel"
+msgstr "Vous permet d'appliquer des règles et restrictions aux relations de votre canal"
+
+#: ../../include/features.php:42
+msgid "Post Composition Features"
+msgstr "Fonctionnalités de composition"
+
+#: ../../include/features.php:44
+msgid "Use Markdown"
+msgstr "Utiliser Markdown"
+
+#: ../../include/features.php:44
+msgid "Allow use of \"Markdown\" to format posts"
+msgstr "Authoriser l'usage de \"Markdown\" pour le format des partages"
+
+#: ../../include/features.php:45
+msgid "Post Preview"
+msgstr "Aperçu avant publication"
+
+#: ../../include/features.php:45
+msgid "Allow previewing posts and comments before publishing them"
+msgstr "Permettre de prévisualiser les publications/commentaires"
+
+#: ../../include/features.php:46 ../../include/widgets.php:503
+#: ../../mod/sources.php:88
+msgid "Channel Sources"
+msgstr "Canaux sources"
+
+#: ../../include/features.php:46
+msgid "Automatically import channel content from other channels or feeds"
+msgstr "Importe automatiquement le contenus d'autres canaux ou flux dans le canal en cours"
+
+#: ../../include/features.php:47
+msgid "Even More Encryption"
+msgstr "Encore plus de chiffrement"
+
+#: ../../include/features.php:47
+msgid ""
+"Allow optional encryption of content end-to-end with a shared secret key"
+msgstr "Permettre le chiffrement - optionnel - du contenu de bout-en-bout au moyen d'un secret partagé"
+
+#: ../../include/features.php:52
+msgid "Network and Stream Filtering"
+msgstr "Filtrage du réseau et des flux"
+
+#: ../../include/features.php:53
+msgid "Search by Date"
+msgstr "Chercher par date"
+
+#: ../../include/features.php:53
+msgid "Ability to select posts by date ranges"
+msgstr "Pouvoir choisir des publications par date"
+
+#: ../../include/features.php:54
+msgid "Collections Filter"
+msgstr "Filtre des collections"
+
+#: ../../include/features.php:54
+msgid "Enable widget to display Network posts only from selected collections"
+msgstr "Activer une boîte qui permet de filtrer les publications du réseau parmi les collections selectionnées"
+
+#: ../../include/features.php:55 ../../include/widgets.php:265
+msgid "Saved Searches"
+msgstr "Recherches sauvées"
+
+#: ../../include/features.php:55
+msgid "Save search terms for re-use"
+msgstr "Sauver des termes de recherche pour utilisation ultérieure"
+
+#: ../../include/features.php:56
+msgid "Network Personal Tab"
+msgstr "Onglet \"réseau personnel\""
+
+#: ../../include/features.php:56
+msgid "Enable tab to display only Network posts that you've interacted on"
+msgstr "Activer un onglet affichant seulement les publications du réseau sur lesquelles vous êtes intervenu"
+
+#: ../../include/features.php:57
+msgid "Network New Tab"
+msgstr "Onglet \"nouveautés réseau\""
+
+#: ../../include/features.php:57
+msgid "Enable tab to display all new Network activity"
+msgstr "Activer un onglet avec toute activité récente sur le réseau"
+
+#: ../../include/features.php:58
+msgid "Affinity Tool"
+msgstr "Gérer l'affinité"
+
+#: ../../include/features.php:58
+msgid "Filter stream activity by depth of relationships"
+msgstr "Filtrer le flux d'activité en fonction de la profondeur des relations"
+
+#: ../../include/features.php:59
+msgid "Suggest Channels"
+msgstr "Suggérer des canaux"
+
+#: ../../include/features.php:59
+msgid "Show channel suggestions"
+msgstr "Montrer les suggestions de canaux"
+
+#: ../../include/features.php:64
+msgid "Post/Comment Tools"
+msgstr "Gérer les publications/commentaires"
+
+#: ../../include/features.php:66
+msgid "Edit Sent Posts"
+msgstr "Éditer les publications envoyées"
+
+#: ../../include/features.php:66
+msgid "Edit and correct posts and comments after sending"
+msgstr "Permettre d'éditer/corriger les publications/commentaires après envoi"
+
+#: ../../include/features.php:67
+msgid "Tagging"
+msgstr "Étiquettes"
+
+#: ../../include/features.php:67
+msgid "Ability to tag existing posts"
+msgstr "Permettre de marquer les publications existantes"
+
+#: ../../include/features.php:68
+msgid "Post Categories"
+msgstr "Catégoriser les publications"
+
+#: ../../include/features.php:68
+msgid "Add categories to your posts"
+msgstr "Ajouter des catégories à vos publications"
+
+#: ../../include/features.php:69
+msgid "Ability to file posts under folders"
+msgstr "Permettre de classer les publications dans des dossiers"
+
+#: ../../include/features.php:70
+msgid "Dislike Posts"
+msgstr "Détester les publications"
+
+#: ../../include/features.php:70
+msgid "Ability to dislike posts/comments"
+msgstr "Pouvoir détester les publications/commentaires"
+
+#: ../../include/features.php:71
+msgid "Star Posts"
+msgstr "Mettre en avant les publications"
+
+#: ../../include/features.php:71
+msgid "Ability to mark special posts with a star indicator"
+msgstr "Pouvoir marquer certaines publications d'une étoile"
+
+#: ../../include/features.php:72
+msgid "Tag Cloud"
+msgstr "Nuage de tags"
+
+#: ../../include/features.php:72
+msgid "Provide a personal tag cloud on your channel page"
+msgstr "Afficher un nuage de vos tags sur votre canal"
+
+#: ../../include/follow.php:23
+msgid "Channel is blocked on this site."
+msgstr "Ce canal est bloqué sur ce site."
+
+#: ../../include/follow.php:28
+msgid "Channel location missing."
+msgstr "Emplacement du canal introuvable."
+
+#: ../../include/follow.php:54
+msgid "Response from remote channel was incomplete."
+msgstr "La réponse du canal distant était incomplète."
+
+#: ../../include/follow.php:85
+msgid "Channel was deleted and no longer exists."
+msgstr "Le canal a été supprimé et n'existe plus."
+
+#: ../../include/follow.php:132
+msgid "Channel discovery failed."
+msgstr "La tentative d'accéder au canal a échouée."
+
+#: ../../include/follow.php:149
+msgid "local account not found."
+msgstr "compte local introuvable."
+
+#: ../../include/follow.php:158
+msgid "Cannot connect to yourself."
+msgstr "Ne peut pas se connecter à vous."
+
+#: ../../include/chat.php:10
+msgid "Missing room name"
+msgstr "Il manque le nom du salon"
+
+#: ../../include/chat.php:19
+msgid "Duplicate room name"
+msgstr "Un salon de ce nom existe déjà"
+
+#: ../../include/chat.php:68 ../../include/chat.php:76
+msgid "Invalid room specifier."
+msgstr "Identifiant de salon invalide."
+
+#: ../../include/chat.php:105
+msgid "Room not found."
+msgstr "Salon introuvable."
+
+#: ../../include/chat.php:126
+msgid "Room is full"
+msgstr "Le salon est plein"
+
+#: ../../include/items.php:295 ../../mod/profperm.php:23
+#: ../../mod/subthread.php:49 ../../mod/group.php:68 ../../mod/like.php:242
+#: ../../mod/frphotos.php:69 ../../index.php:360
+msgid "Permission denied"
+msgstr "Accès refusé"
+
+#: ../../include/items.php:830
+msgid "(Unknown)"
+msgstr "(Inconnu)"
+
+#: ../../include/items.php:959
+msgid "Visible to anybody on the internet."
+msgstr "Visible à tout le monde sur internet."
+
+#: ../../include/items.php:961
+msgid "Visible to you only."
+msgstr "Visible pour vous seulement."
+
+#: ../../include/items.php:963
+msgid "Visible to anybody in this network."
+msgstr "Visible sur toute la Matrice."
+
+#: ../../include/items.php:965
+msgid "Visible to anybody authenticated."
+msgstr "Visible aux utilisateurs authentifiés."
+
+#: ../../include/items.php:967
+#, php-format
+msgid "Visible to anybody on %s."
+msgstr "Visible pour tous sur %s."
+
+#: ../../include/items.php:969
+msgid "Visible to all connections."
+msgstr "Visible pour tous les contacts."
+
+#: ../../include/items.php:971
+msgid "Visible to approved connections."
+msgstr "Visible aux contacts approuvés."
+
+#: ../../include/items.php:3649 ../../mod/home.php:67 ../../mod/display.php:32
+#: ../../mod/filestorage.php:18 ../../mod/admin.php:168
+#: ../../mod/admin.php:932 ../../mod/admin.php:1135 ../../mod/thing.php:78
+#: ../../mod/viewsrc.php:18
+msgid "Item not found."
+msgstr "Élément introuvable."
+
+#: ../../include/items.php:4082 ../../mod/group.php:38 ../../mod/group.php:140
+msgid "Collection not found."
+msgstr "Collection introuvable."
+
+#: ../../include/items.php:4097
+msgid "Collection is empty."
+msgstr "Collection vide."
+
+#: ../../include/items.php:4104
+#, php-format
+msgid "Collection: %s"
+msgstr "Collection&nbsp;: %s"
+
+#: ../../include/items.php:4115
+#, php-format
+msgid "Connection: %s"
+msgstr "Relation&nbsp;: %s"
+
+#: ../../include/items.php:4118
+msgid "Connection not found."
+msgstr "Relation introuvable."
+
+#: ../../include/group.php:25
+msgid ""
+"A deleted group with this name was revived. Existing item permissions "
+"<strong>may</strong> apply to this group and any future members. If this is "
+"not what you intended, please create another group with a different name."
+msgstr "Un groupe supprimé portant ce nom a été ressuscité. Les permissions liées aux éléments existants <strong>peuvent</strong> s'appliquer au groupe et aux membres futurs. Si ce n'est pas ce que vous attendiez, merci de recréer un nouveau groupe avec un nom différent."
+
+#: ../../include/group.php:234
+msgid "Default privacy group for new contacts"
+msgstr "Groupe de confidentialité par défaut pour les nouveaux contacts"
+
+#: ../../include/group.php:253 ../../mod/admin.php:772
+msgid "All Channels"
+msgstr "Tous canaux"
+
+#: ../../include/group.php:275
+msgid "edit"
+msgstr "éditer"
+
+#: ../../include/group.php:296
+msgid "Collections"
+msgstr "Collections"
+
+#: ../../include/group.php:297
+msgid "Edit collection"
+msgstr "Éditer collection"
+
+#: ../../include/group.php:298
+msgid "Create a new collection"
+msgstr "Créer une nouvelle collection"
+
+#: ../../include/group.php:299
+msgid "Channels not in any collection"
+msgstr "Ces canaux ne sont dans aucune collection"
+
+#: ../../include/group.php:301 ../../include/widgets.php:266
+msgid "add"
+msgstr "ajouter"
+
+#: ../../include/identity.php:30 ../../mod/item.php:1297
msgid "Unable to obtain identity information from database"
msgstr "Impossible d'obtenir les données d'identité depuis la base de données"
-#: ../../include/identity.php:62
+#: ../../include/identity.php:63
msgid "Empty name"
msgstr "Nom vide"
-#: ../../include/identity.php:64
+#: ../../include/identity.php:65
msgid "Name too long"
msgstr "Nom trop long"
-#: ../../include/identity.php:143
+#: ../../include/identity.php:166
msgid "No account identifier"
msgstr "Pas d'identifiant de compte"
-#: ../../include/identity.php:153
+#: ../../include/identity.php:176
msgid "Nickname is required."
msgstr "Un surnom est requis."
-#: ../../include/identity.php:167
+#: ../../include/identity.php:190
+msgid "Reserved nickname. Please choose another."
+msgstr "Pseudonyme réservé. Merci d'en choisir un autre."
+
+#: ../../include/identity.php:195
msgid ""
"Nickname has unsupported characters or is already being used on this site."
msgstr "Le surnom contient des caractères interdits, ou est déjà pris sur ce site."
-#: ../../include/identity.php:226
+#: ../../include/identity.php:258
msgid "Unable to retrieve created identity"
msgstr "Impossible de récupérer l'identité créée"
-#: ../../include/identity.php:285
+#: ../../include/identity.php:317
msgid "Default Profile"
msgstr "Profil par défaut"
-#: ../../include/identity.php:477
+#: ../../include/identity.php:342 ../../include/widgets.php:400
+#: ../../include/profile_selectors.php:80 ../../mod/connedit.php:473
+msgid "Friends"
+msgstr "Amis"
+
+#: ../../include/identity.php:509
msgid "Requested channel is not available."
msgstr "Canal demandé non-disponible."
-#: ../../include/identity.php:489
-msgid " Sorry, you don't have the permission to view this profile. "
-msgstr "Désolé, mais vous n'avez pas l'autorisation de voir ce profil."
-
-#: ../../include/identity.php:524 ../../mod/webpages.php:8
-#: ../../mod/connect.php:13 ../../mod/layouts.php:8
-#: ../../mod/achievements.php:8 ../../mod/blocks.php:10
-#: ../../mod/profile.php:16 ../../mod/filestorage.php:40
+#: ../../include/identity.php:557 ../../mod/achievements.php:8
+#: ../../mod/profile.php:16 ../../mod/blocks.php:10 ../../mod/connect.php:13
+#: ../../mod/filestorage.php:40 ../../mod/layouts.php:8
+#: ../../mod/webpages.php:8 ../../mod/hcard.php:8
msgid "Requested profile is not available."
msgstr "Profil demandé inaccessible."
-#: ../../include/identity.php:642 ../../mod/profiles.php:603
+#: ../../include/identity.php:706 ../../include/widgets.php:128
+#: ../../include/widgets.php:168 ../../include/Contact.php:107
+#: ../../mod/directory.php:183 ../../mod/dirprofile.php:164
+#: ../../mod/suggest.php:51 ../../mod/match.php:62
+msgid "Connect"
+msgstr "Ajouter"
+
+#: ../../include/identity.php:720 ../../mod/profiles.php:695
msgid "Change profile photo"
msgstr "Changer la photo du profil"
-#: ../../include/identity.php:648
+#: ../../include/identity.php:726
msgid "Profiles"
msgstr "Profils"
-#: ../../include/identity.php:648
+#: ../../include/identity.php:726
msgid "Manage/edit profiles"
-msgstr "Gérer/éditer profils"
+msgstr "Gérer/éditer les profils"
-#: ../../include/identity.php:649 ../../mod/profiles.php:604
+#: ../../include/identity.php:727 ../../mod/profiles.php:696
msgid "Create New Profile"
msgstr "Créer un nouveau profil"
-#: ../../include/identity.php:652
-msgid "Edit Profile"
-msgstr "Éditer profil"
-
-#: ../../include/identity.php:663 ../../mod/profiles.php:615
+#: ../../include/identity.php:741 ../../mod/profiles.php:707
msgid "Profile Image"
msgstr "Image du profil"
-#: ../../include/identity.php:666 ../../mod/profiles.php:618
+#: ../../include/identity.php:744
msgid "visible to everybody"
-msgstr "visible par tous"
+msgstr "visible pour tous"
-#: ../../include/identity.php:667 ../../mod/profiles.php:619
+#: ../../include/identity.php:745 ../../mod/profiles.php:591
+#: ../../mod/profiles.php:711
msgid "Edit visibility"
msgstr "Éditer la visibilité"
-#: ../../include/identity.php:681 ../../include/identity.php:908
-#: ../../mod/directory.php:159
+#: ../../include/identity.php:759 ../../include/identity.php:983
+#: ../../mod/directory.php:158
msgid "Gender:"
msgstr "Sexe&nbsp;:"
-#: ../../include/identity.php:682 ../../include/identity.php:928
-#: ../../mod/directory.php:161
+#: ../../include/identity.php:760 ../../include/identity.php:1027
+#: ../../mod/directory.php:160
msgid "Status:"
msgstr "État&nbsp;:"
-#: ../../include/identity.php:683 ../../include/identity.php:939
-#: ../../mod/directory.php:163
+#: ../../include/identity.php:761 ../../include/identity.php:1038
+#: ../../mod/directory.php:162
msgid "Homepage:"
msgstr "Site web&nbsp;:"
-#: ../../include/identity.php:684 ../../mod/dirprofile.php:157
+#: ../../include/identity.php:762 ../../mod/dirprofile.php:151
msgid "Online Now"
msgstr "Connecté"
-#: ../../include/identity.php:752 ../../include/identity.php:832
-#: ../../mod/ping.php:262
+#: ../../include/identity.php:827 ../../include/identity.php:907
+#: ../../mod/ping.php:298
msgid "g A l F d"
msgstr "H:i l d F"
-#: ../../include/identity.php:753 ../../include/identity.php:833
+#: ../../include/identity.php:828 ../../include/identity.php:908
msgid "F d"
msgstr "d F"
-#: ../../include/identity.php:798 ../../include/identity.php:873
-#: ../../mod/ping.php:284
+#: ../../include/identity.php:873 ../../include/identity.php:948
+#: ../../mod/ping.php:320
msgid "[today]"
msgstr "[aujourd'hui]"
-#: ../../include/identity.php:810
+#: ../../include/identity.php:885
msgid "Birthday Reminders"
msgstr "Rappels d'anniversaires"
-#: ../../include/identity.php:811
+#: ../../include/identity.php:886
msgid "Birthdays this week:"
msgstr "Anniversaires cette semaine&nbsp;:"
-#: ../../include/identity.php:866
+#: ../../include/identity.php:941
msgid "[No description]"
msgstr "[Pas de description]"
-#: ../../include/identity.php:884
+#: ../../include/identity.php:959
msgid "Event Reminders"
msgstr "Rappels d'événements"
-#: ../../include/identity.php:885
+#: ../../include/identity.php:960
msgid "Events this week:"
msgstr "Événements cette semaine&nbsp;:"
-#: ../../include/identity.php:898 ../../include/identity.php:982
-#: ../../mod/profperm.php:107
-msgid "Profile"
-msgstr "Profil"
-
-#: ../../include/identity.php:906 ../../mod/settings.php:924
+#: ../../include/identity.php:981 ../../mod/settings.php:942
msgid "Full Name:"
msgstr "Nom complet&nbsp;:"
-#: ../../include/identity.php:913
+#: ../../include/identity.php:988
+msgid "Like this channel"
+msgstr "J'aime ce canal"
+
+#: ../../include/identity.php:1012
msgid "j F, Y"
msgstr "j F Y"
-#: ../../include/identity.php:914
+#: ../../include/identity.php:1013
msgid "j F"
msgstr "j F"
-#: ../../include/identity.php:921
+#: ../../include/identity.php:1020
msgid "Birthday:"
msgstr "Date de naissance&nbsp;:"
-#: ../../include/identity.php:925
+#: ../../include/identity.php:1024
msgid "Age:"
msgstr "Age&nbsp;:"
-#: ../../include/identity.php:934
+#: ../../include/identity.php:1033
#, php-format
msgid "for %1$d %2$s"
msgstr "depuis %1$d %2$s"
-#: ../../include/identity.php:937 ../../mod/profiles.php:526
+#: ../../include/identity.php:1036 ../../mod/profiles.php:613
msgid "Sexual Preference:"
msgstr "Orientation sexuelle&nbsp;:"
-#: ../../include/identity.php:941 ../../mod/profiles.php:528
+#: ../../include/identity.php:1040 ../../mod/profiles.php:615
msgid "Hometown:"
msgstr "Ville natale&nbsp;:"
-#: ../../include/identity.php:943
+#: ../../include/identity.php:1042
msgid "Tags:"
-msgstr "Tags:"
+msgstr "Étiquettes&nbsp;:"
-#: ../../include/identity.php:945 ../../mod/profiles.php:529
+#: ../../include/identity.php:1044 ../../mod/profiles.php:616
msgid "Political Views:"
msgstr "Opinions politiques&nbsp;:"
-#: ../../include/identity.php:947
+#: ../../include/identity.php:1046
msgid "Religion:"
msgstr "Religion&nbsp;:"
-#: ../../include/identity.php:949 ../../mod/directory.php:165
+#: ../../include/identity.php:1048 ../../mod/directory.php:164
msgid "About:"
msgstr "À propos&nbsp;:"
-#: ../../include/identity.php:951
+#: ../../include/identity.php:1050
msgid "Hobbies/Interests:"
msgstr "Occupations/Centres d'intérêt&nbsp;:"
-#: ../../include/identity.php:953 ../../mod/profiles.php:532
+#: ../../include/identity.php:1052 ../../mod/profiles.php:619
msgid "Likes:"
msgstr "Aime&nbsp;:"
-#: ../../include/identity.php:955 ../../mod/profiles.php:533
+#: ../../include/identity.php:1054 ../../mod/profiles.php:620
msgid "Dislikes:"
msgstr "N'aime pas&nbsp;:"
-#: ../../include/identity.php:958
+#: ../../include/identity.php:1057
msgid "Contact information and Social Networks:"
msgstr "Coordonnées et réseaux sociaux&nbsp;:"
-#: ../../include/identity.php:960
+#: ../../include/identity.php:1059
msgid "My other channels:"
msgstr "Mes autres canaux&nbsp;:"
-#: ../../include/identity.php:962
+#: ../../include/identity.php:1061
msgid "Musical interests:"
msgstr "Goûts musicaux&nbsp;:"
-#: ../../include/identity.php:964
+#: ../../include/identity.php:1063
msgid "Books, literature:"
msgstr "Lectures, goûts littéraires&nbsp;:"
-#: ../../include/identity.php:966
+#: ../../include/identity.php:1065
msgid "Television:"
msgstr "Télévision&nbsp;:"
-#: ../../include/identity.php:968
+#: ../../include/identity.php:1067
msgid "Film/dance/culture/entertainment:"
-msgstr "Cinéma/danse/culture/divertissement&nsbp;:"
+msgstr "Cinéma/danse/culture/divertissement&nbsp;:"
-#: ../../include/identity.php:970
+#: ../../include/identity.php:1069
msgid "Love/Romance:"
msgstr "Vie sentimentale/amoureuse&nbsp;:"
-#: ../../include/identity.php:972
+#: ../../include/identity.php:1071
msgid "Work/employment:"
msgstr "Travail&nbsp;:"
-#: ../../include/identity.php:974
+#: ../../include/identity.php:1073
msgid "School/education:"
msgstr "Cursus&nbsp;:"
-#: ../../include/ItemObject.php:89 ../../mod/photos.php:847
-msgid "Private Message"
-msgstr "Message Privé"
+#: ../../include/identity.php:1093
+msgid "Like this thing"
+msgstr "J'aime ceci"
-#: ../../include/ItemObject.php:96 ../../include/page_widgets.php:8
-#: ../../mod/thing.php:235 ../../mod/menu.php:59 ../../mod/webpages.php:118
-#: ../../mod/editpost.php:103 ../../mod/layouts.php:102
-#: ../../mod/settings.php:578 ../../mod/editlayout.php:106
-#: ../../mod/blocks.php:93 ../../mod/editwebpage.php:144
-#: ../../mod/editblock.php:120 ../../mod/filestorage.php:170
-msgid "Edit"
-msgstr "Éditer"
+#: ../../include/network.php:652
+msgid "view full size"
+msgstr "pleine taille"
+
+#: ../../include/bbcode.php:112 ../../include/bbcode.php:645
+#: ../../include/bbcode.php:648 ../../include/bbcode.php:653
+#: ../../include/bbcode.php:656 ../../include/bbcode.php:659
+#: ../../include/bbcode.php:662 ../../include/bbcode.php:667
+#: ../../include/bbcode.php:670 ../../include/bbcode.php:675
+#: ../../include/bbcode.php:678 ../../include/bbcode.php:681
+#: ../../include/bbcode.php:684
+msgid "Image/photo"
+msgstr "Image/photo"
+
+#: ../../include/bbcode.php:147 ../../include/bbcode.php:695
+msgid "Encrypted content"
+msgstr "Contenu chiffré"
+
+#: ../../include/bbcode.php:163
+msgid "QR code"
+msgstr "code QR"
+
+#: ../../include/bbcode.php:212
+#, php-format
+msgid "%1$s wrote the following %2$s %3$s"
+msgstr "%1$s a écrit %2$s qui suit %3$s"
+
+#: ../../include/bbcode.php:214
+msgid "post"
+msgstr "l'article"
+
+#: ../../include/bbcode.php:613 ../../include/bbcode.php:633
+msgid "$1 wrote:"
+msgstr "$1 a écrit&nbsp;:"
+
+#: ../../include/message.php:18
+msgid "No recipient provided."
+msgstr "Pas de destinataire."
+
+#: ../../include/message.php:23
+msgid "[no subject]"
+msgstr "[sans objet]"
+
+#: ../../include/message.php:42
+msgid "Unable to determine sender."
+msgstr "Impossible de déterminer l'émetteur."
+
+#: ../../include/message.php:143
+msgid "Stored post could not be verified."
+msgstr "Le message stocké n'a pas pu être vérifié."
+
+#: ../../include/widgets.php:80
+msgid "System"
+msgstr "Système"
+
+#: ../../include/widgets.php:83
+msgid "Create Personal App"
+msgstr "Créer Votre Application"
+
+#: ../../include/widgets.php:84
+msgid "Edit Personal App"
+msgstr "Éditer Votre Application"
+
+#: ../../include/widgets.php:130 ../../mod/suggest.php:53
+msgid "Ignore/Hide"
+msgstr "Ignorer/Cacher"
+
+#: ../../include/widgets.php:136 ../../mod/connections.php:267
+msgid "Suggestions"
+msgstr "Suggestion"
+
+#: ../../include/widgets.php:137
+msgid "See more..."
+msgstr "Voir plus..."
+
+#: ../../include/widgets.php:159
+#, php-format
+msgid "You have %1$.0f of %2$.0f allowed connections."
+msgstr "Vous avez %1$.0f des %2$.0f relations autorisées."
+
+#: ../../include/widgets.php:165
+msgid "Add New Connection"
+msgstr "Ajouter une nouvelle relation"
+
+#: ../../include/widgets.php:166
+msgid "Enter the channel address"
+msgstr "Adresse du canal"
+
+#: ../../include/widgets.php:167
+msgid "Example: bob@example.com, http://example.com/barbara"
+msgstr "Exemple&nbsp;: bob@exemple.com, http://exemple.com/barbara"
+
+#: ../../include/widgets.php:184
+msgid "Notes"
+msgstr "Notes"
+
+#: ../../include/widgets.php:256
+msgid "Remove term"
+msgstr "Retirer le terme"
+
+#: ../../include/widgets.php:335
+msgid "Archives"
+msgstr "Archives"
+
+#: ../../include/widgets.php:397
+msgid "Refresh"
+msgstr "Actualiser"
+
+#: ../../include/widgets.php:398 ../../mod/connedit.php:470
+msgid "Me"
+msgstr "Moi"
+
+#: ../../include/widgets.php:399 ../../mod/connedit.php:472
+msgid "Best Friends"
+msgstr "Mes meilleurs amis"
+
+#: ../../include/widgets.php:401
+msgid "Co-workers"
+msgstr "Mes collègues"
+
+#: ../../include/widgets.php:402 ../../mod/connedit.php:474
+msgid "Former Friends"
+msgstr "Mes anciens amis"
+
+#: ../../include/widgets.php:403 ../../mod/connedit.php:475
+msgid "Acquaintances"
+msgstr "Mes connaissances"
+
+#: ../../include/widgets.php:404
+msgid "Everybody"
+msgstr "Tout le monde"
+
+#: ../../include/widgets.php:436
+msgid "Account settings"
+msgstr "Réglages du Compte"
+
+#: ../../include/widgets.php:442
+msgid "Channel settings"
+msgstr "Réglages du Canal"
+
+#: ../../include/widgets.php:448
+msgid "Additional features"
+msgstr "Fonctions supplémentaires"
+
+#: ../../include/widgets.php:454
+msgid "Feature settings"
+msgstr "Extensions"
+
+#: ../../include/widgets.php:460
+msgid "Display settings"
+msgstr "Réglages d'affichage"
+
+#: ../../include/widgets.php:466
+msgid "Connected apps"
+msgstr "Applications connectées"
+
+#: ../../include/widgets.php:472
+msgid "Export channel"
+msgstr "Exporter le canal"
+
+#: ../../include/widgets.php:484
+msgid "Automatic Permissions (Advanced)"
+msgstr "Permissions automatiques (avancé)"
+
+#: ../../include/widgets.php:494
+msgid "Premium Channel Settings"
+msgstr "Canal VIP"
+
+#: ../../include/widgets.php:531
+msgid "Check Mail"
+msgstr "Vérifier le courrier"
+
+#: ../../include/widgets.php:612
+msgid "Chat Rooms"
+msgstr "Salons de clavardage"
+
+#: ../../include/widgets.php:630
+msgid "Bookmarked Chatrooms"
+msgstr "Salons favoris"
+
+#: ../../include/widgets.php:648
+msgid "Suggested Chatrooms"
+msgstr "Salons suggérés"
#: ../../include/ItemObject.php:118
-msgid "save to folder"
-msgstr "classer dans un dossier"
+msgid "Save to Folder"
+msgstr "Sauvegarder dans le dossier"
+
+#: ../../include/ItemObject.php:130 ../../include/ItemObject.php:142
+msgid "View all"
+msgstr "Voir tout"
-#: ../../include/ItemObject.php:146
-msgid "add star"
-msgstr "mettre en avant"
+#: ../../include/ItemObject.php:139
+msgctxt "noun"
+msgid "Dislike"
+msgid_plural "Dislikes"
+msgstr[0] "Je déteste"
+msgstr[1] "Je déteste"
-#: ../../include/ItemObject.php:147
-msgid "remove star"
-msgstr "ne plus mettre en avant"
+#: ../../include/ItemObject.php:167
+msgid "Add Star"
+msgstr "Ajouter Étoile"
-#: ../../include/ItemObject.php:148
-msgid "toggle star status"
-msgstr "(dé)marquer"
+#: ../../include/ItemObject.php:168
+msgid "Remove Star"
+msgstr "Supprimer Étoile"
+
+#: ../../include/ItemObject.php:169
+msgid "Toggle Star Status"
+msgstr "Changer le Statut des Étoiles"
-#: ../../include/ItemObject.php:152
+#: ../../include/ItemObject.php:173
msgid "starred"
msgstr "mis en avant"
-#: ../../include/ItemObject.php:169
-msgid "add tag"
-msgstr "étiquetter"
+#: ../../include/ItemObject.php:190
+msgid "Add Tag"
+msgstr "Ajouter une balise"
-#: ../../include/ItemObject.php:184 ../../mod/photos.php:972
+#: ../../include/ItemObject.php:208 ../../mod/photos.php:980
msgid "I like this (toggle)"
msgstr "J'aime (oui/non)"
-#: ../../include/ItemObject.php:184 ../../include/taxonomy.php:254
-msgid "like"
-msgstr "aime"
-
-#: ../../include/ItemObject.php:185 ../../mod/photos.php:973
+#: ../../include/ItemObject.php:209 ../../mod/photos.php:981
msgid "I don't like this (toggle)"
msgstr "Je déteste (oui/non)"
-#: ../../include/ItemObject.php:185 ../../include/taxonomy.php:255
-msgid "dislike"
-msgstr "déteste"
-
-#: ../../include/ItemObject.php:187
-msgid "Share this"
-msgstr "Partager ça"
+#: ../../include/ItemObject.php:211
+msgid "Share This"
+msgstr "Partager"
-#: ../../include/ItemObject.php:187
+#: ../../include/ItemObject.php:211
msgid "share"
-msgstr "partage"
+msgstr "partager"
-#: ../../include/ItemObject.php:211 ../../include/ItemObject.php:212
+#: ../../include/ItemObject.php:235 ../../include/ItemObject.php:236
#, php-format
msgid "View %s's profile - %s"
msgstr "Voir le profil de %s - %s"
-#: ../../include/ItemObject.php:213
+#: ../../include/ItemObject.php:237
msgid "to"
msgstr "à"
-#: ../../include/ItemObject.php:214
+#: ../../include/ItemObject.php:238
msgid "via"
msgstr "via"
-#: ../../include/ItemObject.php:215
+#: ../../include/ItemObject.php:239
msgid "Wall-to-Wall"
msgstr "Mur-mur"
-#: ../../include/ItemObject.php:216
+#: ../../include/ItemObject.php:240
msgid "via Wall-To-Wall:"
msgstr "par Mur-mur&nbsp;:"
-#: ../../include/ItemObject.php:250
-msgid "Bookmark Links"
-msgstr "Transformer les liens en marque-pages"
+#: ../../include/ItemObject.php:274
+msgid "Save Bookmarks"
+msgstr "Enregistrer les favoris"
+
+#: ../../include/ItemObject.php:275
+msgid "Add to Calendar"
+msgstr "Ajouter au Calendrier"
+
+#: ../../include/ItemObject.php:283
+msgctxt "noun"
+msgid "Likes"
+msgstr "Aimes"
+
+#: ../../include/ItemObject.php:284
+msgctxt "noun"
+msgid "Dislikes"
+msgstr "Détestes"
-#: ../../include/ItemObject.php:280
+#: ../../include/ItemObject.php:315
#, php-format
msgid "%d comment"
msgid_plural "%d comments"
msgstr[0] "%d commentaire"
msgstr[1] "%d commentaires"
-#: ../../include/ItemObject.php:545 ../../mod/photos.php:991
-#: ../../mod/photos.php:1078
+#: ../../include/ItemObject.php:316 ../../include/js_strings.php:7
+msgid "[+] show all"
+msgstr "[+] voir plus"
+
+#: ../../include/ItemObject.php:580 ../../mod/photos.php:999
+#: ../../mod/photos.php:1086
msgid "This is you"
msgstr "C'est vous"
-#: ../../include/ItemObject.php:548 ../../mod/events.php:469
-#: ../../mod/thing.php:283 ../../mod/thing.php:326 ../../mod/invite.php:156
-#: ../../mod/chat.php:162 ../../mod/chat.php:192 ../../mod/connect.php:92
-#: ../../mod/group.php:81 ../../mod/admin.php:431 ../../mod/admin.php:738
-#: ../../mod/admin.php:878 ../../mod/admin.php:1077 ../../mod/admin.php:1164
-#: ../../mod/connedit.php:437 ../../mod/profiles.php:506
-#: ../../mod/sources.php:104 ../../mod/sources.php:138 ../../mod/setup.php:304
-#: ../../mod/setup.php:347 ../../mod/settings.php:516
-#: ../../mod/settings.php:628 ../../mod/settings.php:656
-#: ../../mod/settings.php:680 ../../mod/settings.php:752
-#: ../../mod/settings.php:916 ../../mod/import.php:387 ../../mod/mail.php:223
-#: ../../mod/mail.php:335 ../../mod/poke.php:166 ../../mod/fsuggest.php:108
-#: ../../mod/filestorage.php:131 ../../mod/photos.php:566
-#: ../../mod/photos.php:671 ../../mod/photos.php:954 ../../mod/photos.php:994
-#: ../../mod/photos.php:1081 ../../mod/mood.php:142
-#: ../../view/theme/redbasic/php/config.php:95
-#: ../../view/theme/apw/php/config.php:231
-#: ../../view/theme/blogga/view/theme/blog/config.php:67
+#: ../../include/ItemObject.php:582 ../../include/js_strings.php:6
+#: ../../mod/photos.php:1001 ../../mod/photos.php:1088
+msgid "Comment"
+msgstr "Commenter"
+
+#: ../../include/ItemObject.php:583 ../../mod/mood.php:135
+#: ../../mod/settings.php:517 ../../mod/settings.php:629
+#: ../../mod/settings.php:657 ../../mod/settings.php:681
+#: ../../mod/settings.php:754 ../../mod/settings.php:934
+#: ../../mod/poke.php:166 ../../mod/profiles.php:589 ../../mod/chat.php:177
+#: ../../mod/chat.php:211 ../../mod/connect.php:92 ../../mod/connedit.php:518
+#: ../../mod/setup.php:307 ../../mod/setup.php:350 ../../mod/pdledit.php:58
+#: ../../mod/photos.php:563 ../../mod/photos.php:674 ../../mod/photos.php:962
+#: ../../mod/photos.php:1002 ../../mod/photos.php:1089
+#: ../../mod/sources.php:104 ../../mod/sources.php:138
+#: ../../mod/events.php:511 ../../mod/filestorage.php:137
+#: ../../mod/fsuggest.php:108 ../../mod/group.php:81 ../../mod/admin.php:451
+#: ../../mod/admin.php:760 ../../mod/admin.php:895 ../../mod/admin.php:1028
+#: ../../mod/admin.php:1227 ../../mod/admin.php:1314 ../../mod/thing.php:286
+#: ../../mod/thing.php:329 ../../mod/import.php:393 ../../mod/invite.php:142
+#: ../../mod/mail.php:345 ../../mod/appman.php:99 ../../mod/poll.php:68
+#: ../../mod/frphotos.php:84 ../../view/theme/apw/php/config.php:256
#: ../../view/theme/blogga/php/config.php:67
+#: ../../view/theme/blogga/view/theme/blog/config.php:67
+#: ../../view/theme/redbasic/php/config.php:99
msgid "Submit"
msgstr "Envoyer"
-#: ../../include/ItemObject.php:549
+#: ../../include/ItemObject.php:584
msgid "Bold"
msgstr "Gras"
-#: ../../include/ItemObject.php:550
+#: ../../include/ItemObject.php:585
msgid "Italic"
msgstr "Italique"
-#: ../../include/ItemObject.php:551
+#: ../../include/ItemObject.php:586
msgid "Underline"
msgstr "Souligné"
-#: ../../include/ItemObject.php:552
+#: ../../include/ItemObject.php:587
msgid "Quote"
msgstr "Citation"
-#: ../../include/ItemObject.php:553
+#: ../../include/ItemObject.php:588
msgid "Code"
msgstr "Code"
-#: ../../include/ItemObject.php:554
+#: ../../include/ItemObject.php:589
msgid "Image"
msgstr "Image"
-#: ../../include/ItemObject.php:555
+#: ../../include/ItemObject.php:590
msgid "Link"
msgstr "Lien/URL"
-#: ../../include/ItemObject.php:556
+#: ../../include/ItemObject.php:591
msgid "Video"
msgstr "Vidéo"
-#: ../../include/api.php:974
-msgid "Public Timeline"
-msgstr "Fil public"
+#: ../../include/js_strings.php:5
+msgid "Delete this item?"
+msgstr "Supprimer cet élément?"
-#: ../../include/network.php:640
-msgid "view full size"
-msgstr "pleine taille"
+#: ../../include/js_strings.php:8
+msgid "[-] show less"
+msgstr "[-] montrer moins"
-#: ../../include/notify.php:23
-msgid "created a new post"
-msgstr "a publié"
+#: ../../include/js_strings.php:9
+msgid "[+] expand"
+msgstr "[+] déplier"
-#: ../../include/notify.php:24
+#: ../../include/js_strings.php:10
+msgid "[-] collapse"
+msgstr "[-] replier"
+
+#: ../../include/js_strings.php:11
+msgid "Password too short"
+msgstr "Mot de passe trop court"
+
+#: ../../include/js_strings.php:12
+msgid "Passwords do not match"
+msgstr "Les mots de passe ne correspondent pas"
+
+#: ../../include/js_strings.php:13 ../../mod/photos.php:39
+msgid "everybody"
+msgstr "tout le monde"
+
+#: ../../include/js_strings.php:14
+msgid "Secret Passphrase"
+msgstr "Phrase de passe secrète"
+
+#: ../../include/js_strings.php:15
+msgid "Passphrase hint"
+msgstr "Indice pour la phrase de passe"
+
+#: ../../include/js_strings.php:16
+msgid "Notice: Permissions have changed but have not yet been submitted."
+msgstr "Note&nbsp;: Les permissions ont changé, mais n'ont pas encore été soumises."
+
+#: ../../include/js_strings.php:17
+msgid "close all"
+msgstr "fermer tout"
+
+#: ../../include/js_strings.php:19
+msgid "timeago.prefixAgo"
+msgstr "Il y a"
+
+#: ../../include/js_strings.php:20
+msgid "timeago.prefixFromNow"
+msgstr "timeago.prefixFromNow"
+
+#: ../../include/js_strings.php:21
+msgid "ago"
+msgstr " "
+
+#: ../../include/js_strings.php:22
+msgid "from now"
+msgstr "de maintenant"
+
+#: ../../include/js_strings.php:23
+msgid "less than a minute"
+msgstr "moins d'une minute"
+
+#: ../../include/js_strings.php:24
+msgid "about a minute"
+msgstr "environ une minute"
+
+#: ../../include/js_strings.php:25
#, php-format
-msgid "commented on %s's post"
-msgstr "a commenté la publication de %s"
+msgid "%d minutes"
+msgstr "%d minutes"
+
+#: ../../include/js_strings.php:26
+msgid "about an hour"
+msgstr "environ une heure"
+
+#: ../../include/js_strings.php:27
+#, php-format
+msgid "about %d hours"
+msgstr "environ %d heures"
+
+#: ../../include/js_strings.php:28
+msgid "a day"
+msgstr "un jour"
+
+#: ../../include/js_strings.php:29
+#, php-format
+msgid "%d days"
+msgstr "%d jours"
+
+#: ../../include/js_strings.php:30
+msgid "about a month"
+msgstr "environ un mois"
+
+#: ../../include/js_strings.php:31
+#, php-format
+msgid "%d months"
+msgstr "%d mois"
+
+#: ../../include/js_strings.php:32
+msgid "about a year"
+msgstr "environ un an"
+
+#: ../../include/js_strings.php:33
+#, php-format
+msgid "%d years"
+msgstr "%d années"
+
+#: ../../include/js_strings.php:34
+msgid " "
+msgstr " "
+
+#: ../../include/js_strings.php:35
+msgid "timeago.numbers"
+msgstr "timeago.numbers"
+
+#: ../../include/Contact.php:123
+msgid "New window"
+msgstr "Nouvelle fenêtre"
+
+#: ../../include/Contact.php:124
+msgid "Open the selected location in a different window or browser tab"
+msgstr "Ouvrir l'emplacement dans une fenêtre (ou un onglet) différent"
#: ../../include/profile_selectors.php:6
+#: ../../include/profile_selectors.php:23
msgid "Male"
msgstr "Masculin"
#: ../../include/profile_selectors.php:6
+#: ../../include/profile_selectors.php:23
msgid "Female"
msgstr "Féminin"
@@ -2399,6 +3264,9 @@ msgid "Non-specific"
msgstr "Rien de spécifique"
#: ../../include/profile_selectors.php:6
+#: ../../include/profile_selectors.php:23
+#: ../../include/profile_selectors.php:61
+#: ../../include/profile_selectors.php:97
msgid "Other"
msgstr "Autre"
@@ -2406,1138 +3274,901 @@ msgstr "Autre"
msgid "Undecided"
msgstr "Indécis"
-#: ../../include/profile_selectors.php:23
+#: ../../include/profile_selectors.php:42
+#: ../../include/profile_selectors.php:61
msgid "Males"
msgstr "Hommes"
-#: ../../include/profile_selectors.php:23
+#: ../../include/profile_selectors.php:42
+#: ../../include/profile_selectors.php:61
msgid "Females"
msgstr "Femmes"
-#: ../../include/profile_selectors.php:23
+#: ../../include/profile_selectors.php:42
msgid "Gay"
msgstr "Gay"
-#: ../../include/profile_selectors.php:23
+#: ../../include/profile_selectors.php:42
msgid "Lesbian"
msgstr "Lesbienne"
-#: ../../include/profile_selectors.php:23
+#: ../../include/profile_selectors.php:42
msgid "No Preference"
msgstr "Sans préférence"
-#: ../../include/profile_selectors.php:23
+#: ../../include/profile_selectors.php:42
msgid "Bisexual"
msgstr "Bisexuel"
-#: ../../include/profile_selectors.php:23
+#: ../../include/profile_selectors.php:42
msgid "Autosexual"
msgstr "Autosexuel"
-#: ../../include/profile_selectors.php:23
+#: ../../include/profile_selectors.php:42
msgid "Abstinent"
msgstr "Abstinent"
-#: ../../include/profile_selectors.php:23
+#: ../../include/profile_selectors.php:42
msgid "Virgin"
msgstr "Vierge"
-#: ../../include/profile_selectors.php:23
+#: ../../include/profile_selectors.php:42
msgid "Deviant"
msgstr "Déviant"
-#: ../../include/profile_selectors.php:23
+#: ../../include/profile_selectors.php:42
msgid "Fetish"
msgstr "Fétichiste"
-#: ../../include/profile_selectors.php:23
+#: ../../include/profile_selectors.php:42
msgid "Oodles"
msgstr "Une floppée"
-#: ../../include/profile_selectors.php:23
+#: ../../include/profile_selectors.php:42
msgid "Nonsexual"
msgstr "Nonsexuel"
-#: ../../include/profile_selectors.php:42
+#: ../../include/profile_selectors.php:80
+#: ../../include/profile_selectors.php:97
msgid "Single"
msgstr "Célibataire"
-#: ../../include/profile_selectors.php:42
+#: ../../include/profile_selectors.php:80
msgid "Lonely"
-msgstr "Esseulé"
+msgstr "Solitaire"
-#: ../../include/profile_selectors.php:42
+#: ../../include/profile_selectors.php:80
msgid "Available"
msgstr "Disponible"
-#: ../../include/profile_selectors.php:42
+#: ../../include/profile_selectors.php:80
msgid "Unavailable"
msgstr "Indisponible"
-#: ../../include/profile_selectors.php:42
+#: ../../include/profile_selectors.php:80
msgid "Has crush"
msgstr "A un béguin"
-#: ../../include/profile_selectors.php:42
+#: ../../include/profile_selectors.php:80
msgid "Infatuated"
msgstr "Amoureux transi"
-#: ../../include/profile_selectors.php:42
+#: ../../include/profile_selectors.php:80
+#: ../../include/profile_selectors.php:97
msgid "Dating"
msgstr "Sort avec quelqu'un"
-#: ../../include/profile_selectors.php:42
+#: ../../include/profile_selectors.php:80
msgid "Unfaithful"
msgstr "Infidèle"
-#: ../../include/profile_selectors.php:42
+#: ../../include/profile_selectors.php:80
msgid "Sex Addict"
msgstr "Accro au sexe"
-#: ../../include/profile_selectors.php:42
+#: ../../include/profile_selectors.php:80
msgid "Friends/Benefits"
msgstr "Amis avec bénéfices"
-#: ../../include/profile_selectors.php:42
+#: ../../include/profile_selectors.php:80
msgid "Casual"
msgstr "Sans engagement"
-#: ../../include/profile_selectors.php:42
+#: ../../include/profile_selectors.php:80
msgid "Engaged"
msgstr "Fiancé(e)"
-#: ../../include/profile_selectors.php:42
+#: ../../include/profile_selectors.php:80
+#: ../../include/profile_selectors.php:97
msgid "Married"
msgstr "Marié(e)"
-#: ../../include/profile_selectors.php:42
+#: ../../include/profile_selectors.php:80
msgid "Imaginarily married"
msgstr "Marié(e) dans ses rêves"
-#: ../../include/profile_selectors.php:42
+#: ../../include/profile_selectors.php:80
msgid "Partners"
msgstr "Partenaires"
-#: ../../include/profile_selectors.php:42
+#: ../../include/profile_selectors.php:80
+#: ../../include/profile_selectors.php:97
msgid "Cohabiting"
msgstr "En cohabitation"
-#: ../../include/profile_selectors.php:42
+#: ../../include/profile_selectors.php:80
msgid "Common law"
msgstr "Conjoints de fait"
-#: ../../include/profile_selectors.php:42
+#: ../../include/profile_selectors.php:80
msgid "Happy"
msgstr "Heureux"
-#: ../../include/profile_selectors.php:42
+#: ../../include/profile_selectors.php:80
msgid "Not looking"
msgstr "Pas en recherche"
-#: ../../include/profile_selectors.php:42
+#: ../../include/profile_selectors.php:80
msgid "Swinger"
msgstr "Infidèle"
-#: ../../include/profile_selectors.php:42
+#: ../../include/profile_selectors.php:80
msgid "Betrayed"
msgstr "Trahi(e)"
-#: ../../include/profile_selectors.php:42
+#: ../../include/profile_selectors.php:80
+#: ../../include/profile_selectors.php:97
msgid "Separated"
msgstr "Séparé(e)"
-#: ../../include/profile_selectors.php:42
+#: ../../include/profile_selectors.php:80
msgid "Unstable"
msgstr "Instable"
-#: ../../include/profile_selectors.php:42
+#: ../../include/profile_selectors.php:80
+#: ../../include/profile_selectors.php:97
msgid "Divorced"
msgstr "Divorcé(e)"
-#: ../../include/profile_selectors.php:42
+#: ../../include/profile_selectors.php:80
msgid "Imaginarily divorced"
msgstr "Divorcé(e) dans ses rêves"
-#: ../../include/profile_selectors.php:42
+#: ../../include/profile_selectors.php:80
+#: ../../include/profile_selectors.php:97
msgid "Widowed"
msgstr "Veuf/veuve"
-#: ../../include/profile_selectors.php:42
+#: ../../include/profile_selectors.php:80
msgid "Uncertain"
msgstr "Incertain"
-#: ../../include/profile_selectors.php:42
+#: ../../include/profile_selectors.php:80
+#: ../../include/profile_selectors.php:97
msgid "It's complicated"
msgstr "C'est compliqué"
-#: ../../include/profile_selectors.php:42
+#: ../../include/profile_selectors.php:80
msgid "Don't care"
msgstr "S'en fiche"
-#: ../../include/profile_selectors.php:42
+#: ../../include/profile_selectors.php:80
msgid "Ask me"
msgstr "Me demander"
-#: ../../include/chat.php:10
-msgid "Missing room name"
-msgstr "Il manque le nom du salon"
-
-#: ../../include/chat.php:19
-msgid "Duplicate room name"
-msgstr "Un salon de ce nom existe déjà"
-
-#: ../../include/chat.php:68 ../../include/chat.php:76
-msgid "Invalid room specifier."
-msgstr "Identifiant de salon invalide."
-
-#: ../../include/chat.php:102
-msgid "Room not found."
-msgstr "Salon introuvable."
-
-#: ../../include/chat.php:123
-msgid "Room is full"
-msgstr "Le salon est plein"
-
-#: ../../include/taxonomy.php:210
-msgid "Tags"
-msgstr "Étiquettes"
-
-#: ../../include/taxonomy.php:227
-msgid "Keywords"
-msgstr "Mots-clefs"
-
-#: ../../include/taxonomy.php:252
-msgid "have"
-msgstr "ont"
-
-#: ../../include/taxonomy.php:252
-msgid "has"
-msgstr "a"
-
-#: ../../include/taxonomy.php:253
-msgid "want"
-msgstr "veulent"
-
-#: ../../include/taxonomy.php:253
-msgid "wants"
-msgstr "veut"
-
-#: ../../include/taxonomy.php:254
-msgid "likes"
-msgstr "aime"
-
-#: ../../include/taxonomy.php:255
-msgid "dislikes"
-msgstr "déteste"
-
-#: ../../include/auth.php:76
+#: ../../include/auth.php:90
msgid "Logged out."
msgstr "Deconnecté."
-#: ../../include/auth.php:188
+#: ../../include/auth.php:236
msgid "Failed authentication"
msgstr "Échec de l'authentification"
-#: ../../include/auth.php:203
+#: ../../include/auth.php:251 ../../mod/openid.php:188
msgid "Login failed."
msgstr "Échec de la connexion."
-#: ../../include/account.php:23
-msgid "Not a valid email address"
-msgstr "Ce n'est pas une adresse de courriel valide"
-
-#: ../../include/account.php:25
-msgid "Your email domain is not among those allowed on this site"
-msgstr "Votre domaine de courriel ne fait pas partie de ceux autorisés par ce site"
-
-#: ../../include/account.php:31
-msgid "Your email address is already registered at this site."
-msgstr "Votre adresse de courriel est déjà inscrite sur ce site."
-
-#: ../../include/account.php:64
-msgid "An invitation is required."
-msgstr "Une invitation est requise."
-
-#: ../../include/account.php:68
-msgid "Invitation could not be verified."
-msgstr "Votre invitation n'a pas pu être vérifiée."
-
-#: ../../include/account.php:119
-msgid "Please enter the required information."
-msgstr "Merci d'entrer les informations requises."
-
-#: ../../include/account.php:187
-msgid "Failed to store account information."
-msgstr "Impossible de stocker les informations liées au compte."
-
-#: ../../include/account.php:273
-#, php-format
-msgid "Registration request at %s"
-msgstr "Demande d'inscription sur %s"
-
-#: ../../include/account.php:275 ../../include/account.php:302
-#: ../../include/account.php:359
-msgid "Administrator"
-msgstr "Administrateur"
-
-#: ../../include/account.php:297
-msgid "your registration password"
-msgstr "votre mot de passe d'inscription"
-
-#: ../../include/account.php:300 ../../include/account.php:357
-#, php-format
-msgid "Registration details for %s"
-msgstr "Détails de l'inscription à %s"
-
-#: ../../include/account.php:366
-msgid "Account approved."
-msgstr "Compte approuvé."
-
-#: ../../include/account.php:400
-#, php-format
-msgid "Registration revoked for %s"
-msgstr "Inscription révoquée pour %s"
-
-#: ../../include/dir_fns.php:15
-msgid "Sort Options"
-msgstr "Options de tri"
-
-#: ../../include/dir_fns.php:16
-msgid "Alphabetic"
-msgstr "Alphabétique"
+#: ../../include/permissions.php:13
+msgid "Can view my normal stream and posts"
+msgstr "Peut voir les publications sur mon canal et ses partages."
-#: ../../include/dir_fns.php:17
-msgid "Reverse Alphabetic"
-msgstr "Alphabétique inversé"
+#: ../../include/permissions.php:14
+msgid "Can view my default channel profile"
+msgstr "Peut voir le profil du canal par défaut."
-#: ../../include/dir_fns.php:18
-msgid "Newest to Oldest"
-msgstr "Anté-chronologique"
+#: ../../include/permissions.php:15
+msgid "Can view my photo albums"
+msgstr "Peut voir mon album photos"
-#: ../../include/dir_fns.php:30
-msgid "Enable Safe Search"
-msgstr "Activer la recherche sûre"
+#: ../../include/permissions.php:16
+msgid "Can view my connections"
+msgstr "Peut voir mes connections"
-#: ../../include/dir_fns.php:32
-msgid "Disable Safe Search"
-msgstr "Désactiver la recherche sûre"
+#: ../../include/permissions.php:17
+msgid "Can view my file storage"
+msgstr "Peut voir mes fichiers en partage"
-#: ../../include/dir_fns.php:34
-msgid "Safe Mode"
-msgstr "Mode sûr"
+#: ../../include/permissions.php:18
+msgid "Can view my webpages"
+msgstr "Peut voir mes sites-web"
-#: ../../include/enotify.php:40
-msgid "Red Matrix Notification"
-msgstr "Notification Red Matrix"
+#: ../../include/permissions.php:21
+msgid "Can send me their channel stream and posts"
+msgstr "Peut m'envoyer le flux et les publications de leur canal"
-#: ../../include/enotify.php:41
-msgid "redmatrix"
-msgstr "redmatrix"
+#: ../../include/permissions.php:22
+msgid "Can post on my channel page (\"wall\")"
+msgstr "Peut poster sur la page de mon canal (\"mur\")"
-#: ../../include/enotify.php:43
-msgid "Thank You,"
-msgstr "Merci,"
+#: ../../include/permissions.php:23
+msgid "Can comment on or like my posts"
+msgstr "Peuvent commenter et/ou aimer mes publications"
-#: ../../include/enotify.php:45
-#, php-format
-msgid "%s Administrator"
-msgstr "l'administrateur de %s"
+#: ../../include/permissions.php:24
+msgid "Can send me private mail messages"
+msgstr "Peut m'envoyer des messages privés"
-#: ../../include/enotify.php:80
-#, php-format
-msgid "%s <!item_type!>"
-msgstr "%s <!item_type!>"
+#: ../../include/permissions.php:25
+msgid "Can post photos to my photo albums"
+msgstr "Peut ajouter des photos à mes albums"
-#: ../../include/enotify.php:84
-#, php-format
-msgid "[Red:Notify] New mail received at %s"
-msgstr "[Red:Notification] Nouveau message reçu sur %s"
+#: ../../include/permissions.php:26
+msgid "Can like/dislike stuff"
+msgstr "Peuvent aimer/détester"
-#: ../../include/enotify.php:86
-#, php-format
-msgid "%1$s, %2$s sent you a new private message at %3$s."
-msgstr "%1$s, vous avez reçu un message privé sur %3$s, de la part de %2$s."
+#: ../../include/permissions.php:26
+msgid "Profiles and things other than posts/comments"
+msgstr "Profils et autres excluant les publications/commentaires."
-#: ../../include/enotify.php:87
-#, php-format
-msgid "%1$s sent you %2$s."
-msgstr "%1$s vous a envoyé %2$s."
+#: ../../include/permissions.php:28
+msgid "Can forward to all my channel contacts via post @mentions"
+msgstr "Peut faire suivre à tous les contacts du mon canal via @truc"
-#: ../../include/enotify.php:87
-msgid "a private message"
-msgstr "un message privé"
+#: ../../include/permissions.php:28
+msgid "Advanced - useful for creating group forum channels"
+msgstr "Avancé - utile seulement pour les canaux de type \"forum/groupe\""
-#: ../../include/enotify.php:88
-#, php-format
-msgid "Please visit %s to view and/or reply to your private messages."
-msgstr "Merci de visiter %s pour voir et/ou répondre à vos messages privés."
+#: ../../include/permissions.php:29
+msgid "Can chat with me (when available)"
+msgstr "Peut discuter avec moi (sous réserve de disponibilité)"
-#: ../../include/enotify.php:142
-#, php-format
-msgid "%1$s, %2$s commented on [zrl=%3$s]a %4$s[/zrl]"
-msgstr "%1$s, %2$s a commenté [zrl=%3$s]%4$s[/zrl]"
+#: ../../include/permissions.php:30
+msgid "Can write to my file storage"
+msgstr "Peut écrire dans mon partage de fichiers"
-#: ../../include/enotify.php:150
-#, php-format
-msgid "%1$s, %2$s commented on [zrl=%3$s]%4$s's %5$s[/zrl]"
-msgstr "%1$s, %2$s a commenté [zrl=%3$s]%5$s de %4$s[/zrl]"
+#: ../../include/permissions.php:31
+msgid "Can edit my webpages"
+msgstr "Peut modifier mes sites-web"
-#: ../../include/enotify.php:159
-#, php-format
-msgid "%1$s, %2$s commented on [zrl=%3$s]your %4$s[/zrl]"
-msgstr "%1$s, %2$s a commenté [zrl=%3$s]votre %4$s[/zrl]"
+#: ../../include/permissions.php:33
+msgid "Can source my public posts in derived channels"
+msgstr "Peut rediriger mes publications publiques dans des canaux dérivés"
-#: ../../include/enotify.php:170
-#, php-format
-msgid "[Red:Notify] Comment to conversation #%1$d by %2$s"
-msgstr "[Red:Notification] Commentaire de %2$s sur conversation #%1$d"
+#: ../../include/permissions.php:33
+msgid "Somewhat advanced - very useful in open communities"
+msgstr "Plutôt avancé - très utile dans les communautés ouvertes"
-#: ../../include/enotify.php:171
-#, php-format
-msgid "%1$s, %2$s commented on an item/conversation you have been following."
-msgstr "%1$s, %2$s a commenté un élément de conversation que vous suivez."
+#: ../../include/permissions.php:35
+msgid "Can administer my channel resources"
+msgstr "Peut administrer les ressources de mon canal"
-#: ../../include/enotify.php:174 ../../include/enotify.php:189
-#: ../../include/enotify.php:215 ../../include/enotify.php:234
-#: ../../include/enotify.php:248
-#, php-format
-msgid "Please visit %s to view and/or reply to the conversation."
-msgstr "Merci de visiter %s pour voir et/ou répondre sur cette conversation."
+#: ../../include/permissions.php:35
+msgid ""
+"Extremely advanced. Leave this alone unless you know what you are doing"
+msgstr "Très avancé. Ne pas toucher, sauf si vous savez VRAIMENT ce que vous faites"
-#: ../../include/enotify.php:180
-#, php-format
-msgid "[Red:Notify] %s posted to your profile wall"
-msgstr "[Red:Notification] %s a publié sur votre profil"
+#: ../../mod/mood.php:132
+msgid "Set your current mood and tell your friends"
+msgstr "Indiquez votre humeur du moment à vos amis"
-#: ../../include/enotify.php:182
-#, php-format
-msgid "%1$s, %2$s posted to your profile wall at %3$s"
-msgstr "%1$s, %2$s a posté sur votre profil à %3$s"
+#: ../../mod/mitem.php:14 ../../mod/menu.php:92
+msgid "Menu not found."
+msgstr "Menu introuvable."
-#: ../../include/enotify.php:184
-#, php-format
-msgid "%1$s, %2$s posted to [zrl=%3$s]your wall[/zrl]"
-msgstr "%1$s, %2$s a posté sur [zrl=%3$s]votre profil[/zrl]"
+#: ../../mod/mitem.php:47
+msgid "Menu element updated."
+msgstr "Entrée de menu mis à jour."
-#: ../../include/enotify.php:208
-#, php-format
-msgid "[Red:Notify] %s tagged you"
-msgstr "[Red:Notification] %s vous a marqué"
+#: ../../mod/mitem.php:51
+msgid "Unable to update menu element."
+msgstr "Impossible de mettre l'entrée de menu à jour."
-#: ../../include/enotify.php:209
-#, php-format
-msgid "%1$s, %2$s tagged you at %3$s"
-msgstr "%1$s, vous avez été étiqueté sur %3$s par %2$s"
+#: ../../mod/mitem.php:57
+msgid "Menu element added."
+msgstr "Entrée de menu ajouté."
-#: ../../include/enotify.php:210
-#, php-format
-msgid "%1$s, %2$s [zrl=%3$s]tagged you[/zrl]."
-msgstr "%1$s, %2$s [zrl=%3$s]vous a tagué[/zrl]."
+#: ../../mod/mitem.php:61
+msgid "Unable to add menu element."
+msgstr "Impossible d'ajouter l'entrée de menu."
-#: ../../include/enotify.php:223
-#, php-format
-msgid "[Red:Notify] %1$s poked you"
-msgstr "[Red:Notification] %1$s vous a tapoté"
+#: ../../mod/mitem.php:78 ../../mod/dirprofile.php:175 ../../mod/menu.php:120
+#: ../../mod/xchan.php:27
+msgid "Not found."
+msgstr "Introuvable."
-#: ../../include/enotify.php:224
-#, php-format
-msgid "%1$s, %2$s poked you at %3$s"
-msgstr "%1$s, vous avez été tapoté/pointé/sollicité par %2$s sur %3$s"
+#: ../../mod/mitem.php:96
+msgid "Manage Menu Elements"
+msgstr "Gérer les entrées de menu"
-#: ../../include/enotify.php:225
-#, php-format
-msgid "%1$s, %2$s [zrl=%2$s]poked you[/zrl]."
-msgstr "%1$s, %2$s [zrl=%2$s]vous a tapoté[/zrl]."
+#: ../../mod/mitem.php:99
+msgid "Edit menu"
+msgstr "Éditer le menu"
-#: ../../include/enotify.php:241
-#, php-format
-msgid "[Red:Notify] %s tagged your post"
-msgstr "[Red:Notification] %s a marqué votre publication"
+#: ../../mod/mitem.php:102
+msgid "Edit element"
+msgstr "Éditer l'entrée"
-#: ../../include/enotify.php:242
-#, php-format
-msgid "%1$s, %2$s tagged your post at %3$s"
-msgstr "%1$s, %2$s a tagué votre publication sur %3$s"
+#: ../../mod/mitem.php:103
+msgid "Drop element"
+msgstr "Supprimer l'entrée"
-#: ../../include/enotify.php:243
-#, php-format
-msgid "%1$s, %2$s tagged [zrl=%3$s]your post[/zrl]"
-msgstr "%1$s, %2$s a tagué [zrl=%3$s]votre publication[/zrl]"
+#: ../../mod/mitem.php:104
+msgid "New element"
+msgstr "Nouvelle entrée"
-#: ../../include/enotify.php:255
-msgid "[Red:Notify] Introduction received"
-msgstr "[Red:Notification] Nouvelle introduction"
+#: ../../mod/mitem.php:105
+msgid "Edit this menu container"
+msgstr "Éditer ce bloc de menu"
-#: ../../include/enotify.php:256
-#, php-format
-msgid "%1$s, you've received an introduction from '%2$s' at %3$s"
-msgstr "%1$s, vous avez reçu une introduction de '%2$s' sur %3$s"
+#: ../../mod/mitem.php:106
+msgid "Add menu element"
+msgstr "Ajouter une entrée au menu"
-#: ../../include/enotify.php:257
-#, php-format
-msgid "%1$s, you've received [zrl=%2$s]an introduction[/zrl] from %3$s."
-msgstr "%1$s, vous avez reçu [zrl=%2$s]une introduction[/zrl] de %3$s."
+#: ../../mod/mitem.php:107
+msgid "Delete this menu item"
+msgstr "Supprimer cet entrée du menu"
-#: ../../include/enotify.php:261 ../../include/enotify.php:280
-#, php-format
-msgid "You may visit their profile at %s"
-msgstr "Vous pouvez visiter leur profil sur %s"
+#: ../../mod/mitem.php:108
+msgid "Edit this menu item"
+msgstr "Éditer cette entrée du menu"
-#: ../../include/enotify.php:263
-#, php-format
-msgid "Please visit %s to approve or reject the introduction."
-msgstr "Merci de visiter %s avant d'approuver (ou non) son introduction."
+#: ../../mod/mitem.php:131
+msgid "New Menu Element"
+msgstr "Nouvelle entrée de menu"
-#: ../../include/enotify.php:270
-msgid "[Red:Notify] Friend suggestion received"
-msgstr "[Red:Notification] Nouvelle suggestion d'amitié"
+#: ../../mod/mitem.php:133 ../../mod/mitem.php:176
+msgid "Menu Item Permissions"
+msgstr "Permissions de l'entrée de menu"
-#: ../../include/enotify.php:271
-#, php-format
-msgid "%1$s, you've received a friend suggestion from '%2$s' at %3$s"
-msgstr "%1$s, vous avez reçu une suggestion de relation de '%2$s' à %3$s"
+#: ../../mod/mitem.php:134 ../../mod/mitem.php:177 ../../mod/settings.php:967
+msgid "(click to open/close)"
+msgstr "(cliquer pour ouvrir/fermer)"
-#: ../../include/enotify.php:272
-#, php-format
-msgid ""
-"%1$s, you've received [zrl=%2$s]a friend suggestion[/zrl] for %3$s from "
-"%4$s."
-msgstr "%1$s, avez reçu %3$s comme [zrl=%2$s]une suggestion de relation[/zrl] de %4$s."
+#: ../../mod/mitem.php:136 ../../mod/mitem.php:180
+msgid "Link text"
+msgstr "Texte du lien"
-#: ../../include/enotify.php:278
-msgid "Name:"
-msgstr "Nom&nbsp;:"
+#: ../../mod/mitem.php:137 ../../mod/mitem.php:181
+msgid "URL of link"
+msgstr "URL du lien"
-#: ../../include/enotify.php:279
-msgid "Photo:"
-msgstr "Photo&nbsp;:"
+#: ../../mod/mitem.php:138 ../../mod/mitem.php:182
+msgid "Use Red magic-auth if available"
+msgstr "Utiliser l'authentification magique, lorsque disponible"
-#: ../../include/enotify.php:282
-#, php-format
-msgid "Please visit %s to approve or reject the suggestion."
-msgstr "Merci de visiter %s pour donner suite (ou non) à cette suggestion."
+#: ../../mod/mitem.php:139 ../../mod/mitem.php:183
+msgid "Open link in new window"
+msgstr "Ouvrir le lien dans une nouvelle fenêtre"
-#: ../../include/photos.php:89
-#, php-format
-msgid "Image exceeds website size limit of %lu bytes"
-msgstr "L'image dépasse la taille limite de %lu octets"
+#: ../../mod/mitem.php:141 ../../mod/mitem.php:185
+msgid "Order in list"
+msgstr "Ordre dans la liste"
-#: ../../include/photos.php:96
-msgid "Image file is empty."
-msgstr "L'image est vide."
+#: ../../mod/mitem.php:141 ../../mod/mitem.php:185
+msgid "Higher numbers will sink to bottom of listing"
+msgstr "Les nombres les plus élevés seront descendus au bas de la liste"
-#: ../../include/photos.php:123 ../../mod/profile_photo.php:147
-msgid "Unable to process image"
-msgstr "Impossible de traiter l'image"
+#: ../../mod/mitem.php:154
+msgid "Menu item not found."
+msgstr "Entrée de menu introuvable."
-#: ../../include/photos.php:185
-msgid "Photo storage failed."
-msgstr "Le stockage de l'image a échoué."
+#: ../../mod/mitem.php:163
+msgid "Menu item deleted."
+msgstr "Entrée de menu supprimée."
-#: ../../include/photos.php:306 ../../mod/photos.php:694
-#: ../../mod/photos.php:1191
-msgid "Upload New Photos"
-msgstr "Ajouter des photos"
+#: ../../mod/mitem.php:165
+msgid "Menu item could not be deleted."
+msgstr "Impossible de supprimer l'entrée de menu."
-#: ../../include/reddav.php:1061
-msgid "Edit File properties"
-msgstr "Éditer les propriétés du fichier"
+#: ../../mod/mitem.php:174
+msgid "Edit Menu Element"
+msgstr "Éditer l'entrée de menu"
-#: ../../include/contact_widgets.php:14
-#, php-format
-msgid "%d invitation available"
-msgid_plural "%d invitations available"
-msgstr[0] "%d invitation disponible"
-msgstr[1] "%d invitations disponibles"
+#: ../../mod/mitem.php:186 ../../mod/menu.php:114
+msgid "Modify"
+msgstr "Modifier"
-#: ../../include/contact_widgets.php:20
-msgid "Find Channels"
-msgstr "Trouver des canaux"
+#: ../../mod/ping.php:237
+msgid "sent you a private message"
+msgstr "vous a envoyé un message privé"
-#: ../../include/contact_widgets.php:21
-msgid "Enter name or interest"
-msgstr "Saisir nom ou centre d'intérêt"
+#: ../../mod/ping.php:288
+msgid "added your channel"
+msgstr "a ajouté votre canal"
-#: ../../include/contact_widgets.php:22
-msgid "Connect/Follow"
-msgstr "Relier/Suivre"
+#: ../../mod/ping.php:329
+msgid "posted an event"
+msgstr "a publié un événement"
-#: ../../include/contact_widgets.php:23
-msgid "Examples: Robert Morgenstein, Fishing"
-msgstr "Exemples: Robert Morgenstein, Course à pieds"
+#: ../../mod/acl.php:239
+msgid "network"
+msgstr "réseau"
-#: ../../include/contact_widgets.php:24 ../../mod/directory.php:207
-#: ../../mod/directory.php:212 ../../mod/connections.php:357
-msgid "Find"
-msgstr "Trouver"
+#: ../../mod/settings.php:71
+msgid "Name is required"
+msgstr "Le nom est requis"
-#: ../../include/contact_widgets.php:25 ../../mod/suggest.php:59
-msgid "Channel Suggestions"
-msgstr "Canaux suggérés"
+#: ../../mod/settings.php:75
+msgid "Key and Secret are required"
+msgstr "Clef et secret sont requis"
-#: ../../include/contact_widgets.php:27
-msgid "Random Profile"
-msgstr "Un profil au hasard"
+#: ../../mod/settings.php:196
+msgid "Passwords do not match. Password unchanged."
+msgstr "Les deux saisies du mot de passe ne correspondent pas. Il n'a donc pas été changé."
-#: ../../include/contact_widgets.php:28
-msgid "Invite Friends"
-msgstr "Inviter des amis"
+#: ../../mod/settings.php:200
+msgid "Empty passwords are not allowed. Password unchanged."
+msgstr "Le mot de passe ne peut pas être vide. Il n'a donc pas été changé."
-#: ../../include/contact_widgets.php:120
-#, php-format
-msgid "%d connection in common"
-msgid_plural "%d connections in common"
-msgstr[0] "%d relation en commun"
-msgstr[1] "%d relations en commun"
+#: ../../mod/settings.php:214
+msgid "Password changed."
+msgstr "Le mot de passe a été changé."
-#: ../../include/page_widgets.php:6
-msgid "New Page"
-msgstr "Nouvelle page"
+#: ../../mod/settings.php:216
+msgid "Password update failed. Please try again."
+msgstr "La mise à jour du mot de passe a échoué. Merci de recommencer."
-#: ../../include/plugin.php:475 ../../include/plugin.php:477
-msgid "Click here to upgrade."
-msgstr "Cliquez ici pour mettre à jour."
+#: ../../mod/settings.php:230
+msgid "Not valid email."
+msgstr "Adresse de courriel non-valide."
-#: ../../include/plugin.php:483
-msgid "This action exceeds the limits set by your subscription plan."
-msgstr "Cette action outrepasserait les limites prévues par votre forfait."
+#: ../../mod/settings.php:233
+msgid "Protected email address. Cannot change to that email."
+msgstr "Adresse de courriel protégée. Impossible de l'utiliser."
-#: ../../include/plugin.php:488
-msgid "This action is not available under your subscription plan."
-msgstr "Cette action n'est pas possible avec la formule choisie."
+#: ../../mod/settings.php:242
+msgid "System failure storing new email. Please try again."
+msgstr "Défaillance système lors du stockage de la nouvelle adresse de courriel. Merci de ré-essayer."
-#: ../../include/follow.php:21
-msgid "Channel is blocked on this site."
-msgstr "Ce canal est bloqué sur ce site."
+#: ../../mod/settings.php:445
+msgid "Settings updated."
+msgstr "Réglages sauvegardés."
-#: ../../include/follow.php:26
-msgid "Channel location missing."
-msgstr "Localisation du canal manquante."
+#: ../../mod/settings.php:516 ../../mod/settings.php:542
+#: ../../mod/settings.php:578
+msgid "Add application"
+msgstr "Ajouter une application"
-#: ../../include/follow.php:43
-msgid "Channel discovery failed. Website may be down or misconfigured."
-msgstr "Découverte du canal impossible. Le site est peut-être en dérangement ou mal configuré."
+#: ../../mod/settings.php:519
+msgid "Name of application"
+msgstr "Nom de l'application"
-#: ../../include/follow.php:51
-msgid "Response from remote channel was not understood."
-msgstr "La réponse du canal distant n'a pas été comprise."
+#: ../../mod/settings.php:520 ../../mod/settings.php:546
+msgid "Consumer Key"
+msgstr "Clef de consommateur"
-#: ../../include/follow.php:58
-msgid "Response from remote channel was incomplete."
-msgstr "La réponse du canal distant était incomplète."
+#: ../../mod/settings.php:520 ../../mod/settings.php:521
+msgid "Automatically generated - change if desired. Max length 20"
+msgstr "Généré automatiquement - à changer si besoin. Longueur maximale 20 caractères."
-#: ../../include/follow.php:129
-msgid "local account not found."
-msgstr "compte local introuvable."
+#: ../../mod/settings.php:521 ../../mod/settings.php:547
+msgid "Consumer Secret"
+msgstr "Secret de consommateur"
-#: ../../include/follow.php:138
-msgid "Cannot connect to yourself."
-msgstr "Ne peut pas se connecter à vous."
+#: ../../mod/settings.php:522 ../../mod/settings.php:548
+msgid "Redirect"
+msgstr "Redirection"
-#: ../../include/security.php:280
+#: ../../mod/settings.php:522
msgid ""
-"The form security token was not correct. This probably happened because the "
-"form has been opened for too long (>3 hours) before submitting it."
-msgstr "Le formulaire n'est plus sécurisé, probablement parce qu'il est ouvert depuis trop longtemps (plus de 3 heures)."
-
-#: ../../include/comanche.php:35 ../../view/theme/redbasic/php/config.php:64
-#: ../../view/theme/apw/php/config.php:176
-msgid "Default"
-msgstr "Défaut"
-
-#: ../../include/oembed.php:157
-msgid "Embedded content"
-msgstr "Contenu imbriqué"
-
-#: ../../include/oembed.php:166
-msgid "Embedding disabled"
-msgstr "Imbrication désactivée"
-
-#: ../../include/permissions.php:13
-msgid "Can view my \"public\" stream and posts"
-msgstr "Peut voir mon flux et mes publications \"publiques\""
-
-#: ../../include/permissions.php:14
-msgid "Can view my \"public\" channel profile"
-msgstr "Peut voir mon le canal \"public\" de mon profil"
-
-#: ../../include/permissions.php:15
-msgid "Can view my \"public\" photo albums"
-msgstr "Peut voir mes albums photos \"publics\""
-
-#: ../../include/permissions.php:16
-msgid "Can view my \"public\" address book"
-msgstr "Peut voir mes contacts \"publics\""
-
-#: ../../include/permissions.php:17
-msgid "Can view my \"public\" file storage"
-msgstr "Peut voir mes fichiers \"publics\""
-
-#: ../../include/permissions.php:18
-msgid "Can view my \"public\" pages"
-msgstr "Peut voir mes pages \"publiques\""
-
-#: ../../include/permissions.php:21
-msgid "Can send me their channel stream and posts"
-msgstr "Peut m'envoyer le flux et les publications de leur canal"
-
-#: ../../include/permissions.php:22
-msgid "Can post on my channel page (\"wall\")"
-msgstr "Peut poster sur la page de mon canal (\"mur\")"
+"Redirect URI - leave blank unless your application specifically requires "
+"this"
+msgstr "URI de redirection - laissez blanc, sauf si l'application a demandé autrement"
-#: ../../include/permissions.php:23
-msgid "Can comment on my posts"
-msgstr "Peut commenter mes publications"
+#: ../../mod/settings.php:523 ../../mod/settings.php:549
+msgid "Icon url"
+msgstr "URL de l'icône"
-#: ../../include/permissions.php:24
-msgid "Can send me private mail messages"
-msgstr "Peut m'envoyer des messages privés"
+#: ../../mod/settings.php:523
+msgid "Optional"
+msgstr "Facultatif"
-#: ../../include/permissions.php:25
-msgid "Can post photos to my photo albums"
-msgstr "Peut ajouter des photos à mes albums"
+#: ../../mod/settings.php:534
+msgid "You can't edit this application."
+msgstr "Vous ne pouvez pas éditer cette application."
-#: ../../include/permissions.php:26
-msgid "Can forward to all my channel contacts via post @mentions"
-msgstr "Peut faire suivre à tous les contacts du mon canal via @truc"
+#: ../../mod/settings.php:577
+msgid "Connected Apps"
+msgstr "Applications connectées"
-#: ../../include/permissions.php:26
-msgid "Advanced - useful for creating group forum channels"
-msgstr "Avancé - utile seulement pour les canaux de type \"forum/groupe\""
+#: ../../mod/settings.php:581
+msgid "Client key starts with"
+msgstr "La clef partagée commence par"
-#: ../../include/permissions.php:27
-msgid "Can chat with me (when available)"
-msgstr "Peut discuter avec moi (sous réserve de disponibilité)"
+#: ../../mod/settings.php:582
+msgid "No name"
+msgstr "Sans nom"
-#: ../../include/permissions.php:28
-msgid "Can write to my \"public\" file storage"
-msgstr "Peut écrire dans mon stockage \"public\" de fichiers"
+#: ../../mod/settings.php:583
+msgid "Remove authorization"
+msgstr "Révoquer l'autorisation"
-#: ../../include/permissions.php:29
-msgid "Can edit my \"public\" pages"
-msgstr "Peut éditer mes pages \"publiques\""
+#: ../../mod/settings.php:594
+msgid "No feature settings configured"
+msgstr "Pas de fonctionnalité à configurer"
-#: ../../include/permissions.php:31
-msgid "Can source my \"public\" posts in derived channels"
-msgstr "Peut utiliser mes contributions \"publiques\" comme source de canaux dérivés"
+#: ../../mod/settings.php:602
+msgid "Feature Settings"
+msgstr "Extensions"
-#: ../../include/permissions.php:31
-msgid "Somewhat advanced - very useful in open communities"
-msgstr "Plutôt avancé - très utile dans les communautés ouvertes"
+#: ../../mod/settings.php:625
+msgid "Account Settings"
+msgstr "Compte"
-#: ../../include/permissions.php:32
-msgid "Can send me bookmarks"
-msgstr "Peut m'envoyer des marque-pages"
+#: ../../mod/settings.php:626
+msgid "Password Settings"
+msgstr "Mot de passe"
-#: ../../include/permissions.php:33
-msgid "Can administer my channel resources"
-msgstr "Peut administrer les ressources de mon canal"
+#: ../../mod/settings.php:627
+msgid "New Password:"
+msgstr "Nouveau mot de passe&nbsp;:"
-#: ../../include/permissions.php:33
-msgid ""
-"Extremely advanced. Leave this alone unless you know what you are doing"
-msgstr "Très avancé. Ne pas toucher, sauf si vous savez VRAIMENT ce que vous faites"
+#: ../../mod/settings.php:628
+msgid "Confirm:"
+msgstr "Confirmation&nbsp;:"
-#: ../../include/items.php:231 ../../mod/like.php:55 ../../mod/profperm.php:23
-#: ../../mod/group.php:68 ../../index.php:350
-msgid "Permission denied"
-msgstr "Accès refusé"
+#: ../../mod/settings.php:628
+msgid "Leave password fields blank unless changing"
+msgstr "Laissez les mots de passe vides si vous ne voulez pas les modifier"
-#: ../../include/items.php:3453 ../../mod/thing.php:78 ../../mod/admin.php:151
-#: ../../mod/admin.php:782 ../../mod/admin.php:985 ../../mod/viewsrc.php:18
-#: ../../mod/home.php:63 ../../mod/display.php:32 ../../mod/filestorage.php:18
-msgid "Item not found."
-msgstr "Élément introuvable."
+#: ../../mod/settings.php:630 ../../mod/settings.php:943
+msgid "Email Address:"
+msgstr "Adresse de courriel&nbsp;:"
-#: ../../include/items.php:3809 ../../mod/group.php:38 ../../mod/group.php:140
-msgid "Collection not found."
-msgstr "Collection introuvable."
+#: ../../mod/settings.php:631 ../../mod/removeaccount.php:61
+msgid "Remove Account"
+msgstr "Supprimer le compte"
-#: ../../include/items.php:3824
-msgid "Collection is empty."
-msgstr "Collection vide."
+#: ../../mod/settings.php:632 ../../mod/settings.php:1006
+msgid "Warning: This action is permanent and cannot be reversed."
+msgstr "Attention&nbsp;: cette action est permanente et irréversible."
-#: ../../include/items.php:3831
-#, php-format
-msgid "Collection: %s"
-msgstr "Collection&nbsp;: %s"
+#: ../../mod/settings.php:648
+msgid "Off"
+msgstr "Inactif"
-#: ../../include/items.php:3842
-#, php-format
-msgid "Connection: %s"
-msgstr "Relation&nbsp;: %s"
+#: ../../mod/settings.php:648
+msgid "On"
+msgstr "Actif"
-#: ../../include/items.php:3845
-msgid "Connection not found."
-msgstr "Relation introuvable."
+#: ../../mod/settings.php:655
+msgid "Additional Features"
+msgstr "Fonctionnalités additionnelles"
-#: ../../include/zot.php:548
-msgid "Invalid data packet"
-msgstr "Paquet de données invalide"
+#: ../../mod/settings.php:680
+msgid "Connector Settings"
+msgstr "Connecteurs"
-#: ../../include/zot.php:558
-msgid "Unable to verify channel signature"
-msgstr "Impossible de vérifier la signature du canal"
+#: ../../mod/settings.php:710 ../../mod/admin.php:399
+msgid "No special theme for mobile devices"
+msgstr "Pas de thème spécifique aux périphériques mobiles"
-#: ../../include/zot.php:735
+#: ../../mod/settings.php:719
#, php-format
-msgid "Unable to verify site signature for %s"
-msgstr "Impossible de vérifier la signature de site pour %s"
-
-#: ../../mod/common.php:10
-msgid "No channel."
-msgstr "Pas de canal."
-
-#: ../../mod/common.php:39
-msgid "Common connections"
-msgstr "Relations communes"
-
-#: ../../mod/common.php:44
-msgid "No connections in common."
-msgstr "Pas de relations en commun."
+msgid "%s - (Experimental)"
+msgstr "%s - (Expérimental)"
-#: ../../mod/events.php:72
-msgid "Event title and start time are required."
-msgstr "Un titre et une date de début sont requises pour l'événement."
-
-#: ../../mod/events.php:287
-msgid "l, F j"
-msgstr "l j F"
-
-#: ../../mod/events.php:309
-msgid "Edit event"
-msgstr "Éditer événement"
-
-#: ../../mod/events.php:355
-msgid "Create New Event"
-msgstr "Créer événement"
-
-#: ../../mod/events.php:356
-msgid "Previous"
-msgstr "Précédent"
-
-#: ../../mod/events.php:357 ../../mod/setup.php:258
-msgid "Next"
-msgstr "Suivant"
-
-#: ../../mod/events.php:428
-msgid "hour:minute"
-msgstr "heure:minute"
+#: ../../mod/settings.php:752
+msgid "Display Settings"
+msgstr "Affichage"
-#: ../../mod/events.php:447
-msgid "Event details"
-msgstr "Détails de l'événement"
+#: ../../mod/settings.php:758
+msgid "Display Theme:"
+msgstr "Thème&nbsp;:"
-#: ../../mod/events.php:448
-#, php-format
-msgid "Format is %s %s. Starting date and Title are required."
-msgstr "Le format est %s %s. Date de début et titre obligatoires."
+#: ../../mod/settings.php:759
+msgid "Mobile Theme:"
+msgstr "Thème mobile&nbsp;:"
-#: ../../mod/events.php:450
-msgid "Event Starts:"
-msgstr "L'événement débute&nbsp;:"
+#: ../../mod/settings.php:760
+msgid "Enable user zoom on mobile devices"
+msgstr "Permettre à l'utilisateur d'un mobile d'agrandir le contenu"
-#: ../../mod/events.php:450 ../../mod/events.php:464
-msgid "Required"
-msgstr "Requis"
+#: ../../mod/settings.php:761
+msgid "Update browser every xx seconds"
+msgstr "Rafraîchir le navigateur toutes les xx secondes"
-#: ../../mod/events.php:453
-msgid "Finish date/time is not known or not relevant"
-msgstr "Date/heure de fin inconnue ou sans objet"
+#: ../../mod/settings.php:761
+msgid "Minimum of 10 seconds, no maximum"
+msgstr "Minimum 10 secondes, pas de maximum"
-#: ../../mod/events.php:455
-msgid "Event Finishes:"
-msgstr "L'événement termine&nbsp;:"
+#: ../../mod/settings.php:762
+msgid "Maximum number of conversations to load at any time:"
+msgstr "Nombre maximal de conversations pouvant être chargées en même temps&nbsp;:"
-#: ../../mod/events.php:458
-msgid "Adjust for viewer timezone"
-msgstr "Ajuster au fuseau horaire du visiteur"
+#: ../../mod/settings.php:762
+msgid "Maximum of 100 items"
+msgstr "100 éléments au maximum"
-#: ../../mod/events.php:460
-msgid "Description:"
-msgstr "Description:"
+#: ../../mod/settings.php:763
+msgid "Don't show emoticons"
+msgstr "Ne pas montrer les frimousses/émoticones"
-#: ../../mod/events.php:464
-msgid "Title:"
-msgstr "Titre:"
+#: ../../mod/settings.php:764
+msgid "System Page Layout Editor - (advanced)"
+msgstr "Agencements des pages système - (avancé)"
-#: ../../mod/events.php:466
-msgid "Share this event"
-msgstr "Partager cet événement"
+#: ../../mod/settings.php:800
+msgid "Nobody except yourself"
+msgstr "Personne sauf vous"
-#: ../../mod/thing.php:98
-msgid "Thing updated"
-msgstr "Chose mise-à-jour"
+#: ../../mod/settings.php:801
+msgid "Only those you specifically allow"
+msgstr "Seulement ceux que vous autorisez spécifiquement"
-#: ../../mod/thing.php:158
-msgid "Object store: failed"
-msgstr "Stockage de l'objet&nbsp;: échec"
+#: ../../mod/settings.php:802
+msgid "Approved connections"
+msgstr "Contacts Approuvés"
-#: ../../mod/thing.php:162
-msgid "Thing added"
-msgstr "Chose ajoutée"
+#: ../../mod/settings.php:803
+msgid "Any connections"
+msgstr "Tous les contacts"
-#: ../../mod/thing.php:182
-#, php-format
-msgid "OBJ: %1$s %2$s %3$s"
-msgstr "OBJ: %1$s %2$s %3$s"
+#: ../../mod/settings.php:804
+msgid "Anybody on this website"
+msgstr "Tous les utilisateurs du hub"
-#: ../../mod/thing.php:234
-msgid "Show Thing"
-msgstr "Montrer chose"
+#: ../../mod/settings.php:805
+msgid "Anybody in this network"
+msgstr "Tous les utilisateurs sur ce réseau"
-#: ../../mod/thing.php:241
-msgid "item not found."
-msgstr "élément introuvable."
+#: ../../mod/settings.php:806
+msgid "Anybody authenticated"
+msgstr "Tous les utilisateurs authentifiés"
-#: ../../mod/thing.php:269
-msgid "Edit Thing"
-msgstr "Éditer chose"
+#: ../../mod/settings.php:807
+msgid "Anybody on the internet"
+msgstr "Tous les utilisateurs d'Internet"
-#: ../../mod/thing.php:271 ../../mod/thing.php:318
-msgid "Select a profile"
-msgstr "Choisissez un profil"
+#: ../../mod/settings.php:884
+msgid "Publish your default profile in the network directory"
+msgstr "Publier votre profil par défaut dans l'annuaire du réseau"
-#: ../../mod/thing.php:273 ../../mod/thing.php:320
-msgid "Select a category of stuff. e.g. I ______ something"
-msgstr "Choisissez une catégorie de choses. p.ex. Je ______ quelque-chose"
+#: ../../mod/settings.php:884 ../../mod/settings.php:889
+#: ../../mod/settings.php:960 ../../mod/api.php:106 ../../mod/profiles.php:566
+#: ../../mod/admin.php:429
+msgid "No"
+msgstr "Non"
-#: ../../mod/thing.php:275 ../../mod/thing.php:321
-msgid "Post an activity"
-msgstr "Publier une activité"
+#: ../../mod/settings.php:884 ../../mod/settings.php:889
+#: ../../mod/settings.php:960 ../../mod/api.php:105 ../../mod/profiles.php:565
+#: ../../mod/admin.php:431
+msgid "Yes"
+msgstr "Oui"
-#: ../../mod/thing.php:275 ../../mod/thing.php:321
-msgid "Only sends to viewers of the applicable profile"
-msgstr ""
+#: ../../mod/settings.php:889
+msgid "Allow us to suggest you as a potential friend to new members?"
+msgstr "Nous autoriser à vous suggérer comme relation potentielle aux nouveaux membres?"
-#: ../../mod/thing.php:277 ../../mod/thing.php:323
-msgid "Name of thing e.g. something"
-msgstr "Nom de la chose, p.ex. quelque-chose"
+#: ../../mod/settings.php:893 ../../mod/profile_photo.php:365
+msgid "or"
+msgstr "ou"
-#: ../../mod/thing.php:279 ../../mod/thing.php:324
-msgid "URL of thing (optional)"
-msgstr "URL de la chose (optionnel)"
+#: ../../mod/settings.php:898
+msgid "Your channel address is"
+msgstr "Voici l'adresse de votre canal"
-#: ../../mod/thing.php:281 ../../mod/thing.php:325
-msgid "URL for photo of thing (optional)"
-msgstr "URL de l'image de la chose (optionnel)"
+#: ../../mod/settings.php:932
+msgid "Channel Settings"
+msgstr "Canal"
-#: ../../mod/thing.php:316
-msgid "Add Thing to your Profile"
-msgstr "Ajouter la chose à votre profil"
+#: ../../mod/settings.php:941
+msgid "Basic Settings"
+msgstr "Basique"
-#: ../../mod/invite.php:25
-msgid "Total invitation limit exceeded."
-msgstr "Limite du nombre total d'invitation dépassée."
+#: ../../mod/settings.php:944
+msgid "Your Timezone:"
+msgstr "Fureau Horaire&nbsp;:"
-#: ../../mod/invite.php:49
-#, php-format
-msgid "%s : Not a valid email address."
-msgstr "%s&nbsp: adresse courriel invalide."
+#: ../../mod/settings.php:945
+msgid "Default Post Location:"
+msgstr "Emplacement géographique par défaut&nbsp;:"
-#: ../../mod/invite.php:76
-msgid "Please join us on Red"
-msgstr "Rejoignez-nous sur Red"
+#: ../../mod/settings.php:945
+msgid "Geographical location to display on your posts"
+msgstr "Emplacement géographique à afficher sur vos publications"
-#: ../../mod/invite.php:87
-msgid "Invitation limit exceeded. Please contact your site administrator."
-msgstr "Limite d'invitations dépassée. Merci de contacter l'administration de votre site."
+#: ../../mod/settings.php:946
+msgid "Use Browser Location:"
+msgstr "Utiliser la géolocalisation fournie par le navigateur&nbsp;:"
-#: ../../mod/invite.php:92
-#, php-format
-msgid "%s : Message delivery failed."
-msgstr "%s&nbsp;: Échec dans la livraison du message."
+#: ../../mod/settings.php:948
+msgid "Adult Content"
+msgstr "Contenu \"adulte\""
-#: ../../mod/invite.php:96
-#, php-format
-msgid "%d message sent."
-msgid_plural "%d messages sent."
-msgstr[0] "%d message envoyé."
-msgstr[1] "%d messages envoyés."
+#: ../../mod/settings.php:948
+msgid ""
+"This channel frequently or regularly publishes adult content. (Please tag "
+"any adult material and/or nudity with #NSFW)"
+msgstr "Ce canal publie plus ou moins fréquemment du contenu pour adultes. (Merci d'indiquer tout contenu pour adulte ou potentiellement choquant avec l'étiquette <em>#NSFW</em> - Not Safe For Work)"
-#: ../../mod/invite.php:115
-msgid "You have no more invitations available"
-msgstr "Vous ne disposez plus d'aucune invitation"
+#: ../../mod/settings.php:950
+msgid "Security and Privacy Settings"
+msgstr "Réglages de Sécurité et vie privée"
-#: ../../mod/invite.php:141
-msgid "Send invitations"
-msgstr "Envoyer des invitations"
+#: ../../mod/settings.php:952
+msgid "Hide my online presence"
+msgstr "Cacher ma présence en ligne"
-#: ../../mod/invite.php:142
-msgid "Enter email addresses, one per line:"
-msgstr "Entrez les adresses de courriel, une par ligne&nbsp;:"
+#: ../../mod/settings.php:952
+msgid "Prevents displaying in your profile that you are online"
+msgstr "Cacher votre statut (en ligne/hors ligne) sur votre profil"
-#: ../../mod/invite.php:143 ../../mod/mail.php:216 ../../mod/mail.php:328
-msgid "Your message:"
-msgstr "Votre message&nbsp;:"
+#: ../../mod/settings.php:954
+msgid "Simple Privacy Settings:"
+msgstr "Réglages simples&nbsp;:"
-#: ../../mod/invite.php:144
+#: ../../mod/settings.php:955
msgid ""
-"You are cordially invited to join me and some other close friends on the Red"
-" Matrix - a revolutionary new decentralised communication and information "
-"tool."
-msgstr "Vous êtes cordialement invité à me rejoindre, ainsi que d'autres amis proches, sur la Matrice Red - un nouvel outil de communication acentré/décentralisé et révolutionnaire."
+"Very Public - <em>extremely permissive (should be used with caution)</em>"
+msgstr "Très public - <em>extrèmement permissif (à n'utiliser qu'en connaissance de cause)</em>"
-#: ../../mod/invite.php:146
-msgid "You will need to supply this invitation code: $invite_code"
-msgstr "Vous devrez fournir ce code d'invitation&nbsp;: $invite_code"
+#: ../../mod/settings.php:956
+msgid ""
+"Typical - <em>default public, privacy when desired (similar to social "
+"network permissions but with improved privacy)</em>"
+msgstr "Classique - <em>public par défaut, privé en cas de besoin (comparable dans le principe aux réseaux sociaux centralisés, avec un mode privé plus efficace)</em>"
-#: ../../mod/invite.php:147
-msgid "Please visit my channel at"
-msgstr "Merci de me rendre visite sur"
+#: ../../mod/settings.php:957
+msgid "Private - <em>default private, never open or public</em>"
+msgstr "Privé - <em>privé par défaut, jamais ouvert ni public</em>"
-#: ../../mod/invite.php:151
-msgid ""
-"Once you have registered (on ANY Red Matrix site - they are all inter-"
-"connected), please connect with my Red Matrix channel address:"
-msgstr "Une fois inscrit (sur N'IMPORTE QUEL site Red Matrix - ils sont tous inter-connectés), merci de vous relier à l'adresse de mon canal&nbsp;:"
+#: ../../mod/settings.php:958
+msgid "Blocked - <em>default blocked to/from everybody</em>"
+msgstr "Bloqué - <em>par défaut, bloqué de/vers tout le monde</em>"
-#: ../../mod/invite.php:153
-msgid "Click the [Register] link on the following page to join."
-msgstr "Cliquez le lien [Inscription] sur la page suivante pour nous rejoindre."
+#: ../../mod/settings.php:960
+msgid "Allow others to tag your posts"
+msgstr "Autoriser les autres à \"étiqueté\" vos publications"
-#: ../../mod/invite.php:155
+#: ../../mod/settings.php:960
msgid ""
-"For more information about the Red Matrix Project and why it has the "
-"potential to change the internet as we know it, please visit "
-"http://getzot.com"
-msgstr "Pour plus d'information sur le projet Red Matrix, et sa capacité à remodeler Internet, merci de visiter http://getzot.com"
+"Often used by the community to retro-actively flag inappropriate content"
+msgstr "Souvent utilisé par la communauté pour distinguer le contenu innaproprié"
-#: ../../mod/item.php:145
-msgid "Unable to locate original post."
-msgstr "Impossible de localiser la publication initiale."
+#: ../../mod/settings.php:962
+msgid "Advanced Privacy Settings"
+msgstr "Réglages avancés"
-#: ../../mod/item.php:346
-msgid "Empty post discarded."
-msgstr "Publication vide défaussée."
+#: ../../mod/settings.php:964
+msgid "Expire other channel content after this many days"
+msgstr "Faire expirer le contenu des autres canaux après n jours"
-#: ../../mod/item.php:388
-msgid "Executable content type not permitted to this channel."
-msgstr "Les contenus de type 'exécutable' ne sont pas autorisés sur ce canal."
+#: ../../mod/settings.php:964
+msgid "0 or blank prevents expiration"
+msgstr "0, ou vide, pour ne pas faire expirer"
-#: ../../mod/item.php:835
-msgid "System error. Post not saved."
-msgstr "Erreur système. Publication non sauvegardée."
+#: ../../mod/settings.php:965
+msgid "Maximum Friend Requests/Day:"
+msgstr "Nombre maximum de mises en relation par jour&nbsp;:"
-#: ../../mod/item.php:1102 ../../mod/wall_upload.php:41
-msgid "Wall Photos"
-msgstr "Photos du mur"
+#: ../../mod/settings.php:965
+msgid "May reduce spam activity"
+msgstr "Contribue à réduire l'impact des indésirables"
-#: ../../mod/item.php:1182
-#, php-format
-msgid "You have reached your limit of %1$.0f top level posts."
-msgstr "Vous avez atteint votre limite de %1$.0f contributions \"racine\"."
+#: ../../mod/settings.php:966
+msgid "Default Post Permissions"
+msgstr "Permissions par défaut des publications"
-#: ../../mod/item.php:1188
-#, php-format
-msgid "You have reached your limit of %1$.0f webpages."
-msgstr "Vous avez atteint votre limite de %1$.0f pages web."
+#: ../../mod/settings.php:978
+msgid "Maximum private messages per day from unknown people:"
+msgstr "Nombre maximum de messages privés émanant d'inconnus, par jour&nbsp;:"
-#: ../../mod/menu.php:21
-msgid "Menu updated."
-msgstr "Menu mis à jour."
+#: ../../mod/settings.php:978
+msgid "Useful to reduce spamming"
+msgstr "Utile pour réduire les indésirables"
-#: ../../mod/menu.php:25
-msgid "Unable to update menu."
-msgstr "Impossible de mettre le menu à jour."
+#: ../../mod/settings.php:981
+msgid "Notification Settings"
+msgstr "Notifications"
-#: ../../mod/menu.php:30
-msgid "Menu created."
-msgstr "Menu créé."
+#: ../../mod/settings.php:982
+msgid "By default post a status message when:"
+msgstr "Par défaut, publier un statut quand:"
-#: ../../mod/menu.php:34
-msgid "Unable to create menu."
-msgstr "Impossible de créer le menu."
+#: ../../mod/settings.php:983
+msgid "accepting a friend request"
+msgstr "vous acceptez une mise en relation"
-#: ../../mod/menu.php:57
-msgid "Manage Menus"
-msgstr "Gérer les menus"
+#: ../../mod/settings.php:984
+msgid "joining a forum/community"
+msgstr "vous joignez un forum ou à une communauté"
-#: ../../mod/menu.php:60
-msgid "Drop"
-msgstr "Supprimer"
+#: ../../mod/settings.php:985
+msgid "making an <em>interesting</em> profile change"
+msgstr "vous faites une modification <em>intéressante</em> de votre profil"
-#: ../../mod/menu.php:62
-msgid "Create a new menu"
-msgstr "Créer un nouveau menu"
+#: ../../mod/settings.php:986
+msgid "Send a notification email when:"
+msgstr "Envoyer un courriel de notification quand&nbsp;:"
-#: ../../mod/menu.php:63
-msgid "Delete this menu"
-msgstr "Supprimer ce menu"
+#: ../../mod/settings.php:987
+msgid "You receive a connection request"
+msgstr "Vous recevez une demande de mise en relation"
-#: ../../mod/menu.php:64 ../../mod/menu.php:109
-msgid "Edit menu contents"
-msgstr "Éditer le contenu du menu"
+#: ../../mod/settings.php:988
+msgid "Your connections are confirmed"
+msgstr "Vous relations sont confirmées"
-#: ../../mod/menu.php:65
-msgid "Edit this menu"
-msgstr "Éditer le menu"
+#: ../../mod/settings.php:989
+msgid "Someone writes on your profile wall"
+msgstr "Quelqu'un a écrit sur votre mur"
-#: ../../mod/menu.php:80
-msgid "New Menu"
-msgstr "Nouveau menu"
+#: ../../mod/settings.php:990
+msgid "Someone writes a followup comment"
+msgstr "Quelqu'un a commenté sur vos publications"
-#: ../../mod/menu.php:81 ../../mod/menu.php:110
-msgid "Menu name"
-msgstr "Nom du menu"
+#: ../../mod/settings.php:991
+msgid "You receive a private message"
+msgstr "Vous recevez un message privé"
-#: ../../mod/menu.php:81 ../../mod/menu.php:110
-msgid "Must be unique, only seen by you"
-msgstr "Doit être unique, ne sera vu que par vous"
+#: ../../mod/settings.php:992
+msgid "You receive a friend suggestion"
+msgstr "Vous recevez une suggestion d'amitié/relation"
-#: ../../mod/menu.php:82 ../../mod/menu.php:111
-msgid "Menu title"
-msgstr "Titre du menu"
+#: ../../mod/settings.php:993
+msgid "You are tagged in a post"
+msgstr "Vous êtes étiqueté dans une publication"
-#: ../../mod/menu.php:82 ../../mod/menu.php:111
-msgid "Menu title as seen by others"
-msgstr "Titre du menu tel que vu par les visiteurs"
+#: ../../mod/settings.php:994
+msgid "You are poked/prodded/etc. in a post"
+msgstr "Vous êtes cogné/encouragé/etc. dans une publication"
-#: ../../mod/menu.php:83 ../../mod/menu.php:112
-msgid "Allow bookmarks"
-msgstr "Autoriser les marque-pages"
+#: ../../mod/settings.php:997
+msgid "Advanced Account/Page Type Settings"
+msgstr "Type de page/Compte (avancé)"
-#: ../../mod/menu.php:83 ../../mod/menu.php:112
-msgid "Menu may be used to store saved bookmarks"
-msgstr "Le menu pourra être utilisé pour stocker des marque-pages"
+#: ../../mod/settings.php:998
+msgid "Change the behaviour of this account for special situations"
+msgstr "Modifie le comportement de ce compte pour certains cas particuliers"
-#: ../../mod/menu.php:84 ../../mod/mitem.php:142 ../../mod/new_channel.php:117
-msgid "Create"
-msgstr "Créer"
+#: ../../mod/settings.php:1001
+msgid ""
+"Please enable expert mode (in <a href=\"settings/features\">Settings > "
+"Additional features</a>) to adjust!"
+msgstr "Mode expert requis (<a href=\"settings/features\">Réglages > Fonctions supplémentaires</a>) svp ajuster!"
-#: ../../mod/menu.php:92 ../../mod/mitem.php:14
-msgid "Menu not found."
-msgstr "Menu introuvable."
+#: ../../mod/settings.php:1002
+msgid "Miscellaneous Settings"
+msgstr "Divers"
-#: ../../mod/menu.php:98
-msgid "Menu deleted."
-msgstr "Menu supprimé."
+#: ../../mod/settings.php:1004
+msgid "Personal menu to display in your channel pages"
+msgstr "Menu personnel tel qu'il apparaîtra sur les pages de votre canal"
-#: ../../mod/menu.php:100
-msgid "Menu could not be deleted."
-msgstr "Impossible de supprimer le menu."
+#: ../../mod/settings.php:1005
+msgid "Remove this channel"
+msgstr "Supprimer ce canal"
-#: ../../mod/menu.php:106
-msgid "Edit Menu"
-msgstr "Éditer le menu"
+#: ../../mod/poke.php:159
+msgid "Poke/Prod"
+msgstr "Cogner/Encourager"
-#: ../../mod/menu.php:108
-msgid "Add or remove entries to this menu"
-msgstr "Ajouter/supprimer des entrées à ce menu"
+#: ../../mod/poke.php:160
+msgid "poke, prod or do other things to somebody"
+msgstr "Cogner, encourager, et autres choses à faire à quelqu'un"
-#: ../../mod/menu.php:114 ../../mod/mitem.php:186
-msgid "Modify"
-msgstr "Modifier"
+#: ../../mod/poke.php:161
+msgid "Recipient"
+msgstr "Destinataire"
-#: ../../mod/menu.php:120 ../../mod/mitem.php:78 ../../mod/xchan.php:27
-#: ../../mod/dirprofile.php:181
-msgid "Not found."
-msgstr "Introuvable."
+#: ../../mod/poke.php:162
+msgid "Choose what you wish to do to recipient"
+msgstr "Choisir quoi lui faire"
-#: ../../mod/webpages.php:121 ../../mod/layouts.php:105
-#: ../../mod/blocks.php:96
-msgid "View"
-msgstr "Vue"
+#: ../../mod/poke.php:165
+msgid "Make this post private"
+msgstr "Rendre cette contribution privée"
#: ../../mod/api.php:76 ../../mod/api.php:102
msgid "Authorize application connection"
@@ -3557,1238 +4188,1068 @@ msgid ""
" and/or create new posts for you?"
msgstr "Voulez-vous autoriser cette application à accéder à vos publications et contacts, et/ou à publier en votre nom?"
-#: ../../mod/api.php:105 ../../mod/profiles.php:483 ../../mod/settings.php:878
-#: ../../mod/settings.php:883
-msgid "Yes"
-msgstr "Oui"
-
-#: ../../mod/api.php:106 ../../mod/profiles.php:484 ../../mod/settings.php:878
-#: ../../mod/settings.php:883
-msgid "No"
-msgstr "Non"
-
-#: ../../mod/apps.php:8
-msgid "No installed applications."
-msgstr "Aucune application installée."
-
-#: ../../mod/apps.php:13
-msgid "Applications"
-msgstr "Applications"
-
-#: ../../mod/rpost.php:86 ../../mod/editpost.php:42
-msgid "Edit post"
-msgstr "Éditer la contribution"
-
-#: ../../mod/cloud.php:112
-msgid "Red Matrix - Guests: Username: {your email address}, Password: +++"
-msgstr "Red Matrix - Pour les invités: Username={votre courriel}, MDP=+++"
-
-#: ../../mod/bookmarks.php:38
-msgid "Bookmark added"
-msgstr "Marque-page ajouté"
+#: ../../mod/post.php:229
+msgid ""
+"Remote authentication blocked. You are logged into this site locally. Please"
+" logout and retry."
+msgstr "Authentification magique bloquée. Vous êtes connecté sur ce site localement. Merci de vous en déconnecter et réessayer."
-#: ../../mod/bookmarks.php:53
-msgid "My Bookmarks"
-msgstr "Mes marque-pages"
+#: ../../mod/post.php:261 ../../mod/openid.php:72 ../../mod/openid.php:178
+#, php-format
+msgid "Welcome %s. Remote authentication successful."
+msgstr "Bienvenue %s. L'authentification magique a fonctionné."
-#: ../../mod/bookmarks.php:64
-msgid "My Connections Bookmarks"
-msgstr "Marque-pages de mes relations"
+#: ../../mod/attach.php:9
+msgid "Item not available."
+msgstr "Élément indisponible."
-#: ../../mod/subthread.php:105
+#: ../../mod/probe.php:23 ../../mod/probe.php:29
#, php-format
-msgid "%1$s is following %2$s's %3$s"
-msgstr "%1$s suit %3$s de %2$s"
+msgid "Fetching URL returns error: %1$s"
+msgstr "Récupération d'URL échouée&nbsp;: %1$s"
-#: ../../mod/update_network.php:23 ../../mod/update_channel.php:43
-#: ../../mod/update_search.php:46 ../../mod/update_display.php:25
-#: ../../mod/update_community.php:18
-msgid "[Embedded content - reload page to view]"
-msgstr "[Contenu embarqué - rechargez la page pour le voir]"
+#: ../../mod/block.php:27 ../../mod/page.php:35
+msgid "Invalid item."
+msgstr "Élément invalide."
-#: ../../mod/chanview.php:77 ../../mod/home.php:50 ../../mod/page.php:47
-#: ../../mod/wall_upload.php:35
+#: ../../mod/block.php:39 ../../mod/chanview.php:77 ../../mod/page.php:47
+#: ../../mod/home.php:54 ../../mod/wall_upload.php:28
msgid "Channel not found."
msgstr "Canal introuvable."
-#: ../../mod/chanview.php:93
-msgid "toggle full screen mode"
-msgstr "(dés)activer le mode plein-écran"
+#: ../../mod/block.php:75 ../../mod/page.php:83 ../../mod/display.php:100
+#: ../../mod/help.php:72 ../../index.php:236
+msgid "Page not found."
+msgstr "Page introuvable."
-#: ../../mod/tagger.php:98
-#, php-format
-msgid "%1$s tagged %2$s's %3$s with %4$s"
-msgstr "%1$s a étiqueté le %3$s de %2$s par %4$s"
+#: ../../mod/profile_photo.php:108
+msgid "Image uploaded but image cropping failed."
+msgstr "L'image a été téléversée, mais le recadrage a échoué."
-#: ../../mod/chat.php:18 ../../mod/channel.php:25
-msgid "You must be logged in to see this page."
-msgstr "Vous devez vous connecter pour voir cette page."
+#: ../../mod/profile_photo.php:161
+msgid "Image resize failed."
+msgstr "Le redimensionnement de l'image a échoué."
-#: ../../mod/chat.php:163
-msgid "Leave Room"
-msgstr "Quitter le salon"
+#: ../../mod/profile_photo.php:205
+msgid ""
+"Shift-reload the page or clear browser cache if the new photo does not "
+"display immediately."
+msgstr "Shirt-rechargez votre page, ou videz le cache du navigateur si la photo ne s'affiche pas immédiatement."
-#: ../../mod/chat.php:164
-msgid "I am away right now"
-msgstr "Je suis momentanément absent"
+#: ../../mod/profile_photo.php:232
+#, php-format
+msgid "Image exceeds size limit of %d"
+msgstr "L'image dépasse la taille limite de %d"
-#: ../../mod/chat.php:165
-msgid "I am online"
-msgstr "Je suis en ligne"
+#: ../../mod/profile_photo.php:241
+msgid "Unable to process image."
+msgstr "Impossible de traîter l'image."
-#: ../../mod/chat.php:189 ../../mod/chat.php:209
-msgid "New Chatroom"
-msgstr "Nouveau salon"
+#: ../../mod/profile_photo.php:290 ../../mod/profile_photo.php:339
+msgid "Photo not available."
+msgstr "Photo inaccessible."
-#: ../../mod/chat.php:190
-msgid "Chatroom Name"
-msgstr "Nom du salon"
+#: ../../mod/profile_photo.php:358
+msgid "Upload File:"
+msgstr "Fichier&nbsp;:"
-#: ../../mod/chat.php:205
-#, php-format
-msgid "%1$s's Chatrooms"
-msgstr "Salons de %1$s"
+#: ../../mod/profile_photo.php:359
+msgid "Select a profile:"
+msgstr "Choisir un profil&nbsp;:"
-#: ../../mod/viewconnections.php:17 ../../mod/search.php:13
-#: ../../mod/directory.php:15 ../../mod/display.php:9
-#: ../../mod/community.php:18 ../../mod/dirprofile.php:9
-#: ../../mod/photos.php:443
-msgid "Public access denied."
-msgstr "Accès public refusé."
+#: ../../mod/profile_photo.php:360
+msgid "Upload Profile Photo"
+msgstr "Téléverser une photo de profil"
-#: ../../mod/viewconnections.php:43
-msgid "No connections."
-msgstr "Pas de relations."
+#: ../../mod/profile_photo.php:365
+msgid "skip this step"
+msgstr "passer cette étape"
-#: ../../mod/viewconnections.php:55
-#, php-format
-msgid "Visit %s's profile [%s]"
-msgstr "Visiter le profil de %s [%s]"
+#: ../../mod/profile_photo.php:365
+msgid "select a photo from your photo albums"
+msgstr "choisir une photo dans vos albums"
-#: ../../mod/viewconnections.php:70
-msgid "View Connnections"
-msgstr "Voir les relations"
+#: ../../mod/profile_photo.php:379
+msgid "Crop Image"
+msgstr "Recadrer l'image"
-#: ../../mod/tagrm.php:41
-msgid "Tag removed"
-msgstr "Étiquette retirée"
+#: ../../mod/profile_photo.php:380
+msgid "Please adjust the image cropping for optimum viewing."
+msgstr "Merci d'ajuster le cadre pour une visualisation optimale."
-#: ../../mod/tagrm.php:79
-msgid "Remove Item Tag"
-msgstr "Retirer une étiquette à l'élément"
+#: ../../mod/profile_photo.php:382
+msgid "Done Editing"
+msgstr "J'ai terminé"
-#: ../../mod/tagrm.php:81
-msgid "Select a tag to remove: "
-msgstr "Étiquette à retirer&nbsp;:"
+#: ../../mod/profile_photo.php:425
+msgid "Image uploaded successfully."
+msgstr "Image téléversée avec succès."
-#: ../../mod/tagrm.php:93 ../../mod/delegate.php:130 ../../mod/photos.php:909
-msgid "Remove"
-msgstr "Retirer"
+#: ../../mod/profile_photo.php:427
+msgid "Image upload failed."
+msgstr "Le téléversement a échoué."
-#: ../../mod/connect.php:55 ../../mod/connect.php:103
-msgid "Continue"
-msgstr "Continuer"
+#: ../../mod/profile_photo.php:436
+#, php-format
+msgid "Image size reduction [%s] failed."
+msgstr "La réduction de taille [%s] a échoué."
-#: ../../mod/connect.php:84
-msgid "Premium Channel Setup"
-msgstr "Configuration du canal Premium"
+#: ../../mod/blocks.php:66
+msgid "Block Name"
+msgstr "Nom du Bloc"
-#: ../../mod/connect.php:86
-msgid "Enable premium channel connection restrictions"
-msgstr "Activer les restrictions liées au canal premium"
+#: ../../mod/profiles.php:18 ../../mod/profiles.php:165
+#: ../../mod/profiles.php:222 ../../mod/profiles.php:539
+msgid "Profile not found."
+msgstr "Profil introuvable."
-#: ../../mod/connect.php:87
-msgid ""
-"Please enter your restrictions or conditions, such as paypal receipt, usage "
-"guidelines, etc."
-msgstr "Merci de saisir les restrictions et/ou conditions - reçu Paypal, transaction Bitcoin, ligne de conduite, ..."
+#: ../../mod/profiles.php:38
+msgid "Profile deleted."
+msgstr "Profil supprimé."
-#: ../../mod/connect.php:89 ../../mod/connect.php:109
-msgid ""
-"This channel may require additional steps or acknowledgement of the "
-"following conditions prior to connecting:"
-msgstr "Avant d'autoriser la mise en relation, ce canal attire votre attention sur les conditions suivantes&nbsp;:"
+#: ../../mod/profiles.php:56 ../../mod/profiles.php:92
+msgid "Profile-"
+msgstr "Profil-"
-#: ../../mod/connect.php:90
-msgid ""
-"Potential connections will then see the following text before proceeding:"
-msgstr "Les relations potentielles verront ce qui suit avant de pouvoir continuer&nbsp;:"
+#: ../../mod/profiles.php:77 ../../mod/profiles.php:120
+msgid "New profile created."
+msgstr "Nouveau profil créé."
-#: ../../mod/connect.php:91 ../../mod/connect.php:112
-msgid ""
-"By continuing, I certify that I have complied with any instructions provided"
-" on this page."
-msgstr "En continuant, je certifie que je me suis acquitté de toutes les instructions indiquées sur cette page."
+#: ../../mod/profiles.php:98
+msgid "Profile unavailable to clone."
+msgstr "Profil impossible à cloner."
-#: ../../mod/connect.php:100
-msgid "(No specific instructions have been provided by the channel owner.)"
-msgstr "(Aucune instruction spécifique n'a été établie par le propriétaire du canal.)"
+#: ../../mod/profiles.php:136
+msgid "Profile unavailable to export."
+msgstr "Impossible d'exporter le profil."
-#: ../../mod/connect.php:108
-msgid "Restricted or Premium Channel"
-msgstr "Canal Premium ou restreint"
+#: ../../mod/profiles.php:232
+msgid "Profile Name is required."
+msgstr "Le nom du profil est requis."
-#: ../../mod/delegate.php:95
-msgid "No potential page delegates located."
-msgstr "Aucun délégué potentiel n'a été trouvé pour cette page."
+#: ../../mod/profiles.php:354
+msgid "Marital Status"
+msgstr "Statut marital"
-#: ../../mod/delegate.php:121
-msgid "Delegate Page Management"
-msgstr "Gestion des délégués de la page"
+#: ../../mod/profiles.php:358
+msgid "Romantic Partner"
+msgstr "Partenaire"
-#: ../../mod/delegate.php:123
-msgid ""
-"Delegates are able to manage all aspects of this account/page except for "
-"basic account settings. Please do not delegate your personal account to "
-"anybody that you do not trust completely."
-msgstr "Les délégués sont capables de gérer tous les aspects de ce compte ou de cette page, à l'exception des réglages basiques du compte. Merci de ne déléguer votre compte personnel qu'à quelqu'un en qui vous avez une confiance aveugle."
+#: ../../mod/profiles.php:362
+msgid "Likes"
+msgstr "Aime"
-#: ../../mod/delegate.php:124
-msgid "Existing Page Managers"
-msgstr "Actuels gestionnaires de pages"
+#: ../../mod/profiles.php:366
+msgid "Dislikes"
+msgstr "Déteste"
-#: ../../mod/delegate.php:126
-msgid "Existing Page Delegates"
-msgstr "Actuels délégués"
+#: ../../mod/profiles.php:370
+msgid "Work/Employment"
+msgstr "Travail/Occupation"
-#: ../../mod/delegate.php:128
-msgid "Potential Delegates"
-msgstr "Délégués potentiels"
+#: ../../mod/profiles.php:373
+msgid "Religion"
+msgstr "Religion/Croyance"
-#: ../../mod/delegate.php:131
-msgid "Add"
-msgstr "Ajouter"
+#: ../../mod/profiles.php:377
+msgid "Political Views"
+msgstr "Opinions politiques"
-#: ../../mod/delegate.php:132
-msgid "No entries."
-msgstr "Aucune entrée."
+#: ../../mod/profiles.php:381
+msgid "Gender"
+msgstr "Sexe/Genre"
-#: ../../mod/chatsvc.php:102
-msgid "Away"
-msgstr "Absent"
+#: ../../mod/profiles.php:385
+msgid "Sexual Preference"
+msgstr "Préférence sexuelle"
-#: ../../mod/chatsvc.php:106
-msgid "Online"
-msgstr "En ligne"
+#: ../../mod/profiles.php:389
+msgid "Homepage"
+msgstr "Site Internet"
-#: ../../mod/attach.php:9
-msgid "Item not available."
-msgstr "Élément indisponible."
+#: ../../mod/profiles.php:393
+msgid "Interests"
+msgstr "Centres d'intérêt"
-#: ../../mod/mitem.php:47
-msgid "Menu element updated."
-msgstr "Entrée de menu mis-à-jour."
+#: ../../mod/profiles.php:397 ../../mod/admin.php:902
+msgid "Address"
+msgstr "Adresse"
-#: ../../mod/mitem.php:51
-msgid "Unable to update menu element."
-msgstr "Impossible de mettre l'entrée de menu à jour."
+#: ../../mod/profiles.php:404 ../../mod/pubsites.php:25
+msgid "Location"
+msgstr "Emplacement"
-#: ../../mod/mitem.php:57
-msgid "Menu element added."
-msgstr "Entrée de menu ajouté."
+#: ../../mod/profiles.php:487
+msgid "Profile updated."
+msgstr "Profil mis à jour."
-#: ../../mod/mitem.php:61
-msgid "Unable to add menu element."
-msgstr "Impossible d'ajouter l'entrée de menu."
+#: ../../mod/profiles.php:564
+msgid "Hide your contact/friend list from viewers of this profile?"
+msgstr "Cacher vos contacts/relations aux visiteurs de ce profil?"
-#: ../../mod/mitem.php:96
-msgid "Manage Menu Elements"
-msgstr "Gérer les entrées de menu"
+#: ../../mod/profiles.php:588
+msgid "Edit Profile Details"
+msgstr "Éditer les détails du profil"
-#: ../../mod/mitem.php:99
-msgid "Edit menu"
-msgstr "Éditer le menu"
+#: ../../mod/profiles.php:590
+msgid "View this profile"
+msgstr "Voir le profil"
-#: ../../mod/mitem.php:102
-msgid "Edit element"
-msgstr "Éditer l'entrée"
+#: ../../mod/profiles.php:592
+msgid "Change Profile Photo"
+msgstr "Changer la photo du profil"
-#: ../../mod/mitem.php:103
-msgid "Drop element"
-msgstr "Supprimer l'entrée"
+#: ../../mod/profiles.php:593
+msgid "Create a new profile using these settings"
+msgstr "Créer un nouveau profil avec ces réglages"
-#: ../../mod/mitem.php:104
-msgid "New element"
-msgstr "Nouvelle entrée"
+#: ../../mod/profiles.php:594
+msgid "Clone this profile"
+msgstr "Cloner le profil"
-#: ../../mod/mitem.php:105
-msgid "Edit this menu container"
-msgstr "Éditer ce bloc de menu"
+#: ../../mod/profiles.php:595
+msgid "Delete this profile"
+msgstr "Supprimer le profil"
-#: ../../mod/mitem.php:106
-msgid "Add menu element"
-msgstr "Ajouter une entrée au menu"
+#: ../../mod/profiles.php:597
+msgid "Import profile from file"
+msgstr "Importer le profil à partir d'un fichier"
-#: ../../mod/mitem.php:107
-msgid "Delete this menu item"
-msgstr "Supprimer cet entrée du menu"
+#: ../../mod/profiles.php:598
+msgid "Export profile to file"
+msgstr "Exporter le profil vers un fichier."
-#: ../../mod/mitem.php:108
-msgid "Edit this menu item"
-msgstr "Éditer cette entrée du menu"
+#: ../../mod/profiles.php:599
+msgid "Profile Name:"
+msgstr "Nom du profil&nbsp;:"
-#: ../../mod/mitem.php:131
-msgid "New Menu Element"
-msgstr "Nouvelle entrée de menu"
+#: ../../mod/profiles.php:600
+msgid "Your Full Name:"
+msgstr "Votre nom complet&nbsp;:"
-#: ../../mod/mitem.php:133 ../../mod/mitem.php:176
-msgid "Menu Item Permissions"
-msgstr "Permissions de l'entrée de menu"
+#: ../../mod/profiles.php:601
+msgid "Title/Description:"
+msgstr "Titre/description&nbsp;:"
-#: ../../mod/mitem.php:134 ../../mod/mitem.php:177 ../../mod/settings.php:947
-msgid "(click to open/close)"
-msgstr "(cliquer pour ouvrir/fermer)"
+#: ../../mod/profiles.php:602
+msgid "Your Gender:"
+msgstr "Sexe/Genre&nbsp;:"
-#: ../../mod/mitem.php:136 ../../mod/mitem.php:180
-msgid "Link text"
-msgstr "Texte du lien"
+#: ../../mod/profiles.php:603
+#, php-format
+msgid "Birthday (%s):"
+msgstr "Date de naissance (%s)&nbsp;:"
-#: ../../mod/mitem.php:137 ../../mod/mitem.php:181
-msgid "URL of link"
-msgstr "URL du lien"
+#: ../../mod/profiles.php:604
+msgid "Street Address:"
+msgstr "Adresse postale&nbsp;:"
-#: ../../mod/mitem.php:138 ../../mod/mitem.php:182
-msgid "Use Red magic-auth if available"
-msgstr "Utiliser l'authentification automagique de Red, si possible"
+#: ../../mod/profiles.php:605
+msgid "Locality/City:"
+msgstr "Ville/Localité&nbsp;:"
-#: ../../mod/mitem.php:139 ../../mod/mitem.php:183
-msgid "Open link in new window"
-msgstr "Ouvrir le lien dans une nouvelle fenêtre"
+#: ../../mod/profiles.php:606
+msgid "Postal/Zip Code:"
+msgstr "Code postal&nbsp;:"
-#: ../../mod/mitem.php:141 ../../mod/mitem.php:185
-msgid "Order in list"
-msgstr "Ordre dans la liste"
+#: ../../mod/profiles.php:607
+msgid "Country:"
+msgstr "Pays&nbsp;:"
-#: ../../mod/mitem.php:141 ../../mod/mitem.php:185
-msgid "Higher numbers will sink to bottom of listing"
-msgstr "Les nombres les plus élevés seront descendus au bas de la liste"
+#: ../../mod/profiles.php:608
+msgid "Region/State:"
+msgstr "Région/Province/État&nbsp;:"
-#: ../../mod/mitem.php:154
-msgid "Menu item not found."
-msgstr "Entrée de menu introuvable."
+#: ../../mod/profiles.php:609
+msgid "<span class=\"heart\">&hearts;</span> Marital Status:"
+msgstr "<span class=\"heart\">&hearts;</span>Statut marital&nbsp;:"
-#: ../../mod/mitem.php:163
-msgid "Menu item deleted."
-msgstr "Entrée de menu supprimée."
+#: ../../mod/profiles.php:610
+msgid "Who: (if applicable)"
+msgstr "Avec&nbsp;: (si pertinent)"
-#: ../../mod/mitem.php:165
-msgid "Menu item could not be deleted."
-msgstr "Impossible de supprimer l'entrée de menu."
+#: ../../mod/profiles.php:611
+msgid "Examples: cathy123, Cathy Williams, cathy@example.com"
+msgstr "Exemples&nbsp;: cathy123, Cathy Williams, cathy@exemple.com"
-#: ../../mod/mitem.php:174
-msgid "Edit Menu Element"
-msgstr "Éditer l'entrée de menu"
+#: ../../mod/profiles.php:612
+msgid "Since [date]:"
+msgstr "Depuis [date]&nbsp;:"
-#: ../../mod/profperm.php:29 ../../mod/profperm.php:58
-msgid "Invalid profile identifier."
-msgstr "Identifiant de profil invalide."
+#: ../../mod/profiles.php:614
+msgid "Homepage URL:"
+msgstr "URL de mon site Internet&nbsp;:"
-#: ../../mod/profperm.php:105
-msgid "Profile Visibility Editor"
-msgstr "Éditeur de visibilité de profil"
+#: ../../mod/profiles.php:617
+msgid "Religious Views:"
+msgstr "Opinions religieuses&nbsp;:"
-#: ../../mod/profperm.php:109
-msgid "Click on a contact to add or remove."
-msgstr "Cliquez sur un contact pour l'ajouter ou le retirer."
+#: ../../mod/profiles.php:618
+msgid "Keywords:"
+msgstr "Mots-clefs&nbsp;:"
-#: ../../mod/profperm.php:118
-msgid "Visible To"
-msgstr "Visible par"
+#: ../../mod/profiles.php:621
+msgid "Example: fishing photography software"
+msgstr "Exemple&nbsp;: escrime photographie modélisme"
-#: ../../mod/profperm.php:134 ../../mod/connections.php:250
-msgid "All Connections"
-msgstr "Toutes les relations"
+#: ../../mod/profiles.php:622
+msgid "Used in directory listings"
+msgstr "Utilisé pour le référencement dans l'annuaire"
-#: ../../mod/group.php:20
-msgid "Collection created."
-msgstr "Collection créée."
+#: ../../mod/profiles.php:623
+msgid "Tell us about yourself..."
+msgstr "Parlez nous de vous..."
-#: ../../mod/group.php:26
-msgid "Could not create collection."
-msgstr "Impossible de créer la collection."
+#: ../../mod/profiles.php:624
+msgid "Hobbies/Interests"
+msgstr "Loisirs/Centres d'intêret"
-#: ../../mod/group.php:54
-msgid "Collection updated."
-msgstr "Collection mise-à-jour."
+#: ../../mod/profiles.php:625
+msgid "Contact information and Social Networks"
+msgstr "Coordonnées et réseaux sociaux"
-#: ../../mod/group.php:86
-msgid "Create a collection of channels."
-msgstr "Créez une collection de canaux."
+#: ../../mod/profiles.php:626
+msgid "My other channels"
+msgstr "Mes autres canaux"
-#: ../../mod/group.php:87 ../../mod/group.php:183
-msgid "Collection Name: "
-msgstr "Nom de la collection&nbsp;:"
+#: ../../mod/profiles.php:627
+msgid "Musical interests"
+msgstr "Goûts musicaux"
-#: ../../mod/group.php:89 ../../mod/group.php:186
-msgid "Members are visible to other channels"
-msgstr "Les membres sont visibles par les autres canaux"
+#: ../../mod/profiles.php:628
+msgid "Books, literature"
+msgstr "Littérature"
-#: ../../mod/group.php:107
-msgid "Collection removed."
-msgstr "Collection supprimée."
+#: ../../mod/profiles.php:629
+msgid "Television"
+msgstr "Télévision"
-#: ../../mod/group.php:109
-msgid "Unable to remove collection."
-msgstr "Impossible de supprimer la collection."
+#: ../../mod/profiles.php:630
+msgid "Film/dance/culture/entertainment"
+msgstr "Cinéma/Danse/Culture/Divertissement"
-#: ../../mod/group.php:182
-msgid "Collection Editor"
-msgstr "Éditeur de collection"
+#: ../../mod/profiles.php:631
+msgid "Love/romance"
+msgstr "Amour/Romance"
-#: ../../mod/group.php:196
-msgid "Members"
-msgstr "Membres"
+#: ../../mod/profiles.php:632
+msgid "Work/employment"
+msgstr "Travail/Occupation"
-#: ../../mod/group.php:198
-msgid "All Connected Channels"
-msgstr "Tous canaux connectés"
+#: ../../mod/profiles.php:633
+msgid "School/education"
+msgstr "Études"
-#: ../../mod/group.php:231
-msgid "Click on a channel to add or remove."
-msgstr "Cliquer sur un canal pour ajouter ou supprimer"
+#: ../../mod/profiles.php:639
+msgid "This is your default profile."
+msgstr "Voilà votre profil par défault."
-#: ../../mod/admin.php:48
-msgid "Theme settings updated."
-msgstr "Réglages du thème sauvegardés."
+#: ../../mod/profiles.php:650 ../../mod/directory.php:143
+#: ../../mod/dirprofile.php:92
+msgid "Age: "
+msgstr "Age&nbsp;:"
-#: ../../mod/admin.php:88 ../../mod/admin.php:430
-msgid "Site"
-msgstr "Site"
+#: ../../mod/profiles.php:692
+msgid "Edit/Manage Profiles"
+msgstr "Éditer/gérer les profils"
-#: ../../mod/admin.php:89 ../../mod/admin.php:737 ../../mod/admin.php:749
-msgid "Users"
-msgstr "Utilisateurs"
+#: ../../mod/profiles.php:693
+msgid "Add profile things"
+msgstr "Ajouter des choses de profil"
-#: ../../mod/admin.php:90 ../../mod/admin.php:835 ../../mod/admin.php:877
-msgid "Plugins"
-msgstr "Extensions"
+#: ../../mod/profiles.php:694
+msgid "Include desirable objects in your profile"
+msgstr "Incluez des objets souhaitables dans votre profil"
-#: ../../mod/admin.php:91 ../../mod/admin.php:1040 ../../mod/admin.php:1076
-msgid "Themes"
-msgstr "Thèmes"
+#: ../../mod/bookmarks.php:38
+msgid "Bookmark added"
+msgstr "Favoris ajouté"
-#: ../../mod/admin.php:92 ../../mod/admin.php:529
-msgid "Server"
-msgstr "Serveur"
+#: ../../mod/bookmarks.php:58
+msgid "My Bookmarks"
+msgstr "Mes Favoris"
-#: ../../mod/admin.php:93
-msgid "DB updates"
-msgstr "MàJ BD"
+#: ../../mod/bookmarks.php:69
+msgid "My Connections Bookmarks"
+msgstr "Favoris de mes relations"
-#: ../../mod/admin.php:107 ../../mod/admin.php:114 ../../mod/admin.php:1163
-msgid "Logs"
-msgstr "Journaux"
+#: ../../mod/profperm.php:29 ../../mod/profperm.php:58
+msgid "Invalid profile identifier."
+msgstr "Identifiant de profil invalide."
-#: ../../mod/admin.php:113
-msgid "Plugin Features"
-msgstr "Fonctionnalités liées aux extensions"
+#: ../../mod/profperm.php:110
+msgid "Profile Visibility Editor"
+msgstr "Éditeur de visibilité de profil"
-#: ../../mod/admin.php:115
-msgid "User registrations waiting for confirmation"
-msgstr "Inscriptions en attente"
+#: ../../mod/profperm.php:114
+msgid "Click on a contact to add or remove."
+msgstr "Cliquez sur un contact pour l'ajouter ou le retirer."
-#: ../../mod/admin.php:189
-msgid "Message queues"
-msgstr "File des messages"
+#: ../../mod/profperm.php:123
+msgid "Visible To"
+msgstr "Visible par"
-#: ../../mod/admin.php:194 ../../mod/admin.php:429 ../../mod/admin.php:528
-#: ../../mod/admin.php:736 ../../mod/admin.php:834 ../../mod/admin.php:876
-#: ../../mod/admin.php:1039 ../../mod/admin.php:1075 ../../mod/admin.php:1162
-msgid "Administration"
-msgstr "Administration"
+#: ../../mod/profperm.php:139 ../../mod/connections.php:279
+msgid "All Connections"
+msgstr "Toutes les relations"
-#: ../../mod/admin.php:195
-msgid "Summary"
-msgstr "Résumé"
+#: ../../mod/pubsites.php:16
+msgid "Public Sites"
+msgstr "Sites publics"
-#: ../../mod/admin.php:197
-msgid "Registered users"
-msgstr "Utilisateurs inscrits"
+#: ../../mod/pubsites.php:19
+msgid ""
+"The listed sites allow public registration into the Red Matrix. All sites in"
+" the matrix are interlinked so membership on any of them conveys membership "
+"in the matrix as a whole. Some sites may require subscription or provide "
+"tiered service plans. The provider links <strong>may</strong> provide "
+"additional details."
+msgstr "Les sites listés autorisent l'inscription pour tous. Tous sont liés entre eux, de manière à ce qu'un compte sur un seul d'entre eux soit valable sur l'ensemble de la matrice. Certains sites peuvent demander des frais de souscriptions, ou fournir des forfaits ajustés. Le lien \"fournisseur\" <strong>peut</strong> vous donner des détails supplémentaires."
-#: ../../mod/admin.php:199 ../../mod/admin.php:532
-msgid "Pending registrations"
-msgstr "Inscriptions en attente"
+#: ../../mod/pubsites.php:25
+msgid "Site URL"
+msgstr "URL du site"
-#: ../../mod/admin.php:200
-msgid "Version"
-msgstr "Version"
+#: ../../mod/pubsites.php:25
+msgid "Access Type"
+msgstr "Type d'accès"
-#: ../../mod/admin.php:202 ../../mod/admin.php:533
-msgid "Active plugins"
-msgstr "Extensions actives"
+#: ../../mod/pubsites.php:25
+msgid "Registration Policy"
+msgstr "Politique d'inscription"
-#: ../../mod/admin.php:350
-msgid "Site settings updated."
-msgstr "Réglages du site sauvegardés."
+#: ../../mod/channel.php:25 ../../mod/chat.php:19
+msgid "You must be logged in to see this page."
+msgstr "Vous devez vous connecter pour voir cette page."
-#: ../../mod/admin.php:379 ../../mod/settings.php:709
-msgid "No special theme for mobile devices"
-msgstr "Pas de thème spécifique aux périphériques mobiles"
+#: ../../mod/channel.php:86
+msgid "Insufficient permissions. Request redirected to profile page."
+msgstr "Permissions insuffisantes. Demande redirigée à la page du profil."
-#: ../../mod/admin.php:381
-msgid "No special theme for accessibility"
-msgstr "Pas de thème spécifique pour l'accessibilité"
+#: ../../mod/rbmark.php:88
+msgid "Select a bookmark folder"
+msgstr "Choisir un dossier de favoris"
-#: ../../mod/admin.php:409
-msgid "Closed"
-msgstr "Fermé"
+#: ../../mod/rbmark.php:93
+msgid "Save Bookmark"
+msgstr "Sauver le favoris"
-#: ../../mod/admin.php:410
-msgid "Requires approval"
-msgstr "Après approbation"
+#: ../../mod/rbmark.php:94
+msgid "URL of bookmark"
+msgstr "URL du favoris"
-#: ../../mod/admin.php:411
-msgid "Open"
-msgstr "Ouvert"
+#: ../../mod/rbmark.php:95 ../../mod/appman.php:93
+msgid "Description"
+msgstr "Description"
-#: ../../mod/admin.php:416
-msgid "Private"
-msgstr "Privé"
+#: ../../mod/rbmark.php:99
+msgid "Or enter new bookmark folder name"
+msgstr "Ou entrez le nom d'un nouveau dossier"
-#: ../../mod/admin.php:417
-msgid "Paid Access"
-msgstr "Accès payant"
+#: ../../mod/chat.php:167
+msgid "Room not found"
+msgstr "Salon introuvable"
-#: ../../mod/admin.php:418
-msgid "Free Access"
-msgstr "Accès gratuit"
+#: ../../mod/chat.php:178
+msgid "Leave Room"
+msgstr "Quitter le salon"
-#: ../../mod/admin.php:419
-msgid "Tiered Access"
-msgstr "Accès par paliers"
+#: ../../mod/chat.php:179
+msgid "Delete This Room"
+msgstr "Supprimer le salon"
-#: ../../mod/admin.php:432 ../../mod/register.php:189
-msgid "Registration"
-msgstr "Inscription"
+#: ../../mod/chat.php:180
+msgid "I am away right now"
+msgstr "Je suis momentanément absent"
-#: ../../mod/admin.php:433
-msgid "File upload"
-msgstr "Envoi de fichier"
+#: ../../mod/chat.php:181
+msgid "I am online"
+msgstr "Je suis en ligne"
-#: ../../mod/admin.php:434
-msgid "Policies"
-msgstr "Stratégies"
+#: ../../mod/chat.php:183
+msgid "Bookmark this room"
+msgstr "Marquer ce salon"
-#: ../../mod/admin.php:435
-msgid "Advanced"
-msgstr "Avancé"
+#: ../../mod/chat.php:207 ../../mod/chat.php:229
+msgid "New Chatroom"
+msgstr "Nouveau salon"
-#: ../../mod/admin.php:439
-msgid "Site name"
-msgstr "Nom du site"
+#: ../../mod/chat.php:208
+msgid "Chatroom Name"
+msgstr "Nom du salon"
-#: ../../mod/admin.php:440
-msgid "Banner/Logo"
-msgstr "Bannière/logo"
+#: ../../mod/chat.php:225
+#, php-format
+msgid "%1$s's Chatrooms"
+msgstr "Salons de %1$s"
-#: ../../mod/admin.php:441
-msgid "Administrator Information"
-msgstr "Information sur l'administration"
+#: ../../mod/register.php:43
+msgid "Maximum daily site registrations exceeded. Please try again tomorrow."
+msgstr "Nombre d'inscriptions quotidiennes dépassé. Merci de recommencer demain."
-#: ../../mod/admin.php:441
+#: ../../mod/register.php:49
msgid ""
-"Contact information for site administrators. Displayed on siteinfo page. "
-"BBCode can be used here"
-msgstr "Coordonnées de l'administration du site. Affichée sur la page 'siteinfo'. Vous pouvez utiliser du BBCode ici"
-
-#: ../../mod/admin.php:442
-msgid "System language"
-msgstr "Langue du système"
+"Please indicate acceptance of the Terms of Service. Registration failed."
+msgstr "Merci d'indiquer votre adhésion aux Règles du Service. L'inscription a échoué."
-#: ../../mod/admin.php:443
-msgid "System theme"
-msgstr "Thème du système"
+#: ../../mod/register.php:83
+msgid "Passwords do not match."
+msgstr "Les mots de passe ne concordent pas."
-#: ../../mod/admin.php:443
+#: ../../mod/register.php:116
msgid ""
-"Default system theme - may be over-ridden by user profiles - <a href='#' "
-"id='cnftheme'>change theme settings</a>"
-msgstr "Thème par défaut - il peut être changé pour chaque profil utilisateur - <a href='#' id='cnftheme'>modifier le thème</a>"
-
-#: ../../mod/admin.php:444
-msgid "Mobile system theme"
-msgstr "Thème système pour mobile"
-
-#: ../../mod/admin.php:444
-msgid "Theme for mobile devices"
-msgstr "Thème dédié aux périphériques mobiles"
-
-#: ../../mod/admin.php:445
-msgid "Accessibility system theme"
-msgstr "Thème système pour l'accessibilité"
+"Registration successful. Please check your email for validation "
+"instructions."
+msgstr "Inscription réussie. Merci de vérifier vos courriels pour valider votre compte."
-#: ../../mod/admin.php:445
-msgid "Accessibility theme"
-msgstr "Thème pour l'accessibilité"
+#: ../../mod/register.php:122
+msgid "Your registration is pending approval by the site owner."
+msgstr "Votre inscription est en attente de l'approbation d'un administrateur."
-#: ../../mod/admin.php:446
-msgid "Channel to use for this website's static pages"
-msgstr "Canal à utiliser pour les pages statiques de ce site"
+#: ../../mod/register.php:125
+msgid "Your registration can not be processed."
+msgstr "Votre inscription ne peut être traîtée."
-#: ../../mod/admin.php:446
-msgid "Site Channel"
-msgstr "Canal du site"
+#: ../../mod/register.php:162
+msgid "Registration on this site/hub is by approval only."
+msgstr "L'inscription sur cette instance/ce site est soumis à une modération."
-#: ../../mod/admin.php:448
-msgid "Maximum image size"
-msgstr "Taille maximale des images"
+#: ../../mod/register.php:163
+msgid "<a href=\"pubsites\">Register at another affiliated site/hub</a>"
+msgstr "<a href=\"pubsites\">S'inscrire sur un site/hub affilié</a>"
-#: ../../mod/admin.php:448
+#: ../../mod/register.php:171
msgid ""
-"Maximum size in bytes of uploaded images. Default is 0, which means no "
-"limits."
-msgstr "Taille maximum, en octets, des images envoyées. Par défaut 0, soit sans limite."
-
-#: ../../mod/admin.php:449
-msgid "Register policy"
-msgstr "Politique d'inscription"
-
-#: ../../mod/admin.php:450
-msgid "Access policy"
-msgstr "Politique d'accès"
+"This site has exceeded the number of allowed daily account registrations. "
+"Please try again tomorrow."
+msgstr "Ce site a dépassé le nombre de création de compte autorisé par jour. Merci de recommencer demain."
-#: ../../mod/admin.php:451
-msgid "Register text"
-msgstr "Texte d'inscription"
+#: ../../mod/register.php:182
+msgid "Terms of Service"
+msgstr "Règles du Service"
-#: ../../mod/admin.php:451
-msgid "Will be displayed prominently on the registration page."
-msgstr "Sera affiché de manière bien visible sur le formulaire d'inscription."
+#: ../../mod/register.php:188
+#, php-format
+msgid "I accept the %s for this website"
+msgstr "J'accepte %s de ce site"
-#: ../../mod/admin.php:452
-msgid "Accounts abandoned after x days"
-msgstr "Les comptes sont abandonnés après x jours"
+#: ../../mod/register.php:190
+#, php-format
+msgid "I am over 13 years of age and accept the %s for this website"
+msgstr "J'ai plus de 13 ans et j'accepte les %s de ce site"
-#: ../../mod/admin.php:452
-msgid ""
-"Will not waste system resources polling external sites for abandonded "
-"accounts. Enter 0 for no time limit."
-msgstr "Pour éviter de gaspiller les ressources du système en essayer de mettre à jour des comptes abandonnés. Mettez 0 pour ne pas avoir de limite de temps."
+#: ../../mod/register.php:204 ../../mod/admin.php:452
+msgid "Registration"
+msgstr "Inscription"
-#: ../../mod/admin.php:453
-msgid "Allowed friend domains"
-msgstr "Domaines amicaux"
+#: ../../mod/register.php:209
+msgid "Membership on this site is by invitation only."
+msgstr "L'inscription à ce site se fait uniquement sur invitation."
-#: ../../mod/admin.php:453
-msgid ""
-"Comma separated list of domains which are allowed to establish friendships "
-"with this site. Wildcards are accepted. Empty to allow any domains"
-msgstr "Liste de noms de domaines - séparés par des virgules - pour lesquels ce site acceptera les demandes d'amitié ou de mise en relation. Les caractères génériques (*) sont acceptés. Laissez vide pour accepter tous les domaines."
+#: ../../mod/register.php:210
+msgid "Please enter your invitation code"
+msgstr "Merci de saisir votre code d'invitation"
-#: ../../mod/admin.php:454
-msgid "Allowed email domains"
-msgstr "Domaines de courriels amicaux"
+#: ../../mod/register.php:213
+msgid "Your email address"
+msgstr "Votre adresse de courriel"
-#: ../../mod/admin.php:454
-msgid ""
-"Comma separated list of domains which are allowed in email addresses for "
-"registrations to this site. Wildcards are accepted. Empty to allow any "
-"domains"
-msgstr "Liste de noms de domaines - séparés par des virgules - dont les adresses de courriel seront autorisées lors de l'inscription à ce site. Les caractères génériques (*) sont acceptés. Laissez vide pour accepter tous les domaines."
+#: ../../mod/register.php:214
+msgid "Choose a password"
+msgstr "Choisissez un mot de passe"
-#: ../../mod/admin.php:455
-msgid "Block public"
-msgstr "Bloquer public"
+#: ../../mod/register.php:215
+msgid "Please re-enter your password"
+msgstr "Confirmez-le"
-#: ../../mod/admin.php:455
-msgid ""
-"Check to block public access to all otherwise public personal pages on this "
-"site unless you are currently logged in."
-msgstr "Cocher pour interdire tout accès public, y compris aux pages marquées comme publiques, aux visiteurs anonymes."
+#: ../../mod/chatsvc.php:111
+msgid "Away"
+msgstr "Absent"
-#: ../../mod/admin.php:456
-msgid "Force publish"
-msgstr "Forcer publication"
+#: ../../mod/chatsvc.php:115
+msgid "Online"
+msgstr "En ligne"
-#: ../../mod/admin.php:456
-msgid ""
-"Check to force all profiles on this site to be listed in the site directory."
-msgstr "Cocher pour forcer la publication de tous les profils du site dans l'annuaire."
+#: ../../mod/regmod.php:12
+msgid "Please login."
+msgstr "Merci de vous connecter."
-#: ../../mod/admin.php:457
-msgid "No login on Homepage"
-msgstr "Pas de connexion depuis la page d'accueil"
+#: ../../mod/cloud.php:126
+msgid "Red Matrix - Guests: Username: {your email address}, Password: +++"
+msgstr "Matrice Rouge - Pour les invités: Nom d'utilisateur = {votre courriel}, Mot de passe = +++"
-#: ../../mod/admin.php:457
+#: ../../mod/removeme.php:29
msgid ""
-"Check to hide the login form from your sites homepage when visitors arrive "
-"who are not logged in (e.g. when you put the content of the homepage in via "
-"the site channel)."
-msgstr "Cocher pour ne pas montrer le formulaire de connexion sur la page d'accueil (typiquement, pour quand vous utilisez la page d'accueil pour afficher du contenu via le canal du site)."
+"Channel removals are not allowed within 48 hours of changing the account "
+"password."
+msgstr "Il est impossible de supprimer un canal à l'intérieur de 48 heures après avoir changé le mot de passe d'un compte."
-#: ../../mod/admin.php:459
-msgid "Proxy user"
-msgstr "Utilisateurs du proxy"
-
-#: ../../mod/admin.php:460
-msgid "Proxy URL"
-msgstr "URL du proxy"
-
-#: ../../mod/admin.php:461
-msgid "Network timeout"
-msgstr "Délai maximal du réseau"
-
-#: ../../mod/admin.php:461
-msgid "Value is in seconds. Set to 0 for unlimited (not recommended)."
-msgstr "En secondes. Mettre à 0 pour ne pas avoir de délai maximal (pas recommandé)."
-
-#: ../../mod/admin.php:462
-msgid "Delivery interval"
-msgstr "Intervalle de distribution"
+#: ../../mod/removeme.php:57
+msgid "Remove This Channel"
+msgstr "Supprimer ce Canal"
-#: ../../mod/admin.php:462
+#: ../../mod/removeme.php:58
msgid ""
-"Delay background delivery processes by this many seconds to reduce system "
-"load. Recommend: 4-5 for shared hosts, 2-3 for virtual private servers. 0-1 "
-"for large dedicated servers."
-msgstr "Temporise le processus de distribution de tant de secondes pour réduire la charge sur le système. Valeurs recommandées&nbsp;: 4-5 pour les serveurs mutualisés, 2-3 pour les VPS. 0-1 pour les gros serveurs dédiés."
-
-#: ../../mod/admin.php:463
-msgid "Poll interval"
-msgstr "Intervalle de scrutation"
+"This will completely remove this channel from the network. Once this has "
+"been done it is not recoverable."
+msgstr "Ceci effacera complètement le canal du réseau. Une fois effacé, un canal ne PEUT PAS être récupéré."
-#: ../../mod/admin.php:463
-msgid ""
-"Delay background polling processes by this many seconds to reduce system "
-"load. If 0, use delivery interval."
-msgstr "Temporise le processus de scrutation en tâche de fond de tant de secondes, pour réduire la charge. Si 0, utilise l'intervalle de distribution."
+#: ../../mod/removeme.php:59 ../../mod/removeaccount.php:59
+msgid "Please enter your password for verification:"
+msgstr "Merci de re-saisir votre mot de passe pour vérification&nbsp;:"
-#: ../../mod/admin.php:464
-msgid "Maximum Load Average"
-msgstr "Charge moyenne maximale"
+#: ../../mod/removeme.php:60
+msgid "Remove this channel and all its clones from the network"
+msgstr "Supprimer ce canal ainsi que tous ses clones sur la matrice"
-#: ../../mod/admin.php:464
+#: ../../mod/removeme.php:60
msgid ""
-"Maximum system load before delivery and poll processes are deferred - "
-"default 50."
-msgstr "Charge système maximale au-delà de laquelle distribution et scrutation sont mis en pause - par défaut 50."
-
-#: ../../mod/admin.php:520
-msgid "No server found"
-msgstr "Serveur introuvable"
-
-#: ../../mod/admin.php:527 ../../mod/admin.php:750
-msgid "ID"
-msgstr "ID"
-
-#: ../../mod/admin.php:527
-msgid "for channel"
-msgstr "pour le canal"
-
-#: ../../mod/admin.php:527
-msgid "on server"
-msgstr "sur le serveur"
-
-#: ../../mod/admin.php:527
-msgid "Status"
-msgstr "État"
-
-#: ../../mod/admin.php:548
-msgid "Update has been marked successful"
-msgstr "La mise à jour a été marquée comme réussie"
-
-#: ../../mod/admin.php:558
-#, php-format
-msgid "Executing %s failed. Check system logs."
-msgstr "L'éxecution de %s a échoué. Merci de vérifier les journaux du système."
-
-#: ../../mod/admin.php:561
-#, php-format
-msgid "Update %s was successfully applied."
-msgstr "La mise à jour %s a été appliquée avec succès."
-
-#: ../../mod/admin.php:565
-#, php-format
-msgid "Update %s did not return a status. Unknown if it succeeded."
-msgstr "La mise à jour %s n'a pas retourné d'information. Impossible de savoir si elle a réussi ou non."
-
-#: ../../mod/admin.php:568
-#, php-format
-msgid "Update function %s could not be found."
-msgstr "La fonction de mise à jour %s est introuvable."
-
-#: ../../mod/admin.php:583
-msgid "No failed updates."
-msgstr "Aucune mise à jour défaillante."
-
-#: ../../mod/admin.php:587
-msgid "Failed Updates"
-msgstr "Mises à jour défaillantes"
-
-#: ../../mod/admin.php:589
-msgid "Mark success (if update was manually applied)"
-msgstr "Marquer comme réussie (si la mise à jour a été réalisée manuellement)"
-
-#: ../../mod/admin.php:590
-msgid "Attempt to execute this update step automatically"
-msgstr "Tenter de réaliser cette étape de mise à jour automatiquement"
-
-#: ../../mod/admin.php:616
-#, php-format
-msgid "%s user blocked/unblocked"
-msgid_plural "%s users blocked/unblocked"
-msgstr[0] "%s utilisateur bloqué/débloqué"
-msgstr[1] "%s utilisateurs bloqués/débloqués"
-
-#: ../../mod/admin.php:623
-#, php-format
-msgid "%s user deleted"
-msgid_plural "%s users deleted"
-msgstr[0] "%s utilisateur supprimé"
-msgstr[1] "%s utilisateurs supprimés"
-
-#: ../../mod/admin.php:654
-msgid "Account not found"
-msgstr "Compte introuvable"
+"By default only the instance of the channel located on this hub will be "
+"removed from the network"
+msgstr "Par défaut, seule l'instance du canal présente sur ce hub sera supprimée du réseau"
-#: ../../mod/admin.php:665
-#, php-format
-msgid "User '%s' deleted"
-msgstr "Utilisateur '%s' supprimé"
+#: ../../mod/removeme.php:61
+msgid "Remove Channel"
+msgstr "Enlever le canal"
-#: ../../mod/admin.php:674
-#, php-format
-msgid "User '%s' unblocked"
-msgstr "Utilisateur '%s' débloqué"
+#: ../../mod/common.php:10
+msgid "No channel."
+msgstr "Pas de canal."
-#: ../../mod/admin.php:674
-#, php-format
-msgid "User '%s' blocked"
-msgstr "Utilisateur '%s' bloqué"
+#: ../../mod/common.php:39
+msgid "Common connections"
+msgstr "Relations communes"
-#: ../../mod/admin.php:739
-msgid "select all"
-msgstr "tout sélectionner"
+#: ../../mod/common.php:44
+msgid "No connections in common."
+msgstr "Pas de relation en commun."
-#: ../../mod/admin.php:740
-msgid "User registrations waiting for confirm"
-msgstr "Inscriptions en attente d'approbation"
+#: ../../mod/rmagic.php:38
+msgid ""
+"We encountered a problem while logging in with the OpenID you provided. "
+"Please check the correct spelling of the ID."
+msgstr "Nous avons rencontré un problème avec l'OpenID que vous nous avez fourni. Merci de vérifier que l'ID est bien saisi."
-#: ../../mod/admin.php:741
-msgid "Request date"
-msgstr "Date de la demande"
+#: ../../mod/rmagic.php:38
+msgid "The error message was:"
+msgstr "Le message d'erreur était&nbsp;:"
-#: ../../mod/admin.php:742
-msgid "No registrations."
-msgstr "Pas d'inscriptions."
+#: ../../mod/rmagic.php:42
+msgid "Authentication failed."
+msgstr "Échec de l'authentification."
-#: ../../mod/admin.php:743
-msgid "Approve"
-msgstr "Approuver"
-
-#: ../../mod/admin.php:744
-msgid "Deny"
-msgstr "Refuser"
-
-#: ../../mod/admin.php:746 ../../mod/connedit.php:333
-#: ../../mod/connedit.php:475
-msgid "Block"
-msgstr "Bloquer"
+#: ../../mod/rmagic.php:82
+msgid "Remote Authentication"
+msgstr "Authentification distante"
-#: ../../mod/admin.php:747 ../../mod/connedit.php:333
-#: ../../mod/connedit.php:475
-msgid "Unblock"
-msgstr "Débloquer"
+#: ../../mod/rmagic.php:83
+msgid "Enter your channel address (e.g. channel@example.com)"
+msgstr "Entrez l'adresse de votre canal (p.ex. moncanal@monsite.com)"
-#: ../../mod/admin.php:750
-msgid "Register date"
-msgstr "Date d'inscription"
+#: ../../mod/rmagic.php:84
+msgid "Authenticate"
+msgstr "Authentifier"
-#: ../../mod/admin.php:750
-msgid "Last login"
-msgstr "Dernière connexion"
+#: ../../mod/connect.php:55 ../../mod/connect.php:103
+msgid "Continue"
+msgstr "Continuer"
-#: ../../mod/admin.php:750
-msgid "Expires"
-msgstr "Expire"
+#: ../../mod/connect.php:84
+msgid "Premium Channel Setup"
+msgstr "Configuration du canal VIP"
-#: ../../mod/admin.php:750
-msgid "Service Class"
-msgstr "Classe de service"
+#: ../../mod/connect.php:86
+msgid "Enable premium channel connection restrictions"
+msgstr "Activer les restrictions liées au canal VIP"
-#: ../../mod/admin.php:752
+#: ../../mod/connect.php:87
msgid ""
-"Selected users will be deleted!\\n\\nEverything these users had posted on "
-"this site will be permanently deleted!\\n\\nAre you sure?"
-msgstr "Les utilisateurs sélectionnés seront supprimés!\\n\\nTout ce que ces utilisateurs ont publié sur ce site sera détruit de manière définitive!\\n\\nÊtes-vous certain?"
+"Please enter your restrictions or conditions, such as paypal receipt, usage "
+"guidelines, etc."
+msgstr "Merci de saisir les restrictions et/ou conditions - reçu Paypal, transaction Bitcoin, ligne de conduite, ..."
-#: ../../mod/admin.php:753
+#: ../../mod/connect.php:89 ../../mod/connect.php:109
msgid ""
-"The user {0} will be deleted!\\n\\nEverything this user has posted on this "
-"site will be permanently deleted!\\n\\nAre you sure?"
-msgstr "L'utilisateur {0} sera supprimé!\\n\\nTout ce que cet utilisateur a publié sur ce site sera détruit de manière définitive!\\n\\nÊtes-vous certain?"
+"This channel may require additional steps or acknowledgement of the "
+"following conditions prior to connecting:"
+msgstr "Avant d'autoriser la mise en relation, ce canal attire votre attention sur les conditions suivantes&nbsp;:"
-#: ../../mod/admin.php:794
-#, php-format
-msgid "Plugin %s disabled."
-msgstr "Extension %s désactivée."
+#: ../../mod/connect.php:90
+msgid ""
+"Potential connections will then see the following text before proceeding:"
+msgstr "Les relations potentielles verront ce qui suit avant de pouvoir continuer&nbsp;:"
-#: ../../mod/admin.php:798
-#, php-format
-msgid "Plugin %s enabled."
-msgstr "Extension %s activée."
+#: ../../mod/connect.php:91 ../../mod/connect.php:112
+msgid ""
+"By continuing, I certify that I have complied with any instructions provided"
+" on this page."
+msgstr "En continuant, je certifie que je me suis acquitté de toutes les instructions indiquées"
-#: ../../mod/admin.php:808 ../../mod/admin.php:1010
-msgid "Disable"
-msgstr "Désactiver"
+#: ../../mod/connect.php:100
+msgid "(No specific instructions have been provided by the channel owner.)"
+msgstr "(Aucune instruction spécifique n'a été établie par le propriétaire du canal.)"
-#: ../../mod/admin.php:810 ../../mod/admin.php:1012
-msgid "Enable"
-msgstr "Activer"
+#: ../../mod/connect.php:108
+msgid "Restricted or Premium Channel"
+msgstr "Canal VIP ou restreint"
-#: ../../mod/admin.php:836 ../../mod/admin.php:1041
-msgid "Toggle"
-msgstr "(Dés)activer"
+#: ../../mod/network.php:79
+msgid "No such group"
+msgstr "Groupe introuvable"
-#: ../../mod/admin.php:844 ../../mod/admin.php:1051
-msgid "Author: "
-msgstr "Auteur&nbsp;:"
+#: ../../mod/network.php:118
+msgid "Search Results For:"
+msgstr "Résultats de recherche pour&nbsp;:"
-#: ../../mod/admin.php:845 ../../mod/admin.php:1052
-msgid "Maintainer: "
-msgstr "Maintenu par&nbsp;:"
+#: ../../mod/network.php:172
+msgid "Collection is empty"
+msgstr "Collection vide"
-#: ../../mod/admin.php:974
-msgid "No themes found."
-msgstr "Aucun thème trouvé."
+#: ../../mod/network.php:180
+msgid "Collection: "
+msgstr "Collection&nbsp;:"
-#: ../../mod/admin.php:1033
-msgid "Screenshot"
-msgstr "Aperçu"
+#: ../../mod/network.php:193
+msgid "Connection: "
+msgstr "Relation&nbsp;:"
-#: ../../mod/admin.php:1081
-msgid "[Experimental]"
-msgstr "[Expérimental]"
+#: ../../mod/network.php:196
+msgid "Invalid connection."
+msgstr "Relation invalide."
-#: ../../mod/admin.php:1082
-msgid "[Unsupported]"
-msgstr "[Non-supporté]"
+#: ../../mod/connections.php:37 ../../mod/connedit.php:64
+msgid "Could not access contact record."
+msgstr "Impossible d'accéder aux détails du contact."
-#: ../../mod/admin.php:1109
-msgid "Log settings updated."
-msgstr "Réglages du journal sauvegardés."
+#: ../../mod/connections.php:51 ../../mod/connedit.php:78
+msgid "Could not locate selected profile."
+msgstr "Impossible de localiser le profil sélectionné."
-#: ../../mod/admin.php:1165
-msgid "Clear"
-msgstr "Vider"
+#: ../../mod/connections.php:94 ../../mod/connedit.php:132
+msgid "Connection updated."
+msgstr "Connexion mise à jour."
-#: ../../mod/admin.php:1171
-msgid "Debugging"
-msgstr "Débogage"
+#: ../../mod/connections.php:96 ../../mod/connedit.php:134
+msgid "Failed to update connection record."
+msgstr "Impossible de mettre à jour les détails de la relation."
-#: ../../mod/admin.php:1172
-msgid "Log file"
-msgstr "Fichier du journal"
+#: ../../mod/connections.php:191 ../../mod/connections.php:292
+msgid "Blocked"
+msgstr "Bloqué"
-#: ../../mod/admin.php:1172
-msgid ""
-"Must be writable by web server. Relative to your Red top-level directory."
-msgstr "Doit être accessible en écriture par le serveur web. Chemin relatif à la racine de Red."
+#: ../../mod/connections.php:196 ../../mod/connections.php:299
+msgid "Ignored"
+msgstr "Ignoré"
-#: ../../mod/admin.php:1173
-msgid "Log level"
-msgstr "Niveau de journalisation"
+#: ../../mod/connections.php:201 ../../mod/connections.php:313
+msgid "Hidden"
+msgstr "Caché"
-#: ../../mod/filer.php:35
-msgid "- select -"
-msgstr "- choisir -"
+#: ../../mod/connections.php:206 ../../mod/connections.php:306
+msgid "Archived"
+msgstr "Archivé"
-#: ../../mod/home.php:89
-#, php-format
-msgid "Welcome to %s"
-msgstr "Bienvenue sur %s"
+#: ../../mod/connections.php:230 ../../mod/connections.php:245
+msgid "All"
+msgstr "Tout"
-#: ../../mod/editpost.php:20 ../../mod/editlayout.php:36
-#: ../../mod/editwebpage.php:32 ../../mod/editblock.php:36
-msgid "Item not found"
-msgstr "Élément introuvable"
+#: ../../mod/connections.php:270
+msgid "Suggest new connections"
+msgstr "Suggérer de nouvelles relations"
-#: ../../mod/editpost.php:31
-msgid "Item is not editable"
-msgstr "Élément non-éditable"
+#: ../../mod/connections.php:273
+msgid "New Connections"
+msgstr "Nouvelles relations"
-#: ../../mod/editpost.php:53
-msgid "Delete item?"
-msgstr "Supprimer l'élément?"
+#: ../../mod/connections.php:276
+msgid "Show pending (new) connections"
+msgstr "Voir les (nouvelles) relations en attente"
-#: ../../mod/editpost.php:107 ../../mod/editlayout.php:110
-#: ../../mod/editwebpage.php:148 ../../mod/editblock.php:124
-msgid "Insert YouTube video"
-msgstr "Insérer une vidéo YouTube"
+#: ../../mod/connections.php:282
+msgid "Show all connections"
+msgstr "Voir toutes les relations"
-#: ../../mod/editpost.php:108 ../../mod/editlayout.php:111
-#: ../../mod/editwebpage.php:149 ../../mod/editblock.php:125
-msgid "Insert Vorbis [.ogg] video"
-msgstr "Insérer une vidéo Vorbis [.ogg]"
+#: ../../mod/connections.php:285
+msgid "Unblocked"
+msgstr "Non bloquées"
-#: ../../mod/editpost.php:109 ../../mod/editlayout.php:112
-#: ../../mod/editwebpage.php:150 ../../mod/editblock.php:126
-msgid "Insert Vorbis [.ogg] audio"
-msgstr "Insérer un son Vorbis [.ogg]"
+#: ../../mod/connections.php:288
+msgid "Only show unblocked connections"
+msgstr "Ne montrer que les relations non-bloquées"
-#: ../../mod/directory.php:144 ../../mod/profiles.php:561
-#: ../../mod/dirprofile.php:98
-msgid "Age: "
-msgstr "Age&nbsp;:"
+#: ../../mod/connections.php:295
+msgid "Only show blocked connections"
+msgstr "Ne montrer que les relations bloquées"
-#: ../../mod/directory.php:147 ../../mod/dirprofile.php:101
-msgid "Gender: "
-msgstr "Sexe/genre&nbsp;:"
+#: ../../mod/connections.php:302
+msgid "Only show ignored connections"
+msgstr "Ne montrer que les relations ignorées"
-#: ../../mod/directory.php:208
-msgid "Finding:"
-msgstr "Recherche&nbsp;:"
+#: ../../mod/connections.php:309
+msgid "Only show archived connections"
+msgstr "Ne montrer que les relations archivées"
-#: ../../mod/directory.php:216
-msgid "next page"
-msgstr "page suiv."
+#: ../../mod/connections.php:316
+msgid "Only show hidden connections"
+msgstr "Ne montrer que les relations cachées"
-#: ../../mod/directory.php:216
-msgid "previous page"
-msgstr "page préc."
+#: ../../mod/connections.php:368
+#, php-format
+msgid "%1$s [%2$s]"
+msgstr "%1$s [%2$s]"
-#: ../../mod/directory.php:223
-msgid "No entries (some entries may be hidden)."
-msgstr "Pas d'entrées (certaines peuvent être cachées)."
+#: ../../mod/connections.php:369
+msgid "Edit contact"
+msgstr "Éditer contact"
-#: ../../mod/connedit.php:49 ../../mod/connections.php:37
-msgid "Could not access contact record."
-msgstr "Impossible d'accéder aux détails du contact."
+#: ../../mod/connections.php:390
+msgid "Search your connections"
+msgstr "Chercher parmi vos relations"
-#: ../../mod/connedit.php:63 ../../mod/connections.php:51
-msgid "Could not locate selected profile."
-msgstr "Impossible de localiser le profil sélectionné."
+#: ../../mod/connections.php:391
+msgid "Finding: "
+msgstr "Recherche&nbsp;:"
-#: ../../mod/connedit.php:107 ../../mod/connections.php:94
-msgid "Connection updated."
-msgstr "Connexion mise à jour."
+#: ../../mod/rpost.php:97 ../../mod/editpost.php:42
+msgid "Edit post"
+msgstr "Éditer la contribution"
-#: ../../mod/connedit.php:109 ../../mod/connections.php:96
-msgid "Failed to update connection record."
-msgstr "Impossible de mettre à jour les détails de la relation."
+#: ../../mod/connedit.php:181
+msgid "is now connected to"
+msgstr "est maintenant connecté avec"
-#: ../../mod/connedit.php:204
+#: ../../mod/connedit.php:274
msgid "Could not access address book record."
msgstr "Impossible d'accéder aux détails du carnet d'adresses."
-#: ../../mod/connedit.php:218
+#: ../../mod/connedit.php:288
msgid "Refresh failed - channel is currently unavailable."
msgstr "Actualisation impossible - le canal est momentanément indisponible."
-#: ../../mod/connedit.php:225
+#: ../../mod/connedit.php:295
msgid "Channel has been unblocked"
msgstr "Le canal n'est plus bloqué"
-#: ../../mod/connedit.php:226
+#: ../../mod/connedit.php:296
msgid "Channel has been blocked"
msgstr "Le canal est bloqué"
-#: ../../mod/connedit.php:230 ../../mod/connedit.php:242
-#: ../../mod/connedit.php:254 ../../mod/connedit.php:266
-#: ../../mod/connedit.php:281
+#: ../../mod/connedit.php:300 ../../mod/connedit.php:312
+#: ../../mod/connedit.php:324 ../../mod/connedit.php:336
+#: ../../mod/connedit.php:352
msgid "Unable to set address book parameters."
msgstr "Impossible de régler les paramètres du carnet d'adresses."
-#: ../../mod/connedit.php:237
+#: ../../mod/connedit.php:307
msgid "Channel has been unignored"
msgstr "Le canal n'est plus ignoré"
-#: ../../mod/connedit.php:238
+#: ../../mod/connedit.php:308
msgid "Channel has been ignored"
msgstr "Le canal est ignoré"
-#: ../../mod/connedit.php:249
+#: ../../mod/connedit.php:319
msgid "Channel has been unarchived"
msgstr "Le canal n'est plus archivé"
-#: ../../mod/connedit.php:250
+#: ../../mod/connedit.php:320
msgid "Channel has been archived"
msgstr "Le canal est archivé"
-#: ../../mod/connedit.php:261
+#: ../../mod/connedit.php:331
msgid "Channel has been unhidden"
msgstr "Le canal n'est plus caché"
-#: ../../mod/connedit.php:262
+#: ../../mod/connedit.php:332
msgid "Channel has been hidden"
msgstr "Le canal est caché"
-#: ../../mod/connedit.php:276
+#: ../../mod/connedit.php:347
msgid "Channel has been approved"
msgstr "Le canal est approuvé"
-#: ../../mod/connedit.php:277
+#: ../../mod/connedit.php:348
msgid "Channel has been unapproved"
msgstr "Le canal n'est plus approuvé"
-#: ../../mod/connedit.php:295
-msgid "Contact has been removed."
-msgstr "Le canal a été supprimé"
+#: ../../mod/connedit.php:376
+msgid "Connection has been removed."
+msgstr "La relation a été supprimée"
-#: ../../mod/connedit.php:315
+#: ../../mod/connedit.php:396
#, php-format
msgid "View %s's profile"
msgstr "Voir le profil de %s"
-#: ../../mod/connedit.php:319
+#: ../../mod/connedit.php:400
msgid "Refresh Permissions"
msgstr "Actualiser les permissions"
-#: ../../mod/connedit.php:322
+#: ../../mod/connedit.php:403
msgid "Fetch updated permissions"
msgstr "Récupérer les permissions les plus récentes"
-#: ../../mod/connedit.php:326
+#: ../../mod/connedit.php:407
msgid "Recent Activity"
msgstr "Activité récente"
-#: ../../mod/connedit.php:329
+#: ../../mod/connedit.php:410
msgid "View recent posts and comments"
msgstr "Voir les contributions et commentaires récentes"
-#: ../../mod/connedit.php:336
+#: ../../mod/connedit.php:414 ../../mod/connedit.php:557
+#: ../../mod/admin.php:769
+msgid "Unblock"
+msgstr "Débloquer"
+
+#: ../../mod/connedit.php:414 ../../mod/connedit.php:557
+#: ../../mod/admin.php:768
+msgid "Block"
+msgstr "Bloquer"
+
+#: ../../mod/connedit.php:417
msgid "Block or Unblock this connection"
msgstr "Bloquer ou Débloquer cette relation"
-#: ../../mod/connedit.php:340 ../../mod/connedit.php:476
+#: ../../mod/connedit.php:421 ../../mod/connedit.php:558
msgid "Unignore"
msgstr "Ne plus ignorer"
-#: ../../mod/connedit.php:340 ../../mod/connedit.php:476
+#: ../../mod/connedit.php:421 ../../mod/connedit.php:558
#: ../../mod/notifications.php:51
msgid "Ignore"
msgstr "Ignorer"
-#: ../../mod/connedit.php:343
+#: ../../mod/connedit.php:424
msgid "Ignore or Unignore this connection"
msgstr "Ignorer ou ne plus ignorer cette relation"
-#: ../../mod/connedit.php:346
+#: ../../mod/connedit.php:427
msgid "Unarchive"
msgstr "Ne plus archiver"
-#: ../../mod/connedit.php:346
+#: ../../mod/connedit.php:427
msgid "Archive"
msgstr "Archiver"
-#: ../../mod/connedit.php:349
+#: ../../mod/connedit.php:430
msgid "Archive or Unarchive this connection"
msgstr "Archiver ou ne plus archiver cette relation"
-#: ../../mod/connedit.php:352
+#: ../../mod/connedit.php:433
msgid "Unhide"
msgstr "Ne plus cacher"
-#: ../../mod/connedit.php:352
+#: ../../mod/connedit.php:433
msgid "Hide"
msgstr "Cacher"
-#: ../../mod/connedit.php:355
+#: ../../mod/connedit.php:436
msgid "Hide or Unhide this connection"
msgstr "Cacher ou ne plus cacher cette relation"
-#: ../../mod/connedit.php:362
+#: ../../mod/connedit.php:443
msgid "Delete this connection"
msgstr "Supprimer cette relation"
-#: ../../mod/connedit.php:395
-msgid "Unknown"
-msgstr "Inconnu"
-
-#: ../../mod/connedit.php:405 ../../mod/connedit.php:434
+#: ../../mod/connedit.php:486 ../../mod/connedit.php:515
msgid "Approve this connection"
msgstr "Approuver cette relation"
-#: ../../mod/connedit.php:405
+#: ../../mod/connedit.php:486
msgid "Accept connection to allow communication"
msgstr "Accepter la relation pour permettre la communication"
-#: ../../mod/connedit.php:421
+#: ../../mod/connedit.php:502
msgid "Automatic Permissions Settings"
msgstr "Permissions automatiques"
-#: ../../mod/connedit.php:421
+#: ../../mod/connedit.php:502
#, php-format
msgid "Connections: settings for %s"
msgstr "Relations&nbsp;: réglages pour %s"
-#: ../../mod/connedit.php:425
+#: ../../mod/connedit.php:506
msgid ""
"When receiving a channel introduction, any permissions provided here will be"
" applied to the new connection automatically and the introduction approved. "
"Leave this page if you do not wish to use this feature."
msgstr "Pour chaque introduction reçue, toutes les permissions définies ici seront appliquées aux nouvelles relations automatiquement, et l'introduction sera approuvée. Laissez cette page telle quelle si vous ne souhaitez pas utiliser ce mécanisme."
-#: ../../mod/connedit.php:427
+#: ../../mod/connedit.php:508
msgid "Slide to adjust your degree of friendship"
msgstr "Faites glisser pour ajuster le niveau de la relation"
-#: ../../mod/connedit.php:433
+#: ../../mod/connedit.php:514
msgid "inherited"
-msgstr "par héritage"
+msgstr "héritée"
-#: ../../mod/connedit.php:435
+#: ../../mod/connedit.php:516
msgid "Connection has no individual permissions!"
msgstr "Cette relation n'a aucune permission spécifique!"
-#: ../../mod/connedit.php:436
+#: ../../mod/connedit.php:517
msgid ""
"This may be appropriate based on your <a href=\"settings\">privacy "
"settings</a>, though you may wish to review the \"Advanced Permissions\"."
msgstr "Ceci devrait correspondre à vos <a href=\"settings\">réglages de vie privée</a>, mais vous pouvez toujours contrôler les \"Permissions avancées\"."
-#: ../../mod/connedit.php:438
+#: ../../mod/connedit.php:519
msgid "Profile Visibility"
msgstr "Visibilité du profil"
-#: ../../mod/connedit.php:439
+#: ../../mod/connedit.php:520
#, php-format
msgid ""
"Please choose the profile you would like to display to %s when viewing your "
"profile securely."
msgstr "Merci de choisir le profil que vous souhaitez montrer quand %s visite votre profil de manière authentifiée."
-#: ../../mod/connedit.php:440
+#: ../../mod/connedit.php:521
msgid "Contact Information / Notes"
msgstr "Notes / Information de contact"
-#: ../../mod/connedit.php:441
+#: ../../mod/connedit.php:522
msgid "Edit contact notes"
msgstr "Éditer les notes du contact"
-#: ../../mod/connedit.php:443
+#: ../../mod/connedit.php:524
msgid "Their Settings"
msgstr "Ses réglages"
-#: ../../mod/connedit.php:444
+#: ../../mod/connedit.php:525
msgid "My Settings"
msgstr "Mes réglages"
-#: ../../mod/connedit.php:446
+#: ../../mod/connedit.php:527
+msgid "Clear/Disable Automatic Permissions"
+msgstr "Effacer/Désactiver les Permissions Automatiques"
+
+#: ../../mod/connedit.php:528
msgid "Forum Members"
-msgstr "Membres de forum"
+msgstr "Membres du forum"
-#: ../../mod/connedit.php:447
+#: ../../mod/connedit.php:529
msgid "Soapbox"
-msgstr "Boîte à savon"
+msgstr "Blogue"
-#: ../../mod/connedit.php:448
+#: ../../mod/connedit.php:530
msgid "Full Sharing (typical social network permissions)"
-msgstr "Partage complet (fonctionnement habituel des réseaux sociaux)"
+msgstr "Partage Complet (fonctionnement habituel des réseaux sociaux)"
-#: ../../mod/connedit.php:449
+#: ../../mod/connedit.php:531
msgid "Cautious Sharing "
msgstr "Partage modéré"
-#: ../../mod/connedit.php:450
+#: ../../mod/connedit.php:532
msgid "Follow Only"
-msgstr "Suivi uniquement"
+msgstr "Suivre uniquement"
-#: ../../mod/connedit.php:451
+#: ../../mod/connedit.php:533
msgid "Individual Permissions"
msgstr "Permissions spécifiques"
-#: ../../mod/connedit.php:452
+#: ../../mod/connedit.php:534
msgid ""
"Some permissions may be inherited from your channel <a "
"href=\"settings\">privacy settings</a>, which have higher priority than "
@@ -4796,827 +5257,637 @@ msgid ""
"have no effect."
msgstr "Certaines permissions peuvent être héritées de vos <a href=\"settings\">réglages de vie privée</a>, lesquels sont prioritaires sur les réglages spécifiques. Changer ces permissions héritées sur la présente page n'aura aucun effet."
-#: ../../mod/connedit.php:453
+#: ../../mod/connedit.php:535
msgid "Advanced Permissions"
msgstr "Permissions avancées"
-#: ../../mod/connedit.php:454
+#: ../../mod/connedit.php:536
msgid "Simple Permissions (select one and submit)"
msgstr "Permissions simples (en choisir une, puis valider)"
-#: ../../mod/connedit.php:458
+#: ../../mod/connedit.php:540
#, php-format
msgid "Visit %s's profile - %s"
msgstr "Visiter le profil de %s - %s"
-#: ../../mod/connedit.php:459
+#: ../../mod/connedit.php:541
msgid "Block/Unblock contact"
msgstr "Bloquer/Débloquer le contact"
-#: ../../mod/connedit.php:460
+#: ../../mod/connedit.php:542
msgid "Ignore contact"
msgstr "Ignorer le contact"
-#: ../../mod/connedit.php:461
+#: ../../mod/connedit.php:543
msgid "Repair URL settings"
msgstr "Réparer les réglages d'URL"
-#: ../../mod/connedit.php:462
+#: ../../mod/connedit.php:544
msgid "View conversations"
msgstr "Voir les conversations"
-#: ../../mod/connedit.php:464
+#: ../../mod/connedit.php:546
msgid "Delete contact"
msgstr "Supprimer le contact"
-#: ../../mod/connedit.php:467
+#: ../../mod/connedit.php:549
msgid "Last update:"
-msgstr "Dernière mise-à-jour&nbsp;:"
+msgstr "Dernière mise à jour&nbsp;:"
-#: ../../mod/connedit.php:469
+#: ../../mod/connedit.php:551
msgid "Update public posts"
msgstr "Mettre à jour les publications"
-#: ../../mod/connedit.php:471
+#: ../../mod/connedit.php:553
msgid "Update now"
msgstr "Mettre à jour maintenant"
-#: ../../mod/connedit.php:477
+#: ../../mod/connedit.php:559
msgid "Currently blocked"
msgstr "Actuellement bloqué"
-#: ../../mod/connedit.php:478
+#: ../../mod/connedit.php:560
msgid "Currently ignored"
msgstr "Actuellement ignoré"
-#: ../../mod/connedit.php:479
+#: ../../mod/connedit.php:561
msgid "Currently archived"
msgstr "Actuellement archivé"
-#: ../../mod/connedit.php:480
+#: ../../mod/connedit.php:562
msgid "Currently pending"
msgstr "Actuellement en attente"
-#: ../../mod/connedit.php:481
+#: ../../mod/connedit.php:563
msgid "Hide this contact from others"
msgstr "Dissimuler ce contact aux autres"
-#: ../../mod/connedit.php:481
+#: ../../mod/connedit.php:563
msgid ""
"Replies/likes to your public posts <strong>may</strong> still be visible"
msgstr "Les réponses et autres réactions à vos contributions publiques <strong>pourraient</strong> être toujours visibles"
-#: ../../mod/layouts.php:52
-msgid "Layout Help"
-msgstr "Aide à la mise en page"
-
-#: ../../mod/layouts.php:55
-msgid "Help with this feature"
-msgstr "Aide avec cette fonctionnalité"
-
-#: ../../mod/layouts.php:74
-msgid "Layout Name"
-msgstr "Nom de la mise-en-page"
-
-#: ../../mod/help.php:43 ../../mod/help.php:49 ../../mod/help.php:55
-msgid "Help:"
-msgstr "Aide&nbsp;:"
-
-#: ../../mod/help.php:68 ../../index.php:223
-msgid "Not Found"
-msgstr "Introuvable"
-
-#: ../../mod/help.php:71 ../../mod/page.php:83 ../../mod/display.php:100
-#: ../../index.php:226
-msgid "Page not found."
-msgstr "Page introuvable."
-
-#: ../../mod/rmagic.php:56
-msgid "Remote Authentication"
-msgstr "Authentification distante"
-
-#: ../../mod/rmagic.php:57
-msgid "Enter your channel address (e.g. channel@example.com)"
-msgstr "Entrez l'adresse de votre canal (p.ex. moncanal@monsite.com)"
-
-#: ../../mod/rmagic.php:58
-msgid "Authenticate"
-msgstr "Authentifier"
-
-#: ../../mod/page.php:35
-msgid "Invalid item."
-msgstr "Élément invalide."
-
-#: ../../mod/network.php:79
-msgid "No such group"
-msgstr "Rien de tel comme groupe"
-
-#: ../../mod/network.php:118
-msgid "Search Results For:"
-msgstr "Résultats de recherche pour&nbsp;:"
-
-#: ../../mod/network.php:172
-msgid "Collection is empty"
-msgstr "Collection vide"
-
-#: ../../mod/network.php:180
-msgid "Collection: "
-msgstr "Collection&nbsp;:"
-
-#: ../../mod/network.php:193
-msgid "Connection: "
-msgstr "Relation&nbsp;:"
-
-#: ../../mod/network.php:196
-msgid "Invalid connection."
-msgstr "Relation invalide."
-
-#: ../../mod/profiles.php:18 ../../mod/profiles.php:138
-#: ../../mod/profiles.php:168 ../../mod/profiles.php:463
-msgid "Profile not found."
-msgstr "Profil introuvable."
-
-#: ../../mod/profiles.php:38
-msgid "Profile deleted."
-msgstr "Profil supprimé."
-
-#: ../../mod/profiles.php:56 ../../mod/profiles.php:92
-msgid "Profile-"
-msgstr "Profil-"
-
-#: ../../mod/profiles.php:77 ../../mod/profiles.php:120
-msgid "New profile created."
-msgstr "Nouveau profil créé."
-
-#: ../../mod/profiles.php:98
-msgid "Profile unavailable to clone."
-msgstr "Profil impossible à cloner."
-
-#: ../../mod/profiles.php:178
-msgid "Profile Name is required."
-msgstr "Le nom du profil est requis."
-
-#: ../../mod/profiles.php:294
-msgid "Marital Status"
-msgstr "Statut marital"
-
-#: ../../mod/profiles.php:298
-msgid "Romantic Partner"
-msgstr "Partenaire"
-
-#: ../../mod/profiles.php:302
-msgid "Likes"
-msgstr "Aime"
-
-#: ../../mod/profiles.php:306
-msgid "Dislikes"
-msgstr "Déteste"
-
-#: ../../mod/profiles.php:310
-msgid "Work/Employment"
-msgstr "Travail/Occupation"
-
-#: ../../mod/profiles.php:313
-msgid "Religion"
-msgstr "Religion/Croyance"
-
-#: ../../mod/profiles.php:317
-msgid "Political Views"
-msgstr "Opinions politiques"
-
-#: ../../mod/profiles.php:321
-msgid "Gender"
-msgstr "Sexe/Genre"
-
-#: ../../mod/profiles.php:325
-msgid "Sexual Preference"
-msgstr "Préférence sexuelle"
-
-#: ../../mod/profiles.php:329
-msgid "Homepage"
-msgstr "Site Internet"
-
-#: ../../mod/profiles.php:333
-msgid "Interests"
-msgstr "Centres d'intérêt"
-
-#: ../../mod/profiles.php:337
-msgid "Address"
-msgstr "Adresse"
-
-#: ../../mod/profiles.php:344 ../../mod/pubsites.php:31
-msgid "Location"
-msgstr "Localisation"
-
-#: ../../mod/profiles.php:427
-msgid "Profile updated."
-msgstr "Profil mis à jour."
-
-#: ../../mod/profiles.php:482
-msgid "Hide your contact/friend list from viewers of this profile?"
-msgstr "Cacher vos contacts/relations aux visiteurs de ce profil?"
-
-#: ../../mod/profiles.php:505
-msgid "Edit Profile Details"
-msgstr "Éditer les détails du profil"
-
-#: ../../mod/profiles.php:507
-msgid "View this profile"
-msgstr "Voir le profil"
-
-#: ../../mod/profiles.php:508
-msgid "Change Profile Photo"
-msgstr "Changer la photo du profil"
-
-#: ../../mod/profiles.php:509
-msgid "Create a new profile using these settings"
-msgstr "Créer un nouveau profil avec ces réglages"
-
-#: ../../mod/profiles.php:510
-msgid "Clone this profile"
-msgstr "Cloner le profil"
+#: ../../mod/delegate.php:95
+msgid "No potential page delegates located."
+msgstr "Aucun délégué potentiel n'a été trouvé pour cette page."
-#: ../../mod/profiles.php:511
-msgid "Delete this profile"
-msgstr "Supprimer le profil"
+#: ../../mod/delegate.php:121
+msgid "Delegate Page Management"
+msgstr "Gestion des délégués de la page"
-#: ../../mod/profiles.php:512
-msgid "Profile Name:"
-msgstr "Nom du profil&nbsp;:"
+#: ../../mod/delegate.php:123
+msgid ""
+"Delegates are able to manage all aspects of this account/page except for "
+"basic account settings. Please do not delegate your personal account to "
+"anybody that you do not trust completely."
+msgstr "Les délégués sont capables de gérer tous les aspects de ce compte ou de cette page, à l'exception des réglages basiques du compte. Merci de ne déléguer votre compte personnel qu'à quelqu'un en qui vous avez une confiance aveugle."
-#: ../../mod/profiles.php:513
-msgid "Your Full Name:"
-msgstr "Votre nom complet&nbsp;:"
+#: ../../mod/delegate.php:124
+msgid "Existing Page Managers"
+msgstr "Actuels gestionnaires de pages"
-#: ../../mod/profiles.php:514
-msgid "Title/Description:"
-msgstr "Titre/description&nbsp;:"
+#: ../../mod/delegate.php:126
+msgid "Existing Page Delegates"
+msgstr "Actuels délégués"
-#: ../../mod/profiles.php:515
-msgid "Your Gender:"
-msgstr "Sexe/Genre&nbsp;:"
+#: ../../mod/delegate.php:128
+msgid "Potential Delegates"
+msgstr "Délégués potentiels"
-#: ../../mod/profiles.php:516
-#, php-format
-msgid "Birthday (%s):"
-msgstr "Date de naissance (%s)&nbsp;:"
+#: ../../mod/delegate.php:130 ../../mod/photos.php:912 ../../mod/tagrm.php:93
+msgid "Remove"
+msgstr "Retirer"
-#: ../../mod/profiles.php:517
-msgid "Street Address:"
-msgstr "Adresse postale&nbsp;:"
+#: ../../mod/delegate.php:131
+msgid "Add"
+msgstr "Ajouter"
-#: ../../mod/profiles.php:518
-msgid "Locality/City:"
-msgstr "Ville/Localité&nbsp;:"
+#: ../../mod/delegate.php:132
+msgid "No entries."
+msgstr "Aucune entrée."
-#: ../../mod/profiles.php:519
-msgid "Postal/Zip Code:"
-msgstr "Code postal&nbsp;:"
+#: ../../mod/search.php:13 ../../mod/directory.php:15
+#: ../../mod/dirprofile.php:9 ../../mod/display.php:9 ../../mod/photos.php:443
+#: ../../mod/viewconnections.php:17
+msgid "Public access denied."
+msgstr "Accès public refusé."
-#: ../../mod/profiles.php:520
-msgid "Country:"
-msgstr "Pays&nbsp;:"
+#: ../../mod/directory.php:146 ../../mod/dirprofile.php:95
+msgid "Gender: "
+msgstr "Sexe/genre&nbsp;:"
-#: ../../mod/profiles.php:521
-msgid "Region/State:"
-msgstr "Région/Province/État&nbsp;:"
+#: ../../mod/directory.php:223
+msgid "Finding:"
+msgstr "Recherche&nbsp;:"
-#: ../../mod/profiles.php:522
-msgid "<span class=\"heart\">&hearts;</span> Marital Status:"
-msgstr "<span class=\"heart\">&hearts;</span>Statut marital&nbsp;:"
+#: ../../mod/directory.php:239
+msgid "No entries (some entries may be hidden)."
+msgstr "Pas d'entrées (certaines peuvent être cachées)."
-#: ../../mod/profiles.php:523
-msgid "Who: (if applicable)"
-msgstr "Avec&nbsp;: (si pertinent)"
+#: ../../mod/dirprofile.php:108
+msgid "Status: "
+msgstr "État&nbsp;:"
-#: ../../mod/profiles.php:524
-msgid "Examples: cathy123, Cathy Williams, cathy@example.com"
-msgstr "Exemples&nbsp;: cathy123, Cathy Williams, cathy@exemple.com"
+#: ../../mod/dirprofile.php:109
+msgid "Sexual Preference: "
+msgstr "Orientation sexuelle&nbsp;:"
-#: ../../mod/profiles.php:525
-msgid "Since [date]:"
-msgstr "Depuis [date]&nbsp;:"
+#: ../../mod/dirprofile.php:111
+msgid "Homepage: "
+msgstr "Site web&nbsp;:"
-#: ../../mod/profiles.php:527
-msgid "Homepage URL:"
-msgstr "URL de mon site Internet&nbsp;:"
+#: ../../mod/dirprofile.php:112
+msgid "Hometown: "
+msgstr "Ville natale&nbsp;:"
-#: ../../mod/profiles.php:530
-msgid "Religious Views:"
-msgstr "Opinions religieuses&nbsp;:"
+#: ../../mod/dirprofile.php:114
+msgid "About: "
+msgstr "À propos&nbsp;:"
-#: ../../mod/profiles.php:531
-msgid "Keywords:"
+#: ../../mod/dirprofile.php:162
+msgid "Keywords: "
msgstr "Mots-clefs&nbsp;:"
-#: ../../mod/profiles.php:534
-msgid "Example: fishing photography software"
-msgstr "Exemple&nbsp;: escrime photographie modélisme"
-
-#: ../../mod/profiles.php:535
-msgid "Used in directory listings"
-msgstr "Utilisé pour le référencement dans l'annuaire"
-
-#: ../../mod/profiles.php:536
-msgid "Tell us about yourself..."
-msgstr "Parlez nous de vous..."
-
-#: ../../mod/profiles.php:537
-msgid "Hobbies/Interests"
-msgstr "Loisirs/Centres d'intêret"
-
-#: ../../mod/profiles.php:538
-msgid "Contact information and Social Networks"
-msgstr "Coordonnées et réseaux sociaux"
-
-#: ../../mod/profiles.php:539
-msgid "My other channels"
-msgstr "Mes autres canaux"
-
-#: ../../mod/profiles.php:540
-msgid "Musical interests"
-msgstr "Goûts musicaux"
-
-#: ../../mod/profiles.php:541
-msgid "Books, literature"
-msgstr "Littérature"
-
-#: ../../mod/profiles.php:542
-msgid "Television"
-msgstr "Télévision"
-
-#: ../../mod/profiles.php:543
-msgid "Film/dance/culture/entertainment"
-msgstr "Cinéma/Danse/Culture/Divertissement"
-
-#: ../../mod/profiles.php:544
-msgid "Love/romance"
-msgstr "Amour/Romance"
-
-#: ../../mod/profiles.php:545
-msgid "Work/employment"
-msgstr "Travail/Occupation"
-
-#: ../../mod/profiles.php:546
-msgid "School/education"
-msgstr "Études"
-
-#: ../../mod/profiles.php:551
-msgid ""
-"This is your <strong>public</strong> profile.<br />It <strong>may</strong> "
-"be visible to anybody using the internet."
-msgstr "Ceci est votre profil <strong>public</strong>.<br />Il <strong>pourrait</strong> être visible par tout utilisateur - fut-il anonyme - d'Internet."
-
-#: ../../mod/profiles.php:600
-msgid "Edit/Manage Profiles"
-msgstr "Éditer/gérer les profils"
-
-#: ../../mod/profiles.php:601
-msgid "Add profile things"
-msgstr "Ajouter des choses de profil"
-
-#: ../../mod/profiles.php:602
-msgid "Include desirable objects in your profile"
-msgstr "Incluez des objets souhaitables dans votre profil"
-
-#: ../../mod/follow.php:25
-msgid "Channel added."
-msgstr "Canal ajouté."
-
-#: ../../mod/post.php:226
-msgid ""
-"Remote authentication blocked. You are logged into this site locally. Please"
-" logout and retry."
-msgstr "Authentification distante bloquée. Vous êtes connecté sur ce site localement. Merci de vous en déconnecter et de recommencer."
-
-#: ../../mod/post.php:256
-#, php-format
-msgid "Welcome %s. Remote authentication successful."
-msgstr "Bienvenue %s. L'authentification distante a fonctionné."
-
#: ../../mod/dirsearch.php:21
msgid "This site is not a directory server"
msgstr "Ce site n'est pas un serveur d'annuaire"
-#: ../../mod/sources.php:32
-msgid "Failed to create source. No channel selected."
-msgstr "Impossible de créer la source. Aucun canal selectionné."
-
-#: ../../mod/sources.php:45
-msgid "Source created."
-msgstr "Source créée."
-
-#: ../../mod/sources.php:57
-msgid "Source updated."
-msgstr "Source mise à jour."
-
-#: ../../mod/sources.php:82
-msgid "*"
-msgstr "*"
-
-#: ../../mod/sources.php:89
-msgid "Manage remote sources of content for your channel."
-msgstr "Gérer les sources distantes du contenu de votre canal."
-
-#: ../../mod/sources.php:90 ../../mod/sources.php:100
-msgid "New Source"
-msgstr "Nouvelle source"
-
-#: ../../mod/sources.php:101 ../../mod/sources.php:133
-msgid ""
-"Import all or selected content from the following channel into this channel "
-"and distribute it according to your channel settings."
-msgstr "Importer tout ou partie du contenu du canal suivant dans le canal en cours, et le distribuer en concordance avec les réglages de votre canal."
-
-#: ../../mod/sources.php:102 ../../mod/sources.php:134
-msgid "Only import content with these words (one per line)"
-msgstr "N'importer le contenu que s'ils contient ces mots (un par ligne)"
-
-#: ../../mod/sources.php:102 ../../mod/sources.php:134
-msgid "Leave blank to import all public content"
-msgstr "Laissez en blanc pour importer tout le contenu public"
-
-#: ../../mod/sources.php:103 ../../mod/sources.php:137
-#: ../../mod/new_channel.php:110
-msgid "Channel Name"
-msgstr "Nom du canal"
-
-#: ../../mod/sources.php:123 ../../mod/sources.php:150
-msgid "Source not found."
-msgstr "Source introuvable."
-
-#: ../../mod/sources.php:130
-msgid "Edit Source"
-msgstr "Éditer source"
-
-#: ../../mod/sources.php:131
-msgid "Delete Source"
-msgstr "Supprimer source"
-
-#: ../../mod/sources.php:158
-msgid "Source removed"
-msgstr "Source supprimée"
-
-#: ../../mod/sources.php:160
-msgid "Unable to remove source."
-msgstr "Impossible de supprimer la source."
-
-#: ../../mod/lockview.php:34
-msgid "Remote privacy information not available."
-msgstr "Les informations de vie privée à distance ne sont pas disponibles."
-
-#: ../../mod/lockview.php:43
-msgid "Visible to:"
-msgstr "Visible par&nbsp;:"
+#: ../../mod/home.php:81
+msgid "Red Matrix - &quot;The Network&quot;"
+msgstr "La Matrice Rouge - &quot;LE Réseau&quot;"
-#: ../../mod/magic.php:70
-msgid "Hub not found."
-msgstr "Instance introuvable."
+#: ../../mod/home.php:94
+#, php-format
+msgid "Welcome to %s"
+msgstr "Bienvenue sur %s"
-#: ../../mod/setup.php:161
+#: ../../mod/setup.php:162
msgid "Red Matrix Server - Setup"
-msgstr "Serveur Red Matrix - Configuration"
+msgstr "Serveur de la Matrice Rouge - Configuration"
-#: ../../mod/setup.php:167
+#: ../../mod/setup.php:168
msgid "Could not connect to database."
msgstr "Impossible de se connecter à la base de données."
-#: ../../mod/setup.php:171
+#: ../../mod/setup.php:172
msgid ""
"Could not connect to specified site URL. Possible SSL certificate or DNS "
"issue."
msgstr "Impossible de se connecter au site par l'URL indiquée. Problème potentiel de certificat SSL/TLS ou de DNS."
-#: ../../mod/setup.php:176
+#: ../../mod/setup.php:179
msgid "Could not create table."
msgstr "Impossible de créer la table."
-#: ../../mod/setup.php:182
+#: ../../mod/setup.php:185
msgid "Your site database has been installed."
msgstr "La base de données de votre site a été installée."
-#: ../../mod/setup.php:187
+#: ../../mod/setup.php:190
msgid ""
"You may need to import the file \"install/database.sql\" manually using "
"phpmyadmin or mysql."
msgstr "Vous pourriez avoir besoin d'importer le fichier \"install/database.sql\" manuellement via phpmyadmin ou mysql."
-#: ../../mod/setup.php:188 ../../mod/setup.php:257 ../../mod/setup.php:609
+#: ../../mod/setup.php:191 ../../mod/setup.php:260 ../../mod/setup.php:655
msgid "Please see the file \"install/INSTALL.txt\"."
msgstr "Merci de consulter le fichier \"install/INSTALL.txt\"."
-#: ../../mod/setup.php:254
+#: ../../mod/setup.php:257
msgid "System check"
msgstr "Vérification du système"
-#: ../../mod/setup.php:259
+#: ../../mod/setup.php:261 ../../mod/events.php:399
+msgid "Next"
+msgstr "Suivant"
+
+#: ../../mod/setup.php:262
msgid "Check again"
msgstr "Re-vérifier"
-#: ../../mod/setup.php:281
+#: ../../mod/setup.php:284
msgid "Database connection"
msgstr "Connexion à la base de données"
-#: ../../mod/setup.php:282
+#: ../../mod/setup.php:285
msgid ""
"In order to install Red Matrix we need to know how to connect to your "
"database."
-msgstr "Pour installer Red Matrix, nous avons besoin de savoir comment contacter votre base de données."
+msgstr "Pour installer la Matrice Rouge, nous avons besoin de savoir comment contacter votre base de données."
-#: ../../mod/setup.php:283
+#: ../../mod/setup.php:286
msgid ""
"Please contact your hosting provider or site administrator if you have "
"questions about these settings."
-msgstr "Merci de contacter votre prestataire d'hébergement ou votre administration système si vous avez des doutes à propos de ces paramètres."
+msgstr "Merci de contacter votre prestataire d'hébergement ou votre administrateur système si vous avez des doutes à propos de ces paramètres."
-#: ../../mod/setup.php:284
+#: ../../mod/setup.php:287
msgid ""
"The database you specify below should already exist. If it does not, please "
"create it before continuing."
msgstr "La base de données que vous allez spécifier doit exister. Si ce n'est pas déjà le cas, merci de la créer avant de continuer."
-#: ../../mod/setup.php:288
+#: ../../mod/setup.php:291
msgid "Database Server Name"
-msgstr "Nom du serveur de BD"
+msgstr "Nom du serveur de la base de données"
-#: ../../mod/setup.php:288
+#: ../../mod/setup.php:291
msgid "Default is localhost"
msgstr "Par défaut, localhost"
-#: ../../mod/setup.php:289
+#: ../../mod/setup.php:292
msgid "Database Port"
msgstr "Port du serveur"
-#: ../../mod/setup.php:289
+#: ../../mod/setup.php:292
msgid "Communication port number - use 0 for default"
msgstr "Numéro TCP du port - utilisez 0 pour la valeur par défaut"
-#: ../../mod/setup.php:290
+#: ../../mod/setup.php:293
msgid "Database Login Name"
-msgstr "Identifiant de connexion à la BD"
+msgstr "Identifiant de connexion à la Base de Données"
-#: ../../mod/setup.php:291
+#: ../../mod/setup.php:294
msgid "Database Login Password"
-msgstr "Mot de passe de connexion à la BD"
+msgstr "Mot de passe de connexion à la Base de Données"
-#: ../../mod/setup.php:292
+#: ../../mod/setup.php:295
msgid "Database Name"
-msgstr "Nom de la base de données"
+msgstr "Nom de la Base de Données"
-#: ../../mod/setup.php:294 ../../mod/setup.php:336
+#: ../../mod/setup.php:297 ../../mod/setup.php:339
msgid "Site administrator email address"
msgstr "Adresse de courriel de l'administrateur du site"
-#: ../../mod/setup.php:294 ../../mod/setup.php:336
+#: ../../mod/setup.php:297 ../../mod/setup.php:339
msgid ""
"Your account email address must match this in order to use the web admin "
"panel."
msgstr "Votre compte devra utiliser la même adresse de courriel pour pouvoir utiliser l'administration web."
-#: ../../mod/setup.php:295 ../../mod/setup.php:338
+#: ../../mod/setup.php:298 ../../mod/setup.php:341
msgid "Website URL"
msgstr "URL du site"
-#: ../../mod/setup.php:295 ../../mod/setup.php:338
+#: ../../mod/setup.php:298 ../../mod/setup.php:341
msgid "Please use SSL (https) URL if available."
msgstr "Merci d'utiliser SSL/TLS (https) autant que possible."
-#: ../../mod/setup.php:298 ../../mod/setup.php:341
+#: ../../mod/setup.php:301 ../../mod/setup.php:344
msgid "Please select a default timezone for your website"
msgstr "Merci de choisir une zone de temps (fuseau horaire) pour votre site"
-#: ../../mod/setup.php:325
+#: ../../mod/setup.php:328
msgid "Site settings"
msgstr "Réglages du site"
-#: ../../mod/setup.php:384
+#: ../../mod/setup.php:387
msgid "Could not find a command line version of PHP in the web server PATH."
msgstr "Impossible de trouver une version CLI de PHP dans le PATH du serveur web."
-#: ../../mod/setup.php:385
+#: ../../mod/setup.php:388
msgid ""
"If you don't have a command line version of PHP installed on server, you "
"will not be able to run background polling via cron."
-msgstr "En l'absence de version CLI de PHP sur votre serveur, vous ne pourrez pas utiliser la mise-à-jour en arrière-plan via cron."
+msgstr "En l'absence de version CLI de PHP sur votre serveur, vous ne pourrez pas utiliser la mise à jour en arrière-plan via cron."
-#: ../../mod/setup.php:389
+#: ../../mod/setup.php:392
msgid "PHP executable path"
msgstr "Chemin vers l'éxecutable PHP"
-#: ../../mod/setup.php:389
+#: ../../mod/setup.php:392
msgid ""
"Enter full path to php executable. You can leave this blank to continue the "
"installation."
msgstr "Entrez le chemin complet vers l'exécutable php. Vous pouvez continuer l'installation sans."
-#: ../../mod/setup.php:394
+#: ../../mod/setup.php:397
msgid "Command line PHP"
msgstr "PHP en ligne de commande (CLI)"
-#: ../../mod/setup.php:403
+#: ../../mod/setup.php:406
msgid ""
"The command line version of PHP on your system does not have "
"\"register_argc_argv\" enabled."
msgstr "La version CLI de PHP sur votre système n'a pas l'option \"register_argc_argv\" activée."
-#: ../../mod/setup.php:404
+#: ../../mod/setup.php:407
msgid "This is required for message delivery to work."
msgstr "Elle est nécessaire pour la livraison de messages."
-#: ../../mod/setup.php:406
+#: ../../mod/setup.php:409
msgid "PHP register_argc_argv"
msgstr "PHP register_argc_argv"
-#: ../../mod/setup.php:427
+#: ../../mod/setup.php:430
msgid ""
"Error: the \"openssl_pkey_new\" function on this system is not able to "
"generate encryption keys"
msgstr "Erreur&nbsp;: la fonction \"openssl_pkey_new\" de ce système n'est pas capable de générer des clefs de chiffrement"
-#: ../../mod/setup.php:428
+#: ../../mod/setup.php:431
msgid ""
"If running under Windows, please see "
"\"http://www.php.net/manual/en/openssl.installation.php\"."
msgstr "Si vous êtes sur un serveur Windows, merci de consulter \"http://www.php.net/manual/fr/openssl.installation.php\"."
-#: ../../mod/setup.php:430
+#: ../../mod/setup.php:433
msgid "Generate encryption keys"
msgstr "Générer les clefs de chiffrement"
-#: ../../mod/setup.php:437
+#: ../../mod/setup.php:440
msgid "libCurl PHP module"
msgstr "module PHP libCurl"
-#: ../../mod/setup.php:438
+#: ../../mod/setup.php:441
msgid "GD graphics PHP module"
msgstr "module PHP GD graphics"
-#: ../../mod/setup.php:439
+#: ../../mod/setup.php:442
msgid "OpenSSL PHP module"
msgstr "module PHP OpenSSL"
-#: ../../mod/setup.php:440
+#: ../../mod/setup.php:443
msgid "mysqli PHP module"
msgstr "module PHP mysqli"
-#: ../../mod/setup.php:441
+#: ../../mod/setup.php:444
msgid "mb_string PHP module"
msgstr "module PHP mb_string"
-#: ../../mod/setup.php:442
+#: ../../mod/setup.php:445
msgid "mcrypt PHP module"
msgstr "module PHP mcrypt"
-#: ../../mod/setup.php:447 ../../mod/setup.php:449
+#: ../../mod/setup.php:450 ../../mod/setup.php:452
msgid "Apache mod_rewrite module"
msgstr "module Apache mod_rewrite"
-#: ../../mod/setup.php:447
+#: ../../mod/setup.php:450
msgid ""
"Error: Apache webserver mod-rewrite module is required but not installed."
msgstr "Erreur&nbsp;: le module mod-rewrite du serveur web Apache est requis, mais pas installé."
-#: ../../mod/setup.php:453 ../../mod/setup.php:456
+#: ../../mod/setup.php:456 ../../mod/setup.php:459
msgid "proc_open"
msgstr "proc_open"
-#: ../../mod/setup.php:453
+#: ../../mod/setup.php:456
msgid ""
"Error: proc_open is required but is either not installed or has been "
"disabled in php.ini"
msgstr "Erreur&nbsp;: proc_open est requis, mais soit n'est pas installé, soit est désactivé dans le php.ini"
-#: ../../mod/setup.php:461
+#: ../../mod/setup.php:464
msgid "Error: libCURL PHP module required but not installed."
msgstr "Erreur&nbsp;: le module libCURL de PHP est requis, mais pas installé."
-#: ../../mod/setup.php:465
+#: ../../mod/setup.php:468
msgid ""
"Error: GD graphics PHP module with JPEG support required but not installed."
msgstr "Erreur&nbsp;: le module GD de PHP (avec support JPEG) est requis, mais pas installé."
-#: ../../mod/setup.php:469
+#: ../../mod/setup.php:472
msgid "Error: openssl PHP module required but not installed."
msgstr "Erreur&nbsp;: le module openssl de PHP est requis, mais pas installé."
-#: ../../mod/setup.php:473
+#: ../../mod/setup.php:476
msgid "Error: mysqli PHP module required but not installed."
msgstr "Erreur&nbsp;: le module mysqli de PHP est requis, mais pas installé."
-#: ../../mod/setup.php:477
+#: ../../mod/setup.php:480
msgid "Error: mb_string PHP module required but not installed."
msgstr "Erreur&nbsp;: le module mb_string de PHP est requis, mais pas installé."
-#: ../../mod/setup.php:481
+#: ../../mod/setup.php:484
msgid "Error: mcrypt PHP module required but not installed."
msgstr "Erreur&nbsp;: le module mcrypt de PHP est requis, mais pas installé."
-#: ../../mod/setup.php:497
+#: ../../mod/setup.php:500
msgid ""
"The web installer needs to be able to create a file called \".htconfig.php\""
" in the top folder of your web server and it is unable to do so."
msgstr "L'installeur web a besoin de créer un fichier \".htconfig.php\" à la racine de votre serveur web, mais en est incapable."
-#: ../../mod/setup.php:498
+#: ../../mod/setup.php:501
msgid ""
"This is most often a permission setting, as the web server may not be able "
"to write files in your folder - even if you can."
msgstr "C'est généralement lié à un problème de droits, à cause duquel le serveur web est interdit d'écriture dans le répertoire concerné - alors que votre propre utilisateur a le droit."
-#: ../../mod/setup.php:499
+#: ../../mod/setup.php:502
msgid ""
"At the end of this procedure, we will give you a text to save in a file "
"named .htconfig.php in your Red top folder."
-msgstr "Au terme de cette procédure, nous vous transmettrons un texte à sauvegarder dans un fichier nommé .htconfig.php, à la racine de votre installation de Red."
+msgstr "Au terme de cette procédure, nous vous transmettrons un texte à sauvegarder dans un fichier nommé .htconfig.php, à la racine de votre installation de La Matrice Rouge."
-#: ../../mod/setup.php:500
+#: ../../mod/setup.php:503
msgid ""
"You can alternatively skip this procedure and perform a manual installation."
" Please see the file \"install/INSTALL.txt\" for instructions."
msgstr "Autrement, vous pouvez contourner toute cette procédure et réaliser l'installation manuellement. Merci de consulter le fichier \"install/INSTALL.txt\" pour les instructions détaillées."
-#: ../../mod/setup.php:503
+#: ../../mod/setup.php:506
msgid ".htconfig.php is writable"
msgstr "Le fichier .htconfig.php est accessible en écriture"
-#: ../../mod/setup.php:513
+#: ../../mod/setup.php:516
msgid ""
"Red uses the Smarty3 template engine to render its web views. Smarty3 "
"compiles templates to PHP to speed up rendering."
-msgstr "Red utilise le moteur de template Smarty3 pour mettre son contenu en forme. Smarty3 compile ses templates vers du PHP natif pour accélérer le rendu."
+msgstr "La Matrice Rouge utilise le moteur de template Smarty3 pour mettre son contenu en forme. Smarty3 compile ses modèles vers du PHP natif pour accélérer le rendu."
-#: ../../mod/setup.php:514
+#: ../../mod/setup.php:517
+#, php-format
msgid ""
"In order to store these compiled templates, the web server needs to have "
-"write access to the directory view/tpl/smarty3/ under the Red top level "
-"folder."
-msgstr "Pour stocker ces templates compilées, le serveur web nécessite de pouvoir écrire dans le répertoire <racine de red>view/tpl/smarty3/."
+"write access to the directory %s under the Red top level folder."
+msgstr "Pour utiliser ces modèles, le serveur doit avoir le droits d'écrire dans le dossier %s."
-#: ../../mod/setup.php:515 ../../mod/setup.php:533
+#: ../../mod/setup.php:518 ../../mod/setup.php:536
msgid ""
"Please ensure that the user that your web server runs as (e.g. www-data) has"
" write access to this folder."
msgstr "Merci de vous assurer que l'utilisateur sous lequel le serveur web tourne (le plus souvent, www-data) a bien l'autorisation d'écrire dans ce répertoire."
-#: ../../mod/setup.php:516
+#: ../../mod/setup.php:519
+#, php-format
msgid ""
"Note: as a security measure, you should give the web server write access to "
-"view/tpl/smarty3/ only--not the template files (.tpl) that it contains."
-msgstr "Note&nbsp;: pour renforcer la sécurité, vous pouvez décider de ne donner l'accès en écrire qu'au répertoire view/tpl/smarty3 - et pas aux fichiers de templates (.tpl) qu'il contient."
+"%s only--not the template files (.tpl) that it contains."
+msgstr "Note: Comme mesure de sécurité, assurez vous de donner les droits d'écriture sur %s au serveur web uniquement. Éviter de définir les permissions sur les fichiers individuels (.tpl)."
-#: ../../mod/setup.php:519
-msgid "view/tpl/smarty3 is writable"
-msgstr "view/tpl/smarty3 est accessible en écriture"
+#: ../../mod/setup.php:522
+#, php-format
+msgid "%s is writable"
+msgstr "Permission d'écriture sur %s activée"
-#: ../../mod/setup.php:532
+#: ../../mod/setup.php:535
msgid ""
"Red uses the store directory to save uploaded files. The web server needs to"
" have write access to the store directory under the Red top level folder"
-msgstr "Red utilise le répertoire 'store' - situé à la racine de Red - pour sauvegarder les fichiers envoyés. Le serveur web aura donc besoin de pouvoir y écrire."
+msgstr "Red utilise le répertoire 'store' - situé à la racine de votre installation de la Matrice Rouge - pour sauvegarder les fichiers envoyés. Le serveur web aura donc besoin de pouvoir y écrire."
-#: ../../mod/setup.php:536
+#: ../../mod/setup.php:539
msgid "store is writable"
msgstr "'store' est accessible en écriture"
-#: ../../mod/setup.php:551
-msgid "SSL certificate validation"
-msgstr "Validation du certificat SSL/TLS"
-
-#: ../../mod/setup.php:551
+#: ../../mod/setup.php:569
msgid ""
"SSL certificate cannot be validated. Fix certificate or disable https access"
" to this site."
msgstr "Le certificat SSL/TLS n'a pas pu être validé. Merci de le corriger, ou de désactiver l'accès https à ce site."
-#: ../../mod/setup.php:558
+#: ../../mod/setup.php:570
+msgid ""
+"If you have https access to your website or allow connections to TCP port "
+"443 (the https: port), you MUST use a browser-valid certificate. You MUST "
+"NOT use self-signed certificates!"
+msgstr "Si votre serveur supporte les connections encryptées SSL ou s'il permet les connections sur le port TCP 443 (le port utilisé par le protocole https), vous DEVEZ utiliser un certificat valide. Vous ne DEVEZ PAS utiliser un certificat que vous avez vous-mêmes signé!"
+
+#: ../../mod/setup.php:571
+msgid ""
+"This restriction is incorporated because public posts from you may for "
+"example contain references to images on your own hub."
+msgstr "Nous avons ajouté cette contrainte pour éviter que vos publications publiques ne fassent référence à des images sur votre propre hub."
+
+#: ../../mod/setup.php:572
+msgid ""
+"If your certificate is not recognized, members of other sites (who may "
+"themselves have valid certificates) will get a warning message on their own "
+"site complaining about security issues."
+msgstr "Si votre certificat n'est pas reconnu, les membres des autres sites (avec certificats valides) recevront des messages d'avertissement sur leur propre sites."
+
+#: ../../mod/setup.php:573
+msgid ""
+"This can cause usability issues elsewhere (not just on your own site) so we "
+"must insist on this requirement."
+msgstr "Pour des raisons de compatibilité (sur l'ensemble de la matrice) nous nous devons d'insister sur ce prérequis."
+
+#: ../../mod/setup.php:574
+msgid ""
+"Providers are available that issue free certificates which are browser-"
+"valid."
+msgstr "Il existe une plusieurs autorités de certification qui vous fourniront gratuitement un certificat valide."
+
+#: ../../mod/setup.php:576
+msgid "SSL certificate validation"
+msgstr "Validation du certificat SSL/TLS"
+
+#: ../../mod/setup.php:582
msgid ""
"Url rewrite in .htaccess is not working. Check your server configuration."
msgstr "La réécriture d'URL définie dans le .htaccess ne fonctionne pas. Merci de vérifier la configuration de votre serveur web."
-#: ../../mod/setup.php:560
+#: ../../mod/setup.php:584
msgid "Url rewrite is working"
msgstr "La réécriture d'URL fonctionne"
-#: ../../mod/setup.php:570
+#: ../../mod/setup.php:594
msgid ""
"The database configuration file \".htconfig.php\" could not be written. "
"Please use the enclosed text to create a configuration file in your web "
"server root."
msgstr "Le fichier de configuration de la base de données - \".htconfig.php\" - ne peut être écrit. Merci de copier le texte généré dans un fichier à ce nom, à la racine de votre serveur web."
-#: ../../mod/setup.php:594
+#: ../../mod/setup.php:618
msgid "Errors encountered creating database tables."
msgstr "Erreurs rencontrées pendant la création de tables de BD."
-#: ../../mod/setup.php:607
+#: ../../mod/setup.php:653
msgid "<h1>What next</h1>"
msgstr "<h1>Et maintenant</h1>"
-#: ../../mod/setup.php:608
+#: ../../mod/setup.php:654
msgid ""
"IMPORTANT: You will need to [manually] setup a scheduled task for the "
"poller."
-msgstr "IMPORTANT&nbsp;: Vous devez créer [manuellement] une tâche planifiée pour les mises-à-jour."
+msgstr "IMPORTANT&nbsp;: Vous devez créer [manuellement] une tâche planifiée pour les mises à jour."
+
+#: ../../mod/editblock.php:8 ../../mod/editblock.php:27
+#: ../../mod/editblock.php:53 ../../mod/editlayout.php:36
+#: ../../mod/editpost.php:20 ../../mod/editwebpage.php:32
+msgid "Item not found"
+msgstr "Élément introuvable"
+
+#: ../../mod/editblock.php:77
+msgid "Edit Block"
+msgstr "Éditer bloc"
+
+#: ../../mod/editblock.php:87
+msgid "Delete block?"
+msgstr "Supprimer le bloc?"
+
+#: ../../mod/editblock.php:115 ../../mod/editlayout.php:110
+#: ../../mod/editpost.php:116 ../../mod/editwebpage.php:147
+msgid "Insert YouTube video"
+msgstr "Insérer une vidéo YouTube"
+
+#: ../../mod/editblock.php:116 ../../mod/editlayout.php:111
+#: ../../mod/editpost.php:117 ../../mod/editwebpage.php:148
+msgid "Insert Vorbis [.ogg] video"
+msgstr "Insérer une vidéo Vorbis [.ogg]"
+
+#: ../../mod/editblock.php:117 ../../mod/editlayout.php:112
+#: ../../mod/editpost.php:118 ../../mod/editwebpage.php:149
+msgid "Insert Vorbis [.ogg] audio"
+msgstr "Insérer un son Vorbis [.ogg]"
+
+#: ../../mod/editblock.php:153
+msgid "Delete Block"
+msgstr "Supprimer le bloc"
+
+#: ../../mod/pdledit.php:13
+msgid "Layout updated."
+msgstr "Agencement pris-en-compte."
+
+#: ../../mod/pdledit.php:28 ../../mod/pdledit.php:53
+msgid "Edit System Page Description"
+msgstr "Éditer la description"
+
+#: ../../mod/pdledit.php:48
+msgid "Layout not found."
+msgstr "Agencement introuvable."
+
+#: ../../mod/pdledit.php:54
+msgid "Module Name:"
+msgstr "Nom du module&nbsp;:"
+
+#: ../../mod/pdledit.php:55 ../../mod/layouts.php:59
+msgid "Layout Help"
+msgstr "Aide à la mise en page"
+
+#: ../../mod/editlayout.php:72
+msgid "Edit Layout"
+msgstr "Éditer mise-en-page"
+
+#: ../../mod/editlayout.php:82
+msgid "Delete layout?"
+msgstr "Supprimer la mise-en-page?"
+
+#: ../../mod/editlayout.php:146
+msgid "Delete Layout"
+msgstr "Supprimer mise-en-page"
+
+#: ../../mod/editpost.php:31
+msgid "Item is not editable"
+msgstr "Élément non-éditable"
+
+#: ../../mod/editpost.php:53
+msgid "Delete item?"
+msgstr "Supprimer l'élément?"
+
+#: ../../mod/editwebpage.php:106
+msgid "Edit Webpage"
+msgstr "Éditer page web"
+
+#: ../../mod/editwebpage.php:116
+msgid "Delete webpage?"
+msgstr "Supprimer la page web?"
+
+#: ../../mod/editwebpage.php:186
+msgid "Delete Webpage"
+msgstr "Supprimer page web"
#: ../../mod/siteinfo.php:57
#, php-format
@@ -5631,562 +5902,1094 @@ msgstr "Extensions/applications installées&nbsp;:"
msgid "No installed plugins/addons/apps"
msgstr "Aucune extension/application installée"
-#: ../../mod/siteinfo.php:93
-msgid "Project Donations"
-msgstr "Donations au projet"
-
-#: ../../mod/siteinfo.php:94
-msgid ""
-"<p>The Red Matrix is provided for you by volunteers working in their spare "
-"time. Your support will help us to build a better web. Select the following "
-"option for a one-time donation of your choosing</p>"
-msgstr "<p>The Red Matrix vous est mis à disposition par des volontaires, qui travaillent dessus sur leur temps libre. Votre soutien nous aidera à construire un meilleur web. Merci de choisir l'option suivante pour une donation ponctuelle de votre choix.</p>"
-
-#: ../../mod/siteinfo.php:95
-msgid "<p>or</p>"
-msgstr "<p>ou bien</p>"
-
-#: ../../mod/siteinfo.php:96
-msgid "Recurring Donation Options"
-msgstr "Options de donation récurente"
-
-#: ../../mod/siteinfo.php:115
+#: ../../mod/siteinfo.php:97
msgid "Red"
-msgstr "Red"
+msgstr "Rouge"
-#: ../../mod/siteinfo.php:116
+#: ../../mod/siteinfo.php:98
msgid ""
"This is a hub of the Red Matrix - a global cooperative network of "
-"decentralised privacy enhanced websites."
-msgstr "Ceci est une instance - un hub - de la Matrice Red - un réseau global et coopératif de sites web qui respectent la vie privée de manière décentralisée/acentrée."
+"decentralized privacy enhanced websites."
+msgstr "Ceci est un serveur de la Matrice Rouge - un réseau collaboratif de plusieurs serveurs qui assurent la protection de votre vie privée notamment par la décentralisation de votre identité."
-#: ../../mod/siteinfo.php:119
+#: ../../mod/siteinfo.php:101
msgid "Running at web location"
-msgstr "En train de tourner chez"
+msgstr "Installée sur"
-#: ../../mod/siteinfo.php:120
+#: ../../mod/siteinfo.php:102
msgid ""
"Please visit <a href=\"http://getzot.com\">GetZot.com</a> to learn more "
"about the Red Matrix."
-msgstr "Merci de visiter <a href=\"http://getzot.com\">GetZot.com</a> pour en apprendre davantage sur la Matrice Red."
+msgstr "Merci de visiter <a href=\"http://getzot.com\">GetZot.com</a> pour en apprendre davantage sur la Matrice Rouge."
-#: ../../mod/siteinfo.php:121
+#: ../../mod/siteinfo.php:103
msgid "Bug reports and issues: please visit"
msgstr "Pour remonter bogues et problèmes, merci de visiter"
-#: ../../mod/siteinfo.php:124
+#: ../../mod/siteinfo.php:106
msgid ""
"Suggestions, praise, etc. - please email \"redmatrix\" at librelist - dot "
"com"
msgstr "Suggestions, demandes, etc. - merci de vous adresser à \"redmatrix\" à librelist - point com"
-#: ../../mod/siteinfo.php:126
+#: ../../mod/siteinfo.php:108
msgid "Site Administrators"
msgstr "Administrateurs du site"
-#: ../../mod/new_channel.php:107
-msgid "Add a Channel"
-msgstr "Ajouter un canal"
+#: ../../mod/photos.php:77
+msgid "Page owner information could not be retrieved."
+msgstr "Impossible d'obtenir des informations sur le propriétaire de la page."
-#: ../../mod/new_channel.php:108
+#: ../../mod/photos.php:97
+msgid "Album not found."
+msgstr "Album introuvable."
+
+#: ../../mod/photos.php:119 ../../mod/photos.php:675
+msgid "Delete Album"
+msgstr "Supprimer album"
+
+#: ../../mod/photos.php:159 ../../mod/photos.php:963
+msgid "Delete Photo"
+msgstr "Supprimer photo"
+
+#: ../../mod/photos.php:453
+msgid "No photos selected"
+msgstr "Aucune photo selectionnée"
+
+#: ../../mod/photos.php:500
+msgid "Access to this item is restricted."
+msgstr "L'accès à l'élément est restreint."
+
+#: ../../mod/photos.php:574
+#, php-format
+msgid "You have used %1$.2f Mbytes of %2$.2f Mbytes photo storage."
+msgstr "Vous avez utilisé %1$.2f mégaoctets sur les %2$.2f autorisés pour le stockage des photos."
+
+#: ../../mod/photos.php:577
+#, php-format
+msgid "You have used %1$.2f Mbytes of photo storage."
+msgstr "Vous avez utilisé %1$.2f mégaoctets pour le stockage des photos."
+
+#: ../../mod/photos.php:596
+msgid "Upload Photos"
+msgstr "Téléverser des photos"
+
+#: ../../mod/photos.php:600 ../../mod/photos.php:670
+msgid "New album name: "
+msgstr "Créer un album&nbsp;:"
+
+#: ../../mod/photos.php:601
+msgid "or existing album name: "
+msgstr "ou choisir un album existant&nbsp;:"
+
+#: ../../mod/photos.php:602
+msgid "Do not show a status post for this upload"
+msgstr "Ne pas publier de statut pour cet envoi"
+
+#: ../../mod/photos.php:622
+msgid "Album name could not be decoded"
+msgstr "Le nom de l'Album n'a pu être décodé"
+
+#: ../../mod/photos.php:659 ../../mod/photos.php:681 ../../mod/photos.php:1135
+#: ../../mod/photos.php:1150
+msgid "Contact Photos"
+msgstr "Photos de contact"
+
+#: ../../mod/photos.php:685
+msgid "Edit Album"
+msgstr "Éditer l'album"
+
+#: ../../mod/photos.php:691
+msgid "Show Newest First"
+msgstr "Ordre anté-chronologique"
+
+#: ../../mod/photos.php:693
+msgid "Show Oldest First"
+msgstr "Ordre chronologique"
+
+#: ../../mod/photos.php:736 ../../mod/photos.php:1182
+msgid "View Photo"
+msgstr "Voir la photo"
+
+#: ../../mod/photos.php:782
+msgid "Permission denied. Access to this item may be restricted."
+msgstr "Permission refusée. L'accès à cet élément peut avoir été restreint."
+
+#: ../../mod/photos.php:784
+msgid "Photo not available"
+msgstr "Photo indisponible"
+
+#: ../../mod/photos.php:844
+msgid "Use as profile photo"
+msgstr "Utiliser comme photo du profil"
+
+#: ../../mod/photos.php:868
+msgid "View Full Size"
+msgstr "Voir en taille réelle"
+
+#: ../../mod/photos.php:946
+msgid "Edit photo"
+msgstr "Éditer la photo"
+
+#: ../../mod/photos.php:948
+msgid "Rotate CW (right)"
+msgstr "Rotation horaire (droite)"
+
+#: ../../mod/photos.php:949
+msgid "Rotate CCW (left)"
+msgstr "Rotation anti-horaire (gauche)"
+
+#: ../../mod/photos.php:952
+msgid "New album name"
+msgstr "Nouveau nom d'album&nbsp;:"
+
+#: ../../mod/photos.php:955
+msgid "Caption"
+msgstr "Titre/légende"
+
+#: ../../mod/photos.php:957
+msgid "Add a Tag"
+msgstr "Ajouter une étiquette"
+
+#: ../../mod/photos.php:960
msgid ""
-"A channel is your own collection of related web pages. A channel can be used"
-" to hold social network profiles, blogs, conversation groups and forums, "
-"celebrity pages, and much more. You may create as many channels as your "
-"service provider allows."
-msgstr "Un canal est une collection de pages web reliées entre elles, sous votre contrôle. Il peut contenir des profils de réseau social, des blogs, des groupes de conversation, des forums, des pages de célébrités, et bien plus encore. Vous pouvez créer autant de canaux que votre fournisseur vous y autorise."
+"Example: @bob, @Barbara_Jensen, @jim@example.com, #California, #camping"
+msgstr "Exemple&nbsp;: @bob, @Barbara_Jensen, @jim@exemple.com, #Ile_de_France, #marathon"
-#: ../../mod/new_channel.php:111
-msgid "Examples: \"Bob Jameson\", \"Lisa and her Horses\", \"Soccer\", \"Aviation Group\" "
-msgstr "Exemples&nbsp;: \"Bob Jameson\", \"Lisa et ses chevaux sauvages\", \"Football\", \"Groupe des amateurs de tir à l'arc\""
+#: ../../mod/photos.php:1113
+msgid "In This Photo:"
+msgstr "Dans cette photo&nbsp;:"
-#: ../../mod/new_channel.php:112
-msgid "Choose a short nickname"
-msgstr "Choisissez un nom court"
+#: ../../mod/photos.php:1188
+msgid "View Album"
+msgstr "Voir l'album"
-#: ../../mod/new_channel.php:113
+#: ../../mod/photos.php:1197
+msgid "Recent Photos"
+msgstr "Photos récentes"
+
+#: ../../mod/sources.php:32
+msgid "Failed to create source. No channel selected."
+msgstr "Impossible de créer la source. Aucun canal selectionné."
+
+#: ../../mod/sources.php:45
+msgid "Source created."
+msgstr "Source créée."
+
+#: ../../mod/sources.php:57
+msgid "Source updated."
+msgstr "Source mise à jour."
+
+#: ../../mod/sources.php:82
+msgid "*"
+msgstr "*"
+
+#: ../../mod/sources.php:89
+msgid "Manage remote sources of content for your channel."
+msgstr "Gérer les sources distantes du contenu de votre canal."
+
+#: ../../mod/sources.php:90 ../../mod/sources.php:100
+msgid "New Source"
+msgstr "Nouvelle Source"
+
+#: ../../mod/sources.php:101 ../../mod/sources.php:133
msgid ""
-"Your nickname will be used to create an easily remembered channel address "
-"(like an email address) which you can share with others."
-msgstr "Ce nom court sera utilisé pour créer une adresse de canal, facile à retenir - un peu comme une adresse de courriel - que vous pourrez partager avec d'autres."
+"Import all or selected content from the following channel into this channel "
+"and distribute it according to your channel settings."
+msgstr "Importer tout ou partie du contenu du canal suivant dans le canal en cours, et le distribuer en concordance avec les réglages de votre canal."
-#: ../../mod/new_channel.php:114
-msgid "Or <a href=\"import\">import an existing channel</a> from another location"
-msgstr "Ou <a href=\"import\">importez un canal existant</a> à un autre endroit"
+#: ../../mod/sources.php:102 ../../mod/sources.php:134
+msgid "Only import content with these words (one per line)"
+msgstr "N'importer le contenu que s'ils contient ces mots (un par ligne)"
-#: ../../mod/lostpass.php:15
-msgid "No valid account found."
-msgstr "Aucun compte valide trouvé."
+#: ../../mod/sources.php:102 ../../mod/sources.php:134
+msgid "Leave blank to import all public content"
+msgstr "Laissez en blanc pour importer tout le contenu public"
-#: ../../mod/lostpass.php:29
-msgid "Password reset request issued. Check your email."
-msgstr "Réinitialisation du mot de passe demandée. Vérifiez vos courriels."
+#: ../../mod/sources.php:103 ../../mod/sources.php:137
+#: ../../mod/new_channel.php:110
+msgid "Channel Name"
+msgstr "Nom du Canal"
-#: ../../mod/lostpass.php:35 ../../mod/lostpass.php:102
+#: ../../mod/sources.php:123 ../../mod/sources.php:150
+msgid "Source not found."
+msgstr "Source introuvable."
+
+#: ../../mod/sources.php:130
+msgid "Edit Source"
+msgstr "Éditer la source"
+
+#: ../../mod/sources.php:131
+msgid "Delete Source"
+msgstr "Supprimer la source"
+
+#: ../../mod/sources.php:158
+msgid "Source removed"
+msgstr "Source supprimée"
+
+#: ../../mod/sources.php:160
+msgid "Unable to remove source."
+msgstr "Impossible de supprimer la source."
+
+#: ../../mod/filer.php:49
+msgid "- select -"
+msgstr "- choisir -"
+
+#: ../../mod/events.php:72
+msgid "Event title and start time are required."
+msgstr "Un titre et une date de début sont requises pour l'événement."
+
+#: ../../mod/events.php:86
+msgid "Event not found."
+msgstr "Événement introuvable."
+
+#: ../../mod/events.php:329
+msgid "l, F j"
+msgstr "l j F"
+
+#: ../../mod/events.php:351
+msgid "Edit event"
+msgstr "Éditer l'événement"
+
+#: ../../mod/events.php:397
+msgid "Create New Event"
+msgstr "Créer événement"
+
+#: ../../mod/events.php:398
+msgid "Previous"
+msgstr "Précédent"
+
+#: ../../mod/events.php:469
+msgid "hour:minute"
+msgstr "heure:minute"
+
+#: ../../mod/events.php:489
+msgid "Event details"
+msgstr "Détails de l'événement"
+
+#: ../../mod/events.php:490
#, php-format
-msgid "Site Member (%s)"
-msgstr "Membre du site (%s)"
+msgid "Format is %s %s. Starting date and Title are required."
+msgstr "Le format est %s %s. Date de début et titre obligatoires."
-#: ../../mod/lostpass.php:40
+#: ../../mod/events.php:492
+msgid "Event Starts:"
+msgstr "L'événement débute&nbsp;:"
+
+#: ../../mod/events.php:492 ../../mod/events.php:506 ../../mod/appman.php:91
+#: ../../mod/appman.php:92
+msgid "Required"
+msgstr "Requis"
+
+#: ../../mod/events.php:495
+msgid "Finish date/time is not known or not relevant"
+msgstr "Date/heure de fin inconnue ou sans objet"
+
+#: ../../mod/events.php:497
+msgid "Event Finishes:"
+msgstr "L'événement termine&nbsp;:"
+
+#: ../../mod/events.php:500
+msgid "Adjust for viewer timezone"
+msgstr "Ajuster au fuseau horaire du visiteur"
+
+#: ../../mod/events.php:502
+msgid "Description:"
+msgstr "Description:"
+
+#: ../../mod/events.php:506
+msgid "Title:"
+msgstr "Titre:"
+
+#: ../../mod/events.php:508
+msgid "Share this event"
+msgstr "Partager cet événement"
+
+#: ../../mod/filestorage.php:68
+msgid "Permission Denied."
+msgstr "Permission refusée."
+
+#: ../../mod/filestorage.php:85
+msgid "File not found."
+msgstr "Fichier introuvable."
+
+#: ../../mod/filestorage.php:122
+msgid "Edit file permissions"
+msgstr "Éditer les permissions du fichier"
+
+#: ../../mod/filestorage.php:131
+msgid "Set/edit permissions"
+msgstr "Définir/Édition des authorisations"
+
+#: ../../mod/filestorage.php:132
+msgid "Include all files and sub folders"
+msgstr "Inclure tous fichiers et sous-répertoires"
+
+#: ../../mod/filestorage.php:133
+msgid "Return to file list"
+msgstr "Retourner à la liste des fichiers"
+
+#: ../../mod/filestorage.php:135
+msgid "Copy/paste this code to attach file to a post"
+msgstr "Copiez/collez ce code pour joindre le fichier à une publication"
+
+#: ../../mod/filestorage.php:136
+msgid "Copy/paste this URL to link file from a web page"
+msgstr "Copiez/collez cette URL pour lier le fichier depuis une page web"
+
+#: ../../mod/follow.php:25
+msgid "Channel added."
+msgstr "Canal ajouté."
+
+#: ../../mod/subthread.php:103
#, php-format
-msgid "Password reset requested at %s"
-msgstr "Demande de réinitialisation de mot de passe sur %s"
+msgid "%1$s is following %2$s's %3$s"
+msgstr "%1$s suit %3$s de %2$s"
-#: ../../mod/lostpass.php:63
+#: ../../mod/fsuggest.php:20 ../../mod/fsuggest.php:92
+msgid "Contact not found."
+msgstr "Contact introuvable."
+
+#: ../../mod/fsuggest.php:63
+msgid "Friend suggestion sent."
+msgstr "Suggestion d'amitié/relation envoyée."
+
+#: ../../mod/fsuggest.php:97
+msgid "Suggest Friends"
+msgstr "Suggérer une relation"
+
+#: ../../mod/fsuggest.php:99
+#, php-format
+msgid "Suggest a friend for %s"
+msgstr "Suggérer une relation à %s"
+
+#: ../../mod/suggest.php:35
msgid ""
-"Request could not be verified. (You may have previously submitted it.) "
-"Password reset failed."
-msgstr "La demande n'a pas pu être vérifiée. (Peut-être l'avez vous déjà utilisée.) La réinitialisation a échoué."
+"No suggestions available. If this is a new site, please try again in 24 "
+"hours."
+msgstr "Pas de suggestions pour l'instant. Si le site est récent, merci de re-tenter dans 24 heures."
-#: ../../mod/lostpass.php:85 ../../boot.php:1434
-msgid "Password Reset"
-msgstr "Réinitialiser le mot de passe"
+#: ../../mod/group.php:20
+msgid "Collection created."
+msgstr "Collection créée."
-#: ../../mod/lostpass.php:86
-msgid "Your password has been reset as requested."
-msgstr "Votre mot de passe a bien été réinitialisé."
+#: ../../mod/group.php:26
+msgid "Could not create collection."
+msgstr "Impossible de créer la collection."
-#: ../../mod/lostpass.php:87
-msgid "Your new password is"
-msgstr "Votre nouveau mot de passe est"
+#: ../../mod/group.php:54
+msgid "Collection updated."
+msgstr "Collection mise à jour."
-#: ../../mod/lostpass.php:88
-msgid "Save or copy your new password - and then"
-msgstr "Sauvez-le ou copiez-le, puis"
+#: ../../mod/group.php:86
+msgid "Create a collection of channels."
+msgstr "Créez une collection de canaux."
-#: ../../mod/lostpass.php:89
-msgid "click here to login"
-msgstr "cliquez ici pour vous connecter"
+#: ../../mod/group.php:87 ../../mod/group.php:183
+msgid "Collection Name: "
+msgstr "Nom de la collection&nbsp;:"
-#: ../../mod/lostpass.php:90
-msgid ""
-"Your password may be changed from the <em>Settings</em> page after "
-"successful login."
-msgstr "Votre mot de passe peut être changé depuis la page des <em>Réglages</em> une fois connecté."
+#: ../../mod/group.php:89 ../../mod/group.php:186
+msgid "Members are visible to other channels"
+msgstr "Les membres sont visibles par les autres canaux"
-#: ../../mod/lostpass.php:107
+#: ../../mod/group.php:107
+msgid "Collection removed."
+msgstr "Collection supprimée."
+
+#: ../../mod/group.php:109
+msgid "Unable to remove collection."
+msgstr "Impossible de supprimer la collection."
+
+#: ../../mod/group.php:182
+msgid "Collection Editor"
+msgstr "Éditeur de collection"
+
+#: ../../mod/group.php:196
+msgid "Members"
+msgstr "Membres"
+
+#: ../../mod/group.php:198
+msgid "All Connected Channels"
+msgstr "Tous canaux connectés"
+
+#: ../../mod/group.php:233
+msgid "Click on a channel to add or remove."
+msgstr "Cliquer sur un canal pour l'ajouter ou le supprimer"
+
+#: ../../mod/tagger.php:98
#, php-format
-msgid "Your password has changed at %s"
-msgstr "Votre mot de passe de %s a été changé"
+msgid "%1$s tagged %2$s's %3$s with %4$s"
+msgstr "%1$s a étiqueté le %3$s de %2$s par %4$s"
-#: ../../mod/lostpass.php:122
-msgid "Forgot your Password?"
-msgstr "Mot de passe oublié?"
+#: ../../mod/help.php:43 ../../mod/help.php:49 ../../mod/help.php:55
+msgid "Help:"
+msgstr "Aide&nbsp;:"
-#: ../../mod/lostpass.php:123
+#: ../../mod/help.php:69 ../../index.php:233
+msgid "Not Found"
+msgstr "Introuvable"
+
+#: ../../mod/tagrm.php:41
+msgid "Tag removed"
+msgstr "Étiquette retirée"
+
+#: ../../mod/tagrm.php:79
+msgid "Remove Item Tag"
+msgstr "Retirer une étiquette à l'élément"
+
+#: ../../mod/tagrm.php:81
+msgid "Select a tag to remove: "
+msgstr "Étiquette à retirer&nbsp;:"
+
+#: ../../mod/admin.php:52
+msgid "Theme settings updated."
+msgstr "Réglages du thème sauvegardés."
+
+#: ../../mod/admin.php:97 ../../mod/admin.php:450
+msgid "Site"
+msgstr "Site"
+
+#: ../../mod/admin.php:98
+msgid "Accounts"
+msgstr "Comptes"
+
+#: ../../mod/admin.php:99 ../../mod/admin.php:894
+msgid "Channels"
+msgstr "Canaux"
+
+#: ../../mod/admin.php:100 ../../mod/admin.php:985 ../../mod/admin.php:1027
+msgid "Plugins"
+msgstr "Extensions"
+
+#: ../../mod/admin.php:101 ../../mod/admin.php:1190 ../../mod/admin.php:1226
+msgid "Themes"
+msgstr "Thèmes"
+
+#: ../../mod/admin.php:102 ../../mod/admin.php:550
+msgid "Server"
+msgstr "Serveur"
+
+#: ../../mod/admin.php:103
+msgid "Profile Config"
+msgstr "Configurations du profil"
+
+#: ../../mod/admin.php:104
+msgid "DB updates"
+msgstr "MàJ BD"
+
+#: ../../mod/admin.php:118 ../../mod/admin.php:125 ../../mod/admin.php:1313
+msgid "Logs"
+msgstr "Journaux"
+
+#: ../../mod/admin.php:124
+msgid "Plugin Features"
+msgstr "Fonctionnalités liées aux extensions"
+
+#: ../../mod/admin.php:126
+msgid "User registrations waiting for confirmation"
+msgstr "Inscriptions en attente"
+
+#: ../../mod/admin.php:206
+msgid "Message queues"
+msgstr "File des messages"
+
+#: ../../mod/admin.php:211 ../../mod/admin.php:449 ../../mod/admin.php:549
+#: ../../mod/admin.php:758 ../../mod/admin.php:893 ../../mod/admin.php:984
+#: ../../mod/admin.php:1026 ../../mod/admin.php:1189 ../../mod/admin.php:1225
+#: ../../mod/admin.php:1312
+msgid "Administration"
+msgstr "Administration"
+
+#: ../../mod/admin.php:212
+msgid "Summary"
+msgstr "Résumé"
+
+#: ../../mod/admin.php:214
+msgid "Registered users"
+msgstr "Utilisateurs inscrits"
+
+#: ../../mod/admin.php:216 ../../mod/admin.php:553
+msgid "Pending registrations"
+msgstr "Inscriptions en attente"
+
+#: ../../mod/admin.php:217
+msgid "Version"
+msgstr "Version"
+
+#: ../../mod/admin.php:219 ../../mod/admin.php:554
+msgid "Active plugins"
+msgstr "Extensions actives"
+
+#: ../../mod/admin.php:370
+msgid "Site settings updated."
+msgstr "Réglages du site sauvegardés."
+
+#: ../../mod/admin.php:401
+msgid "No special theme for accessibility"
+msgstr "Pas de thème spécifique pour l'accessibilité"
+
+#: ../../mod/admin.php:430
+msgid "Yes - with approval"
+msgstr "Oui - avec approbation"
+
+#: ../../mod/admin.php:436
+msgid "My site is not a public server"
+msgstr "Mon site n'est pas un serveur publique"
+
+#: ../../mod/admin.php:437
+msgid "My site has paid access only"
+msgstr "Mon site est payant"
+
+#: ../../mod/admin.php:438
+msgid "My site has free access only"
+msgstr "Mon site est gratuit"
+
+#: ../../mod/admin.php:439
+msgid "My site offers free accounts with optional paid upgrades"
+msgstr "Mon site offre des comptes gratuits avec des ajouts payants"
+
+#: ../../mod/admin.php:453
+msgid "File upload"
+msgstr "Envoi de fichier"
+
+#: ../../mod/admin.php:454
+msgid "Policies"
+msgstr "Stratégies"
+
+#: ../../mod/admin.php:459
+msgid "Site name"
+msgstr "Nom du site"
+
+#: ../../mod/admin.php:460
+msgid "Banner/Logo"
+msgstr "Bannière/logo"
+
+#: ../../mod/admin.php:461
+msgid "Administrator Information"
+msgstr "Informations sur l'administrateur"
+
+#: ../../mod/admin.php:461
msgid ""
-"Enter your email address and submit to have your password reset. Then check "
-"your email for further instructions."
-msgstr "Saisissez votre adresse de courriel, et validez, pour réinitialiser votre mot de passe. Vérifiez ensuite votre boîte à lettres pour la suite des instructions."
+"Contact information for site administrators. Displayed on siteinfo page. "
+"BBCode can be used here"
+msgstr "Coordonnées de l'administrateur du site. Affichée sur la page 'siteinfo'. Vous pouvez utiliser du BBCode ici"
-#: ../../mod/lostpass.php:124
-msgid "Email Address"
-msgstr "Adresse de courriel"
+#: ../../mod/admin.php:462
+msgid "System language"
+msgstr "Langue du système"
-#: ../../mod/lostpass.php:125
-msgid "Reset"
-msgstr "Réinitialiser"
+#: ../../mod/admin.php:463
+msgid "System theme"
+msgstr "Thème du système"
-#: ../../mod/settings.php:71
-msgid "Name is required"
-msgstr "Le nom est requis"
+#: ../../mod/admin.php:463
+msgid ""
+"Default system theme - may be over-ridden by user profiles - <a href='#' "
+"id='cnftheme'>change theme settings</a>"
+msgstr "Thème par défaut - il peut être changé pour chaque profil utilisateur - <a href='#' id='cnftheme'>modifier le thème</a>"
-#: ../../mod/settings.php:75
-msgid "Key and Secret are required"
-msgstr "Clef et secret sont requis"
+#: ../../mod/admin.php:464
+msgid "Mobile system theme"
+msgstr "Thème système pour mobile"
-#: ../../mod/settings.php:79 ../../mod/settings.php:542
-msgid "Update"
-msgstr "Mise-à-jour"
+#: ../../mod/admin.php:464
+msgid "Theme for mobile devices"
+msgstr "Thème dédié aux périphériques mobiles"
-#: ../../mod/settings.php:195
-msgid "Passwords do not match. Password unchanged."
-msgstr "Les deux saisies du mot de passe ne correspondent pas. Il n'a donc pas été changé."
+#: ../../mod/admin.php:465
+msgid "Accessibility system theme"
+msgstr "Thème système pour l'accessibilité"
-#: ../../mod/settings.php:199
-msgid "Empty passwords are not allowed. Password unchanged."
-msgstr "Le mot de passe ne peut pas être vide. Il n'a donc pas été changé."
+#: ../../mod/admin.php:465
+msgid "Accessibility theme"
+msgstr "Thème pour l'accessibilité"
-#: ../../mod/settings.php:212
-msgid "Password changed."
-msgstr "Le mot de passe a été changé."
+#: ../../mod/admin.php:466
+msgid "Channel to use for this website's static pages"
+msgstr "Canal à utiliser pour les pages statiques de ce site"
-#: ../../mod/settings.php:214
-msgid "Password update failed. Please try again."
-msgstr "La mise-à-jour du mot de passe a échoué. Merci de recommencer."
+#: ../../mod/admin.php:466
+msgid "Site Channel"
+msgstr "Canal de ce HUB"
-#: ../../mod/settings.php:228
-msgid "Not valid email."
-msgstr "Adresse de courriel non-valide."
+#: ../../mod/admin.php:468
+msgid "Maximum image size"
+msgstr "Taille maximale des images"
-#: ../../mod/settings.php:231
-msgid "Protected email address. Cannot change to that email."
-msgstr "Adresse de courriel protégée. Impossible de l'utiliser."
+#: ../../mod/admin.php:468
+msgid ""
+"Maximum size in bytes of uploaded images. Default is 0, which means no "
+"limits."
+msgstr "Taille maximum, en octets, des images envoyées. Par défaut 0, soit sans limite."
-#: ../../mod/settings.php:240
-msgid "System failure storing new email. Please try again."
-msgstr "Défaillance système lors du stockage de la nouvelle adresse de courriel. Merci de ré-essayer."
+#: ../../mod/admin.php:469
+msgid "Does this site allow new member registration?"
+msgstr "Est-ce que l'enregistrement de nouveau membres sur ce site est autorisé?"
-#: ../../mod/settings.php:444
-msgid "Settings updated."
-msgstr "Réglages sauvegardés."
+#: ../../mod/admin.php:470
+msgid "Which best describes the types of account offered by this hub?"
+msgstr "Choisissez le type de comptes offert sur ce hub?"
-#: ../../mod/settings.php:515 ../../mod/settings.php:541
-#: ../../mod/settings.php:577
-msgid "Add application"
-msgstr "Ajouter une application"
+#: ../../mod/admin.php:471
+msgid "Register text"
+msgstr "Texte d'inscription"
-#: ../../mod/settings.php:518 ../../mod/settings.php:544
-msgid "Name"
-msgstr "Nom"
+#: ../../mod/admin.php:471
+msgid "Will be displayed prominently on the registration page."
+msgstr "Sera affiché de manière bien visible sur le formulaire d'inscription."
-#: ../../mod/settings.php:518
-msgid "Name of application"
-msgstr "Nom de l'application"
+#: ../../mod/admin.php:472
+msgid "Accounts abandoned after x days"
+msgstr "Les comptes sont abandonnés après x jours"
-#: ../../mod/settings.php:519 ../../mod/settings.php:545
-msgid "Consumer Key"
-msgstr "Clef de consommateur"
+#: ../../mod/admin.php:472
+msgid ""
+"Will not waste system resources polling external sites for abandonded "
+"accounts. Enter 0 for no time limit."
+msgstr "Pour éviter de gaspiller les ressources du système en essayer de mettre à jour des comptes abandonnés. Mettez 0 pour ne pas avoir de limite de temps."
-#: ../../mod/settings.php:519 ../../mod/settings.php:520
-msgid "Automatically generated - change if desired. Max length 20"
-msgstr "Généré automatiquement - à changer si besoin. Longueur maximale 20 caractères."
+#: ../../mod/admin.php:473
+msgid "Allowed friend domains"
+msgstr "Domaines amicaux"
-#: ../../mod/settings.php:520 ../../mod/settings.php:546
-msgid "Consumer Secret"
-msgstr "Secret de consommateur"
+#: ../../mod/admin.php:473
+msgid ""
+"Comma separated list of domains which are allowed to establish friendships "
+"with this site. Wildcards are accepted. Empty to allow any domains"
+msgstr "Liste de noms de domaines - séparés par des virgules - pour lesquels ce site acceptera les demandes d'amitié ou de mise en relation. Les caractères génériques (*) sont acceptés. Laissez vide pour accepter tous les domaines."
-#: ../../mod/settings.php:521 ../../mod/settings.php:547
-msgid "Redirect"
-msgstr "Redirection"
+#: ../../mod/admin.php:474
+msgid "Allowed email domains"
+msgstr "Domaines de courriels amicaux"
-#: ../../mod/settings.php:521
+#: ../../mod/admin.php:474
msgid ""
-"Redirect URI - leave blank unless your application specifically requires "
-"this"
-msgstr "URI de redirection - laissez blanc, sauf si l'application a demandé autrement"
+"Comma separated list of domains which are allowed in email addresses for "
+"registrations to this site. Wildcards are accepted. Empty to allow any "
+"domains"
+msgstr "Liste de noms de domaines - séparés par des virgules - dont les adresses de courriel seront autorisées lors de l'inscription à ce site. Les caractères génériques (*) sont acceptés. Laissez vide pour accepter tous les domaines."
-#: ../../mod/settings.php:522 ../../mod/settings.php:548
-msgid "Icon url"
-msgstr "URL de l'icône"
+#: ../../mod/admin.php:475
+msgid "Block public"
+msgstr "Bloquer public"
-#: ../../mod/settings.php:522
-msgid "Optional"
-msgstr "Facultatif"
+#: ../../mod/admin.php:475
+msgid ""
+"Check to block public access to all otherwise public personal pages on this "
+"site unless you are currently logged in."
+msgstr "Cocher pour interdire tout accès public, y compris aux pages marquées comme publiques, aux visiteurs anonymes."
-#: ../../mod/settings.php:533
-msgid "You can't edit this application."
-msgstr "Vous ne pouvez pas éditer cette application."
+#: ../../mod/admin.php:476
+msgid "Force publish"
+msgstr "Forcer publication"
-#: ../../mod/settings.php:576
-msgid "Connected Apps"
-msgstr "Applications connectées"
+#: ../../mod/admin.php:476
+msgid ""
+"Check to force all profiles on this site to be listed in the site directory."
+msgstr "Cocher pour forcer la publication de tous les profils du site dans l'annuaire."
-#: ../../mod/settings.php:580
-msgid "Client key starts with"
-msgstr "La clef cliente commence par"
+#: ../../mod/admin.php:477
+msgid "Disable discovery tab"
+msgstr "Désactiver l'onglet \"À découvrir\""
-#: ../../mod/settings.php:581
-msgid "No name"
-msgstr "Sans nom"
+#: ../../mod/admin.php:477
+msgid ""
+"Remove the tab in the network view with public content pulled from sources "
+"chosen for this site."
+msgstr "Ne pas afficher d'onglet avec des contenus publics automatiquement rassemblées depuis des sources choisies pour ce site."
-#: ../../mod/settings.php:582
-msgid "Remove authorization"
-msgstr "Révoquer l'autorisation"
+#: ../../mod/admin.php:478
+msgid "No login on Homepage"
+msgstr "Pas de connexion depuis la page d'accueil"
-#: ../../mod/settings.php:593
-msgid "No feature settings configured"
-msgstr "Pas de fonctionnalité à configurer"
+#: ../../mod/admin.php:478
+msgid ""
+"Check to hide the login form from your sites homepage when visitors arrive "
+"who are not logged in (e.g. when you put the content of the homepage in via "
+"the site channel)."
+msgstr "Cocher pour ne pas montrer le formulaire de connexion sur la page d'accueil (typiquement, pour quand vous utilisez la page d'accueil pour afficher du contenu via le canal du site)."
-#: ../../mod/settings.php:601
-msgid "Feature Settings"
-msgstr "Fonctionnalités"
+#: ../../mod/admin.php:480
+msgid "Proxy user"
+msgstr "Utilisateurs du proxy"
-#: ../../mod/settings.php:624
-msgid "Account Settings"
-msgstr "Compte"
+#: ../../mod/admin.php:481
+msgid "Proxy URL"
+msgstr "URL du proxy (visiter @proxy-list)"
-#: ../../mod/settings.php:625
-msgid "Password Settings"
-msgstr "Mot de passe"
+#: ../../mod/admin.php:482
+msgid "Network timeout"
+msgstr "Délai maximal du réseau"
-#: ../../mod/settings.php:626
-msgid "New Password:"
-msgstr "Nouveau mot de passe&nbsp;:"
+#: ../../mod/admin.php:482
+msgid "Value is in seconds. Set to 0 for unlimited (not recommended)."
+msgstr "En secondes. Mettre à 0 pour ne pas avoir de délai maximal (pas recommandé)."
-#: ../../mod/settings.php:627
-msgid "Confirm:"
-msgstr "Confirmation&nbsp;:"
+#: ../../mod/admin.php:483
+msgid "Delivery interval"
+msgstr "Intervalle de distribution"
-#: ../../mod/settings.php:627
-msgid "Leave password fields blank unless changing"
-msgstr "Laissez les mots de passe vides si vous ne voulez pas les modifier"
+#: ../../mod/admin.php:483
+msgid ""
+"Delay background delivery processes by this many seconds to reduce system "
+"load. Recommend: 4-5 for shared hosts, 2-3 for virtual private servers. 0-1 "
+"for large dedicated servers."
+msgstr "Temporise le processus de distribution de tant de secondes pour réduire la charge sur le système. Valeurs recommandées&nbsp;: 4-5 pour les serveurs mutualisés, 2-3 pour les VPS. 0-1 pour les gros serveurs dédiés."
-#: ../../mod/settings.php:629 ../../mod/settings.php:925
-msgid "Email Address:"
-msgstr "Adresse de courriel&nbsp;:"
+#: ../../mod/admin.php:484
+msgid "Poll interval"
+msgstr "Intervalle de scrutation"
-#: ../../mod/settings.php:630
-msgid "Remove Account"
-msgstr "Supprimer le compte"
+#: ../../mod/admin.php:484
+msgid ""
+"Delay background polling processes by this many seconds to reduce system "
+"load. If 0, use delivery interval."
+msgstr "Temporise le processus de scrutation en tâche de fond de tant de secondes, pour réduire la charge. Si 0, utilise l'intervalle de distribution."
-#: ../../mod/settings.php:631
-msgid "Warning: This action is permanent and cannot be reversed."
-msgstr "Attention&nbsp;: cette action est permanente et irréversible."
+#: ../../mod/admin.php:485
+msgid "Maximum Load Average"
+msgstr "Charge moyenne maximale"
-#: ../../mod/settings.php:647
-msgid "Off"
-msgstr "Inactif"
+#: ../../mod/admin.php:485
+msgid ""
+"Maximum system load before delivery and poll processes are deferred - "
+"default 50."
+msgstr "Charge système maximale au-delà de laquelle distribution et scrutation sont mis en pause - par défaut 50."
-#: ../../mod/settings.php:647
-msgid "On"
-msgstr "Actif"
+#: ../../mod/admin.php:541
+msgid "No server found"
+msgstr "Serveur introuvable"
-#: ../../mod/settings.php:654
-msgid "Additional Features"
-msgstr "Fonctionnalités additionnelles"
+#: ../../mod/admin.php:548 ../../mod/admin.php:772
+msgid "ID"
+msgstr "ID"
-#: ../../mod/settings.php:679
-msgid "Connector Settings"
-msgstr "Connecteurs"
+#: ../../mod/admin.php:548
+msgid "for channel"
+msgstr "pour le canal"
-#: ../../mod/settings.php:750
-msgid "Display Settings"
-msgstr "Affichage"
+#: ../../mod/admin.php:548
+msgid "on server"
+msgstr "sur le serveur"
-#: ../../mod/settings.php:756
-msgid "Display Theme:"
-msgstr "Thème&nbsp;:"
+#: ../../mod/admin.php:548
+msgid "Status"
+msgstr "État"
-#: ../../mod/settings.php:757
-msgid "Mobile Theme:"
-msgstr "Thème mobile&nbsp;:"
+#: ../../mod/admin.php:569
+msgid "Update has been marked successful"
+msgstr "La mise à jour a été marquée comme réussie"
-#: ../../mod/settings.php:758
-msgid "Update browser every xx seconds"
-msgstr "Rafraîchir le navigateur toutes les xx secondes"
+#: ../../mod/admin.php:579
+#, php-format
+msgid "Executing %s failed. Check system logs."
+msgstr "L'éxecution de %s a échoué. Merci de vérifier les journaux du système."
-#: ../../mod/settings.php:758
-msgid "Minimum of 10 seconds, no maximum"
-msgstr "Minimum 10 secondes, pas de maximum"
+#: ../../mod/admin.php:582
+#, php-format
+msgid "Update %s was successfully applied."
+msgstr "La mise à jour %s a été appliquée avec succès."
-#: ../../mod/settings.php:759
-msgid "Maximum number of conversations to load at any time:"
-msgstr "Nombre maximal de conversations pouvant être chargées en même temps&nbsp;:"
+#: ../../mod/admin.php:586
+#, php-format
+msgid "Update %s did not return a status. Unknown if it succeeded."
+msgstr "La mise à jour %s n'a pas retourné d'information. Impossible de savoir si elle a réussi ou non."
-#: ../../mod/settings.php:759
-msgid "Maximum of 100 items"
-msgstr "100 éléments au maximum"
+#: ../../mod/admin.php:589
+#, php-format
+msgid "Update function %s could not be found."
+msgstr "La fonction de mise à jour %s est introuvable."
-#: ../../mod/settings.php:760
-msgid "Don't show emoticons"
-msgstr "Ne pas montrer les frimousses/émoticones"
+#: ../../mod/admin.php:604
+msgid "No failed updates."
+msgstr "Aucune mise à jour défaillante."
-#: ../../mod/settings.php:761
-msgid "Do not view remote profiles in frames"
-msgstr ""
+#: ../../mod/admin.php:608
+msgid "Failed Updates"
+msgstr "Mises à jour défaillantes"
-#: ../../mod/settings.php:761
-msgid "By default open in a sub-window of your own site"
-msgstr "Par défaut, ouvrir dans une sous-fenêtre de votre propre site"
+#: ../../mod/admin.php:610
+msgid "Mark success (if update was manually applied)"
+msgstr "Marquer comme réussie (si la mise à jour a été réalisée manuellement)"
-#: ../../mod/settings.php:796
-msgid "Nobody except yourself"
-msgstr "Personne sauf vous"
+#: ../../mod/admin.php:611
+msgid "Attempt to execute this update step automatically"
+msgstr "Tenter de réaliser cette étape de mise à jour automatiquement"
-#: ../../mod/settings.php:797
-msgid "Only those you specifically allow"
-msgstr "Seulement ceux que vous autorisez spécifiquement"
+#: ../../mod/admin.php:637
+#, php-format
+msgid "%s user blocked/unblocked"
+msgid_plural "%s users blocked/unblocked"
+msgstr[0] "%s utilisateur bloqué/débloqué"
+msgstr[1] "%s utilisateurs bloqués/débloqués"
-#: ../../mod/settings.php:798
-msgid "Anybody in your address book"
-msgstr "Tous vos contacts"
+#: ../../mod/admin.php:644
+#, php-format
+msgid "%s user deleted"
+msgid_plural "%s users deleted"
+msgstr[0] "%s utilisateur supprimé"
+msgstr[1] "%s utilisateurs supprimés"
-#: ../../mod/settings.php:799
-msgid "Anybody on this website"
-msgstr "Tous les utilisateurs du site"
+#: ../../mod/admin.php:675
+msgid "Account not found"
+msgstr "Compte introuvable"
-#: ../../mod/settings.php:800
-msgid "Anybody in this network"
-msgstr "Tous les utilisateurs du réseau"
+#: ../../mod/admin.php:686
+#, php-format
+msgid "User '%s' deleted"
+msgstr "Utilisateur '%s' supprimé"
-#: ../../mod/settings.php:801
-msgid "Anybody on the internet"
-msgstr "Tout les utilisateurs d'Internet"
+#: ../../mod/admin.php:695
+#, php-format
+msgid "User '%s' unblocked"
+msgstr "Utilisateur '%s' débloqué"
-#: ../../mod/settings.php:878
-msgid "Publish your default profile in the network directory"
-msgstr "Publier votre profil par défaut dans l'annuaire du réseau"
+#: ../../mod/admin.php:695
+#, php-format
+msgid "User '%s' blocked"
+msgstr "Utilisateur '%s' bloqué"
-#: ../../mod/settings.php:883
-msgid "Allow us to suggest you as a potential friend to new members?"
-msgstr "Nous autoriser à vous suggérer comme relation potentielle aux nouveaux arrivants?"
+#: ../../mod/admin.php:759 ../../mod/admin.php:771
+msgid "Users"
+msgstr "Utilisateurs"
-#: ../../mod/settings.php:887 ../../mod/profile_photo.php:288
-msgid "or"
-msgstr "ou"
+#: ../../mod/admin.php:761 ../../mod/admin.php:896
+msgid "select all"
+msgstr "tout sélectionner"
-#: ../../mod/settings.php:892
-msgid "Your channel address is"
-msgstr "Votre canal a pour adresse"
+#: ../../mod/admin.php:762
+msgid "User registrations waiting for confirm"
+msgstr "Inscriptions en attente d'approbation"
-#: ../../mod/settings.php:914
-msgid "Channel Settings"
-msgstr "Canal"
+#: ../../mod/admin.php:763
+msgid "Request date"
+msgstr "Date de la demande"
-#: ../../mod/settings.php:923
-msgid "Basic Settings"
-msgstr "Basique"
+#: ../../mod/admin.php:764
+msgid "No registrations."
+msgstr "Pas d'inscriptions."
-#: ../../mod/settings.php:926
-msgid "Your Timezone:"
-msgstr "Zone de temps&nbsp;:"
+#: ../../mod/admin.php:765
+msgid "Approve"
+msgstr "Approuver"
-#: ../../mod/settings.php:927
-msgid "Default Post Location:"
-msgstr "Localisation par défaut&nbsp;:"
+#: ../../mod/admin.php:766
+msgid "Deny"
+msgstr "Refuser"
-#: ../../mod/settings.php:928
-msgid "Use Browser Location:"
-msgstr "Utiliser la localisation fournie par le navigateur&nbsp;:"
+#: ../../mod/admin.php:772
+msgid "Register date"
+msgstr "Date d'inscription"
-#: ../../mod/settings.php:930
-msgid "Adult Content"
-msgstr "Contenu \"adulte\""
+#: ../../mod/admin.php:772
+msgid "Last login"
+msgstr "Dernière connexion"
+
+#: ../../mod/admin.php:772
+msgid "Expires"
+msgstr "Expire"
+
+#: ../../mod/admin.php:772
+msgid "Service Class"
+msgstr "Classe de service"
-#: ../../mod/settings.php:930
+#: ../../mod/admin.php:774
msgid ""
-"This channel frequently or regularly publishes adult content. (Please tag "
-"any adult material and/or nudity with #NSFW)"
-msgstr "Ce canal publie plus ou moins fréquemment du contenu pour adultes. (Merci d'indiquer tout contenu pour adulte ou potentiellement choquant avec le tag <em>#NSFW</em> - Not Safe For Work)"
+"Selected users will be deleted!\\n\\nEverything these users had posted on "
+"this site will be permanently deleted!\\n\\nAre you sure?"
+msgstr "Les utilisateurs sélectionnés seront supprimés!\\n\\nTout ce que ces utilisateurs ont publié sur ce site sera détruit de manière définitive!\\n\\nÊtes-vous certain?"
-#: ../../mod/settings.php:932
-msgid "Security and Privacy Settings"
-msgstr "Sécurité et vie privée"
+#: ../../mod/admin.php:775
+msgid ""
+"The user {0} will be deleted!\\n\\nEverything this user has posted on this "
+"site will be permanently deleted!\\n\\nAre you sure?"
+msgstr "L'utilisateur {0} sera supprimé!\\n\\nTout ce que cet utilisateur a publié sur ce site sera détruit de manière définitive!\\n\\nÊtes-vous certain?"
-#: ../../mod/settings.php:934
-msgid "Hide my online presence"
-msgstr "Cacher ma présence en ligne"
+#: ../../mod/admin.php:808
+#, php-format
+msgid "%s channel censored/uncensored"
+msgid_plural "%s channelss censored/uncensored"
+msgstr[0] "%s canal censuré/non-censuré"
+msgstr[1] "%s canaux censurés/non-censurés"
-#: ../../mod/settings.php:934
-msgid "Prevents displaying in your profile that you are online"
-msgstr "Cacher votre statut (en ligne/hors ligne) sur votre profil"
+#: ../../mod/admin.php:815
+#, php-format
+msgid "%s channel deleted"
+msgid_plural "%s channels deleted"
+msgstr[0] "%s canal supprimé"
+msgstr[1] "%s canaux supprimés"
-#: ../../mod/settings.php:936
-msgid "Simple Privacy Settings:"
-msgstr "Réglages simples&nbsp;:"
+#: ../../mod/admin.php:834
+msgid "Channel not found"
+msgstr "Canal introuvable"
-#: ../../mod/settings.php:937
+#: ../../mod/admin.php:845
+#, php-format
+msgid "Channel '%s' deleted"
+msgstr "Canal '%s' supprimé"
+
+#: ../../mod/admin.php:855
+#, php-format
+msgid "Channel '%s' uncensored"
+msgstr "Canal '%s' non-censuré"
+
+#: ../../mod/admin.php:855
+#, php-format
+msgid "Channel '%s' censored"
+msgstr "Canal '%s' censuré"
+
+#: ../../mod/admin.php:898
+msgid "Censor"
+msgstr "Censurer"
+
+#: ../../mod/admin.php:899
+msgid "Uncensor"
+msgstr "Ne plus censurer"
+
+#: ../../mod/admin.php:902
+msgid "UID"
+msgstr "UID"
+
+#: ../../mod/admin.php:904
msgid ""
-"Very Public - <em>extremely permissive (should be used with caution)</em>"
-msgstr "Très public - <em>extrèmement permissif (à n'utiliser qu'en connaissance de cause)</em>"
+"Selected channels will be deleted!\\n\\nEverything that was posted in these "
+"channels on this site will be permanently deleted!\\n\\nAre you sure?"
+msgstr "Les canaux sélectionnés seront supprimés!\\n\\nTout ce qui a été publié dans ces canaux sur ce site sera définitivement supprimé!\\n\\nÊtes-vous certain?"
-#: ../../mod/settings.php:938
+#: ../../mod/admin.php:905
msgid ""
-"Typical - <em>default public, privacy when desired (similar to social "
-"network permissions but with improved privacy)</em>"
-msgstr "Classique - <em>public par défaut, privé en cas de besoin (comparable dans le principe aux réseaux sociaux centralisés, avec un mode privé plus efficace)</em>"
+"The channel {0} will be deleted!\\n\\nEverything that was posted in this "
+"channel on this site will be permanently deleted!\\n\\nAre you sure?"
+msgstr "Le canal {0} sera supprimé!\\n\\nTout ce qui a été publié sur ce canal sera définitivement supprimé!\\n\\nÊtes-vous certain?"
-#: ../../mod/settings.php:939
-msgid "Private - <em>default private, never open or public</em>"
-msgstr "Privé - <em>privé par défaut, jamais ouvert ni public</em>"
+#: ../../mod/admin.php:944
+#, php-format
+msgid "Plugin %s disabled."
+msgstr "Extension %s désactivée."
-#: ../../mod/settings.php:940
-msgid "Blocked - <em>default blocked to/from everybody</em>"
-msgstr "Bloqué - <em>par défaut, bloqué de/vers tout le monde</em>"
+#: ../../mod/admin.php:948
+#, php-format
+msgid "Plugin %s enabled."
+msgstr "Extension %s activée."
-#: ../../mod/settings.php:943
-msgid "Advanced Privacy Settings"
-msgstr "Réglages avancés"
+#: ../../mod/admin.php:958 ../../mod/admin.php:1160
+msgid "Disable"
+msgstr "Désactiver"
-#: ../../mod/settings.php:945
-msgid "Maximum Friend Requests/Day:"
-msgstr "Nombre maximum de mises en relation par jour&nbsp;:"
+#: ../../mod/admin.php:960 ../../mod/admin.php:1162
+msgid "Enable"
+msgstr "Activer"
-#: ../../mod/settings.php:945
-msgid "May reduce spam activity"
-msgstr "Contribue à réduire l'impact du spam"
+#: ../../mod/admin.php:986 ../../mod/admin.php:1191
+msgid "Toggle"
+msgstr "(Dés)activer"
-#: ../../mod/settings.php:946
-msgid "Default Post Permissions"
-msgstr "Permissions par défaut des publications"
+#: ../../mod/admin.php:994 ../../mod/admin.php:1201
+msgid "Author: "
+msgstr "Auteur&nbsp;:"
-#: ../../mod/settings.php:958
-msgid "Maximum private messages per day from unknown people:"
-msgstr "Nombre maximum de messages privés émanant d'inconnus, par jour&nbsp;:"
+#: ../../mod/admin.php:995 ../../mod/admin.php:1202
+msgid "Maintainer: "
+msgstr "Maintenu par&nbsp;:"
-#: ../../mod/settings.php:958
-msgid "Useful to reduce spamming"
-msgstr "Utile pour réduire le spam"
+#: ../../mod/admin.php:1124
+msgid "No themes found."
+msgstr "Aucun thème trouvé."
-#: ../../mod/settings.php:961
-msgid "Notification Settings"
-msgstr "Notifications"
+#: ../../mod/admin.php:1183
+msgid "Screenshot"
+msgstr "Aperçu"
-#: ../../mod/settings.php:962
-msgid "By default post a status message when:"
-msgstr "Par défaut, publier un statut quand:"
+#: ../../mod/admin.php:1231
+msgid "[Experimental]"
+msgstr "[Expérimental]"
-#: ../../mod/settings.php:963
-msgid "accepting a friend request"
-msgstr "acceptez une mise en relation"
+#: ../../mod/admin.php:1232
+msgid "[Unsupported]"
+msgstr "[Non-supporté]"
-#: ../../mod/settings.php:964
-msgid "joining a forum/community"
-msgstr "joignez un forum ou à une communauté"
+#: ../../mod/admin.php:1259
+msgid "Log settings updated."
+msgstr "Réglages du journal sauvegardés."
-#: ../../mod/settings.php:965
-msgid "making an <em>interesting</em> profile change"
-msgstr "faites une modification <em>intéressante</em> de votre profil"
+#: ../../mod/admin.php:1315
+msgid "Clear"
+msgstr "Vider"
-#: ../../mod/settings.php:966
-msgid "Send a notification email when:"
-msgstr "Envoyer un courriel de notification quand&nbsp;:"
+#: ../../mod/admin.php:1321
+msgid "Debugging"
+msgstr "Débogage"
-#: ../../mod/settings.php:967
-msgid "You receive an introduction"
-msgstr "Vous recevez une introduction"
+#: ../../mod/admin.php:1322
+msgid "Log file"
+msgstr "Fichier du journal"
-#: ../../mod/settings.php:968
-msgid "Your introductions are confirmed"
-msgstr "Vos introductions sont acceptées/confirmées"
+#: ../../mod/admin.php:1322
+msgid ""
+"Must be writable by web server. Relative to your Red top-level directory."
+msgstr "Doit être accessible en écriture par le serveur web. Chemin relatif à la racine de votre installation de la Matrice Rouge."
-#: ../../mod/settings.php:969
-msgid "Someone writes on your profile wall"
-msgstr "Quelqu'un écrit sur votre mur"
+#: ../../mod/admin.php:1323
+msgid "Log level"
+msgstr "Niveau de journalisation"
-#: ../../mod/settings.php:970
-msgid "Someone writes a followup comment"
-msgstr "Quelqu'un commente sur vos publications"
+#: ../../mod/thing.php:98
+msgid "Thing updated"
+msgstr "Chose mise à jour"
-#: ../../mod/settings.php:971
-msgid "You receive a private message"
-msgstr "Vous recevez un Message Privé"
+#: ../../mod/thing.php:158
+msgid "Object store: failed"
+msgstr "Stockage de l'objet&nbsp;: échec"
-#: ../../mod/settings.php:972
-msgid "You receive a friend suggestion"
-msgstr "Vous recevez une suggestion d'amitié/relation"
+#: ../../mod/thing.php:162
+msgid "Thing added"
+msgstr "Chose ajoutée"
-#: ../../mod/settings.php:973
-msgid "You are tagged in a post"
-msgstr "Vous êtes étiqueté dans une publication"
+#: ../../mod/thing.php:182
+#, php-format
+msgid "OBJ: %1$s %2$s %3$s"
+msgstr "OBJ: %1$s %2$s %3$s"
-#: ../../mod/settings.php:974
-msgid "You are poked/prodded/etc. in a post"
-msgstr "Vous êtes tapoté/pointé/etc. dans une publication"
+#: ../../mod/thing.php:234
+msgid "Show Thing"
+msgstr "Montrer chose"
-#: ../../mod/settings.php:977
-msgid "Advanced Account/Page Type Settings"
-msgstr "Type de page/Compte (avancé)"
+#: ../../mod/thing.php:241
+msgid "item not found."
+msgstr "élément introuvable."
-#: ../../mod/settings.php:978
-msgid "Change the behaviour of this account for special situations"
-msgstr "Modifie le comportement de ce compte pour certains cas particuliers"
+#: ../../mod/thing.php:272
+msgid "Edit Thing"
+msgstr "Éditer chose"
-#: ../../mod/settings.php:981
-msgid ""
-"Please enable expert mode (in Settings > Additional features) to adjust!"
-msgstr "Merci d'activer le mode expert (dans Réglages > Fonctionnalités additionelles) pour affiner!"
+#: ../../mod/thing.php:274 ../../mod/thing.php:321
+msgid "Select a profile"
+msgstr "Choisissez un profil"
+
+#: ../../mod/thing.php:278 ../../mod/thing.php:324
+msgid "Post an activity"
+msgstr "Publier une activité"
+
+#: ../../mod/thing.php:278 ../../mod/thing.php:324
+msgid "Only sends to viewers of the applicable profile"
+msgstr "Envoi exclusivement au membres autorisé de ce profil"
+
+#: ../../mod/thing.php:280 ../../mod/thing.php:326
+msgid "Name of thing e.g. something"
+msgstr "Nom de la chose, p.ex. quelque-chose"
+
+#: ../../mod/thing.php:282 ../../mod/thing.php:327
+msgid "URL of thing (optional)"
+msgstr "URL de la chose (optionnel)"
+
+#: ../../mod/thing.php:284 ../../mod/thing.php:328
+msgid "URL for photo of thing (optional)"
+msgstr "URL de l'image de la chose (optionnel)"
+
+#: ../../mod/thing.php:319
+msgid "Add Thing to your Profile"
+msgstr "Ajouter la chose à votre profil"
#: ../../mod/import.php:36
msgid "Nothing to import."
@@ -6213,47 +7016,47 @@ msgstr "Le clonage du canal a échoué. L'import a échoué."
msgid "Cloned channel not found. Import failed."
msgstr "Le canal cloné n'a pas été trouvé. L'import a échoué."
-#: ../../mod/import.php:358
+#: ../../mod/import.php:364
msgid "Import completed."
msgstr "L'import est terminé."
-#: ../../mod/import.php:371
+#: ../../mod/import.php:377
msgid "You must be logged in to use this feature."
msgstr "Vous devez vous connecter pour utiliser cette fonctionnalité."
-#: ../../mod/import.php:376
+#: ../../mod/import.php:382
msgid "Import Channel"
msgstr "Importation de canal"
-#: ../../mod/import.php:377
+#: ../../mod/import.php:383
msgid ""
"Use this form to import an existing channel from a different server/hub. You"
" may retrieve the channel identity from the old server/hub via the network "
"or provide an export file. Only identity and connections/relationships will "
"be imported. Importation of content is not yet available."
-msgstr "Utilisez ce formulaire pour importer un canal existant sur un serveur différent. Vous pouvez récupérer l'identité du canal sur l'ancien serveur directement par le réseau, ou bien fournir un fichier d'export. Seules les données d'identité et de relations seront importées. L'importation des contenus n'est pas encore disponible."
+msgstr "Utilisez ce formulaire pour importer un canal existant sur un serveur différent. Vous pouvez récupérer l'identité du canal sur l'ancien serveur directement par le réseau, ou bien fournir un fichier d'export. Seules les données d'identité et de relations seront importées. L'importation du contenu est toujours en développement."
-#: ../../mod/import.php:378
+#: ../../mod/import.php:384
msgid "File to Upload"
msgstr "Fichier à envoyer"
-#: ../../mod/import.php:379
+#: ../../mod/import.php:385
msgid "Or provide the old server/hub details"
msgstr "Ou fournissez les détails de l'ancien serveur"
-#: ../../mod/import.php:380
+#: ../../mod/import.php:386
msgid "Your old identity address (xyz@example.com)"
msgstr "Votre ancienne identité (zyx@exemple.com)"
-#: ../../mod/import.php:381
+#: ../../mod/import.php:387
msgid "Your old login email address"
msgstr "Votre ancienne adresse de courriel"
-#: ../../mod/import.php:382
+#: ../../mod/import.php:388
msgid "Your old login password"
msgstr "Votre ancien mot de passe"
-#: ../../mod/import.php:383
+#: ../../mod/import.php:389
msgid ""
"For either option, please choose whether to make this hub your new primary "
"address, or whether your old location should continue this role. You will be"
@@ -6261,66 +7064,261 @@ msgid ""
"primary location for files, photos, and media."
msgstr "Quelle que soit l'option choisie, merci de décider si cette nouvelle adresse sera la primaire, ou si votre ancienne adresse continuera à jouer ce rôle. Vous pourrez publier depuis l'adresse de votre choix, mais une seule peut être déclarée comme stockage primaire de vos fichiers/photos/media."
-#: ../../mod/import.php:384
+#: ../../mod/import.php:390
msgid "Make this hub my primary location"
-msgstr "Faire de cette adresse ma principale"
+msgstr "Faire de ce hub l'adresse principale de ce canal"
-#: ../../mod/manage.php:63
+#: ../../mod/invite.php:25
+msgid "Total invitation limit exceeded."
+msgstr "Limite du nombre total d'invitation dépassée."
+
+#: ../../mod/invite.php:49
#, php-format
-msgid "You have created %1$.0f of %2$.0f allowed channels."
-msgstr "Vous avez créé %1$.0f des %2$.0f canaux autorisés."
+msgid "%s : Not a valid email address."
+msgstr "%s&nbsp: adresse courriel invalide."
-#: ../../mod/manage.php:71
-msgid "Create a new channel"
-msgstr "Créer un nouveau canal"
+#: ../../mod/invite.php:76
+msgid "Please join us on Red"
+msgstr "Rejoignez-nous sur la Matrice Rouge"
-#: ../../mod/manage.php:76
-msgid "Channel Manager"
-msgstr "Gestionnaire du canal"
+#: ../../mod/invite.php:87
+msgid "Invitation limit exceeded. Please contact your site administrator."
+msgstr "Limite d'invitations dépassée. Merci de contacter l'administration de votre site."
-#: ../../mod/manage.php:77
-msgid "Current Channel"
-msgstr "Canal actif"
+#: ../../mod/invite.php:92
+#, php-format
+msgid "%s : Message delivery failed."
+msgstr "%s&nbsp;: Échec dans la livraison du message."
-#: ../../mod/manage.php:79
-msgid "Attach to one of your channels by selecting it."
-msgstr "Branchez-vous à l'un de vos canaux en le selectionnant."
+#: ../../mod/invite.php:96
+#, php-format
+msgid "%d message sent."
+msgid_plural "%d messages sent."
+msgstr[0] "%d message envoyé."
+msgstr[1] "%d messages envoyés."
-#: ../../mod/manage.php:80
-msgid "Default Channel"
-msgstr "Canal par défaut"
+#: ../../mod/invite.php:115
+msgid "You have no more invitations available"
+msgstr "Vous ne disposez plus d'aucune invitation"
-#: ../../mod/manage.php:81
-msgid "Make Default"
-msgstr "Définir comme défaut"
+#: ../../mod/invite.php:129
+msgid "Send invitations"
+msgstr "Envoyer des invitations"
-#: ../../mod/vote.php:97
-msgid "Total votes"
-msgstr "Suffrages exprimés"
+#: ../../mod/invite.php:130
+msgid "Enter email addresses, one per line:"
+msgstr "Entrez les adresses de courriel, une par ligne&nbsp;:"
-#: ../../mod/vote.php:98
-msgid "Average Rating"
-msgstr "Note moyenne"
+#: ../../mod/invite.php:131 ../../mod/mail.php:225 ../../mod/mail.php:338
+msgid "Your message:"
+msgstr "Votre message&nbsp;:"
-#: ../../mod/match.php:16
-msgid "Profile Match"
-msgstr "Profils similaires"
+#: ../../mod/invite.php:132
+msgid "Please join my community on RedMatrix."
+msgstr "Veuillez me rejoindre sur la Matrice Rouge."
-#: ../../mod/match.php:24
-msgid "No keywords to match. Please add keywords to your default profile."
-msgstr "Aucun mot-clef à comparer. Merci d'ajouter des mots-clefs à votre profil par défaut."
+#: ../../mod/invite.php:134
+msgid "You will need to supply this invitation code: "
+msgstr "Vous aurez besoin de fournir le code suivant:"
-#: ../../mod/match.php:61
-msgid "is interested in:"
-msgstr "s'intéresse à&nbsp;:"
+#: ../../mod/invite.php:135
+msgid "1. Register at any RedMatrix location (they are all inter-connected)"
+msgstr "1. Enregistrez-vous sur n'importe quel serveurs ( ils sont tous inter-connectés )"
-#: ../../mod/match.php:69
-msgid "No matches"
-msgstr "Pas de correspondance"
+#: ../../mod/invite.php:137
+msgid "2. Enter my RedMatrix network address into the site searchbar."
+msgstr "2. Saisissez l'adresse de mon canal dans la barre de recherche du site."
-#: ../../mod/zfinger.php:23
-msgid "invalid target signature"
-msgstr "signature de la cible invalide"
+#: ../../mod/invite.php:138
+msgid "or visit "
+msgstr "ou visitez"
+
+#: ../../mod/invite.php:140
+msgid "3. Click [Connect]"
+msgstr "3. Click sur [Ajouter]"
+
+#: ../../mod/item.php:146
+msgid "Unable to locate original post."
+msgstr "Impossible de localiser la publication initiale."
+
+#: ../../mod/item.php:379
+msgid "Empty post discarded."
+msgstr "Publication vide annulée."
+
+#: ../../mod/item.php:421
+msgid "Executable content type not permitted to this channel."
+msgstr "Les contenus de type 'exécutable' ne sont pas autorisés sur ce canal."
+
+#: ../../mod/item.php:850
+msgid "System error. Post not saved."
+msgstr "Erreur système. Publication non sauvegardée."
+
+#: ../../mod/item.php:1302
+#, php-format
+msgid "You have reached your limit of %1$.0f top level posts."
+msgstr "Vous avez atteint votre limite de %1$.0f contributions \"racine\"."
+
+#: ../../mod/item.php:1308
+#, php-format
+msgid "You have reached your limit of %1$.0f webpages."
+msgstr "Vous avez atteint votre limite de %1$.0f pages web."
+
+#: ../../mod/update_channel.php:43 ../../mod/update_display.php:25
+#: ../../mod/update_network.php:23 ../../mod/update_search.php:46
+msgid "[Embedded content - reload page to view]"
+msgstr "[Contenu embarqué - rechargez la page pour le voir]"
+
+#: ../../mod/layouts.php:62
+msgid "Help with this feature"
+msgstr "Aide avec cette fonctionnalité"
+
+#: ../../mod/layouts.php:84
+msgid "Layout Name"
+msgstr "Nom de la mise-en-page"
+
+#: ../../mod/like.php:15
+msgid "Like/Dislike"
+msgstr "J'aime/Je Déteste"
+
+#: ../../mod/like.php:20
+msgid "This action is restricted to members."
+msgstr "Cette action est réservée aux membres."
+
+#: ../../mod/like.php:21
+msgid ""
+"Please <a href=\"rmagic\">login with your RedMatrix ID</a> or <a "
+"href=\"register\">register as a new RedMatrix member</a> to continue."
+msgstr "SVP <a href=\"rmagic\">connectez-vous</a> ou <a href=\"register\">enregistrez-vous</a> pour continuer."
+
+#: ../../mod/like.php:77 ../../mod/like.php:104 ../../mod/like.php:142
+msgid "Invalid request."
+msgstr "Requête invalide."
+
+#: ../../mod/like.php:119
+msgid "thing"
+msgstr "chose"
+
+#: ../../mod/like.php:165
+msgid "Channel unavailable."
+msgstr "Canal indisponible."
+
+#: ../../mod/like.php:204
+msgid "Previous action reversed."
+msgstr "Action précédente annulée."
+
+#: ../../mod/like.php:417
+msgid "Action completed."
+msgstr "Action complétée."
+
+#: ../../mod/like.php:418
+msgid "Thank you."
+msgstr "Merci."
+
+#: ../../mod/lockview.php:35 ../../mod/lockview.php:41
+msgid "Remote privacy information not available."
+msgstr "Les informations de vie privée à distance ne sont pas disponibles."
+
+#: ../../mod/lockview.php:50
+msgid "Visible to:"
+msgstr "Visible par&nbsp;:"
+
+#: ../../mod/viewconnections.php:58
+msgid "No connections."
+msgstr "Pas de relation."
+
+#: ../../mod/viewconnections.php:71
+#, php-format
+msgid "Visit %s's profile [%s]"
+msgstr "Visiter le profil de %s [%s]"
+
+#: ../../mod/viewconnections.php:86
+msgid "View Connnections"
+msgstr "Voir les relations"
+
+#: ../../mod/lostpass.php:15
+msgid "No valid account found."
+msgstr "Aucun compte valide trouvé."
+
+#: ../../mod/lostpass.php:29
+msgid "Password reset request issued. Check your email."
+msgstr "Réinitialisation du mot de passe demandée. Vérifiez vos courriels."
+
+#: ../../mod/lostpass.php:35 ../../mod/lostpass.php:102
+#, php-format
+msgid "Site Member (%s)"
+msgstr "Membre du site (%s)"
+
+#: ../../mod/lostpass.php:40
+#, php-format
+msgid "Password reset requested at %s"
+msgstr "Demande de réinitialisation du mot de passe sur %s"
+
+#: ../../mod/lostpass.php:63
+msgid ""
+"Request could not be verified. (You may have previously submitted it.) "
+"Password reset failed."
+msgstr "La demande n'a pas pu être vérifiée. (Peut-être l'avez vous déjà utilisée.) La réinitialisation a échoué."
+
+#: ../../mod/lostpass.php:85 ../../boot.php:1508
+msgid "Password Reset"
+msgstr "Réinitialiser le mot de passe"
+
+#: ../../mod/lostpass.php:86
+msgid "Your password has been reset as requested."
+msgstr "Votre mot de passe a bien été réinitialisé."
+
+#: ../../mod/lostpass.php:87
+msgid "Your new password is"
+msgstr "Votre nouveau mot de passe est"
+
+#: ../../mod/lostpass.php:88
+msgid "Save or copy your new password - and then"
+msgstr "Sauvez-le ou copiez-le, puis"
+
+#: ../../mod/lostpass.php:89
+msgid "click here to login"
+msgstr "cliquez ici pour vous connecter"
+
+#: ../../mod/lostpass.php:90
+msgid ""
+"Your password may be changed from the <em>Settings</em> page after "
+"successful login."
+msgstr "Votre mot de passe peut être changé depuis la page des <em>Réglages</em> une fois connecté."
+
+#: ../../mod/lostpass.php:107
+#, php-format
+msgid "Your password has changed at %s"
+msgstr "Votre mot de passe de %s a été changé"
+
+#: ../../mod/lostpass.php:122
+msgid "Forgot your Password?"
+msgstr "Mot de passe oublié?"
+
+#: ../../mod/lostpass.php:123
+msgid ""
+"Enter your email address and submit to have your password reset. Then check "
+"your email for further instructions."
+msgstr "Saisissez votre adresse de courriel, et validez, pour réinitialiser votre mot de passe. Vérifiez ensuite votre boîte à lettres pour la suite des instructions."
+
+#: ../../mod/lostpass.php:124
+msgid "Email Address"
+msgstr "Adresse de courriel"
+
+#: ../../mod/lostpass.php:125
+msgid "Reset"
+msgstr "Réinitialiser"
+
+#: ../../mod/magic.php:70
+msgid "Hub not found."
+msgstr "Hub introuvable."
+
+#: ../../mod/vote.php:97
+msgid "Total votes"
+msgstr "Total des votes"
+
+#: ../../mod/vote.php:98
+msgid "Average Rating"
+msgstr "Évaluation moyenne"
#: ../../mod/mail.php:33
msgid "Unable to lookup recipient."
@@ -6350,212 +7348,230 @@ msgstr "Message supprimé."
msgid "Message recalled."
msgstr "Message annulé/rappelé."
-#: ../../mod/mail.php:206
+#: ../../mod/mail.php:215
msgid "Send Private Message"
msgstr "Envoyer un Message Privé"
-#: ../../mod/mail.php:207 ../../mod/mail.php:323
+#: ../../mod/mail.php:216 ../../mod/mail.php:333
msgid "To:"
msgstr "À&nbsp;:"
-#: ../../mod/mail.php:212 ../../mod/mail.php:325
+#: ../../mod/mail.php:221 ../../mod/mail.php:335
msgid "Subject:"
msgstr "Sujet&nbsp;:"
-#: ../../mod/mail.php:249
+#: ../../mod/mail.php:232
+msgid "Send"
+msgstr "Envoyer"
+
+#: ../../mod/mail.php:259
msgid "Message not found."
msgstr "Message introuvable."
-#: ../../mod/mail.php:292 ../../mod/message.php:72
+#: ../../mod/mail.php:302 ../../mod/message.php:72
msgid "Delete message"
msgstr "Supprimer message"
-#: ../../mod/mail.php:293
+#: ../../mod/mail.php:303
msgid "Recall message"
msgstr "Rappeler/annuler le message"
-#: ../../mod/mail.php:295
+#: ../../mod/mail.php:305
msgid "Message has been recalled."
msgstr "Le message a été rappelé."
-#: ../../mod/mail.php:312
+#: ../../mod/mail.php:322
msgid "Private Conversation"
msgstr "Conversation privée"
-#: ../../mod/mail.php:316
+#: ../../mod/mail.php:326
msgid "Delete conversation"
msgstr "Supprimer conversation"
-#: ../../mod/mail.php:318
+#: ../../mod/mail.php:328
msgid ""
"No secure communications available. You <strong>may</strong> be able to "
"respond from the sender's profile page."
-msgstr "Aucune communication sécurisée n'est possible en l'état. Vous pourrez <strong>peut-être</strong> répondre depuis la page de profil de l'émetteur."
+msgstr "Aucune communication sécurisée n'est possible. Vous pourrez <strong>peut-être</strong> répondre depuis la page de profil de l'émetteur."
-#: ../../mod/mail.php:322
+#: ../../mod/mail.php:332
msgid "Send Reply"
msgstr "Envoyer une réponse"
-#: ../../mod/editlayout.php:72
-msgid "Edit Layout"
-msgstr "Éditer mise-en-page"
+#: ../../mod/manage.php:136
+#, php-format
+msgid "You have created %1$.0f of %2$.0f allowed channels."
+msgstr "Vous avez créé %1$.0f des %2$.0f canaux autorisés."
-#: ../../mod/editlayout.php:82
-msgid "Delete layout?"
-msgstr "Supprimer la mise-en-page?"
+#: ../../mod/manage.php:144
+msgid "Create a new channel"
+msgstr "Créer un nouveau canal"
-#: ../../mod/editlayout.php:147
-msgid "Delete Layout"
-msgstr "Supprimer mise-en-page"
+#: ../../mod/manage.php:148
+msgid "Channel Manager"
+msgstr "Gestionnaire du canal"
-#: ../../mod/profile_photo.php:44
-msgid "Image uploaded but image cropping failed."
-msgstr "L'image a été téléversée, mais le recadrage a échoué."
+#: ../../mod/manage.php:149
+msgid "Current Channel"
+msgstr "Canal actif"
-#: ../../mod/profile_photo.php:97
-msgid "Image resize failed."
-msgstr "Le retaillage de l'image a échoué."
+#: ../../mod/manage.php:151
+msgid "Attach to one of your channels by selecting it."
+msgstr "Branchez-vous à l'un de vos canaux en le selectionnant."
-#: ../../mod/profile_photo.php:141
-msgid ""
-"Shift-reload the page or clear browser cache if the new photo does not "
-"display immediately."
-msgstr "Shirt-rechargez votre page, ou videz le cache du navigateur si la photo ne s'affiche pas immédiatement."
+#: ../../mod/manage.php:152
+msgid "Default Channel"
+msgstr "Canal par défaut"
-#: ../../mod/profile_photo.php:163
-#, php-format
-msgid "Image exceeds size limit of %d"
-msgstr "L'image dépasse la taille limite de %d"
+#: ../../mod/manage.php:153
+msgid "Make Default"
+msgstr "Définir comme défaut"
-#: ../../mod/profile_photo.php:172
-msgid "Unable to process image."
-msgstr "Impossible de traîter l'image."
+#: ../../mod/wall_upload.php:34
+msgid "Wall Photos"
+msgstr "Photos du mur"
-#: ../../mod/profile_photo.php:214 ../../mod/profile_photo.php:262
-msgid "Photo not available."
-msgstr "Photo inaccessible."
+#: ../../mod/match.php:16
+msgid "Profile Match"
+msgstr "Profils similaires"
-#: ../../mod/profile_photo.php:281
-msgid "Upload File:"
-msgstr "Fichier&nbsp;:"
+#: ../../mod/match.php:24
+msgid "No keywords to match. Please add keywords to your default profile."
+msgstr "Aucun mot-clef à comparer. Merci d'ajouter des mots-clefs à votre profil par défaut."
-#: ../../mod/profile_photo.php:282
-msgid "Select a profile:"
-msgstr "Choisir un profil&nbsp;:"
+#: ../../mod/match.php:61
+msgid "is interested in:"
+msgstr "s'intéresse à&nbsp;:"
-#: ../../mod/profile_photo.php:283
-msgid "Upload Profile Photo"
-msgstr "Téléverser une photo de profil"
+#: ../../mod/match.php:69
+msgid "No matches"
+msgstr "Pas de correspondance"
-#: ../../mod/profile_photo.php:284
-msgid "Upload"
-msgstr "Envoyer"
+#: ../../mod/menu.php:21
+msgid "Menu updated."
+msgstr "Menu mis à jour."
-#: ../../mod/profile_photo.php:288
-msgid "skip this step"
-msgstr "passer cette étape"
+#: ../../mod/menu.php:25
+msgid "Unable to update menu."
+msgstr "Impossible de mettre le menu à jour."
-#: ../../mod/profile_photo.php:288
-msgid "select a photo from your photo albums"
-msgstr "choisir une photo dans vos albums"
+#: ../../mod/menu.php:30
+msgid "Menu created."
+msgstr "Menu créé."
-#: ../../mod/profile_photo.php:302
-msgid "Crop Image"
-msgstr "Recadrer l'image"
+#: ../../mod/menu.php:34
+msgid "Unable to create menu."
+msgstr "Impossible de créer le menu."
-#: ../../mod/profile_photo.php:303
-msgid "Please adjust the image cropping for optimum viewing."
-msgstr "Merci d'ajuter le cadre pour une visualisation optimale."
+#: ../../mod/menu.php:57
+msgid "Manage Menus"
+msgstr "Gérer les menus"
-#: ../../mod/profile_photo.php:305
-msgid "Done Editing"
-msgstr "J'ai terminé"
+#: ../../mod/menu.php:60
+msgid "Drop"
+msgstr "Supprimer"
-#: ../../mod/profile_photo.php:340
-msgid "Image uploaded successfully."
-msgstr "Image téléversée avec succès."
+#: ../../mod/menu.php:62
+msgid "Create a new menu"
+msgstr "Créer un nouveau menu"
-#: ../../mod/profile_photo.php:342
-msgid "Image upload failed."
-msgstr "Le téléversement a échoué."
+#: ../../mod/menu.php:63
+msgid "Delete this menu"
+msgstr "Supprimer ce menu"
-#: ../../mod/profile_photo.php:351
-#, php-format
-msgid "Image size reduction [%s] failed."
-msgstr "La réduction de taille [%s] a échoué."
+#: ../../mod/menu.php:64 ../../mod/menu.php:109
+msgid "Edit menu contents"
+msgstr "Éditer le contenu du menu"
-#: ../../mod/connections.php:191 ../../mod/connections.php:263
-msgid "Blocked"
-msgstr "Bloqué"
+#: ../../mod/menu.php:65
+msgid "Edit this menu"
+msgstr "Éditer le menu"
-#: ../../mod/connections.php:196 ../../mod/connections.php:270
-msgid "Ignored"
-msgstr "Ignoré"
+#: ../../mod/menu.php:80
+msgid "New Menu"
+msgstr "Nouveau menu"
-#: ../../mod/connections.php:201 ../../mod/connections.php:284
-msgid "Hidden"
-msgstr "Caché"
+#: ../../mod/menu.php:81 ../../mod/menu.php:110
+msgid "Menu name"
+msgstr "Nom du menu"
-#: ../../mod/connections.php:206 ../../mod/connections.php:277
-msgid "Archived"
-msgstr "Archivé"
+#: ../../mod/menu.php:81 ../../mod/menu.php:110
+msgid "Must be unique, only seen by you"
+msgstr "Doit être unique, ne sera vu que par vous"
-#: ../../mod/connections.php:217
-msgid "All"
-msgstr "Tout"
+#: ../../mod/menu.php:82 ../../mod/menu.php:111
+msgid "Menu title"
+msgstr "Titre du menu"
-#: ../../mod/connections.php:241
-msgid "Suggest new connections"
-msgstr "Suggérer de nouvelles relations"
+#: ../../mod/menu.php:82 ../../mod/menu.php:111
+msgid "Menu title as seen by others"
+msgstr "Titre du menu tel que vu par les visiteurs"
-#: ../../mod/connections.php:247
-msgid "Show pending (new) connections"
-msgstr "Voir les (nouvelles) relations en attente"
+#: ../../mod/menu.php:83 ../../mod/menu.php:112
+msgid "Allow bookmarks"
+msgstr "Autoriser l'usage de favoris"
-#: ../../mod/connections.php:253
-msgid "Show all connections"
-msgstr "Voir toutes les relations"
+#: ../../mod/menu.php:83 ../../mod/menu.php:112
+msgid "Menu may be used to store saved bookmarks"
+msgstr "Le menu pourra être utilisé pour stocker des favoris"
-#: ../../mod/connections.php:256
-msgid "Unblocked"
-msgstr "Non bloquées"
+#: ../../mod/menu.php:98
+msgid "Menu deleted."
+msgstr "Menu supprimé."
-#: ../../mod/connections.php:259
-msgid "Only show unblocked connections"
-msgstr "Ne montrer que les relations non-bloquées"
+#: ../../mod/menu.php:100
+msgid "Menu could not be deleted."
+msgstr "Impossible de supprimer le menu."
-#: ../../mod/connections.php:266
-msgid "Only show blocked connections"
-msgstr "Ne montrer que les relations bloquées"
+#: ../../mod/menu.php:106
+msgid "Edit Menu"
+msgstr "Éditer le menu"
-#: ../../mod/connections.php:273
-msgid "Only show ignored connections"
-msgstr "Ne montrer que les relations ignorées"
+#: ../../mod/menu.php:108
+msgid "Add or remove entries to this menu"
+msgstr "Ajouter/supprimer des entrées à ce menu"
-#: ../../mod/connections.php:280
-msgid "Only show archived connections"
-msgstr "Ne montrer que les relations archivées"
+#: ../../mod/message.php:41
+msgid "Conversation removed."
+msgstr "Conversation supprimée."
-#: ../../mod/connections.php:287
-msgid "Only show hidden connections"
-msgstr "Ne montrer que les relations cachées"
+#: ../../mod/message.php:56
+msgid "No messages."
+msgstr "Pas de message."
-#: ../../mod/connections.php:331
-#, php-format
-msgid "%1$s [%2$s]"
-msgstr "%1$s [%2$s]"
+#: ../../mod/message.php:74
+msgid "D, d M Y - g:i A"
+msgstr "D d Y - H:i"
-#: ../../mod/connections.php:332
-msgid "Edit contact"
-msgstr "Éditer contact"
+#: ../../mod/new_channel.php:107
+msgid "Add a Channel"
+msgstr "Ajouter un canal"
-#: ../../mod/connections.php:355
-msgid "Search your connections"
-msgstr "Chercher parmi vos relations"
+#: ../../mod/new_channel.php:108
+msgid ""
+"A channel is your own collection of related web pages. A channel can be used"
+" to hold social network profiles, blogs, conversation groups and forums, "
+"celebrity pages, and much more. You may create as many channels as your "
+"service provider allows."
+msgstr "Un canal est une collection de pages web reliées entre elles, sous votre contrôle. Il peut contenir des profils de réseau social, des blogs, des groupes de conversation, des forums, des pages de célébrités, et bien plus encore. Vous pouvez créer autant de canaux que votre administrateur de hub vous y autorise."
-#: ../../mod/connections.php:356
-msgid "Finding: "
-msgstr "Recherche&nbsp;:"
+#: ../../mod/new_channel.php:111
+msgid "Examples: \"Bob Jameson\", \"Lisa and her Horses\", \"Soccer\", \"Aviation Group\" "
+msgstr "Exemples&nbsp;: \"Bob Jameson\", \"Lisa et ses chevaux sauvages\", \"Football\", \"Groupe des amateurs de tir à l'arc\""
+
+#: ../../mod/new_channel.php:112
+msgid "Choose a short nickname"
+msgstr "Choisissez un alias"
+
+#: ../../mod/new_channel.php:113
+msgid ""
+"Your nickname will be used to create an easily remembered channel address "
+"(like an email address) which you can share with others."
+msgstr "Cet alias sera utilisé pour créer une adresse de canal, facile à retenir - un peu comme une adresse de courriel - que vous pourrez partager avec d'autres."
+
+#: ../../mod/new_channel.php:114
+msgid "Or <a href=\"import\">import an existing channel</a> from another location"
+msgstr "Ou <a href=\"import\">importez un canal existant</a> à un autre endroit"
#: ../../mod/notifications.php:26
msgid "Invalid request identifier."
@@ -6563,756 +7579,456 @@ msgstr "Identifiant de requête invalide."
#: ../../mod/notifications.php:35
msgid "Discard"
-msgstr "Défausser"
+msgstr "Annuler"
-#: ../../mod/notifications.php:93 ../../mod/notify.php:54
+#: ../../mod/notifications.php:94 ../../mod/notify.php:53
msgid "No more system notifications."
msgstr "Pas d'autre notification du système."
-#: ../../mod/notifications.php:97 ../../mod/notify.php:58
+#: ../../mod/notifications.php:98 ../../mod/notify.php:57
msgid "System Notifications"
msgstr "Notifications du système"
-#: ../../mod/blocks.php:65
-msgid "Block Name"
-msgstr "Nom du bloc"
-
#: ../../mod/oexchange.php:23
msgid "Unable to find your hub."
-msgstr "Impossible de trouver votre instance."
+msgstr "Impossible de trouver votre hub."
#: ../../mod/oexchange.php:37
msgid "Post successful."
msgstr "Contribution effectuée."
-#: ../../mod/editwebpage.php:106
-msgid "Edit Webpage"
-msgstr "Éditer page web"
-
-#: ../../mod/editwebpage.php:116
-msgid "Delete webpage?"
-msgstr "Supprimer la page web?"
-
-#: ../../mod/editwebpage.php:189
-msgid "Delete Webpage"
-msgstr "Supprimer page web"
-
-#: ../../mod/profile.php:64 ../../mod/profile.php:72
-msgid "Access to this profile has been restricted."
-msgstr "L'accès à ce profil a été restreint."
-
-#: ../../mod/poke.php:159
-msgid "Poke/Prod"
-msgstr "Tapoter/Solliciter"
-
-#: ../../mod/poke.php:160
-msgid "poke, prod or do other things to somebody"
-msgstr "Tapoter, pointer, et autres choses à faire à quelqu'un"
-
-#: ../../mod/poke.php:161
-msgid "Recipient"
-msgstr "Destinataire"
-
-#: ../../mod/poke.php:162
-msgid "Choose what you wish to do to recipient"
-msgstr "Choisir quoi lui faire"
-
-#: ../../mod/poke.php:165
-msgid "Make this post private"
-msgstr "Rendre cette contribution privée"
-
-#: ../../mod/channel.php:85
-msgid "Insufficient permissions. Request redirected to profile page."
-msgstr "Permissions insuffisantes. Demande redirigée à la page du profil."
-
-#: ../../mod/community.php:23
-msgid "Not available."
-msgstr "Indisponible."
-
-#: ../../mod/community.php:32
-msgid "Community"
-msgstr "Communauté"
-
-#: ../../mod/community.php:63 ../../mod/community.php:88
-msgid "No results."
-msgstr "Aucun résultat."
-
-#: ../../mod/fsuggest.php:20 ../../mod/fsuggest.php:92
-msgid "Contact not found."
-msgstr "Contact introuvable."
-
-#: ../../mod/fsuggest.php:63
-msgid "Friend suggestion sent."
-msgstr "Suggestion d'amitié/relation envoyée."
-
-#: ../../mod/fsuggest.php:97
-msgid "Suggest Friends"
-msgstr "Suggérer une relation"
+#: ../../mod/zfinger.php:23
+msgid "invalid target signature"
+msgstr "signature de la cible invalide"
-#: ../../mod/fsuggest.php:99
-#, php-format
-msgid "Suggest a friend for %s"
-msgstr "Suggérer une relation à %s"
+#: ../../mod/openid.php:26
+msgid "OpenID protocol error. No ID returned."
+msgstr "Erreur du protocole OpenID. Pas d'ID retourné."
-#: ../../mod/editblock.php:86
-msgid "Edit Block"
-msgstr "Éditer bloc"
+#: ../../mod/appman.php:28 ../../mod/appman.php:44
+msgid "App installed."
+msgstr "Application installée."
-#: ../../mod/editblock.php:96
-msgid "Delete block?"
-msgstr "Supprimer le bloc?"
+#: ../../mod/appman.php:37
+msgid "Malformed app."
+msgstr "Erreur de l'application - Malformée."
-#: ../../mod/editblock.php:163
-msgid "Delete Block"
-msgstr "Supprimer bloc"
+#: ../../mod/appman.php:80
+msgid "Embed code"
+msgstr "Code intégré"
-#: ../../mod/dirprofile.php:114
-msgid "Status: "
-msgstr "État&nbsp;:"
-
-#: ../../mod/dirprofile.php:115
-msgid "Sexual Preference: "
-msgstr "Orientation sexuelle&nbsp;:"
+#: ../../mod/appman.php:86
+msgid "Edit App"
+msgstr "Edition de l'Application"
-#: ../../mod/dirprofile.php:117
-msgid "Homepage: "
-msgstr "Site web&nbsp;:"
-
-#: ../../mod/dirprofile.php:118
-msgid "Hometown: "
-msgstr "Ville natale&nbsp;:"
+#: ../../mod/appman.php:86
+msgid "Create App"
+msgstr "Création d'une Application"
-#: ../../mod/dirprofile.php:120
-msgid "About: "
-msgstr "À propos&nbsp;:"
+#: ../../mod/appman.php:91
+msgid "Name of app"
+msgstr "Nom de l'application"
-#: ../../mod/dirprofile.php:168
-msgid "Keywords: "
-msgstr "Mots-clefs&nbsp;:"
+#: ../../mod/appman.php:92
+msgid "Location (URL) of app"
+msgstr "Emplacement (Lien) vers l'application"
-#: ../../mod/filestorage.php:68
-msgid "Permission Denied."
-msgstr "Permission refusée."
+#: ../../mod/appman.php:94
+msgid "Photo icon URL"
+msgstr "Lien (URL) de l'icône à utiliser pour cette photo"
-#: ../../mod/filestorage.php:85
-msgid "File not found."
-msgstr "Fichier introuvable."
+#: ../../mod/appman.php:94
+msgid "80 x 80 pixels - optional"
+msgstr "80 x 80 pixels - optionel"
-#: ../../mod/filestorage.php:119
-msgid "Edit file permissions"
-msgstr "Éditer les permissions du fichier"
+#: ../../mod/appman.php:95
+msgid "Version ID"
+msgstr "Version"
-#: ../../mod/filestorage.php:124 ../../mod/photos.php:607
-#: ../../mod/photos.php:950
-msgid "Permissions"
-msgstr "Permissions"
+#: ../../mod/appman.php:96
+msgid "Price of app"
+msgstr "Prix de l'application"
-#: ../../mod/filestorage.php:126
-msgid "Include all files and sub folders"
-msgstr "Inclure tous fichiers et sous-répertoires"
+#: ../../mod/appman.php:97
+msgid "Location (URL) to purchase app"
+msgstr "Emplacement (LIEN) pour l'achat de l'application"
-#: ../../mod/filestorage.php:127
-msgid "Return to file list"
-msgstr "Retourner à la liste des fichiers"
+#: ../../mod/poll.php:64
+msgid "Poll"
+msgstr "Sondage"
-#: ../../mod/filestorage.php:129
-msgid "Copy/paste this code to attach file to a post"
-msgstr "Copiez/collez ce code pour joindre le fichier à une publication"
+#: ../../mod/poll.php:69
+msgid "View Results"
+msgstr "Voir les Résultats"
-#: ../../mod/filestorage.php:130
-msgid "Copy/paste this URL to link file from a web page"
-msgstr "Copiez/collez cette URL pour lier le fichier depuis une page web"
+#: ../../mod/frphotos.php:79
+msgid "Friendica Photo Album Import"
+msgstr "Importer votre Album Photo Friendica"
-#: ../../mod/filestorage.php:167
-msgid "Download"
-msgstr "Télécharger"
+#: ../../mod/frphotos.php:80
+msgid "This will import all your Friendica photo albums to this Red channel."
+msgstr "Cette fonction va importer tous vos albums photos Friendica dans ce canal de la Matrice Rouge."
-#: ../../mod/filestorage.php:173
-msgid "Used: "
-msgstr "Utilisé&nbsp;:"
+#: ../../mod/frphotos.php:81
+msgid "Friendica Server base URL"
+msgstr "URL vers le serveur Friendica"
-#: ../../mod/filestorage.php:174
-msgid "[directory]"
-msgstr "[répertoire]"
+#: ../../mod/frphotos.php:82
+msgid "Friendica Login Username"
+msgstr "Nom d'utilisateur Friendica"
-#: ../../mod/filestorage.php:176
-msgid "Limit: "
-msgstr "Limite&nbsp;:"
+#: ../../mod/frphotos.php:83
+msgid "Friendica Login Password"
+msgstr "Mot de passe Friendica"
-#: ../../mod/suggest.php:35
+#: ../../mod/removeaccount.php:30
msgid ""
-"No suggestions available. If this is a new site, please try again in 24 "
-"hours."
-msgstr "Pas de suggestions pour l'instant. Si le site est récent, merci de re-tenter dans 24 heures."
-
-#: ../../mod/message.php:41
-msgid "Conversation removed."
-msgstr "Conversation supprimée."
+"Account removals are not allowed within 48 hours of changing the account "
+"password."
+msgstr "Il est impossible de supprimer un compte à l'intérieur de 48 heures après avoir changé le mot de passe d'un compte."
-#: ../../mod/message.php:56
-msgid "No messages."
-msgstr "Pas de message."
+#: ../../mod/removeaccount.php:57
+msgid "Remove This Account"
+msgstr "Supprimer ce Compte"
-#: ../../mod/message.php:74
-msgid "D, d M Y - g:i A"
-msgstr "D d Y - H:i"
-
-#: ../../mod/pubsites.php:22
-msgid "Public Sites"
-msgstr "Sites publics"
-
-#: ../../mod/pubsites.php:25
+#: ../../mod/removeaccount.php:58
msgid ""
-"The listed sites allow public registration into the Red Matrix. All sites in"
-" the matrix are interlinked so membership on any of them conveys membership "
-"in the matrix as a whole. Some sites may require subscription or provide "
-"tiered service plans. The provider links <strong>may</strong> provide "
-"additional details."
-msgstr "Les sites listés autorisent l'inscription pour tous. Tous sont liés entre eux, de manière à ce qu'un compte sur un seul d'entre eux soit valable sur l'ensemble de la matrice. Certains sites peuvent demander des frais de souscriptions, ou fournir des forfaits ajustés. Le lien \"fournisseur\" <strong>peut</strong> vous donner des détails supplémentaires."
-
-#: ../../mod/pubsites.php:31
-msgid "Site URL"
-msgstr "URL du site"
-
-#: ../../mod/pubsites.php:31
-msgid "Access Type"
-msgstr "Type d'accès"
-
-#: ../../mod/pubsites.php:31
-msgid "Registration Policy"
-msgstr "Politique d'inscription"
-
-#: ../../mod/register.php:43
-msgid "Maximum daily site registrations exceeded. Please try again tomorrow."
-msgstr "Nombre d'inscriptions quotidiennes dépassé. Merci de recommencer demain."
-
-#: ../../mod/register.php:49
-msgid ""
-"Please indicate acceptance of the Terms of Service. Registration failed."
-msgstr "Merci d'indiquer votre adhésion aux Règles du Service. L'inscription a échoué."
-
-#: ../../mod/register.php:77
-msgid "Passwords do not match."
-msgstr "Les mots de passe ne concordent pas."
-
-#: ../../mod/register.php:105
-msgid ""
-"Registration successful. Please check your email for validation "
-"instructions."
-msgstr "Inscription réussie. Merci de vérifier vos courriels pour valider votre compte."
-
-#: ../../mod/register.php:111
-msgid "Your registration is pending approval by the site owner."
-msgstr "Votre inscription est en attente de l'approbation d'un administrateur."
-
-#: ../../mod/register.php:114
-msgid "Your registration can not be processed."
-msgstr "Votre inscription ne peut être traîtée."
-
-#: ../../mod/register.php:147
-msgid "Registration on this site/hub is by approval only."
-msgstr "L'inscription sur cette instance/ce site est soumis à une modération."
-
-#: ../../mod/register.php:148
-msgid "<a href=\"pubsites\">Register at another affiliated site/hub</a>"
-msgstr "<a href=\"pubsites\">S'inscrire sur un site/hub affilié</a>"
-
-#: ../../mod/register.php:156
-msgid ""
-"This site has exceeded the number of allowed daily account registrations. "
-"Please try again tomorrow."
-msgstr "Ce site a dépassé le nombre de création de compte autorisé par jour. Merci de recommencer demain."
-
-#: ../../mod/register.php:167
-msgid "Terms of Service"
-msgstr "les Règles du Service"
+"This will completely remove this account including all its channels from the"
+" network. Once this has been done it is not recoverable."
+msgstr "Cette fonction va complètement supprimer le compte incluant tous ses canaux sur la matrice. Attention, cette action est irréversible."
-#: ../../mod/register.php:173
-#, php-format
-msgid "I accept the %s for this website"
-msgstr "J'accepte %s de ce site"
-
-#: ../../mod/register.php:175
-#, php-format
-msgid "I am over 13 years of age and accept the %s for this website"
-msgstr "J'ai treize (13) ans révolus, et j'accepte %s de ce site"
-
-#: ../../mod/register.php:194
-msgid "Membership on this site is by invitation only."
-msgstr "L'inscription à ce site se fait uniquement sur invitation."
-
-#: ../../mod/register.php:195
-msgid "Please enter your invitation code"
-msgstr "Merci de saisir votre code d'invitation"
-
-#: ../../mod/register.php:198
-msgid "Your email address"
-msgstr "Votre adresse de courriel"
-
-#: ../../mod/register.php:199
-msgid "Choose a password"
-msgstr "Choisissez un mot de passe"
-
-#: ../../mod/register.php:200
-msgid "Please re-enter your password"
-msgstr "Confirmez-le"
-
-#: ../../mod/regmod.php:12
-msgid "Please login."
-msgstr "Merci de vous connecter."
-
-#: ../../mod/removeme.php:49
-msgid "Remove This Channel"
-msgstr "Supprimer ce canal"
-
-#: ../../mod/removeme.php:50
+#: ../../mod/removeaccount.php:60
msgid ""
-"This will completely remove this channel from the network. Once this has "
-"been done it is not recoverable."
-msgstr "Ceci effacera complètement le canal du réseau. Une fois effacé, un canal ne PEUT PAS être récupéré."
-
-#: ../../mod/removeme.php:51
-msgid "Please enter your password for verification:"
-msgstr "Merci de re-saisir votre mot de passe pour vérification&nbsp;:"
+"Remove this account, all its channels and all its channel clones from the "
+"network"
+msgstr "Supprimer ce compte, tous ses canaux et tous les clones sur la matrice."
-#: ../../mod/removeme.php:52
-msgid "Remove this channel and all its clones from the network"
-msgstr "Supprimer ce canal ainsi que tous ses clones de par le réseau"
-
-#: ../../mod/removeme.php:52
+#: ../../mod/removeaccount.php:60
msgid ""
-"By default only the instance of the channel located on this hub will be "
+"By default only the instances of the channels located on this hub will be "
"removed from the network"
-msgstr "Par défaut, seule l'instance du canal présente sur ce hub sera supprimée du réseau"
-
-#: ../../mod/removeme.php:53
-msgid "Remove Channel"
-msgstr "Enlever le canal"
-
-#: ../../mod/photos.php:77
-msgid "Page owner information could not be retrieved."
-msgstr "Impossible d'obtenir des informations sur le propriétaire de la page."
-
-#: ../../mod/photos.php:97
-msgid "Album not found."
-msgstr "Album introuvable."
-
-#: ../../mod/photos.php:119 ../../mod/photos.php:672
-msgid "Delete Album"
-msgstr "Supprimer album"
-
-#: ../../mod/photos.php:159 ../../mod/photos.php:955
-msgid "Delete Photo"
-msgstr "Supprimer photo"
-
-#: ../../mod/photos.php:453
-msgid "No photos selected"
-msgstr "Aucune photo selectionnée"
-
-#: ../../mod/photos.php:500
-msgid "Access to this item is restricted."
-msgstr "L'accès à l'élément est restreint."
-
-#: ../../mod/photos.php:577
-#, php-format
-msgid "You have used %1$.2f Mbytes of %2$.2f Mbytes photo storage."
-msgstr "Vous avez utilisé %1$.2f mégaoctets sur les %2$.2f autorisés pour le stockage des photos."
-
-#: ../../mod/photos.php:580
-#, php-format
-msgid "You have used %1$.2f Mbytes of photo storage."
-msgstr "Vous avez utilisé %1$.2f mégaoctets pour le stockage des photos."
-
-#: ../../mod/photos.php:599
-msgid "Upload Photos"
-msgstr "Téléverser des photos"
-
-#: ../../mod/photos.php:603 ../../mod/photos.php:667
-msgid "New album name: "
-msgstr "Créer un album&nbsp;:"
-
-#: ../../mod/photos.php:604
-msgid "or existing album name: "
-msgstr "ou choisir un album existant&nbsp;:"
-
-#: ../../mod/photos.php:605
-msgid "Do not show a status post for this upload"
-msgstr "Ne pas publier de statut pour cet envoi"
-
-#: ../../mod/photos.php:656 ../../mod/photos.php:678 ../../mod/photos.php:1127
-#: ../../mod/photos.php:1142
-msgid "Contact Photos"
-msgstr "Photos de contact"
-
-#: ../../mod/photos.php:682
-msgid "Edit Album"
-msgstr "Éditer l'album"
-
-#: ../../mod/photos.php:688
-msgid "Show Newest First"
-msgstr "Ordre anté-chronologique"
-
-#: ../../mod/photos.php:690
-msgid "Show Oldest First"
-msgstr "Ordre chronologique"
-
-#: ../../mod/photos.php:733 ../../mod/photos.php:1174
-msgid "View Photo"
-msgstr "Voir photo"
-
-#: ../../mod/photos.php:779
-msgid "Permission denied. Access to this item may be restricted."
-msgstr "Permission refusée. L'accès à cet élément peut avoir été restreint."
-
-#: ../../mod/photos.php:781
-msgid "Photo not available"
-msgstr "Photo indisponible"
-
-#: ../../mod/photos.php:841
-msgid "Use as profile photo"
-msgstr "Utiliser comme photo du profil"
-
-#: ../../mod/photos.php:865
-msgid "View Full Size"
-msgstr "Voir en taille réelle"
-
-#: ../../mod/photos.php:939
-msgid "Edit photo"
-msgstr "Éditer photo"
-
-#: ../../mod/photos.php:941
-msgid "Rotate CW (right)"
-msgstr "Rotation horaire (droite)"
-
-#: ../../mod/photos.php:942
-msgid "Rotate CCW (left)"
-msgstr "Rotation anti-horaire (gauche)"
-
-#: ../../mod/photos.php:944
-msgid "New album name"
-msgstr "Nouveau nom d'album&nbsp;:"
-
-#: ../../mod/photos.php:947
-msgid "Caption"
-msgstr "Titre/légende"
-
-#: ../../mod/photos.php:949
-msgid "Add a Tag"
-msgstr "Ajouter une étiquette"
-
-#: ../../mod/photos.php:952
-msgid ""
-"Example: @bob, @Barbara_Jensen, @jim@example.com, #California, #camping"
-msgstr "Exemple&nbsp;: @bob, @Barbara_Jensen, @jim@exemple.com, #Ile_de_France, #marathon"
-
-#: ../../mod/photos.php:1105
-msgid "In This Photo:"
-msgstr "Dans cette photo&nbsp;:"
-
-#: ../../mod/photos.php:1180
-msgid "View Album"
-msgstr "Voir album"
-
-#: ../../mod/photos.php:1189
-msgid "Recent Photos"
-msgstr "Photos récentes"
-
-#: ../../mod/mood.php:138
-msgid "Mood"
-msgstr "Humeur"
-
-#: ../../mod/mood.php:139
-msgid "Set your current mood and tell your friends"
-msgstr "Indiquez votre humeur du moment à vos amis"
-
-#: ../../mod/ping.php:192
-msgid "sent you a private message"
-msgstr "vous a envoyé un message privé"
-
-#: ../../mod/ping.php:250
-msgid "added your channel"
-msgstr "a ajouté votre canal"
+msgstr "Par défault, seuls les instances de canaux situés sur ce hub seront supprimer de la matrice."
-#: ../../mod/ping.php:294
-msgid "posted an event"
-msgstr "a publié un événement"
+#: ../../view/theme/apw/php/config.php:202
+#: ../../view/theme/apw/php/config.php:236
+msgid "Schema Default"
+msgstr "Par défault"
-#: ../../view/theme/redbasic/php/config.php:76
-msgid "Scheme Default"
-msgstr "Schéma de couleur par défaut"
+#: ../../view/theme/apw/php/config.php:203
+msgid "Sans-Serif"
+msgstr "Sans-Serif"
-#: ../../view/theme/redbasic/php/config.php:87
-msgid "silver"
-msgstr "argent"
+#: ../../view/theme/apw/php/config.php:204
+msgid "Monospace"
+msgstr "Monospace"
-#: ../../view/theme/redbasic/php/config.php:98
-#: ../../view/theme/apw/php/config.php:234
-#: ../../view/theme/blogga/view/theme/blog/config.php:69
+#: ../../view/theme/apw/php/config.php:259
#: ../../view/theme/blogga/php/config.php:69
+#: ../../view/theme/blogga/view/theme/blog/config.php:69
+#: ../../view/theme/redbasic/php/config.php:102
msgid "Theme settings"
msgstr "Réglages du thème"
-#: ../../view/theme/redbasic/php/config.php:99
-#: ../../view/theme/apw/php/config.php:235
+#: ../../view/theme/apw/php/config.php:260
+#: ../../view/theme/redbasic/php/config.php:103
msgid "Set scheme"
msgstr "Définir la palette de couleurs"
-#: ../../view/theme/redbasic/php/config.php:100
-msgid "Navigation bar colour"
-msgstr "Couleur de la barre de navigation"
-
-#: ../../view/theme/redbasic/php/config.php:101
-msgid "link colour"
-msgstr "couleur des liens"
-
-#: ../../view/theme/redbasic/php/config.php:102
-msgid "Set font-colour for banner"
-msgstr "Définir la couleur du texte de la bannière"
-
-#: ../../view/theme/redbasic/php/config.php:103
-msgid "Set the background colour"
-msgstr "Définir la couleur d'arrière-plan"
-
-#: ../../view/theme/redbasic/php/config.php:104
-msgid "Set the background image"
-msgstr "Définir l'image d'arrière-plan"
-
-#: ../../view/theme/redbasic/php/config.php:105
-msgid "Set the background colour of items"
-msgstr "Définir la couleur de fond des contributions"
-
-#: ../../view/theme/redbasic/php/config.php:106
-msgid "Set the opacity of items"
-msgstr "Définir l'opacité des contributions"
-
-#: ../../view/theme/redbasic/php/config.php:107
-msgid "Set the basic colour for item icons"
-msgstr "Définir la couleur de base pour les icônes des éléments"
-
-#: ../../view/theme/redbasic/php/config.php:108
-msgid "Set the hover colour for item icons"
-msgstr "Définir la couleur de survol des icônes des éléments"
-
-#: ../../view/theme/redbasic/php/config.php:109
-msgid "Set font-size for the entire application"
-msgstr "Définir la taille de police pour l'application entière"
-
-#: ../../view/theme/redbasic/php/config.php:110
-#: ../../view/theme/apw/php/config.php:236
+#: ../../view/theme/apw/php/config.php:261
+#: ../../view/theme/redbasic/php/config.php:124
msgid "Set font-size for posts and comments"
msgstr "Définir font-size pour contribution et commentaires"
-#: ../../view/theme/redbasic/php/config.php:111
-msgid "Set font-colour for posts and comments"
-msgstr "Définir font-colour pour les contributions et commentaires"
-
-#: ../../view/theme/redbasic/php/config.php:112
-msgid "Set radius of corners"
-msgstr "Définir le rayon des arrondis"
-
-#: ../../view/theme/redbasic/php/config.php:113
-msgid "Set shadow depth of photos"
-msgstr "Définir la profondeur de l'ombre des photos"
-
-#: ../../view/theme/redbasic/php/config.php:114
-msgid "Set maximum width of conversation regions"
-msgstr "Définir la largeur maximale des conversations"
-
-#: ../../view/theme/redbasic/php/config.php:115
-msgid "Set minimum opacity of nav bar - to hide it"
-msgstr "Définir l'opacité minimum du bandeau de navigation - pour le cacher"
-
-#: ../../view/theme/redbasic/php/config.php:116
-msgid "Set size of conversation author photo"
-msgstr "Définir la taille de la photo de l'auteur d'une conversation"
-
-#: ../../view/theme/redbasic/php/config.php:117
-msgid "Set size of followup author photos"
-msgstr "Définir la taille de la photo de l'auteur d'une réponse"
-
-#: ../../view/theme/redbasic/php/config.php:118
-msgid "Sloppy photo albums"
-msgstr "Albums photo \"en biais\""
-
-#: ../../view/theme/redbasic/php/config.php:118
-msgid "Are you a clean desk or a messy desk person?"
-msgstr "Vous êtes plutôt \"bureau bien rangé\" ou \"gros foutoir\"?"
-
-#: ../../view/theme/apw/php/config.php:193
-#: ../../view/theme/apw/php/config.php:211
-msgid "Schema Default"
-msgstr "Palette par défaut"
-
-#: ../../view/theme/apw/php/config.php:194
-msgid "Sans-Serif"
-msgstr "Sans empâtements"
-
-#: ../../view/theme/apw/php/config.php:195
-msgid "Monospace"
-msgstr "Châsse fixe"
-
-#: ../../view/theme/apw/php/config.php:237
+#: ../../view/theme/apw/php/config.php:262
msgid "Set font face"
msgstr "Définir la fonte"
-#: ../../view/theme/apw/php/config.php:238
+#: ../../view/theme/apw/php/config.php:263
msgid "Set iconset"
msgstr "Définir le jeu d'icônes"
-#: ../../view/theme/apw/php/config.php:239
+#: ../../view/theme/apw/php/config.php:264
msgid "Set big shadow size, default 15px 15px 15px"
msgstr "Définir la taille des grandes ombres, par défaut 15px 15px 15px"
-#: ../../view/theme/apw/php/config.php:240
+#: ../../view/theme/apw/php/config.php:265
msgid "Set small shadow size, default 5px 5px 5px"
msgstr "Définir la taille des petites ombres, par défaut 5px 5px 5px"
-#: ../../view/theme/apw/php/config.php:241
-msgid "Set shadow colour, default #000"
+#: ../../view/theme/apw/php/config.php:266
+msgid "Set shadow color, default #000"
msgstr "Définir la couleur des ombres, par défaut #000"
-#: ../../view/theme/apw/php/config.php:242
+#: ../../view/theme/apw/php/config.php:267
msgid "Set radius size, default 5px"
msgstr "Définir le rayon des arrondis, par défaut 5px"
-#: ../../view/theme/apw/php/config.php:243
+#: ../../view/theme/apw/php/config.php:268
msgid "Set line-height for posts and comments"
msgstr "Définir line-height pour contributions et commentaires"
-#: ../../view/theme/apw/php/config.php:244
+#: ../../view/theme/apw/php/config.php:269
msgid "Set background image"
msgstr "Définir l'image d'arrière-plan"
-#: ../../view/theme/apw/php/config.php:245
-msgid "Set background colour"
+#: ../../view/theme/apw/php/config.php:270
+msgid "Set background attachment"
+msgstr "Image de fond - fichier"
+
+#: ../../view/theme/apw/php/config.php:271
+msgid "Set background color"
msgstr "Définir la couleur d'arrière-plan"
-#: ../../view/theme/apw/php/config.php:246
+#: ../../view/theme/apw/php/config.php:272
msgid "Set section background image"
msgstr "Définir l'image d'arrière-plan des sections"
-#: ../../view/theme/apw/php/config.php:247
-msgid "Set section background colour"
+#: ../../view/theme/apw/php/config.php:273
+msgid "Set section background color"
msgstr "Définir la couleur d'arrière-plan des sections"
-#: ../../view/theme/apw/php/config.php:248
-msgid "Set colour of items - use hex"
+#: ../../view/theme/apw/php/config.php:274
+msgid "Set color of items - use hex"
msgstr "Définir la couleur des éléments - en héxadécimal"
-#: ../../view/theme/apw/php/config.php:249
-msgid "Set colour of links - use hex"
+#: ../../view/theme/apw/php/config.php:275
+msgid "Set color of links - use hex"
msgstr "Définir la couleur des liens - en héxadécimal"
-#: ../../view/theme/apw/php/config.php:250
+#: ../../view/theme/apw/php/config.php:276
msgid "Set max-width for items. Default 400px"
msgstr "Définir la largeur maximal des éléments. Par défaut, 400px"
-#: ../../view/theme/apw/php/config.php:251
+#: ../../view/theme/apw/php/config.php:277
msgid "Set min-width for items. Default 240px"
msgstr "Définir la largeur minimale des éléments. Par défaut, 240px"
-#: ../../view/theme/apw/php/config.php:252
+#: ../../view/theme/apw/php/config.php:278
msgid "Set the generic content wrapper width. Default 48%"
msgstr "Définir la largeur du contenu. Par défaut, 48%"
-#: ../../view/theme/apw/php/config.php:253
-msgid "Set colour of fonts - use hex"
+#: ../../view/theme/apw/php/config.php:279
+msgid "Set color of fonts - use hex"
msgstr "Définir la couleur des fontes - en héxadécimal"
-#: ../../view/theme/apw/php/config.php:254
+#: ../../view/theme/apw/php/config.php:280
msgid "Set background-size element"
msgstr "Définir background-size pour les éléments"
-#: ../../view/theme/apw/php/config.php:255
+#: ../../view/theme/apw/php/config.php:281
msgid "Item opacity"
msgstr "Opacité des éléments"
-#: ../../view/theme/apw/php/config.php:256
+#: ../../view/theme/apw/php/config.php:282
msgid "Display post previews only"
msgstr "Afficher seulement l'aperçu des contributions"
-#: ../../view/theme/apw/php/config.php:257
+#: ../../view/theme/apw/php/config.php:283
msgid "Display side bar on channel page"
msgstr "Afficher le panneau latéral sur la page du canal"
-#: ../../view/theme/apw/php/config.php:258
+#: ../../view/theme/apw/php/config.php:284
msgid "Colour of the navigation bar"
msgstr "Couleur de la barre de navigation"
-#: ../../view/theme/apw/php/config.php:259
+#: ../../view/theme/apw/php/config.php:285
msgid "Item float"
msgstr "Alignement de l'élément"
-#: ../../view/theme/apw/php/config.php:260
+#: ../../view/theme/apw/php/config.php:286
msgid "Left offset of the section element"
msgstr "Décalage gauche de l'élément section"
-#: ../../view/theme/apw/php/config.php:261
+#: ../../view/theme/apw/php/config.php:287
msgid "Right offset of the section element"
msgstr "Décalage droit de l'élément section"
-#: ../../view/theme/apw/php/config.php:262
+#: ../../view/theme/apw/php/config.php:288
msgid "Section width"
msgstr "Largeur de la section"
-#: ../../view/theme/apw/php/config.php:263
+#: ../../view/theme/apw/php/config.php:289
msgid "Left offset of the aside"
msgstr "Décalage gauche du panneau latéral"
-#: ../../view/theme/apw/php/config.php:264
+#: ../../view/theme/apw/php/config.php:290
msgid "Right offset of the aside element"
msgstr "Décalage droit du panneau latéral"
-#: ../../view/theme/blogga/view/theme/blog/config.php:47
#: ../../view/theme/blogga/php/config.php:47
+#: ../../view/theme/blogga/view/theme/blog/config.php:47
msgid "None"
-msgstr "Aucun(e)"
+msgstr "Aucun"
-#: ../../view/theme/blogga/view/theme/blog/config.php:70
#: ../../view/theme/blogga/php/config.php:70
+#: ../../view/theme/blogga/view/theme/blog/config.php:70
msgid "Header image"
-msgstr "Têtière"
+msgstr "Image de l'entête"
-#: ../../view/theme/blogga/view/theme/blog/config.php:71
#: ../../view/theme/blogga/php/config.php:71
+#: ../../view/theme/blogga/view/theme/blog/config.php:71
msgid "Header image only on profile pages"
-msgstr "Têtière seulement sur les profils"
+msgstr "Image de l'entête tel qu'elle est affichée sur la page du profil"
+
+#: ../../view/theme/redbasic/php/config.php:84
+msgid "Light (Red Matrix default)"
+msgstr "Blanc (valeur par défaut)"
+
+#: ../../view/theme/redbasic/php/config.php:104
+msgid "Narrow navbar"
+msgstr "Barre de navigation fine"
+
+#: ../../view/theme/redbasic/php/config.php:105
+msgid "Navigation bar background color"
+msgstr "Couleur de fond de la barre de navigation"
+
+#: ../../view/theme/redbasic/php/config.php:106
+msgid "Navigation bar gradient top color"
+msgstr "Gradient de la barre de navigation HAUT"
+
+#: ../../view/theme/redbasic/php/config.php:107
+msgid "Navigation bar gradient bottom color"
+msgstr "Gradient de la barre de navigation BAS"
+
+#: ../../view/theme/redbasic/php/config.php:108
+msgid "Navigation active button gradient top color"
+msgstr "Gradient du bouton de navigation HAUT"
+
+#: ../../view/theme/redbasic/php/config.php:109
+msgid "Navigation active button gradient bottom color"
+msgstr "Gradient du bouton de navigation BAS"
+
+#: ../../view/theme/redbasic/php/config.php:110
+msgid "Navigation bar border color "
+msgstr "Couleur de la bordure de la barre de navigation"
+
+#: ../../view/theme/redbasic/php/config.php:111
+msgid "Navigation bar icon color "
+msgstr "Couleur de l'icône de la barre de navigation"
+
+#: ../../view/theme/redbasic/php/config.php:112
+msgid "Navigation bar active icon color "
+msgstr "Couleur de l'icône active de la barre de navigation"
+
+#: ../../view/theme/redbasic/php/config.php:113
+msgid "link color"
+msgstr "couleur des liens"
+
+#: ../../view/theme/redbasic/php/config.php:114
+msgid "Set font-color for banner"
+msgstr "Définir la couleur du texte de la bannière"
+
+#: ../../view/theme/redbasic/php/config.php:115
+msgid "Set the background color"
+msgstr "Définir la couleur d'arrière-plan"
+
+#: ../../view/theme/redbasic/php/config.php:116
+msgid "Set the background image"
+msgstr "Définir l'image d'arrière-plan"
+
+#: ../../view/theme/redbasic/php/config.php:117
+msgid "Set the background color of items"
+msgstr "Définir la couleur de fond des contributions"
+
+#: ../../view/theme/redbasic/php/config.php:118
+msgid "Set the background color of comments"
+msgstr "Couleur de fond des commentaires"
+
+#: ../../view/theme/redbasic/php/config.php:119
+msgid "Set the border color of comments"
+msgstr "Couleur de la bordure des commentaires"
+
+#: ../../view/theme/redbasic/php/config.php:120
+msgid "Set the indent for comments"
+msgstr "Indentation des commentaires"
+
+#: ../../view/theme/redbasic/php/config.php:121
+msgid "Set the basic color for item icons"
+msgstr "Définir la couleur de base pour les icônes des éléments"
+
+#: ../../view/theme/redbasic/php/config.php:122
+msgid "Set the hover color for item icons"
+msgstr "Définir la couleur de survol des icônes des éléments"
+
+#: ../../view/theme/redbasic/php/config.php:123
+msgid "Set font-size for the entire application"
+msgstr "Définir la taille de police pour l'application entière"
+
+#: ../../view/theme/redbasic/php/config.php:125
+msgid "Set font-color for posts and comments"
+msgstr "Définir font-colour pour les contributions et commentaires"
+
+#: ../../view/theme/redbasic/php/config.php:126
+msgid "Set radius of corners"
+msgstr "Définir le rayon des arrondis"
+
+#: ../../view/theme/redbasic/php/config.php:127
+msgid "Set shadow depth of photos"
+msgstr "Définir la profondeur de l'ombre des photos"
+
+#: ../../view/theme/redbasic/php/config.php:128
+msgid "Set maximum width of conversation regions"
+msgstr "Définir la largeur maximale des conversations"
+
+#: ../../view/theme/redbasic/php/config.php:129
+msgid "Center conversation regions"
+msgstr "Emplacement de la conversation - Centrer"
+
+#: ../../view/theme/redbasic/php/config.php:130
+msgid "Set minimum opacity of nav bar - to hide it"
+msgstr "Définir l'opacité minimum du bandeau de navigation - pour le cacher"
+
+#: ../../view/theme/redbasic/php/config.php:131
+msgid "Set size of conversation author photo"
+msgstr "Définir la taille de la photo de l'auteur d'une conversation"
+
+#: ../../view/theme/redbasic/php/config.php:132
+msgid "Set size of followup author photos"
+msgstr "Définir la taille de la photo de l'auteur d'une réponse"
+
+#: ../../view/theme/redbasic/php/config.php:133
+msgid "Sloppy photo albums"
+msgstr "Albums photo \"en biais\""
+
+#: ../../view/theme/redbasic/php/config.php:133
+msgid "Are you a clean desk or a messy desk person?"
+msgstr "Vous êtes plutôt \"bureau bien rangé\" ou \"gros foutoir\"?"
-#: ../../boot.php:1232
+#: ../../boot.php:1296
#, php-format
msgid "Update %s failed. See error logs."
-msgstr "La mise-à-jour %s a échoué. Merci de consulter les journaux d'erreur."
+msgstr "La mise à jour %s a échoué. Merci de consulter les journaux d'erreur."
-#: ../../boot.php:1235
+#: ../../boot.php:1299
#, php-format
msgid "Update Error at %s"
-msgstr "Erreur de mise-à-jour sur %s"
+msgstr "Erreur de mise à jour sur %s"
-#: ../../boot.php:1399
+#: ../../boot.php:1473
msgid ""
"Create an account to access services and applications within the Red Matrix"
msgstr "Créez un compte pour pouvoir accéder aux services et applications de la Matrice Red"
-#: ../../boot.php:1427
+#: ../../boot.php:1501
msgid "Password"
msgstr "Mot de passe"
-#: ../../boot.php:1428
+#: ../../boot.php:1502
msgid "Remember me"
msgstr "Se souvenir de moi"
-#: ../../boot.php:1433
+#: ../../boot.php:1507
msgid "Forgot your password?"
msgstr "Mot de passe oublié?"
-#: ../../boot.php:1498
+#: ../../boot.php:1572
msgid "permission denied"
msgstr "permission refusée"
-#: ../../boot.php:1499
+#: ../../boot.php:1573
msgid "Got Zot?"
-msgstr "T'as Zot?"
+msgstr "Authentification magique a échouée. Êtes-vous toujours connecté à votre HUB?"
-#: ../../boot.php:1899
+#: ../../boot.php:2003
msgid "toggle mobile"
msgstr "(dés)activer mobile"
diff --git a/view/fr/passchanged_eml.tpl b/view/fr/passchanged_eml.tpl
index 0d94be3c2..7c4e3d7bb 100644
--- a/view/fr/passchanged_eml.tpl
+++ b/view/fr/passchanged_eml.tpl
@@ -1,20 +1,19 @@
-Dear {{$username}},
- Your password has been changed as requested. Please retain this
-information for your records (or change your password immediately to
-something that you will remember).
+Cher {{$username}},
+ Votre mot de passe a bien été réinitialisé.
+Veuillez conserver cette information (ou changer immédiatement ce mot de passe temporaire).
-Your login details are as follows:
+Voici les détails de connexion:
-Site Location: {{$siteurl}}
-Login Name: {{$email}}
-Password: {{$new_password}}
+Emplacement du site:⇥{{$siteurl}}
+Utilisateur:⇥{{$email}}
+Mot de passe:⇥{{$new_password}}
-You may change that password from your account settings page after logging in.
+Vous pouvez changer ce mot de passe à partir des réglages du profil après vous être connecté.
-Sincerely,
- {{$sitename}} Administrator
+Sincèrement,
+ L'administrateur {{$sitename}}
-
+ \ No newline at end of file
diff --git a/view/fr/register_open_eml.tpl b/view/fr/register_open_eml.tpl
index 4b397201c..46390bc9d 100644
--- a/view/fr/register_open_eml.tpl
+++ b/view/fr/register_open_eml.tpl
@@ -1,19 +1,18 @@
-An account has been created at {{$sitename}} for this email address.
-The login details are as follows:
+Un compte a été créé sur {{$sitename}} avec cette adresse de courriel.
+Voici les détails de connexion:
-Site Location: {{$siteurl}}
-Login: {{$email}}
-Password: (the password which was provided during registration)
+Emplacement du site:⇥{{$siteurl}}
+Utilisateur:⇥{{$email}}
+Mot de passe: (le mot de passe qui a été spécifié lors de l'enregistrement)
-If this account was created without your knowledge and is not desired, you may
-visit this site and reset the password. This will allow you to remove the
-account from the links on the Settings page, and we
-apologise for any inconvenience.
+Si ce compte a été créé sans votre accord, vous pouvez visiter ce site et réinitialiser le mot de passe.
+Ceci vous permettra de supprimer le compte à partir de la page des réglages du profil.
+Veuillez accepter nos excuses pour tous les désagréments engendrés.
-Thank you and welcome to {{$sitename}}.
+Merci et bienvenue sur {{$sitename}}.
-Sincerely,
- {{$sitename}} Administrator
+Sincèrement,
+ L'administrateur {{$sitename}}
-
+ \ No newline at end of file
diff --git a/view/fr/register_verify_eml.tpl b/view/fr/register_verify_eml.tpl
index 85d9a12d3..9d2be027c 100644
--- a/view/fr/register_verify_eml.tpl
+++ b/view/fr/register_verify_eml.tpl
@@ -1,25 +1,24 @@
-A new user registration request was received at {{$sitename}} which requires
-your approval.
+Une demande d'enregistrement pour un nouvel utilisateur a été reçue par {{$sitename}} qui requiert
+votre accord.
-The login details are as follows:
+Voici les détails de connexion:
-Site Location: {{$siteurl}}
-Login Name: {{$email}}
-IP Address: {{$details}}
+Emplacement du site:⇥{{$siteurl}}
+Utilisateur:⇥{{$email}}
+Adresse IP: {{$details}}
-To approve this request please visit the following link:
+Pour confirmer votre accord, veuillez suivre le lien suivant:
{{$siteurl}}/regmod/allow/{{$hash}}
-To deny the request and remove the account, please visit:
+Pour supprimer ce compte, veuillez visiter:
{{$siteurl}}/regmod/deny/{{$hash}}
-Thank you.
-
+Merci.
diff --git a/view/fr/register_verify_member.tpl b/view/fr/register_verify_member.tpl
new file mode 100644
index 000000000..3461c56a0
--- /dev/null
+++ b/view/fr/register_verify_member.tpl
@@ -0,0 +1,24 @@
+
+Merci de vous être enregistré sur {{$sitename}}.
+
+Voici les détails de connexion:
+
+Emplacement du site:⇥{{$siteurl}}
+Utilisateur:⇥{{$email}}
+
+Connectez-vous avec le mot de passe que vous avez choisi au moment de l'enregistrement.
+
+Nous avons besoin de vérifier votre adresse de courriel avant d’autoriser votre accès au réseau.
+
+Si vous avez enregistré ce compte, suivre ce lien:
+
+{{$siteurl}}/regver/allow/{{$hash}}
+
+
+Pour supprimer ce compte, veuillez visiter:
+
+
+{{$siteurl}}/regver/deny/{{$hash}}
+
+
+Merci.
diff --git a/view/fr/request_notify_eml.tpl b/view/fr/request_notify_eml.tpl
deleted file mode 100644
index d01b8ff27..000000000
--- a/view/fr/request_notify_eml.tpl
+++ /dev/null
@@ -1,17 +0,0 @@
-
-Dear {{$myname}},
-
-You have just received a connection request at {{$sitename}}
-
-from '{{$requestor}}'.
-
-You may visit their profile at {{$url}}.
-
-Please login to your site to view the complete introduction
-and approve or ignore/cancel the request.
-
-{{$siteurl}}
-
-Regards,
-
- {{$sitename}} administrator
diff --git a/view/fr/strings.php b/view/fr/strings.php
index 2de927cf7..03a6a0fee 100644
--- a/view/fr/strings.php
+++ b/view/fr/strings.php
@@ -5,118 +5,52 @@ function string_plural_select_fr($n){
return ($n > 1);;
}}
;
-$a->strings["Categories"] = "Catégories";
-$a->strings["Connect"] = "Relier";
-$a->strings["Ignore/Hide"] = "Ignorer/Cacher";
-$a->strings["Suggestions"] = "Suggestion";
-$a->strings["See more..."] = "Voir plus...";
-$a->strings["You have %1$.0f of %2$.0f allowed connections."] = "Vous avez %1$.0f des %2$.0f relations autorisées.";
-$a->strings["Add New Connection"] = "Ajouter une nouvelle relation";
-$a->strings["Enter the channel address"] = "Adresse du canal";
-$a->strings["Example: bob@example.com, http://example.com/barbara"] = "Exemple&nbsp;: bob@exemple.com, http://exemple.com/barbara";
-$a->strings["Notes"] = "Notes";
-$a->strings["Save"] = "Sauver";
-$a->strings["Remove term"] = "Retirer le terme";
-$a->strings["Saved Searches"] = "Recherches sauvées";
-$a->strings["add"] = "ajouter";
-$a->strings["Saved Folders"] = "Dossiers sauvegardés";
-$a->strings["Everything"] = "Tout";
-$a->strings["Archives"] = "Archives";
-$a->strings["Refresh"] = "Actualiser";
-$a->strings["Me"] = "Moi";
-$a->strings["Best Friends"] = "Mes meilleurs amis";
-$a->strings["Friends"] = "Amis";
-$a->strings["Co-workers"] = "Mes collègues";
-$a->strings["Former Friends"] = "Mes anciens amis";
-$a->strings["Acquaintances"] = "Mes accointances";
-$a->strings["Everybody"] = "Tout le monde";
-$a->strings["Account settings"] = "Compte";
-$a->strings["Channel settings"] = "Canal";
-$a->strings["Additional features"] = "Fonc. supplémentaires";
-$a->strings["Feature settings"] = "Fonctionnalités";
-$a->strings["Display settings"] = "Affichage";
-$a->strings["Connected apps"] = "Applications";
-$a->strings["Export channel"] = "Exporter canal";
-$a->strings["Automatic Permissions (Advanced)"] = "Permissions automatiques (avancé)";
-$a->strings["Premium Channel Settings"] = "Canal Premium";
-$a->strings["Channel Sources"] = "Canaux sources";
+$a->strings["Cannot locate DNS info for database server '%s'"] = "Impossible de trouver les infos DNS du serveur de base de données '%s'";
+$a->strings["Profile Photos"] = "Photos du profil";
+$a->strings["%1\$s is now friends with %2\$s"] = "%1\$s et %2\$s sont maintenant amis.";
+$a->strings["Sharing notification from Diaspora network"] = "Partage de vos notifications du réseau Diaspora";
+$a->strings["photo"] = "photo";
+$a->strings["status"] = "le statut";
+$a->strings["%1\$s likes %2\$s's %3\$s"] = "%1\$s aime %3\$s de %2\$s";
+$a->strings["Attachments:"] = "Pièces jointes:";
+$a->strings["Embedded content"] = "Contenu imbriqué";
+$a->strings["Embedding disabled"] = "Imbrication désactivée";
+$a->strings["created a new post"] = "a publié";
+$a->strings["commented on %s's post"] = "a commenté la publication de %s";
+$a->strings["Site Admin"] = "Administrateur";
+$a->strings["Bookmarks"] = "Favoris";
+$a->strings["Address Book"] = "Carnet d'adresses";
+$a->strings["Login"] = "Connexion";
+$a->strings["Channel Select"] = "Changer de canal";
+$a->strings["Matrix"] = "Matrice";
$a->strings["Settings"] = "Réglages";
-$a->strings["Check Mail"] = "Vérifier courriel";
-$a->strings["New Message"] = "Nouveau message";
-$a->strings["Chat Rooms"] = "Salons";
-$a->strings["Visible to everybody"] = "Visible par tous";
-$a->strings["show"] = "montrer";
-$a->strings["don't show"] = "cacher";
-$a->strings[" and "] = "et";
-$a->strings["public profile"] = "profil public";
-$a->strings["%1\$s changed %2\$s to &ldquo;%3\$s&rdquo;"] = "%1\$s a changé %2\$s en &ldquo;%3\$s&rdquo;";
-$a->strings["Visit %1\$s's %2\$s"] = "Visiter %1\$s de %2\$s";
-$a->strings["%1\$s has an updated %2\$s, changing %3\$s."] = "%1\$s a mis-à-jour %2\$s, modifiant %3\$s.";
-$a->strings["Logout"] = "Déconnexion";
-$a->strings["End this session"] = "Mettre fin à la session";
-$a->strings["Home"] = "Canal";
-$a->strings["Your posts and conversations"] = "Vos publications et conversations";
-$a->strings["View Profile"] = "Voir profil";
-$a->strings["Your profile page"] = "Votre profil";
-$a->strings["Edit Profiles"] = "Éditer profils";
-$a->strings["Manage/Edit profiles"] = "Gérer/éditer profils";
-$a->strings["Photos"] = "Photos";
-$a->strings["Your photos"] = "Vos photos";
$a->strings["Files"] = "Fichiers";
-$a->strings["Your files"] = "Vos fichiers";
-$a->strings["Chat"] = "Discussion";
-$a->strings["Your chatrooms"] = "Vos salons";
-$a->strings["Events"] = "Événements";
-$a->strings["Your events"] = "Vos événements";
-$a->strings["Bookmarks"] = "Marque-pages";
-$a->strings["Your bookmarks"] = "Vos marque-pages";
$a->strings["Webpages"] = "Pages web";
-$a->strings["Your webpages"] = "Vos pages web";
-$a->strings["Login"] = "Connexion";
-$a->strings["Sign in"] = "Connexion";
-$a->strings["%s - click to logout"] = "%s - cliquer pour déconnecter";
-$a->strings["Click to authenticate to your home hub"] = "S'authentifier auprès de son hébergement";
-$a->strings["Home Page"] = "Page d'accueil";
-$a->strings["Register"] = "Inscription";
-$a->strings["Create an account"] = "Créer un compte";
-$a->strings["Help"] = "Aide";
-$a->strings["Help and documentation"] = "Aide et documentation";
-$a->strings["Apps"] = "Applications";
-$a->strings["Addon applications, utilities, games"] = "Applications supplémentaires, jeux, utilitaires";
-$a->strings["Search"] = "Recherche";
-$a->strings["Search site content"] = "Recherche parmi le contenu du site";
-$a->strings["Directory"] = "Annuaire";
-$a->strings["Channel Locator"] = "Localisation de canaux";
-$a->strings["Matrix"] = "Matrice";
-$a->strings["Your matrix"] = "Votre matrice";
-$a->strings["Mark all matrix notifications seen"] = "Marquer toutes les notifications de la matrice comme vues";
$a->strings["Channel Home"] = "Mon canal";
-$a->strings["Channel home"] = "Mon canal";
-$a->strings["Mark all channel notifications seen"] = "Marquer toutes les notifications du canal comme vues";
-$a->strings["Intros"] = "Introductions";
-$a->strings["New Connections"] = "Nouvelles relations";
-$a->strings["Notices"] = "Notifications";
-$a->strings["Notifications"] = "Notifications";
-$a->strings["See all notifications"] = "Voir toutes les notifications";
-$a->strings["Mark all system notifications seen"] = "Marquer toutes les notifications système comme vues";
+$a->strings["Profile"] = "Profil";
+$a->strings["Photos"] = "Photos";
+$a->strings["Events"] = "Événements";
+$a->strings["Directory"] = "Annuaire";
+$a->strings["Help"] = "Aide";
$a->strings["Mail"] = "Messages";
-$a->strings["Private mail"] = "Messages privés";
-$a->strings["See all private messages"] = "Voir tous les messages privés";
-$a->strings["Mark all private messages seen"] = "Marquer tous les messages privés comme vus";
-$a->strings["Inbox"] = "Boîte de réception";
-$a->strings["Outbox"] = "Boîte d'envoi";
-$a->strings["Event Calendar"] = "Calendrier des événements";
-$a->strings["See all events"] = "Voir tous les événements";
-$a->strings["Mark all events seen"] = "Marquer tous les événements comme vus";
-$a->strings["Channel Select"] = "Changer de canal";
-$a->strings["Manage Your Channels"] = "Gérer vos canaux";
-$a->strings["Account/Channel Settings"] = "Compte/Canal";
-$a->strings["Connections"] = "Relations";
-$a->strings["Manage/Edit Friends and Connections"] = "Gérer les amis et relations";
-$a->strings["Admin"] = "Admin";
-$a->strings["Site Setup and Configuration"] = "Configuration du site";
-$a->strings["Nothing new here"] = "Rien de neuf ici";
-$a->strings["Please wait..."] = "Merci de patienter...";
+$a->strings["Mood"] = "Humeur";
+$a->strings["Poke"] = "Cogner";
+$a->strings["Chat"] = "Clavardage";
+$a->strings["Search"] = "Recherche";
+$a->strings["Probe"] = "Sonder";
+$a->strings["Suggest"] = "Suggérer";
+$a->strings["Random Channel"] = "Un canal au hasard";
+$a->strings["Invite"] = "Invitation";
+$a->strings["Features"] = "Fonctionalités";
+$a->strings["Language"] = "Langue";
+$a->strings["Post"] = "Envoyer";
+$a->strings["Profile Photo"] = "Photo du profil";
+$a->strings["Update"] = "Mise à jour";
+$a->strings["Install"] = "Installer";
+$a->strings["Purchase"] = "Acheter";
+$a->strings["Edit"] = "Éditer";
+$a->strings["Delete"] = "Supprimer";
+$a->strings["Unknown"] = "Inconnu";
$a->strings["prev"] = "préc.";
$a->strings["first"] = "premier";
$a->strings["last"] = "dernier";
@@ -129,38 +63,40 @@ $a->strings["%d Connection"] = array(
1 => "%d relations",
);
$a->strings["View Connections"] = "Voir les relations";
-$a->strings["poke"] = "tapoter";
-$a->strings["poked"] = "tapoté";
+$a->strings["Save"] = "Sauver";
+$a->strings["poke"] = "cogner";
+$a->strings["poked"] = "a cogné";
$a->strings["ping"] = "solliciter";
-$a->strings["pinged"] = "sollicité";
-$a->strings["prod"] = "aiguillonner";
-$a->strings["prodded"] = "aiguillonné";
-$a->strings["slap"] = "baffer";
-$a->strings["slapped"] = "baffé";
+$a->strings["pinged"] = "a sollicité";
+$a->strings["prod"] = "encourager";
+$a->strings["prodded"] = "a encouragé";
+$a->strings["slap"] = "gifler";
+$a->strings["slapped"] = "a giflé";
$a->strings["finger"] = "pointer";
-$a->strings["fingered"] = "pointé";
-$a->strings["rebuff"] = "rejetter";
-$a->strings["rebuffed"] = "rejetté";
-$a->strings["happy"] = "bonheur";
+$a->strings["fingered"] = "a pointé";
+$a->strings["rebuff"] = "rejeter";
+$a->strings["rebuffed"] = "a rejeté";
+$a->strings["happy"] = "heureux";
$a->strings["sad"] = "triste";
-$a->strings["mellow"] = "mélancolie";
-$a->strings["tired"] = "fatigue";
-$a->strings["perky"] = "impertinence";
-$a->strings["angry"] = "colère";
-$a->strings["stupified"] = "stupeur";
-$a->strings["puzzled"] = "perplexité";
-$a->strings["interested"] = "intérêt";
-$a->strings["bitter"] = "amertune";
-$a->strings["cheerful"] = "entrain";
-$a->strings["alive"] = "vivacité";
-$a->strings["annoyed"] = "agaçement";
-$a->strings["anxious"] = "anxiété";
-$a->strings["cranky"] = "mauvais poil";
-$a->strings["disturbed"] = "perturbation";
-$a->strings["frustrated"] = "frustration";
-$a->strings["motivated"] = "motivation";
-$a->strings["relaxed"] = "détente";
-$a->strings["surprised"] = "surprise";
+$a->strings["mellow"] = "mélancolique";
+$a->strings["tired"] = "fatigué";
+$a->strings["perky"] = "impertinent";
+$a->strings["angry"] = "colérique";
+$a->strings["stupified"] = "stupéfié";
+$a->strings["puzzled"] = "perplexe";
+$a->strings["interested"] = "intéressé";
+$a->strings["bitter"] = "amer";
+$a->strings["cheerful"] = "joyeux";
+$a->strings["alive"] = "énergique";
+$a->strings["annoyed"] = "agacé";
+$a->strings["anxious"] = "anxieux";
+$a->strings["cranky"] = "énervé";
+$a->strings["disturbed"] = "perturbé";
+$a->strings["frustrated"] = "frustré";
+$a->strings["depressed"] = "déprimé";
+$a->strings["motivated"] = "motivé";
+$a->strings["relaxed"] = "détendu";
+$a->strings["surprised"] = "surpris";
$a->strings["Monday"] = "Lundi";
$a->strings["Tuesday"] = "Mardi";
$a->strings["Wednesday"] = "Mercredi";
@@ -182,17 +118,15 @@ $a->strings["November"] = "Novembre";
$a->strings["December"] = "Décembre";
$a->strings["unknown.???"] = "inconnu.???";
$a->strings["bytes"] = "octets";
-$a->strings["remove category"] = "suppr. catégorie";
-$a->strings["remove from file"] = "supprimer du fichier";
+$a->strings["remove category"] = "supprimer la catégorie";
+$a->strings["remove from file"] = "retirer du fichier";
$a->strings["Click to open/close"] = "Cliquer pour ouvrir/fermer";
-$a->strings["link to source"] = "lien vers source";
+$a->strings["Link to Source"] = "Lien vers la source";
$a->strings["Select a page layout: "] = "Choisir une mise en page&nbsp;:";
$a->strings["default"] = "défaut";
$a->strings["Page content type: "] = "Type de contenu&nbsp;:";
$a->strings["Select an alternate language"] = "Choisir une langue alternative";
-$a->strings["photo"] = "photo";
$a->strings["event"] = "événement";
-$a->strings["status"] = "le statut";
$a->strings["comment"] = "commentaire";
$a->strings["activity"] = "activité";
$a->strings["Design"] = "Conception";
@@ -200,71 +134,135 @@ $a->strings["Blocks"] = "Blocs";
$a->strings["Menus"] = "Menus";
$a->strings["Layouts"] = "Mises-en-page";
$a->strings["Pages"] = "Pages";
-$a->strings["Image/photo"] = "Image/photo";
-$a->strings["Encrypted content"] = "Contenu chiffré";
-$a->strings["QR code"] = "QR code";
-$a->strings["%1\$s wrote the following %2\$s %3\$s"] = "%1\$s a écrit %2\$s qui suit %3\$s";
-$a->strings["post"] = "l'article";
-$a->strings["$1 wrote:"] = "$1 a écrit&nbsp;:";
-$a->strings["New window"] = "Nouvelle fenêtre";
-$a->strings["Open the selected location in a different window or browser tab"] = "Ouvrir l'emplacement dans une fenêtre (ou un onglet) différent";
-$a->strings["General Features"] = "Fonctionnalités générales";
-$a->strings["Content Expiration"] = "Expiration de contenu";
-$a->strings["Remove posts/comments and/or private messages at a future time"] = "Supprimer les contributions/commentaires et/ou messages privés à un moment futur";
-$a->strings["Multiple Profiles"] = "Profils multiples";
-$a->strings["Ability to create multiple profiles"] = "Possibilité de créer plusieurs profils";
-$a->strings["Web Pages"] = "Pages web";
-$a->strings["Provide managed web pages on your channel"] = "Fournir des pages web, sous votre contrôle, sur votre canal";
-$a->strings["Private Notes"] = "Notes privées";
-$a->strings["Enables a tool to store notes and reminders"] = "Active un outil pour stocker notes et mémos";
-$a->strings["Extended Identity Sharing"] = "Partage d'identité étendue";
-$a->strings["Share your identity with all websites on the internet. When disabled, identity is only shared with sites in the matrix."] = "Partage votre identité avec tous les sites web du Monde. Si décoché, l'identité sera seulement partagée avec les sites de la matrice.";
-$a->strings["Expert Mode"] = "Mode expert";
-$a->strings["Enable Expert Mode to provide advanced configuration options"] = "Activer le mode expert pour accéder aux options avancées";
-$a->strings["Premium Channel"] = "Canal Premium";
-$a->strings["Allows you to set restrictions and terms on those that connect with your channel"] = "Vous permet d'appliquer des règles et restrictions aux relations de votre canal";
-$a->strings["Post Composition Features"] = "Fonctionnalités de composition";
-$a->strings["Richtext Editor"] = "Éditeur enrichi";
-$a->strings["Enable richtext editor"] = "Activer l'éditeur de texte enrichi";
-$a->strings["Post Preview"] = "Aperçu avant publication";
-$a->strings["Allow previewing posts and comments before publishing them"] = "Permettre de voir les publications/commentaires avant de les valider";
-$a->strings["Automatically import channel content from other channels or feeds"] = "Importe automatiquement le contenus d'autres canaux ou flux dans le canal en cours";
-$a->strings["Even More Encryption"] = "Encore plus de chiffrement";
-$a->strings["Allow optional encryption of content end-to-end with a shared secret key"] = "Permettre le chiffrement - optionnel - du contenu de bout-en-bout au moyen d'un secret partagé";
-$a->strings["Network and Stream Filtering"] = "Filtrage du réseau et des flux";
-$a->strings["Search by Date"] = "Chercher par date";
-$a->strings["Ability to select posts by date ranges"] = "Pouvoir choisir des publications par date";
-$a->strings["Collections Filter"] = "Filtre des collections";
-$a->strings["Enable widget to display Network posts only from selected collections"] = "Activer une boîte qui permet de filtrer les publications du réseau parmi les collections selectionnées";
-$a->strings["Save search terms for re-use"] = "Sauver des termes de recherche pour utilisation ultérieure";
-$a->strings["Network Personal Tab"] = "Onglet \"réseau personnel\"";
-$a->strings["Enable tab to display only Network posts that you've interacted on"] = "Activer un onglet affichant seulement les publications du réseau sur lesquelles vous êtes intervenu";
-$a->strings["Network New Tab"] = "Onglet \"nouveautés réseau\"";
-$a->strings["Enable tab to display all new Network activity"] = "Activer un onglet avec toute activité récente sur le réseau";
-$a->strings["Affinity Tool"] = "Gérer l'affinité";
-$a->strings["Filter stream activity by depth of relationships"] = "Filtrer le flux d'activité en fonction de la profondeur des relations";
-$a->strings["Suggest Channels"] = "Suggérer des canaux";
-$a->strings["Show channel suggestions"] = "Montrer les suggestions de canaux";
-$a->strings["Post/Comment Tools"] = "Gérer les publications/commentaires";
-$a->strings["Edit Sent Posts"] = "Éditer les publications envoyées";
-$a->strings["Edit and correct posts and comments after sending"] = "Permettre d'éditer/corriger les publications/commentaires après envoi";
-$a->strings["Tagging"] = "Marquage";
-$a->strings["Ability to tag existing posts"] = "Permettre de marquer les publications existantes";
-$a->strings["Post Categories"] = "Catégoriser les publications";
-$a->strings["Add categories to your posts"] = "Ajouter des catégories à vos publications";
-$a->strings["Ability to file posts under folders"] = "Permettre de classer les publications dans des dossiers";
-$a->strings["Dislike Posts"] = "Détester une publication";
-$a->strings["Ability to dislike posts/comments"] = "Pouvoir détester les publications/commentaires";
-$a->strings["Star Posts"] = "Mettre en avant les publications";
-$a->strings["Ability to mark special posts with a star indicator"] = "Pouvoir marquer certaines publications d'une étoile";
-$a->strings["Tag Cloud"] = "Nuage de tags";
-$a->strings["Provide a personal tag cloud on your channel page"] = "Afficher un nuage de vos tags sur votre canal";
-$a->strings["Unknown | Not categorised"] = "Inconnu / Non-classé";
-$a->strings["Block immediately"] = "Bloquer directement";
-$a->strings["Shady, spammer, self-marketer"] = "Douteux, spammeur, donne dans l'auto-promotion";
-$a->strings["Known to me, but no opinion"] = "M'est connu, n'ai pas d'opinion à son sujet";
-$a->strings["OK, probably harmless"] = "OK, probablement anodin";
-$a->strings["Reputable, has my trust"] = "Réputé, je lui fais confiance";
+$a->strings["New Page"] = "Nouvelle page";
+$a->strings["View"] = "Voir";
+$a->strings["Preview"] = "Aperçu";
+$a->strings["Actions"] = "Actions";
+$a->strings["Page Link"] = "Lien vers la page";
+$a->strings["Title"] = "Titre";
+$a->strings["Created"] = "Créé";
+$a->strings["Edited"] = "Édité";
+$a->strings["The form security token was not correct. This probably happened because the form has been opened for too long (>3 hours) before submitting it."] = "Le formulaire n'est plus sécurisé, probablement parce qu'il est ouvert depuis trop longtemps (plus de 3 heures).";
+$a->strings["Not a valid email address"] = "Ce n'est pas une adresse de courriel valide";
+$a->strings["Your email domain is not among those allowed on this site"] = "Votre domaine de courriel ne fait pas partie de ceux autorisés par ce site";
+$a->strings["Your email address is already registered at this site."] = "Votre adresse de courriel est déjà inscrite sur ce site.";
+$a->strings["An invitation is required."] = "Une invitation est requise.";
+$a->strings["Invitation could not be verified."] = "Votre invitation n'a pas pu être vérifiée.";
+$a->strings["Please enter the required information."] = "Merci d'entrer les informations requises.";
+$a->strings["Failed to store account information."] = "Impossible de stocker les informations liées au compte.";
+$a->strings["Registration confirmation for %s"] = "Confirmation de l'enregistrement pour %s";
+$a->strings["Registration request at %s"] = "Demande d'inscription sur %s";
+$a->strings["Administrator"] = "Administrateur";
+$a->strings["your registration password"] = "votre mot de passe d'inscription";
+$a->strings["Registration details for %s"] = "Détails de l'inscription à %s";
+$a->strings["Account approved."] = "Compte approuvé.";
+$a->strings["Registration revoked for %s"] = "Inscription révoquée pour %s";
+$a->strings["Account verified. Please login."] = "Compte vérifié. Veuillez vous connecter.";
+$a->strings["Permission denied."] = "Permission refusée.";
+$a->strings["Image exceeds website size limit of %lu bytes"] = "L'image dépasse la taille limite de %lu octets";
+$a->strings["Image file is empty."] = "L'image est vide.";
+$a->strings["Unable to process image"] = "Impossible de traiter l'image";
+$a->strings["Photo storage failed."] = "Le stockage de l'image a échoué.";
+$a->strings["Photo Albums"] = "Albums photo";
+$a->strings["Upload New Photos"] = "Ajouter des photos";
+$a->strings["Visible to your default audience"] = "Visible pour vos contacts seulement.";
+$a->strings["Show"] = "Voir plus";
+$a->strings["Don't show"] = "Cacher";
+$a->strings["Permissions"] = "Permissions";
+$a->strings["Close"] = "Fermer";
+$a->strings[" and "] = " et ";
+$a->strings["public profile"] = "profil public";
+$a->strings["%1\$s changed %2\$s to &ldquo;%3\$s&rdquo;"] = "%1\$s a changé %2\$s en &ldquo;%3\$s&rdquo;";
+$a->strings["Visit %1\$s's %2\$s"] = "Visiter %1\$s sur %2\$s";
+$a->strings["%1\$s has an updated %2\$s, changing %3\$s."] = "%1\$s a mis à jour %2\$s, modifiant %3\$s.";
+$a->strings["Public Timeline"] = "Fil public";
+$a->strings["Item was not found."] = "Élément introuvable.";
+$a->strings["No source file."] = "Pas de fichier source.";
+$a->strings["Cannot locate file to replace"] = "Impossible de trouver le fichier à remplacer.";
+$a->strings["Cannot locate file to revise/update"] = "Impossible de trouver le fichier à corriger/mettre à jour";
+$a->strings["File exceeds size limit of %d"] = "Le fichier dépasse la taille limite de %d";
+$a->strings["You have reached your limit of %1$.0f Mbytes attachment storage."] = "Vous avez atteint votre limite de %1$.0f méga-octets autorisés pour le stockage des pièces-jointes";
+$a->strings["File upload failed. Possible system limit or action terminated."] = "Envoi du fichier impossible. Limite système ou action avortée.";
+$a->strings["Stored file could not be verified. Upload failed."] = "Le fichier stocké n'a pu être vérifié. Envoi impossible.";
+$a->strings["Path not available."] = "Chemin non disponible.";
+$a->strings["Empty pathname"] = "Chemin vide";
+$a->strings["duplicate filename or path"] = "doublon de chemin ou de fichier";
+$a->strings["Path not found."] = "Chemin introuvable.";
+$a->strings["mkdir failed."] = "mkdir a échoué.";
+$a->strings["database storage failed."] = "l'écriture dans la BD a échoué";
+$a->strings["Click here to upgrade."] = "Cliquez ici pour mettre à jour.";
+$a->strings["This action exceeds the limits set by your subscription plan."] = "Cette action outrepasserait les limites prévues par votre forfait.";
+$a->strings["This action is not available under your subscription plan."] = "Cette action n'est pas possible avec la formule choisie.";
+$a->strings["l F d, Y \\@ g:i A"] = "l d F Y \\à G\\hi";
+$a->strings["Starts:"] = "Début&nbsp;:";
+$a->strings["Finishes:"] = "Fin&nbsp;:";
+$a->strings["Location:"] = "Emplacement&nbsp;:";
+$a->strings["Logout"] = "Déconnexion";
+$a->strings["End this session"] = "Mettre fin à la session";
+$a->strings["Home"] = "Canal";
+$a->strings["Your posts and conversations"] = "Vos publications et conversations";
+$a->strings["View Profile"] = "Voir profil";
+$a->strings["Your profile page"] = "Votre profil";
+$a->strings["Edit Profiles"] = "Éditer les profils";
+$a->strings["Manage/Edit profiles"] = "Gérer/éditer les profils";
+$a->strings["Edit Profile"] = "Éditer le profil";
+$a->strings["Edit your profile"] = "Éditer votre profil";
+$a->strings["Your photos"] = "Vos photos";
+$a->strings["Your files"] = "Vos fichiers";
+$a->strings["Your chatrooms"] = "Vos salons";
+$a->strings["Your bookmarks"] = "Vos favoris";
+$a->strings["Your webpages"] = "Vos pages web";
+$a->strings["Sign in"] = "Connexion";
+$a->strings["%s - click to logout"] = "%s - cliquer ici pour déconnecter";
+$a->strings["Click to authenticate to your home hub"] = "S'authentifier auprès de votre hub";
+$a->strings["Home Page"] = "Page d'accueil";
+$a->strings["Register"] = "S'inscrire";
+$a->strings["Create an account"] = "Créer un compte";
+$a->strings["Help and documentation"] = "Aide et documentation";
+$a->strings["Apps"] = "Applications";
+$a->strings["Applications, utilities, links, games"] = "Applications, utilitaires, liens, jeux";
+$a->strings["Search site content"] = "Rechercher parmi le contenu du site";
+$a->strings["Channel Locator"] = "Localisation de canaux";
+$a->strings["Your matrix"] = "Votre matrice";
+$a->strings["Mark all matrix notifications seen"] = "Marquer toutes les notifications de la matrice comme vues";
+$a->strings["Channel home"] = "Mon canal";
+$a->strings["Mark all channel notifications seen"] = "Marquer toutes les notifications du canal comme vues";
+$a->strings["Connections"] = "Relations";
+$a->strings["Notices"] = "Notifications";
+$a->strings["Notifications"] = "Notifications";
+$a->strings["See all notifications"] = "Voir toutes les notifications";
+$a->strings["Mark all system notifications seen"] = "Marquer toutes les notifications système comme vues";
+$a->strings["Private mail"] = "Messages privés";
+$a->strings["See all private messages"] = "Voir tous les messages privés";
+$a->strings["Mark all private messages seen"] = "Marquer tous les messages privés comme vus";
+$a->strings["Inbox"] = "Boîte de réception";
+$a->strings["Outbox"] = "Boîte d'envoi";
+$a->strings["New Message"] = "Nouveau message";
+$a->strings["Event Calendar"] = "Calendrier des événements";
+$a->strings["See all events"] = "Voir tous les événements";
+$a->strings["Mark all events seen"] = "Marquer tous les événements comme vus";
+$a->strings["Manage Your Channels"] = "Gérer vos canaux";
+$a->strings["Account/Channel Settings"] = "Réglages du Compte/Canal";
+$a->strings["Admin"] = "Administrateur";
+$a->strings["Site Setup and Configuration"] = "Configuration du site";
+$a->strings["Nothing new here"] = "Aucun nouveau contenu trouvé";
+$a->strings["Please wait..."] = "Merci de patienter...";
+$a->strings["%1\$s's bookmarks"] = "Favoris de %1\$s";
+$a->strings["Tags"] = "Étiquettes";
+$a->strings["Keywords"] = "Mots-clefs";
+$a->strings["have"] = "ont";
+$a->strings["has"] = "a";
+$a->strings["want"] = "veulent";
+$a->strings["wants"] = "veut";
+$a->strings["like"] = "aime";
+$a->strings["likes"] = "aiment";
+$a->strings["dislike"] = "déteste";
+$a->strings["dislikes"] = "détestent";
+$a->strings["__ctx:noun__ Like"] = array(
+ 0 => "J'aime",
+ 1 => "J'aime",
+);
+$a->strings["Default"] = "Défaut";
$a->strings["Frequently"] = "Constamment";
$a->strings["Hourly"] = "Chaque heure";
$a->strings["Twice daily"] = "Deux fois par jour";
@@ -281,6 +279,33 @@ $a->strings["Zot!"] = "Zot!";
$a->strings["LinkedIn"] = "Linkedin";
$a->strings["XMPP/IM"] = "XMPP/IM";
$a->strings["MySpace"] = "MySpace";
+$a->strings["%d invitation available"] = array(
+ 0 => "%d invitation disponible",
+ 1 => "%d invitations disponibles",
+);
+$a->strings["Advanced"] = "Avancé";
+$a->strings["Find Channels"] = "Trouver des canaux";
+$a->strings["Enter name or interest"] = "Saisir nom ou centre d'intérêt";
+$a->strings["Connect/Follow"] = "Ajouter/Suivre";
+$a->strings["Examples: Robert Morgenstein, Fishing"] = "Exemples: Robert Morgenstein, Course à pieds";
+$a->strings["Find"] = "Trouver";
+$a->strings["Channel Suggestions"] = "Canaux suggérés";
+$a->strings["Random Profile"] = "Un profil au hasard";
+$a->strings["Invite Friends"] = "Inviter des amis";
+$a->strings["Exammple: name=fred and country=iceland"] = "Exemple: name=fred and country=iceland";
+$a->strings["Advanced Find"] = "Recherche avancée";
+$a->strings["Saved Folders"] = "Dossiers sauvegardés";
+$a->strings["Everything"] = "Tout";
+$a->strings["Categories"] = "Catégories";
+$a->strings["%d connection in common"] = array(
+ 0 => "%d relation en commun",
+ 1 => "%d relations en commun",
+);
+$a->strings["show more"] = "montrer plus";
+$a->strings["This event has been added to your calendar."] = "Cet événement a été ajouté à votre calendrier.";
+$a->strings["Invalid data packet"] = "Paquet de données invalide";
+$a->strings["Unable to verify channel signature"] = "Impossible de vérifier la signature du canal";
+$a->strings["Unable to verify site signature for %s"] = "Impossible de vérifier la signature de site pour %s";
$a->strings["Miscellaneous"] = "Divers";
$a->strings["year"] = "année";
$a->strings["month"] = "mois";
@@ -299,74 +324,80 @@ $a->strings["minutes"] = "minutes";
$a->strings["second"] = "seconde";
$a->strings["seconds"] = "secondes";
$a->strings["%1\$d %2\$s ago"] = "il y a %1\$d %2\$s";
-$a->strings["Cannot locate DNS info for database server '%s'"] = "Impossible de trouver les infos DNS du serveur de DB '%s'";
-$a->strings["l F d, Y \\@ g:i A"] = "l d F Y \\à G\\hi";
-$a->strings["Starts:"] = "Début&nbsp;:";
-$a->strings["Finishes:"] = "Fin&nbsp;:";
-$a->strings["Location:"] = "Localisation&nbsp;:";
-$a->strings["A deleted group with this name was revived. Existing item permissions <strong>may</strong> apply to this group and any future members. If this is not what you intended, please create another group with a different name."] = "Un groupe supprimé portant ce nom a été ressuscité. Les permissions liées aux éléments existants <strong>peuvent</strong> s'appliquer au groupe et aux membres futurs. Si ce n'est pas ce que vous attendiez, merci de recréer un nouveau groupe avec un nom différent.";
-$a->strings["Default privacy group for new contacts"] = "Groupe de confidentialité par défaut pour les nouveaux contacts";
-$a->strings["All Channels"] = "Tous canaux";
-$a->strings["edit"] = "éditer";
-$a->strings["Collections"] = "Collections";
-$a->strings["Edit collection"] = "Éditer collection";
-$a->strings["Create a new collection"] = "Créer collection";
-$a->strings["Channels not in any collection"] = "Canaux dans aucune collection";
-$a->strings["Delete this item?"] = "Supprimer cet élément?";
-$a->strings["Comment"] = "Commenter";
-$a->strings["show more"] = "montrer plus";
-$a->strings["show fewer"] = "montrer moins";
-$a->strings["Password too short"] = "Mot de passe trop court";
-$a->strings["Passwords do not match"] = "Les mots de passe ne correspondent pas";
-$a->strings["everybody"] = "tout le monde";
-$a->strings["Secret Passphrase"] = "Phrase de passe secrète";
-$a->strings["Passphrase hint"] = "Indice pour la phrase de passe";
-$a->strings["timeago.prefixAgo"] = "timeago.prefixAgo";
-$a->strings["timeago.suffixAgo"] = "timeago.suffixAgo";
-$a->strings["ago"] = "auparavant";
-$a->strings["from now"] = "de maintenant";
-$a->strings["less than a minute"] = "moins d'une minute";
-$a->strings["about a minute"] = "environ une minute";
-$a->strings["%d minutes"] = "%d minutes";
-$a->strings["about an hour"] = "environ une heure";
-$a->strings["about %d hours"] = "environ %d heures";
-$a->strings["a day"] = "un jour";
-$a->strings["%d days"] = "%d jours";
-$a->strings["about a month"] = "environ un mois";
-$a->strings["%d months"] = "%d mois";
-$a->strings["about a year"] = "environ un an";
-$a->strings["%d years"] = "%d années";
-$a->strings[" "] = " ";
-$a->strings["timeago.numbers"] = "timeago.numbers";
-$a->strings["No recipient provided."] = "Pas de destinataire.";
-$a->strings["[no subject]"] = "[sans objet]";
-$a->strings["Unable to determine sender."] = "Impossible de déterminer l'émetteur.";
-$a->strings["Stored post could not be verified."] = "Le message stocké n'a pas pu être vérifié.";
-$a->strings["Profile Photos"] = "Photos du profil";
-$a->strings["Permission denied."] = "Permission refusée.";
-$a->strings["Item was not found."] = "Élément introuvable.";
-$a->strings["No source file."] = "Pas de fichier source.";
-$a->strings["Cannot locate file to replace"] = "Impossible de trouver le fichier à remplacer.";
-$a->strings["Cannot locate file to revise/update"] = "Impossible de trouver le fichier à corriger/mettre-à-jour";
-$a->strings["File exceeds size limit of %d"] = "Le fichier dépasse la taille limite de %d";
-$a->strings["You have reached your limit of %1$.0f Mbytes attachment storage."] = "Vous avez atteint votre limite de %1$.0f méga-octets autorisés pour le stockage des pièces-jointes";
-$a->strings["File upload failed. Possible system limit or action terminated."] = "Envoi du fichier impossible. Limite système ou action avortée.";
-$a->strings["Stored file could not be verified. Upload failed."] = "Le fichier stocké n'a pu être vérifié. Envoi impossible.";
-$a->strings["Path not available."] = "Chemin non disponible.";
-$a->strings["Empty pathname"] = "Chemin vide";
-$a->strings["duplicate filename or path"] = "doublon de chemin ou de fichier";
-$a->strings["Path not found."] = "Chemin introuvable.";
-$a->strings["mkdir failed."] = "mkdir a échoué.";
-$a->strings["database storage failed."] = "le stockage en BD a échoué";
-$a->strings["%1\$s's bookmarks"] = "Marque-pages de %1\$s";
+$a->strings["%1\$s's birthday"] = "Anniversaire de %1\$s";
+$a->strings["Happy Birthday %1\$s"] = "Joyeux Anniversaire %1\$s";
+$a->strings["Sort Options"] = "Options de tri";
+$a->strings["Alphabetic"] = "Alphabétique";
+$a->strings["Reverse Alphabetic"] = "Alphabétique inversé";
+$a->strings["Newest to Oldest"] = "Anté-chronologique";
+$a->strings["Enable Safe Search"] = "Activer la recherche sûre";
+$a->strings["Disable Safe Search"] = "Désactiver la recherche sûre";
+$a->strings["Safe Mode"] = "Mode sûr";
+$a->strings["Red Matrix Notification"] = "Notification Matrice Rouge";
+$a->strings["redmatrix"] = "Matrice Rouge";
+$a->strings["Thank You,"] = "Merci,";
+$a->strings["%s Administrator"] = "l'administrateur de %s";
+$a->strings["%s <!item_type!>"] = "%s <!item_type!>";
+$a->strings["[Red:Notify] New mail received at %s"] = "[Red:Notification] Nouveau message reçu sur %s";
+$a->strings["%1\$s, %2\$s sent you a new private message at %3\$s."] = "%1\$s, vous avez reçu un message privé sur %3\$s, de la part de %2\$s.";
+$a->strings["%1\$s sent you %2\$s."] = "%1\$s vous a envoyé %2\$s.";
+$a->strings["a private message"] = "un message privé";
+$a->strings["Please visit %s to view and/or reply to your private messages."] = "Merci de visiter %s pour voir et/ou répondre à vos messages privés.";
+$a->strings["%1\$s, %2\$s commented on [zrl=%3\$s]a %4\$s[/zrl]"] = "%1\$s, %2\$s a commenté sur [zrl=%3\$s]%4\$s[/zrl]";
+$a->strings["%1\$s, %2\$s commented on [zrl=%3\$s]%4\$s's %5\$s[/zrl]"] = "%1\$s, %2\$s a commenté sur [zrl=%3\$s]%5\$s de %4\$s[/zrl]";
+$a->strings["%1\$s, %2\$s commented on [zrl=%3\$s]your %4\$s[/zrl]"] = "%1\$s, %2\$s a commenté [zrl=%3\$s]votre %4\$s[/zrl]";
+$a->strings["[Red:Notify] Comment to conversation #%1\$d by %2\$s"] = "[Red:Notification] Commentaire de %2\$s sur conversation #%1\$d";
+$a->strings["%1\$s, %2\$s commented on an item/conversation you have been following."] = "%1\$s, %2\$s a commenté un élément de conversation que vous suivez.";
+$a->strings["Please visit %s to view and/or reply to the conversation."] = "Merci de visiter %s pour voir et/ou répondre sur cette conversation.";
+$a->strings["[Red:Notify] %s posted to your profile wall"] = "[Red:Notification] %s a publié sur votre profil";
+$a->strings["%1\$s, %2\$s posted to your profile wall at %3\$s"] = "%1\$s, %2\$s a publié sur votre profil à %3\$s";
+$a->strings["%1\$s, %2\$s posted to [zrl=%3\$s]your wall[/zrl]"] = "%1\$s, %2\$s a publié sur [zrl=%3\$s]votre profil[/zrl]";
+$a->strings["[Red:Notify] %s tagged you"] = "[Red:Notification] %s vous a étiqueté";
+$a->strings["%1\$s, %2\$s tagged you at %3\$s"] = "%1\$s, vous avez été étiqueté sur %3\$s par %2\$s";
+$a->strings["%1\$s, %2\$s [zrl=%3\$s]tagged you[/zrl]."] = "%1\$s, %2\$s [zrl=%3\$s]vous a étiqueté[/zrl].";
+$a->strings["[Red:Notify] %1\$s poked you"] = "[Red:Notification] %1\$s vous a cogné";
+$a->strings["%1\$s, %2\$s poked you at %3\$s"] = "%1\$s, %2\$s vous a cogné sur %3\$s";
+$a->strings["%1\$s, %2\$s [zrl=%2\$s]poked you[/zrl]."] = "%1\$s, %2\$s [zrl=%2\$s]vous a cogné[/zrl].";
+$a->strings["[Red:Notify] %s tagged your post"] = "[Red:Notification] %s a étiqueté votre publication";
+$a->strings["%1\$s, %2\$s tagged your post at %3\$s"] = "%1\$s, %2\$s a étiqueté votre publication sur %3\$s";
+$a->strings["%1\$s, %2\$s tagged [zrl=%3\$s]your post[/zrl]"] = "%1\$s, %2\$s a étiqueté [zrl=%3\$s]votre publication[/zrl]";
+$a->strings["[Red:Notify] Introduction received"] = "[Red:Notification] Nouvelle introduction";
+$a->strings["%1\$s, you've received an new connection request from '%2\$s' at %3\$s"] = "%1\$s, vous avez reçu une demande de mise en relation de '%2\$s' sur %3\$s";
+$a->strings["%1\$s, you've received [zrl=%2\$s]a new connection request[/zrl] from %3\$s."] = "%1\$s, vous avez reçu [zrl=%2\$s]une demande de mise en relation[/zrl] de %3\$s.";
+$a->strings["You may visit their profile at %s"] = "Vous pouvez visiter leur profil sur %s";
+$a->strings["Please visit %s to approve or reject the connection request."] = "Merci de visiter %s avant d'approuver (ou non) cette demande de relation.";
+$a->strings["[Red:Notify] Friend suggestion received"] = "[Red:Notification] Nouvelle suggestion d'amitié";
+$a->strings["%1\$s, you've received a friend suggestion from '%2\$s' at %3\$s"] = "%1\$s, vous avez reçu une suggestion de relation de '%2\$s' à %3\$s";
+$a->strings["%1\$s, you've received [zrl=%2\$s]a friend suggestion[/zrl] for %3\$s from %4\$s."] = "%1\$s, avez reçu %3\$s comme [zrl=%2\$s]une suggestion de relation[/zrl] de %4\$s.";
+$a->strings["Name:"] = "Nom&nbsp;:";
+$a->strings["Photo:"] = "Photo&nbsp;:";
+$a->strings["Please visit %s to approve or reject the suggestion."] = "Merci de visiter %s pour donner suite (ou non) à cette suggestion.";
+$a->strings["[Red:Notify]"] = "[Red:Notification]";
+$a->strings["parent"] = "retour";
+$a->strings["Collection"] = "Collection";
+$a->strings["Principal"] = "Principal";
+$a->strings["Addressbook"] = "Carnet d'adresse";
+$a->strings["Calendar"] = "Calendrier";
+$a->strings["Schedule Inbox"] = "Calendrier - Message entrants";
+$a->strings["Schedule Outbox"] = "Calendrier - Message sortants";
+$a->strings["%1\$s used"] = "%1\$s utilisé";
+$a->strings["%1\$s used of %2\$s (%3\$s&#37;)"] = "%1\$s utilisé de %2\$s (%3\$s&#37;)";
+$a->strings["Name"] = "Nom";
+$a->strings["Type"] = "Type";
+$a->strings["Size"] = "Taille";
+$a->strings["Last Modified"] = "Modifié le";
+$a->strings["Total"] = "Total";
+$a->strings["Create new folder"] = "Nouveau dossier";
+$a->strings["Create"] = "Créer";
+$a->strings["Upload file"] = "Téléverser un fichier";
+$a->strings["Upload"] = "Envoyer";
$a->strings["channel"] = "canal";
-$a->strings["%1\$s likes %2\$s's %3\$s"] = "%1\$s aime %3\$s de %2\$s";
$a->strings["%1\$s doesn't like %2\$s's %3\$s"] = "%1\$s déteste %3\$s de %2\$s";
-$a->strings["%1\$s is now connected with %2\$s"] = "%1\$s est désormais relié à %2\$s";
-$a->strings["%1\$s poked %2\$s"] = "%1\$s a tapoté %2\$s";
-$a->strings["%1\$s is currently %2\$s"] = "%1\$s est actuellement %2\$s";
+$a->strings["%1\$s is now connected with %2\$s"] = "%1\$s ajoute %2\$s à ses relations";
+$a->strings["%1\$s poked %2\$s"] = "%1\$s a cogné %2\$s";
+$a->strings["__ctx:mood__ %1\$s is %2\$s"] = "%1\$s est %2\$s";
$a->strings["Select"] = "Sélectionner";
-$a->strings["Delete"] = "Supprimer";
+$a->strings["Private Message"] = "Message Privé";
$a->strings["Message is verified"] = "Message vérifié";
$a->strings["View %s's profile @ %s"] = "Voir le profil de %s @ %s";
$a->strings["Categories:"] = "Catégories&nbsp;:";
@@ -383,10 +414,9 @@ $a->strings["View Source"] = "Voir source";
$a->strings["Follow Thread"] = "Suivre discussion";
$a->strings["View Status"] = "Voir état";
$a->strings["View Photos"] = "Voir photos";
-$a->strings["Matrix Activity"] = "Activité de la matrice";
+$a->strings["Matrix Activity"] = "Activité sur la matrice";
$a->strings["Edit Contact"] = "Éditer contact";
-$a->strings["Send PM"] = "Message privé";
-$a->strings["Poke"] = "Tapoter";
+$a->strings["Send PM"] = "Envoyer un Message Privé";
$a->strings["%s likes this."] = "%s aime ça.";
$a->strings["%s doesn't like this."] = "%s déteste ça.";
$a->strings["<span %1\$s>%2\$d people</span> like this."] = array(
@@ -407,28 +437,28 @@ $a->strings["%s don't like this."] = "%s déteste ça.";
$a->strings["Visible to <strong>everybody</strong>"] = "Visible par <strong>tout le monde</strong>";
$a->strings["Please enter a link URL:"] = "Merci d'entrer l'URL d'un lien&nbsp;:";
$a->strings["Please enter a video link/URL:"] = "Merci d'entrer l'URL d'une video&nbsp;:";
-$a->strings["Please enter an audio link/URL:"] = "Merci d'entrer l'URL d'un contenu audio&nsbp;:";
+$a->strings["Please enter an audio link/URL:"] = "Merci d'entrer l'URL d'un contenu audio&nbsp;:";
$a->strings["Tag term:"] = "Étiquette&nbsp;:";
-$a->strings["Save to Folder:"] = "Classer dans Dossier&nbsp;:";
+$a->strings["Save to Folder:"] = "Classer dans le dossier&nbsp;:";
$a->strings["Where are you right now?"] = "Où êtes-vous présentement?";
$a->strings["Expires YYYY-MM-DD HH:MM"] = "Expire YYYY-MM-DD HH:MM";
-$a->strings["Preview"] = "Aperçu";
$a->strings["Share"] = "Partager";
-$a->strings["Page link title"] = "Titre de la page liée";
-$a->strings["Upload photo"] = "Téléverser photo";
-$a->strings["upload photo"] = "téléverser photo";
-$a->strings["Attach file"] = "Attacher fichier";
-$a->strings["attach file"] = "attacher fichier";
+$a->strings["Page link title"] = "Titre du lien vers la page";
+$a->strings["Post as"] = "Publier en tant que";
+$a->strings["Upload photo"] = "Téléverser une photo";
+$a->strings["upload photo"] = "téléverser une photo";
+$a->strings["Attach file"] = "Attacher un fichier";
+$a->strings["attach file"] = "attacher un fichier";
$a->strings["Insert web link"] = "Insérer lien web";
$a->strings["web link"] = "lien web";
$a->strings["Insert video link"] = "Insérer lien vidéo";
$a->strings["video link"] = "lien vidéo";
-$a->strings["Insert audio link"] = "Insérer lien audio";
+$a->strings["Insert audio link"] = "Insérer un lien audio";
$a->strings["audio link"] = "lien audio";
-$a->strings["Set your location"] = "Spécifier votre localisation";
-$a->strings["set location"] = "spécifier localisation";
-$a->strings["Clear browser location"] = "Nettoyer la localisation du navigateur";
-$a->strings["clear location"] = "nettoyer localisation";
+$a->strings["Set your location"] = "Spécifier votre emplacement géographique";
+$a->strings["set location"] = "spécifier l'emplacement géographique";
+$a->strings["Clear browser location"] = "Nettoyer l'emplacement géographique du navigateur";
+$a->strings["clear location"] = "nettoyer l'emplacement géographique";
$a->strings["Set title"] = "Spécifier le titre";
$a->strings["Categories (comma-separated list)"] = "Catégories (séparées par des virgules)";
$a->strings["Permission settings"] = "Permissions";
@@ -439,9 +469,11 @@ $a->strings["Set expiration date"] = "Définir la date d'expiration";
$a->strings["Encrypt text"] = "Chiffrer le texte";
$a->strings["OK"] = "Ok";
$a->strings["Cancel"] = "Annuler";
-$a->strings["Commented Order"] = "Dans l'ordre des commentaires";
+$a->strings["Discover"] = "À découvrir";
+$a->strings["Imported public streams"] = "Flux publics importés";
+$a->strings["Commented Order"] = "Commentaires Récents";
$a->strings["Sort by Comment Date"] = "Trier par date de dernier commentaire";
-$a->strings["Posted Order"] = "Dans l'ordre des publications";
+$a->strings["Posted Order"] = "Publications Récentes";
$a->strings["Sort by Post Date"] = "Trier par date de publication";
$a->strings["Personal"] = "Personnel";
$a->strings["Posts that mention or involve you"] = "Publications qui vous mentionnent ou vous concernent d'une manière ou d'une autre";
@@ -449,36 +481,128 @@ $a->strings["New"] = "Nouveautés";
$a->strings["Activity Stream - by date"] = "Flux d'activité - par date";
$a->strings["Starred"] = "Mis en avant";
$a->strings["Favourite Posts"] = "Publications préférées";
-$a->strings["Spam"] = "Spam";
+$a->strings["Spam"] = "Indésirable";
$a->strings["Posts flagged as SPAM"] = "Publications marquées comme indésirables";
$a->strings["Channel"] = "Canal";
$a->strings["Status Messages and Posts"] = "Messages d'état et contributions";
$a->strings["About"] = "À propos";
$a->strings["Profile Details"] = "Détails du profil";
-$a->strings["Photo Albums"] = "Albums photo";
$a->strings["Files and Storage"] = "Fichiers et Stockage";
-$a->strings["Chatrooms"] = "Salons";
-$a->strings["Events and Calendar"] = "Événements et agenda";
-$a->strings["Saved Bookmarks"] = "Marque-pages sauvegardés";
+$a->strings["Chatrooms"] = "Salons de clavardage";
+$a->strings["Saved Bookmarks"] = "Favoris sauvegardés";
$a->strings["Manage Webpages"] = "Gérer les pages web";
+$a->strings["General Features"] = "Fonctionnalités générales";
+$a->strings["Content Expiration"] = "Expiration de contenu";
+$a->strings["Remove posts/comments and/or private messages at a future time"] = "Supprimer les contributions/commentaires et/ou messages privés plus tard";
+$a->strings["Multiple Profiles"] = "Profils multiples";
+$a->strings["Ability to create multiple profiles"] = "Possibilité de créer plusieurs profils";
+$a->strings["Advanced Profiles"] = "Profils Avancés";
+$a->strings["Additional profile sections and selections"] = "Sections additionnelles du profil";
+$a->strings["Profile Import/Export"] = "Importer/Exporter le profil";
+$a->strings["Save and load profile details across sites/channels"] = "Distribuer les détails du profil sur la matrice.";
+$a->strings["Web Pages"] = "Pages web";
+$a->strings["Provide managed web pages on your channel"] = "Fournir des pages web, sous votre contrôle, sur votre canal";
+$a->strings["Private Notes"] = "Notes privées";
+$a->strings["Enables a tool to store notes and reminders"] = "Active un outil pour stocker notes et mémos";
+$a->strings["Extended Identity Sharing"] = "Partage d'identité étendue";
+$a->strings["Share your identity with all websites on the internet. When disabled, identity is only shared with sites in the matrix."] = "Partage votre identité avec tous les sites web du Monde. Si décoché, l'identité sera seulement partagée avec les sites de la matrice.";
+$a->strings["Expert Mode"] = "Mode expert";
+$a->strings["Enable Expert Mode to provide advanced configuration options"] = "Activer le mode expert pour accéder aux options avancées";
+$a->strings["Premium Channel"] = "Canal VIP";
+$a->strings["Allows you to set restrictions and terms on those that connect with your channel"] = "Vous permet d'appliquer des règles et restrictions aux relations de votre canal";
+$a->strings["Post Composition Features"] = "Fonctionnalités de composition";
+$a->strings["Use Markdown"] = "Utiliser Markdown";
+$a->strings["Allow use of \"Markdown\" to format posts"] = "Authoriser l'usage de \"Markdown\" pour le format des partages";
+$a->strings["Post Preview"] = "Aperçu avant publication";
+$a->strings["Allow previewing posts and comments before publishing them"] = "Permettre de prévisualiser les publications/commentaires";
+$a->strings["Channel Sources"] = "Canaux sources";
+$a->strings["Automatically import channel content from other channels or feeds"] = "Importe automatiquement le contenus d'autres canaux ou flux dans le canal en cours";
+$a->strings["Even More Encryption"] = "Encore plus de chiffrement";
+$a->strings["Allow optional encryption of content end-to-end with a shared secret key"] = "Permettre le chiffrement - optionnel - du contenu de bout-en-bout au moyen d'un secret partagé";
+$a->strings["Network and Stream Filtering"] = "Filtrage du réseau et des flux";
+$a->strings["Search by Date"] = "Chercher par date";
+$a->strings["Ability to select posts by date ranges"] = "Pouvoir choisir des publications par date";
+$a->strings["Collections Filter"] = "Filtre des collections";
+$a->strings["Enable widget to display Network posts only from selected collections"] = "Activer une boîte qui permet de filtrer les publications du réseau parmi les collections selectionnées";
+$a->strings["Saved Searches"] = "Recherches sauvées";
+$a->strings["Save search terms for re-use"] = "Sauver des termes de recherche pour utilisation ultérieure";
+$a->strings["Network Personal Tab"] = "Onglet \"réseau personnel\"";
+$a->strings["Enable tab to display only Network posts that you've interacted on"] = "Activer un onglet affichant seulement les publications du réseau sur lesquelles vous êtes intervenu";
+$a->strings["Network New Tab"] = "Onglet \"nouveautés réseau\"";
+$a->strings["Enable tab to display all new Network activity"] = "Activer un onglet avec toute activité récente sur le réseau";
+$a->strings["Affinity Tool"] = "Gérer l'affinité";
+$a->strings["Filter stream activity by depth of relationships"] = "Filtrer le flux d'activité en fonction de la profondeur des relations";
+$a->strings["Suggest Channels"] = "Suggérer des canaux";
+$a->strings["Show channel suggestions"] = "Montrer les suggestions de canaux";
+$a->strings["Post/Comment Tools"] = "Gérer les publications/commentaires";
+$a->strings["Edit Sent Posts"] = "Éditer les publications envoyées";
+$a->strings["Edit and correct posts and comments after sending"] = "Permettre d'éditer/corriger les publications/commentaires après envoi";
+$a->strings["Tagging"] = "Étiquettes";
+$a->strings["Ability to tag existing posts"] = "Permettre de marquer les publications existantes";
+$a->strings["Post Categories"] = "Catégoriser les publications";
+$a->strings["Add categories to your posts"] = "Ajouter des catégories à vos publications";
+$a->strings["Ability to file posts under folders"] = "Permettre de classer les publications dans des dossiers";
+$a->strings["Dislike Posts"] = "Détester les publications";
+$a->strings["Ability to dislike posts/comments"] = "Pouvoir détester les publications/commentaires";
+$a->strings["Star Posts"] = "Mettre en avant les publications";
+$a->strings["Ability to mark special posts with a star indicator"] = "Pouvoir marquer certaines publications d'une étoile";
+$a->strings["Tag Cloud"] = "Nuage de tags";
+$a->strings["Provide a personal tag cloud on your channel page"] = "Afficher un nuage de vos tags sur votre canal";
+$a->strings["Channel is blocked on this site."] = "Ce canal est bloqué sur ce site.";
+$a->strings["Channel location missing."] = "Emplacement du canal introuvable.";
+$a->strings["Response from remote channel was incomplete."] = "La réponse du canal distant était incomplète.";
+$a->strings["Channel was deleted and no longer exists."] = "Le canal a été supprimé et n'existe plus.";
+$a->strings["Channel discovery failed."] = "La tentative d'accéder au canal a échouée.";
+$a->strings["local account not found."] = "compte local introuvable.";
+$a->strings["Cannot connect to yourself."] = "Ne peut pas se connecter à vous.";
+$a->strings["Missing room name"] = "Il manque le nom du salon";
+$a->strings["Duplicate room name"] = "Un salon de ce nom existe déjà";
+$a->strings["Invalid room specifier."] = "Identifiant de salon invalide.";
+$a->strings["Room not found."] = "Salon introuvable.";
+$a->strings["Room is full"] = "Le salon est plein";
+$a->strings["Permission denied"] = "Accès refusé";
+$a->strings["(Unknown)"] = "(Inconnu)";
+$a->strings["Visible to anybody on the internet."] = "Visible à tout le monde sur internet.";
+$a->strings["Visible to you only."] = "Visible pour vous seulement.";
+$a->strings["Visible to anybody in this network."] = "Visible sur toute la Matrice.";
+$a->strings["Visible to anybody authenticated."] = "Visible aux utilisateurs authentifiés.";
+$a->strings["Visible to anybody on %s."] = "Visible pour tous sur %s.";
+$a->strings["Visible to all connections."] = "Visible pour tous les contacts.";
+$a->strings["Visible to approved connections."] = "Visible aux contacts approuvés.";
+$a->strings["Item not found."] = "Élément introuvable.";
+$a->strings["Collection not found."] = "Collection introuvable.";
+$a->strings["Collection is empty."] = "Collection vide.";
+$a->strings["Collection: %s"] = "Collection&nbsp;: %s";
+$a->strings["Connection: %s"] = "Relation&nbsp;: %s";
+$a->strings["Connection not found."] = "Relation introuvable.";
+$a->strings["A deleted group with this name was revived. Existing item permissions <strong>may</strong> apply to this group and any future members. If this is not what you intended, please create another group with a different name."] = "Un groupe supprimé portant ce nom a été ressuscité. Les permissions liées aux éléments existants <strong>peuvent</strong> s'appliquer au groupe et aux membres futurs. Si ce n'est pas ce que vous attendiez, merci de recréer un nouveau groupe avec un nom différent.";
+$a->strings["Default privacy group for new contacts"] = "Groupe de confidentialité par défaut pour les nouveaux contacts";
+$a->strings["All Channels"] = "Tous canaux";
+$a->strings["edit"] = "éditer";
+$a->strings["Collections"] = "Collections";
+$a->strings["Edit collection"] = "Éditer collection";
+$a->strings["Create a new collection"] = "Créer une nouvelle collection";
+$a->strings["Channels not in any collection"] = "Ces canaux ne sont dans aucune collection";
+$a->strings["add"] = "ajouter";
$a->strings["Unable to obtain identity information from database"] = "Impossible d'obtenir les données d'identité depuis la base de données";
$a->strings["Empty name"] = "Nom vide";
$a->strings["Name too long"] = "Nom trop long";
$a->strings["No account identifier"] = "Pas d'identifiant de compte";
$a->strings["Nickname is required."] = "Un surnom est requis.";
+$a->strings["Reserved nickname. Please choose another."] = "Pseudonyme réservé. Merci d'en choisir un autre.";
$a->strings["Nickname has unsupported characters or is already being used on this site."] = "Le surnom contient des caractères interdits, ou est déjà pris sur ce site.";
$a->strings["Unable to retrieve created identity"] = "Impossible de récupérer l'identité créée";
$a->strings["Default Profile"] = "Profil par défaut";
+$a->strings["Friends"] = "Amis";
$a->strings["Requested channel is not available."] = "Canal demandé non-disponible.";
-$a->strings[" Sorry, you don't have the permission to view this profile. "] = "Désolé, mais vous n'avez pas l'autorisation de voir ce profil.";
$a->strings["Requested profile is not available."] = "Profil demandé inaccessible.";
+$a->strings["Connect"] = "Ajouter";
$a->strings["Change profile photo"] = "Changer la photo du profil";
$a->strings["Profiles"] = "Profils";
-$a->strings["Manage/edit profiles"] = "Gérer/éditer profils";
+$a->strings["Manage/edit profiles"] = "Gérer/éditer les profils";
$a->strings["Create New Profile"] = "Créer un nouveau profil";
-$a->strings["Edit Profile"] = "Éditer profil";
$a->strings["Profile Image"] = "Image du profil";
-$a->strings["visible to everybody"] = "visible par tous";
+$a->strings["visible to everybody"] = "visible pour tous";
$a->strings["Edit visibility"] = "Éditer la visibilité";
$a->strings["Gender:"] = "Sexe&nbsp;:";
$a->strings["Status:"] = "État&nbsp;:";
@@ -492,8 +616,8 @@ $a->strings["Birthdays this week:"] = "Anniversaires cette semaine&nbsp;:";
$a->strings["[No description]"] = "[Pas de description]";
$a->strings["Event Reminders"] = "Rappels d'événements";
$a->strings["Events this week:"] = "Événements cette semaine&nbsp;:";
-$a->strings["Profile"] = "Profil";
$a->strings["Full Name:"] = "Nom complet&nbsp;:";
+$a->strings["Like this channel"] = "J'aime ce canal";
$a->strings["j F, Y"] = "j F Y";
$a->strings["j F"] = "j F";
$a->strings["Birthday:"] = "Date de naissance&nbsp;:";
@@ -501,7 +625,7 @@ $a->strings["Age:"] = "Age&nbsp;:";
$a->strings["for %1\$d %2\$s"] = "depuis %1\$d %2\$s";
$a->strings["Sexual Preference:"] = "Orientation sexuelle&nbsp;:";
$a->strings["Hometown:"] = "Ville natale&nbsp;:";
-$a->strings["Tags:"] = "Tags:";
+$a->strings["Tags:"] = "Étiquettes&nbsp;:";
$a->strings["Political Views:"] = "Opinions politiques&nbsp;:";
$a->strings["Religion:"] = "Religion&nbsp;:";
$a->strings["About:"] = "À propos&nbsp;:";
@@ -513,35 +637,86 @@ $a->strings["My other channels:"] = "Mes autres canaux&nbsp;:";
$a->strings["Musical interests:"] = "Goûts musicaux&nbsp;:";
$a->strings["Books, literature:"] = "Lectures, goûts littéraires&nbsp;:";
$a->strings["Television:"] = "Télévision&nbsp;:";
-$a->strings["Film/dance/culture/entertainment:"] = "Cinéma/danse/culture/divertissement&nsbp;:";
+$a->strings["Film/dance/culture/entertainment:"] = "Cinéma/danse/culture/divertissement&nbsp;:";
$a->strings["Love/Romance:"] = "Vie sentimentale/amoureuse&nbsp;:";
$a->strings["Work/employment:"] = "Travail&nbsp;:";
$a->strings["School/education:"] = "Cursus&nbsp;:";
-$a->strings["Private Message"] = "Message Privé";
-$a->strings["Edit"] = "Éditer";
-$a->strings["save to folder"] = "classer dans un dossier";
-$a->strings["add star"] = "mettre en avant";
-$a->strings["remove star"] = "ne plus mettre en avant";
-$a->strings["toggle star status"] = "(dé)marquer";
+$a->strings["Like this thing"] = "J'aime ceci";
+$a->strings["view full size"] = "pleine taille";
+$a->strings["Image/photo"] = "Image/photo";
+$a->strings["Encrypted content"] = "Contenu chiffré";
+$a->strings["QR code"] = "code QR";
+$a->strings["%1\$s wrote the following %2\$s %3\$s"] = "%1\$s a écrit %2\$s qui suit %3\$s";
+$a->strings["post"] = "l'article";
+$a->strings["$1 wrote:"] = "$1 a écrit&nbsp;:";
+$a->strings["No recipient provided."] = "Pas de destinataire.";
+$a->strings["[no subject]"] = "[sans objet]";
+$a->strings["Unable to determine sender."] = "Impossible de déterminer l'émetteur.";
+$a->strings["Stored post could not be verified."] = "Le message stocké n'a pas pu être vérifié.";
+$a->strings["System"] = "Système";
+$a->strings["Create Personal App"] = "Créer Votre Application";
+$a->strings["Edit Personal App"] = "Éditer Votre Application";
+$a->strings["Ignore/Hide"] = "Ignorer/Cacher";
+$a->strings["Suggestions"] = "Suggestion";
+$a->strings["See more..."] = "Voir plus...";
+$a->strings["You have %1$.0f of %2$.0f allowed connections."] = "Vous avez %1$.0f des %2$.0f relations autorisées.";
+$a->strings["Add New Connection"] = "Ajouter une nouvelle relation";
+$a->strings["Enter the channel address"] = "Adresse du canal";
+$a->strings["Example: bob@example.com, http://example.com/barbara"] = "Exemple&nbsp;: bob@exemple.com, http://exemple.com/barbara";
+$a->strings["Notes"] = "Notes";
+$a->strings["Remove term"] = "Retirer le terme";
+$a->strings["Archives"] = "Archives";
+$a->strings["Refresh"] = "Actualiser";
+$a->strings["Me"] = "Moi";
+$a->strings["Best Friends"] = "Mes meilleurs amis";
+$a->strings["Co-workers"] = "Mes collègues";
+$a->strings["Former Friends"] = "Mes anciens amis";
+$a->strings["Acquaintances"] = "Mes connaissances";
+$a->strings["Everybody"] = "Tout le monde";
+$a->strings["Account settings"] = "Réglages du Compte";
+$a->strings["Channel settings"] = "Réglages du Canal";
+$a->strings["Additional features"] = "Fonctions supplémentaires";
+$a->strings["Feature settings"] = "Extensions";
+$a->strings["Display settings"] = "Réglages d'affichage";
+$a->strings["Connected apps"] = "Applications connectées";
+$a->strings["Export channel"] = "Exporter le canal";
+$a->strings["Automatic Permissions (Advanced)"] = "Permissions automatiques (avancé)";
+$a->strings["Premium Channel Settings"] = "Canal VIP";
+$a->strings["Check Mail"] = "Vérifier le courrier";
+$a->strings["Chat Rooms"] = "Salons de clavardage";
+$a->strings["Bookmarked Chatrooms"] = "Salons favoris";
+$a->strings["Suggested Chatrooms"] = "Salons suggérés";
+$a->strings["Save to Folder"] = "Sauvegarder dans le dossier";
+$a->strings["View all"] = "Voir tout";
+$a->strings["__ctx:noun__ Dislike"] = array(
+ 0 => "Je déteste",
+ 1 => "Je déteste",
+);
+$a->strings["Add Star"] = "Ajouter Étoile";
+$a->strings["Remove Star"] = "Supprimer Étoile";
+$a->strings["Toggle Star Status"] = "Changer le Statut des Étoiles";
$a->strings["starred"] = "mis en avant";
-$a->strings["add tag"] = "étiquetter";
+$a->strings["Add Tag"] = "Ajouter une balise";
$a->strings["I like this (toggle)"] = "J'aime (oui/non)";
-$a->strings["like"] = "aime";
$a->strings["I don't like this (toggle)"] = "Je déteste (oui/non)";
-$a->strings["dislike"] = "déteste";
-$a->strings["Share this"] = "Partager ça";
-$a->strings["share"] = "partage";
+$a->strings["Share This"] = "Partager";
+$a->strings["share"] = "partager";
$a->strings["View %s's profile - %s"] = "Voir le profil de %s - %s";
$a->strings["to"] = "à";
$a->strings["via"] = "via";
$a->strings["Wall-to-Wall"] = "Mur-mur";
$a->strings["via Wall-To-Wall:"] = "par Mur-mur&nbsp;:";
-$a->strings["Bookmark Links"] = "Transformer les liens en marque-pages";
+$a->strings["Save Bookmarks"] = "Enregistrer les favoris";
+$a->strings["Add to Calendar"] = "Ajouter au Calendrier";
+$a->strings["__ctx:noun__ Likes"] = "Aimes";
+$a->strings["__ctx:noun__ Dislikes"] = "Détestes";
$a->strings["%d comment"] = array(
0 => "%d commentaire",
1 => "%d commentaires",
);
+$a->strings["[+] show all"] = "[+] voir plus";
$a->strings["This is you"] = "C'est vous";
+$a->strings["Comment"] = "Commenter";
$a->strings["Submit"] = "Envoyer";
$a->strings["Bold"] = "Gras";
$a->strings["Italic"] = "Italique";
@@ -551,10 +726,36 @@ $a->strings["Code"] = "Code";
$a->strings["Image"] = "Image";
$a->strings["Link"] = "Lien/URL";
$a->strings["Video"] = "Vidéo";
-$a->strings["Public Timeline"] = "Fil public";
-$a->strings["view full size"] = "pleine taille";
-$a->strings["created a new post"] = "a publié";
-$a->strings["commented on %s's post"] = "a commenté la publication de %s";
+$a->strings["Delete this item?"] = "Supprimer cet élément?";
+$a->strings["[-] show less"] = "[-] montrer moins";
+$a->strings["[+] expand"] = "[+] déplier";
+$a->strings["[-] collapse"] = "[-] replier";
+$a->strings["Password too short"] = "Mot de passe trop court";
+$a->strings["Passwords do not match"] = "Les mots de passe ne correspondent pas";
+$a->strings["everybody"] = "tout le monde";
+$a->strings["Secret Passphrase"] = "Phrase de passe secrète";
+$a->strings["Passphrase hint"] = "Indice pour la phrase de passe";
+$a->strings["Notice: Permissions have changed but have not yet been submitted."] = "Note&nbsp;: Les permissions ont changé, mais n'ont pas encore été soumises.";
+$a->strings["close all"] = "fermer tout";
+$a->strings["timeago.prefixAgo"] = "Il y a";
+$a->strings["timeago.prefixFromNow"] = "timeago.prefixFromNow";
+$a->strings["ago"] = " ";
+$a->strings["from now"] = "de maintenant";
+$a->strings["less than a minute"] = "moins d'une minute";
+$a->strings["about a minute"] = "environ une minute";
+$a->strings["%d minutes"] = "%d minutes";
+$a->strings["about an hour"] = "environ une heure";
+$a->strings["about %d hours"] = "environ %d heures";
+$a->strings["a day"] = "un jour";
+$a->strings["%d days"] = "%d jours";
+$a->strings["about a month"] = "environ un mois";
+$a->strings["%d months"] = "%d mois";
+$a->strings["about a year"] = "environ un an";
+$a->strings["%d years"] = "%d années";
+$a->strings[" "] = " ";
+$a->strings["timeago.numbers"] = "timeago.numbers";
+$a->strings["New window"] = "Nouvelle fenêtre";
+$a->strings["Open the selected location in a different window or browser tab"] = "Ouvrir l'emplacement dans une fenêtre (ou un onglet) différent";
$a->strings["Male"] = "Masculin";
$a->strings["Female"] = "Féminin";
$a->strings["Currently Male"] = "Actuellement masculin";
@@ -583,7 +784,7 @@ $a->strings["Fetish"] = "Fétichiste";
$a->strings["Oodles"] = "Une floppée";
$a->strings["Nonsexual"] = "Nonsexuel";
$a->strings["Single"] = "Célibataire";
-$a->strings["Lonely"] = "Esseulé";
+$a->strings["Lonely"] = "Solitaire";
$a->strings["Available"] = "Disponible";
$a->strings["Unavailable"] = "Indisponible";
$a->strings["Has crush"] = "A un béguin";
@@ -612,293 +813,38 @@ $a->strings["Uncertain"] = "Incertain";
$a->strings["It's complicated"] = "C'est compliqué";
$a->strings["Don't care"] = "S'en fiche";
$a->strings["Ask me"] = "Me demander";
-$a->strings["Missing room name"] = "Il manque le nom du salon";
-$a->strings["Duplicate room name"] = "Un salon de ce nom existe déjà";
-$a->strings["Invalid room specifier."] = "Identifiant de salon invalide.";
-$a->strings["Room not found."] = "Salon introuvable.";
-$a->strings["Room is full"] = "Le salon est plein";
-$a->strings["Tags"] = "Étiquettes";
-$a->strings["Keywords"] = "Mots-clefs";
-$a->strings["have"] = "ont";
-$a->strings["has"] = "a";
-$a->strings["want"] = "veulent";
-$a->strings["wants"] = "veut";
-$a->strings["likes"] = "aime";
-$a->strings["dislikes"] = "déteste";
$a->strings["Logged out."] = "Deconnecté.";
$a->strings["Failed authentication"] = "Échec de l'authentification";
$a->strings["Login failed."] = "Échec de la connexion.";
-$a->strings["Not a valid email address"] = "Ce n'est pas une adresse de courriel valide";
-$a->strings["Your email domain is not among those allowed on this site"] = "Votre domaine de courriel ne fait pas partie de ceux autorisés par ce site";
-$a->strings["Your email address is already registered at this site."] = "Votre adresse de courriel est déjà inscrite sur ce site.";
-$a->strings["An invitation is required."] = "Une invitation est requise.";
-$a->strings["Invitation could not be verified."] = "Votre invitation n'a pas pu être vérifiée.";
-$a->strings["Please enter the required information."] = "Merci d'entrer les informations requises.";
-$a->strings["Failed to store account information."] = "Impossible de stocker les informations liées au compte.";
-$a->strings["Registration request at %s"] = "Demande d'inscription sur %s";
-$a->strings["Administrator"] = "Administrateur";
-$a->strings["your registration password"] = "votre mot de passe d'inscription";
-$a->strings["Registration details for %s"] = "Détails de l'inscription à %s";
-$a->strings["Account approved."] = "Compte approuvé.";
-$a->strings["Registration revoked for %s"] = "Inscription révoquée pour %s";
-$a->strings["Sort Options"] = "Options de tri";
-$a->strings["Alphabetic"] = "Alphabétique";
-$a->strings["Reverse Alphabetic"] = "Alphabétique inversé";
-$a->strings["Newest to Oldest"] = "Anté-chronologique";
-$a->strings["Enable Safe Search"] = "Activer la recherche sûre";
-$a->strings["Disable Safe Search"] = "Désactiver la recherche sûre";
-$a->strings["Safe Mode"] = "Mode sûr";
-$a->strings["Red Matrix Notification"] = "Notification Red Matrix";
-$a->strings["redmatrix"] = "redmatrix";
-$a->strings["Thank You,"] = "Merci,";
-$a->strings["%s Administrator"] = "l'administrateur de %s";
-$a->strings["%s <!item_type!>"] = "%s <!item_type!>";
-$a->strings["[Red:Notify] New mail received at %s"] = "[Red:Notification] Nouveau message reçu sur %s";
-$a->strings["%1\$s, %2\$s sent you a new private message at %3\$s."] = "%1\$s, vous avez reçu un message privé sur %3\$s, de la part de %2\$s.";
-$a->strings["%1\$s sent you %2\$s."] = "%1\$s vous a envoyé %2\$s.";
-$a->strings["a private message"] = "un message privé";
-$a->strings["Please visit %s to view and/or reply to your private messages."] = "Merci de visiter %s pour voir et/ou répondre à vos messages privés.";
-$a->strings["%1\$s, %2\$s commented on [zrl=%3\$s]a %4\$s[/zrl]"] = "%1\$s, %2\$s a commenté [zrl=%3\$s]%4\$s[/zrl]";
-$a->strings["%1\$s, %2\$s commented on [zrl=%3\$s]%4\$s's %5\$s[/zrl]"] = "%1\$s, %2\$s a commenté [zrl=%3\$s]%5\$s de %4\$s[/zrl]";
-$a->strings["%1\$s, %2\$s commented on [zrl=%3\$s]your %4\$s[/zrl]"] = "%1\$s, %2\$s a commenté [zrl=%3\$s]votre %4\$s[/zrl]";
-$a->strings["[Red:Notify] Comment to conversation #%1\$d by %2\$s"] = "[Red:Notification] Commentaire de %2\$s sur conversation #%1\$d";
-$a->strings["%1\$s, %2\$s commented on an item/conversation you have been following."] = "%1\$s, %2\$s a commenté un élément de conversation que vous suivez.";
-$a->strings["Please visit %s to view and/or reply to the conversation."] = "Merci de visiter %s pour voir et/ou répondre sur cette conversation.";
-$a->strings["[Red:Notify] %s posted to your profile wall"] = "[Red:Notification] %s a publié sur votre profil";
-$a->strings["%1\$s, %2\$s posted to your profile wall at %3\$s"] = "%1\$s, %2\$s a posté sur votre profil à %3\$s";
-$a->strings["%1\$s, %2\$s posted to [zrl=%3\$s]your wall[/zrl]"] = "%1\$s, %2\$s a posté sur [zrl=%3\$s]votre profil[/zrl]";
-$a->strings["[Red:Notify] %s tagged you"] = "[Red:Notification] %s vous a marqué";
-$a->strings["%1\$s, %2\$s tagged you at %3\$s"] = "%1\$s, vous avez été étiqueté sur %3\$s par %2\$s";
-$a->strings["%1\$s, %2\$s [zrl=%3\$s]tagged you[/zrl]."] = "%1\$s, %2\$s [zrl=%3\$s]vous a tagué[/zrl].";
-$a->strings["[Red:Notify] %1\$s poked you"] = "[Red:Notification] %1\$s vous a tapoté";
-$a->strings["%1\$s, %2\$s poked you at %3\$s"] = "%1\$s, vous avez été tapoté/pointé/sollicité par %2\$s sur %3\$s";
-$a->strings["%1\$s, %2\$s [zrl=%2\$s]poked you[/zrl]."] = "%1\$s, %2\$s [zrl=%2\$s]vous a tapoté[/zrl].";
-$a->strings["[Red:Notify] %s tagged your post"] = "[Red:Notification] %s a marqué votre publication";
-$a->strings["%1\$s, %2\$s tagged your post at %3\$s"] = "%1\$s, %2\$s a tagué votre publication sur %3\$s";
-$a->strings["%1\$s, %2\$s tagged [zrl=%3\$s]your post[/zrl]"] = "%1\$s, %2\$s a tagué [zrl=%3\$s]votre publication[/zrl]";
-$a->strings["[Red:Notify] Introduction received"] = "[Red:Notification] Nouvelle introduction";
-$a->strings["%1\$s, you've received an introduction from '%2\$s' at %3\$s"] = "%1\$s, vous avez reçu une introduction de '%2\$s' sur %3\$s";
-$a->strings["%1\$s, you've received [zrl=%2\$s]an introduction[/zrl] from %3\$s."] = "%1\$s, vous avez reçu [zrl=%2\$s]une introduction[/zrl] de %3\$s.";
-$a->strings["You may visit their profile at %s"] = "Vous pouvez visiter leur profil sur %s";
-$a->strings["Please visit %s to approve or reject the introduction."] = "Merci de visiter %s avant d'approuver (ou non) son introduction.";
-$a->strings["[Red:Notify] Friend suggestion received"] = "[Red:Notification] Nouvelle suggestion d'amitié";
-$a->strings["%1\$s, you've received a friend suggestion from '%2\$s' at %3\$s"] = "%1\$s, vous avez reçu une suggestion de relation de '%2\$s' à %3\$s";
-$a->strings["%1\$s, you've received [zrl=%2\$s]a friend suggestion[/zrl] for %3\$s from %4\$s."] = "%1\$s, avez reçu %3\$s comme [zrl=%2\$s]une suggestion de relation[/zrl] de %4\$s.";
-$a->strings["Name:"] = "Nom&nbsp;:";
-$a->strings["Photo:"] = "Photo&nbsp;:";
-$a->strings["Please visit %s to approve or reject the suggestion."] = "Merci de visiter %s pour donner suite (ou non) à cette suggestion.";
-$a->strings["Image exceeds website size limit of %lu bytes"] = "L'image dépasse la taille limite de %lu octets";
-$a->strings["Image file is empty."] = "L'image est vide.";
-$a->strings["Unable to process image"] = "Impossible de traiter l'image";
-$a->strings["Photo storage failed."] = "Le stockage de l'image a échoué.";
-$a->strings["Upload New Photos"] = "Ajouter des photos";
-$a->strings["Edit File properties"] = "Éditer les propriétés du fichier";
-$a->strings["%d invitation available"] = array(
- 0 => "%d invitation disponible",
- 1 => "%d invitations disponibles",
-);
-$a->strings["Find Channels"] = "Trouver des canaux";
-$a->strings["Enter name or interest"] = "Saisir nom ou centre d'intérêt";
-$a->strings["Connect/Follow"] = "Relier/Suivre";
-$a->strings["Examples: Robert Morgenstein, Fishing"] = "Exemples: Robert Morgenstein, Course à pieds";
-$a->strings["Find"] = "Trouver";
-$a->strings["Channel Suggestions"] = "Canaux suggérés";
-$a->strings["Random Profile"] = "Un profil au hasard";
-$a->strings["Invite Friends"] = "Inviter des amis";
-$a->strings["%d connection in common"] = array(
- 0 => "%d relation en commun",
- 1 => "%d relations en commun",
-);
-$a->strings["New Page"] = "Nouvelle page";
-$a->strings["Click here to upgrade."] = "Cliquez ici pour mettre à jour.";
-$a->strings["This action exceeds the limits set by your subscription plan."] = "Cette action outrepasserait les limites prévues par votre forfait.";
-$a->strings["This action is not available under your subscription plan."] = "Cette action n'est pas possible avec la formule choisie.";
-$a->strings["Channel is blocked on this site."] = "Ce canal est bloqué sur ce site.";
-$a->strings["Channel location missing."] = "Localisation du canal manquante.";
-$a->strings["Channel discovery failed. Website may be down or misconfigured."] = "Découverte du canal impossible. Le site est peut-être en dérangement ou mal configuré.";
-$a->strings["Response from remote channel was not understood."] = "La réponse du canal distant n'a pas été comprise.";
-$a->strings["Response from remote channel was incomplete."] = "La réponse du canal distant était incomplète.";
-$a->strings["local account not found."] = "compte local introuvable.";
-$a->strings["Cannot connect to yourself."] = "Ne peut pas se connecter à vous.";
-$a->strings["The form security token was not correct. This probably happened because the form has been opened for too long (>3 hours) before submitting it."] = "Le formulaire n'est plus sécurisé, probablement parce qu'il est ouvert depuis trop longtemps (plus de 3 heures).";
-$a->strings["Default"] = "Défaut";
-$a->strings["Embedded content"] = "Contenu imbriqué";
-$a->strings["Embedding disabled"] = "Imbrication désactivée";
-$a->strings["Can view my \"public\" stream and posts"] = "Peut voir mon flux et mes publications \"publiques\"";
-$a->strings["Can view my \"public\" channel profile"] = "Peut voir mon le canal \"public\" de mon profil";
-$a->strings["Can view my \"public\" photo albums"] = "Peut voir mes albums photos \"publics\"";
-$a->strings["Can view my \"public\" address book"] = "Peut voir mes contacts \"publics\"";
-$a->strings["Can view my \"public\" file storage"] = "Peut voir mes fichiers \"publics\"";
-$a->strings["Can view my \"public\" pages"] = "Peut voir mes pages \"publiques\"";
+$a->strings["Can view my normal stream and posts"] = "Peut voir les publications sur mon canal et ses partages.";
+$a->strings["Can view my default channel profile"] = "Peut voir le profil du canal par défaut.";
+$a->strings["Can view my photo albums"] = "Peut voir mon album photos";
+$a->strings["Can view my connections"] = "Peut voir mes connections";
+$a->strings["Can view my file storage"] = "Peut voir mes fichiers en partage";
+$a->strings["Can view my webpages"] = "Peut voir mes sites-web";
$a->strings["Can send me their channel stream and posts"] = "Peut m'envoyer le flux et les publications de leur canal";
$a->strings["Can post on my channel page (\"wall\")"] = "Peut poster sur la page de mon canal (\"mur\")";
-$a->strings["Can comment on my posts"] = "Peut commenter mes publications";
+$a->strings["Can comment on or like my posts"] = "Peuvent commenter et/ou aimer mes publications";
$a->strings["Can send me private mail messages"] = "Peut m'envoyer des messages privés";
$a->strings["Can post photos to my photo albums"] = "Peut ajouter des photos à mes albums";
+$a->strings["Can like/dislike stuff"] = "Peuvent aimer/détester";
+$a->strings["Profiles and things other than posts/comments"] = "Profils et autres excluant les publications/commentaires.";
$a->strings["Can forward to all my channel contacts via post @mentions"] = "Peut faire suivre à tous les contacts du mon canal via @truc";
$a->strings["Advanced - useful for creating group forum channels"] = "Avancé - utile seulement pour les canaux de type \"forum/groupe\"";
$a->strings["Can chat with me (when available)"] = "Peut discuter avec moi (sous réserve de disponibilité)";
-$a->strings["Can write to my \"public\" file storage"] = "Peut écrire dans mon stockage \"public\" de fichiers";
-$a->strings["Can edit my \"public\" pages"] = "Peut éditer mes pages \"publiques\"";
-$a->strings["Can source my \"public\" posts in derived channels"] = "Peut utiliser mes contributions \"publiques\" comme source de canaux dérivés";
+$a->strings["Can write to my file storage"] = "Peut écrire dans mon partage de fichiers";
+$a->strings["Can edit my webpages"] = "Peut modifier mes sites-web";
+$a->strings["Can source my public posts in derived channels"] = "Peut rediriger mes publications publiques dans des canaux dérivés";
$a->strings["Somewhat advanced - very useful in open communities"] = "Plutôt avancé - très utile dans les communautés ouvertes";
-$a->strings["Can send me bookmarks"] = "Peut m'envoyer des marque-pages";
$a->strings["Can administer my channel resources"] = "Peut administrer les ressources de mon canal";
$a->strings["Extremely advanced. Leave this alone unless you know what you are doing"] = "Très avancé. Ne pas toucher, sauf si vous savez VRAIMENT ce que vous faites";
-$a->strings["Permission denied"] = "Accès refusé";
-$a->strings["Item not found."] = "Élément introuvable.";
-$a->strings["Collection not found."] = "Collection introuvable.";
-$a->strings["Collection is empty."] = "Collection vide.";
-$a->strings["Collection: %s"] = "Collection&nbsp;: %s";
-$a->strings["Connection: %s"] = "Relation&nbsp;: %s";
-$a->strings["Connection not found."] = "Relation introuvable.";
-$a->strings["Invalid data packet"] = "Paquet de données invalide";
-$a->strings["Unable to verify channel signature"] = "Impossible de vérifier la signature du canal";
-$a->strings["Unable to verify site signature for %s"] = "Impossible de vérifier la signature de site pour %s";
-$a->strings["No channel."] = "Pas de canal.";
-$a->strings["Common connections"] = "Relations communes";
-$a->strings["No connections in common."] = "Pas de relations en commun.";
-$a->strings["Event title and start time are required."] = "Un titre et une date de début sont requises pour l'événement.";
-$a->strings["l, F j"] = "l j F";
-$a->strings["Edit event"] = "Éditer événement";
-$a->strings["Create New Event"] = "Créer événement";
-$a->strings["Previous"] = "Précédent";
-$a->strings["Next"] = "Suivant";
-$a->strings["hour:minute"] = "heure:minute";
-$a->strings["Event details"] = "Détails de l'événement";
-$a->strings["Format is %s %s. Starting date and Title are required."] = "Le format est %s %s. Date de début et titre obligatoires.";
-$a->strings["Event Starts:"] = "L'événement débute&nbsp;:";
-$a->strings["Required"] = "Requis";
-$a->strings["Finish date/time is not known or not relevant"] = "Date/heure de fin inconnue ou sans objet";
-$a->strings["Event Finishes:"] = "L'événement termine&nbsp;:";
-$a->strings["Adjust for viewer timezone"] = "Ajuster au fuseau horaire du visiteur";
-$a->strings["Description:"] = "Description:";
-$a->strings["Title:"] = "Titre:";
-$a->strings["Share this event"] = "Partager cet événement";
-$a->strings["Thing updated"] = "Chose mise-à-jour";
-$a->strings["Object store: failed"] = "Stockage de l'objet&nbsp;: échec";
-$a->strings["Thing added"] = "Chose ajoutée";
-$a->strings["OBJ: %1\$s %2\$s %3\$s"] = "OBJ: %1\$s %2\$s %3\$s";
-$a->strings["Show Thing"] = "Montrer chose";
-$a->strings["item not found."] = "élément introuvable.";
-$a->strings["Edit Thing"] = "Éditer chose";
-$a->strings["Select a profile"] = "Choisissez un profil";
-$a->strings["Select a category of stuff. e.g. I ______ something"] = "Choisissez une catégorie de choses. p.ex. Je ______ quelque-chose";
-$a->strings["Post an activity"] = "Publier une activité";
-$a->strings["Only sends to viewers of the applicable profile"] = "";
-$a->strings["Name of thing e.g. something"] = "Nom de la chose, p.ex. quelque-chose";
-$a->strings["URL of thing (optional)"] = "URL de la chose (optionnel)";
-$a->strings["URL for photo of thing (optional)"] = "URL de l'image de la chose (optionnel)";
-$a->strings["Add Thing to your Profile"] = "Ajouter la chose à votre profil";
-$a->strings["Total invitation limit exceeded."] = "Limite du nombre total d'invitation dépassée.";
-$a->strings["%s : Not a valid email address."] = "%s&nbsp: adresse courriel invalide.";
-$a->strings["Please join us on Red"] = "Rejoignez-nous sur Red";
-$a->strings["Invitation limit exceeded. Please contact your site administrator."] = "Limite d'invitations dépassée. Merci de contacter l'administration de votre site.";
-$a->strings["%s : Message delivery failed."] = "%s&nbsp;: Échec dans la livraison du message.";
-$a->strings["%d message sent."] = array(
- 0 => "%d message envoyé.",
- 1 => "%d messages envoyés.",
-);
-$a->strings["You have no more invitations available"] = "Vous ne disposez plus d'aucune invitation";
-$a->strings["Send invitations"] = "Envoyer des invitations";
-$a->strings["Enter email addresses, one per line:"] = "Entrez les adresses de courriel, une par ligne&nbsp;:";
-$a->strings["Your message:"] = "Votre message&nbsp;:";
-$a->strings["You are cordially invited to join me and some other close friends on the Red Matrix - a revolutionary new decentralised communication and information tool."] = "Vous êtes cordialement invité à me rejoindre, ainsi que d'autres amis proches, sur la Matrice Red - un nouvel outil de communication acentré/décentralisé et révolutionnaire.";
-$a->strings["You will need to supply this invitation code: \$invite_code"] = "Vous devrez fournir ce code d'invitation&nbsp;: \$invite_code";
-$a->strings["Please visit my channel at"] = "Merci de me rendre visite sur";
-$a->strings["Once you have registered (on ANY Red Matrix site - they are all inter-connected), please connect with my Red Matrix channel address:"] = "Une fois inscrit (sur N'IMPORTE QUEL site Red Matrix - ils sont tous inter-connectés), merci de vous relier à l'adresse de mon canal&nbsp;:";
-$a->strings["Click the [Register] link on the following page to join."] = "Cliquez le lien [Inscription] sur la page suivante pour nous rejoindre.";
-$a->strings["For more information about the Red Matrix Project and why it has the potential to change the internet as we know it, please visit http://getzot.com"] = "Pour plus d'information sur le projet Red Matrix, et sa capacité à remodeler Internet, merci de visiter http://getzot.com";
-$a->strings["Unable to locate original post."] = "Impossible de localiser la publication initiale.";
-$a->strings["Empty post discarded."] = "Publication vide défaussée.";
-$a->strings["Executable content type not permitted to this channel."] = "Les contenus de type 'exécutable' ne sont pas autorisés sur ce canal.";
-$a->strings["System error. Post not saved."] = "Erreur système. Publication non sauvegardée.";
-$a->strings["Wall Photos"] = "Photos du mur";
-$a->strings["You have reached your limit of %1$.0f top level posts."] = "Vous avez atteint votre limite de %1$.0f contributions \"racine\".";
-$a->strings["You have reached your limit of %1$.0f webpages."] = "Vous avez atteint votre limite de %1$.0f pages web.";
-$a->strings["Menu updated."] = "Menu mis à jour.";
-$a->strings["Unable to update menu."] = "Impossible de mettre le menu à jour.";
-$a->strings["Menu created."] = "Menu créé.";
-$a->strings["Unable to create menu."] = "Impossible de créer le menu.";
-$a->strings["Manage Menus"] = "Gérer les menus";
-$a->strings["Drop"] = "Supprimer";
-$a->strings["Create a new menu"] = "Créer un nouveau menu";
-$a->strings["Delete this menu"] = "Supprimer ce menu";
-$a->strings["Edit menu contents"] = "Éditer le contenu du menu";
-$a->strings["Edit this menu"] = "Éditer le menu";
-$a->strings["New Menu"] = "Nouveau menu";
-$a->strings["Menu name"] = "Nom du menu";
-$a->strings["Must be unique, only seen by you"] = "Doit être unique, ne sera vu que par vous";
-$a->strings["Menu title"] = "Titre du menu";
-$a->strings["Menu title as seen by others"] = "Titre du menu tel que vu par les visiteurs";
-$a->strings["Allow bookmarks"] = "Autoriser les marque-pages";
-$a->strings["Menu may be used to store saved bookmarks"] = "Le menu pourra être utilisé pour stocker des marque-pages";
-$a->strings["Create"] = "Créer";
+$a->strings["Set your current mood and tell your friends"] = "Indiquez votre humeur du moment à vos amis";
$a->strings["Menu not found."] = "Menu introuvable.";
-$a->strings["Menu deleted."] = "Menu supprimé.";
-$a->strings["Menu could not be deleted."] = "Impossible de supprimer le menu.";
-$a->strings["Edit Menu"] = "Éditer le menu";
-$a->strings["Add or remove entries to this menu"] = "Ajouter/supprimer des entrées à ce menu";
-$a->strings["Modify"] = "Modifier";
-$a->strings["Not found."] = "Introuvable.";
-$a->strings["View"] = "Vue";
-$a->strings["Authorize application connection"] = "Autoriser l'application à se connecter";
-$a->strings["Return to your app and insert this Securty Code:"] = "Merci de retourner vers votre application, et d'y insérer ce Code de Sécurité&nbsp;:";
-$a->strings["Please login to continue."] = "Merci de vous connecter pour continuer.";
-$a->strings["Do you want to authorize this application to access your posts and contacts, and/or create new posts for you?"] = "Voulez-vous autoriser cette application à accéder à vos publications et contacts, et/ou à publier en votre nom?";
-$a->strings["Yes"] = "Oui";
-$a->strings["No"] = "Non";
-$a->strings["No installed applications."] = "Aucune application installée.";
-$a->strings["Applications"] = "Applications";
-$a->strings["Edit post"] = "Éditer la contribution";
-$a->strings["Red Matrix - Guests: Username: {your email address}, Password: +++"] = "Red Matrix - Pour les invités: Username={votre courriel}, MDP=+++";
-$a->strings["Bookmark added"] = "Marque-page ajouté";
-$a->strings["My Bookmarks"] = "Mes marque-pages";
-$a->strings["My Connections Bookmarks"] = "Marque-pages de mes relations";
-$a->strings["%1\$s is following %2\$s's %3\$s"] = "%1\$s suit %3\$s de %2\$s";
-$a->strings["[Embedded content - reload page to view]"] = "[Contenu embarqué - rechargez la page pour le voir]";
-$a->strings["Channel not found."] = "Canal introuvable.";
-$a->strings["toggle full screen mode"] = "(dés)activer le mode plein-écran";
-$a->strings["%1\$s tagged %2\$s's %3\$s with %4\$s"] = "%1\$s a étiqueté le %3\$s de %2\$s par %4\$s";
-$a->strings["You must be logged in to see this page."] = "Vous devez vous connecter pour voir cette page.";
-$a->strings["Leave Room"] = "Quitter le salon";
-$a->strings["I am away right now"] = "Je suis momentanément absent";
-$a->strings["I am online"] = "Je suis en ligne";
-$a->strings["New Chatroom"] = "Nouveau salon";
-$a->strings["Chatroom Name"] = "Nom du salon";
-$a->strings["%1\$s's Chatrooms"] = "Salons de %1\$s";
-$a->strings["Public access denied."] = "Accès public refusé.";
-$a->strings["No connections."] = "Pas de relations.";
-$a->strings["Visit %s's profile [%s]"] = "Visiter le profil de %s [%s]";
-$a->strings["View Connnections"] = "Voir les relations";
-$a->strings["Tag removed"] = "Étiquette retirée";
-$a->strings["Remove Item Tag"] = "Retirer une étiquette à l'élément";
-$a->strings["Select a tag to remove: "] = "Étiquette à retirer&nbsp;:";
-$a->strings["Remove"] = "Retirer";
-$a->strings["Continue"] = "Continuer";
-$a->strings["Premium Channel Setup"] = "Configuration du canal Premium";
-$a->strings["Enable premium channel connection restrictions"] = "Activer les restrictions liées au canal premium";
-$a->strings["Please enter your restrictions or conditions, such as paypal receipt, usage guidelines, etc."] = "Merci de saisir les restrictions et/ou conditions - reçu Paypal, transaction Bitcoin, ligne de conduite, ...";
-$a->strings["This channel may require additional steps or acknowledgement of the following conditions prior to connecting:"] = "Avant d'autoriser la mise en relation, ce canal attire votre attention sur les conditions suivantes&nbsp;:";
-$a->strings["Potential connections will then see the following text before proceeding:"] = "Les relations potentielles verront ce qui suit avant de pouvoir continuer&nbsp;:";
-$a->strings["By continuing, I certify that I have complied with any instructions provided on this page."] = "En continuant, je certifie que je me suis acquitté de toutes les instructions indiquées sur cette page.";
-$a->strings["(No specific instructions have been provided by the channel owner.)"] = "(Aucune instruction spécifique n'a été établie par le propriétaire du canal.)";
-$a->strings["Restricted or Premium Channel"] = "Canal Premium ou restreint";
-$a->strings["No potential page delegates located."] = "Aucun délégué potentiel n'a été trouvé pour cette page.";
-$a->strings["Delegate Page Management"] = "Gestion des délégués de la page";
-$a->strings["Delegates are able to manage all aspects of this account/page except for basic account settings. Please do not delegate your personal account to anybody that you do not trust completely."] = "Les délégués sont capables de gérer tous les aspects de ce compte ou de cette page, à l'exception des réglages basiques du compte. Merci de ne déléguer votre compte personnel qu'à quelqu'un en qui vous avez une confiance aveugle.";
-$a->strings["Existing Page Managers"] = "Actuels gestionnaires de pages";
-$a->strings["Existing Page Delegates"] = "Actuels délégués";
-$a->strings["Potential Delegates"] = "Délégués potentiels";
-$a->strings["Add"] = "Ajouter";
-$a->strings["No entries."] = "Aucune entrée.";
-$a->strings["Away"] = "Absent";
-$a->strings["Online"] = "En ligne";
-$a->strings["Item not available."] = "Élément indisponible.";
-$a->strings["Menu element updated."] = "Entrée de menu mis-à-jour.";
+$a->strings["Menu element updated."] = "Entrée de menu mis à jour.";
$a->strings["Unable to update menu element."] = "Impossible de mettre l'entrée de menu à jour.";
$a->strings["Menu element added."] = "Entrée de menu ajouté.";
$a->strings["Unable to add menu element."] = "Impossible d'ajouter l'entrée de menu.";
+$a->strings["Not found."] = "Introuvable.";
$a->strings["Manage Menu Elements"] = "Gérer les entrées de menu";
$a->strings["Edit menu"] = "Éditer le menu";
$a->strings["Edit element"] = "Éditer l'entrée";
@@ -913,7 +859,7 @@ $a->strings["Menu Item Permissions"] = "Permissions de l'entrée de menu";
$a->strings["(click to open/close)"] = "(cliquer pour ouvrir/fermer)";
$a->strings["Link text"] = "Texte du lien";
$a->strings["URL of link"] = "URL du lien";
-$a->strings["Use Red magic-auth if available"] = "Utiliser l'authentification automagique de Red, si possible";
+$a->strings["Use Red magic-auth if available"] = "Utiliser l'authentification magique, lorsque disponible";
$a->strings["Open link in new window"] = "Ouvrir le lien dans une nouvelle fenêtre";
$a->strings["Order in list"] = "Ordre dans la liste";
$a->strings["Higher numbers will sink to bottom of listing"] = "Les nombres les plus élevés seront descendus au bas de la liste";
@@ -921,170 +867,327 @@ $a->strings["Menu item not found."] = "Entrée de menu introuvable.";
$a->strings["Menu item deleted."] = "Entrée de menu supprimée.";
$a->strings["Menu item could not be deleted."] = "Impossible de supprimer l'entrée de menu.";
$a->strings["Edit Menu Element"] = "Éditer l'entrée de menu";
+$a->strings["Modify"] = "Modifier";
+$a->strings["sent you a private message"] = "vous a envoyé un message privé";
+$a->strings["added your channel"] = "a ajouté votre canal";
+$a->strings["posted an event"] = "a publié un événement";
+$a->strings["network"] = "réseau";
+$a->strings["Name is required"] = "Le nom est requis";
+$a->strings["Key and Secret are required"] = "Clef et secret sont requis";
+$a->strings["Passwords do not match. Password unchanged."] = "Les deux saisies du mot de passe ne correspondent pas. Il n'a donc pas été changé.";
+$a->strings["Empty passwords are not allowed. Password unchanged."] = "Le mot de passe ne peut pas être vide. Il n'a donc pas été changé.";
+$a->strings["Password changed."] = "Le mot de passe a été changé.";
+$a->strings["Password update failed. Please try again."] = "La mise à jour du mot de passe a échoué. Merci de recommencer.";
+$a->strings["Not valid email."] = "Adresse de courriel non-valide.";
+$a->strings["Protected email address. Cannot change to that email."] = "Adresse de courriel protégée. Impossible de l'utiliser.";
+$a->strings["System failure storing new email. Please try again."] = "Défaillance système lors du stockage de la nouvelle adresse de courriel. Merci de ré-essayer.";
+$a->strings["Settings updated."] = "Réglages sauvegardés.";
+$a->strings["Add application"] = "Ajouter une application";
+$a->strings["Name of application"] = "Nom de l'application";
+$a->strings["Consumer Key"] = "Clef de consommateur";
+$a->strings["Automatically generated - change if desired. Max length 20"] = "Généré automatiquement - à changer si besoin. Longueur maximale 20 caractères.";
+$a->strings["Consumer Secret"] = "Secret de consommateur";
+$a->strings["Redirect"] = "Redirection";
+$a->strings["Redirect URI - leave blank unless your application specifically requires this"] = "URI de redirection - laissez blanc, sauf si l'application a demandé autrement";
+$a->strings["Icon url"] = "URL de l'icône";
+$a->strings["Optional"] = "Facultatif";
+$a->strings["You can't edit this application."] = "Vous ne pouvez pas éditer cette application.";
+$a->strings["Connected Apps"] = "Applications connectées";
+$a->strings["Client key starts with"] = "La clef partagée commence par";
+$a->strings["No name"] = "Sans nom";
+$a->strings["Remove authorization"] = "Révoquer l'autorisation";
+$a->strings["No feature settings configured"] = "Pas de fonctionnalité à configurer";
+$a->strings["Feature Settings"] = "Extensions";
+$a->strings["Account Settings"] = "Compte";
+$a->strings["Password Settings"] = "Mot de passe";
+$a->strings["New Password:"] = "Nouveau mot de passe&nbsp;:";
+$a->strings["Confirm:"] = "Confirmation&nbsp;:";
+$a->strings["Leave password fields blank unless changing"] = "Laissez les mots de passe vides si vous ne voulez pas les modifier";
+$a->strings["Email Address:"] = "Adresse de courriel&nbsp;:";
+$a->strings["Remove Account"] = "Supprimer le compte";
+$a->strings["Warning: This action is permanent and cannot be reversed."] = "Attention&nbsp;: cette action est permanente et irréversible.";
+$a->strings["Off"] = "Inactif";
+$a->strings["On"] = "Actif";
+$a->strings["Additional Features"] = "Fonctionnalités additionnelles";
+$a->strings["Connector Settings"] = "Connecteurs";
+$a->strings["No special theme for mobile devices"] = "Pas de thème spécifique aux périphériques mobiles";
+$a->strings["%s - (Experimental)"] = "%s - (Expérimental)";
+$a->strings["Display Settings"] = "Affichage";
+$a->strings["Display Theme:"] = "Thème&nbsp;:";
+$a->strings["Mobile Theme:"] = "Thème mobile&nbsp;:";
+$a->strings["Enable user zoom on mobile devices"] = "Permettre à l'utilisateur d'un mobile d'agrandir le contenu";
+$a->strings["Update browser every xx seconds"] = "Rafraîchir le navigateur toutes les xx secondes";
+$a->strings["Minimum of 10 seconds, no maximum"] = "Minimum 10 secondes, pas de maximum";
+$a->strings["Maximum number of conversations to load at any time:"] = "Nombre maximal de conversations pouvant être chargées en même temps&nbsp;:";
+$a->strings["Maximum of 100 items"] = "100 éléments au maximum";
+$a->strings["Don't show emoticons"] = "Ne pas montrer les frimousses/émoticones";
+$a->strings["System Page Layout Editor - (advanced)"] = "Agencements des pages système - (avancé)";
+$a->strings["Nobody except yourself"] = "Personne sauf vous";
+$a->strings["Only those you specifically allow"] = "Seulement ceux que vous autorisez spécifiquement";
+$a->strings["Approved connections"] = "Contacts Approuvés";
+$a->strings["Any connections"] = "Tous les contacts";
+$a->strings["Anybody on this website"] = "Tous les utilisateurs du hub";
+$a->strings["Anybody in this network"] = "Tous les utilisateurs sur ce réseau";
+$a->strings["Anybody authenticated"] = "Tous les utilisateurs authentifiés";
+$a->strings["Anybody on the internet"] = "Tous les utilisateurs d'Internet";
+$a->strings["Publish your default profile in the network directory"] = "Publier votre profil par défaut dans l'annuaire du réseau";
+$a->strings["No"] = "Non";
+$a->strings["Yes"] = "Oui";
+$a->strings["Allow us to suggest you as a potential friend to new members?"] = "Nous autoriser à vous suggérer comme relation potentielle aux nouveaux membres?";
+$a->strings["or"] = "ou";
+$a->strings["Your channel address is"] = "Voici l'adresse de votre canal";
+$a->strings["Channel Settings"] = "Canal";
+$a->strings["Basic Settings"] = "Basique";
+$a->strings["Your Timezone:"] = "Fuseau horaire&nbsp;:";
+$a->strings["Default Post Location:"] = "Emplacement géographique par défaut&nbsp;:";
+$a->strings["Geographical location to display on your posts"] = "Emplacement géographique à afficher sur vos publications";
+$a->strings["Use Browser Location:"] = "Utiliser la géolocalisation fournie par le navigateur&nbsp;:";
+$a->strings["Adult Content"] = "Contenu \"adulte\"";
+$a->strings["This channel frequently or regularly publishes adult content. (Please tag any adult material and/or nudity with #NSFW)"] = "Ce canal publie plus ou moins fréquemment du contenu pour adultes. (Merci d'indiquer tout contenu pour adulte ou potentiellement choquant avec l'étiquette <em>#NSFW</em> - Not Safe For Work)";
+$a->strings["Security and Privacy Settings"] = "Réglages de sécurité et vie privée";
+$a->strings["Hide my online presence"] = "Cacher ma présence en ligne";
+$a->strings["Prevents displaying in your profile that you are online"] = "Cacher votre statut (en ligne/hors ligne) sur votre profil";
+$a->strings["Simple Privacy Settings:"] = "Réglages simples&nbsp;:";
+$a->strings["Very Public - <em>extremely permissive (should be used with caution)</em>"] = "Très public - <em>extrèmement permissif (à n'utiliser qu'en connaissance de cause)</em>";
+$a->strings["Typical - <em>default public, privacy when desired (similar to social network permissions but with improved privacy)</em>"] = "Classique - <em>public par défaut, privé en cas de besoin (comparable dans le principe aux réseaux sociaux centralisés, avec un mode privé plus efficace)</em>";
+$a->strings["Private - <em>default private, never open or public</em>"] = "Privé - <em>privé par défaut, jamais ouvert ni public</em>";
+$a->strings["Blocked - <em>default blocked to/from everybody</em>"] = "Bloqué - <em>par défaut, bloqué de/vers tout le monde</em>";
+$a->strings["Allow others to tag your posts"] = "Autoriser les autres à \"étiqueter\" vos publications";
+$a->strings["Often used by the community to retro-actively flag inappropriate content"] = "Souvent utilisé par la communauté pour distinguer le contenu innaproprié";
+$a->strings["Advanced Privacy Settings"] = "Réglages avancés";
+$a->strings["Expire other channel content after this many days"] = "Faire expirer le contenu des autres canaux après n jours";
+$a->strings["0 or blank prevents expiration"] = "0, ou vide, pour ne pas faire expirer";
+$a->strings["Maximum Friend Requests/Day:"] = "Nombre maximum de mises en relation par jour&nbsp;:";
+$a->strings["May reduce spam activity"] = "Contribue à réduire l'impact des indésirables";
+$a->strings["Default Post Permissions"] = "Permissions par défaut des publications";
+$a->strings["Maximum private messages per day from unknown people:"] = "Nombre maximum de messages privés émanant d'inconnus, par jour&nbsp;:";
+$a->strings["Useful to reduce spamming"] = "Utile pour réduire les indésirables";
+$a->strings["Notification Settings"] = "Notifications";
+$a->strings["By default post a status message when:"] = "Par défaut, publier un statut quand:";
+$a->strings["accepting a friend request"] = "vous acceptez une mise en relation";
+$a->strings["joining a forum/community"] = "vous joignez un forum ou à une communauté";
+$a->strings["making an <em>interesting</em> profile change"] = "vous faites une modification <em>intéressante</em> de votre profil";
+$a->strings["Send a notification email when:"] = "Envoyer un courriel de notification quand&nbsp;:";
+$a->strings["You receive a connection request"] = "Vous recevez une demande de mise en relation";
+$a->strings["Your connections are confirmed"] = "Vous relations sont confirmées";
+$a->strings["Someone writes on your profile wall"] = "Quelqu'un a écrit sur votre mur";
+$a->strings["Someone writes a followup comment"] = "Quelqu'un a commenté sur vos publications";
+$a->strings["You receive a private message"] = "Vous recevez un message privé";
+$a->strings["You receive a friend suggestion"] = "Vous recevez une suggestion d'amitié/relation";
+$a->strings["You are tagged in a post"] = "Vous êtes étiqueté dans une publication";
+$a->strings["You are poked/prodded/etc. in a post"] = "Vous êtes cogné/encouragé/etc. dans une publication";
+$a->strings["Advanced Account/Page Type Settings"] = "Type de page/Compte (avancé)";
+$a->strings["Change the behaviour of this account for special situations"] = "Modifie le comportement de ce compte pour certains cas particuliers";
+$a->strings["Please enable expert mode (in <a href=\"settings/features\">Settings > Additional features</a>) to adjust!"] = "Mode expert requis (<a href=\"settings/features\">Réglages > Fonctions supplémentaires</a>) svp ajuster!";
+$a->strings["Miscellaneous Settings"] = "Divers";
+$a->strings["Personal menu to display in your channel pages"] = "Menu personnel tel qu'il apparaîtra sur les pages de votre canal";
+$a->strings["Remove this channel"] = "Supprimer ce canal";
+$a->strings["Poke/Prod"] = "Cogner/Encourager";
+$a->strings["poke, prod or do other things to somebody"] = "Cogner, encourager, et autres choses à faire à quelqu'un";
+$a->strings["Recipient"] = "Destinataire";
+$a->strings["Choose what you wish to do to recipient"] = "Choisir quoi lui faire";
+$a->strings["Make this post private"] = "Rendre cette contribution privée";
+$a->strings["Authorize application connection"] = "Autoriser l'application à se connecter";
+$a->strings["Return to your app and insert this Securty Code:"] = "Merci de retourner vers votre application, et d'y insérer ce Code de Sécurité&nbsp;:";
+$a->strings["Please login to continue."] = "Merci de vous connecter pour continuer.";
+$a->strings["Do you want to authorize this application to access your posts and contacts, and/or create new posts for you?"] = "Voulez-vous autoriser cette application à accéder à vos publications et contacts, et/ou à publier en votre nom?";
+$a->strings["Remote authentication blocked. You are logged into this site locally. Please logout and retry."] = "Authentification magique bloquée. Vous êtes connecté sur ce site localement. Merci de vous en déconnecter et réessayer.";
+$a->strings["Welcome %s. Remote authentication successful."] = "Bienvenue %s. L'authentification magique a fonctionné.";
+$a->strings["Item not available."] = "Élément indisponible.";
+$a->strings["Fetching URL returns error: %1\$s"] = "Récupération d'URL échouée&nbsp;: %1\$s";
+$a->strings["Invalid item."] = "Élément invalide.";
+$a->strings["Channel not found."] = "Canal introuvable.";
+$a->strings["Page not found."] = "Page introuvable.";
+$a->strings["Image uploaded but image cropping failed."] = "L'image a été téléversée, mais le recadrage a échoué.";
+$a->strings["Image resize failed."] = "Le redimensionnement de l'image a échoué.";
+$a->strings["Shift-reload the page or clear browser cache if the new photo does not display immediately."] = "Shirt-rechargez votre page, ou videz le cache du navigateur si la photo ne s'affiche pas immédiatement.";
+$a->strings["Image exceeds size limit of %d"] = "L'image dépasse la taille limite de %d";
+$a->strings["Unable to process image."] = "Impossible de traîter l'image.";
+$a->strings["Photo not available."] = "Photo inaccessible.";
+$a->strings["Upload File:"] = "Fichier&nbsp;:";
+$a->strings["Select a profile:"] = "Choisir un profil&nbsp;:";
+$a->strings["Upload Profile Photo"] = "Téléverser une photo de profil";
+$a->strings["skip this step"] = "passer cette étape";
+$a->strings["select a photo from your photo albums"] = "choisir une photo dans vos albums";
+$a->strings["Crop Image"] = "Recadrer l'image";
+$a->strings["Please adjust the image cropping for optimum viewing."] = "Merci d'ajuster le cadre pour une visualisation optimale.";
+$a->strings["Done Editing"] = "J'ai terminé";
+$a->strings["Image uploaded successfully."] = "Image téléversée avec succès.";
+$a->strings["Image upload failed."] = "Le téléversement a échoué.";
+$a->strings["Image size reduction [%s] failed."] = "La réduction de taille [%s] a échoué.";
+$a->strings["Block Name"] = "Nom du Bloc";
+$a->strings["Profile not found."] = "Profil introuvable.";
+$a->strings["Profile deleted."] = "Profil supprimé.";
+$a->strings["Profile-"] = "Profil-";
+$a->strings["New profile created."] = "Nouveau profil créé.";
+$a->strings["Profile unavailable to clone."] = "Profil impossible à cloner.";
+$a->strings["Profile unavailable to export."] = "Impossible d'exporter le profil.";
+$a->strings["Profile Name is required."] = "Le nom du profil est requis.";
+$a->strings["Marital Status"] = "Statut marital";
+$a->strings["Romantic Partner"] = "Partenaire";
+$a->strings["Likes"] = "Aime";
+$a->strings["Dislikes"] = "Déteste";
+$a->strings["Work/Employment"] = "Travail/Occupation";
+$a->strings["Religion"] = "Religion/Croyance";
+$a->strings["Political Views"] = "Opinions politiques";
+$a->strings["Gender"] = "Sexe/Genre";
+$a->strings["Sexual Preference"] = "Préférence sexuelle";
+$a->strings["Homepage"] = "Site Internet";
+$a->strings["Interests"] = "Centres d'intérêt";
+$a->strings["Address"] = "Adresse";
+$a->strings["Location"] = "Emplacement";
+$a->strings["Profile updated."] = "Profil mis à jour.";
+$a->strings["Hide your contact/friend list from viewers of this profile?"] = "Cacher vos contacts/relations aux visiteurs de ce profil?";
+$a->strings["Edit Profile Details"] = "Éditer les détails du profil";
+$a->strings["View this profile"] = "Voir le profil";
+$a->strings["Change Profile Photo"] = "Changer la photo du profil";
+$a->strings["Create a new profile using these settings"] = "Créer un nouveau profil avec ces réglages";
+$a->strings["Clone this profile"] = "Cloner le profil";
+$a->strings["Delete this profile"] = "Supprimer le profil";
+$a->strings["Import profile from file"] = "Importer le profil à partir d'un fichier";
+$a->strings["Export profile to file"] = "Exporter le profil vers un fichier.";
+$a->strings["Profile Name:"] = "Nom du profil&nbsp;:";
+$a->strings["Your Full Name:"] = "Votre nom complet&nbsp;:";
+$a->strings["Title/Description:"] = "Titre/description&nbsp;:";
+$a->strings["Your Gender:"] = "Sexe/Genre&nbsp;:";
+$a->strings["Birthday (%s):"] = "Date de naissance (%s)&nbsp;:";
+$a->strings["Street Address:"] = "Adresse postale&nbsp;:";
+$a->strings["Locality/City:"] = "Ville/Localité&nbsp;:";
+$a->strings["Postal/Zip Code:"] = "Code postal&nbsp;:";
+$a->strings["Country:"] = "Pays&nbsp;:";
+$a->strings["Region/State:"] = "Région/Province/État&nbsp;:";
+$a->strings["<span class=\"heart\">&hearts;</span> Marital Status:"] = "<span class=\"heart\">&hearts;</span>Statut marital&nbsp;:";
+$a->strings["Who: (if applicable)"] = "Avec&nbsp;: (si pertinent)";
+$a->strings["Examples: cathy123, Cathy Williams, cathy@example.com"] = "Exemples&nbsp;: cathy123, Cathy Williams, cathy@exemple.com";
+$a->strings["Since [date]:"] = "Depuis [date]&nbsp;:";
+$a->strings["Homepage URL:"] = "URL de mon site Internet&nbsp;:";
+$a->strings["Religious Views:"] = "Opinions religieuses&nbsp;:";
+$a->strings["Keywords:"] = "Mots-clefs&nbsp;:";
+$a->strings["Example: fishing photography software"] = "Exemple&nbsp;: escrime photographie modélisme";
+$a->strings["Used in directory listings"] = "Utilisé pour le référencement dans l'annuaire";
+$a->strings["Tell us about yourself..."] = "Parlez nous de vous...";
+$a->strings["Hobbies/Interests"] = "Loisirs/Centres d'intêret";
+$a->strings["Contact information and Social Networks"] = "Coordonnées et réseaux sociaux";
+$a->strings["My other channels"] = "Mes autres canaux";
+$a->strings["Musical interests"] = "Goûts musicaux";
+$a->strings["Books, literature"] = "Littérature";
+$a->strings["Television"] = "Télévision";
+$a->strings["Film/dance/culture/entertainment"] = "Cinéma/Danse/Culture/Divertissement";
+$a->strings["Love/romance"] = "Amour/Romance";
+$a->strings["Work/employment"] = "Travail/Occupation";
+$a->strings["School/education"] = "Études";
+$a->strings["This is your default profile."] = "Voilà votre profil par défault.";
+$a->strings["Age: "] = "Age&nbsp;:";
+$a->strings["Edit/Manage Profiles"] = "Éditer/gérer les profils";
+$a->strings["Add profile things"] = "Ajouter des choses de profil";
+$a->strings["Include desirable objects in your profile"] = "Incluez des objets souhaitables dans votre profil";
+$a->strings["Bookmark added"] = "Favoris ajouté";
+$a->strings["My Bookmarks"] = "Mes Favoris";
+$a->strings["My Connections Bookmarks"] = "Favoris de mes relations";
$a->strings["Invalid profile identifier."] = "Identifiant de profil invalide.";
$a->strings["Profile Visibility Editor"] = "Éditeur de visibilité de profil";
$a->strings["Click on a contact to add or remove."] = "Cliquez sur un contact pour l'ajouter ou le retirer.";
$a->strings["Visible To"] = "Visible par";
$a->strings["All Connections"] = "Toutes les relations";
-$a->strings["Collection created."] = "Collection créée.";
-$a->strings["Could not create collection."] = "Impossible de créer la collection.";
-$a->strings["Collection updated."] = "Collection mise-à-jour.";
-$a->strings["Create a collection of channels."] = "Créez une collection de canaux.";
-$a->strings["Collection Name: "] = "Nom de la collection&nbsp;:";
-$a->strings["Members are visible to other channels"] = "Les membres sont visibles par les autres canaux";
-$a->strings["Collection removed."] = "Collection supprimée.";
-$a->strings["Unable to remove collection."] = "Impossible de supprimer la collection.";
-$a->strings["Collection Editor"] = "Éditeur de collection";
-$a->strings["Members"] = "Membres";
-$a->strings["All Connected Channels"] = "Tous canaux connectés";
-$a->strings["Click on a channel to add or remove."] = "Cliquer sur un canal pour ajouter ou supprimer";
-$a->strings["Theme settings updated."] = "Réglages du thème sauvegardés.";
-$a->strings["Site"] = "Site";
-$a->strings["Users"] = "Utilisateurs";
-$a->strings["Plugins"] = "Extensions";
-$a->strings["Themes"] = "Thèmes";
-$a->strings["Server"] = "Serveur";
-$a->strings["DB updates"] = "MàJ BD";
-$a->strings["Logs"] = "Journaux";
-$a->strings["Plugin Features"] = "Fonctionnalités liées aux extensions";
-$a->strings["User registrations waiting for confirmation"] = "Inscriptions en attente";
-$a->strings["Message queues"] = "File des messages";
-$a->strings["Administration"] = "Administration";
-$a->strings["Summary"] = "Résumé";
-$a->strings["Registered users"] = "Utilisateurs inscrits";
-$a->strings["Pending registrations"] = "Inscriptions en attente";
-$a->strings["Version"] = "Version";
-$a->strings["Active plugins"] = "Extensions actives";
-$a->strings["Site settings updated."] = "Réglages du site sauvegardés.";
-$a->strings["No special theme for mobile devices"] = "Pas de thème spécifique aux périphériques mobiles";
-$a->strings["No special theme for accessibility"] = "Pas de thème spécifique pour l'accessibilité";
-$a->strings["Closed"] = "Fermé";
-$a->strings["Requires approval"] = "Après approbation";
-$a->strings["Open"] = "Ouvert";
-$a->strings["Private"] = "Privé";
-$a->strings["Paid Access"] = "Accès payant";
-$a->strings["Free Access"] = "Accès gratuit";
-$a->strings["Tiered Access"] = "Accès par paliers";
+$a->strings["Public Sites"] = "Sites publics";
+$a->strings["The listed sites allow public registration into the Red Matrix. All sites in the matrix are interlinked so membership on any of them conveys membership in the matrix as a whole. Some sites may require subscription or provide tiered service plans. The provider links <strong>may</strong> provide additional details."] = "Les sites listés autorisent l'inscription pour tous. Tous sont liés entre eux, de manière à ce qu'un compte sur un seul d'entre eux soit valable sur l'ensemble de la matrice. Certains sites peuvent demander des frais de souscriptions, ou fournir des forfaits ajustés. Le lien \"fournisseur\" <strong>peut</strong> vous donner des détails supplémentaires.";
+$a->strings["Site URL"] = "URL du site";
+$a->strings["Access Type"] = "Type d'accès";
+$a->strings["Registration Policy"] = "Politique d'inscription";
+$a->strings["You must be logged in to see this page."] = "Vous devez vous connecter pour voir cette page.";
+$a->strings["Insufficient permissions. Request redirected to profile page."] = "Permissions insuffisantes. Demande redirigée à la page du profil.";
+$a->strings["Select a bookmark folder"] = "Choisir un dossier de favoris";
+$a->strings["Save Bookmark"] = "Sauver le favoris";
+$a->strings["URL of bookmark"] = "URL du favoris";
+$a->strings["Description"] = "Description";
+$a->strings["Or enter new bookmark folder name"] = "Ou entrez le nom d'un nouveau dossier";
+$a->strings["Room not found"] = "Salon introuvable";
+$a->strings["Leave Room"] = "Quitter le salon";
+$a->strings["Delete This Room"] = "Supprimer le salon";
+$a->strings["I am away right now"] = "Je suis momentanément absent";
+$a->strings["I am online"] = "Je suis en ligne";
+$a->strings["Bookmark this room"] = "Marquer ce salon";
+$a->strings["New Chatroom"] = "Nouveau salon";
+$a->strings["Chatroom Name"] = "Nom du salon";
+$a->strings["%1\$s's Chatrooms"] = "Salons de %1\$s";
+$a->strings["Maximum daily site registrations exceeded. Please try again tomorrow."] = "Nombre d'inscriptions quotidiennes dépassé. Merci de recommencer demain.";
+$a->strings["Please indicate acceptance of the Terms of Service. Registration failed."] = "Merci d'indiquer votre adhésion aux Règles du Service. L'inscription a échoué.";
+$a->strings["Passwords do not match."] = "Les mots de passe ne concordent pas.";
+$a->strings["Registration successful. Please check your email for validation instructions."] = "Inscription réussie. Merci de vérifier vos courriels pour valider votre compte.";
+$a->strings["Your registration is pending approval by the site owner."] = "Votre inscription est en attente de l'approbation d'un administrateur.";
+$a->strings["Your registration can not be processed."] = "Votre inscription ne peut être traîtée.";
+$a->strings["Registration on this site/hub is by approval only."] = "L'inscription sur cette instance/ce site est soumise à une modération.";
+$a->strings["<a href=\"pubsites\">Register at another affiliated site/hub</a>"] = "<a href=\"pubsites\">S'inscrire sur un site/hub affilié</a>";
+$a->strings["This site has exceeded the number of allowed daily account registrations. Please try again tomorrow."] = "Ce site a dépassé le nombre de création de compte autorisé par jour. Merci de recommencer demain.";
+$a->strings["Terms of Service"] = "Règles du Service";
+$a->strings["I accept the %s for this website"] = "J'accepte %s de ce site";
+$a->strings["I am over 13 years of age and accept the %s for this website"] = "J'ai plus de 13 ans et j'accepte les %s de ce site";
$a->strings["Registration"] = "Inscription";
-$a->strings["File upload"] = "Envoi de fichier";
-$a->strings["Policies"] = "Stratégies";
-$a->strings["Advanced"] = "Avancé";
-$a->strings["Site name"] = "Nom du site";
-$a->strings["Banner/Logo"] = "Bannière/logo";
-$a->strings["Administrator Information"] = "Information sur l'administration";
-$a->strings["Contact information for site administrators. Displayed on siteinfo page. BBCode can be used here"] = "Coordonnées de l'administration du site. Affichée sur la page 'siteinfo'. Vous pouvez utiliser du BBCode ici";
-$a->strings["System language"] = "Langue du système";
-$a->strings["System theme"] = "Thème du système";
-$a->strings["Default system theme - may be over-ridden by user profiles - <a href='#' id='cnftheme'>change theme settings</a>"] = "Thème par défaut - il peut être changé pour chaque profil utilisateur - <a href='#' id='cnftheme'>modifier le thème</a>";
-$a->strings["Mobile system theme"] = "Thème système pour mobile";
-$a->strings["Theme for mobile devices"] = "Thème dédié aux périphériques mobiles";
-$a->strings["Accessibility system theme"] = "Thème système pour l'accessibilité";
-$a->strings["Accessibility theme"] = "Thème pour l'accessibilité";
-$a->strings["Channel to use for this website's static pages"] = "Canal à utiliser pour les pages statiques de ce site";
-$a->strings["Site Channel"] = "Canal du site";
-$a->strings["Maximum image size"] = "Taille maximale des images";
-$a->strings["Maximum size in bytes of uploaded images. Default is 0, which means no limits."] = "Taille maximum, en octets, des images envoyées. Par défaut 0, soit sans limite.";
-$a->strings["Register policy"] = "Politique d'inscription";
-$a->strings["Access policy"] = "Politique d'accès";
-$a->strings["Register text"] = "Texte d'inscription";
-$a->strings["Will be displayed prominently on the registration page."] = "Sera affiché de manière bien visible sur le formulaire d'inscription.";
-$a->strings["Accounts abandoned after x days"] = "Les comptes sont abandonnés après x jours";
-$a->strings["Will not waste system resources polling external sites for abandonded accounts. Enter 0 for no time limit."] = "Pour éviter de gaspiller les ressources du système en essayer de mettre à jour des comptes abandonnés. Mettez 0 pour ne pas avoir de limite de temps.";
-$a->strings["Allowed friend domains"] = "Domaines amicaux";
-$a->strings["Comma separated list of domains which are allowed to establish friendships with this site. Wildcards are accepted. Empty to allow any domains"] = "Liste de noms de domaines - séparés par des virgules - pour lesquels ce site acceptera les demandes d'amitié ou de mise en relation. Les caractères génériques (*) sont acceptés. Laissez vide pour accepter tous les domaines.";
-$a->strings["Allowed email domains"] = "Domaines de courriels amicaux";
-$a->strings["Comma separated list of domains which are allowed in email addresses for registrations to this site. Wildcards are accepted. Empty to allow any domains"] = "Liste de noms de domaines - séparés par des virgules - dont les adresses de courriel seront autorisées lors de l'inscription à ce site. Les caractères génériques (*) sont acceptés. Laissez vide pour accepter tous les domaines.";
-$a->strings["Block public"] = "Bloquer public";
-$a->strings["Check to block public access to all otherwise public personal pages on this site unless you are currently logged in."] = "Cocher pour interdire tout accès public, y compris aux pages marquées comme publiques, aux visiteurs anonymes.";
-$a->strings["Force publish"] = "Forcer publication";
-$a->strings["Check to force all profiles on this site to be listed in the site directory."] = "Cocher pour forcer la publication de tous les profils du site dans l'annuaire.";
-$a->strings["No login on Homepage"] = "Pas de connexion depuis la page d'accueil";
-$a->strings["Check to hide the login form from your sites homepage when visitors arrive who are not logged in (e.g. when you put the content of the homepage in via the site channel)."] = "Cocher pour ne pas montrer le formulaire de connexion sur la page d'accueil (typiquement, pour quand vous utilisez la page d'accueil pour afficher du contenu via le canal du site).";
-$a->strings["Proxy user"] = "Utilisateurs du proxy";
-$a->strings["Proxy URL"] = "URL du proxy";
-$a->strings["Network timeout"] = "Délai maximal du réseau";
-$a->strings["Value is in seconds. Set to 0 for unlimited (not recommended)."] = "En secondes. Mettre à 0 pour ne pas avoir de délai maximal (pas recommandé).";
-$a->strings["Delivery interval"] = "Intervalle de distribution";
-$a->strings["Delay background delivery processes by this many seconds to reduce system load. Recommend: 4-5 for shared hosts, 2-3 for virtual private servers. 0-1 for large dedicated servers."] = "Temporise le processus de distribution de tant de secondes pour réduire la charge sur le système. Valeurs recommandées&nbsp;: 4-5 pour les serveurs mutualisés, 2-3 pour les VPS. 0-1 pour les gros serveurs dédiés.";
-$a->strings["Poll interval"] = "Intervalle de scrutation";
-$a->strings["Delay background polling processes by this many seconds to reduce system load. If 0, use delivery interval."] = "Temporise le processus de scrutation en tâche de fond de tant de secondes, pour réduire la charge. Si 0, utilise l'intervalle de distribution.";
-$a->strings["Maximum Load Average"] = "Charge moyenne maximale";
-$a->strings["Maximum system load before delivery and poll processes are deferred - default 50."] = "Charge système maximale au-delà de laquelle distribution et scrutation sont mis en pause - par défaut 50.";
-$a->strings["No server found"] = "Serveur introuvable";
-$a->strings["ID"] = "ID";
-$a->strings["for channel"] = "pour le canal";
-$a->strings["on server"] = "sur le serveur";
-$a->strings["Status"] = "État";
-$a->strings["Update has been marked successful"] = "La mise à jour a été marquée comme réussie";
-$a->strings["Executing %s failed. Check system logs."] = "L'éxecution de %s a échoué. Merci de vérifier les journaux du système.";
-$a->strings["Update %s was successfully applied."] = "La mise à jour %s a été appliquée avec succès.";
-$a->strings["Update %s did not return a status. Unknown if it succeeded."] = "La mise à jour %s n'a pas retourné d'information. Impossible de savoir si elle a réussi ou non.";
-$a->strings["Update function %s could not be found."] = "La fonction de mise à jour %s est introuvable.";
-$a->strings["No failed updates."] = "Aucune mise à jour défaillante.";
-$a->strings["Failed Updates"] = "Mises à jour défaillantes";
-$a->strings["Mark success (if update was manually applied)"] = "Marquer comme réussie (si la mise à jour a été réalisée manuellement)";
-$a->strings["Attempt to execute this update step automatically"] = "Tenter de réaliser cette étape de mise à jour automatiquement";
-$a->strings["%s user blocked/unblocked"] = array(
- 0 => "%s utilisateur bloqué/débloqué",
- 1 => "%s utilisateurs bloqués/débloqués",
-);
-$a->strings["%s user deleted"] = array(
- 0 => "%s utilisateur supprimé",
- 1 => "%s utilisateurs supprimés",
-);
-$a->strings["Account not found"] = "Compte introuvable";
-$a->strings["User '%s' deleted"] = "Utilisateur '%s' supprimé";
-$a->strings["User '%s' unblocked"] = "Utilisateur '%s' débloqué";
-$a->strings["User '%s' blocked"] = "Utilisateur '%s' bloqué";
-$a->strings["select all"] = "tout sélectionner";
-$a->strings["User registrations waiting for confirm"] = "Inscriptions en attente d'approbation";
-$a->strings["Request date"] = "Date de la demande";
-$a->strings["No registrations."] = "Pas d'inscriptions.";
-$a->strings["Approve"] = "Approuver";
-$a->strings["Deny"] = "Refuser";
-$a->strings["Block"] = "Bloquer";
-$a->strings["Unblock"] = "Débloquer";
-$a->strings["Register date"] = "Date d'inscription";
-$a->strings["Last login"] = "Dernière connexion";
-$a->strings["Expires"] = "Expire";
-$a->strings["Service Class"] = "Classe de service";
-$a->strings["Selected users will be deleted!\\n\\nEverything these users had posted on this site will be permanently deleted!\\n\\nAre you sure?"] = "Les utilisateurs sélectionnés seront supprimés!\\n\\nTout ce que ces utilisateurs ont publié sur ce site sera détruit de manière définitive!\\n\\nÊtes-vous certain?";
-$a->strings["The user {0} will be deleted!\\n\\nEverything this user has posted on this site will be permanently deleted!\\n\\nAre you sure?"] = "L'utilisateur {0} sera supprimé!\\n\\nTout ce que cet utilisateur a publié sur ce site sera détruit de manière définitive!\\n\\nÊtes-vous certain?";
-$a->strings["Plugin %s disabled."] = "Extension %s désactivée.";
-$a->strings["Plugin %s enabled."] = "Extension %s activée.";
-$a->strings["Disable"] = "Désactiver";
-$a->strings["Enable"] = "Activer";
-$a->strings["Toggle"] = "(Dés)activer";
-$a->strings["Author: "] = "Auteur&nbsp;:";
-$a->strings["Maintainer: "] = "Maintenu par&nbsp;:";
-$a->strings["No themes found."] = "Aucun thème trouvé.";
-$a->strings["Screenshot"] = "Aperçu";
-$a->strings["[Experimental]"] = "[Expérimental]";
-$a->strings["[Unsupported]"] = "[Non-supporté]";
-$a->strings["Log settings updated."] = "Réglages du journal sauvegardés.";
-$a->strings["Clear"] = "Vider";
-$a->strings["Debugging"] = "Débogage";
-$a->strings["Log file"] = "Fichier du journal";
-$a->strings["Must be writable by web server. Relative to your Red top-level directory."] = "Doit être accessible en écriture par le serveur web. Chemin relatif à la racine de Red.";
-$a->strings["Log level"] = "Niveau de journalisation";
-$a->strings["- select -"] = "- choisir -";
-$a->strings["Welcome to %s"] = "Bienvenue sur %s";
-$a->strings["Item not found"] = "Élément introuvable";
-$a->strings["Item is not editable"] = "Élément non-éditable";
-$a->strings["Delete item?"] = "Supprimer l'élément?";
-$a->strings["Insert YouTube video"] = "Insérer une vidéo YouTube";
-$a->strings["Insert Vorbis [.ogg] video"] = "Insérer une vidéo Vorbis [.ogg]";
-$a->strings["Insert Vorbis [.ogg] audio"] = "Insérer un son Vorbis [.ogg]";
-$a->strings["Age: "] = "Age&nbsp;:";
-$a->strings["Gender: "] = "Sexe/genre&nbsp;:";
-$a->strings["Finding:"] = "Recherche&nbsp;:";
-$a->strings["next page"] = "page suiv.";
-$a->strings["previous page"] = "page préc.";
-$a->strings["No entries (some entries may be hidden)."] = "Pas d'entrées (certaines peuvent être cachées).";
+$a->strings["Membership on this site is by invitation only."] = "L'inscription à ce site se fait uniquement sur invitation.";
+$a->strings["Please enter your invitation code"] = "Merci de saisir votre code d'invitation";
+$a->strings["Your email address"] = "Votre adresse de courriel";
+$a->strings["Choose a password"] = "Choisissez un mot de passe";
+$a->strings["Please re-enter your password"] = "Confirmez-le";
+$a->strings["Away"] = "Absent";
+$a->strings["Online"] = "En ligne";
+$a->strings["Please login."] = "Merci de vous connecter.";
+$a->strings["Red Matrix - Guests: Username: {your email address}, Password: +++"] = "Matrice Rouge - Pour les invités: Nom d'utilisateur = {votre courriel}, Mot de passe = +++";
+$a->strings["Channel removals are not allowed within 48 hours of changing the account password."] = "Il est impossible de supprimer un canal à l'intérieur de 48 heures après avoir changé le mot de passe d'un compte.";
+$a->strings["Remove This Channel"] = "Supprimer ce Canal";
+$a->strings["This will completely remove this channel from the network. Once this has been done it is not recoverable."] = "Ceci effacera complètement le canal du réseau. Une fois effacé, un canal ne PEUT PAS être récupéré.";
+$a->strings["Please enter your password for verification:"] = "Merci de re-saisir votre mot de passe pour vérification&nbsp;:";
+$a->strings["Remove this channel and all its clones from the network"] = "Supprimer ce canal ainsi que tous ses clones sur la matrice";
+$a->strings["By default only the instance of the channel located on this hub will be removed from the network"] = "Par défaut, seule l'instance du canal présente sur ce hub sera supprimée du réseau";
+$a->strings["Remove Channel"] = "Enlever le canal";
+$a->strings["No channel."] = "Pas de canal.";
+$a->strings["Common connections"] = "Relations communes";
+$a->strings["No connections in common."] = "Pas de relation en commun.";
+$a->strings["We encountered a problem while logging in with the OpenID you provided. Please check the correct spelling of the ID."] = "Nous avons rencontré un problème avec l'OpenID que vous nous avez fourni. Merci de vérifier que l'ID est bien saisi.";
+$a->strings["The error message was:"] = "Le message d'erreur était&nbsp;:";
+$a->strings["Authentication failed."] = "Échec de l'authentification.";
+$a->strings["Remote Authentication"] = "Authentification distante";
+$a->strings["Enter your channel address (e.g. channel@example.com)"] = "Entrez l'adresse de votre canal (p.ex. moncanal@monsite.com)";
+$a->strings["Authenticate"] = "Authentifier";
+$a->strings["Continue"] = "Continuer";
+$a->strings["Premium Channel Setup"] = "Configuration du canal VIP";
+$a->strings["Enable premium channel connection restrictions"] = "Activer les restrictions liées au canal VIP";
+$a->strings["Please enter your restrictions or conditions, such as paypal receipt, usage guidelines, etc."] = "Merci de saisir les restrictions et/ou conditions - reçu Paypal, transaction Bitcoin, ligne de conduite, ...";
+$a->strings["This channel may require additional steps or acknowledgement of the following conditions prior to connecting:"] = "Avant d'autoriser la mise en relation, ce canal attire votre attention sur les conditions suivantes&nbsp;:";
+$a->strings["Potential connections will then see the following text before proceeding:"] = "Les relations potentielles verront ce qui suit avant de pouvoir continuer&nbsp;:";
+$a->strings["By continuing, I certify that I have complied with any instructions provided on this page."] = "En continuant, je certifie que je me suis acquitté de toutes les instructions indiquées";
+$a->strings["(No specific instructions have been provided by the channel owner.)"] = "(Aucune instruction spécifique n'a été établie par le propriétaire du canal.)";
+$a->strings["Restricted or Premium Channel"] = "Canal VIP ou restreint";
+$a->strings["No such group"] = "Groupe introuvable";
+$a->strings["Search Results For:"] = "Résultats de recherche pour&nbsp;:";
+$a->strings["Collection is empty"] = "Collection vide";
+$a->strings["Collection: "] = "Collection&nbsp;:";
+$a->strings["Connection: "] = "Relation&nbsp;:";
+$a->strings["Invalid connection."] = "Relation invalide.";
$a->strings["Could not access contact record."] = "Impossible d'accéder aux détails du contact.";
$a->strings["Could not locate selected profile."] = "Impossible de localiser le profil sélectionné.";
$a->strings["Connection updated."] = "Connexion mise à jour.";
$a->strings["Failed to update connection record."] = "Impossible de mettre à jour les détails de la relation.";
+$a->strings["Blocked"] = "Bloqué";
+$a->strings["Ignored"] = "Ignoré";
+$a->strings["Hidden"] = "Caché";
+$a->strings["Archived"] = "Archivé";
+$a->strings["All"] = "Tout";
+$a->strings["Suggest new connections"] = "Suggérer de nouvelles relations";
+$a->strings["New Connections"] = "Nouvelles relations";
+$a->strings["Show pending (new) connections"] = "Voir les (nouvelles) relations en attente";
+$a->strings["Show all connections"] = "Voir toutes les relations";
+$a->strings["Unblocked"] = "Non bloquées";
+$a->strings["Only show unblocked connections"] = "Ne montrer que les relations non-bloquées";
+$a->strings["Only show blocked connections"] = "Ne montrer que les relations bloquées";
+$a->strings["Only show ignored connections"] = "Ne montrer que les relations ignorées";
+$a->strings["Only show archived connections"] = "Ne montrer que les relations archivées";
+$a->strings["Only show hidden connections"] = "Ne montrer que les relations cachées";
+$a->strings["%1\$s [%2\$s]"] = "%1\$s [%2\$s]";
+$a->strings["Edit contact"] = "Éditer contact";
+$a->strings["Search your connections"] = "Chercher parmi vos relations";
+$a->strings["Finding: "] = "Recherche&nbsp;:";
+$a->strings["Edit post"] = "Éditer la contribution";
+$a->strings["is now connected to"] = "est maintenant connecté avec";
$a->strings["Could not access address book record."] = "Impossible d'accéder aux détails du carnet d'adresses.";
$a->strings["Refresh failed - channel is currently unavailable."] = "Actualisation impossible - le canal est momentanément indisponible.";
$a->strings["Channel has been unblocked"] = "Le canal n'est plus bloqué";
@@ -1098,12 +1201,14 @@ $a->strings["Channel has been unhidden"] = "Le canal n'est plus caché";
$a->strings["Channel has been hidden"] = "Le canal est caché";
$a->strings["Channel has been approved"] = "Le canal est approuvé";
$a->strings["Channel has been unapproved"] = "Le canal n'est plus approuvé";
-$a->strings["Contact has been removed."] = "Le canal a été supprimé";
+$a->strings["Connection has been removed."] = "La relation a été supprimée";
$a->strings["View %s's profile"] = "Voir le profil de %s";
$a->strings["Refresh Permissions"] = "Actualiser les permissions";
$a->strings["Fetch updated permissions"] = "Récupérer les permissions les plus récentes";
$a->strings["Recent Activity"] = "Activité récente";
$a->strings["View recent posts and comments"] = "Voir les contributions et commentaires récentes";
+$a->strings["Unblock"] = "Débloquer";
+$a->strings["Block"] = "Bloquer";
$a->strings["Block or Unblock this connection"] = "Bloquer ou Débloquer cette relation";
$a->strings["Unignore"] = "Ne plus ignorer";
$a->strings["Ignore"] = "Ignorer";
@@ -1115,14 +1220,13 @@ $a->strings["Unhide"] = "Ne plus cacher";
$a->strings["Hide"] = "Cacher";
$a->strings["Hide or Unhide this connection"] = "Cacher ou ne plus cacher cette relation";
$a->strings["Delete this connection"] = "Supprimer cette relation";
-$a->strings["Unknown"] = "Inconnu";
$a->strings["Approve this connection"] = "Approuver cette relation";
$a->strings["Accept connection to allow communication"] = "Accepter la relation pour permettre la communication";
$a->strings["Automatic Permissions Settings"] = "Permissions automatiques";
$a->strings["Connections: settings for %s"] = "Relations&nbsp;: réglages pour %s";
$a->strings["When receiving a channel introduction, any permissions provided here will be applied to the new connection automatically and the introduction approved. Leave this page if you do not wish to use this feature."] = "Pour chaque introduction reçue, toutes les permissions définies ici seront appliquées aux nouvelles relations automatiquement, et l'introduction sera approuvée. Laissez cette page telle quelle si vous ne souhaitez pas utiliser ce mécanisme.";
$a->strings["Slide to adjust your degree of friendship"] = "Faites glisser pour ajuster le niveau de la relation";
-$a->strings["inherited"] = "par héritage";
+$a->strings["inherited"] = "héritée";
$a->strings["Connection has no individual permissions!"] = "Cette relation n'a aucune permission spécifique!";
$a->strings["This may be appropriate based on your <a href=\"settings\">privacy settings</a>, though you may wish to review the \"Advanced Permissions\"."] = "Ceci devrait correspondre à vos <a href=\"settings\">réglages de vie privée</a>, mais vous pouvez toujours contrôler les \"Permissions avancées\".";
$a->strings["Profile Visibility"] = "Visibilité du profil";
@@ -1131,11 +1235,12 @@ $a->strings["Contact Information / Notes"] = "Notes / Information de contact";
$a->strings["Edit contact notes"] = "Éditer les notes du contact";
$a->strings["Their Settings"] = "Ses réglages";
$a->strings["My Settings"] = "Mes réglages";
-$a->strings["Forum Members"] = "Membres de forum";
-$a->strings["Soapbox"] = "Boîte à savon";
-$a->strings["Full Sharing (typical social network permissions)"] = "Partage complet (fonctionnement habituel des réseaux sociaux)";
+$a->strings["Clear/Disable Automatic Permissions"] = "Effacer/Désactiver les Permissions Automatiques";
+$a->strings["Forum Members"] = "Membres du forum";
+$a->strings["Soapbox"] = "Blogue";
+$a->strings["Full Sharing (typical social network permissions)"] = "Partage Complet (fonctionnement habituel des réseaux sociaux)";
$a->strings["Cautious Sharing "] = "Partage modéré";
-$a->strings["Follow Only"] = "Suivi uniquement";
+$a->strings["Follow Only"] = "Suivre uniquement";
$a->strings["Individual Permissions"] = "Permissions spécifiques";
$a->strings["Some permissions may be inherited from your channel <a href=\"settings\">privacy settings</a>, which have higher priority than individual settings. Changing those inherited settings on this page will have no effect."] = "Certaines permissions peuvent être héritées de vos <a href=\"settings\">réglages de vie privée</a>, lesquels sont prioritaires sur les réglages spécifiques. Changer ces permissions héritées sur la présente page n'aura aucun effet.";
$a->strings["Advanced Permissions"] = "Permissions avancées";
@@ -1146,7 +1251,7 @@ $a->strings["Ignore contact"] = "Ignorer le contact";
$a->strings["Repair URL settings"] = "Réparer les réglages d'URL";
$a->strings["View conversations"] = "Voir les conversations";
$a->strings["Delete contact"] = "Supprimer le contact";
-$a->strings["Last update:"] = "Dernière mise-à-jour&nbsp;:";
+$a->strings["Last update:"] = "Dernière mise à jour&nbsp;:";
$a->strings["Update public posts"] = "Mettre à jour les publications";
$a->strings["Update now"] = "Mettre à jour maintenant";
$a->strings["Currently blocked"] = "Actuellement bloqué";
@@ -1155,106 +1260,29 @@ $a->strings["Currently archived"] = "Actuellement archivé";
$a->strings["Currently pending"] = "Actuellement en attente";
$a->strings["Hide this contact from others"] = "Dissimuler ce contact aux autres";
$a->strings["Replies/likes to your public posts <strong>may</strong> still be visible"] = "Les réponses et autres réactions à vos contributions publiques <strong>pourraient</strong> être toujours visibles";
-$a->strings["Layout Help"] = "Aide à la mise en page";
-$a->strings["Help with this feature"] = "Aide avec cette fonctionnalité";
-$a->strings["Layout Name"] = "Nom de la mise-en-page";
-$a->strings["Help:"] = "Aide&nbsp;:";
-$a->strings["Not Found"] = "Introuvable";
-$a->strings["Page not found."] = "Page introuvable.";
-$a->strings["Remote Authentication"] = "Authentification distante";
-$a->strings["Enter your channel address (e.g. channel@example.com)"] = "Entrez l'adresse de votre canal (p.ex. moncanal@monsite.com)";
-$a->strings["Authenticate"] = "Authentifier";
-$a->strings["Invalid item."] = "Élément invalide.";
-$a->strings["No such group"] = "Rien de tel comme groupe";
-$a->strings["Search Results For:"] = "Résultats de recherche pour&nbsp;:";
-$a->strings["Collection is empty"] = "Collection vide";
-$a->strings["Collection: "] = "Collection&nbsp;:";
-$a->strings["Connection: "] = "Relation&nbsp;:";
-$a->strings["Invalid connection."] = "Relation invalide.";
-$a->strings["Profile not found."] = "Profil introuvable.";
-$a->strings["Profile deleted."] = "Profil supprimé.";
-$a->strings["Profile-"] = "Profil-";
-$a->strings["New profile created."] = "Nouveau profil créé.";
-$a->strings["Profile unavailable to clone."] = "Profil impossible à cloner.";
-$a->strings["Profile Name is required."] = "Le nom du profil est requis.";
-$a->strings["Marital Status"] = "Statut marital";
-$a->strings["Romantic Partner"] = "Partenaire";
-$a->strings["Likes"] = "Aime";
-$a->strings["Dislikes"] = "Déteste";
-$a->strings["Work/Employment"] = "Travail/Occupation";
-$a->strings["Religion"] = "Religion/Croyance";
-$a->strings["Political Views"] = "Opinions politiques";
-$a->strings["Gender"] = "Sexe/Genre";
-$a->strings["Sexual Preference"] = "Préférence sexuelle";
-$a->strings["Homepage"] = "Site Internet";
-$a->strings["Interests"] = "Centres d'intérêt";
-$a->strings["Address"] = "Adresse";
-$a->strings["Location"] = "Localisation";
-$a->strings["Profile updated."] = "Profil mis à jour.";
-$a->strings["Hide your contact/friend list from viewers of this profile?"] = "Cacher vos contacts/relations aux visiteurs de ce profil?";
-$a->strings["Edit Profile Details"] = "Éditer les détails du profil";
-$a->strings["View this profile"] = "Voir le profil";
-$a->strings["Change Profile Photo"] = "Changer la photo du profil";
-$a->strings["Create a new profile using these settings"] = "Créer un nouveau profil avec ces réglages";
-$a->strings["Clone this profile"] = "Cloner le profil";
-$a->strings["Delete this profile"] = "Supprimer le profil";
-$a->strings["Profile Name:"] = "Nom du profil&nbsp;:";
-$a->strings["Your Full Name:"] = "Votre nom complet&nbsp;:";
-$a->strings["Title/Description:"] = "Titre/description&nbsp;:";
-$a->strings["Your Gender:"] = "Sexe/Genre&nbsp;:";
-$a->strings["Birthday (%s):"] = "Date de naissance (%s)&nbsp;:";
-$a->strings["Street Address:"] = "Adresse postale&nbsp;:";
-$a->strings["Locality/City:"] = "Ville/Localité&nbsp;:";
-$a->strings["Postal/Zip Code:"] = "Code postal&nbsp;:";
-$a->strings["Country:"] = "Pays&nbsp;:";
-$a->strings["Region/State:"] = "Région/Province/État&nbsp;:";
-$a->strings["<span class=\"heart\">&hearts;</span> Marital Status:"] = "<span class=\"heart\">&hearts;</span>Statut marital&nbsp;:";
-$a->strings["Who: (if applicable)"] = "Avec&nbsp;: (si pertinent)";
-$a->strings["Examples: cathy123, Cathy Williams, cathy@example.com"] = "Exemples&nbsp;: cathy123, Cathy Williams, cathy@exemple.com";
-$a->strings["Since [date]:"] = "Depuis [date]&nbsp;:";
-$a->strings["Homepage URL:"] = "URL de mon site Internet&nbsp;:";
-$a->strings["Religious Views:"] = "Opinions religieuses&nbsp;:";
-$a->strings["Keywords:"] = "Mots-clefs&nbsp;:";
-$a->strings["Example: fishing photography software"] = "Exemple&nbsp;: escrime photographie modélisme";
-$a->strings["Used in directory listings"] = "Utilisé pour le référencement dans l'annuaire";
-$a->strings["Tell us about yourself..."] = "Parlez nous de vous...";
-$a->strings["Hobbies/Interests"] = "Loisirs/Centres d'intêret";
-$a->strings["Contact information and Social Networks"] = "Coordonnées et réseaux sociaux";
-$a->strings["My other channels"] = "Mes autres canaux";
-$a->strings["Musical interests"] = "Goûts musicaux";
-$a->strings["Books, literature"] = "Littérature";
-$a->strings["Television"] = "Télévision";
-$a->strings["Film/dance/culture/entertainment"] = "Cinéma/Danse/Culture/Divertissement";
-$a->strings["Love/romance"] = "Amour/Romance";
-$a->strings["Work/employment"] = "Travail/Occupation";
-$a->strings["School/education"] = "Études";
-$a->strings["This is your <strong>public</strong> profile.<br />It <strong>may</strong> be visible to anybody using the internet."] = "Ceci est votre profil <strong>public</strong>.<br />Il <strong>pourrait</strong> être visible par tout utilisateur - fut-il anonyme - d'Internet.";
-$a->strings["Edit/Manage Profiles"] = "Éditer/gérer les profils";
-$a->strings["Add profile things"] = "Ajouter des choses de profil";
-$a->strings["Include desirable objects in your profile"] = "Incluez des objets souhaitables dans votre profil";
-$a->strings["Channel added."] = "Canal ajouté.";
-$a->strings["Remote authentication blocked. You are logged into this site locally. Please logout and retry."] = "Authentification distante bloquée. Vous êtes connecté sur ce site localement. Merci de vous en déconnecter et de recommencer.";
-$a->strings["Welcome %s. Remote authentication successful."] = "Bienvenue %s. L'authentification distante a fonctionné.";
+$a->strings["No potential page delegates located."] = "Aucun délégué potentiel n'a été trouvé pour cette page.";
+$a->strings["Delegate Page Management"] = "Gestion des délégués de la page";
+$a->strings["Delegates are able to manage all aspects of this account/page except for basic account settings. Please do not delegate your personal account to anybody that you do not trust completely."] = "Les délégués sont capables de gérer tous les aspects de ce compte ou de cette page, à l'exception des réglages basiques du compte. Merci de ne déléguer votre compte personnel qu'à quelqu'un en qui vous avez une confiance aveugle.";
+$a->strings["Existing Page Managers"] = "Actuels gestionnaires de pages";
+$a->strings["Existing Page Delegates"] = "Actuels délégués";
+$a->strings["Potential Delegates"] = "Délégués potentiels";
+$a->strings["Remove"] = "Retirer";
+$a->strings["Add"] = "Ajouter";
+$a->strings["No entries."] = "Aucune entrée.";
+$a->strings["Public access denied."] = "Accès public refusé.";
+$a->strings["Gender: "] = "Sexe/genre&nbsp;:";
+$a->strings["Finding:"] = "Recherche&nbsp;:";
+$a->strings["No entries (some entries may be hidden)."] = "Pas d'entrées (certaines peuvent être cachées).";
+$a->strings["Status: "] = "État&nbsp;:";
+$a->strings["Sexual Preference: "] = "Orientation sexuelle&nbsp;:";
+$a->strings["Homepage: "] = "Site web&nbsp;:";
+$a->strings["Hometown: "] = "Ville natale&nbsp;:";
+$a->strings["About: "] = "À propos&nbsp;:";
+$a->strings["Keywords: "] = "Mots-clefs&nbsp;:";
$a->strings["This site is not a directory server"] = "Ce site n'est pas un serveur d'annuaire";
-$a->strings["Failed to create source. No channel selected."] = "Impossible de créer la source. Aucun canal selectionné.";
-$a->strings["Source created."] = "Source créée.";
-$a->strings["Source updated."] = "Source mise à jour.";
-$a->strings["*"] = "*";
-$a->strings["Manage remote sources of content for your channel."] = "Gérer les sources distantes du contenu de votre canal.";
-$a->strings["New Source"] = "Nouvelle source";
-$a->strings["Import all or selected content from the following channel into this channel and distribute it according to your channel settings."] = "Importer tout ou partie du contenu du canal suivant dans le canal en cours, et le distribuer en concordance avec les réglages de votre canal.";
-$a->strings["Only import content with these words (one per line)"] = "N'importer le contenu que s'ils contient ces mots (un par ligne)";
-$a->strings["Leave blank to import all public content"] = "Laissez en blanc pour importer tout le contenu public";
-$a->strings["Channel Name"] = "Nom du canal";
-$a->strings["Source not found."] = "Source introuvable.";
-$a->strings["Edit Source"] = "Éditer source";
-$a->strings["Delete Source"] = "Supprimer source";
-$a->strings["Source removed"] = "Source supprimée";
-$a->strings["Unable to remove source."] = "Impossible de supprimer la source.";
-$a->strings["Remote privacy information not available."] = "Les informations de vie privée à distance ne sont pas disponibles.";
-$a->strings["Visible to:"] = "Visible par&nbsp;:";
-$a->strings["Hub not found."] = "Instance introuvable.";
-$a->strings["Red Matrix Server - Setup"] = "Serveur Red Matrix - Configuration";
+$a->strings["Red Matrix - &quot;The Network&quot;"] = "La Matrice Rouge - &quot;LE Réseau&quot;";
+$a->strings["Welcome to %s"] = "Bienvenue sur %s";
+$a->strings["Red Matrix Server - Setup"] = "Serveur de la Matrice Rouge - Configuration";
$a->strings["Could not connect to database."] = "Impossible de se connecter à la base de données.";
$a->strings["Could not connect to specified site URL. Possible SSL certificate or DNS issue."] = "Impossible de se connecter au site par l'URL indiquée. Problème potentiel de certificat SSL/TLS ou de DNS.";
$a->strings["Could not create table."] = "Impossible de créer la table.";
@@ -1262,18 +1290,19 @@ $a->strings["Your site database has been installed."] = "La base de données de
$a->strings["You may need to import the file \"install/database.sql\" manually using phpmyadmin or mysql."] = "Vous pourriez avoir besoin d'importer le fichier \"install/database.sql\" manuellement via phpmyadmin ou mysql.";
$a->strings["Please see the file \"install/INSTALL.txt\"."] = "Merci de consulter le fichier \"install/INSTALL.txt\".";
$a->strings["System check"] = "Vérification du système";
+$a->strings["Next"] = "Suivant";
$a->strings["Check again"] = "Re-vérifier";
$a->strings["Database connection"] = "Connexion à la base de données";
-$a->strings["In order to install Red Matrix we need to know how to connect to your database."] = "Pour installer Red Matrix, nous avons besoin de savoir comment contacter votre base de données.";
-$a->strings["Please contact your hosting provider or site administrator if you have questions about these settings."] = "Merci de contacter votre prestataire d'hébergement ou votre administration système si vous avez des doutes à propos de ces paramètres.";
+$a->strings["In order to install Red Matrix we need to know how to connect to your database."] = "Pour installer la Matrice Rouge, nous avons besoin de savoir comment contacter votre base de données.";
+$a->strings["Please contact your hosting provider or site administrator if you have questions about these settings."] = "Merci de contacter votre prestataire d'hébergement ou votre administrateur système si vous avez des doutes à propos de ces paramètres.";
$a->strings["The database you specify below should already exist. If it does not, please create it before continuing."] = "La base de données que vous allez spécifier doit exister. Si ce n'est pas déjà le cas, merci de la créer avant de continuer.";
-$a->strings["Database Server Name"] = "Nom du serveur de BD";
+$a->strings["Database Server Name"] = "Nom du serveur de la base de données";
$a->strings["Default is localhost"] = "Par défaut, localhost";
$a->strings["Database Port"] = "Port du serveur";
$a->strings["Communication port number - use 0 for default"] = "Numéro TCP du port - utilisez 0 pour la valeur par défaut";
-$a->strings["Database Login Name"] = "Identifiant de connexion à la BD";
-$a->strings["Database Login Password"] = "Mot de passe de connexion à la BD";
-$a->strings["Database Name"] = "Nom de la base de données";
+$a->strings["Database Login Name"] = "Identifiant de connexion à la Base de Données";
+$a->strings["Database Login Password"] = "Mot de passe de connexion à la Base de Données";
+$a->strings["Database Name"] = "Nom de la Base de Données";
$a->strings["Site administrator email address"] = "Adresse de courriel de l'administrateur du site";
$a->strings["Your account email address must match this in order to use the web admin panel."] = "Votre compte devra utiliser la même adresse de courriel pour pouvoir utiliser l'administration web.";
$a->strings["Website URL"] = "URL du site";
@@ -1281,7 +1310,7 @@ $a->strings["Please use SSL (https) URL if available."] = "Merci d'utiliser SSL/
$a->strings["Please select a default timezone for your website"] = "Merci de choisir une zone de temps (fuseau horaire) pour votre site";
$a->strings["Site settings"] = "Réglages du site";
$a->strings["Could not find a command line version of PHP in the web server PATH."] = "Impossible de trouver une version CLI de PHP dans le PATH du serveur web.";
-$a->strings["If you don't have a command line version of PHP installed on server, you will not be able to run background polling via cron."] = "En l'absence de version CLI de PHP sur votre serveur, vous ne pourrez pas utiliser la mise-à-jour en arrière-plan via cron.";
+$a->strings["If you don't have a command line version of PHP installed on server, you will not be able to run background polling via cron."] = "En l'absence de version CLI de PHP sur votre serveur, vous ne pourrez pas utiliser la mise à jour en arrière-plan via cron.";
$a->strings["PHP executable path"] = "Chemin vers l'éxecutable PHP";
$a->strings["Enter full path to php executable. You can leave this blank to continue the installation."] = "Entrez le chemin complet vers l'exécutable php. Vous pouvez continuer l'installation sans.";
$a->strings["Command line PHP"] = "PHP en ligne de commande (CLI)";
@@ -1309,158 +1338,315 @@ $a->strings["Error: mb_string PHP module required but not installed."] = "Erreur
$a->strings["Error: mcrypt PHP module required but not installed."] = "Erreur&nbsp;: le module mcrypt de PHP est requis, mais pas installé.";
$a->strings["The web installer needs to be able to create a file called \".htconfig.php\ in the top folder of your web server and it is unable to do so."] = "L'installeur web a besoin de créer un fichier \".htconfig.php\" à la racine de votre serveur web, mais en est incapable.";
$a->strings["This is most often a permission setting, as the web server may not be able to write files in your folder - even if you can."] = "C'est généralement lié à un problème de droits, à cause duquel le serveur web est interdit d'écriture dans le répertoire concerné - alors que votre propre utilisateur a le droit.";
-$a->strings["At the end of this procedure, we will give you a text to save in a file named .htconfig.php in your Red top folder."] = "Au terme de cette procédure, nous vous transmettrons un texte à sauvegarder dans un fichier nommé .htconfig.php, à la racine de votre installation de Red.";
+$a->strings["At the end of this procedure, we will give you a text to save in a file named .htconfig.php in your Red top folder."] = "Au terme de cette procédure, nous vous transmettrons un texte à sauvegarder dans un fichier nommé .htconfig.php, à la racine de votre installation de La Matrice Rouge.";
$a->strings["You can alternatively skip this procedure and perform a manual installation. Please see the file \"install/INSTALL.txt\" for instructions."] = "Autrement, vous pouvez contourner toute cette procédure et réaliser l'installation manuellement. Merci de consulter le fichier \"install/INSTALL.txt\" pour les instructions détaillées.";
$a->strings[".htconfig.php is writable"] = "Le fichier .htconfig.php est accessible en écriture";
-$a->strings["Red uses the Smarty3 template engine to render its web views. Smarty3 compiles templates to PHP to speed up rendering."] = "Red utilise le moteur de template Smarty3 pour mettre son contenu en forme. Smarty3 compile ses templates vers du PHP natif pour accélérer le rendu.";
-$a->strings["In order to store these compiled templates, the web server needs to have write access to the directory view/tpl/smarty3/ under the Red top level folder."] = "Pour stocker ces templates compilées, le serveur web nécessite de pouvoir écrire dans le répertoire <racine de red>view/tpl/smarty3/.";
+$a->strings["Red uses the Smarty3 template engine to render its web views. Smarty3 compiles templates to PHP to speed up rendering."] = "La Matrice Rouge utilise le moteur de template Smarty3 pour mettre son contenu en forme. Smarty3 compile ses modèles vers du PHP natif pour accélérer le rendu.";
+$a->strings["In order to store these compiled templates, the web server needs to have write access to the directory %s under the Red top level folder."] = "Pour utiliser ces modèles, le serveur doit avoir le droits d'écrire dans le dossier %s.";
$a->strings["Please ensure that the user that your web server runs as (e.g. www-data) has write access to this folder."] = "Merci de vous assurer que l'utilisateur sous lequel le serveur web tourne (le plus souvent, www-data) a bien l'autorisation d'écrire dans ce répertoire.";
-$a->strings["Note: as a security measure, you should give the web server write access to view/tpl/smarty3/ only--not the template files (.tpl) that it contains."] = "Note&nbsp;: pour renforcer la sécurité, vous pouvez décider de ne donner l'accès en écrire qu'au répertoire view/tpl/smarty3 - et pas aux fichiers de templates (.tpl) qu'il contient.";
-$a->strings["view/tpl/smarty3 is writable"] = "view/tpl/smarty3 est accessible en écriture";
-$a->strings["Red uses the store directory to save uploaded files. The web server needs to have write access to the store directory under the Red top level folder"] = "Red utilise le répertoire 'store' - situé à la racine de Red - pour sauvegarder les fichiers envoyés. Le serveur web aura donc besoin de pouvoir y écrire.";
+$a->strings["Note: as a security measure, you should give the web server write access to %s only--not the template files (.tpl) that it contains."] = "Note: Comme mesure de sécurité, assurez vous de donner les droits d'écriture sur %s au serveur web uniquement. Éviter de définir les permissions sur les fichiers individuels (.tpl).";
+$a->strings["%s is writable"] = "Permission d'écriture sur %s activée";
+$a->strings["Red uses the store directory to save uploaded files. The web server needs to have write access to the store directory under the Red top level folder"] = "Red utilise le répertoire 'store' - situé à la racine de votre installation de la Matrice Rouge - pour sauvegarder les fichiers envoyés. Le serveur web aura donc besoin de pouvoir y écrire.";
$a->strings["store is writable"] = "'store' est accessible en écriture";
-$a->strings["SSL certificate validation"] = "Validation du certificat SSL/TLS";
$a->strings["SSL certificate cannot be validated. Fix certificate or disable https access to this site."] = "Le certificat SSL/TLS n'a pas pu être validé. Merci de le corriger, ou de désactiver l'accès https à ce site.";
+$a->strings["If you have https access to your website or allow connections to TCP port 443 (the https: port), you MUST use a browser-valid certificate. You MUST NOT use self-signed certificates!"] = "Si votre serveur supporte les connections encryptées SSL ou s'il permet les connections sur le port TCP 443 (le port utilisé par le protocole https), vous DEVEZ utiliser un certificat valide. Vous ne DEVEZ PAS utiliser un certificat que vous avez vous-mêmes signé!";
+$a->strings["This restriction is incorporated because public posts from you may for example contain references to images on your own hub."] = "Nous avons ajouté cette contrainte pour éviter que vos publications publiques ne fassent référence à des images sur votre propre hub.";
+$a->strings["If your certificate is not recognized, members of other sites (who may themselves have valid certificates) will get a warning message on their own site complaining about security issues."] = "Si votre certificat n'est pas reconnu, les membres des autres sites (avec certificats valides) recevront des messages d'avertissement sur leur propre sites.";
+$a->strings["This can cause usability issues elsewhere (not just on your own site) so we must insist on this requirement."] = "Pour des raisons de compatibilité (sur l'ensemble de la matrice) nous nous devons d'insister sur ce prérequis.";
+$a->strings["Providers are available that issue free certificates which are browser-valid."] = "Il existe une plusieurs autorités de certification qui vous fourniront gratuitement un certificat valide.";
+$a->strings["SSL certificate validation"] = "Validation du certificat SSL/TLS";
$a->strings["Url rewrite in .htaccess is not working. Check your server configuration."] = "La réécriture d'URL définie dans le .htaccess ne fonctionne pas. Merci de vérifier la configuration de votre serveur web.";
$a->strings["Url rewrite is working"] = "La réécriture d'URL fonctionne";
$a->strings["The database configuration file \".htconfig.php\" could not be written. Please use the enclosed text to create a configuration file in your web server root."] = "Le fichier de configuration de la base de données - \".htconfig.php\" - ne peut être écrit. Merci de copier le texte généré dans un fichier à ce nom, à la racine de votre serveur web.";
$a->strings["Errors encountered creating database tables."] = "Erreurs rencontrées pendant la création de tables de BD.";
$a->strings["<h1>What next</h1>"] = "<h1>Et maintenant</h1>";
-$a->strings["IMPORTANT: You will need to [manually] setup a scheduled task for the poller."] = "IMPORTANT&nbsp;: Vous devez créer [manuellement] une tâche planifiée pour les mises-à-jour.";
+$a->strings["IMPORTANT: You will need to [manually] setup a scheduled task for the poller."] = "IMPORTANT&nbsp;: Vous devez créer [manuellement] une tâche planifiée pour les mises à jour.";
+$a->strings["Item not found"] = "Élément introuvable";
+$a->strings["Edit Block"] = "Éditer bloc";
+$a->strings["Delete block?"] = "Supprimer le bloc?";
+$a->strings["Insert YouTube video"] = "Insérer une vidéo YouTube";
+$a->strings["Insert Vorbis [.ogg] video"] = "Insérer une vidéo Vorbis [.ogg]";
+$a->strings["Insert Vorbis [.ogg] audio"] = "Insérer un son Vorbis [.ogg]";
+$a->strings["Delete Block"] = "Supprimer le bloc";
+$a->strings["Layout updated."] = "Agencement pris-en-compte.";
+$a->strings["Edit System Page Description"] = "Éditer la description";
+$a->strings["Layout not found."] = "Agencement introuvable.";
+$a->strings["Module Name:"] = "Nom du module&nbsp;:";
+$a->strings["Layout Help"] = "Aide à la mise en page";
+$a->strings["Edit Layout"] = "Éditer mise-en-page";
+$a->strings["Delete layout?"] = "Supprimer la mise-en-page?";
+$a->strings["Delete Layout"] = "Supprimer mise-en-page";
+$a->strings["Item is not editable"] = "Élément non-éditable";
+$a->strings["Delete item?"] = "Supprimer l'élément?";
+$a->strings["Edit Webpage"] = "Éditer page web";
+$a->strings["Delete webpage?"] = "Supprimer la page web?";
+$a->strings["Delete Webpage"] = "Supprimer page web";
$a->strings["Version %s"] = "Version %s";
$a->strings["Installed plugins/addons/apps:"] = "Extensions/applications installées&nbsp;:";
$a->strings["No installed plugins/addons/apps"] = "Aucune extension/application installée";
-$a->strings["Project Donations"] = "Donations au projet";
-$a->strings["<p>The Red Matrix is provided for you by volunteers working in their spare time. Your support will help us to build a better web. Select the following option for a one-time donation of your choosing</p>"] = "<p>The Red Matrix vous est mis à disposition par des volontaires, qui travaillent dessus sur leur temps libre. Votre soutien nous aidera à construire un meilleur web. Merci de choisir l'option suivante pour une donation ponctuelle de votre choix.</p>";
-$a->strings["<p>or</p>"] = "<p>ou bien</p>";
-$a->strings["Recurring Donation Options"] = "Options de donation récurente";
-$a->strings["Red"] = "Red";
-$a->strings["This is a hub of the Red Matrix - a global cooperative network of decentralised privacy enhanced websites."] = "Ceci est une instance - un hub - de la Matrice Red - un réseau global et coopératif de sites web qui respectent la vie privée de manière décentralisée/acentrée.";
-$a->strings["Running at web location"] = "En train de tourner chez";
-$a->strings["Please visit <a href=\"http://getzot.com\">GetZot.com</a> to learn more about the Red Matrix."] = "Merci de visiter <a href=\"http://getzot.com\">GetZot.com</a> pour en apprendre davantage sur la Matrice Red.";
+$a->strings["Red"] = "Rouge";
+$a->strings["This is a hub of the Red Matrix - a global cooperative network of decentralized privacy enhanced websites."] = "Ceci est un serveur de la Matrice Rouge - un réseau collaboratif de plusieurs serveurs qui assurent la protection de votre vie privée notamment par la décentralisation de votre identité.";
+$a->strings["Running at web location"] = "Installée sur";
+$a->strings["Please visit <a href=\"http://getzot.com\">GetZot.com</a> to learn more about the Red Matrix."] = "Merci de visiter <a href=\"http://getzot.com\">GetZot.com</a> pour en apprendre davantage sur la Matrice Rouge.";
$a->strings["Bug reports and issues: please visit"] = "Pour remonter bogues et problèmes, merci de visiter";
$a->strings["Suggestions, praise, etc. - please email \"redmatrix\" at librelist - dot com"] = "Suggestions, demandes, etc. - merci de vous adresser à \"redmatrix\" à librelist - point com";
$a->strings["Site Administrators"] = "Administrateurs du site";
-$a->strings["Add a Channel"] = "Ajouter un canal";
-$a->strings["A channel is your own collection of related web pages. A channel can be used to hold social network profiles, blogs, conversation groups and forums, celebrity pages, and much more. You may create as many channels as your service provider allows."] = "Un canal est une collection de pages web reliées entre elles, sous votre contrôle. Il peut contenir des profils de réseau social, des blogs, des groupes de conversation, des forums, des pages de célébrités, et bien plus encore. Vous pouvez créer autant de canaux que votre fournisseur vous y autorise.";
-$a->strings["Examples: \"Bob Jameson\", \"Lisa and her Horses\", \"Soccer\", \"Aviation Group\" "] = "Exemples&nbsp;: \"Bob Jameson\", \"Lisa et ses chevaux sauvages\", \"Football\", \"Groupe des amateurs de tir à l'arc\"";
-$a->strings["Choose a short nickname"] = "Choisissez un nom court";
-$a->strings["Your nickname will be used to create an easily remembered channel address (like an email address) which you can share with others."] = "Ce nom court sera utilisé pour créer une adresse de canal, facile à retenir - un peu comme une adresse de courriel - que vous pourrez partager avec d'autres.";
-$a->strings["Or <a href=\"import\">import an existing channel</a> from another location"] = "Ou <a href=\"import\">importez un canal existant</a> à un autre endroit";
-$a->strings["No valid account found."] = "Aucun compte valide trouvé.";
-$a->strings["Password reset request issued. Check your email."] = "Réinitialisation du mot de passe demandée. Vérifiez vos courriels.";
-$a->strings["Site Member (%s)"] = "Membre du site (%s)";
-$a->strings["Password reset requested at %s"] = "Demande de réinitialisation de mot de passe sur %s";
-$a->strings["Request could not be verified. (You may have previously submitted it.) Password reset failed."] = "La demande n'a pas pu être vérifiée. (Peut-être l'avez vous déjà utilisée.) La réinitialisation a échoué.";
-$a->strings["Password Reset"] = "Réinitialiser le mot de passe";
-$a->strings["Your password has been reset as requested."] = "Votre mot de passe a bien été réinitialisé.";
-$a->strings["Your new password is"] = "Votre nouveau mot de passe est";
-$a->strings["Save or copy your new password - and then"] = "Sauvez-le ou copiez-le, puis";
-$a->strings["click here to login"] = "cliquez ici pour vous connecter";
-$a->strings["Your password may be changed from the <em>Settings</em> page after successful login."] = "Votre mot de passe peut être changé depuis la page des <em>Réglages</em> une fois connecté.";
-$a->strings["Your password has changed at %s"] = "Votre mot de passe de %s a été changé";
-$a->strings["Forgot your Password?"] = "Mot de passe oublié?";
-$a->strings["Enter your email address and submit to have your password reset. Then check your email for further instructions."] = "Saisissez votre adresse de courriel, et validez, pour réinitialiser votre mot de passe. Vérifiez ensuite votre boîte à lettres pour la suite des instructions.";
-$a->strings["Email Address"] = "Adresse de courriel";
-$a->strings["Reset"] = "Réinitialiser";
-$a->strings["Name is required"] = "Le nom est requis";
-$a->strings["Key and Secret are required"] = "Clef et secret sont requis";
-$a->strings["Update"] = "Mise-à-jour";
-$a->strings["Passwords do not match. Password unchanged."] = "Les deux saisies du mot de passe ne correspondent pas. Il n'a donc pas été changé.";
-$a->strings["Empty passwords are not allowed. Password unchanged."] = "Le mot de passe ne peut pas être vide. Il n'a donc pas été changé.";
-$a->strings["Password changed."] = "Le mot de passe a été changé.";
-$a->strings["Password update failed. Please try again."] = "La mise-à-jour du mot de passe a échoué. Merci de recommencer.";
-$a->strings["Not valid email."] = "Adresse de courriel non-valide.";
-$a->strings["Protected email address. Cannot change to that email."] = "Adresse de courriel protégée. Impossible de l'utiliser.";
-$a->strings["System failure storing new email. Please try again."] = "Défaillance système lors du stockage de la nouvelle adresse de courriel. Merci de ré-essayer.";
-$a->strings["Settings updated."] = "Réglages sauvegardés.";
-$a->strings["Add application"] = "Ajouter une application";
-$a->strings["Name"] = "Nom";
-$a->strings["Name of application"] = "Nom de l'application";
-$a->strings["Consumer Key"] = "Clef de consommateur";
-$a->strings["Automatically generated - change if desired. Max length 20"] = "Généré automatiquement - à changer si besoin. Longueur maximale 20 caractères.";
-$a->strings["Consumer Secret"] = "Secret de consommateur";
-$a->strings["Redirect"] = "Redirection";
-$a->strings["Redirect URI - leave blank unless your application specifically requires this"] = "URI de redirection - laissez blanc, sauf si l'application a demandé autrement";
-$a->strings["Icon url"] = "URL de l'icône";
-$a->strings["Optional"] = "Facultatif";
-$a->strings["You can't edit this application."] = "Vous ne pouvez pas éditer cette application.";
-$a->strings["Connected Apps"] = "Applications connectées";
-$a->strings["Client key starts with"] = "La clef cliente commence par";
-$a->strings["No name"] = "Sans nom";
-$a->strings["Remove authorization"] = "Révoquer l'autorisation";
-$a->strings["No feature settings configured"] = "Pas de fonctionnalité à configurer";
-$a->strings["Feature Settings"] = "Fonctionnalités";
-$a->strings["Account Settings"] = "Compte";
-$a->strings["Password Settings"] = "Mot de passe";
-$a->strings["New Password:"] = "Nouveau mot de passe&nbsp;:";
-$a->strings["Confirm:"] = "Confirmation&nbsp;:";
-$a->strings["Leave password fields blank unless changing"] = "Laissez les mots de passe vides si vous ne voulez pas les modifier";
-$a->strings["Email Address:"] = "Adresse de courriel&nbsp;:";
-$a->strings["Remove Account"] = "Supprimer le compte";
-$a->strings["Warning: This action is permanent and cannot be reversed."] = "Attention&nbsp;: cette action est permanente et irréversible.";
-$a->strings["Off"] = "Inactif";
-$a->strings["On"] = "Actif";
-$a->strings["Additional Features"] = "Fonctionnalités additionnelles";
-$a->strings["Connector Settings"] = "Connecteurs";
-$a->strings["Display Settings"] = "Affichage";
-$a->strings["Display Theme:"] = "Thème&nbsp;:";
-$a->strings["Mobile Theme:"] = "Thème mobile&nbsp;:";
-$a->strings["Update browser every xx seconds"] = "Rafraîchir le navigateur toutes les xx secondes";
-$a->strings["Minimum of 10 seconds, no maximum"] = "Minimum 10 secondes, pas de maximum";
-$a->strings["Maximum number of conversations to load at any time:"] = "Nombre maximal de conversations pouvant être chargées en même temps&nbsp;:";
-$a->strings["Maximum of 100 items"] = "100 éléments au maximum";
-$a->strings["Don't show emoticons"] = "Ne pas montrer les frimousses/émoticones";
-$a->strings["Do not view remote profiles in frames"] = "";
-$a->strings["By default open in a sub-window of your own site"] = "Par défaut, ouvrir dans une sous-fenêtre de votre propre site";
-$a->strings["Nobody except yourself"] = "Personne sauf vous";
-$a->strings["Only those you specifically allow"] = "Seulement ceux que vous autorisez spécifiquement";
-$a->strings["Anybody in your address book"] = "Tous vos contacts";
-$a->strings["Anybody on this website"] = "Tous les utilisateurs du site";
-$a->strings["Anybody in this network"] = "Tous les utilisateurs du réseau";
-$a->strings["Anybody on the internet"] = "Tout les utilisateurs d'Internet";
-$a->strings["Publish your default profile in the network directory"] = "Publier votre profil par défaut dans l'annuaire du réseau";
-$a->strings["Allow us to suggest you as a potential friend to new members?"] = "Nous autoriser à vous suggérer comme relation potentielle aux nouveaux arrivants?";
-$a->strings["or"] = "ou";
-$a->strings["Your channel address is"] = "Votre canal a pour adresse";
-$a->strings["Channel Settings"] = "Canal";
-$a->strings["Basic Settings"] = "Basique";
-$a->strings["Your Timezone:"] = "Zone de temps&nbsp;:";
-$a->strings["Default Post Location:"] = "Localisation par défaut&nbsp;:";
-$a->strings["Use Browser Location:"] = "Utiliser la localisation fournie par le navigateur&nbsp;:";
-$a->strings["Adult Content"] = "Contenu \"adulte\"";
-$a->strings["This channel frequently or regularly publishes adult content. (Please tag any adult material and/or nudity with #NSFW)"] = "Ce canal publie plus ou moins fréquemment du contenu pour adultes. (Merci d'indiquer tout contenu pour adulte ou potentiellement choquant avec le tag <em>#NSFW</em> - Not Safe For Work)";
-$a->strings["Security and Privacy Settings"] = "Sécurité et vie privée";
-$a->strings["Hide my online presence"] = "Cacher ma présence en ligne";
-$a->strings["Prevents displaying in your profile that you are online"] = "Cacher votre statut (en ligne/hors ligne) sur votre profil";
-$a->strings["Simple Privacy Settings:"] = "Réglages simples&nbsp;:";
-$a->strings["Very Public - <em>extremely permissive (should be used with caution)</em>"] = "Très public - <em>extrèmement permissif (à n'utiliser qu'en connaissance de cause)</em>";
-$a->strings["Typical - <em>default public, privacy when desired (similar to social network permissions but with improved privacy)</em>"] = "Classique - <em>public par défaut, privé en cas de besoin (comparable dans le principe aux réseaux sociaux centralisés, avec un mode privé plus efficace)</em>";
-$a->strings["Private - <em>default private, never open or public</em>"] = "Privé - <em>privé par défaut, jamais ouvert ni public</em>";
-$a->strings["Blocked - <em>default blocked to/from everybody</em>"] = "Bloqué - <em>par défaut, bloqué de/vers tout le monde</em>";
-$a->strings["Advanced Privacy Settings"] = "Réglages avancés";
-$a->strings["Maximum Friend Requests/Day:"] = "Nombre maximum de mises en relation par jour&nbsp;:";
-$a->strings["May reduce spam activity"] = "Contribue à réduire l'impact du spam";
-$a->strings["Default Post Permissions"] = "Permissions par défaut des publications";
-$a->strings["Maximum private messages per day from unknown people:"] = "Nombre maximum de messages privés émanant d'inconnus, par jour&nbsp;:";
-$a->strings["Useful to reduce spamming"] = "Utile pour réduire le spam";
-$a->strings["Notification Settings"] = "Notifications";
-$a->strings["By default post a status message when:"] = "Par défaut, publier un statut quand:";
-$a->strings["accepting a friend request"] = "acceptez une mise en relation";
-$a->strings["joining a forum/community"] = "joignez un forum ou à une communauté";
-$a->strings["making an <em>interesting</em> profile change"] = "faites une modification <em>intéressante</em> de votre profil";
-$a->strings["Send a notification email when:"] = "Envoyer un courriel de notification quand&nbsp;:";
-$a->strings["You receive an introduction"] = "Vous recevez une introduction";
-$a->strings["Your introductions are confirmed"] = "Vos introductions sont acceptées/confirmées";
-$a->strings["Someone writes on your profile wall"] = "Quelqu'un écrit sur votre mur";
-$a->strings["Someone writes a followup comment"] = "Quelqu'un commente sur vos publications";
-$a->strings["You receive a private message"] = "Vous recevez un Message Privé";
-$a->strings["You receive a friend suggestion"] = "Vous recevez une suggestion d'amitié/relation";
-$a->strings["You are tagged in a post"] = "Vous êtes étiqueté dans une publication";
-$a->strings["You are poked/prodded/etc. in a post"] = "Vous êtes tapoté/pointé/etc. dans une publication";
-$a->strings["Advanced Account/Page Type Settings"] = "Type de page/Compte (avancé)";
-$a->strings["Change the behaviour of this account for special situations"] = "Modifie le comportement de ce compte pour certains cas particuliers";
-$a->strings["Please enable expert mode (in Settings > Additional features) to adjust!"] = "Merci d'activer le mode expert (dans Réglages > Fonctionnalités additionelles) pour affiner!";
+$a->strings["Page owner information could not be retrieved."] = "Impossible d'obtenir des informations sur le propriétaire de la page.";
+$a->strings["Album not found."] = "Album introuvable.";
+$a->strings["Delete Album"] = "Supprimer album";
+$a->strings["Delete Photo"] = "Supprimer photo";
+$a->strings["No photos selected"] = "Aucune photo selectionnée";
+$a->strings["Access to this item is restricted."] = "L'accès à l'élément est restreint.";
+$a->strings["You have used %1$.2f Mbytes of %2$.2f Mbytes photo storage."] = "Vous avez utilisé %1$.2f mégaoctets sur les %2$.2f autorisés pour le stockage des photos.";
+$a->strings["You have used %1$.2f Mbytes of photo storage."] = "Vous avez utilisé %1$.2f mégaoctets pour le stockage des photos.";
+$a->strings["Upload Photos"] = "Téléverser des photos";
+$a->strings["New album name: "] = "Créer un album&nbsp;:";
+$a->strings["or existing album name: "] = "ou choisir un album existant&nbsp;:";
+$a->strings["Do not show a status post for this upload"] = "Ne pas publier de statut pour cet envoi";
+$a->strings["Album name could not be decoded"] = "Le nom de l'Album n'a pu être décodé";
+$a->strings["Contact Photos"] = "Photos de contact";
+$a->strings["Edit Album"] = "Éditer l'album";
+$a->strings["Show Newest First"] = "Ordre anté-chronologique";
+$a->strings["Show Oldest First"] = "Ordre chronologique";
+$a->strings["View Photo"] = "Voir la photo";
+$a->strings["Permission denied. Access to this item may be restricted."] = "Permission refusée. L'accès à cet élément peut avoir été restreint.";
+$a->strings["Photo not available"] = "Photo indisponible";
+$a->strings["Use as profile photo"] = "Utiliser comme photo du profil";
+$a->strings["View Full Size"] = "Voir en taille réelle";
+$a->strings["Edit photo"] = "Éditer la photo";
+$a->strings["Rotate CW (right)"] = "Rotation horaire (droite)";
+$a->strings["Rotate CCW (left)"] = "Rotation anti-horaire (gauche)";
+$a->strings["New album name"] = "Nouveau nom d'album&nbsp;:";
+$a->strings["Caption"] = "Titre/légende";
+$a->strings["Add a Tag"] = "Ajouter une étiquette";
+$a->strings["Example: @bob, @Barbara_Jensen, @jim@example.com, #California, #camping"] = "Exemple&nbsp;: @bob, @Barbara_Jensen, @jim@exemple.com, #Ile_de_France, #marathon";
+$a->strings["In This Photo:"] = "Dans cette photo&nbsp;:";
+$a->strings["View Album"] = "Voir l'album";
+$a->strings["Recent Photos"] = "Photos récentes";
+$a->strings["Failed to create source. No channel selected."] = "Impossible de créer la source. Aucun canal selectionné.";
+$a->strings["Source created."] = "Source créée.";
+$a->strings["Source updated."] = "Source mise à jour.";
+$a->strings["*"] = "*";
+$a->strings["Manage remote sources of content for your channel."] = "Gérer les sources distantes du contenu de votre canal.";
+$a->strings["New Source"] = "Nouvelle Source";
+$a->strings["Import all or selected content from the following channel into this channel and distribute it according to your channel settings."] = "Importer tout ou partie du contenu du canal suivant dans le canal en cours, et le distribuer en concordance avec les réglages de votre canal.";
+$a->strings["Only import content with these words (one per line)"] = "N'importer le contenu que s'ils contient ces mots (un par ligne)";
+$a->strings["Leave blank to import all public content"] = "Laissez en blanc pour importer tout le contenu public";
+$a->strings["Channel Name"] = "Nom du Canal";
+$a->strings["Source not found."] = "Source introuvable.";
+$a->strings["Edit Source"] = "Éditer la source";
+$a->strings["Delete Source"] = "Supprimer la source";
+$a->strings["Source removed"] = "Source supprimée";
+$a->strings["Unable to remove source."] = "Impossible de supprimer la source.";
+$a->strings["- select -"] = "- choisir -";
+$a->strings["Event title and start time are required."] = "Un titre et une date de début sont requises pour l'événement.";
+$a->strings["Event not found."] = "Événement introuvable.";
+$a->strings["l, F j"] = "l j F";
+$a->strings["Edit event"] = "Éditer l'événement";
+$a->strings["Create New Event"] = "Créer événement";
+$a->strings["Previous"] = "Précédent";
+$a->strings["hour:minute"] = "heure:minute";
+$a->strings["Event details"] = "Détails de l'événement";
+$a->strings["Format is %s %s. Starting date and Title are required."] = "Le format est %s %s. Date de début et titre obligatoires.";
+$a->strings["Event Starts:"] = "L'événement débute&nbsp;:";
+$a->strings["Required"] = "Requis";
+$a->strings["Finish date/time is not known or not relevant"] = "Date/heure de fin inconnue ou sans objet";
+$a->strings["Event Finishes:"] = "L'événement termine&nbsp;:";
+$a->strings["Adjust for viewer timezone"] = "Ajuster au fuseau horaire du visiteur";
+$a->strings["Description:"] = "Description:";
+$a->strings["Title:"] = "Titre:";
+$a->strings["Share this event"] = "Partager cet événement";
+$a->strings["Permission Denied."] = "Permission refusée.";
+$a->strings["File not found."] = "Fichier introuvable.";
+$a->strings["Edit file permissions"] = "Éditer les permissions du fichier";
+$a->strings["Set/edit permissions"] = "Définir/Édition des authorisations";
+$a->strings["Include all files and sub folders"] = "Inclure tous fichiers et sous-répertoires";
+$a->strings["Return to file list"] = "Retourner à la liste des fichiers";
+$a->strings["Copy/paste this code to attach file to a post"] = "Copiez/collez ce code pour joindre le fichier à une publication";
+$a->strings["Copy/paste this URL to link file from a web page"] = "Copiez/collez cette URL pour lier le fichier depuis une page web";
+$a->strings["Channel added."] = "Canal ajouté.";
+$a->strings["%1\$s is following %2\$s's %3\$s"] = "%1\$s suit %3\$s de %2\$s";
+$a->strings["Contact not found."] = "Contact introuvable.";
+$a->strings["Friend suggestion sent."] = "Suggestion d'amitié/relation envoyée.";
+$a->strings["Suggest Friends"] = "Suggérer une relation";
+$a->strings["Suggest a friend for %s"] = "Suggérer une relation à %s";
+$a->strings["No suggestions available. If this is a new site, please try again in 24 hours."] = "Pas de suggestions pour l'instant. Si le site est récent, merci de re-tenter dans 24 heures.";
+$a->strings["Collection created."] = "Collection créée.";
+$a->strings["Could not create collection."] = "Impossible de créer la collection.";
+$a->strings["Collection updated."] = "Collection mise à jour.";
+$a->strings["Create a collection of channels."] = "Créez une collection de canaux.";
+$a->strings["Collection Name: "] = "Nom de la collection&nbsp;:";
+$a->strings["Members are visible to other channels"] = "Les membres sont visibles par les autres canaux";
+$a->strings["Collection removed."] = "Collection supprimée.";
+$a->strings["Unable to remove collection."] = "Impossible de supprimer la collection.";
+$a->strings["Collection Editor"] = "Éditeur de collection";
+$a->strings["Members"] = "Membres";
+$a->strings["All Connected Channels"] = "Tous canaux connectés";
+$a->strings["Click on a channel to add or remove."] = "Cliquer sur un canal pour l'ajouter ou le supprimer";
+$a->strings["%1\$s tagged %2\$s's %3\$s with %4\$s"] = "%1\$s a étiqueté le %3\$s de %2\$s par %4\$s";
+$a->strings["Help:"] = "Aide&nbsp;:";
+$a->strings["Not Found"] = "Introuvable";
+$a->strings["Tag removed"] = "Étiquette retirée";
+$a->strings["Remove Item Tag"] = "Retirer une étiquette à l'élément";
+$a->strings["Select a tag to remove: "] = "Étiquette à retirer&nbsp;:";
+$a->strings["Theme settings updated."] = "Réglages du thème sauvegardés.";
+$a->strings["Site"] = "Site";
+$a->strings["Accounts"] = "Comptes";
+$a->strings["Channels"] = "Canaux";
+$a->strings["Plugins"] = "Extensions";
+$a->strings["Themes"] = "Thèmes";
+$a->strings["Server"] = "Serveur";
+$a->strings["Profile Config"] = "Configurations du profil";
+$a->strings["DB updates"] = "MàJ BD";
+$a->strings["Logs"] = "Journaux";
+$a->strings["Plugin Features"] = "Fonctionnalités liées aux extensions";
+$a->strings["User registrations waiting for confirmation"] = "Inscriptions en attente";
+$a->strings["Message queues"] = "File des messages";
+$a->strings["Administration"] = "Administration";
+$a->strings["Summary"] = "Résumé";
+$a->strings["Registered users"] = "Utilisateurs inscrits";
+$a->strings["Pending registrations"] = "Inscriptions en attente";
+$a->strings["Version"] = "Version";
+$a->strings["Active plugins"] = "Extensions actives";
+$a->strings["Site settings updated."] = "Réglages du site sauvegardés.";
+$a->strings["No special theme for accessibility"] = "Pas de thème spécifique pour l'accessibilité";
+$a->strings["Yes - with approval"] = "Oui - avec approbation";
+$a->strings["My site is not a public server"] = "Mon site n'est pas un serveur public";
+$a->strings["My site has paid access only"] = "Mon site est payant";
+$a->strings["My site has free access only"] = "Mon site est gratuit";
+$a->strings["My site offers free accounts with optional paid upgrades"] = "Mon site offre des comptes gratuits avec des ajouts payants";
+$a->strings["File upload"] = "Envoi de fichier";
+$a->strings["Policies"] = "Stratégies";
+$a->strings["Site name"] = "Nom du site";
+$a->strings["Banner/Logo"] = "Bannière/logo";
+$a->strings["Administrator Information"] = "Informations sur l'administrateur";
+$a->strings["Contact information for site administrators. Displayed on siteinfo page. BBCode can be used here"] = "Coordonnées de l'administrateur du site. Affichée sur la page 'siteinfo'. Vous pouvez utiliser du BBCode ici";
+$a->strings["System language"] = "Langue du système";
+$a->strings["System theme"] = "Thème du système";
+$a->strings["Default system theme - may be over-ridden by user profiles - <a href='#' id='cnftheme'>change theme settings</a>"] = "Thème par défaut - il peut être changé pour chaque profil utilisateur - <a href='#' id='cnftheme'>modifier le thème</a>";
+$a->strings["Mobile system theme"] = "Thème système pour mobile";
+$a->strings["Theme for mobile devices"] = "Thème dédié aux périphériques mobiles";
+$a->strings["Accessibility system theme"] = "Thème système pour l'accessibilité";
+$a->strings["Accessibility theme"] = "Thème pour l'accessibilité";
+$a->strings["Channel to use for this website's static pages"] = "Canal à utiliser pour les pages statiques de ce site";
+$a->strings["Site Channel"] = "Canal de ce HUB";
+$a->strings["Maximum image size"] = "Taille maximale des images";
+$a->strings["Maximum size in bytes of uploaded images. Default is 0, which means no limits."] = "Taille maximum, en octets, des images envoyées. Par défaut 0, soit sans limite.";
+$a->strings["Does this site allow new member registration?"] = "Est-ce que l'enregistrement de nouveau membres sur ce site est autorisé?";
+$a->strings["Which best describes the types of account offered by this hub?"] = "Choisissez le type de comptes offert sur ce hub?";
+$a->strings["Register text"] = "Texte d'inscription";
+$a->strings["Will be displayed prominently on the registration page."] = "Sera affiché de manière bien visible sur le formulaire d'inscription.";
+$a->strings["Accounts abandoned after x days"] = "Les comptes sont abandonnés après x jours";
+$a->strings["Will not waste system resources polling external sites for abandonded accounts. Enter 0 for no time limit."] = "Pour éviter de gaspiller les ressources du système en essayer de mettre à jour des comptes abandonnés. Mettez 0 pour ne pas avoir de limite de temps.";
+$a->strings["Allowed friend domains"] = "Domaines amicaux";
+$a->strings["Comma separated list of domains which are allowed to establish friendships with this site. Wildcards are accepted. Empty to allow any domains"] = "Liste de noms de domaines - séparés par des virgules - pour lesquels ce site acceptera les demandes d'amitié ou de mise en relation. Les caractères génériques (*) sont acceptés. Laissez vide pour accepter tous les domaines.";
+$a->strings["Allowed email domains"] = "Domaines de courriels amicaux";
+$a->strings["Comma separated list of domains which are allowed in email addresses for registrations to this site. Wildcards are accepted. Empty to allow any domains"] = "Liste de noms de domaines - séparés par des virgules - dont les adresses de courriel seront autorisées lors de l'inscription à ce site. Les caractères génériques (*) sont acceptés. Laissez vide pour accepter tous les domaines.";
+$a->strings["Block public"] = "Bloquer public";
+$a->strings["Check to block public access to all otherwise public personal pages on this site unless you are currently logged in."] = "Cocher pour interdire tout accès public, y compris aux pages marquées comme publiques, aux visiteurs anonymes.";
+$a->strings["Force publish"] = "Forcer publication";
+$a->strings["Check to force all profiles on this site to be listed in the site directory."] = "Cocher pour forcer la publication de tous les profils du site dans l'annuaire.";
+$a->strings["Disable discovery tab"] = "Désactiver l'onglet \"À découvrir\"";
+$a->strings["Remove the tab in the network view with public content pulled from sources chosen for this site."] = "Ne pas afficher d'onglet avec des contenus publics automatiquement rassemblées depuis des sources choisies pour ce site.";
+$a->strings["No login on Homepage"] = "Pas de connexion depuis la page d'accueil";
+$a->strings["Check to hide the login form from your sites homepage when visitors arrive who are not logged in (e.g. when you put the content of the homepage in via the site channel)."] = "Cocher pour ne pas montrer le formulaire de connexion sur la page d'accueil (typiquement, pour quand vous utilisez la page d'accueil pour afficher du contenu via le canal du site).";
+$a->strings["Proxy user"] = "Utilisateurs du proxy";
+$a->strings["Proxy URL"] = "URL du proxy (visiter @proxy-list)";
+$a->strings["Network timeout"] = "Délai maximal du réseau";
+$a->strings["Value is in seconds. Set to 0 for unlimited (not recommended)."] = "En secondes. Mettre à 0 pour ne pas avoir de délai maximal (pas recommandé).";
+$a->strings["Delivery interval"] = "Intervalle de distribution";
+$a->strings["Delay background delivery processes by this many seconds to reduce system load. Recommend: 4-5 for shared hosts, 2-3 for virtual private servers. 0-1 for large dedicated servers."] = "Temporise le processus de distribution de tant de secondes pour réduire la charge sur le système. Valeurs recommandées&nbsp;: 4-5 pour les serveurs mutualisés, 2-3 pour les VPS. 0-1 pour les gros serveurs dédiés.";
+$a->strings["Poll interval"] = "Intervalle de scrutation";
+$a->strings["Delay background polling processes by this many seconds to reduce system load. If 0, use delivery interval."] = "Temporise le processus de scrutation en tâche de fond de tant de secondes, pour réduire la charge. Si 0, utilise l'intervalle de distribution.";
+$a->strings["Maximum Load Average"] = "Charge moyenne maximale";
+$a->strings["Maximum system load before delivery and poll processes are deferred - default 50."] = "Charge système maximale au-delà de laquelle distribution et scrutation sont mis en pause - par défaut 50.";
+$a->strings["No server found"] = "Serveur introuvable";
+$a->strings["ID"] = "ID";
+$a->strings["for channel"] = "pour le canal";
+$a->strings["on server"] = "sur le serveur";
+$a->strings["Status"] = "État";
+$a->strings["Update has been marked successful"] = "La mise à jour a été marquée comme réussie";
+$a->strings["Executing %s failed. Check system logs."] = "L'éxecution de %s a échoué. Merci de vérifier les journaux du système.";
+$a->strings["Update %s was successfully applied."] = "La mise à jour %s a été appliquée avec succès.";
+$a->strings["Update %s did not return a status. Unknown if it succeeded."] = "La mise à jour %s n'a pas retourné d'information. Impossible de savoir si elle a réussi ou non.";
+$a->strings["Update function %s could not be found."] = "La fonction de mise à jour %s est introuvable.";
+$a->strings["No failed updates."] = "Aucune mise à jour défaillante.";
+$a->strings["Failed Updates"] = "Mises à jour défaillantes";
+$a->strings["Mark success (if update was manually applied)"] = "Marquer comme réussie (si la mise à jour a été réalisée manuellement)";
+$a->strings["Attempt to execute this update step automatically"] = "Tenter de réaliser cette étape de mise à jour automatiquement";
+$a->strings["%s user blocked/unblocked"] = array(
+ 0 => "%s utilisateur bloqué/débloqué",
+ 1 => "%s utilisateurs bloqués/débloqués",
+);
+$a->strings["%s user deleted"] = array(
+ 0 => "%s utilisateur supprimé",
+ 1 => "%s utilisateurs supprimés",
+);
+$a->strings["Account not found"] = "Compte introuvable";
+$a->strings["User '%s' deleted"] = "Utilisateur '%s' supprimé";
+$a->strings["User '%s' unblocked"] = "Utilisateur '%s' débloqué";
+$a->strings["User '%s' blocked"] = "Utilisateur '%s' bloqué";
+$a->strings["Users"] = "Utilisateurs";
+$a->strings["select all"] = "tout sélectionner";
+$a->strings["User registrations waiting for confirm"] = "Inscriptions en attente d'approbation";
+$a->strings["Request date"] = "Date de la demande";
+$a->strings["No registrations."] = "Pas d'inscriptions.";
+$a->strings["Approve"] = "Approuver";
+$a->strings["Deny"] = "Refuser";
+$a->strings["Register date"] = "Date d'inscription";
+$a->strings["Last login"] = "Dernière connexion";
+$a->strings["Expires"] = "Expire";
+$a->strings["Service Class"] = "Classe de service";
+$a->strings["Selected users will be deleted!\\n\\nEverything these users had posted on this site will be permanently deleted!\\n\\nAre you sure?"] = "Les utilisateurs sélectionnés seront supprimés!\\n\\nTout ce que ces utilisateurs ont publié sur ce site sera détruit de manière définitive!\\n\\nÊtes-vous certain?";
+$a->strings["The user {0} will be deleted!\\n\\nEverything this user has posted on this site will be permanently deleted!\\n\\nAre you sure?"] = "L'utilisateur {0} sera supprimé!\\n\\nTout ce que cet utilisateur a publié sur ce site sera détruit de manière définitive!\\n\\nÊtes-vous certain?";
+$a->strings["%s channel censored/uncensored"] = array(
+ 0 => "%s canal censuré/non-censuré",
+ 1 => "%s canaux censurés/non-censurés",
+);
+$a->strings["%s channel deleted"] = array(
+ 0 => "%s canal supprimé",
+ 1 => "%s canaux supprimés",
+);
+$a->strings["Channel not found"] = "Canal introuvable";
+$a->strings["Channel '%s' deleted"] = "Canal '%s' supprimé";
+$a->strings["Channel '%s' uncensored"] = "Canal '%s' non-censuré";
+$a->strings["Channel '%s' censored"] = "Canal '%s' censuré";
+$a->strings["Censor"] = "Censurer";
+$a->strings["Uncensor"] = "Ne plus censurer";
+$a->strings["UID"] = "UID";
+$a->strings["Selected channels will be deleted!\\n\\nEverything that was posted in these channels on this site will be permanently deleted!\\n\\nAre you sure?"] = "Les canaux sélectionnés seront supprimés!\\n\\nTout ce qui a été publié dans ces canaux sur ce site sera définitivement supprimé!\\n\\nÊtes-vous certain?";
+$a->strings["The channel {0} will be deleted!\\n\\nEverything that was posted in this channel on this site will be permanently deleted!\\n\\nAre you sure?"] = "Le canal {0} sera supprimé!\\n\\nTout ce qui a été publié sur ce canal sera définitivement supprimé!\\n\\nÊtes-vous certain?";
+$a->strings["Plugin %s disabled."] = "Extension %s désactivée.";
+$a->strings["Plugin %s enabled."] = "Extension %s activée.";
+$a->strings["Disable"] = "Désactiver";
+$a->strings["Enable"] = "Activer";
+$a->strings["Toggle"] = "(Dés)activer";
+$a->strings["Author: "] = "Auteur&nbsp;:";
+$a->strings["Maintainer: "] = "Maintenu par&nbsp;:";
+$a->strings["No themes found."] = "Aucun thème trouvé.";
+$a->strings["Screenshot"] = "Aperçu";
+$a->strings["[Experimental]"] = "[Expérimental]";
+$a->strings["[Unsupported]"] = "[Non-supporté]";
+$a->strings["Log settings updated."] = "Réglages du journal sauvegardés.";
+$a->strings["Clear"] = "Vider";
+$a->strings["Debugging"] = "Débogage";
+$a->strings["Log file"] = "Fichier du journal";
+$a->strings["Must be writable by web server. Relative to your Red top-level directory."] = "Doit être accessible en écriture par le serveur web. Chemin relatif à la racine de votre installation de la Matrice Rouge.";
+$a->strings["Log level"] = "Niveau de journalisation";
+$a->strings["Thing updated"] = "Chose mise à jour";
+$a->strings["Object store: failed"] = "Stockage de l'objet&nbsp;: échec";
+$a->strings["Thing added"] = "Chose ajoutée";
+$a->strings["OBJ: %1\$s %2\$s %3\$s"] = "OBJ: %1\$s %2\$s %3\$s";
+$a->strings["Show Thing"] = "Montrer chose";
+$a->strings["item not found."] = "élément introuvable.";
+$a->strings["Edit Thing"] = "Éditer chose";
+$a->strings["Select a profile"] = "Choisissez un profil";
+$a->strings["Post an activity"] = "Publier une activité";
+$a->strings["Only sends to viewers of the applicable profile"] = "Envoi exclusivement au membres autorisé de ce profil";
+$a->strings["Name of thing e.g. something"] = "Nom de la chose, p.ex. quelque-chose";
+$a->strings["URL of thing (optional)"] = "URL de la chose (optionnel)";
+$a->strings["URL for photo of thing (optional)"] = "URL de l'image de la chose (optionnel)";
+$a->strings["Add Thing to your Profile"] = "Ajouter la chose à votre profil";
$a->strings["Nothing to import."] = "Rien à importer.";
$a->strings["Unable to download data from old server"] = "Impossible de récupérer les données de l'ancien serveur";
$a->strings["Imported file is empty."] = "Le fichier importé est vide.";
@@ -1470,28 +1656,75 @@ $a->strings["Cloned channel not found. Import failed."] = "Le canal cloné n'a p
$a->strings["Import completed."] = "L'import est terminé.";
$a->strings["You must be logged in to use this feature."] = "Vous devez vous connecter pour utiliser cette fonctionnalité.";
$a->strings["Import Channel"] = "Importation de canal";
-$a->strings["Use this form to import an existing channel from a different server/hub. You may retrieve the channel identity from the old server/hub via the network or provide an export file. Only identity and connections/relationships will be imported. Importation of content is not yet available."] = "Utilisez ce formulaire pour importer un canal existant sur un serveur différent. Vous pouvez récupérer l'identité du canal sur l'ancien serveur directement par le réseau, ou bien fournir un fichier d'export. Seules les données d'identité et de relations seront importées. L'importation des contenus n'est pas encore disponible.";
+$a->strings["Use this form to import an existing channel from a different server/hub. You may retrieve the channel identity from the old server/hub via the network or provide an export file. Only identity and connections/relationships will be imported. Importation of content is not yet available."] = "Utilisez ce formulaire pour importer un canal existant sur un serveur différent. Vous pouvez récupérer l'identité du canal sur l'ancien serveur directement par le réseau, ou bien fournir un fichier d'export. Seules les données d'identité et de relations seront importées. L'importation du contenu est toujours en développement.";
$a->strings["File to Upload"] = "Fichier à envoyer";
$a->strings["Or provide the old server/hub details"] = "Ou fournissez les détails de l'ancien serveur";
$a->strings["Your old identity address (xyz@example.com)"] = "Votre ancienne identité (zyx@exemple.com)";
$a->strings["Your old login email address"] = "Votre ancienne adresse de courriel";
$a->strings["Your old login password"] = "Votre ancien mot de passe";
$a->strings["For either option, please choose whether to make this hub your new primary address, or whether your old location should continue this role. You will be able to post from either location, but only one can be marked as the primary location for files, photos, and media."] = "Quelle que soit l'option choisie, merci de décider si cette nouvelle adresse sera la primaire, ou si votre ancienne adresse continuera à jouer ce rôle. Vous pourrez publier depuis l'adresse de votre choix, mais une seule peut être déclarée comme stockage primaire de vos fichiers/photos/media.";
-$a->strings["Make this hub my primary location"] = "Faire de cette adresse ma principale";
-$a->strings["You have created %1$.0f of %2$.0f allowed channels."] = "Vous avez créé %1$.0f des %2$.0f canaux autorisés.";
-$a->strings["Create a new channel"] = "Créer un nouveau canal";
-$a->strings["Channel Manager"] = "Gestionnaire du canal";
-$a->strings["Current Channel"] = "Canal actif";
-$a->strings["Attach to one of your channels by selecting it."] = "Branchez-vous à l'un de vos canaux en le selectionnant.";
-$a->strings["Default Channel"] = "Canal par défaut";
-$a->strings["Make Default"] = "Définir comme défaut";
-$a->strings["Total votes"] = "Suffrages exprimés";
-$a->strings["Average Rating"] = "Note moyenne";
-$a->strings["Profile Match"] = "Profils similaires";
-$a->strings["No keywords to match. Please add keywords to your default profile."] = "Aucun mot-clef à comparer. Merci d'ajouter des mots-clefs à votre profil par défaut.";
-$a->strings["is interested in:"] = "s'intéresse à&nbsp;:";
-$a->strings["No matches"] = "Pas de correspondance";
-$a->strings["invalid target signature"] = "signature de la cible invalide";
+$a->strings["Make this hub my primary location"] = "Faire de ce hub l'adresse principale de ce canal";
+$a->strings["Total invitation limit exceeded."] = "Limite du nombre total d'invitation dépassée.";
+$a->strings["%s : Not a valid email address."] = "%s&nbsp: adresse courriel invalide.";
+$a->strings["Please join us on Red"] = "Rejoignez-nous sur la Matrice Rouge";
+$a->strings["Invitation limit exceeded. Please contact your site administrator."] = "Limite d'invitations dépassée. Merci de contacter l'administration de votre site.";
+$a->strings["%s : Message delivery failed."] = "%s&nbsp;: Échec dans la livraison du message.";
+$a->strings["%d message sent."] = array(
+ 0 => "%d message envoyé.",
+ 1 => "%d messages envoyés.",
+);
+$a->strings["You have no more invitations available"] = "Vous ne disposez plus d'aucune invitation";
+$a->strings["Send invitations"] = "Envoyer des invitations";
+$a->strings["Enter email addresses, one per line:"] = "Entrez les adresses de courriel, une par ligne&nbsp;:";
+$a->strings["Your message:"] = "Votre message&nbsp;:";
+$a->strings["Please join my community on RedMatrix."] = "Veuillez me rejoindre sur la Matrice Rouge.";
+$a->strings["You will need to supply this invitation code: "] = "Vous aurez besoin de fournir le code suivant:";
+$a->strings["1. Register at any RedMatrix location (they are all inter-connected)"] = "1. Enregistrez-vous sur n'importe quel serveurs ( ils sont tous inter-connectés )";
+$a->strings["2. Enter my RedMatrix network address into the site searchbar."] = "2. Saisissez l'adresse de mon canal dans la barre de recherche du site.";
+$a->strings["or visit "] = "ou visitez";
+$a->strings["3. Click [Connect]"] = "3. Click sur [Ajouter]";
+$a->strings["Unable to locate original post."] = "Impossible de localiser la publication initiale.";
+$a->strings["Empty post discarded."] = "Publication vide annulée.";
+$a->strings["Executable content type not permitted to this channel."] = "Les contenus de type 'exécutable' ne sont pas autorisés sur ce canal.";
+$a->strings["System error. Post not saved."] = "Erreur système. Publication non sauvegardée.";
+$a->strings["You have reached your limit of %1$.0f top level posts."] = "Vous avez atteint votre limite de %1$.0f contributions \"racine\".";
+$a->strings["You have reached your limit of %1$.0f webpages."] = "Vous avez atteint votre limite de %1$.0f pages web.";
+$a->strings["[Embedded content - reload page to view]"] = "[Contenu embarqué - rechargez la page pour le voir]";
+$a->strings["Help with this feature"] = "Aide avec cette fonctionnalité";
+$a->strings["Layout Name"] = "Nom de la mise-en-page";
+$a->strings["Like/Dislike"] = "J'aime/Je Déteste";
+$a->strings["This action is restricted to members."] = "Cette action est réservée aux membres.";
+$a->strings["Please <a href=\"rmagic\">login with your RedMatrix ID</a> or <a href=\"register\">register as a new RedMatrix member</a> to continue."] = "SVP <a href=\"rmagic\">connectez-vous</a> ou <a href=\"register\">enregistrez-vous</a> pour continuer.";
+$a->strings["Invalid request."] = "Requête invalide.";
+$a->strings["thing"] = "chose";
+$a->strings["Channel unavailable."] = "Canal indisponible.";
+$a->strings["Previous action reversed."] = "Action précédente annulée.";
+$a->strings["Action completed."] = "Action complétée.";
+$a->strings["Thank you."] = "Merci.";
+$a->strings["Remote privacy information not available."] = "Les informations de vie privée à distance ne sont pas disponibles.";
+$a->strings["Visible to:"] = "Visible par&nbsp;:";
+$a->strings["No connections."] = "Pas de relation.";
+$a->strings["Visit %s's profile [%s]"] = "Visiter le profil de %s [%s]";
+$a->strings["View Connnections"] = "Voir les relations";
+$a->strings["No valid account found."] = "Aucun compte valide trouvé.";
+$a->strings["Password reset request issued. Check your email."] = "Réinitialisation du mot de passe demandée. Vérifiez vos courriels.";
+$a->strings["Site Member (%s)"] = "Membre du site (%s)";
+$a->strings["Password reset requested at %s"] = "Demande de réinitialisation du mot de passe sur %s";
+$a->strings["Request could not be verified. (You may have previously submitted it.) Password reset failed."] = "La demande n'a pas pu être vérifiée. (Peut-être l'avez vous déjà utilisée.) La réinitialisation a échoué.";
+$a->strings["Password Reset"] = "Réinitialiser le mot de passe";
+$a->strings["Your password has been reset as requested."] = "Votre mot de passe a bien été réinitialisé.";
+$a->strings["Your new password is"] = "Votre nouveau mot de passe est";
+$a->strings["Save or copy your new password - and then"] = "Sauvez-le ou copiez-le, puis";
+$a->strings["click here to login"] = "cliquez ici pour vous connecter";
+$a->strings["Your password may be changed from the <em>Settings</em> page after successful login."] = "Votre mot de passe peut être changé depuis la page des <em>Réglages</em> une fois connecté.";
+$a->strings["Your password has changed at %s"] = "Votre mot de passe de %s a été changé";
+$a->strings["Forgot your Password?"] = "Mot de passe oublié?";
+$a->strings["Enter your email address and submit to have your password reset. Then check your email for further instructions."] = "Saisissez votre adresse de courriel, et validez, pour réinitialiser votre mot de passe. Vérifiez ensuite votre boîte à lettres pour la suite des instructions.";
+$a->strings["Email Address"] = "Adresse de courriel";
+$a->strings["Reset"] = "Réinitialiser";
+$a->strings["Hub not found."] = "Hub introuvable.";
+$a->strings["Total votes"] = "Total des votes";
+$a->strings["Average Rating"] = "Évaluation moyenne";
$a->strings["Unable to lookup recipient."] = "Impossible de localiser le destinataire.";
$a->strings["Unable to communicate with requested channel."] = "Impossible de communiquer avec le canal demandé.";
$a->strings["Cannot verify requested channel."] = "Impossible de vérifier le canal demandé.";
@@ -1502,211 +1735,113 @@ $a->strings["Message recalled."] = "Message annulé/rappelé.";
$a->strings["Send Private Message"] = "Envoyer un Message Privé";
$a->strings["To:"] = "À&nbsp;:";
$a->strings["Subject:"] = "Sujet&nbsp;:";
+$a->strings["Send"] = "Envoyer";
$a->strings["Message not found."] = "Message introuvable.";
$a->strings["Delete message"] = "Supprimer message";
$a->strings["Recall message"] = "Rappeler/annuler le message";
$a->strings["Message has been recalled."] = "Le message a été rappelé.";
$a->strings["Private Conversation"] = "Conversation privée";
$a->strings["Delete conversation"] = "Supprimer conversation";
-$a->strings["No secure communications available. You <strong>may</strong> be able to respond from the sender's profile page."] = "Aucune communication sécurisée n'est possible en l'état. Vous pourrez <strong>peut-être</strong> répondre depuis la page de profil de l'émetteur.";
+$a->strings["No secure communications available. You <strong>may</strong> be able to respond from the sender's profile page."] = "Aucune communication sécurisée n'est possible. Vous pourrez <strong>peut-être</strong> répondre depuis la page de profil de l'émetteur.";
$a->strings["Send Reply"] = "Envoyer une réponse";
-$a->strings["Edit Layout"] = "Éditer mise-en-page";
-$a->strings["Delete layout?"] = "Supprimer la mise-en-page?";
-$a->strings["Delete Layout"] = "Supprimer mise-en-page";
-$a->strings["Image uploaded but image cropping failed."] = "L'image a été téléversée, mais le recadrage a échoué.";
-$a->strings["Image resize failed."] = "Le retaillage de l'image a échoué.";
-$a->strings["Shift-reload the page or clear browser cache if the new photo does not display immediately."] = "Shirt-rechargez votre page, ou videz le cache du navigateur si la photo ne s'affiche pas immédiatement.";
-$a->strings["Image exceeds size limit of %d"] = "L'image dépasse la taille limite de %d";
-$a->strings["Unable to process image."] = "Impossible de traîter l'image.";
-$a->strings["Photo not available."] = "Photo inaccessible.";
-$a->strings["Upload File:"] = "Fichier&nbsp;:";
-$a->strings["Select a profile:"] = "Choisir un profil&nbsp;:";
-$a->strings["Upload Profile Photo"] = "Téléverser une photo de profil";
-$a->strings["Upload"] = "Envoyer";
-$a->strings["skip this step"] = "passer cette étape";
-$a->strings["select a photo from your photo albums"] = "choisir une photo dans vos albums";
-$a->strings["Crop Image"] = "Recadrer l'image";
-$a->strings["Please adjust the image cropping for optimum viewing."] = "Merci d'ajuter le cadre pour une visualisation optimale.";
-$a->strings["Done Editing"] = "J'ai terminé";
-$a->strings["Image uploaded successfully."] = "Image téléversée avec succès.";
-$a->strings["Image upload failed."] = "Le téléversement a échoué.";
-$a->strings["Image size reduction [%s] failed."] = "La réduction de taille [%s] a échoué.";
-$a->strings["Blocked"] = "Bloqué";
-$a->strings["Ignored"] = "Ignoré";
-$a->strings["Hidden"] = "Caché";
-$a->strings["Archived"] = "Archivé";
-$a->strings["All"] = "Tout";
-$a->strings["Suggest new connections"] = "Suggérer de nouvelles relations";
-$a->strings["Show pending (new) connections"] = "Voir les (nouvelles) relations en attente";
-$a->strings["Show all connections"] = "Voir toutes les relations";
-$a->strings["Unblocked"] = "Non bloquées";
-$a->strings["Only show unblocked connections"] = "Ne montrer que les relations non-bloquées";
-$a->strings["Only show blocked connections"] = "Ne montrer que les relations bloquées";
-$a->strings["Only show ignored connections"] = "Ne montrer que les relations ignorées";
-$a->strings["Only show archived connections"] = "Ne montrer que les relations archivées";
-$a->strings["Only show hidden connections"] = "Ne montrer que les relations cachées";
-$a->strings["%1\$s [%2\$s]"] = "%1\$s [%2\$s]";
-$a->strings["Edit contact"] = "Éditer contact";
-$a->strings["Search your connections"] = "Chercher parmi vos relations";
-$a->strings["Finding: "] = "Recherche&nbsp;:";
+$a->strings["You have created %1$.0f of %2$.0f allowed channels."] = "Vous avez créé %1$.0f des %2$.0f canaux autorisés.";
+$a->strings["Create a new channel"] = "Créer un nouveau canal";
+$a->strings["Channel Manager"] = "Gestionnaire du canal";
+$a->strings["Current Channel"] = "Canal actif";
+$a->strings["Attach to one of your channels by selecting it."] = "Branchez-vous à l'un de vos canaux en le selectionnant.";
+$a->strings["Default Channel"] = "Canal par défaut";
+$a->strings["Make Default"] = "Définir comme défaut";
+$a->strings["Wall Photos"] = "Photos du mur";
+$a->strings["Profile Match"] = "Profils similaires";
+$a->strings["No keywords to match. Please add keywords to your default profile."] = "Aucun mot-clef à comparer. Merci d'ajouter des mots-clefs à votre profil par défaut.";
+$a->strings["is interested in:"] = "s'intéresse à&nbsp;:";
+$a->strings["No matches"] = "Pas de correspondance";
+$a->strings["Menu updated."] = "Menu mis à jour.";
+$a->strings["Unable to update menu."] = "Impossible de mettre le menu à jour.";
+$a->strings["Menu created."] = "Menu créé.";
+$a->strings["Unable to create menu."] = "Impossible de créer le menu.";
+$a->strings["Manage Menus"] = "Gérer les menus";
+$a->strings["Drop"] = "Supprimer";
+$a->strings["Create a new menu"] = "Créer un nouveau menu";
+$a->strings["Delete this menu"] = "Supprimer ce menu";
+$a->strings["Edit menu contents"] = "Éditer le contenu du menu";
+$a->strings["Edit this menu"] = "Éditer le menu";
+$a->strings["New Menu"] = "Nouveau menu";
+$a->strings["Menu name"] = "Nom du menu";
+$a->strings["Must be unique, only seen by you"] = "Doit être unique, ne sera vu que par vous";
+$a->strings["Menu title"] = "Titre du menu";
+$a->strings["Menu title as seen by others"] = "Titre du menu tel que vu par les visiteurs";
+$a->strings["Allow bookmarks"] = "Autoriser l'usage de favoris";
+$a->strings["Menu may be used to store saved bookmarks"] = "Le menu pourra être utilisé pour stocker des favoris";
+$a->strings["Menu deleted."] = "Menu supprimé.";
+$a->strings["Menu could not be deleted."] = "Impossible de supprimer le menu.";
+$a->strings["Edit Menu"] = "Éditer le menu";
+$a->strings["Add or remove entries to this menu"] = "Ajouter/supprimer des entrées à ce menu";
+$a->strings["Conversation removed."] = "Conversation supprimée.";
+$a->strings["No messages."] = "Pas de message.";
+$a->strings["D, d M Y - g:i A"] = "D d Y - H:i";
+$a->strings["Add a Channel"] = "Ajouter un canal";
+$a->strings["A channel is your own collection of related web pages. A channel can be used to hold social network profiles, blogs, conversation groups and forums, celebrity pages, and much more. You may create as many channels as your service provider allows."] = "Un canal est une collection de pages web reliées entre elles, sous votre contrôle. Il peut contenir des profils de réseau social, des blogs, des groupes de conversation, des forums, des pages de célébrités, et bien plus encore. Vous pouvez créer autant de canaux que votre administrateur de hub vous y autorise.";
+$a->strings["Examples: \"Bob Jameson\", \"Lisa and her Horses\", \"Soccer\", \"Aviation Group\" "] = "Exemples&nbsp;: \"Bob Jameson\", \"Lisa et ses chevaux sauvages\", \"Football\", \"Groupe des amateurs de tir à l'arc\"";
+$a->strings["Choose a short nickname"] = "Choisissez un alias";
+$a->strings["Your nickname will be used to create an easily remembered channel address (like an email address) which you can share with others."] = "Cet alias sera utilisé pour créer une adresse de canal, facile à retenir - un peu comme une adresse de courriel - que vous pourrez partager avec d'autres.";
+$a->strings["Or <a href=\"import\">import an existing channel</a> from another location"] = "Ou <a href=\"import\">importez un canal existant</a> à un autre endroit";
$a->strings["Invalid request identifier."] = "Identifiant de requête invalide.";
-$a->strings["Discard"] = "Défausser";
+$a->strings["Discard"] = "Annuler";
$a->strings["No more system notifications."] = "Pas d'autre notification du système.";
$a->strings["System Notifications"] = "Notifications du système";
-$a->strings["Block Name"] = "Nom du bloc";
-$a->strings["Unable to find your hub."] = "Impossible de trouver votre instance.";
+$a->strings["Unable to find your hub."] = "Impossible de trouver votre hub.";
$a->strings["Post successful."] = "Contribution effectuée.";
-$a->strings["Edit Webpage"] = "Éditer page web";
-$a->strings["Delete webpage?"] = "Supprimer la page web?";
-$a->strings["Delete Webpage"] = "Supprimer page web";
-$a->strings["Access to this profile has been restricted."] = "L'accès à ce profil a été restreint.";
-$a->strings["Poke/Prod"] = "Tapoter/Solliciter";
-$a->strings["poke, prod or do other things to somebody"] = "Tapoter, pointer, et autres choses à faire à quelqu'un";
-$a->strings["Recipient"] = "Destinataire";
-$a->strings["Choose what you wish to do to recipient"] = "Choisir quoi lui faire";
-$a->strings["Make this post private"] = "Rendre cette contribution privée";
-$a->strings["Insufficient permissions. Request redirected to profile page."] = "Permissions insuffisantes. Demande redirigée à la page du profil.";
-$a->strings["Not available."] = "Indisponible.";
-$a->strings["Community"] = "Communauté";
-$a->strings["No results."] = "Aucun résultat.";
-$a->strings["Contact not found."] = "Contact introuvable.";
-$a->strings["Friend suggestion sent."] = "Suggestion d'amitié/relation envoyée.";
-$a->strings["Suggest Friends"] = "Suggérer une relation";
-$a->strings["Suggest a friend for %s"] = "Suggérer une relation à %s";
-$a->strings["Edit Block"] = "Éditer bloc";
-$a->strings["Delete block?"] = "Supprimer le bloc?";
-$a->strings["Delete Block"] = "Supprimer bloc";
-$a->strings["Status: "] = "État&nbsp;:";
-$a->strings["Sexual Preference: "] = "Orientation sexuelle&nbsp;:";
-$a->strings["Homepage: "] = "Site web&nbsp;:";
-$a->strings["Hometown: "] = "Ville natale&nbsp;:";
-$a->strings["About: "] = "À propos&nbsp;:";
-$a->strings["Keywords: "] = "Mots-clefs&nbsp;:";
-$a->strings["Permission Denied."] = "Permission refusée.";
-$a->strings["File not found."] = "Fichier introuvable.";
-$a->strings["Edit file permissions"] = "Éditer les permissions du fichier";
-$a->strings["Permissions"] = "Permissions";
-$a->strings["Include all files and sub folders"] = "Inclure tous fichiers et sous-répertoires";
-$a->strings["Return to file list"] = "Retourner à la liste des fichiers";
-$a->strings["Copy/paste this code to attach file to a post"] = "Copiez/collez ce code pour joindre le fichier à une publication";
-$a->strings["Copy/paste this URL to link file from a web page"] = "Copiez/collez cette URL pour lier le fichier depuis une page web";
-$a->strings["Download"] = "Télécharger";
-$a->strings["Used: "] = "Utilisé&nbsp;:";
-$a->strings["[directory]"] = "[répertoire]";
-$a->strings["Limit: "] = "Limite&nbsp;:";
-$a->strings["No suggestions available. If this is a new site, please try again in 24 hours."] = "Pas de suggestions pour l'instant. Si le site est récent, merci de re-tenter dans 24 heures.";
-$a->strings["Conversation removed."] = "Conversation supprimée.";
-$a->strings["No messages."] = "Pas de message.";
-$a->strings["D, d M Y - g:i A"] = "D d Y - H:i";
-$a->strings["Public Sites"] = "Sites publics";
-$a->strings["The listed sites allow public registration into the Red Matrix. All sites in the matrix are interlinked so membership on any of them conveys membership in the matrix as a whole. Some sites may require subscription or provide tiered service plans. The provider links <strong>may</strong> provide additional details."] = "Les sites listés autorisent l'inscription pour tous. Tous sont liés entre eux, de manière à ce qu'un compte sur un seul d'entre eux soit valable sur l'ensemble de la matrice. Certains sites peuvent demander des frais de souscriptions, ou fournir des forfaits ajustés. Le lien \"fournisseur\" <strong>peut</strong> vous donner des détails supplémentaires.";
-$a->strings["Site URL"] = "URL du site";
-$a->strings["Access Type"] = "Type d'accès";
-$a->strings["Registration Policy"] = "Politique d'inscription";
-$a->strings["Maximum daily site registrations exceeded. Please try again tomorrow."] = "Nombre d'inscriptions quotidiennes dépassé. Merci de recommencer demain.";
-$a->strings["Please indicate acceptance of the Terms of Service. Registration failed."] = "Merci d'indiquer votre adhésion aux Règles du Service. L'inscription a échoué.";
-$a->strings["Passwords do not match."] = "Les mots de passe ne concordent pas.";
-$a->strings["Registration successful. Please check your email for validation instructions."] = "Inscription réussie. Merci de vérifier vos courriels pour valider votre compte.";
-$a->strings["Your registration is pending approval by the site owner."] = "Votre inscription est en attente de l'approbation d'un administrateur.";
-$a->strings["Your registration can not be processed."] = "Votre inscription ne peut être traîtée.";
-$a->strings["Registration on this site/hub is by approval only."] = "L'inscription sur cette instance/ce site est soumis à une modération.";
-$a->strings["<a href=\"pubsites\">Register at another affiliated site/hub</a>"] = "<a href=\"pubsites\">S'inscrire sur un site/hub affilié</a>";
-$a->strings["This site has exceeded the number of allowed daily account registrations. Please try again tomorrow."] = "Ce site a dépassé le nombre de création de compte autorisé par jour. Merci de recommencer demain.";
-$a->strings["Terms of Service"] = "les Règles du Service";
-$a->strings["I accept the %s for this website"] = "J'accepte %s de ce site";
-$a->strings["I am over 13 years of age and accept the %s for this website"] = "J'ai treize (13) ans révolus, et j'accepte %s de ce site";
-$a->strings["Membership on this site is by invitation only."] = "L'inscription à ce site se fait uniquement sur invitation.";
-$a->strings["Please enter your invitation code"] = "Merci de saisir votre code d'invitation";
-$a->strings["Your email address"] = "Votre adresse de courriel";
-$a->strings["Choose a password"] = "Choisissez un mot de passe";
-$a->strings["Please re-enter your password"] = "Confirmez-le";
-$a->strings["Please login."] = "Merci de vous connecter.";
-$a->strings["Remove This Channel"] = "Supprimer ce canal";
-$a->strings["This will completely remove this channel from the network. Once this has been done it is not recoverable."] = "Ceci effacera complètement le canal du réseau. Une fois effacé, un canal ne PEUT PAS être récupéré.";
-$a->strings["Please enter your password for verification:"] = "Merci de re-saisir votre mot de passe pour vérification&nbsp;:";
-$a->strings["Remove this channel and all its clones from the network"] = "Supprimer ce canal ainsi que tous ses clones de par le réseau";
-$a->strings["By default only the instance of the channel located on this hub will be removed from the network"] = "Par défaut, seule l'instance du canal présente sur ce hub sera supprimée du réseau";
-$a->strings["Remove Channel"] = "Enlever le canal";
-$a->strings["Page owner information could not be retrieved."] = "Impossible d'obtenir des informations sur le propriétaire de la page.";
-$a->strings["Album not found."] = "Album introuvable.";
-$a->strings["Delete Album"] = "Supprimer album";
-$a->strings["Delete Photo"] = "Supprimer photo";
-$a->strings["No photos selected"] = "Aucune photo selectionnée";
-$a->strings["Access to this item is restricted."] = "L'accès à l'élément est restreint.";
-$a->strings["You have used %1$.2f Mbytes of %2$.2f Mbytes photo storage."] = "Vous avez utilisé %1$.2f mégaoctets sur les %2$.2f autorisés pour le stockage des photos.";
-$a->strings["You have used %1$.2f Mbytes of photo storage."] = "Vous avez utilisé %1$.2f mégaoctets pour le stockage des photos.";
-$a->strings["Upload Photos"] = "Téléverser des photos";
-$a->strings["New album name: "] = "Créer un album&nbsp;:";
-$a->strings["or existing album name: "] = "ou choisir un album existant&nbsp;:";
-$a->strings["Do not show a status post for this upload"] = "Ne pas publier de statut pour cet envoi";
-$a->strings["Contact Photos"] = "Photos de contact";
-$a->strings["Edit Album"] = "Éditer l'album";
-$a->strings["Show Newest First"] = "Ordre anté-chronologique";
-$a->strings["Show Oldest First"] = "Ordre chronologique";
-$a->strings["View Photo"] = "Voir photo";
-$a->strings["Permission denied. Access to this item may be restricted."] = "Permission refusée. L'accès à cet élément peut avoir été restreint.";
-$a->strings["Photo not available"] = "Photo indisponible";
-$a->strings["Use as profile photo"] = "Utiliser comme photo du profil";
-$a->strings["View Full Size"] = "Voir en taille réelle";
-$a->strings["Edit photo"] = "Éditer photo";
-$a->strings["Rotate CW (right)"] = "Rotation horaire (droite)";
-$a->strings["Rotate CCW (left)"] = "Rotation anti-horaire (gauche)";
-$a->strings["New album name"] = "Nouveau nom d'album&nbsp;:";
-$a->strings["Caption"] = "Titre/légende";
-$a->strings["Add a Tag"] = "Ajouter une étiquette";
-$a->strings["Example: @bob, @Barbara_Jensen, @jim@example.com, #California, #camping"] = "Exemple&nbsp;: @bob, @Barbara_Jensen, @jim@exemple.com, #Ile_de_France, #marathon";
-$a->strings["In This Photo:"] = "Dans cette photo&nbsp;:";
-$a->strings["View Album"] = "Voir album";
-$a->strings["Recent Photos"] = "Photos récentes";
-$a->strings["Mood"] = "Humeur";
-$a->strings["Set your current mood and tell your friends"] = "Indiquez votre humeur du moment à vos amis";
-$a->strings["sent you a private message"] = "vous a envoyé un message privé";
-$a->strings["added your channel"] = "a ajouté votre canal";
-$a->strings["posted an event"] = "a publié un événement";
-$a->strings["Scheme Default"] = "Schéma de couleur par défaut";
-$a->strings["silver"] = "argent";
+$a->strings["invalid target signature"] = "signature de la cible invalide";
+$a->strings["OpenID protocol error. No ID returned."] = "Erreur du protocole OpenID. Pas d'ID retourné.";
+$a->strings["App installed."] = "Application installée.";
+$a->strings["Malformed app."] = "Erreur de l'application - Malformée.";
+$a->strings["Embed code"] = "Code intégré";
+$a->strings["Edit App"] = "Edition de l'Application";
+$a->strings["Create App"] = "Création d'une Application";
+$a->strings["Name of app"] = "Nom de l'application";
+$a->strings["Location (URL) of app"] = "Emplacement (Lien) vers l'application";
+$a->strings["Photo icon URL"] = "Lien (URL) de l'icône à utiliser pour cette photo";
+$a->strings["80 x 80 pixels - optional"] = "80 x 80 pixels - optionel";
+$a->strings["Version ID"] = "Version";
+$a->strings["Price of app"] = "Prix de l'application";
+$a->strings["Location (URL) to purchase app"] = "Emplacement (LIEN) pour l'achat de l'application";
+$a->strings["Poll"] = "Sondage";
+$a->strings["View Results"] = "Voir les Résultats";
+$a->strings["Friendica Photo Album Import"] = "Importer votre Album Photo Friendica";
+$a->strings["This will import all your Friendica photo albums to this Red channel."] = "Cette fonction va importer tous vos albums photos Friendica dans ce canal de la Matrice Rouge.";
+$a->strings["Friendica Server base URL"] = "URL vers le serveur Friendica";
+$a->strings["Friendica Login Username"] = "Nom d'utilisateur Friendica";
+$a->strings["Friendica Login Password"] = "Mot de passe Friendica";
+$a->strings["Account removals are not allowed within 48 hours of changing the account password."] = "Il est impossible de supprimer un compte à l'intérieur de 48 heures après avoir changé le mot de passe d'un compte.";
+$a->strings["Remove This Account"] = "Supprimer ce Compte";
+$a->strings["This will completely remove this account including all its channels from the network. Once this has been done it is not recoverable."] = "Cette fonction va complètement supprimer le compte incluant tous ses canaux sur la matrice. Attention, cette action est irréversible.";
+$a->strings["Remove this account, all its channels and all its channel clones from the network"] = "Supprimer ce compte, tous ses canaux et tous les clones sur la matrice.";
+$a->strings["By default only the instances of the channels located on this hub will be removed from the network"] = "Par défault, seuls les instances de canaux situés sur ce hub seront supprimer de la matrice.";
+$a->strings["Schema Default"] = "Par défault";
+$a->strings["Sans-Serif"] = "Sans-Serif";
+$a->strings["Monospace"] = "Monospace";
$a->strings["Theme settings"] = "Réglages du thème";
$a->strings["Set scheme"] = "Définir la palette de couleurs";
-$a->strings["Navigation bar colour"] = "Couleur de la barre de navigation";
-$a->strings["link colour"] = "couleur des liens";
-$a->strings["Set font-colour for banner"] = "Définir la couleur du texte de la bannière";
-$a->strings["Set the background colour"] = "Définir la couleur d'arrière-plan";
-$a->strings["Set the background image"] = "Définir l'image d'arrière-plan";
-$a->strings["Set the background colour of items"] = "Définir la couleur de fond des contributions";
-$a->strings["Set the opacity of items"] = "Définir l'opacité des contributions";
-$a->strings["Set the basic colour for item icons"] = "Définir la couleur de base pour les icônes des éléments";
-$a->strings["Set the hover colour for item icons"] = "Définir la couleur de survol des icônes des éléments";
-$a->strings["Set font-size for the entire application"] = "Définir la taille de police pour l'application entière";
$a->strings["Set font-size for posts and comments"] = "Définir font-size pour contribution et commentaires";
-$a->strings["Set font-colour for posts and comments"] = "Définir font-colour pour les contributions et commentaires";
-$a->strings["Set radius of corners"] = "Définir le rayon des arrondis";
-$a->strings["Set shadow depth of photos"] = "Définir la profondeur de l'ombre des photos";
-$a->strings["Set maximum width of conversation regions"] = "Définir la largeur maximale des conversations";
-$a->strings["Set minimum opacity of nav bar - to hide it"] = "Définir l'opacité minimum du bandeau de navigation - pour le cacher";
-$a->strings["Set size of conversation author photo"] = "Définir la taille de la photo de l'auteur d'une conversation";
-$a->strings["Set size of followup author photos"] = "Définir la taille de la photo de l'auteur d'une réponse";
-$a->strings["Sloppy photo albums"] = "Albums photo \"en biais\"";
-$a->strings["Are you a clean desk or a messy desk person?"] = "Vous êtes plutôt \"bureau bien rangé\" ou \"gros foutoir\"?";
-$a->strings["Schema Default"] = "Palette par défaut";
-$a->strings["Sans-Serif"] = "Sans empâtements";
-$a->strings["Monospace"] = "Châsse fixe";
$a->strings["Set font face"] = "Définir la fonte";
$a->strings["Set iconset"] = "Définir le jeu d'icônes";
$a->strings["Set big shadow size, default 15px 15px 15px"] = "Définir la taille des grandes ombres, par défaut 15px 15px 15px";
$a->strings["Set small shadow size, default 5px 5px 5px"] = "Définir la taille des petites ombres, par défaut 5px 5px 5px";
-$a->strings["Set shadow colour, default #000"] = "Définir la couleur des ombres, par défaut #000";
+$a->strings["Set shadow color, default #000"] = "Définir la couleur des ombres, par défaut #000";
$a->strings["Set radius size, default 5px"] = "Définir le rayon des arrondis, par défaut 5px";
$a->strings["Set line-height for posts and comments"] = "Définir line-height pour contributions et commentaires";
$a->strings["Set background image"] = "Définir l'image d'arrière-plan";
-$a->strings["Set background colour"] = "Définir la couleur d'arrière-plan";
+$a->strings["Set background attachment"] = "Image de fond - fichier";
+$a->strings["Set background color"] = "Définir la couleur d'arrière-plan";
$a->strings["Set section background image"] = "Définir l'image d'arrière-plan des sections";
-$a->strings["Set section background colour"] = "Définir la couleur d'arrière-plan des sections";
-$a->strings["Set colour of items - use hex"] = "Définir la couleur des éléments - en héxadécimal";
-$a->strings["Set colour of links - use hex"] = "Définir la couleur des liens - en héxadécimal";
+$a->strings["Set section background color"] = "Définir la couleur d'arrière-plan des sections";
+$a->strings["Set color of items - use hex"] = "Définir la couleur des éléments - en héxadécimal";
+$a->strings["Set color of links - use hex"] = "Définir la couleur des liens - en héxadécimal";
$a->strings["Set max-width for items. Default 400px"] = "Définir la largeur maximal des éléments. Par défaut, 400px";
$a->strings["Set min-width for items. Default 240px"] = "Définir la largeur minimale des éléments. Par défaut, 240px";
$a->strings["Set the generic content wrapper width. Default 48%"] = "Définir la largeur du contenu. Par défaut, 48%";
-$a->strings["Set colour of fonts - use hex"] = "Définir la couleur des fontes - en héxadécimal";
+$a->strings["Set color of fonts - use hex"] = "Définir la couleur des fontes - en héxadécimal";
$a->strings["Set background-size element"] = "Définir background-size pour les éléments";
$a->strings["Item opacity"] = "Opacité des éléments";
$a->strings["Display post previews only"] = "Afficher seulement l'aperçu des contributions";
@@ -1718,15 +1853,46 @@ $a->strings["Right offset of the section element"] = "Décalage droit de l'élé
$a->strings["Section width"] = "Largeur de la section";
$a->strings["Left offset of the aside"] = "Décalage gauche du panneau latéral";
$a->strings["Right offset of the aside element"] = "Décalage droit du panneau latéral";
-$a->strings["None"] = "Aucun(e)";
-$a->strings["Header image"] = "Têtière";
-$a->strings["Header image only on profile pages"] = "Têtière seulement sur les profils";
-$a->strings["Update %s failed. See error logs."] = "La mise-à-jour %s a échoué. Merci de consulter les journaux d'erreur.";
-$a->strings["Update Error at %s"] = "Erreur de mise-à-jour sur %s";
+$a->strings["None"] = "Aucun";
+$a->strings["Header image"] = "Image de l'entête";
+$a->strings["Header image only on profile pages"] = "Image de l'entête tel qu'elle est affichée sur la page du profil";
+$a->strings["Light (Red Matrix default)"] = "Blanc (valeur par défaut)";
+$a->strings["Narrow navbar"] = "Barre de navigation fine";
+$a->strings["Navigation bar background color"] = "Couleur de fond de la barre de navigation";
+$a->strings["Navigation bar gradient top color"] = "Gradient de la barre de navigation HAUT";
+$a->strings["Navigation bar gradient bottom color"] = "Gradient de la barre de navigation BAS";
+$a->strings["Navigation active button gradient top color"] = "Gradient du bouton de navigation HAUT";
+$a->strings["Navigation active button gradient bottom color"] = "Gradient du bouton de navigation BAS";
+$a->strings["Navigation bar border color "] = "Couleur de la bordure de la barre de navigation";
+$a->strings["Navigation bar icon color "] = "Couleur de l'icône de la barre de navigation";
+$a->strings["Navigation bar active icon color "] = "Couleur de l'icône active de la barre de navigation";
+$a->strings["link color"] = "couleur des liens";
+$a->strings["Set font-color for banner"] = "Définir la couleur du texte de la bannière";
+$a->strings["Set the background color"] = "Définir la couleur d'arrière-plan";
+$a->strings["Set the background image"] = "Définir l'image d'arrière-plan";
+$a->strings["Set the background color of items"] = "Définir la couleur de fond des contributions";
+$a->strings["Set the background color of comments"] = "Couleur de fond des commentaires";
+$a->strings["Set the border color of comments"] = "Couleur de la bordure des commentaires";
+$a->strings["Set the indent for comments"] = "Indentation des commentaires";
+$a->strings["Set the basic color for item icons"] = "Définir la couleur de base pour les icônes des éléments";
+$a->strings["Set the hover color for item icons"] = "Définir la couleur de survol des icônes des éléments";
+$a->strings["Set font-size for the entire application"] = "Définir la taille de police pour l'application entière";
+$a->strings["Set font-color for posts and comments"] = "Définir font-colour pour les contributions et commentaires";
+$a->strings["Set radius of corners"] = "Définir le rayon des arrondis";
+$a->strings["Set shadow depth of photos"] = "Définir la profondeur de l'ombre des photos";
+$a->strings["Set maximum width of conversation regions"] = "Définir la largeur maximale des conversations";
+$a->strings["Center conversation regions"] = "Emplacement de la conversation - Centrer";
+$a->strings["Set minimum opacity of nav bar - to hide it"] = "Définir l'opacité minimum du bandeau de navigation - pour le cacher";
+$a->strings["Set size of conversation author photo"] = "Définir la taille de la photo de l'auteur d'une conversation";
+$a->strings["Set size of followup author photos"] = "Définir la taille de la photo de l'auteur d'une réponse";
+$a->strings["Sloppy photo albums"] = "Albums photo \"en biais\"";
+$a->strings["Are you a clean desk or a messy desk person?"] = "Vous êtes plutôt \"bureau bien rangé\" ou \"gros foutoir\"?";
+$a->strings["Update %s failed. See error logs."] = "La mise à jour %s a échoué. Merci de consulter les journaux d'erreur.";
+$a->strings["Update Error at %s"] = "Erreur de mise à jour sur %s";
$a->strings["Create an account to access services and applications within the Red Matrix"] = "Créez un compte pour pouvoir accéder aux services et applications de la Matrice Red";
$a->strings["Password"] = "Mot de passe";
$a->strings["Remember me"] = "Se souvenir de moi";
$a->strings["Forgot your password?"] = "Mot de passe oublié?";
$a->strings["permission denied"] = "permission refusée";
-$a->strings["Got Zot?"] = "T'as Zot?";
+$a->strings["Got Zot?"] = "Authentification magique a échouée. Êtes-vous toujours connecté à votre HUB?";
$a->strings["toggle mobile"] = "(dés)activer mobile";
diff --git a/view/fr/update_fail_eml.tpl b/view/fr/update_fail_eml.tpl
index a7df8fc2f..5fbad2c8a 100644
--- a/view/fr/update_fail_eml.tpl
+++ b/view/fr/update_fail_eml.tpl
@@ -1,13 +1,16 @@
-Hey,
-I'm the web server at {{$sitename}};
-
-The Red Matrix developers released update {{$update}} recently,
-but when I tried to install it, something went terribly wrong.
-This needs to be fixed soon and it requires human intervention.
-Please contact a Red developer if you can not figure out how to
-fix it on your own. My database might be invalid.
-
-The error message is '{{$error}}'.
-
-Apologies for the inconvenience,
- your web server at {{$siteurl}} \ No newline at end of file
+Bonjour,
+Je suis le serveur web de {{$sitename}};
+
+Les développeurs de la Matrice Rouge ont lancé une mise à jour {{$update}} récemment,
+toutefois, lorsque j'ai essayé de l'installer, quelques choses d'inattendu s'est produit.
+
+Nous devons corriger la situation et cela requiert votre intervention.
+
+Veuillez contacter un développeur de la Matrice Rouge si vous avez des difficultés à déterminer
+la meilleure approche pour résoudre le problème. Ma base de donnée est peut-être corrompue.
+
+Le message d'erreur est '{{$error}}'.
+
+Veuillez accepter mes plus humbles excuses pour les désagréments,
+
+ votre serveur web a {{$siteurl}} \ No newline at end of file
diff --git a/view/fr/wall_received_eml.tpl b/view/fr/wall_received_eml.tpl
deleted file mode 100644
index ad365a951..000000000
--- a/view/fr/wall_received_eml.tpl
+++ /dev/null
@@ -1,18 +0,0 @@
-
-Cher(e) $username,
-
- « $from » a posté quelque chose sur le mur de votre profil.
-
------
-$body
------
-
-Connectez-vous à $siteurl pour voir et/ou supprimer l'élément :
-
-$display
-
-Merci,
- l'administrateur de $sitename
-
-
-
diff --git a/view/it/cmnt_received_eml.tpl b/view/it/cmnt_received_eml.tpl
deleted file mode 100644
index 1991d29ae..000000000
--- a/view/it/cmnt_received_eml.tpl
+++ /dev/null
@@ -1,18 +0,0 @@
-
-Caro/a $username,
-
- '$from' ha commentato un elemeto/conversazione che stai seguendo.
-
------
-$body
------
-
-Accedi a $siteurl per verdere la conversazione completa:
-
-$display
-
-Grazie,
- L'amministratore di $sitename
-
-
-
diff --git a/view/it/cmnt_received_html_body_eml.tpl b/view/it/cmnt_received_html_body_eml.tpl
deleted file mode 100644
index 5f2edb84b..000000000
--- a/view/it/cmnt_received_html_body_eml.tpl
+++ /dev/null
@@ -1,25 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional //EN">
-<html>
-<head>
- <title>Friendika Messaggio</title>
- <meta http-equiv="Content-Type" content="text/html;charset=utf-8" />
-</head>
-<body>
-<table style="border:1px solid #ccc">
- <tbody>
- <tr><td colspan="2" style="background:#3b5998; color:#FFFFFF; font-weight:bold; font-family:'lucida grande', tahoma, verdana,arial, sans-serif; padding: 4px 8px; vertical-align: middle; font-size:16px; letter-spacing: -0.03em; text-align: left;"><img style="width:32px;height:32px;" src='$siteurl/images/friendika-32.png'><span style="padding:7px;">Friendika</span></td></tr>
-
- <tr><td style="padding-top:22px;" colspan="2">$from ha commentato un elemeto/conversazione che stai seguendo.</td></tr>
-
-
- <tr><td style="padding-left:22px;padding-top:22px;width:60px;" valign="top" rowspan=3><a href="$url"><img style="border:0px;width:48px;height:48px;" src="$thumb"></a></td>
- <td style="padding-top:22px;"><a href="$url">$from</a></td></tr>
- <tr><td style="padding-bottom:5px;"></td></tr>
- <tr><td style="padding-right:22px;">$body</td></tr>
- <tr><td style="padding-top:11px;padding-bottom:11px;" colspan="2"><a href="$display">Accedi a $siteurl per verdere la conversazione completa:</a>.</td></tr>
- <tr><td></td><td>Grazie,</td></tr>
- <tr><td></td><td>L'amministratore di $sitename</td></tr>
- </tbody>
-</table>
-</body>
-</html> \ No newline at end of file
diff --git a/view/it/cmnt_received_text_body_eml.tpl b/view/it/cmnt_received_text_body_eml.tpl
deleted file mode 100644
index 1991d29ae..000000000
--- a/view/it/cmnt_received_text_body_eml.tpl
+++ /dev/null
@@ -1,18 +0,0 @@
-
-Caro/a $username,
-
- '$from' ha commentato un elemeto/conversazione che stai seguendo.
-
------
-$body
------
-
-Accedi a $siteurl per verdere la conversazione completa:
-
-$display
-
-Grazie,
- L'amministratore di $sitename
-
-
-
diff --git a/view/it/follow_notify_eml.tpl b/view/it/follow_notify_eml.tpl
deleted file mode 100644
index ba07b19da..000000000
--- a/view/it/follow_notify_eml.tpl
+++ /dev/null
@@ -1,14 +0,0 @@
-
-Dear {{$myname}},
-
-You have a new follower at {{$sitename}} - '{{$requestor}}'.
-
-You may visit their profile at {{$url}}.
-
-Please login to your site to approve or ignore/cancel the request.
-
-{{$siteurl}}
-
-Regards,
-
- {{$sitename}} administrator
diff --git a/view/it/friend_complete_eml.tpl b/view/it/friend_complete_eml.tpl
deleted file mode 100644
index 1c647b994..000000000
--- a/view/it/friend_complete_eml.tpl
+++ /dev/null
@@ -1,22 +0,0 @@
-
-Dear {{$username}},
-
- Great news... '{{$fn}}' at '{{$dfrn_url}}' has accepted
-your connection request at '{{$sitename}}'.
-
-You are now mutual friends and may exchange status updates, photos, and email
-without restriction.
-
-Please visit your 'Connnections' page at {{$sitename}} if you wish to make
-any changes to this relationship.
-
-{{$siteurl}}
-
-[For instance, you may create a separate profile with information that is not
-available to the general public - and assign viewing rights to '{{$fn}}'].
-
-Sincerely,
-
- {{$sitename}} Administrator
-
-
diff --git a/view/it/intro_complete_eml.tpl b/view/it/intro_complete_eml.tpl
deleted file mode 100644
index 2c2428d68..000000000
--- a/view/it/intro_complete_eml.tpl
+++ /dev/null
@@ -1,22 +0,0 @@
-
-Dear {{$username}},
-
- '{{$fn}}' at '{{$dfrn_url}}' has accepted
-your connection request at '{{$sitename}}'.
-
- '{{$fn}}' has chosen to accept you a "fan", which restricts
-some forms of communication - such as private messaging and some profile
-interactions. If this is a celebrity or community page, these settings were
-applied automatically.
-
- '{{$fn}}' may choose to extend this into a two-way or more permissive
-relationship in the future.
-
- You will start receiving public status updates from '{{$fn}}',
-which will appear on your 'Matrix' page at
-
-{{$siteurl}}
-
-Sincerely,
-
- {{$sitename}} Administrator
diff --git a/view/it/lostpass_eml.tpl b/view/it/lostpass_eml.tpl
index 3b79d2791..20a65faa8 100644
--- a/view/it/lostpass_eml.tpl
+++ b/view/it/lostpass_eml.tpl
@@ -1,32 +1,32 @@
-Dear {{$username}},
- A request was recently received at {{$sitename}} to reset your account
-password. In order to confirm this request, please select the verification link
-below or paste it into your web browser address bar.
+Ciao {{$username}},
+ Su {{$sitename}} è arrivata la richiesta di azzerare la password del tuo account.
+Per dare conferma, devi cliccare sul link di verifica che trovi qua sotto,
+oppure puoi copiarlo e incollarlo sul tuo browser.
-If you did NOT request this change, please DO NOT follow the link
-provided and ignore and/or delete this email.
+Se NON hai richiesto tu il cambio password, NON cliccare assolutamente il link
+e ignora (o cancella) questo messaggio.
-Your password will not be changed unless we can verify that you
-issued this request.
+Così la tua password non cambierà finché non sarà certo
+che la richiesta venga realmente da te!
-Follow this link to verify your identity:
+Questo è il link per confermare e verificare la tua identità:
{{$reset_link}}
-You will then receive a follow-up message containing the new password.
+Dopo riceverai un messaggio che conterrà la nuova password.
-You may change that password from your account settings page after logging in.
+Naturalmente potrai cambiarla dalla pagina delle 'Impostazioni' dopo aver effettuato l'accesso.
-The login details are as follows:
+I dettagli del tuo account:
-Site Location: {{$siteurl}}
-Login Name: {{$email}}
+Sito: {{$siteurl}}
+Nome utente: {{$email}}
-Sincerely,
- {{$sitename}} Administrator
+Con affetto,
+ L'amministratore di {{$sitename}}
-
+ \ No newline at end of file
diff --git a/view/it/mail_received_html_body_eml.tpl b/view/it/mail_received_html_body_eml.tpl
deleted file mode 100644
index 847954550..000000000
--- a/view/it/mail_received_html_body_eml.tpl
+++ /dev/null
@@ -1,25 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional //EN">
-<html>
-<head>
- <title>Friendika Messsaggio</title>
- <meta http-equiv="Content-Type" content="text/html;charset=utf-8" />
-</head>
-<body>
-<table style="border:1px solid #ccc">
- <tbody>
- <tr><td colspan="2" style="background:#3b5998; color:#FFFFFF; font-weight:bold; font-family:'lucida grande', tahoma, verdana,arial, sans-serif; padding: 4px 8px; vertical-align: middle; font-size:16px; letter-spacing: -0.03em; text-align: left;"><img style="width:32px;height:32px;" src='$siteurl/images/friendika-32.png'><span style="padding:7px;">Friendika</span></td></tr>
-
- <tr><td style="padding-top:22px;" colspan="2">Hai ricevuto un nuovo messsaggio privato su $siteName da '$from'.</td></tr>
-
-
- <tr><td style="padding-left:22px;padding-top:22px;width:60px;" valign="top" rowspan=3><a href="$url"><img style="border:0px;width:48px;height:48px;" src="$thumb"></a></td>
- <td style="padding-top:22px;"><a href="$url">$from</a></td></tr>
- <tr><td style="font-weight:bold;padding-bottom:5px;">$title</td></tr>
- <tr><td style="padding-right:22px;">$htmlversion</td></tr>
- <tr><td style="padding-top:11px;padding-bottom:11px;" colspan="2">Accedi a <a href="$siteurl">$siteurl</a> per leggere e rispondere ai tuoi messaggi privati.</td></tr>
- <tr><td></td><td>Grazie,</td></tr>
- <tr><td></td><td>L'amministratore di $siteName</td></tr>
- </tbody>
-</table>
-</body>
-</html>
diff --git a/view/it/mail_received_text_body_eml.tpl b/view/it/mail_received_text_body_eml.tpl
deleted file mode 100644
index c7da9533f..000000000
--- a/view/it/mail_received_text_body_eml.tpl
+++ /dev/null
@@ -1,10 +0,0 @@
-Hai ricevuto un nuovo messsaggio privato su $siteName da '$from'.
-
-$title
-
-$textversion
-
-Accedi a $siteurl per leggere e rispondere ai tuoi messaggi privati.
-
-Grazie,
-L'amministratore di $siteName
diff --git a/view/it/messages.po b/view/it/messages.po
index f6d83fbf2..b270c5051 100644
--- a/view/it/messages.po
+++ b/view/it/messages.po
@@ -13,8 +13,8 @@ msgid ""
msgstr ""
"Project-Id-Version: Red Matrix\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2014-07-01 23:12+0000\n"
-"PO-Revision-Date: 2014-07-02 09:31+0000\n"
+"POT-Creation-Date: 2014-12-26 00:04-0800\n"
+"PO-Revision-Date: 2014-12-29 08:07+0000\n"
"Last-Translator: tuscanhobbit <pynolo@tarine.net>\n"
"Language-Team: Italian (http://www.transifex.com/projects/p/red-matrix/language/it/)\n"
"MIME-Version: 1.0\n"
@@ -23,439 +23,441 @@ msgstr ""
"Language: it\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-#: ../../view/tpl/smarty3/compiled/de0b699d2fc212753c3f166003476a343ca00174.file.cloud_directory.tpl.php:35
-#: ../../mod/settings.php:517 ../../mod/settings.php:543
-#: ../../mod/admin.php:893
-msgid "Name"
-msgstr "Nome"
+#: ../../include/dba/dba_driver.php:142
+#, php-format
+msgid "Cannot locate DNS info for database server '%s'"
+msgstr "Non trovo le informazioni DNS per il database server '%s'"
-#: ../../view/tpl/smarty3/compiled/de0b699d2fc212753c3f166003476a343ca00174.file.cloud_directory.tpl.php:38
-msgid "Type"
-msgstr "Tipo"
+#: ../../include/photo/photo_driver.php:680 ../../include/photos.php:52
+#: ../../mod/photos.php:91 ../../mod/photos.php:654
+#: ../../mod/profile_photo.php:142 ../../mod/profile_photo.php:301
+#: ../../mod/profile_photo.php:423
+msgid "Profile Photos"
+msgstr "Foto del profilo"
-#: ../../view/tpl/smarty3/compiled/de0b699d2fc212753c3f166003476a343ca00174.file.cloud_directory.tpl.php:40
-msgid "Size"
-msgstr "Dimensione"
+#: ../../include/items.php:382 ../../mod/group.php:68
+#: ../../mod/subthread.php:49 ../../mod/profperm.php:23 ../../mod/like.php:246
+#: ../../index.php:389
+msgid "Permission denied"
+msgstr "Permesso negato"
-#: ../../view/tpl/smarty3/compiled/de0b699d2fc212753c3f166003476a343ca00174.file.cloud_directory.tpl.php:42
-msgid "Last modified"
-msgstr "Ultima modifica"
+#: ../../include/items.php:969 ../../include/items.php:1014
+msgid "(Unknown)"
+msgstr "(Sconosciuto)"
-#: ../../view/tpl/smarty3/compiled/de0b699d2fc212753c3f166003476a343ca00174.file.cloud_directory.tpl.php:51
-#: ../../view/tpl/smarty3/compiled/de0b699d2fc212753c3f166003476a343ca00174.file.cloud_directory.tpl.php:54
-#: ../../include/reddav.php:1145
-msgid "parent"
-msgstr "cartella superiore"
+#: ../../include/items.php:1171
+msgid "Visible to anybody on the internet."
+msgstr "Visibile a chiunque su internet."
-#: ../../view/tpl/smarty3/compiled/de0b699d2fc212753c3f166003476a343ca00174.file.cloud_directory.tpl.php:76
-#: ../../include/page_widgets.php:8 ../../include/page_widgets.php:36
-#: ../../include/menu.php:42 ../../include/ItemObject.php:96
-#: ../../include/apps.php:231 ../../mod/settings.php:577
-#: ../../mod/webpages.php:120 ../../mod/connections.php:393
-#: ../../mod/menu.php:59 ../../mod/thing.php:235 ../../mod/editpost.php:112
-#: ../../mod/editwebpage.php:143 ../../mod/blocks.php:94
-#: ../../mod/layouts.php:112 ../../mod/editblock.php:111
-#: ../../mod/editlayout.php:106
-msgid "Edit"
-msgstr "Modifica"
+#: ../../include/items.php:1173
+msgid "Visible to you only."
+msgstr "Visibile solo a te."
-#: ../../view/tpl/smarty3/compiled/de0b699d2fc212753c3f166003476a343ca00174.file.cloud_directory.tpl.php:80
-#: ../../include/ItemObject.php:108 ../../include/apps.php:232
-#: ../../include/conversation.php:635 ../../mod/settings.php:578
-#: ../../mod/admin.php:758 ../../mod/admin.php:888 ../../mod/photos.php:1046
-#: ../../mod/connedit.php:398 ../../mod/thing.php:236 ../../mod/group.php:176
-msgid "Delete"
-msgstr "Elimina"
+#: ../../include/items.php:1175
+msgid "Visible to anybody in this network."
+msgstr "Visibile a tutti su questa rete."
-#: ../../view/tpl/smarty3/compiled/de0b699d2fc212753c3f166003476a343ca00174.file.cloud_directory.tpl.php:81
-msgid "Are you sure you want to delete this item?"
-msgstr "Si è sicuri di voler eliminare questo oggetto?"
+#: ../../include/items.php:1177
+msgid "Visible to anybody authenticated."
+msgstr "Visibile a chiunque sia autenticato."
-#: ../../view/tpl/smarty3/compiled/de0b699d2fc212753c3f166003476a343ca00174.file.cloud_directory.tpl.php:98
-msgid "Total"
-msgstr "Totale"
+#: ../../include/items.php:1179
+#, php-format
+msgid "Visible to anybody on %s."
+msgstr "Visibile a tutti in %s."
-#: ../../view/theme/redbasic/php/config.php:84
-msgid "Light (global default)"
-msgstr "Light (predefinito)"
+#: ../../include/items.php:1181
+msgid "Visible to all connections."
+msgstr "Visibile a tutti coloro che ti seguono."
-#: ../../view/theme/redbasic/php/config.php:99
-#: ../../include/ItemObject.php:583 ../../mod/settings.php:515
-#: ../../mod/settings.php:627 ../../mod/settings.php:655
-#: ../../mod/settings.php:679 ../../mod/settings.php:749
-#: ../../mod/settings.php:927 ../../mod/filestorage.php:137
-#: ../../mod/admin.php:442 ../../mod/admin.php:751 ../../mod/admin.php:886
-#: ../../mod/admin.php:1019 ../../mod/admin.php:1218 ../../mod/admin.php:1305
-#: ../../mod/photos.php:563 ../../mod/photos.php:668 ../../mod/photos.php:956
-#: ../../mod/photos.php:996 ../../mod/photos.php:1083 ../../mod/mood.php:135
-#: ../../mod/pdledit.php:58 ../../mod/connedit.php:476 ../../mod/setup.php:307
-#: ../../mod/setup.php:350 ../../mod/invite.php:156 ../../mod/thing.php:286
-#: ../../mod/thing.php:329 ../../mod/connect.php:92 ../../mod/fsuggest.php:108
-#: ../../mod/poke.php:166 ../../mod/group.php:81 ../../mod/appman.php:99
-#: ../../mod/sources.php:104 ../../mod/sources.php:138
-#: ../../mod/import.php:393 ../../mod/mail.php:219 ../../mod/mail.php:332
-#: ../../mod/profiles.php:515 ../../mod/chat.php:177 ../../mod/chat.php:211
-#: ../../mod/events.php:492
-msgid "Submit"
-msgstr "Salva"
+#: ../../include/items.php:1183
+msgid "Visible to approved connections."
+msgstr "Visibile ai contatti approvati."
-#: ../../view/theme/redbasic/php/config.php:102
-msgid "Theme settings"
-msgstr "Impostazioni del tema"
+#: ../../include/items.php:1185
+msgid "Visible to specific connections."
+msgstr "Visibile ad alcuni contatti scelti."
-#: ../../view/theme/redbasic/php/config.php:103
-msgid "Set scheme"
-msgstr "Schema"
+#: ../../include/items.php:3952 ../../mod/display.php:32
+#: ../../mod/thing.php:76 ../../mod/filestorage.php:26 ../../mod/admin.php:168
+#: ../../mod/admin.php:896 ../../mod/admin.php:1099 ../../mod/viewsrc.php:20
+msgid "Item not found."
+msgstr "Elemento non trovato."
-#: ../../view/theme/redbasic/php/config.php:104
-msgid "Narrow navbar"
-msgstr "Barra di navigazione ristretta"
+#: ../../include/items.php:4019 ../../include/photos.php:15
+#: ../../include/attach.php:116 ../../include/attach.php:163
+#: ../../include/attach.php:226 ../../include/attach.php:240
+#: ../../include/attach.php:280 ../../include/attach.php:294
+#: ../../include/attach.php:318 ../../include/attach.php:511
+#: ../../include/attach.php:585 ../../include/chat.php:116
+#: ../../mod/mood.php:112 ../../mod/register.php:72 ../../mod/mitem.php:106
+#: ../../mod/achievements.php:30 ../../mod/settings.php:542
+#: ../../mod/group.php:9 ../../mod/poke.php:128 ../../mod/api.php:26
+#: ../../mod/api.php:31 ../../mod/setup.php:207 ../../mod/authtest.php:13
+#: ../../mod/profile.php:64 ../../mod/profile.php:72 ../../mod/block.php:22
+#: ../../mod/block.php:72 ../../mod/delegate.php:6 ../../mod/sources.php:66
+#: ../../mod/events.php:195 ../../mod/channel.php:90 ../../mod/channel.php:201
+#: ../../mod/channel.php:244 ../../mod/chat.php:90 ../../mod/chat.php:95
+#: ../../mod/regmod.php:17 ../../mod/editpost.php:13 ../../mod/common.php:35
+#: ../../mod/connections.php:169 ../../mod/connedit.php:266
+#: ../../mod/mail.php:111 ../../mod/photos.php:68 ../../mod/webpages.php:67
+#: ../../mod/bookmarks.php:46 ../../mod/blocks.php:67 ../../mod/blocks.php:75
+#: ../../mod/editblock.php:65 ../../mod/pdledit.php:21
+#: ../../mod/editlayout.php:64 ../../mod/editlayout.php:89
+#: ../../mod/editwebpage.php:64 ../../mod/editwebpage.php:86
+#: ../../mod/editwebpage.php:118 ../../mod/profile_photo.php:263
+#: ../../mod/profile_photo.php:276 ../../mod/like.php:154
+#: ../../mod/thing.php:247 ../../mod/thing.php:264 ../../mod/thing.php:299
+#: ../../mod/fsuggest.php:78 ../../mod/filestorage.php:18
+#: ../../mod/filestorage.php:67 ../../mod/filestorage.php:82
+#: ../../mod/filestorage.php:109 ../../mod/locs.php:71 ../../mod/item.php:191
+#: ../../mod/item.php:199 ../../mod/item.php:972 ../../mod/suggest.php:26
+#: ../../mod/layouts.php:67 ../../mod/layouts.php:74 ../../mod/layouts.php:85
+#: ../../mod/profiles.php:179 ../../mod/profiles.php:550
+#: ../../mod/manage.php:6 ../../mod/menu.php:61 ../../mod/invite.php:13
+#: ../../mod/invite.php:104 ../../mod/network.php:12
+#: ../../mod/notifications.php:66 ../../mod/viewconnections.php:22
+#: ../../mod/viewconnections.php:27 ../../mod/viewsrc.php:14
+#: ../../mod/message.php:16 ../../mod/new_channel.php:68
+#: ../../mod/new_channel.php:99 ../../mod/page.php:28 ../../mod/page.php:78
+#: ../../mod/appman.php:66 ../../mod/service_limits.php:7 ../../index.php:190
+#: ../../index.php:390
+msgid "Permission denied."
+msgstr "Permesso negato."
-#: ../../view/theme/redbasic/php/config.php:105
-msgid "Navigation bar background colour"
-msgstr "Barra di navigazione: Colore di sfondo"
+#: ../../include/items.php:4410 ../../mod/group.php:38 ../../mod/group.php:140
+msgid "Collection not found."
+msgstr "Insieme di canali non trovato."
-#: ../../view/theme/redbasic/php/config.php:106
-msgid "Navigation bar gradient top colour"
-msgstr "Barra di navigazione: Gradiente superiore"
+#: ../../include/items.php:4425
+msgid "Collection is empty."
+msgstr "L'insieme di canali è vuoto."
-#: ../../view/theme/redbasic/php/config.php:107
-msgid "Navigation bar gradient bottom colour"
-msgstr "Barra di navigazione: Gradiente inferiore"
+#: ../../include/items.php:4432
+#, php-format
+msgid "Collection: %s"
+msgstr "Insieme: %s"
-#: ../../view/theme/redbasic/php/config.php:108
-msgid "Navigation active button gradient top colour"
-msgstr "Barra di navigazione: Gradiente superiore dell'icona attiva"
+#: ../../include/items.php:4443
+#, php-format
+msgid "Connection: %s"
+msgstr "Contatto: %s"
-#: ../../view/theme/redbasic/php/config.php:109
-msgid "Navigation active button gradient bottom colour"
-msgstr "Barra di navigazione: Gradiente inferiore dell'icona attiva"
+#: ../../include/items.php:4446
+msgid "Connection not found."
+msgstr "Contatto non trovato."
-#: ../../view/theme/redbasic/php/config.php:110
-msgid "Navigation bar border colour "
-msgstr "Barra di navigazione: Colore del bordo"
+#: ../../include/menu.php:42 ../../include/page_widgets.php:8
+#: ../../include/page_widgets.php:36 ../../include/RedDAV/RedBrowser.php:261
+#: ../../include/ItemObject.php:100 ../../include/apps.php:254
+#: ../../mod/settings.php:627 ../../mod/editpost.php:112
+#: ../../mod/connections.php:381 ../../mod/connections.php:394
+#: ../../mod/connections.php:413 ../../mod/webpages.php:162
+#: ../../mod/blocks.php:132 ../../mod/editblock.php:143
+#: ../../mod/editlayout.php:139 ../../mod/editwebpage.php:174
+#: ../../mod/thing.php:233 ../../mod/layouts.php:167 ../../mod/menu.php:78
+msgid "Edit"
+msgstr "Modifica"
-#: ../../view/theme/redbasic/php/config.php:111
-msgid "Navigation bar icon colour "
-msgstr "Barra di navigazione: Colore delle icone"
+#: ../../include/message.php:18
+msgid "No recipient provided."
+msgstr "Devi scegliere un destinatario."
-#: ../../view/theme/redbasic/php/config.php:112
-msgid "Navigation bar active icon colour "
-msgstr "Barra di navigazione: Colore dell'icona attiva"
+#: ../../include/message.php:23
+msgid "[no subject]"
+msgstr "[nessun titolo]"
-#: ../../view/theme/redbasic/php/config.php:113
-msgid "link colour"
-msgstr "Colore dei link"
+#: ../../include/message.php:45
+msgid "Unable to determine sender."
+msgstr "Impossibile determinare il mittente."
-#: ../../view/theme/redbasic/php/config.php:114
-msgid "Set font-colour for banner"
-msgstr "Colore del font del banner"
+#: ../../include/message.php:200
+msgid "Stored post could not be verified."
+msgstr "Non è stato possibile verificare l'articolo inserito."
-#: ../../view/theme/redbasic/php/config.php:115
-msgid "Set the background colour"
-msgstr "Colore di sfondo"
+#: ../../include/network.php:590
+msgid "view full size"
+msgstr "guarda nelle dimensioni reali"
-#: ../../view/theme/redbasic/php/config.php:116
-msgid "Set the background image"
-msgstr "Immagine di sfondo"
+#: ../../include/permissions.php:26
+msgid "Can view my normal stream and posts"
+msgstr "Può vedere i miei contenuti e articoli normali"
-#: ../../view/theme/redbasic/php/config.php:117
-msgid "Set the background colour of items"
-msgstr "Colore di sfondo degli elementi della pagina"
+#: ../../include/permissions.php:27
+msgid "Can view my default channel profile"
+msgstr "Può vedere il profilo predefinito del canale"
-#: ../../view/theme/redbasic/php/config.php:118
-msgid "Set the background colour of comments"
-msgstr "Imposta il colore di sfondo dei commenti"
+#: ../../include/permissions.php:28
+msgid "Can view my photo albums"
+msgstr "Può vedere i miei album fotografici"
-#: ../../view/theme/redbasic/php/config.php:119
-msgid "Set the border colour of comments"
-msgstr "Imposta il colore del bordo dei commenti"
+#: ../../include/permissions.php:29
+msgid "Can view my connections"
+msgstr "Può vedere i miei contatti"
-#: ../../view/theme/redbasic/php/config.php:120
-msgid "Set the indent for comments"
-msgstr "Imposta il lo spostamento a destra dei commenti"
+#: ../../include/permissions.php:30
+msgid "Can view my file storage"
+msgstr "Può vedere i miei file condivisi"
-#: ../../view/theme/redbasic/php/config.php:121
-msgid "Set the basic colour for item icons"
-msgstr "Colore di base per le icone"
+#: ../../include/permissions.php:31
+msgid "Can view my webpages"
+msgstr "Può vedere le mie pagine web"
-#: ../../view/theme/redbasic/php/config.php:122
-msgid "Set the hover colour for item icons"
-msgstr "Colore per le icone in evidenza"
+#: ../../include/permissions.php:34
+msgid "Can send me their channel stream and posts"
+msgstr "È tra i canali che seguo"
-#: ../../view/theme/redbasic/php/config.php:123
-msgid "Set font-size for the entire application"
-msgstr "Dimensione font per tutto il sito"
+#: ../../include/permissions.php:35
+msgid "Can post on my channel page (\"wall\")"
+msgstr "Può scrivere sulla bacheca del mio canale"
-#: ../../view/theme/redbasic/php/config.php:124
-msgid "Set font-size for posts and comments"
-msgstr "Dimensioni del carattere per articoli e commenti"
+#: ../../include/permissions.php:36
+msgid "Can comment on or like my posts"
+msgstr "Può commentare o aggiungere \"mi piace\" ai miei articoli"
-#: ../../view/theme/redbasic/php/config.php:125
-msgid "Set font-colour for posts and comments"
-msgstr "Colore del carattere per articoli e commenti"
+#: ../../include/permissions.php:37
+msgid "Can send me private mail messages"
+msgstr "Può inviarmi messaggi privati"
-#: ../../view/theme/redbasic/php/config.php:126
-msgid "Set radius of corners"
-msgstr "Raggio degli angoli stondati"
+#: ../../include/permissions.php:38
+msgid "Can post photos to my photo albums"
+msgstr "Può aggiungere foto ai miei album"
-#: ../../view/theme/redbasic/php/config.php:127
-msgid "Set shadow depth of photos"
-msgstr "Profondità dell'ombra delle foto"
+#: ../../include/permissions.php:39
+msgid "Can like/dislike stuff"
+msgstr "Può aggiungere \"mi piace\""
-#: ../../view/theme/redbasic/php/config.php:128
-msgid "Set maximum width of conversation regions"
-msgstr "Larghezza massima dell'area delle conversazioni"
+#: ../../include/permissions.php:39
+msgid "Profiles and things other than posts/comments"
+msgstr "Profili e tutto ciò che non è articoli e commenti"
-#: ../../view/theme/redbasic/php/config.php:129
-msgid "Center conversation regions"
-msgstr "Centra l'area delle conversazioni"
+#: ../../include/permissions.php:41
+msgid "Can forward to all my channel contacts via post @mentions"
+msgstr "Può inoltrare articoli a tutti i contatti del canale tramite una @menzione"
-#: ../../view/theme/redbasic/php/config.php:130
-msgid "Set minimum opacity of nav bar - to hide it"
-msgstr "Imposta l'opacità minima della barra di navigazione per nasconderla"
+#: ../../include/permissions.php:41
+msgid "Advanced - useful for creating group forum channels"
+msgstr "Impostazione avanzata - utile per creare un canale-forum di discussione"
-#: ../../view/theme/redbasic/php/config.php:131
-msgid "Set size of conversation author photo"
-msgstr "Dimensione foto dell'autore della conversazione"
+#: ../../include/permissions.php:42
+msgid "Can chat with me (when available)"
+msgstr "Può aprire una chat con me (se disponibile)"
-#: ../../view/theme/redbasic/php/config.php:132
-msgid "Set size of followup author photos"
-msgstr "Dimensione foto dei partecipanti alla conversazione"
+#: ../../include/permissions.php:43
+msgid "Can write to my file storage"
+msgstr "Può scrivere sul mio archivio file"
-#: ../../view/theme/redbasic/php/config.php:133
-msgid "Sloppy photo albums"
-msgstr "Album con foto storte"
+#: ../../include/permissions.php:44
+msgid "Can edit my webpages"
+msgstr "Può modificare le mie pagine web"
-#: ../../view/theme/redbasic/php/config.php:133
-msgid "Are you a clean desk or a messy desk person?"
-msgstr "La tua scrivania è sempre a posto? Sei una persona disordinata?"
+#: ../../include/permissions.php:46
+msgid "Can source my public posts in derived channels"
+msgstr "Può usare i miei articoli pubblici per creare canali derivati"
-#: ../../boot.php:1275
-#, php-format
-msgid "Update %s failed. See error logs."
-msgstr "%s: aggiornamento fallito. Controlla i log di errore."
+#: ../../include/permissions.php:46
+msgid "Somewhat advanced - very useful in open communities"
+msgstr "Piuttosto avanzato - molto utile nelle comunità aperte"
-#: ../../boot.php:1278
-#, php-format
-msgid "Update Error at %s"
-msgstr "Errore di aggiornamento su %s"
+#: ../../include/permissions.php:48
+msgid "Can administer my channel resources"
+msgstr "Può amministrare i contenuti del mio canale"
-#: ../../boot.php:1442
+#: ../../include/permissions.php:48
msgid ""
-"Create an account to access services and applications within the Red Matrix"
-msgstr "Registrati per accedere ai servizi e alle applicazioni di Red Matrix"
+"Extremely advanced. Leave this alone unless you know what you are doing"
+msgstr "Impostazione pericolosa - lasciare il valore predefinito se non si è assolutamente sicuri"
-#: ../../boot.php:1443 ../../include/nav.php:139 ../../mod/register.php:206
-msgid "Register"
-msgstr "Iscriviti"
+#: ../../include/permissions.php:814
+msgid "Social Networking"
+msgstr "Social network"
-#: ../../boot.php:1466 ../../include/nav.php:77 ../../include/nav.php:101
-msgid "Logout"
-msgstr "Esci"
+#: ../../include/permissions.php:815 ../../include/permissions.php:817
+#: ../../include/permissions.php:819
+msgid "Mostly Public"
+msgstr "Quasi sempre pubblico"
-#: ../../boot.php:1467 ../../include/nav.php:99 ../../include/apps.php:121
-msgid "Login"
-msgstr "Accedi"
+#: ../../include/permissions.php:815 ../../include/permissions.php:817
+#: ../../include/permissions.php:819
+msgid "Restricted"
+msgstr "Con restrizioni"
-#: ../../boot.php:1469 ../../include/contact_selectors.php:77
-#: ../../mod/admin.php:754 ../../mod/admin.php:763
-msgid "Email"
-msgstr "Email"
+#: ../../include/permissions.php:815 ../../include/permissions.php:817
+msgid "Private"
+msgstr "Privato"
-#: ../../boot.php:1470
-msgid "Password"
-msgstr "Password"
+#: ../../include/permissions.php:816
+msgid "Community Forum"
+msgstr "Forum di discussione"
-#: ../../boot.php:1471
-msgid "Remember me"
-msgstr "Resta connesso"
+#: ../../include/permissions.php:818
+msgid "Feed Republish"
+msgstr "Aggregatore di feed esterni"
-#: ../../boot.php:1476
-msgid "Forgot your password?"
-msgstr "Hai dimenticato la password?"
+#: ../../include/permissions.php:820
+msgid "Special Purpose"
+msgstr "Per finalità speciali"
-#: ../../boot.php:1477 ../../mod/lostpass.php:85
-msgid "Password Reset"
-msgstr "Reimposta la password"
+#: ../../include/permissions.php:821
+msgid "Celebrity/Soapbox"
+msgstr "Pagina per fan"
-#: ../../boot.php:1541
-msgid "permission denied"
-msgstr "permesso negato"
+#: ../../include/permissions.php:821
+msgid "Group Repository"
+msgstr "Repository di gruppo"
-#: ../../boot.php:1542
-msgid "Got Zot?"
-msgstr "Hai Zot?"
+#: ../../include/permissions.php:822 ../../include/profile_selectors.php:6
+#: ../../include/profile_selectors.php:23
+#: ../../include/profile_selectors.php:61
+#: ../../include/profile_selectors.php:97
+msgid "Other"
+msgstr "Altro"
-#: ../../boot.php:1972
-msgid "toggle mobile"
-msgstr "attiva/disattiva versione mobile"
+#: ../../include/permissions.php:823
+msgid "Custom/Expert Mode"
+msgstr "Personalizzazione per esperti"
-#: ../../include/auth.php:79
-msgid "Logged out."
-msgstr "Uscita effettuata."
+#: ../../include/notify.php:23
+msgid "created a new post"
+msgstr "Ha creato un nuovo articolo"
-#: ../../include/auth.php:198
-msgid "Failed authentication"
-msgstr "Autenticazione fallita"
+#: ../../include/notify.php:24
+#, php-format
+msgid "commented on %s's post"
+msgstr "ha commentato l'articolo di %s"
-#: ../../include/auth.php:213 ../../mod/openid.php:188
-msgid "Login failed."
-msgstr "Accesso fallito."
+#: ../../include/taxonomy.php:210 ../../include/taxonomy.php:229
+msgid "Tags"
+msgstr "Tag"
-#: ../../include/comanche.php:35
-msgid "Default"
-msgstr "Predefinito"
+#: ../../include/taxonomy.php:250 ../../include/contact_widgets.php:92
+#: ../../include/widgets.php:35
+msgid "Categories"
+msgstr "Categorie"
-#: ../../include/photos.php:15 ../../include/items.php:3680
-#: ../../include/attach.php:119 ../../include/attach.php:166
-#: ../../include/attach.php:229 ../../include/attach.php:243
-#: ../../include/attach.php:283 ../../include/attach.php:297
-#: ../../include/attach.php:322 ../../include/attach.php:513
-#: ../../include/attach.php:585 ../../include/chat.php:116
-#: ../../mod/settings.php:492 ../../mod/filestorage.php:10
-#: ../../mod/filestorage.php:59 ../../mod/filestorage.php:75
-#: ../../mod/filestorage.php:98 ../../mod/webpages.php:40
-#: ../../mod/authtest.php:13 ../../mod/new_channel.php:66
-#: ../../mod/new_channel.php:97 ../../mod/connections.php:169
-#: ../../mod/profile.php:64 ../../mod/profile.php:72 ../../mod/photos.php:68
-#: ../../mod/photos.php:526 ../../mod/mitem.php:73 ../../mod/regmod.php:18
-#: ../../mod/mood.php:112 ../../mod/pdledit.php:21
-#: ../../mod/profile_photo.php:263 ../../mod/profile_photo.php:276
-#: ../../mod/menu.php:44 ../../mod/block.php:22 ../../mod/block.php:72
-#: ../../mod/suggest.php:26 ../../mod/connedit.php:221
-#: ../../mod/message.php:16 ../../mod/setup.php:203 ../../mod/invite.php:13
-#: ../../mod/invite.php:104 ../../mod/thing.php:249 ../../mod/thing.php:266
-#: ../../mod/thing.php:301 ../../mod/viewconnections.php:22
-#: ../../mod/viewconnections.php:27 ../../mod/register.php:68
-#: ../../mod/network.php:12 ../../mod/delegate.php:6 ../../mod/fsuggest.php:78
-#: ../../mod/manage.php:6 ../../mod/editpost.php:13
-#: ../../mod/editwebpage.php:44 ../../mod/editwebpage.php:83
-#: ../../mod/poke.php:128 ../../mod/blocks.php:29 ../../mod/blocks.php:44
-#: ../../mod/group.php:9 ../../mod/item.php:179 ../../mod/item.php:187
-#: ../../mod/item.php:902 ../../mod/appman.php:66 ../../mod/sources.php:66
-#: ../../mod/page.php:30 ../../mod/page.php:80 ../../mod/mail.php:108
-#: ../../mod/channel.php:89 ../../mod/channel.php:193
-#: ../../mod/channel.php:236 ../../mod/profiles.php:152
-#: ../../mod/profiles.php:462 ../../mod/bookmarks.php:46
-#: ../../mod/common.php:35 ../../mod/api.php:26 ../../mod/api.php:31
-#: ../../mod/chat.php:90 ../../mod/chat.php:95 ../../mod/events.php:141
-#: ../../mod/notifications.php:66 ../../mod/layouts.php:27
-#: ../../mod/layouts.php:39 ../../mod/editblock.php:34
-#: ../../mod/viewsrc.php:12 ../../mod/achievements.php:27
-#: ../../mod/editlayout.php:48 ../../index.php:186 ../../index.php:361
-msgid "Permission denied."
-msgstr "Permesso negato."
+#: ../../include/taxonomy.php:269
+msgid "Keywords"
+msgstr "Parole chiave"
-#: ../../include/photos.php:51 ../../include/photo/photo_driver.php:643
-#: ../../mod/photos.php:91 ../../mod/photos.php:653 ../../mod/photos.php:675
-#: ../../mod/profile_photo.php:142 ../../mod/profile_photo.php:301
-#: ../../mod/profile_photo.php:421
-msgid "Profile Photos"
-msgstr "Foto del profilo"
+#: ../../include/taxonomy.php:294
+msgid "have"
+msgstr "ho"
-#: ../../include/photos.php:89
-#, php-format
-msgid "Image exceeds website size limit of %lu bytes"
-msgstr "L'immagine supera il limite massimo di %lu bytes"
+#: ../../include/taxonomy.php:294
+msgid "has"
+msgstr "ha"
-#: ../../include/photos.php:96
-msgid "Image file is empty."
-msgstr "Il file dell'immagine è vuoto."
+#: ../../include/taxonomy.php:295
+msgid "want"
+msgstr "voglio"
-#: ../../include/photos.php:123 ../../mod/profile_photo.php:216
-msgid "Unable to process image"
-msgstr "Impossibile elaborare l'immagine"
+#: ../../include/taxonomy.php:295
+msgid "wants"
+msgstr "vuole"
-#: ../../include/photos.php:186
-msgid "Photo storage failed."
-msgstr "Impossibile caricare la foto."
+#: ../../include/taxonomy.php:296 ../../include/ItemObject.php:221
+msgid "like"
+msgstr "mi piace"
-#: ../../include/photos.php:313 ../../include/conversation.php:1512
-msgid "Photo Albums"
-msgstr "Album foto"
+#: ../../include/taxonomy.php:296
+msgid "likes"
+msgstr "gli piace"
-#: ../../include/photos.php:317 ../../mod/photos.php:691
-#: ../../mod/photos.php:1193
-msgid "Upload New Photos"
-msgstr "Carica nuove foto"
+#: ../../include/taxonomy.php:297 ../../include/ItemObject.php:222
+msgid "dislike"
+msgstr "non mi piace"
-#: ../../include/contact_widgets.php:14
-#, php-format
-msgid "%d invitation available"
-msgid_plural "%d invitations available"
-msgstr[0] "%d invito disponibile"
-msgstr[1] "%d inviti disponibili"
+#: ../../include/taxonomy.php:297
+msgid "dislikes"
+msgstr "non gli piace"
-#: ../../include/contact_widgets.php:19 ../../mod/admin.php:446
-msgid "Advanced"
-msgstr "Avanzate"
+#: ../../include/taxonomy.php:380 ../../include/identity.php:1148
+#: ../../include/ItemObject.php:146 ../../mod/photos.php:1027
+msgctxt "noun"
+msgid "Like"
+msgid_plural "Likes"
+msgstr[0] "Mi piace"
+msgstr[1] "Mi piace"
-#: ../../include/contact_widgets.php:22
-msgid "Find Channels"
-msgstr "Ricerca canali"
+#: ../../include/page_widgets.php:6
+msgid "New Page"
+msgstr "Nuova pagina web"
-#: ../../include/contact_widgets.php:23
-msgid "Enter name or interest"
-msgstr "Scrivi un nome o un interesse"
+#: ../../include/page_widgets.php:39 ../../mod/webpages.php:165
+#: ../../mod/blocks.php:135 ../../mod/layouts.php:171
+msgid "View"
+msgstr "Guarda"
-#: ../../include/contact_widgets.php:24
-msgid "Connect/Follow"
-msgstr "Aggiungi"
+#: ../../include/page_widgets.php:40 ../../include/conversation.php:1102
+#: ../../include/ItemObject.php:638 ../../mod/photos.php:998
+#: ../../mod/webpages.php:166
+msgid "Preview"
+msgstr "Anteprima"
-#: ../../include/contact_widgets.php:25
-msgid "Examples: Robert Morgenstein, Fishing"
-msgstr "Per esempio: Mario Rossi, Pesca"
+#: ../../include/page_widgets.php:41 ../../mod/webpages.php:167
+msgid "Actions"
+msgstr "Azioni"
-#: ../../include/contact_widgets.php:26 ../../mod/connections.php:392
-#: ../../mod/directory.php:206 ../../mod/directory.php:211
-msgid "Find"
-msgstr "Cerca"
+#: ../../include/page_widgets.php:42 ../../mod/webpages.php:168
+msgid "Page Link"
+msgstr "Link alla pagina"
-#: ../../include/contact_widgets.php:27 ../../mod/suggest.php:59
-msgid "Channel Suggestions"
-msgstr "Canali suggeriti"
+#: ../../include/page_widgets.php:43 ../../mod/webpages.php:169
+msgid "Title"
+msgstr "Titolo"
-#: ../../include/contact_widgets.php:29
-msgid "Random Profile"
-msgstr "Profilo casuale"
+#: ../../include/page_widgets.php:44 ../../mod/webpages.php:170
+msgid "Created"
+msgstr "Creato"
-#: ../../include/contact_widgets.php:30
-msgid "Invite Friends"
-msgstr "Invita amici"
+#: ../../include/page_widgets.php:45 ../../mod/webpages.php:171
+msgid "Edited"
+msgstr "Modificato"
-#: ../../include/contact_widgets.php:32
-msgid "Exammple: name=fred and country=iceland"
-msgstr "Per esempio: name=mario e country=italy"
+#: ../../include/oembed.php:171
+msgid "Embedded content"
+msgstr "Contenuti incorporati"
-#: ../../include/contact_widgets.php:33
-msgid "Advanced Find"
-msgstr "Ricerca avanzata"
+#: ../../include/oembed.php:180
+msgid "Embedding disabled"
+msgstr "Disabilita la creazione di contenuti incorporati"
-#: ../../include/contact_widgets.php:58 ../../include/features.php:66
-#: ../../include/widgets.php:296
-msgid "Saved Folders"
-msgstr "Cartelle salvate"
+#: ../../include/auth.php:130
+msgid "Logged out."
+msgstr "Uscita effettuata."
-#: ../../include/contact_widgets.php:61 ../../include/contact_widgets.php:95
-#: ../../include/widgets.php:299
-msgid "Everything"
-msgstr "Tutto"
+#: ../../include/auth.php:271
+msgid "Failed authentication"
+msgstr "Autenticazione fallita"
-#: ../../include/contact_widgets.php:92 ../../include/widgets.php:29
-msgid "Categories"
-msgstr "Categorie"
+#: ../../include/auth.php:285 ../../mod/openid.php:190
+msgid "Login failed."
+msgstr "Accesso fallito."
-#: ../../include/contact_widgets.php:125
+#: ../../include/photos.php:105
#, php-format
-msgid "%d connection in common"
-msgid_plural "%d connections in common"
-msgstr[0] "%d contatto in comune"
-msgstr[1] "%d contatti in comune"
+msgid "Image exceeds website size limit of %lu bytes"
+msgstr "L'immagine supera il limite massimo di %lu bytes"
-#: ../../include/contact_widgets.php:130
-msgid "show more"
-msgstr "mostra tutto"
+#: ../../include/photos.php:112
+msgid "Image file is empty."
+msgstr "Il file dell'immagine è vuoto."
+
+#: ../../include/photos.php:141 ../../mod/profile_photo.php:216
+msgid "Unable to process image"
+msgstr "Impossibile elaborare l'immagine"
+
+#: ../../include/photos.php:213
+msgid "Photo storage failed."
+msgstr "Impossibile caricare la foto."
+
+#: ../../include/photos.php:341 ../../include/conversation.php:1533
+msgid "Photo Albums"
+msgstr "Album foto"
+
+#: ../../include/photos.php:345
+msgid "Upload New Photos"
+msgstr "Carica nuove foto"
#: ../../include/activities.php:39
msgid " and "
@@ -465,1478 +467,523 @@ msgstr "e"
msgid "public profile"
msgstr "profilo pubblico"
-#: ../../include/activities.php:52
+#: ../../include/activities.php:56
#, php-format
msgid "%1$s changed %2$s to &ldquo;%3$s&rdquo;"
msgstr "%1$s ha cambiato %2$s in &ldquo;%3$s&rdquo;"
-#: ../../include/activities.php:53
+#: ../../include/activities.php:57
#, php-format
msgid "Visit %1$s's %2$s"
msgstr "Guarda %2$s di %1$s "
-#: ../../include/activities.php:56
+#: ../../include/activities.php:60
#, php-format
msgid "%1$s has an updated %2$s, changing %3$s."
msgstr "%1$s ha aggiornato %2$s cambiando %3$s."
-#: ../../include/items.php:306 ../../mod/subthread.php:49
-#: ../../mod/profperm.php:23 ../../mod/group.php:68 ../../mod/like.php:202
-#: ../../index.php:360
-msgid "Permission denied"
-msgstr "Permesso negato"
-
-#: ../../include/items.php:830
-msgid "(Unknown)"
-msgstr "(Sconosciuto)"
-
-#: ../../include/items.php:3618 ../../mod/filestorage.php:18
-#: ../../mod/home.php:67 ../../mod/admin.php:159 ../../mod/admin.php:923
-#: ../../mod/admin.php:1126 ../../mod/thing.php:78 ../../mod/display.php:32
-#: ../../mod/viewsrc.php:18
-msgid "Item not found."
-msgstr "Elemento non trovato."
-
-#: ../../include/items.php:4051 ../../mod/group.php:38 ../../mod/group.php:140
-msgid "Collection not found."
-msgstr "Insieme non trovato."
-
-#: ../../include/items.php:4066
-msgid "Collection is empty."
-msgstr "L'insieme di canali è vuoto."
-
-#: ../../include/items.php:4073
-#, php-format
-msgid "Collection: %s"
-msgstr "Insieme: %s"
-
-#: ../../include/items.php:4084
-#, php-format
-msgid "Connection: %s"
-msgstr "Contatto: %s"
-
-#: ../../include/items.php:4087
-msgid "Connection not found."
-msgstr "Contatto non trovato."
-
-#: ../../include/Contact.php:107 ../../include/identity.php:675
-#: ../../include/widgets.php:128 ../../include/widgets.php:168
-#: ../../mod/dirprofile.php:164 ../../mod/suggest.php:51
-#: ../../mod/directory.php:183 ../../mod/match.php:62
-msgid "Connect"
-msgstr "Aggiungi"
-
-#: ../../include/Contact.php:123
-msgid "New window"
-msgstr "Nuova finestra"
-
-#: ../../include/Contact.php:124
-msgid "Open the selected location in a different window or browser tab"
-msgstr "Apri l'indirizzo selezionato in una nuova scheda o finestra"
-
-#: ../../include/datetime.php:43 ../../include/datetime.php:45
-msgid "Miscellaneous"
-msgstr "Altro"
+#: ../../include/bb2diaspora.php:366
+msgid "Attachments:"
+msgstr "Allegati:"
-#: ../../include/datetime.php:152 ../../include/datetime.php:284
-msgid "year"
-msgstr "anno"
-
-#: ../../include/datetime.php:157 ../../include/datetime.php:285
-msgid "month"
-msgstr "mese"
-
-#: ../../include/datetime.php:162 ../../include/datetime.php:287
-msgid "day"
-msgstr "giorno"
-
-#: ../../include/datetime.php:275
-msgid "never"
-msgstr "mai"
-
-#: ../../include/datetime.php:281
-msgid "less than a second ago"
-msgstr "meno di un secondo fa"
+#: ../../include/bb2diaspora.php:445 ../../include/event.php:11
+msgid "l F d, Y \\@ g:i A"
+msgstr "l d F Y \\@ G:i"
-#: ../../include/datetime.php:284
-msgid "years"
-msgstr "anni"
+#: ../../include/bb2diaspora.php:447
+msgid "Redmatrix event notification:"
+msgstr "Notifica eventi RedMatrix:"
-#: ../../include/datetime.php:285
-msgid "months"
-msgstr "mesi"
+#: ../../include/bb2diaspora.php:451 ../../include/event.php:20
+msgid "Starts:"
+msgstr "Inizio:"
-#: ../../include/datetime.php:286
-msgid "week"
-msgstr "settimana"
+#: ../../include/bb2diaspora.php:459 ../../include/event.php:30
+msgid "Finishes:"
+msgstr "Fine:"
-#: ../../include/datetime.php:286
-msgid "weeks"
-msgstr "settimane"
+#: ../../include/bb2diaspora.php:467 ../../include/event.php:40
+#: ../../include/identity.php:891 ../../mod/events.php:590
+#: ../../mod/directory.php:199
+msgid "Location:"
+msgstr "Luogo:"
-#: ../../include/datetime.php:287
-msgid "days"
-msgstr "giorni"
+#: ../../include/features.php:23
+msgid "General Features"
+msgstr "Funzionalità di base"
-#: ../../include/datetime.php:288
-msgid "hour"
-msgstr "ora"
+#: ../../include/features.php:25
+msgid "Content Expiration"
+msgstr "Scadenza"
-#: ../../include/datetime.php:288
-msgid "hours"
-msgstr "ore"
+#: ../../include/features.php:25
+msgid "Remove posts/comments and/or private messages at a future time"
+msgstr "Elimina gli articoli, i commenti o i messaggi privati dopo un lasso di tempo"
-#: ../../include/datetime.php:289
-msgid "minute"
-msgstr "minuto"
+#: ../../include/features.php:26
+msgid "Multiple Profiles"
+msgstr "Profili multipli"
-#: ../../include/datetime.php:289
-msgid "minutes"
-msgstr "minuti"
+#: ../../include/features.php:26
+msgid "Ability to create multiple profiles"
+msgstr "Abilitazione a creare profili multipli"
-#: ../../include/datetime.php:290
-msgid "second"
-msgstr "secondo"
+#: ../../include/features.php:27
+msgid "Advanced Profiles"
+msgstr "Profili avanzati"
-#: ../../include/datetime.php:290
-msgid "seconds"
-msgstr "secondi"
+#: ../../include/features.php:27
+msgid "Additional profile sections and selections"
+msgstr "Informazioni aggiuntive del profilo"
-#: ../../include/datetime.php:299
-#, php-format
-msgid "%1$d %2$s ago"
-msgstr "%1$d %2$s fa"
+#: ../../include/features.php:28
+msgid "Profile Import/Export"
+msgstr "Importa/esporta il profilo"
-#: ../../include/datetime.php:504
-#, php-format
-msgid "%1$s's birthday"
-msgstr "È il compleanno di %1$s"
+#: ../../include/features.php:28
+msgid "Save and load profile details across sites/channels"
+msgstr "Salva o ripristina le informazioni del profilo su canali o siti diversi"
-#: ../../include/datetime.php:505
-#, php-format
-msgid "Happy Birthday %1$s"
-msgstr "Buon compleanno %1$s"
+#: ../../include/features.php:29
+msgid "Web Pages"
+msgstr "Pagine web"
-#: ../../include/identity.php:30 ../../mod/item.php:1274
-msgid "Unable to obtain identity information from database"
-msgstr "Impossibile ottenere le informazioni di identificazione dal database"
+#: ../../include/features.php:29
+msgid "Provide managed web pages on your channel"
+msgstr "Attiva la creazione di pagine web sul tuo canale"
-#: ../../include/identity.php:63
-msgid "Empty name"
-msgstr "Nome vuoto"
+#: ../../include/features.php:30
+msgid "Private Notes"
+msgstr "Note private"
-#: ../../include/identity.php:65
-msgid "Name too long"
-msgstr "Nome troppo lungo"
+#: ../../include/features.php:30
+msgid "Enables a tool to store notes and reminders"
+msgstr "Abilita il riquadro per scrivere annotazioni"
-#: ../../include/identity.php:166
-msgid "No account identifier"
-msgstr "Account senza identificativo"
+#: ../../include/features.php:34
+msgid "Navigation Channel Select"
+msgstr "Scegli il canale attivo dal menu"
-#: ../../include/identity.php:176
-msgid "Nickname is required."
-msgstr "Il nome dell'account è obbligatorio."
+#: ../../include/features.php:34
+msgid "Change channels directly from within the navigation dropdown menu"
+msgstr "Scegli il canale attivo direttamente dal menu di navigazione"
-#: ../../include/identity.php:190
-msgid "Reserved nickname. Please choose another."
-msgstr "Nome utente riservato. Per favore scegline un altro."
+#: ../../include/features.php:38
+msgid "Extended Identity Sharing"
+msgstr "Condivisione avanzata dell'identità"
-#: ../../include/identity.php:195
+#: ../../include/features.php:38
msgid ""
-"Nickname has unsupported characters or is already being used on this site."
-msgstr "Il nome dell'account è già in uso oppure ha dei caratteri non supportati."
-
-#: ../../include/identity.php:258
-msgid "Unable to retrieve created identity"
-msgstr "Impossibile caricare l'identità creata"
-
-#: ../../include/identity.php:317
-msgid "Default Profile"
-msgstr "Profilo predefinito"
-
-#: ../../include/identity.php:342 ../../include/profile_selectors.php:42
-#: ../../include/widgets.php:400 ../../mod/connedit.php:431
-msgid "Friends"
-msgstr "Amici"
-
-#: ../../include/identity.php:509
-msgid "Requested channel is not available."
-msgstr "Il canale che cerchi non è disponibile."
-
-#: ../../include/identity.php:557 ../../mod/filestorage.php:40
-#: ../../mod/webpages.php:8 ../../mod/profile.php:16 ../../mod/connect.php:13
-#: ../../mod/blocks.php:10 ../../mod/layouts.php:8
-#: ../../mod/achievements.php:8
-msgid "Requested profile is not available."
-msgstr "Il profilo richiesto non è disponibile."
-
-#: ../../include/identity.php:689 ../../mod/profiles.php:612
-msgid "Change profile photo"
-msgstr "Cambia la foto del profilo"
-
-#: ../../include/identity.php:695
-msgid "Profiles"
-msgstr "Profili"
-
-#: ../../include/identity.php:695
-msgid "Manage/edit profiles"
-msgstr "Gestisci/modifica i profili"
-
-#: ../../include/identity.php:696 ../../mod/profiles.php:613
-msgid "Create New Profile"
-msgstr "Crea un nuovo profilo"
-
-#: ../../include/identity.php:699
-msgid "Edit Profile"
-msgstr "Modifica il profilo"
-
-#: ../../include/identity.php:710 ../../mod/profiles.php:624
-msgid "Profile Image"
-msgstr "Immagine del profilo"
-
-#: ../../include/identity.php:713 ../../mod/profiles.php:627
-msgid "visible to everybody"
-msgstr "visibile a tutti"
-
-#: ../../include/identity.php:714 ../../mod/profiles.php:628
-msgid "Edit visibility"
-msgstr "Cambia la visibilità"
-
-#: ../../include/identity.php:726 ../../include/event.php:40
-#: ../../include/bb2diaspora.php:463 ../../mod/dirprofile.php:105
-#: ../../mod/directory.php:156 ../../mod/events.php:485
-msgid "Location:"
-msgstr "Luogo:"
-
-#: ../../include/identity.php:728 ../../include/identity.php:952
-#: ../../mod/directory.php:158
-msgid "Gender:"
-msgstr "Sesso:"
-
-#: ../../include/identity.php:729 ../../include/identity.php:996
-#: ../../mod/directory.php:160
-msgid "Status:"
-msgstr "Stato:"
-
-#: ../../include/identity.php:730 ../../include/identity.php:1007
-#: ../../mod/directory.php:162
-msgid "Homepage:"
-msgstr "Home page:"
-
-#: ../../include/identity.php:731 ../../mod/dirprofile.php:151
-msgid "Online Now"
-msgstr "Online adesso"
-
-#: ../../include/identity.php:796 ../../include/identity.php:876
-#: ../../mod/ping.php:298
-msgid "g A l F d"
-msgstr "g A l d F"
-
-#: ../../include/identity.php:797 ../../include/identity.php:877
-msgid "F d"
-msgstr "d F"
+"Share your identity with all websites on the internet. When disabled, "
+"identity is only shared with sites in the matrix."
+msgstr "Rendi nota la tua identità a tutti i siti internet. Se disabilitato, la tua identità sarà comunicata solo ai siti RedMatrix."
-#: ../../include/identity.php:842 ../../include/identity.php:917
-#: ../../mod/ping.php:320
-msgid "[today]"
-msgstr "[oggi]"
+#: ../../include/features.php:39
+msgid "Expert Mode"
+msgstr "Modalità esperto"
-#: ../../include/identity.php:854
-msgid "Birthday Reminders"
-msgstr "Promemoria compleanni"
+#: ../../include/features.php:39
+msgid "Enable Expert Mode to provide advanced configuration options"
+msgstr "Abilita la modalità esperto per vedere le opzioni di configurazione avanzate"
-#: ../../include/identity.php:855
-msgid "Birthdays this week:"
-msgstr "Compleanni questa settimana:"
+#: ../../include/features.php:40
+msgid "Premium Channel"
+msgstr "Canale premium"
-#: ../../include/identity.php:910
-msgid "[No description]"
-msgstr "[Nessuna descrizione]"
+#: ../../include/features.php:40
+msgid ""
+"Allows you to set restrictions and terms on those that connect with your "
+"channel"
+msgstr "Ti permette di impostare delle restrizioni e dei termini d'uso a chi segue il canale"
-#: ../../include/identity.php:928
-msgid "Event Reminders"
-msgstr "Promemoria"
+#: ../../include/features.php:45
+msgid "Post Composition Features"
+msgstr "Modalità di scrittura articoli"
-#: ../../include/identity.php:929
-msgid "Events this week:"
-msgstr "Eventi di questa settimana:"
+#: ../../include/features.php:47
+msgid "Use Markdown"
+msgstr "Usa il markdown"
-#: ../../include/identity.php:942 ../../include/identity.php:1050
-#: ../../include/apps.php:128 ../../mod/profperm.php:112
-msgid "Profile"
-msgstr "Profilo"
+#: ../../include/features.php:47
+msgid "Allow use of \"Markdown\" to format posts"
+msgstr "Consenti l'uso del markdown per formattare gli articoli"
-#: ../../include/identity.php:950 ../../mod/settings.php:935
-msgid "Full Name:"
-msgstr "Nome completo:"
+#: ../../include/features.php:49 ../../include/widgets.php:527
+#: ../../mod/sources.php:88
+msgid "Channel Sources"
+msgstr "Sorgenti del canale"
-#: ../../include/identity.php:957
-msgid "Like this channel"
-msgstr "Mi piace questo canale"
+#: ../../include/features.php:49
+msgid "Automatically import channel content from other channels or feeds"
+msgstr "Importa automaticamente il contenuto del canale da altri canali o feed"
-#: ../../include/identity.php:968 ../../include/taxonomy.php:338
-#: ../../include/ItemObject.php:134
-msgctxt "noun"
-msgid "Like"
-msgid_plural "Likes"
-msgstr[0] "Mi piace"
-msgstr[1] "Mi piace"
+#: ../../include/features.php:50
+msgid "Even More Encryption"
+msgstr "Crittografia addizionale"
-#: ../../include/identity.php:981
-msgid "j F, Y"
-msgstr "j F Y"
+#: ../../include/features.php:50
+msgid ""
+"Allow optional encryption of content end-to-end with a shared secret key"
+msgstr "Rendi possibile la crittografia tra mittente e destinatario che condividono una chiave segreta"
-#: ../../include/identity.php:982
-msgid "j F"
-msgstr "j F"
+#: ../../include/features.php:51
+msgid "Flag Adult Photos"
+msgstr "Marca le foto per adulti"
-#: ../../include/identity.php:989
-msgid "Birthday:"
-msgstr "Compleanno:"
+#: ../../include/features.php:51
+msgid "Provide photo edit option to hide adult photos from default album view"
+msgstr "Permette di marcare e nascondere negli album le foto per adulti"
-#: ../../include/identity.php:993
-msgid "Age:"
-msgstr "Età:"
+#: ../../include/features.php:56
+msgid "Network and Stream Filtering"
+msgstr "Filtraggio dei contenuti"
-#: ../../include/identity.php:1002
-#, php-format
-msgid "for %1$d %2$s"
-msgstr "per %1$d %2$s"
+#: ../../include/features.php:57
+msgid "Search by Date"
+msgstr "Ricerca per data"
-#: ../../include/identity.php:1005 ../../mod/profiles.php:535
-msgid "Sexual Preference:"
-msgstr "Preferenze sessuali:"
+#: ../../include/features.php:57
+msgid "Ability to select posts by date ranges"
+msgstr "Per selezionare gli articoli in un intervallo tra date"
-#: ../../include/identity.php:1009 ../../mod/profiles.php:537
-msgid "Hometown:"
-msgstr "Città dove vivo:"
+#: ../../include/features.php:58
+msgid "Collections Filter"
+msgstr "Filtra per insiemi di canali"
-#: ../../include/identity.php:1011
-msgid "Tags:"
-msgstr "Tag:"
+#: ../../include/features.php:58
+msgid "Enable widget to display Network posts only from selected collections"
+msgstr "Mostra il riquadro per filtrare gli articoli di certi insiemi di canali"
-#: ../../include/identity.php:1013 ../../mod/profiles.php:538
-msgid "Political Views:"
-msgstr "Orientamento politico:"
+#: ../../include/features.php:59 ../../include/widgets.php:272
+msgid "Saved Searches"
+msgstr "Ricerche salvate"
-#: ../../include/identity.php:1015
-msgid "Religion:"
-msgstr "Religione:"
+#: ../../include/features.php:59
+msgid "Save search terms for re-use"
+msgstr "Salva i termini delle ricerche per poterle ripetere"
-#: ../../include/identity.php:1017 ../../mod/directory.php:164
-msgid "About:"
-msgstr "Informazioni:"
+#: ../../include/features.php:60
+msgid "Network Personal Tab"
+msgstr "Attività personale"
-#: ../../include/identity.php:1019
-msgid "Hobbies/Interests:"
-msgstr "Interessi e hobby:"
+#: ../../include/features.php:60
+msgid "Enable tab to display only Network posts that you've interacted on"
+msgstr "Abilita il link per mostrare solamente i contenuti con cui hai interagito"
-#: ../../include/identity.php:1021 ../../mod/profiles.php:541
-msgid "Likes:"
-msgstr "Mi piace:"
+#: ../../include/features.php:61
+msgid "Network New Tab"
+msgstr "Contenuti nuovi"
-#: ../../include/identity.php:1023 ../../mod/profiles.php:542
-msgid "Dislikes:"
-msgstr "Non mi piace:"
+#: ../../include/features.php:61
+msgid "Enable tab to display all new Network activity"
+msgstr "Abilita il link per visualizzare solo i nuovi contenuti"
-#: ../../include/identity.php:1026
-msgid "Contact information and Social Networks:"
-msgstr "Contatti e social network:"
+#: ../../include/features.php:62
+msgid "Affinity Tool"
+msgstr "Filtro per affinità"
-#: ../../include/identity.php:1028
-msgid "My other channels:"
-msgstr "I miei altri canali:"
+#: ../../include/features.php:62
+msgid "Filter stream activity by depth of relationships"
+msgstr "Permette di selezionare i contenuti in base al livello di amicizia"
-#: ../../include/identity.php:1030
-msgid "Musical interests:"
-msgstr "Gusti musicali:"
+#: ../../include/features.php:63
+msgid "Suggest Channels"
+msgstr "Suggerisci canali"
-#: ../../include/identity.php:1032
-msgid "Books, literature:"
-msgstr "Libri, letteratura:"
+#: ../../include/features.php:63
+msgid "Show channel suggestions"
+msgstr "Mostra alcuni canali che potrebbero interessarti"
-#: ../../include/identity.php:1034
-msgid "Television:"
-msgstr "Televisione:"
+#: ../../include/features.php:68
+msgid "Post/Comment Tools"
+msgstr "Gestione articoli e commenti"
-#: ../../include/identity.php:1036
-msgid "Film/dance/culture/entertainment:"
-msgstr "Film, danza, cultura, intrattenimento:"
+#: ../../include/features.php:71
+msgid "Tagging"
+msgstr "Tag"
-#: ../../include/identity.php:1038
-msgid "Love/Romance:"
-msgstr "Amore:"
+#: ../../include/features.php:71
+msgid "Ability to tag existing posts"
+msgstr "Permetti l'aggiunta di tag su articoli già esistenti"
-#: ../../include/identity.php:1040
-msgid "Work/employment:"
-msgstr "Lavoro:"
+#: ../../include/features.php:72
+msgid "Post Categories"
+msgstr "Categorie degli articoli"
-#: ../../include/identity.php:1042
-msgid "School/education:"
-msgstr "Scuola:"
+#: ../../include/features.php:72
+msgid "Add categories to your posts"
+msgstr "Abilita le categorie per i tuoi articoli"
-#: ../../include/identity.php:1052
-msgid "Like this thing"
-msgstr "Mi piace questo oggetto"
+#: ../../include/features.php:73 ../../include/contact_widgets.php:57
+#: ../../include/widgets.php:302
+msgid "Saved Folders"
+msgstr "Cartelle salvate"
-#: ../../include/page_widgets.php:6
-msgid "New Page"
-msgstr "Nuova pagina web"
+#: ../../include/features.php:73
+msgid "Ability to file posts under folders"
+msgstr "Abilita la raccolta dei tuoi articoli in cartelle"
-#: ../../include/page_widgets.php:39 ../../mod/webpages.php:123
-#: ../../mod/blocks.php:97 ../../mod/layouts.php:116
-msgid "View"
-msgstr "Guarda"
+#: ../../include/features.php:74
+msgid "Dislike Posts"
+msgstr "Non mi piace"
-#: ../../include/page_widgets.php:40 ../../include/ItemObject.php:592
-#: ../../include/conversation.php:1091 ../../mod/webpages.php:124
-#: ../../mod/photos.php:997 ../../mod/editpost.php:140
-#: ../../mod/editwebpage.php:174 ../../mod/editblock.php:141
-#: ../../mod/editlayout.php:135
-msgid "Preview"
-msgstr "Anteprima"
+#: ../../include/features.php:74
+msgid "Ability to dislike posts/comments"
+msgstr "Abilità la funzionalità \"non mi piace\" per i tuoi articoli"
-#: ../../include/page_widgets.php:41 ../../mod/webpages.php:125
-msgid "Actions"
-msgstr "Azioni"
+#: ../../include/features.php:75
+msgid "Star Posts"
+msgstr "Articoli stella (preferiti)"
-#: ../../include/page_widgets.php:42 ../../mod/webpages.php:126
-msgid "Page Link"
-msgstr "Link alla pagina"
+#: ../../include/features.php:75
+msgid "Ability to mark special posts with a star indicator"
+msgstr "Mostra la stella per scegliere gli articoli preferiti"
-#: ../../include/page_widgets.php:43 ../../mod/webpages.php:127
-msgid "Title"
-msgstr "Titolo"
+#: ../../include/features.php:76
+msgid "Tag Cloud"
+msgstr "Nuvola di tag"
-#: ../../include/page_widgets.php:44 ../../mod/webpages.php:128
-msgid "Created"
-msgstr "Creato"
+#: ../../include/features.php:76
+msgid "Provide a personal tag cloud on your channel page"
+msgstr "Mostra la nuvola dei tag che usi di più sulla pagina del tuo canale"
-#: ../../include/page_widgets.php:45 ../../mod/webpages.php:129
-msgid "Edited"
-msgstr "Modificato"
+#: ../../include/RedDAV/RedBrowser.php:106
+#: ../../include/RedDAV/RedBrowser.php:260
+msgid "parent"
+msgstr "cartella superiore"
-#: ../../include/reddav.php:1169
+#: ../../include/RedDAV/RedBrowser.php:130
msgid "Collection"
msgstr "Cartella"
-#: ../../include/reddav.php:1172
+#: ../../include/RedDAV/RedBrowser.php:133
msgid "Principal"
msgstr "Principale"
-#: ../../include/reddav.php:1175
+#: ../../include/RedDAV/RedBrowser.php:136
msgid "Addressbook"
msgstr "Rubrica"
-#: ../../include/reddav.php:1178
+#: ../../include/RedDAV/RedBrowser.php:139
msgid "Calendar"
msgstr "Calendario"
-#: ../../include/reddav.php:1181
+#: ../../include/RedDAV/RedBrowser.php:142
msgid "Schedule Inbox"
msgstr "Appuntamenti ricevuti"
-#: ../../include/reddav.php:1184
+#: ../../include/RedDAV/RedBrowser.php:145
msgid "Schedule Outbox"
msgstr "Appuntamenti inviati"
-#: ../../include/reddav.php:1202 ../../include/apps.php:313
-#: ../../include/apps.php:364 ../../mod/connedit.php:434
+#: ../../include/RedDAV/RedBrowser.php:163 ../../include/conversation.php:992
+#: ../../include/apps.php:336 ../../include/apps.php:387
+#: ../../mod/connedit.php:513 ../../mod/photos.php:713
+#: ../../mod/photos.php:1132
msgid "Unknown"
msgstr "Sconosciuto"
-#: ../../include/reddav.php:1262
+#: ../../include/RedDAV/RedBrowser.php:223
#, php-format
msgid "%1$s used"
msgstr "%1$s occupati"
-#: ../../include/reddav.php:1267
+#: ../../include/RedDAV/RedBrowser.php:228
#, php-format
msgid "%1$s used of %2$s (%3$s&#37;)"
msgstr "%1$s occupati di %2$s (%3$s&#37;)"
-#: ../../include/reddav.php:1280 ../../include/nav.php:85
-#: ../../include/apps.php:125 ../../include/conversation.php:1518
+#: ../../include/RedDAV/RedBrowser.php:247 ../../include/conversation.php:1539
+#: ../../include/apps.php:135 ../../include/nav.php:106
#: ../../mod/fbrowser.php:114
msgid "Files"
-msgstr "Elenco file"
+msgstr "Archivio file"
+
+#: ../../include/RedDAV/RedBrowser.php:249
+msgid "Total"
+msgstr "Totale"
+
+#: ../../include/RedDAV/RedBrowser.php:256 ../../mod/settings.php:567
+#: ../../mod/settings.php:593 ../../mod/admin.php:866
+msgid "Name"
+msgstr "Nome"
+
+#: ../../include/RedDAV/RedBrowser.php:257
+msgid "Type"
+msgstr "Tipo"
+
+#: ../../include/RedDAV/RedBrowser.php:258
+msgid "Size"
+msgstr "Dimensione"
+
+#: ../../include/RedDAV/RedBrowser.php:259
+msgid "Last Modified"
+msgstr "Ultima modifica"
-#: ../../include/reddav.php:1336
+#: ../../include/RedDAV/RedBrowser.php:262 ../../include/conversation.php:639
+#: ../../include/ItemObject.php:120 ../../include/apps.php:255
+#: ../../mod/settings.php:628 ../../mod/group.php:176
+#: ../../mod/connedit.php:476 ../../mod/photos.php:1070
+#: ../../mod/thing.php:234 ../../mod/admin.php:730 ../../mod/admin.php:861
+msgid "Delete"
+msgstr "Elimina"
+
+#: ../../include/RedDAV/RedBrowser.php:310
msgid "Create new folder"
msgstr "Crea una nuova cartella"
-#: ../../include/reddav.php:1337 ../../mod/new_channel.php:117
-#: ../../mod/mitem.php:142 ../../mod/menu.php:84
+#: ../../include/RedDAV/RedBrowser.php:311 ../../mod/mitem.php:169
+#: ../../mod/menu.php:100 ../../mod/new_channel.php:124
msgid "Create"
msgstr "Crea"
-#: ../../include/reddav.php:1338
+#: ../../include/RedDAV/RedBrowser.php:312
msgid "Upload file"
msgstr "Carica un file"
-#: ../../include/reddav.php:1339 ../../mod/profile_photo.php:361
+#: ../../include/RedDAV/RedBrowser.php:313 ../../mod/photos.php:738
+#: ../../mod/photos.php:1246 ../../mod/profile_photo.php:361
msgid "Upload"
msgstr "Carica"
-#: ../../include/message.php:18
-msgid "No recipient provided."
-msgstr "Devi scegliere un destinatario."
-
-#: ../../include/message.php:23
-msgid "[no subject]"
-msgstr "[nessun titolo]"
-
-#: ../../include/message.php:42
-msgid "Unable to determine sender."
-msgstr "Impossibile determinare il mittente."
-
-#: ../../include/message.php:143
-msgid "Stored post could not be verified."
-msgstr "Non è stato possibile verificare l'articolo inserito."
-
-#: ../../include/taxonomy.php:210
-msgid "Tags"
-msgstr "Tag"
-
-#: ../../include/taxonomy.php:227
-msgid "Keywords"
-msgstr "Parole chiave"
-
-#: ../../include/taxonomy.php:252
-msgid "have"
-msgstr "ho"
-
-#: ../../include/taxonomy.php:252
-msgid "has"
-msgstr "ha"
-
-#: ../../include/taxonomy.php:253
-msgid "want"
-msgstr "voglio"
-
-#: ../../include/taxonomy.php:253
-msgid "wants"
-msgstr "vuole"
-
-#: ../../include/taxonomy.php:254 ../../include/ItemObject.php:208
-msgid "like"
-msgstr "mi piace"
-
-#: ../../include/taxonomy.php:254
-msgid "likes"
-msgstr "mi piace"
-
-#: ../../include/taxonomy.php:255 ../../include/ItemObject.php:209
-msgid "dislike"
-msgstr "non mi piace"
-
-#: ../../include/taxonomy.php:255
-msgid "dislikes"
-msgstr "non mi piace"
-
-#: ../../include/js_strings.php:5
-msgid "Delete this item?"
-msgstr "Eliminare questo elemento?"
-
-#: ../../include/js_strings.php:6 ../../include/ItemObject.php:582
-#: ../../mod/photos.php:995 ../../mod/photos.php:1082
-msgid "Comment"
-msgstr "Commento"
-
-#: ../../include/js_strings.php:7 ../../include/ItemObject.php:316
-msgid "[+] show all"
-msgstr "[+] mostra tutto"
-
-#: ../../include/js_strings.php:8
-msgid "[-] show less"
-msgstr "[-] riduci"
-
-#: ../../include/js_strings.php:9
-msgid "[+] expand"
-msgstr "[+] mostra tutto"
-
-#: ../../include/js_strings.php:10
-msgid "[-] collapse"
-msgstr "[-] riduci"
-
-#: ../../include/js_strings.php:11
-msgid "Password too short"
-msgstr "Password troppo corta"
-
-#: ../../include/js_strings.php:12
-msgid "Passwords do not match"
-msgstr "Le password non corrispondono"
-
-#: ../../include/js_strings.php:13 ../../mod/photos.php:39
-msgid "everybody"
-msgstr "tutti"
-
-#: ../../include/js_strings.php:14
-msgid "Secret Passphrase"
-msgstr "Chiave segreta"
-
-#: ../../include/js_strings.php:15
-msgid "Passphrase hint"
-msgstr "Suggerimento per la chiave segreta"
-
-#: ../../include/js_strings.php:16
-msgid "Notice: Permissions have changed but have not yet been submitted."
-msgstr "Nota: i permessi sono stati modificati ma non ancora salvati."
-
-#: ../../include/js_strings.php:17
-msgid "close all"
-msgstr "chiudi tutto"
-
-#: ../../include/js_strings.php:19
-msgid "timeago.prefixAgo"
-msgstr "timeago.prefixAgo"
-
-#: ../../include/js_strings.php:20
-msgid "timeago.prefixFromNow"
-msgstr "timeago.prefixFromNow"
-
-#: ../../include/js_strings.php:21
-msgid "ago"
-msgstr "fa"
-
-#: ../../include/js_strings.php:22
-msgid "from now"
-msgstr "da adesso"
-
-#: ../../include/js_strings.php:23
-msgid "less than a minute"
-msgstr "meno di un minuto"
-
-#: ../../include/js_strings.php:24
-msgid "about a minute"
-msgstr "circa un minuto"
-
-#: ../../include/js_strings.php:25
-#, php-format
-msgid "%d minutes"
-msgstr "%d minuti"
-
-#: ../../include/js_strings.php:26
-msgid "about an hour"
-msgstr "circa un’ora"
-
-#: ../../include/js_strings.php:27
-#, php-format
-msgid "about %d hours"
-msgstr "circa %d ore"
-
-#: ../../include/js_strings.php:28
-msgid "a day"
-msgstr "un giorno"
-
-#: ../../include/js_strings.php:29
+#: ../../include/bookmarks.php:35
#, php-format
-msgid "%d days"
-msgstr "%d giorni"
-
-#: ../../include/js_strings.php:30
-msgid "about a month"
-msgstr "circa un mese"
-
-#: ../../include/js_strings.php:31
-#, php-format
-msgid "%d months"
-msgstr "%d mesi"
-
-#: ../../include/js_strings.php:32
-msgid "about a year"
-msgstr "circa un anno"
-
-#: ../../include/js_strings.php:33
-#, php-format
-msgid "%d years"
-msgstr "%d anni"
-
-#: ../../include/js_strings.php:34
-msgid " "
-msgstr " "
-
-#: ../../include/js_strings.php:35
-msgid "timeago.numbers"
-msgstr "timeago.numbers"
-
-#: ../../include/permissions.php:13
-msgid "Can view my \"public\" stream and posts"
-msgstr "Può vedere i miei contenuti \"pubblici\""
-
-#: ../../include/permissions.php:14
-msgid "Can view my \"public\" channel profile"
-msgstr "Può vedere il profilo del mio canale \"pubblico\""
-
-#: ../../include/permissions.php:15
-msgid "Can view my \"public\" photo albums"
-msgstr "Può vedere il mio album fotografico \"pubblico\""
-
-#: ../../include/permissions.php:16
-msgid "Can view my \"public\" address book"
-msgstr "Può vedere il mio elenco contatti \"pubblico\""
-
-#: ../../include/permissions.php:17
-msgid "Can view my \"public\" file storage"
-msgstr "Può vedere il mio archivio file \"pubblico\""
-
-#: ../../include/permissions.php:18
-msgid "Can view my \"public\" pages"
-msgstr "Può vedere le mie pagine web \"pubbliche\""
-
-#: ../../include/permissions.php:21
-msgid "Can send me their channel stream and posts"
-msgstr "È tra i canali che seguo"
-
-#: ../../include/permissions.php:22
-msgid "Can post on my channel page (\"wall\")"
-msgstr "Può scrivere sulla bacheca del mio canale"
-
-#: ../../include/permissions.php:23
-msgid "Can comment on my posts"
-msgstr "Può commentare i miei articoli"
-
-#: ../../include/permissions.php:24
-msgid "Can send me private mail messages"
-msgstr "Può inviarmi messaggi privati"
-
-#: ../../include/permissions.php:25
-msgid "Can post photos to my photo albums"
-msgstr "Può aggiungere foto ai miei album"
-
-#: ../../include/permissions.php:26
-msgid "Can forward to all my channel contacts via post @mentions"
-msgstr "Può inoltrare articoli a tutti i contatti del canale tramite una @menzione"
-
-#: ../../include/permissions.php:26
-msgid "Advanced - useful for creating group forum channels"
-msgstr "Impostazione avanzata - utile per creare un canale-forum di discussione"
-
-#: ../../include/permissions.php:27
-msgid "Can chat with me (when available)"
-msgstr "Può aprire una chat con me (se disponibile)"
-
-#: ../../include/permissions.php:28
-msgid "Can write to my \"public\" file storage"
-msgstr "Può scrivere sul mio archivio di file \"pubblico\""
+msgid "%1$s's bookmarks"
+msgstr "I segnalibri di %1$s"
-#: ../../include/permissions.php:29
-msgid "Can edit my \"public\" pages"
-msgstr "Può modificare le mie pagine web \"pubbliche\""
+#: ../../include/dir_fns.php:68
+msgid "Directory Options"
+msgstr "Opzioni elenco pubblico"
-#: ../../include/permissions.php:31
-msgid "Can source my \"public\" posts in derived channels"
-msgstr "Può aggiungere i miei post \"pubblici\" a un suo canale derivato"
+#: ../../include/dir_fns.php:69
+msgid "Alphabetic"
+msgstr "Alfabetico"
-#: ../../include/permissions.php:31
-msgid "Somewhat advanced - very useful in open communities"
-msgstr "Piuttosto avanzato - molto utile nelle comunità aperte"
+#: ../../include/dir_fns.php:70
+msgid "Reverse Alphabetic"
+msgstr "Alfabetico inverso"
-#: ../../include/permissions.php:33
-msgid "Can administer my channel resources"
-msgstr "Può amministrare i contenuti del mio canale"
+#: ../../include/dir_fns.php:71
+msgid "Newest to Oldest"
+msgstr "Prima i più recenti"
-#: ../../include/permissions.php:33
-msgid ""
-"Extremely advanced. Leave this alone unless you know what you are doing"
-msgstr "Impostazione pericolosa - lasciare il valore predefinito se non si è assolutamente sicuri"
+#: ../../include/dir_fns.php:72
+msgid "Oldest to Newest"
+msgstr "Prima i più vecchi"
-#: ../../include/contact_selectors.php:30
-msgid "Unknown | Not categorised"
-msgstr "Sconosciuto | Senza categoria"
+#: ../../include/dir_fns.php:73
+msgid "Public Forums Only"
+msgstr "Solo forum pubblici"
-#: ../../include/contact_selectors.php:31
-msgid "Block immediately"
-msgstr "Blocca subito"
+#: ../../include/dir_fns.php:75
+msgid "Sort"
+msgstr "Ordinamento"
-#: ../../include/contact_selectors.php:32
-msgid "Shady, spammer, self-marketer"
-msgstr "Spammer o dedito al marketing"
+#: ../../include/dir_fns.php:91
+msgid "Enable Safe Search"
+msgstr "Abilita SafeSearch"
-#: ../../include/contact_selectors.php:33
-msgid "Known to me, but no opinion"
-msgstr "Lo conosco, ma non ho un'opinione particolare"
+#: ../../include/dir_fns.php:93
+msgid "Disable Safe Search"
+msgstr "Disabilita SafeSearch"
-#: ../../include/contact_selectors.php:34
-msgid "OK, probably harmless"
-msgstr "È ok, probabilmente innocuo"
+#: ../../include/dir_fns.php:95
+msgid "Safe Mode"
+msgstr "Modalità SafeSearch"
-#: ../../include/contact_selectors.php:35
-msgid "Reputable, has my trust"
-msgstr "Affidabile, ha la mia fiducia"
+#: ../../include/comanche.php:35 ../../mod/admin.php:353
+#: ../../view/theme/apw/php/config.php:185
+msgid "Default"
+msgstr "Predefinito"
-#: ../../include/contact_selectors.php:54
+#: ../../include/contact_selectors.php:56
msgid "Frequently"
msgstr "Frequentemente"
-#: ../../include/contact_selectors.php:55
+#: ../../include/contact_selectors.php:57
msgid "Hourly"
msgstr "Ogni ora"
-#: ../../include/contact_selectors.php:56
+#: ../../include/contact_selectors.php:58
msgid "Twice daily"
msgstr "Due volte al giorno"
-#: ../../include/contact_selectors.php:57
+#: ../../include/contact_selectors.php:59
msgid "Daily"
msgstr "Ogni giorno"
-#: ../../include/contact_selectors.php:58
+#: ../../include/contact_selectors.php:60
msgid "Weekly"
msgstr "Ogni settimana"
-#: ../../include/contact_selectors.php:59
+#: ../../include/contact_selectors.php:61
msgid "Monthly"
msgstr "Ogni mese"
-#: ../../include/contact_selectors.php:74
+#: ../../include/contact_selectors.php:76
msgid "Friendica"
msgstr "Friendica"
-#: ../../include/contact_selectors.php:75
+#: ../../include/contact_selectors.php:77
msgid "OStatus"
msgstr "OStatus"
-#: ../../include/contact_selectors.php:76
+#: ../../include/contact_selectors.php:78
msgid "RSS/Atom"
msgstr "RSS/Atom"
-#: ../../include/contact_selectors.php:78
+#: ../../include/contact_selectors.php:79 ../../mod/admin.php:726
+#: ../../mod/admin.php:735 ../../boot.php:1542
+msgid "Email"
+msgstr "Email"
+
+#: ../../include/contact_selectors.php:80
msgid "Diaspora"
msgstr "Diaspora"
-#: ../../include/contact_selectors.php:79
+#: ../../include/contact_selectors.php:81
msgid "Facebook"
msgstr "Facebook"
-#: ../../include/contact_selectors.php:80
+#: ../../include/contact_selectors.php:82
msgid "Zot!"
msgstr "Zot!"
-#: ../../include/contact_selectors.php:81
+#: ../../include/contact_selectors.php:83
msgid "LinkedIn"
msgstr "LinkedIn"
-#: ../../include/contact_selectors.php:82
+#: ../../include/contact_selectors.php:84
msgid "XMPP/IM"
msgstr "XMPP/IM"
-#: ../../include/contact_selectors.php:83
+#: ../../include/contact_selectors.php:85
msgid "MySpace"
msgstr "MySpace"
-#: ../../include/event.php:11 ../../include/bb2diaspora.php:441
-msgid "l F d, Y \\@ g:i A"
-msgstr "l d F Y \\@ G:i"
-
-#: ../../include/event.php:20 ../../include/bb2diaspora.php:447
-msgid "Starts:"
-msgstr "Inizio:"
-
-#: ../../include/event.php:30 ../../include/bb2diaspora.php:455
-msgid "Finishes:"
-msgstr "Fine:"
-
-#: ../../include/event.php:326
-msgid "This event has been added to your calendar."
-msgstr "Questo evento è stato aggiunto al tuo calendario"
-
-#: ../../include/profile_selectors.php:6
-msgid "Male"
-msgstr "Maschio"
-
-#: ../../include/profile_selectors.php:6
-msgid "Female"
-msgstr "Femmina"
-
-#: ../../include/profile_selectors.php:6
-msgid "Currently Male"
-msgstr "Al momento maschio"
-
-#: ../../include/profile_selectors.php:6
-msgid "Currently Female"
-msgstr "Al momento femmina"
-
-#: ../../include/profile_selectors.php:6
-msgid "Mostly Male"
-msgstr "Prevalentemente maschio"
-
-#: ../../include/profile_selectors.php:6
-msgid "Mostly Female"
-msgstr "Prevalentemente femmina"
-
-#: ../../include/profile_selectors.php:6
-msgid "Transgender"
-msgstr "Transgender"
-
-#: ../../include/profile_selectors.php:6
-msgid "Intersex"
-msgstr "Intersex"
-
-#: ../../include/profile_selectors.php:6
-msgid "Transsexual"
-msgstr "Transessuale"
-
-#: ../../include/profile_selectors.php:6
-msgid "Hermaphrodite"
-msgstr "Ermafrodito"
-
-#: ../../include/profile_selectors.php:6
-msgid "Neuter"
-msgstr "Neutro"
-
-#: ../../include/profile_selectors.php:6
-msgid "Non-specific"
-msgstr "Non specificato"
-
-#: ../../include/profile_selectors.php:6
-msgid "Other"
-msgstr "Altro"
-
-#: ../../include/profile_selectors.php:6
-msgid "Undecided"
-msgstr "Indeciso"
-
-#: ../../include/profile_selectors.php:23
-msgid "Males"
-msgstr "Maschi"
-
-#: ../../include/profile_selectors.php:23
-msgid "Females"
-msgstr "Femmine"
-
-#: ../../include/profile_selectors.php:23
-msgid "Gay"
-msgstr "Gay"
-
-#: ../../include/profile_selectors.php:23
-msgid "Lesbian"
-msgstr "Lesbica"
-
-#: ../../include/profile_selectors.php:23
-msgid "No Preference"
-msgstr "Senza preferenza"
-
-#: ../../include/profile_selectors.php:23
-msgid "Bisexual"
-msgstr "Bisessuale"
-
-#: ../../include/profile_selectors.php:23
-msgid "Autosexual"
-msgstr "Autosessuale"
-
-#: ../../include/profile_selectors.php:23
-msgid "Abstinent"
-msgstr "Astinente"
-
-#: ../../include/profile_selectors.php:23
-msgid "Virgin"
-msgstr "Vergine"
-
-#: ../../include/profile_selectors.php:23
-msgid "Deviant"
-msgstr "Deviato"
-
-#: ../../include/profile_selectors.php:23
-msgid "Fetish"
-msgstr "Feticista"
-
-#: ../../include/profile_selectors.php:23
-msgid "Oodles"
-msgstr "Un sacco"
-
-#: ../../include/profile_selectors.php:23
-msgid "Nonsexual"
-msgstr "Asessuato"
-
-#: ../../include/profile_selectors.php:42
-msgid "Single"
-msgstr "Single"
-
-#: ../../include/profile_selectors.php:42
-msgid "Lonely"
-msgstr "Da solo"
-
-#: ../../include/profile_selectors.php:42
-msgid "Available"
-msgstr "Disponibile"
-
-#: ../../include/profile_selectors.php:42
-msgid "Unavailable"
-msgstr "Non disponibile"
-
-#: ../../include/profile_selectors.php:42
-msgid "Has crush"
-msgstr "Ha una cotta"
-
-#: ../../include/profile_selectors.php:42
-msgid "Infatuated"
-msgstr "Infatuato/a"
-
-#: ../../include/profile_selectors.php:42
-msgid "Dating"
-msgstr "Disponibile a un incontro"
-
-#: ../../include/profile_selectors.php:42
-msgid "Unfaithful"
-msgstr "Infedele"
-
-#: ../../include/profile_selectors.php:42
-msgid "Sex Addict"
-msgstr "Sesso-dipendente"
-
-#: ../../include/profile_selectors.php:42
-msgid "Friends/Benefits"
-msgstr "Amici piccanti"
-
-#: ../../include/profile_selectors.php:42
-msgid "Casual"
-msgstr "Casual"
-
-#: ../../include/profile_selectors.php:42
-msgid "Engaged"
-msgstr "Impegnato"
-
-#: ../../include/profile_selectors.php:42
-msgid "Married"
-msgstr "Sposato/a"
-
-#: ../../include/profile_selectors.php:42
-msgid "Imaginarily married"
-msgstr "Sogna il matrimonio"
-
-#: ../../include/profile_selectors.php:42
-msgid "Partners"
-msgstr "Partner"
-
-#: ../../include/profile_selectors.php:42
-msgid "Cohabiting"
-msgstr "Convivente"
-
-#: ../../include/profile_selectors.php:42
-msgid "Common law"
-msgstr "Matrimonio regolare"
-
-#: ../../include/profile_selectors.php:42
-msgid "Happy"
-msgstr "Felice"
-
-#: ../../include/profile_selectors.php:42
-msgid "Not looking"
-msgstr "Non in cerca"
-
-#: ../../include/profile_selectors.php:42
-msgid "Swinger"
-msgstr "Scambista"
-
-#: ../../include/profile_selectors.php:42
-msgid "Betrayed"
-msgstr "Tradito/a"
-
-#: ../../include/profile_selectors.php:42
-msgid "Separated"
-msgstr "Separato/a"
-
-#: ../../include/profile_selectors.php:42
-msgid "Unstable"
-msgstr "Instabile"
-
-#: ../../include/profile_selectors.php:42
-msgid "Divorced"
-msgstr "Divorziato/a"
-
-#: ../../include/profile_selectors.php:42
-msgid "Imaginarily divorced"
-msgstr "Sogna il divorzio"
-
-#: ../../include/profile_selectors.php:42
-msgid "Widowed"
-msgstr "Vedovo/a"
-
-#: ../../include/profile_selectors.php:42
-msgid "Uncertain"
-msgstr "Incerto/a"
-
-#: ../../include/profile_selectors.php:42
-msgid "It's complicated"
-msgstr "Relazione complicata"
-
-#: ../../include/profile_selectors.php:42
-msgid "Don't care"
-msgstr "Chi se ne frega"
-
-#: ../../include/profile_selectors.php:42
-msgid "Ask me"
-msgstr "Chiedimelo"
-
-#: ../../include/account.php:23
-msgid "Not a valid email address"
-msgstr "Email non valida"
-
-#: ../../include/account.php:25
-msgid "Your email domain is not among those allowed on this site"
-msgstr "Il dominio della tua email attualmente non è permesso su questo sito"
-
-#: ../../include/account.php:31
-msgid "Your email address is already registered at this site."
-msgstr "La tua email è già registrata su questo sito."
-
-#: ../../include/account.php:64
-msgid "An invitation is required."
-msgstr "È necessario un invito."
-
-#: ../../include/account.php:68
-msgid "Invitation could not be verified."
-msgstr "L'invito non può essere verificato."
-
-#: ../../include/account.php:119
-msgid "Please enter the required information."
-msgstr "Inserisci le informazioni richieste."
-
-#: ../../include/account.php:187
-msgid "Failed to store account information."
-msgstr "Non è stato possibile salvare le informazioni del tuo account."
-
-#: ../../include/account.php:273
-#, php-format
-msgid "Registration request at %s"
-msgstr "Richiesta di registrazione su %s"
-
-#: ../../include/account.php:275 ../../include/account.php:302
-#: ../../include/account.php:359
-msgid "Administrator"
-msgstr "Amministratore"
-
-#: ../../include/account.php:297
-msgid "your registration password"
-msgstr "la password di registrazione"
-
-#: ../../include/account.php:300 ../../include/account.php:357
-#, php-format
-msgid "Registration details for %s"
-msgstr "Dettagli della registrazione di %s"
-
-#: ../../include/account.php:366
-msgid "Account approved."
-msgstr "Account approvato."
-
-#: ../../include/account.php:400
-#, php-format
-msgid "Registration revoked for %s"
-msgstr "Registrazione revocata per %s"
-
-#: ../../include/oembed.php:171
-msgid "Embedded content"
-msgstr "Contenuti incorporati"
-
-#: ../../include/oembed.php:180
-msgid "Embedding disabled"
-msgstr "Contenuti incorporati - funzione disabilitata"
-
-#: ../../include/zot.php:610
-msgid "Invalid data packet"
-msgstr "Dati non validi"
-
-#: ../../include/zot.php:620
-msgid "Unable to verify channel signature"
-msgstr "Impossibile verificare la firma elettronica del canale"
-
-#: ../../include/zot.php:817
-#, php-format
-msgid "Unable to verify site signature for %s"
-msgstr "Impossibile verificare la firma elettronica del sito %s"
-
-#: ../../include/network.php:652
-msgid "view full size"
-msgstr "guarda nelle dimensioni reali"
-
-#: ../../include/dba/dba_driver.php:50
-#, php-format
-msgid "Cannot locate DNS info for database server '%s'"
-msgstr "Non trovo le informazioni DNS per il database server '%s'"
-
-#: ../../include/group.php:25
-msgid ""
-"A deleted group with this name was revived. Existing item permissions "
-"<strong>may</strong> apply to this group and any future members. If this is "
-"not what you intended, please create another group with a different name."
-msgstr "È stato ripristinato un insieme con lo stesso nome che era stato eliminato in precedenza. I permessi già presenti <strong>potrebbero</strong> rimanere validi per i nuovi canali. Se non vuoi che ciò accada, devi creare un altro insieme con un nome diverso."
-
-#: ../../include/group.php:223
-msgid "Default privacy group for new contacts"
-msgstr "Insieme predefinito per i canali che inizi a seguire"
-
-#: ../../include/group.php:242 ../../mod/admin.php:763
-msgid "All Channels"
-msgstr "Tutti i canali"
-
-#: ../../include/group.php:264
-msgid "edit"
-msgstr "modifica"
-
-#: ../../include/group.php:285
-msgid "Collections"
-msgstr "Insiemi di canali"
-
-#: ../../include/group.php:286
-msgid "Edit collection"
-msgstr "Modifica l'insieme di canali"
-
-#: ../../include/group.php:287
-msgid "Create a new collection"
-msgstr "Crea un nuovo insieme"
-
-#: ../../include/group.php:288
-msgid "Channels not in any collection"
-msgstr "Canali che non sono in un insieme"
-
-#: ../../include/group.php:290 ../../include/widgets.php:266
-msgid "add"
-msgstr "aggiungi"
-
-#: ../../include/attach.php:224 ../../include/attach.php:278
-msgid "Item was not found."
-msgstr "Elemento non trovato."
-
-#: ../../include/attach.php:335
-msgid "No source file."
-msgstr "Nessun file di origine."
-
-#: ../../include/attach.php:352
-msgid "Cannot locate file to replace"
-msgstr "Il file da sostituire non è stato trovato"
-
-#: ../../include/attach.php:370
-msgid "Cannot locate file to revise/update"
-msgstr "Il file da aggiornare non è stato trovato"
-
-#: ../../include/attach.php:381
-#, php-format
-msgid "File exceeds size limit of %d"
-msgstr "Il file supera la dimensione massima di %d"
-
-#: ../../include/attach.php:393
-#, php-format
-msgid "You have reached your limit of %1$.0f Mbytes attachment storage."
-msgstr "Hai raggiunto il limite complessivo di %1$.0f Mbytes per gli allegati."
-
-#: ../../include/attach.php:475
-msgid "File upload failed. Possible system limit or action terminated."
-msgstr "Caricamento file fallito, potrebbe aver superato i limiti o l'azione potrebbe essere stata interrotta."
-
-#: ../../include/attach.php:487
-msgid "Stored file could not be verified. Upload failed."
-msgstr "Il file non può essere verificato. Caricamento fallito."
-
-#: ../../include/attach.php:528 ../../include/attach.php:545
-msgid "Path not available."
-msgstr "Percorso non disponibile."
-
-#: ../../include/attach.php:590
-msgid "Empty pathname"
-msgstr "Il percorso del file è vuoto"
-
-#: ../../include/attach.php:606
-msgid "duplicate filename or path"
-msgstr "il file o percorso del file è duplicato"
-
-#: ../../include/attach.php:630
-msgid "Path not found."
-msgstr "Percorso del file non trovato."
-
-#: ../../include/attach.php:681
-msgid "mkdir failed."
-msgstr "mkdir fallito."
-
-#: ../../include/attach.php:685
-msgid "database storage failed."
-msgstr "scrittura su database fallita."
-
-#: ../../include/ItemObject.php:89 ../../include/conversation.php:642
-#: ../../mod/photos.php:844
-msgid "Private Message"
-msgstr "Messaggio privato"
-
-#: ../../include/ItemObject.php:114 ../../include/conversation.php:634
-msgid "Select"
-msgstr "Seleziona"
-
-#: ../../include/ItemObject.php:118
-msgid "Save to Folder"
-msgstr "Salva nella cartella"
-
-#: ../../include/ItemObject.php:130 ../../include/ItemObject.php:142
-msgid "View all"
-msgstr "Vedi tutto"
-
-#: ../../include/ItemObject.php:139
-msgctxt "noun"
-msgid "Dislike"
-msgid_plural "Dislikes"
-msgstr[0] "Non mi piace"
-msgstr[1] "Non mi piace"
-
-#: ../../include/ItemObject.php:167
-msgid "Add Star"
-msgstr "Aggiungi ai preferiti"
-
-#: ../../include/ItemObject.php:168
-msgid "Remove Star"
-msgstr "Rimuovi dai preferiti"
-
-#: ../../include/ItemObject.php:169
-msgid "Toggle Star Status"
-msgstr "Attiva/disattiva preferito"
-
-#: ../../include/ItemObject.php:173
-msgid "starred"
-msgstr "preferito"
-
-#: ../../include/ItemObject.php:182 ../../include/conversation.php:649
-msgid "Message is verified"
-msgstr "Messaggio verificato"
-
-#: ../../include/ItemObject.php:190
-msgid "Add Tag"
-msgstr "Aggiungi un tag"
-
-#: ../../include/ItemObject.php:208 ../../mod/photos.php:974
-msgid "I like this (toggle)"
-msgstr "Attiva/disattiva Mi piace"
-
-#: ../../include/ItemObject.php:209 ../../mod/photos.php:975
-msgid "I don't like this (toggle)"
-msgstr "Attiva/disattiva Non mi piace"
-
-#: ../../include/ItemObject.php:211
-msgid "Share This"
-msgstr "Condividi"
-
-#: ../../include/ItemObject.php:211
-msgid "share"
-msgstr "condividi"
-
-#: ../../include/ItemObject.php:235 ../../include/ItemObject.php:236
-#, php-format
-msgid "View %s's profile - %s"
-msgstr "Guarda il profilo di %s - %s"
-
-#: ../../include/ItemObject.php:237
-msgid "to"
-msgstr "a"
-
-#: ../../include/ItemObject.php:238
-msgid "via"
-msgstr "via"
-
-#: ../../include/ItemObject.php:239
-msgid "Wall-to-Wall"
-msgstr "Da bacheca a bacheca"
-
-#: ../../include/ItemObject.php:240
-msgid "via Wall-To-Wall:"
-msgstr "da bacheca a bacheca:"
-
-#: ../../include/ItemObject.php:250 ../../include/conversation.php:693
-#, php-format
-msgid " from %s"
-msgstr " da %s"
-
-#: ../../include/ItemObject.php:253 ../../include/conversation.php:696
-#, php-format
-msgid "last edited: %s"
-msgstr "ultima modifica: %s"
-
-#: ../../include/ItemObject.php:254 ../../include/conversation.php:697
-#, php-format
-msgid "Expires: %s"
-msgstr "Scadenza: %s"
-
-#: ../../include/ItemObject.php:274
-msgid "Save Bookmarks"
-msgstr "Salva segnalibro"
+#: ../../include/acl_selectors.php:240
+msgid "Visible to your default audience"
+msgstr "Visibile secondo le impostazioni predefinite"
-#: ../../include/ItemObject.php:275
-msgid "Add to Calendar"
-msgstr "Aggiungi al calendario"
+#: ../../include/acl_selectors.php:241
+msgid "Show"
+msgstr "Mostra"
-#: ../../include/ItemObject.php:283
-msgctxt "noun"
-msgid "Likes"
-msgstr "Mi piace"
+#: ../../include/acl_selectors.php:242
+msgid "Don't show"
+msgstr "Non mostrare"
-#: ../../include/ItemObject.php:284
-msgctxt "noun"
-msgid "Dislikes"
-msgstr "Non mi piace"
+#: ../../include/acl_selectors.php:248 ../../mod/events.php:596
+#: ../../mod/chat.php:209 ../../mod/photos.php:588 ../../mod/photos.php:950
+#: ../../mod/filestorage.php:137
+msgid "Permissions"
+msgstr "Permessi"
-#: ../../include/ItemObject.php:289 ../../include/acl_selectors.php:249
+#: ../../include/acl_selectors.php:249 ../../include/ItemObject.php:320
+#: ../../mod/photos.php:1149
msgid "Close"
msgstr "Chiudi"
-#: ../../include/ItemObject.php:294 ../../include/conversation.php:714
-#: ../../include/conversation.php:1130 ../../mod/photos.php:977
-#: ../../mod/editpost.php:121 ../../mod/editwebpage.php:152
-#: ../../mod/mail.php:218 ../../mod/mail.php:333 ../../mod/editblock.php:120
-#: ../../mod/editlayout.php:115
-msgid "Please wait"
-msgstr "Attendere"
-
-#: ../../include/ItemObject.php:315
-#, php-format
-msgid "%d comment"
-msgid_plural "%d comments"
-msgstr[0] "%d commento"
-msgstr[1] "%d commenti"
-
-#: ../../include/ItemObject.php:580 ../../mod/photos.php:993
-#: ../../mod/photos.php:1080
-msgid "This is you"
-msgstr "Questo sei tu"
-
-#: ../../include/ItemObject.php:584
-msgid "Bold"
-msgstr "Grassetto"
-
-#: ../../include/ItemObject.php:585
-msgid "Italic"
-msgstr "Corsivo"
-
-#: ../../include/ItemObject.php:586
-msgid "Underline"
-msgstr "Sottolineato"
-
-#: ../../include/ItemObject.php:587
-msgid "Quote"
-msgstr "Citazione"
-
-#: ../../include/ItemObject.php:588
-msgid "Code"
-msgstr "Codice"
-
-#: ../../include/ItemObject.php:589
-msgid "Image"
-msgstr "Immagine"
-
-#: ../../include/ItemObject.php:590
-msgid "Link"
-msgstr "Link"
-
-#: ../../include/ItemObject.php:591
-msgid "Video"
-msgstr "Video"
-
-#: ../../include/ItemObject.php:595 ../../include/conversation.php:1156
-#: ../../mod/editpost.php:148 ../../mod/mail.php:224 ../../mod/mail.php:338
-msgid "Encrypt text"
-msgstr "Crittografia del testo"
-
-#: ../../include/security.php:301
-msgid ""
-"The form security token was not correct. This probably happened because the "
-"form has been opened for too long (>3 hours) before submitting it."
-msgstr "L'identificativo di sicurezza del modulo che hai riempito non è corretto. Probabilmente è accaduto perché la pagina è stata tenuta aperta troppo a lungo (ore?) prima di inviare il contenuto."
-
#: ../../include/text.php:320
msgid "prev"
msgstr "prec"
@@ -1961,393 +1008,400 @@ msgstr "più recenti"
msgid "newer"
msgstr "più nuovi"
-#: ../../include/text.php:729
+#: ../../include/text.php:756
msgid "No connections"
msgstr "Nessun contatto"
-#: ../../include/text.php:742
+#: ../../include/text.php:772
#, php-format
msgid "%d Connection"
msgid_plural "%d Connections"
msgstr[0] "%d contatto"
msgstr[1] "%d contatti"
-#: ../../include/text.php:754
+#: ../../include/text.php:785
msgid "View Connections"
msgstr "Elenco contatti"
-#: ../../include/text.php:813 ../../include/text.php:827
-#: ../../include/nav.php:149 ../../include/apps.php:137
-#: ../../mod/search.php:29
+#: ../../include/text.php:842 ../../include/text.php:854
+#: ../../include/apps.php:147 ../../include/nav.php:173
+#: ../../mod/search.php:30
msgid "Search"
msgstr "Cerca"
-#: ../../include/text.php:815 ../../include/text.php:829
-#: ../../include/widgets.php:186 ../../mod/filer.php:50
-#: ../../mod/rbmark.php:28 ../../mod/rbmark.php:98
+#: ../../include/text.php:843 ../../include/text.php:855
+#: ../../include/widgets.php:192 ../../mod/rbmark.php:28
+#: ../../mod/rbmark.php:98 ../../mod/filer.php:50 ../../mod/admin.php:1339
+#: ../../mod/admin.php:1360
msgid "Save"
msgstr "Salva"
-#: ../../include/text.php:895
+#: ../../include/text.php:920
msgid "poke"
msgstr "poke"
-#: ../../include/text.php:895 ../../include/conversation.php:243
+#: ../../include/text.php:920 ../../include/conversation.php:243
msgid "poked"
msgstr "ha ricevuto un poke"
-#: ../../include/text.php:896
+#: ../../include/text.php:921
msgid "ping"
msgstr "ping"
-#: ../../include/text.php:896
+#: ../../include/text.php:921
msgid "pinged"
msgstr "ha ricevuto un ping"
-#: ../../include/text.php:897
+#: ../../include/text.php:922
msgid "prod"
-msgstr "prod"
+msgstr "spintone"
-#: ../../include/text.php:897
+#: ../../include/text.php:922
msgid "prodded"
-msgstr "ha ricevuto un prod"
+msgstr "ha ricevuto uno spintone"
-#: ../../include/text.php:898
+#: ../../include/text.php:923
msgid "slap"
msgstr "schiaffo"
-#: ../../include/text.php:898
+#: ../../include/text.php:923
msgid "slapped"
msgstr "ha ricevuto uno schiaffo"
-#: ../../include/text.php:899
+#: ../../include/text.php:924
msgid "finger"
msgstr "finger"
-#: ../../include/text.php:899
+#: ../../include/text.php:924
msgid "fingered"
msgstr "ha ricevuto un finger"
-#: ../../include/text.php:900
+#: ../../include/text.php:925
msgid "rebuff"
msgstr "rifiuto"
-#: ../../include/text.php:900
+#: ../../include/text.php:925
msgid "rebuffed"
msgstr "ha ricevuto un rifiuto"
-#: ../../include/text.php:909
+#: ../../include/text.php:935
msgid "happy"
msgstr "felice"
-#: ../../include/text.php:910
+#: ../../include/text.php:936
msgid "sad"
msgstr "triste"
-#: ../../include/text.php:911
+#: ../../include/text.php:937
msgid "mellow"
msgstr "calmo"
-#: ../../include/text.php:912
+#: ../../include/text.php:938
msgid "tired"
msgstr "stanco"
-#: ../../include/text.php:913
+#: ../../include/text.php:939
msgid "perky"
msgstr "vivace"
-#: ../../include/text.php:914
+#: ../../include/text.php:940
msgid "angry"
msgstr "arrabbiato"
-#: ../../include/text.php:915
+#: ../../include/text.php:941
msgid "stupified"
msgstr "stordito"
-#: ../../include/text.php:916
+#: ../../include/text.php:942
msgid "puzzled"
msgstr "confuso"
-#: ../../include/text.php:917
+#: ../../include/text.php:943
msgid "interested"
msgstr "attento"
-#: ../../include/text.php:918
+#: ../../include/text.php:944
msgid "bitter"
msgstr "amaro"
-#: ../../include/text.php:919
+#: ../../include/text.php:945
msgid "cheerful"
msgstr "allegro"
-#: ../../include/text.php:920
+#: ../../include/text.php:946
msgid "alive"
msgstr "vivace"
-#: ../../include/text.php:921
+#: ../../include/text.php:947
msgid "annoyed"
msgstr "seccato"
-#: ../../include/text.php:922
+#: ../../include/text.php:948
msgid "anxious"
msgstr "ansioso"
-#: ../../include/text.php:923
+#: ../../include/text.php:949
msgid "cranky"
msgstr "irritabile"
-#: ../../include/text.php:924
+#: ../../include/text.php:950
msgid "disturbed"
msgstr "turbato"
-#: ../../include/text.php:925
+#: ../../include/text.php:951
msgid "frustrated"
msgstr "frustrato"
-#: ../../include/text.php:926
+#: ../../include/text.php:952
msgid "depressed"
msgstr "in depressione"
-#: ../../include/text.php:927
+#: ../../include/text.php:953
msgid "motivated"
msgstr "motivato"
-#: ../../include/text.php:928
+#: ../../include/text.php:954
msgid "relaxed"
msgstr "rilassato"
-#: ../../include/text.php:929
+#: ../../include/text.php:955
msgid "surprised"
msgstr "sorpreso"
-#: ../../include/text.php:1090
+#: ../../include/text.php:1121
msgid "Monday"
msgstr "lunedì"
-#: ../../include/text.php:1090
+#: ../../include/text.php:1121
msgid "Tuesday"
msgstr "martedì"
-#: ../../include/text.php:1090
+#: ../../include/text.php:1121
msgid "Wednesday"
msgstr "mercoledì"
-#: ../../include/text.php:1090
+#: ../../include/text.php:1121
msgid "Thursday"
msgstr "giovedì"
-#: ../../include/text.php:1090
+#: ../../include/text.php:1121
msgid "Friday"
msgstr "venerdì"
-#: ../../include/text.php:1090
+#: ../../include/text.php:1121
msgid "Saturday"
msgstr "sabato"
-#: ../../include/text.php:1090
+#: ../../include/text.php:1121
msgid "Sunday"
msgstr "domenica"
-#: ../../include/text.php:1094
+#: ../../include/text.php:1125
msgid "January"
msgstr "gennaio"
-#: ../../include/text.php:1094
+#: ../../include/text.php:1125
msgid "February"
msgstr "febbraio"
-#: ../../include/text.php:1094
+#: ../../include/text.php:1125
msgid "March"
msgstr "marzo"
-#: ../../include/text.php:1094
+#: ../../include/text.php:1125
msgid "April"
msgstr "aprile"
-#: ../../include/text.php:1094
+#: ../../include/text.php:1125
msgid "May"
msgstr "maggio"
-#: ../../include/text.php:1094
+#: ../../include/text.php:1125
msgid "June"
msgstr "giugno"
-#: ../../include/text.php:1094
+#: ../../include/text.php:1125
msgid "July"
msgstr "luglio"
-#: ../../include/text.php:1094
+#: ../../include/text.php:1125
msgid "August"
msgstr "agosto"
-#: ../../include/text.php:1094
+#: ../../include/text.php:1125
msgid "September"
msgstr "settembre"
-#: ../../include/text.php:1094
+#: ../../include/text.php:1125
msgid "October"
msgstr "ottobre"
-#: ../../include/text.php:1094
+#: ../../include/text.php:1125
msgid "November"
msgstr "novembre"
-#: ../../include/text.php:1094
+#: ../../include/text.php:1125
msgid "December"
msgstr "dicembre"
-#: ../../include/text.php:1172
+#: ../../include/text.php:1203
msgid "unknown.???"
msgstr "sconosciuto???"
-#: ../../include/text.php:1173
+#: ../../include/text.php:1204
msgid "bytes"
msgstr "byte"
-#: ../../include/text.php:1208
+#: ../../include/text.php:1240
msgid "remove category"
msgstr "rimuovi la categoria"
-#: ../../include/text.php:1278
+#: ../../include/text.php:1309
msgid "remove from file"
msgstr "rimuovi dal file"
-#: ../../include/text.php:1343 ../../include/text.php:1355
+#: ../../include/text.php:1385 ../../include/text.php:1396
msgid "Click to open/close"
msgstr "Clicca per aprire/chiudere"
-#: ../../include/text.php:1510 ../../mod/events.php:355
+#: ../../include/text.php:1544 ../../mod/events.php:414
msgid "Link to Source"
-msgstr "Link al sorgente"
+msgstr "Link al sito d'origine"
-#: ../../include/text.php:1529
+#: ../../include/text.php:1563
msgid "Select a page layout: "
msgstr "Scegli il layout della pagina:"
-#: ../../include/text.php:1532 ../../include/text.php:1597
+#: ../../include/text.php:1566 ../../include/text.php:1626
msgid "default"
msgstr "predefinito"
-#: ../../include/text.php:1568
+#: ../../include/text.php:1599
msgid "Page content type: "
msgstr "Contenuto della pagina:"
-#: ../../include/text.php:1609
+#: ../../include/text.php:1638
msgid "Select an alternate language"
msgstr "Seleziona una lingua diversa"
-#: ../../include/text.php:1730 ../../include/conversation.php:120
-#: ../../mod/subthread.php:72 ../../mod/subthread.php:174
-#: ../../mod/tagger.php:45 ../../mod/like.php:254
+#: ../../include/text.php:1757 ../../include/conversation.php:120
+#: ../../include/diaspora.php:1928 ../../mod/subthread.php:72
+#: ../../mod/subthread.php:174 ../../mod/like.php:290 ../../mod/tagger.php:45
msgid "photo"
msgstr "la foto"
-#: ../../include/text.php:1733 ../../include/conversation.php:123
+#: ../../include/text.php:1760 ../../include/conversation.php:123
#: ../../mod/tagger.php:49
msgid "event"
msgstr "l'evento"
-#: ../../include/text.php:1736 ../../include/conversation.php:148
-#: ../../mod/subthread.php:72 ../../mod/subthread.php:174
-#: ../../mod/tagger.php:53 ../../mod/like.php:254
+#: ../../include/text.php:1763 ../../include/conversation.php:148
+#: ../../include/diaspora.php:1928 ../../mod/subthread.php:72
+#: ../../mod/subthread.php:174 ../../mod/like.php:290 ../../mod/tagger.php:53
msgid "status"
msgstr "il messaggio di stato"
-#: ../../include/text.php:1738 ../../include/conversation.php:150
+#: ../../include/text.php:1765 ../../include/conversation.php:150
#: ../../mod/tagger.php:55
msgid "comment"
msgstr "il commento"
-#: ../../include/text.php:1743
+#: ../../include/text.php:1770
msgid "activity"
msgstr "l'attività"
-#: ../../include/text.php:2002
+#: ../../include/text.php:2057
msgid "Design"
msgstr "Design"
-#: ../../include/text.php:2004
+#: ../../include/text.php:2060
msgid "Blocks"
msgstr "Riquadri"
-#: ../../include/text.php:2005
+#: ../../include/text.php:2061
msgid "Menus"
msgstr "Menù"
-#: ../../include/text.php:2006
+#: ../../include/text.php:2062
msgid "Layouts"
msgstr "Layout"
-#: ../../include/text.php:2007
+#: ../../include/text.php:2063
msgid "Pages"
msgstr "Pagine"
-#: ../../include/dir_fns.php:36
-msgid "Sort Options"
-msgstr "Opzioni di ordinamento"
+#: ../../include/contact_widgets.php:14
+#, php-format
+msgid "%d invitation available"
+msgid_plural "%d invitations available"
+msgstr[0] "%d invito disponibile"
+msgstr[1] "%d inviti disponibili"
-#: ../../include/dir_fns.php:37
-msgid "Alphabetic"
-msgstr "Alfabetico"
+#: ../../include/contact_widgets.php:19 ../../mod/admin.php:416
+msgid "Advanced"
+msgstr "Avanzate"
-#: ../../include/dir_fns.php:38
-msgid "Reverse Alphabetic"
-msgstr "Alfabetico inverso"
+#: ../../include/contact_widgets.php:22
+msgid "Find Channels"
+msgstr "Ricerca canali"
-#: ../../include/dir_fns.php:39
-msgid "Newest to Oldest"
-msgstr "Dal più nuovo al più vecchio"
+#: ../../include/contact_widgets.php:23
+msgid "Enter name or interest"
+msgstr "Scrivi un nome o un interesse"
-#: ../../include/dir_fns.php:51
-msgid "Enable Safe Search"
-msgstr "Abilita SafeSearch"
+#: ../../include/contact_widgets.php:24
+msgid "Connect/Follow"
+msgstr "Aggiungi"
-#: ../../include/dir_fns.php:53
-msgid "Disable Safe Search"
-msgstr "Disabilita SafeSearch"
+#: ../../include/contact_widgets.php:25
+msgid "Examples: Robert Morgenstein, Fishing"
+msgstr "Per esempio: Mario Rossi, Pesca"
-#: ../../include/dir_fns.php:55
-msgid "Safe Mode"
-msgstr "Modalità SafeSearch"
+#: ../../include/contact_widgets.php:26 ../../mod/connections.php:412
+#: ../../mod/directory.php:317 ../../mod/directory.php:322
+msgid "Find"
+msgstr "Cerca"
-#: ../../include/bbcode.php:128 ../../include/bbcode.php:654
-#: ../../include/bbcode.php:657 ../../include/bbcode.php:662
-#: ../../include/bbcode.php:665 ../../include/bbcode.php:668
-#: ../../include/bbcode.php:671 ../../include/bbcode.php:676
-#: ../../include/bbcode.php:679 ../../include/bbcode.php:684
-#: ../../include/bbcode.php:687 ../../include/bbcode.php:690
-#: ../../include/bbcode.php:693
-msgid "Image/photo"
-msgstr "Immagine"
+#: ../../include/contact_widgets.php:27 ../../mod/suggest.php:59
+#: ../../mod/directory.php:321
+msgid "Channel Suggestions"
+msgstr "Canali suggeriti"
-#: ../../include/bbcode.php:163 ../../include/bbcode.php:704
-msgid "Encrypted content"
-msgstr "Contenuto crittografato"
+#: ../../include/contact_widgets.php:29
+msgid "Random Profile"
+msgstr "Profilo casuale"
-#: ../../include/bbcode.php:179
-msgid "QR code"
-msgstr "QR code"
+#: ../../include/contact_widgets.php:30
+msgid "Invite Friends"
+msgstr "Invita amici"
-#: ../../include/bbcode.php:228
-#, php-format
-msgid "%1$s wrote the following %2$s %3$s"
-msgstr "%1$s ha scritto %2$s %3$s"
+#: ../../include/contact_widgets.php:32
+msgid "Advanced example: name=fred and country=iceland"
+msgstr "Per esempio: name=mario e country=italy"
-#: ../../include/bbcode.php:230
-msgid "post"
-msgstr "l'articolo"
+#: ../../include/contact_widgets.php:60 ../../include/contact_widgets.php:95
+#: ../../include/widgets.php:305
+msgid "Everything"
+msgstr "Tutto"
-#: ../../include/bbcode.php:622 ../../include/bbcode.php:642
-msgid "$1 wrote:"
-msgstr "$1 ha scritto:"
+#: ../../include/contact_widgets.php:125
+#, php-format
+msgid "%d connection in common"
+msgid_plural "%d connections in common"
+msgstr[0] "%d contatto in comune"
+msgstr[1] "%d contatti in comune"
+
+#: ../../include/contact_widgets.php:130
+msgid "show more"
+msgstr "mostra tutto"
#: ../../include/enotify.php:41
msgid "Red Matrix Notification"
-msgstr "Notifica di Red Matrix"
+msgstr "Notifica di RedMatrix"
#: ../../include/enotify.php:42
msgid "redmatrix"
-msgstr "redmatrix"
+msgstr "RedMatrix"
#: ../../include/enotify.php:44
msgid "Thank You,"
@@ -2356,7 +1410,7 @@ msgstr "Grazie,"
#: ../../include/enotify.php:46
#, php-format
msgid "%s Administrator"
-msgstr "Amministratore %s"
+msgstr "L'amministratore di %s"
#: ../../include/enotify.php:81
#, php-format
@@ -2366,7 +1420,7 @@ msgstr "%s <!item_type!>"
#: ../../include/enotify.php:85
#, php-format
msgid "[Red:Notify] New mail received at %s"
-msgstr "[Red:Notifica] Nuovo messaggio ricevuto su %s"
+msgstr "[RedMatrix] Nuovo messaggio su %s"
#: ../../include/enotify.php:87
#, php-format
@@ -2405,7 +1459,7 @@ msgstr "%1$s, %2$s ha commentato [zrl=%3$s]%4$s che hai creato[/zrl]"
#: ../../include/enotify.php:172
#, php-format
msgid "[Red:Notify] Comment to conversation #%1$d by %2$s"
-msgstr "[Red:Notifica] Nuovo commento di %2$s alla conversazione #%1$d"
+msgstr "[RedMatrix] Nuovo commento di %2$s alla conversazione #%1$d"
#: ../../include/enotify.php:173
#, php-format
@@ -2422,7 +1476,7 @@ msgstr "Visita %s per leggere o commentare la conversazione."
#: ../../include/enotify.php:182
#, php-format
msgid "[Red:Notify] %s posted to your profile wall"
-msgstr "[Red:Notifica] %s ha scritto sulla tua bacheca"
+msgstr "[RedMatrix] %s ha scritto sulla tua bacheca"
#: ../../include/enotify.php:184
#, php-format
@@ -2437,7 +1491,7 @@ msgstr "%1$s, %2$s ha scritto sulla [zrl=%3$s]tua bacheca[/zrl]"
#: ../../include/enotify.php:210
#, php-format
msgid "[Red:Notify] %s tagged you"
-msgstr "[Red:Notifica] %s ti ha taggato"
+msgstr "[RedMatrix] %s ti ha taggato"
#: ../../include/enotify.php:211
#, php-format
@@ -2452,7 +1506,7 @@ msgstr "%1$s, %2$s [zrl=%3$s]ti ha taggato[/zrl]."
#: ../../include/enotify.php:225
#, php-format
msgid "[Red:Notify] %1$s poked you"
-msgstr "[Red:Notifica] %1$s ti ha mandato un poke"
+msgstr "[RedMatrix] %1$s ti ha mandato un poke"
#: ../../include/enotify.php:226
#, php-format
@@ -2467,7 +1521,7 @@ msgstr "%1$s, %2$s [zrl=%2$s]ti ha mandato un poke[/zrl]."
#: ../../include/enotify.php:243
#, php-format
msgid "[Red:Notify] %s tagged your post"
-msgstr "[Red:Notifica] %s ha taggato il tuo articolo"
+msgstr "[RedMatrix] %s ha taggato il tuo articolo"
#: ../../include/enotify.php:244
#, php-format
@@ -2481,7 +1535,7 @@ msgstr "%1$s, %2$s ha taggato [zrl=%3$s]il tuo articolo[/zrl]"
#: ../../include/enotify.php:257
msgid "[Red:Notify] Introduction received"
-msgstr "[Red:Notifica] Hai una richiesta di amicizia"
+msgstr "[RedMatrix] Hai una richiesta di amicizia"
#: ../../include/enotify.php:258
#, php-format
@@ -2506,7 +1560,7 @@ msgstr "Visita %s per approvare o rifiutare la richiesta di entrare in contatto.
#: ../../include/enotify.php:272
msgid "[Red:Notify] Friend suggestion received"
-msgstr "[Red:Notifica] Ti è stato suggerito un amico"
+msgstr "[RedMatrix] Ti è stato suggerito un amico"
#: ../../include/enotify.php:273
#, php-format
@@ -2533,544 +1587,552 @@ msgstr "Foto:"
msgid "Please visit %s to approve or reject the suggestion."
msgstr "Visita %s per approvare o rifiutare il suggerimento."
-#: ../../include/bookmarks.php:42
-#, php-format
-msgid "%1$s's bookmarks"
-msgstr "I segnalibri di %1$s"
-
-#: ../../include/nav.php:77 ../../include/nav.php:101
-msgid "End this session"
-msgstr "Chiudi questa sessione"
-
-#: ../../include/nav.php:80 ../../include/nav.php:135
-msgid "Home"
-msgstr "Bacheca"
+#: ../../include/enotify.php:477
+msgid "[Red:Notify]"
+msgstr "[RedMatrix]"
-#: ../../include/nav.php:80
-msgid "Your posts and conversations"
-msgstr "I tuoi articoli e conversazioni"
-
-#: ../../include/nav.php:81 ../../include/conversation.php:940
-#: ../../mod/connedit.php:351 ../../mod/connedit.php:465
-msgid "View Profile"
-msgstr "Profilo"
-
-#: ../../include/nav.php:81
-msgid "Your profile page"
-msgstr "Il tuo profilo"
-
-#: ../../include/nav.php:83
-msgid "Edit Profiles"
-msgstr "Modifica i profili"
-
-#: ../../include/nav.php:83
-msgid "Manage/Edit profiles"
-msgstr "Gestisci/modifica i profili"
-
-#: ../../include/nav.php:84 ../../include/apps.php:129
-#: ../../include/conversation.php:1509 ../../mod/fbrowser.php:25
-msgid "Photos"
-msgstr "Foto"
-
-#: ../../include/nav.php:84
-msgid "Your photos"
-msgstr "Le tue foto"
-
-#: ../../include/nav.php:85
-msgid "Your files"
-msgstr "I tuoi file"
+#: ../../include/event.php:376
+msgid "This event has been added to your calendar."
+msgstr "Questo evento è stato aggiunto al tuo calendario"
-#: ../../include/nav.php:90 ../../include/apps.php:136
-msgid "Chat"
-msgstr "Chat"
+#: ../../include/group.php:26
+msgid ""
+"A deleted group with this name was revived. Existing item permissions "
+"<strong>may</strong> apply to this group and any future members. If this is "
+"not what you intended, please create another group with a different name."
+msgstr "È stato ripristinato un insieme con lo stesso nome che era stato eliminato in precedenza. I permessi già presenti <strong>potrebbero</strong> rimanere validi per i nuovi canali. Se non vuoi che ciò accada, devi creare un altro insieme con un nome diverso."
-#: ../../include/nav.php:90
-msgid "Your chatrooms"
-msgstr "Le tue chat"
+#: ../../include/group.php:235
+msgid "Default privacy group for new contacts"
+msgstr "Insieme predefinito per i canali che inizi a seguire"
-#: ../../include/nav.php:93 ../../include/apps.php:119
-#: ../../include/conversation.php:1540
-msgid "Bookmarks"
-msgstr "Segnalibri"
+#: ../../include/group.php:254 ../../mod/admin.php:735
+msgid "All Channels"
+msgstr "Tutti i canali"
-#: ../../include/nav.php:93
-msgid "Your bookmarks"
-msgstr "I tuoi segnalibri"
+#: ../../include/group.php:276
+msgid "edit"
+msgstr "modifica"
-#: ../../include/nav.php:95 ../../include/apps.php:126
-#: ../../include/conversation.php:1551 ../../mod/webpages.php:79
-msgid "Webpages"
-msgstr "Pagine web"
+#: ../../include/group.php:298
+msgid "Collections"
+msgstr "Insiemi di canali"
-#: ../../include/nav.php:95
-msgid "Your webpages"
-msgstr "Le tue pagine web"
+#: ../../include/group.php:299
+msgid "Edit collection"
+msgstr "Modifica l'insieme di canali"
-#: ../../include/nav.php:99
-msgid "Sign in"
-msgstr "Entra"
+#: ../../include/group.php:300
+msgid "Create a new collection"
+msgstr "Crea un nuovo insieme"
-#: ../../include/nav.php:116
-#, php-format
-msgid "%s - click to logout"
-msgstr "%s - clicca per uscire"
+#: ../../include/group.php:301
+msgid "Channels not in any collection"
+msgstr "Canali che non sono in un insieme"
-#: ../../include/nav.php:121
-msgid "Click to authenticate to your home hub"
-msgstr "Clicca per autenticarti sul tuo server principale"
+#: ../../include/group.php:303 ../../include/widgets.php:273
+msgid "add"
+msgstr "aggiungi"
-#: ../../include/nav.php:135
-msgid "Home Page"
-msgstr "Bacheca"
+#: ../../include/identity.php:31 ../../mod/item.php:1112
+msgid "Unable to obtain identity information from database"
+msgstr "Impossibile ottenere le informazioni di identificazione dal database"
-#: ../../include/nav.php:139
-msgid "Create an account"
-msgstr "Crea un account"
+#: ../../include/identity.php:66
+msgid "Empty name"
+msgstr "Nome vuoto"
-#: ../../include/nav.php:144 ../../include/apps.php:132 ../../mod/help.php:60
-#: ../../mod/help.php:65
-msgid "Help"
-msgstr "Guida"
+#: ../../include/identity.php:68
+msgid "Name too long"
+msgstr "Nome troppo lungo"
-#: ../../include/nav.php:144
-msgid "Help and documentation"
-msgstr "Guida e documentazione"
+#: ../../include/identity.php:169
+msgid "No account identifier"
+msgstr "Account senza identificativo"
-#: ../../include/nav.php:147 ../../include/widgets.php:79
-#: ../../mod/apps.php:33
-msgid "Apps"
-msgstr "Apps"
+#: ../../include/identity.php:182
+msgid "Nickname is required."
+msgstr "Il nome dell'account è obbligatorio."
-#: ../../include/nav.php:147
-msgid "Applications, utilities, links, games"
-msgstr "Applicazioni, utilità, link, giochi"
+#: ../../include/identity.php:196
+msgid "Reserved nickname. Please choose another."
+msgstr "Nome utente riservato. Per favore scegline un altro."
-#: ../../include/nav.php:149
-msgid "Search site content"
-msgstr "Cerca nel sito"
+#: ../../include/identity.php:201 ../../include/dimport.php:34
+msgid ""
+"Nickname has unsupported characters or is already being used on this site."
+msgstr "Il nome dell'account è già in uso oppure ha dei caratteri non supportati."
-#: ../../include/nav.php:152 ../../include/apps.php:131
-#: ../../mod/directory.php:210
-msgid "Directory"
-msgstr "Tutti i canali"
+#: ../../include/identity.php:283
+msgid "Unable to retrieve created identity"
+msgstr "Impossibile caricare l'identità creata"
-#: ../../include/nav.php:152
-msgid "Channel Locator"
-msgstr "Ricerca canali"
+#: ../../include/identity.php:343
+msgid "Default Profile"
+msgstr "Profilo predefinito"
-#: ../../include/nav.php:163 ../../include/apps.php:123
-msgid "Matrix"
-msgstr "La tua rete"
+#: ../../include/identity.php:387 ../../include/identity.php:388
+#: ../../include/identity.php:395 ../../include/widgets.php:428
+#: ../../include/profile_selectors.php:80 ../../mod/settings.php:320
+#: ../../mod/settings.php:324 ../../mod/settings.php:325
+#: ../../mod/settings.php:328 ../../mod/settings.php:339
+#: ../../mod/connedit.php:510
+msgid "Friends"
+msgstr "Amici"
-#: ../../include/nav.php:163
-msgid "Your matrix"
-msgstr "La tua rete"
+#: ../../include/identity.php:643
+msgid "Requested channel is not available."
+msgstr "Il canale che cerchi non è disponibile."
-#: ../../include/nav.php:164
-msgid "Mark all matrix notifications seen"
-msgstr "Segna come lette le notifiche della tua rete"
+#: ../../include/identity.php:691 ../../mod/achievements.php:11
+#: ../../mod/profile.php:16 ../../mod/webpages.php:29 ../../mod/blocks.php:29
+#: ../../mod/editblock.php:29 ../../mod/editlayout.php:28
+#: ../../mod/editwebpage.php:28 ../../mod/filestorage.php:48
+#: ../../mod/connect.php:13 ../../mod/layouts.php:29 ../../mod/hcard.php:8
+msgid "Requested profile is not available."
+msgstr "Il profilo richiesto non è disponibile."
-#: ../../include/nav.php:166 ../../include/apps.php:127
-msgid "Channel Home"
-msgstr "Bacheca del canale"
+#: ../../include/identity.php:840 ../../include/conversation.php:937
+#: ../../include/widgets.php:136 ../../include/widgets.php:175
+#: ../../include/Contact.php:107 ../../mod/suggest.php:51
+#: ../../mod/match.php:62 ../../mod/directory.php:264
+msgid "Connect"
+msgstr "Aggiungi"
-#: ../../include/nav.php:166
-msgid "Channel home"
-msgstr "Bacheca del canale"
+#: ../../include/identity.php:854 ../../mod/profiles.php:740
+msgid "Change profile photo"
+msgstr "Cambia la foto del profilo"
-#: ../../include/nav.php:167
-msgid "Mark all channel notifications seen"
-msgstr "Segna come lette le notifiche dei canali"
+#: ../../include/identity.php:860
+msgid "Profiles"
+msgstr "Profili"
-#: ../../include/nav.php:170 ../../mod/connections.php:386
-msgid "Connections"
-msgstr "Contatti"
+#: ../../include/identity.php:860
+msgid "Manage/edit profiles"
+msgstr "Gestisci/modifica i profili"
-#: ../../include/nav.php:173
-msgid "Notices"
-msgstr "Notifiche"
+#: ../../include/identity.php:861 ../../mod/profiles.php:741
+msgid "Create New Profile"
+msgstr "Crea un nuovo profilo"
-#: ../../include/nav.php:173
-msgid "Notifications"
-msgstr "Notifiche"
+#: ../../include/identity.php:864 ../../include/nav.php:103
+msgid "Edit Profile"
+msgstr "Modifica il profilo"
-#: ../../include/nav.php:174
-msgid "See all notifications"
-msgstr "Vedi tutte le notifiche"
+#: ../../include/identity.php:875 ../../mod/profiles.php:752
+msgid "Profile Image"
+msgstr "Immagine del profilo"
-#: ../../include/nav.php:175 ../../mod/notifications.php:99
-msgid "Mark all system notifications seen"
-msgstr "Segna come lette le notifiche di sistema"
+#: ../../include/identity.php:878
+msgid "visible to everybody"
+msgstr "visibile a tutti"
-#: ../../include/nav.php:177 ../../include/apps.php:133
-msgid "Mail"
-msgstr "Messaggi"
+#: ../../include/identity.php:879 ../../mod/profiles.php:635
+#: ../../mod/profiles.php:756
+msgid "Edit visibility"
+msgstr "Cambia la visibilità"
-#: ../../include/nav.php:177
-msgid "Private mail"
-msgstr "Messaggi privati"
+#: ../../include/identity.php:895 ../../include/identity.php:1132
+msgid "Gender:"
+msgstr "Sesso:"
-#: ../../include/nav.php:178
-msgid "See all private messages"
-msgstr "Guarda tutti i messaggi privati"
+#: ../../include/identity.php:896 ../../include/identity.php:1176
+msgid "Status:"
+msgstr "Stato:"
-#: ../../include/nav.php:179
-msgid "Mark all private messages seen"
-msgstr "Segna come letti tutti i messaggi privati"
+#: ../../include/identity.php:897 ../../include/identity.php:1187
+msgid "Homepage:"
+msgstr "Home page:"
-#: ../../include/nav.php:180
-msgid "Inbox"
-msgstr "In arrivo"
+#: ../../include/identity.php:898
+msgid "Online Now"
+msgstr "Online adesso"
-#: ../../include/nav.php:181
-msgid "Outbox"
-msgstr "Inviati"
+#: ../../include/identity.php:976 ../../include/identity.php:1056
+#: ../../mod/ping.php:326
+msgid "g A l F d"
+msgstr "g A l d F"
-#: ../../include/nav.php:182 ../../include/widgets.php:536
-msgid "New Message"
-msgstr "Nuovo messaggio"
+#: ../../include/identity.php:977 ../../include/identity.php:1057
+msgid "F d"
+msgstr "d F"
-#: ../../include/nav.php:185 ../../include/apps.php:130
-#: ../../mod/events.php:377
-msgid "Events"
-msgstr "Eventi"
+#: ../../include/identity.php:1022 ../../include/identity.php:1097
+#: ../../mod/ping.php:348
+msgid "[today]"
+msgstr "[oggi]"
-#: ../../include/nav.php:185
-msgid "Event Calendar"
-msgstr "Calendario"
+#: ../../include/identity.php:1034
+msgid "Birthday Reminders"
+msgstr "Promemoria compleanni"
-#: ../../include/nav.php:186
-msgid "See all events"
-msgstr "Guarda tutti gli eventi"
+#: ../../include/identity.php:1035
+msgid "Birthdays this week:"
+msgstr "Compleanni questa settimana:"
-#: ../../include/nav.php:187
-msgid "Mark all events seen"
-msgstr "Marca come letti tutti gli eventi"
+#: ../../include/identity.php:1090
+msgid "[No description]"
+msgstr "[Nessuna descrizione]"
-#: ../../include/nav.php:189 ../../include/apps.php:122
-msgid "Channel Select"
-msgstr "Gestisci i canali"
+#: ../../include/identity.php:1108
+msgid "Event Reminders"
+msgstr "Promemoria"
-#: ../../include/nav.php:189
-msgid "Manage Your Channels"
-msgstr "Gestisci i contatti dei tuoi canali"
+#: ../../include/identity.php:1109
+msgid "Events this week:"
+msgstr "Eventi di questa settimana:"
-#: ../../include/nav.php:191 ../../include/apps.php:124
-#: ../../include/widgets.php:514 ../../mod/admin.php:978
-#: ../../mod/admin.php:1183
-msgid "Settings"
-msgstr "Impostazioni"
+#: ../../include/identity.php:1122 ../../include/identity.php:1251
+#: ../../include/apps.php:138 ../../mod/profperm.php:112
+msgid "Profile"
+msgstr "Profilo"
-#: ../../include/nav.php:191
-msgid "Account/Channel Settings"
-msgstr "Impostazioni account e canali"
+#: ../../include/identity.php:1130 ../../mod/settings.php:1012
+msgid "Full Name:"
+msgstr "Nome completo:"
-#: ../../include/nav.php:199 ../../mod/admin.php:117
-msgid "Admin"
-msgstr "Amministrazione"
+#: ../../include/identity.php:1137
+msgid "Like this channel"
+msgstr "Mi piace questo canale"
-#: ../../include/nav.php:199
-msgid "Site Setup and Configuration"
-msgstr "Configurazione del sito"
+#: ../../include/identity.php:1161
+msgid "j F, Y"
+msgstr "j F Y"
-#: ../../include/nav.php:224
-msgid "Nothing new here"
-msgstr "Niente di nuovo qui"
+#: ../../include/identity.php:1162
+msgid "j F"
+msgstr "j F"
-#: ../../include/nav.php:228
-msgid "Please wait..."
-msgstr "Attendere..."
+#: ../../include/identity.php:1169
+msgid "Birthday:"
+msgstr "Compleanno:"
-#: ../../include/features.php:23
-msgid "General Features"
-msgstr "Funzionalità di base"
+#: ../../include/identity.php:1173
+msgid "Age:"
+msgstr "Età:"
-#: ../../include/features.php:25
-msgid "Content Expiration"
-msgstr "Scadenza"
+#: ../../include/identity.php:1182
+#, php-format
+msgid "for %1$d %2$s"
+msgstr "per %1$d %2$s"
-#: ../../include/features.php:25
-msgid "Remove posts/comments and/or private messages at a future time"
-msgstr "Elimina gli articoli, i commenti o i messaggi privati dopo che è trascorso del tempo"
+#: ../../include/identity.php:1185 ../../mod/profiles.php:657
+msgid "Sexual Preference:"
+msgstr "Preferenze sessuali:"
-#: ../../include/features.php:26
-msgid "Multiple Profiles"
-msgstr "Profili multipli"
+#: ../../include/identity.php:1189 ../../mod/profiles.php:659
+msgid "Hometown:"
+msgstr "Città dove vivo:"
-#: ../../include/features.php:26
-msgid "Ability to create multiple profiles"
-msgstr "Abilitazione a creare profili multipli"
+#: ../../include/identity.php:1191
+msgid "Tags:"
+msgstr "Tag:"
-#: ../../include/features.php:27
-msgid "Web Pages"
-msgstr "Pagine web"
+#: ../../include/identity.php:1193 ../../mod/profiles.php:660
+msgid "Political Views:"
+msgstr "Orientamento politico:"
-#: ../../include/features.php:27
-msgid "Provide managed web pages on your channel"
-msgstr "Attiva la creazione di pagine web sul tuo canale"
+#: ../../include/identity.php:1195
+msgid "Religion:"
+msgstr "Religione:"
-#: ../../include/features.php:28
-msgid "Private Notes"
-msgstr "Note private"
+#: ../../include/identity.php:1197
+msgid "About:"
+msgstr "Informazioni:"
-#: ../../include/features.php:28
-msgid "Enables a tool to store notes and reminders"
-msgstr "Abilita il riquadro per scrivere annotazioni"
+#: ../../include/identity.php:1199
+msgid "Hobbies/Interests:"
+msgstr "Interessi e hobby:"
-#: ../../include/features.php:33
-msgid "Extended Identity Sharing"
-msgstr "Condivisione avanzata dell'identità"
+#: ../../include/identity.php:1201 ../../mod/profiles.php:663
+msgid "Likes:"
+msgstr "Mi piace:"
-#: ../../include/features.php:33
-msgid ""
-"Share your identity with all websites on the internet. When disabled, "
-"identity is only shared with sites in the matrix."
-msgstr "Rendi nota la tua identità a tutti i siti internet. Se disabilitato, la tua identità sarà comunicata solo ai siti red matrix."
+#: ../../include/identity.php:1203 ../../mod/profiles.php:664
+msgid "Dislikes:"
+msgstr "Non mi piace:"
-#: ../../include/features.php:34
-msgid "Expert Mode"
-msgstr "Modalità esperto"
+#: ../../include/identity.php:1206
+msgid "Contact information and Social Networks:"
+msgstr "Contatti e social network:"
-#: ../../include/features.php:34
-msgid "Enable Expert Mode to provide advanced configuration options"
-msgstr "Abilita la modalità esperto per vedere le opzioni di configurazione avanzate"
+#: ../../include/identity.php:1218
+msgid "My other channels:"
+msgstr "I miei altri canali:"
-#: ../../include/features.php:35
-msgid "Premium Channel"
-msgstr "Canale premium"
+#: ../../include/identity.php:1221
+msgid "Musical interests:"
+msgstr "Gusti musicali:"
-#: ../../include/features.php:35
-msgid ""
-"Allows you to set restrictions and terms on those that connect with your "
-"channel"
-msgstr "Ti permette di imporre delle restrizioni e dei termini d'uso a chi segue il canale"
+#: ../../include/identity.php:1223
+msgid "Books, literature:"
+msgstr "Libri, letteratura:"
-#: ../../include/features.php:40
-msgid "Post Composition Features"
-msgstr "Modalità di scrittura articoli"
+#: ../../include/identity.php:1225
+msgid "Television:"
+msgstr "Televisione:"
-#: ../../include/features.php:42
-msgid "Post Preview"
-msgstr "Anteprima articolo"
+#: ../../include/identity.php:1227
+msgid "Film/dance/culture/entertainment:"
+msgstr "Film, danza, cultura, intrattenimento:"
-#: ../../include/features.php:42
-msgid "Allow previewing posts and comments before publishing them"
-msgstr "Abilita l'anteprima degli articoli e dei commenti prima di pubblicarli"
+#: ../../include/identity.php:1229
+msgid "Love/Romance:"
+msgstr "Amore:"
-#: ../../include/features.php:43 ../../include/widgets.php:503
-#: ../../mod/sources.php:88
-msgid "Channel Sources"
-msgstr "Sorgenti del canale"
+#: ../../include/identity.php:1231
+msgid "Work/employment:"
+msgstr "Lavoro:"
-#: ../../include/features.php:43
-msgid "Automatically import channel content from other channels or feeds"
-msgstr "Importa automaticamente il contenuto del canale da altri canali o feed"
+#: ../../include/identity.php:1233
+msgid "School/education:"
+msgstr "Scuola:"
-#: ../../include/features.php:44
-msgid "Even More Encryption"
-msgstr "Crittografia addizionale"
+#: ../../include/identity.php:1253
+msgid "Like this thing"
+msgstr "Mi piace questo oggetto"
-#: ../../include/features.php:44
-msgid ""
-"Allow optional encryption of content end-to-end with a shared secret key"
-msgstr "Rendi possibile la crittografia dei contenuti tra mittente e destinatari con una chiave segreta"
+#: ../../include/account.php:23
+msgid "Not a valid email address"
+msgstr "Email non valida"
-#: ../../include/features.php:49
-msgid "Network and Stream Filtering"
-msgstr "Filtraggio dei contenuti"
+#: ../../include/account.php:25
+msgid "Your email domain is not among those allowed on this site"
+msgstr "Il dominio della tua email attualmente non è permesso su questo sito"
-#: ../../include/features.php:50
-msgid "Search by Date"
-msgstr "Ricerca per data"
+#: ../../include/account.php:31
+msgid "Your email address is already registered at this site."
+msgstr "La tua email è già registrata su questo sito."
-#: ../../include/features.php:50
-msgid "Ability to select posts by date ranges"
-msgstr "Per selezionare gli articoli in un intervallo tra date"
+#: ../../include/account.php:64
+msgid "An invitation is required."
+msgstr "È necessario un invito."
-#: ../../include/features.php:51
-msgid "Collections Filter"
-msgstr "Filtra per insiemi di canali"
+#: ../../include/account.php:68
+msgid "Invitation could not be verified."
+msgstr "L'invito non può essere verificato."
-#: ../../include/features.php:51
-msgid "Enable widget to display Network posts only from selected collections"
-msgstr "Mostra il riquadro per filtrare gli articoli di certi insiemi di canali"
+#: ../../include/account.php:119
+msgid "Please enter the required information."
+msgstr "Inserisci le informazioni richieste."
-#: ../../include/features.php:52 ../../include/widgets.php:265
-msgid "Saved Searches"
-msgstr "Ricerche salvate"
+#: ../../include/account.php:187
+msgid "Failed to store account information."
+msgstr "Non è stato possibile salvare le informazioni del tuo account."
-#: ../../include/features.php:52
-msgid "Save search terms for re-use"
-msgstr "Salva i termini delle ricerche per poterle ripetere"
+#: ../../include/account.php:245
+#, php-format
+msgid "Registration confirmation for %s"
+msgstr "Registrazione di %s confermata"
-#: ../../include/features.php:53
-msgid "Network Personal Tab"
-msgstr "Attività personale"
+#: ../../include/account.php:313
+#, php-format
+msgid "Registration request at %s"
+msgstr "Richiesta di registrazione su %s"
-#: ../../include/features.php:53
-msgid "Enable tab to display only Network posts that you've interacted on"
-msgstr "Abilita il link per mostrare solamente i contenuti con cui hai interagito"
+#: ../../include/account.php:315 ../../include/account.php:342
+#: ../../include/account.php:399
+msgid "Administrator"
+msgstr "Amministratore"
-#: ../../include/features.php:54
-msgid "Network New Tab"
-msgstr "Contenuti nuovi"
+#: ../../include/account.php:337
+msgid "your registration password"
+msgstr "la password di registrazione"
-#: ../../include/features.php:54
-msgid "Enable tab to display all new Network activity"
-msgstr "Abilita il link per visualizzare solo i nuovi contenuti"
+#: ../../include/account.php:340 ../../include/account.php:397
+#, php-format
+msgid "Registration details for %s"
+msgstr "Dettagli della registrazione di %s"
-#: ../../include/features.php:55
-msgid "Affinity Tool"
-msgstr "Filtro per affinità"
+#: ../../include/account.php:406
+msgid "Account approved."
+msgstr "Account approvato."
-#: ../../include/features.php:55
-msgid "Filter stream activity by depth of relationships"
-msgstr "Permette di selezionare i contenuti in base al livello di amicizia"
+#: ../../include/account.php:440
+#, php-format
+msgid "Registration revoked for %s"
+msgstr "Registrazione revocata per %s"
-#: ../../include/features.php:56
-msgid "Suggest Channels"
-msgstr "Suggerisci canali"
+#: ../../include/account.php:486
+msgid "Account verified. Please login."
+msgstr "Registrazione verificata. Adesso puoi effettuare login."
-#: ../../include/features.php:56
-msgid "Show channel suggestions"
-msgstr "Mostra alcuni canali che potrebbero interessarti"
+#: ../../include/account.php:648 ../../include/account.php:650
+msgid "Click here to upgrade."
+msgstr "Clicca qui per aggiornare."
-#: ../../include/features.php:61
-msgid "Post/Comment Tools"
-msgstr "Gestione articoli e commenti"
+#: ../../include/account.php:656
+msgid "This action exceeds the limits set by your subscription plan."
+msgstr "Questa operazione supera i limiti del tuo abbonamento."
-#: ../../include/features.php:63
-msgid "Edit Sent Posts"
-msgstr "Modifica gli articoli già inviati"
+#: ../../include/account.php:661
+msgid "This action is not available under your subscription plan."
+msgstr "Questa operazione non è prevista dal tuo abbonamento."
-#: ../../include/features.php:63
-msgid "Edit and correct posts and comments after sending"
-msgstr "Modifica e correggi gli articoli o i commenti anche dopo l'invio"
+#: ../../include/follow.php:28
+msgid "Channel is blocked on this site."
+msgstr "Il canale è bloccato per questo sito."
-#: ../../include/features.php:64
-msgid "Tagging"
-msgstr "Tag"
+#: ../../include/follow.php:33
+msgid "Channel location missing."
+msgstr "Manca l'indirizzo del canale."
-#: ../../include/features.php:64
-msgid "Ability to tag existing posts"
-msgstr "Permetti l'aggiunta di tag su articoli già esistenti"
+#: ../../include/follow.php:82
+msgid "Response from remote channel was incomplete."
+msgstr "La risposta dal canale non è completa."
-#: ../../include/features.php:65
-msgid "Post Categories"
-msgstr "Categorie degli articoli"
+#: ../../include/follow.php:99
+msgid "Channel was deleted and no longer exists."
+msgstr "Il canale è stato rimosso e non esiste più."
-#: ../../include/features.php:65
-msgid "Add categories to your posts"
-msgstr "Abilita le categorie per i tuoi articoli"
+#: ../../include/follow.php:135 ../../include/follow.php:202
+msgid "Protocol disabled."
+msgstr "Protocollo disabilitato."
-#: ../../include/features.php:66
-msgid "Ability to file posts under folders"
-msgstr "Abilita la raccolta dei tuoi articoli in cartelle"
+#: ../../include/follow.php:176
+msgid "Channel discovery failed."
+msgstr "La ricerca del canale non ha avuto successo."
-#: ../../include/features.php:67
-msgid "Dislike Posts"
-msgstr "Non mi piace"
+#: ../../include/follow.php:192
+msgid "local account not found."
+msgstr "l'account locale non è stato trovato."
-#: ../../include/features.php:67
-msgid "Ability to dislike posts/comments"
-msgstr "Abilità la funzionalità \"non mi piace\" per i tuoi articoli"
+#: ../../include/follow.php:220
+msgid "Cannot connect to yourself."
+msgstr "Non puoi connetterti a te stesso."
-#: ../../include/features.php:68
-msgid "Star Posts"
-msgstr "Articoli stella (preferiti)"
+#: ../../include/api.php:1084
+msgid "Public Timeline"
+msgstr "Diario pubblico"
-#: ../../include/features.php:68
-msgid "Ability to mark special posts with a star indicator"
-msgstr "Mostra la stella per scegliere gli articoli preferiti"
+#: ../../include/attach.php:221 ../../include/attach.php:275
+msgid "Item was not found."
+msgstr "Elemento non trovato."
-#: ../../include/features.php:69
-msgid "Tag Cloud"
-msgstr "Nuvola di tag"
+#: ../../include/attach.php:331
+msgid "No source file."
+msgstr "Nessun file di origine."
-#: ../../include/features.php:69
-msgid "Provide a personal tag cloud on your channel page"
-msgstr "Mostra la nuvola dei tag che usi di più sulla pagina del tuo canale"
+#: ../../include/attach.php:348
+msgid "Cannot locate file to replace"
+msgstr "Il file da sostituire non è stato trovato"
-#: ../../include/notify.php:23
-msgid "created a new post"
-msgstr "ha creato un nuovo articolo"
+#: ../../include/attach.php:366
+msgid "Cannot locate file to revise/update"
+msgstr "Il file da aggiornare non è stato trovato"
-#: ../../include/notify.php:24
+#: ../../include/attach.php:377
#, php-format
-msgid "commented on %s's post"
-msgstr "ha commentato l'articolo di %s"
-
-#: ../../include/apps.php:118
-msgid "Site Admin"
-msgstr "Amministrazione sito"
+msgid "File exceeds size limit of %d"
+msgstr "Il file supera la dimensione massima di %d"
-#: ../../include/apps.php:120
-msgid "Address Book"
-msgstr "Rubrica"
+#: ../../include/attach.php:389
+#, php-format
+msgid "You have reached your limit of %1$.0f Mbytes attachment storage."
+msgstr "Hai raggiunto il limite complessivo di %1$.0f Mbytes per gli allegati."
-#: ../../include/apps.php:134 ../../mod/mood.php:131
-msgid "Mood"
-msgstr "Umore"
+#: ../../include/attach.php:472
+msgid "File upload failed. Possible system limit or action terminated."
+msgstr "Caricamento file fallito, potrebbe essere stato interrotto o potrebbe aver superato lo spazio assegnato."
-#: ../../include/apps.php:135 ../../include/conversation.php:945
-msgid "Poke"
-msgstr "Poke"
+#: ../../include/attach.php:484
+msgid "Stored file could not be verified. Upload failed."
+msgstr "Il file non può essere verificato. Caricamento fallito."
-#: ../../include/apps.php:138
-msgid "Probe"
-msgstr "Diagnostica"
+#: ../../include/attach.php:526 ../../include/attach.php:543
+msgid "Path not available."
+msgstr "Percorso non disponibile."
-#: ../../include/apps.php:139
-msgid "Suggest"
-msgstr "Suggerisci"
+#: ../../include/attach.php:590
+msgid "Empty pathname"
+msgstr "Il percorso del file è vuoto"
-#: ../../include/apps.php:224 ../../mod/settings.php:79
-#: ../../mod/settings.php:541
-msgid "Update"
-msgstr "Aggiorna"
+#: ../../include/attach.php:606
+msgid "duplicate filename or path"
+msgstr "il file o il percorso del file è duplicato"
-#: ../../include/apps.php:224
-msgid "Install"
-msgstr "Installa"
+#: ../../include/attach.php:630
+msgid "Path not found."
+msgstr "Percorso del file non trovato."
-#: ../../include/apps.php:229
-msgid "Purchase"
-msgstr "Acquista"
+#: ../../include/attach.php:681
+msgid "mkdir failed."
+msgstr "mkdir fallito."
-#: ../../include/api.php:1016
-msgid "Public Timeline"
-msgstr "Diario pubblico"
+#: ../../include/attach.php:685
+msgid "database storage failed."
+msgstr "scrittura su database fallita."
#: ../../include/chat.php:10
msgid "Missing room name"
-msgstr "Chat senza nome"
+msgstr "Area chat senza nome"
#: ../../include/chat.php:19
msgid "Duplicate room name"
-msgstr "Il nome della chat è duplicato"
+msgstr "Il nome dell'area chat è duplicato"
#: ../../include/chat.php:68 ../../include/chat.php:76
msgid "Invalid room specifier."
-msgstr "Il nome della chat non è valido."
+msgstr "Il nome dell'area chat non è valido."
#: ../../include/chat.php:105
msgid "Room not found."
-msgstr "Chat non trovata."
+msgstr "Area chat non trovata."
#: ../../include/chat.php:126
msgid "Room is full"
-msgstr "La chat è al completo"
+msgstr "L'area chat è al completo"
+
+#: ../../include/bbcode.php:112 ../../include/bbcode.php:677
+#: ../../include/bbcode.php:680 ../../include/bbcode.php:685
+#: ../../include/bbcode.php:688 ../../include/bbcode.php:691
+#: ../../include/bbcode.php:694 ../../include/bbcode.php:699
+#: ../../include/bbcode.php:702 ../../include/bbcode.php:707
+#: ../../include/bbcode.php:710 ../../include/bbcode.php:713
+#: ../../include/bbcode.php:716
+msgid "Image/photo"
+msgstr "Immagine"
+
+#: ../../include/bbcode.php:147 ../../include/bbcode.php:727
+msgid "Encrypted content"
+msgstr "Contenuto crittografato"
+
+#: ../../include/bbcode.php:165
+msgid "Install design element: "
+msgstr "Installa il componente di design:"
+
+#: ../../include/bbcode.php:171
+msgid "QR code"
+msgstr "QR code"
+
+#: ../../include/bbcode.php:220
+#, php-format
+msgid "%1$s wrote the following %2$s %3$s"
+msgstr "%1$s ha scritto %2$s %3$s"
+
+#: ../../include/bbcode.php:222
+msgid "post"
+msgstr "l'articolo"
+
+#: ../../include/bbcode.php:645
+msgid "$1 spoiler"
+msgstr "$1 spoiler"
-#: ../../include/conversation.php:126 ../../mod/like.php:72
+#: ../../include/bbcode.php:665
+msgid "$1 wrote:"
+msgstr "$1 ha scritto:"
+
+#: ../../include/conversation.php:126 ../../mod/like.php:89
msgid "channel"
msgstr "canale"
-#: ../../include/conversation.php:164 ../../mod/like.php:291
+#: ../../include/conversation.php:164 ../../include/diaspora.php:1957
+#: ../../mod/like.php:336
#, php-format
msgid "%1$s likes %2$s's %3$s"
msgstr "A %1$s piace %3$s di %2$s"
-#: ../../include/conversation.php:167 ../../mod/like.php:293
+#: ../../include/conversation.php:167 ../../mod/like.php:338
#, php-format
msgid "%1$s doesn't like %2$s's %3$s"
msgstr "A %1$s non piace %3$s di %2$s"
@@ -3091,2605 +2153,3694 @@ msgctxt "mood"
msgid "%1$s is %2$s"
msgstr "%1$s è %2$s"
-#: ../../include/conversation.php:669
+#: ../../include/conversation.php:638 ../../include/ItemObject.php:126
+msgid "Select"
+msgstr "Seleziona"
+
+#: ../../include/conversation.php:646 ../../include/ItemObject.php:89
+msgid "Private Message"
+msgstr "Messaggio privato"
+
+#: ../../include/conversation.php:653 ../../include/ItemObject.php:194
+msgid "Message signature validated"
+msgstr "Messaggio con firma verificata"
+
+#: ../../include/conversation.php:654 ../../include/ItemObject.php:195
+msgid "Message signature incorrect"
+msgstr "Massaggio con firma non corretta"
+
+#: ../../include/conversation.php:674
#, php-format
msgid "View %s's profile @ %s"
msgstr "Vedi il profilo di %s @ %s"
-#: ../../include/conversation.php:683
+#: ../../include/conversation.php:689
msgid "Categories:"
msgstr "Categorie:"
-#: ../../include/conversation.php:684
+#: ../../include/conversation.php:690
msgid "Filed under:"
msgstr "Classificato come:"
-#: ../../include/conversation.php:712
+#: ../../include/conversation.php:698 ../../include/ItemObject.php:274
+#, php-format
+msgid " from %s"
+msgstr " da %s"
+
+#: ../../include/conversation.php:701 ../../include/ItemObject.php:277
+#, php-format
+msgid "last edited: %s"
+msgstr "ultima modifica: %s"
+
+#: ../../include/conversation.php:702 ../../include/ItemObject.php:278
+#, php-format
+msgid "Expires: %s"
+msgstr "Scadenza: %s"
+
+#: ../../include/conversation.php:717
msgid "View in context"
msgstr "Vedi nel contesto"
-#: ../../include/conversation.php:841
+#: ../../include/conversation.php:719 ../../include/conversation.php:1142
+#: ../../include/ItemObject.php:325 ../../mod/editpost.php:121
+#: ../../mod/mail.php:238 ../../mod/mail.php:353 ../../mod/photos.php:978
+#: ../../mod/editblock.php:152 ../../mod/editlayout.php:148
+#: ../../mod/editwebpage.php:183
+msgid "Please wait"
+msgstr "Attendere"
+
+#: ../../include/conversation.php:835
msgid "remove"
msgstr "rimuovi"
-#: ../../include/conversation.php:845
+#: ../../include/conversation.php:839 ../../include/nav.php:257
msgid "Loading..."
msgstr "Caricamento in corso..."
-#: ../../include/conversation.php:846
+#: ../../include/conversation.php:840
msgid "Delete Selected Items"
msgstr "Elimina gli oggetti selezionati"
-#: ../../include/conversation.php:937
+#: ../../include/conversation.php:931
msgid "View Source"
msgstr "Vedi il sorgente"
-#: ../../include/conversation.php:938
+#: ../../include/conversation.php:932
msgid "Follow Thread"
msgstr "Segui la discussione"
-#: ../../include/conversation.php:939
+#: ../../include/conversation.php:933
msgid "View Status"
msgstr "Guarda il messaggio di stato"
-#: ../../include/conversation.php:941
+#: ../../include/conversation.php:934 ../../include/nav.php:99
+#: ../../mod/connedit.php:429 ../../mod/connedit.php:545
+msgid "View Profile"
+msgstr "Profilo"
+
+#: ../../include/conversation.php:935
msgid "View Photos"
msgstr "Guarda le foto"
-#: ../../include/conversation.php:942
+#: ../../include/conversation.php:936
msgid "Matrix Activity"
msgstr "Attività nella tua rete"
-#: ../../include/conversation.php:943
+#: ../../include/conversation.php:938
msgid "Edit Contact"
msgstr "Modifica il contatto"
-#: ../../include/conversation.php:944
+#: ../../include/conversation.php:939
msgid "Send PM"
msgstr "Invia messaggio privato"
-#: ../../include/conversation.php:1001
+#: ../../include/conversation.php:940 ../../include/apps.php:145
+msgid "Poke"
+msgstr "Poke"
+
+#: ../../include/conversation.php:1013
#, php-format
msgid "%s likes this."
msgstr "Piace a %s."
-#: ../../include/conversation.php:1001
+#: ../../include/conversation.php:1013
#, php-format
msgid "%s doesn't like this."
msgstr "Non piace a %s."
-#: ../../include/conversation.php:1005
+#: ../../include/conversation.php:1017
#, php-format
msgid "<span %1$s>%2$d people</span> like this."
msgid_plural "<span %1$s>%2$d people</span> like this."
msgstr[0] ""
msgstr[1] "Piace a <span %1$s>%2$d persone</span>."
-#: ../../include/conversation.php:1007
+#: ../../include/conversation.php:1019
#, php-format
msgid "<span %1$s>%2$d people</span> don't like this."
msgid_plural "<span %1$s>%2$d people</span> don't like this."
msgstr[0] ""
msgstr[1] "Non piace a <span %1$s>%2$d persone</span>."
-#: ../../include/conversation.php:1013
+#: ../../include/conversation.php:1025
msgid "and"
msgstr "e"
-#: ../../include/conversation.php:1016
+#: ../../include/conversation.php:1028
#, php-format
msgid ", and %d other people"
msgid_plural ", and %d other people"
msgstr[0] ""
msgstr[1] "e altre %d persone"
-#: ../../include/conversation.php:1017
+#: ../../include/conversation.php:1029
#, php-format
msgid "%s like this."
msgstr "Piace a %s."
-#: ../../include/conversation.php:1017
+#: ../../include/conversation.php:1029
#, php-format
msgid "%s don't like this."
msgstr "Non piace a %s."
-#: ../../include/conversation.php:1074
+#: ../../include/conversation.php:1086
msgid "Visible to <strong>everybody</strong>"
msgstr "Visibile a <strong>tutti</strong>"
-#: ../../include/conversation.php:1075 ../../mod/mail.php:167
-#: ../../mod/mail.php:266
+#: ../../include/conversation.php:1087 ../../mod/mail.php:171
+#: ../../mod/mail.php:286
msgid "Please enter a link URL:"
msgstr "Inserisci l'indirizzo del link:"
-#: ../../include/conversation.php:1076
+#: ../../include/conversation.php:1088
msgid "Please enter a video link/URL:"
msgstr "Inserisci l'indirizzo del video:"
-#: ../../include/conversation.php:1077
+#: ../../include/conversation.php:1089
msgid "Please enter an audio link/URL:"
msgstr "Inserisci l'indirizzo dell'audio:"
-#: ../../include/conversation.php:1078
+#: ../../include/conversation.php:1090
msgid "Tag term:"
msgstr "Tag:"
-#: ../../include/conversation.php:1079 ../../mod/filer.php:49
+#: ../../include/conversation.php:1091 ../../mod/filer.php:49
msgid "Save to Folder:"
msgstr "Salva nella cartella:"
-#: ../../include/conversation.php:1080
+#: ../../include/conversation.php:1092
msgid "Where are you right now?"
msgstr "Dove sei ora?"
-#: ../../include/conversation.php:1081 ../../mod/editpost.php:52
-#: ../../mod/mail.php:168 ../../mod/mail.php:267
+#: ../../include/conversation.php:1093 ../../mod/editpost.php:52
+#: ../../mod/mail.php:172 ../../mod/mail.php:287
msgid "Expires YYYY-MM-DD HH:MM"
msgstr "Scade il YYYY-MM-DD HH:MM"
-#: ../../include/conversation.php:1105 ../../mod/photos.php:976
-#: ../../mod/layouts.php:113
+#: ../../include/conversation.php:1117 ../../mod/photos.php:977
+#: ../../mod/editblock.php:198 ../../mod/editlayout.php:193
+#: ../../mod/editwebpage.php:230 ../../mod/layouts.php:168
msgid "Share"
msgstr "Condividi"
-#: ../../include/conversation.php:1107 ../../mod/editwebpage.php:139
+#: ../../include/conversation.php:1119 ../../mod/editwebpage.php:170
msgid "Page link title"
msgstr "Link del titolo"
-#: ../../include/conversation.php:1110
+#: ../../include/conversation.php:1122
msgid "Post as"
msgstr "Pubblica come "
-#: ../../include/conversation.php:1111 ../../mod/editpost.php:113
-#: ../../mod/editwebpage.php:144 ../../mod/mail.php:215 ../../mod/mail.php:329
-#: ../../mod/editblock.php:112 ../../mod/editlayout.php:107
+#: ../../include/conversation.php:1123 ../../mod/editpost.php:113
+#: ../../mod/mail.php:235 ../../mod/mail.php:349 ../../mod/editblock.php:144
+#: ../../mod/editlayout.php:140 ../../mod/editwebpage.php:175
msgid "Upload photo"
msgstr "Carica foto"
-#: ../../include/conversation.php:1112
+#: ../../include/conversation.php:1124
msgid "upload photo"
msgstr "carica foto"
-#: ../../include/conversation.php:1113 ../../mod/editpost.php:114
-#: ../../mod/editwebpage.php:145 ../../mod/mail.php:216 ../../mod/mail.php:330
-#: ../../mod/editblock.php:113 ../../mod/editlayout.php:108
+#: ../../include/conversation.php:1125 ../../mod/editpost.php:114
+#: ../../mod/mail.php:236 ../../mod/mail.php:350 ../../mod/editblock.php:145
+#: ../../mod/editlayout.php:141 ../../mod/editwebpage.php:176
msgid "Attach file"
msgstr "Allega file"
-#: ../../include/conversation.php:1114
+#: ../../include/conversation.php:1126
msgid "attach file"
msgstr "allega file"
-#: ../../include/conversation.php:1115 ../../mod/editpost.php:115
-#: ../../mod/editwebpage.php:146 ../../mod/mail.php:217 ../../mod/mail.php:331
-#: ../../mod/editblock.php:114 ../../mod/editlayout.php:109
+#: ../../include/conversation.php:1127 ../../mod/editpost.php:115
+#: ../../mod/mail.php:237 ../../mod/mail.php:351 ../../mod/editblock.php:146
+#: ../../mod/editlayout.php:142 ../../mod/editwebpage.php:177
msgid "Insert web link"
msgstr "Inserisci un indirizzo web"
-#: ../../include/conversation.php:1116
+#: ../../include/conversation.php:1128
msgid "web link"
msgstr "link web"
-#: ../../include/conversation.php:1117
+#: ../../include/conversation.php:1129
msgid "Insert video link"
msgstr "Inserisci l'indirizzo di un video"
-#: ../../include/conversation.php:1118
+#: ../../include/conversation.php:1130
msgid "video link"
msgstr "link video"
-#: ../../include/conversation.php:1119
+#: ../../include/conversation.php:1131
msgid "Insert audio link"
msgstr "Inserisci l'indirizzo di un audio"
-#: ../../include/conversation.php:1120
+#: ../../include/conversation.php:1132
msgid "audio link"
msgstr "link audio"
-#: ../../include/conversation.php:1121 ../../mod/editpost.php:119
-#: ../../mod/editwebpage.php:150 ../../mod/editblock.php:118
-#: ../../mod/editlayout.php:113
+#: ../../include/conversation.php:1133 ../../mod/editpost.php:119
+#: ../../mod/editblock.php:150 ../../mod/editlayout.php:146
+#: ../../mod/editwebpage.php:181
msgid "Set your location"
msgstr "La tua località"
-#: ../../include/conversation.php:1122
+#: ../../include/conversation.php:1134
msgid "set location"
msgstr "la tua località"
-#: ../../include/conversation.php:1123 ../../mod/editpost.php:120
-#: ../../mod/editwebpage.php:151 ../../mod/editblock.php:119
-#: ../../mod/editlayout.php:114
+#: ../../include/conversation.php:1135 ../../mod/editpost.php:120
+#: ../../mod/editblock.php:151 ../../mod/editlayout.php:147
+#: ../../mod/editwebpage.php:182
msgid "Clear browser location"
msgstr "Rimuovi la località data dal browser"
-#: ../../include/conversation.php:1124
+#: ../../include/conversation.php:1136
msgid "clear location"
msgstr "rimuovi la località"
-#: ../../include/conversation.php:1126 ../../mod/editpost.php:132
-#: ../../mod/editwebpage.php:167 ../../mod/editblock.php:132
-#: ../../mod/editlayout.php:126
-msgid "Set title"
-msgstr "Scegli un titolo"
-
-#: ../../include/conversation.php:1129 ../../mod/editpost.php:134
-#: ../../mod/editwebpage.php:169 ../../mod/editblock.php:135
-#: ../../mod/editlayout.php:129
-msgid "Categories (comma-separated list)"
-msgstr "Categorie (separate da virgola)"
-
-#: ../../include/conversation.php:1131 ../../mod/editpost.php:122
-#: ../../mod/editwebpage.php:153 ../../mod/editblock.php:121
-#: ../../mod/editlayout.php:116
+#: ../../include/conversation.php:1138 ../../mod/editpost.php:132
+#: ../../mod/editblock.php:164 ../../mod/editlayout.php:159
+#: ../../mod/editwebpage.php:198
+msgid "Title (optional)"
+msgstr "Titolo (opzionale)"
+
+#: ../../include/conversation.php:1141 ../../mod/editpost.php:134
+#: ../../mod/editblock.php:167 ../../mod/editlayout.php:162
+#: ../../mod/editwebpage.php:200
+msgid "Categories (optional, comma-separated list)"
+msgstr "Categorie (lista separata da virgole)"
+
+#: ../../include/conversation.php:1143 ../../mod/editpost.php:122
+#: ../../mod/editblock.php:153 ../../mod/editlayout.php:149
+#: ../../mod/editwebpage.php:184
msgid "Permission settings"
msgstr "Impostazioni permessi"
-#: ../../include/conversation.php:1132
+#: ../../include/conversation.php:1144
msgid "permissions"
msgstr "permessi"
-#: ../../include/conversation.php:1139 ../../mod/editpost.php:129
-#: ../../mod/editwebpage.php:162 ../../mod/editblock.php:129
-#: ../../mod/editlayout.php:123
+#: ../../include/conversation.php:1151 ../../mod/editpost.php:129
+#: ../../mod/editblock.php:161 ../../mod/editlayout.php:156
+#: ../../mod/editwebpage.php:193
msgid "Public post"
msgstr "Articolo pubblico"
-#: ../../include/conversation.php:1141 ../../mod/editpost.php:135
-#: ../../mod/editwebpage.php:170 ../../mod/editblock.php:136
-#: ../../mod/editlayout.php:130
+#: ../../include/conversation.php:1153 ../../mod/editpost.php:135
+#: ../../mod/editblock.php:168 ../../mod/editlayout.php:163
+#: ../../mod/editwebpage.php:201
msgid "Example: bob@example.com, mary@example.com"
msgstr "Per esempio: mario@esempio.com, simona@esempio.com"
-#: ../../include/conversation.php:1154 ../../mod/editpost.php:146
-#: ../../mod/editwebpage.php:179 ../../mod/mail.php:222 ../../mod/mail.php:336
-#: ../../mod/editblock.php:146 ../../mod/editlayout.php:140
+#: ../../include/conversation.php:1166 ../../mod/editpost.php:146
+#: ../../mod/mail.php:242 ../../mod/mail.php:356 ../../mod/editblock.php:178
+#: ../../mod/editlayout.php:173 ../../mod/editwebpage.php:210
msgid "Set expiration date"
msgstr "Data di scadenza"
-#: ../../include/conversation.php:1158 ../../mod/editpost.php:150
+#: ../../include/conversation.php:1168 ../../include/ItemObject.php:641
+#: ../../mod/editpost.php:148 ../../mod/mail.php:244 ../../mod/mail.php:358
+msgid "Encrypt text"
+msgstr "Crittografia del testo"
+
+#: ../../include/conversation.php:1170 ../../mod/events.php:580
+#: ../../mod/editpost.php:150
msgid "OK"
msgstr "OK"
-#: ../../include/conversation.php:1159 ../../mod/settings.php:516
-#: ../../mod/settings.php:542 ../../mod/fbrowser.php:82
-#: ../../mod/fbrowser.php:117 ../../mod/editpost.php:151
-#: ../../mod/tagrm.php:11 ../../mod/tagrm.php:94
+#: ../../include/conversation.php:1171 ../../mod/settings.php:566
+#: ../../mod/settings.php:592 ../../mod/events.php:579
+#: ../../mod/editpost.php:151 ../../mod/fbrowser.php:82
+#: ../../mod/fbrowser.php:117 ../../mod/tagrm.php:11 ../../mod/tagrm.php:134
msgid "Cancel"
msgstr "Annulla"
-#: ../../include/conversation.php:1401
+#: ../../include/conversation.php:1415
msgid "Discover"
msgstr "Scopri"
-#: ../../include/conversation.php:1404
+#: ../../include/conversation.php:1418
msgid "Imported public streams"
msgstr "Contenuti pubblici importati"
-#: ../../include/conversation.php:1409
+#: ../../include/conversation.php:1423
msgid "Commented Order"
msgstr "Ultimi commenti"
-#: ../../include/conversation.php:1412
+#: ../../include/conversation.php:1426
msgid "Sort by Comment Date"
msgstr "Per data del commento"
-#: ../../include/conversation.php:1416
+#: ../../include/conversation.php:1430
msgid "Posted Order"
msgstr "Ultimi articoli"
-#: ../../include/conversation.php:1419
+#: ../../include/conversation.php:1433
msgid "Sort by Post Date"
msgstr "Per data di creazione"
-#: ../../include/conversation.php:1424 ../../include/widgets.php:82
+#: ../../include/conversation.php:1438 ../../include/widgets.php:94
msgid "Personal"
msgstr "Personali"
-#: ../../include/conversation.php:1427
+#: ../../include/conversation.php:1441
msgid "Posts that mention or involve you"
msgstr "Articoli che ti riguardano o ti menzionano"
-#: ../../include/conversation.php:1433 ../../mod/connections.php:211
-#: ../../mod/connections.php:224 ../../mod/menu.php:61
+#: ../../include/conversation.php:1447 ../../mod/connections.php:211
+#: ../../mod/connections.php:224 ../../mod/menu.php:80
msgid "New"
msgstr "Novità"
-#: ../../include/conversation.php:1436
+#: ../../include/conversation.php:1450
msgid "Activity Stream - by date"
msgstr "Elenco attività - per data"
-#: ../../include/conversation.php:1442
+#: ../../include/conversation.php:1456
msgid "Starred"
msgstr "Preferiti"
-#: ../../include/conversation.php:1445
+#: ../../include/conversation.php:1459
msgid "Favourite Posts"
msgstr "Articoli preferiti"
-#: ../../include/conversation.php:1452
+#: ../../include/conversation.php:1466
msgid "Spam"
msgstr "Spam"
-#: ../../include/conversation.php:1455
+#: ../../include/conversation.php:1469
msgid "Posts flagged as SPAM"
msgstr "Articoli marcati come spam"
-#: ../../include/conversation.php:1488 ../../mod/admin.php:892
+#: ../../include/conversation.php:1509 ../../mod/admin.php:865
msgid "Channel"
msgstr "Canale"
-#: ../../include/conversation.php:1491
+#: ../../include/conversation.php:1512
msgid "Status Messages and Posts"
msgstr "Articoli e messaggi di stato"
-#: ../../include/conversation.php:1500
+#: ../../include/conversation.php:1521
msgid "About"
msgstr "Informazioni"
-#: ../../include/conversation.php:1503
+#: ../../include/conversation.php:1524
msgid "Profile Details"
msgstr "Dettagli del profilo"
-#: ../../include/conversation.php:1521
+#: ../../include/conversation.php:1530 ../../include/apps.php:139
+#: ../../include/nav.php:105 ../../mod/fbrowser.php:25
+msgid "Photos"
+msgstr "Foto"
+
+#: ../../include/conversation.php:1542
msgid "Files and Storage"
msgstr "Archivio file"
-#: ../../include/conversation.php:1530 ../../include/conversation.php:1533
+#: ../../include/conversation.php:1552 ../../include/conversation.php:1555
msgid "Chatrooms"
-msgstr "Chat"
+msgstr "Area chat"
-#: ../../include/conversation.php:1543
+#: ../../include/conversation.php:1565 ../../include/apps.php:129
+#: ../../include/nav.php:117
+msgid "Bookmarks"
+msgstr "Segnalibri"
+
+#: ../../include/conversation.php:1568
msgid "Saved Bookmarks"
msgstr "Segnalibri salvati"
-#: ../../include/conversation.php:1554
+#: ../../include/conversation.php:1576 ../../include/apps.php:136
+#: ../../include/nav.php:121 ../../mod/webpages.php:160
+msgid "Webpages"
+msgstr "Pagine web"
+
+#: ../../include/conversation.php:1579
msgid "Manage Webpages"
msgstr "Gestisci le pagine web"
-#: ../../include/acl_selectors.php:240
-msgid "Visible to everybody"
-msgstr "Visibile a tutti"
-
-#: ../../include/acl_selectors.php:241
-msgid "Show"
-msgstr "Mostra"
-
-#: ../../include/acl_selectors.php:242
-msgid "Don't show"
-msgstr "Non mostrare"
-
-#: ../../include/acl_selectors.php:248 ../../mod/filestorage.php:128
-#: ../../mod/photos.php:604 ../../mod/photos.php:952 ../../mod/chat.php:209
-msgid "Permissions"
-msgstr "Permessi"
+#: ../../include/widgets.php:91 ../../include/nav.php:171
+#: ../../mod/apps.php:34
+msgid "Apps"
+msgstr "Apps"
-#: ../../include/widgets.php:80
+#: ../../include/widgets.php:92
msgid "System"
msgstr "Sistema"
-#: ../../include/widgets.php:83
+#: ../../include/widgets.php:95
msgid "Create Personal App"
msgstr "Crea una app personale"
-#: ../../include/widgets.php:84
+#: ../../include/widgets.php:96
msgid "Edit Personal App"
msgstr "Modifica una app personale"
-#: ../../include/widgets.php:130 ../../mod/suggest.php:53
+#: ../../include/widgets.php:138 ../../mod/suggest.php:53
msgid "Ignore/Hide"
msgstr "Ignora/nascondi"
-#: ../../include/widgets.php:136 ../../mod/connections.php:267
+#: ../../include/widgets.php:143 ../../mod/connections.php:267
msgid "Suggestions"
msgstr "Suggerimenti"
-#: ../../include/widgets.php:137
+#: ../../include/widgets.php:144
msgid "See more..."
msgstr "Altro..."
-#: ../../include/widgets.php:159
+#: ../../include/widgets.php:166
#, php-format
msgid "You have %1$.0f of %2$.0f allowed connections."
msgstr "Hai attivato %1$.0f delle %2$.0f connessioni permesse."
-#: ../../include/widgets.php:165
+#: ../../include/widgets.php:172
msgid "Add New Connection"
msgstr "Aggiungi un contatto"
-#: ../../include/widgets.php:166
+#: ../../include/widgets.php:173
msgid "Enter the channel address"
msgstr "Scrivi l'indirizzo del canale"
-#: ../../include/widgets.php:167
+#: ../../include/widgets.php:174
msgid "Example: bob@example.com, http://example.com/barbara"
msgstr "Per esempio: mario@pippo.it oppure http://pluto.com/barbara"
-#: ../../include/widgets.php:184
+#: ../../include/widgets.php:190
msgid "Notes"
msgstr "Note"
-#: ../../include/widgets.php:256
+#: ../../include/widgets.php:264
msgid "Remove term"
msgstr "Rimuovi termine"
-#: ../../include/widgets.php:335
+#: ../../include/widgets.php:347
msgid "Archives"
msgstr "Archivi"
-#: ../../include/widgets.php:397
+#: ../../include/widgets.php:425
msgid "Refresh"
msgstr "Aggiorna"
-#: ../../include/widgets.php:398 ../../mod/connedit.php:428
+#: ../../include/widgets.php:426 ../../mod/connedit.php:506
msgid "Me"
msgstr "Io"
-#: ../../include/widgets.php:399 ../../mod/connedit.php:430
+#: ../../include/widgets.php:427 ../../mod/connedit.php:509
msgid "Best Friends"
-msgstr "Buoni amici"
+msgstr "Migliori amici"
-#: ../../include/widgets.php:401
+#: ../../include/widgets.php:429
msgid "Co-workers"
msgstr "Colleghi"
-#: ../../include/widgets.php:402 ../../mod/connedit.php:432
+#: ../../include/widgets.php:430 ../../mod/connedit.php:511
msgid "Former Friends"
msgstr "Ex amici"
-#: ../../include/widgets.php:403 ../../mod/connedit.php:433
+#: ../../include/widgets.php:431 ../../mod/connedit.php:512
msgid "Acquaintances"
msgstr "Conoscenti"
-#: ../../include/widgets.php:404
+#: ../../include/widgets.php:432
msgid "Everybody"
msgstr "Tutti"
-#: ../../include/widgets.php:436
+#: ../../include/widgets.php:466
msgid "Account settings"
msgstr "Il tuo account"
-#: ../../include/widgets.php:442
+#: ../../include/widgets.php:472
msgid "Channel settings"
msgstr "Impostazioni del canale"
-#: ../../include/widgets.php:448
+#: ../../include/widgets.php:478
msgid "Additional features"
msgstr "Funzionalità opzionali"
-#: ../../include/widgets.php:454
+#: ../../include/widgets.php:484
msgid "Feature settings"
msgstr "Componenti aggiuntivi"
-#: ../../include/widgets.php:460
+#: ../../include/widgets.php:490
msgid "Display settings"
-msgstr "Impostazioni grafiche"
+msgstr "Aspetto"
-#: ../../include/widgets.php:466
+#: ../../include/widgets.php:496
msgid "Connected apps"
msgstr "App connesse"
-#: ../../include/widgets.php:472
+#: ../../include/widgets.php:502
msgid "Export channel"
msgstr "Esporta il canale"
-#: ../../include/widgets.php:484
-msgid "Automatic Permissions (Advanced)"
-msgstr "Permessi predefiniti (avanzato)"
+#: ../../include/widgets.php:511 ../../mod/connedit.php:539
+msgid "Connection Default Permissions"
+msgstr "Permessi predefiniti dei nuovi contatti"
-#: ../../include/widgets.php:494
+#: ../../include/widgets.php:519
msgid "Premium Channel Settings"
msgstr "Canale premium - impostazioni"
-#: ../../include/widgets.php:531
+#: ../../include/widgets.php:535 ../../include/apps.php:134
+#: ../../include/nav.php:218 ../../mod/admin.php:951 ../../mod/admin.php:1156
+msgid "Settings"
+msgstr "Impostazioni"
+
+#: ../../include/widgets.php:548 ../../mod/mail.php:125
+#: ../../mod/message.php:31
+msgid "Messages"
+msgstr "Messaggi"
+
+#: ../../include/widgets.php:551
msgid "Check Mail"
msgstr "Controlla i messaggi"
-#: ../../include/widgets.php:612
+#: ../../include/widgets.php:556 ../../include/nav.php:209
+msgid "New Message"
+msgstr "Nuovo messaggio"
+
+#: ../../include/widgets.php:634
msgid "Chat Rooms"
-msgstr "Chat attive"
+msgstr "Aree chat attive"
-#: ../../include/widgets.php:630
+#: ../../include/widgets.php:654
msgid "Bookmarked Chatrooms"
-msgstr "Chat nei segnalibri"
+msgstr "Aree chat nei segnalibri"
-#: ../../include/widgets.php:648
+#: ../../include/widgets.php:674
msgid "Suggested Chatrooms"
-msgstr "Chat suggerite"
+msgstr "Aree chat suggerite"
-#: ../../include/follow.php:23
-msgid "Channel is blocked on this site."
-msgstr "Il canale è bloccato per questo sito."
+#: ../../include/widgets.php:801 ../../include/widgets.php:859
+msgid "photo/image"
+msgstr "foto/immagine"
-#: ../../include/follow.php:28
-msgid "Channel location missing."
-msgstr "Manca l'indirizzo del canale."
+#: ../../include/zot.php:664
+msgid "Invalid data packet"
+msgstr "Dati non validi"
-#: ../../include/follow.php:54
-msgid "Response from remote channel was incomplete."
-msgstr "La risposta dal canale non è completa."
+#: ../../include/zot.php:680
+msgid "Unable to verify channel signature"
+msgstr "Impossibile verificare la firma elettronica del canale"
-#: ../../include/follow.php:85
-msgid "Channel was deleted and no longer exists."
-msgstr "Il canale è stato rimosso e non esiste più."
+#: ../../include/zot.php:1829
+#, php-format
+msgid "Unable to verify site signature for %s"
+msgstr "Impossibile verificare la firma elettronica del sito %s"
-#: ../../include/follow.php:132
-msgid "Channel discovery failed."
-msgstr "La ricerca del canale non ha avuto successo."
+#: ../../include/ItemObject.php:130
+msgid "Save to Folder"
+msgstr "Salva nella cartella"
-#: ../../include/follow.php:149
-msgid "local account not found."
-msgstr "l'account locale non è stato trovato."
+#: ../../include/ItemObject.php:142 ../../include/ItemObject.php:154
+#: ../../mod/photos.php:1023 ../../mod/photos.php:1035
+msgid "View all"
+msgstr "Vedi tutto"
-#: ../../include/follow.php:158
-msgid "Cannot connect to yourself."
-msgstr "Non puoi connetterti a te stesso."
+#: ../../include/ItemObject.php:151 ../../mod/photos.php:1032
+msgctxt "noun"
+msgid "Dislike"
+msgid_plural "Dislikes"
+msgstr[0] "Non mi piace"
+msgstr[1] "Non mi piace"
-#: ../../include/plugin.php:502 ../../include/plugin.php:504
-msgid "Click here to upgrade."
-msgstr "Clicca qui per aggiornare."
+#: ../../include/ItemObject.php:179
+msgid "Add Star"
+msgstr "Aggiungi ai preferiti"
-#: ../../include/plugin.php:510
-msgid "This action exceeds the limits set by your subscription plan."
-msgstr "Questa operazione esce dai termini del tuo abbonamento."
+#: ../../include/ItemObject.php:180
+msgid "Remove Star"
+msgstr "Rimuovi dai preferiti"
-#: ../../include/plugin.php:515
-msgid "This action is not available under your subscription plan."
-msgstr "Questa operazione non è prevista dal tuo abbonamento."
+#: ../../include/ItemObject.php:181
+msgid "Toggle Star Status"
+msgstr "Attiva/disattiva preferito"
+
+#: ../../include/ItemObject.php:185
+msgid "starred"
+msgstr "preferito"
+
+#: ../../include/ItemObject.php:203
+msgid "Add Tag"
+msgstr "Aggiungi un tag"
+
+#: ../../include/ItemObject.php:221 ../../mod/photos.php:975
+msgid "I like this (toggle)"
+msgstr "Attiva/disattiva Mi piace"
+
+#: ../../include/ItemObject.php:222 ../../mod/photos.php:976
+msgid "I don't like this (toggle)"
+msgstr "Attiva/disattiva Non mi piace"
+
+#: ../../include/ItemObject.php:226
+msgid "Share This"
+msgstr "Condividi"
+
+#: ../../include/ItemObject.php:226
+msgid "share"
+msgstr "condividi"
+
+#: ../../include/ItemObject.php:243
+#, php-format
+msgid "%d comment"
+msgid_plural "%d comments"
+msgstr[0] "%d commento"
+msgstr[1] "%d commenti"
+
+#: ../../include/ItemObject.php:256 ../../include/ItemObject.php:257
+#, php-format
+msgid "View %s's profile - %s"
+msgstr "Guarda il profilo di %s - %s"
+
+#: ../../include/ItemObject.php:260
+msgid "to"
+msgstr "a"
+
+#: ../../include/ItemObject.php:261
+msgid "via"
+msgstr "via"
+
+#: ../../include/ItemObject.php:262
+msgid "Wall-to-Wall"
+msgstr "Da bacheca a bacheca"
+
+#: ../../include/ItemObject.php:263
+msgid "via Wall-To-Wall:"
+msgstr "da bacheca a bacheca:"
+
+#: ../../include/ItemObject.php:299
+msgid "Save Bookmarks"
+msgstr "Salva segnalibro"
+
+#: ../../include/ItemObject.php:300
+msgid "Add to Calendar"
+msgstr "Aggiungi al calendario"
+
+#: ../../include/ItemObject.php:309
+msgid "Mark all seen"
+msgstr "Marca tutto come letto"
-#: ../../mod/post.php:226
+#: ../../include/ItemObject.php:314 ../../mod/photos.php:1143
+msgctxt "noun"
+msgid "Likes"
+msgstr "Mi piace"
+
+#: ../../include/ItemObject.php:315 ../../mod/photos.php:1144
+msgctxt "noun"
+msgid "Dislikes"
+msgstr "Non mi piace"
+
+#: ../../include/ItemObject.php:345 ../../include/js_strings.php:7
+msgid "[+] show all"
+msgstr "[+] mostra tutto"
+
+#: ../../include/ItemObject.php:626 ../../mod/photos.php:994
+#: ../../mod/photos.php:1104
+msgid "This is you"
+msgstr "Questo sei tu"
+
+#: ../../include/ItemObject.php:628 ../../include/js_strings.php:6
+#: ../../mod/photos.php:996 ../../mod/photos.php:1106
+msgid "Comment"
+msgstr "Commento"
+
+#: ../../include/ItemObject.php:629 ../../mod/mood.php:135
+#: ../../mod/settings.php:565 ../../mod/settings.php:677
+#: ../../mod/settings.php:706 ../../mod/settings.php:730
+#: ../../mod/settings.php:812 ../../mod/settings.php:1004
+#: ../../mod/group.php:81 ../../mod/poke.php:166 ../../mod/setup.php:313
+#: ../../mod/setup.php:358 ../../mod/sources.php:104 ../../mod/sources.php:138
+#: ../../mod/events.php:598 ../../mod/chat.php:177 ../../mod/chat.php:211
+#: ../../mod/connedit.php:556 ../../mod/mail.php:352 ../../mod/photos.php:594
+#: ../../mod/photos.php:671 ../../mod/photos.php:957 ../../mod/photos.php:997
+#: ../../mod/photos.php:1107 ../../mod/pdledit.php:58 ../../mod/thing.php:284
+#: ../../mod/thing.php:327 ../../mod/fsuggest.php:108
+#: ../../mod/filestorage.php:146 ../../mod/connect.php:93
+#: ../../mod/locs.php:99 ../../mod/import.php:504 ../../mod/profiles.php:633
+#: ../../mod/admin.php:412 ../../mod/admin.php:723 ../../mod/admin.php:859
+#: ../../mod/admin.php:992 ../../mod/admin.php:1191 ../../mod/admin.php:1278
+#: ../../mod/invite.php:142 ../../mod/xchan.php:11 ../../mod/appman.php:99
+#: ../../mod/poll.php:68 ../../view/theme/apw/php/config.php:256
+#: ../../view/theme/redbasic/php/config.php:99
+msgid "Submit"
+msgstr "Salva"
+
+#: ../../include/ItemObject.php:630
+msgid "Bold"
+msgstr "Grassetto"
+
+#: ../../include/ItemObject.php:631
+msgid "Italic"
+msgstr "Corsivo"
+
+#: ../../include/ItemObject.php:632
+msgid "Underline"
+msgstr "Sottolineato"
+
+#: ../../include/ItemObject.php:633
+msgid "Quote"
+msgstr "Citazione"
+
+#: ../../include/ItemObject.php:634
+msgid "Code"
+msgstr "Codice"
+
+#: ../../include/ItemObject.php:635
+msgid "Image"
+msgstr "Immagine"
+
+#: ../../include/ItemObject.php:636
+msgid "Link"
+msgstr "Link"
+
+#: ../../include/ItemObject.php:637
+msgid "Video"
+msgstr "Video"
+
+#: ../../include/datetime.php:43 ../../include/datetime.php:45
+msgid "Miscellaneous"
+msgstr "Altro"
+
+#: ../../include/datetime.php:142
+msgid "YYYY-MM-DD or MM-DD"
+msgstr "AAAA-MM-GG oppure MM-GG"
+
+#: ../../include/datetime.php:259
+msgid "never"
+msgstr "mai"
+
+#: ../../include/datetime.php:265
+msgid "less than a second ago"
+msgstr "meno di un secondo fa"
+
+#: ../../include/datetime.php:268
+msgid "year"
+msgstr "anno"
+
+#: ../../include/datetime.php:268
+msgid "years"
+msgstr "anni"
+
+#: ../../include/datetime.php:269
+msgid "month"
+msgstr "mese"
+
+#: ../../include/datetime.php:269
+msgid "months"
+msgstr "mesi"
+
+#: ../../include/datetime.php:270
+msgid "week"
+msgstr "settimana"
+
+#: ../../include/datetime.php:270
+msgid "weeks"
+msgstr "settimane"
+
+#: ../../include/datetime.php:271
+msgid "day"
+msgstr "giorno"
+
+#: ../../include/datetime.php:271
+msgid "days"
+msgstr "giorni"
+
+#: ../../include/datetime.php:272
+msgid "hour"
+msgstr "ora"
+
+#: ../../include/datetime.php:272
+msgid "hours"
+msgstr "ore"
+
+#: ../../include/datetime.php:273
+msgid "minute"
+msgstr "minuto"
+
+#: ../../include/datetime.php:273
+msgid "minutes"
+msgstr "minuti"
+
+#: ../../include/datetime.php:274
+msgid "second"
+msgstr "secondo"
+
+#: ../../include/datetime.php:274
+msgid "seconds"
+msgstr "secondi"
+
+#: ../../include/datetime.php:283
+#, php-format
+msgid "%1$d %2$s ago"
+msgstr "%1$d %2$s fa"
+
+#: ../../include/datetime.php:491
+#, php-format
+msgid "%1$s's birthday"
+msgstr "Compleanno di %1$s"
+
+#: ../../include/datetime.php:492
+#, php-format
+msgid "Happy Birthday %1$s"
+msgstr "Buon compleanno %1$s"
+
+#: ../../include/apps.php:128
+msgid "Site Admin"
+msgstr "Amministrazione sito"
+
+#: ../../include/apps.php:130
+msgid "Address Book"
+msgstr "Rubrica"
+
+#: ../../include/apps.php:131 ../../include/nav.php:125 ../../boot.php:1540
+msgid "Login"
+msgstr "Accedi"
+
+#: ../../include/apps.php:132 ../../include/nav.php:216
+#: ../../mod/manage.php:148
+msgid "Channel Manager"
+msgstr "Gestione canali"
+
+#: ../../include/apps.php:133 ../../include/nav.php:190
+msgid "Matrix"
+msgstr "RedMatrix"
+
+#: ../../include/apps.php:137 ../../include/nav.php:193
+msgid "Channel Home"
+msgstr "Bacheca del canale"
+
+#: ../../include/apps.php:140 ../../include/nav.php:212
+#: ../../mod/events.php:442
+msgid "Events"
+msgstr "Eventi"
+
+#: ../../include/apps.php:141 ../../include/nav.php:176
+#: ../../mod/directory.php:321
+msgid "Directory"
+msgstr "Elenco pubblico"
+
+#: ../../include/apps.php:142 ../../include/nav.php:168 ../../mod/help.php:58
+#: ../../mod/help.php:63
+msgid "Help"
+msgstr "Guida"
+
+#: ../../include/apps.php:143 ../../include/nav.php:204
+msgid "Mail"
+msgstr "Messaggi"
+
+#: ../../include/apps.php:144 ../../mod/mood.php:131
+msgid "Mood"
+msgstr "Umore"
+
+#: ../../include/apps.php:146 ../../include/nav.php:111
+msgid "Chat"
+msgstr "Area chat"
+
+#: ../../include/apps.php:148
+msgid "Probe"
+msgstr "Diagnostica"
+
+#: ../../include/apps.php:149
+msgid "Suggest"
+msgstr "Suggerisci"
+
+#: ../../include/apps.php:150
+msgid "Random Channel"
+msgstr "Canale casuale"
+
+#: ../../include/apps.php:151
+msgid "Invite"
+msgstr "Invita"
+
+#: ../../include/apps.php:152
+msgid "Features"
+msgstr "Funzionalità"
+
+#: ../../include/apps.php:153
+msgid "Language"
+msgstr "Lingua"
+
+#: ../../include/apps.php:154
+msgid "Post"
+msgstr "Articolo"
+
+#: ../../include/apps.php:155
+msgid "Profile Photo"
+msgstr "Foto del profilo"
+
+#: ../../include/apps.php:247 ../../mod/settings.php:81
+#: ../../mod/settings.php:591
+msgid "Update"
+msgstr "Aggiorna"
+
+#: ../../include/apps.php:247
+msgid "Install"
+msgstr "Installa"
+
+#: ../../include/apps.php:252
+msgid "Purchase"
+msgstr "Acquista"
+
+#: ../../include/Contact.php:123
+msgid "New window"
+msgstr "Nuova finestra"
+
+#: ../../include/Contact.php:124
+msgid "Open the selected location in a different window or browser tab"
+msgstr "Apri l'indirizzo selezionato in una nuova scheda o finestra"
+
+#: ../../include/Contact.php:214 ../../mod/admin.php:646
+#, php-format
+msgid "User '%s' deleted"
+msgstr "Utente '%s' eliminato"
+
+#: ../../include/js_strings.php:5
+msgid "Delete this item?"
+msgstr "Eliminare questo elemento?"
+
+#: ../../include/js_strings.php:8
+msgid "[-] show less"
+msgstr "[-] riduci"
+
+#: ../../include/js_strings.php:9
+msgid "[+] expand"
+msgstr "[+] mostra tutto"
+
+#: ../../include/js_strings.php:10
+msgid "[-] collapse"
+msgstr "[-] riduci"
+
+#: ../../include/js_strings.php:11
+msgid "Password too short"
+msgstr "Password troppo corta"
+
+#: ../../include/js_strings.php:12
+msgid "Passwords do not match"
+msgstr "Le password non corrispondono"
+
+#: ../../include/js_strings.php:13 ../../mod/photos.php:39
+msgid "everybody"
+msgstr "tutti"
+
+#: ../../include/js_strings.php:14
+msgid "Secret Passphrase"
+msgstr "Chiave segreta"
+
+#: ../../include/js_strings.php:15
+msgid "Passphrase hint"
+msgstr "Suggerimento per la chiave segreta"
+
+#: ../../include/js_strings.php:16
+msgid "Notice: Permissions have changed but have not yet been submitted."
+msgstr "Nota: i permessi sono stati modificati ma non ancora salvati."
+
+#: ../../include/js_strings.php:17
+msgid "close all"
+msgstr "chiudi tutto"
+
+#: ../../include/js_strings.php:18
+msgid "Nothing new here"
+msgstr "Niente di nuovo qui"
+
+#: ../../include/js_strings.php:20
+msgid "timeago.prefixAgo"
+msgstr "timeago.prefixAgo"
+
+#: ../../include/js_strings.php:21
+msgid "timeago.prefixFromNow"
+msgstr "timeago.prefixFromNow"
+
+#: ../../include/js_strings.php:22
+msgid "ago"
+msgstr "fa"
+
+#: ../../include/js_strings.php:23
+msgid "from now"
+msgstr "da adesso"
+
+#: ../../include/js_strings.php:24
+msgid "less than a minute"
+msgstr "meno di un minuto"
+
+#: ../../include/js_strings.php:25
+msgid "about a minute"
+msgstr "circa un minuto"
+
+#: ../../include/js_strings.php:26
+#, php-format
+msgid "%d minutes"
+msgstr "%d minuti"
+
+#: ../../include/js_strings.php:27
+msgid "about an hour"
+msgstr "circa un’ora"
+
+#: ../../include/js_strings.php:28
+#, php-format
+msgid "about %d hours"
+msgstr "circa %d ore"
+
+#: ../../include/js_strings.php:29
+msgid "a day"
+msgstr "un giorno"
+
+#: ../../include/js_strings.php:30
+#, php-format
+msgid "%d days"
+msgstr "%d giorni"
+
+#: ../../include/js_strings.php:31
+msgid "about a month"
+msgstr "circa un mese"
+
+#: ../../include/js_strings.php:32
+#, php-format
+msgid "%d months"
+msgstr "%d mesi"
+
+#: ../../include/js_strings.php:33
+msgid "about a year"
+msgstr "circa un anno"
+
+#: ../../include/js_strings.php:34
+#, php-format
+msgid "%d years"
+msgstr "%d anni"
+
+#: ../../include/js_strings.php:35
+msgid " "
+msgstr " "
+
+#: ../../include/js_strings.php:36
+msgid "timeago.numbers"
+msgstr "timeago.numbers"
+
+#: ../../include/profile_selectors.php:6
+#: ../../include/profile_selectors.php:23
+msgid "Male"
+msgstr "Maschio"
+
+#: ../../include/profile_selectors.php:6
+#: ../../include/profile_selectors.php:23
+msgid "Female"
+msgstr "Femmina"
+
+#: ../../include/profile_selectors.php:6
+msgid "Currently Male"
+msgstr "Al momento maschio"
+
+#: ../../include/profile_selectors.php:6
+msgid "Currently Female"
+msgstr "Al momento femmina"
+
+#: ../../include/profile_selectors.php:6
+msgid "Mostly Male"
+msgstr "Prevalentemente maschio"
+
+#: ../../include/profile_selectors.php:6
+msgid "Mostly Female"
+msgstr "Prevalentemente femmina"
+
+#: ../../include/profile_selectors.php:6
+msgid "Transgender"
+msgstr "Transgender"
+
+#: ../../include/profile_selectors.php:6
+msgid "Intersex"
+msgstr "Intersex"
+
+#: ../../include/profile_selectors.php:6
+msgid "Transsexual"
+msgstr "Transessuale"
+
+#: ../../include/profile_selectors.php:6
+msgid "Hermaphrodite"
+msgstr "Ermafrodito"
+
+#: ../../include/profile_selectors.php:6
+msgid "Neuter"
+msgstr "Neutro"
+
+#: ../../include/profile_selectors.php:6
+msgid "Non-specific"
+msgstr "Non specificato"
+
+#: ../../include/profile_selectors.php:6
+msgid "Undecided"
+msgstr "Indeciso"
+
+#: ../../include/profile_selectors.php:42
+#: ../../include/profile_selectors.php:61
+msgid "Males"
+msgstr "Maschi"
+
+#: ../../include/profile_selectors.php:42
+#: ../../include/profile_selectors.php:61
+msgid "Females"
+msgstr "Femmine"
+
+#: ../../include/profile_selectors.php:42
+msgid "Gay"
+msgstr "Gay"
+
+#: ../../include/profile_selectors.php:42
+msgid "Lesbian"
+msgstr "Lesbica"
+
+#: ../../include/profile_selectors.php:42
+msgid "No Preference"
+msgstr "Senza preferenza"
+
+#: ../../include/profile_selectors.php:42
+msgid "Bisexual"
+msgstr "Bisessuale"
+
+#: ../../include/profile_selectors.php:42
+msgid "Autosexual"
+msgstr "Autosessuale"
+
+#: ../../include/profile_selectors.php:42
+msgid "Abstinent"
+msgstr "Astinente"
+
+#: ../../include/profile_selectors.php:42
+msgid "Virgin"
+msgstr "Vergine"
+
+#: ../../include/profile_selectors.php:42
+msgid "Deviant"
+msgstr "Deviato"
+
+#: ../../include/profile_selectors.php:42
+msgid "Fetish"
+msgstr "Feticista"
+
+#: ../../include/profile_selectors.php:42
+msgid "Oodles"
+msgstr "Un sacco"
+
+#: ../../include/profile_selectors.php:42
+msgid "Nonsexual"
+msgstr "Asessuato"
+
+#: ../../include/profile_selectors.php:80
+#: ../../include/profile_selectors.php:97
+msgid "Single"
+msgstr "Single"
+
+#: ../../include/profile_selectors.php:80
+msgid "Lonely"
+msgstr "Da solo"
+
+#: ../../include/profile_selectors.php:80
+msgid "Available"
+msgstr "Disponibile"
+
+#: ../../include/profile_selectors.php:80
+msgid "Unavailable"
+msgstr "Non disponibile"
+
+#: ../../include/profile_selectors.php:80
+msgid "Has crush"
+msgstr "Ha una cotta"
+
+#: ../../include/profile_selectors.php:80
+msgid "Infatuated"
+msgstr "Infatuato/a"
+
+#: ../../include/profile_selectors.php:80
+#: ../../include/profile_selectors.php:97
+msgid "Dating"
+msgstr "Disponibile a un incontro"
+
+#: ../../include/profile_selectors.php:80
+msgid "Unfaithful"
+msgstr "Infedele"
+
+#: ../../include/profile_selectors.php:80
+msgid "Sex Addict"
+msgstr "Sesso-dipendente"
+
+#: ../../include/profile_selectors.php:80
+msgid "Friends/Benefits"
+msgstr "Amici con qualcosa in più"
+
+#: ../../include/profile_selectors.php:80
+msgid "Casual"
+msgstr "Casual"
+
+#: ../../include/profile_selectors.php:80
+msgid "Engaged"
+msgstr "Impegnato"
+
+#: ../../include/profile_selectors.php:80
+#: ../../include/profile_selectors.php:97
+msgid "Married"
+msgstr "Sposato/a"
+
+#: ../../include/profile_selectors.php:80
+msgid "Imaginarily married"
+msgstr "Con matrimonio immaginario"
+
+#: ../../include/profile_selectors.php:80
+msgid "Partners"
+msgstr "Partner"
+
+#: ../../include/profile_selectors.php:80
+#: ../../include/profile_selectors.php:97
+msgid "Cohabiting"
+msgstr "Convivente"
+
+#: ../../include/profile_selectors.php:80
+msgid "Common law"
+msgstr "Matrimonio regolare"
+
+#: ../../include/profile_selectors.php:80
+msgid "Happy"
+msgstr "Felice"
+
+#: ../../include/profile_selectors.php:80
+msgid "Not looking"
+msgstr "Non in cerca"
+
+#: ../../include/profile_selectors.php:80
+msgid "Swinger"
+msgstr "Scambista"
+
+#: ../../include/profile_selectors.php:80
+msgid "Betrayed"
+msgstr "Tradito/a"
+
+#: ../../include/profile_selectors.php:80
+#: ../../include/profile_selectors.php:97
+msgid "Separated"
+msgstr "Separato/a"
+
+#: ../../include/profile_selectors.php:80
+msgid "Unstable"
+msgstr "Instabile"
+
+#: ../../include/profile_selectors.php:80
+#: ../../include/profile_selectors.php:97
+msgid "Divorced"
+msgstr "Divorziato/a"
+
+#: ../../include/profile_selectors.php:80
+msgid "Imaginarily divorced"
+msgstr "Sogna il divorzio"
+
+#: ../../include/profile_selectors.php:80
+#: ../../include/profile_selectors.php:97
+msgid "Widowed"
+msgstr "Vedovo/a"
+
+#: ../../include/profile_selectors.php:80
+msgid "Uncertain"
+msgstr "Incerto/a"
+
+#: ../../include/profile_selectors.php:80
+#: ../../include/profile_selectors.php:97
+msgid "It's complicated"
+msgstr "Relazione complicata"
+
+#: ../../include/profile_selectors.php:80
+msgid "Don't care"
+msgstr "Chi se ne frega"
+
+#: ../../include/profile_selectors.php:80
+msgid "Ask me"
+msgstr "Chiedimelo"
+
+#: ../../include/nav.php:95 ../../include/nav.php:128 ../../boot.php:1539
+msgid "Logout"
+msgstr "Esci"
+
+#: ../../include/nav.php:95 ../../include/nav.php:128
+msgid "End this session"
+msgstr "Chiudi questa sessione"
+
+#: ../../include/nav.php:98 ../../include/nav.php:159
+msgid "Home"
+msgstr "Bacheca"
+
+#: ../../include/nav.php:98
+msgid "Your posts and conversations"
+msgstr "I tuoi articoli e conversazioni"
+
+#: ../../include/nav.php:99
+msgid "Your profile page"
+msgstr "Il tuo profilo"
+
+#: ../../include/nav.php:101
+msgid "Edit Profiles"
+msgstr "Modifica i profili"
+
+#: ../../include/nav.php:101
+msgid "Manage/Edit profiles"
+msgstr "Gestisci/modifica i profili"
+
+#: ../../include/nav.php:103
+msgid "Edit your profile"
+msgstr "Modifica il profilo"
+
+#: ../../include/nav.php:105
+msgid "Your photos"
+msgstr "Le tue foto"
+
+#: ../../include/nav.php:106
+msgid "Your files"
+msgstr "I tuoi file"
+
+#: ../../include/nav.php:111
+msgid "Your chatrooms"
+msgstr "Le tue aree chat"
+
+#: ../../include/nav.php:117
+msgid "Your bookmarks"
+msgstr "I tuoi segnalibri"
+
+#: ../../include/nav.php:121
+msgid "Your webpages"
+msgstr "Le tue pagine web"
+
+#: ../../include/nav.php:125
+msgid "Sign in"
+msgstr "Accedi"
+
+#: ../../include/nav.php:142
+#, php-format
+msgid "%s - click to logout"
+msgstr "%s - clicca per uscire"
+
+#: ../../include/nav.php:145
+msgid "Remote authentication"
+msgstr "Autenticazione magica dal tuo server"
+
+#: ../../include/nav.php:145
+msgid "Click to authenticate to your home hub"
+msgstr "Clicca per autenticarti sul tuo server principale"
+
+#: ../../include/nav.php:159
+msgid "Home Page"
+msgstr "Bacheca"
+
+#: ../../include/nav.php:163 ../../mod/register.php:224 ../../boot.php:1516
+msgid "Register"
+msgstr "Iscriviti"
+
+#: ../../include/nav.php:163
+msgid "Create an account"
+msgstr "Crea un account"
+
+#: ../../include/nav.php:168
+msgid "Help and documentation"
+msgstr "Guida e documentazione"
+
+#: ../../include/nav.php:171
+msgid "Applications, utilities, links, games"
+msgstr "Applicazioni, utilità, link, giochi"
+
+#: ../../include/nav.php:173
+msgid "Search site content"
+msgstr "Cerca nel sito"
+
+#: ../../include/nav.php:176
+msgid "Channel Directory"
+msgstr "Elenco pubblico canali"
+
+#: ../../include/nav.php:190
+msgid "Your matrix"
+msgstr "La tua rete"
+
+#: ../../include/nav.php:191
+msgid "Mark all matrix notifications seen"
+msgstr "Segna come lette le notifiche della tua rete"
+
+#: ../../include/nav.php:193
+msgid "Channel home"
+msgstr "Bacheca del canale"
+
+#: ../../include/nav.php:194
+msgid "Mark all channel notifications seen"
+msgstr "Segna come lette le notifiche del canale"
+
+#: ../../include/nav.php:197 ../../mod/connections.php:406
+msgid "Connections"
+msgstr "Contatti"
+
+#: ../../include/nav.php:200
+msgid "Notices"
+msgstr "Avvisi"
+
+#: ../../include/nav.php:200
+msgid "Notifications"
+msgstr "Notifiche"
+
+#: ../../include/nav.php:201
+msgid "See all notifications"
+msgstr "Vedi tutte le notifiche"
+
+#: ../../include/nav.php:202 ../../mod/notifications.php:99
+msgid "Mark all system notifications seen"
+msgstr "Segna come lette le notifiche di sistema"
+
+#: ../../include/nav.php:204
+msgid "Private mail"
+msgstr "Messaggi privati"
+
+#: ../../include/nav.php:205
+msgid "See all private messages"
+msgstr "Guarda tutti i messaggi privati"
+
+#: ../../include/nav.php:206
+msgid "Mark all private messages seen"
+msgstr "Segna come letti tutti i messaggi privati"
+
+#: ../../include/nav.php:207
+msgid "Inbox"
+msgstr "In arrivo"
+
+#: ../../include/nav.php:208
+msgid "Outbox"
+msgstr "Inviati"
+
+#: ../../include/nav.php:212
+msgid "Event Calendar"
+msgstr "Calendario"
+
+#: ../../include/nav.php:213
+msgid "See all events"
+msgstr "Guarda tutti gli eventi"
+
+#: ../../include/nav.php:214
+msgid "Mark all events seen"
+msgstr "Marca come letti tutti gli eventi"
+
+#: ../../include/nav.php:216
+msgid "Manage Your Channels"
+msgstr "Gestisci i tuoi canali"
+
+#: ../../include/nav.php:218
+msgid "Account/Channel Settings"
+msgstr "Impostazioni dell'account e del canale"
+
+#: ../../include/nav.php:226 ../../mod/admin.php:123
+msgid "Admin"
+msgstr "Amministrazione"
+
+#: ../../include/nav.php:226
+msgid "Site Setup and Configuration"
+msgstr "Installazione e configurazione del sito"
+
+#: ../../include/nav.php:262
+msgid "@name, #tag, content"
+msgstr "@nome, #tag, testo"
+
+#: ../../include/nav.php:263
+msgid "Please wait..."
+msgstr "Attendere..."
+
+#: ../../include/security.php:357
msgid ""
-"Remote authentication blocked. You are logged into this site locally. Please"
-" logout and retry."
-msgstr "L'autenticazione remota non è disponibile. Hai accesso solamente a questo sito. Puoi provare ad uscire per tentare di nuovo."
+"The form security token was not correct. This probably happened because the "
+"form has been opened for too long (>3 hours) before submitting it."
+msgstr "I controlli di sicurezza sono falliti. Probabilmente è accaduto perché la pagina è stata tenuta aperta troppo a lungo (ore?) prima di inviare il contenuto."
+
+#: ../../mod/mood.php:132
+msgid "Set your current mood and tell your friends"
+msgstr "Scegli il tuo umore attuale per mostrarlo agli amici"
-#: ../../mod/post.php:257 ../../mod/openid.php:72 ../../mod/openid.php:178
+#: ../../mod/register.php:44
+msgid "Maximum daily site registrations exceeded. Please try again tomorrow."
+msgstr "È stato superato il numero massimo giornaliero di registrazioni a questo sito. Riprova domani!"
+
+#: ../../mod/register.php:50
+msgid ""
+"Please indicate acceptance of the Terms of Service. Registration failed."
+msgstr "Impossibile proseguire. Devi prima accettare le Condizioni d'Uso del servizio."
+
+#: ../../mod/register.php:84
+msgid "Passwords do not match."
+msgstr "Le password non corrispondono."
+
+#: ../../mod/register.php:117
+msgid ""
+"Registration successful. Please check your email for validation "
+"instructions."
+msgstr "La registrazione è terminata correttamente. Per continuare controlla l'email che ti è stata inviata."
+
+#: ../../mod/register.php:123
+msgid "Your registration is pending approval by the site owner."
+msgstr "La tua richiesta è in attesa di approvazione da parte dell'amministratore del sito."
+
+#: ../../mod/register.php:126
+msgid "Your registration can not be processed."
+msgstr "La tua registrazione non puo' essere processata."
+
+#: ../../mod/register.php:163
+msgid "Registration on this site/hub is by approval only."
+msgstr "La registrazione su questo sito è soggetta ad approvazione."
+
+#: ../../mod/register.php:164
+msgid "<a href=\"pubsites\">Register at another affiliated site/hub</a>"
+msgstr "<a href=\"pubsites\">Registrati su un altro server affiliato</a>"
+
+#: ../../mod/register.php:174
+msgid ""
+"This site has exceeded the number of allowed daily account registrations. "
+"Please try again tomorrow."
+msgstr "Questo sito ha superato il numero di registrazioni giornaliere consentite. Prova di nuovo domani."
+
+#: ../../mod/register.php:185
+msgid "Terms of Service"
+msgstr "Condizioni d'Uso"
+
+#: ../../mod/register.php:191
#, php-format
-msgid "Welcome %s. Remote authentication successful."
-msgstr "Ciao %s. La tua autenticazione da remoto è avvenuta con successo."
+msgid "I accept the %s for this website"
+msgstr "Accetto le %s di questo sito"
+
+#: ../../mod/register.php:193
+#, php-format
+msgid "I am over 13 years of age and accept the %s for this website"
+msgstr "Ho più di 13 anni e accetto le %s di questo sito"
+
+#: ../../mod/register.php:207 ../../mod/admin.php:413
+msgid "Registration"
+msgstr "Registrazione"
+
+#: ../../mod/register.php:212
+msgid "Membership on this site is by invitation only."
+msgstr "Per registrarsi su questo sito è necessario un invito."
+
+#: ../../mod/register.php:213
+msgid "Please enter your invitation code"
+msgstr "Inserisci il codice dell'invito"
+
+#: ../../mod/register.php:216
+msgid "Your email address"
+msgstr "Il tuo indirizzo email"
+
+#: ../../mod/register.php:217
+msgid "Choose a password"
+msgstr "Scegli una password"
+
+#: ../../mod/register.php:218
+msgid "Please re-enter your password"
+msgstr "Ripeti la password per verifica"
+
+#: ../../mod/mitem.php:24 ../../mod/menu.php:108
+msgid "Menu not found."
+msgstr "Menù non trovato."
+
+#: ../../mod/mitem.php:67
+msgid "Menu element updated."
+msgstr "L'elemento del menù è stato aggiornato."
+
+#: ../../mod/mitem.php:71
+msgid "Unable to update menu element."
+msgstr "Non è possibile aggiornare l'elemento del menù."
+
+#: ../../mod/mitem.php:77
+msgid "Menu element added."
+msgstr "Elemento aggiunto al menù."
+
+#: ../../mod/mitem.php:81
+msgid "Unable to add menu element."
+msgstr "Impossibile aggiungere l'elemento al menù."
+
+#: ../../mod/mitem.php:111 ../../mod/menu.php:136 ../../mod/xchan.php:37
+msgid "Not found."
+msgstr "Non trovato."
+
+#: ../../mod/mitem.php:127
+msgid "Manage Menu Elements"
+msgstr "Gestione elementi del menù"
+
+#: ../../mod/mitem.php:130
+msgid "Edit menu"
+msgstr "Modifica il menù"
+
+#: ../../mod/mitem.php:133
+msgid "Edit element"
+msgstr "Modifica l'elemento"
+
+#: ../../mod/mitem.php:134
+msgid "Drop element"
+msgstr "Elimina l'elemento"
+
+#: ../../mod/mitem.php:135
+msgid "New element"
+msgstr "Nuovo elemento"
+
+#: ../../mod/mitem.php:136
+msgid "Edit this menu container"
+msgstr "Modifica il contenitore del menù"
+
+#: ../../mod/mitem.php:137
+msgid "Add menu element"
+msgstr "Aggiungi un elemento al menù"
+
+#: ../../mod/mitem.php:138
+msgid "Delete this menu item"
+msgstr "Elimina questo elemento del menù"
+
+#: ../../mod/mitem.php:139
+msgid "Edit this menu item"
+msgstr "Modifica questo elemento del menù"
+
+#: ../../mod/mitem.php:158
+msgid "New Menu Element"
+msgstr "Nuovo elemento del menù"
+
+#: ../../mod/mitem.php:160 ../../mod/mitem.php:203
+msgid "Menu Item Permissions"
+msgstr "Permessi del menu"
+
+#: ../../mod/mitem.php:161 ../../mod/mitem.php:204 ../../mod/settings.php:1039
+msgid "(click to open/close)"
+msgstr "(clicca per aprire/chiudere)"
+
+#: ../../mod/mitem.php:163 ../../mod/mitem.php:207
+msgid "Link text"
+msgstr "Testo del link"
+
+#: ../../mod/mitem.php:164 ../../mod/mitem.php:208
+msgid "URL of link"
+msgstr "Indirizzo del link"
+
+#: ../../mod/mitem.php:165 ../../mod/mitem.php:209
+msgid "Use RedMatrix magic-auth if available"
+msgstr "Usa l'autenticazione magica di RedMatrix, se disponibile"
+
+#: ../../mod/mitem.php:166 ../../mod/mitem.php:210
+msgid "Open link in new window"
+msgstr "Apri il link in una nuova finestra"
+
+#: ../../mod/mitem.php:168 ../../mod/mitem.php:212
+msgid "Order in list"
+msgstr "Ordine dell'elenco"
+
+#: ../../mod/mitem.php:168 ../../mod/mitem.php:212
+msgid "Higher numbers will sink to bottom of listing"
+msgstr "I numeri più alti andranno in fondo all'elenco"
+
+#: ../../mod/mitem.php:181
+msgid "Menu item not found."
+msgstr "L'elemento del menù non è stato trovato."
+
+#: ../../mod/mitem.php:190
+msgid "Menu item deleted."
+msgstr "L'elemento del menù è stato eliminato."
+
+#: ../../mod/mitem.php:192
+msgid "Menu item could not be deleted."
+msgstr "L'elemento del menù non può essere eliminato."
-#: ../../mod/settings.php:71
+#: ../../mod/mitem.php:201
+msgid "Edit Menu Element"
+msgstr "Modifica l'elemento del menù"
+
+#: ../../mod/mitem.php:213 ../../mod/menu.php:130
+msgid "Modify"
+msgstr "Modifica"
+
+#: ../../mod/achievements.php:34
+msgid "Some blurb about what to do when you're new here"
+msgstr "Qualche suggerimento per i nuovi utenti su cosa fare"
+
+#: ../../mod/settings.php:73
msgid "Name is required"
msgstr "Il nome è obbligatorio"
-#: ../../mod/settings.php:75
+#: ../../mod/settings.php:77
msgid "Key and Secret are required"
-msgstr "Chiave e Segreto sono richiesti"
+msgstr "Key e Secret sono richiesti"
-#: ../../mod/settings.php:195
+#: ../../mod/settings.php:213
msgid "Passwords do not match. Password unchanged."
msgstr "Le password non corrispondono. Password non cambiata."
-#: ../../mod/settings.php:199
+#: ../../mod/settings.php:217
msgid "Empty passwords are not allowed. Password unchanged."
msgstr "Le password non possono essere vuote. Password non cambiata."
-#: ../../mod/settings.php:212
+#: ../../mod/settings.php:231
msgid "Password changed."
msgstr "Password cambiata."
-#: ../../mod/settings.php:214
+#: ../../mod/settings.php:233
msgid "Password update failed. Please try again."
-msgstr "Aggiornamento password fallito. Prova ancora."
+msgstr "Modifica password fallita. Prova ancora."
-#: ../../mod/settings.php:228
+#: ../../mod/settings.php:247
msgid "Not valid email."
msgstr "Email non valida."
-#: ../../mod/settings.php:231
+#: ../../mod/settings.php:250
msgid "Protected email address. Cannot change to that email."
msgstr "È un indirizzo email riservato. Non puoi sceglierlo."
-#: ../../mod/settings.php:240
+#: ../../mod/settings.php:259
msgid "System failure storing new email. Please try again."
msgstr "Errore di sistema. Non è stato possibile memorizzare il tuo messaggio, riprova per favore."
-#: ../../mod/settings.php:443
+#: ../../mod/settings.php:495
msgid "Settings updated."
msgstr "Impostazioni aggiornate."
-#: ../../mod/settings.php:514 ../../mod/settings.php:540
-#: ../../mod/settings.php:576
+#: ../../mod/settings.php:564 ../../mod/settings.php:590
+#: ../../mod/settings.php:626
msgid "Add application"
msgstr "Aggiungi una app"
-#: ../../mod/settings.php:517
+#: ../../mod/settings.php:567
msgid "Name of application"
msgstr "Nome dell'applicazione"
-#: ../../mod/settings.php:518 ../../mod/settings.php:544
+#: ../../mod/settings.php:568 ../../mod/settings.php:594
msgid "Consumer Key"
msgstr "Consumer Key"
-#: ../../mod/settings.php:518 ../../mod/settings.php:519
+#: ../../mod/settings.php:568 ../../mod/settings.php:569
msgid "Automatically generated - change if desired. Max length 20"
msgstr "Generato automaticamente - è possibile cambiarlo. Lunghezza massima 20"
-#: ../../mod/settings.php:519 ../../mod/settings.php:545
+#: ../../mod/settings.php:569 ../../mod/settings.php:595
msgid "Consumer Secret"
msgstr "Consumer Secret"
-#: ../../mod/settings.php:520 ../../mod/settings.php:546
+#: ../../mod/settings.php:570 ../../mod/settings.php:596
msgid "Redirect"
msgstr "Redirect"
-#: ../../mod/settings.php:520
+#: ../../mod/settings.php:570
msgid ""
"Redirect URI - leave blank unless your application specifically requires "
"this"
msgstr "URI ridirezionato - lasciare bianco se non richiesto specificamente dall'applicazione."
-#: ../../mod/settings.php:521 ../../mod/settings.php:547
+#: ../../mod/settings.php:571 ../../mod/settings.php:597
msgid "Icon url"
msgstr "Url icona"
-#: ../../mod/settings.php:521
+#: ../../mod/settings.php:571
msgid "Optional"
msgstr "Opzionale"
-#: ../../mod/settings.php:532
+#: ../../mod/settings.php:582
msgid "You can't edit this application."
msgstr "Non puoi modificare questa applicazione."
-#: ../../mod/settings.php:575
+#: ../../mod/settings.php:625
msgid "Connected Apps"
msgstr "App connesse"
-#: ../../mod/settings.php:579
+#: ../../mod/settings.php:629
msgid "Client key starts with"
msgstr "La client key inizia con"
-#: ../../mod/settings.php:580
+#: ../../mod/settings.php:630
msgid "No name"
msgstr "Nessun nome"
-#: ../../mod/settings.php:581
+#: ../../mod/settings.php:631
msgid "Remove authorization"
msgstr "Revoca l'autorizzazione"
-#: ../../mod/settings.php:592
+#: ../../mod/settings.php:642
msgid "No feature settings configured"
msgstr "Non hai componenti aggiuntivi da personalizzare"
-#: ../../mod/settings.php:600
+#: ../../mod/settings.php:650
msgid "Feature Settings"
msgstr "Componenti aggiuntivi"
-#: ../../mod/settings.php:623
+#: ../../mod/settings.php:673
msgid "Account Settings"
msgstr "Il tuo account"
-#: ../../mod/settings.php:624
+#: ../../mod/settings.php:674
msgid "Password Settings"
msgstr "Impostazioni password"
-#: ../../mod/settings.php:625
+#: ../../mod/settings.php:675
msgid "New Password:"
msgstr "Nuova password:"
-#: ../../mod/settings.php:626
+#: ../../mod/settings.php:676
msgid "Confirm:"
msgstr "Conferma:"
-#: ../../mod/settings.php:626
+#: ../../mod/settings.php:676
msgid "Leave password fields blank unless changing"
msgstr "Lascia questi campi in bianco per non cambiare la password"
-#: ../../mod/settings.php:628 ../../mod/settings.php:936
+#: ../../mod/settings.php:678 ../../mod/settings.php:1013
msgid "Email Address:"
msgstr "Indirizzo email:"
-#: ../../mod/settings.php:629
+#: ../../mod/settings.php:679 ../../mod/removeaccount.php:61
msgid "Remove Account"
msgstr "Elimina l'account"
-#: ../../mod/settings.php:630 ../../mod/settings.php:999
+#: ../../mod/settings.php:680
+msgid "Remove this account from this server including all its channels"
+msgstr "Elimina l'account da questo server, inclusi tutti i canali"
+
+#: ../../mod/settings.php:681 ../../mod/settings.php:1095
msgid "Warning: This action is permanent and cannot be reversed."
msgstr "Attenzione: questa azione è permanente e non potrà più essere annullata."
-#: ../../mod/settings.php:646
+#: ../../mod/settings.php:697
msgid "Off"
msgstr "Off"
-#: ../../mod/settings.php:646
+#: ../../mod/settings.php:697
msgid "On"
msgstr "On"
-#: ../../mod/settings.php:653
+#: ../../mod/settings.php:704
msgid "Additional Features"
msgstr "Funzionalità opzionali"
-#: ../../mod/settings.php:678
+#: ../../mod/settings.php:729
msgid "Connector Settings"
msgstr "Impostazioni del connettore"
-#: ../../mod/settings.php:708 ../../mod/admin.php:390
+#: ../../mod/settings.php:768
msgid "No special theme for mobile devices"
msgstr "Nessun tema per dispositivi mobili"
-#: ../../mod/settings.php:717
+#: ../../mod/settings.php:771
#, php-format
msgid "%s - (Experimental)"
msgstr "%s - (Sperimentale)"
-#: ../../mod/settings.php:747
+#: ../../mod/settings.php:774 ../../mod/admin.php:363
+msgid "mobile"
+msgstr "mobile"
+
+#: ../../mod/settings.php:810
msgid "Display Settings"
-msgstr "Impostazioni grafiche"
+msgstr "Aspetto"
-#: ../../mod/settings.php:753
+#: ../../mod/settings.php:816
msgid "Display Theme:"
-msgstr "Tema per monitor:"
+msgstr "Tema per schermi medio grandi:"
-#: ../../mod/settings.php:754
+#: ../../mod/settings.php:817
msgid "Mobile Theme:"
msgstr "Tema per dispositivi mobili:"
-#: ../../mod/settings.php:755
+#: ../../mod/settings.php:818
+msgid "Enable user zoom on mobile devices"
+msgstr "Attiva la possibilità di fare zoom sui dispositivi mobili"
+
+#: ../../mod/settings.php:819
msgid "Update browser every xx seconds"
msgstr "Aggiorna il browser ogni x secondi"
-#: ../../mod/settings.php:755
+#: ../../mod/settings.php:819
msgid "Minimum of 10 seconds, no maximum"
msgstr "Minimo 10 secondi, nessun limite massimo"
-#: ../../mod/settings.php:756
+#: ../../mod/settings.php:820
msgid "Maximum number of conversations to load at any time:"
msgstr "Massimo numero di conversazioni da mostrare ogni volta:"
-#: ../../mod/settings.php:756
+#: ../../mod/settings.php:820
msgid "Maximum of 100 items"
msgstr "Massimo 100"
-#: ../../mod/settings.php:757
+#: ../../mod/settings.php:821
msgid "Don't show emoticons"
msgstr "Non mostrare le emoticons"
-#: ../../mod/settings.php:758
+#: ../../mod/settings.php:822
+msgid "Link post titles to source"
+msgstr "Il link del titolo di un articolo porta al sito originale"
+
+#: ../../mod/settings.php:823
msgid "System Page Layout Editor - (advanced)"
-msgstr "Modifica i layout di sistema - (avanzato)"
+msgstr "Modifica i layout di sistema (avanzato)"
+
+#: ../../mod/settings.php:826
+msgid "Use blog/list mode on channel page"
+msgstr "Mostra il canale nella modalità blog"
-#: ../../mod/settings.php:793
+#: ../../mod/settings.php:826 ../../mod/settings.php:827
+msgid "(comments displayed separately)"
+msgstr "(i commenti sono mostrati separatamente)"
+
+#: ../../mod/settings.php:827
+msgid "Use blog/list mode on matrix page"
+msgstr "Mostra la tua rete in modalità blog"
+
+#: ../../mod/settings.php:828
+msgid "Channel page max height of content (in pixels)"
+msgstr "Altezza massima dei contenuti del canale (in pixel)"
+
+#: ../../mod/settings.php:828 ../../mod/settings.php:829
+msgid "click to expand content exceeding this height"
+msgstr "dovrai cliccare per mostrare i contenuti di dimensioni maggiori"
+
+#: ../../mod/settings.php:829
+msgid "Matrix page max height of content (in pixels)"
+msgstr "Altezza massima dei contenuti della tua rete (in pixel)"
+
+#: ../../mod/settings.php:863
msgid "Nobody except yourself"
msgstr "Nessuno tranne te"
-#: ../../mod/settings.php:794
+#: ../../mod/settings.php:864
msgid "Only those you specifically allow"
msgstr "Solo chi riceve il mio permesso"
-#: ../../mod/settings.php:795
+#: ../../mod/settings.php:865
msgid "Approved connections"
msgstr "Contatti approvati"
-#: ../../mod/settings.php:796
+#: ../../mod/settings.php:866
msgid "Any connections"
msgstr "Tutti i contatti"
-#: ../../mod/settings.php:797
+#: ../../mod/settings.php:867
msgid "Anybody on this website"
msgstr "Chiunque su questo sito"
-#: ../../mod/settings.php:798
+#: ../../mod/settings.php:868
msgid "Anybody in this network"
msgstr "Chiunque su Red"
-#: ../../mod/settings.php:799
+#: ../../mod/settings.php:869
msgid "Anybody authenticated"
msgstr "Chiunque sia autenticato"
-#: ../../mod/settings.php:800
+#: ../../mod/settings.php:870
msgid "Anybody on the internet"
msgstr "Chiunque su internet"
-#: ../../mod/settings.php:877
+#: ../../mod/settings.php:944
msgid "Publish your default profile in the network directory"
-msgstr "Pubblica il mio profilo predefinito sull'elenco pubblico dei canali"
+msgstr "Mostra il mio profilo predefinito nell'elenco pubblico dei canali"
-#: ../../mod/settings.php:877 ../../mod/settings.php:882
-#: ../../mod/settings.php:953 ../../mod/admin.php:420
-#: ../../mod/profiles.php:493 ../../mod/api.php:106
+#: ../../mod/settings.php:944 ../../mod/settings.php:949
+#: ../../mod/settings.php:1032 ../../mod/api.php:106
+#: ../../mod/profiles.php:592 ../../mod/admin.php:390
msgid "No"
msgstr "No"
-#: ../../mod/settings.php:877 ../../mod/settings.php:882
-#: ../../mod/settings.php:953 ../../mod/admin.php:422
-#: ../../mod/profiles.php:492 ../../mod/api.php:105
+#: ../../mod/settings.php:944 ../../mod/settings.php:949
+#: ../../mod/settings.php:1032 ../../mod/api.php:105
+#: ../../mod/profiles.php:591 ../../mod/admin.php:392
msgid "Yes"
msgstr "Si"
-#: ../../mod/settings.php:882
+#: ../../mod/settings.php:949
msgid "Allow us to suggest you as a potential friend to new members?"
-msgstr "Vuoi essere suggerito come potenziale amico ai nuovi membri?"
+msgstr "Vuoi essere suggerito come amico ai nuovi membri?"
-#: ../../mod/settings.php:886 ../../mod/profile_photo.php:365
+#: ../../mod/settings.php:953 ../../mod/profile_photo.php:365
msgid "or"
msgstr "o"
-#: ../../mod/settings.php:891
+#: ../../mod/settings.php:958
msgid "Your channel address is"
msgstr "L'indirizzo del tuo canale è"
-#: ../../mod/settings.php:925
+#: ../../mod/settings.php:1002
msgid "Channel Settings"
msgstr "Impostazioni del canale"
-#: ../../mod/settings.php:934
+#: ../../mod/settings.php:1011
msgid "Basic Settings"
msgstr "Impostazioni di base"
-#: ../../mod/settings.php:937
+#: ../../mod/settings.php:1014
msgid "Your Timezone:"
msgstr "Il tuo fuso orario:"
-#: ../../mod/settings.php:938
+#: ../../mod/settings.php:1015
msgid "Default Post Location:"
msgstr "Località predefinita:"
-#: ../../mod/settings.php:938
+#: ../../mod/settings.php:1015
msgid "Geographical location to display on your posts"
msgstr "Posizione geografica da mostrare sui tuoi post"
-#: ../../mod/settings.php:939
+#: ../../mod/settings.php:1016
msgid "Use Browser Location:"
msgstr "Usa la località rilevata dal browser:"
-#: ../../mod/settings.php:941
+#: ../../mod/settings.php:1018
msgid "Adult Content"
msgstr "Contenuto per adulti"
-#: ../../mod/settings.php:941
+#: ../../mod/settings.php:1018
msgid ""
"This channel frequently or regularly publishes adult content. (Please tag "
"any adult material and/or nudity with #NSFW)"
msgstr "Questo canale pubblica frequentemente contenuto per adulti. (I contenuti per adulti vanno taggati #NSFW - Not Safe For Work)"
-#: ../../mod/settings.php:943
+#: ../../mod/settings.php:1020
msgid "Security and Privacy Settings"
msgstr "Impostazioni di sicurezza e privacy"
-#: ../../mod/settings.php:945
+#: ../../mod/settings.php:1022
+msgid "Your permissions are already configured. Click to view/adjust"
+msgstr "I tuoi permessi sono già stati configurati. Clicca per vederli o modificarli"
+
+#: ../../mod/settings.php:1024
msgid "Hide my online presence"
msgstr "Non mostrare la mia presenza online"
-#: ../../mod/settings.php:945
+#: ../../mod/settings.php:1024
msgid "Prevents displaying in your profile that you are online"
msgstr "Non mostra sul tuo profilo che sei online"
-#: ../../mod/settings.php:947
+#: ../../mod/settings.php:1026
msgid "Simple Privacy Settings:"
msgstr "Impostazioni di privacy semplificate"
-#: ../../mod/settings.php:948
+#: ../../mod/settings.php:1027
msgid ""
"Very Public - <em>extremely permissive (should be used with caution)</em>"
msgstr "Tutto pubblico - <em>estremamente permissivo (da usare con cautela)</em>"
-#: ../../mod/settings.php:949
+#: ../../mod/settings.php:1028
msgid ""
"Typical - <em>default public, privacy when desired (similar to social "
"network permissions but with improved privacy)</em>"
msgstr "Standard - <em>contenuti normalmente pubblici, ma anche privati se necessario (simile ai social network ma con privacy migliorata)</em>"
-#: ../../mod/settings.php:950
+#: ../../mod/settings.php:1029
msgid "Private - <em>default private, never open or public</em>"
msgstr "Privato - <em>contenuti normalmente privati, nulla è aperto o pubblico</em>"
-#: ../../mod/settings.php:951
+#: ../../mod/settings.php:1030
msgid "Blocked - <em>default blocked to/from everybody</em>"
-msgstr "Bloccato - <em>bloccato in ricezione e invio</em>"
+msgstr "Bloccato - <em>bloccato in invio e ricezione dei contenuti</em>"
-#: ../../mod/settings.php:953
+#: ../../mod/settings.php:1032
msgid "Allow others to tag your posts"
msgstr "Permetti ad altri di taggare i tuoi articoli"
-#: ../../mod/settings.php:953
+#: ../../mod/settings.php:1032
msgid ""
"Often used by the community to retro-actively flag inappropriate content"
msgstr "Usato spesso dalla comunità per marcare contenuti inappropriati già esistenti"
-#: ../../mod/settings.php:955
+#: ../../mod/settings.php:1034
msgid "Advanced Privacy Settings"
msgstr "Impostazioni di privacy avanzate"
-#: ../../mod/settings.php:957
+#: ../../mod/settings.php:1036
msgid "Expire other channel content after this many days"
msgstr "Giorni dopo cui mettere in scadenza gli altri contenuti del canale"
-#: ../../mod/settings.php:957
+#: ../../mod/settings.php:1036
msgid "0 or blank prevents expiration"
msgstr "Lascia vuoto oppure 0 per non impostare scadenze"
-#: ../../mod/settings.php:958
+#: ../../mod/settings.php:1037
msgid "Maximum Friend Requests/Day:"
msgstr "Numero massimo giornaliero di richieste di amicizia:"
-#: ../../mod/settings.php:958
+#: ../../mod/settings.php:1037
msgid "May reduce spam activity"
msgstr "Serve e ridurre lo spam"
-#: ../../mod/settings.php:959
+#: ../../mod/settings.php:1038
msgid "Default Post Permissions"
msgstr "Permessi predefiniti per gli articoli"
-#: ../../mod/settings.php:960 ../../mod/mitem.php:134 ../../mod/mitem.php:177
-msgid "(click to open/close)"
-msgstr "(clicca per aprire/chiudere)"
+#: ../../mod/settings.php:1043
+msgid "Channel permissions category:"
+msgstr "Categorie di permessi dei canali:"
-#: ../../mod/settings.php:971
+#: ../../mod/settings.php:1051
msgid "Maximum private messages per day from unknown people:"
msgstr "Numero massimo giornaliero di messaggi privati da utenti sconosciuti:"
-#: ../../mod/settings.php:971
+#: ../../mod/settings.php:1051
msgid "Useful to reduce spamming"
msgstr "Serve e ridurre lo spam"
-#: ../../mod/settings.php:974
+#: ../../mod/settings.php:1054
msgid "Notification Settings"
msgstr "Impostazioni di notifica"
-#: ../../mod/settings.php:975
+#: ../../mod/settings.php:1055
msgid "By default post a status message when:"
msgstr "Pubblica un messaggio di stato quando:"
-#: ../../mod/settings.php:976
+#: ../../mod/settings.php:1056
msgid "accepting a friend request"
msgstr "accetto una nuova amicizia"
-#: ../../mod/settings.php:977
+#: ../../mod/settings.php:1057
msgid "joining a forum/community"
msgstr "entro a far parte di un forum"
-#: ../../mod/settings.php:978
+#: ../../mod/settings.php:1058
msgid "making an <em>interesting</em> profile change"
msgstr "faccio un cambiamento <em>interessante</em> al mio profilo"
-#: ../../mod/settings.php:979
+#: ../../mod/settings.php:1059
msgid "Send a notification email when:"
msgstr "Invia una email di notifica quando:"
-#: ../../mod/settings.php:980
+#: ../../mod/settings.php:1060
msgid "You receive a connection request"
msgstr "Ricevi una richiesta di entrare in contatto"
-#: ../../mod/settings.php:981
+#: ../../mod/settings.php:1061
msgid "Your connections are confirmed"
msgstr "I tuoi contatti sono confermati"
-#: ../../mod/settings.php:982
+#: ../../mod/settings.php:1062
msgid "Someone writes on your profile wall"
msgstr "Qualcuno scrive sulla tua bacheca"
-#: ../../mod/settings.php:983
+#: ../../mod/settings.php:1063
msgid "Someone writes a followup comment"
msgstr "Qualcuno scrive un commento a un tuo articolo"
-#: ../../mod/settings.php:984
+#: ../../mod/settings.php:1064
msgid "You receive a private message"
msgstr "Ricevi un messaggio privato"
-#: ../../mod/settings.php:985
+#: ../../mod/settings.php:1065
msgid "You receive a friend suggestion"
msgstr "Ti viene suggerito un amico"
-#: ../../mod/settings.php:986
+#: ../../mod/settings.php:1066
msgid "You are tagged in a post"
msgstr "Sei taggato in un articolo"
-#: ../../mod/settings.php:987
+#: ../../mod/settings.php:1067
msgid "You are poked/prodded/etc. in a post"
msgstr "Ricevi un poke in un articolo"
-#: ../../mod/settings.php:990
-msgid "Advanced Account/Page Type Settings"
-msgstr "Impostazioni avanzate"
-
-#: ../../mod/settings.php:991
-msgid "Change the behaviour of this account for special situations"
-msgstr "Cambia il funzionamento di questo account in situazioni particolari"
-
-#: ../../mod/settings.php:994
-msgid ""
-"Please enable expert mode (in <a href=\"settings/features\">Settings > "
-"Additional features</a>) to adjust!"
-msgstr "Abilita la modalità esperto per fare cambiamenti! (in <a href=\"settings/features\">Impostazioni > Funzionalità opzionali</a>)"
-
-#: ../../mod/settings.php:995
-msgid "Miscellaneous Settings"
-msgstr "Impostazioni varie"
-
-#: ../../mod/settings.php:997
-msgid "Personal menu to display in your channel pages"
-msgstr "Menu personale da mostrare sulle pagine del tuo canale"
-
-#: ../../mod/settings.php:998
-msgid "Remove this channel"
-msgstr "Elimina questo canale"
-
-#: ../../mod/filestorage.php:68
-msgid "Permission Denied."
-msgstr "Permesso negato."
+#: ../../mod/settings.php:1070
+msgid "Show visual notifications including:"
+msgstr "Mostra queste notifiche a schermo:"
-#: ../../mod/filestorage.php:85
-msgid "File not found."
-msgstr "File non trovato."
+#: ../../mod/settings.php:1072
+msgid "Unseen matrix activity"
+msgstr "Nuove attività nella rete"
-#: ../../mod/filestorage.php:122
-msgid "Edit file permissions"
-msgstr "Modifica i permessi del file"
+#: ../../mod/settings.php:1073
+msgid "Unseen channel activity"
+msgstr "Novità nei canali"
-#: ../../mod/filestorage.php:131
-msgid "Set/edit permissions"
-msgstr "Modifica i permessi"
+#: ../../mod/settings.php:1074
+msgid "Unseen private messages"
+msgstr "Nuovi messaggi privati"
-#: ../../mod/filestorage.php:132
-msgid "Include all files and sub folders"
-msgstr "Includi tutti i file e le sottocartelle"
+#: ../../mod/settings.php:1074 ../../mod/settings.php:1079
+#: ../../mod/settings.php:1080 ../../mod/settings.php:1081
+msgid "Recommended"
+msgstr "Consigliato"
-#: ../../mod/filestorage.php:133
-msgid "Return to file list"
-msgstr "Torna all'elenco dei file"
+#: ../../mod/settings.php:1075
+msgid "Upcoming events"
+msgstr "Prossimi eventi"
-#: ../../mod/filestorage.php:135
-msgid "Copy/paste this code to attach file to a post"
-msgstr "Copia/incolla questo codice per far comparire il file in un articolo"
+#: ../../mod/settings.php:1076
+msgid "Events today"
+msgstr "Eventi di oggi"
-#: ../../mod/filestorage.php:136
-msgid "Copy/paste this URL to link file from a web page"
-msgstr "Copia/incolla questo indirizzo in una pagina web per avere un link al file"
+#: ../../mod/settings.php:1077
+msgid "Upcoming birthdays"
+msgstr "Prossimi compleanni"
-#: ../../mod/home.php:54 ../../mod/block.php:39 ../../mod/wall_upload.php:28
-#: ../../mod/page.php:47 ../../mod/chanview.php:77
-msgid "Channel not found."
-msgstr "Canale non trovato."
+#: ../../mod/settings.php:1077
+msgid "Not available in all themes"
+msgstr "Non disponibile in tutti i temi"
-#: ../../mod/home.php:81
-msgid "Red Matrix - &quot;The Network&quot;"
-msgstr "Red Matrix - &quot;La Rete&quot;"
+#: ../../mod/settings.php:1078
+msgid "System (personal) notifications"
+msgstr "Notifiche personali dal sistema"
-#: ../../mod/home.php:94
-#, php-format
-msgid "Welcome to %s"
-msgstr "%s ti dà il benvenuto"
+#: ../../mod/settings.php:1079
+msgid "System info messages"
+msgstr "Notifiche di sistema"
-#: ../../mod/probe.php:23 ../../mod/probe.php:29
-#, php-format
-msgid "Fetching URL returns error: %1$s"
-msgstr "La chiamata all'URL restituisce questo errore: %1$s"
+#: ../../mod/settings.php:1080
+msgid "System critical alerts"
+msgstr "Avvisi critici di sistema"
-#: ../../mod/update_network.php:23 ../../mod/update_display.php:25
-#: ../../mod/update_search.php:46 ../../mod/update_channel.php:43
-msgid "[Embedded content - reload page to view]"
-msgstr "[Contenuto incorporato - ricarica la pagina per visualizzarlo correttamente]"
+#: ../../mod/settings.php:1081
+msgid "New connections"
+msgstr "Nuovi contatti"
-#: ../../mod/new_channel.php:107
-msgid "Add a Channel"
-msgstr "Aggiungi un canale"
+#: ../../mod/settings.php:1082
+msgid "System Registrations"
+msgstr "Registrazioni"
-#: ../../mod/new_channel.php:108
-msgid ""
-"A channel is your own collection of related web pages. A channel can be used"
-" to hold social network profiles, blogs, conversation groups and forums, "
-"celebrity pages, and much more. You may create as many channels as your "
-"service provider allows."
-msgstr "I contenuti che pubblichi finiscono in un \"canale\". Un canale può essere usato per mantenere un tuo profilo personale, per avere un blog, per creare forum di discussione o gruppi di interesse, per pagine di celebrità e molto altro. Puoi creare quanti canali vuoi a meno di limiti dati dal gestore del sito."
+#: ../../mod/settings.php:1084
+msgid "Notify me of events this many days in advance"
+msgstr "Giorni di anticipo per notificare gli eventi"
-#: ../../mod/new_channel.php:110 ../../mod/sources.php:103
-#: ../../mod/sources.php:137
-msgid "Channel Name"
-msgstr "Nome del canale"
+#: ../../mod/settings.php:1084
+msgid "Must be greater than 0"
+msgstr "Maggiore di 0"
-#: ../../mod/new_channel.php:111
-msgid "Examples: \"Bob Jameson\", \"Lisa and her Horses\", \"Soccer\", \"Aviation Group\" "
-msgstr "Per esempio: \"Mario Rossi\", \"Lisa e le sue ricette\", \"Il campionato\", \"Il gruppo di escursionismo\""
+#: ../../mod/settings.php:1086
+msgid "Advanced Account/Page Type Settings"
+msgstr "Impostazioni avanzate"
-#: ../../mod/new_channel.php:112
-msgid "Choose a short nickname"
-msgstr "Scegli un nome breve"
+#: ../../mod/settings.php:1087
+msgid "Change the behaviour of this account for special situations"
+msgstr "Cambia il funzionamento di questo account per necessità particolari"
-#: ../../mod/new_channel.php:113
+#: ../../mod/settings.php:1090
msgid ""
-"Your nickname will be used to create an easily remembered channel address "
-"(like an email address) which you can share with others."
-msgstr "Il nome breve sarà usato per creare un indirizzo facile da ricordare per il tuo canale (simile a una email). Così potrai condividerlo e gli altri potranno trovarti."
+"Please enable expert mode (in <a href=\"settings/features\">Settings > "
+"Additional features</a>) to adjust!"
+msgstr "Abilita la modalità esperto per fare cambiamenti! (in <a href=\"settings/features\">Impostazioni > Funzionalità opzionali</a>)"
-#: ../../mod/new_channel.php:114
-msgid "Or <a href=\"import\">import an existing channel</a> from another location"
-msgstr "Oppure <a href=\"import\">importa un tuo canale esistente</a> da un altro server/hub"
+#: ../../mod/settings.php:1091
+msgid "Miscellaneous Settings"
+msgstr "Impostazioni varie"
-#: ../../mod/rmagic.php:38
-msgid ""
-"We encountered a problem while logging in with the OpenID you provided. "
-"Please check the correct spelling of the ID."
-msgstr "Non è possibile effettuare login con l'OpenID che hai fornito. Per favore controlla che sia scritto correttamente."
+#: ../../mod/settings.php:1093
+msgid "Personal menu to display in your channel pages"
+msgstr "Menu personale da mostrare sulle pagine del tuo canale"
-#: ../../mod/rmagic.php:38
-msgid "The error message was:"
-msgstr "Messaggio di errore ricevuto:"
+#: ../../mod/settings.php:1094
+msgid "Remove this channel"
+msgstr "Elimina questo canale"
-#: ../../mod/rmagic.php:42
-msgid "Authentication failed."
-msgstr "Autenticazione fallita."
+#: ../../mod/group.php:20
+msgid "Collection created."
+msgstr "L'insieme di canali è stato creato."
-#: ../../mod/rmagic.php:78
-msgid "Remote Authentication"
-msgstr "Autenticazione a distanza"
+#: ../../mod/group.php:26
+msgid "Could not create collection."
+msgstr "Impossibile creare l'insieme."
-#: ../../mod/rmagic.php:79
-msgid "Enter your channel address (e.g. channel@example.com)"
-msgstr "Inserisci l'indirizzo del tuo canale (ad esempio lucia@esempio.com)"
+#: ../../mod/group.php:54
+msgid "Collection updated."
+msgstr "Insieme aggiornato."
-#: ../../mod/rmagic.php:80
-msgid "Authenticate"
-msgstr "Autenticazione"
+#: ../../mod/group.php:86
+msgid "Create a collection of channels."
+msgstr "Crea un insieme di canali."
-#: ../../mod/admin.php:52
-msgid "Theme settings updated."
-msgstr "Le impostazioni del tema sono state aggiornate."
+#: ../../mod/group.php:87 ../../mod/group.php:183
+msgid "Collection Name: "
+msgstr "Nome dell'insieme:"
-#: ../../mod/admin.php:92 ../../mod/admin.php:441
-msgid "Site"
-msgstr "Sito"
+#: ../../mod/group.php:89 ../../mod/group.php:186
+msgid "Members are visible to other channels"
+msgstr "I membri potranno vedere gli altri canali dell'insieme"
-#: ../../mod/admin.php:93
-msgid "Accounts"
-msgstr "Account"
+#: ../../mod/group.php:107
+msgid "Collection removed."
+msgstr "Insieme rimosso."
-#: ../../mod/admin.php:94 ../../mod/admin.php:885
-msgid "Channels"
-msgstr "Canali"
+#: ../../mod/group.php:109
+msgid "Unable to remove collection."
+msgstr "Impossibile rimuovere l'insieme."
-#: ../../mod/admin.php:95 ../../mod/admin.php:976 ../../mod/admin.php:1018
-msgid "Plugins"
-msgstr "Plugin"
+#: ../../mod/group.php:182
+msgid "Collection Editor"
+msgstr "Modifica l'insieme"
-#: ../../mod/admin.php:96 ../../mod/admin.php:1181 ../../mod/admin.php:1217
-msgid "Themes"
-msgstr "Temi"
+#: ../../mod/group.php:196
+msgid "Members"
+msgstr "Membri"
-#: ../../mod/admin.php:97 ../../mod/admin.php:541
-msgid "Server"
-msgstr "Server"
+#: ../../mod/group.php:198
+msgid "All Connected Channels"
+msgstr "Tutti i canali connessi"
-#: ../../mod/admin.php:98
-msgid "DB updates"
-msgstr "Aggiornamenti al DB"
+#: ../../mod/group.php:233
+msgid "Click on a channel to add or remove."
+msgstr "Clicca su un canale per aggiungerlo o rimuoverlo."
-#: ../../mod/admin.php:112 ../../mod/admin.php:119 ../../mod/admin.php:1304
-msgid "Logs"
-msgstr "Log"
+#: ../../mod/search.php:13 ../../mod/photos.php:458 ../../mod/display.php:9
+#: ../../mod/viewconnections.php:17 ../../mod/directory.php:22
+msgid "Public access denied."
+msgstr "Accesso pubblico negato."
-#: ../../mod/admin.php:118
-msgid "Plugin Features"
-msgstr "Plugin"
+#: ../../mod/subthread.php:103
+#, php-format
+msgid "%1$s is following %2$s's %3$s"
+msgstr "%1$s sta seguendo %3$s di %2$s"
-#: ../../mod/admin.php:120
-msgid "User registrations waiting for confirmation"
-msgstr "Registrazioni in attesa"
+#: ../../mod/poke.php:159
+msgid "Poke/Prod"
+msgstr "Poke/Prod"
-#: ../../mod/admin.php:197
-msgid "Message queues"
-msgstr "Messaggi in attesa di recapito"
+#: ../../mod/poke.php:160
+msgid "poke, prod or do other things to somebody"
+msgstr "Manda un poke, un prod o altro"
-#: ../../mod/admin.php:202 ../../mod/admin.php:440 ../../mod/admin.php:540
-#: ../../mod/admin.php:749 ../../mod/admin.php:884 ../../mod/admin.php:975
-#: ../../mod/admin.php:1017 ../../mod/admin.php:1180 ../../mod/admin.php:1216
-#: ../../mod/admin.php:1303
-msgid "Administration"
-msgstr "Amministrazione"
+#: ../../mod/poke.php:161
+msgid "Recipient"
+msgstr "Destinatario"
-#: ../../mod/admin.php:203
-msgid "Summary"
-msgstr "Riepilogo"
+#: ../../mod/poke.php:162
+msgid "Choose what you wish to do to recipient"
+msgstr "Scegli cosa vuoi inviare al destinatario"
-#: ../../mod/admin.php:205
-msgid "Registered users"
-msgstr "Utenti registrati"
+#: ../../mod/poke.php:165
+msgid "Make this post private"
+msgstr "Rendi privato questo articolo"
-#: ../../mod/admin.php:207 ../../mod/admin.php:544
-msgid "Pending registrations"
-msgstr "Registrazioni da approvare"
+#: ../../mod/api.php:76 ../../mod/api.php:102
+msgid "Authorize application connection"
+msgstr "Autorizza la app"
-#: ../../mod/admin.php:208
-msgid "Version"
-msgstr "Versione"
+#: ../../mod/api.php:77
+msgid "Return to your app and insert this Securty Code:"
+msgstr "Torna alla app e inserisci questo codice di sicurezza:"
-#: ../../mod/admin.php:210 ../../mod/admin.php:545
-msgid "Active plugins"
-msgstr "Plugin attivi"
+#: ../../mod/api.php:89
+msgid "Please login to continue."
+msgstr "Accedi al sito per continuare."
-#: ../../mod/admin.php:361
-msgid "Site settings updated."
-msgstr "Impostazioni del sito aggiornate."
+#: ../../mod/api.php:104
+msgid ""
+"Do you want to authorize this application to access your posts and contacts,"
+" and/or create new posts for you?"
+msgstr "Vuoi autorizzare questa app ad accedere ai messaggi e ai contatti o creare nuovi messaggi per te?"
-#: ../../mod/admin.php:392
-msgid "No special theme for accessibility"
-msgstr "Nessun tema speciale per l'accessibilità"
+#: ../../mod/setup.php:166
+msgid "Red Matrix Server - Setup"
+msgstr "RedMatrix Server - Installazione"
-#: ../../mod/admin.php:421
-msgid "Yes - with approval"
-msgstr "Sì - con approvazione"
+#: ../../mod/setup.php:172
+msgid "Could not connect to database."
+msgstr " Impossibile connettersi al database."
-#: ../../mod/admin.php:427
-msgid "My site is not a public server"
-msgstr "Non è un server pubblico"
+#: ../../mod/setup.php:176
+msgid ""
+"Could not connect to specified site URL. Possible SSL certificate or DNS "
+"issue."
+msgstr "Non è possibile raggiungere l'indirizzo del sito specificato. Potrebbe essere un problema di SSL o DNS."
-#: ../../mod/admin.php:428
-msgid "My site has paid access only"
-msgstr "È un servizio a pagamento"
+#: ../../mod/setup.php:183
+msgid "Could not create table."
+msgstr "Impossibile creare le tabelle."
-#: ../../mod/admin.php:429
-msgid "My site has free access only"
-msgstr "È un servizio gratuito"
+#: ../../mod/setup.php:189
+msgid "Your site database has been installed."
+msgstr "Il database del sito è stato installato."
-#: ../../mod/admin.php:430
-msgid "My site offers free accounts with optional paid upgrades"
-msgstr "È un servizio gratuito con opzioni aggiuntive a pagamento"
+#: ../../mod/setup.php:194
+msgid ""
+"You may need to import the file \"install/schema_xxx.sql\" manually using a "
+"database client."
+msgstr "Potresti dover importare il file 'install/schema_xxx.sql' manualmente usando un client per collegarti al db."
-#: ../../mod/admin.php:443 ../../mod/register.php:189
-msgid "Registration"
-msgstr "Registrazione"
+#: ../../mod/setup.php:195 ../../mod/setup.php:264 ../../mod/setup.php:663
+msgid "Please see the file \"install/INSTALL.txt\"."
+msgstr "Leggi il file 'install/INSTALL.txt'."
-#: ../../mod/admin.php:444
-msgid "File upload"
-msgstr "Caricamento file"
+#: ../../mod/setup.php:261
+msgid "System check"
+msgstr "Verifica del sistema"
-#: ../../mod/admin.php:445
-msgid "Policies"
-msgstr "Politiche"
+#: ../../mod/setup.php:265 ../../mod/events.php:445 ../../mod/photos.php:868
+msgid "Next"
+msgstr "Successivo"
-#: ../../mod/admin.php:450
-msgid "Site name"
-msgstr "Nome del sito"
+#: ../../mod/setup.php:266
+msgid "Check again"
+msgstr "Verifica di nuovo"
-#: ../../mod/admin.php:451
-msgid "Banner/Logo"
-msgstr "Banner o logo"
+#: ../../mod/setup.php:289
+msgid "Database connection"
+msgstr "Connessione al database"
-#: ../../mod/admin.php:452
-msgid "Administrator Information"
-msgstr "Informazioni sull'amministrazione"
+#: ../../mod/setup.php:290
+msgid ""
+"In order to install Red Matrix we need to know how to connect to your "
+"database."
+msgstr "Per installare RedMatrix è necessario conoscere i parametri di connessione al database."
-#: ../../mod/admin.php:452
+#: ../../mod/setup.php:291
msgid ""
-"Contact information for site administrators. Displayed on siteinfo page. "
-"BBCode can be used here"
-msgstr "Informazioni per contattare gli amministratori del sito. Saranno mostrate sulla pagina di informazioni. È consentito il BBcode"
+"Please contact your hosting provider or site administrator if you have "
+"questions about these settings."
+msgstr "Contatta il tuo fornitore di hosting o l'amministratore del sito se hai domande su queste impostazioni."
-#: ../../mod/admin.php:453
-msgid "System language"
-msgstr "Lingua di sistema"
+#: ../../mod/setup.php:292
+msgid ""
+"The database you specify below should already exist. If it does not, please "
+"create it before continuing."
+msgstr "Il database deve già esistere. Se non esiste, crealo prima di continuare."
-#: ../../mod/admin.php:454
-msgid "System theme"
-msgstr "Tema di sistema"
+#: ../../mod/setup.php:296
+msgid "Database Server Name"
+msgstr "Server del database"
-#: ../../mod/admin.php:454
-msgid ""
-"Default system theme - may be over-ridden by user profiles - <a href='#' "
-"id='cnftheme'>change theme settings</a>"
-msgstr "Il tema di sistema può essere cambiato dai profili dei singoli utenti - <a href='#' id='cnftheme'>Cambia le impostazioni del tema</a>"
+#: ../../mod/setup.php:296
+msgid "Default is localhost"
+msgstr "'localhost' è il predefinito"
-#: ../../mod/admin.php:455
-msgid "Mobile system theme"
-msgstr "Tema di sistema per dispositivi mobili"
+#: ../../mod/setup.php:297
+msgid "Database Port"
+msgstr "Port del database"
-#: ../../mod/admin.php:455
-msgid "Theme for mobile devices"
-msgstr "Tema per i dispositivi mobili"
+#: ../../mod/setup.php:297
+msgid "Communication port number - use 0 for default"
+msgstr "Scrivi 0 per usare il valore standard"
-#: ../../mod/admin.php:456
-msgid "Accessibility system theme"
-msgstr "Tema di sistema ad alta accessibilità"
+#: ../../mod/setup.php:298
+msgid "Database Login Name"
+msgstr "Utente database"
-#: ../../mod/admin.php:456
-msgid "Accessibility theme"
-msgstr "Tema ad alta accessibilità"
+#: ../../mod/setup.php:299
+msgid "Database Login Password"
+msgstr "Password utente database"
-#: ../../mod/admin.php:457
-msgid "Channel to use for this website's static pages"
-msgstr "Canale da usare per le pagine statiche di questo sito"
+#: ../../mod/setup.php:300
+msgid "Database Name"
+msgstr "Nome database"
-#: ../../mod/admin.php:457
-msgid "Site Channel"
-msgstr "Canale del sito"
+#: ../../mod/setup.php:301
+msgid "Database Type"
+msgstr "Tipo database"
-#: ../../mod/admin.php:459
-msgid "Maximum image size"
-msgstr "Dimensione massima immagini"
+#: ../../mod/setup.php:303 ../../mod/setup.php:347
+msgid "Site administrator email address"
+msgstr "Indirizzo email dell'amministratore del sito"
-#: ../../mod/admin.php:459
+#: ../../mod/setup.php:303 ../../mod/setup.php:347
msgid ""
-"Maximum size in bytes of uploaded images. Default is 0, which means no "
-"limits."
-msgstr "Massima dimensione in byte delle immagini caricate. Il default è 0, cioè nessun limite."
+"Your account email address must match this in order to use the web admin "
+"panel."
+msgstr "Il tuo indirizzo email deve corrispondere a questo per poter usare il pannello di amministrazione web."
-#: ../../mod/admin.php:460
-msgid "Does this site allow new member registration?"
-msgstr "Questo sito permette a nuovi utenti di registrarsi?"
+#: ../../mod/setup.php:304 ../../mod/setup.php:349
+msgid "Website URL"
+msgstr "URL completo del sito"
-#: ../../mod/admin.php:461
-msgid "Which best describes the types of account offered by this hub?"
-msgstr "Come descriveresti il tipo di servizio proposto da questo server?"
+#: ../../mod/setup.php:304 ../../mod/setup.php:349
+msgid "Please use SSL (https) URL if available."
+msgstr "Se disponibile, usa l'indirizzo SSL (https)."
-#: ../../mod/admin.php:462
-msgid "Register text"
-msgstr "Testo diregistrazione"
+#: ../../mod/setup.php:307 ../../mod/setup.php:352
+msgid "Please select a default timezone for your website"
+msgstr "Seleziona il fuso orario predefinito per il tuo sito web"
-#: ../../mod/admin.php:462
-msgid "Will be displayed prominently on the registration page."
-msgstr "Sarà mostrato ben visibile nella pagina di registrazione."
+#: ../../mod/setup.php:335
+msgid "Site settings"
+msgstr "Impostazioni del sito"
-#: ../../mod/admin.php:463
-msgid "Accounts abandoned after x days"
-msgstr "Account abbandonati dopo X giorni"
+#: ../../mod/setup.php:395
+msgid "Could not find a command line version of PHP in the web server PATH."
+msgstr "Non è possibile trovare la versione di PHP da riga di comando nel PATH del server web"
-#: ../../mod/admin.php:463
+#: ../../mod/setup.php:396
msgid ""
-"Will not waste system resources polling external sites for abandonded "
-"accounts. Enter 0 for no time limit."
-msgstr "Eviterà di sprecare risorse di sistema controllando se i siti esterni hanno account abbandonati. Immettere 0 per non imporre nessun limite di tempo."
+"If you don't have a command line version of PHP installed on server, you "
+"will not be able to run background polling via cron."
+msgstr "Se non hai installata la versione di PHP da riga di comando non potrai attivare il polling in background tramite cron."
-#: ../../mod/admin.php:464
-msgid "Allowed friend domains"
-msgstr "Domini fidati e consentiti"
+#: ../../mod/setup.php:400
+msgid "PHP executable path"
+msgstr "Path del comando PHP"
-#: ../../mod/admin.php:464
+#: ../../mod/setup.php:400
msgid ""
-"Comma separated list of domains which are allowed to establish friendships "
-"with this site. Wildcards are accepted. Empty to allow any domains"
-msgstr "Elenco separato da virglola dei domini che possono stabilire amicizie con questo sito. Sono accettati caratteri jolly. Lascia vuoto per accettare connessioni da qualsiasi dominio."
+"Enter full path to php executable. You can leave this blank to continue the "
+"installation."
+msgstr "Inserisci il percorso dell'eseguibile PHP. Puoi lasciarlo vuoto per continuare l'installazione."
-#: ../../mod/admin.php:465
-msgid "Allowed email domains"
-msgstr "Domini email consentiti"
+#: ../../mod/setup.php:405
+msgid "Command line PHP"
+msgstr "PHP da riga di comando"
-#: ../../mod/admin.php:465
+#: ../../mod/setup.php:414
msgid ""
-"Comma separated list of domains which are allowed in email addresses for "
-"registrations to this site. Wildcards are accepted. Empty to allow any "
-"domains"
-msgstr "Elenco separato da virgola dei domini permessi come indirizzi email in fase di registrazione. Sono accettati caratteri jolly. Lascia vuoto per accettare qualsiasi dominio."
-
-#: ../../mod/admin.php:466
-msgid "Block public"
-msgstr "Blocca pagine pubbliche"
+"The command line version of PHP on your system does not have "
+"\"register_argc_argv\" enabled."
+msgstr "La versione da riga di comando di PHP nel sistema non ha abilitato \"register_argc_argv\"."
-#: ../../mod/admin.php:466
-msgid ""
-"Check to block public access to all otherwise public personal pages on this "
-"site unless you are currently logged in."
-msgstr "Seleziona per impedire di vedere le pagine personali di questo sito a chi non ha effettuato l'accesso."
+#: ../../mod/setup.php:415
+msgid "This is required for message delivery to work."
+msgstr "E' necessario perché funzioni la consegna dei messaggi."
-#: ../../mod/admin.php:467
-msgid "Force publish"
-msgstr "Forza la publicazione del profilo"
+#: ../../mod/setup.php:417
+msgid "PHP register_argc_argv"
+msgstr "PHP register_argc_argv"
-#: ../../mod/admin.php:467
+#: ../../mod/setup.php:438
msgid ""
-"Check to force all profiles on this site to be listed in the site directory."
-msgstr "Seleziona per mostrare nell'elenco dei canali del sito <strong>tutti</strong> i profili registrati."
-
-#: ../../mod/admin.php:468
-msgid "Disable discovery tab"
-msgstr "Disabilita la funzione 'scopri'"
+"Error: the \"openssl_pkey_new\" function on this system is not able to "
+"generate encryption keys"
+msgstr "Errore: la funzione \"openssl_pkey_new\" su questo sistema non è in grado di generare le chiavi di criptazione"
-#: ../../mod/admin.php:468
+#: ../../mod/setup.php:439
msgid ""
-"Remove the tab in the network view with public content pulled from sources "
-"chosen for this site."
-msgstr "Nell'area della rete personale non comparirà più la scheda con i contenuti acquisiti da altri siti."
-
-#: ../../mod/admin.php:469
-msgid "No login on Homepage"
-msgstr "Non mostrare il login sulla homepage"
+"If running under Windows, please see "
+"\"http://www.php.net/manual/en/openssl.installation.php\"."
+msgstr "Se stai usando un server windows, guarda \"http://www.php.net/manual/en/openssl.installation.php\"."
-#: ../../mod/admin.php:469
-msgid ""
-"Check to hide the login form from your sites homepage when visitors arrive "
-"who are not logged in (e.g. when you put the content of the homepage in via "
-"the site channel)."
-msgstr "Per nascondere la possibilità di fare login ai visitatori (per esempio, quando il contenuto della homepage del sito è alimentato dal canale)."
+#: ../../mod/setup.php:441
+msgid "Generate encryption keys"
+msgstr "Genera chiavi di criptazione"
-#: ../../mod/admin.php:471
-msgid "Proxy user"
-msgstr "Utente proxy"
+#: ../../mod/setup.php:448
+msgid "libCurl PHP module"
+msgstr "modulo PHP libCurl"
-#: ../../mod/admin.php:472
-msgid "Proxy URL"
-msgstr "URL proxy"
+#: ../../mod/setup.php:449
+msgid "GD graphics PHP module"
+msgstr "modulo PHP GD graphics"
-#: ../../mod/admin.php:473
-msgid "Network timeout"
-msgstr "Timeout rete"
+#: ../../mod/setup.php:450
+msgid "OpenSSL PHP module"
+msgstr "modulo PHP OpenSSL"
-#: ../../mod/admin.php:473
-msgid "Value is in seconds. Set to 0 for unlimited (not recommended)."
-msgstr "Valore in secondi. Imposta a 0 per illimitato (sconsigliato)."
+#: ../../mod/setup.php:451
+msgid "mysqli or postgres PHP module"
+msgstr "modulo PHP per mysqli oppure prostgres"
-#: ../../mod/admin.php:474
-msgid "Delivery interval"
-msgstr "Recapito ritardato"
+#: ../../mod/setup.php:452
+msgid "mb_string PHP module"
+msgstr "modulo PHP mb_string"
-#: ../../mod/admin.php:474
-msgid ""
-"Delay background delivery processes by this many seconds to reduce system "
-"load. Recommend: 4-5 for shared hosts, 2-3 for virtual private servers. 0-1 "
-"for large dedicated servers."
-msgstr "RItarda il processo di recapito di questo numero di secondi per ridurre il carico di sistema. Consigliati: 4-5 secondi per hosting condiviso, 2-3 per i VPS, 0-1 per grandi server dedicati."
+#: ../../mod/setup.php:453
+msgid "mcrypt PHP module"
+msgstr "modulo PHP mcrypt"
-#: ../../mod/admin.php:475
-msgid "Poll interval"
-msgstr "Intervallo di polling"
+#: ../../mod/setup.php:458 ../../mod/setup.php:460
+msgid "Apache mod_rewrite module"
+msgstr "modulo Apache mod_rewrite"
-#: ../../mod/admin.php:475
+#: ../../mod/setup.php:458
msgid ""
-"Delay background polling processes by this many seconds to reduce system "
-"load. If 0, use delivery interval."
-msgstr "Ritarda i processi di polling in background di questo numero di secondi per ridurre il carico del sistema. Se 0, verrà usato lo stesso valore del 'Recapito ritardato'."
+"Error: Apache webserver mod-rewrite module is required but not installed."
+msgstr "Errore: il modulo mod-rewrite di Apache è richiesto ma non installato"
-#: ../../mod/admin.php:476
-msgid "Maximum Load Average"
-msgstr "Carico massimo medio"
+#: ../../mod/setup.php:464 ../../mod/setup.php:467
+msgid "proc_open"
+msgstr "proc_open"
-#: ../../mod/admin.php:476
+#: ../../mod/setup.php:464
msgid ""
-"Maximum system load before delivery and poll processes are deferred - "
-"default 50."
-msgstr "Carico di sistema massimo perché i processi di recapito e polling siano ritardati - il valore predefinito è 50."
-
-#: ../../mod/admin.php:532
-msgid "No server found"
-msgstr "Server non trovato"
-
-#: ../../mod/admin.php:539 ../../mod/admin.php:763
-msgid "ID"
-msgstr "ID"
-
-#: ../../mod/admin.php:539
-msgid "for channel"
-msgstr "per canale"
-
-#: ../../mod/admin.php:539
-msgid "on server"
-msgstr "sul server"
-
-#: ../../mod/admin.php:539
-msgid "Status"
-msgstr "Stato"
-
-#: ../../mod/admin.php:560
-msgid "Update has been marked successful"
-msgstr "L'aggiornamento è stato marcato come eseguito."
-
-#: ../../mod/admin.php:570
-#, php-format
-msgid "Executing %s failed. Check system logs."
-msgstr "Fallita l'esecuzione di %s. Maggiori informazioni sui log di sistema."
+"Error: proc_open is required but is either not installed or has been "
+"disabled in php.ini"
+msgstr "Errore: proc_open è richiesto ma non è installato o è disabilitato in php.ini"
-#: ../../mod/admin.php:573
-#, php-format
-msgid "Update %s was successfully applied."
-msgstr "L'aggiornamento %s è terminato correttamente."
+#: ../../mod/setup.php:472
+msgid "Error: libCURL PHP module required but not installed."
+msgstr "Errore: il modulo libCURL di PHP è richiesto ma non installato."
-#: ../../mod/admin.php:577
-#, php-format
-msgid "Update %s did not return a status. Unknown if it succeeded."
-msgstr "L'aggiornamento %s non ha dato risposta. Impossibile determinare se è terminato correttamente."
+#: ../../mod/setup.php:476
+msgid ""
+"Error: GD graphics PHP module with JPEG support required but not installed."
+msgstr "Errore: Il modulo GD graphics di PHP con supporto a JPEG è richiesto ma non installato."
-#: ../../mod/admin.php:580
-#, php-format
-msgid "Update function %s could not be found."
-msgstr "Impossibile trovare la funzione di aggiornamento %s"
+#: ../../mod/setup.php:480
+msgid "Error: openssl PHP module required but not installed."
+msgstr "Errore: il modulo openssl di PHP è richiesto ma non installato."
-#: ../../mod/admin.php:595
-msgid "No failed updates."
-msgstr "Nessun aggiornamento fallito."
+#: ../../mod/setup.php:484
+msgid ""
+"Error: mysqli or postgres PHP module required but neither are installed."
+msgstr "Errore: il modulo PHP per mysqli o postgres è richiesto ma non installato"
-#: ../../mod/admin.php:599
-msgid "Failed Updates"
-msgstr "Aggiornamenti falliti."
+#: ../../mod/setup.php:488
+msgid "Error: mb_string PHP module required but not installed."
+msgstr "Errore: il modulo PHP mb_string è richiesto ma non installato."
-#: ../../mod/admin.php:601
-msgid "Mark success (if update was manually applied)"
-msgstr "Marca come eseguito (se applicato manualmente)."
+#: ../../mod/setup.php:492
+msgid "Error: mcrypt PHP module required but not installed."
+msgstr "Errore: il modulo PHP mcrypt è richiesto ma non installato."
-#: ../../mod/admin.php:602
-msgid "Attempt to execute this update step automatically"
-msgstr "Tenta di eseguire in automatico questo passaggio dell'aggiornamento."
+#: ../../mod/setup.php:508
+msgid ""
+"The web installer needs to be able to create a file called \".htconfig.php\""
+" in the top folder of your web server and it is unable to do so."
+msgstr "L'installazione web deve poter creare un file chiamato \".htconfig.php\" nella cartella di RedMatrix ma non è in grado di farlo."
-#: ../../mod/admin.php:628
-#, php-format
-msgid "%s user blocked/unblocked"
-msgid_plural "%s users blocked/unblocked"
-msgstr[0] "%s utente bloccato/sbloccato"
-msgstr[1] "%s utenti bloccati/sbloccati"
+#: ../../mod/setup.php:509
+msgid ""
+"This is most often a permission setting, as the web server may not be able "
+"to write files in your folder - even if you can."
+msgstr "Spesso ciò è dovuto ai permessi di accesso al disco: il web server potrebbe non aver diritto di scrivere il file nella cartella, anche se tu puoi."
-#: ../../mod/admin.php:635
-#, php-format
-msgid "%s user deleted"
-msgid_plural "%s users deleted"
-msgstr[0] "%s utente cancellato"
-msgstr[1] "%s utenti cancellati"
+#: ../../mod/setup.php:510
+msgid ""
+"At the end of this procedure, we will give you a text to save in a file "
+"named .htconfig.php in your Red top folder."
+msgstr "Alla fine di questa procedura ti sarà dato il testo da salvare in un file di nome .htconfig.php dentro la cartella principale di RedMatrix."
-#: ../../mod/admin.php:666
-msgid "Account not found"
-msgstr "Account non trovato"
+#: ../../mod/setup.php:511
+msgid ""
+"You can alternatively skip this procedure and perform a manual installation."
+" Please see the file \"install/INSTALL.txt\" for instructions."
+msgstr "Puoi anche saltare questa procedura ed effettuare un'installazione manuale. Guarda il file 'install/INSTALL.txt' per le istruzioni."
-#: ../../mod/admin.php:677
-#, php-format
-msgid "User '%s' deleted"
-msgstr "Utente '%s' eliminato"
+#: ../../mod/setup.php:514
+msgid ".htconfig.php is writable"
+msgstr ".htconfig.php è scrivibile"
-#: ../../mod/admin.php:686
-#, php-format
-msgid "User '%s' unblocked"
-msgstr "Utente '%s' sbloccato"
+#: ../../mod/setup.php:524
+msgid ""
+"Red uses the Smarty3 template engine to render its web views. Smarty3 "
+"compiles templates to PHP to speed up rendering."
+msgstr "Red usa il sistema Smarty3 per costruire i suoi template grafici. Smarty3 è molto veloce perché compila i template delle pagine direttamente in PHP."
-#: ../../mod/admin.php:686
+#: ../../mod/setup.php:525
#, php-format
-msgid "User '%s' blocked"
-msgstr "Utente '%s' bloccato"
-
-#: ../../mod/admin.php:750 ../../mod/admin.php:762
-msgid "Users"
-msgstr "Utenti"
-
-#: ../../mod/admin.php:752 ../../mod/admin.php:887
-msgid "select all"
-msgstr "seleziona tutti"
-
-#: ../../mod/admin.php:753
-msgid "User registrations waiting for confirm"
-msgstr "Richieste di registrazione in attesa di conferma"
-
-#: ../../mod/admin.php:754
-msgid "Request date"
-msgstr "Data richiesta"
-
-#: ../../mod/admin.php:755
-msgid "No registrations."
-msgstr "Nessuna registrazione."
-
-#: ../../mod/admin.php:756
-msgid "Approve"
-msgstr "Approva"
-
-#: ../../mod/admin.php:757
-msgid "Deny"
-msgstr "Nega"
-
-#: ../../mod/admin.php:759 ../../mod/connedit.php:372
-#: ../../mod/connedit.php:515
-msgid "Block"
-msgstr "Blocca"
-
-#: ../../mod/admin.php:760 ../../mod/connedit.php:372
-#: ../../mod/connedit.php:515
-msgid "Unblock"
-msgstr "Sblocca"
-
-#: ../../mod/admin.php:763
-msgid "Register date"
-msgstr "Data registrazione"
-
-#: ../../mod/admin.php:763
-msgid "Last login"
-msgstr "Ultimo accesso"
-
-#: ../../mod/admin.php:763
-msgid "Expires"
-msgstr "Con scadenza"
-
-#: ../../mod/admin.php:763
-msgid "Service Class"
-msgstr "Service Class"
-
-#: ../../mod/admin.php:765
msgid ""
-"Selected users will be deleted!\\n\\nEverything these users had posted on "
-"this site will be permanently deleted!\\n\\nAre you sure?"
-msgstr "Gli utenti selezionati saranno eliminati!\\n\\nTutto quello che gli utenti hanno pubblicato su questo sito sarà permanentemente eliminato!\\n\\nConfermi?"
+"In order to store these compiled templates, the web server needs to have "
+"write access to the directory %s under the Red top level folder."
+msgstr "Per poter memorizzare i template compilati, il web server deve avere accesso in scrittura a %s sotto la cartella di installazione di RedMatrix."
-#: ../../mod/admin.php:766
+#: ../../mod/setup.php:526 ../../mod/setup.php:544
msgid ""
-"The user {0} will be deleted!\\n\\nEverything this user has posted on this "
-"site will be permanently deleted!\\n\\nAre you sure?"
-msgstr "L'utente {0} sarà eliminato!\\n\\nTutto quello che ha pubblicato su questo sito sarà permanentemente eliminato!\\n\\nConfermi?"
-
-#: ../../mod/admin.php:799
-#, php-format
-msgid "%s channel censored/uncensored"
-msgid_plural "%s channelss censored/uncensored"
-msgstr[0] "Censura modificata per %s canale"
-msgstr[1] "Censura modificata per %s canali"
-
-#: ../../mod/admin.php:806
-#, php-format
-msgid "%s channel deleted"
-msgid_plural "%s channels deleted"
-msgstr[0] "%s canale è stato rimosso"
-msgstr[1] "%s canali sono stati rimossi"
-
-#: ../../mod/admin.php:825
-msgid "Channel not found"
-msgstr "Canale non trovato"
-
-#: ../../mod/admin.php:836
-#, php-format
-msgid "Channel '%s' deleted"
-msgstr "Il canale '%s' è stato rimosso"
+"Please ensure that the user that your web server runs as (e.g. www-data) has"
+" write access to this folder."
+msgstr "Assicurati che il tuo web server sia in esecuzione da parte di un utente che ha diritto di scrittura su quella cartella (ad esempio www-data)."
-#: ../../mod/admin.php:846
+#: ../../mod/setup.php:527
#, php-format
-msgid "Channel '%s' uncensored"
-msgstr "Rimossa la censura dal canale '%s'"
+msgid ""
+"Note: as a security measure, you should give the web server write access to "
+"%s only--not the template files (.tpl) that it contains."
+msgstr "Nota bene: come precauzione, dovresti dare i diritti di scrittura solamente su %s e non sui file template (.tpl) che contiene."
-#: ../../mod/admin.php:846
+#: ../../mod/setup.php:530
#, php-format
-msgid "Channel '%s' censored"
-msgstr "Applicata una censura al canale '%s'"
+msgid "%s is writable"
+msgstr "%s è scrivibile"
-#: ../../mod/admin.php:889
-msgid "Censor"
-msgstr "Applica una censura"
+#: ../../mod/setup.php:543
+msgid ""
+"Red uses the store directory to save uploaded files. The web server needs to"
+" have write access to the store directory under the Red top level folder"
+msgstr "RedMatrix salva i file caricati nella cartella \"store\" sul server. Il server deve avere i diritti di scrittura su quella cartella che si trova dentro l'installazione di RedMatrix"
-#: ../../mod/admin.php:890
-msgid "Uncensor"
-msgstr "Rimuovi la censura"
+#: ../../mod/setup.php:547
+msgid "store is writable"
+msgstr "l'archivio è scrivibile"
-#: ../../mod/admin.php:893
-msgid "UID"
-msgstr "UID"
+#: ../../mod/setup.php:577
+msgid ""
+"SSL certificate cannot be validated. Fix certificate or disable https access"
+" to this site."
+msgstr "Il certificato SSL non può essere validato. Correggi l'errore o disabilita l'accesso https al sito."
-#: ../../mod/admin.php:893 ../../mod/profiles.php:337
-msgid "Address"
-msgstr "Indirizzo"
+#: ../../mod/setup.php:578
+msgid ""
+"If you have https access to your website or allow connections to TCP port "
+"443 (the https: port), you MUST use a browser-valid certificate. You MUST "
+"NOT use self-signed certificates!"
+msgstr "Se abiliti https per il tuo sito o permetti connessioni TCP su port 443 (quella di https), DEVI usare un certificato riconosciuto dai browser internet. NON DEVI usare certificati generati da te!"
-#: ../../mod/admin.php:895
+#: ../../mod/setup.php:579
msgid ""
-"Selected channels will be deleted!\\n\\nEverything that was posted in these "
-"channels on this site will be permanently deleted!\\n\\nAre you sure?"
-msgstr "I canali selezionati saranno rimossi!\\n\\nTutto ciò che è stato pubblicato su questo server tramite questi canali sarà irreversibilmente eliminato!\\n\\nVuoi confermare?"
+"This restriction is incorporated because public posts from you may for "
+"example contain references to images on your own hub."
+msgstr "Questa restrizione è necessaria perché i tuoi post pubblici potrebbero contenere riferimenti a immagini sul tuo server."
-#: ../../mod/admin.php:896
+#: ../../mod/setup.php:580
msgid ""
-"The channel {0} will be deleted!\\n\\nEverything that was posted in this "
-"channel on this site will be permanently deleted!\\n\\nAre you sure?"
-msgstr "Il canale {0} sarà rimosso!\\n\\nTutto ciò che è stato pubblicato su questo server tramite questo canale sarà irreversibilmente eliminato!\\n\\nVuoi confermare?"
+"If your certificate is not recognized, members of other sites (who may "
+"themselves have valid certificates) will get a warning message on their own "
+"site complaining about security issues."
+msgstr "Se il tuo certificato non è riconosciuto, gli utenti che ti seguono da altri siti (che avranno certificati validi) riceveranno gravi avvisi di sicurezza dal browser."
-#: ../../mod/admin.php:935
-#, php-format
-msgid "Plugin %s disabled."
-msgstr "Plugin %s non attivo."
+#: ../../mod/setup.php:581
+msgid ""
+"This can cause usability issues elsewhere (not just on your own site) so we "
+"must insist on this requirement."
+msgstr "Ciò può creare seri problemi di usabilità (non solo sul tuo sito), quindi dobbiamo insistere su questo punto."
-#: ../../mod/admin.php:939
-#, php-format
-msgid "Plugin %s enabled."
-msgstr "Plugin %s attivo."
+#: ../../mod/setup.php:582
+msgid ""
+"Providers are available that issue free certificates which are browser-"
+"valid."
+msgstr "Eventualmente, considera che esistono provider che rilasciano certificati gratuiti riconosciuti dai browser."
-#: ../../mod/admin.php:949 ../../mod/admin.php:1151
-msgid "Disable"
-msgstr "Disattiva"
+#: ../../mod/setup.php:584
+msgid "SSL certificate validation"
+msgstr "Validazione del certificato SSL"
-#: ../../mod/admin.php:951 ../../mod/admin.php:1153
-msgid "Enable"
-msgstr "Attiva"
+#: ../../mod/setup.php:590
+msgid ""
+"Url rewrite in .htaccess is not working. Check your server "
+"configuration.Test: "
+msgstr "In .htaccess la funzionalità url rewrite non funziona. Controlla la configurazione del server. Test:"
-#: ../../mod/admin.php:977 ../../mod/admin.php:1182
-msgid "Toggle"
-msgstr "Attiva/disattiva"
+#: ../../mod/setup.php:592
+msgid "Url rewrite is working"
+msgstr "Url rewrite funziona correttamente"
-#: ../../mod/admin.php:985 ../../mod/admin.php:1192
-msgid "Author: "
-msgstr "Autore:"
+#: ../../mod/setup.php:602
+msgid ""
+"The database configuration file \".htconfig.php\" could not be written. "
+"Please use the enclosed text to create a configuration file in your web "
+"server root."
+msgstr "Il file di configurazione del database \".htconfig.php\" non puo' essere scritto. Usa il testo qui di seguito per creare questo file di configurazione nella cartella principale del tuo sito."
-#: ../../mod/admin.php:986 ../../mod/admin.php:1193
-msgid "Maintainer: "
-msgstr "Gestore:"
+#: ../../mod/setup.php:626
+msgid "Errors encountered creating database tables."
+msgstr "La creazione delle tabelle del database ha generato errori."
-#: ../../mod/admin.php:1115
-msgid "No themes found."
-msgstr "Nessun tema trovato."
+#: ../../mod/setup.php:661
+msgid "<h1>What next</h1>"
+msgstr "<h1>I prossimi passi</h1>"
-#: ../../mod/admin.php:1174
-msgid "Screenshot"
-msgstr "Istantanea dello schermo"
+#: ../../mod/setup.php:662
+msgid ""
+"IMPORTANT: You will need to [manually] setup a scheduled task for the "
+"poller."
+msgstr "IMPORTANTE: Devi creare [manualmente] la pianificazione del polling."
-#: ../../mod/admin.php:1222
-msgid "[Experimental]"
-msgstr "[Sperimentale]"
+#: ../../mod/attach.php:9
+msgid "Item not available."
+msgstr "Elemento non disponibile."
-#: ../../mod/admin.php:1223
-msgid "[Unsupported]"
-msgstr "[Non supportato]"
+#: ../../mod/probe.php:23 ../../mod/probe.php:29
+#, php-format
+msgid "Fetching URL returns error: %1$s"
+msgstr "La chiamata all'URL restituisce questo errore: %1$s"
-#: ../../mod/admin.php:1250
-msgid "Log settings updated."
-msgstr "Impostazioni di log aggiornate."
+#: ../../mod/block.php:27 ../../mod/page.php:33
+msgid "Invalid item."
+msgstr "Elemento non valido."
-#: ../../mod/admin.php:1306
-msgid "Clear"
-msgstr "Pulisci"
+#: ../../mod/block.php:39 ../../mod/wall_upload.php:29 ../../mod/page.php:45
+msgid "Channel not found."
+msgstr "Canale non trovato."
-#: ../../mod/admin.php:1312
-msgid "Debugging"
-msgstr "Debugging"
+#: ../../mod/block.php:75 ../../mod/display.php:102 ../../mod/help.php:70
+#: ../../mod/page.php:81 ../../index.php:241
+msgid "Page not found."
+msgstr "Pagina non trovata."
-#: ../../mod/admin.php:1313
-msgid "Log file"
-msgstr "File di log"
+#: ../../mod/uexport.php:33 ../../mod/uexport.php:34
+msgid "Export Channel"
+msgstr "Esporta il canale"
-#: ../../mod/admin.php:1313
+#: ../../mod/uexport.php:35
msgid ""
-"Must be writable by web server. Relative to your Red top-level directory."
-msgstr "Deve essere scrivibile dal web server. È relativa alla cartella dove è installato Red."
-
-#: ../../mod/admin.php:1314
-msgid "Log level"
-msgstr "Livello di log"
+"Export your basic channel information to a small file. This acts as a "
+"backup of your connections, permissions, profile and basic data, which can "
+"be used to import your data to a new hub, but\tdoes not contain your "
+"content."
+msgstr "Esporta le informazioni di base del tuo canale in un piccolo file. E' utile per avere un salvataggio di sicurezza dei tuoi contatti, del tuo profilo ed altri dati di base. Può essere usato per importare il tuo canale su un nuovo server, ma\tnon include i contenuti, per esempio articoli e foto."
-#: ../../mod/filer.php:49
-msgid "- select -"
-msgstr "- scegli -"
+#: ../../mod/uexport.php:36
+msgid "Export Content"
+msgstr "Esporta i contenuti"
-#: ../../mod/connections.php:37 ../../mod/connedit.php:64
-msgid "Could not access contact record."
-msgstr "Non è possibile accedere alle informazioni sul contatto."
-
-#: ../../mod/connections.php:51 ../../mod/connedit.php:78
-msgid "Could not locate selected profile."
-msgstr "Non riesco a trovare il profilo selezionato."
-
-#: ../../mod/connections.php:94 ../../mod/connedit.php:131
-msgid "Connection updated."
-msgstr "Contatto aggiornato."
+#: ../../mod/uexport.php:37
+msgid ""
+"Export your channel information and all the content to a JSON backup. This "
+"backs up all of your connections, permissions, profile data and all of your "
+"content, but is generally not suitable for importing a channel to a new hub "
+"as this file may be VERY large. Please be patient - it may take several "
+"minutes for this download to begin."
+msgstr "Esporta i dati del canale e i contenuti in un file in formato JSON. E' un salvataggio dei tuoi contatti, dei dati del profilo e anche di tutti i contenuti. Questa non è la soluzione opportuna per importare il tuo canale su un nuovo server, visto che il file potrebbe avere dimensioni NOTEVOLI. Devi pazientare - ci vorranno alcuni minuti per raccogliere i dati prima che inizi lo scaricamento."
-#: ../../mod/connections.php:96 ../../mod/connedit.php:133
-msgid "Failed to update connection record."
-msgstr "Impossibile aggiornare le informazioni del contatto."
+#: ../../mod/delegate.php:95
+msgid "No potential page delegates located."
+msgstr "Impossibile trovare delegati per questa pagina."
-#: ../../mod/connections.php:191 ../../mod/connections.php:292
-msgid "Blocked"
-msgstr "Bloccati"
+#: ../../mod/delegate.php:121
+msgid "Delegate Page Management"
+msgstr "Gestione delegati per la pagina"
-#: ../../mod/connections.php:196 ../../mod/connections.php:299
-msgid "Ignored"
-msgstr "Ignorati"
+#: ../../mod/delegate.php:123
+msgid ""
+"Delegates are able to manage all aspects of this account/page except for "
+"basic account settings. Please do not delegate your personal account to "
+"anybody that you do not trust completely."
+msgstr "I Delegati sono in grando di gestire tutti gli aspetti di questa pagina, tranne per i settaggi di base dell'account. Non delegare il tuo account personale a nessuno di cui non ti fidi ciecamente."
-#: ../../mod/connections.php:201 ../../mod/connections.php:313
-msgid "Hidden"
-msgstr "Nascosti"
+#: ../../mod/delegate.php:124
+msgid "Existing Page Managers"
+msgstr "Gestori attuali della pagina"
-#: ../../mod/connections.php:206 ../../mod/connections.php:306
-msgid "Archived"
-msgstr "Archiviati"
+#: ../../mod/delegate.php:126
+msgid "Existing Page Delegates"
+msgstr "Delegati attuali della pagina"
-#: ../../mod/connections.php:230 ../../mod/connections.php:245
-msgid "All"
-msgstr "Tutti"
+#: ../../mod/delegate.php:128
+msgid "Potential Delegates"
+msgstr "Delegati potenziali"
-#: ../../mod/connections.php:240 ../../mod/connections.php:320
-msgid "Unconnected"
-msgstr "Non connesso"
+#: ../../mod/delegate.php:130 ../../mod/photos.php:905 ../../mod/tagrm.php:133
+msgid "Remove"
+msgstr "Rimuovi"
-#: ../../mod/connections.php:270
-msgid "Suggest new connections"
-msgstr "Suggerisci nuovi contatti"
+#: ../../mod/delegate.php:131
+msgid "Add"
+msgstr "Aggiungi"
-#: ../../mod/connections.php:273
-msgid "New Connections"
-msgstr "Nuovi contatti"
+#: ../../mod/delegate.php:132
+msgid "No entries."
+msgstr "Nessun risultato."
-#: ../../mod/connections.php:276
-msgid "Show pending (new) connections"
-msgstr "Richieste di contatto in attesa"
+#: ../../mod/siteinfo.php:93
+#, php-format
+msgid "Version %s"
+msgstr "Versione %s"
-#: ../../mod/connections.php:279 ../../mod/profperm.php:139
-msgid "All Connections"
-msgstr "Tutti i contatti"
+#: ../../mod/siteinfo.php:114
+msgid "Installed plugins/addons/apps:"
+msgstr "App e componenti installati:"
-#: ../../mod/connections.php:282
-msgid "Show all connections"
-msgstr "Mostra tutti i contatti"
+#: ../../mod/siteinfo.php:127
+msgid "No installed plugins/addons/apps"
+msgstr "Nessuna app o componente installato"
-#: ../../mod/connections.php:285
-msgid "Unblocked"
-msgstr "Non bloccati"
+#: ../../mod/siteinfo.php:135
+msgid "Red"
+msgstr "RedMatrix"
-#: ../../mod/connections.php:288
-msgid "Only show unblocked connections"
-msgstr "Mostra solo i contatti non bloccati"
+#: ../../mod/siteinfo.php:136
+msgid ""
+"This is a hub of the Red Matrix - a global cooperative network of "
+"decentralized privacy enhanced websites."
+msgstr "Questo è un hub di RedMatrix - una rete cooperativa e decentralizzata di siti ad elevata privacy. "
-#: ../../mod/connections.php:295
-msgid "Only show blocked connections"
-msgstr "Mostra solo i contatti bloccati"
+#: ../../mod/siteinfo.php:138
+msgid "Tag: "
+msgstr "Tag: "
-#: ../../mod/connections.php:302
-msgid "Only show ignored connections"
-msgstr "Mostra solo i contatti ignorati"
+#: ../../mod/siteinfo.php:140
+msgid "Last background fetch: "
+msgstr "Ultima acquisizione:"
-#: ../../mod/connections.php:309
-msgid "Only show archived connections"
-msgstr "Mostra solo i contatti archiviati"
+#: ../../mod/siteinfo.php:143
+msgid "Running at web location"
+msgstr "In esecuzione sull'indirizzo web"
-#: ../../mod/connections.php:316
-msgid "Only show hidden connections"
-msgstr "Mostra solo i contatti nascosti"
+#: ../../mod/siteinfo.php:144
+msgid ""
+"Please visit <a href=\"https://redmatrix.me\">RedMatrix.me</a> to learn more"
+" about the Red Matrix."
+msgstr "Visita <a href=\"https://redmatrix.me\">RedMatrix.me</a> per scoprire di più su Red Matrix."
-#: ../../mod/connections.php:323
-msgid "Only show one-way connections"
-msgstr "Mostra solo i contatti non ricambiati"
+#: ../../mod/siteinfo.php:145
+msgid "Bug reports and issues: please visit"
+msgstr "Per segnalare bug e problemi: visita"
-#: ../../mod/connections.php:368
-#, php-format
-msgid "%1$s [%2$s]"
-msgstr "%1$s [%2$s]"
+#: ../../mod/siteinfo.php:148
+msgid ""
+"Suggestions, praise, etc. - please email \"redmatrix\" at librelist - dot "
+"com"
+msgstr "Per consigli, ringraziamenti, ecc. - scrivi a \"redmatrix\" at librelist - dot com"
-#: ../../mod/connections.php:369
-msgid "Edit contact"
-msgstr "Modifica il contatto"
+#: ../../mod/siteinfo.php:150
+msgid "Site Administrators"
+msgstr "Amministratori del sito"
-#: ../../mod/connections.php:390
-msgid "Search your connections"
-msgstr "Cerca tra i contatti"
+#: ../../mod/sources.php:32
+msgid "Failed to create source. No channel selected."
+msgstr "Impossibile creare la sorgente. Nessun canale selezionato."
-#: ../../mod/connections.php:391
-msgid "Finding: "
-msgstr "Ricerca: "
+#: ../../mod/sources.php:45
+msgid "Source created."
+msgstr "Sorgente creata."
-#: ../../mod/dirprofile.php:9 ../../mod/photos.php:443
-#: ../../mod/viewconnections.php:17 ../../mod/directory.php:15
-#: ../../mod/display.php:9 ../../mod/search.php:13
-msgid "Public access denied."
-msgstr "Accesso pubblico negato."
+#: ../../mod/sources.php:57
+msgid "Source updated."
+msgstr "Sorgente aggiornata."
-#: ../../mod/dirprofile.php:92 ../../mod/directory.php:143
-#: ../../mod/profiles.php:570
-msgid "Age: "
-msgstr "Età:"
+#: ../../mod/sources.php:82
+msgid "*"
+msgstr "*"
-#: ../../mod/dirprofile.php:95 ../../mod/directory.php:146
-msgid "Gender: "
-msgstr "Sesso:"
+#: ../../mod/sources.php:89
+msgid "Manage remote sources of content for your channel."
+msgstr "Gestisci le sorgenti dei contenuti del tuo canale."
-#: ../../mod/dirprofile.php:108
-msgid "Status: "
-msgstr "Stato:"
+#: ../../mod/sources.php:90 ../../mod/sources.php:100
+msgid "New Source"
+msgstr "Nuova sorgente"
-#: ../../mod/dirprofile.php:109
-msgid "Sexual Preference: "
-msgstr "Preferenza sessuale:"
+#: ../../mod/sources.php:101 ../../mod/sources.php:133
+msgid ""
+"Import all or selected content from the following channel into this channel "
+"and distribute it according to your channel settings."
+msgstr "Importa nel tuo canale tutti o una parte dei contenuti dal canale seguente."
-#: ../../mod/dirprofile.php:111
-msgid "Homepage: "
-msgstr "Homepage:"
+#: ../../mod/sources.php:102 ../../mod/sources.php:134
+msgid "Only import content with these words (one per line)"
+msgstr "Importa solo i contenuti che hanno queste parole (una per riga)"
-#: ../../mod/dirprofile.php:112
-msgid "Hometown: "
-msgstr "Città dove vivo:"
+#: ../../mod/sources.php:102 ../../mod/sources.php:134
+msgid "Leave blank to import all public content"
+msgstr "Lascia vuoto per importare tutti i contenuti pubblici"
-#: ../../mod/dirprofile.php:114
-msgid "About: "
-msgstr "Informazioni:"
+#: ../../mod/sources.php:103 ../../mod/sources.php:137
+#: ../../mod/new_channel.php:112
+msgid "Channel Name"
+msgstr "Nome del canale"
-#: ../../mod/dirprofile.php:162
-msgid "Keywords: "
-msgstr "Parole chiave:"
+#: ../../mod/sources.php:123 ../../mod/sources.php:150
+msgid "Source not found."
+msgstr "Sorgente non trovata."
-#: ../../mod/dirprofile.php:175 ../../mod/mitem.php:78 ../../mod/xchan.php:27
-#: ../../mod/menu.php:120
-msgid "Not found."
-msgstr "Non trovato."
+#: ../../mod/sources.php:130
+msgid "Edit Source"
+msgstr "Modifica la sorgente"
-#: ../../mod/photos.php:77
-msgid "Page owner information could not be retrieved."
-msgstr "Impossibile ottenere informazioni sul proprietario della pagina."
+#: ../../mod/sources.php:131
+msgid "Delete Source"
+msgstr "Elimina la sorgente"
-#: ../../mod/photos.php:97
-msgid "Album not found."
-msgstr "Album non trovato."
+#: ../../mod/sources.php:158
+msgid "Source removed"
+msgstr "Sorgente eliminata"
-#: ../../mod/photos.php:119 ../../mod/photos.php:669
-msgid "Delete Album"
-msgstr "Elimina album"
+#: ../../mod/sources.php:160
+msgid "Unable to remove source."
+msgstr "Impossibile rimuovere la sorgente."
-#: ../../mod/photos.php:159 ../../mod/photos.php:957
-msgid "Delete Photo"
-msgstr "Elimina foto"
+#: ../../mod/profperm.php:29 ../../mod/profperm.php:58
+msgid "Invalid profile identifier."
+msgstr "Indentificativo del profilo non valido."
-#: ../../mod/photos.php:453
-msgid "No photos selected"
-msgstr "Nessuna foto selezionata"
+#: ../../mod/profperm.php:110
+msgid "Profile Visibility Editor"
+msgstr "Modifica la visibilità del profilo"
-#: ../../mod/photos.php:500
-msgid "Access to this item is restricted."
-msgstr "Questo elemento non è visibile a tutti."
+#: ../../mod/profperm.php:114
+msgid "Click on a contact to add or remove."
+msgstr "Clicca su un contatto per aggiungerlo o rimuoverlo."
-#: ../../mod/photos.php:574
-#, php-format
-msgid "You have used %1$.2f Mbytes of %2$.2f Mbytes photo storage."
-msgstr "Hai usato %1$.2f Mb di %2$.2f Mb disponibili per le foto."
+#: ../../mod/profperm.php:123
+msgid "Visible To"
+msgstr "Visibile a"
-#: ../../mod/photos.php:577
-#, php-format
-msgid "You have used %1$.2f Mbytes of photo storage."
-msgstr "Hai usato %1$.2f Mb di spazio per le foto."
+#: ../../mod/profperm.php:139 ../../mod/connections.php:279
+msgid "All Connections"
+msgstr "Tutti i contatti"
-#: ../../mod/photos.php:596
-msgid "Upload Photos"
-msgstr "Carica foto"
+#: ../../mod/events.php:81
+msgid "Event can not end before it has started."
+msgstr "Un evento non può terminare prima del suo inizio."
-#: ../../mod/photos.php:600 ../../mod/photos.php:664
-msgid "New album name: "
-msgstr "Nome del nuovo album: "
+#: ../../mod/events.php:86
+msgid "Event title and start time are required."
+msgstr "Sono necessari il titolo e l'ora d'inizio dell'evento."
-#: ../../mod/photos.php:601
-msgid "or existing album name: "
-msgstr "o nome di un album esistente: "
+#: ../../mod/events.php:100
+msgid "Event not found."
+msgstr "Evento non trovato."
-#: ../../mod/photos.php:602
-msgid "Do not show a status post for this upload"
-msgstr "Non creare un messaggio di stato per questo caricamento"
+#: ../../mod/events.php:369
+msgid "l, F j"
+msgstr "l j F"
-#: ../../mod/photos.php:653 ../../mod/photos.php:675 ../../mod/photos.php:1129
-#: ../../mod/photos.php:1144
-msgid "Contact Photos"
-msgstr "Foto dei contatti"
+#: ../../mod/events.php:391
+msgid "Edit event"
+msgstr "Modifica l'evento"
-#: ../../mod/photos.php:679
-msgid "Edit Album"
-msgstr "Modifica album"
+#: ../../mod/events.php:443
+msgid "Create New Event"
+msgstr "Crea un nuovo evento"
-#: ../../mod/photos.php:685
-msgid "Show Newest First"
-msgstr "Prima i più recenti"
+#: ../../mod/events.php:444 ../../mod/photos.php:859
+msgid "Previous"
+msgstr "Precendente"
-#: ../../mod/photos.php:687
-msgid "Show Oldest First"
-msgstr "Prima i più vecchi"
+#: ../../mod/events.php:446
+msgid "Export"
+msgstr "Esporta"
-#: ../../mod/photos.php:730 ../../mod/photos.php:1176
-msgid "View Photo"
-msgstr "Guarda la foto"
+#: ../../mod/events.php:571
+msgid "Event details"
+msgstr "Dettagli evento"
-#: ../../mod/photos.php:776
-msgid "Permission denied. Access to this item may be restricted."
-msgstr "Permesso negato. L'accesso a questo elemento può essere stato limitato."
+#: ../../mod/events.php:572
+msgid "Starting date and Title are required."
+msgstr "Titolo e data d'inizio sono obbligatori."
-#: ../../mod/photos.php:778
-msgid "Photo not available"
-msgstr "Foto non disponibile"
+#: ../../mod/events.php:574
+msgid "Categories (comma-separated list)"
+msgstr "Categorie (separate da virgola)"
-#: ../../mod/photos.php:838
-msgid "Use as profile photo"
-msgstr "Usa come foto del profilo"
+#: ../../mod/events.php:576
+msgid "Event Starts:"
+msgstr "Inizio:"
-#: ../../mod/photos.php:862
-msgid "View Full Size"
-msgstr "Vedi nelle dimensioni originali"
+#: ../../mod/events.php:576 ../../mod/events.php:592 ../../mod/appman.php:91
+#: ../../mod/appman.php:92
+msgid "Required"
+msgstr "Obbligatorio"
-#: ../../mod/photos.php:906 ../../mod/delegate.php:130 ../../mod/tagrm.php:93
-msgid "Remove"
-msgstr "Rimuovi"
+#: ../../mod/events.php:582
+msgid "Finish date/time is not known or not relevant"
+msgstr "La data/ora di fine non è rilevante"
-#: ../../mod/photos.php:940
-msgid "Edit photo"
-msgstr "Modifica la foto"
+#: ../../mod/events.php:584
+msgid "Event Finishes:"
+msgstr "Fine:"
-#: ../../mod/photos.php:942
-msgid "Rotate CW (right)"
-msgstr "Ruota (senso orario)"
+#: ../../mod/events.php:586
+msgid "Adjust for viewer timezone"
+msgstr "Adatta al fuso orario di chi legge"
-#: ../../mod/photos.php:943
-msgid "Rotate CCW (left)"
-msgstr "Ruota (senso antiorario)"
+#: ../../mod/events.php:588
+msgid "Description:"
+msgstr "Descrizione:"
-#: ../../mod/photos.php:946
-msgid "New album name"
-msgstr "Nuovo nome dell'album"
+#: ../../mod/events.php:592
+msgid "Title:"
+msgstr "Titolo:"
-#: ../../mod/photos.php:949
-msgid "Caption"
-msgstr "Titolo"
+#: ../../mod/events.php:594
+msgid "Share this event"
+msgstr "Condividi questo evento"
-#: ../../mod/photos.php:951
-msgid "Add a Tag"
-msgstr "Aggiungi tag"
+#: ../../mod/pubsites.php:16
+msgid "Public Sites"
+msgstr "Siti pubblici"
-#: ../../mod/photos.php:954
+#: ../../mod/pubsites.php:19
msgid ""
-"Example: @bob, @Barbara_Jensen, @jim@example.com, #California, #camping"
-msgstr "Per esempio: @luca, @Maria_Bianchi, @bob@example.com, #California, #camping"
+"The listed sites allow public registration into the Red Matrix. All sites in"
+" the matrix are interlinked so membership on any of them conveys membership "
+"in the matrix as a whole. Some sites may require subscription or provide "
+"tiered service plans. The provider links <strong>may</strong> provide "
+"additional details."
+msgstr "Gli indirizzi elencati permettono la registrazione su RedMatrix. Tutti i siti di questa rete sono interconnessi, quindi essere registrati su uno è come essere registrati ovunque. Alcuni potrebbero richiedere un'iscrizione a pagamento o prevedere diverse tipologie di abbonamento. Eventualmente potrai trovare maggiori informazioni visitando ciascun sito."
-#: ../../mod/photos.php:1107
-msgid "In This Photo:"
-msgstr "In questa foto:"
+#: ../../mod/pubsites.php:25
+msgid "Site URL"
+msgstr "URL del sito"
-#: ../../mod/photos.php:1182
-msgid "View Album"
-msgstr "Guarda l'album"
+#: ../../mod/pubsites.php:25
+msgid "Access Type"
+msgstr "Tipo di accesso"
-#: ../../mod/photos.php:1191
-msgid "Recent Photos"
-msgstr "Foto recenti"
+#: ../../mod/pubsites.php:25
+msgid "Registration Policy"
+msgstr "Politica di registrazione"
-#: ../../mod/mitem.php:14 ../../mod/menu.php:92
-msgid "Menu not found."
-msgstr "Menù non trovato."
+#: ../../mod/pubsites.php:25 ../../mod/profiles.php:428
+msgid "Location"
+msgstr "Posizione geografica"
-#: ../../mod/mitem.php:47
-msgid "Menu element updated."
-msgstr "L'elemento del menù è stato aggiornato."
+#: ../../mod/channel.php:25 ../../mod/chat.php:19
+msgid "You must be logged in to see this page."
+msgstr "Devi aver effettuato l'accesso per vedere questa pagina."
-#: ../../mod/mitem.php:51
-msgid "Unable to update menu element."
-msgstr "Non è possibile aggiornare l'elemento del menù."
+#: ../../mod/channel.php:87
+msgid "Insufficient permissions. Request redirected to profile page."
+msgstr "Permessi insufficienti. Sarà visualizzata la pagina del profilo."
-#: ../../mod/mitem.php:57
-msgid "Menu element added."
-msgstr "Elemento aggiunto al menù."
+#: ../../mod/rbmark.php:88
+msgid "Select a bookmark folder"
+msgstr "Scegli una cartella di segnalibri"
-#: ../../mod/mitem.php:61
-msgid "Unable to add menu element."
-msgstr "Impossibile aggiungere l'elemento al menù."
+#: ../../mod/rbmark.php:93
+msgid "Save Bookmark"
+msgstr "Salva segnalibro"
-#: ../../mod/mitem.php:96
-msgid "Manage Menu Elements"
-msgstr "Gestione elementi del menù"
+#: ../../mod/rbmark.php:94
+msgid "URL of bookmark"
+msgstr "URL del segnalibro"
-#: ../../mod/mitem.php:99
-msgid "Edit menu"
-msgstr "Modifica il menù"
+#: ../../mod/rbmark.php:95 ../../mod/appman.php:93
+msgid "Description"
+msgstr "Descrizione"
-#: ../../mod/mitem.php:102
-msgid "Edit element"
-msgstr "Modifica l'elemento"
+#: ../../mod/rbmark.php:99
+msgid "Or enter new bookmark folder name"
+msgstr "O inserisci il nome di una nuova cartella di segnalibri"
-#: ../../mod/mitem.php:103
-msgid "Drop element"
-msgstr "Elimina l'elemento"
+#: ../../mod/chat.php:167
+msgid "Room not found"
+msgstr "Area chat non trovata"
-#: ../../mod/mitem.php:104
-msgid "New element"
-msgstr "Nuovo elemento"
+#: ../../mod/chat.php:178
+msgid "Leave Room"
+msgstr "Lascia l'area chat"
-#: ../../mod/mitem.php:105
-msgid "Edit this menu container"
-msgstr "Modifica il contenitore del menù"
+#: ../../mod/chat.php:179
+msgid "Delete This Room"
+msgstr "Elimina questa area chat"
-#: ../../mod/mitem.php:106
-msgid "Add menu element"
-msgstr "Aggiungi un elemento al menù"
+#: ../../mod/chat.php:180
+msgid "I am away right now"
+msgstr "Non sono presente"
-#: ../../mod/mitem.php:107
-msgid "Delete this menu item"
-msgstr "Elimina questo elemento del menù"
+#: ../../mod/chat.php:181
+msgid "I am online"
+msgstr "Sono online"
-#: ../../mod/mitem.php:108
-msgid "Edit this menu item"
-msgstr "Modifica questo elemento del menù"
+#: ../../mod/chat.php:183
+msgid "Bookmark this room"
+msgstr "Aggiungi l'area chat ai segnalibri"
-#: ../../mod/mitem.php:131
-msgid "New Menu Element"
-msgstr "Nuovo elemento del menù"
+#: ../../mod/chat.php:207 ../../mod/chat.php:229
+msgid "New Chatroom"
+msgstr "Nuova area chat"
-#: ../../mod/mitem.php:133 ../../mod/mitem.php:176
-msgid "Menu Item Permissions"
-msgstr "Permessi del menu"
+#: ../../mod/chat.php:208
+msgid "Chatroom Name"
+msgstr "Nome dell'area chat"
-#: ../../mod/mitem.php:136 ../../mod/mitem.php:180
-msgid "Link text"
-msgstr "Testo del link"
+#: ../../mod/chat.php:225
+#, php-format
+msgid "%1$s's Chatrooms"
+msgstr "Le aree chat di %1$s"
-#: ../../mod/mitem.php:137 ../../mod/mitem.php:181
-msgid "URL of link"
-msgstr "Indirizzo del link"
+#: ../../mod/chatsvc.php:111
+msgid "Away"
+msgstr "Assente"
-#: ../../mod/mitem.php:138 ../../mod/mitem.php:182
-msgid "Use Red magic-auth if available"
-msgstr "Usa l'autenticazione magica di Red, se disponibile"
+#: ../../mod/chatsvc.php:115
+msgid "Online"
+msgstr "Online"
-#: ../../mod/mitem.php:139 ../../mod/mitem.php:183
-msgid "Open link in new window"
-msgstr "Apri il link in una nuova finestra"
+#: ../../mod/regmod.php:11
+msgid "Please login."
+msgstr "Effettua l'accesso."
-#: ../../mod/mitem.php:141 ../../mod/mitem.php:185
-msgid "Order in list"
-msgstr "Ordine dell'elenco"
+#: ../../mod/editpost.php:20 ../../mod/editblock.php:79
+#: ../../mod/editblock.php:95 ../../mod/editlayout.php:78
+#: ../../mod/editwebpage.php:77
+msgid "Item not found"
+msgstr "Elemento non trovato"
-#: ../../mod/mitem.php:141 ../../mod/mitem.php:185
-msgid "Higher numbers will sink to bottom of listing"
-msgstr "I numeri più alti andranno in fondo all'elenco"
+#: ../../mod/editpost.php:31
+msgid "Item is not editable"
+msgstr "L'elemento non è modificabile"
-#: ../../mod/mitem.php:154
-msgid "Menu item not found."
-msgstr "L'elemento del menù non è stato trovato."
+#: ../../mod/editpost.php:42 ../../mod/rpost.php:97
+msgid "Edit post"
+msgstr "Modifica articolo"
-#: ../../mod/mitem.php:163
-msgid "Menu item deleted."
-msgstr "L'elemento del menù è stato eliminato."
+#: ../../mod/editpost.php:53
+msgid "Delete item?"
+msgstr "Eliminare questo elemento?"
-#: ../../mod/mitem.php:165
-msgid "Menu item could not be deleted."
-msgstr "L'elemento del menù non può essere eliminato."
+#: ../../mod/editpost.php:116 ../../mod/editblock.php:147
+#: ../../mod/editlayout.php:143 ../../mod/editwebpage.php:178
+msgid "Insert YouTube video"
+msgstr "Inserisci video da YouTube"
-#: ../../mod/mitem.php:174
-msgid "Edit Menu Element"
-msgstr "Modifica l'elemento del menù"
+#: ../../mod/editpost.php:117 ../../mod/editblock.php:148
+#: ../../mod/editlayout.php:144 ../../mod/editwebpage.php:179
+msgid "Insert Vorbis [.ogg] video"
+msgstr "Inserisci video Vorbis [.ogg]"
-#: ../../mod/mitem.php:186 ../../mod/menu.php:114
-msgid "Modify"
-msgstr "Modifica"
+#: ../../mod/editpost.php:118 ../../mod/editblock.php:149
+#: ../../mod/editlayout.php:145 ../../mod/editwebpage.php:180
+msgid "Insert Vorbis [.ogg] audio"
+msgstr "Inserisci audio Vorbis [.ogg]"
-#: ../../mod/subthread.php:103
-#, php-format
-msgid "%1$s is following %2$s's %3$s"
-msgstr "%1$s sta seguendo %3$s di %2$s"
+#: ../../mod/removeme.php:29
+msgid ""
+"Channel removals are not allowed within 48 hours of changing the account "
+"password."
+msgstr "Non è possibile eliminare un canale prima di 48 ore dall'ultimo cambio password."
-#: ../../mod/regmod.php:12
-msgid "Please login."
-msgstr "Accedi."
+#: ../../mod/removeme.php:57
+msgid "Remove This Channel"
+msgstr "Elimina questo canale"
-#: ../../mod/mood.php:132
-msgid "Set your current mood and tell your friends"
-msgstr "Scegli il tuo umore attuale per mostrarlo agli amici"
+#: ../../mod/removeme.php:58
+msgid ""
+"This will completely remove this channel from the network. Once this has "
+"been done it is not recoverable."
+msgstr "Questo comando rimuoverà completamente il canale che stai usando. Una volta fatto non sarà più possibile ripristinarlo."
-#: ../../mod/lockview.php:30 ../../mod/lockview.php:36
-msgid "Remote privacy information not available."
-msgstr "Le informazioni remote sulla privacy non sono disponibili."
+#: ../../mod/removeme.php:59 ../../mod/removeaccount.php:59
+msgid "Please enter your password for verification:"
+msgstr "Inserisci la tua password per verifica:"
-#: ../../mod/lockview.php:45
-msgid "Visible to:"
-msgstr "Visibile a:"
+#: ../../mod/removeme.php:60
+msgid "Remove this channel and all its clones from the network"
+msgstr "Rimuovi questo canale e tutti i suoi cloni dalla rete"
-#: ../../mod/rbmark.php:88
-msgid "Select a bookmark folder"
-msgstr "Scegli una cartella di segnalibri"
+#: ../../mod/removeme.php:60
+msgid ""
+"By default only the instance of the channel located on this hub will be "
+"removed from the network"
+msgstr "L'impostazione predefinita è che sia eliminata solo l'istanza del canale presente su questo hub, non gli eventuali cloni"
-#: ../../mod/rbmark.php:93
-msgid "Save Bookmark"
-msgstr "Salva segnalibro"
+#: ../../mod/removeme.php:61
+msgid "Remove Channel"
+msgstr "Elimina questo canale"
-#: ../../mod/rbmark.php:94
-msgid "URL of bookmark"
-msgstr "URL del segnalibro"
+#: ../../mod/common.php:10
+msgid "No channel."
+msgstr "Nessun canale."
-#: ../../mod/rbmark.php:95 ../../mod/appman.php:93
-msgid "Description"
-msgstr "Descrizione"
+#: ../../mod/common.php:39
+msgid "Common connections"
+msgstr "Contatti in comune"
-#: ../../mod/rbmark.php:99
-msgid "Or enter new bookmark folder name"
-msgstr "O inserisci il nome di una nuova cartella di segnalibri"
+#: ../../mod/common.php:44
+msgid "No connections in common."
+msgstr "Nessun contatto in comune."
-#: ../../mod/pdledit.php:13
-msgid "Layout updated."
-msgstr "Layout aggiornato."
+#: ../../mod/rmagic.php:38
+msgid ""
+"We encountered a problem while logging in with the OpenID you provided. "
+"Please check the correct spelling of the ID."
+msgstr "Non è possibile effettuare login con l'OpenID che hai fornito. Per favore controlla che sia scritto correttamente."
-#: ../../mod/pdledit.php:28 ../../mod/pdledit.php:53
-msgid "Edit System Page Description"
-msgstr "Modifica i layout di sistema"
+#: ../../mod/rmagic.php:38
+msgid "The error message was:"
+msgstr "Messaggio di errore ricevuto:"
-#: ../../mod/pdledit.php:48
-msgid "Layout not found."
-msgstr "Layout non trovato."
+#: ../../mod/rmagic.php:42
+msgid "Authentication failed."
+msgstr "Autenticazione fallita."
-#: ../../mod/pdledit.php:54
-msgid "Module Name:"
-msgstr "Nome del modulo:"
+#: ../../mod/rmagic.php:82
+msgid "Remote Authentication"
+msgstr "Autenticazione a distanza"
-#: ../../mod/pdledit.php:55 ../../mod/layouts.php:59
-msgid "Layout Help"
-msgstr "Guida al layout"
+#: ../../mod/rmagic.php:83
+msgid "Enter your channel address (e.g. channel@example.com)"
+msgstr "Inserisci l'indirizzo del tuo canale (ad esempio lucia@esempio.com)"
-#: ../../mod/profile_photo.php:108
-msgid "Image uploaded but image cropping failed."
-msgstr "L'immagine è stata caricata, ma il non è stato possibile ritagliarla."
+#: ../../mod/rmagic.php:84
+msgid "Authenticate"
+msgstr "Autenticazione"
-#: ../../mod/profile_photo.php:161
-msgid "Image resize failed."
-msgstr "Il ridimensionamento dell'immagine è fallito."
+#: ../../mod/lostpass.php:15
+msgid "No valid account found."
+msgstr "Nessun account valido trovato."
-#: ../../mod/profile_photo.php:205
-msgid ""
-"Shift-reload the page or clear browser cache if the new photo does not "
-"display immediately."
-msgstr "Ricarica la pagina con shift+F5 o cancella la cache del browser se la nuova foto non viene mostrata immediatamente."
+#: ../../mod/lostpass.php:29
+msgid "Password reset request issued. Check your email."
+msgstr "La richiesta per reimpostare la password è stata inviata. Controlla la tua email."
-#: ../../mod/profile_photo.php:232
+#: ../../mod/lostpass.php:35 ../../mod/lostpass.php:102
#, php-format
-msgid "Image exceeds size limit of %d"
-msgstr "La dimensione dell'immagine supera il limite di %d"
-
-#: ../../mod/profile_photo.php:241
-msgid "Unable to process image."
-msgstr "Impossibile elaborare l'immagine."
+msgid "Site Member (%s)"
+msgstr "Utente del sito (%s)"
-#: ../../mod/profile_photo.php:290 ../../mod/profile_photo.php:339
-msgid "Photo not available."
-msgstr "Foto non disponibile."
+#: ../../mod/lostpass.php:40
+#, php-format
+msgid "Password reset requested at %s"
+msgstr "È stato richiesto di reimpostare password su %s"
-#: ../../mod/profile_photo.php:358
-msgid "Upload File:"
-msgstr "Carica un file:"
+#: ../../mod/lostpass.php:63
+msgid ""
+"Request could not be verified. (You may have previously submitted it.) "
+"Password reset failed."
+msgstr "La richiesta non può essere verificata (potresti averla già usata precedentemente). La password non sarà reimpostata."
-#: ../../mod/profile_photo.php:359
-msgid "Select a profile:"
-msgstr "Seleziona un profilo:"
+#: ../../mod/lostpass.php:85 ../../boot.php:1548
+msgid "Password Reset"
+msgstr "Reimposta la password"
-#: ../../mod/profile_photo.php:360
-msgid "Upload Profile Photo"
-msgstr "Carica la foto del profilo"
+#: ../../mod/lostpass.php:86
+msgid "Your password has been reset as requested."
+msgstr "La password è stata reimpostata come richiesto."
-#: ../../mod/profile_photo.php:365
-msgid "skip this step"
-msgstr "salta questo passaggio"
+#: ../../mod/lostpass.php:87
+msgid "Your new password is"
+msgstr "La tua nuova password è"
-#: ../../mod/profile_photo.php:365
-msgid "select a photo from your photo albums"
-msgstr "seleziona una foto dai tuoi album"
+#: ../../mod/lostpass.php:88
+msgid "Save or copy your new password - and then"
+msgstr "Salva o copia la tua nuova password, quindi"
-#: ../../mod/profile_photo.php:379
-msgid "Crop Image"
-msgstr "Ritaglia immagine"
+#: ../../mod/lostpass.php:89
+msgid "click here to login"
+msgstr "clicca qui per accedere"
-#: ../../mod/profile_photo.php:380
-msgid "Please adjust the image cropping for optimum viewing."
-msgstr "Ritaglia l'immagine per migliorarne la visualizzazione."
+#: ../../mod/lostpass.php:90
+msgid ""
+"Your password may be changed from the <em>Settings</em> page after "
+"successful login."
+msgstr "Puoi cambiare la tua password dalla pagina delle <em>Impostazioni</em> dopo aver effettuato l'accesso."
-#: ../../mod/profile_photo.php:382
-msgid "Done Editing"
-msgstr "Modifica terminata"
+#: ../../mod/lostpass.php:107
+#, php-format
+msgid "Your password has changed at %s"
+msgstr "La tua password su %s è cambiata"
-#: ../../mod/profile_photo.php:425
-msgid "Image uploaded successfully."
-msgstr "Immagine caricata con successo."
+#: ../../mod/lostpass.php:122
+msgid "Forgot your Password?"
+msgstr "Hai dimenticato la password?"
-#: ../../mod/profile_photo.php:427
-msgid "Image upload failed."
-msgstr "Il caricamento dell'immagine è fallito."
+#: ../../mod/lostpass.php:123
+msgid ""
+"Enter your email address and submit to have your password reset. Then check "
+"your email for further instructions."
+msgstr "Inserisci il tuo indirizzo email per reimpostare la password. Dopo aver inviato la richiesta, controlla l'email e troverai le istruzioni per continuare."
-#: ../../mod/profile_photo.php:436
-#, php-format
-msgid "Image size reduction [%s] failed."
-msgstr "Il ridimensionamento del'immagine [%s] è fallito."
+#: ../../mod/lostpass.php:124
+msgid "Email Address"
+msgstr "Indirizzo email"
-#: ../../mod/acl.php:239
-msgid "network"
-msgstr "rete"
+#: ../../mod/lostpass.php:125
+msgid "Reset"
+msgstr "Reimposta"
-#: ../../mod/menu.php:21
-msgid "Menu updated."
-msgstr "Menù aggiornato."
+#: ../../mod/connections.php:37 ../../mod/connedit.php:64
+msgid "Could not access contact record."
+msgstr "Non è possibile accedere alle informazioni sul contatto."
-#: ../../mod/menu.php:25
-msgid "Unable to update menu."
-msgstr "Impossibile aggiornare il menù."
+#: ../../mod/connections.php:51 ../../mod/connedit.php:86
+msgid "Could not locate selected profile."
+msgstr "Non riesco a trovare il profilo selezionato."
-#: ../../mod/menu.php:30
-msgid "Menu created."
-msgstr "Menù creato."
+#: ../../mod/connections.php:94 ../../mod/connedit.php:140
+msgid "Connection updated."
+msgstr "Contatto aggiornato."
-#: ../../mod/menu.php:34
-msgid "Unable to create menu."
-msgstr "Impossibile creare il menù."
+#: ../../mod/connections.php:96 ../../mod/connedit.php:142
+msgid "Failed to update connection record."
+msgstr "Impossibile aggiornare le informazioni del contatto."
-#: ../../mod/menu.php:57
-msgid "Manage Menus"
-msgstr "Gestione menù"
+#: ../../mod/connections.php:191 ../../mod/connections.php:292
+msgid "Blocked"
+msgstr "Bloccati"
-#: ../../mod/menu.php:60
-msgid "Drop"
-msgstr "Elimina"
+#: ../../mod/connections.php:196 ../../mod/connections.php:299
+msgid "Ignored"
+msgstr "Ignorati"
-#: ../../mod/menu.php:62
-msgid "Create a new menu"
-msgstr "Crea un nuovo menù"
+#: ../../mod/connections.php:201 ../../mod/connections.php:313
+msgid "Hidden"
+msgstr "Nascosti"
-#: ../../mod/menu.php:63
-msgid "Delete this menu"
-msgstr "Elimina questo menù"
+#: ../../mod/connections.php:206 ../../mod/connections.php:306
+msgid "Archived"
+msgstr "Archiviati"
-#: ../../mod/menu.php:64 ../../mod/menu.php:109
-msgid "Edit menu contents"
-msgstr "Modifica i contenuti del menù"
+#: ../../mod/connections.php:230 ../../mod/connections.php:245
+msgid "All"
+msgstr "Tutti"
-#: ../../mod/menu.php:65
-msgid "Edit this menu"
-msgstr "Modifica questo menù"
+#: ../../mod/connections.php:270
+msgid "Suggest new connections"
+msgstr "Suggerisci nuovi contatti"
-#: ../../mod/menu.php:80
-msgid "New Menu"
-msgstr "Nuovo menù"
+#: ../../mod/connections.php:273
+msgid "New Connections"
+msgstr "Nuovi contatti"
-#: ../../mod/menu.php:81 ../../mod/menu.php:110
-msgid "Menu name"
-msgstr "Nome del menù"
+#: ../../mod/connections.php:276
+msgid "Show pending (new) connections"
+msgstr "Richieste di contatto in attesa"
-#: ../../mod/menu.php:81 ../../mod/menu.php:110
-msgid "Must be unique, only seen by you"
-msgstr "Deve essere unico, lo vedrai solo tu"
+#: ../../mod/connections.php:282
+msgid "Show all connections"
+msgstr "Mostra tutti i contatti"
-#: ../../mod/menu.php:82 ../../mod/menu.php:111
-msgid "Menu title"
-msgstr "Titolo del menù"
+#: ../../mod/connections.php:285
+msgid "Unblocked"
+msgstr "Non bloccati"
-#: ../../mod/menu.php:82 ../../mod/menu.php:111
-msgid "Menu title as seen by others"
-msgstr "Titolo del menù come comparirà a tutti"
+#: ../../mod/connections.php:288
+msgid "Only show unblocked connections"
+msgstr "Mostra solo i contatti non bloccati"
-#: ../../mod/menu.php:83 ../../mod/menu.php:112
-msgid "Allow bookmarks"
-msgstr "Permetti l'invio di segnalibri"
+#: ../../mod/connections.php:295
+msgid "Only show blocked connections"
+msgstr "Mostra solo i contatti bloccati"
-#: ../../mod/menu.php:83 ../../mod/menu.php:112
-msgid "Menu may be used to store saved bookmarks"
-msgstr "Puoi salvare i segnalibri nei menu"
+#: ../../mod/connections.php:302
+msgid "Only show ignored connections"
+msgstr "Mostra solo i contatti ignorati"
-#: ../../mod/menu.php:98
-msgid "Menu deleted."
-msgstr "Menù eliminato."
+#: ../../mod/connections.php:309
+msgid "Only show archived connections"
+msgstr "Mostra solo i contatti archiviati"
-#: ../../mod/menu.php:100
-msgid "Menu could not be deleted."
-msgstr "Il menù non può essere eliminato."
+#: ../../mod/connections.php:316
+msgid "Only show hidden connections"
+msgstr "Mostra solo i contatti nascosti"
-#: ../../mod/menu.php:106
-msgid "Edit Menu"
-msgstr "Modifica menù"
+#: ../../mod/connections.php:371
+#, php-format
+msgid "%1$s [%2$s]"
+msgstr "%1$s [%2$s]"
-#: ../../mod/menu.php:108
-msgid "Add or remove entries to this menu"
-msgstr "Aggiungi o rimuovi elementi di questo menù"
+#: ../../mod/connections.php:372
+msgid "Edit connection"
+msgstr "Modifica il contatto"
-#: ../../mod/block.php:27 ../../mod/page.php:35
-msgid "Invalid item."
-msgstr "Elemento non valido."
+#: ../../mod/connections.php:410
+msgid "Search your connections"
+msgstr "Cerca tra i contatti"
-#: ../../mod/block.php:75 ../../mod/help.php:72 ../../mod/display.php:100
-#: ../../mod/page.php:83 ../../index.php:236
-msgid "Page not found."
-msgstr "Pagina non trovata."
+#: ../../mod/connections.php:411
+msgid "Finding: "
+msgstr "Ricerca: "
-#: ../../mod/tagger.php:98
-#, php-format
-msgid "%1$s tagged %2$s's %3$s with %4$s"
-msgstr "%1$s ha taggato %3$s di %2$s con %4$s"
+#: ../../mod/ping.php:265
+msgid "sent you a private message"
+msgstr "ti ha inviato un messaggio privato"
-#: ../../mod/wall_upload.php:34
-msgid "Wall Photos"
-msgstr "Foto della bacheca"
+#: ../../mod/ping.php:316
+msgid "added your channel"
+msgstr "ha aggiunto il tuo canale"
-#: ../../mod/openid.php:26
-msgid "OpenID protocol error. No ID returned."
-msgstr "Errore del protocollo OpenID. Nessun ID ricevuto in risposta."
+#: ../../mod/ping.php:357
+msgid "posted an event"
+msgstr "ha creato un evento"
-#: ../../mod/suggest.php:35
-msgid ""
-"No suggestions available. If this is a new site, please try again in 24 "
-"hours."
-msgstr "Nessun suggerimento disponibile. Se questo è un sito nuovo, riprova tra 24 ore."
+#: ../../mod/connedit.php:189
+msgid "is now connected to"
+msgstr "ha come nuovo contatto"
-#: ../../mod/connedit.php:243
+#: ../../mod/connedit.php:310
msgid "Could not access address book record."
msgstr "Impossibile accedere alle informazioni della rubrica."
-#: ../../mod/connedit.php:257
+#: ../../mod/connedit.php:324
msgid "Refresh failed - channel is currently unavailable."
msgstr "Il canale non è disponibile - impossibile aggiornare."
-#: ../../mod/connedit.php:264
+#: ../../mod/connedit.php:331
msgid "Channel has been unblocked"
msgstr "Il canale è stato sbloccato"
-#: ../../mod/connedit.php:265
+#: ../../mod/connedit.php:332
msgid "Channel has been blocked"
msgstr "Il canale è stato bloccato"
-#: ../../mod/connedit.php:269 ../../mod/connedit.php:281
-#: ../../mod/connedit.php:293 ../../mod/connedit.php:305
-#: ../../mod/connedit.php:320
+#: ../../mod/connedit.php:336 ../../mod/connedit.php:348
+#: ../../mod/connedit.php:360 ../../mod/connedit.php:372
+#: ../../mod/connedit.php:388
msgid "Unable to set address book parameters."
msgstr "Impossibile impostare i parametri della rubrica."
-#: ../../mod/connedit.php:276
+#: ../../mod/connedit.php:343
msgid "Channel has been unignored"
msgstr "Il canale non sarà più ignorato"
-#: ../../mod/connedit.php:277
+#: ../../mod/connedit.php:344
msgid "Channel has been ignored"
msgstr "Il canale sarà ignorato"
-#: ../../mod/connedit.php:288
+#: ../../mod/connedit.php:355
msgid "Channel has been unarchived"
msgstr "Il canale non è più archiviato"
-#: ../../mod/connedit.php:289
+#: ../../mod/connedit.php:356
msgid "Channel has been archived"
msgstr "Il canale è stato archiviato"
-#: ../../mod/connedit.php:300
+#: ../../mod/connedit.php:367
msgid "Channel has been unhidden"
msgstr "Il canale non è più nascosto"
-#: ../../mod/connedit.php:301
+#: ../../mod/connedit.php:368
msgid "Channel has been hidden"
msgstr "Il canale è stato nascosto"
-#: ../../mod/connedit.php:315
+#: ../../mod/connedit.php:383
msgid "Channel has been approved"
msgstr "Il canale è stato approvato"
-#: ../../mod/connedit.php:316
+#: ../../mod/connedit.php:384
msgid "Channel has been unapproved"
msgstr "Il canale non è più approvato"
-#: ../../mod/connedit.php:334
+#: ../../mod/connedit.php:412
msgid "Connection has been removed."
msgstr "Il contatto è stato rimosso."
-#: ../../mod/connedit.php:354
+#: ../../mod/connedit.php:432
#, php-format
msgid "View %s's profile"
msgstr "Guarda il profilo di %s"
-#: ../../mod/connedit.php:358
+#: ../../mod/connedit.php:436
msgid "Refresh Permissions"
msgstr "Aggiorna i permessi"
-#: ../../mod/connedit.php:361
+#: ../../mod/connedit.php:439
msgid "Fetch updated permissions"
msgstr "Scarica i permessi aggiornati"
-#: ../../mod/connedit.php:365
+#: ../../mod/connedit.php:443
msgid "Recent Activity"
msgstr "Attività recenti"
-#: ../../mod/connedit.php:368
+#: ../../mod/connedit.php:446
msgid "View recent posts and comments"
msgstr "Leggi i post recenti e i commenti"
-#: ../../mod/connedit.php:375
+#: ../../mod/connedit.php:450 ../../mod/connedit.php:595
+#: ../../mod/admin.php:732
+msgid "Unblock"
+msgstr "Sblocca"
+
+#: ../../mod/connedit.php:450 ../../mod/connedit.php:595
+#: ../../mod/admin.php:731
+msgid "Block"
+msgstr "Blocca"
+
+#: ../../mod/connedit.php:453
msgid "Block or Unblock this connection"
msgstr "Per bloccare o meno questo contatto"
-#: ../../mod/connedit.php:379 ../../mod/connedit.php:516
+#: ../../mod/connedit.php:457 ../../mod/connedit.php:596
msgid "Unignore"
msgstr "Non ignorare"
-#: ../../mod/connedit.php:379 ../../mod/connedit.php:516
+#: ../../mod/connedit.php:457 ../../mod/connedit.php:596
#: ../../mod/notifications.php:51
msgid "Ignore"
msgstr "Ignora"
-#: ../../mod/connedit.php:382
+#: ../../mod/connedit.php:460
msgid "Ignore or Unignore this connection"
msgstr "Per ignorare o meno questo contatto"
-#: ../../mod/connedit.php:385
+#: ../../mod/connedit.php:463
msgid "Unarchive"
msgstr "Non archiviare"
-#: ../../mod/connedit.php:385
+#: ../../mod/connedit.php:463
msgid "Archive"
msgstr "Archivia"
-#: ../../mod/connedit.php:388
+#: ../../mod/connedit.php:466
msgid "Archive or Unarchive this connection"
msgstr "Per archiviare o meno questo contatto"
-#: ../../mod/connedit.php:391
+#: ../../mod/connedit.php:469
msgid "Unhide"
msgstr "Non nascondere"
-#: ../../mod/connedit.php:391
+#: ../../mod/connedit.php:469
msgid "Hide"
msgstr "Nascondi"
-#: ../../mod/connedit.php:394
+#: ../../mod/connedit.php:472
msgid "Hide or Unhide this connection"
msgstr "Per nascondere o meno questo contatto"
-#: ../../mod/connedit.php:401
+#: ../../mod/connedit.php:479
msgid "Delete this connection"
msgstr "Elimina questo contatto"
-#: ../../mod/connedit.php:444 ../../mod/connedit.php:473
+#: ../../mod/connedit.php:523 ../../mod/connedit.php:553
msgid "Approve this connection"
msgstr "Approva questo contatto"
-#: ../../mod/connedit.php:444
+#: ../../mod/connedit.php:523
msgid "Accept connection to allow communication"
msgstr "Entra in contatto per poter comunicare"
-#: ../../mod/connedit.php:460
-msgid "Automatic Permissions Settings"
-msgstr "Permessi predefiniti"
-
-#: ../../mod/connedit.php:460
+#: ../../mod/connedit.php:539
#, php-format
msgid "Connections: settings for %s"
msgstr "Contatti: impostazioni per %s"
-#: ../../mod/connedit.php:464
-msgid ""
-"When receiving a channel introduction, any permissions provided here will be"
-" applied to the new connection automatically and the introduction approved. "
-"Leave this page if you do not wish to use this feature."
-msgstr "Hai ricevuto da un canale una richiesta di entrare in contatto, se prosegui la richiesta sarà approvata e saranno applicati i permessi mostrati. Lascia questa pagina se non vuoi proseguire."
+#: ../../mod/connedit.php:540
+msgid "Apply these permissions automatically"
+msgstr "Applica automaticamente questi permessi"
-#: ../../mod/connedit.php:466
+#: ../../mod/connedit.php:544
+msgid "Apply the permissions indicated on this page to all new connections."
+msgstr "Applica i permessi indicati su questa pagina a tutti i nuovi contatti."
+
+#: ../../mod/connedit.php:546
msgid "Slide to adjust your degree of friendship"
msgstr "Trascina per restringere il grado di amicizia da mostrare"
-#: ../../mod/connedit.php:472
+#: ../../mod/connedit.php:552
msgid "inherited"
msgstr "derivato"
-#: ../../mod/connedit.php:474
+#: ../../mod/connedit.php:554
msgid "Connection has no individual permissions!"
msgstr "Non hai assegnato permessi individuali a questo contatto!"
-#: ../../mod/connedit.php:475
+#: ../../mod/connedit.php:555
msgid ""
"This may be appropriate based on your <a href=\"settings\">privacy "
"settings</a>, though you may wish to review the \"Advanced Permissions\"."
msgstr "Questo corrisponde alle tue <a href='settings'>impostazioni di privacy</a>, ma puoi anche dare un'occhiata ai 'Permessi avanzati' per opzioni più dettagliate."
-#: ../../mod/connedit.php:477
+#: ../../mod/connedit.php:557
msgid "Profile Visibility"
msgstr "Visibilità del profilo"
-#: ../../mod/connedit.php:478
+#: ../../mod/connedit.php:558
#, php-format
msgid ""
"Please choose the profile you would like to display to %s when viewing your "
"profile securely."
msgstr "Seleziona il profilo che vuoi mostrare a %s quando visita il tuo profilo in modo sicuro."
-#: ../../mod/connedit.php:479
+#: ../../mod/connedit.php:559
msgid "Contact Information / Notes"
msgstr "Informazioni e annotazioni sul contatto"
-#: ../../mod/connedit.php:480
+#: ../../mod/connedit.php:560
msgid "Edit contact notes"
msgstr "Modifica le informazioni sul contatto"
-#: ../../mod/connedit.php:482
+#: ../../mod/connedit.php:562
msgid "Their Settings"
msgstr "Permessi concessi a te"
-#: ../../mod/connedit.php:483
+#: ../../mod/connedit.php:563
msgid "My Settings"
msgstr "I permessi che concedo"
-#: ../../mod/connedit.php:485
+#: ../../mod/connedit.php:565
msgid "Clear/Disable Automatic Permissions"
msgstr "Rimuovi/disabilita i permessi automatici"
-#: ../../mod/connedit.php:486
+#: ../../mod/connedit.php:566
msgid "Forum Members"
msgstr "Membro di un forum"
-#: ../../mod/connedit.php:487
+#: ../../mod/connedit.php:567
msgid "Soapbox"
msgstr "Comunicati e annunci"
-#: ../../mod/connedit.php:488
+#: ../../mod/connedit.php:568
msgid "Full Sharing (typical social network permissions)"
msgstr "Condivisione completa (permessi tipici dei social network)"
-#: ../../mod/connedit.php:489
+#: ../../mod/connedit.php:569
msgid "Cautious Sharing "
msgstr "Condivisione prudente"
-#: ../../mod/connedit.php:490
+#: ../../mod/connedit.php:570
msgid "Follow Only"
msgstr "Follower"
-#: ../../mod/connedit.php:491
+#: ../../mod/connedit.php:571
msgid "Individual Permissions"
msgstr "Permessi individuali"
-#: ../../mod/connedit.php:492
+#: ../../mod/connedit.php:572
msgid ""
"Some permissions may be inherited from your channel <a "
"href=\"settings\">privacy settings</a>, which have higher priority than "
@@ -5697,1355 +5848,749 @@ msgid ""
"have no effect."
msgstr "I permessi nelle <a href=\"settings\">impostazioni di privacy</a> hanno priorità su quelli mostrati in questa pagina. Non avrà alcun effetto cambiarli qui, se sono indicati come derivati."
-#: ../../mod/connedit.php:493
+#: ../../mod/connedit.php:573
msgid "Advanced Permissions"
msgstr "Permessi avanzati"
-#: ../../mod/connedit.php:494
+#: ../../mod/connedit.php:574
msgid "Simple Permissions (select one and submit)"
msgstr "Permessi semplificati (seleziona e salva)"
-#: ../../mod/connedit.php:498
+#: ../../mod/connedit.php:578
#, php-format
msgid "Visit %s's profile - %s"
msgstr "Guarda il profilo di %s - %s"
-#: ../../mod/connedit.php:499
+#: ../../mod/connedit.php:579
msgid "Block/Unblock contact"
msgstr "Blocca/sblocca contatto"
-#: ../../mod/connedit.php:500
+#: ../../mod/connedit.php:580
msgid "Ignore contact"
msgstr "Ignora il contatto"
-#: ../../mod/connedit.php:501
+#: ../../mod/connedit.php:581
msgid "Repair URL settings"
msgstr "Ripara le impostazioni URL"
-#: ../../mod/connedit.php:502
+#: ../../mod/connedit.php:582
msgid "View conversations"
msgstr "Leggi le conversazioni"
-#: ../../mod/connedit.php:504
+#: ../../mod/connedit.php:584
msgid "Delete contact"
msgstr "Elimina contatto"
-#: ../../mod/connedit.php:507
+#: ../../mod/connedit.php:587
msgid "Last update:"
msgstr "Ultimo aggiornamento:"
-#: ../../mod/connedit.php:509
+#: ../../mod/connedit.php:589
msgid "Update public posts"
msgstr "Aggiorna gli articoli pubblici"
-#: ../../mod/connedit.php:511
+#: ../../mod/connedit.php:591
msgid "Update now"
msgstr "Aggiorna adesso"
-#: ../../mod/connedit.php:517
+#: ../../mod/connedit.php:597
msgid "Currently blocked"
msgstr "Attualmente bloccato"
-#: ../../mod/connedit.php:518
+#: ../../mod/connedit.php:598
msgid "Currently ignored"
msgstr "Attualmente ignorato"
-#: ../../mod/connedit.php:519
+#: ../../mod/connedit.php:599
msgid "Currently archived"
msgstr "Attualmente archiviato"
-#: ../../mod/connedit.php:520
+#: ../../mod/connedit.php:600
msgid "Currently pending"
msgstr "Attualmente da approvare"
-#: ../../mod/connedit.php:521
+#: ../../mod/connedit.php:601
msgid "Hide this contact from others"
msgstr "Nascondi questo contatto agli altri"
-#: ../../mod/connedit.php:521
+#: ../../mod/connedit.php:601
msgid ""
"Replies/likes to your public posts <strong>may</strong> still be visible"
msgstr "Le risposte ai tuoi articoli pubblici <strong>potrebbero</strong> restare comunque visibili"
-#: ../../mod/message.php:31 ../../mod/mail.php:121
-msgid "Messages"
-msgstr "Messaggi"
+#: ../../mod/mail.php:33
+msgid "Unable to lookup recipient."
+msgstr "Impossibile associare un destinatario."
-#: ../../mod/message.php:41
-msgid "Conversation removed."
-msgstr "Conversazione rimossa."
+#: ../../mod/mail.php:41
+msgid "Unable to communicate with requested channel."
+msgstr "Impossibile comunicare con il canale richiesto."
-#: ../../mod/message.php:56
-msgid "No messages."
-msgstr "Nessun messaggio."
+#: ../../mod/mail.php:48
+msgid "Cannot verify requested channel."
+msgstr "Impossibile verificare il canale richiesto."
-#: ../../mod/message.php:72 ../../mod/mail.php:289
-msgid "Delete message"
-msgstr "Elimina il messaggio"
+#: ../../mod/mail.php:74
+msgid "Selected channel has private message restrictions. Send failed."
+msgstr "Il canale ha delle regole restrittive per la ricezione dei messaggi privati. Invio fallito."
-#: ../../mod/message.php:74
-msgid "D, d M Y - g:i A"
-msgstr "D d M Y - G:i"
+#: ../../mod/mail.php:136
+msgid "Message deleted."
+msgstr "Messaggio eliminato."
-#: ../../mod/ping.php:237
-msgid "sent you a private message"
-msgstr "ti ha inviato un messaggio privato"
+#: ../../mod/mail.php:153
+msgid "Message recalled."
+msgstr "Messaggio revocato."
-#: ../../mod/ping.php:288
-msgid "added your channel"
-msgstr "ha aggiunto il tuo canale"
+#: ../../mod/mail.php:222
+msgid "Send Private Message"
+msgstr "Invia un messaggio privato"
-#: ../../mod/ping.php:329
-msgid "posted an event"
-msgstr "ha creato un evento"
+#: ../../mod/mail.php:223 ../../mod/mail.php:340
+msgid "To:"
+msgstr "A:"
-#: ../../mod/setup.php:162
-msgid "Red Matrix Server - Setup"
-msgstr "Red Matrix Server - Installazione"
+#: ../../mod/mail.php:228 ../../mod/mail.php:342
+msgid "Subject:"
+msgstr "Oggetto:"
-#: ../../mod/setup.php:168
-msgid "Could not connect to database."
-msgstr " Impossibile connettersi al database."
+#: ../../mod/mail.php:232 ../../mod/mail.php:345 ../../mod/invite.php:131
+msgid "Your message:"
+msgstr "Il tuo messaggio:"
-#: ../../mod/setup.php:172
-msgid ""
-"Could not connect to specified site URL. Possible SSL certificate or DNS "
-"issue."
-msgstr "Non è possibile raggiungere l'indirizzo del sito specificato. Potrebbe essere un problema di SSL o DNS."
+#: ../../mod/mail.php:239
+msgid "Send"
+msgstr "Invia"
-#: ../../mod/setup.php:179
-msgid "Could not create table."
-msgstr "Impossibile creare le tabelle."
+#: ../../mod/mail.php:266
+msgid "Message not found."
+msgstr "Messaggio non trovato."
-#: ../../mod/setup.php:185
-msgid "Your site database has been installed."
-msgstr "Il database del sito è stato installato."
+#: ../../mod/mail.php:309
+msgid "Delete message"
+msgstr "Elimina il messaggio"
-#: ../../mod/setup.php:190
-msgid ""
-"You may need to import the file \"install/database.sql\" manually using "
-"phpmyadmin or mysql."
-msgstr "Potresti dover importare il file 'install/database.sql' manualmente usando phpmyadmin o mysql."
+#: ../../mod/mail.php:310
+msgid "Recall message"
+msgstr "Revoca il messaggio"
-#: ../../mod/setup.php:191 ../../mod/setup.php:260 ../../mod/setup.php:655
-msgid "Please see the file \"install/INSTALL.txt\"."
-msgstr "Leggi il file 'install/INSTALL.txt'."
+#: ../../mod/mail.php:312
+msgid "Message has been recalled."
+msgstr "Il messaggio è stato revocato."
-#: ../../mod/setup.php:257
-msgid "System check"
-msgstr "Verifica del sistema"
+#: ../../mod/mail.php:329
+msgid "Private Conversation"
+msgstr "Conversazione privata"
-#: ../../mod/setup.php:261 ../../mod/events.php:380
-msgid "Next"
-msgstr "Successivo"
+#: ../../mod/mail.php:333 ../../mod/message.php:72
+msgid "Delete conversation"
+msgstr "Elimina la conversazione"
-#: ../../mod/setup.php:262
-msgid "Check again"
-msgstr "Verifica di nuovo"
+#: ../../mod/mail.php:335
+msgid ""
+"No secure communications available. You <strong>may</strong> be able to "
+"respond from the sender's profile page."
+msgstr "Non è disponibile alcuna tecnologia per comunicare in modo sicuro. <strong>Se possibile</strong>, prova a rispondere direttamente dalla pagina del profilo del mittente."
-#: ../../mod/setup.php:284
-msgid "Database connection"
-msgstr "Connessione al database"
+#: ../../mod/mail.php:339
+msgid "Send Reply"
+msgstr "Invia la risposta"
-#: ../../mod/setup.php:285
-msgid ""
-"In order to install Red Matrix we need to know how to connect to your "
-"database."
-msgstr "Per installare Red Matrix è necessario conoscere i parametri di connessione al database."
+#: ../../mod/photos.php:77
+msgid "Page owner information could not be retrieved."
+msgstr "Impossibile ottenere informazioni sul proprietario della pagina."
-#: ../../mod/setup.php:286
-msgid ""
-"Please contact your hosting provider or site administrator if you have "
-"questions about these settings."
-msgstr "Contatta il tuo fornitore di hosting o l'amministratore del sito se hai domande su queste impostazioni."
+#: ../../mod/photos.php:97
+msgid "Album not found."
+msgstr "Album non trovato."
-#: ../../mod/setup.php:287
-msgid ""
-"The database you specify below should already exist. If it does not, please "
-"create it before continuing."
-msgstr "Il database deve già esistere. Se non esiste, crealo prima di continuare."
+#: ../../mod/photos.php:119 ../../mod/photos.php:672
+msgid "Delete Album"
+msgstr "Elimina album"
-#: ../../mod/setup.php:291
-msgid "Database Server Name"
-msgstr "Server del database"
+#: ../../mod/photos.php:159 ../../mod/photos.php:958
+msgid "Delete Photo"
+msgstr "Elimina foto"
-#: ../../mod/setup.php:291
-msgid "Default is localhost"
-msgstr "'localhost' è il predefinito"
+#: ../../mod/photos.php:469
+msgid "No photos selected"
+msgstr "Nessuna foto selezionata"
-#: ../../mod/setup.php:292
-msgid "Database Port"
-msgstr "Port del database"
+#: ../../mod/photos.php:513
+msgid "Access to this item is restricted."
+msgstr "Questo elemento non è visibile a tutti."
-#: ../../mod/setup.php:292
-msgid "Communication port number - use 0 for default"
-msgstr "Scrivi 0 per usare il valore standard"
+#: ../../mod/photos.php:552
+#, php-format
+msgid "%1$.2f MB of %2$.2f MB photo storage used."
+msgstr "Hai usato %1$.2f Mb dei %2$.2f Mb di spazio disponibile."
-#: ../../mod/setup.php:293
-msgid "Database Login Name"
-msgstr "Utente database"
+#: ../../mod/photos.php:555
+#, php-format
+msgid "%1$.2f MB photo storage used."
+msgstr "Hai usato %1$.2f Mb del tuo spazio disponibile."
-#: ../../mod/setup.php:294
-msgid "Database Login Password"
-msgstr "Password utente database"
+#: ../../mod/photos.php:579
+msgid "Upload Photos"
+msgstr "Carica foto"
-#: ../../mod/setup.php:295
-msgid "Database Name"
-msgstr "Nome database"
+#: ../../mod/photos.php:583 ../../mod/photos.php:665 ../../mod/photos.php:943
+msgid "Enter a new album name"
+msgstr "Inserisci il nome di un nuovo album"
-#: ../../mod/setup.php:297 ../../mod/setup.php:339
-msgid "Site administrator email address"
-msgstr "Indirizzo email dell'amministratore del sito"
+#: ../../mod/photos.php:584 ../../mod/photos.php:666 ../../mod/photos.php:944
+msgid "or select an existing one (doubleclick)"
+msgstr "o seleziona uno esistente (doppio click)"
-#: ../../mod/setup.php:297 ../../mod/setup.php:339
-msgid ""
-"Your account email address must match this in order to use the web admin "
-"panel."
-msgstr "Il tuo indirizzo email deve corrispondere a questo per poter usare il pannello di amministrazione web."
+#: ../../mod/photos.php:585
+msgid "Do not show a status post for this upload"
+msgstr "Non creare un messaggio di stato per questo caricamento"
-#: ../../mod/setup.php:298 ../../mod/setup.php:341
-msgid "Website URL"
-msgstr "URL completo del sito"
+#: ../../mod/photos.php:613
+msgid "Album name could not be decoded"
+msgstr "Non è stato possibile leggere il nome dell'album"
-#: ../../mod/setup.php:298 ../../mod/setup.php:341
-msgid "Please use SSL (https) URL if available."
-msgstr "Se disponibile, usa l'indirizzo SSL (https)."
+#: ../../mod/photos.php:654 ../../mod/photos.php:1167
+#: ../../mod/photos.php:1183
+msgid "Contact Photos"
+msgstr "Foto dei contatti"
-#: ../../mod/setup.php:301 ../../mod/setup.php:344
-msgid "Please select a default timezone for your website"
-msgstr "Seleziona il fuso orario predefinito per il tuo sito web"
+#: ../../mod/photos.php:678
+msgid "Show Newest First"
+msgstr "Prima i più recenti"
-#: ../../mod/setup.php:328
-msgid "Site settings"
-msgstr "Impostazioni del sito"
+#: ../../mod/photos.php:680
+msgid "Show Oldest First"
+msgstr "Prima i più vecchi"
-#: ../../mod/setup.php:387
-msgid "Could not find a command line version of PHP in the web server PATH."
-msgstr "Non è possibile trovare la versione di PHP da riga di comando nel PATH del server web"
+#: ../../mod/photos.php:707 ../../mod/photos.php:1215
+msgid "View Photo"
+msgstr "Guarda la foto"
-#: ../../mod/setup.php:388
-msgid ""
-"If you don't have a command line version of PHP installed on server, you "
-"will not be able to run background polling via cron."
-msgstr "Se non hai installata la versione di PHP da riga di comando non potrai attivare il polling in background tramite cron."
+#: ../../mod/photos.php:736
+msgid "Edit Album"
+msgstr "Modifica album"
-#: ../../mod/setup.php:392
-msgid "PHP executable path"
-msgstr "Path del comando PHP"
+#: ../../mod/photos.php:781
+msgid "Permission denied. Access to this item may be restricted."
+msgstr "Permesso negato. L'accesso a questo elemento può essere stato limitato."
-#: ../../mod/setup.php:392
-msgid ""
-"Enter full path to php executable. You can leave this blank to continue the "
-"installation."
-msgstr "Inserisci il percorso dell'eseguibile PHP. Puoi lasciarlo vuoto per continuare l'installazione."
+#: ../../mod/photos.php:783
+msgid "Photo not available"
+msgstr "Foto non disponibile"
-#: ../../mod/setup.php:397
-msgid "Command line PHP"
-msgstr "PHP da riga di comando"
+#: ../../mod/photos.php:841
+msgid "Use as profile photo"
+msgstr "Usa come foto del profilo"
-#: ../../mod/setup.php:406
-msgid ""
-"The command line version of PHP on your system does not have "
-"\"register_argc_argv\" enabled."
-msgstr "La versione da riga di comando di PHP nel sistema non ha abilitato \"register_argc_argv\"."
+#: ../../mod/photos.php:848
+msgid "Private Photo"
+msgstr "Foto privata"
-#: ../../mod/setup.php:407
-msgid "This is required for message delivery to work."
-msgstr "E' necessario perché funzioni la consegna dei messaggi."
+#: ../../mod/photos.php:863
+msgid "View Full Size"
+msgstr "Vedi nelle dimensioni originali"
-#: ../../mod/setup.php:409
-msgid "PHP register_argc_argv"
-msgstr "PHP register_argc_argv"
+#: ../../mod/photos.php:937
+msgid "Edit photo"
+msgstr "Modifica la foto"
-#: ../../mod/setup.php:430
-msgid ""
-"Error: the \"openssl_pkey_new\" function on this system is not able to "
-"generate encryption keys"
-msgstr "Errore: la funzione \"openssl_pkey_new\" su questo sistema non è in grado di generare le chiavi di criptazione"
+#: ../../mod/photos.php:939
+msgid "Rotate CW (right)"
+msgstr "Ruota (senso orario)"
-#: ../../mod/setup.php:431
-msgid ""
-"If running under Windows, please see "
-"\"http://www.php.net/manual/en/openssl.installation.php\"."
-msgstr "Se stai usando un server windows, guarda \"http://www.php.net/manual/en/openssl.installation.php\"."
+#: ../../mod/photos.php:940
+msgid "Rotate CCW (left)"
+msgstr "Ruota (senso antiorario)"
-#: ../../mod/setup.php:433
-msgid "Generate encryption keys"
-msgstr "Genera chiavi di criptazione"
+#: ../../mod/photos.php:947
+msgid "Caption"
+msgstr "Titolo"
-#: ../../mod/setup.php:440
-msgid "libCurl PHP module"
-msgstr "modulo PHP libCurl"
+#: ../../mod/photos.php:949
+msgid "Add a Tag"
+msgstr "Aggiungi tag"
-#: ../../mod/setup.php:441
-msgid "GD graphics PHP module"
-msgstr "modulo PHP GD graphics"
+#: ../../mod/photos.php:953
+msgid "Example: @bob, @Barbara_Jensen, @jim@example.com"
+msgstr "Esempio: @bob, @Barbara_Jensen, @jim@example.com"
-#: ../../mod/setup.php:442
-msgid "OpenSSL PHP module"
-msgstr "modulo PHP OpenSSL"
+#: ../../mod/photos.php:956
+msgid "Flag as adult in album view"
+msgstr "Marca come 'per adulti'"
-#: ../../mod/setup.php:443
-msgid "mysqli PHP module"
-msgstr "modulo PHP mysqli"
+#: ../../mod/photos.php:1133
+msgid "In This Photo:"
+msgstr "In questa foto:"
-#: ../../mod/setup.php:444
-msgid "mb_string PHP module"
-msgstr "modulo PHP mb_string"
+#: ../../mod/photos.php:1221
+msgid "View Album"
+msgstr "Guarda l'album"
-#: ../../mod/setup.php:445
-msgid "mcrypt PHP module"
-msgstr "modulo PHP mcrypt"
+#: ../../mod/photos.php:1244
+msgid "Recent Photos"
+msgstr "Foto recenti"
-#: ../../mod/setup.php:450 ../../mod/setup.php:452
-msgid "Apache mod_rewrite module"
-msgstr "modulo Apache mod_rewrite"
+#: ../../mod/bookmarks.php:38
+msgid "Bookmark added"
+msgstr "Segnalibro aggiunto"
-#: ../../mod/setup.php:450
-msgid ""
-"Error: Apache webserver mod-rewrite module is required but not installed."
-msgstr "Errore: il modulo mod-rewrite di Apache è richiesto ma non installato"
+#: ../../mod/bookmarks.php:60
+msgid "My Bookmarks"
+msgstr "I miei segnalibri"
-#: ../../mod/setup.php:456 ../../mod/setup.php:459
-msgid "proc_open"
-msgstr "proc_open"
+#: ../../mod/bookmarks.php:71
+msgid "My Connections Bookmarks"
+msgstr "I segnalibri dei miei contatti"
-#: ../../mod/setup.php:456
-msgid ""
-"Error: proc_open is required but is either not installed or has been "
-"disabled in php.ini"
-msgstr "Errore: proc_open è richiesto ma non è installato o è disabilitato in php.ini"
+#: ../../mod/dirsearch.php:21
+msgid "This site is not a directory server"
+msgstr "Questo sito non è un server di elenchi pubblici"
-#: ../../mod/setup.php:464
-msgid "Error: libCURL PHP module required but not installed."
-msgstr "Errore: il modulo libCURL di PHP è richiesto ma non installato."
+#: ../../mod/cloud.php:130
+msgid "RedMatrix - Guests: Username: {your email address}, Password: +++"
+msgstr "Accesso a Red Matrix. {Inserisci l'email con cui sei registrato e la password.}"
-#: ../../mod/setup.php:468
-msgid ""
-"Error: GD graphics PHP module with JPEG support required but not installed."
-msgstr "Errore: Il modulo GD graphics di PHP con supporto a JPEG è richiesto ma non installato."
+#: ../../mod/acl.php:245
+msgid "network"
+msgstr "rete"
-#: ../../mod/setup.php:472
-msgid "Error: openssl PHP module required but not installed."
-msgstr "Errore: il modulo openssl di PHP è richiesto ma non installato."
+#: ../../mod/blocks.php:99
+msgid "Block Name"
+msgstr "Nome del riquadro"
-#: ../../mod/setup.php:476
-msgid "Error: mysqli PHP module required but not installed."
-msgstr "Errore: il modulo mysqli di PHP è richiesto ma non installato."
+#: ../../mod/editblock.php:115
+msgid "Edit Block"
+msgstr "Modifica il riquadro"
-#: ../../mod/setup.php:480
-msgid "Error: mb_string PHP module required but not installed."
-msgstr "Errore: il modulo PHP mb_string è richiesto ma non installato."
+#: ../../mod/editblock.php:125
+msgid "Delete block?"
+msgstr "Vuoi eliminare questo riquadro?"
-#: ../../mod/setup.php:484
-msgid "Error: mcrypt PHP module required but not installed."
-msgstr "Errore: il modulo PHP mcrypt è richiesto ma non installato."
+#: ../../mod/editblock.php:183
+msgid "Delete Block"
+msgstr "Elimina il riquadro"
-#: ../../mod/setup.php:500
-msgid ""
-"The web installer needs to be able to create a file called \".htconfig.php\""
-" in the top folder of your web server and it is unable to do so."
-msgstr "L'installazione web deve poter creare un file chiamato \".htconfig.php\" nella cartella principale del tuo web server ma non è in grado di farlo."
+#: ../../mod/pdledit.php:13
+msgid "Layout updated."
+msgstr "Layout aggiornato."
-#: ../../mod/setup.php:501
-msgid ""
-"This is most often a permission setting, as the web server may not be able "
-"to write files in your folder - even if you can."
-msgstr "Spesso ciò è dovuto ai permessi di accesso al disco: il web server potrebbe non aver diritto di scrivere il file nella cartella, anche se tu puoi."
+#: ../../mod/pdledit.php:28 ../../mod/pdledit.php:53
+msgid "Edit System Page Description"
+msgstr "Modifica i layout di sistema"
-#: ../../mod/setup.php:502
-msgid ""
-"At the end of this procedure, we will give you a text to save in a file "
-"named .htconfig.php in your Red top folder."
-msgstr "Alla fine di questa procedura ti sarà dato il testo da salvare in un file di nome .htconfig.php dentro la cartella principale di Red."
+#: ../../mod/pdledit.php:48
+msgid "Layout not found."
+msgstr "Layout non trovato."
-#: ../../mod/setup.php:503
-msgid ""
-"You can alternatively skip this procedure and perform a manual installation."
-" Please see the file \"install/INSTALL.txt\" for instructions."
-msgstr "Puoi anche saltare questa procedura ed effettuare un'installazione manuale. Guarda il file 'install/INSTALL.txt' per le istruzioni."
+#: ../../mod/pdledit.php:54
+msgid "Module Name:"
+msgstr "Nome del modulo:"
-#: ../../mod/setup.php:506
-msgid ".htconfig.php is writable"
-msgstr ".htconfig.php è scrivibile"
+#: ../../mod/pdledit.php:55 ../../mod/layouts.php:107
+msgid "Layout Help"
+msgstr "Guida al layout"
-#: ../../mod/setup.php:516
-msgid ""
-"Red uses the Smarty3 template engine to render its web views. Smarty3 "
-"compiles templates to PHP to speed up rendering."
-msgstr "Red usa il sistema Smarty3 per costruire i suoi template grafici. Smarty3 è molto veloce perché compila i template delle pagine direttamente in PHP."
+#: ../../mod/editlayout.php:108
+msgid "Edit Layout"
+msgstr "Modifica il layout"
-#: ../../mod/setup.php:517
-msgid ""
-"In order to store these compiled templates, the web server needs to have "
-"write access to the directory view/tpl/smarty3/ under the Red top level "
-"folder."
-msgstr "Per poter memorizzare i template compilati, il web server deve avere accesso in scrittura alla cartella view/tpl/smarty3/ sotto la cartella di installazione di Red."
+#: ../../mod/editlayout.php:117
+msgid "Delete layout?"
+msgstr "Vuoi eliminare questo layout?"
-#: ../../mod/setup.php:518 ../../mod/setup.php:536
-msgid ""
-"Please ensure that the user that your web server runs as (e.g. www-data) has"
-" write access to this folder."
-msgstr "Assicurati che il tuo web server sia in esecuzione come un utente che ha diritto di scrittura su quella cartella (ad esempio www-data)."
+#: ../../mod/editlayout.php:178
+msgid "Delete Layout"
+msgstr "Elimina il layout"
-#: ../../mod/setup.php:519
-msgid ""
-"Note: as a security measure, you should give the web server write access to "
-"view/tpl/smarty3/ only--not the template files (.tpl) that it contains."
-msgstr "Nota bene: come precauzione, dovresti dare i diritti di scrittura solamente per view/tpl/smarty3/ non per tutti i file di template (.tpl) che contiene."
+#: ../../mod/home.php:48
+msgid "Red Matrix - &quot;The Network&quot;"
+msgstr "RedMatrix - &quot;La tua rete&quot;"
-#: ../../mod/setup.php:522
-msgid "view/tpl/smarty3 is writable"
-msgstr "view/tpl/smarty3 è scrivibile"
+#: ../../mod/home.php:101
+#, php-format
+msgid "Welcome to %s"
+msgstr "%s ti dà il benvenuto"
-#: ../../mod/setup.php:535
-msgid ""
-"Red uses the store directory to save uploaded files. The web server needs to"
-" have write access to the store directory under the Red top level folder"
-msgstr "Red usa un archivio per salvare i file caricati. Il server deve avere i diritti di scrittura sulla cartella dell'archivio che si trova dentro la cartella principale di Red"
+#: ../../mod/editwebpage.php:140
+msgid "Edit Webpage"
+msgstr "Modifica la pagina web"
-#: ../../mod/setup.php:539
-msgid "store is writable"
-msgstr "l'archivio è scrivibile"
+#: ../../mod/editwebpage.php:150
+msgid "Delete webpage?"
+msgstr "Vuoi eliminare questa pagina web?"
-#: ../../mod/setup.php:569
-msgid ""
-"SSL certificate cannot be validated. Fix certificate or disable https access"
-" to this site."
-msgstr "Il certificato SSL non può essere validato. Correggi l'errore o disabilita l'accesso https al sito."
+#: ../../mod/editwebpage.php:215
+msgid "Delete Webpage"
+msgstr "Elimina la pagina web"
-#: ../../mod/setup.php:570
-msgid ""
-"If you have https access to your website or allow connections to TCP port "
-"443 (the https: port), you MUST use a browser-valid certificate. You MUST "
-"NOT use self-signed certificates!"
-msgstr "Se abiliti https per il tuo sito o permetti connessioni TCP su port 443 (quella di https), DEVI usare un certificato riconosciuto dai browser internet. NON DEVI usare certificati generati da te!"
+#: ../../mod/impel.php:33
+msgid "webpage"
+msgstr "pagina web"
-#: ../../mod/setup.php:571
-msgid ""
-"This restriction is incorporated because public posts from you may for "
-"example contain references to images on your own hub."
-msgstr "Questa restrizione è necessaria perché i tuoi post pubblici potrebbero contenere riferimenti a immagini sul tuo server."
+#: ../../mod/impel.php:38
+msgid "block"
+msgstr "riquadro"
-#: ../../mod/setup.php:572
-msgid ""
-"If your certificate is not recognised, members of other sites (who may "
-"themselves have valid certificates) will get a warning message on their own "
-"site complaining about security issues."
-msgstr "Se il tuo certificato non è riconosciuto, gli utenti che ti seguono da altri siti (che avranno certificati validi) riceveranno un avviso su possibili problemi di sicurezza."
+#: ../../mod/impel.php:43
+msgid "layout"
+msgstr "layout"
-#: ../../mod/setup.php:573
-msgid ""
-"This can cause usability issues elsewhere (not just on your own site) so we "
-"must insist on this requirement."
-msgstr "Ciò può creare problemi di usabilità molto gravi (non solo sul tuo sito), quindi dobbiamo insistere su questo punto."
+#: ../../mod/impel.php:117
+#, php-format
+msgid "%s element installed"
+msgstr "%s elemento installato"
-#: ../../mod/setup.php:574
-msgid ""
-"Providers are available that issue free certificates which are browser-"
-"valid."
-msgstr "Eventualmente, considera che esistono provider che rilasciano certificati gratuiti riconosciuti dai browser."
+#: ../../mod/profile_photo.php:108
+msgid "Image uploaded but image cropping failed."
+msgstr "L'immagine è stata caricata, ma il non è stato possibile ritagliarla."
-#: ../../mod/setup.php:576
-msgid "SSL certificate validation"
-msgstr "Validazione del certificato SSL"
+#: ../../mod/profile_photo.php:161
+msgid "Image resize failed."
+msgstr "Il ridimensionamento dell'immagine è fallito."
-#: ../../mod/setup.php:582
+#: ../../mod/profile_photo.php:205
msgid ""
-"Url rewrite in .htaccess is not working. Check your server configuration."
-msgstr "In .htaccess la funzionalità url rewrite non funziona. Controlla la configurazione del server."
+"Shift-reload the page or clear browser cache if the new photo does not "
+"display immediately."
+msgstr "Ricarica la pagina con shift+F5 o cancella la cache del browser se la nuova foto non viene mostrata immediatamente."
-#: ../../mod/setup.php:584
-msgid "Url rewrite is working"
-msgstr "Url rewrite funziona correttamente"
+#: ../../mod/profile_photo.php:232
+#, php-format
+msgid "Image exceeds size limit of %d"
+msgstr "La dimensione dell'immagine supera il limite di %d"
-#: ../../mod/setup.php:594
-msgid ""
-"The database configuration file \".htconfig.php\" could not be written. "
-"Please use the enclosed text to create a configuration file in your web "
-"server root."
-msgstr "Il file di configurazione del database \".htconfig.php\" non puo' essere scritto. Usa il testo qui di seguito per creare questo file di configurazione nella cartella principale del tuo sito."
+#: ../../mod/profile_photo.php:241
+msgid "Unable to process image."
+msgstr "Impossibile elaborare l'immagine."
-#: ../../mod/setup.php:618
-msgid "Errors encountered creating database tables."
-msgstr "La creazione delle tabelle del database ha generato errori."
+#: ../../mod/profile_photo.php:290 ../../mod/profile_photo.php:339
+msgid "Photo not available."
+msgstr "Foto non disponibile."
-#: ../../mod/setup.php:653
-msgid "<h1>What next</h1>"
-msgstr "<h1>I prossimi passi</h1>"
+#: ../../mod/profile_photo.php:358
+msgid "Upload File:"
+msgstr "Carica un file:"
-#: ../../mod/setup.php:654
-msgid ""
-"IMPORTANT: You will need to [manually] setup a scheduled task for the "
-"poller."
-msgstr "IMPORTANTE: Devi creare [manualmente] la pianificazione del polling."
+#: ../../mod/profile_photo.php:359
+msgid "Select a profile:"
+msgstr "Seleziona un profilo:"
-#: ../../mod/magic.php:70
-msgid "Hub not found."
-msgstr "Server non trovato."
+#: ../../mod/profile_photo.php:360
+msgid "Upload Profile Photo"
+msgstr "Carica la foto del profilo"
-#: ../../mod/invite.php:25
-msgid "Total invitation limit exceeded."
-msgstr "Hai superato il numero massimo di inviti."
+#: ../../mod/profile_photo.php:365
+msgid "skip this step"
+msgstr "salta questo passaggio"
-#: ../../mod/invite.php:49
-#, php-format
-msgid "%s : Not a valid email address."
-msgstr "%s: non è un indirizzo email valido."
+#: ../../mod/profile_photo.php:365
+msgid "select a photo from your photo albums"
+msgstr "seleziona una foto dai tuoi album"
-#: ../../mod/invite.php:76
-msgid "Please join us on Red"
-msgstr "Vieni con noi su Red"
+#: ../../mod/profile_photo.php:381
+msgid "Crop Image"
+msgstr "Ritaglia immagine"
-#: ../../mod/invite.php:87
-msgid "Invitation limit exceeded. Please contact your site administrator."
-msgstr "Hai superato il numero massimo di inviti. Contatta l'amministratore se necessario."
+#: ../../mod/profile_photo.php:382
+msgid "Please adjust the image cropping for optimum viewing."
+msgstr "Ritaglia l'immagine per migliorarne la visualizzazione."
-#: ../../mod/invite.php:92
-#, php-format
-msgid "%s : Message delivery failed."
-msgstr "%s: la consegna del messaggio è fallita."
+#: ../../mod/profile_photo.php:384
+msgid "Done Editing"
+msgstr "Modifica terminata"
-#: ../../mod/invite.php:96
-#, php-format
-msgid "%d message sent."
-msgid_plural "%d messages sent."
-msgstr[0] "%d messaggio inviato."
-msgstr[1] "%d messaggi inviati."
+#: ../../mod/profile_photo.php:427
+msgid "Image uploaded successfully."
+msgstr "Immagine caricata con successo."
-#: ../../mod/invite.php:115
-msgid "You have no more invitations available"
-msgstr "Non hai altri inviti disponibili"
+#: ../../mod/profile_photo.php:429
+msgid "Image upload failed."
+msgstr "Il caricamento dell'immagine è fallito."
-#: ../../mod/invite.php:141
-msgid "Send invitations"
-msgstr "Spedisci inviti"
+#: ../../mod/profile_photo.php:438
+#, php-format
+msgid "Image size reduction [%s] failed."
+msgstr "Il ridimensionamento del'immagine [%s] è fallito."
-#: ../../mod/invite.php:142
-msgid "Enter email addresses, one per line:"
-msgstr "Inserisci gli indirizzi email, uno per riga:"
+#: ../../mod/like.php:15
+msgid "Like/Dislike"
+msgstr "Mi piace/Non mi piace"
-#: ../../mod/invite.php:143 ../../mod/mail.php:212 ../../mod/mail.php:325
-msgid "Your message:"
-msgstr "Il tuo messaggio:"
+#: ../../mod/like.php:20
+msgid "This action is restricted to members."
+msgstr "Questa funzionalità è riservata agli iscritti."
-#: ../../mod/invite.php:144
+#: ../../mod/like.php:21
msgid ""
-"You are cordially invited to join me and some other close friends on the Red"
-" Matrix - a revolutionary new decentralised communication and information "
-"tool."
-msgstr "Questo è un invito cordiale ad unirti a me e ad altri miei amici stretti su Red Matrix - uno nuovo strumento di comunicazione decentralizzato e rivoluzionario."
+"Please <a href=\"rmagic\">login with your RedMatrix ID</a> or <a "
+"href=\"register\">register as a new RedMatrix member</a> to continue."
+msgstr "Per favore <a href=\"rmagic\">accedi con il tuo identificativo RedMatrix</a> o <a href=\"register\">registrati su RedMatrix</a> per continuare."
-#: ../../mod/invite.php:146
-msgid "You will need to supply this invitation code: $invite_code"
-msgstr "Sarà necessario fornire questo codice invito: $invite_code"
+#: ../../mod/like.php:77 ../../mod/like.php:104 ../../mod/like.php:142
+msgid "Invalid request."
+msgstr "Richiesta non valida."
-#: ../../mod/invite.php:147
-msgid "Please visit my channel at"
-msgstr "Puoi visitare il mio canale su"
+#: ../../mod/like.php:119
+msgid "thing"
+msgstr "oggetto"
-#: ../../mod/invite.php:151
-msgid ""
-"Once you have registered (on ANY Red Matrix site - they are all inter-"
-"connected), please connect with my Red Matrix channel address:"
-msgstr "Una volta che avrai completato la registrazione (su QUALSIASI sito Red Matrix - sono tutti interconnessi), potrai connetterti al mio canale:"
+#: ../../mod/like.php:165
+msgid "Channel unavailable."
+msgstr "Canale non trovato."
-#: ../../mod/invite.php:153
-msgid "Click the [Register] link on the following page to join."
-msgstr "Fai clic su [Registrati] nella pagina seguente per iscriverti."
+#: ../../mod/like.php:204
+msgid "Previous action reversed."
+msgstr "Il comando precedente è stato annullato."
-#: ../../mod/invite.php:155
-msgid ""
-"For more information about the Red Matrix Project and why it has the "
-"potential to change the internet as we know it, please visit "
-"http://getzot.com"
-msgstr "Per saperne di più sul progetto Red Matrix e sul perché potrebbe cambiare internet per come la conosciamo, visita http://getzot.com"
+#: ../../mod/like.php:422
+msgid "Action completed."
+msgstr "Comando completato."
+
+#: ../../mod/like.php:423
+msgid "Thank you."
+msgstr "Grazie."
+
+#: ../../mod/help.php:41 ../../mod/help.php:47 ../../mod/help.php:53
+msgid "Help:"
+msgstr "Guida:"
-#: ../../mod/thing.php:98
+#: ../../mod/help.php:67 ../../index.php:238
+msgid "Not Found"
+msgstr "Non disponibile"
+
+#: ../../mod/thing.php:96
msgid "Thing updated"
msgstr "L'oggetto è stato aggiornato"
-#: ../../mod/thing.php:158
+#: ../../mod/thing.php:156
msgid "Object store: failed"
msgstr "Impossibile memorizzare l'oggetto."
-#: ../../mod/thing.php:162
+#: ../../mod/thing.php:160
msgid "Thing added"
msgstr "L'oggetto è stato aggiunto"
-#: ../../mod/thing.php:182
+#: ../../mod/thing.php:180
#, php-format
msgid "OBJ: %1$s %2$s %3$s"
msgstr "OBJ: %1$s %2$s %3$s"
-#: ../../mod/thing.php:234
+#: ../../mod/thing.php:232
msgid "Show Thing"
msgstr "Mostra l'oggetto"
-#: ../../mod/thing.php:241
+#: ../../mod/thing.php:239
msgid "item not found."
msgstr "non trovato."
-#: ../../mod/thing.php:272
+#: ../../mod/thing.php:270
msgid "Edit Thing"
msgstr "Modifica l'oggetto"
-#: ../../mod/thing.php:274 ../../mod/thing.php:321
+#: ../../mod/thing.php:272 ../../mod/thing.php:319
msgid "Select a profile"
msgstr "Scegli un profilo"
-#: ../../mod/thing.php:278 ../../mod/thing.php:324
+#: ../../mod/thing.php:276 ../../mod/thing.php:322
msgid "Post an activity"
msgstr "Pubblica un'attività"
-#: ../../mod/thing.php:278 ../../mod/thing.php:324
+#: ../../mod/thing.php:276 ../../mod/thing.php:322
msgid "Only sends to viewers of the applicable profile"
msgstr "Invia solo a chi segue il relativo canale"
-#: ../../mod/thing.php:280 ../../mod/thing.php:326
+#: ../../mod/thing.php:278 ../../mod/thing.php:324
msgid "Name of thing e.g. something"
msgstr "Nome dell'oggetto"
-#: ../../mod/thing.php:282 ../../mod/thing.php:327
+#: ../../mod/thing.php:280 ../../mod/thing.php:325
msgid "URL of thing (optional)"
-msgstr "Indirizzo web dell'oggetto"
+msgstr "Indirizzo web dell'oggetto (opzionale)"
-#: ../../mod/thing.php:284 ../../mod/thing.php:328
+#: ../../mod/thing.php:282 ../../mod/thing.php:326
msgid "URL for photo of thing (optional)"
msgstr "Indirizzo di un'immagine dell'oggetto (facoltativo)"
-#: ../../mod/thing.php:319
+#: ../../mod/thing.php:317
msgid "Add Thing to your Profile"
msgstr "Aggiungi l'oggetto al tuo profilo"
-#: ../../mod/oexchange.php:23
-msgid "Unable to find your hub."
-msgstr "Impossibile raggiungere il tuo hub."
-
-#: ../../mod/oexchange.php:37
-msgid "Post successful."
-msgstr "Inviato!"
-
-#: ../../mod/help.php:43 ../../mod/help.php:49 ../../mod/help.php:55
-msgid "Help:"
-msgstr "Guida:"
-
-#: ../../mod/help.php:69 ../../index.php:233
-msgid "Not Found"
-msgstr "Non disponibile"
-
-#: ../../mod/viewconnections.php:58
-msgid "No connections."
-msgstr "Nessun contatto."
-
-#: ../../mod/viewconnections.php:70
-#, php-format
-msgid "Visit %s's profile [%s]"
-msgstr "Visita il profilo di %s [%s]"
-
-#: ../../mod/viewconnections.php:85
-msgid "View Connnections"
-msgstr "Guarda i contatti"
-
-#: ../../mod/profperm.php:29 ../../mod/profperm.php:58
-msgid "Invalid profile identifier."
-msgstr "Indentificativo del profilo non valido."
-
-#: ../../mod/profperm.php:110
-msgid "Profile Visibility Editor"
-msgstr "Modifica la visibilità del profilo"
-
-#: ../../mod/profperm.php:114
-msgid "Click on a contact to add or remove."
-msgstr "Clicca su un contatto per aggiungerlo o rimuoverlo."
-
-#: ../../mod/profperm.php:123
-msgid "Visible To"
-msgstr "Visibile a"
-
-#: ../../mod/register.php:43
-msgid "Maximum daily site registrations exceeded. Please try again tomorrow."
-msgstr "È stato superato il numero massimo giornaliero di registrazioni a questo sito. Riprova domani!"
-
-#: ../../mod/register.php:49
-msgid ""
-"Please indicate acceptance of the Terms of Service. Registration failed."
-msgstr "Impossibile proseguire. Devi prima accettare le Condizioni d'Uso del servizio."
-
-#: ../../mod/register.php:77
-msgid "Passwords do not match."
-msgstr "Le password non corrispondono."
-
-#: ../../mod/register.php:105
-msgid ""
-"Registration successful. Please check your email for validation "
-"instructions."
-msgstr "La registrazione è terminata correttamente. Per continuare controlla l'email che ti è stata inviata."
-
-#: ../../mod/register.php:111
-msgid "Your registration is pending approval by the site owner."
-msgstr "La tua richiesta è in attesa di approvazione da parte dell'amministratore del sito."
-
-#: ../../mod/register.php:114
-msgid "Your registration can not be processed."
-msgstr "La tua registrazione non puo' essere acquisita."
-
-#: ../../mod/register.php:147
-msgid "Registration on this site/hub is by approval only."
-msgstr "La registrazione su questo sito è soggetta ad approvazione."
-
-#: ../../mod/register.php:148
-msgid "<a href=\"pubsites\">Register at another affiliated site/hub</a>"
-msgstr "<a href=\"pubsites\">Registrati su un altro server affiliato</a>"
-
-#: ../../mod/register.php:156
-msgid ""
-"This site has exceeded the number of allowed daily account registrations. "
-"Please try again tomorrow."
-msgstr "Questo sito ha superato il numero di registrazioni giornaliere consentite. Prova di nuovo domani."
+#: ../../mod/fsuggest.php:20 ../../mod/fsuggest.php:92
+msgid "Contact not found."
+msgstr "Contatto non trovato."
-#: ../../mod/register.php:167
-msgid "Terms of Service"
-msgstr "Condizioni d'Uso"
+#: ../../mod/fsuggest.php:63
+msgid "Friend suggestion sent."
+msgstr "Suggerimento di amicizia inviato."
-#: ../../mod/register.php:173
-#, php-format
-msgid "I accept the %s for this website"
-msgstr "Accetto le %s di questo sito"
+#: ../../mod/fsuggest.php:97
+msgid "Suggest Friends"
+msgstr "Suggerisci amici"
-#: ../../mod/register.php:175
+#: ../../mod/fsuggest.php:99
#, php-format
-msgid "I am over 13 years of age and accept the %s for this website"
-msgstr "Ho più di 13 anni e accetto le %s di questo sito"
-
-#: ../../mod/register.php:194
-msgid "Membership on this site is by invitation only."
-msgstr "Per registrarsi su questo sito è necessario un invito."
-
-#: ../../mod/register.php:195
-msgid "Please enter your invitation code"
-msgstr "Inserisci il codice dell'invito"
-
-#: ../../mod/register.php:198
-msgid "Your email address"
-msgstr "Il tuo indirizzo email"
-
-#: ../../mod/register.php:199
-msgid "Choose a password"
-msgstr "Scegli una password"
-
-#: ../../mod/register.php:200
-msgid "Please re-enter your password"
-msgstr "Ripeti la password per verifica"
-
-#: ../../mod/network.php:79
-msgid "No such group"
-msgstr "Impossibile trovare l'insieme"
-
-#: ../../mod/network.php:118
-msgid "Search Results For:"
-msgstr "Cerca risultati con:"
-
-#: ../../mod/network.php:172
-msgid "Collection is empty"
-msgstr "L'insieme di canali è vuoto"
-
-#: ../../mod/network.php:180
-msgid "Collection: "
-msgstr "Insieme:"
-
-#: ../../mod/network.php:193
-msgid "Connection: "
-msgstr "Connessione:"
-
-#: ../../mod/network.php:196
-msgid "Invalid connection."
-msgstr "Connessione non valida."
+msgid "Suggest a friend for %s"
+msgstr "Suggerisci un amico a %s"
-#: ../../mod/delegate.php:95
-msgid "No potential page delegates located."
-msgstr "Impossibile trovare delegati per questa pagina."
+#: ../../mod/filestorage.php:76
+msgid "Permission Denied."
+msgstr "Permesso negato."
-#: ../../mod/delegate.php:121
-msgid "Delegate Page Management"
-msgstr "Gestione delegati per la pagina"
+#: ../../mod/filestorage.php:92
+msgid "File not found."
+msgstr "File non trovato."
-#: ../../mod/delegate.php:123
-msgid ""
-"Delegates are able to manage all aspects of this account/page except for "
-"basic account settings. Please do not delegate your personal account to "
-"anybody that you do not trust completely."
-msgstr "I Delegati sono in grando di gestire tutti gli aspetti di questa pagina, tranne per i settaggi di base dell'account. Non delegare il tuo account personale a nessuno di cui non ti fidi ciecamente."
+#: ../../mod/filestorage.php:131
+msgid "Edit file permissions"
+msgstr "Modifica i permessi del file"
-#: ../../mod/delegate.php:124
-msgid "Existing Page Managers"
-msgstr "Gestori attuali della pagina"
+#: ../../mod/filestorage.php:140
+msgid "Set/edit permissions"
+msgstr "Modifica i permessi"
-#: ../../mod/delegate.php:126
-msgid "Existing Page Delegates"
-msgstr "Delegati attuali della pagina"
+#: ../../mod/filestorage.php:141
+msgid "Include all files and sub folders"
+msgstr "Includi tutti i file e le sottocartelle"
-#: ../../mod/delegate.php:128
-msgid "Potential Delegates"
-msgstr "Delegati potenziali"
+#: ../../mod/filestorage.php:142
+msgid "Return to file list"
+msgstr "Torna all'elenco dei file"
-#: ../../mod/delegate.php:131
-msgid "Add"
-msgstr "Aggiungi"
+#: ../../mod/filestorage.php:144
+msgid "Copy/paste this code to attach file to a post"
+msgstr "Copia/incolla questo codice per far comparire il file in un articolo"
-#: ../../mod/delegate.php:132
-msgid "No entries."
-msgstr "Nessun risultato."
+#: ../../mod/filestorage.php:145
+msgid "Copy/paste this URL to link file from a web page"
+msgstr "Copia/incolla questo indirizzo in una pagina web per avere un link al file"
-#: ../../mod/connect.php:55 ../../mod/connect.php:103
+#: ../../mod/connect.php:56 ../../mod/connect.php:104
msgid "Continue"
msgstr "Continua"
-#: ../../mod/connect.php:84
+#: ../../mod/connect.php:85
msgid "Premium Channel Setup"
msgstr "Canale premium - installazione"
-#: ../../mod/connect.php:86
+#: ../../mod/connect.php:87
msgid "Enable premium channel connection restrictions"
msgstr "Abilita le restrizioni del canale premium"
-#: ../../mod/connect.php:87
+#: ../../mod/connect.php:88
msgid ""
"Please enter your restrictions or conditions, such as paypal receipt, usage "
"guidelines, etc."
-msgstr "Scrivi le condizioni d'uso e le restrizioni di questo canale, come per esempio le linee guida o il sistema di pagamento ecc."
+msgstr "Scrivi le condizioni d'uso e le restrizioni di questo canale, come per esempio le linee guida, il sistema di pagamento, ecc."
-#: ../../mod/connect.php:89 ../../mod/connect.php:109
+#: ../../mod/connect.php:90 ../../mod/connect.php:110
msgid ""
"This channel may require additional steps or acknowledgement of the "
"following conditions prior to connecting:"
msgstr "Prima di connetterti a questo canale è necessario che tu accetti le seguenti condizioni:"
-#: ../../mod/connect.php:90
+#: ../../mod/connect.php:91
msgid ""
"Potential connections will then see the following text before proceeding:"
-msgstr "Il testo seguente comparirà a chi vorrà connettersi:"
+msgstr "Il testo seguente comparirà a chi vorrà seguire il canale:"
-#: ../../mod/connect.php:91 ../../mod/connect.php:112
+#: ../../mod/connect.php:92 ../../mod/connect.php:113
msgid ""
"By continuing, I certify that I have complied with any instructions provided"
" on this page."
msgstr "Continuando dichiaro di aver seguito tutte le indicazioni e le istruzioni fornite in questa pagina."
-#: ../../mod/connect.php:100
+#: ../../mod/connect.php:101
msgid "(No specific instructions have been provided by the channel owner.)"
msgstr "(Il gestore del canale non ha fornito istruzioni specifiche)"
-#: ../../mod/connect.php:108
+#: ../../mod/connect.php:109
msgid "Restricted or Premium Channel"
msgstr "Canale premium - con restrizioni"
-#: ../../mod/fsuggest.php:20 ../../mod/fsuggest.php:92
-msgid "Contact not found."
-msgstr "Contatto non trovato."
-
-#: ../../mod/fsuggest.php:63
-msgid "Friend suggestion sent."
-msgstr "Suggerimento di amicizia inviato."
-
-#: ../../mod/fsuggest.php:97
-msgid "Suggest Friends"
-msgstr "Suggerisci amici"
-
-#: ../../mod/fsuggest.php:99
-#, php-format
-msgid "Suggest a friend for %s"
-msgstr "Suggerisci un amico a %s"
-
-#: ../../mod/manage.php:64
-#, php-format
-msgid "You have created %1$.0f of %2$.0f allowed channels."
-msgstr "Hai creato %1$.0f dei %2$.0f canali permessi."
-
-#: ../../mod/manage.php:72
-msgid "Create a new channel"
-msgstr "Crea un nuovo canale"
-
-#: ../../mod/manage.php:77
-msgid "Channel Manager"
-msgstr "Gestione canali"
-
-#: ../../mod/manage.php:78
-msgid "Current Channel"
-msgstr "Canale attuale"
-
-#: ../../mod/manage.php:80
-msgid "Attach to one of your channels by selecting it."
-msgstr "Seleziona il canale a cui vuoi passare."
-
-#: ../../mod/manage.php:81
-msgid "Default Channel"
-msgstr "Canale predefinito"
-
-#: ../../mod/manage.php:82
-msgid "Make Default"
-msgstr "Rendi predefinito"
-
-#: ../../mod/removeme.php:49
-msgid "Remove This Channel"
-msgstr "Elimina questo canale"
-
-#: ../../mod/removeme.php:50
-msgid ""
-"This will completely remove this channel from the network. Once this has "
-"been done it is not recoverable."
-msgstr "Questo comando rimuoverà completamente il canale che stai usando. Una volta fatto non sarà più possibile ripristinarlo."
-
-#: ../../mod/removeme.php:51
-msgid "Please enter your password for verification:"
-msgstr "Inserisci la tua password per verifica:"
-
-#: ../../mod/removeme.php:52
-msgid "Remove this channel and all its clones from the network"
-msgstr "Rimuovi questo canale e tutti i suoi cloni dalla rete"
-
-#: ../../mod/removeme.php:52
-msgid ""
-"By default only the instance of the channel located on this hub will be "
-"removed from the network"
-msgstr "L'impostazione predefinita è che sia eliminata solo l'istanza del canale presente su questo hub, non gli eventuali cloni"
-
-#: ../../mod/removeme.php:53
-msgid "Remove Channel"
-msgstr "Elimina questo canale"
-
-#: ../../mod/editpost.php:20 ../../mod/editwebpage.php:32
-#: ../../mod/editblock.php:8 ../../mod/editblock.php:27
-#: ../../mod/editblock.php:53 ../../mod/editlayout.php:36
-msgid "Item not found"
-msgstr "Elemento non trovato"
-
-#: ../../mod/editpost.php:31
-msgid "Item is not editable"
-msgstr "L'elemento non è modificabile"
-
-#: ../../mod/editpost.php:42 ../../mod/rpost.php:97
-msgid "Edit post"
-msgstr "Modifica articolo"
-
-#: ../../mod/editpost.php:53
-msgid "Delete item?"
-msgstr "Eliminare questo elemento?"
-
-#: ../../mod/editpost.php:116 ../../mod/editwebpage.php:147
-#: ../../mod/editblock.php:115 ../../mod/editlayout.php:110
-msgid "Insert YouTube video"
-msgstr "Inserisci video da YouTube"
-
-#: ../../mod/editpost.php:117 ../../mod/editwebpage.php:148
-#: ../../mod/editblock.php:116 ../../mod/editlayout.php:111
-msgid "Insert Vorbis [.ogg] video"
-msgstr "Inserisci video Vorbis [.ogg]"
-
-#: ../../mod/editpost.php:118 ../../mod/editwebpage.php:149
-#: ../../mod/editblock.php:117 ../../mod/editlayout.php:112
-msgid "Insert Vorbis [.ogg] audio"
-msgstr "Inserisci audio Vorbis [.ogg]"
-
-#: ../../mod/editwebpage.php:106
-msgid "Edit Webpage"
-msgstr "Modifica la pagina web"
-
-#: ../../mod/editwebpage.php:116
-msgid "Delete webpage?"
-msgstr "Vuoi eliminare questa pagina web?"
-
-#: ../../mod/editwebpage.php:186
-msgid "Delete Webpage"
-msgstr "Elimina la pagina web"
-
-#: ../../mod/poke.php:159
-msgid "Poke/Prod"
-msgstr "Poke/Prod"
-
-#: ../../mod/poke.php:160
-msgid "poke, prod or do other things to somebody"
-msgstr "Manda un poke, un prod o altro"
-
-#: ../../mod/poke.php:161
-msgid "Recipient"
-msgstr "Destinatario"
-
-#: ../../mod/poke.php:162
-msgid "Choose what you wish to do to recipient"
-msgstr "Scegli cosa vuoi inviare al destinatario"
-
-#: ../../mod/poke.php:165
-msgid "Make this post private"
-msgstr "Rendi privato questo articolo"
-
-#: ../../mod/blocks.php:66
-msgid "Block Name"
-msgstr "Nome del riquadro"
-
-#: ../../mod/group.php:20
-msgid "Collection created."
-msgstr "L'insieme di canali è stato creato."
-
-#: ../../mod/group.php:26
-msgid "Could not create collection."
-msgstr "Impossibile creare l'insieme."
-
-#: ../../mod/group.php:54
-msgid "Collection updated."
-msgstr "Insieme aggiornato."
-
-#: ../../mod/group.php:86
-msgid "Create a collection of channels."
-msgstr "Crea un insieme di canali."
-
-#: ../../mod/group.php:87 ../../mod/group.php:183
-msgid "Collection Name: "
-msgstr "Nome dell'insieme:"
-
-#: ../../mod/group.php:89 ../../mod/group.php:186
-msgid "Members are visible to other channels"
-msgstr "I membri saranno visibili agli altri canali"
-
-#: ../../mod/group.php:107
-msgid "Collection removed."
-msgstr "Insieme rimosso."
-
-#: ../../mod/group.php:109
-msgid "Unable to remove collection."
-msgstr "Impossibile rimuovere l'insieme."
-
-#: ../../mod/group.php:182
-msgid "Collection Editor"
-msgstr "Modifica l'insieme"
-
-#: ../../mod/group.php:196
-msgid "Members"
-msgstr "Membri"
-
-#: ../../mod/group.php:198
-msgid "All Connected Channels"
-msgstr "Tutti i canali connessi"
-
-#: ../../mod/group.php:231
-msgid "Click on a channel to add or remove."
-msgstr "Clicca su un canale per aggiungerlo o rimuoverlo."
-
-#: ../../mod/tagrm.php:41
-msgid "Tag removed"
-msgstr "Tag rimosso"
-
-#: ../../mod/tagrm.php:79
-msgid "Remove Item Tag"
-msgstr "Rimuovi il tag"
-
-#: ../../mod/tagrm.php:81
-msgid "Select a tag to remove: "
-msgstr "Seleziona un tag da rimuovere: "
-
-#: ../../mod/attach.php:9
-msgid "Item not available."
-msgstr "Elemento non disponibile."
-
-#: ../../mod/item.php:147
-msgid "Unable to locate original post."
-msgstr "Impossibile trovare il messaggio originale."
-
-#: ../../mod/item.php:372
-msgid "Empty post discarded."
-msgstr "L'articolo vuoto è stato ignorato."
-
-#: ../../mod/item.php:414
-msgid "Executable content type not permitted to this channel."
-msgstr "I contenuti eseguibili non sono permessi su questo canale."
-
-#: ../../mod/item.php:836
-msgid "System error. Post not saved."
-msgstr "Errore di sistema. Articolo non salvato."
-
-#: ../../mod/item.php:1279
-#, php-format
-msgid "You have reached your limit of %1$.0f top level posts."
-msgstr "Hai raggiunto il limite massimo di %1$.0f articoli sulla pagina principale."
-
-#: ../../mod/item.php:1285
-#, php-format
-msgid "You have reached your limit of %1$.0f webpages."
-msgstr "Hai raggiunto il limite massimo di %1$.0f pagine web."
-
-#: ../../mod/cloud.php:115
-msgid "Red Matrix - Guests: Username: {your email address}, Password: +++"
-msgstr "Accesso a Red Matrix. Inserisci l'email con cui sei registrato e la password."
-
-#: ../../mod/chatsvc.php:111
-msgid "Away"
-msgstr "Assente"
-
-#: ../../mod/chatsvc.php:115
-msgid "Online"
-msgstr "Online"
-
-#: ../../mod/directory.php:207
-msgid "Finding:"
-msgstr "Ricerca:"
+#: ../../mod/filer.php:49
+msgid "- select -"
+msgstr "- scegli -"
-#: ../../mod/directory.php:215
-msgid "next page"
-msgstr "pagina succ."
+#: ../../mod/locs.php:19 ../../mod/locs.php:46
+msgid "Location not found."
+msgstr "Indirizzo non trovato."
-#: ../../mod/directory.php:215
-msgid "previous page"
-msgstr "pagina prec."
+#: ../../mod/locs.php:50
+msgid "Primary location cannot be removed."
+msgstr "L'indirizzo principale non può essere rimosso."
-#: ../../mod/directory.php:222
-msgid "No entries (some entries may be hidden)."
-msgstr "Nessun risultato (qualcosa potrebbe essere nascosto)."
+#: ../../mod/locs.php:82
+msgid "No locations found."
+msgstr "Nessun indirizzo trovato."
-#: ../../mod/match.php:16
-msgid "Profile Match"
-msgstr "Profili corrispondenti"
+#: ../../mod/locs.php:95
+msgid "Manage Channel Locations"
+msgstr "Modifica gli indirizzi del canale"
-#: ../../mod/match.php:24
-msgid "No keywords to match. Please add keywords to your default profile."
-msgstr "Nessuna parola chiave per le ricerche. Aggiungi parole chiave al tuo profilo predefinito."
+#: ../../mod/locs.php:96
+msgid "Location (address)"
+msgstr "Indirizzo"
-#: ../../mod/match.php:61
-msgid "is interested in:"
-msgstr "interessi personali:"
+#: ../../mod/locs.php:97
+msgid "Primary Location"
+msgstr "Indirizzo primario"
-#: ../../mod/match.php:69
-msgid "No matches"
-msgstr "Nessun risultato"
+#: ../../mod/locs.php:98
+msgid "Drop location"
+msgstr "Elimina un indirizzo"
-#: ../../mod/dirsearch.php:21
-msgid "This site is not a directory server"
-msgstr "Questo sito non fornisce l'elenco generale dei canali"
+#: ../../mod/follow.php:25
+msgid "Channel added."
+msgstr "Canale aggiunto."
-#: ../../mod/siteinfo.php:57
+#: ../../mod/import.php:25
#, php-format
-msgid "Version %s"
-msgstr "Versione %s"
-
-#: ../../mod/siteinfo.php:76
-msgid "Installed plugins/addons/apps:"
-msgstr "App e componenti installati:"
-
-#: ../../mod/siteinfo.php:89
-msgid "No installed plugins/addons/apps"
-msgstr "Nessuna app o componente installato"
-
-#: ../../mod/siteinfo.php:97
-msgid "Red"
-msgstr "Red"
-
-#: ../../mod/siteinfo.php:98
-msgid ""
-"This is a hub of the Red Matrix - a global cooperative network of "
-"decentralised privacy enhanced websites."
-msgstr "Questo è un hub di Red Matrix - una rete cooperativa e decentralizzata di siti con elevato livello di privacy. "
-
-#: ../../mod/siteinfo.php:101
-msgid "Running at web location"
-msgstr "In esecuzione sull'indirizzo web"
-
-#: ../../mod/siteinfo.php:102
-msgid ""
-"Please visit <a href=\"http://getzot.com\">GetZot.com</a> to learn more "
-"about the Red Matrix."
-msgstr "Visita <a href=\"http://getzot.com\">GetZot.com</a> per scoprire il progetto Red Matrix."
-
-#: ../../mod/siteinfo.php:103
-msgid "Bug reports and issues: please visit"
-msgstr "Per segnalare bug e problemi: visita"
-
-#: ../../mod/siteinfo.php:106
-msgid ""
-"Suggestions, praise, etc. - please email \"redmatrix\" at librelist - dot "
-"com"
-msgstr "Per consigli, ringraziamenti, ecc. - scrivi a \"redmatrix\" at librelist - dot com"
-
-#: ../../mod/siteinfo.php:108
-msgid "Site Administrators"
-msgstr "Amministratori del sito"
-
-#: ../../mod/appman.php:28 ../../mod/appman.php:44
-msgid "App installed."
-msgstr "App installata"
-
-#: ../../mod/appman.php:37
-msgid "Malformed app."
-msgstr "App non corretta"
-
-#: ../../mod/appman.php:80
-msgid "Embed code"
-msgstr "Inserisci del codice"
-
-#: ../../mod/appman.php:86
-msgid "Edit App"
-msgstr "Modifica app"
-
-#: ../../mod/appman.php:86
-msgid "Create App"
-msgstr "Crea una app"
-
-#: ../../mod/appman.php:91
-msgid "Name of app"
-msgstr "Nome app"
-
-#: ../../mod/appman.php:91 ../../mod/appman.php:92 ../../mod/events.php:473
-#: ../../mod/events.php:487
-msgid "Required"
-msgstr "Obbligatorio"
-
-#: ../../mod/appman.php:92
-msgid "Location (URL) of app"
-msgstr "Indirizzo (URL) della app"
-
-#: ../../mod/appman.php:94
-msgid "Photo icon URL"
-msgstr "URL icona"
-
-#: ../../mod/appman.php:94
-msgid "80 x 80 pixels - optional"
-msgstr "80 x 80 pixel - facoltativa"
-
-#: ../../mod/appman.php:95
-msgid "Version ID"
-msgstr "ID versione"
-
-#: ../../mod/appman.php:96
-msgid "Price of app"
-msgstr "Prezzo app"
-
-#: ../../mod/appman.php:97
-msgid "Location (URL) to purchase app"
-msgstr "Indirizzo (URL) per acquistare la app"
-
-#: ../../mod/sources.php:32
-msgid "Failed to create source. No channel selected."
-msgstr "Impossibile creare la sorgente. Nessun canale selezionato."
-
-#: ../../mod/sources.php:45
-msgid "Source created."
-msgstr "Sorgente creata."
+msgid "Your service plan only allows %d channels."
+msgstr "Il tuo account permette di creare al massimo %d canali."
-#: ../../mod/sources.php:57
-msgid "Source updated."
-msgstr "Sorgente aggiornata."
-
-#: ../../mod/sources.php:82
-msgid "*"
-msgstr "*"
-
-#: ../../mod/sources.php:89
-msgid "Manage remote sources of content for your channel."
-msgstr "Gestisci le sorgenti dei contenuti del tuo canale."
-
-#: ../../mod/sources.php:90 ../../mod/sources.php:100
-msgid "New Source"
-msgstr "Nuova sorgente"
-
-#: ../../mod/sources.php:101 ../../mod/sources.php:133
-msgid ""
-"Import all or selected content from the following channel into this channel "
-"and distribute it according to your channel settings."
-msgstr "Importa nel tuo canale tutti o una parte dei contenuti dal canale seguente."
-
-#: ../../mod/sources.php:102 ../../mod/sources.php:134
-msgid "Only import content with these words (one per line)"
-msgstr "Importa solo i contenuti che hanno queste parole (una per riga)"
-
-#: ../../mod/sources.php:102 ../../mod/sources.php:134
-msgid "Leave blank to import all public content"
-msgstr "Lascia vuoto per importare tutti i contenuti pubblici"
-
-#: ../../mod/sources.php:123 ../../mod/sources.php:150
-msgid "Source not found."
-msgstr "Sorgente non trovata."
-
-#: ../../mod/sources.php:130
-msgid "Edit Source"
-msgstr "Modifica la sorgente"
-
-#: ../../mod/sources.php:131
-msgid "Delete Source"
-msgstr "Elimina la sorgente"
-
-#: ../../mod/sources.php:158
-msgid "Source removed"
-msgstr "Sorgente eliminata"
-
-#: ../../mod/sources.php:160
-msgid "Unable to remove source."
-msgstr "Impossibile rimuovere la sorgente."
-
-#: ../../mod/pubsites.php:16
-msgid "Public Sites"
-msgstr "Siti pubblici"
-
-#: ../../mod/pubsites.php:19
-msgid ""
-"The listed sites allow public registration into the Red Matrix. All sites in"
-" the matrix are interlinked so membership on any of them conveys membership "
-"in the matrix as a whole. Some sites may require subscription or provide "
-"tiered service plans. The provider links <strong>may</strong> provide "
-"additional details."
-msgstr "Gli indirizzi elencati permettono la registrazione su Red Matrix. Tutti i siti di questa rete sono interconnessi, quindi essere registrati su uno è come essere registrati ovunque. Alcuni potrebbero richiedere un'iscrizione a pagamento o prevedere tipi diversi di abbonamento. Potrai trovare maggiori informazioni al riguardo visitando ciascun sito."
-
-#: ../../mod/pubsites.php:25
-msgid "Site URL"
-msgstr "URL del sito"
-
-#: ../../mod/pubsites.php:25
-msgid "Access Type"
-msgstr "Tipo di accesso"
-
-#: ../../mod/pubsites.php:25
-msgid "Registration Policy"
-msgstr "Politica di registrazione"
-
-#: ../../mod/pubsites.php:25 ../../mod/profiles.php:344
-msgid "Location"
-msgstr "Luogo attuale"
-
-#: ../../mod/import.php:36
+#: ../../mod/import.php:51
msgid "Nothing to import."
msgstr "Non c'è niente da importare."
-#: ../../mod/import.php:58
+#: ../../mod/import.php:75
msgid "Unable to download data from old server"
msgstr "Impossibile importare i dati dal vecchio server"
-#: ../../mod/import.php:64
+#: ../../mod/import.php:81
msgid "Imported file is empty."
msgstr "Il file da importare è vuoto."
-#: ../../mod/import.php:88
+#: ../../mod/import.php:106
msgid ""
"Cannot create a duplicate channel identifier on this system. Import failed."
msgstr "Non posso creare un canale con un identificativo che già esiste su questo sistema. L'importazione è fallita."
-#: ../../mod/import.php:106
+#: ../../mod/import.php:127
+msgid "Unable to create a unique channel address. Import failed."
+msgstr "Impossibile creare un indirizzo univoco per il canale. L'import è fallito."
+
+#: ../../mod/import.php:147
msgid "Channel clone failed. Import failed."
msgstr "Impossibile clonare il canale. L'importazione è fallita."
-#: ../../mod/import.php:116
+#: ../../mod/import.php:157
msgid "Cloned channel not found. Import failed."
msgstr "Impossibile trovare il canale clonato. L'importazione è fallita."
-#: ../../mod/import.php:364
+#: ../../mod/import.php:475
msgid "Import completed."
msgstr "L'importazione è terminata con successo!"
-#: ../../mod/import.php:377
+#: ../../mod/import.php:487
msgid "You must be logged in to use this feature."
msgstr "Per questa funzionalità devi aver effettuato l'accesso."
-#: ../../mod/import.php:382
+#: ../../mod/import.php:492
msgid "Import Channel"
msgstr "Importa un canale"
-#: ../../mod/import.php:383
+#: ../../mod/import.php:493
msgid ""
"Use this form to import an existing channel from a different server/hub. You"
" may retrieve the channel identity from the old server/hub via the network "
@@ -7053,118 +6598,89 @@ msgid ""
"be imported. Importation of content is not yet available."
msgstr "Usa questo modulo per importare un tuo canale da un altro server/hub. Puoi scaricare i dati identificativi del canale direttamente dall'altro server/hub oppure tramite un file che hai esportato. Saranno importati solamente l'identità e i contatti. L'importazione dei contenuti non è ancora disponibile."
-#: ../../mod/import.php:384
+#: ../../mod/import.php:494
msgid "File to Upload"
msgstr "File da caricare"
-#: ../../mod/import.php:385
+#: ../../mod/import.php:495
msgid "Or provide the old server/hub details"
msgstr "Oppure fornisci i dettagli del vecchio server/hub"
-#: ../../mod/import.php:386
+#: ../../mod/import.php:496
msgid "Your old identity address (xyz@example.com)"
msgstr "Il tuo vecchio identificativo (per esempio pippo@esempio.com)"
-#: ../../mod/import.php:387
+#: ../../mod/import.php:497
msgid "Your old login email address"
msgstr "L'email che usavi per accedere sul vecchio server"
-#: ../../mod/import.php:388
+#: ../../mod/import.php:498
msgid "Your old login password"
msgstr "La password per il vecchio server"
-#: ../../mod/import.php:389
+#: ../../mod/import.php:499
msgid ""
"For either option, please choose whether to make this hub your new primary "
"address, or whether your old location should continue this role. You will be"
" able to post from either location, but only one can be marked as the "
"primary location for files, photos, and media."
-msgstr "Per ciascuna opzione, scegli se vuoi rendere questo server il tuo indirizzo primario, oppure se preferisci che lo rimanga il vecchio. Potrai pubblicare da entrambi i server, ma solamente uno sarà marcato come primario per i tuoi file, foto, ecc."
+msgstr "Scegli se vuoi spostare il tuo indirizzo primario su questo server, oppure se preferisci che quello vecchio resti tale. Potrai pubblicare da entrambi i server, ma solamente uno sarà indicato come posizione in cui risiedono i tuoi file, foto, ecc."
-#: ../../mod/import.php:390
+#: ../../mod/import.php:500
msgid "Make this hub my primary location"
msgstr "Rendi questo server il mio indirizzo primario"
-#: ../../mod/zfinger.php:23
-msgid "invalid target signature"
-msgstr "la firma riscontrata non è valida"
-
-#: ../../mod/mail.php:33
-msgid "Unable to lookup recipient."
-msgstr "Impossibile associare un destinatario."
-
-#: ../../mod/mail.php:41
-msgid "Unable to communicate with requested channel."
-msgstr "Impossibile comunicare con il canale richiesto."
-
-#: ../../mod/mail.php:48
-msgid "Cannot verify requested channel."
-msgstr "Impossibile verificare il canale richiesto."
-
-#: ../../mod/mail.php:74
-msgid "Selected channel has private message restrictions. Send failed."
-msgstr "Il canale ha delle regole restrittive per la ricezione dei messaggi privati. Invio fallito."
-
-#: ../../mod/mail.php:132
-msgid "Message deleted."
-msgstr "Messaggio eliminato."
+#: ../../mod/import.php:501
+msgid "Import existing posts if possible"
+msgstr "Importazione dei post esistenti, se possibile"
-#: ../../mod/mail.php:149
-msgid "Message recalled."
-msgstr "Messaggio revocato."
-
-#: ../../mod/mail.php:202
-msgid "Send Private Message"
-msgstr "Invia un messaggio privato"
-
-#: ../../mod/mail.php:203 ../../mod/mail.php:320
-msgid "To:"
-msgstr "A:"
-
-#: ../../mod/mail.php:208 ../../mod/mail.php:322
-msgid "Subject:"
-msgstr "Oggetto:"
+#: ../../mod/item.php:159
+msgid "Unable to locate original post."
+msgstr "Impossibile trovare il messaggio originale."
-#: ../../mod/mail.php:246
-msgid "Message not found."
-msgstr "Messaggio non trovato."
+#: ../../mod/item.php:418
+msgid "Empty post discarded."
+msgstr "L'articolo vuoto è stato ignorato."
-#: ../../mod/mail.php:290
-msgid "Recall message"
-msgstr "Revoca il messaggio"
+#: ../../mod/item.php:460
+msgid "Executable content type not permitted to this channel."
+msgstr "I contenuti eseguibili non sono permessi su questo canale."
-#: ../../mod/mail.php:292
-msgid "Message has been recalled."
-msgstr "Il messaggio è stato revocato."
+#: ../../mod/item.php:899
+msgid "System error. Post not saved."
+msgstr "Errore di sistema. Articolo non salvato."
-#: ../../mod/mail.php:309
-msgid "Private Conversation"
-msgstr "Conversazione privata"
+#: ../../mod/item.php:1117
+#, php-format
+msgid "You have reached your limit of %1$.0f top level posts."
+msgstr "Hai raggiunto il limite massimo di %1$.0f articoli sulla pagina principale."
-#: ../../mod/mail.php:313
-msgid "Delete conversation"
-msgstr "Elimina la conversazione"
+#: ../../mod/item.php:1123
+#, php-format
+msgid "You have reached your limit of %1$.0f webpages."
+msgstr "Hai raggiunto il limite massimo di %1$.0f pagine web."
-#: ../../mod/mail.php:315
+#: ../../mod/suggest.php:35
msgid ""
-"No secure communications available. You <strong>may</strong> be able to "
-"respond from the sender's profile page."
-msgstr "Non è disponibile alcun sistema per comunicare in modo sicuro. Puoi verificare se <strong>eventualmente</strong> è possibile rispondere dalla pagina del profilo del mittente."
+"No suggestions available. If this is a new site, please try again in 24 "
+"hours."
+msgstr "Nessun suggerimento disponibile. Se questo sito è nuovo, riprova tra 24 ore."
-#: ../../mod/mail.php:319
-msgid "Send Reply"
-msgstr "Invia la risposta"
+#: ../../mod/layouts.php:110
+msgid "Help with this feature"
+msgstr "La guida per questa funzionalità"
-#: ../../mod/channel.php:25 ../../mod/chat.php:19
-msgid "You must be logged in to see this page."
-msgstr "Devi aver effettuato l'accesso per vedere questa pagina."
+#: ../../mod/layouts.php:130
+msgid "Layout Name"
+msgstr "Nome layout"
-#: ../../mod/channel.php:86
-msgid "Insufficient permissions. Request redirected to profile page."
-msgstr "Permessi insufficienti. Sarà visualizzata la pagina del profilo."
+#: ../../mod/tagger.php:98
+#, php-format
+msgid "%1$s tagged %2$s's %3$s with %4$s"
+msgstr "%1$s ha taggato %3$s di %2$s con %4$s"
-#: ../../mod/profiles.php:18 ../../mod/profiles.php:138
-#: ../../mod/profiles.php:168 ../../mod/profiles.php:472
+#: ../../mod/profiles.php:18 ../../mod/profiles.php:165
+#: ../../mod/profiles.php:222 ../../mod/profiles.php:565
msgid "Profile not found."
msgstr "Profilo non trovato."
@@ -7184,376 +6700,1095 @@ msgstr "Il nuovo profilo è stato creato."
msgid "Profile unavailable to clone."
msgstr "Impossibile duplicare il profilo."
-#: ../../mod/profiles.php:178
+#: ../../mod/profiles.php:136
+msgid "Profile unavailable to export."
+msgstr "Il profilo non è disponibile per l'export."
+
+#: ../../mod/profiles.php:232
msgid "Profile Name is required."
msgstr "Il nome del profilo è obbligatorio ."
-#: ../../mod/profiles.php:294
+#: ../../mod/profiles.php:378
msgid "Marital Status"
msgstr "Stato sentimentale"
-#: ../../mod/profiles.php:298
+#: ../../mod/profiles.php:382
msgid "Romantic Partner"
msgstr "Partner affettivo"
-#: ../../mod/profiles.php:302
+#: ../../mod/profiles.php:386
msgid "Likes"
msgstr "Mi piace"
-#: ../../mod/profiles.php:306
+#: ../../mod/profiles.php:390
msgid "Dislikes"
msgstr "Non mi piace"
-#: ../../mod/profiles.php:310
+#: ../../mod/profiles.php:394
msgid "Work/Employment"
msgstr "Lavoro/impiego"
-#: ../../mod/profiles.php:313
+#: ../../mod/profiles.php:397
msgid "Religion"
msgstr "Religione"
-#: ../../mod/profiles.php:317
+#: ../../mod/profiles.php:401
msgid "Political Views"
msgstr "Orientamento politico"
-#: ../../mod/profiles.php:321
+#: ../../mod/profiles.php:405
msgid "Gender"
msgstr "Sesso"
-#: ../../mod/profiles.php:325
+#: ../../mod/profiles.php:409
msgid "Sexual Preference"
msgstr "Preferenze sessuali"
-#: ../../mod/profiles.php:329
+#: ../../mod/profiles.php:413
msgid "Homepage"
msgstr "Home page"
-#: ../../mod/profiles.php:333
+#: ../../mod/profiles.php:417
msgid "Interests"
msgstr "Interessi"
-#: ../../mod/profiles.php:427
+#: ../../mod/profiles.php:421 ../../mod/admin.php:866
+msgid "Address"
+msgstr "Indirizzo"
+
+#: ../../mod/profiles.php:511
msgid "Profile updated."
msgstr "Profilo aggiornato."
-#: ../../mod/profiles.php:491
+#: ../../mod/profiles.php:590
msgid "Hide your contact/friend list from viewers of this profile?"
msgstr "Nascondi la tua lista di contatti/amici ai visitatori di questo profilo?"
-#: ../../mod/profiles.php:514
+#: ../../mod/profiles.php:632
msgid "Edit Profile Details"
msgstr "Modifica i dettagli del profilo"
-#: ../../mod/profiles.php:516
+#: ../../mod/profiles.php:634
msgid "View this profile"
msgstr "Guarda questo profilo"
-#: ../../mod/profiles.php:517
+#: ../../mod/profiles.php:636
msgid "Change Profile Photo"
msgstr "Cambia la foto del profilo"
-#: ../../mod/profiles.php:518
+#: ../../mod/profiles.php:637
msgid "Create a new profile using these settings"
msgstr "Crea un nuovo profilo usando queste impostazioni"
-#: ../../mod/profiles.php:519
+#: ../../mod/profiles.php:638
msgid "Clone this profile"
msgstr "Clona questo profilo"
-#: ../../mod/profiles.php:520
+#: ../../mod/profiles.php:639
msgid "Delete this profile"
msgstr "Elimina questo profilo"
-#: ../../mod/profiles.php:521
+#: ../../mod/profiles.php:641
+msgid "Import profile from file"
+msgstr "Importa il profilo da un file"
+
+#: ../../mod/profiles.php:642
+msgid "Export profile to file"
+msgstr "Esporta il profilo in un file"
+
+#: ../../mod/profiles.php:643
msgid "Profile Name:"
msgstr "Nome del profilo:"
-#: ../../mod/profiles.php:522
+#: ../../mod/profiles.php:644
msgid "Your Full Name:"
msgstr "Il tuo nome completo:"
-#: ../../mod/profiles.php:523
+#: ../../mod/profiles.php:645
msgid "Title/Description:"
msgstr "Titolo/descrizione:"
-#: ../../mod/profiles.php:524
+#: ../../mod/profiles.php:646
msgid "Your Gender:"
msgstr "Sesso:"
-#: ../../mod/profiles.php:525
-#, php-format
-msgid "Birthday (%s):"
-msgstr "Compleanno (%s):"
+#: ../../mod/profiles.php:647
+msgid "Birthday :"
+msgstr "Compleanno:"
-#: ../../mod/profiles.php:526
+#: ../../mod/profiles.php:648
msgid "Street Address:"
msgstr "Indirizzo (via/piazza):"
-#: ../../mod/profiles.php:527
+#: ../../mod/profiles.php:649
msgid "Locality/City:"
msgstr "Località:"
-#: ../../mod/profiles.php:528
+#: ../../mod/profiles.php:650
msgid "Postal/Zip Code:"
msgstr "CAP:"
-#: ../../mod/profiles.php:529
+#: ../../mod/profiles.php:651
msgid "Country:"
msgstr "Nazione:"
-#: ../../mod/profiles.php:530
+#: ../../mod/profiles.php:652
msgid "Region/State:"
msgstr "Regione/stato:"
-#: ../../mod/profiles.php:531
+#: ../../mod/profiles.php:653
msgid "<span class=\"heart\">&hearts;</span> Marital Status:"
msgstr "<span class=\"heart\">&hearts;</span> Stato sentimentale:"
-#: ../../mod/profiles.php:532
+#: ../../mod/profiles.php:654
msgid "Who: (if applicable)"
msgstr "Con chi: (se possibile)"
-#: ../../mod/profiles.php:533
+#: ../../mod/profiles.php:655
msgid "Examples: cathy123, Cathy Williams, cathy@example.com"
msgstr "Per esempio: cathy123, Cathy Williams, cathy@example.com"
-#: ../../mod/profiles.php:534
+#: ../../mod/profiles.php:656
msgid "Since [date]:"
msgstr "dal [data]:"
-#: ../../mod/profiles.php:536
+#: ../../mod/profiles.php:658
msgid "Homepage URL:"
msgstr "Indirizzo home page:"
-#: ../../mod/profiles.php:539
+#: ../../mod/profiles.php:661
msgid "Religious Views:"
msgstr "Orientamento religioso:"
-#: ../../mod/profiles.php:540
+#: ../../mod/profiles.php:662
msgid "Keywords:"
msgstr "Parole chiave, tag:"
-#: ../../mod/profiles.php:543
+#: ../../mod/profiles.php:665
msgid "Example: fishing photography software"
msgstr "Per esempio: pesca fotografia programmazione"
-#: ../../mod/profiles.php:544
+#: ../../mod/profiles.php:666
msgid "Used in directory listings"
msgstr "Visibile nell'elenco pubblico di canali"
-#: ../../mod/profiles.php:545
+#: ../../mod/profiles.php:667
msgid "Tell us about yourself..."
msgstr "Raccontaci di te..."
-#: ../../mod/profiles.php:546
+#: ../../mod/profiles.php:668
msgid "Hobbies/Interests"
msgstr "Hobby/interessi"
-#: ../../mod/profiles.php:547
+#: ../../mod/profiles.php:669
msgid "Contact information and Social Networks"
msgstr "Contatti personali e i tuoi social network"
-#: ../../mod/profiles.php:548
+#: ../../mod/profiles.php:670
msgid "My other channels"
msgstr "I miei altri canali"
-#: ../../mod/profiles.php:549
+#: ../../mod/profiles.php:671
msgid "Musical interests"
msgstr "Interessi musicali"
-#: ../../mod/profiles.php:550
+#: ../../mod/profiles.php:672
msgid "Books, literature"
msgstr "Libri, letteratura"
-#: ../../mod/profiles.php:551
+#: ../../mod/profiles.php:673
msgid "Television"
msgstr "Televisione"
-#: ../../mod/profiles.php:552
+#: ../../mod/profiles.php:674
msgid "Film/dance/culture/entertainment"
msgstr "Film/danza/cultura/intrattenimento"
-#: ../../mod/profiles.php:553
+#: ../../mod/profiles.php:675
msgid "Love/romance"
msgstr "Amore"
-#: ../../mod/profiles.php:554
+#: ../../mod/profiles.php:676
msgid "Work/employment"
msgstr "Lavoro/impiego"
-#: ../../mod/profiles.php:555
+#: ../../mod/profiles.php:677
msgid "School/education"
msgstr "Scuola/educazione"
-#: ../../mod/profiles.php:560
-msgid ""
-"This is your <strong>public</strong> profile.<br />It <strong>may</strong> "
-"be visible to anybody using the internet."
-msgstr "Questo è il tuo profilo <strong>publico</strong>.<br /><strong>Potrebbe</strong> essere visto da chiunque attraverso internet."
+#: ../../mod/profiles.php:683
+msgid "This is your default profile."
+msgstr "Questo è il tuo profilo predefinito."
+
+#: ../../mod/profiles.php:694 ../../mod/directory.php:188
+msgid "Age: "
+msgstr "Età:"
-#: ../../mod/profiles.php:609
+#: ../../mod/profiles.php:737
msgid "Edit/Manage Profiles"
msgstr "Modifica/gestisci i profili"
-#: ../../mod/profiles.php:610
+#: ../../mod/profiles.php:738
msgid "Add profile things"
msgstr "Aggiungi oggetti al profilo"
-#: ../../mod/profiles.php:611
+#: ../../mod/profiles.php:739
msgid "Include desirable objects in your profile"
msgstr "Aggiungi oggetti interessanti al tuo profilo"
-#: ../../mod/bookmarks.php:38
-msgid "Bookmark added"
-msgstr "Segnalibro aggiunto"
+#: ../../mod/tagrm.php:44 ../../mod/tagrm.php:94
+msgid "Tag removed"
+msgstr "Tag rimosso"
-#: ../../mod/bookmarks.php:58
-msgid "My Bookmarks"
-msgstr "I miei segnalibri"
+#: ../../mod/tagrm.php:119
+msgid "Remove Item Tag"
+msgstr "Rimuovi il tag"
-#: ../../mod/bookmarks.php:69
-msgid "My Connections Bookmarks"
-msgstr "I segnalibri dei miei contatti"
+#: ../../mod/tagrm.php:121
+msgid "Select a tag to remove: "
+msgstr "Seleziona un tag da rimuovere: "
-#: ../../mod/common.php:10
-msgid "No channel."
-msgstr "Nessun canale."
+#: ../../mod/admin.php:52
+msgid "Theme settings updated."
+msgstr "Le impostazioni del tema sono state aggiornate."
-#: ../../mod/common.php:39
-msgid "Common connections"
-msgstr "Contatti in comune"
+#: ../../mod/admin.php:97 ../../mod/admin.php:411
+msgid "Site"
+msgstr "Sito"
-#: ../../mod/common.php:44
-msgid "No connections in common."
-msgstr "Nessun contatto in comune."
+#: ../../mod/admin.php:98
+msgid "Accounts"
+msgstr "Account"
-#: ../../mod/like.php:97
-msgid "thing"
-msgstr "oggetto"
+#: ../../mod/admin.php:99 ../../mod/admin.php:858
+msgid "Channels"
+msgstr "Canali"
-#: ../../mod/notify.php:53 ../../mod/notifications.php:94
-msgid "No more system notifications."
-msgstr "Non ci sono nuove notifiche di sistema."
+#: ../../mod/admin.php:100 ../../mod/admin.php:949 ../../mod/admin.php:991
+msgid "Plugins"
+msgstr "Plugin"
-#: ../../mod/notify.php:57 ../../mod/notifications.php:98
-msgid "System Notifications"
-msgstr "Notifiche di sistema"
+#: ../../mod/admin.php:101 ../../mod/admin.php:1154 ../../mod/admin.php:1190
+msgid "Themes"
+msgstr "Temi"
-#: ../../mod/api.php:76 ../../mod/api.php:102
-msgid "Authorize application connection"
-msgstr "Autorizza la app"
+#: ../../mod/admin.php:102 ../../mod/admin.php:512
+msgid "Server"
+msgstr "Server"
-#: ../../mod/api.php:77
-msgid "Return to your app and insert this Securty Code:"
-msgstr "Torna alla app e inserisci questo codice di sicurezza:"
+#: ../../mod/admin.php:103
+msgid "Profile Config"
+msgstr "Configurazione del profilo"
-#: ../../mod/api.php:89
-msgid "Please login to continue."
-msgstr "Accedi al sito per continuare."
+#: ../../mod/admin.php:104
+msgid "DB updates"
+msgstr "Aggiornamenti al DB"
-#: ../../mod/api.php:104
+#: ../../mod/admin.php:118 ../../mod/admin.php:125 ../../mod/admin.php:1277
+msgid "Logs"
+msgstr "Log"
+
+#: ../../mod/admin.php:124
+msgid "Plugin Features"
+msgstr "Plugin"
+
+#: ../../mod/admin.php:126
+msgid "User registrations waiting for confirmation"
+msgstr "Registrazioni in attesa"
+
+#: ../../mod/admin.php:206
+msgid "Message queues"
+msgstr "Messaggi in attesa di recapito"
+
+#: ../../mod/admin.php:211 ../../mod/admin.php:410 ../../mod/admin.php:511
+#: ../../mod/admin.php:721 ../../mod/admin.php:857 ../../mod/admin.php:948
+#: ../../mod/admin.php:990 ../../mod/admin.php:1153 ../../mod/admin.php:1189
+#: ../../mod/admin.php:1276
+msgid "Administration"
+msgstr "Amministrazione"
+
+#: ../../mod/admin.php:212
+msgid "Summary"
+msgstr "Riepilogo"
+
+#: ../../mod/admin.php:214
+msgid "Registered users"
+msgstr "Utenti registrati"
+
+#: ../../mod/admin.php:216 ../../mod/admin.php:515
+msgid "Pending registrations"
+msgstr "Registrazioni da approvare"
+
+#: ../../mod/admin.php:217
+msgid "Version"
+msgstr "Versione"
+
+#: ../../mod/admin.php:219 ../../mod/admin.php:516
+msgid "Active plugins"
+msgstr "Plugin attivi"
+
+#: ../../mod/admin.php:326
+msgid "Site settings updated."
+msgstr "Impostazioni del sito salvate correttamente."
+
+#: ../../mod/admin.php:365
+msgid "experimental"
+msgstr "sperimentale"
+
+#: ../../mod/admin.php:367
+msgid "unsupported"
+msgstr "non supportato"
+
+#: ../../mod/admin.php:391
+msgid "Yes - with approval"
+msgstr "Sì - con approvazione"
+
+#: ../../mod/admin.php:397
+msgid "My site is not a public server"
+msgstr "Non è un server pubblico"
+
+#: ../../mod/admin.php:398
+msgid "My site has paid access only"
+msgstr "È un servizio a pagamento"
+
+#: ../../mod/admin.php:399
+msgid "My site has free access only"
+msgstr "È un servizio gratuito"
+
+#: ../../mod/admin.php:400
+msgid "My site offers free accounts with optional paid upgrades"
+msgstr "È un servizio gratuito con opzioni aggiuntive a pagamento"
+
+#: ../../mod/admin.php:414
+msgid "File upload"
+msgstr "Caricamento file"
+
+#: ../../mod/admin.php:415
+msgid "Policies"
+msgstr "Politiche"
+
+#: ../../mod/admin.php:420
+msgid "Site name"
+msgstr "Nome del sito"
+
+#: ../../mod/admin.php:421
+msgid "Banner/Logo"
+msgstr "Banner o logo"
+
+#: ../../mod/admin.php:422
+msgid "Administrator Information"
+msgstr "Informazioni sull'amministratore"
+
+#: ../../mod/admin.php:422
msgid ""
-"Do you want to authorize this application to access your posts and contacts,"
-" and/or create new posts for you?"
-msgstr "Vuoi autorizzare questa app ad accedere ai messaggi e ai contatti o creare nuovi messaggi per te?"
+"Contact information for site administrators. Displayed on siteinfo page. "
+"BBCode can be used here"
+msgstr "Informazioni per contattare gli amministratori del sito. Saranno mostrate sulla pagina di informazioni. È consentito il BBcode"
-#: ../../mod/chat.php:167
-msgid "Room not found"
-msgstr "Chat non trovata"
+#: ../../mod/admin.php:423
+msgid "System language"
+msgstr "Lingua di sistema"
-#: ../../mod/chat.php:178
-msgid "Leave Room"
-msgstr "Lascia la chat"
+#: ../../mod/admin.php:424
+msgid "System theme"
+msgstr "Tema di sistema"
-#: ../../mod/chat.php:179
-msgid "Delete This Room"
-msgstr "Elimina questa chat"
+#: ../../mod/admin.php:424
+msgid ""
+"Default system theme - may be over-ridden by user profiles - <a href='#' "
+"id='cnftheme'>change theme settings</a>"
+msgstr "Il tema di sistema può essere cambiato dai profili dei singoli utenti - <a href='#' id='cnftheme'>Cambia le impostazioni del tema</a>"
-#: ../../mod/chat.php:180
-msgid "I am away right now"
-msgstr "Non sono presente al momento"
+#: ../../mod/admin.php:425
+msgid "Mobile system theme"
+msgstr "Tema di sistema per dispositivi mobili"
-#: ../../mod/chat.php:181
-msgid "I am online"
-msgstr "Sono online"
+#: ../../mod/admin.php:425
+msgid "Theme for mobile devices"
+msgstr "Tema per i dispositivi mobili"
-#: ../../mod/chat.php:183
-msgid "Bookmark this room"
-msgstr "Aggiungi chat ai segnalibri"
+#: ../../mod/admin.php:427
+msgid "Enable Diaspora Protocol"
+msgstr "Abilita la comunicazione con Diaspora"
-#: ../../mod/chat.php:207 ../../mod/chat.php:229
-msgid "New Chatroom"
-msgstr "Nuova chat"
+#: ../../mod/admin.php:427
+msgid "Communicate with Diaspora and Friendica - experimental"
+msgstr "Sperimentale - per comunicare con Diaspora e Friendica"
-#: ../../mod/chat.php:208
-msgid "Chatroom Name"
-msgstr "Nome della chat"
+#: ../../mod/admin.php:428
+msgid "Allow Feeds as Connections"
+msgstr "Permetti di aggiungere i feed come contatti"
-#: ../../mod/chat.php:225
+#: ../../mod/admin.php:428
+msgid "(Heavy system resource usage)"
+msgstr "(Uso intenso delle risorse di sistema!)"
+
+#: ../../mod/admin.php:429
+msgid "Maximum image size"
+msgstr "Dimensione massima immagini"
+
+#: ../../mod/admin.php:429
+msgid ""
+"Maximum size in bytes of uploaded images. Default is 0, which means no "
+"limits."
+msgstr "Massima dimensione in byte delle immagini caricate. Il default è 0, cioè nessun limite."
+
+#: ../../mod/admin.php:430
+msgid "Does this site allow new member registration?"
+msgstr "Questo sito permette a nuovi utenti di registrarsi?"
+
+#: ../../mod/admin.php:431
+msgid "Which best describes the types of account offered by this hub?"
+msgstr "Come descriveresti il tipo di servizio proposto da questo server?"
+
+#: ../../mod/admin.php:432
+msgid "Register text"
+msgstr "Testo di registrazione"
+
+#: ../../mod/admin.php:432
+msgid "Will be displayed prominently on the registration page."
+msgstr "Sarà mostrato ben visibile nella pagina di registrazione."
+
+#: ../../mod/admin.php:433
+msgid "Accounts abandoned after x days"
+msgstr "Account abbandonati dopo X giorni"
+
+#: ../../mod/admin.php:433
+msgid ""
+"Will not waste system resources polling external sites for abandonded "
+"accounts. Enter 0 for no time limit."
+msgstr "Eviterà di sprecare risorse di sistema controllando se i siti esterni hanno account abbandonati. Immettere 0 per non imporre nessun limite di tempo."
+
+#: ../../mod/admin.php:434
+msgid "Allowed friend domains"
+msgstr "Domini fidati e consentiti"
+
+#: ../../mod/admin.php:434
+msgid ""
+"Comma separated list of domains which are allowed to establish friendships "
+"with this site. Wildcards are accepted. Empty to allow any domains"
+msgstr "Elenco separato da virglola dei domini che possono stabilire amicizie con questo sito. Sono accettati caratteri jolly. Lascia vuoto per accettare connessioni da qualsiasi dominio."
+
+#: ../../mod/admin.php:435
+msgid "Allowed email domains"
+msgstr "Domini email consentiti"
+
+#: ../../mod/admin.php:435
+msgid ""
+"Comma separated list of domains which are allowed in email addresses for "
+"registrations to this site. Wildcards are accepted. Empty to allow any "
+"domains"
+msgstr "Elenco separato da virgola dei domini permessi come indirizzi email in fase di registrazione. Sono accettati caratteri jolly. Lascia vuoto per accettare qualsiasi dominio email"
+
+#: ../../mod/admin.php:436
+msgid "Block public"
+msgstr "Blocca pagine pubbliche"
+
+#: ../../mod/admin.php:436
+msgid ""
+"Check to block public access to all otherwise public personal pages on this "
+"site unless you are currently logged in."
+msgstr "Seleziona per impedire di vedere le pagine personali di questo sito a chi non ha effettuato l'accesso."
+
+#: ../../mod/admin.php:437
+msgid "Verify Email Addresses"
+msgstr "Verifica l'indirizzo email"
+
+#: ../../mod/admin.php:437
+msgid ""
+"Check to verify email addresses used in account registration (recommended)."
+msgstr "Attiva per richiedere la verifica degli indirizzi email dei nuovi utenti (consigliato)."
+
+#: ../../mod/admin.php:438
+msgid "Force publish"
+msgstr "Forza la publicazione del profilo"
+
+#: ../../mod/admin.php:438
+msgid ""
+"Check to force all profiles on this site to be listed in the site directory."
+msgstr "Seleziona per mostrare nell'elenco pubblico <strong>tutti</strong> i profili registrati su questo sito."
+
+#: ../../mod/admin.php:439
+msgid "Disable discovery tab"
+msgstr "Disabilita la funzione 'scopri'"
+
+#: ../../mod/admin.php:439
+msgid ""
+"Remove the tab in the network view with public content pulled from sources "
+"chosen for this site."
+msgstr "Nell'area della rete personale non comparirà più la scheda con i contenuti acquisiti da altri siti."
+
+#: ../../mod/admin.php:440
+msgid "No login on Homepage"
+msgstr "Non mostrare il login sulla homepage"
+
+#: ../../mod/admin.php:440
+msgid ""
+"Check to hide the login form from your sites homepage when visitors arrive "
+"who are not logged in (e.g. when you put the content of the homepage in via "
+"the site channel)."
+msgstr "Per nascondere la possibilità di fare login ai visitatori (per esempio, quando il contenuto della homepage del sito è alimentato da un canale)."
+
+#: ../../mod/admin.php:442
+msgid "Proxy user"
+msgstr "Utente proxy"
+
+#: ../../mod/admin.php:443
+msgid "Proxy URL"
+msgstr "URL proxy"
+
+#: ../../mod/admin.php:444
+msgid "Network timeout"
+msgstr "Timeout rete"
+
+#: ../../mod/admin.php:444
+msgid "Value is in seconds. Set to 0 for unlimited (not recommended)."
+msgstr "Valore in secondi. Imposta a 0 per illimitato (sconsigliato)."
+
+#: ../../mod/admin.php:445
+msgid "Delivery interval"
+msgstr "Recapito ritardato"
+
+#: ../../mod/admin.php:445
+msgid ""
+"Delay background delivery processes by this many seconds to reduce system "
+"load. Recommend: 4-5 for shared hosts, 2-3 for virtual private servers. 0-1 "
+"for large dedicated servers."
+msgstr "Numero di secondi di cui può essere ritardato il recapito, per ridurre il carico di sistema. Consigliati: 4-5 secondi per hosting condiviso, 2-3 per i VPS, 0-1 per grandi server dedicati."
+
+#: ../../mod/admin.php:446
+msgid "Poll interval"
+msgstr "Intervallo di polling"
+
+#: ../../mod/admin.php:446
+msgid ""
+"Delay background polling processes by this many seconds to reduce system "
+"load. If 0, use delivery interval."
+msgstr "Numero di secondi di cui può essere ritardato il polling in background, per ridurre il carico del sistema. Se 0, verrà usato lo stesso valore del 'Recapito ritardato'."
+
+#: ../../mod/admin.php:447
+msgid "Maximum Load Average"
+msgstr "Carico massimo medio"
+
+#: ../../mod/admin.php:447
+msgid ""
+"Maximum system load before delivery and poll processes are deferred - "
+"default 50."
+msgstr "Carico di sistema massimo perché i processi di recapito e polling siano ritardati - il valore predefinito è 50."
+
+#: ../../mod/admin.php:503
+msgid "No server found"
+msgstr "Server non trovato"
+
+#: ../../mod/admin.php:510 ../../mod/admin.php:735
+msgid "ID"
+msgstr "ID"
+
+#: ../../mod/admin.php:510
+msgid "for channel"
+msgstr "per canale"
+
+#: ../../mod/admin.php:510
+msgid "on server"
+msgstr "sul server"
+
+#: ../../mod/admin.php:510
+msgid "Status"
+msgstr "Stato"
+
+#: ../../mod/admin.php:531
+msgid "Update has been marked successful"
+msgstr "L'aggiornamento è stato marcato come eseguito."
+
+#: ../../mod/admin.php:541
#, php-format
-msgid "%1$s's Chatrooms"
-msgstr "Le chat di %1$s"
+msgid "Executing %s failed. Check system logs."
+msgstr "Fallita l'esecuzione di %s. Maggiori informazioni sui log di sistema."
-#: ../../mod/events.php:72
-msgid "Event title and start time are required."
-msgstr "Sono necessari il titolo e l'ora d'inizio dell'evento."
+#: ../../mod/admin.php:544
+#, php-format
+msgid "Update %s was successfully applied."
+msgstr "L'aggiornamento %s è terminato correttamente."
-#: ../../mod/events.php:310
-msgid "l, F j"
-msgstr "l j F"
+#: ../../mod/admin.php:548
+#, php-format
+msgid "Update %s did not return a status. Unknown if it succeeded."
+msgstr "L'aggiornamento %s non ha dato risposta. Impossibile determinare se è terminato correttamente."
-#: ../../mod/events.php:332
-msgid "Edit event"
-msgstr "Modifica l'evento"
+#: ../../mod/admin.php:551
+#, php-format
+msgid "Update function %s could not be found."
+msgstr "Impossibile trovare la funzione di aggiornamento %s"
-#: ../../mod/events.php:378
-msgid "Create New Event"
-msgstr "Crea un nuovo evento"
+#: ../../mod/admin.php:566
+msgid "No failed updates."
+msgstr "Nessun aggiornamento fallito."
-#: ../../mod/events.php:379
-msgid "Previous"
-msgstr "Precendente"
+#: ../../mod/admin.php:570
+msgid "Failed Updates"
+msgstr "Aggiornamenti falliti."
-#: ../../mod/events.php:450
-msgid "hour:minute"
-msgstr "ora:minuti"
+#: ../../mod/admin.php:572
+msgid "Mark success (if update was manually applied)"
+msgstr "Marca come eseguito (se applicato manualmente)."
-#: ../../mod/events.php:470
-msgid "Event details"
-msgstr "Dettagli evento"
+#: ../../mod/admin.php:573
+msgid "Attempt to execute this update step automatically"
+msgstr "Tenta di eseguire in automatico questo passaggio dell'aggiornamento."
-#: ../../mod/events.php:471
+#: ../../mod/admin.php:599
#, php-format
-msgid "Format is %s %s. Starting date and Title are required."
-msgstr "Il formato è %s %s. L'inizio e il titolo sono obbligatori."
+msgid "%s user blocked/unblocked"
+msgid_plural "%s users blocked/unblocked"
+msgstr[0] "%s utente bloccato/sbloccato"
+msgstr[1] "%s utenti bloccati/sbloccati"
-#: ../../mod/events.php:473
-msgid "Event Starts:"
-msgstr "Inizio:"
+#: ../../mod/admin.php:606
+#, php-format
+msgid "%s user deleted"
+msgid_plural "%s users deleted"
+msgstr[0] "%s utente cancellato"
+msgstr[1] "%s utenti cancellati"
-#: ../../mod/events.php:476
-msgid "Finish date/time is not known or not relevant"
-msgstr "La data/ora di fine non è rilevante"
+#: ../../mod/admin.php:635
+msgid "Account not found"
+msgstr "Account non trovato"
-#: ../../mod/events.php:478
-msgid "Event Finishes:"
-msgstr "Fine:"
+#: ../../mod/admin.php:655
+#, php-format
+msgid "User '%s' unblocked"
+msgstr "Utente '%s' sbloccato"
-#: ../../mod/events.php:481
-msgid "Adjust for viewer timezone"
-msgstr "Adatta al fuso orario di chi legge"
+#: ../../mod/admin.php:655
+#, php-format
+msgid "User '%s' blocked"
+msgstr "Utente '%s' bloccato"
-#: ../../mod/events.php:483
-msgid "Description:"
-msgstr "Descrizione:"
+#: ../../mod/admin.php:722 ../../mod/admin.php:734
+msgid "Users"
+msgstr "Utenti"
-#: ../../mod/events.php:487
-msgid "Title:"
-msgstr "Titolo:"
+#: ../../mod/admin.php:724 ../../mod/admin.php:860
+msgid "select all"
+msgstr "seleziona tutti"
-#: ../../mod/events.php:489
-msgid "Share this event"
-msgstr "Condividi questo evento"
+#: ../../mod/admin.php:725
+msgid "User registrations waiting for confirm"
+msgstr "Richieste di registrazione in attesa di conferma"
+
+#: ../../mod/admin.php:726
+msgid "Request date"
+msgstr "Data richiesta"
+
+#: ../../mod/admin.php:727
+msgid "No registrations."
+msgstr "Nessuna registrazione."
+
+#: ../../mod/admin.php:728
+msgid "Approve"
+msgstr "Approva"
+
+#: ../../mod/admin.php:729
+msgid "Deny"
+msgstr "Nega"
+
+#: ../../mod/admin.php:735
+msgid "Register date"
+msgstr "Data registrazione"
+
+#: ../../mod/admin.php:735
+msgid "Last login"
+msgstr "Ultimo accesso"
+
+#: ../../mod/admin.php:735
+msgid "Expires"
+msgstr "Con scadenza"
+
+#: ../../mod/admin.php:735
+msgid "Service Class"
+msgstr "Classe dell'account"
+
+#: ../../mod/admin.php:737
+msgid ""
+"Selected users will be deleted!\\n\\nEverything these users had posted on "
+"this site will be permanently deleted!\\n\\nAre you sure?"
+msgstr "Gli utenti selezionati saranno eliminati!\\n\\nTutto quello che gli utenti hanno pubblicato su questo sito sarà permanentemente eliminato!\\n\\nConfermi?"
+
+#: ../../mod/admin.php:738
+msgid ""
+"The user {0} will be deleted!\\n\\nEverything this user has posted on this "
+"site will be permanently deleted!\\n\\nAre you sure?"
+msgstr "L'utente {0} sarà eliminato!\\n\\nTutto quello che ha pubblicato su questo sito sarà permanentemente eliminato!\\n\\nConfermi?"
+
+#: ../../mod/admin.php:771
+#, php-format
+msgid "%s channel censored/uncensored"
+msgid_plural "%s channels censored/uncensored"
+msgstr[0] "Censura modificata per %s canale"
+msgstr[1] "Censura modificata per %s canali"
+
+#: ../../mod/admin.php:778
+#, php-format
+msgid "%s channel deleted"
+msgid_plural "%s channels deleted"
+msgstr[0] "%s canale è stato rimosso"
+msgstr[1] "%s canali sono stati rimossi"
+
+#: ../../mod/admin.php:797
+msgid "Channel not found"
+msgstr "Canale non trovato"
+
+#: ../../mod/admin.php:808
+#, php-format
+msgid "Channel '%s' deleted"
+msgstr "Il canale '%s' è stato rimosso"
+
+#: ../../mod/admin.php:819
+#, php-format
+msgid "Channel '%s' uncensored"
+msgstr "Rimossa la censura dal canale '%s'"
+
+#: ../../mod/admin.php:819
+#, php-format
+msgid "Channel '%s' censored"
+msgstr "Applicata una censura al canale '%s'"
+
+#: ../../mod/admin.php:862
+msgid "Censor"
+msgstr "Applica una censura"
+
+#: ../../mod/admin.php:863
+msgid "Uncensor"
+msgstr "Rimuovi la censura"
+
+#: ../../mod/admin.php:866
+msgid "UID"
+msgstr "UID"
+
+#: ../../mod/admin.php:868
+msgid ""
+"Selected channels will be deleted!\\n\\nEverything that was posted in these "
+"channels on this site will be permanently deleted!\\n\\nAre you sure?"
+msgstr "I canali selezionati saranno rimossi!\\n\\nTutto ciò che è stato pubblicato su questo server tramite questi canali sarà irreversibilmente eliminato!\\n\\nVuoi confermare?"
+
+#: ../../mod/admin.php:869
+msgid ""
+"The channel {0} will be deleted!\\n\\nEverything that was posted in this "
+"channel on this site will be permanently deleted!\\n\\nAre you sure?"
+msgstr "Il canale {0} sarà rimosso!\\n\\nTutto ciò che è stato pubblicato su questo server tramite questo canale sarà irreversibilmente eliminato!\\n\\nVuoi confermare?"
+
+#: ../../mod/admin.php:908
+#, php-format
+msgid "Plugin %s disabled."
+msgstr "Plugin %s non attivo."
+
+#: ../../mod/admin.php:912
+#, php-format
+msgid "Plugin %s enabled."
+msgstr "Plugin %s attivo."
+
+#: ../../mod/admin.php:922 ../../mod/admin.php:1124
+msgid "Disable"
+msgstr "Disattiva"
+
+#: ../../mod/admin.php:924 ../../mod/admin.php:1126
+msgid "Enable"
+msgstr "Attiva"
+
+#: ../../mod/admin.php:950 ../../mod/admin.php:1155
+msgid "Toggle"
+msgstr "Attiva/disattiva"
+
+#: ../../mod/admin.php:958 ../../mod/admin.php:1165
+msgid "Author: "
+msgstr "Autore:"
+
+#: ../../mod/admin.php:959 ../../mod/admin.php:1166
+msgid "Maintainer: "
+msgstr "Gestore:"
+
+#: ../../mod/admin.php:1088
+msgid "No themes found."
+msgstr "Nessun tema trovato."
+
+#: ../../mod/admin.php:1147
+msgid "Screenshot"
+msgstr "Istantanea dello schermo"
+
+#: ../../mod/admin.php:1195
+msgid "[Experimental]"
+msgstr "[Sperimentale]"
+
+#: ../../mod/admin.php:1196
+msgid "[Unsupported]"
+msgstr "[Non supportato]"
+
+#: ../../mod/admin.php:1223
+msgid "Log settings updated."
+msgstr "Impostazioni di log aggiornate."
+
+#: ../../mod/admin.php:1279
+msgid "Clear"
+msgstr "Pulisci"
+
+#: ../../mod/admin.php:1285
+msgid "Debugging"
+msgstr "Debugging"
+
+#: ../../mod/admin.php:1286
+msgid "Log file"
+msgstr "File di log"
+
+#: ../../mod/admin.php:1286
+msgid ""
+"Must be writable by web server. Relative to your Red top-level directory."
+msgstr "Deve essere scrivibile dal web server. La posizione è relativa alla cartella dove è installato RedMatrix."
+
+#: ../../mod/admin.php:1287
+msgid "Log level"
+msgstr "Livello di log"
+
+#: ../../mod/admin.php:1334
+msgid "New Profile Field"
+msgstr "Nuovo campo del profilo"
+
+#: ../../mod/admin.php:1335 ../../mod/admin.php:1356
+msgid "Field nickname"
+msgstr "Nome breve del campo"
+
+#: ../../mod/admin.php:1335 ../../mod/admin.php:1356
+msgid "System name of field"
+msgstr "Nome di sistema del campo"
+
+#: ../../mod/admin.php:1336 ../../mod/admin.php:1357
+msgid "Input type"
+msgstr "Tipo di dati"
+
+#: ../../mod/admin.php:1337 ../../mod/admin.php:1358
+msgid "Field Name"
+msgstr "Nome del campo"
+
+#: ../../mod/admin.php:1337 ../../mod/admin.php:1358
+msgid "Label on profile pages"
+msgstr "Etichetta da mostrare sulla pagina del profilo"
+
+#: ../../mod/admin.php:1338 ../../mod/admin.php:1359
+msgid "Help text"
+msgstr "Testo di aiuto"
+
+#: ../../mod/admin.php:1338 ../../mod/admin.php:1359
+msgid "Additional info (optional)"
+msgstr "Informazioni aggiuntive (opzionali)"
+
+#: ../../mod/admin.php:1349
+msgid "Field definition not found"
+msgstr "Impossibile trovare la definizione del campo"
+
+#: ../../mod/admin.php:1355
+msgid "Edit Profile Field"
+msgstr "Modifica campo del profilo"
+
+#: ../../mod/manage.php:136
+#, php-format
+msgid "You have created %1$.0f of %2$.0f allowed channels."
+msgstr "Hai creato %1$.0f dei %2$.0f canali permessi."
+
+#: ../../mod/manage.php:144
+msgid "Create a new channel"
+msgstr "Crea un nuovo canale"
+
+#: ../../mod/manage.php:149
+msgid "Current Channel"
+msgstr "Canale attuale"
+
+#: ../../mod/manage.php:151
+msgid "Attach to one of your channels by selecting it."
+msgstr "Seleziona il canale a cui vuoi passare."
+
+#: ../../mod/manage.php:152
+msgid "Default Channel"
+msgstr "Canale predefinito"
+
+#: ../../mod/manage.php:153
+msgid "Make Default"
+msgstr "Rendi predefinito"
+
+#: ../../mod/menu.php:31
+msgid "Menu updated."
+msgstr "Menù aggiornato."
+
+#: ../../mod/menu.php:35
+msgid "Unable to update menu."
+msgstr "Impossibile aggiornare il menù."
+
+#: ../../mod/menu.php:40
+msgid "Menu created."
+msgstr "Menù creato."
+
+#: ../../mod/menu.php:44
+msgid "Unable to create menu."
+msgstr "Impossibile creare il menù."
+
+#: ../../mod/menu.php:76
+msgid "Manage Menus"
+msgstr "Gestione menù"
+
+#: ../../mod/menu.php:79
+msgid "Drop"
+msgstr "Elimina"
+
+#: ../../mod/menu.php:81
+msgid "Bookmarks allowed"
+msgstr "Permetti segnalibri"
+
+#: ../../mod/menu.php:82
+msgid "Create a new menu"
+msgstr "Crea un nuovo menù"
+
+#: ../../mod/menu.php:83
+msgid "Delete this menu"
+msgstr "Elimina questo menù"
+
+#: ../../mod/menu.php:84 ../../mod/menu.php:125
+msgid "Edit menu contents"
+msgstr "Modifica i contenuti del menù"
+
+#: ../../mod/menu.php:85
+msgid "Edit this menu"
+msgstr "Modifica questo menù"
+
+#: ../../mod/menu.php:96
+msgid "New Menu"
+msgstr "Nuovo menù"
+
+#: ../../mod/menu.php:97 ../../mod/menu.php:126
+msgid "Menu name"
+msgstr "Nome del menù"
+
+#: ../../mod/menu.php:97 ../../mod/menu.php:126
+msgid "Must be unique, only seen by you"
+msgstr "Deve essere unico, lo vedrai solo tu"
+
+#: ../../mod/menu.php:98 ../../mod/menu.php:127
+msgid "Menu title"
+msgstr "Titolo del menù"
+
+#: ../../mod/menu.php:98 ../../mod/menu.php:127
+msgid "Menu title as seen by others"
+msgstr "Titolo del menù come comparirà a tutti"
+
+#: ../../mod/menu.php:99 ../../mod/menu.php:128
+msgid "Allow bookmarks"
+msgstr "Permetti l'invio di segnalibri"
+
+#: ../../mod/menu.php:99 ../../mod/menu.php:128
+msgid "Menu may be used to store saved bookmarks"
+msgstr "Puoi salvare i segnalibri nei menù"
+
+#: ../../mod/menu.php:114
+msgid "Menu deleted."
+msgstr "Menù eliminato."
+
+#: ../../mod/menu.php:116
+msgid "Menu could not be deleted."
+msgstr "Il menù non può essere eliminato."
+
+#: ../../mod/menu.php:122
+msgid "Edit Menu"
+msgstr "Modifica menù"
+
+#: ../../mod/menu.php:124
+msgid "Add or remove entries to this menu"
+msgstr "Aggiungi o rimuovi elementi di questo menù"
+
+#: ../../mod/invite.php:25
+msgid "Total invitation limit exceeded."
+msgstr "Hai superato il numero massimo di inviti."
+
+#: ../../mod/invite.php:49
+#, php-format
+msgid "%s : Not a valid email address."
+msgstr "%s: non è un indirizzo email valido."
+
+#: ../../mod/invite.php:76
+msgid "Please join us on Red"
+msgstr "Vieni con noi su RedMatrix"
+
+#: ../../mod/invite.php:87
+msgid "Invitation limit exceeded. Please contact your site administrator."
+msgstr "Hai superato il numero massimo di inviti. Contatta l'amministratore se necessario."
+
+#: ../../mod/invite.php:92
+#, php-format
+msgid "%s : Message delivery failed."
+msgstr "%s: la consegna del messaggio è fallita."
+
+#: ../../mod/invite.php:96
+#, php-format
+msgid "%d message sent."
+msgid_plural "%d messages sent."
+msgstr[0] "%d messaggio inviato."
+msgstr[1] "%d messaggi inviati."
+
+#: ../../mod/invite.php:115
+msgid "You have no more invitations available"
+msgstr "Non hai altri inviti disponibili"
+
+#: ../../mod/invite.php:129
+msgid "Send invitations"
+msgstr "Spedisci inviti"
+
+#: ../../mod/invite.php:130
+msgid "Enter email addresses, one per line:"
+msgstr "Inserisci gli indirizzi email, uno per riga:"
+
+#: ../../mod/invite.php:132
+msgid "Please join my community on RedMatrix."
+msgstr "Entra a far parte della mia comunità su RedMatrix."
+
+#: ../../mod/invite.php:134
+msgid "You will need to supply this invitation code: "
+msgstr "Dovrai fornire questo codice di invito:"
+
+#: ../../mod/invite.php:135
+msgid "1. Register at any RedMatrix location (they are all inter-connected)"
+msgstr "1. Registrati su un qualsiasi sito RedMatrix (sono tutti interconnessi)"
+
+#: ../../mod/invite.php:137
+msgid "2. Enter my RedMatrix network address into the site searchbar."
+msgstr "2. Inserisci il mio indirizzo RedMatrix nella barra di ricerca che compare nella pagina."
+
+#: ../../mod/invite.php:138
+msgid "or visit "
+msgstr "oppure visita "
+
+#: ../../mod/invite.php:140
+msgid "3. Click [Connect]"
+msgstr "3. Clicca su [Aggiungi]"
+
+#: ../../mod/network.php:84
+msgid "No such group"
+msgstr "Impossibile trovare l'insieme"
+
+#: ../../mod/network.php:122
+msgid "Search Results For:"
+msgstr "Cerca risultati con:"
+
+#: ../../mod/network.php:176
+msgid "Collection is empty"
+msgstr "L'insieme di canali è vuoto"
+
+#: ../../mod/network.php:184
+msgid "Collection: "
+msgstr "Insieme:"
+
+#: ../../mod/network.php:197
+msgid "Connection: "
+msgstr "Contatto:"
+
+#: ../../mod/network.php:200
+msgid "Invalid connection."
+msgstr "Contatto non valido."
#: ../../mod/notifications.php:26
msgid "Invalid request identifier."
@@ -7563,107 +7798,603 @@ msgstr "L'identificativo della richiesta non è valido."
msgid "Discard"
msgstr "Rifiuta"
-#: ../../mod/lostpass.php:15
-msgid "No valid account found."
-msgstr "Nessun account valido trovato."
+#: ../../mod/notifications.php:94 ../../mod/notify.php:53
+msgid "No more system notifications."
+msgstr "Non ci sono nuove notifiche di sistema."
-#: ../../mod/lostpass.php:29
-msgid "Password reset request issued. Check your email."
-msgstr "La richiesta per reimpostare la password è stata inviata. Controlla la tua email."
+#: ../../mod/notifications.php:98 ../../mod/notify.php:57
+msgid "System Notifications"
+msgstr "Notifiche di sistema"
-#: ../../mod/lostpass.php:35 ../../mod/lostpass.php:102
+#: ../../mod/update_channel.php:43 ../../mod/update_display.php:25
+#: ../../mod/update_network.php:23 ../../mod/update_search.php:46
+#: ../../mod/update_home.php:21
+msgid "[Embedded content - reload page to view]"
+msgstr "[Contenuto incorporato - ricarica la pagina per visualizzarlo correttamente]"
+
+#: ../../mod/lockview.php:31
+msgid "Remote privacy information not available."
+msgstr "Le informazioni remote sulla privacy non sono disponibili."
+
+#: ../../mod/lockview.php:52
+msgid "Visible to:"
+msgstr "Visibile a:"
+
+#: ../../mod/viewconnections.php:58
+msgid "No connections."
+msgstr "Nessun contatto."
+
+#: ../../mod/viewconnections.php:71
#, php-format
-msgid "Site Member (%s)"
-msgstr "Utente del sito (%s)"
+msgid "Visit %s's profile [%s]"
+msgstr "Visita il profilo di %s [%s]"
-#: ../../mod/lostpass.php:40
+#: ../../mod/viewconnections.php:86
+msgid "View Connnections"
+msgstr "Guarda i contatti"
+
+#: ../../mod/magic.php:70
+msgid "Hub not found."
+msgstr "Server non trovato."
+
+#: ../../mod/vote.php:97
+msgid "Total votes"
+msgstr "Voti totali"
+
+#: ../../mod/vote.php:98
+msgid "Average Rating"
+msgstr "Valutazione media"
+
+#: ../../mod/openid.php:26
+msgid "OpenID protocol error. No ID returned."
+msgstr "Errore del protocollo OpenID. Nessun ID ricevuto in risposta."
+
+#: ../../mod/openid.php:72 ../../mod/openid.php:180 ../../mod/post.php:261
#, php-format
-msgid "Password reset requested at %s"
-msgstr "È stato richiesto di reimpostare password su %s"
+msgid "Welcome %s. Remote authentication successful."
+msgstr "Ciao %s. L'autenticazione magica è avvenuta con successo."
-#: ../../mod/lostpass.php:63
+#: ../../mod/wall_upload.php:35
+msgid "Wall Photos"
+msgstr "Foto della bacheca"
+
+#: ../../mod/match.php:16
+msgid "Profile Match"
+msgstr "Profili corrispondenti"
+
+#: ../../mod/match.php:24
+msgid "No keywords to match. Please add keywords to your default profile."
+msgstr "Non hai scritto parole chiave. Aggiungi parole chiave al tuo profilo predefinito per comparire nelle ricerche."
+
+#: ../../mod/match.php:61
+msgid "is interested in:"
+msgstr "interessi personali:"
+
+#: ../../mod/match.php:69
+msgid "No matches"
+msgstr "Nessun risultato"
+
+#: ../../mod/message.php:41
+msgid "Conversation removed."
+msgstr "Conversazione rimossa."
+
+#: ../../mod/message.php:56
+msgid "No messages."
+msgstr "Nessun messaggio."
+
+#: ../../mod/message.php:74
+msgid "D, d M Y - g:i A"
+msgstr "D d M Y - G:i"
+
+#: ../../mod/new_channel.php:109
+msgid "Add a Channel"
+msgstr "Aggiungi un canale"
+
+#: ../../mod/new_channel.php:110
msgid ""
-"Request could not be verified. (You may have previously submitted it.) "
-"Password reset failed."
-msgstr "La richiesta non può essere verificata (potresti averla già usata precedentemente). La password non può essere reimpostata."
+"A channel is your own collection of related web pages. A channel can be used"
+" to hold social network profiles, blogs, conversation groups and forums, "
+"celebrity pages, and much more. You may create as many channels as your "
+"service provider allows."
+msgstr "I contenuti che pubblichi sono mostrati nel tuo \"canale\". Un canale può essere usato come bacheca personale, come blog, oppure può essere un forum di discussione, un gruppo di interesse, una pagina di celebrità e molto altro. Puoi creare tanti canali quanti ne permette il tuo sito."
-#: ../../mod/lostpass.php:86
-msgid "Your password has been reset as requested."
-msgstr "La password è stata reimpostata come richiesto."
+#: ../../mod/new_channel.php:113
+msgid "Examples: \"Bob Jameson\", \"Lisa and her Horses\", \"Soccer\", \"Aviation Group\" "
+msgstr "Per esempio: \"Mario Rossi\", \"Lisa e le sue ricette\", \"Il campionato\", \"Il gruppo di escursionismo\""
-#: ../../mod/lostpass.php:87
-msgid "Your new password is"
-msgstr "La tua nuova password è"
+#: ../../mod/new_channel.php:114
+msgid "Choose a short nickname"
+msgstr "Scegli un nome breve"
-#: ../../mod/lostpass.php:88
-msgid "Save or copy your new password - and then"
-msgstr "Salva o copia la tua nuova password, quindi"
+#: ../../mod/new_channel.php:115
+msgid ""
+"Your nickname will be used to create an easily remembered channel address "
+"(like an email address) which you can share with others."
+msgstr "Il nome breve sarà usato per creare un indirizzo facile da ricordare per il tuo canale (simile a una email). Così potrai condividerlo e gli altri potranno trovarti."
-#: ../../mod/lostpass.php:89
-msgid "click here to login"
-msgstr "clicca qui per accedere"
+#: ../../mod/new_channel.php:116
+msgid "Or <a href=\"import\">import an existing channel</a> from another location"
+msgstr "Oppure <a href=\"import\">importa un tuo canale esistente</a> da un altro server/hub"
-#: ../../mod/lostpass.php:90
+#: ../../mod/new_channel.php:118
+msgid "Channel Type"
+msgstr "Tipo di canale"
+
+#: ../../mod/new_channel.php:119
+msgid "?"
+msgstr "?"
+
+#: ../../mod/new_channel.php:120
+msgid "What is this?"
+msgstr "Questo cos'è?"
+
+#: ../../mod/new_channel.php:121
msgid ""
-"Your password may be changed from the <em>Settings</em> page after "
-"successful login."
-msgstr "Puoi cambiare la tua password dalla pagina delle <em>Impostazioni</em> dopo aver effettuato l'accesso."
+"Please choose a channel type (such as social networking or community forum) "
+"and privacy requirements so we can select the best permissions for you"
+msgstr "Descrivi il tipo di canale che vorresti creare (per esempio se ti interessa più usarlo come social network, come un forum di discussione...) e il tipo di privacy che preferisci. RedMatrix sceglierà per te i permessi più adatti."
-#: ../../mod/lostpass.php:107
-#, php-format
-msgid "Your password has changed at %s"
-msgstr "La tua password su %s è cambiata"
+#: ../../mod/xchan.php:6
+msgid "Xchan Lookup"
+msgstr "Ricerca canale"
-#: ../../mod/lostpass.php:122
-msgid "Forgot your Password?"
-msgstr "Hai dimenticato la password?"
+#: ../../mod/xchan.php:9
+msgid "Lookup xchan beginning with (or webbie): "
+msgstr "Cerca un canale (o un webbie) che inizia per:"
-#: ../../mod/lostpass.php:123
+#: ../../mod/zfinger.php:23
+msgid "invalid target signature"
+msgstr "la firma ricevuta non è valida"
+
+#: ../../mod/oexchange.php:23
+msgid "Unable to find your hub."
+msgstr "Impossibile raggiungere il tuo hub."
+
+#: ../../mod/oexchange.php:37
+msgid "Post successful."
+msgstr "Inviato!"
+
+#: ../../mod/directory.php:201
+msgid "Gender: "
+msgstr "Sesso:"
+
+#: ../../mod/directory.php:203
+msgid "Status: "
+msgstr "Stato:"
+
+#: ../../mod/directory.php:205
+msgid "Homepage: "
+msgstr "Homepage:"
+
+#: ../../mod/directory.php:208
+msgid "Hometown: "
+msgstr "Città dove vivo:"
+
+#: ../../mod/directory.php:210
+msgid "About: "
+msgstr "Informazioni:"
+
+#: ../../mod/directory.php:265
+msgid "Public Forum:"
+msgstr "Forum pubblico:"
+
+#: ../../mod/directory.php:268
+msgid "Keywords: "
+msgstr "Parole chiave:"
+
+#: ../../mod/directory.php:318
+msgid "Finding:"
+msgstr "Ricerca:"
+
+#: ../../mod/directory.php:323
+msgid "next page"
+msgstr "pagina successiva"
+
+#: ../../mod/directory.php:323
+msgid "previous page"
+msgstr "pagina precedente"
+
+#: ../../mod/directory.php:340
+msgid "No entries (some entries may be hidden)."
+msgstr "Nessun risultato (qualche elemento potrebbe essere nascosto)."
+
+#: ../../mod/post.php:229
msgid ""
-"Enter your email address and submit to have your password reset. Then check "
-"your email for further instructions."
-msgstr "Inserisci il tuo indirizzo email per reimpostare la password. Dopo aver inviato la richiesta, controlla l'email e troverai le istruzioni per continuare."
+"Remote authentication blocked. You are logged into this site locally. Please"
+" logout and retry."
+msgstr "L'autenticazione magica dal tuo sito non è disponibile. Hai accesso solamente a questo sito. Puoi provare a disconnetterti per tentare di nuovo."
-#: ../../mod/lostpass.php:124
-msgid "Email Address"
-msgstr "Indirizzo email"
+#: ../../mod/appman.php:28 ../../mod/appman.php:44
+msgid "App installed."
+msgstr "App installata"
-#: ../../mod/lostpass.php:125
-msgid "Reset"
-msgstr "Reimposta"
+#: ../../mod/appman.php:37
+msgid "Malformed app."
+msgstr "App non corretta"
-#: ../../mod/layouts.php:62
-msgid "Help with this feature"
-msgstr "La guida per questa funzionalità"
+#: ../../mod/appman.php:80
+msgid "Embed code"
+msgstr "Inserisci del codice"
-#: ../../mod/layouts.php:84
-msgid "Layout Name"
-msgstr "Nome layout"
+#: ../../mod/appman.php:86
+msgid "Edit App"
+msgstr "Modifica app"
-#: ../../mod/editblock.php:77
-msgid "Edit Block"
-msgstr "Modifica il riquadro"
+#: ../../mod/appman.php:86
+msgid "Create App"
+msgstr "Crea una app"
-#: ../../mod/editblock.php:87
-msgid "Delete block?"
-msgstr "Vuoi eliminare questo riquadro?"
+#: ../../mod/appman.php:91
+msgid "Name of app"
+msgstr "Nome app"
-#: ../../mod/editblock.php:153
-msgid "Delete Block"
-msgstr "Elimina il riquadro"
+#: ../../mod/appman.php:92
+msgid "Location (URL) of app"
+msgstr "Indirizzo (URL) della app"
-#: ../../mod/editlayout.php:72
-msgid "Edit Layout"
-msgstr "Modifica il layout"
+#: ../../mod/appman.php:94
+msgid "Photo icon URL"
+msgstr "URL icona"
-#: ../../mod/editlayout.php:82
-msgid "Delete layout?"
-msgstr "Vuoi eliminare questo layout?"
+#: ../../mod/appman.php:94
+msgid "80 x 80 pixels - optional"
+msgstr "80 x 80 pixel - facoltativa"
-#: ../../mod/editlayout.php:146
-msgid "Delete Layout"
-msgstr "Elimina il layout"
+#: ../../mod/appman.php:95
+msgid "Version ID"
+msgstr "ID versione"
-#: ../../mod/follow.php:25
-msgid "Channel added."
-msgstr "Canale aggiunto."
+#: ../../mod/appman.php:96
+msgid "Price of app"
+msgstr "Prezzo app"
+
+#: ../../mod/appman.php:97
+msgid "Location (URL) to purchase app"
+msgstr "Indirizzo (URL) per acquistare la app"
+
+#: ../../mod/poll.php:64
+msgid "Poll"
+msgstr "Sondaggio"
+
+#: ../../mod/poll.php:69
+msgid "View Results"
+msgstr "Guarda i risultati"
+
+#: ../../mod/removeaccount.php:30
+msgid ""
+"Account removals are not allowed within 48 hours of changing the account "
+"password."
+msgstr "Non è possibile eliminare il tuo account prima di 48 ore dall'ultimo cambio password."
+
+#: ../../mod/removeaccount.php:57
+msgid "Remove This Account"
+msgstr "Elimina questo account"
+
+#: ../../mod/removeaccount.php:58
+msgid ""
+"This will completely remove this account including all its channels from the"
+" network. Once this has been done it is not recoverable."
+msgstr "Questa operazione rimuoverà completamente il tuo account dalla rete, inclusi tutti i suoi canali. Una volta avviata la rimozione, sarà definitiva."
+
+#: ../../mod/removeaccount.php:60
+msgid ""
+"Remove this account, all its channels and all its channel clones from the "
+"network"
+msgstr "Elimina dalla rete questo account, tutti i suoi canali e ANCHE tutti gli eventuali canali clonati."
+
+#: ../../mod/removeaccount.php:60
+msgid ""
+"By default only the instances of the channels located on this hub will be "
+"removed from the network"
+msgstr "A meno che tu non lo richieda espressamente, solo i canali presenti su questo server saranno rimossi dalla rete."
+
+#: ../../mod/service_limits.php:19
+msgid "No service class restrictions found."
+msgstr "Non esistono restrizioni su questa classe di account."
+
+#: ../../view/theme/apw/php/config.php:202
+#: ../../view/theme/apw/php/config.php:236
+msgid "Schema Default"
+msgstr "Schema predefinito"
+
+#: ../../view/theme/apw/php/config.php:203
+msgid "Sans-Serif"
+msgstr "Sans-serif"
+
+#: ../../view/theme/apw/php/config.php:204
+msgid "Monospace"
+msgstr "Monospace"
+
+#: ../../view/theme/apw/php/config.php:259
+#: ../../view/theme/redbasic/php/config.php:102
+msgid "Theme settings"
+msgstr "Impostazioni del tema"
+
+#: ../../view/theme/apw/php/config.php:260
+#: ../../view/theme/redbasic/php/config.php:103
+msgid "Set scheme"
+msgstr "Schema"
+
+#: ../../view/theme/apw/php/config.php:261
+#: ../../view/theme/redbasic/php/config.php:124
+msgid "Set font-size for posts and comments"
+msgstr "Dimensioni del carattere per articoli e commenti"
+
+#: ../../view/theme/apw/php/config.php:262
+msgid "Set font face"
+msgstr "Tipo di carattere"
+
+#: ../../view/theme/apw/php/config.php:263
+msgid "Set iconset"
+msgstr "Icone"
+
+#: ../../view/theme/apw/php/config.php:264
+msgid "Set big shadow size, default 15px 15px 15px"
+msgstr "Ombra grande, predefinita 15px 15px 15px"
+
+#: ../../view/theme/apw/php/config.php:265
+msgid "Set small shadow size, default 5px 5px 5px"
+msgstr "Ombra piccola, predefinita 5px 5px 5px"
+
+#: ../../view/theme/apw/php/config.php:266
+msgid "Set shadow color, default #000"
+msgstr "Colore dell'ombra, predefinito #000"
+
+#: ../../view/theme/apw/php/config.php:267
+msgid "Set radius size, default 5px"
+msgstr "Raggio degli angoli, predefinito 5px"
+
+#: ../../view/theme/apw/php/config.php:268
+msgid "Set line-height for posts and comments"
+msgstr "Altezza della riga per articoli e commenti"
+
+#: ../../view/theme/apw/php/config.php:269
+msgid "Set background image"
+msgstr "Immagine di sfondo"
+
+#: ../../view/theme/apw/php/config.php:270
+msgid "Set background attachment"
+msgstr "Allega uno sfondo"
+
+#: ../../view/theme/apw/php/config.php:271
+msgid "Set background color"
+msgstr "Colore di sfondo"
+
+#: ../../view/theme/apw/php/config.php:272
+msgid "Set section background image"
+msgstr "Immagine di sfondo della sezione"
+
+#: ../../view/theme/apw/php/config.php:273
+msgid "Set section background color"
+msgstr "Colore di sfondo dell'area principale"
+
+#: ../../view/theme/apw/php/config.php:274
+msgid "Set color of items - use hex"
+msgstr "Colore degli elementi della pagina - esadecimale"
+
+#: ../../view/theme/apw/php/config.php:275
+msgid "Set color of links - use hex"
+msgstr "Colore dei link - esadecimale"
+
+#: ../../view/theme/apw/php/config.php:276
+msgid "Set max-width for items. Default 400px"
+msgstr "Larghezza massima degli elementi della pagina. Predefinita: 400px"
+
+#: ../../view/theme/apw/php/config.php:277
+msgid "Set min-width for items. Default 240px"
+msgstr "Larghezza minima degli elementi della pagina. Predefinita: 240px"
+
+#: ../../view/theme/apw/php/config.php:278
+msgid "Set the generic content wrapper width. Default 48%"
+msgstr "Larghezza di tutta l'area dei contenuti. Predefinita: 48%"
+
+#: ../../view/theme/apw/php/config.php:279
+msgid "Set color of fonts - use hex"
+msgstr "Colore dei caratteri - esadecimale"
+
+#: ../../view/theme/apw/php/config.php:280
+msgid "Set background-size element"
+msgstr "Background-size element"
+
+#: ../../view/theme/apw/php/config.php:281
+msgid "Item opacity"
+msgstr "Opacità degli elementi della pagina"
+
+#: ../../view/theme/apw/php/config.php:282
+msgid "Display post previews only"
+msgstr "Mostra le anteprime solo degli articoli"
+
+#: ../../view/theme/apw/php/config.php:283
+msgid "Display side bar on channel page"
+msgstr "Mostra la colonna laterale sulla pagina del canale"
+
+#: ../../view/theme/apw/php/config.php:284
+msgid "Colour of the navigation bar"
+msgstr "Colore della barra di navigazione"
+
+#: ../../view/theme/apw/php/config.php:285
+msgid "Item float"
+msgstr "Float degli oggetti della pagina"
+
+#: ../../view/theme/apw/php/config.php:286
+msgid "Left offset of the section element"
+msgstr "Margine sinistro dell'area principale"
+
+#: ../../view/theme/apw/php/config.php:287
+msgid "Right offset of the section element"
+msgstr "Margine destro dell'area principale"
+
+#: ../../view/theme/apw/php/config.php:288
+msgid "Section width"
+msgstr "Larghezza dell'area principale"
+
+#: ../../view/theme/apw/php/config.php:289
+msgid "Left offset of the aside"
+msgstr "Margine sinistro della colonna laterale"
+
+#: ../../view/theme/apw/php/config.php:290
+msgid "Right offset of the aside element"
+msgstr "Margine destro della colonna laterale"
+
+#: ../../view/theme/redbasic/php/config.php:84
+msgid "Light (Red Matrix default)"
+msgstr "Light (predefinito)"
+
+#: ../../view/theme/redbasic/php/config.php:104
+msgid "Narrow navbar"
+msgstr "Barra di navigazione ristretta"
+
+#: ../../view/theme/redbasic/php/config.php:105
+msgid "Navigation bar background color"
+msgstr "Barra di navigazione: Colore di sfondo"
+
+#: ../../view/theme/redbasic/php/config.php:106
+msgid "Navigation bar gradient top color"
+msgstr "Barra di navigazione: Gradiente superiore"
+
+#: ../../view/theme/redbasic/php/config.php:107
+msgid "Navigation bar gradient bottom color"
+msgstr "Barra di navigazione: Gradiente inferiore"
+
+#: ../../view/theme/redbasic/php/config.php:108
+msgid "Navigation active button gradient top color"
+msgstr "Bottone di navigazione attivo: Gradiente superiore"
+
+#: ../../view/theme/redbasic/php/config.php:109
+msgid "Navigation active button gradient bottom color"
+msgstr "Bottone di navigazione attivo: Gradiente inferiore"
+
+#: ../../view/theme/redbasic/php/config.php:110
+msgid "Navigation bar border color "
+msgstr "Barra di navigazione: Colore del bordo"
+
+#: ../../view/theme/redbasic/php/config.php:111
+msgid "Navigation bar icon color "
+msgstr "Barra di navigazione: Colore delle icone"
+
+#: ../../view/theme/redbasic/php/config.php:112
+msgid "Navigation bar active icon color "
+msgstr "Barra di navigazione: Colore dell'icona attiva"
+
+#: ../../view/theme/redbasic/php/config.php:113
+msgid "link color"
+msgstr "colore del link"
+
+#: ../../view/theme/redbasic/php/config.php:114
+msgid "Set font-color for banner"
+msgstr "Colore del font del banner"
+
+#: ../../view/theme/redbasic/php/config.php:115
+msgid "Set the background color"
+msgstr "Imposta il colore di sfondo"
+
+#: ../../view/theme/redbasic/php/config.php:116
+msgid "Set the background image"
+msgstr "Immagine di sfondo"
+
+#: ../../view/theme/redbasic/php/config.php:117
+msgid "Set the background color of items"
+msgstr "Imposta il colore di sfondo degli oggetti"
+
+#: ../../view/theme/redbasic/php/config.php:118
+msgid "Set the background color of comments"
+msgstr "Imposta il colore di sfondo dei commenti"
+
+#: ../../view/theme/redbasic/php/config.php:119
+msgid "Set the border color of comments"
+msgstr "Imposta il colore del bordo dei commenti"
+
+#: ../../view/theme/redbasic/php/config.php:120
+msgid "Set the indent for comments"
+msgstr "Imposta il lo spostamento a destra dei commenti"
+
+#: ../../view/theme/redbasic/php/config.php:121
+msgid "Set the basic color for item icons"
+msgstr "Colore di base per le icone"
+
+#: ../../view/theme/redbasic/php/config.php:122
+msgid "Set the hover color for item icons"
+msgstr "Colore per le icone in mouse-over"
+
+#: ../../view/theme/redbasic/php/config.php:123
+msgid "Set font-size for the entire application"
+msgstr "Dimensione font per tutto il sito"
+
+#: ../../view/theme/redbasic/php/config.php:125
+msgid "Set font-color for posts and comments"
+msgstr "Imposta il colore del carattere per articoli e commenti"
+
+#: ../../view/theme/redbasic/php/config.php:126
+msgid "Set radius of corners"
+msgstr "Raggio degli angoli stondati"
+
+#: ../../view/theme/redbasic/php/config.php:127
+msgid "Set shadow depth of photos"
+msgstr "Profondità dell'ombra delle foto"
+
+#: ../../view/theme/redbasic/php/config.php:128
+msgid "Set maximum width of conversation regions"
+msgstr "Larghezza massima dell'area delle conversazioni"
+
+#: ../../view/theme/redbasic/php/config.php:129
+msgid "Center conversation regions"
+msgstr "Centra l'area delle conversazioni"
+
+#: ../../view/theme/redbasic/php/config.php:130
+msgid "Set minimum opacity of nav bar - to hide it"
+msgstr "Imposta l'opacità minima della barra di navigazione per nasconderla"
+
+#: ../../view/theme/redbasic/php/config.php:131
+msgid "Set size of conversation author photo"
+msgstr "Dimensione foto dell'autore della conversazione"
+
+#: ../../view/theme/redbasic/php/config.php:132
+msgid "Set size of followup author photos"
+msgstr "Dimensione foto dei partecipanti alla conversazione"
+
+#: ../../view/theme/redbasic/php/config.php:133
+msgid "Sloppy photo albums"
+msgstr "Album con foto storte"
+
+#: ../../view/theme/redbasic/php/config.php:133
+msgid "Are you a clean desk or a messy desk person?"
+msgstr "La tua scrivania è sempre a posto? Sei una persona disordinata?"
+
+#: ../../boot.php:1345
+#, php-format
+msgid "Update %s failed. See error logs."
+msgstr "%s: aggiornamento fallito. Controlla i log di errore."
+
+#: ../../boot.php:1348
+#, php-format
+msgid "Update Error at %s"
+msgstr "Errore di aggiornamento su %s"
+
+#: ../../boot.php:1515
+msgid ""
+"Create an account to access services and applications within the Red Matrix"
+msgstr "Registrati per accedere ai servizi e alle applicazioni di RedMatrix"
+
+#: ../../boot.php:1543
+msgid "Password"
+msgstr "Password"
+
+#: ../../boot.php:1544
+msgid "Remember me"
+msgstr "Resta connesso"
+
+#: ../../boot.php:1547
+msgid "Forgot your password?"
+msgstr "Hai dimenticato la password?"
+
+#: ../../boot.php:1628
+msgid "permission denied"
+msgstr "permesso negato"
+
+#: ../../boot.php:1629
+msgid "Got Zot?"
+msgstr "Hai Zot?"
+
+#: ../../boot.php:2112
+msgid "toggle mobile"
+msgstr "attiva/disattiva versione mobile"
diff --git a/view/it/passchanged_eml.tpl b/view/it/passchanged_eml.tpl
index 0d94be3c2..30d3159e7 100644
--- a/view/it/passchanged_eml.tpl
+++ b/view/it/passchanged_eml.tpl
@@ -1,20 +1,20 @@
-Dear {{$username}},
- Your password has been changed as requested. Please retain this
-information for your records (or change your password immediately to
-something that you will remember).
+Ciao {{$username}},
+ Come richiesto, la tua password è stata cambiata.
+ Prendi nota di questo cambiamento oppure
+sostituisci subito la password con quella che preferisci.
-Your login details are as follows:
+Questi sono i dati che ti serviranno a effettuare l'accesso:
-Site Location: {{$siteurl}}
-Login Name: {{$email}}
+Sito: {{$siteurl}}
+Nome utente: {{$email}}
Password: {{$new_password}}
-You may change that password from your account settings page after logging in.
+Ricorda che potrai cambiare la password dalla pagina delle 'Impostazioni' dopo aver effettuato l'accesso.
-Sincerely,
- {{$sitename}} Administrator
+Saluti,
+ L'amministratore di {{$sitename}}
-
+ \ No newline at end of file
diff --git a/view/it/register_open_eml.tpl b/view/it/register_open_eml.tpl
index 4b397201c..f84dac4a6 100644
--- a/view/it/register_open_eml.tpl
+++ b/view/it/register_open_eml.tpl
@@ -1,19 +1,19 @@
-An account has been created at {{$sitename}} for this email address.
-The login details are as follows:
+Sul sito {{$sitename}} è stato appena creato un account abbinato a questo indirizzo email.
+Ecco i dati per effettuare l'accesso:
-Site Location: {{$siteurl}}
-Login: {{$email}}
-Password: (the password which was provided during registration)
+Sito: {{$siteurl}}
+Nome utente: {{$email}}
+Password: (la password che hai scelto durante la registrazione)
-If this account was created without your knowledge and is not desired, you may
-visit this site and reset the password. This will allow you to remove the
-account from the links on the Settings page, and we
-apologise for any inconvenience.
+Se questo account non è stato creato da te e non desideri che continui a esistere,
+allora accedi al sito e resetta la password. Facendo così avrai la possibilità
+di rimuovere l'account dalla pagina delle 'Impostazioni'.
+(Nel caso, ci scusiamo per l'inconveniente!!)
-Thank you and welcome to {{$sitename}}.
+Grazie e benvenuto su {{$sitename}}.
-Sincerely,
- {{$sitename}} Administrator
+Con affetto,
+ L'amministratore di {{$sitename}}
-
+ \ No newline at end of file
diff --git a/view/it/register_verify_eml.tpl b/view/it/register_verify_eml.tpl
index 85d9a12d3..116f22e7f 100644
--- a/view/it/register_verify_eml.tpl
+++ b/view/it/register_verify_eml.tpl
@@ -1,25 +1,24 @@
-A new user registration request was received at {{$sitename}} which requires
-your approval.
+Su {{$sitename}} è appena arrivata una nuova richiesta di registrazione
+che necessita della tua approvazione.
-The login details are as follows:
+Questi sono i dati dell'account:
-Site Location: {{$siteurl}}
-Login Name: {{$email}}
-IP Address: {{$details}}
+Sito: {{$siteurl}}
+Nome utente: {{$email}}
+Indirizzo IP: {{$details}}
-To approve this request please visit the following link:
+Per approvare la richiesta devi cliccare su questo link:
{{$siteurl}}/regmod/allow/{{$hash}}
-To deny the request and remove the account, please visit:
+Per annullare la richiesta e rimuovere l'account, clicca qui:
{{$siteurl}}/regmod/deny/{{$hash}}
-Thank you.
-
+Grazie mille!
diff --git a/view/it/register_verify_member.tpl b/view/it/register_verify_member.tpl
new file mode 100644
index 000000000..6127e752e
--- /dev/null
+++ b/view/it/register_verify_member.tpl
@@ -0,0 +1,24 @@
+
+Grazie per la tua registrazione su {{$sitename}}!
+
+Questi sono i dati per effettuare l'accesso:
+
+Sito: {{$siteurl}}
+Nome utente: {{$email}}
+
+Dovrai inserire la password che hai scelto al momento della registrazione.
+
+Ricorda però che è necessario verificare l'indirizzo email perché tu possa avere l'accesso completo.
+
+Se l'account è stato creato da te, allora visita questo link di verifica:
+
+{{$siteurl}}/regver/allow/{{$hash}}
+
+
+Se preferisci cancellare la richiesta e rimuovere l'account, allora clicca su quest'altro link:
+
+
+{{$siteurl}}/regver/deny/{{$hash}}
+
+
+Grazie.
diff --git a/view/it/request_notify_eml.tpl b/view/it/request_notify_eml.tpl
deleted file mode 100644
index d01b8ff27..000000000
--- a/view/it/request_notify_eml.tpl
+++ /dev/null
@@ -1,17 +0,0 @@
-
-Dear {{$myname}},
-
-You have just received a connection request at {{$sitename}}
-
-from '{{$requestor}}'.
-
-You may visit their profile at {{$url}}.
-
-Please login to your site to view the complete introduction
-and approve or ignore/cancel the request.
-
-{{$siteurl}}
-
-Regards,
-
- {{$sitename}} administrator
diff --git a/view/it/strings.php b/view/it/strings.php
index bc261fa45..115962dfc 100644
--- a/view/it/strings.php
+++ b/view/it/strings.php
@@ -5,199 +5,81 @@ function string_plural_select_it($n){
return ($n != 1);;
}}
;
-$a->strings["Name"] = "Nome";
-$a->strings["Type"] = "Tipo";
-$a->strings["Size"] = "Dimensione";
-$a->strings["Last modified"] = "Ultima modifica";
-$a->strings["parent"] = "cartella superiore";
-$a->strings["Edit"] = "Modifica";
-$a->strings["Delete"] = "Elimina";
-$a->strings["Are you sure you want to delete this item?"] = "Si è sicuri di voler eliminare questo oggetto?";
-$a->strings["Total"] = "Totale";
-$a->strings["Light (global default)"] = "Light (predefinito)";
-$a->strings["Submit"] = "Salva";
-$a->strings["Theme settings"] = "Impostazioni del tema";
-$a->strings["Set scheme"] = "Schema";
-$a->strings["Narrow navbar"] = "Barra di navigazione ristretta";
-$a->strings["Navigation bar background colour"] = "Barra di navigazione: Colore di sfondo";
-$a->strings["Navigation bar gradient top colour"] = "Barra di navigazione: Gradiente superiore";
-$a->strings["Navigation bar gradient bottom colour"] = "Barra di navigazione: Gradiente inferiore";
-$a->strings["Navigation active button gradient top colour"] = "Barra di navigazione: Gradiente superiore dell'icona attiva";
-$a->strings["Navigation active button gradient bottom colour"] = "Barra di navigazione: Gradiente inferiore dell'icona attiva";
-$a->strings["Navigation bar border colour "] = "Barra di navigazione: Colore del bordo";
-$a->strings["Navigation bar icon colour "] = "Barra di navigazione: Colore delle icone";
-$a->strings["Navigation bar active icon colour "] = "Barra di navigazione: Colore dell'icona attiva";
-$a->strings["link colour"] = "Colore dei link";
-$a->strings["Set font-colour for banner"] = "Colore del font del banner";
-$a->strings["Set the background colour"] = "Colore di sfondo";
-$a->strings["Set the background image"] = "Immagine di sfondo";
-$a->strings["Set the background colour of items"] = "Colore di sfondo degli elementi della pagina";
-$a->strings["Set the background colour of comments"] = "Imposta il colore di sfondo dei commenti";
-$a->strings["Set the border colour of comments"] = "Imposta il colore del bordo dei commenti";
-$a->strings["Set the indent for comments"] = "Imposta il lo spostamento a destra dei commenti";
-$a->strings["Set the basic colour for item icons"] = "Colore di base per le icone";
-$a->strings["Set the hover colour for item icons"] = "Colore per le icone in evidenza";
-$a->strings["Set font-size for the entire application"] = "Dimensione font per tutto il sito";
-$a->strings["Set font-size for posts and comments"] = "Dimensioni del carattere per articoli e commenti";
-$a->strings["Set font-colour for posts and comments"] = "Colore del carattere per articoli e commenti";
-$a->strings["Set radius of corners"] = "Raggio degli angoli stondati";
-$a->strings["Set shadow depth of photos"] = "Profondità dell'ombra delle foto";
-$a->strings["Set maximum width of conversation regions"] = "Larghezza massima dell'area delle conversazioni";
-$a->strings["Center conversation regions"] = "Centra l'area delle conversazioni";
-$a->strings["Set minimum opacity of nav bar - to hide it"] = "Imposta l'opacità minima della barra di navigazione per nasconderla";
-$a->strings["Set size of conversation author photo"] = "Dimensione foto dell'autore della conversazione";
-$a->strings["Set size of followup author photos"] = "Dimensione foto dei partecipanti alla conversazione";
-$a->strings["Sloppy photo albums"] = "Album con foto storte";
-$a->strings["Are you a clean desk or a messy desk person?"] = "La tua scrivania è sempre a posto? Sei una persona disordinata?";
-$a->strings["Update %s failed. See error logs."] = "%s: aggiornamento fallito. Controlla i log di errore.";
-$a->strings["Update Error at %s"] = "Errore di aggiornamento su %s";
-$a->strings["Create an account to access services and applications within the Red Matrix"] = "Registrati per accedere ai servizi e alle applicazioni di Red Matrix";
-$a->strings["Register"] = "Iscriviti";
-$a->strings["Logout"] = "Esci";
-$a->strings["Login"] = "Accedi";
-$a->strings["Email"] = "Email";
-$a->strings["Password"] = "Password";
-$a->strings["Remember me"] = "Resta connesso";
-$a->strings["Forgot your password?"] = "Hai dimenticato la password?";
-$a->strings["Password Reset"] = "Reimposta la password";
-$a->strings["permission denied"] = "permesso negato";
-$a->strings["Got Zot?"] = "Hai Zot?";
-$a->strings["toggle mobile"] = "attiva/disattiva versione mobile";
-$a->strings["Logged out."] = "Uscita effettuata.";
-$a->strings["Failed authentication"] = "Autenticazione fallita";
-$a->strings["Login failed."] = "Accesso fallito.";
-$a->strings["Default"] = "Predefinito";
-$a->strings["Permission denied."] = "Permesso negato.";
+$a->strings["Cannot locate DNS info for database server '%s'"] = "Non trovo le informazioni DNS per il database server '%s'";
$a->strings["Profile Photos"] = "Foto del profilo";
-$a->strings["Image exceeds website size limit of %lu bytes"] = "L'immagine supera il limite massimo di %lu bytes";
-$a->strings["Image file is empty."] = "Il file dell'immagine è vuoto.";
-$a->strings["Unable to process image"] = "Impossibile elaborare l'immagine";
-$a->strings["Photo storage failed."] = "Impossibile caricare la foto.";
-$a->strings["Photo Albums"] = "Album foto";
-$a->strings["Upload New Photos"] = "Carica nuove foto";
-$a->strings["%d invitation available"] = array(
- 0 => "%d invito disponibile",
- 1 => "%d inviti disponibili",
-);
-$a->strings["Advanced"] = "Avanzate";
-$a->strings["Find Channels"] = "Ricerca canali";
-$a->strings["Enter name or interest"] = "Scrivi un nome o un interesse";
-$a->strings["Connect/Follow"] = "Aggiungi";
-$a->strings["Examples: Robert Morgenstein, Fishing"] = "Per esempio: Mario Rossi, Pesca";
-$a->strings["Find"] = "Cerca";
-$a->strings["Channel Suggestions"] = "Canali suggeriti";
-$a->strings["Random Profile"] = "Profilo casuale";
-$a->strings["Invite Friends"] = "Invita amici";
-$a->strings["Exammple: name=fred and country=iceland"] = "Per esempio: name=mario e country=italy";
-$a->strings["Advanced Find"] = "Ricerca avanzata";
-$a->strings["Saved Folders"] = "Cartelle salvate";
-$a->strings["Everything"] = "Tutto";
-$a->strings["Categories"] = "Categorie";
-$a->strings["%d connection in common"] = array(
- 0 => "%d contatto in comune",
- 1 => "%d contatti in comune",
-);
-$a->strings["show more"] = "mostra tutto";
-$a->strings[" and "] = "e";
-$a->strings["public profile"] = "profilo pubblico";
-$a->strings["%1\$s changed %2\$s to &ldquo;%3\$s&rdquo;"] = "%1\$s ha cambiato %2\$s in &ldquo;%3\$s&rdquo;";
-$a->strings["Visit %1\$s's %2\$s"] = "Guarda %2\$s di %1\$s ";
-$a->strings["%1\$s has an updated %2\$s, changing %3\$s."] = "%1\$s ha aggiornato %2\$s cambiando %3\$s.";
$a->strings["Permission denied"] = "Permesso negato";
$a->strings["(Unknown)"] = "(Sconosciuto)";
+$a->strings["Visible to anybody on the internet."] = "Visibile a chiunque su internet.";
+$a->strings["Visible to you only."] = "Visibile solo a te.";
+$a->strings["Visible to anybody in this network."] = "Visibile a tutti su questa rete.";
+$a->strings["Visible to anybody authenticated."] = "Visibile a chiunque sia autenticato.";
+$a->strings["Visible to anybody on %s."] = "Visibile a tutti in %s.";
+$a->strings["Visible to all connections."] = "Visibile a tutti coloro che ti seguono.";
+$a->strings["Visible to approved connections."] = "Visibile ai contatti approvati.";
+$a->strings["Visible to specific connections."] = "Visibile ad alcuni contatti scelti.";
$a->strings["Item not found."] = "Elemento non trovato.";
-$a->strings["Collection not found."] = "Insieme non trovato.";
+$a->strings["Permission denied."] = "Permesso negato.";
+$a->strings["Collection not found."] = "Insieme di canali non trovato.";
$a->strings["Collection is empty."] = "L'insieme di canali è vuoto.";
$a->strings["Collection: %s"] = "Insieme: %s";
$a->strings["Connection: %s"] = "Contatto: %s";
$a->strings["Connection not found."] = "Contatto non trovato.";
-$a->strings["Connect"] = "Aggiungi";
-$a->strings["New window"] = "Nuova finestra";
-$a->strings["Open the selected location in a different window or browser tab"] = "Apri l'indirizzo selezionato in una nuova scheda o finestra";
-$a->strings["Miscellaneous"] = "Altro";
-$a->strings["year"] = "anno";
-$a->strings["month"] = "mese";
-$a->strings["day"] = "giorno";
-$a->strings["never"] = "mai";
-$a->strings["less than a second ago"] = "meno di un secondo fa";
-$a->strings["years"] = "anni";
-$a->strings["months"] = "mesi";
-$a->strings["week"] = "settimana";
-$a->strings["weeks"] = "settimane";
-$a->strings["days"] = "giorni";
-$a->strings["hour"] = "ora";
-$a->strings["hours"] = "ore";
-$a->strings["minute"] = "minuto";
-$a->strings["minutes"] = "minuti";
-$a->strings["second"] = "secondo";
-$a->strings["seconds"] = "secondi";
-$a->strings["%1\$d %2\$s ago"] = "%1\$d %2\$s fa";
-$a->strings["%1\$s's birthday"] = "È il compleanno di %1\$s";
-$a->strings["Happy Birthday %1\$s"] = "Buon compleanno %1\$s";
-$a->strings["Unable to obtain identity information from database"] = "Impossibile ottenere le informazioni di identificazione dal database";
-$a->strings["Empty name"] = "Nome vuoto";
-$a->strings["Name too long"] = "Nome troppo lungo";
-$a->strings["No account identifier"] = "Account senza identificativo";
-$a->strings["Nickname is required."] = "Il nome dell'account è obbligatorio.";
-$a->strings["Reserved nickname. Please choose another."] = "Nome utente riservato. Per favore scegline un altro.";
-$a->strings["Nickname has unsupported characters or is already being used on this site."] = "Il nome dell'account è già in uso oppure ha dei caratteri non supportati.";
-$a->strings["Unable to retrieve created identity"] = "Impossibile caricare l'identità creata";
-$a->strings["Default Profile"] = "Profilo predefinito";
-$a->strings["Friends"] = "Amici";
-$a->strings["Requested channel is not available."] = "Il canale che cerchi non è disponibile.";
-$a->strings["Requested profile is not available."] = "Il profilo richiesto non è disponibile.";
-$a->strings["Change profile photo"] = "Cambia la foto del profilo";
-$a->strings["Profiles"] = "Profili";
-$a->strings["Manage/edit profiles"] = "Gestisci/modifica i profili";
-$a->strings["Create New Profile"] = "Crea un nuovo profilo";
-$a->strings["Edit Profile"] = "Modifica il profilo";
-$a->strings["Profile Image"] = "Immagine del profilo";
-$a->strings["visible to everybody"] = "visibile a tutti";
-$a->strings["Edit visibility"] = "Cambia la visibilità";
-$a->strings["Location:"] = "Luogo:";
-$a->strings["Gender:"] = "Sesso:";
-$a->strings["Status:"] = "Stato:";
-$a->strings["Homepage:"] = "Home page:";
-$a->strings["Online Now"] = "Online adesso";
-$a->strings["g A l F d"] = "g A l d F";
-$a->strings["F d"] = "d F";
-$a->strings["[today]"] = "[oggi]";
-$a->strings["Birthday Reminders"] = "Promemoria compleanni";
-$a->strings["Birthdays this week:"] = "Compleanni questa settimana:";
-$a->strings["[No description]"] = "[Nessuna descrizione]";
-$a->strings["Event Reminders"] = "Promemoria";
-$a->strings["Events this week:"] = "Eventi di questa settimana:";
-$a->strings["Profile"] = "Profilo";
-$a->strings["Full Name:"] = "Nome completo:";
-$a->strings["Like this channel"] = "Mi piace questo canale";
+$a->strings["Edit"] = "Modifica";
+$a->strings["No recipient provided."] = "Devi scegliere un destinatario.";
+$a->strings["[no subject]"] = "[nessun titolo]";
+$a->strings["Unable to determine sender."] = "Impossibile determinare il mittente.";
+$a->strings["Stored post could not be verified."] = "Non è stato possibile verificare l'articolo inserito.";
+$a->strings["view full size"] = "guarda nelle dimensioni reali";
+$a->strings["Can view my normal stream and posts"] = "Può vedere i miei contenuti e articoli normali";
+$a->strings["Can view my default channel profile"] = "Può vedere il profilo predefinito del canale";
+$a->strings["Can view my photo albums"] = "Può vedere i miei album fotografici";
+$a->strings["Can view my connections"] = "Può vedere i miei contatti";
+$a->strings["Can view my file storage"] = "Può vedere i miei file condivisi";
+$a->strings["Can view my webpages"] = "Può vedere le mie pagine web";
+$a->strings["Can send me their channel stream and posts"] = "È tra i canali che seguo";
+$a->strings["Can post on my channel page (\"wall\")"] = "Può scrivere sulla bacheca del mio canale";
+$a->strings["Can comment on or like my posts"] = "Può commentare o aggiungere \"mi piace\" ai miei articoli";
+$a->strings["Can send me private mail messages"] = "Può inviarmi messaggi privati";
+$a->strings["Can post photos to my photo albums"] = "Può aggiungere foto ai miei album";
+$a->strings["Can like/dislike stuff"] = "Può aggiungere \"mi piace\"";
+$a->strings["Profiles and things other than posts/comments"] = "Profili e tutto ciò che non è articoli e commenti";
+$a->strings["Can forward to all my channel contacts via post @mentions"] = "Può inoltrare articoli a tutti i contatti del canale tramite una @menzione";
+$a->strings["Advanced - useful for creating group forum channels"] = "Impostazione avanzata - utile per creare un canale-forum di discussione";
+$a->strings["Can chat with me (when available)"] = "Può aprire una chat con me (se disponibile)";
+$a->strings["Can write to my file storage"] = "Può scrivere sul mio archivio file";
+$a->strings["Can edit my webpages"] = "Può modificare le mie pagine web";
+$a->strings["Can source my public posts in derived channels"] = "Può usare i miei articoli pubblici per creare canali derivati";
+$a->strings["Somewhat advanced - very useful in open communities"] = "Piuttosto avanzato - molto utile nelle comunità aperte";
+$a->strings["Can administer my channel resources"] = "Può amministrare i contenuti del mio canale";
+$a->strings["Extremely advanced. Leave this alone unless you know what you are doing"] = "Impostazione pericolosa - lasciare il valore predefinito se non si è assolutamente sicuri";
+$a->strings["Social Networking"] = "Social network";
+$a->strings["Mostly Public"] = "Quasi sempre pubblico";
+$a->strings["Restricted"] = "Con restrizioni";
+$a->strings["Private"] = "Privato";
+$a->strings["Community Forum"] = "Forum di discussione";
+$a->strings["Feed Republish"] = "Aggregatore di feed esterni";
+$a->strings["Special Purpose"] = "Per finalità speciali";
+$a->strings["Celebrity/Soapbox"] = "Pagina per fan";
+$a->strings["Group Repository"] = "Repository di gruppo";
+$a->strings["Other"] = "Altro";
+$a->strings["Custom/Expert Mode"] = "Personalizzazione per esperti";
+$a->strings["created a new post"] = "Ha creato un nuovo articolo";
+$a->strings["commented on %s's post"] = "ha commentato l'articolo di %s";
+$a->strings["Tags"] = "Tag";
+$a->strings["Categories"] = "Categorie";
+$a->strings["Keywords"] = "Parole chiave";
+$a->strings["have"] = "ho";
+$a->strings["has"] = "ha";
+$a->strings["want"] = "voglio";
+$a->strings["wants"] = "vuole";
+$a->strings["like"] = "mi piace";
+$a->strings["likes"] = "gli piace";
+$a->strings["dislike"] = "non mi piace";
+$a->strings["dislikes"] = "non gli piace";
$a->strings["__ctx:noun__ Like"] = array(
0 => "Mi piace",
1 => "Mi piace",
);
-$a->strings["j F, Y"] = "j F Y";
-$a->strings["j F"] = "j F";
-$a->strings["Birthday:"] = "Compleanno:";
-$a->strings["Age:"] = "Età:";
-$a->strings["for %1\$d %2\$s"] = "per %1\$d %2\$s";
-$a->strings["Sexual Preference:"] = "Preferenze sessuali:";
-$a->strings["Hometown:"] = "Città dove vivo:";
-$a->strings["Tags:"] = "Tag:";
-$a->strings["Political Views:"] = "Orientamento politico:";
-$a->strings["Religion:"] = "Religione:";
-$a->strings["About:"] = "Informazioni:";
-$a->strings["Hobbies/Interests:"] = "Interessi e hobby:";
-$a->strings["Likes:"] = "Mi piace:";
-$a->strings["Dislikes:"] = "Non mi piace:";
-$a->strings["Contact information and Social Networks:"] = "Contatti e social network:";
-$a->strings["My other channels:"] = "I miei altri canali:";
-$a->strings["Musical interests:"] = "Gusti musicali:";
-$a->strings["Books, literature:"] = "Libri, letteratura:";
-$a->strings["Television:"] = "Televisione:";
-$a->strings["Film/dance/culture/entertainment:"] = "Film, danza, cultura, intrattenimento:";
-$a->strings["Love/Romance:"] = "Amore:";
-$a->strings["Work/employment:"] = "Lavoro:";
-$a->strings["School/education:"] = "Scuola:";
-$a->strings["Like this thing"] = "Mi piace questo oggetto";
$a->strings["New Page"] = "Nuova pagina web";
$a->strings["View"] = "Guarda";
$a->strings["Preview"] = "Anteprima";
@@ -206,6 +88,87 @@ $a->strings["Page Link"] = "Link alla pagina";
$a->strings["Title"] = "Titolo";
$a->strings["Created"] = "Creato";
$a->strings["Edited"] = "Modificato";
+$a->strings["Embedded content"] = "Contenuti incorporati";
+$a->strings["Embedding disabled"] = "Disabilita la creazione di contenuti incorporati";
+$a->strings["Logged out."] = "Uscita effettuata.";
+$a->strings["Failed authentication"] = "Autenticazione fallita";
+$a->strings["Login failed."] = "Accesso fallito.";
+$a->strings["Image exceeds website size limit of %lu bytes"] = "L'immagine supera il limite massimo di %lu bytes";
+$a->strings["Image file is empty."] = "Il file dell'immagine è vuoto.";
+$a->strings["Unable to process image"] = "Impossibile elaborare l'immagine";
+$a->strings["Photo storage failed."] = "Impossibile caricare la foto.";
+$a->strings["Photo Albums"] = "Album foto";
+$a->strings["Upload New Photos"] = "Carica nuove foto";
+$a->strings[" and "] = "e";
+$a->strings["public profile"] = "profilo pubblico";
+$a->strings["%1\$s changed %2\$s to &ldquo;%3\$s&rdquo;"] = "%1\$s ha cambiato %2\$s in &ldquo;%3\$s&rdquo;";
+$a->strings["Visit %1\$s's %2\$s"] = "Guarda %2\$s di %1\$s ";
+$a->strings["%1\$s has an updated %2\$s, changing %3\$s."] = "%1\$s ha aggiornato %2\$s cambiando %3\$s.";
+$a->strings["Attachments:"] = "Allegati:";
+$a->strings["l F d, Y \\@ g:i A"] = "l d F Y \\@ G:i";
+$a->strings["Redmatrix event notification:"] = "Notifica eventi RedMatrix:";
+$a->strings["Starts:"] = "Inizio:";
+$a->strings["Finishes:"] = "Fine:";
+$a->strings["Location:"] = "Luogo:";
+$a->strings["General Features"] = "Funzionalità di base";
+$a->strings["Content Expiration"] = "Scadenza";
+$a->strings["Remove posts/comments and/or private messages at a future time"] = "Elimina gli articoli, i commenti o i messaggi privati dopo un lasso di tempo";
+$a->strings["Multiple Profiles"] = "Profili multipli";
+$a->strings["Ability to create multiple profiles"] = "Abilitazione a creare profili multipli";
+$a->strings["Advanced Profiles"] = "Profili avanzati";
+$a->strings["Additional profile sections and selections"] = "Informazioni aggiuntive del profilo";
+$a->strings["Profile Import/Export"] = "Importa/esporta il profilo";
+$a->strings["Save and load profile details across sites/channels"] = "Salva o ripristina le informazioni del profilo su canali o siti diversi";
+$a->strings["Web Pages"] = "Pagine web";
+$a->strings["Provide managed web pages on your channel"] = "Attiva la creazione di pagine web sul tuo canale";
+$a->strings["Private Notes"] = "Note private";
+$a->strings["Enables a tool to store notes and reminders"] = "Abilita il riquadro per scrivere annotazioni";
+$a->strings["Navigation Channel Select"] = "Scegli il canale attivo dal menu";
+$a->strings["Change channels directly from within the navigation dropdown menu"] = "Scegli il canale attivo direttamente dal menu di navigazione";
+$a->strings["Extended Identity Sharing"] = "Condivisione avanzata dell'identità";
+$a->strings["Share your identity with all websites on the internet. When disabled, identity is only shared with sites in the matrix."] = "Rendi nota la tua identità a tutti i siti internet. Se disabilitato, la tua identità sarà comunicata solo ai siti RedMatrix.";
+$a->strings["Expert Mode"] = "Modalità esperto";
+$a->strings["Enable Expert Mode to provide advanced configuration options"] = "Abilita la modalità esperto per vedere le opzioni di configurazione avanzate";
+$a->strings["Premium Channel"] = "Canale premium";
+$a->strings["Allows you to set restrictions and terms on those that connect with your channel"] = "Ti permette di impostare delle restrizioni e dei termini d'uso a chi segue il canale";
+$a->strings["Post Composition Features"] = "Modalità di scrittura articoli";
+$a->strings["Use Markdown"] = "Usa il markdown";
+$a->strings["Allow use of \"Markdown\" to format posts"] = "Consenti l'uso del markdown per formattare gli articoli";
+$a->strings["Channel Sources"] = "Sorgenti del canale";
+$a->strings["Automatically import channel content from other channels or feeds"] = "Importa automaticamente il contenuto del canale da altri canali o feed";
+$a->strings["Even More Encryption"] = "Crittografia addizionale";
+$a->strings["Allow optional encryption of content end-to-end with a shared secret key"] = "Rendi possibile la crittografia tra mittente e destinatario che condividono una chiave segreta";
+$a->strings["Flag Adult Photos"] = "Marca le foto per adulti";
+$a->strings["Provide photo edit option to hide adult photos from default album view"] = "Permette di marcare e nascondere negli album le foto per adulti";
+$a->strings["Network and Stream Filtering"] = "Filtraggio dei contenuti";
+$a->strings["Search by Date"] = "Ricerca per data";
+$a->strings["Ability to select posts by date ranges"] = "Per selezionare gli articoli in un intervallo tra date";
+$a->strings["Collections Filter"] = "Filtra per insiemi di canali";
+$a->strings["Enable widget to display Network posts only from selected collections"] = "Mostra il riquadro per filtrare gli articoli di certi insiemi di canali";
+$a->strings["Saved Searches"] = "Ricerche salvate";
+$a->strings["Save search terms for re-use"] = "Salva i termini delle ricerche per poterle ripetere";
+$a->strings["Network Personal Tab"] = "Attività personale";
+$a->strings["Enable tab to display only Network posts that you've interacted on"] = "Abilita il link per mostrare solamente i contenuti con cui hai interagito";
+$a->strings["Network New Tab"] = "Contenuti nuovi";
+$a->strings["Enable tab to display all new Network activity"] = "Abilita il link per visualizzare solo i nuovi contenuti";
+$a->strings["Affinity Tool"] = "Filtro per affinità";
+$a->strings["Filter stream activity by depth of relationships"] = "Permette di selezionare i contenuti in base al livello di amicizia";
+$a->strings["Suggest Channels"] = "Suggerisci canali";
+$a->strings["Show channel suggestions"] = "Mostra alcuni canali che potrebbero interessarti";
+$a->strings["Post/Comment Tools"] = "Gestione articoli e commenti";
+$a->strings["Tagging"] = "Tag";
+$a->strings["Ability to tag existing posts"] = "Permetti l'aggiunta di tag su articoli già esistenti";
+$a->strings["Post Categories"] = "Categorie degli articoli";
+$a->strings["Add categories to your posts"] = "Abilita le categorie per i tuoi articoli";
+$a->strings["Saved Folders"] = "Cartelle salvate";
+$a->strings["Ability to file posts under folders"] = "Abilita la raccolta dei tuoi articoli in cartelle";
+$a->strings["Dislike Posts"] = "Non mi piace";
+$a->strings["Ability to dislike posts/comments"] = "Abilità la funzionalità \"non mi piace\" per i tuoi articoli";
+$a->strings["Star Posts"] = "Articoli stella (preferiti)";
+$a->strings["Ability to mark special posts with a star indicator"] = "Mostra la stella per scegliere gli articoli preferiti";
+$a->strings["Tag Cloud"] = "Nuvola di tag";
+$a->strings["Provide a personal tag cloud on your channel page"] = "Mostra la nuvola dei tag che usi di più sulla pagina del tuo canale";
+$a->strings["parent"] = "cartella superiore";
$a->strings["Collection"] = "Cartella";
$a->strings["Principal"] = "Principale";
$a->strings["Addressbook"] = "Rubrica";
@@ -215,81 +178,29 @@ $a->strings["Schedule Outbox"] = "Appuntamenti inviati";
$a->strings["Unknown"] = "Sconosciuto";
$a->strings["%1\$s used"] = "%1\$s occupati";
$a->strings["%1\$s used of %2\$s (%3\$s&#37;)"] = "%1\$s occupati di %2\$s (%3\$s&#37;)";
-$a->strings["Files"] = "Elenco file";
+$a->strings["Files"] = "Archivio file";
+$a->strings["Total"] = "Totale";
+$a->strings["Name"] = "Nome";
+$a->strings["Type"] = "Tipo";
+$a->strings["Size"] = "Dimensione";
+$a->strings["Last Modified"] = "Ultima modifica";
+$a->strings["Delete"] = "Elimina";
$a->strings["Create new folder"] = "Crea una nuova cartella";
$a->strings["Create"] = "Crea";
$a->strings["Upload file"] = "Carica un file";
$a->strings["Upload"] = "Carica";
-$a->strings["No recipient provided."] = "Devi scegliere un destinatario.";
-$a->strings["[no subject]"] = "[nessun titolo]";
-$a->strings["Unable to determine sender."] = "Impossibile determinare il mittente.";
-$a->strings["Stored post could not be verified."] = "Non è stato possibile verificare l'articolo inserito.";
-$a->strings["Tags"] = "Tag";
-$a->strings["Keywords"] = "Parole chiave";
-$a->strings["have"] = "ho";
-$a->strings["has"] = "ha";
-$a->strings["want"] = "voglio";
-$a->strings["wants"] = "vuole";
-$a->strings["like"] = "mi piace";
-$a->strings["likes"] = "mi piace";
-$a->strings["dislike"] = "non mi piace";
-$a->strings["dislikes"] = "non mi piace";
-$a->strings["Delete this item?"] = "Eliminare questo elemento?";
-$a->strings["Comment"] = "Commento";
-$a->strings["[+] show all"] = "[+] mostra tutto";
-$a->strings["[-] show less"] = "[-] riduci";
-$a->strings["[+] expand"] = "[+] mostra tutto";
-$a->strings["[-] collapse"] = "[-] riduci";
-$a->strings["Password too short"] = "Password troppo corta";
-$a->strings["Passwords do not match"] = "Le password non corrispondono";
-$a->strings["everybody"] = "tutti";
-$a->strings["Secret Passphrase"] = "Chiave segreta";
-$a->strings["Passphrase hint"] = "Suggerimento per la chiave segreta";
-$a->strings["Notice: Permissions have changed but have not yet been submitted."] = "Nota: i permessi sono stati modificati ma non ancora salvati.";
-$a->strings["close all"] = "chiudi tutto";
-$a->strings["timeago.prefixAgo"] = "timeago.prefixAgo";
-$a->strings["timeago.prefixFromNow"] = "timeago.prefixFromNow";
-$a->strings["ago"] = "fa";
-$a->strings["from now"] = "da adesso";
-$a->strings["less than a minute"] = "meno di un minuto";
-$a->strings["about a minute"] = "circa un minuto";
-$a->strings["%d minutes"] = "%d minuti";
-$a->strings["about an hour"] = "circa un’ora";
-$a->strings["about %d hours"] = "circa %d ore";
-$a->strings["a day"] = "un giorno";
-$a->strings["%d days"] = "%d giorni";
-$a->strings["about a month"] = "circa un mese";
-$a->strings["%d months"] = "%d mesi";
-$a->strings["about a year"] = "circa un anno";
-$a->strings["%d years"] = "%d anni";
-$a->strings[" "] = " ";
-$a->strings["timeago.numbers"] = "timeago.numbers";
-$a->strings["Can view my \"public\" stream and posts"] = "Può vedere i miei contenuti \"pubblici\"";
-$a->strings["Can view my \"public\" channel profile"] = "Può vedere il profilo del mio canale \"pubblico\"";
-$a->strings["Can view my \"public\" photo albums"] = "Può vedere il mio album fotografico \"pubblico\"";
-$a->strings["Can view my \"public\" address book"] = "Può vedere il mio elenco contatti \"pubblico\"";
-$a->strings["Can view my \"public\" file storage"] = "Può vedere il mio archivio file \"pubblico\"";
-$a->strings["Can view my \"public\" pages"] = "Può vedere le mie pagine web \"pubbliche\"";
-$a->strings["Can send me their channel stream and posts"] = "È tra i canali che seguo";
-$a->strings["Can post on my channel page (\"wall\")"] = "Può scrivere sulla bacheca del mio canale";
-$a->strings["Can comment on my posts"] = "Può commentare i miei articoli";
-$a->strings["Can send me private mail messages"] = "Può inviarmi messaggi privati";
-$a->strings["Can post photos to my photo albums"] = "Può aggiungere foto ai miei album";
-$a->strings["Can forward to all my channel contacts via post @mentions"] = "Può inoltrare articoli a tutti i contatti del canale tramite una @menzione";
-$a->strings["Advanced - useful for creating group forum channels"] = "Impostazione avanzata - utile per creare un canale-forum di discussione";
-$a->strings["Can chat with me (when available)"] = "Può aprire una chat con me (se disponibile)";
-$a->strings["Can write to my \"public\" file storage"] = "Può scrivere sul mio archivio di file \"pubblico\"";
-$a->strings["Can edit my \"public\" pages"] = "Può modificare le mie pagine web \"pubbliche\"";
-$a->strings["Can source my \"public\" posts in derived channels"] = "Può aggiungere i miei post \"pubblici\" a un suo canale derivato";
-$a->strings["Somewhat advanced - very useful in open communities"] = "Piuttosto avanzato - molto utile nelle comunità aperte";
-$a->strings["Can administer my channel resources"] = "Può amministrare i contenuti del mio canale";
-$a->strings["Extremely advanced. Leave this alone unless you know what you are doing"] = "Impostazione pericolosa - lasciare il valore predefinito se non si è assolutamente sicuri";
-$a->strings["Unknown | Not categorised"] = "Sconosciuto | Senza categoria";
-$a->strings["Block immediately"] = "Blocca subito";
-$a->strings["Shady, spammer, self-marketer"] = "Spammer o dedito al marketing";
-$a->strings["Known to me, but no opinion"] = "Lo conosco, ma non ho un'opinione particolare";
-$a->strings["OK, probably harmless"] = "È ok, probabilmente innocuo";
-$a->strings["Reputable, has my trust"] = "Affidabile, ha la mia fiducia";
+$a->strings["%1\$s's bookmarks"] = "I segnalibri di %1\$s";
+$a->strings["Directory Options"] = "Opzioni elenco pubblico";
+$a->strings["Alphabetic"] = "Alfabetico";
+$a->strings["Reverse Alphabetic"] = "Alfabetico inverso";
+$a->strings["Newest to Oldest"] = "Prima i più recenti";
+$a->strings["Oldest to Newest"] = "Prima i più vecchi";
+$a->strings["Public Forums Only"] = "Solo forum pubblici";
+$a->strings["Sort"] = "Ordinamento";
+$a->strings["Enable Safe Search"] = "Abilita SafeSearch";
+$a->strings["Disable Safe Search"] = "Disabilita SafeSearch";
+$a->strings["Safe Mode"] = "Modalità SafeSearch";
+$a->strings["Default"] = "Predefinito";
$a->strings["Frequently"] = "Frequentemente";
$a->strings["Hourly"] = "Ogni ora";
$a->strings["Twice daily"] = "Due volte al giorno";
@@ -299,163 +210,18 @@ $a->strings["Monthly"] = "Ogni mese";
$a->strings["Friendica"] = "Friendica";
$a->strings["OStatus"] = "OStatus";
$a->strings["RSS/Atom"] = "RSS/Atom";
+$a->strings["Email"] = "Email";
$a->strings["Diaspora"] = "Diaspora";
$a->strings["Facebook"] = "Facebook";
$a->strings["Zot!"] = "Zot!";
$a->strings["LinkedIn"] = "LinkedIn";
$a->strings["XMPP/IM"] = "XMPP/IM";
$a->strings["MySpace"] = "MySpace";
-$a->strings["l F d, Y \\@ g:i A"] = "l d F Y \\@ G:i";
-$a->strings["Starts:"] = "Inizio:";
-$a->strings["Finishes:"] = "Fine:";
-$a->strings["This event has been added to your calendar."] = "Questo evento è stato aggiunto al tuo calendario";
-$a->strings["Male"] = "Maschio";
-$a->strings["Female"] = "Femmina";
-$a->strings["Currently Male"] = "Al momento maschio";
-$a->strings["Currently Female"] = "Al momento femmina";
-$a->strings["Mostly Male"] = "Prevalentemente maschio";
-$a->strings["Mostly Female"] = "Prevalentemente femmina";
-$a->strings["Transgender"] = "Transgender";
-$a->strings["Intersex"] = "Intersex";
-$a->strings["Transsexual"] = "Transessuale";
-$a->strings["Hermaphrodite"] = "Ermafrodito";
-$a->strings["Neuter"] = "Neutro";
-$a->strings["Non-specific"] = "Non specificato";
-$a->strings["Other"] = "Altro";
-$a->strings["Undecided"] = "Indeciso";
-$a->strings["Males"] = "Maschi";
-$a->strings["Females"] = "Femmine";
-$a->strings["Gay"] = "Gay";
-$a->strings["Lesbian"] = "Lesbica";
-$a->strings["No Preference"] = "Senza preferenza";
-$a->strings["Bisexual"] = "Bisessuale";
-$a->strings["Autosexual"] = "Autosessuale";
-$a->strings["Abstinent"] = "Astinente";
-$a->strings["Virgin"] = "Vergine";
-$a->strings["Deviant"] = "Deviato";
-$a->strings["Fetish"] = "Feticista";
-$a->strings["Oodles"] = "Un sacco";
-$a->strings["Nonsexual"] = "Asessuato";
-$a->strings["Single"] = "Single";
-$a->strings["Lonely"] = "Da solo";
-$a->strings["Available"] = "Disponibile";
-$a->strings["Unavailable"] = "Non disponibile";
-$a->strings["Has crush"] = "Ha una cotta";
-$a->strings["Infatuated"] = "Infatuato/a";
-$a->strings["Dating"] = "Disponibile a un incontro";
-$a->strings["Unfaithful"] = "Infedele";
-$a->strings["Sex Addict"] = "Sesso-dipendente";
-$a->strings["Friends/Benefits"] = "Amici piccanti";
-$a->strings["Casual"] = "Casual";
-$a->strings["Engaged"] = "Impegnato";
-$a->strings["Married"] = "Sposato/a";
-$a->strings["Imaginarily married"] = "Sogna il matrimonio";
-$a->strings["Partners"] = "Partner";
-$a->strings["Cohabiting"] = "Convivente";
-$a->strings["Common law"] = "Matrimonio regolare";
-$a->strings["Happy"] = "Felice";
-$a->strings["Not looking"] = "Non in cerca";
-$a->strings["Swinger"] = "Scambista";
-$a->strings["Betrayed"] = "Tradito/a";
-$a->strings["Separated"] = "Separato/a";
-$a->strings["Unstable"] = "Instabile";
-$a->strings["Divorced"] = "Divorziato/a";
-$a->strings["Imaginarily divorced"] = "Sogna il divorzio";
-$a->strings["Widowed"] = "Vedovo/a";
-$a->strings["Uncertain"] = "Incerto/a";
-$a->strings["It's complicated"] = "Relazione complicata";
-$a->strings["Don't care"] = "Chi se ne frega";
-$a->strings["Ask me"] = "Chiedimelo";
-$a->strings["Not a valid email address"] = "Email non valida";
-$a->strings["Your email domain is not among those allowed on this site"] = "Il dominio della tua email attualmente non è permesso su questo sito";
-$a->strings["Your email address is already registered at this site."] = "La tua email è già registrata su questo sito.";
-$a->strings["An invitation is required."] = "È necessario un invito.";
-$a->strings["Invitation could not be verified."] = "L'invito non può essere verificato.";
-$a->strings["Please enter the required information."] = "Inserisci le informazioni richieste.";
-$a->strings["Failed to store account information."] = "Non è stato possibile salvare le informazioni del tuo account.";
-$a->strings["Registration request at %s"] = "Richiesta di registrazione su %s";
-$a->strings["Administrator"] = "Amministratore";
-$a->strings["your registration password"] = "la password di registrazione";
-$a->strings["Registration details for %s"] = "Dettagli della registrazione di %s";
-$a->strings["Account approved."] = "Account approvato.";
-$a->strings["Registration revoked for %s"] = "Registrazione revocata per %s";
-$a->strings["Embedded content"] = "Contenuti incorporati";
-$a->strings["Embedding disabled"] = "Contenuti incorporati - funzione disabilitata";
-$a->strings["Invalid data packet"] = "Dati non validi";
-$a->strings["Unable to verify channel signature"] = "Impossibile verificare la firma elettronica del canale";
-$a->strings["Unable to verify site signature for %s"] = "Impossibile verificare la firma elettronica del sito %s";
-$a->strings["view full size"] = "guarda nelle dimensioni reali";
-$a->strings["Cannot locate DNS info for database server '%s'"] = "Non trovo le informazioni DNS per il database server '%s'";
-$a->strings["A deleted group with this name was revived. Existing item permissions <strong>may</strong> apply to this group and any future members. If this is not what you intended, please create another group with a different name."] = "È stato ripristinato un insieme con lo stesso nome che era stato eliminato in precedenza. I permessi già presenti <strong>potrebbero</strong> rimanere validi per i nuovi canali. Se non vuoi che ciò accada, devi creare un altro insieme con un nome diverso.";
-$a->strings["Default privacy group for new contacts"] = "Insieme predefinito per i canali che inizi a seguire";
-$a->strings["All Channels"] = "Tutti i canali";
-$a->strings["edit"] = "modifica";
-$a->strings["Collections"] = "Insiemi di canali";
-$a->strings["Edit collection"] = "Modifica l'insieme di canali";
-$a->strings["Create a new collection"] = "Crea un nuovo insieme";
-$a->strings["Channels not in any collection"] = "Canali che non sono in un insieme";
-$a->strings["add"] = "aggiungi";
-$a->strings["Item was not found."] = "Elemento non trovato.";
-$a->strings["No source file."] = "Nessun file di origine.";
-$a->strings["Cannot locate file to replace"] = "Il file da sostituire non è stato trovato";
-$a->strings["Cannot locate file to revise/update"] = "Il file da aggiornare non è stato trovato";
-$a->strings["File exceeds size limit of %d"] = "Il file supera la dimensione massima di %d";
-$a->strings["You have reached your limit of %1$.0f Mbytes attachment storage."] = "Hai raggiunto il limite complessivo di %1$.0f Mbytes per gli allegati.";
-$a->strings["File upload failed. Possible system limit or action terminated."] = "Caricamento file fallito, potrebbe aver superato i limiti o l'azione potrebbe essere stata interrotta.";
-$a->strings["Stored file could not be verified. Upload failed."] = "Il file non può essere verificato. Caricamento fallito.";
-$a->strings["Path not available."] = "Percorso non disponibile.";
-$a->strings["Empty pathname"] = "Il percorso del file è vuoto";
-$a->strings["duplicate filename or path"] = "il file o percorso del file è duplicato";
-$a->strings["Path not found."] = "Percorso del file non trovato.";
-$a->strings["mkdir failed."] = "mkdir fallito.";
-$a->strings["database storage failed."] = "scrittura su database fallita.";
-$a->strings["Private Message"] = "Messaggio privato";
-$a->strings["Select"] = "Seleziona";
-$a->strings["Save to Folder"] = "Salva nella cartella";
-$a->strings["View all"] = "Vedi tutto";
-$a->strings["__ctx:noun__ Dislike"] = array(
- 0 => "Non mi piace",
- 1 => "Non mi piace",
-);
-$a->strings["Add Star"] = "Aggiungi ai preferiti";
-$a->strings["Remove Star"] = "Rimuovi dai preferiti";
-$a->strings["Toggle Star Status"] = "Attiva/disattiva preferito";
-$a->strings["starred"] = "preferito";
-$a->strings["Message is verified"] = "Messaggio verificato";
-$a->strings["Add Tag"] = "Aggiungi un tag";
-$a->strings["I like this (toggle)"] = "Attiva/disattiva Mi piace";
-$a->strings["I don't like this (toggle)"] = "Attiva/disattiva Non mi piace";
-$a->strings["Share This"] = "Condividi";
-$a->strings["share"] = "condividi";
-$a->strings["View %s's profile - %s"] = "Guarda il profilo di %s - %s";
-$a->strings["to"] = "a";
-$a->strings["via"] = "via";
-$a->strings["Wall-to-Wall"] = "Da bacheca a bacheca";
-$a->strings["via Wall-To-Wall:"] = "da bacheca a bacheca:";
-$a->strings[" from %s"] = " da %s";
-$a->strings["last edited: %s"] = "ultima modifica: %s";
-$a->strings["Expires: %s"] = "Scadenza: %s";
-$a->strings["Save Bookmarks"] = "Salva segnalibro";
-$a->strings["Add to Calendar"] = "Aggiungi al calendario";
-$a->strings["__ctx:noun__ Likes"] = "Mi piace";
-$a->strings["__ctx:noun__ Dislikes"] = "Non mi piace";
+$a->strings["Visible to your default audience"] = "Visibile secondo le impostazioni predefinite";
+$a->strings["Show"] = "Mostra";
+$a->strings["Don't show"] = "Non mostrare";
+$a->strings["Permissions"] = "Permessi";
$a->strings["Close"] = "Chiudi";
-$a->strings["Please wait"] = "Attendere";
-$a->strings["%d comment"] = array(
- 0 => "%d commento",
- 1 => "%d commenti",
-);
-$a->strings["This is you"] = "Questo sei tu";
-$a->strings["Bold"] = "Grassetto";
-$a->strings["Italic"] = "Corsivo";
-$a->strings["Underline"] = "Sottolineato";
-$a->strings["Quote"] = "Citazione";
-$a->strings["Code"] = "Codice";
-$a->strings["Image"] = "Immagine";
-$a->strings["Link"] = "Link";
-$a->strings["Video"] = "Video";
-$a->strings["Encrypt text"] = "Crittografia del testo";
-$a->strings["The form security token was not correct. This probably happened because the form has been opened for too long (>3 hours) before submitting it."] = "L'identificativo di sicurezza del modulo che hai riempito non è corretto. Probabilmente è accaduto perché la pagina è stata tenuta aperta troppo a lungo (ore?) prima di inviare il contenuto.";
$a->strings["prev"] = "prec";
$a->strings["first"] = "inizio";
$a->strings["last"] = "fine";
@@ -474,8 +240,8 @@ $a->strings["poke"] = "poke";
$a->strings["poked"] = "ha ricevuto un poke";
$a->strings["ping"] = "ping";
$a->strings["pinged"] = "ha ricevuto un ping";
-$a->strings["prod"] = "prod";
-$a->strings["prodded"] = "ha ricevuto un prod";
+$a->strings["prod"] = "spintone";
+$a->strings["prodded"] = "ha ricevuto uno spintone";
$a->strings["slap"] = "schiaffo";
$a->strings["slapped"] = "ha ricevuto uno schiaffo";
$a->strings["finger"] = "finger";
@@ -527,7 +293,7 @@ $a->strings["bytes"] = "byte";
$a->strings["remove category"] = "rimuovi la categoria";
$a->strings["remove from file"] = "rimuovi dal file";
$a->strings["Click to open/close"] = "Clicca per aprire/chiudere";
-$a->strings["Link to Source"] = "Link al sorgente";
+$a->strings["Link to Source"] = "Link al sito d'origine";
$a->strings["Select a page layout: "] = "Scegli il layout della pagina:";
$a->strings["default"] = "predefinito";
$a->strings["Page content type: "] = "Contenuto della pagina:";
@@ -542,25 +308,32 @@ $a->strings["Blocks"] = "Riquadri";
$a->strings["Menus"] = "Menù";
$a->strings["Layouts"] = "Layout";
$a->strings["Pages"] = "Pagine";
-$a->strings["Sort Options"] = "Opzioni di ordinamento";
-$a->strings["Alphabetic"] = "Alfabetico";
-$a->strings["Reverse Alphabetic"] = "Alfabetico inverso";
-$a->strings["Newest to Oldest"] = "Dal più nuovo al più vecchio";
-$a->strings["Enable Safe Search"] = "Abilita SafeSearch";
-$a->strings["Disable Safe Search"] = "Disabilita SafeSearch";
-$a->strings["Safe Mode"] = "Modalità SafeSearch";
-$a->strings["Image/photo"] = "Immagine";
-$a->strings["Encrypted content"] = "Contenuto crittografato";
-$a->strings["QR code"] = "QR code";
-$a->strings["%1\$s wrote the following %2\$s %3\$s"] = "%1\$s ha scritto %2\$s %3\$s";
-$a->strings["post"] = "l'articolo";
-$a->strings["$1 wrote:"] = "$1 ha scritto:";
-$a->strings["Red Matrix Notification"] = "Notifica di Red Matrix";
-$a->strings["redmatrix"] = "redmatrix";
+$a->strings["%d invitation available"] = array(
+ 0 => "%d invito disponibile",
+ 1 => "%d inviti disponibili",
+);
+$a->strings["Advanced"] = "Avanzate";
+$a->strings["Find Channels"] = "Ricerca canali";
+$a->strings["Enter name or interest"] = "Scrivi un nome o un interesse";
+$a->strings["Connect/Follow"] = "Aggiungi";
+$a->strings["Examples: Robert Morgenstein, Fishing"] = "Per esempio: Mario Rossi, Pesca";
+$a->strings["Find"] = "Cerca";
+$a->strings["Channel Suggestions"] = "Canali suggeriti";
+$a->strings["Random Profile"] = "Profilo casuale";
+$a->strings["Invite Friends"] = "Invita amici";
+$a->strings["Advanced example: name=fred and country=iceland"] = "Per esempio: name=mario e country=italy";
+$a->strings["Everything"] = "Tutto";
+$a->strings["%d connection in common"] = array(
+ 0 => "%d contatto in comune",
+ 1 => "%d contatti in comune",
+);
+$a->strings["show more"] = "mostra tutto";
+$a->strings["Red Matrix Notification"] = "Notifica di RedMatrix";
+$a->strings["redmatrix"] = "RedMatrix";
$a->strings["Thank You,"] = "Grazie,";
-$a->strings["%s Administrator"] = "Amministratore %s";
+$a->strings["%s Administrator"] = "L'amministratore di %s";
$a->strings["%s <!item_type!>"] = "%s <!item_type!>";
-$a->strings["[Red:Notify] New mail received at %s"] = "[Red:Notifica] Nuovo messaggio ricevuto su %s";
+$a->strings["[Red:Notify] New mail received at %s"] = "[RedMatrix] Nuovo messaggio su %s";
$a->strings["%1\$s, %2\$s sent you a new private message at %3\$s."] = "%1\$s, %2\$s ti ha mandato un messaggio privato su %3\$s.";
$a->strings["%1\$s sent you %2\$s."] = "%1\$s ti ha mandato %2\$s.";
$a->strings["a private message"] = "un messaggio privato";
@@ -568,179 +341,187 @@ $a->strings["Please visit %s to view and/or reply to your private messages."] =
$a->strings["%1\$s, %2\$s commented on [zrl=%3\$s]a %4\$s[/zrl]"] = "%1\$s, %2\$s ha commentato [zrl=%3\$s]%4\$s[/zrl]";
$a->strings["%1\$s, %2\$s commented on [zrl=%3\$s]%4\$s's %5\$s[/zrl]"] = "%1\$s, %2\$s ha commentato [zrl=%3\$s]%5\$s di %4\$s[/zrl]";
$a->strings["%1\$s, %2\$s commented on [zrl=%3\$s]your %4\$s[/zrl]"] = "%1\$s, %2\$s ha commentato [zrl=%3\$s]%4\$s che hai creato[/zrl]";
-$a->strings["[Red:Notify] Comment to conversation #%1\$d by %2\$s"] = "[Red:Notifica] Nuovo commento di %2\$s alla conversazione #%1\$d";
+$a->strings["[Red:Notify] Comment to conversation #%1\$d by %2\$s"] = "[RedMatrix] Nuovo commento di %2\$s alla conversazione #%1\$d";
$a->strings["%1\$s, %2\$s commented on an item/conversation you have been following."] = "%1\$s, %2\$s ha commentato un elemento che stavi seguendo.";
$a->strings["Please visit %s to view and/or reply to the conversation."] = "Visita %s per leggere o commentare la conversazione.";
-$a->strings["[Red:Notify] %s posted to your profile wall"] = "[Red:Notifica] %s ha scritto sulla tua bacheca";
+$a->strings["[Red:Notify] %s posted to your profile wall"] = "[RedMatrix] %s ha scritto sulla tua bacheca";
$a->strings["%1\$s, %2\$s posted to your profile wall at %3\$s"] = "%1\$s, %2\$s ha scritto sulla bacheca del tuo profilo su %3\$s";
$a->strings["%1\$s, %2\$s posted to [zrl=%3\$s]your wall[/zrl]"] = "%1\$s, %2\$s ha scritto sulla [zrl=%3\$s]tua bacheca[/zrl]";
-$a->strings["[Red:Notify] %s tagged you"] = "[Red:Notifica] %s ti ha taggato";
+$a->strings["[Red:Notify] %s tagged you"] = "[RedMatrix] %s ti ha taggato";
$a->strings["%1\$s, %2\$s tagged you at %3\$s"] = "%1\$s, %2\$s ti ha taggato su %3\$s";
$a->strings["%1\$s, %2\$s [zrl=%3\$s]tagged you[/zrl]."] = "%1\$s, %2\$s [zrl=%3\$s]ti ha taggato[/zrl].";
-$a->strings["[Red:Notify] %1\$s poked you"] = "[Red:Notifica] %1\$s ti ha mandato un poke";
+$a->strings["[Red:Notify] %1\$s poked you"] = "[RedMatrix] %1\$s ti ha mandato un poke";
$a->strings["%1\$s, %2\$s poked you at %3\$s"] = "%1\$s, %2\$s ti ha mandato un poke su %3\$s";
$a->strings["%1\$s, %2\$s [zrl=%2\$s]poked you[/zrl]."] = "%1\$s, %2\$s [zrl=%2\$s]ti ha mandato un poke[/zrl].";
-$a->strings["[Red:Notify] %s tagged your post"] = "[Red:Notifica] %s ha taggato il tuo articolo";
+$a->strings["[Red:Notify] %s tagged your post"] = "[RedMatrix] %s ha taggato il tuo articolo";
$a->strings["%1\$s, %2\$s tagged your post at %3\$s"] = "%1\$s, %2\$s ha taggato il tuo articolo su %3\$s";
$a->strings["%1\$s, %2\$s tagged [zrl=%3\$s]your post[/zrl]"] = "%1\$s, %2\$s ha taggato [zrl=%3\$s]il tuo articolo[/zrl]";
-$a->strings["[Red:Notify] Introduction received"] = "[Red:Notifica] Hai una richiesta di amicizia";
+$a->strings["[Red:Notify] Introduction received"] = "[RedMatrix] Hai una richiesta di amicizia";
$a->strings["%1\$s, you've received an new connection request from '%2\$s' at %3\$s"] = "%1\$s, hai ricevuto una richiesta di entrare in contatto da '%2\$s' su %3\$s";
$a->strings["%1\$s, you've received [zrl=%2\$s]a new connection request[/zrl] from %3\$s."] = "%1\$s, hai ricevuto una [zrl=%2\$s]richiesta di entrare in contatto[/zrl] da %3\$s.";
$a->strings["You may visit their profile at %s"] = "Puoi visitare il suo profilo su %s";
$a->strings["Please visit %s to approve or reject the connection request."] = "Visita %s per approvare o rifiutare la richiesta di entrare in contatto.";
-$a->strings["[Red:Notify] Friend suggestion received"] = "[Red:Notifica] Ti è stato suggerito un amico";
+$a->strings["[Red:Notify] Friend suggestion received"] = "[RedMatrix] Ti è stato suggerito un amico";
$a->strings["%1\$s, you've received a friend suggestion from '%2\$s' at %3\$s"] = "%1\$s, ti è stato suggerito un amico da '%2\$s' su %3\$s";
$a->strings["%1\$s, you've received [zrl=%2\$s]a friend suggestion[/zrl] for %3\$s from %4\$s."] = "%1\$s, %4\$s ti [zrl=%2\$s]ha suggerito %3\$s[/zrl] come amico.";
$a->strings["Name:"] = "Nome:";
$a->strings["Photo:"] = "Foto:";
$a->strings["Please visit %s to approve or reject the suggestion."] = "Visita %s per approvare o rifiutare il suggerimento.";
-$a->strings["%1\$s's bookmarks"] = "I segnalibri di %1\$s";
-$a->strings["End this session"] = "Chiudi questa sessione";
-$a->strings["Home"] = "Bacheca";
-$a->strings["Your posts and conversations"] = "I tuoi articoli e conversazioni";
-$a->strings["View Profile"] = "Profilo";
-$a->strings["Your profile page"] = "Il tuo profilo";
-$a->strings["Edit Profiles"] = "Modifica i profili";
-$a->strings["Manage/Edit profiles"] = "Gestisci/modifica i profili";
-$a->strings["Photos"] = "Foto";
-$a->strings["Your photos"] = "Le tue foto";
-$a->strings["Your files"] = "I tuoi file";
-$a->strings["Chat"] = "Chat";
-$a->strings["Your chatrooms"] = "Le tue chat";
-$a->strings["Bookmarks"] = "Segnalibri";
-$a->strings["Your bookmarks"] = "I tuoi segnalibri";
-$a->strings["Webpages"] = "Pagine web";
-$a->strings["Your webpages"] = "Le tue pagine web";
-$a->strings["Sign in"] = "Entra";
-$a->strings["%s - click to logout"] = "%s - clicca per uscire";
-$a->strings["Click to authenticate to your home hub"] = "Clicca per autenticarti sul tuo server principale";
-$a->strings["Home Page"] = "Bacheca";
-$a->strings["Create an account"] = "Crea un account";
-$a->strings["Help"] = "Guida";
-$a->strings["Help and documentation"] = "Guida e documentazione";
-$a->strings["Apps"] = "Apps";
-$a->strings["Applications, utilities, links, games"] = "Applicazioni, utilità, link, giochi";
-$a->strings["Search site content"] = "Cerca nel sito";
-$a->strings["Directory"] = "Tutti i canali";
-$a->strings["Channel Locator"] = "Ricerca canali";
-$a->strings["Matrix"] = "La tua rete";
-$a->strings["Your matrix"] = "La tua rete";
-$a->strings["Mark all matrix notifications seen"] = "Segna come lette le notifiche della tua rete";
-$a->strings["Channel Home"] = "Bacheca del canale";
-$a->strings["Channel home"] = "Bacheca del canale";
-$a->strings["Mark all channel notifications seen"] = "Segna come lette le notifiche dei canali";
-$a->strings["Connections"] = "Contatti";
-$a->strings["Notices"] = "Notifiche";
-$a->strings["Notifications"] = "Notifiche";
-$a->strings["See all notifications"] = "Vedi tutte le notifiche";
-$a->strings["Mark all system notifications seen"] = "Segna come lette le notifiche di sistema";
-$a->strings["Mail"] = "Messaggi";
-$a->strings["Private mail"] = "Messaggi privati";
-$a->strings["See all private messages"] = "Guarda tutti i messaggi privati";
-$a->strings["Mark all private messages seen"] = "Segna come letti tutti i messaggi privati";
-$a->strings["Inbox"] = "In arrivo";
-$a->strings["Outbox"] = "Inviati";
-$a->strings["New Message"] = "Nuovo messaggio";
-$a->strings["Events"] = "Eventi";
-$a->strings["Event Calendar"] = "Calendario";
-$a->strings["See all events"] = "Guarda tutti gli eventi";
-$a->strings["Mark all events seen"] = "Marca come letti tutti gli eventi";
-$a->strings["Channel Select"] = "Gestisci i canali";
-$a->strings["Manage Your Channels"] = "Gestisci i contatti dei tuoi canali";
-$a->strings["Settings"] = "Impostazioni";
-$a->strings["Account/Channel Settings"] = "Impostazioni account e canali";
-$a->strings["Admin"] = "Amministrazione";
-$a->strings["Site Setup and Configuration"] = "Configurazione del sito";
-$a->strings["Nothing new here"] = "Niente di nuovo qui";
-$a->strings["Please wait..."] = "Attendere...";
-$a->strings["General Features"] = "Funzionalità di base";
-$a->strings["Content Expiration"] = "Scadenza";
-$a->strings["Remove posts/comments and/or private messages at a future time"] = "Elimina gli articoli, i commenti o i messaggi privati dopo che è trascorso del tempo";
-$a->strings["Multiple Profiles"] = "Profili multipli";
-$a->strings["Ability to create multiple profiles"] = "Abilitazione a creare profili multipli";
-$a->strings["Web Pages"] = "Pagine web";
-$a->strings["Provide managed web pages on your channel"] = "Attiva la creazione di pagine web sul tuo canale";
-$a->strings["Private Notes"] = "Note private";
-$a->strings["Enables a tool to store notes and reminders"] = "Abilita il riquadro per scrivere annotazioni";
-$a->strings["Extended Identity Sharing"] = "Condivisione avanzata dell'identità";
-$a->strings["Share your identity with all websites on the internet. When disabled, identity is only shared with sites in the matrix."] = "Rendi nota la tua identità a tutti i siti internet. Se disabilitato, la tua identità sarà comunicata solo ai siti red matrix.";
-$a->strings["Expert Mode"] = "Modalità esperto";
-$a->strings["Enable Expert Mode to provide advanced configuration options"] = "Abilita la modalità esperto per vedere le opzioni di configurazione avanzate";
-$a->strings["Premium Channel"] = "Canale premium";
-$a->strings["Allows you to set restrictions and terms on those that connect with your channel"] = "Ti permette di imporre delle restrizioni e dei termini d'uso a chi segue il canale";
-$a->strings["Post Composition Features"] = "Modalità di scrittura articoli";
-$a->strings["Post Preview"] = "Anteprima articolo";
-$a->strings["Allow previewing posts and comments before publishing them"] = "Abilita l'anteprima degli articoli e dei commenti prima di pubblicarli";
-$a->strings["Channel Sources"] = "Sorgenti del canale";
-$a->strings["Automatically import channel content from other channels or feeds"] = "Importa automaticamente il contenuto del canale da altri canali o feed";
-$a->strings["Even More Encryption"] = "Crittografia addizionale";
-$a->strings["Allow optional encryption of content end-to-end with a shared secret key"] = "Rendi possibile la crittografia dei contenuti tra mittente e destinatari con una chiave segreta";
-$a->strings["Network and Stream Filtering"] = "Filtraggio dei contenuti";
-$a->strings["Search by Date"] = "Ricerca per data";
-$a->strings["Ability to select posts by date ranges"] = "Per selezionare gli articoli in un intervallo tra date";
-$a->strings["Collections Filter"] = "Filtra per insiemi di canali";
-$a->strings["Enable widget to display Network posts only from selected collections"] = "Mostra il riquadro per filtrare gli articoli di certi insiemi di canali";
-$a->strings["Saved Searches"] = "Ricerche salvate";
-$a->strings["Save search terms for re-use"] = "Salva i termini delle ricerche per poterle ripetere";
-$a->strings["Network Personal Tab"] = "Attività personale";
-$a->strings["Enable tab to display only Network posts that you've interacted on"] = "Abilita il link per mostrare solamente i contenuti con cui hai interagito";
-$a->strings["Network New Tab"] = "Contenuti nuovi";
-$a->strings["Enable tab to display all new Network activity"] = "Abilita il link per visualizzare solo i nuovi contenuti";
-$a->strings["Affinity Tool"] = "Filtro per affinità";
-$a->strings["Filter stream activity by depth of relationships"] = "Permette di selezionare i contenuti in base al livello di amicizia";
-$a->strings["Suggest Channels"] = "Suggerisci canali";
-$a->strings["Show channel suggestions"] = "Mostra alcuni canali che potrebbero interessarti";
-$a->strings["Post/Comment Tools"] = "Gestione articoli e commenti";
-$a->strings["Edit Sent Posts"] = "Modifica gli articoli già inviati";
-$a->strings["Edit and correct posts and comments after sending"] = "Modifica e correggi gli articoli o i commenti anche dopo l'invio";
-$a->strings["Tagging"] = "Tag";
-$a->strings["Ability to tag existing posts"] = "Permetti l'aggiunta di tag su articoli già esistenti";
-$a->strings["Post Categories"] = "Categorie degli articoli";
-$a->strings["Add categories to your posts"] = "Abilita le categorie per i tuoi articoli";
-$a->strings["Ability to file posts under folders"] = "Abilita la raccolta dei tuoi articoli in cartelle";
-$a->strings["Dislike Posts"] = "Non mi piace";
-$a->strings["Ability to dislike posts/comments"] = "Abilità la funzionalità \"non mi piace\" per i tuoi articoli";
-$a->strings["Star Posts"] = "Articoli stella (preferiti)";
-$a->strings["Ability to mark special posts with a star indicator"] = "Mostra la stella per scegliere gli articoli preferiti";
-$a->strings["Tag Cloud"] = "Nuvola di tag";
-$a->strings["Provide a personal tag cloud on your channel page"] = "Mostra la nuvola dei tag che usi di più sulla pagina del tuo canale";
-$a->strings["created a new post"] = "Ha creato un nuovo articolo";
-$a->strings["commented on %s's post"] = "ha commentato l'articolo di %s";
-$a->strings["Site Admin"] = "Amministrazione sito";
-$a->strings["Address Book"] = "Rubrica";
-$a->strings["Mood"] = "Umore";
-$a->strings["Poke"] = "Poke";
-$a->strings["Probe"] = "Diagnostica";
-$a->strings["Suggest"] = "Suggerisci";
-$a->strings["Update"] = "Aggiorna";
-$a->strings["Install"] = "Installa";
-$a->strings["Purchase"] = "Acquista";
+$a->strings["[Red:Notify]"] = "[RedMatrix]";
+$a->strings["This event has been added to your calendar."] = "Questo evento è stato aggiunto al tuo calendario";
+$a->strings["A deleted group with this name was revived. Existing item permissions <strong>may</strong> apply to this group and any future members. If this is not what you intended, please create another group with a different name."] = "È stato ripristinato un insieme con lo stesso nome che era stato eliminato in precedenza. I permessi già presenti <strong>potrebbero</strong> rimanere validi per i nuovi canali. Se non vuoi che ciò accada, devi creare un altro insieme con un nome diverso.";
+$a->strings["Default privacy group for new contacts"] = "Insieme predefinito per i canali che inizi a seguire";
+$a->strings["All Channels"] = "Tutti i canali";
+$a->strings["edit"] = "modifica";
+$a->strings["Collections"] = "Insiemi di canali";
+$a->strings["Edit collection"] = "Modifica l'insieme di canali";
+$a->strings["Create a new collection"] = "Crea un nuovo insieme";
+$a->strings["Channels not in any collection"] = "Canali che non sono in un insieme";
+$a->strings["add"] = "aggiungi";
+$a->strings["Unable to obtain identity information from database"] = "Impossibile ottenere le informazioni di identificazione dal database";
+$a->strings["Empty name"] = "Nome vuoto";
+$a->strings["Name too long"] = "Nome troppo lungo";
+$a->strings["No account identifier"] = "Account senza identificativo";
+$a->strings["Nickname is required."] = "Il nome dell'account è obbligatorio.";
+$a->strings["Reserved nickname. Please choose another."] = "Nome utente riservato. Per favore scegline un altro.";
+$a->strings["Nickname has unsupported characters or is already being used on this site."] = "Il nome dell'account è già in uso oppure ha dei caratteri non supportati.";
+$a->strings["Unable to retrieve created identity"] = "Impossibile caricare l'identità creata";
+$a->strings["Default Profile"] = "Profilo predefinito";
+$a->strings["Friends"] = "Amici";
+$a->strings["Requested channel is not available."] = "Il canale che cerchi non è disponibile.";
+$a->strings["Requested profile is not available."] = "Il profilo richiesto non è disponibile.";
+$a->strings["Connect"] = "Aggiungi";
+$a->strings["Change profile photo"] = "Cambia la foto del profilo";
+$a->strings["Profiles"] = "Profili";
+$a->strings["Manage/edit profiles"] = "Gestisci/modifica i profili";
+$a->strings["Create New Profile"] = "Crea un nuovo profilo";
+$a->strings["Edit Profile"] = "Modifica il profilo";
+$a->strings["Profile Image"] = "Immagine del profilo";
+$a->strings["visible to everybody"] = "visibile a tutti";
+$a->strings["Edit visibility"] = "Cambia la visibilità";
+$a->strings["Gender:"] = "Sesso:";
+$a->strings["Status:"] = "Stato:";
+$a->strings["Homepage:"] = "Home page:";
+$a->strings["Online Now"] = "Online adesso";
+$a->strings["g A l F d"] = "g A l d F";
+$a->strings["F d"] = "d F";
+$a->strings["[today]"] = "[oggi]";
+$a->strings["Birthday Reminders"] = "Promemoria compleanni";
+$a->strings["Birthdays this week:"] = "Compleanni questa settimana:";
+$a->strings["[No description]"] = "[Nessuna descrizione]";
+$a->strings["Event Reminders"] = "Promemoria";
+$a->strings["Events this week:"] = "Eventi di questa settimana:";
+$a->strings["Profile"] = "Profilo";
+$a->strings["Full Name:"] = "Nome completo:";
+$a->strings["Like this channel"] = "Mi piace questo canale";
+$a->strings["j F, Y"] = "j F Y";
+$a->strings["j F"] = "j F";
+$a->strings["Birthday:"] = "Compleanno:";
+$a->strings["Age:"] = "Età:";
+$a->strings["for %1\$d %2\$s"] = "per %1\$d %2\$s";
+$a->strings["Sexual Preference:"] = "Preferenze sessuali:";
+$a->strings["Hometown:"] = "Città dove vivo:";
+$a->strings["Tags:"] = "Tag:";
+$a->strings["Political Views:"] = "Orientamento politico:";
+$a->strings["Religion:"] = "Religione:";
+$a->strings["About:"] = "Informazioni:";
+$a->strings["Hobbies/Interests:"] = "Interessi e hobby:";
+$a->strings["Likes:"] = "Mi piace:";
+$a->strings["Dislikes:"] = "Non mi piace:";
+$a->strings["Contact information and Social Networks:"] = "Contatti e social network:";
+$a->strings["My other channels:"] = "I miei altri canali:";
+$a->strings["Musical interests:"] = "Gusti musicali:";
+$a->strings["Books, literature:"] = "Libri, letteratura:";
+$a->strings["Television:"] = "Televisione:";
+$a->strings["Film/dance/culture/entertainment:"] = "Film, danza, cultura, intrattenimento:";
+$a->strings["Love/Romance:"] = "Amore:";
+$a->strings["Work/employment:"] = "Lavoro:";
+$a->strings["School/education:"] = "Scuola:";
+$a->strings["Like this thing"] = "Mi piace questo oggetto";
+$a->strings["Not a valid email address"] = "Email non valida";
+$a->strings["Your email domain is not among those allowed on this site"] = "Il dominio della tua email attualmente non è permesso su questo sito";
+$a->strings["Your email address is already registered at this site."] = "La tua email è già registrata su questo sito.";
+$a->strings["An invitation is required."] = "È necessario un invito.";
+$a->strings["Invitation could not be verified."] = "L'invito non può essere verificato.";
+$a->strings["Please enter the required information."] = "Inserisci le informazioni richieste.";
+$a->strings["Failed to store account information."] = "Non è stato possibile salvare le informazioni del tuo account.";
+$a->strings["Registration confirmation for %s"] = "Registrazione di %s confermata";
+$a->strings["Registration request at %s"] = "Richiesta di registrazione su %s";
+$a->strings["Administrator"] = "Amministratore";
+$a->strings["your registration password"] = "la password di registrazione";
+$a->strings["Registration details for %s"] = "Dettagli della registrazione di %s";
+$a->strings["Account approved."] = "Account approvato.";
+$a->strings["Registration revoked for %s"] = "Registrazione revocata per %s";
+$a->strings["Account verified. Please login."] = "Registrazione verificata. Adesso puoi effettuare login.";
+$a->strings["Click here to upgrade."] = "Clicca qui per aggiornare.";
+$a->strings["This action exceeds the limits set by your subscription plan."] = "Questa operazione supera i limiti del tuo abbonamento.";
+$a->strings["This action is not available under your subscription plan."] = "Questa operazione non è prevista dal tuo abbonamento.";
+$a->strings["Channel is blocked on this site."] = "Il canale è bloccato per questo sito.";
+$a->strings["Channel location missing."] = "Manca l'indirizzo del canale.";
+$a->strings["Response from remote channel was incomplete."] = "La risposta dal canale non è completa.";
+$a->strings["Channel was deleted and no longer exists."] = "Il canale è stato rimosso e non esiste più.";
+$a->strings["Protocol disabled."] = "Protocollo disabilitato.";
+$a->strings["Channel discovery failed."] = "La ricerca del canale non ha avuto successo.";
+$a->strings["local account not found."] = "l'account locale non è stato trovato.";
+$a->strings["Cannot connect to yourself."] = "Non puoi connetterti a te stesso.";
$a->strings["Public Timeline"] = "Diario pubblico";
-$a->strings["Missing room name"] = "Chat senza nome";
-$a->strings["Duplicate room name"] = "Il nome della chat è duplicato";
-$a->strings["Invalid room specifier."] = "Il nome della chat non è valido.";
-$a->strings["Room not found."] = "Chat non trovata.";
-$a->strings["Room is full"] = "La chat è al completo";
+$a->strings["Item was not found."] = "Elemento non trovato.";
+$a->strings["No source file."] = "Nessun file di origine.";
+$a->strings["Cannot locate file to replace"] = "Il file da sostituire non è stato trovato";
+$a->strings["Cannot locate file to revise/update"] = "Il file da aggiornare non è stato trovato";
+$a->strings["File exceeds size limit of %d"] = "Il file supera la dimensione massima di %d";
+$a->strings["You have reached your limit of %1$.0f Mbytes attachment storage."] = "Hai raggiunto il limite complessivo di %1$.0f Mbytes per gli allegati.";
+$a->strings["File upload failed. Possible system limit or action terminated."] = "Caricamento file fallito, potrebbe essere stato interrotto o potrebbe aver superato lo spazio assegnato.";
+$a->strings["Stored file could not be verified. Upload failed."] = "Il file non può essere verificato. Caricamento fallito.";
+$a->strings["Path not available."] = "Percorso non disponibile.";
+$a->strings["Empty pathname"] = "Il percorso del file è vuoto";
+$a->strings["duplicate filename or path"] = "il file o il percorso del file è duplicato";
+$a->strings["Path not found."] = "Percorso del file non trovato.";
+$a->strings["mkdir failed."] = "mkdir fallito.";
+$a->strings["database storage failed."] = "scrittura su database fallita.";
+$a->strings["Missing room name"] = "Area chat senza nome";
+$a->strings["Duplicate room name"] = "Il nome dell'area chat è duplicato";
+$a->strings["Invalid room specifier."] = "Il nome dell'area chat non è valido.";
+$a->strings["Room not found."] = "Area chat non trovata.";
+$a->strings["Room is full"] = "L'area chat è al completo";
+$a->strings["Image/photo"] = "Immagine";
+$a->strings["Encrypted content"] = "Contenuto crittografato";
+$a->strings["Install design element: "] = "Installa il componente di design:";
+$a->strings["QR code"] = "QR code";
+$a->strings["%1\$s wrote the following %2\$s %3\$s"] = "%1\$s ha scritto %2\$s %3\$s";
+$a->strings["post"] = "l'articolo";
+$a->strings["$1 spoiler"] = "$1 spoiler";
+$a->strings["$1 wrote:"] = "$1 ha scritto:";
$a->strings["channel"] = "canale";
$a->strings["%1\$s likes %2\$s's %3\$s"] = "A %1\$s piace %3\$s di %2\$s";
$a->strings["%1\$s doesn't like %2\$s's %3\$s"] = "A %1\$s non piace %3\$s di %2\$s";
$a->strings["%1\$s is now connected with %2\$s"] = "%1\$s adesso è connesso con %2\$s";
$a->strings["%1\$s poked %2\$s"] = "%1\$s ha mandato un poke a %2\$s";
$a->strings["__ctx:mood__ %1\$s is %2\$s"] = "%1\$s è %2\$s";
+$a->strings["Select"] = "Seleziona";
+$a->strings["Private Message"] = "Messaggio privato";
+$a->strings["Message signature validated"] = "Messaggio con firma verificata";
+$a->strings["Message signature incorrect"] = "Massaggio con firma non corretta";
$a->strings["View %s's profile @ %s"] = "Vedi il profilo di %s @ %s";
$a->strings["Categories:"] = "Categorie:";
$a->strings["Filed under:"] = "Classificato come:";
+$a->strings[" from %s"] = " da %s";
+$a->strings["last edited: %s"] = "ultima modifica: %s";
+$a->strings["Expires: %s"] = "Scadenza: %s";
$a->strings["View in context"] = "Vedi nel contesto";
+$a->strings["Please wait"] = "Attendere";
$a->strings["remove"] = "rimuovi";
$a->strings["Loading..."] = "Caricamento in corso...";
$a->strings["Delete Selected Items"] = "Elimina gli oggetti selezionati";
$a->strings["View Source"] = "Vedi il sorgente";
$a->strings["Follow Thread"] = "Segui la discussione";
$a->strings["View Status"] = "Guarda il messaggio di stato";
+$a->strings["View Profile"] = "Profilo";
$a->strings["View Photos"] = "Guarda le foto";
$a->strings["Matrix Activity"] = "Attività nella tua rete";
$a->strings["Edit Contact"] = "Modifica il contatto";
$a->strings["Send PM"] = "Invia messaggio privato";
+$a->strings["Poke"] = "Poke";
$a->strings["%s likes this."] = "Piace a %s.";
$a->strings["%s doesn't like this."] = "Non piace a %s.";
$a->strings["<span %1\$s>%2\$d people</span> like this."] = array(
@@ -783,13 +564,14 @@ $a->strings["Set your location"] = "La tua località";
$a->strings["set location"] = "la tua località";
$a->strings["Clear browser location"] = "Rimuovi la località data dal browser";
$a->strings["clear location"] = "rimuovi la località";
-$a->strings["Set title"] = "Scegli un titolo";
-$a->strings["Categories (comma-separated list)"] = "Categorie (separate da virgola)";
+$a->strings["Title (optional)"] = "Titolo (opzionale)";
+$a->strings["Categories (optional, comma-separated list)"] = "Categorie (lista separata da virgole)";
$a->strings["Permission settings"] = "Impostazioni permessi";
$a->strings["permissions"] = "permessi";
$a->strings["Public post"] = "Articolo pubblico";
$a->strings["Example: bob@example.com, mary@example.com"] = "Per esempio: mario@esempio.com, simona@esempio.com";
$a->strings["Set expiration date"] = "Data di scadenza";
+$a->strings["Encrypt text"] = "Crittografia del testo";
$a->strings["OK"] = "OK";
$a->strings["Cancel"] = "Annulla";
$a->strings["Discover"] = "Scopri";
@@ -810,14 +592,14 @@ $a->strings["Channel"] = "Canale";
$a->strings["Status Messages and Posts"] = "Articoli e messaggi di stato";
$a->strings["About"] = "Informazioni";
$a->strings["Profile Details"] = "Dettagli del profilo";
+$a->strings["Photos"] = "Foto";
$a->strings["Files and Storage"] = "Archivio file";
-$a->strings["Chatrooms"] = "Chat";
+$a->strings["Chatrooms"] = "Area chat";
+$a->strings["Bookmarks"] = "Segnalibri";
$a->strings["Saved Bookmarks"] = "Segnalibri salvati";
+$a->strings["Webpages"] = "Pagine web";
$a->strings["Manage Webpages"] = "Gestisci le pagine web";
-$a->strings["Visible to everybody"] = "Visibile a tutti";
-$a->strings["Show"] = "Mostra";
-$a->strings["Don't show"] = "Non mostrare";
-$a->strings["Permissions"] = "Permessi";
+$a->strings["Apps"] = "Apps";
$a->strings["System"] = "Sistema";
$a->strings["Create Personal App"] = "Crea una app personale";
$a->strings["Edit Personal App"] = "Modifica una app personale";
@@ -833,7 +615,7 @@ $a->strings["Remove term"] = "Rimuovi termine";
$a->strings["Archives"] = "Archivi";
$a->strings["Refresh"] = "Aggiorna";
$a->strings["Me"] = "Io";
-$a->strings["Best Friends"] = "Buoni amici";
+$a->strings["Best Friends"] = "Migliori amici";
$a->strings["Co-workers"] = "Colleghi";
$a->strings["Former Friends"] = "Ex amici";
$a->strings["Acquaintances"] = "Conoscenti";
@@ -842,33 +624,298 @@ $a->strings["Account settings"] = "Il tuo account";
$a->strings["Channel settings"] = "Impostazioni del canale";
$a->strings["Additional features"] = "Funzionalità opzionali";
$a->strings["Feature settings"] = "Componenti aggiuntivi";
-$a->strings["Display settings"] = "Impostazioni grafiche";
+$a->strings["Display settings"] = "Aspetto";
$a->strings["Connected apps"] = "App connesse";
$a->strings["Export channel"] = "Esporta il canale";
-$a->strings["Automatic Permissions (Advanced)"] = "Permessi predefiniti (avanzato)";
+$a->strings["Connection Default Permissions"] = "Permessi predefiniti dei nuovi contatti";
$a->strings["Premium Channel Settings"] = "Canale premium - impostazioni";
+$a->strings["Settings"] = "Impostazioni";
+$a->strings["Messages"] = "Messaggi";
$a->strings["Check Mail"] = "Controlla i messaggi";
-$a->strings["Chat Rooms"] = "Chat attive";
-$a->strings["Bookmarked Chatrooms"] = "Chat nei segnalibri";
-$a->strings["Suggested Chatrooms"] = "Chat suggerite";
-$a->strings["Channel is blocked on this site."] = "Il canale è bloccato per questo sito.";
-$a->strings["Channel location missing."] = "Manca l'indirizzo del canale.";
-$a->strings["Response from remote channel was incomplete."] = "La risposta dal canale non è completa.";
-$a->strings["Channel was deleted and no longer exists."] = "Il canale è stato rimosso e non esiste più.";
-$a->strings["Channel discovery failed."] = "La ricerca del canale non ha avuto successo.";
-$a->strings["local account not found."] = "l'account locale non è stato trovato.";
-$a->strings["Cannot connect to yourself."] = "Non puoi connetterti a te stesso.";
-$a->strings["Click here to upgrade."] = "Clicca qui per aggiornare.";
-$a->strings["This action exceeds the limits set by your subscription plan."] = "Questa operazione esce dai termini del tuo abbonamento.";
-$a->strings["This action is not available under your subscription plan."] = "Questa operazione non è prevista dal tuo abbonamento.";
-$a->strings["Remote authentication blocked. You are logged into this site locally. Please logout and retry."] = "L'autenticazione remota non è disponibile. Hai accesso solamente a questo sito. Puoi provare ad uscire per tentare di nuovo.";
-$a->strings["Welcome %s. Remote authentication successful."] = "Ciao %s. La tua autenticazione da remoto è avvenuta con successo.";
+$a->strings["New Message"] = "Nuovo messaggio";
+$a->strings["Chat Rooms"] = "Aree chat attive";
+$a->strings["Bookmarked Chatrooms"] = "Aree chat nei segnalibri";
+$a->strings["Suggested Chatrooms"] = "Aree chat suggerite";
+$a->strings["photo/image"] = "foto/immagine";
+$a->strings["Invalid data packet"] = "Dati non validi";
+$a->strings["Unable to verify channel signature"] = "Impossibile verificare la firma elettronica del canale";
+$a->strings["Unable to verify site signature for %s"] = "Impossibile verificare la firma elettronica del sito %s";
+$a->strings["Save to Folder"] = "Salva nella cartella";
+$a->strings["View all"] = "Vedi tutto";
+$a->strings["__ctx:noun__ Dislike"] = array(
+ 0 => "Non mi piace",
+ 1 => "Non mi piace",
+);
+$a->strings["Add Star"] = "Aggiungi ai preferiti";
+$a->strings["Remove Star"] = "Rimuovi dai preferiti";
+$a->strings["Toggle Star Status"] = "Attiva/disattiva preferito";
+$a->strings["starred"] = "preferito";
+$a->strings["Add Tag"] = "Aggiungi un tag";
+$a->strings["I like this (toggle)"] = "Attiva/disattiva Mi piace";
+$a->strings["I don't like this (toggle)"] = "Attiva/disattiva Non mi piace";
+$a->strings["Share This"] = "Condividi";
+$a->strings["share"] = "condividi";
+$a->strings["%d comment"] = array(
+ 0 => "%d commento",
+ 1 => "%d commenti",
+);
+$a->strings["View %s's profile - %s"] = "Guarda il profilo di %s - %s";
+$a->strings["to"] = "a";
+$a->strings["via"] = "via";
+$a->strings["Wall-to-Wall"] = "Da bacheca a bacheca";
+$a->strings["via Wall-To-Wall:"] = "da bacheca a bacheca:";
+$a->strings["Save Bookmarks"] = "Salva segnalibro";
+$a->strings["Add to Calendar"] = "Aggiungi al calendario";
+$a->strings["Mark all seen"] = "Marca tutto come letto";
+$a->strings["__ctx:noun__ Likes"] = "Mi piace";
+$a->strings["__ctx:noun__ Dislikes"] = "Non mi piace";
+$a->strings["[+] show all"] = "[+] mostra tutto";
+$a->strings["This is you"] = "Questo sei tu";
+$a->strings["Comment"] = "Commento";
+$a->strings["Submit"] = "Salva";
+$a->strings["Bold"] = "Grassetto";
+$a->strings["Italic"] = "Corsivo";
+$a->strings["Underline"] = "Sottolineato";
+$a->strings["Quote"] = "Citazione";
+$a->strings["Code"] = "Codice";
+$a->strings["Image"] = "Immagine";
+$a->strings["Link"] = "Link";
+$a->strings["Video"] = "Video";
+$a->strings["Miscellaneous"] = "Altro";
+$a->strings["YYYY-MM-DD or MM-DD"] = "AAAA-MM-GG oppure MM-GG";
+$a->strings["never"] = "mai";
+$a->strings["less than a second ago"] = "meno di un secondo fa";
+$a->strings["year"] = "anno";
+$a->strings["years"] = "anni";
+$a->strings["month"] = "mese";
+$a->strings["months"] = "mesi";
+$a->strings["week"] = "settimana";
+$a->strings["weeks"] = "settimane";
+$a->strings["day"] = "giorno";
+$a->strings["days"] = "giorni";
+$a->strings["hour"] = "ora";
+$a->strings["hours"] = "ore";
+$a->strings["minute"] = "minuto";
+$a->strings["minutes"] = "minuti";
+$a->strings["second"] = "secondo";
+$a->strings["seconds"] = "secondi";
+$a->strings["%1\$d %2\$s ago"] = "%1\$d %2\$s fa";
+$a->strings["%1\$s's birthday"] = "Compleanno di %1\$s";
+$a->strings["Happy Birthday %1\$s"] = "Buon compleanno %1\$s";
+$a->strings["Site Admin"] = "Amministrazione sito";
+$a->strings["Address Book"] = "Rubrica";
+$a->strings["Login"] = "Accedi";
+$a->strings["Channel Manager"] = "Gestione canali";
+$a->strings["Matrix"] = "RedMatrix";
+$a->strings["Channel Home"] = "Bacheca del canale";
+$a->strings["Events"] = "Eventi";
+$a->strings["Directory"] = "Elenco pubblico";
+$a->strings["Help"] = "Guida";
+$a->strings["Mail"] = "Messaggi";
+$a->strings["Mood"] = "Umore";
+$a->strings["Chat"] = "Area chat";
+$a->strings["Probe"] = "Diagnostica";
+$a->strings["Suggest"] = "Suggerisci";
+$a->strings["Random Channel"] = "Canale casuale";
+$a->strings["Invite"] = "Invita";
+$a->strings["Features"] = "Funzionalità";
+$a->strings["Language"] = "Lingua";
+$a->strings["Post"] = "Articolo";
+$a->strings["Profile Photo"] = "Foto del profilo";
+$a->strings["Update"] = "Aggiorna";
+$a->strings["Install"] = "Installa";
+$a->strings["Purchase"] = "Acquista";
+$a->strings["New window"] = "Nuova finestra";
+$a->strings["Open the selected location in a different window or browser tab"] = "Apri l'indirizzo selezionato in una nuova scheda o finestra";
+$a->strings["User '%s' deleted"] = "Utente '%s' eliminato";
+$a->strings["Delete this item?"] = "Eliminare questo elemento?";
+$a->strings["[-] show less"] = "[-] riduci";
+$a->strings["[+] expand"] = "[+] mostra tutto";
+$a->strings["[-] collapse"] = "[-] riduci";
+$a->strings["Password too short"] = "Password troppo corta";
+$a->strings["Passwords do not match"] = "Le password non corrispondono";
+$a->strings["everybody"] = "tutti";
+$a->strings["Secret Passphrase"] = "Chiave segreta";
+$a->strings["Passphrase hint"] = "Suggerimento per la chiave segreta";
+$a->strings["Notice: Permissions have changed but have not yet been submitted."] = "Nota: i permessi sono stati modificati ma non ancora salvati.";
+$a->strings["close all"] = "chiudi tutto";
+$a->strings["Nothing new here"] = "Niente di nuovo qui";
+$a->strings["timeago.prefixAgo"] = "timeago.prefixAgo";
+$a->strings["timeago.prefixFromNow"] = "timeago.prefixFromNow";
+$a->strings["ago"] = "fa";
+$a->strings["from now"] = "da adesso";
+$a->strings["less than a minute"] = "meno di un minuto";
+$a->strings["about a minute"] = "circa un minuto";
+$a->strings["%d minutes"] = "%d minuti";
+$a->strings["about an hour"] = "circa un’ora";
+$a->strings["about %d hours"] = "circa %d ore";
+$a->strings["a day"] = "un giorno";
+$a->strings["%d days"] = "%d giorni";
+$a->strings["about a month"] = "circa un mese";
+$a->strings["%d months"] = "%d mesi";
+$a->strings["about a year"] = "circa un anno";
+$a->strings["%d years"] = "%d anni";
+$a->strings[" "] = " ";
+$a->strings["timeago.numbers"] = "timeago.numbers";
+$a->strings["Male"] = "Maschio";
+$a->strings["Female"] = "Femmina";
+$a->strings["Currently Male"] = "Al momento maschio";
+$a->strings["Currently Female"] = "Al momento femmina";
+$a->strings["Mostly Male"] = "Prevalentemente maschio";
+$a->strings["Mostly Female"] = "Prevalentemente femmina";
+$a->strings["Transgender"] = "Transgender";
+$a->strings["Intersex"] = "Intersex";
+$a->strings["Transsexual"] = "Transessuale";
+$a->strings["Hermaphrodite"] = "Ermafrodito";
+$a->strings["Neuter"] = "Neutro";
+$a->strings["Non-specific"] = "Non specificato";
+$a->strings["Undecided"] = "Indeciso";
+$a->strings["Males"] = "Maschi";
+$a->strings["Females"] = "Femmine";
+$a->strings["Gay"] = "Gay";
+$a->strings["Lesbian"] = "Lesbica";
+$a->strings["No Preference"] = "Senza preferenza";
+$a->strings["Bisexual"] = "Bisessuale";
+$a->strings["Autosexual"] = "Autosessuale";
+$a->strings["Abstinent"] = "Astinente";
+$a->strings["Virgin"] = "Vergine";
+$a->strings["Deviant"] = "Deviato";
+$a->strings["Fetish"] = "Feticista";
+$a->strings["Oodles"] = "Un sacco";
+$a->strings["Nonsexual"] = "Asessuato";
+$a->strings["Single"] = "Single";
+$a->strings["Lonely"] = "Da solo";
+$a->strings["Available"] = "Disponibile";
+$a->strings["Unavailable"] = "Non disponibile";
+$a->strings["Has crush"] = "Ha una cotta";
+$a->strings["Infatuated"] = "Infatuato/a";
+$a->strings["Dating"] = "Disponibile a un incontro";
+$a->strings["Unfaithful"] = "Infedele";
+$a->strings["Sex Addict"] = "Sesso-dipendente";
+$a->strings["Friends/Benefits"] = "Amici con qualcosa in più";
+$a->strings["Casual"] = "Casual";
+$a->strings["Engaged"] = "Impegnato";
+$a->strings["Married"] = "Sposato/a";
+$a->strings["Imaginarily married"] = "Con matrimonio immaginario";
+$a->strings["Partners"] = "Partner";
+$a->strings["Cohabiting"] = "Convivente";
+$a->strings["Common law"] = "Matrimonio regolare";
+$a->strings["Happy"] = "Felice";
+$a->strings["Not looking"] = "Non in cerca";
+$a->strings["Swinger"] = "Scambista";
+$a->strings["Betrayed"] = "Tradito/a";
+$a->strings["Separated"] = "Separato/a";
+$a->strings["Unstable"] = "Instabile";
+$a->strings["Divorced"] = "Divorziato/a";
+$a->strings["Imaginarily divorced"] = "Sogna il divorzio";
+$a->strings["Widowed"] = "Vedovo/a";
+$a->strings["Uncertain"] = "Incerto/a";
+$a->strings["It's complicated"] = "Relazione complicata";
+$a->strings["Don't care"] = "Chi se ne frega";
+$a->strings["Ask me"] = "Chiedimelo";
+$a->strings["Logout"] = "Esci";
+$a->strings["End this session"] = "Chiudi questa sessione";
+$a->strings["Home"] = "Bacheca";
+$a->strings["Your posts and conversations"] = "I tuoi articoli e conversazioni";
+$a->strings["Your profile page"] = "Il tuo profilo";
+$a->strings["Edit Profiles"] = "Modifica i profili";
+$a->strings["Manage/Edit profiles"] = "Gestisci/modifica i profili";
+$a->strings["Edit your profile"] = "Modifica il profilo";
+$a->strings["Your photos"] = "Le tue foto";
+$a->strings["Your files"] = "I tuoi file";
+$a->strings["Your chatrooms"] = "Le tue aree chat";
+$a->strings["Your bookmarks"] = "I tuoi segnalibri";
+$a->strings["Your webpages"] = "Le tue pagine web";
+$a->strings["Sign in"] = "Accedi";
+$a->strings["%s - click to logout"] = "%s - clicca per uscire";
+$a->strings["Remote authentication"] = "Autenticazione magica dal tuo server";
+$a->strings["Click to authenticate to your home hub"] = "Clicca per autenticarti sul tuo server principale";
+$a->strings["Home Page"] = "Bacheca";
+$a->strings["Register"] = "Iscriviti";
+$a->strings["Create an account"] = "Crea un account";
+$a->strings["Help and documentation"] = "Guida e documentazione";
+$a->strings["Applications, utilities, links, games"] = "Applicazioni, utilità, link, giochi";
+$a->strings["Search site content"] = "Cerca nel sito";
+$a->strings["Channel Directory"] = "Elenco pubblico canali";
+$a->strings["Your matrix"] = "La tua rete";
+$a->strings["Mark all matrix notifications seen"] = "Segna come lette le notifiche della tua rete";
+$a->strings["Channel home"] = "Bacheca del canale";
+$a->strings["Mark all channel notifications seen"] = "Segna come lette le notifiche del canale";
+$a->strings["Connections"] = "Contatti";
+$a->strings["Notices"] = "Avvisi";
+$a->strings["Notifications"] = "Notifiche";
+$a->strings["See all notifications"] = "Vedi tutte le notifiche";
+$a->strings["Mark all system notifications seen"] = "Segna come lette le notifiche di sistema";
+$a->strings["Private mail"] = "Messaggi privati";
+$a->strings["See all private messages"] = "Guarda tutti i messaggi privati";
+$a->strings["Mark all private messages seen"] = "Segna come letti tutti i messaggi privati";
+$a->strings["Inbox"] = "In arrivo";
+$a->strings["Outbox"] = "Inviati";
+$a->strings["Event Calendar"] = "Calendario";
+$a->strings["See all events"] = "Guarda tutti gli eventi";
+$a->strings["Mark all events seen"] = "Marca come letti tutti gli eventi";
+$a->strings["Manage Your Channels"] = "Gestisci i tuoi canali";
+$a->strings["Account/Channel Settings"] = "Impostazioni dell'account e del canale";
+$a->strings["Admin"] = "Amministrazione";
+$a->strings["Site Setup and Configuration"] = "Installazione e configurazione del sito";
+$a->strings["@name, #tag, content"] = "@nome, #tag, testo";
+$a->strings["Please wait..."] = "Attendere...";
+$a->strings["The form security token was not correct. This probably happened because the form has been opened for too long (>3 hours) before submitting it."] = "I controlli di sicurezza sono falliti. Probabilmente è accaduto perché la pagina è stata tenuta aperta troppo a lungo (ore?) prima di inviare il contenuto.";
+$a->strings["Set your current mood and tell your friends"] = "Scegli il tuo umore attuale per mostrarlo agli amici";
+$a->strings["Maximum daily site registrations exceeded. Please try again tomorrow."] = "È stato superato il numero massimo giornaliero di registrazioni a questo sito. Riprova domani!";
+$a->strings["Please indicate acceptance of the Terms of Service. Registration failed."] = "Impossibile proseguire. Devi prima accettare le Condizioni d'Uso del servizio.";
+$a->strings["Passwords do not match."] = "Le password non corrispondono.";
+$a->strings["Registration successful. Please check your email for validation instructions."] = "La registrazione è terminata correttamente. Per continuare controlla l'email che ti è stata inviata.";
+$a->strings["Your registration is pending approval by the site owner."] = "La tua richiesta è in attesa di approvazione da parte dell'amministratore del sito.";
+$a->strings["Your registration can not be processed."] = "La tua registrazione non puo' essere processata.";
+$a->strings["Registration on this site/hub is by approval only."] = "La registrazione su questo sito è soggetta ad approvazione.";
+$a->strings["<a href=\"pubsites\">Register at another affiliated site/hub</a>"] = "<a href=\"pubsites\">Registrati su un altro server affiliato</a>";
+$a->strings["This site has exceeded the number of allowed daily account registrations. Please try again tomorrow."] = "Questo sito ha superato il numero di registrazioni giornaliere consentite. Prova di nuovo domani.";
+$a->strings["Terms of Service"] = "Condizioni d'Uso";
+$a->strings["I accept the %s for this website"] = "Accetto le %s di questo sito";
+$a->strings["I am over 13 years of age and accept the %s for this website"] = "Ho più di 13 anni e accetto le %s di questo sito";
+$a->strings["Registration"] = "Registrazione";
+$a->strings["Membership on this site is by invitation only."] = "Per registrarsi su questo sito è necessario un invito.";
+$a->strings["Please enter your invitation code"] = "Inserisci il codice dell'invito";
+$a->strings["Your email address"] = "Il tuo indirizzo email";
+$a->strings["Choose a password"] = "Scegli una password";
+$a->strings["Please re-enter your password"] = "Ripeti la password per verifica";
+$a->strings["Menu not found."] = "Menù non trovato.";
+$a->strings["Menu element updated."] = "L'elemento del menù è stato aggiornato.";
+$a->strings["Unable to update menu element."] = "Non è possibile aggiornare l'elemento del menù.";
+$a->strings["Menu element added."] = "Elemento aggiunto al menù.";
+$a->strings["Unable to add menu element."] = "Impossibile aggiungere l'elemento al menù.";
+$a->strings["Not found."] = "Non trovato.";
+$a->strings["Manage Menu Elements"] = "Gestione elementi del menù";
+$a->strings["Edit menu"] = "Modifica il menù";
+$a->strings["Edit element"] = "Modifica l'elemento";
+$a->strings["Drop element"] = "Elimina l'elemento";
+$a->strings["New element"] = "Nuovo elemento";
+$a->strings["Edit this menu container"] = "Modifica il contenitore del menù";
+$a->strings["Add menu element"] = "Aggiungi un elemento al menù";
+$a->strings["Delete this menu item"] = "Elimina questo elemento del menù";
+$a->strings["Edit this menu item"] = "Modifica questo elemento del menù";
+$a->strings["New Menu Element"] = "Nuovo elemento del menù";
+$a->strings["Menu Item Permissions"] = "Permessi del menu";
+$a->strings["(click to open/close)"] = "(clicca per aprire/chiudere)";
+$a->strings["Link text"] = "Testo del link";
+$a->strings["URL of link"] = "Indirizzo del link";
+$a->strings["Use RedMatrix magic-auth if available"] = "Usa l'autenticazione magica di RedMatrix, se disponibile";
+$a->strings["Open link in new window"] = "Apri il link in una nuova finestra";
+$a->strings["Order in list"] = "Ordine dell'elenco";
+$a->strings["Higher numbers will sink to bottom of listing"] = "I numeri più alti andranno in fondo all'elenco";
+$a->strings["Menu item not found."] = "L'elemento del menù non è stato trovato.";
+$a->strings["Menu item deleted."] = "L'elemento del menù è stato eliminato.";
+$a->strings["Menu item could not be deleted."] = "L'elemento del menù non può essere eliminato.";
+$a->strings["Edit Menu Element"] = "Modifica l'elemento del menù";
+$a->strings["Modify"] = "Modifica";
+$a->strings["Some blurb about what to do when you're new here"] = "Qualche suggerimento per i nuovi utenti su cosa fare";
$a->strings["Name is required"] = "Il nome è obbligatorio";
-$a->strings["Key and Secret are required"] = "Chiave e Segreto sono richiesti";
+$a->strings["Key and Secret are required"] = "Key e Secret sono richiesti";
$a->strings["Passwords do not match. Password unchanged."] = "Le password non corrispondono. Password non cambiata.";
$a->strings["Empty passwords are not allowed. Password unchanged."] = "Le password non possono essere vuote. Password non cambiata.";
$a->strings["Password changed."] = "Password cambiata.";
-$a->strings["Password update failed. Please try again."] = "Aggiornamento password fallito. Prova ancora.";
+$a->strings["Password update failed. Please try again."] = "Modifica password fallita. Prova ancora.";
$a->strings["Not valid email."] = "Email non valida.";
$a->strings["Protected email address. Cannot change to that email."] = "È un indirizzo email riservato. Non puoi sceglierlo.";
$a->strings["System failure storing new email. Please try again."] = "Errore di sistema. Non è stato possibile memorizzare il tuo messaggio, riprova per favore.";
@@ -896,6 +943,7 @@ $a->strings["Confirm:"] = "Conferma:";
$a->strings["Leave password fields blank unless changing"] = "Lascia questi campi in bianco per non cambiare la password";
$a->strings["Email Address:"] = "Indirizzo email:";
$a->strings["Remove Account"] = "Elimina l'account";
+$a->strings["Remove this account from this server including all its channels"] = "Elimina l'account da questo server, inclusi tutti i canali";
$a->strings["Warning: This action is permanent and cannot be reversed."] = "Attenzione: questa azione è permanente e non potrà più essere annullata.";
$a->strings["Off"] = "Off";
$a->strings["On"] = "On";
@@ -903,15 +951,24 @@ $a->strings["Additional Features"] = "Funzionalità opzionali";
$a->strings["Connector Settings"] = "Impostazioni del connettore";
$a->strings["No special theme for mobile devices"] = "Nessun tema per dispositivi mobili";
$a->strings["%s - (Experimental)"] = "%s - (Sperimentale)";
-$a->strings["Display Settings"] = "Impostazioni grafiche";
-$a->strings["Display Theme:"] = "Tema per monitor:";
+$a->strings["mobile"] = "mobile";
+$a->strings["Display Settings"] = "Aspetto";
+$a->strings["Display Theme:"] = "Tema per schermi medio grandi:";
$a->strings["Mobile Theme:"] = "Tema per dispositivi mobili:";
+$a->strings["Enable user zoom on mobile devices"] = "Attiva la possibilità di fare zoom sui dispositivi mobili";
$a->strings["Update browser every xx seconds"] = "Aggiorna il browser ogni x secondi";
$a->strings["Minimum of 10 seconds, no maximum"] = "Minimo 10 secondi, nessun limite massimo";
$a->strings["Maximum number of conversations to load at any time:"] = "Massimo numero di conversazioni da mostrare ogni volta:";
$a->strings["Maximum of 100 items"] = "Massimo 100";
$a->strings["Don't show emoticons"] = "Non mostrare le emoticons";
-$a->strings["System Page Layout Editor - (advanced)"] = "Modifica i layout di sistema - (avanzato)";
+$a->strings["Link post titles to source"] = "Il link del titolo di un articolo porta al sito originale";
+$a->strings["System Page Layout Editor - (advanced)"] = "Modifica i layout di sistema (avanzato)";
+$a->strings["Use blog/list mode on channel page"] = "Mostra il canale nella modalità blog";
+$a->strings["(comments displayed separately)"] = "(i commenti sono mostrati separatamente)";
+$a->strings["Use blog/list mode on matrix page"] = "Mostra la tua rete in modalità blog";
+$a->strings["Channel page max height of content (in pixels)"] = "Altezza massima dei contenuti del canale (in pixel)";
+$a->strings["click to expand content exceeding this height"] = "dovrai cliccare per mostrare i contenuti di dimensioni maggiori";
+$a->strings["Matrix page max height of content (in pixels)"] = "Altezza massima dei contenuti della tua rete (in pixel)";
$a->strings["Nobody except yourself"] = "Nessuno tranne te";
$a->strings["Only those you specifically allow"] = "Solo chi riceve il mio permesso";
$a->strings["Approved connections"] = "Contatti approvati";
@@ -920,10 +977,10 @@ $a->strings["Anybody on this website"] = "Chiunque su questo sito";
$a->strings["Anybody in this network"] = "Chiunque su Red";
$a->strings["Anybody authenticated"] = "Chiunque sia autenticato";
$a->strings["Anybody on the internet"] = "Chiunque su internet";
-$a->strings["Publish your default profile in the network directory"] = "Pubblica il mio profilo predefinito sull'elenco pubblico dei canali";
+$a->strings["Publish your default profile in the network directory"] = "Mostra il mio profilo predefinito nell'elenco pubblico dei canali";
$a->strings["No"] = "No";
$a->strings["Yes"] = "Si";
-$a->strings["Allow us to suggest you as a potential friend to new members?"] = "Vuoi essere suggerito come potenziale amico ai nuovi membri?";
+$a->strings["Allow us to suggest you as a potential friend to new members?"] = "Vuoi essere suggerito come amico ai nuovi membri?";
$a->strings["or"] = "o";
$a->strings["Your channel address is"] = "L'indirizzo del tuo canale è";
$a->strings["Channel Settings"] = "Impostazioni del canale";
@@ -935,13 +992,14 @@ $a->strings["Use Browser Location:"] = "Usa la località rilevata dal browser:";
$a->strings["Adult Content"] = "Contenuto per adulti";
$a->strings["This channel frequently or regularly publishes adult content. (Please tag any adult material and/or nudity with #NSFW)"] = "Questo canale pubblica frequentemente contenuto per adulti. (I contenuti per adulti vanno taggati #NSFW - Not Safe For Work)";
$a->strings["Security and Privacy Settings"] = "Impostazioni di sicurezza e privacy";
+$a->strings["Your permissions are already configured. Click to view/adjust"] = "I tuoi permessi sono già stati configurati. Clicca per vederli o modificarli";
$a->strings["Hide my online presence"] = "Non mostrare la mia presenza online";
$a->strings["Prevents displaying in your profile that you are online"] = "Non mostra sul tuo profilo che sei online";
$a->strings["Simple Privacy Settings:"] = "Impostazioni di privacy semplificate";
$a->strings["Very Public - <em>extremely permissive (should be used with caution)</em>"] = "Tutto pubblico - <em>estremamente permissivo (da usare con cautela)</em>";
$a->strings["Typical - <em>default public, privacy when desired (similar to social network permissions but with improved privacy)</em>"] = "Standard - <em>contenuti normalmente pubblici, ma anche privati se necessario (simile ai social network ma con privacy migliorata)</em>";
$a->strings["Private - <em>default private, never open or public</em>"] = "Privato - <em>contenuti normalmente privati, nulla è aperto o pubblico</em>";
-$a->strings["Blocked - <em>default blocked to/from everybody</em>"] = "Bloccato - <em>bloccato in ricezione e invio</em>";
+$a->strings["Blocked - <em>default blocked to/from everybody</em>"] = "Bloccato - <em>bloccato in invio e ricezione dei contenuti</em>";
$a->strings["Allow others to tag your posts"] = "Permetti ad altri di taggare i tuoi articoli";
$a->strings["Often used by the community to retro-actively flag inappropriate content"] = "Usato spesso dalla comunità per marcare contenuti inappropriati già esistenti";
$a->strings["Advanced Privacy Settings"] = "Impostazioni di privacy avanzate";
@@ -950,7 +1008,7 @@ $a->strings["0 or blank prevents expiration"] = "Lascia vuoto oppure 0 per non i
$a->strings["Maximum Friend Requests/Day:"] = "Numero massimo giornaliero di richieste di amicizia:";
$a->strings["May reduce spam activity"] = "Serve e ridurre lo spam";
$a->strings["Default Post Permissions"] = "Permessi predefiniti per gli articoli";
-$a->strings["(click to open/close)"] = "(clicca per aprire/chiudere)";
+$a->strings["Channel permissions category:"] = "Categorie di permessi dei canali:";
$a->strings["Maximum private messages per day from unknown people:"] = "Numero massimo giornaliero di messaggi privati da utenti sconosciuti:";
$a->strings["Useful to reduce spamming"] = "Serve e ridurre lo spam";
$a->strings["Notification Settings"] = "Impostazioni di notifica";
@@ -967,186 +1025,264 @@ $a->strings["You receive a private message"] = "Ricevi un messaggio privato";
$a->strings["You receive a friend suggestion"] = "Ti viene suggerito un amico";
$a->strings["You are tagged in a post"] = "Sei taggato in un articolo";
$a->strings["You are poked/prodded/etc. in a post"] = "Ricevi un poke in un articolo";
+$a->strings["Show visual notifications including:"] = "Mostra queste notifiche a schermo:";
+$a->strings["Unseen matrix activity"] = "Nuove attività nella rete";
+$a->strings["Unseen channel activity"] = "Novità nei canali";
+$a->strings["Unseen private messages"] = "Nuovi messaggi privati";
+$a->strings["Recommended"] = "Consigliato";
+$a->strings["Upcoming events"] = "Prossimi eventi";
+$a->strings["Events today"] = "Eventi di oggi";
+$a->strings["Upcoming birthdays"] = "Prossimi compleanni";
+$a->strings["Not available in all themes"] = "Non disponibile in tutti i temi";
+$a->strings["System (personal) notifications"] = "Notifiche personali dal sistema";
+$a->strings["System info messages"] = "Notifiche di sistema";
+$a->strings["System critical alerts"] = "Avvisi critici di sistema";
+$a->strings["New connections"] = "Nuovi contatti";
+$a->strings["System Registrations"] = "Registrazioni";
+$a->strings["Notify me of events this many days in advance"] = "Giorni di anticipo per notificare gli eventi";
+$a->strings["Must be greater than 0"] = "Maggiore di 0";
$a->strings["Advanced Account/Page Type Settings"] = "Impostazioni avanzate";
-$a->strings["Change the behaviour of this account for special situations"] = "Cambia il funzionamento di questo account in situazioni particolari";
+$a->strings["Change the behaviour of this account for special situations"] = "Cambia il funzionamento di questo account per necessità particolari";
$a->strings["Please enable expert mode (in <a href=\"settings/features\">Settings > Additional features</a>) to adjust!"] = "Abilita la modalità esperto per fare cambiamenti! (in <a href=\"settings/features\">Impostazioni > Funzionalità opzionali</a>)";
$a->strings["Miscellaneous Settings"] = "Impostazioni varie";
$a->strings["Personal menu to display in your channel pages"] = "Menu personale da mostrare sulle pagine del tuo canale";
$a->strings["Remove this channel"] = "Elimina questo canale";
-$a->strings["Permission Denied."] = "Permesso negato.";
-$a->strings["File not found."] = "File non trovato.";
-$a->strings["Edit file permissions"] = "Modifica i permessi del file";
-$a->strings["Set/edit permissions"] = "Modifica i permessi";
-$a->strings["Include all files and sub folders"] = "Includi tutti i file e le sottocartelle";
-$a->strings["Return to file list"] = "Torna all'elenco dei file";
-$a->strings["Copy/paste this code to attach file to a post"] = "Copia/incolla questo codice per far comparire il file in un articolo";
-$a->strings["Copy/paste this URL to link file from a web page"] = "Copia/incolla questo indirizzo in una pagina web per avere un link al file";
-$a->strings["Channel not found."] = "Canale non trovato.";
-$a->strings["Red Matrix - &quot;The Network&quot;"] = "Red Matrix - &quot;La Rete&quot;";
-$a->strings["Welcome to %s"] = "%s ti dà il benvenuto";
+$a->strings["Collection created."] = "L'insieme di canali è stato creato.";
+$a->strings["Could not create collection."] = "Impossibile creare l'insieme.";
+$a->strings["Collection updated."] = "Insieme aggiornato.";
+$a->strings["Create a collection of channels."] = "Crea un insieme di canali.";
+$a->strings["Collection Name: "] = "Nome dell'insieme:";
+$a->strings["Members are visible to other channels"] = "I membri potranno vedere gli altri canali dell'insieme";
+$a->strings["Collection removed."] = "Insieme rimosso.";
+$a->strings["Unable to remove collection."] = "Impossibile rimuovere l'insieme.";
+$a->strings["Collection Editor"] = "Modifica l'insieme";
+$a->strings["Members"] = "Membri";
+$a->strings["All Connected Channels"] = "Tutti i canali connessi";
+$a->strings["Click on a channel to add or remove."] = "Clicca su un canale per aggiungerlo o rimuoverlo.";
+$a->strings["Public access denied."] = "Accesso pubblico negato.";
+$a->strings["%1\$s is following %2\$s's %3\$s"] = "%1\$s sta seguendo %3\$s di %2\$s";
+$a->strings["Poke/Prod"] = "Poke/Prod";
+$a->strings["poke, prod or do other things to somebody"] = "Manda un poke, un prod o altro";
+$a->strings["Recipient"] = "Destinatario";
+$a->strings["Choose what you wish to do to recipient"] = "Scegli cosa vuoi inviare al destinatario";
+$a->strings["Make this post private"] = "Rendi privato questo articolo";
+$a->strings["Authorize application connection"] = "Autorizza la app";
+$a->strings["Return to your app and insert this Securty Code:"] = "Torna alla app e inserisci questo codice di sicurezza:";
+$a->strings["Please login to continue."] = "Accedi al sito per continuare.";
+$a->strings["Do you want to authorize this application to access your posts and contacts, and/or create new posts for you?"] = "Vuoi autorizzare questa app ad accedere ai messaggi e ai contatti o creare nuovi messaggi per te?";
+$a->strings["Red Matrix Server - Setup"] = "RedMatrix Server - Installazione";
+$a->strings["Could not connect to database."] = " Impossibile connettersi al database.";
+$a->strings["Could not connect to specified site URL. Possible SSL certificate or DNS issue."] = "Non è possibile raggiungere l'indirizzo del sito specificato. Potrebbe essere un problema di SSL o DNS.";
+$a->strings["Could not create table."] = "Impossibile creare le tabelle.";
+$a->strings["Your site database has been installed."] = "Il database del sito è stato installato.";
+$a->strings["You may need to import the file \"install/schema_xxx.sql\" manually using a database client."] = "Potresti dover importare il file 'install/schema_xxx.sql' manualmente usando un client per collegarti al db.";
+$a->strings["Please see the file \"install/INSTALL.txt\"."] = "Leggi il file 'install/INSTALL.txt'.";
+$a->strings["System check"] = "Verifica del sistema";
+$a->strings["Next"] = "Successivo";
+$a->strings["Check again"] = "Verifica di nuovo";
+$a->strings["Database connection"] = "Connessione al database";
+$a->strings["In order to install Red Matrix we need to know how to connect to your database."] = "Per installare RedMatrix è necessario conoscere i parametri di connessione al database.";
+$a->strings["Please contact your hosting provider or site administrator if you have questions about these settings."] = "Contatta il tuo fornitore di hosting o l'amministratore del sito se hai domande su queste impostazioni.";
+$a->strings["The database you specify below should already exist. If it does not, please create it before continuing."] = "Il database deve già esistere. Se non esiste, crealo prima di continuare.";
+$a->strings["Database Server Name"] = "Server del database";
+$a->strings["Default is localhost"] = "'localhost' è il predefinito";
+$a->strings["Database Port"] = "Port del database";
+$a->strings["Communication port number - use 0 for default"] = "Scrivi 0 per usare il valore standard";
+$a->strings["Database Login Name"] = "Utente database";
+$a->strings["Database Login Password"] = "Password utente database";
+$a->strings["Database Name"] = "Nome database";
+$a->strings["Database Type"] = "Tipo database";
+$a->strings["Site administrator email address"] = "Indirizzo email dell'amministratore del sito";
+$a->strings["Your account email address must match this in order to use the web admin panel."] = "Il tuo indirizzo email deve corrispondere a questo per poter usare il pannello di amministrazione web.";
+$a->strings["Website URL"] = "URL completo del sito";
+$a->strings["Please use SSL (https) URL if available."] = "Se disponibile, usa l'indirizzo SSL (https).";
+$a->strings["Please select a default timezone for your website"] = "Seleziona il fuso orario predefinito per il tuo sito web";
+$a->strings["Site settings"] = "Impostazioni del sito";
+$a->strings["Could not find a command line version of PHP in the web server PATH."] = "Non è possibile trovare la versione di PHP da riga di comando nel PATH del server web";
+$a->strings["If you don't have a command line version of PHP installed on server, you will not be able to run background polling via cron."] = "Se non hai installata la versione di PHP da riga di comando non potrai attivare il polling in background tramite cron.";
+$a->strings["PHP executable path"] = "Path del comando PHP";
+$a->strings["Enter full path to php executable. You can leave this blank to continue the installation."] = "Inserisci il percorso dell'eseguibile PHP. Puoi lasciarlo vuoto per continuare l'installazione.";
+$a->strings["Command line PHP"] = "PHP da riga di comando";
+$a->strings["The command line version of PHP on your system does not have \"register_argc_argv\" enabled."] = "La versione da riga di comando di PHP nel sistema non ha abilitato \"register_argc_argv\".";
+$a->strings["This is required for message delivery to work."] = "E' necessario perché funzioni la consegna dei messaggi.";
+$a->strings["PHP register_argc_argv"] = "PHP register_argc_argv";
+$a->strings["Error: the \"openssl_pkey_new\" function on this system is not able to generate encryption keys"] = "Errore: la funzione \"openssl_pkey_new\" su questo sistema non è in grado di generare le chiavi di criptazione";
+$a->strings["If running under Windows, please see \"http://www.php.net/manual/en/openssl.installation.php\"."] = "Se stai usando un server windows, guarda \"http://www.php.net/manual/en/openssl.installation.php\".";
+$a->strings["Generate encryption keys"] = "Genera chiavi di criptazione";
+$a->strings["libCurl PHP module"] = "modulo PHP libCurl";
+$a->strings["GD graphics PHP module"] = "modulo PHP GD graphics";
+$a->strings["OpenSSL PHP module"] = "modulo PHP OpenSSL";
+$a->strings["mysqli or postgres PHP module"] = "modulo PHP per mysqli oppure prostgres";
+$a->strings["mb_string PHP module"] = "modulo PHP mb_string";
+$a->strings["mcrypt PHP module"] = "modulo PHP mcrypt";
+$a->strings["Apache mod_rewrite module"] = "modulo Apache mod_rewrite";
+$a->strings["Error: Apache webserver mod-rewrite module is required but not installed."] = "Errore: il modulo mod-rewrite di Apache è richiesto ma non installato";
+$a->strings["proc_open"] = "proc_open";
+$a->strings["Error: proc_open is required but is either not installed or has been disabled in php.ini"] = "Errore: proc_open è richiesto ma non è installato o è disabilitato in php.ini";
+$a->strings["Error: libCURL PHP module required but not installed."] = "Errore: il modulo libCURL di PHP è richiesto ma non installato.";
+$a->strings["Error: GD graphics PHP module with JPEG support required but not installed."] = "Errore: Il modulo GD graphics di PHP con supporto a JPEG è richiesto ma non installato.";
+$a->strings["Error: openssl PHP module required but not installed."] = "Errore: il modulo openssl di PHP è richiesto ma non installato.";
+$a->strings["Error: mysqli or postgres PHP module required but neither are installed."] = "Errore: il modulo PHP per mysqli o postgres è richiesto ma non installato";
+$a->strings["Error: mb_string PHP module required but not installed."] = "Errore: il modulo PHP mb_string è richiesto ma non installato.";
+$a->strings["Error: mcrypt PHP module required but not installed."] = "Errore: il modulo PHP mcrypt è richiesto ma non installato.";
+$a->strings["The web installer needs to be able to create a file called \".htconfig.php\ in the top folder of your web server and it is unable to do so."] = "L'installazione web deve poter creare un file chiamato \".htconfig.php\" nella cartella di RedMatrix ma non è in grado di farlo.";
+$a->strings["This is most often a permission setting, as the web server may not be able to write files in your folder - even if you can."] = "Spesso ciò è dovuto ai permessi di accesso al disco: il web server potrebbe non aver diritto di scrivere il file nella cartella, anche se tu puoi.";
+$a->strings["At the end of this procedure, we will give you a text to save in a file named .htconfig.php in your Red top folder."] = "Alla fine di questa procedura ti sarà dato il testo da salvare in un file di nome .htconfig.php dentro la cartella principale di RedMatrix.";
+$a->strings["You can alternatively skip this procedure and perform a manual installation. Please see the file \"install/INSTALL.txt\" for instructions."] = "Puoi anche saltare questa procedura ed effettuare un'installazione manuale. Guarda il file 'install/INSTALL.txt' per le istruzioni.";
+$a->strings[".htconfig.php is writable"] = ".htconfig.php è scrivibile";
+$a->strings["Red uses the Smarty3 template engine to render its web views. Smarty3 compiles templates to PHP to speed up rendering."] = "Red usa il sistema Smarty3 per costruire i suoi template grafici. Smarty3 è molto veloce perché compila i template delle pagine direttamente in PHP.";
+$a->strings["In order to store these compiled templates, the web server needs to have write access to the directory %s under the Red top level folder."] = "Per poter memorizzare i template compilati, il web server deve avere accesso in scrittura a %s sotto la cartella di installazione di RedMatrix.";
+$a->strings["Please ensure that the user that your web server runs as (e.g. www-data) has write access to this folder."] = "Assicurati che il tuo web server sia in esecuzione da parte di un utente che ha diritto di scrittura su quella cartella (ad esempio www-data).";
+$a->strings["Note: as a security measure, you should give the web server write access to %s only--not the template files (.tpl) that it contains."] = "Nota bene: come precauzione, dovresti dare i diritti di scrittura solamente su %s e non sui file template (.tpl) che contiene.";
+$a->strings["%s is writable"] = "%s è scrivibile";
+$a->strings["Red uses the store directory to save uploaded files. The web server needs to have write access to the store directory under the Red top level folder"] = "RedMatrix salva i file caricati nella cartella \"store\" sul server. Il server deve avere i diritti di scrittura su quella cartella che si trova dentro l'installazione di RedMatrix";
+$a->strings["store is writable"] = "l'archivio è scrivibile";
+$a->strings["SSL certificate cannot be validated. Fix certificate or disable https access to this site."] = "Il certificato SSL non può essere validato. Correggi l'errore o disabilita l'accesso https al sito.";
+$a->strings["If you have https access to your website or allow connections to TCP port 443 (the https: port), you MUST use a browser-valid certificate. You MUST NOT use self-signed certificates!"] = "Se abiliti https per il tuo sito o permetti connessioni TCP su port 443 (quella di https), DEVI usare un certificato riconosciuto dai browser internet. NON DEVI usare certificati generati da te!";
+$a->strings["This restriction is incorporated because public posts from you may for example contain references to images on your own hub."] = "Questa restrizione è necessaria perché i tuoi post pubblici potrebbero contenere riferimenti a immagini sul tuo server.";
+$a->strings["If your certificate is not recognized, members of other sites (who may themselves have valid certificates) will get a warning message on their own site complaining about security issues."] = "Se il tuo certificato non è riconosciuto, gli utenti che ti seguono da altri siti (che avranno certificati validi) riceveranno gravi avvisi di sicurezza dal browser.";
+$a->strings["This can cause usability issues elsewhere (not just on your own site) so we must insist on this requirement."] = "Ciò può creare seri problemi di usabilità (non solo sul tuo sito), quindi dobbiamo insistere su questo punto.";
+$a->strings["Providers are available that issue free certificates which are browser-valid."] = "Eventualmente, considera che esistono provider che rilasciano certificati gratuiti riconosciuti dai browser.";
+$a->strings["SSL certificate validation"] = "Validazione del certificato SSL";
+$a->strings["Url rewrite in .htaccess is not working. Check your server configuration.Test: "] = "In .htaccess la funzionalità url rewrite non funziona. Controlla la configurazione del server. Test:";
+$a->strings["Url rewrite is working"] = "Url rewrite funziona correttamente";
+$a->strings["The database configuration file \".htconfig.php\" could not be written. Please use the enclosed text to create a configuration file in your web server root."] = "Il file di configurazione del database \".htconfig.php\" non puo' essere scritto. Usa il testo qui di seguito per creare questo file di configurazione nella cartella principale del tuo sito.";
+$a->strings["Errors encountered creating database tables."] = "La creazione delle tabelle del database ha generato errori.";
+$a->strings["<h1>What next</h1>"] = "<h1>I prossimi passi</h1>";
+$a->strings["IMPORTANT: You will need to [manually] setup a scheduled task for the poller."] = "IMPORTANTE: Devi creare [manualmente] la pianificazione del polling.";
+$a->strings["Item not available."] = "Elemento non disponibile.";
$a->strings["Fetching URL returns error: %1\$s"] = "La chiamata all'URL restituisce questo errore: %1\$s";
-$a->strings["[Embedded content - reload page to view]"] = "[Contenuto incorporato - ricarica la pagina per visualizzarlo correttamente]";
-$a->strings["Add a Channel"] = "Aggiungi un canale";
-$a->strings["A channel is your own collection of related web pages. A channel can be used to hold social network profiles, blogs, conversation groups and forums, celebrity pages, and much more. You may create as many channels as your service provider allows."] = "I contenuti che pubblichi finiscono in un \"canale\". Un canale può essere usato per mantenere un tuo profilo personale, per avere un blog, per creare forum di discussione o gruppi di interesse, per pagine di celebrità e molto altro. Puoi creare quanti canali vuoi a meno di limiti dati dal gestore del sito.";
+$a->strings["Invalid item."] = "Elemento non valido.";
+$a->strings["Channel not found."] = "Canale non trovato.";
+$a->strings["Page not found."] = "Pagina non trovata.";
+$a->strings["Export Channel"] = "Esporta il canale";
+$a->strings["Export your basic channel information to a small file. This acts as a backup of your connections, permissions, profile and basic data, which can be used to import your data to a new hub, but\tdoes not contain your content."] = "Esporta le informazioni di base del tuo canale in un piccolo file. E' utile per avere un salvataggio di sicurezza dei tuoi contatti, del tuo profilo ed altri dati di base. Può essere usato per importare il tuo canale su un nuovo server, ma\tnon include i contenuti, per esempio articoli e foto.";
+$a->strings["Export Content"] = "Esporta i contenuti";
+$a->strings["Export your channel information and all the content to a JSON backup. This backs up all of your connections, permissions, profile data and all of your content, but is generally not suitable for importing a channel to a new hub as this file may be VERY large. Please be patient - it may take several minutes for this download to begin."] = "Esporta i dati del canale e i contenuti in un file in formato JSON. E' un salvataggio dei tuoi contatti, dei dati del profilo e anche di tutti i contenuti. Questa non è la soluzione opportuna per importare il tuo canale su un nuovo server, visto che il file potrebbe avere dimensioni NOTEVOLI. Devi pazientare - ci vorranno alcuni minuti per raccogliere i dati prima che inizi lo scaricamento.";
+$a->strings["No potential page delegates located."] = "Impossibile trovare delegati per questa pagina.";
+$a->strings["Delegate Page Management"] = "Gestione delegati per la pagina";
+$a->strings["Delegates are able to manage all aspects of this account/page except for basic account settings. Please do not delegate your personal account to anybody that you do not trust completely."] = "I Delegati sono in grando di gestire tutti gli aspetti di questa pagina, tranne per i settaggi di base dell'account. Non delegare il tuo account personale a nessuno di cui non ti fidi ciecamente.";
+$a->strings["Existing Page Managers"] = "Gestori attuali della pagina";
+$a->strings["Existing Page Delegates"] = "Delegati attuali della pagina";
+$a->strings["Potential Delegates"] = "Delegati potenziali";
+$a->strings["Remove"] = "Rimuovi";
+$a->strings["Add"] = "Aggiungi";
+$a->strings["No entries."] = "Nessun risultato.";
+$a->strings["Version %s"] = "Versione %s";
+$a->strings["Installed plugins/addons/apps:"] = "App e componenti installati:";
+$a->strings["No installed plugins/addons/apps"] = "Nessuna app o componente installato";
+$a->strings["Red"] = "RedMatrix";
+$a->strings["This is a hub of the Red Matrix - a global cooperative network of decentralized privacy enhanced websites."] = "Questo è un hub di RedMatrix - una rete cooperativa e decentralizzata di siti ad elevata privacy. ";
+$a->strings["Tag: "] = "Tag: ";
+$a->strings["Last background fetch: "] = "Ultima acquisizione:";
+$a->strings["Running at web location"] = "In esecuzione sull'indirizzo web";
+$a->strings["Please visit <a href=\"https://redmatrix.me\">RedMatrix.me</a> to learn more about the Red Matrix."] = "Visita <a href=\"https://redmatrix.me\">RedMatrix.me</a> per scoprire di più su Red Matrix.";
+$a->strings["Bug reports and issues: please visit"] = "Per segnalare bug e problemi: visita";
+$a->strings["Suggestions, praise, etc. - please email \"redmatrix\" at librelist - dot com"] = "Per consigli, ringraziamenti, ecc. - scrivi a \"redmatrix\" at librelist - dot com";
+$a->strings["Site Administrators"] = "Amministratori del sito";
+$a->strings["Failed to create source. No channel selected."] = "Impossibile creare la sorgente. Nessun canale selezionato.";
+$a->strings["Source created."] = "Sorgente creata.";
+$a->strings["Source updated."] = "Sorgente aggiornata.";
+$a->strings["*"] = "*";
+$a->strings["Manage remote sources of content for your channel."] = "Gestisci le sorgenti dei contenuti del tuo canale.";
+$a->strings["New Source"] = "Nuova sorgente";
+$a->strings["Import all or selected content from the following channel into this channel and distribute it according to your channel settings."] = "Importa nel tuo canale tutti o una parte dei contenuti dal canale seguente.";
+$a->strings["Only import content with these words (one per line)"] = "Importa solo i contenuti che hanno queste parole (una per riga)";
+$a->strings["Leave blank to import all public content"] = "Lascia vuoto per importare tutti i contenuti pubblici";
$a->strings["Channel Name"] = "Nome del canale";
-$a->strings["Examples: \"Bob Jameson\", \"Lisa and her Horses\", \"Soccer\", \"Aviation Group\" "] = "Per esempio: \"Mario Rossi\", \"Lisa e le sue ricette\", \"Il campionato\", \"Il gruppo di escursionismo\"";
-$a->strings["Choose a short nickname"] = "Scegli un nome breve";
-$a->strings["Your nickname will be used to create an easily remembered channel address (like an email address) which you can share with others."] = "Il nome breve sarà usato per creare un indirizzo facile da ricordare per il tuo canale (simile a una email). Così potrai condividerlo e gli altri potranno trovarti.";
-$a->strings["Or <a href=\"import\">import an existing channel</a> from another location"] = "Oppure <a href=\"import\">importa un tuo canale esistente</a> da un altro server/hub";
+$a->strings["Source not found."] = "Sorgente non trovata.";
+$a->strings["Edit Source"] = "Modifica la sorgente";
+$a->strings["Delete Source"] = "Elimina la sorgente";
+$a->strings["Source removed"] = "Sorgente eliminata";
+$a->strings["Unable to remove source."] = "Impossibile rimuovere la sorgente.";
+$a->strings["Invalid profile identifier."] = "Indentificativo del profilo non valido.";
+$a->strings["Profile Visibility Editor"] = "Modifica la visibilità del profilo";
+$a->strings["Click on a contact to add or remove."] = "Clicca su un contatto per aggiungerlo o rimuoverlo.";
+$a->strings["Visible To"] = "Visibile a";
+$a->strings["All Connections"] = "Tutti i contatti";
+$a->strings["Event can not end before it has started."] = "Un evento non può terminare prima del suo inizio.";
+$a->strings["Event title and start time are required."] = "Sono necessari il titolo e l'ora d'inizio dell'evento.";
+$a->strings["Event not found."] = "Evento non trovato.";
+$a->strings["l, F j"] = "l j F";
+$a->strings["Edit event"] = "Modifica l'evento";
+$a->strings["Create New Event"] = "Crea un nuovo evento";
+$a->strings["Previous"] = "Precendente";
+$a->strings["Export"] = "Esporta";
+$a->strings["Event details"] = "Dettagli evento";
+$a->strings["Starting date and Title are required."] = "Titolo e data d'inizio sono obbligatori.";
+$a->strings["Categories (comma-separated list)"] = "Categorie (separate da virgola)";
+$a->strings["Event Starts:"] = "Inizio:";
+$a->strings["Required"] = "Obbligatorio";
+$a->strings["Finish date/time is not known or not relevant"] = "La data/ora di fine non è rilevante";
+$a->strings["Event Finishes:"] = "Fine:";
+$a->strings["Adjust for viewer timezone"] = "Adatta al fuso orario di chi legge";
+$a->strings["Description:"] = "Descrizione:";
+$a->strings["Title:"] = "Titolo:";
+$a->strings["Share this event"] = "Condividi questo evento";
+$a->strings["Public Sites"] = "Siti pubblici";
+$a->strings["The listed sites allow public registration into the Red Matrix. All sites in the matrix are interlinked so membership on any of them conveys membership in the matrix as a whole. Some sites may require subscription or provide tiered service plans. The provider links <strong>may</strong> provide additional details."] = "Gli indirizzi elencati permettono la registrazione su RedMatrix. Tutti i siti di questa rete sono interconnessi, quindi essere registrati su uno è come essere registrati ovunque. Alcuni potrebbero richiedere un'iscrizione a pagamento o prevedere diverse tipologie di abbonamento. Eventualmente potrai trovare maggiori informazioni visitando ciascun sito.";
+$a->strings["Site URL"] = "URL del sito";
+$a->strings["Access Type"] = "Tipo di accesso";
+$a->strings["Registration Policy"] = "Politica di registrazione";
+$a->strings["Location"] = "Posizione geografica";
+$a->strings["You must be logged in to see this page."] = "Devi aver effettuato l'accesso per vedere questa pagina.";
+$a->strings["Insufficient permissions. Request redirected to profile page."] = "Permessi insufficienti. Sarà visualizzata la pagina del profilo.";
+$a->strings["Select a bookmark folder"] = "Scegli una cartella di segnalibri";
+$a->strings["Save Bookmark"] = "Salva segnalibro";
+$a->strings["URL of bookmark"] = "URL del segnalibro";
+$a->strings["Description"] = "Descrizione";
+$a->strings["Or enter new bookmark folder name"] = "O inserisci il nome di una nuova cartella di segnalibri";
+$a->strings["Room not found"] = "Area chat non trovata";
+$a->strings["Leave Room"] = "Lascia l'area chat";
+$a->strings["Delete This Room"] = "Elimina questa area chat";
+$a->strings["I am away right now"] = "Non sono presente";
+$a->strings["I am online"] = "Sono online";
+$a->strings["Bookmark this room"] = "Aggiungi l'area chat ai segnalibri";
+$a->strings["New Chatroom"] = "Nuova area chat";
+$a->strings["Chatroom Name"] = "Nome dell'area chat";
+$a->strings["%1\$s's Chatrooms"] = "Le aree chat di %1\$s";
+$a->strings["Away"] = "Assente";
+$a->strings["Online"] = "Online";
+$a->strings["Please login."] = "Effettua l'accesso.";
+$a->strings["Item not found"] = "Elemento non trovato";
+$a->strings["Item is not editable"] = "L'elemento non è modificabile";
+$a->strings["Edit post"] = "Modifica articolo";
+$a->strings["Delete item?"] = "Eliminare questo elemento?";
+$a->strings["Insert YouTube video"] = "Inserisci video da YouTube";
+$a->strings["Insert Vorbis [.ogg] video"] = "Inserisci video Vorbis [.ogg]";
+$a->strings["Insert Vorbis [.ogg] audio"] = "Inserisci audio Vorbis [.ogg]";
+$a->strings["Channel removals are not allowed within 48 hours of changing the account password."] = "Non è possibile eliminare un canale prima di 48 ore dall'ultimo cambio password.";
+$a->strings["Remove This Channel"] = "Elimina questo canale";
+$a->strings["This will completely remove this channel from the network. Once this has been done it is not recoverable."] = "Questo comando rimuoverà completamente il canale che stai usando. Una volta fatto non sarà più possibile ripristinarlo.";
+$a->strings["Please enter your password for verification:"] = "Inserisci la tua password per verifica:";
+$a->strings["Remove this channel and all its clones from the network"] = "Rimuovi questo canale e tutti i suoi cloni dalla rete";
+$a->strings["By default only the instance of the channel located on this hub will be removed from the network"] = "L'impostazione predefinita è che sia eliminata solo l'istanza del canale presente su questo hub, non gli eventuali cloni";
+$a->strings["Remove Channel"] = "Elimina questo canale";
+$a->strings["No channel."] = "Nessun canale.";
+$a->strings["Common connections"] = "Contatti in comune";
+$a->strings["No connections in common."] = "Nessun contatto in comune.";
$a->strings["We encountered a problem while logging in with the OpenID you provided. Please check the correct spelling of the ID."] = "Non è possibile effettuare login con l'OpenID che hai fornito. Per favore controlla che sia scritto correttamente.";
$a->strings["The error message was:"] = "Messaggio di errore ricevuto:";
$a->strings["Authentication failed."] = "Autenticazione fallita.";
$a->strings["Remote Authentication"] = "Autenticazione a distanza";
$a->strings["Enter your channel address (e.g. channel@example.com)"] = "Inserisci l'indirizzo del tuo canale (ad esempio lucia@esempio.com)";
$a->strings["Authenticate"] = "Autenticazione";
-$a->strings["Theme settings updated."] = "Le impostazioni del tema sono state aggiornate.";
-$a->strings["Site"] = "Sito";
-$a->strings["Accounts"] = "Account";
-$a->strings["Channels"] = "Canali";
-$a->strings["Plugins"] = "Plugin";
-$a->strings["Themes"] = "Temi";
-$a->strings["Server"] = "Server";
-$a->strings["DB updates"] = "Aggiornamenti al DB";
-$a->strings["Logs"] = "Log";
-$a->strings["Plugin Features"] = "Plugin";
-$a->strings["User registrations waiting for confirmation"] = "Registrazioni in attesa";
-$a->strings["Message queues"] = "Messaggi in attesa di recapito";
-$a->strings["Administration"] = "Amministrazione";
-$a->strings["Summary"] = "Riepilogo";
-$a->strings["Registered users"] = "Utenti registrati";
-$a->strings["Pending registrations"] = "Registrazioni da approvare";
-$a->strings["Version"] = "Versione";
-$a->strings["Active plugins"] = "Plugin attivi";
-$a->strings["Site settings updated."] = "Impostazioni del sito aggiornate.";
-$a->strings["No special theme for accessibility"] = "Nessun tema speciale per l'accessibilità";
-$a->strings["Yes - with approval"] = "Sì - con approvazione";
-$a->strings["My site is not a public server"] = "Non è un server pubblico";
-$a->strings["My site has paid access only"] = "È un servizio a pagamento";
-$a->strings["My site has free access only"] = "È un servizio gratuito";
-$a->strings["My site offers free accounts with optional paid upgrades"] = "È un servizio gratuito con opzioni aggiuntive a pagamento";
-$a->strings["Registration"] = "Registrazione";
-$a->strings["File upload"] = "Caricamento file";
-$a->strings["Policies"] = "Politiche";
-$a->strings["Site name"] = "Nome del sito";
-$a->strings["Banner/Logo"] = "Banner o logo";
-$a->strings["Administrator Information"] = "Informazioni sull'amministrazione";
-$a->strings["Contact information for site administrators. Displayed on siteinfo page. BBCode can be used here"] = "Informazioni per contattare gli amministratori del sito. Saranno mostrate sulla pagina di informazioni. È consentito il BBcode";
-$a->strings["System language"] = "Lingua di sistema";
-$a->strings["System theme"] = "Tema di sistema";
-$a->strings["Default system theme - may be over-ridden by user profiles - <a href='#' id='cnftheme'>change theme settings</a>"] = "Il tema di sistema può essere cambiato dai profili dei singoli utenti - <a href='#' id='cnftheme'>Cambia le impostazioni del tema</a>";
-$a->strings["Mobile system theme"] = "Tema di sistema per dispositivi mobili";
-$a->strings["Theme for mobile devices"] = "Tema per i dispositivi mobili";
-$a->strings["Accessibility system theme"] = "Tema di sistema ad alta accessibilità";
-$a->strings["Accessibility theme"] = "Tema ad alta accessibilità";
-$a->strings["Channel to use for this website's static pages"] = "Canale da usare per le pagine statiche di questo sito";
-$a->strings["Site Channel"] = "Canale del sito";
-$a->strings["Maximum image size"] = "Dimensione massima immagini";
-$a->strings["Maximum size in bytes of uploaded images. Default is 0, which means no limits."] = "Massima dimensione in byte delle immagini caricate. Il default è 0, cioè nessun limite.";
-$a->strings["Does this site allow new member registration?"] = "Questo sito permette a nuovi utenti di registrarsi?";
-$a->strings["Which best describes the types of account offered by this hub?"] = "Come descriveresti il tipo di servizio proposto da questo server?";
-$a->strings["Register text"] = "Testo diregistrazione";
-$a->strings["Will be displayed prominently on the registration page."] = "Sarà mostrato ben visibile nella pagina di registrazione.";
-$a->strings["Accounts abandoned after x days"] = "Account abbandonati dopo X giorni";
-$a->strings["Will not waste system resources polling external sites for abandonded accounts. Enter 0 for no time limit."] = "Eviterà di sprecare risorse di sistema controllando se i siti esterni hanno account abbandonati. Immettere 0 per non imporre nessun limite di tempo.";
-$a->strings["Allowed friend domains"] = "Domini fidati e consentiti";
-$a->strings["Comma separated list of domains which are allowed to establish friendships with this site. Wildcards are accepted. Empty to allow any domains"] = "Elenco separato da virglola dei domini che possono stabilire amicizie con questo sito. Sono accettati caratteri jolly. Lascia vuoto per accettare connessioni da qualsiasi dominio.";
-$a->strings["Allowed email domains"] = "Domini email consentiti";
-$a->strings["Comma separated list of domains which are allowed in email addresses for registrations to this site. Wildcards are accepted. Empty to allow any domains"] = "Elenco separato da virgola dei domini permessi come indirizzi email in fase di registrazione. Sono accettati caratteri jolly. Lascia vuoto per accettare qualsiasi dominio.";
-$a->strings["Block public"] = "Blocca pagine pubbliche";
-$a->strings["Check to block public access to all otherwise public personal pages on this site unless you are currently logged in."] = "Seleziona per impedire di vedere le pagine personali di questo sito a chi non ha effettuato l'accesso.";
-$a->strings["Force publish"] = "Forza la publicazione del profilo";
-$a->strings["Check to force all profiles on this site to be listed in the site directory."] = "Seleziona per mostrare nell'elenco dei canali del sito <strong>tutti</strong> i profili registrati.";
-$a->strings["Disable discovery tab"] = "Disabilita la funzione 'scopri'";
-$a->strings["Remove the tab in the network view with public content pulled from sources chosen for this site."] = "Nell'area della rete personale non comparirà più la scheda con i contenuti acquisiti da altri siti.";
-$a->strings["No login on Homepage"] = "Non mostrare il login sulla homepage";
-$a->strings["Check to hide the login form from your sites homepage when visitors arrive who are not logged in (e.g. when you put the content of the homepage in via the site channel)."] = "Per nascondere la possibilità di fare login ai visitatori (per esempio, quando il contenuto della homepage del sito è alimentato dal canale).";
-$a->strings["Proxy user"] = "Utente proxy";
-$a->strings["Proxy URL"] = "URL proxy";
-$a->strings["Network timeout"] = "Timeout rete";
-$a->strings["Value is in seconds. Set to 0 for unlimited (not recommended)."] = "Valore in secondi. Imposta a 0 per illimitato (sconsigliato).";
-$a->strings["Delivery interval"] = "Recapito ritardato";
-$a->strings["Delay background delivery processes by this many seconds to reduce system load. Recommend: 4-5 for shared hosts, 2-3 for virtual private servers. 0-1 for large dedicated servers."] = "RItarda il processo di recapito di questo numero di secondi per ridurre il carico di sistema. Consigliati: 4-5 secondi per hosting condiviso, 2-3 per i VPS, 0-1 per grandi server dedicati.";
-$a->strings["Poll interval"] = "Intervallo di polling";
-$a->strings["Delay background polling processes by this many seconds to reduce system load. If 0, use delivery interval."] = "Ritarda i processi di polling in background di questo numero di secondi per ridurre il carico del sistema. Se 0, verrà usato lo stesso valore del 'Recapito ritardato'.";
-$a->strings["Maximum Load Average"] = "Carico massimo medio";
-$a->strings["Maximum system load before delivery and poll processes are deferred - default 50."] = "Carico di sistema massimo perché i processi di recapito e polling siano ritardati - il valore predefinito è 50.";
-$a->strings["No server found"] = "Server non trovato";
-$a->strings["ID"] = "ID";
-$a->strings["for channel"] = "per canale";
-$a->strings["on server"] = "sul server";
-$a->strings["Status"] = "Stato";
-$a->strings["Update has been marked successful"] = "L'aggiornamento è stato marcato come eseguito.";
-$a->strings["Executing %s failed. Check system logs."] = "Fallita l'esecuzione di %s. Maggiori informazioni sui log di sistema.";
-$a->strings["Update %s was successfully applied."] = "L'aggiornamento %s è terminato correttamente.";
-$a->strings["Update %s did not return a status. Unknown if it succeeded."] = "L'aggiornamento %s non ha dato risposta. Impossibile determinare se è terminato correttamente.";
-$a->strings["Update function %s could not be found."] = "Impossibile trovare la funzione di aggiornamento %s";
-$a->strings["No failed updates."] = "Nessun aggiornamento fallito.";
-$a->strings["Failed Updates"] = "Aggiornamenti falliti.";
-$a->strings["Mark success (if update was manually applied)"] = "Marca come eseguito (se applicato manualmente).";
-$a->strings["Attempt to execute this update step automatically"] = "Tenta di eseguire in automatico questo passaggio dell'aggiornamento.";
-$a->strings["%s user blocked/unblocked"] = array(
- 0 => "%s utente bloccato/sbloccato",
- 1 => "%s utenti bloccati/sbloccati",
-);
-$a->strings["%s user deleted"] = array(
- 0 => "%s utente cancellato",
- 1 => "%s utenti cancellati",
-);
-$a->strings["Account not found"] = "Account non trovato";
-$a->strings["User '%s' deleted"] = "Utente '%s' eliminato";
-$a->strings["User '%s' unblocked"] = "Utente '%s' sbloccato";
-$a->strings["User '%s' blocked"] = "Utente '%s' bloccato";
-$a->strings["Users"] = "Utenti";
-$a->strings["select all"] = "seleziona tutti";
-$a->strings["User registrations waiting for confirm"] = "Richieste di registrazione in attesa di conferma";
-$a->strings["Request date"] = "Data richiesta";
-$a->strings["No registrations."] = "Nessuna registrazione.";
-$a->strings["Approve"] = "Approva";
-$a->strings["Deny"] = "Nega";
-$a->strings["Block"] = "Blocca";
-$a->strings["Unblock"] = "Sblocca";
-$a->strings["Register date"] = "Data registrazione";
-$a->strings["Last login"] = "Ultimo accesso";
-$a->strings["Expires"] = "Con scadenza";
-$a->strings["Service Class"] = "Service Class";
-$a->strings["Selected users will be deleted!\\n\\nEverything these users had posted on this site will be permanently deleted!\\n\\nAre you sure?"] = "Gli utenti selezionati saranno eliminati!\\n\\nTutto quello che gli utenti hanno pubblicato su questo sito sarà permanentemente eliminato!\\n\\nConfermi?";
-$a->strings["The user {0} will be deleted!\\n\\nEverything this user has posted on this site will be permanently deleted!\\n\\nAre you sure?"] = "L'utente {0} sarà eliminato!\\n\\nTutto quello che ha pubblicato su questo sito sarà permanentemente eliminato!\\n\\nConfermi?";
-$a->strings["%s channel censored/uncensored"] = array(
- 0 => "Censura modificata per %s canale",
- 1 => "Censura modificata per %s canali",
-);
-$a->strings["%s channel deleted"] = array(
- 0 => "%s canale è stato rimosso",
- 1 => "%s canali sono stati rimossi",
-);
-$a->strings["Channel not found"] = "Canale non trovato";
-$a->strings["Channel '%s' deleted"] = "Il canale '%s' è stato rimosso";
-$a->strings["Channel '%s' uncensored"] = "Rimossa la censura dal canale '%s'";
-$a->strings["Channel '%s' censored"] = "Applicata una censura al canale '%s'";
-$a->strings["Censor"] = "Applica una censura";
-$a->strings["Uncensor"] = "Rimuovi la censura";
-$a->strings["UID"] = "UID";
-$a->strings["Address"] = "Indirizzo";
-$a->strings["Selected channels will be deleted!\\n\\nEverything that was posted in these channels on this site will be permanently deleted!\\n\\nAre you sure?"] = "I canali selezionati saranno rimossi!\\n\\nTutto ciò che è stato pubblicato su questo server tramite questi canali sarà irreversibilmente eliminato!\\n\\nVuoi confermare?";
-$a->strings["The channel {0} will be deleted!\\n\\nEverything that was posted in this channel on this site will be permanently deleted!\\n\\nAre you sure?"] = "Il canale {0} sarà rimosso!\\n\\nTutto ciò che è stato pubblicato su questo server tramite questo canale sarà irreversibilmente eliminato!\\n\\nVuoi confermare?";
-$a->strings["Plugin %s disabled."] = "Plugin %s non attivo.";
-$a->strings["Plugin %s enabled."] = "Plugin %s attivo.";
-$a->strings["Disable"] = "Disattiva";
-$a->strings["Enable"] = "Attiva";
-$a->strings["Toggle"] = "Attiva/disattiva";
-$a->strings["Author: "] = "Autore:";
-$a->strings["Maintainer: "] = "Gestore:";
-$a->strings["No themes found."] = "Nessun tema trovato.";
-$a->strings["Screenshot"] = "Istantanea dello schermo";
-$a->strings["[Experimental]"] = "[Sperimentale]";
-$a->strings["[Unsupported]"] = "[Non supportato]";
-$a->strings["Log settings updated."] = "Impostazioni di log aggiornate.";
-$a->strings["Clear"] = "Pulisci";
-$a->strings["Debugging"] = "Debugging";
-$a->strings["Log file"] = "File di log";
-$a->strings["Must be writable by web server. Relative to your Red top-level directory."] = "Deve essere scrivibile dal web server. È relativa alla cartella dove è installato Red.";
-$a->strings["Log level"] = "Livello di log";
-$a->strings["- select -"] = "- scegli -";
+$a->strings["No valid account found."] = "Nessun account valido trovato.";
+$a->strings["Password reset request issued. Check your email."] = "La richiesta per reimpostare la password è stata inviata. Controlla la tua email.";
+$a->strings["Site Member (%s)"] = "Utente del sito (%s)";
+$a->strings["Password reset requested at %s"] = "È stato richiesto di reimpostare password su %s";
+$a->strings["Request could not be verified. (You may have previously submitted it.) Password reset failed."] = "La richiesta non può essere verificata (potresti averla già usata precedentemente). La password non sarà reimpostata.";
+$a->strings["Password Reset"] = "Reimposta la password";
+$a->strings["Your password has been reset as requested."] = "La password è stata reimpostata come richiesto.";
+$a->strings["Your new password is"] = "La tua nuova password è";
+$a->strings["Save or copy your new password - and then"] = "Salva o copia la tua nuova password, quindi";
+$a->strings["click here to login"] = "clicca qui per accedere";
+$a->strings["Your password may be changed from the <em>Settings</em> page after successful login."] = "Puoi cambiare la tua password dalla pagina delle <em>Impostazioni</em> dopo aver effettuato l'accesso.";
+$a->strings["Your password has changed at %s"] = "La tua password su %s è cambiata";
+$a->strings["Forgot your Password?"] = "Hai dimenticato la password?";
+$a->strings["Enter your email address and submit to have your password reset. Then check your email for further instructions."] = "Inserisci il tuo indirizzo email per reimpostare la password. Dopo aver inviato la richiesta, controlla l'email e troverai le istruzioni per continuare.";
+$a->strings["Email Address"] = "Indirizzo email";
+$a->strings["Reset"] = "Reimposta";
$a->strings["Could not access contact record."] = "Non è possibile accedere alle informazioni sul contatto.";
$a->strings["Could not locate selected profile."] = "Non riesco a trovare il profilo selezionato.";
$a->strings["Connection updated."] = "Contatto aggiornato.";
@@ -1156,11 +1292,9 @@ $a->strings["Ignored"] = "Ignorati";
$a->strings["Hidden"] = "Nascosti";
$a->strings["Archived"] = "Archiviati";
$a->strings["All"] = "Tutti";
-$a->strings["Unconnected"] = "Non connesso";
$a->strings["Suggest new connections"] = "Suggerisci nuovi contatti";
$a->strings["New Connections"] = "Nuovi contatti";
$a->strings["Show pending (new) connections"] = "Richieste di contatto in attesa";
-$a->strings["All Connections"] = "Tutti i contatti";
$a->strings["Show all connections"] = "Mostra tutti i contatti";
$a->strings["Unblocked"] = "Non bloccati";
$a->strings["Only show unblocked connections"] = "Mostra solo i contatti non bloccati";
@@ -1168,140 +1302,14 @@ $a->strings["Only show blocked connections"] = "Mostra solo i contatti bloccati"
$a->strings["Only show ignored connections"] = "Mostra solo i contatti ignorati";
$a->strings["Only show archived connections"] = "Mostra solo i contatti archiviati";
$a->strings["Only show hidden connections"] = "Mostra solo i contatti nascosti";
-$a->strings["Only show one-way connections"] = "Mostra solo i contatti non ricambiati";
$a->strings["%1\$s [%2\$s]"] = "%1\$s [%2\$s]";
-$a->strings["Edit contact"] = "Modifica il contatto";
+$a->strings["Edit connection"] = "Modifica il contatto";
$a->strings["Search your connections"] = "Cerca tra i contatti";
$a->strings["Finding: "] = "Ricerca: ";
-$a->strings["Public access denied."] = "Accesso pubblico negato.";
-$a->strings["Age: "] = "Età:";
-$a->strings["Gender: "] = "Sesso:";
-$a->strings["Status: "] = "Stato:";
-$a->strings["Sexual Preference: "] = "Preferenza sessuale:";
-$a->strings["Homepage: "] = "Homepage:";
-$a->strings["Hometown: "] = "Città dove vivo:";
-$a->strings["About: "] = "Informazioni:";
-$a->strings["Keywords: "] = "Parole chiave:";
-$a->strings["Not found."] = "Non trovato.";
-$a->strings["Page owner information could not be retrieved."] = "Impossibile ottenere informazioni sul proprietario della pagina.";
-$a->strings["Album not found."] = "Album non trovato.";
-$a->strings["Delete Album"] = "Elimina album";
-$a->strings["Delete Photo"] = "Elimina foto";
-$a->strings["No photos selected"] = "Nessuna foto selezionata";
-$a->strings["Access to this item is restricted."] = "Questo elemento non è visibile a tutti.";
-$a->strings["You have used %1$.2f Mbytes of %2$.2f Mbytes photo storage."] = "Hai usato %1$.2f Mb di %2$.2f Mb disponibili per le foto.";
-$a->strings["You have used %1$.2f Mbytes of photo storage."] = "Hai usato %1$.2f Mb di spazio per le foto.";
-$a->strings["Upload Photos"] = "Carica foto";
-$a->strings["New album name: "] = "Nome del nuovo album: ";
-$a->strings["or existing album name: "] = "o nome di un album esistente: ";
-$a->strings["Do not show a status post for this upload"] = "Non creare un messaggio di stato per questo caricamento";
-$a->strings["Contact Photos"] = "Foto dei contatti";
-$a->strings["Edit Album"] = "Modifica album";
-$a->strings["Show Newest First"] = "Prima i più recenti";
-$a->strings["Show Oldest First"] = "Prima i più vecchi";
-$a->strings["View Photo"] = "Guarda la foto";
-$a->strings["Permission denied. Access to this item may be restricted."] = "Permesso negato. L'accesso a questo elemento può essere stato limitato.";
-$a->strings["Photo not available"] = "Foto non disponibile";
-$a->strings["Use as profile photo"] = "Usa come foto del profilo";
-$a->strings["View Full Size"] = "Vedi nelle dimensioni originali";
-$a->strings["Remove"] = "Rimuovi";
-$a->strings["Edit photo"] = "Modifica la foto";
-$a->strings["Rotate CW (right)"] = "Ruota (senso orario)";
-$a->strings["Rotate CCW (left)"] = "Ruota (senso antiorario)";
-$a->strings["New album name"] = "Nuovo nome dell'album";
-$a->strings["Caption"] = "Titolo";
-$a->strings["Add a Tag"] = "Aggiungi tag";
-$a->strings["Example: @bob, @Barbara_Jensen, @jim@example.com, #California, #camping"] = "Per esempio: @luca, @Maria_Bianchi, @bob@example.com, #California, #camping";
-$a->strings["In This Photo:"] = "In questa foto:";
-$a->strings["View Album"] = "Guarda l'album";
-$a->strings["Recent Photos"] = "Foto recenti";
-$a->strings["Menu not found."] = "Menù non trovato.";
-$a->strings["Menu element updated."] = "L'elemento del menù è stato aggiornato.";
-$a->strings["Unable to update menu element."] = "Non è possibile aggiornare l'elemento del menù.";
-$a->strings["Menu element added."] = "Elemento aggiunto al menù.";
-$a->strings["Unable to add menu element."] = "Impossibile aggiungere l'elemento al menù.";
-$a->strings["Manage Menu Elements"] = "Gestione elementi del menù";
-$a->strings["Edit menu"] = "Modifica il menù";
-$a->strings["Edit element"] = "Modifica l'elemento";
-$a->strings["Drop element"] = "Elimina l'elemento";
-$a->strings["New element"] = "Nuovo elemento";
-$a->strings["Edit this menu container"] = "Modifica il contenitore del menù";
-$a->strings["Add menu element"] = "Aggiungi un elemento al menù";
-$a->strings["Delete this menu item"] = "Elimina questo elemento del menù";
-$a->strings["Edit this menu item"] = "Modifica questo elemento del menù";
-$a->strings["New Menu Element"] = "Nuovo elemento del menù";
-$a->strings["Menu Item Permissions"] = "Permessi del menu";
-$a->strings["Link text"] = "Testo del link";
-$a->strings["URL of link"] = "Indirizzo del link";
-$a->strings["Use Red magic-auth if available"] = "Usa l'autenticazione magica di Red, se disponibile";
-$a->strings["Open link in new window"] = "Apri il link in una nuova finestra";
-$a->strings["Order in list"] = "Ordine dell'elenco";
-$a->strings["Higher numbers will sink to bottom of listing"] = "I numeri più alti andranno in fondo all'elenco";
-$a->strings["Menu item not found."] = "L'elemento del menù non è stato trovato.";
-$a->strings["Menu item deleted."] = "L'elemento del menù è stato eliminato.";
-$a->strings["Menu item could not be deleted."] = "L'elemento del menù non può essere eliminato.";
-$a->strings["Edit Menu Element"] = "Modifica l'elemento del menù";
-$a->strings["Modify"] = "Modifica";
-$a->strings["%1\$s is following %2\$s's %3\$s"] = "%1\$s sta seguendo %3\$s di %2\$s";
-$a->strings["Please login."] = "Accedi.";
-$a->strings["Set your current mood and tell your friends"] = "Scegli il tuo umore attuale per mostrarlo agli amici";
-$a->strings["Remote privacy information not available."] = "Le informazioni remote sulla privacy non sono disponibili.";
-$a->strings["Visible to:"] = "Visibile a:";
-$a->strings["Select a bookmark folder"] = "Scegli una cartella di segnalibri";
-$a->strings["Save Bookmark"] = "Salva segnalibro";
-$a->strings["URL of bookmark"] = "URL del segnalibro";
-$a->strings["Description"] = "Descrizione";
-$a->strings["Or enter new bookmark folder name"] = "O inserisci il nome di una nuova cartella di segnalibri";
-$a->strings["Layout updated."] = "Layout aggiornato.";
-$a->strings["Edit System Page Description"] = "Modifica i layout di sistema";
-$a->strings["Layout not found."] = "Layout non trovato.";
-$a->strings["Module Name:"] = "Nome del modulo:";
-$a->strings["Layout Help"] = "Guida al layout";
-$a->strings["Image uploaded but image cropping failed."] = "L'immagine è stata caricata, ma il non è stato possibile ritagliarla.";
-$a->strings["Image resize failed."] = "Il ridimensionamento dell'immagine è fallito.";
-$a->strings["Shift-reload the page or clear browser cache if the new photo does not display immediately."] = "Ricarica la pagina con shift+F5 o cancella la cache del browser se la nuova foto non viene mostrata immediatamente.";
-$a->strings["Image exceeds size limit of %d"] = "La dimensione dell'immagine supera il limite di %d";
-$a->strings["Unable to process image."] = "Impossibile elaborare l'immagine.";
-$a->strings["Photo not available."] = "Foto non disponibile.";
-$a->strings["Upload File:"] = "Carica un file:";
-$a->strings["Select a profile:"] = "Seleziona un profilo:";
-$a->strings["Upload Profile Photo"] = "Carica la foto del profilo";
-$a->strings["skip this step"] = "salta questo passaggio";
-$a->strings["select a photo from your photo albums"] = "seleziona una foto dai tuoi album";
-$a->strings["Crop Image"] = "Ritaglia immagine";
-$a->strings["Please adjust the image cropping for optimum viewing."] = "Ritaglia l'immagine per migliorarne la visualizzazione.";
-$a->strings["Done Editing"] = "Modifica terminata";
-$a->strings["Image uploaded successfully."] = "Immagine caricata con successo.";
-$a->strings["Image upload failed."] = "Il caricamento dell'immagine è fallito.";
-$a->strings["Image size reduction [%s] failed."] = "Il ridimensionamento del'immagine [%s] è fallito.";
-$a->strings["network"] = "rete";
-$a->strings["Menu updated."] = "Menù aggiornato.";
-$a->strings["Unable to update menu."] = "Impossibile aggiornare il menù.";
-$a->strings["Menu created."] = "Menù creato.";
-$a->strings["Unable to create menu."] = "Impossibile creare il menù.";
-$a->strings["Manage Menus"] = "Gestione menù";
-$a->strings["Drop"] = "Elimina";
-$a->strings["Create a new menu"] = "Crea un nuovo menù";
-$a->strings["Delete this menu"] = "Elimina questo menù";
-$a->strings["Edit menu contents"] = "Modifica i contenuti del menù";
-$a->strings["Edit this menu"] = "Modifica questo menù";
-$a->strings["New Menu"] = "Nuovo menù";
-$a->strings["Menu name"] = "Nome del menù";
-$a->strings["Must be unique, only seen by you"] = "Deve essere unico, lo vedrai solo tu";
-$a->strings["Menu title"] = "Titolo del menù";
-$a->strings["Menu title as seen by others"] = "Titolo del menù come comparirà a tutti";
-$a->strings["Allow bookmarks"] = "Permetti l'invio di segnalibri";
-$a->strings["Menu may be used to store saved bookmarks"] = "Puoi salvare i segnalibri nei menu";
-$a->strings["Menu deleted."] = "Menù eliminato.";
-$a->strings["Menu could not be deleted."] = "Il menù non può essere eliminato.";
-$a->strings["Edit Menu"] = "Modifica menù";
-$a->strings["Add or remove entries to this menu"] = "Aggiungi o rimuovi elementi di questo menù";
-$a->strings["Invalid item."] = "Elemento non valido.";
-$a->strings["Page not found."] = "Pagina non trovata.";
-$a->strings["%1\$s tagged %2\$s's %3\$s with %4\$s"] = "%1\$s ha taggato %3\$s di %2\$s con %4\$s";
-$a->strings["Wall Photos"] = "Foto della bacheca";
-$a->strings["OpenID protocol error. No ID returned."] = "Errore del protocollo OpenID. Nessun ID ricevuto in risposta.";
-$a->strings["No suggestions available. If this is a new site, please try again in 24 hours."] = "Nessun suggerimento disponibile. Se questo è un sito nuovo, riprova tra 24 ore.";
+$a->strings["sent you a private message"] = "ti ha inviato un messaggio privato";
+$a->strings["added your channel"] = "ha aggiunto il tuo canale";
+$a->strings["posted an event"] = "ha creato un evento";
+$a->strings["is now connected to"] = "ha come nuovo contatto";
$a->strings["Could not access address book record."] = "Impossibile accedere alle informazioni della rubrica.";
$a->strings["Refresh failed - channel is currently unavailable."] = "Il canale non è disponibile - impossibile aggiornare.";
$a->strings["Channel has been unblocked"] = "Il canale è stato sbloccato";
@@ -1321,6 +1329,8 @@ $a->strings["Refresh Permissions"] = "Aggiorna i permessi";
$a->strings["Fetch updated permissions"] = "Scarica i permessi aggiornati";
$a->strings["Recent Activity"] = "Attività recenti";
$a->strings["View recent posts and comments"] = "Leggi i post recenti e i commenti";
+$a->strings["Unblock"] = "Sblocca";
+$a->strings["Block"] = "Blocca";
$a->strings["Block or Unblock this connection"] = "Per bloccare o meno questo contatto";
$a->strings["Unignore"] = "Non ignorare";
$a->strings["Ignore"] = "Ignora";
@@ -1334,9 +1344,9 @@ $a->strings["Hide or Unhide this connection"] = "Per nascondere o meno questo co
$a->strings["Delete this connection"] = "Elimina questo contatto";
$a->strings["Approve this connection"] = "Approva questo contatto";
$a->strings["Accept connection to allow communication"] = "Entra in contatto per poter comunicare";
-$a->strings["Automatic Permissions Settings"] = "Permessi predefiniti";
$a->strings["Connections: settings for %s"] = "Contatti: impostazioni per %s";
-$a->strings["When receiving a channel introduction, any permissions provided here will be applied to the new connection automatically and the introduction approved. Leave this page if you do not wish to use this feature."] = "Hai ricevuto da un canale una richiesta di entrare in contatto, se prosegui la richiesta sarà approvata e saranno applicati i permessi mostrati. Lascia questa pagina se non vuoi proseguire.";
+$a->strings["Apply these permissions automatically"] = "Applica automaticamente questi permessi";
+$a->strings["Apply the permissions indicated on this page to all new connections."] = "Applica i permessi indicati su questa pagina a tutti i nuovi contatti.";
$a->strings["Slide to adjust your degree of friendship"] = "Trascina per restringere il grado di amicizia da mostrare";
$a->strings["inherited"] = "derivato";
$a->strings["Connection has no individual permissions!"] = "Non hai assegnato permessi individuali a questo contatto!";
@@ -1372,113 +1382,113 @@ $a->strings["Currently archived"] = "Attualmente archiviato";
$a->strings["Currently pending"] = "Attualmente da approvare";
$a->strings["Hide this contact from others"] = "Nascondi questo contatto agli altri";
$a->strings["Replies/likes to your public posts <strong>may</strong> still be visible"] = "Le risposte ai tuoi articoli pubblici <strong>potrebbero</strong> restare comunque visibili";
-$a->strings["Messages"] = "Messaggi";
-$a->strings["Conversation removed."] = "Conversazione rimossa.";
-$a->strings["No messages."] = "Nessun messaggio.";
-$a->strings["Delete message"] = "Elimina il messaggio";
-$a->strings["D, d M Y - g:i A"] = "D d M Y - G:i";
-$a->strings["sent you a private message"] = "ti ha inviato un messaggio privato";
-$a->strings["added your channel"] = "ha aggiunto il tuo canale";
-$a->strings["posted an event"] = "ha creato un evento";
-$a->strings["Red Matrix Server - Setup"] = "Red Matrix Server - Installazione";
-$a->strings["Could not connect to database."] = " Impossibile connettersi al database.";
-$a->strings["Could not connect to specified site URL. Possible SSL certificate or DNS issue."] = "Non è possibile raggiungere l'indirizzo del sito specificato. Potrebbe essere un problema di SSL o DNS.";
-$a->strings["Could not create table."] = "Impossibile creare le tabelle.";
-$a->strings["Your site database has been installed."] = "Il database del sito è stato installato.";
-$a->strings["You may need to import the file \"install/database.sql\" manually using phpmyadmin or mysql."] = "Potresti dover importare il file 'install/database.sql' manualmente usando phpmyadmin o mysql.";
-$a->strings["Please see the file \"install/INSTALL.txt\"."] = "Leggi il file 'install/INSTALL.txt'.";
-$a->strings["System check"] = "Verifica del sistema";
-$a->strings["Next"] = "Successivo";
-$a->strings["Check again"] = "Verifica di nuovo";
-$a->strings["Database connection"] = "Connessione al database";
-$a->strings["In order to install Red Matrix we need to know how to connect to your database."] = "Per installare Red Matrix è necessario conoscere i parametri di connessione al database.";
-$a->strings["Please contact your hosting provider or site administrator if you have questions about these settings."] = "Contatta il tuo fornitore di hosting o l'amministratore del sito se hai domande su queste impostazioni.";
-$a->strings["The database you specify below should already exist. If it does not, please create it before continuing."] = "Il database deve già esistere. Se non esiste, crealo prima di continuare.";
-$a->strings["Database Server Name"] = "Server del database";
-$a->strings["Default is localhost"] = "'localhost' è il predefinito";
-$a->strings["Database Port"] = "Port del database";
-$a->strings["Communication port number - use 0 for default"] = "Scrivi 0 per usare il valore standard";
-$a->strings["Database Login Name"] = "Utente database";
-$a->strings["Database Login Password"] = "Password utente database";
-$a->strings["Database Name"] = "Nome database";
-$a->strings["Site administrator email address"] = "Indirizzo email dell'amministratore del sito";
-$a->strings["Your account email address must match this in order to use the web admin panel."] = "Il tuo indirizzo email deve corrispondere a questo per poter usare il pannello di amministrazione web.";
-$a->strings["Website URL"] = "URL completo del sito";
-$a->strings["Please use SSL (https) URL if available."] = "Se disponibile, usa l'indirizzo SSL (https).";
-$a->strings["Please select a default timezone for your website"] = "Seleziona il fuso orario predefinito per il tuo sito web";
-$a->strings["Site settings"] = "Impostazioni del sito";
-$a->strings["Could not find a command line version of PHP in the web server PATH."] = "Non è possibile trovare la versione di PHP da riga di comando nel PATH del server web";
-$a->strings["If you don't have a command line version of PHP installed on server, you will not be able to run background polling via cron."] = "Se non hai installata la versione di PHP da riga di comando non potrai attivare il polling in background tramite cron.";
-$a->strings["PHP executable path"] = "Path del comando PHP";
-$a->strings["Enter full path to php executable. You can leave this blank to continue the installation."] = "Inserisci il percorso dell'eseguibile PHP. Puoi lasciarlo vuoto per continuare l'installazione.";
-$a->strings["Command line PHP"] = "PHP da riga di comando";
-$a->strings["The command line version of PHP on your system does not have \"register_argc_argv\" enabled."] = "La versione da riga di comando di PHP nel sistema non ha abilitato \"register_argc_argv\".";
-$a->strings["This is required for message delivery to work."] = "E' necessario perché funzioni la consegna dei messaggi.";
-$a->strings["PHP register_argc_argv"] = "PHP register_argc_argv";
-$a->strings["Error: the \"openssl_pkey_new\" function on this system is not able to generate encryption keys"] = "Errore: la funzione \"openssl_pkey_new\" su questo sistema non è in grado di generare le chiavi di criptazione";
-$a->strings["If running under Windows, please see \"http://www.php.net/manual/en/openssl.installation.php\"."] = "Se stai usando un server windows, guarda \"http://www.php.net/manual/en/openssl.installation.php\".";
-$a->strings["Generate encryption keys"] = "Genera chiavi di criptazione";
-$a->strings["libCurl PHP module"] = "modulo PHP libCurl";
-$a->strings["GD graphics PHP module"] = "modulo PHP GD graphics";
-$a->strings["OpenSSL PHP module"] = "modulo PHP OpenSSL";
-$a->strings["mysqli PHP module"] = "modulo PHP mysqli";
-$a->strings["mb_string PHP module"] = "modulo PHP mb_string";
-$a->strings["mcrypt PHP module"] = "modulo PHP mcrypt";
-$a->strings["Apache mod_rewrite module"] = "modulo Apache mod_rewrite";
-$a->strings["Error: Apache webserver mod-rewrite module is required but not installed."] = "Errore: il modulo mod-rewrite di Apache è richiesto ma non installato";
-$a->strings["proc_open"] = "proc_open";
-$a->strings["Error: proc_open is required but is either not installed or has been disabled in php.ini"] = "Errore: proc_open è richiesto ma non è installato o è disabilitato in php.ini";
-$a->strings["Error: libCURL PHP module required but not installed."] = "Errore: il modulo libCURL di PHP è richiesto ma non installato.";
-$a->strings["Error: GD graphics PHP module with JPEG support required but not installed."] = "Errore: Il modulo GD graphics di PHP con supporto a JPEG è richiesto ma non installato.";
-$a->strings["Error: openssl PHP module required but not installed."] = "Errore: il modulo openssl di PHP è richiesto ma non installato.";
-$a->strings["Error: mysqli PHP module required but not installed."] = "Errore: il modulo mysqli di PHP è richiesto ma non installato.";
-$a->strings["Error: mb_string PHP module required but not installed."] = "Errore: il modulo PHP mb_string è richiesto ma non installato.";
-$a->strings["Error: mcrypt PHP module required but not installed."] = "Errore: il modulo PHP mcrypt è richiesto ma non installato.";
-$a->strings["The web installer needs to be able to create a file called \".htconfig.php\ in the top folder of your web server and it is unable to do so."] = "L'installazione web deve poter creare un file chiamato \".htconfig.php\" nella cartella principale del tuo web server ma non è in grado di farlo.";
-$a->strings["This is most often a permission setting, as the web server may not be able to write files in your folder - even if you can."] = "Spesso ciò è dovuto ai permessi di accesso al disco: il web server potrebbe non aver diritto di scrivere il file nella cartella, anche se tu puoi.";
-$a->strings["At the end of this procedure, we will give you a text to save in a file named .htconfig.php in your Red top folder."] = "Alla fine di questa procedura ti sarà dato il testo da salvare in un file di nome .htconfig.php dentro la cartella principale di Red.";
-$a->strings["You can alternatively skip this procedure and perform a manual installation. Please see the file \"install/INSTALL.txt\" for instructions."] = "Puoi anche saltare questa procedura ed effettuare un'installazione manuale. Guarda il file 'install/INSTALL.txt' per le istruzioni.";
-$a->strings[".htconfig.php is writable"] = ".htconfig.php è scrivibile";
-$a->strings["Red uses the Smarty3 template engine to render its web views. Smarty3 compiles templates to PHP to speed up rendering."] = "Red usa il sistema Smarty3 per costruire i suoi template grafici. Smarty3 è molto veloce perché compila i template delle pagine direttamente in PHP.";
-$a->strings["In order to store these compiled templates, the web server needs to have write access to the directory view/tpl/smarty3/ under the Red top level folder."] = "Per poter memorizzare i template compilati, il web server deve avere accesso in scrittura alla cartella view/tpl/smarty3/ sotto la cartella di installazione di Red.";
-$a->strings["Please ensure that the user that your web server runs as (e.g. www-data) has write access to this folder."] = "Assicurati che il tuo web server sia in esecuzione come un utente che ha diritto di scrittura su quella cartella (ad esempio www-data).";
-$a->strings["Note: as a security measure, you should give the web server write access to view/tpl/smarty3/ only--not the template files (.tpl) that it contains."] = "Nota bene: come precauzione, dovresti dare i diritti di scrittura solamente per view/tpl/smarty3/ non per tutti i file di template (.tpl) che contiene.";
-$a->strings["view/tpl/smarty3 is writable"] = "view/tpl/smarty3 è scrivibile";
-$a->strings["Red uses the store directory to save uploaded files. The web server needs to have write access to the store directory under the Red top level folder"] = "Red usa un archivio per salvare i file caricati. Il server deve avere i diritti di scrittura sulla cartella dell'archivio che si trova dentro la cartella principale di Red";
-$a->strings["store is writable"] = "l'archivio è scrivibile";
-$a->strings["SSL certificate cannot be validated. Fix certificate or disable https access to this site."] = "Il certificato SSL non può essere validato. Correggi l'errore o disabilita l'accesso https al sito.";
-$a->strings["If you have https access to your website or allow connections to TCP port 443 (the https: port), you MUST use a browser-valid certificate. You MUST NOT use self-signed certificates!"] = "Se abiliti https per il tuo sito o permetti connessioni TCP su port 443 (quella di https), DEVI usare un certificato riconosciuto dai browser internet. NON DEVI usare certificati generati da te!";
-$a->strings["This restriction is incorporated because public posts from you may for example contain references to images on your own hub."] = "Questa restrizione è necessaria perché i tuoi post pubblici potrebbero contenere riferimenti a immagini sul tuo server.";
-$a->strings["If your certificate is not recognised, members of other sites (who may themselves have valid certificates) will get a warning message on their own site complaining about security issues."] = "Se il tuo certificato non è riconosciuto, gli utenti che ti seguono da altri siti (che avranno certificati validi) riceveranno un avviso su possibili problemi di sicurezza.";
-$a->strings["This can cause usability issues elsewhere (not just on your own site) so we must insist on this requirement."] = "Ciò può creare problemi di usabilità molto gravi (non solo sul tuo sito), quindi dobbiamo insistere su questo punto.";
-$a->strings["Providers are available that issue free certificates which are browser-valid."] = "Eventualmente, considera che esistono provider che rilasciano certificati gratuiti riconosciuti dai browser.";
-$a->strings["SSL certificate validation"] = "Validazione del certificato SSL";
-$a->strings["Url rewrite in .htaccess is not working. Check your server configuration."] = "In .htaccess la funzionalità url rewrite non funziona. Controlla la configurazione del server.";
-$a->strings["Url rewrite is working"] = "Url rewrite funziona correttamente";
-$a->strings["The database configuration file \".htconfig.php\" could not be written. Please use the enclosed text to create a configuration file in your web server root."] = "Il file di configurazione del database \".htconfig.php\" non puo' essere scritto. Usa il testo qui di seguito per creare questo file di configurazione nella cartella principale del tuo sito.";
-$a->strings["Errors encountered creating database tables."] = "La creazione delle tabelle del database ha generato errori.";
-$a->strings["<h1>What next</h1>"] = "<h1>I prossimi passi</h1>";
-$a->strings["IMPORTANT: You will need to [manually] setup a scheduled task for the poller."] = "IMPORTANTE: Devi creare [manualmente] la pianificazione del polling.";
-$a->strings["Hub not found."] = "Server non trovato.";
-$a->strings["Total invitation limit exceeded."] = "Hai superato il numero massimo di inviti.";
-$a->strings["%s : Not a valid email address."] = "%s: non è un indirizzo email valido.";
-$a->strings["Please join us on Red"] = "Vieni con noi su Red";
-$a->strings["Invitation limit exceeded. Please contact your site administrator."] = "Hai superato il numero massimo di inviti. Contatta l'amministratore se necessario.";
-$a->strings["%s : Message delivery failed."] = "%s: la consegna del messaggio è fallita.";
-$a->strings["%d message sent."] = array(
- 0 => "%d messaggio inviato.",
- 1 => "%d messaggi inviati.",
-);
-$a->strings["You have no more invitations available"] = "Non hai altri inviti disponibili";
-$a->strings["Send invitations"] = "Spedisci inviti";
-$a->strings["Enter email addresses, one per line:"] = "Inserisci gli indirizzi email, uno per riga:";
+$a->strings["Unable to lookup recipient."] = "Impossibile associare un destinatario.";
+$a->strings["Unable to communicate with requested channel."] = "Impossibile comunicare con il canale richiesto.";
+$a->strings["Cannot verify requested channel."] = "Impossibile verificare il canale richiesto.";
+$a->strings["Selected channel has private message restrictions. Send failed."] = "Il canale ha delle regole restrittive per la ricezione dei messaggi privati. Invio fallito.";
+$a->strings["Message deleted."] = "Messaggio eliminato.";
+$a->strings["Message recalled."] = "Messaggio revocato.";
+$a->strings["Send Private Message"] = "Invia un messaggio privato";
+$a->strings["To:"] = "A:";
+$a->strings["Subject:"] = "Oggetto:";
$a->strings["Your message:"] = "Il tuo messaggio:";
-$a->strings["You are cordially invited to join me and some other close friends on the Red Matrix - a revolutionary new decentralised communication and information tool."] = "Questo è un invito cordiale ad unirti a me e ad altri miei amici stretti su Red Matrix - uno nuovo strumento di comunicazione decentralizzato e rivoluzionario.";
-$a->strings["You will need to supply this invitation code: \$invite_code"] = "Sarà necessario fornire questo codice invito: \$invite_code";
-$a->strings["Please visit my channel at"] = "Puoi visitare il mio canale su";
-$a->strings["Once you have registered (on ANY Red Matrix site - they are all inter-connected), please connect with my Red Matrix channel address:"] = "Una volta che avrai completato la registrazione (su QUALSIASI sito Red Matrix - sono tutti interconnessi), potrai connetterti al mio canale:";
-$a->strings["Click the [Register] link on the following page to join."] = "Fai clic su [Registrati] nella pagina seguente per iscriverti.";
-$a->strings["For more information about the Red Matrix Project and why it has the potential to change the internet as we know it, please visit http://getzot.com"] = "Per saperne di più sul progetto Red Matrix e sul perché potrebbe cambiare internet per come la conosciamo, visita http://getzot.com";
+$a->strings["Send"] = "Invia";
+$a->strings["Message not found."] = "Messaggio non trovato.";
+$a->strings["Delete message"] = "Elimina il messaggio";
+$a->strings["Recall message"] = "Revoca il messaggio";
+$a->strings["Message has been recalled."] = "Il messaggio è stato revocato.";
+$a->strings["Private Conversation"] = "Conversazione privata";
+$a->strings["Delete conversation"] = "Elimina la conversazione";
+$a->strings["No secure communications available. You <strong>may</strong> be able to respond from the sender's profile page."] = "Non è disponibile alcuna tecnologia per comunicare in modo sicuro. <strong>Se possibile</strong>, prova a rispondere direttamente dalla pagina del profilo del mittente.";
+$a->strings["Send Reply"] = "Invia la risposta";
+$a->strings["Page owner information could not be retrieved."] = "Impossibile ottenere informazioni sul proprietario della pagina.";
+$a->strings["Album not found."] = "Album non trovato.";
+$a->strings["Delete Album"] = "Elimina album";
+$a->strings["Delete Photo"] = "Elimina foto";
+$a->strings["No photos selected"] = "Nessuna foto selezionata";
+$a->strings["Access to this item is restricted."] = "Questo elemento non è visibile a tutti.";
+$a->strings["%1$.2f MB of %2$.2f MB photo storage used."] = "Hai usato %1$.2f Mb dei %2$.2f Mb di spazio disponibile.";
+$a->strings["%1$.2f MB photo storage used."] = "Hai usato %1$.2f Mb del tuo spazio disponibile.";
+$a->strings["Upload Photos"] = "Carica foto";
+$a->strings["Enter a new album name"] = "Inserisci il nome di un nuovo album";
+$a->strings["or select an existing one (doubleclick)"] = "o seleziona uno esistente (doppio click)";
+$a->strings["Do not show a status post for this upload"] = "Non creare un messaggio di stato per questo caricamento";
+$a->strings["Album name could not be decoded"] = "Non è stato possibile leggere il nome dell'album";
+$a->strings["Contact Photos"] = "Foto dei contatti";
+$a->strings["Show Newest First"] = "Prima i più recenti";
+$a->strings["Show Oldest First"] = "Prima i più vecchi";
+$a->strings["View Photo"] = "Guarda la foto";
+$a->strings["Edit Album"] = "Modifica album";
+$a->strings["Permission denied. Access to this item may be restricted."] = "Permesso negato. L'accesso a questo elemento può essere stato limitato.";
+$a->strings["Photo not available"] = "Foto non disponibile";
+$a->strings["Use as profile photo"] = "Usa come foto del profilo";
+$a->strings["Private Photo"] = "Foto privata";
+$a->strings["View Full Size"] = "Vedi nelle dimensioni originali";
+$a->strings["Edit photo"] = "Modifica la foto";
+$a->strings["Rotate CW (right)"] = "Ruota (senso orario)";
+$a->strings["Rotate CCW (left)"] = "Ruota (senso antiorario)";
+$a->strings["Caption"] = "Titolo";
+$a->strings["Add a Tag"] = "Aggiungi tag";
+$a->strings["Example: @bob, @Barbara_Jensen, @jim@example.com"] = "Esempio: @bob, @Barbara_Jensen, @jim@example.com";
+$a->strings["Flag as adult in album view"] = "Marca come 'per adulti'";
+$a->strings["In This Photo:"] = "In questa foto:";
+$a->strings["View Album"] = "Guarda l'album";
+$a->strings["Recent Photos"] = "Foto recenti";
+$a->strings["Bookmark added"] = "Segnalibro aggiunto";
+$a->strings["My Bookmarks"] = "I miei segnalibri";
+$a->strings["My Connections Bookmarks"] = "I segnalibri dei miei contatti";
+$a->strings["This site is not a directory server"] = "Questo sito non è un server di elenchi pubblici";
+$a->strings["RedMatrix - Guests: Username: {your email address}, Password: +++"] = "Accesso a Red Matrix. {Inserisci l'email con cui sei registrato e la password.}";
+$a->strings["network"] = "rete";
+$a->strings["Block Name"] = "Nome del riquadro";
+$a->strings["Edit Block"] = "Modifica il riquadro";
+$a->strings["Delete block?"] = "Vuoi eliminare questo riquadro?";
+$a->strings["Delete Block"] = "Elimina il riquadro";
+$a->strings["Layout updated."] = "Layout aggiornato.";
+$a->strings["Edit System Page Description"] = "Modifica i layout di sistema";
+$a->strings["Layout not found."] = "Layout non trovato.";
+$a->strings["Module Name:"] = "Nome del modulo:";
+$a->strings["Layout Help"] = "Guida al layout";
+$a->strings["Edit Layout"] = "Modifica il layout";
+$a->strings["Delete layout?"] = "Vuoi eliminare questo layout?";
+$a->strings["Delete Layout"] = "Elimina il layout";
+$a->strings["Red Matrix - &quot;The Network&quot;"] = "RedMatrix - &quot;La tua rete&quot;";
+$a->strings["Welcome to %s"] = "%s ti dà il benvenuto";
+$a->strings["Edit Webpage"] = "Modifica la pagina web";
+$a->strings["Delete webpage?"] = "Vuoi eliminare questa pagina web?";
+$a->strings["Delete Webpage"] = "Elimina la pagina web";
+$a->strings["webpage"] = "pagina web";
+$a->strings["block"] = "riquadro";
+$a->strings["layout"] = "layout";
+$a->strings["%s element installed"] = "%s elemento installato";
+$a->strings["Image uploaded but image cropping failed."] = "L'immagine è stata caricata, ma il non è stato possibile ritagliarla.";
+$a->strings["Image resize failed."] = "Il ridimensionamento dell'immagine è fallito.";
+$a->strings["Shift-reload the page or clear browser cache if the new photo does not display immediately."] = "Ricarica la pagina con shift+F5 o cancella la cache del browser se la nuova foto non viene mostrata immediatamente.";
+$a->strings["Image exceeds size limit of %d"] = "La dimensione dell'immagine supera il limite di %d";
+$a->strings["Unable to process image."] = "Impossibile elaborare l'immagine.";
+$a->strings["Photo not available."] = "Foto non disponibile.";
+$a->strings["Upload File:"] = "Carica un file:";
+$a->strings["Select a profile:"] = "Seleziona un profilo:";
+$a->strings["Upload Profile Photo"] = "Carica la foto del profilo";
+$a->strings["skip this step"] = "salta questo passaggio";
+$a->strings["select a photo from your photo albums"] = "seleziona una foto dai tuoi album";
+$a->strings["Crop Image"] = "Ritaglia immagine";
+$a->strings["Please adjust the image cropping for optimum viewing."] = "Ritaglia l'immagine per migliorarne la visualizzazione.";
+$a->strings["Done Editing"] = "Modifica terminata";
+$a->strings["Image uploaded successfully."] = "Immagine caricata con successo.";
+$a->strings["Image upload failed."] = "Il caricamento dell'immagine è fallito.";
+$a->strings["Image size reduction [%s] failed."] = "Il ridimensionamento del'immagine [%s] è fallito.";
+$a->strings["Like/Dislike"] = "Mi piace/Non mi piace";
+$a->strings["This action is restricted to members."] = "Questa funzionalità è riservata agli iscritti.";
+$a->strings["Please <a href=\"rmagic\">login with your RedMatrix ID</a> or <a href=\"register\">register as a new RedMatrix member</a> to continue."] = "Per favore <a href=\"rmagic\">accedi con il tuo identificativo RedMatrix</a> o <a href=\"register\">registrati su RedMatrix</a> per continuare.";
+$a->strings["Invalid request."] = "Richiesta non valida.";
+$a->strings["thing"] = "oggetto";
+$a->strings["Channel unavailable."] = "Canale non trovato.";
+$a->strings["Previous action reversed."] = "Il comando precedente è stato annullato.";
+$a->strings["Action completed."] = "Comando completato.";
+$a->strings["Thank you."] = "Grazie.";
+$a->strings["Help:"] = "Guida:";
+$a->strings["Not Found"] = "Non disponibile";
$a->strings["Thing updated"] = "L'oggetto è stato aggiornato";
$a->strings["Object store: failed"] = "Impossibile memorizzare l'oggetto.";
$a->strings["Thing added"] = "L'oggetto è stato aggiunto";
@@ -1490,174 +1500,45 @@ $a->strings["Select a profile"] = "Scegli un profilo";
$a->strings["Post an activity"] = "Pubblica un'attività";
$a->strings["Only sends to viewers of the applicable profile"] = "Invia solo a chi segue il relativo canale";
$a->strings["Name of thing e.g. something"] = "Nome dell'oggetto";
-$a->strings["URL of thing (optional)"] = "Indirizzo web dell'oggetto";
+$a->strings["URL of thing (optional)"] = "Indirizzo web dell'oggetto (opzionale)";
$a->strings["URL for photo of thing (optional)"] = "Indirizzo di un'immagine dell'oggetto (facoltativo)";
$a->strings["Add Thing to your Profile"] = "Aggiungi l'oggetto al tuo profilo";
-$a->strings["Unable to find your hub."] = "Impossibile raggiungere il tuo hub.";
-$a->strings["Post successful."] = "Inviato!";
-$a->strings["Help:"] = "Guida:";
-$a->strings["Not Found"] = "Non disponibile";
-$a->strings["No connections."] = "Nessun contatto.";
-$a->strings["Visit %s's profile [%s]"] = "Visita il profilo di %s [%s]";
-$a->strings["View Connnections"] = "Guarda i contatti";
-$a->strings["Invalid profile identifier."] = "Indentificativo del profilo non valido.";
-$a->strings["Profile Visibility Editor"] = "Modifica la visibilità del profilo";
-$a->strings["Click on a contact to add or remove."] = "Clicca su un contatto per aggiungerlo o rimuoverlo.";
-$a->strings["Visible To"] = "Visibile a";
-$a->strings["Maximum daily site registrations exceeded. Please try again tomorrow."] = "È stato superato il numero massimo giornaliero di registrazioni a questo sito. Riprova domani!";
-$a->strings["Please indicate acceptance of the Terms of Service. Registration failed."] = "Impossibile proseguire. Devi prima accettare le Condizioni d'Uso del servizio.";
-$a->strings["Passwords do not match."] = "Le password non corrispondono.";
-$a->strings["Registration successful. Please check your email for validation instructions."] = "La registrazione è terminata correttamente. Per continuare controlla l'email che ti è stata inviata.";
-$a->strings["Your registration is pending approval by the site owner."] = "La tua richiesta è in attesa di approvazione da parte dell'amministratore del sito.";
-$a->strings["Your registration can not be processed."] = "La tua registrazione non puo' essere acquisita.";
-$a->strings["Registration on this site/hub is by approval only."] = "La registrazione su questo sito è soggetta ad approvazione.";
-$a->strings["<a href=\"pubsites\">Register at another affiliated site/hub</a>"] = "<a href=\"pubsites\">Registrati su un altro server affiliato</a>";
-$a->strings["This site has exceeded the number of allowed daily account registrations. Please try again tomorrow."] = "Questo sito ha superato il numero di registrazioni giornaliere consentite. Prova di nuovo domani.";
-$a->strings["Terms of Service"] = "Condizioni d'Uso";
-$a->strings["I accept the %s for this website"] = "Accetto le %s di questo sito";
-$a->strings["I am over 13 years of age and accept the %s for this website"] = "Ho più di 13 anni e accetto le %s di questo sito";
-$a->strings["Membership on this site is by invitation only."] = "Per registrarsi su questo sito è necessario un invito.";
-$a->strings["Please enter your invitation code"] = "Inserisci il codice dell'invito";
-$a->strings["Your email address"] = "Il tuo indirizzo email";
-$a->strings["Choose a password"] = "Scegli una password";
-$a->strings["Please re-enter your password"] = "Ripeti la password per verifica";
-$a->strings["No such group"] = "Impossibile trovare l'insieme";
-$a->strings["Search Results For:"] = "Cerca risultati con:";
-$a->strings["Collection is empty"] = "L'insieme di canali è vuoto";
-$a->strings["Collection: "] = "Insieme:";
-$a->strings["Connection: "] = "Connessione:";
-$a->strings["Invalid connection."] = "Connessione non valida.";
-$a->strings["No potential page delegates located."] = "Impossibile trovare delegati per questa pagina.";
-$a->strings["Delegate Page Management"] = "Gestione delegati per la pagina";
-$a->strings["Delegates are able to manage all aspects of this account/page except for basic account settings. Please do not delegate your personal account to anybody that you do not trust completely."] = "I Delegati sono in grando di gestire tutti gli aspetti di questa pagina, tranne per i settaggi di base dell'account. Non delegare il tuo account personale a nessuno di cui non ti fidi ciecamente.";
-$a->strings["Existing Page Managers"] = "Gestori attuali della pagina";
-$a->strings["Existing Page Delegates"] = "Delegati attuali della pagina";
-$a->strings["Potential Delegates"] = "Delegati potenziali";
-$a->strings["Add"] = "Aggiungi";
-$a->strings["No entries."] = "Nessun risultato.";
+$a->strings["Contact not found."] = "Contatto non trovato.";
+$a->strings["Friend suggestion sent."] = "Suggerimento di amicizia inviato.";
+$a->strings["Suggest Friends"] = "Suggerisci amici";
+$a->strings["Suggest a friend for %s"] = "Suggerisci un amico a %s";
+$a->strings["Permission Denied."] = "Permesso negato.";
+$a->strings["File not found."] = "File non trovato.";
+$a->strings["Edit file permissions"] = "Modifica i permessi del file";
+$a->strings["Set/edit permissions"] = "Modifica i permessi";
+$a->strings["Include all files and sub folders"] = "Includi tutti i file e le sottocartelle";
+$a->strings["Return to file list"] = "Torna all'elenco dei file";
+$a->strings["Copy/paste this code to attach file to a post"] = "Copia/incolla questo codice per far comparire il file in un articolo";
+$a->strings["Copy/paste this URL to link file from a web page"] = "Copia/incolla questo indirizzo in una pagina web per avere un link al file";
$a->strings["Continue"] = "Continua";
$a->strings["Premium Channel Setup"] = "Canale premium - installazione";
$a->strings["Enable premium channel connection restrictions"] = "Abilita le restrizioni del canale premium";
-$a->strings["Please enter your restrictions or conditions, such as paypal receipt, usage guidelines, etc."] = "Scrivi le condizioni d'uso e le restrizioni di questo canale, come per esempio le linee guida o il sistema di pagamento ecc.";
+$a->strings["Please enter your restrictions or conditions, such as paypal receipt, usage guidelines, etc."] = "Scrivi le condizioni d'uso e le restrizioni di questo canale, come per esempio le linee guida, il sistema di pagamento, ecc.";
$a->strings["This channel may require additional steps or acknowledgement of the following conditions prior to connecting:"] = "Prima di connetterti a questo canale è necessario che tu accetti le seguenti condizioni:";
-$a->strings["Potential connections will then see the following text before proceeding:"] = "Il testo seguente comparirà a chi vorrà connettersi:";
+$a->strings["Potential connections will then see the following text before proceeding:"] = "Il testo seguente comparirà a chi vorrà seguire il canale:";
$a->strings["By continuing, I certify that I have complied with any instructions provided on this page."] = "Continuando dichiaro di aver seguito tutte le indicazioni e le istruzioni fornite in questa pagina.";
$a->strings["(No specific instructions have been provided by the channel owner.)"] = "(Il gestore del canale non ha fornito istruzioni specifiche)";
$a->strings["Restricted or Premium Channel"] = "Canale premium - con restrizioni";
-$a->strings["Contact not found."] = "Contatto non trovato.";
-$a->strings["Friend suggestion sent."] = "Suggerimento di amicizia inviato.";
-$a->strings["Suggest Friends"] = "Suggerisci amici";
-$a->strings["Suggest a friend for %s"] = "Suggerisci un amico a %s";
-$a->strings["You have created %1$.0f of %2$.0f allowed channels."] = "Hai creato %1$.0f dei %2$.0f canali permessi.";
-$a->strings["Create a new channel"] = "Crea un nuovo canale";
-$a->strings["Channel Manager"] = "Gestione canali";
-$a->strings["Current Channel"] = "Canale attuale";
-$a->strings["Attach to one of your channels by selecting it."] = "Seleziona il canale a cui vuoi passare.";
-$a->strings["Default Channel"] = "Canale predefinito";
-$a->strings["Make Default"] = "Rendi predefinito";
-$a->strings["Remove This Channel"] = "Elimina questo canale";
-$a->strings["This will completely remove this channel from the network. Once this has been done it is not recoverable."] = "Questo comando rimuoverà completamente il canale che stai usando. Una volta fatto non sarà più possibile ripristinarlo.";
-$a->strings["Please enter your password for verification:"] = "Inserisci la tua password per verifica:";
-$a->strings["Remove this channel and all its clones from the network"] = "Rimuovi questo canale e tutti i suoi cloni dalla rete";
-$a->strings["By default only the instance of the channel located on this hub will be removed from the network"] = "L'impostazione predefinita è che sia eliminata solo l'istanza del canale presente su questo hub, non gli eventuali cloni";
-$a->strings["Remove Channel"] = "Elimina questo canale";
-$a->strings["Item not found"] = "Elemento non trovato";
-$a->strings["Item is not editable"] = "L'elemento non è modificabile";
-$a->strings["Edit post"] = "Modifica articolo";
-$a->strings["Delete item?"] = "Eliminare questo elemento?";
-$a->strings["Insert YouTube video"] = "Inserisci video da YouTube";
-$a->strings["Insert Vorbis [.ogg] video"] = "Inserisci video Vorbis [.ogg]";
-$a->strings["Insert Vorbis [.ogg] audio"] = "Inserisci audio Vorbis [.ogg]";
-$a->strings["Edit Webpage"] = "Modifica la pagina web";
-$a->strings["Delete webpage?"] = "Vuoi eliminare questa pagina web?";
-$a->strings["Delete Webpage"] = "Elimina la pagina web";
-$a->strings["Poke/Prod"] = "Poke/Prod";
-$a->strings["poke, prod or do other things to somebody"] = "Manda un poke, un prod o altro";
-$a->strings["Recipient"] = "Destinatario";
-$a->strings["Choose what you wish to do to recipient"] = "Scegli cosa vuoi inviare al destinatario";
-$a->strings["Make this post private"] = "Rendi privato questo articolo";
-$a->strings["Block Name"] = "Nome del riquadro";
-$a->strings["Collection created."] = "L'insieme di canali è stato creato.";
-$a->strings["Could not create collection."] = "Impossibile creare l'insieme.";
-$a->strings["Collection updated."] = "Insieme aggiornato.";
-$a->strings["Create a collection of channels."] = "Crea un insieme di canali.";
-$a->strings["Collection Name: "] = "Nome dell'insieme:";
-$a->strings["Members are visible to other channels"] = "I membri saranno visibili agli altri canali";
-$a->strings["Collection removed."] = "Insieme rimosso.";
-$a->strings["Unable to remove collection."] = "Impossibile rimuovere l'insieme.";
-$a->strings["Collection Editor"] = "Modifica l'insieme";
-$a->strings["Members"] = "Membri";
-$a->strings["All Connected Channels"] = "Tutti i canali connessi";
-$a->strings["Click on a channel to add or remove."] = "Clicca su un canale per aggiungerlo o rimuoverlo.";
-$a->strings["Tag removed"] = "Tag rimosso";
-$a->strings["Remove Item Tag"] = "Rimuovi il tag";
-$a->strings["Select a tag to remove: "] = "Seleziona un tag da rimuovere: ";
-$a->strings["Item not available."] = "Elemento non disponibile.";
-$a->strings["Unable to locate original post."] = "Impossibile trovare il messaggio originale.";
-$a->strings["Empty post discarded."] = "L'articolo vuoto è stato ignorato.";
-$a->strings["Executable content type not permitted to this channel."] = "I contenuti eseguibili non sono permessi su questo canale.";
-$a->strings["System error. Post not saved."] = "Errore di sistema. Articolo non salvato.";
-$a->strings["You have reached your limit of %1$.0f top level posts."] = "Hai raggiunto il limite massimo di %1$.0f articoli sulla pagina principale.";
-$a->strings["You have reached your limit of %1$.0f webpages."] = "Hai raggiunto il limite massimo di %1$.0f pagine web.";
-$a->strings["Red Matrix - Guests: Username: {your email address}, Password: +++"] = "Accesso a Red Matrix. Inserisci l'email con cui sei registrato e la password.";
-$a->strings["Away"] = "Assente";
-$a->strings["Online"] = "Online";
-$a->strings["Finding:"] = "Ricerca:";
-$a->strings["next page"] = "pagina succ.";
-$a->strings["previous page"] = "pagina prec.";
-$a->strings["No entries (some entries may be hidden)."] = "Nessun risultato (qualcosa potrebbe essere nascosto).";
-$a->strings["Profile Match"] = "Profili corrispondenti";
-$a->strings["No keywords to match. Please add keywords to your default profile."] = "Nessuna parola chiave per le ricerche. Aggiungi parole chiave al tuo profilo predefinito.";
-$a->strings["is interested in:"] = "interessi personali:";
-$a->strings["No matches"] = "Nessun risultato";
-$a->strings["This site is not a directory server"] = "Questo sito non fornisce l'elenco generale dei canali";
-$a->strings["Version %s"] = "Versione %s";
-$a->strings["Installed plugins/addons/apps:"] = "App e componenti installati:";
-$a->strings["No installed plugins/addons/apps"] = "Nessuna app o componente installato";
-$a->strings["Red"] = "Red";
-$a->strings["This is a hub of the Red Matrix - a global cooperative network of decentralised privacy enhanced websites."] = "Questo è un hub di Red Matrix - una rete cooperativa e decentralizzata di siti con elevato livello di privacy. ";
-$a->strings["Running at web location"] = "In esecuzione sull'indirizzo web";
-$a->strings["Please visit <a href=\"http://getzot.com\">GetZot.com</a> to learn more about the Red Matrix."] = "Visita <a href=\"http://getzot.com\">GetZot.com</a> per scoprire il progetto Red Matrix.";
-$a->strings["Bug reports and issues: please visit"] = "Per segnalare bug e problemi: visita";
-$a->strings["Suggestions, praise, etc. - please email \"redmatrix\" at librelist - dot com"] = "Per consigli, ringraziamenti, ecc. - scrivi a \"redmatrix\" at librelist - dot com";
-$a->strings["Site Administrators"] = "Amministratori del sito";
-$a->strings["App installed."] = "App installata";
-$a->strings["Malformed app."] = "App non corretta";
-$a->strings["Embed code"] = "Inserisci del codice";
-$a->strings["Edit App"] = "Modifica app";
-$a->strings["Create App"] = "Crea una app";
-$a->strings["Name of app"] = "Nome app";
-$a->strings["Required"] = "Obbligatorio";
-$a->strings["Location (URL) of app"] = "Indirizzo (URL) della app";
-$a->strings["Photo icon URL"] = "URL icona";
-$a->strings["80 x 80 pixels - optional"] = "80 x 80 pixel - facoltativa";
-$a->strings["Version ID"] = "ID versione";
-$a->strings["Price of app"] = "Prezzo app";
-$a->strings["Location (URL) to purchase app"] = "Indirizzo (URL) per acquistare la app";
-$a->strings["Failed to create source. No channel selected."] = "Impossibile creare la sorgente. Nessun canale selezionato.";
-$a->strings["Source created."] = "Sorgente creata.";
-$a->strings["Source updated."] = "Sorgente aggiornata.";
-$a->strings["*"] = "*";
-$a->strings["Manage remote sources of content for your channel."] = "Gestisci le sorgenti dei contenuti del tuo canale.";
-$a->strings["New Source"] = "Nuova sorgente";
-$a->strings["Import all or selected content from the following channel into this channel and distribute it according to your channel settings."] = "Importa nel tuo canale tutti o una parte dei contenuti dal canale seguente.";
-$a->strings["Only import content with these words (one per line)"] = "Importa solo i contenuti che hanno queste parole (una per riga)";
-$a->strings["Leave blank to import all public content"] = "Lascia vuoto per importare tutti i contenuti pubblici";
-$a->strings["Source not found."] = "Sorgente non trovata.";
-$a->strings["Edit Source"] = "Modifica la sorgente";
-$a->strings["Delete Source"] = "Elimina la sorgente";
-$a->strings["Source removed"] = "Sorgente eliminata";
-$a->strings["Unable to remove source."] = "Impossibile rimuovere la sorgente.";
-$a->strings["Public Sites"] = "Siti pubblici";
-$a->strings["The listed sites allow public registration into the Red Matrix. All sites in the matrix are interlinked so membership on any of them conveys membership in the matrix as a whole. Some sites may require subscription or provide tiered service plans. The provider links <strong>may</strong> provide additional details."] = "Gli indirizzi elencati permettono la registrazione su Red Matrix. Tutti i siti di questa rete sono interconnessi, quindi essere registrati su uno è come essere registrati ovunque. Alcuni potrebbero richiedere un'iscrizione a pagamento o prevedere tipi diversi di abbonamento. Potrai trovare maggiori informazioni al riguardo visitando ciascun sito.";
-$a->strings["Site URL"] = "URL del sito";
-$a->strings["Access Type"] = "Tipo di accesso";
-$a->strings["Registration Policy"] = "Politica di registrazione";
-$a->strings["Location"] = "Luogo attuale";
+$a->strings["- select -"] = "- scegli -";
+$a->strings["Location not found."] = "Indirizzo non trovato.";
+$a->strings["Primary location cannot be removed."] = "L'indirizzo principale non può essere rimosso.";
+$a->strings["No locations found."] = "Nessun indirizzo trovato.";
+$a->strings["Manage Channel Locations"] = "Modifica gli indirizzi del canale";
+$a->strings["Location (address)"] = "Indirizzo";
+$a->strings["Primary Location"] = "Indirizzo primario";
+$a->strings["Drop location"] = "Elimina un indirizzo";
+$a->strings["Channel added."] = "Canale aggiunto.";
+$a->strings["Your service plan only allows %d channels."] = "Il tuo account permette di creare al massimo %d canali.";
$a->strings["Nothing to import."] = "Non c'è niente da importare.";
$a->strings["Unable to download data from old server"] = "Impossibile importare i dati dal vecchio server";
$a->strings["Imported file is empty."] = "Il file da importare è vuoto.";
$a->strings["Cannot create a duplicate channel identifier on this system. Import failed."] = "Non posso creare un canale con un identificativo che già esiste su questo sistema. L'importazione è fallita.";
+$a->strings["Unable to create a unique channel address. Import failed."] = "Impossibile creare un indirizzo univoco per il canale. L'import è fallito.";
$a->strings["Channel clone failed. Import failed."] = "Impossibile clonare il canale. L'importazione è fallita.";
$a->strings["Cloned channel not found. Import failed."] = "Impossibile trovare il canale clonato. L'importazione è fallita.";
$a->strings["Import completed."] = "L'importazione è terminata con successo!";
@@ -1669,32 +1550,25 @@ $a->strings["Or provide the old server/hub details"] = "Oppure fornisci i dettag
$a->strings["Your old identity address (xyz@example.com)"] = "Il tuo vecchio identificativo (per esempio pippo@esempio.com)";
$a->strings["Your old login email address"] = "L'email che usavi per accedere sul vecchio server";
$a->strings["Your old login password"] = "La password per il vecchio server";
-$a->strings["For either option, please choose whether to make this hub your new primary address, or whether your old location should continue this role. You will be able to post from either location, but only one can be marked as the primary location for files, photos, and media."] = "Per ciascuna opzione, scegli se vuoi rendere questo server il tuo indirizzo primario, oppure se preferisci che lo rimanga il vecchio. Potrai pubblicare da entrambi i server, ma solamente uno sarà marcato come primario per i tuoi file, foto, ecc.";
+$a->strings["For either option, please choose whether to make this hub your new primary address, or whether your old location should continue this role. You will be able to post from either location, but only one can be marked as the primary location for files, photos, and media."] = "Scegli se vuoi spostare il tuo indirizzo primario su questo server, oppure se preferisci che quello vecchio resti tale. Potrai pubblicare da entrambi i server, ma solamente uno sarà indicato come posizione in cui risiedono i tuoi file, foto, ecc.";
$a->strings["Make this hub my primary location"] = "Rendi questo server il mio indirizzo primario";
-$a->strings["invalid target signature"] = "la firma riscontrata non è valida";
-$a->strings["Unable to lookup recipient."] = "Impossibile associare un destinatario.";
-$a->strings["Unable to communicate with requested channel."] = "Impossibile comunicare con il canale richiesto.";
-$a->strings["Cannot verify requested channel."] = "Impossibile verificare il canale richiesto.";
-$a->strings["Selected channel has private message restrictions. Send failed."] = "Il canale ha delle regole restrittive per la ricezione dei messaggi privati. Invio fallito.";
-$a->strings["Message deleted."] = "Messaggio eliminato.";
-$a->strings["Message recalled."] = "Messaggio revocato.";
-$a->strings["Send Private Message"] = "Invia un messaggio privato";
-$a->strings["To:"] = "A:";
-$a->strings["Subject:"] = "Oggetto:";
-$a->strings["Message not found."] = "Messaggio non trovato.";
-$a->strings["Recall message"] = "Revoca il messaggio";
-$a->strings["Message has been recalled."] = "Il messaggio è stato revocato.";
-$a->strings["Private Conversation"] = "Conversazione privata";
-$a->strings["Delete conversation"] = "Elimina la conversazione";
-$a->strings["No secure communications available. You <strong>may</strong> be able to respond from the sender's profile page."] = "Non è disponibile alcun sistema per comunicare in modo sicuro. Puoi verificare se <strong>eventualmente</strong> è possibile rispondere dalla pagina del profilo del mittente.";
-$a->strings["Send Reply"] = "Invia la risposta";
-$a->strings["You must be logged in to see this page."] = "Devi aver effettuato l'accesso per vedere questa pagina.";
-$a->strings["Insufficient permissions. Request redirected to profile page."] = "Permessi insufficienti. Sarà visualizzata la pagina del profilo.";
+$a->strings["Import existing posts if possible"] = "Importazione dei post esistenti, se possibile";
+$a->strings["Unable to locate original post."] = "Impossibile trovare il messaggio originale.";
+$a->strings["Empty post discarded."] = "L'articolo vuoto è stato ignorato.";
+$a->strings["Executable content type not permitted to this channel."] = "I contenuti eseguibili non sono permessi su questo canale.";
+$a->strings["System error. Post not saved."] = "Errore di sistema. Articolo non salvato.";
+$a->strings["You have reached your limit of %1$.0f top level posts."] = "Hai raggiunto il limite massimo di %1$.0f articoli sulla pagina principale.";
+$a->strings["You have reached your limit of %1$.0f webpages."] = "Hai raggiunto il limite massimo di %1$.0f pagine web.";
+$a->strings["No suggestions available. If this is a new site, please try again in 24 hours."] = "Nessun suggerimento disponibile. Se questo sito è nuovo, riprova tra 24 ore.";
+$a->strings["Help with this feature"] = "La guida per questa funzionalità";
+$a->strings["Layout Name"] = "Nome layout";
+$a->strings["%1\$s tagged %2\$s's %3\$s with %4\$s"] = "%1\$s ha taggato %3\$s di %2\$s con %4\$s";
$a->strings["Profile not found."] = "Profilo non trovato.";
$a->strings["Profile deleted."] = "Profilo eliminato.";
$a->strings["Profile-"] = "Profilo-";
$a->strings["New profile created."] = "Il nuovo profilo è stato creato.";
$a->strings["Profile unavailable to clone."] = "Impossibile duplicare il profilo.";
+$a->strings["Profile unavailable to export."] = "Il profilo non è disponibile per l'export.";
$a->strings["Profile Name is required."] = "Il nome del profilo è obbligatorio .";
$a->strings["Marital Status"] = "Stato sentimentale";
$a->strings["Romantic Partner"] = "Partner affettivo";
@@ -1707,6 +1581,7 @@ $a->strings["Gender"] = "Sesso";
$a->strings["Sexual Preference"] = "Preferenze sessuali";
$a->strings["Homepage"] = "Home page";
$a->strings["Interests"] = "Interessi";
+$a->strings["Address"] = "Indirizzo";
$a->strings["Profile updated."] = "Profilo aggiornato.";
$a->strings["Hide your contact/friend list from viewers of this profile?"] = "Nascondi la tua lista di contatti/amici ai visitatori di questo profilo?";
$a->strings["Edit Profile Details"] = "Modifica i dettagli del profilo";
@@ -1715,11 +1590,13 @@ $a->strings["Change Profile Photo"] = "Cambia la foto del profilo";
$a->strings["Create a new profile using these settings"] = "Crea un nuovo profilo usando queste impostazioni";
$a->strings["Clone this profile"] = "Clona questo profilo";
$a->strings["Delete this profile"] = "Elimina questo profilo";
+$a->strings["Import profile from file"] = "Importa il profilo da un file";
+$a->strings["Export profile to file"] = "Esporta il profilo in un file";
$a->strings["Profile Name:"] = "Nome del profilo:";
$a->strings["Your Full Name:"] = "Il tuo nome completo:";
$a->strings["Title/Description:"] = "Titolo/descrizione:";
$a->strings["Your Gender:"] = "Sesso:";
-$a->strings["Birthday (%s):"] = "Compleanno (%s):";
+$a->strings["Birthday :"] = "Compleanno:";
$a->strings["Street Address:"] = "Indirizzo (via/piazza):";
$a->strings["Locality/City:"] = "Località:";
$a->strings["Postal/Zip Code:"] = "CAP:";
@@ -1745,70 +1622,364 @@ $a->strings["Film/dance/culture/entertainment"] = "Film/danza/cultura/intratteni
$a->strings["Love/romance"] = "Amore";
$a->strings["Work/employment"] = "Lavoro/impiego";
$a->strings["School/education"] = "Scuola/educazione";
-$a->strings["This is your <strong>public</strong> profile.<br />It <strong>may</strong> be visible to anybody using the internet."] = "Questo è il tuo profilo <strong>publico</strong>.<br /><strong>Potrebbe</strong> essere visto da chiunque attraverso internet.";
+$a->strings["This is your default profile."] = "Questo è il tuo profilo predefinito.";
+$a->strings["Age: "] = "Età:";
$a->strings["Edit/Manage Profiles"] = "Modifica/gestisci i profili";
$a->strings["Add profile things"] = "Aggiungi oggetti al profilo";
$a->strings["Include desirable objects in your profile"] = "Aggiungi oggetti interessanti al tuo profilo";
-$a->strings["Bookmark added"] = "Segnalibro aggiunto";
-$a->strings["My Bookmarks"] = "I miei segnalibri";
-$a->strings["My Connections Bookmarks"] = "I segnalibri dei miei contatti";
-$a->strings["No channel."] = "Nessun canale.";
-$a->strings["Common connections"] = "Contatti in comune";
-$a->strings["No connections in common."] = "Nessun contatto in comune.";
-$a->strings["thing"] = "oggetto";
-$a->strings["No more system notifications."] = "Non ci sono nuove notifiche di sistema.";
-$a->strings["System Notifications"] = "Notifiche di sistema";
-$a->strings["Authorize application connection"] = "Autorizza la app";
-$a->strings["Return to your app and insert this Securty Code:"] = "Torna alla app e inserisci questo codice di sicurezza:";
-$a->strings["Please login to continue."] = "Accedi al sito per continuare.";
-$a->strings["Do you want to authorize this application to access your posts and contacts, and/or create new posts for you?"] = "Vuoi autorizzare questa app ad accedere ai messaggi e ai contatti o creare nuovi messaggi per te?";
-$a->strings["Room not found"] = "Chat non trovata";
-$a->strings["Leave Room"] = "Lascia la chat";
-$a->strings["Delete This Room"] = "Elimina questa chat";
-$a->strings["I am away right now"] = "Non sono presente al momento";
-$a->strings["I am online"] = "Sono online";
-$a->strings["Bookmark this room"] = "Aggiungi chat ai segnalibri";
-$a->strings["New Chatroom"] = "Nuova chat";
-$a->strings["Chatroom Name"] = "Nome della chat";
-$a->strings["%1\$s's Chatrooms"] = "Le chat di %1\$s";
-$a->strings["Event title and start time are required."] = "Sono necessari il titolo e l'ora d'inizio dell'evento.";
-$a->strings["l, F j"] = "l j F";
-$a->strings["Edit event"] = "Modifica l'evento";
-$a->strings["Create New Event"] = "Crea un nuovo evento";
-$a->strings["Previous"] = "Precendente";
-$a->strings["hour:minute"] = "ora:minuti";
-$a->strings["Event details"] = "Dettagli evento";
-$a->strings["Format is %s %s. Starting date and Title are required."] = "Il formato è %s %s. L'inizio e il titolo sono obbligatori.";
-$a->strings["Event Starts:"] = "Inizio:";
-$a->strings["Finish date/time is not known or not relevant"] = "La data/ora di fine non è rilevante";
-$a->strings["Event Finishes:"] = "Fine:";
-$a->strings["Adjust for viewer timezone"] = "Adatta al fuso orario di chi legge";
-$a->strings["Description:"] = "Descrizione:";
-$a->strings["Title:"] = "Titolo:";
-$a->strings["Share this event"] = "Condividi questo evento";
+$a->strings["Tag removed"] = "Tag rimosso";
+$a->strings["Remove Item Tag"] = "Rimuovi il tag";
+$a->strings["Select a tag to remove: "] = "Seleziona un tag da rimuovere: ";
+$a->strings["Theme settings updated."] = "Le impostazioni del tema sono state aggiornate.";
+$a->strings["Site"] = "Sito";
+$a->strings["Accounts"] = "Account";
+$a->strings["Channels"] = "Canali";
+$a->strings["Plugins"] = "Plugin";
+$a->strings["Themes"] = "Temi";
+$a->strings["Server"] = "Server";
+$a->strings["Profile Config"] = "Configurazione del profilo";
+$a->strings["DB updates"] = "Aggiornamenti al DB";
+$a->strings["Logs"] = "Log";
+$a->strings["Plugin Features"] = "Plugin";
+$a->strings["User registrations waiting for confirmation"] = "Registrazioni in attesa";
+$a->strings["Message queues"] = "Messaggi in attesa di recapito";
+$a->strings["Administration"] = "Amministrazione";
+$a->strings["Summary"] = "Riepilogo";
+$a->strings["Registered users"] = "Utenti registrati";
+$a->strings["Pending registrations"] = "Registrazioni da approvare";
+$a->strings["Version"] = "Versione";
+$a->strings["Active plugins"] = "Plugin attivi";
+$a->strings["Site settings updated."] = "Impostazioni del sito salvate correttamente.";
+$a->strings["experimental"] = "sperimentale";
+$a->strings["unsupported"] = "non supportato";
+$a->strings["Yes - with approval"] = "Sì - con approvazione";
+$a->strings["My site is not a public server"] = "Non è un server pubblico";
+$a->strings["My site has paid access only"] = "È un servizio a pagamento";
+$a->strings["My site has free access only"] = "È un servizio gratuito";
+$a->strings["My site offers free accounts with optional paid upgrades"] = "È un servizio gratuito con opzioni aggiuntive a pagamento";
+$a->strings["File upload"] = "Caricamento file";
+$a->strings["Policies"] = "Politiche";
+$a->strings["Site name"] = "Nome del sito";
+$a->strings["Banner/Logo"] = "Banner o logo";
+$a->strings["Administrator Information"] = "Informazioni sull'amministratore";
+$a->strings["Contact information for site administrators. Displayed on siteinfo page. BBCode can be used here"] = "Informazioni per contattare gli amministratori del sito. Saranno mostrate sulla pagina di informazioni. È consentito il BBcode";
+$a->strings["System language"] = "Lingua di sistema";
+$a->strings["System theme"] = "Tema di sistema";
+$a->strings["Default system theme - may be over-ridden by user profiles - <a href='#' id='cnftheme'>change theme settings</a>"] = "Il tema di sistema può essere cambiato dai profili dei singoli utenti - <a href='#' id='cnftheme'>Cambia le impostazioni del tema</a>";
+$a->strings["Mobile system theme"] = "Tema di sistema per dispositivi mobili";
+$a->strings["Theme for mobile devices"] = "Tema per i dispositivi mobili";
+$a->strings["Enable Diaspora Protocol"] = "Abilita la comunicazione con Diaspora";
+$a->strings["Communicate with Diaspora and Friendica - experimental"] = "Sperimentale - per comunicare con Diaspora e Friendica";
+$a->strings["Allow Feeds as Connections"] = "Permetti di aggiungere i feed come contatti";
+$a->strings["(Heavy system resource usage)"] = "(Uso intenso delle risorse di sistema!)";
+$a->strings["Maximum image size"] = "Dimensione massima immagini";
+$a->strings["Maximum size in bytes of uploaded images. Default is 0, which means no limits."] = "Massima dimensione in byte delle immagini caricate. Il default è 0, cioè nessun limite.";
+$a->strings["Does this site allow new member registration?"] = "Questo sito permette a nuovi utenti di registrarsi?";
+$a->strings["Which best describes the types of account offered by this hub?"] = "Come descriveresti il tipo di servizio proposto da questo server?";
+$a->strings["Register text"] = "Testo di registrazione";
+$a->strings["Will be displayed prominently on the registration page."] = "Sarà mostrato ben visibile nella pagina di registrazione.";
+$a->strings["Accounts abandoned after x days"] = "Account abbandonati dopo X giorni";
+$a->strings["Will not waste system resources polling external sites for abandonded accounts. Enter 0 for no time limit."] = "Eviterà di sprecare risorse di sistema controllando se i siti esterni hanno account abbandonati. Immettere 0 per non imporre nessun limite di tempo.";
+$a->strings["Allowed friend domains"] = "Domini fidati e consentiti";
+$a->strings["Comma separated list of domains which are allowed to establish friendships with this site. Wildcards are accepted. Empty to allow any domains"] = "Elenco separato da virglola dei domini che possono stabilire amicizie con questo sito. Sono accettati caratteri jolly. Lascia vuoto per accettare connessioni da qualsiasi dominio.";
+$a->strings["Allowed email domains"] = "Domini email consentiti";
+$a->strings["Comma separated list of domains which are allowed in email addresses for registrations to this site. Wildcards are accepted. Empty to allow any domains"] = "Elenco separato da virgola dei domini permessi come indirizzi email in fase di registrazione. Sono accettati caratteri jolly. Lascia vuoto per accettare qualsiasi dominio email";
+$a->strings["Block public"] = "Blocca pagine pubbliche";
+$a->strings["Check to block public access to all otherwise public personal pages on this site unless you are currently logged in."] = "Seleziona per impedire di vedere le pagine personali di questo sito a chi non ha effettuato l'accesso.";
+$a->strings["Verify Email Addresses"] = "Verifica l'indirizzo email";
+$a->strings["Check to verify email addresses used in account registration (recommended)."] = "Attiva per richiedere la verifica degli indirizzi email dei nuovi utenti (consigliato).";
+$a->strings["Force publish"] = "Forza la publicazione del profilo";
+$a->strings["Check to force all profiles on this site to be listed in the site directory."] = "Seleziona per mostrare nell'elenco pubblico <strong>tutti</strong> i profili registrati su questo sito.";
+$a->strings["Disable discovery tab"] = "Disabilita la funzione 'scopri'";
+$a->strings["Remove the tab in the network view with public content pulled from sources chosen for this site."] = "Nell'area della rete personale non comparirà più la scheda con i contenuti acquisiti da altri siti.";
+$a->strings["No login on Homepage"] = "Non mostrare il login sulla homepage";
+$a->strings["Check to hide the login form from your sites homepage when visitors arrive who are not logged in (e.g. when you put the content of the homepage in via the site channel)."] = "Per nascondere la possibilità di fare login ai visitatori (per esempio, quando il contenuto della homepage del sito è alimentato da un canale).";
+$a->strings["Proxy user"] = "Utente proxy";
+$a->strings["Proxy URL"] = "URL proxy";
+$a->strings["Network timeout"] = "Timeout rete";
+$a->strings["Value is in seconds. Set to 0 for unlimited (not recommended)."] = "Valore in secondi. Imposta a 0 per illimitato (sconsigliato).";
+$a->strings["Delivery interval"] = "Recapito ritardato";
+$a->strings["Delay background delivery processes by this many seconds to reduce system load. Recommend: 4-5 for shared hosts, 2-3 for virtual private servers. 0-1 for large dedicated servers."] = "Numero di secondi di cui può essere ritardato il recapito, per ridurre il carico di sistema. Consigliati: 4-5 secondi per hosting condiviso, 2-3 per i VPS, 0-1 per grandi server dedicati.";
+$a->strings["Poll interval"] = "Intervallo di polling";
+$a->strings["Delay background polling processes by this many seconds to reduce system load. If 0, use delivery interval."] = "Numero di secondi di cui può essere ritardato il polling in background, per ridurre il carico del sistema. Se 0, verrà usato lo stesso valore del 'Recapito ritardato'.";
+$a->strings["Maximum Load Average"] = "Carico massimo medio";
+$a->strings["Maximum system load before delivery and poll processes are deferred - default 50."] = "Carico di sistema massimo perché i processi di recapito e polling siano ritardati - il valore predefinito è 50.";
+$a->strings["No server found"] = "Server non trovato";
+$a->strings["ID"] = "ID";
+$a->strings["for channel"] = "per canale";
+$a->strings["on server"] = "sul server";
+$a->strings["Status"] = "Stato";
+$a->strings["Update has been marked successful"] = "L'aggiornamento è stato marcato come eseguito.";
+$a->strings["Executing %s failed. Check system logs."] = "Fallita l'esecuzione di %s. Maggiori informazioni sui log di sistema.";
+$a->strings["Update %s was successfully applied."] = "L'aggiornamento %s è terminato correttamente.";
+$a->strings["Update %s did not return a status. Unknown if it succeeded."] = "L'aggiornamento %s non ha dato risposta. Impossibile determinare se è terminato correttamente.";
+$a->strings["Update function %s could not be found."] = "Impossibile trovare la funzione di aggiornamento %s";
+$a->strings["No failed updates."] = "Nessun aggiornamento fallito.";
+$a->strings["Failed Updates"] = "Aggiornamenti falliti.";
+$a->strings["Mark success (if update was manually applied)"] = "Marca come eseguito (se applicato manualmente).";
+$a->strings["Attempt to execute this update step automatically"] = "Tenta di eseguire in automatico questo passaggio dell'aggiornamento.";
+$a->strings["%s user blocked/unblocked"] = array(
+ 0 => "%s utente bloccato/sbloccato",
+ 1 => "%s utenti bloccati/sbloccati",
+);
+$a->strings["%s user deleted"] = array(
+ 0 => "%s utente cancellato",
+ 1 => "%s utenti cancellati",
+);
+$a->strings["Account not found"] = "Account non trovato";
+$a->strings["User '%s' unblocked"] = "Utente '%s' sbloccato";
+$a->strings["User '%s' blocked"] = "Utente '%s' bloccato";
+$a->strings["Users"] = "Utenti";
+$a->strings["select all"] = "seleziona tutti";
+$a->strings["User registrations waiting for confirm"] = "Richieste di registrazione in attesa di conferma";
+$a->strings["Request date"] = "Data richiesta";
+$a->strings["No registrations."] = "Nessuna registrazione.";
+$a->strings["Approve"] = "Approva";
+$a->strings["Deny"] = "Nega";
+$a->strings["Register date"] = "Data registrazione";
+$a->strings["Last login"] = "Ultimo accesso";
+$a->strings["Expires"] = "Con scadenza";
+$a->strings["Service Class"] = "Classe dell'account";
+$a->strings["Selected users will be deleted!\\n\\nEverything these users had posted on this site will be permanently deleted!\\n\\nAre you sure?"] = "Gli utenti selezionati saranno eliminati!\\n\\nTutto quello che gli utenti hanno pubblicato su questo sito sarà permanentemente eliminato!\\n\\nConfermi?";
+$a->strings["The user {0} will be deleted!\\n\\nEverything this user has posted on this site will be permanently deleted!\\n\\nAre you sure?"] = "L'utente {0} sarà eliminato!\\n\\nTutto quello che ha pubblicato su questo sito sarà permanentemente eliminato!\\n\\nConfermi?";
+$a->strings["%s channel censored/uncensored"] = array(
+ 0 => "Censura modificata per %s canale",
+ 1 => "Censura modificata per %s canali",
+);
+$a->strings["%s channel deleted"] = array(
+ 0 => "%s canale è stato rimosso",
+ 1 => "%s canali sono stati rimossi",
+);
+$a->strings["Channel not found"] = "Canale non trovato";
+$a->strings["Channel '%s' deleted"] = "Il canale '%s' è stato rimosso";
+$a->strings["Channel '%s' uncensored"] = "Rimossa la censura dal canale '%s'";
+$a->strings["Channel '%s' censored"] = "Applicata una censura al canale '%s'";
+$a->strings["Censor"] = "Applica una censura";
+$a->strings["Uncensor"] = "Rimuovi la censura";
+$a->strings["UID"] = "UID";
+$a->strings["Selected channels will be deleted!\\n\\nEverything that was posted in these channels on this site will be permanently deleted!\\n\\nAre you sure?"] = "I canali selezionati saranno rimossi!\\n\\nTutto ciò che è stato pubblicato su questo server tramite questi canali sarà irreversibilmente eliminato!\\n\\nVuoi confermare?";
+$a->strings["The channel {0} will be deleted!\\n\\nEverything that was posted in this channel on this site will be permanently deleted!\\n\\nAre you sure?"] = "Il canale {0} sarà rimosso!\\n\\nTutto ciò che è stato pubblicato su questo server tramite questo canale sarà irreversibilmente eliminato!\\n\\nVuoi confermare?";
+$a->strings["Plugin %s disabled."] = "Plugin %s non attivo.";
+$a->strings["Plugin %s enabled."] = "Plugin %s attivo.";
+$a->strings["Disable"] = "Disattiva";
+$a->strings["Enable"] = "Attiva";
+$a->strings["Toggle"] = "Attiva/disattiva";
+$a->strings["Author: "] = "Autore:";
+$a->strings["Maintainer: "] = "Gestore:";
+$a->strings["No themes found."] = "Nessun tema trovato.";
+$a->strings["Screenshot"] = "Istantanea dello schermo";
+$a->strings["[Experimental]"] = "[Sperimentale]";
+$a->strings["[Unsupported]"] = "[Non supportato]";
+$a->strings["Log settings updated."] = "Impostazioni di log aggiornate.";
+$a->strings["Clear"] = "Pulisci";
+$a->strings["Debugging"] = "Debugging";
+$a->strings["Log file"] = "File di log";
+$a->strings["Must be writable by web server. Relative to your Red top-level directory."] = "Deve essere scrivibile dal web server. La posizione è relativa alla cartella dove è installato RedMatrix.";
+$a->strings["Log level"] = "Livello di log";
+$a->strings["New Profile Field"] = "Nuovo campo del profilo";
+$a->strings["Field nickname"] = "Nome breve del campo";
+$a->strings["System name of field"] = "Nome di sistema del campo";
+$a->strings["Input type"] = "Tipo di dati";
+$a->strings["Field Name"] = "Nome del campo";
+$a->strings["Label on profile pages"] = "Etichetta da mostrare sulla pagina del profilo";
+$a->strings["Help text"] = "Testo di aiuto";
+$a->strings["Additional info (optional)"] = "Informazioni aggiuntive (opzionali)";
+$a->strings["Field definition not found"] = "Impossibile trovare la definizione del campo";
+$a->strings["Edit Profile Field"] = "Modifica campo del profilo";
+$a->strings["You have created %1$.0f of %2$.0f allowed channels."] = "Hai creato %1$.0f dei %2$.0f canali permessi.";
+$a->strings["Create a new channel"] = "Crea un nuovo canale";
+$a->strings["Current Channel"] = "Canale attuale";
+$a->strings["Attach to one of your channels by selecting it."] = "Seleziona il canale a cui vuoi passare.";
+$a->strings["Default Channel"] = "Canale predefinito";
+$a->strings["Make Default"] = "Rendi predefinito";
+$a->strings["Menu updated."] = "Menù aggiornato.";
+$a->strings["Unable to update menu."] = "Impossibile aggiornare il menù.";
+$a->strings["Menu created."] = "Menù creato.";
+$a->strings["Unable to create menu."] = "Impossibile creare il menù.";
+$a->strings["Manage Menus"] = "Gestione menù";
+$a->strings["Drop"] = "Elimina";
+$a->strings["Bookmarks allowed"] = "Permetti segnalibri";
+$a->strings["Create a new menu"] = "Crea un nuovo menù";
+$a->strings["Delete this menu"] = "Elimina questo menù";
+$a->strings["Edit menu contents"] = "Modifica i contenuti del menù";
+$a->strings["Edit this menu"] = "Modifica questo menù";
+$a->strings["New Menu"] = "Nuovo menù";
+$a->strings["Menu name"] = "Nome del menù";
+$a->strings["Must be unique, only seen by you"] = "Deve essere unico, lo vedrai solo tu";
+$a->strings["Menu title"] = "Titolo del menù";
+$a->strings["Menu title as seen by others"] = "Titolo del menù come comparirà a tutti";
+$a->strings["Allow bookmarks"] = "Permetti l'invio di segnalibri";
+$a->strings["Menu may be used to store saved bookmarks"] = "Puoi salvare i segnalibri nei menù";
+$a->strings["Menu deleted."] = "Menù eliminato.";
+$a->strings["Menu could not be deleted."] = "Il menù non può essere eliminato.";
+$a->strings["Edit Menu"] = "Modifica menù";
+$a->strings["Add or remove entries to this menu"] = "Aggiungi o rimuovi elementi di questo menù";
+$a->strings["Total invitation limit exceeded."] = "Hai superato il numero massimo di inviti.";
+$a->strings["%s : Not a valid email address."] = "%s: non è un indirizzo email valido.";
+$a->strings["Please join us on Red"] = "Vieni con noi su RedMatrix";
+$a->strings["Invitation limit exceeded. Please contact your site administrator."] = "Hai superato il numero massimo di inviti. Contatta l'amministratore se necessario.";
+$a->strings["%s : Message delivery failed."] = "%s: la consegna del messaggio è fallita.";
+$a->strings["%d message sent."] = array(
+ 0 => "%d messaggio inviato.",
+ 1 => "%d messaggi inviati.",
+);
+$a->strings["You have no more invitations available"] = "Non hai altri inviti disponibili";
+$a->strings["Send invitations"] = "Spedisci inviti";
+$a->strings["Enter email addresses, one per line:"] = "Inserisci gli indirizzi email, uno per riga:";
+$a->strings["Please join my community on RedMatrix."] = "Entra a far parte della mia comunità su RedMatrix.";
+$a->strings["You will need to supply this invitation code: "] = "Dovrai fornire questo codice di invito:";
+$a->strings["1. Register at any RedMatrix location (they are all inter-connected)"] = "1. Registrati su un qualsiasi sito RedMatrix (sono tutti interconnessi)";
+$a->strings["2. Enter my RedMatrix network address into the site searchbar."] = "2. Inserisci il mio indirizzo RedMatrix nella barra di ricerca che compare nella pagina.";
+$a->strings["or visit "] = "oppure visita ";
+$a->strings["3. Click [Connect]"] = "3. Clicca su [Aggiungi]";
+$a->strings["No such group"] = "Impossibile trovare l'insieme";
+$a->strings["Search Results For:"] = "Cerca risultati con:";
+$a->strings["Collection is empty"] = "L'insieme di canali è vuoto";
+$a->strings["Collection: "] = "Insieme:";
+$a->strings["Connection: "] = "Contatto:";
+$a->strings["Invalid connection."] = "Contatto non valido.";
$a->strings["Invalid request identifier."] = "L'identificativo della richiesta non è valido.";
$a->strings["Discard"] = "Rifiuta";
-$a->strings["No valid account found."] = "Nessun account valido trovato.";
-$a->strings["Password reset request issued. Check your email."] = "La richiesta per reimpostare la password è stata inviata. Controlla la tua email.";
-$a->strings["Site Member (%s)"] = "Utente del sito (%s)";
-$a->strings["Password reset requested at %s"] = "È stato richiesto di reimpostare password su %s";
-$a->strings["Request could not be verified. (You may have previously submitted it.) Password reset failed."] = "La richiesta non può essere verificata (potresti averla già usata precedentemente). La password non può essere reimpostata.";
-$a->strings["Your password has been reset as requested."] = "La password è stata reimpostata come richiesto.";
-$a->strings["Your new password is"] = "La tua nuova password è";
-$a->strings["Save or copy your new password - and then"] = "Salva o copia la tua nuova password, quindi";
-$a->strings["click here to login"] = "clicca qui per accedere";
-$a->strings["Your password may be changed from the <em>Settings</em> page after successful login."] = "Puoi cambiare la tua password dalla pagina delle <em>Impostazioni</em> dopo aver effettuato l'accesso.";
-$a->strings["Your password has changed at %s"] = "La tua password su %s è cambiata";
-$a->strings["Forgot your Password?"] = "Hai dimenticato la password?";
-$a->strings["Enter your email address and submit to have your password reset. Then check your email for further instructions."] = "Inserisci il tuo indirizzo email per reimpostare la password. Dopo aver inviato la richiesta, controlla l'email e troverai le istruzioni per continuare.";
-$a->strings["Email Address"] = "Indirizzo email";
-$a->strings["Reset"] = "Reimposta";
-$a->strings["Help with this feature"] = "La guida per questa funzionalità";
-$a->strings["Layout Name"] = "Nome layout";
-$a->strings["Edit Block"] = "Modifica il riquadro";
-$a->strings["Delete block?"] = "Vuoi eliminare questo riquadro?";
-$a->strings["Delete Block"] = "Elimina il riquadro";
-$a->strings["Edit Layout"] = "Modifica il layout";
-$a->strings["Delete layout?"] = "Vuoi eliminare questo layout?";
-$a->strings["Delete Layout"] = "Elimina il layout";
-$a->strings["Channel added."] = "Canale aggiunto.";
+$a->strings["No more system notifications."] = "Non ci sono nuove notifiche di sistema.";
+$a->strings["System Notifications"] = "Notifiche di sistema";
+$a->strings["[Embedded content - reload page to view]"] = "[Contenuto incorporato - ricarica la pagina per visualizzarlo correttamente]";
+$a->strings["Remote privacy information not available."] = "Le informazioni remote sulla privacy non sono disponibili.";
+$a->strings["Visible to:"] = "Visibile a:";
+$a->strings["No connections."] = "Nessun contatto.";
+$a->strings["Visit %s's profile [%s]"] = "Visita il profilo di %s [%s]";
+$a->strings["View Connnections"] = "Guarda i contatti";
+$a->strings["Hub not found."] = "Server non trovato.";
+$a->strings["Total votes"] = "Voti totali";
+$a->strings["Average Rating"] = "Valutazione media";
+$a->strings["OpenID protocol error. No ID returned."] = "Errore del protocollo OpenID. Nessun ID ricevuto in risposta.";
+$a->strings["Welcome %s. Remote authentication successful."] = "Ciao %s. L'autenticazione magica è avvenuta con successo.";
+$a->strings["Wall Photos"] = "Foto della bacheca";
+$a->strings["Profile Match"] = "Profili corrispondenti";
+$a->strings["No keywords to match. Please add keywords to your default profile."] = "Non hai scritto parole chiave. Aggiungi parole chiave al tuo profilo predefinito per comparire nelle ricerche.";
+$a->strings["is interested in:"] = "interessi personali:";
+$a->strings["No matches"] = "Nessun risultato";
+$a->strings["Conversation removed."] = "Conversazione rimossa.";
+$a->strings["No messages."] = "Nessun messaggio.";
+$a->strings["D, d M Y - g:i A"] = "D d M Y - G:i";
+$a->strings["Add a Channel"] = "Aggiungi un canale";
+$a->strings["A channel is your own collection of related web pages. A channel can be used to hold social network profiles, blogs, conversation groups and forums, celebrity pages, and much more. You may create as many channels as your service provider allows."] = "I contenuti che pubblichi sono mostrati nel tuo \"canale\". Un canale può essere usato come bacheca personale, come blog, oppure può essere un forum di discussione, un gruppo di interesse, una pagina di celebrità e molto altro. Puoi creare tanti canali quanti ne permette il tuo sito.";
+$a->strings["Examples: \"Bob Jameson\", \"Lisa and her Horses\", \"Soccer\", \"Aviation Group\" "] = "Per esempio: \"Mario Rossi\", \"Lisa e le sue ricette\", \"Il campionato\", \"Il gruppo di escursionismo\"";
+$a->strings["Choose a short nickname"] = "Scegli un nome breve";
+$a->strings["Your nickname will be used to create an easily remembered channel address (like an email address) which you can share with others."] = "Il nome breve sarà usato per creare un indirizzo facile da ricordare per il tuo canale (simile a una email). Così potrai condividerlo e gli altri potranno trovarti.";
+$a->strings["Or <a href=\"import\">import an existing channel</a> from another location"] = "Oppure <a href=\"import\">importa un tuo canale esistente</a> da un altro server/hub";
+$a->strings["Channel Type"] = "Tipo di canale";
+$a->strings["?"] = "?";
+$a->strings["What is this?"] = "Questo cos'è?";
+$a->strings["Please choose a channel type (such as social networking or community forum) and privacy requirements so we can select the best permissions for you"] = "Descrivi il tipo di canale che vorresti creare (per esempio se ti interessa più usarlo come social network, come un forum di discussione...) e il tipo di privacy che preferisci. RedMatrix sceglierà per te i permessi più adatti.";
+$a->strings["Xchan Lookup"] = "Ricerca canale";
+$a->strings["Lookup xchan beginning with (or webbie): "] = "Cerca un canale (o un webbie) che inizia per:";
+$a->strings["invalid target signature"] = "la firma ricevuta non è valida";
+$a->strings["Unable to find your hub."] = "Impossibile raggiungere il tuo hub.";
+$a->strings["Post successful."] = "Inviato!";
+$a->strings["Gender: "] = "Sesso:";
+$a->strings["Status: "] = "Stato:";
+$a->strings["Homepage: "] = "Homepage:";
+$a->strings["Hometown: "] = "Città dove vivo:";
+$a->strings["About: "] = "Informazioni:";
+$a->strings["Public Forum:"] = "Forum pubblico:";
+$a->strings["Keywords: "] = "Parole chiave:";
+$a->strings["Finding:"] = "Ricerca:";
+$a->strings["next page"] = "pagina successiva";
+$a->strings["previous page"] = "pagina precedente";
+$a->strings["No entries (some entries may be hidden)."] = "Nessun risultato (qualche elemento potrebbe essere nascosto).";
+$a->strings["Remote authentication blocked. You are logged into this site locally. Please logout and retry."] = "L'autenticazione magica dal tuo sito non è disponibile. Hai accesso solamente a questo sito. Puoi provare a disconnetterti per tentare di nuovo.";
+$a->strings["App installed."] = "App installata";
+$a->strings["Malformed app."] = "App non corretta";
+$a->strings["Embed code"] = "Inserisci del codice";
+$a->strings["Edit App"] = "Modifica app";
+$a->strings["Create App"] = "Crea una app";
+$a->strings["Name of app"] = "Nome app";
+$a->strings["Location (URL) of app"] = "Indirizzo (URL) della app";
+$a->strings["Photo icon URL"] = "URL icona";
+$a->strings["80 x 80 pixels - optional"] = "80 x 80 pixel - facoltativa";
+$a->strings["Version ID"] = "ID versione";
+$a->strings["Price of app"] = "Prezzo app";
+$a->strings["Location (URL) to purchase app"] = "Indirizzo (URL) per acquistare la app";
+$a->strings["Poll"] = "Sondaggio";
+$a->strings["View Results"] = "Guarda i risultati";
+$a->strings["Account removals are not allowed within 48 hours of changing the account password."] = "Non è possibile eliminare il tuo account prima di 48 ore dall'ultimo cambio password.";
+$a->strings["Remove This Account"] = "Elimina questo account";
+$a->strings["This will completely remove this account including all its channels from the network. Once this has been done it is not recoverable."] = "Questa operazione rimuoverà completamente il tuo account dalla rete, inclusi tutti i suoi canali. Una volta avviata la rimozione, sarà definitiva.";
+$a->strings["Remove this account, all its channels and all its channel clones from the network"] = "Elimina dalla rete questo account, tutti i suoi canali e ANCHE tutti gli eventuali canali clonati.";
+$a->strings["By default only the instances of the channels located on this hub will be removed from the network"] = "A meno che tu non lo richieda espressamente, solo i canali presenti su questo server saranno rimossi dalla rete.";
+$a->strings["No service class restrictions found."] = "Non esistono restrizioni su questa classe di account.";
+$a->strings["Schema Default"] = "Schema predefinito";
+$a->strings["Sans-Serif"] = "Sans-serif";
+$a->strings["Monospace"] = "Monospace";
+$a->strings["Theme settings"] = "Impostazioni del tema";
+$a->strings["Set scheme"] = "Schema";
+$a->strings["Set font-size for posts and comments"] = "Dimensioni del carattere per articoli e commenti";
+$a->strings["Set font face"] = "Tipo di carattere";
+$a->strings["Set iconset"] = "Icone";
+$a->strings["Set big shadow size, default 15px 15px 15px"] = "Ombra grande, predefinita 15px 15px 15px";
+$a->strings["Set small shadow size, default 5px 5px 5px"] = "Ombra piccola, predefinita 5px 5px 5px";
+$a->strings["Set shadow color, default #000"] = "Colore dell'ombra, predefinito #000";
+$a->strings["Set radius size, default 5px"] = "Raggio degli angoli, predefinito 5px";
+$a->strings["Set line-height for posts and comments"] = "Altezza della riga per articoli e commenti";
+$a->strings["Set background image"] = "Immagine di sfondo";
+$a->strings["Set background attachment"] = "Allega uno sfondo";
+$a->strings["Set background color"] = "Colore di sfondo";
+$a->strings["Set section background image"] = "Immagine di sfondo della sezione";
+$a->strings["Set section background color"] = "Colore di sfondo dell'area principale";
+$a->strings["Set color of items - use hex"] = "Colore degli elementi della pagina - esadecimale";
+$a->strings["Set color of links - use hex"] = "Colore dei link - esadecimale";
+$a->strings["Set max-width for items. Default 400px"] = "Larghezza massima degli elementi della pagina. Predefinita: 400px";
+$a->strings["Set min-width for items. Default 240px"] = "Larghezza minima degli elementi della pagina. Predefinita: 240px";
+$a->strings["Set the generic content wrapper width. Default 48%"] = "Larghezza di tutta l'area dei contenuti. Predefinita: 48%";
+$a->strings["Set color of fonts - use hex"] = "Colore dei caratteri - esadecimale";
+$a->strings["Set background-size element"] = "Background-size element";
+$a->strings["Item opacity"] = "Opacità degli elementi della pagina";
+$a->strings["Display post previews only"] = "Mostra le anteprime solo degli articoli";
+$a->strings["Display side bar on channel page"] = "Mostra la colonna laterale sulla pagina del canale";
+$a->strings["Colour of the navigation bar"] = "Colore della barra di navigazione";
+$a->strings["Item float"] = "Float degli oggetti della pagina";
+$a->strings["Left offset of the section element"] = "Margine sinistro dell'area principale";
+$a->strings["Right offset of the section element"] = "Margine destro dell'area principale";
+$a->strings["Section width"] = "Larghezza dell'area principale";
+$a->strings["Left offset of the aside"] = "Margine sinistro della colonna laterale";
+$a->strings["Right offset of the aside element"] = "Margine destro della colonna laterale";
+$a->strings["Light (Red Matrix default)"] = "Light (predefinito)";
+$a->strings["Narrow navbar"] = "Barra di navigazione ristretta";
+$a->strings["Navigation bar background color"] = "Barra di navigazione: Colore di sfondo";
+$a->strings["Navigation bar gradient top color"] = "Barra di navigazione: Gradiente superiore";
+$a->strings["Navigation bar gradient bottom color"] = "Barra di navigazione: Gradiente inferiore";
+$a->strings["Navigation active button gradient top color"] = "Bottone di navigazione attivo: Gradiente superiore";
+$a->strings["Navigation active button gradient bottom color"] = "Bottone di navigazione attivo: Gradiente inferiore";
+$a->strings["Navigation bar border color "] = "Barra di navigazione: Colore del bordo";
+$a->strings["Navigation bar icon color "] = "Barra di navigazione: Colore delle icone";
+$a->strings["Navigation bar active icon color "] = "Barra di navigazione: Colore dell'icona attiva";
+$a->strings["link color"] = "colore del link";
+$a->strings["Set font-color for banner"] = "Colore del font del banner";
+$a->strings["Set the background color"] = "Imposta il colore di sfondo";
+$a->strings["Set the background image"] = "Immagine di sfondo";
+$a->strings["Set the background color of items"] = "Imposta il colore di sfondo degli oggetti";
+$a->strings["Set the background color of comments"] = "Imposta il colore di sfondo dei commenti";
+$a->strings["Set the border color of comments"] = "Imposta il colore del bordo dei commenti";
+$a->strings["Set the indent for comments"] = "Imposta il lo spostamento a destra dei commenti";
+$a->strings["Set the basic color for item icons"] = "Colore di base per le icone";
+$a->strings["Set the hover color for item icons"] = "Colore per le icone in mouse-over";
+$a->strings["Set font-size for the entire application"] = "Dimensione font per tutto il sito";
+$a->strings["Set font-color for posts and comments"] = "Imposta il colore del carattere per articoli e commenti";
+$a->strings["Set radius of corners"] = "Raggio degli angoli stondati";
+$a->strings["Set shadow depth of photos"] = "Profondità dell'ombra delle foto";
+$a->strings["Set maximum width of conversation regions"] = "Larghezza massima dell'area delle conversazioni";
+$a->strings["Center conversation regions"] = "Centra l'area delle conversazioni";
+$a->strings["Set minimum opacity of nav bar - to hide it"] = "Imposta l'opacità minima della barra di navigazione per nasconderla";
+$a->strings["Set size of conversation author photo"] = "Dimensione foto dell'autore della conversazione";
+$a->strings["Set size of followup author photos"] = "Dimensione foto dei partecipanti alla conversazione";
+$a->strings["Sloppy photo albums"] = "Album con foto storte";
+$a->strings["Are you a clean desk or a messy desk person?"] = "La tua scrivania è sempre a posto? Sei una persona disordinata?";
+$a->strings["Update %s failed. See error logs."] = "%s: aggiornamento fallito. Controlla i log di errore.";
+$a->strings["Update Error at %s"] = "Errore di aggiornamento su %s";
+$a->strings["Create an account to access services and applications within the Red Matrix"] = "Registrati per accedere ai servizi e alle applicazioni di RedMatrix";
+$a->strings["Password"] = "Password";
+$a->strings["Remember me"] = "Resta connesso";
+$a->strings["Forgot your password?"] = "Hai dimenticato la password?";
+$a->strings["permission denied"] = "permesso negato";
+$a->strings["Got Zot?"] = "Hai Zot?";
+$a->strings["toggle mobile"] = "attiva/disattiva versione mobile";
diff --git a/view/it/update_fail_eml.tpl b/view/it/update_fail_eml.tpl
index a7df8fc2f..08901b6fb 100644
--- a/view/it/update_fail_eml.tpl
+++ b/view/it/update_fail_eml.tpl
@@ -1,13 +1,13 @@
-Hey,
-I'm the web server at {{$sitename}};
+Ehilà!
+Sono il tuo fedele server {{$sitename}};
-The Red Matrix developers released update {{$update}} recently,
-but when I tried to install it, something went terribly wrong.
-This needs to be fixed soon and it requires human intervention.
-Please contact a Red developer if you can not figure out how to
-fix it on your own. My database might be invalid.
+Gli sviluppatori di Red Matrix hanno rilasciato l'update {{$update}},
+ma quando ho cercato di installarlo c'è stato qualcosa che non è filato liscio, per usare un eufemismo.
+Dovrebbe essere effettuata al più presto una correzione, ma sarà necessario l'intervento umano.
+Ti consiglio di contattare uno sviluppatore di Red se non riesci a capire come risolvere
+il problema per conto tuo. Per esempio, il database potrebbe non essere più valido.
-The error message is '{{$error}}'.
+Il messaggio di errore è '{{$error}}'.
-Apologies for the inconvenience,
- your web server at {{$siteurl}} \ No newline at end of file
+Sono mortificato per l'inconveniente,
+ Il tuo povero server web {{$siteurl}} \ No newline at end of file
diff --git a/view/it/wall_received_eml.tpl b/view/it/wall_received_eml.tpl
deleted file mode 100644
index ba9e25901..000000000
--- a/view/it/wall_received_eml.tpl
+++ /dev/null
@@ -1,18 +0,0 @@
-
-Caro/a $username,
-
- '$from' ha scritto qualcosa sulla bachecha del tuo profilo.
-
------
-$body
------
-
-Accedi a $siteurl per vedere o cancellare l'elemento:
-
-$display
-
-Grazie,
- L'amministratore di $sitename
-
-
-
diff --git a/view/it/wall_received_html_body_eml.tpl b/view/it/wall_received_html_body_eml.tpl
deleted file mode 100644
index cdc05cfa3..000000000
--- a/view/it/wall_received_html_body_eml.tpl
+++ /dev/null
@@ -1,24 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional //EN">
-<html>
-<head>
- <title>Messaggio da Friendika</title>
- <meta http-equiv="Content-Type" content="text/html;charset=utf-8" />
-</head>
-<body>
-<table style="border:1px solid #ccc">
- <tbody>
- <tr><td colspan="2" style="background:#084769; color:#FFFFFF; font-weight:bold; font-family:'lucida grande', tahoma, verdana,arial, sans-serif; padding: 4px 8px; vertical-align: middle; font-size:16px; letter-spacing: -0.03em; text-align: left;"><img style="width:32px;height:32px; float:left;" src='$siteurl/images/friendika-32.png'><div style="padding:7px; margin-left: 5px; float:left; font-size:18px;letter-spacing:1px;">Friendika</div><div style="clear: both;"></div></td></tr>
-
- <tr><td style="padding-top:22px;" colspan="2">$from ha scritto sulla tua bacheca.</td></tr>
-
-
- <tr><td style="padding-left:22px;padding-top:22px;width:60px;" valign="top" rowspan=3><a href="$url"><img style="border:0px;width:48px;height:48px;" src="$thumb"></a></td>
- <td style="padding-top:22px;"><a href="$url">$from</a></td></tr>
- <tr><td style="padding-right:22px;">$body</td></tr>
- <tr><td style="padding-top:11px;padding-bottom:11px;" colspan="2">Vai su <a href="$siteurl">$siteurl</a> per <a href="$display">vedere o cancellare il post</a>.</td></tr>
- <tr><td></td><td>Grazie,</td></tr>
- <tr><td></td><td>L'amministratore di $sitename</td></tr>
- </tbody>
-</table>
-</body>
-</html> \ No newline at end of file
diff --git a/view/it/wall_received_text_body_eml.tpl b/view/it/wall_received_text_body_eml.tpl
deleted file mode 100644
index 327557ea1..000000000
--- a/view/it/wall_received_text_body_eml.tpl
+++ /dev/null
@@ -1,18 +0,0 @@
-
-Caro $username,
-
- '$from' ha scritto sulla tua bacheca.
-
------
-$body
------
-
-Vai su $siteurl per vedere o cancellare il post:
-
-$display
-
-Grazie,
- L'amministratore di $sitename
-
-
-
diff --git a/view/js/acl.js b/view/js/acl.js
index c129634a0..77c65e21d 100644
--- a/view/js/acl.js
+++ b/view/js/acl.js
@@ -17,20 +17,24 @@ function ACL(backend_url, preset){
that.item_tpl = unescape($(".acl-list-item[rel=acl-template]").html());
that.showall = $("#acl-showall");
+ // set the initial ACL lists in case the enclosing form gets submitted before the ajax loader completes.
+ that.on_submit();
+
if (preset.length==0) that.showall.removeClass("btn-default").addClass("btn-warning");
/*events*/
$(document).ready(function() {
- that.showall.click(that.on_showall);
- $(document).on('click','.acl-button-show',that.on_button_show);
- $(document).on('click','.acl-button-hide',that.on_button_hide);
- $("#acl-search").keypress(that.on_search);
-// $("#acl-wrapper").parents("form").submit(that.on_submit);
+// setTimeout( function() {
+ that.showall.click(that.on_showall);
+ $(document).on('click','.acl-button-show',that.on_button_show);
+ $(document).on('click','.acl-button-hide',that.on_button_hide);
+ $("#acl-search").keypress(that.on_search);
- /* startup! */
- that.get(0,100);
- that.on_submit();
+ /* startup! */
+ that.get(0,100);
+ that.on_submit();
+// }, 5000 );
});
}
@@ -254,7 +258,7 @@ ACL.prototype.get = function(start,count, search){
}
ACL.prototype.populate = function(data){
- var height = Math.ceil(data.tot / that.nw) * 42;
+ var height = Math.ceil(data.items.length / that.nw) * 42;
that.list_content.height(height);
$(data.items).each(function(){
html = "<div class='acl-list-item {4} {7} {5}' title='{6}' id='{2}{3}'>"+that.item_tpl+"</div>";
diff --git a/view/js/autocomplete.js b/view/js/autocomplete.js
index c01ba6990..e68356057 100644
--- a/view/js/autocomplete.js
+++ b/view/js/autocomplete.js
@@ -1,200 +1,67 @@
/**
- * Friendica people autocomplete
+ * Red people autocomplete
*
- * require jQuery, jquery.textareas
+ * require jQuery, jquery.textcomplete
*/
-
-
-
-function ACPopup(elm,backend_url){
- this.idsel=-1;
- this.element = elm;
- this.searchText="";
- this.ready=true;
- this.kp_timer = false;
- this.url = backend_url;
-
- var w = 530;
- var h = 130;
-
-
- if(typeof elm.editorId == "undefined") {
- style = $(elm).offset();
- w = $(elm).width();
- h = $(elm).height();
- }
- else {
- var container = elm.getContainer();
- if(typeof container != "undefined") {
- style = $(container).offset();
- w = $(container).width();
- h = $(container).height();
- }
- }
-
- if(! w)
- w = 530;
-
- if(! h)
- h = 130;
-
- style.top=style.top+h;
- style.width = w;
- style.position = 'absolute';
- /* style['max-height'] = '150px';
- style.border = '1px solid red';
- style.background = '#cccccc';
-
- style.overflow = 'auto';
- style['z-index'] = '100000';
- */
- style.display = 'none';
-
- this.cont = $("<div class='acpopup'></div>");
- this.cont.css(style);
-
- $("body").append(this.cont);
-}
-ACPopup.prototype.close = function(){
- $(this.cont).remove();
- this.ready=false;
-}
-ACPopup.prototype.search = function(text){
- var that = this;
- this.searchText=text;
- if (this.kp_timer) clearTimeout(this.kp_timer);
- this.kp_timer = setTimeout( function(){that._search();}, 500);
-}
-ACPopup.prototype._search = function(){
- console.log("_search");
- var that = this;
+function mysearch(term, callback, backend_url, extra_channels) {
var postdata = {
start:0,
count:100,
- search:this.searchText,
+ search:term,
type:'c',
}
+
+ if(extra_channels)
+ postdata['extra_channels[]'] = extra_channels;
$.ajax({
type:'POST',
- url: this.url,
+ url: backend_url,
data: postdata,
dataType: 'json',
success:function(data){
- that.cont.html("");
- if (data.tot>0){
- that.cont.show();
- $(data.items).each(function(){
- html = "<img src='{0}' height='16px' width='16px'>{1} ({2})".format(this.photo, this.name, ((this.label) ? this.nick + ' ' + this.label : this.nick) )
- that.add(this.taggable, html, this.nick.replace(' ','') + '+' + this.id + ' - ' + this.link);
- });
- } else {
- that.cont.hide();
- }
- }
- });
-
-}
-ACPopup.prototype.add = function(taggable, label, value){
- var that=this;
- var elm = $("<div class='acpopupitem " + taggable +"' title='"+value+"'>"+label+"</div>");
- elm.click(function(e){
- t = $(this).attr('title').replace(new RegExp(' \- .*'),'');
- if(typeof(that.element.container) === "undefined") {
- el=$(that.element);
- sel = el.getSelection();
- sel.start = sel.start- that.searchText.length;
- el.setSelection(sel.start,sel.end).replaceSelectedText(t+' ').collapseSelection(false);
- that.close();
- }
- else {
- txt = tinyMCE.activeEditor.getContent();
- // alert(that.searchText + ':' + t);
- newtxt = txt.replace('@' + that.searchText, '@' + t + ' ');
- tinyMCE.activeEditor.setContent(newtxt);
- tinyMCE.activeEditor.focus();
- that.close();
- }
- });
- $(this.cont).append(elm);
-}
-ACPopup.prototype.onkey = function(event){
- if (event.keyCode == '13') {
- if(this.idsel>-1) {
- this.cont.children()[this.idsel].click();
- event.preventDefault();
- }
- else
- this.close();
- }
- if (event.keyCode == '38') { //cursor up
- cmax = this.cont.children().size()-1;
- this.idsel--;
- if (this.idsel<0) this.idsel=cmax;
- event.preventDefault();
- }
- if (event.keyCode == '40' || event.keyCode == '9') { //cursor down
- cmax = this.cont.children().size()-1;
- this.idsel++;
- if (this.idsel>cmax) this.idsel=0;
- event.preventDefault();
- }
-
- if (event.keyCode == '38' || event.keyCode == '40' || event.keyCode == '9') {
- this.cont.children().removeClass('selected');
- $(this.cont.children()[this.idsel]).addClass('selected');
- }
-
- if (event.keyCode == '27') { //ESC
- this.close();
- }
+ callback(data.items);
+ },
+ }).fail(function () {callback([]); }); // Callback must be invoked even if something went wrong.
}
-function ContactAutocomplete(element,backend_url){
- this.pattern=/@(\!*)([^ \n]+)$/;
- this.popup=null;
- var that = this;
-
- $(element).unbind('keydown');
- $(element).unbind('keyup');
-
- $(element).keydown(function(event){
- if (that.popup!==null) that.popup.onkey(event);
- });
-
- $(element).keyup(function(event){
- cpos = $(this).getSelection();
- if (cpos.start==cpos.end){
- match = $(this).val().substring(0,cpos.start).match(that.pattern);
- if (match!==null){
- if (that.popup===null){
- that.popup = new ACPopup(this, backend_url);
- }
- if (that.popup.ready && match[2]!==that.popup.searchText) that.popup.search(match[2]);
- if (!that.popup.ready) that.popup=null;
-
- } else {
- if (that.popup!==null) {that.popup.close(); that.popup=null;}
- }
-
-
- }
- });
-
+function format(item) {
+ return "<div class='{0}' title='{4}'><img src='{1}'>{2} ({3})</div>".format(item.taggable, item.photo, item.name, ((item.label) ? item.nick + ' ' + item.label : item.nick), item.link )
}
+function replace(item) {
+ // $2 ensures that prefix (@,@!) is preserved
+ var id = item.id;
+ // 16 chars of hash should be enough. Full hash could be used if it can be done in a visually appealing way.
+ // 16 chars is also the minimum length in the backend (otherwise it's interpreted as a local id).
+ if(id.length > 16)
+ id = item.id.substring(0,16);
+ return '$1$2'+item.nick.replace(' ','') + '+' + id;
+}
/**
* jQuery plugin 'contact_autocomplete'
*/
(function( $ ){
- $.fn.contact_autocomplete = function(backend_url) {
- this.each(function(){
- new ContactAutocomplete(this, backend_url);
- });
- };
-})( jQuery );
-
+ $.fn.contact_autocomplete = function(backend_url, extra_channels) {
+ if (typeof extra_channels === 'undefined') extra_channels = false;
+ // Autocomplete contacts
+ contacts = {
+ match: /(^|\s)(@\!*)([^ \n]+)$/,
+ index: 3,
+ search: function(term, callback) { mysearch(term, callback, backend_url, extra_channels); },
+ replace: replace,
+ template: format,
+ }
-
+ smilies = {
+ match: /(^|\s)(:[a-z]{2,})$/,
+ index: 2,
+ search: function(term, callback) { $.getJSON('/smilies/json').done(function(data) { callback($.map(data, function(entry) { return entry['text'].indexOf(term) === 0 ? entry : null })) }) },
+ template: function(item) { return item['icon'] + item['text'] },
+ replace: function(item) { return "$1"+item['text'] + ' '; },
+ }
+ this.textcomplete([contacts,smilies],{className:'acpopup'});
+ };
+})( jQuery );
diff --git a/view/js/jquery-compat.js b/view/js/jquery-compat.js
deleted file mode 100644
index 7bf912542..000000000
--- a/view/js/jquery-compat.js
+++ /dev/null
@@ -1,71 +0,0 @@
-
-// provide jquery.browser so we can get rid of the migration toolkit
-
-jQuery.uaMatch = function( ua ) {
- ua = ua.toLowerCase();
-
- var match = /(chrome)[ \/]([\w.]+)/.exec( ua ) ||
- /(webkit)[ \/]([\w.]+)/.exec( ua ) ||
- /(opera)(?:.*version|)[ \/]([\w.]+)/.exec( ua ) ||
- /(msie) ([\w.]+)/.exec( ua ) ||
- ua.indexOf("compatible") < 0 && /(mozilla)(?:.*? rv:([\w.]+)|)/.exec( ua ) ||
- [];
-
- return {
- browser: match[ 1 ] || "",
- version: match[ 2 ] || "0"
- };
-};
-
-
-// Don't clobber any existing jQuery.browser in case it's different
-if ( !jQuery.browser ) {
- matched = jQuery.uaMatch( navigator.userAgent );
- browser = {};
-
- if ( matched.browser ) {
- browser[ matched.browser ] = true;
- browser.version = matched.version;
- }
-
- // Chrome is Webkit, but Webkit is also Safari.
- if ( browser.chrome ) {
- browser.webkit = true;
- } else if ( browser.webkit ) {
- browser.safari = true;
- }
-
- jQuery.browser = browser;
-}
-
-jQuery.fn.toggle = function( fn, fn2 ) {
-
- // Don't mess with animation or css toggles
- if ( !jQuery.isFunction( fn ) || !jQuery.isFunction( fn2 ) ) {
- return oldToggle.apply( this, arguments );
- }
-
- // Save reference to arguments for access in closure
- var args = arguments,
- guid = fn.guid || jQuery.guid++,
- i = 0,
- toggler = function( event ) {
- // Figure out which function to execute
- var lastToggle = ( jQuery._data( this, "lastToggle" + fn.guid ) || 0 ) % i;
- jQuery._data( this, "lastToggle" + fn.guid, lastToggle + 1 );
-
- // Make sure that clicks stop
- event.preventDefault();
-
- // and execute the function
- return args[ lastToggle ].apply( this, arguments ) || false;
- };
-
- // link all the functions, so any of them can unbind this click handler
- toggler.guid = guid;
- while ( i < args.length ) {
- args[ i++ ].guid = guid;
- }
-
- return this.click( toggler );
-};
diff --git a/view/js/main.js b/view/js/main.js
index 191f24b59..85aea9875 100644
--- a/view/js/main.js
+++ b/view/js/main.js
@@ -113,7 +113,7 @@
}
function viewsrc(id) {
- $.colorbox({href: 'viewsrc/' + id });
+ $.colorbox({href: 'viewsrc/' + id, maxWidth: '80%', maxHeight: '80%' });
}
function qCommentInsert(obj,id) {
@@ -156,6 +156,15 @@
}
}
+ function closeOpen(theID) {
+ if(document.getElementById(theID).style.display == "none") {
+ document.getElementById(theID).style.display = "block"
+ }
+ else {
+ document.getElementById(theID).style.display = "none"
+ }
+ }
+
function openMenu(theID) {
document.getElementById(theID).style.display = "block"
}
@@ -171,6 +180,13 @@
timer = setTimeout(NavUpdate,2000);
}
+ function markItemRead(itemId) {
+ $.get('ping?f=&markItemRead='+itemId);
+ $('.unseen-wall-indicator-'+itemId).hide();
+ }
+
+
+
var src = null;
var prev = null;
var livetime = null;
@@ -191,6 +207,8 @@
var loadingPage = true;
var pageHasMoreContent = true;
var updateCountsOnly = false;
+ var divmore_height = 400;
+ var last_filestorage_id = null;
$(function() {
$.ajaxSetup({cache: false});
@@ -251,9 +269,9 @@
}
// fancyboxes
- $("a.popupbox").fancybox({
- 'transitionIn' : 'elastic',
- 'transitionOut' : 'elastic'
+ // Is this actually used anywhere?
+ $("a.popupbox").colorbox({
+ 'transition' : 'elastic'
});
@@ -267,6 +285,23 @@
return false;
}
}
+ if(event.keyCode == '34') {
+ if((pageHasMoreContent) && (! loadingPage)) {
+ $('#more').hide();
+ $('#no-more').hide();
+
+ next_page++;
+ scroll_next = true;
+ loadingPage = true;
+
+ if(($('.directory-end').length == 0) && ($('.photos-end').length == 0))
+ liveUpdate();
+ else
+ pageUpdate();
+ return true;
+ }
+ }
+
if(event.keyCode == '19' || (event.ctrlKey && event.which == '32')) {
event.preventDefault();
if(stopped == false) {
@@ -309,7 +344,7 @@
if($('#live-network').length) { src = 'network'; liveUpdate(); }
if($('#live-channel').length) { src = 'channel'; liveUpdate(); }
- if($('#live-community').length) { src = 'community'; liveUpdate(); }
+ if($('#live-home').length) { src = 'home'; liveUpdate(); }
if($('#live-display').length) { src = 'display'; liveUpdate(); }
if($('#live-search').length) { src = 'search'; liveUpdate(); }
@@ -384,6 +419,30 @@
}
+
+function updatePageItems(mode,data) {
+
+
+ if(mode === 'append') {
+ $(data).each(function() {
+ $('#page-end').before($(this));
+ });
+
+ if(loadingPage) {
+ loadingPage = false;
+ }
+ }
+
+ var e = document.getElementById('content-complete');
+ if(e) {
+ pageHasMoreContent = false;
+ }
+
+ collapseHeight();
+
+}
+
+
function updateConvItems(mode,data) {
if(mode === 'update') {
@@ -409,26 +468,18 @@ function updateConvItems(mode,data) {
$('#' + prev).after($(this));
if(isVisible)
showHideComments(itmId);
- $(".autotime").timeago();
- // divgrow doesn't prevent itself from attaching a second (or 500th)
- // "show more" div to a content region - it also has a few other
- // issues related to how we're trying to use it.
- // disable for now.
- // $("div.wall-item-body").divgrow({ initialHeight: 400 });
+ $(".autotime",this).timeago();
}
else {
$('img',this).each(function() {
$(this).attr('src',$(this).attr('dst'));
});
- // more FIXME related to expanded comments
if($('#collapsed-comments-'+itmId).is(':visible'))
isVisible = true;
$('#' + ident).replaceWith($(this));
if(isVisible)
showHideComments(itmId);
- $(".autotime").timeago();
- // $("div.wall-item-body").divgrow({ initialHeight: 400 });
-
+ $(".autotime",this).timeago();
}
prev = ident;
});
@@ -459,9 +510,7 @@ function updateConvItems(mode,data) {
$('#threads-end').before($(this));
if(isVisible)
showHideComments(itmId);
- $(".autotime").timeago();
- // $("div.wall-item-body").divgrow({ initialHeight: 400 });
-
+ $(".autotime",this).timeago();
}
else {
$('img',this).each(function() {
@@ -472,8 +521,7 @@ function updateConvItems(mode,data) {
$('#' + ident).replaceWith($(this));
if(isVisible)
showHideComments(itmId);
- $(".autotime").timeago();
- // $("div.wall-item-body").divgrow({ initialHeight: 400 });
+ $(".autotime",this).timeago();
}
});
@@ -507,9 +555,8 @@ function updateConvItems(mode,data) {
$('#' + prev).after($(this));
if(isVisible)
showHideComments(itmId);
- $(".autotime").timeago();
+ $(".autotime",this).timeago();
- // $("div.wall-item-body").divgrow({ initialHeight: 400 });
}
prev = ident;
});
@@ -527,7 +574,7 @@ function updateConvItems(mode,data) {
}
/* autocomplete @nicknames */
- $(".comment-edit-form textarea").contact_autocomplete(baseurl+"/acl");
+ $(".comment-edit-form textarea").contact_autocomplete(baseurl+"/acl?f=&n=1");
var bimgs = $(".wall-item-body img").not(function() { return this.complete; });
var bimgcount = bimgs.length;
@@ -548,21 +595,18 @@ function updateConvItems(mode,data) {
function collapseHeight() {
- $(".wall-item-body").each(function() {
- if($(this).height() > 410) {
+ $(".wall-item-body, .contact-info").each(function() {
+ if($(this).height() > divmore_height + 10) {
if(! $(this).hasClass('divmore')) {
- $(this).divgrow({ initialHeight: 400, moreText: aStr['divgrowmore'], lessText: aStr['divgrowless'], showBrackets: false });
+ $(this).readmore({collapsedHeight: divmore_height, moreLink: '<a href="#">'+aStr['divgrowmore']+'</a>', lessLink: '<a href="#">'+aStr['divgrowless']+'</a>'});
$(this).addClass('divmore');
}
- }
+ }
});
}
-
-
-
-
function liveUpdate() {
+ if(typeof profile_uid === 'undefined') profile_uid = false; /* Should probably be unified with channelId defined in head.tpl */
if((src == null) || (stopped) || (! profile_uid)) { $('.like-rotator').spin(false); return; }
if(($('.comment-edit-text-full').length) || (in_progress)) {
if(livetime) {
@@ -628,6 +672,56 @@ function updateConvItems(mode,data) {
}
+ function pageUpdate() {
+
+ in_progress = true;
+
+ var update_url;
+ var update_mode;
+
+ if(scroll_next) {
+ bParam_page = next_page;
+ page_load = true;
+ }
+ else {
+ bParam_page = 1;
+ }
+
+ update_url = baseurl + '/' + page_query + '/?f=&aj=1&page=' + bParam_page + extra_args ;
+
+ $("#page-spinner").spin('small');
+ update_mode = 'append';
+
+ $.get(update_url,function(data) {
+ page_load = false;
+ scroll_next = false;
+ updatePageItems(update_mode,data);
+ $("#page-spinner").spin(false);
+ in_progress = false;
+ });
+
+ }
+
+ function justifyPhotos() {
+ justifiedGalleryActive = true;
+ $('#photo-album-contents').justifiedGallery({
+ margins: 3,
+ sizeRangeSuffixes: {
+ 'lt100': '-2',
+ 'lt240': '-2',
+ 'lt320': '-2',
+ 'lt500': '',
+ 'lt640': '-1',
+ 'lt1024': '-0'
+ }
+ }).on('jg.complete', function(e){ justifiedGalleryActive = false; });
+ }
+
+ function justifyPhotosAjax() {
+ justifiedGalleryActive = true;
+ $('#photo-album-contents').justifiedGallery('norewind').on('jg.complete', function(e){ justifiedGalleryActive = false; });
+ }
+
function notify_popup_loader(notifyType) {
/* notifications template */
@@ -647,13 +741,13 @@ function updateConvItems(mode,data) {
if(data.notify.length==0){
- $("#nav-" + notifyType + "-menu").html(notifications_empty);
+ $("#nav-" + notifyType + "-menu").html(aStr[nothingnew]);
} else {
$("#nav-" + notifyType + "-menu").html(notifications_all + notifications_mark);
$(data.notify).each(function() {
- html = notifications_tpl.format(this.notify_link,this.photo,this.name,this.message,this.when,this.class);
+ html = notifications_tpl.format(this.notify_link,this.photo,this.name,this.message,this.when,this.hclass);
$("#nav-" + notifyType + "-menu").append(html);
});
$(".dropdown-menu img[data-src]").each(function(i, el){
@@ -750,6 +844,19 @@ function updateConvItems(mode,data) {
});
}
+ function filestorage(event,nick,id) {
+ $('#cloud-index-' + last_filestorage_id).removeClass('cloud-index-active');
+ $('#perms-panel-' + last_filestorage_id).hide().html('');
+ $('#file-edit-' + id).spin('tiny');
+ delete acl;
+ $.get('filestorage/' + nick + '/' + id + '/edit', function(data) {
+ $('#cloud-index-' + id).addClass('cloud-index-active');
+ $('#perms-panel-' + id).html(data).show();
+ $('#file-edit-' + id).spin(false);
+ last_filestorage_id = id;
+ });
+ }
+
function post_comment(id) {
unpause();
commentBusy = true;
@@ -797,12 +904,23 @@ function updateConvItems(mode,data) {
return true;
}
+ function importElement(elem) {
+ $.post(
+ "impel",
+ { "element" : elem },
+ function(data) {
+ if(timer) clearTimeout(timer);
+ timer = setTimeout(NavUpdate,10);
+ }
+ );
+ return false;
+ }
function preview_post() {
$("#jot-preview").val("1");
$("#jot-preview-content").show();
- tinyMCE.triggerSave();
+// tinyMCE.triggerSave();
$.post(
"item",
$("#profile-jot-form").serialize(),
@@ -879,6 +997,7 @@ function updateConvItems(mode,data) {
$('body').css('cursor', 'wait');
$.get('contactgroup/' + gid + '/' + cid, function(data) {
$('body').css('cursor', 'auto');
+ $('#group-' + gid).toggleClass('icon-check icon-check-empty');
});
}
@@ -918,6 +1037,8 @@ function fcFileBrowser (field_name, url, type, win) {
}
function setupFieldRichtext(){
+ return;
+/*
tinyMCE.init({
theme : "advanced",
mode : "specific_textareas",
@@ -941,6 +1062,7 @@ function setupFieldRichtext(){
theme_advanced_path : false,
file_browser_callback : "fcFileBrowser",
});
+*/
}
@@ -1012,8 +1134,9 @@ $(document).ready(function() {
-$(window).scroll(function () {
+$(window).scroll(function () {
if(typeof buildCmd == 'function') {
+ // This is a content page with items and/or conversations
$('#more').hide();
$('#no-more').hide();
@@ -1021,12 +1144,12 @@ $(window).scroll(function () {
$('#more').css("top","400");
$('#more').show();
}
-
+
if($(window).scrollTop() + $(window).height() > $(document).height() - 100) {
if((pageHasMoreContent) && (! loadingPage)) {
$('#more').hide();
$('#no-more').hide();
- // alert('scroll');
+
next_page++;
scroll_next = true;
loadingPage = true;
@@ -1034,6 +1157,27 @@ $(window).scroll(function () {
}
}
}
+ else {
+ // This is some other kind of page - perhaps a directory
+
+ if($(window).scrollTop() + $(window).height() > $(document).height() - 200) {
+ $('#more').css("top","400");
+ $('#more').show();
+ }
+
+ if($(window).scrollTop() + $(window).height() > $(document).height() - 100) {
+ if((pageHasMoreContent) && (! loadingPage) && (! justifiedGalleryActive)) {
+ $('#more').hide();
+ $('#no-more').hide();
+
+ next_page++;
+ scroll_next = true;
+ loadingPage = true;
+ pageUpdate();
+ }
+ }
+ }
+
});
var chanviewFullSize = false;
diff --git a/view/js/mod_admin.js b/view/js/mod_admin.js
new file mode 100644
index 000000000..aad2ca902
--- /dev/null
+++ b/view/js/mod_admin.js
@@ -0,0 +1,3 @@
+$(document).ready(function() {
+ $('form').areYouSure(); // Warn user about unsaved settings
+});
diff --git a/view/js/mod_connedit.js b/view/js/mod_connedit.js
index 4d25bb8c4..15b768929 100644
--- a/view/js/mod_connedit.js
+++ b/view/js/mod_connedit.js
@@ -1,20 +1,32 @@
+function abook_perms_msg() {
+ $('.abook-permschange').show();
+// $('.abook-permschange').html(aStr['permschange']);
+ $('.abook-permssave').show();
+}
+
$(document).ready(function() {
- if(typeof(after_following) !== 'undefined' && after_following)
- connectFullShare();
+ if(typeof(after_following) !== 'undefined' && after_following) {
+ if(typeof(connectDefaultShare) !== 'undefined')
+ connectDefaultShare();
+ else
+ connectFullShare();
+ }
$('#id_pending').click(function() {
- connectFullShare();
+ if(typeof(connectDefaultShare) !== 'undefined')
+ connectDefaultShare();
+ else
+ connectFullShare();
});
$('.abook-edit-me').click(function() {
- $('.abook-permschange').show();
- $('.abook-permschange').html(aStr['permschange']);
+ abook_perms_msg();
});
-
});
+
function connectFullShare() {
$('.abook-edit-me').each(function() {
if(! $(this).is(':disabled'))
@@ -34,9 +46,7 @@ function connectFullShare() {
$('#me_id_perms_view_storage').attr('checked','checked');
$('#me_id_perms_republish').attr('checked','checked');
$('#me_id_perms_post_like').attr('checked','checked');
-
- $('.abook-permschange').show();
- $('.abook-permschange').html(aStr['permschange']);
+ abook_perms_msg();
}
function connectCautiousShare() {
@@ -54,8 +64,7 @@ function connectCautiousShare() {
$('#me_id_perms_post_comments').attr('checked','checked');
$('#me_id_perms_post_mail').attr('checked','checked');
$('#me_id_perms_post_like').attr('checked','checked');
- $('.abook-permschange').show();
- $('.abook-permschange').html(aStr['permschange']);
+ abook_perms_msg();
}
@@ -78,8 +87,7 @@ function connectForum() {
$('#me_id_perms_tag_deliver').attr('checked','checked');
$('#me_id_perms_republish').attr('checked','checked');
$('#me_id_perms_post_like').attr('checked','checked');
- $('.abook-permschange').show();
- $('.abook-permschange').html(aStr['permschange']);
+ abook_perms_msg();
}
@@ -88,8 +96,8 @@ function connectClear() {
if(! $(this).is(':disabled'))
$(this).removeAttr('checked');
});
- $('.abook-permschange').show();
- $('.abook-permschange').html(aStr['permschange']);
+ abook_perms_msg();
+
}
function connectSoapBox() {
@@ -104,8 +112,8 @@ function connectSoapBox() {
$('#me_id_perms_view_contacts').attr('checked','checked');
$('#me_id_perms_view_storage').attr('checked','checked');
$('#me_id_perms_view_pages').attr('checked','checked');
- $('.abook-permschange').show();
- $('.abook-permschange').html(aStr['permschange']);
+ abook_perms_msg();
+
}
@@ -116,8 +124,7 @@ function connectFollowOnly() {
});
$('#me_id_perms_send_stream').attr('checked','checked');
- $('.abook-permschange').show();
- $('.abook-permschange').html(aStr['permschange']);
+ abook_perms_msg();
}
diff --git a/view/js/mod_directory.js b/view/js/mod_directory.js
index 291734b4f..74c8b414d 100644
--- a/view/js/mod_directory.js
+++ b/view/js/mod_directory.js
@@ -6,3 +6,6 @@ function dirdetails(hash) {
}
+$(document).ready(function() {
+ collapseHeight();
+}); \ No newline at end of file
diff --git a/view/js/mod_events.js b/view/js/mod_events.js
new file mode 100644
index 000000000..0ce128fcc
--- /dev/null
+++ b/view/js/mod_events.js
@@ -0,0 +1,37 @@
+
+$(document).ready( function() { showHideFinishDate(); });
+
+function showHideFinishDate() {
+ if( $('#event-nofinish-checkbox').is(':checked'))
+ $('#event-finish-wrapper').hide();
+ else
+ $('#event-finish-wrapper').show();
+}
+
+
+
+ function eventGetStart() {
+ //reply = prompt("{{$expirewhen}}", $('#jot-expire').val());
+ $('#startModal').modal();
+ $('#start-modal-OKButton').on('click', function() {
+ reply=$('#start-date').val();
+ if(reply && reply.length) {
+ $('#start-text').val(reply);
+ $('#startModal').modal('hide');
+ }
+ })
+
+
+ }
+ function eventGetFinish() {
+ //reply = prompt("{{$expirewhen}}", $('#jot-expire').val());
+ $('#finishModal').modal();
+ $('#finish-modal-OKButton').on('click', function() {
+ reply=$('#finish-date').val();
+ if(reply && reply.length) {
+ $('#finish-text').val(reply);
+ $('#finishModal').modal('hide');
+ }
+ })
+
+ }
diff --git a/view/js/mod_filestorage.js b/view/js/mod_filestorage.js
index 88c1cf7d8..bee37767f 100644
--- a/view/js/mod_filestorage.js
+++ b/view/js/mod_filestorage.js
@@ -13,4 +13,5 @@ $(document).ready(function() {
}
}).trigger('change');
+
});
diff --git a/view/js/mod_new_channel.js b/view/js/mod_new_channel.js
index a3c1dd05c..c4d5408f2 100644
--- a/view/js/mod_new_channel.js
+++ b/view/js/mod_new_channel.js
@@ -1,16 +1,21 @@
$(document).ready(function() {
+// $("#id_permissions_role").sSelect();
$("#newchannel-name").blur(function() {
+ $("#name-spinner").spin('small');
var zreg_name = $("#newchannel-name").val();
$.get("new_channel/autofill.json?f=&name=" + encodeURIComponent(zreg_name),function(data) {
$("#newchannel-nickname").val(data);
zFormError("#newchannel-name-feedback",data.error);
+ $("#name-spinner").spin(false);
});
});
$("#newchannel-nickname").blur(function() {
+ $("#nick-spinner").spin('small');
var zreg_nick = $("#newchannel-nickname").val();
$.get("new_channel/checkaddr.json?f=&nick=" + encodeURIComponent(zreg_nick),function(data) {
$("#newchannel-nickname").val(data);
zFormError("#newchannel-nickname-feedback",data.error);
+ $("#nick-spinner").spin(false);
});
});
diff --git a/view/js/mod_photos.js b/view/js/mod_photos.js
index aaa86df40..0a64f8102 100644
--- a/view/js/mod_photos.js
+++ b/view/js/mod_photos.js
@@ -3,15 +3,18 @@ var ispublic = aStr['everybody'];
$(document).ready(function() {
- $("a#photos-upload-perms-menu").colorbox({
- 'inline' : true,
- 'transition' : 'elastic'
+ var a;
+ a = $("#photo-edit-newtag").autocomplete({
+ serviceUrl: baseurl + '/acl',
+ minChars: 2,
+ width: 250,
+ id: 'newtag-ac',
+ onSelect: function(value,data) {
+ $("#photo-edit-newtag").val(data);
+ },
});
+ a.setOptions({ params: { type: 'p' }});
- $("a#settings-default-perms-menu").colorbox({
- 'inline' : true,
- 'transition' : 'elastic'
- });
$('#contact_allow, #contact_deny, #group_allow, #group_deny').change(function() {
var selstr;
diff --git a/view/js/mod_profiles.js b/view/js/mod_profiles.js
new file mode 100644
index 000000000..aad2ca902
--- /dev/null
+++ b/view/js/mod_profiles.js
@@ -0,0 +1,3 @@
+$(document).ready(function() {
+ $('form').areYouSure(); // Warn user about unsaved settings
+});
diff --git a/view/js/mod_settings.js b/view/js/mod_settings.js
index 77c9d0ced..0db0dd165 100644
--- a/view/js/mod_settings.js
+++ b/view/js/mod_settings.js
@@ -2,11 +2,20 @@
var ispublic = aStr['everybody'] ;
$(document).ready(function() {
+ $('form').areYouSure(); // Warn user about unsaved settings
- $("a#settings-default-perms-menu").colorbox({
- 'inline' : true,
- 'transition' : 'elastic'
- });
+ $("a#settings-default-perms-menu").colorbox({
+ 'inline' : true,
+ 'transition' : 'elastic'
+ });
+
+ $("#id_permissions_role").change(function() {
+ var role = $("#id_permissions_role").val();
+ if(role == 'custom')
+ $('#advanced-perm').show();
+ else
+ $('#advanced-perm').hide();
+ });
$('#contact_allow, #contact_deny, #group_allow, #group_deny').change(function() {
var selstr;
diff --git a/view/nb-no/follow_notify_eml.tpl b/view/nb-no/follow_notify_eml.tpl
deleted file mode 100644
index ba07b19da..000000000
--- a/view/nb-no/follow_notify_eml.tpl
+++ /dev/null
@@ -1,14 +0,0 @@
-
-Dear {{$myname}},
-
-You have a new follower at {{$sitename}} - '{{$requestor}}'.
-
-You may visit their profile at {{$url}}.
-
-Please login to your site to approve or ignore/cancel the request.
-
-{{$siteurl}}
-
-Regards,
-
- {{$sitename}} administrator
diff --git a/view/nb-no/friend_complete_eml.tpl b/view/nb-no/friend_complete_eml.tpl
deleted file mode 100644
index 1c647b994..000000000
--- a/view/nb-no/friend_complete_eml.tpl
+++ /dev/null
@@ -1,22 +0,0 @@
-
-Dear {{$username}},
-
- Great news... '{{$fn}}' at '{{$dfrn_url}}' has accepted
-your connection request at '{{$sitename}}'.
-
-You are now mutual friends and may exchange status updates, photos, and email
-without restriction.
-
-Please visit your 'Connnections' page at {{$sitename}} if you wish to make
-any changes to this relationship.
-
-{{$siteurl}}
-
-[For instance, you may create a separate profile with information that is not
-available to the general public - and assign viewing rights to '{{$fn}}'].
-
-Sincerely,
-
- {{$sitename}} Administrator
-
-
diff --git a/view/nb-no/intro_complete_eml.tpl b/view/nb-no/intro_complete_eml.tpl
deleted file mode 100644
index 2c2428d68..000000000
--- a/view/nb-no/intro_complete_eml.tpl
+++ /dev/null
@@ -1,22 +0,0 @@
-
-Dear {{$username}},
-
- '{{$fn}}' at '{{$dfrn_url}}' has accepted
-your connection request at '{{$sitename}}'.
-
- '{{$fn}}' has chosen to accept you a "fan", which restricts
-some forms of communication - such as private messaging and some profile
-interactions. If this is a celebrity or community page, these settings were
-applied automatically.
-
- '{{$fn}}' may choose to extend this into a two-way or more permissive
-relationship in the future.
-
- You will start receiving public status updates from '{{$fn}}',
-which will appear on your 'Matrix' page at
-
-{{$siteurl}}
-
-Sincerely,
-
- {{$sitename}} Administrator
diff --git a/view/nb-no/messages.po b/view/nb-no/messages.po
index d5d325345..a2f67253f 100644
--- a/view/nb-no/messages.po
+++ b/view/nb-no/messages.po
@@ -8,8 +8,8 @@ msgid ""
msgstr ""
"Project-Id-Version: Red Matrix\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2014-06-20 00:03-0700\n"
-"PO-Revision-Date: 2014-06-22 12:27+0000\n"
+"POT-Creation-Date: 2014-11-14 00:04-0800\n"
+"PO-Revision-Date: 2014-11-22 11:05+0000\n"
"Last-Translator: Haakon Meland Eriksen <haakon.eriksen@far.no>\n"
"Language-Team: Norwegian Bokmål (Norway) (http://www.transifex.com/projects/p/red-matrix/language/nb_NO/)\n"
"MIME-Version: 1.0\n"
@@ -18,1252 +18,1131 @@ msgstr ""
"Language: nb_NO\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-#: ../../include/dba/dba_driver.php:50
+#: ../../include/dba/dba_driver.php:132
#, php-format
msgid "Cannot locate DNS info for database server '%s'"
msgstr "Kan ikke finne DNS-informasjon om databasetjener '%s'"
-#: ../../include/photo/photo_driver.php:643 ../../include/photos.php:51
+#: ../../include/photo/photo_driver.php:680 ../../include/photos.php:52
+#: ../../mod/photos.php:91 ../../mod/photos.php:654
#: ../../mod/profile_photo.php:142 ../../mod/profile_photo.php:301
-#: ../../mod/profile_photo.php:421 ../../mod/photos.php:91
-#: ../../mod/photos.php:653 ../../mod/photos.php:675
+#: ../../mod/profile_photo.php:423
msgid "Profile Photos"
msgstr "Profilbilder"
-#: ../../include/bbcode.php:128 ../../include/bbcode.php:648
-#: ../../include/bbcode.php:651 ../../include/bbcode.php:656
-#: ../../include/bbcode.php:659 ../../include/bbcode.php:662
-#: ../../include/bbcode.php:665 ../../include/bbcode.php:670
-#: ../../include/bbcode.php:673 ../../include/bbcode.php:678
-#: ../../include/bbcode.php:681 ../../include/bbcode.php:684
-#: ../../include/bbcode.php:687
-msgid "Image/photo"
-msgstr "Bilde/fotografi"
-
-#: ../../include/bbcode.php:163 ../../include/bbcode.php:698
-msgid "Encrypted content"
-msgstr "Kryptert innhold"
-
-#: ../../include/bbcode.php:179
-msgid "QR code"
-msgstr "QR-kode"
-
-#: ../../include/bbcode.php:228
-#, php-format
-msgid "%1$s wrote the following %2$s %3$s"
-msgstr "%1$s skrev følgende %2$s %3$s"
-
-#: ../../include/bbcode.php:230
-msgid "post"
-msgstr "innlegg"
-
-#: ../../include/bbcode.php:616 ../../include/bbcode.php:636
-msgid "$1 wrote:"
-msgstr "$1 skrev:"
-
-#: ../../include/oembed.php:171
-msgid "Embedded content"
-msgstr "Innebygget innhold"
-
-#: ../../include/oembed.php:180
-msgid "Embedding disabled"
-msgstr "Innbygging avskrudd"
-
-#: ../../include/notify.php:23
-msgid "created a new post"
-msgstr "laget et nytt innlegg"
-
-#: ../../include/notify.php:24
-#, php-format
-msgid "commented on %s's post"
-msgstr "kommenterte på %s sitt innlegg"
-
-#: ../../include/conversation.php:117 ../../include/text.php:1705
-#: ../../mod/subthread.php:72 ../../mod/subthread.php:174
-#: ../../mod/tagger.php:45 ../../mod/like.php:111
+#: ../../include/conversation.php:120 ../../include/diaspora.php:1923
+#: ../../include/text.php:1747 ../../mod/subthread.php:72
+#: ../../mod/subthread.php:174 ../../mod/tagger.php:45 ../../mod/like.php:298
msgid "photo"
msgstr "foto"
-#: ../../include/conversation.php:120 ../../include/text.php:1708
+#: ../../include/conversation.php:123 ../../include/text.php:1750
#: ../../mod/tagger.php:49
msgid "event"
msgstr "hendelse"
-#: ../../include/conversation.php:123
+#: ../../include/conversation.php:126 ../../mod/like.php:89
msgid "channel"
msgstr "kanal"
-#: ../../include/conversation.php:145 ../../include/text.php:1711
-#: ../../mod/subthread.php:72 ../../mod/subthread.php:174
-#: ../../mod/tagger.php:53 ../../mod/like.php:111
+#: ../../include/conversation.php:148 ../../include/diaspora.php:1923
+#: ../../include/text.php:1753 ../../mod/subthread.php:72
+#: ../../mod/subthread.php:174 ../../mod/tagger.php:53 ../../mod/like.php:298
msgid "status"
msgstr "status"
-#: ../../include/conversation.php:147 ../../include/text.php:1713
+#: ../../include/conversation.php:150 ../../include/text.php:1755
#: ../../mod/tagger.php:55
msgid "comment"
msgstr "kommentar"
-#: ../../include/conversation.php:161 ../../mod/like.php:142
+#: ../../include/conversation.php:164 ../../include/diaspora.php:1952
+#: ../../mod/like.php:344
#, php-format
msgid "%1$s likes %2$s's %3$s"
msgstr "%1$s liker %2$s sin %3$s"
-#: ../../include/conversation.php:164 ../../mod/like.php:144
+#: ../../include/conversation.php:167 ../../mod/like.php:346
#, php-format
msgid "%1$s doesn't like %2$s's %3$s"
msgstr "%1$s liker ikke %2$s sin %3$s"
-#: ../../include/conversation.php:201
+#: ../../include/conversation.php:204
#, php-format
msgid "%1$s is now connected with %2$s"
msgstr "%1$s er nå forbundet med %2$s"
-#: ../../include/conversation.php:236
+#: ../../include/conversation.php:239
#, php-format
msgid "%1$s poked %2$s"
msgstr "%1$s prikket %2$s"
-#: ../../include/conversation.php:240 ../../include/text.php:895
+#: ../../include/conversation.php:243 ../../include/text.php:905
msgid "poked"
msgstr "prikket"
-#: ../../include/conversation.php:258 ../../mod/mood.php:63
+#: ../../include/conversation.php:261 ../../mod/mood.php:63
#, php-format
msgctxt "mood"
msgid "%1$s is %2$s"
msgstr "%1$s er %2$s"
-#: ../../include/conversation.php:631 ../../include/ItemObject.php:114
+#: ../../include/conversation.php:637 ../../include/ItemObject.php:126
msgid "Select"
msgstr "Velg"
-#: ../../include/conversation.php:632 ../../include/apps.php:232
-#: ../../include/ItemObject.php:108 ../../mod/settings.php:578
-#: ../../mod/connedit.php:398 ../../mod/filestorage.php:175
-#: ../../mod/group.php:176 ../../mod/admin.php:758 ../../mod/admin.php:887
-#: ../../mod/thing.php:236 ../../mod/photos.php:1041
+#: ../../include/conversation.php:638 ../../include/RedDAV/RedBrowser.php:251
+#: ../../include/apps.php:250 ../../include/ItemObject.php:120
+#: ../../mod/photos.php:1069 ../../mod/connedit.php:476
+#: ../../mod/thing.php:234 ../../mod/settings.php:612 ../../mod/group.php:176
+#: ../../mod/admin.php:730 ../../mod/admin.php:861
msgid "Delete"
msgstr "Slett"
-#: ../../include/conversation.php:639 ../../include/ItemObject.php:89
-#: ../../mod/photos.php:844
+#: ../../include/conversation.php:645 ../../include/ItemObject.php:89
msgid "Private Message"
msgstr "Privat melding"
-#: ../../include/conversation.php:646 ../../include/ItemObject.php:182
-msgid "Message is verified"
-msgstr "Innlegg er bekreftet"
+#: ../../include/conversation.php:652 ../../include/ItemObject.php:194
+msgid "Message signature validated"
+msgstr "Innleggets signatur er bekreftet"
+
+#: ../../include/conversation.php:653 ../../include/ItemObject.php:195
+msgid "Message signature incorrect"
+msgstr "Innleggets signatur er feil"
-#: ../../include/conversation.php:666
+#: ../../include/conversation.php:674
#, php-format
msgid "View %s's profile @ %s"
msgstr "Vis %s sin profile @ %s"
-#: ../../include/conversation.php:680
+#: ../../include/conversation.php:689
msgid "Categories:"
msgstr "Kategorier:"
-#: ../../include/conversation.php:681
+#: ../../include/conversation.php:690
msgid "Filed under:"
msgstr "Sortert under:"
-#: ../../include/conversation.php:690 ../../include/ItemObject.php:250
+#: ../../include/conversation.php:698 ../../include/ItemObject.php:265
#, php-format
msgid " from %s"
msgstr "fra %s"
-#: ../../include/conversation.php:693 ../../include/ItemObject.php:253
+#: ../../include/conversation.php:701 ../../include/ItemObject.php:268
#, php-format
msgid "last edited: %s"
msgstr "sist endret: %s"
-#: ../../include/conversation.php:694 ../../include/ItemObject.php:254
+#: ../../include/conversation.php:702 ../../include/ItemObject.php:269
#, php-format
msgid "Expires: %s"
msgstr "Utløper: %s"
-#: ../../include/conversation.php:709
+#: ../../include/conversation.php:717
msgid "View in context"
msgstr "Vis i sammenheng"
-#: ../../include/conversation.php:711 ../../include/conversation.php:1127
-#: ../../include/ItemObject.php:294 ../../mod/editblock.php:120
-#: ../../mod/editlayout.php:115 ../../mod/editpost.php:121
-#: ../../mod/editwebpage.php:152 ../../mod/mail.php:222 ../../mod/mail.php:336
-#: ../../mod/photos.php:972
+#: ../../include/conversation.php:719 ../../include/conversation.php:1153
+#: ../../include/ItemObject.php:310 ../../mod/photos.php:977
+#: ../../mod/editblock.php:152 ../../mod/editlayout.php:148
+#: ../../mod/editpost.php:121 ../../mod/editwebpage.php:183
+#: ../../mod/mail.php:234 ../../mod/mail.php:349
msgid "Please wait"
msgstr "Vennligst vent"
-#: ../../include/conversation.php:838
+#: ../../include/conversation.php:843
msgid "remove"
msgstr "fjern"
-#: ../../include/conversation.php:842
+#: ../../include/conversation.php:847 ../../include/nav.php:257
msgid "Loading..."
msgstr "Laster..."
-#: ../../include/conversation.php:843
+#: ../../include/conversation.php:848
msgid "Delete Selected Items"
msgstr "Slett valgte elementer"
-#: ../../include/conversation.php:934
+#: ../../include/conversation.php:942
msgid "View Source"
msgstr "Vis kilde"
-#: ../../include/conversation.php:935
+#: ../../include/conversation.php:943
msgid "Follow Thread"
msgstr "Følg tråd"
-#: ../../include/conversation.php:936
+#: ../../include/conversation.php:944
msgid "View Status"
msgstr "Vis status"
-#: ../../include/conversation.php:937 ../../include/nav.php:81
-#: ../../mod/connedit.php:351 ../../mod/connedit.php:465
+#: ../../include/conversation.php:945 ../../include/nav.php:99
+#: ../../mod/connedit.php:429 ../../mod/connedit.php:544
msgid "View Profile"
msgstr "Vis profil"
-#: ../../include/conversation.php:938
+#: ../../include/conversation.php:946
msgid "View Photos"
msgstr "Vis bilder"
-#: ../../include/conversation.php:939
+#: ../../include/conversation.php:947
msgid "Matrix Activity"
msgstr "Matrix-aktivitet"
-#: ../../include/conversation.php:940
+#: ../../include/conversation.php:948 ../../include/widgets.php:135
+#: ../../include/widgets.php:175 ../../include/Contact.php:107
+#: ../../include/identity.php:840 ../../mod/directory.php:224
+#: ../../mod/suggest.php:51 ../../mod/match.php:62
+msgid "Connect"
+msgstr "Koble"
+
+#: ../../include/conversation.php:949
msgid "Edit Contact"
msgstr "Endre kontakt"
-#: ../../include/conversation.php:941
+#: ../../include/conversation.php:950
msgid "Send PM"
msgstr "Send privat melding"
-#: ../../include/conversation.php:942 ../../include/apps.php:135
+#: ../../include/conversation.php:951 ../../include/apps.php:143
msgid "Poke"
msgstr "Prikk"
-#: ../../include/conversation.php:998
+#: ../../include/conversation.php:1003 ../../include/RedDAV/RedBrowser.php:163
+#: ../../include/apps.php:331 ../../include/apps.php:382
+#: ../../mod/photos.php:713 ../../mod/photos.php:1131
+#: ../../mod/connedit.php:512
+msgid "Unknown"
+msgstr "Ukjent"
+
+#: ../../include/conversation.php:1024
#, php-format
msgid "%s likes this."
msgstr "%s liker dette."
-#: ../../include/conversation.php:998
+#: ../../include/conversation.php:1024
#, php-format
msgid "%s doesn't like this."
msgstr "%s liker ikke dette."
-#: ../../include/conversation.php:1002
+#: ../../include/conversation.php:1028
#, php-format
msgid "<span %1$s>%2$d people</span> like this."
msgid_plural "<span %1$s>%2$d people</span> like this."
msgstr[0] "<span %1$s>%2$d person</span> liker dette."
msgstr[1] "<span %1$s>%2$d personer</span> liker dette."
-#: ../../include/conversation.php:1004
+#: ../../include/conversation.php:1030
#, php-format
msgid "<span %1$s>%2$d people</span> don't like this."
msgid_plural "<span %1$s>%2$d people</span> don't like this."
msgstr[0] "<span %1$s>%2$d person</span> liker ikke dette."
msgstr[1] "<span %1$s>%2$d personer</span> liker ikke dette."
-#: ../../include/conversation.php:1010
+#: ../../include/conversation.php:1036
msgid "and"
msgstr "og"
-#: ../../include/conversation.php:1013
+#: ../../include/conversation.php:1039
#, php-format
msgid ", and %d other people"
msgid_plural ", and %d other people"
msgstr[0] ", og %d annen person"
msgstr[1] ", og %d andre personer"
-#: ../../include/conversation.php:1014
+#: ../../include/conversation.php:1040
#, php-format
msgid "%s like this."
msgstr "%s liker dette."
-#: ../../include/conversation.php:1014
+#: ../../include/conversation.php:1040
#, php-format
msgid "%s don't like this."
msgstr "%s liker ikke dette."
-#: ../../include/conversation.php:1071
+#: ../../include/conversation.php:1097
msgid "Visible to <strong>everybody</strong>"
msgstr "Synlig for <strong>alle</strong>"
-#: ../../include/conversation.php:1072 ../../mod/mail.php:171
-#: ../../mod/mail.php:269
+#: ../../include/conversation.php:1098 ../../mod/mail.php:170
+#: ../../mod/mail.php:282
msgid "Please enter a link URL:"
msgstr "Vennligst skriv inn en lenke URL:"
-#: ../../include/conversation.php:1073
+#: ../../include/conversation.php:1099
msgid "Please enter a video link/URL:"
msgstr "Vennligst skriv en videolenke/URL:"
-#: ../../include/conversation.php:1074
+#: ../../include/conversation.php:1100
msgid "Please enter an audio link/URL:"
msgstr "Vennligst skriv en lydlenke/URL:"
-#: ../../include/conversation.php:1075
+#: ../../include/conversation.php:1101
msgid "Tag term:"
msgstr "Merkelapp:"
-#: ../../include/conversation.php:1076 ../../mod/filer.php:49
+#: ../../include/conversation.php:1102 ../../mod/filer.php:49
msgid "Save to Folder:"
msgstr "Lagre til mappe:"
-#: ../../include/conversation.php:1077
+#: ../../include/conversation.php:1103
msgid "Where are you right now?"
msgstr "Hvor er du akkurat nå?"
-#: ../../include/conversation.php:1078 ../../mod/editpost.php:52
-#: ../../mod/mail.php:172 ../../mod/mail.php:270
+#: ../../include/conversation.php:1104 ../../mod/editpost.php:52
+#: ../../mod/mail.php:171 ../../mod/mail.php:283
msgid "Expires YYYY-MM-DD HH:MM"
msgstr "Utløper YYYY-MM-DD HH:MM"
-#: ../../include/conversation.php:1088 ../../include/page_widgets.php:40
-#: ../../include/ItemObject.php:592 ../../mod/editblock.php:141
-#: ../../mod/editlayout.php:135 ../../mod/editpost.php:140
-#: ../../mod/editwebpage.php:174 ../../mod/webpages.php:124
-#: ../../mod/photos.php:992
+#: ../../include/conversation.php:1114 ../../include/page_widgets.php:40
+#: ../../include/ItemObject.php:608 ../../mod/photos.php:997
+#: ../../mod/webpages.php:166 ../../mod/editblock.php:173
+#: ../../mod/editlayout.php:168 ../../mod/editpost.php:140
+#: ../../mod/editwebpage.php:205
msgid "Preview"
msgstr "Forhåndsvisning"
-#: ../../include/conversation.php:1102 ../../mod/layouts.php:113
-#: ../../mod/photos.php:971
+#: ../../include/conversation.php:1128 ../../mod/photos.php:976
+#: ../../mod/editblock.php:198 ../../mod/editlayout.php:193
+#: ../../mod/editwebpage.php:230 ../../mod/layouts.php:168
msgid "Share"
msgstr "Del"
-#: ../../include/conversation.php:1104 ../../mod/editwebpage.php:139
+#: ../../include/conversation.php:1130 ../../mod/editwebpage.php:170
msgid "Page link title"
msgstr "Sidens lenketittel"
-#: ../../include/conversation.php:1107
+#: ../../include/conversation.php:1133
msgid "Post as"
msgstr "Lag innlegg som"
-#: ../../include/conversation.php:1108 ../../mod/editblock.php:112
-#: ../../mod/editlayout.php:107 ../../mod/editpost.php:113
-#: ../../mod/editwebpage.php:144 ../../mod/mail.php:219 ../../mod/mail.php:332
+#: ../../include/conversation.php:1134 ../../mod/editblock.php:144
+#: ../../mod/editlayout.php:140 ../../mod/editpost.php:113
+#: ../../mod/editwebpage.php:175 ../../mod/mail.php:231 ../../mod/mail.php:345
msgid "Upload photo"
msgstr "Last opp bilde"
-#: ../../include/conversation.php:1109
+#: ../../include/conversation.php:1135
msgid "upload photo"
msgstr "last opp bilde"
-#: ../../include/conversation.php:1110 ../../mod/editblock.php:113
-#: ../../mod/editlayout.php:108 ../../mod/editpost.php:114
-#: ../../mod/editwebpage.php:145 ../../mod/mail.php:220 ../../mod/mail.php:333
+#: ../../include/conversation.php:1136 ../../mod/editblock.php:145
+#: ../../mod/editlayout.php:141 ../../mod/editpost.php:114
+#: ../../mod/editwebpage.php:176 ../../mod/mail.php:232 ../../mod/mail.php:346
msgid "Attach file"
msgstr "Legg ved fil"
-#: ../../include/conversation.php:1111
+#: ../../include/conversation.php:1137
msgid "attach file"
msgstr "legg ved fil"
-#: ../../include/conversation.php:1112 ../../mod/editblock.php:114
-#: ../../mod/editlayout.php:109 ../../mod/editpost.php:115
-#: ../../mod/editwebpage.php:146 ../../mod/mail.php:221 ../../mod/mail.php:334
+#: ../../include/conversation.php:1138 ../../mod/editblock.php:146
+#: ../../mod/editlayout.php:142 ../../mod/editpost.php:115
+#: ../../mod/editwebpage.php:177 ../../mod/mail.php:233 ../../mod/mail.php:347
msgid "Insert web link"
msgstr "Sett inn web-lenke"
-#: ../../include/conversation.php:1113
+#: ../../include/conversation.php:1139
msgid "web link"
msgstr "web-lenke"
-#: ../../include/conversation.php:1114
+#: ../../include/conversation.php:1140
msgid "Insert video link"
msgstr "Sett inn videolenke"
-#: ../../include/conversation.php:1115
+#: ../../include/conversation.php:1141
msgid "video link"
msgstr "videolenke"
-#: ../../include/conversation.php:1116
+#: ../../include/conversation.php:1142
msgid "Insert audio link"
msgstr "Sett inn lenke til lyd"
-#: ../../include/conversation.php:1117
+#: ../../include/conversation.php:1143
msgid "audio link"
msgstr "lenke til lyd"
-#: ../../include/conversation.php:1118 ../../mod/editblock.php:118
-#: ../../mod/editlayout.php:113 ../../mod/editpost.php:119
-#: ../../mod/editwebpage.php:150
+#: ../../include/conversation.php:1144 ../../mod/editblock.php:150
+#: ../../mod/editlayout.php:146 ../../mod/editpost.php:119
+#: ../../mod/editwebpage.php:181
msgid "Set your location"
msgstr "Angi din plassering"
-#: ../../include/conversation.php:1119
+#: ../../include/conversation.php:1145
msgid "set location"
msgstr "angi plassering"
-#: ../../include/conversation.php:1120 ../../mod/editblock.php:119
-#: ../../mod/editlayout.php:114 ../../mod/editpost.php:120
-#: ../../mod/editwebpage.php:151
+#: ../../include/conversation.php:1146 ../../mod/editblock.php:151
+#: ../../mod/editlayout.php:147 ../../mod/editpost.php:120
+#: ../../mod/editwebpage.php:182
msgid "Clear browser location"
msgstr "Fjern nettleserplassering"
-#: ../../include/conversation.php:1121
+#: ../../include/conversation.php:1147
msgid "clear location"
msgstr "fjern plassering"
-#: ../../include/conversation.php:1123 ../../mod/editblock.php:132
-#: ../../mod/editlayout.php:126 ../../mod/editpost.php:132
-#: ../../mod/editwebpage.php:167
+#: ../../include/conversation.php:1149 ../../mod/editblock.php:164
+#: ../../mod/editlayout.php:159 ../../mod/editpost.php:132
+#: ../../mod/editwebpage.php:198
msgid "Set title"
msgstr "Angi tittel"
-#: ../../include/conversation.php:1126 ../../mod/editblock.php:135
-#: ../../mod/editlayout.php:129 ../../mod/editpost.php:134
-#: ../../mod/editwebpage.php:169
+#: ../../include/conversation.php:1152 ../../mod/events.php:563
+#: ../../mod/editblock.php:167 ../../mod/editlayout.php:162
+#: ../../mod/editpost.php:134 ../../mod/editwebpage.php:200
msgid "Categories (comma-separated list)"
msgstr "Kategorier (kommaseparert liste)"
-#: ../../include/conversation.php:1128 ../../mod/editblock.php:121
-#: ../../mod/editlayout.php:116 ../../mod/editpost.php:122
-#: ../../mod/editwebpage.php:153
+#: ../../include/conversation.php:1154 ../../mod/editblock.php:153
+#: ../../mod/editlayout.php:149 ../../mod/editpost.php:122
+#: ../../mod/editwebpage.php:184
msgid "Permission settings"
msgstr "Tillatelser - innstillinger"
-#: ../../include/conversation.php:1129
+#: ../../include/conversation.php:1155
msgid "permissions"
msgstr "tillatelser"
-#: ../../include/conversation.php:1136 ../../mod/editblock.php:129
-#: ../../mod/editlayout.php:123 ../../mod/editpost.php:129
-#: ../../mod/editwebpage.php:162
+#: ../../include/conversation.php:1162 ../../mod/editblock.php:161
+#: ../../mod/editlayout.php:156 ../../mod/editpost.php:129
+#: ../../mod/editwebpage.php:193
msgid "Public post"
msgstr "Offentlig innlegg"
-#: ../../include/conversation.php:1138 ../../mod/editblock.php:136
-#: ../../mod/editlayout.php:130 ../../mod/editpost.php:135
-#: ../../mod/editwebpage.php:170
+#: ../../include/conversation.php:1164 ../../mod/editblock.php:168
+#: ../../mod/editlayout.php:163 ../../mod/editpost.php:135
+#: ../../mod/editwebpage.php:201
msgid "Example: bob@example.com, mary@example.com"
msgstr "Eksempel: ola@eksempel.no, kari@eksempel.no"
-#: ../../include/conversation.php:1151 ../../mod/editblock.php:146
-#: ../../mod/editlayout.php:140 ../../mod/editpost.php:146
-#: ../../mod/editwebpage.php:179 ../../mod/mail.php:226 ../../mod/mail.php:339
+#: ../../include/conversation.php:1177 ../../mod/editblock.php:178
+#: ../../mod/editlayout.php:173 ../../mod/editpost.php:146
+#: ../../mod/editwebpage.php:210 ../../mod/mail.php:238 ../../mod/mail.php:352
msgid "Set expiration date"
msgstr "Angi utløpsdato"
-#: ../../include/conversation.php:1153 ../../include/ItemObject.php:595
-#: ../../mod/editpost.php:148 ../../mod/mail.php:228 ../../mod/mail.php:341
+#: ../../include/conversation.php:1179 ../../include/ItemObject.php:611
+#: ../../mod/editpost.php:148 ../../mod/mail.php:240 ../../mod/mail.php:354
msgid "Encrypt text"
msgstr "Krypter tekst"
-#: ../../include/conversation.php:1155 ../../mod/editpost.php:150
+#: ../../include/conversation.php:1181 ../../mod/events.php:569
+#: ../../mod/editpost.php:150
msgid "OK"
msgstr "OK"
-#: ../../include/conversation.php:1156 ../../mod/settings.php:516
-#: ../../mod/settings.php:542 ../../mod/editpost.php:151
-#: ../../mod/fbrowser.php:82 ../../mod/fbrowser.php:117 ../../mod/tagrm.php:11
-#: ../../mod/tagrm.php:94
+#: ../../include/conversation.php:1182 ../../mod/events.php:568
+#: ../../mod/editpost.php:151 ../../mod/settings.php:550
+#: ../../mod/settings.php:576 ../../mod/fbrowser.php:82
+#: ../../mod/fbrowser.php:117 ../../mod/tagrm.php:11 ../../mod/tagrm.php:134
msgid "Cancel"
msgstr "Avbryt"
-#: ../../include/conversation.php:1398
+#: ../../include/conversation.php:1426
msgid "Discover"
msgstr "Oppdage"
-#: ../../include/conversation.php:1401
+#: ../../include/conversation.php:1429
msgid "Imported public streams"
msgstr "Importerte offentlige strømmer"
-#: ../../include/conversation.php:1406
+#: ../../include/conversation.php:1434
msgid "Commented Order"
msgstr "Kommentert"
-#: ../../include/conversation.php:1409
+#: ../../include/conversation.php:1437
msgid "Sort by Comment Date"
msgstr "Sorter etter kommentert dato"
-#: ../../include/conversation.php:1413
+#: ../../include/conversation.php:1441
msgid "Posted Order"
msgstr "Lagt inn"
-#: ../../include/conversation.php:1416
+#: ../../include/conversation.php:1444
msgid "Sort by Post Date"
msgstr "Sorter etter innleggsdato"
-#: ../../include/conversation.php:1421 ../../include/widgets.php:82
+#: ../../include/conversation.php:1449 ../../include/widgets.php:89
msgid "Personal"
msgstr "Personlig"
-#: ../../include/conversation.php:1424
+#: ../../include/conversation.php:1452
msgid "Posts that mention or involve you"
msgstr "Innlegg som nevner eller involverer deg"
-#: ../../include/conversation.php:1430 ../../mod/connections.php:211
-#: ../../mod/connections.php:224 ../../mod/menu.php:61
+#: ../../include/conversation.php:1458 ../../mod/connections.php:211
+#: ../../mod/connections.php:224 ../../mod/menu.php:80
msgid "New"
msgstr "Nye"
-#: ../../include/conversation.php:1433
+#: ../../include/conversation.php:1461
msgid "Activity Stream - by date"
msgstr "Aktivitetsstrøm - etter dato"
-#: ../../include/conversation.php:1439
+#: ../../include/conversation.php:1467
msgid "Starred"
msgstr "Stjerne"
-#: ../../include/conversation.php:1442
+#: ../../include/conversation.php:1470
msgid "Favourite Posts"
msgstr "Favorittinnlegg"
-#: ../../include/conversation.php:1449
+#: ../../include/conversation.php:1477
msgid "Spam"
msgstr "Søppel"
-#: ../../include/conversation.php:1452
+#: ../../include/conversation.php:1480
msgid "Posts flagged as SPAM"
msgstr "Innlegg merket som SØPPEL"
-#: ../../include/conversation.php:1486 ../../mod/admin.php:891
+#: ../../include/conversation.php:1520 ../../mod/admin.php:865
msgid "Channel"
msgstr "Kanal"
-#: ../../include/conversation.php:1489
+#: ../../include/conversation.php:1523
msgid "Status Messages and Posts"
msgstr "Statusmeldinger og -innlegg"
-#: ../../include/conversation.php:1498
+#: ../../include/conversation.php:1532
msgid "About"
msgstr "Om"
-#: ../../include/conversation.php:1501
+#: ../../include/conversation.php:1535
msgid "Profile Details"
msgstr "Profildetaljer"
-#: ../../include/conversation.php:1507 ../../include/nav.php:84
-#: ../../include/apps.php:129 ../../mod/fbrowser.php:25
+#: ../../include/conversation.php:1541 ../../include/nav.php:105
+#: ../../include/apps.php:137 ../../mod/fbrowser.php:25
msgid "Photos"
msgstr "Bilder"
-#: ../../include/conversation.php:1510 ../../include/photos.php:313
+#: ../../include/conversation.php:1544 ../../include/photos.php:341
msgid "Photo Albums"
msgstr "Fotoalbum"
-#: ../../include/conversation.php:1516 ../../include/nav.php:85
-#: ../../include/apps.php:125 ../../mod/fbrowser.php:114
+#: ../../include/conversation.php:1550 ../../include/RedDAV/RedBrowser.php:241
+#: ../../include/nav.php:106 ../../include/apps.php:133
+#: ../../mod/fbrowser.php:114
msgid "Files"
msgstr "Filer"
-#: ../../include/conversation.php:1519
+#: ../../include/conversation.php:1553
msgid "Files and Storage"
msgstr "Filer og lagring"
-#: ../../include/conversation.php:1528 ../../include/conversation.php:1531
+#: ../../include/conversation.php:1563 ../../include/conversation.php:1566
msgid "Chatrooms"
msgstr "Chatrom"
-#: ../../include/conversation.php:1538 ../../include/nav.php:93
-#: ../../include/apps.php:119
+#: ../../include/conversation.php:1576 ../../include/nav.php:117
+#: ../../include/apps.php:127
msgid "Bookmarks"
msgstr "Bokmerker"
-#: ../../include/conversation.php:1541
+#: ../../include/conversation.php:1579
msgid "Saved Bookmarks"
msgstr "Lagrede bokmerker"
-#: ../../include/conversation.php:1549 ../../include/nav.php:95
-#: ../../include/apps.php:126 ../../mod/webpages.php:79
+#: ../../include/conversation.php:1587 ../../include/nav.php:121
+#: ../../include/apps.php:134 ../../mod/webpages.php:160
msgid "Webpages"
msgstr "Websider"
-#: ../../include/conversation.php:1552
+#: ../../include/conversation.php:1590
msgid "Manage Webpages"
msgstr "HÃ¥ndtere websider"
+#: ../../include/notify.php:23
+msgid "created a new post"
+msgstr "laget et nytt innlegg"
+
+#: ../../include/notify.php:24
+#, php-format
+msgid "commented on %s's post"
+msgstr "kommenterte på %s sitt innlegg"
+
+#: ../../include/dir_fns.php:56
+msgid "Sort Options"
+msgstr "Sorteringsmuligheter"
+
+#: ../../include/dir_fns.php:57
+msgid "Alphabetic"
+msgstr "Alfabetisk"
+
+#: ../../include/dir_fns.php:58
+msgid "Reverse Alphabetic"
+msgstr "Omvendt alfabetisk"
+
+#: ../../include/dir_fns.php:59
+msgid "Newest to Oldest"
+msgstr "Nyest til eldst"
+
+#: ../../include/dir_fns.php:71
+msgid "Enable Safe Search"
+msgstr "Skru på Trygt søk"
+
+#: ../../include/dir_fns.php:73
+msgid "Disable Safe Search"
+msgstr "Skru av Trygt søk"
+
+#: ../../include/dir_fns.php:75
+msgid "Safe Mode"
+msgstr "Trygt modus"
+
#: ../../include/page_widgets.php:6
msgid "New Page"
msgstr "Ny side"
#: ../../include/page_widgets.php:8 ../../include/page_widgets.php:36
-#: ../../include/apps.php:231 ../../include/menu.php:42
-#: ../../include/ItemObject.php:96 ../../mod/settings.php:577
-#: ../../mod/blocks.php:94 ../../mod/connections.php:393
-#: ../../mod/editblock.php:111 ../../mod/editlayout.php:106
-#: ../../mod/editpost.php:112 ../../mod/editwebpage.php:143
-#: ../../mod/filestorage.php:174 ../../mod/thing.php:235
-#: ../../mod/layouts.php:112 ../../mod/menu.php:59 ../../mod/webpages.php:120
+#: ../../include/RedDAV/RedBrowser.php:250 ../../include/menu.php:42
+#: ../../include/apps.php:249 ../../include/ItemObject.php:100
+#: ../../mod/blocks.php:132 ../../mod/connections.php:381
+#: ../../mod/connections.php:394 ../../mod/connections.php:413
+#: ../../mod/thing.php:233 ../../mod/webpages.php:162
+#: ../../mod/editblock.php:143 ../../mod/editlayout.php:139
+#: ../../mod/editpost.php:112 ../../mod/settings.php:611
+#: ../../mod/editwebpage.php:174 ../../mod/layouts.php:167
+#: ../../mod/menu.php:78
msgid "Edit"
msgstr "Endre"
-#: ../../include/page_widgets.php:39 ../../mod/blocks.php:97
-#: ../../mod/layouts.php:116 ../../mod/webpages.php:123
+#: ../../include/page_widgets.php:39 ../../mod/blocks.php:135
+#: ../../mod/webpages.php:165 ../../mod/layouts.php:171
msgid "View"
msgstr "Vis"
-#: ../../include/page_widgets.php:41 ../../mod/webpages.php:125
+#: ../../include/page_widgets.php:41 ../../mod/webpages.php:167
msgid "Actions"
msgstr "Handlinger"
-#: ../../include/page_widgets.php:42 ../../mod/webpages.php:126
+#: ../../include/page_widgets.php:42 ../../mod/webpages.php:168
msgid "Page Link"
msgstr "Sidelenke"
-#: ../../include/page_widgets.php:43 ../../mod/webpages.php:127
+#: ../../include/page_widgets.php:43 ../../mod/webpages.php:169
msgid "Title"
msgstr "Tittel"
-#: ../../include/page_widgets.php:44 ../../mod/webpages.php:128
+#: ../../include/page_widgets.php:44 ../../mod/webpages.php:170
msgid "Created"
msgstr "Laget"
-#: ../../include/page_widgets.php:45 ../../mod/webpages.php:129
+#: ../../include/page_widgets.php:45 ../../mod/webpages.php:171
msgid "Edited"
msgstr "Endret"
-#: ../../include/security.php:301
-msgid ""
-"The form security token was not correct. This probably happened because the "
-"form has been opened for too long (>3 hours) before submitting it."
-msgstr "Skjemaets sikkerhetspollett var ikke gyldig. Dette skjedde antakelig fordi skjemaet har vært åpnet for lenge (>3 timer) før det ble sendt inn."
-
-#: ../../include/account.php:23
-msgid "Not a valid email address"
-msgstr "Ikke en gyldig e-postadresse"
-
-#: ../../include/account.php:25
-msgid "Your email domain is not among those allowed on this site"
-msgstr "Ditt e-postdomene er ikke blant de som er tillatt på dette stedet"
-
-#: ../../include/account.php:31
-msgid "Your email address is already registered at this site."
-msgstr "Din e-postadresse er allerede registrert på dette nettstedet."
-
-#: ../../include/account.php:64
-msgid "An invitation is required."
-msgstr "En invitasjon er påkrevd."
-
-#: ../../include/account.php:68
-msgid "Invitation could not be verified."
-msgstr "Invitasjon kunne ikke bekreftes."
-
-#: ../../include/account.php:119
-msgid "Please enter the required information."
-msgstr "Vennligst skriv inn nødvendig informasjon."
-
-#: ../../include/account.php:187
-msgid "Failed to store account information."
-msgstr "Mislyktes med å lagre kontoinformasjon."
-
-#: ../../include/account.php:273
-#, php-format
-msgid "Registration request at %s"
-msgstr "Registreringsforespørsel hos %s"
-
-#: ../../include/account.php:275 ../../include/account.php:302
-#: ../../include/account.php:359
-msgid "Administrator"
-msgstr "Administrator"
-
-#: ../../include/account.php:297
-msgid "your registration password"
-msgstr "ditt registreringspassord"
+#: ../../include/chat.php:10
+msgid "Missing room name"
+msgstr "Mangler romnavn"
-#: ../../include/account.php:300 ../../include/account.php:357
-#, php-format
-msgid "Registration details for %s"
-msgstr "Registreringsdetaljer for %s"
+#: ../../include/chat.php:19
+msgid "Duplicate room name"
+msgstr "Duplikat romnavn"
-#: ../../include/account.php:366
-msgid "Account approved."
-msgstr "Konto godkjent."
+#: ../../include/chat.php:68 ../../include/chat.php:76
+msgid "Invalid room specifier."
+msgstr "Ugyldig rom-spesifisering"
-#: ../../include/account.php:400
-#, php-format
-msgid "Registration revoked for %s"
-msgstr "Registrering trukket tilbake for %s"
+#: ../../include/chat.php:105
+msgid "Room not found."
+msgstr "Rommet ble ikke funnet."
-#: ../../include/photos.php:15 ../../include/attach.php:119
-#: ../../include/attach.php:166 ../../include/attach.php:229
-#: ../../include/attach.php:243 ../../include/attach.php:283
-#: ../../include/attach.php:297 ../../include/attach.php:322
-#: ../../include/attach.php:513 ../../include/attach.php:585
-#: ../../include/chat.php:116 ../../include/items.php:3679
-#: ../../mod/mood.php:112 ../../mod/mitem.php:73 ../../mod/achievements.php:27
-#: ../../mod/settings.php:492 ../../mod/poke.php:128 ../../mod/api.php:26
-#: ../../mod/api.php:31 ../../mod/authtest.php:13 ../../mod/profile.php:64
-#: ../../mod/profile.php:72 ../../mod/block.php:22 ../../mod/block.php:72
-#: ../../mod/profile_photo.php:263 ../../mod/profile_photo.php:276
-#: ../../mod/blocks.php:29 ../../mod/blocks.php:44 ../../mod/profiles.php:152
-#: ../../mod/profiles.php:462 ../../mod/bookmarks.php:46
+#: ../../include/chat.php:116 ../../include/items.php:4013
+#: ../../include/attach.php:116 ../../include/attach.php:163
+#: ../../include/attach.php:226 ../../include/attach.php:240
+#: ../../include/attach.php:280 ../../include/attach.php:294
+#: ../../include/attach.php:318 ../../include/attach.php:511
+#: ../../include/attach.php:584 ../../include/photos.php:15
+#: ../../mod/mood.php:112 ../../mod/mitem.php:106
+#: ../../mod/achievements.php:30 ../../mod/profiles.php:179
+#: ../../mod/profiles.php:550 ../../mod/setup.php:207 ../../mod/poke.php:128
+#: ../../mod/api.php:26 ../../mod/api.php:31 ../../mod/authtest.php:13
+#: ../../mod/profile.php:64 ../../mod/profile.php:72 ../../mod/block.php:22
+#: ../../mod/block.php:72 ../../mod/sources.php:66 ../../mod/blocks.php:67
+#: ../../mod/blocks.php:75 ../../mod/register.php:72 ../../mod/events.php:195
#: ../../mod/channel.php:89 ../../mod/channel.php:193
#: ../../mod/channel.php:236 ../../mod/chat.php:90 ../../mod/chat.php:95
-#: ../../mod/register.php:68 ../../mod/regmod.php:18 ../../mod/common.php:35
-#: ../../mod/network.php:12 ../../mod/connections.php:169
-#: ../../mod/connedit.php:221 ../../mod/delegate.php:6 ../../mod/page.php:30
-#: ../../mod/page.php:80 ../../mod/setup.php:203 ../../mod/editblock.php:34
-#: ../../mod/pdledit.php:21 ../../mod/editlayout.php:48
-#: ../../mod/editpost.php:13 ../../mod/editwebpage.php:44
-#: ../../mod/editwebpage.php:83 ../../mod/sources.php:66
-#: ../../mod/events.php:141 ../../mod/filestorage.php:10
-#: ../../mod/filestorage.php:59 ../../mod/filestorage.php:75
-#: ../../mod/filestorage.php:98 ../../mod/fsuggest.php:78
-#: ../../mod/suggest.php:26 ../../mod/group.php:9 ../../mod/thing.php:247
-#: ../../mod/thing.php:263 ../../mod/thing.php:298 ../../mod/invite.php:13
-#: ../../mod/invite.php:104 ../../mod/item.php:179 ../../mod/item.php:187
-#: ../../mod/item.php:894 ../../mod/layouts.php:27 ../../mod/layouts.php:39
+#: ../../mod/regmod.php:17 ../../mod/network.php:12 ../../mod/common.php:35
+#: ../../mod/photos.php:68 ../../mod/connections.php:169
+#: ../../mod/manage.php:6 ../../mod/connedit.php:266 ../../mod/thing.php:247
+#: ../../mod/thing.php:264 ../../mod/thing.php:299 ../../mod/webpages.php:67
+#: ../../mod/bookmarks.php:46 ../../mod/editblock.php:65
+#: ../../mod/pdledit.php:21 ../../mod/editlayout.php:64
+#: ../../mod/editlayout.php:89 ../../mod/editpost.php:13
+#: ../../mod/settings.php:526 ../../mod/editwebpage.php:64
+#: ../../mod/editwebpage.php:86 ../../mod/editwebpage.php:118
+#: ../../mod/profile_photo.php:263 ../../mod/profile_photo.php:276
+#: ../../mod/fsuggest.php:78 ../../mod/filestorage.php:18
+#: ../../mod/filestorage.php:67 ../../mod/filestorage.php:82
+#: ../../mod/filestorage.php:109 ../../mod/delegate.php:6
+#: ../../mod/group.php:9 ../../mod/suggest.php:26 ../../mod/item.php:191
+#: ../../mod/item.php:199 ../../mod/item.php:971 ../../mod/like.php:154
+#: ../../mod/invite.php:13 ../../mod/invite.php:104 ../../mod/locs.php:71
+#: ../../mod/layouts.php:67 ../../mod/layouts.php:74 ../../mod/layouts.php:85
#: ../../mod/viewconnections.php:22 ../../mod/viewconnections.php:27
-#: ../../mod/viewsrc.php:12 ../../mod/mail.php:108 ../../mod/manage.php:6
-#: ../../mod/menu.php:44 ../../mod/webpages.php:40 ../../mod/message.php:16
-#: ../../mod/new_channel.php:66 ../../mod/new_channel.php:97
-#: ../../mod/photos.php:68 ../../mod/photos.php:526
-#: ../../mod/notifications.php:66 ../../mod/appman.php:66 ../../index.php:186
-#: ../../index.php:361
+#: ../../mod/viewsrc.php:14 ../../mod/mail.php:111 ../../mod/menu.php:61
+#: ../../mod/message.php:16 ../../mod/new_channel.php:68
+#: ../../mod/new_channel.php:99 ../../mod/notifications.php:66
+#: ../../mod/page.php:28 ../../mod/page.php:78 ../../mod/appman.php:66
+#: ../../mod/service_limits.php:7 ../../index.php:190 ../../index.php:390
msgid "Permission denied."
msgstr "Tillatelse avslått."
-#: ../../include/photos.php:89
-#, php-format
-msgid "Image exceeds website size limit of %lu bytes"
-msgstr "Bilde overstiger nettstedets størrelsesbegrensning på %lu bytes"
-
-#: ../../include/photos.php:96
-msgid "Image file is empty."
-msgstr "Bildefilen er tom."
-
-#: ../../include/photos.php:123 ../../mod/profile_photo.php:216
-msgid "Unable to process image"
-msgstr "Kan ikke behandle bildet"
-
-#: ../../include/photos.php:186
-msgid "Photo storage failed."
-msgstr "Bildelagring mislyktes."
-
-#: ../../include/photos.php:317 ../../mod/photos.php:691
-#: ../../mod/photos.php:1188
-msgid "Upload New Photos"
-msgstr "Last opp nye bilder"
-
-#: ../../include/acl_selectors.php:240
-msgid "Visible to everybody"
-msgstr "Synlig for alle"
-
-#: ../../include/acl_selectors.php:241
-msgid "Show"
-msgstr "Vis"
-
-#: ../../include/acl_selectors.php:242
-msgid "Don't show"
-msgstr "Ikke vis"
-
-#: ../../include/acl_selectors.php:248 ../../mod/chat.php:209
-#: ../../mod/filestorage.php:126 ../../mod/photos.php:604
-#: ../../mod/photos.php:947
-msgid "Permissions"
-msgstr "Tillatelser"
-
-#: ../../include/acl_selectors.php:249 ../../include/ItemObject.php:289
-msgid "Close"
-msgstr "Lukk"
-
-#: ../../include/activities.php:39
-msgid " and "
-msgstr "og"
+#: ../../include/chat.php:126
+msgid "Room is full"
+msgstr "Rommet er fullt"
-#: ../../include/activities.php:47
-msgid "public profile"
-msgstr "offentlig profil"
+#: ../../include/oembed.php:171
+msgid "Embedded content"
+msgstr "Innebygget innhold"
-#: ../../include/activities.php:52
-#, php-format
-msgid "%1$s changed %2$s to &ldquo;%3$s&rdquo;"
-msgstr "%1$s endret %2$s til &ldquo;%3$s&rdquo;"
+#: ../../include/oembed.php:180
+msgid "Embedding disabled"
+msgstr "Innbygging avskrudd"
-#: ../../include/activities.php:53
-#, php-format
-msgid "Visit %1$s's %2$s"
-msgstr "Besøk %1$s sitt %2$s"
+#: ../../include/widgets.php:29 ../../include/contact_widgets.php:92
+#: ../../include/taxonomy.php:230
+msgid "Categories"
+msgstr "Kategorier"
-#: ../../include/activities.php:56
-#, php-format
-msgid "%1$s has an updated %2$s, changing %3$s."
-msgstr "%1$s har oppdatert %2$s, endret %3$s."
+#: ../../include/widgets.php:86 ../../include/nav.php:171
+#: ../../mod/apps.php:33
+msgid "Apps"
+msgstr "Apper"
-#: ../../include/api.php:1016
-msgid "Public Timeline"
-msgstr "Offentlig tidslinje"
+#: ../../include/widgets.php:87
+msgid "System"
+msgstr "System"
-#: ../../include/attach.php:224 ../../include/attach.php:278
-msgid "Item was not found."
-msgstr "Elementet ble ikke funnet."
+#: ../../include/widgets.php:90
+msgid "Create Personal App"
+msgstr "Lag personlig app"
-#: ../../include/attach.php:335
-msgid "No source file."
-msgstr "Ingen kildefil."
+#: ../../include/widgets.php:91
+msgid "Edit Personal App"
+msgstr "Endre personlig app"
-#: ../../include/attach.php:352
-msgid "Cannot locate file to replace"
-msgstr "Kan ikke finne filen som skal byttes ut"
+#: ../../include/widgets.php:137 ../../mod/suggest.php:53
+msgid "Ignore/Hide"
+msgstr "Ignorer/Skjul"
-#: ../../include/attach.php:370
-msgid "Cannot locate file to revise/update"
-msgstr "Finner ikke filen som skal revideres/oppdateres"
+#: ../../include/widgets.php:143 ../../mod/connections.php:267
+msgid "Suggestions"
+msgstr "Forslag"
-#: ../../include/attach.php:381
-#, php-format
-msgid "File exceeds size limit of %d"
-msgstr "Filens størrelse overgår grensen på %d"
+#: ../../include/widgets.php:144
+msgid "See more..."
+msgstr "Se mer..."
-#: ../../include/attach.php:393
+#: ../../include/widgets.php:166
#, php-format
-msgid "You have reached your limit of %1$.0f Mbytes attachment storage."
-msgstr "Du har nådd din lagringsgrense for vedlegg på %1$.0f Mbytes."
-
-#: ../../include/attach.php:475
-msgid "File upload failed. Possible system limit or action terminated."
-msgstr "Mislyktes med å laste opp filen. Mulig systemgrense eller handling avbrutt."
+msgid "You have %1$.0f of %2$.0f allowed connections."
+msgstr "Du har %1$.0f av %2$.0f tillate forbindelser."
-#: ../../include/attach.php:487
-msgid "Stored file could not be verified. Upload failed."
-msgstr "Lagret fil kunne ikke bekreftes. Opplasting mislyktes."
+#: ../../include/widgets.php:172
+msgid "Add New Connection"
+msgstr "Legg til ny forbindelse"
-#: ../../include/attach.php:528 ../../include/attach.php:545
-msgid "Path not available."
-msgstr "Stien er ikke tilgjengelig."
+#: ../../include/widgets.php:173
+msgid "Enter the channel address"
+msgstr "Skriv kanal-adressen"
-#: ../../include/attach.php:590
-msgid "Empty pathname"
-msgstr "Tomt sti-navn"
+#: ../../include/widgets.php:174
+msgid "Example: bob@example.com, http://example.com/barbara"
+msgstr "Eksempel: ola.nordmann@eksempel.no, http://eksempel.no/karinordmann"
-#: ../../include/attach.php:606
-msgid "duplicate filename or path"
-msgstr "duplikat av filnavn eller sti"
+#: ../../include/widgets.php:191
+msgid "Notes"
+msgstr "Merknader"
-#: ../../include/attach.php:630
-msgid "Path not found."
-msgstr "Stien ble ikke funnet."
+#: ../../include/widgets.php:193 ../../include/text.php:827
+#: ../../include/text.php:839 ../../mod/rbmark.php:28 ../../mod/rbmark.php:98
+#: ../../mod/filer.php:50 ../../mod/admin.php:1339 ../../mod/admin.php:1360
+msgid "Save"
+msgstr "Lagre"
-#: ../../include/attach.php:674
-msgid "mkdir failed."
-msgstr "mkdir mislyktes."
+#: ../../include/widgets.php:263
+msgid "Remove term"
+msgstr "Fjern begrep"
-#: ../../include/attach.php:678
-msgid "database storage failed."
-msgstr "databaselagring mislyktes."
+#: ../../include/widgets.php:272 ../../include/features.php:58
+msgid "Saved Searches"
+msgstr "Lagrede søk"
-#: ../../include/bb2diaspora.php:441 ../../include/event.php:11
-msgid "l F d, Y \\@ g:i A"
-msgstr "l F d, Y \\@ g:i A"
+#: ../../include/widgets.php:273 ../../include/group.php:303
+msgid "add"
+msgstr "legg til"
-#: ../../include/bb2diaspora.php:447 ../../include/event.php:20
-msgid "Starts:"
-msgstr "Starter:"
+#: ../../include/widgets.php:303 ../../include/contact_widgets.php:57
+#: ../../include/features.php:72
+msgid "Saved Folders"
+msgstr "Lagrede mapper"
-#: ../../include/bb2diaspora.php:455 ../../include/event.php:30
-msgid "Finishes:"
-msgstr "Slutter:"
+#: ../../include/widgets.php:306 ../../include/contact_widgets.php:60
+#: ../../include/contact_widgets.php:95
+msgid "Everything"
+msgstr "Alt"
-#: ../../include/bb2diaspora.php:463 ../../include/event.php:40
-#: ../../include/identity.php:726 ../../mod/directory.php:156
-#: ../../mod/dirprofile.php:105 ../../mod/events.php:485
-msgid "Location:"
-msgstr "Plassering:"
+#: ../../include/widgets.php:352
+msgid "Archives"
+msgstr "Arkiv"
-#: ../../include/nav.php:77 ../../include/nav.php:101 ../../boot.php:1456
-msgid "Logout"
-msgstr "Logg ut"
+#: ../../include/widgets.php:428
+msgid "Refresh"
+msgstr "Forny"
-#: ../../include/nav.php:77 ../../include/nav.php:101
-msgid "End this session"
-msgstr "Avslutt denne økten"
+#: ../../include/widgets.php:429 ../../mod/connedit.php:506
+msgid "Me"
+msgstr "Meg"
-#: ../../include/nav.php:80 ../../include/nav.php:135
-msgid "Home"
-msgstr "Hjem"
+#: ../../include/widgets.php:430 ../../mod/connedit.php:508
+msgid "Best Friends"
+msgstr "Bestevenner"
-#: ../../include/nav.php:80
-msgid "Your posts and conversations"
-msgstr "Dine innlegg og samtaler"
+#: ../../include/widgets.php:431 ../../include/identity.php:387
+#: ../../include/identity.php:388 ../../include/identity.php:395
+#: ../../include/profile_selectors.php:80 ../../mod/connedit.php:509
+#: ../../mod/settings.php:304 ../../mod/settings.php:308
+#: ../../mod/settings.php:309 ../../mod/settings.php:312
+#: ../../mod/settings.php:323
+msgid "Friends"
+msgstr "Venner"
-#: ../../include/nav.php:81
-msgid "Your profile page"
-msgstr "Din profilside"
+#: ../../include/widgets.php:432
+msgid "Co-workers"
+msgstr "Medarbeidere"
-#: ../../include/nav.php:83
-msgid "Edit Profiles"
-msgstr "Endre profiler"
+#: ../../include/widgets.php:433 ../../mod/connedit.php:510
+msgid "Former Friends"
+msgstr "Tidligere venner"
-#: ../../include/nav.php:83
-msgid "Manage/Edit profiles"
-msgstr "HÃ¥ndter/endre profiler"
+#: ../../include/widgets.php:434 ../../mod/connedit.php:511
+msgid "Acquaintances"
+msgstr "Bekjente"
-#: ../../include/nav.php:84
-msgid "Your photos"
-msgstr "Dine bilder"
+#: ../../include/widgets.php:435
+msgid "Everybody"
+msgstr "Alle"
-#: ../../include/nav.php:85
-msgid "Your files"
-msgstr "Dine filer"
+#: ../../include/widgets.php:469
+msgid "Account settings"
+msgstr "Kontoinnstillinger"
-#: ../../include/nav.php:90 ../../include/apps.php:136
-msgid "Chat"
-msgstr "Chat"
+#: ../../include/widgets.php:475
+msgid "Channel settings"
+msgstr "Kanalinnstillinger"
-#: ../../include/nav.php:90
-msgid "Your chatrooms"
-msgstr "Dine chatterom"
+#: ../../include/widgets.php:481
+msgid "Additional features"
+msgstr "Tilleggsfunksjoner"
-#: ../../include/nav.php:93
-msgid "Your bookmarks"
-msgstr "Dine bokmerker"
+#: ../../include/widgets.php:487
+msgid "Feature settings"
+msgstr "Funksjonsinnstillinger"
-#: ../../include/nav.php:95
-msgid "Your webpages"
-msgstr "Dine websider"
+#: ../../include/widgets.php:493
+msgid "Display settings"
+msgstr "Visningsinnstillinger"
-#: ../../include/nav.php:99 ../../include/apps.php:121 ../../boot.php:1457
-msgid "Login"
-msgstr "Logg inn"
+#: ../../include/widgets.php:499
+msgid "Connected apps"
+msgstr "Tilkoblede app-er"
-#: ../../include/nav.php:99
-msgid "Sign in"
-msgstr "Logg på"
+#: ../../include/widgets.php:505
+msgid "Export channel"
+msgstr "Eksporter kanal"
-#: ../../include/nav.php:116
-#, php-format
-msgid "%s - click to logout"
-msgstr "%s - klikk for å logge ut"
+#: ../../include/widgets.php:511
+msgid "Export content"
+msgstr "Eksporter innhold"
-#: ../../include/nav.php:121
-msgid "Click to authenticate to your home hub"
-msgstr "Klikk for å godkjennes mot din hjemme-hub"
+#: ../../include/widgets.php:520 ../../mod/connedit.php:538
+msgid "Connection Default Permissions"
+msgstr "Forbindelsens standard tillatelser"
-#: ../../include/nav.php:135
-msgid "Home Page"
-msgstr "Hjemmeside"
+#: ../../include/widgets.php:528
+msgid "Premium Channel Settings"
+msgstr "Premiumkanal-innstillinger"
-#: ../../include/nav.php:139 ../../mod/register.php:206 ../../boot.php:1433
-msgid "Register"
-msgstr "Registrer"
+#: ../../include/widgets.php:537 ../../include/features.php:49
+#: ../../mod/sources.php:88
+msgid "Channel Sources"
+msgstr "Kanalkilder"
-#: ../../include/nav.php:139
-msgid "Create an account"
-msgstr "Lag en konto"
+#: ../../include/widgets.php:548 ../../include/nav.php:218
+#: ../../include/apps.php:132 ../../mod/admin.php:951 ../../mod/admin.php:1156
+msgid "Settings"
+msgstr "Innstillinger"
-#: ../../include/nav.php:144 ../../include/apps.php:132 ../../mod/help.php:60
-#: ../../mod/help.php:65
-msgid "Help"
-msgstr "Hjelp"
+#: ../../include/widgets.php:562 ../../mod/mail.php:124
+#: ../../mod/message.php:31
+msgid "Messages"
+msgstr "Meldinger"
-#: ../../include/nav.php:144
-msgid "Help and documentation"
-msgstr "Hjelp og dokumentasjon"
+#: ../../include/widgets.php:567
+msgid "Check Mail"
+msgstr "Sjekk meldinger"
-#: ../../include/nav.php:147 ../../include/widgets.php:79
-#: ../../mod/apps.php:33
-msgid "Apps"
-msgstr "Apper"
+#: ../../include/widgets.php:572 ../../include/nav.php:209
+msgid "New Message"
+msgstr "Ny melding"
-#: ../../include/nav.php:147
-msgid "Applications, utilities, links, games"
-msgstr "Programmer, verktøy, lenker, spill"
+#: ../../include/widgets.php:648
+msgid "Chat Rooms"
+msgstr "Chatrom"
-#: ../../include/nav.php:149 ../../include/text.php:813
-#: ../../include/text.php:827 ../../include/apps.php:137
-#: ../../mod/search.php:29
-msgid "Search"
-msgstr "Søk"
+#: ../../include/widgets.php:666
+msgid "Bookmarked Chatrooms"
+msgstr "Bokmerkede chatrom"
-#: ../../include/nav.php:149
-msgid "Search site content"
-msgstr "Søk stedets innhold"
+#: ../../include/widgets.php:684
+msgid "Suggested Chatrooms"
+msgstr "Foreslåtte chatrom"
-#: ../../include/nav.php:152 ../../include/apps.php:131
-#: ../../mod/directory.php:210
-msgid "Directory"
-msgstr "Katalog"
+#: ../../include/zot.php:664
+msgid "Invalid data packet"
+msgstr "Ugyldig datapakke"
-#: ../../include/nav.php:152
-msgid "Channel Locator"
-msgstr "Kanal-finner"
+#: ../../include/zot.php:680
+msgid "Unable to verify channel signature"
+msgstr "Ikke i stand til å sjekke kanalsignaturen"
-#: ../../include/nav.php:163 ../../include/apps.php:123
-msgid "Matrix"
-msgstr "Matrix"
+#: ../../include/zot.php:1799
+#, php-format
+msgid "Unable to verify site signature for %s"
+msgstr "Ikke i stand til å bekrefte signaturen til %s"
-#: ../../include/nav.php:163
-msgid "Your matrix"
-msgstr "Din matrix"
+#: ../../include/activities.php:39
+msgid " and "
+msgstr "og"
-#: ../../include/nav.php:164
-msgid "Mark all matrix notifications seen"
-msgstr "Merk alle matrix-varsler som sett"
+#: ../../include/activities.php:47
+msgid "public profile"
+msgstr "offentlig profil"
-#: ../../include/nav.php:166 ../../include/apps.php:127
-msgid "Channel Home"
-msgstr "Kanalhjem"
+#: ../../include/activities.php:52
+#, php-format
+msgid "%1$s changed %2$s to &ldquo;%3$s&rdquo;"
+msgstr "%1$s endret %2$s til &ldquo;%3$s&rdquo;"
-#: ../../include/nav.php:166
-msgid "Channel home"
-msgstr "Kanalhjem"
+#: ../../include/activities.php:53
+#, php-format
+msgid "Visit %1$s's %2$s"
+msgstr "Besøk %1$s sitt %2$s"
-#: ../../include/nav.php:167
-msgid "Mark all channel notifications seen"
-msgstr "Merk alle kanalvarsler som sett"
+#: ../../include/activities.php:56
+#, php-format
+msgid "%1$s has an updated %2$s, changing %3$s."
+msgstr "%1$s har oppdatert %2$s, endret %3$s."
-#: ../../include/nav.php:170 ../../mod/connections.php:386
-msgid "Connections"
-msgstr "Forbindelser"
+#: ../../include/bb2diaspora.php:384
+msgid "Attachments:"
+msgstr "Vedlegg:"
-#: ../../include/nav.php:173
-msgid "Notices"
-msgstr "Varsel"
+#: ../../include/bb2diaspora.php:463 ../../include/event.php:11
+msgid "l F d, Y \\@ g:i A"
+msgstr "l F d, Y \\@ g:i A"
-#: ../../include/nav.php:173
-msgid "Notifications"
-msgstr "Varsler"
+#: ../../include/bb2diaspora.php:465
+msgid "Redmatrix event notification:"
+msgstr "RedMatrix hendelsesvarsling:"
-#: ../../include/nav.php:174
-msgid "See all notifications"
-msgstr "Se alle varsler"
+#: ../../include/bb2diaspora.php:469 ../../include/event.php:20
+msgid "Starts:"
+msgstr "Starter:"
-#: ../../include/nav.php:175 ../../mod/notifications.php:99
-msgid "Mark all system notifications seen"
-msgstr "Merk alle systemvarsler som sett"
+#: ../../include/bb2diaspora.php:477 ../../include/event.php:30
+msgid "Finishes:"
+msgstr "Slutter:"
-#: ../../include/nav.php:177 ../../include/apps.php:133
-msgid "Mail"
-msgstr "Melding"
+#: ../../include/bb2diaspora.php:485 ../../include/event.php:40
+#: ../../include/identity.php:891 ../../mod/directory.php:159
+#: ../../mod/events.php:579
+msgid "Location:"
+msgstr "Plassering:"
-#: ../../include/nav.php:177
-msgid "Private mail"
-msgstr "Privat post"
+#: ../../include/RedDAV/RedBrowser.php:106
+#: ../../include/RedDAV/RedBrowser.php:249
+msgid "parent"
+msgstr "opp et nivå"
-#: ../../include/nav.php:178
-msgid "See all private messages"
-msgstr "Se alle private meldinger"
+#: ../../include/RedDAV/RedBrowser.php:130
+msgid "Collection"
+msgstr "Samling"
-#: ../../include/nav.php:179
-msgid "Mark all private messages seen"
-msgstr "Merk alle private meldinger som sett"
+#: ../../include/RedDAV/RedBrowser.php:133
+msgid "Principal"
+msgstr "Viktigste"
-#: ../../include/nav.php:180
-msgid "Inbox"
-msgstr "Innboks"
+#: ../../include/RedDAV/RedBrowser.php:136
+msgid "Addressbook"
+msgstr "Adressebok"
-#: ../../include/nav.php:181
-msgid "Outbox"
-msgstr "Utboks"
+#: ../../include/RedDAV/RedBrowser.php:139
+msgid "Calendar"
+msgstr "Kalender"
-#: ../../include/nav.php:182 ../../include/widgets.php:536
-msgid "New Message"
-msgstr "Ny melding"
+#: ../../include/RedDAV/RedBrowser.php:142
+msgid "Schedule Inbox"
+msgstr "Tidsplan innboks"
-#: ../../include/nav.php:185 ../../include/apps.php:130
-#: ../../mod/events.php:377
-msgid "Events"
-msgstr "Hendelser"
+#: ../../include/RedDAV/RedBrowser.php:145
+msgid "Schedule Outbox"
+msgstr "Tidsplan utboks"
-#: ../../include/nav.php:185
-msgid "Event Calendar"
-msgstr "Kalender"
+#: ../../include/RedDAV/RedBrowser.php:223
+#, php-format
+msgid "%1$s used"
+msgstr "%1$s brukt"
-#: ../../include/nav.php:186
-msgid "See all events"
-msgstr "Se alle hendelser"
+#: ../../include/RedDAV/RedBrowser.php:228
+#, php-format
+msgid "%1$s used of %2$s (%3$s&#37;)"
+msgstr "%1$s brukt av %2$s (%3$s&#37;)"
-#: ../../include/nav.php:187
-msgid "Mark all events seen"
-msgstr "Merk alle hendelser som sett"
+#: ../../include/RedDAV/RedBrowser.php:245 ../../mod/settings.php:551
+#: ../../mod/settings.php:577 ../../mod/admin.php:866
+msgid "Name"
+msgstr "Navn"
-#: ../../include/nav.php:189 ../../include/apps.php:122
-msgid "Channel Select"
-msgstr "Kanaler"
+#: ../../include/RedDAV/RedBrowser.php:246
+msgid "Type"
+msgstr "Type"
-#: ../../include/nav.php:189
-msgid "Manage Your Channels"
-msgstr "HÃ¥ndter dine kanaler"
+#: ../../include/RedDAV/RedBrowser.php:247
+msgid "Size"
+msgstr "Størrelse"
-#: ../../include/nav.php:191 ../../include/apps.php:124
-#: ../../include/widgets.php:514 ../../mod/admin.php:977
-#: ../../mod/admin.php:1182
-msgid "Settings"
-msgstr "Innstillinger"
+#: ../../include/RedDAV/RedBrowser.php:248
+msgid "Last Modified"
+msgstr "Sist endret"
-#: ../../include/nav.php:191
-msgid "Account/Channel Settings"
-msgstr "Konto-/kanal-innstillinger"
+#: ../../include/RedDAV/RedBrowser.php:252
+msgid "Total"
+msgstr "Totalt"
-#: ../../include/nav.php:199 ../../mod/admin.php:117
-msgid "Admin"
-msgstr "Administrator"
+#: ../../include/RedDAV/RedBrowser.php:305
+msgid "Create new folder"
+msgstr "Lag ny mappe"
-#: ../../include/nav.php:199
-msgid "Site Setup and Configuration"
-msgstr "Nettstedsoppsett og -konfigurasjon"
+#: ../../include/RedDAV/RedBrowser.php:306 ../../mod/mitem.php:169
+#: ../../mod/menu.php:100 ../../mod/new_channel.php:122
+msgid "Create"
+msgstr "Lag"
-#: ../../include/nav.php:224
-msgid "Nothing new here"
-msgstr "Ikke noe nytt her"
+#: ../../include/RedDAV/RedBrowser.php:307
+msgid "Upload file"
+msgstr "Last opp fil"
-#: ../../include/nav.php:228
-msgid "Please wait..."
-msgstr "Vennligst vent..."
+#: ../../include/RedDAV/RedBrowser.php:308 ../../mod/photos.php:738
+#: ../../mod/photos.php:1245 ../../mod/profile_photo.php:361
+msgid "Upload"
+msgstr "Last opp"
-#: ../../include/bookmarks.php:42
+#: ../../include/bookmarks.php:35
#, php-format
msgid "%1$s's bookmarks"
msgstr "%1$s sine bokmerker"
-#: ../../include/chat.php:10
-msgid "Missing room name"
-msgstr "Mangler romnavn"
-
-#: ../../include/chat.php:19
-msgid "Duplicate room name"
-msgstr "Duplikat romnavn"
-
-#: ../../include/chat.php:68 ../../include/chat.php:76
-msgid "Invalid room specifier."
-msgstr "Ugyldig rom-spesifisering"
-
-#: ../../include/chat.php:105
-msgid "Room not found."
-msgstr "Rommet ble ikke funnet."
-
-#: ../../include/chat.php:126
-msgid "Room is full"
-msgstr "Rommet er fullt"
-
-#: ../../include/taxonomy.php:210
-msgid "Tags"
-msgstr "Merkelapper"
-
-#: ../../include/taxonomy.php:227
-msgid "Keywords"
-msgstr "Nøkkelord"
-
-#: ../../include/taxonomy.php:252
-msgid "have"
-msgstr "har"
+#: ../../include/follow.php:28
+msgid "Channel is blocked on this site."
+msgstr "Kanalen er blokkert på dette nettstedet."
-#: ../../include/taxonomy.php:252
-msgid "has"
-msgstr "har"
+#: ../../include/follow.php:33
+msgid "Channel location missing."
+msgstr "Kanalplassering mangler."
-#: ../../include/taxonomy.php:253
-msgid "want"
-msgstr "ønsker"
+#: ../../include/follow.php:82
+msgid "Response from remote channel was incomplete."
+msgstr "Svaret fra den andre kanalen var ikke komplett."
-#: ../../include/taxonomy.php:253
-msgid "wants"
-msgstr "ønsker"
+#: ../../include/follow.php:99
+msgid "Channel was deleted and no longer exists."
+msgstr "Kanalen er slettet og finnes ikke lenger."
-#: ../../include/taxonomy.php:254 ../../include/ItemObject.php:208
-msgid "like"
-msgstr "liker"
+#: ../../include/follow.php:135 ../../include/follow.php:202
+msgid "Protocol disabled."
+msgstr "Protokollen er avskrudd."
-#: ../../include/taxonomy.php:254
-msgid "likes"
-msgstr "liker"
+#: ../../include/follow.php:176
+msgid "Channel discovery failed."
+msgstr "Kanaloppdagelse mislyktes."
-#: ../../include/taxonomy.php:255 ../../include/ItemObject.php:209
-msgid "dislike"
-msgstr "misliker"
+#: ../../include/follow.php:192
+msgid "local account not found."
+msgstr "lokal konto ble ikke funnet."
-#: ../../include/taxonomy.php:255
-msgid "dislikes"
-msgstr "misliker"
+#: ../../include/follow.php:220
+msgid "Cannot connect to yourself."
+msgstr "Kan ikke lage forbindelse med deg selv."
-#: ../../include/comanche.php:35 ../../view/theme/apw/php/config.php:185
-#: ../../view/theme/redbasic/php/config.php:84
+#: ../../include/comanche.php:35 ../../mod/admin.php:353
+#: ../../view/theme/apw/php/config.php:185
msgid "Default"
msgstr "Standard"
-#: ../../include/contact_selectors.php:30
-msgid "Unknown | Not categorised"
-msgstr "Ukjent | Ikke kategorisert"
-
-#: ../../include/contact_selectors.php:31
-msgid "Block immediately"
-msgstr "Blokker umiddelbart"
-
-#: ../../include/contact_selectors.php:32
-msgid "Shady, spammer, self-marketer"
-msgstr "Lyssky, utsender av søppelpost, egenkampanje"
-
-#: ../../include/contact_selectors.php:33
-msgid "Known to me, but no opinion"
-msgstr "Bekjent av meg, men jeg er uten mening"
-
-#: ../../include/contact_selectors.php:34
-msgid "OK, probably harmless"
-msgstr "OK, antakelig harmløs"
-
-#: ../../include/contact_selectors.php:35
-msgid "Reputable, has my trust"
-msgstr "Hederlig, har min tillit"
-
-#: ../../include/contact_selectors.php:54
+#: ../../include/contact_selectors.php:56
msgid "Frequently"
msgstr "Ofte"
-#: ../../include/contact_selectors.php:55
+#: ../../include/contact_selectors.php:57
msgid "Hourly"
msgstr "Hver time"
-#: ../../include/contact_selectors.php:56
+#: ../../include/contact_selectors.php:58
msgid "Twice daily"
msgstr "To ganger daglig"
-#: ../../include/contact_selectors.php:57
+#: ../../include/contact_selectors.php:59
msgid "Daily"
msgstr "Daglig"
-#: ../../include/contact_selectors.php:58
+#: ../../include/contact_selectors.php:60
msgid "Weekly"
msgstr "Ukentlig"
-#: ../../include/contact_selectors.php:59
+#: ../../include/contact_selectors.php:61
msgid "Monthly"
msgstr "MÃ¥nedlig"
-#: ../../include/contact_selectors.php:74
+#: ../../include/contact_selectors.php:76
msgid "Friendica"
msgstr "Friendica"
-#: ../../include/contact_selectors.php:75
+#: ../../include/contact_selectors.php:77
msgid "OStatus"
msgstr "OStatus"
-#: ../../include/contact_selectors.php:76
+#: ../../include/contact_selectors.php:78
msgid "RSS/Atom"
msgstr "RSS/Atom"
-#: ../../include/contact_selectors.php:77 ../../mod/admin.php:754
-#: ../../mod/admin.php:763 ../../boot.php:1459
+#: ../../include/contact_selectors.php:79 ../../mod/admin.php:726
+#: ../../mod/admin.php:735 ../../boot.php:1488
msgid "Email"
msgstr "E-post"
-#: ../../include/contact_selectors.php:78
+#: ../../include/contact_selectors.php:80
msgid "Diaspora"
msgstr "Diaspora"
-#: ../../include/contact_selectors.php:79
+#: ../../include/contact_selectors.php:81
msgid "Facebook"
msgstr "Facebook"
-#: ../../include/contact_selectors.php:80
+#: ../../include/contact_selectors.php:82
msgid "Zot!"
msgstr "Zot!"
-#: ../../include/contact_selectors.php:81
+#: ../../include/contact_selectors.php:83
msgid "LinkedIn"
msgstr "LinkedIn"
-#: ../../include/contact_selectors.php:82
+#: ../../include/contact_selectors.php:84
msgid "XMPP/IM"
msgstr "XMPP/IM"
-#: ../../include/contact_selectors.php:83
+#: ../../include/contact_selectors.php:85
msgid "MySpace"
msgstr "MySpace"
@@ -1274,7 +1153,7 @@ msgid_plural "%d invitations available"
msgstr[0] "%d invitasjon tilgjengelig"
msgstr[1] "%d invitasjoner tilgjengelig"
-#: ../../include/contact_widgets.php:19 ../../mod/admin.php:446
+#: ../../include/contact_widgets.php:19 ../../mod/admin.php:416
msgid "Advanced"
msgstr "Avansert"
@@ -1294,8 +1173,8 @@ msgstr "Forbindelse/Følg"
msgid "Examples: Robert Morgenstein, Fishing"
msgstr "Eksempler: Ola Nordmann, fisking"
-#: ../../include/contact_widgets.php:26 ../../mod/connections.php:392
-#: ../../mod/directory.php:206 ../../mod/directory.php:211
+#: ../../include/contact_widgets.php:26 ../../mod/directory.php:267
+#: ../../mod/directory.php:272 ../../mod/connections.php:412
msgid "Find"
msgstr "Finn"
@@ -1312,26 +1191,8 @@ msgid "Invite Friends"
msgstr "Inviter venner"
#: ../../include/contact_widgets.php:32
-msgid "Exammple: name=fred and country=iceland"
-msgstr "Eksempel: name=fred og country=iceland"
-
-#: ../../include/contact_widgets.php:33
-msgid "Advanced Find"
-msgstr "Avansert finn"
-
-#: ../../include/contact_widgets.php:58 ../../include/features.php:66
-#: ../../include/widgets.php:296
-msgid "Saved Folders"
-msgstr "Lagrede mapper"
-
-#: ../../include/contact_widgets.php:61 ../../include/contact_widgets.php:95
-#: ../../include/widgets.php:299
-msgid "Everything"
-msgstr "Alt"
-
-#: ../../include/contact_widgets.php:92 ../../include/widgets.php:29
-msgid "Categories"
-msgstr "Kategorier"
+msgid "Advanced example: name=fred and country=iceland"
+msgstr "Avansert eksempel: navn=fred og land=island"
#: ../../include/contact_widgets.php:125
#, php-format
@@ -1344,125 +1205,6 @@ msgstr[1] "%d forbindelser felles"
msgid "show more"
msgstr "vis mer"
-#: ../../include/event.php:326
-msgid "This event has been added to your calendar."
-msgstr "Denne hendelsen er lagt til i din kalender."
-
-#: ../../include/reddav.php:1045
-msgid "Edit File properties"
-msgstr "Endre filegenskaper"
-
-#: ../../include/datetime.php:43 ../../include/datetime.php:45
-msgid "Miscellaneous"
-msgstr "Forskjellig"
-
-#: ../../include/datetime.php:152 ../../include/datetime.php:284
-msgid "year"
-msgstr "Ã¥r"
-
-#: ../../include/datetime.php:157 ../../include/datetime.php:285
-msgid "month"
-msgstr "måned"
-
-#: ../../include/datetime.php:162 ../../include/datetime.php:287
-msgid "day"
-msgstr "dag"
-
-#: ../../include/datetime.php:275
-msgid "never"
-msgstr "aldri"
-
-#: ../../include/datetime.php:281
-msgid "less than a second ago"
-msgstr "for mindre enn ett sekund siden"
-
-#: ../../include/datetime.php:284
-msgid "years"
-msgstr "Ã¥r"
-
-#: ../../include/datetime.php:285
-msgid "months"
-msgstr "måneder"
-
-#: ../../include/datetime.php:286
-msgid "week"
-msgstr "uke"
-
-#: ../../include/datetime.php:286
-msgid "weeks"
-msgstr "uker"
-
-#: ../../include/datetime.php:287
-msgid "days"
-msgstr "dager"
-
-#: ../../include/datetime.php:288
-msgid "hour"
-msgstr "time"
-
-#: ../../include/datetime.php:288
-msgid "hours"
-msgstr "timer"
-
-#: ../../include/datetime.php:289
-msgid "minute"
-msgstr "minutt"
-
-#: ../../include/datetime.php:289
-msgid "minutes"
-msgstr "minutter"
-
-#: ../../include/datetime.php:290
-msgid "second"
-msgstr "sekund"
-
-#: ../../include/datetime.php:290
-msgid "seconds"
-msgstr "sekunder"
-
-#: ../../include/datetime.php:299
-#, php-format
-msgid "%1$d %2$s ago"
-msgstr "%1$d %2$s siden"
-
-#: ../../include/datetime.php:504
-#, php-format
-msgid "%1$s's birthday"
-msgstr "%1$s sin fødselsdag"
-
-#: ../../include/datetime.php:505
-#, php-format
-msgid "Happy Birthday %1$s"
-msgstr "Gratulerer med dagen, %1$s !"
-
-#: ../../include/dir_fns.php:36
-msgid "Sort Options"
-msgstr "Sorteringsmuligheter"
-
-#: ../../include/dir_fns.php:37
-msgid "Alphabetic"
-msgstr "Alfabetisk"
-
-#: ../../include/dir_fns.php:38
-msgid "Reverse Alphabetic"
-msgstr "Omvendt alfabetisk"
-
-#: ../../include/dir_fns.php:39
-msgid "Newest to Oldest"
-msgstr "Nyest til eldst"
-
-#: ../../include/dir_fns.php:51
-msgid "Enable Safe Search"
-msgstr "Skru på Trygt søk"
-
-#: ../../include/dir_fns.php:53
-msgid "Disable Safe Search"
-msgstr "Skru av Trygt søk"
-
-#: ../../include/dir_fns.php:55
-msgid "Safe Mode"
-msgstr "Trygt modus"
-
#: ../../include/enotify.php:41
msgid "Red Matrix Notification"
msgstr "Red Matrix-varsling"
@@ -1655,6 +1397,522 @@ msgstr "Bilde:"
msgid "Please visit %s to approve or reject the suggestion."
msgstr "Vennligst besøk %s for å godkjenne eller avslå dette forslaget."
+#: ../../include/enotify.php:477
+msgid "[Red:Notify]"
+msgstr "[Red:Notify]"
+
+#: ../../include/event.php:326
+msgid "This event has been added to your calendar."
+msgstr "Denne hendelsen er lagt til i din kalender."
+
+#: ../../include/group.php:26
+msgid ""
+"A deleted group with this name was revived. Existing item permissions "
+"<strong>may</strong> apply to this group and any future members. If this is "
+"not what you intended, please create another group with a different name."
+msgstr "En slettet gruppe med dette navnet ble gjenopprettet. Eksisterende tillatelser for elementet <strong>kan</strong> gjelde for denne gruppen og fremtidige medlemmer. Hvis du ønsket noe annet, vennligst lag en ny gruppe med et annet navn."
+
+#: ../../include/group.php:235
+msgid "Default privacy group for new contacts"
+msgstr "Standard personverngruppe for nye kontakter"
+
+#: ../../include/group.php:254 ../../mod/admin.php:735
+msgid "All Channels"
+msgstr "Alle kanaler"
+
+#: ../../include/group.php:276
+msgid "edit"
+msgstr "endre"
+
+#: ../../include/group.php:298
+msgid "Collections"
+msgstr "Samlinger"
+
+#: ../../include/group.php:299
+msgid "Edit collection"
+msgstr "Endre samling"
+
+#: ../../include/group.php:300
+msgid "Create a new collection"
+msgstr "Lag en ny samling"
+
+#: ../../include/group.php:301
+msgid "Channels not in any collection"
+msgstr "Kanaler som ikke er i noen samling"
+
+#: ../../include/bbcode.php:112 ../../include/bbcode.php:653
+#: ../../include/bbcode.php:656 ../../include/bbcode.php:661
+#: ../../include/bbcode.php:664 ../../include/bbcode.php:667
+#: ../../include/bbcode.php:670 ../../include/bbcode.php:675
+#: ../../include/bbcode.php:678 ../../include/bbcode.php:683
+#: ../../include/bbcode.php:686 ../../include/bbcode.php:689
+#: ../../include/bbcode.php:692
+msgid "Image/photo"
+msgstr "Bilde/fotografi"
+
+#: ../../include/bbcode.php:147 ../../include/bbcode.php:703
+msgid "Encrypted content"
+msgstr "Kryptert innhold"
+
+#: ../../include/bbcode.php:165
+msgid "Install design element: "
+msgstr "Installer designelement:"
+
+#: ../../include/bbcode.php:171
+msgid "QR code"
+msgstr "QR-kode"
+
+#: ../../include/bbcode.php:220
+#, php-format
+msgid "%1$s wrote the following %2$s %3$s"
+msgstr "%1$s skrev følgende %2$s %3$s"
+
+#: ../../include/bbcode.php:222
+msgid "post"
+msgstr "innlegg"
+
+#: ../../include/bbcode.php:621
+msgid "$1 spoiler"
+msgstr "$1 avsløring"
+
+#: ../../include/bbcode.php:641
+msgid "$1 wrote:"
+msgstr "$1 skrev:"
+
+#: ../../include/taxonomy.php:210
+msgid "Tags"
+msgstr "Merkelapper"
+
+#: ../../include/taxonomy.php:249
+msgid "Keywords"
+msgstr "Nøkkelord"
+
+#: ../../include/taxonomy.php:274
+msgid "have"
+msgstr "har"
+
+#: ../../include/taxonomy.php:274
+msgid "has"
+msgstr "har"
+
+#: ../../include/taxonomy.php:275
+msgid "want"
+msgstr "ønsker"
+
+#: ../../include/taxonomy.php:275
+msgid "wants"
+msgstr "ønsker"
+
+#: ../../include/taxonomy.php:276 ../../include/ItemObject.php:221
+msgid "like"
+msgstr "liker"
+
+#: ../../include/taxonomy.php:276
+msgid "likes"
+msgstr "liker"
+
+#: ../../include/taxonomy.php:277 ../../include/ItemObject.php:222
+msgid "dislike"
+msgstr "misliker"
+
+#: ../../include/taxonomy.php:277
+msgid "dislikes"
+msgstr "misliker"
+
+#: ../../include/taxonomy.php:360 ../../include/identity.php:1148
+#: ../../include/ItemObject.php:146 ../../mod/photos.php:1026
+msgctxt "noun"
+msgid "Like"
+msgid_plural "Likes"
+msgstr[0] "Liker"
+msgstr[1] "Liker"
+
+#: ../../include/nav.php:95 ../../include/nav.php:128 ../../boot.php:1485
+msgid "Logout"
+msgstr "Logg ut"
+
+#: ../../include/nav.php:95 ../../include/nav.php:128
+msgid "End this session"
+msgstr "Avslutt denne økten"
+
+#: ../../include/nav.php:98 ../../include/nav.php:159
+msgid "Home"
+msgstr "Hjem"
+
+#: ../../include/nav.php:98
+msgid "Your posts and conversations"
+msgstr "Dine innlegg og samtaler"
+
+#: ../../include/nav.php:99
+msgid "Your profile page"
+msgstr "Din profilside"
+
+#: ../../include/nav.php:101
+msgid "Edit Profiles"
+msgstr "Endre profiler"
+
+#: ../../include/nav.php:101
+msgid "Manage/Edit profiles"
+msgstr "HÃ¥ndter/endre profiler"
+
+#: ../../include/nav.php:103 ../../include/identity.php:864
+msgid "Edit Profile"
+msgstr "Endre profil"
+
+#: ../../include/nav.php:103
+msgid "Edit your profile"
+msgstr "Endre din profil"
+
+#: ../../include/nav.php:105
+msgid "Your photos"
+msgstr "Dine bilder"
+
+#: ../../include/nav.php:106
+msgid "Your files"
+msgstr "Dine filer"
+
+#: ../../include/nav.php:111 ../../include/apps.php:144
+msgid "Chat"
+msgstr "Chat"
+
+#: ../../include/nav.php:111
+msgid "Your chatrooms"
+msgstr "Dine chatterom"
+
+#: ../../include/nav.php:117
+msgid "Your bookmarks"
+msgstr "Dine bokmerker"
+
+#: ../../include/nav.php:121
+msgid "Your webpages"
+msgstr "Dine websider"
+
+#: ../../include/nav.php:125 ../../include/apps.php:129 ../../boot.php:1486
+msgid "Login"
+msgstr "Logg inn"
+
+#: ../../include/nav.php:125
+msgid "Sign in"
+msgstr "Logg på"
+
+#: ../../include/nav.php:142
+#, php-format
+msgid "%s - click to logout"
+msgstr "%s - klikk for å logge ut"
+
+#: ../../include/nav.php:145
+msgid "Remote authentication"
+msgstr "Fjernautentisering"
+
+#: ../../include/nav.php:145
+msgid "Click to authenticate to your home hub"
+msgstr "Klikk for å godkjennes mot din hjemme-hub"
+
+#: ../../include/nav.php:159
+msgid "Home Page"
+msgstr "Hjemmeside"
+
+#: ../../include/nav.php:163 ../../mod/register.php:224 ../../boot.php:1464
+msgid "Register"
+msgstr "Registrer"
+
+#: ../../include/nav.php:163
+msgid "Create an account"
+msgstr "Lag en konto"
+
+#: ../../include/nav.php:168 ../../include/apps.php:140 ../../mod/help.php:58
+#: ../../mod/help.php:63
+msgid "Help"
+msgstr "Hjelp"
+
+#: ../../include/nav.php:168
+msgid "Help and documentation"
+msgstr "Hjelp og dokumentasjon"
+
+#: ../../include/nav.php:171
+msgid "Applications, utilities, links, games"
+msgstr "Programmer, verktøy, lenker, spill"
+
+#: ../../include/nav.php:173 ../../include/text.php:826
+#: ../../include/text.php:838 ../../include/apps.php:145
+#: ../../mod/search.php:30
+msgid "Search"
+msgstr "Søk"
+
+#: ../../include/nav.php:173
+msgid "Search site content"
+msgstr "Søk stedets innhold"
+
+#: ../../include/nav.php:176 ../../include/apps.php:139
+#: ../../mod/directory.php:271
+msgid "Directory"
+msgstr "Katalog"
+
+#: ../../include/nav.php:176
+msgid "Channel Directory"
+msgstr "Kanalkatalog"
+
+#: ../../include/nav.php:190 ../../include/apps.php:131
+msgid "Matrix"
+msgstr "Matrix"
+
+#: ../../include/nav.php:190
+msgid "Your matrix"
+msgstr "Din matrix"
+
+#: ../../include/nav.php:191
+msgid "Mark all matrix notifications seen"
+msgstr "Merk alle matrix-varsler som sett"
+
+#: ../../include/nav.php:193 ../../include/apps.php:135
+msgid "Channel Home"
+msgstr "Kanalhjem"
+
+#: ../../include/nav.php:193
+msgid "Channel home"
+msgstr "Kanalhjem"
+
+#: ../../include/nav.php:194
+msgid "Mark all channel notifications seen"
+msgstr "Merk alle kanalvarsler som sett"
+
+#: ../../include/nav.php:197 ../../mod/connections.php:406
+msgid "Connections"
+msgstr "Forbindelser"
+
+#: ../../include/nav.php:200
+msgid "Notices"
+msgstr "Varsel"
+
+#: ../../include/nav.php:200
+msgid "Notifications"
+msgstr "Varsler"
+
+#: ../../include/nav.php:201
+msgid "See all notifications"
+msgstr "Se alle varsler"
+
+#: ../../include/nav.php:202 ../../mod/notifications.php:99
+msgid "Mark all system notifications seen"
+msgstr "Merk alle systemvarsler som sett"
+
+#: ../../include/nav.php:204 ../../include/apps.php:141
+msgid "Mail"
+msgstr "Melding"
+
+#: ../../include/nav.php:204
+msgid "Private mail"
+msgstr "Privat post"
+
+#: ../../include/nav.php:205
+msgid "See all private messages"
+msgstr "Se alle private meldinger"
+
+#: ../../include/nav.php:206
+msgid "Mark all private messages seen"
+msgstr "Merk alle private meldinger som sett"
+
+#: ../../include/nav.php:207
+msgid "Inbox"
+msgstr "Innboks"
+
+#: ../../include/nav.php:208
+msgid "Outbox"
+msgstr "Utboks"
+
+#: ../../include/nav.php:212 ../../include/apps.php:138
+#: ../../mod/events.php:431
+msgid "Events"
+msgstr "Hendelser"
+
+#: ../../include/nav.php:212
+msgid "Event Calendar"
+msgstr "Kalender"
+
+#: ../../include/nav.php:213
+msgid "See all events"
+msgstr "Se alle hendelser"
+
+#: ../../include/nav.php:214
+msgid "Mark all events seen"
+msgstr "Merk alle hendelser som sett"
+
+#: ../../include/nav.php:216 ../../include/apps.php:130
+#: ../../mod/manage.php:148
+msgid "Channel Manager"
+msgstr "Kanalstyring"
+
+#: ../../include/nav.php:216
+msgid "Manage Your Channels"
+msgstr "HÃ¥ndter dine kanaler"
+
+#: ../../include/nav.php:218
+msgid "Account/Channel Settings"
+msgstr "Konto-/kanal-innstillinger"
+
+#: ../../include/nav.php:226 ../../mod/admin.php:123
+msgid "Admin"
+msgstr "Administrator"
+
+#: ../../include/nav.php:226
+msgid "Site Setup and Configuration"
+msgstr "Nettstedsoppsett og -konfigurasjon"
+
+#: ../../include/nav.php:262
+msgid "Please wait..."
+msgstr "Vennligst vent..."
+
+#: ../../include/permissions.php:13
+msgid "Can view my normal stream and posts"
+msgstr "Kan se min normale strøm og innlegg"
+
+#: ../../include/permissions.php:14
+msgid "Can view my default channel profile"
+msgstr "Kan se min standard kanalprofil"
+
+#: ../../include/permissions.php:15
+msgid "Can view my photo albums"
+msgstr "Kan se mine fotoalbum"
+
+#: ../../include/permissions.php:16
+msgid "Can view my connections"
+msgstr "Kan se mine forbindelser"
+
+#: ../../include/permissions.php:17
+msgid "Can view my file storage"
+msgstr "Kan se mitt fillager"
+
+#: ../../include/permissions.php:18
+msgid "Can view my webpages"
+msgstr "Kan se mine websider"
+
+#: ../../include/permissions.php:21
+msgid "Can send me their channel stream and posts"
+msgstr "Kan sende meg deres kanalstrøm og innlegg"
+
+#: ../../include/permissions.php:22
+msgid "Can post on my channel page (\"wall\")"
+msgstr "Kan lage innlegg på min kanalside (\"vegg\")"
+
+#: ../../include/permissions.php:23
+msgid "Can comment on or like my posts"
+msgstr "Kan kommentere på eller like mine innlegg"
+
+#: ../../include/permissions.php:24
+msgid "Can send me private mail messages"
+msgstr "Kan sende meg private meldinger"
+
+#: ../../include/permissions.php:25
+msgid "Can post photos to my photo albums"
+msgstr "Kan legge inn bilder i mine fotoalbum"
+
+#: ../../include/permissions.php:26
+msgid "Can like/dislike stuff"
+msgstr "Kan like/ikke like forskjellige greier"
+
+#: ../../include/permissions.php:26
+msgid "Profiles and things other than posts/comments"
+msgstr "Profiler og andre ting enn innlegg/kommentarer"
+
+#: ../../include/permissions.php:28
+msgid "Can forward to all my channel contacts via post @mentions"
+msgstr "Kan videresende til alle mine kanalkontakter via @navn i innlegg"
+
+#: ../../include/permissions.php:28
+msgid "Advanced - useful for creating group forum channels"
+msgstr "Avansert - nyttig for å lage forumkanaler for grupper"
+
+#: ../../include/permissions.php:29
+msgid "Can chat with me (when available)"
+msgstr "Kan chatte/sende lynmeldinger til meg (når tilgjengelig)"
+
+#: ../../include/permissions.php:30
+msgid "Can write to my file storage"
+msgstr "Kan skrive til mitt fillager"
+
+#: ../../include/permissions.php:31
+msgid "Can edit my webpages"
+msgstr "Kan endre mine websider"
+
+#: ../../include/permissions.php:33
+msgid "Can source my public posts in derived channels"
+msgstr "Kan bruke mine offentlige innlegg som kanalkilde i egne kanaler"
+
+#: ../../include/permissions.php:33
+msgid "Somewhat advanced - very useful in open communities"
+msgstr "Litt avansert - svært nyttig i åpne fellesskap"
+
+#: ../../include/permissions.php:35
+msgid "Can administer my channel resources"
+msgstr "Kan administrere mine kanalressurser"
+
+#: ../../include/permissions.php:35
+msgid ""
+"Extremely advanced. Leave this alone unless you know what you are doing"
+msgstr "Ekstremt avansert. La dette være med mindre du vet hva du gjør"
+
+#: ../../include/permissions.php:785
+msgid "Social Networking"
+msgstr "Sosialt nettverk"
+
+#: ../../include/permissions.php:786 ../../include/permissions.php:788
+#: ../../include/permissions.php:790
+msgid "Mostly Public"
+msgstr "Ganske offentlig"
+
+#: ../../include/permissions.php:786 ../../include/permissions.php:788
+#: ../../include/permissions.php:790
+msgid "Restricted"
+msgstr "Begrenset"
+
+#: ../../include/permissions.php:786 ../../include/permissions.php:788
+msgid "Private"
+msgstr "Privat"
+
+#: ../../include/permissions.php:787
+msgid "Community Forum"
+msgstr "Forum for fellesskap"
+
+#: ../../include/permissions.php:789
+msgid "Feed Republish"
+msgstr "Republisering av strømmet innhold"
+
+#: ../../include/permissions.php:791
+msgid "Special Purpose"
+msgstr "Spesiell bruk"
+
+#: ../../include/permissions.php:792
+msgid "Celebrity/Soapbox"
+msgstr "Kjendis/Talerstol"
+
+#: ../../include/permissions.php:792
+msgid "Group Repository"
+msgstr "Gruppelager"
+
+#: ../../include/permissions.php:793 ../../include/profile_selectors.php:6
+#: ../../include/profile_selectors.php:23
+#: ../../include/profile_selectors.php:61
+#: ../../include/profile_selectors.php:97
+msgid "Other"
+msgstr "Annen"
+
+#: ../../include/permissions.php:794
+msgid "Custom/Expert Mode"
+msgstr "Tilpasset/Ekspertmodus"
+
+#: ../../include/Contact.php:123
+msgid "New window"
+msgstr "Nytt vindu"
+
+#: ../../include/Contact.php:124
+msgid "Open the selected location in a different window or browser tab"
+msgstr "Ã…pne det valgte stedet i et annet vindu eller nettleser-fane"
+
+#: ../../include/Contact.php:211 ../../mod/admin.php:646
+#, php-format
+msgid "User '%s' deleted"
+msgstr "Brukeren '%s' er slettet"
+
#: ../../include/features.php:23
msgid "General Features"
msgstr "Generelle funksjoner"
@@ -1676,884 +1934,604 @@ msgid "Ability to create multiple profiles"
msgstr "Mulig å lage flere profiler"
#: ../../include/features.php:27
+msgid "Advanced Profiles"
+msgstr "Avanserte profiler"
+
+#: ../../include/features.php:27
+msgid "Additional profile sections and selections"
+msgstr "Ytterlige seksjoner og utvalg til profilen"
+
+#: ../../include/features.php:28
+msgid "Profile Import/Export"
+msgstr "Profil-import/-eksport"
+
+#: ../../include/features.php:28
+msgid "Save and load profile details across sites/channels"
+msgstr "Lagre og åpne profildetaljer på tvers av nettsteder/kanaler"
+
+#: ../../include/features.php:29
msgid "Web Pages"
msgstr "Web-sider"
-#: ../../include/features.php:27
+#: ../../include/features.php:29
msgid "Provide managed web pages on your channel"
msgstr "Tilby kontrollerte web-sider på din kanal"
-#: ../../include/features.php:28
+#: ../../include/features.php:30
msgid "Private Notes"
msgstr "Private merknader"
-#: ../../include/features.php:28
+#: ../../include/features.php:30
msgid "Enables a tool to store notes and reminders"
msgstr "Skrur på et verktøy for lagre merknader og påminnelser"
-#: ../../include/features.php:33
+#: ../../include/features.php:34
+msgid "Navigation Channel Select"
+msgstr "Navigasjon kanalvalg"
+
+#: ../../include/features.php:34
+msgid "Change channels directly from within the navigation dropdown menu"
+msgstr "Endre kanaler direkte fra navigasjonsmenyen"
+
+#: ../../include/features.php:38
msgid "Extended Identity Sharing"
msgstr "Utvidet identitetsdeling"
-#: ../../include/features.php:33
+#: ../../include/features.php:38
msgid ""
"Share your identity with all websites on the internet. When disabled, "
"identity is only shared with sites in the matrix."
msgstr "Del din identiet med alle nettsteder på Internett. Når denne er avskrudd, deles identiteten bare med nettsteder i matrix."
-#: ../../include/features.php:34
+#: ../../include/features.php:39
msgid "Expert Mode"
msgstr "Ekspertmodus"
-#: ../../include/features.php:34
+#: ../../include/features.php:39
msgid "Enable Expert Mode to provide advanced configuration options"
msgstr "Skru på Ekspertmodus for å tilby avanserte konfigurasjonsvalg"
-#: ../../include/features.php:35
+#: ../../include/features.php:40
msgid "Premium Channel"
msgstr "Premiumkanal"
-#: ../../include/features.php:35
+#: ../../include/features.php:40
msgid ""
"Allows you to set restrictions and terms on those that connect with your "
"channel"
msgstr "Lar deg angi restriksjoner og betingelser for de som kobler seg til din kanal"
-#: ../../include/features.php:40
+#: ../../include/features.php:45
msgid "Post Composition Features"
msgstr "Funksjoner for å lage innlegg"
-#: ../../include/features.php:41
-msgid "Richtext Editor"
-msgstr "Riktekst redigeringsverktøy"
+#: ../../include/features.php:47
+msgid "Use Markdown"
+msgstr "Bruk Markdown"
-#: ../../include/features.php:41
-msgid "Enable richtext editor"
-msgstr "Skru på redigeringverktøy for riktekst"
+#: ../../include/features.php:47
+msgid "Allow use of \"Markdown\" to format posts"
+msgstr "Tillat bruk av \"Markdown\" til formatering av innlegg"
-#: ../../include/features.php:42
+#: ../../include/features.php:48
msgid "Post Preview"
msgstr "Forhåndsvisning av innlegg"
-#: ../../include/features.php:42
+#: ../../include/features.php:48
msgid "Allow previewing posts and comments before publishing them"
msgstr "Tillat forhåndsvisning av innlegg og kommentarer før publisering"
-#: ../../include/features.php:43 ../../include/widgets.php:503
-#: ../../mod/sources.php:88
-msgid "Channel Sources"
-msgstr "Kanalkilder"
-
-#: ../../include/features.php:43
+#: ../../include/features.php:49
msgid "Automatically import channel content from other channels or feeds"
msgstr "Automatisk import av kanalinnhold fra andre kanaler eller strømmer"
-#: ../../include/features.php:44
+#: ../../include/features.php:50
msgid "Even More Encryption"
msgstr "Enda mer kryptering"
-#: ../../include/features.php:44
+#: ../../include/features.php:50
msgid ""
"Allow optional encryption of content end-to-end with a shared secret key"
msgstr "Tillat valgfri kryptering av innhold ende-til-ende via en delt hemmelig nøkkel"
-#: ../../include/features.php:49
+#: ../../include/features.php:55
msgid "Network and Stream Filtering"
msgstr "Nettverk- og strømfiltrering"
-#: ../../include/features.php:50
+#: ../../include/features.php:56
msgid "Search by Date"
msgstr "Søk etter dato"
-#: ../../include/features.php:50
+#: ../../include/features.php:56
msgid "Ability to select posts by date ranges"
msgstr "Mulighet for å velge innlegg etter datoområde"
-#: ../../include/features.php:51
+#: ../../include/features.php:57
msgid "Collections Filter"
msgstr "Filter for samlinger"
-#: ../../include/features.php:51
+#: ../../include/features.php:57
msgid "Enable widget to display Network posts only from selected collections"
msgstr "Skru på miniprogram for å vise Nettverksinnlegg bare fra valgte samlinger"
-#: ../../include/features.php:52 ../../include/widgets.php:265
-msgid "Saved Searches"
-msgstr "Lagrede søk"
-
-#: ../../include/features.php:52
+#: ../../include/features.php:58
msgid "Save search terms for re-use"
msgstr "Lagre søkeuttrykk for senere bruk"
-#: ../../include/features.php:53
+#: ../../include/features.php:59
msgid "Network Personal Tab"
msgstr "Nettverk personlig fane"
-#: ../../include/features.php:53
+#: ../../include/features.php:59
msgid "Enable tab to display only Network posts that you've interacted on"
msgstr "Skru på fane for å bare vise Nettverksinnlegg som du har deltatt i"
-#: ../../include/features.php:54
+#: ../../include/features.php:60
msgid "Network New Tab"
msgstr "Nettverk Ny fane"
-#: ../../include/features.php:54
+#: ../../include/features.php:60
msgid "Enable tab to display all new Network activity"
msgstr "Skru på fane for å vise all ny nettverksaktivitet"
-#: ../../include/features.php:55
+#: ../../include/features.php:61
msgid "Affinity Tool"
msgstr "Nærhetsverktøy"
-#: ../../include/features.php:55
+#: ../../include/features.php:61
msgid "Filter stream activity by depth of relationships"
msgstr "Filtrer strømaktiviteten etter releasjonsdybde"
-#: ../../include/features.php:56
+#: ../../include/features.php:62
msgid "Suggest Channels"
msgstr "Foreslå kanaler"
-#: ../../include/features.php:56
+#: ../../include/features.php:62
msgid "Show channel suggestions"
msgstr "Vis kanalforslag"
-#: ../../include/features.php:61
+#: ../../include/features.php:67
msgid "Post/Comment Tools"
msgstr "Innlegg-/Kommentar-verktøy"
-#: ../../include/features.php:63
+#: ../../include/features.php:69
msgid "Edit Sent Posts"
msgstr "Endre publiserte innlegg"
-#: ../../include/features.php:63
+#: ../../include/features.php:69
msgid "Edit and correct posts and comments after sending"
msgstr "Endre og korrigere innlegg og kommentarer etter sending"
-#: ../../include/features.php:64
+#: ../../include/features.php:70
msgid "Tagging"
msgstr "Merking"
-#: ../../include/features.php:64
+#: ../../include/features.php:70
msgid "Ability to tag existing posts"
msgstr "Mulighet til å merke eksisterende meldinger"
-#: ../../include/features.php:65
+#: ../../include/features.php:71
msgid "Post Categories"
msgstr "Innleggskategorier"
-#: ../../include/features.php:65
+#: ../../include/features.php:71
msgid "Add categories to your posts"
msgstr "Legg kategorier til dine innlegg"
-#: ../../include/features.php:66
+#: ../../include/features.php:72
msgid "Ability to file posts under folders"
msgstr "Mulighet til å sortere innlegg i mapper"
-#: ../../include/features.php:67
+#: ../../include/features.php:73
msgid "Dislike Posts"
msgstr "Mislik innlegg"
-#: ../../include/features.php:67
+#: ../../include/features.php:73
msgid "Ability to dislike posts/comments"
msgstr "Mulighet til å mislike innlegg/kommentarer"
-#: ../../include/features.php:68
+#: ../../include/features.php:74
msgid "Star Posts"
msgstr "Stjerneinnlegg"
-#: ../../include/features.php:68
+#: ../../include/features.php:74
msgid "Ability to mark special posts with a star indicator"
msgstr "Mulighet til å merke spesielle innlegg med en stjerne"
-#: ../../include/features.php:69
+#: ../../include/features.php:75
msgid "Tag Cloud"
msgstr "Merkelappsky"
-#: ../../include/features.php:69
+#: ../../include/features.php:75
msgid "Provide a personal tag cloud on your channel page"
msgstr "Tilby en personlig merkelappsky på din kanalside"
-#: ../../include/follow.php:23
-msgid "Channel is blocked on this site."
-msgstr "Kanalen er blokkert på dette nettstedet."
+#: ../../include/account.php:23
+msgid "Not a valid email address"
+msgstr "Ikke en gyldig e-postadresse"
-#: ../../include/follow.php:28
-msgid "Channel location missing."
-msgstr "Kanalplassering mangler."
+#: ../../include/account.php:25
+msgid "Your email domain is not among those allowed on this site"
+msgstr "Ditt e-postdomene er ikke blant de som er tillatt på dette stedet"
-#: ../../include/follow.php:54
-msgid "Response from remote channel was incomplete."
-msgstr "Svaret fra den andre kanalen var ikke komplett."
+#: ../../include/account.php:31
+msgid "Your email address is already registered at this site."
+msgstr "Din e-postadresse er allerede registrert på dette nettstedet."
-#: ../../include/follow.php:85
-msgid "Channel was deleted and no longer exists."
-msgstr "Kanalen er slettet og finnes ikke lenger."
+#: ../../include/account.php:64
+msgid "An invitation is required."
+msgstr "En invitasjon er påkrevd."
-#: ../../include/follow.php:132
-msgid "Channel discovery failed."
-msgstr "Kanaloppdagelse mislyktes."
+#: ../../include/account.php:68
+msgid "Invitation could not be verified."
+msgstr "Invitasjon kunne ikke bekreftes."
-#: ../../include/follow.php:149
-msgid "local account not found."
-msgstr "lokal konto ble ikke funnet."
+#: ../../include/account.php:119
+msgid "Please enter the required information."
+msgstr "Vennligst skriv inn nødvendig informasjon."
-#: ../../include/follow.php:158
-msgid "Cannot connect to yourself."
-msgstr "Kan ikke lage forbindelse med deg selv."
+#: ../../include/account.php:187
+msgid "Failed to store account information."
+msgstr "Mislyktes med å lagre kontoinformasjon."
-#: ../../include/group.php:25
-msgid ""
-"A deleted group with this name was revived. Existing item permissions "
-"<strong>may</strong> apply to this group and any future members. If this is "
-"not what you intended, please create another group with a different name."
-msgstr "En slettet gruppe med dette navnet ble gjenopprettet. Eksisterende tillatelser for elementet <strong>kan</strong> gjelde for denne gruppen og fremtidige medlemmer. Hvis du ønsket noe annet, vennligst lag en ny gruppe med et annet navn."
+#: ../../include/account.php:245
+#, php-format
+msgid "Registration confirmation for %s"
+msgstr "Registreringsbekreftelse for %s"
-#: ../../include/group.php:223
-msgid "Default privacy group for new contacts"
-msgstr "Standard personverngruppe for nye kontakter"
+#: ../../include/account.php:313
+#, php-format
+msgid "Registration request at %s"
+msgstr "Registreringsforespørsel hos %s"
-#: ../../include/group.php:242 ../../mod/admin.php:763
-msgid "All Channels"
-msgstr "Alle kanaler"
+#: ../../include/account.php:315 ../../include/account.php:342
+#: ../../include/account.php:399
+msgid "Administrator"
+msgstr "Administrator"
-#: ../../include/group.php:264
-msgid "edit"
-msgstr "endre"
+#: ../../include/account.php:337
+msgid "your registration password"
+msgstr "ditt registreringspassord"
-#: ../../include/group.php:285
-msgid "Collections"
-msgstr "Samlinger"
+#: ../../include/account.php:340 ../../include/account.php:397
+#, php-format
+msgid "Registration details for %s"
+msgstr "Registreringsdetaljer for %s"
-#: ../../include/group.php:286
-msgid "Edit collection"
-msgstr "Endre samling"
+#: ../../include/account.php:406
+msgid "Account approved."
+msgstr "Konto godkjent."
-#: ../../include/group.php:287
-msgid "Create a new collection"
-msgstr "Lag en ny samling"
+#: ../../include/account.php:440
+#, php-format
+msgid "Registration revoked for %s"
+msgstr "Registrering trukket tilbake for %s"
-#: ../../include/group.php:288
-msgid "Channels not in any collection"
-msgstr "Kanaler som ikke er i noen samling"
+#: ../../include/account.php:486
+msgid "Account verified. Please login."
+msgstr "Konto bekreftet. Vennligst logg inn."
-#: ../../include/group.php:290 ../../include/widgets.php:266
-msgid "add"
-msgstr "legg til"
+#: ../../include/account.php:648 ../../include/account.php:650
+msgid "Click here to upgrade."
+msgstr "Klikk her for å oppgradere."
+
+#: ../../include/account.php:656
+msgid "This action exceeds the limits set by your subscription plan."
+msgstr "Denne handlingen går utenfor grensene satt i din abonnementsplan."
+
+#: ../../include/account.php:661
+msgid "This action is not available under your subscription plan."
+msgstr "Denne handlingen er ikke tilgjengelig i din abonnementsplan."
-#: ../../include/identity.php:30 ../../mod/item.php:1266
+#: ../../include/identity.php:31 ../../mod/item.php:1368
msgid "Unable to obtain identity information from database"
msgstr "Klarer ikke å få tak i identitetsinformasjon fra databasen"
-#: ../../include/identity.php:63
+#: ../../include/identity.php:66
msgid "Empty name"
msgstr "Mangler navn"
-#: ../../include/identity.php:65
+#: ../../include/identity.php:68
msgid "Name too long"
msgstr "Navnet er for langt"
-#: ../../include/identity.php:166
+#: ../../include/identity.php:169
msgid "No account identifier"
msgstr "Ingen kontoidentifikator"
-#: ../../include/identity.php:176
+#: ../../include/identity.php:182
msgid "Nickname is required."
msgstr "Kallenavn er påkrevd."
-#: ../../include/identity.php:190
+#: ../../include/identity.php:196
msgid "Reserved nickname. Please choose another."
msgstr "Reservert kallenavn. Vennligst velg et annet."
-#: ../../include/identity.php:195
+#: ../../include/identity.php:201 ../../include/dimport.php:34
msgid ""
"Nickname has unsupported characters or is already being used on this site."
msgstr "Kallenavnet inneholder tegn som ikke er støttet eller det er allerede i bruk på dette nettstedet."
-#: ../../include/identity.php:258
+#: ../../include/identity.php:283
msgid "Unable to retrieve created identity"
msgstr "Klarer ikke å hente den lagede identiteten"
-#: ../../include/identity.php:317
+#: ../../include/identity.php:343
msgid "Default Profile"
msgstr "Standardprofil"
-#: ../../include/identity.php:342 ../../include/widgets.php:400
-#: ../../include/profile_selectors.php:42 ../../mod/connedit.php:431
-msgid "Friends"
-msgstr "Venner"
-
-#: ../../include/identity.php:509
+#: ../../include/identity.php:643
msgid "Requested channel is not available."
msgstr "Forespurt kanal er ikke tilgjengelig."
-#: ../../include/identity.php:557 ../../mod/achievements.php:8
-#: ../../mod/profile.php:16 ../../mod/blocks.php:10 ../../mod/connect.php:13
-#: ../../mod/filestorage.php:40 ../../mod/layouts.php:8
-#: ../../mod/webpages.php:8
+#: ../../include/identity.php:691 ../../mod/achievements.php:11
+#: ../../mod/connect.php:13 ../../mod/profile.php:16 ../../mod/blocks.php:29
+#: ../../mod/webpages.php:29 ../../mod/editblock.php:29
+#: ../../mod/editlayout.php:28 ../../mod/editwebpage.php:28
+#: ../../mod/filestorage.php:48 ../../mod/layouts.php:29 ../../mod/hcard.php:8
msgid "Requested profile is not available."
msgstr "Forespurt profil er ikke tilgjengelig."
-#: ../../include/identity.php:675 ../../include/widgets.php:128
-#: ../../include/widgets.php:168 ../../include/Contact.php:107
-#: ../../mod/directory.php:183 ../../mod/dirprofile.php:164
-#: ../../mod/suggest.php:51 ../../mod/match.php:62
-msgid "Connect"
-msgstr "Koble"
-
-#: ../../include/identity.php:689 ../../mod/profiles.php:612
+#: ../../include/identity.php:854 ../../mod/profiles.php:740
msgid "Change profile photo"
msgstr "Endre profilbilde"
-#: ../../include/identity.php:695
+#: ../../include/identity.php:860
msgid "Profiles"
msgstr "Profiler"
-#: ../../include/identity.php:695
+#: ../../include/identity.php:860
msgid "Manage/edit profiles"
msgstr "HÃ¥ndtere/endre profiler"
-#: ../../include/identity.php:696 ../../mod/profiles.php:613
+#: ../../include/identity.php:861 ../../mod/profiles.php:741
msgid "Create New Profile"
msgstr "Lag ny profil"
-#: ../../include/identity.php:699
-msgid "Edit Profile"
-msgstr "Endre profil"
-
-#: ../../include/identity.php:710 ../../mod/profiles.php:624
+#: ../../include/identity.php:875 ../../mod/profiles.php:752
msgid "Profile Image"
msgstr "Profilbilde"
-#: ../../include/identity.php:713 ../../mod/profiles.php:627
+#: ../../include/identity.php:878
msgid "visible to everybody"
msgstr "synlig for alle"
-#: ../../include/identity.php:714 ../../mod/profiles.php:628
+#: ../../include/identity.php:879 ../../mod/profiles.php:635
+#: ../../mod/profiles.php:756
msgid "Edit visibility"
msgstr "Endre synlighet"
-#: ../../include/identity.php:728 ../../include/identity.php:952
-#: ../../mod/directory.php:158
+#: ../../include/identity.php:895 ../../include/identity.php:1132
msgid "Gender:"
msgstr "Kjønn:"
-#: ../../include/identity.php:729 ../../include/identity.php:977
-#: ../../mod/directory.php:160
+#: ../../include/identity.php:896 ../../include/identity.php:1176
msgid "Status:"
msgstr "Status:"
-#: ../../include/identity.php:730 ../../include/identity.php:988
-#: ../../mod/directory.php:162
+#: ../../include/identity.php:897 ../../include/identity.php:1187
msgid "Homepage:"
msgstr "Hjemmeside:"
-#: ../../include/identity.php:731 ../../mod/dirprofile.php:151
+#: ../../include/identity.php:898
msgid "Online Now"
msgstr "Online nå"
-#: ../../include/identity.php:796 ../../include/identity.php:876
-#: ../../mod/ping.php:262
+#: ../../include/identity.php:976 ../../include/identity.php:1056
+#: ../../mod/ping.php:318
msgid "g A l F d"
msgstr "g A l F d"
-#: ../../include/identity.php:797 ../../include/identity.php:877
+#: ../../include/identity.php:977 ../../include/identity.php:1057
msgid "F d"
msgstr "F d"
-#: ../../include/identity.php:842 ../../include/identity.php:917
-#: ../../mod/ping.php:284
+#: ../../include/identity.php:1022 ../../include/identity.php:1097
+#: ../../mod/ping.php:340
msgid "[today]"
msgstr "[idag]"
-#: ../../include/identity.php:854
+#: ../../include/identity.php:1034
msgid "Birthday Reminders"
msgstr "Fødselsdagspåminnnelser"
-#: ../../include/identity.php:855
+#: ../../include/identity.php:1035
msgid "Birthdays this week:"
msgstr "Fødselsdager denne uken:"
-#: ../../include/identity.php:910
+#: ../../include/identity.php:1090
msgid "[No description]"
msgstr "[Ingen beskrivelse]"
-#: ../../include/identity.php:928
+#: ../../include/identity.php:1108
msgid "Event Reminders"
msgstr "Hendelsespåminnelser"
-#: ../../include/identity.php:929
+#: ../../include/identity.php:1109
msgid "Events this week:"
msgstr "Hendelser denne uken:"
-#: ../../include/identity.php:942 ../../include/identity.php:1031
-#: ../../include/apps.php:128 ../../mod/profperm.php:112
+#: ../../include/identity.php:1122 ../../include/identity.php:1240
+#: ../../include/apps.php:136 ../../mod/profperm.php:112
msgid "Profile"
msgstr "Profil"
-#: ../../include/identity.php:950 ../../mod/settings.php:935
+#: ../../include/identity.php:1130 ../../mod/settings.php:984
msgid "Full Name:"
msgstr "Fullt navn:"
-#: ../../include/identity.php:962
+#: ../../include/identity.php:1137
+msgid "Like this channel"
+msgstr "Lik denne kanalen"
+
+#: ../../include/identity.php:1161
msgid "j F, Y"
msgstr "j F, Y"
-#: ../../include/identity.php:963
+#: ../../include/identity.php:1162
msgid "j F"
msgstr "j F"
-#: ../../include/identity.php:970
+#: ../../include/identity.php:1169
msgid "Birthday:"
msgstr "Fødselsdag:"
-#: ../../include/identity.php:974
+#: ../../include/identity.php:1173
msgid "Age:"
msgstr "Alder:"
-#: ../../include/identity.php:983
+#: ../../include/identity.php:1182
#, php-format
msgid "for %1$d %2$s"
msgstr "for %1$d %2$s"
-#: ../../include/identity.php:986 ../../mod/profiles.php:535
+#: ../../include/identity.php:1185 ../../mod/profiles.php:657
msgid "Sexual Preference:"
msgstr "Seksuell preferanse:"
-#: ../../include/identity.php:990 ../../mod/profiles.php:537
+#: ../../include/identity.php:1189 ../../mod/profiles.php:659
msgid "Hometown:"
msgstr "Hjemby:"
-#: ../../include/identity.php:992
+#: ../../include/identity.php:1191
msgid "Tags:"
msgstr "Merkelapper:"
-#: ../../include/identity.php:994 ../../mod/profiles.php:538
+#: ../../include/identity.php:1193 ../../mod/profiles.php:660
msgid "Political Views:"
msgstr "Politiske synspunkter:"
-#: ../../include/identity.php:996
+#: ../../include/identity.php:1195
msgid "Religion:"
msgstr "Religion:"
-#: ../../include/identity.php:998 ../../mod/directory.php:164
+#: ../../include/identity.php:1197
msgid "About:"
msgstr "Om:"
-#: ../../include/identity.php:1000
+#: ../../include/identity.php:1199
msgid "Hobbies/Interests:"
msgstr "Hobbyer/interesser:"
-#: ../../include/identity.php:1002 ../../mod/profiles.php:541
+#: ../../include/identity.php:1201 ../../mod/profiles.php:663
msgid "Likes:"
msgstr "Liker:"
-#: ../../include/identity.php:1004 ../../mod/profiles.php:542
+#: ../../include/identity.php:1203 ../../mod/profiles.php:664
msgid "Dislikes:"
msgstr "Misliker:"
-#: ../../include/identity.php:1007
+#: ../../include/identity.php:1206
msgid "Contact information and Social Networks:"
msgstr "Kontaktinformasjon og sosiale nettverk:"
-#: ../../include/identity.php:1009
+#: ../../include/identity.php:1208
msgid "My other channels:"
msgstr "Mine andre kanaler:"
-#: ../../include/identity.php:1011
+#: ../../include/identity.php:1210
msgid "Musical interests:"
msgstr "Musikkinteresse:"
-#: ../../include/identity.php:1013
+#: ../../include/identity.php:1212
msgid "Books, literature:"
msgstr "Bøker, litteratur:"
-#: ../../include/identity.php:1015
+#: ../../include/identity.php:1214
msgid "Television:"
msgstr "TV:"
-#: ../../include/identity.php:1017
+#: ../../include/identity.php:1216
msgid "Film/dance/culture/entertainment:"
msgstr "Film/dans/kultur/underholdning:"
-#: ../../include/identity.php:1019
+#: ../../include/identity.php:1218
msgid "Love/Romance:"
msgstr "Kjærlighet/romantikk:"
-#: ../../include/identity.php:1021
+#: ../../include/identity.php:1220
msgid "Work/employment:"
msgstr "Arbeid/sysselsetting:"
-#: ../../include/identity.php:1023
+#: ../../include/identity.php:1222
msgid "School/education:"
msgstr "Skole/utdannelse:"
-#: ../../include/network.php:652
-msgid "view full size"
-msgstr "vis full størrelse"
+#: ../../include/identity.php:1242
+msgid "Like this thing"
+msgstr "Lik denne tingen"
-#: ../../include/text.php:320
-msgid "prev"
-msgstr "forrige"
+#: ../../include/items.php:377 ../../mod/profperm.php:23
+#: ../../mod/subthread.php:49 ../../mod/group.php:68 ../../mod/like.php:246
+#: ../../index.php:389
+msgid "Permission denied"
+msgstr "Tillatelse avvist"
-#: ../../include/text.php:322
-msgid "first"
-msgstr "første"
+#: ../../include/items.php:964 ../../include/items.php:1009
+msgid "(Unknown)"
+msgstr "(Ukjent)"
-#: ../../include/text.php:351
-msgid "last"
-msgstr "siste"
+#: ../../include/items.php:1165
+msgid "Visible to anybody on the internet."
+msgstr "Synlig for enhver på Internett."
-#: ../../include/text.php:354
-msgid "next"
-msgstr "neste"
+#: ../../include/items.php:1167
+msgid "Visible to you only."
+msgstr "Synlig bare for deg."
-#: ../../include/text.php:366
-msgid "older"
-msgstr "eldre"
+#: ../../include/items.php:1169
+msgid "Visible to anybody in this network."
+msgstr "Synlig for enhver i dette nettverket."
-#: ../../include/text.php:368
-msgid "newer"
-msgstr "nyere"
+#: ../../include/items.php:1171
+msgid "Visible to anybody authenticated."
+msgstr "Synlig for enhver som er autentisert."
-#: ../../include/text.php:729
-msgid "No connections"
-msgstr "Ingen forbindelser"
-
-#: ../../include/text.php:742
+#: ../../include/items.php:1173
#, php-format
-msgid "%d Connection"
-msgid_plural "%d Connections"
-msgstr[0] "%d forbindelse"
-msgstr[1] "%d forbindelser"
-
-#: ../../include/text.php:754
-msgid "View Connections"
-msgstr "Vis forbindelser"
-
-#: ../../include/text.php:815 ../../include/text.php:829
-#: ../../include/widgets.php:186 ../../mod/rbmark.php:28
-#: ../../mod/rbmark.php:98 ../../mod/filer.php:50
-msgid "Save"
-msgstr "Lagre"
-
-#: ../../include/text.php:895
-msgid "poke"
-msgstr "prikk"
-
-#: ../../include/text.php:896
-msgid "ping"
-msgstr "varsle"
-
-#: ../../include/text.php:896
-msgid "pinged"
-msgstr "varslet"
-
-#: ../../include/text.php:897
-msgid "prod"
-msgstr "oppildne"
-
-#: ../../include/text.php:897
-msgid "prodded"
-msgstr "oppildnet"
-
-#: ../../include/text.php:898
-msgid "slap"
-msgstr "daske"
+msgid "Visible to anybody on %s."
+msgstr "Synlig for alle på %s."
-#: ../../include/text.php:898
-msgid "slapped"
-msgstr "dasket"
-
-#: ../../include/text.php:899
-msgid "finger"
-msgstr "fingre"
+#: ../../include/items.php:1175
+msgid "Visible to all connections."
+msgstr "Synlig for alle forbindelser."
-#: ../../include/text.php:899
-msgid "fingered"
-msgstr "fingret"
+#: ../../include/items.php:1177
+msgid "Visible to approved connections."
+msgstr "Synlig for godkjente forbindelser."
-#: ../../include/text.php:900
-msgid "rebuff"
-msgstr "tilbakevise"
-
-#: ../../include/text.php:900
-msgid "rebuffed"
-msgstr "tilbakeviste"
-
-#: ../../include/text.php:909
-msgid "happy"
-msgstr "glad"
-
-#: ../../include/text.php:910
-msgid "sad"
-msgstr "trist"
-
-#: ../../include/text.php:911
-msgid "mellow"
-msgstr "dempet"
-
-#: ../../include/text.php:912
-msgid "tired"
-msgstr "trøtt"
-
-#: ../../include/text.php:913
-msgid "perky"
-msgstr "oppkvikket"
-
-#: ../../include/text.php:914
-msgid "angry"
-msgstr "sint"
-
-#: ../../include/text.php:915
-msgid "stupified"
-msgstr "sløvet"
-
-#: ../../include/text.php:916
-msgid "puzzled"
-msgstr "forundret"
-
-#: ../../include/text.php:917
-msgid "interested"
-msgstr "interessert"
-
-#: ../../include/text.php:918
-msgid "bitter"
-msgstr "bitter"
-
-#: ../../include/text.php:919
-msgid "cheerful"
-msgstr "munter"
+#: ../../include/items.php:1179
+msgid "Visible to specific connections."
+msgstr "Synlig for spesifikke forbindelser."
-#: ../../include/text.php:920
-msgid "alive"
-msgstr "levende"
-
-#: ../../include/text.php:921
-msgid "annoyed"
-msgstr "irritert"
-
-#: ../../include/text.php:922
-msgid "anxious"
-msgstr "nervøs"
-
-#: ../../include/text.php:923
-msgid "cranky"
-msgstr "gretten"
-
-#: ../../include/text.php:924
-msgid "disturbed"
-msgstr "foruroliget"
-
-#: ../../include/text.php:925
-msgid "frustrated"
-msgstr "frustrert"
-
-#: ../../include/text.php:926
-msgid "depressed"
-msgstr "lei seg"
-
-#: ../../include/text.php:927
-msgid "motivated"
-msgstr "motivert"
-
-#: ../../include/text.php:928
-msgid "relaxed"
-msgstr "avslappet"
-
-#: ../../include/text.php:929
-msgid "surprised"
-msgstr "overrasket"
-
-#: ../../include/text.php:1090
-msgid "Monday"
-msgstr "mandag"
-
-#: ../../include/text.php:1090
-msgid "Tuesday"
-msgstr "tirsdag"
-
-#: ../../include/text.php:1090
-msgid "Wednesday"
-msgstr "onsdag"
-
-#: ../../include/text.php:1090
-msgid "Thursday"
-msgstr "torsdag"
-
-#: ../../include/text.php:1090
-msgid "Friday"
-msgstr "fredag"
-
-#: ../../include/text.php:1090
-msgid "Saturday"
-msgstr "lørdag"
-
-#: ../../include/text.php:1090
-msgid "Sunday"
-msgstr "søndag"
-
-#: ../../include/text.php:1094
-msgid "January"
-msgstr "januar"
-
-#: ../../include/text.php:1094
-msgid "February"
-msgstr "februar"
-
-#: ../../include/text.php:1094
-msgid "March"
-msgstr "mars"
-
-#: ../../include/text.php:1094
-msgid "April"
-msgstr "april"
-
-#: ../../include/text.php:1094
-msgid "May"
-msgstr "mai"
-
-#: ../../include/text.php:1094
-msgid "June"
-msgstr "juni"
-
-#: ../../include/text.php:1094
-msgid "July"
-msgstr "juli"
-
-#: ../../include/text.php:1094
-msgid "August"
-msgstr "august"
-
-#: ../../include/text.php:1094
-msgid "September"
-msgstr "september"
-
-#: ../../include/text.php:1094
-msgid "October"
-msgstr "oktober"
-
-#: ../../include/text.php:1094
-msgid "November"
-msgstr "november"
-
-#: ../../include/text.php:1094
-msgid "December"
-msgstr "desember"
-
-#: ../../include/text.php:1172
-msgid "unknown.???"
-msgstr "ukjent.???"
-
-#: ../../include/text.php:1173
-msgid "bytes"
-msgstr "bytes"
-
-#: ../../include/text.php:1208
-msgid "remove category"
-msgstr "fjern kategori"
-
-#: ../../include/text.php:1257
-msgid "remove from file"
-msgstr "fjern fra fil"
-
-#: ../../include/text.php:1318 ../../include/text.php:1330
-msgid "Click to open/close"
-msgstr "Klikk for å åpne/lukke"
-
-#: ../../include/text.php:1485 ../../mod/events.php:355
-msgid "Link to Source"
-msgstr "Lenke til kilde"
-
-#: ../../include/text.php:1504
-msgid "Select a page layout: "
-msgstr "Velg en side-layout:"
-
-#: ../../include/text.php:1507 ../../include/text.php:1572
-msgid "default"
-msgstr "standard"
-
-#: ../../include/text.php:1543
-msgid "Page content type: "
-msgstr "Sidens innholdstype:"
-
-#: ../../include/text.php:1584
-msgid "Select an alternate language"
-msgstr "Velg et annet språk"
-
-#: ../../include/text.php:1718
-msgid "activity"
-msgstr "aktivitet"
-
-#: ../../include/text.php:1977
-msgid "Design"
-msgstr "Formgivning"
-
-#: ../../include/text.php:1979
-msgid "Blocks"
-msgstr "Byggeklosser"
-
-#: ../../include/text.php:1980
-msgid "Menus"
-msgstr "Menyer"
-
-#: ../../include/text.php:1981
-msgid "Layouts"
-msgstr "Layout"
-
-#: ../../include/text.php:1982
-msgid "Pages"
-msgstr "Sider"
-
-#: ../../include/apps.php:118
-msgid "Site Admin"
-msgstr "Nettstedsadministrator"
-
-#: ../../include/apps.php:120
-msgid "Address Book"
-msgstr "Adressebok"
-
-#: ../../include/apps.php:134 ../../mod/mood.php:131
-msgid "Mood"
-msgstr "Stemning"
-
-#: ../../include/apps.php:138
-msgid "Probe"
-msgstr "Undersøk"
-
-#: ../../include/apps.php:139
-msgid "Suggest"
-msgstr "Forreslå"
-
-#: ../../include/apps.php:224 ../../mod/settings.php:79
-#: ../../mod/settings.php:541
-msgid "Update"
-msgstr "Oppdater"
-
-#: ../../include/apps.php:224
-msgid "Install"
-msgstr "Installer"
-
-#: ../../include/apps.php:229
-msgid "Purchase"
-msgstr "Kjøp"
+#: ../../include/items.php:3946 ../../mod/thing.php:76
+#: ../../mod/display.php:32 ../../mod/filestorage.php:26
+#: ../../mod/admin.php:168 ../../mod/admin.php:896 ../../mod/admin.php:1099
+#: ../../mod/viewsrc.php:20
+msgid "Item not found."
+msgstr "Elementet ble ikke funnet."
-#: ../../include/apps.php:313 ../../include/apps.php:364
-#: ../../mod/connedit.php:434
-msgid "Unknown"
-msgstr "Ukjent"
+#: ../../include/items.php:4402 ../../mod/group.php:38 ../../mod/group.php:140
+msgid "Collection not found."
+msgstr "Samlingen ble ikke funnet."
-#: ../../include/zot.php:607
-msgid "Invalid data packet"
-msgstr "Ugyldig datapakke"
+#: ../../include/items.php:4417
+msgid "Collection is empty."
+msgstr "Samlingen er tom."
-#: ../../include/zot.php:617
-msgid "Unable to verify channel signature"
-msgstr "Ikke i stand til å sjekke kanalsignaturen"
+#: ../../include/items.php:4424
+#, php-format
+msgid "Collection: %s"
+msgstr "Samling: %s"
-#: ../../include/zot.php:814
+#: ../../include/items.php:4435
#, php-format
-msgid "Unable to verify site signature for %s"
-msgstr "Ikke i stand til å bekrefte signaturen til %s"
+msgid "Connection: %s"
+msgstr "Forbindelse: %s"
+
+#: ../../include/items.php:4438
+msgid "Connection not found."
+msgstr "Forbindelsen ble ikke funnet."
#: ../../include/message.php:18
msgid "No recipient provided."
@@ -2563,336 +2541,215 @@ msgstr "Ingen mottaker angitt."
msgid "[no subject]"
msgstr "[ikke noe emne]"
-#: ../../include/message.php:42
+#: ../../include/message.php:45
msgid "Unable to determine sender."
msgstr "Kan ikke avgjøre avsender."
-#: ../../include/message.php:143
+#: ../../include/message.php:200
msgid "Stored post could not be verified."
msgstr "Lagret innlegg kunne ikke bekreftes."
-#: ../../include/plugin.php:486 ../../include/plugin.php:488
-msgid "Click here to upgrade."
-msgstr "Klikk her for å oppgradere."
-
-#: ../../include/plugin.php:494
-msgid "This action exceeds the limits set by your subscription plan."
-msgstr "Denne handlingen går utenfor grensene satt i din abonnementsplan."
-
-#: ../../include/plugin.php:499
-msgid "This action is not available under your subscription plan."
-msgstr "Denne handlingen er ikke tilgjengelig i din abonnementsplan."
-
-#: ../../include/widgets.php:80
-msgid "System"
-msgstr "System"
-
-#: ../../include/widgets.php:83
-msgid "Create Personal App"
-msgstr "Lag personlig app"
+#: ../../include/network.php:590
+msgid "view full size"
+msgstr "vis full størrelse"
-#: ../../include/widgets.php:84
-msgid "Edit Personal App"
-msgstr "Endre personlig app"
+#: ../../include/attach.php:221 ../../include/attach.php:275
+msgid "Item was not found."
+msgstr "Elementet ble ikke funnet."
-#: ../../include/widgets.php:130 ../../mod/suggest.php:53
-msgid "Ignore/Hide"
-msgstr "Ignorer/Skjul"
+#: ../../include/attach.php:331
+msgid "No source file."
+msgstr "Ingen kildefil."
-#: ../../include/widgets.php:136 ../../mod/connections.php:267
-msgid "Suggestions"
-msgstr "Forslag"
+#: ../../include/attach.php:348
+msgid "Cannot locate file to replace"
+msgstr "Kan ikke finne filen som skal byttes ut"
-#: ../../include/widgets.php:137
-msgid "See more..."
-msgstr "Se mer..."
+#: ../../include/attach.php:366
+msgid "Cannot locate file to revise/update"
+msgstr "Finner ikke filen som skal revideres/oppdateres"
-#: ../../include/widgets.php:159
+#: ../../include/attach.php:377
#, php-format
-msgid "You have %1$.0f of %2$.0f allowed connections."
-msgstr "Du har %1$.0f av %2$.0f tillate forbindelser."
-
-#: ../../include/widgets.php:165
-msgid "Add New Connection"
-msgstr "Legg til ny forbindelse"
-
-#: ../../include/widgets.php:166
-msgid "Enter the channel address"
-msgstr "Skriv kanal-adressen"
-
-#: ../../include/widgets.php:167
-msgid "Example: bob@example.com, http://example.com/barbara"
-msgstr "Eksempel: ola.nordmann@eksempel.no, http://eksempel.no/karinordmann"
-
-#: ../../include/widgets.php:184
-msgid "Notes"
-msgstr "Merknader"
-
-#: ../../include/widgets.php:256
-msgid "Remove term"
-msgstr "Fjern begrep"
-
-#: ../../include/widgets.php:335
-msgid "Archives"
-msgstr "Arkiv"
-
-#: ../../include/widgets.php:397
-msgid "Refresh"
-msgstr "Forny"
-
-#: ../../include/widgets.php:398 ../../mod/connedit.php:428
-msgid "Me"
-msgstr "Meg"
-
-#: ../../include/widgets.php:399 ../../mod/connedit.php:430
-msgid "Best Friends"
-msgstr "Bestevenner"
+msgid "File exceeds size limit of %d"
+msgstr "Filens størrelse overgår grensen på %d"
-#: ../../include/widgets.php:401
-msgid "Co-workers"
-msgstr "Medarbeidere"
+#: ../../include/attach.php:389
+#, php-format
+msgid "You have reached your limit of %1$.0f Mbytes attachment storage."
+msgstr "Du har nådd din lagringsgrense for vedlegg på %1$.0f Mbytes."
-#: ../../include/widgets.php:402 ../../mod/connedit.php:432
-msgid "Former Friends"
-msgstr "Tidligere venner"
+#: ../../include/attach.php:472
+msgid "File upload failed. Possible system limit or action terminated."
+msgstr "Mislyktes med å laste opp filen. Mulig systemgrense eller handling avbrutt."
-#: ../../include/widgets.php:403 ../../mod/connedit.php:433
-msgid "Acquaintances"
-msgstr "Bekjente"
+#: ../../include/attach.php:484
+msgid "Stored file could not be verified. Upload failed."
+msgstr "Lagret fil kunne ikke bekreftes. Opplasting mislyktes."
-#: ../../include/widgets.php:404
-msgid "Everybody"
-msgstr "Alle"
+#: ../../include/attach.php:526 ../../include/attach.php:543
+msgid "Path not available."
+msgstr "Stien er ikke tilgjengelig."
-#: ../../include/widgets.php:436
-msgid "Account settings"
-msgstr "Kontoinnstillinger"
+#: ../../include/attach.php:589
+msgid "Empty pathname"
+msgstr "Tomt sti-navn"
-#: ../../include/widgets.php:442
-msgid "Channel settings"
-msgstr "Kanalinnstillinger"
+#: ../../include/attach.php:605
+msgid "duplicate filename or path"
+msgstr "duplikat av filnavn eller sti"
-#: ../../include/widgets.php:448
-msgid "Additional features"
-msgstr "Tilleggsfunksjoner"
+#: ../../include/attach.php:629
+msgid "Path not found."
+msgstr "Stien ble ikke funnet."
-#: ../../include/widgets.php:454
-msgid "Feature settings"
-msgstr "Funksjonsinnstillinger"
+#: ../../include/attach.php:680
+msgid "mkdir failed."
+msgstr "mkdir mislyktes."
-#: ../../include/widgets.php:460
-msgid "Display settings"
-msgstr "Visningsinnstillinger"
+#: ../../include/attach.php:684
+msgid "database storage failed."
+msgstr "databaselagring mislyktes."
-#: ../../include/widgets.php:466
-msgid "Connected apps"
-msgstr "Tilkoblede app-er"
+#: ../../include/auth.php:116
+msgid "Logged out."
+msgstr "Logget ut."
-#: ../../include/widgets.php:472
-msgid "Export channel"
-msgstr "Eksporter kanal"
+#: ../../include/auth.php:257
+msgid "Failed authentication"
+msgstr "Mislykket autentisering"
-#: ../../include/widgets.php:484
-msgid "Automatic Permissions (Advanced)"
-msgstr "Automatiske tillatelser (avansert)"
+#: ../../include/auth.php:271 ../../mod/openid.php:190
+msgid "Login failed."
+msgstr "Innlogging mislyktes."
-#: ../../include/widgets.php:494
-msgid "Premium Channel Settings"
-msgstr "Premiumkanal-innstillinger"
+#: ../../include/datetime.php:43 ../../include/datetime.php:45
+msgid "Miscellaneous"
+msgstr "Forskjellig"
-#: ../../include/widgets.php:531
-msgid "Check Mail"
-msgstr "Sjekk meldinger"
+#: ../../include/datetime.php:142
+msgid "YYYY-MM-DD or MM-DD"
+msgstr "YYYY-MM-DD eller MM-DD"
-#: ../../include/widgets.php:612
-msgid "Chat Rooms"
-msgstr "Chatrom"
+#: ../../include/datetime.php:248
+msgid "never"
+msgstr "aldri"
-#: ../../include/widgets.php:630
-msgid "Bookmarked Chatrooms"
-msgstr "Bokmerkede chatrom"
+#: ../../include/datetime.php:254
+msgid "less than a second ago"
+msgstr "for mindre enn ett sekund siden"
-#: ../../include/widgets.php:648
-msgid "Suggested Chatrooms"
-msgstr "Foreslåtte chatrom"
+#: ../../include/datetime.php:257
+msgid "year"
+msgstr "Ã¥r"
-#: ../../include/ItemObject.php:118
-msgid "Save to Folder"
-msgstr "Lagre i mappe"
+#: ../../include/datetime.php:257
+msgid "years"
+msgstr "Ã¥r"
-#: ../../include/ItemObject.php:130 ../../include/ItemObject.php:142
-msgid "View all"
-msgstr "Vis alle"
+#: ../../include/datetime.php:258
+msgid "month"
+msgstr "måned"
-#: ../../include/ItemObject.php:134
-msgctxt "noun"
-msgid "Like"
-msgid_plural "Likes"
-msgstr[0] "Liker"
-msgstr[1] "Liker"
+#: ../../include/datetime.php:258
+msgid "months"
+msgstr "måneder"
-#: ../../include/ItemObject.php:139
-msgctxt "noun"
-msgid "Dislike"
-msgid_plural "Dislikes"
-msgstr[0] "Liker ikke"
-msgstr[1] "Liker ikke"
+#: ../../include/datetime.php:259
+msgid "week"
+msgstr "uke"
-#: ../../include/ItemObject.php:167
-msgid "Add Star"
-msgstr "Legg til stjerne"
+#: ../../include/datetime.php:259
+msgid "weeks"
+msgstr "uker"
-#: ../../include/ItemObject.php:168
-msgid "Remove Star"
-msgstr "Fjern stjerne"
+#: ../../include/datetime.php:260
+msgid "day"
+msgstr "dag"
-#: ../../include/ItemObject.php:169
-msgid "Toggle Star Status"
-msgstr "Skru av og på stjernestatus"
+#: ../../include/datetime.php:260
+msgid "days"
+msgstr "dager"
-#: ../../include/ItemObject.php:173
-msgid "starred"
-msgstr "stjernemerket"
+#: ../../include/datetime.php:261
+msgid "hour"
+msgstr "time"
-#: ../../include/ItemObject.php:190
-msgid "Add Tag"
-msgstr "Legg til merkelapp"
+#: ../../include/datetime.php:261
+msgid "hours"
+msgstr "timer"
-#: ../../include/ItemObject.php:208 ../../mod/photos.php:969
-msgid "I like this (toggle)"
-msgstr "Jeg liker dette (skru av og på)"
+#: ../../include/datetime.php:262
+msgid "minute"
+msgstr "minutt"
-#: ../../include/ItemObject.php:209 ../../mod/photos.php:970
-msgid "I don't like this (toggle)"
-msgstr "Jeg liker ikke dette (skru av og på)"
+#: ../../include/datetime.php:262
+msgid "minutes"
+msgstr "minutter"
-#: ../../include/ItemObject.php:211
-msgid "Share This"
-msgstr "Del dette"
+#: ../../include/datetime.php:263
+msgid "second"
+msgstr "sekund"
-#: ../../include/ItemObject.php:211
-msgid "share"
-msgstr "del"
+#: ../../include/datetime.php:263
+msgid "seconds"
+msgstr "sekunder"
-#: ../../include/ItemObject.php:235 ../../include/ItemObject.php:236
+#: ../../include/datetime.php:272
#, php-format
-msgid "View %s's profile - %s"
-msgstr "Vis %s sin profil - %s"
-
-#: ../../include/ItemObject.php:237
-msgid "to"
-msgstr "til"
-
-#: ../../include/ItemObject.php:238
-msgid "via"
-msgstr "via"
-
-#: ../../include/ItemObject.php:239
-msgid "Wall-to-Wall"
-msgstr "vegg-til-vegg"
-
-#: ../../include/ItemObject.php:240
-msgid "via Wall-To-Wall:"
-msgstr "via vegg-til-vegg:"
-
-#: ../../include/ItemObject.php:274
-msgid "Save Bookmarks"
-msgstr "Lagre bokmerker"
-
-#: ../../include/ItemObject.php:275
-msgid "Add to Calendar"
-msgstr "Legg til i kalender"
-
-#: ../../include/ItemObject.php:283
-msgctxt "noun"
-msgid "Likes"
-msgstr "Liker"
-
-#: ../../include/ItemObject.php:284
-msgctxt "noun"
-msgid "Dislikes"
-msgstr "Liker ikke"
+msgid "%1$d %2$s ago"
+msgstr "%1$d %2$s siden"
-#: ../../include/ItemObject.php:315
+#: ../../include/datetime.php:480
#, php-format
-msgid "%d comment"
-msgid_plural "%d comments"
-msgstr[0] "%d kommentar"
-msgstr[1] "%d kommentarer"
-
-#: ../../include/ItemObject.php:316 ../../include/js_strings.php:7
-msgid "[+] show all"
-msgstr "[+] Vis alle"
-
-#: ../../include/ItemObject.php:580 ../../mod/photos.php:988
-#: ../../mod/photos.php:1075
-msgid "This is you"
-msgstr "Dette er deg"
-
-#: ../../include/ItemObject.php:582 ../../include/js_strings.php:6
-#: ../../mod/photos.php:990 ../../mod/photos.php:1077
-msgid "Comment"
-msgstr "Kommentar"
-
-#: ../../include/ItemObject.php:583 ../../mod/mood.php:135
-#: ../../mod/settings.php:515 ../../mod/settings.php:627
-#: ../../mod/settings.php:655 ../../mod/settings.php:679
-#: ../../mod/settings.php:749 ../../mod/settings.php:927
-#: ../../mod/poke.php:166 ../../mod/profiles.php:515 ../../mod/chat.php:177
-#: ../../mod/chat.php:211 ../../mod/connect.php:92 ../../mod/connedit.php:476
-#: ../../mod/setup.php:307 ../../mod/setup.php:350 ../../mod/pdledit.php:58
-#: ../../mod/sources.php:104 ../../mod/sources.php:138
-#: ../../mod/events.php:492 ../../mod/filestorage.php:135
-#: ../../mod/fsuggest.php:108 ../../mod/group.php:81 ../../mod/admin.php:442
-#: ../../mod/admin.php:751 ../../mod/admin.php:885 ../../mod/admin.php:1018
-#: ../../mod/admin.php:1217 ../../mod/admin.php:1304 ../../mod/thing.php:283
-#: ../../mod/thing.php:326 ../../mod/import.php:393 ../../mod/invite.php:156
-#: ../../mod/mail.php:223 ../../mod/mail.php:335 ../../mod/photos.php:563
-#: ../../mod/photos.php:668 ../../mod/photos.php:951 ../../mod/photos.php:991
-#: ../../mod/photos.php:1078 ../../mod/appman.php:99
-#: ../../view/theme/apw/php/config.php:256
-#: ../../view/theme/blogga/php/config.php:67
-#: ../../view/theme/blogga/view/theme/blog/config.php:67
-#: ../../view/theme/redbasic/php/config.php:99
-msgid "Submit"
-msgstr "Send"
-
-#: ../../include/ItemObject.php:584
-msgid "Bold"
-msgstr "Uthevet"
+msgid "%1$s's birthday"
+msgstr "%1$s sin fødselsdag"
-#: ../../include/ItemObject.php:585
-msgid "Italic"
-msgstr "Kursiv"
+#: ../../include/datetime.php:481
+#, php-format
+msgid "Happy Birthday %1$s"
+msgstr "Gratulerer med dagen, %1$s !"
-#: ../../include/ItemObject.php:586
-msgid "Underline"
-msgstr "Understreket"
+#: ../../include/photos.php:105
+#, php-format
+msgid "Image exceeds website size limit of %lu bytes"
+msgstr "Bilde overstiger nettstedets størrelsesbegrensning på %lu bytes"
-#: ../../include/ItemObject.php:587
-msgid "Quote"
-msgstr "Sitat"
+#: ../../include/photos.php:112
+msgid "Image file is empty."
+msgstr "Bildefilen er tom."
-#: ../../include/ItemObject.php:588
-msgid "Code"
-msgstr "Kode"
+#: ../../include/photos.php:141 ../../mod/profile_photo.php:216
+msgid "Unable to process image"
+msgstr "Kan ikke behandle bildet"
-#: ../../include/ItemObject.php:589
-msgid "Image"
-msgstr "Bilde"
+#: ../../include/photos.php:213
+msgid "Photo storage failed."
+msgstr "Bildelagring mislyktes."
-#: ../../include/ItemObject.php:590
-msgid "Link"
-msgstr "Lenke"
+#: ../../include/photos.php:345
+msgid "Upload New Photos"
+msgstr "Last opp nye bilder"
-#: ../../include/ItemObject.php:591
-msgid "Video"
-msgstr "Video"
+#: ../../include/security.php:323
+msgid ""
+"The form security token was not correct. This probably happened because the "
+"form has been opened for too long (>3 hours) before submitting it."
+msgstr "Skjemaets sikkerhetspollett var ikke gyldig. Dette skjedde antakelig fordi skjemaet har vært åpnet for lenge (>3 timer) før det ble sendt inn."
#: ../../include/js_strings.php:5
msgid "Delete this item?"
msgstr "Slett dette elementet?"
+#: ../../include/js_strings.php:6 ../../include/ItemObject.php:598
+#: ../../mod/photos.php:995 ../../mod/photos.php:1105
+msgid "Comment"
+msgstr "Kommentar"
+
+#: ../../include/js_strings.php:7 ../../include/ItemObject.php:332
+msgid "[+] show all"
+msgstr "[+] Vis alle"
+
#: ../../include/js_strings.php:8
msgid "[-] show less"
msgstr "[-] Vis mindre"
@@ -2933,92 +2790,90 @@ msgstr "Varsel: Tillatelser har blitt endret, men de har ennå ikke blitt sendt
msgid "close all"
msgstr "Lukk alle"
-#: ../../include/js_strings.php:19
+#: ../../include/js_strings.php:18
+msgid "Nothing new here"
+msgstr "Ikke noe nytt her"
+
+#: ../../include/js_strings.php:20
msgid "timeago.prefixAgo"
msgstr "timeago.prefixAgo"
-#: ../../include/js_strings.php:20
+#: ../../include/js_strings.php:21
msgid "timeago.prefixFromNow"
msgstr "timeago.prefixFromNow"
-#: ../../include/js_strings.php:21
+#: ../../include/js_strings.php:22
msgid "ago"
msgstr "siden"
-#: ../../include/js_strings.php:22
+#: ../../include/js_strings.php:23
msgid "from now"
msgstr "fra nå"
-#: ../../include/js_strings.php:23
+#: ../../include/js_strings.php:24
msgid "less than a minute"
msgstr "mindre enn ett minutt"
-#: ../../include/js_strings.php:24
+#: ../../include/js_strings.php:25
msgid "about a minute"
msgstr "omtrent et minutt"
-#: ../../include/js_strings.php:25
+#: ../../include/js_strings.php:26
#, php-format
msgid "%d minutes"
msgstr "%d minutter"
-#: ../../include/js_strings.php:26
+#: ../../include/js_strings.php:27
msgid "about an hour"
msgstr "omtrent en time"
-#: ../../include/js_strings.php:27
+#: ../../include/js_strings.php:28
#, php-format
msgid "about %d hours"
msgstr "omtrent %d timer"
-#: ../../include/js_strings.php:28
+#: ../../include/js_strings.php:29
msgid "a day"
msgstr "en dag"
-#: ../../include/js_strings.php:29
+#: ../../include/js_strings.php:30
#, php-format
msgid "%d days"
msgstr "%d dager"
-#: ../../include/js_strings.php:30
+#: ../../include/js_strings.php:31
msgid "about a month"
msgstr "omtrent en måned"
-#: ../../include/js_strings.php:31
+#: ../../include/js_strings.php:32
#, php-format
msgid "%d months"
msgstr "%d måneder"
-#: ../../include/js_strings.php:32
+#: ../../include/js_strings.php:33
msgid "about a year"
msgstr "omtrent et år"
-#: ../../include/js_strings.php:33
+#: ../../include/js_strings.php:34
#, php-format
msgid "%d years"
msgstr "%d år"
-#: ../../include/js_strings.php:34
+#: ../../include/js_strings.php:35
msgid " "
msgstr " "
-#: ../../include/js_strings.php:35
+#: ../../include/js_strings.php:36
msgid "timeago.numbers"
msgstr "timeago.numbers"
-#: ../../include/Contact.php:123
-msgid "New window"
-msgstr "Nytt vindu"
-
-#: ../../include/Contact.php:124
-msgid "Open the selected location in a different window or browser tab"
-msgstr "Ã…pne det valgte stedet i et annet vindu eller nettleser-fane"
-
#: ../../include/profile_selectors.php:6
+#: ../../include/profile_selectors.php:23
msgid "Male"
msgstr "Mannlig"
#: ../../include/profile_selectors.php:6
+#: ../../include/profile_selectors.php:23
msgid "Female"
msgstr "Kvinnelig"
@@ -3063,910 +2918,1646 @@ msgid "Non-specific"
msgstr "Ubestemt"
#: ../../include/profile_selectors.php:6
-msgid "Other"
-msgstr "Annen"
-
-#: ../../include/profile_selectors.php:6
msgid "Undecided"
msgstr "Ubestemt"
-#: ../../include/profile_selectors.php:23
+#: ../../include/profile_selectors.php:42
+#: ../../include/profile_selectors.php:61
msgid "Males"
msgstr "Menn"
-#: ../../include/profile_selectors.php:23
+#: ../../include/profile_selectors.php:42
+#: ../../include/profile_selectors.php:61
msgid "Females"
msgstr "Kvinner"
-#: ../../include/profile_selectors.php:23
+#: ../../include/profile_selectors.php:42
msgid "Gay"
msgstr "Homo"
-#: ../../include/profile_selectors.php:23
+#: ../../include/profile_selectors.php:42
msgid "Lesbian"
msgstr "Lesbisk"
-#: ../../include/profile_selectors.php:23
+#: ../../include/profile_selectors.php:42
msgid "No Preference"
msgstr "Ingen preferanse"
-#: ../../include/profile_selectors.php:23
+#: ../../include/profile_selectors.php:42
msgid "Bisexual"
msgstr "Biseksuell"
-#: ../../include/profile_selectors.php:23
+#: ../../include/profile_selectors.php:42
msgid "Autosexual"
msgstr "Autoseksuell"
-#: ../../include/profile_selectors.php:23
+#: ../../include/profile_selectors.php:42
msgid "Abstinent"
msgstr "Avholdende"
-#: ../../include/profile_selectors.php:23
+#: ../../include/profile_selectors.php:42
msgid "Virgin"
msgstr "Jomfru"
-#: ../../include/profile_selectors.php:23
+#: ../../include/profile_selectors.php:42
msgid "Deviant"
msgstr "Avviker"
-#: ../../include/profile_selectors.php:23
+#: ../../include/profile_selectors.php:42
msgid "Fetish"
msgstr "Fetisj"
-#: ../../include/profile_selectors.php:23
+#: ../../include/profile_selectors.php:42
msgid "Oodles"
msgstr "Masse"
-#: ../../include/profile_selectors.php:23
+#: ../../include/profile_selectors.php:42
msgid "Nonsexual"
msgstr "Ikke-seksuell"
-#: ../../include/profile_selectors.php:42
+#: ../../include/profile_selectors.php:80
+#: ../../include/profile_selectors.php:97
msgid "Single"
msgstr "Enslig"
-#: ../../include/profile_selectors.php:42
+#: ../../include/profile_selectors.php:80
msgid "Lonely"
msgstr "Ensom"
-#: ../../include/profile_selectors.php:42
+#: ../../include/profile_selectors.php:80
msgid "Available"
msgstr "Tilgjengelig"
-#: ../../include/profile_selectors.php:42
+#: ../../include/profile_selectors.php:80
msgid "Unavailable"
msgstr "Ikke tilgjengelig"
-#: ../../include/profile_selectors.php:42
+#: ../../include/profile_selectors.php:80
msgid "Has crush"
msgstr "Er forelsket"
-#: ../../include/profile_selectors.php:42
+#: ../../include/profile_selectors.php:80
msgid "Infatuated"
msgstr "Betatt"
-#: ../../include/profile_selectors.php:42
+#: ../../include/profile_selectors.php:80
+#: ../../include/profile_selectors.php:97
msgid "Dating"
msgstr "Sammen med"
-#: ../../include/profile_selectors.php:42
+#: ../../include/profile_selectors.php:80
msgid "Unfaithful"
msgstr "Utro"
-#: ../../include/profile_selectors.php:42
+#: ../../include/profile_selectors.php:80
msgid "Sex Addict"
msgstr "Sexavhengig"
-#: ../../include/profile_selectors.php:42
+#: ../../include/profile_selectors.php:80
msgid "Friends/Benefits"
msgstr "Venner med frynsegoder"
-#: ../../include/profile_selectors.php:42
+#: ../../include/profile_selectors.php:80
msgid "Casual"
msgstr "Tilfeldig"
-#: ../../include/profile_selectors.php:42
+#: ../../include/profile_selectors.php:80
msgid "Engaged"
msgstr "Forlovet"
-#: ../../include/profile_selectors.php:42
+#: ../../include/profile_selectors.php:80
+#: ../../include/profile_selectors.php:97
msgid "Married"
msgstr "Gift"
-#: ../../include/profile_selectors.php:42
+#: ../../include/profile_selectors.php:80
msgid "Imaginarily married"
msgstr "Gift i fantasien"
-#: ../../include/profile_selectors.php:42
+#: ../../include/profile_selectors.php:80
msgid "Partners"
msgstr "Partnere"
-#: ../../include/profile_selectors.php:42
+#: ../../include/profile_selectors.php:80
+#: ../../include/profile_selectors.php:97
msgid "Cohabiting"
msgstr "Samboer"
-#: ../../include/profile_selectors.php:42
+#: ../../include/profile_selectors.php:80
msgid "Common law"
msgstr "Samboer"
-#: ../../include/profile_selectors.php:42
+#: ../../include/profile_selectors.php:80
msgid "Happy"
msgstr "Lykkelig"
-#: ../../include/profile_selectors.php:42
+#: ../../include/profile_selectors.php:80
msgid "Not looking"
msgstr "Ikke på utkikk"
-#: ../../include/profile_selectors.php:42
+#: ../../include/profile_selectors.php:80
msgid "Swinger"
msgstr "Partnerbytte"
-#: ../../include/profile_selectors.php:42
+#: ../../include/profile_selectors.php:80
msgid "Betrayed"
msgstr "Bedratt"
-#: ../../include/profile_selectors.php:42
+#: ../../include/profile_selectors.php:80
+#: ../../include/profile_selectors.php:97
msgid "Separated"
msgstr "Separert"
-#: ../../include/profile_selectors.php:42
+#: ../../include/profile_selectors.php:80
msgid "Unstable"
msgstr "Ustabilt"
-#: ../../include/profile_selectors.php:42
+#: ../../include/profile_selectors.php:80
+#: ../../include/profile_selectors.php:97
msgid "Divorced"
msgstr "Skilt"
-#: ../../include/profile_selectors.php:42
+#: ../../include/profile_selectors.php:80
msgid "Imaginarily divorced"
msgstr "Skilt i fantasien"
-#: ../../include/profile_selectors.php:42
+#: ../../include/profile_selectors.php:80
+#: ../../include/profile_selectors.php:97
msgid "Widowed"
msgstr "Enke"
-#: ../../include/profile_selectors.php:42
+#: ../../include/profile_selectors.php:80
msgid "Uncertain"
msgstr "Usikkert"
-#: ../../include/profile_selectors.php:42
+#: ../../include/profile_selectors.php:80
+#: ../../include/profile_selectors.php:97
msgid "It's complicated"
msgstr "Det er komplisert"
-#: ../../include/profile_selectors.php:42
+#: ../../include/profile_selectors.php:80
msgid "Don't care"
msgstr "Bryr meg ikke"
-#: ../../include/profile_selectors.php:42
+#: ../../include/profile_selectors.php:80
msgid "Ask me"
msgstr "Spør meg"
-#: ../../include/auth.php:79
-msgid "Logged out."
-msgstr "Logget ut."
-
-#: ../../include/auth.php:198
-msgid "Failed authentication"
-msgstr "Mislykket autentisering"
+#: ../../include/text.php:321
+msgid "prev"
+msgstr "forrige"
-#: ../../include/auth.php:213 ../../mod/openid.php:188
-msgid "Login failed."
-msgstr "Innlogging mislyktes."
+#: ../../include/text.php:323
+msgid "first"
+msgstr "første"
-#: ../../include/items.php:306 ../../mod/profperm.php:23
-#: ../../mod/subthread.php:49 ../../mod/group.php:68 ../../mod/like.php:63
-#: ../../index.php:360
-msgid "Permission denied"
-msgstr "Tillatelse avvist"
+#: ../../include/text.php:352
+msgid "last"
+msgstr "siste"
-#: ../../include/items.php:830
-msgid "(Unknown)"
-msgstr "(Ukjent)"
+#: ../../include/text.php:355
+msgid "next"
+msgstr "neste"
-#: ../../include/items.php:3617 ../../mod/display.php:32
-#: ../../mod/filestorage.php:18 ../../mod/home.php:65 ../../mod/admin.php:159
-#: ../../mod/admin.php:922 ../../mod/admin.php:1125 ../../mod/thing.php:78
-#: ../../mod/viewsrc.php:18
-msgid "Item not found."
-msgstr "Elementet ble ikke funnet."
+#: ../../include/text.php:367
+msgid "older"
+msgstr "eldre"
-#: ../../include/items.php:4041 ../../mod/group.php:38 ../../mod/group.php:140
-msgid "Collection not found."
-msgstr "Samlingen ble ikke funnet."
+#: ../../include/text.php:369
+msgid "newer"
+msgstr "nyere"
-#: ../../include/items.php:4056
-msgid "Collection is empty."
-msgstr "Samlingen er tom."
+#: ../../include/text.php:736
+msgid "No connections"
+msgstr "Ingen forbindelser"
-#: ../../include/items.php:4063
+#: ../../include/text.php:753
#, php-format
-msgid "Collection: %s"
-msgstr "Samling: %s"
+msgid "%d Connection"
+msgid_plural "%d Connections"
+msgstr[0] "%d forbindelse"
+msgstr[1] "%d forbindelser"
-#: ../../include/items.php:4074
-#, php-format
-msgid "Connection: %s"
-msgstr "Forbindelse: %s"
+#: ../../include/text.php:766
+msgid "View Connections"
+msgstr "Vis forbindelser"
-#: ../../include/items.php:4077
-msgid "Connection not found."
-msgstr "Forbindelsen ble ikke funnet."
+#: ../../include/text.php:905
+msgid "poke"
+msgstr "prikk"
-#: ../../include/permissions.php:13
-msgid "Can view my \"public\" stream and posts"
-msgstr "Kan se min \"offentlige\" strøm og innlegg"
+#: ../../include/text.php:906
+msgid "ping"
+msgstr "varsle"
-#: ../../include/permissions.php:14
-msgid "Can view my \"public\" channel profile"
-msgstr "Kan se min \"offentlige\" kanalprofil"
+#: ../../include/text.php:906
+msgid "pinged"
+msgstr "varslet"
-#: ../../include/permissions.php:15
-msgid "Can view my \"public\" photo albums"
-msgstr "Kan se mine \"offentlige\" fotoalbum"
+#: ../../include/text.php:907
+msgid "prod"
+msgstr "oppildne"
-#: ../../include/permissions.php:16
-msgid "Can view my \"public\" address book"
-msgstr "Kan se min \"offentlige\" adressebok"
+#: ../../include/text.php:907
+msgid "prodded"
+msgstr "oppildnet"
-#: ../../include/permissions.php:17
-msgid "Can view my \"public\" file storage"
-msgstr "Kan se mitt \"offentlige\" fillager"
+#: ../../include/text.php:908
+msgid "slap"
+msgstr "daske"
-#: ../../include/permissions.php:18
-msgid "Can view my \"public\" pages"
-msgstr "Kan se mine \"offentlige\" sider"
+#: ../../include/text.php:908
+msgid "slapped"
+msgstr "dasket"
-#: ../../include/permissions.php:21
-msgid "Can send me their channel stream and posts"
-msgstr "Kan sende meg deres kanalstrøm og innlegg"
+#: ../../include/text.php:909
+msgid "finger"
+msgstr "fingre"
-#: ../../include/permissions.php:22
-msgid "Can post on my channel page (\"wall\")"
-msgstr "Kan lage innlegg på min kanalside (\"vegg\")"
+#: ../../include/text.php:909
+msgid "fingered"
+msgstr "fingret"
-#: ../../include/permissions.php:23
-msgid "Can comment on my posts"
-msgstr "Kan kommentere på mine innlegg"
+#: ../../include/text.php:910
+msgid "rebuff"
+msgstr "tilbakevise"
-#: ../../include/permissions.php:24
-msgid "Can send me private mail messages"
-msgstr "Kan sende meg private meldinger"
+#: ../../include/text.php:910
+msgid "rebuffed"
+msgstr "tilbakeviste"
-#: ../../include/permissions.php:25
-msgid "Can post photos to my photo albums"
-msgstr "Kan legge inn bilder i mine fotoalbum"
+#: ../../include/text.php:919
+msgid "happy"
+msgstr "glad"
-#: ../../include/permissions.php:26
-msgid "Can forward to all my channel contacts via post @mentions"
-msgstr "Kan videresende til alle mine kanalkontakter via @navn i innlegg"
+#: ../../include/text.php:920
+msgid "sad"
+msgstr "trist"
-#: ../../include/permissions.php:26
-msgid "Advanced - useful for creating group forum channels"
-msgstr "Avansert - nyttig for å lage forumkanaler for grupper"
+#: ../../include/text.php:921
+msgid "mellow"
+msgstr "dempet"
-#: ../../include/permissions.php:27
-msgid "Can chat with me (when available)"
-msgstr "Kan chatte/sende lynmeldinger til meg (når tilgjengelig)"
+#: ../../include/text.php:922
+msgid "tired"
+msgstr "trøtt"
-#: ../../include/permissions.php:28
-msgid "Can write to my \"public\" file storage"
-msgstr "Kan skrive til mitt \"offentlige\" fillager"
+#: ../../include/text.php:923
+msgid "perky"
+msgstr "oppkvikket"
-#: ../../include/permissions.php:29
-msgid "Can edit my \"public\" pages"
-msgstr "Kan endre mine \"offentlige\" sider"
+#: ../../include/text.php:924
+msgid "angry"
+msgstr "sint"
-#: ../../include/permissions.php:31
-msgid "Can source my \"public\" posts in derived channels"
-msgstr "Kan bruke mine \"offentlige\" innlegg som kanalkilde i egne kanaler"
+#: ../../include/text.php:925
+msgid "stupified"
+msgstr "sløvet"
-#: ../../include/permissions.php:31
-msgid "Somewhat advanced - very useful in open communities"
-msgstr "Litt avansert - svært nyttig i åpne fellesskap"
+#: ../../include/text.php:926
+msgid "puzzled"
+msgstr "forundret"
-#: ../../include/permissions.php:33
-msgid "Can administer my channel resources"
-msgstr "Kan administrere mine kanalressurser"
+#: ../../include/text.php:927
+msgid "interested"
+msgstr "interessert"
-#: ../../include/permissions.php:33
-msgid ""
-"Extremely advanced. Leave this alone unless you know what you are doing"
-msgstr "Ekstremt avansert. La dette være med mindre du vet hva du gjør"
+#: ../../include/text.php:928
+msgid "bitter"
+msgstr "bitter"
+
+#: ../../include/text.php:929
+msgid "cheerful"
+msgstr "munter"
+
+#: ../../include/text.php:930
+msgid "alive"
+msgstr "levende"
+
+#: ../../include/text.php:931
+msgid "annoyed"
+msgstr "irritert"
+
+#: ../../include/text.php:932
+msgid "anxious"
+msgstr "nervøs"
+
+#: ../../include/text.php:933
+msgid "cranky"
+msgstr "gretten"
+
+#: ../../include/text.php:934
+msgid "disturbed"
+msgstr "foruroliget"
+
+#: ../../include/text.php:935
+msgid "frustrated"
+msgstr "frustrert"
+
+#: ../../include/text.php:936
+msgid "depressed"
+msgstr "lei seg"
+
+#: ../../include/text.php:937
+msgid "motivated"
+msgstr "motivert"
+
+#: ../../include/text.php:938
+msgid "relaxed"
+msgstr "avslappet"
+
+#: ../../include/text.php:939
+msgid "surprised"
+msgstr "overrasket"
+
+#: ../../include/text.php:1103
+msgid "Monday"
+msgstr "mandag"
+
+#: ../../include/text.php:1103
+msgid "Tuesday"
+msgstr "tirsdag"
+
+#: ../../include/text.php:1103
+msgid "Wednesday"
+msgstr "onsdag"
+
+#: ../../include/text.php:1103
+msgid "Thursday"
+msgstr "torsdag"
+
+#: ../../include/text.php:1103
+msgid "Friday"
+msgstr "fredag"
+
+#: ../../include/text.php:1103
+msgid "Saturday"
+msgstr "lørdag"
+
+#: ../../include/text.php:1103
+msgid "Sunday"
+msgstr "søndag"
+
+#: ../../include/text.php:1107
+msgid "January"
+msgstr "januar"
+
+#: ../../include/text.php:1107
+msgid "February"
+msgstr "februar"
+
+#: ../../include/text.php:1107
+msgid "March"
+msgstr "mars"
+
+#: ../../include/text.php:1107
+msgid "April"
+msgstr "april"
+
+#: ../../include/text.php:1107
+msgid "May"
+msgstr "mai"
+
+#: ../../include/text.php:1107
+msgid "June"
+msgstr "juni"
+
+#: ../../include/text.php:1107
+msgid "July"
+msgstr "juli"
+
+#: ../../include/text.php:1107
+msgid "August"
+msgstr "august"
+
+#: ../../include/text.php:1107
+msgid "September"
+msgstr "september"
+
+#: ../../include/text.php:1107
+msgid "October"
+msgstr "oktober"
+
+#: ../../include/text.php:1107
+msgid "November"
+msgstr "november"
+
+#: ../../include/text.php:1107
+msgid "December"
+msgstr "desember"
+
+#: ../../include/text.php:1185
+msgid "unknown.???"
+msgstr "ukjent.???"
+
+#: ../../include/text.php:1186
+msgid "bytes"
+msgstr "bytes"
+
+#: ../../include/text.php:1225
+msgid "remove category"
+msgstr "fjern kategori"
+
+#: ../../include/text.php:1295
+msgid "remove from file"
+msgstr "fjern fra fil"
+
+#: ../../include/text.php:1360 ../../include/text.php:1372
+msgid "Click to open/close"
+msgstr "Klikk for å åpne/lukke"
+
+#: ../../include/text.php:1527 ../../mod/events.php:409
+msgid "Link to Source"
+msgstr "Lenke til kilde"
+
+#: ../../include/text.php:1546
+msgid "Select a page layout: "
+msgstr "Velg en side-layout:"
+
+#: ../../include/text.php:1549 ../../include/text.php:1614
+msgid "default"
+msgstr "standard"
+
+#: ../../include/text.php:1585
+msgid "Page content type: "
+msgstr "Sidens innholdstype:"
+
+#: ../../include/text.php:1626
+msgid "Select an alternate language"
+msgstr "Velg et annet språk"
+
+#: ../../include/text.php:1760
+msgid "activity"
+msgstr "aktivitet"
+
+#: ../../include/text.php:2041
+msgid "Design"
+msgstr "Formgivning"
+
+#: ../../include/text.php:2044
+msgid "Blocks"
+msgstr "Byggeklosser"
+
+#: ../../include/text.php:2045
+msgid "Menus"
+msgstr "Menyer"
+
+#: ../../include/text.php:2046
+msgid "Layouts"
+msgstr "Layout"
+
+#: ../../include/text.php:2047
+msgid "Pages"
+msgstr "Sider"
+
+#: ../../include/acl_selectors.php:240
+msgid "Visible to your default audience"
+msgstr "Synlig for ditt standard publikum"
+
+#: ../../include/acl_selectors.php:241
+msgid "Show"
+msgstr "Vis"
+
+#: ../../include/acl_selectors.php:242
+msgid "Don't show"
+msgstr "Ikke vis"
+
+#: ../../include/acl_selectors.php:248 ../../mod/events.php:585
+#: ../../mod/chat.php:209 ../../mod/photos.php:588 ../../mod/photos.php:950
+#: ../../mod/filestorage.php:137
+msgid "Permissions"
+msgstr "Tillatelser"
+
+#: ../../include/acl_selectors.php:249 ../../include/ItemObject.php:305
+#: ../../mod/photos.php:1148
+msgid "Close"
+msgstr "Lukk"
+
+#: ../../include/api.php:1084
+msgid "Public Timeline"
+msgstr "Offentlig tidslinje"
+
+#: ../../include/apps.php:126
+msgid "Site Admin"
+msgstr "Nettstedsadministrator"
+
+#: ../../include/apps.php:128
+msgid "Address Book"
+msgstr "Adressebok"
+
+#: ../../include/apps.php:142 ../../mod/mood.php:131
+msgid "Mood"
+msgstr "Stemning"
+
+#: ../../include/apps.php:146
+msgid "Probe"
+msgstr "Undersøk"
+
+#: ../../include/apps.php:147
+msgid "Suggest"
+msgstr "Forreslå"
+
+#: ../../include/apps.php:148
+msgid "Random Channel"
+msgstr "Tilfeldig kanal"
+
+#: ../../include/apps.php:149
+msgid "Invite"
+msgstr "Inviter"
+
+#: ../../include/apps.php:150
+msgid "Features"
+msgstr "Funksjoner"
+
+#: ../../include/apps.php:151
+msgid "Language"
+msgstr "Språk"
+
+#: ../../include/apps.php:152
+msgid "Post"
+msgstr "Innlegg"
+
+#: ../../include/apps.php:153
+msgid "Profile Photo"
+msgstr "Profilbilde"
+
+#: ../../include/apps.php:242 ../../mod/settings.php:81
+#: ../../mod/settings.php:575
+msgid "Update"
+msgstr "Oppdater"
+
+#: ../../include/apps.php:242
+msgid "Install"
+msgstr "Installer"
+
+#: ../../include/apps.php:247
+msgid "Purchase"
+msgstr "Kjøp"
+
+#: ../../include/ItemObject.php:130
+msgid "Save to Folder"
+msgstr "Lagre i mappe"
+
+#: ../../include/ItemObject.php:142 ../../include/ItemObject.php:154
+#: ../../mod/photos.php:1022 ../../mod/photos.php:1034
+msgid "View all"
+msgstr "Vis alle"
+
+#: ../../include/ItemObject.php:151 ../../mod/photos.php:1031
+msgctxt "noun"
+msgid "Dislike"
+msgid_plural "Dislikes"
+msgstr[0] "Liker ikke"
+msgstr[1] "Liker ikke"
+
+#: ../../include/ItemObject.php:179
+msgid "Add Star"
+msgstr "Legg til stjerne"
+
+#: ../../include/ItemObject.php:180
+msgid "Remove Star"
+msgstr "Fjern stjerne"
+
+#: ../../include/ItemObject.php:181
+msgid "Toggle Star Status"
+msgstr "Skru av og på stjernestatus"
+
+#: ../../include/ItemObject.php:185
+msgid "starred"
+msgstr "stjernemerket"
+
+#: ../../include/ItemObject.php:203
+msgid "Add Tag"
+msgstr "Legg til merkelapp"
+
+#: ../../include/ItemObject.php:221 ../../mod/photos.php:974
+msgid "I like this (toggle)"
+msgstr "Jeg liker dette (skru av og på)"
+
+#: ../../include/ItemObject.php:222 ../../mod/photos.php:975
+msgid "I don't like this (toggle)"
+msgstr "Jeg liker ikke dette (skru av og på)"
+
+#: ../../include/ItemObject.php:226
+msgid "Share This"
+msgstr "Del dette"
+
+#: ../../include/ItemObject.php:226
+msgid "share"
+msgstr "del"
+
+#: ../../include/ItemObject.php:249 ../../include/ItemObject.php:250
+#, php-format
+msgid "View %s's profile - %s"
+msgstr "Vis %s sin profil - %s"
+
+#: ../../include/ItemObject.php:251
+msgid "to"
+msgstr "til"
+
+#: ../../include/ItemObject.php:252
+msgid "via"
+msgstr "via"
+
+#: ../../include/ItemObject.php:253
+msgid "Wall-to-Wall"
+msgstr "vegg-til-vegg"
+
+#: ../../include/ItemObject.php:254
+msgid "via Wall-To-Wall:"
+msgstr "via vegg-til-vegg:"
+
+#: ../../include/ItemObject.php:290
+msgid "Save Bookmarks"
+msgstr "Lagre bokmerker"
+
+#: ../../include/ItemObject.php:291
+msgid "Add to Calendar"
+msgstr "Legg til i kalender"
+
+#: ../../include/ItemObject.php:299 ../../mod/photos.php:1142
+msgctxt "noun"
+msgid "Likes"
+msgstr "Liker"
+
+#: ../../include/ItemObject.php:300 ../../mod/photos.php:1143
+msgctxt "noun"
+msgid "Dislikes"
+msgstr "Liker ikke"
+
+#: ../../include/ItemObject.php:331
+#, php-format
+msgid "%d comment"
+msgid_plural "%d comments"
+msgstr[0] "%d kommentar"
+msgstr[1] "%d kommentarer"
+
+#: ../../include/ItemObject.php:596 ../../mod/photos.php:993
+#: ../../mod/photos.php:1103
+msgid "This is you"
+msgstr "Dette er deg"
+
+#: ../../include/ItemObject.php:599 ../../mod/mood.php:135
+#: ../../mod/profiles.php:633 ../../mod/connect.php:92 ../../mod/setup.php:313
+#: ../../mod/setup.php:358 ../../mod/poke.php:166 ../../mod/sources.php:104
+#: ../../mod/sources.php:138 ../../mod/events.php:587 ../../mod/chat.php:177
+#: ../../mod/chat.php:211 ../../mod/photos.php:594 ../../mod/photos.php:671
+#: ../../mod/photos.php:956 ../../mod/photos.php:996 ../../mod/photos.php:1106
+#: ../../mod/connedit.php:555 ../../mod/thing.php:284 ../../mod/thing.php:327
+#: ../../mod/pdledit.php:58 ../../mod/settings.php:549
+#: ../../mod/settings.php:661 ../../mod/settings.php:690
+#: ../../mod/settings.php:714 ../../mod/settings.php:790
+#: ../../mod/settings.php:976 ../../mod/fsuggest.php:108
+#: ../../mod/filestorage.php:146 ../../mod/group.php:81
+#: ../../mod/import.php:480 ../../mod/admin.php:412 ../../mod/admin.php:723
+#: ../../mod/admin.php:859 ../../mod/admin.php:992 ../../mod/admin.php:1191
+#: ../../mod/admin.php:1278 ../../mod/invite.php:142 ../../mod/locs.php:99
+#: ../../mod/mail.php:348 ../../mod/xchan.php:11 ../../mod/appman.php:99
+#: ../../mod/poll.php:68 ../../view/theme/apw/php/config.php:256
+#: ../../view/theme/blogga/php/config.php:67
+#: ../../view/theme/blogga/view/theme/blog/config.php:67
+#: ../../view/theme/redbasic/php/config.php:99
+msgid "Submit"
+msgstr "Send"
+
+#: ../../include/ItemObject.php:600
+msgid "Bold"
+msgstr "Uthevet"
+
+#: ../../include/ItemObject.php:601
+msgid "Italic"
+msgstr "Kursiv"
+
+#: ../../include/ItemObject.php:602
+msgid "Underline"
+msgstr "Understreket"
+
+#: ../../include/ItemObject.php:603
+msgid "Quote"
+msgstr "Sitat"
+
+#: ../../include/ItemObject.php:604
+msgid "Code"
+msgstr "Kode"
+
+#: ../../include/ItemObject.php:605
+msgid "Image"
+msgstr "Bilde"
+
+#: ../../include/ItemObject.php:606
+msgid "Link"
+msgstr "Lenke"
+
+#: ../../include/ItemObject.php:607
+msgid "Video"
+msgstr "Video"
#: ../../mod/mood.php:132
msgid "Set your current mood and tell your friends"
msgstr "Angi ditt nåværende humør og fortell dine venner"
-#: ../../mod/mitem.php:14 ../../mod/menu.php:92
+#: ../../mod/profperm.php:29 ../../mod/profperm.php:58
+msgid "Invalid profile identifier."
+msgstr "Ugyldig profil-identifikator."
+
+#: ../../mod/profperm.php:110
+msgid "Profile Visibility Editor"
+msgstr "Endre profilsynlighet"
+
+#: ../../mod/profperm.php:114
+msgid "Click on a contact to add or remove."
+msgstr "Klikk på en kontakt for å legge til eller fjerne."
+
+#: ../../mod/profperm.php:123
+msgid "Visible To"
+msgstr "Synlig for"
+
+#: ../../mod/profperm.php:139 ../../mod/connections.php:279
+msgid "All Connections"
+msgstr "Alle forbindelser"
+
+#: ../../mod/mitem.php:24 ../../mod/menu.php:108
msgid "Menu not found."
msgstr "Menyen ble ikke funnet."
-#: ../../mod/mitem.php:47
+#: ../../mod/mitem.php:67
msgid "Menu element updated."
msgstr "Menyelement er oppdatert."
-#: ../../mod/mitem.php:51
+#: ../../mod/mitem.php:71
msgid "Unable to update menu element."
msgstr "Ikke i stand til å oppdatere menyelement."
-#: ../../mod/mitem.php:57
+#: ../../mod/mitem.php:77
msgid "Menu element added."
msgstr "Menyelement lagt til."
-#: ../../mod/mitem.php:61
+#: ../../mod/mitem.php:81
msgid "Unable to add menu element."
msgstr "Ikke i stand til å legge til menyelement."
-#: ../../mod/mitem.php:78 ../../mod/dirprofile.php:175 ../../mod/menu.php:120
-#: ../../mod/xchan.php:27
+#: ../../mod/mitem.php:111 ../../mod/menu.php:136 ../../mod/xchan.php:37
msgid "Not found."
msgstr "Ikke funnet."
-#: ../../mod/mitem.php:96
+#: ../../mod/mitem.php:127
msgid "Manage Menu Elements"
msgstr "HÃ¥ndtere menyelementer"
-#: ../../mod/mitem.php:99
+#: ../../mod/mitem.php:130
msgid "Edit menu"
msgstr "Endre meny"
-#: ../../mod/mitem.php:102
+#: ../../mod/mitem.php:133
msgid "Edit element"
msgstr "Endre element"
-#: ../../mod/mitem.php:103
+#: ../../mod/mitem.php:134
msgid "Drop element"
msgstr "Slett element"
-#: ../../mod/mitem.php:104
+#: ../../mod/mitem.php:135
msgid "New element"
msgstr "Nytt element"
-#: ../../mod/mitem.php:105
+#: ../../mod/mitem.php:136
msgid "Edit this menu container"
msgstr "Endre denne menybeholderen"
-#: ../../mod/mitem.php:106
+#: ../../mod/mitem.php:137
msgid "Add menu element"
msgstr "Legg til menyelement"
-#: ../../mod/mitem.php:107
+#: ../../mod/mitem.php:138
msgid "Delete this menu item"
msgstr "Slett dette menyelementet"
-#: ../../mod/mitem.php:108
+#: ../../mod/mitem.php:139
msgid "Edit this menu item"
msgstr "Endre dette menyelementet"
-#: ../../mod/mitem.php:131
+#: ../../mod/mitem.php:158
msgid "New Menu Element"
msgstr "Nytt menyelement"
-#: ../../mod/mitem.php:133 ../../mod/mitem.php:176
+#: ../../mod/mitem.php:160 ../../mod/mitem.php:203
msgid "Menu Item Permissions"
msgstr "Menyelement Tillatelser"
-#: ../../mod/mitem.php:134 ../../mod/mitem.php:177 ../../mod/settings.php:960
+#: ../../mod/mitem.php:161 ../../mod/mitem.php:204 ../../mod/settings.php:1011
msgid "(click to open/close)"
msgstr "(klikk for å åpne/lukke)"
-#: ../../mod/mitem.php:136 ../../mod/mitem.php:180
+#: ../../mod/mitem.php:163 ../../mod/mitem.php:207
msgid "Link text"
msgstr "Lenketekst"
-#: ../../mod/mitem.php:137 ../../mod/mitem.php:181
+#: ../../mod/mitem.php:164 ../../mod/mitem.php:208
msgid "URL of link"
msgstr "URL-en til lenken"
-#: ../../mod/mitem.php:138 ../../mod/mitem.php:182
-msgid "Use Red magic-auth if available"
-msgstr "Bruk Red sin magiske-autent hvis mulig"
+#: ../../mod/mitem.php:165 ../../mod/mitem.php:209
+msgid "Use RedMatrix magic-auth if available"
+msgstr "Bruk RedMatrixs magiske-autentisering hvis tilgjengelig"
-#: ../../mod/mitem.php:139 ../../mod/mitem.php:183
+#: ../../mod/mitem.php:166 ../../mod/mitem.php:210
msgid "Open link in new window"
msgstr "Ã…pne lenke i nytt vindu"
-#: ../../mod/mitem.php:141 ../../mod/mitem.php:185
+#: ../../mod/mitem.php:168 ../../mod/mitem.php:212
msgid "Order in list"
msgstr "Ordne i liste"
-#: ../../mod/mitem.php:141 ../../mod/mitem.php:185
+#: ../../mod/mitem.php:168 ../../mod/mitem.php:212
msgid "Higher numbers will sink to bottom of listing"
msgstr "Høyere tall vil synke mot bunnen av listen"
-#: ../../mod/mitem.php:142 ../../mod/menu.php:84 ../../mod/new_channel.php:117
-msgid "Create"
-msgstr "Lag"
-
-#: ../../mod/mitem.php:154
+#: ../../mod/mitem.php:181
msgid "Menu item not found."
msgstr "Menyelement ble ikke funnet."
-#: ../../mod/mitem.php:163
+#: ../../mod/mitem.php:190
msgid "Menu item deleted."
msgstr "Menyelement slettet."
-#: ../../mod/mitem.php:165
+#: ../../mod/mitem.php:192
msgid "Menu item could not be deleted."
msgstr "Menyelement kunne ikke bli slettet."
-#: ../../mod/mitem.php:174
+#: ../../mod/mitem.php:201
msgid "Edit Menu Element"
msgstr "Endre menyelement"
-#: ../../mod/mitem.php:186 ../../mod/menu.php:114
+#: ../../mod/mitem.php:213 ../../mod/menu.php:130
msgid "Modify"
msgstr "Endre"
-#: ../../mod/ping.php:192
-msgid "sent you a private message"
-msgstr "sendte deg en privat melding"
+#: ../../mod/achievements.php:34
+msgid "Some blurb about what to do when you're new here"
+msgstr "En standardtekst om hva du bør gjøre som ny her"
-#: ../../mod/ping.php:250
-msgid "added your channel"
-msgstr "la til din kanal"
+#: ../../mod/profiles.php:18 ../../mod/profiles.php:165
+#: ../../mod/profiles.php:222 ../../mod/profiles.php:565
+msgid "Profile not found."
+msgstr "Profilen ble ikke funnet."
-#: ../../mod/ping.php:294
-msgid "posted an event"
-msgstr "la ut en hendelse"
+#: ../../mod/profiles.php:38
+msgid "Profile deleted."
+msgstr "Profilen er slettet."
-#: ../../mod/acl.php:239
-msgid "network"
-msgstr "nettverk"
+#: ../../mod/profiles.php:56 ../../mod/profiles.php:92
+msgid "Profile-"
+msgstr "Profil-"
-#: ../../mod/settings.php:71
-msgid "Name is required"
-msgstr "Navn er påkrevd"
+#: ../../mod/profiles.php:77 ../../mod/profiles.php:120
+msgid "New profile created."
+msgstr "Ny profil opprettet."
-#: ../../mod/settings.php:75
-msgid "Key and Secret are required"
-msgstr "Nøkkel og hemmelighet er påkrevd"
+#: ../../mod/profiles.php:98
+msgid "Profile unavailable to clone."
+msgstr "Profilen er utilgjengelig for klonen."
-#: ../../mod/settings.php:195
-msgid "Passwords do not match. Password unchanged."
-msgstr "Passordene stemmer ikke overens. Passord uforandret."
+#: ../../mod/profiles.php:136
+msgid "Profile unavailable to export."
+msgstr "Profilen er utilgjengelig for eksport."
-#: ../../mod/settings.php:199
-msgid "Empty passwords are not allowed. Password unchanged."
-msgstr "Tomme passord er ikke tillatt. Passord uforandret."
+#: ../../mod/profiles.php:232
+msgid "Profile Name is required."
+msgstr "Profilnavn er påkrevd."
-#: ../../mod/settings.php:212
-msgid "Password changed."
-msgstr "Passord endret."
+#: ../../mod/profiles.php:378
+msgid "Marital Status"
+msgstr "Sivilstand"
-#: ../../mod/settings.php:214
-msgid "Password update failed. Please try again."
-msgstr "Passord oppdatering mislyktes. Vennligst prøv igjen."
+#: ../../mod/profiles.php:382
+msgid "Romantic Partner"
+msgstr "Romantisk partner"
-#: ../../mod/settings.php:228
-msgid "Not valid email."
-msgstr "Ikke gyldig e-post."
+#: ../../mod/profiles.php:386
+msgid "Likes"
+msgstr "Liker"
-#: ../../mod/settings.php:231
-msgid "Protected email address. Cannot change to that email."
-msgstr "Beskyttet e-postadresse. Kan ikke endre til den e-postadressen."
+#: ../../mod/profiles.php:390
+msgid "Dislikes"
+msgstr "Liker ikke"
-#: ../../mod/settings.php:240
-msgid "System failure storing new email. Please try again."
-msgstr "Systemfeil ved lagring av ny e-post. Vennligst prøv igjen."
+#: ../../mod/profiles.php:394
+msgid "Work/Employment"
+msgstr "Arbeid/sysselsetting"
-#: ../../mod/settings.php:443
-msgid "Settings updated."
-msgstr "Innstillinger oppdatert."
+#: ../../mod/profiles.php:397
+msgid "Religion"
+msgstr "Religion"
-#: ../../mod/settings.php:514 ../../mod/settings.php:540
-#: ../../mod/settings.php:576
-msgid "Add application"
-msgstr "Legg til program"
+#: ../../mod/profiles.php:401
+msgid "Political Views"
+msgstr "Politiske synspunkter"
-#: ../../mod/settings.php:517 ../../mod/settings.php:543
-#: ../../mod/admin.php:892
-msgid "Name"
-msgstr "Navn"
+#: ../../mod/profiles.php:405
+msgid "Gender"
+msgstr "Kjønn"
-#: ../../mod/settings.php:517
-msgid "Name of application"
-msgstr "Navn på program"
+#: ../../mod/profiles.php:409
+msgid "Sexual Preference"
+msgstr "Seksuelle preferanser"
-#: ../../mod/settings.php:518 ../../mod/settings.php:544
-msgid "Consumer Key"
-msgstr "Consumer Key"
+#: ../../mod/profiles.php:413
+msgid "Homepage"
+msgstr "Hjemmeside"
-#: ../../mod/settings.php:518 ../../mod/settings.php:519
-msgid "Automatically generated - change if desired. Max length 20"
-msgstr "Automatisk laget - kan endres om du vil. Største lengde 20"
+#: ../../mod/profiles.php:417
+msgid "Interests"
+msgstr "Interesser"
-#: ../../mod/settings.php:519 ../../mod/settings.php:545
-msgid "Consumer Secret"
-msgstr "Consumer Secret"
+#: ../../mod/profiles.php:421 ../../mod/admin.php:866
+msgid "Address"
+msgstr "Adresse"
-#: ../../mod/settings.php:520 ../../mod/settings.php:546
-msgid "Redirect"
-msgstr "Omdirigering"
+#: ../../mod/profiles.php:428 ../../mod/pubsites.php:25
+msgid "Location"
+msgstr "Plassering"
-#: ../../mod/settings.php:520
-msgid ""
-"Redirect URI - leave blank unless your application specifically requires "
-"this"
-msgstr "Omdirigerings-URI - la stå tomt hvis ikke ditt program spesifikt krever dette"
+#: ../../mod/profiles.php:511
+msgid "Profile updated."
+msgstr "Profilen er oppdatert."
-#: ../../mod/settings.php:521 ../../mod/settings.php:547
-msgid "Icon url"
-msgstr "Ikon-URL"
+#: ../../mod/profiles.php:590
+msgid "Hide your contact/friend list from viewers of this profile?"
+msgstr "Skjul kontakt-/vennelisten din fra de som ser på denne profilen?"
-#: ../../mod/settings.php:521
-msgid "Optional"
-msgstr "Valgfritt"
+#: ../../mod/profiles.php:591 ../../mod/api.php:105 ../../mod/settings.php:916
+#: ../../mod/settings.php:921 ../../mod/settings.php:1004
+#: ../../mod/admin.php:392
+msgid "Yes"
+msgstr "Ja"
-#: ../../mod/settings.php:532
-msgid "You can't edit this application."
-msgstr "Du kan ikke endre dette programmet."
+#: ../../mod/profiles.php:592 ../../mod/api.php:106 ../../mod/settings.php:916
+#: ../../mod/settings.php:921 ../../mod/settings.php:1004
+#: ../../mod/admin.php:390
+msgid "No"
+msgstr "Nei"
-#: ../../mod/settings.php:575
-msgid "Connected Apps"
-msgstr "Tilkoblede app-er"
+#: ../../mod/profiles.php:632
+msgid "Edit Profile Details"
+msgstr "Endre profildetaljer"
-#: ../../mod/settings.php:579
-msgid "Client key starts with"
-msgstr "Klientnøkkel starter med"
+#: ../../mod/profiles.php:634
+msgid "View this profile"
+msgstr "Vis denne profilen"
-#: ../../mod/settings.php:580
-msgid "No name"
-msgstr "Ikke noe navn"
+#: ../../mod/profiles.php:636
+msgid "Change Profile Photo"
+msgstr "Endre profilbilde"
-#: ../../mod/settings.php:581
-msgid "Remove authorization"
-msgstr "Fjern tillatelse"
+#: ../../mod/profiles.php:637
+msgid "Create a new profile using these settings"
+msgstr "Lag en ny profil ved å bruke disse innstillingene"
-#: ../../mod/settings.php:592
-msgid "No feature settings configured"
-msgstr "Ingen funksjonsinnstillinger er konfigurert"
+#: ../../mod/profiles.php:638
+msgid "Clone this profile"
+msgstr "Klon denne profilen"
-#: ../../mod/settings.php:600
-msgid "Feature Settings"
-msgstr "Funksjonsinnstillinger"
+#: ../../mod/profiles.php:639
+msgid "Delete this profile"
+msgstr "Slett denne profilen"
-#: ../../mod/settings.php:623
-msgid "Account Settings"
-msgstr "Kontoinnstillinger"
+#: ../../mod/profiles.php:641
+msgid "Import profile from file"
+msgstr "Importer profil fra fil"
-#: ../../mod/settings.php:624
-msgid "Password Settings"
-msgstr "Passordinnstillinger"
+#: ../../mod/profiles.php:642
+msgid "Export profile to file"
+msgstr "Eksporter profil til fil"
-#: ../../mod/settings.php:625
-msgid "New Password:"
-msgstr "Nytt passord:"
+#: ../../mod/profiles.php:643
+msgid "Profile Name:"
+msgstr "Profilnavn:"
-#: ../../mod/settings.php:626
-msgid "Confirm:"
-msgstr "Bekreft:"
+#: ../../mod/profiles.php:644
+msgid "Your Full Name:"
+msgstr "Ditt fulle navn:"
-#: ../../mod/settings.php:626
-msgid "Leave password fields blank unless changing"
-msgstr "La passordfeltene stå blanke om det ikke skal endres"
+#: ../../mod/profiles.php:645
+msgid "Title/Description:"
+msgstr "Tittel/Beskrivelse:"
-#: ../../mod/settings.php:628 ../../mod/settings.php:936
-msgid "Email Address:"
-msgstr "E-postadresse:"
+#: ../../mod/profiles.php:646
+msgid "Your Gender:"
+msgstr "Ditt kjønn:"
-#: ../../mod/settings.php:629
-msgid "Remove Account"
-msgstr "Slett konto"
+#: ../../mod/profiles.php:647
+msgid "Birthday :"
+msgstr "Fødselsdag:"
-#: ../../mod/settings.php:630
-msgid "Warning: This action is permanent and cannot be reversed."
-msgstr "Advarsel: Denne handlingen er permanent og kan ikke angres."
+#: ../../mod/profiles.php:648
+msgid "Street Address:"
+msgstr "Gateadresse:"
-#: ../../mod/settings.php:646
-msgid "Off"
-msgstr "Av"
+#: ../../mod/profiles.php:649
+msgid "Locality/City:"
+msgstr "Sted/By:"
-#: ../../mod/settings.php:646
-msgid "On"
-msgstr "PÃ¥"
+#: ../../mod/profiles.php:650
+msgid "Postal/Zip Code:"
+msgstr "Postnummer/ZIP-kode:"
-#: ../../mod/settings.php:653
-msgid "Additional Features"
-msgstr "Ekstra funksjoner"
+#: ../../mod/profiles.php:651
+msgid "Country:"
+msgstr "Land:"
-#: ../../mod/settings.php:678
-msgid "Connector Settings"
-msgstr "Koblingsinnstillinger"
+#: ../../mod/profiles.php:652
+msgid "Region/State:"
+msgstr "Region/fylke:"
-#: ../../mod/settings.php:708 ../../mod/admin.php:390
-msgid "No special theme for mobile devices"
-msgstr "Ikke noe spesielt tema for mobile enheter"
+#: ../../mod/profiles.php:653
+msgid "<span class=\"heart\">&hearts;</span> Marital Status:"
+msgstr "<span class=\"heart\">&hearts;</span> Sivilstand:"
+
+#: ../../mod/profiles.php:654
+msgid "Who: (if applicable)"
+msgstr "Hvem: (hvis det er aktuelt) "
+
+#: ../../mod/profiles.php:655
+msgid "Examples: cathy123, Cathy Williams, cathy@example.com"
+msgstr "Eksempler: kari123, Kari Villiamsen, kari@example.com"
+
+#: ../../mod/profiles.php:656
+msgid "Since [date]:"
+msgstr "Siden [dato]:"
+
+#: ../../mod/profiles.php:658
+msgid "Homepage URL:"
+msgstr "Hjemmeside URL:"
+
+#: ../../mod/profiles.php:661
+msgid "Religious Views:"
+msgstr "Religiøse synspunkter:"
+
+#: ../../mod/profiles.php:662
+msgid "Keywords:"
+msgstr "Nøkkelord:"
+
+#: ../../mod/profiles.php:665
+msgid "Example: fishing photography software"
+msgstr "Eksempel: fisking fotografering programvare"
+
+#: ../../mod/profiles.php:666
+msgid "Used in directory listings"
+msgstr "Brukt i katalogoppføringer"
+
+#: ../../mod/profiles.php:667
+msgid "Tell us about yourself..."
+msgstr "Fortell oss om deg selv..."
+
+#: ../../mod/profiles.php:668
+msgid "Hobbies/Interests"
+msgstr "Hobbier/Interesser"
+
+#: ../../mod/profiles.php:669
+msgid "Contact information and Social Networks"
+msgstr "Kontaktinformasjon og sosiale nettverk"
+
+#: ../../mod/profiles.php:670
+msgid "My other channels"
+msgstr "Mine andre kanaler"
+
+#: ../../mod/profiles.php:671
+msgid "Musical interests"
+msgstr "Musikkinteresser"
+
+#: ../../mod/profiles.php:672
+msgid "Books, literature"
+msgstr "Bøker, litteratur"
+
+#: ../../mod/profiles.php:673
+msgid "Television"
+msgstr "TV/fjernsyn"
+
+#: ../../mod/profiles.php:674
+msgid "Film/dance/culture/entertainment"
+msgstr "Film/dans/kultur/underholdning"
+
+#: ../../mod/profiles.php:675
+msgid "Love/romance"
+msgstr "Kjærlighet/romantikk"
+
+#: ../../mod/profiles.php:676
+msgid "Work/employment"
+msgstr "Arbeid/sysselsetting"
+
+#: ../../mod/profiles.php:677
+msgid "School/education"
+msgstr "Skole/utdanning"
-#: ../../mod/settings.php:717
+#: ../../mod/profiles.php:683
+msgid "This is your default profile."
+msgstr "Dette er din standardprofil."
+
+#: ../../mod/profiles.php:694 ../../mod/directory.php:148
+msgid "Age: "
+msgstr "Alder:"
+
+#: ../../mod/profiles.php:737
+msgid "Edit/Manage Profiles"
+msgstr "Endre/håndter profiler"
+
+#: ../../mod/profiles.php:738
+msgid "Add profile things"
+msgstr "Legg til profilting"
+
+#: ../../mod/profiles.php:739
+msgid "Include desirable objects in your profile"
+msgstr "Inkluder ønskverdige objekter i din profil"
+
+#: ../../mod/connect.php:55 ../../mod/connect.php:103
+msgid "Continue"
+msgstr "Fortsett"
+
+#: ../../mod/connect.php:84
+msgid "Premium Channel Setup"
+msgstr "Premiumkanal-oppsett"
+
+#: ../../mod/connect.php:86
+msgid "Enable premium channel connection restrictions"
+msgstr "Slå på restriksjoner for forbindelse med premiumkanal"
+
+#: ../../mod/connect.php:87
+msgid ""
+"Please enter your restrictions or conditions, such as paypal receipt, usage "
+"guidelines, etc."
+msgstr "Vennligst skriv dine restriksjoner og betingelser, slik som PayPal-kvittering, retningslinjer for bruk, og så videre."
+
+#: ../../mod/connect.php:89 ../../mod/connect.php:109
+msgid ""
+"This channel may require additional steps or acknowledgement of the "
+"following conditions prior to connecting:"
+msgstr "Denne kanalen kan kreve ytterligere steg og bekreftelse av følgende betingelser før tilkobling:"
+
+#: ../../mod/connect.php:90
+msgid ""
+"Potential connections will then see the following text before proceeding:"
+msgstr "Potensielle forbindelser vil da se følgende tekst før de går videre:"
+
+#: ../../mod/connect.php:91 ../../mod/connect.php:112
+msgid ""
+"By continuing, I certify that I have complied with any instructions provided"
+" on this page."
+msgstr "Ved å fortsette bekrefter jeg at jeg har oppfylt alle instruksjoner gitt på denne siden."
+
+#: ../../mod/connect.php:100
+msgid "(No specific instructions have been provided by the channel owner.)"
+msgstr "(Ingen spesifikke instruksjoner er gitt av kanaleieren.)"
+
+#: ../../mod/connect.php:108
+msgid "Restricted or Premium Channel"
+msgstr "Begrenset kanal eller premiumkanal"
+
+#: ../../mod/post.php:229
+msgid ""
+"Remote authentication blocked. You are logged into this site locally. Please"
+" logout and retry."
+msgstr "Fjernautentisering blokkert. Du er logget inn på dette nettstedet lokalt. Vennligst logg ut og prøv på nytt."
+
+#: ../../mod/post.php:261 ../../mod/openid.php:72 ../../mod/openid.php:180
#, php-format
-msgid "%s - (Experimental)"
-msgstr "%s - (Eksperimentelt)"
+msgid "Welcome %s. Remote authentication successful."
+msgstr "Velkommen %s. Ekstern autentisering er vellykket."
-#: ../../mod/settings.php:747
-msgid "Display Settings"
-msgstr "Visningsinnstillinger"
+#: ../../mod/setup.php:166
+msgid "Red Matrix Server - Setup"
+msgstr "Red Matrix tjener - oppsett"
-#: ../../mod/settings.php:753
-msgid "Display Theme:"
-msgstr "Visningstema:"
+#: ../../mod/setup.php:172
+msgid "Could not connect to database."
+msgstr "Fikk ikke kontakt med databasen."
-#: ../../mod/settings.php:754
-msgid "Mobile Theme:"
-msgstr "Mobiltema:"
+#: ../../mod/setup.php:176
+msgid ""
+"Could not connect to specified site URL. Possible SSL certificate or DNS "
+"issue."
+msgstr "Fikk ikke kontakt med det angitte nettstedets URL. Problemet kan muligens skyldes SSL-sertifikatet eller DNS."
-#: ../../mod/settings.php:755
-msgid "Update browser every xx seconds"
-msgstr "Oppdater nettleser hvert xx sekunder"
+#: ../../mod/setup.php:183
+msgid "Could not create table."
+msgstr "Kunne ikke lage tabellen."
-#: ../../mod/settings.php:755
-msgid "Minimum of 10 seconds, no maximum"
-msgstr "Minimum 10 sekunder, ikke noe maksimum"
+#: ../../mod/setup.php:189
+msgid "Your site database has been installed."
+msgstr "Databasen til ditt nettsted har blitt installert."
-#: ../../mod/settings.php:756
-msgid "Maximum number of conversations to load at any time:"
-msgstr "Maksimalt antall samtaler å laste samtidig:"
+#: ../../mod/setup.php:194
+msgid ""
+"You may need to import the file \"install/schema_xxx.sql\" manually using a "
+"database client."
+msgstr "Du må kanskje importere filen \"install/schmea_xxx.sql\" manuelt ved å bruke en databaseklient."
-#: ../../mod/settings.php:756
-msgid "Maximum of 100 items"
-msgstr "Maksimum 100 elementer"
+#: ../../mod/setup.php:195 ../../mod/setup.php:264 ../../mod/setup.php:663
+msgid "Please see the file \"install/INSTALL.txt\"."
+msgstr "Vennligst les filen \"install/INSTALL.txt\"."
-#: ../../mod/settings.php:757
-msgid "Don't show emoticons"
-msgstr "Ikke vis følelsesikoner"
+#: ../../mod/setup.php:261
+msgid "System check"
+msgstr "Systemsjekk"
-#: ../../mod/settings.php:758
-msgid "System Page Layout Editor - (advanced)"
-msgstr "Systemsidens layoutbehandler - (avansert)"
+#: ../../mod/setup.php:265 ../../mod/events.php:434 ../../mod/photos.php:868
+msgid "Next"
+msgstr "Neste"
-#: ../../mod/settings.php:793
-msgid "Nobody except yourself"
-msgstr "Ingen unntatt deg selv"
+#: ../../mod/setup.php:266
+msgid "Check again"
+msgstr "Sjekk igjen"
-#: ../../mod/settings.php:794
-msgid "Only those you specifically allow"
-msgstr "Bare de du spesifikt tillater"
+#: ../../mod/setup.php:289
+msgid "Database connection"
+msgstr "Databaseforbindelse"
-#: ../../mod/settings.php:795
-msgid "Approved connections"
-msgstr "Godkjente forbindelser"
+#: ../../mod/setup.php:290
+msgid ""
+"In order to install Red Matrix we need to know how to connect to your "
+"database."
+msgstr "For å installere Red Matrix må du oppgi hvordan din database kan kontaktes."
-#: ../../mod/settings.php:796
-msgid "Any connections"
-msgstr "Enhver forbindelse"
+#: ../../mod/setup.php:291
+msgid ""
+"Please contact your hosting provider or site administrator if you have "
+"questions about these settings."
+msgstr "Vennligst kontakt din nettstedstilbyder eller nettstedsadministrator hvis du har spørsmål om disse innstillingene."
-#: ../../mod/settings.php:797
-msgid "Anybody on this website"
-msgstr "Enhver ved dette nettstedet"
+#: ../../mod/setup.php:292
+msgid ""
+"The database you specify below should already exist. If it does not, please "
+"create it before continuing."
+msgstr "Databasen du oppgir nedenfor må finnes på forhånd. Hvis den ikke finnes, vennligst lag den før du fortsetter."
-#: ../../mod/settings.php:798
-msgid "Anybody in this network"
-msgstr "Enhver i dette nettverket"
+#: ../../mod/setup.php:296
+msgid "Database Server Name"
+msgstr "Navn på databasetjener"
-#: ../../mod/settings.php:799
-msgid "Anybody authenticated"
-msgstr "Enhver som er autentisert"
+#: ../../mod/setup.php:296
+msgid "Default is localhost"
+msgstr "Standard er localhost"
-#: ../../mod/settings.php:800
-msgid "Anybody on the internet"
-msgstr "Enhver på Internett"
+#: ../../mod/setup.php:297
+msgid "Database Port"
+msgstr "Databaseport"
-#: ../../mod/settings.php:877
-msgid "Publish your default profile in the network directory"
-msgstr "Publiser din standardprofil i nettverkskatalogen"
+#: ../../mod/setup.php:297
+msgid "Communication port number - use 0 for default"
+msgstr "Kommunikasjonsportnummer - bruk 0 for standard"
-#: ../../mod/settings.php:877 ../../mod/settings.php:882
-#: ../../mod/settings.php:953 ../../mod/api.php:106 ../../mod/profiles.php:493
-#: ../../mod/admin.php:420
-msgid "No"
-msgstr "Nei"
+#: ../../mod/setup.php:298
+msgid "Database Login Name"
+msgstr "Database innloggingsnavn"
-#: ../../mod/settings.php:877 ../../mod/settings.php:882
-#: ../../mod/settings.php:953 ../../mod/api.php:105 ../../mod/profiles.php:492
-#: ../../mod/admin.php:422
-msgid "Yes"
-msgstr "Ja"
+#: ../../mod/setup.php:299
+msgid "Database Login Password"
+msgstr "Database innloggingspassord"
-#: ../../mod/settings.php:882
-msgid "Allow us to suggest you as a potential friend to new members?"
-msgstr "Tillat oss å foreslå deg som en mulig venn til nye medlemmer?"
+#: ../../mod/setup.php:300
+msgid "Database Name"
+msgstr "Databasenavn"
-#: ../../mod/settings.php:886 ../../mod/profile_photo.php:365
-msgid "or"
-msgstr "eller"
+#: ../../mod/setup.php:301
+msgid "Database Type"
+msgstr "Databasetype"
-#: ../../mod/settings.php:891
-msgid "Your channel address is"
-msgstr "Din kanaladresse er"
+#: ../../mod/setup.php:303 ../../mod/setup.php:347
+msgid "Site administrator email address"
+msgstr "E-postadressen til administrator ved nettstedet"
-#: ../../mod/settings.php:925
-msgid "Channel Settings"
-msgstr "Kanalinnstillinger"
+#: ../../mod/setup.php:303 ../../mod/setup.php:347
+msgid ""
+"Your account email address must match this in order to use the web admin "
+"panel."
+msgstr "Din konto sin e-postadresse må være lik denne for å kunne bruke web-administrasjonspanelet."
-#: ../../mod/settings.php:934
-msgid "Basic Settings"
-msgstr "Grunninnstillinger"
+#: ../../mod/setup.php:304 ../../mod/setup.php:349
+msgid "Website URL"
+msgstr "Nettstedets URL"
-#: ../../mod/settings.php:937
-msgid "Your Timezone:"
-msgstr "Din tidssone:"
+#: ../../mod/setup.php:304 ../../mod/setup.php:349
+msgid "Please use SSL (https) URL if available."
+msgstr "Vennligst bruk SSL (https) URL hvis tilgjengelig."
-#: ../../mod/settings.php:938
-msgid "Default Post Location:"
-msgstr "Standard plassering ved innlegg:"
+#: ../../mod/setup.php:307 ../../mod/setup.php:352
+msgid "Please select a default timezone for your website"
+msgstr "Vennligst velg en standard tidssone for ditt nettsted"
-#: ../../mod/settings.php:938
-msgid "Geographical location to display on your posts"
-msgstr "Geografisk plassering som vises på dine innlegg"
+#: ../../mod/setup.php:335
+msgid "Site settings"
+msgstr "Nettstedets innstillinger"
-#: ../../mod/settings.php:939
-msgid "Use Browser Location:"
-msgstr "Bruk nettleseren sin plassering:"
+#: ../../mod/setup.php:395
+msgid "Could not find a command line version of PHP in the web server PATH."
+msgstr "Fant ikke en kommandolinjeversjon av PHP i webtjenerens sti (PATH)."
-#: ../../mod/settings.php:941
-msgid "Adult Content"
-msgstr "Voksent innhold"
+#: ../../mod/setup.php:396
+msgid ""
+"If you don't have a command line version of PHP installed on server, you "
+"will not be able to run background polling via cron."
+msgstr "Hvis du ikke har en kommandolinjeversjon av PHP installert på tjeneren, så vil du ikke kunne kjøre bakgrunnshenting via cron."
-#: ../../mod/settings.php:941
+#: ../../mod/setup.php:400
+msgid "PHP executable path"
+msgstr "PHP-kjørefilens sti"
+
+#: ../../mod/setup.php:400
msgid ""
-"This channel frequently or regularly publishes adult content. (Please tag "
-"any adult material and/or nudity with #NSFW)"
-msgstr "Denne kanalen vil ofte eller jevnlig publisere voksent innhold. (Vennligst merk alt voksent materiale og/eller nakenhet med #NSFW)"
+"Enter full path to php executable. You can leave this blank to continue the "
+"installation."
+msgstr "Skriv full sti til kjørefilen for PHP. Du kan la denne stå blank for å fortsette installasjonen."
-#: ../../mod/settings.php:943
-msgid "Security and Privacy Settings"
-msgstr "Sikkerhets- og personverninnstillinger"
+#: ../../mod/setup.php:405
+msgid "Command line PHP"
+msgstr "Kommandolinje PHP"
-#: ../../mod/settings.php:945
-msgid "Hide my online presence"
-msgstr "Skjul min tilstedeværelse online"
+#: ../../mod/setup.php:414
+msgid ""
+"The command line version of PHP on your system does not have "
+"\"register_argc_argv\" enabled."
+msgstr "Kommandolinjeversjonen av PHP på ditt system har ikke \"register_argc_argv\" påskrudd."
-#: ../../mod/settings.php:945
-msgid "Prevents displaying in your profile that you are online"
-msgstr "Forhindrer visning på din profil av at du er online "
+#: ../../mod/setup.php:415
+msgid "This is required for message delivery to work."
+msgstr "Dette er påkrevd for at meldingslevering skal virke."
-#: ../../mod/settings.php:947
-msgid "Simple Privacy Settings:"
-msgstr "Enkle personverninnstillinger:"
+#: ../../mod/setup.php:417
+msgid "PHP register_argc_argv"
+msgstr "PHP register_argc_argv"
-#: ../../mod/settings.php:948
+#: ../../mod/setup.php:438
msgid ""
-"Very Public - <em>extremely permissive (should be used with caution)</em>"
-msgstr "Svært offentlig - <em>ekstremt åpent (bør brukes med varsomhet)</em>"
+"Error: the \"openssl_pkey_new\" function on this system is not able to "
+"generate encryption keys"
+msgstr "Feil: \"openssl_pkey_new\"-funksjonen på dette systemet er ikke i stand til å lage krypteringsnøkler"
-#: ../../mod/settings.php:949
+#: ../../mod/setup.php:439
msgid ""
-"Typical - <em>default public, privacy when desired (similar to social "
-"network permissions but with improved privacy)</em>"
-msgstr "Typisk - <em>standard er offentlig, personvern når ønsket (likner på tillatelser i sosiale nettverk, men med forbedret personvern)</em>"
+"If running under Windows, please see "
+"\"http://www.php.net/manual/en/openssl.installation.php\"."
+msgstr "Ved kjøring på Windows, vennligst se \"http://www.php.net/manual/en/openssl.installation.php\"."
-#: ../../mod/settings.php:950
-msgid "Private - <em>default private, never open or public</em>"
-msgstr "Privat - <em>standard er privat, aldri åpen eller offentlig</em>"
+#: ../../mod/setup.php:441
+msgid "Generate encryption keys"
+msgstr "Lag krypteringsnøkler"
-#: ../../mod/settings.php:951
-msgid "Blocked - <em>default blocked to/from everybody</em>"
-msgstr "Blokkert - <em>standard blokkert til/fra alle</em>"
+#: ../../mod/setup.php:448
+msgid "libCurl PHP module"
+msgstr "libCurl PHP-modul"
-#: ../../mod/settings.php:953
-msgid "Allow others to tag your posts"
-msgstr "Tillat andre å merke dine innlegg"
+#: ../../mod/setup.php:449
+msgid "GD graphics PHP module"
+msgstr "GD graphics PHP-modul"
+
+#: ../../mod/setup.php:450
+msgid "OpenSSL PHP module"
+msgstr "OpenSSL PHP-modul"
+
+#: ../../mod/setup.php:451
+msgid "mysqli or postgres PHP module"
+msgstr "MySQLi eller Postgres PHP modul"
+
+#: ../../mod/setup.php:452
+msgid "mb_string PHP module"
+msgstr "mb_string PHP-modul"
+
+#: ../../mod/setup.php:453
+msgid "mcrypt PHP module"
+msgstr "mcrypt PHP-modul"
+
+#: ../../mod/setup.php:458 ../../mod/setup.php:460
+msgid "Apache mod_rewrite module"
+msgstr "Apache mod_rewrite-modul"
-#: ../../mod/settings.php:953
+#: ../../mod/setup.php:458
msgid ""
-"Often used by the community to retro-actively flag inappropriate content"
-msgstr "Ofte brukt av fellesskapet for å merke upassende innhold i etterkant"
+"Error: Apache webserver mod-rewrite module is required but not installed."
+msgstr "Feil: Apache web-tjenerens mod-rewrite-modul er påkrevd, men ikke installert."
-#: ../../mod/settings.php:955
-msgid "Advanced Privacy Settings"
-msgstr "Avanserte personverninnstillinger"
+#: ../../mod/setup.php:464 ../../mod/setup.php:467
+msgid "proc_open"
+msgstr "proc_open"
-#: ../../mod/settings.php:957
-msgid "Expire other channel content after this many days"
-msgstr "Annet kanal innhold utløper etter så mange dager"
+#: ../../mod/setup.php:464
+msgid ""
+"Error: proc_open is required but is either not installed or has been "
+"disabled in php.ini"
+msgstr "Feil: proc_open er påkrevd, men er enten ikke installert eller har blitt avskrudd i php.ini"
-#: ../../mod/settings.php:957
-msgid "0 or blank prevents expiration"
-msgstr "0 eller blankt forhindrer utløp"
+#: ../../mod/setup.php:472
+msgid "Error: libCURL PHP module required but not installed."
+msgstr "Feil: libCURL PHP-modul er påkrevd, men er ikke installert."
-#: ../../mod/settings.php:958
-msgid "Maximum Friend Requests/Day:"
-msgstr "Maksimalt antall venneforespørsler per dag:"
+#: ../../mod/setup.php:476
+msgid ""
+"Error: GD graphics PHP module with JPEG support required but not installed."
+msgstr "Feil: GD graphics PHP-modul med JPEG-støtte er påkrevd, men er ikke installert."
-#: ../../mod/settings.php:958
-msgid "May reduce spam activity"
-msgstr "Kan redusere søppelpostaktivitet"
+#: ../../mod/setup.php:480
+msgid "Error: openssl PHP module required but not installed."
+msgstr "Feil: openssl PHP-modul er påkrevd, men er ikke installert."
-#: ../../mod/settings.php:959
-msgid "Default Post Permissions"
-msgstr "Standard innleggstillatelser"
+#: ../../mod/setup.php:484
+msgid ""
+"Error: mysqli or postgres PHP module required but neither are installed."
+msgstr "Feil: mysqli eller postgres PHP modul er påkrevd, men ingen av dem er installert."
-#: ../../mod/settings.php:971
-msgid "Maximum private messages per day from unknown people:"
-msgstr "Maksimalt antall private meldinger per dag fra ukjente personer:"
+#: ../../mod/setup.php:488
+msgid "Error: mb_string PHP module required but not installed."
+msgstr "Feil: mb_string PHP-modul er påkrevd, men er ikke installert."
-#: ../../mod/settings.php:971
-msgid "Useful to reduce spamming"
-msgstr "Nyttig for å redusere søppelpost"
+#: ../../mod/setup.php:492
+msgid "Error: mcrypt PHP module required but not installed."
+msgstr "Feil: mcrypt PHP-modul er påkrevd, men er ikke installert."
-#: ../../mod/settings.php:974
-msgid "Notification Settings"
-msgstr "Varslingsinnstillinger"
+#: ../../mod/setup.php:508
+msgid ""
+"The web installer needs to be able to create a file called \".htconfig.php\""
+" in the top folder of your web server and it is unable to do so."
+msgstr "Web-installasjonen må kunne lage en fil kalt \".htconfig.php\" i toppkatalogen til web-tjeneren din, men dette får den ikke til."
-#: ../../mod/settings.php:975
-msgid "By default post a status message when:"
-msgstr "Legg inn en statusmelding når du:"
+#: ../../mod/setup.php:509
+msgid ""
+"This is most often a permission setting, as the web server may not be able "
+"to write files in your folder - even if you can."
+msgstr "Dette er oftest tillatelsesinnstilling, ettersom webtjeneren kanskje kan skrive til filer i din mappe - selv om du kan."
-#: ../../mod/settings.php:976
-msgid "accepting a friend request"
-msgstr "aksepterer en venneforespørsel"
+#: ../../mod/setup.php:510
+msgid ""
+"At the end of this procedure, we will give you a text to save in a file "
+"named .htconfig.php in your Red top folder."
+msgstr "På slutten av denne prosedyren vil vi gi deg en tekst til å lagre i en fil kalt .htconfig.php i toppkatalogen til din Red."
-#: ../../mod/settings.php:977
-msgid "joining a forum/community"
-msgstr "blir med i et forum/miljø"
+#: ../../mod/setup.php:511
+msgid ""
+"You can alternatively skip this procedure and perform a manual installation."
+" Please see the file \"install/INSTALL.txt\" for instructions."
+msgstr "Alternativt, så kan du hoppe over denne prosedyren og gjennomføre en manuell installasjon. Vennligst se filen \"install/INSTALL.txt\" for instruksjoner."
-#: ../../mod/settings.php:978
-msgid "making an <em>interesting</em> profile change"
-msgstr "gjør en <em>interessant</em> profilendring"
+#: ../../mod/setup.php:514
+msgid ".htconfig.php is writable"
+msgstr ".htconfig.php kan skrives til"
-#: ../../mod/settings.php:979
-msgid "Send a notification email when:"
-msgstr "Send en varsel-e-post når:"
+#: ../../mod/setup.php:524
+msgid ""
+"Red uses the Smarty3 template engine to render its web views. Smarty3 "
+"compiles templates to PHP to speed up rendering."
+msgstr "Red bruker malmotoren Smarty3 for å gjengi sine webvisninger. Smarty3 kompilerer malene om til PHP for å framskynde gjengivelsen."
-#: ../../mod/settings.php:980
-msgid "You receive a connection request"
-msgstr "Du har mottatt en forespørsel om forbindelse"
+#: ../../mod/setup.php:525
+#, php-format
+msgid ""
+"In order to store these compiled templates, the web server needs to have "
+"write access to the directory %s under the Red top level folder."
+msgstr "For å kunne lagre disse kompilerte malene, så må webtjeneren ha skrivetilgang til katalogen %s under Red sin hovedmappe."
-#: ../../mod/settings.php:981
-msgid "Your connections are confirmed"
-msgstr "Dine forbindelser er bekreftet"
+#: ../../mod/setup.php:526 ../../mod/setup.php:544
+msgid ""
+"Please ensure that the user that your web server runs as (e.g. www-data) has"
+" write access to this folder."
+msgstr "Vennligst sikre at brukeren som din web-tjeneste kjører som (for eksempel www-data) har skrivetilgang til denne katalogen."
-#: ../../mod/settings.php:982
-msgid "Someone writes on your profile wall"
-msgstr "Noen skriver på din profilvegg"
+#: ../../mod/setup.php:527
+#, php-format
+msgid ""
+"Note: as a security measure, you should give the web server write access to "
+"%s only--not the template files (.tpl) that it contains."
+msgstr "Merknad: som et sikkerhetstiltak bør du bare gi webtjerenn skrivetilgang til %s - ikke til malfilene (.tpl) som den inneholder."
-#: ../../mod/settings.php:983
-msgid "Someone writes a followup comment"
-msgstr "Noen skriver en oppfølgende kommentar"
+#: ../../mod/setup.php:530
+#, php-format
+msgid "%s is writable"
+msgstr "%s kan skrives til"
-#: ../../mod/settings.php:984
-msgid "You receive a private message"
-msgstr "Du mottar en privat melding"
+#: ../../mod/setup.php:543
+msgid ""
+"Red uses the store directory to save uploaded files. The web server needs to"
+" have write access to the store directory under the Red top level folder"
+msgstr "Red bruker lagringsmappen for å lagre opplastede filer. Webtjeneren trenger å ha skrivetilgang til lagringsmappen under Red sin toppnivåmappe."
-#: ../../mod/settings.php:985
-msgid "You receive a friend suggestion"
-msgstr "Du mottok et venneforslag"
+#: ../../mod/setup.php:547
+msgid "store is writable"
+msgstr "lageret kan skrives til"
-#: ../../mod/settings.php:986
-msgid "You are tagged in a post"
-msgstr "Du merkes i et innlegg"
+#: ../../mod/setup.php:577
+msgid ""
+"SSL certificate cannot be validated. Fix certificate or disable https access"
+" to this site."
+msgstr "SSL-sertifikatet kan ikke kontrolleres. Fiks sertifikatet eller skru av https tilgang til dette nettstedet."
-#: ../../mod/settings.php:987
-msgid "You are poked/prodded/etc. in a post"
-msgstr "Du ble prikket/oppildnet/og så vider i et innlegg"
+#: ../../mod/setup.php:578
+msgid ""
+"If you have https access to your website or allow connections to TCP port "
+"443 (the https: port), you MUST use a browser-valid certificate. You MUST "
+"NOT use self-signed certificates!"
+msgstr "Hvis du har HTTPS-tilgang til ditt nettsted eller tillater forbindelser til TCP port 443 (HTTPS-porten), så MÅ du bruke nettlesergodkjent sertifkater. Du MÅ IKKE bruke egensignert sertifikater!"
-#: ../../mod/settings.php:990
-msgid "Advanced Account/Page Type Settings"
-msgstr "Avanserte innstillinger for konto/sidetype"
+#: ../../mod/setup.php:579
+msgid ""
+"This restriction is incorporated because public posts from you may for "
+"example contain references to images on your own hub."
+msgstr "Denne begrensningen er tatt inn fordi offentlige innlegg fra deg kan for eksempel inneholde referanser til bilder på din egen hub."
-#: ../../mod/settings.php:991
-msgid "Change the behaviour of this account for special situations"
-msgstr "Endre oppførselen til denne kontoen i spesielle situasjoner"
+#: ../../mod/setup.php:580
+msgid ""
+"If your certificate is not recognized, members of other sites (who may "
+"themselves have valid certificates) will get a warning message on their own "
+"site complaining about security issues."
+msgstr "Hvis sertifikatet ditt ikke gjenkjennes, så vil medlemmer på andre nettsteder (som selv kan ha godkjente sertifikater) få en beskjed med en advarsel på deres eget nettsted som klager over sikkerhetsproblemer."
-#: ../../mod/settings.php:994
+#: ../../mod/setup.php:581
msgid ""
-"Please enable expert mode (in <a href=\"settings/features\">Settings > "
-"Additional features</a>) to adjust!"
-msgstr "Vennligst skru på ekspertmodus (under <a href=\"settings/features\">Innstillinger > Ekstra funksjoner</a>) for å justere!"
+"This can cause usability issues elsewhere (not just on your own site) so we "
+"must insist on this requirement."
+msgstr "Dette kan gi problemer med brukervennlighet (ikke bare på ditt eget nettsted), så vi må insistere på dette kravet."
-#: ../../mod/settings.php:995
-msgid "Miscellaneous Settings"
-msgstr "Diverse innstillinger"
+#: ../../mod/setup.php:582
+msgid ""
+"Providers are available that issue free certificates which are browser-"
+"valid."
+msgstr "Det finnes tilbydere som utsteder gratis sertifikater som er gyldige i nettlesere."
-#: ../../mod/settings.php:997
-msgid "Personal menu to display in your channel pages"
-msgstr "Personlig meny som kan vises på dine kanalsider"
+#: ../../mod/setup.php:584
+msgid "SSL certificate validation"
+msgstr "SSL sertifikat-kontroll"
+
+#: ../../mod/setup.php:590
+msgid ""
+"Url rewrite in .htaccess is not working. Check your server "
+"configuration.Test: "
+msgstr "URL omskriving (rewrite) i .htaccess virker ikke. Sjekk konfigurasjonen til tjeneren din. Test:"
+
+#: ../../mod/setup.php:592
+msgid "Url rewrite is working"
+msgstr "URL rewrite virker"
+
+#: ../../mod/setup.php:602
+msgid ""
+"The database configuration file \".htconfig.php\" could not be written. "
+"Please use the enclosed text to create a configuration file in your web "
+"server root."
+msgstr "Databasekonfigurasjonsfilen \".htconfig.php\" kunne ikke skrives. Vennligst bruk den medfølgende teksten for å lage en konfigurasjonsfil i toppkatalogen av din web-tjener."
+
+#: ../../mod/setup.php:626
+msgid "Errors encountered creating database tables."
+msgstr "Feil oppstod under opprettelsen av databasetabeller."
+
+#: ../../mod/setup.php:661
+msgid "<h1>What next</h1>"
+msgstr "<h1>Hva gjenstår</h1>"
+
+#: ../../mod/setup.php:662
+msgid ""
+"IMPORTANT: You will need to [manually] setup a scheduled task for the "
+"poller."
+msgstr "VIKTIG: Du må [manuelt] sette opp en automatisert tidfestet oppgave til bakgrunnshenteren."
+
+#: ../../mod/siteinfo.php:90
+#, php-format
+msgid "Version %s"
+msgstr "Versjon %s"
+
+#: ../../mod/siteinfo.php:111
+msgid "Installed plugins/addons/apps:"
+msgstr "Installerte tilleggsfunksjoner/tillegg/apper:"
+
+#: ../../mod/siteinfo.php:124
+msgid "No installed plugins/addons/apps"
+msgstr "Ingen installerte tilleggsfunksjoner/tillegg/apper"
+
+#: ../../mod/siteinfo.php:132
+msgid "Red"
+msgstr "Red"
+
+#: ../../mod/siteinfo.php:133
+msgid ""
+"This is a hub of the Red Matrix - a global cooperative network of "
+"decentralized privacy enhanced websites."
+msgstr "Dette er en hub i Red Matrix - et globalt kooperativt nettverk av desentraliserte personvernforsterkede nettsteder."
+
+#: ../../mod/siteinfo.php:137
+msgid "Running at web location"
+msgstr "Kjører på webplasseringen"
+
+#: ../../mod/siteinfo.php:138
+msgid ""
+"Please visit <a href=\"http://getzot.com\">GetZot.com</a> to learn more "
+"about the Red Matrix."
+msgstr "Vennligst besøk <a href=\"http://getzot.com\">GetZot.com</a> for å lære mer om Red Matrix."
+
+#: ../../mod/siteinfo.php:139
+msgid "Bug reports and issues: please visit"
+msgstr "Feilmeldinger og feilretting: vennligst besøk"
+
+#: ../../mod/siteinfo.php:142
+msgid ""
+"Suggestions, praise, etc. - please email \"redmatrix\" at librelist - dot "
+"com"
+msgstr "Forslag, ros og så videre - vennligst e-post \"redmatrix\" hos librelist - punktum com"
+
+#: ../../mod/siteinfo.php:144
+msgid "Site Administrators"
+msgstr "Nettstedsadministratorer"
#: ../../mod/poke.php:159
msgid "Poke/Prod"
@@ -4006,17 +4597,6 @@ msgid ""
" and/or create new posts for you?"
msgstr "Vil du tillate dette programmet å få tilgang til dine innlegg og kontakter, og/eller lage nye innlegg for deg?"
-#: ../../mod/post.php:226
-msgid ""
-"Remote authentication blocked. You are logged into this site locally. Please"
-" logout and retry."
-msgstr "Fjernautentisering blokkert. Du er logget inn på dette nettstedet lokalt. Vennligst logg ut og prøv på nytt."
-
-#: ../../mod/post.php:257 ../../mod/openid.php:72 ../../mod/openid.php:178
-#, php-format
-msgid "Welcome %s. Remote authentication successful."
-msgstr "Velkommen %s. Ekstern autentisering er vellykket."
-
#: ../../mod/attach.php:9
msgid "Item not available."
msgstr "Elementet er ikke tilgjengelig."
@@ -4026,384 +4606,282 @@ msgstr "Elementet er ikke tilgjengelig."
msgid "Fetching URL returns error: %1$s"
msgstr "Henting av URL gir følgende feil: %1$s"
-#: ../../mod/block.php:27 ../../mod/page.php:35
+#: ../../mod/block.php:27 ../../mod/page.php:33
msgid "Invalid item."
msgstr "Ugyldig element."
-#: ../../mod/block.php:39 ../../mod/chanview.php:77 ../../mod/page.php:47
-#: ../../mod/home.php:52 ../../mod/wall_upload.php:28
+#: ../../mod/block.php:39 ../../mod/wall_upload.php:28 ../../mod/page.php:45
msgid "Channel not found."
msgstr "Kanalen ble ikke funnet."
-#: ../../mod/block.php:75 ../../mod/page.php:83 ../../mod/display.php:100
-#: ../../mod/help.php:72 ../../index.php:236
+#: ../../mod/block.php:75 ../../mod/display.php:102 ../../mod/help.php:70
+#: ../../mod/page.php:81 ../../index.php:241
msgid "Page not found."
msgstr "Siden ikke funnet."
-#: ../../mod/profile_photo.php:108
-msgid "Image uploaded but image cropping failed."
-msgstr "Bildet ble lastet opp, men beskjæring av bildet mislyktes."
-
-#: ../../mod/profile_photo.php:161
-msgid "Image resize failed."
-msgstr "Endring av bildestørrelse mislyktes."
-
-#: ../../mod/profile_photo.php:205
-msgid ""
-"Shift-reload the page or clear browser cache if the new photo does not "
-"display immediately."
-msgstr "Hold nede Shift-knappen og last siden på nytt eller tøm nettleserens mellomlager hvis det nye bildet ikke vises umiddelbart."
-
-#: ../../mod/profile_photo.php:232
-#, php-format
-msgid "Image exceeds size limit of %d"
-msgstr "Bildet overstiger størrelsesbegrensningen på %d"
+#: ../../mod/sources.php:32
+msgid "Failed to create source. No channel selected."
+msgstr "Mislyktes med å lage kilde. Ingen kanal er valgt."
-#: ../../mod/profile_photo.php:241
-msgid "Unable to process image."
-msgstr "Kan ikke behandle bildet."
+#: ../../mod/sources.php:45
+msgid "Source created."
+msgstr "Kilden er laget."
-#: ../../mod/profile_photo.php:290 ../../mod/profile_photo.php:339
-msgid "Photo not available."
-msgstr "Bildet er ikke tilgjengelig."
+#: ../../mod/sources.php:57
+msgid "Source updated."
+msgstr "Kilden er oppdatert."
-#: ../../mod/profile_photo.php:358
-msgid "Upload File:"
-msgstr "Last opp fil:"
+#: ../../mod/sources.php:82
+msgid "*"
+msgstr "*"
-#: ../../mod/profile_photo.php:359
-msgid "Select a profile:"
-msgstr "Velg en profil:"
+#: ../../mod/sources.php:89
+msgid "Manage remote sources of content for your channel."
+msgstr "HÃ¥ndtere eksterne innholdskilder til din kanal."
-#: ../../mod/profile_photo.php:360
-msgid "Upload Profile Photo"
-msgstr "Last opp profilbilde:"
+#: ../../mod/sources.php:90 ../../mod/sources.php:100
+msgid "New Source"
+msgstr "Ny kilde"
-#: ../../mod/profile_photo.php:361
-msgid "Upload"
-msgstr "Last opp"
+#: ../../mod/sources.php:101 ../../mod/sources.php:133
+msgid ""
+"Import all or selected content from the following channel into this channel "
+"and distribute it according to your channel settings."
+msgstr "Importer alt eller et utvalgt av innhold fra følgende kanal inn i denne kanalen og distribuer det i henhold til dine egne kanalinnstillinger."
-#: ../../mod/profile_photo.php:365
-msgid "skip this step"
-msgstr "hopp over dette steget"
+#: ../../mod/sources.php:102 ../../mod/sources.php:134
+msgid "Only import content with these words (one per line)"
+msgstr "Bare importer innhold med disse ordene (ett ord per linje)"
-#: ../../mod/profile_photo.php:365
-msgid "select a photo from your photo albums"
-msgstr "velg et bilde fra dine fotoalbum"
+#: ../../mod/sources.php:102 ../../mod/sources.php:134
+msgid "Leave blank to import all public content"
+msgstr "La stå tomt for å importere alt offentlig innhold"
-#: ../../mod/profile_photo.php:379
-msgid "Crop Image"
-msgstr "Beskjær bildet"
+#: ../../mod/sources.php:103 ../../mod/sources.php:137
+#: ../../mod/new_channel.php:112
+msgid "Channel Name"
+msgstr "Kanalnavn"
-#: ../../mod/profile_photo.php:380
-msgid "Please adjust the image cropping for optimum viewing."
-msgstr "Vennligst juster bildebeskjæringen for optimal visning."
+#: ../../mod/sources.php:123 ../../mod/sources.php:150
+msgid "Source not found."
+msgstr "Kilden ble ikke funnet."
-#: ../../mod/profile_photo.php:382
-msgid "Done Editing"
-msgstr "Avslutt redigering"
+#: ../../mod/sources.php:130
+msgid "Edit Source"
+msgstr "Endre kilde"
-#: ../../mod/profile_photo.php:425
-msgid "Image uploaded successfully."
-msgstr "Opplasting av bildet var vellykket."
+#: ../../mod/sources.php:131
+msgid "Delete Source"
+msgstr "Slett kilde"
-#: ../../mod/profile_photo.php:427
-msgid "Image upload failed."
-msgstr "Opplasting av bildet mislyktes."
+#: ../../mod/sources.php:158
+msgid "Source removed"
+msgstr "Kilden er fjernet"
-#: ../../mod/profile_photo.php:436
-#, php-format
-msgid "Image size reduction [%s] failed."
-msgstr "Forminsking av bildet [%s] mislyktes."
+#: ../../mod/sources.php:160
+msgid "Unable to remove source."
+msgstr "Ikke i stand til å fjerne kilde."
-#: ../../mod/blocks.php:66
+#: ../../mod/blocks.php:99
msgid "Block Name"
msgstr "Byggeklossens navn"
-#: ../../mod/profiles.php:18 ../../mod/profiles.php:138
-#: ../../mod/profiles.php:168 ../../mod/profiles.php:472
-msgid "Profile not found."
-msgstr "Profilen ble ikke funnet."
-
-#: ../../mod/profiles.php:38
-msgid "Profile deleted."
-msgstr "Profilen er slettet."
-
-#: ../../mod/profiles.php:56 ../../mod/profiles.php:92
-msgid "Profile-"
-msgstr "Profil-"
-
-#: ../../mod/profiles.php:77 ../../mod/profiles.php:120
-msgid "New profile created."
-msgstr "Ny profil opprettet."
-
-#: ../../mod/profiles.php:98
-msgid "Profile unavailable to clone."
-msgstr "Profilen er utilgjengelig for klonen."
-
-#: ../../mod/profiles.php:178
-msgid "Profile Name is required."
-msgstr "Profilnavn er påkrevd."
-
-#: ../../mod/profiles.php:294
-msgid "Marital Status"
-msgstr "Sivilstand"
-
-#: ../../mod/profiles.php:298
-msgid "Romantic Partner"
-msgstr "Romantisk partner"
-
-#: ../../mod/profiles.php:302
-msgid "Likes"
-msgstr "Liker"
-
-#: ../../mod/profiles.php:306
-msgid "Dislikes"
-msgstr "Liker ikke"
+#: ../../mod/search.php:13 ../../mod/directory.php:15 ../../mod/photos.php:458
+#: ../../mod/display.php:9 ../../mod/viewconnections.php:17
+msgid "Public access denied."
+msgstr "Offentlig tilgang avvist."
-#: ../../mod/profiles.php:310
-msgid "Work/Employment"
-msgstr "Arbeid/sysselsetting"
+#: ../../mod/directory.php:161
+msgid "Gender: "
+msgstr "Kjønn:"
-#: ../../mod/profiles.php:313
-msgid "Religion"
-msgstr "Religion"
+#: ../../mod/directory.php:163
+msgid "Status: "
+msgstr "Status:"
-#: ../../mod/profiles.php:317
-msgid "Political Views"
-msgstr "Politiske synspunkter"
+#: ../../mod/directory.php:165
+msgid "Homepage: "
+msgstr "Hjemmeside:"
-#: ../../mod/profiles.php:321
-msgid "Gender"
-msgstr "Kjønn"
+#: ../../mod/directory.php:168
+msgid "Hometown: "
+msgstr "Hjemby:"
-#: ../../mod/profiles.php:325
-msgid "Sexual Preference"
-msgstr "Seksuelle preferanser"
+#: ../../mod/directory.php:170
+msgid "About: "
+msgstr "Om:"
-#: ../../mod/profiles.php:329
-msgid "Homepage"
-msgstr "Hjemmeside"
+#: ../../mod/directory.php:225
+msgid "Public Forum:"
+msgstr "Offentlig forum:"
-#: ../../mod/profiles.php:333
-msgid "Interests"
-msgstr "Interesser"
+#: ../../mod/directory.php:228
+msgid "Keywords: "
+msgstr "Nøkkelord:"
-#: ../../mod/profiles.php:337 ../../mod/admin.php:892
-msgid "Address"
-msgstr "Adresse"
+#: ../../mod/directory.php:268
+msgid "Finding:"
+msgstr "Finner:"
-#: ../../mod/profiles.php:344 ../../mod/pubsites.php:25
-msgid "Location"
-msgstr "Plassering"
+#: ../../mod/directory.php:273
+msgid "next page"
+msgstr "Neste side"
-#: ../../mod/profiles.php:427
-msgid "Profile updated."
-msgstr "Profilen er oppdatert."
+#: ../../mod/directory.php:273
+msgid "previous page"
+msgstr "Forrige side"
-#: ../../mod/profiles.php:491
-msgid "Hide your contact/friend list from viewers of this profile?"
-msgstr "Skjul kontakt-/vennelisten din fra de som ser på denne profilen?"
+#: ../../mod/directory.php:290
+msgid "No entries (some entries may be hidden)."
+msgstr "Ingen oppføringer (noen oppføringer kan være skjult)."
-#: ../../mod/profiles.php:514
-msgid "Edit Profile Details"
-msgstr "Endre profildetaljer"
+#: ../../mod/register.php:44
+msgid "Maximum daily site registrations exceeded. Please try again tomorrow."
+msgstr "Antallet daglige registreringer ved nettstedet er overskredet. Vær vennlig å prøve igjen imorgen."
-#: ../../mod/profiles.php:516
-msgid "View this profile"
-msgstr "Vis denne profilen"
+#: ../../mod/register.php:50
+msgid ""
+"Please indicate acceptance of the Terms of Service. Registration failed."
+msgstr "Vennligst angi at tjenesteavtalen er akseptert. Registrering mislyktes."
-#: ../../mod/profiles.php:517
-msgid "Change Profile Photo"
-msgstr "Endre profilbilde"
+#: ../../mod/register.php:84
+msgid "Passwords do not match."
+msgstr "Passordene er ikke like."
-#: ../../mod/profiles.php:518
-msgid "Create a new profile using these settings"
-msgstr "Lag en ny profil ved å bruke disse innstillingene"
+#: ../../mod/register.php:117
+msgid ""
+"Registration successful. Please check your email for validation "
+"instructions."
+msgstr "Registreringen er vellykket. Vennligst sjekk e-posten din for å bekrefte opprettelsen."
-#: ../../mod/profiles.php:519
-msgid "Clone this profile"
-msgstr "Klon denne profilen"
+#: ../../mod/register.php:123
+msgid "Your registration is pending approval by the site owner."
+msgstr "Din registrering venter på godkjenning av nettstedets eier."
-#: ../../mod/profiles.php:520
-msgid "Delete this profile"
-msgstr "Slett denne profilen"
+#: ../../mod/register.php:126
+msgid "Your registration can not be processed."
+msgstr "Din registrering kan ikke behandles."
-#: ../../mod/profiles.php:521
-msgid "Profile Name:"
-msgstr "Profilnavn:"
+#: ../../mod/register.php:163
+msgid "Registration on this site/hub is by approval only."
+msgstr "Registrering på dette nettstedet/denne hubben skjer bare gjennom godkjenning."
-#: ../../mod/profiles.php:522
-msgid "Your Full Name:"
-msgstr "Ditt fulle navn:"
+#: ../../mod/register.php:164
+msgid "<a href=\"pubsites\">Register at another affiliated site/hub</a>"
+msgstr "<a href=\"pubsites\">Registrer på et annet tilknyttet nettsted/hub</a>"
-#: ../../mod/profiles.php:523
-msgid "Title/Description:"
-msgstr "Tittel/Beskrivelse:"
+#: ../../mod/register.php:174
+msgid ""
+"This site has exceeded the number of allowed daily account registrations. "
+"Please try again tomorrow."
+msgstr "Dette nettstedet har overskredet antallet tillate kontoregistreringer per dag. Vennligst prøv igjen imorgen."
-#: ../../mod/profiles.php:524
-msgid "Your Gender:"
-msgstr "Ditt kjønn:"
+#: ../../mod/register.php:185
+msgid "Terms of Service"
+msgstr "Tjenesteavtale"
-#: ../../mod/profiles.php:525
+#: ../../mod/register.php:191
#, php-format
-msgid "Birthday (%s):"
-msgstr "Fødselsdag (%s):"
-
-#: ../../mod/profiles.php:526
-msgid "Street Address:"
-msgstr "Gateadresse:"
-
-#: ../../mod/profiles.php:527
-msgid "Locality/City:"
-msgstr "Sted/By:"
-
-#: ../../mod/profiles.php:528
-msgid "Postal/Zip Code:"
-msgstr "Postnummer/ZIP-kode:"
-
-#: ../../mod/profiles.php:529
-msgid "Country:"
-msgstr "Land:"
-
-#: ../../mod/profiles.php:530
-msgid "Region/State:"
-msgstr "Region/fylke:"
-
-#: ../../mod/profiles.php:531
-msgid "<span class=\"heart\">&hearts;</span> Marital Status:"
-msgstr "<span class=\"heart\">&hearts;</span> Sivilstand:"
-
-#: ../../mod/profiles.php:532
-msgid "Who: (if applicable)"
-msgstr "Hvem: (hvis det er aktuelt) "
-
-#: ../../mod/profiles.php:533
-msgid "Examples: cathy123, Cathy Williams, cathy@example.com"
-msgstr "Eksempler: kari123, Kari Villiamsen, kari@example.com"
-
-#: ../../mod/profiles.php:534
-msgid "Since [date]:"
-msgstr "Siden [dato]:"
-
-#: ../../mod/profiles.php:536
-msgid "Homepage URL:"
-msgstr "Hjemmeside URL:"
-
-#: ../../mod/profiles.php:539
-msgid "Religious Views:"
-msgstr "Religiøse synspunkter:"
-
-#: ../../mod/profiles.php:540
-msgid "Keywords:"
-msgstr "Nøkkelord:"
-
-#: ../../mod/profiles.php:543
-msgid "Example: fishing photography software"
-msgstr "Eksempel: fisking fotografering programvare"
-
-#: ../../mod/profiles.php:544
-msgid "Used in directory listings"
-msgstr "Brukt i katalogoppføringer"
+msgid "I accept the %s for this website"
+msgstr "Jeg godtar %s for dette nettstedet"
-#: ../../mod/profiles.php:545
-msgid "Tell us about yourself..."
-msgstr "Fortell oss om deg selv..."
+#: ../../mod/register.php:193
+#, php-format
+msgid "I am over 13 years of age and accept the %s for this website"
+msgstr "Jeg er over 13 år gammel og aksepterer %s for dette nettstedet."
-#: ../../mod/profiles.php:546
-msgid "Hobbies/Interests"
-msgstr "Hobbier/Interesser"
+#: ../../mod/register.php:207 ../../mod/admin.php:413
+msgid "Registration"
+msgstr "Registrering"
-#: ../../mod/profiles.php:547
-msgid "Contact information and Social Networks"
-msgstr "Kontaktinformasjon og sosiale nettverk"
+#: ../../mod/register.php:212
+msgid "Membership on this site is by invitation only."
+msgstr "Medlemskap ved dette nettstedet skjer kun via invitasjon."
-#: ../../mod/profiles.php:548
-msgid "My other channels"
-msgstr "Mine andre kanaler"
+#: ../../mod/register.php:213
+msgid "Please enter your invitation code"
+msgstr "Vennligst skriv din invitasjonskode"
-#: ../../mod/profiles.php:549
-msgid "Musical interests"
-msgstr "Musikkinteresser"
+#: ../../mod/register.php:216
+msgid "Your email address"
+msgstr "Din e-postadresse"
-#: ../../mod/profiles.php:550
-msgid "Books, literature"
-msgstr "Bøker, litteratur"
+#: ../../mod/register.php:217
+msgid "Choose a password"
+msgstr "Velg et passord"
-#: ../../mod/profiles.php:551
-msgid "Television"
-msgstr "TV/fjernsyn"
+#: ../../mod/register.php:218
+msgid "Please re-enter your password"
+msgstr "Vennligst skriv ditt passord en gang til"
-#: ../../mod/profiles.php:552
-msgid "Film/dance/culture/entertainment"
-msgstr "Film/dans/kultur/underholdning"
+#: ../../mod/events.php:81
+msgid "Event can not end before it has started."
+msgstr "Hendelsen kan ikke slutte før den starter."
-#: ../../mod/profiles.php:553
-msgid "Love/romance"
-msgstr "Kjærlighet/romantikk"
+#: ../../mod/events.php:86
+msgid "Event title and start time are required."
+msgstr "Hendelsestittel og starttidspunkt er påkrevd."
-#: ../../mod/profiles.php:554
-msgid "Work/employment"
-msgstr "Arbeid/sysselsetting"
+#: ../../mod/events.php:100
+msgid "Event not found."
+msgstr "Hendelsen ble ikke funnet."
-#: ../../mod/profiles.php:555
-msgid "School/education"
-msgstr "Skole/utdanning"
+#: ../../mod/events.php:364
+msgid "l, F j"
+msgstr "l, F j"
-#: ../../mod/profiles.php:560
-msgid ""
-"This is your <strong>public</strong> profile.<br />It <strong>may</strong> "
-"be visible to anybody using the internet."
-msgstr "Dette er din <strong>offentlige</strong> profil.<br />Den <strong>kan</strong> være synlig for alle på Internett."
+#: ../../mod/events.php:386
+msgid "Edit event"
+msgstr "Endre hendelse"
-#: ../../mod/profiles.php:570 ../../mod/directory.php:143
-#: ../../mod/dirprofile.php:92
-msgid "Age: "
-msgstr "Alder:"
+#: ../../mod/events.php:432
+msgid "Create New Event"
+msgstr "Lag ny hendelse"
-#: ../../mod/profiles.php:609
-msgid "Edit/Manage Profiles"
-msgstr "Endre/håndter profiler"
+#: ../../mod/events.php:433 ../../mod/photos.php:859
+msgid "Previous"
+msgstr "Forrige"
-#: ../../mod/profiles.php:610
-msgid "Add profile things"
-msgstr "Legg til profilting"
+#: ../../mod/events.php:560
+msgid "Event details"
+msgstr "Hendelsesdetaljer"
-#: ../../mod/profiles.php:611
-msgid "Include desirable objects in your profile"
-msgstr "Inkluder ønskverdige objekter i din profil"
+#: ../../mod/events.php:561
+msgid "Starting date and Title are required."
+msgstr "Startdato og Tittel er påkrevd."
-#: ../../mod/bookmarks.php:38
-msgid "Bookmark added"
-msgstr "Bokmerke lagt til"
+#: ../../mod/events.php:565
+msgid "Event Starts:"
+msgstr "Hendelsen starter:"
-#: ../../mod/bookmarks.php:58
-msgid "My Bookmarks"
-msgstr "Mine bokmerker"
+#: ../../mod/events.php:565 ../../mod/events.php:581 ../../mod/appman.php:91
+#: ../../mod/appman.php:92
+msgid "Required"
+msgstr "PÃ¥krevd"
-#: ../../mod/bookmarks.php:69
-msgid "My Connections Bookmarks"
-msgstr "Mine forbindelsers bokmerker"
+#: ../../mod/events.php:571
+msgid "Finish date/time is not known or not relevant"
+msgstr "Sluttdato/-tidspunkt er ikke kjent eller ikke relevant"
-#: ../../mod/profperm.php:29 ../../mod/profperm.php:58
-msgid "Invalid profile identifier."
-msgstr "Ugyldig profil-identifikator."
+#: ../../mod/events.php:573
+msgid "Event Finishes:"
+msgstr "Hendelsen slutter:"
-#: ../../mod/profperm.php:110
-msgid "Profile Visibility Editor"
-msgstr "Endre profilsynlighet"
+#: ../../mod/events.php:575
+msgid "Adjust for viewer timezone"
+msgstr "Juster i forhold til tilskuerens tidssone"
-#: ../../mod/profperm.php:114
-msgid "Click on a contact to add or remove."
-msgstr "Klikk på en kontakt for å legge til eller fjerne."
+#: ../../mod/events.php:577
+msgid "Description:"
+msgstr "Beskrivelse:"
-#: ../../mod/profperm.php:123
-msgid "Visible To"
-msgstr "Synlig for"
+#: ../../mod/events.php:581
+msgid "Title:"
+msgstr "Tittel:"
-#: ../../mod/profperm.php:139 ../../mod/connections.php:279
-msgid "All Connections"
-msgstr "Alle forbindelser"
+#: ../../mod/events.php:583
+msgid "Share this event"
+msgstr "Del denne hendelsen"
#: ../../mod/pubsites.php:16
msgid "Public Sites"
@@ -4495,84 +4973,10 @@ msgstr "Navn på chatrom"
msgid "%1$s's Chatrooms"
msgstr "%1$s sine chatrom"
-#: ../../mod/register.php:43
-msgid "Maximum daily site registrations exceeded. Please try again tomorrow."
-msgstr "Antallet daglige registreringer ved nettstedet er overskredet. Vær vennlig å prøve igjen imorgen."
-
-#: ../../mod/register.php:49
-msgid ""
-"Please indicate acceptance of the Terms of Service. Registration failed."
-msgstr "Vennligst angi at tjenesteavtalen er akseptert. Registrering mislyktes."
-
-#: ../../mod/register.php:77
-msgid "Passwords do not match."
-msgstr "Passordene er ikke like."
-
-#: ../../mod/register.php:105
-msgid ""
-"Registration successful. Please check your email for validation "
-"instructions."
-msgstr "Registreringen er vellykket. Vennligst sjekk e-posten din for å bekrefte opprettelsen."
-
-#: ../../mod/register.php:111
-msgid "Your registration is pending approval by the site owner."
-msgstr "Din registrering venter på godkjenning av nettstedets eier."
-
-#: ../../mod/register.php:114
-msgid "Your registration can not be processed."
-msgstr "Din registrering kan ikke behandles."
-
-#: ../../mod/register.php:147
-msgid "Registration on this site/hub is by approval only."
-msgstr "Registrering på dette nettstedet/denne hubben skjer bare gjennom godkjenning."
-
-#: ../../mod/register.php:148
-msgid "<a href=\"pubsites\">Register at another affiliated site/hub</a>"
-msgstr "<a href=\"pubsites\">Registrer på et annet tilknyttet nettsted/hub</a>"
-
-#: ../../mod/register.php:156
-msgid ""
-"This site has exceeded the number of allowed daily account registrations. "
-"Please try again tomorrow."
-msgstr "Dette nettstedet har overskredet antallet tillate kontoregistreringer per dag. Vennligst prøv igjen imorgen."
-
-#: ../../mod/register.php:167
-msgid "Terms of Service"
-msgstr "Tjenesteavtale"
-
-#: ../../mod/register.php:173
-#, php-format
-msgid "I accept the %s for this website"
-msgstr "Jeg godtar %s for dette nettstedet"
-
-#: ../../mod/register.php:175
+#: ../../mod/subthread.php:103
#, php-format
-msgid "I am over 13 years of age and accept the %s for this website"
-msgstr "Jeg er over 13 år gammel og aksepterer %s for dette nettstedet."
-
-#: ../../mod/register.php:189 ../../mod/admin.php:443
-msgid "Registration"
-msgstr "Registrering"
-
-#: ../../mod/register.php:194
-msgid "Membership on this site is by invitation only."
-msgstr "Medlemskap ved dette nettstedet skjer kun via invitasjon."
-
-#: ../../mod/register.php:195
-msgid "Please enter your invitation code"
-msgstr "Vennligst skriv din invitasjonskode"
-
-#: ../../mod/register.php:198
-msgid "Your email address"
-msgstr "Din e-postadresse"
-
-#: ../../mod/register.php:199
-msgid "Choose a password"
-msgstr "Velg et passord"
-
-#: ../../mod/register.php:200
-msgid "Please re-enter your password"
-msgstr "Vennligst skriv ditt passord en gang til"
+msgid "%1$s is following %2$s's %3$s"
+msgstr "%1$s følger %2$s sin %3$s"
#: ../../mod/chatsvc.php:111
msgid "Away"
@@ -4582,39 +4986,65 @@ msgstr "Borte"
msgid "Online"
msgstr "Online"
-#: ../../mod/regmod.php:12
+#: ../../mod/regmod.php:11
msgid "Please login."
msgstr "Vennligst logg inn."
-#: ../../mod/cloud.php:112
-msgid "Red Matrix - Guests: Username: {your email address}, Password: +++"
-msgstr "Red Matrix - gjester: brukernavn: {din e-postadresse}, passord: +++"
+#: ../../mod/network.php:79
+msgid "No such group"
+msgstr "Gruppen finnes ikke"
+
+#: ../../mod/network.php:118
+msgid "Search Results For:"
+msgstr "Søkeresultat for:"
+
+#: ../../mod/network.php:172
+msgid "Collection is empty"
+msgstr "Samlingen er tom"
+
+#: ../../mod/network.php:180
+msgid "Collection: "
+msgstr "Samling:"
-#: ../../mod/removeme.php:49
+#: ../../mod/network.php:193
+msgid "Connection: "
+msgstr "Forbindelse:"
+
+#: ../../mod/network.php:196
+msgid "Invalid connection."
+msgstr "Ugyldig forbindelse."
+
+#: ../../mod/removeme.php:29
+msgid ""
+"Channel removals are not allowed within 48 hours of changing the account "
+"password."
+msgstr "Fjerning av kanaler er ikke tillatt innen 48 timer etter endring av kontopassordet."
+
+#: ../../mod/removeme.php:57
msgid "Remove This Channel"
msgstr "Fjern denne kanalen"
-#: ../../mod/removeme.php:50
+#: ../../mod/removeme.php:58
msgid ""
"This will completely remove this channel from the network. Once this has "
"been done it is not recoverable."
msgstr "Dette vil fullstendig fjerne kanalen fra nettverket. NÃ¥r det er gjort kan det ikke angres."
-#: ../../mod/removeme.php:51
+#: ../../mod/removeme.php:59 ../../mod/removeaccount.php:59
msgid "Please enter your password for verification:"
msgstr "Vennligst skriv ditt passord for å få bekreftelse:"
-#: ../../mod/removeme.php:52
+#: ../../mod/removeme.php:60
msgid "Remove this channel and all its clones from the network"
msgstr "Fjern denne kanalen og alle dens kloner fra nettverket"
-#: ../../mod/removeme.php:52
+#: ../../mod/removeme.php:60
msgid ""
"By default only the instance of the channel located on this hub will be "
"removed from the network"
msgstr "Som standard vil bare forekomsten av denne kanalen lokalisert på denne hubben bli fjernet fra nettverket"
-#: ../../mod/removeme.php:53
+#: ../../mod/removeme.php:61
msgid "Remove Channel"
msgstr "Fjern kanal"
@@ -4644,98 +5074,174 @@ msgstr "Feilmeldingen var:"
msgid "Authentication failed."
msgstr "Autentisering mislyktes."
-#: ../../mod/rmagic.php:78
+#: ../../mod/rmagic.php:82
msgid "Remote Authentication"
msgstr "Fjernautentisering"
-#: ../../mod/rmagic.php:79
+#: ../../mod/rmagic.php:83
msgid "Enter your channel address (e.g. channel@example.com)"
msgstr "Skriv din kanaladresse (for eksempel channel@exampel.com)"
-#: ../../mod/rmagic.php:80
+#: ../../mod/rmagic.php:84
msgid "Authenticate"
msgstr "Autentiser"
-#: ../../mod/connect.php:55 ../../mod/connect.php:103
-msgid "Continue"
-msgstr "Fortsett"
+#: ../../mod/filer.php:49
+msgid "- select -"
+msgstr "- velg -"
-#: ../../mod/connect.php:84
-msgid "Premium Channel Setup"
-msgstr "Premiumkanal-oppsett"
+#: ../../mod/photos.php:77
+msgid "Page owner information could not be retrieved."
+msgstr "Informasjon om sideeier kunne ikke hentes."
-#: ../../mod/connect.php:86
-msgid "Enable premium channel connection restrictions"
-msgstr "Slå på restriksjoner for forbindelse med premiumkanal"
+#: ../../mod/photos.php:97
+msgid "Album not found."
+msgstr "Albumet ble ikke funnet."
-#: ../../mod/connect.php:87
-msgid ""
-"Please enter your restrictions or conditions, such as paypal receipt, usage "
-"guidelines, etc."
-msgstr "Vennligst skriv dine restriksjoner og betingelser, slik som PayPal-kvittering, retningslinjer for bruk, og så videre."
+#: ../../mod/photos.php:119 ../../mod/photos.php:672
+msgid "Delete Album"
+msgstr "Slett album"
-#: ../../mod/connect.php:89 ../../mod/connect.php:109
-msgid ""
-"This channel may require additional steps or acknowledgement of the "
-"following conditions prior to connecting:"
-msgstr "Denne kanalen kan kreve ytterligere steg og bekreftelse av følgende betingelser før tilkobling:"
+#: ../../mod/photos.php:159 ../../mod/photos.php:957
+msgid "Delete Photo"
+msgstr "Slett bilde"
-#: ../../mod/connect.php:90
-msgid ""
-"Potential connections will then see the following text before proceeding:"
-msgstr "Potensielle forbindelser vil da se følgende tekst før de går videre:"
+#: ../../mod/photos.php:469
+msgid "No photos selected"
+msgstr "Ingen bilder valgt"
-#: ../../mod/connect.php:91 ../../mod/connect.php:112
-msgid ""
-"By continuing, I certify that I have complied with any instructions provided"
-" on this page."
-msgstr "Ved å fortsette bekrefter jeg at jeg har oppfylt alle instruksjoner gitt på denne siden."
+#: ../../mod/photos.php:513
+msgid "Access to this item is restricted."
+msgstr "Tilgang til dette elementet er begrenset."
-#: ../../mod/connect.php:100
-msgid "(No specific instructions have been provided by the channel owner.)"
-msgstr "(Ingen spesifikke instruksjoner er gitt av kanaleieren.)"
+#: ../../mod/photos.php:552
+#, php-format
+msgid "%1$.2f MB of %2$.2f MB photo storage used."
+msgstr "%1$.2f MB av %2$.2f MB lagringsplass til bilder er brukt."
-#: ../../mod/connect.php:108
-msgid "Restricted or Premium Channel"
-msgstr "Begrenset kanal eller premiumkanal"
+#: ../../mod/photos.php:555
+#, php-format
+msgid "%1$.2f MB photo storage used."
+msgstr "%1$.2f MB lagringsplass til bilder er brukt."
-#: ../../mod/network.php:79
-msgid "No such group"
-msgstr "Gruppen finnes ikke"
+#: ../../mod/photos.php:579
+msgid "Upload Photos"
+msgstr "Last opp bilder"
-#: ../../mod/network.php:118
-msgid "Search Results For:"
-msgstr "Søkeresultat for:"
+#: ../../mod/photos.php:583 ../../mod/photos.php:665 ../../mod/photos.php:943
+msgid "Enter a new album name"
+msgstr "Skriv et nytt albumnavn"
-#: ../../mod/network.php:172
-msgid "Collection is empty"
-msgstr "Samlingen er tom"
+#: ../../mod/photos.php:584 ../../mod/photos.php:666 ../../mod/photos.php:944
+msgid "or select an existing one (doubleclick)"
+msgstr "eller velg et eksisterende album (dobbeltklikk)"
-#: ../../mod/network.php:180
-msgid "Collection: "
-msgstr "Samling:"
+#: ../../mod/photos.php:585
+msgid "Do not show a status post for this upload"
+msgstr "Ikke lag et statusinnlegg for denne oppdateringen"
-#: ../../mod/network.php:193
-msgid "Connection: "
-msgstr "Forbindelse:"
+#: ../../mod/photos.php:613
+msgid "Album name could not be decoded"
+msgstr "Albumnavnet kunne ikke dekodes"
-#: ../../mod/network.php:196
-msgid "Invalid connection."
-msgstr "Ugyldig forbindelse."
+#: ../../mod/photos.php:654 ../../mod/photos.php:1166
+#: ../../mod/photos.php:1182
+msgid "Contact Photos"
+msgstr "Kontaktbilder"
+
+#: ../../mod/photos.php:678
+msgid "Show Newest First"
+msgstr "Vis nyeste først"
+
+#: ../../mod/photos.php:680
+msgid "Show Oldest First"
+msgstr "Vis eldste først"
+
+#: ../../mod/photos.php:707 ../../mod/photos.php:1214
+msgid "View Photo"
+msgstr "Vis foto"
+
+#: ../../mod/photos.php:736
+msgid "Edit Album"
+msgstr "Endre album"
+
+#: ../../mod/photos.php:781
+msgid "Permission denied. Access to this item may be restricted."
+msgstr "Tillatelse avvist. Tilgang til dette elementet kan være begrenset."
+
+#: ../../mod/photos.php:783
+msgid "Photo not available"
+msgstr "Bilde er utilgjengelig"
+
+#: ../../mod/photos.php:841
+msgid "Use as profile photo"
+msgstr "Bruk som profilbilde"
+
+#: ../../mod/photos.php:848
+msgid "Private Photo"
+msgstr "Privat bilde"
+
+#: ../../mod/photos.php:863
+msgid "View Full Size"
+msgstr "Vis i full størrelse"
+
+#: ../../mod/photos.php:905 ../../mod/delegate.php:130 ../../mod/tagrm.php:133
+msgid "Remove"
+msgstr "Fjern"
+
+#: ../../mod/photos.php:937
+msgid "Edit photo"
+msgstr "Endre bilde"
+
+#: ../../mod/photos.php:939
+msgid "Rotate CW (right)"
+msgstr "Roter med klokka (mot høyre)"
+
+#: ../../mod/photos.php:940
+msgid "Rotate CCW (left)"
+msgstr "Roter mot klokka (venstre)"
+
+#: ../../mod/photos.php:947
+msgid "Caption"
+msgstr "Overskrift"
+
+#: ../../mod/photos.php:949
+msgid "Add a Tag"
+msgstr "Legg til merkelapp"
+
+#: ../../mod/photos.php:953
+msgid "Example: @bob, @Barbara_Jensen, @jim@example.com"
+msgstr "Eksempel: @bob, @Barbara_Jensen, @jim@example.com"
+
+#: ../../mod/photos.php:955
+msgid "Flag as adult in album view"
+msgstr "Flag som voksent i albumvisning"
+
+#: ../../mod/photos.php:1132
+msgid "In This Photo:"
+msgstr "I dette bildet:"
+
+#: ../../mod/photos.php:1220
+msgid "View Album"
+msgstr "Vis album"
+
+#: ../../mod/photos.php:1243
+msgid "Recent Photos"
+msgstr "Nye bilder"
#: ../../mod/connections.php:37 ../../mod/connedit.php:64
msgid "Could not access contact record."
msgstr "Fikk ikke tilgang til kontaktinformasjonen."
-#: ../../mod/connections.php:51 ../../mod/connedit.php:78
+#: ../../mod/connections.php:51 ../../mod/connedit.php:86
msgid "Could not locate selected profile."
msgstr "Fant ikke valgt profil."
-#: ../../mod/connections.php:94 ../../mod/connedit.php:131
+#: ../../mod/connections.php:94 ../../mod/connedit.php:140
msgid "Connection updated."
msgstr "Forbindelsen er oppdatert."
-#: ../../mod/connections.php:96 ../../mod/connedit.php:133
+#: ../../mod/connections.php:96 ../../mod/connedit.php:142
msgid "Failed to update connection record."
msgstr "Mislyktes med å oppdatere forbindelsesinformasjonen."
@@ -4759,10 +5265,6 @@ msgstr "Arkivert"
msgid "All"
msgstr "Alle"
-#: ../../mod/connections.php:240 ../../mod/connections.php:320
-msgid "Unconnected"
-msgstr "Ikke tilkoblet"
-
#: ../../mod/connections.php:270
msgid "Suggest new connections"
msgstr "Foreslå nye forbindelser"
@@ -4803,263 +5305,285 @@ msgstr "Vis bare arkiverte forbindelser"
msgid "Only show hidden connections"
msgstr "Vis bare skjulte forbindelser"
-#: ../../mod/connections.php:323
-msgid "Only show one-way connections"
-msgstr "Vis bare en-veis-forbindelser"
-
-#: ../../mod/connections.php:368
+#: ../../mod/connections.php:371
#, php-format
msgid "%1$s [%2$s]"
msgstr "%1$s [%2$s]"
-#: ../../mod/connections.php:369
-msgid "Edit contact"
-msgstr "Endre kontakt"
+#: ../../mod/connections.php:372
+msgid "Edit connection"
+msgstr "Endre forbindelse"
-#: ../../mod/connections.php:390
+#: ../../mod/connections.php:410
msgid "Search your connections"
msgstr "Søk blant dine forbindelser"
-#: ../../mod/connections.php:391
+#: ../../mod/connections.php:411
msgid "Finding: "
msgstr "Fant:"
+#: ../../mod/manage.php:136
+#, php-format
+msgid "You have created %1$.0f of %2$.0f allowed channels."
+msgstr "Du har laget %1$.0f av %2$.0f tillatte kanaler."
+
+#: ../../mod/manage.php:144
+msgid "Create a new channel"
+msgstr "Lag en ny kanal"
+
+#: ../../mod/manage.php:149
+msgid "Current Channel"
+msgstr "Gjeldende kanal"
+
+#: ../../mod/manage.php:151
+msgid "Attach to one of your channels by selecting it."
+msgstr "Bytt til en av dine kanaler ved å velge den."
+
+#: ../../mod/manage.php:152
+msgid "Default Channel"
+msgstr "Standardkanal"
+
+#: ../../mod/manage.php:153
+msgid "Make Default"
+msgstr "Gjør til standard"
+
#: ../../mod/rpost.php:97 ../../mod/editpost.php:42
msgid "Edit post"
msgstr "Endre innlegg"
-#: ../../mod/connedit.php:243
+#: ../../mod/connedit.php:189
+msgid "is now connected to"
+msgstr "er nå forbundet til"
+
+#: ../../mod/connedit.php:310
msgid "Could not access address book record."
msgstr "Fikk ikke tilgang til informasjonen i adresseboken."
-#: ../../mod/connedit.php:257
+#: ../../mod/connedit.php:324
msgid "Refresh failed - channel is currently unavailable."
msgstr "Oppfrisking mislyktes - kanalen er for øyeblikket utilgjengelig."
-#: ../../mod/connedit.php:264
+#: ../../mod/connedit.php:331
msgid "Channel has been unblocked"
msgstr "Kanalen er ikke blokkert lenger"
-#: ../../mod/connedit.php:265
+#: ../../mod/connedit.php:332
msgid "Channel has been blocked"
msgstr "Kanalen har blitt blokkert"
-#: ../../mod/connedit.php:269 ../../mod/connedit.php:281
-#: ../../mod/connedit.php:293 ../../mod/connedit.php:305
-#: ../../mod/connedit.php:320
+#: ../../mod/connedit.php:336 ../../mod/connedit.php:348
+#: ../../mod/connedit.php:360 ../../mod/connedit.php:372
+#: ../../mod/connedit.php:388
msgid "Unable to set address book parameters."
msgstr "Ikke i stand til å angi parametre for adresseboken."
-#: ../../mod/connedit.php:276
+#: ../../mod/connedit.php:343
msgid "Channel has been unignored"
msgstr "Kanalen er ikke lenger ignorert"
-#: ../../mod/connedit.php:277
+#: ../../mod/connedit.php:344
msgid "Channel has been ignored"
msgstr "Kanalen blir ignorert"
-#: ../../mod/connedit.php:288
+#: ../../mod/connedit.php:355
msgid "Channel has been unarchived"
msgstr "Kanalen er ikke lenger arkivert"
-#: ../../mod/connedit.php:289
+#: ../../mod/connedit.php:356
msgid "Channel has been archived"
msgstr "Kanalen er arkivert"
-#: ../../mod/connedit.php:300
+#: ../../mod/connedit.php:367
msgid "Channel has been unhidden"
msgstr "Kanalen er ikke lenger skjult"
-#: ../../mod/connedit.php:301
+#: ../../mod/connedit.php:368
msgid "Channel has been hidden"
msgstr "Kanalen er blitt skjult"
-#: ../../mod/connedit.php:315
+#: ../../mod/connedit.php:383
msgid "Channel has been approved"
msgstr "Kanalen har blitt godkjent"
-#: ../../mod/connedit.php:316
+#: ../../mod/connedit.php:384
msgid "Channel has been unapproved"
msgstr "Kanalen er ikke lenger godkjent"
-#: ../../mod/connedit.php:334
+#: ../../mod/connedit.php:412
msgid "Connection has been removed."
msgstr "Forbindelsen har blitt fjernet."
-#: ../../mod/connedit.php:354
+#: ../../mod/connedit.php:432
#, php-format
msgid "View %s's profile"
msgstr "Vis %s sin profil"
-#: ../../mod/connedit.php:358
+#: ../../mod/connedit.php:436
msgid "Refresh Permissions"
msgstr "Oppfrisk tillatelser"
-#: ../../mod/connedit.php:361
+#: ../../mod/connedit.php:439
msgid "Fetch updated permissions"
msgstr "Hent oppdaterte tillatelser"
-#: ../../mod/connedit.php:365
+#: ../../mod/connedit.php:443
msgid "Recent Activity"
msgstr "Nylig aktivitet"
-#: ../../mod/connedit.php:368
+#: ../../mod/connedit.php:446
msgid "View recent posts and comments"
msgstr "Vis nylige innlegg og kommentarer"
-#: ../../mod/connedit.php:372 ../../mod/connedit.php:515
-#: ../../mod/admin.php:760
+#: ../../mod/connedit.php:450 ../../mod/connedit.php:594
+#: ../../mod/admin.php:732
msgid "Unblock"
msgstr "Ikke blokker lenger"
-#: ../../mod/connedit.php:372 ../../mod/connedit.php:515
-#: ../../mod/admin.php:759
+#: ../../mod/connedit.php:450 ../../mod/connedit.php:594
+#: ../../mod/admin.php:731
msgid "Block"
msgstr "Blokker"
-#: ../../mod/connedit.php:375
+#: ../../mod/connedit.php:453
msgid "Block or Unblock this connection"
msgstr "Blokker eller fjern blokkering av denne forbindelsen "
-#: ../../mod/connedit.php:379 ../../mod/connedit.php:516
+#: ../../mod/connedit.php:457 ../../mod/connedit.php:595
msgid "Unignore"
msgstr "Ikke ignorer lenger"
-#: ../../mod/connedit.php:379 ../../mod/connedit.php:516
+#: ../../mod/connedit.php:457 ../../mod/connedit.php:595
#: ../../mod/notifications.php:51
msgid "Ignore"
msgstr "Ignorer"
-#: ../../mod/connedit.php:382
+#: ../../mod/connedit.php:460
msgid "Ignore or Unignore this connection"
msgstr "Ignorer eller fjern ignorering av denne forbindelsen"
-#: ../../mod/connedit.php:385
+#: ../../mod/connedit.php:463
msgid "Unarchive"
msgstr "Ikke arkiver lenger"
-#: ../../mod/connedit.php:385
+#: ../../mod/connedit.php:463
msgid "Archive"
msgstr "Arkiver"
-#: ../../mod/connedit.php:388
+#: ../../mod/connedit.php:466
msgid "Archive or Unarchive this connection"
msgstr "Arkiver eller fjern arkivering av denne forbindelsen"
-#: ../../mod/connedit.php:391
+#: ../../mod/connedit.php:469
msgid "Unhide"
msgstr "Ikke skjul lenger"
-#: ../../mod/connedit.php:391
+#: ../../mod/connedit.php:469
msgid "Hide"
msgstr "Skjul"
-#: ../../mod/connedit.php:394
+#: ../../mod/connedit.php:472
msgid "Hide or Unhide this connection"
msgstr "Skjul eller fjern skjuling av denne forbindelsen"
-#: ../../mod/connedit.php:401
+#: ../../mod/connedit.php:479
msgid "Delete this connection"
msgstr "Slett denne forbindelsen"
-#: ../../mod/connedit.php:444 ../../mod/connedit.php:473
+#: ../../mod/connedit.php:522 ../../mod/connedit.php:552
msgid "Approve this connection"
msgstr "Godta denne forbindelsen"
-#: ../../mod/connedit.php:444
+#: ../../mod/connedit.php:522
msgid "Accept connection to allow communication"
msgstr "Godta denne forbindelsen for å tillate kommunikasjon"
-#: ../../mod/connedit.php:460
-msgid "Automatic Permissions Settings"
-msgstr "Automatiske innstillinger for tillatelser"
-
-#: ../../mod/connedit.php:460
+#: ../../mod/connedit.php:538
#, php-format
msgid "Connections: settings for %s"
msgstr "Forbindelser: innstillinger for %s"
-#: ../../mod/connedit.php:464
-msgid ""
-"When receiving a channel introduction, any permissions provided here will be"
-" applied to the new connection automatically and the introduction approved. "
-"Leave this page if you do not wish to use this feature."
-msgstr "Når du mottar en kanal-introduksjon, så vil alle tillatelser gitt her gjelde for den nye forbindelsen automatisk og introduksjonen godkjennes. Forlat denne siden hvis du ikke ønsker å bruke denne egenskapen."
+#: ../../mod/connedit.php:539
+msgid "Apply these permissions automatically"
+msgstr "Bruk disse tillatelsene automatisk"
-#: ../../mod/connedit.php:466
+#: ../../mod/connedit.php:543
+msgid "Apply the permissions indicated on this page to all new connections."
+msgstr "Bruk tillatelsene angitt på denne siden på alle nye forbindelser."
+
+#: ../../mod/connedit.php:545
msgid "Slide to adjust your degree of friendship"
msgstr "Flytt for å justere din grad av vennskap"
-#: ../../mod/connedit.php:472
+#: ../../mod/connedit.php:551
msgid "inherited"
msgstr "arvet"
-#: ../../mod/connedit.php:474
+#: ../../mod/connedit.php:553
msgid "Connection has no individual permissions!"
msgstr "Forbindelsen har ingen individuelle tillatelser!"
-#: ../../mod/connedit.php:475
+#: ../../mod/connedit.php:554
msgid ""
"This may be appropriate based on your <a href=\"settings\">privacy "
"settings</a>, though you may wish to review the \"Advanced Permissions\"."
msgstr "Dette kan være riktig basert på dine <a href=\"settings\">personverninnstillinger</a>, men kanskje du bør se over \"Avanserte tillatelser\"."
-#: ../../mod/connedit.php:477
+#: ../../mod/connedit.php:556
msgid "Profile Visibility"
msgstr "Profilens synlighet"
-#: ../../mod/connedit.php:478
+#: ../../mod/connedit.php:557
#, php-format
msgid ""
"Please choose the profile you would like to display to %s when viewing your "
"profile securely."
msgstr "Vennligst velg profilen du ønsker å vise %s når profilen din ses på en sikret måte. "
-#: ../../mod/connedit.php:479
+#: ../../mod/connedit.php:558
msgid "Contact Information / Notes"
msgstr "Kontaktinformasjon / Merknader"
-#: ../../mod/connedit.php:480
+#: ../../mod/connedit.php:559
msgid "Edit contact notes"
msgstr "Endre kontaktmerknader"
-#: ../../mod/connedit.php:482
+#: ../../mod/connedit.php:561
msgid "Their Settings"
msgstr "Deres innstillinger"
-#: ../../mod/connedit.php:483
+#: ../../mod/connedit.php:562
msgid "My Settings"
msgstr "Mine innstillinger"
-#: ../../mod/connedit.php:485
+#: ../../mod/connedit.php:564
msgid "Clear/Disable Automatic Permissions"
msgstr "Tøm/Skru av Automatiske tillatelser"
-#: ../../mod/connedit.php:486
+#: ../../mod/connedit.php:565
msgid "Forum Members"
msgstr "Forummedlemmer"
-#: ../../mod/connedit.php:487
+#: ../../mod/connedit.php:566
msgid "Soapbox"
msgstr "Talerstol"
-#: ../../mod/connedit.php:488
+#: ../../mod/connedit.php:567
msgid "Full Sharing (typical social network permissions)"
msgstr "Full deling (typiske tillatelser i sosiale nettverk)"
-#: ../../mod/connedit.php:489
+#: ../../mod/connedit.php:568
msgid "Cautious Sharing "
msgstr "Forsiktig deling"
-#: ../../mod/connedit.php:490
+#: ../../mod/connedit.php:569
msgid "Follow Only"
msgstr "Bare følg"
-#: ../../mod/connedit.php:491
+#: ../../mod/connedit.php:570
msgid "Individual Permissions"
msgstr "Individuelle tillatelser"
-#: ../../mod/connedit.php:492
+#: ../../mod/connedit.php:571
msgid ""
"Some permissions may be inherited from your channel <a "
"href=\"settings\">privacy settings</a>, which have higher priority than "
@@ -5067,894 +5591,1040 @@ msgid ""
"have no effect."
msgstr "Noen tillatelser kan være arvet fra din kanals <a ref=\"settings\">personverninnstillinger</a>, som har høyere prioritet enn individuelle innstillinger. Å endre arvede innstillinger på denne siden vil ikke ha noen effekt."
-#: ../../mod/connedit.php:493
+#: ../../mod/connedit.php:572
msgid "Advanced Permissions"
msgstr "Avanserte tillatelser"
-#: ../../mod/connedit.php:494
+#: ../../mod/connedit.php:573
msgid "Simple Permissions (select one and submit)"
msgstr "Enkle tillatelser (velg en og lagre)"
-#: ../../mod/connedit.php:498
+#: ../../mod/connedit.php:577
#, php-format
msgid "Visit %s's profile - %s"
msgstr "Besøk %s sin profil - %s"
-#: ../../mod/connedit.php:499
+#: ../../mod/connedit.php:578
msgid "Block/Unblock contact"
msgstr "Blokker/Ikke blokker kontakt"
-#: ../../mod/connedit.php:500
+#: ../../mod/connedit.php:579
msgid "Ignore contact"
msgstr "Ignorer kontakt"
-#: ../../mod/connedit.php:501
+#: ../../mod/connedit.php:580
msgid "Repair URL settings"
msgstr "Reparer URL-innstillinger"
-#: ../../mod/connedit.php:502
+#: ../../mod/connedit.php:581
msgid "View conversations"
msgstr "Vis samtaler"
-#: ../../mod/connedit.php:504
+#: ../../mod/connedit.php:583
msgid "Delete contact"
msgstr "Slett kontakt"
-#: ../../mod/connedit.php:507
+#: ../../mod/connedit.php:586
msgid "Last update:"
msgstr "Siste oppdatering:"
-#: ../../mod/connedit.php:509
+#: ../../mod/connedit.php:588
msgid "Update public posts"
msgstr "Oppdater offentlige innlegg"
-#: ../../mod/connedit.php:511
+#: ../../mod/connedit.php:590
msgid "Update now"
msgstr "Oppdater nå"
-#: ../../mod/connedit.php:517
+#: ../../mod/connedit.php:596
msgid "Currently blocked"
msgstr "For øyeblikket blokkert"
-#: ../../mod/connedit.php:518
+#: ../../mod/connedit.php:597
msgid "Currently ignored"
msgstr "For øyeblikket ignorert"
-#: ../../mod/connedit.php:519
+#: ../../mod/connedit.php:598
msgid "Currently archived"
msgstr "For øyeblikket arkivert"
-#: ../../mod/connedit.php:520
+#: ../../mod/connedit.php:599
msgid "Currently pending"
msgstr "For øyeblikket ventende"
-#: ../../mod/connedit.php:521
+#: ../../mod/connedit.php:600
msgid "Hide this contact from others"
msgstr "Skjul denne kontakten for andre"
-#: ../../mod/connedit.php:521
+#: ../../mod/connedit.php:600
msgid ""
"Replies/likes to your public posts <strong>may</strong> still be visible"
msgstr "Svar/likes på dine offentlige innlegg <strong>kan</strong> fortsatt være synlige"
-#: ../../mod/delegate.php:95
-msgid "No potential page delegates located."
-msgstr "Ingen potensielle sidedelegater er funnet."
+#: ../../mod/openid.php:26
+msgid "OpenID protocol error. No ID returned."
+msgstr "OpenID protokollfeil. Ingen ID ble returnert."
-#: ../../mod/delegate.php:121
-msgid "Delegate Page Management"
-msgstr "Deleger sidehåndtering"
+#: ../../mod/thing.php:96
+msgid "Thing updated"
+msgstr "Tingen er oppdatert"
-#: ../../mod/delegate.php:123
-msgid ""
-"Delegates are able to manage all aspects of this account/page except for "
-"basic account settings. Please do not delegate your personal account to "
-"anybody that you do not trust completely."
-msgstr "Delegater kan håndtere alle sider ved denne kontoen/siden unntatt grunnleggende kontoinformasjon. Vennligst ikke deleger din personlige konto til noen du ikke stoler fullstendig på."
+#: ../../mod/thing.php:156
+msgid "Object store: failed"
+msgstr "Objektlagring: mislyktes"
-#: ../../mod/delegate.php:124
-msgid "Existing Page Managers"
-msgstr "Eksisterende sidehåndterere"
+#: ../../mod/thing.php:160
+msgid "Thing added"
+msgstr "Ting lagt til"
-#: ../../mod/delegate.php:126
-msgid "Existing Page Delegates"
-msgstr "Eksisterende sidedelegater"
+#: ../../mod/thing.php:180
+#, php-format
+msgid "OBJ: %1$s %2$s %3$s"
+msgstr "OBJ: %1$s %2$s %3$s"
-#: ../../mod/delegate.php:128
-msgid "Potential Delegates"
-msgstr "Potensielle sidedelegater"
+#: ../../mod/thing.php:232
+msgid "Show Thing"
+msgstr "Vis ting"
-#: ../../mod/delegate.php:130 ../../mod/tagrm.php:93 ../../mod/photos.php:906
-msgid "Remove"
-msgstr "Fjern"
+#: ../../mod/thing.php:239
+msgid "item not found."
+msgstr "element ble ikke funnet."
-#: ../../mod/delegate.php:131
-msgid "Add"
-msgstr "Legg til"
+#: ../../mod/thing.php:270
+msgid "Edit Thing"
+msgstr "Endre ting"
-#: ../../mod/delegate.php:132
-msgid "No entries."
-msgstr "Ingen oppføringer."
+#: ../../mod/thing.php:272 ../../mod/thing.php:319
+msgid "Select a profile"
+msgstr "Velg en profil"
-#: ../../mod/search.php:13 ../../mod/directory.php:15
-#: ../../mod/dirprofile.php:9 ../../mod/display.php:9
-#: ../../mod/viewconnections.php:17 ../../mod/photos.php:443
-msgid "Public access denied."
-msgstr "Offentlig tilgang avvist."
+#: ../../mod/thing.php:276 ../../mod/thing.php:322
+msgid "Post an activity"
+msgstr "Legg inn en aktivitet"
-#: ../../mod/directory.php:146 ../../mod/dirprofile.php:95
-msgid "Gender: "
-msgstr "Kjønn:"
+#: ../../mod/thing.php:276 ../../mod/thing.php:322
+msgid "Only sends to viewers of the applicable profile"
+msgstr "Sender bare til seere av den aktuelle profilen"
-#: ../../mod/directory.php:207
-msgid "Finding:"
-msgstr "Finner:"
+#: ../../mod/thing.php:278 ../../mod/thing.php:324
+msgid "Name of thing e.g. something"
+msgstr "Navn på ting for eksempel noe"
-#: ../../mod/directory.php:215
-msgid "next page"
-msgstr "neste side"
+#: ../../mod/thing.php:280 ../../mod/thing.php:325
+msgid "URL of thing (optional)"
+msgstr "URL til ting (valgfritt)"
-#: ../../mod/directory.php:215
-msgid "previous page"
-msgstr "forrige side"
+#: ../../mod/thing.php:282 ../../mod/thing.php:326
+msgid "URL for photo of thing (optional)"
+msgstr "URL til bilde av ting (valgfritt)"
-#: ../../mod/directory.php:222
-msgid "No entries (some entries may be hidden)."
-msgstr "Ingen oppføringer (noen oppføringer kan være skjult)."
+#: ../../mod/thing.php:317
+msgid "Add Thing to your Profile"
+msgstr "Legg til ting i din profil"
-#: ../../mod/dirprofile.php:108
-msgid "Status: "
-msgstr "Status:"
+#: ../../mod/lostpass.php:15
+msgid "No valid account found."
+msgstr "Ingen gyldig konto funnet."
-#: ../../mod/dirprofile.php:109
-msgid "Sexual Preference: "
-msgstr "Seksuelle preferanser:"
+#: ../../mod/lostpass.php:29
+msgid "Password reset request issued. Check your email."
+msgstr "Forespørsel om å tilbakestille passord er mottatt. Sjekk e-posten din."
-#: ../../mod/dirprofile.php:111
-msgid "Homepage: "
-msgstr "Hjemmeside:"
+#: ../../mod/lostpass.php:35 ../../mod/lostpass.php:102
+#, php-format
+msgid "Site Member (%s)"
+msgstr "Nettstedsmedlem (%s)"
-#: ../../mod/dirprofile.php:112
-msgid "Hometown: "
-msgstr "Hjemby:"
+#: ../../mod/lostpass.php:40
+#, php-format
+msgid "Password reset requested at %s"
+msgstr "Forespurt om å tilbakestille passord hos %s"
-#: ../../mod/dirprofile.php:114
-msgid "About: "
-msgstr "Om:"
+#: ../../mod/lostpass.php:63
+msgid ""
+"Request could not be verified. (You may have previously submitted it.) "
+"Password reset failed."
+msgstr "Forespørsel kunne ikke bekreftes. (Du kan ha sendt den inn tidligere.) Tilbakestilling av passord mislyktes."
-#: ../../mod/dirprofile.php:162
-msgid "Keywords: "
-msgstr "Nøkkelord:"
+#: ../../mod/lostpass.php:85 ../../boot.php:1494
+msgid "Password Reset"
+msgstr "Tilbakestill passord"
+
+#: ../../mod/lostpass.php:86
+msgid "Your password has been reset as requested."
+msgstr "Ditt passord har blitt tilbakestilt som forespurt."
+
+#: ../../mod/lostpass.php:87
+msgid "Your new password is"
+msgstr "Ditt nye passord er"
+
+#: ../../mod/lostpass.php:88
+msgid "Save or copy your new password - and then"
+msgstr "Lagre eller kopier ditt nye passord, og deretter kan du"
+
+#: ../../mod/lostpass.php:89
+msgid "click here to login"
+msgstr "klikke her for å logge inn"
+
+#: ../../mod/lostpass.php:90
+msgid ""
+"Your password may be changed from the <em>Settings</em> page after "
+"successful login."
+msgstr "Ditt passord kan endres på siden <em>Innstillinger</em> etter vellykket innlogging."
+
+#: ../../mod/lostpass.php:107
+#, php-format
+msgid "Your password has changed at %s"
+msgstr "Ditt passord er endret hos %s"
+
+#: ../../mod/lostpass.php:122
+msgid "Forgot your Password?"
+msgstr "Glemt passord ditt?"
+
+#: ../../mod/lostpass.php:123
+msgid ""
+"Enter your email address and submit to have your password reset. Then check "
+"your email for further instructions."
+msgstr "Skriv e-postadressen din og send inn for å tilbakestille passordet ditt. Sjekk deretter din e-post for videre instruksjoner."
+
+#: ../../mod/lostpass.php:124
+msgid "Email Address"
+msgstr "E-postadresse"
+
+#: ../../mod/lostpass.php:125
+msgid "Reset"
+msgstr "Tilbakestill"
+
+#: ../../mod/bookmarks.php:38
+msgid "Bookmark added"
+msgstr "Bokmerke lagt til"
+
+#: ../../mod/bookmarks.php:60
+msgid "My Bookmarks"
+msgstr "Mine bokmerker"
+
+#: ../../mod/bookmarks.php:71
+msgid "My Connections Bookmarks"
+msgstr "Mine forbindelsers bokmerker"
#: ../../mod/dirsearch.php:21
msgid "This site is not a directory server"
msgstr "Dette nettstedet er ikke en katalogtjener"
-#: ../../mod/setup.php:162
-msgid "Red Matrix Server - Setup"
-msgstr "Red Matrix tjener - oppsett"
+#: ../../mod/cloud.php:130
+msgid "RedMatrix - Guests: Username: {your email address}, Password: +++"
+msgstr "RedMatrix - gjester: brukernavn: {din e-postadresse}, passord: +++"
-#: ../../mod/setup.php:168
-msgid "Could not connect to database."
-msgstr "Fikk ikke kontakt med databasen."
+#: ../../mod/ping.php:257
+msgid "sent you a private message"
+msgstr "sendte deg en privat melding"
-#: ../../mod/setup.php:172
-msgid ""
-"Could not connect to specified site URL. Possible SSL certificate or DNS "
-"issue."
-msgstr "Fikk ikke kontakt med det angitte nettstedets URL. Problemet kan muligens skyldes SSL-sertifikatet eller DNS."
+#: ../../mod/ping.php:308
+msgid "added your channel"
+msgstr "la til din kanal"
-#: ../../mod/setup.php:179
-msgid "Could not create table."
-msgstr "Kunne ikke lage tabellen."
+#: ../../mod/ping.php:349
+msgid "posted an event"
+msgstr "la ut en hendelse"
-#: ../../mod/setup.php:185
-msgid "Your site database has been installed."
-msgstr "Databasen til ditt nettsted har blitt installert."
+#: ../../mod/editblock.php:79 ../../mod/editblock.php:95
+#: ../../mod/editlayout.php:78 ../../mod/editpost.php:20
+#: ../../mod/editwebpage.php:77
+msgid "Item not found"
+msgstr "Elementet ble ikke funnet."
-#: ../../mod/setup.php:190
-msgid ""
-"You may need to import the file \"install/database.sql\" manually using "
-"phpmyadmin or mysql."
-msgstr "Du må kanskje importere filen \"install/database.sql\" manuelt ved hjelp av phpmyadmin eller mysql."
+#: ../../mod/editblock.php:115
+msgid "Edit Block"
+msgstr "Endre byggekloss"
-#: ../../mod/setup.php:191 ../../mod/setup.php:260 ../../mod/setup.php:655
-msgid "Please see the file \"install/INSTALL.txt\"."
-msgstr "Vennligst les filen \"install/INSTALL.txt\"."
+#: ../../mod/editblock.php:125
+msgid "Delete block?"
+msgstr "Slett byggeklossen?"
-#: ../../mod/setup.php:257
-msgid "System check"
-msgstr "Systemsjekk"
+#: ../../mod/editblock.php:147 ../../mod/editlayout.php:143
+#: ../../mod/editpost.php:116 ../../mod/editwebpage.php:178
+msgid "Insert YouTube video"
+msgstr "Sett inn YouTube-video"
-#: ../../mod/setup.php:261 ../../mod/events.php:380
-msgid "Next"
-msgstr "Neste"
+#: ../../mod/editblock.php:148 ../../mod/editlayout.php:144
+#: ../../mod/editpost.php:117 ../../mod/editwebpage.php:179
+msgid "Insert Vorbis [.ogg] video"
+msgstr "Sett inn Vorbis [.ogg] video"
-#: ../../mod/setup.php:262
-msgid "Check again"
-msgstr "Sjekk igjen"
+#: ../../mod/editblock.php:149 ../../mod/editlayout.php:145
+#: ../../mod/editpost.php:118 ../../mod/editwebpage.php:180
+msgid "Insert Vorbis [.ogg] audio"
+msgstr "Legg i"
-#: ../../mod/setup.php:284
-msgid "Database connection"
-msgstr "Databaseforbindelse"
+#: ../../mod/editblock.php:183
+msgid "Delete Block"
+msgstr "Slett byggekloss"
-#: ../../mod/setup.php:285
-msgid ""
-"In order to install Red Matrix we need to know how to connect to your "
-"database."
-msgstr "For å installere Red Matrix må du oppgi hvordan din database kan kontaktes."
+#: ../../mod/pdledit.php:13
+msgid "Layout updated."
+msgstr "Layout er oppdatert."
-#: ../../mod/setup.php:286
-msgid ""
-"Please contact your hosting provider or site administrator if you have "
-"questions about these settings."
-msgstr "Vennligst kontakt din nettstedstilbyder eller nettstedsadministrator hvis du har spørsmål om disse innstillingene."
+#: ../../mod/pdledit.php:28 ../../mod/pdledit.php:53
+msgid "Edit System Page Description"
+msgstr "Endre beskrivelsen av systemsiden"
-#: ../../mod/setup.php:287
-msgid ""
-"The database you specify below should already exist. If it does not, please "
-"create it before continuing."
-msgstr "Databasen du oppgir nedenfor må finnes på forhånd. Hvis den ikke finnes, vennligst lag den før du fortsetter."
+#: ../../mod/pdledit.php:48
+msgid "Layout not found."
+msgstr "Layouten ble ikke funnet."
-#: ../../mod/setup.php:291
-msgid "Database Server Name"
-msgstr "Navn på databasetjener"
+#: ../../mod/pdledit.php:54
+msgid "Module Name:"
+msgstr "Modulnavn:"
-#: ../../mod/setup.php:291
-msgid "Default is localhost"
-msgstr "Standard er localhost"
+#: ../../mod/pdledit.php:55 ../../mod/layouts.php:107
+msgid "Layout Help"
+msgstr "Layout-hjelp"
-#: ../../mod/setup.php:292
-msgid "Database Port"
-msgstr "Databaseport"
+#: ../../mod/editlayout.php:108
+msgid "Edit Layout"
+msgstr "Endre layout"
-#: ../../mod/setup.php:292
-msgid "Communication port number - use 0 for default"
-msgstr "Kommunikasjonsportnummer - bruk 0 for standard"
+#: ../../mod/editlayout.php:117
+msgid "Delete layout?"
+msgstr "Slett layout?"
-#: ../../mod/setup.php:293
-msgid "Database Login Name"
-msgstr "Database innloggingsnavn"
+#: ../../mod/editlayout.php:178
+msgid "Delete Layout"
+msgstr "Slett layout"
-#: ../../mod/setup.php:294
-msgid "Database Login Password"
-msgstr "Database innloggingspassord"
+#: ../../mod/editpost.php:31
+msgid "Item is not editable"
+msgstr "Elementet kan ikke endres"
-#: ../../mod/setup.php:295
-msgid "Database Name"
-msgstr "Databasenavn"
+#: ../../mod/editpost.php:53
+msgid "Delete item?"
+msgstr "Slett element?"
-#: ../../mod/setup.php:297 ../../mod/setup.php:339
-msgid "Site administrator email address"
-msgstr "E-postadressen til administrator ved nettstedet"
+#: ../../mod/settings.php:73
+msgid "Name is required"
+msgstr "Navn er påkrevd"
-#: ../../mod/setup.php:297 ../../mod/setup.php:339
-msgid ""
-"Your account email address must match this in order to use the web admin "
-"panel."
-msgstr "Din konto sin e-postadresse må være lik denne for å kunne bruke web-administrasjonspanelet."
+#: ../../mod/settings.php:77
+msgid "Key and Secret are required"
+msgstr "Nøkkel og hemmelighet er påkrevd"
-#: ../../mod/setup.php:298 ../../mod/setup.php:341
-msgid "Website URL"
-msgstr "Nettstedets URL"
+#: ../../mod/settings.php:197
+msgid "Passwords do not match. Password unchanged."
+msgstr "Passordene stemmer ikke overens. Passord uforandret."
-#: ../../mod/setup.php:298 ../../mod/setup.php:341
-msgid "Please use SSL (https) URL if available."
-msgstr "Vennligst bruk SSL (https) URL hvis tilgjengelig."
+#: ../../mod/settings.php:201
+msgid "Empty passwords are not allowed. Password unchanged."
+msgstr "Tomme passord er ikke tillatt. Passord uforandret."
-#: ../../mod/setup.php:301 ../../mod/setup.php:344
-msgid "Please select a default timezone for your website"
-msgstr "Vennligst velg en standard tidssone for ditt nettsted"
+#: ../../mod/settings.php:215
+msgid "Password changed."
+msgstr "Passord endret."
-#: ../../mod/setup.php:328
-msgid "Site settings"
-msgstr "Nettstedets innstillinger"
+#: ../../mod/settings.php:217
+msgid "Password update failed. Please try again."
+msgstr "Passord oppdatering mislyktes. Vennligst prøv igjen."
-#: ../../mod/setup.php:387
-msgid "Could not find a command line version of PHP in the web server PATH."
-msgstr "Fant ikke en kommandolinjeversjon av PHP i webtjenerens sti (PATH)."
+#: ../../mod/settings.php:231
+msgid "Not valid email."
+msgstr "Ikke gyldig e-post."
-#: ../../mod/setup.php:388
-msgid ""
-"If you don't have a command line version of PHP installed on server, you "
-"will not be able to run background polling via cron."
-msgstr "Hvis du ikke har en kommandolinjeversjon av PHP installert på tjeneren, så vil du ikke kunne kjøre bakgrunnshenting via cron."
+#: ../../mod/settings.php:234
+msgid "Protected email address. Cannot change to that email."
+msgstr "Beskyttet e-postadresse. Kan ikke endre til den e-postadressen."
-#: ../../mod/setup.php:392
-msgid "PHP executable path"
-msgstr "PHP-kjørefilens sti"
+#: ../../mod/settings.php:243
+msgid "System failure storing new email. Please try again."
+msgstr "Systemfeil ved lagring av ny e-post. Vennligst prøv igjen."
-#: ../../mod/setup.php:392
-msgid ""
-"Enter full path to php executable. You can leave this blank to continue the "
-"installation."
-msgstr "Skriv full sti til kjørefilen for PHP. Du kan la denne stå blank for å fortsette installasjonen."
+#: ../../mod/settings.php:479
+msgid "Settings updated."
+msgstr "Innstillinger oppdatert."
-#: ../../mod/setup.php:397
-msgid "Command line PHP"
-msgstr "Kommandolinje PHP"
+#: ../../mod/settings.php:548 ../../mod/settings.php:574
+#: ../../mod/settings.php:610
+msgid "Add application"
+msgstr "Legg til program"
-#: ../../mod/setup.php:406
-msgid ""
-"The command line version of PHP on your system does not have "
-"\"register_argc_argv\" enabled."
-msgstr "Kommandolinjeversjonen av PHP på ditt system har ikke \"register_argc_argv\" påskrudd."
+#: ../../mod/settings.php:551
+msgid "Name of application"
+msgstr "Navn på program"
-#: ../../mod/setup.php:407
-msgid "This is required for message delivery to work."
-msgstr "Dette er påkrevd for at meldingslevering skal virke."
+#: ../../mod/settings.php:552 ../../mod/settings.php:578
+msgid "Consumer Key"
+msgstr "Consumer Key"
-#: ../../mod/setup.php:409
-msgid "PHP register_argc_argv"
-msgstr "PHP register_argc_argv"
+#: ../../mod/settings.php:552 ../../mod/settings.php:553
+msgid "Automatically generated - change if desired. Max length 20"
+msgstr "Automatisk laget - kan endres om du vil. Største lengde 20"
-#: ../../mod/setup.php:430
-msgid ""
-"Error: the \"openssl_pkey_new\" function on this system is not able to "
-"generate encryption keys"
-msgstr "Feil: \"openssl_pkey_new\"-funksjonen på dette systemet er ikke i stand til å lage krypteringsnøkler"
+#: ../../mod/settings.php:553 ../../mod/settings.php:579
+msgid "Consumer Secret"
+msgstr "Consumer Secret"
+
+#: ../../mod/settings.php:554 ../../mod/settings.php:580
+msgid "Redirect"
+msgstr "Omdirigering"
-#: ../../mod/setup.php:431
+#: ../../mod/settings.php:554
msgid ""
-"If running under Windows, please see "
-"\"http://www.php.net/manual/en/openssl.installation.php\"."
-msgstr "Ved kjøring på Windows, vennligst se \"http://www.php.net/manual/en/openssl.installation.php\"."
+"Redirect URI - leave blank unless your application specifically requires "
+"this"
+msgstr "Omdirigerings-URI - la stå tomt hvis ikke ditt program spesifikt krever dette"
-#: ../../mod/setup.php:433
-msgid "Generate encryption keys"
-msgstr "Lag krypteringsnøkler"
+#: ../../mod/settings.php:555 ../../mod/settings.php:581
+msgid "Icon url"
+msgstr "Ikon-URL"
-#: ../../mod/setup.php:440
-msgid "libCurl PHP module"
-msgstr "libCurl PHP-modul"
+#: ../../mod/settings.php:555
+msgid "Optional"
+msgstr "Valgfritt"
-#: ../../mod/setup.php:441
-msgid "GD graphics PHP module"
-msgstr "GD graphics PHP-modul"
+#: ../../mod/settings.php:566
+msgid "You can't edit this application."
+msgstr "Du kan ikke endre dette programmet."
-#: ../../mod/setup.php:442
-msgid "OpenSSL PHP module"
-msgstr "OpenSSL PHP-modul"
+#: ../../mod/settings.php:609
+msgid "Connected Apps"
+msgstr "Tilkoblede app-er"
-#: ../../mod/setup.php:443
-msgid "mysqli PHP module"
-msgstr "mysqli PHP-modul"
+#: ../../mod/settings.php:613
+msgid "Client key starts with"
+msgstr "Klientnøkkel starter med"
-#: ../../mod/setup.php:444
-msgid "mb_string PHP module"
-msgstr "mb_string PHP-modul"
+#: ../../mod/settings.php:614
+msgid "No name"
+msgstr "Ikke noe navn"
-#: ../../mod/setup.php:445
-msgid "mcrypt PHP module"
-msgstr "mcrypt PHP-modul"
+#: ../../mod/settings.php:615
+msgid "Remove authorization"
+msgstr "Fjern tillatelse"
-#: ../../mod/setup.php:450 ../../mod/setup.php:452
-msgid "Apache mod_rewrite module"
-msgstr "Apache mod_rewrite-modul"
+#: ../../mod/settings.php:626
+msgid "No feature settings configured"
+msgstr "Ingen funksjonsinnstillinger er konfigurert"
-#: ../../mod/setup.php:450
-msgid ""
-"Error: Apache webserver mod-rewrite module is required but not installed."
-msgstr "Feil: Apache web-tjenerens mod-rewrite-modul er påkrevd, men ikke installert."
+#: ../../mod/settings.php:634
+msgid "Feature Settings"
+msgstr "Funksjonsinnstillinger"
-#: ../../mod/setup.php:456 ../../mod/setup.php:459
-msgid "proc_open"
-msgstr "proc_open"
+#: ../../mod/settings.php:657
+msgid "Account Settings"
+msgstr "Kontoinnstillinger"
-#: ../../mod/setup.php:456
-msgid ""
-"Error: proc_open is required but is either not installed or has been "
-"disabled in php.ini"
-msgstr "Feil: proc_open er påkrevd, men er enten ikke installert eller har blitt avskrudd i php.ini"
+#: ../../mod/settings.php:658
+msgid "Password Settings"
+msgstr "Passordinnstillinger"
-#: ../../mod/setup.php:464
-msgid "Error: libCURL PHP module required but not installed."
-msgstr "Feil: libCURL PHP-modul er påkrevd, men er ikke installert."
+#: ../../mod/settings.php:659
+msgid "New Password:"
+msgstr "Nytt passord:"
-#: ../../mod/setup.php:468
-msgid ""
-"Error: GD graphics PHP module with JPEG support required but not installed."
-msgstr "Feil: GD graphics PHP-modul med JPEG-støtte er påkrevd, men er ikke installert."
+#: ../../mod/settings.php:660
+msgid "Confirm:"
+msgstr "Bekreft:"
-#: ../../mod/setup.php:472
-msgid "Error: openssl PHP module required but not installed."
-msgstr "Feil: openssl PHP-modul er påkrevd, men er ikke installert."
+#: ../../mod/settings.php:660
+msgid "Leave password fields blank unless changing"
+msgstr "La passordfeltene stå blanke om det ikke skal endres"
-#: ../../mod/setup.php:476
-msgid "Error: mysqli PHP module required but not installed."
-msgstr "Feil: mysqli PHP-modul er påkrevd, men er ikke installert."
+#: ../../mod/settings.php:662 ../../mod/settings.php:985
+msgid "Email Address:"
+msgstr "E-postadresse:"
-#: ../../mod/setup.php:480
-msgid "Error: mb_string PHP module required but not installed."
-msgstr "Feil: mb_string PHP-modul er påkrevd, men er ikke installert."
+#: ../../mod/settings.php:663 ../../mod/removeaccount.php:61
+msgid "Remove Account"
+msgstr "Slett konto"
-#: ../../mod/setup.php:484
-msgid "Error: mcrypt PHP module required but not installed."
-msgstr "Feil: mcrypt PHP-modul er påkrevd, men er ikke installert."
+#: ../../mod/settings.php:664
+msgid "Remove this account from this server including all its channels"
+msgstr "Slett denne kontoen inkludert alle dens kanaler fra denne tjeneren"
-#: ../../mod/setup.php:500
-msgid ""
-"The web installer needs to be able to create a file called \".htconfig.php\""
-" in the top folder of your web server and it is unable to do so."
-msgstr "Web-installasjonen må kunne lage en fil kalt \".htconfig.php\" i toppkatalogen til web-tjeneren din, men dette får den ikke til."
+#: ../../mod/settings.php:665 ../../mod/settings.php:1067
+msgid "Warning: This action is permanent and cannot be reversed."
+msgstr "Advarsel: Denne handlingen er permanent og kan ikke angres."
-#: ../../mod/setup.php:501
-msgid ""
-"This is most often a permission setting, as the web server may not be able "
-"to write files in your folder - even if you can."
-msgstr "Dette er oftest tillatelsesinnstilling, ettersom webtjeneren kanskje kan skrive til filer i din mappe - selv om du kan."
+#: ../../mod/settings.php:681
+msgid "Off"
+msgstr "Av"
-#: ../../mod/setup.php:502
-msgid ""
-"At the end of this procedure, we will give you a text to save in a file "
-"named .htconfig.php in your Red top folder."
-msgstr "På slutten av denne prosedyren vil vi gi deg en tekst til å lagre i en fil kalt .htconfig.php i toppkatalogen til din Red."
+#: ../../mod/settings.php:681
+msgid "On"
+msgstr "PÃ¥"
-#: ../../mod/setup.php:503
-msgid ""
-"You can alternatively skip this procedure and perform a manual installation."
-" Please see the file \"install/INSTALL.txt\" for instructions."
-msgstr "Alternativt, så kan du hoppe over denne prosedyren og gjennomføre en manuell installasjon. Vennligst se filen \"install/INSTALL.txt\" for instruksjoner."
+#: ../../mod/settings.php:688
+msgid "Additional Features"
+msgstr "Ekstra funksjoner"
-#: ../../mod/setup.php:506
-msgid ".htconfig.php is writable"
-msgstr ".htconfig.php kan skrives til"
+#: ../../mod/settings.php:713
+msgid "Connector Settings"
+msgstr "Koblingsinnstillinger"
-#: ../../mod/setup.php:516
-msgid ""
-"Red uses the Smarty3 template engine to render its web views. Smarty3 "
-"compiles templates to PHP to speed up rendering."
-msgstr "Red bruker malmotoren Smarty3 for å gjengi sine webvisninger. Smarty3 kompilerer malene om til PHP for å framskynde gjengivelsen."
+#: ../../mod/settings.php:743
+msgid "No special theme for mobile devices"
+msgstr "Ikke noe spesielt tema for mobile enheter"
-#: ../../mod/setup.php:517
-msgid ""
-"In order to store these compiled templates, the web server needs to have "
-"write access to the directory view/tpl/smarty3/ under the Red top level "
-"folder."
-msgstr "For å kunne lagre disse kompilerte malene, så må webtjeneren ha skrivetilgang til katalogen view/tpl/smarty3/ under Red sin hovedmappe."
+#: ../../mod/settings.php:752
+#, php-format
+msgid "%s - (Experimental)"
+msgstr "%s - (Eksperimentelt)"
-#: ../../mod/setup.php:518 ../../mod/setup.php:536
-msgid ""
-"Please ensure that the user that your web server runs as (e.g. www-data) has"
-" write access to this folder."
-msgstr "Vennligst sikre at brukeren som din web-tjeneste kjører som (for eksempel www-data) har skrivetilgang til denne katalogen."
+#: ../../mod/settings.php:788
+msgid "Display Settings"
+msgstr "Visningsinnstillinger"
-#: ../../mod/setup.php:519
-msgid ""
-"Note: as a security measure, you should give the web server write access to "
-"view/tpl/smarty3/ only--not the template files (.tpl) that it contains."
-msgstr "Merknad: som et sikkerhetstiltak bør du bare gi webtjerenn skrivetilgang til view/tpl/smarty3/ - ikke til malfilene (.tpl) som den inneholder."
+#: ../../mod/settings.php:794
+msgid "Display Theme:"
+msgstr "Visningstema:"
-#: ../../mod/setup.php:522
-msgid "view/tpl/smarty3 is writable"
-msgstr "view/tpl/smarty3 er skrivbar"
+#: ../../mod/settings.php:795
+msgid "Mobile Theme:"
+msgstr "Mobiltema:"
-#: ../../mod/setup.php:535
-msgid ""
-"Red uses the store directory to save uploaded files. The web server needs to"
-" have write access to the store directory under the Red top level folder"
-msgstr "Red bruker lagringsmappen for å lagre opplastede filer. Webtjeneren trenger å ha skrivetilgang til lagringsmappen under Red sin toppnivåmappe."
+#: ../../mod/settings.php:796
+msgid "Enable user zoom on mobile devices"
+msgstr "Skru på brukerstyrt zoom på mobile enheter"
-#: ../../mod/setup.php:539
-msgid "store is writable"
-msgstr "lageret kan skrives til"
+#: ../../mod/settings.php:797
+msgid "Update browser every xx seconds"
+msgstr "Oppdater nettleser hvert xx sekunder"
-#: ../../mod/setup.php:569
-msgid ""
-"SSL certificate cannot be validated. Fix certificate or disable https access"
-" to this site."
-msgstr "SSL-sertifikatet kan ikke kontrolleres. Fiks sertifikatet eller skru av https tilgang til dette nettstedet."
+#: ../../mod/settings.php:797
+msgid "Minimum of 10 seconds, no maximum"
+msgstr "Minimum 10 sekunder, ikke noe maksimum"
-#: ../../mod/setup.php:570
-msgid ""
-"If you have https access to your website or allow connections to TCP port "
-"443 (the https: port), you MUST use a browser-valid certificate. You MUST "
-"NOT use self-signed certificates!"
-msgstr "Hvis du har HTTPS-tilgang til ditt nettsted eller tillater forbindelser til TCP port 443 (HTTPS-porten), så MÅ du bruke nettlesergodkjent sertifkater. Du MÅ IKKE bruke egensignert sertifikater!"
+#: ../../mod/settings.php:798
+msgid "Maximum number of conversations to load at any time:"
+msgstr "Maksimalt antall samtaler å laste samtidig:"
-#: ../../mod/setup.php:571
-msgid ""
-"This restriction is incorporated because public posts from you may for "
-"example contain references to images on your own hub."
-msgstr "Denne begrensningen er tatt inn fordi offentlige innlegg fra deg kan for eksempel inneholde referanser til bilder på din egen hub."
+#: ../../mod/settings.php:798
+msgid "Maximum of 100 items"
+msgstr "Maksimum 100 elementer"
+
+#: ../../mod/settings.php:799
+msgid "Don't show emoticons"
+msgstr "Ikke vis følelsesikoner"
+
+#: ../../mod/settings.php:800
+msgid "Link post titles to source"
+msgstr "Lenk innleggets tittel til kilden"
+
+#: ../../mod/settings.php:801
+msgid "System Page Layout Editor - (advanced)"
+msgstr "Systemsidens layoutbehandler - (avansert)"
+
+#: ../../mod/settings.php:835
+msgid "Nobody except yourself"
+msgstr "Ingen unntatt deg selv"
+
+#: ../../mod/settings.php:836
+msgid "Only those you specifically allow"
+msgstr "Bare de du spesifikt tillater"
+
+#: ../../mod/settings.php:837
+msgid "Approved connections"
+msgstr "Godkjente forbindelser"
+
+#: ../../mod/settings.php:838
+msgid "Any connections"
+msgstr "Enhver forbindelse"
+
+#: ../../mod/settings.php:839
+msgid "Anybody on this website"
+msgstr "Enhver ved dette nettstedet"
+
+#: ../../mod/settings.php:840
+msgid "Anybody in this network"
+msgstr "Enhver i dette nettverket"
+
+#: ../../mod/settings.php:841
+msgid "Anybody authenticated"
+msgstr "Enhver som er autentisert"
+
+#: ../../mod/settings.php:842
+msgid "Anybody on the internet"
+msgstr "Enhver på Internett"
+
+#: ../../mod/settings.php:916
+msgid "Publish your default profile in the network directory"
+msgstr "Publiser din standardprofil i nettverkskatalogen"
+
+#: ../../mod/settings.php:921
+msgid "Allow us to suggest you as a potential friend to new members?"
+msgstr "Tillat oss å foreslå deg som en mulig venn til nye medlemmer?"
+
+#: ../../mod/settings.php:925 ../../mod/profile_photo.php:365
+msgid "or"
+msgstr "eller"
+
+#: ../../mod/settings.php:930
+msgid "Your channel address is"
+msgstr "Din kanaladresse er"
+
+#: ../../mod/settings.php:974
+msgid "Channel Settings"
+msgstr "Kanalinnstillinger"
+
+#: ../../mod/settings.php:983
+msgid "Basic Settings"
+msgstr "Grunninnstillinger"
+
+#: ../../mod/settings.php:986
+msgid "Your Timezone:"
+msgstr "Din tidssone:"
-#: ../../mod/setup.php:572
+#: ../../mod/settings.php:987
+msgid "Default Post Location:"
+msgstr "Standard plassering ved innlegg:"
+
+#: ../../mod/settings.php:987
+msgid "Geographical location to display on your posts"
+msgstr "Geografisk plassering som vises på dine innlegg"
+
+#: ../../mod/settings.php:988
+msgid "Use Browser Location:"
+msgstr "Bruk nettleseren sin plassering:"
+
+#: ../../mod/settings.php:990
+msgid "Adult Content"
+msgstr "Voksent innhold"
+
+#: ../../mod/settings.php:990
msgid ""
-"If your certificate is not recognised, members of other sites (who may "
-"themselves have valid certificates) will get a warning message on their own "
-"site complaining about security issues."
-msgstr "Hvis sertifikatet ditt ikke gjenkjennes, så vil medlemmer på andre nettsteder (som selv kan ha godkjente sertifikater) få en beskjed med en advarsel på deres eget nettsted som klager over sikkerhetsproblemer."
+"This channel frequently or regularly publishes adult content. (Please tag "
+"any adult material and/or nudity with #NSFW)"
+msgstr "Denne kanalen vil ofte eller jevnlig publisere voksent innhold. (Vennligst merk alt voksent materiale og/eller nakenhet med #NSFW)"
+
+#: ../../mod/settings.php:992
+msgid "Security and Privacy Settings"
+msgstr "Sikkerhets- og personverninnstillinger"
+
+#: ../../mod/settings.php:994
+msgid "Your permissions are already configured. Click to view/adjust"
+msgstr "Dine tillatelser er allerede satt. Klikk for å se/justere."
+
+#: ../../mod/settings.php:996
+msgid "Hide my online presence"
+msgstr "Skjul min tilstedeværelse online"
-#: ../../mod/setup.php:573
+#: ../../mod/settings.php:996
+msgid "Prevents displaying in your profile that you are online"
+msgstr "Forhindrer visning på din profil av at du er online "
+
+#: ../../mod/settings.php:998
+msgid "Simple Privacy Settings:"
+msgstr "Enkle personverninnstillinger:"
+
+#: ../../mod/settings.php:999
msgid ""
-"This can cause usability issues elsewhere (not just on your own site) so we "
-"must insist on this requirement."
-msgstr "Dette kan gi problemer med brukervennlighet (ikke bare på ditt eget nettsted), så vi må insistere på dette kravet."
+"Very Public - <em>extremely permissive (should be used with caution)</em>"
+msgstr "Svært offentlig - <em>ekstremt åpent (bør brukes med varsomhet)</em>"
-#: ../../mod/setup.php:574
+#: ../../mod/settings.php:1000
msgid ""
-"Providers are available that issue free certificates which are browser-"
-"valid."
-msgstr "Det finnes tilbydere som utsteder gratis sertifikater som er gyldige i nettlesere."
+"Typical - <em>default public, privacy when desired (similar to social "
+"network permissions but with improved privacy)</em>"
+msgstr "Typisk - <em>standard er offentlig, personvern når ønsket (likner på tillatelser i sosiale nettverk, men med forbedret personvern)</em>"
-#: ../../mod/setup.php:576
-msgid "SSL certificate validation"
-msgstr "SSL sertifikat-kontroll"
+#: ../../mod/settings.php:1001
+msgid "Private - <em>default private, never open or public</em>"
+msgstr "Privat - <em>standard er privat, aldri åpen eller offentlig</em>"
-#: ../../mod/setup.php:582
-msgid ""
-"Url rewrite in .htaccess is not working. Check your server configuration."
-msgstr "URL rewrite i .htaccess virker ikke. Sjekk konfigurasjonen på tjeneren."
+#: ../../mod/settings.php:1002
+msgid "Blocked - <em>default blocked to/from everybody</em>"
+msgstr "Blokkert - <em>standard blokkert til/fra alle</em>"
-#: ../../mod/setup.php:584
-msgid "Url rewrite is working"
-msgstr "URL rewrite virker"
+#: ../../mod/settings.php:1004
+msgid "Allow others to tag your posts"
+msgstr "Tillat andre å merke dine innlegg"
-#: ../../mod/setup.php:594
+#: ../../mod/settings.php:1004
msgid ""
-"The database configuration file \".htconfig.php\" could not be written. "
-"Please use the enclosed text to create a configuration file in your web "
-"server root."
-msgstr "Databasekonfigurasjonsfilen \".htconfig.php\" kunne ikke skrives. Vennligst bruk den medfølgende teksten for å lage en konfigurasjonsfil i toppkatalogen av din web-tjener."
+"Often used by the community to retro-actively flag inappropriate content"
+msgstr "Ofte brukt av fellesskapet for å merke upassende innhold i etterkant"
-#: ../../mod/setup.php:618
-msgid "Errors encountered creating database tables."
-msgstr "Feil oppstod under opprettelsen av databasetabeller."
+#: ../../mod/settings.php:1006
+msgid "Advanced Privacy Settings"
+msgstr "Avanserte personverninnstillinger"
-#: ../../mod/setup.php:653
-msgid "<h1>What next</h1>"
-msgstr "<h1>Hva gjenstår</h1>"
+#: ../../mod/settings.php:1008
+msgid "Expire other channel content after this many days"
+msgstr "Annet kanal innhold utløper etter så mange dager"
-#: ../../mod/setup.php:654
-msgid ""
-"IMPORTANT: You will need to [manually] setup a scheduled task for the "
-"poller."
-msgstr "VIKTIG: Du må [manuelt] sette opp en automatisert tidfestet oppgave til bakgrunnshenteren."
+#: ../../mod/settings.php:1008
+msgid "0 or blank prevents expiration"
+msgstr "0 eller blankt forhindrer utløp"
-#: ../../mod/editblock.php:8 ../../mod/editblock.php:27
-#: ../../mod/editblock.php:53 ../../mod/editlayout.php:36
-#: ../../mod/editpost.php:20 ../../mod/editwebpage.php:32
-msgid "Item not found"
-msgstr "Elementet ble ikke funnet."
+#: ../../mod/settings.php:1009
+msgid "Maximum Friend Requests/Day:"
+msgstr "Maksimalt antall venneforespørsler per dag:"
-#: ../../mod/editblock.php:77
-msgid "Edit Block"
-msgstr "Endre byggekloss"
+#: ../../mod/settings.php:1009
+msgid "May reduce spam activity"
+msgstr "Kan redusere søppelpostaktivitet"
-#: ../../mod/editblock.php:87
-msgid "Delete block?"
-msgstr "Slett byggeklossen?"
+#: ../../mod/settings.php:1010
+msgid "Default Post Permissions"
+msgstr "Standard innleggstillatelser"
-#: ../../mod/editblock.php:115 ../../mod/editlayout.php:110
-#: ../../mod/editpost.php:116 ../../mod/editwebpage.php:147
-msgid "Insert YouTube video"
-msgstr "Sett inn YouTube-video"
+#: ../../mod/settings.php:1015
+msgid "Channel permissions category:"
+msgstr "Kategori med kanaltillatelser:"
-#: ../../mod/editblock.php:116 ../../mod/editlayout.php:111
-#: ../../mod/editpost.php:117 ../../mod/editwebpage.php:148
-msgid "Insert Vorbis [.ogg] video"
-msgstr "Sett inn Vorbis [.ogg] video"
+#: ../../mod/settings.php:1023
+msgid "Maximum private messages per day from unknown people:"
+msgstr "Maksimalt antall private meldinger per dag fra ukjente personer:"
-#: ../../mod/editblock.php:117 ../../mod/editlayout.php:112
-#: ../../mod/editpost.php:118 ../../mod/editwebpage.php:149
-msgid "Insert Vorbis [.ogg] audio"
-msgstr "Legg i"
+#: ../../mod/settings.php:1023
+msgid "Useful to reduce spamming"
+msgstr "Nyttig for å redusere søppelpost"
-#: ../../mod/editblock.php:153
-msgid "Delete Block"
-msgstr "Slett byggekloss"
+#: ../../mod/settings.php:1026
+msgid "Notification Settings"
+msgstr "Varslingsinnstillinger"
-#: ../../mod/pdledit.php:13
-msgid "Layout updated."
-msgstr "Layout er oppdatert."
+#: ../../mod/settings.php:1027
+msgid "By default post a status message when:"
+msgstr "Legg inn en statusmelding når du:"
-#: ../../mod/pdledit.php:28 ../../mod/pdledit.php:53
-msgid "Edit System Page Description"
-msgstr "Endre beskrivelsen av systemsiden"
+#: ../../mod/settings.php:1028
+msgid "accepting a friend request"
+msgstr "aksepterer en venneforespørsel"
-#: ../../mod/pdledit.php:48
-msgid "Layout not found."
-msgstr "Layouten ble ikke funnet."
+#: ../../mod/settings.php:1029
+msgid "joining a forum/community"
+msgstr "blir med i et forum/miljø"
-#: ../../mod/pdledit.php:54
-msgid "Module Name:"
-msgstr "Modulnavn:"
+#: ../../mod/settings.php:1030
+msgid "making an <em>interesting</em> profile change"
+msgstr "gjør en <em>interessant</em> profilendring"
-#: ../../mod/pdledit.php:55 ../../mod/layouts.php:59
-msgid "Layout Help"
-msgstr "Layout-hjelp"
+#: ../../mod/settings.php:1031
+msgid "Send a notification email when:"
+msgstr "Send en varsel-e-post når:"
-#: ../../mod/editlayout.php:72
-msgid "Edit Layout"
-msgstr "Endre layout"
+#: ../../mod/settings.php:1032
+msgid "You receive a connection request"
+msgstr "Du har mottatt en forespørsel om forbindelse"
-#: ../../mod/editlayout.php:82
-msgid "Delete layout?"
-msgstr "Slett layout?"
+#: ../../mod/settings.php:1033
+msgid "Your connections are confirmed"
+msgstr "Dine forbindelser er bekreftet"
-#: ../../mod/editlayout.php:146
-msgid "Delete Layout"
-msgstr "Slett layout"
+#: ../../mod/settings.php:1034
+msgid "Someone writes on your profile wall"
+msgstr "Noen skriver på din profilvegg"
-#: ../../mod/editpost.php:31
-msgid "Item is not editable"
-msgstr "Elementet kan ikke endres"
+#: ../../mod/settings.php:1035
+msgid "Someone writes a followup comment"
+msgstr "Noen skriver en oppfølgende kommentar"
-#: ../../mod/editpost.php:53
-msgid "Delete item?"
-msgstr "Slett element?"
+#: ../../mod/settings.php:1036
+msgid "You receive a private message"
+msgstr "Du mottar en privat melding"
-#: ../../mod/editwebpage.php:106
-msgid "Edit Webpage"
-msgstr "Endre webside"
+#: ../../mod/settings.php:1037
+msgid "You receive a friend suggestion"
+msgstr "Du mottok et venneforslag"
-#: ../../mod/editwebpage.php:116
-msgid "Delete webpage?"
-msgstr "Slett webside?"
+#: ../../mod/settings.php:1038
+msgid "You are tagged in a post"
+msgstr "Du merkes i et innlegg"
-#: ../../mod/editwebpage.php:186
-msgid "Delete Webpage"
-msgstr "Slett webside"
+#: ../../mod/settings.php:1039
+msgid "You are poked/prodded/etc. in a post"
+msgstr "Du ble prikket/oppildnet/og så vider i et innlegg"
-#: ../../mod/siteinfo.php:57
-#, php-format
-msgid "Version %s"
-msgstr "Versjon %s"
+#: ../../mod/settings.php:1042
+msgid "Show visual notifications including:"
+msgstr "Vis visuelle varslinger om:"
-#: ../../mod/siteinfo.php:76
-msgid "Installed plugins/addons/apps:"
-msgstr "Installerte tilleggsfunksjoner/tillegg/apper:"
+#: ../../mod/settings.php:1044
+msgid "Unseen matrix activity"
+msgstr "Usett matrixaktivitet"
-#: ../../mod/siteinfo.php:89
-msgid "No installed plugins/addons/apps"
-msgstr "Ingen installerte tilleggsfunksjoner/tillegg/apper"
+#: ../../mod/settings.php:1045
+msgid "Unseen channel activity"
+msgstr "Usett kanalaktivitet"
-#: ../../mod/siteinfo.php:97
-msgid "Red"
-msgstr "Red"
+#: ../../mod/settings.php:1046
+msgid "Unseen private messages"
+msgstr "Usette private meldinger"
-#: ../../mod/siteinfo.php:98
-msgid ""
-"This is a hub of the Red Matrix - a global cooperative network of "
-"decentralised privacy enhanced websites."
-msgstr "Dette er en hub i Red Matrix - et globalt kooperativt nettverk av desentraliserte personvernforsterkede nettsteder."
+#: ../../mod/settings.php:1046 ../../mod/settings.php:1051
+#: ../../mod/settings.php:1052 ../../mod/settings.php:1053
+msgid "Recommended"
+msgstr "Anbefalt"
-#: ../../mod/siteinfo.php:101
-msgid "Running at web location"
-msgstr "Kjører på webplasseringen"
+#: ../../mod/settings.php:1047
+msgid "Upcoming events"
+msgstr "Kommende hendelser"
-#: ../../mod/siteinfo.php:102
-msgid ""
-"Please visit <a href=\"http://getzot.com\">GetZot.com</a> to learn more "
-"about the Red Matrix."
-msgstr "Vennligst besøk <a href=\"http://getzot.com\">GetZot.com</a> for å lære mer om Red Matrix."
+#: ../../mod/settings.php:1048
+msgid "Events today"
+msgstr "Hendelser idag"
-#: ../../mod/siteinfo.php:103
-msgid "Bug reports and issues: please visit"
-msgstr "Feilmeldinger og feilretting: vennligst besøk"
+#: ../../mod/settings.php:1049
+msgid "Upcoming birthdays"
+msgstr "Kommende fødselsdager"
-#: ../../mod/siteinfo.php:106
-msgid ""
-"Suggestions, praise, etc. - please email \"redmatrix\" at librelist - dot "
-"com"
-msgstr "Forslag, ros og så videre - vennligst e-post \"redmatrix\" hos librelist - punktum com"
+#: ../../mod/settings.php:1049
+msgid "Not available in all themes"
+msgstr "Ikke tilgjengelig i alle temaer"
-#: ../../mod/siteinfo.php:108
-msgid "Site Administrators"
-msgstr "Nettstedsadministratorer"
+#: ../../mod/settings.php:1050
+msgid "System (personal) notifications"
+msgstr "System (personlige) varslinger"
-#: ../../mod/sources.php:32
-msgid "Failed to create source. No channel selected."
-msgstr "Mislyktes med å lage kilde. Ingen kanal er valgt."
+#: ../../mod/settings.php:1051
+msgid "System info messages"
+msgstr "System infomeldinger"
-#: ../../mod/sources.php:45
-msgid "Source created."
-msgstr "Kilden er laget."
+#: ../../mod/settings.php:1052
+msgid "System critical alerts"
+msgstr "System kritiske varsel"
-#: ../../mod/sources.php:57
-msgid "Source updated."
-msgstr "Kilden er oppdatert."
+#: ../../mod/settings.php:1053
+msgid "New connections"
+msgstr "Nye forbindelser"
-#: ../../mod/sources.php:82
-msgid "*"
-msgstr "*"
+#: ../../mod/settings.php:1054
+msgid "System Registrations"
+msgstr "Systemregistreringer"
-#: ../../mod/sources.php:89
-msgid "Manage remote sources of content for your channel."
-msgstr "HÃ¥ndtere eksterne innholdskilder til din kanal."
+#: ../../mod/settings.php:1056
+msgid "Notify me of events this many days in advance"
+msgstr "Varsle meg om hendelser dette antall dager på forhånd"
-#: ../../mod/sources.php:90 ../../mod/sources.php:100
-msgid "New Source"
-msgstr "Ny kilde"
+#: ../../mod/settings.php:1056
+msgid "Must be greater than 0"
+msgstr "Må være større enn 0"
-#: ../../mod/sources.php:101 ../../mod/sources.php:133
+#: ../../mod/settings.php:1058
+msgid "Advanced Account/Page Type Settings"
+msgstr "Avanserte innstillinger for konto/sidetype"
+
+#: ../../mod/settings.php:1059
+msgid "Change the behaviour of this account for special situations"
+msgstr "Endre oppførselen til denne kontoen i spesielle situasjoner"
+
+#: ../../mod/settings.php:1062
msgid ""
-"Import all or selected content from the following channel into this channel "
-"and distribute it according to your channel settings."
-msgstr "Importer alt eller et utvalgt av innhold fra følgende kanal inn i denne kanalen og distribuer det i henhold til dine egne kanalinnstillinger."
+"Please enable expert mode (in <a href=\"settings/features\">Settings > "
+"Additional features</a>) to adjust!"
+msgstr "Vennligst skru på ekspertmodus (under <a href=\"settings/features\">Innstillinger > Ekstra funksjoner</a>) for å justere!"
-#: ../../mod/sources.php:102 ../../mod/sources.php:134
-msgid "Only import content with these words (one per line)"
-msgstr "Bare importer innhold med disse ordene (ett ord per linje)"
+#: ../../mod/settings.php:1063
+msgid "Miscellaneous Settings"
+msgstr "Diverse innstillinger"
-#: ../../mod/sources.php:102 ../../mod/sources.php:134
-msgid "Leave blank to import all public content"
-msgstr "La stå tomt for å importere alt offentlig innhold"
+#: ../../mod/settings.php:1065
+msgid "Personal menu to display in your channel pages"
+msgstr "Personlig meny som kan vises på dine kanalsider"
-#: ../../mod/sources.php:103 ../../mod/sources.php:137
-#: ../../mod/new_channel.php:110
-msgid "Channel Name"
-msgstr "Kanalnavn"
+#: ../../mod/settings.php:1066
+msgid "Remove this channel"
+msgstr "Fjern denne kanalen"
-#: ../../mod/sources.php:123 ../../mod/sources.php:150
-msgid "Source not found."
-msgstr "Kilden ble ikke funnet."
+#: ../../mod/editwebpage.php:140
+msgid "Edit Webpage"
+msgstr "Endre webside"
-#: ../../mod/sources.php:130
-msgid "Edit Source"
-msgstr "Endre kilde"
+#: ../../mod/editwebpage.php:150
+msgid "Delete webpage?"
+msgstr "Slett webside?"
-#: ../../mod/sources.php:131
-msgid "Delete Source"
-msgstr "Slett kilde"
+#: ../../mod/editwebpage.php:215
+msgid "Delete Webpage"
+msgstr "Slett webside"
-#: ../../mod/sources.php:158
-msgid "Source removed"
-msgstr "Kilden er fjernet"
+#: ../../mod/impel.php:33
+msgid "webpage"
+msgstr "nettside"
-#: ../../mod/sources.php:160
-msgid "Unable to remove source."
-msgstr "Ikke i stand til å fjerne kilde."
+#: ../../mod/impel.php:38
+msgid "block"
+msgstr "byggekloss"
-#: ../../mod/filer.php:49
-msgid "- select -"
-msgstr "- velg -"
+#: ../../mod/impel.php:43
+msgid "layout"
+msgstr "layout"
-#: ../../mod/events.php:72
-msgid "Event title and start time are required."
-msgstr "Hendelsestittel og starttidspunkt er påkrevd."
+#: ../../mod/impel.php:117
+#, php-format
+msgid "%s element installed"
+msgstr "%s element installert"
-#: ../../mod/events.php:310
-msgid "l, F j"
-msgstr "l, F j"
+#: ../../mod/profile_photo.php:108
+msgid "Image uploaded but image cropping failed."
+msgstr "Bildet ble lastet opp, men beskjæring av bildet mislyktes."
-#: ../../mod/events.php:332
-msgid "Edit event"
-msgstr "Endre hendelse"
+#: ../../mod/profile_photo.php:161
+msgid "Image resize failed."
+msgstr "Endring av bildestørrelse mislyktes."
-#: ../../mod/events.php:378
-msgid "Create New Event"
-msgstr "Lag ny hendelse"
+#: ../../mod/profile_photo.php:205
+msgid ""
+"Shift-reload the page or clear browser cache if the new photo does not "
+"display immediately."
+msgstr "Hold nede Shift-knappen og last siden på nytt eller tøm nettleserens mellomlager hvis det nye bildet ikke vises umiddelbart."
-#: ../../mod/events.php:379
-msgid "Previous"
-msgstr "Forrige"
+#: ../../mod/profile_photo.php:232
+#, php-format
+msgid "Image exceeds size limit of %d"
+msgstr "Bildet overstiger størrelsesbegrensningen på %d"
-#: ../../mod/events.php:450
-msgid "hour:minute"
-msgstr "time:minutt"
+#: ../../mod/profile_photo.php:241
+msgid "Unable to process image."
+msgstr "Kan ikke behandle bildet."
-#: ../../mod/events.php:470
-msgid "Event details"
-msgstr "Hendelsesdetaljer"
+#: ../../mod/profile_photo.php:290 ../../mod/profile_photo.php:339
+msgid "Photo not available."
+msgstr "Bildet er ikke tilgjengelig."
-#: ../../mod/events.php:471
-#, php-format
-msgid "Format is %s %s. Starting date and Title are required."
-msgstr "Formatet er %s %s. Startdato og tittel er påkrevd."
+#: ../../mod/profile_photo.php:358
+msgid "Upload File:"
+msgstr "Last opp fil:"
-#: ../../mod/events.php:473
-msgid "Event Starts:"
-msgstr "Hendelsen starter:"
+#: ../../mod/profile_photo.php:359
+msgid "Select a profile:"
+msgstr "Velg en profil:"
-#: ../../mod/events.php:473 ../../mod/events.php:487 ../../mod/appman.php:91
-#: ../../mod/appman.php:92
-msgid "Required"
-msgstr "PÃ¥krevd"
+#: ../../mod/profile_photo.php:360
+msgid "Upload Profile Photo"
+msgstr "Last opp profilbilde:"
-#: ../../mod/events.php:476
-msgid "Finish date/time is not known or not relevant"
-msgstr "Sluttdato/-tidspunkt er ikke kjent eller ikke relevant"
+#: ../../mod/profile_photo.php:365
+msgid "skip this step"
+msgstr "hopp over dette steget"
-#: ../../mod/events.php:478
-msgid "Event Finishes:"
-msgstr "Hendelsen slutter:"
+#: ../../mod/profile_photo.php:365
+msgid "select a photo from your photo albums"
+msgstr "velg et bilde fra dine fotoalbum"
-#: ../../mod/events.php:481
-msgid "Adjust for viewer timezone"
-msgstr "Juster i forhold til tilskuerens tidssone"
+#: ../../mod/profile_photo.php:381
+msgid "Crop Image"
+msgstr "Beskjær bildet"
-#: ../../mod/events.php:483
-msgid "Description:"
-msgstr "Beskrivelse:"
+#: ../../mod/profile_photo.php:382
+msgid "Please adjust the image cropping for optimum viewing."
+msgstr "Vennligst juster bildebeskjæringen for optimal visning."
-#: ../../mod/events.php:487
-msgid "Title:"
-msgstr "Tittel:"
+#: ../../mod/profile_photo.php:384
+msgid "Done Editing"
+msgstr "Avslutt redigering"
-#: ../../mod/events.php:489
-msgid "Share this event"
-msgstr "Del denne hendelsen"
+#: ../../mod/profile_photo.php:427
+msgid "Image uploaded successfully."
+msgstr "Opplasting av bildet var vellykket."
+
+#: ../../mod/profile_photo.php:429
+msgid "Image upload failed."
+msgstr "Opplasting av bildet mislyktes."
+
+#: ../../mod/profile_photo.php:438
+#, php-format
+msgid "Image size reduction [%s] failed."
+msgstr "Forminsking av bildet [%s] mislyktes."
+
+#: ../../mod/fsuggest.php:20 ../../mod/fsuggest.php:92
+msgid "Contact not found."
+msgstr "Kontakten ble ikke funnet."
+
+#: ../../mod/fsuggest.php:63
+msgid "Friend suggestion sent."
+msgstr "Venneforespørsel sendt."
+
+#: ../../mod/fsuggest.php:97
+msgid "Suggest Friends"
+msgstr "Foreslå venner"
-#: ../../mod/filestorage.php:68
+#: ../../mod/fsuggest.php:99
+#, php-format
+msgid "Suggest a friend for %s"
+msgstr "Foreslå en venn for %s"
+
+#: ../../mod/filestorage.php:76
msgid "Permission Denied."
msgstr "Tillatelse avvist."
-#: ../../mod/filestorage.php:85
+#: ../../mod/filestorage.php:92
msgid "File not found."
msgstr "Filen ble ikke funnet."
-#: ../../mod/filestorage.php:121
+#: ../../mod/filestorage.php:131
msgid "Edit file permissions"
msgstr "Endre filtillatelser"
-#: ../../mod/filestorage.php:129
+#: ../../mod/filestorage.php:140
msgid "Set/edit permissions"
msgstr "Angi/endre tillatelser"
-#: ../../mod/filestorage.php:130
+#: ../../mod/filestorage.php:141
msgid "Include all files and sub folders"
msgstr "Inkluder alle filer og undermapper"
-#: ../../mod/filestorage.php:131
+#: ../../mod/filestorage.php:142
msgid "Return to file list"
msgstr "GÃ¥ tilbake til filoversikten"
-#: ../../mod/filestorage.php:133
+#: ../../mod/filestorage.php:144
msgid "Copy/paste this code to attach file to a post"
msgstr "Kopier og lim inn denne koden for å legge til filen i et innlegg"
-#: ../../mod/filestorage.php:134
+#: ../../mod/filestorage.php:145
msgid "Copy/paste this URL to link file from a web page"
msgstr "Kopier og lim inn denne URL-en for å lenke til filen fra en webside"
-#: ../../mod/filestorage.php:171
-msgid "Download"
-msgstr "Last ned"
-
-#: ../../mod/filestorage.php:177
-msgid "Used: "
-msgstr "Brukt:"
+#: ../../mod/help.php:41 ../../mod/help.php:47 ../../mod/help.php:53
+msgid "Help:"
+msgstr "Hjelp:"
-#: ../../mod/filestorage.php:178
-msgid "[directory]"
-msgstr "[mappe]"
+#: ../../mod/help.php:67 ../../index.php:238
+msgid "Not Found"
+msgstr "Ikke funnet"
-#: ../../mod/filestorage.php:180
-msgid "Limit: "
-msgstr "Grense:"
+#: ../../mod/acl.php:245
+msgid "network"
+msgstr "nettverk"
#: ../../mod/follow.php:25
msgid "Channel added."
msgstr "Kanal lagt til."
-#: ../../mod/subthread.php:103
-#, php-format
-msgid "%1$s is following %2$s's %3$s"
-msgstr "%1$s følger %2$s sin %3$s"
+#: ../../mod/delegate.php:95
+msgid "No potential page delegates located."
+msgstr "Ingen potensielle sidedelegater er funnet."
-#: ../../mod/fsuggest.php:20 ../../mod/fsuggest.php:92
-msgid "Contact not found."
-msgstr "Kontakten ble ikke funnet."
+#: ../../mod/delegate.php:121
+msgid "Delegate Page Management"
+msgstr "Deleger sidehåndtering"
-#: ../../mod/fsuggest.php:63
-msgid "Friend suggestion sent."
-msgstr "Venneforespørsel sendt."
+#: ../../mod/delegate.php:123
+msgid ""
+"Delegates are able to manage all aspects of this account/page except for "
+"basic account settings. Please do not delegate your personal account to "
+"anybody that you do not trust completely."
+msgstr "Delegater kan håndtere alle sider ved denne kontoen/siden unntatt grunnleggende kontoinformasjon. Vennligst ikke deleger din personlige konto til noen du ikke stoler fullstendig på."
-#: ../../mod/fsuggest.php:97
-msgid "Suggest Friends"
-msgstr "Foreslå venner"
+#: ../../mod/delegate.php:124
+msgid "Existing Page Managers"
+msgstr "Eksisterende sidehåndterere"
-#: ../../mod/fsuggest.php:99
-#, php-format
-msgid "Suggest a friend for %s"
-msgstr "Foreslå en venn for %s"
+#: ../../mod/delegate.php:126
+msgid "Existing Page Delegates"
+msgstr "Eksisterende sidedelegater"
-#: ../../mod/suggest.php:35
-msgid ""
-"No suggestions available. If this is a new site, please try again in 24 "
-"hours."
-msgstr "Ingen forslag tilgjengelige. Hvis dette er et nytt nettsted, vennligst prøv igjen om 24 timer."
+#: ../../mod/delegate.php:128
+msgid "Potential Delegates"
+msgstr "Potensielle sidedelegater"
+
+#: ../../mod/delegate.php:131
+msgid "Add"
+msgstr "Legg til"
+
+#: ../../mod/delegate.php:132
+msgid "No entries."
+msgstr "Ingen oppføringer."
#: ../../mod/group.php:20
msgid "Collection created."
@@ -6000,769 +6670,826 @@ msgstr "Medlemmer"
msgid "All Connected Channels"
msgstr "Alle tilkoblede kanaler"
-#: ../../mod/group.php:231
+#: ../../mod/group.php:233
msgid "Click on a channel to add or remove."
msgstr "Klikk på en kanal for å legge til eller fjerne."
+#: ../../mod/suggest.php:35
+msgid ""
+"No suggestions available. If this is a new site, please try again in 24 "
+"hours."
+msgstr "Ingen forslag tilgjengelige. Hvis dette er et nytt nettsted, vennligst prøv igjen om 24 timer."
+
+#: ../../mod/import.php:25
+#, php-format
+msgid "Your service plan only allows %d channels."
+msgstr "Din tjenesteplan tillater bare %d kanaler."
+
+#: ../../mod/import.php:51
+msgid "Nothing to import."
+msgstr "Ingenting å importere."
+
+#: ../../mod/import.php:75
+msgid "Unable to download data from old server"
+msgstr "Ikke i stand til å laste ned data fra gammel tjener"
+
+#: ../../mod/import.php:81
+msgid "Imported file is empty."
+msgstr "Importert fil er tom."
+
+#: ../../mod/import.php:105
+msgid ""
+"Cannot create a duplicate channel identifier on this system. Import failed."
+msgstr "Kan ikke lage en kopi av kanal-identifikatoren på dette systemet. Import mislyktes."
+
+#: ../../mod/import.php:123
+msgid "Channel clone failed. Import failed."
+msgstr "Kanalkloning mislyktes. Import mislyktes."
+
+#: ../../mod/import.php:133
+msgid "Cloned channel not found. Import failed."
+msgstr "Klonet kanal ble ikke funnet. Import mislyktes."
+
+#: ../../mod/import.php:451
+msgid "Import completed."
+msgstr "Import ferdig."
+
+#: ../../mod/import.php:463
+msgid "You must be logged in to use this feature."
+msgstr "Du må være innlogget for å bruke denne funksjonen."
+
+#: ../../mod/import.php:468
+msgid "Import Channel"
+msgstr "Importer kanal"
+
+#: ../../mod/import.php:469
+msgid ""
+"Use this form to import an existing channel from a different server/hub. You"
+" may retrieve the channel identity from the old server/hub via the network "
+"or provide an export file. Only identity and connections/relationships will "
+"be imported. Importation of content is not yet available."
+msgstr "Bruk dette skjemaet til å importere en eksisterende kanal fra en annen tjener/hub. Du kan hente kanalidentiteten fra den gamle tjeneren/hubben via nettverket eller bruke en eksportert fil. Bare identiteten og forbindelser/relasjoner vil bli importert. Importering av innhold er ennå ikke tilgjengelig."
+
+#: ../../mod/import.php:470
+msgid "File to Upload"
+msgstr "Fil som skal lastes opp"
+
+#: ../../mod/import.php:471
+msgid "Or provide the old server/hub details"
+msgstr "Eller oppgi detaljene fra den gamle tjeneren/hub-en"
+
+#: ../../mod/import.php:472
+msgid "Your old identity address (xyz@example.com)"
+msgstr "Din gamle identitetsadresse (xyz@example.com)"
+
+#: ../../mod/import.php:473
+msgid "Your old login email address"
+msgstr "Din gamle innloggings e-postadresse"
+
+#: ../../mod/import.php:474
+msgid "Your old login password"
+msgstr "Ditt gamle innloggingspassord"
+
+#: ../../mod/import.php:475
+msgid ""
+"For either option, please choose whether to make this hub your new primary "
+"address, or whether your old location should continue this role. You will be"
+" able to post from either location, but only one can be marked as the "
+"primary location for files, photos, and media."
+msgstr "Enten du tar det ene eller det andre valget, vennligst angi om du vil at denne hubben skal være din nye primære adresse, eller om din gamle plassering skal fortsette å ha denne rollen. Du kan lage innlegg fra den ene eller den andre plasseringen, men bare en av dem kan markeres som den primære plasseringen for filer, bilder og media."
+
+#: ../../mod/import.php:476
+msgid "Make this hub my primary location"
+msgstr "Gjør dette nettstedet til min primære plassering"
+
+#: ../../mod/import.php:477
+msgid "Import existing posts if possible"
+msgstr "Importerer eksisterende innlegg hvis mulig."
+
#: ../../mod/tagger.php:98
#, php-format
msgid "%1$s tagged %2$s's %3$s with %4$s"
msgstr "%1$s merket %3$s til %2$s med %4$s"
-#: ../../mod/help.php:43 ../../mod/help.php:49 ../../mod/help.php:55
-msgid "Help:"
-msgstr "Hjelp:"
-
-#: ../../mod/help.php:69 ../../index.php:233
-msgid "Not Found"
-msgstr "Ikke funnet"
-
-#: ../../mod/tagrm.php:41
+#: ../../mod/tagrm.php:44 ../../mod/tagrm.php:94
msgid "Tag removed"
msgstr "Merkelapp fjernet"
-#: ../../mod/tagrm.php:79
+#: ../../mod/tagrm.php:119
msgid "Remove Item Tag"
msgstr "Fjern merkelapp fra element"
-#: ../../mod/tagrm.php:81
+#: ../../mod/tagrm.php:121
msgid "Select a tag to remove: "
msgstr "Velg merkelapp å fjerne:"
-#: ../../mod/home.php:79
-msgid "Red Matrix - &quot;The Network&quot;"
-msgstr "Red Matrix - &quot;Nettverket&quot;"
-
-#: ../../mod/home.php:92
-#, php-format
-msgid "Welcome to %s"
-msgstr "Velkommen til %s"
-
#: ../../mod/admin.php:52
msgid "Theme settings updated."
msgstr "Temainnstillinger er oppdatert."
-#: ../../mod/admin.php:92 ../../mod/admin.php:441
+#: ../../mod/admin.php:97 ../../mod/admin.php:411
msgid "Site"
msgstr "Nettsted"
-#: ../../mod/admin.php:93
+#: ../../mod/admin.php:98
msgid "Accounts"
msgstr "Kontoer"
-#: ../../mod/admin.php:94 ../../mod/admin.php:884
+#: ../../mod/admin.php:99 ../../mod/admin.php:858
msgid "Channels"
msgstr "Kanaler"
-#: ../../mod/admin.php:95 ../../mod/admin.php:975 ../../mod/admin.php:1017
+#: ../../mod/admin.php:100 ../../mod/admin.php:949 ../../mod/admin.php:991
msgid "Plugins"
msgstr "Tilleggsfunksjoner"
-#: ../../mod/admin.php:96 ../../mod/admin.php:1180 ../../mod/admin.php:1216
+#: ../../mod/admin.php:101 ../../mod/admin.php:1154 ../../mod/admin.php:1190
msgid "Themes"
msgstr "Temaer"
-#: ../../mod/admin.php:97 ../../mod/admin.php:541
+#: ../../mod/admin.php:102 ../../mod/admin.php:512
msgid "Server"
msgstr "Tjener"
-#: ../../mod/admin.php:98
+#: ../../mod/admin.php:103
+msgid "Profile Config"
+msgstr "Profilinnstillinger"
+
+#: ../../mod/admin.php:104
msgid "DB updates"
msgstr "Databaseoppdateringer"
-#: ../../mod/admin.php:112 ../../mod/admin.php:119 ../../mod/admin.php:1303
+#: ../../mod/admin.php:118 ../../mod/admin.php:125 ../../mod/admin.php:1277
msgid "Logs"
msgstr "Logger"
-#: ../../mod/admin.php:118
+#: ../../mod/admin.php:124
msgid "Plugin Features"
msgstr "Tilleggsfunksjoner"
-#: ../../mod/admin.php:120
+#: ../../mod/admin.php:126
msgid "User registrations waiting for confirmation"
msgstr "Brukerregistreringer som venter på bekreftelse"
-#: ../../mod/admin.php:197
+#: ../../mod/admin.php:206
msgid "Message queues"
msgstr "Meldingskøer"
-#: ../../mod/admin.php:202 ../../mod/admin.php:440 ../../mod/admin.php:540
-#: ../../mod/admin.php:749 ../../mod/admin.php:883 ../../mod/admin.php:974
-#: ../../mod/admin.php:1016 ../../mod/admin.php:1179 ../../mod/admin.php:1215
-#: ../../mod/admin.php:1302
+#: ../../mod/admin.php:211 ../../mod/admin.php:410 ../../mod/admin.php:511
+#: ../../mod/admin.php:721 ../../mod/admin.php:857 ../../mod/admin.php:948
+#: ../../mod/admin.php:990 ../../mod/admin.php:1153 ../../mod/admin.php:1189
+#: ../../mod/admin.php:1276
msgid "Administration"
msgstr "Administrasjon"
-#: ../../mod/admin.php:203
+#: ../../mod/admin.php:212
msgid "Summary"
msgstr "Sammendrag"
-#: ../../mod/admin.php:205
+#: ../../mod/admin.php:214
msgid "Registered users"
msgstr "Registrerte brukere"
-#: ../../mod/admin.php:207 ../../mod/admin.php:544
+#: ../../mod/admin.php:216 ../../mod/admin.php:515
msgid "Pending registrations"
msgstr "Ventende registreringer"
-#: ../../mod/admin.php:208
+#: ../../mod/admin.php:217
msgid "Version"
msgstr "Versjon"
-#: ../../mod/admin.php:210 ../../mod/admin.php:545
+#: ../../mod/admin.php:219 ../../mod/admin.php:516
msgid "Active plugins"
msgstr "Aktive tilleggsfunksjoner"
-#: ../../mod/admin.php:361
+#: ../../mod/admin.php:326
msgid "Site settings updated."
msgstr "Nettstedsinnstillinger er oppdatert."
-#: ../../mod/admin.php:392
-msgid "No special theme for accessibility"
-msgstr "Ikke noe spesielt tema for universell utforming"
+#: ../../mod/admin.php:363
+msgid "mobile"
+msgstr "mobil"
-#: ../../mod/admin.php:421
+#: ../../mod/admin.php:365
+msgid "experimental"
+msgstr "eksperimentell"
+
+#: ../../mod/admin.php:367
+msgid "unsupported"
+msgstr "ikke støttet"
+
+#: ../../mod/admin.php:391
msgid "Yes - with approval"
msgstr "Ja - med godkjenning"
-#: ../../mod/admin.php:427
+#: ../../mod/admin.php:397
msgid "My site is not a public server"
msgstr "Mitt nettsted er ikke en offentlig tjeneste"
-#: ../../mod/admin.php:428
+#: ../../mod/admin.php:398
msgid "My site has paid access only"
msgstr "Mitt nettsted gir kun tilgang mot betaling"
-#: ../../mod/admin.php:429
+#: ../../mod/admin.php:399
msgid "My site has free access only"
msgstr "Mitt nettsted har kun gratis tilgang"
-#: ../../mod/admin.php:430
+#: ../../mod/admin.php:400
msgid "My site offers free accounts with optional paid upgrades"
msgstr "Mitt nettsted tilbyr gratis konto med valgfri oppgradering til betalt tjeneste"
-#: ../../mod/admin.php:444
+#: ../../mod/admin.php:414
msgid "File upload"
msgstr "Last opp fil"
-#: ../../mod/admin.php:445
+#: ../../mod/admin.php:415
msgid "Policies"
msgstr "Retningslinjer"
-#: ../../mod/admin.php:450
+#: ../../mod/admin.php:420
msgid "Site name"
msgstr "Nettstedets navn"
-#: ../../mod/admin.php:451
+#: ../../mod/admin.php:421
msgid "Banner/Logo"
msgstr "Banner/Logo"
-#: ../../mod/admin.php:452
+#: ../../mod/admin.php:422
msgid "Administrator Information"
msgstr "Administratorinformasjon"
-#: ../../mod/admin.php:452
+#: ../../mod/admin.php:422
msgid ""
"Contact information for site administrators. Displayed on siteinfo page. "
"BBCode can be used here"
msgstr "Kontaktinformasjon til nettstedsadministratorer. Vises på siteinfo-siden. BBCode kan brukes her"
-#: ../../mod/admin.php:453
+#: ../../mod/admin.php:423
msgid "System language"
msgstr "Systemspråk"
-#: ../../mod/admin.php:454
+#: ../../mod/admin.php:424
msgid "System theme"
msgstr "Systemtema"
-#: ../../mod/admin.php:454
+#: ../../mod/admin.php:424
msgid ""
"Default system theme - may be over-ridden by user profiles - <a href='#' "
"id='cnftheme'>change theme settings</a>"
msgstr "Standard systemtema - kan overstyres av brukerprofiler - <a href='#' id='cnftheme'>endre temainnstillinger</a>"
-#: ../../mod/admin.php:455
+#: ../../mod/admin.php:425
msgid "Mobile system theme"
msgstr "Mobilt systemtema"
-#: ../../mod/admin.php:455
+#: ../../mod/admin.php:425
msgid "Theme for mobile devices"
msgstr "Tema for mobile enheter"
-#: ../../mod/admin.php:456
-msgid "Accessibility system theme"
-msgstr "Universelt utformet systemtema"
+#: ../../mod/admin.php:427
+msgid "Enable Diaspora Protocol"
+msgstr "Skru på Diaspora-protokollen"
-#: ../../mod/admin.php:456
-msgid "Accessibility theme"
-msgstr "Universelt utformet tema"
+#: ../../mod/admin.php:427
+msgid "Communicate with Diaspora and Friendica - experimental"
+msgstr "Samhandling med Diaspora og Friendica - eksperimentell"
-#: ../../mod/admin.php:457
-msgid "Channel to use for this website's static pages"
-msgstr "Kanal å bruke for dette nettstedets statiske sider"
+#: ../../mod/admin.php:428
+msgid "Allow Feeds as Connections"
+msgstr "Tillat strømmer som forbindelser"
-#: ../../mod/admin.php:457
-msgid "Site Channel"
-msgstr "Nettstedets kanal"
+#: ../../mod/admin.php:428
+msgid "(Heavy system resource usage)"
+msgstr "(Tung bruk av systemressurser)"
-#: ../../mod/admin.php:459
+#: ../../mod/admin.php:429
msgid "Maximum image size"
msgstr "Største bildestørrelse"
-#: ../../mod/admin.php:459
+#: ../../mod/admin.php:429
msgid ""
"Maximum size in bytes of uploaded images. Default is 0, which means no "
"limits."
msgstr "Største størrelse i bytes for opplastede bilder. Standard er 0, som betyr ubegrenset."
-#: ../../mod/admin.php:460
+#: ../../mod/admin.php:430
msgid "Does this site allow new member registration?"
msgstr "Tillater dette nettstedet registrering av nye medlemmer?"
-#: ../../mod/admin.php:461
+#: ../../mod/admin.php:431
msgid "Which best describes the types of account offered by this hub?"
msgstr "Hvilket alternativ beskriver best hva slags kontotype som tilbys av dette nettstedet/denne hubben?"
-#: ../../mod/admin.php:462
+#: ../../mod/admin.php:432
msgid "Register text"
msgstr "Registreringstekst"
-#: ../../mod/admin.php:462
+#: ../../mod/admin.php:432
msgid "Will be displayed prominently on the registration page."
msgstr "Vil bli vist på en fremtredende måte på registreringssiden."
-#: ../../mod/admin.php:463
+#: ../../mod/admin.php:433
msgid "Accounts abandoned after x days"
msgstr "Kontoer forlatt etter x dager"
-#: ../../mod/admin.php:463
+#: ../../mod/admin.php:433
msgid ""
"Will not waste system resources polling external sites for abandonded "
"accounts. Enter 0 for no time limit."
msgstr "Vil ikke kaste bort systemressurser på å spørre eksterne nettsteder etter forlatte kontoer. Skriv 0 for å ikke sette noen tidsgrense."
-#: ../../mod/admin.php:464
+#: ../../mod/admin.php:434
msgid "Allowed friend domains"
msgstr "Tillatte vennedomener"
-#: ../../mod/admin.php:464
+#: ../../mod/admin.php:434
msgid ""
"Comma separated list of domains which are allowed to establish friendships "
"with this site. Wildcards are accepted. Empty to allow any domains"
msgstr "Kommaseparert liste over domener som har lov til å etablere vennskap med dette nettstedet. Jokertegn er akseptert. Tøm for å tillate alle domener."
-#: ../../mod/admin.php:465
+#: ../../mod/admin.php:435
msgid "Allowed email domains"
msgstr "Tillate e-postdomener"
-#: ../../mod/admin.php:465
+#: ../../mod/admin.php:435
msgid ""
"Comma separated list of domains which are allowed in email addresses for "
"registrations to this site. Wildcards are accepted. Empty to allow any "
"domains"
msgstr "Kommaseparert liste med domener som er tillatt i e-postadresser ved registrering på dette nettstedet. Jokertegn er akseptert. Tomt betyr at alle domener er tillatt"
-#: ../../mod/admin.php:466
+#: ../../mod/admin.php:436
msgid "Block public"
msgstr "Blokker offentlig tilgang"
-#: ../../mod/admin.php:466
+#: ../../mod/admin.php:436
msgid ""
"Check to block public access to all otherwise public personal pages on this "
"site unless you are currently logged in."
msgstr "Kryss av for å blokkere tilgang til alle personlige sider som ellers ville vært offentlig tilgjengelige på dette nettstedet med mindre du er logget inn."
-#: ../../mod/admin.php:467
+#: ../../mod/admin.php:437
+msgid "Verify Email Addresses"
+msgstr "Bekreft e-postadresser"
+
+#: ../../mod/admin.php:437
+msgid ""
+"Check to verify email addresses used in account registration (recommended)."
+msgstr "Sett hake for å sjekke e-postadresser brukt ved kontoregistrering (anbefales)."
+
+#: ../../mod/admin.php:438
msgid "Force publish"
msgstr "Tving publisering"
-#: ../../mod/admin.php:467
+#: ../../mod/admin.php:438
msgid ""
"Check to force all profiles on this site to be listed in the site directory."
msgstr "Kryss av for å tvinge alle profiler på dette nettstedet til å bli oppført i nettstedet sin katalog."
-#: ../../mod/admin.php:468
+#: ../../mod/admin.php:439
msgid "Disable discovery tab"
msgstr "Skru av oppdagelsesfanen"
-#: ../../mod/admin.php:468
+#: ../../mod/admin.php:439
msgid ""
"Remove the tab in the network view with public content pulled from sources "
"chosen for this site."
msgstr "Fjern fanen fra nettverksvisningen med offentlig innhold trukket inn fra kilder valg for dette nettstedet."
-#: ../../mod/admin.php:469
+#: ../../mod/admin.php:440
msgid "No login on Homepage"
msgstr "Ingen innlogging på hjemmesiden"
-#: ../../mod/admin.php:469
+#: ../../mod/admin.php:440
msgid ""
"Check to hide the login form from your sites homepage when visitors arrive "
"who are not logged in (e.g. when you put the content of the homepage in via "
"the site channel)."
msgstr "Sett hake for å skjule innloggingsskjemaet fra ditt nettsteds hjemmeside for besøkende som ikke er innlogget (for eksempel når du legger inn innhold på hjemmesiden via nettstedskanalen)."
-#: ../../mod/admin.php:471
+#: ../../mod/admin.php:442
msgid "Proxy user"
msgstr "Brukernavn mellomtjener"
-#: ../../mod/admin.php:472
+#: ../../mod/admin.php:443
msgid "Proxy URL"
msgstr "Mellomtjener URL"
-#: ../../mod/admin.php:473
+#: ../../mod/admin.php:444
msgid "Network timeout"
msgstr "Nettverk tidsavbrudd"
-#: ../../mod/admin.php:473
+#: ../../mod/admin.php:444
msgid "Value is in seconds. Set to 0 for unlimited (not recommended)."
msgstr "Verdien i sekunder. Skriv 0 for ubegrenset (ikke anbefalt)."
-#: ../../mod/admin.php:474
+#: ../../mod/admin.php:445
msgid "Delivery interval"
msgstr "Leveringsinterval"
-#: ../../mod/admin.php:474
+#: ../../mod/admin.php:445
msgid ""
"Delay background delivery processes by this many seconds to reduce system "
"load. Recommend: 4-5 for shared hosts, 2-3 for virtual private servers. 0-1 "
"for large dedicated servers."
msgstr "Forsink leveringsprosessene i bakgrunnen med dette antall sekunder for å redusere systembelastningen. Anbefaling: 4-5 for delte tjenere, 2-3 for virtuelle tjenere, 0-1 for større dedikerte tjenere."
-#: ../../mod/admin.php:475
+#: ../../mod/admin.php:446
msgid "Poll interval"
msgstr "Spørreintervall"
-#: ../../mod/admin.php:475
+#: ../../mod/admin.php:446
msgid ""
"Delay background polling processes by this many seconds to reduce system "
"load. If 0, use delivery interval."
msgstr "Forsink spørreprosessene i bakgrunnen med dette antall sekunder for å redusere systembelastningen. Hvis 0, bruk dette leveringsintervallet."
-#: ../../mod/admin.php:476
+#: ../../mod/admin.php:447
msgid "Maximum Load Average"
msgstr "Største belastningsgjennomsnitt"
-#: ../../mod/admin.php:476
+#: ../../mod/admin.php:447
msgid ""
"Maximum system load before delivery and poll processes are deferred - "
"default 50."
msgstr "Største systembelastning før leverings- og spørreprosesser blir utsatt - standard 50."
-#: ../../mod/admin.php:532
+#: ../../mod/admin.php:503
msgid "No server found"
msgstr "Ingen tjener funnet"
-#: ../../mod/admin.php:539 ../../mod/admin.php:763
+#: ../../mod/admin.php:510 ../../mod/admin.php:735
msgid "ID"
msgstr "ID"
-#: ../../mod/admin.php:539
+#: ../../mod/admin.php:510
msgid "for channel"
msgstr "for kanalen"
-#: ../../mod/admin.php:539
+#: ../../mod/admin.php:510
msgid "on server"
msgstr "på tjener"
-#: ../../mod/admin.php:539
+#: ../../mod/admin.php:510
msgid "Status"
msgstr "Status"
-#: ../../mod/admin.php:560
+#: ../../mod/admin.php:531
msgid "Update has been marked successful"
msgstr "Oppdateringen har blitt merket som en suksess"
-#: ../../mod/admin.php:570
+#: ../../mod/admin.php:541
#, php-format
msgid "Executing %s failed. Check system logs."
msgstr "Utføring av %s feilet. Sjekk systemlogger."
-#: ../../mod/admin.php:573
+#: ../../mod/admin.php:544
#, php-format
msgid "Update %s was successfully applied."
msgstr "Oppdatering %s ble gjennomført med suksess."
-#: ../../mod/admin.php:577
+#: ../../mod/admin.php:548
#, php-format
msgid "Update %s did not return a status. Unknown if it succeeded."
msgstr "Oppdatering %s returnerte ingen status. Det er ukjent om den ble vellykket."
-#: ../../mod/admin.php:580
+#: ../../mod/admin.php:551
#, php-format
msgid "Update function %s could not be found."
msgstr "Oppdatering av funksjon %s kunne ikke finnes."
-#: ../../mod/admin.php:595
+#: ../../mod/admin.php:566
msgid "No failed updates."
msgstr "Ingen mislykkede oppdateringer."
-#: ../../mod/admin.php:599
+#: ../../mod/admin.php:570
msgid "Failed Updates"
msgstr "Mislykkede oppdateringer"
-#: ../../mod/admin.php:601
+#: ../../mod/admin.php:572
msgid "Mark success (if update was manually applied)"
msgstr "Marker suksess (hvis oppdateringen ble gjennomført manuelt)"
-#: ../../mod/admin.php:602
+#: ../../mod/admin.php:573
msgid "Attempt to execute this update step automatically"
msgstr "Prøv å gjennomføre dette oppdateringstrinnet automatisk"
-#: ../../mod/admin.php:628
+#: ../../mod/admin.php:599
#, php-format
msgid "%s user blocked/unblocked"
msgid_plural "%s users blocked/unblocked"
msgstr[0] "%s bruker blokkert/ikke blokkert lenger"
msgstr[1] "%s brukere blokkert/ikke blokkert lenger"
-#: ../../mod/admin.php:635
+#: ../../mod/admin.php:606
#, php-format
msgid "%s user deleted"
msgid_plural "%s users deleted"
msgstr[0] "%s bruker slettet"
msgstr[1] "%s brukere slettet"
-#: ../../mod/admin.php:666
+#: ../../mod/admin.php:635
msgid "Account not found"
msgstr "Kontoen ble ikke funnet"
-#: ../../mod/admin.php:677
-#, php-format
-msgid "User '%s' deleted"
-msgstr "Brukeren '%s' er slettet"
-
-#: ../../mod/admin.php:686
+#: ../../mod/admin.php:655
#, php-format
msgid "User '%s' unblocked"
msgstr "Brukeren '%s' er ikke blokkert lenger"
-#: ../../mod/admin.php:686
+#: ../../mod/admin.php:655
#, php-format
msgid "User '%s' blocked"
msgstr "Brukeren '%s' er blokkert"
-#: ../../mod/admin.php:750 ../../mod/admin.php:762
+#: ../../mod/admin.php:722 ../../mod/admin.php:734
msgid "Users"
msgstr "Brukere"
-#: ../../mod/admin.php:752 ../../mod/admin.php:886
+#: ../../mod/admin.php:724 ../../mod/admin.php:860
msgid "select all"
msgstr "velg alle"
-#: ../../mod/admin.php:753
+#: ../../mod/admin.php:725
msgid "User registrations waiting for confirm"
msgstr "Brukerregistreringer som venter på bekreftelse"
-#: ../../mod/admin.php:754
+#: ../../mod/admin.php:726
msgid "Request date"
msgstr "Dato for forespørsel"
-#: ../../mod/admin.php:755
+#: ../../mod/admin.php:727
msgid "No registrations."
msgstr "Ingen registreringer."
-#: ../../mod/admin.php:756
+#: ../../mod/admin.php:728
msgid "Approve"
msgstr "Godkjenn"
-#: ../../mod/admin.php:757
+#: ../../mod/admin.php:729
msgid "Deny"
msgstr "Avslå"
-#: ../../mod/admin.php:763
+#: ../../mod/admin.php:735
msgid "Register date"
msgstr "Registreringsdato"
-#: ../../mod/admin.php:763
+#: ../../mod/admin.php:735
msgid "Last login"
msgstr "Siste innlogging"
-#: ../../mod/admin.php:763
+#: ../../mod/admin.php:735
msgid "Expires"
msgstr "Utløper"
-#: ../../mod/admin.php:763
+#: ../../mod/admin.php:735
msgid "Service Class"
msgstr "Tjenesteklasse"
-#: ../../mod/admin.php:765
+#: ../../mod/admin.php:737
msgid ""
"Selected users will be deleted!\\n\\nEverything these users had posted on "
"this site will be permanently deleted!\\n\\nAre you sure?"
msgstr "Valgte brukere vil bli slettet!\\n\\nAlt som disse brukerne har lagt inn på dette nettstedet vil bli slettet for alltid!\\n\\nEr du sikker på at du vil slette valgte brukere og deres innhold?"
-#: ../../mod/admin.php:766
+#: ../../mod/admin.php:738
msgid ""
"The user {0} will be deleted!\\n\\nEverything this user has posted on this "
"site will be permanently deleted!\\n\\nAre you sure?"
msgstr "Brukeren {0} vil bli slettet!\\n\\nAlt denne brukeren har lagt inn på dette nettstedet vil bli slettet for alltid!\\n\\nEr du sikker på at du vil slette denne brukeren og alt innholdet til denne brukeren?"
-#: ../../mod/admin.php:798
+#: ../../mod/admin.php:771
#, php-format
msgid "%s channel censored/uncensored"
-msgid_plural "%s channelss censored/uncensored"
-msgstr[0] "%s kanal sensurert/ikke sensurert lenger"
-msgstr[1] "%s kanaler sensurert/ikke sensurert lenger"
+msgid_plural "%s channels censored/uncensored"
+msgstr[0] "%s kanal er sensurert/ikke sensurert lenger"
+msgstr[1] "%s kanaler er sensurert/ikke sensurert lenger"
-#: ../../mod/admin.php:805
+#: ../../mod/admin.php:778
#, php-format
msgid "%s channel deleted"
msgid_plural "%s channels deleted"
msgstr[0] "%s kanal slettet"
msgstr[1] "%s kanaler slettet"
-#: ../../mod/admin.php:824
+#: ../../mod/admin.php:797
msgid "Channel not found"
msgstr "Kanalen ble ikke funnet"
-#: ../../mod/admin.php:835
+#: ../../mod/admin.php:808
#, php-format
msgid "Channel '%s' deleted"
msgstr "Kanalen '%s' er slettet"
-#: ../../mod/admin.php:845
+#: ../../mod/admin.php:819
#, php-format
msgid "Channel '%s' uncensored"
msgstr "Kanalen '%s' er ikke sensurert lenger"
-#: ../../mod/admin.php:845
+#: ../../mod/admin.php:819
#, php-format
msgid "Channel '%s' censored"
msgstr "Kanalen '%s' er sensurert"
-#: ../../mod/admin.php:888
+#: ../../mod/admin.php:862
msgid "Censor"
msgstr "Sensurer"
-#: ../../mod/admin.php:889
+#: ../../mod/admin.php:863
msgid "Uncensor"
msgstr "Ikke sensurer lenger"
-#: ../../mod/admin.php:892
+#: ../../mod/admin.php:866
msgid "UID"
msgstr "UID"
-#: ../../mod/admin.php:894
+#: ../../mod/admin.php:868
msgid ""
"Selected channels will be deleted!\\n\\nEverything that was posted in these "
"channels on this site will be permanently deleted!\\n\\nAre you sure?"
msgstr "Valgte kanaler vil bli slettet!\\n\\nAlt innhold som er lagt inn i disse kanalene på dette nettstedet vil bli slettet for alltid!\\n\\nEr du sikker på at du vil slette disse kanalene med alt innhold?"
-#: ../../mod/admin.php:895
+#: ../../mod/admin.php:869
msgid ""
"The channel {0} will be deleted!\\n\\nEverything that was posted in this "
"channel on this site will be permanently deleted!\\n\\nAre you sure?"
msgstr "Kanalen {0} vil bli slettet!\\n\\nAlt innhold som er lagt inn i denne kanalen på dettet nettstedet vil bli slettet for alltid!\\n\\nEr du sikker på at du vil slette denne kanalen med alt innhold?"
-#: ../../mod/admin.php:934
+#: ../../mod/admin.php:908
#, php-format
msgid "Plugin %s disabled."
msgstr "Tilleggsfunksjonen %s er avskrudd."
-#: ../../mod/admin.php:938
+#: ../../mod/admin.php:912
#, php-format
msgid "Plugin %s enabled."
msgstr "Tilleggsfunksjonen %s er påskrudd."
-#: ../../mod/admin.php:948 ../../mod/admin.php:1150
+#: ../../mod/admin.php:922 ../../mod/admin.php:1124
msgid "Disable"
msgstr "Skru av"
-#: ../../mod/admin.php:950 ../../mod/admin.php:1152
+#: ../../mod/admin.php:924 ../../mod/admin.php:1126
msgid "Enable"
msgstr "Skru på"
-#: ../../mod/admin.php:976 ../../mod/admin.php:1181
+#: ../../mod/admin.php:950 ../../mod/admin.php:1155
msgid "Toggle"
msgstr "Skru av og på"
-#: ../../mod/admin.php:984 ../../mod/admin.php:1191
+#: ../../mod/admin.php:958 ../../mod/admin.php:1165
msgid "Author: "
msgstr "Forfatter:"
-#: ../../mod/admin.php:985 ../../mod/admin.php:1192
+#: ../../mod/admin.php:959 ../../mod/admin.php:1166
msgid "Maintainer: "
msgstr "Vedlikeholder:"
-#: ../../mod/admin.php:1114
+#: ../../mod/admin.php:1088
msgid "No themes found."
msgstr "Ingen temaer er funnet."
-#: ../../mod/admin.php:1173
+#: ../../mod/admin.php:1147
msgid "Screenshot"
msgstr "Skjermbilde"
-#: ../../mod/admin.php:1221
+#: ../../mod/admin.php:1195
msgid "[Experimental]"
msgstr "[Eksperimentelt]"
-#: ../../mod/admin.php:1222
+#: ../../mod/admin.php:1196
msgid "[Unsupported]"
msgstr "[Ingen støtte]"
-#: ../../mod/admin.php:1249
+#: ../../mod/admin.php:1223
msgid "Log settings updated."
msgstr "Logginnstillinger er oppdatert."
-#: ../../mod/admin.php:1305
+#: ../../mod/admin.php:1279
msgid "Clear"
msgstr "Tøm"
-#: ../../mod/admin.php:1311
+#: ../../mod/admin.php:1285
msgid "Debugging"
msgstr "Feilsøking"
-#: ../../mod/admin.php:1312
+#: ../../mod/admin.php:1286
msgid "Log file"
msgstr "Loggfil"
-#: ../../mod/admin.php:1312
+#: ../../mod/admin.php:1286
msgid ""
"Must be writable by web server. Relative to your Red top-level directory."
msgstr "Må kunne skrives til av webtjenesten. Relativ til din Red sin toppnivåkatalog."
-#: ../../mod/admin.php:1313
+#: ../../mod/admin.php:1287
msgid "Log level"
msgstr "Loggnivå"
-#: ../../mod/thing.php:98
-msgid "Thing updated"
-msgstr "Tingen er oppdatert"
-
-#: ../../mod/thing.php:158
-msgid "Object store: failed"
-msgstr "Objektlagring: mislyktes"
-
-#: ../../mod/thing.php:162
-msgid "Thing added"
-msgstr "Ting lagt til"
-
-#: ../../mod/thing.php:182
-#, php-format
-msgid "OBJ: %1$s %2$s %3$s"
-msgstr "OBJ: %1$s %2$s %3$s"
-
-#: ../../mod/thing.php:234
-msgid "Show Thing"
-msgstr "Vis ting"
-
-#: ../../mod/thing.php:241
-msgid "item not found."
-msgstr "element ble ikke funnet."
-
-#: ../../mod/thing.php:269
-msgid "Edit Thing"
-msgstr "Endre ting"
+#: ../../mod/admin.php:1334
+msgid "New Profile Field"
+msgstr "Nytt profilfelt"
-#: ../../mod/thing.php:271 ../../mod/thing.php:318
-msgid "Select a profile"
-msgstr "Velg en profil"
+#: ../../mod/admin.php:1335 ../../mod/admin.php:1356
+msgid "Field nickname"
+msgstr "Feltets kallenavn"
-#: ../../mod/thing.php:273 ../../mod/thing.php:320
-msgid "Select a category of stuff. e.g. I ______ something"
-msgstr "Velg en kategori med ting, for eksempel l_____ noe"
+#: ../../mod/admin.php:1335 ../../mod/admin.php:1356
+msgid "System name of field"
+msgstr "Systemnavnet til feltet"
-#: ../../mod/thing.php:275 ../../mod/thing.php:321
-msgid "Post an activity"
-msgstr "Legg inn en aktivitet"
+#: ../../mod/admin.php:1336 ../../mod/admin.php:1357
+msgid "Input type"
+msgstr "Inndata-type"
-#: ../../mod/thing.php:275 ../../mod/thing.php:321
-msgid "Only sends to viewers of the applicable profile"
-msgstr "Sender bare til seere av den aktuelle profilen"
+#: ../../mod/admin.php:1337 ../../mod/admin.php:1358
+msgid "Field Name"
+msgstr "Feltnavn"
-#: ../../mod/thing.php:277 ../../mod/thing.php:323
-msgid "Name of thing e.g. something"
-msgstr "Navn på ting for eksempel noe"
+#: ../../mod/admin.php:1337 ../../mod/admin.php:1358
+msgid "Label on profile pages"
+msgstr "Merkelapp på profilsider"
-#: ../../mod/thing.php:279 ../../mod/thing.php:324
-msgid "URL of thing (optional)"
-msgstr "URL til ting (valgfritt)"
+#: ../../mod/admin.php:1338 ../../mod/admin.php:1359
+msgid "Help text"
+msgstr "Hjelpetekst"
-#: ../../mod/thing.php:281 ../../mod/thing.php:325
-msgid "URL for photo of thing (optional)"
-msgstr "URL til bilde av ting (valgfritt)"
+#: ../../mod/admin.php:1338 ../../mod/admin.php:1359
+msgid "Additional info (optional)"
+msgstr "Tilleggsinformasjon (valgfritt)"
-#: ../../mod/thing.php:316
-msgid "Add Thing to your Profile"
-msgstr "Legg til ting i din profil"
+#: ../../mod/admin.php:1349
+msgid "Field definition not found"
+msgstr "Feltdefinisjonen ble ikke funnet"
-#: ../../mod/import.php:36
-msgid "Nothing to import."
-msgstr "Ingenting å importere."
+#: ../../mod/admin.php:1355
+msgid "Edit Profile Field"
+msgstr "Endre profilfelt"
-#: ../../mod/import.php:58
-msgid "Unable to download data from old server"
-msgstr "Ikke i stand til å laste ned data fra gammel tjener"
+#: ../../mod/item.php:159
+msgid "Unable to locate original post."
+msgstr "Ikke i stand til å finne opprinnelig innlegg."
-#: ../../mod/import.php:64
-msgid "Imported file is empty."
-msgstr "Importert fil er tom."
+#: ../../mod/item.php:418
+msgid "Empty post discarded."
+msgstr "Tomt innlegg forkastet."
-#: ../../mod/import.php:88
-msgid ""
-"Cannot create a duplicate channel identifier on this system. Import failed."
-msgstr "Kan ikke lage en kopi av kanal-identifikatoren på dette systemet. Import mislyktes."
+#: ../../mod/item.php:460
+msgid "Executable content type not permitted to this channel."
+msgstr "Kjørbar innholdstype er ikke tillat for denne kanalen."
-#: ../../mod/import.php:106
-msgid "Channel clone failed. Import failed."
-msgstr "Kanalkloning mislyktes. Import mislyktes."
+#: ../../mod/item.php:898
+msgid "System error. Post not saved."
+msgstr "Systemfeil. Innlegg ble ikke lagret."
-#: ../../mod/import.php:116
-msgid "Cloned channel not found. Import failed."
-msgstr "Klonet kanal ble ikke funnet. Import mislyktes."
+#: ../../mod/item.php:1373
+#, php-format
+msgid "You have reached your limit of %1$.0f top level posts."
+msgstr "Du har nådd din grense på %1$.0f startinnlegg."
-#: ../../mod/import.php:364
-msgid "Import completed."
-msgstr "Import ferdig."
+#: ../../mod/item.php:1379
+#, php-format
+msgid "You have reached your limit of %1$.0f webpages."
+msgstr "Du har nådd din grense på %1$.0f websider."
-#: ../../mod/import.php:377
-msgid "You must be logged in to use this feature."
-msgstr "Du må være innlogget for å bruke denne funksjonen."
+#: ../../mod/like.php:15
+msgid "Like/Dislike"
+msgstr "Liker/Liker ikke"
-#: ../../mod/import.php:382
-msgid "Import Channel"
-msgstr "Importer kanal"
+#: ../../mod/like.php:20
+msgid "This action is restricted to members."
+msgstr "Denne handlingen er begrenset til medlemmer."
-#: ../../mod/import.php:383
+#: ../../mod/like.php:21
msgid ""
-"Use this form to import an existing channel from a different server/hub. You"
-" may retrieve the channel identity from the old server/hub via the network "
-"or provide an export file. Only identity and connections/relationships will "
-"be imported. Importation of content is not yet available."
-msgstr "Bruk dette skjemaet til å importere en eksisterende kanal fra en annen tjener/hub. Du kan hente kanalidentiteten fra den gamle tjeneren/hubben via nettverket eller bruke en eksportert fil. Bare identiteten og forbindelser/relasjoner vil bli importert. Importering av innhold er ennå ikke tilgjengelig."
+"Please <a href=\"rmagic\">login with your RedMatrix ID</a> or <a "
+"href=\"register\">register as a new RedMatrix member</a> to continue."
+msgstr "Vennligst <a href=\"rmagic\">logg inn med din RedMatrix ID</a> eller <a href=\"register\">registrer deg som et nytt RedMatrix-medlem</a> for å fortsette"
-#: ../../mod/import.php:384
-msgid "File to Upload"
-msgstr "Fil som skal lastes opp"
+#: ../../mod/like.php:77 ../../mod/like.php:104 ../../mod/like.php:142
+msgid "Invalid request."
+msgstr "Ugyldig forespørsel."
-#: ../../mod/import.php:385
-msgid "Or provide the old server/hub details"
-msgstr "Eller oppgi detaljene fra den gamle tjeneren/hub-en"
+#: ../../mod/like.php:119
+msgid "thing"
+msgstr "ting"
-#: ../../mod/import.php:386
-msgid "Your old identity address (xyz@example.com)"
-msgstr "Din gamle identitetsadresse (xyz@example.com)"
+#: ../../mod/like.php:165
+msgid "Channel unavailable."
+msgstr "Kanalen er utilgjengelig."
-#: ../../mod/import.php:387
-msgid "Your old login email address"
-msgstr "Din gamle innloggings e-postadresse"
+#: ../../mod/like.php:204
+msgid "Previous action reversed."
+msgstr "Forrige handling er omgjort."
-#: ../../mod/import.php:388
-msgid "Your old login password"
-msgstr "Ditt gamle innloggingspassord"
+#: ../../mod/like.php:430
+msgid "Action completed."
+msgstr "Handling ferdig."
-#: ../../mod/import.php:389
-msgid ""
-"For either option, please choose whether to make this hub your new primary "
-"address, or whether your old location should continue this role. You will be"
-" able to post from either location, but only one can be marked as the "
-"primary location for files, photos, and media."
-msgstr "Enten du tar det ene eller det andre valget, vennligst angi om du vil at denne hubben skal være din nye primære adresse, eller om din gamle plassering skal fortsette å ha denne rollen. Du kan lage innlegg fra den ene eller den andre plasseringen, men bare en av dem kan markeres som den primære plasseringen for filer, bilder og media."
-
-#: ../../mod/import.php:390
-msgid "Make this hub my primary location"
-msgstr "Gjør dette nettstedet til min primære plassering"
+#: ../../mod/like.php:431
+msgid "Thank you."
+msgstr "Tusen takk."
#: ../../mod/invite.php:25
msgid "Total invitation limit exceeded."
@@ -6797,94 +7524,88 @@ msgstr[1] "%d meldinger sendt."
msgid "You have no more invitations available"
msgstr "Du har ikke flere invitasjoner tilgjengelig"
-#: ../../mod/invite.php:141
+#: ../../mod/invite.php:129
msgid "Send invitations"
msgstr "Send invitasjoner"
-#: ../../mod/invite.php:142
+#: ../../mod/invite.php:130
msgid "Enter email addresses, one per line:"
msgstr "Skriv e-postadresser, en per linje:"
-#: ../../mod/invite.php:143 ../../mod/mail.php:216 ../../mod/mail.php:328
+#: ../../mod/invite.php:131 ../../mod/mail.php:228 ../../mod/mail.php:341
msgid "Your message:"
msgstr "Din melding:"
-#: ../../mod/invite.php:144
-msgid ""
-"You are cordially invited to join me and some other close friends on the Red"
-" Matrix - a revolutionary new decentralised communication and information "
-"tool."
-msgstr "Du er hjertelig invitert til å være med meg og noen andre nære venner i Red Matrix - et nytt og revolusjonerende desentralisert kommunikasjons- og informasjonsverktøy."
+#: ../../mod/invite.php:132
+msgid "Please join my community on RedMatrix."
+msgstr "Du er velkommen til å bli med i mitt fellesskap på RedMatrix."
-#: ../../mod/invite.php:146
-msgid "You will need to supply this invitation code: $invite_code"
-msgstr "Du må oppgi denne invitasjonskoden: $invite_code"
+#: ../../mod/invite.php:134
+msgid "You will need to supply this invitation code: "
+msgstr "Du må oppgi denne invitasjonskoden:"
-#: ../../mod/invite.php:147
-msgid "Please visit my channel at"
-msgstr "Vennligst besøk min kanal hos"
+#: ../../mod/invite.php:135
+msgid "1. Register at any RedMatrix location (they are all inter-connected)"
+msgstr "1. Registrer ved enhver RedMatrix-lokasjon (de er alle forbundet med hverandre)"
-#: ../../mod/invite.php:151
-msgid ""
-"Once you have registered (on ANY Red Matrix site - they are all inter-"
-"connected), please connect with my Red Matrix channel address:"
-msgstr "Når du har registrert (på et HVILKET SOM HELST Red Matrix-nettsted - de er alle forbundet med hverandre), vennligst opprett kobling med min Red Matrix-kanaladresse:"
+#: ../../mod/invite.php:137
+msgid "2. Enter my RedMatrix network address into the site searchbar."
+msgstr "2. Skriv inn min RedMatrix-adresse i nettstedets søkefelt."
-#: ../../mod/invite.php:153
-msgid "Click the [Register] link on the following page to join."
-msgstr "Klikk på [Registering]-lenken på følgende side for å bli med."
+#: ../../mod/invite.php:138
+msgid "or visit "
+msgstr "eller besøk"
-#: ../../mod/invite.php:155
-msgid ""
-"For more information about the Red Matrix Project and why it has the "
-"potential to change the internet as we know it, please visit "
-"http://getzot.com"
-msgstr "For mer informasjon om Red Matrix-prosjektet og hvorfor det har potensialet til å forandre Internett som vi kjenner det, vær vennlig å besøke http://getzot.com"
+#: ../../mod/invite.php:140
+msgid "3. Click [Connect]"
+msgstr "3. Klikk [Forbindelse]"
-#: ../../mod/item.php:147
-msgid "Unable to locate original post."
-msgstr "Ikke i stand til å finne opprinnelig innlegg."
+#: ../../mod/locs.php:19 ../../mod/locs.php:46
+msgid "Location not found."
+msgstr "Plassering er ikke funnet."
-#: ../../mod/item.php:372
-msgid "Empty post discarded."
-msgstr "Tomt innlegg forkastet."
+#: ../../mod/locs.php:50
+msgid "Primary location cannot be removed."
+msgstr "Primær plassering kan ikke fjernes."
-#: ../../mod/item.php:414
-msgid "Executable content type not permitted to this channel."
-msgstr "Kjørbar innholdstype er ikke tillat for denne kanalen."
+#: ../../mod/locs.php:82
+msgid "No locations found."
+msgstr "Ingen plasseringer ble funnet."
-#: ../../mod/item.php:828
-msgid "System error. Post not saved."
-msgstr "Systemfeil. Innlegg ble ikke lagret."
+#: ../../mod/locs.php:95
+msgid "Manage Channel Locations"
+msgstr "HÃ¥ndter kanalplasseringer"
-#: ../../mod/item.php:1271
-#, php-format
-msgid "You have reached your limit of %1$.0f top level posts."
-msgstr "Du har nådd din grense på %1$.0f startinnlegg."
+#: ../../mod/locs.php:96
+msgid "Location (address)"
+msgstr "Plassering (adresse)"
-#: ../../mod/item.php:1277
-#, php-format
-msgid "You have reached your limit of %1$.0f webpages."
-msgstr "Du har nådd din grense på %1$.0f websider."
+#: ../../mod/locs.php:97
+msgid "Primary Location"
+msgstr "Hovedplassering"
+
+#: ../../mod/locs.php:98
+msgid "Drop location"
+msgstr "Slett plassering"
#: ../../mod/update_channel.php:43 ../../mod/update_display.php:25
#: ../../mod/update_network.php:23 ../../mod/update_search.php:46
msgid "[Embedded content - reload page to view]"
msgstr "[Innebygget innhold - last siden på nytt for å se]"
-#: ../../mod/layouts.php:62
+#: ../../mod/layouts.php:110
msgid "Help with this feature"
msgstr "Hjelp med denne funksjonen"
-#: ../../mod/layouts.php:84
+#: ../../mod/layouts.php:130
msgid "Layout Name"
msgstr "Layout-navn"
-#: ../../mod/lockview.php:30 ../../mod/lockview.php:36
+#: ../../mod/lockview.php:31
msgid "Remote privacy information not available."
msgstr "Ekstern personverninformasjon er ikke tilgjengelig."
-#: ../../mod/lockview.php:45
+#: ../../mod/lockview.php:52
msgid "Visible to:"
msgstr "Synlig for:"
@@ -6892,88 +7613,15 @@ msgstr "Synlig for:"
msgid "No connections."
msgstr "Ingen forbindelser."
-#: ../../mod/viewconnections.php:70
+#: ../../mod/viewconnections.php:71
#, php-format
msgid "Visit %s's profile [%s]"
msgstr "Besøk %s sin profil [%s]"
-#: ../../mod/viewconnections.php:85
+#: ../../mod/viewconnections.php:86
msgid "View Connnections"
msgstr "Vis forbindelser"
-#: ../../mod/lostpass.php:15
-msgid "No valid account found."
-msgstr "Ingen gyldig konto funnet."
-
-#: ../../mod/lostpass.php:29
-msgid "Password reset request issued. Check your email."
-msgstr "Forespørsel om å tilbakestille passord er mottatt. Sjekk e-posten din."
-
-#: ../../mod/lostpass.php:35 ../../mod/lostpass.php:102
-#, php-format
-msgid "Site Member (%s)"
-msgstr "Nettstedsmedlem (%s)"
-
-#: ../../mod/lostpass.php:40
-#, php-format
-msgid "Password reset requested at %s"
-msgstr "Forespurt om å tilbakestille passord hos %s"
-
-#: ../../mod/lostpass.php:63
-msgid ""
-"Request could not be verified. (You may have previously submitted it.) "
-"Password reset failed."
-msgstr "Forespørsel kunne ikke bekreftes. (Du kan ha sendt den inn tidligere.) Tilbakestilling av passord mislyktes."
-
-#: ../../mod/lostpass.php:85 ../../boot.php:1467
-msgid "Password Reset"
-msgstr "Tilbakestill passord"
-
-#: ../../mod/lostpass.php:86
-msgid "Your password has been reset as requested."
-msgstr "Ditt passord har blitt tilbakestilt som forespurt."
-
-#: ../../mod/lostpass.php:87
-msgid "Your new password is"
-msgstr "Ditt nye passord er"
-
-#: ../../mod/lostpass.php:88
-msgid "Save or copy your new password - and then"
-msgstr "Lagre eller kopier ditt nye passord, og deretter kan du"
-
-#: ../../mod/lostpass.php:89
-msgid "click here to login"
-msgstr "klikke her for å logge inn"
-
-#: ../../mod/lostpass.php:90
-msgid ""
-"Your password may be changed from the <em>Settings</em> page after "
-"successful login."
-msgstr "Ditt passord kan endres på siden <em>Innstillinger</em> etter vellykket innlogging."
-
-#: ../../mod/lostpass.php:107
-#, php-format
-msgid "Your password has changed at %s"
-msgstr "Ditt passord er endret hos %s"
-
-#: ../../mod/lostpass.php:122
-msgid "Forgot your Password?"
-msgstr "Glemt passord ditt?"
-
-#: ../../mod/lostpass.php:123
-msgid ""
-"Enter your email address and submit to have your password reset. Then check "
-"your email for further instructions."
-msgstr "Skriv e-postadressen din og send inn for å tilbakestille passordet ditt. Sjekk deretter din e-post for videre instruksjoner."
-
-#: ../../mod/lostpass.php:124
-msgid "Email Address"
-msgstr "E-postadresse"
-
-#: ../../mod/lostpass.php:125
-msgid "Reset"
-msgstr "Tilbakestill"
-
#: ../../mod/magic.php:70
msgid "Hub not found."
msgstr "Hubben ble ikke funnet."
@@ -7002,93 +7650,64 @@ msgstr "Kan ikke bekrefte forespurt kanal."
msgid "Selected channel has private message restrictions. Send failed."
msgstr "Valgt kanal har restriksjoner for private meldinger. Sending feilet."
-#: ../../mod/mail.php:121 ../../mod/message.php:31
-msgid "Messages"
-msgstr "Meldinger"
-
-#: ../../mod/mail.php:132
+#: ../../mod/mail.php:135
msgid "Message deleted."
msgstr "Melding slettet."
-#: ../../mod/mail.php:149
+#: ../../mod/mail.php:152
msgid "Message recalled."
msgstr "Innlegg tilbakekalt."
-#: ../../mod/mail.php:206
+#: ../../mod/mail.php:218
msgid "Send Private Message"
msgstr "Send privat melding"
-#: ../../mod/mail.php:207 ../../mod/mail.php:323
+#: ../../mod/mail.php:219 ../../mod/mail.php:336
msgid "To:"
msgstr "Til:"
-#: ../../mod/mail.php:212 ../../mod/mail.php:325
+#: ../../mod/mail.php:224 ../../mod/mail.php:338
msgid "Subject:"
msgstr "Emne:"
-#: ../../mod/mail.php:249
+#: ../../mod/mail.php:235
+msgid "Send"
+msgstr "Send"
+
+#: ../../mod/mail.php:262
msgid "Message not found."
msgstr "Melding ikke funnet."
-#: ../../mod/mail.php:292 ../../mod/message.php:72
+#: ../../mod/mail.php:305
msgid "Delete message"
msgstr "Slett melding"
-#: ../../mod/mail.php:293
+#: ../../mod/mail.php:306
msgid "Recall message"
msgstr "Tilbakekall innlegg"
-#: ../../mod/mail.php:295
+#: ../../mod/mail.php:308
msgid "Message has been recalled."
msgstr "Innlegget har blitt tilbakekalt."
-#: ../../mod/mail.php:312
+#: ../../mod/mail.php:325
msgid "Private Conversation"
msgstr "Privat samtale"
-#: ../../mod/mail.php:316
+#: ../../mod/mail.php:329 ../../mod/message.php:72
msgid "Delete conversation"
msgstr "Slett samtale"
-#: ../../mod/mail.php:318
+#: ../../mod/mail.php:331
msgid ""
"No secure communications available. You <strong>may</strong> be able to "
"respond from the sender's profile page."
msgstr "Ingen sikret kommunikasjon tilgjengelig. Du kan <strong>muligens</strong> greie å svare via senderens profilside."
-#: ../../mod/mail.php:322
+#: ../../mod/mail.php:335
msgid "Send Reply"
msgstr "Send svar"
-#: ../../mod/manage.php:64
-#, php-format
-msgid "You have created %1$.0f of %2$.0f allowed channels."
-msgstr "Du har laget %1$.0f av %2$.0f tillatte kanaler."
-
-#: ../../mod/manage.php:72
-msgid "Create a new channel"
-msgstr "Lag en ny kanal"
-
-#: ../../mod/manage.php:77
-msgid "Channel Manager"
-msgstr "Kanalstyring"
-
-#: ../../mod/manage.php:78
-msgid "Current Channel"
-msgstr "Gjeldende kanal"
-
-#: ../../mod/manage.php:80
-msgid "Attach to one of your channels by selecting it."
-msgstr "Bytt til en av dine kanaler ved å velge den."
-
-#: ../../mod/manage.php:81
-msgid "Default Channel"
-msgstr "Standardkanal"
-
-#: ../../mod/manage.php:82
-msgid "Make Default"
-msgstr "Gjør til standard"
-
#: ../../mod/wall_upload.php:34
msgid "Wall Photos"
msgstr "Veggbilder"
@@ -7109,87 +7728,91 @@ msgstr "er interessert i:"
msgid "No matches"
msgstr "Ingen treff"
-#: ../../mod/menu.php:21
+#: ../../mod/menu.php:31
msgid "Menu updated."
msgstr "Menyen er oppdatert."
-#: ../../mod/menu.php:25
+#: ../../mod/menu.php:35
msgid "Unable to update menu."
msgstr "Ikke i stand til å oppdatere meny."
-#: ../../mod/menu.php:30
+#: ../../mod/menu.php:40
msgid "Menu created."
msgstr "Meny laget."
-#: ../../mod/menu.php:34
+#: ../../mod/menu.php:44
msgid "Unable to create menu."
msgstr "Ikke i stand til å lage meny."
-#: ../../mod/menu.php:57
+#: ../../mod/menu.php:76
msgid "Manage Menus"
msgstr "HÃ¥ndtere menyer"
-#: ../../mod/menu.php:60
+#: ../../mod/menu.php:79
msgid "Drop"
msgstr "Slett"
-#: ../../mod/menu.php:62
+#: ../../mod/menu.php:81
+msgid "Bookmarks allowed"
+msgstr "Bokmerker tillatt"
+
+#: ../../mod/menu.php:82
msgid "Create a new menu"
msgstr "Lag en ny meny"
-#: ../../mod/menu.php:63
+#: ../../mod/menu.php:83
msgid "Delete this menu"
msgstr "Slett denne menyen"
-#: ../../mod/menu.php:64 ../../mod/menu.php:109
+#: ../../mod/menu.php:84 ../../mod/menu.php:125
msgid "Edit menu contents"
msgstr "Endre menyinnholdet"
-#: ../../mod/menu.php:65
+#: ../../mod/menu.php:85
msgid "Edit this menu"
msgstr "Endre denne menyen"
-#: ../../mod/menu.php:80
+#: ../../mod/menu.php:96
msgid "New Menu"
msgstr "Ny meny"
-#: ../../mod/menu.php:81 ../../mod/menu.php:110
+#: ../../mod/menu.php:97 ../../mod/menu.php:126
msgid "Menu name"
msgstr "Menynavn"
-#: ../../mod/menu.php:81 ../../mod/menu.php:110
+#: ../../mod/menu.php:97 ../../mod/menu.php:126
msgid "Must be unique, only seen by you"
msgstr "Må være unik, ses bare av deg"
-#: ../../mod/menu.php:82 ../../mod/menu.php:111
+#: ../../mod/menu.php:98 ../../mod/menu.php:127
msgid "Menu title"
msgstr "Menytittel"
-#: ../../mod/menu.php:82 ../../mod/menu.php:111
+#: ../../mod/menu.php:98 ../../mod/menu.php:127
msgid "Menu title as seen by others"
msgstr "Menytittelen andre ser"
-#: ../../mod/menu.php:83 ../../mod/menu.php:112
+#: ../../mod/menu.php:99 ../../mod/menu.php:128
msgid "Allow bookmarks"
msgstr "Tillat bokmerker"
-#: ../../mod/menu.php:83 ../../mod/menu.php:112
+#: ../../mod/menu.php:99 ../../mod/menu.php:128
msgid "Menu may be used to store saved bookmarks"
msgstr "Menyen kan brukes til å lagre lagrede bokmerker"
-#: ../../mod/menu.php:98
+#: ../../mod/menu.php:114
msgid "Menu deleted."
msgstr "Meny slettet."
-#: ../../mod/menu.php:100
+#: ../../mod/menu.php:116
msgid "Menu could not be deleted."
msgstr "Menyen kunne ikke bli slettet."
-#: ../../mod/menu.php:106
+#: ../../mod/menu.php:122
msgid "Edit Menu"
msgstr "Endre meny"
-#: ../../mod/menu.php:108
+#: ../../mod/menu.php:124
msgid "Add or remove entries to this menu"
msgstr "Legg til eller fjern punkter i denne menyen"
@@ -7205,11 +7828,11 @@ msgstr "Ingen meldinger."
msgid "D, d M Y - g:i A"
msgstr "D, d M Y - g:i A"
-#: ../../mod/new_channel.php:107
+#: ../../mod/new_channel.php:109
msgid "Add a Channel"
msgstr "Legg til en kanal"
-#: ../../mod/new_channel.php:108
+#: ../../mod/new_channel.php:110
msgid ""
"A channel is your own collection of related web pages. A channel can be used"
" to hold social network profiles, blogs, conversation groups and forums, "
@@ -7217,151 +7840,42 @@ msgid ""
"service provider allows."
msgstr "En kanal er din egen samling av relaterte web-sider. En kanal kan brukes til å samle sosiale nettverksprofiler, blogger, samtalegrupper og forum, kjendissider og mye mer. Du kan lage så mange kanaler som din tjenestetilbyder tillater."
-#: ../../mod/new_channel.php:111
+#: ../../mod/new_channel.php:113
msgid "Examples: \"Bob Jameson\", \"Lisa and her Horses\", \"Soccer\", \"Aviation Group\" "
msgstr "Eksempel: \"Ola Nordmann\", \"Lisa og hestene hennes\", \"Fotball\", \"Sykkelgruppa\""
-#: ../../mod/new_channel.php:112
+#: ../../mod/new_channel.php:114
msgid "Choose a short nickname"
msgstr "Velg et kort kallenavn"
-#: ../../mod/new_channel.php:113
+#: ../../mod/new_channel.php:115
msgid ""
"Your nickname will be used to create an easily remembered channel address "
"(like an email address) which you can share with others."
msgstr "Ditt kallenavn brukes til å lage en kanaladresse som er enkel å huske (minner om en e-postadresse) og som du kan dele med andre."
-#: ../../mod/new_channel.php:114
+#: ../../mod/new_channel.php:116
msgid "Or <a href=\"import\">import an existing channel</a> from another location"
msgstr "Eller <a href=\"import\">importerer en eksisterende kanal</a> fra et annet sted."
-#: ../../mod/photos.php:77
-msgid "Page owner information could not be retrieved."
-msgstr "Informasjon om sideeier kunne ikke hentes."
-
-#: ../../mod/photos.php:97
-msgid "Album not found."
-msgstr "Albumet ble ikke funnet."
-
-#: ../../mod/photos.php:119 ../../mod/photos.php:669
-msgid "Delete Album"
-msgstr "Slett album"
-
-#: ../../mod/photos.php:159 ../../mod/photos.php:952
-msgid "Delete Photo"
-msgstr "Slett bilde"
-
-#: ../../mod/photos.php:453
-msgid "No photos selected"
-msgstr "Ingen bilder valgt"
-
-#: ../../mod/photos.php:500
-msgid "Access to this item is restricted."
-msgstr "Tilgang til dette elementet er begrenset."
-
-#: ../../mod/photos.php:574
-#, php-format
-msgid "You have used %1$.2f Mbytes of %2$.2f Mbytes photo storage."
-msgstr "Du har brukt %1$.2f Mbytes av %2$.2f Mbytes i bildelageret."
-
-#: ../../mod/photos.php:577
-#, php-format
-msgid "You have used %1$.2f Mbytes of photo storage."
-msgstr "Du har brukt %1$.2f Mbytes av bildelageret."
-
-#: ../../mod/photos.php:596
-msgid "Upload Photos"
-msgstr "Last opp bilder"
-
-#: ../../mod/photos.php:600 ../../mod/photos.php:664
-msgid "New album name: "
-msgstr "Nytt albumnavn:"
-
-#: ../../mod/photos.php:601
-msgid "or existing album name: "
-msgstr "eller eksisterende albumnavn:"
-
-#: ../../mod/photos.php:602
-msgid "Do not show a status post for this upload"
-msgstr "Ikke lag et statusinnlegg for denne oppdateringen"
+#: ../../mod/new_channel.php:118
+msgid "Channel Type"
+msgstr "Kanaltype"
-#: ../../mod/photos.php:653 ../../mod/photos.php:675 ../../mod/photos.php:1124
-#: ../../mod/photos.php:1139
-msgid "Contact Photos"
-msgstr "Kontaktbilder"
-
-#: ../../mod/photos.php:679
-msgid "Edit Album"
-msgstr "Endre album"
-
-#: ../../mod/photos.php:685
-msgid "Show Newest First"
-msgstr "Vis nyeste først"
-
-#: ../../mod/photos.php:687
-msgid "Show Oldest First"
-msgstr "Vis eldste først"
-
-#: ../../mod/photos.php:730 ../../mod/photos.php:1171
-msgid "View Photo"
-msgstr "Vis foto"
-
-#: ../../mod/photos.php:776
-msgid "Permission denied. Access to this item may be restricted."
-msgstr "Tillatelse avvist. Tilgang til dette elementet kan være begrenset."
-
-#: ../../mod/photos.php:778
-msgid "Photo not available"
-msgstr "Bilde er utilgjengelig"
-
-#: ../../mod/photos.php:838
-msgid "Use as profile photo"
-msgstr "Bruk som profilbilde"
-
-#: ../../mod/photos.php:862
-msgid "View Full Size"
-msgstr "Vis i full størrelse"
-
-#: ../../mod/photos.php:936
-msgid "Edit photo"
-msgstr "Endre bilde"
-
-#: ../../mod/photos.php:938
-msgid "Rotate CW (right)"
-msgstr "Roter med klokka (mot høyre)"
-
-#: ../../mod/photos.php:939
-msgid "Rotate CCW (left)"
-msgstr "Roter mot klokka (venstre)"
-
-#: ../../mod/photos.php:941
-msgid "New album name"
-msgstr "Nytt albumnavn"
-
-#: ../../mod/photos.php:944
-msgid "Caption"
-msgstr "Overskrift"
-
-#: ../../mod/photos.php:946
-msgid "Add a Tag"
-msgstr "Legg til merkelapp"
-
-#: ../../mod/photos.php:949
+#: ../../mod/new_channel.php:119
msgid ""
-"Example: @bob, @Barbara_Jensen, @jim@example.com, #California, #camping"
-msgstr "Eksempel: @ola, @Kari_Nordmann, @jim@example.com, #Norge, #telttur"
+"Please choose a channel type (such as social networking or community forum) "
+"and privacy requirements so we can select the best permissions for you"
+msgstr "Vennligst velg en kanaltype (for eksempel sosialt nettverk eller forum for felleskap) og krav til personvern slik at vi kan velge de beste tillatelsene for deg."
-#: ../../mod/photos.php:1102
-msgid "In This Photo:"
-msgstr "I dette bildet:"
-
-#: ../../mod/photos.php:1177
-msgid "View Album"
-msgstr "Vis album"
+#: ../../mod/home.php:46
+msgid "Red Matrix - &quot;The Network&quot;"
+msgstr "Red Matrix - &quot;Nettverket&quot;"
-#: ../../mod/photos.php:1186
-msgid "Recent Photos"
-msgstr "Nye bilder"
+#: ../../mod/home.php:101
+#, php-format
+msgid "Welcome to %s"
+msgstr "Velkommen til %s"
#: ../../mod/notifications.php:26
msgid "Invalid request identifier."
@@ -7379,6 +7893,14 @@ msgstr "Ingen flere systemvarsler."
msgid "System Notifications"
msgstr "Systemvarsler"
+#: ../../mod/xchan.php:6
+msgid "Xchan Lookup"
+msgstr "Xchan oppslag"
+
+#: ../../mod/xchan.php:9
+msgid "Lookup xchan beginning with (or webbie): "
+msgstr "Slå opp xchan som begynner med (eller webbie):"
+
#: ../../mod/oexchange.php:23
msgid "Unable to find your hub."
msgstr "Ikke i stand til å finne hubben din."
@@ -7391,10 +7913,6 @@ msgstr "Innlegg vellykket."
msgid "invalid target signature"
msgstr "MÃ¥lets signatur er ugyldig"
-#: ../../mod/openid.php:26
-msgid "OpenID protocol error. No ID returned."
-msgstr "OpenID protokollfeil. Ingen ID ble returnert."
-
#: ../../mod/appman.php:28 ../../mod/appman.php:44
msgid "App installed."
msgstr "App installert."
@@ -7443,10 +7961,50 @@ msgstr "Pris på app"
msgid "Location (URL) to purchase app"
msgstr "Plassering (URL) for å kjøpe app"
+#: ../../mod/poll.php:64
+msgid "Poll"
+msgstr "Spørring"
+
+#: ../../mod/poll.php:69
+msgid "View Results"
+msgstr "Vis resultater"
+
+#: ../../mod/removeaccount.php:30
+msgid ""
+"Account removals are not allowed within 48 hours of changing the account "
+"password."
+msgstr "Sletting av kontoer er ikke tillatt innen 48 timer etter endring av kontopassordet."
+
+#: ../../mod/removeaccount.php:57
+msgid "Remove This Account"
+msgstr "Slett denne kontoen"
+
+#: ../../mod/removeaccount.php:58
+msgid ""
+"This will completely remove this account including all its channels from the"
+" network. Once this has been done it is not recoverable."
+msgstr "Dette vil fullstendig slette denne kontoen inkludert alle dens kanaler fra nettverket. NÃ¥r dette er gjort kan det ikke angres."
+
+#: ../../mod/removeaccount.php:60
+msgid ""
+"Remove this account, all its channels and all its channel clones from the "
+"network"
+msgstr "Slett denne kontoen, alle dens kanaler og alle dens kanalkloner fra dette nettverket"
+
+#: ../../mod/removeaccount.php:60
+msgid ""
+"By default only the instances of the channels located on this hub will be "
+"removed from the network"
+msgstr "Som standard vil bare forekomster av kanalene lokalisert på denne hubben bli slettet fra nettverket"
+
+#: ../../mod/service_limits.php:19
+msgid "No service class restrictions found."
+msgstr "Ingen restriksjoner er funnet i tjenesteklasse."
+
#: ../../view/theme/apw/php/config.php:202
#: ../../view/theme/apw/php/config.php:236
msgid "Schema Default"
-msgstr "Standardskjema"
+msgstr "Standard skjema"
#: ../../view/theme/apw/php/config.php:203
msgid "Sans-Serif"
@@ -7479,7 +8037,7 @@ msgstr "Angi skrifttype"
#: ../../view/theme/apw/php/config.php:263
msgid "Set iconset"
-msgstr "Angi ikonsett"
+msgstr "Angi ikonutvalg"
#: ../../view/theme/apw/php/config.php:264
msgid "Set big shadow size, default 15px 15px 15px"
@@ -7490,12 +8048,12 @@ msgid "Set small shadow size, default 5px 5px 5px"
msgstr "Angi liten skyggestørrelse, standard 5px 5px 5px"
#: ../../view/theme/apw/php/config.php:266
-msgid "Set shadow colour, default #000"
+msgid "Set shadow color, default #000"
msgstr "Angi skyggefarge, standard #000"
#: ../../view/theme/apw/php/config.php:267
msgid "Set radius size, default 5px"
-msgstr "Angi størrelsen på radius, standard 5px"
+msgstr "Angi radiusstørrelse, standard 5px"
#: ../../view/theme/apw/php/config.php:268
msgid "Set line-height for posts and comments"
@@ -7510,39 +8068,39 @@ msgid "Set background attachment"
msgstr "Angi bakgrunnsvedlegg"
#: ../../view/theme/apw/php/config.php:271
-msgid "Set background colour"
-msgstr "Angi bakgrunnsbilde"
+msgid "Set background color"
+msgstr "Angi bakgrunnsfarge"
#: ../../view/theme/apw/php/config.php:272
msgid "Set section background image"
msgstr "Angi seksjonens bakgrunnsbilde"
#: ../../view/theme/apw/php/config.php:273
-msgid "Set section background colour"
+msgid "Set section background color"
msgstr "Angi seksjonens bakgrunnsfarge"
#: ../../view/theme/apw/php/config.php:274
-msgid "Set colour of items - use hex"
+msgid "Set color of items - use hex"
msgstr "Angi fargen til elementer - bruk hex"
#: ../../view/theme/apw/php/config.php:275
-msgid "Set colour of links - use hex"
+msgid "Set color of links - use hex"
msgstr "Angi fargen til lenker - bruk hex"
#: ../../view/theme/apw/php/config.php:276
msgid "Set max-width for items. Default 400px"
-msgstr "Angi største bredde for elementer. Standard 400px."
+msgstr "Angi maksimal bredde for elementer. Standard 400px"
#: ../../view/theme/apw/php/config.php:277
msgid "Set min-width for items. Default 240px"
-msgstr "Angi minste bredde for elementer. Standard 240px."
+msgstr "Angi minimumsbredde for elementer. Standard 240px"
#: ../../view/theme/apw/php/config.php:278
msgid "Set the generic content wrapper width. Default 48%"
-msgstr "Angi bredden til den generelle innholdsinnpakningen. Standard 48%"
+msgstr "Angi den generelle bredden for innpakking av innhold. Standard 48%"
#: ../../view/theme/apw/php/config.php:279
-msgid "Set colour of fonts - use hex"
+msgid "Set color of fonts - use hex"
msgstr "Angi skriftfargen - bruk hex"
#: ../../view/theme/apw/php/config.php:280
@@ -7551,7 +8109,7 @@ msgstr "Angi størrelsen på bakgrunnselementet"
#: ../../view/theme/apw/php/config.php:281
msgid "Item opacity"
-msgstr "Elementets dekkevne"
+msgstr "Elementers dekkevne"
#: ../../view/theme/apw/php/config.php:282
msgid "Display post previews only"
@@ -7563,7 +8121,7 @@ msgstr "Vis sidestolpe på kanalsiden"
#: ../../view/theme/apw/php/config.php:284
msgid "Colour of the navigation bar"
-msgstr "Fargen til navigasjonslinjen"
+msgstr "Fargen på navigasjonslinjen"
#: ../../view/theme/apw/php/config.php:285
msgid "Item float"
@@ -7604,52 +8162,56 @@ msgstr "Topptekstbilde"
msgid "Header image only on profile pages"
msgstr "Topptekstbilde bare på profilsider"
+#: ../../view/theme/redbasic/php/config.php:84
+msgid "Light (Red Matrix default)"
+msgstr "Lys (Red Matrix standard)"
+
#: ../../view/theme/redbasic/php/config.php:104
msgid "Narrow navbar"
msgstr "Smal navigasjonslinje"
#: ../../view/theme/redbasic/php/config.php:105
-msgid "Navigation bar background colour"
+msgid "Navigation bar background color"
msgstr "Navigasjonslinjens bakgrunnsfarge"
#: ../../view/theme/redbasic/php/config.php:106
-msgid "Navigation bar gradient top colour"
+msgid "Navigation bar gradient top color"
msgstr "Navigasjonslinjens graderte toppfarge"
#: ../../view/theme/redbasic/php/config.php:107
-msgid "Navigation bar gradient bottom colour"
+msgid "Navigation bar gradient bottom color"
msgstr "Navigasjonslinjens graderte bunnfarge"
#: ../../view/theme/redbasic/php/config.php:108
-msgid "Navigation active button gradient top colour"
+msgid "Navigation active button gradient top color"
msgstr "Aktiv navigasjonsknapp sin graderte toppfarge"
#: ../../view/theme/redbasic/php/config.php:109
-msgid "Navigation active button gradient bottom colour"
+msgid "Navigation active button gradient bottom color"
msgstr "Aktiv navigasjonsknapp sin graderte bunnfarge"
#: ../../view/theme/redbasic/php/config.php:110
-msgid "Navigation bar border colour "
+msgid "Navigation bar border color "
msgstr "Navigasjonslinjens kantfarge"
#: ../../view/theme/redbasic/php/config.php:111
-msgid "Navigation bar icon colour "
+msgid "Navigation bar icon color "
msgstr "Navigasjonslinjens ikonfarge"
#: ../../view/theme/redbasic/php/config.php:112
-msgid "Navigation bar active icon colour "
+msgid "Navigation bar active icon color "
msgstr "Navigasjonslinjens aktive ikoners farge"
#: ../../view/theme/redbasic/php/config.php:113
-msgid "link colour"
+msgid "link color"
msgstr "lenkefarge"
#: ../../view/theme/redbasic/php/config.php:114
-msgid "Set font-colour for banner"
+msgid "Set font-color for banner"
msgstr "Angi skriftfargen for banneret"
#: ../../view/theme/redbasic/php/config.php:115
-msgid "Set the background colour"
+msgid "Set the background color"
msgstr "Angi bakgrunnsfargen"
#: ../../view/theme/redbasic/php/config.php:116
@@ -7657,15 +8219,15 @@ msgid "Set the background image"
msgstr "Angi bakgrunnsbilde"
#: ../../view/theme/redbasic/php/config.php:117
-msgid "Set the background colour of items"
+msgid "Set the background color of items"
msgstr "Angi bakgrunnsfargen til elementer"
#: ../../view/theme/redbasic/php/config.php:118
-msgid "Set the background colour of comments"
+msgid "Set the background color of comments"
msgstr "Angi bakgrunnsfargen til kommentarer"
#: ../../view/theme/redbasic/php/config.php:119
-msgid "Set the border colour of comments"
+msgid "Set the border color of comments"
msgstr "Angi kantfargen til kommentarer"
#: ../../view/theme/redbasic/php/config.php:120
@@ -7673,11 +8235,11 @@ msgid "Set the indent for comments"
msgstr "Angi innrykket til kommentarer"
#: ../../view/theme/redbasic/php/config.php:121
-msgid "Set the basic colour for item icons"
+msgid "Set the basic color for item icons"
msgstr "Angi grunnfargen for elementikoner"
#: ../../view/theme/redbasic/php/config.php:122
-msgid "Set the hover colour for item icons"
+msgid "Set the hover color for item icons"
msgstr "Angi fargen til elementikoner ved berøring"
#: ../../view/theme/redbasic/php/config.php:123
@@ -7685,7 +8247,7 @@ msgid "Set font-size for the entire application"
msgstr "Angi skriftstørrelsen for hele programmet"
#: ../../view/theme/redbasic/php/config.php:125
-msgid "Set font-colour for posts and comments"
+msgid "Set font-color for posts and comments"
msgstr "Angi skriftfargen for innlegg og kommentarer"
#: ../../view/theme/redbasic/php/config.php:126
@@ -7724,41 +8286,41 @@ msgstr "Slurvete fotoalbum"
msgid "Are you a clean desk or a messy desk person?"
msgstr "Er du en person med ryddig arbeidsbord eller et rotete arbeidsbord?"
-#: ../../boot.php:1265
+#: ../../boot.php:1293
#, php-format
msgid "Update %s failed. See error logs."
msgstr "Oppdatering %s mislyktes. Se feilloggen."
-#: ../../boot.php:1268
+#: ../../boot.php:1296
#, php-format
msgid "Update Error at %s"
msgstr "Oppdateringsfeil ved %s"
-#: ../../boot.php:1432
+#: ../../boot.php:1463
msgid ""
"Create an account to access services and applications within the Red Matrix"
msgstr "Lag en konto for å få tilgang til tjenester og programmer i Red Matrix"
-#: ../../boot.php:1460
+#: ../../boot.php:1489
msgid "Password"
msgstr "Passord"
-#: ../../boot.php:1461
+#: ../../boot.php:1490
msgid "Remember me"
msgstr "Husk meg"
-#: ../../boot.php:1466
+#: ../../boot.php:1493
msgid "Forgot your password?"
msgstr "Glemt passordet ditt?"
-#: ../../boot.php:1531
+#: ../../boot.php:1567
msgid "permission denied"
msgstr "tillatelse avvist"
-#: ../../boot.php:1532
+#: ../../boot.php:1568
msgid "Got Zot?"
msgstr "Har du Zot?"
-#: ../../boot.php:1962
+#: ../../boot.php:2030
msgid "toggle mobile"
msgstr "Skru på mobil"
diff --git a/view/nb-no/request_notify_eml.tpl b/view/nb-no/request_notify_eml.tpl
deleted file mode 100644
index d01b8ff27..000000000
--- a/view/nb-no/request_notify_eml.tpl
+++ /dev/null
@@ -1,17 +0,0 @@
-
-Dear {{$myname}},
-
-You have just received a connection request at {{$sitename}}
-
-from '{{$requestor}}'.
-
-You may visit their profile at {{$url}}.
-
-Please login to your site to view the complete introduction
-and approve or ignore/cancel the request.
-
-{{$siteurl}}
-
-Regards,
-
- {{$sitename}} administrator
diff --git a/view/nb-no/strings.php b/view/nb-no/strings.php
index fe770c326..45172963c 100644
--- a/view/nb-no/strings.php
+++ b/view/nb-no/strings.php
@@ -7,16 +7,6 @@ function string_plural_select_nb_no($n){
;
$a->strings["Cannot locate DNS info for database server '%s'"] = "Kan ikke finne DNS-informasjon om databasetjener '%s'";
$a->strings["Profile Photos"] = "Profilbilder";
-$a->strings["Image/photo"] = "Bilde/fotografi";
-$a->strings["Encrypted content"] = "Kryptert innhold";
-$a->strings["QR code"] = "QR-kode";
-$a->strings["%1\$s wrote the following %2\$s %3\$s"] = "%1\$s skrev følgende %2\$s %3\$s";
-$a->strings["post"] = "innlegg";
-$a->strings["$1 wrote:"] = "$1 skrev:";
-$a->strings["Embedded content"] = "Innebygget innhold";
-$a->strings["Embedding disabled"] = "Innbygging avskrudd";
-$a->strings["created a new post"] = "laget et nytt innlegg";
-$a->strings["commented on %s's post"] = "kommenterte på %s sitt innlegg";
$a->strings["photo"] = "foto";
$a->strings["event"] = "hendelse";
$a->strings["channel"] = "kanal";
@@ -31,7 +21,8 @@ $a->strings["__ctx:mood__ %1\$s is %2\$s"] = "%1\$s er %2\$s";
$a->strings["Select"] = "Velg";
$a->strings["Delete"] = "Slett";
$a->strings["Private Message"] = "Privat melding";
-$a->strings["Message is verified"] = "Innlegg er bekreftet";
+$a->strings["Message signature validated"] = "Innleggets signatur er bekreftet";
+$a->strings["Message signature incorrect"] = "Innleggets signatur er feil";
$a->strings["View %s's profile @ %s"] = "Vis %s sin profile @ %s";
$a->strings["Categories:"] = "Kategorier:";
$a->strings["Filed under:"] = "Sortert under:";
@@ -49,9 +40,11 @@ $a->strings["View Status"] = "Vis status";
$a->strings["View Profile"] = "Vis profil";
$a->strings["View Photos"] = "Vis bilder";
$a->strings["Matrix Activity"] = "Matrix-aktivitet";
+$a->strings["Connect"] = "Koble";
$a->strings["Edit Contact"] = "Endre kontakt";
$a->strings["Send PM"] = "Send privat melding";
$a->strings["Poke"] = "Prikk";
+$a->strings["Unknown"] = "Ukjent";
$a->strings["%s likes this."] = "%s liker dette.";
$a->strings["%s doesn't like this."] = "%s liker ikke dette.";
$a->strings["<span %1\$s>%2\$d people</span> like this."] = array(
@@ -132,6 +125,15 @@ $a->strings["Bookmarks"] = "Bokmerker";
$a->strings["Saved Bookmarks"] = "Lagrede bokmerker";
$a->strings["Webpages"] = "Websider";
$a->strings["Manage Webpages"] = "HÃ¥ndtere websider";
+$a->strings["created a new post"] = "laget et nytt innlegg";
+$a->strings["commented on %s's post"] = "kommenterte på %s sitt innlegg";
+$a->strings["Sort Options"] = "Sorteringsmuligheter";
+$a->strings["Alphabetic"] = "Alfabetisk";
+$a->strings["Reverse Alphabetic"] = "Omvendt alfabetisk";
+$a->strings["Newest to Oldest"] = "Nyest til eldst";
+$a->strings["Enable Safe Search"] = "Skru på Trygt søk";
+$a->strings["Disable Safe Search"] = "Skru av Trygt søk";
+$a->strings["Safe Mode"] = "Trygt modus";
$a->strings["New Page"] = "Ny side";
$a->strings["Edit"] = "Endre";
$a->strings["View"] = "Vis";
@@ -140,136 +142,102 @@ $a->strings["Page Link"] = "Sidelenke";
$a->strings["Title"] = "Tittel";
$a->strings["Created"] = "Laget";
$a->strings["Edited"] = "Endret";
-$a->strings["The form security token was not correct. This probably happened because the form has been opened for too long (>3 hours) before submitting it."] = "Skjemaets sikkerhetspollett var ikke gyldig. Dette skjedde antakelig fordi skjemaet har vært åpnet for lenge (>3 timer) før det ble sendt inn.";
-$a->strings["Not a valid email address"] = "Ikke en gyldig e-postadresse";
-$a->strings["Your email domain is not among those allowed on this site"] = "Ditt e-postdomene er ikke blant de som er tillatt på dette stedet";
-$a->strings["Your email address is already registered at this site."] = "Din e-postadresse er allerede registrert på dette nettstedet.";
-$a->strings["An invitation is required."] = "En invitasjon er påkrevd.";
-$a->strings["Invitation could not be verified."] = "Invitasjon kunne ikke bekreftes.";
-$a->strings["Please enter the required information."] = "Vennligst skriv inn nødvendig informasjon.";
-$a->strings["Failed to store account information."] = "Mislyktes med å lagre kontoinformasjon.";
-$a->strings["Registration request at %s"] = "Registreringsforespørsel hos %s";
-$a->strings["Administrator"] = "Administrator";
-$a->strings["your registration password"] = "ditt registreringspassord";
-$a->strings["Registration details for %s"] = "Registreringsdetaljer for %s";
-$a->strings["Account approved."] = "Konto godkjent.";
-$a->strings["Registration revoked for %s"] = "Registrering trukket tilbake for %s";
+$a->strings["Missing room name"] = "Mangler romnavn";
+$a->strings["Duplicate room name"] = "Duplikat romnavn";
+$a->strings["Invalid room specifier."] = "Ugyldig rom-spesifisering";
+$a->strings["Room not found."] = "Rommet ble ikke funnet.";
$a->strings["Permission denied."] = "Tillatelse avslått.";
-$a->strings["Image exceeds website size limit of %lu bytes"] = "Bilde overstiger nettstedets størrelsesbegrensning på %lu bytes";
-$a->strings["Image file is empty."] = "Bildefilen er tom.";
-$a->strings["Unable to process image"] = "Kan ikke behandle bildet";
-$a->strings["Photo storage failed."] = "Bildelagring mislyktes.";
-$a->strings["Upload New Photos"] = "Last opp nye bilder";
-$a->strings["Visible to everybody"] = "Synlig for alle";
-$a->strings["Show"] = "Vis";
-$a->strings["Don't show"] = "Ikke vis";
-$a->strings["Permissions"] = "Tillatelser";
-$a->strings["Close"] = "Lukk";
+$a->strings["Room is full"] = "Rommet er fullt";
+$a->strings["Embedded content"] = "Innebygget innhold";
+$a->strings["Embedding disabled"] = "Innbygging avskrudd";
+$a->strings["Categories"] = "Kategorier";
+$a->strings["Apps"] = "Apper";
+$a->strings["System"] = "System";
+$a->strings["Create Personal App"] = "Lag personlig app";
+$a->strings["Edit Personal App"] = "Endre personlig app";
+$a->strings["Ignore/Hide"] = "Ignorer/Skjul";
+$a->strings["Suggestions"] = "Forslag";
+$a->strings["See more..."] = "Se mer...";
+$a->strings["You have %1$.0f of %2$.0f allowed connections."] = "Du har %1$.0f av %2$.0f tillate forbindelser.";
+$a->strings["Add New Connection"] = "Legg til ny forbindelse";
+$a->strings["Enter the channel address"] = "Skriv kanal-adressen";
+$a->strings["Example: bob@example.com, http://example.com/barbara"] = "Eksempel: ola.nordmann@eksempel.no, http://eksempel.no/karinordmann";
+$a->strings["Notes"] = "Merknader";
+$a->strings["Save"] = "Lagre";
+$a->strings["Remove term"] = "Fjern begrep";
+$a->strings["Saved Searches"] = "Lagrede søk";
+$a->strings["add"] = "legg til";
+$a->strings["Saved Folders"] = "Lagrede mapper";
+$a->strings["Everything"] = "Alt";
+$a->strings["Archives"] = "Arkiv";
+$a->strings["Refresh"] = "Forny";
+$a->strings["Me"] = "Meg";
+$a->strings["Best Friends"] = "Bestevenner";
+$a->strings["Friends"] = "Venner";
+$a->strings["Co-workers"] = "Medarbeidere";
+$a->strings["Former Friends"] = "Tidligere venner";
+$a->strings["Acquaintances"] = "Bekjente";
+$a->strings["Everybody"] = "Alle";
+$a->strings["Account settings"] = "Kontoinnstillinger";
+$a->strings["Channel settings"] = "Kanalinnstillinger";
+$a->strings["Additional features"] = "Tilleggsfunksjoner";
+$a->strings["Feature settings"] = "Funksjonsinnstillinger";
+$a->strings["Display settings"] = "Visningsinnstillinger";
+$a->strings["Connected apps"] = "Tilkoblede app-er";
+$a->strings["Export channel"] = "Eksporter kanal";
+$a->strings["Export content"] = "Eksporter innhold";
+$a->strings["Connection Default Permissions"] = "Forbindelsens standard tillatelser";
+$a->strings["Premium Channel Settings"] = "Premiumkanal-innstillinger";
+$a->strings["Channel Sources"] = "Kanalkilder";
+$a->strings["Settings"] = "Innstillinger";
+$a->strings["Messages"] = "Meldinger";
+$a->strings["Check Mail"] = "Sjekk meldinger";
+$a->strings["New Message"] = "Ny melding";
+$a->strings["Chat Rooms"] = "Chatrom";
+$a->strings["Bookmarked Chatrooms"] = "Bokmerkede chatrom";
+$a->strings["Suggested Chatrooms"] = "Foreslåtte chatrom";
+$a->strings["Invalid data packet"] = "Ugyldig datapakke";
+$a->strings["Unable to verify channel signature"] = "Ikke i stand til å sjekke kanalsignaturen";
+$a->strings["Unable to verify site signature for %s"] = "Ikke i stand til å bekrefte signaturen til %s";
$a->strings[" and "] = "og";
$a->strings["public profile"] = "offentlig profil";
$a->strings["%1\$s changed %2\$s to &ldquo;%3\$s&rdquo;"] = "%1\$s endret %2\$s til &ldquo;%3\$s&rdquo;";
$a->strings["Visit %1\$s's %2\$s"] = "Besøk %1\$s sitt %2\$s";
$a->strings["%1\$s has an updated %2\$s, changing %3\$s."] = "%1\$s har oppdatert %2\$s, endret %3\$s.";
-$a->strings["Public Timeline"] = "Offentlig tidslinje";
-$a->strings["Item was not found."] = "Elementet ble ikke funnet.";
-$a->strings["No source file."] = "Ingen kildefil.";
-$a->strings["Cannot locate file to replace"] = "Kan ikke finne filen som skal byttes ut";
-$a->strings["Cannot locate file to revise/update"] = "Finner ikke filen som skal revideres/oppdateres";
-$a->strings["File exceeds size limit of %d"] = "Filens størrelse overgår grensen på %d";
-$a->strings["You have reached your limit of %1$.0f Mbytes attachment storage."] = "Du har nådd din lagringsgrense for vedlegg på %1$.0f Mbytes.";
-$a->strings["File upload failed. Possible system limit or action terminated."] = "Mislyktes med å laste opp filen. Mulig systemgrense eller handling avbrutt.";
-$a->strings["Stored file could not be verified. Upload failed."] = "Lagret fil kunne ikke bekreftes. Opplasting mislyktes.";
-$a->strings["Path not available."] = "Stien er ikke tilgjengelig.";
-$a->strings["Empty pathname"] = "Tomt sti-navn";
-$a->strings["duplicate filename or path"] = "duplikat av filnavn eller sti";
-$a->strings["Path not found."] = "Stien ble ikke funnet.";
-$a->strings["mkdir failed."] = "mkdir mislyktes.";
-$a->strings["database storage failed."] = "databaselagring mislyktes.";
+$a->strings["Attachments:"] = "Vedlegg:";
$a->strings["l F d, Y \\@ g:i A"] = "l F d, Y \\@ g:i A";
+$a->strings["Redmatrix event notification:"] = "RedMatrix hendelsesvarsling:";
$a->strings["Starts:"] = "Starter:";
$a->strings["Finishes:"] = "Slutter:";
$a->strings["Location:"] = "Plassering:";
-$a->strings["Logout"] = "Logg ut";
-$a->strings["End this session"] = "Avslutt denne økten";
-$a->strings["Home"] = "Hjem";
-$a->strings["Your posts and conversations"] = "Dine innlegg og samtaler";
-$a->strings["Your profile page"] = "Din profilside";
-$a->strings["Edit Profiles"] = "Endre profiler";
-$a->strings["Manage/Edit profiles"] = "HÃ¥ndter/endre profiler";
-$a->strings["Your photos"] = "Dine bilder";
-$a->strings["Your files"] = "Dine filer";
-$a->strings["Chat"] = "Chat";
-$a->strings["Your chatrooms"] = "Dine chatterom";
-$a->strings["Your bookmarks"] = "Dine bokmerker";
-$a->strings["Your webpages"] = "Dine websider";
-$a->strings["Login"] = "Logg inn";
-$a->strings["Sign in"] = "Logg på";
-$a->strings["%s - click to logout"] = "%s - klikk for å logge ut";
-$a->strings["Click to authenticate to your home hub"] = "Klikk for å godkjennes mot din hjemme-hub";
-$a->strings["Home Page"] = "Hjemmeside";
-$a->strings["Register"] = "Registrer";
-$a->strings["Create an account"] = "Lag en konto";
-$a->strings["Help"] = "Hjelp";
-$a->strings["Help and documentation"] = "Hjelp og dokumentasjon";
-$a->strings["Apps"] = "Apper";
-$a->strings["Applications, utilities, links, games"] = "Programmer, verktøy, lenker, spill";
-$a->strings["Search"] = "Søk";
-$a->strings["Search site content"] = "Søk stedets innhold";
-$a->strings["Directory"] = "Katalog";
-$a->strings["Channel Locator"] = "Kanal-finner";
-$a->strings["Matrix"] = "Matrix";
-$a->strings["Your matrix"] = "Din matrix";
-$a->strings["Mark all matrix notifications seen"] = "Merk alle matrix-varsler som sett";
-$a->strings["Channel Home"] = "Kanalhjem";
-$a->strings["Channel home"] = "Kanalhjem";
-$a->strings["Mark all channel notifications seen"] = "Merk alle kanalvarsler som sett";
-$a->strings["Connections"] = "Forbindelser";
-$a->strings["Notices"] = "Varsel";
-$a->strings["Notifications"] = "Varsler";
-$a->strings["See all notifications"] = "Se alle varsler";
-$a->strings["Mark all system notifications seen"] = "Merk alle systemvarsler som sett";
-$a->strings["Mail"] = "Melding";
-$a->strings["Private mail"] = "Privat post";
-$a->strings["See all private messages"] = "Se alle private meldinger";
-$a->strings["Mark all private messages seen"] = "Merk alle private meldinger som sett";
-$a->strings["Inbox"] = "Innboks";
-$a->strings["Outbox"] = "Utboks";
-$a->strings["New Message"] = "Ny melding";
-$a->strings["Events"] = "Hendelser";
-$a->strings["Event Calendar"] = "Kalender";
-$a->strings["See all events"] = "Se alle hendelser";
-$a->strings["Mark all events seen"] = "Merk alle hendelser som sett";
-$a->strings["Channel Select"] = "Kanaler";
-$a->strings["Manage Your Channels"] = "HÃ¥ndter dine kanaler";
-$a->strings["Settings"] = "Innstillinger";
-$a->strings["Account/Channel Settings"] = "Konto-/kanal-innstillinger";
-$a->strings["Admin"] = "Administrator";
-$a->strings["Site Setup and Configuration"] = "Nettstedsoppsett og -konfigurasjon";
-$a->strings["Nothing new here"] = "Ikke noe nytt her";
-$a->strings["Please wait..."] = "Vennligst vent...";
+$a->strings["parent"] = "opp et nivå";
+$a->strings["Collection"] = "Samling";
+$a->strings["Principal"] = "Viktigste";
+$a->strings["Addressbook"] = "Adressebok";
+$a->strings["Calendar"] = "Kalender";
+$a->strings["Schedule Inbox"] = "Tidsplan innboks";
+$a->strings["Schedule Outbox"] = "Tidsplan utboks";
+$a->strings["%1\$s used"] = "%1\$s brukt";
+$a->strings["%1\$s used of %2\$s (%3\$s&#37;)"] = "%1\$s brukt av %2\$s (%3\$s&#37;)";
+$a->strings["Name"] = "Navn";
+$a->strings["Type"] = "Type";
+$a->strings["Size"] = "Størrelse";
+$a->strings["Last Modified"] = "Sist endret";
+$a->strings["Total"] = "Totalt";
+$a->strings["Create new folder"] = "Lag ny mappe";
+$a->strings["Create"] = "Lag";
+$a->strings["Upload file"] = "Last opp fil";
+$a->strings["Upload"] = "Last opp";
$a->strings["%1\$s's bookmarks"] = "%1\$s sine bokmerker";
-$a->strings["Missing room name"] = "Mangler romnavn";
-$a->strings["Duplicate room name"] = "Duplikat romnavn";
-$a->strings["Invalid room specifier."] = "Ugyldig rom-spesifisering";
-$a->strings["Room not found."] = "Rommet ble ikke funnet.";
-$a->strings["Room is full"] = "Rommet er fullt";
-$a->strings["Tags"] = "Merkelapper";
-$a->strings["Keywords"] = "Nøkkelord";
-$a->strings["have"] = "har";
-$a->strings["has"] = "har";
-$a->strings["want"] = "ønsker";
-$a->strings["wants"] = "ønsker";
-$a->strings["like"] = "liker";
-$a->strings["likes"] = "liker";
-$a->strings["dislike"] = "misliker";
-$a->strings["dislikes"] = "misliker";
+$a->strings["Channel is blocked on this site."] = "Kanalen er blokkert på dette nettstedet.";
+$a->strings["Channel location missing."] = "Kanalplassering mangler.";
+$a->strings["Response from remote channel was incomplete."] = "Svaret fra den andre kanalen var ikke komplett.";
+$a->strings["Channel was deleted and no longer exists."] = "Kanalen er slettet og finnes ikke lenger.";
+$a->strings["Protocol disabled."] = "Protokollen er avskrudd.";
+$a->strings["Channel discovery failed."] = "Kanaloppdagelse mislyktes.";
+$a->strings["local account not found."] = "lokal konto ble ikke funnet.";
+$a->strings["Cannot connect to yourself."] = "Kan ikke lage forbindelse med deg selv.";
$a->strings["Default"] = "Standard";
-$a->strings["Unknown | Not categorised"] = "Ukjent | Ikke kategorisert";
-$a->strings["Block immediately"] = "Blokker umiddelbart";
-$a->strings["Shady, spammer, self-marketer"] = "Lyssky, utsender av søppelpost, egenkampanje";
-$a->strings["Known to me, but no opinion"] = "Bekjent av meg, men jeg er uten mening";
-$a->strings["OK, probably harmless"] = "OK, antakelig harmløs";
-$a->strings["Reputable, has my trust"] = "Hederlig, har min tillit";
$a->strings["Frequently"] = "Ofte";
$a->strings["Hourly"] = "Hver time";
$a->strings["Twice daily"] = "To ganger daglig";
@@ -299,45 +267,12 @@ $a->strings["Find"] = "Finn";
$a->strings["Channel Suggestions"] = "Kanalforslag";
$a->strings["Random Profile"] = "Tilfeldig profil";
$a->strings["Invite Friends"] = "Inviter venner";
-$a->strings["Exammple: name=fred and country=iceland"] = "Eksempel: name=fred og country=iceland";
-$a->strings["Advanced Find"] = "Avansert finn";
-$a->strings["Saved Folders"] = "Lagrede mapper";
-$a->strings["Everything"] = "Alt";
-$a->strings["Categories"] = "Kategorier";
+$a->strings["Advanced example: name=fred and country=iceland"] = "Avansert eksempel: navn=fred og land=island";
$a->strings["%d connection in common"] = array(
0 => "%d forbindelse felles",
1 => "%d forbindelser felles",
);
$a->strings["show more"] = "vis mer";
-$a->strings["This event has been added to your calendar."] = "Denne hendelsen er lagt til i din kalender.";
-$a->strings["Edit File properties"] = "Endre filegenskaper";
-$a->strings["Miscellaneous"] = "Forskjellig";
-$a->strings["year"] = "Ã¥r";
-$a->strings["month"] = "måned";
-$a->strings["day"] = "dag";
-$a->strings["never"] = "aldri";
-$a->strings["less than a second ago"] = "for mindre enn ett sekund siden";
-$a->strings["years"] = "Ã¥r";
-$a->strings["months"] = "måneder";
-$a->strings["week"] = "uke";
-$a->strings["weeks"] = "uker";
-$a->strings["days"] = "dager";
-$a->strings["hour"] = "time";
-$a->strings["hours"] = "timer";
-$a->strings["minute"] = "minutt";
-$a->strings["minutes"] = "minutter";
-$a->strings["second"] = "sekund";
-$a->strings["seconds"] = "sekunder";
-$a->strings["%1\$d %2\$s ago"] = "%1\$d %2\$s siden";
-$a->strings["%1\$s's birthday"] = "%1\$s sin fødselsdag";
-$a->strings["Happy Birthday %1\$s"] = "Gratulerer med dagen, %1\$s !";
-$a->strings["Sort Options"] = "Sorteringsmuligheter";
-$a->strings["Alphabetic"] = "Alfabetisk";
-$a->strings["Reverse Alphabetic"] = "Omvendt alfabetisk";
-$a->strings["Newest to Oldest"] = "Nyest til eldst";
-$a->strings["Enable Safe Search"] = "Skru på Trygt søk";
-$a->strings["Disable Safe Search"] = "Skru av Trygt søk";
-$a->strings["Safe Mode"] = "Trygt modus";
$a->strings["Red Matrix Notification"] = "Red Matrix-varsling";
$a->strings["redmatrix"] = "redmatrix";
$a->strings["Thank You,"] = "Tusen takk,";
@@ -377,15 +312,146 @@ $a->strings["%1\$s, you've received [zrl=%2\$s]a friend suggestion[/zrl] for %3\
$a->strings["Name:"] = "Navn:";
$a->strings["Photo:"] = "Bilde:";
$a->strings["Please visit %s to approve or reject the suggestion."] = "Vennligst besøk %s for å godkjenne eller avslå dette forslaget.";
+$a->strings["[Red:Notify]"] = "[Red:Notify]";
+$a->strings["This event has been added to your calendar."] = "Denne hendelsen er lagt til i din kalender.";
+$a->strings["A deleted group with this name was revived. Existing item permissions <strong>may</strong> apply to this group and any future members. If this is not what you intended, please create another group with a different name."] = "En slettet gruppe med dette navnet ble gjenopprettet. Eksisterende tillatelser for elementet <strong>kan</strong> gjelde for denne gruppen og fremtidige medlemmer. Hvis du ønsket noe annet, vennligst lag en ny gruppe med et annet navn.";
+$a->strings["Default privacy group for new contacts"] = "Standard personverngruppe for nye kontakter";
+$a->strings["All Channels"] = "Alle kanaler";
+$a->strings["edit"] = "endre";
+$a->strings["Collections"] = "Samlinger";
+$a->strings["Edit collection"] = "Endre samling";
+$a->strings["Create a new collection"] = "Lag en ny samling";
+$a->strings["Channels not in any collection"] = "Kanaler som ikke er i noen samling";
+$a->strings["Image/photo"] = "Bilde/fotografi";
+$a->strings["Encrypted content"] = "Kryptert innhold";
+$a->strings["Install design element: "] = "Installer designelement:";
+$a->strings["QR code"] = "QR-kode";
+$a->strings["%1\$s wrote the following %2\$s %3\$s"] = "%1\$s skrev følgende %2\$s %3\$s";
+$a->strings["post"] = "innlegg";
+$a->strings["$1 spoiler"] = "$1 avsløring";
+$a->strings["$1 wrote:"] = "$1 skrev:";
+$a->strings["Tags"] = "Merkelapper";
+$a->strings["Keywords"] = "Nøkkelord";
+$a->strings["have"] = "har";
+$a->strings["has"] = "har";
+$a->strings["want"] = "ønsker";
+$a->strings["wants"] = "ønsker";
+$a->strings["like"] = "liker";
+$a->strings["likes"] = "liker";
+$a->strings["dislike"] = "misliker";
+$a->strings["dislikes"] = "misliker";
+$a->strings["__ctx:noun__ Like"] = array(
+ 0 => "Liker",
+ 1 => "Liker",
+);
+$a->strings["Logout"] = "Logg ut";
+$a->strings["End this session"] = "Avslutt denne økten";
+$a->strings["Home"] = "Hjem";
+$a->strings["Your posts and conversations"] = "Dine innlegg og samtaler";
+$a->strings["Your profile page"] = "Din profilside";
+$a->strings["Edit Profiles"] = "Endre profiler";
+$a->strings["Manage/Edit profiles"] = "HÃ¥ndter/endre profiler";
+$a->strings["Edit Profile"] = "Endre profil";
+$a->strings["Edit your profile"] = "Endre din profil";
+$a->strings["Your photos"] = "Dine bilder";
+$a->strings["Your files"] = "Dine filer";
+$a->strings["Chat"] = "Chat";
+$a->strings["Your chatrooms"] = "Dine chatterom";
+$a->strings["Your bookmarks"] = "Dine bokmerker";
+$a->strings["Your webpages"] = "Dine websider";
+$a->strings["Login"] = "Logg inn";
+$a->strings["Sign in"] = "Logg på";
+$a->strings["%s - click to logout"] = "%s - klikk for å logge ut";
+$a->strings["Remote authentication"] = "Fjernautentisering";
+$a->strings["Click to authenticate to your home hub"] = "Klikk for å godkjennes mot din hjemme-hub";
+$a->strings["Home Page"] = "Hjemmeside";
+$a->strings["Register"] = "Registrer";
+$a->strings["Create an account"] = "Lag en konto";
+$a->strings["Help"] = "Hjelp";
+$a->strings["Help and documentation"] = "Hjelp og dokumentasjon";
+$a->strings["Applications, utilities, links, games"] = "Programmer, verktøy, lenker, spill";
+$a->strings["Search"] = "Søk";
+$a->strings["Search site content"] = "Søk stedets innhold";
+$a->strings["Directory"] = "Katalog";
+$a->strings["Channel Directory"] = "Kanalkatalog";
+$a->strings["Matrix"] = "Matrix";
+$a->strings["Your matrix"] = "Din matrix";
+$a->strings["Mark all matrix notifications seen"] = "Merk alle matrix-varsler som sett";
+$a->strings["Channel Home"] = "Kanalhjem";
+$a->strings["Channel home"] = "Kanalhjem";
+$a->strings["Mark all channel notifications seen"] = "Merk alle kanalvarsler som sett";
+$a->strings["Connections"] = "Forbindelser";
+$a->strings["Notices"] = "Varsel";
+$a->strings["Notifications"] = "Varsler";
+$a->strings["See all notifications"] = "Se alle varsler";
+$a->strings["Mark all system notifications seen"] = "Merk alle systemvarsler som sett";
+$a->strings["Mail"] = "Melding";
+$a->strings["Private mail"] = "Privat post";
+$a->strings["See all private messages"] = "Se alle private meldinger";
+$a->strings["Mark all private messages seen"] = "Merk alle private meldinger som sett";
+$a->strings["Inbox"] = "Innboks";
+$a->strings["Outbox"] = "Utboks";
+$a->strings["Events"] = "Hendelser";
+$a->strings["Event Calendar"] = "Kalender";
+$a->strings["See all events"] = "Se alle hendelser";
+$a->strings["Mark all events seen"] = "Merk alle hendelser som sett";
+$a->strings["Channel Manager"] = "Kanalstyring";
+$a->strings["Manage Your Channels"] = "HÃ¥ndter dine kanaler";
+$a->strings["Account/Channel Settings"] = "Konto-/kanal-innstillinger";
+$a->strings["Admin"] = "Administrator";
+$a->strings["Site Setup and Configuration"] = "Nettstedsoppsett og -konfigurasjon";
+$a->strings["Please wait..."] = "Vennligst vent...";
+$a->strings["Can view my normal stream and posts"] = "Kan se min normale strøm og innlegg";
+$a->strings["Can view my default channel profile"] = "Kan se min standard kanalprofil";
+$a->strings["Can view my photo albums"] = "Kan se mine fotoalbum";
+$a->strings["Can view my connections"] = "Kan se mine forbindelser";
+$a->strings["Can view my file storage"] = "Kan se mitt fillager";
+$a->strings["Can view my webpages"] = "Kan se mine websider";
+$a->strings["Can send me their channel stream and posts"] = "Kan sende meg deres kanalstrøm og innlegg";
+$a->strings["Can post on my channel page (\"wall\")"] = "Kan lage innlegg på min kanalside (\"vegg\")";
+$a->strings["Can comment on or like my posts"] = "Kan kommentere på eller like mine innlegg";
+$a->strings["Can send me private mail messages"] = "Kan sende meg private meldinger";
+$a->strings["Can post photos to my photo albums"] = "Kan legge inn bilder i mine fotoalbum";
+$a->strings["Can like/dislike stuff"] = "Kan like/ikke like forskjellige greier";
+$a->strings["Profiles and things other than posts/comments"] = "Profiler og andre ting enn innlegg/kommentarer";
+$a->strings["Can forward to all my channel contacts via post @mentions"] = "Kan videresende til alle mine kanalkontakter via @navn i innlegg";
+$a->strings["Advanced - useful for creating group forum channels"] = "Avansert - nyttig for å lage forumkanaler for grupper";
+$a->strings["Can chat with me (when available)"] = "Kan chatte/sende lynmeldinger til meg (når tilgjengelig)";
+$a->strings["Can write to my file storage"] = "Kan skrive til mitt fillager";
+$a->strings["Can edit my webpages"] = "Kan endre mine websider";
+$a->strings["Can source my public posts in derived channels"] = "Kan bruke mine offentlige innlegg som kanalkilde i egne kanaler";
+$a->strings["Somewhat advanced - very useful in open communities"] = "Litt avansert - svært nyttig i åpne fellesskap";
+$a->strings["Can administer my channel resources"] = "Kan administrere mine kanalressurser";
+$a->strings["Extremely advanced. Leave this alone unless you know what you are doing"] = "Ekstremt avansert. La dette være med mindre du vet hva du gjør";
+$a->strings["Social Networking"] = "Sosialt nettverk";
+$a->strings["Mostly Public"] = "Ganske offentlig";
+$a->strings["Restricted"] = "Begrenset";
+$a->strings["Private"] = "Privat";
+$a->strings["Community Forum"] = "Forum for fellesskap";
+$a->strings["Feed Republish"] = "Republisering av strømmet innhold";
+$a->strings["Special Purpose"] = "Spesiell bruk";
+$a->strings["Celebrity/Soapbox"] = "Kjendis/Talerstol";
+$a->strings["Group Repository"] = "Gruppelager";
+$a->strings["Other"] = "Annen";
+$a->strings["Custom/Expert Mode"] = "Tilpasset/Ekspertmodus";
+$a->strings["New window"] = "Nytt vindu";
+$a->strings["Open the selected location in a different window or browser tab"] = "Ã…pne det valgte stedet i et annet vindu eller nettleser-fane";
+$a->strings["User '%s' deleted"] = "Brukeren '%s' er slettet";
$a->strings["General Features"] = "Generelle funksjoner";
$a->strings["Content Expiration"] = "Innholdet utløper";
$a->strings["Remove posts/comments and/or private messages at a future time"] = "Fjern innlegg/kommentarer og/eller private meldinger på et angitt tidspunkt i fremtiden";
$a->strings["Multiple Profiles"] = "Flere profiler";
$a->strings["Ability to create multiple profiles"] = "Mulig å lage flere profiler";
+$a->strings["Advanced Profiles"] = "Avanserte profiler";
+$a->strings["Additional profile sections and selections"] = "Ytterlige seksjoner og utvalg til profilen";
+$a->strings["Profile Import/Export"] = "Profil-import/-eksport";
+$a->strings["Save and load profile details across sites/channels"] = "Lagre og åpne profildetaljer på tvers av nettsteder/kanaler";
$a->strings["Web Pages"] = "Web-sider";
$a->strings["Provide managed web pages on your channel"] = "Tilby kontrollerte web-sider på din kanal";
$a->strings["Private Notes"] = "Private merknader";
$a->strings["Enables a tool to store notes and reminders"] = "Skrur på et verktøy for lagre merknader og påminnelser";
+$a->strings["Navigation Channel Select"] = "Navigasjon kanalvalg";
+$a->strings["Change channels directly from within the navigation dropdown menu"] = "Endre kanaler direkte fra navigasjonsmenyen";
$a->strings["Extended Identity Sharing"] = "Utvidet identitetsdeling";
$a->strings["Share your identity with all websites on the internet. When disabled, identity is only shared with sites in the matrix."] = "Del din identiet med alle nettsteder på Internett. Når denne er avskrudd, deles identiteten bare med nettsteder i matrix.";
$a->strings["Expert Mode"] = "Ekspertmodus";
@@ -393,11 +459,10 @@ $a->strings["Enable Expert Mode to provide advanced configuration options"] = "S
$a->strings["Premium Channel"] = "Premiumkanal";
$a->strings["Allows you to set restrictions and terms on those that connect with your channel"] = "Lar deg angi restriksjoner og betingelser for de som kobler seg til din kanal";
$a->strings["Post Composition Features"] = "Funksjoner for å lage innlegg";
-$a->strings["Richtext Editor"] = "Riktekst redigeringsverktøy";
-$a->strings["Enable richtext editor"] = "Skru på redigeringverktøy for riktekst";
+$a->strings["Use Markdown"] = "Bruk Markdown";
+$a->strings["Allow use of \"Markdown\" to format posts"] = "Tillat bruk av \"Markdown\" til formatering av innlegg";
$a->strings["Post Preview"] = "Forhåndsvisning av innlegg";
$a->strings["Allow previewing posts and comments before publishing them"] = "Tillat forhåndsvisning av innlegg og kommentarer før publisering";
-$a->strings["Channel Sources"] = "Kanalkilder";
$a->strings["Automatically import channel content from other channels or feeds"] = "Automatisk import av kanalinnhold fra andre kanaler eller strømmer";
$a->strings["Even More Encryption"] = "Enda mer kryptering";
$a->strings["Allow optional encryption of content end-to-end with a shared secret key"] = "Tillat valgfri kryptering av innhold ende-til-ende via en delt hemmelig nøkkel";
@@ -406,7 +471,6 @@ $a->strings["Search by Date"] = "Søk etter dato";
$a->strings["Ability to select posts by date ranges"] = "Mulighet for å velge innlegg etter datoområde";
$a->strings["Collections Filter"] = "Filter for samlinger";
$a->strings["Enable widget to display Network posts only from selected collections"] = "Skru på miniprogram for å vise Nettverksinnlegg bare fra valgte samlinger";
-$a->strings["Saved Searches"] = "Lagrede søk";
$a->strings["Save search terms for re-use"] = "Lagre søkeuttrykk for senere bruk";
$a->strings["Network Personal Tab"] = "Nettverk personlig fane";
$a->strings["Enable tab to display only Network posts that you've interacted on"] = "Skru på fane for å bare vise Nettverksinnlegg som du har deltatt i";
@@ -430,22 +494,24 @@ $a->strings["Star Posts"] = "Stjerneinnlegg";
$a->strings["Ability to mark special posts with a star indicator"] = "Mulighet til å merke spesielle innlegg med en stjerne";
$a->strings["Tag Cloud"] = "Merkelappsky";
$a->strings["Provide a personal tag cloud on your channel page"] = "Tilby en personlig merkelappsky på din kanalside";
-$a->strings["Channel is blocked on this site."] = "Kanalen er blokkert på dette nettstedet.";
-$a->strings["Channel location missing."] = "Kanalplassering mangler.";
-$a->strings["Response from remote channel was incomplete."] = "Svaret fra den andre kanalen var ikke komplett.";
-$a->strings["Channel was deleted and no longer exists."] = "Kanalen er slettet og finnes ikke lenger.";
-$a->strings["Channel discovery failed."] = "Kanaloppdagelse mislyktes.";
-$a->strings["local account not found."] = "lokal konto ble ikke funnet.";
-$a->strings["Cannot connect to yourself."] = "Kan ikke lage forbindelse med deg selv.";
-$a->strings["A deleted group with this name was revived. Existing item permissions <strong>may</strong> apply to this group and any future members. If this is not what you intended, please create another group with a different name."] = "En slettet gruppe med dette navnet ble gjenopprettet. Eksisterende tillatelser for elementet <strong>kan</strong> gjelde for denne gruppen og fremtidige medlemmer. Hvis du ønsket noe annet, vennligst lag en ny gruppe med et annet navn.";
-$a->strings["Default privacy group for new contacts"] = "Standard personverngruppe for nye kontakter";
-$a->strings["All Channels"] = "Alle kanaler";
-$a->strings["edit"] = "endre";
-$a->strings["Collections"] = "Samlinger";
-$a->strings["Edit collection"] = "Endre samling";
-$a->strings["Create a new collection"] = "Lag en ny samling";
-$a->strings["Channels not in any collection"] = "Kanaler som ikke er i noen samling";
-$a->strings["add"] = "legg til";
+$a->strings["Not a valid email address"] = "Ikke en gyldig e-postadresse";
+$a->strings["Your email domain is not among those allowed on this site"] = "Ditt e-postdomene er ikke blant de som er tillatt på dette stedet";
+$a->strings["Your email address is already registered at this site."] = "Din e-postadresse er allerede registrert på dette nettstedet.";
+$a->strings["An invitation is required."] = "En invitasjon er påkrevd.";
+$a->strings["Invitation could not be verified."] = "Invitasjon kunne ikke bekreftes.";
+$a->strings["Please enter the required information."] = "Vennligst skriv inn nødvendig informasjon.";
+$a->strings["Failed to store account information."] = "Mislyktes med å lagre kontoinformasjon.";
+$a->strings["Registration confirmation for %s"] = "Registreringsbekreftelse for %s";
+$a->strings["Registration request at %s"] = "Registreringsforespørsel hos %s";
+$a->strings["Administrator"] = "Administrator";
+$a->strings["your registration password"] = "ditt registreringspassord";
+$a->strings["Registration details for %s"] = "Registreringsdetaljer for %s";
+$a->strings["Account approved."] = "Konto godkjent.";
+$a->strings["Registration revoked for %s"] = "Registrering trukket tilbake for %s";
+$a->strings["Account verified. Please login."] = "Konto bekreftet. Vennligst logg inn.";
+$a->strings["Click here to upgrade."] = "Klikk her for å oppgradere.";
+$a->strings["This action exceeds the limits set by your subscription plan."] = "Denne handlingen går utenfor grensene satt i din abonnementsplan.";
+$a->strings["This action is not available under your subscription plan."] = "Denne handlingen er ikke tilgjengelig i din abonnementsplan.";
$a->strings["Unable to obtain identity information from database"] = "Klarer ikke å få tak i identitetsinformasjon fra databasen";
$a->strings["Empty name"] = "Mangler navn";
$a->strings["Name too long"] = "Navnet er for langt";
@@ -455,15 +521,12 @@ $a->strings["Reserved nickname. Please choose another."] = "Reservert kallenavn.
$a->strings["Nickname has unsupported characters or is already being used on this site."] = "Kallenavnet inneholder tegn som ikke er støttet eller det er allerede i bruk på dette nettstedet.";
$a->strings["Unable to retrieve created identity"] = "Klarer ikke å hente den lagede identiteten";
$a->strings["Default Profile"] = "Standardprofil";
-$a->strings["Friends"] = "Venner";
$a->strings["Requested channel is not available."] = "Forespurt kanal er ikke tilgjengelig.";
$a->strings["Requested profile is not available."] = "Forespurt profil er ikke tilgjengelig.";
-$a->strings["Connect"] = "Koble";
$a->strings["Change profile photo"] = "Endre profilbilde";
$a->strings["Profiles"] = "Profiler";
$a->strings["Manage/edit profiles"] = "HÃ¥ndtere/endre profiler";
$a->strings["Create New Profile"] = "Lag ny profil";
-$a->strings["Edit Profile"] = "Endre profil";
$a->strings["Profile Image"] = "Profilbilde";
$a->strings["visible to everybody"] = "synlig for alle";
$a->strings["Edit visibility"] = "Endre synlighet";
@@ -481,6 +544,7 @@ $a->strings["Event Reminders"] = "Hendelsespåminnelser";
$a->strings["Events this week:"] = "Hendelser denne uken:";
$a->strings["Profile"] = "Profil";
$a->strings["Full Name:"] = "Fullt navn:";
+$a->strings["Like this channel"] = "Lik denne kanalen";
$a->strings["j F, Y"] = "j F, Y";
$a->strings["j F"] = "j F";
$a->strings["Birthday:"] = "Fødselsdag:";
@@ -504,7 +568,159 @@ $a->strings["Film/dance/culture/entertainment:"] = "Film/dans/kultur/underholdni
$a->strings["Love/Romance:"] = "Kjærlighet/romantikk:";
$a->strings["Work/employment:"] = "Arbeid/sysselsetting:";
$a->strings["School/education:"] = "Skole/utdannelse:";
+$a->strings["Like this thing"] = "Lik denne tingen";
+$a->strings["Permission denied"] = "Tillatelse avvist";
+$a->strings["(Unknown)"] = "(Ukjent)";
+$a->strings["Visible to anybody on the internet."] = "Synlig for enhver på Internett.";
+$a->strings["Visible to you only."] = "Synlig bare for deg.";
+$a->strings["Visible to anybody in this network."] = "Synlig for enhver i dette nettverket.";
+$a->strings["Visible to anybody authenticated."] = "Synlig for enhver som er autentisert.";
+$a->strings["Visible to anybody on %s."] = "Synlig for alle på %s.";
+$a->strings["Visible to all connections."] = "Synlig for alle forbindelser.";
+$a->strings["Visible to approved connections."] = "Synlig for godkjente forbindelser.";
+$a->strings["Visible to specific connections."] = "Synlig for spesifikke forbindelser.";
+$a->strings["Item not found."] = "Elementet ble ikke funnet.";
+$a->strings["Collection not found."] = "Samlingen ble ikke funnet.";
+$a->strings["Collection is empty."] = "Samlingen er tom.";
+$a->strings["Collection: %s"] = "Samling: %s";
+$a->strings["Connection: %s"] = "Forbindelse: %s";
+$a->strings["Connection not found."] = "Forbindelsen ble ikke funnet.";
+$a->strings["No recipient provided."] = "Ingen mottaker angitt.";
+$a->strings["[no subject]"] = "[ikke noe emne]";
+$a->strings["Unable to determine sender."] = "Kan ikke avgjøre avsender.";
+$a->strings["Stored post could not be verified."] = "Lagret innlegg kunne ikke bekreftes.";
$a->strings["view full size"] = "vis full størrelse";
+$a->strings["Item was not found."] = "Elementet ble ikke funnet.";
+$a->strings["No source file."] = "Ingen kildefil.";
+$a->strings["Cannot locate file to replace"] = "Kan ikke finne filen som skal byttes ut";
+$a->strings["Cannot locate file to revise/update"] = "Finner ikke filen som skal revideres/oppdateres";
+$a->strings["File exceeds size limit of %d"] = "Filens størrelse overgår grensen på %d";
+$a->strings["You have reached your limit of %1$.0f Mbytes attachment storage."] = "Du har nådd din lagringsgrense for vedlegg på %1$.0f Mbytes.";
+$a->strings["File upload failed. Possible system limit or action terminated."] = "Mislyktes med å laste opp filen. Mulig systemgrense eller handling avbrutt.";
+$a->strings["Stored file could not be verified. Upload failed."] = "Lagret fil kunne ikke bekreftes. Opplasting mislyktes.";
+$a->strings["Path not available."] = "Stien er ikke tilgjengelig.";
+$a->strings["Empty pathname"] = "Tomt sti-navn";
+$a->strings["duplicate filename or path"] = "duplikat av filnavn eller sti";
+$a->strings["Path not found."] = "Stien ble ikke funnet.";
+$a->strings["mkdir failed."] = "mkdir mislyktes.";
+$a->strings["database storage failed."] = "databaselagring mislyktes.";
+$a->strings["Logged out."] = "Logget ut.";
+$a->strings["Failed authentication"] = "Mislykket autentisering";
+$a->strings["Login failed."] = "Innlogging mislyktes.";
+$a->strings["Miscellaneous"] = "Forskjellig";
+$a->strings["YYYY-MM-DD or MM-DD"] = "YYYY-MM-DD eller MM-DD";
+$a->strings["never"] = "aldri";
+$a->strings["less than a second ago"] = "for mindre enn ett sekund siden";
+$a->strings["year"] = "Ã¥r";
+$a->strings["years"] = "Ã¥r";
+$a->strings["month"] = "måned";
+$a->strings["months"] = "måneder";
+$a->strings["week"] = "uke";
+$a->strings["weeks"] = "uker";
+$a->strings["day"] = "dag";
+$a->strings["days"] = "dager";
+$a->strings["hour"] = "time";
+$a->strings["hours"] = "timer";
+$a->strings["minute"] = "minutt";
+$a->strings["minutes"] = "minutter";
+$a->strings["second"] = "sekund";
+$a->strings["seconds"] = "sekunder";
+$a->strings["%1\$d %2\$s ago"] = "%1\$d %2\$s siden";
+$a->strings["%1\$s's birthday"] = "%1\$s sin fødselsdag";
+$a->strings["Happy Birthday %1\$s"] = "Gratulerer med dagen, %1\$s !";
+$a->strings["Image exceeds website size limit of %lu bytes"] = "Bilde overstiger nettstedets størrelsesbegrensning på %lu bytes";
+$a->strings["Image file is empty."] = "Bildefilen er tom.";
+$a->strings["Unable to process image"] = "Kan ikke behandle bildet";
+$a->strings["Photo storage failed."] = "Bildelagring mislyktes.";
+$a->strings["Upload New Photos"] = "Last opp nye bilder";
+$a->strings["The form security token was not correct. This probably happened because the form has been opened for too long (>3 hours) before submitting it."] = "Skjemaets sikkerhetspollett var ikke gyldig. Dette skjedde antakelig fordi skjemaet har vært åpnet for lenge (>3 timer) før det ble sendt inn.";
+$a->strings["Delete this item?"] = "Slett dette elementet?";
+$a->strings["Comment"] = "Kommentar";
+$a->strings["[+] show all"] = "[+] Vis alle";
+$a->strings["[-] show less"] = "[-] Vis mindre";
+$a->strings["[+] expand"] = "[+] Utvid";
+$a->strings["[-] collapse"] = "[-] Lukk";
+$a->strings["Password too short"] = "Passordet er for kort";
+$a->strings["Passwords do not match"] = "Passordene er ikke like";
+$a->strings["everybody"] = "alle";
+$a->strings["Secret Passphrase"] = "Hemmelig passordsetning";
+$a->strings["Passphrase hint"] = "Hint om passordsetning";
+$a->strings["Notice: Permissions have changed but have not yet been submitted."] = "Varsel: Tillatelser har blitt endret, men de har ennå ikke blitt sendt inn.";
+$a->strings["close all"] = "Lukk alle";
+$a->strings["Nothing new here"] = "Ikke noe nytt her";
+$a->strings["timeago.prefixAgo"] = "timeago.prefixAgo";
+$a->strings["timeago.prefixFromNow"] = "timeago.prefixFromNow";
+$a->strings["ago"] = "siden";
+$a->strings["from now"] = "fra nå";
+$a->strings["less than a minute"] = "mindre enn ett minutt";
+$a->strings["about a minute"] = "omtrent et minutt";
+$a->strings["%d minutes"] = "%d minutter";
+$a->strings["about an hour"] = "omtrent en time";
+$a->strings["about %d hours"] = "omtrent %d timer";
+$a->strings["a day"] = "en dag";
+$a->strings["%d days"] = "%d dager";
+$a->strings["about a month"] = "omtrent en måned";
+$a->strings["%d months"] = "%d måneder";
+$a->strings["about a year"] = "omtrent et år";
+$a->strings["%d years"] = "%d år";
+$a->strings[" "] = " ";
+$a->strings["timeago.numbers"] = "timeago.numbers";
+$a->strings["Male"] = "Mannlig";
+$a->strings["Female"] = "Kvinnelig";
+$a->strings["Currently Male"] = "For tiden mann";
+$a->strings["Currently Female"] = "For tiden kvinne";
+$a->strings["Mostly Male"] = "For det meste mann";
+$a->strings["Mostly Female"] = "For det meste kvinne";
+$a->strings["Transgender"] = "Transkjønnet";
+$a->strings["Intersex"] = "interkjønnet";
+$a->strings["Transsexual"] = "Transseksuell";
+$a->strings["Hermaphrodite"] = "Hermafroditt";
+$a->strings["Neuter"] = "Intetkjønn";
+$a->strings["Non-specific"] = "Ubestemt";
+$a->strings["Undecided"] = "Ubestemt";
+$a->strings["Males"] = "Menn";
+$a->strings["Females"] = "Kvinner";
+$a->strings["Gay"] = "Homo";
+$a->strings["Lesbian"] = "Lesbisk";
+$a->strings["No Preference"] = "Ingen preferanse";
+$a->strings["Bisexual"] = "Biseksuell";
+$a->strings["Autosexual"] = "Autoseksuell";
+$a->strings["Abstinent"] = "Avholdende";
+$a->strings["Virgin"] = "Jomfru";
+$a->strings["Deviant"] = "Avviker";
+$a->strings["Fetish"] = "Fetisj";
+$a->strings["Oodles"] = "Masse";
+$a->strings["Nonsexual"] = "Ikke-seksuell";
+$a->strings["Single"] = "Enslig";
+$a->strings["Lonely"] = "Ensom";
+$a->strings["Available"] = "Tilgjengelig";
+$a->strings["Unavailable"] = "Ikke tilgjengelig";
+$a->strings["Has crush"] = "Er forelsket";
+$a->strings["Infatuated"] = "Betatt";
+$a->strings["Dating"] = "Sammen med";
+$a->strings["Unfaithful"] = "Utro";
+$a->strings["Sex Addict"] = "Sexavhengig";
+$a->strings["Friends/Benefits"] = "Venner med frynsegoder";
+$a->strings["Casual"] = "Tilfeldig";
+$a->strings["Engaged"] = "Forlovet";
+$a->strings["Married"] = "Gift";
+$a->strings["Imaginarily married"] = "Gift i fantasien";
+$a->strings["Partners"] = "Partnere";
+$a->strings["Cohabiting"] = "Samboer";
+$a->strings["Common law"] = "Samboer";
+$a->strings["Happy"] = "Lykkelig";
+$a->strings["Not looking"] = "Ikke på utkikk";
+$a->strings["Swinger"] = "Partnerbytte";
+$a->strings["Betrayed"] = "Bedratt";
+$a->strings["Separated"] = "Separert";
+$a->strings["Unstable"] = "Ustabilt";
+$a->strings["Divorced"] = "Skilt";
+$a->strings["Imaginarily divorced"] = "Skilt i fantasien";
+$a->strings["Widowed"] = "Enke";
+$a->strings["Uncertain"] = "Usikkert";
+$a->strings["It's complicated"] = "Det er komplisert";
+$a->strings["Don't care"] = "Bryr meg ikke";
+$a->strings["Ask me"] = "Spør meg";
$a->strings["prev"] = "forrige";
$a->strings["first"] = "første";
$a->strings["last"] = "siste";
@@ -517,7 +733,6 @@ $a->strings["%d Connection"] = array(
1 => "%d forbindelser",
);
$a->strings["View Connections"] = "Vis forbindelser";
-$a->strings["Save"] = "Lagre";
$a->strings["poke"] = "prikk";
$a->strings["ping"] = "varsle";
$a->strings["pinged"] = "varslet";
@@ -585,64 +800,28 @@ $a->strings["Blocks"] = "Byggeklosser";
$a->strings["Menus"] = "Menyer";
$a->strings["Layouts"] = "Layout";
$a->strings["Pages"] = "Sider";
+$a->strings["Visible to your default audience"] = "Synlig for ditt standard publikum";
+$a->strings["Show"] = "Vis";
+$a->strings["Don't show"] = "Ikke vis";
+$a->strings["Permissions"] = "Tillatelser";
+$a->strings["Close"] = "Lukk";
+$a->strings["Public Timeline"] = "Offentlig tidslinje";
$a->strings["Site Admin"] = "Nettstedsadministrator";
$a->strings["Address Book"] = "Adressebok";
$a->strings["Mood"] = "Stemning";
$a->strings["Probe"] = "Undersøk";
$a->strings["Suggest"] = "Forreslå";
+$a->strings["Random Channel"] = "Tilfeldig kanal";
+$a->strings["Invite"] = "Inviter";
+$a->strings["Features"] = "Funksjoner";
+$a->strings["Language"] = "Språk";
+$a->strings["Post"] = "Innlegg";
+$a->strings["Profile Photo"] = "Profilbilde";
$a->strings["Update"] = "Oppdater";
$a->strings["Install"] = "Installer";
$a->strings["Purchase"] = "Kjøp";
-$a->strings["Unknown"] = "Ukjent";
-$a->strings["Invalid data packet"] = "Ugyldig datapakke";
-$a->strings["Unable to verify channel signature"] = "Ikke i stand til å sjekke kanalsignaturen";
-$a->strings["Unable to verify site signature for %s"] = "Ikke i stand til å bekrefte signaturen til %s";
-$a->strings["No recipient provided."] = "Ingen mottaker angitt.";
-$a->strings["[no subject]"] = "[ikke noe emne]";
-$a->strings["Unable to determine sender."] = "Kan ikke avgjøre avsender.";
-$a->strings["Stored post could not be verified."] = "Lagret innlegg kunne ikke bekreftes.";
-$a->strings["Click here to upgrade."] = "Klikk her for å oppgradere.";
-$a->strings["This action exceeds the limits set by your subscription plan."] = "Denne handlingen går utenfor grensene satt i din abonnementsplan.";
-$a->strings["This action is not available under your subscription plan."] = "Denne handlingen er ikke tilgjengelig i din abonnementsplan.";
-$a->strings["System"] = "System";
-$a->strings["Create Personal App"] = "Lag personlig app";
-$a->strings["Edit Personal App"] = "Endre personlig app";
-$a->strings["Ignore/Hide"] = "Ignorer/Skjul";
-$a->strings["Suggestions"] = "Forslag";
-$a->strings["See more..."] = "Se mer...";
-$a->strings["You have %1$.0f of %2$.0f allowed connections."] = "Du har %1$.0f av %2$.0f tillate forbindelser.";
-$a->strings["Add New Connection"] = "Legg til ny forbindelse";
-$a->strings["Enter the channel address"] = "Skriv kanal-adressen";
-$a->strings["Example: bob@example.com, http://example.com/barbara"] = "Eksempel: ola.nordmann@eksempel.no, http://eksempel.no/karinordmann";
-$a->strings["Notes"] = "Merknader";
-$a->strings["Remove term"] = "Fjern begrep";
-$a->strings["Archives"] = "Arkiv";
-$a->strings["Refresh"] = "Forny";
-$a->strings["Me"] = "Meg";
-$a->strings["Best Friends"] = "Bestevenner";
-$a->strings["Co-workers"] = "Medarbeidere";
-$a->strings["Former Friends"] = "Tidligere venner";
-$a->strings["Acquaintances"] = "Bekjente";
-$a->strings["Everybody"] = "Alle";
-$a->strings["Account settings"] = "Kontoinnstillinger";
-$a->strings["Channel settings"] = "Kanalinnstillinger";
-$a->strings["Additional features"] = "Tilleggsfunksjoner";
-$a->strings["Feature settings"] = "Funksjonsinnstillinger";
-$a->strings["Display settings"] = "Visningsinnstillinger";
-$a->strings["Connected apps"] = "Tilkoblede app-er";
-$a->strings["Export channel"] = "Eksporter kanal";
-$a->strings["Automatic Permissions (Advanced)"] = "Automatiske tillatelser (avansert)";
-$a->strings["Premium Channel Settings"] = "Premiumkanal-innstillinger";
-$a->strings["Check Mail"] = "Sjekk meldinger";
-$a->strings["Chat Rooms"] = "Chatrom";
-$a->strings["Bookmarked Chatrooms"] = "Bokmerkede chatrom";
-$a->strings["Suggested Chatrooms"] = "Foreslåtte chatrom";
$a->strings["Save to Folder"] = "Lagre i mappe";
$a->strings["View all"] = "Vis alle";
-$a->strings["__ctx:noun__ Like"] = array(
- 0 => "Liker",
- 1 => "Liker",
-);
$a->strings["__ctx:noun__ Dislike"] = array(
0 => "Liker ikke",
1 => "Liker ikke",
@@ -669,9 +848,7 @@ $a->strings["%d comment"] = array(
0 => "%d kommentar",
1 => "%d kommentarer",
);
-$a->strings["[+] show all"] = "[+] Vis alle";
$a->strings["This is you"] = "Dette er deg";
-$a->strings["Comment"] = "Kommentar";
$a->strings["Submit"] = "Send";
$a->strings["Bold"] = "Uthevet";
$a->strings["Italic"] = "Kursiv";
@@ -681,125 +858,12 @@ $a->strings["Code"] = "Kode";
$a->strings["Image"] = "Bilde";
$a->strings["Link"] = "Lenke";
$a->strings["Video"] = "Video";
-$a->strings["Delete this item?"] = "Slett dette elementet?";
-$a->strings["[-] show less"] = "[-] Vis mindre";
-$a->strings["[+] expand"] = "[+] Utvid";
-$a->strings["[-] collapse"] = "[-] Lukk";
-$a->strings["Password too short"] = "Passordet er for kort";
-$a->strings["Passwords do not match"] = "Passordene er ikke like";
-$a->strings["everybody"] = "alle";
-$a->strings["Secret Passphrase"] = "Hemmelig passordsetning";
-$a->strings["Passphrase hint"] = "Hint om passordsetning";
-$a->strings["Notice: Permissions have changed but have not yet been submitted."] = "Varsel: Tillatelser har blitt endret, men de har ennå ikke blitt sendt inn.";
-$a->strings["close all"] = "Lukk alle";
-$a->strings["timeago.prefixAgo"] = "timeago.prefixAgo";
-$a->strings["timeago.prefixFromNow"] = "timeago.prefixFromNow";
-$a->strings["ago"] = "siden";
-$a->strings["from now"] = "fra nå";
-$a->strings["less than a minute"] = "mindre enn ett minutt";
-$a->strings["about a minute"] = "omtrent et minutt";
-$a->strings["%d minutes"] = "%d minutter";
-$a->strings["about an hour"] = "omtrent en time";
-$a->strings["about %d hours"] = "omtrent %d timer";
-$a->strings["a day"] = "en dag";
-$a->strings["%d days"] = "%d dager";
-$a->strings["about a month"] = "omtrent en måned";
-$a->strings["%d months"] = "%d måneder";
-$a->strings["about a year"] = "omtrent et år";
-$a->strings["%d years"] = "%d år";
-$a->strings[" "] = " ";
-$a->strings["timeago.numbers"] = "timeago.numbers";
-$a->strings["New window"] = "Nytt vindu";
-$a->strings["Open the selected location in a different window or browser tab"] = "Ã…pne det valgte stedet i et annet vindu eller nettleser-fane";
-$a->strings["Male"] = "Mannlig";
-$a->strings["Female"] = "Kvinnelig";
-$a->strings["Currently Male"] = "For tiden mann";
-$a->strings["Currently Female"] = "For tiden kvinne";
-$a->strings["Mostly Male"] = "For det meste mann";
-$a->strings["Mostly Female"] = "For det meste kvinne";
-$a->strings["Transgender"] = "Transkjønnet";
-$a->strings["Intersex"] = "interkjønnet";
-$a->strings["Transsexual"] = "Transseksuell";
-$a->strings["Hermaphrodite"] = "Hermafroditt";
-$a->strings["Neuter"] = "Intetkjønn";
-$a->strings["Non-specific"] = "Ubestemt";
-$a->strings["Other"] = "Annen";
-$a->strings["Undecided"] = "Ubestemt";
-$a->strings["Males"] = "Menn";
-$a->strings["Females"] = "Kvinner";
-$a->strings["Gay"] = "Homo";
-$a->strings["Lesbian"] = "Lesbisk";
-$a->strings["No Preference"] = "Ingen preferanse";
-$a->strings["Bisexual"] = "Biseksuell";
-$a->strings["Autosexual"] = "Autoseksuell";
-$a->strings["Abstinent"] = "Avholdende";
-$a->strings["Virgin"] = "Jomfru";
-$a->strings["Deviant"] = "Avviker";
-$a->strings["Fetish"] = "Fetisj";
-$a->strings["Oodles"] = "Masse";
-$a->strings["Nonsexual"] = "Ikke-seksuell";
-$a->strings["Single"] = "Enslig";
-$a->strings["Lonely"] = "Ensom";
-$a->strings["Available"] = "Tilgjengelig";
-$a->strings["Unavailable"] = "Ikke tilgjengelig";
-$a->strings["Has crush"] = "Er forelsket";
-$a->strings["Infatuated"] = "Betatt";
-$a->strings["Dating"] = "Sammen med";
-$a->strings["Unfaithful"] = "Utro";
-$a->strings["Sex Addict"] = "Sexavhengig";
-$a->strings["Friends/Benefits"] = "Venner med frynsegoder";
-$a->strings["Casual"] = "Tilfeldig";
-$a->strings["Engaged"] = "Forlovet";
-$a->strings["Married"] = "Gift";
-$a->strings["Imaginarily married"] = "Gift i fantasien";
-$a->strings["Partners"] = "Partnere";
-$a->strings["Cohabiting"] = "Samboer";
-$a->strings["Common law"] = "Samboer";
-$a->strings["Happy"] = "Lykkelig";
-$a->strings["Not looking"] = "Ikke på utkikk";
-$a->strings["Swinger"] = "Partnerbytte";
-$a->strings["Betrayed"] = "Bedratt";
-$a->strings["Separated"] = "Separert";
-$a->strings["Unstable"] = "Ustabilt";
-$a->strings["Divorced"] = "Skilt";
-$a->strings["Imaginarily divorced"] = "Skilt i fantasien";
-$a->strings["Widowed"] = "Enke";
-$a->strings["Uncertain"] = "Usikkert";
-$a->strings["It's complicated"] = "Det er komplisert";
-$a->strings["Don't care"] = "Bryr meg ikke";
-$a->strings["Ask me"] = "Spør meg";
-$a->strings["Logged out."] = "Logget ut.";
-$a->strings["Failed authentication"] = "Mislykket autentisering";
-$a->strings["Login failed."] = "Innlogging mislyktes.";
-$a->strings["Permission denied"] = "Tillatelse avvist";
-$a->strings["(Unknown)"] = "(Ukjent)";
-$a->strings["Item not found."] = "Elementet ble ikke funnet.";
-$a->strings["Collection not found."] = "Samlingen ble ikke funnet.";
-$a->strings["Collection is empty."] = "Samlingen er tom.";
-$a->strings["Collection: %s"] = "Samling: %s";
-$a->strings["Connection: %s"] = "Forbindelse: %s";
-$a->strings["Connection not found."] = "Forbindelsen ble ikke funnet.";
-$a->strings["Can view my \"public\" stream and posts"] = "Kan se min \"offentlige\" strøm og innlegg";
-$a->strings["Can view my \"public\" channel profile"] = "Kan se min \"offentlige\" kanalprofil";
-$a->strings["Can view my \"public\" photo albums"] = "Kan se mine \"offentlige\" fotoalbum";
-$a->strings["Can view my \"public\" address book"] = "Kan se min \"offentlige\" adressebok";
-$a->strings["Can view my \"public\" file storage"] = "Kan se mitt \"offentlige\" fillager";
-$a->strings["Can view my \"public\" pages"] = "Kan se mine \"offentlige\" sider";
-$a->strings["Can send me their channel stream and posts"] = "Kan sende meg deres kanalstrøm og innlegg";
-$a->strings["Can post on my channel page (\"wall\")"] = "Kan lage innlegg på min kanalside (\"vegg\")";
-$a->strings["Can comment on my posts"] = "Kan kommentere på mine innlegg";
-$a->strings["Can send me private mail messages"] = "Kan sende meg private meldinger";
-$a->strings["Can post photos to my photo albums"] = "Kan legge inn bilder i mine fotoalbum";
-$a->strings["Can forward to all my channel contacts via post @mentions"] = "Kan videresende til alle mine kanalkontakter via @navn i innlegg";
-$a->strings["Advanced - useful for creating group forum channels"] = "Avansert - nyttig for å lage forumkanaler for grupper";
-$a->strings["Can chat with me (when available)"] = "Kan chatte/sende lynmeldinger til meg (når tilgjengelig)";
-$a->strings["Can write to my \"public\" file storage"] = "Kan skrive til mitt \"offentlige\" fillager";
-$a->strings["Can edit my \"public\" pages"] = "Kan endre mine \"offentlige\" sider";
-$a->strings["Can source my \"public\" posts in derived channels"] = "Kan bruke mine \"offentlige\" innlegg som kanalkilde i egne kanaler";
-$a->strings["Somewhat advanced - very useful in open communities"] = "Litt avansert - svært nyttig i åpne fellesskap";
-$a->strings["Can administer my channel resources"] = "Kan administrere mine kanalressurser";
-$a->strings["Extremely advanced. Leave this alone unless you know what you are doing"] = "Ekstremt avansert. La dette være med mindre du vet hva du gjør";
$a->strings["Set your current mood and tell your friends"] = "Angi ditt nåværende humør og fortell dine venner";
+$a->strings["Invalid profile identifier."] = "Ugyldig profil-identifikator.";
+$a->strings["Profile Visibility Editor"] = "Endre profilsynlighet";
+$a->strings["Click on a contact to add or remove."] = "Klikk på en kontakt for å legge til eller fjerne.";
+$a->strings["Visible To"] = "Synlig for";
+$a->strings["All Connections"] = "Alle forbindelser";
$a->strings["Menu not found."] = "Menyen ble ikke funnet.";
$a->strings["Menu element updated."] = "Menyelement er oppdatert.";
$a->strings["Unable to update menu element."] = "Ikke i stand til å oppdatere menyelement.";
@@ -820,169 +884,22 @@ $a->strings["Menu Item Permissions"] = "Menyelement Tillatelser";
$a->strings["(click to open/close)"] = "(klikk for å åpne/lukke)";
$a->strings["Link text"] = "Lenketekst";
$a->strings["URL of link"] = "URL-en til lenken";
-$a->strings["Use Red magic-auth if available"] = "Bruk Red sin magiske-autent hvis mulig";
+$a->strings["Use RedMatrix magic-auth if available"] = "Bruk RedMatrixs magiske-autentisering hvis tilgjengelig";
$a->strings["Open link in new window"] = "Ã…pne lenke i nytt vindu";
$a->strings["Order in list"] = "Ordne i liste";
$a->strings["Higher numbers will sink to bottom of listing"] = "Høyere tall vil synke mot bunnen av listen";
-$a->strings["Create"] = "Lag";
$a->strings["Menu item not found."] = "Menyelement ble ikke funnet.";
$a->strings["Menu item deleted."] = "Menyelement slettet.";
$a->strings["Menu item could not be deleted."] = "Menyelement kunne ikke bli slettet.";
$a->strings["Edit Menu Element"] = "Endre menyelement";
$a->strings["Modify"] = "Endre";
-$a->strings["sent you a private message"] = "sendte deg en privat melding";
-$a->strings["added your channel"] = "la til din kanal";
-$a->strings["posted an event"] = "la ut en hendelse";
-$a->strings["network"] = "nettverk";
-$a->strings["Name is required"] = "Navn er påkrevd";
-$a->strings["Key and Secret are required"] = "Nøkkel og hemmelighet er påkrevd";
-$a->strings["Passwords do not match. Password unchanged."] = "Passordene stemmer ikke overens. Passord uforandret.";
-$a->strings["Empty passwords are not allowed. Password unchanged."] = "Tomme passord er ikke tillatt. Passord uforandret.";
-$a->strings["Password changed."] = "Passord endret.";
-$a->strings["Password update failed. Please try again."] = "Passord oppdatering mislyktes. Vennligst prøv igjen.";
-$a->strings["Not valid email."] = "Ikke gyldig e-post.";
-$a->strings["Protected email address. Cannot change to that email."] = "Beskyttet e-postadresse. Kan ikke endre til den e-postadressen.";
-$a->strings["System failure storing new email. Please try again."] = "Systemfeil ved lagring av ny e-post. Vennligst prøv igjen.";
-$a->strings["Settings updated."] = "Innstillinger oppdatert.";
-$a->strings["Add application"] = "Legg til program";
-$a->strings["Name"] = "Navn";
-$a->strings["Name of application"] = "Navn på program";
-$a->strings["Consumer Key"] = "Consumer Key";
-$a->strings["Automatically generated - change if desired. Max length 20"] = "Automatisk laget - kan endres om du vil. Største lengde 20";
-$a->strings["Consumer Secret"] = "Consumer Secret";
-$a->strings["Redirect"] = "Omdirigering";
-$a->strings["Redirect URI - leave blank unless your application specifically requires this"] = "Omdirigerings-URI - la stå tomt hvis ikke ditt program spesifikt krever dette";
-$a->strings["Icon url"] = "Ikon-URL";
-$a->strings["Optional"] = "Valgfritt";
-$a->strings["You can't edit this application."] = "Du kan ikke endre dette programmet.";
-$a->strings["Connected Apps"] = "Tilkoblede app-er";
-$a->strings["Client key starts with"] = "Klientnøkkel starter med";
-$a->strings["No name"] = "Ikke noe navn";
-$a->strings["Remove authorization"] = "Fjern tillatelse";
-$a->strings["No feature settings configured"] = "Ingen funksjonsinnstillinger er konfigurert";
-$a->strings["Feature Settings"] = "Funksjonsinnstillinger";
-$a->strings["Account Settings"] = "Kontoinnstillinger";
-$a->strings["Password Settings"] = "Passordinnstillinger";
-$a->strings["New Password:"] = "Nytt passord:";
-$a->strings["Confirm:"] = "Bekreft:";
-$a->strings["Leave password fields blank unless changing"] = "La passordfeltene stå blanke om det ikke skal endres";
-$a->strings["Email Address:"] = "E-postadresse:";
-$a->strings["Remove Account"] = "Slett konto";
-$a->strings["Warning: This action is permanent and cannot be reversed."] = "Advarsel: Denne handlingen er permanent og kan ikke angres.";
-$a->strings["Off"] = "Av";
-$a->strings["On"] = "PÃ¥";
-$a->strings["Additional Features"] = "Ekstra funksjoner";
-$a->strings["Connector Settings"] = "Koblingsinnstillinger";
-$a->strings["No special theme for mobile devices"] = "Ikke noe spesielt tema for mobile enheter";
-$a->strings["%s - (Experimental)"] = "%s - (Eksperimentelt)";
-$a->strings["Display Settings"] = "Visningsinnstillinger";
-$a->strings["Display Theme:"] = "Visningstema:";
-$a->strings["Mobile Theme:"] = "Mobiltema:";
-$a->strings["Update browser every xx seconds"] = "Oppdater nettleser hvert xx sekunder";
-$a->strings["Minimum of 10 seconds, no maximum"] = "Minimum 10 sekunder, ikke noe maksimum";
-$a->strings["Maximum number of conversations to load at any time:"] = "Maksimalt antall samtaler å laste samtidig:";
-$a->strings["Maximum of 100 items"] = "Maksimum 100 elementer";
-$a->strings["Don't show emoticons"] = "Ikke vis følelsesikoner";
-$a->strings["System Page Layout Editor - (advanced)"] = "Systemsidens layoutbehandler - (avansert)";
-$a->strings["Nobody except yourself"] = "Ingen unntatt deg selv";
-$a->strings["Only those you specifically allow"] = "Bare de du spesifikt tillater";
-$a->strings["Approved connections"] = "Godkjente forbindelser";
-$a->strings["Any connections"] = "Enhver forbindelse";
-$a->strings["Anybody on this website"] = "Enhver ved dette nettstedet";
-$a->strings["Anybody in this network"] = "Enhver i dette nettverket";
-$a->strings["Anybody authenticated"] = "Enhver som er autentisert";
-$a->strings["Anybody on the internet"] = "Enhver på Internett";
-$a->strings["Publish your default profile in the network directory"] = "Publiser din standardprofil i nettverkskatalogen";
-$a->strings["No"] = "Nei";
-$a->strings["Yes"] = "Ja";
-$a->strings["Allow us to suggest you as a potential friend to new members?"] = "Tillat oss å foreslå deg som en mulig venn til nye medlemmer?";
-$a->strings["or"] = "eller";
-$a->strings["Your channel address is"] = "Din kanaladresse er";
-$a->strings["Channel Settings"] = "Kanalinnstillinger";
-$a->strings["Basic Settings"] = "Grunninnstillinger";
-$a->strings["Your Timezone:"] = "Din tidssone:";
-$a->strings["Default Post Location:"] = "Standard plassering ved innlegg:";
-$a->strings["Geographical location to display on your posts"] = "Geografisk plassering som vises på dine innlegg";
-$a->strings["Use Browser Location:"] = "Bruk nettleseren sin plassering:";
-$a->strings["Adult Content"] = "Voksent innhold";
-$a->strings["This channel frequently or regularly publishes adult content. (Please tag any adult material and/or nudity with #NSFW)"] = "Denne kanalen vil ofte eller jevnlig publisere voksent innhold. (Vennligst merk alt voksent materiale og/eller nakenhet med #NSFW)";
-$a->strings["Security and Privacy Settings"] = "Sikkerhets- og personverninnstillinger";
-$a->strings["Hide my online presence"] = "Skjul min tilstedeværelse online";
-$a->strings["Prevents displaying in your profile that you are online"] = "Forhindrer visning på din profil av at du er online ";
-$a->strings["Simple Privacy Settings:"] = "Enkle personverninnstillinger:";
-$a->strings["Very Public - <em>extremely permissive (should be used with caution)</em>"] = "Svært offentlig - <em>ekstremt åpent (bør brukes med varsomhet)</em>";
-$a->strings["Typical - <em>default public, privacy when desired (similar to social network permissions but with improved privacy)</em>"] = "Typisk - <em>standard er offentlig, personvern når ønsket (likner på tillatelser i sosiale nettverk, men med forbedret personvern)</em>";
-$a->strings["Private - <em>default private, never open or public</em>"] = "Privat - <em>standard er privat, aldri åpen eller offentlig</em>";
-$a->strings["Blocked - <em>default blocked to/from everybody</em>"] = "Blokkert - <em>standard blokkert til/fra alle</em>";
-$a->strings["Allow others to tag your posts"] = "Tillat andre å merke dine innlegg";
-$a->strings["Often used by the community to retro-actively flag inappropriate content"] = "Ofte brukt av fellesskapet for å merke upassende innhold i etterkant";
-$a->strings["Advanced Privacy Settings"] = "Avanserte personverninnstillinger";
-$a->strings["Expire other channel content after this many days"] = "Annet kanal innhold utløper etter så mange dager";
-$a->strings["0 or blank prevents expiration"] = "0 eller blankt forhindrer utløp";
-$a->strings["Maximum Friend Requests/Day:"] = "Maksimalt antall venneforespørsler per dag:";
-$a->strings["May reduce spam activity"] = "Kan redusere søppelpostaktivitet";
-$a->strings["Default Post Permissions"] = "Standard innleggstillatelser";
-$a->strings["Maximum private messages per day from unknown people:"] = "Maksimalt antall private meldinger per dag fra ukjente personer:";
-$a->strings["Useful to reduce spamming"] = "Nyttig for å redusere søppelpost";
-$a->strings["Notification Settings"] = "Varslingsinnstillinger";
-$a->strings["By default post a status message when:"] = "Legg inn en statusmelding når du:";
-$a->strings["accepting a friend request"] = "aksepterer en venneforespørsel";
-$a->strings["joining a forum/community"] = "blir med i et forum/miljø";
-$a->strings["making an <em>interesting</em> profile change"] = "gjør en <em>interessant</em> profilendring";
-$a->strings["Send a notification email when:"] = "Send en varsel-e-post når:";
-$a->strings["You receive a connection request"] = "Du har mottatt en forespørsel om forbindelse";
-$a->strings["Your connections are confirmed"] = "Dine forbindelser er bekreftet";
-$a->strings["Someone writes on your profile wall"] = "Noen skriver på din profilvegg";
-$a->strings["Someone writes a followup comment"] = "Noen skriver en oppfølgende kommentar";
-$a->strings["You receive a private message"] = "Du mottar en privat melding";
-$a->strings["You receive a friend suggestion"] = "Du mottok et venneforslag";
-$a->strings["You are tagged in a post"] = "Du merkes i et innlegg";
-$a->strings["You are poked/prodded/etc. in a post"] = "Du ble prikket/oppildnet/og så vider i et innlegg";
-$a->strings["Advanced Account/Page Type Settings"] = "Avanserte innstillinger for konto/sidetype";
-$a->strings["Change the behaviour of this account for special situations"] = "Endre oppførselen til denne kontoen i spesielle situasjoner";
-$a->strings["Please enable expert mode (in <a href=\"settings/features\">Settings > Additional features</a>) to adjust!"] = "Vennligst skru på ekspertmodus (under <a href=\"settings/features\">Innstillinger > Ekstra funksjoner</a>) for å justere!";
-$a->strings["Miscellaneous Settings"] = "Diverse innstillinger";
-$a->strings["Personal menu to display in your channel pages"] = "Personlig meny som kan vises på dine kanalsider";
-$a->strings["Poke/Prod"] = "Prikke/oppildne";
-$a->strings["poke, prod or do other things to somebody"] = "prikke, oppildne eller gjør andre ting med noen";
-$a->strings["Recipient"] = "Mottaker";
-$a->strings["Choose what you wish to do to recipient"] = "Velg hva du ønsker å gjøre med mottakeren";
-$a->strings["Make this post private"] = "Gjør dette innlegget privat";
-$a->strings["Authorize application connection"] = "Tillat programforbindelse";
-$a->strings["Return to your app and insert this Securty Code:"] = "GÃ¥ tilbake til din app og legg inn denne sikkerhetskoden:";
-$a->strings["Please login to continue."] = "Vennligst logg inn for å fortsette.";
-$a->strings["Do you want to authorize this application to access your posts and contacts, and/or create new posts for you?"] = "Vil du tillate dette programmet å få tilgang til dine innlegg og kontakter, og/eller lage nye innlegg for deg?";
-$a->strings["Remote authentication blocked. You are logged into this site locally. Please logout and retry."] = "Fjernautentisering blokkert. Du er logget inn på dette nettstedet lokalt. Vennligst logg ut og prøv på nytt.";
-$a->strings["Welcome %s. Remote authentication successful."] = "Velkommen %s. Ekstern autentisering er vellykket.";
-$a->strings["Item not available."] = "Elementet er ikke tilgjengelig.";
-$a->strings["Fetching URL returns error: %1\$s"] = "Henting av URL gir følgende feil: %1\$s";
-$a->strings["Invalid item."] = "Ugyldig element.";
-$a->strings["Channel not found."] = "Kanalen ble ikke funnet.";
-$a->strings["Page not found."] = "Siden ikke funnet.";
-$a->strings["Image uploaded but image cropping failed."] = "Bildet ble lastet opp, men beskjæring av bildet mislyktes.";
-$a->strings["Image resize failed."] = "Endring av bildestørrelse mislyktes.";
-$a->strings["Shift-reload the page or clear browser cache if the new photo does not display immediately."] = "Hold nede Shift-knappen og last siden på nytt eller tøm nettleserens mellomlager hvis det nye bildet ikke vises umiddelbart.";
-$a->strings["Image exceeds size limit of %d"] = "Bildet overstiger størrelsesbegrensningen på %d";
-$a->strings["Unable to process image."] = "Kan ikke behandle bildet.";
-$a->strings["Photo not available."] = "Bildet er ikke tilgjengelig.";
-$a->strings["Upload File:"] = "Last opp fil:";
-$a->strings["Select a profile:"] = "Velg en profil:";
-$a->strings["Upload Profile Photo"] = "Last opp profilbilde:";
-$a->strings["Upload"] = "Last opp";
-$a->strings["skip this step"] = "hopp over dette steget";
-$a->strings["select a photo from your photo albums"] = "velg et bilde fra dine fotoalbum";
-$a->strings["Crop Image"] = "Beskjær bildet";
-$a->strings["Please adjust the image cropping for optimum viewing."] = "Vennligst juster bildebeskjæringen for optimal visning.";
-$a->strings["Done Editing"] = "Avslutt redigering";
-$a->strings["Image uploaded successfully."] = "Opplasting av bildet var vellykket.";
-$a->strings["Image upload failed."] = "Opplasting av bildet mislyktes.";
-$a->strings["Image size reduction [%s] failed."] = "Forminsking av bildet [%s] mislyktes.";
-$a->strings["Block Name"] = "Byggeklossens navn";
+$a->strings["Some blurb about what to do when you're new here"] = "En standardtekst om hva du bør gjøre som ny her";
$a->strings["Profile not found."] = "Profilen ble ikke funnet.";
$a->strings["Profile deleted."] = "Profilen er slettet.";
$a->strings["Profile-"] = "Profil-";
$a->strings["New profile created."] = "Ny profil opprettet.";
$a->strings["Profile unavailable to clone."] = "Profilen er utilgjengelig for klonen.";
+$a->strings["Profile unavailable to export."] = "Profilen er utilgjengelig for eksport.";
$a->strings["Profile Name is required."] = "Profilnavn er påkrevd.";
$a->strings["Marital Status"] = "Sivilstand";
$a->strings["Romantic Partner"] = "Romantisk partner";
@@ -999,17 +916,21 @@ $a->strings["Address"] = "Adresse";
$a->strings["Location"] = "Plassering";
$a->strings["Profile updated."] = "Profilen er oppdatert.";
$a->strings["Hide your contact/friend list from viewers of this profile?"] = "Skjul kontakt-/vennelisten din fra de som ser på denne profilen?";
+$a->strings["Yes"] = "Ja";
+$a->strings["No"] = "Nei";
$a->strings["Edit Profile Details"] = "Endre profildetaljer";
$a->strings["View this profile"] = "Vis denne profilen";
$a->strings["Change Profile Photo"] = "Endre profilbilde";
$a->strings["Create a new profile using these settings"] = "Lag en ny profil ved å bruke disse innstillingene";
$a->strings["Clone this profile"] = "Klon denne profilen";
$a->strings["Delete this profile"] = "Slett denne profilen";
+$a->strings["Import profile from file"] = "Importer profil fra fil";
+$a->strings["Export profile to file"] = "Eksporter profil til fil";
$a->strings["Profile Name:"] = "Profilnavn:";
$a->strings["Your Full Name:"] = "Ditt fulle navn:";
$a->strings["Title/Description:"] = "Tittel/Beskrivelse:";
$a->strings["Your Gender:"] = "Ditt kjønn:";
-$a->strings["Birthday (%s):"] = "Fødselsdag (%s):";
+$a->strings["Birthday :"] = "Fødselsdag:";
$a->strings["Street Address:"] = "Gateadresse:";
$a->strings["Locality/City:"] = "Sted/By:";
$a->strings["Postal/Zip Code:"] = "Postnummer/ZIP-kode:";
@@ -1035,19 +956,189 @@ $a->strings["Film/dance/culture/entertainment"] = "Film/dans/kultur/underholdnin
$a->strings["Love/romance"] = "Kjærlighet/romantikk";
$a->strings["Work/employment"] = "Arbeid/sysselsetting";
$a->strings["School/education"] = "Skole/utdanning";
-$a->strings["This is your <strong>public</strong> profile.<br />It <strong>may</strong> be visible to anybody using the internet."] = "Dette er din <strong>offentlige</strong> profil.<br />Den <strong>kan</strong> være synlig for alle på Internett.";
+$a->strings["This is your default profile."] = "Dette er din standardprofil.";
$a->strings["Age: "] = "Alder:";
$a->strings["Edit/Manage Profiles"] = "Endre/håndter profiler";
$a->strings["Add profile things"] = "Legg til profilting";
$a->strings["Include desirable objects in your profile"] = "Inkluder ønskverdige objekter i din profil";
-$a->strings["Bookmark added"] = "Bokmerke lagt til";
-$a->strings["My Bookmarks"] = "Mine bokmerker";
-$a->strings["My Connections Bookmarks"] = "Mine forbindelsers bokmerker";
-$a->strings["Invalid profile identifier."] = "Ugyldig profil-identifikator.";
-$a->strings["Profile Visibility Editor"] = "Endre profilsynlighet";
-$a->strings["Click on a contact to add or remove."] = "Klikk på en kontakt for å legge til eller fjerne.";
-$a->strings["Visible To"] = "Synlig for";
-$a->strings["All Connections"] = "Alle forbindelser";
+$a->strings["Continue"] = "Fortsett";
+$a->strings["Premium Channel Setup"] = "Premiumkanal-oppsett";
+$a->strings["Enable premium channel connection restrictions"] = "Slå på restriksjoner for forbindelse med premiumkanal";
+$a->strings["Please enter your restrictions or conditions, such as paypal receipt, usage guidelines, etc."] = "Vennligst skriv dine restriksjoner og betingelser, slik som PayPal-kvittering, retningslinjer for bruk, og så videre.";
+$a->strings["This channel may require additional steps or acknowledgement of the following conditions prior to connecting:"] = "Denne kanalen kan kreve ytterligere steg og bekreftelse av følgende betingelser før tilkobling:";
+$a->strings["Potential connections will then see the following text before proceeding:"] = "Potensielle forbindelser vil da se følgende tekst før de går videre:";
+$a->strings["By continuing, I certify that I have complied with any instructions provided on this page."] = "Ved å fortsette bekrefter jeg at jeg har oppfylt alle instruksjoner gitt på denne siden.";
+$a->strings["(No specific instructions have been provided by the channel owner.)"] = "(Ingen spesifikke instruksjoner er gitt av kanaleieren.)";
+$a->strings["Restricted or Premium Channel"] = "Begrenset kanal eller premiumkanal";
+$a->strings["Remote authentication blocked. You are logged into this site locally. Please logout and retry."] = "Fjernautentisering blokkert. Du er logget inn på dette nettstedet lokalt. Vennligst logg ut og prøv på nytt.";
+$a->strings["Welcome %s. Remote authentication successful."] = "Velkommen %s. Ekstern autentisering er vellykket.";
+$a->strings["Red Matrix Server - Setup"] = "Red Matrix tjener - oppsett";
+$a->strings["Could not connect to database."] = "Fikk ikke kontakt med databasen.";
+$a->strings["Could not connect to specified site URL. Possible SSL certificate or DNS issue."] = "Fikk ikke kontakt med det angitte nettstedets URL. Problemet kan muligens skyldes SSL-sertifikatet eller DNS.";
+$a->strings["Could not create table."] = "Kunne ikke lage tabellen.";
+$a->strings["Your site database has been installed."] = "Databasen til ditt nettsted har blitt installert.";
+$a->strings["You may need to import the file \"install/schema_xxx.sql\" manually using a database client."] = "Du må kanskje importere filen \"install/schmea_xxx.sql\" manuelt ved å bruke en databaseklient.";
+$a->strings["Please see the file \"install/INSTALL.txt\"."] = "Vennligst les filen \"install/INSTALL.txt\".";
+$a->strings["System check"] = "Systemsjekk";
+$a->strings["Next"] = "Neste";
+$a->strings["Check again"] = "Sjekk igjen";
+$a->strings["Database connection"] = "Databaseforbindelse";
+$a->strings["In order to install Red Matrix we need to know how to connect to your database."] = "For å installere Red Matrix må du oppgi hvordan din database kan kontaktes.";
+$a->strings["Please contact your hosting provider or site administrator if you have questions about these settings."] = "Vennligst kontakt din nettstedstilbyder eller nettstedsadministrator hvis du har spørsmål om disse innstillingene.";
+$a->strings["The database you specify below should already exist. If it does not, please create it before continuing."] = "Databasen du oppgir nedenfor må finnes på forhånd. Hvis den ikke finnes, vennligst lag den før du fortsetter.";
+$a->strings["Database Server Name"] = "Navn på databasetjener";
+$a->strings["Default is localhost"] = "Standard er localhost";
+$a->strings["Database Port"] = "Databaseport";
+$a->strings["Communication port number - use 0 for default"] = "Kommunikasjonsportnummer - bruk 0 for standard";
+$a->strings["Database Login Name"] = "Database innloggingsnavn";
+$a->strings["Database Login Password"] = "Database innloggingspassord";
+$a->strings["Database Name"] = "Databasenavn";
+$a->strings["Database Type"] = "Databasetype";
+$a->strings["Site administrator email address"] = "E-postadressen til administrator ved nettstedet";
+$a->strings["Your account email address must match this in order to use the web admin panel."] = "Din konto sin e-postadresse må være lik denne for å kunne bruke web-administrasjonspanelet.";
+$a->strings["Website URL"] = "Nettstedets URL";
+$a->strings["Please use SSL (https) URL if available."] = "Vennligst bruk SSL (https) URL hvis tilgjengelig.";
+$a->strings["Please select a default timezone for your website"] = "Vennligst velg en standard tidssone for ditt nettsted";
+$a->strings["Site settings"] = "Nettstedets innstillinger";
+$a->strings["Could not find a command line version of PHP in the web server PATH."] = "Fant ikke en kommandolinjeversjon av PHP i webtjenerens sti (PATH).";
+$a->strings["If you don't have a command line version of PHP installed on server, you will not be able to run background polling via cron."] = "Hvis du ikke har en kommandolinjeversjon av PHP installert på tjeneren, så vil du ikke kunne kjøre bakgrunnshenting via cron.";
+$a->strings["PHP executable path"] = "PHP-kjørefilens sti";
+$a->strings["Enter full path to php executable. You can leave this blank to continue the installation."] = "Skriv full sti til kjørefilen for PHP. Du kan la denne stå blank for å fortsette installasjonen.";
+$a->strings["Command line PHP"] = "Kommandolinje PHP";
+$a->strings["The command line version of PHP on your system does not have \"register_argc_argv\" enabled."] = "Kommandolinjeversjonen av PHP på ditt system har ikke \"register_argc_argv\" påskrudd.";
+$a->strings["This is required for message delivery to work."] = "Dette er påkrevd for at meldingslevering skal virke.";
+$a->strings["PHP register_argc_argv"] = "PHP register_argc_argv";
+$a->strings["Error: the \"openssl_pkey_new\" function on this system is not able to generate encryption keys"] = "Feil: \"openssl_pkey_new\"-funksjonen på dette systemet er ikke i stand til å lage krypteringsnøkler";
+$a->strings["If running under Windows, please see \"http://www.php.net/manual/en/openssl.installation.php\"."] = "Ved kjøring på Windows, vennligst se \"http://www.php.net/manual/en/openssl.installation.php\".";
+$a->strings["Generate encryption keys"] = "Lag krypteringsnøkler";
+$a->strings["libCurl PHP module"] = "libCurl PHP-modul";
+$a->strings["GD graphics PHP module"] = "GD graphics PHP-modul";
+$a->strings["OpenSSL PHP module"] = "OpenSSL PHP-modul";
+$a->strings["mysqli or postgres PHP module"] = "MySQLi eller Postgres PHP modul";
+$a->strings["mb_string PHP module"] = "mb_string PHP-modul";
+$a->strings["mcrypt PHP module"] = "mcrypt PHP-modul";
+$a->strings["Apache mod_rewrite module"] = "Apache mod_rewrite-modul";
+$a->strings["Error: Apache webserver mod-rewrite module is required but not installed."] = "Feil: Apache web-tjenerens mod-rewrite-modul er påkrevd, men ikke installert.";
+$a->strings["proc_open"] = "proc_open";
+$a->strings["Error: proc_open is required but is either not installed or has been disabled in php.ini"] = "Feil: proc_open er påkrevd, men er enten ikke installert eller har blitt avskrudd i php.ini";
+$a->strings["Error: libCURL PHP module required but not installed."] = "Feil: libCURL PHP-modul er påkrevd, men er ikke installert.";
+$a->strings["Error: GD graphics PHP module with JPEG support required but not installed."] = "Feil: GD graphics PHP-modul med JPEG-støtte er påkrevd, men er ikke installert.";
+$a->strings["Error: openssl PHP module required but not installed."] = "Feil: openssl PHP-modul er påkrevd, men er ikke installert.";
+$a->strings["Error: mysqli or postgres PHP module required but neither are installed."] = "Feil: mysqli eller postgres PHP modul er påkrevd, men ingen av dem er installert.";
+$a->strings["Error: mb_string PHP module required but not installed."] = "Feil: mb_string PHP-modul er påkrevd, men er ikke installert.";
+$a->strings["Error: mcrypt PHP module required but not installed."] = "Feil: mcrypt PHP-modul er påkrevd, men er ikke installert.";
+$a->strings["The web installer needs to be able to create a file called \".htconfig.php\ in the top folder of your web server and it is unable to do so."] = "Web-installasjonen må kunne lage en fil kalt \".htconfig.php\" i toppkatalogen til web-tjeneren din, men dette får den ikke til.";
+$a->strings["This is most often a permission setting, as the web server may not be able to write files in your folder - even if you can."] = "Dette er oftest tillatelsesinnstilling, ettersom webtjeneren kanskje kan skrive til filer i din mappe - selv om du kan.";
+$a->strings["At the end of this procedure, we will give you a text to save in a file named .htconfig.php in your Red top folder."] = "På slutten av denne prosedyren vil vi gi deg en tekst til å lagre i en fil kalt .htconfig.php i toppkatalogen til din Red.";
+$a->strings["You can alternatively skip this procedure and perform a manual installation. Please see the file \"install/INSTALL.txt\" for instructions."] = "Alternativt, så kan du hoppe over denne prosedyren og gjennomføre en manuell installasjon. Vennligst se filen \"install/INSTALL.txt\" for instruksjoner.";
+$a->strings[".htconfig.php is writable"] = ".htconfig.php kan skrives til";
+$a->strings["Red uses the Smarty3 template engine to render its web views. Smarty3 compiles templates to PHP to speed up rendering."] = "Red bruker malmotoren Smarty3 for å gjengi sine webvisninger. Smarty3 kompilerer malene om til PHP for å framskynde gjengivelsen.";
+$a->strings["In order to store these compiled templates, the web server needs to have write access to the directory %s under the Red top level folder."] = "For å kunne lagre disse kompilerte malene, så må webtjeneren ha skrivetilgang til katalogen %s under Red sin hovedmappe.";
+$a->strings["Please ensure that the user that your web server runs as (e.g. www-data) has write access to this folder."] = "Vennligst sikre at brukeren som din web-tjeneste kjører som (for eksempel www-data) har skrivetilgang til denne katalogen.";
+$a->strings["Note: as a security measure, you should give the web server write access to %s only--not the template files (.tpl) that it contains."] = "Merknad: som et sikkerhetstiltak bør du bare gi webtjerenn skrivetilgang til %s - ikke til malfilene (.tpl) som den inneholder.";
+$a->strings["%s is writable"] = "%s kan skrives til";
+$a->strings["Red uses the store directory to save uploaded files. The web server needs to have write access to the store directory under the Red top level folder"] = "Red bruker lagringsmappen for å lagre opplastede filer. Webtjeneren trenger å ha skrivetilgang til lagringsmappen under Red sin toppnivåmappe.";
+$a->strings["store is writable"] = "lageret kan skrives til";
+$a->strings["SSL certificate cannot be validated. Fix certificate or disable https access to this site."] = "SSL-sertifikatet kan ikke kontrolleres. Fiks sertifikatet eller skru av https tilgang til dette nettstedet.";
+$a->strings["If you have https access to your website or allow connections to TCP port 443 (the https: port), you MUST use a browser-valid certificate. You MUST NOT use self-signed certificates!"] = "Hvis du har HTTPS-tilgang til ditt nettsted eller tillater forbindelser til TCP port 443 (HTTPS-porten), så MÅ du bruke nettlesergodkjent sertifkater. Du MÅ IKKE bruke egensignert sertifikater!";
+$a->strings["This restriction is incorporated because public posts from you may for example contain references to images on your own hub."] = "Denne begrensningen er tatt inn fordi offentlige innlegg fra deg kan for eksempel inneholde referanser til bilder på din egen hub.";
+$a->strings["If your certificate is not recognized, members of other sites (who may themselves have valid certificates) will get a warning message on their own site complaining about security issues."] = "Hvis sertifikatet ditt ikke gjenkjennes, så vil medlemmer på andre nettsteder (som selv kan ha godkjente sertifikater) få en beskjed med en advarsel på deres eget nettsted som klager over sikkerhetsproblemer.";
+$a->strings["This can cause usability issues elsewhere (not just on your own site) so we must insist on this requirement."] = "Dette kan gi problemer med brukervennlighet (ikke bare på ditt eget nettsted), så vi må insistere på dette kravet.";
+$a->strings["Providers are available that issue free certificates which are browser-valid."] = "Det finnes tilbydere som utsteder gratis sertifikater som er gyldige i nettlesere.";
+$a->strings["SSL certificate validation"] = "SSL sertifikat-kontroll";
+$a->strings["Url rewrite in .htaccess is not working. Check your server configuration.Test: "] = "URL omskriving (rewrite) i .htaccess virker ikke. Sjekk konfigurasjonen til tjeneren din. Test:";
+$a->strings["Url rewrite is working"] = "URL rewrite virker";
+$a->strings["The database configuration file \".htconfig.php\" could not be written. Please use the enclosed text to create a configuration file in your web server root."] = "Databasekonfigurasjonsfilen \".htconfig.php\" kunne ikke skrives. Vennligst bruk den medfølgende teksten for å lage en konfigurasjonsfil i toppkatalogen av din web-tjener.";
+$a->strings["Errors encountered creating database tables."] = "Feil oppstod under opprettelsen av databasetabeller.";
+$a->strings["<h1>What next</h1>"] = "<h1>Hva gjenstår</h1>";
+$a->strings["IMPORTANT: You will need to [manually] setup a scheduled task for the poller."] = "VIKTIG: Du må [manuelt] sette opp en automatisert tidfestet oppgave til bakgrunnshenteren.";
+$a->strings["Version %s"] = "Versjon %s";
+$a->strings["Installed plugins/addons/apps:"] = "Installerte tilleggsfunksjoner/tillegg/apper:";
+$a->strings["No installed plugins/addons/apps"] = "Ingen installerte tilleggsfunksjoner/tillegg/apper";
+$a->strings["Red"] = "Red";
+$a->strings["This is a hub of the Red Matrix - a global cooperative network of decentralized privacy enhanced websites."] = "Dette er en hub i Red Matrix - et globalt kooperativt nettverk av desentraliserte personvernforsterkede nettsteder.";
+$a->strings["Running at web location"] = "Kjører på webplasseringen";
+$a->strings["Please visit <a href=\"http://getzot.com\">GetZot.com</a> to learn more about the Red Matrix."] = "Vennligst besøk <a href=\"http://getzot.com\">GetZot.com</a> for å lære mer om Red Matrix.";
+$a->strings["Bug reports and issues: please visit"] = "Feilmeldinger og feilretting: vennligst besøk";
+$a->strings["Suggestions, praise, etc. - please email \"redmatrix\" at librelist - dot com"] = "Forslag, ros og så videre - vennligst e-post \"redmatrix\" hos librelist - punktum com";
+$a->strings["Site Administrators"] = "Nettstedsadministratorer";
+$a->strings["Poke/Prod"] = "Prikke/oppildne";
+$a->strings["poke, prod or do other things to somebody"] = "prikke, oppildne eller gjør andre ting med noen";
+$a->strings["Recipient"] = "Mottaker";
+$a->strings["Choose what you wish to do to recipient"] = "Velg hva du ønsker å gjøre med mottakeren";
+$a->strings["Make this post private"] = "Gjør dette innlegget privat";
+$a->strings["Authorize application connection"] = "Tillat programforbindelse";
+$a->strings["Return to your app and insert this Securty Code:"] = "GÃ¥ tilbake til din app og legg inn denne sikkerhetskoden:";
+$a->strings["Please login to continue."] = "Vennligst logg inn for å fortsette.";
+$a->strings["Do you want to authorize this application to access your posts and contacts, and/or create new posts for you?"] = "Vil du tillate dette programmet å få tilgang til dine innlegg og kontakter, og/eller lage nye innlegg for deg?";
+$a->strings["Item not available."] = "Elementet er ikke tilgjengelig.";
+$a->strings["Fetching URL returns error: %1\$s"] = "Henting av URL gir følgende feil: %1\$s";
+$a->strings["Invalid item."] = "Ugyldig element.";
+$a->strings["Channel not found."] = "Kanalen ble ikke funnet.";
+$a->strings["Page not found."] = "Siden ikke funnet.";
+$a->strings["Failed to create source. No channel selected."] = "Mislyktes med å lage kilde. Ingen kanal er valgt.";
+$a->strings["Source created."] = "Kilden er laget.";
+$a->strings["Source updated."] = "Kilden er oppdatert.";
+$a->strings["*"] = "*";
+$a->strings["Manage remote sources of content for your channel."] = "HÃ¥ndtere eksterne innholdskilder til din kanal.";
+$a->strings["New Source"] = "Ny kilde";
+$a->strings["Import all or selected content from the following channel into this channel and distribute it according to your channel settings."] = "Importer alt eller et utvalgt av innhold fra følgende kanal inn i denne kanalen og distribuer det i henhold til dine egne kanalinnstillinger.";
+$a->strings["Only import content with these words (one per line)"] = "Bare importer innhold med disse ordene (ett ord per linje)";
+$a->strings["Leave blank to import all public content"] = "La stå tomt for å importere alt offentlig innhold";
+$a->strings["Channel Name"] = "Kanalnavn";
+$a->strings["Source not found."] = "Kilden ble ikke funnet.";
+$a->strings["Edit Source"] = "Endre kilde";
+$a->strings["Delete Source"] = "Slett kilde";
+$a->strings["Source removed"] = "Kilden er fjernet";
+$a->strings["Unable to remove source."] = "Ikke i stand til å fjerne kilde.";
+$a->strings["Block Name"] = "Byggeklossens navn";
+$a->strings["Public access denied."] = "Offentlig tilgang avvist.";
+$a->strings["Gender: "] = "Kjønn:";
+$a->strings["Status: "] = "Status:";
+$a->strings["Homepage: "] = "Hjemmeside:";
+$a->strings["Hometown: "] = "Hjemby:";
+$a->strings["About: "] = "Om:";
+$a->strings["Public Forum:"] = "Offentlig forum:";
+$a->strings["Keywords: "] = "Nøkkelord:";
+$a->strings["Finding:"] = "Finner:";
+$a->strings["next page"] = "Neste side";
+$a->strings["previous page"] = "Forrige side";
+$a->strings["No entries (some entries may be hidden)."] = "Ingen oppføringer (noen oppføringer kan være skjult).";
+$a->strings["Maximum daily site registrations exceeded. Please try again tomorrow."] = "Antallet daglige registreringer ved nettstedet er overskredet. Vær vennlig å prøve igjen imorgen.";
+$a->strings["Please indicate acceptance of the Terms of Service. Registration failed."] = "Vennligst angi at tjenesteavtalen er akseptert. Registrering mislyktes.";
+$a->strings["Passwords do not match."] = "Passordene er ikke like.";
+$a->strings["Registration successful. Please check your email for validation instructions."] = "Registreringen er vellykket. Vennligst sjekk e-posten din for å bekrefte opprettelsen.";
+$a->strings["Your registration is pending approval by the site owner."] = "Din registrering venter på godkjenning av nettstedets eier.";
+$a->strings["Your registration can not be processed."] = "Din registrering kan ikke behandles.";
+$a->strings["Registration on this site/hub is by approval only."] = "Registrering på dette nettstedet/denne hubben skjer bare gjennom godkjenning.";
+$a->strings["<a href=\"pubsites\">Register at another affiliated site/hub</a>"] = "<a href=\"pubsites\">Registrer på et annet tilknyttet nettsted/hub</a>";
+$a->strings["This site has exceeded the number of allowed daily account registrations. Please try again tomorrow."] = "Dette nettstedet har overskredet antallet tillate kontoregistreringer per dag. Vennligst prøv igjen imorgen.";
+$a->strings["Terms of Service"] = "Tjenesteavtale";
+$a->strings["I accept the %s for this website"] = "Jeg godtar %s for dette nettstedet";
+$a->strings["I am over 13 years of age and accept the %s for this website"] = "Jeg er over 13 år gammel og aksepterer %s for dette nettstedet.";
+$a->strings["Registration"] = "Registrering";
+$a->strings["Membership on this site is by invitation only."] = "Medlemskap ved dette nettstedet skjer kun via invitasjon.";
+$a->strings["Please enter your invitation code"] = "Vennligst skriv din invitasjonskode";
+$a->strings["Your email address"] = "Din e-postadresse";
+$a->strings["Choose a password"] = "Velg et passord";
+$a->strings["Please re-enter your password"] = "Vennligst skriv ditt passord en gang til";
+$a->strings["Event can not end before it has started."] = "Hendelsen kan ikke slutte før den starter.";
+$a->strings["Event title and start time are required."] = "Hendelsestittel og starttidspunkt er påkrevd.";
+$a->strings["Event not found."] = "Hendelsen ble ikke funnet.";
+$a->strings["l, F j"] = "l, F j";
+$a->strings["Edit event"] = "Endre hendelse";
+$a->strings["Create New Event"] = "Lag ny hendelse";
+$a->strings["Previous"] = "Forrige";
+$a->strings["Event details"] = "Hendelsesdetaljer";
+$a->strings["Starting date and Title are required."] = "Startdato og Tittel er påkrevd.";
+$a->strings["Event Starts:"] = "Hendelsen starter:";
+$a->strings["Required"] = "PÃ¥krevd";
+$a->strings["Finish date/time is not known or not relevant"] = "Sluttdato/-tidspunkt er ikke kjent eller ikke relevant";
+$a->strings["Event Finishes:"] = "Hendelsen slutter:";
+$a->strings["Adjust for viewer timezone"] = "Juster i forhold til tilskuerens tidssone";
+$a->strings["Description:"] = "Beskrivelse:";
+$a->strings["Title:"] = "Tittel:";
+$a->strings["Share this event"] = "Del denne hendelsen";
$a->strings["Public Sites"] = "Offentlige nettsteder";
$a->strings["The listed sites allow public registration into the Red Matrix. All sites in the matrix are interlinked so membership on any of them conveys membership in the matrix as a whole. Some sites may require subscription or provide tiered service plans. The provider links <strong>may</strong> provide additional details."] = "Nettstedene på listen tillater offentlig registrering i Red Matrix. Alle nettsteder i matrix er forbundet så medlemskap på enhver av dem formidler medlemskap i hele matrix. Noen nettsteder kan kreve abonnement eller tilby lagdelte tjenesteavtaler. Tilbyderlenkene <strong>kan</strong> gi tilleggsopplysninger.";
$a->strings["Site URL"] = "Nettstedets URL";
@@ -1069,28 +1160,17 @@ $a->strings["Bookmark this room"] = "Bokmerk dette rommet";
$a->strings["New Chatroom"] = "Nytt chatrom";
$a->strings["Chatroom Name"] = "Navn på chatrom";
$a->strings["%1\$s's Chatrooms"] = "%1\$s sine chatrom";
-$a->strings["Maximum daily site registrations exceeded. Please try again tomorrow."] = "Antallet daglige registreringer ved nettstedet er overskredet. Vær vennlig å prøve igjen imorgen.";
-$a->strings["Please indicate acceptance of the Terms of Service. Registration failed."] = "Vennligst angi at tjenesteavtalen er akseptert. Registrering mislyktes.";
-$a->strings["Passwords do not match."] = "Passordene er ikke like.";
-$a->strings["Registration successful. Please check your email for validation instructions."] = "Registreringen er vellykket. Vennligst sjekk e-posten din for å bekrefte opprettelsen.";
-$a->strings["Your registration is pending approval by the site owner."] = "Din registrering venter på godkjenning av nettstedets eier.";
-$a->strings["Your registration can not be processed."] = "Din registrering kan ikke behandles.";
-$a->strings["Registration on this site/hub is by approval only."] = "Registrering på dette nettstedet/denne hubben skjer bare gjennom godkjenning.";
-$a->strings["<a href=\"pubsites\">Register at another affiliated site/hub</a>"] = "<a href=\"pubsites\">Registrer på et annet tilknyttet nettsted/hub</a>";
-$a->strings["This site has exceeded the number of allowed daily account registrations. Please try again tomorrow."] = "Dette nettstedet har overskredet antallet tillate kontoregistreringer per dag. Vennligst prøv igjen imorgen.";
-$a->strings["Terms of Service"] = "Tjenesteavtale";
-$a->strings["I accept the %s for this website"] = "Jeg godtar %s for dette nettstedet";
-$a->strings["I am over 13 years of age and accept the %s for this website"] = "Jeg er over 13 år gammel og aksepterer %s for dette nettstedet.";
-$a->strings["Registration"] = "Registrering";
-$a->strings["Membership on this site is by invitation only."] = "Medlemskap ved dette nettstedet skjer kun via invitasjon.";
-$a->strings["Please enter your invitation code"] = "Vennligst skriv din invitasjonskode";
-$a->strings["Your email address"] = "Din e-postadresse";
-$a->strings["Choose a password"] = "Velg et passord";
-$a->strings["Please re-enter your password"] = "Vennligst skriv ditt passord en gang til";
+$a->strings["%1\$s is following %2\$s's %3\$s"] = "%1\$s følger %2\$s sin %3\$s";
$a->strings["Away"] = "Borte";
$a->strings["Online"] = "Online";
$a->strings["Please login."] = "Vennligst logg inn.";
-$a->strings["Red Matrix - Guests: Username: {your email address}, Password: +++"] = "Red Matrix - gjester: brukernavn: {din e-postadresse}, passord: +++";
+$a->strings["No such group"] = "Gruppen finnes ikke";
+$a->strings["Search Results For:"] = "Søkeresultat for:";
+$a->strings["Collection is empty"] = "Samlingen er tom";
+$a->strings["Collection: "] = "Samling:";
+$a->strings["Connection: "] = "Forbindelse:";
+$a->strings["Invalid connection."] = "Ugyldig forbindelse.";
+$a->strings["Channel removals are not allowed within 48 hours of changing the account password."] = "Fjerning av kanaler er ikke tillatt innen 48 timer etter endring av kontopassordet.";
$a->strings["Remove This Channel"] = "Fjern denne kanalen";
$a->strings["This will completely remove this channel from the network. Once this has been done it is not recoverable."] = "Dette vil fullstendig fjerne kanalen fra nettverket. NÃ¥r det er gjort kan det ikke angres.";
$a->strings["Please enter your password for verification:"] = "Vennligst skriv ditt passord for å få bekreftelse:";
@@ -1106,21 +1186,41 @@ $a->strings["Authentication failed."] = "Autentisering mislyktes.";
$a->strings["Remote Authentication"] = "Fjernautentisering";
$a->strings["Enter your channel address (e.g. channel@example.com)"] = "Skriv din kanaladresse (for eksempel channel@exampel.com)";
$a->strings["Authenticate"] = "Autentiser";
-$a->strings["Continue"] = "Fortsett";
-$a->strings["Premium Channel Setup"] = "Premiumkanal-oppsett";
-$a->strings["Enable premium channel connection restrictions"] = "Slå på restriksjoner for forbindelse med premiumkanal";
-$a->strings["Please enter your restrictions or conditions, such as paypal receipt, usage guidelines, etc."] = "Vennligst skriv dine restriksjoner og betingelser, slik som PayPal-kvittering, retningslinjer for bruk, og så videre.";
-$a->strings["This channel may require additional steps or acknowledgement of the following conditions prior to connecting:"] = "Denne kanalen kan kreve ytterligere steg og bekreftelse av følgende betingelser før tilkobling:";
-$a->strings["Potential connections will then see the following text before proceeding:"] = "Potensielle forbindelser vil da se følgende tekst før de går videre:";
-$a->strings["By continuing, I certify that I have complied with any instructions provided on this page."] = "Ved å fortsette bekrefter jeg at jeg har oppfylt alle instruksjoner gitt på denne siden.";
-$a->strings["(No specific instructions have been provided by the channel owner.)"] = "(Ingen spesifikke instruksjoner er gitt av kanaleieren.)";
-$a->strings["Restricted or Premium Channel"] = "Begrenset kanal eller premiumkanal";
-$a->strings["No such group"] = "Gruppen finnes ikke";
-$a->strings["Search Results For:"] = "Søkeresultat for:";
-$a->strings["Collection is empty"] = "Samlingen er tom";
-$a->strings["Collection: "] = "Samling:";
-$a->strings["Connection: "] = "Forbindelse:";
-$a->strings["Invalid connection."] = "Ugyldig forbindelse.";
+$a->strings["- select -"] = "- velg -";
+$a->strings["Page owner information could not be retrieved."] = "Informasjon om sideeier kunne ikke hentes.";
+$a->strings["Album not found."] = "Albumet ble ikke funnet.";
+$a->strings["Delete Album"] = "Slett album";
+$a->strings["Delete Photo"] = "Slett bilde";
+$a->strings["No photos selected"] = "Ingen bilder valgt";
+$a->strings["Access to this item is restricted."] = "Tilgang til dette elementet er begrenset.";
+$a->strings["%1$.2f MB of %2$.2f MB photo storage used."] = "%1$.2f MB av %2$.2f MB lagringsplass til bilder er brukt.";
+$a->strings["%1$.2f MB photo storage used."] = "%1$.2f MB lagringsplass til bilder er brukt.";
+$a->strings["Upload Photos"] = "Last opp bilder";
+$a->strings["Enter a new album name"] = "Skriv et nytt albumnavn";
+$a->strings["or select an existing one (doubleclick)"] = "eller velg et eksisterende album (dobbeltklikk)";
+$a->strings["Do not show a status post for this upload"] = "Ikke lag et statusinnlegg for denne oppdateringen";
+$a->strings["Album name could not be decoded"] = "Albumnavnet kunne ikke dekodes";
+$a->strings["Contact Photos"] = "Kontaktbilder";
+$a->strings["Show Newest First"] = "Vis nyeste først";
+$a->strings["Show Oldest First"] = "Vis eldste først";
+$a->strings["View Photo"] = "Vis foto";
+$a->strings["Edit Album"] = "Endre album";
+$a->strings["Permission denied. Access to this item may be restricted."] = "Tillatelse avvist. Tilgang til dette elementet kan være begrenset.";
+$a->strings["Photo not available"] = "Bilde er utilgjengelig";
+$a->strings["Use as profile photo"] = "Bruk som profilbilde";
+$a->strings["Private Photo"] = "Privat bilde";
+$a->strings["View Full Size"] = "Vis i full størrelse";
+$a->strings["Remove"] = "Fjern";
+$a->strings["Edit photo"] = "Endre bilde";
+$a->strings["Rotate CW (right)"] = "Roter med klokka (mot høyre)";
+$a->strings["Rotate CCW (left)"] = "Roter mot klokka (venstre)";
+$a->strings["Caption"] = "Overskrift";
+$a->strings["Add a Tag"] = "Legg til merkelapp";
+$a->strings["Example: @bob, @Barbara_Jensen, @jim@example.com"] = "Eksempel: @bob, @Barbara_Jensen, @jim@example.com";
+$a->strings["Flag as adult in album view"] = "Flag som voksent i albumvisning";
+$a->strings["In This Photo:"] = "I dette bildet:";
+$a->strings["View Album"] = "Vis album";
+$a->strings["Recent Photos"] = "Nye bilder";
$a->strings["Could not access contact record."] = "Fikk ikke tilgang til kontaktinformasjonen.";
$a->strings["Could not locate selected profile."] = "Fant ikke valgt profil.";
$a->strings["Connection updated."] = "Forbindelsen er oppdatert.";
@@ -1130,7 +1230,6 @@ $a->strings["Ignored"] = "Ignorert";
$a->strings["Hidden"] = "Skjult";
$a->strings["Archived"] = "Arkivert";
$a->strings["All"] = "Alle";
-$a->strings["Unconnected"] = "Ikke tilkoblet";
$a->strings["Suggest new connections"] = "Foreslå nye forbindelser";
$a->strings["New Connections"] = "Nye forbindelser";
$a->strings["Show pending (new) connections"] = "Vis ventende (nye) forbindelser";
@@ -1141,12 +1240,18 @@ $a->strings["Only show blocked connections"] = "Vis bare forbindelser som er blo
$a->strings["Only show ignored connections"] = "Vis bare ignorerte forbindelser";
$a->strings["Only show archived connections"] = "Vis bare arkiverte forbindelser";
$a->strings["Only show hidden connections"] = "Vis bare skjulte forbindelser";
-$a->strings["Only show one-way connections"] = "Vis bare en-veis-forbindelser";
$a->strings["%1\$s [%2\$s]"] = "%1\$s [%2\$s]";
-$a->strings["Edit contact"] = "Endre kontakt";
+$a->strings["Edit connection"] = "Endre forbindelse";
$a->strings["Search your connections"] = "Søk blant dine forbindelser";
$a->strings["Finding: "] = "Fant:";
+$a->strings["You have created %1$.0f of %2$.0f allowed channels."] = "Du har laget %1$.0f av %2$.0f tillatte kanaler.";
+$a->strings["Create a new channel"] = "Lag en ny kanal";
+$a->strings["Current Channel"] = "Gjeldende kanal";
+$a->strings["Attach to one of your channels by selecting it."] = "Bytt til en av dine kanaler ved å velge den.";
+$a->strings["Default Channel"] = "Standardkanal";
+$a->strings["Make Default"] = "Gjør til standard";
$a->strings["Edit post"] = "Endre innlegg";
+$a->strings["is now connected to"] = "er nå forbundet til";
$a->strings["Could not access address book record."] = "Fikk ikke tilgang til informasjonen i adresseboken.";
$a->strings["Refresh failed - channel is currently unavailable."] = "Oppfrisking mislyktes - kanalen er for øyeblikket utilgjengelig.";
$a->strings["Channel has been unblocked"] = "Kanalen er ikke blokkert lenger";
@@ -1181,9 +1286,9 @@ $a->strings["Hide or Unhide this connection"] = "Skjul eller fjern skjuling av d
$a->strings["Delete this connection"] = "Slett denne forbindelsen";
$a->strings["Approve this connection"] = "Godta denne forbindelsen";
$a->strings["Accept connection to allow communication"] = "Godta denne forbindelsen for å tillate kommunikasjon";
-$a->strings["Automatic Permissions Settings"] = "Automatiske innstillinger for tillatelser";
$a->strings["Connections: settings for %s"] = "Forbindelser: innstillinger for %s";
-$a->strings["When receiving a channel introduction, any permissions provided here will be applied to the new connection automatically and the introduction approved. Leave this page if you do not wish to use this feature."] = "Når du mottar en kanal-introduksjon, så vil alle tillatelser gitt her gjelde for den nye forbindelsen automatisk og introduksjonen godkjennes. Forlat denne siden hvis du ikke ønsker å bruke denne egenskapen.";
+$a->strings["Apply these permissions automatically"] = "Bruk disse tillatelsene automatisk";
+$a->strings["Apply the permissions indicated on this page to all new connections."] = "Bruk tillatelsene angitt på denne siden på alle nye forbindelser.";
$a->strings["Slide to adjust your degree of friendship"] = "Flytt for å justere din grad av vennskap";
$a->strings["inherited"] = "arvet";
$a->strings["Connection has no individual permissions!"] = "Forbindelsen har ingen individuelle tillatelser!";
@@ -1219,107 +1324,45 @@ $a->strings["Currently archived"] = "For øyeblikket arkivert";
$a->strings["Currently pending"] = "For øyeblikket ventende";
$a->strings["Hide this contact from others"] = "Skjul denne kontakten for andre";
$a->strings["Replies/likes to your public posts <strong>may</strong> still be visible"] = "Svar/likes på dine offentlige innlegg <strong>kan</strong> fortsatt være synlige";
-$a->strings["No potential page delegates located."] = "Ingen potensielle sidedelegater er funnet.";
-$a->strings["Delegate Page Management"] = "Deleger sidehåndtering";
-$a->strings["Delegates are able to manage all aspects of this account/page except for basic account settings. Please do not delegate your personal account to anybody that you do not trust completely."] = "Delegater kan håndtere alle sider ved denne kontoen/siden unntatt grunnleggende kontoinformasjon. Vennligst ikke deleger din personlige konto til noen du ikke stoler fullstendig på.";
-$a->strings["Existing Page Managers"] = "Eksisterende sidehåndterere";
-$a->strings["Existing Page Delegates"] = "Eksisterende sidedelegater";
-$a->strings["Potential Delegates"] = "Potensielle sidedelegater";
-$a->strings["Remove"] = "Fjern";
-$a->strings["Add"] = "Legg til";
-$a->strings["No entries."] = "Ingen oppføringer.";
-$a->strings["Public access denied."] = "Offentlig tilgang avvist.";
-$a->strings["Gender: "] = "Kjønn:";
-$a->strings["Finding:"] = "Finner:";
-$a->strings["next page"] = "neste side";
-$a->strings["previous page"] = "forrige side";
-$a->strings["No entries (some entries may be hidden)."] = "Ingen oppføringer (noen oppføringer kan være skjult).";
-$a->strings["Status: "] = "Status:";
-$a->strings["Sexual Preference: "] = "Seksuelle preferanser:";
-$a->strings["Homepage: "] = "Hjemmeside:";
-$a->strings["Hometown: "] = "Hjemby:";
-$a->strings["About: "] = "Om:";
-$a->strings["Keywords: "] = "Nøkkelord:";
+$a->strings["OpenID protocol error. No ID returned."] = "OpenID protokollfeil. Ingen ID ble returnert.";
+$a->strings["Thing updated"] = "Tingen er oppdatert";
+$a->strings["Object store: failed"] = "Objektlagring: mislyktes";
+$a->strings["Thing added"] = "Ting lagt til";
+$a->strings["OBJ: %1\$s %2\$s %3\$s"] = "OBJ: %1\$s %2\$s %3\$s";
+$a->strings["Show Thing"] = "Vis ting";
+$a->strings["item not found."] = "element ble ikke funnet.";
+$a->strings["Edit Thing"] = "Endre ting";
+$a->strings["Select a profile"] = "Velg en profil";
+$a->strings["Post an activity"] = "Legg inn en aktivitet";
+$a->strings["Only sends to viewers of the applicable profile"] = "Sender bare til seere av den aktuelle profilen";
+$a->strings["Name of thing e.g. something"] = "Navn på ting for eksempel noe";
+$a->strings["URL of thing (optional)"] = "URL til ting (valgfritt)";
+$a->strings["URL for photo of thing (optional)"] = "URL til bilde av ting (valgfritt)";
+$a->strings["Add Thing to your Profile"] = "Legg til ting i din profil";
+$a->strings["No valid account found."] = "Ingen gyldig konto funnet.";
+$a->strings["Password reset request issued. Check your email."] = "Forespørsel om å tilbakestille passord er mottatt. Sjekk e-posten din.";
+$a->strings["Site Member (%s)"] = "Nettstedsmedlem (%s)";
+$a->strings["Password reset requested at %s"] = "Forespurt om å tilbakestille passord hos %s";
+$a->strings["Request could not be verified. (You may have previously submitted it.) Password reset failed."] = "Forespørsel kunne ikke bekreftes. (Du kan ha sendt den inn tidligere.) Tilbakestilling av passord mislyktes.";
+$a->strings["Password Reset"] = "Tilbakestill passord";
+$a->strings["Your password has been reset as requested."] = "Ditt passord har blitt tilbakestilt som forespurt.";
+$a->strings["Your new password is"] = "Ditt nye passord er";
+$a->strings["Save or copy your new password - and then"] = "Lagre eller kopier ditt nye passord, og deretter kan du";
+$a->strings["click here to login"] = "klikke her for å logge inn";
+$a->strings["Your password may be changed from the <em>Settings</em> page after successful login."] = "Ditt passord kan endres på siden <em>Innstillinger</em> etter vellykket innlogging.";
+$a->strings["Your password has changed at %s"] = "Ditt passord er endret hos %s";
+$a->strings["Forgot your Password?"] = "Glemt passord ditt?";
+$a->strings["Enter your email address and submit to have your password reset. Then check your email for further instructions."] = "Skriv e-postadressen din og send inn for å tilbakestille passordet ditt. Sjekk deretter din e-post for videre instruksjoner.";
+$a->strings["Email Address"] = "E-postadresse";
+$a->strings["Reset"] = "Tilbakestill";
+$a->strings["Bookmark added"] = "Bokmerke lagt til";
+$a->strings["My Bookmarks"] = "Mine bokmerker";
+$a->strings["My Connections Bookmarks"] = "Mine forbindelsers bokmerker";
$a->strings["This site is not a directory server"] = "Dette nettstedet er ikke en katalogtjener";
-$a->strings["Red Matrix Server - Setup"] = "Red Matrix tjener - oppsett";
-$a->strings["Could not connect to database."] = "Fikk ikke kontakt med databasen.";
-$a->strings["Could not connect to specified site URL. Possible SSL certificate or DNS issue."] = "Fikk ikke kontakt med det angitte nettstedets URL. Problemet kan muligens skyldes SSL-sertifikatet eller DNS.";
-$a->strings["Could not create table."] = "Kunne ikke lage tabellen.";
-$a->strings["Your site database has been installed."] = "Databasen til ditt nettsted har blitt installert.";
-$a->strings["You may need to import the file \"install/database.sql\" manually using phpmyadmin or mysql."] = "Du må kanskje importere filen \"install/database.sql\" manuelt ved hjelp av phpmyadmin eller mysql.";
-$a->strings["Please see the file \"install/INSTALL.txt\"."] = "Vennligst les filen \"install/INSTALL.txt\".";
-$a->strings["System check"] = "Systemsjekk";
-$a->strings["Next"] = "Neste";
-$a->strings["Check again"] = "Sjekk igjen";
-$a->strings["Database connection"] = "Databaseforbindelse";
-$a->strings["In order to install Red Matrix we need to know how to connect to your database."] = "For å installere Red Matrix må du oppgi hvordan din database kan kontaktes.";
-$a->strings["Please contact your hosting provider or site administrator if you have questions about these settings."] = "Vennligst kontakt din nettstedstilbyder eller nettstedsadministrator hvis du har spørsmål om disse innstillingene.";
-$a->strings["The database you specify below should already exist. If it does not, please create it before continuing."] = "Databasen du oppgir nedenfor må finnes på forhånd. Hvis den ikke finnes, vennligst lag den før du fortsetter.";
-$a->strings["Database Server Name"] = "Navn på databasetjener";
-$a->strings["Default is localhost"] = "Standard er localhost";
-$a->strings["Database Port"] = "Databaseport";
-$a->strings["Communication port number - use 0 for default"] = "Kommunikasjonsportnummer - bruk 0 for standard";
-$a->strings["Database Login Name"] = "Database innloggingsnavn";
-$a->strings["Database Login Password"] = "Database innloggingspassord";
-$a->strings["Database Name"] = "Databasenavn";
-$a->strings["Site administrator email address"] = "E-postadressen til administrator ved nettstedet";
-$a->strings["Your account email address must match this in order to use the web admin panel."] = "Din konto sin e-postadresse må være lik denne for å kunne bruke web-administrasjonspanelet.";
-$a->strings["Website URL"] = "Nettstedets URL";
-$a->strings["Please use SSL (https) URL if available."] = "Vennligst bruk SSL (https) URL hvis tilgjengelig.";
-$a->strings["Please select a default timezone for your website"] = "Vennligst velg en standard tidssone for ditt nettsted";
-$a->strings["Site settings"] = "Nettstedets innstillinger";
-$a->strings["Could not find a command line version of PHP in the web server PATH."] = "Fant ikke en kommandolinjeversjon av PHP i webtjenerens sti (PATH).";
-$a->strings["If you don't have a command line version of PHP installed on server, you will not be able to run background polling via cron."] = "Hvis du ikke har en kommandolinjeversjon av PHP installert på tjeneren, så vil du ikke kunne kjøre bakgrunnshenting via cron.";
-$a->strings["PHP executable path"] = "PHP-kjørefilens sti";
-$a->strings["Enter full path to php executable. You can leave this blank to continue the installation."] = "Skriv full sti til kjørefilen for PHP. Du kan la denne stå blank for å fortsette installasjonen.";
-$a->strings["Command line PHP"] = "Kommandolinje PHP";
-$a->strings["The command line version of PHP on your system does not have \"register_argc_argv\" enabled."] = "Kommandolinjeversjonen av PHP på ditt system har ikke \"register_argc_argv\" påskrudd.";
-$a->strings["This is required for message delivery to work."] = "Dette er påkrevd for at meldingslevering skal virke.";
-$a->strings["PHP register_argc_argv"] = "PHP register_argc_argv";
-$a->strings["Error: the \"openssl_pkey_new\" function on this system is not able to generate encryption keys"] = "Feil: \"openssl_pkey_new\"-funksjonen på dette systemet er ikke i stand til å lage krypteringsnøkler";
-$a->strings["If running under Windows, please see \"http://www.php.net/manual/en/openssl.installation.php\"."] = "Ved kjøring på Windows, vennligst se \"http://www.php.net/manual/en/openssl.installation.php\".";
-$a->strings["Generate encryption keys"] = "Lag krypteringsnøkler";
-$a->strings["libCurl PHP module"] = "libCurl PHP-modul";
-$a->strings["GD graphics PHP module"] = "GD graphics PHP-modul";
-$a->strings["OpenSSL PHP module"] = "OpenSSL PHP-modul";
-$a->strings["mysqli PHP module"] = "mysqli PHP-modul";
-$a->strings["mb_string PHP module"] = "mb_string PHP-modul";
-$a->strings["mcrypt PHP module"] = "mcrypt PHP-modul";
-$a->strings["Apache mod_rewrite module"] = "Apache mod_rewrite-modul";
-$a->strings["Error: Apache webserver mod-rewrite module is required but not installed."] = "Feil: Apache web-tjenerens mod-rewrite-modul er påkrevd, men ikke installert.";
-$a->strings["proc_open"] = "proc_open";
-$a->strings["Error: proc_open is required but is either not installed or has been disabled in php.ini"] = "Feil: proc_open er påkrevd, men er enten ikke installert eller har blitt avskrudd i php.ini";
-$a->strings["Error: libCURL PHP module required but not installed."] = "Feil: libCURL PHP-modul er påkrevd, men er ikke installert.";
-$a->strings["Error: GD graphics PHP module with JPEG support required but not installed."] = "Feil: GD graphics PHP-modul med JPEG-støtte er påkrevd, men er ikke installert.";
-$a->strings["Error: openssl PHP module required but not installed."] = "Feil: openssl PHP-modul er påkrevd, men er ikke installert.";
-$a->strings["Error: mysqli PHP module required but not installed."] = "Feil: mysqli PHP-modul er påkrevd, men er ikke installert.";
-$a->strings["Error: mb_string PHP module required but not installed."] = "Feil: mb_string PHP-modul er påkrevd, men er ikke installert.";
-$a->strings["Error: mcrypt PHP module required but not installed."] = "Feil: mcrypt PHP-modul er påkrevd, men er ikke installert.";
-$a->strings["The web installer needs to be able to create a file called \".htconfig.php\ in the top folder of your web server and it is unable to do so."] = "Web-installasjonen må kunne lage en fil kalt \".htconfig.php\" i toppkatalogen til web-tjeneren din, men dette får den ikke til.";
-$a->strings["This is most often a permission setting, as the web server may not be able to write files in your folder - even if you can."] = "Dette er oftest tillatelsesinnstilling, ettersom webtjeneren kanskje kan skrive til filer i din mappe - selv om du kan.";
-$a->strings["At the end of this procedure, we will give you a text to save in a file named .htconfig.php in your Red top folder."] = "På slutten av denne prosedyren vil vi gi deg en tekst til å lagre i en fil kalt .htconfig.php i toppkatalogen til din Red.";
-$a->strings["You can alternatively skip this procedure and perform a manual installation. Please see the file \"install/INSTALL.txt\" for instructions."] = "Alternativt, så kan du hoppe over denne prosedyren og gjennomføre en manuell installasjon. Vennligst se filen \"install/INSTALL.txt\" for instruksjoner.";
-$a->strings[".htconfig.php is writable"] = ".htconfig.php kan skrives til";
-$a->strings["Red uses the Smarty3 template engine to render its web views. Smarty3 compiles templates to PHP to speed up rendering."] = "Red bruker malmotoren Smarty3 for å gjengi sine webvisninger. Smarty3 kompilerer malene om til PHP for å framskynde gjengivelsen.";
-$a->strings["In order to store these compiled templates, the web server needs to have write access to the directory view/tpl/smarty3/ under the Red top level folder."] = "For å kunne lagre disse kompilerte malene, så må webtjeneren ha skrivetilgang til katalogen view/tpl/smarty3/ under Red sin hovedmappe.";
-$a->strings["Please ensure that the user that your web server runs as (e.g. www-data) has write access to this folder."] = "Vennligst sikre at brukeren som din web-tjeneste kjører som (for eksempel www-data) har skrivetilgang til denne katalogen.";
-$a->strings["Note: as a security measure, you should give the web server write access to view/tpl/smarty3/ only--not the template files (.tpl) that it contains."] = "Merknad: som et sikkerhetstiltak bør du bare gi webtjerenn skrivetilgang til view/tpl/smarty3/ - ikke til malfilene (.tpl) som den inneholder.";
-$a->strings["view/tpl/smarty3 is writable"] = "view/tpl/smarty3 er skrivbar";
-$a->strings["Red uses the store directory to save uploaded files. The web server needs to have write access to the store directory under the Red top level folder"] = "Red bruker lagringsmappen for å lagre opplastede filer. Webtjeneren trenger å ha skrivetilgang til lagringsmappen under Red sin toppnivåmappe.";
-$a->strings["store is writable"] = "lageret kan skrives til";
-$a->strings["SSL certificate cannot be validated. Fix certificate or disable https access to this site."] = "SSL-sertifikatet kan ikke kontrolleres. Fiks sertifikatet eller skru av https tilgang til dette nettstedet.";
-$a->strings["If you have https access to your website or allow connections to TCP port 443 (the https: port), you MUST use a browser-valid certificate. You MUST NOT use self-signed certificates!"] = "Hvis du har HTTPS-tilgang til ditt nettsted eller tillater forbindelser til TCP port 443 (HTTPS-porten), så MÅ du bruke nettlesergodkjent sertifkater. Du MÅ IKKE bruke egensignert sertifikater!";
-$a->strings["This restriction is incorporated because public posts from you may for example contain references to images on your own hub."] = "Denne begrensningen er tatt inn fordi offentlige innlegg fra deg kan for eksempel inneholde referanser til bilder på din egen hub.";
-$a->strings["If your certificate is not recognised, members of other sites (who may themselves have valid certificates) will get a warning message on their own site complaining about security issues."] = "Hvis sertifikatet ditt ikke gjenkjennes, så vil medlemmer på andre nettsteder (som selv kan ha godkjente sertifikater) få en beskjed med en advarsel på deres eget nettsted som klager over sikkerhetsproblemer.";
-$a->strings["This can cause usability issues elsewhere (not just on your own site) so we must insist on this requirement."] = "Dette kan gi problemer med brukervennlighet (ikke bare på ditt eget nettsted), så vi må insistere på dette kravet.";
-$a->strings["Providers are available that issue free certificates which are browser-valid."] = "Det finnes tilbydere som utsteder gratis sertifikater som er gyldige i nettlesere.";
-$a->strings["SSL certificate validation"] = "SSL sertifikat-kontroll";
-$a->strings["Url rewrite in .htaccess is not working. Check your server configuration."] = "URL rewrite i .htaccess virker ikke. Sjekk konfigurasjonen på tjeneren.";
-$a->strings["Url rewrite is working"] = "URL rewrite virker";
-$a->strings["The database configuration file \".htconfig.php\" could not be written. Please use the enclosed text to create a configuration file in your web server root."] = "Databasekonfigurasjonsfilen \".htconfig.php\" kunne ikke skrives. Vennligst bruk den medfølgende teksten for å lage en konfigurasjonsfil i toppkatalogen av din web-tjener.";
-$a->strings["Errors encountered creating database tables."] = "Feil oppstod under opprettelsen av databasetabeller.";
-$a->strings["<h1>What next</h1>"] = "<h1>Hva gjenstår</h1>";
-$a->strings["IMPORTANT: You will need to [manually] setup a scheduled task for the poller."] = "VIKTIG: Du må [manuelt] sette opp en automatisert tidfestet oppgave til bakgrunnshenteren.";
+$a->strings["RedMatrix - Guests: Username: {your email address}, Password: +++"] = "RedMatrix - gjester: brukernavn: {din e-postadresse}, passord: +++";
+$a->strings["sent you a private message"] = "sendte deg en privat melding";
+$a->strings["added your channel"] = "la til din kanal";
+$a->strings["posted an event"] = "la ut en hendelse";
$a->strings["Item not found"] = "Elementet ble ikke funnet.";
$a->strings["Edit Block"] = "Endre byggekloss";
$a->strings["Delete block?"] = "Slett byggeklossen?";
@@ -1337,51 +1380,162 @@ $a->strings["Delete layout?"] = "Slett layout?";
$a->strings["Delete Layout"] = "Slett layout";
$a->strings["Item is not editable"] = "Elementet kan ikke endres";
$a->strings["Delete item?"] = "Slett element?";
+$a->strings["Name is required"] = "Navn er påkrevd";
+$a->strings["Key and Secret are required"] = "Nøkkel og hemmelighet er påkrevd";
+$a->strings["Passwords do not match. Password unchanged."] = "Passordene stemmer ikke overens. Passord uforandret.";
+$a->strings["Empty passwords are not allowed. Password unchanged."] = "Tomme passord er ikke tillatt. Passord uforandret.";
+$a->strings["Password changed."] = "Passord endret.";
+$a->strings["Password update failed. Please try again."] = "Passord oppdatering mislyktes. Vennligst prøv igjen.";
+$a->strings["Not valid email."] = "Ikke gyldig e-post.";
+$a->strings["Protected email address. Cannot change to that email."] = "Beskyttet e-postadresse. Kan ikke endre til den e-postadressen.";
+$a->strings["System failure storing new email. Please try again."] = "Systemfeil ved lagring av ny e-post. Vennligst prøv igjen.";
+$a->strings["Settings updated."] = "Innstillinger oppdatert.";
+$a->strings["Add application"] = "Legg til program";
+$a->strings["Name of application"] = "Navn på program";
+$a->strings["Consumer Key"] = "Consumer Key";
+$a->strings["Automatically generated - change if desired. Max length 20"] = "Automatisk laget - kan endres om du vil. Største lengde 20";
+$a->strings["Consumer Secret"] = "Consumer Secret";
+$a->strings["Redirect"] = "Omdirigering";
+$a->strings["Redirect URI - leave blank unless your application specifically requires this"] = "Omdirigerings-URI - la stå tomt hvis ikke ditt program spesifikt krever dette";
+$a->strings["Icon url"] = "Ikon-URL";
+$a->strings["Optional"] = "Valgfritt";
+$a->strings["You can't edit this application."] = "Du kan ikke endre dette programmet.";
+$a->strings["Connected Apps"] = "Tilkoblede app-er";
+$a->strings["Client key starts with"] = "Klientnøkkel starter med";
+$a->strings["No name"] = "Ikke noe navn";
+$a->strings["Remove authorization"] = "Fjern tillatelse";
+$a->strings["No feature settings configured"] = "Ingen funksjonsinnstillinger er konfigurert";
+$a->strings["Feature Settings"] = "Funksjonsinnstillinger";
+$a->strings["Account Settings"] = "Kontoinnstillinger";
+$a->strings["Password Settings"] = "Passordinnstillinger";
+$a->strings["New Password:"] = "Nytt passord:";
+$a->strings["Confirm:"] = "Bekreft:";
+$a->strings["Leave password fields blank unless changing"] = "La passordfeltene stå blanke om det ikke skal endres";
+$a->strings["Email Address:"] = "E-postadresse:";
+$a->strings["Remove Account"] = "Slett konto";
+$a->strings["Remove this account from this server including all its channels"] = "Slett denne kontoen inkludert alle dens kanaler fra denne tjeneren";
+$a->strings["Warning: This action is permanent and cannot be reversed."] = "Advarsel: Denne handlingen er permanent og kan ikke angres.";
+$a->strings["Off"] = "Av";
+$a->strings["On"] = "PÃ¥";
+$a->strings["Additional Features"] = "Ekstra funksjoner";
+$a->strings["Connector Settings"] = "Koblingsinnstillinger";
+$a->strings["No special theme for mobile devices"] = "Ikke noe spesielt tema for mobile enheter";
+$a->strings["%s - (Experimental)"] = "%s - (Eksperimentelt)";
+$a->strings["Display Settings"] = "Visningsinnstillinger";
+$a->strings["Display Theme:"] = "Visningstema:";
+$a->strings["Mobile Theme:"] = "Mobiltema:";
+$a->strings["Enable user zoom on mobile devices"] = "Skru på brukerstyrt zoom på mobile enheter";
+$a->strings["Update browser every xx seconds"] = "Oppdater nettleser hvert xx sekunder";
+$a->strings["Minimum of 10 seconds, no maximum"] = "Minimum 10 sekunder, ikke noe maksimum";
+$a->strings["Maximum number of conversations to load at any time:"] = "Maksimalt antall samtaler å laste samtidig:";
+$a->strings["Maximum of 100 items"] = "Maksimum 100 elementer";
+$a->strings["Don't show emoticons"] = "Ikke vis følelsesikoner";
+$a->strings["Link post titles to source"] = "Lenk innleggets tittel til kilden";
+$a->strings["System Page Layout Editor - (advanced)"] = "Systemsidens layoutbehandler - (avansert)";
+$a->strings["Nobody except yourself"] = "Ingen unntatt deg selv";
+$a->strings["Only those you specifically allow"] = "Bare de du spesifikt tillater";
+$a->strings["Approved connections"] = "Godkjente forbindelser";
+$a->strings["Any connections"] = "Enhver forbindelse";
+$a->strings["Anybody on this website"] = "Enhver ved dette nettstedet";
+$a->strings["Anybody in this network"] = "Enhver i dette nettverket";
+$a->strings["Anybody authenticated"] = "Enhver som er autentisert";
+$a->strings["Anybody on the internet"] = "Enhver på Internett";
+$a->strings["Publish your default profile in the network directory"] = "Publiser din standardprofil i nettverkskatalogen";
+$a->strings["Allow us to suggest you as a potential friend to new members?"] = "Tillat oss å foreslå deg som en mulig venn til nye medlemmer?";
+$a->strings["or"] = "eller";
+$a->strings["Your channel address is"] = "Din kanaladresse er";
+$a->strings["Channel Settings"] = "Kanalinnstillinger";
+$a->strings["Basic Settings"] = "Grunninnstillinger";
+$a->strings["Your Timezone:"] = "Din tidssone:";
+$a->strings["Default Post Location:"] = "Standard plassering ved innlegg:";
+$a->strings["Geographical location to display on your posts"] = "Geografisk plassering som vises på dine innlegg";
+$a->strings["Use Browser Location:"] = "Bruk nettleseren sin plassering:";
+$a->strings["Adult Content"] = "Voksent innhold";
+$a->strings["This channel frequently or regularly publishes adult content. (Please tag any adult material and/or nudity with #NSFW)"] = "Denne kanalen vil ofte eller jevnlig publisere voksent innhold. (Vennligst merk alt voksent materiale og/eller nakenhet med #NSFW)";
+$a->strings["Security and Privacy Settings"] = "Sikkerhets- og personverninnstillinger";
+$a->strings["Your permissions are already configured. Click to view/adjust"] = "Dine tillatelser er allerede satt. Klikk for å se/justere.";
+$a->strings["Hide my online presence"] = "Skjul min tilstedeværelse online";
+$a->strings["Prevents displaying in your profile that you are online"] = "Forhindrer visning på din profil av at du er online ";
+$a->strings["Simple Privacy Settings:"] = "Enkle personverninnstillinger:";
+$a->strings["Very Public - <em>extremely permissive (should be used with caution)</em>"] = "Svært offentlig - <em>ekstremt åpent (bør brukes med varsomhet)</em>";
+$a->strings["Typical - <em>default public, privacy when desired (similar to social network permissions but with improved privacy)</em>"] = "Typisk - <em>standard er offentlig, personvern når ønsket (likner på tillatelser i sosiale nettverk, men med forbedret personvern)</em>";
+$a->strings["Private - <em>default private, never open or public</em>"] = "Privat - <em>standard er privat, aldri åpen eller offentlig</em>";
+$a->strings["Blocked - <em>default blocked to/from everybody</em>"] = "Blokkert - <em>standard blokkert til/fra alle</em>";
+$a->strings["Allow others to tag your posts"] = "Tillat andre å merke dine innlegg";
+$a->strings["Often used by the community to retro-actively flag inappropriate content"] = "Ofte brukt av fellesskapet for å merke upassende innhold i etterkant";
+$a->strings["Advanced Privacy Settings"] = "Avanserte personverninnstillinger";
+$a->strings["Expire other channel content after this many days"] = "Annet kanal innhold utløper etter så mange dager";
+$a->strings["0 or blank prevents expiration"] = "0 eller blankt forhindrer utløp";
+$a->strings["Maximum Friend Requests/Day:"] = "Maksimalt antall venneforespørsler per dag:";
+$a->strings["May reduce spam activity"] = "Kan redusere søppelpostaktivitet";
+$a->strings["Default Post Permissions"] = "Standard innleggstillatelser";
+$a->strings["Channel permissions category:"] = "Kategori med kanaltillatelser:";
+$a->strings["Maximum private messages per day from unknown people:"] = "Maksimalt antall private meldinger per dag fra ukjente personer:";
+$a->strings["Useful to reduce spamming"] = "Nyttig for å redusere søppelpost";
+$a->strings["Notification Settings"] = "Varslingsinnstillinger";
+$a->strings["By default post a status message when:"] = "Legg inn en statusmelding når du:";
+$a->strings["accepting a friend request"] = "aksepterer en venneforespørsel";
+$a->strings["joining a forum/community"] = "blir med i et forum/miljø";
+$a->strings["making an <em>interesting</em> profile change"] = "gjør en <em>interessant</em> profilendring";
+$a->strings["Send a notification email when:"] = "Send en varsel-e-post når:";
+$a->strings["You receive a connection request"] = "Du har mottatt en forespørsel om forbindelse";
+$a->strings["Your connections are confirmed"] = "Dine forbindelser er bekreftet";
+$a->strings["Someone writes on your profile wall"] = "Noen skriver på din profilvegg";
+$a->strings["Someone writes a followup comment"] = "Noen skriver en oppfølgende kommentar";
+$a->strings["You receive a private message"] = "Du mottar en privat melding";
+$a->strings["You receive a friend suggestion"] = "Du mottok et venneforslag";
+$a->strings["You are tagged in a post"] = "Du merkes i et innlegg";
+$a->strings["You are poked/prodded/etc. in a post"] = "Du ble prikket/oppildnet/og så vider i et innlegg";
+$a->strings["Show visual notifications including:"] = "Vis visuelle varslinger om:";
+$a->strings["Unseen matrix activity"] = "Usett matrixaktivitet";
+$a->strings["Unseen channel activity"] = "Usett kanalaktivitet";
+$a->strings["Unseen private messages"] = "Usette private meldinger";
+$a->strings["Recommended"] = "Anbefalt";
+$a->strings["Upcoming events"] = "Kommende hendelser";
+$a->strings["Events today"] = "Hendelser idag";
+$a->strings["Upcoming birthdays"] = "Kommende fødselsdager";
+$a->strings["Not available in all themes"] = "Ikke tilgjengelig i alle temaer";
+$a->strings["System (personal) notifications"] = "System (personlige) varslinger";
+$a->strings["System info messages"] = "System infomeldinger";
+$a->strings["System critical alerts"] = "System kritiske varsel";
+$a->strings["New connections"] = "Nye forbindelser";
+$a->strings["System Registrations"] = "Systemregistreringer";
+$a->strings["Notify me of events this many days in advance"] = "Varsle meg om hendelser dette antall dager på forhånd";
+$a->strings["Must be greater than 0"] = "Må være større enn 0";
+$a->strings["Advanced Account/Page Type Settings"] = "Avanserte innstillinger for konto/sidetype";
+$a->strings["Change the behaviour of this account for special situations"] = "Endre oppførselen til denne kontoen i spesielle situasjoner";
+$a->strings["Please enable expert mode (in <a href=\"settings/features\">Settings > Additional features</a>) to adjust!"] = "Vennligst skru på ekspertmodus (under <a href=\"settings/features\">Innstillinger > Ekstra funksjoner</a>) for å justere!";
+$a->strings["Miscellaneous Settings"] = "Diverse innstillinger";
+$a->strings["Personal menu to display in your channel pages"] = "Personlig meny som kan vises på dine kanalsider";
+$a->strings["Remove this channel"] = "Fjern denne kanalen";
$a->strings["Edit Webpage"] = "Endre webside";
$a->strings["Delete webpage?"] = "Slett webside?";
$a->strings["Delete Webpage"] = "Slett webside";
-$a->strings["Version %s"] = "Versjon %s";
-$a->strings["Installed plugins/addons/apps:"] = "Installerte tilleggsfunksjoner/tillegg/apper:";
-$a->strings["No installed plugins/addons/apps"] = "Ingen installerte tilleggsfunksjoner/tillegg/apper";
-$a->strings["Red"] = "Red";
-$a->strings["This is a hub of the Red Matrix - a global cooperative network of decentralised privacy enhanced websites."] = "Dette er en hub i Red Matrix - et globalt kooperativt nettverk av desentraliserte personvernforsterkede nettsteder.";
-$a->strings["Running at web location"] = "Kjører på webplasseringen";
-$a->strings["Please visit <a href=\"http://getzot.com\">GetZot.com</a> to learn more about the Red Matrix."] = "Vennligst besøk <a href=\"http://getzot.com\">GetZot.com</a> for å lære mer om Red Matrix.";
-$a->strings["Bug reports and issues: please visit"] = "Feilmeldinger og feilretting: vennligst besøk";
-$a->strings["Suggestions, praise, etc. - please email \"redmatrix\" at librelist - dot com"] = "Forslag, ros og så videre - vennligst e-post \"redmatrix\" hos librelist - punktum com";
-$a->strings["Site Administrators"] = "Nettstedsadministratorer";
-$a->strings["Failed to create source. No channel selected."] = "Mislyktes med å lage kilde. Ingen kanal er valgt.";
-$a->strings["Source created."] = "Kilden er laget.";
-$a->strings["Source updated."] = "Kilden er oppdatert.";
-$a->strings["*"] = "*";
-$a->strings["Manage remote sources of content for your channel."] = "HÃ¥ndtere eksterne innholdskilder til din kanal.";
-$a->strings["New Source"] = "Ny kilde";
-$a->strings["Import all or selected content from the following channel into this channel and distribute it according to your channel settings."] = "Importer alt eller et utvalgt av innhold fra følgende kanal inn i denne kanalen og distribuer det i henhold til dine egne kanalinnstillinger.";
-$a->strings["Only import content with these words (one per line)"] = "Bare importer innhold med disse ordene (ett ord per linje)";
-$a->strings["Leave blank to import all public content"] = "La stå tomt for å importere alt offentlig innhold";
-$a->strings["Channel Name"] = "Kanalnavn";
-$a->strings["Source not found."] = "Kilden ble ikke funnet.";
-$a->strings["Edit Source"] = "Endre kilde";
-$a->strings["Delete Source"] = "Slett kilde";
-$a->strings["Source removed"] = "Kilden er fjernet";
-$a->strings["Unable to remove source."] = "Ikke i stand til å fjerne kilde.";
-$a->strings["- select -"] = "- velg -";
-$a->strings["Event title and start time are required."] = "Hendelsestittel og starttidspunkt er påkrevd.";
-$a->strings["l, F j"] = "l, F j";
-$a->strings["Edit event"] = "Endre hendelse";
-$a->strings["Create New Event"] = "Lag ny hendelse";
-$a->strings["Previous"] = "Forrige";
-$a->strings["hour:minute"] = "time:minutt";
-$a->strings["Event details"] = "Hendelsesdetaljer";
-$a->strings["Format is %s %s. Starting date and Title are required."] = "Formatet er %s %s. Startdato og tittel er påkrevd.";
-$a->strings["Event Starts:"] = "Hendelsen starter:";
-$a->strings["Required"] = "PÃ¥krevd";
-$a->strings["Finish date/time is not known or not relevant"] = "Sluttdato/-tidspunkt er ikke kjent eller ikke relevant";
-$a->strings["Event Finishes:"] = "Hendelsen slutter:";
-$a->strings["Adjust for viewer timezone"] = "Juster i forhold til tilskuerens tidssone";
-$a->strings["Description:"] = "Beskrivelse:";
-$a->strings["Title:"] = "Tittel:";
-$a->strings["Share this event"] = "Del denne hendelsen";
+$a->strings["webpage"] = "nettside";
+$a->strings["block"] = "byggekloss";
+$a->strings["layout"] = "layout";
+$a->strings["%s element installed"] = "%s element installert";
+$a->strings["Image uploaded but image cropping failed."] = "Bildet ble lastet opp, men beskjæring av bildet mislyktes.";
+$a->strings["Image resize failed."] = "Endring av bildestørrelse mislyktes.";
+$a->strings["Shift-reload the page or clear browser cache if the new photo does not display immediately."] = "Hold nede Shift-knappen og last siden på nytt eller tøm nettleserens mellomlager hvis det nye bildet ikke vises umiddelbart.";
+$a->strings["Image exceeds size limit of %d"] = "Bildet overstiger størrelsesbegrensningen på %d";
+$a->strings["Unable to process image."] = "Kan ikke behandle bildet.";
+$a->strings["Photo not available."] = "Bildet er ikke tilgjengelig.";
+$a->strings["Upload File:"] = "Last opp fil:";
+$a->strings["Select a profile:"] = "Velg en profil:";
+$a->strings["Upload Profile Photo"] = "Last opp profilbilde:";
+$a->strings["skip this step"] = "hopp over dette steget";
+$a->strings["select a photo from your photo albums"] = "velg et bilde fra dine fotoalbum";
+$a->strings["Crop Image"] = "Beskjær bildet";
+$a->strings["Please adjust the image cropping for optimum viewing."] = "Vennligst juster bildebeskjæringen for optimal visning.";
+$a->strings["Done Editing"] = "Avslutt redigering";
+$a->strings["Image uploaded successfully."] = "Opplasting av bildet var vellykket.";
+$a->strings["Image upload failed."] = "Opplasting av bildet mislyktes.";
+$a->strings["Image size reduction [%s] failed."] = "Forminsking av bildet [%s] mislyktes.";
+$a->strings["Contact not found."] = "Kontakten ble ikke funnet.";
+$a->strings["Friend suggestion sent."] = "Venneforespørsel sendt.";
+$a->strings["Suggest Friends"] = "Foreslå venner";
+$a->strings["Suggest a friend for %s"] = "Foreslå en venn for %s";
$a->strings["Permission Denied."] = "Tillatelse avvist.";
$a->strings["File not found."] = "Filen ble ikke funnet.";
$a->strings["Edit file permissions"] = "Endre filtillatelser";
@@ -1390,17 +1544,18 @@ $a->strings["Include all files and sub folders"] = "Inkluder alle filer og under
$a->strings["Return to file list"] = "GÃ¥ tilbake til filoversikten";
$a->strings["Copy/paste this code to attach file to a post"] = "Kopier og lim inn denne koden for å legge til filen i et innlegg";
$a->strings["Copy/paste this URL to link file from a web page"] = "Kopier og lim inn denne URL-en for å lenke til filen fra en webside";
-$a->strings["Download"] = "Last ned";
-$a->strings["Used: "] = "Brukt:";
-$a->strings["[directory]"] = "[mappe]";
-$a->strings["Limit: "] = "Grense:";
+$a->strings["Help:"] = "Hjelp:";
+$a->strings["Not Found"] = "Ikke funnet";
+$a->strings["network"] = "nettverk";
$a->strings["Channel added."] = "Kanal lagt til.";
-$a->strings["%1\$s is following %2\$s's %3\$s"] = "%1\$s følger %2\$s sin %3\$s";
-$a->strings["Contact not found."] = "Kontakten ble ikke funnet.";
-$a->strings["Friend suggestion sent."] = "Venneforespørsel sendt.";
-$a->strings["Suggest Friends"] = "Foreslå venner";
-$a->strings["Suggest a friend for %s"] = "Foreslå en venn for %s";
-$a->strings["No suggestions available. If this is a new site, please try again in 24 hours."] = "Ingen forslag tilgjengelige. Hvis dette er et nytt nettsted, vennligst prøv igjen om 24 timer.";
+$a->strings["No potential page delegates located."] = "Ingen potensielle sidedelegater er funnet.";
+$a->strings["Delegate Page Management"] = "Deleger sidehåndtering";
+$a->strings["Delegates are able to manage all aspects of this account/page except for basic account settings. Please do not delegate your personal account to anybody that you do not trust completely."] = "Delegater kan håndtere alle sider ved denne kontoen/siden unntatt grunnleggende kontoinformasjon. Vennligst ikke deleger din personlige konto til noen du ikke stoler fullstendig på.";
+$a->strings["Existing Page Managers"] = "Eksisterende sidehåndterere";
+$a->strings["Existing Page Delegates"] = "Eksisterende sidedelegater";
+$a->strings["Potential Delegates"] = "Potensielle sidedelegater";
+$a->strings["Add"] = "Legg til";
+$a->strings["No entries."] = "Ingen oppføringer.";
$a->strings["Collection created."] = "Samling opprettet.";
$a->strings["Could not create collection."] = "Kunne ikke lage samling.";
$a->strings["Collection updated."] = "Samlingen er oppdatert.";
@@ -1413,14 +1568,30 @@ $a->strings["Collection Editor"] = "Samlingsbehandler";
$a->strings["Members"] = "Medlemmer";
$a->strings["All Connected Channels"] = "Alle tilkoblede kanaler";
$a->strings["Click on a channel to add or remove."] = "Klikk på en kanal for å legge til eller fjerne.";
+$a->strings["No suggestions available. If this is a new site, please try again in 24 hours."] = "Ingen forslag tilgjengelige. Hvis dette er et nytt nettsted, vennligst prøv igjen om 24 timer.";
+$a->strings["Your service plan only allows %d channels."] = "Din tjenesteplan tillater bare %d kanaler.";
+$a->strings["Nothing to import."] = "Ingenting å importere.";
+$a->strings["Unable to download data from old server"] = "Ikke i stand til å laste ned data fra gammel tjener";
+$a->strings["Imported file is empty."] = "Importert fil er tom.";
+$a->strings["Cannot create a duplicate channel identifier on this system. Import failed."] = "Kan ikke lage en kopi av kanal-identifikatoren på dette systemet. Import mislyktes.";
+$a->strings["Channel clone failed. Import failed."] = "Kanalkloning mislyktes. Import mislyktes.";
+$a->strings["Cloned channel not found. Import failed."] = "Klonet kanal ble ikke funnet. Import mislyktes.";
+$a->strings["Import completed."] = "Import ferdig.";
+$a->strings["You must be logged in to use this feature."] = "Du må være innlogget for å bruke denne funksjonen.";
+$a->strings["Import Channel"] = "Importer kanal";
+$a->strings["Use this form to import an existing channel from a different server/hub. You may retrieve the channel identity from the old server/hub via the network or provide an export file. Only identity and connections/relationships will be imported. Importation of content is not yet available."] = "Bruk dette skjemaet til å importere en eksisterende kanal fra en annen tjener/hub. Du kan hente kanalidentiteten fra den gamle tjeneren/hubben via nettverket eller bruke en eksportert fil. Bare identiteten og forbindelser/relasjoner vil bli importert. Importering av innhold er ennå ikke tilgjengelig.";
+$a->strings["File to Upload"] = "Fil som skal lastes opp";
+$a->strings["Or provide the old server/hub details"] = "Eller oppgi detaljene fra den gamle tjeneren/hub-en";
+$a->strings["Your old identity address (xyz@example.com)"] = "Din gamle identitetsadresse (xyz@example.com)";
+$a->strings["Your old login email address"] = "Din gamle innloggings e-postadresse";
+$a->strings["Your old login password"] = "Ditt gamle innloggingspassord";
+$a->strings["For either option, please choose whether to make this hub your new primary address, or whether your old location should continue this role. You will be able to post from either location, but only one can be marked as the primary location for files, photos, and media."] = "Enten du tar det ene eller det andre valget, vennligst angi om du vil at denne hubben skal være din nye primære adresse, eller om din gamle plassering skal fortsette å ha denne rollen. Du kan lage innlegg fra den ene eller den andre plasseringen, men bare en av dem kan markeres som den primære plasseringen for filer, bilder og media.";
+$a->strings["Make this hub my primary location"] = "Gjør dette nettstedet til min primære plassering";
+$a->strings["Import existing posts if possible"] = "Importerer eksisterende innlegg hvis mulig.";
$a->strings["%1\$s tagged %2\$s's %3\$s with %4\$s"] = "%1\$s merket %3\$s til %2\$s med %4\$s";
-$a->strings["Help:"] = "Hjelp:";
-$a->strings["Not Found"] = "Ikke funnet";
$a->strings["Tag removed"] = "Merkelapp fjernet";
$a->strings["Remove Item Tag"] = "Fjern merkelapp fra element";
$a->strings["Select a tag to remove: "] = "Velg merkelapp å fjerne:";
-$a->strings["Red Matrix - &quot;The Network&quot;"] = "Red Matrix - &quot;Nettverket&quot;";
-$a->strings["Welcome to %s"] = "Velkommen til %s";
$a->strings["Theme settings updated."] = "Temainnstillinger er oppdatert.";
$a->strings["Site"] = "Nettsted";
$a->strings["Accounts"] = "Kontoer";
@@ -1428,6 +1599,7 @@ $a->strings["Channels"] = "Kanaler";
$a->strings["Plugins"] = "Tilleggsfunksjoner";
$a->strings["Themes"] = "Temaer";
$a->strings["Server"] = "Tjener";
+$a->strings["Profile Config"] = "Profilinnstillinger";
$a->strings["DB updates"] = "Databaseoppdateringer";
$a->strings["Logs"] = "Logger";
$a->strings["Plugin Features"] = "Tilleggsfunksjoner";
@@ -1440,7 +1612,9 @@ $a->strings["Pending registrations"] = "Ventende registreringer";
$a->strings["Version"] = "Versjon";
$a->strings["Active plugins"] = "Aktive tilleggsfunksjoner";
$a->strings["Site settings updated."] = "Nettstedsinnstillinger er oppdatert.";
-$a->strings["No special theme for accessibility"] = "Ikke noe spesielt tema for universell utforming";
+$a->strings["mobile"] = "mobil";
+$a->strings["experimental"] = "eksperimentell";
+$a->strings["unsupported"] = "ikke støttet";
$a->strings["Yes - with approval"] = "Ja - med godkjenning";
$a->strings["My site is not a public server"] = "Mitt nettsted er ikke en offentlig tjeneste";
$a->strings["My site has paid access only"] = "Mitt nettsted gir kun tilgang mot betaling";
@@ -1457,10 +1631,10 @@ $a->strings["System theme"] = "Systemtema";
$a->strings["Default system theme - may be over-ridden by user profiles - <a href='#' id='cnftheme'>change theme settings</a>"] = "Standard systemtema - kan overstyres av brukerprofiler - <a href='#' id='cnftheme'>endre temainnstillinger</a>";
$a->strings["Mobile system theme"] = "Mobilt systemtema";
$a->strings["Theme for mobile devices"] = "Tema for mobile enheter";
-$a->strings["Accessibility system theme"] = "Universelt utformet systemtema";
-$a->strings["Accessibility theme"] = "Universelt utformet tema";
-$a->strings["Channel to use for this website's static pages"] = "Kanal å bruke for dette nettstedets statiske sider";
-$a->strings["Site Channel"] = "Nettstedets kanal";
+$a->strings["Enable Diaspora Protocol"] = "Skru på Diaspora-protokollen";
+$a->strings["Communicate with Diaspora and Friendica - experimental"] = "Samhandling med Diaspora og Friendica - eksperimentell";
+$a->strings["Allow Feeds as Connections"] = "Tillat strømmer som forbindelser";
+$a->strings["(Heavy system resource usage)"] = "(Tung bruk av systemressurser)";
$a->strings["Maximum image size"] = "Største bildestørrelse";
$a->strings["Maximum size in bytes of uploaded images. Default is 0, which means no limits."] = "Største størrelse i bytes for opplastede bilder. Standard er 0, som betyr ubegrenset.";
$a->strings["Does this site allow new member registration?"] = "Tillater dette nettstedet registrering av nye medlemmer?";
@@ -1475,6 +1649,8 @@ $a->strings["Allowed email domains"] = "Tillate e-postdomener";
$a->strings["Comma separated list of domains which are allowed in email addresses for registrations to this site. Wildcards are accepted. Empty to allow any domains"] = "Kommaseparert liste med domener som er tillatt i e-postadresser ved registrering på dette nettstedet. Jokertegn er akseptert. Tomt betyr at alle domener er tillatt";
$a->strings["Block public"] = "Blokker offentlig tilgang";
$a->strings["Check to block public access to all otherwise public personal pages on this site unless you are currently logged in."] = "Kryss av for å blokkere tilgang til alle personlige sider som ellers ville vært offentlig tilgjengelige på dette nettstedet med mindre du er logget inn.";
+$a->strings["Verify Email Addresses"] = "Bekreft e-postadresser";
+$a->strings["Check to verify email addresses used in account registration (recommended)."] = "Sett hake for å sjekke e-postadresser brukt ved kontoregistrering (anbefales).";
$a->strings["Force publish"] = "Tving publisering";
$a->strings["Check to force all profiles on this site to be listed in the site directory."] = "Kryss av for å tvinge alle profiler på dette nettstedet til å bli oppført i nettstedet sin katalog.";
$a->strings["Disable discovery tab"] = "Skru av oppdagelsesfanen";
@@ -1514,7 +1690,6 @@ $a->strings["%s user deleted"] = array(
1 => "%s brukere slettet",
);
$a->strings["Account not found"] = "Kontoen ble ikke funnet";
-$a->strings["User '%s' deleted"] = "Brukeren '%s' er slettet";
$a->strings["User '%s' unblocked"] = "Brukeren '%s' er ikke blokkert lenger";
$a->strings["User '%s' blocked"] = "Brukeren '%s' er blokkert";
$a->strings["Users"] = "Brukere";
@@ -1531,8 +1706,8 @@ $a->strings["Service Class"] = "Tjenesteklasse";
$a->strings["Selected users will be deleted!\\n\\nEverything these users had posted on this site will be permanently deleted!\\n\\nAre you sure?"] = "Valgte brukere vil bli slettet!\\n\\nAlt som disse brukerne har lagt inn på dette nettstedet vil bli slettet for alltid!\\n\\nEr du sikker på at du vil slette valgte brukere og deres innhold?";
$a->strings["The user {0} will be deleted!\\n\\nEverything this user has posted on this site will be permanently deleted!\\n\\nAre you sure?"] = "Brukeren {0} vil bli slettet!\\n\\nAlt denne brukeren har lagt inn på dette nettstedet vil bli slettet for alltid!\\n\\nEr du sikker på at du vil slette denne brukeren og alt innholdet til denne brukeren?";
$a->strings["%s channel censored/uncensored"] = array(
- 0 => "%s kanal sensurert/ikke sensurert lenger",
- 1 => "%s kanaler sensurert/ikke sensurert lenger",
+ 0 => "%s kanal er sensurert/ikke sensurert lenger",
+ 1 => "%s kanaler er sensurert/ikke sensurert lenger",
);
$a->strings["%s channel deleted"] = array(
0 => "%s kanal slettet",
@@ -1564,38 +1739,31 @@ $a->strings["Debugging"] = "Feilsøking";
$a->strings["Log file"] = "Loggfil";
$a->strings["Must be writable by web server. Relative to your Red top-level directory."] = "Må kunne skrives til av webtjenesten. Relativ til din Red sin toppnivåkatalog.";
$a->strings["Log level"] = "Loggnivå";
-$a->strings["Thing updated"] = "Tingen er oppdatert";
-$a->strings["Object store: failed"] = "Objektlagring: mislyktes";
-$a->strings["Thing added"] = "Ting lagt til";
-$a->strings["OBJ: %1\$s %2\$s %3\$s"] = "OBJ: %1\$s %2\$s %3\$s";
-$a->strings["Show Thing"] = "Vis ting";
-$a->strings["item not found."] = "element ble ikke funnet.";
-$a->strings["Edit Thing"] = "Endre ting";
-$a->strings["Select a profile"] = "Velg en profil";
-$a->strings["Select a category of stuff. e.g. I ______ something"] = "Velg en kategori med ting, for eksempel l_____ noe";
-$a->strings["Post an activity"] = "Legg inn en aktivitet";
-$a->strings["Only sends to viewers of the applicable profile"] = "Sender bare til seere av den aktuelle profilen";
-$a->strings["Name of thing e.g. something"] = "Navn på ting for eksempel noe";
-$a->strings["URL of thing (optional)"] = "URL til ting (valgfritt)";
-$a->strings["URL for photo of thing (optional)"] = "URL til bilde av ting (valgfritt)";
-$a->strings["Add Thing to your Profile"] = "Legg til ting i din profil";
-$a->strings["Nothing to import."] = "Ingenting å importere.";
-$a->strings["Unable to download data from old server"] = "Ikke i stand til å laste ned data fra gammel tjener";
-$a->strings["Imported file is empty."] = "Importert fil er tom.";
-$a->strings["Cannot create a duplicate channel identifier on this system. Import failed."] = "Kan ikke lage en kopi av kanal-identifikatoren på dette systemet. Import mislyktes.";
-$a->strings["Channel clone failed. Import failed."] = "Kanalkloning mislyktes. Import mislyktes.";
-$a->strings["Cloned channel not found. Import failed."] = "Klonet kanal ble ikke funnet. Import mislyktes.";
-$a->strings["Import completed."] = "Import ferdig.";
-$a->strings["You must be logged in to use this feature."] = "Du må være innlogget for å bruke denne funksjonen.";
-$a->strings["Import Channel"] = "Importer kanal";
-$a->strings["Use this form to import an existing channel from a different server/hub. You may retrieve the channel identity from the old server/hub via the network or provide an export file. Only identity and connections/relationships will be imported. Importation of content is not yet available."] = "Bruk dette skjemaet til å importere en eksisterende kanal fra en annen tjener/hub. Du kan hente kanalidentiteten fra den gamle tjeneren/hubben via nettverket eller bruke en eksportert fil. Bare identiteten og forbindelser/relasjoner vil bli importert. Importering av innhold er ennå ikke tilgjengelig.";
-$a->strings["File to Upload"] = "Fil som skal lastes opp";
-$a->strings["Or provide the old server/hub details"] = "Eller oppgi detaljene fra den gamle tjeneren/hub-en";
-$a->strings["Your old identity address (xyz@example.com)"] = "Din gamle identitetsadresse (xyz@example.com)";
-$a->strings["Your old login email address"] = "Din gamle innloggings e-postadresse";
-$a->strings["Your old login password"] = "Ditt gamle innloggingspassord";
-$a->strings["For either option, please choose whether to make this hub your new primary address, or whether your old location should continue this role. You will be able to post from either location, but only one can be marked as the primary location for files, photos, and media."] = "Enten du tar det ene eller det andre valget, vennligst angi om du vil at denne hubben skal være din nye primære adresse, eller om din gamle plassering skal fortsette å ha denne rollen. Du kan lage innlegg fra den ene eller den andre plasseringen, men bare en av dem kan markeres som den primære plasseringen for filer, bilder og media.";
-$a->strings["Make this hub my primary location"] = "Gjør dette nettstedet til min primære plassering";
+$a->strings["New Profile Field"] = "Nytt profilfelt";
+$a->strings["Field nickname"] = "Feltets kallenavn";
+$a->strings["System name of field"] = "Systemnavnet til feltet";
+$a->strings["Input type"] = "Inndata-type";
+$a->strings["Field Name"] = "Feltnavn";
+$a->strings["Label on profile pages"] = "Merkelapp på profilsider";
+$a->strings["Help text"] = "Hjelpetekst";
+$a->strings["Additional info (optional)"] = "Tilleggsinformasjon (valgfritt)";
+$a->strings["Field definition not found"] = "Feltdefinisjonen ble ikke funnet";
+$a->strings["Edit Profile Field"] = "Endre profilfelt";
+$a->strings["Unable to locate original post."] = "Ikke i stand til å finne opprinnelig innlegg.";
+$a->strings["Empty post discarded."] = "Tomt innlegg forkastet.";
+$a->strings["Executable content type not permitted to this channel."] = "Kjørbar innholdstype er ikke tillat for denne kanalen.";
+$a->strings["System error. Post not saved."] = "Systemfeil. Innlegg ble ikke lagret.";
+$a->strings["You have reached your limit of %1$.0f top level posts."] = "Du har nådd din grense på %1$.0f startinnlegg.";
+$a->strings["You have reached your limit of %1$.0f webpages."] = "Du har nådd din grense på %1$.0f websider.";
+$a->strings["Like/Dislike"] = "Liker/Liker ikke";
+$a->strings["This action is restricted to members."] = "Denne handlingen er begrenset til medlemmer.";
+$a->strings["Please <a href=\"rmagic\">login with your RedMatrix ID</a> or <a href=\"register\">register as a new RedMatrix member</a> to continue."] = "Vennligst <a href=\"rmagic\">logg inn med din RedMatrix ID</a> eller <a href=\"register\">registrer deg som et nytt RedMatrix-medlem</a> for å fortsette";
+$a->strings["Invalid request."] = "Ugyldig forespørsel.";
+$a->strings["thing"] = "ting";
+$a->strings["Channel unavailable."] = "Kanalen er utilgjengelig.";
+$a->strings["Previous action reversed."] = "Forrige handling er omgjort.";
+$a->strings["Action completed."] = "Handling ferdig.";
+$a->strings["Thank you."] = "Tusen takk.";
$a->strings["Total invitation limit exceeded."] = "Grensen for totalt antall invitasjoner er overskredet.";
$a->strings["%s : Not a valid email address."] = "%s : ikke en gyldig e-postadresse.";
$a->strings["Please join us on Red"] = "Bli med oss på Red";
@@ -1609,18 +1777,19 @@ $a->strings["You have no more invitations available"] = "Du har ikke flere invit
$a->strings["Send invitations"] = "Send invitasjoner";
$a->strings["Enter email addresses, one per line:"] = "Skriv e-postadresser, en per linje:";
$a->strings["Your message:"] = "Din melding:";
-$a->strings["You are cordially invited to join me and some other close friends on the Red Matrix - a revolutionary new decentralised communication and information tool."] = "Du er hjertelig invitert til å være med meg og noen andre nære venner i Red Matrix - et nytt og revolusjonerende desentralisert kommunikasjons- og informasjonsverktøy.";
-$a->strings["You will need to supply this invitation code: \$invite_code"] = "Du må oppgi denne invitasjonskoden: \$invite_code";
-$a->strings["Please visit my channel at"] = "Vennligst besøk min kanal hos";
-$a->strings["Once you have registered (on ANY Red Matrix site - they are all inter-connected), please connect with my Red Matrix channel address:"] = "Når du har registrert (på et HVILKET SOM HELST Red Matrix-nettsted - de er alle forbundet med hverandre), vennligst opprett kobling med min Red Matrix-kanaladresse:";
-$a->strings["Click the [Register] link on the following page to join."] = "Klikk på [Registering]-lenken på følgende side for å bli med.";
-$a->strings["For more information about the Red Matrix Project and why it has the potential to change the internet as we know it, please visit http://getzot.com"] = "For mer informasjon om Red Matrix-prosjektet og hvorfor det har potensialet til å forandre Internett som vi kjenner det, vær vennlig å besøke http://getzot.com";
-$a->strings["Unable to locate original post."] = "Ikke i stand til å finne opprinnelig innlegg.";
-$a->strings["Empty post discarded."] = "Tomt innlegg forkastet.";
-$a->strings["Executable content type not permitted to this channel."] = "Kjørbar innholdstype er ikke tillat for denne kanalen.";
-$a->strings["System error. Post not saved."] = "Systemfeil. Innlegg ble ikke lagret.";
-$a->strings["You have reached your limit of %1$.0f top level posts."] = "Du har nådd din grense på %1$.0f startinnlegg.";
-$a->strings["You have reached your limit of %1$.0f webpages."] = "Du har nådd din grense på %1$.0f websider.";
+$a->strings["Please join my community on RedMatrix."] = "Du er velkommen til å bli med i mitt fellesskap på RedMatrix.";
+$a->strings["You will need to supply this invitation code: "] = "Du må oppgi denne invitasjonskoden:";
+$a->strings["1. Register at any RedMatrix location (they are all inter-connected)"] = "1. Registrer ved enhver RedMatrix-lokasjon (de er alle forbundet med hverandre)";
+$a->strings["2. Enter my RedMatrix network address into the site searchbar."] = "2. Skriv inn min RedMatrix-adresse i nettstedets søkefelt.";
+$a->strings["or visit "] = "eller besøk";
+$a->strings["3. Click [Connect]"] = "3. Klikk [Forbindelse]";
+$a->strings["Location not found."] = "Plassering er ikke funnet.";
+$a->strings["Primary location cannot be removed."] = "Primær plassering kan ikke fjernes.";
+$a->strings["No locations found."] = "Ingen plasseringer ble funnet.";
+$a->strings["Manage Channel Locations"] = "HÃ¥ndter kanalplasseringer";
+$a->strings["Location (address)"] = "Plassering (adresse)";
+$a->strings["Primary Location"] = "Hovedplassering";
+$a->strings["Drop location"] = "Slett plassering";
$a->strings["[Embedded content - reload page to view]"] = "[Innebygget innhold - last siden på nytt for å se]";
$a->strings["Help with this feature"] = "Hjelp med denne funksjonen";
$a->strings["Layout Name"] = "Layout-navn";
@@ -1629,22 +1798,6 @@ $a->strings["Visible to:"] = "Synlig for:";
$a->strings["No connections."] = "Ingen forbindelser.";
$a->strings["Visit %s's profile [%s]"] = "Besøk %s sin profil [%s]";
$a->strings["View Connnections"] = "Vis forbindelser";
-$a->strings["No valid account found."] = "Ingen gyldig konto funnet.";
-$a->strings["Password reset request issued. Check your email."] = "Forespørsel om å tilbakestille passord er mottatt. Sjekk e-posten din.";
-$a->strings["Site Member (%s)"] = "Nettstedsmedlem (%s)";
-$a->strings["Password reset requested at %s"] = "Forespurt om å tilbakestille passord hos %s";
-$a->strings["Request could not be verified. (You may have previously submitted it.) Password reset failed."] = "Forespørsel kunne ikke bekreftes. (Du kan ha sendt den inn tidligere.) Tilbakestilling av passord mislyktes.";
-$a->strings["Password Reset"] = "Tilbakestill passord";
-$a->strings["Your password has been reset as requested."] = "Ditt passord har blitt tilbakestilt som forespurt.";
-$a->strings["Your new password is"] = "Ditt nye passord er";
-$a->strings["Save or copy your new password - and then"] = "Lagre eller kopier ditt nye passord, og deretter kan du";
-$a->strings["click here to login"] = "klikke her for å logge inn";
-$a->strings["Your password may be changed from the <em>Settings</em> page after successful login."] = "Ditt passord kan endres på siden <em>Innstillinger</em> etter vellykket innlogging.";
-$a->strings["Your password has changed at %s"] = "Ditt passord er endret hos %s";
-$a->strings["Forgot your Password?"] = "Glemt passord ditt?";
-$a->strings["Enter your email address and submit to have your password reset. Then check your email for further instructions."] = "Skriv e-postadressen din og send inn for å tilbakestille passordet ditt. Sjekk deretter din e-post for videre instruksjoner.";
-$a->strings["Email Address"] = "E-postadresse";
-$a->strings["Reset"] = "Tilbakestill";
$a->strings["Hub not found."] = "Hubben ble ikke funnet.";
$a->strings["Total votes"] = "Totalt antall stemmer";
$a->strings["Average Rating"] = "Gjennomsnittlig vurdering";
@@ -1652,12 +1805,12 @@ $a->strings["Unable to lookup recipient."] = "Ikke i stand til å slå opp motta
$a->strings["Unable to communicate with requested channel."] = "Ikke i stand til å kommunisere med forespurt kanal.";
$a->strings["Cannot verify requested channel."] = "Kan ikke bekrefte forespurt kanal.";
$a->strings["Selected channel has private message restrictions. Send failed."] = "Valgt kanal har restriksjoner for private meldinger. Sending feilet.";
-$a->strings["Messages"] = "Meldinger";
$a->strings["Message deleted."] = "Melding slettet.";
$a->strings["Message recalled."] = "Innlegg tilbakekalt.";
$a->strings["Send Private Message"] = "Send privat melding";
$a->strings["To:"] = "Til:";
$a->strings["Subject:"] = "Emne:";
+$a->strings["Send"] = "Send";
$a->strings["Message not found."] = "Melding ikke funnet.";
$a->strings["Delete message"] = "Slett melding";
$a->strings["Recall message"] = "Tilbakekall innlegg";
@@ -1666,13 +1819,6 @@ $a->strings["Private Conversation"] = "Privat samtale";
$a->strings["Delete conversation"] = "Slett samtale";
$a->strings["No secure communications available. You <strong>may</strong> be able to respond from the sender's profile page."] = "Ingen sikret kommunikasjon tilgjengelig. Du kan <strong>muligens</strong> greie å svare via senderens profilside.";
$a->strings["Send Reply"] = "Send svar";
-$a->strings["You have created %1$.0f of %2$.0f allowed channels."] = "Du har laget %1$.0f av %2$.0f tillatte kanaler.";
-$a->strings["Create a new channel"] = "Lag en ny kanal";
-$a->strings["Channel Manager"] = "Kanalstyring";
-$a->strings["Current Channel"] = "Gjeldende kanal";
-$a->strings["Attach to one of your channels by selecting it."] = "Bytt til en av dine kanaler ved å velge den.";
-$a->strings["Default Channel"] = "Standardkanal";
-$a->strings["Make Default"] = "Gjør til standard";
$a->strings["Wall Photos"] = "Veggbilder";
$a->strings["Profile Match"] = "Profiltreff";
$a->strings["No keywords to match. Please add keywords to your default profile."] = "Ingen nøkkelord å sammenlikne. Vennligst legg til nøkkelord til din standardprofil.";
@@ -1684,6 +1830,7 @@ $a->strings["Menu created."] = "Meny laget.";
$a->strings["Unable to create menu."] = "Ikke i stand til å lage meny.";
$a->strings["Manage Menus"] = "HÃ¥ndtere menyer";
$a->strings["Drop"] = "Slett";
+$a->strings["Bookmarks allowed"] = "Bokmerker tillatt";
$a->strings["Create a new menu"] = "Lag en ny meny";
$a->strings["Delete this menu"] = "Slett denne menyen";
$a->strings["Edit menu contents"] = "Endre menyinnholdet";
@@ -1708,45 +1855,19 @@ $a->strings["Examples: \"Bob Jameson\", \"Lisa and her Horses\", \"Soccer\", \"A
$a->strings["Choose a short nickname"] = "Velg et kort kallenavn";
$a->strings["Your nickname will be used to create an easily remembered channel address (like an email address) which you can share with others."] = "Ditt kallenavn brukes til å lage en kanaladresse som er enkel å huske (minner om en e-postadresse) og som du kan dele med andre.";
$a->strings["Or <a href=\"import\">import an existing channel</a> from another location"] = "Eller <a href=\"import\">importerer en eksisterende kanal</a> fra et annet sted.";
-$a->strings["Page owner information could not be retrieved."] = "Informasjon om sideeier kunne ikke hentes.";
-$a->strings["Album not found."] = "Albumet ble ikke funnet.";
-$a->strings["Delete Album"] = "Slett album";
-$a->strings["Delete Photo"] = "Slett bilde";
-$a->strings["No photos selected"] = "Ingen bilder valgt";
-$a->strings["Access to this item is restricted."] = "Tilgang til dette elementet er begrenset.";
-$a->strings["You have used %1$.2f Mbytes of %2$.2f Mbytes photo storage."] = "Du har brukt %1$.2f Mbytes av %2$.2f Mbytes i bildelageret.";
-$a->strings["You have used %1$.2f Mbytes of photo storage."] = "Du har brukt %1$.2f Mbytes av bildelageret.";
-$a->strings["Upload Photos"] = "Last opp bilder";
-$a->strings["New album name: "] = "Nytt albumnavn:";
-$a->strings["or existing album name: "] = "eller eksisterende albumnavn:";
-$a->strings["Do not show a status post for this upload"] = "Ikke lag et statusinnlegg for denne oppdateringen";
-$a->strings["Contact Photos"] = "Kontaktbilder";
-$a->strings["Edit Album"] = "Endre album";
-$a->strings["Show Newest First"] = "Vis nyeste først";
-$a->strings["Show Oldest First"] = "Vis eldste først";
-$a->strings["View Photo"] = "Vis foto";
-$a->strings["Permission denied. Access to this item may be restricted."] = "Tillatelse avvist. Tilgang til dette elementet kan være begrenset.";
-$a->strings["Photo not available"] = "Bilde er utilgjengelig";
-$a->strings["Use as profile photo"] = "Bruk som profilbilde";
-$a->strings["View Full Size"] = "Vis i full størrelse";
-$a->strings["Edit photo"] = "Endre bilde";
-$a->strings["Rotate CW (right)"] = "Roter med klokka (mot høyre)";
-$a->strings["Rotate CCW (left)"] = "Roter mot klokka (venstre)";
-$a->strings["New album name"] = "Nytt albumnavn";
-$a->strings["Caption"] = "Overskrift";
-$a->strings["Add a Tag"] = "Legg til merkelapp";
-$a->strings["Example: @bob, @Barbara_Jensen, @jim@example.com, #California, #camping"] = "Eksempel: @ola, @Kari_Nordmann, @jim@example.com, #Norge, #telttur";
-$a->strings["In This Photo:"] = "I dette bildet:";
-$a->strings["View Album"] = "Vis album";
-$a->strings["Recent Photos"] = "Nye bilder";
+$a->strings["Channel Type"] = "Kanaltype";
+$a->strings["Please choose a channel type (such as social networking or community forum) and privacy requirements so we can select the best permissions for you"] = "Vennligst velg en kanaltype (for eksempel sosialt nettverk eller forum for felleskap) og krav til personvern slik at vi kan velge de beste tillatelsene for deg.";
+$a->strings["Red Matrix - &quot;The Network&quot;"] = "Red Matrix - &quot;Nettverket&quot;";
+$a->strings["Welcome to %s"] = "Velkommen til %s";
$a->strings["Invalid request identifier."] = "Ugyldig forespørselsidentifikator.";
$a->strings["Discard"] = "Forkast";
$a->strings["No more system notifications."] = "Ingen flere systemvarsler.";
$a->strings["System Notifications"] = "Systemvarsler";
+$a->strings["Xchan Lookup"] = "Xchan oppslag";
+$a->strings["Lookup xchan beginning with (or webbie): "] = "Slå opp xchan som begynner med (eller webbie):";
$a->strings["Unable to find your hub."] = "Ikke i stand til å finne hubben din.";
$a->strings["Post successful."] = "Innlegg vellykket.";
$a->strings["invalid target signature"] = "MÃ¥lets signatur er ugyldig";
-$a->strings["OpenID protocol error. No ID returned."] = "OpenID protokollfeil. Ingen ID ble returnert.";
$a->strings["App installed."] = "App installert.";
$a->strings["Malformed app."] = "Feil oppsett for app-en.";
$a->strings["Embed code"] = "Innbyggingskode";
@@ -1759,35 +1880,43 @@ $a->strings["80 x 80 pixels - optional"] = "80 x80 pixler - valgfritt";
$a->strings["Version ID"] = "Versjons-ID";
$a->strings["Price of app"] = "Pris på app";
$a->strings["Location (URL) to purchase app"] = "Plassering (URL) for å kjøpe app";
-$a->strings["Schema Default"] = "Standardskjema";
+$a->strings["Poll"] = "Spørring";
+$a->strings["View Results"] = "Vis resultater";
+$a->strings["Account removals are not allowed within 48 hours of changing the account password."] = "Sletting av kontoer er ikke tillatt innen 48 timer etter endring av kontopassordet.";
+$a->strings["Remove This Account"] = "Slett denne kontoen";
+$a->strings["This will completely remove this account including all its channels from the network. Once this has been done it is not recoverable."] = "Dette vil fullstendig slette denne kontoen inkludert alle dens kanaler fra nettverket. NÃ¥r dette er gjort kan det ikke angres.";
+$a->strings["Remove this account, all its channels and all its channel clones from the network"] = "Slett denne kontoen, alle dens kanaler og alle dens kanalkloner fra dette nettverket";
+$a->strings["By default only the instances of the channels located on this hub will be removed from the network"] = "Som standard vil bare forekomster av kanalene lokalisert på denne hubben bli slettet fra nettverket";
+$a->strings["No service class restrictions found."] = "Ingen restriksjoner er funnet i tjenesteklasse.";
+$a->strings["Schema Default"] = "Standard skjema";
$a->strings["Sans-Serif"] = "Sans-Serif";
$a->strings["Monospace"] = "Monospace";
$a->strings["Theme settings"] = "Temainnstillinger";
$a->strings["Set scheme"] = "Angi skjema";
$a->strings["Set font-size for posts and comments"] = "Angi skriftstørrelse for innlegg og kommentarer";
$a->strings["Set font face"] = "Angi skrifttype";
-$a->strings["Set iconset"] = "Angi ikonsett";
+$a->strings["Set iconset"] = "Angi ikonutvalg";
$a->strings["Set big shadow size, default 15px 15px 15px"] = "Angi stor skyggestørrelse, standard 15px 15px 15px";
$a->strings["Set small shadow size, default 5px 5px 5px"] = "Angi liten skyggestørrelse, standard 5px 5px 5px";
-$a->strings["Set shadow colour, default #000"] = "Angi skyggefarge, standard #000";
-$a->strings["Set radius size, default 5px"] = "Angi størrelsen på radius, standard 5px";
+$a->strings["Set shadow color, default #000"] = "Angi skyggefarge, standard #000";
+$a->strings["Set radius size, default 5px"] = "Angi radiusstørrelse, standard 5px";
$a->strings["Set line-height for posts and comments"] = "Angi linjeavstand for innlegg og kommentarer";
$a->strings["Set background image"] = "Angi bakgrunnsbilde";
$a->strings["Set background attachment"] = "Angi bakgrunnsvedlegg";
-$a->strings["Set background colour"] = "Angi bakgrunnsbilde";
+$a->strings["Set background color"] = "Angi bakgrunnsfarge";
$a->strings["Set section background image"] = "Angi seksjonens bakgrunnsbilde";
-$a->strings["Set section background colour"] = "Angi seksjonens bakgrunnsfarge";
-$a->strings["Set colour of items - use hex"] = "Angi fargen til elementer - bruk hex";
-$a->strings["Set colour of links - use hex"] = "Angi fargen til lenker - bruk hex";
-$a->strings["Set max-width for items. Default 400px"] = "Angi største bredde for elementer. Standard 400px.";
-$a->strings["Set min-width for items. Default 240px"] = "Angi minste bredde for elementer. Standard 240px.";
-$a->strings["Set the generic content wrapper width. Default 48%"] = "Angi bredden til den generelle innholdsinnpakningen. Standard 48%";
-$a->strings["Set colour of fonts - use hex"] = "Angi skriftfargen - bruk hex";
+$a->strings["Set section background color"] = "Angi seksjonens bakgrunnsfarge";
+$a->strings["Set color of items - use hex"] = "Angi fargen til elementer - bruk hex";
+$a->strings["Set color of links - use hex"] = "Angi fargen til lenker - bruk hex";
+$a->strings["Set max-width for items. Default 400px"] = "Angi maksimal bredde for elementer. Standard 400px";
+$a->strings["Set min-width for items. Default 240px"] = "Angi minimumsbredde for elementer. Standard 240px";
+$a->strings["Set the generic content wrapper width. Default 48%"] = "Angi den generelle bredden for innpakking av innhold. Standard 48%";
+$a->strings["Set color of fonts - use hex"] = "Angi skriftfargen - bruk hex";
$a->strings["Set background-size element"] = "Angi størrelsen på bakgrunnselementet";
-$a->strings["Item opacity"] = "Elementets dekkevne";
+$a->strings["Item opacity"] = "Elementers dekkevne";
$a->strings["Display post previews only"] = "Vis kun forhåndsvisning av innlegg";
$a->strings["Display side bar on channel page"] = "Vis sidestolpe på kanalsiden";
-$a->strings["Colour of the navigation bar"] = "Fargen til navigasjonslinjen";
+$a->strings["Colour of the navigation bar"] = "Fargen på navigasjonslinjen";
$a->strings["Item float"] = "Elementflyt";
$a->strings["Left offset of the section element"] = "Til venstre for seksjonselementet";
$a->strings["Right offset of the section element"] = "Til høyre for seksjonselementet";
@@ -1797,27 +1926,28 @@ $a->strings["Right offset of the aside element"] = "Til høyre for sidestolpen";
$a->strings["None"] = "Ingen";
$a->strings["Header image"] = "Topptekstbilde";
$a->strings["Header image only on profile pages"] = "Topptekstbilde bare på profilsider";
+$a->strings["Light (Red Matrix default)"] = "Lys (Red Matrix standard)";
$a->strings["Narrow navbar"] = "Smal navigasjonslinje";
-$a->strings["Navigation bar background colour"] = "Navigasjonslinjens bakgrunnsfarge";
-$a->strings["Navigation bar gradient top colour"] = "Navigasjonslinjens graderte toppfarge";
-$a->strings["Navigation bar gradient bottom colour"] = "Navigasjonslinjens graderte bunnfarge";
-$a->strings["Navigation active button gradient top colour"] = "Aktiv navigasjonsknapp sin graderte toppfarge";
-$a->strings["Navigation active button gradient bottom colour"] = "Aktiv navigasjonsknapp sin graderte bunnfarge";
-$a->strings["Navigation bar border colour "] = "Navigasjonslinjens kantfarge";
-$a->strings["Navigation bar icon colour "] = "Navigasjonslinjens ikonfarge";
-$a->strings["Navigation bar active icon colour "] = "Navigasjonslinjens aktive ikoners farge";
-$a->strings["link colour"] = "lenkefarge";
-$a->strings["Set font-colour for banner"] = "Angi skriftfargen for banneret";
-$a->strings["Set the background colour"] = "Angi bakgrunnsfargen";
+$a->strings["Navigation bar background color"] = "Navigasjonslinjens bakgrunnsfarge";
+$a->strings["Navigation bar gradient top color"] = "Navigasjonslinjens graderte toppfarge";
+$a->strings["Navigation bar gradient bottom color"] = "Navigasjonslinjens graderte bunnfarge";
+$a->strings["Navigation active button gradient top color"] = "Aktiv navigasjonsknapp sin graderte toppfarge";
+$a->strings["Navigation active button gradient bottom color"] = "Aktiv navigasjonsknapp sin graderte bunnfarge";
+$a->strings["Navigation bar border color "] = "Navigasjonslinjens kantfarge";
+$a->strings["Navigation bar icon color "] = "Navigasjonslinjens ikonfarge";
+$a->strings["Navigation bar active icon color "] = "Navigasjonslinjens aktive ikoners farge";
+$a->strings["link color"] = "lenkefarge";
+$a->strings["Set font-color for banner"] = "Angi skriftfargen for banneret";
+$a->strings["Set the background color"] = "Angi bakgrunnsfargen";
$a->strings["Set the background image"] = "Angi bakgrunnsbilde";
-$a->strings["Set the background colour of items"] = "Angi bakgrunnsfargen til elementer";
-$a->strings["Set the background colour of comments"] = "Angi bakgrunnsfargen til kommentarer";
-$a->strings["Set the border colour of comments"] = "Angi kantfargen til kommentarer";
+$a->strings["Set the background color of items"] = "Angi bakgrunnsfargen til elementer";
+$a->strings["Set the background color of comments"] = "Angi bakgrunnsfargen til kommentarer";
+$a->strings["Set the border color of comments"] = "Angi kantfargen til kommentarer";
$a->strings["Set the indent for comments"] = "Angi innrykket til kommentarer";
-$a->strings["Set the basic colour for item icons"] = "Angi grunnfargen for elementikoner";
-$a->strings["Set the hover colour for item icons"] = "Angi fargen til elementikoner ved berøring";
+$a->strings["Set the basic color for item icons"] = "Angi grunnfargen for elementikoner";
+$a->strings["Set the hover color for item icons"] = "Angi fargen til elementikoner ved berøring";
$a->strings["Set font-size for the entire application"] = "Angi skriftstørrelsen for hele programmet";
-$a->strings["Set font-colour for posts and comments"] = "Angi skriftfargen for innlegg og kommentarer";
+$a->strings["Set font-color for posts and comments"] = "Angi skriftfargen for innlegg og kommentarer";
$a->strings["Set radius of corners"] = "Angi hjørneradius";
$a->strings["Set shadow depth of photos"] = "Angi skyggedybden til bilder";
$a->strings["Set maximum width of conversation regions"] = "Angi største bredde for samtaleregioner";
diff --git a/view/nl/follow_notify_eml.tpl b/view/nl/follow_notify_eml.tpl
deleted file mode 100644
index ba07b19da..000000000
--- a/view/nl/follow_notify_eml.tpl
+++ /dev/null
@@ -1,14 +0,0 @@
-
-Dear {{$myname}},
-
-You have a new follower at {{$sitename}} - '{{$requestor}}'.
-
-You may visit their profile at {{$url}}.
-
-Please login to your site to approve or ignore/cancel the request.
-
-{{$siteurl}}
-
-Regards,
-
- {{$sitename}} administrator
diff --git a/view/nl/friend_complete_eml.tpl b/view/nl/friend_complete_eml.tpl
deleted file mode 100644
index 1c647b994..000000000
--- a/view/nl/friend_complete_eml.tpl
+++ /dev/null
@@ -1,22 +0,0 @@
-
-Dear {{$username}},
-
- Great news... '{{$fn}}' at '{{$dfrn_url}}' has accepted
-your connection request at '{{$sitename}}'.
-
-You are now mutual friends and may exchange status updates, photos, and email
-without restriction.
-
-Please visit your 'Connnections' page at {{$sitename}} if you wish to make
-any changes to this relationship.
-
-{{$siteurl}}
-
-[For instance, you may create a separate profile with information that is not
-available to the general public - and assign viewing rights to '{{$fn}}'].
-
-Sincerely,
-
- {{$sitename}} Administrator
-
-
diff --git a/view/nl/intro_complete_eml.tpl b/view/nl/intro_complete_eml.tpl
deleted file mode 100644
index 2c2428d68..000000000
--- a/view/nl/intro_complete_eml.tpl
+++ /dev/null
@@ -1,22 +0,0 @@
-
-Dear {{$username}},
-
- '{{$fn}}' at '{{$dfrn_url}}' has accepted
-your connection request at '{{$sitename}}'.
-
- '{{$fn}}' has chosen to accept you a "fan", which restricts
-some forms of communication - such as private messaging and some profile
-interactions. If this is a celebrity or community page, these settings were
-applied automatically.
-
- '{{$fn}}' may choose to extend this into a two-way or more permissive
-relationship in the future.
-
- You will start receiving public status updates from '{{$fn}}',
-which will appear on your 'Matrix' page at
-
-{{$siteurl}}
-
-Sincerely,
-
- {{$sitename}} Administrator
diff --git a/view/nl/lostpass_eml.tpl b/view/nl/lostpass_eml.tpl
index 3b79d2791..af1c77f4f 100644
--- a/view/nl/lostpass_eml.tpl
+++ b/view/nl/lostpass_eml.tpl
@@ -1,32 +1,32 @@
-Dear {{$username}},
- A request was recently received at {{$sitename}} to reset your account
-password. In order to confirm this request, please select the verification link
-below or paste it into your web browser address bar.
+Beste {{$username}},
+ Er is recentelijk een verzoek ontvangen op {{$sitename}} om het wachtwoord van je
+account opnieuw in te stellen. Om dit verzoek te kunnen bevestigen dien je op onderstaande
+verificatielink te klikken of deze in de adresbalk van je webbrowser te plakken.
-If you did NOT request this change, please DO NOT follow the link
-provided and ignore and/or delete this email.
+Wanneer jij dit verzoek NIET hebt gedaan, KLIK dan NIET op onderstaande link
+en negeer en/of verwijder deze e-mail.
-Your password will not be changed unless we can verify that you
-issued this request.
+Jouw wachtwoord wordt niet veranderd voordat wij zeker zijn dat
+jij dit verzoek hebt gedaan.
-Follow this link to verify your identity:
+Klik op deze link om jouw identiteit te verifiëren:
{{$reset_link}}
-You will then receive a follow-up message containing the new password.
+Je ontvangt vervolgens opnieuw een e-mail met jouw nieuwe wachtwoord.
-You may change that password from your account settings page after logging in.
+Wij adviseren om dit wachtwoord te veranderen onder 'instellingen' nadat je bent ingelogd.
-The login details are as follows:
+De inloggegevens zijn volgt:
-Site Location: {{$siteurl}}
-Login Name: {{$email}}
+Hub-adres: {{$siteurl}}
+Inlognaam: {{$email}}
-Sincerely,
- {{$sitename}} Administrator
+Vriendelijke groet,
+ Beheerder {{$sitename}} ({{$siteurl}})
-
+ \ No newline at end of file
diff --git a/view/nl/messages.po b/view/nl/messages.po
index 7d375e4fe..e18f7b719 100644
--- a/view/nl/messages.po
+++ b/view/nl/messages.po
@@ -3,14 +3,15 @@
# This file is distributed under the same license as the Red package.
#
# Translators:
-# jeroenpraat <>, 2013-2014
+# jeroenpraat <jeroenpraat@xs4all.nl>, 2013-2014
+# jeroenpraat <jeroenpraat@xs4all.nl>, 2014-2015
msgid ""
msgstr ""
"Project-Id-Version: Red Matrix\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2014-07-04 00:02-0700\n"
-"PO-Revision-Date: 2014-07-09 18:59+0000\n"
-"Last-Translator: jeroenpraat <>\n"
+"POT-Creation-Date: 2015-01-02 00:04-0800\n"
+"PO-Revision-Date: 2015-01-03 15:35+0000\n"
+"Last-Translator: jeroenpraat <jeroenpraat@xs4all.nl>\n"
"Language-Team: Dutch (http://www.transifex.com/projects/p/red-matrix/language/nl/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
@@ -18,727 +19,430 @@ msgstr ""
"Language: nl\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-#: ../../include/dba/dba_driver.php:50
+#: ../../include/dba/dba_driver.php:142
#, php-format
msgid "Cannot locate DNS info for database server '%s'"
msgstr "Kan DNS-informatie voor databaseserver '%s' niet vinden"
-#: ../../include/photo/photo_driver.php:643 ../../include/photos.php:51
+#: ../../include/photo/photo_driver.php:680 ../../include/photos.php:52
#: ../../mod/profile_photo.php:142 ../../mod/profile_photo.php:301
-#: ../../mod/profile_photo.php:421 ../../mod/photos.php:91
-#: ../../mod/photos.php:653 ../../mod/photos.php:675
+#: ../../mod/profile_photo.php:423 ../../mod/photos.php:91
+#: ../../mod/photos.php:654
msgid "Profile Photos"
msgstr "Profielfoto's"
-#: ../../include/oembed.php:171
-msgid "Embedded content"
-msgstr "Ingesloten inhoud"
-
-#: ../../include/oembed.php:180
-msgid "Embedding disabled"
-msgstr "Insluiten uitgeschakeld"
-
-#: ../../include/notify.php:23
-msgid "created a new post"
-msgstr "maakte een nieuw bericht aan"
-
-#: ../../include/notify.php:24
-#, php-format
-msgid "commented on %s's post"
-msgstr "gaf een reactie op een bericht van %s"
-
-#: ../../include/conversation.php:120 ../../include/text.php:1730
-#: ../../mod/subthread.php:72 ../../mod/subthread.php:174
-#: ../../mod/tagger.php:45 ../../mod/like.php:254
-msgid "photo"
-msgstr "foto"
-
-#: ../../include/conversation.php:123 ../../include/text.php:1733
-#: ../../mod/tagger.php:49
-msgid "event"
-msgstr "gebeurtenis"
-
-#: ../../include/conversation.php:126 ../../mod/like.php:72
-msgid "channel"
-msgstr "kanaal"
-
-#: ../../include/conversation.php:148 ../../include/text.php:1736
-#: ../../mod/subthread.php:72 ../../mod/subthread.php:174
-#: ../../mod/tagger.php:53 ../../mod/like.php:254
-msgid "status"
-msgstr "status"
-
-#: ../../include/conversation.php:150 ../../include/text.php:1738
-#: ../../mod/tagger.php:55
-msgid "comment"
-msgstr "reactie"
-
-#: ../../include/conversation.php:164 ../../mod/like.php:291
-#, php-format
-msgid "%1$s likes %2$s's %3$s"
-msgstr "%1$s vindt %3$s van %2$s leuk"
-
-#: ../../include/conversation.php:167 ../../mod/like.php:293
-#, php-format
-msgid "%1$s doesn't like %2$s's %3$s"
-msgstr "%1$s vindt %3$s van %2$s niet leuk"
-
-#: ../../include/conversation.php:204
-#, php-format
-msgid "%1$s is now connected with %2$s"
-msgstr "%1$s is nu met %2$s verbonden"
-
-#: ../../include/conversation.php:239
-#, php-format
-msgid "%1$s poked %2$s"
-msgstr "%1$s heeft %2$s aangestoten"
-
-#: ../../include/conversation.php:243 ../../include/text.php:895
-msgid "poked"
-msgstr "aangestoten"
-
-#: ../../include/conversation.php:261 ../../mod/mood.php:63
-#, php-format
-msgctxt "mood"
-msgid "%1$s is %2$s"
-msgstr "%1$s is %2$s"
-
-#: ../../include/conversation.php:634 ../../include/ItemObject.php:114
-msgid "Select"
-msgstr "Kies"
-
-#: ../../include/conversation.php:635 ../../include/reddav.php:1290
-#: ../../include/apps.php:241 ../../include/ItemObject.php:108
-#: ../../mod/settings.php:578 ../../mod/connedit.php:398
-#: ../../mod/photos.php:1046 ../../mod/group.php:176 ../../mod/admin.php:758
-#: ../../mod/admin.php:888 ../../mod/thing.php:236
-msgid "Delete"
-msgstr "Verwijderen"
+#: ../../include/items.php:382 ../../mod/group.php:68
+#: ../../mod/subthread.php:49 ../../mod/profperm.php:23 ../../mod/like.php:246
+#: ../../index.php:389
+msgid "Permission denied"
+msgstr "Toegang geweigerd"
-#: ../../include/conversation.php:642 ../../include/ItemObject.php:89
-#: ../../mod/photos.php:844
-msgid "Private Message"
-msgstr "Privébericht"
+#: ../../include/items.php:969 ../../include/items.php:1014
+msgid "(Unknown)"
+msgstr "(Onbekend)"
-#: ../../include/conversation.php:649 ../../include/ItemObject.php:182
-msgid "Message is verified"
-msgstr "Bericht is geverifieerd"
+#: ../../include/items.php:1171
+msgid "Visible to anybody on the internet."
+msgstr "Voor iedereen op het internet zichtbaar."
-#: ../../include/conversation.php:669
-#, php-format
-msgid "View %s's profile @ %s"
-msgstr "Bekijk het profiel van %s @ %s"
+#: ../../include/items.php:1173
+msgid "Visible to you only."
+msgstr "Alleen voor jou zichtbaar."
-#: ../../include/conversation.php:683
-msgid "Categories:"
-msgstr "Categorieën:"
+#: ../../include/items.php:1175
+msgid "Visible to anybody in this network."
+msgstr "Voor iedereen in dit netwerk zichtbaar."
-#: ../../include/conversation.php:684
-msgid "Filed under:"
-msgstr "Bewaard onder:"
-
-#: ../../include/conversation.php:693 ../../include/ItemObject.php:250
-#, php-format
-msgid " from %s"
-msgstr " van %s"
-
-#: ../../include/conversation.php:696 ../../include/ItemObject.php:253
-#, php-format
-msgid "last edited: %s"
-msgstr "laatst bewerkt: %s"
+#: ../../include/items.php:1177
+msgid "Visible to anybody authenticated."
+msgstr "Voor iedereen die geauthenticeerd is zichtbaar."
-#: ../../include/conversation.php:697 ../../include/ItemObject.php:254
+#: ../../include/items.php:1179
#, php-format
-msgid "Expires: %s"
-msgstr "Verloopt: %s"
-
-#: ../../include/conversation.php:712
-msgid "View in context"
-msgstr "In context bekijken"
-
-#: ../../include/conversation.php:714 ../../include/conversation.php:1130
-#: ../../include/ItemObject.php:294 ../../mod/editblock.php:120
-#: ../../mod/editlayout.php:115 ../../mod/editpost.php:121
-#: ../../mod/editwebpage.php:152 ../../mod/photos.php:977
-#: ../../mod/mail.php:218 ../../mod/mail.php:333
-msgid "Please wait"
-msgstr "Even wachten"
-
-#: ../../include/conversation.php:841
-msgid "remove"
-msgstr "verwijderen"
+msgid "Visible to anybody on %s."
+msgstr "Voor iedereen op %s zichtbaar."
-#: ../../include/conversation.php:845
-msgid "Loading..."
-msgstr "Aan het laden..."
-
-#: ../../include/conversation.php:846
-msgid "Delete Selected Items"
-msgstr "Verwijder de geselecteerde items"
-
-#: ../../include/conversation.php:937
-msgid "View Source"
-msgstr "Bron weergeven"
-
-#: ../../include/conversation.php:938
-msgid "Follow Thread"
-msgstr "Conversatie volgen"
-
-#: ../../include/conversation.php:939
-msgid "View Status"
-msgstr "Status weergeven"
-
-#: ../../include/conversation.php:940 ../../include/nav.php:81
-#: ../../mod/connedit.php:351 ../../mod/connedit.php:465
-msgid "View Profile"
-msgstr "Profiel weergeven"
-
-#: ../../include/conversation.php:941
-msgid "View Photos"
-msgstr "Foto's weergeven"
-
-#: ../../include/conversation.php:942
-msgid "Matrix Activity"
-msgstr "Activiteit in de matrix"
-
-#: ../../include/conversation.php:943
-msgid "Edit Contact"
-msgstr "Contact bewerken"
-
-#: ../../include/conversation.php:944
-msgid "Send PM"
-msgstr "Privébericht verzenden"
-
-#: ../../include/conversation.php:945 ../../include/apps.php:140
-msgid "Poke"
-msgstr "Aanstoten"
+#: ../../include/items.php:1181
+msgid "Visible to all connections."
+msgstr "Voor alle connecties zichtbaar."
-#: ../../include/conversation.php:1001
-#, php-format
-msgid "%s likes this."
-msgstr "%s vindt dit leuk."
+#: ../../include/items.php:1183
+msgid "Visible to approved connections."
+msgstr "Voor alle goedgekeurde connecties zichtbaar."
-#: ../../include/conversation.php:1001
-#, php-format
-msgid "%s doesn't like this."
-msgstr "%s vindt dit niet leuk."
+#: ../../include/items.php:1185
+msgid "Visible to specific connections."
+msgstr "Voor specifieke connecties zichtbaar."
-#: ../../include/conversation.php:1005
-#, php-format
-msgid "<span %1$s>%2$d people</span> like this."
-msgid_plural "<span %1$s>%2$d people</span> like this."
-msgstr[0] "<span %1$s>%2$d persoon</span> vindt dit leuk."
-msgstr[1] "<span %1$s>%2$d personen</span> vinden dit leuk."
+#: ../../include/items.php:3952 ../../mod/display.php:32
+#: ../../mod/thing.php:76 ../../mod/filestorage.php:26 ../../mod/admin.php:168
+#: ../../mod/admin.php:896 ../../mod/admin.php:1099 ../../mod/viewsrc.php:20
+msgid "Item not found."
+msgstr "Item niet gevonden."
-#: ../../include/conversation.php:1007
-#, php-format
-msgid "<span %1$s>%2$d people</span> don't like this."
-msgid_plural "<span %1$s>%2$d people</span> don't like this."
-msgstr[0] "<span %1$s>%2$d persoon</span> vindt dit niet leuk."
-msgstr[1] "<span %1$s>%2$d personen</span> vinden dit niet leuk."
+#: ../../include/items.php:4019 ../../include/photos.php:15
+#: ../../include/attach.php:116 ../../include/attach.php:163
+#: ../../include/attach.php:226 ../../include/attach.php:240
+#: ../../include/attach.php:280 ../../include/attach.php:294
+#: ../../include/attach.php:318 ../../include/attach.php:511
+#: ../../include/attach.php:585 ../../include/chat.php:116
+#: ../../mod/mood.php:112 ../../mod/register.php:72 ../../mod/mitem.php:106
+#: ../../mod/achievements.php:30 ../../mod/group.php:9 ../../mod/poke.php:128
+#: ../../mod/api.php:26 ../../mod/api.php:31 ../../mod/profiles.php:188
+#: ../../mod/profiles.php:559 ../../mod/authtest.php:13
+#: ../../mod/profile.php:64 ../../mod/profile.php:72 ../../mod/block.php:22
+#: ../../mod/block.php:72 ../../mod/delegate.php:6 ../../mod/sources.php:66
+#: ../../mod/events.php:195 ../../mod/channel.php:90 ../../mod/channel.php:201
+#: ../../mod/channel.php:244 ../../mod/chat.php:90 ../../mod/chat.php:95
+#: ../../mod/regmod.php:17 ../../mod/editpost.php:13 ../../mod/common.php:35
+#: ../../mod/settings.php:554 ../../mod/connections.php:169
+#: ../../mod/manage.php:6 ../../mod/connedit.php:266 ../../mod/mail.php:111
+#: ../../mod/webpages.php:67 ../../mod/bookmarks.php:46
+#: ../../mod/blocks.php:67 ../../mod/blocks.php:75 ../../mod/editblock.php:65
+#: ../../mod/pdledit.php:21 ../../mod/editlayout.php:64
+#: ../../mod/editlayout.php:89 ../../mod/editwebpage.php:64
+#: ../../mod/editwebpage.php:86 ../../mod/editwebpage.php:118
+#: ../../mod/profile_photo.php:263 ../../mod/profile_photo.php:276
+#: ../../mod/like.php:154 ../../mod/thing.php:247 ../../mod/thing.php:264
+#: ../../mod/thing.php:299 ../../mod/fsuggest.php:78
+#: ../../mod/filestorage.php:18 ../../mod/filestorage.php:67
+#: ../../mod/filestorage.php:82 ../../mod/filestorage.php:109
+#: ../../mod/locs.php:71 ../../mod/item.php:191 ../../mod/item.php:199
+#: ../../mod/item.php:975 ../../mod/suggest.php:26 ../../mod/layouts.php:67
+#: ../../mod/layouts.php:74 ../../mod/layouts.php:85 ../../mod/setup.php:207
+#: ../../mod/menu.php:61 ../../mod/invite.php:13 ../../mod/invite.php:104
+#: ../../mod/network.php:12 ../../mod/notifications.php:66
+#: ../../mod/viewconnections.php:22 ../../mod/viewconnections.php:27
+#: ../../mod/viewsrc.php:14 ../../mod/message.php:16
+#: ../../mod/new_channel.php:68 ../../mod/new_channel.php:99
+#: ../../mod/photos.php:68 ../../mod/page.php:28 ../../mod/page.php:78
+#: ../../mod/appman.php:66 ../../mod/service_limits.php:7 ../../index.php:190
+#: ../../index.php:390
+msgid "Permission denied."
+msgstr "Toegang geweigerd"
-#: ../../include/conversation.php:1013
-msgid "and"
-msgstr "en"
+#: ../../include/items.php:4410 ../../mod/group.php:38 ../../mod/group.php:140
+msgid "Collection not found."
+msgstr "Collectie niet gevonden."
-#: ../../include/conversation.php:1016
-#, php-format
-msgid ", and %d other people"
-msgid_plural ", and %d other people"
-msgstr[0] ", en %d ander persoon"
-msgstr[1] ", en %d andere personen"
+#: ../../include/items.php:4425
+msgid "Collection is empty."
+msgstr "Collectie is leeg"
-#: ../../include/conversation.php:1017
+#: ../../include/items.php:4432
#, php-format
-msgid "%s like this."
-msgstr "%s vinden dit leuk."
+msgid "Collection: %s"
+msgstr "Collectie: %s"
-#: ../../include/conversation.php:1017
+#: ../../include/items.php:4443
#, php-format
-msgid "%s don't like this."
-msgstr "%s vinden dit niet leuk."
-
-#: ../../include/conversation.php:1074
-msgid "Visible to <strong>everybody</strong>"
-msgstr "Voor <strong>iedereen</strong> zichtbaar"
-
-#: ../../include/conversation.php:1075 ../../mod/mail.php:167
-#: ../../mod/mail.php:266
-msgid "Please enter a link URL:"
-msgstr "Vul een internetadres/URL in:"
-
-#: ../../include/conversation.php:1076
-msgid "Please enter a video link/URL:"
-msgstr "Vul een videolink/URL in:"
-
-#: ../../include/conversation.php:1077
-msgid "Please enter an audio link/URL:"
-msgstr "Vul een audiolink/URL in:"
-
-#: ../../include/conversation.php:1078
-msgid "Tag term:"
-msgstr "Label:"
-
-#: ../../include/conversation.php:1079 ../../mod/filer.php:49
-msgid "Save to Folder:"
-msgstr "Bewaar in map: "
-
-#: ../../include/conversation.php:1080
-msgid "Where are you right now?"
-msgstr "Waar bevind je je op dit moment?"
-
-#: ../../include/conversation.php:1081 ../../mod/editpost.php:52
-#: ../../mod/mail.php:168 ../../mod/mail.php:267
-msgid "Expires YYYY-MM-DD HH:MM"
-msgstr "Verloopt op DD-MM-YYYY om HH:MM"
-
-#: ../../include/conversation.php:1091 ../../include/page_widgets.php:40
-#: ../../include/ItemObject.php:592 ../../mod/editblock.php:141
-#: ../../mod/editlayout.php:135 ../../mod/editpost.php:140
-#: ../../mod/editwebpage.php:174 ../../mod/photos.php:997
-#: ../../mod/webpages.php:124
-msgid "Preview"
-msgstr "Voorvertoning"
+msgid "Connection: %s"
+msgstr "Connectie: %s"
-#: ../../include/conversation.php:1105 ../../mod/photos.php:976
-#: ../../mod/layouts.php:113
-msgid "Share"
-msgstr "Delen"
+#: ../../include/items.php:4446
+msgid "Connection not found."
+msgstr "Connectie niet gevonden."
-#: ../../include/conversation.php:1107 ../../mod/editwebpage.php:139
-msgid "Page link title"
-msgstr "Titel van paginalink"
+#: ../../include/menu.php:42 ../../include/page_widgets.php:8
+#: ../../include/page_widgets.php:36 ../../include/RedDAV/RedBrowser.php:263
+#: ../../include/ItemObject.php:100 ../../include/apps.php:254
+#: ../../mod/editpost.php:112 ../../mod/settings.php:639
+#: ../../mod/connections.php:381 ../../mod/connections.php:394
+#: ../../mod/connections.php:413 ../../mod/webpages.php:162
+#: ../../mod/blocks.php:132 ../../mod/editblock.php:143
+#: ../../mod/editlayout.php:139 ../../mod/editwebpage.php:174
+#: ../../mod/thing.php:233 ../../mod/layouts.php:167 ../../mod/menu.php:78
+msgid "Edit"
+msgstr "Bewerken"
-#: ../../include/conversation.php:1110
-msgid "Post as"
-msgstr "Bericht plaatsen als"
+#: ../../include/message.php:18
+msgid "No recipient provided."
+msgstr "Geen ontvanger opgegeven."
-#: ../../include/conversation.php:1111 ../../mod/editblock.php:112
-#: ../../mod/editlayout.php:107 ../../mod/editpost.php:113
-#: ../../mod/editwebpage.php:144 ../../mod/mail.php:215 ../../mod/mail.php:329
-msgid "Upload photo"
-msgstr "Foto uploaden"
+#: ../../include/message.php:23
+msgid "[no subject]"
+msgstr "[geen onderwerp]"
-#: ../../include/conversation.php:1112
-msgid "upload photo"
-msgstr "foto uploaden"
+#: ../../include/message.php:45
+msgid "Unable to determine sender."
+msgstr "Afzender kan niet bepaald worden."
-#: ../../include/conversation.php:1113 ../../mod/editblock.php:113
-#: ../../mod/editlayout.php:108 ../../mod/editpost.php:114
-#: ../../mod/editwebpage.php:145 ../../mod/mail.php:216 ../../mod/mail.php:330
-msgid "Attach file"
-msgstr "Bestand toevoegen"
+#: ../../include/message.php:200
+msgid "Stored post could not be verified."
+msgstr "Opgeslagen bericht kon niet worden geverifieerd."
-#: ../../include/conversation.php:1114
-msgid "attach file"
-msgstr "bestand toevoegen"
+#: ../../include/network.php:590
+msgid "view full size"
+msgstr "volledige grootte tonen"
-#: ../../include/conversation.php:1115 ../../mod/editblock.php:114
-#: ../../mod/editlayout.php:109 ../../mod/editpost.php:115
-#: ../../mod/editwebpage.php:146 ../../mod/mail.php:217 ../../mod/mail.php:331
-msgid "Insert web link"
-msgstr "Weblink invoegen"
+#: ../../include/permissions.php:26
+msgid "Can view my normal stream and posts"
+msgstr "Kan mijn normale kanaalstream en berichten bekijken"
-#: ../../include/conversation.php:1116
-msgid "web link"
-msgstr "Weblink"
+#: ../../include/permissions.php:27
+msgid "Can view my default channel profile"
+msgstr "Kan mijn standaard kanaalprofiel bekijken"
-#: ../../include/conversation.php:1117
-msgid "Insert video link"
-msgstr "Videolink invoegen"
+#: ../../include/permissions.php:28
+msgid "Can view my photo albums"
+msgstr "Kan mijn fotoalbums bekijken"
-#: ../../include/conversation.php:1118
-msgid "video link"
-msgstr "videolink"
+#: ../../include/permissions.php:29
+msgid "Can view my connections"
+msgstr "Kan een lijst met mijn connecties bekijken"
-#: ../../include/conversation.php:1119
-msgid "Insert audio link"
-msgstr "Audiolink invoegen"
+#: ../../include/permissions.php:30
+msgid "Can view my file storage"
+msgstr "Kan mijn bestanden bekijken"
-#: ../../include/conversation.php:1120
-msgid "audio link"
-msgstr "audiolink"
+#: ../../include/permissions.php:31
+msgid "Can view my webpages"
+msgstr "Kan mijn pagina's bekijken"
-#: ../../include/conversation.php:1121 ../../mod/editblock.php:118
-#: ../../mod/editlayout.php:113 ../../mod/editpost.php:119
-#: ../../mod/editwebpage.php:150
-msgid "Set your location"
-msgstr "Locatie instellen"
+#: ../../include/permissions.php:34
+msgid "Can send me their channel stream and posts"
+msgstr "Kan mij de inhoud van hun kanaal en berichten sturen"
-#: ../../include/conversation.php:1122
-msgid "set location"
-msgstr "locatie instellen"
+#: ../../include/permissions.php:35
+msgid "Can post on my channel page (\"wall\")"
+msgstr "Kan een bericht in mijn kanaal plaatsen"
-#: ../../include/conversation.php:1123 ../../mod/editblock.php:119
-#: ../../mod/editlayout.php:114 ../../mod/editpost.php:120
-#: ../../mod/editwebpage.php:151
-msgid "Clear browser location"
-msgstr "Locatie van webbrowser wissen"
+#: ../../include/permissions.php:36
+msgid "Can comment on or like my posts"
+msgstr "Kan op mijn berichten reageren of deze (niet) leuk vinden"
-#: ../../include/conversation.php:1124
-msgid "clear location"
-msgstr "locatie wissen"
+#: ../../include/permissions.php:37
+msgid "Can send me private mail messages"
+msgstr "Kan mij privéberichten sturen"
-#: ../../include/conversation.php:1126 ../../mod/editblock.php:132
-#: ../../mod/editlayout.php:126 ../../mod/editpost.php:132
-#: ../../mod/editwebpage.php:167
-msgid "Set title"
-msgstr "Titel instellen"
+#: ../../include/permissions.php:38
+msgid "Can post photos to my photo albums"
+msgstr "Kan foto's aan mijn fotoalbums toevoegen"
-#: ../../include/conversation.php:1129 ../../mod/editblock.php:135
-#: ../../mod/editlayout.php:129 ../../mod/editpost.php:134
-#: ../../mod/editwebpage.php:169
-msgid "Categories (comma-separated list)"
-msgstr "Categorieën (door komma's gescheiden lijst)"
+#: ../../include/permissions.php:39
+msgid "Can like/dislike stuff"
+msgstr "Kan dingen leuk of niet leuk vinden"
-#: ../../include/conversation.php:1131 ../../mod/editblock.php:121
-#: ../../mod/editlayout.php:116 ../../mod/editpost.php:122
-#: ../../mod/editwebpage.php:153
-msgid "Permission settings"
-msgstr "Privacy-rechten"
+#: ../../include/permissions.php:39
+msgid "Profiles and things other than posts/comments"
+msgstr "Profielen en dingen, buiten berichten en reacties"
-#: ../../include/conversation.php:1132
-msgid "permissions"
-msgstr "privacy-rechten"
+#: ../../include/permissions.php:41
+msgid "Can forward to all my channel contacts via post @mentions"
+msgstr "Kan naar al mijn kanaalconnecties berichten doorsturen met behulp van @vermeldingen+"
-#: ../../include/conversation.php:1139 ../../mod/editblock.php:129
-#: ../../mod/editlayout.php:123 ../../mod/editpost.php:129
-#: ../../mod/editwebpage.php:162
-msgid "Public post"
-msgstr "Openbaar bericht"
+#: ../../include/permissions.php:41
+msgid "Advanced - useful for creating group forum channels"
+msgstr "Geavanceerd - nuttig voor groepforums"
-#: ../../include/conversation.php:1141 ../../mod/editblock.php:136
-#: ../../mod/editlayout.php:130 ../../mod/editpost.php:135
-#: ../../mod/editwebpage.php:170
-msgid "Example: bob@example.com, mary@example.com"
-msgstr "Voorbeeld: bob@voorbeeld.nl, mary@voorbeeld.be"
+#: ../../include/permissions.php:42
+msgid "Can chat with me (when available)"
+msgstr "Kan met mij chatten (wanneer beschikbaar)"
-#: ../../include/conversation.php:1154 ../../mod/editblock.php:146
-#: ../../mod/editlayout.php:140 ../../mod/editpost.php:146
-#: ../../mod/editwebpage.php:179 ../../mod/mail.php:222 ../../mod/mail.php:336
-msgid "Set expiration date"
-msgstr "Verloopdatum instellen"
+#: ../../include/permissions.php:43
+msgid "Can write to my file storage"
+msgstr "Kan bestanden aan mijn bestandsopslag toevoegen"
-#: ../../include/conversation.php:1156 ../../include/ItemObject.php:595
-#: ../../mod/editpost.php:148 ../../mod/mail.php:224 ../../mod/mail.php:338
-msgid "Encrypt text"
-msgstr "Tekst versleutelen"
+#: ../../include/permissions.php:44
+msgid "Can edit my webpages"
+msgstr "Kan mijn pagina's bewerken"
-#: ../../include/conversation.php:1158 ../../mod/editpost.php:150
-msgid "OK"
-msgstr "OK"
+#: ../../include/permissions.php:46
+msgid "Can source my public posts in derived channels"
+msgstr "Kan mijn openbare berichten als bron voor andere kanalen gebruiken"
-#: ../../include/conversation.php:1159 ../../mod/settings.php:516
-#: ../../mod/settings.php:542 ../../mod/editpost.php:151
-#: ../../mod/fbrowser.php:82 ../../mod/fbrowser.php:117 ../../mod/tagrm.php:11
-#: ../../mod/tagrm.php:94
-msgid "Cancel"
-msgstr "Annuleren"
+#: ../../include/permissions.php:46
+msgid "Somewhat advanced - very useful in open communities"
+msgstr "Enigszins geavanceerd (erg nuttig voor kanalen van forums/groepen)"
-#: ../../include/conversation.php:1401
-msgid "Discover"
-msgstr "Ontdekken"
+#: ../../include/permissions.php:48
+msgid "Can administer my channel resources"
+msgstr "Kan mijn kanaal beheren"
-#: ../../include/conversation.php:1404
-msgid "Imported public streams"
-msgstr "Openbare streams importeren"
+#: ../../include/permissions.php:48
+msgid ""
+"Extremely advanced. Leave this alone unless you know what you are doing"
+msgstr "Zeer geavanceerd. Laat dit met rust, behalve als je weet wat je doet."
-#: ../../include/conversation.php:1409
-msgid "Commented Order"
-msgstr "Nieuwe reacties bovenaan"
+#: ../../include/permissions.php:810
+msgid "Social Networking"
+msgstr "Sociaal netwerk"
-#: ../../include/conversation.php:1412
-msgid "Sort by Comment Date"
-msgstr "Berichten met nieuwe reacties bovenaan"
+#: ../../include/permissions.php:810 ../../include/permissions.php:811
+#: ../../include/permissions.php:812
+msgid "Mostly Public"
+msgstr "Vrijwel alles openbaar"
-#: ../../include/conversation.php:1416
-msgid "Posted Order"
-msgstr "Nieuwe berichten bovenaan"
+#: ../../include/permissions.php:810 ../../include/permissions.php:811
+#: ../../include/permissions.php:812
+msgid "Restricted"
+msgstr "Beperkt zichtbaar"
-#: ../../include/conversation.php:1419
-msgid "Sort by Post Date"
-msgstr "Nieuwe berichten bovenaan"
+#: ../../include/permissions.php:810 ../../include/permissions.php:811
+msgid "Private"
+msgstr "Verborgen kanaal"
-#: ../../include/conversation.php:1424 ../../include/widgets.php:82
-msgid "Personal"
-msgstr "Persoonlijk"
+#: ../../include/permissions.php:811
+msgid "Community Forum"
+msgstr "Groepsforum"
-#: ../../include/conversation.php:1427
-msgid "Posts that mention or involve you"
-msgstr "Alleen berichten die jou vermelden of waar je op een andere manier bij betrokken bent"
+#: ../../include/permissions.php:812
+msgid "Feed Republish"
+msgstr "Feed herpubliceren"
-#: ../../include/conversation.php:1433 ../../mod/connections.php:211
-#: ../../mod/connections.php:224 ../../mod/menu.php:61
-msgid "New"
-msgstr "Nieuw"
+#: ../../include/permissions.php:813
+msgid "Special Purpose"
+msgstr "Speciaal doel"
-#: ../../include/conversation.php:1436
-msgid "Activity Stream - by date"
-msgstr "Activiteitenstroom - volgens datum"
+#: ../../include/permissions.php:813
+msgid "Celebrity/Soapbox"
+msgstr "Beroemdheid/alleen volgen"
-#: ../../include/conversation.php:1442
-msgid "Starred"
-msgstr "Met ster"
+#: ../../include/permissions.php:813
+msgid "Group Repository"
+msgstr "Groepsopslag"
-#: ../../include/conversation.php:1445
-msgid "Favourite Posts"
-msgstr "Favoriete berichten"
+#: ../../include/permissions.php:814 ../../include/profile_selectors.php:6
+#: ../../include/profile_selectors.php:23
+#: ../../include/profile_selectors.php:61
+#: ../../include/profile_selectors.php:97
+msgid "Other"
+msgstr "Anders"
-#: ../../include/conversation.php:1452
-msgid "Spam"
-msgstr "Spam"
+#: ../../include/permissions.php:814
+msgid "Custom/Expert Mode"
+msgstr "Expertmodus/handmatig aanpassen"
-#: ../../include/conversation.php:1455
-msgid "Posts flagged as SPAM"
-msgstr "Berichten gemarkeerd als SPAM"
+#: ../../include/notify.php:23
+msgid "created a new post"
+msgstr "maakte een nieuw bericht aan"
-#: ../../include/conversation.php:1488 ../../mod/admin.php:892
-msgid "Channel"
-msgstr "Kanaal"
+#: ../../include/notify.php:24
+#, php-format
+msgid "commented on %s's post"
+msgstr "gaf een reactie op een bericht van %s"
-#: ../../include/conversation.php:1491
-msgid "Status Messages and Posts"
-msgstr "Berichten in dit kanaal"
+#: ../../include/taxonomy.php:210 ../../include/taxonomy.php:229
+msgid "Tags"
+msgstr "Tags"
-#: ../../include/conversation.php:1500
-msgid "About"
-msgstr "Over"
+#: ../../include/taxonomy.php:250 ../../include/contact_widgets.php:92
+#: ../../include/widgets.php:35
+msgid "Categories"
+msgstr "Categorieën"
-#: ../../include/conversation.php:1503
-msgid "Profile Details"
-msgstr "Profiel"
+#: ../../include/taxonomy.php:269
+msgid "Keywords"
+msgstr "Trefwoorden"
-#: ../../include/conversation.php:1509 ../../include/nav.php:84
-#: ../../include/apps.php:134 ../../mod/fbrowser.php:25
-msgid "Photos"
-msgstr "Foto's"
+#: ../../include/taxonomy.php:294
+msgid "have"
+msgstr "heb"
-#: ../../include/conversation.php:1512 ../../include/photos.php:313
-msgid "Photo Albums"
-msgstr "Fotoalbums"
+#: ../../include/taxonomy.php:294
+msgid "has"
+msgstr "heeft"
-#: ../../include/conversation.php:1518 ../../include/nav.php:85
-#: ../../include/reddav.php:1280 ../../include/apps.php:130
-#: ../../mod/fbrowser.php:114
-msgid "Files"
-msgstr "Bestanden"
+#: ../../include/taxonomy.php:295
+msgid "want"
+msgstr "wil"
-#: ../../include/conversation.php:1521
-msgid "Files and Storage"
-msgstr "Bestanden en opslagruimte"
+#: ../../include/taxonomy.php:295
+msgid "wants"
+msgstr "wil"
-#: ../../include/conversation.php:1530 ../../include/conversation.php:1533
-msgid "Chatrooms"
-msgstr "Chatkanalen"
+#: ../../include/taxonomy.php:296 ../../include/ItemObject.php:221
+msgid "like"
+msgstr "vind dit leuk"
-#: ../../include/conversation.php:1540 ../../include/nav.php:93
-#: ../../include/apps.php:124
-msgid "Bookmarks"
-msgstr "Bladwijzers"
+#: ../../include/taxonomy.php:296
+msgid "likes"
+msgstr "vindt dit leuk"
-#: ../../include/conversation.php:1543
-msgid "Saved Bookmarks"
-msgstr "Opgeslagen bladwijzers"
+#: ../../include/taxonomy.php:297 ../../include/ItemObject.php:222
+msgid "dislike"
+msgstr "vind dit niet leuk"
-#: ../../include/conversation.php:1551 ../../include/nav.php:95
-#: ../../include/apps.php:131 ../../mod/webpages.php:79
-msgid "Webpages"
-msgstr "Webpagina's"
+#: ../../include/taxonomy.php:297
+msgid "dislikes"
+msgstr "vindt dit niet leuk"
-#: ../../include/conversation.php:1554
-msgid "Manage Webpages"
-msgstr "Webpagina's beheren"
+#: ../../include/taxonomy.php:380 ../../include/identity.php:1151
+#: ../../include/ItemObject.php:146 ../../mod/photos.php:1024
+msgctxt "noun"
+msgid "Like"
+msgid_plural "Likes"
+msgstr[0] "vindt dit leuk"
+msgstr[1] "vinden dit leuk"
#: ../../include/page_widgets.php:6
msgid "New Page"
msgstr "Nieuwe pagina"
-#: ../../include/page_widgets.php:8 ../../include/page_widgets.php:36
-#: ../../include/reddav.php:1289 ../../include/apps.php:240
-#: ../../include/menu.php:42 ../../include/ItemObject.php:96
-#: ../../mod/settings.php:577 ../../mod/blocks.php:94
-#: ../../mod/connections.php:393 ../../mod/editblock.php:111
-#: ../../mod/editlayout.php:106 ../../mod/editpost.php:112
-#: ../../mod/editwebpage.php:143 ../../mod/thing.php:235
-#: ../../mod/layouts.php:112 ../../mod/menu.php:59 ../../mod/webpages.php:120
-msgid "Edit"
-msgstr "Bewerken"
-
-#: ../../include/page_widgets.php:39 ../../mod/blocks.php:97
-#: ../../mod/layouts.php:116 ../../mod/webpages.php:123
+#: ../../include/page_widgets.php:39 ../../mod/webpages.php:165
+#: ../../mod/blocks.php:135 ../../mod/layouts.php:171
msgid "View"
msgstr "Weergeven"
-#: ../../include/page_widgets.php:41 ../../mod/webpages.php:125
+#: ../../include/page_widgets.php:40 ../../include/conversation.php:1102
+#: ../../include/ItemObject.php:638 ../../mod/webpages.php:166
+#: ../../mod/photos.php:995
+msgid "Preview"
+msgstr "Voorvertoning"
+
+#: ../../include/page_widgets.php:41 ../../mod/webpages.php:167
msgid "Actions"
msgstr "Acties"
-#: ../../include/page_widgets.php:42 ../../mod/webpages.php:126
+#: ../../include/page_widgets.php:42 ../../mod/webpages.php:168
msgid "Page Link"
msgstr "Paginalink"
-#: ../../include/page_widgets.php:43 ../../mod/webpages.php:127
+#: ../../include/page_widgets.php:43 ../../mod/webpages.php:169
msgid "Title"
msgstr "Titel"
-#: ../../include/page_widgets.php:44 ../../mod/webpages.php:128
+#: ../../include/page_widgets.php:44 ../../mod/webpages.php:170
msgid "Created"
msgstr "Aangemaakt"
-#: ../../include/page_widgets.php:45 ../../mod/webpages.php:129
+#: ../../include/page_widgets.php:45 ../../mod/webpages.php:171
msgid "Edited"
msgstr "Bewerkt"
-#: ../../include/security.php:301
-msgid ""
-"The form security token was not correct. This probably happened because the "
-"form has been opened for too long (>3 hours) before submitting it."
-msgstr "De beveiligings-token van het tekstvak was ongeldig. Dit is mogelijk het gevolg van dat er te lang (meer dan 3 uur) gewacht is om de tekst op te slaan. "
-
-#: ../../include/account.php:23
-msgid "Not a valid email address"
-msgstr "Geen geldig e-mailadres"
-
-#: ../../include/account.php:25
-msgid "Your email domain is not among those allowed on this site"
-msgstr "Jouw e-maildomein is op deze Red Matrix-hub niet toegestaan"
-
-#: ../../include/account.php:31
-msgid "Your email address is already registered at this site."
-msgstr "Jouw e-mailadres is al op deze Red Matrix-hub geregistreerd ."
-
-#: ../../include/account.php:64
-msgid "An invitation is required."
-msgstr "Een uitnodiging is vereist"
-
-#: ../../include/account.php:68
-msgid "Invitation could not be verified."
-msgstr "Uitnodiging kon niet geverifieerd worden"
-
-#: ../../include/account.php:119
-msgid "Please enter the required information."
-msgstr "Vul de vereiste informatie in."
-
-#: ../../include/account.php:187
-msgid "Failed to store account information."
-msgstr "Account-informatie kon niet opgeslagen worden."
-
-#: ../../include/account.php:245
-#, php-format
-msgid "Registration confirmation for %s"
-msgstr "Registratiebevestiging voor %s"
-
-#: ../../include/account.php:312
-#, php-format
-msgid "Registration request at %s"
-msgstr "Registratieverzoek op %s"
-
-#: ../../include/account.php:314 ../../include/account.php:341
-#: ../../include/account.php:398
-msgid "Administrator"
-msgstr "Beheerder"
-
-#: ../../include/account.php:336
-msgid "your registration password"
-msgstr "jouw registratiewachtwoord"
-
-#: ../../include/account.php:339 ../../include/account.php:396
-#, php-format
-msgid "Registration details for %s"
-msgstr "Registratiedetails voor %s"
-
-#: ../../include/account.php:405 ../../include/account.php:480
-msgid "Account approved."
-msgstr "Account goedgekeurd"
-
-#: ../../include/account.php:439
-#, php-format
-msgid "Registration revoked for %s"
-msgstr "Registratie ingetrokken voor %s"
+#: ../../include/oembed.php:171
+msgid "Embedded content"
+msgstr "Ingesloten inhoud"
-#: ../../include/photos.php:15 ../../include/attach.php:119
-#: ../../include/attach.php:166 ../../include/attach.php:229
-#: ../../include/attach.php:243 ../../include/attach.php:283
-#: ../../include/attach.php:297 ../../include/attach.php:322
-#: ../../include/attach.php:513 ../../include/attach.php:585
-#: ../../include/chat.php:116 ../../include/items.php:3676
-#: ../../mod/mood.php:112 ../../mod/mitem.php:73 ../../mod/achievements.php:27
-#: ../../mod/settings.php:492 ../../mod/poke.php:128 ../../mod/api.php:26
-#: ../../mod/api.php:31 ../../mod/authtest.php:13 ../../mod/profile.php:64
-#: ../../mod/profile.php:72 ../../mod/block.php:22 ../../mod/block.php:72
-#: ../../mod/profile_photo.php:263 ../../mod/profile_photo.php:276
-#: ../../mod/blocks.php:29 ../../mod/blocks.php:44 ../../mod/profiles.php:152
-#: ../../mod/profiles.php:462 ../../mod/bookmarks.php:46
-#: ../../mod/channel.php:89 ../../mod/channel.php:193
-#: ../../mod/channel.php:236 ../../mod/chat.php:90 ../../mod/chat.php:95
-#: ../../mod/register.php:68 ../../mod/regmod.php:18 ../../mod/common.php:35
-#: ../../mod/network.php:12 ../../mod/connections.php:169
-#: ../../mod/connedit.php:221 ../../mod/delegate.php:6 ../../mod/page.php:30
-#: ../../mod/page.php:80 ../../mod/setup.php:203 ../../mod/editblock.php:34
-#: ../../mod/pdledit.php:21 ../../mod/editlayout.php:48
-#: ../../mod/editpost.php:13 ../../mod/editwebpage.php:44
-#: ../../mod/editwebpage.php:83 ../../mod/photos.php:68
-#: ../../mod/photos.php:526 ../../mod/sources.php:66 ../../mod/events.php:141
-#: ../../mod/filestorage.php:10 ../../mod/filestorage.php:59
-#: ../../mod/filestorage.php:75 ../../mod/filestorage.php:98
-#: ../../mod/fsuggest.php:78 ../../mod/suggest.php:26 ../../mod/group.php:9
-#: ../../mod/thing.php:249 ../../mod/thing.php:266 ../../mod/thing.php:301
-#: ../../mod/invite.php:13 ../../mod/invite.php:104 ../../mod/item.php:179
-#: ../../mod/item.php:187 ../../mod/item.php:908 ../../mod/layouts.php:27
-#: ../../mod/layouts.php:39 ../../mod/viewconnections.php:22
-#: ../../mod/viewconnections.php:27 ../../mod/viewsrc.php:12
-#: ../../mod/mail.php:108 ../../mod/manage.php:6 ../../mod/menu.php:44
-#: ../../mod/webpages.php:40 ../../mod/message.php:16
-#: ../../mod/new_channel.php:66 ../../mod/new_channel.php:97
-#: ../../mod/notifications.php:66 ../../mod/appman.php:66 ../../index.php:186
-#: ../../index.php:361
-msgid "Permission denied."
-msgstr "Toegang geweigerd"
+#: ../../include/oembed.php:180
+msgid "Embedding disabled"
+msgstr "Insluiten uitgeschakeld"
-#: ../../include/photos.php:89
+#: ../../include/photos.php:105
#, php-format
msgid "Image exceeds website size limit of %lu bytes"
msgstr "Afbeelding is groter dan op deze hub toegestane limiet van %lu bytes"
-#: ../../include/photos.php:96
+#: ../../include/photos.php:112
msgid "Image file is empty."
msgstr "Afbeeldingsbestand is leeg"
-#: ../../include/photos.php:123 ../../mod/profile_photo.php:216
+#: ../../include/photos.php:141 ../../mod/profile_photo.php:216
msgid "Unable to process image"
msgstr "Afbeelding kan niet verwerkt worden"
-#: ../../include/photos.php:186
+#: ../../include/photos.php:213
msgid "Photo storage failed."
msgstr "Foto kan niet worden opgeslagen"
-#: ../../include/photos.php:317 ../../mod/photos.php:691
-#: ../../mod/photos.php:1193
+#: ../../include/photos.php:341 ../../include/conversation.php:1533
+msgid "Photo Albums"
+msgstr "Fotoalbums"
+
+#: ../../include/photos.php:345
msgid "Upload New Photos"
msgstr "Nieuwe foto's uploaden"
-#: ../../include/acl_selectors.php:240
-msgid "Visible to everybody"
-msgstr "Voor iedereen zichtbaar"
-
-#: ../../include/acl_selectors.php:241
-msgid "Show"
-msgstr "Tonen"
-
-#: ../../include/acl_selectors.php:242
-msgid "Don't show"
-msgstr "Niet tonen"
-
-#: ../../include/acl_selectors.php:248 ../../mod/chat.php:209
-#: ../../mod/photos.php:604 ../../mod/photos.php:952
-#: ../../mod/filestorage.php:128
-msgid "Permissions"
-msgstr "Privacy-rechten"
-
-#: ../../include/acl_selectors.php:249 ../../include/ItemObject.php:289
-msgid "Close"
-msgstr "Sluiten"
-
#: ../../include/activities.php:39
msgid " and "
msgstr " en "
@@ -747,60 +451,82 @@ msgstr " en "
msgid "public profile"
msgstr "openbaar profiel"
-#: ../../include/activities.php:52
+#: ../../include/activities.php:56
#, php-format
msgid "%1$s changed %2$s to &ldquo;%3$s&rdquo;"
msgstr "%1$s veranderde %2$s naar &ldquo;%3$s&rdquo;"
-#: ../../include/activities.php:53
+#: ../../include/activities.php:57
#, php-format
msgid "Visit %1$s's %2$s"
msgstr "Bezoek het %2$s van %1$s"
-#: ../../include/activities.php:56
+#: ../../include/activities.php:60
#, php-format
msgid "%1$s has an updated %2$s, changing %3$s."
msgstr "%1$s heeft een aangepaste %2$s, %3$s veranderd."
-#: ../../include/api.php:1016
-msgid "Public Timeline"
-msgstr "Openbare tijdlijn"
+#: ../../include/bb2diaspora.php:366
+msgid "Attachments:"
+msgstr "Bijlagen:"
+
+#: ../../include/bb2diaspora.php:445 ../../include/event.php:11
+msgid "l F d, Y \\@ g:i A"
+msgstr "l d F Y \\@ G:i"
+
+#: ../../include/bb2diaspora.php:447
+msgid "Redmatrix event notification:"
+msgstr "Notificatie RedMatrix-gebeurtenis:"
+
+#: ../../include/bb2diaspora.php:451 ../../include/event.php:20
+msgid "Starts:"
+msgstr "Start:"
+
+#: ../../include/bb2diaspora.php:459 ../../include/event.php:30
+msgid "Finishes:"
+msgstr "Einde:"
-#: ../../include/attach.php:224 ../../include/attach.php:278
+#: ../../include/bb2diaspora.php:467 ../../include/identity.php:894
+#: ../../include/event.php:40 ../../mod/events.php:590
+#: ../../mod/directory.php:199
+msgid "Location:"
+msgstr "Plaats:"
+
+#: ../../include/attach.php:221 ../../include/attach.php:275
msgid "Item was not found."
msgstr "Item niet gevonden"
-#: ../../include/attach.php:335
+#: ../../include/attach.php:331
msgid "No source file."
msgstr "Geen bronbestand."
-#: ../../include/attach.php:352
+#: ../../include/attach.php:348
msgid "Cannot locate file to replace"
msgstr "Kan het te vervangen bestand niet vinden"
-#: ../../include/attach.php:370
+#: ../../include/attach.php:366
msgid "Cannot locate file to revise/update"
msgstr "Kan het bestand wat aangepast moet worden niet vinden"
-#: ../../include/attach.php:381
+#: ../../include/attach.php:377
#, php-format
msgid "File exceeds size limit of %d"
msgstr "Bestand is groter dan de toegelaten %d"
-#: ../../include/attach.php:393
+#: ../../include/attach.php:389
#, php-format
msgid "You have reached your limit of %1$.0f Mbytes attachment storage."
msgstr "Je hebt jouw limiet van %1$.0f MB opslagruimte voor bijlagen bereikt."
-#: ../../include/attach.php:475
+#: ../../include/attach.php:472
msgid "File upload failed. Possible system limit or action terminated."
msgstr "Uploaden van bestand mislukt. Mogelijk systeemlimiet bereikt of actie afgebroken."
-#: ../../include/attach.php:487
+#: ../../include/attach.php:484
msgid "Stored file could not be verified. Upload failed."
msgstr "Opgeslagen bestand kon niet worden geverifieerd. Uploaden mislukt."
-#: ../../include/attach.php:528 ../../include/attach.php:545
+#: ../../include/attach.php:526 ../../include/attach.php:543
msgid "Path not available."
msgstr "Pad niet beschikbaar."
@@ -824,921 +550,6 @@ msgstr "directory aanmaken (mkdir) mislukt."
msgid "database storage failed."
msgstr "opslag in database mislukt."
-#: ../../include/plugin.php:502 ../../include/plugin.php:504
-msgid "Click here to upgrade."
-msgstr "Klik hier om te upgraden."
-
-#: ../../include/plugin.php:510
-msgid "This action exceeds the limits set by your subscription plan."
-msgstr "Deze handeling overschrijdt de beperkingen die voor jouw abonnement gelden."
-
-#: ../../include/plugin.php:515
-msgid "This action is not available under your subscription plan."
-msgstr "Deze handeling is niet mogelijk met jouw abonnement."
-
-#: ../../include/bb2diaspora.php:446 ../../include/event.php:11
-msgid "l F d, Y \\@ g:i A"
-msgstr "l d F Y \\@ G:i"
-
-#: ../../include/bb2diaspora.php:452 ../../include/event.php:20
-msgid "Starts:"
-msgstr "Start:"
-
-#: ../../include/bb2diaspora.php:460 ../../include/event.php:30
-msgid "Finishes:"
-msgstr "Einde:"
-
-#: ../../include/bb2diaspora.php:468 ../../include/event.php:40
-#: ../../include/identity.php:726 ../../mod/directory.php:156
-#: ../../mod/dirprofile.php:105 ../../mod/events.php:485
-msgid "Location:"
-msgstr "Plaats:"
-
-#: ../../include/nav.php:77 ../../include/nav.php:101 ../../boot.php:1466
-msgid "Logout"
-msgstr "Uitloggen"
-
-#: ../../include/nav.php:77 ../../include/nav.php:101
-msgid "End this session"
-msgstr "Beëindig deze sessie"
-
-#: ../../include/nav.php:80 ../../include/nav.php:135
-msgid "Home"
-msgstr "Home"
-
-#: ../../include/nav.php:80
-msgid "Your posts and conversations"
-msgstr "Jouw berichten en conversaties"
-
-#: ../../include/nav.php:81
-msgid "Your profile page"
-msgstr "Jouw profielpagina"
-
-#: ../../include/nav.php:83
-msgid "Edit Profiles"
-msgstr "Bewerk profielen"
-
-#: ../../include/nav.php:83
-msgid "Manage/Edit profiles"
-msgstr "Beheer/wijzig profielen"
-
-#: ../../include/nav.php:84
-msgid "Your photos"
-msgstr "Jouw foto's"
-
-#: ../../include/nav.php:85
-msgid "Your files"
-msgstr "Jouw bestanden"
-
-#: ../../include/nav.php:90 ../../include/apps.php:141
-msgid "Chat"
-msgstr "Chatten"
-
-#: ../../include/nav.php:90
-msgid "Your chatrooms"
-msgstr "Jouw chatkanalen"
-
-#: ../../include/nav.php:93
-msgid "Your bookmarks"
-msgstr "Jouw bladwijzers"
-
-#: ../../include/nav.php:95
-msgid "Your webpages"
-msgstr "Jouw webpagina's"
-
-#: ../../include/nav.php:99 ../../include/apps.php:126 ../../boot.php:1467
-msgid "Login"
-msgstr "Inloggen"
-
-#: ../../include/nav.php:99
-msgid "Sign in"
-msgstr "Inloggen"
-
-#: ../../include/nav.php:116
-#, php-format
-msgid "%s - click to logout"
-msgstr "%s - klik om uit te loggen"
-
-#: ../../include/nav.php:121
-msgid "Click to authenticate to your home hub"
-msgstr "Klik om jezelf te authenticeren via jouw eigen Red Matrix-hub"
-
-#: ../../include/nav.php:135
-msgid "Home Page"
-msgstr "Homepage"
-
-#: ../../include/nav.php:139 ../../mod/register.php:206 ../../boot.php:1443
-msgid "Register"
-msgstr "Registreren "
-
-#: ../../include/nav.php:139
-msgid "Create an account"
-msgstr "Maak een account aan"
-
-#: ../../include/nav.php:144 ../../include/apps.php:137 ../../mod/help.php:60
-#: ../../mod/help.php:65
-msgid "Help"
-msgstr "Hulp"
-
-#: ../../include/nav.php:144
-msgid "Help and documentation"
-msgstr "Hulp en documentatie"
-
-#: ../../include/nav.php:147 ../../include/widgets.php:79
-#: ../../mod/apps.php:33
-msgid "Apps"
-msgstr "Apps"
-
-#: ../../include/nav.php:147
-msgid "Applications, utilities, links, games"
-msgstr "Apps"
-
-#: ../../include/nav.php:149 ../../include/text.php:813
-#: ../../include/text.php:827 ../../include/apps.php:142
-#: ../../mod/search.php:29
-msgid "Search"
-msgstr "Zoeken"
-
-#: ../../include/nav.php:149
-msgid "Search site content"
-msgstr "Inhoud van deze Red Matrix-hub doorzoeken"
-
-#: ../../include/nav.php:152 ../../include/apps.php:136
-#: ../../mod/directory.php:210
-msgid "Directory"
-msgstr "Gids"
-
-#: ../../include/nav.php:152
-msgid "Channel Locator"
-msgstr "Kanalengids"
-
-#: ../../include/nav.php:163 ../../include/apps.php:128
-msgid "Matrix"
-msgstr "Matrix"
-
-#: ../../include/nav.php:163
-msgid "Your matrix"
-msgstr "Jouw matrix"
-
-#: ../../include/nav.php:164
-msgid "Mark all matrix notifications seen"
-msgstr "Markeer alle matrixnotificaties als bekeken"
-
-#: ../../include/nav.php:166 ../../include/apps.php:132
-msgid "Channel Home"
-msgstr "Tijdlijn kanaal"
-
-#: ../../include/nav.php:166
-msgid "Channel home"
-msgstr "Tijdlijn kanaal"
-
-#: ../../include/nav.php:167
-msgid "Mark all channel notifications seen"
-msgstr "Alle kanaalnotificaties als gelezen markeren"
-
-#: ../../include/nav.php:170 ../../mod/connections.php:386
-msgid "Connections"
-msgstr "Connecties"
-
-#: ../../include/nav.php:173
-msgid "Notices"
-msgstr "Notificaties"
-
-#: ../../include/nav.php:173
-msgid "Notifications"
-msgstr "Notificaties"
-
-#: ../../include/nav.php:174
-msgid "See all notifications"
-msgstr "Alle notificaties weergeven"
-
-#: ../../include/nav.php:175 ../../mod/notifications.php:99
-msgid "Mark all system notifications seen"
-msgstr "Markeer alle systeemnotificaties als bekeken"
-
-#: ../../include/nav.php:177 ../../include/apps.php:138
-msgid "Mail"
-msgstr "Privéberichten"
-
-#: ../../include/nav.php:177
-msgid "Private mail"
-msgstr "Privéberichten"
-
-#: ../../include/nav.php:178
-msgid "See all private messages"
-msgstr "Alle privéberichten weergeven"
-
-#: ../../include/nav.php:179
-msgid "Mark all private messages seen"
-msgstr "Markeer alle privéberichten als bekeken"
-
-#: ../../include/nav.php:180
-msgid "Inbox"
-msgstr "Postvak IN"
-
-#: ../../include/nav.php:181
-msgid "Outbox"
-msgstr "Postvak UIT"
-
-#: ../../include/nav.php:182 ../../include/widgets.php:536
-msgid "New Message"
-msgstr "Nieuw bericht"
-
-#: ../../include/nav.php:185 ../../include/apps.php:135
-#: ../../mod/events.php:377
-msgid "Events"
-msgstr "Gebeurtenissen"
-
-#: ../../include/nav.php:185
-msgid "Event Calendar"
-msgstr "Agenda"
-
-#: ../../include/nav.php:186
-msgid "See all events"
-msgstr "Alle gebeurtenissen weergeven"
-
-#: ../../include/nav.php:187
-msgid "Mark all events seen"
-msgstr "Markeer alle gebeurtenissen als bekeken"
-
-#: ../../include/nav.php:189 ../../include/apps.php:127
-msgid "Channel Select"
-msgstr "Kanaalkiezer"
-
-#: ../../include/nav.php:189
-msgid "Manage Your Channels"
-msgstr "Beheer je kanalen"
-
-#: ../../include/nav.php:191 ../../include/apps.php:129
-#: ../../include/widgets.php:514 ../../mod/admin.php:978
-#: ../../mod/admin.php:1183
-msgid "Settings"
-msgstr "Instellingen"
-
-#: ../../include/nav.php:191
-msgid "Account/Channel Settings"
-msgstr "Account-/kanaal-instellingen"
-
-#: ../../include/nav.php:199 ../../mod/admin.php:117
-msgid "Admin"
-msgstr "Beheer"
-
-#: ../../include/nav.php:199
-msgid "Site Setup and Configuration"
-msgstr "Hub instellen en beheren"
-
-#: ../../include/nav.php:224
-msgid "Nothing new here"
-msgstr "Niets nieuw hier"
-
-#: ../../include/nav.php:228
-msgid "Please wait..."
-msgstr "Wachten aub..."
-
-#: ../../include/bookmarks.php:42
-#, php-format
-msgid "%1$s's bookmarks"
-msgstr "Bladwijzers van %1$s"
-
-#: ../../include/chat.php:10
-msgid "Missing room name"
-msgstr "Naam chatkanaal ontbreekt"
-
-#: ../../include/chat.php:19
-msgid "Duplicate room name"
-msgstr "Naam chatkanaal bestaat al"
-
-#: ../../include/chat.php:68 ../../include/chat.php:76
-msgid "Invalid room specifier."
-msgstr "Ongeldige omschrijving chatkanaal"
-
-#: ../../include/chat.php:105
-msgid "Room not found."
-msgstr "Chatkanaal niet gevonden"
-
-#: ../../include/chat.php:126
-msgid "Room is full"
-msgstr "Chatkanaal is vol"
-
-#: ../../include/taxonomy.php:210
-msgid "Tags"
-msgstr "Labels"
-
-#: ../../include/taxonomy.php:227
-msgid "Keywords"
-msgstr "Trefwoorden"
-
-#: ../../include/taxonomy.php:252
-msgid "have"
-msgstr "heb"
-
-#: ../../include/taxonomy.php:252
-msgid "has"
-msgstr "heeft"
-
-#: ../../include/taxonomy.php:253
-msgid "want"
-msgstr "wil"
-
-#: ../../include/taxonomy.php:253
-msgid "wants"
-msgstr "wil"
-
-#: ../../include/taxonomy.php:254 ../../include/ItemObject.php:208
-msgid "like"
-msgstr "vind dit leuk"
-
-#: ../../include/taxonomy.php:254
-msgid "likes"
-msgstr "vindt dit leuk"
-
-#: ../../include/taxonomy.php:255 ../../include/ItemObject.php:209
-msgid "dislike"
-msgstr "vind dit niet leuk"
-
-#: ../../include/taxonomy.php:255
-msgid "dislikes"
-msgstr "vindt dit niet leuk"
-
-#: ../../include/taxonomy.php:338 ../../include/identity.php:968
-#: ../../include/ItemObject.php:134
-msgctxt "noun"
-msgid "Like"
-msgid_plural "Likes"
-msgstr[0] "vindt dit leuk"
-msgstr[1] "vinden dit leuk"
-
-#: ../../include/comanche.php:35 ../../view/theme/apw/php/config.php:185
-msgid "Default"
-msgstr "Standaard"
-
-#: ../../include/contact_selectors.php:30
-msgid "Unknown | Not categorised"
-msgstr "Onbekend | Niet gecategoriseerd"
-
-#: ../../include/contact_selectors.php:31
-msgid "Block immediately"
-msgstr "Onmiddellijk blokkeren"
-
-#: ../../include/contact_selectors.php:32
-msgid "Shady, spammer, self-marketer"
-msgstr "Onbetrouwbaar, spammer, zelfpromotor"
-
-#: ../../include/contact_selectors.php:33
-msgid "Known to me, but no opinion"
-msgstr "Mij bekend, maar geen mening"
-
-#: ../../include/contact_selectors.php:34
-msgid "OK, probably harmless"
-msgstr "OK, vermoedelijk onschadelijk"
-
-#: ../../include/contact_selectors.php:35
-msgid "Reputable, has my trust"
-msgstr "Fatsoenlijk, heeft mijn vertrouwen"
-
-#: ../../include/contact_selectors.php:54
-msgid "Frequently"
-msgstr "Regelmatig"
-
-#: ../../include/contact_selectors.php:55
-msgid "Hourly"
-msgstr "Elk uur"
-
-#: ../../include/contact_selectors.php:56
-msgid "Twice daily"
-msgstr "Twee keer per dag"
-
-#: ../../include/contact_selectors.php:57
-msgid "Daily"
-msgstr "Dagelijks"
-
-#: ../../include/contact_selectors.php:58
-msgid "Weekly"
-msgstr "Wekelijks"
-
-#: ../../include/contact_selectors.php:59
-msgid "Monthly"
-msgstr "Maandelijks"
-
-#: ../../include/contact_selectors.php:74
-msgid "Friendica"
-msgstr "Friendica"
-
-#: ../../include/contact_selectors.php:75
-msgid "OStatus"
-msgstr "OStatus"
-
-#: ../../include/contact_selectors.php:76
-msgid "RSS/Atom"
-msgstr "RSS/Atom"
-
-#: ../../include/contact_selectors.php:77 ../../mod/admin.php:754
-#: ../../mod/admin.php:763 ../../boot.php:1469
-msgid "Email"
-msgstr "E-mail"
-
-#: ../../include/contact_selectors.php:78
-msgid "Diaspora"
-msgstr "Diaspora"
-
-#: ../../include/contact_selectors.php:79
-msgid "Facebook"
-msgstr "Facebook"
-
-#: ../../include/contact_selectors.php:80
-msgid "Zot!"
-msgstr "Zot!"
-
-#: ../../include/contact_selectors.php:81
-msgid "LinkedIn"
-msgstr "LinkedIn"
-
-#: ../../include/contact_selectors.php:82
-msgid "XMPP/IM"
-msgstr "XMPP/IM"
-
-#: ../../include/contact_selectors.php:83
-msgid "MySpace"
-msgstr "MySpace"
-
-#: ../../include/contact_widgets.php:14
-#, php-format
-msgid "%d invitation available"
-msgid_plural "%d invitations available"
-msgstr[0] "%d uitnodiging beschikbaar"
-msgstr[1] "%d uitnodigingen beschikbaar"
-
-#: ../../include/contact_widgets.php:19 ../../mod/admin.php:446
-msgid "Advanced"
-msgstr "Geavanceerd"
-
-#: ../../include/contact_widgets.php:22
-msgid "Find Channels"
-msgstr "Kanalen vinden"
-
-#: ../../include/contact_widgets.php:23
-msgid "Enter name or interest"
-msgstr "Vul naam of interesse in"
-
-#: ../../include/contact_widgets.php:24
-msgid "Connect/Follow"
-msgstr "Verbinden/volgen"
-
-#: ../../include/contact_widgets.php:25
-msgid "Examples: Robert Morgenstein, Fishing"
-msgstr "Voorbeeld: Robert Morgenstein, vissen"
-
-#: ../../include/contact_widgets.php:26 ../../mod/connections.php:392
-#: ../../mod/directory.php:206 ../../mod/directory.php:211
-msgid "Find"
-msgstr "Vinden"
-
-#: ../../include/contact_widgets.php:27 ../../mod/suggest.php:59
-msgid "Channel Suggestions"
-msgstr "Voorgestelde kanalen"
-
-#: ../../include/contact_widgets.php:29
-msgid "Random Profile"
-msgstr "Willekeurig profiel"
-
-#: ../../include/contact_widgets.php:30
-msgid "Invite Friends"
-msgstr "Vrienden uitnodigen"
-
-#: ../../include/contact_widgets.php:32
-msgid "Exammple: name=fred and country=iceland"
-msgstr "Voorbeeld: (voor naam) name=herman en (voor land) country=nederland"
-
-#: ../../include/contact_widgets.php:33
-msgid "Advanced Find"
-msgstr "Geavanceerd zoeken"
-
-#: ../../include/contact_widgets.php:58 ../../include/features.php:67
-#: ../../include/widgets.php:296
-msgid "Saved Folders"
-msgstr "Bewaarde mappen"
-
-#: ../../include/contact_widgets.php:61 ../../include/contact_widgets.php:95
-#: ../../include/widgets.php:299
-msgid "Everything"
-msgstr "Alles"
-
-#: ../../include/contact_widgets.php:92 ../../include/widgets.php:29
-msgid "Categories"
-msgstr "Categorieën"
-
-#: ../../include/contact_widgets.php:125
-#, php-format
-msgid "%d connection in common"
-msgid_plural "%d connections in common"
-msgstr[0] "%d gemeenschappelijke connectie"
-msgstr[1] "%d gemeenschappelijke connecties"
-
-#: ../../include/contact_widgets.php:130
-msgid "show more"
-msgstr "meer connecties weergeven"
-
-#: ../../include/event.php:326
-msgid "This event has been added to your calendar."
-msgstr "Dit evenement is aan jouw agenda toegevoegd."
-
-#: ../../include/zot.php:610
-msgid "Invalid data packet"
-msgstr "Datapakket ongeldig"
-
-#: ../../include/zot.php:620
-msgid "Unable to verify channel signature"
-msgstr "Kanaal-kenmerk (channel signature) kon niet worden geverifieerd. "
-
-#: ../../include/zot.php:817
-#, php-format
-msgid "Unable to verify site signature for %s"
-msgstr "Hub-kenmerk (site signature) voor %s kon niet worden geverifieerd"
-
-#: ../../include/datetime.php:43 ../../include/datetime.php:45
-msgid "Miscellaneous"
-msgstr "Diversen"
-
-#: ../../include/datetime.php:152 ../../include/datetime.php:284
-msgid "year"
-msgstr "jaar"
-
-#: ../../include/datetime.php:157 ../../include/datetime.php:285
-msgid "month"
-msgstr "maand"
-
-#: ../../include/datetime.php:162 ../../include/datetime.php:287
-msgid "day"
-msgstr "dag"
-
-#: ../../include/datetime.php:275
-msgid "never"
-msgstr "nooit"
-
-#: ../../include/datetime.php:281
-msgid "less than a second ago"
-msgstr "minder dan een seconde geleden"
-
-#: ../../include/datetime.php:284
-msgid "years"
-msgstr "jaren"
-
-#: ../../include/datetime.php:285
-msgid "months"
-msgstr "maanden"
-
-#: ../../include/datetime.php:286
-msgid "week"
-msgstr "week"
-
-#: ../../include/datetime.php:286
-msgid "weeks"
-msgstr "weken"
-
-#: ../../include/datetime.php:287
-msgid "days"
-msgstr "dagen"
-
-#: ../../include/datetime.php:288
-msgid "hour"
-msgstr "uur"
-
-#: ../../include/datetime.php:288
-msgid "hours"
-msgstr "uren"
-
-#: ../../include/datetime.php:289
-msgid "minute"
-msgstr "minuut"
-
-#: ../../include/datetime.php:289
-msgid "minutes"
-msgstr "minuten"
-
-#: ../../include/datetime.php:290
-msgid "second"
-msgstr "seconde"
-
-#: ../../include/datetime.php:290
-msgid "seconds"
-msgstr "seconden"
-
-#: ../../include/datetime.php:299
-#, php-format
-msgid "%1$d %2$s ago"
-msgstr "%1$d %2$s geleden"
-
-#: ../../include/datetime.php:504
-#, php-format
-msgid "%1$s's birthday"
-msgstr "Verjaardag van %1$s"
-
-#: ../../include/datetime.php:505
-#, php-format
-msgid "Happy Birthday %1$s"
-msgstr "Gefeliciteerd met je verjaardag %1$s"
-
-#: ../../include/dir_fns.php:36
-msgid "Sort Options"
-msgstr "Sorteeropties"
-
-#: ../../include/dir_fns.php:37
-msgid "Alphabetic"
-msgstr "Alfabetisch"
-
-#: ../../include/dir_fns.php:38
-msgid "Reverse Alphabetic"
-msgstr "Omgekeerd alfabetisch"
-
-#: ../../include/dir_fns.php:39
-msgid "Newest to Oldest"
-msgstr "Nieuw naar oud"
-
-#: ../../include/dir_fns.php:51
-msgid "Enable Safe Search"
-msgstr "Veilig zoeken inschakelen"
-
-#: ../../include/dir_fns.php:53
-msgid "Disable Safe Search"
-msgstr "Veilig zoeken uitschakelen"
-
-#: ../../include/dir_fns.php:55
-msgid "Safe Mode"
-msgstr "Veilig zoeken"
-
-#: ../../include/enotify.php:41
-msgid "Red Matrix Notification"
-msgstr "Red Matrix-notificatie"
-
-#: ../../include/enotify.php:42
-msgid "redmatrix"
-msgstr "redmatrix"
-
-#: ../../include/enotify.php:44
-msgid "Thank You,"
-msgstr "Bedankt,"
-
-#: ../../include/enotify.php:46
-#, php-format
-msgid "%s Administrator"
-msgstr "%s beheerder"
-
-#: ../../include/enotify.php:81
-#, php-format
-msgid "%s <!item_type!>"
-msgstr "%s <!item_type!>"
-
-#: ../../include/enotify.php:85
-#, php-format
-msgid "[Red:Notify] New mail received at %s"
-msgstr "[Red:Notificatie] Nieuw privébericht ontvangen op %s"
-
-#: ../../include/enotify.php:87
-#, php-format
-msgid "%1$s, %2$s sent you a new private message at %3$s."
-msgstr "%1$s, %2$s zond jou een nieuw privébericht om %3$s."
-
-#: ../../include/enotify.php:88
-#, php-format
-msgid "%1$s sent you %2$s."
-msgstr "%1$s zond jou %2$s."
-
-#: ../../include/enotify.php:88
-msgid "a private message"
-msgstr "een privébericht"
-
-#: ../../include/enotify.php:89
-#, php-format
-msgid "Please visit %s to view and/or reply to your private messages."
-msgstr "Bezoek %s om je privéberichten te bekijken en/of er op te reageren."
-
-#: ../../include/enotify.php:144
-#, php-format
-msgid "%1$s, %2$s commented on [zrl=%3$s]a %4$s[/zrl]"
-msgstr "%1$s, %2$s gaf een reactie op [zrl=%3$s]een %4$s[/zrl]"
-
-#: ../../include/enotify.php:152
-#, php-format
-msgid "%1$s, %2$s commented on [zrl=%3$s]%4$s's %5$s[/zrl]"
-msgstr "%1$s, %2$s gaf een reactie op [zrl=%3$s]een %5$s van %4$s[/zrl]"
-
-#: ../../include/enotify.php:161
-#, php-format
-msgid "%1$s, %2$s commented on [zrl=%3$s]your %4$s[/zrl]"
-msgstr "%1$s, %2$s gaf een reactie op [zrl=%3$s]jouw %4$s[/zrl]"
-
-#: ../../include/enotify.php:172
-#, php-format
-msgid "[Red:Notify] Comment to conversation #%1$d by %2$s"
-msgstr "[Red:Notificatie] Reactie op conversatie #%1$d door %2$s"
-
-#: ../../include/enotify.php:173
-#, php-format
-msgid "%1$s, %2$s commented on an item/conversation you have been following."
-msgstr "%1$s, %2$s gaf een reactie op een bericht/conversatie die jij volgt."
-
-#: ../../include/enotify.php:176 ../../include/enotify.php:191
-#: ../../include/enotify.php:217 ../../include/enotify.php:236
-#: ../../include/enotify.php:250
-#, php-format
-msgid "Please visit %s to view and/or reply to the conversation."
-msgstr "Bezoek %s om de conversatie te bekijken en/of er op te reageren."
-
-#: ../../include/enotify.php:182
-#, php-format
-msgid "[Red:Notify] %s posted to your profile wall"
-msgstr "[Red:Notificatie] %s heeft een bericht op jouw kanaal geplaatst"
-
-#: ../../include/enotify.php:184
-#, php-format
-msgid "%1$s, %2$s posted to your profile wall at %3$s"
-msgstr "%1$s, %2$s heeft om %3$s een bericht op jouw kanaal geplaatst"
-
-#: ../../include/enotify.php:186
-#, php-format
-msgid "%1$s, %2$s posted to [zrl=%3$s]your wall[/zrl]"
-msgstr "%1$s, %2$s heeft een bericht op [zrl=%3$s]jouw kanaal[/zrl] geplaatst"
-
-#: ../../include/enotify.php:210
-#, php-format
-msgid "[Red:Notify] %s tagged you"
-msgstr "[Red:Notificatie] %s heeft je genoemd"
-
-#: ../../include/enotify.php:211
-#, php-format
-msgid "%1$s, %2$s tagged you at %3$s"
-msgstr "%1$s, %2$s noemde jou om %3$s"
-
-#: ../../include/enotify.php:212
-#, php-format
-msgid "%1$s, %2$s [zrl=%3$s]tagged you[/zrl]."
-msgstr "%1$s, %2$s [zrl=%3$s]noemde jou[/zrl]."
-
-#: ../../include/enotify.php:225
-#, php-format
-msgid "[Red:Notify] %1$s poked you"
-msgstr "[Red:Notificatie] %1$s heeft je aangestoten"
-
-#: ../../include/enotify.php:226
-#, php-format
-msgid "%1$s, %2$s poked you at %3$s"
-msgstr "%1$s, %2$s heeft je aangestoten op %3$s"
-
-#: ../../include/enotify.php:227
-#, php-format
-msgid "%1$s, %2$s [zrl=%2$s]poked you[/zrl]."
-msgstr "%1$s, %2$s [zrl=%2$s]heeft je aangestoten[/zrl]."
-
-#: ../../include/enotify.php:243
-#, php-format
-msgid "[Red:Notify] %s tagged your post"
-msgstr "[Red:Notificatie] %s heeft jouw bericht gelabeld"
-
-#: ../../include/enotify.php:244
-#, php-format
-msgid "%1$s, %2$s tagged your post at %3$s"
-msgstr "%1$s, %2$s labelde jouw bericht om %3$s"
-
-#: ../../include/enotify.php:245
-#, php-format
-msgid "%1$s, %2$s tagged [zrl=%3$s]your post[/zrl]"
-msgstr "%1$s, %2$s labelde [zrl=%3$s]jouw bericht[/zrl]"
-
-#: ../../include/enotify.php:257
-msgid "[Red:Notify] Introduction received"
-msgstr "[Red:Notificatie] Connectieverzoek ontvangen"
-
-#: ../../include/enotify.php:258
-#, php-format
-msgid "%1$s, you've received an new connection request from '%2$s' at %3$s"
-msgstr "%1$s, je hebt een nieuw connectieverzoek ontvangen van '%2$s' op %3$s"
-
-#: ../../include/enotify.php:259
-#, php-format
-msgid ""
-"%1$s, you've received [zrl=%2$s]a new connection request[/zrl] from %3$s."
-msgstr "%1$s, je hebt een [zrl=%2$s]nieuw connectieverzoek[/zrl] ontvangen van %3$s."
-
-#: ../../include/enotify.php:263 ../../include/enotify.php:282
-#, php-format
-msgid "You may visit their profile at %s"
-msgstr "Je kan het profiel bekijken op %s"
-
-#: ../../include/enotify.php:265
-#, php-format
-msgid "Please visit %s to approve or reject the connection request."
-msgstr "Bezoek %s om het connectieverzoek te accepteren of af te wijzen."
-
-#: ../../include/enotify.php:272
-msgid "[Red:Notify] Friend suggestion received"
-msgstr "[Red:Notificatie] Kanaalvoorstel ontvangen"
-
-#: ../../include/enotify.php:273
-#, php-format
-msgid "%1$s, you've received a friend suggestion from '%2$s' at %3$s"
-msgstr "%1$s, je hebt een kanaalvoorstel ontvangen van '%2$s' om %3$s"
-
-#: ../../include/enotify.php:274
-#, php-format
-msgid ""
-"%1$s, you've received [zrl=%2$s]a friend suggestion[/zrl] for %3$s from "
-"%4$s."
-msgstr "%1$s, je hebt [zrl=%2$s]een kanaalvoorstel[/zrl] ontvangen voor %3$s van %4$s."
-
-#: ../../include/enotify.php:280
-msgid "Name:"
-msgstr "Naam:"
-
-#: ../../include/enotify.php:281
-msgid "Photo:"
-msgstr "Foto:"
-
-#: ../../include/enotify.php:284
-#, php-format
-msgid "Please visit %s to approve or reject the suggestion."
-msgstr "Bezoek %s om het voorstel te accepteren of af te wijzen."
-
-#: ../../include/reddav.php:1145 ../../include/reddav.php:1288
-msgid "parent"
-msgstr "omhoog"
-
-#: ../../include/reddav.php:1169
-msgid "Collection"
-msgstr "map"
-
-#: ../../include/reddav.php:1172
-msgid "Principal"
-msgstr "principal"
-
-#: ../../include/reddav.php:1175
-msgid "Addressbook"
-msgstr "Adresboek"
-
-#: ../../include/reddav.php:1178
-msgid "Calendar"
-msgstr "Agenda"
-
-#: ../../include/reddav.php:1181
-msgid "Schedule Inbox"
-msgstr "Planning-postvak IN"
-
-#: ../../include/reddav.php:1184
-msgid "Schedule Outbox"
-msgstr "Planning-postvak UIT"
-
-#: ../../include/reddav.php:1202 ../../include/apps.php:322
-#: ../../include/apps.php:373 ../../mod/connedit.php:434
-msgid "Unknown"
-msgstr "Onbekend"
-
-#: ../../include/reddav.php:1262
-#, php-format
-msgid "%1$s used"
-msgstr "%1$s gebruikt"
-
-#: ../../include/reddav.php:1267
-#, php-format
-msgid "%1$s used of %2$s (%3$s&#37;)"
-msgstr "%1$s van %2$s gebruikt (%3$s&#37;)"
-
-#: ../../include/reddav.php:1284 ../../mod/settings.php:517
-#: ../../mod/settings.php:543 ../../mod/admin.php:893
-msgid "Name"
-msgstr "Naam"
-
-#: ../../include/reddav.php:1285
-msgid "Type"
-msgstr "Type"
-
-#: ../../include/reddav.php:1286
-msgid "Size"
-msgstr "Grootte"
-
-#: ../../include/reddav.php:1287
-msgid "Last Modified"
-msgstr "Laatst gewijzigd"
-
-#: ../../include/reddav.php:1291
-msgid "Total"
-msgstr "Totaal"
-
-#: ../../include/reddav.php:1344
-msgid "Create new folder"
-msgstr "Nieuwe map aanmaken"
-
-#: ../../include/reddav.php:1345 ../../mod/mitem.php:142 ../../mod/menu.php:84
-#: ../../mod/new_channel.php:117
-msgid "Create"
-msgstr "Aanmaken"
-
-#: ../../include/reddav.php:1346
-msgid "Upload file"
-msgstr "Bestand uploaden"
-
-#: ../../include/reddav.php:1347 ../../mod/profile_photo.php:361
-msgid "Upload"
-msgstr "Uploaden"
-
#: ../../include/features.php:23
msgid "General Features"
msgstr "Algemene functies"
@@ -1760,528 +571,916 @@ msgid "Ability to create multiple profiles"
msgstr "Mogelijkheid om meerdere profielen aan te maken"
#: ../../include/features.php:27
+msgid "Advanced Profiles"
+msgstr "Geavanceerde profielen"
+
+#: ../../include/features.php:27
+msgid "Additional profile sections and selections"
+msgstr "Extra onderdelen en keuzes voor je profiel"
+
+#: ../../include/features.php:28
+msgid "Profile Import/Export"
+msgstr "Profiel importen/exporteren"
+
+#: ../../include/features.php:28
+msgid "Save and load profile details across sites/channels"
+msgstr "Profielgegevens opslaan en in andere hubs/kanalen gebruiken."
+
+#: ../../include/features.php:29
msgid "Web Pages"
msgstr "Webpagina's"
-#: ../../include/features.php:27
+#: ../../include/features.php:29
msgid "Provide managed web pages on your channel"
msgstr "Sta beheerde webpagina's op jouw kanaal toe"
-#: ../../include/features.php:28
+#: ../../include/features.php:30
msgid "Private Notes"
msgstr "Privé-aantekeningen"
-#: ../../include/features.php:28
+#: ../../include/features.php:30
msgid "Enables a tool to store notes and reminders"
msgstr "Schakelt een eenvoudige toepassing in om aantekeningen en herinneringen in op te slaan"
-#: ../../include/features.php:33
+#: ../../include/features.php:34
+msgid "Navigation Channel Select"
+msgstr "Kanaal kiezen in navigatiemenu"
+
+#: ../../include/features.php:34
+msgid "Change channels directly from within the navigation dropdown menu"
+msgstr "Kies een ander kanaal direct vanuit het dropdown-menu op de navigatiebalk"
+
+#: ../../include/features.php:38
msgid "Extended Identity Sharing"
msgstr "Uitgebreid identiteit delen"
-#: ../../include/features.php:33
+#: ../../include/features.php:38
msgid ""
"Share your identity with all websites on the internet. When disabled, "
"identity is only shared with sites in the matrix."
-msgstr "Deel jouw Red Matrix-identiteit met alle websites op het internet. Wanneer dit is uitgeschakeld wordt je identiteit alleen binnen het Red Matrix-netwerk gedeeld. Schakel dit alleen als je weet wat je doet."
+msgstr "Deel jouw RedMatrix-identiteit met alle websites op het internet. Wanneer dit is uitgeschakeld wordt je identiteit alleen binnen het RedMatrix-netwerk gedeeld. Schakel dit alleen als je weet wat je doet."
-#: ../../include/features.php:34
+#: ../../include/features.php:39
msgid "Expert Mode"
msgstr "Expertmodus"
-#: ../../include/features.php:34
+#: ../../include/features.php:39
msgid "Enable Expert Mode to provide advanced configuration options"
msgstr "Schakel de expertmodus in voor geavanceerde instellingen"
-#: ../../include/features.php:35
+#: ../../include/features.php:40
msgid "Premium Channel"
msgstr "Premiumkanaal"
-#: ../../include/features.php:35
+#: ../../include/features.php:40
msgid ""
"Allows you to set restrictions and terms on those that connect with your "
"channel"
msgstr "Stelt je in staat om beperkingen en voorwaarden in te stellen voor jouw kanaal"
-#: ../../include/features.php:40
+#: ../../include/features.php:45
msgid "Post Composition Features"
msgstr "Functies voor het opstellen van berichten"
-#: ../../include/features.php:42
+#: ../../include/features.php:47
msgid "Use Markdown"
msgstr "Markdown gebruiken"
-#: ../../include/features.php:42
+#: ../../include/features.php:47
msgid "Allow use of \"Markdown\" to format posts"
msgstr "Sta het gebruik van \"markdown\" toe om berichten mee op te maken."
-#: ../../include/features.php:43
-msgid "Post Preview"
-msgstr "Voorvertoning"
-
-#: ../../include/features.php:43
-msgid "Allow previewing posts and comments before publishing them"
-msgstr "Een optie om je berichten en reacties voor het definitief publiceren voor te vertonen"
-
-#: ../../include/features.php:44 ../../include/widgets.php:503
+#: ../../include/features.php:49 ../../include/widgets.php:527
#: ../../mod/sources.php:88
msgid "Channel Sources"
msgstr "Kanaalbronnen"
-#: ../../include/features.php:44
+#: ../../include/features.php:49
msgid "Automatically import channel content from other channels or feeds"
msgstr "Automatisch inhoud uit andere kanalen of feeds importeren."
-#: ../../include/features.php:45
+#: ../../include/features.php:50
msgid "Even More Encryption"
msgstr "Extra encryptie"
-#: ../../include/features.php:45
+#: ../../include/features.php:50
msgid ""
"Allow optional encryption of content end-to-end with a shared secret key"
msgstr "Sta toe dat inhoud extra end-to-end wordt versleuteld met een gedeelde geheime sleutel."
-#: ../../include/features.php:50
+#: ../../include/features.php:51
+msgid "Flag Adult Photos"
+msgstr "Markeer foto's als voor volwassenen"
+
+#: ../../include/features.php:51
+msgid "Provide photo edit option to hide adult photos from default album view"
+msgstr "Zorgt voor een optie om foto's met inhoud voor volwassenen in de standaard albumweergave te verbergen"
+
+#: ../../include/features.php:56
msgid "Network and Stream Filtering"
msgstr "Netwerk- en streamfilter"
-#: ../../include/features.php:51
+#: ../../include/features.php:57
msgid "Search by Date"
msgstr "Zoek op datum"
-#: ../../include/features.php:51
+#: ../../include/features.php:57
msgid "Ability to select posts by date ranges"
msgstr "Mogelijkheid om berichten op datum te filteren "
-#: ../../include/features.php:52
+#: ../../include/features.php:58
msgid "Collections Filter"
msgstr "Filter op collecties"
-#: ../../include/features.php:52
+#: ../../include/features.php:58
msgid "Enable widget to display Network posts only from selected collections"
msgstr "Sta de widget toe om netwerkberichten te tonen van bepaalde collecties"
-#: ../../include/features.php:53 ../../include/widgets.php:265
+#: ../../include/features.php:59 ../../include/widgets.php:272
msgid "Saved Searches"
msgstr "Opgeslagen zoekopdrachten"
-#: ../../include/features.php:53
+#: ../../include/features.php:59
msgid "Save search terms for re-use"
msgstr "Sla zoekopdrachten op voor hergebruik"
-#: ../../include/features.php:54
+#: ../../include/features.php:60
msgid "Network Personal Tab"
msgstr "Persoonlijke netwerktab"
-#: ../../include/features.php:54
+#: ../../include/features.php:60
msgid "Enable tab to display only Network posts that you've interacted on"
msgstr "Sta het toe dat de tab netwerkberichten toont waarmee je interactie had"
-#: ../../include/features.php:55
+#: ../../include/features.php:61
msgid "Network New Tab"
msgstr "Nieuwe netwerktab"
-#: ../../include/features.php:55
+#: ../../include/features.php:61
msgid "Enable tab to display all new Network activity"
msgstr "Laat de tab alle nieuwe netwerkactiviteit tonen"
-#: ../../include/features.php:56
+#: ../../include/features.php:62
msgid "Affinity Tool"
msgstr "Verwantschapsfilter"
-#: ../../include/features.php:56
+#: ../../include/features.php:62
msgid "Filter stream activity by depth of relationships"
-msgstr "Filter wat je in de matrix ziet op goed je iemand kent of mag"
+msgstr "Filter wat je in de Matrix ziet op hoe goed je iemand kent of mag"
-#: ../../include/features.php:57
+#: ../../include/features.php:63
msgid "Suggest Channels"
msgstr "Kanalen voorstellen"
-#: ../../include/features.php:57
+#: ../../include/features.php:63
msgid "Show channel suggestions"
msgstr "Voor jou mogelijk interessante kanalen voorstellen"
-#: ../../include/features.php:62
+#: ../../include/features.php:68
msgid "Post/Comment Tools"
msgstr "Bericht- en reactiehulpmiddelen"
-#: ../../include/features.php:64
-msgid "Edit Sent Posts"
-msgstr "Bewerk verzonden berichten"
-
-#: ../../include/features.php:64
-msgid "Edit and correct posts and comments after sending"
-msgstr "Bewerk en corrigeer berichten en reacties nadat deze zijn verzonden"
-
-#: ../../include/features.php:65
+#: ../../include/features.php:71
msgid "Tagging"
-msgstr "Labelen"
+msgstr "Taggen"
-#: ../../include/features.php:65
+#: ../../include/features.php:71
msgid "Ability to tag existing posts"
-msgstr "Mogelijkheid om bestaande berichten te labelen"
+msgstr "Mogelijkheid om bestaande berichten te taggen"
-#: ../../include/features.php:66
+#: ../../include/features.php:72
msgid "Post Categories"
msgstr "Categorieën berichten"
-#: ../../include/features.php:66
+#: ../../include/features.php:72
msgid "Add categories to your posts"
msgstr "Voeg categorieën toe aan je berichten"
-#: ../../include/features.php:67
+#: ../../include/features.php:73 ../../include/contact_widgets.php:57
+#: ../../include/widgets.php:302
+msgid "Saved Folders"
+msgstr "Bewaarde mappen"
+
+#: ../../include/features.php:73
msgid "Ability to file posts under folders"
msgstr "Mogelijkheid om berichten in mappen op te slaan"
-#: ../../include/features.php:68
+#: ../../include/features.php:74
msgid "Dislike Posts"
msgstr "Vind berichten niet leuk"
-#: ../../include/features.php:68
+#: ../../include/features.php:74
msgid "Ability to dislike posts/comments"
msgstr "Mogelijkheid om berichten en reacties niet leuk te vinden"
-#: ../../include/features.php:69
+#: ../../include/features.php:75
msgid "Star Posts"
msgstr "Geef berichten een ster"
-#: ../../include/features.php:69
+#: ../../include/features.php:75
msgid "Ability to mark special posts with a star indicator"
msgstr "Mogelijkheid om speciale berichten met een ster te markeren"
-#: ../../include/features.php:70
+#: ../../include/features.php:76
msgid "Tag Cloud"
-msgstr "Wolk met trefwoorden/labels"
+msgstr "Tagwolk"
-#: ../../include/features.php:70
+#: ../../include/features.php:76
msgid "Provide a personal tag cloud on your channel page"
-msgstr "Zorgt voor een persoonlijke wolk met trefwoorden of labels op jouw kanaalpagina"
+msgstr "Zorgt voor een persoonlijke wolk met tags op jouw kanaalpagina"
-#: ../../include/follow.php:23
-msgid "Channel is blocked on this site."
-msgstr "Kanaal is op deze hub geblokkeerd."
+#: ../../include/RedDAV/RedBrowser.php:106
+#: ../../include/RedDAV/RedBrowser.php:262
+msgid "parent"
+msgstr "omhoog"
-#: ../../include/follow.php:28
-msgid "Channel location missing."
-msgstr "Ontbrekende kanaallocatie."
+#: ../../include/RedDAV/RedBrowser.php:130
+#: ../../include/RedDAV/RedBrowser.php:339
+msgid "Collection"
+msgstr "map"
-#: ../../include/follow.php:54
-msgid "Response from remote channel was incomplete."
-msgstr "Antwoord van het kanaal op afstand was niet volledig."
+#: ../../include/RedDAV/RedBrowser.php:133
+msgid "Principal"
+msgstr "principal"
-#: ../../include/follow.php:85
-msgid "Channel was deleted and no longer exists."
-msgstr "Kanaal is verwijderd en bestaat niet meer."
+#: ../../include/RedDAV/RedBrowser.php:136
+msgid "Addressbook"
+msgstr "Adresboek"
-#: ../../include/follow.php:132
-msgid "Channel discovery failed."
-msgstr "Kanaal ontdekken mislukt."
+#: ../../include/RedDAV/RedBrowser.php:139
+msgid "Calendar"
+msgstr "Agenda"
-#: ../../include/follow.php:149
-msgid "local account not found."
-msgstr "lokale account niet gevonden."
+#: ../../include/RedDAV/RedBrowser.php:142
+msgid "Schedule Inbox"
+msgstr "Planning-postvak IN"
-#: ../../include/follow.php:158
-msgid "Cannot connect to yourself."
-msgstr "Kan niet met jezelf verbinden"
+#: ../../include/RedDAV/RedBrowser.php:145
+msgid "Schedule Outbox"
+msgstr "Planning-postvak UIT"
-#: ../../include/group.php:25
-msgid ""
-"A deleted group with this name was revived. Existing item permissions "
-"<strong>may</strong> apply to this group and any future members. If this is "
-"not what you intended, please create another group with a different name."
-msgstr "Een verwijderde collectie met deze naam is gereactiveerd. Bestaande itemrechten <strong>kunnen</strong> van toepassing zijn op deze collectie en toekomstige leden. Wanneer je dit niet zo bedoeld hebt, moet je een nieuwe collectie met een andere naam aanmaken."
+#: ../../include/RedDAV/RedBrowser.php:163 ../../include/conversation.php:992
+#: ../../include/apps.php:336 ../../include/apps.php:387
+#: ../../mod/connedit.php:513 ../../mod/photos.php:710
+#: ../../mod/photos.php:1129
+msgid "Unknown"
+msgstr "Onbekend"
-#: ../../include/group.php:223
-msgid "Default privacy group for new contacts"
-msgstr "Standaard privacy-collectie voor nieuwe kanalen"
+#: ../../include/RedDAV/RedBrowser.php:225
+#, php-format
+msgid "%1$s used"
+msgstr "%1$s gebruikt"
-#: ../../include/group.php:242 ../../mod/admin.php:763
-msgid "All Channels"
-msgstr "Alle kanalen"
+#: ../../include/RedDAV/RedBrowser.php:230
+#, php-format
+msgid "%1$s used of %2$s (%3$s&#37;)"
+msgstr "%1$s van %2$s gebruikt (%3$s&#37;)"
-#: ../../include/group.php:264
-msgid "edit"
-msgstr "bewerken"
+#: ../../include/RedDAV/RedBrowser.php:249 ../../include/conversation.php:1539
+#: ../../include/apps.php:135 ../../include/nav.php:106
+#: ../../mod/fbrowser.php:114
+msgid "Files"
+msgstr "Bestanden"
-#: ../../include/group.php:285
-msgid "Collections"
-msgstr "Collecties"
+#: ../../include/RedDAV/RedBrowser.php:251
+msgid "Total"
+msgstr "Totaal"
-#: ../../include/group.php:286
-msgid "Edit collection"
-msgstr "Collectie bewerken"
+#: ../../include/RedDAV/RedBrowser.php:258 ../../mod/settings.php:579
+#: ../../mod/settings.php:605 ../../mod/admin.php:866
+msgid "Name"
+msgstr "Naam"
-#: ../../include/group.php:287
-msgid "Create a new collection"
-msgstr "Nieuwe collectie aanmaken"
+#: ../../include/RedDAV/RedBrowser.php:259
+msgid "Type"
+msgstr "Type"
-#: ../../include/group.php:288
-msgid "Channels not in any collection"
-msgstr "Kanalen die zich in geen enkele collectie bevinden"
+#: ../../include/RedDAV/RedBrowser.php:260
+msgid "Size"
+msgstr "Grootte"
-#: ../../include/group.php:290 ../../include/widgets.php:266
-msgid "add"
-msgstr "toevoegen"
+#: ../../include/RedDAV/RedBrowser.php:261
+msgid "Last Modified"
+msgstr "Laatst gewijzigd"
+
+#: ../../include/RedDAV/RedBrowser.php:264 ../../include/conversation.php:639
+#: ../../include/ItemObject.php:120 ../../include/apps.php:255
+#: ../../mod/group.php:176 ../../mod/settings.php:640
+#: ../../mod/connedit.php:476 ../../mod/thing.php:234 ../../mod/admin.php:730
+#: ../../mod/admin.php:861 ../../mod/photos.php:1067
+msgid "Delete"
+msgstr "Verwijderen"
+
+#: ../../include/RedDAV/RedBrowser.php:312
+msgid "Create new folder"
+msgstr "Nieuwe map aanmaken"
+
+#: ../../include/RedDAV/RedBrowser.php:313 ../../mod/mitem.php:169
+#: ../../mod/menu.php:100 ../../mod/new_channel.php:121
+msgid "Create"
+msgstr "Aanmaken"
+
+#: ../../include/RedDAV/RedBrowser.php:314
+msgid "Upload file"
+msgstr "Bestand uploaden"
+
+#: ../../include/RedDAV/RedBrowser.php:315 ../../mod/profile_photo.php:361
+#: ../../mod/photos.php:735 ../../mod/photos.php:1243
+msgid "Upload"
+msgstr "Uploaden"
+
+#: ../../include/bookmarks.php:35
+#, php-format
+msgid "%1$s's bookmarks"
+msgstr "Bladwijzers van %1$s"
+
+#: ../../include/dir_fns.php:68
+msgid "Directory Options"
+msgstr "Opties kanalengids"
+
+#: ../../include/dir_fns.php:69
+msgid "Alphabetic"
+msgstr "Alfabetisch"
+
+#: ../../include/dir_fns.php:70
+msgid "Reverse Alphabetic"
+msgstr "Omgekeerd alfabetisch"
+
+#: ../../include/dir_fns.php:71
+msgid "Newest to Oldest"
+msgstr "Nieuw naar oud"
+
+#: ../../include/dir_fns.php:72
+msgid "Oldest to Newest"
+msgstr "Oud naar nieuw"
+
+#: ../../include/dir_fns.php:73
+msgid "Public Forums Only"
+msgstr "Alleen openbare forums"
+
+#: ../../include/dir_fns.php:75
+msgid "Sort"
+msgstr "Sorteren"
+
+#: ../../include/dir_fns.php:91
+msgid "Enable Safe Search"
+msgstr "Veilig zoeken inschakelen"
+
+#: ../../include/dir_fns.php:93
+msgid "Disable Safe Search"
+msgstr "Veilig zoeken uitschakelen"
-#: ../../include/identity.php:30 ../../mod/item.php:1280
+#: ../../include/dir_fns.php:95
+msgid "Safe Mode"
+msgstr "Veilig zoeken"
+
+#: ../../include/comanche.php:35 ../../mod/admin.php:353
+#: ../../view/theme/apw/php/config.php:185
+msgid "Default"
+msgstr "Standaard"
+
+#: ../../include/contact_selectors.php:56
+msgid "Frequently"
+msgstr "Regelmatig"
+
+#: ../../include/contact_selectors.php:57
+msgid "Hourly"
+msgstr "Elk uur"
+
+#: ../../include/contact_selectors.php:58
+msgid "Twice daily"
+msgstr "Twee keer per dag"
+
+#: ../../include/contact_selectors.php:59
+msgid "Daily"
+msgstr "Dagelijks"
+
+#: ../../include/contact_selectors.php:60
+msgid "Weekly"
+msgstr "Wekelijks"
+
+#: ../../include/contact_selectors.php:61
+msgid "Monthly"
+msgstr "Maandelijks"
+
+#: ../../include/contact_selectors.php:76
+msgid "Friendica"
+msgstr "Friendica"
+
+#: ../../include/contact_selectors.php:77
+msgid "OStatus"
+msgstr "OStatus"
+
+#: ../../include/contact_selectors.php:78
+msgid "RSS/Atom"
+msgstr "RSS/Atom"
+
+#: ../../include/contact_selectors.php:79 ../../mod/admin.php:726
+#: ../../mod/admin.php:735 ../../boot.php:1544
+msgid "Email"
+msgstr "E-mail"
+
+#: ../../include/contact_selectors.php:80
+msgid "Diaspora"
+msgstr "Diaspora"
+
+#: ../../include/contact_selectors.php:81
+msgid "Facebook"
+msgstr "Facebook"
+
+#: ../../include/contact_selectors.php:82
+msgid "Zot!"
+msgstr "Zot!"
+
+#: ../../include/contact_selectors.php:83
+msgid "LinkedIn"
+msgstr "LinkedIn"
+
+#: ../../include/contact_selectors.php:84
+msgid "XMPP/IM"
+msgstr "XMPP/IM"
+
+#: ../../include/contact_selectors.php:85
+msgid "MySpace"
+msgstr "MySpace"
+
+#: ../../include/auth.php:130
+msgid "Logged out."
+msgstr "Uitgelogd."
+
+#: ../../include/auth.php:271
+msgid "Failed authentication"
+msgstr "Mislukte authenticatie"
+
+#: ../../include/auth.php:285 ../../mod/openid.php:190
+msgid "Login failed."
+msgstr "Inloggen mislukt."
+
+#: ../../include/acl_selectors.php:240
+msgid "Visible to your default audience"
+msgstr "Voor iedereen zichtbaar, mits niet anders ingesteld"
+
+#: ../../include/acl_selectors.php:241
+msgid "Show"
+msgstr "Tonen"
+
+#: ../../include/acl_selectors.php:242
+msgid "Don't show"
+msgstr "Niet tonen"
+
+#: ../../include/acl_selectors.php:248 ../../mod/events.php:596
+#: ../../mod/chat.php:209 ../../mod/filestorage.php:141
+#: ../../mod/photos.php:588 ../../mod/photos.php:947
+msgid "Permissions"
+msgstr "Permissies"
+
+#: ../../include/acl_selectors.php:249 ../../include/ItemObject.php:320
+#: ../../mod/photos.php:1146
+msgid "Close"
+msgstr "Sluiten"
+
+#: ../../include/identity.php:31 ../../mod/item.php:1115
msgid "Unable to obtain identity information from database"
msgstr "Niet in staat om identiteitsinformatie uit de database te verkrijgen"
-#: ../../include/identity.php:63
+#: ../../include/identity.php:66
msgid "Empty name"
msgstr "Ontbrekende naam"
-#: ../../include/identity.php:65
+#: ../../include/identity.php:68
msgid "Name too long"
msgstr "Naam te lang"
-#: ../../include/identity.php:166
+#: ../../include/identity.php:169
msgid "No account identifier"
msgstr "Geen account-identificator"
-#: ../../include/identity.php:176
+#: ../../include/identity.php:182
msgid "Nickname is required."
msgstr "Bijnaam is verplicht"
-#: ../../include/identity.php:190
+#: ../../include/identity.php:196
msgid "Reserved nickname. Please choose another."
msgstr "Deze naam is gereserveerd. Kies een andere."
-#: ../../include/identity.php:195
+#: ../../include/identity.php:201 ../../include/dimport.php:34
msgid ""
"Nickname has unsupported characters or is already being used on this site."
msgstr "Deze naam heeft niet ondersteunde karakters of is al op deze hub in gebruik."
-#: ../../include/identity.php:258
+#: ../../include/identity.php:283
msgid "Unable to retrieve created identity"
msgstr "Niet in staat om aangemaakte identiteit te vinden"
-#: ../../include/identity.php:317
+#: ../../include/identity.php:343
msgid "Default Profile"
msgstr "Standaardprofiel"
-#: ../../include/identity.php:342 ../../include/widgets.php:400
-#: ../../include/profile_selectors.php:42 ../../mod/connedit.php:431
+#: ../../include/identity.php:387 ../../include/identity.php:388
+#: ../../include/identity.php:395 ../../include/widgets.php:428
+#: ../../include/profile_selectors.php:80 ../../mod/settings.php:329
+#: ../../mod/settings.php:333 ../../mod/settings.php:334
+#: ../../mod/settings.php:337 ../../mod/settings.php:348
+#: ../../mod/connedit.php:510
msgid "Friends"
msgstr "Vrienden"
-#: ../../include/identity.php:509
+#: ../../include/identity.php:643
msgid "Requested channel is not available."
msgstr "Opgevraagd kanaal is niet beschikbaar."
-#: ../../include/identity.php:557 ../../mod/achievements.php:8
-#: ../../mod/profile.php:16 ../../mod/blocks.php:10 ../../mod/connect.php:13
-#: ../../mod/filestorage.php:40 ../../mod/layouts.php:8
-#: ../../mod/webpages.php:8
+#: ../../include/identity.php:691 ../../mod/achievements.php:11
+#: ../../mod/profile.php:16 ../../mod/webpages.php:29 ../../mod/blocks.php:29
+#: ../../mod/editblock.php:29 ../../mod/editlayout.php:28
+#: ../../mod/editwebpage.php:28 ../../mod/filestorage.php:48
+#: ../../mod/connect.php:13 ../../mod/layouts.php:29 ../../mod/hcard.php:8
msgid "Requested profile is not available."
msgstr "Opgevraagd profiel is niet beschikbaar"
-#: ../../include/identity.php:675 ../../include/widgets.php:128
-#: ../../include/widgets.php:168 ../../include/Contact.php:107
-#: ../../mod/directory.php:183 ../../mod/dirprofile.php:164
-#: ../../mod/suggest.php:51 ../../mod/match.php:62
+#: ../../include/identity.php:840 ../../include/conversation.php:937
+#: ../../include/widgets.php:136 ../../include/widgets.php:175
+#: ../../include/Contact.php:107 ../../mod/suggest.php:51
+#: ../../mod/match.php:62 ../../mod/directory.php:264
msgid "Connect"
msgstr "Verbinden"
-#: ../../include/identity.php:689 ../../mod/profiles.php:612
+#: ../../include/identity.php:854 ../../mod/profiles.php:757
msgid "Change profile photo"
msgstr "Profielfoto veranderen"
-#: ../../include/identity.php:695
+#: ../../include/identity.php:861
msgid "Profiles"
msgstr "Profielen"
-#: ../../include/identity.php:695
+#: ../../include/identity.php:861
msgid "Manage/edit profiles"
msgstr "Profielen beheren/bewerken"
-#: ../../include/identity.php:696 ../../mod/profiles.php:613
+#: ../../include/identity.php:862 ../../mod/profiles.php:758
msgid "Create New Profile"
msgstr "Nieuw profiel aanmaken"
-#: ../../include/identity.php:699
+#: ../../include/identity.php:865 ../../include/nav.php:103
msgid "Edit Profile"
msgstr "Profiel bewerken"
-#: ../../include/identity.php:710 ../../mod/profiles.php:624
+#: ../../include/identity.php:878 ../../mod/profiles.php:769
msgid "Profile Image"
msgstr "Profielfoto"
-#: ../../include/identity.php:713 ../../mod/profiles.php:627
+#: ../../include/identity.php:881
msgid "visible to everybody"
msgstr "Voor iedereen zichtbaar"
-#: ../../include/identity.php:714 ../../mod/profiles.php:628
+#: ../../include/identity.php:882 ../../mod/profiles.php:652
+#: ../../mod/profiles.php:773
msgid "Edit visibility"
msgstr "Zichtbaarheid bewerken"
-#: ../../include/identity.php:728 ../../include/identity.php:952
-#: ../../mod/directory.php:158
+#: ../../include/identity.php:898 ../../include/identity.php:1135
msgid "Gender:"
msgstr "Geslacht:"
-#: ../../include/identity.php:729 ../../include/identity.php:996
-#: ../../mod/directory.php:160
+#: ../../include/identity.php:899 ../../include/identity.php:1179
msgid "Status:"
msgstr "Status:"
-#: ../../include/identity.php:730 ../../include/identity.php:1007
-#: ../../mod/directory.php:162
+#: ../../include/identity.php:900 ../../include/identity.php:1190
msgid "Homepage:"
msgstr "Homepagina:"
-#: ../../include/identity.php:731 ../../mod/dirprofile.php:151
+#: ../../include/identity.php:901
msgid "Online Now"
msgstr "Nu online"
-#: ../../include/identity.php:796 ../../include/identity.php:876
-#: ../../mod/ping.php:298
+#: ../../include/identity.php:979 ../../include/identity.php:1059
+#: ../../mod/ping.php:329
msgid "g A l F d"
msgstr "G:i, l d F"
-#: ../../include/identity.php:797 ../../include/identity.php:877
+#: ../../include/identity.php:980 ../../include/identity.php:1060
msgid "F d"
msgstr "d F"
-#: ../../include/identity.php:842 ../../include/identity.php:917
-#: ../../mod/ping.php:320
+#: ../../include/identity.php:1025 ../../include/identity.php:1100
+#: ../../mod/ping.php:351
msgid "[today]"
msgstr "[vandaag]"
-#: ../../include/identity.php:854
+#: ../../include/identity.php:1037
msgid "Birthday Reminders"
msgstr "Verjaardagsherinneringen"
-#: ../../include/identity.php:855
+#: ../../include/identity.php:1038
msgid "Birthdays this week:"
msgstr "Verjaardagen deze week:"
-#: ../../include/identity.php:910
+#: ../../include/identity.php:1093
msgid "[No description]"
msgstr "[Geen omschrijving]"
-#: ../../include/identity.php:928
+#: ../../include/identity.php:1111
msgid "Event Reminders"
-msgstr "Herinneringen voor gebeurtenissen"
+msgstr "Herinneringen"
-#: ../../include/identity.php:929
+#: ../../include/identity.php:1112
msgid "Events this week:"
msgstr "Gebeurtenissen deze week:"
-#: ../../include/identity.php:942 ../../include/identity.php:1050
-#: ../../include/apps.php:133 ../../mod/profperm.php:112
+#: ../../include/identity.php:1125 ../../include/identity.php:1254
+#: ../../include/apps.php:138 ../../mod/profperm.php:112
msgid "Profile"
msgstr "Profiel"
-#: ../../include/identity.php:950 ../../mod/settings.php:935
+#: ../../include/identity.php:1133 ../../mod/settings.php:1022
msgid "Full Name:"
msgstr "Volledige naam:"
-#: ../../include/identity.php:957
+#: ../../include/identity.php:1140
msgid "Like this channel"
msgstr "Vind dit kanaal leuk"
-#: ../../include/identity.php:981
+#: ../../include/identity.php:1164
msgid "j F, Y"
msgstr "F j Y"
-#: ../../include/identity.php:982
+#: ../../include/identity.php:1165
msgid "j F"
msgstr "F j"
-#: ../../include/identity.php:989
+#: ../../include/identity.php:1172
msgid "Birthday:"
msgstr "Geboortedatum:"
-#: ../../include/identity.php:993
+#: ../../include/identity.php:1176
msgid "Age:"
msgstr "Leeftijd:"
-#: ../../include/identity.php:1002
+#: ../../include/identity.php:1185
#, php-format
msgid "for %1$d %2$s"
msgstr "voor %1$d %2$s"
-#: ../../include/identity.php:1005 ../../mod/profiles.php:535
+#: ../../include/identity.php:1188 ../../mod/profiles.php:674
msgid "Sexual Preference:"
msgstr "Seksuele voorkeur:"
-#: ../../include/identity.php:1009 ../../mod/profiles.php:537
+#: ../../include/identity.php:1192 ../../mod/profiles.php:676
msgid "Hometown:"
-msgstr "Woonplaats:"
+msgstr "Oorspronkelijk uit:"
-#: ../../include/identity.php:1011
+#: ../../include/identity.php:1194
msgid "Tags:"
-msgstr "Trefwoorden:"
+msgstr "Tags:"
-#: ../../include/identity.php:1013 ../../mod/profiles.php:538
+#: ../../include/identity.php:1196 ../../mod/profiles.php:677
msgid "Political Views:"
msgstr "Politieke overtuigingen:"
-#: ../../include/identity.php:1015
+#: ../../include/identity.php:1198
msgid "Religion:"
msgstr "Religie:"
-#: ../../include/identity.php:1017 ../../mod/directory.php:164
+#: ../../include/identity.php:1200
msgid "About:"
msgstr "Over:"
-#: ../../include/identity.php:1019
+#: ../../include/identity.php:1202
msgid "Hobbies/Interests:"
msgstr "Hobby's/interesses:"
-#: ../../include/identity.php:1021 ../../mod/profiles.php:541
+#: ../../include/identity.php:1204 ../../mod/profiles.php:680
msgid "Likes:"
msgstr "Houdt van:"
-#: ../../include/identity.php:1023 ../../mod/profiles.php:542
+#: ../../include/identity.php:1206 ../../mod/profiles.php:681
msgid "Dislikes:"
msgstr "Houdt niet van:"
-#: ../../include/identity.php:1026
+#: ../../include/identity.php:1209
msgid "Contact information and Social Networks:"
msgstr "Contactinformatie en sociale netwerken:"
-#: ../../include/identity.php:1028
+#: ../../include/identity.php:1221
msgid "My other channels:"
msgstr "Mijn andere kanalen"
-#: ../../include/identity.php:1030
+#: ../../include/identity.php:1224
msgid "Musical interests:"
msgstr "Muzikale interesses:"
-#: ../../include/identity.php:1032
+#: ../../include/identity.php:1226
msgid "Books, literature:"
msgstr "Boeken, literatuur:"
-#: ../../include/identity.php:1034
+#: ../../include/identity.php:1228
msgid "Television:"
msgstr "Televisie:"
-#: ../../include/identity.php:1036
+#: ../../include/identity.php:1230
msgid "Film/dance/culture/entertainment:"
msgstr "Films/dansen/cultuur/vermaak:"
-#: ../../include/identity.php:1038
+#: ../../include/identity.php:1232
msgid "Love/Romance:"
msgstr "Liefde/romantiek:"
-#: ../../include/identity.php:1040
+#: ../../include/identity.php:1234
msgid "Work/employment:"
msgstr "Werk/beroep:"
-#: ../../include/identity.php:1042
+#: ../../include/identity.php:1236
msgid "School/education:"
msgstr "School/opleiding:"
-#: ../../include/identity.php:1052
+#: ../../include/identity.php:1256
msgid "Like this thing"
-msgstr "Vind dit object leuk"
+msgstr "Vind dit ding leuk"
-#: ../../include/network.php:652
-msgid "view full size"
-msgstr "volledige grootte tonen"
+#: ../../include/contact_widgets.php:14
+#, php-format
+msgid "%d invitation available"
+msgid_plural "%d invitations available"
+msgstr[0] "%d uitnodiging beschikbaar"
+msgstr[1] "%d uitnodigingen beschikbaar"
+
+#: ../../include/contact_widgets.php:19 ../../mod/admin.php:416
+msgid "Advanced"
+msgstr "Geavanceerd"
+
+#: ../../include/contact_widgets.php:22
+msgid "Find Channels"
+msgstr "Kanalen vinden"
+
+#: ../../include/contact_widgets.php:23
+msgid "Enter name or interest"
+msgstr "Vul naam of interesse in"
+
+#: ../../include/contact_widgets.php:24
+msgid "Connect/Follow"
+msgstr "Verbinden/volgen"
+
+#: ../../include/contact_widgets.php:25
+msgid "Examples: Robert Morgenstein, Fishing"
+msgstr "Voorbeeld: Robert Morgenstein, vissen"
+
+#: ../../include/contact_widgets.php:26 ../../mod/connections.php:412
+#: ../../mod/directory.php:317 ../../mod/directory.php:322
+msgid "Find"
+msgstr "Vinden"
+
+#: ../../include/contact_widgets.php:27 ../../mod/suggest.php:59
+#: ../../mod/directory.php:321
+msgid "Channel Suggestions"
+msgstr "Voorgestelde kanalen"
+
+#: ../../include/contact_widgets.php:29
+msgid "Random Profile"
+msgstr "Willekeurig profiel"
+
+#: ../../include/contact_widgets.php:30
+msgid "Invite Friends"
+msgstr "Vrienden uitnodigen"
+
+#: ../../include/contact_widgets.php:32
+msgid "Advanced example: name=fred and country=iceland"
+msgstr "Geavanceerd voorbeeld (Engels): name=jan en country=nederland"
+
+#: ../../include/contact_widgets.php:60 ../../include/contact_widgets.php:95
+#: ../../include/widgets.php:305
+msgid "Everything"
+msgstr "Alles"
+
+#: ../../include/contact_widgets.php:125
+#, php-format
+msgid "%d connection in common"
+msgid_plural "%d connections in common"
+msgstr[0] "%d gemeenschappelijke connectie"
+msgstr[1] "%d gemeenschappelijke connecties"
+
+#: ../../include/contact_widgets.php:130
+msgid "show more"
+msgstr "meer connecties weergeven"
+
+#: ../../include/event.php:376
+msgid "This event has been added to your calendar."
+msgstr "Dit evenement is aan jouw agenda toegevoegd."
+
+#: ../../include/group.php:26
+msgid ""
+"A deleted group with this name was revived. Existing item permissions "
+"<strong>may</strong> apply to this group and any future members. If this is "
+"not what you intended, please create another group with a different name."
+msgstr "Een verwijderde collectie met deze naam is gereactiveerd. Bestaande itemrechten <strong>kunnen</strong> van toepassing zijn op deze collectie en toekomstige leden. Wanneer je dit niet zo bedoeld hebt, moet je een nieuwe collectie met een andere naam aanmaken."
+
+#: ../../include/group.php:235
+msgid "Default privacy group for new contacts"
+msgstr "Standaard privacy-collectie voor nieuwe kanalen"
+
+#: ../../include/group.php:254 ../../mod/admin.php:735
+msgid "All Channels"
+msgstr "Alle kanalen"
+
+#: ../../include/group.php:276
+msgid "edit"
+msgstr "bewerken"
+
+#: ../../include/group.php:298
+msgid "Collections"
+msgstr "Collecties"
+
+#: ../../include/group.php:299
+msgid "Edit collection"
+msgstr "Collectie bewerken"
+
+#: ../../include/group.php:300
+msgid "Create a new collection"
+msgstr "Nieuwe collectie aanmaken"
+
+#: ../../include/group.php:301
+msgid "Channels not in any collection"
+msgstr "Kanalen die zich in geen enkele collectie bevinden"
+
+#: ../../include/group.php:303 ../../include/widgets.php:273
+msgid "add"
+msgstr "toevoegen"
+
+#: ../../include/account.php:23
+msgid "Not a valid email address"
+msgstr "Geen geldig e-mailadres"
+
+#: ../../include/account.php:25
+msgid "Your email domain is not among those allowed on this site"
+msgstr "Jouw e-maildomein is op deze RedMatrix-hub niet toegestaan"
+
+#: ../../include/account.php:31
+msgid "Your email address is already registered at this site."
+msgstr "Jouw e-mailadres is al op deze RedMatrix-hub geregistreerd."
+
+#: ../../include/account.php:64
+msgid "An invitation is required."
+msgstr "Een uitnodiging is vereist"
+
+#: ../../include/account.php:68
+msgid "Invitation could not be verified."
+msgstr "Uitnodiging kon niet geverifieerd worden"
+
+#: ../../include/account.php:119
+msgid "Please enter the required information."
+msgstr "Vul de vereiste informatie in."
+
+#: ../../include/account.php:187
+msgid "Failed to store account information."
+msgstr "Account-informatie kon niet opgeslagen worden."
+
+#: ../../include/account.php:245
+#, php-format
+msgid "Registration confirmation for %s"
+msgstr "Registratiebevestiging voor %s"
+
+#: ../../include/account.php:313
+#, php-format
+msgid "Registration request at %s"
+msgstr "Registratiebevestiging voor %s"
+
+#: ../../include/account.php:315 ../../include/account.php:342
+#: ../../include/account.php:399
+msgid "Administrator"
+msgstr "Beheerder"
+
+#: ../../include/account.php:337
+msgid "your registration password"
+msgstr "jouw registratiewachtwoord"
+
+#: ../../include/account.php:340 ../../include/account.php:397
+#, php-format
+msgid "Registration details for %s"
+msgstr "Registratiegegevens voor %s"
+
+#: ../../include/account.php:406
+msgid "Account approved."
+msgstr "Account goedgekeurd"
+
+#: ../../include/account.php:440
+#, php-format
+msgid "Registration revoked for %s"
+msgstr "Registratie ingetrokken voor %s"
+
+#: ../../include/account.php:486
+msgid "Account verified. Please login."
+msgstr "Account is geverifieerd. Je kan inloggen."
+
+#: ../../include/account.php:648 ../../include/account.php:650
+msgid "Click here to upgrade."
+msgstr "Klik hier om te upgraden."
+
+#: ../../include/account.php:656
+msgid "This action exceeds the limits set by your subscription plan."
+msgstr "Deze handeling overschrijdt de beperkingen die voor jouw abonnement gelden."
+
+#: ../../include/account.php:661
+msgid "This action is not available under your subscription plan."
+msgstr "Deze handeling is niet mogelijk met jouw abonnement."
#: ../../include/text.php:320
msgid "prev"
@@ -2307,674 +1506,1610 @@ msgstr "ouder"
msgid "newer"
msgstr "nieuwer"
-#: ../../include/text.php:729
+#: ../../include/text.php:756
msgid "No connections"
msgstr "Geen connecties"
-#: ../../include/text.php:742
+#: ../../include/text.php:772
#, php-format
msgid "%d Connection"
msgid_plural "%d Connections"
msgstr[0] "%d connectie"
msgstr[1] "%d connecties"
-#: ../../include/text.php:754
+#: ../../include/text.php:785
msgid "View Connections"
msgstr "Connecties weergeven"
-#: ../../include/text.php:815 ../../include/text.php:829
-#: ../../include/widgets.php:186 ../../mod/rbmark.php:28
-#: ../../mod/rbmark.php:98 ../../mod/filer.php:50
+#: ../../include/text.php:842 ../../include/text.php:854
+#: ../../include/apps.php:147 ../../include/nav.php:173
+#: ../../mod/search.php:30
+msgid "Search"
+msgstr "Zoeken"
+
+#: ../../include/text.php:843 ../../include/text.php:855
+#: ../../include/widgets.php:192 ../../mod/rbmark.php:28
+#: ../../mod/rbmark.php:98 ../../mod/filer.php:50 ../../mod/admin.php:1339
+#: ../../mod/admin.php:1360
msgid "Save"
msgstr "Opslaan"
-#: ../../include/text.php:895
+#: ../../include/text.php:920
msgid "poke"
msgstr "aanstoten"
-#: ../../include/text.php:896
+#: ../../include/text.php:920 ../../include/conversation.php:243
+msgid "poked"
+msgstr "aangestoten"
+
+#: ../../include/text.php:921
msgid "ping"
msgstr "ping"
-#: ../../include/text.php:896
+#: ../../include/text.php:921
msgid "pinged"
msgstr "gepingd"
-#: ../../include/text.php:897
+#: ../../include/text.php:922
msgid "prod"
msgstr "por"
-#: ../../include/text.php:897
+#: ../../include/text.php:922
msgid "prodded"
msgstr "gepord"
-#: ../../include/text.php:898
+#: ../../include/text.php:923
msgid "slap"
msgstr "slaan"
-#: ../../include/text.php:898
+#: ../../include/text.php:923
msgid "slapped"
msgstr "sloeg"
-#: ../../include/text.php:899
+#: ../../include/text.php:924
msgid "finger"
msgstr "finger"
-#: ../../include/text.php:899
+#: ../../include/text.php:924
msgid "fingered"
msgstr "gefingerd"
-#: ../../include/text.php:900
+#: ../../include/text.php:925
msgid "rebuff"
msgstr "afpoeieren"
-#: ../../include/text.php:900
+#: ../../include/text.php:925
msgid "rebuffed"
msgstr "afgepoeierd"
-#: ../../include/text.php:909
+#: ../../include/text.php:935
msgid "happy"
msgstr "gelukkig"
-#: ../../include/text.php:910
+#: ../../include/text.php:936
msgid "sad"
msgstr "bedroefd"
-#: ../../include/text.php:911
+#: ../../include/text.php:937
msgid "mellow"
msgstr "mellow"
-#: ../../include/text.php:912
+#: ../../include/text.php:938
msgid "tired"
msgstr "moe"
-#: ../../include/text.php:913
+#: ../../include/text.php:939
msgid "perky"
msgstr "parmantig"
-#: ../../include/text.php:914
+#: ../../include/text.php:940
msgid "angry"
msgstr "boos"
-#: ../../include/text.php:915
+#: ../../include/text.php:941
msgid "stupified"
msgstr "beteuterd"
-#: ../../include/text.php:916
+#: ../../include/text.php:942
msgid "puzzled"
msgstr "verward"
-#: ../../include/text.php:917
+#: ../../include/text.php:943
msgid "interested"
msgstr "geïnteresseerd"
-#: ../../include/text.php:918
+#: ../../include/text.php:944
msgid "bitter"
msgstr "verbitterd"
-#: ../../include/text.php:919
+#: ../../include/text.php:945
msgid "cheerful"
msgstr "vrolijk"
-#: ../../include/text.php:920
+#: ../../include/text.php:946
msgid "alive"
msgstr "levendig"
-#: ../../include/text.php:921
+#: ../../include/text.php:947
msgid "annoyed"
msgstr "geërgerd"
-#: ../../include/text.php:922
+#: ../../include/text.php:948
msgid "anxious"
msgstr "bezorgd"
-#: ../../include/text.php:923
+#: ../../include/text.php:949
msgid "cranky"
msgstr "humeurig"
-#: ../../include/text.php:924
+#: ../../include/text.php:950
msgid "disturbed"
msgstr "verontrust"
-#: ../../include/text.php:925
+#: ../../include/text.php:951
msgid "frustrated"
msgstr "gefrustreerd "
-#: ../../include/text.php:926
+#: ../../include/text.php:952
msgid "depressed"
msgstr "gedeprimeerd"
-#: ../../include/text.php:927
+#: ../../include/text.php:953
msgid "motivated"
msgstr "gemotiveerd"
-#: ../../include/text.php:928
+#: ../../include/text.php:954
msgid "relaxed"
msgstr "ontspannen"
-#: ../../include/text.php:929
+#: ../../include/text.php:955
msgid "surprised"
msgstr "verrast"
-#: ../../include/text.php:1090
+#: ../../include/text.php:1121
msgid "Monday"
msgstr "maandag"
-#: ../../include/text.php:1090
+#: ../../include/text.php:1121
msgid "Tuesday"
msgstr "dinsdag"
-#: ../../include/text.php:1090
+#: ../../include/text.php:1121
msgid "Wednesday"
msgstr "woensdag"
-#: ../../include/text.php:1090
+#: ../../include/text.php:1121
msgid "Thursday"
msgstr "donderdag"
-#: ../../include/text.php:1090
+#: ../../include/text.php:1121
msgid "Friday"
msgstr "vrijdag"
-#: ../../include/text.php:1090
+#: ../../include/text.php:1121
msgid "Saturday"
msgstr "zaterdag"
-#: ../../include/text.php:1090
+#: ../../include/text.php:1121
msgid "Sunday"
msgstr "zondag"
-#: ../../include/text.php:1094
+#: ../../include/text.php:1125
msgid "January"
msgstr "januari"
-#: ../../include/text.php:1094
+#: ../../include/text.php:1125
msgid "February"
msgstr "februari"
-#: ../../include/text.php:1094
+#: ../../include/text.php:1125
msgid "March"
msgstr "maart"
-#: ../../include/text.php:1094
+#: ../../include/text.php:1125
msgid "April"
msgstr "april"
-#: ../../include/text.php:1094
+#: ../../include/text.php:1125
msgid "May"
msgstr "mei"
-#: ../../include/text.php:1094
+#: ../../include/text.php:1125
msgid "June"
msgstr "juni"
-#: ../../include/text.php:1094
+#: ../../include/text.php:1125
msgid "July"
msgstr "juli"
-#: ../../include/text.php:1094
+#: ../../include/text.php:1125
msgid "August"
msgstr "augustus"
-#: ../../include/text.php:1094
+#: ../../include/text.php:1125
msgid "September"
msgstr "september"
-#: ../../include/text.php:1094
+#: ../../include/text.php:1125
msgid "October"
msgstr "oktober"
-#: ../../include/text.php:1094
+#: ../../include/text.php:1125
msgid "November"
msgstr "november"
-#: ../../include/text.php:1094
+#: ../../include/text.php:1125
msgid "December"
msgstr "december"
-#: ../../include/text.php:1172
+#: ../../include/text.php:1203
msgid "unknown.???"
msgstr "onbekend.???"
-#: ../../include/text.php:1173
+#: ../../include/text.php:1204
msgid "bytes"
msgstr "bytes"
-#: ../../include/text.php:1208
+#: ../../include/text.php:1240
msgid "remove category"
msgstr "categorie verwijderen"
-#: ../../include/text.php:1278
+#: ../../include/text.php:1309
msgid "remove from file"
msgstr "uit map verwijderen"
-#: ../../include/text.php:1343 ../../include/text.php:1355
+#: ../../include/text.php:1385 ../../include/text.php:1396
msgid "Click to open/close"
msgstr "Klik om te openen of te sluiten"
-#: ../../include/text.php:1510 ../../mod/events.php:355
+#: ../../include/text.php:1544 ../../mod/events.php:414
msgid "Link to Source"
msgstr "Originele locatie"
-#: ../../include/text.php:1529
+#: ../../include/text.php:1563
msgid "Select a page layout: "
-msgstr "Kies een paginalayout: "
+msgstr "Kies een paginalay-out: "
-#: ../../include/text.php:1532 ../../include/text.php:1597
+#: ../../include/text.php:1566 ../../include/text.php:1626
msgid "default"
msgstr "standaard"
-#: ../../include/text.php:1568
+#: ../../include/text.php:1599
msgid "Page content type: "
msgstr "Opmaakcode pagina"
-#: ../../include/text.php:1609
+#: ../../include/text.php:1638
msgid "Select an alternate language"
msgstr "Kies een andere taal"
-#: ../../include/text.php:1743
+#: ../../include/text.php:1757 ../../include/conversation.php:120
+#: ../../include/diaspora.php:1928 ../../mod/subthread.php:72
+#: ../../mod/subthread.php:174 ../../mod/like.php:290 ../../mod/tagger.php:45
+msgid "photo"
+msgstr "foto"
+
+#: ../../include/text.php:1760 ../../include/conversation.php:123
+#: ../../mod/tagger.php:49
+msgid "event"
+msgstr "gebeurtenis"
+
+#: ../../include/text.php:1763 ../../include/conversation.php:148
+#: ../../include/diaspora.php:1928 ../../mod/subthread.php:72
+#: ../../mod/subthread.php:174 ../../mod/like.php:290 ../../mod/tagger.php:53
+msgid "status"
+msgstr "bericht"
+
+#: ../../include/text.php:1765 ../../include/conversation.php:150
+#: ../../mod/tagger.php:55
+msgid "comment"
+msgstr "reactie"
+
+#: ../../include/text.php:1770
msgid "activity"
msgstr "activiteit"
-#: ../../include/text.php:2002
+#: ../../include/text.php:2057
msgid "Design"
msgstr "Ontwerp"
-#: ../../include/text.php:2004
+#: ../../include/text.php:2060
msgid "Blocks"
msgstr "Blokken"
-#: ../../include/text.php:2005
+#: ../../include/text.php:2061
msgid "Menus"
msgstr "Menu's"
-#: ../../include/text.php:2006
+#: ../../include/text.php:2062
msgid "Layouts"
-msgstr "Layouts"
+msgstr "Lay-outs"
-#: ../../include/text.php:2007
+#: ../../include/text.php:2063
msgid "Pages"
msgstr "Pagina's"
-#: ../../include/apps.php:123
-msgid "Site Admin"
-msgstr "Hubbeheerder"
+#: ../../include/api.php:1084
+msgid "Public Timeline"
+msgstr "Openbare tijdlijn"
-#: ../../include/apps.php:125
-msgid "Address Book"
-msgstr "Connecties"
+#: ../../include/chat.php:10
+msgid "Missing room name"
+msgstr "Naam chatkanaal ontbreekt"
-#: ../../include/apps.php:139 ../../mod/mood.php:131
-msgid "Mood"
-msgstr "Stemming"
+#: ../../include/chat.php:19
+msgid "Duplicate room name"
+msgstr "Naam chatkanaal bestaat al"
-#: ../../include/apps.php:143
-msgid "Probe"
-msgstr "Onderzoeken"
+#: ../../include/chat.php:68 ../../include/chat.php:76
+msgid "Invalid room specifier."
+msgstr "Ongeldige omschrijving chatkanaal"
-#: ../../include/apps.php:144
-msgid "Suggest"
-msgstr "Voorstellen"
+#: ../../include/chat.php:105
+msgid "Room not found."
+msgstr "Chatkanaal niet gevonden"
-#: ../../include/apps.php:233 ../../mod/settings.php:79
-#: ../../mod/settings.php:541
-msgid "Update"
-msgstr "Bijwerken"
+#: ../../include/chat.php:126
+msgid "Room is full"
+msgstr "Chatkanaal is vol"
-#: ../../include/apps.php:233
-msgid "Install"
-msgstr "Installeren"
+#: ../../include/follow.php:28
+msgid "Channel is blocked on this site."
+msgstr "Kanaal is op deze hub geblokkeerd."
-#: ../../include/apps.php:238
-msgid "Purchase"
-msgstr "Aanschaffen"
+#: ../../include/follow.php:33
+msgid "Channel location missing."
+msgstr "Ontbrekende kanaallocatie."
-#: ../../include/bbcode.php:128 ../../include/bbcode.php:654
-#: ../../include/bbcode.php:657 ../../include/bbcode.php:662
-#: ../../include/bbcode.php:665 ../../include/bbcode.php:668
-#: ../../include/bbcode.php:671 ../../include/bbcode.php:676
-#: ../../include/bbcode.php:679 ../../include/bbcode.php:684
-#: ../../include/bbcode.php:687 ../../include/bbcode.php:690
-#: ../../include/bbcode.php:693
-msgid "Image/photo"
-msgstr "Afbeelding/foto"
+#: ../../include/follow.php:82
+msgid "Response from remote channel was incomplete."
+msgstr "Antwoord van het kanaal op afstand was niet volledig."
-#: ../../include/bbcode.php:163 ../../include/bbcode.php:704
-msgid "Encrypted content"
-msgstr "Versleutelde inhoud"
+#: ../../include/follow.php:99
+msgid "Channel was deleted and no longer exists."
+msgstr "Kanaal is verwijderd en bestaat niet meer."
-#: ../../include/bbcode.php:179
-msgid "QR code"
-msgstr "QR-code"
+#: ../../include/follow.php:135 ../../include/follow.php:202
+msgid "Protocol disabled."
+msgstr "Protocol uitgeschakeld."
-#: ../../include/bbcode.php:228
+#: ../../include/follow.php:176
+msgid "Channel discovery failed."
+msgstr "Kanaal ontdekken mislukt."
+
+#: ../../include/follow.php:192
+msgid "local account not found."
+msgstr "lokale account niet gevonden."
+
+#: ../../include/follow.php:220
+msgid "Cannot connect to yourself."
+msgstr "Kan niet met jezelf verbinden"
+
+#: ../../include/conversation.php:126 ../../mod/like.php:89
+msgid "channel"
+msgstr "kanaal"
+
+#: ../../include/conversation.php:164 ../../include/diaspora.php:1957
+#: ../../mod/like.php:336
#, php-format
-msgid "%1$s wrote the following %2$s %3$s"
-msgstr "%1$s schreef het volgende %2$s %3$s"
+msgid "%1$s likes %2$s's %3$s"
+msgstr "%1$s vindt %3$s van %2$s leuk"
-#: ../../include/bbcode.php:230
-msgid "post"
-msgstr "bericht"
+#: ../../include/conversation.php:167 ../../mod/like.php:338
+#, php-format
+msgid "%1$s doesn't like %2$s's %3$s"
+msgstr "%1$s vindt %3$s van %2$s niet leuk"
-#: ../../include/bbcode.php:622 ../../include/bbcode.php:642
-msgid "$1 wrote:"
-msgstr "$1 schreef:"
+#: ../../include/conversation.php:204
+#, php-format
+msgid "%1$s is now connected with %2$s"
+msgstr "%1$s is nu met %2$s verbonden"
-#: ../../include/message.php:18
-msgid "No recipient provided."
-msgstr "Geen ontvanger opgegeven."
+#: ../../include/conversation.php:239
+#, php-format
+msgid "%1$s poked %2$s"
+msgstr "%1$s heeft %2$s aangestoten"
-#: ../../include/message.php:23
-msgid "[no subject]"
-msgstr "[geen onderwerp]"
+#: ../../include/conversation.php:261 ../../mod/mood.php:63
+#, php-format
+msgctxt "mood"
+msgid "%1$s is %2$s"
+msgstr "%1$s is %2$s"
-#: ../../include/message.php:42
-msgid "Unable to determine sender."
-msgstr "Afzender kan niet bepaald worden."
+#: ../../include/conversation.php:638 ../../include/ItemObject.php:126
+msgid "Select"
+msgstr "Kies"
-#: ../../include/message.php:143
-msgid "Stored post could not be verified."
-msgstr "Opgeslagen bericht kon niet worden geverifieerd."
+#: ../../include/conversation.php:646 ../../include/ItemObject.php:89
+msgid "Private Message"
+msgstr "Privébericht"
+
+#: ../../include/conversation.php:653 ../../include/ItemObject.php:194
+msgid "Message signature validated"
+msgstr "Berichtkenmerk gevalideerd"
+
+#: ../../include/conversation.php:654 ../../include/ItemObject.php:195
+msgid "Message signature incorrect"
+msgstr "Berichtkenmerk onjuist"
+
+#: ../../include/conversation.php:674
+#, php-format
+msgid "View %s's profile @ %s"
+msgstr "Bekijk het profiel van %s @ %s"
+
+#: ../../include/conversation.php:689
+msgid "Categories:"
+msgstr "Categorieën:"
+
+#: ../../include/conversation.php:690
+msgid "Filed under:"
+msgstr "Bewaard onder:"
+
+#: ../../include/conversation.php:698 ../../include/ItemObject.php:274
+#, php-format
+msgid " from %s"
+msgstr " van %s"
+
+#: ../../include/conversation.php:701 ../../include/ItemObject.php:277
+#, php-format
+msgid "last edited: %s"
+msgstr "laatst bewerkt: %s"
+
+#: ../../include/conversation.php:702 ../../include/ItemObject.php:278
+#, php-format
+msgid "Expires: %s"
+msgstr "Verloopt: %s"
+
+#: ../../include/conversation.php:717
+msgid "View in context"
+msgstr "In context bekijken"
+
+#: ../../include/conversation.php:719 ../../include/conversation.php:1142
+#: ../../include/ItemObject.php:325 ../../mod/editpost.php:121
+#: ../../mod/mail.php:238 ../../mod/mail.php:353 ../../mod/editblock.php:152
+#: ../../mod/editlayout.php:148 ../../mod/editwebpage.php:183
+#: ../../mod/photos.php:975
+msgid "Please wait"
+msgstr "Even wachten"
+
+#: ../../include/conversation.php:835
+msgid "remove"
+msgstr "verwijderen"
+
+#: ../../include/conversation.php:839 ../../include/nav.php:257
+msgid "Loading..."
+msgstr "Aan het laden..."
+
+#: ../../include/conversation.php:840
+msgid "Delete Selected Items"
+msgstr "Verwijder de geselecteerde items"
+
+#: ../../include/conversation.php:931
+msgid "View Source"
+msgstr "Bron weergeven"
+
+#: ../../include/conversation.php:932
+msgid "Follow Thread"
+msgstr "Conversatie volgen"
+
+#: ../../include/conversation.php:933
+msgid "View Status"
+msgstr "Status weergeven"
+
+#: ../../include/conversation.php:934 ../../include/nav.php:99
+#: ../../mod/connedit.php:429 ../../mod/connedit.php:545
+msgid "View Profile"
+msgstr "Profiel weergeven"
-#: ../../include/widgets.php:80
+#: ../../include/conversation.php:935
+msgid "View Photos"
+msgstr "Foto's weergeven"
+
+#: ../../include/conversation.php:936
+msgid "Matrix Activity"
+msgstr "Activiteit in de RedMatrix"
+
+#: ../../include/conversation.php:938
+msgid "Edit Contact"
+msgstr "Contact bewerken"
+
+#: ../../include/conversation.php:939
+msgid "Send PM"
+msgstr "Privébericht verzenden"
+
+#: ../../include/conversation.php:940 ../../include/apps.php:145
+msgid "Poke"
+msgstr "Aanstoten"
+
+#: ../../include/conversation.php:1013
+#, php-format
+msgid "%s likes this."
+msgstr "%s vindt dit leuk."
+
+#: ../../include/conversation.php:1013
+#, php-format
+msgid "%s doesn't like this."
+msgstr "%s vindt dit niet leuk."
+
+#: ../../include/conversation.php:1017
+#, php-format
+msgid "<span %1$s>%2$d people</span> like this."
+msgid_plural "<span %1$s>%2$d people</span> like this."
+msgstr[0] "<span %1$s>%2$d persoon</span> vindt dit leuk."
+msgstr[1] "<span %1$s>%2$d personen</span> vinden dit leuk."
+
+#: ../../include/conversation.php:1019
+#, php-format
+msgid "<span %1$s>%2$d people</span> don't like this."
+msgid_plural "<span %1$s>%2$d people</span> don't like this."
+msgstr[0] "<span %1$s>%2$d persoon</span> vindt dit niet leuk."
+msgstr[1] "<span %1$s>%2$d personen</span> vinden dit niet leuk."
+
+#: ../../include/conversation.php:1025
+msgid "and"
+msgstr "en"
+
+#: ../../include/conversation.php:1028
+#, php-format
+msgid ", and %d other people"
+msgid_plural ", and %d other people"
+msgstr[0] ", en %d ander persoon"
+msgstr[1] ", en %d andere personen"
+
+#: ../../include/conversation.php:1029
+#, php-format
+msgid "%s like this."
+msgstr "%s vinden dit leuk."
+
+#: ../../include/conversation.php:1029
+#, php-format
+msgid "%s don't like this."
+msgstr "%s vinden dit niet leuk."
+
+#: ../../include/conversation.php:1086
+msgid "Visible to <strong>everybody</strong>"
+msgstr "Voor <strong>iedereen</strong> zichtbaar"
+
+#: ../../include/conversation.php:1087 ../../mod/mail.php:171
+#: ../../mod/mail.php:286
+msgid "Please enter a link URL:"
+msgstr "Vul een internetadres/URL in:"
+
+#: ../../include/conversation.php:1088
+msgid "Please enter a video link/URL:"
+msgstr "Vul een videolink/URL in:"
+
+#: ../../include/conversation.php:1089
+msgid "Please enter an audio link/URL:"
+msgstr "Vul een audiolink/URL in:"
+
+#: ../../include/conversation.php:1090
+msgid "Tag term:"
+msgstr "Tag:"
+
+#: ../../include/conversation.php:1091 ../../mod/filer.php:49
+msgid "Save to Folder:"
+msgstr "Bewaar in map: "
+
+#: ../../include/conversation.php:1092
+msgid "Where are you right now?"
+msgstr "Waar bevind je je op dit moment?"
+
+#: ../../include/conversation.php:1093 ../../mod/editpost.php:52
+#: ../../mod/mail.php:172 ../../mod/mail.php:287
+msgid "Expires YYYY-MM-DD HH:MM"
+msgstr "Verloopt op DD-MM-YYYY om HH:MM"
+
+#: ../../include/conversation.php:1117 ../../mod/editblock.php:198
+#: ../../mod/editlayout.php:193 ../../mod/editwebpage.php:230
+#: ../../mod/layouts.php:168 ../../mod/photos.php:974
+msgid "Share"
+msgstr "Delen"
+
+#: ../../include/conversation.php:1119 ../../mod/editwebpage.php:170
+msgid "Page link title"
+msgstr "Titel van paginalink"
+
+#: ../../include/conversation.php:1122
+msgid "Post as"
+msgstr "Bericht plaatsen als"
+
+#: ../../include/conversation.php:1123 ../../mod/editpost.php:113
+#: ../../mod/mail.php:235 ../../mod/mail.php:349 ../../mod/editblock.php:144
+#: ../../mod/editlayout.php:140 ../../mod/editwebpage.php:175
+msgid "Upload photo"
+msgstr "Foto uploaden"
+
+#: ../../include/conversation.php:1124
+msgid "upload photo"
+msgstr "foto uploaden"
+
+#: ../../include/conversation.php:1125 ../../mod/editpost.php:114
+#: ../../mod/mail.php:236 ../../mod/mail.php:350 ../../mod/editblock.php:145
+#: ../../mod/editlayout.php:141 ../../mod/editwebpage.php:176
+msgid "Attach file"
+msgstr "Bestand toevoegen"
+
+#: ../../include/conversation.php:1126
+msgid "attach file"
+msgstr "bestand toevoegen"
+
+#: ../../include/conversation.php:1127 ../../mod/editpost.php:115
+#: ../../mod/mail.php:237 ../../mod/mail.php:351 ../../mod/editblock.php:146
+#: ../../mod/editlayout.php:142 ../../mod/editwebpage.php:177
+msgid "Insert web link"
+msgstr "Weblink invoegen"
+
+#: ../../include/conversation.php:1128
+msgid "web link"
+msgstr "Weblink"
+
+#: ../../include/conversation.php:1129
+msgid "Insert video link"
+msgstr "Videolink invoegen"
+
+#: ../../include/conversation.php:1130
+msgid "video link"
+msgstr "videolink"
+
+#: ../../include/conversation.php:1131
+msgid "Insert audio link"
+msgstr "Audiolink invoegen"
+
+#: ../../include/conversation.php:1132
+msgid "audio link"
+msgstr "audiolink"
+
+#: ../../include/conversation.php:1133 ../../mod/editpost.php:119
+#: ../../mod/editblock.php:150 ../../mod/editlayout.php:146
+#: ../../mod/editwebpage.php:181
+msgid "Set your location"
+msgstr "Locatie instellen"
+
+#: ../../include/conversation.php:1134
+msgid "set location"
+msgstr "locatie instellen"
+
+#: ../../include/conversation.php:1135 ../../mod/editpost.php:120
+#: ../../mod/editblock.php:151 ../../mod/editlayout.php:147
+#: ../../mod/editwebpage.php:182
+msgid "Clear browser location"
+msgstr "Locatie van webbrowser wissen"
+
+#: ../../include/conversation.php:1136
+msgid "clear location"
+msgstr "locatie wissen"
+
+#: ../../include/conversation.php:1138 ../../mod/editpost.php:132
+#: ../../mod/editblock.php:164 ../../mod/editlayout.php:159
+#: ../../mod/editwebpage.php:198
+msgid "Title (optional)"
+msgstr "Titel (optioneel)"
+
+#: ../../include/conversation.php:1141 ../../mod/editpost.php:134
+#: ../../mod/editblock.php:167 ../../mod/editlayout.php:162
+#: ../../mod/editwebpage.php:200
+msgid "Categories (optional, comma-separated list)"
+msgstr "Categorieën (optioneel, door komma's gescheiden lijst)"
+
+#: ../../include/conversation.php:1143 ../../mod/editpost.php:122
+#: ../../mod/editblock.php:153 ../../mod/editlayout.php:149
+#: ../../mod/editwebpage.php:184
+msgid "Permission settings"
+msgstr "Permissies"
+
+#: ../../include/conversation.php:1144
+msgid "permissions"
+msgstr "permissies"
+
+#: ../../include/conversation.php:1151 ../../mod/editpost.php:129
+#: ../../mod/editblock.php:161 ../../mod/editlayout.php:156
+#: ../../mod/editwebpage.php:193
+msgid "Public post"
+msgstr "Openbaar bericht"
+
+#: ../../include/conversation.php:1153 ../../mod/editpost.php:135
+#: ../../mod/editblock.php:168 ../../mod/editlayout.php:163
+#: ../../mod/editwebpage.php:201
+msgid "Example: bob@example.com, mary@example.com"
+msgstr "Voorbeeld: bob@voorbeeld.nl, mary@voorbeeld.be"
+
+#: ../../include/conversation.php:1166 ../../mod/editpost.php:146
+#: ../../mod/mail.php:242 ../../mod/mail.php:356 ../../mod/editblock.php:178
+#: ../../mod/editlayout.php:173 ../../mod/editwebpage.php:210
+msgid "Set expiration date"
+msgstr "Verloopdatum instellen"
+
+#: ../../include/conversation.php:1168 ../../include/ItemObject.php:641
+#: ../../mod/editpost.php:148 ../../mod/mail.php:244 ../../mod/mail.php:358
+msgid "Encrypt text"
+msgstr "Tekst versleutelen"
+
+#: ../../include/conversation.php:1170 ../../mod/events.php:580
+#: ../../mod/editpost.php:150
+msgid "OK"
+msgstr "OK"
+
+#: ../../include/conversation.php:1171 ../../mod/events.php:579
+#: ../../mod/editpost.php:151 ../../mod/settings.php:578
+#: ../../mod/settings.php:604 ../../mod/fbrowser.php:82
+#: ../../mod/fbrowser.php:117 ../../mod/tagrm.php:11 ../../mod/tagrm.php:134
+msgid "Cancel"
+msgstr "Annuleren"
+
+#: ../../include/conversation.php:1415
+msgid "Discover"
+msgstr "Ontdekken"
+
+#: ../../include/conversation.php:1418
+msgid "Imported public streams"
+msgstr "Openbare streams importeren"
+
+#: ../../include/conversation.php:1423
+msgid "Commented Order"
+msgstr "Nieuwe reacties bovenaan"
+
+#: ../../include/conversation.php:1426
+msgid "Sort by Comment Date"
+msgstr "Berichten met nieuwe reacties bovenaan"
+
+#: ../../include/conversation.php:1430
+msgid "Posted Order"
+msgstr "Nieuwe berichten bovenaan"
+
+#: ../../include/conversation.php:1433
+msgid "Sort by Post Date"
+msgstr "Nieuwe berichten bovenaan"
+
+#: ../../include/conversation.php:1438 ../../include/widgets.php:94
+msgid "Personal"
+msgstr "Persoonlijk"
+
+#: ../../include/conversation.php:1441
+msgid "Posts that mention or involve you"
+msgstr "Alleen berichten die jou vermelden of waar je op een andere manier bij betrokken bent"
+
+#: ../../include/conversation.php:1447 ../../mod/connections.php:211
+#: ../../mod/connections.php:224 ../../mod/menu.php:80
+msgid "New"
+msgstr "Nieuw"
+
+#: ../../include/conversation.php:1450
+msgid "Activity Stream - by date"
+msgstr "Activiteitenstroom - volgens datum"
+
+#: ../../include/conversation.php:1456
+msgid "Starred"
+msgstr "Met ster"
+
+#: ../../include/conversation.php:1459
+msgid "Favourite Posts"
+msgstr "Favoriete berichten"
+
+#: ../../include/conversation.php:1466
+msgid "Spam"
+msgstr "Spam"
+
+#: ../../include/conversation.php:1469
+msgid "Posts flagged as SPAM"
+msgstr "Berichten gemarkeerd als SPAM"
+
+#: ../../include/conversation.php:1509 ../../mod/admin.php:865
+msgid "Channel"
+msgstr "Kanaal"
+
+#: ../../include/conversation.php:1512
+msgid "Status Messages and Posts"
+msgstr "Berichten in dit kanaal"
+
+#: ../../include/conversation.php:1521
+msgid "About"
+msgstr "Over"
+
+#: ../../include/conversation.php:1524
+msgid "Profile Details"
+msgstr "Profiel"
+
+#: ../../include/conversation.php:1530 ../../include/apps.php:139
+#: ../../include/nav.php:105 ../../mod/fbrowser.php:25
+msgid "Photos"
+msgstr "Foto's"
+
+#: ../../include/conversation.php:1542
+msgid "Files and Storage"
+msgstr "Bestanden en opslagruimte"
+
+#: ../../include/conversation.php:1552 ../../include/conversation.php:1555
+msgid "Chatrooms"
+msgstr "Chatkanalen"
+
+#: ../../include/conversation.php:1565 ../../include/apps.php:129
+#: ../../include/nav.php:117
+msgid "Bookmarks"
+msgstr "Bladwijzers"
+
+#: ../../include/conversation.php:1568
+msgid "Saved Bookmarks"
+msgstr "Opgeslagen bladwijzers"
+
+#: ../../include/conversation.php:1576 ../../include/apps.php:136
+#: ../../include/nav.php:121 ../../mod/webpages.php:160
+msgid "Webpages"
+msgstr "Webpagina's"
+
+#: ../../include/conversation.php:1579
+msgid "Manage Webpages"
+msgstr "Webpagina's beheren"
+
+#: ../../include/widgets.php:91 ../../include/nav.php:171
+#: ../../mod/apps.php:34
+msgid "Apps"
+msgstr "Apps"
+
+#: ../../include/widgets.php:92
msgid "System"
msgstr "Systeem"
-#: ../../include/widgets.php:83
+#: ../../include/widgets.php:95
msgid "Create Personal App"
msgstr "Persoonlijke app maken"
-#: ../../include/widgets.php:84
+#: ../../include/widgets.php:96
msgid "Edit Personal App"
msgstr "Persoonlijke app bewerken"
-#: ../../include/widgets.php:130 ../../mod/suggest.php:53
+#: ../../include/widgets.php:138 ../../mod/suggest.php:53
msgid "Ignore/Hide"
msgstr "Negeren/Verbergen"
-#: ../../include/widgets.php:136 ../../mod/connections.php:267
+#: ../../include/widgets.php:143 ../../mod/connections.php:267
msgid "Suggestions"
msgstr "Voorgestelde kanalen"
-#: ../../include/widgets.php:137
+#: ../../include/widgets.php:144
msgid "See more..."
msgstr "Meer..."
-#: ../../include/widgets.php:159
+#: ../../include/widgets.php:166
#, php-format
msgid "You have %1$.0f of %2$.0f allowed connections."
msgstr "Je hebt %1$.0f van de %2$.0f toegestane connecties."
-#: ../../include/widgets.php:165
+#: ../../include/widgets.php:172
msgid "Add New Connection"
msgstr "Nieuwe connectie toevoegen"
-#: ../../include/widgets.php:166
+#: ../../include/widgets.php:173
msgid "Enter the channel address"
msgstr "Vul het adres van het nieuwe kanaal in"
-#: ../../include/widgets.php:167
+#: ../../include/widgets.php:174
msgid "Example: bob@example.com, http://example.com/barbara"
msgstr "Voorbeeld: bob@example.com, http://example.com/barbara"
-#: ../../include/widgets.php:184
+#: ../../include/widgets.php:190
msgid "Notes"
msgstr "Aantekeningen"
-#: ../../include/widgets.php:256
+#: ../../include/widgets.php:264
msgid "Remove term"
msgstr "Verwijder zoekterm"
-#: ../../include/widgets.php:335
+#: ../../include/widgets.php:347
msgid "Archives"
msgstr "Archieven"
-#: ../../include/widgets.php:397
+#: ../../include/widgets.php:425
msgid "Refresh"
msgstr "Vernieuwen"
-#: ../../include/widgets.php:398 ../../mod/connedit.php:428
+#: ../../include/widgets.php:426 ../../mod/connedit.php:506
msgid "Me"
msgstr "Ik"
-#: ../../include/widgets.php:399 ../../mod/connedit.php:430
+#: ../../include/widgets.php:427 ../../mod/connedit.php:509
msgid "Best Friends"
msgstr "Goede vrienden"
-#: ../../include/widgets.php:401
+#: ../../include/widgets.php:429
msgid "Co-workers"
msgstr "Collega's"
-#: ../../include/widgets.php:402 ../../mod/connedit.php:432
+#: ../../include/widgets.php:430 ../../mod/connedit.php:511
msgid "Former Friends"
msgstr "Oude vrienden"
-#: ../../include/widgets.php:403 ../../mod/connedit.php:433
+#: ../../include/widgets.php:431 ../../mod/connedit.php:512
msgid "Acquaintances"
msgstr "Kennissen"
-#: ../../include/widgets.php:404
+#: ../../include/widgets.php:432
msgid "Everybody"
msgstr "Iedereen"
-#: ../../include/widgets.php:436
+#: ../../include/widgets.php:466
msgid "Account settings"
msgstr "Account"
-#: ../../include/widgets.php:442
+#: ../../include/widgets.php:472
msgid "Channel settings"
msgstr "Kanaal"
-#: ../../include/widgets.php:448
+#: ../../include/widgets.php:478
msgid "Additional features"
msgstr "Extra functies"
-#: ../../include/widgets.php:454
+#: ../../include/widgets.php:484
msgid "Feature settings"
msgstr "Plug-ins"
-#: ../../include/widgets.php:460
+#: ../../include/widgets.php:490
msgid "Display settings"
msgstr "Weergave"
-#: ../../include/widgets.php:466
+#: ../../include/widgets.php:496
msgid "Connected apps"
msgstr "Verbonden applicaties"
-#: ../../include/widgets.php:472
+#: ../../include/widgets.php:502
msgid "Export channel"
msgstr "Kanaal exporteren"
-#: ../../include/widgets.php:484
-msgid "Automatic Permissions (Advanced)"
-msgstr "Automatische privacy-rechten (geavanceerd)"
+#: ../../include/widgets.php:511 ../../mod/connedit.php:539
+msgid "Connection Default Permissions"
+msgstr "Standaard permissies voor connecties"
-#: ../../include/widgets.php:494
+#: ../../include/widgets.php:519
msgid "Premium Channel Settings"
msgstr "Instellingen premiumkanaal"
-#: ../../include/widgets.php:531
+#: ../../include/widgets.php:535 ../../include/apps.php:134
+#: ../../include/nav.php:218 ../../mod/admin.php:951 ../../mod/admin.php:1156
+msgid "Settings"
+msgstr "Instellingen"
+
+#: ../../include/widgets.php:548 ../../mod/mail.php:125
+#: ../../mod/message.php:31
+msgid "Messages"
+msgstr "Berichten"
+
+#: ../../include/widgets.php:551
msgid "Check Mail"
msgstr "Controleer op nieuwe berichten"
-#: ../../include/widgets.php:612
+#: ../../include/widgets.php:556 ../../include/nav.php:209
+msgid "New Message"
+msgstr "Nieuw bericht"
+
+#: ../../include/widgets.php:634
msgid "Chat Rooms"
msgstr "Chatkanalen"
-#: ../../include/widgets.php:630
+#: ../../include/widgets.php:654
msgid "Bookmarked Chatrooms"
msgstr "Bladwijzers van chatkanalen"
-#: ../../include/widgets.php:648
+#: ../../include/widgets.php:674
msgid "Suggested Chatrooms"
msgstr "Voorgestelde chatkanalen"
-#: ../../include/ItemObject.php:118
+#: ../../include/widgets.php:801 ../../include/widgets.php:859
+msgid "photo/image"
+msgstr "foto/afbeelding"
+
+#: ../../include/zot.php:664
+msgid "Invalid data packet"
+msgstr "Datapakket ongeldig"
+
+#: ../../include/zot.php:680
+msgid "Unable to verify channel signature"
+msgstr "Kanaalkenmerk kon niet worden geverifieerd. "
+
+#: ../../include/zot.php:1829
+#, php-format
+msgid "Unable to verify site signature for %s"
+msgstr "Hubkenmerk voor %s kon niet worden geverifieerd"
+
+#: ../../include/ItemObject.php:130
msgid "Save to Folder"
msgstr "In map opslaan"
-#: ../../include/ItemObject.php:130 ../../include/ItemObject.php:142
+#: ../../include/ItemObject.php:142 ../../include/ItemObject.php:154
+#: ../../mod/photos.php:1020 ../../mod/photos.php:1032
msgid "View all"
msgstr "Toon alles"
-#: ../../include/ItemObject.php:139
+#: ../../include/ItemObject.php:151 ../../mod/photos.php:1029
msgctxt "noun"
msgid "Dislike"
msgid_plural "Dislikes"
msgstr[0] "vindt dit niet leuk"
msgstr[1] "vinden dit niet leuk"
-#: ../../include/ItemObject.php:167
+#: ../../include/ItemObject.php:179
msgid "Add Star"
msgstr "Ster toevoegen"
-#: ../../include/ItemObject.php:168
+#: ../../include/ItemObject.php:180
msgid "Remove Star"
msgstr "Ster verwijderen"
-#: ../../include/ItemObject.php:169
+#: ../../include/ItemObject.php:181
msgid "Toggle Star Status"
msgstr "Ster toevoegen of verwijderen"
-#: ../../include/ItemObject.php:173
+#: ../../include/ItemObject.php:185
msgid "starred"
msgstr "met ster"
-#: ../../include/ItemObject.php:190
+#: ../../include/ItemObject.php:203
msgid "Add Tag"
-msgstr "Label toevoegen"
+msgstr "Tag toevoegen"
-#: ../../include/ItemObject.php:208 ../../mod/photos.php:974
+#: ../../include/ItemObject.php:221 ../../mod/photos.php:972
msgid "I like this (toggle)"
msgstr "Vind ik leuk"
-#: ../../include/ItemObject.php:209 ../../mod/photos.php:975
+#: ../../include/ItemObject.php:222 ../../mod/photos.php:973
msgid "I don't like this (toggle)"
msgstr "Vind ik niet leuk"
-#: ../../include/ItemObject.php:211
+#: ../../include/ItemObject.php:226
msgid "Share This"
msgstr "Delen"
-#: ../../include/ItemObject.php:211
+#: ../../include/ItemObject.php:226
msgid "share"
msgstr "delen"
-#: ../../include/ItemObject.php:235 ../../include/ItemObject.php:236
+#: ../../include/ItemObject.php:243
+#, php-format
+msgid "%d comment"
+msgid_plural "%d comments"
+msgstr[0] "%d reactie"
+msgstr[1] "%d reacties weergeven"
+
+#: ../../include/ItemObject.php:256 ../../include/ItemObject.php:257
#, php-format
msgid "View %s's profile - %s"
msgstr "Profiel van %s bekijken - %s"
-#: ../../include/ItemObject.php:237
+#: ../../include/ItemObject.php:260
msgid "to"
msgstr "aan"
-#: ../../include/ItemObject.php:238
+#: ../../include/ItemObject.php:261
msgid "via"
msgstr "via"
-#: ../../include/ItemObject.php:239
+#: ../../include/ItemObject.php:262
msgid "Wall-to-Wall"
msgstr "Kanaal-naar-kanaal"
-#: ../../include/ItemObject.php:240
+#: ../../include/ItemObject.php:263
msgid "via Wall-To-Wall:"
msgstr "via kanaal-naar-kanaal"
-#: ../../include/ItemObject.php:274
+#: ../../include/ItemObject.php:299
msgid "Save Bookmarks"
msgstr "Bladwijzers opslaan"
-#: ../../include/ItemObject.php:275
+#: ../../include/ItemObject.php:300
msgid "Add to Calendar"
msgstr "Aan agenda toevoegen"
-#: ../../include/ItemObject.php:283
+#: ../../include/ItemObject.php:309
+msgid "Mark all seen"
+msgstr "Markeer alles als bekeken"
+
+#: ../../include/ItemObject.php:314 ../../mod/photos.php:1140
msgctxt "noun"
msgid "Likes"
msgstr "vinden dit leuk"
-#: ../../include/ItemObject.php:284
+#: ../../include/ItemObject.php:315 ../../mod/photos.php:1141
msgctxt "noun"
msgid "Dislikes"
msgstr "vinden dit niet leuk"
-#: ../../include/ItemObject.php:315
-#, php-format
-msgid "%d comment"
-msgid_plural "%d comments"
-msgstr[0] "%d reactie"
-msgstr[1] "%d reacties weergeven"
-
-#: ../../include/ItemObject.php:316 ../../include/js_strings.php:7
+#: ../../include/ItemObject.php:345 ../../include/js_strings.php:7
msgid "[+] show all"
msgstr "[+] alle"
-#: ../../include/ItemObject.php:580 ../../mod/photos.php:993
-#: ../../mod/photos.php:1080
+#: ../../include/ItemObject.php:626 ../../mod/photos.php:991
+#: ../../mod/photos.php:1101
msgid "This is you"
msgstr "Dit ben jij"
-#: ../../include/ItemObject.php:582 ../../include/js_strings.php:6
-#: ../../mod/photos.php:995 ../../mod/photos.php:1082
+#: ../../include/ItemObject.php:628 ../../include/js_strings.php:6
+#: ../../mod/photos.php:993 ../../mod/photos.php:1103
msgid "Comment"
msgstr "Reactie"
-#: ../../include/ItemObject.php:583 ../../mod/mood.php:135
-#: ../../mod/settings.php:515 ../../mod/settings.php:627
-#: ../../mod/settings.php:655 ../../mod/settings.php:679
-#: ../../mod/settings.php:749 ../../mod/settings.php:927
-#: ../../mod/poke.php:166 ../../mod/profiles.php:515 ../../mod/chat.php:177
-#: ../../mod/chat.php:211 ../../mod/connect.php:92 ../../mod/connedit.php:476
-#: ../../mod/setup.php:307 ../../mod/setup.php:350 ../../mod/pdledit.php:58
-#: ../../mod/photos.php:563 ../../mod/photos.php:668 ../../mod/photos.php:956
-#: ../../mod/photos.php:996 ../../mod/photos.php:1083
+#: ../../include/ItemObject.php:629 ../../mod/mood.php:135
+#: ../../mod/group.php:81 ../../mod/poke.php:166 ../../mod/profiles.php:650
#: ../../mod/sources.php:104 ../../mod/sources.php:138
-#: ../../mod/events.php:492 ../../mod/filestorage.php:137
-#: ../../mod/fsuggest.php:108 ../../mod/group.php:81 ../../mod/admin.php:442
-#: ../../mod/admin.php:751 ../../mod/admin.php:886 ../../mod/admin.php:1019
-#: ../../mod/admin.php:1218 ../../mod/admin.php:1305 ../../mod/thing.php:286
-#: ../../mod/thing.php:329 ../../mod/import.php:393 ../../mod/invite.php:156
-#: ../../mod/mail.php:219 ../../mod/mail.php:332 ../../mod/appman.php:99
-#: ../../view/theme/apw/php/config.php:256
-#: ../../view/theme/blogga/php/config.php:67
-#: ../../view/theme/blogga/view/theme/blog/config.php:67
+#: ../../mod/events.php:598 ../../mod/chat.php:177 ../../mod/chat.php:211
+#: ../../mod/settings.php:577 ../../mod/settings.php:689
+#: ../../mod/settings.php:718 ../../mod/settings.php:741
+#: ../../mod/settings.php:823 ../../mod/settings.php:1016
+#: ../../mod/connedit.php:556 ../../mod/mail.php:352 ../../mod/pdledit.php:58
+#: ../../mod/thing.php:284 ../../mod/thing.php:327 ../../mod/fsuggest.php:108
+#: ../../mod/filestorage.php:150 ../../mod/connect.php:93
+#: ../../mod/locs.php:99 ../../mod/import.php:504 ../../mod/setup.php:313
+#: ../../mod/setup.php:358 ../../mod/admin.php:412 ../../mod/admin.php:723
+#: ../../mod/admin.php:859 ../../mod/admin.php:992 ../../mod/admin.php:1191
+#: ../../mod/admin.php:1278 ../../mod/invite.php:142 ../../mod/xchan.php:11
+#: ../../mod/photos.php:594 ../../mod/photos.php:671 ../../mod/photos.php:954
+#: ../../mod/photos.php:994 ../../mod/photos.php:1104 ../../mod/appman.php:99
+#: ../../mod/poll.php:68 ../../view/theme/apw/php/config.php:256
#: ../../view/theme/redbasic/php/config.php:99
msgid "Submit"
msgstr "Opslaan"
-#: ../../include/ItemObject.php:584
+#: ../../include/ItemObject.php:630
msgid "Bold"
msgstr "Vet"
-#: ../../include/ItemObject.php:585
+#: ../../include/ItemObject.php:631
msgid "Italic"
msgstr "Cursief"
-#: ../../include/ItemObject.php:586
+#: ../../include/ItemObject.php:632
msgid "Underline"
msgstr "Onderstrepen"
-#: ../../include/ItemObject.php:587
+#: ../../include/ItemObject.php:633
msgid "Quote"
msgstr "Citeren"
-#: ../../include/ItemObject.php:588
+#: ../../include/ItemObject.php:634
msgid "Code"
msgstr "Broncode"
-#: ../../include/ItemObject.php:589
+#: ../../include/ItemObject.php:635
msgid "Image"
msgstr "Afbeelding"
-#: ../../include/ItemObject.php:590
+#: ../../include/ItemObject.php:636
msgid "Link"
msgstr "Link"
-#: ../../include/ItemObject.php:591
+#: ../../include/ItemObject.php:637
msgid "Video"
msgstr "Video"
+#: ../../include/datetime.php:35
+msgid "Miscellaneous"
+msgstr "Diversen"
+
+#: ../../include/datetime.php:113
+msgid "YYYY-MM-DD or MM-DD"
+msgstr "JJJJ-MM-DD of MM-DD"
+
+#: ../../include/datetime.php:230
+msgid "never"
+msgstr "nooit"
+
+#: ../../include/datetime.php:236
+msgid "less than a second ago"
+msgstr "minder dan een seconde geleden"
+
+#: ../../include/datetime.php:239
+msgid "year"
+msgstr "jaar"
+
+#: ../../include/datetime.php:239
+msgid "years"
+msgstr "jaren"
+
+#: ../../include/datetime.php:240
+msgid "month"
+msgstr "maand"
+
+#: ../../include/datetime.php:240
+msgid "months"
+msgstr "maanden"
+
+#: ../../include/datetime.php:241
+msgid "week"
+msgstr "week"
+
+#: ../../include/datetime.php:241
+msgid "weeks"
+msgstr "weken"
+
+#: ../../include/datetime.php:242
+msgid "day"
+msgstr "dag"
+
+#: ../../include/datetime.php:242
+msgid "days"
+msgstr "dagen"
+
+#: ../../include/datetime.php:243
+msgid "hour"
+msgstr "uur"
+
+#: ../../include/datetime.php:243
+msgid "hours"
+msgstr "uren"
+
+#: ../../include/datetime.php:244
+msgid "minute"
+msgstr "minuut"
+
+#: ../../include/datetime.php:244
+msgid "minutes"
+msgstr "minuten"
+
+#: ../../include/datetime.php:245
+msgid "second"
+msgstr "seconde"
+
+#: ../../include/datetime.php:245
+msgid "seconds"
+msgstr "seconden"
+
+#: ../../include/datetime.php:254
+#, php-format
+msgid "%1$d %2$s ago"
+msgstr "%1$d %2$s geleden"
+
+#: ../../include/datetime.php:462
+#, php-format
+msgid "%1$s's birthday"
+msgstr "Verjaardag van %1$s"
+
+#: ../../include/datetime.php:463
+#, php-format
+msgid "Happy Birthday %1$s"
+msgstr "Gefeliciteerd met je verjaardag %1$s"
+
+#: ../../include/apps.php:128
+msgid "Site Admin"
+msgstr "Hubbeheerder"
+
+#: ../../include/apps.php:130
+msgid "Address Book"
+msgstr "Connecties"
+
+#: ../../include/apps.php:131 ../../include/nav.php:125 ../../boot.php:1542
+msgid "Login"
+msgstr "Inloggen"
+
+#: ../../include/apps.php:132 ../../include/nav.php:216
+#: ../../mod/manage.php:150
+msgid "Channel Manager"
+msgstr "Kanaalbeheer"
+
+#: ../../include/apps.php:133 ../../include/nav.php:190
+msgid "Matrix"
+msgstr "Matrix"
+
+#: ../../include/apps.php:137 ../../include/nav.php:193
+msgid "Channel Home"
+msgstr "Tijdlijn kanaal"
+
+#: ../../include/apps.php:140 ../../include/nav.php:212
+#: ../../mod/events.php:442
+msgid "Events"
+msgstr "Agenda"
+
+#: ../../include/apps.php:141 ../../include/nav.php:176
+#: ../../mod/directory.php:321
+msgid "Directory"
+msgstr "Kanalengids"
+
+#: ../../include/apps.php:142 ../../include/nav.php:168 ../../mod/help.php:58
+#: ../../mod/help.php:63
+msgid "Help"
+msgstr "Hulp"
+
+#: ../../include/apps.php:143 ../../include/nav.php:204
+msgid "Mail"
+msgstr "Privéberichten"
+
+#: ../../include/apps.php:144 ../../mod/mood.php:131
+msgid "Mood"
+msgstr "Stemming"
+
+#: ../../include/apps.php:146 ../../include/nav.php:111
+msgid "Chat"
+msgstr "Chatten"
+
+#: ../../include/apps.php:148
+msgid "Probe"
+msgstr "Onderzoeken"
+
+#: ../../include/apps.php:149
+msgid "Suggest"
+msgstr "Voorstellen"
+
+#: ../../include/apps.php:150
+msgid "Random Channel"
+msgstr "Willekeurig kanaal"
+
+#: ../../include/apps.php:151
+msgid "Invite"
+msgstr "Uitnodigen "
+
+#: ../../include/apps.php:152
+msgid "Features"
+msgstr "Extra functies"
+
+#: ../../include/apps.php:153
+msgid "Language"
+msgstr "Taal"
+
+#: ../../include/apps.php:154
+msgid "Post"
+msgstr "Bericht"
+
+#: ../../include/apps.php:155
+msgid "Profile Photo"
+msgstr "Profielfoto"
+
+#: ../../include/apps.php:247 ../../mod/settings.php:81
+#: ../../mod/settings.php:603
+msgid "Update"
+msgstr "Bijwerken"
+
+#: ../../include/apps.php:247
+msgid "Install"
+msgstr "Installeren"
+
+#: ../../include/apps.php:252
+msgid "Purchase"
+msgstr "Aanschaffen"
+
+#: ../../include/Contact.php:123
+msgid "New window"
+msgstr "Nieuw venster"
+
+#: ../../include/Contact.php:124
+msgid "Open the selected location in a different window or browser tab"
+msgstr "Open de geselecteerde locatie in een ander venster of tab"
+
+#: ../../include/Contact.php:214 ../../mod/admin.php:646
+#, php-format
+msgid "User '%s' deleted"
+msgstr "Account '%s' verwijderd"
+
+#: ../../include/bbcode.php:112 ../../include/bbcode.php:677
+#: ../../include/bbcode.php:680 ../../include/bbcode.php:685
+#: ../../include/bbcode.php:688 ../../include/bbcode.php:691
+#: ../../include/bbcode.php:694 ../../include/bbcode.php:699
+#: ../../include/bbcode.php:702 ../../include/bbcode.php:707
+#: ../../include/bbcode.php:710 ../../include/bbcode.php:713
+#: ../../include/bbcode.php:716
+msgid "Image/photo"
+msgstr "Afbeelding/foto"
+
+#: ../../include/bbcode.php:147 ../../include/bbcode.php:727
+msgid "Encrypted content"
+msgstr "Versleutelde inhoud"
+
+#: ../../include/bbcode.php:165
+msgid "Install design element: "
+msgstr "Installeer ontwerp-onderdeel"
+
+#: ../../include/bbcode.php:171
+msgid "QR code"
+msgstr "QR-code"
+
+#: ../../include/bbcode.php:220
+#, php-format
+msgid "%1$s wrote the following %2$s %3$s"
+msgstr "%1$s schreef het volgende %2$s %3$s"
+
+#: ../../include/bbcode.php:222
+msgid "post"
+msgstr "bericht"
+
+#: ../../include/bbcode.php:645
+msgid "$1 spoiler"
+msgstr "$1 spoiler"
+
+#: ../../include/bbcode.php:665
+msgid "$1 wrote:"
+msgstr "$1 schreef:"
+
+#: ../../include/enotify.php:41
+msgid "Red Matrix Notification"
+msgstr "RedMatrix-notificatie"
+
+#: ../../include/enotify.php:42
+msgid "redmatrix"
+msgstr "RedMatrix"
+
+#: ../../include/enotify.php:44
+msgid "Thank You,"
+msgstr "Bedankt,"
+
+#: ../../include/enotify.php:46
+#, php-format
+msgid "%s Administrator"
+msgstr "Beheerder %s"
+
+#: ../../include/enotify.php:81
+#, php-format
+msgid "%s <!item_type!>"
+msgstr "%s <!item_type!>"
+
+#: ../../include/enotify.php:85
+#, php-format
+msgid "[Red:Notify] New mail received at %s"
+msgstr "[Red:Notificatie] Nieuw privébericht ontvangen op %s"
+
+#: ../../include/enotify.php:87
+#, php-format
+msgid "%1$s, %2$s sent you a new private message at %3$s."
+msgstr "%1$s, %2$s zond jou een nieuw privébericht om %3$s."
+
+#: ../../include/enotify.php:88
+#, php-format
+msgid "%1$s sent you %2$s."
+msgstr "%1$s zond jou %2$s."
+
+#: ../../include/enotify.php:88
+msgid "a private message"
+msgstr "een privébericht"
+
+#: ../../include/enotify.php:89
+#, php-format
+msgid "Please visit %s to view and/or reply to your private messages."
+msgstr "Bezoek %s om je privéberichten te bekijken en/of er op te reageren."
+
+#: ../../include/enotify.php:144
+#, php-format
+msgid "%1$s, %2$s commented on [zrl=%3$s]a %4$s[/zrl]"
+msgstr "%1$s, %2$s gaf een reactie op [zrl=%3$s]een %4$s[/zrl]"
+
+#: ../../include/enotify.php:152
+#, php-format
+msgid "%1$s, %2$s commented on [zrl=%3$s]%4$s's %5$s[/zrl]"
+msgstr "%1$s, %2$s gaf een reactie op [zrl=%3$s]een %5$s van %4$s[/zrl]"
+
+#: ../../include/enotify.php:161
+#, php-format
+msgid "%1$s, %2$s commented on [zrl=%3$s]your %4$s[/zrl]"
+msgstr "%1$s, %2$s gaf een reactie op [zrl=%3$s]jouw %4$s[/zrl]"
+
+#: ../../include/enotify.php:172
+#, php-format
+msgid "[Red:Notify] Comment to conversation #%1$d by %2$s"
+msgstr "[Red:Notificatie] Reactie op conversatie #%1$d door %2$s"
+
+#: ../../include/enotify.php:173
+#, php-format
+msgid "%1$s, %2$s commented on an item/conversation you have been following."
+msgstr "%1$s, %2$s gaf een reactie op een bericht/conversatie die jij volgt."
+
+#: ../../include/enotify.php:176 ../../include/enotify.php:191
+#: ../../include/enotify.php:217 ../../include/enotify.php:236
+#: ../../include/enotify.php:250
+#, php-format
+msgid "Please visit %s to view and/or reply to the conversation."
+msgstr "Bezoek %s om de conversatie te bekijken en/of er op te reageren."
+
+#: ../../include/enotify.php:182
+#, php-format
+msgid "[Red:Notify] %s posted to your profile wall"
+msgstr "[Red:Notificatie] %s heeft een bericht op jouw kanaal geplaatst"
+
+#: ../../include/enotify.php:184
+#, php-format
+msgid "%1$s, %2$s posted to your profile wall at %3$s"
+msgstr "%1$s, %2$s heeft om %3$s een bericht op jouw kanaal geplaatst"
+
+#: ../../include/enotify.php:186
+#, php-format
+msgid "%1$s, %2$s posted to [zrl=%3$s]your wall[/zrl]"
+msgstr "%1$s, %2$s heeft een bericht op [zrl=%3$s]jouw kanaal[/zrl] geplaatst"
+
+#: ../../include/enotify.php:210
+#, php-format
+msgid "[Red:Notify] %s tagged you"
+msgstr "[Red:Notificatie] %s heeft je genoemd"
+
+#: ../../include/enotify.php:211
+#, php-format
+msgid "%1$s, %2$s tagged you at %3$s"
+msgstr "%1$s, %2$s noemde jou op %3$s"
+
+#: ../../include/enotify.php:212
+#, php-format
+msgid "%1$s, %2$s [zrl=%3$s]tagged you[/zrl]."
+msgstr "%1$s, %2$s [zrl=%3$s]noemde jou[/zrl]."
+
+#: ../../include/enotify.php:225
+#, php-format
+msgid "[Red:Notify] %1$s poked you"
+msgstr "[Red:Notificatie] %1$s heeft je aangestoten"
+
+#: ../../include/enotify.php:226
+#, php-format
+msgid "%1$s, %2$s poked you at %3$s"
+msgstr "%1$s, %2$s heeft je aangestoten op %3$s"
+
+#: ../../include/enotify.php:227
+#, php-format
+msgid "%1$s, %2$s [zrl=%2$s]poked you[/zrl]."
+msgstr "%1$s, %2$s [zrl=%2$s]heeft je aangestoten[/zrl]."
+
+#: ../../include/enotify.php:243
+#, php-format
+msgid "[Red:Notify] %s tagged your post"
+msgstr "[Red:Notificatie] %s heeft jouw bericht getagd"
+
+#: ../../include/enotify.php:244
+#, php-format
+msgid "%1$s, %2$s tagged your post at %3$s"
+msgstr "%1$s, %2$s heeft jouw bericht om %3$s getagd"
+
+#: ../../include/enotify.php:245
+#, php-format
+msgid "%1$s, %2$s tagged [zrl=%3$s]your post[/zrl]"
+msgstr "%1$s, %2$s heeft [zrl=%3$s]jouw bericht[/zrl] getagd"
+
+#: ../../include/enotify.php:257
+msgid "[Red:Notify] Introduction received"
+msgstr "[Red:Notificatie] Connectieverzoek ontvangen"
+
+#: ../../include/enotify.php:258
+#, php-format
+msgid "%1$s, you've received an new connection request from '%2$s' at %3$s"
+msgstr "%1$s, je hebt een nieuw connectieverzoek ontvangen van '%2$s' op %3$s"
+
+#: ../../include/enotify.php:259
+#, php-format
+msgid ""
+"%1$s, you've received [zrl=%2$s]a new connection request[/zrl] from %3$s."
+msgstr "%1$s, je hebt een [zrl=%2$s]nieuw connectieverzoek[/zrl] ontvangen van %3$s."
+
+#: ../../include/enotify.php:263 ../../include/enotify.php:282
+#, php-format
+msgid "You may visit their profile at %s"
+msgstr "Je kan het profiel bekijken op %s"
+
+#: ../../include/enotify.php:265
+#, php-format
+msgid "Please visit %s to approve or reject the connection request."
+msgstr "Bezoek %s om het connectieverzoek te accepteren of af te wijzen."
+
+#: ../../include/enotify.php:272
+msgid "[Red:Notify] Friend suggestion received"
+msgstr "[Red:Notificatie] Kanaalvoorstel ontvangen"
+
+#: ../../include/enotify.php:273
+#, php-format
+msgid "%1$s, you've received a friend suggestion from '%2$s' at %3$s"
+msgstr "%1$s, je hebt een kanaalvoorstel ontvangen van '%2$s' om %3$s"
+
+#: ../../include/enotify.php:274
+#, php-format
+msgid ""
+"%1$s, you've received [zrl=%2$s]a friend suggestion[/zrl] for %3$s from "
+"%4$s."
+msgstr "%1$s, je hebt [zrl=%2$s]een kanaalvoorstel[/zrl] ontvangen voor %3$s van %4$s."
+
+#: ../../include/enotify.php:280
+msgid "Name:"
+msgstr "Naam:"
+
+#: ../../include/enotify.php:281
+msgid "Photo:"
+msgstr "Foto:"
+
+#: ../../include/enotify.php:284
+#, php-format
+msgid "Please visit %s to approve or reject the suggestion."
+msgstr "Bezoek %s om het voorstel te accepteren of af te wijzen."
+
+#: ../../include/enotify.php:490
+msgid "[Red:Notify]"
+msgstr "[Red:Notificatie]"
+
#: ../../include/js_strings.php:5
msgid "Delete this item?"
msgstr "Dit item verwijderen?"
@@ -3013,98 +3148,96 @@ msgstr "Wachtwoordhint"
#: ../../include/js_strings.php:16
msgid "Notice: Permissions have changed but have not yet been submitted."
-msgstr "Mededeling: de privacy-rechten zijn veranderd, maar zijn nog niet opgeslagen."
+msgstr "Mededeling: de permissies zijn veranderd, maar zijn nog niet opgeslagen."
#: ../../include/js_strings.php:17
msgid "close all"
msgstr "Alles sluiten"
-#: ../../include/js_strings.php:19
+#: ../../include/js_strings.php:18
+msgid "Nothing new here"
+msgstr "Niets nieuw hier"
+
+#: ../../include/js_strings.php:20
msgid "timeago.prefixAgo"
msgstr "timeago.prefixAgo"
-#: ../../include/js_strings.php:20
+#: ../../include/js_strings.php:21
msgid "timeago.prefixFromNow"
msgstr "timeago.prefixFromNow"
-#: ../../include/js_strings.php:21
+#: ../../include/js_strings.php:22
msgid "ago"
msgstr "geleden"
-#: ../../include/js_strings.php:22
+#: ../../include/js_strings.php:23
msgid "from now"
msgstr "vanaf nu"
-#: ../../include/js_strings.php:23
+#: ../../include/js_strings.php:24
msgid "less than a minute"
msgstr "minder dan een minuut"
-#: ../../include/js_strings.php:24
+#: ../../include/js_strings.php:25
msgid "about a minute"
msgstr "ongeveer een minuut"
-#: ../../include/js_strings.php:25
+#: ../../include/js_strings.php:26
#, php-format
msgid "%d minutes"
msgstr "%d minuten"
-#: ../../include/js_strings.php:26
+#: ../../include/js_strings.php:27
msgid "about an hour"
msgstr "ongeveer een uur"
-#: ../../include/js_strings.php:27
+#: ../../include/js_strings.php:28
#, php-format
msgid "about %d hours"
msgstr "ongeveer %d uren"
-#: ../../include/js_strings.php:28
+#: ../../include/js_strings.php:29
msgid "a day"
msgstr "een dag"
-#: ../../include/js_strings.php:29
+#: ../../include/js_strings.php:30
#, php-format
msgid "%d days"
msgstr "%d dagen"
-#: ../../include/js_strings.php:30
+#: ../../include/js_strings.php:31
msgid "about a month"
msgstr "ongeveer een maand"
-#: ../../include/js_strings.php:31
+#: ../../include/js_strings.php:32
#, php-format
msgid "%d months"
msgstr "%d maanden"
-#: ../../include/js_strings.php:32
+#: ../../include/js_strings.php:33
msgid "about a year"
msgstr "ongeveer een jaar"
-#: ../../include/js_strings.php:33
+#: ../../include/js_strings.php:34
#, php-format
msgid "%d years"
msgstr "%d jaren"
-#: ../../include/js_strings.php:34
+#: ../../include/js_strings.php:35
msgid " "
msgstr " "
-#: ../../include/js_strings.php:35
+#: ../../include/js_strings.php:36
msgid "timeago.numbers"
msgstr "timeago.numbers"
-#: ../../include/Contact.php:123
-msgid "New window"
-msgstr "Nieuw venster"
-
-#: ../../include/Contact.php:124
-msgid "Open the selected location in a different window or browser tab"
-msgstr "Open de geselecteerde locatie in een ander venster of tab"
-
#: ../../include/profile_selectors.php:6
+#: ../../include/profile_selectors.php:23
msgid "Male"
msgstr "Man"
#: ../../include/profile_selectors.php:6
+#: ../../include/profile_selectors.php:23
msgid "Female"
msgstr "Vrouw"
@@ -3149,905 +3282,659 @@ msgid "Non-specific"
msgstr "Niet gespecificeerd"
#: ../../include/profile_selectors.php:6
-msgid "Other"
-msgstr "Anders"
-
-#: ../../include/profile_selectors.php:6
msgid "Undecided"
msgstr "Nog niet beslist"
-#: ../../include/profile_selectors.php:23
+#: ../../include/profile_selectors.php:42
+#: ../../include/profile_selectors.php:61
msgid "Males"
msgstr "Mannen"
-#: ../../include/profile_selectors.php:23
+#: ../../include/profile_selectors.php:42
+#: ../../include/profile_selectors.php:61
msgid "Females"
msgstr "Vrouwen"
-#: ../../include/profile_selectors.php:23
+#: ../../include/profile_selectors.php:42
msgid "Gay"
msgstr "Homoseksueel"
-#: ../../include/profile_selectors.php:23
+#: ../../include/profile_selectors.php:42
msgid "Lesbian"
msgstr "Lesbisch"
-#: ../../include/profile_selectors.php:23
+#: ../../include/profile_selectors.php:42
msgid "No Preference"
msgstr "Geen voorkeur"
-#: ../../include/profile_selectors.php:23
+#: ../../include/profile_selectors.php:42
msgid "Bisexual"
msgstr "Biseksueel"
-#: ../../include/profile_selectors.php:23
+#: ../../include/profile_selectors.php:42
msgid "Autosexual"
msgstr "Autoseksueel"
-#: ../../include/profile_selectors.php:23
+#: ../../include/profile_selectors.php:42
msgid "Abstinent"
msgstr "Seksuele onthouding"
-#: ../../include/profile_selectors.php:23
+#: ../../include/profile_selectors.php:42
msgid "Virgin"
msgstr "Maagd"
-#: ../../include/profile_selectors.php:23
+#: ../../include/profile_selectors.php:42
msgid "Deviant"
msgstr "Afwijkend"
-#: ../../include/profile_selectors.php:23
+#: ../../include/profile_selectors.php:42
msgid "Fetish"
msgstr "Fetisj"
-#: ../../include/profile_selectors.php:23
+#: ../../include/profile_selectors.php:42
msgid "Oodles"
msgstr "Veel"
-#: ../../include/profile_selectors.php:23
+#: ../../include/profile_selectors.php:42
msgid "Nonsexual"
msgstr "Aseksueel"
-#: ../../include/profile_selectors.php:42
+#: ../../include/profile_selectors.php:80
+#: ../../include/profile_selectors.php:97
msgid "Single"
msgstr "Alleen"
-#: ../../include/profile_selectors.php:42
+#: ../../include/profile_selectors.php:80
msgid "Lonely"
msgstr "Eenzaam"
-#: ../../include/profile_selectors.php:42
+#: ../../include/profile_selectors.php:80
msgid "Available"
msgstr "Beschikbaar"
-#: ../../include/profile_selectors.php:42
+#: ../../include/profile_selectors.php:80
msgid "Unavailable"
msgstr "Niet beschikbaar"
-#: ../../include/profile_selectors.php:42
+#: ../../include/profile_selectors.php:80
msgid "Has crush"
msgstr "Heeft een oogje op iemand"
-#: ../../include/profile_selectors.php:42
+#: ../../include/profile_selectors.php:80
msgid "Infatuated"
msgstr "Smoorverliefd"
-#: ../../include/profile_selectors.php:42
+#: ../../include/profile_selectors.php:80
+#: ../../include/profile_selectors.php:97
msgid "Dating"
msgstr "Aan het daten"
-#: ../../include/profile_selectors.php:42
+#: ../../include/profile_selectors.php:80
msgid "Unfaithful"
msgstr "Ontrouw"
-#: ../../include/profile_selectors.php:42
+#: ../../include/profile_selectors.php:80
msgid "Sex Addict"
msgstr "Seksverslaafd"
-#: ../../include/profile_selectors.php:42
+#: ../../include/profile_selectors.php:80
msgid "Friends/Benefits"
msgstr "Vriendschap plus"
-#: ../../include/profile_selectors.php:42
+#: ../../include/profile_selectors.php:80
msgid "Casual"
msgstr "Ongebonden/vluchtig"
-#: ../../include/profile_selectors.php:42
+#: ../../include/profile_selectors.php:80
msgid "Engaged"
msgstr "Verloofd"
-#: ../../include/profile_selectors.php:42
+#: ../../include/profile_selectors.php:80
+#: ../../include/profile_selectors.php:97
msgid "Married"
msgstr "Getrouwd"
-#: ../../include/profile_selectors.php:42
+#: ../../include/profile_selectors.php:80
msgid "Imaginarily married"
msgstr "Denkbeeldig getrouwd"
-#: ../../include/profile_selectors.php:42
+#: ../../include/profile_selectors.php:80
msgid "Partners"
msgstr "Partners"
-#: ../../include/profile_selectors.php:42
+#: ../../include/profile_selectors.php:80
+#: ../../include/profile_selectors.php:97
msgid "Cohabiting"
msgstr "Samenwonend"
-#: ../../include/profile_selectors.php:42
+#: ../../include/profile_selectors.php:80
msgid "Common law"
msgstr "Common-law-huwelijk"
-#: ../../include/profile_selectors.php:42
+#: ../../include/profile_selectors.php:80
msgid "Happy"
msgstr "Gelukkig"
-#: ../../include/profile_selectors.php:42
+#: ../../include/profile_selectors.php:80
msgid "Not looking"
msgstr "Niet op zoek"
-#: ../../include/profile_selectors.php:42
+#: ../../include/profile_selectors.php:80
msgid "Swinger"
msgstr "Swinger"
-#: ../../include/profile_selectors.php:42
+#: ../../include/profile_selectors.php:80
msgid "Betrayed"
msgstr "Verraden"
-#: ../../include/profile_selectors.php:42
+#: ../../include/profile_selectors.php:80
+#: ../../include/profile_selectors.php:97
msgid "Separated"
msgstr "Uit elkaar"
-#: ../../include/profile_selectors.php:42
+#: ../../include/profile_selectors.php:80
msgid "Unstable"
msgstr "Onstabiel"
-#: ../../include/profile_selectors.php:42
+#: ../../include/profile_selectors.php:80
+#: ../../include/profile_selectors.php:97
msgid "Divorced"
msgstr "Gescheiden"
-#: ../../include/profile_selectors.php:42
+#: ../../include/profile_selectors.php:80
msgid "Imaginarily divorced"
msgstr "Denkbeeldig gescheiden"
-#: ../../include/profile_selectors.php:42
+#: ../../include/profile_selectors.php:80
+#: ../../include/profile_selectors.php:97
msgid "Widowed"
msgstr "Weduwnaar/weduwe"
-#: ../../include/profile_selectors.php:42
+#: ../../include/profile_selectors.php:80
msgid "Uncertain"
msgstr "Onzeker"
-#: ../../include/profile_selectors.php:42
+#: ../../include/profile_selectors.php:80
+#: ../../include/profile_selectors.php:97
msgid "It's complicated"
msgstr "Het is ingewikkeld"
-#: ../../include/profile_selectors.php:42
+#: ../../include/profile_selectors.php:80
msgid "Don't care"
msgstr "Maakt mij niks uit"
-#: ../../include/profile_selectors.php:42
+#: ../../include/profile_selectors.php:80
msgid "Ask me"
msgstr "Vraag het me"
-#: ../../include/auth.php:79
-msgid "Logged out."
-msgstr "Uitgelogd."
+#: ../../include/nav.php:95 ../../include/nav.php:128 ../../boot.php:1541
+msgid "Logout"
+msgstr "Uitloggen"
-#: ../../include/auth.php:198
-msgid "Failed authentication"
-msgstr "Mislukte authenticatie"
+#: ../../include/nav.php:95 ../../include/nav.php:128
+msgid "End this session"
+msgstr "Beëindig deze sessie"
-#: ../../include/auth.php:213 ../../mod/openid.php:188
-msgid "Login failed."
-msgstr "Inloggen mislukt."
+#: ../../include/nav.php:98 ../../include/nav.php:159
+msgid "Home"
+msgstr "Home"
-#: ../../include/items.php:302 ../../mod/profperm.php:23
-#: ../../mod/subthread.php:49 ../../mod/group.php:68 ../../mod/like.php:202
-#: ../../index.php:360
-msgid "Permission denied"
-msgstr "Toegang geweigerd"
+#: ../../include/nav.php:98
+msgid "Your posts and conversations"
+msgstr "Jouw berichten en conversaties"
-#: ../../include/items.php:826
-msgid "(Unknown)"
-msgstr "(Onbekend)"
+#: ../../include/nav.php:99
+msgid "Your profile page"
+msgstr "Jouw profielpagina"
-#: ../../include/items.php:3614 ../../mod/home.php:67 ../../mod/display.php:32
-#: ../../mod/filestorage.php:18 ../../mod/admin.php:159
-#: ../../mod/admin.php:923 ../../mod/admin.php:1126 ../../mod/thing.php:78
-#: ../../mod/viewsrc.php:18
-msgid "Item not found."
-msgstr "Item niet gevonden."
+#: ../../include/nav.php:101
+msgid "Edit Profiles"
+msgstr "Bewerk profielen"
-#: ../../include/items.php:4047 ../../mod/group.php:38 ../../mod/group.php:140
-msgid "Collection not found."
-msgstr "Collectie niet gevonden."
+#: ../../include/nav.php:101
+msgid "Manage/Edit profiles"
+msgstr "Beheer/wijzig profielen"
-#: ../../include/items.php:4062
-msgid "Collection is empty."
-msgstr "Collectie is leeg"
+#: ../../include/nav.php:103
+msgid "Edit your profile"
+msgstr "Jouw profiel bewerken"
-#: ../../include/items.php:4069
-#, php-format
-msgid "Collection: %s"
-msgstr "Collectie: %s"
+#: ../../include/nav.php:105
+msgid "Your photos"
+msgstr "Jouw foto's"
+
+#: ../../include/nav.php:106
+msgid "Your files"
+msgstr "Jouw bestanden"
-#: ../../include/items.php:4080
+#: ../../include/nav.php:111
+msgid "Your chatrooms"
+msgstr "Jouw chatkanalen"
+
+#: ../../include/nav.php:117
+msgid "Your bookmarks"
+msgstr "Jouw bladwijzers"
+
+#: ../../include/nav.php:121
+msgid "Your webpages"
+msgstr "Jouw webpagina's"
+
+#: ../../include/nav.php:125
+msgid "Sign in"
+msgstr "Inloggen"
+
+#: ../../include/nav.php:142
#, php-format
-msgid "Connection: %s"
-msgstr "Connectie: %s"
+msgid "%s - click to logout"
+msgstr "%s - klik om uit te loggen"
-#: ../../include/items.php:4083
-msgid "Connection not found."
-msgstr "Connectie niet gevonden."
+#: ../../include/nav.php:145
+msgid "Remote authentication"
+msgstr "Authenticatie op afstand"
-#: ../../include/permissions.php:13
-msgid "Can view my \"public\" stream and posts"
-msgstr "Kan mijn \"openbare\" streams en berichten zien"
+#: ../../include/nav.php:145
+msgid "Click to authenticate to your home hub"
+msgstr "Authenticeer jezelf via (bijvoorbeeld) jouw RedMatrix-hub"
-#: ../../include/permissions.php:14
-msgid "Can view my \"public\" channel profile"
-msgstr "Kan mijn \"openbaar\" kanaalprofiel zien"
+#: ../../include/nav.php:159
+msgid "Home Page"
+msgstr "Homepage"
-#: ../../include/permissions.php:15
-msgid "Can view my \"public\" photo albums"
-msgstr "Kan mijn \"openbare\" fotoalbums zien"
+#: ../../include/nav.php:163 ../../mod/register.php:224 ../../boot.php:1518
+msgid "Register"
+msgstr "Registreren"
-#: ../../include/permissions.php:16
-msgid "Can view my \"public\" address book"
-msgstr "Kan een lijst met mijn \"openbare\" connecties zien"
+#: ../../include/nav.php:163
+msgid "Create an account"
+msgstr "Maak een account aan"
-#: ../../include/permissions.php:17
-msgid "Can view my \"public\" file storage"
-msgstr "Kan mijn \"openbare\" bestanden zien"
+#: ../../include/nav.php:168
+msgid "Help and documentation"
+msgstr "Hulp en documentatie"
-#: ../../include/permissions.php:18
-msgid "Can view my \"public\" pages"
-msgstr "Kan mijn \"openbare\" pagina's zien"
+#: ../../include/nav.php:171
+msgid "Applications, utilities, links, games"
+msgstr "Apps"
-#: ../../include/permissions.php:21
-msgid "Can send me their channel stream and posts"
-msgstr "Kan mij de inhoud van hun kanaal en berichten sturen"
+#: ../../include/nav.php:173
+msgid "Search site content"
+msgstr "Inhoud van deze RedMatrix-hub doorzoeken"
-#: ../../include/permissions.php:22
-msgid "Can post on my channel page (\"wall\")"
-msgstr "Kan een bericht in mijn kanaal (\"wall\") plaatsen"
+#: ../../include/nav.php:176
+msgid "Channel Directory"
+msgstr "Kanalengids"
-#: ../../include/permissions.php:23
-msgid "Can comment on my posts"
-msgstr "Kan op mijn berichten reageren"
+#: ../../include/nav.php:190
+msgid "Your matrix"
+msgstr "Jouw matrix"
-#: ../../include/permissions.php:24
-msgid "Can send me private mail messages"
-msgstr "Kan mij privéberichten sturen"
+#: ../../include/nav.php:191
+msgid "Mark all matrix notifications seen"
+msgstr "Markeer alle matrixnotificaties als bekeken"
-#: ../../include/permissions.php:25
-msgid "Can post photos to my photo albums"
-msgstr "Kan foto's aan mijn fotoalbums toevoegen"
+#: ../../include/nav.php:193
+msgid "Channel home"
+msgstr "Tijdlijn kanaal"
-#: ../../include/permissions.php:26
-msgid "Can forward to all my channel contacts via post @mentions"
-msgstr "Kan naar al mijn kanaalconnecties berichten doorsturen met behulp van @vermeldingen+"
+#: ../../include/nav.php:194
+msgid "Mark all channel notifications seen"
+msgstr "Alle kanaalnotificaties als gelezen markeren"
-#: ../../include/permissions.php:26
-msgid "Advanced - useful for creating group forum channels"
-msgstr "Geavanceerd - nuttig voor kanalen met een groep- cq. forumfunctie"
+#: ../../include/nav.php:197 ../../mod/connections.php:406
+msgid "Connections"
+msgstr "Connecties"
-#: ../../include/permissions.php:27
-msgid "Can chat with me (when available)"
-msgstr "Kan met mij chatten (wanneer beschikbaar)"
+#: ../../include/nav.php:200
+msgid "Notices"
+msgstr "Notificaties"
-#: ../../include/permissions.php:28
-msgid "Can write to my \"public\" file storage"
-msgstr "Kan bestanden aan mijn \"openbare\" bestandsopslag toevoegen"
+#: ../../include/nav.php:200
+msgid "Notifications"
+msgstr "Notificaties"
-#: ../../include/permissions.php:29
-msgid "Can edit my \"public\" pages"
-msgstr "Kan mijn \"openbare\" pagina's bewerken"
+#: ../../include/nav.php:201
+msgid "See all notifications"
+msgstr "Alle notificaties weergeven"
-#: ../../include/permissions.php:31
-msgid "Can source my \"public\" posts in derived channels"
-msgstr "Kan mijn \"openbare\" berichten als bron voor andere kanalen gebruiken"
+#: ../../include/nav.php:202 ../../mod/notifications.php:99
+msgid "Mark all system notifications seen"
+msgstr "Markeer alle systeemnotificaties als bekeken"
-#: ../../include/permissions.php:31
-msgid "Somewhat advanced - very useful in open communities"
-msgstr "Enigszins geavanceerd (erg nuttig voor kanalen van forums/groepen)"
+#: ../../include/nav.php:204
+msgid "Private mail"
+msgstr "Privéberichten"
-#: ../../include/permissions.php:33
-msgid "Can administer my channel resources"
-msgstr "Kan mijn kanaal beheren"
+#: ../../include/nav.php:205
+msgid "See all private messages"
+msgstr "Alle privéberichten weergeven"
+
+#: ../../include/nav.php:206
+msgid "Mark all private messages seen"
+msgstr "Markeer alle privéberichten als bekeken"
+
+#: ../../include/nav.php:207
+msgid "Inbox"
+msgstr "Postvak IN"
+
+#: ../../include/nav.php:208
+msgid "Outbox"
+msgstr "Postvak UIT"
+
+#: ../../include/nav.php:212
+msgid "Event Calendar"
+msgstr "Agenda"
+
+#: ../../include/nav.php:213
+msgid "See all events"
+msgstr "Alle gebeurtenissen weergeven"
+
+#: ../../include/nav.php:214
+msgid "Mark all events seen"
+msgstr "Markeer alle gebeurtenissen als bekeken"
+
+#: ../../include/nav.php:216
+msgid "Manage Your Channels"
+msgstr "Beheer je kanalen"
-#: ../../include/permissions.php:33
+#: ../../include/nav.php:218
+msgid "Account/Channel Settings"
+msgstr "Account-/kanaal-instellingen"
+
+#: ../../include/nav.php:226 ../../mod/admin.php:123
+msgid "Admin"
+msgstr "Beheer"
+
+#: ../../include/nav.php:226
+msgid "Site Setup and Configuration"
+msgstr "Hub instellen en beheren"
+
+#: ../../include/nav.php:262
+msgid "@name, #tag, content"
+msgstr "@kanaal, #label, inhoud"
+
+#: ../../include/nav.php:263
+msgid "Please wait..."
+msgstr "Wachten aub..."
+
+#: ../../include/security.php:357
msgid ""
-"Extremely advanced. Leave this alone unless you know what you are doing"
-msgstr "Zeer geavanceerd. Laat dit met rust, behalve als je weet wat je doet."
+"The form security token was not correct. This probably happened because the "
+"form has been opened for too long (>3 hours) before submitting it."
+msgstr "De beveiligings-token van het tekstvak was ongeldig. Dit is mogelijk het gevolg van dat er te lang (meer dan 3 uur) gewacht is om de tekst op te slaan. "
#: ../../mod/mood.php:132
msgid "Set your current mood and tell your friends"
msgstr "Noteer je huidige stemming en toon het aan je connecties"
-#: ../../mod/mitem.php:14 ../../mod/menu.php:92
+#: ../../mod/register.php:44
+msgid "Maximum daily site registrations exceeded. Please try again tomorrow."
+msgstr "Maximum toegestane dagelijkse registraties op deze RedMatrix-hub bereikt. Probeer het morgen (UTC) nogmaals."
+
+#: ../../mod/register.php:50
+msgid ""
+"Please indicate acceptance of the Terms of Service. Registration failed."
+msgstr "Registratie mislukt. De gebruiksvoorwaarden dienen wel geaccepteerd te worden."
+
+#: ../../mod/register.php:84
+msgid "Passwords do not match."
+msgstr "Wachtwoorden komen niet met elkaar overeen."
+
+#: ../../mod/register.php:117
+msgid ""
+"Registration successful. Please check your email for validation "
+"instructions."
+msgstr "Registratie geslaagd. Controleer je e-mail voor instructies."
+
+#: ../../mod/register.php:123
+msgid "Your registration is pending approval by the site owner."
+msgstr "Jouw accountregistratie wacht op goedkeuring van de beheerder van deze RedMatrix-hub."
+
+#: ../../mod/register.php:126
+msgid "Your registration can not be processed."
+msgstr "Jouw registratie kan niet verwerkt worden."
+
+#: ../../mod/register.php:163
+msgid "Registration on this site/hub is by approval only."
+msgstr "Registraties op deze RedMatrix-hub moeten eerst worden goedgekeurd."
+
+#: ../../mod/register.php:164
+msgid "<a href=\"pubsites\">Register at another affiliated site/hub</a>"
+msgstr "<a href=\"pubsites\">Registreer op een andere RedMatrix-hub</a>"
+
+#: ../../mod/register.php:174
+msgid ""
+"This site has exceeded the number of allowed daily account registrations. "
+"Please try again tomorrow."
+msgstr "Deze RedMatrix-hub heeft het maximum aantal dagelijks toegestane registraties bereikt. Probeer het morgen (UTC) nogmaals."
+
+#: ../../mod/register.php:185
+msgid "Terms of Service"
+msgstr "Gebruiksvoorwaarden"
+
+#: ../../mod/register.php:191
+#, php-format
+msgid "I accept the %s for this website"
+msgstr "Ik accepteer de %s van deze RedMatrix-hub"
+
+#: ../../mod/register.php:193
+#, php-format
+msgid "I am over 13 years of age and accept the %s for this website"
+msgstr "Ik accepteer de %s van deze RedMatrix-hub"
+
+#: ../../mod/register.php:207 ../../mod/admin.php:413
+msgid "Registration"
+msgstr "Registratie"
+
+#: ../../mod/register.php:212
+msgid "Membership on this site is by invitation only."
+msgstr "Registreren op deze RedMatrix-hub kan alleen op uitnodiging."
+
+#: ../../mod/register.php:213
+msgid "Please enter your invitation code"
+msgstr "Vul jouw uitnodigingscode in"
+
+#: ../../mod/register.php:216
+msgid "Your email address"
+msgstr "Jouw e-mailadres"
+
+#: ../../mod/register.php:217
+msgid "Choose a password"
+msgstr "Geef een wachtwoord op"
+
+#: ../../mod/register.php:218
+msgid "Please re-enter your password"
+msgstr "Geef het wachtwoord opnieuw op"
+
+#: ../../mod/mitem.php:24 ../../mod/menu.php:108
msgid "Menu not found."
msgstr "Menu niet gevonden."
-#: ../../mod/mitem.php:47
+#: ../../mod/mitem.php:67
msgid "Menu element updated."
msgstr "Menu-onderdeel geüpdatet."
-#: ../../mod/mitem.php:51
+#: ../../mod/mitem.php:71
msgid "Unable to update menu element."
msgstr "Menu-onderdeel kan niet worden geüpdatet."
-#: ../../mod/mitem.php:57
+#: ../../mod/mitem.php:77
msgid "Menu element added."
msgstr "Menu-onderdeel toegevoegd"
-#: ../../mod/mitem.php:61
+#: ../../mod/mitem.php:81
msgid "Unable to add menu element."
msgstr "Menu-onderdeel kan niet worden toegevoegd."
-#: ../../mod/mitem.php:78 ../../mod/dirprofile.php:175 ../../mod/menu.php:120
-#: ../../mod/xchan.php:27
+#: ../../mod/mitem.php:111 ../../mod/menu.php:136 ../../mod/xchan.php:37
msgid "Not found."
msgstr "Niet gevonden."
-#: ../../mod/mitem.php:96
+#: ../../mod/mitem.php:127
msgid "Manage Menu Elements"
msgstr "Menu-onderdelen beheren"
-#: ../../mod/mitem.php:99
+#: ../../mod/mitem.php:130
msgid "Edit menu"
msgstr "Menu bewerken"
-#: ../../mod/mitem.php:102
+#: ../../mod/mitem.php:133
msgid "Edit element"
msgstr "Onderdeel bewerken"
-#: ../../mod/mitem.php:103
+#: ../../mod/mitem.php:134
msgid "Drop element"
msgstr "Onderdeel verwijderen"
-#: ../../mod/mitem.php:104
+#: ../../mod/mitem.php:135
msgid "New element"
msgstr "Nieuw element"
-#: ../../mod/mitem.php:105
+#: ../../mod/mitem.php:136
msgid "Edit this menu container"
msgstr "Deze menu-container bewerken"
-#: ../../mod/mitem.php:106
+#: ../../mod/mitem.php:137
msgid "Add menu element"
msgstr "Menu-element toevoegen"
-#: ../../mod/mitem.php:107
+#: ../../mod/mitem.php:138
msgid "Delete this menu item"
msgstr "Dit menu-item verwijderen"
-#: ../../mod/mitem.php:108
+#: ../../mod/mitem.php:139
msgid "Edit this menu item"
msgstr "Dit menu-item bewerken"
-#: ../../mod/mitem.php:131
+#: ../../mod/mitem.php:158
msgid "New Menu Element"
msgstr "Nieuw menu-element"
-#: ../../mod/mitem.php:133 ../../mod/mitem.php:176
+#: ../../mod/mitem.php:160 ../../mod/mitem.php:203
msgid "Menu Item Permissions"
-msgstr "Privacy-rechten menu-item"
+msgstr "Permissies menu-item"
-#: ../../mod/mitem.php:134 ../../mod/mitem.php:177 ../../mod/settings.php:960
+#: ../../mod/mitem.php:161 ../../mod/mitem.php:204 ../../mod/settings.php:1049
msgid "(click to open/close)"
msgstr "(klik om te openen/sluiten)"
-#: ../../mod/mitem.php:136 ../../mod/mitem.php:180
+#: ../../mod/mitem.php:163 ../../mod/mitem.php:207
msgid "Link text"
msgstr "Linktekst"
-#: ../../mod/mitem.php:137 ../../mod/mitem.php:181
+#: ../../mod/mitem.php:164 ../../mod/mitem.php:208
msgid "URL of link"
msgstr "URL of link"
-#: ../../mod/mitem.php:138 ../../mod/mitem.php:182
-msgid "Use Red magic-auth if available"
-msgstr "Gebruik Reds magische authenticatie wanneer aanwezig"
+#: ../../mod/mitem.php:165 ../../mod/mitem.php:209
+msgid "Use RedMatrix magic-auth if available"
+msgstr "Gebruik RedMatrix' magic-auth wanneer beschikbaar"
-#: ../../mod/mitem.php:139 ../../mod/mitem.php:183
+#: ../../mod/mitem.php:166 ../../mod/mitem.php:210
msgid "Open link in new window"
msgstr "Open link in nieuw venster"
-#: ../../mod/mitem.php:141 ../../mod/mitem.php:185
+#: ../../mod/mitem.php:168 ../../mod/mitem.php:212
msgid "Order in list"
msgstr "Volgorde in lijst"
-#: ../../mod/mitem.php:141 ../../mod/mitem.php:185
+#: ../../mod/mitem.php:168 ../../mod/mitem.php:212
msgid "Higher numbers will sink to bottom of listing"
msgstr "Hogere nummers komen onderaan de lijst terecht"
-#: ../../mod/mitem.php:154
+#: ../../mod/mitem.php:181
msgid "Menu item not found."
msgstr "Menu-item niet gevonden."
-#: ../../mod/mitem.php:163
+#: ../../mod/mitem.php:190
msgid "Menu item deleted."
msgstr "Menu-item verwijderd."
-#: ../../mod/mitem.php:165
+#: ../../mod/mitem.php:192
msgid "Menu item could not be deleted."
msgstr "Menu-item kon niet worden verwijderd."
-#: ../../mod/mitem.php:174
+#: ../../mod/mitem.php:201
msgid "Edit Menu Element"
msgstr "Menu-element bewerken"
-#: ../../mod/mitem.php:186 ../../mod/menu.php:114
+#: ../../mod/mitem.php:213 ../../mod/menu.php:130
msgid "Modify"
msgstr "Wijzigen"
-#: ../../mod/ping.php:237
+#: ../../mod/achievements.php:34
+msgid "Some blurb about what to do when you're new here"
+msgstr "Welkom op de RedMatrix. Klik op de tab ontdekken of klik rechtsboven op de <a href=\"directory\">kanalengids</a>, om kanalen te vinden. Rechtsboven vind je ook onze <a href=\"directory\">apps</a>, waar je vrijwel alles van de RedMatrix kan vinden. Voor <a href=\"directory\">hulp</a> met de RedMatrix klik je op het vraagteken of als je meer vragen hebt stel je die in het <a href=\"https://zothost.me/channel/support\">supportkanaal</a> (liefst in het Engels)."
+
+#: ../../mod/ping.php:266
msgid "sent you a private message"
msgstr "stuurde jou een privébericht"
-#: ../../mod/ping.php:288
+#: ../../mod/ping.php:319
msgid "added your channel"
msgstr "voegde jouw kanaal toe"
-#: ../../mod/ping.php:329
+#: ../../mod/ping.php:360
msgid "posted an event"
msgstr "plaatste een gebeurtenis"
-#: ../../mod/acl.php:239
-msgid "network"
-msgstr "netwerk"
-
-#: ../../mod/settings.php:71
-msgid "Name is required"
-msgstr "Naam is vereist"
-
-#: ../../mod/settings.php:75
-msgid "Key and Secret are required"
-msgstr "Key en secret zijn vereist"
-
-#: ../../mod/settings.php:195
-msgid "Passwords do not match. Password unchanged."
-msgstr "Wachtwoorden komen niet overeen. Wachtwoord onveranderd."
-
-#: ../../mod/settings.php:199
-msgid "Empty passwords are not allowed. Password unchanged."
-msgstr "Lege wachtwoorden zijn niet toegestaan. Wachtwoord onveranderd."
-
-#: ../../mod/settings.php:212
-msgid "Password changed."
-msgstr "Wachtwoord veranderd."
-
-#: ../../mod/settings.php:214
-msgid "Password update failed. Please try again."
-msgstr "Bijwerken wachtwoord mislukt. Probeer opnieuw."
-
-#: ../../mod/settings.php:228
-msgid "Not valid email."
-msgstr "Geen geldig e-mailadres."
-
-#: ../../mod/settings.php:231
-msgid "Protected email address. Cannot change to that email."
-msgstr "Beschermd e-mailadres. Kan dat e-mailadres niet gebruiken."
-
-#: ../../mod/settings.php:240
-msgid "System failure storing new email. Please try again."
-msgstr "Systeemfout opslaan van nieuwe e-mail. Probeer het nog een keer."
-
-#: ../../mod/settings.php:443
-msgid "Settings updated."
-msgstr "Instellingen bijgewerkt."
-
-#: ../../mod/settings.php:514 ../../mod/settings.php:540
-#: ../../mod/settings.php:576
-msgid "Add application"
-msgstr "Applicatie toevoegen"
-
-#: ../../mod/settings.php:517
-msgid "Name of application"
-msgstr "Naam van applicatie"
-
-#: ../../mod/settings.php:518 ../../mod/settings.php:544
-msgid "Consumer Key"
-msgstr "Consumer key"
-
-#: ../../mod/settings.php:518 ../../mod/settings.php:519
-msgid "Automatically generated - change if desired. Max length 20"
-msgstr "Automatische gegenereerd - verander wanneer gewenst. Maximale lengte is 20"
-
-#: ../../mod/settings.php:519 ../../mod/settings.php:545
-msgid "Consumer Secret"
-msgstr "Consumer secret"
-
-#: ../../mod/settings.php:520 ../../mod/settings.php:546
-msgid "Redirect"
-msgstr "Redirect/doorverwijzing"
-
-#: ../../mod/settings.php:520
-msgid ""
-"Redirect URI - leave blank unless your application specifically requires "
-"this"
-msgstr "URI voor redirect - laat leeg, behalve wanneer de applicatie dit vereist"
-
-#: ../../mod/settings.php:521 ../../mod/settings.php:547
-msgid "Icon url"
-msgstr "URL van pictogram"
-
-#: ../../mod/settings.php:521
-msgid "Optional"
-msgstr "Optioneel"
-
-#: ../../mod/settings.php:532
-msgid "You can't edit this application."
-msgstr "Je kan deze applicatie niet bewerken"
-
-#: ../../mod/settings.php:575
-msgid "Connected Apps"
-msgstr "Verbonden applicaties"
-
-#: ../../mod/settings.php:579
-msgid "Client key starts with"
-msgstr "Client key begint met"
-
-#: ../../mod/settings.php:580
-msgid "No name"
-msgstr "Geen naam"
-
-#: ../../mod/settings.php:581
-msgid "Remove authorization"
-msgstr "Autorisatie verwijderen"
-
-#: ../../mod/settings.php:592
-msgid "No feature settings configured"
-msgstr "Geen plugin-instellingen ingesteld"
-
-#: ../../mod/settings.php:600
-msgid "Feature Settings"
-msgstr "Plugin-instellingen"
-
-#: ../../mod/settings.php:623
-msgid "Account Settings"
-msgstr "Account-instellingen"
+#: ../../mod/group.php:20
+msgid "Collection created."
+msgstr "Collectie aangemaakt"
-#: ../../mod/settings.php:624
-msgid "Password Settings"
-msgstr "Wachtwoord-instellingen"
+#: ../../mod/group.php:26
+msgid "Could not create collection."
+msgstr "Collectie kon niet aangemaakt worden"
-#: ../../mod/settings.php:625
-msgid "New Password:"
-msgstr "Nieuw wachtwoord:"
+#: ../../mod/group.php:54
+msgid "Collection updated."
+msgstr "Collectie bijgewerkt."
-#: ../../mod/settings.php:626
-msgid "Confirm:"
-msgstr "Bevestigen:"
+#: ../../mod/group.php:86
+msgid "Create a collection of channels."
+msgstr "Kanaalcollectie aanmaken"
-#: ../../mod/settings.php:626
-msgid "Leave password fields blank unless changing"
-msgstr "Laat de wachtwoordvelden leeg, behalve wanneer je deze wil veranderen"
+#: ../../mod/group.php:87 ../../mod/group.php:183
+msgid "Collection Name: "
+msgstr "Naam collectie:"
-#: ../../mod/settings.php:628 ../../mod/settings.php:936
-msgid "Email Address:"
-msgstr "E-mailadres:"
+#: ../../mod/group.php:89 ../../mod/group.php:186
+msgid "Members are visible to other channels"
+msgstr "Kanalen in deze collectie zijn zichtbaar voor andere kanalen"
-#: ../../mod/settings.php:629
-msgid "Remove Account"
-msgstr "Kanaal verwijderen (neem contact op met de beheerder van deze hub om je account te verwijderen)"
+#: ../../mod/group.php:107
+msgid "Collection removed."
+msgstr "Collectie verwijderd"
-#: ../../mod/settings.php:630 ../../mod/settings.php:999
-msgid "Warning: This action is permanent and cannot be reversed."
-msgstr "Waarschuwing: Deze handeling is van permanente aard en kan niet meer worden teruggedraaid."
+#: ../../mod/group.php:109
+msgid "Unable to remove collection."
+msgstr "Verwijderen collectie mislukt"
-#: ../../mod/settings.php:646
-msgid "Off"
-msgstr "Uit"
+#: ../../mod/group.php:182
+msgid "Collection Editor"
+msgstr "Collectiebewerker"
-#: ../../mod/settings.php:646
-msgid "On"
-msgstr "Aan"
+#: ../../mod/group.php:196
+msgid "Members"
+msgstr "Kanalen"
-#: ../../mod/settings.php:653
-msgid "Additional Features"
-msgstr "Extra functies"
+#: ../../mod/group.php:198
+msgid "All Connected Channels"
+msgstr "Alle kanaalconnecties"
-#: ../../mod/settings.php:678
-msgid "Connector Settings"
-msgstr "Instellingen externe koppelingen"
+#: ../../mod/group.php:233
+msgid "Click on a channel to add or remove."
+msgstr "Klik op een kanaal om deze toe te voegen of te verwijderen."
-#: ../../mod/settings.php:708 ../../mod/admin.php:390
-msgid "No special theme for mobile devices"
-msgstr "Geen speciaal thema voor mobiele apparaten"
+#: ../../mod/search.php:13 ../../mod/display.php:9
+#: ../../mod/viewconnections.php:17 ../../mod/photos.php:458
+#: ../../mod/directory.php:22
+msgid "Public access denied."
+msgstr "Openbare toegang geweigerd."
-#: ../../mod/settings.php:717
+#: ../../mod/subthread.php:103
#, php-format
-msgid "%s - (Experimental)"
-msgstr "%s - (experimenteel)"
-
-#: ../../mod/settings.php:747
-msgid "Display Settings"
-msgstr "Weergave-instellingen"
-
-#: ../../mod/settings.php:753
-msgid "Display Theme:"
-msgstr "Gebruik thema:"
-
-#: ../../mod/settings.php:754
-msgid "Mobile Theme:"
-msgstr "Mobiel thema:"
-
-#: ../../mod/settings.php:755
-msgid "Update browser every xx seconds"
-msgstr "Ververs de webbrowser om de zoveel seconde"
-
-#: ../../mod/settings.php:755
-msgid "Minimum of 10 seconds, no maximum"
-msgstr "Minimaal 10 seconde, geen maximum"
-
-#: ../../mod/settings.php:756
-msgid "Maximum number of conversations to load at any time:"
-msgstr "Maximaal aantal conversaties die per keer geladen worden:"
-
-#: ../../mod/settings.php:756
-msgid "Maximum of 100 items"
-msgstr "Maximaal 100 conversaties"
-
-#: ../../mod/settings.php:757
-msgid "Don't show emoticons"
-msgstr "Geen emoticons weergeven"
-
-#: ../../mod/settings.php:758
-msgid "System Page Layout Editor - (advanced)"
-msgstr "Lay-out bewerken van systeempagina's (geavanceerd)"
-
-#: ../../mod/settings.php:793
-msgid "Nobody except yourself"
-msgstr "Niemand, behalve jezelf"
-
-#: ../../mod/settings.php:794
-msgid "Only those you specifically allow"
-msgstr "Alleen connecties met uitdrukkelijke toestemming"
-
-#: ../../mod/settings.php:795
-msgid "Approved connections"
-msgstr "Geaccepteerde connecties"
-
-#: ../../mod/settings.php:796
-msgid "Any connections"
-msgstr "Alle connecties"
-
-#: ../../mod/settings.php:797
-msgid "Anybody on this website"
-msgstr "Iedereen op deze hub"
-
-#: ../../mod/settings.php:798
-msgid "Anybody in this network"
-msgstr "Iedereen in dit netwerk"
-
-#: ../../mod/settings.php:799
-msgid "Anybody authenticated"
-msgstr "Geauthenticeerd"
-
-#: ../../mod/settings.php:800
-msgid "Anybody on the internet"
-msgstr "Iedereen op het internet"
-
-#: ../../mod/settings.php:877
-msgid "Publish your default profile in the network directory"
-msgstr "Publiceer je standaardprofiel in de kanalengids"
-
-#: ../../mod/settings.php:877 ../../mod/settings.php:882
-#: ../../mod/settings.php:953 ../../mod/api.php:106 ../../mod/profiles.php:493
-#: ../../mod/admin.php:420
-msgid "No"
-msgstr "Nee"
-
-#: ../../mod/settings.php:877 ../../mod/settings.php:882
-#: ../../mod/settings.php:953 ../../mod/api.php:105 ../../mod/profiles.php:492
-#: ../../mod/admin.php:422
-msgid "Yes"
-msgstr "Ja"
-
-#: ../../mod/settings.php:882
-msgid "Allow us to suggest you as a potential friend to new members?"
-msgstr "Sta ons toe om jouw kanaal als mogelijke connectie voor te stellen aan nieuwe kanalen"
-
-#: ../../mod/settings.php:886 ../../mod/profile_photo.php:365
-msgid "or"
-msgstr "of"
-
-#: ../../mod/settings.php:891
-msgid "Your channel address is"
-msgstr "Jouw kanaaladres is"
-
-#: ../../mod/settings.php:925
-msgid "Channel Settings"
-msgstr "Kanaal-instellingen"
-
-#: ../../mod/settings.php:934
-msgid "Basic Settings"
-msgstr "Basis-instellingen"
-
-#: ../../mod/settings.php:937
-msgid "Your Timezone:"
-msgstr "Jouw tijdzone:"
-
-#: ../../mod/settings.php:938
-msgid "Default Post Location:"
-msgstr "Standaardlocatie bericht:"
-
-#: ../../mod/settings.php:938
-msgid "Geographical location to display on your posts"
-msgstr "Geografische locatie die bij het bericht moet worden vermeld"
-
-#: ../../mod/settings.php:939
-msgid "Use Browser Location:"
-msgstr "Locatie van webbrowser gebruiken:"
-
-#: ../../mod/settings.php:941
-msgid "Adult Content"
-msgstr "Inhoud voor volwassenen"
-
-#: ../../mod/settings.php:941
-msgid ""
-"This channel frequently or regularly publishes adult content. (Please tag "
-"any adult material and/or nudity with #NSFW)"
-msgstr "Dit kanaal publiceert regelmatig of vaak materiaal dat alleen geschikt is voor volwassen. (Gebruik de hashtag #NSFW in berichten met een seksueel getinte inhoud of ander voor minderjarigen ongeschikt materiaal)"
-
-#: ../../mod/settings.php:943
-msgid "Security and Privacy Settings"
-msgstr "Veiligheids- privacy-instellingen"
-
-#: ../../mod/settings.php:945
-msgid "Hide my online presence"
-msgstr "Verberg mijn aanwezigheid"
-
-#: ../../mod/settings.php:945
-msgid "Prevents displaying in your profile that you are online"
-msgstr "Voorkomt dat op je kanaal te zien valt dat je momenteel op de Red Matrix aanwezig bent"
-
-#: ../../mod/settings.php:947
-msgid "Simple Privacy Settings:"
-msgstr "Eenvoudige privacy-instellingen:"
-
-#: ../../mod/settings.php:948
-msgid ""
-"Very Public - <em>extremely permissive (should be used with caution)</em>"
-msgstr "Zeer openbaar <em>(kanaal staat volledig open - moet met grote zorgvuldigheid gebruikt worden)</em>"
-
-#: ../../mod/settings.php:949
-msgid ""
-"Typical - <em>default public, privacy when desired (similar to social "
-"network permissions but with improved privacy)</em>"
-msgstr "Normaal <em>(standaard openbaar, maar privacy wanneer noodzakelijk - vergelijkbaar met die van sociale netwerken, maar met verbeterde privacy)</em>"
-
-#: ../../mod/settings.php:950
-msgid "Private - <em>default private, never open or public</em>"
-msgstr "Privé <em>(standaard privé en nooit openbaar)</em>"
-
-#: ../../mod/settings.php:951
-msgid "Blocked - <em>default blocked to/from everybody</em>"
-msgstr "Geblokkeerd <em>(standaard geblokkeerd naar/van iedereen)</em>"
-
-#: ../../mod/settings.php:953
-msgid "Allow others to tag your posts"
-msgstr "Anderen toestaan om je berichten te labelen"
-
-#: ../../mod/settings.php:953
-msgid ""
-"Often used by the community to retro-actively flag inappropriate content"
-msgstr "Vaak in groepen/forums gebruikt om met terugwerkende kracht ongepast materiaal te markeren"
-
-#: ../../mod/settings.php:955
-msgid "Advanced Privacy Settings"
-msgstr "Geavanceerde privacy-instellingen"
-
-#: ../../mod/settings.php:957
-msgid "Expire other channel content after this many days"
-msgstr "Inhoud van andere kanalen na zoveel aantal dagen laten verlopen:"
-
-#: ../../mod/settings.php:957
-msgid "0 or blank prevents expiration"
-msgstr "0 of leeg voorkomt het verlopen"
-
-#: ../../mod/settings.php:958
-msgid "Maximum Friend Requests/Day:"
-msgstr "Maximum aantal connectieverzoeken per dag:"
-
-#: ../../mod/settings.php:958
-msgid "May reduce spam activity"
-msgstr "Kan eventuele spam verminderen"
-
-#: ../../mod/settings.php:959
-msgid "Default Post Permissions"
-msgstr "Standaard privacy-rechten voor nieuwe berichten"
-
-#: ../../mod/settings.php:971
-msgid "Maximum private messages per day from unknown people:"
-msgstr "Maximum aantal privé-berichten per dag van onbekende personen:"
-
-#: ../../mod/settings.php:971
-msgid "Useful to reduce spamming"
-msgstr "Kan eventuele spam verminderen"
-
-#: ../../mod/settings.php:974
-msgid "Notification Settings"
-msgstr "Notificatie-instellingen"
-
-#: ../../mod/settings.php:975
-msgid "By default post a status message when:"
-msgstr "Plaats automatisch een statusbericht wanneer:"
-
-#: ../../mod/settings.php:976
-msgid "accepting a friend request"
-msgstr "Een connectieverzoek wordt geaccepteerd"
-
-#: ../../mod/settings.php:977
-msgid "joining a forum/community"
-msgstr "Je lid wordt van een groep/forum"
-
-#: ../../mod/settings.php:978
-msgid "making an <em>interesting</em> profile change"
-msgstr "Er sprake is van een <em>interessante</em> profielwijziging"
-
-#: ../../mod/settings.php:979
-msgid "Send a notification email when:"
-msgstr "Verzend een notificatie per e-mail wanneer:"
-
-#: ../../mod/settings.php:980
-msgid "You receive a connection request"
-msgstr "Je een connectieverzoek ontvangt"
-
-#: ../../mod/settings.php:981
-msgid "Your connections are confirmed"
-msgstr "Jouw connecties zijn bevestigd"
-
-#: ../../mod/settings.php:982
-msgid "Someone writes on your profile wall"
-msgstr "Iemand iets op jouw kanaal heeft geschreven"
-
-#: ../../mod/settings.php:983
-msgid "Someone writes a followup comment"
-msgstr "Iemand een reactie schrijft"
-
-#: ../../mod/settings.php:984
-msgid "You receive a private message"
-msgstr "Je een privé-bericht ontvangt"
-
-#: ../../mod/settings.php:985
-msgid "You receive a friend suggestion"
-msgstr "Je een kanaalvoorstel ontvangt"
-
-#: ../../mod/settings.php:986
-msgid "You are tagged in a post"
-msgstr "Je expliciet in een bericht bent genoemd"
-
-#: ../../mod/settings.php:987
-msgid "You are poked/prodded/etc. in a post"
-msgstr "Je bent in een bericht aangestoten/gepord/etc."
-
-#: ../../mod/settings.php:990
-msgid "Advanced Account/Page Type Settings"
-msgstr "Instellingen geavanceerd account/paginatype"
-
-#: ../../mod/settings.php:991
-msgid "Change the behaviour of this account for special situations"
-msgstr "Verander het gedrag van dit account voor speciale situaties"
-
-#: ../../mod/settings.php:994
-msgid ""
-"Please enable expert mode (in <a href=\"settings/features\">Settings > "
-"Additional features</a>) to adjust!"
-msgstr "Schakel de expertmodus in (in <a href=\"settings/features\">Instellingen > Extra functies</a>) om aan te kunnen passen!"
-
-#: ../../mod/settings.php:995
-msgid "Miscellaneous Settings"
-msgstr "Diverse instellingen"
-
-#: ../../mod/settings.php:997
-msgid "Personal menu to display in your channel pages"
-msgstr "Persoonlijk menu om op je kanaalpagina's weer te geven"
-
-#: ../../mod/settings.php:998
-msgid "Remove this channel"
-msgstr "Verwijder dit kanaal"
+msgid "%1$s is following %2$s's %3$s"
+msgstr "%1$s volgt het %3$s van %2$s"
#: ../../mod/poke.php:159
msgid "Poke/Prod"
@@ -4087,118 +3974,18 @@ msgid ""
" and/or create new posts for you?"
msgstr "Wil je deze applicatie toestemming geven om jouw berichten en connecties te zien, en/of nieuwe berichten voor jou te plaatsen?"
-#: ../../mod/post.php:229
-msgid ""
-"Remote authentication blocked. You are logged into this site locally. Please"
-" logout and retry."
-msgstr "Authenticatie op afstand geblokkeerd. Je bent lokaal op deze hub ingelogd. Uitloggen en opnieuw proberen."
-
-#: ../../mod/post.php:261 ../../mod/openid.php:72 ../../mod/openid.php:178
-#, php-format
-msgid "Welcome %s. Remote authentication successful."
-msgstr "Welkom %s. Authenticatie op afstand geslaagd."
-
-#: ../../mod/attach.php:9
-msgid "Item not available."
-msgstr "Item is niet aanwezig."
-
-#: ../../mod/probe.php:23 ../../mod/probe.php:29
-#, php-format
-msgid "Fetching URL returns error: %1$s"
-msgstr "Ophalen URL gaf een foutmelding terug: %1$s"
-
-#: ../../mod/block.php:27 ../../mod/page.php:35
-msgid "Invalid item."
-msgstr "Ongeldig item."
-
-#: ../../mod/block.php:39 ../../mod/chanview.php:77 ../../mod/page.php:47
-#: ../../mod/home.php:54 ../../mod/wall_upload.php:28
-msgid "Channel not found."
-msgstr "Kanaal niet gevonden."
-
-#: ../../mod/block.php:75 ../../mod/page.php:83 ../../mod/display.php:100
-#: ../../mod/help.php:72 ../../index.php:236
-msgid "Page not found."
-msgstr "Pagina niet gevonden."
-
-#: ../../mod/profile_photo.php:108
-msgid "Image uploaded but image cropping failed."
-msgstr "Afbeelding geüpload, maar afbeelding kon niet worden bijgesneden. "
-
-#: ../../mod/profile_photo.php:161
-msgid "Image resize failed."
-msgstr "Afbeelding kon niet van grootte veranderd worden."
-
-#: ../../mod/profile_photo.php:205
-msgid ""
-"Shift-reload the page or clear browser cache if the new photo does not "
-"display immediately."
-msgstr "Vernieuw de pagina met shift+R of shift+F5, of leeg je browserbuffer, wanneer de nieuwe foto niet meteen wordt weergegeven."
-
-#: ../../mod/profile_photo.php:232
-#, php-format
-msgid "Image exceeds size limit of %d"
-msgstr "Afbeeldingsgrootte overschrijdt het limiet van %d"
-
-#: ../../mod/profile_photo.php:241
-msgid "Unable to process image."
-msgstr "Niet in staat om afbeelding te verwerken."
-
-#: ../../mod/profile_photo.php:290 ../../mod/profile_photo.php:339
-msgid "Photo not available."
-msgstr "Foto niet beschikbaar."
-
-#: ../../mod/profile_photo.php:358
-msgid "Upload File:"
-msgstr "Bestand uploaden:"
-
-#: ../../mod/profile_photo.php:359
-msgid "Select a profile:"
-msgstr "Kies een profiel:"
-
-#: ../../mod/profile_photo.php:360
-msgid "Upload Profile Photo"
-msgstr "Profielfoto uploaden"
-
-#: ../../mod/profile_photo.php:365
-msgid "skip this step"
-msgstr "sla deze stap over"
-
-#: ../../mod/profile_photo.php:365
-msgid "select a photo from your photo albums"
-msgstr "Kies een foto uit jouw fotoalbums"
-
-#: ../../mod/profile_photo.php:379
-msgid "Crop Image"
-msgstr "Afbeelding bijsnijden"
-
-#: ../../mod/profile_photo.php:380
-msgid "Please adjust the image cropping for optimum viewing."
-msgstr "Snij de afbeelding zo uit dat deze optimaal wordt weergegeven."
-
-#: ../../mod/profile_photo.php:382
-msgid "Done Editing"
-msgstr "Klaar met bewerken"
-
-#: ../../mod/profile_photo.php:425
-msgid "Image uploaded successfully."
-msgstr "Uploaden afbeelding geslaagd"
-
-#: ../../mod/profile_photo.php:427
-msgid "Image upload failed."
-msgstr "Uploaden afbeelding mislukt"
-
-#: ../../mod/profile_photo.php:436
-#, php-format
-msgid "Image size reduction [%s] failed."
-msgstr "Verkleinen [%s] van afbeelding mislukt."
+#: ../../mod/api.php:105 ../../mod/settings.php:955 ../../mod/settings.php:960
+#: ../../mod/settings.php:1042 ../../mod/admin.php:392
+msgid "Yes"
+msgstr "Ja"
-#: ../../mod/blocks.php:66
-msgid "Block Name"
-msgstr "Bloknaam"
+#: ../../mod/api.php:106 ../../mod/settings.php:955 ../../mod/settings.php:960
+#: ../../mod/settings.php:1042 ../../mod/admin.php:390
+msgid "No"
+msgstr "Nee"
-#: ../../mod/profiles.php:18 ../../mod/profiles.php:138
-#: ../../mod/profiles.php:168 ../../mod/profiles.php:472
+#: ../../mod/profiles.php:18 ../../mod/profiles.php:174
+#: ../../mod/profiles.php:231 ../../mod/profiles.php:583
msgid "Profile not found."
msgstr "Profiel niet gevonden."
@@ -4218,249 +4005,449 @@ msgstr "Nieuw profiel aangemaakt."
msgid "Profile unavailable to clone."
msgstr "Profiel niet beschikbaar om te klonen"
-#: ../../mod/profiles.php:178
+#: ../../mod/profiles.php:136
+msgid "Profile unavailable to export."
+msgstr "Geen profiel beschikbaar om te exporteren"
+
+#: ../../mod/profiles.php:241
msgid "Profile Name is required."
msgstr "Profielnaam is vereist"
-#: ../../mod/profiles.php:294
+#: ../../mod/profiles.php:387
msgid "Marital Status"
msgstr "Huwelijke status"
-#: ../../mod/profiles.php:298
+#: ../../mod/profiles.php:391
msgid "Romantic Partner"
msgstr "Romantische partner"
-#: ../../mod/profiles.php:302
+#: ../../mod/profiles.php:395
msgid "Likes"
msgstr "Houdt van"
-#: ../../mod/profiles.php:306
+#: ../../mod/profiles.php:399
msgid "Dislikes"
msgstr "Houdt niet van"
-#: ../../mod/profiles.php:310
+#: ../../mod/profiles.php:403
msgid "Work/Employment"
msgstr "Werk/arbeid"
-#: ../../mod/profiles.php:313
+#: ../../mod/profiles.php:406
msgid "Religion"
msgstr "Religie"
-#: ../../mod/profiles.php:317
+#: ../../mod/profiles.php:410
msgid "Political Views"
msgstr "Politieke overtuigingen"
-#: ../../mod/profiles.php:321
+#: ../../mod/profiles.php:414
msgid "Gender"
msgstr "Geslacht"
-#: ../../mod/profiles.php:325
+#: ../../mod/profiles.php:418
msgid "Sexual Preference"
msgstr "Seksuele voorkeur"
-#: ../../mod/profiles.php:329
+#: ../../mod/profiles.php:422
msgid "Homepage"
msgstr "Homepage"
-#: ../../mod/profiles.php:333
+#: ../../mod/profiles.php:426
msgid "Interests"
msgstr "Interesses"
-#: ../../mod/profiles.php:337 ../../mod/admin.php:893
+#: ../../mod/profiles.php:430 ../../mod/admin.php:866
msgid "Address"
msgstr "Kanaaladres"
-#: ../../mod/profiles.php:344 ../../mod/pubsites.php:25
+#: ../../mod/profiles.php:437 ../../mod/pubsites.php:25
msgid "Location"
msgstr "Locatie"
-#: ../../mod/profiles.php:427
+#: ../../mod/profiles.php:520
msgid "Profile updated."
msgstr "Profiel bijgewerkt"
-#: ../../mod/profiles.php:491
+#: ../../mod/profiles.php:609
msgid "Hide your contact/friend list from viewers of this profile?"
msgstr "Laat de lijst met connecties niet aan bezoekers van dit profiel zien."
-#: ../../mod/profiles.php:514
+#: ../../mod/profiles.php:649
msgid "Edit Profile Details"
msgstr "Profiel bewerken"
-#: ../../mod/profiles.php:516
+#: ../../mod/profiles.php:651
msgid "View this profile"
msgstr "Profiel weergeven"
-#: ../../mod/profiles.php:517
+#: ../../mod/profiles.php:653
msgid "Change Profile Photo"
msgstr "Profielfoto wijzigen"
-#: ../../mod/profiles.php:518
+#: ../../mod/profiles.php:654
msgid "Create a new profile using these settings"
msgstr "Een nieuw profiel aanmaken met dit profiel als basis"
-#: ../../mod/profiles.php:519
+#: ../../mod/profiles.php:655
msgid "Clone this profile"
msgstr "Dit profiel klonen"
-#: ../../mod/profiles.php:520
+#: ../../mod/profiles.php:656
msgid "Delete this profile"
msgstr "Dit profiel verwijderen"
-#: ../../mod/profiles.php:521
+#: ../../mod/profiles.php:658
+msgid "Import profile from file"
+msgstr "Profiel vanuit bestand importeren"
+
+#: ../../mod/profiles.php:659
+msgid "Export profile to file"
+msgstr "Profiel naar bestand exporteren"
+
+#: ../../mod/profiles.php:660
msgid "Profile Name:"
msgstr "Profielnaam:"
-#: ../../mod/profiles.php:522
+#: ../../mod/profiles.php:661
msgid "Your Full Name:"
msgstr "Jouw volledige naam:"
-#: ../../mod/profiles.php:523
+#: ../../mod/profiles.php:662
msgid "Title/Description:"
msgstr "Titel/omschrijving:"
-#: ../../mod/profiles.php:524
+#: ../../mod/profiles.php:663
msgid "Your Gender:"
msgstr "Jouw geslacht"
-#: ../../mod/profiles.php:525
-#, php-format
-msgid "Birthday (%s):"
-msgstr "Geboortedag (%s)"
+#: ../../mod/profiles.php:664
+msgid "Birthday :"
+msgstr "Verjaardag: "
-#: ../../mod/profiles.php:526
+#: ../../mod/profiles.php:665
msgid "Street Address:"
msgstr "Straat en huisnummer:"
-#: ../../mod/profiles.php:527
+#: ../../mod/profiles.php:666
msgid "Locality/City:"
msgstr "Woonplaats:"
-#: ../../mod/profiles.php:528
+#: ../../mod/profiles.php:667
msgid "Postal/Zip Code:"
msgstr "Postcode:"
-#: ../../mod/profiles.php:529
+#: ../../mod/profiles.php:668
msgid "Country:"
msgstr "Land:"
-#: ../../mod/profiles.php:530
+#: ../../mod/profiles.php:669
msgid "Region/State:"
msgstr "Provincie/gewest/deelstaat:"
-#: ../../mod/profiles.php:531
+#: ../../mod/profiles.php:670
msgid "<span class=\"heart\">&hearts;</span> Marital Status:"
msgstr "<span class=\"heart\">&hearts;</span> Huwelijkse staat:"
-#: ../../mod/profiles.php:532
+#: ../../mod/profiles.php:671
msgid "Who: (if applicable)"
msgstr "Wie (wanneer toepasselijk):"
-#: ../../mod/profiles.php:533
+#: ../../mod/profiles.php:672
msgid "Examples: cathy123, Cathy Williams, cathy@example.com"
msgstr "Voorbeelden: karin123, Karin Jansen, cathy@voorbeeld.nl"
-#: ../../mod/profiles.php:534
+#: ../../mod/profiles.php:673
msgid "Since [date]:"
msgstr "Sinds [datum]:"
-#: ../../mod/profiles.php:536
+#: ../../mod/profiles.php:675
msgid "Homepage URL:"
msgstr "Adres homepage:"
-#: ../../mod/profiles.php:539
+#: ../../mod/profiles.php:678
msgid "Religious Views:"
msgstr "Religieuze overtuigingen"
-#: ../../mod/profiles.php:540
+#: ../../mod/profiles.php:679
msgid "Keywords:"
msgstr "Trefwoorden"
-#: ../../mod/profiles.php:543
+#: ../../mod/profiles.php:682
msgid "Example: fishing photography software"
msgstr "Voorbeeld: muziek, fotografie, software"
-#: ../../mod/profiles.php:544
+#: ../../mod/profiles.php:683
msgid "Used in directory listings"
msgstr "Wordt in de kanalengids gebruikt"
-#: ../../mod/profiles.php:545
+#: ../../mod/profiles.php:684
msgid "Tell us about yourself..."
msgstr "Vertel ons iets over jezelf..."
-#: ../../mod/profiles.php:546
+#: ../../mod/profiles.php:685
msgid "Hobbies/Interests"
msgstr "Hobby's/interesses"
-#: ../../mod/profiles.php:547
+#: ../../mod/profiles.php:686
msgid "Contact information and Social Networks"
msgstr "Contactinformatie en sociale netwerken"
-#: ../../mod/profiles.php:548
+#: ../../mod/profiles.php:687
msgid "My other channels"
msgstr "Mijn andere kanalen"
-#: ../../mod/profiles.php:549
+#: ../../mod/profiles.php:688
msgid "Musical interests"
msgstr "Muzikale interesses"
-#: ../../mod/profiles.php:550
+#: ../../mod/profiles.php:689
msgid "Books, literature"
msgstr "Boeken/literatuur"
-#: ../../mod/profiles.php:551
+#: ../../mod/profiles.php:690
msgid "Television"
msgstr "Televisie"
-#: ../../mod/profiles.php:552
+#: ../../mod/profiles.php:691
msgid "Film/dance/culture/entertainment"
msgstr "Film/dans/cultuur/entertainment"
-#: ../../mod/profiles.php:553
+#: ../../mod/profiles.php:692
msgid "Love/romance"
msgstr "Liefde/romantiek"
-#: ../../mod/profiles.php:554
+#: ../../mod/profiles.php:693
msgid "Work/employment"
msgstr "Werk/arbeid"
-#: ../../mod/profiles.php:555
+#: ../../mod/profiles.php:694
msgid "School/education"
msgstr "School/onderwijs"
-#: ../../mod/profiles.php:560
-msgid ""
-"This is your <strong>public</strong> profile.<br />It <strong>may</strong> "
-"be visible to anybody using the internet."
-msgstr "Dit is jouw <strong>openbare</strong> profiel.<br />Het <strong>kan</strong> voor iedereen op het internet zichtbaar zijn."
+#: ../../mod/profiles.php:700
+msgid "This is your default profile."
+msgstr "Dit is jouw standaardprofiel"
-#: ../../mod/profiles.php:570 ../../mod/directory.php:143
-#: ../../mod/dirprofile.php:92
+#: ../../mod/profiles.php:711 ../../mod/directory.php:188
msgid "Age: "
msgstr "Leeftijd:"
-#: ../../mod/profiles.php:609
+#: ../../mod/profiles.php:754
msgid "Edit/Manage Profiles"
msgstr "Profielen bewerken/beheren"
-#: ../../mod/profiles.php:610
+#: ../../mod/profiles.php:755
msgid "Add profile things"
-msgstr "Profiel-objecten toevoegen"
+msgstr "Dingen aan je profiel toevoegen"
-#: ../../mod/profiles.php:611
+#: ../../mod/profiles.php:756
msgid "Include desirable objects in your profile"
-msgstr "Voeg door jou gewenste objecten aan jouw profiel toe"
+msgstr "Voeg door jou gewenste dingen aan jouw profiel toe"
-#: ../../mod/bookmarks.php:38
-msgid "Bookmark added"
-msgstr "Bladwijzer toegevoegd"
+#: ../../mod/attach.php:9
+msgid "Item not available."
+msgstr "Item is niet aanwezig."
-#: ../../mod/bookmarks.php:58
-msgid "My Bookmarks"
-msgstr "Mijn bladwijzers"
+#: ../../mod/probe.php:23 ../../mod/probe.php:29
+#, php-format
+msgid "Fetching URL returns error: %1$s"
+msgstr "Ophalen URL gaf een foutmelding terug: %1$s"
-#: ../../mod/bookmarks.php:69
-msgid "My Connections Bookmarks"
-msgstr "Bladwijzers van mijn connecties"
+#: ../../mod/block.php:27 ../../mod/page.php:33
+msgid "Invalid item."
+msgstr "Ongeldig item."
+
+#: ../../mod/block.php:39 ../../mod/wall_upload.php:29 ../../mod/page.php:45
+msgid "Channel not found."
+msgstr "Kanaal niet gevonden."
+
+#: ../../mod/block.php:75 ../../mod/display.php:102 ../../mod/help.php:70
+#: ../../mod/page.php:81 ../../index.php:241
+msgid "Page not found."
+msgstr "Pagina niet gevonden."
+
+#: ../../mod/uexport.php:33 ../../mod/uexport.php:34
+msgid "Export Channel"
+msgstr "Kanaal exporteren"
+
+#: ../../mod/uexport.php:35
+msgid ""
+"Export your basic channel information to a small file. This acts as a "
+"backup of your connections, permissions, profile and basic data, which can "
+"be used to import your data to a new hub, but\tdoes not contain your "
+"content."
+msgstr "Exporteer de basisinformatie van jouw kanaal naar een klein bestand. Dit fungeert als een back-up van jouw connecties, permissies, profiel en basisgegevens, die gebruikt kan worden om op een nieuwe hub jouw gegevens te importeren. Deze back-up bevat echter niet de inhoud van jouw kanaal."
+
+#: ../../mod/uexport.php:36
+msgid "Export Content"
+msgstr "Inhoud exporteren"
+
+#: ../../mod/uexport.php:37
+msgid ""
+"Export your channel information and all the content to a JSON backup. This "
+"backs up all of your connections, permissions, profile data and all of your "
+"content, but is generally not suitable for importing a channel to a new hub "
+"as this file may be VERY large. Please be patient - it may take several "
+"minutes for this download to begin."
+msgstr "Exporteer informatie en alle inhoud van jouw kanaal naar een JSON-back-up. Dit slaat al jouw connecties, permissies, profielgegevens en de volledige inhoud van jouw kanaal op, maar is in het algemeen niet geschikt om op een nieuwe hub te importeren, omdat dit bestand ZEER groot kan worden. Wees geduldig - het kan enkele minuten duren voordat de download begint."
+
+#: ../../mod/delegate.php:95
+msgid "No potential page delegates located."
+msgstr "Geen gevolmachtigde personen gevonden waaraan mogelijk het accountbeheer kan worden uitbesteed."
+
+#: ../../mod/delegate.php:121
+msgid "Delegate Page Management"
+msgstr "Accountbeheer uitbesteden"
+
+#: ../../mod/delegate.php:123
+msgid ""
+"Delegates are able to manage all aspects of this account/page except for "
+"basic account settings. Please do not delegate your personal account to "
+"anybody that you do not trust completely."
+msgstr "Gevolmachtigde personen zijn in staat om alle aspecten van dit account te beheren, behalve enkele basisinstellingen. Besteed het beheer van je persoonlijke account niet aan iemand uit die je niet volledig vertrouwd."
+
+#: ../../mod/delegate.php:124
+msgid "Existing Page Managers"
+msgstr "Bestaande accountbeheerders"
+
+#: ../../mod/delegate.php:126
+msgid "Existing Page Delegates"
+msgstr "Bestaande gevolmachtigde accountbeheerders"
+
+#: ../../mod/delegate.php:128
+msgid "Potential Delegates"
+msgstr "Gevolmachtigde personen waaraan mogelijk het accountbeheer kan worden uitbesteed."
+
+#: ../../mod/delegate.php:130 ../../mod/tagrm.php:133 ../../mod/photos.php:902
+msgid "Remove"
+msgstr "Verwijderen"
+
+#: ../../mod/delegate.php:131
+msgid "Add"
+msgstr "Toevoegen"
+
+#: ../../mod/delegate.php:132
+msgid "No entries."
+msgstr "Geen"
+
+#: ../../mod/siteinfo.php:93
+#, php-format
+msgid "Version %s"
+msgstr "Versie %s"
+
+#: ../../mod/siteinfo.php:114
+msgid "Installed plugins/addons/apps:"
+msgstr "Ingeschakelde plug-ins/add-ons/apps:"
+
+#: ../../mod/siteinfo.php:127
+msgid "No installed plugins/addons/apps"
+msgstr "Geen ingeschakelde plug-ins/add-ons/apps"
+
+#: ../../mod/siteinfo.php:135
+msgid "Red"
+msgstr "Red"
+
+#: ../../mod/siteinfo.php:136
+msgid ""
+"This is a hub of the Red Matrix - a global cooperative network of "
+"decentralized privacy enhanced websites."
+msgstr "Dit is een hub van de RedMatrix - een wereldwijd coöperatief netwerk van gedecentraliseerde websites met verbeterde privacy."
+
+#: ../../mod/siteinfo.php:138
+msgid "Tag: "
+msgstr "Tag: "
+
+#: ../../mod/siteinfo.php:140
+msgid "Last background fetch: "
+msgstr "Meest recente achtergrond-fetch:"
+
+#: ../../mod/siteinfo.php:143
+msgid "Running at web location"
+msgstr "Draaiend op weblocatie"
+
+#: ../../mod/siteinfo.php:144
+msgid ""
+"Please visit <a href=\"https://redmatrix.me\">RedMatrix.me</a> to learn more"
+" about the Red Matrix."
+msgstr "Bezoek <a href=\"https://redmatrix.me\">RedMatrix.me</a> om meer te leren over de RedMatrix."
+
+#: ../../mod/siteinfo.php:145
+msgid "Bug reports and issues: please visit"
+msgstr "Bugrapporten en andere kwesties: bezoek"
+
+#: ../../mod/siteinfo.php:148
+msgid ""
+"Suggestions, praise, etc. - please email \"redmatrix\" at librelist - dot "
+"com"
+msgstr "Voorstellen, lofbetuigingen, enz. - e-mail \"redmatrix\" at librelist - dot com"
+
+#: ../../mod/siteinfo.php:150
+msgid "Site Administrators"
+msgstr "Hubbeheerders: "
+
+#: ../../mod/sources.php:32
+msgid "Failed to create source. No channel selected."
+msgstr "Aanmaken bron mislukt. Geen kanaal geselecteerd."
+
+#: ../../mod/sources.php:45
+msgid "Source created."
+msgstr "Bron aangemaakt."
+
+#: ../../mod/sources.php:57
+msgid "Source updated."
+msgstr "Bron aangemaakt."
+
+#: ../../mod/sources.php:82
+msgid "*"
+msgstr "*"
+
+#: ../../mod/sources.php:89
+msgid "Manage remote sources of content for your channel."
+msgstr "Beheer externe bronnen met inhoud voor jouw kanaal"
+
+#: ../../mod/sources.php:90 ../../mod/sources.php:100
+msgid "New Source"
+msgstr "Nieuwe bron"
+
+#: ../../mod/sources.php:101 ../../mod/sources.php:133
+msgid ""
+"Import all or selected content from the following channel into this channel "
+"and distribute it according to your channel settings."
+msgstr "Importeer complete of gedeelde inhoud vanuit het volgende kanaal naar dit kanaal, en verdeel het vervolgens volgens jouw kanaalinstellingen."
+
+#: ../../mod/sources.php:102 ../../mod/sources.php:134
+msgid "Only import content with these words (one per line)"
+msgstr "Importeer alleen inhoud met deze woorden (één per regel)"
+
+#: ../../mod/sources.php:102 ../../mod/sources.php:134
+msgid "Leave blank to import all public content"
+msgstr "Laat leeg om alle openbare inhoud te importeren"
+
+#: ../../mod/sources.php:103 ../../mod/sources.php:137
+#: ../../mod/new_channel.php:112
+msgid "Channel Name"
+msgstr "Kanaalnaam"
+
+#: ../../mod/sources.php:123 ../../mod/sources.php:150
+msgid "Source not found."
+msgstr "Bron niet gevonden"
+
+#: ../../mod/sources.php:130
+msgid "Edit Source"
+msgstr "Bron bewerken"
+
+#: ../../mod/sources.php:131
+msgid "Delete Source"
+msgstr "Bron verwijderen"
+
+#: ../../mod/sources.php:158
+msgid "Source removed"
+msgstr "Bron verwijderd"
+
+#: ../../mod/sources.php:160
+msgid "Unable to remove source."
+msgstr "Verwijderen bron mislukt."
#: ../../mod/profperm.php:29 ../../mod/profperm.php:58
msgid "Invalid profile identifier."
@@ -4482,6 +4469,87 @@ msgstr "Zichtbaar voor"
msgid "All Connections"
msgstr "Alle connecties"
+#: ../../mod/events.php:81
+msgid "Event can not end before it has started."
+msgstr "Gebeurtenis kan niet eindigen voordat het is begonnen"
+
+#: ../../mod/events.php:86
+msgid "Event title and start time are required."
+msgstr "Titel en begintijd van gebeurtenis zijn vereist."
+
+#: ../../mod/events.php:100
+msgid "Event not found."
+msgstr "Gebeurtenis niet gevonden"
+
+#: ../../mod/events.php:369
+msgid "l, F j"
+msgstr "l j F"
+
+#: ../../mod/events.php:391
+msgid "Edit event"
+msgstr "Gebeurtenis bewerken"
+
+#: ../../mod/events.php:443
+msgid "Create New Event"
+msgstr "Nieuwe gebeurtenis aanmaken"
+
+#: ../../mod/events.php:444 ../../mod/photos.php:856
+msgid "Previous"
+msgstr "Vorige"
+
+#: ../../mod/events.php:445 ../../mod/setup.php:265 ../../mod/photos.php:865
+msgid "Next"
+msgstr "Volgende"
+
+#: ../../mod/events.php:446
+msgid "Export"
+msgstr "Exporteren"
+
+#: ../../mod/events.php:571
+msgid "Event details"
+msgstr "Details van gebeurtenis"
+
+#: ../../mod/events.php:572
+msgid "Starting date and Title are required."
+msgstr "Begintijd en titel zijn vereist."
+
+#: ../../mod/events.php:574
+msgid "Categories (comma-separated list)"
+msgstr "Categorieën (door komma's gescheiden lijst)"
+
+#: ../../mod/events.php:576
+msgid "Event Starts:"
+msgstr "Begin gebeurtenis:"
+
+#: ../../mod/events.php:576 ../../mod/events.php:592 ../../mod/appman.php:91
+#: ../../mod/appman.php:92
+msgid "Required"
+msgstr "Vereist"
+
+#: ../../mod/events.php:582
+msgid "Finish date/time is not known or not relevant"
+msgstr "Einddatum/-tijd is niet bekend of niet relevant"
+
+#: ../../mod/events.php:584
+msgid "Event Finishes:"
+msgstr "Einde gebeurtenis:"
+
+#: ../../mod/events.php:586
+msgid "Adjust for viewer timezone"
+msgstr "Aanpassen aan de tijdzone van wie deze gebeurtenis bekijkt"
+
+#: ../../mod/events.php:588
+msgid "Description:"
+msgstr "Omschrijving:"
+
+#: ../../mod/events.php:592
+msgid "Title:"
+msgstr "Titel:"
+
+#: ../../mod/events.php:594
+msgid "Share this event"
+msgstr "Deel deze gebeurtenis"
+
#: ../../mod/pubsites.php:16
msgid "Public Sites"
msgstr "Openbare hubs"
@@ -4493,7 +4561,7 @@ msgid ""
"in the matrix as a whole. Some sites may require subscription or provide "
"tiered service plans. The provider links <strong>may</strong> provide "
"additional details."
-msgstr "Op de hier weergegeven hubs kan iedereen zich voor de Red Matrix aanmelden. Alle hubs in de matrix zijn met elkaar verbonden, dus maakt het qua lidmaatschap niet uit waar je je aanmeldt. Op sommige hubs heb je eerst goedkeuring nodig en sommige hubs vereisen betaalde abonnementen voor uitbreidingen. <strong>Mogelijk</strong> wordt hierover op de hub zelf meer informatie gegeven."
+msgstr "Op de hier weergegeven hubs kan iedereen zich voor de RedMatrix aanmelden. Alle hubs in de Matrix zijn met elkaar verbonden, dus maakt het qua lidmaatschap niet uit waar je je aanmeldt. Op sommige hubs heb je eerst goedkeuring nodig en sommige hubs vereisen betaalde abonnementen voor uitbreidingen. <strong>Mogelijk</strong> wordt hierover op de hub zelf meer informatie gegeven."
#: ../../mod/pubsites.php:25
msgid "Site URL"
@@ -4511,9 +4579,9 @@ msgstr "Registratiebeleid"
msgid "You must be logged in to see this page."
msgstr "Je moet zijn ingelogd om deze pagina te kunnen bekijken."
-#: ../../mod/channel.php:86
+#: ../../mod/channel.php:87
msgid "Insufficient permissions. Request redirected to profile page."
-msgstr "Onvoldoende privacy-rechten. Doorgestuurd naar profielpagina."
+msgstr "Onvoldoende permissies. Doorgestuurd naar profielpagina."
#: ../../mod/rbmark.php:88
msgid "Select a bookmark folder"
@@ -4572,85 +4640,6 @@ msgstr "Naam chatkanaal"
msgid "%1$s's Chatrooms"
msgstr "Chatkanalen van %1$s"
-#: ../../mod/register.php:43
-msgid "Maximum daily site registrations exceeded. Please try again tomorrow."
-msgstr "Maximum toegestane dagelijkse registraties op deze Red Matrix-hub bereikt. Probeer het morgen (UTC) nogmaals."
-
-#: ../../mod/register.php:49
-msgid ""
-"Please indicate acceptance of the Terms of Service. Registration failed."
-msgstr "Registratie mislukt. De gebruiksvoorwaarden dienen wel geaccepteerd te worden."
-
-#: ../../mod/register.php:77
-msgid "Passwords do not match."
-msgstr "Wachtwoorden komen niet met elkaar overeen."
-
-#: ../../mod/register.php:105
-msgid ""
-"Registration successful. Please check your email for validation "
-"instructions."
-msgstr "Registratie geslaagd. Controleer je e-mail voor instructies om je e-mail te bevestigen."
-
-#: ../../mod/register.php:111
-msgid "Your registration is pending approval by the site owner."
-msgstr "Jouw accountregistratie wacht op goedkeuring van de beheerder van deze Red Matrix-hub."
-
-#: ../../mod/register.php:114
-msgid "Your registration can not be processed."
-msgstr "Jouw registratie kan niet verwerkt worden."
-
-#: ../../mod/register.php:147
-msgid "Registration on this site/hub is by approval only."
-msgstr "Registraties op deze Red Matrix-hub moeten eerst worden goedgekeurd."
-
-#: ../../mod/register.php:148
-msgid "<a href=\"pubsites\">Register at another affiliated site/hub</a>"
-msgstr "<a href=\"pubsites\">Registreer op een andere Red Matrix-hub</a>"
-
-#: ../../mod/register.php:156
-msgid ""
-"This site has exceeded the number of allowed daily account registrations. "
-"Please try again tomorrow."
-msgstr "Deze Red Matrix-hub heeft het maximum aantal dagelijks toegestane registraties bereikt. Probeer het morgen (UTC) nogmaals."
-
-#: ../../mod/register.php:167
-msgid "Terms of Service"
-msgstr "Gebruiksvoorwaarden"
-
-#: ../../mod/register.php:173
-#, php-format
-msgid "I accept the %s for this website"
-msgstr "Ik accepteer de %s van deze Red Matrix-hub"
-
-#: ../../mod/register.php:175
-#, php-format
-msgid "I am over 13 years of age and accept the %s for this website"
-msgstr "Ik ben ouder dan 13 en accepteer de %s van deze Red Matrix-hub"
-
-#: ../../mod/register.php:189 ../../mod/admin.php:443
-msgid "Registration"
-msgstr "Registratie"
-
-#: ../../mod/register.php:194
-msgid "Membership on this site is by invitation only."
-msgstr "Registreren op deze Red Matrix-hub kan alleen op uitnodiging."
-
-#: ../../mod/register.php:195
-msgid "Please enter your invitation code"
-msgstr "Vul jouw uitnodigingscode in"
-
-#: ../../mod/register.php:198
-msgid "Your email address"
-msgstr "Jouw e-mailadres"
-
-#: ../../mod/register.php:199
-msgid "Choose a password"
-msgstr "Geef een wachtwoord op"
-
-#: ../../mod/register.php:200
-msgid "Please re-enter your password"
-msgstr "Geef het wachtwoord opnieuw op"
-
#: ../../mod/chatsvc.php:111
msgid "Away"
msgstr "Afwezig"
@@ -4659,39 +4648,74 @@ msgstr "Afwezig"
msgid "Online"
msgstr "Online"
-#: ../../mod/regmod.php:12
+#: ../../mod/regmod.php:11
msgid "Please login."
msgstr "Inloggen."
-#: ../../mod/cloud.php:115
-msgid "Red Matrix - Guests: Username: {your email address}, Password: +++"
-msgstr "Red Matrix - gasten: Gebruikersnaam: {jouw e-mailadres}, wachtwoord: +++"
+#: ../../mod/editpost.php:20 ../../mod/editblock.php:79
+#: ../../mod/editblock.php:95 ../../mod/editlayout.php:78
+#: ../../mod/editwebpage.php:77
+msgid "Item not found"
+msgstr "Item niet gevonden"
+
+#: ../../mod/editpost.php:31
+msgid "Item is not editable"
+msgstr "Item is niet te bewerken"
+
+#: ../../mod/editpost.php:42 ../../mod/rpost.php:97
+msgid "Edit post"
+msgstr "Bericht bewerken"
+
+#: ../../mod/editpost.php:53
+msgid "Delete item?"
+msgstr "Item verwijderen?"
+
+#: ../../mod/editpost.php:116 ../../mod/editblock.php:147
+#: ../../mod/editlayout.php:143 ../../mod/editwebpage.php:178
+msgid "Insert YouTube video"
+msgstr "YouTube-video invoegen"
+
+#: ../../mod/editpost.php:117 ../../mod/editblock.php:148
+#: ../../mod/editlayout.php:144 ../../mod/editwebpage.php:179
+msgid "Insert Vorbis [.ogg] video"
+msgstr "Vorbis-video [.ogg] invoegen"
+
+#: ../../mod/editpost.php:118 ../../mod/editblock.php:149
+#: ../../mod/editlayout.php:145 ../../mod/editwebpage.php:180
+msgid "Insert Vorbis [.ogg] audio"
+msgstr "Vorbis-audio [.ogg] invoegen"
-#: ../../mod/removeme.php:49
+#: ../../mod/removeme.php:29
+msgid ""
+"Channel removals are not allowed within 48 hours of changing the account "
+"password."
+msgstr "Het verwijderen van een kanaal is niet toegestaan binnen 48 uur nadat het wachtwoord van het account is veranderd."
+
+#: ../../mod/removeme.php:57
msgid "Remove This Channel"
msgstr "Verwijder dit kanaal"
-#: ../../mod/removeme.php:50
+#: ../../mod/removeme.php:58
msgid ""
"This will completely remove this channel from the network. Once this has "
"been done it is not recoverable."
-msgstr "Dit zal dit kanaal compleet van deze hub en uit het Red Matrix-netwerk verwijderen. Dit kan hierna niet meer te ongedaan gemaakt worden."
+msgstr "Dit zal dit kanaal compleet van deze hub en uit het RedMatrix-netwerk verwijderen. Dit kan hierna niet meer te ongedaan gemaakt worden."
-#: ../../mod/removeme.php:51
+#: ../../mod/removeme.php:59 ../../mod/removeaccount.php:59
msgid "Please enter your password for verification:"
-msgstr "Vul je wachtwoord in voor verificatie:"
+msgstr "Vul je wachtwoord in ter verificatie:"
-#: ../../mod/removeme.php:52
+#: ../../mod/removeme.php:60
msgid "Remove this channel and all its clones from the network"
-msgstr "Dit kanaal en alle klonen hiervan uit het Red Matrix-netwerk verwijderen"
+msgstr "Dit kanaal en alle klonen hiervan uit het RedMatrix-netwerk verwijderen"
-#: ../../mod/removeme.php:52
+#: ../../mod/removeme.php:60
msgid ""
"By default only the instance of the channel located on this hub will be "
"removed from the network"
-msgstr "Standaard wordt alleen het kanaal dat zich op deze hub bevindt uit het Red Matrix-netwerk verwijderd."
+msgstr "Standaard wordt alleen het kanaal dat zich op deze hub bevindt uit het RedMatrix-netwerk verwijderd."
-#: ../../mod/removeme.php:53
+#: ../../mod/removeme.php:61
msgid "Remove Channel"
msgstr "Kanaal verwijderen"
@@ -4721,98 +4745,662 @@ msgstr "Het foutbericht was:"
msgid "Authentication failed."
msgstr "Authenticatie mislukt."
-#: ../../mod/rmagic.php:78
+#: ../../mod/rmagic.php:82
msgid "Remote Authentication"
msgstr "Authenticatie op afstand"
-#: ../../mod/rmagic.php:79
+#: ../../mod/rmagic.php:83
msgid "Enter your channel address (e.g. channel@example.com)"
msgstr "Vul jouw kanaaladres in (bijv. channel@example.com)"
-#: ../../mod/rmagic.php:80
+#: ../../mod/rmagic.php:84
msgid "Authenticate"
msgstr "Authenticeren"
-#: ../../mod/connect.php:55 ../../mod/connect.php:103
-msgid "Continue"
-msgstr "Ga verder"
+#: ../../mod/lostpass.php:15
+msgid "No valid account found."
+msgstr "Geen geldige account gevonden."
-#: ../../mod/connect.php:84
-msgid "Premium Channel Setup"
-msgstr "Instellen premiumkanaal "
+#: ../../mod/lostpass.php:29
+msgid "Password reset request issued. Check your email."
+msgstr "Het verzoek om je wachtwoord opnieuw in te stellen is behandeld. Controleer je e-mail."
-#: ../../mod/connect.php:86
-msgid "Enable premium channel connection restrictions"
-msgstr "Restricties voor connecties van premiumkanaal toestaan"
+#: ../../mod/lostpass.php:35 ../../mod/lostpass.php:102
+#, php-format
+msgid "Site Member (%s)"
+msgstr "Lid van hub (%s)"
-#: ../../mod/connect.php:87
+#: ../../mod/lostpass.php:40
+#, php-format
+msgid "Password reset requested at %s"
+msgstr "Verzoek tot het opnieuw instellen van een wachtwoord op %s is ingediend"
+
+#: ../../mod/lostpass.php:63
msgid ""
-"Please enter your restrictions or conditions, such as paypal receipt, usage "
-"guidelines, etc."
-msgstr "Vul je restricties of voorwaarden in, zoals een paypal-afschrift, gebruikersvoorschriften, enz."
+"Request could not be verified. (You may have previously submitted it.) "
+"Password reset failed."
+msgstr "Het verzoek kon niet worden geverifieerd. (Mogelijk heb je al eerder een verzoek ingediend.) Opnieuw instellen van wachtwoord is mislukt."
+
+#: ../../mod/lostpass.php:85 ../../boot.php:1550
+msgid "Password Reset"
+msgstr "Wachtwoord vergeten?"
+
+#: ../../mod/lostpass.php:86
+msgid "Your password has been reset as requested."
+msgstr "Jouw wachtwoord is opnieuw ingesteld zoals je had verzocht."
-#: ../../mod/connect.php:89 ../../mod/connect.php:109
+#: ../../mod/lostpass.php:87
+msgid "Your new password is"
+msgstr "Jouw nieuwe wachtwoord is"
+
+#: ../../mod/lostpass.php:88
+msgid "Save or copy your new password - and then"
+msgstr "Kopieer of sla je nieuwe wachtwoord op - en"
+
+#: ../../mod/lostpass.php:89
+msgid "click here to login"
+msgstr "klik dan hier om in te loggen"
+
+#: ../../mod/lostpass.php:90
msgid ""
-"This channel may require additional steps or acknowledgement of the "
-"following conditions prior to connecting:"
-msgstr "Dit kanaal kan extra stappen of het accepteren van de volgende voorwaarden vereisen, voordat de connectie wordt geaccepteerd:"
+"Your password may be changed from the <em>Settings</em> page after "
+"successful login."
+msgstr "Jouw wachtwoord kan worden veranderd onder <em>instellingen</em>, nadat je succesvol bent ingelogd."
+
+#: ../../mod/lostpass.php:107
+#, php-format
+msgid "Your password has changed at %s"
+msgstr "Jouw wachtwoord op %s is veranderd"
+
+#: ../../mod/lostpass.php:122
+msgid "Forgot your Password?"
+msgstr "Wachtwoord vergeten?"
-#: ../../mod/connect.php:90
+#: ../../mod/lostpass.php:123
msgid ""
-"Potential connections will then see the following text before proceeding:"
-msgstr "Mogelijke connecties zullen dan de volgende tekst zien voordat ze verder kunnen:"
+"Enter your email address and submit to have your password reset. Then check "
+"your email for further instructions."
+msgstr "Voer je e-mailadres in en verstuur deze om je wachtwoord opnieuw in te stellen. Controleer hierna hier je e-mail voor verdere instructies."
+
+#: ../../mod/lostpass.php:124
+msgid "Email Address"
+msgstr "E-mailadres"
+
+#: ../../mod/lostpass.php:125
+msgid "Reset"
+msgstr "Opnieuw instellen"
+
+#: ../../mod/settings.php:73
+msgid "Name is required"
+msgstr "Naam is vereist"
+
+#: ../../mod/settings.php:77
+msgid "Key and Secret are required"
+msgstr "Key en secret zijn vereist"
+
+#: ../../mod/settings.php:222
+msgid "Passwords do not match. Password unchanged."
+msgstr "Wachtwoorden komen niet overeen. Wachtwoord onveranderd."
+
+#: ../../mod/settings.php:226
+msgid "Empty passwords are not allowed. Password unchanged."
+msgstr "Lege wachtwoorden zijn niet toegestaan. Wachtwoord onveranderd."
+
+#: ../../mod/settings.php:240
+msgid "Password changed."
+msgstr "Wachtwoord veranderd."
+
+#: ../../mod/settings.php:242
+msgid "Password update failed. Please try again."
+msgstr "Bijwerken wachtwoord mislukt. Probeer opnieuw."
+
+#: ../../mod/settings.php:256
+msgid "Not valid email."
+msgstr "Geen geldig e-mailadres."
+
+#: ../../mod/settings.php:259
+msgid "Protected email address. Cannot change to that email."
+msgstr "Beschermd e-mailadres. Kan dat e-mailadres niet gebruiken."
+
+#: ../../mod/settings.php:268
+msgid "System failure storing new email. Please try again."
+msgstr "Systeemfout opslaan van nieuwe e-mail. Probeer het nog een keer."
-#: ../../mod/connect.php:91 ../../mod/connect.php:112
+#: ../../mod/settings.php:507
+msgid "Settings updated."
+msgstr "Instellingen bijgewerkt."
+
+#: ../../mod/settings.php:576 ../../mod/settings.php:602
+#: ../../mod/settings.php:638
+msgid "Add application"
+msgstr "Applicatie toevoegen"
+
+#: ../../mod/settings.php:579
+msgid "Name of application"
+msgstr "Naam van applicatie"
+
+#: ../../mod/settings.php:580 ../../mod/settings.php:606
+msgid "Consumer Key"
+msgstr "Consumer key"
+
+#: ../../mod/settings.php:580 ../../mod/settings.php:581
+msgid "Automatically generated - change if desired. Max length 20"
+msgstr "Automatische gegenereerd - verander wanneer gewenst. Maximale lengte is 20"
+
+#: ../../mod/settings.php:581 ../../mod/settings.php:607
+msgid "Consumer Secret"
+msgstr "Consumer secret"
+
+#: ../../mod/settings.php:582 ../../mod/settings.php:608
+msgid "Redirect"
+msgstr "Redirect/doorverwijzing"
+
+#: ../../mod/settings.php:582
msgid ""
-"By continuing, I certify that I have complied with any instructions provided"
-" on this page."
-msgstr "Door verder te gaan ga ik automatisch akkoord met alle voorwaarden en aanwijzingen op deze pagina."
+"Redirect URI - leave blank unless your application specifically requires "
+"this"
+msgstr "URI voor redirect - laat leeg, behalve wanneer de applicatie dit vereist"
-#: ../../mod/connect.php:100
-msgid "(No specific instructions have been provided by the channel owner.)"
-msgstr "(Er zijn geen speciale voorwaarden en aanwijzingen door de kanaal-eigenaar verstrekt) "
+#: ../../mod/settings.php:583 ../../mod/settings.php:609
+msgid "Icon url"
+msgstr "URL van pictogram"
-#: ../../mod/connect.php:108
-msgid "Restricted or Premium Channel"
-msgstr "Beperkt of premiumkanaal"
+#: ../../mod/settings.php:583
+msgid "Optional"
+msgstr "Optioneel"
-#: ../../mod/network.php:79
-msgid "No such group"
-msgstr "Collectie niet gevonden"
+#: ../../mod/settings.php:594
+msgid "You can't edit this application."
+msgstr "Je kan deze applicatie niet bewerken"
-#: ../../mod/network.php:118
-msgid "Search Results For:"
-msgstr "Zoekresultaten voor:"
+#: ../../mod/settings.php:637
+msgid "Connected Apps"
+msgstr "Verbonden applicaties"
-#: ../../mod/network.php:172
-msgid "Collection is empty"
-msgstr "Collectie is leeg"
+#: ../../mod/settings.php:641
+msgid "Client key starts with"
+msgstr "Client key begint met"
-#: ../../mod/network.php:180
-msgid "Collection: "
-msgstr "Collectie: "
+#: ../../mod/settings.php:642
+msgid "No name"
+msgstr "Geen naam"
-#: ../../mod/network.php:193
-msgid "Connection: "
-msgstr "Connectie: "
+#: ../../mod/settings.php:643
+msgid "Remove authorization"
+msgstr "Autorisatie verwijderen"
-#: ../../mod/network.php:196
-msgid "Invalid connection."
-msgstr "Ongeldige connectie."
+#: ../../mod/settings.php:654
+msgid "No feature settings configured"
+msgstr "Geen plugin-instellingen ingesteld"
+
+#: ../../mod/settings.php:662
+msgid "Feature Settings"
+msgstr "Plugin-instellingen"
+
+#: ../../mod/settings.php:685
+msgid "Account Settings"
+msgstr "Account-instellingen"
+
+#: ../../mod/settings.php:686
+msgid "Password Settings"
+msgstr "Wachtwoord-instellingen"
+
+#: ../../mod/settings.php:687
+msgid "New Password:"
+msgstr "Nieuw wachtwoord:"
+
+#: ../../mod/settings.php:688
+msgid "Confirm:"
+msgstr "Bevestigen:"
+
+#: ../../mod/settings.php:688
+msgid "Leave password fields blank unless changing"
+msgstr "Laat de wachtwoordvelden leeg, behalve wanneer je deze wil veranderen"
+
+#: ../../mod/settings.php:690 ../../mod/settings.php:1023
+msgid "Email Address:"
+msgstr "E-mailadres:"
+
+#: ../../mod/settings.php:691 ../../mod/removeaccount.php:61
+msgid "Remove Account"
+msgstr "Account verwijderen"
+
+#: ../../mod/settings.php:692
+msgid "Remove this account from this server including all its channels"
+msgstr "Dit account en al zijn kanalen van deze RedMatrix-hub verwijderen"
+
+#: ../../mod/settings.php:693 ../../mod/settings.php:1104
+msgid "Warning: This action is permanent and cannot be reversed."
+msgstr "Waarschuwing: Deze handeling is van permanente aard en kan niet meer worden teruggedraaid."
+
+#: ../../mod/settings.php:709
+msgid "Off"
+msgstr "Uit"
+
+#: ../../mod/settings.php:709
+msgid "On"
+msgstr "Aan"
+
+#: ../../mod/settings.php:716
+msgid "Additional Features"
+msgstr "Extra functies"
+
+#: ../../mod/settings.php:740
+msgid "Connector Settings"
+msgstr "Instellingen externe koppelingen"
+
+#: ../../mod/settings.php:779
+msgid "No special theme for mobile devices"
+msgstr "Geen speciaal thema voor mobiele apparaten"
+
+#: ../../mod/settings.php:782
+#, php-format
+msgid "%s - (Experimental)"
+msgstr "%s - (experimenteel)"
+
+#: ../../mod/settings.php:785 ../../mod/admin.php:363
+msgid "mobile"
+msgstr "mobiel"
+
+#: ../../mod/settings.php:821
+msgid "Display Settings"
+msgstr "Weergave-instellingen"
+
+#: ../../mod/settings.php:827
+msgid "Display Theme:"
+msgstr "Gebruik thema:"
+
+#: ../../mod/settings.php:828
+msgid "Mobile Theme:"
+msgstr "Mobiel thema:"
+
+#: ../../mod/settings.php:829
+msgid "Enable user zoom on mobile devices"
+msgstr "Inzoomen op smartphones en tablets toestaan"
+
+#: ../../mod/settings.php:830
+msgid "Update browser every xx seconds"
+msgstr "Ververs de webbrowser om de zoveel seconde"
+
+#: ../../mod/settings.php:830
+msgid "Minimum of 10 seconds, no maximum"
+msgstr "Minimaal 10 seconde, geen maximum"
+
+#: ../../mod/settings.php:831
+msgid "Maximum number of conversations to load at any time:"
+msgstr "Maximaal aantal conversaties die per keer geladen worden:"
+
+#: ../../mod/settings.php:831
+msgid "Maximum of 100 items"
+msgstr "Maximaal 100 conversaties"
+
+#: ../../mod/settings.php:832
+msgid "Don't show emoticons"
+msgstr "Geen emoticons weergeven"
+
+#: ../../mod/settings.php:833
+msgid "Link post titles to source"
+msgstr "Berichtkoppen naar originele locatie linken"
+
+#: ../../mod/settings.php:834
+msgid "System Page Layout Editor - (advanced)"
+msgstr "Lay-out bewerken van systeempagina's (geavanceerd)"
+
+#: ../../mod/settings.php:837
+msgid "Use blog/list mode on channel page"
+msgstr "Gebruik blog/lijst-modus op kanaalpagina"
+
+#: ../../mod/settings.php:837 ../../mod/settings.php:838
+msgid "(comments displayed separately)"
+msgstr "(reacties worden afzonderlijk weergeven)"
+
+#: ../../mod/settings.php:838
+msgid "Use blog/list mode on matrix page"
+msgstr "Gebruik blog/lijst-modus op matrixpagina"
+
+#: ../../mod/settings.php:839
+msgid "Channel page max height of content (in pixels)"
+msgstr "Maximale hoogte berichtinhoud op kanaalpagina (in pixels)"
+
+#: ../../mod/settings.php:839 ../../mod/settings.php:840
+msgid "click to expand content exceeding this height"
+msgstr "klik om inhoud uit te klappen die deze hoogte overschrijdt"
+
+#: ../../mod/settings.php:840
+msgid "Matrix page max height of content (in pixels)"
+msgstr "Maximale hoogte berichtinhoud op matrixpagina (in pixels)"
+
+#: ../../mod/settings.php:874
+msgid "Nobody except yourself"
+msgstr "Niemand, behalve jezelf"
+
+#: ../../mod/settings.php:875
+msgid "Only those you specifically allow"
+msgstr "Alleen connecties met uitdrukkelijke toestemming"
+
+#: ../../mod/settings.php:876
+msgid "Approved connections"
+msgstr "Geaccepteerde connecties"
+
+#: ../../mod/settings.php:877
+msgid "Any connections"
+msgstr "Alle connecties"
+
+#: ../../mod/settings.php:878
+msgid "Anybody on this website"
+msgstr "Iedereen op deze hub"
+
+#: ../../mod/settings.php:879
+msgid "Anybody in this network"
+msgstr "Iedereen in dit netwerk"
+
+#: ../../mod/settings.php:880
+msgid "Anybody authenticated"
+msgstr "Geauthenticeerd"
+
+#: ../../mod/settings.php:881
+msgid "Anybody on the internet"
+msgstr "Iedereen op het internet"
+
+#: ../../mod/settings.php:955
+msgid "Publish your default profile in the network directory"
+msgstr "Publiceer je standaardprofiel in de kanalengids"
+
+#: ../../mod/settings.php:960
+msgid "Allow us to suggest you as a potential friend to new members?"
+msgstr "Sta ons toe om jouw kanaal als mogelijke connectie voor te stellen aan nieuwe kanalen"
+
+#: ../../mod/settings.php:964 ../../mod/profile_photo.php:365
+msgid "or"
+msgstr "of"
+
+#: ../../mod/settings.php:969
+msgid "Your channel address is"
+msgstr "Jouw kanaaladres is"
+
+#: ../../mod/settings.php:1014
+msgid "Channel Settings"
+msgstr "Kanaal-instellingen"
+
+#: ../../mod/settings.php:1021
+msgid "Basic Settings"
+msgstr "Basis-instellingen"
+
+#: ../../mod/settings.php:1024
+msgid "Your Timezone:"
+msgstr "Jouw tijdzone:"
+
+#: ../../mod/settings.php:1025
+msgid "Default Post Location:"
+msgstr "Standaardlocatie bericht:"
+
+#: ../../mod/settings.php:1025
+msgid "Geographical location to display on your posts"
+msgstr "Geografische locatie die bij het bericht moet worden vermeld"
+
+#: ../../mod/settings.php:1026
+msgid "Use Browser Location:"
+msgstr "Locatie van webbrowser gebruiken:"
+
+#: ../../mod/settings.php:1028
+msgid "Adult Content"
+msgstr "Inhoud voor volwassenen"
+
+#: ../../mod/settings.php:1028
+msgid ""
+"This channel frequently or regularly publishes adult content. (Please tag "
+"any adult material and/or nudity with #NSFW)"
+msgstr "Dit kanaal publiceert regelmatig of vaak materiaal dat alleen geschikt is voor volwassenen. (Gebruik de tag #NSFW in berichten met een seksueel getinte inhoud of ander voor minderjarigen ongeschikt materiaal)"
+
+#: ../../mod/settings.php:1030
+msgid "Security and Privacy Settings"
+msgstr "Veiligheids- en privacy-instellingen"
+
+#: ../../mod/settings.php:1032
+msgid "Your permissions are already configured. Click to view/adjust"
+msgstr "Jouw permissies zijn al ingesteld. Klik om ze te bekijken of aan te passen."
+
+#: ../../mod/settings.php:1034
+msgid "Hide my online presence"
+msgstr "Verberg mijn aanwezigheid"
+
+#: ../../mod/settings.php:1034
+msgid "Prevents displaying in your profile that you are online"
+msgstr "Voorkomt dat op je kanaal te zien valt dat je momenteel op de RedMatrix aanwezig bent"
+
+#: ../../mod/settings.php:1036
+msgid "Simple Privacy Settings:"
+msgstr "Eenvoudige privacy-instellingen:"
+
+#: ../../mod/settings.php:1037
+msgid ""
+"Very Public - <em>extremely permissive (should be used with caution)</em>"
+msgstr "Zeer openbaar <em>(kanaal staat volledig open - moet met grote zorgvuldigheid gebruikt worden)</em>"
+
+#: ../../mod/settings.php:1038
+msgid ""
+"Typical - <em>default public, privacy when desired (similar to social "
+"network permissions but with improved privacy)</em>"
+msgstr "Normaal <em>(standaard openbaar, maar privacy wanneer noodzakelijk - vergelijkbaar met die van sociale netwerken, maar met verbeterde privacy)</em>"
+
+#: ../../mod/settings.php:1039
+msgid "Private - <em>default private, never open or public</em>"
+msgstr "Privé <em>(standaard privé en nooit openbaar)</em>"
+
+#: ../../mod/settings.php:1040
+msgid "Blocked - <em>default blocked to/from everybody</em>"
+msgstr "Geblokkeerd <em>(standaard geblokkeerd naar/van iedereen)</em>"
+
+#: ../../mod/settings.php:1042
+msgid "Allow others to tag your posts"
+msgstr "Anderen toestaan om je berichten te taggen"
+
+#: ../../mod/settings.php:1042
+msgid ""
+"Often used by the community to retro-actively flag inappropriate content"
+msgstr "Vaak in groepen/forums gebruikt om met terugwerkende kracht ongepast materiaal te markeren"
+
+#: ../../mod/settings.php:1044
+msgid "Advanced Privacy Settings"
+msgstr "Geavanceerde privacy-instellingen"
+
+#: ../../mod/settings.php:1046
+msgid "Expire other channel content after this many days"
+msgstr "Inhoud van andere kanalen na zoveel aantal dagen laten verlopen:"
+
+#: ../../mod/settings.php:1046
+msgid "0 or blank prevents expiration"
+msgstr "0 of leeg voorkomt het verlopen"
+
+#: ../../mod/settings.php:1047
+msgid "Maximum Friend Requests/Day:"
+msgstr "Maximum aantal connectieverzoeken per dag:"
+
+#: ../../mod/settings.php:1047
+msgid "May reduce spam activity"
+msgstr "Kan eventuele spam verminderen"
+
+#: ../../mod/settings.php:1048
+msgid "Default Post Permissions"
+msgstr "Standaard permissies voor nieuwe berichten"
+
+#: ../../mod/settings.php:1053
+msgid "Channel permissions category:"
+msgstr "Kanaaltype en -permissies:"
+
+#: ../../mod/settings.php:1059
+msgid "Maximum private messages per day from unknown people:"
+msgstr "Maximum aantal privé-berichten per dag van onbekende personen:"
+
+#: ../../mod/settings.php:1059
+msgid "Useful to reduce spamming"
+msgstr "Kan eventuele spam verminderen"
+
+#: ../../mod/settings.php:1062
+msgid "Notification Settings"
+msgstr "Notificatie-instellingen"
+
+#: ../../mod/settings.php:1063
+msgid "By default post a status message when:"
+msgstr "Plaats automatisch een statusbericht wanneer:"
+
+#: ../../mod/settings.php:1064
+msgid "accepting a friend request"
+msgstr "Een connectieverzoek wordt geaccepteerd"
+
+#: ../../mod/settings.php:1065
+msgid "joining a forum/community"
+msgstr "Je lid wordt van een forum/groep"
+
+#: ../../mod/settings.php:1066
+msgid "making an <em>interesting</em> profile change"
+msgstr "Er sprake is van een <em>interessante</em> profielwijziging"
+
+#: ../../mod/settings.php:1067
+msgid "Send a notification email when:"
+msgstr "Verzend een notificatie per e-mail wanneer:"
+
+#: ../../mod/settings.php:1068
+msgid "You receive a connection request"
+msgstr "Je een connectieverzoek ontvangt"
+
+#: ../../mod/settings.php:1069
+msgid "Your connections are confirmed"
+msgstr "Jouw connecties zijn bevestigd"
+
+#: ../../mod/settings.php:1070
+msgid "Someone writes on your profile wall"
+msgstr "Iemand iets op jouw kanaal heeft geschreven"
+
+#: ../../mod/settings.php:1071
+msgid "Someone writes a followup comment"
+msgstr "Iemand een reactie schrijft"
+
+#: ../../mod/settings.php:1072
+msgid "You receive a private message"
+msgstr "Je een privé-bericht ontvangt"
+
+#: ../../mod/settings.php:1073
+msgid "You receive a friend suggestion"
+msgstr "Je een kanaalvoorstel ontvangt"
+
+#: ../../mod/settings.php:1074
+msgid "You are tagged in a post"
+msgstr "Je expliciet in een bericht bent genoemd"
+
+#: ../../mod/settings.php:1075
+msgid "You are poked/prodded/etc. in a post"
+msgstr "Je bent in een bericht aangestoten/gepord/etc."
+
+#: ../../mod/settings.php:1078
+msgid "Show visual notifications including:"
+msgstr "Toon de volgende zichtbare notificaties:"
+
+#: ../../mod/settings.php:1080
+msgid "Unseen matrix activity"
+msgstr "Niet bekeken matrix-activiteit"
+
+#: ../../mod/settings.php:1081
+msgid "Unseen channel activity"
+msgstr "Niet bekeken kanaal-activiteit"
+
+#: ../../mod/settings.php:1082
+msgid "Unseen private messages"
+msgstr "Niet bekeken privéberichten"
+
+#: ../../mod/settings.php:1082 ../../mod/settings.php:1087
+#: ../../mod/settings.php:1088 ../../mod/settings.php:1089
+msgid "Recommended"
+msgstr "Aanbevolen"
+
+#: ../../mod/settings.php:1083
+msgid "Upcoming events"
+msgstr "Aankomende gebeurtenissen"
+
+#: ../../mod/settings.php:1084
+msgid "Events today"
+msgstr "Gebeurtissen van vandaag"
+
+#: ../../mod/settings.php:1085
+msgid "Upcoming birthdays"
+msgstr "Aankomende verjaardagen"
+
+#: ../../mod/settings.php:1085
+msgid "Not available in all themes"
+msgstr "Niet in alle thema's beschikbaar"
+
+#: ../../mod/settings.php:1086
+msgid "System (personal) notifications"
+msgstr "(Persoonlijke) systeemnotificaties"
+
+#: ../../mod/settings.php:1087
+msgid "System info messages"
+msgstr "Systeemmededelingen"
+
+#: ../../mod/settings.php:1088
+msgid "System critical alerts"
+msgstr "Kritische systeemwaarschuwingen"
+
+#: ../../mod/settings.php:1089
+msgid "New connections"
+msgstr "Nieuwe connecties"
+
+#: ../../mod/settings.php:1090
+msgid "System Registrations"
+msgstr "Nieuwe accountregistraties op deze hub"
+
+#: ../../mod/settings.php:1091
+msgid ""
+"Also show new wall posts, private messages and connections under Notices"
+msgstr "Toon tevens nieuwe kanaalberichten, privéberichten en connecties onder Notificaties"
+
+#: ../../mod/settings.php:1093
+msgid "Notify me of events this many days in advance"
+msgstr "Herinner mij zoveel dagen van te voren aan gebeurtenissen"
+
+#: ../../mod/settings.php:1093
+msgid "Must be greater than 0"
+msgstr "Moet hoger dan 0 zijn"
+
+#: ../../mod/settings.php:1095
+msgid "Advanced Account/Page Type Settings"
+msgstr "Instellingen geavanceerd account/paginatype"
+
+#: ../../mod/settings.php:1096
+msgid "Change the behaviour of this account for special situations"
+msgstr "Verander het gedrag van dit account voor speciale situaties"
+
+#: ../../mod/settings.php:1099
+msgid ""
+"Please enable expert mode (in <a href=\"settings/features\">Settings > "
+"Additional features</a>) to adjust!"
+msgstr "Schakel de expertmodus in (in <a href=\"settings/features\">Instellingen > Extra functies</a>) om aan te kunnen passen!"
+
+#: ../../mod/settings.php:1100
+msgid "Miscellaneous Settings"
+msgstr "Diverse instellingen"
+
+#: ../../mod/settings.php:1102
+msgid "Personal menu to display in your channel pages"
+msgstr "Persoonlijk menu om op je kanaalpagina's weer te geven"
+
+#: ../../mod/settings.php:1103
+msgid "Remove this channel"
+msgstr "Verwijder dit kanaal"
#: ../../mod/connections.php:37 ../../mod/connedit.php:64
msgid "Could not access contact record."
msgstr "Kon geen toegang krijgen tot de connectie-gegevens."
-#: ../../mod/connections.php:51 ../../mod/connedit.php:78
+#: ../../mod/connections.php:51 ../../mod/connedit.php:86
msgid "Could not locate selected profile."
msgstr "Kon het gekozen profiel niet vinden."
-#: ../../mod/connections.php:94 ../../mod/connedit.php:131
+#: ../../mod/connections.php:94 ../../mod/connedit.php:140
msgid "Connection updated."
msgstr "Connectie bijgewerkt."
-#: ../../mod/connections.php:96 ../../mod/connedit.php:133
+#: ../../mod/connections.php:96 ../../mod/connedit.php:142
msgid "Failed to update connection record."
msgstr "Bijwerken van connectie-gegevens mislukt."
@@ -4836,10 +5424,6 @@ msgstr "Gearchiveerd"
msgid "All"
msgstr "Alles"
-#: ../../mod/connections.php:240 ../../mod/connections.php:320
-msgid "Unconnected"
-msgstr "Niet verbonden"
-
#: ../../mod/connections.php:270
msgid "Suggest new connections"
msgstr "Nieuwe kanalen voorstellen"
@@ -4880,2074 +5464,2118 @@ msgstr "Toon alleen gearchiveerde connecties"
msgid "Only show hidden connections"
msgstr "Toon alleen verborgen connecties"
-#: ../../mod/connections.php:323
-msgid "Only show one-way connections"
-msgstr "Toon alleen niet wederzijdse connecties"
-
-#: ../../mod/connections.php:368
+#: ../../mod/connections.php:371
#, php-format
msgid "%1$s [%2$s]"
msgstr "%1$s [%2$s]"
-#: ../../mod/connections.php:369
-msgid "Edit contact"
+#: ../../mod/connections.php:372
+msgid "Edit connection"
msgstr "Connectie bewerken"
-#: ../../mod/connections.php:390
+#: ../../mod/connections.php:410
msgid "Search your connections"
msgstr "Doorzoek jouw connecties"
-#: ../../mod/connections.php:391
+#: ../../mod/connections.php:411
msgid "Finding: "
msgstr "Zoeken naar: "
-#: ../../mod/rpost.php:97 ../../mod/editpost.php:42
-msgid "Edit post"
-msgstr "Bericht bewerken"
+#: ../../mod/manage.php:138
+#, php-format
+msgid "You have created %1$.0f of %2$.0f allowed channels."
+msgstr "Je hebt %1$.0f van totaal %2$.0f toegestane kanalen aangemaakt."
+
+#: ../../mod/manage.php:146
+msgid "Create a new channel"
+msgstr "Nieuw kanaal aanmaken"
+
+#: ../../mod/manage.php:151
+msgid "Current Channel"
+msgstr "Huidig kanaal"
+
+#: ../../mod/manage.php:153
+msgid "Switch to one of your channels by selecting it."
+msgstr "Activeer een van jouw andere kanalen door er op te klikken."
+
+#: ../../mod/manage.php:154
+msgid "Default Channel"
+msgstr "Standaardkanaal"
+
+#: ../../mod/manage.php:155
+msgid "Make Default"
+msgstr "Als standaard instellen"
+
+#: ../../mod/manage.php:158
+#, php-format
+msgid "%d new messages"
+msgstr "%d nieuwe berichten"
+
+#: ../../mod/manage.php:159
+#, php-format
+msgid "%d new introductions"
+msgstr "%d nieuwe connectieverzoeken"
+
+#: ../../mod/connedit.php:189
+msgid "is now connected to"
+msgstr "is nu verbonden met"
-#: ../../mod/connedit.php:243
+#: ../../mod/connedit.php:310
msgid "Could not access address book record."
msgstr "Kon geen toegang krijgen tot de record van de connectie."
-#: ../../mod/connedit.php:257
+#: ../../mod/connedit.php:324
msgid "Refresh failed - channel is currently unavailable."
msgstr "Vernieuwen mislukt - kanaal is momenteel niet beschikbaar"
-#: ../../mod/connedit.php:264
+#: ../../mod/connedit.php:331
msgid "Channel has been unblocked"
msgstr "Kanaal is gedeblokkeerd"
-#: ../../mod/connedit.php:265
+#: ../../mod/connedit.php:332
msgid "Channel has been blocked"
msgstr "Kanaal is geblokkeerd"
-#: ../../mod/connedit.php:269 ../../mod/connedit.php:281
-#: ../../mod/connedit.php:293 ../../mod/connedit.php:305
-#: ../../mod/connedit.php:320
+#: ../../mod/connedit.php:336 ../../mod/connedit.php:348
+#: ../../mod/connedit.php:360 ../../mod/connedit.php:372
+#: ../../mod/connedit.php:388
msgid "Unable to set address book parameters."
msgstr "Niet in staat om de parameters van connecties in te stellen."
-#: ../../mod/connedit.php:276
+#: ../../mod/connedit.php:343
msgid "Channel has been unignored"
msgstr "Kanaal wordt niet meer genegeerd"
-#: ../../mod/connedit.php:277
+#: ../../mod/connedit.php:344
msgid "Channel has been ignored"
msgstr "Kanaal wordt genegeerd"
-#: ../../mod/connedit.php:288
+#: ../../mod/connedit.php:355
msgid "Channel has been unarchived"
msgstr "Kanaal is niet meer gearchiveerd"
-#: ../../mod/connedit.php:289
+#: ../../mod/connedit.php:356
msgid "Channel has been archived"
msgstr "Kanaal is gearchiveerd"
-#: ../../mod/connedit.php:300
+#: ../../mod/connedit.php:367
msgid "Channel has been unhidden"
msgstr "Kanaal is niet meer verborgen"
-#: ../../mod/connedit.php:301
+#: ../../mod/connedit.php:368
msgid "Channel has been hidden"
msgstr "Kanaal is verborgen"
-#: ../../mod/connedit.php:315
+#: ../../mod/connedit.php:383
msgid "Channel has been approved"
msgstr "Connectie/kanaal is geaccepteerd"
-#: ../../mod/connedit.php:316
+#: ../../mod/connedit.php:384
msgid "Channel has been unapproved"
msgstr "Connectie/kanaal is afgewezen"
-#: ../../mod/connedit.php:334
+#: ../../mod/connedit.php:412
msgid "Connection has been removed."
msgstr "Connectie is verwijderd"
-#: ../../mod/connedit.php:354
+#: ../../mod/connedit.php:432
#, php-format
msgid "View %s's profile"
msgstr "Profiel van %s weergeven"
-#: ../../mod/connedit.php:358
+#: ../../mod/connedit.php:436
msgid "Refresh Permissions"
-msgstr "Privacy-rechten vernieuwen"
+msgstr "Permissies vernieuwen"
-#: ../../mod/connedit.php:361
+#: ../../mod/connedit.php:439
msgid "Fetch updated permissions"
-msgstr "Aangepaste privacy-rechten ophalen"
+msgstr "Aangepaste permissies ophalen"
-#: ../../mod/connedit.php:365
+#: ../../mod/connedit.php:443
msgid "Recent Activity"
msgstr "Recente activiteit"
-#: ../../mod/connedit.php:368
+#: ../../mod/connedit.php:446
msgid "View recent posts and comments"
msgstr "Recente berichten en reacties weergeven"
-#: ../../mod/connedit.php:372 ../../mod/connedit.php:515
-#: ../../mod/admin.php:760
+#: ../../mod/connedit.php:450 ../../mod/connedit.php:595
+#: ../../mod/admin.php:732
msgid "Unblock"
msgstr "Deblokkeren"
-#: ../../mod/connedit.php:372 ../../mod/connedit.php:515
-#: ../../mod/admin.php:759
+#: ../../mod/connedit.php:450 ../../mod/connedit.php:595
+#: ../../mod/admin.php:731
msgid "Block"
msgstr "Blokkeren"
-#: ../../mod/connedit.php:375
+#: ../../mod/connedit.php:453
msgid "Block or Unblock this connection"
msgstr "Deze connectie blokkeren of deblokkeren"
-#: ../../mod/connedit.php:379 ../../mod/connedit.php:516
+#: ../../mod/connedit.php:457 ../../mod/connedit.php:596
msgid "Unignore"
msgstr "Niet meer negeren"
-#: ../../mod/connedit.php:379 ../../mod/connedit.php:516
+#: ../../mod/connedit.php:457 ../../mod/connedit.php:596
#: ../../mod/notifications.php:51
msgid "Ignore"
msgstr "Negeren"
-#: ../../mod/connedit.php:382
+#: ../../mod/connedit.php:460
msgid "Ignore or Unignore this connection"
msgstr "Deze connectie negeren of niet meer negeren"
-#: ../../mod/connedit.php:385
+#: ../../mod/connedit.php:463
msgid "Unarchive"
msgstr "Niet meer archiveren"
-#: ../../mod/connedit.php:385
+#: ../../mod/connedit.php:463
msgid "Archive"
msgstr "Archiveren"
-#: ../../mod/connedit.php:388
+#: ../../mod/connedit.php:466
msgid "Archive or Unarchive this connection"
msgstr "Deze connectie archiveren of niet meer archiveren"
-#: ../../mod/connedit.php:391
+#: ../../mod/connedit.php:469
msgid "Unhide"
msgstr "Niet meer verbergen"
-#: ../../mod/connedit.php:391
+#: ../../mod/connedit.php:469
msgid "Hide"
msgstr "Verbergen"
-#: ../../mod/connedit.php:394
+#: ../../mod/connedit.php:472
msgid "Hide or Unhide this connection"
msgstr "Deze connectie verbergen of niet meer verbergen"
-#: ../../mod/connedit.php:401
+#: ../../mod/connedit.php:479
msgid "Delete this connection"
msgstr "Deze connectie verwijderen"
-#: ../../mod/connedit.php:444 ../../mod/connedit.php:473
+#: ../../mod/connedit.php:523 ../../mod/connedit.php:553
msgid "Approve this connection"
msgstr "Deze connectie accepteren"
-#: ../../mod/connedit.php:444
+#: ../../mod/connedit.php:523
msgid "Accept connection to allow communication"
msgstr "Keur deze connectie goed om communicatie toe te staan"
-#: ../../mod/connedit.php:460
-msgid "Automatic Permissions Settings"
-msgstr "Automatische privacy-rechten"
-
-#: ../../mod/connedit.php:460
+#: ../../mod/connedit.php:539
#, php-format
msgid "Connections: settings for %s"
msgstr "Connecties: instellingen voor %s"
-#: ../../mod/connedit.php:464
-msgid ""
-"When receiving a channel introduction, any permissions provided here will be"
-" applied to the new connection automatically and the introduction approved. "
-"Leave this page if you do not wish to use this feature."
-msgstr "Wanneer je een connectieverzoek voor een kanaal ontvangt, zullen alle privacy-rechten hier automatisch op de nieuwe connectie worden toegepast en het connectieverzoek worden geaccepteerd. Verlaat deze pagina wanneer je geen gebruik wil maken van deze functie."
+#: ../../mod/connedit.php:540
+msgid "Apply these permissions automatically"
+msgstr "Deze permissies automatisch toepassen"
-#: ../../mod/connedit.php:466
+#: ../../mod/connedit.php:544
+msgid "Apply the permissions indicated on this page to all new connections."
+msgstr "Permissies die op deze pagina staan vermeldt op alle nieuwe connecties toepassen."
+
+#: ../../mod/connedit.php:546
msgid "Slide to adjust your degree of friendship"
msgstr "Schuif om te bepalen hoe goed je iemand kent en/of mag"
-#: ../../mod/connedit.php:472
+#: ../../mod/connedit.php:552
msgid "inherited"
msgstr "geërfd"
-#: ../../mod/connedit.php:474
+#: ../../mod/connedit.php:554
msgid "Connection has no individual permissions!"
-msgstr "Connectie heeft geen individuele privacy-rechten!"
+msgstr "Connectie heeft geen individuele permissies!"
-#: ../../mod/connedit.php:475
+#: ../../mod/connedit.php:555
msgid ""
"This may be appropriate based on your <a href=\"settings\">privacy "
"settings</a>, though you may wish to review the \"Advanced Permissions\"."
msgstr "Dit is mogelijk voldoende, wanneer er naar jouw <a href=\"settings\">privacy-instellingen</a> wordt gekeken. Hoewel je wellicht de geavanceerde rechten wil nagaan."
-#: ../../mod/connedit.php:477
+#: ../../mod/connedit.php:557
msgid "Profile Visibility"
msgstr "Zichtbaarheid profiel"
-#: ../../mod/connedit.php:478
+#: ../../mod/connedit.php:558
#, php-format
msgid ""
"Please choose the profile you would like to display to %s when viewing your "
"profile securely."
msgstr "Kies het profiel dat je aan %s wil tonen wanneer hij/zij ingelogd jouw profiel wil bekijken."
-#: ../../mod/connedit.php:479
+#: ../../mod/connedit.php:559
msgid "Contact Information / Notes"
msgstr "Informatie/aantekeningen over connectie"
-#: ../../mod/connedit.php:480
+#: ../../mod/connedit.php:560
msgid "Edit contact notes"
msgstr "Bewerk aantekeningen over contact"
-#: ../../mod/connedit.php:482
+#: ../../mod/connedit.php:562
msgid "Their Settings"
msgstr "Hun instellingen"
-#: ../../mod/connedit.php:483
+#: ../../mod/connedit.php:563
msgid "My Settings"
msgstr "Mijn instellingen"
-#: ../../mod/connedit.php:485
+#: ../../mod/connedit.php:565
msgid "Clear/Disable Automatic Permissions"
-msgstr "Verwijderen/uitschakelen automatische privacy-rechten"
+msgstr "Verwijderen/uitschakelen automatische permissies"
-#: ../../mod/connedit.php:486
+#: ../../mod/connedit.php:566
msgid "Forum Members"
-msgstr "Forum/groepsleden"
+msgstr "Forumleden"
-#: ../../mod/connedit.php:487
+#: ../../mod/connedit.php:567
msgid "Soapbox"
msgstr "Zeepkist"
-#: ../../mod/connedit.php:488
+#: ../../mod/connedit.php:568
msgid "Full Sharing (typical social network permissions)"
msgstr "Voluit delen (vergelijkbaar met die van sociale netwerken)"
-#: ../../mod/connedit.php:489
+#: ../../mod/connedit.php:569
msgid "Cautious Sharing "
msgstr "Voorzichtig delen"
-#: ../../mod/connedit.php:490
+#: ../../mod/connedit.php:570
msgid "Follow Only"
msgstr "Alleen volgen"
-#: ../../mod/connedit.php:491
+#: ../../mod/connedit.php:571
msgid "Individual Permissions"
-msgstr "Individuele privacy-rechten"
+msgstr "Individuele permissies"
-#: ../../mod/connedit.php:492
+#: ../../mod/connedit.php:572
msgid ""
"Some permissions may be inherited from your channel <a "
"href=\"settings\">privacy settings</a>, which have higher priority than "
"individual settings. Changing those inherited settings on this page will "
"have no effect."
-msgstr "Sommige privacy-rechten kunnen worden overgeërfd van de <a href=\"settings\">privacy-instellingen</a> van jouw kanaal. Wanneer je deze geërfde instellingen op deze pagina veranderd heeft dat geen effect."
+msgstr "Sommige permissies kunnen worden overgeërfd van de <a href=\"settings\">privacy-instellingen</a> van jouw kanaal. Wanneer je deze geërfde instellingen op deze pagina veranderd heeft dat geen effect."
-#: ../../mod/connedit.php:493
+#: ../../mod/connedit.php:573
msgid "Advanced Permissions"
-msgstr "Geavanceerde privacy-rechten"
+msgstr "Geavanceerde permissies"
-#: ../../mod/connedit.php:494
+#: ../../mod/connedit.php:574
msgid "Simple Permissions (select one and submit)"
-msgstr "Eenvoudige privacy-rechten (selecteer er één en opslaan)"
+msgstr "Eenvoudige permissies (selecteer er één en opslaan)"
-#: ../../mod/connedit.php:498
+#: ../../mod/connedit.php:578
#, php-format
msgid "Visit %s's profile - %s"
msgstr "Profiel van %s bezoeken - %s"
-#: ../../mod/connedit.php:499
+#: ../../mod/connedit.php:579
msgid "Block/Unblock contact"
msgstr "Connectie blokkeren/deblokkeren"
-#: ../../mod/connedit.php:500
+#: ../../mod/connedit.php:580
msgid "Ignore contact"
msgstr "Connectie negeren"
-#: ../../mod/connedit.php:501
+#: ../../mod/connedit.php:581
msgid "Repair URL settings"
msgstr "URL-instellingen repareren"
-#: ../../mod/connedit.php:502
+#: ../../mod/connedit.php:582
msgid "View conversations"
msgstr "Conversaties weergeven"
-#: ../../mod/connedit.php:504
+#: ../../mod/connedit.php:584
msgid "Delete contact"
msgstr "Connectie verwijderen"
-#: ../../mod/connedit.php:507
+#: ../../mod/connedit.php:587
msgid "Last update:"
msgstr "Laatste wijziging:"
-#: ../../mod/connedit.php:509
+#: ../../mod/connedit.php:589
msgid "Update public posts"
msgstr "Openbare berichten updaten"
-#: ../../mod/connedit.php:511
+#: ../../mod/connedit.php:591
msgid "Update now"
msgstr "Nu updaten"
-#: ../../mod/connedit.php:517
+#: ../../mod/connedit.php:597
msgid "Currently blocked"
msgstr "Momenteel geblokkeerd"
-#: ../../mod/connedit.php:518
+#: ../../mod/connedit.php:598
msgid "Currently ignored"
msgstr "Momenteel genegeerd"
-#: ../../mod/connedit.php:519
+#: ../../mod/connedit.php:599
msgid "Currently archived"
msgstr "Momenteel gearchiveerd"
-#: ../../mod/connedit.php:520
+#: ../../mod/connedit.php:600
msgid "Currently pending"
msgstr "Moeten nog geaccepteerd of afgewezen worden"
-#: ../../mod/connedit.php:521
+#: ../../mod/connedit.php:601
msgid "Hide this contact from others"
msgstr "Verberg deze connectie voor anderen"
-#: ../../mod/connedit.php:521
+#: ../../mod/connedit.php:601
msgid ""
"Replies/likes to your public posts <strong>may</strong> still be visible"
msgstr "Reacties/vind-ik-leuks op jouw openbare berichten <strong>kunnen</strong> zichtbaar blijven"
-#: ../../mod/delegate.php:95
-msgid "No potential page delegates located."
-msgstr "Geen gevolmachtigde personen gevonden waaraan mogelijk het accountbeheer kan worden uitbesteed."
+#: ../../mod/mail.php:33
+msgid "Unable to lookup recipient."
+msgstr "Niet in staat om ontvanger op te zoeken."
-#: ../../mod/delegate.php:121
-msgid "Delegate Page Management"
-msgstr "Accountbeheer uitbesteden"
+#: ../../mod/mail.php:41
+msgid "Unable to communicate with requested channel."
+msgstr "Niet in staat om met het aangevraagde kanaal te communiceren."
-#: ../../mod/delegate.php:123
-msgid ""
-"Delegates are able to manage all aspects of this account/page except for "
-"basic account settings. Please do not delegate your personal account to "
-"anybody that you do not trust completely."
-msgstr "Gevolmachtigde personen zijn in staat om alle aspecten van dit account te beheren, behalve enkele basisinstellingen. Besteed het beheer van je persoonlijke account niet aan iemand uit die je niet volledig vertrouwd."
+#: ../../mod/mail.php:48
+msgid "Cannot verify requested channel."
+msgstr "Kan opgevraagd kanaal niet verifieren"
-#: ../../mod/delegate.php:124
-msgid "Existing Page Managers"
-msgstr "Bestaande accountbeheerders"
+#: ../../mod/mail.php:74
+msgid "Selected channel has private message restrictions. Send failed."
+msgstr "Gekozen kanaal heeft restricties voor privéberichten. Verzenden mislukt."
-#: ../../mod/delegate.php:126
-msgid "Existing Page Delegates"
-msgstr "Bestaande gevolmachtigde accountbeheerders"
+#: ../../mod/mail.php:136
+msgid "Message deleted."
+msgstr "Bericht verwijderd."
-#: ../../mod/delegate.php:128
-msgid "Potential Delegates"
-msgstr "Gevolmachtigde personen waaraan mogelijk het accountbeheer kan worden uitbesteed."
+#: ../../mod/mail.php:153
+msgid "Message recalled."
+msgstr "Bericht ingetrokken."
-#: ../../mod/delegate.php:130 ../../mod/photos.php:906 ../../mod/tagrm.php:93
-msgid "Remove"
-msgstr "Verwijderen"
+#: ../../mod/mail.php:222
+msgid "Send Private Message"
+msgstr "Privébericht versturen"
-#: ../../mod/delegate.php:131
-msgid "Add"
-msgstr "Toevoegen"
+#: ../../mod/mail.php:223 ../../mod/mail.php:340
+msgid "To:"
+msgstr "Aan:"
-#: ../../mod/delegate.php:132
-msgid "No entries."
-msgstr "Geen"
+#: ../../mod/mail.php:228 ../../mod/mail.php:342
+msgid "Subject:"
+msgstr "Onderwerp:"
-#: ../../mod/search.php:13 ../../mod/directory.php:15
-#: ../../mod/dirprofile.php:9 ../../mod/display.php:9 ../../mod/photos.php:443
-#: ../../mod/viewconnections.php:17
-msgid "Public access denied."
-msgstr "Openbare toegang geweigerd."
+#: ../../mod/mail.php:232 ../../mod/mail.php:345 ../../mod/invite.php:131
+msgid "Your message:"
+msgstr "Jouw bericht:"
-#: ../../mod/directory.php:146 ../../mod/dirprofile.php:95
-msgid "Gender: "
-msgstr "Geslacht:"
+#: ../../mod/mail.php:239
+msgid "Send"
+msgstr "Verzenden"
-#: ../../mod/directory.php:207
-msgid "Finding:"
-msgstr "Gezocht naar:"
+#: ../../mod/mail.php:266
+msgid "Message not found."
+msgstr "Bericht niet gevonden"
-#: ../../mod/directory.php:215
-msgid "next page"
-msgstr "volgende pagina"
+#: ../../mod/mail.php:309
+msgid "Delete message"
+msgstr "Bericht verwijderen"
-#: ../../mod/directory.php:215
-msgid "previous page"
-msgstr "vorige pagina"
+#: ../../mod/mail.php:310
+msgid "Recall message"
+msgstr "Bericht intrekken"
-#: ../../mod/directory.php:222
-msgid "No entries (some entries may be hidden)."
-msgstr "Niets gevonden (sommige kanalen kunnen verborgen zijn)."
+#: ../../mod/mail.php:312
+msgid "Message has been recalled."
+msgstr "Bericht is ingetrokken."
-#: ../../mod/dirprofile.php:108
-msgid "Status: "
-msgstr "Status: "
+#: ../../mod/mail.php:329
+msgid "Private Conversation"
+msgstr "Privéconversatie"
-#: ../../mod/dirprofile.php:109
-msgid "Sexual Preference: "
-msgstr "Seksuele voorkeur: "
+#: ../../mod/mail.php:333 ../../mod/message.php:72
+msgid "Delete conversation"
+msgstr "Verwijder conversatie"
-#: ../../mod/dirprofile.php:111
-msgid "Homepage: "
-msgstr "Homepage: "
+#: ../../mod/mail.php:335
+msgid ""
+"No secure communications available. You <strong>may</strong> be able to "
+"respond from the sender's profile page."
+msgstr "Geen veilige communicatie beschikbaar. <strong>Mogelijk</strong> kan je reageren op de kanaalpagina van de afzender."
-#: ../../mod/dirprofile.php:112
-msgid "Hometown: "
-msgstr "Woonplaats: "
+#: ../../mod/mail.php:339
+msgid "Send Reply"
+msgstr "Antwoord versturen"
-#: ../../mod/dirprofile.php:114
-msgid "About: "
-msgstr "Over: "
+#: ../../mod/bookmarks.php:38
+msgid "Bookmark added"
+msgstr "Bladwijzer toegevoegd"
-#: ../../mod/dirprofile.php:162
-msgid "Keywords: "
-msgstr "Trefwoorden: "
+#: ../../mod/bookmarks.php:60
+msgid "My Bookmarks"
+msgstr "Mijn bladwijzers"
+
+#: ../../mod/bookmarks.php:71
+msgid "My Connections Bookmarks"
+msgstr "Bladwijzers van mijn connecties"
#: ../../mod/dirsearch.php:21
msgid "This site is not a directory server"
msgstr "Deze hub is geen kanalengidshub (directoryserver)"
-#: ../../mod/home.php:81
+#: ../../mod/cloud.php:130
+msgid "RedMatrix - Guests: Username: {your email address}, Password: +++"
+msgstr "RedMatrix - gasttoegang: Toegangsnaam: {jouw e-mailadres}, wachtwoord: +++"
+
+#: ../../mod/acl.php:245
+msgid "network"
+msgstr "netwerk"
+
+#: ../../mod/blocks.php:99
+msgid "Block Name"
+msgstr "Bloknaam"
+
+#: ../../mod/editblock.php:115
+msgid "Edit Block"
+msgstr "Blok bewerken"
+
+#: ../../mod/editblock.php:125
+msgid "Delete block?"
+msgstr "Blok verwijderen"
+
+#: ../../mod/editblock.php:183
+msgid "Delete Block"
+msgstr "Blok verwijderen"
+
+#: ../../mod/pdledit.php:13
+msgid "Layout updated."
+msgstr "Lay-out bijgewerkt."
+
+#: ../../mod/pdledit.php:28 ../../mod/pdledit.php:53
+msgid "Edit System Page Description"
+msgstr "Systeempagina's bewerken"
+
+#: ../../mod/pdledit.php:48
+msgid "Layout not found."
+msgstr "Lay-out niet gevonden."
+
+#: ../../mod/pdledit.php:54
+msgid "Module Name:"
+msgstr "Modulenaam:"
+
+#: ../../mod/pdledit.php:55 ../../mod/layouts.php:107
+msgid "Layout Help"
+msgstr "Lay-out-hulp"
+
+#: ../../mod/editlayout.php:108
+msgid "Edit Layout"
+msgstr "Lay-out bewerken"
+
+#: ../../mod/editlayout.php:117
+msgid "Delete layout?"
+msgstr "Lay-out verwijderen?"
+
+#: ../../mod/editlayout.php:178
+msgid "Delete Layout"
+msgstr "Lay-out verwijderen"
+
+#: ../../mod/home.php:48
msgid "Red Matrix - &quot;The Network&quot;"
-msgstr "Red Matrix - &quot;The Network&quot;"
+msgstr "RedMatrix - &quot;The Network&quot;"
-#: ../../mod/home.php:94
+#: ../../mod/home.php:101
#, php-format
msgid "Welcome to %s"
msgstr "Welkom op %s"
-#: ../../mod/setup.php:162
+#: ../../mod/editwebpage.php:140
+msgid "Edit Webpage"
+msgstr "Webpagina bewerken"
+
+#: ../../mod/editwebpage.php:150
+msgid "Delete webpage?"
+msgstr "Webpagina verwijderen?"
+
+#: ../../mod/editwebpage.php:215
+msgid "Delete Webpage"
+msgstr "Webpagina verwijderen"
+
+#: ../../mod/impel.php:33
+msgid "webpage"
+msgstr "Webpagina"
+
+#: ../../mod/impel.php:38
+msgid "block"
+msgstr "blok"
+
+#: ../../mod/impel.php:43
+msgid "layout"
+msgstr "lay-out"
+
+#: ../../mod/impel.php:117
+#, php-format
+msgid "%s element installed"
+msgstr "%s onderdeel geïnstalleerd"
+
+#: ../../mod/profile_photo.php:108
+msgid "Image uploaded but image cropping failed."
+msgstr "Afbeelding geüpload, maar afbeelding kon niet worden bijgesneden. "
+
+#: ../../mod/profile_photo.php:161
+msgid "Image resize failed."
+msgstr "Afbeelding kon niet van grootte veranderd worden."
+
+#: ../../mod/profile_photo.php:205
+msgid ""
+"Shift-reload the page or clear browser cache if the new photo does not "
+"display immediately."
+msgstr "Vernieuw de pagina met shift+R of shift+F5, of leeg je browserbuffer, wanneer de nieuwe foto niet meteen wordt weergegeven."
+
+#: ../../mod/profile_photo.php:232
+#, php-format
+msgid "Image exceeds size limit of %d"
+msgstr "Afbeeldingsgrootte overschrijdt het limiet van %d"
+
+#: ../../mod/profile_photo.php:241
+msgid "Unable to process image."
+msgstr "Niet in staat om afbeelding te verwerken."
+
+#: ../../mod/profile_photo.php:290 ../../mod/profile_photo.php:339
+msgid "Photo not available."
+msgstr "Foto niet beschikbaar."
+
+#: ../../mod/profile_photo.php:358
+msgid "Upload File:"
+msgstr "Bestand uploaden:"
+
+#: ../../mod/profile_photo.php:359
+msgid "Select a profile:"
+msgstr "Kies een profiel:"
+
+#: ../../mod/profile_photo.php:360
+msgid "Upload Profile Photo"
+msgstr "Profielfoto uploaden"
+
+#: ../../mod/profile_photo.php:365
+msgid "skip this step"
+msgstr "sla deze stap over"
+
+#: ../../mod/profile_photo.php:365
+msgid "select a photo from your photo albums"
+msgstr "Kies een foto uit jouw fotoalbums"
+
+#: ../../mod/profile_photo.php:381
+msgid "Crop Image"
+msgstr "Afbeelding bijsnijden"
+
+#: ../../mod/profile_photo.php:382
+msgid "Please adjust the image cropping for optimum viewing."
+msgstr "Snij de afbeelding zo uit dat deze optimaal wordt weergegeven."
+
+#: ../../mod/profile_photo.php:384
+msgid "Done Editing"
+msgstr "Klaar met bewerken"
+
+#: ../../mod/profile_photo.php:427
+msgid "Image uploaded successfully."
+msgstr "Uploaden afbeelding geslaagd"
+
+#: ../../mod/profile_photo.php:429
+msgid "Image upload failed."
+msgstr "Uploaden afbeelding mislukt"
+
+#: ../../mod/profile_photo.php:438
+#, php-format
+msgid "Image size reduction [%s] failed."
+msgstr "Verkleinen [%s] van afbeelding mislukt."
+
+#: ../../mod/like.php:15
+msgid "Like/Dislike"
+msgstr "Leuk/niet leuk"
+
+#: ../../mod/like.php:20
+msgid "This action is restricted to members."
+msgstr "Deze actie kan alleen door mensen met een RedMatrix-account worden uitgevoerd."
+
+#: ../../mod/like.php:21
+msgid ""
+"Please <a href=\"rmagic\">login with your RedMatrix ID</a> or <a "
+"href=\"register\">register as a new RedMatrix member</a> to continue."
+msgstr "Je dient <a href=\"rmagic\">in te loggen met je RedMatrix-account</a> of <a href=\"register\">een nieuw RedMatrix-account te registreren</a> om verder te kunnen gaan."
+
+#: ../../mod/like.php:77 ../../mod/like.php:104 ../../mod/like.php:142
+msgid "Invalid request."
+msgstr "Ongeldig verzoek"
+
+#: ../../mod/like.php:119
+msgid "thing"
+msgstr "ding"
+
+#: ../../mod/like.php:165
+msgid "Channel unavailable."
+msgstr "Kanaal niet beschikbaar."
+
+#: ../../mod/like.php:204
+msgid "Previous action reversed."
+msgstr "Vorige actie omgedraaid"
+
+#: ../../mod/like.php:422
+msgid "Action completed."
+msgstr "Actie voltooid"
+
+#: ../../mod/like.php:423
+msgid "Thank you."
+msgstr "Bedankt"
+
+#: ../../mod/help.php:41 ../../mod/help.php:47 ../../mod/help.php:53
+msgid "Help:"
+msgstr "Hulp:"
+
+#: ../../mod/help.php:67 ../../index.php:238
+msgid "Not Found"
+msgstr "Niet gevonden"
+
+#: ../../mod/thing.php:96
+msgid "Thing updated"
+msgstr "Ding bijgewerkt"
+
+#: ../../mod/thing.php:156
+msgid "Object store: failed"
+msgstr "Opslaan van ding mislukt"
+
+#: ../../mod/thing.php:160
+msgid "Thing added"
+msgstr "Ding toegevoegd"
+
+#: ../../mod/thing.php:180
+#, php-format
+msgid "OBJ: %1$s %2$s %3$s"
+msgstr "OBJ: %1$s %2$s %3$s"
+
+#: ../../mod/thing.php:232
+msgid "Show Thing"
+msgstr "Ding weergeven"
+
+#: ../../mod/thing.php:239
+msgid "item not found."
+msgstr "Item niet gevonden"
+
+#: ../../mod/thing.php:270
+msgid "Edit Thing"
+msgstr "Ding bewerken"
+
+#: ../../mod/thing.php:272 ../../mod/thing.php:319
+msgid "Select a profile"
+msgstr "Kies een profiel"
+
+#: ../../mod/thing.php:276 ../../mod/thing.php:322
+msgid "Post an activity"
+msgstr "Plaats een bericht"
+
+#: ../../mod/thing.php:276 ../../mod/thing.php:322
+msgid "Only sends to viewers of the applicable profile"
+msgstr "Toont dit alleen aan diegene die het gekozen profiel mogen zien."
+
+#: ../../mod/thing.php:278 ../../mod/thing.php:324
+msgid "Name of thing e.g. something"
+msgstr "Naam van ding"
+
+#: ../../mod/thing.php:280 ../../mod/thing.php:325
+msgid "URL of thing (optional)"
+msgstr "URL van ding (optioneel)"
+
+#: ../../mod/thing.php:282 ../../mod/thing.php:326
+msgid "URL for photo of thing (optional)"
+msgstr "URL van foto van ding (optioneel)"
+
+#: ../../mod/thing.php:317
+msgid "Add Thing to your Profile"
+msgstr "Ding aan je profiel toevoegen"
+
+#: ../../mod/fsuggest.php:20 ../../mod/fsuggest.php:92
+msgid "Contact not found."
+msgstr "Contact niet gevonden"
+
+#: ../../mod/fsuggest.php:63
+msgid "Friend suggestion sent."
+msgstr "Kanaalvoorstel verzonden."
+
+#: ../../mod/fsuggest.php:97
+msgid "Suggest Friends"
+msgstr "Kanalen voorstellen"
+
+#: ../../mod/fsuggest.php:99
+#, php-format
+msgid "Suggest a friend for %s"
+msgstr "Stel een kanaal voor aan %s"
+
+#: ../../mod/filestorage.php:76
+msgid "Permission Denied."
+msgstr "Toegang geweigerd"
+
+#: ../../mod/filestorage.php:92
+msgid "File not found."
+msgstr "Bestand niet gevonden."
+
+#: ../../mod/filestorage.php:135
+msgid "Edit file permissions"
+msgstr "Bestandsrechten bewerken"
+
+#: ../../mod/filestorage.php:144
+msgid "Set/edit permissions"
+msgstr "Rechten instellen/bewerken"
+
+#: ../../mod/filestorage.php:145
+msgid "Include all files and sub folders"
+msgstr "Toepassen op alle bestanden en submappen"
+
+#: ../../mod/filestorage.php:146
+msgid "Return to file list"
+msgstr "Terugkeren naar bestandlijst "
+
+#: ../../mod/filestorage.php:148
+msgid "Copy/paste this code to attach file to a post"
+msgstr "Kopieer/plak deze code om het bestand aan een bericht te koppelen"
+
+#: ../../mod/filestorage.php:149
+msgid "Copy/paste this URL to link file from a web page"
+msgstr "Kopieer/plak deze URL om het bestand aan een externe webpagina te koppelen"
+
+#: ../../mod/connect.php:56 ../../mod/connect.php:104
+msgid "Continue"
+msgstr "Ga verder"
+
+#: ../../mod/connect.php:85
+msgid "Premium Channel Setup"
+msgstr "Instellen premiumkanaal "
+
+#: ../../mod/connect.php:87
+msgid "Enable premium channel connection restrictions"
+msgstr "Restricties voor connecties van premiumkanaal toestaan"
+
+#: ../../mod/connect.php:88
+msgid ""
+"Please enter your restrictions or conditions, such as paypal receipt, usage "
+"guidelines, etc."
+msgstr "Vul je restricties of voorwaarden in, zoals een paypal-afschrift, voorschriften voor leden, enz."
+
+#: ../../mod/connect.php:90 ../../mod/connect.php:110
+msgid ""
+"This channel may require additional steps or acknowledgement of the "
+"following conditions prior to connecting:"
+msgstr "Dit kanaal kan extra stappen of het accepteren van de volgende voorwaarden vereisen, voordat de connectie wordt geaccepteerd:"
+
+#: ../../mod/connect.php:91
+msgid ""
+"Potential connections will then see the following text before proceeding:"
+msgstr "Mogelijke connecties zullen dan de volgende tekst zien voordat ze verder kunnen:"
+
+#: ../../mod/connect.php:92 ../../mod/connect.php:113
+msgid ""
+"By continuing, I certify that I have complied with any instructions provided"
+" on this page."
+msgstr "Door verder te gaan ga ik automatisch akkoord met alle voorwaarden en aanwijzingen op deze pagina."
+
+#: ../../mod/connect.php:101
+msgid "(No specific instructions have been provided by the channel owner.)"
+msgstr "(Er zijn geen speciale voorwaarden en aanwijzingen door de kanaal-eigenaar verstrekt) "
+
+#: ../../mod/connect.php:109
+msgid "Restricted or Premium Channel"
+msgstr "Beperkt of premiumkanaal"
+
+#: ../../mod/filer.php:49
+msgid "- select -"
+msgstr "- kies map -"
+
+#: ../../mod/locs.php:19 ../../mod/locs.php:46
+msgid "Location not found."
+msgstr "Locatie niet gevonden."
+
+#: ../../mod/locs.php:50
+msgid "Primary location cannot be removed."
+msgstr "Primaire locatie kan niet worden verwijderd."
+
+#: ../../mod/locs.php:82
+msgid "No locations found."
+msgstr "Geen locaties gevonden."
+
+#: ../../mod/locs.php:95
+msgid "Manage Channel Locations"
+msgstr "Kanaallocaties beheren"
+
+#: ../../mod/locs.php:96
+msgid "Location (address)"
+msgstr "Locatie (adres)"
+
+#: ../../mod/locs.php:97
+msgid "Primary Location"
+msgstr "Primaire locatie"
+
+#: ../../mod/locs.php:98
+msgid "Drop location"
+msgstr "Locatie verwijderen"
+
+#: ../../mod/follow.php:25
+msgid "Channel added."
+msgstr "Kanaal toegevoegd."
+
+#: ../../mod/import.php:25
+#, php-format
+msgid "Your service plan only allows %d channels."
+msgstr "Jouw abonnement staat maar %d kanalen toe."
+
+#: ../../mod/import.php:51
+msgid "Nothing to import."
+msgstr "Niets gevonden om te importeren"
+
+#: ../../mod/import.php:75
+msgid "Unable to download data from old server"
+msgstr "Niet in staat om gegevens van de oude hub te downloaden"
+
+#: ../../mod/import.php:81
+msgid "Imported file is empty."
+msgstr "Geïmporteerde bestand is leeg"
+
+#: ../../mod/import.php:106
+msgid ""
+"Cannot create a duplicate channel identifier on this system. Import failed."
+msgstr "Kan geen dubbele kanaal-identificator op deze hub aanmaken. Importeren mislukt."
+
+#: ../../mod/import.php:127
+msgid "Unable to create a unique channel address. Import failed."
+msgstr "Niet in staat om een uniek kanaaladres aan te maken. Importeren is mislukt."
+
+#: ../../mod/import.php:147
+msgid "Channel clone failed. Import failed."
+msgstr "Het klonen van het kanaal is mislukt. Importeren mislukt."
+
+#: ../../mod/import.php:157
+msgid "Cloned channel not found. Import failed."
+msgstr "Gekloond kanaal niet gevonden. Importeren mislukt."
+
+#: ../../mod/import.php:475
+msgid "Import completed."
+msgstr "Import voltooid."
+
+#: ../../mod/import.php:487
+msgid "You must be logged in to use this feature."
+msgstr "Je moet ingelogd zijn om dit onderdeel te kunnen gebruiken."
+
+#: ../../mod/import.php:492
+msgid "Import Channel"
+msgstr "Kanaal importeren"
+
+#: ../../mod/import.php:493
+msgid ""
+"Use this form to import an existing channel from a different server/hub. You"
+" may retrieve the channel identity from the old server/hub via the network "
+"or provide an export file. Only identity and connections/relationships will "
+"be imported. Importation of content is not yet available."
+msgstr "Gebruik dit formulier om een bestaand kanaal te importeren van een andere hub. Je kan de kanaal-identiteit van de oude hub via het netwerk ontvangen of een exportbestand verstrekken. Alleen de identiteit en de connecties zullen geïmporteerd worden. Het importeren van inhoud is nog niet beschikbaar."
+
+#: ../../mod/import.php:494
+msgid "File to Upload"
+msgstr "Bestand om te uploaden"
+
+#: ../../mod/import.php:495
+msgid "Or provide the old server/hub details"
+msgstr "Of vul de gegevens van de oude hub in"
+
+#: ../../mod/import.php:496
+msgid "Your old identity address (xyz@example.com)"
+msgstr "Jouw oude kanaaladres (xyz@example.com)"
+
+#: ../../mod/import.php:497
+msgid "Your old login email address"
+msgstr "Het e-mailadres van je oude account"
+
+#: ../../mod/import.php:498
+msgid "Your old login password"
+msgstr "Wachtwoord van jouw oude account"
+
+#: ../../mod/import.php:499
+msgid ""
+"For either option, please choose whether to make this hub your new primary "
+"address, or whether your old location should continue this role. You will be"
+" able to post from either location, but only one can be marked as the "
+"primary location for files, photos, and media."
+msgstr "Voor elke optie geldt dat je moet kiezen of je jouw primaire kanaaladres op deze hub wil instellen of dat jouw oude hub deze rol blijft vervullen."
+
+#: ../../mod/import.php:500
+msgid "Make this hub my primary location"
+msgstr "Stel deze hub als mijn primaire locatie in"
+
+#: ../../mod/import.php:501
+msgid "Import existing posts if possible"
+msgstr "Importeer bestaande berichten (wanneer mogelijk)"
+
+#: ../../mod/item.php:159
+msgid "Unable to locate original post."
+msgstr "Niet in staat om de originele locatie van het bericht te vinden. "
+
+#: ../../mod/item.php:418
+msgid "Empty post discarded."
+msgstr "Leeg bericht geannuleerd"
+
+#: ../../mod/item.php:460
+msgid "Executable content type not permitted to this channel."
+msgstr "Uitvoerbare bestanden zijn niet toegestaan op dit kanaal."
+
+#: ../../mod/item.php:902
+msgid "System error. Post not saved."
+msgstr "Systeemfout. Bericht niet opgeslagen."
+
+#: ../../mod/item.php:1120
+#, php-format
+msgid "You have reached your limit of %1$.0f top level posts."
+msgstr "Je hebt jouw limiet van %1$.0f berichten bereikt."
+
+#: ../../mod/item.php:1126
+#, php-format
+msgid "You have reached your limit of %1$.0f webpages."
+msgstr "Je hebt jouw limiet van %1$.0f webpagina's bereikt."
+
+#: ../../mod/suggest.php:35
+msgid ""
+"No suggestions available. If this is a new site, please try again in 24 "
+"hours."
+msgstr "Geen voorgestelde kanalen gevonden. Wanneer dit een nieuwe hub is, probeer het dan over 24 uur weer."
+
+#: ../../mod/layouts.php:110
+msgid "Help with this feature"
+msgstr "Hulp voor dit onderdeel"
+
+#: ../../mod/layouts.php:130
+msgid "Layout Name"
+msgstr "Naam lay-out"
+
+#: ../../mod/tagger.php:98
+#, php-format
+msgid "%1$s tagged %2$s's %3$s with %4$s"
+msgstr "%1$s heeft het %3$s van %2$s getagd met %4$s"
+
+#: ../../mod/setup.php:166
msgid "Red Matrix Server - Setup"
-msgstr "Red Matrix Server - Setup"
+msgstr "RedMatrix Server - Setup"
-#: ../../mod/setup.php:168
+#: ../../mod/setup.php:172
msgid "Could not connect to database."
msgstr "Could not connect to database."
-#: ../../mod/setup.php:172
+#: ../../mod/setup.php:176
msgid ""
"Could not connect to specified site URL. Possible SSL certificate or DNS "
"issue."
msgstr "Could not connect to specified hub URL. Possible SSL certificate or DNS issue."
-#: ../../mod/setup.php:179
+#: ../../mod/setup.php:183
msgid "Could not create table."
msgstr "Could not create table."
-#: ../../mod/setup.php:185
+#: ../../mod/setup.php:189
msgid "Your site database has been installed."
msgstr "Your hub database has been installed."
-#: ../../mod/setup.php:190
+#: ../../mod/setup.php:194
msgid ""
-"You may need to import the file \"install/database.sql\" manually using "
-"phpmyadmin or mysql."
-msgstr "You may need to import the file \"install/database.sql\" manually using phpmyadmin or mysql."
+"You may need to import the file \"install/schema_xxx.sql\" manually using a "
+"database client."
+msgstr "You may need to import the file \"install/schema_xxx.sql\" manually using a database client."
-#: ../../mod/setup.php:191 ../../mod/setup.php:260 ../../mod/setup.php:655
+#: ../../mod/setup.php:195 ../../mod/setup.php:264 ../../mod/setup.php:663
msgid "Please see the file \"install/INSTALL.txt\"."
msgstr "Please see the file \"install/INSTALL.txt\"."
-#: ../../mod/setup.php:257
+#: ../../mod/setup.php:261
msgid "System check"
msgstr "System check"
-#: ../../mod/setup.php:261 ../../mod/events.php:380
-msgid "Next"
-msgstr "Volgende"
-
-#: ../../mod/setup.php:262
+#: ../../mod/setup.php:266
msgid "Check again"
msgstr "Check again"
-#: ../../mod/setup.php:284
+#: ../../mod/setup.php:289
msgid "Database connection"
msgstr "Database connection"
-#: ../../mod/setup.php:285
+#: ../../mod/setup.php:290
msgid ""
"In order to install Red Matrix we need to know how to connect to your "
"database."
-msgstr "In order to install Red Matrix we need to know how to connect to your database."
+msgstr "In order to install RedMatrix we need to know how to connect to your database."
-#: ../../mod/setup.php:286
+#: ../../mod/setup.php:291
msgid ""
"Please contact your hosting provider or site administrator if you have "
"questions about these settings."
msgstr "Please contact your hosting provider or site administrator if you have questions about these settings."
-#: ../../mod/setup.php:287
+#: ../../mod/setup.php:292
msgid ""
"The database you specify below should already exist. If it does not, please "
"create it before continuing."
msgstr "The database you specify below should already exist. If it does not, please create it before continuing."
-#: ../../mod/setup.php:291
+#: ../../mod/setup.php:296
msgid "Database Server Name"
msgstr "Database Server Name"
-#: ../../mod/setup.php:291
+#: ../../mod/setup.php:296
msgid "Default is localhost"
msgstr "Default is localhost"
-#: ../../mod/setup.php:292
+#: ../../mod/setup.php:297
msgid "Database Port"
msgstr "Database Port"
-#: ../../mod/setup.php:292
+#: ../../mod/setup.php:297
msgid "Communication port number - use 0 for default"
msgstr "Communication port number - use 0 for default"
-#: ../../mod/setup.php:293
+#: ../../mod/setup.php:298
msgid "Database Login Name"
msgstr "Database Login Name"
-#: ../../mod/setup.php:294
+#: ../../mod/setup.php:299
msgid "Database Login Password"
msgstr "Database Login Password"
-#: ../../mod/setup.php:295
+#: ../../mod/setup.php:300
msgid "Database Name"
msgstr "Database Name"
-#: ../../mod/setup.php:297 ../../mod/setup.php:339
+#: ../../mod/setup.php:301
+msgid "Database Type"
+msgstr "Database Type"
+
+#: ../../mod/setup.php:303 ../../mod/setup.php:347
msgid "Site administrator email address"
msgstr "Hub administrator email address"
-#: ../../mod/setup.php:297 ../../mod/setup.php:339
+#: ../../mod/setup.php:303 ../../mod/setup.php:347
msgid ""
"Your account email address must match this in order to use the web admin "
"panel."
msgstr "Your account email address must match this in order to use the web admin panel."
-#: ../../mod/setup.php:298 ../../mod/setup.php:341
+#: ../../mod/setup.php:304 ../../mod/setup.php:349
msgid "Website URL"
msgstr "Hub URL"
-#: ../../mod/setup.php:298 ../../mod/setup.php:341
+#: ../../mod/setup.php:304 ../../mod/setup.php:349
msgid "Please use SSL (https) URL if available."
msgstr "Please use SSL (https) URL if available."
-#: ../../mod/setup.php:301 ../../mod/setup.php:344
+#: ../../mod/setup.php:307 ../../mod/setup.php:352
msgid "Please select a default timezone for your website"
msgstr "Please select a default timezone for your hub"
-#: ../../mod/setup.php:328
+#: ../../mod/setup.php:335
msgid "Site settings"
msgstr "Hub settings"
-#: ../../mod/setup.php:387
+#: ../../mod/setup.php:395
msgid "Could not find a command line version of PHP in the web server PATH."
msgstr "Could not find a command line version of PHP in the web server PATH."
-#: ../../mod/setup.php:388
+#: ../../mod/setup.php:396
msgid ""
"If you don't have a command line version of PHP installed on server, you "
"will not be able to run background polling via cron."
msgstr "If you don't have a command line version of PHP installed on server, you will not be able to run background polling via cron."
-#: ../../mod/setup.php:392
+#: ../../mod/setup.php:400
msgid "PHP executable path"
msgstr "PHP executable path"
-#: ../../mod/setup.php:392
+#: ../../mod/setup.php:400
msgid ""
"Enter full path to php executable. You can leave this blank to continue the "
"installation."
msgstr "Enter full path to php executable. You can leave this blank to continue the installation."
-#: ../../mod/setup.php:397
+#: ../../mod/setup.php:405
msgid "Command line PHP"
msgstr "Command line PHP"
-#: ../../mod/setup.php:406
+#: ../../mod/setup.php:414
msgid ""
"The command line version of PHP on your system does not have "
"\"register_argc_argv\" enabled."
msgstr "The command line version of PHP on your system does not have \"register_argc_argv\" enabled."
-#: ../../mod/setup.php:407
+#: ../../mod/setup.php:415
msgid "This is required for message delivery to work."
msgstr "This is required for message delivery to work."
-#: ../../mod/setup.php:409
+#: ../../mod/setup.php:417
msgid "PHP register_argc_argv"
msgstr "PHP register_argc_argv"
-#: ../../mod/setup.php:430
+#: ../../mod/setup.php:438
msgid ""
"Error: the \"openssl_pkey_new\" function on this system is not able to "
"generate encryption keys"
msgstr "Error: the \"openssl_pkey_new\" function on this system is not able to generate encryption keys"
-#: ../../mod/setup.php:431
+#: ../../mod/setup.php:439
msgid ""
"If running under Windows, please see "
"\"http://www.php.net/manual/en/openssl.installation.php\"."
msgstr "If running under Windows, please see \"http://www.php.net/manual/en/openssl.installation.php\"."
-#: ../../mod/setup.php:433
+#: ../../mod/setup.php:441
msgid "Generate encryption keys"
msgstr "Generate encryption keys"
-#: ../../mod/setup.php:440
+#: ../../mod/setup.php:448
msgid "libCurl PHP module"
msgstr "libCurl PHP module"
-#: ../../mod/setup.php:441
+#: ../../mod/setup.php:449
msgid "GD graphics PHP module"
msgstr "GD graphics PHP module"
-#: ../../mod/setup.php:442
+#: ../../mod/setup.php:450
msgid "OpenSSL PHP module"
msgstr "OpenSSL PHP module"
-#: ../../mod/setup.php:443
-msgid "mysqli PHP module"
-msgstr "mysqli PHP module"
+#: ../../mod/setup.php:451
+msgid "mysqli or postgres PHP module"
+msgstr "mysqli or postgres PHP module"
-#: ../../mod/setup.php:444
+#: ../../mod/setup.php:452
msgid "mb_string PHP module"
msgstr "mb_string PHP module"
-#: ../../mod/setup.php:445
+#: ../../mod/setup.php:453
msgid "mcrypt PHP module"
msgstr "mcrypt PHP module"
-#: ../../mod/setup.php:450 ../../mod/setup.php:452
+#: ../../mod/setup.php:458 ../../mod/setup.php:460
msgid "Apache mod_rewrite module"
msgstr "Apache mod_rewrite module"
-#: ../../mod/setup.php:450
+#: ../../mod/setup.php:458
msgid ""
"Error: Apache webserver mod-rewrite module is required but not installed."
msgstr "Error: Apache webserver mod-rewrite module is required but not installed."
-#: ../../mod/setup.php:456 ../../mod/setup.php:459
+#: ../../mod/setup.php:464 ../../mod/setup.php:467
msgid "proc_open"
msgstr "proc_open"
-#: ../../mod/setup.php:456
+#: ../../mod/setup.php:464
msgid ""
"Error: proc_open is required but is either not installed or has been "
"disabled in php.ini"
msgstr "Error: proc_open is required but is either not installed or has been disabled in php.ini"
-#: ../../mod/setup.php:464
+#: ../../mod/setup.php:472
msgid "Error: libCURL PHP module required but not installed."
msgstr "Error: libCURL PHP module required but not installed."
-#: ../../mod/setup.php:468
+#: ../../mod/setup.php:476
msgid ""
"Error: GD graphics PHP module with JPEG support required but not installed."
msgstr "Error: GD graphics PHP module with JPEG support required but not installed."
-#: ../../mod/setup.php:472
+#: ../../mod/setup.php:480
msgid "Error: openssl PHP module required but not installed."
msgstr "Error: openssl PHP module required but not installed."
-#: ../../mod/setup.php:476
-msgid "Error: mysqli PHP module required but not installed."
-msgstr "Error: mysqli PHP module required but not installed."
+#: ../../mod/setup.php:484
+msgid ""
+"Error: mysqli or postgres PHP module required but neither are installed."
+msgstr "Error: mysqli or postgres PHP module required but neither are installed."
-#: ../../mod/setup.php:480
+#: ../../mod/setup.php:488
msgid "Error: mb_string PHP module required but not installed."
msgstr "Error: mb_string PHP module required but not installed."
-#: ../../mod/setup.php:484
+#: ../../mod/setup.php:492
msgid "Error: mcrypt PHP module required but not installed."
msgstr "Error: mcrypt PHP module required but not installed."
-#: ../../mod/setup.php:500
+#: ../../mod/setup.php:508
msgid ""
"The web installer needs to be able to create a file called \".htconfig.php\""
" in the top folder of your web server and it is unable to do so."
msgstr "The web installer needs to be able to create a file called \".htconfig.php\" in the top folder of your web server and it is unable to do so."
-#: ../../mod/setup.php:501
+#: ../../mod/setup.php:509
msgid ""
"This is most often a permission setting, as the web server may not be able "
"to write files in your folder - even if you can."
msgstr "This is most often a permission setting, as the web server may not be able to write files in your folder - even if you can."
-#: ../../mod/setup.php:502
+#: ../../mod/setup.php:510
msgid ""
"At the end of this procedure, we will give you a text to save in a file "
"named .htconfig.php in your Red top folder."
msgstr "At the end of this procedure, we will give you a text to save in a file named .htconfig.php in your Red top folder."
-#: ../../mod/setup.php:503
+#: ../../mod/setup.php:511
msgid ""
"You can alternatively skip this procedure and perform a manual installation."
" Please see the file \"install/INSTALL.txt\" for instructions."
msgstr "You can alternatively skip this procedure and perform a manual installation. Please see the file \"install/INSTALL.txt\" for instructions."
-#: ../../mod/setup.php:506
+#: ../../mod/setup.php:514
msgid ".htconfig.php is writable"
msgstr ".htconfig.php is writable"
-#: ../../mod/setup.php:516
+#: ../../mod/setup.php:524
msgid ""
"Red uses the Smarty3 template engine to render its web views. Smarty3 "
"compiles templates to PHP to speed up rendering."
msgstr "Red uses the Smarty3 template engine to render its web views. Smarty3 compiles templates to PHP to speed up rendering."
-#: ../../mod/setup.php:517
+#: ../../mod/setup.php:525
+#, php-format
msgid ""
"In order to store these compiled templates, the web server needs to have "
-"write access to the directory view/tpl/smarty3/ under the Red top level "
-"folder."
-msgstr "In order to store these compiled templates, the web server needs to have write access to the directory view/tpl/smarty3/ under the Red top level folder."
+"write access to the directory %s under the Red top level folder."
+msgstr "In order to store these compiled templates, the web server needs to have write access to the directory %s under the Red top level folder."
-#: ../../mod/setup.php:518 ../../mod/setup.php:536
+#: ../../mod/setup.php:526 ../../mod/setup.php:544
msgid ""
"Please ensure that the user that your web server runs as (e.g. www-data) has"
" write access to this folder."
msgstr "Please ensure that the user that your web server runs as (e.g. www-data) has write access to this folder."
-#: ../../mod/setup.php:519
+#: ../../mod/setup.php:527
+#, php-format
msgid ""
"Note: as a security measure, you should give the web server write access to "
-"view/tpl/smarty3/ only--not the template files (.tpl) that it contains."
-msgstr "Note: as a security measure, you should give the web server write access to view/tpl/smarty3/ only--not the template files (.tpl) that it contains."
+"%s only--not the template files (.tpl) that it contains."
+msgstr "Note: as a security measure, you should give the web server write access to %s only--not the template files (.tpl) that it contains."
-#: ../../mod/setup.php:522
-msgid "view/tpl/smarty3 is writable"
-msgstr "view/tpl/smarty3 is writable"
+#: ../../mod/setup.php:530
+#, php-format
+msgid "%s is writable"
+msgstr "%s is writable"
-#: ../../mod/setup.php:535
+#: ../../mod/setup.php:543
msgid ""
"Red uses the store directory to save uploaded files. The web server needs to"
" have write access to the store directory under the Red top level folder"
msgstr "Red uses the store directory to save uploaded files. The web server needs to have write access to the store directory under the Red top level folder"
-#: ../../mod/setup.php:539
+#: ../../mod/setup.php:547
msgid "store is writable"
msgstr "store is writable"
-#: ../../mod/setup.php:569
+#: ../../mod/setup.php:577
msgid ""
"SSL certificate cannot be validated. Fix certificate or disable https access"
" to this site."
msgstr "SSL certificate cannot be validated. Fix certificate or disable https access to this hub."
-#: ../../mod/setup.php:570
+#: ../../mod/setup.php:578
msgid ""
"If you have https access to your website or allow connections to TCP port "
"443 (the https: port), you MUST use a browser-valid certificate. You MUST "
"NOT use self-signed certificates!"
msgstr "If you have https access to your hub or allow connections to TCP port 443 (the https: port), you MUST use a browser-valid certificate. You MUST NOT use self-signed certificates!"
-#: ../../mod/setup.php:571
+#: ../../mod/setup.php:579
msgid ""
"This restriction is incorporated because public posts from you may for "
"example contain references to images on your own hub."
msgstr "This restriction is incorporated because public posts from you may for example contain references to images on your own hub."
-#: ../../mod/setup.php:572
+#: ../../mod/setup.php:580
msgid ""
-"If your certificate is not recognised, members of other sites (who may "
+"If your certificate is not recognized, members of other sites (who may "
"themselves have valid certificates) will get a warning message on their own "
"site complaining about security issues."
-msgstr "If your certificate is not recognised, members of other hubs (who may themselves have valid certificates) will get a warning message on their own site complaining about security issues."
+msgstr "If your certificate is not recognized, members of other hubs (who may themselves have valid certificates) will get a warning message on their own hub complaining about security issues."
-#: ../../mod/setup.php:573
+#: ../../mod/setup.php:581
msgid ""
"This can cause usability issues elsewhere (not just on your own site) so we "
"must insist on this requirement."
msgstr "This can cause usability issues elsewhere (not just on your own hub) so we must insist on this requirement."
-#: ../../mod/setup.php:574
+#: ../../mod/setup.php:582
msgid ""
"Providers are available that issue free certificates which are browser-"
"valid."
msgstr "Providers are available that issue free certificates which are browser-valid."
-#: ../../mod/setup.php:576
+#: ../../mod/setup.php:584
msgid "SSL certificate validation"
msgstr "SSL certificate validation"
-#: ../../mod/setup.php:582
+#: ../../mod/setup.php:590
msgid ""
-"Url rewrite in .htaccess is not working. Check your server configuration."
-msgstr "Url rewrite in .htaccess is not working. Check your server configuration."
+"Url rewrite in .htaccess is not working. Check your server "
+"configuration.Test: "
+msgstr "Url rewrite in .htaccess is not working. Check your server configuration.Test: "
-#: ../../mod/setup.php:584
+#: ../../mod/setup.php:592
msgid "Url rewrite is working"
msgstr "Url rewrite is working"
-#: ../../mod/setup.php:594
+#: ../../mod/setup.php:602
msgid ""
"The database configuration file \".htconfig.php\" could not be written. "
"Please use the enclosed text to create a configuration file in your web "
"server root."
msgstr "The database configuration file \".htconfig.php\" could not be written. Please use the enclosed text to create a configuration file in your web server root."
-#: ../../mod/setup.php:618
+#: ../../mod/setup.php:626
msgid "Errors encountered creating database tables."
msgstr "Errors encountered creating database tables."
-#: ../../mod/setup.php:653
+#: ../../mod/setup.php:661
msgid "<h1>What next</h1>"
msgstr "<h1>Wat nu</h1>"
-#: ../../mod/setup.php:654
+#: ../../mod/setup.php:662
msgid ""
"IMPORTANT: You will need to [manually] setup a scheduled task for the "
"poller."
msgstr "IMPORTANT: You will need to [manually] setup a scheduled task for the poller."
-#: ../../mod/editblock.php:8 ../../mod/editblock.php:27
-#: ../../mod/editblock.php:53 ../../mod/editlayout.php:36
-#: ../../mod/editpost.php:20 ../../mod/editwebpage.php:32
-msgid "Item not found"
-msgstr "Item niet gevonden"
-
-#: ../../mod/editblock.php:77
-msgid "Edit Block"
-msgstr "Blok bewerken"
-
-#: ../../mod/editblock.php:87
-msgid "Delete block?"
-msgstr "Blok verwijderen"
-
-#: ../../mod/editblock.php:115 ../../mod/editlayout.php:110
-#: ../../mod/editpost.php:116 ../../mod/editwebpage.php:147
-msgid "Insert YouTube video"
-msgstr "YouTube-video invoegen"
-
-#: ../../mod/editblock.php:116 ../../mod/editlayout.php:111
-#: ../../mod/editpost.php:117 ../../mod/editwebpage.php:148
-msgid "Insert Vorbis [.ogg] video"
-msgstr "Vorbis-video [.ogg] invoegen"
-
-#: ../../mod/editblock.php:117 ../../mod/editlayout.php:112
-#: ../../mod/editpost.php:118 ../../mod/editwebpage.php:149
-msgid "Insert Vorbis [.ogg] audio"
-msgstr "Vorbis-audio [.ogg] invoegen"
-
-#: ../../mod/editblock.php:153
-msgid "Delete Block"
-msgstr "Blok verwijderen"
-
-#: ../../mod/pdledit.php:13
-msgid "Layout updated."
-msgstr "Layout bijgewerkt."
-
-#: ../../mod/pdledit.php:28 ../../mod/pdledit.php:53
-msgid "Edit System Page Description"
-msgstr "Systeempagina's bewerken"
-
-#: ../../mod/pdledit.php:48
-msgid "Layout not found."
-msgstr "Lay-out niet gevonden."
-
-#: ../../mod/pdledit.php:54
-msgid "Module Name:"
-msgstr "Modulenaam:"
-
-#: ../../mod/pdledit.php:55 ../../mod/layouts.php:59
-msgid "Layout Help"
-msgstr "Lay-out-hulp"
-
-#: ../../mod/editlayout.php:72
-msgid "Edit Layout"
-msgstr "Lay-out bewerken"
-
-#: ../../mod/editlayout.php:82
-msgid "Delete layout?"
-msgstr "Lay-out verwijderen?"
-
-#: ../../mod/editlayout.php:146
-msgid "Delete Layout"
-msgstr "Lay-out verwijderen"
-
-#: ../../mod/editpost.php:31
-msgid "Item is not editable"
-msgstr "Item is niet te bewerken"
-
-#: ../../mod/editpost.php:53
-msgid "Delete item?"
-msgstr "Item verwijderen?"
-
-#: ../../mod/editwebpage.php:106
-msgid "Edit Webpage"
-msgstr "Webpagina bewerken"
-
-#: ../../mod/editwebpage.php:116
-msgid "Delete webpage?"
-msgstr "Webpagina verwijderen?"
-
-#: ../../mod/editwebpage.php:186
-msgid "Delete Webpage"
-msgstr "Webpagina verwijderen"
-
-#: ../../mod/siteinfo.php:57
-#, php-format
-msgid "Version %s"
-msgstr "Versie %s"
-
-#: ../../mod/siteinfo.php:76
-msgid "Installed plugins/addons/apps:"
-msgstr "Ingeschakelde plug-ins/add-ons/apps:"
-
-#: ../../mod/siteinfo.php:89
-msgid "No installed plugins/addons/apps"
-msgstr "Geen ingeschakelde plug-ins/add-ons/apps"
-
-#: ../../mod/siteinfo.php:97
-msgid "Red"
-msgstr "Red"
-
-#: ../../mod/siteinfo.php:98
-msgid ""
-"This is a hub of the Red Matrix - a global cooperative network of "
-"decentralised privacy enhanced websites."
-msgstr "Dit is een Red Matrix-hub - een wereldwijd coöperatief netwerk van gedecentraliseerde websites met verbeterende privacy."
-
-#: ../../mod/siteinfo.php:101
-msgid "Running at web location"
-msgstr "Draaiend op weblocatie"
-
-#: ../../mod/siteinfo.php:102
-msgid ""
-"Please visit <a href=\"http://getzot.com\">GetZot.com</a> to learn more "
-"about the Red Matrix."
-msgstr "Bezoek <a href=\"http://redmatrix.me\">RedMatrix.me</a> om meer te leren over de Red Matrix."
-
-#: ../../mod/siteinfo.php:103
-msgid "Bug reports and issues: please visit"
-msgstr "Bugrapporten en andere kwesties: bezoek"
-
-#: ../../mod/siteinfo.php:106
-msgid ""
-"Suggestions, praise, etc. - please email \"redmatrix\" at librelist - dot "
-"com"
-msgstr "Voorstellen, lofbetuigingen, enz. - e-mail \"redmatrix\" at librelist - dot com"
-
-#: ../../mod/siteinfo.php:108
-msgid "Site Administrators"
-msgstr "Hubbeheerders"
-
-#: ../../mod/photos.php:77
-msgid "Page owner information could not be retrieved."
-msgstr "Informatie over de pagina-eigenaar werd niet ontvangen."
-
-#: ../../mod/photos.php:97
-msgid "Album not found."
-msgstr "Album niet gevonden."
-
-#: ../../mod/photos.php:119 ../../mod/photos.php:669
-msgid "Delete Album"
-msgstr "Verwijder album"
-
-#: ../../mod/photos.php:159 ../../mod/photos.php:957
-msgid "Delete Photo"
-msgstr "Verwijder foto"
-
-#: ../../mod/photos.php:453
-msgid "No photos selected"
-msgstr "Geen foto's geselecteerd"
-
-#: ../../mod/photos.php:500
-msgid "Access to this item is restricted."
-msgstr "Toegang tot dit item is beperkt."
-
-#: ../../mod/photos.php:574
-#, php-format
-msgid "You have used %1$.2f Mbytes of %2$.2f Mbytes photo storage."
-msgstr "Je gebruiker %1$.2f MB van totaal %2$.2f MB foto-opslagruimte."
-
-#: ../../mod/photos.php:577
-#, php-format
-msgid "You have used %1$.2f Mbytes of photo storage."
-msgstr "Je gebruikt %1$.2f MB aan foto-opslagruimte."
-
-#: ../../mod/photos.php:596
-msgid "Upload Photos"
-msgstr "Foto's uploaden"
-
-#: ../../mod/photos.php:600 ../../mod/photos.php:664
-msgid "New album name: "
-msgstr "Nieuwe albumnaam: "
-
-#: ../../mod/photos.php:601
-msgid "or existing album name: "
-msgstr "of een bestaande albumnaam: "
-
-#: ../../mod/photos.php:602
-msgid "Do not show a status post for this upload"
-msgstr "Plaats geen bericht voor deze upload."
-
-#: ../../mod/photos.php:653 ../../mod/photos.php:675 ../../mod/photos.php:1129
-#: ../../mod/photos.php:1144
-msgid "Contact Photos"
-msgstr "Connectiefoto's"
-
-#: ../../mod/photos.php:679
-msgid "Edit Album"
-msgstr "Album bewerken"
-
-#: ../../mod/photos.php:685
-msgid "Show Newest First"
-msgstr "Nieuwste eerst weergeven"
-
-#: ../../mod/photos.php:687
-msgid "Show Oldest First"
-msgstr "Oudste eerst weergeven"
-
-#: ../../mod/photos.php:730 ../../mod/photos.php:1176
-msgid "View Photo"
-msgstr "Foto weergeven"
-
-#: ../../mod/photos.php:776
-msgid "Permission denied. Access to this item may be restricted."
-msgstr "Toegang geweigerd. Toegang tot dit item kan zijn beperkt."
-
-#: ../../mod/photos.php:778
-msgid "Photo not available"
-msgstr "Foto niet aanwezig"
-
-#: ../../mod/photos.php:838
-msgid "Use as profile photo"
-msgstr "Als profielfoto gebruiken"
-
-#: ../../mod/photos.php:862
-msgid "View Full Size"
-msgstr "Volledige grootte weergeven"
-
-#: ../../mod/photos.php:940
-msgid "Edit photo"
-msgstr "Foto bewerken"
-
-#: ../../mod/photos.php:942
-msgid "Rotate CW (right)"
-msgstr "Draai met de klok mee (naar rechts)"
-
-#: ../../mod/photos.php:943
-msgid "Rotate CCW (left)"
-msgstr "Draai tegen de klok in (naar links)"
-
-#: ../../mod/photos.php:946
-msgid "New album name"
-msgstr "Nieuwe albumnaam"
-
-#: ../../mod/photos.php:949
-msgid "Caption"
-msgstr "Bijschrift"
-
-#: ../../mod/photos.php:951
-msgid "Add a Tag"
-msgstr "Label toevoegen"
-
-#: ../../mod/photos.php:954
-msgid ""
-"Example: @bob, @Barbara_Jensen, @jim@example.com, #California, #camping"
-msgstr "Voorbeeld: @bob, @Barbara_Jansen, @jan@example.com, #Friesland, #camping"
-
-#: ../../mod/photos.php:1107
-msgid "In This Photo:"
-msgstr "Op deze foto:"
-
-#: ../../mod/photos.php:1182
-msgid "View Album"
-msgstr "Album weergeven"
-
-#: ../../mod/photos.php:1191
-msgid "Recent Photos"
-msgstr "Recente foto's"
-
-#: ../../mod/sources.php:32
-msgid "Failed to create source. No channel selected."
-msgstr "Aanmaken bron mislukt. Geen kanaal geselecteerd."
-
-#: ../../mod/sources.php:45
-msgid "Source created."
-msgstr "Bron aangemaakt."
-
-#: ../../mod/sources.php:57
-msgid "Source updated."
-msgstr "Bron aangemaakt."
-
-#: ../../mod/sources.php:82
-msgid "*"
-msgstr "*"
-
-#: ../../mod/sources.php:89
-msgid "Manage remote sources of content for your channel."
-msgstr "Beheer externe bronnen met inhoud voor jouw kanaal"
-
-#: ../../mod/sources.php:90 ../../mod/sources.php:100
-msgid "New Source"
-msgstr "Nieuwe bron"
-
-#: ../../mod/sources.php:101 ../../mod/sources.php:133
-msgid ""
-"Import all or selected content from the following channel into this channel "
-"and distribute it according to your channel settings."
-msgstr "Importeer complete of gedeelde inhoud vanuit het volgende kanaal naar dit kanaal, en verdeel het vervolgens volgens jouw kanaalinstellingen."
-
-#: ../../mod/sources.php:102 ../../mod/sources.php:134
-msgid "Only import content with these words (one per line)"
-msgstr "Importeer alleen inhoud met deze woorden (één per regel)"
-
-#: ../../mod/sources.php:102 ../../mod/sources.php:134
-msgid "Leave blank to import all public content"
-msgstr "Laat leeg om alle openbare inhoud te importeren"
-
-#: ../../mod/sources.php:103 ../../mod/sources.php:137
-#: ../../mod/new_channel.php:110
-msgid "Channel Name"
-msgstr "Kanaalnaam"
-
-#: ../../mod/sources.php:123 ../../mod/sources.php:150
-msgid "Source not found."
-msgstr "Bron niet gevonden"
-
-#: ../../mod/sources.php:130
-msgid "Edit Source"
-msgstr "Bron bewerken"
-
-#: ../../mod/sources.php:131
-msgid "Delete Source"
-msgstr "Bron verwijderen"
-
-#: ../../mod/sources.php:158
-msgid "Source removed"
-msgstr "Bron verwijderd"
-
-#: ../../mod/sources.php:160
-msgid "Unable to remove source."
-msgstr "Verwijderen bron mislukt."
-
-#: ../../mod/filer.php:49
-msgid "- select -"
-msgstr "- kies map -"
-
-#: ../../mod/events.php:72
-msgid "Event title and start time are required."
-msgstr "Titel en begintijd van gebeurtenis zijn vereist."
-
-#: ../../mod/events.php:310
-msgid "l, F j"
-msgstr "l j F"
-
-#: ../../mod/events.php:332
-msgid "Edit event"
-msgstr "Gebeurtenis bewerken"
-
-#: ../../mod/events.php:378
-msgid "Create New Event"
-msgstr "Nieuwe gebeurtenis aanmaken"
-
-#: ../../mod/events.php:379
-msgid "Previous"
-msgstr "Vorige"
-
-#: ../../mod/events.php:450
-msgid "hour:minute"
-msgstr "uur:minuut"
-
-#: ../../mod/events.php:470
-msgid "Event details"
-msgstr "Details van gebeurtenis"
-
-#: ../../mod/events.php:471
-#, php-format
-msgid "Format is %s %s. Starting date and Title are required."
-msgstr "Volgorde is %s %s. Begintijd en titel zijn vereist."
-
-#: ../../mod/events.php:473
-msgid "Event Starts:"
-msgstr "Begin gebeurtenis:"
-
-#: ../../mod/events.php:473 ../../mod/events.php:487 ../../mod/appman.php:91
-#: ../../mod/appman.php:92
-msgid "Required"
-msgstr "Vereist"
-
-#: ../../mod/events.php:476
-msgid "Finish date/time is not known or not relevant"
-msgstr "Einddatum/-tijd is niet bekend of niet relevant"
-
-#: ../../mod/events.php:478
-msgid "Event Finishes:"
-msgstr "Einde gebeurtenis:"
-
-#: ../../mod/events.php:481
-msgid "Adjust for viewer timezone"
-msgstr "Aanpassen aan de tijdzone van wie deze gebeurtenis bekijkt"
-
-#: ../../mod/events.php:483
-msgid "Description:"
-msgstr "Omschrijving:"
-
-#: ../../mod/events.php:487
-msgid "Title:"
-msgstr "Titel:"
-
-#: ../../mod/events.php:489
-msgid "Share this event"
-msgstr "Deel deze gebeurtenis"
-
-#: ../../mod/filestorage.php:68
-msgid "Permission Denied."
-msgstr "Toegang geweigerd"
-
-#: ../../mod/filestorage.php:85
-msgid "File not found."
-msgstr "Bestand niet gevonden."
-
-#: ../../mod/filestorage.php:122
-msgid "Edit file permissions"
-msgstr "Bestandsrechten bewerken"
-
-#: ../../mod/filestorage.php:131
-msgid "Set/edit permissions"
-msgstr "Rechten instellen/bewerken"
-
-#: ../../mod/filestorage.php:132
-msgid "Include all files and sub folders"
-msgstr "Toepassen op alle bestanden en submappen"
-
-#: ../../mod/filestorage.php:133
-msgid "Return to file list"
-msgstr "Terugkeren naar bestandlijst "
-
-#: ../../mod/filestorage.php:135
-msgid "Copy/paste this code to attach file to a post"
-msgstr "Kopieer/plak deze code om het bestand aan een bericht te koppelen"
-
-#: ../../mod/filestorage.php:136
-msgid "Copy/paste this URL to link file from a web page"
-msgstr "Kopieer/plak deze URL om het bestand aan een externe webpagina te koppelen"
-
-#: ../../mod/follow.php:25
-msgid "Channel added."
-msgstr "Kanaal toegevoegd."
-
-#: ../../mod/subthread.php:103
-#, php-format
-msgid "%1$s is following %2$s's %3$s"
-msgstr "%1$s volgt het %3$s van %2$s"
-
-#: ../../mod/fsuggest.php:20 ../../mod/fsuggest.php:92
-msgid "Contact not found."
-msgstr "Contact niet gevonden"
-
-#: ../../mod/fsuggest.php:63
-msgid "Friend suggestion sent."
-msgstr "Kanaalvoorstel verzonden."
-
-#: ../../mod/fsuggest.php:97
-msgid "Suggest Friends"
-msgstr "Kanalen voorstellen"
-
-#: ../../mod/fsuggest.php:99
-#, php-format
-msgid "Suggest a friend for %s"
-msgstr "Stel een kanaal voor aan %s"
-
-#: ../../mod/suggest.php:35
-msgid ""
-"No suggestions available. If this is a new site, please try again in 24 "
-"hours."
-msgstr "Geen voorgestelde kanalen gevonden. Wanneer dit een nieuwe hub is, probeer het dan over 24 uur weer."
-
-#: ../../mod/group.php:20
-msgid "Collection created."
-msgstr "Collectie aangemaakt"
-
-#: ../../mod/group.php:26
-msgid "Could not create collection."
-msgstr "Collectie kon niet aangemaakt worden"
-
-#: ../../mod/group.php:54
-msgid "Collection updated."
-msgstr "Collectie bijgewerkt."
-
-#: ../../mod/group.php:86
-msgid "Create a collection of channels."
-msgstr "Kanaalcollectie aanmaken"
-
-#: ../../mod/group.php:87 ../../mod/group.php:183
-msgid "Collection Name: "
-msgstr "Naam collectie:"
-
-#: ../../mod/group.php:89 ../../mod/group.php:186
-msgid "Members are visible to other channels"
-msgstr "Kanalen in deze collectie zijn zichtbaar voor andere kanalen"
-
-#: ../../mod/group.php:107
-msgid "Collection removed."
-msgstr "Collectie verwijderd"
-
-#: ../../mod/group.php:109
-msgid "Unable to remove collection."
-msgstr "Verwijderen collectie mislukt"
-
-#: ../../mod/group.php:182
-msgid "Collection Editor"
-msgstr "Collectiebewerker"
-
-#: ../../mod/group.php:196
-msgid "Members"
-msgstr "Kanalen"
-
-#: ../../mod/group.php:198
-msgid "All Connected Channels"
-msgstr "Alle kanaalconnecties"
-
-#: ../../mod/group.php:231
-msgid "Click on a channel to add or remove."
-msgstr "Klik op een kanaal om deze toe te voegen of te verwijderen."
-
-#: ../../mod/tagger.php:98
-#, php-format
-msgid "%1$s tagged %2$s's %3$s with %4$s"
-msgstr "%1$s labelde het %3$s van %2$s met %4$s"
-
-#: ../../mod/help.php:43 ../../mod/help.php:49 ../../mod/help.php:55
-msgid "Help:"
-msgstr "Hulp:"
-
-#: ../../mod/help.php:69 ../../index.php:233
-msgid "Not Found"
-msgstr "Niet gevonden"
-
-#: ../../mod/tagrm.php:41
+#: ../../mod/tagrm.php:44 ../../mod/tagrm.php:94
msgid "Tag removed"
-msgstr "Label verwijderd"
+msgstr "Tag verwijderd"
-#: ../../mod/tagrm.php:79
+#: ../../mod/tagrm.php:119
msgid "Remove Item Tag"
-msgstr "Verwijder itemlabel"
+msgstr "Verwijder item-tag"
-#: ../../mod/tagrm.php:81
+#: ../../mod/tagrm.php:121
msgid "Select a tag to remove: "
-msgstr "Kies een label om te verwijderen"
+msgstr "Kies een tag om te verwijderen"
#: ../../mod/admin.php:52
msgid "Theme settings updated."
msgstr "Thema-instellingen bijgewerkt."
-#: ../../mod/admin.php:92 ../../mod/admin.php:441
+#: ../../mod/admin.php:97 ../../mod/admin.php:411
msgid "Site"
msgstr "Hub-instellingen"
-#: ../../mod/admin.php:93
+#: ../../mod/admin.php:98
msgid "Accounts"
msgstr "Accounts"
-#: ../../mod/admin.php:94 ../../mod/admin.php:885
+#: ../../mod/admin.php:99 ../../mod/admin.php:858
msgid "Channels"
msgstr "Kanalen"
-#: ../../mod/admin.php:95 ../../mod/admin.php:976 ../../mod/admin.php:1018
+#: ../../mod/admin.php:100 ../../mod/admin.php:949 ../../mod/admin.php:991
msgid "Plugins"
msgstr "Plug-ins"
-#: ../../mod/admin.php:96 ../../mod/admin.php:1181 ../../mod/admin.php:1217
+#: ../../mod/admin.php:101 ../../mod/admin.php:1154 ../../mod/admin.php:1190
msgid "Themes"
msgstr "Thema's"
-#: ../../mod/admin.php:97 ../../mod/admin.php:541
+#: ../../mod/admin.php:102 ../../mod/admin.php:512
msgid "Server"
msgstr "Hubbeheer"
-#: ../../mod/admin.php:98
+#: ../../mod/admin.php:103
+msgid "Profile Config"
+msgstr "Profielconfiguratie"
+
+#: ../../mod/admin.php:104
msgid "DB updates"
msgstr "Database-updates"
-#: ../../mod/admin.php:112 ../../mod/admin.php:119 ../../mod/admin.php:1304
+#: ../../mod/admin.php:118 ../../mod/admin.php:125 ../../mod/admin.php:1277
msgid "Logs"
msgstr "Logboeken"
-#: ../../mod/admin.php:118
+#: ../../mod/admin.php:124
msgid "Plugin Features"
msgstr "Plug-in-opties"
-#: ../../mod/admin.php:120
+#: ../../mod/admin.php:126
msgid "User registrations waiting for confirmation"
-msgstr "Accountregistraties die op goedkeuring wachten"
+msgstr "Accounts die op goedkeuring wachten"
-#: ../../mod/admin.php:197
+#: ../../mod/admin.php:206
msgid "Message queues"
msgstr "Berichtenwachtrij"
-#: ../../mod/admin.php:202 ../../mod/admin.php:440 ../../mod/admin.php:540
-#: ../../mod/admin.php:749 ../../mod/admin.php:884 ../../mod/admin.php:975
-#: ../../mod/admin.php:1017 ../../mod/admin.php:1180 ../../mod/admin.php:1216
-#: ../../mod/admin.php:1303
+#: ../../mod/admin.php:211 ../../mod/admin.php:410 ../../mod/admin.php:511
+#: ../../mod/admin.php:721 ../../mod/admin.php:857 ../../mod/admin.php:948
+#: ../../mod/admin.php:990 ../../mod/admin.php:1153 ../../mod/admin.php:1189
+#: ../../mod/admin.php:1276
msgid "Administration"
msgstr "Beheer"
-#: ../../mod/admin.php:203
+#: ../../mod/admin.php:212
msgid "Summary"
msgstr "Samenvatting"
-#: ../../mod/admin.php:205
+#: ../../mod/admin.php:214
msgid "Registered users"
-msgstr "Geregistreerde gebruikers"
+msgstr "Geregistreerde accounts"
-#: ../../mod/admin.php:207 ../../mod/admin.php:544
+#: ../../mod/admin.php:216 ../../mod/admin.php:515
msgid "Pending registrations"
msgstr "Accounts die op goedkeuring wachten"
-#: ../../mod/admin.php:208
+#: ../../mod/admin.php:217
msgid "Version"
msgstr "Versie"
-#: ../../mod/admin.php:210 ../../mod/admin.php:545
+#: ../../mod/admin.php:219 ../../mod/admin.php:516
msgid "Active plugins"
msgstr "Ingeschakelde plug-ins"
-#: ../../mod/admin.php:361
+#: ../../mod/admin.php:326
msgid "Site settings updated."
msgstr "Hub-instellingen bijgewerkt."
-#: ../../mod/admin.php:392
-msgid "No special theme for accessibility"
-msgstr "Geen speciaal thema voor universele toegang"
+#: ../../mod/admin.php:365
+msgid "experimental"
+msgstr "experimenteel"
-#: ../../mod/admin.php:421
+#: ../../mod/admin.php:367
+msgid "unsupported"
+msgstr "Niet ondersteund"
+
+#: ../../mod/admin.php:391
msgid "Yes - with approval"
msgstr "Ja - met goedkeuring"
-#: ../../mod/admin.php:427
+#: ../../mod/admin.php:397
msgid "My site is not a public server"
-msgstr "Mijn Red Matrix-hub is niet openbaar"
+msgstr "Mijn RedMatrix-hub is niet openbaar"
-#: ../../mod/admin.php:428
+#: ../../mod/admin.php:398
msgid "My site has paid access only"
-msgstr "Mijn Red Matrix-hub kent alleen betaalde toegang"
+msgstr "Mijn RedMatrix-hub kent alleen betaalde toegang"
-#: ../../mod/admin.php:429
+#: ../../mod/admin.php:399
msgid "My site has free access only"
-msgstr "Mijn Red Matrix-hub kent alleen gratis toegang"
+msgstr "Mijn RedMatrix-hub kent alleen gratis toegang"
-#: ../../mod/admin.php:430
+#: ../../mod/admin.php:400
msgid "My site offers free accounts with optional paid upgrades"
-msgstr "Mijn Red Matrix-hub biedt gratis accounts aan met betaalde uitbreidingen als optie"
+msgstr "Mijn RedMatrix-hub biedt gratis accounts aan met betaalde uitbreidingen als optie"
-#: ../../mod/admin.php:444
+#: ../../mod/admin.php:414
msgid "File upload"
msgstr "Bestand uploaden"
-#: ../../mod/admin.php:445
+#: ../../mod/admin.php:415
msgid "Policies"
msgstr "Beleid"
-#: ../../mod/admin.php:450
+#: ../../mod/admin.php:420
msgid "Site name"
-msgstr "Naam van deze Red Matrix-hub"
+msgstr "Naam van deze RedMatrix-hub"
-#: ../../mod/admin.php:451
+#: ../../mod/admin.php:421
msgid "Banner/Logo"
msgstr "Banner/logo"
-#: ../../mod/admin.php:452
+#: ../../mod/admin.php:422
msgid "Administrator Information"
msgstr "Informatie over de beheerder van deze hub"
-#: ../../mod/admin.php:452
+#: ../../mod/admin.php:422
msgid ""
"Contact information for site administrators. Displayed on siteinfo page. "
"BBCode can be used here"
msgstr "Contactinformatie voor hub-beheerders. Getoond op pagina met hub-informatie. Er kan hier bbcode gebruikt worden."
-#: ../../mod/admin.php:453
+#: ../../mod/admin.php:423
msgid "System language"
msgstr "Standaardtaal"
-#: ../../mod/admin.php:454
+#: ../../mod/admin.php:424
msgid "System theme"
msgstr "Standaardthema"
-#: ../../mod/admin.php:454
+#: ../../mod/admin.php:424
msgid ""
"Default system theme - may be over-ridden by user profiles - <a href='#' "
"id='cnftheme'>change theme settings</a>"
-msgstr "Standaardthema voor Red Matrix-hub (kan door gebruiker veranderd worden) - <a href='#' id='cnftheme'>verander thema-instellingen</a>"
+msgstr "Standaardthema voor RedMatrix-hub (kan door lid veranderd worden) - <a href='#' id='cnftheme'>verander thema-instellingen</a>"
-#: ../../mod/admin.php:455
+#: ../../mod/admin.php:425
msgid "Mobile system theme"
msgstr "Standaardthema voor mobiel"
-#: ../../mod/admin.php:455
+#: ../../mod/admin.php:425
msgid "Theme for mobile devices"
msgstr "Thema voor mobiele apparaten"
-#: ../../mod/admin.php:456
-msgid "Accessibility system theme"
-msgstr "Standaardthema voor universele toegang"
+#: ../../mod/admin.php:427
+msgid "Enable Diaspora Protocol"
+msgstr "Diaspora-protocol inschakelen"
-#: ../../mod/admin.php:456
-msgid "Accessibility theme"
-msgstr "Thema voor universele toegang"
+#: ../../mod/admin.php:427
+msgid "Communicate with Diaspora and Friendica - experimental"
+msgstr "Communiceer met Diaspora en Friendica (experimenteel)"
-#: ../../mod/admin.php:457
-msgid "Channel to use for this website's static pages"
-msgstr "Kanaal die op deze hub als statische pagina op de homepage gebruikt moet worden"
+#: ../../mod/admin.php:428
+msgid "Allow Feeds as Connections"
+msgstr "Sta feeds toe als connecties"
-#: ../../mod/admin.php:457
-msgid "Site Channel"
-msgstr "Kanaal op deze Red Matrix-hub"
+#: ../../mod/admin.php:428
+msgid "(Heavy system resource usage)"
+msgstr "(sterk negatieve invloed op systeembronnen hub)"
-#: ../../mod/admin.php:459
+#: ../../mod/admin.php:429
msgid "Maximum image size"
msgstr "Maximale grootte van afbeeldingen"
-#: ../../mod/admin.php:459
+#: ../../mod/admin.php:429
msgid ""
"Maximum size in bytes of uploaded images. Default is 0, which means no "
"limits."
msgstr "Maximale grootte in bytes voor afbeeldingen die worden geüpload. Standaard is 0, wat geen limiet betekend."
-#: ../../mod/admin.php:460
+#: ../../mod/admin.php:430
msgid "Does this site allow new member registration?"
-msgstr "Staat deze hub registratie van nieuwe accounts toe?"
+msgstr "Staat deze hub nieuwe accounts toe?"
-#: ../../mod/admin.php:461
+#: ../../mod/admin.php:431
msgid "Which best describes the types of account offered by this hub?"
-msgstr "Wat voor soort accounts biedt deze Red Matrix-hub aan? Kies wat het meest in de buurt komt."
+msgstr "Wat voor soort accounts biedt deze RedMatrix-hub aan? Kies wat het meest in de buurt komt."
-#: ../../mod/admin.php:462
+#: ../../mod/admin.php:432
msgid "Register text"
-msgstr "Registratietekst"
+msgstr "Tekst tijdens registratie"
-#: ../../mod/admin.php:462
+#: ../../mod/admin.php:432
msgid "Will be displayed prominently on the registration page."
-msgstr "Wordt prominent op de registratiepagina getoond."
+msgstr "Tekst dat op de pagina voor het registreren van nieuwe accounts wordt getoond."
-#: ../../mod/admin.php:463
+#: ../../mod/admin.php:433
msgid "Accounts abandoned after x days"
msgstr "Accounts als verlaten beschouwen na zoveel aantal dagen:"
-#: ../../mod/admin.php:463
+#: ../../mod/admin.php:433
msgid ""
"Will not waste system resources polling external sites for abandonded "
"accounts. Enter 0 for no time limit."
msgstr "Zal geen systeembronnen verspillen door polling van externe hubs voor verlaten accounts. Vul 0 in voor geen tijdslimiet."
-#: ../../mod/admin.php:464
+#: ../../mod/admin.php:434
msgid "Allowed friend domains"
msgstr "Toegestane domeinen"
-#: ../../mod/admin.php:464
+#: ../../mod/admin.php:434
msgid ""
"Comma separated list of domains which are allowed to establish friendships "
"with this site. Wildcards are accepted. Empty to allow any domains"
-msgstr "Komma-gescheiden lijst van domeinen waarvan kanalen connecties kunnen aangaan met kanalen op deze Red Matrix-hub. Wildcards zijn toegestaan.\nLaat leeg om alle domeinen toe te laten."
+msgstr "Komma-gescheiden lijst van domeinen waarvan kanalen connecties kunnen aangaan met kanalen op deze RedMatrix-hub. Wildcards zijn toegestaan.\nLaat leeg om alle domeinen toe te laten."
-#: ../../mod/admin.php:465
+#: ../../mod/admin.php:435
msgid "Allowed email domains"
msgstr "Toegestane e-maildomeinen"
-#: ../../mod/admin.php:465
+#: ../../mod/admin.php:435
msgid ""
"Comma separated list of domains which are allowed in email addresses for "
"registrations to this site. Wildcards are accepted. Empty to allow any "
"domains"
msgstr "Door komma's gescheiden lijst met e-maildomeinen die op deze hub mogen registeren. Wildcards zijn toegestaan.\nLaat leeg om alle domeinen toe te laten."
-#: ../../mod/admin.php:466
+#: ../../mod/admin.php:436
msgid "Block public"
msgstr "Openbare toegang blokkeren"
-#: ../../mod/admin.php:466
+#: ../../mod/admin.php:436
msgid ""
"Check to block public access to all otherwise public personal pages on this "
"site unless you are currently logged in."
-msgstr "Vink dit aan om alle normaliter openbare persoonlijke pagina's op deze hub alleen toegankelijk te maken voor ingelogde gebruikers."
+msgstr "Vink dit aan om alle normaliter openbare persoonlijke pagina's op deze hub alleen toegankelijk te maken voor ingelogde leden."
-#: ../../mod/admin.php:467
+#: ../../mod/admin.php:437
+msgid "Verify Email Addresses"
+msgstr "E-mailadres verifieren"
+
+#: ../../mod/admin.php:437
+msgid ""
+"Check to verify email addresses used in account registration (recommended)."
+msgstr "Inschakelen om e-mailadressen te verifiëren die tijdens de accountregistratie worden gebruikt (aanbevolen)."
+
+#: ../../mod/admin.php:438
msgid "Force publish"
msgstr "Dwing kanaalvermelding af"
-#: ../../mod/admin.php:467
+#: ../../mod/admin.php:438
msgid ""
"Check to force all profiles on this site to be listed in the site directory."
msgstr "Vink dit aan om af te dwingen dat alle kanalen op deze hub in de kanalengids worden vermeld."
-#: ../../mod/admin.php:468
+#: ../../mod/admin.php:439
msgid "Disable discovery tab"
msgstr "Ontdekkingstab"
-#: ../../mod/admin.php:468
+#: ../../mod/admin.php:439
msgid ""
"Remove the tab in the network view with public content pulled from sources "
"chosen for this site."
msgstr "Verwijder de tab in de matrix-weergave waarin zich een selectie aan openbare berichten bevindt, die automatisch voor deze hub zijn uitgekozen."
-#: ../../mod/admin.php:469
+#: ../../mod/admin.php:440
msgid "No login on Homepage"
msgstr "Geen inlogformulier op de homepage"
-#: ../../mod/admin.php:469
+#: ../../mod/admin.php:440
msgid ""
"Check to hide the login form from your sites homepage when visitors arrive "
"who are not logged in (e.g. when you put the content of the homepage in via "
"the site channel)."
-msgstr "Vink dit aan om het inlogformulier op de homepage van deze hub, die niet-ingelogde gebruikers te zien krijgen, te verbergen. (bijvoorbeeld wanneer je een kanaal op deze Red Matrix-hub als homepage gebruikt)"
+msgstr "Vink dit aan om het inlogformulier op de homepage van deze hub, die niet-ingelogde bezoekers te zien krijgen, te verbergen. (bijvoorbeeld wanneer je een kanaal op deze RedMatrix-hub als homepage gebruikt)"
-#: ../../mod/admin.php:471
+#: ../../mod/admin.php:442
msgid "Proxy user"
-msgstr "Proxy-gebruiker"
+msgstr "Gebruikersnaam proxy"
-#: ../../mod/admin.php:472
+#: ../../mod/admin.php:443
msgid "Proxy URL"
-msgstr "Proxy-URL"
+msgstr "URL proxy"
-#: ../../mod/admin.php:473
+#: ../../mod/admin.php:444
msgid "Network timeout"
msgstr "Netwerktimeout"
-#: ../../mod/admin.php:473
+#: ../../mod/admin.php:444
msgid "Value is in seconds. Set to 0 for unlimited (not recommended)."
msgstr "Waarde is in seconden. Zet op 0 voor onbeperkt (niet aanbevolen)"
-#: ../../mod/admin.php:474
+#: ../../mod/admin.php:445
msgid "Delivery interval"
msgstr "Afleveringsinterval"
-#: ../../mod/admin.php:474
+#: ../../mod/admin.php:445
msgid ""
"Delay background delivery processes by this many seconds to reduce system "
"load. Recommend: 4-5 for shared hosts, 2-3 for virtual private servers. 0-1 "
"for large dedicated servers."
msgstr "Vertraag de achtergrondprocessen voor het afleveren met een aantal seconden om de systeembelasting te verminderen. Aanbevolen: 4-5 voor shared hosts, 2-3 voor virtual private servers (VPS) en 0-1 voor grote dedicated servers."
-#: ../../mod/admin.php:475
+#: ../../mod/admin.php:446
msgid "Poll interval"
msgstr "Poll-interval"
-#: ../../mod/admin.php:475
+#: ../../mod/admin.php:446
msgid ""
"Delay background polling processes by this many seconds to reduce system "
"load. If 0, use delivery interval."
msgstr "De achtergrondprocessen voor het afleveren met zoveel seconden vertragen om de systeembelasting te verminderen. 0 om de afleveringsinterval te gebruiken."
-#: ../../mod/admin.php:476
+#: ../../mod/admin.php:447
msgid "Maximum Load Average"
msgstr "Maximaal gemiddelde systeembelasting"
-#: ../../mod/admin.php:476
+#: ../../mod/admin.php:447
msgid ""
"Maximum system load before delivery and poll processes are deferred - "
"default 50."
msgstr "Maximale systeembelasting voordat de afleverings- en polllingsprocessen worden uitgesteld. Standaard is 50."
-#: ../../mod/admin.php:532
+#: ../../mod/admin.php:503
msgid "No server found"
msgstr "Geen hub gevonden"
-#: ../../mod/admin.php:539 ../../mod/admin.php:763
+#: ../../mod/admin.php:510 ../../mod/admin.php:735
msgid "ID"
msgstr "ID"
-#: ../../mod/admin.php:539
+#: ../../mod/admin.php:510
msgid "for channel"
msgstr "voor kanaal"
-#: ../../mod/admin.php:539
+#: ../../mod/admin.php:510
msgid "on server"
msgstr "op hub"
-#: ../../mod/admin.php:539
+#: ../../mod/admin.php:510
msgid "Status"
msgstr "Status"
-#: ../../mod/admin.php:560
+#: ../../mod/admin.php:531
msgid "Update has been marked successful"
msgstr "Update is als succesvol gemarkeerd"
-#: ../../mod/admin.php:570
+#: ../../mod/admin.php:541
#, php-format
msgid "Executing %s failed. Check system logs."
msgstr "Uitvoeren van %s is mislukt. Controleer systeemlogboek."
-#: ../../mod/admin.php:573
+#: ../../mod/admin.php:544
#, php-format
msgid "Update %s was successfully applied."
msgstr "Update %s was geslaagd."
-#: ../../mod/admin.php:577
+#: ../../mod/admin.php:548
#, php-format
msgid "Update %s did not return a status. Unknown if it succeeded."
msgstr "Update %s gaf geen melding. Het is daarom niet bekend of deze geslaagd is."
-#: ../../mod/admin.php:580
+#: ../../mod/admin.php:551
#, php-format
msgid "Update function %s could not be found."
msgstr "Update-functie %s kon niet gevonden worden."
-#: ../../mod/admin.php:595
+#: ../../mod/admin.php:566
msgid "No failed updates."
msgstr "Geen mislukte updates."
-#: ../../mod/admin.php:599
+#: ../../mod/admin.php:570
msgid "Failed Updates"
msgstr "Mislukte updates"
-#: ../../mod/admin.php:601
+#: ../../mod/admin.php:572
msgid "Mark success (if update was manually applied)"
msgstr "Markeer als geslaagd (wanneer de update handmatig was uitgevoerd)"
-#: ../../mod/admin.php:602
+#: ../../mod/admin.php:573
msgid "Attempt to execute this update step automatically"
msgstr "Poging om deze stap van de update automatisch uit te voeren."
-#: ../../mod/admin.php:628
+#: ../../mod/admin.php:599
#, php-format
msgid "%s user blocked/unblocked"
msgid_plural "%s users blocked/unblocked"
msgstr[0] "%s account geblokkeerd/gedeblokkeerd"
msgstr[1] "%s accounts geblokkeerd/gedeblokkeerd"
-#: ../../mod/admin.php:635
+#: ../../mod/admin.php:606
#, php-format
msgid "%s user deleted"
msgid_plural "%s users deleted"
msgstr[0] "%s account verwijderd"
msgstr[1] "%s accounts verwijderd"
-#: ../../mod/admin.php:666
+#: ../../mod/admin.php:635
msgid "Account not found"
msgstr "Account niet gevonden"
-#: ../../mod/admin.php:677
-#, php-format
-msgid "User '%s' deleted"
-msgstr "Account '%s' verwijderd"
-
-#: ../../mod/admin.php:686
+#: ../../mod/admin.php:655
#, php-format
msgid "User '%s' unblocked"
msgstr "Account '%s' gedeblokkeerd"
-#: ../../mod/admin.php:686
+#: ../../mod/admin.php:655
#, php-format
msgid "User '%s' blocked"
-msgstr "Gebruiker '%s' geblokkeerd"
+msgstr "Lid '%s' geblokkeerd"
-#: ../../mod/admin.php:750 ../../mod/admin.php:762
+#: ../../mod/admin.php:722 ../../mod/admin.php:734
msgid "Users"
msgstr "Accounts"
-#: ../../mod/admin.php:752 ../../mod/admin.php:887
+#: ../../mod/admin.php:724 ../../mod/admin.php:860
msgid "select all"
msgstr "alles selecteren"
-#: ../../mod/admin.php:753
+#: ../../mod/admin.php:725
msgid "User registrations waiting for confirm"
msgstr "Accounts die op goedkeuring wachten"
-#: ../../mod/admin.php:754
+#: ../../mod/admin.php:726
msgid "Request date"
msgstr "Tijd/datum verzoek"
-#: ../../mod/admin.php:755
+#: ../../mod/admin.php:727
msgid "No registrations."
msgstr "Geen verzoeken."
-#: ../../mod/admin.php:756
+#: ../../mod/admin.php:728
msgid "Approve"
msgstr "Goedkeuren"
-#: ../../mod/admin.php:757
+#: ../../mod/admin.php:729
msgid "Deny"
msgstr "Afkeuren"
-#: ../../mod/admin.php:763
+#: ../../mod/admin.php:735
msgid "Register date"
msgstr "Geregistreerd"
-#: ../../mod/admin.php:763
+#: ../../mod/admin.php:735
msgid "Last login"
msgstr "Laatste keer ingelogd"
-#: ../../mod/admin.php:763
+#: ../../mod/admin.php:735
msgid "Expires"
msgstr "Verloopt"
-#: ../../mod/admin.php:763
+#: ../../mod/admin.php:735
msgid "Service Class"
msgstr "Abonnementen"
-#: ../../mod/admin.php:765
+#: ../../mod/admin.php:737
msgid ""
"Selected users will be deleted!\\n\\nEverything these users had posted on "
"this site will be permanently deleted!\\n\\nAre you sure?"
msgstr "Geselecteerde accounts (met bijbehorende kanalen) worden verwijderd!\\n\\nAlles wat deze accounts op deze hub hebben gepubliceerd wordt definitief verwijderd!\\n\\Weet je het zeker?"
-#: ../../mod/admin.php:766
+#: ../../mod/admin.php:738
msgid ""
"The user {0} will be deleted!\\n\\nEverything this user has posted on this "
"site will be permanently deleted!\\n\\nAre you sure?"
msgstr "Account {0} (met bijbehorende kanalen) wordt verwijderd !\\n\\nAlles wat dit account op deze hub heeft gepubliceerd wordt definitief verwijderd!\\n\\nWeet je het zeker?"
-#: ../../mod/admin.php:799
+#: ../../mod/admin.php:771
#, php-format
msgid "%s channel censored/uncensored"
-msgid_plural "%s channelss censored/uncensored"
-msgstr[0] "%s kanalen gecensureerd/ongecensureerd"
-msgstr[1] "%s kanaal gecensureerd/ongecensureerd"
+msgid_plural "%s channels censored/uncensored"
+msgstr[0] "%s kanaal gecensureerd/ongecensureerd"
+msgstr[1] "%s kanalen gecensureerd/ongecensureerd"
-#: ../../mod/admin.php:806
+#: ../../mod/admin.php:778
#, php-format
msgid "%s channel deleted"
msgid_plural "%s channels deleted"
msgstr[0] "%s kanaal verwijderd"
msgstr[1] "%s kanalen verwijderd"
-#: ../../mod/admin.php:825
+#: ../../mod/admin.php:797
msgid "Channel not found"
msgstr "Kanaal niet gevonden"
-#: ../../mod/admin.php:836
+#: ../../mod/admin.php:808
#, php-format
msgid "Channel '%s' deleted"
msgstr "Kanaal '%s' verwijderd"
-#: ../../mod/admin.php:846
+#: ../../mod/admin.php:819
#, php-format
msgid "Channel '%s' uncensored"
msgstr "Kanaal '%s' ongecensureerd"
-#: ../../mod/admin.php:846
+#: ../../mod/admin.php:819
#, php-format
msgid "Channel '%s' censored"
msgstr "Kanaal '%s' gecensureerd"
-#: ../../mod/admin.php:889
+#: ../../mod/admin.php:862
msgid "Censor"
msgstr "Censureren"
-#: ../../mod/admin.php:890
+#: ../../mod/admin.php:863
msgid "Uncensor"
msgstr "Niet censureren"
-#: ../../mod/admin.php:893
+#: ../../mod/admin.php:866
msgid "UID"
msgstr "UID"
-#: ../../mod/admin.php:895
+#: ../../mod/admin.php:868
msgid ""
"Selected channels will be deleted!\\n\\nEverything that was posted in these "
"channels on this site will be permanently deleted!\\n\\nAre you sure?"
msgstr "Geselecteerde kanalen worden verwijderd!\\n\\nAlles wat in deze kanalen op deze hub werd gepubliceerd wordt definitief verwijderd!\\n\\nWeet je het zeker?"
-#: ../../mod/admin.php:896
+#: ../../mod/admin.php:869
msgid ""
"The channel {0} will be deleted!\\n\\nEverything that was posted in this "
"channel on this site will be permanently deleted!\\n\\nAre you sure?"
msgstr "Kanaal {0} wordt verwijderd!\\n\\nAlles wat in dit kanaal op deze hub werd gepubliceerd wordt definitief verwijderd!\\n\\nWeet je het zeker?"
-#: ../../mod/admin.php:935
+#: ../../mod/admin.php:908
#, php-format
msgid "Plugin %s disabled."
msgstr "Plug-in %s uitgeschakeld."
-#: ../../mod/admin.php:939
+#: ../../mod/admin.php:912
#, php-format
msgid "Plugin %s enabled."
msgstr "Plug-in %s ingeschakeld"
-#: ../../mod/admin.php:949 ../../mod/admin.php:1151
+#: ../../mod/admin.php:922 ../../mod/admin.php:1124
msgid "Disable"
msgstr "Uitschakelen"
-#: ../../mod/admin.php:951 ../../mod/admin.php:1153
+#: ../../mod/admin.php:924 ../../mod/admin.php:1126
msgid "Enable"
msgstr "Inschakelen"
-#: ../../mod/admin.php:977 ../../mod/admin.php:1182
+#: ../../mod/admin.php:950 ../../mod/admin.php:1155
msgid "Toggle"
msgstr "Omschakelen"
-#: ../../mod/admin.php:985 ../../mod/admin.php:1192
+#: ../../mod/admin.php:958 ../../mod/admin.php:1165
msgid "Author: "
msgstr "Auteur: "
-#: ../../mod/admin.php:986 ../../mod/admin.php:1193
+#: ../../mod/admin.php:959 ../../mod/admin.php:1166
msgid "Maintainer: "
msgstr "Beheerder: "
-#: ../../mod/admin.php:1115
+#: ../../mod/admin.php:1088
msgid "No themes found."
msgstr "Geen thema's gevonden"
-#: ../../mod/admin.php:1174
+#: ../../mod/admin.php:1147
msgid "Screenshot"
msgstr "Schermafdruk"
-#: ../../mod/admin.php:1222
+#: ../../mod/admin.php:1195
msgid "[Experimental]"
msgstr "[Experimenteel]"
-#: ../../mod/admin.php:1223
+#: ../../mod/admin.php:1196
msgid "[Unsupported]"
msgstr "[Niet ondersteund]"
-#: ../../mod/admin.php:1250
+#: ../../mod/admin.php:1223
msgid "Log settings updated."
msgstr "Logboek-instellingen bijgewerkt."
-#: ../../mod/admin.php:1306
+#: ../../mod/admin.php:1279
msgid "Clear"
msgstr "Leegmaken"
-#: ../../mod/admin.php:1312
+#: ../../mod/admin.php:1285
msgid "Debugging"
msgstr "Debuggen"
-#: ../../mod/admin.php:1313
+#: ../../mod/admin.php:1286
msgid "Log file"
msgstr "Logbestand"
-#: ../../mod/admin.php:1313
+#: ../../mod/admin.php:1286
msgid ""
"Must be writable by web server. Relative to your Red top-level directory."
-msgstr "Moet door de webserver beschrijfbaar zijn. Relatief ten opzichte van de bovenste map van je Red Matrix-installatie."
+msgstr "Moet door de webserver beschrijfbaar zijn. Relatief ten opzichte van de bovenste map van je RedMatrix-installatie."
-#: ../../mod/admin.php:1314
+#: ../../mod/admin.php:1287
msgid "Log level"
msgstr "Logniveau"
-#: ../../mod/thing.php:98
-msgid "Thing updated"
-msgstr "Objekt bijgewerkt"
+#: ../../mod/admin.php:1334
+msgid "New Profile Field"
+msgstr "Nieuw profielveld"
-#: ../../mod/thing.php:158
-msgid "Object store: failed"
-msgstr "Opslaan object mislukt"
+#: ../../mod/admin.php:1335 ../../mod/admin.php:1356
+msgid "Field nickname"
+msgstr "Bijnaam voor veld"
-#: ../../mod/thing.php:162
-msgid "Thing added"
-msgstr "Object toegevoegd"
+#: ../../mod/admin.php:1335 ../../mod/admin.php:1356
+msgid "System name of field"
+msgstr "Systeemnaam voor veld"
-#: ../../mod/thing.php:182
-#, php-format
-msgid "OBJ: %1$s %2$s %3$s"
-msgstr "OBJ: %1$s %2$s %3$s"
+#: ../../mod/admin.php:1336 ../../mod/admin.php:1357
+msgid "Input type"
+msgstr "Invoertype"
-#: ../../mod/thing.php:234
-msgid "Show Thing"
-msgstr "Object weergeven"
+#: ../../mod/admin.php:1337 ../../mod/admin.php:1358
+msgid "Field Name"
+msgstr "Veldnaam"
-#: ../../mod/thing.php:241
-msgid "item not found."
-msgstr "Item niet gevonden"
+#: ../../mod/admin.php:1337 ../../mod/admin.php:1358
+msgid "Label on profile pages"
+msgstr "Tekstlabel voor op profielpagina's"
-#: ../../mod/thing.php:272
-msgid "Edit Thing"
-msgstr "Object bewerken"
+#: ../../mod/admin.php:1338 ../../mod/admin.php:1359
+msgid "Help text"
+msgstr "Helptekst"
-#: ../../mod/thing.php:274 ../../mod/thing.php:321
-msgid "Select a profile"
-msgstr "Kies een profiel"
+#: ../../mod/admin.php:1338 ../../mod/admin.php:1359
+msgid "Additional info (optional)"
+msgstr "Extra informatie (optioneel)"
-#: ../../mod/thing.php:278 ../../mod/thing.php:324
-msgid "Post an activity"
-msgstr "Plaats een bericht"
+#: ../../mod/admin.php:1349
+msgid "Field definition not found"
+msgstr "Velddefinitie niet gevonden"
-#: ../../mod/thing.php:278 ../../mod/thing.php:324
-msgid "Only sends to viewers of the applicable profile"
-msgstr "Toont dit alleen aan diegene die het gekozen profiel mogen zien."
+#: ../../mod/admin.php:1355
+msgid "Edit Profile Field"
+msgstr "Profielveld bewerken"
-#: ../../mod/thing.php:280 ../../mod/thing.php:326
-msgid "Name of thing e.g. something"
-msgstr "Naam van object."
+#: ../../mod/menu.php:31
+msgid "Menu updated."
+msgstr "Menu aangepast. "
-#: ../../mod/thing.php:282 ../../mod/thing.php:327
-msgid "URL of thing (optional)"
-msgstr "URL van object (optioneel)"
+#: ../../mod/menu.php:35
+msgid "Unable to update menu."
+msgstr "Niet in staat om menu aan te passen"
-#: ../../mod/thing.php:284 ../../mod/thing.php:328
-msgid "URL for photo of thing (optional)"
-msgstr "URL van objectfoto (optioneel)"
+#: ../../mod/menu.php:40
+msgid "Menu created."
+msgstr "Menu aangemaakt."
-#: ../../mod/thing.php:319
-msgid "Add Thing to your Profile"
-msgstr "Object aan je profiel toevoegen"
+#: ../../mod/menu.php:44
+msgid "Unable to create menu."
+msgstr "Niet in staat om menu aan te maken."
-#: ../../mod/import.php:36
-msgid "Nothing to import."
-msgstr "Niets gevonden om te importeren"
+#: ../../mod/menu.php:76
+msgid "Manage Menus"
+msgstr "Menu's beheren"
-#: ../../mod/import.php:58
-msgid "Unable to download data from old server"
-msgstr "Niet in staat om gegevens van de oude hub te downloaden"
+#: ../../mod/menu.php:79
+msgid "Drop"
+msgstr "Verwijderen"
-#: ../../mod/import.php:64
-msgid "Imported file is empty."
-msgstr "Geïmporteerde bestand is leeg"
+#: ../../mod/menu.php:81
+msgid "Bookmarks allowed"
+msgstr "Bladwijzers toegestaan"
-#: ../../mod/import.php:88
-msgid ""
-"Cannot create a duplicate channel identifier on this system. Import failed."
-msgstr "Kan geen dubbele kanaal-identificator op deze hub aanmaken. Importeren mislukt."
+#: ../../mod/menu.php:82
+msgid "Create a new menu"
+msgstr "Een nieuwe menu aanmaken"
-#: ../../mod/import.php:106
-msgid "Channel clone failed. Import failed."
-msgstr "Het klonen van het kanaal is mislukt. Importeren mislukt."
+#: ../../mod/menu.php:83
+msgid "Delete this menu"
+msgstr "Menu verwijderen"
-#: ../../mod/import.php:116
-msgid "Cloned channel not found. Import failed."
-msgstr "Gekloond kanaal niet gevonden. Importeren mislukt."
+#: ../../mod/menu.php:84 ../../mod/menu.php:125
+msgid "Edit menu contents"
+msgstr "Bewerk de inhoud van het menu"
-#: ../../mod/import.php:364
-msgid "Import completed."
-msgstr "Import voltooid."
+#: ../../mod/menu.php:85
+msgid "Edit this menu"
+msgstr "Dit menu bewerken"
-#: ../../mod/import.php:377
-msgid "You must be logged in to use this feature."
-msgstr "Je moet ingelogd zijn om dit onderdeel te kunnen gebruiken."
+#: ../../mod/menu.php:96
+msgid "New Menu"
+msgstr "Nieuw menu"
-#: ../../mod/import.php:382
-msgid "Import Channel"
-msgstr "Kanaal importeren"
+#: ../../mod/menu.php:97 ../../mod/menu.php:126
+msgid "Menu name"
+msgstr "Naam van menu"
-#: ../../mod/import.php:383
-msgid ""
-"Use this form to import an existing channel from a different server/hub. You"
-" may retrieve the channel identity from the old server/hub via the network "
-"or provide an export file. Only identity and connections/relationships will "
-"be imported. Importation of content is not yet available."
-msgstr "Gebruik dit formulier om een bestaand kanaal te importeren van een andere hub. Je kan de kanaal-identiteit van de oude hub via het netwerk ontvangen of een exportbestand verstrekken. Alleen de identiteit en de connecties zullen geïmporteerd worden. Het importeren van inhoud is nog niet beschikbaar."
+#: ../../mod/menu.php:97 ../../mod/menu.php:126
+msgid "Must be unique, only seen by you"
+msgstr "Moet uniek zijn en is alleen zichtbaar voor jou."
-#: ../../mod/import.php:384
-msgid "File to Upload"
-msgstr "Bestand om te uploaden"
+#: ../../mod/menu.php:98 ../../mod/menu.php:127
+msgid "Menu title"
+msgstr "Titel van menu"
-#: ../../mod/import.php:385
-msgid "Or provide the old server/hub details"
-msgstr "Of vul de gegevens van de oude hub in"
+#: ../../mod/menu.php:98 ../../mod/menu.php:127
+msgid "Menu title as seen by others"
+msgstr "Titel van menu zoals anderen dat zien."
-#: ../../mod/import.php:386
-msgid "Your old identity address (xyz@example.com)"
-msgstr "Jouw oude kanaaladres (xyz@example.com)"
+#: ../../mod/menu.php:99 ../../mod/menu.php:128
+msgid "Allow bookmarks"
+msgstr "Bladwijzers toestaan"
-#: ../../mod/import.php:387
-msgid "Your old login email address"
-msgstr "Het e-mailadres van je oude account"
+#: ../../mod/menu.php:99 ../../mod/menu.php:128
+msgid "Menu may be used to store saved bookmarks"
+msgstr "Menu kan gebruikt worden om bladwijzers in op te slaan"
-#: ../../mod/import.php:388
-msgid "Your old login password"
-msgstr "Wachtwoord van jouw oude account"
+#: ../../mod/menu.php:114
+msgid "Menu deleted."
+msgstr "Menu verwijderd."
-#: ../../mod/import.php:389
-msgid ""
-"For either option, please choose whether to make this hub your new primary "
-"address, or whether your old location should continue this role. You will be"
-" able to post from either location, but only one can be marked as the "
-"primary location for files, photos, and media."
-msgstr "Voor elke optie geldt dat je moet kiezen of je jouw primaire kanaaladres op deze hub wil instellen of dat jouw oude hub deze rol blijft vervullen."
+#: ../../mod/menu.php:116
+msgid "Menu could not be deleted."
+msgstr "Menu kon niet verwijderd worden."
-#: ../../mod/import.php:390
-msgid "Make this hub my primary location"
-msgstr "Stel deze hub als mijn primaire locatie in"
+#: ../../mod/menu.php:122
+msgid "Edit Menu"
+msgstr "Menu bewerken"
+
+#: ../../mod/menu.php:124
+msgid "Add or remove entries to this menu"
+msgstr "Items aan dit menu toevoegen of verwijder"
#: ../../mod/invite.php:25
msgid "Total invitation limit exceeded."
@@ -6960,7 +7588,7 @@ msgstr "%s : Geen geldig e-mailadres."
#: ../../mod/invite.php:76
msgid "Please join us on Red"
-msgstr "Kom op de Red Matrix"
+msgstr "Uitnodiging voor de RedMatrix"
#: ../../mod/invite.php:87
msgid "Invitation limit exceeded. Please contact your site administrator."
@@ -6982,98 +7610,89 @@ msgstr[1] "%d berichten verzonden."
msgid "You have no more invitations available"
msgstr "Je hebt geen uitnodigingen meer beschikbaar"
-#: ../../mod/invite.php:141
+#: ../../mod/invite.php:129
msgid "Send invitations"
msgstr "Uitnodigingen verzenden"
-#: ../../mod/invite.php:142
+#: ../../mod/invite.php:130
msgid "Enter email addresses, one per line:"
msgstr "Voer e-mailadressen in, één per regel:"
-#: ../../mod/invite.php:143 ../../mod/mail.php:212 ../../mod/mail.php:325
-msgid "Your message:"
-msgstr "Jouw bericht:"
+#: ../../mod/invite.php:132
+msgid "Please join my community on RedMatrix."
+msgstr "Hierbij nodig ik je uit om mij, en andere vrienden en kennissen, op de RedMatrix te vergezellen. Lees meer over de RedMatrix op https://redmatrix.me."
-#: ../../mod/invite.php:144
-msgid ""
-"You are cordially invited to join me and some other close friends on the Red"
-" Matrix - a revolutionary new decentralised communication and information "
-"tool."
-msgstr "Je bent hierbij uitgenodigd om mij, en enkele goede vrienden, te komen vergezellen op de Red Matrix - een revolutionaire nieuwe communicatie- en informatietool."
+#: ../../mod/invite.php:134
+msgid "You will need to supply this invitation code: "
+msgstr "Je moet deze uitnodigingscode opgeven:"
-#: ../../mod/invite.php:146
-msgid "You will need to supply this invitation code: $invite_code"
-msgstr "Je moet deze uitnodigingscode geven: $invite_code"
+#: ../../mod/invite.php:135
+msgid "1. Register at any RedMatrix location (they are all inter-connected)"
+msgstr "1. Registreer je op een willekeurige RedMatrix-hub (ze zijn allemaal onderling met elkaar verbonden):"
-#: ../../mod/invite.php:147
-msgid "Please visit my channel at"
-msgstr "Bezoek mijn kanaal op"
+#: ../../mod/invite.php:137
+msgid "2. Enter my RedMatrix network address into the site searchbar."
+msgstr "2. Nadat je bent ingelogd en een kanaal hebt aangemaakt kan je mijn kanaaladres in het zoekveld invullen:"
-#: ../../mod/invite.php:151
-msgid ""
-"Once you have registered (on ANY Red Matrix site - they are all inter-"
-"connected), please connect with my Red Matrix channel address:"
-msgstr "Wanneer je je eenmaal hebt geregistreerd (maakt niet uit op welke Red Matrix-hub, want ze zijn allemaal met elkaar verbonden), kan je je met mijn Red Matrix-kanaal verbinden:"
+#: ../../mod/invite.php:138
+msgid "or visit "
+msgstr "of bezoek "
-#: ../../mod/invite.php:153
-msgid "Click the [Register] link on the following page to join."
-msgstr "Klik op de link [Registreren] op de volgende pagina om je aan te melden."
+#: ../../mod/invite.php:140
+msgid "3. Click [Connect]"
+msgstr "3. Klik op [+ Verbinden]"
-#: ../../mod/invite.php:155
-msgid ""
-"For more information about the Red Matrix Project and why it has the "
-"potential to change the internet as we know it, please visit "
-"http://getzot.com"
-msgstr "Bezoek http://getzot.com voor meer informatie over het Red Matrix-project en waarom het de potentie heeft het internet voor altijd te veranderen."
+#: ../../mod/network.php:84
+msgid "No such group"
+msgstr "Collectie niet gevonden"
-#: ../../mod/item.php:147
-msgid "Unable to locate original post."
-msgstr "Niet in staat om de originele locatie van het bericht te vinden. "
+#: ../../mod/network.php:122
+msgid "Search Results For:"
+msgstr "Zoekresultaten voor:"
-#: ../../mod/item.php:372
-msgid "Empty post discarded."
-msgstr "Leeg bericht geannuleerd"
+#: ../../mod/network.php:176
+msgid "Collection is empty"
+msgstr "Collectie is leeg"
-#: ../../mod/item.php:414
-msgid "Executable content type not permitted to this channel."
-msgstr "Uitvoerbare bestanden zijn niet toegestaan op dit kanaal."
+#: ../../mod/network.php:184
+msgid "Collection: "
+msgstr "Collectie: "
-#: ../../mod/item.php:842
-msgid "System error. Post not saved."
-msgstr "Systeemfout. Bericht niet opgeslagen."
+#: ../../mod/network.php:197
+msgid "Connection: "
+msgstr "Connectie: "
-#: ../../mod/item.php:1285
-#, php-format
-msgid "You have reached your limit of %1$.0f top level posts."
-msgstr "Je hebt jouw limiet van %1$.0f berichten bereikt."
+#: ../../mod/network.php:200
+msgid "Invalid connection."
+msgstr "Ongeldige connectie."
-#: ../../mod/item.php:1291
-#, php-format
-msgid "You have reached your limit of %1$.0f webpages."
-msgstr "Je hebt jouw limiet van %1$.0f webpagina's bereikt."
+#: ../../mod/notifications.php:26
+msgid "Invalid request identifier."
+msgstr "Ongeldige verzoek identificator (request identifier)"
+
+#: ../../mod/notifications.php:35
+msgid "Discard"
+msgstr "Annuleren"
+
+#: ../../mod/notifications.php:94 ../../mod/notify.php:53
+msgid "No more system notifications."
+msgstr "Geen systeemnotificaties meer."
+
+#: ../../mod/notifications.php:98 ../../mod/notify.php:57
+msgid "System Notifications"
+msgstr "Systeemnotificaties"
#: ../../mod/update_channel.php:43 ../../mod/update_display.php:25
#: ../../mod/update_network.php:23 ../../mod/update_search.php:46
+#: ../../mod/update_home.php:21
msgid "[Embedded content - reload page to view]"
msgstr "[Ingesloten inhoud - ververs pagina om te bekijken] "
-#: ../../mod/layouts.php:62
-msgid "Help with this feature"
-msgstr "Hulp voor dit onderdeel"
-
-#: ../../mod/layouts.php:84
-msgid "Layout Name"
-msgstr "Naam layout"
-
-#: ../../mod/like.php:97
-msgid "thing"
-msgstr "object"
-
-#: ../../mod/lockview.php:30 ../../mod/lockview.php:36
+#: ../../mod/lockview.php:31
msgid "Remote privacy information not available."
msgstr "Privacy-informatie op afstand niet beschikbaar."
-#: ../../mod/lockview.php:45
+#: ../../mod/lockview.php:52
msgid "Visible to:"
msgstr "Zichtbaar voor:"
@@ -7081,88 +7700,15 @@ msgstr "Zichtbaar voor:"
msgid "No connections."
msgstr "Geen connecties."
-#: ../../mod/viewconnections.php:70
+#: ../../mod/viewconnections.php:71
#, php-format
msgid "Visit %s's profile [%s]"
msgstr "Bezoek het profiel van %s [%s]"
-#: ../../mod/viewconnections.php:85
+#: ../../mod/viewconnections.php:86
msgid "View Connnections"
msgstr "Connecties weergeven"
-#: ../../mod/lostpass.php:15
-msgid "No valid account found."
-msgstr "Geen geldige account gevonden."
-
-#: ../../mod/lostpass.php:29
-msgid "Password reset request issued. Check your email."
-msgstr "Het verzoek om je wachtwoord opnieuw in te stellen is behandeld. Controleer je e-mail."
-
-#: ../../mod/lostpass.php:35 ../../mod/lostpass.php:102
-#, php-format
-msgid "Site Member (%s)"
-msgstr "Lid van hub (%s)"
-
-#: ../../mod/lostpass.php:40
-#, php-format
-msgid "Password reset requested at %s"
-msgstr "Verzoek tot het opnieuw instellen van een wachtwoord op %s is ingediend"
-
-#: ../../mod/lostpass.php:63
-msgid ""
-"Request could not be verified. (You may have previously submitted it.) "
-"Password reset failed."
-msgstr "Het verzoek kon niet worden geverifieerd. (Mogelijk heb je al eerder een verzoek ingediend.) Opnieuw instellen van wachtwoord is mislukt."
-
-#: ../../mod/lostpass.php:85 ../../boot.php:1477
-msgid "Password Reset"
-msgstr "Wachtwoord vergeten?"
-
-#: ../../mod/lostpass.php:86
-msgid "Your password has been reset as requested."
-msgstr "Jouw wachtwoord is opnieuw ingesteld zoals je had verzocht."
-
-#: ../../mod/lostpass.php:87
-msgid "Your new password is"
-msgstr "Jouw nieuwe wachtwoord is"
-
-#: ../../mod/lostpass.php:88
-msgid "Save or copy your new password - and then"
-msgstr "Kopieer of sla je nieuwe wachtwoord op - en"
-
-#: ../../mod/lostpass.php:89
-msgid "click here to login"
-msgstr "klik dan hier om in te loggen"
-
-#: ../../mod/lostpass.php:90
-msgid ""
-"Your password may be changed from the <em>Settings</em> page after "
-"successful login."
-msgstr "Jouw wachtwoord kan worden veranderd onder <em>instellingen</em>, nadat je succesvol bent ingelogd."
-
-#: ../../mod/lostpass.php:107
-#, php-format
-msgid "Your password has changed at %s"
-msgstr "Jouw wachtwoord op %s is veranderd"
-
-#: ../../mod/lostpass.php:122
-msgid "Forgot your Password?"
-msgstr "Wachtwoord vergeten?"
-
-#: ../../mod/lostpass.php:123
-msgid ""
-"Enter your email address and submit to have your password reset. Then check "
-"your email for further instructions."
-msgstr "Voer je e-mailadres in en verstuur deze om je wachtwoord opnieuw in te stellen. Controleer hierna hier je e-mail voor verdere instructies."
-
-#: ../../mod/lostpass.php:124
-msgid "Email Address"
-msgstr "E-mailadres"
-
-#: ../../mod/lostpass.php:125
-msgid "Reset"
-msgstr "Opnieuw instellen"
-
#: ../../mod/magic.php:70
msgid "Hub not found."
msgstr "Hub niet gevonden."
@@ -7173,112 +7719,18 @@ msgstr "Totaal aantal stemmen"
#: ../../mod/vote.php:98
msgid "Average Rating"
-msgstr "Gemiddeld cijfer"
-
-#: ../../mod/mail.php:33
-msgid "Unable to lookup recipient."
-msgstr "Niet in staat om ontvanger op te zoeken."
-
-#: ../../mod/mail.php:41
-msgid "Unable to communicate with requested channel."
-msgstr "Niet in staat om met het aangevraagde kanaal te communiceren."
-
-#: ../../mod/mail.php:48
-msgid "Cannot verify requested channel."
-msgstr "Kan opgevraagd kanaal niet verifieren"
-
-#: ../../mod/mail.php:74
-msgid "Selected channel has private message restrictions. Send failed."
-msgstr "Gekozen kanaal heeft restricties voor privéberichten. Verzenden mislukt."
-
-#: ../../mod/mail.php:121 ../../mod/message.php:31
-msgid "Messages"
-msgstr "Berichten"
-
-#: ../../mod/mail.php:132
-msgid "Message deleted."
-msgstr "Bericht verwijderd."
-
-#: ../../mod/mail.php:149
-msgid "Message recalled."
-msgstr "Bericht ingetrokken."
-
-#: ../../mod/mail.php:202
-msgid "Send Private Message"
-msgstr "Privébericht versturen"
-
-#: ../../mod/mail.php:203 ../../mod/mail.php:320
-msgid "To:"
-msgstr "Aan:"
-
-#: ../../mod/mail.php:208 ../../mod/mail.php:322
-msgid "Subject:"
-msgstr "Onderwerp:"
-
-#: ../../mod/mail.php:246
-msgid "Message not found."
-msgstr "Bericht niet gevonden"
-
-#: ../../mod/mail.php:289 ../../mod/message.php:72
-msgid "Delete message"
-msgstr "Bericht verwijderen"
-
-#: ../../mod/mail.php:290
-msgid "Recall message"
-msgstr "Bericht intrekken"
-
-#: ../../mod/mail.php:292
-msgid "Message has been recalled."
-msgstr "Bericht is ingetrokken."
-
-#: ../../mod/mail.php:309
-msgid "Private Conversation"
-msgstr "Privéconversatie"
-
-#: ../../mod/mail.php:313
-msgid "Delete conversation"
-msgstr "Verwijder conversatie"
-
-#: ../../mod/mail.php:315
-msgid ""
-"No secure communications available. You <strong>may</strong> be able to "
-"respond from the sender's profile page."
-msgstr "Geen veilige communicatie beschikbaar. <strong>Mogelijk</strong> kan je reageren op de kanaalpagina van de afzender."
+msgstr "Gemiddelde waardering"
-#: ../../mod/mail.php:319
-msgid "Send Reply"
-msgstr "Antwoord versturen"
+#: ../../mod/openid.php:26
+msgid "OpenID protocol error. No ID returned."
+msgstr "OpenID-protocolfout. Geen ID terugontvangen."
-#: ../../mod/manage.php:64
+#: ../../mod/openid.php:72 ../../mod/openid.php:180 ../../mod/post.php:261
#, php-format
-msgid "You have created %1$.0f of %2$.0f allowed channels."
-msgstr "Je hebt %1$.0f van totaal %2$.0f toegestane kanalen aangemaakt."
-
-#: ../../mod/manage.php:72
-msgid "Create a new channel"
-msgstr "Nieuw kanaal aanmaken"
-
-#: ../../mod/manage.php:77
-msgid "Channel Manager"
-msgstr "Kanaalbeheerder"
-
-#: ../../mod/manage.php:78
-msgid "Current Channel"
-msgstr "Huidig kanaal"
-
-#: ../../mod/manage.php:80
-msgid "Attach to one of your channels by selecting it."
-msgstr "Gebruik een van jouw kanalen door op een te klikken."
-
-#: ../../mod/manage.php:81
-msgid "Default Channel"
-msgstr "Standaardkanaal"
-
-#: ../../mod/manage.php:82
-msgid "Make Default"
-msgstr "Als standaard instellen"
+msgid "Welcome %s. Remote authentication successful."
+msgstr "Welkom %s. Authenticatie op afstand geslaagd."
-#: ../../mod/wall_upload.php:34
+#: ../../mod/wall_upload.php:35
msgid "Wall Photos"
msgstr "Kanaalfoto's"
@@ -7298,90 +7750,6 @@ msgstr "is geïnteresseerd in:"
msgid "No matches"
msgstr "Geen overeenkomsten"
-#: ../../mod/menu.php:21
-msgid "Menu updated."
-msgstr "Menu aangepast. "
-
-#: ../../mod/menu.php:25
-msgid "Unable to update menu."
-msgstr "Niet in staat om menu aan te passen"
-
-#: ../../mod/menu.php:30
-msgid "Menu created."
-msgstr "Menu aangemaakt."
-
-#: ../../mod/menu.php:34
-msgid "Unable to create menu."
-msgstr "Niet in staat om menu aan te maken."
-
-#: ../../mod/menu.php:57
-msgid "Manage Menus"
-msgstr "Menu's beheren"
-
-#: ../../mod/menu.php:60
-msgid "Drop"
-msgstr "Verwijderen"
-
-#: ../../mod/menu.php:62
-msgid "Create a new menu"
-msgstr "Een nieuwe menu aanmaken"
-
-#: ../../mod/menu.php:63
-msgid "Delete this menu"
-msgstr "Menu verwijderen"
-
-#: ../../mod/menu.php:64 ../../mod/menu.php:109
-msgid "Edit menu contents"
-msgstr "Bewerk de inhoud van het menu"
-
-#: ../../mod/menu.php:65
-msgid "Edit this menu"
-msgstr "Dit menu bewerken"
-
-#: ../../mod/menu.php:80
-msgid "New Menu"
-msgstr "Nieuw menu"
-
-#: ../../mod/menu.php:81 ../../mod/menu.php:110
-msgid "Menu name"
-msgstr "Naam van menu"
-
-#: ../../mod/menu.php:81 ../../mod/menu.php:110
-msgid "Must be unique, only seen by you"
-msgstr "Moet uniek zijn en is alleen zichtbaar voor jou."
-
-#: ../../mod/menu.php:82 ../../mod/menu.php:111
-msgid "Menu title"
-msgstr "Titel van menu"
-
-#: ../../mod/menu.php:82 ../../mod/menu.php:111
-msgid "Menu title as seen by others"
-msgstr "Titel van menu zoals anderen dat zien."
-
-#: ../../mod/menu.php:83 ../../mod/menu.php:112
-msgid "Allow bookmarks"
-msgstr "Bladwijzers toestaan"
-
-#: ../../mod/menu.php:83 ../../mod/menu.php:112
-msgid "Menu may be used to store saved bookmarks"
-msgstr "Menu kan gebruikt worden om bladwijzers in op te slaan"
-
-#: ../../mod/menu.php:98
-msgid "Menu deleted."
-msgstr "Menu verwijderd."
-
-#: ../../mod/menu.php:100
-msgid "Menu could not be deleted."
-msgstr "Menu kon niet verwijderd worden."
-
-#: ../../mod/menu.php:106
-msgid "Edit Menu"
-msgstr "Menu bewerken"
-
-#: ../../mod/menu.php:108
-msgid "Add or remove entries to this menu"
-msgstr "Items aan dit menu toevoegen of verwijder"
-
#: ../../mod/message.php:41
msgid "Conversation removed."
msgstr "Conversatie verwijderd"
@@ -7394,51 +7762,196 @@ msgstr "Geen berichten"
msgid "D, d M Y - g:i A"
msgstr "D, j M Y - G:i"
-#: ../../mod/new_channel.php:107
+#: ../../mod/new_channel.php:109
msgid "Add a Channel"
msgstr "Kanaal toevoegen"
-#: ../../mod/new_channel.php:108
+#: ../../mod/new_channel.php:110
msgid ""
"A channel is your own collection of related web pages. A channel can be used"
" to hold social network profiles, blogs, conversation groups and forums, "
"celebrity pages, and much more. You may create as many channels as your "
"service provider allows."
-msgstr "Een kanaal is jouw eigen verzameling gerelateerde webpagina's. Een kanaal kan gebruikt worden voor een sociaal netwerk, weblog, discussiegroep of forum, een pagina over een beroemdheid, en voor veel meer. Je kan net zoveel kanalen aanmaken als dat de eigenaar/beheerder van jouw hub toestaat."
+msgstr "Een kanaal is jouw eigen verzameling gerelateerde webpagina's. Een kanaal kan gebruikt worden voor een sociaal netwerk, weblog, discussiegroep of forum, een pagina over een beroemdheid, en voor veel meer. Je kan net zoveel kanalen aanmaken als dat de eigenaar/beheerder van jouw hub toestaat."
-#: ../../mod/new_channel.php:111
+#: ../../mod/new_channel.php:113
msgid "Examples: \"Bob Jameson\", \"Lisa and her Horses\", \"Soccer\", \"Aviation Group\" "
msgstr "Voorbeelden: \"Bruce Springsteen\", \"Familiefoto's\", \"Voetbal\", \"Astronomie\""
-#: ../../mod/new_channel.php:112
+#: ../../mod/new_channel.php:114
msgid "Choose a short nickname"
msgstr "Kies een korte bijnaam"
-#: ../../mod/new_channel.php:113
+#: ../../mod/new_channel.php:115
msgid ""
"Your nickname will be used to create an easily remembered channel address "
"(like an email address) which you can share with others."
msgstr "Jouw bijnaam wordt gebruikt om een makkelijk te onthouden kanaaladres (zoals een e-mailadres) aan te maken, die je dan kan delen met anderen."
-#: ../../mod/new_channel.php:114
+#: ../../mod/new_channel.php:116
msgid "Or <a href=\"import\">import an existing channel</a> from another location"
msgstr "Of <a href=\"import\">importeer een bestaand kanaal</a> vanaf een andere locatie."
-#: ../../mod/notifications.php:26
-msgid "Invalid request identifier."
-msgstr "Ongeldige aanvraag-identificator (request identifier)"
+#: ../../mod/new_channel.php:118
+msgid ""
+"Please choose a channel type (such as social networking or community forum) "
+"and privacy requirements so we can select the best permissions for you"
+msgstr "Kies een kanaaltype (bijv. een persoonlijk kanaal voor een sociaal netwerk of eentje voor een groepsforum) en jouw behoefte aan privacy, zodat wij voor jou de beste permissies kunnen kiezen."
-#: ../../mod/notifications.php:35
-msgid "Discard"
-msgstr "Annuleren"
+#: ../../mod/new_channel.php:119
+msgid "Channel Type"
+msgstr "Kanaaltype"
-#: ../../mod/notifications.php:94 ../../mod/notify.php:53
-msgid "No more system notifications."
-msgstr "Geen systeemnotificaties meer."
+#: ../../mod/new_channel.php:119
+msgid "Read more about roles"
+msgstr "Lees meer over kanaaltypes"
-#: ../../mod/notifications.php:98 ../../mod/notify.php:57
-msgid "System Notifications"
-msgstr "Systeemnotificaties"
+#: ../../mod/xchan.php:6
+msgid "Xchan Lookup"
+msgstr "Xchan opzoeken"
+
+#: ../../mod/xchan.php:9
+msgid "Lookup xchan beginning with (or webbie): "
+msgstr "Zoek een xchan (of webbie) die begint met:"
+
+#: ../../mod/zfinger.php:23
+msgid "invalid target signature"
+msgstr "ongeldig doelkenmerk"
+
+#: ../../mod/photos.php:77
+msgid "Page owner information could not be retrieved."
+msgstr "Informatie over de pagina-eigenaar werd niet ontvangen."
+
+#: ../../mod/photos.php:97
+msgid "Album not found."
+msgstr "Album niet gevonden."
+
+#: ../../mod/photos.php:119 ../../mod/photos.php:672
+msgid "Delete Album"
+msgstr "Verwijder album"
+
+#: ../../mod/photos.php:159 ../../mod/photos.php:955
+msgid "Delete Photo"
+msgstr "Verwijder foto"
+
+#: ../../mod/photos.php:469
+msgid "No photos selected"
+msgstr "Geen foto's geselecteerd"
+
+#: ../../mod/photos.php:513
+msgid "Access to this item is restricted."
+msgstr "Toegang tot dit item is beperkt."
+
+#: ../../mod/photos.php:552
+#, php-format
+msgid "%1$.2f MB of %2$.2f MB photo storage used."
+msgstr "%1$.2f MB van %2$.2f MB aan foto-opslag gebruikt."
+
+#: ../../mod/photos.php:555
+#, php-format
+msgid "%1$.2f MB photo storage used."
+msgstr "%1$.2f MB aan foto-opslag gebruikt."
+
+#: ../../mod/photos.php:579
+msgid "Upload Photos"
+msgstr "Foto's uploaden"
+
+#: ../../mod/photos.php:583 ../../mod/photos.php:665 ../../mod/photos.php:940
+msgid "Enter a new album name"
+msgstr "Vul een nieuwe albumnaam in"
+
+#: ../../mod/photos.php:584 ../../mod/photos.php:666 ../../mod/photos.php:941
+msgid "or select an existing one (doubleclick)"
+msgstr "of kies een bestaand album (dubbelklikken)"
+
+#: ../../mod/photos.php:585
+msgid "Do not show a status post for this upload"
+msgstr "Plaats geen bericht voor deze upload."
+
+#: ../../mod/photos.php:613
+msgid "Album name could not be decoded"
+msgstr "Albumnaam kon niet gedecodeerd worden"
+
+#: ../../mod/photos.php:654 ../../mod/photos.php:1164
+#: ../../mod/photos.php:1180
+msgid "Contact Photos"
+msgstr "Connectiefoto's"
+
+#: ../../mod/photos.php:678
+msgid "Show Newest First"
+msgstr "Nieuwste eerst weergeven"
+
+#: ../../mod/photos.php:680
+msgid "Show Oldest First"
+msgstr "Oudste eerst weergeven"
+
+#: ../../mod/photos.php:704 ../../mod/photos.php:1212
+msgid "View Photo"
+msgstr "Foto weergeven"
+
+#: ../../mod/photos.php:733
+msgid "Edit Album"
+msgstr "Album bewerken"
+
+#: ../../mod/photos.php:778
+msgid "Permission denied. Access to this item may be restricted."
+msgstr "Toegang geweigerd. Toegang tot dit item kan zijn beperkt."
+
+#: ../../mod/photos.php:780
+msgid "Photo not available"
+msgstr "Foto niet aanwezig"
+
+#: ../../mod/photos.php:838
+msgid "Use as profile photo"
+msgstr "Als profielfoto gebruiken"
+
+#: ../../mod/photos.php:845
+msgid "Private Photo"
+msgstr "Privéfoto"
+
+#: ../../mod/photos.php:860
+msgid "View Full Size"
+msgstr "Volledige grootte weergeven"
+
+#: ../../mod/photos.php:934
+msgid "Edit photo"
+msgstr "Foto bewerken"
+
+#: ../../mod/photos.php:936
+msgid "Rotate CW (right)"
+msgstr "Draai met de klok mee (naar rechts)"
+
+#: ../../mod/photos.php:937
+msgid "Rotate CCW (left)"
+msgstr "Draai tegen de klok in (naar links)"
+
+#: ../../mod/photos.php:944
+msgid "Caption"
+msgstr "Bijschrift"
+
+#: ../../mod/photos.php:946
+msgid "Add a Tag"
+msgstr "Tag toevoegen"
+
+#: ../../mod/photos.php:950
+msgid "Example: @bob, @Barbara_Jensen, @jim@example.com"
+msgstr "Voorbeeld: @bob, @Barbara_Jansen, @jan@voorbeeld.nl"
+
+#: ../../mod/photos.php:953
+msgid "Flag as adult in album view"
+msgstr "Markeer als voor volwassenen in albumweergave"
+
+#: ../../mod/photos.php:1130
+msgid "In This Photo:"
+msgstr "Op deze foto:"
+
+#: ../../mod/photos.php:1218
+msgid "View Album"
+msgstr "Album weergeven"
+
+#: ../../mod/photos.php:1241
+msgid "Recent Photos"
+msgstr "Recente foto's"
#: ../../mod/oexchange.php:23
msgid "Unable to find your hub."
@@ -7448,13 +7961,55 @@ msgstr "Niet in staat om je hub te vinden"
msgid "Post successful."
msgstr "Verzenden bericht geslaagd."
-#: ../../mod/zfinger.php:23
-msgid "invalid target signature"
-msgstr "ongeldig doel-kenmerk (target signature)"
+#: ../../mod/directory.php:201
+msgid "Gender: "
+msgstr "Geslacht:"
-#: ../../mod/openid.php:26
-msgid "OpenID protocol error. No ID returned."
-msgstr "OpenID-protocolfout. Geen ID terugontvangen."
+#: ../../mod/directory.php:203
+msgid "Status: "
+msgstr "Status: "
+
+#: ../../mod/directory.php:205
+msgid "Homepage: "
+msgstr "Homepage: "
+
+#: ../../mod/directory.php:208
+msgid "Hometown: "
+msgstr "Oorspronkelijk uit: "
+
+#: ../../mod/directory.php:210
+msgid "About: "
+msgstr "Over: "
+
+#: ../../mod/directory.php:265
+msgid "Public Forum:"
+msgstr "Openbaar forum:"
+
+#: ../../mod/directory.php:268
+msgid "Keywords: "
+msgstr "Trefwoorden: "
+
+#: ../../mod/directory.php:318
+msgid "Finding:"
+msgstr "Gezocht naar:"
+
+#: ../../mod/directory.php:323
+msgid "next page"
+msgstr "volgende pagina"
+
+#: ../../mod/directory.php:323
+msgid "previous page"
+msgstr "vorige pagina"
+
+#: ../../mod/directory.php:340
+msgid "No entries (some entries may be hidden)."
+msgstr "Niets gevonden (sommige kanalen kunnen verborgen zijn)."
+
+#: ../../mod/post.php:229
+msgid ""
+"Remote authentication blocked. You are logged into this site locally. Please"
+" logout and retry."
+msgstr "Authenticatie op afstand geblokkeerd. Je bent lokaal op deze hub ingelogd. Uitloggen en opnieuw proberen."
#: ../../mod/appman.php:28 ../../mod/appman.php:44
msgid "App installed."
@@ -7504,6 +8059,46 @@ msgstr "Prijs van de app"
msgid "Location (URL) to purchase app"
msgstr "Locatie (URL) om de app aan te schaffen"
+#: ../../mod/poll.php:64
+msgid "Poll"
+msgstr "Poll"
+
+#: ../../mod/poll.php:69
+msgid "View Results"
+msgstr "Bekijk resultaten"
+
+#: ../../mod/removeaccount.php:30
+msgid ""
+"Account removals are not allowed within 48 hours of changing the account "
+"password."
+msgstr "Het verwijderen van een account is niet toegestaan binnen 48 uur nadat het wachtwoord is veranderd."
+
+#: ../../mod/removeaccount.php:57
+msgid "Remove This Account"
+msgstr "Verwijder dit account"
+
+#: ../../mod/removeaccount.php:58
+msgid ""
+"This will completely remove this account including all its channels from the"
+" network. Once this has been done it is not recoverable."
+msgstr "Deze actie verwijderd dit account volledig, inclusief al zijn kanalen. Dit kan hierna op geen enkele manier ongedaan gemaakt worden."
+
+#: ../../mod/removeaccount.php:60
+msgid ""
+"Remove this account, all its channels and all its channel clones from the "
+"network"
+msgstr "Dit account, al zijn kanalen en alle klonen van zijn kanalen uit het RedMatrix-netwerk verwijderen"
+
+#: ../../mod/removeaccount.php:60
+msgid ""
+"By default only the instances of the channels located on this hub will be "
+"removed from the network"
+msgstr "Standaard worden alleen de kanalen die zich op deze hub bevinden uit het RedMatrix-netwerk verwijderd."
+
+#: ../../mod/service_limits.php:19
+msgid "No service class restrictions found."
+msgstr "Geen abonnementsbeperkingen gevonden."
+
#: ../../view/theme/apw/php/config.php:202
#: ../../view/theme/apw/php/config.php:236
msgid "Schema Default"
@@ -7518,8 +8113,6 @@ msgid "Monospace"
msgstr "Monospace"
#: ../../view/theme/apw/php/config.php:259
-#: ../../view/theme/blogga/php/config.php:69
-#: ../../view/theme/blogga/view/theme/blog/config.php:69
#: ../../view/theme/redbasic/php/config.php:102
msgid "Theme settings"
msgstr "Thema-instellingen"
@@ -7551,12 +8144,12 @@ msgid "Set small shadow size, default 5px 5px 5px"
msgstr "Een kleine schaduwgrootte instellen (standaard 5px 5px 5px)"
#: ../../view/theme/apw/php/config.php:266
-msgid "Set shadow colour, default #000"
+msgid "Set shadow color, default #000"
msgstr "Schaduwkleur instellen (standaard #000)"
#: ../../view/theme/apw/php/config.php:267
msgid "Set radius size, default 5px"
-msgstr "Radius instellen, standaard 5px"
+msgstr "Radius instellen (standaard 5px)"
#: ../../view/theme/apw/php/config.php:268
msgid "Set line-height for posts and comments"
@@ -7571,7 +8164,7 @@ msgid "Set background attachment"
msgstr "Gedrag achtergrondafbeelding instellen"
#: ../../view/theme/apw/php/config.php:271
-msgid "Set background colour"
+msgid "Set background color"
msgstr "Achtergrondkleur instellen"
#: ../../view/theme/apw/php/config.php:272
@@ -7579,15 +8172,15 @@ msgid "Set section background image"
msgstr "Achtergrondafbeelding van sectie instellen"
#: ../../view/theme/apw/php/config.php:273
-msgid "Set section background colour"
+msgid "Set section background color"
msgstr "Achtergrondkleur van sectie instellen"
#: ../../view/theme/apw/php/config.php:274
-msgid "Set colour of items - use hex"
+msgid "Set color of items - use hex"
msgstr "Tekstkleur van items instellen (gebruik hexadecimaal)"
#: ../../view/theme/apw/php/config.php:275
-msgid "Set colour of links - use hex"
+msgid "Set color of links - use hex"
msgstr "Kleur van links instellen (gebruik hexadecimaal)"
#: ../../view/theme/apw/php/config.php:276
@@ -7603,7 +8196,7 @@ msgid "Set the generic content wrapper width. Default 48%"
msgstr "Breedte van de generieke content-wrapper instellen (standaard 48%)"
#: ../../view/theme/apw/php/config.php:279
-msgid "Set colour of fonts - use hex"
+msgid "Set color of fonts - use hex"
msgstr "Tekstkleur instellen (gebruik hexadecimaal)"
#: ../../view/theme/apw/php/config.php:280
@@ -7644,77 +8237,62 @@ msgstr "Breedte van sectie"
#: ../../view/theme/apw/php/config.php:289
msgid "Left offset of the aside"
-msgstr "Linker offset van de zijbalk (aside)"
+msgstr "Rechter offset van aside (zijbalk)"
#: ../../view/theme/apw/php/config.php:290
msgid "Right offset of the aside element"
-msgstr "Rechter offset van de zijbalk (aside)"
-
-#: ../../view/theme/blogga/php/config.php:47
-#: ../../view/theme/blogga/view/theme/blog/config.php:47
-msgid "None"
-msgstr "Geen"
-
-#: ../../view/theme/blogga/php/config.php:70
-#: ../../view/theme/blogga/view/theme/blog/config.php:70
-msgid "Header image"
-msgstr "Header-afbeelding"
-
-#: ../../view/theme/blogga/php/config.php:71
-#: ../../view/theme/blogga/view/theme/blog/config.php:71
-msgid "Header image only on profile pages"
-msgstr "Header-afbeelding alleen op profielpagina's weergeven"
+msgstr "Rechter offset van het aside-element"
#: ../../view/theme/redbasic/php/config.php:84
msgid "Light (Red Matrix default)"
-msgstr "Light (Red Matrix-standaard)"
+msgstr "Light (RedMatrix-standaard)"
#: ../../view/theme/redbasic/php/config.php:104
msgid "Narrow navbar"
msgstr "Smalle navigatiebalk"
#: ../../view/theme/redbasic/php/config.php:105
-msgid "Navigation bar background colour"
+msgid "Navigation bar background color"
msgstr "Achtergrondkleur navigatiebalk"
#: ../../view/theme/redbasic/php/config.php:106
-msgid "Navigation bar gradient top colour"
+msgid "Navigation bar gradient top color"
msgstr "Bovenste gradiëntkleur navigatiebalk"
#: ../../view/theme/redbasic/php/config.php:107
-msgid "Navigation bar gradient bottom colour"
+msgid "Navigation bar gradient bottom color"
msgstr "Onderste gradiëntkleur navigatiebalk"
#: ../../view/theme/redbasic/php/config.php:108
-msgid "Navigation active button gradient top colour"
+msgid "Navigation active button gradient top color"
msgstr "Bovenste gradiëntkleur actieve knop navigatiebalk"
#: ../../view/theme/redbasic/php/config.php:109
-msgid "Navigation active button gradient bottom colour"
+msgid "Navigation active button gradient bottom color"
msgstr "Onderste gradiëntkleur actieve knop op navigatiebalk"
#: ../../view/theme/redbasic/php/config.php:110
-msgid "Navigation bar border colour "
+msgid "Navigation bar border color "
msgstr "Randkleur navigatiebalk "
#: ../../view/theme/redbasic/php/config.php:111
-msgid "Navigation bar icon colour "
+msgid "Navigation bar icon color "
msgstr "Pictogramkleur navigatiebalk"
#: ../../view/theme/redbasic/php/config.php:112
-msgid "Navigation bar active icon colour "
+msgid "Navigation bar active icon color "
msgstr "Actieve pictogramkleur navigatiebalk"
#: ../../view/theme/redbasic/php/config.php:113
-msgid "link colour"
+msgid "link color"
msgstr "Linkkleur instellen"
#: ../../view/theme/redbasic/php/config.php:114
-msgid "Set font-colour for banner"
+msgid "Set font-color for banner"
msgstr "Tekstkleur van banner instellen"
#: ../../view/theme/redbasic/php/config.php:115
-msgid "Set the background colour"
+msgid "Set the background color"
msgstr "Achtergrondkleur instellen"
#: ../../view/theme/redbasic/php/config.php:116
@@ -7722,15 +8300,15 @@ msgid "Set the background image"
msgstr "Achtergrondafbeelding instellen"
#: ../../view/theme/redbasic/php/config.php:117
-msgid "Set the background colour of items"
+msgid "Set the background color of items"
msgstr "Achtergrondkleur items instellen"
#: ../../view/theme/redbasic/php/config.php:118
-msgid "Set the background colour of comments"
+msgid "Set the background color of comments"
msgstr "Achtergrondkleur reacties instellen"
#: ../../view/theme/redbasic/php/config.php:119
-msgid "Set the border colour of comments"
+msgid "Set the border color of comments"
msgstr "Randkleur reacties instellen"
#: ../../view/theme/redbasic/php/config.php:120
@@ -7738,11 +8316,11 @@ msgid "Set the indent for comments"
msgstr "Inspringen reacties instellen"
#: ../../view/theme/redbasic/php/config.php:121
-msgid "Set the basic colour for item icons"
+msgid "Set the basic color for item icons"
msgstr "Basiskleur itempictogrammen instellen"
#: ../../view/theme/redbasic/php/config.php:122
-msgid "Set the hover colour for item icons"
+msgid "Set the hover color for item icons"
msgstr "Hoverkleur itempictogrammen instellen"
#: ../../view/theme/redbasic/php/config.php:123
@@ -7750,7 +8328,7 @@ msgid "Set font-size for the entire application"
msgstr "Tekstgrootte van de volledige applicatie instellen"
#: ../../view/theme/redbasic/php/config.php:125
-msgid "Set font-colour for posts and comments"
+msgid "Set font-color for posts and comments"
msgstr "Tekstkleur van berichten en reacties"
#: ../../view/theme/redbasic/php/config.php:126
@@ -7789,41 +8367,41 @@ msgstr "Rommelig vormgegeven fotoalbums"
msgid "Are you a clean desk or a messy desk person?"
msgstr "Ben je iemand die van een opgeruimd bureau houdt of van een rommelig bureau?"
-#: ../../boot.php:1275
+#: ../../boot.php:1347
#, php-format
msgid "Update %s failed. See error logs."
msgstr "Update %s mislukt. Zie foutenlogboek."
-#: ../../boot.php:1278
+#: ../../boot.php:1350
#, php-format
msgid "Update Error at %s"
msgstr "Update-fout op %s"
-#: ../../boot.php:1442
+#: ../../boot.php:1517
msgid ""
"Create an account to access services and applications within the Red Matrix"
-msgstr "Maak een account aan om toegang te krijgen tot diensten en toepassingen van de Red Matrix"
+msgstr "Maak een account aan om toegang te krijgen tot diensten en toepassingen van de RedMatrix"
-#: ../../boot.php:1470
+#: ../../boot.php:1545
msgid "Password"
msgstr "Wachtwoord"
-#: ../../boot.php:1471
+#: ../../boot.php:1546
msgid "Remember me"
msgstr "Aangemeld blijven"
-#: ../../boot.php:1476
+#: ../../boot.php:1549
msgid "Forgot your password?"
msgstr "Wachtwoord vergeten?"
-#: ../../boot.php:1541
+#: ../../boot.php:1630
msgid "permission denied"
msgstr "toegang geweigerd"
-#: ../../boot.php:1542
+#: ../../boot.php:1631
msgid "Got Zot?"
msgstr "Heb je Zot?"
-#: ../../boot.php:1972
+#: ../../boot.php:2114
msgid "toggle mobile"
msgstr "mobiele weergave omschakelen"
diff --git a/view/nl/passchanged_eml.tpl b/view/nl/passchanged_eml.tpl
index 0d94be3c2..bb4888e26 100644
--- a/view/nl/passchanged_eml.tpl
+++ b/view/nl/passchanged_eml.tpl
@@ -1,20 +1,20 @@
-Dear {{$username}},
- Your password has been changed as requested. Please retain this
-information for your records (or change your password immediately to
-something that you will remember).
+Beste {{$username}},
+ Jouw wachtwoord is op jouw verzoek opnieuw ingesteld. Bewaar deze
+informatie goed of verander het wachtwoord meteen nadat je bent ingelogd
+in iets wat jezelf makkelijker kan onthouden, maar door anderen niet geraden kan worden.
-Your login details are as follows:
+Jouw inloggegevens zijn als volgt:
-Site Location: {{$siteurl}}
-Login Name: {{$email}}
-Password: {{$new_password}}
+Hub-adres: {{$siteurl}}
+Inlognaam: {{$email}}
+Wachtwoord: {{$new_password}}
-You may change that password from your account settings page after logging in.
+Wij adviseren om dit wachtwoord te veranderen onder 'instellingen' nadat je bent ingelogd.
-Sincerely,
- {{$sitename}} Administrator
+Vriendelijke groet,
+ Beheerder {{$sitename}} ({{$siteurl}})
-
+ \ No newline at end of file
diff --git a/view/nl/register_open_eml.tpl b/view/nl/register_open_eml.tpl
index d6cf329d1..07e7beb76 100644
--- a/view/nl/register_open_eml.tpl
+++ b/view/nl/register_open_eml.tpl
@@ -1,36 +1,19 @@
-(English below)
-Er is met dit e-mailadres een account aangemaakt op {{$sitename}}.
+Er is met dit e-mailadres een account aangemaakt op {{$sitename}}.
De inloggegevens zijn als volgt:
-Hub: {{$siteurl}}
+Hub: {{$siteurl}}
Inlognaam: {{$email}}
-Wachtwoord: (het wachtwoord dat je tijdens de registratie hebt opgegeven)
+Wachtwoord: (het wachtwoord dat je tijdens de registratie hebt opgegeven)
-Wanneer dit account was aangemaakt zonder jouw medeweten en tevens niet gewenst, dan kan je {{$siteurl}} bezoeken en een nieuwe wachtwoord aanvragen. Je kan daarna inloggen en via 'instellingen > account' het kanaal verwijderen dat ten onrechte jouw e-mailadres gebruikt. Wanneer dat is voltooid, dan kan je een e-mail sturen naar de beheerder van deze hub om het account volledig te laten verwijderen. Zie voor de beheerder {{$siteurl}}/siteinfo .
+Wanneer dit account was aangemaakt zonder jouw medeweten en tevens niet gewenst, dan kan je {{$siteurl}}
+bezoeken en een nieuwe wachtwoord aanvragen. Je kan daarna inloggen, een kanaal aanmaken en
+meteen via 'instellingen > account' (linksboven) het account verwijderen (onderaan).
+Excuses voor het eventuele ongemak.
-Hoogachtend,
- Beheerder {{$sitename}}
+Wanneer dit account wel door jou is aangemaakt: Dank je en welkom op de {{sitename}}.
+Vriendelijke groet,
+ Beheerder {{sitename}} ({{$siteurl}})
------
-
-
-An account has been created at {{$sitename}} for this email address.
-The login details are as follows:
-
-Site Location: {{$siteurl}}
-Login: {{$email}}
-Password: (the password which was provided during registration)
-
-If this account was created without your knowledge and is not desired, you may
-visit this site and reset the password. This will allow you to remove the
-account from the links on the Settings page, and we
-apologise for any inconvenience.
-
-Thank you and welcome to {{$sitename}}.
-
-Sincerely,
- {{$sitename}} Administrator
-
-
+ \ No newline at end of file
diff --git a/view/nl/register_verify_eml.tpl b/view/nl/register_verify_eml.tpl
index 85d9a12d3..e4be9551a 100644
--- a/view/nl/register_verify_eml.tpl
+++ b/view/nl/register_verify_eml.tpl
@@ -1,25 +1,24 @@
-A new user registration request was received at {{$sitename}} which requires
-your approval.
+{{$sitename}} heeft een nieuwe accountregistratie ontvangen die jouw goedkeuring
+nodig heeft.
-The login details are as follows:
+De inloggegevens zijn als volgt:
-Site Location: {{$siteurl}}
-Login Name: {{$email}}
-IP Address: {{$details}}
+Hub: {{$siteurl}}
+Inlognaam: {{$email}}
+IP-adres:
-To approve this request please visit the following link:
+Om dit verzoek goed te keuren bezoek je de volgende link:
{{$siteurl}}/regmod/allow/{{$hash}}
-To deny the request and remove the account, please visit:
+Om dit verzoek af te keuren en het account te verwijderen bezoek je:
{{$siteurl}}/regmod/deny/{{$hash}}
-Thank you.
-
+Bedankt
diff --git a/view/nl/register_verify_member.tpl b/view/nl/register_verify_member.tpl
new file mode 100644
index 000000000..12afdd32d
--- /dev/null
+++ b/view/nl/register_verify_member.tpl
@@ -0,0 +1,24 @@
+
+Dank je voor je aanmelding op {{$sitename}}.
+
+Jouw inloggegevens zijn als volgt:
+
+Hub: {{$siteurl}}
+Inlognaam: {{$email}}
+
+Log in met het wachtwoord die je tijdens het registreren hebt gekozen.
+
+Wij dienen jouw e-mailadres te verifiëren om je volledig toegang te kunnen geven.
+
+Wanneer jij dit account hebt aangemaakt, bezoek dan de volgende link:
+
+{{$siteurl}}/regver/allow/{{$hash}}
+
+
+Om de registratie van dit account te annuleren en deze te verwijderen bezoek je:
+
+
+{{$siteurl}}/regver/deny/{{$hash}}
+
+
+Bedankt
diff --git a/view/nl/request_notify_eml.tpl b/view/nl/request_notify_eml.tpl
deleted file mode 100644
index d01b8ff27..000000000
--- a/view/nl/request_notify_eml.tpl
+++ /dev/null
@@ -1,17 +0,0 @@
-
-Dear {{$myname}},
-
-You have just received a connection request at {{$sitename}}
-
-from '{{$requestor}}'.
-
-You may visit their profile at {{$url}}.
-
-Please login to your site to view the complete introduction
-and approve or ignore/cancel the request.
-
-{{$siteurl}}
-
-Regards,
-
- {{$sitename}} administrator
diff --git a/view/nl/strings.php b/view/nl/strings.php
index 9fdd9e764..8632c2e2b 100644
--- a/view/nl/strings.php
+++ b/view/nl/strings.php
@@ -7,165 +7,106 @@ function string_plural_select_nl($n){
;
$a->strings["Cannot locate DNS info for database server '%s'"] = "Kan DNS-informatie voor databaseserver '%s' niet vinden";
$a->strings["Profile Photos"] = "Profielfoto's";
-$a->strings["Embedded content"] = "Ingesloten inhoud";
-$a->strings["Embedding disabled"] = "Insluiten uitgeschakeld";
+$a->strings["Permission denied"] = "Toegang geweigerd";
+$a->strings["(Unknown)"] = "(Onbekend)";
+$a->strings["Visible to anybody on the internet."] = "Voor iedereen op het internet zichtbaar.";
+$a->strings["Visible to you only."] = "Alleen voor jou zichtbaar.";
+$a->strings["Visible to anybody in this network."] = "Voor iedereen in dit netwerk zichtbaar.";
+$a->strings["Visible to anybody authenticated."] = "Voor iedereen die geauthenticeerd is zichtbaar.";
+$a->strings["Visible to anybody on %s."] = "Voor iedereen op %s zichtbaar.";
+$a->strings["Visible to all connections."] = "Voor alle connecties zichtbaar.";
+$a->strings["Visible to approved connections."] = "Voor alle goedgekeurde connecties zichtbaar.";
+$a->strings["Visible to specific connections."] = "Voor specifieke connecties zichtbaar.";
+$a->strings["Item not found."] = "Item niet gevonden.";
+$a->strings["Permission denied."] = "Toegang geweigerd";
+$a->strings["Collection not found."] = "Collectie niet gevonden.";
+$a->strings["Collection is empty."] = "Collectie is leeg";
+$a->strings["Collection: %s"] = "Collectie: %s";
+$a->strings["Connection: %s"] = "Connectie: %s";
+$a->strings["Connection not found."] = "Connectie niet gevonden.";
+$a->strings["Edit"] = "Bewerken";
+$a->strings["No recipient provided."] = "Geen ontvanger opgegeven.";
+$a->strings["[no subject]"] = "[geen onderwerp]";
+$a->strings["Unable to determine sender."] = "Afzender kan niet bepaald worden.";
+$a->strings["Stored post could not be verified."] = "Opgeslagen bericht kon niet worden geverifieerd.";
+$a->strings["view full size"] = "volledige grootte tonen";
+$a->strings["Can view my normal stream and posts"] = "Kan mijn normale kanaalstream en berichten bekijken";
+$a->strings["Can view my default channel profile"] = "Kan mijn standaard kanaalprofiel bekijken";
+$a->strings["Can view my photo albums"] = "Kan mijn fotoalbums bekijken";
+$a->strings["Can view my connections"] = "Kan een lijst met mijn connecties bekijken";
+$a->strings["Can view my file storage"] = "Kan mijn bestanden bekijken";
+$a->strings["Can view my webpages"] = "Kan mijn pagina's bekijken";
+$a->strings["Can send me their channel stream and posts"] = "Kan mij de inhoud van hun kanaal en berichten sturen";
+$a->strings["Can post on my channel page (\"wall\")"] = "Kan een bericht in mijn kanaal plaatsen";
+$a->strings["Can comment on or like my posts"] = "Kan op mijn berichten reageren of deze (niet) leuk vinden";
+$a->strings["Can send me private mail messages"] = "Kan mij privéberichten sturen";
+$a->strings["Can post photos to my photo albums"] = "Kan foto's aan mijn fotoalbums toevoegen";
+$a->strings["Can like/dislike stuff"] = "Kan dingen leuk of niet leuk vinden";
+$a->strings["Profiles and things other than posts/comments"] = "Profielen en dingen, buiten berichten en reacties";
+$a->strings["Can forward to all my channel contacts via post @mentions"] = "Kan naar al mijn kanaalconnecties berichten doorsturen met behulp van @vermeldingen+";
+$a->strings["Advanced - useful for creating group forum channels"] = "Geavanceerd - nuttig voor groepforums";
+$a->strings["Can chat with me (when available)"] = "Kan met mij chatten (wanneer beschikbaar)";
+$a->strings["Can write to my file storage"] = "Kan bestanden aan mijn bestandsopslag toevoegen";
+$a->strings["Can edit my webpages"] = "Kan mijn pagina's bewerken";
+$a->strings["Can source my public posts in derived channels"] = "Kan mijn openbare berichten als bron voor andere kanalen gebruiken";
+$a->strings["Somewhat advanced - very useful in open communities"] = "Enigszins geavanceerd (erg nuttig voor kanalen van forums/groepen)";
+$a->strings["Can administer my channel resources"] = "Kan mijn kanaal beheren";
+$a->strings["Extremely advanced. Leave this alone unless you know what you are doing"] = "Zeer geavanceerd. Laat dit met rust, behalve als je weet wat je doet.";
+$a->strings["Social Networking"] = "Sociaal netwerk";
+$a->strings["Mostly Public"] = "Vrijwel alles openbaar";
+$a->strings["Restricted"] = "Beperkt zichtbaar";
+$a->strings["Private"] = "Verborgen kanaal";
+$a->strings["Community Forum"] = "Groepsforum";
+$a->strings["Feed Republish"] = "Feed herpubliceren";
+$a->strings["Special Purpose"] = "Speciaal doel";
+$a->strings["Celebrity/Soapbox"] = "Beroemdheid/alleen volgen";
+$a->strings["Group Repository"] = "Groepsopslag";
+$a->strings["Other"] = "Anders";
+$a->strings["Custom/Expert Mode"] = "Expertmodus/handmatig aanpassen";
$a->strings["created a new post"] = "maakte een nieuw bericht aan";
$a->strings["commented on %s's post"] = "gaf een reactie op een bericht van %s";
-$a->strings["photo"] = "foto";
-$a->strings["event"] = "gebeurtenis";
-$a->strings["channel"] = "kanaal";
-$a->strings["status"] = "status";
-$a->strings["comment"] = "reactie";
-$a->strings["%1\$s likes %2\$s's %3\$s"] = "%1\$s vindt %3\$s van %2\$s leuk";
-$a->strings["%1\$s doesn't like %2\$s's %3\$s"] = "%1\$s vindt %3\$s van %2\$s niet leuk";
-$a->strings["%1\$s is now connected with %2\$s"] = "%1\$s is nu met %2\$s verbonden";
-$a->strings["%1\$s poked %2\$s"] = "%1\$s heeft %2\$s aangestoten";
-$a->strings["poked"] = "aangestoten";
-$a->strings["__ctx:mood__ %1\$s is %2\$s"] = "%1\$s is %2\$s";
-$a->strings["Select"] = "Kies";
-$a->strings["Delete"] = "Verwijderen";
-$a->strings["Private Message"] = "Privébericht";
-$a->strings["Message is verified"] = "Bericht is geverifieerd";
-$a->strings["View %s's profile @ %s"] = "Bekijk het profiel van %s @ %s";
-$a->strings["Categories:"] = "Categorieën:";
-$a->strings["Filed under:"] = "Bewaard onder:";
-$a->strings[" from %s"] = " van %s";
-$a->strings["last edited: %s"] = "laatst bewerkt: %s";
-$a->strings["Expires: %s"] = "Verloopt: %s";
-$a->strings["View in context"] = "In context bekijken";
-$a->strings["Please wait"] = "Even wachten";
-$a->strings["remove"] = "verwijderen";
-$a->strings["Loading..."] = "Aan het laden...";
-$a->strings["Delete Selected Items"] = "Verwijder de geselecteerde items";
-$a->strings["View Source"] = "Bron weergeven";
-$a->strings["Follow Thread"] = "Conversatie volgen";
-$a->strings["View Status"] = "Status weergeven";
-$a->strings["View Profile"] = "Profiel weergeven";
-$a->strings["View Photos"] = "Foto's weergeven";
-$a->strings["Matrix Activity"] = "Activiteit in de matrix";
-$a->strings["Edit Contact"] = "Contact bewerken";
-$a->strings["Send PM"] = "Privébericht verzenden";
-$a->strings["Poke"] = "Aanstoten";
-$a->strings["%s likes this."] = "%s vindt dit leuk.";
-$a->strings["%s doesn't like this."] = "%s vindt dit niet leuk.";
-$a->strings["<span %1\$s>%2\$d people</span> like this."] = array(
- 0 => "<span %1\$s>%2\$d persoon</span> vindt dit leuk.",
- 1 => "<span %1\$s>%2\$d personen</span> vinden dit leuk.",
-);
-$a->strings["<span %1\$s>%2\$d people</span> don't like this."] = array(
- 0 => "<span %1\$s>%2\$d persoon</span> vindt dit niet leuk.",
- 1 => "<span %1\$s>%2\$d personen</span> vinden dit niet leuk.",
-);
-$a->strings["and"] = "en";
-$a->strings[", and %d other people"] = array(
- 0 => ", en %d ander persoon",
- 1 => ", en %d andere personen",
+$a->strings["Tags"] = "Tags";
+$a->strings["Categories"] = "Categorieën";
+$a->strings["Keywords"] = "Trefwoorden";
+$a->strings["have"] = "heb";
+$a->strings["has"] = "heeft";
+$a->strings["want"] = "wil";
+$a->strings["wants"] = "wil";
+$a->strings["like"] = "vind dit leuk";
+$a->strings["likes"] = "vindt dit leuk";
+$a->strings["dislike"] = "vind dit niet leuk";
+$a->strings["dislikes"] = "vindt dit niet leuk";
+$a->strings["__ctx:noun__ Like"] = array(
+ 0 => "vindt dit leuk",
+ 1 => "vinden dit leuk",
);
-$a->strings["%s like this."] = "%s vinden dit leuk.";
-$a->strings["%s don't like this."] = "%s vinden dit niet leuk.";
-$a->strings["Visible to <strong>everybody</strong>"] = "Voor <strong>iedereen</strong> zichtbaar";
-$a->strings["Please enter a link URL:"] = "Vul een internetadres/URL in:";
-$a->strings["Please enter a video link/URL:"] = "Vul een videolink/URL in:";
-$a->strings["Please enter an audio link/URL:"] = "Vul een audiolink/URL in:";
-$a->strings["Tag term:"] = "Label:";
-$a->strings["Save to Folder:"] = "Bewaar in map: ";
-$a->strings["Where are you right now?"] = "Waar bevind je je op dit moment?";
-$a->strings["Expires YYYY-MM-DD HH:MM"] = "Verloopt op DD-MM-YYYY om HH:MM";
-$a->strings["Preview"] = "Voorvertoning";
-$a->strings["Share"] = "Delen";
-$a->strings["Page link title"] = "Titel van paginalink";
-$a->strings["Post as"] = "Bericht plaatsen als";
-$a->strings["Upload photo"] = "Foto uploaden";
-$a->strings["upload photo"] = "foto uploaden";
-$a->strings["Attach file"] = "Bestand toevoegen";
-$a->strings["attach file"] = "bestand toevoegen";
-$a->strings["Insert web link"] = "Weblink invoegen";
-$a->strings["web link"] = "Weblink";
-$a->strings["Insert video link"] = "Videolink invoegen";
-$a->strings["video link"] = "videolink";
-$a->strings["Insert audio link"] = "Audiolink invoegen";
-$a->strings["audio link"] = "audiolink";
-$a->strings["Set your location"] = "Locatie instellen";
-$a->strings["set location"] = "locatie instellen";
-$a->strings["Clear browser location"] = "Locatie van webbrowser wissen";
-$a->strings["clear location"] = "locatie wissen";
-$a->strings["Set title"] = "Titel instellen";
-$a->strings["Categories (comma-separated list)"] = "Categorieën (door komma's gescheiden lijst)";
-$a->strings["Permission settings"] = "Privacy-rechten";
-$a->strings["permissions"] = "privacy-rechten";
-$a->strings["Public post"] = "Openbaar bericht";
-$a->strings["Example: bob@example.com, mary@example.com"] = "Voorbeeld: bob@voorbeeld.nl, mary@voorbeeld.be";
-$a->strings["Set expiration date"] = "Verloopdatum instellen";
-$a->strings["Encrypt text"] = "Tekst versleutelen";
-$a->strings["OK"] = "OK";
-$a->strings["Cancel"] = "Annuleren";
-$a->strings["Discover"] = "Ontdekken";
-$a->strings["Imported public streams"] = "Openbare streams importeren";
-$a->strings["Commented Order"] = "Nieuwe reacties bovenaan";
-$a->strings["Sort by Comment Date"] = "Berichten met nieuwe reacties bovenaan";
-$a->strings["Posted Order"] = "Nieuwe berichten bovenaan";
-$a->strings["Sort by Post Date"] = "Nieuwe berichten bovenaan";
-$a->strings["Personal"] = "Persoonlijk";
-$a->strings["Posts that mention or involve you"] = "Alleen berichten die jou vermelden of waar je op een andere manier bij betrokken bent";
-$a->strings["New"] = "Nieuw";
-$a->strings["Activity Stream - by date"] = "Activiteitenstroom - volgens datum";
-$a->strings["Starred"] = "Met ster";
-$a->strings["Favourite Posts"] = "Favoriete berichten";
-$a->strings["Spam"] = "Spam";
-$a->strings["Posts flagged as SPAM"] = "Berichten gemarkeerd als SPAM";
-$a->strings["Channel"] = "Kanaal";
-$a->strings["Status Messages and Posts"] = "Berichten in dit kanaal";
-$a->strings["About"] = "Over";
-$a->strings["Profile Details"] = "Profiel";
-$a->strings["Photos"] = "Foto's";
-$a->strings["Photo Albums"] = "Fotoalbums";
-$a->strings["Files"] = "Bestanden";
-$a->strings["Files and Storage"] = "Bestanden en opslagruimte";
-$a->strings["Chatrooms"] = "Chatkanalen";
-$a->strings["Bookmarks"] = "Bladwijzers";
-$a->strings["Saved Bookmarks"] = "Opgeslagen bladwijzers";
-$a->strings["Webpages"] = "Webpagina's";
-$a->strings["Manage Webpages"] = "Webpagina's beheren";
$a->strings["New Page"] = "Nieuwe pagina";
-$a->strings["Edit"] = "Bewerken";
$a->strings["View"] = "Weergeven";
+$a->strings["Preview"] = "Voorvertoning";
$a->strings["Actions"] = "Acties";
$a->strings["Page Link"] = "Paginalink";
$a->strings["Title"] = "Titel";
$a->strings["Created"] = "Aangemaakt";
$a->strings["Edited"] = "Bewerkt";
-$a->strings["The form security token was not correct. This probably happened because the form has been opened for too long (>3 hours) before submitting it."] = "De beveiligings-token van het tekstvak was ongeldig. Dit is mogelijk het gevolg van dat er te lang (meer dan 3 uur) gewacht is om de tekst op te slaan. ";
-$a->strings["Not a valid email address"] = "Geen geldig e-mailadres";
-$a->strings["Your email domain is not among those allowed on this site"] = "Jouw e-maildomein is op deze Red Matrix-hub niet toegestaan";
-$a->strings["Your email address is already registered at this site."] = "Jouw e-mailadres is al op deze Red Matrix-hub geregistreerd .";
-$a->strings["An invitation is required."] = "Een uitnodiging is vereist";
-$a->strings["Invitation could not be verified."] = "Uitnodiging kon niet geverifieerd worden";
-$a->strings["Please enter the required information."] = "Vul de vereiste informatie in.";
-$a->strings["Failed to store account information."] = "Account-informatie kon niet opgeslagen worden.";
-$a->strings["Registration confirmation for %s"] = "Registratiebevestiging voor %s";
-$a->strings["Registration request at %s"] = "Registratieverzoek op %s";
-$a->strings["Administrator"] = "Beheerder";
-$a->strings["your registration password"] = "jouw registratiewachtwoord";
-$a->strings["Registration details for %s"] = "Registratiedetails voor %s";
-$a->strings["Account approved."] = "Account goedgekeurd";
-$a->strings["Registration revoked for %s"] = "Registratie ingetrokken voor %s";
-$a->strings["Permission denied."] = "Toegang geweigerd";
+$a->strings["Embedded content"] = "Ingesloten inhoud";
+$a->strings["Embedding disabled"] = "Insluiten uitgeschakeld";
$a->strings["Image exceeds website size limit of %lu bytes"] = "Afbeelding is groter dan op deze hub toegestane limiet van %lu bytes";
$a->strings["Image file is empty."] = "Afbeeldingsbestand is leeg";
$a->strings["Unable to process image"] = "Afbeelding kan niet verwerkt worden";
$a->strings["Photo storage failed."] = "Foto kan niet worden opgeslagen";
+$a->strings["Photo Albums"] = "Fotoalbums";
$a->strings["Upload New Photos"] = "Nieuwe foto's uploaden";
-$a->strings["Visible to everybody"] = "Voor iedereen zichtbaar";
-$a->strings["Show"] = "Tonen";
-$a->strings["Don't show"] = "Niet tonen";
-$a->strings["Permissions"] = "Privacy-rechten";
-$a->strings["Close"] = "Sluiten";
$a->strings[" and "] = " en ";
$a->strings["public profile"] = "openbaar profiel";
$a->strings["%1\$s changed %2\$s to &ldquo;%3\$s&rdquo;"] = "%1\$s veranderde %2\$s naar &ldquo;%3\$s&rdquo;";
$a->strings["Visit %1\$s's %2\$s"] = "Bezoek het %2\$s van %1\$s";
$a->strings["%1\$s has an updated %2\$s, changing %3\$s."] = "%1\$s heeft een aangepaste %2\$s, %3\$s veranderd.";
-$a->strings["Public Timeline"] = "Openbare tijdlijn";
+$a->strings["Attachments:"] = "Bijlagen:";
+$a->strings["l F d, Y \\@ g:i A"] = "l d F Y \\@ G:i";
+$a->strings["Redmatrix event notification:"] = "Notificatie RedMatrix-gebeurtenis:";
+$a->strings["Starts:"] = "Start:";
+$a->strings["Finishes:"] = "Einde:";
+$a->strings["Location:"] = "Plaats:";
$a->strings["Item was not found."] = "Item niet gevonden";
$a->strings["No source file."] = "Geen bronbestand.";
$a->strings["Cannot locate file to replace"] = "Kan het te vervangen bestand niet vinden";
@@ -180,237 +121,23 @@ $a->strings["duplicate filename or path"] = "dubbele bestandsnaam of pad";
$a->strings["Path not found."] = "Pad niet gevonden";
$a->strings["mkdir failed."] = "directory aanmaken (mkdir) mislukt.";
$a->strings["database storage failed."] = "opslag in database mislukt.";
-$a->strings["Click here to upgrade."] = "Klik hier om te upgraden.";
-$a->strings["This action exceeds the limits set by your subscription plan."] = "Deze handeling overschrijdt de beperkingen die voor jouw abonnement gelden.";
-$a->strings["This action is not available under your subscription plan."] = "Deze handeling is niet mogelijk met jouw abonnement.";
-$a->strings["l F d, Y \\@ g:i A"] = "l d F Y \\@ G:i";
-$a->strings["Starts:"] = "Start:";
-$a->strings["Finishes:"] = "Einde:";
-$a->strings["Location:"] = "Plaats:";
-$a->strings["Logout"] = "Uitloggen";
-$a->strings["End this session"] = "Beëindig deze sessie";
-$a->strings["Home"] = "Home";
-$a->strings["Your posts and conversations"] = "Jouw berichten en conversaties";
-$a->strings["Your profile page"] = "Jouw profielpagina";
-$a->strings["Edit Profiles"] = "Bewerk profielen";
-$a->strings["Manage/Edit profiles"] = "Beheer/wijzig profielen";
-$a->strings["Your photos"] = "Jouw foto's";
-$a->strings["Your files"] = "Jouw bestanden";
-$a->strings["Chat"] = "Chatten";
-$a->strings["Your chatrooms"] = "Jouw chatkanalen";
-$a->strings["Your bookmarks"] = "Jouw bladwijzers";
-$a->strings["Your webpages"] = "Jouw webpagina's";
-$a->strings["Login"] = "Inloggen";
-$a->strings["Sign in"] = "Inloggen";
-$a->strings["%s - click to logout"] = "%s - klik om uit te loggen";
-$a->strings["Click to authenticate to your home hub"] = "Klik om jezelf te authenticeren via jouw eigen Red Matrix-hub";
-$a->strings["Home Page"] = "Homepage";
-$a->strings["Register"] = "Registreren ";
-$a->strings["Create an account"] = "Maak een account aan";
-$a->strings["Help"] = "Hulp";
-$a->strings["Help and documentation"] = "Hulp en documentatie";
-$a->strings["Apps"] = "Apps";
-$a->strings["Applications, utilities, links, games"] = "Apps";
-$a->strings["Search"] = "Zoeken";
-$a->strings["Search site content"] = "Inhoud van deze Red Matrix-hub doorzoeken";
-$a->strings["Directory"] = "Gids";
-$a->strings["Channel Locator"] = "Kanalengids";
-$a->strings["Matrix"] = "Matrix";
-$a->strings["Your matrix"] = "Jouw matrix";
-$a->strings["Mark all matrix notifications seen"] = "Markeer alle matrixnotificaties als bekeken";
-$a->strings["Channel Home"] = "Tijdlijn kanaal";
-$a->strings["Channel home"] = "Tijdlijn kanaal";
-$a->strings["Mark all channel notifications seen"] = "Alle kanaalnotificaties als gelezen markeren";
-$a->strings["Connections"] = "Connecties";
-$a->strings["Notices"] = "Notificaties";
-$a->strings["Notifications"] = "Notificaties";
-$a->strings["See all notifications"] = "Alle notificaties weergeven";
-$a->strings["Mark all system notifications seen"] = "Markeer alle systeemnotificaties als bekeken";
-$a->strings["Mail"] = "Privéberichten";
-$a->strings["Private mail"] = "Privéberichten";
-$a->strings["See all private messages"] = "Alle privéberichten weergeven";
-$a->strings["Mark all private messages seen"] = "Markeer alle privéberichten als bekeken";
-$a->strings["Inbox"] = "Postvak IN";
-$a->strings["Outbox"] = "Postvak UIT";
-$a->strings["New Message"] = "Nieuw bericht";
-$a->strings["Events"] = "Gebeurtenissen";
-$a->strings["Event Calendar"] = "Agenda";
-$a->strings["See all events"] = "Alle gebeurtenissen weergeven";
-$a->strings["Mark all events seen"] = "Markeer alle gebeurtenissen als bekeken";
-$a->strings["Channel Select"] = "Kanaalkiezer";
-$a->strings["Manage Your Channels"] = "Beheer je kanalen";
-$a->strings["Settings"] = "Instellingen";
-$a->strings["Account/Channel Settings"] = "Account-/kanaal-instellingen";
-$a->strings["Admin"] = "Beheer";
-$a->strings["Site Setup and Configuration"] = "Hub instellen en beheren";
-$a->strings["Nothing new here"] = "Niets nieuw hier";
-$a->strings["Please wait..."] = "Wachten aub...";
-$a->strings["%1\$s's bookmarks"] = "Bladwijzers van %1\$s";
-$a->strings["Missing room name"] = "Naam chatkanaal ontbreekt";
-$a->strings["Duplicate room name"] = "Naam chatkanaal bestaat al";
-$a->strings["Invalid room specifier."] = "Ongeldige omschrijving chatkanaal";
-$a->strings["Room not found."] = "Chatkanaal niet gevonden";
-$a->strings["Room is full"] = "Chatkanaal is vol";
-$a->strings["Tags"] = "Labels";
-$a->strings["Keywords"] = "Trefwoorden";
-$a->strings["have"] = "heb";
-$a->strings["has"] = "heeft";
-$a->strings["want"] = "wil";
-$a->strings["wants"] = "wil";
-$a->strings["like"] = "vind dit leuk";
-$a->strings["likes"] = "vindt dit leuk";
-$a->strings["dislike"] = "vind dit niet leuk";
-$a->strings["dislikes"] = "vindt dit niet leuk";
-$a->strings["__ctx:noun__ Like"] = array(
- 0 => "vindt dit leuk",
- 1 => "vinden dit leuk",
-);
-$a->strings["Default"] = "Standaard";
-$a->strings["Unknown | Not categorised"] = "Onbekend | Niet gecategoriseerd";
-$a->strings["Block immediately"] = "Onmiddellijk blokkeren";
-$a->strings["Shady, spammer, self-marketer"] = "Onbetrouwbaar, spammer, zelfpromotor";
-$a->strings["Known to me, but no opinion"] = "Mij bekend, maar geen mening";
-$a->strings["OK, probably harmless"] = "OK, vermoedelijk onschadelijk";
-$a->strings["Reputable, has my trust"] = "Fatsoenlijk, heeft mijn vertrouwen";
-$a->strings["Frequently"] = "Regelmatig";
-$a->strings["Hourly"] = "Elk uur";
-$a->strings["Twice daily"] = "Twee keer per dag";
-$a->strings["Daily"] = "Dagelijks";
-$a->strings["Weekly"] = "Wekelijks";
-$a->strings["Monthly"] = "Maandelijks";
-$a->strings["Friendica"] = "Friendica";
-$a->strings["OStatus"] = "OStatus";
-$a->strings["RSS/Atom"] = "RSS/Atom";
-$a->strings["Email"] = "E-mail";
-$a->strings["Diaspora"] = "Diaspora";
-$a->strings["Facebook"] = "Facebook";
-$a->strings["Zot!"] = "Zot!";
-$a->strings["LinkedIn"] = "LinkedIn";
-$a->strings["XMPP/IM"] = "XMPP/IM";
-$a->strings["MySpace"] = "MySpace";
-$a->strings["%d invitation available"] = array(
- 0 => "%d uitnodiging beschikbaar",
- 1 => "%d uitnodigingen beschikbaar",
-);
-$a->strings["Advanced"] = "Geavanceerd";
-$a->strings["Find Channels"] = "Kanalen vinden";
-$a->strings["Enter name or interest"] = "Vul naam of interesse in";
-$a->strings["Connect/Follow"] = "Verbinden/volgen";
-$a->strings["Examples: Robert Morgenstein, Fishing"] = "Voorbeeld: Robert Morgenstein, vissen";
-$a->strings["Find"] = "Vinden";
-$a->strings["Channel Suggestions"] = "Voorgestelde kanalen";
-$a->strings["Random Profile"] = "Willekeurig profiel";
-$a->strings["Invite Friends"] = "Vrienden uitnodigen";
-$a->strings["Exammple: name=fred and country=iceland"] = "Voorbeeld: (voor naam) name=herman en (voor land) country=nederland";
-$a->strings["Advanced Find"] = "Geavanceerd zoeken";
-$a->strings["Saved Folders"] = "Bewaarde mappen";
-$a->strings["Everything"] = "Alles";
-$a->strings["Categories"] = "Categorieën";
-$a->strings["%d connection in common"] = array(
- 0 => "%d gemeenschappelijke connectie",
- 1 => "%d gemeenschappelijke connecties",
-);
-$a->strings["show more"] = "meer connecties weergeven";
-$a->strings["This event has been added to your calendar."] = "Dit evenement is aan jouw agenda toegevoegd.";
-$a->strings["Invalid data packet"] = "Datapakket ongeldig";
-$a->strings["Unable to verify channel signature"] = "Kanaal-kenmerk (channel signature) kon niet worden geverifieerd. ";
-$a->strings["Unable to verify site signature for %s"] = "Hub-kenmerk (site signature) voor %s kon niet worden geverifieerd";
-$a->strings["Miscellaneous"] = "Diversen";
-$a->strings["year"] = "jaar";
-$a->strings["month"] = "maand";
-$a->strings["day"] = "dag";
-$a->strings["never"] = "nooit";
-$a->strings["less than a second ago"] = "minder dan een seconde geleden";
-$a->strings["years"] = "jaren";
-$a->strings["months"] = "maanden";
-$a->strings["week"] = "week";
-$a->strings["weeks"] = "weken";
-$a->strings["days"] = "dagen";
-$a->strings["hour"] = "uur";
-$a->strings["hours"] = "uren";
-$a->strings["minute"] = "minuut";
-$a->strings["minutes"] = "minuten";
-$a->strings["second"] = "seconde";
-$a->strings["seconds"] = "seconden";
-$a->strings["%1\$d %2\$s ago"] = "%1\$d %2\$s geleden";
-$a->strings["%1\$s's birthday"] = "Verjaardag van %1\$s";
-$a->strings["Happy Birthday %1\$s"] = "Gefeliciteerd met je verjaardag %1\$s";
-$a->strings["Sort Options"] = "Sorteeropties";
-$a->strings["Alphabetic"] = "Alfabetisch";
-$a->strings["Reverse Alphabetic"] = "Omgekeerd alfabetisch";
-$a->strings["Newest to Oldest"] = "Nieuw naar oud";
-$a->strings["Enable Safe Search"] = "Veilig zoeken inschakelen";
-$a->strings["Disable Safe Search"] = "Veilig zoeken uitschakelen";
-$a->strings["Safe Mode"] = "Veilig zoeken";
-$a->strings["Red Matrix Notification"] = "Red Matrix-notificatie";
-$a->strings["redmatrix"] = "redmatrix";
-$a->strings["Thank You,"] = "Bedankt,";
-$a->strings["%s Administrator"] = "%s beheerder";
-$a->strings["%s <!item_type!>"] = "%s <!item_type!>";
-$a->strings["[Red:Notify] New mail received at %s"] = "[Red:Notificatie] Nieuw privébericht ontvangen op %s";
-$a->strings["%1\$s, %2\$s sent you a new private message at %3\$s."] = "%1\$s, %2\$s zond jou een nieuw privébericht om %3\$s.";
-$a->strings["%1\$s sent you %2\$s."] = "%1\$s zond jou %2\$s.";
-$a->strings["a private message"] = "een privébericht";
-$a->strings["Please visit %s to view and/or reply to your private messages."] = "Bezoek %s om je privéberichten te bekijken en/of er op te reageren.";
-$a->strings["%1\$s, %2\$s commented on [zrl=%3\$s]a %4\$s[/zrl]"] = "%1\$s, %2\$s gaf een reactie op [zrl=%3\$s]een %4\$s[/zrl]";
-$a->strings["%1\$s, %2\$s commented on [zrl=%3\$s]%4\$s's %5\$s[/zrl]"] = "%1\$s, %2\$s gaf een reactie op [zrl=%3\$s]een %5\$s van %4\$s[/zrl]";
-$a->strings["%1\$s, %2\$s commented on [zrl=%3\$s]your %4\$s[/zrl]"] = "%1\$s, %2\$s gaf een reactie op [zrl=%3\$s]jouw %4\$s[/zrl]";
-$a->strings["[Red:Notify] Comment to conversation #%1\$d by %2\$s"] = "[Red:Notificatie] Reactie op conversatie #%1\$d door %2\$s";
-$a->strings["%1\$s, %2\$s commented on an item/conversation you have been following."] = "%1\$s, %2\$s gaf een reactie op een bericht/conversatie die jij volgt.";
-$a->strings["Please visit %s to view and/or reply to the conversation."] = "Bezoek %s om de conversatie te bekijken en/of er op te reageren.";
-$a->strings["[Red:Notify] %s posted to your profile wall"] = "[Red:Notificatie] %s heeft een bericht op jouw kanaal geplaatst";
-$a->strings["%1\$s, %2\$s posted to your profile wall at %3\$s"] = "%1\$s, %2\$s heeft om %3\$s een bericht op jouw kanaal geplaatst";
-$a->strings["%1\$s, %2\$s posted to [zrl=%3\$s]your wall[/zrl]"] = "%1\$s, %2\$s heeft een bericht op [zrl=%3\$s]jouw kanaal[/zrl] geplaatst";
-$a->strings["[Red:Notify] %s tagged you"] = "[Red:Notificatie] %s heeft je genoemd";
-$a->strings["%1\$s, %2\$s tagged you at %3\$s"] = "%1\$s, %2\$s noemde jou om %3\$s";
-$a->strings["%1\$s, %2\$s [zrl=%3\$s]tagged you[/zrl]."] = "%1\$s, %2\$s [zrl=%3\$s]noemde jou[/zrl].";
-$a->strings["[Red:Notify] %1\$s poked you"] = "[Red:Notificatie] %1\$s heeft je aangestoten";
-$a->strings["%1\$s, %2\$s poked you at %3\$s"] = "%1\$s, %2\$s heeft je aangestoten op %3\$s";
-$a->strings["%1\$s, %2\$s [zrl=%2\$s]poked you[/zrl]."] = "%1\$s, %2\$s [zrl=%2\$s]heeft je aangestoten[/zrl].";
-$a->strings["[Red:Notify] %s tagged your post"] = "[Red:Notificatie] %s heeft jouw bericht gelabeld";
-$a->strings["%1\$s, %2\$s tagged your post at %3\$s"] = "%1\$s, %2\$s labelde jouw bericht om %3\$s";
-$a->strings["%1\$s, %2\$s tagged [zrl=%3\$s]your post[/zrl]"] = "%1\$s, %2\$s labelde [zrl=%3\$s]jouw bericht[/zrl]";
-$a->strings["[Red:Notify] Introduction received"] = "[Red:Notificatie] Connectieverzoek ontvangen";
-$a->strings["%1\$s, you've received an new connection request from '%2\$s' at %3\$s"] = "%1\$s, je hebt een nieuw connectieverzoek ontvangen van '%2\$s' op %3\$s";
-$a->strings["%1\$s, you've received [zrl=%2\$s]a new connection request[/zrl] from %3\$s."] = "%1\$s, je hebt een [zrl=%2\$s]nieuw connectieverzoek[/zrl] ontvangen van %3\$s.";
-$a->strings["You may visit their profile at %s"] = "Je kan het profiel bekijken op %s";
-$a->strings["Please visit %s to approve or reject the connection request."] = "Bezoek %s om het connectieverzoek te accepteren of af te wijzen.";
-$a->strings["[Red:Notify] Friend suggestion received"] = "[Red:Notificatie] Kanaalvoorstel ontvangen";
-$a->strings["%1\$s, you've received a friend suggestion from '%2\$s' at %3\$s"] = "%1\$s, je hebt een kanaalvoorstel ontvangen van '%2\$s' om %3\$s";
-$a->strings["%1\$s, you've received [zrl=%2\$s]a friend suggestion[/zrl] for %3\$s from %4\$s."] = "%1\$s, je hebt [zrl=%2\$s]een kanaalvoorstel[/zrl] ontvangen voor %3\$s van %4\$s.";
-$a->strings["Name:"] = "Naam:";
-$a->strings["Photo:"] = "Foto:";
-$a->strings["Please visit %s to approve or reject the suggestion."] = "Bezoek %s om het voorstel te accepteren of af te wijzen.";
-$a->strings["parent"] = "omhoog";
-$a->strings["Collection"] = "map";
-$a->strings["Principal"] = "principal";
-$a->strings["Addressbook"] = "Adresboek";
-$a->strings["Calendar"] = "Agenda";
-$a->strings["Schedule Inbox"] = "Planning-postvak IN";
-$a->strings["Schedule Outbox"] = "Planning-postvak UIT";
-$a->strings["Unknown"] = "Onbekend";
-$a->strings["%1\$s used"] = "%1\$s gebruikt";
-$a->strings["%1\$s used of %2\$s (%3\$s&#37;)"] = "%1\$s van %2\$s gebruikt (%3\$s&#37;)";
-$a->strings["Name"] = "Naam";
-$a->strings["Type"] = "Type";
-$a->strings["Size"] = "Grootte";
-$a->strings["Last Modified"] = "Laatst gewijzigd";
-$a->strings["Total"] = "Totaal";
-$a->strings["Create new folder"] = "Nieuwe map aanmaken";
-$a->strings["Create"] = "Aanmaken";
-$a->strings["Upload file"] = "Bestand uploaden";
-$a->strings["Upload"] = "Uploaden";
$a->strings["General Features"] = "Algemene functies";
$a->strings["Content Expiration"] = "Inhoud laten verlopen";
$a->strings["Remove posts/comments and/or private messages at a future time"] = "Berichten, reacties en/of privéberichten na een bepaalde tijd verwijderen";
$a->strings["Multiple Profiles"] = "Meerdere profielen";
$a->strings["Ability to create multiple profiles"] = "Mogelijkheid om meerdere profielen aan te maken";
+$a->strings["Advanced Profiles"] = "Geavanceerde profielen";
+$a->strings["Additional profile sections and selections"] = "Extra onderdelen en keuzes voor je profiel";
+$a->strings["Profile Import/Export"] = "Profiel importen/exporteren";
+$a->strings["Save and load profile details across sites/channels"] = "Profielgegevens opslaan en in andere hubs/kanalen gebruiken.";
$a->strings["Web Pages"] = "Webpagina's";
$a->strings["Provide managed web pages on your channel"] = "Sta beheerde webpagina's op jouw kanaal toe";
$a->strings["Private Notes"] = "Privé-aantekeningen";
$a->strings["Enables a tool to store notes and reminders"] = "Schakelt een eenvoudige toepassing in om aantekeningen en herinneringen in op te slaan";
+$a->strings["Navigation Channel Select"] = "Kanaal kiezen in navigatiemenu";
+$a->strings["Change channels directly from within the navigation dropdown menu"] = "Kies een ander kanaal direct vanuit het dropdown-menu op de navigatiebalk";
$a->strings["Extended Identity Sharing"] = "Uitgebreid identiteit delen";
-$a->strings["Share your identity with all websites on the internet. When disabled, identity is only shared with sites in the matrix."] = "Deel jouw Red Matrix-identiteit met alle websites op het internet. Wanneer dit is uitgeschakeld wordt je identiteit alleen binnen het Red Matrix-netwerk gedeeld. Schakel dit alleen als je weet wat je doet.";
+$a->strings["Share your identity with all websites on the internet. When disabled, identity is only shared with sites in the matrix."] = "Deel jouw RedMatrix-identiteit met alle websites op het internet. Wanneer dit is uitgeschakeld wordt je identiteit alleen binnen het RedMatrix-netwerk gedeeld. Schakel dit alleen als je weet wat je doet.";
$a->strings["Expert Mode"] = "Expertmodus";
$a->strings["Enable Expert Mode to provide advanced configuration options"] = "Schakel de expertmodus in voor geavanceerde instellingen";
$a->strings["Premium Channel"] = "Premiumkanaal";
@@ -418,12 +145,12 @@ $a->strings["Allows you to set restrictions and terms on those that connect with
$a->strings["Post Composition Features"] = "Functies voor het opstellen van berichten";
$a->strings["Use Markdown"] = "Markdown gebruiken";
$a->strings["Allow use of \"Markdown\" to format posts"] = "Sta het gebruik van \"markdown\" toe om berichten mee op te maken.";
-$a->strings["Post Preview"] = "Voorvertoning";
-$a->strings["Allow previewing posts and comments before publishing them"] = "Een optie om je berichten en reacties voor het definitief publiceren voor te vertonen";
$a->strings["Channel Sources"] = "Kanaalbronnen";
$a->strings["Automatically import channel content from other channels or feeds"] = "Automatisch inhoud uit andere kanalen of feeds importeren.";
$a->strings["Even More Encryption"] = "Extra encryptie";
$a->strings["Allow optional encryption of content end-to-end with a shared secret key"] = "Sta toe dat inhoud extra end-to-end wordt versleuteld met een gedeelde geheime sleutel.";
+$a->strings["Flag Adult Photos"] = "Markeer foto's als voor volwassenen";
+$a->strings["Provide photo edit option to hide adult photos from default album view"] = "Zorgt voor een optie om foto's met inhoud voor volwassenen in de standaard albumweergave te verbergen";
$a->strings["Network and Stream Filtering"] = "Netwerk- en streamfilter";
$a->strings["Search by Date"] = "Zoek op datum";
$a->strings["Ability to select posts by date ranges"] = "Mogelijkheid om berichten op datum te filteren ";
@@ -436,39 +163,79 @@ $a->strings["Enable tab to display only Network posts that you've interacted on"
$a->strings["Network New Tab"] = "Nieuwe netwerktab";
$a->strings["Enable tab to display all new Network activity"] = "Laat de tab alle nieuwe netwerkactiviteit tonen";
$a->strings["Affinity Tool"] = "Verwantschapsfilter";
-$a->strings["Filter stream activity by depth of relationships"] = "Filter wat je in de matrix ziet op goed je iemand kent of mag";
+$a->strings["Filter stream activity by depth of relationships"] = "Filter wat je in de Matrix ziet op hoe goed je iemand kent of mag";
$a->strings["Suggest Channels"] = "Kanalen voorstellen";
$a->strings["Show channel suggestions"] = "Voor jou mogelijk interessante kanalen voorstellen";
$a->strings["Post/Comment Tools"] = "Bericht- en reactiehulpmiddelen";
-$a->strings["Edit Sent Posts"] = "Bewerk verzonden berichten";
-$a->strings["Edit and correct posts and comments after sending"] = "Bewerk en corrigeer berichten en reacties nadat deze zijn verzonden";
-$a->strings["Tagging"] = "Labelen";
-$a->strings["Ability to tag existing posts"] = "Mogelijkheid om bestaande berichten te labelen";
+$a->strings["Tagging"] = "Taggen";
+$a->strings["Ability to tag existing posts"] = "Mogelijkheid om bestaande berichten te taggen";
$a->strings["Post Categories"] = "Categorieën berichten";
$a->strings["Add categories to your posts"] = "Voeg categorieën toe aan je berichten";
+$a->strings["Saved Folders"] = "Bewaarde mappen";
$a->strings["Ability to file posts under folders"] = "Mogelijkheid om berichten in mappen op te slaan";
$a->strings["Dislike Posts"] = "Vind berichten niet leuk";
$a->strings["Ability to dislike posts/comments"] = "Mogelijkheid om berichten en reacties niet leuk te vinden";
$a->strings["Star Posts"] = "Geef berichten een ster";
$a->strings["Ability to mark special posts with a star indicator"] = "Mogelijkheid om speciale berichten met een ster te markeren";
-$a->strings["Tag Cloud"] = "Wolk met trefwoorden/labels";
-$a->strings["Provide a personal tag cloud on your channel page"] = "Zorgt voor een persoonlijke wolk met trefwoorden of labels op jouw kanaalpagina";
-$a->strings["Channel is blocked on this site."] = "Kanaal is op deze hub geblokkeerd.";
-$a->strings["Channel location missing."] = "Ontbrekende kanaallocatie.";
-$a->strings["Response from remote channel was incomplete."] = "Antwoord van het kanaal op afstand was niet volledig.";
-$a->strings["Channel was deleted and no longer exists."] = "Kanaal is verwijderd en bestaat niet meer.";
-$a->strings["Channel discovery failed."] = "Kanaal ontdekken mislukt.";
-$a->strings["local account not found."] = "lokale account niet gevonden.";
-$a->strings["Cannot connect to yourself."] = "Kan niet met jezelf verbinden";
-$a->strings["A deleted group with this name was revived. Existing item permissions <strong>may</strong> apply to this group and any future members. If this is not what you intended, please create another group with a different name."] = "Een verwijderde collectie met deze naam is gereactiveerd. Bestaande itemrechten <strong>kunnen</strong> van toepassing zijn op deze collectie en toekomstige leden. Wanneer je dit niet zo bedoeld hebt, moet je een nieuwe collectie met een andere naam aanmaken.";
-$a->strings["Default privacy group for new contacts"] = "Standaard privacy-collectie voor nieuwe kanalen";
-$a->strings["All Channels"] = "Alle kanalen";
-$a->strings["edit"] = "bewerken";
-$a->strings["Collections"] = "Collecties";
-$a->strings["Edit collection"] = "Collectie bewerken";
-$a->strings["Create a new collection"] = "Nieuwe collectie aanmaken";
-$a->strings["Channels not in any collection"] = "Kanalen die zich in geen enkele collectie bevinden";
-$a->strings["add"] = "toevoegen";
+$a->strings["Tag Cloud"] = "Tagwolk";
+$a->strings["Provide a personal tag cloud on your channel page"] = "Zorgt voor een persoonlijke wolk met tags op jouw kanaalpagina";
+$a->strings["parent"] = "omhoog";
+$a->strings["Collection"] = "map";
+$a->strings["Principal"] = "principal";
+$a->strings["Addressbook"] = "Adresboek";
+$a->strings["Calendar"] = "Agenda";
+$a->strings["Schedule Inbox"] = "Planning-postvak IN";
+$a->strings["Schedule Outbox"] = "Planning-postvak UIT";
+$a->strings["Unknown"] = "Onbekend";
+$a->strings["%1\$s used"] = "%1\$s gebruikt";
+$a->strings["%1\$s used of %2\$s (%3\$s&#37;)"] = "%1\$s van %2\$s gebruikt (%3\$s&#37;)";
+$a->strings["Files"] = "Bestanden";
+$a->strings["Total"] = "Totaal";
+$a->strings["Name"] = "Naam";
+$a->strings["Type"] = "Type";
+$a->strings["Size"] = "Grootte";
+$a->strings["Last Modified"] = "Laatst gewijzigd";
+$a->strings["Delete"] = "Verwijderen";
+$a->strings["Create new folder"] = "Nieuwe map aanmaken";
+$a->strings["Create"] = "Aanmaken";
+$a->strings["Upload file"] = "Bestand uploaden";
+$a->strings["Upload"] = "Uploaden";
+$a->strings["%1\$s's bookmarks"] = "Bladwijzers van %1\$s";
+$a->strings["Directory Options"] = "Opties kanalengids";
+$a->strings["Alphabetic"] = "Alfabetisch";
+$a->strings["Reverse Alphabetic"] = "Omgekeerd alfabetisch";
+$a->strings["Newest to Oldest"] = "Nieuw naar oud";
+$a->strings["Oldest to Newest"] = "Oud naar nieuw";
+$a->strings["Public Forums Only"] = "Alleen openbare forums";
+$a->strings["Sort"] = "Sorteren";
+$a->strings["Enable Safe Search"] = "Veilig zoeken inschakelen";
+$a->strings["Disable Safe Search"] = "Veilig zoeken uitschakelen";
+$a->strings["Safe Mode"] = "Veilig zoeken";
+$a->strings["Default"] = "Standaard";
+$a->strings["Frequently"] = "Regelmatig";
+$a->strings["Hourly"] = "Elk uur";
+$a->strings["Twice daily"] = "Twee keer per dag";
+$a->strings["Daily"] = "Dagelijks";
+$a->strings["Weekly"] = "Wekelijks";
+$a->strings["Monthly"] = "Maandelijks";
+$a->strings["Friendica"] = "Friendica";
+$a->strings["OStatus"] = "OStatus";
+$a->strings["RSS/Atom"] = "RSS/Atom";
+$a->strings["Email"] = "E-mail";
+$a->strings["Diaspora"] = "Diaspora";
+$a->strings["Facebook"] = "Facebook";
+$a->strings["Zot!"] = "Zot!";
+$a->strings["LinkedIn"] = "LinkedIn";
+$a->strings["XMPP/IM"] = "XMPP/IM";
+$a->strings["MySpace"] = "MySpace";
+$a->strings["Logged out."] = "Uitgelogd.";
+$a->strings["Failed authentication"] = "Mislukte authenticatie";
+$a->strings["Login failed."] = "Inloggen mislukt.";
+$a->strings["Visible to your default audience"] = "Voor iedereen zichtbaar, mits niet anders ingesteld";
+$a->strings["Show"] = "Tonen";
+$a->strings["Don't show"] = "Niet tonen";
+$a->strings["Permissions"] = "Permissies";
+$a->strings["Close"] = "Sluiten";
$a->strings["Unable to obtain identity information from database"] = "Niet in staat om identiteitsinformatie uit de database te verkrijgen";
$a->strings["Empty name"] = "Ontbrekende naam";
$a->strings["Name too long"] = "Naam te lang";
@@ -500,7 +267,7 @@ $a->strings["[today]"] = "[vandaag]";
$a->strings["Birthday Reminders"] = "Verjaardagsherinneringen";
$a->strings["Birthdays this week:"] = "Verjaardagen deze week:";
$a->strings["[No description]"] = "[Geen omschrijving]";
-$a->strings["Event Reminders"] = "Herinneringen voor gebeurtenissen";
+$a->strings["Event Reminders"] = "Herinneringen";
$a->strings["Events this week:"] = "Gebeurtenissen deze week:";
$a->strings["Profile"] = "Profiel";
$a->strings["Full Name:"] = "Volledige naam:";
@@ -511,8 +278,8 @@ $a->strings["Birthday:"] = "Geboortedatum:";
$a->strings["Age:"] = "Leeftijd:";
$a->strings["for %1\$d %2\$s"] = "voor %1\$d %2\$s";
$a->strings["Sexual Preference:"] = "Seksuele voorkeur:";
-$a->strings["Hometown:"] = "Woonplaats:";
-$a->strings["Tags:"] = "Trefwoorden:";
+$a->strings["Hometown:"] = "Oorspronkelijk uit:";
+$a->strings["Tags:"] = "Tags:";
$a->strings["Political Views:"] = "Politieke overtuigingen:";
$a->strings["Religion:"] = "Religie:";
$a->strings["About:"] = "Over:";
@@ -528,8 +295,55 @@ $a->strings["Film/dance/culture/entertainment:"] = "Films/dansen/cultuur/vermaak
$a->strings["Love/Romance:"] = "Liefde/romantiek:";
$a->strings["Work/employment:"] = "Werk/beroep:";
$a->strings["School/education:"] = "School/opleiding:";
-$a->strings["Like this thing"] = "Vind dit object leuk";
-$a->strings["view full size"] = "volledige grootte tonen";
+$a->strings["Like this thing"] = "Vind dit ding leuk";
+$a->strings["%d invitation available"] = array(
+ 0 => "%d uitnodiging beschikbaar",
+ 1 => "%d uitnodigingen beschikbaar",
+);
+$a->strings["Advanced"] = "Geavanceerd";
+$a->strings["Find Channels"] = "Kanalen vinden";
+$a->strings["Enter name or interest"] = "Vul naam of interesse in";
+$a->strings["Connect/Follow"] = "Verbinden/volgen";
+$a->strings["Examples: Robert Morgenstein, Fishing"] = "Voorbeeld: Robert Morgenstein, vissen";
+$a->strings["Find"] = "Vinden";
+$a->strings["Channel Suggestions"] = "Voorgestelde kanalen";
+$a->strings["Random Profile"] = "Willekeurig profiel";
+$a->strings["Invite Friends"] = "Vrienden uitnodigen";
+$a->strings["Advanced example: name=fred and country=iceland"] = "Geavanceerd voorbeeld (Engels): name=jan en country=nederland";
+$a->strings["Everything"] = "Alles";
+$a->strings["%d connection in common"] = array(
+ 0 => "%d gemeenschappelijke connectie",
+ 1 => "%d gemeenschappelijke connecties",
+);
+$a->strings["show more"] = "meer connecties weergeven";
+$a->strings["This event has been added to your calendar."] = "Dit evenement is aan jouw agenda toegevoegd.";
+$a->strings["A deleted group with this name was revived. Existing item permissions <strong>may</strong> apply to this group and any future members. If this is not what you intended, please create another group with a different name."] = "Een verwijderde collectie met deze naam is gereactiveerd. Bestaande itemrechten <strong>kunnen</strong> van toepassing zijn op deze collectie en toekomstige leden. Wanneer je dit niet zo bedoeld hebt, moet je een nieuwe collectie met een andere naam aanmaken.";
+$a->strings["Default privacy group for new contacts"] = "Standaard privacy-collectie voor nieuwe kanalen";
+$a->strings["All Channels"] = "Alle kanalen";
+$a->strings["edit"] = "bewerken";
+$a->strings["Collections"] = "Collecties";
+$a->strings["Edit collection"] = "Collectie bewerken";
+$a->strings["Create a new collection"] = "Nieuwe collectie aanmaken";
+$a->strings["Channels not in any collection"] = "Kanalen die zich in geen enkele collectie bevinden";
+$a->strings["add"] = "toevoegen";
+$a->strings["Not a valid email address"] = "Geen geldig e-mailadres";
+$a->strings["Your email domain is not among those allowed on this site"] = "Jouw e-maildomein is op deze RedMatrix-hub niet toegestaan";
+$a->strings["Your email address is already registered at this site."] = "Jouw e-mailadres is al op deze RedMatrix-hub geregistreerd.";
+$a->strings["An invitation is required."] = "Een uitnodiging is vereist";
+$a->strings["Invitation could not be verified."] = "Uitnodiging kon niet geverifieerd worden";
+$a->strings["Please enter the required information."] = "Vul de vereiste informatie in.";
+$a->strings["Failed to store account information."] = "Account-informatie kon niet opgeslagen worden.";
+$a->strings["Registration confirmation for %s"] = "Registratiebevestiging voor %s";
+$a->strings["Registration request at %s"] = "Registratiebevestiging voor %s";
+$a->strings["Administrator"] = "Beheerder";
+$a->strings["your registration password"] = "jouw registratiewachtwoord";
+$a->strings["Registration details for %s"] = "Registratiegegevens voor %s";
+$a->strings["Account approved."] = "Account goedgekeurd";
+$a->strings["Registration revoked for %s"] = "Registratie ingetrokken voor %s";
+$a->strings["Account verified. Please login."] = "Account is geverifieerd. Je kan inloggen.";
+$a->strings["Click here to upgrade."] = "Klik hier om te upgraden.";
+$a->strings["This action exceeds the limits set by your subscription plan."] = "Deze handeling overschrijdt de beperkingen die voor jouw abonnement gelden.";
+$a->strings["This action is not available under your subscription plan."] = "Deze handeling is niet mogelijk met jouw abonnement.";
$a->strings["prev"] = "vorige";
$a->strings["first"] = "eerste";
$a->strings["last"] = "laatste";
@@ -542,8 +356,10 @@ $a->strings["%d Connection"] = array(
1 => "%d connecties",
);
$a->strings["View Connections"] = "Connecties weergeven";
+$a->strings["Search"] = "Zoeken";
$a->strings["Save"] = "Opslaan";
$a->strings["poke"] = "aanstoten";
+$a->strings["poked"] = "aangestoten";
$a->strings["ping"] = "ping";
$a->strings["pinged"] = "gepingd";
$a->strings["prod"] = "por";
@@ -600,34 +416,142 @@ $a->strings["remove category"] = "categorie verwijderen";
$a->strings["remove from file"] = "uit map verwijderen";
$a->strings["Click to open/close"] = "Klik om te openen of te sluiten";
$a->strings["Link to Source"] = "Originele locatie";
-$a->strings["Select a page layout: "] = "Kies een paginalayout: ";
+$a->strings["Select a page layout: "] = "Kies een paginalay-out: ";
$a->strings["default"] = "standaard";
$a->strings["Page content type: "] = "Opmaakcode pagina";
$a->strings["Select an alternate language"] = "Kies een andere taal";
+$a->strings["photo"] = "foto";
+$a->strings["event"] = "gebeurtenis";
+$a->strings["status"] = "bericht";
+$a->strings["comment"] = "reactie";
$a->strings["activity"] = "activiteit";
$a->strings["Design"] = "Ontwerp";
$a->strings["Blocks"] = "Blokken";
$a->strings["Menus"] = "Menu's";
-$a->strings["Layouts"] = "Layouts";
+$a->strings["Layouts"] = "Lay-outs";
$a->strings["Pages"] = "Pagina's";
-$a->strings["Site Admin"] = "Hubbeheerder";
-$a->strings["Address Book"] = "Connecties";
-$a->strings["Mood"] = "Stemming";
-$a->strings["Probe"] = "Onderzoeken";
-$a->strings["Suggest"] = "Voorstellen";
-$a->strings["Update"] = "Bijwerken";
-$a->strings["Install"] = "Installeren";
-$a->strings["Purchase"] = "Aanschaffen";
-$a->strings["Image/photo"] = "Afbeelding/foto";
-$a->strings["Encrypted content"] = "Versleutelde inhoud";
-$a->strings["QR code"] = "QR-code";
-$a->strings["%1\$s wrote the following %2\$s %3\$s"] = "%1\$s schreef het volgende %2\$s %3\$s";
-$a->strings["post"] = "bericht";
-$a->strings["$1 wrote:"] = "$1 schreef:";
-$a->strings["No recipient provided."] = "Geen ontvanger opgegeven.";
-$a->strings["[no subject]"] = "[geen onderwerp]";
-$a->strings["Unable to determine sender."] = "Afzender kan niet bepaald worden.";
-$a->strings["Stored post could not be verified."] = "Opgeslagen bericht kon niet worden geverifieerd.";
+$a->strings["Public Timeline"] = "Openbare tijdlijn";
+$a->strings["Missing room name"] = "Naam chatkanaal ontbreekt";
+$a->strings["Duplicate room name"] = "Naam chatkanaal bestaat al";
+$a->strings["Invalid room specifier."] = "Ongeldige omschrijving chatkanaal";
+$a->strings["Room not found."] = "Chatkanaal niet gevonden";
+$a->strings["Room is full"] = "Chatkanaal is vol";
+$a->strings["Channel is blocked on this site."] = "Kanaal is op deze hub geblokkeerd.";
+$a->strings["Channel location missing."] = "Ontbrekende kanaallocatie.";
+$a->strings["Response from remote channel was incomplete."] = "Antwoord van het kanaal op afstand was niet volledig.";
+$a->strings["Channel was deleted and no longer exists."] = "Kanaal is verwijderd en bestaat niet meer.";
+$a->strings["Protocol disabled."] = "Protocol uitgeschakeld.";
+$a->strings["Channel discovery failed."] = "Kanaal ontdekken mislukt.";
+$a->strings["local account not found."] = "lokale account niet gevonden.";
+$a->strings["Cannot connect to yourself."] = "Kan niet met jezelf verbinden";
+$a->strings["channel"] = "kanaal";
+$a->strings["%1\$s likes %2\$s's %3\$s"] = "%1\$s vindt %3\$s van %2\$s leuk";
+$a->strings["%1\$s doesn't like %2\$s's %3\$s"] = "%1\$s vindt %3\$s van %2\$s niet leuk";
+$a->strings["%1\$s is now connected with %2\$s"] = "%1\$s is nu met %2\$s verbonden";
+$a->strings["%1\$s poked %2\$s"] = "%1\$s heeft %2\$s aangestoten";
+$a->strings["__ctx:mood__ %1\$s is %2\$s"] = "%1\$s is %2\$s";
+$a->strings["Select"] = "Kies";
+$a->strings["Private Message"] = "Privébericht";
+$a->strings["Message signature validated"] = "Berichtkenmerk gevalideerd";
+$a->strings["Message signature incorrect"] = "Berichtkenmerk onjuist";
+$a->strings["View %s's profile @ %s"] = "Bekijk het profiel van %s @ %s";
+$a->strings["Categories:"] = "Categorieën:";
+$a->strings["Filed under:"] = "Bewaard onder:";
+$a->strings[" from %s"] = " van %s";
+$a->strings["last edited: %s"] = "laatst bewerkt: %s";
+$a->strings["Expires: %s"] = "Verloopt: %s";
+$a->strings["View in context"] = "In context bekijken";
+$a->strings["Please wait"] = "Even wachten";
+$a->strings["remove"] = "verwijderen";
+$a->strings["Loading..."] = "Aan het laden...";
+$a->strings["Delete Selected Items"] = "Verwijder de geselecteerde items";
+$a->strings["View Source"] = "Bron weergeven";
+$a->strings["Follow Thread"] = "Conversatie volgen";
+$a->strings["View Status"] = "Status weergeven";
+$a->strings["View Profile"] = "Profiel weergeven";
+$a->strings["View Photos"] = "Foto's weergeven";
+$a->strings["Matrix Activity"] = "Activiteit in de RedMatrix";
+$a->strings["Edit Contact"] = "Contact bewerken";
+$a->strings["Send PM"] = "Privébericht verzenden";
+$a->strings["Poke"] = "Aanstoten";
+$a->strings["%s likes this."] = "%s vindt dit leuk.";
+$a->strings["%s doesn't like this."] = "%s vindt dit niet leuk.";
+$a->strings["<span %1\$s>%2\$d people</span> like this."] = array(
+ 0 => "<span %1\$s>%2\$d persoon</span> vindt dit leuk.",
+ 1 => "<span %1\$s>%2\$d personen</span> vinden dit leuk.",
+);
+$a->strings["<span %1\$s>%2\$d people</span> don't like this."] = array(
+ 0 => "<span %1\$s>%2\$d persoon</span> vindt dit niet leuk.",
+ 1 => "<span %1\$s>%2\$d personen</span> vinden dit niet leuk.",
+);
+$a->strings["and"] = "en";
+$a->strings[", and %d other people"] = array(
+ 0 => ", en %d ander persoon",
+ 1 => ", en %d andere personen",
+);
+$a->strings["%s like this."] = "%s vinden dit leuk.";
+$a->strings["%s don't like this."] = "%s vinden dit niet leuk.";
+$a->strings["Visible to <strong>everybody</strong>"] = "Voor <strong>iedereen</strong> zichtbaar";
+$a->strings["Please enter a link URL:"] = "Vul een internetadres/URL in:";
+$a->strings["Please enter a video link/URL:"] = "Vul een videolink/URL in:";
+$a->strings["Please enter an audio link/URL:"] = "Vul een audiolink/URL in:";
+$a->strings["Tag term:"] = "Tag:";
+$a->strings["Save to Folder:"] = "Bewaar in map: ";
+$a->strings["Where are you right now?"] = "Waar bevind je je op dit moment?";
+$a->strings["Expires YYYY-MM-DD HH:MM"] = "Verloopt op DD-MM-YYYY om HH:MM";
+$a->strings["Share"] = "Delen";
+$a->strings["Page link title"] = "Titel van paginalink";
+$a->strings["Post as"] = "Bericht plaatsen als";
+$a->strings["Upload photo"] = "Foto uploaden";
+$a->strings["upload photo"] = "foto uploaden";
+$a->strings["Attach file"] = "Bestand toevoegen";
+$a->strings["attach file"] = "bestand toevoegen";
+$a->strings["Insert web link"] = "Weblink invoegen";
+$a->strings["web link"] = "Weblink";
+$a->strings["Insert video link"] = "Videolink invoegen";
+$a->strings["video link"] = "videolink";
+$a->strings["Insert audio link"] = "Audiolink invoegen";
+$a->strings["audio link"] = "audiolink";
+$a->strings["Set your location"] = "Locatie instellen";
+$a->strings["set location"] = "locatie instellen";
+$a->strings["Clear browser location"] = "Locatie van webbrowser wissen";
+$a->strings["clear location"] = "locatie wissen";
+$a->strings["Title (optional)"] = "Titel (optioneel)";
+$a->strings["Categories (optional, comma-separated list)"] = "Categorieën (optioneel, door komma's gescheiden lijst)";
+$a->strings["Permission settings"] = "Permissies";
+$a->strings["permissions"] = "permissies";
+$a->strings["Public post"] = "Openbaar bericht";
+$a->strings["Example: bob@example.com, mary@example.com"] = "Voorbeeld: bob@voorbeeld.nl, mary@voorbeeld.be";
+$a->strings["Set expiration date"] = "Verloopdatum instellen";
+$a->strings["Encrypt text"] = "Tekst versleutelen";
+$a->strings["OK"] = "OK";
+$a->strings["Cancel"] = "Annuleren";
+$a->strings["Discover"] = "Ontdekken";
+$a->strings["Imported public streams"] = "Openbare streams importeren";
+$a->strings["Commented Order"] = "Nieuwe reacties bovenaan";
+$a->strings["Sort by Comment Date"] = "Berichten met nieuwe reacties bovenaan";
+$a->strings["Posted Order"] = "Nieuwe berichten bovenaan";
+$a->strings["Sort by Post Date"] = "Nieuwe berichten bovenaan";
+$a->strings["Personal"] = "Persoonlijk";
+$a->strings["Posts that mention or involve you"] = "Alleen berichten die jou vermelden of waar je op een andere manier bij betrokken bent";
+$a->strings["New"] = "Nieuw";
+$a->strings["Activity Stream - by date"] = "Activiteitenstroom - volgens datum";
+$a->strings["Starred"] = "Met ster";
+$a->strings["Favourite Posts"] = "Favoriete berichten";
+$a->strings["Spam"] = "Spam";
+$a->strings["Posts flagged as SPAM"] = "Berichten gemarkeerd als SPAM";
+$a->strings["Channel"] = "Kanaal";
+$a->strings["Status Messages and Posts"] = "Berichten in dit kanaal";
+$a->strings["About"] = "Over";
+$a->strings["Profile Details"] = "Profiel";
+$a->strings["Photos"] = "Foto's";
+$a->strings["Files and Storage"] = "Bestanden en opslagruimte";
+$a->strings["Chatrooms"] = "Chatkanalen";
+$a->strings["Bookmarks"] = "Bladwijzers";
+$a->strings["Saved Bookmarks"] = "Opgeslagen bladwijzers";
+$a->strings["Webpages"] = "Webpagina's";
+$a->strings["Manage Webpages"] = "Webpagina's beheren";
+$a->strings["Apps"] = "Apps";
$a->strings["System"] = "Systeem";
$a->strings["Create Personal App"] = "Persoonlijke app maken";
$a->strings["Edit Personal App"] = "Persoonlijke app bewerken";
@@ -655,12 +579,19 @@ $a->strings["Feature settings"] = "Plug-ins";
$a->strings["Display settings"] = "Weergave";
$a->strings["Connected apps"] = "Verbonden applicaties";
$a->strings["Export channel"] = "Kanaal exporteren";
-$a->strings["Automatic Permissions (Advanced)"] = "Automatische privacy-rechten (geavanceerd)";
+$a->strings["Connection Default Permissions"] = "Standaard permissies voor connecties";
$a->strings["Premium Channel Settings"] = "Instellingen premiumkanaal";
+$a->strings["Settings"] = "Instellingen";
+$a->strings["Messages"] = "Berichten";
$a->strings["Check Mail"] = "Controleer op nieuwe berichten";
+$a->strings["New Message"] = "Nieuw bericht";
$a->strings["Chat Rooms"] = "Chatkanalen";
$a->strings["Bookmarked Chatrooms"] = "Bladwijzers van chatkanalen";
$a->strings["Suggested Chatrooms"] = "Voorgestelde chatkanalen";
+$a->strings["photo/image"] = "foto/afbeelding";
+$a->strings["Invalid data packet"] = "Datapakket ongeldig";
+$a->strings["Unable to verify channel signature"] = "Kanaalkenmerk kon niet worden geverifieerd. ";
+$a->strings["Unable to verify site signature for %s"] = "Hubkenmerk voor %s kon niet worden geverifieerd";
$a->strings["Save to Folder"] = "In map opslaan";
$a->strings["View all"] = "Toon alles";
$a->strings["__ctx:noun__ Dislike"] = array(
@@ -671,11 +602,15 @@ $a->strings["Add Star"] = "Ster toevoegen";
$a->strings["Remove Star"] = "Ster verwijderen";
$a->strings["Toggle Star Status"] = "Ster toevoegen of verwijderen";
$a->strings["starred"] = "met ster";
-$a->strings["Add Tag"] = "Label toevoegen";
+$a->strings["Add Tag"] = "Tag toevoegen";
$a->strings["I like this (toggle)"] = "Vind ik leuk";
$a->strings["I don't like this (toggle)"] = "Vind ik niet leuk";
$a->strings["Share This"] = "Delen";
$a->strings["share"] = "delen";
+$a->strings["%d comment"] = array(
+ 0 => "%d reactie",
+ 1 => "%d reacties weergeven",
+);
$a->strings["View %s's profile - %s"] = "Profiel van %s bekijken - %s";
$a->strings["to"] = "aan";
$a->strings["via"] = "via";
@@ -683,12 +618,9 @@ $a->strings["Wall-to-Wall"] = "Kanaal-naar-kanaal";
$a->strings["via Wall-To-Wall:"] = "via kanaal-naar-kanaal";
$a->strings["Save Bookmarks"] = "Bladwijzers opslaan";
$a->strings["Add to Calendar"] = "Aan agenda toevoegen";
+$a->strings["Mark all seen"] = "Markeer alles als bekeken";
$a->strings["__ctx:noun__ Likes"] = "vinden dit leuk";
$a->strings["__ctx:noun__ Dislikes"] = "vinden dit niet leuk";
-$a->strings["%d comment"] = array(
- 0 => "%d reactie",
- 1 => "%d reacties weergeven",
-);
$a->strings["[+] show all"] = "[+] alle";
$a->strings["This is you"] = "Dit ben jij";
$a->strings["Comment"] = "Reactie";
@@ -701,6 +633,101 @@ $a->strings["Code"] = "Broncode";
$a->strings["Image"] = "Afbeelding";
$a->strings["Link"] = "Link";
$a->strings["Video"] = "Video";
+$a->strings["Miscellaneous"] = "Diversen";
+$a->strings["YYYY-MM-DD or MM-DD"] = "JJJJ-MM-DD of MM-DD";
+$a->strings["never"] = "nooit";
+$a->strings["less than a second ago"] = "minder dan een seconde geleden";
+$a->strings["year"] = "jaar";
+$a->strings["years"] = "jaren";
+$a->strings["month"] = "maand";
+$a->strings["months"] = "maanden";
+$a->strings["week"] = "week";
+$a->strings["weeks"] = "weken";
+$a->strings["day"] = "dag";
+$a->strings["days"] = "dagen";
+$a->strings["hour"] = "uur";
+$a->strings["hours"] = "uren";
+$a->strings["minute"] = "minuut";
+$a->strings["minutes"] = "minuten";
+$a->strings["second"] = "seconde";
+$a->strings["seconds"] = "seconden";
+$a->strings["%1\$d %2\$s ago"] = "%1\$d %2\$s geleden";
+$a->strings["%1\$s's birthday"] = "Verjaardag van %1\$s";
+$a->strings["Happy Birthday %1\$s"] = "Gefeliciteerd met je verjaardag %1\$s";
+$a->strings["Site Admin"] = "Hubbeheerder";
+$a->strings["Address Book"] = "Connecties";
+$a->strings["Login"] = "Inloggen";
+$a->strings["Channel Manager"] = "Kanaalbeheer";
+$a->strings["Matrix"] = "Matrix";
+$a->strings["Channel Home"] = "Tijdlijn kanaal";
+$a->strings["Events"] = "Agenda";
+$a->strings["Directory"] = "Kanalengids";
+$a->strings["Help"] = "Hulp";
+$a->strings["Mail"] = "Privéberichten";
+$a->strings["Mood"] = "Stemming";
+$a->strings["Chat"] = "Chatten";
+$a->strings["Probe"] = "Onderzoeken";
+$a->strings["Suggest"] = "Voorstellen";
+$a->strings["Random Channel"] = "Willekeurig kanaal";
+$a->strings["Invite"] = "Uitnodigen ";
+$a->strings["Features"] = "Extra functies";
+$a->strings["Language"] = "Taal";
+$a->strings["Post"] = "Bericht";
+$a->strings["Profile Photo"] = "Profielfoto";
+$a->strings["Update"] = "Bijwerken";
+$a->strings["Install"] = "Installeren";
+$a->strings["Purchase"] = "Aanschaffen";
+$a->strings["New window"] = "Nieuw venster";
+$a->strings["Open the selected location in a different window or browser tab"] = "Open de geselecteerde locatie in een ander venster of tab";
+$a->strings["User '%s' deleted"] = "Account '%s' verwijderd";
+$a->strings["Image/photo"] = "Afbeelding/foto";
+$a->strings["Encrypted content"] = "Versleutelde inhoud";
+$a->strings["Install design element: "] = "Installeer ontwerp-onderdeel";
+$a->strings["QR code"] = "QR-code";
+$a->strings["%1\$s wrote the following %2\$s %3\$s"] = "%1\$s schreef het volgende %2\$s %3\$s";
+$a->strings["post"] = "bericht";
+$a->strings["$1 spoiler"] = "$1 spoiler";
+$a->strings["$1 wrote:"] = "$1 schreef:";
+$a->strings["Red Matrix Notification"] = "RedMatrix-notificatie";
+$a->strings["redmatrix"] = "RedMatrix";
+$a->strings["Thank You,"] = "Bedankt,";
+$a->strings["%s Administrator"] = "Beheerder %s";
+$a->strings["%s <!item_type!>"] = "%s <!item_type!>";
+$a->strings["[Red:Notify] New mail received at %s"] = "[Red:Notificatie] Nieuw privébericht ontvangen op %s";
+$a->strings["%1\$s, %2\$s sent you a new private message at %3\$s."] = "%1\$s, %2\$s zond jou een nieuw privébericht om %3\$s.";
+$a->strings["%1\$s sent you %2\$s."] = "%1\$s zond jou %2\$s.";
+$a->strings["a private message"] = "een privébericht";
+$a->strings["Please visit %s to view and/or reply to your private messages."] = "Bezoek %s om je privéberichten te bekijken en/of er op te reageren.";
+$a->strings["%1\$s, %2\$s commented on [zrl=%3\$s]a %4\$s[/zrl]"] = "%1\$s, %2\$s gaf een reactie op [zrl=%3\$s]een %4\$s[/zrl]";
+$a->strings["%1\$s, %2\$s commented on [zrl=%3\$s]%4\$s's %5\$s[/zrl]"] = "%1\$s, %2\$s gaf een reactie op [zrl=%3\$s]een %5\$s van %4\$s[/zrl]";
+$a->strings["%1\$s, %2\$s commented on [zrl=%3\$s]your %4\$s[/zrl]"] = "%1\$s, %2\$s gaf een reactie op [zrl=%3\$s]jouw %4\$s[/zrl]";
+$a->strings["[Red:Notify] Comment to conversation #%1\$d by %2\$s"] = "[Red:Notificatie] Reactie op conversatie #%1\$d door %2\$s";
+$a->strings["%1\$s, %2\$s commented on an item/conversation you have been following."] = "%1\$s, %2\$s gaf een reactie op een bericht/conversatie die jij volgt.";
+$a->strings["Please visit %s to view and/or reply to the conversation."] = "Bezoek %s om de conversatie te bekijken en/of er op te reageren.";
+$a->strings["[Red:Notify] %s posted to your profile wall"] = "[Red:Notificatie] %s heeft een bericht op jouw kanaal geplaatst";
+$a->strings["%1\$s, %2\$s posted to your profile wall at %3\$s"] = "%1\$s, %2\$s heeft om %3\$s een bericht op jouw kanaal geplaatst";
+$a->strings["%1\$s, %2\$s posted to [zrl=%3\$s]your wall[/zrl]"] = "%1\$s, %2\$s heeft een bericht op [zrl=%3\$s]jouw kanaal[/zrl] geplaatst";
+$a->strings["[Red:Notify] %s tagged you"] = "[Red:Notificatie] %s heeft je genoemd";
+$a->strings["%1\$s, %2\$s tagged you at %3\$s"] = "%1\$s, %2\$s noemde jou op %3\$s";
+$a->strings["%1\$s, %2\$s [zrl=%3\$s]tagged you[/zrl]."] = "%1\$s, %2\$s [zrl=%3\$s]noemde jou[/zrl].";
+$a->strings["[Red:Notify] %1\$s poked you"] = "[Red:Notificatie] %1\$s heeft je aangestoten";
+$a->strings["%1\$s, %2\$s poked you at %3\$s"] = "%1\$s, %2\$s heeft je aangestoten op %3\$s";
+$a->strings["%1\$s, %2\$s [zrl=%2\$s]poked you[/zrl]."] = "%1\$s, %2\$s [zrl=%2\$s]heeft je aangestoten[/zrl].";
+$a->strings["[Red:Notify] %s tagged your post"] = "[Red:Notificatie] %s heeft jouw bericht getagd";
+$a->strings["%1\$s, %2\$s tagged your post at %3\$s"] = "%1\$s, %2\$s heeft jouw bericht om %3\$s getagd";
+$a->strings["%1\$s, %2\$s tagged [zrl=%3\$s]your post[/zrl]"] = "%1\$s, %2\$s heeft [zrl=%3\$s]jouw bericht[/zrl] getagd";
+$a->strings["[Red:Notify] Introduction received"] = "[Red:Notificatie] Connectieverzoek ontvangen";
+$a->strings["%1\$s, you've received an new connection request from '%2\$s' at %3\$s"] = "%1\$s, je hebt een nieuw connectieverzoek ontvangen van '%2\$s' op %3\$s";
+$a->strings["%1\$s, you've received [zrl=%2\$s]a new connection request[/zrl] from %3\$s."] = "%1\$s, je hebt een [zrl=%2\$s]nieuw connectieverzoek[/zrl] ontvangen van %3\$s.";
+$a->strings["You may visit their profile at %s"] = "Je kan het profiel bekijken op %s";
+$a->strings["Please visit %s to approve or reject the connection request."] = "Bezoek %s om het connectieverzoek te accepteren of af te wijzen.";
+$a->strings["[Red:Notify] Friend suggestion received"] = "[Red:Notificatie] Kanaalvoorstel ontvangen";
+$a->strings["%1\$s, you've received a friend suggestion from '%2\$s' at %3\$s"] = "%1\$s, je hebt een kanaalvoorstel ontvangen van '%2\$s' om %3\$s";
+$a->strings["%1\$s, you've received [zrl=%2\$s]a friend suggestion[/zrl] for %3\$s from %4\$s."] = "%1\$s, je hebt [zrl=%2\$s]een kanaalvoorstel[/zrl] ontvangen voor %3\$s van %4\$s.";
+$a->strings["Name:"] = "Naam:";
+$a->strings["Photo:"] = "Foto:";
+$a->strings["Please visit %s to approve or reject the suggestion."] = "Bezoek %s om het voorstel te accepteren of af te wijzen.";
+$a->strings["[Red:Notify]"] = "[Red:Notificatie]";
$a->strings["Delete this item?"] = "Dit item verwijderen?";
$a->strings["[-] show less"] = "[-] minder reacties weergeven";
$a->strings["[+] expand"] = "[+] uitklappen";
@@ -710,8 +737,9 @@ $a->strings["Passwords do not match"] = "Wachtwoorden komen niet overeen";
$a->strings["everybody"] = "iedereen";
$a->strings["Secret Passphrase"] = "Geheim wachtwoord";
$a->strings["Passphrase hint"] = "Wachtwoordhint";
-$a->strings["Notice: Permissions have changed but have not yet been submitted."] = "Mededeling: de privacy-rechten zijn veranderd, maar zijn nog niet opgeslagen.";
+$a->strings["Notice: Permissions have changed but have not yet been submitted."] = "Mededeling: de permissies zijn veranderd, maar zijn nog niet opgeslagen.";
$a->strings["close all"] = "Alles sluiten";
+$a->strings["Nothing new here"] = "Niets nieuw hier";
$a->strings["timeago.prefixAgo"] = "timeago.prefixAgo";
$a->strings["timeago.prefixFromNow"] = "timeago.prefixFromNow";
$a->strings["ago"] = "geleden";
@@ -729,8 +757,6 @@ $a->strings["about a year"] = "ongeveer een jaar";
$a->strings["%d years"] = "%d jaren";
$a->strings[" "] = " ";
$a->strings["timeago.numbers"] = "timeago.numbers";
-$a->strings["New window"] = "Nieuw venster";
-$a->strings["Open the selected location in a different window or browser tab"] = "Open de geselecteerde locatie in een ander venster of tab";
$a->strings["Male"] = "Man";
$a->strings["Female"] = "Vrouw";
$a->strings["Currently Male"] = "Momenteel man";
@@ -743,7 +769,6 @@ $a->strings["Transsexual"] = "Transseksueel";
$a->strings["Hermaphrodite"] = "Hermafrodiet";
$a->strings["Neuter"] = "Genderneutraal";
$a->strings["Non-specific"] = "Niet gespecificeerd";
-$a->strings["Other"] = "Anders";
$a->strings["Undecided"] = "Nog niet beslist";
$a->strings["Males"] = "Mannen";
$a->strings["Females"] = "Vrouwen";
@@ -788,38 +813,73 @@ $a->strings["Uncertain"] = "Onzeker";
$a->strings["It's complicated"] = "Het is ingewikkeld";
$a->strings["Don't care"] = "Maakt mij niks uit";
$a->strings["Ask me"] = "Vraag het me";
-$a->strings["Logged out."] = "Uitgelogd.";
-$a->strings["Failed authentication"] = "Mislukte authenticatie";
-$a->strings["Login failed."] = "Inloggen mislukt.";
-$a->strings["Permission denied"] = "Toegang geweigerd";
-$a->strings["(Unknown)"] = "(Onbekend)";
-$a->strings["Item not found."] = "Item niet gevonden.";
-$a->strings["Collection not found."] = "Collectie niet gevonden.";
-$a->strings["Collection is empty."] = "Collectie is leeg";
-$a->strings["Collection: %s"] = "Collectie: %s";
-$a->strings["Connection: %s"] = "Connectie: %s";
-$a->strings["Connection not found."] = "Connectie niet gevonden.";
-$a->strings["Can view my \"public\" stream and posts"] = "Kan mijn \"openbare\" streams en berichten zien";
-$a->strings["Can view my \"public\" channel profile"] = "Kan mijn \"openbaar\" kanaalprofiel zien";
-$a->strings["Can view my \"public\" photo albums"] = "Kan mijn \"openbare\" fotoalbums zien";
-$a->strings["Can view my \"public\" address book"] = "Kan een lijst met mijn \"openbare\" connecties zien";
-$a->strings["Can view my \"public\" file storage"] = "Kan mijn \"openbare\" bestanden zien";
-$a->strings["Can view my \"public\" pages"] = "Kan mijn \"openbare\" pagina's zien";
-$a->strings["Can send me their channel stream and posts"] = "Kan mij de inhoud van hun kanaal en berichten sturen";
-$a->strings["Can post on my channel page (\"wall\")"] = "Kan een bericht in mijn kanaal (\"wall\") plaatsen";
-$a->strings["Can comment on my posts"] = "Kan op mijn berichten reageren";
-$a->strings["Can send me private mail messages"] = "Kan mij privéberichten sturen";
-$a->strings["Can post photos to my photo albums"] = "Kan foto's aan mijn fotoalbums toevoegen";
-$a->strings["Can forward to all my channel contacts via post @mentions"] = "Kan naar al mijn kanaalconnecties berichten doorsturen met behulp van @vermeldingen+";
-$a->strings["Advanced - useful for creating group forum channels"] = "Geavanceerd - nuttig voor kanalen met een groep- cq. forumfunctie";
-$a->strings["Can chat with me (when available)"] = "Kan met mij chatten (wanneer beschikbaar)";
-$a->strings["Can write to my \"public\" file storage"] = "Kan bestanden aan mijn \"openbare\" bestandsopslag toevoegen";
-$a->strings["Can edit my \"public\" pages"] = "Kan mijn \"openbare\" pagina's bewerken";
-$a->strings["Can source my \"public\" posts in derived channels"] = "Kan mijn \"openbare\" berichten als bron voor andere kanalen gebruiken";
-$a->strings["Somewhat advanced - very useful in open communities"] = "Enigszins geavanceerd (erg nuttig voor kanalen van forums/groepen)";
-$a->strings["Can administer my channel resources"] = "Kan mijn kanaal beheren";
-$a->strings["Extremely advanced. Leave this alone unless you know what you are doing"] = "Zeer geavanceerd. Laat dit met rust, behalve als je weet wat je doet.";
+$a->strings["Logout"] = "Uitloggen";
+$a->strings["End this session"] = "Beëindig deze sessie";
+$a->strings["Home"] = "Home";
+$a->strings["Your posts and conversations"] = "Jouw berichten en conversaties";
+$a->strings["Your profile page"] = "Jouw profielpagina";
+$a->strings["Edit Profiles"] = "Bewerk profielen";
+$a->strings["Manage/Edit profiles"] = "Beheer/wijzig profielen";
+$a->strings["Edit your profile"] = "Jouw profiel bewerken";
+$a->strings["Your photos"] = "Jouw foto's";
+$a->strings["Your files"] = "Jouw bestanden";
+$a->strings["Your chatrooms"] = "Jouw chatkanalen";
+$a->strings["Your bookmarks"] = "Jouw bladwijzers";
+$a->strings["Your webpages"] = "Jouw webpagina's";
+$a->strings["Sign in"] = "Inloggen";
+$a->strings["%s - click to logout"] = "%s - klik om uit te loggen";
+$a->strings["Remote authentication"] = "Authenticatie op afstand";
+$a->strings["Click to authenticate to your home hub"] = "Authenticeer jezelf via (bijvoorbeeld) jouw RedMatrix-hub";
+$a->strings["Home Page"] = "Homepage";
+$a->strings["Register"] = "Registreren";
+$a->strings["Create an account"] = "Maak een account aan";
+$a->strings["Help and documentation"] = "Hulp en documentatie";
+$a->strings["Applications, utilities, links, games"] = "Apps";
+$a->strings["Search site content"] = "Inhoud van deze RedMatrix-hub doorzoeken";
+$a->strings["Channel Directory"] = "Kanalengids";
+$a->strings["Your matrix"] = "Jouw matrix";
+$a->strings["Mark all matrix notifications seen"] = "Markeer alle matrixnotificaties als bekeken";
+$a->strings["Channel home"] = "Tijdlijn kanaal";
+$a->strings["Mark all channel notifications seen"] = "Alle kanaalnotificaties als gelezen markeren";
+$a->strings["Connections"] = "Connecties";
+$a->strings["Notices"] = "Notificaties";
+$a->strings["Notifications"] = "Notificaties";
+$a->strings["See all notifications"] = "Alle notificaties weergeven";
+$a->strings["Mark all system notifications seen"] = "Markeer alle systeemnotificaties als bekeken";
+$a->strings["Private mail"] = "Privéberichten";
+$a->strings["See all private messages"] = "Alle privéberichten weergeven";
+$a->strings["Mark all private messages seen"] = "Markeer alle privéberichten als bekeken";
+$a->strings["Inbox"] = "Postvak IN";
+$a->strings["Outbox"] = "Postvak UIT";
+$a->strings["Event Calendar"] = "Agenda";
+$a->strings["See all events"] = "Alle gebeurtenissen weergeven";
+$a->strings["Mark all events seen"] = "Markeer alle gebeurtenissen als bekeken";
+$a->strings["Manage Your Channels"] = "Beheer je kanalen";
+$a->strings["Account/Channel Settings"] = "Account-/kanaal-instellingen";
+$a->strings["Admin"] = "Beheer";
+$a->strings["Site Setup and Configuration"] = "Hub instellen en beheren";
+$a->strings["@name, #tag, content"] = "@kanaal, #label, inhoud";
+$a->strings["Please wait..."] = "Wachten aub...";
+$a->strings["The form security token was not correct. This probably happened because the form has been opened for too long (>3 hours) before submitting it."] = "De beveiligings-token van het tekstvak was ongeldig. Dit is mogelijk het gevolg van dat er te lang (meer dan 3 uur) gewacht is om de tekst op te slaan. ";
$a->strings["Set your current mood and tell your friends"] = "Noteer je huidige stemming en toon het aan je connecties";
+$a->strings["Maximum daily site registrations exceeded. Please try again tomorrow."] = "Maximum toegestane dagelijkse registraties op deze RedMatrix-hub bereikt. Probeer het morgen (UTC) nogmaals.";
+$a->strings["Please indicate acceptance of the Terms of Service. Registration failed."] = "Registratie mislukt. De gebruiksvoorwaarden dienen wel geaccepteerd te worden.";
+$a->strings["Passwords do not match."] = "Wachtwoorden komen niet met elkaar overeen.";
+$a->strings["Registration successful. Please check your email for validation instructions."] = "Registratie geslaagd. Controleer je e-mail voor instructies.";
+$a->strings["Your registration is pending approval by the site owner."] = "Jouw accountregistratie wacht op goedkeuring van de beheerder van deze RedMatrix-hub.";
+$a->strings["Your registration can not be processed."] = "Jouw registratie kan niet verwerkt worden.";
+$a->strings["Registration on this site/hub is by approval only."] = "Registraties op deze RedMatrix-hub moeten eerst worden goedgekeurd.";
+$a->strings["<a href=\"pubsites\">Register at another affiliated site/hub</a>"] = "<a href=\"pubsites\">Registreer op een andere RedMatrix-hub</a>";
+$a->strings["This site has exceeded the number of allowed daily account registrations. Please try again tomorrow."] = "Deze RedMatrix-hub heeft het maximum aantal dagelijks toegestane registraties bereikt. Probeer het morgen (UTC) nogmaals.";
+$a->strings["Terms of Service"] = "Gebruiksvoorwaarden";
+$a->strings["I accept the %s for this website"] = "Ik accepteer de %s van deze RedMatrix-hub";
+$a->strings["I am over 13 years of age and accept the %s for this website"] = "Ik accepteer de %s van deze RedMatrix-hub";
+$a->strings["Registration"] = "Registratie";
+$a->strings["Membership on this site is by invitation only."] = "Registreren op deze RedMatrix-hub kan alleen op uitnodiging.";
+$a->strings["Please enter your invitation code"] = "Vul jouw uitnodigingscode in";
+$a->strings["Your email address"] = "Jouw e-mailadres";
+$a->strings["Choose a password"] = "Geef een wachtwoord op";
+$a->strings["Please re-enter your password"] = "Geef het wachtwoord opnieuw op";
$a->strings["Menu not found."] = "Menu niet gevonden.";
$a->strings["Menu element updated."] = "Menu-onderdeel geüpdatet.";
$a->strings["Unable to update menu element."] = "Menu-onderdeel kan niet worden geüpdatet.";
@@ -836,11 +896,11 @@ $a->strings["Add menu element"] = "Menu-element toevoegen";
$a->strings["Delete this menu item"] = "Dit menu-item verwijderen";
$a->strings["Edit this menu item"] = "Dit menu-item bewerken";
$a->strings["New Menu Element"] = "Nieuw menu-element";
-$a->strings["Menu Item Permissions"] = "Privacy-rechten menu-item";
+$a->strings["Menu Item Permissions"] = "Permissies menu-item";
$a->strings["(click to open/close)"] = "(klik om te openen/sluiten)";
$a->strings["Link text"] = "Linktekst";
$a->strings["URL of link"] = "URL of link";
-$a->strings["Use Red magic-auth if available"] = "Gebruik Reds magische authenticatie wanneer aanwezig";
+$a->strings["Use RedMatrix magic-auth if available"] = "Gebruik RedMatrix' magic-auth wanneer beschikbaar";
$a->strings["Open link in new window"] = "Open link in nieuw venster";
$a->strings["Order in list"] = "Volgorde in lijst";
$a->strings["Higher numbers will sink to bottom of listing"] = "Hogere nummers komen onderaan de lijst terecht";
@@ -849,119 +909,24 @@ $a->strings["Menu item deleted."] = "Menu-item verwijderd.";
$a->strings["Menu item could not be deleted."] = "Menu-item kon niet worden verwijderd.";
$a->strings["Edit Menu Element"] = "Menu-element bewerken";
$a->strings["Modify"] = "Wijzigen";
+$a->strings["Some blurb about what to do when you're new here"] = "Welkom op de RedMatrix. Klik op de tab ontdekken of klik rechtsboven op de <a href=\"directory\">kanalengids</a>, om kanalen te vinden. Rechtsboven vind je ook onze <a href=\"directory\">apps</a>, waar je vrijwel alles van de RedMatrix kan vinden. Voor <a href=\"directory\">hulp</a> met de RedMatrix klik je op het vraagteken of als je meer vragen hebt stel je die in het <a href=\"https://zothost.me/channel/support\">supportkanaal</a> (liefst in het Engels).";
$a->strings["sent you a private message"] = "stuurde jou een privébericht";
$a->strings["added your channel"] = "voegde jouw kanaal toe";
$a->strings["posted an event"] = "plaatste een gebeurtenis";
-$a->strings["network"] = "netwerk";
-$a->strings["Name is required"] = "Naam is vereist";
-$a->strings["Key and Secret are required"] = "Key en secret zijn vereist";
-$a->strings["Passwords do not match. Password unchanged."] = "Wachtwoorden komen niet overeen. Wachtwoord onveranderd.";
-$a->strings["Empty passwords are not allowed. Password unchanged."] = "Lege wachtwoorden zijn niet toegestaan. Wachtwoord onveranderd.";
-$a->strings["Password changed."] = "Wachtwoord veranderd.";
-$a->strings["Password update failed. Please try again."] = "Bijwerken wachtwoord mislukt. Probeer opnieuw.";
-$a->strings["Not valid email."] = "Geen geldig e-mailadres.";
-$a->strings["Protected email address. Cannot change to that email."] = "Beschermd e-mailadres. Kan dat e-mailadres niet gebruiken.";
-$a->strings["System failure storing new email. Please try again."] = "Systeemfout opslaan van nieuwe e-mail. Probeer het nog een keer.";
-$a->strings["Settings updated."] = "Instellingen bijgewerkt.";
-$a->strings["Add application"] = "Applicatie toevoegen";
-$a->strings["Name of application"] = "Naam van applicatie";
-$a->strings["Consumer Key"] = "Consumer key";
-$a->strings["Automatically generated - change if desired. Max length 20"] = "Automatische gegenereerd - verander wanneer gewenst. Maximale lengte is 20";
-$a->strings["Consumer Secret"] = "Consumer secret";
-$a->strings["Redirect"] = "Redirect/doorverwijzing";
-$a->strings["Redirect URI - leave blank unless your application specifically requires this"] = "URI voor redirect - laat leeg, behalve wanneer de applicatie dit vereist";
-$a->strings["Icon url"] = "URL van pictogram";
-$a->strings["Optional"] = "Optioneel";
-$a->strings["You can't edit this application."] = "Je kan deze applicatie niet bewerken";
-$a->strings["Connected Apps"] = "Verbonden applicaties";
-$a->strings["Client key starts with"] = "Client key begint met";
-$a->strings["No name"] = "Geen naam";
-$a->strings["Remove authorization"] = "Autorisatie verwijderen";
-$a->strings["No feature settings configured"] = "Geen plugin-instellingen ingesteld";
-$a->strings["Feature Settings"] = "Plugin-instellingen";
-$a->strings["Account Settings"] = "Account-instellingen";
-$a->strings["Password Settings"] = "Wachtwoord-instellingen";
-$a->strings["New Password:"] = "Nieuw wachtwoord:";
-$a->strings["Confirm:"] = "Bevestigen:";
-$a->strings["Leave password fields blank unless changing"] = "Laat de wachtwoordvelden leeg, behalve wanneer je deze wil veranderen";
-$a->strings["Email Address:"] = "E-mailadres:";
-$a->strings["Remove Account"] = "Kanaal verwijderen (neem contact op met de beheerder van deze hub om je account te verwijderen)";
-$a->strings["Warning: This action is permanent and cannot be reversed."] = "Waarschuwing: Deze handeling is van permanente aard en kan niet meer worden teruggedraaid.";
-$a->strings["Off"] = "Uit";
-$a->strings["On"] = "Aan";
-$a->strings["Additional Features"] = "Extra functies";
-$a->strings["Connector Settings"] = "Instellingen externe koppelingen";
-$a->strings["No special theme for mobile devices"] = "Geen speciaal thema voor mobiele apparaten";
-$a->strings["%s - (Experimental)"] = "%s - (experimenteel)";
-$a->strings["Display Settings"] = "Weergave-instellingen";
-$a->strings["Display Theme:"] = "Gebruik thema:";
-$a->strings["Mobile Theme:"] = "Mobiel thema:";
-$a->strings["Update browser every xx seconds"] = "Ververs de webbrowser om de zoveel seconde";
-$a->strings["Minimum of 10 seconds, no maximum"] = "Minimaal 10 seconde, geen maximum";
-$a->strings["Maximum number of conversations to load at any time:"] = "Maximaal aantal conversaties die per keer geladen worden:";
-$a->strings["Maximum of 100 items"] = "Maximaal 100 conversaties";
-$a->strings["Don't show emoticons"] = "Geen emoticons weergeven";
-$a->strings["System Page Layout Editor - (advanced)"] = "Lay-out bewerken van systeempagina's (geavanceerd)";
-$a->strings["Nobody except yourself"] = "Niemand, behalve jezelf";
-$a->strings["Only those you specifically allow"] = "Alleen connecties met uitdrukkelijke toestemming";
-$a->strings["Approved connections"] = "Geaccepteerde connecties";
-$a->strings["Any connections"] = "Alle connecties";
-$a->strings["Anybody on this website"] = "Iedereen op deze hub";
-$a->strings["Anybody in this network"] = "Iedereen in dit netwerk";
-$a->strings["Anybody authenticated"] = "Geauthenticeerd";
-$a->strings["Anybody on the internet"] = "Iedereen op het internet";
-$a->strings["Publish your default profile in the network directory"] = "Publiceer je standaardprofiel in de kanalengids";
-$a->strings["No"] = "Nee";
-$a->strings["Yes"] = "Ja";
-$a->strings["Allow us to suggest you as a potential friend to new members?"] = "Sta ons toe om jouw kanaal als mogelijke connectie voor te stellen aan nieuwe kanalen";
-$a->strings["or"] = "of";
-$a->strings["Your channel address is"] = "Jouw kanaaladres is";
-$a->strings["Channel Settings"] = "Kanaal-instellingen";
-$a->strings["Basic Settings"] = "Basis-instellingen";
-$a->strings["Your Timezone:"] = "Jouw tijdzone:";
-$a->strings["Default Post Location:"] = "Standaardlocatie bericht:";
-$a->strings["Geographical location to display on your posts"] = "Geografische locatie die bij het bericht moet worden vermeld";
-$a->strings["Use Browser Location:"] = "Locatie van webbrowser gebruiken:";
-$a->strings["Adult Content"] = "Inhoud voor volwassenen";
-$a->strings["This channel frequently or regularly publishes adult content. (Please tag any adult material and/or nudity with #NSFW)"] = "Dit kanaal publiceert regelmatig of vaak materiaal dat alleen geschikt is voor volwassen. (Gebruik de hashtag #NSFW in berichten met een seksueel getinte inhoud of ander voor minderjarigen ongeschikt materiaal)";
-$a->strings["Security and Privacy Settings"] = "Veiligheids- privacy-instellingen";
-$a->strings["Hide my online presence"] = "Verberg mijn aanwezigheid";
-$a->strings["Prevents displaying in your profile that you are online"] = "Voorkomt dat op je kanaal te zien valt dat je momenteel op de Red Matrix aanwezig bent";
-$a->strings["Simple Privacy Settings:"] = "Eenvoudige privacy-instellingen:";
-$a->strings["Very Public - <em>extremely permissive (should be used with caution)</em>"] = "Zeer openbaar <em>(kanaal staat volledig open - moet met grote zorgvuldigheid gebruikt worden)</em>";
-$a->strings["Typical - <em>default public, privacy when desired (similar to social network permissions but with improved privacy)</em>"] = "Normaal <em>(standaard openbaar, maar privacy wanneer noodzakelijk - vergelijkbaar met die van sociale netwerken, maar met verbeterde privacy)</em>";
-$a->strings["Private - <em>default private, never open or public</em>"] = "Privé <em>(standaard privé en nooit openbaar)</em>";
-$a->strings["Blocked - <em>default blocked to/from everybody</em>"] = "Geblokkeerd <em>(standaard geblokkeerd naar/van iedereen)</em>";
-$a->strings["Allow others to tag your posts"] = "Anderen toestaan om je berichten te labelen";
-$a->strings["Often used by the community to retro-actively flag inappropriate content"] = "Vaak in groepen/forums gebruikt om met terugwerkende kracht ongepast materiaal te markeren";
-$a->strings["Advanced Privacy Settings"] = "Geavanceerde privacy-instellingen";
-$a->strings["Expire other channel content after this many days"] = "Inhoud van andere kanalen na zoveel aantal dagen laten verlopen:";
-$a->strings["0 or blank prevents expiration"] = "0 of leeg voorkomt het verlopen";
-$a->strings["Maximum Friend Requests/Day:"] = "Maximum aantal connectieverzoeken per dag:";
-$a->strings["May reduce spam activity"] = "Kan eventuele spam verminderen";
-$a->strings["Default Post Permissions"] = "Standaard privacy-rechten voor nieuwe berichten";
-$a->strings["Maximum private messages per day from unknown people:"] = "Maximum aantal privé-berichten per dag van onbekende personen:";
-$a->strings["Useful to reduce spamming"] = "Kan eventuele spam verminderen";
-$a->strings["Notification Settings"] = "Notificatie-instellingen";
-$a->strings["By default post a status message when:"] = "Plaats automatisch een statusbericht wanneer:";
-$a->strings["accepting a friend request"] = "Een connectieverzoek wordt geaccepteerd";
-$a->strings["joining a forum/community"] = "Je lid wordt van een groep/forum";
-$a->strings["making an <em>interesting</em> profile change"] = "Er sprake is van een <em>interessante</em> profielwijziging";
-$a->strings["Send a notification email when:"] = "Verzend een notificatie per e-mail wanneer:";
-$a->strings["You receive a connection request"] = "Je een connectieverzoek ontvangt";
-$a->strings["Your connections are confirmed"] = "Jouw connecties zijn bevestigd";
-$a->strings["Someone writes on your profile wall"] = "Iemand iets op jouw kanaal heeft geschreven";
-$a->strings["Someone writes a followup comment"] = "Iemand een reactie schrijft";
-$a->strings["You receive a private message"] = "Je een privé-bericht ontvangt";
-$a->strings["You receive a friend suggestion"] = "Je een kanaalvoorstel ontvangt";
-$a->strings["You are tagged in a post"] = "Je expliciet in een bericht bent genoemd";
-$a->strings["You are poked/prodded/etc. in a post"] = "Je bent in een bericht aangestoten/gepord/etc.";
-$a->strings["Advanced Account/Page Type Settings"] = "Instellingen geavanceerd account/paginatype";
-$a->strings["Change the behaviour of this account for special situations"] = "Verander het gedrag van dit account voor speciale situaties";
-$a->strings["Please enable expert mode (in <a href=\"settings/features\">Settings > Additional features</a>) to adjust!"] = "Schakel de expertmodus in (in <a href=\"settings/features\">Instellingen > Extra functies</a>) om aan te kunnen passen!";
-$a->strings["Miscellaneous Settings"] = "Diverse instellingen";
-$a->strings["Personal menu to display in your channel pages"] = "Persoonlijk menu om op je kanaalpagina's weer te geven";
-$a->strings["Remove this channel"] = "Verwijder dit kanaal";
+$a->strings["Collection created."] = "Collectie aangemaakt";
+$a->strings["Could not create collection."] = "Collectie kon niet aangemaakt worden";
+$a->strings["Collection updated."] = "Collectie bijgewerkt.";
+$a->strings["Create a collection of channels."] = "Kanaalcollectie aanmaken";
+$a->strings["Collection Name: "] = "Naam collectie:";
+$a->strings["Members are visible to other channels"] = "Kanalen in deze collectie zijn zichtbaar voor andere kanalen";
+$a->strings["Collection removed."] = "Collectie verwijderd";
+$a->strings["Unable to remove collection."] = "Verwijderen collectie mislukt";
+$a->strings["Collection Editor"] = "Collectiebewerker";
+$a->strings["Members"] = "Kanalen";
+$a->strings["All Connected Channels"] = "Alle kanaalconnecties";
+$a->strings["Click on a channel to add or remove."] = "Klik op een kanaal om deze toe te voegen of te verwijderen.";
+$a->strings["Public access denied."] = "Openbare toegang geweigerd.";
+$a->strings["%1\$s is following %2\$s's %3\$s"] = "%1\$s volgt het %3\$s van %2\$s";
$a->strings["Poke/Prod"] = "Aanstoten/porren";
$a->strings["poke, prod or do other things to somebody"] = "aanstoten, porren of andere dingen met iemand doen";
$a->strings["Recipient"] = "Ontvanger";
@@ -971,36 +936,14 @@ $a->strings["Authorize application connection"] = "Geef toestemming voor applica
$a->strings["Return to your app and insert this Securty Code:"] = "Ga terug naar je app en voeg deze beveiligingscode in:";
$a->strings["Please login to continue."] = "Inloggen om verder te kunnen gaan.";
$a->strings["Do you want to authorize this application to access your posts and contacts, and/or create new posts for you?"] = "Wil je deze applicatie toestemming geven om jouw berichten en connecties te zien, en/of nieuwe berichten voor jou te plaatsen?";
-$a->strings["Remote authentication blocked. You are logged into this site locally. Please logout and retry."] = "Authenticatie op afstand geblokkeerd. Je bent lokaal op deze hub ingelogd. Uitloggen en opnieuw proberen.";
-$a->strings["Welcome %s. Remote authentication successful."] = "Welkom %s. Authenticatie op afstand geslaagd.";
-$a->strings["Item not available."] = "Item is niet aanwezig.";
-$a->strings["Fetching URL returns error: %1\$s"] = "Ophalen URL gaf een foutmelding terug: %1\$s";
-$a->strings["Invalid item."] = "Ongeldig item.";
-$a->strings["Channel not found."] = "Kanaal niet gevonden.";
-$a->strings["Page not found."] = "Pagina niet gevonden.";
-$a->strings["Image uploaded but image cropping failed."] = "Afbeelding geüpload, maar afbeelding kon niet worden bijgesneden. ";
-$a->strings["Image resize failed."] = "Afbeelding kon niet van grootte veranderd worden.";
-$a->strings["Shift-reload the page or clear browser cache if the new photo does not display immediately."] = "Vernieuw de pagina met shift+R of shift+F5, of leeg je browserbuffer, wanneer de nieuwe foto niet meteen wordt weergegeven.";
-$a->strings["Image exceeds size limit of %d"] = "Afbeeldingsgrootte overschrijdt het limiet van %d";
-$a->strings["Unable to process image."] = "Niet in staat om afbeelding te verwerken.";
-$a->strings["Photo not available."] = "Foto niet beschikbaar.";
-$a->strings["Upload File:"] = "Bestand uploaden:";
-$a->strings["Select a profile:"] = "Kies een profiel:";
-$a->strings["Upload Profile Photo"] = "Profielfoto uploaden";
-$a->strings["skip this step"] = "sla deze stap over";
-$a->strings["select a photo from your photo albums"] = "Kies een foto uit jouw fotoalbums";
-$a->strings["Crop Image"] = "Afbeelding bijsnijden";
-$a->strings["Please adjust the image cropping for optimum viewing."] = "Snij de afbeelding zo uit dat deze optimaal wordt weergegeven.";
-$a->strings["Done Editing"] = "Klaar met bewerken";
-$a->strings["Image uploaded successfully."] = "Uploaden afbeelding geslaagd";
-$a->strings["Image upload failed."] = "Uploaden afbeelding mislukt";
-$a->strings["Image size reduction [%s] failed."] = "Verkleinen [%s] van afbeelding mislukt.";
-$a->strings["Block Name"] = "Bloknaam";
+$a->strings["Yes"] = "Ja";
+$a->strings["No"] = "Nee";
$a->strings["Profile not found."] = "Profiel niet gevonden.";
$a->strings["Profile deleted."] = "Profiel verwijderd.";
$a->strings["Profile-"] = "Profiel-";
$a->strings["New profile created."] = "Nieuw profiel aangemaakt.";
$a->strings["Profile unavailable to clone."] = "Profiel niet beschikbaar om te klonen";
+$a->strings["Profile unavailable to export."] = "Geen profiel beschikbaar om te exporteren";
$a->strings["Profile Name is required."] = "Profielnaam is vereist";
$a->strings["Marital Status"] = "Huwelijke status";
$a->strings["Romantic Partner"] = "Romantische partner";
@@ -1023,11 +966,13 @@ $a->strings["Change Profile Photo"] = "Profielfoto wijzigen";
$a->strings["Create a new profile using these settings"] = "Een nieuw profiel aanmaken met dit profiel als basis";
$a->strings["Clone this profile"] = "Dit profiel klonen";
$a->strings["Delete this profile"] = "Dit profiel verwijderen";
+$a->strings["Import profile from file"] = "Profiel vanuit bestand importeren";
+$a->strings["Export profile to file"] = "Profiel naar bestand exporteren";
$a->strings["Profile Name:"] = "Profielnaam:";
$a->strings["Your Full Name:"] = "Jouw volledige naam:";
$a->strings["Title/Description:"] = "Titel/omschrijving:";
$a->strings["Your Gender:"] = "Jouw geslacht";
-$a->strings["Birthday (%s):"] = "Geboortedag (%s)";
+$a->strings["Birthday :"] = "Verjaardag: ";
$a->strings["Street Address:"] = "Straat en huisnummer:";
$a->strings["Locality/City:"] = "Woonplaats:";
$a->strings["Postal/Zip Code:"] = "Postcode:";
@@ -1053,26 +998,88 @@ $a->strings["Film/dance/culture/entertainment"] = "Film/dans/cultuur/entertainme
$a->strings["Love/romance"] = "Liefde/romantiek";
$a->strings["Work/employment"] = "Werk/arbeid";
$a->strings["School/education"] = "School/onderwijs";
-$a->strings["This is your <strong>public</strong> profile.<br />It <strong>may</strong> be visible to anybody using the internet."] = "Dit is jouw <strong>openbare</strong> profiel.<br />Het <strong>kan</strong> voor iedereen op het internet zichtbaar zijn.";
+$a->strings["This is your default profile."] = "Dit is jouw standaardprofiel";
$a->strings["Age: "] = "Leeftijd:";
$a->strings["Edit/Manage Profiles"] = "Profielen bewerken/beheren";
-$a->strings["Add profile things"] = "Profiel-objecten toevoegen";
-$a->strings["Include desirable objects in your profile"] = "Voeg door jou gewenste objecten aan jouw profiel toe";
-$a->strings["Bookmark added"] = "Bladwijzer toegevoegd";
-$a->strings["My Bookmarks"] = "Mijn bladwijzers";
-$a->strings["My Connections Bookmarks"] = "Bladwijzers van mijn connecties";
+$a->strings["Add profile things"] = "Dingen aan je profiel toevoegen";
+$a->strings["Include desirable objects in your profile"] = "Voeg door jou gewenste dingen aan jouw profiel toe";
+$a->strings["Item not available."] = "Item is niet aanwezig.";
+$a->strings["Fetching URL returns error: %1\$s"] = "Ophalen URL gaf een foutmelding terug: %1\$s";
+$a->strings["Invalid item."] = "Ongeldig item.";
+$a->strings["Channel not found."] = "Kanaal niet gevonden.";
+$a->strings["Page not found."] = "Pagina niet gevonden.";
+$a->strings["Export Channel"] = "Kanaal exporteren";
+$a->strings["Export your basic channel information to a small file. This acts as a backup of your connections, permissions, profile and basic data, which can be used to import your data to a new hub, but\tdoes not contain your content."] = "Exporteer de basisinformatie van jouw kanaal naar een klein bestand. Dit fungeert als een back-up van jouw connecties, permissies, profiel en basisgegevens, die gebruikt kan worden om op een nieuwe hub jouw gegevens te importeren. Deze back-up bevat echter niet de inhoud van jouw kanaal.";
+$a->strings["Export Content"] = "Inhoud exporteren";
+$a->strings["Export your channel information and all the content to a JSON backup. This backs up all of your connections, permissions, profile data and all of your content, but is generally not suitable for importing a channel to a new hub as this file may be VERY large. Please be patient - it may take several minutes for this download to begin."] = "Exporteer informatie en alle inhoud van jouw kanaal naar een JSON-back-up. Dit slaat al jouw connecties, permissies, profielgegevens en de volledige inhoud van jouw kanaal op, maar is in het algemeen niet geschikt om op een nieuwe hub te importeren, omdat dit bestand ZEER groot kan worden. Wees geduldig - het kan enkele minuten duren voordat de download begint.";
+$a->strings["No potential page delegates located."] = "Geen gevolmachtigde personen gevonden waaraan mogelijk het accountbeheer kan worden uitbesteed.";
+$a->strings["Delegate Page Management"] = "Accountbeheer uitbesteden";
+$a->strings["Delegates are able to manage all aspects of this account/page except for basic account settings. Please do not delegate your personal account to anybody that you do not trust completely."] = "Gevolmachtigde personen zijn in staat om alle aspecten van dit account te beheren, behalve enkele basisinstellingen. Besteed het beheer van je persoonlijke account niet aan iemand uit die je niet volledig vertrouwd.";
+$a->strings["Existing Page Managers"] = "Bestaande accountbeheerders";
+$a->strings["Existing Page Delegates"] = "Bestaande gevolmachtigde accountbeheerders";
+$a->strings["Potential Delegates"] = "Gevolmachtigde personen waaraan mogelijk het accountbeheer kan worden uitbesteed.";
+$a->strings["Remove"] = "Verwijderen";
+$a->strings["Add"] = "Toevoegen";
+$a->strings["No entries."] = "Geen";
+$a->strings["Version %s"] = "Versie %s";
+$a->strings["Installed plugins/addons/apps:"] = "Ingeschakelde plug-ins/add-ons/apps:";
+$a->strings["No installed plugins/addons/apps"] = "Geen ingeschakelde plug-ins/add-ons/apps";
+$a->strings["Red"] = "Red";
+$a->strings["This is a hub of the Red Matrix - a global cooperative network of decentralized privacy enhanced websites."] = "Dit is een hub van de RedMatrix - een wereldwijd coöperatief netwerk van gedecentraliseerde websites met verbeterde privacy.";
+$a->strings["Tag: "] = "Tag: ";
+$a->strings["Last background fetch: "] = "Meest recente achtergrond-fetch:";
+$a->strings["Running at web location"] = "Draaiend op weblocatie";
+$a->strings["Please visit <a href=\"https://redmatrix.me\">RedMatrix.me</a> to learn more about the Red Matrix."] = "Bezoek <a href=\"https://redmatrix.me\">RedMatrix.me</a> om meer te leren over de RedMatrix.";
+$a->strings["Bug reports and issues: please visit"] = "Bugrapporten en andere kwesties: bezoek";
+$a->strings["Suggestions, praise, etc. - please email \"redmatrix\" at librelist - dot com"] = "Voorstellen, lofbetuigingen, enz. - e-mail \"redmatrix\" at librelist - dot com";
+$a->strings["Site Administrators"] = "Hubbeheerders: ";
+$a->strings["Failed to create source. No channel selected."] = "Aanmaken bron mislukt. Geen kanaal geselecteerd.";
+$a->strings["Source created."] = "Bron aangemaakt.";
+$a->strings["Source updated."] = "Bron aangemaakt.";
+$a->strings["*"] = "*";
+$a->strings["Manage remote sources of content for your channel."] = "Beheer externe bronnen met inhoud voor jouw kanaal";
+$a->strings["New Source"] = "Nieuwe bron";
+$a->strings["Import all or selected content from the following channel into this channel and distribute it according to your channel settings."] = "Importeer complete of gedeelde inhoud vanuit het volgende kanaal naar dit kanaal, en verdeel het vervolgens volgens jouw kanaalinstellingen.";
+$a->strings["Only import content with these words (one per line)"] = "Importeer alleen inhoud met deze woorden (één per regel)";
+$a->strings["Leave blank to import all public content"] = "Laat leeg om alle openbare inhoud te importeren";
+$a->strings["Channel Name"] = "Kanaalnaam";
+$a->strings["Source not found."] = "Bron niet gevonden";
+$a->strings["Edit Source"] = "Bron bewerken";
+$a->strings["Delete Source"] = "Bron verwijderen";
+$a->strings["Source removed"] = "Bron verwijderd";
+$a->strings["Unable to remove source."] = "Verwijderen bron mislukt.";
$a->strings["Invalid profile identifier."] = "Ongeldige profiel-identificator";
$a->strings["Profile Visibility Editor"] = "Zichtbaarheid profiel ";
$a->strings["Click on a contact to add or remove."] = "Klik op een connectie om deze toe te voegen of te verwijderen";
$a->strings["Visible To"] = "Zichtbaar voor";
$a->strings["All Connections"] = "Alle connecties";
+$a->strings["Event can not end before it has started."] = "Gebeurtenis kan niet eindigen voordat het is begonnen";
+$a->strings["Event title and start time are required."] = "Titel en begintijd van gebeurtenis zijn vereist.";
+$a->strings["Event not found."] = "Gebeurtenis niet gevonden";
+$a->strings["l, F j"] = "l j F";
+$a->strings["Edit event"] = "Gebeurtenis bewerken";
+$a->strings["Create New Event"] = "Nieuwe gebeurtenis aanmaken";
+$a->strings["Previous"] = "Vorige";
+$a->strings["Next"] = "Volgende";
+$a->strings["Export"] = "Exporteren";
+$a->strings["Event details"] = "Details van gebeurtenis";
+$a->strings["Starting date and Title are required."] = "Begintijd en titel zijn vereist.";
+$a->strings["Categories (comma-separated list)"] = "Categorieën (door komma's gescheiden lijst)";
+$a->strings["Event Starts:"] = "Begin gebeurtenis:";
+$a->strings["Required"] = "Vereist";
+$a->strings["Finish date/time is not known or not relevant"] = "Einddatum/-tijd is niet bekend of niet relevant";
+$a->strings["Event Finishes:"] = "Einde gebeurtenis:";
+$a->strings["Adjust for viewer timezone"] = "Aanpassen aan de tijdzone van wie deze gebeurtenis bekijkt";
+$a->strings["Description:"] = "Omschrijving:";
+$a->strings["Title:"] = "Titel:";
+$a->strings["Share this event"] = "Deel deze gebeurtenis";
$a->strings["Public Sites"] = "Openbare hubs";
-$a->strings["The listed sites allow public registration into the Red Matrix. All sites in the matrix are interlinked so membership on any of them conveys membership in the matrix as a whole. Some sites may require subscription or provide tiered service plans. The provider links <strong>may</strong> provide additional details."] = "Op de hier weergegeven hubs kan iedereen zich voor de Red Matrix aanmelden. Alle hubs in de matrix zijn met elkaar verbonden, dus maakt het qua lidmaatschap niet uit waar je je aanmeldt. Op sommige hubs heb je eerst goedkeuring nodig en sommige hubs vereisen betaalde abonnementen voor uitbreidingen. <strong>Mogelijk</strong> wordt hierover op de hub zelf meer informatie gegeven.";
+$a->strings["The listed sites allow public registration into the Red Matrix. All sites in the matrix are interlinked so membership on any of them conveys membership in the matrix as a whole. Some sites may require subscription or provide tiered service plans. The provider links <strong>may</strong> provide additional details."] = "Op de hier weergegeven hubs kan iedereen zich voor de RedMatrix aanmelden. Alle hubs in de Matrix zijn met elkaar verbonden, dus maakt het qua lidmaatschap niet uit waar je je aanmeldt. Op sommige hubs heb je eerst goedkeuring nodig en sommige hubs vereisen betaalde abonnementen voor uitbreidingen. <strong>Mogelijk</strong> wordt hierover op de hub zelf meer informatie gegeven.";
$a->strings["Site URL"] = "URL hub";
$a->strings["Access Type"] = "Toegangstype";
$a->strings["Registration Policy"] = "Registratiebeleid";
$a->strings["You must be logged in to see this page."] = "Je moet zijn ingelogd om deze pagina te kunnen bekijken.";
-$a->strings["Insufficient permissions. Request redirected to profile page."] = "Onvoldoende privacy-rechten. Doorgestuurd naar profielpagina.";
+$a->strings["Insufficient permissions. Request redirected to profile page."] = "Onvoldoende permissies. Doorgestuurd naar profielpagina.";
$a->strings["Select a bookmark folder"] = "Kies een bladwijzermap";
$a->strings["Save Bookmark"] = "Bladwijzer opslaan";
$a->strings["URL of bookmark"] = "URL van bladwijzer";
@@ -1087,33 +1094,22 @@ $a->strings["Bookmark this room"] = "Chatkanaal aan bladwijzers toevoegen";
$a->strings["New Chatroom"] = "Nieuw chatkanaal";
$a->strings["Chatroom Name"] = "Naam chatkanaal";
$a->strings["%1\$s's Chatrooms"] = "Chatkanalen van %1\$s";
-$a->strings["Maximum daily site registrations exceeded. Please try again tomorrow."] = "Maximum toegestane dagelijkse registraties op deze Red Matrix-hub bereikt. Probeer het morgen (UTC) nogmaals.";
-$a->strings["Please indicate acceptance of the Terms of Service. Registration failed."] = "Registratie mislukt. De gebruiksvoorwaarden dienen wel geaccepteerd te worden.";
-$a->strings["Passwords do not match."] = "Wachtwoorden komen niet met elkaar overeen.";
-$a->strings["Registration successful. Please check your email for validation instructions."] = "Registratie geslaagd. Controleer je e-mail voor instructies om je e-mail te bevestigen.";
-$a->strings["Your registration is pending approval by the site owner."] = "Jouw accountregistratie wacht op goedkeuring van de beheerder van deze Red Matrix-hub.";
-$a->strings["Your registration can not be processed."] = "Jouw registratie kan niet verwerkt worden.";
-$a->strings["Registration on this site/hub is by approval only."] = "Registraties op deze Red Matrix-hub moeten eerst worden goedgekeurd.";
-$a->strings["<a href=\"pubsites\">Register at another affiliated site/hub</a>"] = "<a href=\"pubsites\">Registreer op een andere Red Matrix-hub</a>";
-$a->strings["This site has exceeded the number of allowed daily account registrations. Please try again tomorrow."] = "Deze Red Matrix-hub heeft het maximum aantal dagelijks toegestane registraties bereikt. Probeer het morgen (UTC) nogmaals.";
-$a->strings["Terms of Service"] = "Gebruiksvoorwaarden";
-$a->strings["I accept the %s for this website"] = "Ik accepteer de %s van deze Red Matrix-hub";
-$a->strings["I am over 13 years of age and accept the %s for this website"] = "Ik ben ouder dan 13 en accepteer de %s van deze Red Matrix-hub";
-$a->strings["Registration"] = "Registratie";
-$a->strings["Membership on this site is by invitation only."] = "Registreren op deze Red Matrix-hub kan alleen op uitnodiging.";
-$a->strings["Please enter your invitation code"] = "Vul jouw uitnodigingscode in";
-$a->strings["Your email address"] = "Jouw e-mailadres";
-$a->strings["Choose a password"] = "Geef een wachtwoord op";
-$a->strings["Please re-enter your password"] = "Geef het wachtwoord opnieuw op";
$a->strings["Away"] = "Afwezig";
$a->strings["Online"] = "Online";
$a->strings["Please login."] = "Inloggen.";
-$a->strings["Red Matrix - Guests: Username: {your email address}, Password: +++"] = "Red Matrix - gasten: Gebruikersnaam: {jouw e-mailadres}, wachtwoord: +++";
+$a->strings["Item not found"] = "Item niet gevonden";
+$a->strings["Item is not editable"] = "Item is niet te bewerken";
+$a->strings["Edit post"] = "Bericht bewerken";
+$a->strings["Delete item?"] = "Item verwijderen?";
+$a->strings["Insert YouTube video"] = "YouTube-video invoegen";
+$a->strings["Insert Vorbis [.ogg] video"] = "Vorbis-video [.ogg] invoegen";
+$a->strings["Insert Vorbis [.ogg] audio"] = "Vorbis-audio [.ogg] invoegen";
+$a->strings["Channel removals are not allowed within 48 hours of changing the account password."] = "Het verwijderen van een kanaal is niet toegestaan binnen 48 uur nadat het wachtwoord van het account is veranderd.";
$a->strings["Remove This Channel"] = "Verwijder dit kanaal";
-$a->strings["This will completely remove this channel from the network. Once this has been done it is not recoverable."] = "Dit zal dit kanaal compleet van deze hub en uit het Red Matrix-netwerk verwijderen. Dit kan hierna niet meer te ongedaan gemaakt worden.";
-$a->strings["Please enter your password for verification:"] = "Vul je wachtwoord in voor verificatie:";
-$a->strings["Remove this channel and all its clones from the network"] = "Dit kanaal en alle klonen hiervan uit het Red Matrix-netwerk verwijderen";
-$a->strings["By default only the instance of the channel located on this hub will be removed from the network"] = "Standaard wordt alleen het kanaal dat zich op deze hub bevindt uit het Red Matrix-netwerk verwijderd.";
+$a->strings["This will completely remove this channel from the network. Once this has been done it is not recoverable."] = "Dit zal dit kanaal compleet van deze hub en uit het RedMatrix-netwerk verwijderen. Dit kan hierna niet meer te ongedaan gemaakt worden.";
+$a->strings["Please enter your password for verification:"] = "Vul je wachtwoord in ter verificatie:";
+$a->strings["Remove this channel and all its clones from the network"] = "Dit kanaal en alle klonen hiervan uit het RedMatrix-netwerk verwijderen";
+$a->strings["By default only the instance of the channel located on this hub will be removed from the network"] = "Standaard wordt alleen het kanaal dat zich op deze hub bevindt uit het RedMatrix-netwerk verwijderd.";
$a->strings["Remove Channel"] = "Kanaal verwijderen";
$a->strings["No channel."] = "Geen kanaal.";
$a->strings["Common connections"] = "Veel voorkomende connecties";
@@ -1124,21 +1120,158 @@ $a->strings["Authentication failed."] = "Authenticatie mislukt.";
$a->strings["Remote Authentication"] = "Authenticatie op afstand";
$a->strings["Enter your channel address (e.g. channel@example.com)"] = "Vul jouw kanaaladres in (bijv. channel@example.com)";
$a->strings["Authenticate"] = "Authenticeren";
-$a->strings["Continue"] = "Ga verder";
-$a->strings["Premium Channel Setup"] = "Instellen premiumkanaal ";
-$a->strings["Enable premium channel connection restrictions"] = "Restricties voor connecties van premiumkanaal toestaan";
-$a->strings["Please enter your restrictions or conditions, such as paypal receipt, usage guidelines, etc."] = "Vul je restricties of voorwaarden in, zoals een paypal-afschrift, gebruikersvoorschriften, enz.";
-$a->strings["This channel may require additional steps or acknowledgement of the following conditions prior to connecting:"] = "Dit kanaal kan extra stappen of het accepteren van de volgende voorwaarden vereisen, voordat de connectie wordt geaccepteerd:";
-$a->strings["Potential connections will then see the following text before proceeding:"] = "Mogelijke connecties zullen dan de volgende tekst zien voordat ze verder kunnen:";
-$a->strings["By continuing, I certify that I have complied with any instructions provided on this page."] = "Door verder te gaan ga ik automatisch akkoord met alle voorwaarden en aanwijzingen op deze pagina.";
-$a->strings["(No specific instructions have been provided by the channel owner.)"] = "(Er zijn geen speciale voorwaarden en aanwijzingen door de kanaal-eigenaar verstrekt) ";
-$a->strings["Restricted or Premium Channel"] = "Beperkt of premiumkanaal";
-$a->strings["No such group"] = "Collectie niet gevonden";
-$a->strings["Search Results For:"] = "Zoekresultaten voor:";
-$a->strings["Collection is empty"] = "Collectie is leeg";
-$a->strings["Collection: "] = "Collectie: ";
-$a->strings["Connection: "] = "Connectie: ";
-$a->strings["Invalid connection."] = "Ongeldige connectie.";
+$a->strings["No valid account found."] = "Geen geldige account gevonden.";
+$a->strings["Password reset request issued. Check your email."] = "Het verzoek om je wachtwoord opnieuw in te stellen is behandeld. Controleer je e-mail.";
+$a->strings["Site Member (%s)"] = "Lid van hub (%s)";
+$a->strings["Password reset requested at %s"] = "Verzoek tot het opnieuw instellen van een wachtwoord op %s is ingediend";
+$a->strings["Request could not be verified. (You may have previously submitted it.) Password reset failed."] = "Het verzoek kon niet worden geverifieerd. (Mogelijk heb je al eerder een verzoek ingediend.) Opnieuw instellen van wachtwoord is mislukt.";
+$a->strings["Password Reset"] = "Wachtwoord vergeten?";
+$a->strings["Your password has been reset as requested."] = "Jouw wachtwoord is opnieuw ingesteld zoals je had verzocht.";
+$a->strings["Your new password is"] = "Jouw nieuwe wachtwoord is";
+$a->strings["Save or copy your new password - and then"] = "Kopieer of sla je nieuwe wachtwoord op - en";
+$a->strings["click here to login"] = "klik dan hier om in te loggen";
+$a->strings["Your password may be changed from the <em>Settings</em> page after successful login."] = "Jouw wachtwoord kan worden veranderd onder <em>instellingen</em>, nadat je succesvol bent ingelogd.";
+$a->strings["Your password has changed at %s"] = "Jouw wachtwoord op %s is veranderd";
+$a->strings["Forgot your Password?"] = "Wachtwoord vergeten?";
+$a->strings["Enter your email address and submit to have your password reset. Then check your email for further instructions."] = "Voer je e-mailadres in en verstuur deze om je wachtwoord opnieuw in te stellen. Controleer hierna hier je e-mail voor verdere instructies.";
+$a->strings["Email Address"] = "E-mailadres";
+$a->strings["Reset"] = "Opnieuw instellen";
+$a->strings["Name is required"] = "Naam is vereist";
+$a->strings["Key and Secret are required"] = "Key en secret zijn vereist";
+$a->strings["Passwords do not match. Password unchanged."] = "Wachtwoorden komen niet overeen. Wachtwoord onveranderd.";
+$a->strings["Empty passwords are not allowed. Password unchanged."] = "Lege wachtwoorden zijn niet toegestaan. Wachtwoord onveranderd.";
+$a->strings["Password changed."] = "Wachtwoord veranderd.";
+$a->strings["Password update failed. Please try again."] = "Bijwerken wachtwoord mislukt. Probeer opnieuw.";
+$a->strings["Not valid email."] = "Geen geldig e-mailadres.";
+$a->strings["Protected email address. Cannot change to that email."] = "Beschermd e-mailadres. Kan dat e-mailadres niet gebruiken.";
+$a->strings["System failure storing new email. Please try again."] = "Systeemfout opslaan van nieuwe e-mail. Probeer het nog een keer.";
+$a->strings["Settings updated."] = "Instellingen bijgewerkt.";
+$a->strings["Add application"] = "Applicatie toevoegen";
+$a->strings["Name of application"] = "Naam van applicatie";
+$a->strings["Consumer Key"] = "Consumer key";
+$a->strings["Automatically generated - change if desired. Max length 20"] = "Automatische gegenereerd - verander wanneer gewenst. Maximale lengte is 20";
+$a->strings["Consumer Secret"] = "Consumer secret";
+$a->strings["Redirect"] = "Redirect/doorverwijzing";
+$a->strings["Redirect URI - leave blank unless your application specifically requires this"] = "URI voor redirect - laat leeg, behalve wanneer de applicatie dit vereist";
+$a->strings["Icon url"] = "URL van pictogram";
+$a->strings["Optional"] = "Optioneel";
+$a->strings["You can't edit this application."] = "Je kan deze applicatie niet bewerken";
+$a->strings["Connected Apps"] = "Verbonden applicaties";
+$a->strings["Client key starts with"] = "Client key begint met";
+$a->strings["No name"] = "Geen naam";
+$a->strings["Remove authorization"] = "Autorisatie verwijderen";
+$a->strings["No feature settings configured"] = "Geen plugin-instellingen ingesteld";
+$a->strings["Feature Settings"] = "Plugin-instellingen";
+$a->strings["Account Settings"] = "Account-instellingen";
+$a->strings["Password Settings"] = "Wachtwoord-instellingen";
+$a->strings["New Password:"] = "Nieuw wachtwoord:";
+$a->strings["Confirm:"] = "Bevestigen:";
+$a->strings["Leave password fields blank unless changing"] = "Laat de wachtwoordvelden leeg, behalve wanneer je deze wil veranderen";
+$a->strings["Email Address:"] = "E-mailadres:";
+$a->strings["Remove Account"] = "Account verwijderen";
+$a->strings["Remove this account from this server including all its channels"] = "Dit account en al zijn kanalen van deze RedMatrix-hub verwijderen";
+$a->strings["Warning: This action is permanent and cannot be reversed."] = "Waarschuwing: Deze handeling is van permanente aard en kan niet meer worden teruggedraaid.";
+$a->strings["Off"] = "Uit";
+$a->strings["On"] = "Aan";
+$a->strings["Additional Features"] = "Extra functies";
+$a->strings["Connector Settings"] = "Instellingen externe koppelingen";
+$a->strings["No special theme for mobile devices"] = "Geen speciaal thema voor mobiele apparaten";
+$a->strings["%s - (Experimental)"] = "%s - (experimenteel)";
+$a->strings["mobile"] = "mobiel";
+$a->strings["Display Settings"] = "Weergave-instellingen";
+$a->strings["Display Theme:"] = "Gebruik thema:";
+$a->strings["Mobile Theme:"] = "Mobiel thema:";
+$a->strings["Enable user zoom on mobile devices"] = "Inzoomen op smartphones en tablets toestaan";
+$a->strings["Update browser every xx seconds"] = "Ververs de webbrowser om de zoveel seconde";
+$a->strings["Minimum of 10 seconds, no maximum"] = "Minimaal 10 seconde, geen maximum";
+$a->strings["Maximum number of conversations to load at any time:"] = "Maximaal aantal conversaties die per keer geladen worden:";
+$a->strings["Maximum of 100 items"] = "Maximaal 100 conversaties";
+$a->strings["Don't show emoticons"] = "Geen emoticons weergeven";
+$a->strings["Link post titles to source"] = "Berichtkoppen naar originele locatie linken";
+$a->strings["System Page Layout Editor - (advanced)"] = "Lay-out bewerken van systeempagina's (geavanceerd)";
+$a->strings["Use blog/list mode on channel page"] = "Gebruik blog/lijst-modus op kanaalpagina";
+$a->strings["(comments displayed separately)"] = "(reacties worden afzonderlijk weergeven)";
+$a->strings["Use blog/list mode on matrix page"] = "Gebruik blog/lijst-modus op matrixpagina";
+$a->strings["Channel page max height of content (in pixels)"] = "Maximale hoogte berichtinhoud op kanaalpagina (in pixels)";
+$a->strings["click to expand content exceeding this height"] = "klik om inhoud uit te klappen die deze hoogte overschrijdt";
+$a->strings["Matrix page max height of content (in pixels)"] = "Maximale hoogte berichtinhoud op matrixpagina (in pixels)";
+$a->strings["Nobody except yourself"] = "Niemand, behalve jezelf";
+$a->strings["Only those you specifically allow"] = "Alleen connecties met uitdrukkelijke toestemming";
+$a->strings["Approved connections"] = "Geaccepteerde connecties";
+$a->strings["Any connections"] = "Alle connecties";
+$a->strings["Anybody on this website"] = "Iedereen op deze hub";
+$a->strings["Anybody in this network"] = "Iedereen in dit netwerk";
+$a->strings["Anybody authenticated"] = "Geauthenticeerd";
+$a->strings["Anybody on the internet"] = "Iedereen op het internet";
+$a->strings["Publish your default profile in the network directory"] = "Publiceer je standaardprofiel in de kanalengids";
+$a->strings["Allow us to suggest you as a potential friend to new members?"] = "Sta ons toe om jouw kanaal als mogelijke connectie voor te stellen aan nieuwe kanalen";
+$a->strings["or"] = "of";
+$a->strings["Your channel address is"] = "Jouw kanaaladres is";
+$a->strings["Channel Settings"] = "Kanaal-instellingen";
+$a->strings["Basic Settings"] = "Basis-instellingen";
+$a->strings["Your Timezone:"] = "Jouw tijdzone:";
+$a->strings["Default Post Location:"] = "Standaardlocatie bericht:";
+$a->strings["Geographical location to display on your posts"] = "Geografische locatie die bij het bericht moet worden vermeld";
+$a->strings["Use Browser Location:"] = "Locatie van webbrowser gebruiken:";
+$a->strings["Adult Content"] = "Inhoud voor volwassenen";
+$a->strings["This channel frequently or regularly publishes adult content. (Please tag any adult material and/or nudity with #NSFW)"] = "Dit kanaal publiceert regelmatig of vaak materiaal dat alleen geschikt is voor volwassenen. (Gebruik de tag #NSFW in berichten met een seksueel getinte inhoud of ander voor minderjarigen ongeschikt materiaal)";
+$a->strings["Security and Privacy Settings"] = "Veiligheids- en privacy-instellingen";
+$a->strings["Your permissions are already configured. Click to view/adjust"] = "Jouw permissies zijn al ingesteld. Klik om ze te bekijken of aan te passen.";
+$a->strings["Hide my online presence"] = "Verberg mijn aanwezigheid";
+$a->strings["Prevents displaying in your profile that you are online"] = "Voorkomt dat op je kanaal te zien valt dat je momenteel op de RedMatrix aanwezig bent";
+$a->strings["Simple Privacy Settings:"] = "Eenvoudige privacy-instellingen:";
+$a->strings["Very Public - <em>extremely permissive (should be used with caution)</em>"] = "Zeer openbaar <em>(kanaal staat volledig open - moet met grote zorgvuldigheid gebruikt worden)</em>";
+$a->strings["Typical - <em>default public, privacy when desired (similar to social network permissions but with improved privacy)</em>"] = "Normaal <em>(standaard openbaar, maar privacy wanneer noodzakelijk - vergelijkbaar met die van sociale netwerken, maar met verbeterde privacy)</em>";
+$a->strings["Private - <em>default private, never open or public</em>"] = "Privé <em>(standaard privé en nooit openbaar)</em>";
+$a->strings["Blocked - <em>default blocked to/from everybody</em>"] = "Geblokkeerd <em>(standaard geblokkeerd naar/van iedereen)</em>";
+$a->strings["Allow others to tag your posts"] = "Anderen toestaan om je berichten te taggen";
+$a->strings["Often used by the community to retro-actively flag inappropriate content"] = "Vaak in groepen/forums gebruikt om met terugwerkende kracht ongepast materiaal te markeren";
+$a->strings["Advanced Privacy Settings"] = "Geavanceerde privacy-instellingen";
+$a->strings["Expire other channel content after this many days"] = "Inhoud van andere kanalen na zoveel aantal dagen laten verlopen:";
+$a->strings["0 or blank prevents expiration"] = "0 of leeg voorkomt het verlopen";
+$a->strings["Maximum Friend Requests/Day:"] = "Maximum aantal connectieverzoeken per dag:";
+$a->strings["May reduce spam activity"] = "Kan eventuele spam verminderen";
+$a->strings["Default Post Permissions"] = "Standaard permissies voor nieuwe berichten";
+$a->strings["Channel permissions category:"] = "Kanaaltype en -permissies:";
+$a->strings["Maximum private messages per day from unknown people:"] = "Maximum aantal privé-berichten per dag van onbekende personen:";
+$a->strings["Useful to reduce spamming"] = "Kan eventuele spam verminderen";
+$a->strings["Notification Settings"] = "Notificatie-instellingen";
+$a->strings["By default post a status message when:"] = "Plaats automatisch een statusbericht wanneer:";
+$a->strings["accepting a friend request"] = "Een connectieverzoek wordt geaccepteerd";
+$a->strings["joining a forum/community"] = "Je lid wordt van een forum/groep";
+$a->strings["making an <em>interesting</em> profile change"] = "Er sprake is van een <em>interessante</em> profielwijziging";
+$a->strings["Send a notification email when:"] = "Verzend een notificatie per e-mail wanneer:";
+$a->strings["You receive a connection request"] = "Je een connectieverzoek ontvangt";
+$a->strings["Your connections are confirmed"] = "Jouw connecties zijn bevestigd";
+$a->strings["Someone writes on your profile wall"] = "Iemand iets op jouw kanaal heeft geschreven";
+$a->strings["Someone writes a followup comment"] = "Iemand een reactie schrijft";
+$a->strings["You receive a private message"] = "Je een privé-bericht ontvangt";
+$a->strings["You receive a friend suggestion"] = "Je een kanaalvoorstel ontvangt";
+$a->strings["You are tagged in a post"] = "Je expliciet in een bericht bent genoemd";
+$a->strings["You are poked/prodded/etc. in a post"] = "Je bent in een bericht aangestoten/gepord/etc.";
+$a->strings["Show visual notifications including:"] = "Toon de volgende zichtbare notificaties:";
+$a->strings["Unseen matrix activity"] = "Niet bekeken matrix-activiteit";
+$a->strings["Unseen channel activity"] = "Niet bekeken kanaal-activiteit";
+$a->strings["Unseen private messages"] = "Niet bekeken privéberichten";
+$a->strings["Recommended"] = "Aanbevolen";
+$a->strings["Upcoming events"] = "Aankomende gebeurtenissen";
+$a->strings["Events today"] = "Gebeurtissen van vandaag";
+$a->strings["Upcoming birthdays"] = "Aankomende verjaardagen";
+$a->strings["Not available in all themes"] = "Niet in alle thema's beschikbaar";
+$a->strings["System (personal) notifications"] = "(Persoonlijke) systeemnotificaties";
+$a->strings["System info messages"] = "Systeemmededelingen";
+$a->strings["System critical alerts"] = "Kritische systeemwaarschuwingen";
+$a->strings["New connections"] = "Nieuwe connecties";
+$a->strings["System Registrations"] = "Nieuwe accountregistraties op deze hub";
+$a->strings["Also show new wall posts, private messages and connections under Notices"] = "Toon tevens nieuwe kanaalberichten, privéberichten en connecties onder Notificaties";
+$a->strings["Notify me of events this many days in advance"] = "Herinner mij zoveel dagen van te voren aan gebeurtenissen";
+$a->strings["Must be greater than 0"] = "Moet hoger dan 0 zijn";
+$a->strings["Advanced Account/Page Type Settings"] = "Instellingen geavanceerd account/paginatype";
+$a->strings["Change the behaviour of this account for special situations"] = "Verander het gedrag van dit account voor speciale situaties";
+$a->strings["Please enable expert mode (in <a href=\"settings/features\">Settings > Additional features</a>) to adjust!"] = "Schakel de expertmodus in (in <a href=\"settings/features\">Instellingen > Extra functies</a>) om aan te kunnen passen!";
+$a->strings["Miscellaneous Settings"] = "Diverse instellingen";
+$a->strings["Personal menu to display in your channel pages"] = "Persoonlijk menu om op je kanaalpagina's weer te geven";
+$a->strings["Remove this channel"] = "Verwijder dit kanaal";
$a->strings["Could not access contact record."] = "Kon geen toegang krijgen tot de connectie-gegevens.";
$a->strings["Could not locate selected profile."] = "Kon het gekozen profiel niet vinden.";
$a->strings["Connection updated."] = "Connectie bijgewerkt.";
@@ -1148,7 +1281,6 @@ $a->strings["Ignored"] = "Genegeerd";
$a->strings["Hidden"] = "Verborgen";
$a->strings["Archived"] = "Gearchiveerd";
$a->strings["All"] = "Alles";
-$a->strings["Unconnected"] = "Niet verbonden";
$a->strings["Suggest new connections"] = "Nieuwe kanalen voorstellen";
$a->strings["New Connections"] = "Nieuwe connecties";
$a->strings["Show pending (new) connections"] = "Nog te accepteren (nieuwe) connecties weergeven";
@@ -1159,12 +1291,19 @@ $a->strings["Only show blocked connections"] = "Toon alleen geblokkeerde connect
$a->strings["Only show ignored connections"] = "Toon alleen genegeerde connecties";
$a->strings["Only show archived connections"] = "Toon alleen gearchiveerde connecties";
$a->strings["Only show hidden connections"] = "Toon alleen verborgen connecties";
-$a->strings["Only show one-way connections"] = "Toon alleen niet wederzijdse connecties";
$a->strings["%1\$s [%2\$s]"] = "%1\$s [%2\$s]";
-$a->strings["Edit contact"] = "Connectie bewerken";
+$a->strings["Edit connection"] = "Connectie bewerken";
$a->strings["Search your connections"] = "Doorzoek jouw connecties";
$a->strings["Finding: "] = "Zoeken naar: ";
-$a->strings["Edit post"] = "Bericht bewerken";
+$a->strings["You have created %1$.0f of %2$.0f allowed channels."] = "Je hebt %1$.0f van totaal %2$.0f toegestane kanalen aangemaakt.";
+$a->strings["Create a new channel"] = "Nieuw kanaal aanmaken";
+$a->strings["Current Channel"] = "Huidig kanaal";
+$a->strings["Switch to one of your channels by selecting it."] = "Activeer een van jouw andere kanalen door er op te klikken.";
+$a->strings["Default Channel"] = "Standaardkanaal";
+$a->strings["Make Default"] = "Als standaard instellen";
+$a->strings["%d new messages"] = "%d nieuwe berichten";
+$a->strings["%d new introductions"] = "%d nieuwe connectieverzoeken";
+$a->strings["is now connected to"] = "is nu verbonden met";
$a->strings["Could not access address book record."] = "Kon geen toegang krijgen tot de record van de connectie.";
$a->strings["Refresh failed - channel is currently unavailable."] = "Vernieuwen mislukt - kanaal is momenteel niet beschikbaar";
$a->strings["Channel has been unblocked"] = "Kanaal is gedeblokkeerd";
@@ -1180,8 +1319,8 @@ $a->strings["Channel has been approved"] = "Connectie/kanaal is geaccepteerd";
$a->strings["Channel has been unapproved"] = "Connectie/kanaal is afgewezen";
$a->strings["Connection has been removed."] = "Connectie is verwijderd";
$a->strings["View %s's profile"] = "Profiel van %s weergeven";
-$a->strings["Refresh Permissions"] = "Privacy-rechten vernieuwen";
-$a->strings["Fetch updated permissions"] = "Aangepaste privacy-rechten ophalen";
+$a->strings["Refresh Permissions"] = "Permissies vernieuwen";
+$a->strings["Fetch updated permissions"] = "Aangepaste permissies ophalen";
$a->strings["Recent Activity"] = "Recente activiteit";
$a->strings["View recent posts and comments"] = "Recente berichten en reacties weergeven";
$a->strings["Unblock"] = "Deblokkeren";
@@ -1199,12 +1338,12 @@ $a->strings["Hide or Unhide this connection"] = "Deze connectie verbergen of nie
$a->strings["Delete this connection"] = "Deze connectie verwijderen";
$a->strings["Approve this connection"] = "Deze connectie accepteren";
$a->strings["Accept connection to allow communication"] = "Keur deze connectie goed om communicatie toe te staan";
-$a->strings["Automatic Permissions Settings"] = "Automatische privacy-rechten";
$a->strings["Connections: settings for %s"] = "Connecties: instellingen voor %s";
-$a->strings["When receiving a channel introduction, any permissions provided here will be applied to the new connection automatically and the introduction approved. Leave this page if you do not wish to use this feature."] = "Wanneer je een connectieverzoek voor een kanaal ontvangt, zullen alle privacy-rechten hier automatisch op de nieuwe connectie worden toegepast en het connectieverzoek worden geaccepteerd. Verlaat deze pagina wanneer je geen gebruik wil maken van deze functie.";
+$a->strings["Apply these permissions automatically"] = "Deze permissies automatisch toepassen";
+$a->strings["Apply the permissions indicated on this page to all new connections."] = "Permissies die op deze pagina staan vermeldt op alle nieuwe connecties toepassen.";
$a->strings["Slide to adjust your degree of friendship"] = "Schuif om te bepalen hoe goed je iemand kent en/of mag";
$a->strings["inherited"] = "geërfd";
-$a->strings["Connection has no individual permissions!"] = "Connectie heeft geen individuele privacy-rechten!";
+$a->strings["Connection has no individual permissions!"] = "Connectie heeft geen individuele permissies!";
$a->strings["This may be appropriate based on your <a href=\"settings\">privacy settings</a>, though you may wish to review the \"Advanced Permissions\"."] = "Dit is mogelijk voldoende, wanneer er naar jouw <a href=\"settings\">privacy-instellingen</a> wordt gekeken. Hoewel je wellicht de geavanceerde rechten wil nagaan.";
$a->strings["Profile Visibility"] = "Zichtbaarheid profiel";
$a->strings["Please choose the profile you would like to display to %s when viewing your profile securely."] = "Kies het profiel dat je aan %s wil tonen wanneer hij/zij ingelogd jouw profiel wil bekijken.";
@@ -1212,16 +1351,16 @@ $a->strings["Contact Information / Notes"] = "Informatie/aantekeningen over conn
$a->strings["Edit contact notes"] = "Bewerk aantekeningen over contact";
$a->strings["Their Settings"] = "Hun instellingen";
$a->strings["My Settings"] = "Mijn instellingen";
-$a->strings["Clear/Disable Automatic Permissions"] = "Verwijderen/uitschakelen automatische privacy-rechten";
-$a->strings["Forum Members"] = "Forum/groepsleden";
+$a->strings["Clear/Disable Automatic Permissions"] = "Verwijderen/uitschakelen automatische permissies";
+$a->strings["Forum Members"] = "Forumleden";
$a->strings["Soapbox"] = "Zeepkist";
$a->strings["Full Sharing (typical social network permissions)"] = "Voluit delen (vergelijkbaar met die van sociale netwerken)";
$a->strings["Cautious Sharing "] = "Voorzichtig delen";
$a->strings["Follow Only"] = "Alleen volgen";
-$a->strings["Individual Permissions"] = "Individuele privacy-rechten";
-$a->strings["Some permissions may be inherited from your channel <a href=\"settings\">privacy settings</a>, which have higher priority than individual settings. Changing those inherited settings on this page will have no effect."] = "Sommige privacy-rechten kunnen worden overgeërfd van de <a href=\"settings\">privacy-instellingen</a> van jouw kanaal. Wanneer je deze geërfde instellingen op deze pagina veranderd heeft dat geen effect.";
-$a->strings["Advanced Permissions"] = "Geavanceerde privacy-rechten";
-$a->strings["Simple Permissions (select one and submit)"] = "Eenvoudige privacy-rechten (selecteer er één en opslaan)";
+$a->strings["Individual Permissions"] = "Individuele permissies";
+$a->strings["Some permissions may be inherited from your channel <a href=\"settings\">privacy settings</a>, which have higher priority than individual settings. Changing those inherited settings on this page will have no effect."] = "Sommige permissies kunnen worden overgeërfd van de <a href=\"settings\">privacy-instellingen</a> van jouw kanaal. Wanneer je deze geërfde instellingen op deze pagina veranderd heeft dat geen effect.";
+$a->strings["Advanced Permissions"] = "Geavanceerde permissies";
+$a->strings["Simple Permissions (select one and submit)"] = "Eenvoudige permissies (selecteer er één en opslaan)";
$a->strings["Visit %s's profile - %s"] = "Profiel van %s bezoeken - %s";
$a->strings["Block/Unblock contact"] = "Connectie blokkeren/deblokkeren";
$a->strings["Ignore contact"] = "Connectie negeren";
@@ -1237,42 +1376,165 @@ $a->strings["Currently archived"] = "Momenteel gearchiveerd";
$a->strings["Currently pending"] = "Moeten nog geaccepteerd of afgewezen worden";
$a->strings["Hide this contact from others"] = "Verberg deze connectie voor anderen";
$a->strings["Replies/likes to your public posts <strong>may</strong> still be visible"] = "Reacties/vind-ik-leuks op jouw openbare berichten <strong>kunnen</strong> zichtbaar blijven";
-$a->strings["No potential page delegates located."] = "Geen gevolmachtigde personen gevonden waaraan mogelijk het accountbeheer kan worden uitbesteed.";
-$a->strings["Delegate Page Management"] = "Accountbeheer uitbesteden";
-$a->strings["Delegates are able to manage all aspects of this account/page except for basic account settings. Please do not delegate your personal account to anybody that you do not trust completely."] = "Gevolmachtigde personen zijn in staat om alle aspecten van dit account te beheren, behalve enkele basisinstellingen. Besteed het beheer van je persoonlijke account niet aan iemand uit die je niet volledig vertrouwd.";
-$a->strings["Existing Page Managers"] = "Bestaande accountbeheerders";
-$a->strings["Existing Page Delegates"] = "Bestaande gevolmachtigde accountbeheerders";
-$a->strings["Potential Delegates"] = "Gevolmachtigde personen waaraan mogelijk het accountbeheer kan worden uitbesteed.";
-$a->strings["Remove"] = "Verwijderen";
-$a->strings["Add"] = "Toevoegen";
-$a->strings["No entries."] = "Geen";
-$a->strings["Public access denied."] = "Openbare toegang geweigerd.";
-$a->strings["Gender: "] = "Geslacht:";
-$a->strings["Finding:"] = "Gezocht naar:";
-$a->strings["next page"] = "volgende pagina";
-$a->strings["previous page"] = "vorige pagina";
-$a->strings["No entries (some entries may be hidden)."] = "Niets gevonden (sommige kanalen kunnen verborgen zijn).";
-$a->strings["Status: "] = "Status: ";
-$a->strings["Sexual Preference: "] = "Seksuele voorkeur: ";
-$a->strings["Homepage: "] = "Homepage: ";
-$a->strings["Hometown: "] = "Woonplaats: ";
-$a->strings["About: "] = "Over: ";
-$a->strings["Keywords: "] = "Trefwoorden: ";
+$a->strings["Unable to lookup recipient."] = "Niet in staat om ontvanger op te zoeken.";
+$a->strings["Unable to communicate with requested channel."] = "Niet in staat om met het aangevraagde kanaal te communiceren.";
+$a->strings["Cannot verify requested channel."] = "Kan opgevraagd kanaal niet verifieren";
+$a->strings["Selected channel has private message restrictions. Send failed."] = "Gekozen kanaal heeft restricties voor privéberichten. Verzenden mislukt.";
+$a->strings["Message deleted."] = "Bericht verwijderd.";
+$a->strings["Message recalled."] = "Bericht ingetrokken.";
+$a->strings["Send Private Message"] = "Privébericht versturen";
+$a->strings["To:"] = "Aan:";
+$a->strings["Subject:"] = "Onderwerp:";
+$a->strings["Your message:"] = "Jouw bericht:";
+$a->strings["Send"] = "Verzenden";
+$a->strings["Message not found."] = "Bericht niet gevonden";
+$a->strings["Delete message"] = "Bericht verwijderen";
+$a->strings["Recall message"] = "Bericht intrekken";
+$a->strings["Message has been recalled."] = "Bericht is ingetrokken.";
+$a->strings["Private Conversation"] = "Privéconversatie";
+$a->strings["Delete conversation"] = "Verwijder conversatie";
+$a->strings["No secure communications available. You <strong>may</strong> be able to respond from the sender's profile page."] = "Geen veilige communicatie beschikbaar. <strong>Mogelijk</strong> kan je reageren op de kanaalpagina van de afzender.";
+$a->strings["Send Reply"] = "Antwoord versturen";
+$a->strings["Bookmark added"] = "Bladwijzer toegevoegd";
+$a->strings["My Bookmarks"] = "Mijn bladwijzers";
+$a->strings["My Connections Bookmarks"] = "Bladwijzers van mijn connecties";
$a->strings["This site is not a directory server"] = "Deze hub is geen kanalengidshub (directoryserver)";
-$a->strings["Red Matrix - &quot;The Network&quot;"] = "Red Matrix - &quot;The Network&quot;";
+$a->strings["RedMatrix - Guests: Username: {your email address}, Password: +++"] = "RedMatrix - gasttoegang: Toegangsnaam: {jouw e-mailadres}, wachtwoord: +++";
+$a->strings["network"] = "netwerk";
+$a->strings["Block Name"] = "Bloknaam";
+$a->strings["Edit Block"] = "Blok bewerken";
+$a->strings["Delete block?"] = "Blok verwijderen";
+$a->strings["Delete Block"] = "Blok verwijderen";
+$a->strings["Layout updated."] = "Lay-out bijgewerkt.";
+$a->strings["Edit System Page Description"] = "Systeempagina's bewerken";
+$a->strings["Layout not found."] = "Lay-out niet gevonden.";
+$a->strings["Module Name:"] = "Modulenaam:";
+$a->strings["Layout Help"] = "Lay-out-hulp";
+$a->strings["Edit Layout"] = "Lay-out bewerken";
+$a->strings["Delete layout?"] = "Lay-out verwijderen?";
+$a->strings["Delete Layout"] = "Lay-out verwijderen";
+$a->strings["Red Matrix - &quot;The Network&quot;"] = "RedMatrix - &quot;The Network&quot;";
$a->strings["Welcome to %s"] = "Welkom op %s";
-$a->strings["Red Matrix Server - Setup"] = "Red Matrix Server - Setup";
+$a->strings["Edit Webpage"] = "Webpagina bewerken";
+$a->strings["Delete webpage?"] = "Webpagina verwijderen?";
+$a->strings["Delete Webpage"] = "Webpagina verwijderen";
+$a->strings["webpage"] = "Webpagina";
+$a->strings["block"] = "blok";
+$a->strings["layout"] = "lay-out";
+$a->strings["%s element installed"] = "%s onderdeel geïnstalleerd";
+$a->strings["Image uploaded but image cropping failed."] = "Afbeelding geüpload, maar afbeelding kon niet worden bijgesneden. ";
+$a->strings["Image resize failed."] = "Afbeelding kon niet van grootte veranderd worden.";
+$a->strings["Shift-reload the page or clear browser cache if the new photo does not display immediately."] = "Vernieuw de pagina met shift+R of shift+F5, of leeg je browserbuffer, wanneer de nieuwe foto niet meteen wordt weergegeven.";
+$a->strings["Image exceeds size limit of %d"] = "Afbeeldingsgrootte overschrijdt het limiet van %d";
+$a->strings["Unable to process image."] = "Niet in staat om afbeelding te verwerken.";
+$a->strings["Photo not available."] = "Foto niet beschikbaar.";
+$a->strings["Upload File:"] = "Bestand uploaden:";
+$a->strings["Select a profile:"] = "Kies een profiel:";
+$a->strings["Upload Profile Photo"] = "Profielfoto uploaden";
+$a->strings["skip this step"] = "sla deze stap over";
+$a->strings["select a photo from your photo albums"] = "Kies een foto uit jouw fotoalbums";
+$a->strings["Crop Image"] = "Afbeelding bijsnijden";
+$a->strings["Please adjust the image cropping for optimum viewing."] = "Snij de afbeelding zo uit dat deze optimaal wordt weergegeven.";
+$a->strings["Done Editing"] = "Klaar met bewerken";
+$a->strings["Image uploaded successfully."] = "Uploaden afbeelding geslaagd";
+$a->strings["Image upload failed."] = "Uploaden afbeelding mislukt";
+$a->strings["Image size reduction [%s] failed."] = "Verkleinen [%s] van afbeelding mislukt.";
+$a->strings["Like/Dislike"] = "Leuk/niet leuk";
+$a->strings["This action is restricted to members."] = "Deze actie kan alleen door mensen met een RedMatrix-account worden uitgevoerd.";
+$a->strings["Please <a href=\"rmagic\">login with your RedMatrix ID</a> or <a href=\"register\">register as a new RedMatrix member</a> to continue."] = "Je dient <a href=\"rmagic\">in te loggen met je RedMatrix-account</a> of <a href=\"register\">een nieuw RedMatrix-account te registreren</a> om verder te kunnen gaan.";
+$a->strings["Invalid request."] = "Ongeldig verzoek";
+$a->strings["thing"] = "ding";
+$a->strings["Channel unavailable."] = "Kanaal niet beschikbaar.";
+$a->strings["Previous action reversed."] = "Vorige actie omgedraaid";
+$a->strings["Action completed."] = "Actie voltooid";
+$a->strings["Thank you."] = "Bedankt";
+$a->strings["Help:"] = "Hulp:";
+$a->strings["Not Found"] = "Niet gevonden";
+$a->strings["Thing updated"] = "Ding bijgewerkt";
+$a->strings["Object store: failed"] = "Opslaan van ding mislukt";
+$a->strings["Thing added"] = "Ding toegevoegd";
+$a->strings["OBJ: %1\$s %2\$s %3\$s"] = "OBJ: %1\$s %2\$s %3\$s";
+$a->strings["Show Thing"] = "Ding weergeven";
+$a->strings["item not found."] = "Item niet gevonden";
+$a->strings["Edit Thing"] = "Ding bewerken";
+$a->strings["Select a profile"] = "Kies een profiel";
+$a->strings["Post an activity"] = "Plaats een bericht";
+$a->strings["Only sends to viewers of the applicable profile"] = "Toont dit alleen aan diegene die het gekozen profiel mogen zien.";
+$a->strings["Name of thing e.g. something"] = "Naam van ding";
+$a->strings["URL of thing (optional)"] = "URL van ding (optioneel)";
+$a->strings["URL for photo of thing (optional)"] = "URL van foto van ding (optioneel)";
+$a->strings["Add Thing to your Profile"] = "Ding aan je profiel toevoegen";
+$a->strings["Contact not found."] = "Contact niet gevonden";
+$a->strings["Friend suggestion sent."] = "Kanaalvoorstel verzonden.";
+$a->strings["Suggest Friends"] = "Kanalen voorstellen";
+$a->strings["Suggest a friend for %s"] = "Stel een kanaal voor aan %s";
+$a->strings["Permission Denied."] = "Toegang geweigerd";
+$a->strings["File not found."] = "Bestand niet gevonden.";
+$a->strings["Edit file permissions"] = "Bestandsrechten bewerken";
+$a->strings["Set/edit permissions"] = "Rechten instellen/bewerken";
+$a->strings["Include all files and sub folders"] = "Toepassen op alle bestanden en submappen";
+$a->strings["Return to file list"] = "Terugkeren naar bestandlijst ";
+$a->strings["Copy/paste this code to attach file to a post"] = "Kopieer/plak deze code om het bestand aan een bericht te koppelen";
+$a->strings["Copy/paste this URL to link file from a web page"] = "Kopieer/plak deze URL om het bestand aan een externe webpagina te koppelen";
+$a->strings["Continue"] = "Ga verder";
+$a->strings["Premium Channel Setup"] = "Instellen premiumkanaal ";
+$a->strings["Enable premium channel connection restrictions"] = "Restricties voor connecties van premiumkanaal toestaan";
+$a->strings["Please enter your restrictions or conditions, such as paypal receipt, usage guidelines, etc."] = "Vul je restricties of voorwaarden in, zoals een paypal-afschrift, voorschriften voor leden, enz.";
+$a->strings["This channel may require additional steps or acknowledgement of the following conditions prior to connecting:"] = "Dit kanaal kan extra stappen of het accepteren van de volgende voorwaarden vereisen, voordat de connectie wordt geaccepteerd:";
+$a->strings["Potential connections will then see the following text before proceeding:"] = "Mogelijke connecties zullen dan de volgende tekst zien voordat ze verder kunnen:";
+$a->strings["By continuing, I certify that I have complied with any instructions provided on this page."] = "Door verder te gaan ga ik automatisch akkoord met alle voorwaarden en aanwijzingen op deze pagina.";
+$a->strings["(No specific instructions have been provided by the channel owner.)"] = "(Er zijn geen speciale voorwaarden en aanwijzingen door de kanaal-eigenaar verstrekt) ";
+$a->strings["Restricted or Premium Channel"] = "Beperkt of premiumkanaal";
+$a->strings["- select -"] = "- kies map -";
+$a->strings["Location not found."] = "Locatie niet gevonden.";
+$a->strings["Primary location cannot be removed."] = "Primaire locatie kan niet worden verwijderd.";
+$a->strings["No locations found."] = "Geen locaties gevonden.";
+$a->strings["Manage Channel Locations"] = "Kanaallocaties beheren";
+$a->strings["Location (address)"] = "Locatie (adres)";
+$a->strings["Primary Location"] = "Primaire locatie";
+$a->strings["Drop location"] = "Locatie verwijderen";
+$a->strings["Channel added."] = "Kanaal toegevoegd.";
+$a->strings["Your service plan only allows %d channels."] = "Jouw abonnement staat maar %d kanalen toe.";
+$a->strings["Nothing to import."] = "Niets gevonden om te importeren";
+$a->strings["Unable to download data from old server"] = "Niet in staat om gegevens van de oude hub te downloaden";
+$a->strings["Imported file is empty."] = "Geïmporteerde bestand is leeg";
+$a->strings["Cannot create a duplicate channel identifier on this system. Import failed."] = "Kan geen dubbele kanaal-identificator op deze hub aanmaken. Importeren mislukt.";
+$a->strings["Unable to create a unique channel address. Import failed."] = "Niet in staat om een uniek kanaaladres aan te maken. Importeren is mislukt.";
+$a->strings["Channel clone failed. Import failed."] = "Het klonen van het kanaal is mislukt. Importeren mislukt.";
+$a->strings["Cloned channel not found. Import failed."] = "Gekloond kanaal niet gevonden. Importeren mislukt.";
+$a->strings["Import completed."] = "Import voltooid.";
+$a->strings["You must be logged in to use this feature."] = "Je moet ingelogd zijn om dit onderdeel te kunnen gebruiken.";
+$a->strings["Import Channel"] = "Kanaal importeren";
+$a->strings["Use this form to import an existing channel from a different server/hub. You may retrieve the channel identity from the old server/hub via the network or provide an export file. Only identity and connections/relationships will be imported. Importation of content is not yet available."] = "Gebruik dit formulier om een bestaand kanaal te importeren van een andere hub. Je kan de kanaal-identiteit van de oude hub via het netwerk ontvangen of een exportbestand verstrekken. Alleen de identiteit en de connecties zullen geïmporteerd worden. Het importeren van inhoud is nog niet beschikbaar.";
+$a->strings["File to Upload"] = "Bestand om te uploaden";
+$a->strings["Or provide the old server/hub details"] = "Of vul de gegevens van de oude hub in";
+$a->strings["Your old identity address (xyz@example.com)"] = "Jouw oude kanaaladres (xyz@example.com)";
+$a->strings["Your old login email address"] = "Het e-mailadres van je oude account";
+$a->strings["Your old login password"] = "Wachtwoord van jouw oude account";
+$a->strings["For either option, please choose whether to make this hub your new primary address, or whether your old location should continue this role. You will be able to post from either location, but only one can be marked as the primary location for files, photos, and media."] = "Voor elke optie geldt dat je moet kiezen of je jouw primaire kanaaladres op deze hub wil instellen of dat jouw oude hub deze rol blijft vervullen.";
+$a->strings["Make this hub my primary location"] = "Stel deze hub als mijn primaire locatie in";
+$a->strings["Import existing posts if possible"] = "Importeer bestaande berichten (wanneer mogelijk)";
+$a->strings["Unable to locate original post."] = "Niet in staat om de originele locatie van het bericht te vinden. ";
+$a->strings["Empty post discarded."] = "Leeg bericht geannuleerd";
+$a->strings["Executable content type not permitted to this channel."] = "Uitvoerbare bestanden zijn niet toegestaan op dit kanaal.";
+$a->strings["System error. Post not saved."] = "Systeemfout. Bericht niet opgeslagen.";
+$a->strings["You have reached your limit of %1$.0f top level posts."] = "Je hebt jouw limiet van %1$.0f berichten bereikt.";
+$a->strings["You have reached your limit of %1$.0f webpages."] = "Je hebt jouw limiet van %1$.0f webpagina's bereikt.";
+$a->strings["No suggestions available. If this is a new site, please try again in 24 hours."] = "Geen voorgestelde kanalen gevonden. Wanneer dit een nieuwe hub is, probeer het dan over 24 uur weer.";
+$a->strings["Help with this feature"] = "Hulp voor dit onderdeel";
+$a->strings["Layout Name"] = "Naam lay-out";
+$a->strings["%1\$s tagged %2\$s's %3\$s with %4\$s"] = "%1\$s heeft het %3\$s van %2\$s getagd met %4\$s";
+$a->strings["Red Matrix Server - Setup"] = "RedMatrix Server - Setup";
$a->strings["Could not connect to database."] = "Could not connect to database.";
$a->strings["Could not connect to specified site URL. Possible SSL certificate or DNS issue."] = "Could not connect to specified hub URL. Possible SSL certificate or DNS issue.";
$a->strings["Could not create table."] = "Could not create table.";
$a->strings["Your site database has been installed."] = "Your hub database has been installed.";
-$a->strings["You may need to import the file \"install/database.sql\" manually using phpmyadmin or mysql."] = "You may need to import the file \"install/database.sql\" manually using phpmyadmin or mysql.";
+$a->strings["You may need to import the file \"install/schema_xxx.sql\" manually using a database client."] = "You may need to import the file \"install/schema_xxx.sql\" manually using a database client.";
$a->strings["Please see the file \"install/INSTALL.txt\"."] = "Please see the file \"install/INSTALL.txt\".";
$a->strings["System check"] = "System check";
-$a->strings["Next"] = "Volgende";
$a->strings["Check again"] = "Check again";
$a->strings["Database connection"] = "Database connection";
-$a->strings["In order to install Red Matrix we need to know how to connect to your database."] = "In order to install Red Matrix we need to know how to connect to your database.";
+$a->strings["In order to install Red Matrix we need to know how to connect to your database."] = "In order to install RedMatrix we need to know how to connect to your database.";
$a->strings["Please contact your hosting provider or site administrator if you have questions about these settings."] = "Please contact your hosting provider or site administrator if you have questions about these settings.";
$a->strings["The database you specify below should already exist. If it does not, please create it before continuing."] = "The database you specify below should already exist. If it does not, please create it before continuing.";
$a->strings["Database Server Name"] = "Database Server Name";
@@ -1282,6 +1544,7 @@ $a->strings["Communication port number - use 0 for default"] = "Communication po
$a->strings["Database Login Name"] = "Database Login Name";
$a->strings["Database Login Password"] = "Database Login Password";
$a->strings["Database Name"] = "Database Name";
+$a->strings["Database Type"] = "Database Type";
$a->strings["Site administrator email address"] = "Hub administrator email address";
$a->strings["Your account email address must match this in order to use the web admin panel."] = "Your account email address must match this in order to use the web admin panel.";
$a->strings["Website URL"] = "Hub URL";
@@ -1302,7 +1565,7 @@ $a->strings["Generate encryption keys"] = "Generate encryption keys";
$a->strings["libCurl PHP module"] = "libCurl PHP module";
$a->strings["GD graphics PHP module"] = "GD graphics PHP module";
$a->strings["OpenSSL PHP module"] = "OpenSSL PHP module";
-$a->strings["mysqli PHP module"] = "mysqli PHP module";
+$a->strings["mysqli or postgres PHP module"] = "mysqli or postgres PHP module";
$a->strings["mb_string PHP module"] = "mb_string PHP module";
$a->strings["mcrypt PHP module"] = "mcrypt PHP module";
$a->strings["Apache mod_rewrite module"] = "Apache mod_rewrite module";
@@ -1312,160 +1575,37 @@ $a->strings["Error: proc_open is required but is either not installed or has bee
$a->strings["Error: libCURL PHP module required but not installed."] = "Error: libCURL PHP module required but not installed.";
$a->strings["Error: GD graphics PHP module with JPEG support required but not installed."] = "Error: GD graphics PHP module with JPEG support required but not installed.";
$a->strings["Error: openssl PHP module required but not installed."] = "Error: openssl PHP module required but not installed.";
-$a->strings["Error: mysqli PHP module required but not installed."] = "Error: mysqli PHP module required but not installed.";
+$a->strings["Error: mysqli or postgres PHP module required but neither are installed."] = "Error: mysqli or postgres PHP module required but neither are installed.";
$a->strings["Error: mb_string PHP module required but not installed."] = "Error: mb_string PHP module required but not installed.";
$a->strings["Error: mcrypt PHP module required but not installed."] = "Error: mcrypt PHP module required but not installed.";
-$a->strings["The web installer needs to be able to create a file called \".htconfig.php\ in the top folder of your web server and it is unable to do so."] = "The web installer needs to be able to create a file called \".htconfig.php\" in the top folder of your web server and it is unable to do so.";
+$a->strings["The web installer needs to be able to create a file called \".htconfig.php\" in the top folder of your web server and it is unable to do so."] = "The web installer needs to be able to create a file called \".htconfig.php\" in the top folder of your web server and it is unable to do so.";
$a->strings["This is most often a permission setting, as the web server may not be able to write files in your folder - even if you can."] = "This is most often a permission setting, as the web server may not be able to write files in your folder - even if you can.";
$a->strings["At the end of this procedure, we will give you a text to save in a file named .htconfig.php in your Red top folder."] = "At the end of this procedure, we will give you a text to save in a file named .htconfig.php in your Red top folder.";
$a->strings["You can alternatively skip this procedure and perform a manual installation. Please see the file \"install/INSTALL.txt\" for instructions."] = "You can alternatively skip this procedure and perform a manual installation. Please see the file \"install/INSTALL.txt\" for instructions.";
$a->strings[".htconfig.php is writable"] = ".htconfig.php is writable";
$a->strings["Red uses the Smarty3 template engine to render its web views. Smarty3 compiles templates to PHP to speed up rendering."] = "Red uses the Smarty3 template engine to render its web views. Smarty3 compiles templates to PHP to speed up rendering.";
-$a->strings["In order to store these compiled templates, the web server needs to have write access to the directory view/tpl/smarty3/ under the Red top level folder."] = "In order to store these compiled templates, the web server needs to have write access to the directory view/tpl/smarty3/ under the Red top level folder.";
+$a->strings["In order to store these compiled templates, the web server needs to have write access to the directory %s under the Red top level folder."] = "In order to store these compiled templates, the web server needs to have write access to the directory %s under the Red top level folder.";
$a->strings["Please ensure that the user that your web server runs as (e.g. www-data) has write access to this folder."] = "Please ensure that the user that your web server runs as (e.g. www-data) has write access to this folder.";
-$a->strings["Note: as a security measure, you should give the web server write access to view/tpl/smarty3/ only--not the template files (.tpl) that it contains."] = "Note: as a security measure, you should give the web server write access to view/tpl/smarty3/ only--not the template files (.tpl) that it contains.";
-$a->strings["view/tpl/smarty3 is writable"] = "view/tpl/smarty3 is writable";
+$a->strings["Note: as a security measure, you should give the web server write access to %s only--not the template files (.tpl) that it contains."] = "Note: as a security measure, you should give the web server write access to %s only--not the template files (.tpl) that it contains.";
+$a->strings["%s is writable"] = "%s is writable";
$a->strings["Red uses the store directory to save uploaded files. The web server needs to have write access to the store directory under the Red top level folder"] = "Red uses the store directory to save uploaded files. The web server needs to have write access to the store directory under the Red top level folder";
$a->strings["store is writable"] = "store is writable";
$a->strings["SSL certificate cannot be validated. Fix certificate or disable https access to this site."] = "SSL certificate cannot be validated. Fix certificate or disable https access to this hub.";
$a->strings["If you have https access to your website or allow connections to TCP port 443 (the https: port), you MUST use a browser-valid certificate. You MUST NOT use self-signed certificates!"] = "If you have https access to your hub or allow connections to TCP port 443 (the https: port), you MUST use a browser-valid certificate. You MUST NOT use self-signed certificates!";
$a->strings["This restriction is incorporated because public posts from you may for example contain references to images on your own hub."] = "This restriction is incorporated because public posts from you may for example contain references to images on your own hub.";
-$a->strings["If your certificate is not recognised, members of other sites (who may themselves have valid certificates) will get a warning message on their own site complaining about security issues."] = "If your certificate is not recognised, members of other hubs (who may themselves have valid certificates) will get a warning message on their own site complaining about security issues.";
+$a->strings["If your certificate is not recognized, members of other sites (who may themselves have valid certificates) will get a warning message on their own site complaining about security issues."] = "If your certificate is not recognized, members of other hubs (who may themselves have valid certificates) will get a warning message on their own hub complaining about security issues.";
$a->strings["This can cause usability issues elsewhere (not just on your own site) so we must insist on this requirement."] = "This can cause usability issues elsewhere (not just on your own hub) so we must insist on this requirement.";
$a->strings["Providers are available that issue free certificates which are browser-valid."] = "Providers are available that issue free certificates which are browser-valid.";
$a->strings["SSL certificate validation"] = "SSL certificate validation";
-$a->strings["Url rewrite in .htaccess is not working. Check your server configuration."] = "Url rewrite in .htaccess is not working. Check your server configuration.";
+$a->strings["Url rewrite in .htaccess is not working. Check your server configuration.Test: "] = "Url rewrite in .htaccess is not working. Check your server configuration.Test: ";
$a->strings["Url rewrite is working"] = "Url rewrite is working";
$a->strings["The database configuration file \".htconfig.php\" could not be written. Please use the enclosed text to create a configuration file in your web server root."] = "The database configuration file \".htconfig.php\" could not be written. Please use the enclosed text to create a configuration file in your web server root.";
$a->strings["Errors encountered creating database tables."] = "Errors encountered creating database tables.";
$a->strings["<h1>What next</h1>"] = "<h1>Wat nu</h1>";
$a->strings["IMPORTANT: You will need to [manually] setup a scheduled task for the poller."] = "IMPORTANT: You will need to [manually] setup a scheduled task for the poller.";
-$a->strings["Item not found"] = "Item niet gevonden";
-$a->strings["Edit Block"] = "Blok bewerken";
-$a->strings["Delete block?"] = "Blok verwijderen";
-$a->strings["Insert YouTube video"] = "YouTube-video invoegen";
-$a->strings["Insert Vorbis [.ogg] video"] = "Vorbis-video [.ogg] invoegen";
-$a->strings["Insert Vorbis [.ogg] audio"] = "Vorbis-audio [.ogg] invoegen";
-$a->strings["Delete Block"] = "Blok verwijderen";
-$a->strings["Layout updated."] = "Layout bijgewerkt.";
-$a->strings["Edit System Page Description"] = "Systeempagina's bewerken";
-$a->strings["Layout not found."] = "Lay-out niet gevonden.";
-$a->strings["Module Name:"] = "Modulenaam:";
-$a->strings["Layout Help"] = "Lay-out-hulp";
-$a->strings["Edit Layout"] = "Lay-out bewerken";
-$a->strings["Delete layout?"] = "Lay-out verwijderen?";
-$a->strings["Delete Layout"] = "Lay-out verwijderen";
-$a->strings["Item is not editable"] = "Item is niet te bewerken";
-$a->strings["Delete item?"] = "Item verwijderen?";
-$a->strings["Edit Webpage"] = "Webpagina bewerken";
-$a->strings["Delete webpage?"] = "Webpagina verwijderen?";
-$a->strings["Delete Webpage"] = "Webpagina verwijderen";
-$a->strings["Version %s"] = "Versie %s";
-$a->strings["Installed plugins/addons/apps:"] = "Ingeschakelde plug-ins/add-ons/apps:";
-$a->strings["No installed plugins/addons/apps"] = "Geen ingeschakelde plug-ins/add-ons/apps";
-$a->strings["Red"] = "Red";
-$a->strings["This is a hub of the Red Matrix - a global cooperative network of decentralised privacy enhanced websites."] = "Dit is een Red Matrix-hub - een wereldwijd coöperatief netwerk van gedecentraliseerde websites met verbeterende privacy.";
-$a->strings["Running at web location"] = "Draaiend op weblocatie";
-$a->strings["Please visit <a href=\"http://getzot.com\">GetZot.com</a> to learn more about the Red Matrix."] = "Bezoek <a href=\"http://redmatrix.me\">RedMatrix.me</a> om meer te leren over de Red Matrix.";
-$a->strings["Bug reports and issues: please visit"] = "Bugrapporten en andere kwesties: bezoek";
-$a->strings["Suggestions, praise, etc. - please email \"redmatrix\" at librelist - dot com"] = "Voorstellen, lofbetuigingen, enz. - e-mail \"redmatrix\" at librelist - dot com";
-$a->strings["Site Administrators"] = "Hubbeheerders";
-$a->strings["Page owner information could not be retrieved."] = "Informatie over de pagina-eigenaar werd niet ontvangen.";
-$a->strings["Album not found."] = "Album niet gevonden.";
-$a->strings["Delete Album"] = "Verwijder album";
-$a->strings["Delete Photo"] = "Verwijder foto";
-$a->strings["No photos selected"] = "Geen foto's geselecteerd";
-$a->strings["Access to this item is restricted."] = "Toegang tot dit item is beperkt.";
-$a->strings["You have used %1$.2f Mbytes of %2$.2f Mbytes photo storage."] = "Je gebruiker %1$.2f MB van totaal %2$.2f MB foto-opslagruimte.";
-$a->strings["You have used %1$.2f Mbytes of photo storage."] = "Je gebruikt %1$.2f MB aan foto-opslagruimte.";
-$a->strings["Upload Photos"] = "Foto's uploaden";
-$a->strings["New album name: "] = "Nieuwe albumnaam: ";
-$a->strings["or existing album name: "] = "of een bestaande albumnaam: ";
-$a->strings["Do not show a status post for this upload"] = "Plaats geen bericht voor deze upload.";
-$a->strings["Contact Photos"] = "Connectiefoto's";
-$a->strings["Edit Album"] = "Album bewerken";
-$a->strings["Show Newest First"] = "Nieuwste eerst weergeven";
-$a->strings["Show Oldest First"] = "Oudste eerst weergeven";
-$a->strings["View Photo"] = "Foto weergeven";
-$a->strings["Permission denied. Access to this item may be restricted."] = "Toegang geweigerd. Toegang tot dit item kan zijn beperkt.";
-$a->strings["Photo not available"] = "Foto niet aanwezig";
-$a->strings["Use as profile photo"] = "Als profielfoto gebruiken";
-$a->strings["View Full Size"] = "Volledige grootte weergeven";
-$a->strings["Edit photo"] = "Foto bewerken";
-$a->strings["Rotate CW (right)"] = "Draai met de klok mee (naar rechts)";
-$a->strings["Rotate CCW (left)"] = "Draai tegen de klok in (naar links)";
-$a->strings["New album name"] = "Nieuwe albumnaam";
-$a->strings["Caption"] = "Bijschrift";
-$a->strings["Add a Tag"] = "Label toevoegen";
-$a->strings["Example: @bob, @Barbara_Jensen, @jim@example.com, #California, #camping"] = "Voorbeeld: @bob, @Barbara_Jansen, @jan@example.com, #Friesland, #camping";
-$a->strings["In This Photo:"] = "Op deze foto:";
-$a->strings["View Album"] = "Album weergeven";
-$a->strings["Recent Photos"] = "Recente foto's";
-$a->strings["Failed to create source. No channel selected."] = "Aanmaken bron mislukt. Geen kanaal geselecteerd.";
-$a->strings["Source created."] = "Bron aangemaakt.";
-$a->strings["Source updated."] = "Bron aangemaakt.";
-$a->strings["*"] = "*";
-$a->strings["Manage remote sources of content for your channel."] = "Beheer externe bronnen met inhoud voor jouw kanaal";
-$a->strings["New Source"] = "Nieuwe bron";
-$a->strings["Import all or selected content from the following channel into this channel and distribute it according to your channel settings."] = "Importeer complete of gedeelde inhoud vanuit het volgende kanaal naar dit kanaal, en verdeel het vervolgens volgens jouw kanaalinstellingen.";
-$a->strings["Only import content with these words (one per line)"] = "Importeer alleen inhoud met deze woorden (één per regel)";
-$a->strings["Leave blank to import all public content"] = "Laat leeg om alle openbare inhoud te importeren";
-$a->strings["Channel Name"] = "Kanaalnaam";
-$a->strings["Source not found."] = "Bron niet gevonden";
-$a->strings["Edit Source"] = "Bron bewerken";
-$a->strings["Delete Source"] = "Bron verwijderen";
-$a->strings["Source removed"] = "Bron verwijderd";
-$a->strings["Unable to remove source."] = "Verwijderen bron mislukt.";
-$a->strings["- select -"] = "- kies map -";
-$a->strings["Event title and start time are required."] = "Titel en begintijd van gebeurtenis zijn vereist.";
-$a->strings["l, F j"] = "l j F";
-$a->strings["Edit event"] = "Gebeurtenis bewerken";
-$a->strings["Create New Event"] = "Nieuwe gebeurtenis aanmaken";
-$a->strings["Previous"] = "Vorige";
-$a->strings["hour:minute"] = "uur:minuut";
-$a->strings["Event details"] = "Details van gebeurtenis";
-$a->strings["Format is %s %s. Starting date and Title are required."] = "Volgorde is %s %s. Begintijd en titel zijn vereist.";
-$a->strings["Event Starts:"] = "Begin gebeurtenis:";
-$a->strings["Required"] = "Vereist";
-$a->strings["Finish date/time is not known or not relevant"] = "Einddatum/-tijd is niet bekend of niet relevant";
-$a->strings["Event Finishes:"] = "Einde gebeurtenis:";
-$a->strings["Adjust for viewer timezone"] = "Aanpassen aan de tijdzone van wie deze gebeurtenis bekijkt";
-$a->strings["Description:"] = "Omschrijving:";
-$a->strings["Title:"] = "Titel:";
-$a->strings["Share this event"] = "Deel deze gebeurtenis";
-$a->strings["Permission Denied."] = "Toegang geweigerd";
-$a->strings["File not found."] = "Bestand niet gevonden.";
-$a->strings["Edit file permissions"] = "Bestandsrechten bewerken";
-$a->strings["Set/edit permissions"] = "Rechten instellen/bewerken";
-$a->strings["Include all files and sub folders"] = "Toepassen op alle bestanden en submappen";
-$a->strings["Return to file list"] = "Terugkeren naar bestandlijst ";
-$a->strings["Copy/paste this code to attach file to a post"] = "Kopieer/plak deze code om het bestand aan een bericht te koppelen";
-$a->strings["Copy/paste this URL to link file from a web page"] = "Kopieer/plak deze URL om het bestand aan een externe webpagina te koppelen";
-$a->strings["Channel added."] = "Kanaal toegevoegd.";
-$a->strings["%1\$s is following %2\$s's %3\$s"] = "%1\$s volgt het %3\$s van %2\$s";
-$a->strings["Contact not found."] = "Contact niet gevonden";
-$a->strings["Friend suggestion sent."] = "Kanaalvoorstel verzonden.";
-$a->strings["Suggest Friends"] = "Kanalen voorstellen";
-$a->strings["Suggest a friend for %s"] = "Stel een kanaal voor aan %s";
-$a->strings["No suggestions available. If this is a new site, please try again in 24 hours."] = "Geen voorgestelde kanalen gevonden. Wanneer dit een nieuwe hub is, probeer het dan over 24 uur weer.";
-$a->strings["Collection created."] = "Collectie aangemaakt";
-$a->strings["Could not create collection."] = "Collectie kon niet aangemaakt worden";
-$a->strings["Collection updated."] = "Collectie bijgewerkt.";
-$a->strings["Create a collection of channels."] = "Kanaalcollectie aanmaken";
-$a->strings["Collection Name: "] = "Naam collectie:";
-$a->strings["Members are visible to other channels"] = "Kanalen in deze collectie zijn zichtbaar voor andere kanalen";
-$a->strings["Collection removed."] = "Collectie verwijderd";
-$a->strings["Unable to remove collection."] = "Verwijderen collectie mislukt";
-$a->strings["Collection Editor"] = "Collectiebewerker";
-$a->strings["Members"] = "Kanalen";
-$a->strings["All Connected Channels"] = "Alle kanaalconnecties";
-$a->strings["Click on a channel to add or remove."] = "Klik op een kanaal om deze toe te voegen of te verwijderen.";
-$a->strings["%1\$s tagged %2\$s's %3\$s with %4\$s"] = "%1\$s labelde het %3\$s van %2\$s met %4\$s";
-$a->strings["Help:"] = "Hulp:";
-$a->strings["Not Found"] = "Niet gevonden";
-$a->strings["Tag removed"] = "Label verwijderd";
-$a->strings["Remove Item Tag"] = "Verwijder itemlabel";
-$a->strings["Select a tag to remove: "] = "Kies een label om te verwijderen";
+$a->strings["Tag removed"] = "Tag verwijderd";
+$a->strings["Remove Item Tag"] = "Verwijder item-tag";
+$a->strings["Select a tag to remove: "] = "Kies een tag om te verwijderen";
$a->strings["Theme settings updated."] = "Thema-instellingen bijgewerkt.";
$a->strings["Site"] = "Hub-instellingen";
$a->strings["Accounts"] = "Accounts";
@@ -1473,61 +1613,65 @@ $a->strings["Channels"] = "Kanalen";
$a->strings["Plugins"] = "Plug-ins";
$a->strings["Themes"] = "Thema's";
$a->strings["Server"] = "Hubbeheer";
+$a->strings["Profile Config"] = "Profielconfiguratie";
$a->strings["DB updates"] = "Database-updates";
$a->strings["Logs"] = "Logboeken";
$a->strings["Plugin Features"] = "Plug-in-opties";
-$a->strings["User registrations waiting for confirmation"] = "Accountregistraties die op goedkeuring wachten";
+$a->strings["User registrations waiting for confirmation"] = "Accounts die op goedkeuring wachten";
$a->strings["Message queues"] = "Berichtenwachtrij";
$a->strings["Administration"] = "Beheer";
$a->strings["Summary"] = "Samenvatting";
-$a->strings["Registered users"] = "Geregistreerde gebruikers";
+$a->strings["Registered users"] = "Geregistreerde accounts";
$a->strings["Pending registrations"] = "Accounts die op goedkeuring wachten";
$a->strings["Version"] = "Versie";
$a->strings["Active plugins"] = "Ingeschakelde plug-ins";
$a->strings["Site settings updated."] = "Hub-instellingen bijgewerkt.";
-$a->strings["No special theme for accessibility"] = "Geen speciaal thema voor universele toegang";
+$a->strings["experimental"] = "experimenteel";
+$a->strings["unsupported"] = "Niet ondersteund";
$a->strings["Yes - with approval"] = "Ja - met goedkeuring";
-$a->strings["My site is not a public server"] = "Mijn Red Matrix-hub is niet openbaar";
-$a->strings["My site has paid access only"] = "Mijn Red Matrix-hub kent alleen betaalde toegang";
-$a->strings["My site has free access only"] = "Mijn Red Matrix-hub kent alleen gratis toegang";
-$a->strings["My site offers free accounts with optional paid upgrades"] = "Mijn Red Matrix-hub biedt gratis accounts aan met betaalde uitbreidingen als optie";
+$a->strings["My site is not a public server"] = "Mijn RedMatrix-hub is niet openbaar";
+$a->strings["My site has paid access only"] = "Mijn RedMatrix-hub kent alleen betaalde toegang";
+$a->strings["My site has free access only"] = "Mijn RedMatrix-hub kent alleen gratis toegang";
+$a->strings["My site offers free accounts with optional paid upgrades"] = "Mijn RedMatrix-hub biedt gratis accounts aan met betaalde uitbreidingen als optie";
$a->strings["File upload"] = "Bestand uploaden";
$a->strings["Policies"] = "Beleid";
-$a->strings["Site name"] = "Naam van deze Red Matrix-hub";
+$a->strings["Site name"] = "Naam van deze RedMatrix-hub";
$a->strings["Banner/Logo"] = "Banner/logo";
$a->strings["Administrator Information"] = "Informatie over de beheerder van deze hub";
$a->strings["Contact information for site administrators. Displayed on siteinfo page. BBCode can be used here"] = "Contactinformatie voor hub-beheerders. Getoond op pagina met hub-informatie. Er kan hier bbcode gebruikt worden.";
$a->strings["System language"] = "Standaardtaal";
$a->strings["System theme"] = "Standaardthema";
-$a->strings["Default system theme - may be over-ridden by user profiles - <a href='#' id='cnftheme'>change theme settings</a>"] = "Standaardthema voor Red Matrix-hub (kan door gebruiker veranderd worden) - <a href='#' id='cnftheme'>verander thema-instellingen</a>";
+$a->strings["Default system theme - may be over-ridden by user profiles - <a href='#' id='cnftheme'>change theme settings</a>"] = "Standaardthema voor RedMatrix-hub (kan door lid veranderd worden) - <a href='#' id='cnftheme'>verander thema-instellingen</a>";
$a->strings["Mobile system theme"] = "Standaardthema voor mobiel";
$a->strings["Theme for mobile devices"] = "Thema voor mobiele apparaten";
-$a->strings["Accessibility system theme"] = "Standaardthema voor universele toegang";
-$a->strings["Accessibility theme"] = "Thema voor universele toegang";
-$a->strings["Channel to use for this website's static pages"] = "Kanaal die op deze hub als statische pagina op de homepage gebruikt moet worden";
-$a->strings["Site Channel"] = "Kanaal op deze Red Matrix-hub";
+$a->strings["Enable Diaspora Protocol"] = "Diaspora-protocol inschakelen";
+$a->strings["Communicate with Diaspora and Friendica - experimental"] = "Communiceer met Diaspora en Friendica (experimenteel)";
+$a->strings["Allow Feeds as Connections"] = "Sta feeds toe als connecties";
+$a->strings["(Heavy system resource usage)"] = "(sterk negatieve invloed op systeembronnen hub)";
$a->strings["Maximum image size"] = "Maximale grootte van afbeeldingen";
$a->strings["Maximum size in bytes of uploaded images. Default is 0, which means no limits."] = "Maximale grootte in bytes voor afbeeldingen die worden geüpload. Standaard is 0, wat geen limiet betekend.";
-$a->strings["Does this site allow new member registration?"] = "Staat deze hub registratie van nieuwe accounts toe?";
-$a->strings["Which best describes the types of account offered by this hub?"] = "Wat voor soort accounts biedt deze Red Matrix-hub aan? Kies wat het meest in de buurt komt.";
-$a->strings["Register text"] = "Registratietekst";
-$a->strings["Will be displayed prominently on the registration page."] = "Wordt prominent op de registratiepagina getoond.";
+$a->strings["Does this site allow new member registration?"] = "Staat deze hub nieuwe accounts toe?";
+$a->strings["Which best describes the types of account offered by this hub?"] = "Wat voor soort accounts biedt deze RedMatrix-hub aan? Kies wat het meest in de buurt komt.";
+$a->strings["Register text"] = "Tekst tijdens registratie";
+$a->strings["Will be displayed prominently on the registration page."] = "Tekst dat op de pagina voor het registreren van nieuwe accounts wordt getoond.";
$a->strings["Accounts abandoned after x days"] = "Accounts als verlaten beschouwen na zoveel aantal dagen:";
$a->strings["Will not waste system resources polling external sites for abandonded accounts. Enter 0 for no time limit."] = "Zal geen systeembronnen verspillen door polling van externe hubs voor verlaten accounts. Vul 0 in voor geen tijdslimiet.";
$a->strings["Allowed friend domains"] = "Toegestane domeinen";
-$a->strings["Comma separated list of domains which are allowed to establish friendships with this site. Wildcards are accepted. Empty to allow any domains"] = "Komma-gescheiden lijst van domeinen waarvan kanalen connecties kunnen aangaan met kanalen op deze Red Matrix-hub. Wildcards zijn toegestaan.\nLaat leeg om alle domeinen toe te laten.";
+$a->strings["Comma separated list of domains which are allowed to establish friendships with this site. Wildcards are accepted. Empty to allow any domains"] = "Komma-gescheiden lijst van domeinen waarvan kanalen connecties kunnen aangaan met kanalen op deze RedMatrix-hub. Wildcards zijn toegestaan.\nLaat leeg om alle domeinen toe te laten.";
$a->strings["Allowed email domains"] = "Toegestane e-maildomeinen";
$a->strings["Comma separated list of domains which are allowed in email addresses for registrations to this site. Wildcards are accepted. Empty to allow any domains"] = "Door komma's gescheiden lijst met e-maildomeinen die op deze hub mogen registeren. Wildcards zijn toegestaan.\nLaat leeg om alle domeinen toe te laten.";
$a->strings["Block public"] = "Openbare toegang blokkeren";
-$a->strings["Check to block public access to all otherwise public personal pages on this site unless you are currently logged in."] = "Vink dit aan om alle normaliter openbare persoonlijke pagina's op deze hub alleen toegankelijk te maken voor ingelogde gebruikers.";
+$a->strings["Check to block public access to all otherwise public personal pages on this site unless you are currently logged in."] = "Vink dit aan om alle normaliter openbare persoonlijke pagina's op deze hub alleen toegankelijk te maken voor ingelogde leden.";
+$a->strings["Verify Email Addresses"] = "E-mailadres verifieren";
+$a->strings["Check to verify email addresses used in account registration (recommended)."] = "Inschakelen om e-mailadressen te verifiëren die tijdens de accountregistratie worden gebruikt (aanbevolen).";
$a->strings["Force publish"] = "Dwing kanaalvermelding af";
$a->strings["Check to force all profiles on this site to be listed in the site directory."] = "Vink dit aan om af te dwingen dat alle kanalen op deze hub in de kanalengids worden vermeld.";
$a->strings["Disable discovery tab"] = "Ontdekkingstab";
$a->strings["Remove the tab in the network view with public content pulled from sources chosen for this site."] = "Verwijder de tab in de matrix-weergave waarin zich een selectie aan openbare berichten bevindt, die automatisch voor deze hub zijn uitgekozen.";
$a->strings["No login on Homepage"] = "Geen inlogformulier op de homepage";
-$a->strings["Check to hide the login form from your sites homepage when visitors arrive who are not logged in (e.g. when you put the content of the homepage in via the site channel)."] = "Vink dit aan om het inlogformulier op de homepage van deze hub, die niet-ingelogde gebruikers te zien krijgen, te verbergen. (bijvoorbeeld wanneer je een kanaal op deze Red Matrix-hub als homepage gebruikt)";
-$a->strings["Proxy user"] = "Proxy-gebruiker";
-$a->strings["Proxy URL"] = "Proxy-URL";
+$a->strings["Check to hide the login form from your sites homepage when visitors arrive who are not logged in (e.g. when you put the content of the homepage in via the site channel)."] = "Vink dit aan om het inlogformulier op de homepage van deze hub, die niet-ingelogde bezoekers te zien krijgen, te verbergen. (bijvoorbeeld wanneer je een kanaal op deze RedMatrix-hub als homepage gebruikt)";
+$a->strings["Proxy user"] = "Gebruikersnaam proxy";
+$a->strings["Proxy URL"] = "URL proxy";
$a->strings["Network timeout"] = "Netwerktimeout";
$a->strings["Value is in seconds. Set to 0 for unlimited (not recommended)."] = "Waarde is in seconden. Zet op 0 voor onbeperkt (niet aanbevolen)";
$a->strings["Delivery interval"] = "Afleveringsinterval";
@@ -1559,9 +1703,8 @@ $a->strings["%s user deleted"] = array(
1 => "%s accounts verwijderd",
);
$a->strings["Account not found"] = "Account niet gevonden";
-$a->strings["User '%s' deleted"] = "Account '%s' verwijderd";
$a->strings["User '%s' unblocked"] = "Account '%s' gedeblokkeerd";
-$a->strings["User '%s' blocked"] = "Gebruiker '%s' geblokkeerd";
+$a->strings["User '%s' blocked"] = "Lid '%s' geblokkeerd";
$a->strings["Users"] = "Accounts";
$a->strings["select all"] = "alles selecteren";
$a->strings["User registrations waiting for confirm"] = "Accounts die op goedkeuring wachten";
@@ -1576,8 +1719,8 @@ $a->strings["Service Class"] = "Abonnementen";
$a->strings["Selected users will be deleted!\\n\\nEverything these users had posted on this site will be permanently deleted!\\n\\nAre you sure?"] = "Geselecteerde accounts (met bijbehorende kanalen) worden verwijderd!\\n\\nAlles wat deze accounts op deze hub hebben gepubliceerd wordt definitief verwijderd!\\n\\Weet je het zeker?";
$a->strings["The user {0} will be deleted!\\n\\nEverything this user has posted on this site will be permanently deleted!\\n\\nAre you sure?"] = "Account {0} (met bijbehorende kanalen) wordt verwijderd !\\n\\nAlles wat dit account op deze hub heeft gepubliceerd wordt definitief verwijderd!\\n\\nWeet je het zeker?";
$a->strings["%s channel censored/uncensored"] = array(
- 0 => "%s kanalen gecensureerd/ongecensureerd",
- 1 => "%s kanaal gecensureerd/ongecensureerd",
+ 0 => "%s kanaal gecensureerd/ongecensureerd",
+ 1 => "%s kanalen gecensureerd/ongecensureerd",
);
$a->strings["%s channel deleted"] = array(
0 => "%s kanaal verwijderd",
@@ -1607,42 +1750,43 @@ $a->strings["Log settings updated."] = "Logboek-instellingen bijgewerkt.";
$a->strings["Clear"] = "Leegmaken";
$a->strings["Debugging"] = "Debuggen";
$a->strings["Log file"] = "Logbestand";
-$a->strings["Must be writable by web server. Relative to your Red top-level directory."] = "Moet door de webserver beschrijfbaar zijn. Relatief ten opzichte van de bovenste map van je Red Matrix-installatie.";
+$a->strings["Must be writable by web server. Relative to your Red top-level directory."] = "Moet door de webserver beschrijfbaar zijn. Relatief ten opzichte van de bovenste map van je RedMatrix-installatie.";
$a->strings["Log level"] = "Logniveau";
-$a->strings["Thing updated"] = "Objekt bijgewerkt";
-$a->strings["Object store: failed"] = "Opslaan object mislukt";
-$a->strings["Thing added"] = "Object toegevoegd";
-$a->strings["OBJ: %1\$s %2\$s %3\$s"] = "OBJ: %1\$s %2\$s %3\$s";
-$a->strings["Show Thing"] = "Object weergeven";
-$a->strings["item not found."] = "Item niet gevonden";
-$a->strings["Edit Thing"] = "Object bewerken";
-$a->strings["Select a profile"] = "Kies een profiel";
-$a->strings["Post an activity"] = "Plaats een bericht";
-$a->strings["Only sends to viewers of the applicable profile"] = "Toont dit alleen aan diegene die het gekozen profiel mogen zien.";
-$a->strings["Name of thing e.g. something"] = "Naam van object.";
-$a->strings["URL of thing (optional)"] = "URL van object (optioneel)";
-$a->strings["URL for photo of thing (optional)"] = "URL van objectfoto (optioneel)";
-$a->strings["Add Thing to your Profile"] = "Object aan je profiel toevoegen";
-$a->strings["Nothing to import."] = "Niets gevonden om te importeren";
-$a->strings["Unable to download data from old server"] = "Niet in staat om gegevens van de oude hub te downloaden";
-$a->strings["Imported file is empty."] = "Geïmporteerde bestand is leeg";
-$a->strings["Cannot create a duplicate channel identifier on this system. Import failed."] = "Kan geen dubbele kanaal-identificator op deze hub aanmaken. Importeren mislukt.";
-$a->strings["Channel clone failed. Import failed."] = "Het klonen van het kanaal is mislukt. Importeren mislukt.";
-$a->strings["Cloned channel not found. Import failed."] = "Gekloond kanaal niet gevonden. Importeren mislukt.";
-$a->strings["Import completed."] = "Import voltooid.";
-$a->strings["You must be logged in to use this feature."] = "Je moet ingelogd zijn om dit onderdeel te kunnen gebruiken.";
-$a->strings["Import Channel"] = "Kanaal importeren";
-$a->strings["Use this form to import an existing channel from a different server/hub. You may retrieve the channel identity from the old server/hub via the network or provide an export file. Only identity and connections/relationships will be imported. Importation of content is not yet available."] = "Gebruik dit formulier om een bestaand kanaal te importeren van een andere hub. Je kan de kanaal-identiteit van de oude hub via het netwerk ontvangen of een exportbestand verstrekken. Alleen de identiteit en de connecties zullen geïmporteerd worden. Het importeren van inhoud is nog niet beschikbaar.";
-$a->strings["File to Upload"] = "Bestand om te uploaden";
-$a->strings["Or provide the old server/hub details"] = "Of vul de gegevens van de oude hub in";
-$a->strings["Your old identity address (xyz@example.com)"] = "Jouw oude kanaaladres (xyz@example.com)";
-$a->strings["Your old login email address"] = "Het e-mailadres van je oude account";
-$a->strings["Your old login password"] = "Wachtwoord van jouw oude account";
-$a->strings["For either option, please choose whether to make this hub your new primary address, or whether your old location should continue this role. You will be able to post from either location, but only one can be marked as the primary location for files, photos, and media."] = "Voor elke optie geldt dat je moet kiezen of je jouw primaire kanaaladres op deze hub wil instellen of dat jouw oude hub deze rol blijft vervullen.";
-$a->strings["Make this hub my primary location"] = "Stel deze hub als mijn primaire locatie in";
+$a->strings["New Profile Field"] = "Nieuw profielveld";
+$a->strings["Field nickname"] = "Bijnaam voor veld";
+$a->strings["System name of field"] = "Systeemnaam voor veld";
+$a->strings["Input type"] = "Invoertype";
+$a->strings["Field Name"] = "Veldnaam";
+$a->strings["Label on profile pages"] = "Tekstlabel voor op profielpagina's";
+$a->strings["Help text"] = "Helptekst";
+$a->strings["Additional info (optional)"] = "Extra informatie (optioneel)";
+$a->strings["Field definition not found"] = "Velddefinitie niet gevonden";
+$a->strings["Edit Profile Field"] = "Profielveld bewerken";
+$a->strings["Menu updated."] = "Menu aangepast. ";
+$a->strings["Unable to update menu."] = "Niet in staat om menu aan te passen";
+$a->strings["Menu created."] = "Menu aangemaakt.";
+$a->strings["Unable to create menu."] = "Niet in staat om menu aan te maken.";
+$a->strings["Manage Menus"] = "Menu's beheren";
+$a->strings["Drop"] = "Verwijderen";
+$a->strings["Bookmarks allowed"] = "Bladwijzers toegestaan";
+$a->strings["Create a new menu"] = "Een nieuwe menu aanmaken";
+$a->strings["Delete this menu"] = "Menu verwijderen";
+$a->strings["Edit menu contents"] = "Bewerk de inhoud van het menu";
+$a->strings["Edit this menu"] = "Dit menu bewerken";
+$a->strings["New Menu"] = "Nieuw menu";
+$a->strings["Menu name"] = "Naam van menu";
+$a->strings["Must be unique, only seen by you"] = "Moet uniek zijn en is alleen zichtbaar voor jou.";
+$a->strings["Menu title"] = "Titel van menu";
+$a->strings["Menu title as seen by others"] = "Titel van menu zoals anderen dat zien.";
+$a->strings["Allow bookmarks"] = "Bladwijzers toestaan";
+$a->strings["Menu may be used to store saved bookmarks"] = "Menu kan gebruikt worden om bladwijzers in op te slaan";
+$a->strings["Menu deleted."] = "Menu verwijderd.";
+$a->strings["Menu could not be deleted."] = "Menu kon niet verwijderd worden.";
+$a->strings["Edit Menu"] = "Menu bewerken";
+$a->strings["Add or remove entries to this menu"] = "Items aan dit menu toevoegen of verwijder";
$a->strings["Total invitation limit exceeded."] = "Limiet voor aantal uitnodigingen overschreden.";
$a->strings["%s : Not a valid email address."] = "%s : Geen geldig e-mailadres.";
-$a->strings["Please join us on Red"] = "Kom op de Red Matrix";
+$a->strings["Please join us on Red"] = "Uitnodiging voor de RedMatrix";
$a->strings["Invitation limit exceeded. Please contact your site administrator."] = "Limiet voor aantal uitnodigingen overschreden. Neem contact op met je hub-beheerder.";
$a->strings["%s : Message delivery failed."] = "%s: Aflevering bericht mislukt.";
$a->strings["%d message sent."] = array(
@@ -1652,115 +1796,100 @@ $a->strings["%d message sent."] = array(
$a->strings["You have no more invitations available"] = "Je hebt geen uitnodigingen meer beschikbaar";
$a->strings["Send invitations"] = "Uitnodigingen verzenden";
$a->strings["Enter email addresses, one per line:"] = "Voer e-mailadressen in, één per regel:";
-$a->strings["Your message:"] = "Jouw bericht:";
-$a->strings["You are cordially invited to join me and some other close friends on the Red Matrix - a revolutionary new decentralised communication and information tool."] = "Je bent hierbij uitgenodigd om mij, en enkele goede vrienden, te komen vergezellen op de Red Matrix - een revolutionaire nieuwe communicatie- en informatietool.";
-$a->strings["You will need to supply this invitation code: \$invite_code"] = "Je moet deze uitnodigingscode geven: \$invite_code";
-$a->strings["Please visit my channel at"] = "Bezoek mijn kanaal op";
-$a->strings["Once you have registered (on ANY Red Matrix site - they are all inter-connected), please connect with my Red Matrix channel address:"] = "Wanneer je je eenmaal hebt geregistreerd (maakt niet uit op welke Red Matrix-hub, want ze zijn allemaal met elkaar verbonden), kan je je met mijn Red Matrix-kanaal verbinden:";
-$a->strings["Click the [Register] link on the following page to join."] = "Klik op de link [Registreren] op de volgende pagina om je aan te melden.";
-$a->strings["For more information about the Red Matrix Project and why it has the potential to change the internet as we know it, please visit http://getzot.com"] = "Bezoek http://getzot.com voor meer informatie over het Red Matrix-project en waarom het de potentie heeft het internet voor altijd te veranderen.";
-$a->strings["Unable to locate original post."] = "Niet in staat om de originele locatie van het bericht te vinden. ";
-$a->strings["Empty post discarded."] = "Leeg bericht geannuleerd";
-$a->strings["Executable content type not permitted to this channel."] = "Uitvoerbare bestanden zijn niet toegestaan op dit kanaal.";
-$a->strings["System error. Post not saved."] = "Systeemfout. Bericht niet opgeslagen.";
-$a->strings["You have reached your limit of %1$.0f top level posts."] = "Je hebt jouw limiet van %1$.0f berichten bereikt.";
-$a->strings["You have reached your limit of %1$.0f webpages."] = "Je hebt jouw limiet van %1$.0f webpagina's bereikt.";
+$a->strings["Please join my community on RedMatrix."] = "Hierbij nodig ik je uit om mij, en andere vrienden en kennissen, op de RedMatrix te vergezellen. Lees meer over de RedMatrix op https://redmatrix.me.";
+$a->strings["You will need to supply this invitation code: "] = "Je moet deze uitnodigingscode opgeven:";
+$a->strings["1. Register at any RedMatrix location (they are all inter-connected)"] = "1. Registreer je op een willekeurige RedMatrix-hub (ze zijn allemaal onderling met elkaar verbonden):";
+$a->strings["2. Enter my RedMatrix network address into the site searchbar."] = "2. Nadat je bent ingelogd en een kanaal hebt aangemaakt kan je mijn kanaaladres in het zoekveld invullen:";
+$a->strings["or visit "] = "of bezoek ";
+$a->strings["3. Click [Connect]"] = "3. Klik op [+ Verbinden]";
+$a->strings["No such group"] = "Collectie niet gevonden";
+$a->strings["Search Results For:"] = "Zoekresultaten voor:";
+$a->strings["Collection is empty"] = "Collectie is leeg";
+$a->strings["Collection: "] = "Collectie: ";
+$a->strings["Connection: "] = "Connectie: ";
+$a->strings["Invalid connection."] = "Ongeldige connectie.";
+$a->strings["Invalid request identifier."] = "Ongeldige verzoek identificator (request identifier)";
+$a->strings["Discard"] = "Annuleren";
+$a->strings["No more system notifications."] = "Geen systeemnotificaties meer.";
+$a->strings["System Notifications"] = "Systeemnotificaties";
$a->strings["[Embedded content - reload page to view]"] = "[Ingesloten inhoud - ververs pagina om te bekijken] ";
-$a->strings["Help with this feature"] = "Hulp voor dit onderdeel";
-$a->strings["Layout Name"] = "Naam layout";
-$a->strings["thing"] = "object";
$a->strings["Remote privacy information not available."] = "Privacy-informatie op afstand niet beschikbaar.";
$a->strings["Visible to:"] = "Zichtbaar voor:";
$a->strings["No connections."] = "Geen connecties.";
$a->strings["Visit %s's profile [%s]"] = "Bezoek het profiel van %s [%s]";
$a->strings["View Connnections"] = "Connecties weergeven";
-$a->strings["No valid account found."] = "Geen geldige account gevonden.";
-$a->strings["Password reset request issued. Check your email."] = "Het verzoek om je wachtwoord opnieuw in te stellen is behandeld. Controleer je e-mail.";
-$a->strings["Site Member (%s)"] = "Lid van hub (%s)";
-$a->strings["Password reset requested at %s"] = "Verzoek tot het opnieuw instellen van een wachtwoord op %s is ingediend";
-$a->strings["Request could not be verified. (You may have previously submitted it.) Password reset failed."] = "Het verzoek kon niet worden geverifieerd. (Mogelijk heb je al eerder een verzoek ingediend.) Opnieuw instellen van wachtwoord is mislukt.";
-$a->strings["Password Reset"] = "Wachtwoord vergeten?";
-$a->strings["Your password has been reset as requested."] = "Jouw wachtwoord is opnieuw ingesteld zoals je had verzocht.";
-$a->strings["Your new password is"] = "Jouw nieuwe wachtwoord is";
-$a->strings["Save or copy your new password - and then"] = "Kopieer of sla je nieuwe wachtwoord op - en";
-$a->strings["click here to login"] = "klik dan hier om in te loggen";
-$a->strings["Your password may be changed from the <em>Settings</em> page after successful login."] = "Jouw wachtwoord kan worden veranderd onder <em>instellingen</em>, nadat je succesvol bent ingelogd.";
-$a->strings["Your password has changed at %s"] = "Jouw wachtwoord op %s is veranderd";
-$a->strings["Forgot your Password?"] = "Wachtwoord vergeten?";
-$a->strings["Enter your email address and submit to have your password reset. Then check your email for further instructions."] = "Voer je e-mailadres in en verstuur deze om je wachtwoord opnieuw in te stellen. Controleer hierna hier je e-mail voor verdere instructies.";
-$a->strings["Email Address"] = "E-mailadres";
-$a->strings["Reset"] = "Opnieuw instellen";
$a->strings["Hub not found."] = "Hub niet gevonden.";
$a->strings["Total votes"] = "Totaal aantal stemmen";
-$a->strings["Average Rating"] = "Gemiddeld cijfer";
-$a->strings["Unable to lookup recipient."] = "Niet in staat om ontvanger op te zoeken.";
-$a->strings["Unable to communicate with requested channel."] = "Niet in staat om met het aangevraagde kanaal te communiceren.";
-$a->strings["Cannot verify requested channel."] = "Kan opgevraagd kanaal niet verifieren";
-$a->strings["Selected channel has private message restrictions. Send failed."] = "Gekozen kanaal heeft restricties voor privéberichten. Verzenden mislukt.";
-$a->strings["Messages"] = "Berichten";
-$a->strings["Message deleted."] = "Bericht verwijderd.";
-$a->strings["Message recalled."] = "Bericht ingetrokken.";
-$a->strings["Send Private Message"] = "Privébericht versturen";
-$a->strings["To:"] = "Aan:";
-$a->strings["Subject:"] = "Onderwerp:";
-$a->strings["Message not found."] = "Bericht niet gevonden";
-$a->strings["Delete message"] = "Bericht verwijderen";
-$a->strings["Recall message"] = "Bericht intrekken";
-$a->strings["Message has been recalled."] = "Bericht is ingetrokken.";
-$a->strings["Private Conversation"] = "Privéconversatie";
-$a->strings["Delete conversation"] = "Verwijder conversatie";
-$a->strings["No secure communications available. You <strong>may</strong> be able to respond from the sender's profile page."] = "Geen veilige communicatie beschikbaar. <strong>Mogelijk</strong> kan je reageren op de kanaalpagina van de afzender.";
-$a->strings["Send Reply"] = "Antwoord versturen";
-$a->strings["You have created %1$.0f of %2$.0f allowed channels."] = "Je hebt %1$.0f van totaal %2$.0f toegestane kanalen aangemaakt.";
-$a->strings["Create a new channel"] = "Nieuw kanaal aanmaken";
-$a->strings["Channel Manager"] = "Kanaalbeheerder";
-$a->strings["Current Channel"] = "Huidig kanaal";
-$a->strings["Attach to one of your channels by selecting it."] = "Gebruik een van jouw kanalen door op een te klikken.";
-$a->strings["Default Channel"] = "Standaardkanaal";
-$a->strings["Make Default"] = "Als standaard instellen";
+$a->strings["Average Rating"] = "Gemiddelde waardering";
+$a->strings["OpenID protocol error. No ID returned."] = "OpenID-protocolfout. Geen ID terugontvangen.";
+$a->strings["Welcome %s. Remote authentication successful."] = "Welkom %s. Authenticatie op afstand geslaagd.";
$a->strings["Wall Photos"] = "Kanaalfoto's";
$a->strings["Profile Match"] = "Profielovereenkomst";
$a->strings["No keywords to match. Please add keywords to your default profile."] = "Je hebt geen trefwoorden waarmee overeenkomsten gevonden kunnen worden. Voeg enkele trefwoorden aan je standaardprofiel toe.";
$a->strings["is interested in:"] = "is geïnteresseerd in:";
$a->strings["No matches"] = "Geen overeenkomsten";
-$a->strings["Menu updated."] = "Menu aangepast. ";
-$a->strings["Unable to update menu."] = "Niet in staat om menu aan te passen";
-$a->strings["Menu created."] = "Menu aangemaakt.";
-$a->strings["Unable to create menu."] = "Niet in staat om menu aan te maken.";
-$a->strings["Manage Menus"] = "Menu's beheren";
-$a->strings["Drop"] = "Verwijderen";
-$a->strings["Create a new menu"] = "Een nieuwe menu aanmaken";
-$a->strings["Delete this menu"] = "Menu verwijderen";
-$a->strings["Edit menu contents"] = "Bewerk de inhoud van het menu";
-$a->strings["Edit this menu"] = "Dit menu bewerken";
-$a->strings["New Menu"] = "Nieuw menu";
-$a->strings["Menu name"] = "Naam van menu";
-$a->strings["Must be unique, only seen by you"] = "Moet uniek zijn en is alleen zichtbaar voor jou.";
-$a->strings["Menu title"] = "Titel van menu";
-$a->strings["Menu title as seen by others"] = "Titel van menu zoals anderen dat zien.";
-$a->strings["Allow bookmarks"] = "Bladwijzers toestaan";
-$a->strings["Menu may be used to store saved bookmarks"] = "Menu kan gebruikt worden om bladwijzers in op te slaan";
-$a->strings["Menu deleted."] = "Menu verwijderd.";
-$a->strings["Menu could not be deleted."] = "Menu kon niet verwijderd worden.";
-$a->strings["Edit Menu"] = "Menu bewerken";
-$a->strings["Add or remove entries to this menu"] = "Items aan dit menu toevoegen of verwijder";
$a->strings["Conversation removed."] = "Conversatie verwijderd";
$a->strings["No messages."] = "Geen berichten";
$a->strings["D, d M Y - g:i A"] = "D, j M Y - G:i";
$a->strings["Add a Channel"] = "Kanaal toevoegen";
-$a->strings["A channel is your own collection of related web pages. A channel can be used to hold social network profiles, blogs, conversation groups and forums, celebrity pages, and much more. You may create as many channels as your service provider allows."] = "Een kanaal is jouw eigen verzameling gerelateerde webpagina's. Een kanaal kan gebruikt worden voor een sociaal netwerk, weblog, discussiegroep of forum, een pagina over een beroemdheid, en voor veel meer. Je kan net zoveel kanalen aanmaken als dat de eigenaar/beheerder van jouw hub toestaat.";
+$a->strings["A channel is your own collection of related web pages. A channel can be used to hold social network profiles, blogs, conversation groups and forums, celebrity pages, and much more. You may create as many channels as your service provider allows."] = "Een kanaal is jouw eigen verzameling gerelateerde webpagina's. Een kanaal kan gebruikt worden voor een sociaal netwerk, weblog, discussiegroep of forum, een pagina over een beroemdheid, en voor veel meer. Je kan net zoveel kanalen aanmaken als dat de eigenaar/beheerder van jouw hub toestaat.";
$a->strings["Examples: \"Bob Jameson\", \"Lisa and her Horses\", \"Soccer\", \"Aviation Group\" "] = "Voorbeelden: \"Bruce Springsteen\", \"Familiefoto's\", \"Voetbal\", \"Astronomie\"";
$a->strings["Choose a short nickname"] = "Kies een korte bijnaam";
$a->strings["Your nickname will be used to create an easily remembered channel address (like an email address) which you can share with others."] = "Jouw bijnaam wordt gebruikt om een makkelijk te onthouden kanaaladres (zoals een e-mailadres) aan te maken, die je dan kan delen met anderen.";
$a->strings["Or <a href=\"import\">import an existing channel</a> from another location"] = "Of <a href=\"import\">importeer een bestaand kanaal</a> vanaf een andere locatie.";
-$a->strings["Invalid request identifier."] = "Ongeldige aanvraag-identificator (request identifier)";
-$a->strings["Discard"] = "Annuleren";
-$a->strings["No more system notifications."] = "Geen systeemnotificaties meer.";
-$a->strings["System Notifications"] = "Systeemnotificaties";
+$a->strings["Please choose a channel type (such as social networking or community forum) and privacy requirements so we can select the best permissions for you"] = "Kies een kanaaltype (bijv. een persoonlijk kanaal voor een sociaal netwerk of eentje voor een groepsforum) en jouw behoefte aan privacy, zodat wij voor jou de beste permissies kunnen kiezen.";
+$a->strings["Channel Type"] = "Kanaaltype";
+$a->strings["Read more about roles"] = "Lees meer over kanaaltypes";
+$a->strings["Xchan Lookup"] = "Xchan opzoeken";
+$a->strings["Lookup xchan beginning with (or webbie): "] = "Zoek een xchan (of webbie) die begint met:";
+$a->strings["invalid target signature"] = "ongeldig doelkenmerk";
+$a->strings["Page owner information could not be retrieved."] = "Informatie over de pagina-eigenaar werd niet ontvangen.";
+$a->strings["Album not found."] = "Album niet gevonden.";
+$a->strings["Delete Album"] = "Verwijder album";
+$a->strings["Delete Photo"] = "Verwijder foto";
+$a->strings["No photos selected"] = "Geen foto's geselecteerd";
+$a->strings["Access to this item is restricted."] = "Toegang tot dit item is beperkt.";
+$a->strings["%1$.2f MB of %2$.2f MB photo storage used."] = "%1$.2f MB van %2$.2f MB aan foto-opslag gebruikt.";
+$a->strings["%1$.2f MB photo storage used."] = "%1$.2f MB aan foto-opslag gebruikt.";
+$a->strings["Upload Photos"] = "Foto's uploaden";
+$a->strings["Enter a new album name"] = "Vul een nieuwe albumnaam in";
+$a->strings["or select an existing one (doubleclick)"] = "of kies een bestaand album (dubbelklikken)";
+$a->strings["Do not show a status post for this upload"] = "Plaats geen bericht voor deze upload.";
+$a->strings["Album name could not be decoded"] = "Albumnaam kon niet gedecodeerd worden";
+$a->strings["Contact Photos"] = "Connectiefoto's";
+$a->strings["Show Newest First"] = "Nieuwste eerst weergeven";
+$a->strings["Show Oldest First"] = "Oudste eerst weergeven";
+$a->strings["View Photo"] = "Foto weergeven";
+$a->strings["Edit Album"] = "Album bewerken";
+$a->strings["Permission denied. Access to this item may be restricted."] = "Toegang geweigerd. Toegang tot dit item kan zijn beperkt.";
+$a->strings["Photo not available"] = "Foto niet aanwezig";
+$a->strings["Use as profile photo"] = "Als profielfoto gebruiken";
+$a->strings["Private Photo"] = "Privéfoto";
+$a->strings["View Full Size"] = "Volledige grootte weergeven";
+$a->strings["Edit photo"] = "Foto bewerken";
+$a->strings["Rotate CW (right)"] = "Draai met de klok mee (naar rechts)";
+$a->strings["Rotate CCW (left)"] = "Draai tegen de klok in (naar links)";
+$a->strings["Caption"] = "Bijschrift";
+$a->strings["Add a Tag"] = "Tag toevoegen";
+$a->strings["Example: @bob, @Barbara_Jensen, @jim@example.com"] = "Voorbeeld: @bob, @Barbara_Jansen, @jan@voorbeeld.nl";
+$a->strings["Flag as adult in album view"] = "Markeer als voor volwassenen in albumweergave";
+$a->strings["In This Photo:"] = "Op deze foto:";
+$a->strings["View Album"] = "Album weergeven";
+$a->strings["Recent Photos"] = "Recente foto's";
$a->strings["Unable to find your hub."] = "Niet in staat om je hub te vinden";
$a->strings["Post successful."] = "Verzenden bericht geslaagd.";
-$a->strings["invalid target signature"] = "ongeldig doel-kenmerk (target signature)";
-$a->strings["OpenID protocol error. No ID returned."] = "OpenID-protocolfout. Geen ID terugontvangen.";
+$a->strings["Gender: "] = "Geslacht:";
+$a->strings["Status: "] = "Status: ";
+$a->strings["Homepage: "] = "Homepage: ";
+$a->strings["Hometown: "] = "Oorspronkelijk uit: ";
+$a->strings["About: "] = "Over: ";
+$a->strings["Public Forum:"] = "Openbaar forum:";
+$a->strings["Keywords: "] = "Trefwoorden: ";
+$a->strings["Finding:"] = "Gezocht naar:";
+$a->strings["next page"] = "volgende pagina";
+$a->strings["previous page"] = "vorige pagina";
+$a->strings["No entries (some entries may be hidden)."] = "Niets gevonden (sommige kanalen kunnen verborgen zijn).";
+$a->strings["Remote authentication blocked. You are logged into this site locally. Please logout and retry."] = "Authenticatie op afstand geblokkeerd. Je bent lokaal op deze hub ingelogd. Uitloggen en opnieuw proberen.";
$a->strings["App installed."] = "App geïnstalleerd";
$a->strings["Malformed app."] = "Misvormde app.";
$a->strings["Embed code"] = "Insluitcode";
@@ -1773,6 +1902,14 @@ $a->strings["80 x 80 pixels - optional"] = "80 x 80 pixels (optioneel)";
$a->strings["Version ID"] = "Versie-ID";
$a->strings["Price of app"] = "Prijs van de app";
$a->strings["Location (URL) to purchase app"] = "Locatie (URL) om de app aan te schaffen";
+$a->strings["Poll"] = "Poll";
+$a->strings["View Results"] = "Bekijk resultaten";
+$a->strings["Account removals are not allowed within 48 hours of changing the account password."] = "Het verwijderen van een account is niet toegestaan binnen 48 uur nadat het wachtwoord is veranderd.";
+$a->strings["Remove This Account"] = "Verwijder dit account";
+$a->strings["This will completely remove this account including all its channels from the network. Once this has been done it is not recoverable."] = "Deze actie verwijderd dit account volledig, inclusief al zijn kanalen. Dit kan hierna op geen enkele manier ongedaan gemaakt worden.";
+$a->strings["Remove this account, all its channels and all its channel clones from the network"] = "Dit account, al zijn kanalen en alle klonen van zijn kanalen uit het RedMatrix-netwerk verwijderen";
+$a->strings["By default only the instances of the channels located on this hub will be removed from the network"] = "Standaard worden alleen de kanalen die zich op deze hub bevinden uit het RedMatrix-netwerk verwijderd.";
+$a->strings["No service class restrictions found."] = "Geen abonnementsbeperkingen gevonden.";
$a->strings["Schema Default"] = "Standaardschema";
$a->strings["Sans-Serif"] = "Schreefloos";
$a->strings["Monospace"] = "Monospace";
@@ -1783,20 +1920,20 @@ $a->strings["Set font face"] = "Lettertypefamilie instellen";
$a->strings["Set iconset"] = "Pictogrammenset instellen";
$a->strings["Set big shadow size, default 15px 15px 15px"] = "Een grote schaduwgrootte instellen (standaard 15px 15px 15px)";
$a->strings["Set small shadow size, default 5px 5px 5px"] = "Een kleine schaduwgrootte instellen (standaard 5px 5px 5px)";
-$a->strings["Set shadow colour, default #000"] = "Schaduwkleur instellen (standaard #000)";
-$a->strings["Set radius size, default 5px"] = "Radius instellen, standaard 5px";
+$a->strings["Set shadow color, default #000"] = "Schaduwkleur instellen (standaard #000)";
+$a->strings["Set radius size, default 5px"] = "Radius instellen (standaard 5px)";
$a->strings["Set line-height for posts and comments"] = "Lijnhoogte voor berichten en reacties instellen";
$a->strings["Set background image"] = "Achtergrondafbeelding instellen";
$a->strings["Set background attachment"] = "Gedrag achtergrondafbeelding instellen";
-$a->strings["Set background colour"] = "Achtergrondkleur instellen";
+$a->strings["Set background color"] = "Achtergrondkleur instellen";
$a->strings["Set section background image"] = "Achtergrondafbeelding van sectie instellen";
-$a->strings["Set section background colour"] = "Achtergrondkleur van sectie instellen";
-$a->strings["Set colour of items - use hex"] = "Tekstkleur van items instellen (gebruik hexadecimaal)";
-$a->strings["Set colour of links - use hex"] = "Kleur van links instellen (gebruik hexadecimaal)";
+$a->strings["Set section background color"] = "Achtergrondkleur van sectie instellen";
+$a->strings["Set color of items - use hex"] = "Tekstkleur van items instellen (gebruik hexadecimaal)";
+$a->strings["Set color of links - use hex"] = "Kleur van links instellen (gebruik hexadecimaal)";
$a->strings["Set max-width for items. Default 400px"] = "Maximale breedte van items instellen (standaard 400px)";
$a->strings["Set min-width for items. Default 240px"] = "Minimale breedte van items instellen (standaard 240px)";
$a->strings["Set the generic content wrapper width. Default 48%"] = "Breedte van de generieke content-wrapper instellen (standaard 48%)";
-$a->strings["Set colour of fonts - use hex"] = "Tekstkleur instellen (gebruik hexadecimaal)";
+$a->strings["Set color of fonts - use hex"] = "Tekstkleur instellen (gebruik hexadecimaal)";
$a->strings["Set background-size element"] = "Grootte achtergrondafbeelding instellen";
$a->strings["Item opacity"] = "Ondoorzichtigheid item";
$a->strings["Display post previews only"] = "Alleen voorvertoning berichten weergeven";
@@ -1806,33 +1943,30 @@ $a->strings["Item float"] = "Item float";
$a->strings["Left offset of the section element"] = "Linker offset van het sectie-element";
$a->strings["Right offset of the section element"] = "Rechter offset van het sectie-element";
$a->strings["Section width"] = "Breedte van sectie";
-$a->strings["Left offset of the aside"] = "Linker offset van de zijbalk (aside)";
-$a->strings["Right offset of the aside element"] = "Rechter offset van de zijbalk (aside)";
-$a->strings["None"] = "Geen";
-$a->strings["Header image"] = "Header-afbeelding";
-$a->strings["Header image only on profile pages"] = "Header-afbeelding alleen op profielpagina's weergeven";
-$a->strings["Light (Red Matrix default)"] = "Light (Red Matrix-standaard)";
+$a->strings["Left offset of the aside"] = "Rechter offset van aside (zijbalk)";
+$a->strings["Right offset of the aside element"] = "Rechter offset van het aside-element";
+$a->strings["Light (Red Matrix default)"] = "Light (RedMatrix-standaard)";
$a->strings["Narrow navbar"] = "Smalle navigatiebalk";
-$a->strings["Navigation bar background colour"] = "Achtergrondkleur navigatiebalk";
-$a->strings["Navigation bar gradient top colour"] = "Bovenste gradiëntkleur navigatiebalk";
-$a->strings["Navigation bar gradient bottom colour"] = "Onderste gradiëntkleur navigatiebalk";
-$a->strings["Navigation active button gradient top colour"] = "Bovenste gradiëntkleur actieve knop navigatiebalk";
-$a->strings["Navigation active button gradient bottom colour"] = "Onderste gradiëntkleur actieve knop op navigatiebalk";
-$a->strings["Navigation bar border colour "] = "Randkleur navigatiebalk ";
-$a->strings["Navigation bar icon colour "] = "Pictogramkleur navigatiebalk";
-$a->strings["Navigation bar active icon colour "] = "Actieve pictogramkleur navigatiebalk";
-$a->strings["link colour"] = "Linkkleur instellen";
-$a->strings["Set font-colour for banner"] = "Tekstkleur van banner instellen";
-$a->strings["Set the background colour"] = "Achtergrondkleur instellen";
+$a->strings["Navigation bar background color"] = "Achtergrondkleur navigatiebalk";
+$a->strings["Navigation bar gradient top color"] = "Bovenste gradiëntkleur navigatiebalk";
+$a->strings["Navigation bar gradient bottom color"] = "Onderste gradiëntkleur navigatiebalk";
+$a->strings["Navigation active button gradient top color"] = "Bovenste gradiëntkleur actieve knop navigatiebalk";
+$a->strings["Navigation active button gradient bottom color"] = "Onderste gradiëntkleur actieve knop op navigatiebalk";
+$a->strings["Navigation bar border color "] = "Randkleur navigatiebalk ";
+$a->strings["Navigation bar icon color "] = "Pictogramkleur navigatiebalk";
+$a->strings["Navigation bar active icon color "] = "Actieve pictogramkleur navigatiebalk";
+$a->strings["link color"] = "Linkkleur instellen";
+$a->strings["Set font-color for banner"] = "Tekstkleur van banner instellen";
+$a->strings["Set the background color"] = "Achtergrondkleur instellen";
$a->strings["Set the background image"] = "Achtergrondafbeelding instellen";
-$a->strings["Set the background colour of items"] = "Achtergrondkleur items instellen";
-$a->strings["Set the background colour of comments"] = "Achtergrondkleur reacties instellen";
-$a->strings["Set the border colour of comments"] = "Randkleur reacties instellen";
+$a->strings["Set the background color of items"] = "Achtergrondkleur items instellen";
+$a->strings["Set the background color of comments"] = "Achtergrondkleur reacties instellen";
+$a->strings["Set the border color of comments"] = "Randkleur reacties instellen";
$a->strings["Set the indent for comments"] = "Inspringen reacties instellen";
-$a->strings["Set the basic colour for item icons"] = "Basiskleur itempictogrammen instellen";
-$a->strings["Set the hover colour for item icons"] = "Hoverkleur itempictogrammen instellen";
+$a->strings["Set the basic color for item icons"] = "Basiskleur itempictogrammen instellen";
+$a->strings["Set the hover color for item icons"] = "Hoverkleur itempictogrammen instellen";
$a->strings["Set font-size for the entire application"] = "Tekstgrootte van de volledige applicatie instellen";
-$a->strings["Set font-colour for posts and comments"] = "Tekstkleur van berichten en reacties";
+$a->strings["Set font-color for posts and comments"] = "Tekstkleur van berichten en reacties";
$a->strings["Set radius of corners"] = "Radius van hoeken instellen";
$a->strings["Set shadow depth of photos"] = "Schaduwdiepte van foto's instellen";
$a->strings["Set maximum width of conversation regions"] = "Maximumbreedte conversatieruimte instellen";
@@ -1844,7 +1978,7 @@ $a->strings["Sloppy photo albums"] = "Rommelig vormgegeven fotoalbums";
$a->strings["Are you a clean desk or a messy desk person?"] = "Ben je iemand die van een opgeruimd bureau houdt of van een rommelig bureau?";
$a->strings["Update %s failed. See error logs."] = "Update %s mislukt. Zie foutenlogboek.";
$a->strings["Update Error at %s"] = "Update-fout op %s";
-$a->strings["Create an account to access services and applications within the Red Matrix"] = "Maak een account aan om toegang te krijgen tot diensten en toepassingen van de Red Matrix";
+$a->strings["Create an account to access services and applications within the Red Matrix"] = "Maak een account aan om toegang te krijgen tot diensten en toepassingen van de RedMatrix";
$a->strings["Password"] = "Wachtwoord";
$a->strings["Remember me"] = "Aangemeld blijven";
$a->strings["Forgot your password?"] = "Wachtwoord vergeten?";
diff --git a/view/nl/update_fail_eml.tpl b/view/nl/update_fail_eml.tpl
index a7df8fc2f..d903a8a9f 100644
--- a/view/nl/update_fail_eml.tpl
+++ b/view/nl/update_fail_eml.tpl
@@ -1,13 +1,13 @@
Hey,
-I'm the web server at {{$sitename}};
+I'm the RedMatrix hub at {{$sitename}};
-The Red Matrix developers released update {{$update}} recently,
+The Red atrix developers released update {{$update}} recently,
but when I tried to install it, something went terribly wrong.
This needs to be fixed soon and it requires human intervention.
-Please contact a Red developer if you can not figure out how to
+Please contact a RedMatrix developer if you can not figure out how to
fix it on your own. My database might be invalid.
The error message is '{{$error}}'.
Apologies for the inconvenience,
- your web server at {{$siteurl}} \ No newline at end of file
+ your hub at {{$siteurl}} \ No newline at end of file
diff --git a/view/pdl/mod_connections.pdl b/view/pdl/mod_connections.pdl
index fc86e4490..fd3f25483 100644
--- a/view/pdl/mod_connections.pdl
+++ b/view/pdl/mod_connections.pdl
@@ -1,5 +1,6 @@
[region=aside]
[widget=follow][/widget]
+[widget=collections][var=mode][connections[/arg][/widget]
[widget=suggestions][/widget]
[widget=findpeople][/widget]
[/region]
diff --git a/view/php/theme_init.php b/view/php/theme_init.php
index 45eb2fc1d..d43a87046 100644
--- a/view/php/theme_init.php
+++ b/view/php/theme_init.php
@@ -2,26 +2,28 @@
require_once('include/plugin.php');
-head_add_css('library/fancybox/jquery.fancybox-1.3.4.css');
head_add_css('library/tiptip/tipTip.css');
head_add_css('library/jgrowl/jquery.jgrowl.css');
-head_add_css('library/jslider/css/jslider.css');
-head_add_css('library/colorbox/colorbox.css');
+head_add_css('library/jRange/jquery.range.css');
head_add_css('view/css/conversation.css');
head_add_css('view/css/widgets.css');
-
+head_add_css('library/justifiedGallery/dist/css/justifiedGallery.css');
+head_add_css('library/bootstrap-tagsinput/bootstrap-tagsinput.css');
head_add_js('jquery.js');
head_add_js('jquery-migrate-1.1.1.js');
+head_add_js('library/justifiedGallery/dist/js/jquery.justifiedGallery.js');
+
//head_add_js('jquery-compat.js');
head_add_js('spin.js');
head_add_js('jquery.spin.js');
head_add_js('jquery.textinputs.js');
head_add_js('autocomplete.js');
-head_add_js('library/fancybox/jquery.fancybox-1.3.4.js');
+head_add_js('library/jquery-textcomplete/jquery.textcomplete.js');
+head_add_js('library/colorbox/jquery.colorbox.js');
head_add_js('library/jquery.timeago.js');
-head_add_js('library/jquery.divgrow/jquery.divgrow-1.3.1.js');
+head_add_js('library/readmore.js/readmore.js');
head_add_js('library/jquery_ac/friendica.complete.js');
head_add_js('library/tiptip/jquery.tipTip.minified.js');
head_add_js('library/jgrowl/jquery.jgrowl_minimized.js');
@@ -30,14 +32,17 @@ head_add_js('library/cryptojs/components/core-min.js');
head_add_js('library/cryptojs/rollups/aes.js');
head_add_js('library/cryptojs/rollups/rabbit.js');
head_add_js('library/cryptojs/rollups/tripledes.js');
+//head_add_js('library/stylish_select/jquery.stylish-select.js');
head_add_js('acl.js');
head_add_js('webtoolkit.base64.js');
head_add_js('main.js');
head_add_js('crypto.js');
-head_add_js('library/jslider/bin/jquery.slider.min.js');
+head_add_js('library/jRange/jquery.range.js');
head_add_js('docready.js');
head_add_js('library/colorbox/jquery.colorbox-min.js');
+head_add_js('library/bootstrap-tagsinput/bootstrap-tagsinput.js');
+head_add_js('library/jquery.AreYouSure/jquery.are-you-sure.js');
/**
* Those who require this feature will know what to do with it.
* Those who don't, won't.
diff --git a/view/pt-br/follow_notify_eml.tpl b/view/pt-br/follow_notify_eml.tpl
deleted file mode 100644
index bc86e5fe1..000000000
--- a/view/pt-br/follow_notify_eml.tpl
+++ /dev/null
@@ -1,14 +0,0 @@
-
-Caro/a {{$myname}},
-
-Você tem um novo seguidor em {{$sitename}} - '{{$requestor}}'.
-
-Você pode ver o perfil dele em {{$url}}.
-
-Por favor, autentique-se no seu site para aprovara ou ignorar/cancelar esta solicitação.
-
-{{$siteurl}}
-
-Gratidão,
-
- {{$sitename}} administrador
diff --git a/view/pt-br/friend_complete_eml.tpl b/view/pt-br/friend_complete_eml.tpl
deleted file mode 100644
index 51adf23e3..000000000
--- a/view/pt-br/friend_complete_eml.tpl
+++ /dev/null
@@ -1,23 +0,0 @@
-
-Caro/a {{$username}},
-
- Boas notícias... '{{$fn}}' em '{{$dfrn_url}}' aceitou
-seu pedido de conexão em '{{$sitename}}'.
-
-Vocês agora são amigos mútuos e podem trocar atualizações de status, fotos,
-e email sem restrição.
-
-Por favor, visite sua página 'Conexões' em {{$sitename}} se quiser efetuar
-quaisquer mudanças nesse relacionamento.
-
-{{$siteurl}}
-
-[Por exemplo, você pode criar um perfil à parte com informações que não
-estão disponíveis para o público geral - e conceder permissões de acesso
-para '{{$fn}}'].
-
-Atenciosamente,
-
- {{$sitename}} Administrador
-
-
diff --git a/view/pt-br/intro_complete_eml.tpl b/view/pt-br/intro_complete_eml.tpl
deleted file mode 100644
index bd20e0a6e..000000000
--- a/view/pt-br/intro_complete_eml.tpl
+++ /dev/null
@@ -1,22 +0,0 @@
-
-Caro/a {{$username}},
-
- '{{$fn}}' em '{{$dfrn_url}}' aceitou sua solicitação de conexão
-em '{{$sitename}}'.
-
- '{{$fn}}' optou por aceitá-lo como "fã", o que restringe algumas
-formas de comunicação - como mensagens privadas e certas interações com o
-perfil. Se esta é uma página de celebridade ou comunidade, essa
-configuração é aplicada automaticamente.
-
- '{{$fn}}' pode escolher no futuro transformar essa relação em uma
-mais permissiva, de duas vias.
-
- Você começará a receber atualizações de status públicas de '{{$fn}}',
-que aparecerão na sua Matriz em
-
-{{$siteurl}}
-
-Atenciosamente,
-
- {{$sitename}} Administrador
diff --git a/view/pt-br/messages.po b/view/pt-br/messages.po
index 9d884507d..9de225062 100644
--- a/view/pt-br/messages.po
+++ b/view/pt-br/messages.po
@@ -16,8 +16,8 @@ msgid ""
msgstr ""
"Project-Id-Version: Red Matrix\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2014-06-06 00:02-0700\n"
-"PO-Revision-Date: 2014-06-12 15:56+0000\n"
+"POT-Creation-Date: 2014-10-03 00:04-0700\n"
+"PO-Revision-Date: 2014-10-07 15:36+0000\n"
"Last-Translator: Iske Solstag <solstag@member.fsf.org>\n"
"Language-Team: Portuguese (Brazil) (http://www.transifex.com/projects/p/red-matrix/language/pt_BR/)\n"
"MIME-Version: 1.0\n"
@@ -31,49 +31,22 @@ msgstr ""
msgid "Cannot locate DNS info for database server '%s'"
msgstr "Não foi possível localizar a informação de DNS para o servidor de banco de dados '%s'"
-#: ../../include/photo/photo_driver.php:643 ../../include/photos.php:51
+#: ../../include/photo/photo_driver.php:653 ../../include/photos.php:51
+#: ../../mod/photos.php:91 ../../mod/photos.php:660 ../../mod/photos.php:682
#: ../../mod/profile_photo.php:142 ../../mod/profile_photo.php:301
-#: ../../mod/profile_photo.php:421 ../../mod/photos.php:91
-#: ../../mod/photos.php:655 ../../mod/photos.php:677
+#: ../../mod/profile_photo.php:423
msgid "Profile Photos"
msgstr "Fotos do perfil"
-#: ../../include/bbcode.php:128 ../../include/bbcode.php:642
-#: ../../include/bbcode.php:645 ../../include/bbcode.php:650
-#: ../../include/bbcode.php:653 ../../include/bbcode.php:656
-#: ../../include/bbcode.php:659 ../../include/bbcode.php:664
-#: ../../include/bbcode.php:667 ../../include/bbcode.php:672
-#: ../../include/bbcode.php:675 ../../include/bbcode.php:678
-#: ../../include/bbcode.php:681
-msgid "Image/photo"
-msgstr "Imagem/foto"
-
-#: ../../include/bbcode.php:163 ../../include/bbcode.php:692
-msgid "Encrypted content"
-msgstr "Conteúdo criptografado"
-
-#: ../../include/bbcode.php:179
-msgid "QR code"
-msgstr "código QR"
-
-#: ../../include/bbcode.php:228
-#, php-format
-msgid "%1$s wrote the following %2$s %3$s"
-msgstr "%1$s escreveu a seguinte %2$s %3$s"
-
-#: ../../include/bbcode.php:230
-msgid "post"
-msgstr "publicação"
-
-#: ../../include/bbcode.php:610 ../../include/bbcode.php:630
-msgid "$1 wrote:"
-msgstr "$1 escreveu:"
+#: ../../include/network.php:590
+msgid "view full size"
+msgstr "ver na tela inteira"
-#: ../../include/oembed.php:171
+#: ../../include/oembed.php:163
msgid "Embedded content"
msgstr "Conteúdo incorporado"
-#: ../../include/oembed.php:180
+#: ../../include/oembed.php:172
msgid "Embedding disabled"
msgstr "A incorporação está desabilitada"
@@ -86,1189 +59,1184 @@ msgstr "criou uma nova publicação"
msgid "commented on %s's post"
msgstr "comentou a publicação de %s"
-#: ../../include/conversation.php:117 ../../include/text.php:1705
-#: ../../mod/subthread.php:72 ../../mod/subthread.php:174
-#: ../../mod/tagger.php:45 ../../mod/like.php:111
+#: ../../include/apps.php:123
+msgid "Site Admin"
+msgstr "Administração do site"
+
+#: ../../include/apps.php:124 ../../include/conversation.php:1566
+#: ../../include/nav.php:116
+msgid "Bookmarks"
+msgstr "Links guardados"
+
+#: ../../include/apps.php:125
+msgid "Address Book"
+msgstr "Livro de Endereços"
+
+#: ../../include/apps.php:126 ../../include/nav.php:124 ../../boot.php:1495
+msgid "Login"
+msgstr "Entrar"
+
+#: ../../include/apps.php:127 ../../include/nav.php:214
+#: ../../mod/manage.php:148
+msgid "Channel Manager"
+msgstr "Seus canais"
+
+#: ../../include/apps.php:128 ../../include/nav.php:188
+msgid "Matrix"
+msgstr "Matriz"
+
+#: ../../include/apps.php:129 ../../include/nav.php:216
+#: ../../include/widgets.php:521 ../../mod/admin.php:953
+#: ../../mod/admin.php:1158
+msgid "Settings"
+msgstr "Configurações"
+
+#: ../../include/apps.php:130 ../../include/conversation.php:1542
+#: ../../include/reddav.php:1280 ../../include/nav.php:105
+#: ../../mod/fbrowser.php:114
+msgid "Files"
+msgstr "Arquivos"
+
+#: ../../include/apps.php:131 ../../include/conversation.php:1577
+#: ../../include/nav.php:120 ../../mod/webpages.php:84
+msgid "Webpages"
+msgstr "Páginas web"
+
+#: ../../include/apps.php:132 ../../include/nav.php:191
+msgid "Channel Home"
+msgstr "Página inicial do canal"
+
+#: ../../include/apps.php:133 ../../include/identity.php:1110
+#: ../../include/identity.php:1228 ../../mod/profperm.php:112
+msgid "Profile"
+msgstr "Perfil"
+
+#: ../../include/apps.php:134 ../../include/conversation.php:1533
+#: ../../include/nav.php:104 ../../mod/fbrowser.php:25
+msgid "Photos"
+msgstr "Fotos"
+
+#: ../../include/apps.php:135 ../../include/nav.php:210
+#: ../../mod/events.php:436
+msgid "Events"
+msgstr "Eventos"
+
+#: ../../include/apps.php:136 ../../include/nav.php:177
+#: ../../mod/directory.php:226
+msgid "Directory"
+msgstr "Diretório"
+
+#: ../../include/apps.php:137 ../../include/nav.php:169 ../../mod/help.php:60
+#: ../../mod/help.php:65
+msgid "Help"
+msgstr "Ajuda"
+
+#: ../../include/apps.php:138 ../../include/nav.php:202
+msgid "Mail"
+msgstr "Mensagens"
+
+#: ../../include/apps.php:139 ../../mod/mood.php:131
+msgid "Mood"
+msgstr "Humor"
+
+#: ../../include/apps.php:140 ../../include/conversation.php:947
+msgid "Poke"
+msgstr "Cutucar"
+
+#: ../../include/apps.php:141 ../../include/nav.php:110
+msgid "Chat"
+msgstr "Bate-papo"
+
+#: ../../include/apps.php:142 ../../include/text.php:821
+#: ../../include/text.php:835 ../../include/nav.php:174
+#: ../../mod/search.php:30
+msgid "Search"
+msgstr "Pesquisar"
+
+#: ../../include/apps.php:143
+msgid "Probe"
+msgstr "Sonda"
+
+#: ../../include/apps.php:144
+msgid "Suggest"
+msgstr "Sugerir"
+
+#: ../../include/apps.php:145
+msgid "Random Channel"
+msgstr "Canal aleatório"
+
+#: ../../include/apps.php:146
+msgid "Invite"
+msgstr "Convidar"
+
+#: ../../include/apps.php:147
+msgid "Features"
+msgstr "Recursos"
+
+#: ../../include/apps.php:148
+msgid "Language"
+msgstr "Idioma"
+
+#: ../../include/apps.php:149
+msgid "Post"
+msgstr "Publicações"
+
+#: ../../include/apps.php:150
+msgid "Profile Photo"
+msgstr "Foto do perfil"
+
+#: ../../include/apps.php:239 ../../mod/settings.php:79
+#: ../../mod/settings.php:545
+msgid "Update"
+msgstr "Atualizar"
+
+#: ../../include/apps.php:239
+msgid "Install"
+msgstr "Instalar"
+
+#: ../../include/apps.php:244
+msgid "Purchase"
+msgstr "Compras"
+
+#: ../../include/apps.php:246 ../../include/page_widgets.php:8
+#: ../../include/page_widgets.php:36 ../../include/reddav.php:1289
+#: ../../include/menu.php:42 ../../include/ItemObject.php:100
+#: ../../mod/settings.php:581 ../../mod/blocks.php:99
+#: ../../mod/connections.php:381 ../../mod/connections.php:394
+#: ../../mod/connections.php:413 ../../mod/editblock.php:111
+#: ../../mod/editlayout.php:106 ../../mod/editpost.php:112
+#: ../../mod/editwebpage.php:143 ../../mod/thing.php:233
+#: ../../mod/layouts.php:121 ../../mod/menu.php:59 ../../mod/webpages.php:132
+msgid "Edit"
+msgstr "Editar"
+
+#: ../../include/apps.php:247 ../../include/conversation.php:638
+#: ../../include/reddav.php:1290 ../../include/ItemObject.php:120
+#: ../../mod/settings.php:582 ../../mod/connedit.php:462
+#: ../../mod/photos.php:1080 ../../mod/group.php:176 ../../mod/admin.php:732
+#: ../../mod/admin.php:863 ../../mod/thing.php:234
+msgid "Delete"
+msgstr "Excluir"
+
+#: ../../include/apps.php:328 ../../include/apps.php:379
+#: ../../include/conversation.php:999 ../../include/reddav.php:1202
+#: ../../mod/connedit.php:498
+msgid "Unknown"
+msgstr "Desconhecidos"
+
+#: ../../include/page_widgets.php:6
+msgid "New Page"
+msgstr "Nova página"
+
+#: ../../include/page_widgets.php:39 ../../mod/blocks.php:102
+#: ../../mod/layouts.php:125 ../../mod/webpages.php:135
+msgid "View"
+msgstr "Ver"
+
+#: ../../include/page_widgets.php:40 ../../include/conversation.php:1110
+#: ../../include/ItemObject.php:606 ../../mod/editblock.php:141
+#: ../../mod/editlayout.php:135 ../../mod/editpost.php:140
+#: ../../mod/editwebpage.php:174 ../../mod/photos.php:1031
+#: ../../mod/webpages.php:136
+msgid "Preview"
+msgstr "Pré-visualizar"
+
+#: ../../include/page_widgets.php:41 ../../mod/webpages.php:137
+msgid "Actions"
+msgstr "Ações"
+
+#: ../../include/page_widgets.php:42 ../../mod/webpages.php:138
+msgid "Page Link"
+msgstr "Link da página"
+
+#: ../../include/page_widgets.php:43 ../../mod/webpages.php:139
+msgid "Title"
+msgstr "Título"
+
+#: ../../include/page_widgets.php:44 ../../mod/webpages.php:140
+msgid "Created"
+msgstr "Criado"
+
+#: ../../include/page_widgets.php:45 ../../mod/webpages.php:141
+msgid "Edited"
+msgstr "Editado"
+
+#: ../../include/security.php:320
+msgid ""
+"The form security token was not correct. This probably happened because the "
+"form has been opened for too long (>3 hours) before submitting it."
+msgstr "O token de segurança do formulário não estava correto. Isso provavelmente aconteceu porque o formulário ficou aberto por muito tempo (>3 horas) antes da sua submissão."
+
+#: ../../include/zot.php:654
+msgid "Invalid data packet"
+msgstr "Pacote de dados inválido"
+
+#: ../../include/zot.php:670
+msgid "Unable to verify channel signature"
+msgstr "Não foi possível verificar a assinatura do canal"
+
+#: ../../include/zot.php:1701
+#, php-format
+msgid "Unable to verify site signature for %s"
+msgstr "Não foi possível verificar a assinatura do site para %s"
+
+#: ../../include/photos.php:15 ../../include/attach.php:119
+#: ../../include/attach.php:166 ../../include/attach.php:229
+#: ../../include/attach.php:243 ../../include/attach.php:283
+#: ../../include/attach.php:297 ../../include/attach.php:322
+#: ../../include/attach.php:513 ../../include/attach.php:585
+#: ../../include/chat.php:116 ../../include/items.php:4000
+#: ../../mod/mood.php:112 ../../mod/mitem.php:73 ../../mod/achievements.php:30
+#: ../../mod/settings.php:496 ../../mod/poke.php:128 ../../mod/api.php:26
+#: ../../mod/api.php:31 ../../mod/authtest.php:13 ../../mod/profile.php:64
+#: ../../mod/profile.php:72 ../../mod/block.php:22 ../../mod/block.php:72
+#: ../../mod/blocks.php:29 ../../mod/blocks.php:44 ../../mod/profiles.php:179
+#: ../../mod/profiles.php:560 ../../mod/bookmarks.php:46
+#: ../../mod/channel.php:89 ../../mod/channel.php:193
+#: ../../mod/channel.php:236 ../../mod/chat.php:90 ../../mod/chat.php:95
+#: ../../mod/register.php:70 ../../mod/regmod.php:17 ../../mod/common.php:35
+#: ../../mod/network.php:12 ../../mod/connections.php:169
+#: ../../mod/connedit.php:254 ../../mod/delegate.php:6 ../../mod/page.php:30
+#: ../../mod/page.php:80 ../../mod/setup.php:203 ../../mod/editblock.php:34
+#: ../../mod/pdledit.php:21 ../../mod/editlayout.php:48
+#: ../../mod/editpost.php:13 ../../mod/editwebpage.php:44
+#: ../../mod/editwebpage.php:83 ../../mod/photos.php:68
+#: ../../mod/photos.php:526 ../../mod/profile_photo.php:263
+#: ../../mod/profile_photo.php:276 ../../mod/sources.php:66
+#: ../../mod/events.php:200 ../../mod/filestorage.php:10
+#: ../../mod/filestorage.php:59 ../../mod/filestorage.php:75
+#: ../../mod/filestorage.php:98 ../../mod/fsuggest.php:78
+#: ../../mod/suggest.php:26 ../../mod/group.php:9 ../../mod/thing.php:247
+#: ../../mod/thing.php:264 ../../mod/thing.php:299 ../../mod/invite.php:13
+#: ../../mod/invite.php:104 ../../mod/item.php:178 ../../mod/item.php:186
+#: ../../mod/item.php:922 ../../mod/layouts.php:27 ../../mod/layouts.php:39
+#: ../../mod/like.php:154 ../../mod/viewconnections.php:22
+#: ../../mod/viewconnections.php:27 ../../mod/viewsrc.php:14
+#: ../../mod/mail.php:108 ../../mod/manage.php:6 ../../mod/menu.php:44
+#: ../../mod/webpages.php:40 ../../mod/message.php:16
+#: ../../mod/new_channel.php:68 ../../mod/new_channel.php:99
+#: ../../mod/notifications.php:66 ../../mod/appman.php:66
+#: ../../mod/service_limits.php:7 ../../index.php:190 ../../index.php:365
+msgid "Permission denied."
+msgstr "Permissão negada."
+
+#: ../../include/photos.php:104
+#, php-format
+msgid "Image exceeds website size limit of %lu bytes"
+msgstr "A imagem excede o limite de tamanho do site, que é de %"
+
+#: ../../include/photos.php:111
+msgid "Image file is empty."
+msgstr "O arquivo de imagem está vazio."
+
+#: ../../include/photos.php:140 ../../mod/profile_photo.php:216
+msgid "Unable to process image"
+msgstr "Não foi possível processar a imagem"
+
+#: ../../include/photos.php:212
+msgid "Photo storage failed."
+msgstr "Não foi possível armazenar a foto."
+
+#: ../../include/photos.php:340 ../../include/conversation.php:1536
+msgid "Photo Albums"
+msgstr "Ãlbuns de fotos"
+
+#: ../../include/photos.php:344
+msgid "Upload New Photos"
+msgstr "Enviar novas fotos"
+
+#: ../../include/acl_selectors.php:240
+msgid "Visible to your default audience"
+msgstr "Visível para seu público padrão"
+
+#: ../../include/acl_selectors.php:241
+msgid "Show"
+msgstr "Exibir"
+
+#: ../../include/acl_selectors.php:242
+msgid "Don't show"
+msgstr "Não exibir"
+
+#: ../../include/acl_selectors.php:248 ../../mod/chat.php:209
+#: ../../mod/photos.php:604 ../../mod/photos.php:986
+#: ../../mod/filestorage.php:128
+msgid "Permissions"
+msgstr "Permissões"
+
+#: ../../include/acl_selectors.php:249 ../../include/ItemObject.php:303
+msgid "Close"
+msgstr "Fechar"
+
+#: ../../include/activities.php:39
+msgid " and "
+msgstr " e "
+
+#: ../../include/activities.php:47
+msgid "public profile"
+msgstr "perfil público"
+
+#: ../../include/activities.php:52
+#, php-format
+msgid "%1$s changed %2$s to &ldquo;%3$s&rdquo;"
+msgstr "%1$s mudou %2$s para &ldquo;%3$s&rdquo;"
+
+#: ../../include/activities.php:53
+#, php-format
+msgid "Visit %1$s's %2$s"
+msgstr "Visite o %2$s de %1$s"
+
+#: ../../include/activities.php:56
+#, php-format
+msgid "%1$s has an updated %2$s, changing %3$s."
+msgstr "%1$s atualizou %2$s, alterando %3$s."
+
+#: ../../include/api.php:1069
+msgid "Public Timeline"
+msgstr "Linha do tempo pública"
+
+#: ../../include/attach.php:224 ../../include/attach.php:278
+msgid "Item was not found."
+msgstr "O item não foi encontrado."
+
+#: ../../include/attach.php:335
+msgid "No source file."
+msgstr "Nenhum arquivo de origem."
+
+#: ../../include/attach.php:352
+msgid "Cannot locate file to replace"
+msgstr "Não foi possível locar o arquivo a ser substituído"
+
+#: ../../include/attach.php:370
+msgid "Cannot locate file to revise/update"
+msgstr "Não foi possível localizar o arquivo a ser revisado/atualizado"
+
+#: ../../include/attach.php:381
+#, php-format
+msgid "File exceeds size limit of %d"
+msgstr "O arquivo excedeu o tamanho limite de %d"
+
+#: ../../include/attach.php:393
+#, php-format
+msgid "You have reached your limit of %1$.0f Mbytes attachment storage."
+msgstr "Você atingiu o seu limite de %1$.0f Mbytes de armazenamento de anexos."
+
+#: ../../include/attach.php:475
+msgid "File upload failed. Possible system limit or action terminated."
+msgstr "Não foi possível enviar o arquivo. Provável limite do sistema ou a ação foi encerrada."
+
+#: ../../include/attach.php:487
+msgid "Stored file could not be verified. Upload failed."
+msgstr "Não foi possível verificar o arquivo armazenado. Falha no envio."
+
+#: ../../include/attach.php:528 ../../include/attach.php:545
+msgid "Path not available."
+msgstr "O caminho não está disponível."
+
+#: ../../include/attach.php:590
+msgid "Empty pathname"
+msgstr "O nome do caminho está em branco"
+
+#: ../../include/attach.php:606
+msgid "duplicate filename or path"
+msgstr "nome de arquivo ou caminho duplicado"
+
+#: ../../include/attach.php:630
+msgid "Path not found."
+msgstr "Caminho não encontrado."
+
+#: ../../include/attach.php:681
+msgid "mkdir failed."
+msgstr "mkdir falhou."
+
+#: ../../include/attach.php:685
+msgid "database storage failed."
+msgstr "armazenamento de banco de dados falhou."
+
+#: ../../include/conversation.php:120 ../../include/text.php:1745
+#: ../../include/diaspora.php:1898 ../../mod/subthread.php:72
+#: ../../mod/subthread.php:174 ../../mod/tagger.php:45 ../../mod/like.php:294
msgid "photo"
msgstr "foto"
-#: ../../include/conversation.php:120 ../../include/text.php:1708
+#: ../../include/conversation.php:123 ../../include/text.php:1748
#: ../../mod/tagger.php:49
msgid "event"
msgstr "evento"
-#: ../../include/conversation.php:123
+#: ../../include/conversation.php:126 ../../mod/like.php:89
msgid "channel"
msgstr "canal"
-#: ../../include/conversation.php:145 ../../include/text.php:1711
-#: ../../mod/subthread.php:72 ../../mod/subthread.php:174
-#: ../../mod/tagger.php:53 ../../mod/like.php:111
+#: ../../include/conversation.php:148 ../../include/text.php:1751
+#: ../../include/diaspora.php:1898 ../../mod/subthread.php:72
+#: ../../mod/subthread.php:174 ../../mod/tagger.php:53 ../../mod/like.php:294
msgid "status"
msgstr "status"
-#: ../../include/conversation.php:147 ../../include/text.php:1713
+#: ../../include/conversation.php:150 ../../include/text.php:1753
#: ../../mod/tagger.php:55
msgid "comment"
msgstr "comentário"
-#: ../../include/conversation.php:161 ../../mod/like.php:142
+#: ../../include/conversation.php:164 ../../include/diaspora.php:1927
+#: ../../mod/like.php:331
#, php-format
msgid "%1$s likes %2$s's %3$s"
msgstr "%1$s gosta de %3$s de %2$s"
-#: ../../include/conversation.php:164 ../../mod/like.php:144
+#: ../../include/conversation.php:167 ../../mod/like.php:333
#, php-format
msgid "%1$s doesn't like %2$s's %3$s"
msgstr "%1$s não gosta de %3$s de %2$s"
-#: ../../include/conversation.php:201
+#: ../../include/conversation.php:204
#, php-format
msgid "%1$s is now connected with %2$s"
msgstr "%1$s agora está conectado com %2$s"
-#: ../../include/conversation.php:236
+#: ../../include/conversation.php:239
#, php-format
msgid "%1$s poked %2$s"
msgstr "%1$s cutucou %2$s"
-#: ../../include/conversation.php:240 ../../include/text.php:895
+#: ../../include/conversation.php:243 ../../include/text.php:903
msgid "poked"
msgstr "cutucado"
-#: ../../include/conversation.php:258 ../../mod/mood.php:63
+#: ../../include/conversation.php:261 ../../mod/mood.php:63
#, php-format
msgctxt "mood"
msgid "%1$s is %2$s"
msgstr "%1$s está %2$s"
-#: ../../include/conversation.php:631 ../../include/ItemObject.php:114
+#: ../../include/conversation.php:637 ../../include/ItemObject.php:126
msgid "Select"
msgstr "Selecionar"
-#: ../../include/conversation.php:632 ../../include/apps.php:215
-#: ../../include/ItemObject.php:108 ../../mod/admin.php:757
-#: ../../mod/admin.php:886 ../../mod/connedit.php:398
-#: ../../mod/settings.php:578 ../../mod/filestorage.php:175
-#: ../../mod/group.php:176 ../../mod/thing.php:236 ../../mod/photos.php:1043
-msgid "Delete"
-msgstr "Excluir"
-
-#: ../../include/conversation.php:639 ../../include/ItemObject.php:89
-#: ../../mod/photos.php:846
+#: ../../include/conversation.php:645 ../../include/ItemObject.php:89
+#: ../../mod/photos.php:878
msgid "Private Message"
msgstr "Mensagem privada"
-#: ../../include/conversation.php:646 ../../include/ItemObject.php:182
+#: ../../include/conversation.php:652 ../../include/ItemObject.php:194
msgid "Message is verified"
msgstr "A mensagem foi verificada"
-#: ../../include/conversation.php:666
+#: ../../include/conversation.php:671
#, php-format
msgid "View %s's profile @ %s"
msgstr "Ver o perfil de %s's @ %s"
-#: ../../include/conversation.php:680
+#: ../../include/conversation.php:685
msgid "Categories:"
msgstr "Categorias:"
-#: ../../include/conversation.php:681
+#: ../../include/conversation.php:686
msgid "Filed under:"
msgstr "Armazenado sob:"
-#: ../../include/conversation.php:690 ../../include/ItemObject.php:250
+#: ../../include/conversation.php:694 ../../include/ItemObject.php:264
#, php-format
msgid " from %s"
msgstr "de %s"
-#: ../../include/conversation.php:693 ../../include/ItemObject.php:253
+#: ../../include/conversation.php:697 ../../include/ItemObject.php:267
#, php-format
msgid "last edited: %s"
msgstr "última edição: %s"
-#: ../../include/conversation.php:694 ../../include/ItemObject.php:254
+#: ../../include/conversation.php:698 ../../include/ItemObject.php:268
#, php-format
msgid "Expires: %s"
msgstr "Expira: %s"
-#: ../../include/conversation.php:709
+#: ../../include/conversation.php:713
msgid "View in context"
msgstr "Ver no contexto"
-#: ../../include/conversation.php:711 ../../include/conversation.php:1127
-#: ../../include/ItemObject.php:294 ../../mod/editblock.php:120
+#: ../../include/conversation.php:715 ../../include/conversation.php:1149
+#: ../../include/ItemObject.php:308 ../../mod/editblock.php:120
#: ../../mod/editlayout.php:115 ../../mod/editpost.php:121
-#: ../../mod/editwebpage.php:152 ../../mod/mail.php:222 ../../mod/mail.php:336
-#: ../../mod/photos.php:974
+#: ../../mod/editwebpage.php:152 ../../mod/photos.php:1011
+#: ../../mod/mail.php:231 ../../mod/mail.php:346
msgid "Please wait"
msgstr "Por favor, espere"
-#: ../../include/conversation.php:838
+#: ../../include/conversation.php:839
msgid "remove"
msgstr "remover"
-#: ../../include/conversation.php:842
+#: ../../include/conversation.php:843 ../../include/nav.php:255
msgid "Loading..."
msgstr "Carregando..."
-#: ../../include/conversation.php:843
+#: ../../include/conversation.php:844
msgid "Delete Selected Items"
msgstr "Excluir os itens selecionados"
-#: ../../include/conversation.php:934
+#: ../../include/conversation.php:938
msgid "View Source"
msgstr "Ver a fonte"
-#: ../../include/conversation.php:935
+#: ../../include/conversation.php:939
msgid "Follow Thread"
msgstr "Acompanhar a discussão"
-#: ../../include/conversation.php:936
+#: ../../include/conversation.php:940
msgid "View Status"
msgstr "Ver status"
-#: ../../include/conversation.php:937 ../../include/nav.php:81
-#: ../../mod/connedit.php:351 ../../mod/connedit.php:465
+#: ../../include/conversation.php:941 ../../include/nav.php:98
+#: ../../mod/connedit.php:415 ../../mod/connedit.php:529
msgid "View Profile"
msgstr "Ver perfil"
-#: ../../include/conversation.php:938
+#: ../../include/conversation.php:942
msgid "View Photos"
msgstr "Ver fotos"
-#: ../../include/conversation.php:939
+#: ../../include/conversation.php:943
msgid "Matrix Activity"
msgstr "Atividade na matriz"
-#: ../../include/conversation.php:940
+#: ../../include/conversation.php:944 ../../include/identity.php:830
+#: ../../include/widgets.php:135 ../../include/widgets.php:175
+#: ../../include/Contact.php:107 ../../mod/directory.php:183
+#: ../../mod/dirprofile.php:164 ../../mod/suggest.php:51
+#: ../../mod/match.php:62
+msgid "Connect"
+msgstr "Conectar"
+
+#: ../../include/conversation.php:945
msgid "Edit Contact"
msgstr "Editar contato"
-#: ../../include/conversation.php:941
+#: ../../include/conversation.php:946
msgid "Send PM"
msgstr "Enviar MP"
-#: ../../include/conversation.php:942 ../../include/apps.php:132
-msgid "Poke"
-msgstr "Cutucar"
-
-#: ../../include/conversation.php:998
+#: ../../include/conversation.php:1020
#, php-format
msgid "%s likes this."
msgstr "%s gostou disso."
-#: ../../include/conversation.php:998
+#: ../../include/conversation.php:1020
#, php-format
msgid "%s doesn't like this."
msgstr "%s não gostou disso."
-#: ../../include/conversation.php:1002
+#: ../../include/conversation.php:1024
#, php-format
msgid "<span %1$s>%2$d people</span> like this."
msgid_plural "<span %1$s>%2$d people</span> like this."
msgstr[0] ""
msgstr[1] "<span %1$s>%2$d pessoas</span> gostaram disso."
-#: ../../include/conversation.php:1004
+#: ../../include/conversation.php:1026
#, php-format
msgid "<span %1$s>%2$d people</span> don't like this."
msgid_plural "<span %1$s>%2$d people</span> don't like this."
msgstr[0] ""
msgstr[1] "<span %1$s>%2$d pessoas</span> não gostaram disso."
-#: ../../include/conversation.php:1010
+#: ../../include/conversation.php:1032
msgid "and"
msgstr "e"
-#: ../../include/conversation.php:1013
+#: ../../include/conversation.php:1035
#, php-format
msgid ", and %d other people"
msgid_plural ", and %d other people"
msgstr[0] ""
msgstr[1] ", e mais %d outras pessoas"
-#: ../../include/conversation.php:1014
+#: ../../include/conversation.php:1036
#, php-format
msgid "%s like this."
msgstr "%s gostou disso."
-#: ../../include/conversation.php:1014
+#: ../../include/conversation.php:1036
#, php-format
msgid "%s don't like this."
msgstr "%s não gostou disso."
-#: ../../include/conversation.php:1071
+#: ../../include/conversation.php:1093
msgid "Visible to <strong>everybody</strong>"
msgstr "Visível para <strong>todos</strong>"
-#: ../../include/conversation.php:1072 ../../mod/mail.php:171
-#: ../../mod/mail.php:269
+#: ../../include/conversation.php:1094 ../../mod/mail.php:167
+#: ../../mod/mail.php:279
msgid "Please enter a link URL:"
msgstr "Por favor, digite uma URL:"
-#: ../../include/conversation.php:1073
+#: ../../include/conversation.php:1095
msgid "Please enter a video link/URL:"
msgstr "Por favor, digite o link/URL do vídeo:"
-#: ../../include/conversation.php:1074
+#: ../../include/conversation.php:1096
msgid "Please enter an audio link/URL:"
msgstr "Por favor, digite o link/URL do áudio:"
-#: ../../include/conversation.php:1075
+#: ../../include/conversation.php:1097
msgid "Tag term:"
msgstr "Etiqueta:"
-#: ../../include/conversation.php:1076 ../../mod/filer.php:49
+#: ../../include/conversation.php:1098 ../../mod/filer.php:49
msgid "Save to Folder:"
msgstr "Salvar para a pasta:"
-#: ../../include/conversation.php:1077
+#: ../../include/conversation.php:1099
msgid "Where are you right now?"
msgstr "Onde você está agora?"
-#: ../../include/conversation.php:1078 ../../mod/editpost.php:52
-#: ../../mod/mail.php:172 ../../mod/mail.php:270
+#: ../../include/conversation.php:1100 ../../mod/editpost.php:52
+#: ../../mod/mail.php:168 ../../mod/mail.php:280
msgid "Expires YYYY-MM-DD HH:MM"
msgstr "Expira YYYY-MM-DD HH:MM"
-#: ../../include/conversation.php:1088 ../../include/page_widgets.php:40
-#: ../../include/ItemObject.php:592 ../../mod/editblock.php:141
-#: ../../mod/editlayout.php:135 ../../mod/editpost.php:140
-#: ../../mod/editwebpage.php:175 ../../mod/webpages.php:123
-#: ../../mod/photos.php:994
-msgid "Preview"
-msgstr "Pré-visualizar"
-
-#: ../../include/conversation.php:1102 ../../mod/layouts.php:113
-#: ../../mod/photos.php:973
+#: ../../include/conversation.php:1124 ../../mod/photos.php:1010
+#: ../../mod/layouts.php:122
msgid "Share"
msgstr "Compartilhar"
-#: ../../include/conversation.php:1104 ../../mod/editwebpage.php:139
+#: ../../include/conversation.php:1126 ../../mod/editwebpage.php:139
msgid "Page link title"
msgstr "Título do link da página"
-#: ../../include/conversation.php:1107
+#: ../../include/conversation.php:1129
msgid "Post as"
msgstr "Publicar como"
-#: ../../include/conversation.php:1108 ../../mod/editblock.php:112
+#: ../../include/conversation.php:1130 ../../mod/editblock.php:112
#: ../../mod/editlayout.php:107 ../../mod/editpost.php:113
-#: ../../mod/editwebpage.php:144 ../../mod/mail.php:219 ../../mod/mail.php:332
+#: ../../mod/editwebpage.php:144 ../../mod/mail.php:228 ../../mod/mail.php:342
msgid "Upload photo"
msgstr "Enviar foto"
-#: ../../include/conversation.php:1109
+#: ../../include/conversation.php:1131
msgid "upload photo"
msgstr "enviar foto"
-#: ../../include/conversation.php:1110 ../../mod/editblock.php:113
+#: ../../include/conversation.php:1132 ../../mod/editblock.php:113
#: ../../mod/editlayout.php:108 ../../mod/editpost.php:114
-#: ../../mod/editwebpage.php:145 ../../mod/mail.php:220 ../../mod/mail.php:333
+#: ../../mod/editwebpage.php:145 ../../mod/mail.php:229 ../../mod/mail.php:343
msgid "Attach file"
msgstr "Anexar arquivo"
-#: ../../include/conversation.php:1111
+#: ../../include/conversation.php:1133
msgid "attach file"
msgstr "anexar arquivo"
-#: ../../include/conversation.php:1112 ../../mod/editblock.php:114
+#: ../../include/conversation.php:1134 ../../mod/editblock.php:114
#: ../../mod/editlayout.php:109 ../../mod/editpost.php:115
-#: ../../mod/editwebpage.php:146 ../../mod/mail.php:221 ../../mod/mail.php:334
+#: ../../mod/editwebpage.php:146 ../../mod/mail.php:230 ../../mod/mail.php:344
msgid "Insert web link"
msgstr "Inserir link web"
-#: ../../include/conversation.php:1113
+#: ../../include/conversation.php:1135
msgid "web link"
msgstr "link web"
-#: ../../include/conversation.php:1114
+#: ../../include/conversation.php:1136
msgid "Insert video link"
msgstr "Inserir link de vídeo"
-#: ../../include/conversation.php:1115
+#: ../../include/conversation.php:1137
msgid "video link"
msgstr "link de vídeo"
-#: ../../include/conversation.php:1116
+#: ../../include/conversation.php:1138
msgid "Insert audio link"
msgstr "Inserir link de áudio"
-#: ../../include/conversation.php:1117
+#: ../../include/conversation.php:1139
msgid "audio link"
msgstr "link de áudio"
-#: ../../include/conversation.php:1118 ../../mod/editblock.php:118
+#: ../../include/conversation.php:1140 ../../mod/editblock.php:118
#: ../../mod/editlayout.php:113 ../../mod/editpost.php:119
#: ../../mod/editwebpage.php:150
msgid "Set your location"
msgstr "Definir sua localização"
-#: ../../include/conversation.php:1119
+#: ../../include/conversation.php:1141
msgid "set location"
msgstr "definir localização"
-#: ../../include/conversation.php:1120 ../../mod/editblock.php:119
+#: ../../include/conversation.php:1142 ../../mod/editblock.php:119
#: ../../mod/editlayout.php:114 ../../mod/editpost.php:120
#: ../../mod/editwebpage.php:151
msgid "Clear browser location"
msgstr "Limpar a localização do navegador"
-#: ../../include/conversation.php:1121
+#: ../../include/conversation.php:1143
msgid "clear location"
msgstr "limpar a localização"
-#: ../../include/conversation.php:1123 ../../mod/editblock.php:132
+#: ../../include/conversation.php:1145 ../../mod/editblock.php:132
#: ../../mod/editlayout.php:126 ../../mod/editpost.php:132
#: ../../mod/editwebpage.php:167
msgid "Set title"
msgstr "Definir o título"
-#: ../../include/conversation.php:1126 ../../mod/editblock.php:135
+#: ../../include/conversation.php:1148 ../../mod/editblock.php:135
#: ../../mod/editlayout.php:129 ../../mod/editpost.php:134
-#: ../../mod/editwebpage.php:169
+#: ../../mod/editwebpage.php:169 ../../mod/events.php:560
msgid "Categories (comma-separated list)"
msgstr "Categorias (lista separada por vírgulas)"
-#: ../../include/conversation.php:1128 ../../mod/editblock.php:121
+#: ../../include/conversation.php:1150 ../../mod/editblock.php:121
#: ../../mod/editlayout.php:116 ../../mod/editpost.php:122
#: ../../mod/editwebpage.php:153
msgid "Permission settings"
msgstr "Configurações de permissão"
-#: ../../include/conversation.php:1129
+#: ../../include/conversation.php:1151
msgid "permissions"
msgstr "permissões"
-#: ../../include/conversation.php:1136 ../../mod/editblock.php:129
+#: ../../include/conversation.php:1158 ../../mod/editblock.php:129
#: ../../mod/editlayout.php:123 ../../mod/editpost.php:129
#: ../../mod/editwebpage.php:162
msgid "Public post"
msgstr "Publicação pública"
-#: ../../include/conversation.php:1138 ../../mod/editblock.php:136
+#: ../../include/conversation.php:1160 ../../mod/editblock.php:136
#: ../../mod/editlayout.php:130 ../../mod/editpost.php:135
#: ../../mod/editwebpage.php:170
msgid "Example: bob@example.com, mary@example.com"
msgstr "Por exemplo: joao@exemplo.com, maria@exemplo.com"
-#: ../../include/conversation.php:1151 ../../mod/editblock.php:146
+#: ../../include/conversation.php:1173 ../../mod/editblock.php:146
#: ../../mod/editlayout.php:140 ../../mod/editpost.php:146
-#: ../../mod/editwebpage.php:180 ../../mod/mail.php:226 ../../mod/mail.php:339
+#: ../../mod/editwebpage.php:179 ../../mod/mail.php:235 ../../mod/mail.php:349
msgid "Set expiration date"
msgstr "Definir data de expiração"
-#: ../../include/conversation.php:1153 ../../include/ItemObject.php:595
-#: ../../mod/editpost.php:148 ../../mod/mail.php:228 ../../mod/mail.php:341
+#: ../../include/conversation.php:1175 ../../include/ItemObject.php:609
+#: ../../mod/editpost.php:148 ../../mod/mail.php:237 ../../mod/mail.php:351
msgid "Encrypt text"
msgstr "Encriptar texto"
-#: ../../include/conversation.php:1155 ../../mod/editpost.php:150
+#: ../../include/conversation.php:1177 ../../mod/editpost.php:150
+#: ../../mod/events.php:567
msgid "OK"
msgstr "Ok"
-#: ../../include/conversation.php:1156 ../../mod/settings.php:516
-#: ../../mod/settings.php:542 ../../mod/editpost.php:151
-#: ../../mod/fbrowser.php:82 ../../mod/fbrowser.php:117 ../../mod/tagrm.php:11
-#: ../../mod/tagrm.php:94
+#: ../../include/conversation.php:1178 ../../mod/settings.php:520
+#: ../../mod/settings.php:546 ../../mod/editpost.php:151
+#: ../../mod/fbrowser.php:82 ../../mod/fbrowser.php:117
+#: ../../mod/events.php:566 ../../mod/tagrm.php:11 ../../mod/tagrm.php:94
msgid "Cancel"
msgstr "Cancelar"
-#: ../../include/conversation.php:1392
+#: ../../include/conversation.php:1422
msgid "Discover"
msgstr "Descubra"
-#: ../../include/conversation.php:1395
+#: ../../include/conversation.php:1425
msgid "Imported public streams"
msgstr "Fluxos públicos importados"
-#: ../../include/conversation.php:1400
+#: ../../include/conversation.php:1430
msgid "Commented Order"
msgstr "Recentes e comentados"
-#: ../../include/conversation.php:1403
+#: ../../include/conversation.php:1433
msgid "Sort by Comment Date"
msgstr "Ordenar pela data do último comentário"
-#: ../../include/conversation.php:1407
+#: ../../include/conversation.php:1437
msgid "Posted Order"
msgstr "Recentemente publicados"
-#: ../../include/conversation.php:1410
+#: ../../include/conversation.php:1440
msgid "Sort by Post Date"
msgstr "Ordenar pela data da publicação"
-#: ../../include/conversation.php:1415 ../../include/widgets.php:82
+#: ../../include/conversation.php:1445 ../../include/widgets.php:89
msgid "Personal"
msgstr "Pessoal"
-#: ../../include/conversation.php:1418
+#: ../../include/conversation.php:1448
msgid "Posts that mention or involve you"
msgstr "Publicações que mencionam ou envolvem você"
-#: ../../include/conversation.php:1424 ../../mod/connections.php:211
+#: ../../include/conversation.php:1454 ../../mod/connections.php:211
#: ../../mod/connections.php:224 ../../mod/menu.php:61
msgid "New"
msgstr "Novo"
-#: ../../include/conversation.php:1427
+#: ../../include/conversation.php:1457
msgid "Activity Stream - by date"
msgstr "Fluxo de atividades - por data"
-#: ../../include/conversation.php:1433
+#: ../../include/conversation.php:1463
msgid "Starred"
msgstr "Estrelados"
-#: ../../include/conversation.php:1436
+#: ../../include/conversation.php:1466
msgid "Favourite Posts"
msgstr "Publicações favoritas"
-#: ../../include/conversation.php:1443
+#: ../../include/conversation.php:1473
msgid "Spam"
msgstr "Spam"
-#: ../../include/conversation.php:1446
+#: ../../include/conversation.php:1476
msgid "Posts flagged as SPAM"
msgstr "Publicações marcadas como SPAM"
-#: ../../include/conversation.php:1480 ../../mod/admin.php:890
+#: ../../include/conversation.php:1512 ../../mod/admin.php:867
msgid "Channel"
msgstr "Canal"
-#: ../../include/conversation.php:1483
+#: ../../include/conversation.php:1515
msgid "Status Messages and Posts"
msgstr "Mensagens de status e publicações"
-#: ../../include/conversation.php:1492
+#: ../../include/conversation.php:1524
msgid "About"
msgstr "Sobre"
-#: ../../include/conversation.php:1495
+#: ../../include/conversation.php:1527
msgid "Profile Details"
msgstr "Detalhes do perfil"
-#: ../../include/conversation.php:1501 ../../include/nav.php:84
-#: ../../include/apps.php:126 ../../mod/fbrowser.php:25
-msgid "Photos"
-msgstr "Fotos"
-
-#: ../../include/conversation.php:1504 ../../include/photos.php:311
-msgid "Photo Albums"
-msgstr "Ãlbuns de fotos"
-
-#: ../../include/conversation.php:1510 ../../include/nav.php:85
-#: ../../include/apps.php:122 ../../mod/fbrowser.php:114
-msgid "Files"
-msgstr "Arquivos"
-
-#: ../../include/conversation.php:1513
+#: ../../include/conversation.php:1545
msgid "Files and Storage"
msgstr "Arquivos e armazenamento"
-#: ../../include/conversation.php:1522 ../../include/conversation.php:1525
+#: ../../include/conversation.php:1554 ../../include/conversation.php:1557
msgid "Chatrooms"
msgstr "Salas de bate-papo"
-#: ../../include/conversation.php:1532 ../../include/nav.php:87
-#: ../../include/nav.php:180 ../../include/apps.php:127
-#: ../../mod/events.php:377
-msgid "Events"
-msgstr "Eventos"
-
-#: ../../include/conversation.php:1535
-msgid "Events and Calendar"
-msgstr "Eventos e calendário"
-
-#: ../../include/conversation.php:1540 ../../include/nav.php:88
-#: ../../include/apps.php:116
-msgid "Bookmarks"
-msgstr "Links guardados"
-
-#: ../../include/conversation.php:1543
+#: ../../include/conversation.php:1569
msgid "Saved Bookmarks"
msgstr "Links guardados"
-#: ../../include/conversation.php:1551 ../../include/nav.php:90
-#: ../../include/apps.php:123 ../../mod/webpages.php:79
-msgid "Webpages"
-msgstr "Páginas web"
-
-#: ../../include/conversation.php:1554
+#: ../../include/conversation.php:1580
msgid "Manage Webpages"
msgstr "Administrar páginas web"
-#: ../../include/page_widgets.php:6
-msgid "New Page"
-msgstr "Nova página"
-
-#: ../../include/page_widgets.php:8 ../../include/page_widgets.php:36
-#: ../../include/apps.php:214 ../../include/menu.php:42
-#: ../../include/ItemObject.php:96 ../../mod/blocks.php:94
-#: ../../mod/connections.php:392 ../../mod/settings.php:577
-#: ../../mod/editblock.php:111 ../../mod/editlayout.php:106
-#: ../../mod/editpost.php:112 ../../mod/editwebpage.php:143
-#: ../../mod/filestorage.php:174 ../../mod/thing.php:235
-#: ../../mod/layouts.php:112 ../../mod/menu.php:59 ../../mod/webpages.php:119
-msgid "Edit"
-msgstr "Editar"
-
-#: ../../include/page_widgets.php:39 ../../mod/blocks.php:97
-#: ../../mod/layouts.php:116 ../../mod/webpages.php:122
-msgid "View"
-msgstr "Ver"
-
-#: ../../include/page_widgets.php:41 ../../mod/webpages.php:124
-msgid "Actions"
-msgstr "Ações"
-
-#: ../../include/page_widgets.php:42 ../../mod/webpages.php:125
-msgid "Page Link"
-msgstr "Link da página"
-
-#: ../../include/page_widgets.php:43 ../../mod/webpages.php:126
-msgid "Title"
-msgstr "Título"
-
-#: ../../include/page_widgets.php:44 ../../mod/webpages.php:127
-msgid "Created"
-msgstr "Criado"
-
-#: ../../include/page_widgets.php:45 ../../mod/webpages.php:128
-msgid "Edited"
-msgstr "Editado"
-
-#: ../../include/permissions.php:13
-msgid "Can view my \"public\" stream and posts"
-msgstr "Pode ver meus fluxo e publicações \"públicos\""
-
-#: ../../include/permissions.php:14
-msgid "Can view my \"public\" channel profile"
-msgstr "Pode ver o perfil \"público\" do meu canal"
-
-#: ../../include/permissions.php:15
-msgid "Can view my \"public\" photo albums"
-msgstr "Pode ver meus álbuns de fotos \"públicos\""
-
-#: ../../include/permissions.php:16
-msgid "Can view my \"public\" address book"
-msgstr "Pode ver meu livro de endereços \"público\""
-
-#: ../../include/permissions.php:17
-msgid "Can view my \"public\" file storage"
-msgstr "Pode ver meu armazenamento de arquivos \"público\""
-
-#: ../../include/permissions.php:18
-msgid "Can view my \"public\" pages"
-msgstr "Pode ver minhas páginas \"públicas\""
-
-#: ../../include/permissions.php:21
-msgid "Can send me their channel stream and posts"
-msgstr "Pode me enviar seu fluxo e publicações"
-
-#: ../../include/permissions.php:22
-msgid "Can post on my channel page (\"wall\")"
-msgstr "Pode publicar na página do meu canal (\"mural\")"
-
-#: ../../include/permissions.php:23
-msgid "Can comment on my posts"
-msgstr "Pode comentar minhas publicações"
-
-#: ../../include/permissions.php:24
-msgid "Can send me private mail messages"
-msgstr "Pode me enviar mensagens privadas"
-
-#: ../../include/permissions.php:25
-msgid "Can post photos to my photo albums"
-msgstr "Pode publicar fotos nos meus álbuns de fotos"
-
-#: ../../include/permissions.php:26
-msgid "Can forward to all my channel contacts via post @mentions"
-msgstr "Pode encaminhar para todos os contatos do meu canal via @menções na publicação"
-
-#: ../../include/permissions.php:26
-msgid "Advanced - useful for creating group forum channels"
-msgstr "Avançado - útil para criar canais de fóruns de grupos"
-
-#: ../../include/permissions.php:27
-msgid "Can chat with me (when available)"
-msgstr "Pode conversar comigo (quando disponívei)"
-
-#: ../../include/permissions.php:28
-msgid "Can write to my \"public\" file storage"
-msgstr "Pode escrever em meu armazenamento de arquivos \"público\""
-
-#: ../../include/permissions.php:29
-msgid "Can edit my \"public\" pages"
-msgstr "Pode editar minhas páginas \"públicas\""
-
-#: ../../include/permissions.php:31
-msgid "Can source my \"public\" posts in derived channels"
-msgstr "Pode usar minhas publicações \"públicas\" como fonte para canais derivados"
-
-#: ../../include/permissions.php:31
-msgid "Somewhat advanced - very useful in open communities"
-msgstr "Avançado - muito útil em comunidades abertas"
-
-#: ../../include/permissions.php:33
-msgid "Can administer my channel resources"
-msgstr "Pode administrar os recursos do meu canal"
-
-#: ../../include/permissions.php:33
-msgid ""
-"Extremely advanced. Leave this alone unless you know what you are doing"
-msgstr "Extremamente avançado. Não mexa nisso a não ser que saiba o que está fazendo"
-
-#: ../../include/account.php:23
-msgid "Not a valid email address"
-msgstr "Não é um endereço de e-mail válido"
-
-#: ../../include/account.php:25
-msgid "Your email domain is not among those allowed on this site"
-msgstr "O domínio do seu e-mail não está entre os permitidos neste site"
-
-#: ../../include/account.php:31
-msgid "Your email address is already registered at this site."
-msgstr "O seu endereço de e-mail já está registrado neste site."
-
-#: ../../include/account.php:64
-msgid "An invitation is required."
-msgstr "É necessário um convite."
-
-#: ../../include/account.php:68
-msgid "Invitation could not be verified."
-msgstr "Não foi possível verificar o convite."
-
-#: ../../include/account.php:119
-msgid "Please enter the required information."
-msgstr "Por favor, forneça a informação solicitada."
-
-#: ../../include/account.php:187
-msgid "Failed to store account information."
-msgstr "Não foi possível armazenar a informação da conta."
-
-#: ../../include/account.php:273
+#: ../../include/bookmarks.php:35
#, php-format
-msgid "Registration request at %s"
-msgstr "Solicitação de registro em %s"
-
-#: ../../include/account.php:275 ../../include/account.php:302
-#: ../../include/account.php:359
-msgid "Administrator"
-msgstr "Administrador"
-
-#: ../../include/account.php:297
-msgid "your registration password"
-msgstr "sua senha de registro"
-
-#: ../../include/account.php:300 ../../include/account.php:357
-#, php-format
-msgid "Registration details for %s"
-msgstr "Detalhes do registro de %s"
-
-#: ../../include/account.php:366
-msgid "Account approved."
-msgstr "A conta foi aprovada."
-
-#: ../../include/account.php:400
-#, php-format
-msgid "Registration revoked for %s"
-msgstr "O registro de %s foi revogado"
-
-#: ../../include/photos.php:15 ../../include/attach.php:119
-#: ../../include/attach.php:166 ../../include/attach.php:229
-#: ../../include/attach.php:243 ../../include/attach.php:283
-#: ../../include/attach.php:297 ../../include/attach.php:322
-#: ../../include/attach.php:513 ../../include/attach.php:585
-#: ../../include/items.php:3673 ../../include/chat.php:116
-#: ../../mod/mood.php:112 ../../mod/mitem.php:73 ../../mod/achievements.php:27
-#: ../../mod/poke.php:128 ../../mod/api.php:26 ../../mod/api.php:31
-#: ../../mod/authtest.php:13 ../../mod/profile.php:64 ../../mod/profile.php:72
-#: ../../mod/block.php:22 ../../mod/block.php:72
-#: ../../mod/profile_photo.php:263 ../../mod/profile_photo.php:276
-#: ../../mod/blocks.php:29 ../../mod/blocks.php:44 ../../mod/profiles.php:152
-#: ../../mod/profiles.php:453 ../../mod/bookmarks.php:46
-#: ../../mod/channel.php:89 ../../mod/channel.php:193
-#: ../../mod/channel.php:236 ../../mod/chat.php:90 ../../mod/chat.php:95
-#: ../../mod/register.php:68 ../../mod/regmod.php:18 ../../mod/common.php:35
-#: ../../mod/network.php:12 ../../mod/connections.php:169
-#: ../../mod/connedit.php:221 ../../mod/delegate.php:6 ../../mod/page.php:30
-#: ../../mod/page.php:80 ../../mod/settings.php:492 ../../mod/setup.php:203
-#: ../../mod/editblock.php:34 ../../mod/pdledit.php:21
-#: ../../mod/editlayout.php:48 ../../mod/editpost.php:13
-#: ../../mod/editwebpage.php:44 ../../mod/editwebpage.php:83
-#: ../../mod/sources.php:66 ../../mod/events.php:141
-#: ../../mod/filestorage.php:10 ../../mod/filestorage.php:59
-#: ../../mod/filestorage.php:75 ../../mod/filestorage.php:98
-#: ../../mod/fsuggest.php:78 ../../mod/suggest.php:26 ../../mod/group.php:9
-#: ../../mod/thing.php:247 ../../mod/thing.php:263 ../../mod/thing.php:298
-#: ../../mod/invite.php:13 ../../mod/invite.php:104 ../../mod/item.php:179
-#: ../../mod/item.php:187 ../../mod/item.php:872 ../../mod/layouts.php:27
-#: ../../mod/layouts.php:39 ../../mod/viewconnections.php:22
-#: ../../mod/viewconnections.php:27 ../../mod/viewsrc.php:12
-#: ../../mod/mail.php:108 ../../mod/manage.php:6 ../../mod/menu.php:44
-#: ../../mod/webpages.php:40 ../../mod/message.php:16
-#: ../../mod/new_channel.php:66 ../../mod/new_channel.php:97
-#: ../../mod/photos.php:68 ../../mod/photos.php:526
-#: ../../mod/notifications.php:66 ../../mod/appman.php:66 ../../index.php:186
-#: ../../index.php:361
-msgid "Permission denied."
-msgstr "Permissão negada."
-
-#: ../../include/photos.php:89
-#, php-format
-msgid "Image exceeds website size limit of %lu bytes"
-msgstr "A imagem excede o limite de tamanho do site, que é de %"
-
-#: ../../include/photos.php:96
-msgid "Image file is empty."
-msgstr "O arquivo de imagem está vazio."
-
-#: ../../include/photos.php:123 ../../mod/profile_photo.php:216
-msgid "Unable to process image"
-msgstr "Não foi possível processar a imagem"
-
-#: ../../include/photos.php:186
-msgid "Photo storage failed."
-msgstr "Não foi possível armazenar a foto."
-
-#: ../../include/photos.php:315 ../../mod/photos.php:693
-#: ../../mod/photos.php:1190
-msgid "Upload New Photos"
-msgstr "Enviar novas fotos"
-
-#: ../../include/acl_selectors.php:238
-msgid "Visible to everybody"
-msgstr "Visível para todos"
-
-#: ../../include/acl_selectors.php:239
-msgid "Show"
-msgstr "Exibir"
-
-#: ../../include/acl_selectors.php:240
-msgid "Don't show"
-msgstr "Não exibir"
-
-#: ../../include/acl_selectors.php:246 ../../mod/chat.php:209
-#: ../../mod/filestorage.php:126 ../../mod/photos.php:606
-#: ../../mod/photos.php:949
-msgid "Permissions"
-msgstr "Permissões"
-
-#: ../../include/acl_selectors.php:247 ../../include/ItemObject.php:289
-msgid "Close"
-msgstr "Fechar"
-
-#: ../../include/activities.php:39
-msgid " and "
-msgstr " e "
-
-#: ../../include/activities.php:47
-msgid "public profile"
-msgstr "perfil público"
-
-#: ../../include/activities.php:52
-#, php-format
-msgid "%1$s changed %2$s to &ldquo;%3$s&rdquo;"
-msgstr "%1$s mudou %2$s para &ldquo;%3$s&rdquo;"
-
-#: ../../include/activities.php:53
-#, php-format
-msgid "Visit %1$s's %2$s"
-msgstr "Visite o %2$s de %1$s"
-
-#: ../../include/activities.php:56
-#, php-format
-msgid "%1$s has an updated %2$s, changing %3$s."
-msgstr "%1$s atualizou %2$s, alterando %3$s."
-
-#: ../../include/api.php:1016
-msgid "Public Timeline"
-msgstr "Linha do tempo pública"
-
-#: ../../include/attach.php:224 ../../include/attach.php:278
-msgid "Item was not found."
-msgstr "O item não foi encontrado."
-
-#: ../../include/attach.php:335
-msgid "No source file."
-msgstr "Nenhum arquivo de origem."
-
-#: ../../include/attach.php:352
-msgid "Cannot locate file to replace"
-msgstr "Não foi possível locar o arquivo a ser substituído"
-
-#: ../../include/attach.php:370
-msgid "Cannot locate file to revise/update"
-msgstr "Não foi possível localizar o arquivo a ser revisado/atualizado"
-
-#: ../../include/attach.php:381
-#, php-format
-msgid "File exceeds size limit of %d"
-msgstr "O arquivo excedeu o tamanho limite de %d"
-
-#: ../../include/attach.php:393
-#, php-format
-msgid "You have reached your limit of %1$.0f Mbytes attachment storage."
-msgstr "Você atingiu o seu limite de %1$.0f Mbytes de armazenamento de anexos."
-
-#: ../../include/attach.php:475
-msgid "File upload failed. Possible system limit or action terminated."
-msgstr "Não foi possível enviar o arquivo. Provável limite do sistema ou a ação foi encerrada."
-
-#: ../../include/attach.php:487
-msgid "Stored file could not be verified. Upload failed."
-msgstr "Não foi possível verificar o arquivo armazenado. Falha no envio."
-
-#: ../../include/attach.php:528 ../../include/attach.php:545
-msgid "Path not available."
-msgstr "O caminho não está disponível."
-
-#: ../../include/attach.php:590
-msgid "Empty pathname"
-msgstr "O nome do caminho está em branco"
-
-#: ../../include/attach.php:606
-msgid "duplicate filename or path"
-msgstr "nome de arquivo ou caminho duplicado"
-
-#: ../../include/attach.php:630
-msgid "Path not found."
-msgstr "Caminho não encontrado."
-
-#: ../../include/attach.php:674
-msgid "mkdir failed."
-msgstr "mkdir falhou."
+msgid "%1$s's bookmarks"
+msgstr "Links guardados de %1$s"
-#: ../../include/attach.php:678
-msgid "database storage failed."
-msgstr "armazenamento de banco de dados falhou."
+#: ../../include/text.php:321
+msgid "prev"
+msgstr "anterior"
-#: ../../include/items.php:306 ../../mod/profperm.php:23
-#: ../../mod/subthread.php:49 ../../mod/group.php:68 ../../mod/like.php:63
-#: ../../index.php:360
-msgid "Permission denied"
-msgstr "Permissão negada"
+#: ../../include/text.php:323
+msgid "first"
+msgstr "primeiro"
-#: ../../include/items.php:830
-msgid "(Unknown)"
-msgstr "(Desconhecido)"
+#: ../../include/text.php:352
+msgid "last"
+msgstr "último"
-#: ../../include/items.php:3611 ../../mod/admin.php:159
-#: ../../mod/admin.php:921 ../../mod/admin.php:1124 ../../mod/display.php:32
-#: ../../mod/filestorage.php:18 ../../mod/home.php:65 ../../mod/thing.php:78
-#: ../../mod/viewsrc.php:18
-msgid "Item not found."
-msgstr "O item não foi encontrado."
+#: ../../include/text.php:355
+msgid "next"
+msgstr "próximo"
-#: ../../include/items.php:4035 ../../mod/group.php:38 ../../mod/group.php:140
-msgid "Collection not found."
-msgstr "A coleção não foi encontrada."
+#: ../../include/text.php:367
+msgid "older"
+msgstr "mais antigo"
-#: ../../include/items.php:4050
-msgid "Collection is empty."
-msgstr "A coleção está vazia."
+#: ../../include/text.php:369
+msgid "newer"
+msgstr "mais recente"
-#: ../../include/items.php:4057
-#, php-format
-msgid "Collection: %s"
-msgstr "Coleção: %s"
+#: ../../include/text.php:736
+msgid "No connections"
+msgstr "Nenhuma conexão"
-#: ../../include/items.php:4068
+#: ../../include/text.php:749
#, php-format
-msgid "Connection: %s"
-msgstr "Conexão: %s"
-
-#: ../../include/items.php:4071
-msgid "Connection not found."
-msgstr "A conexão não foi encontrada."
+msgid "%d Connection"
+msgid_plural "%d Connections"
+msgstr[0] "%d conexão"
+msgstr[1] "%d conexões"
-#: ../../include/bb2diaspora.php:441 ../../include/event.php:11
-msgid "l F d, Y \\@ g:i A"
-msgstr "l F d, Y \\@ g:i A"
+#: ../../include/text.php:762
+msgid "View Connections"
+msgstr "Ver conexões"
-#: ../../include/bb2diaspora.php:447 ../../include/event.php:20
-msgid "Starts:"
-msgstr "Início:"
+#: ../../include/text.php:823 ../../include/text.php:837
+#: ../../include/widgets.php:193 ../../mod/rbmark.php:28
+#: ../../mod/rbmark.php:98 ../../mod/filer.php:50 ../../mod/admin.php:1341
+#: ../../mod/admin.php:1362
+msgid "Save"
+msgstr "Salvar"
-#: ../../include/bb2diaspora.php:455 ../../include/event.php:30
-msgid "Finishes:"
-msgstr "Fim:"
+#: ../../include/text.php:903
+msgid "poke"
+msgstr "cutucar"
-#: ../../include/bb2diaspora.php:463 ../../include/event.php:40
-#: ../../include/identity.php:726 ../../mod/directory.php:156
-#: ../../mod/dirprofile.php:105 ../../mod/events.php:485
-msgid "Location:"
-msgstr "Localização:"
+#: ../../include/text.php:904
+msgid "ping"
+msgstr "pingar"
-#: ../../include/nav.php:77 ../../include/nav.php:96 ../../boot.php:1451
-msgid "Logout"
-msgstr "Sair"
+#: ../../include/text.php:904
+msgid "pinged"
+msgstr "pingou"
-#: ../../include/nav.php:77 ../../include/nav.php:96
-msgid "End this session"
-msgstr "Encerrar essa sessão"
+#: ../../include/text.php:905
+msgid "prod"
+msgstr "espetar"
-#: ../../include/nav.php:80 ../../include/nav.php:130
-msgid "Home"
-msgstr "Ver canal"
+#: ../../include/text.php:905
+msgid "prodded"
+msgstr "espetou"
-#: ../../include/nav.php:80
-msgid "Your posts and conversations"
-msgstr "Suas publicações e conversas"
+#: ../../include/text.php:906
+msgid "slap"
+msgstr "estapear"
-#: ../../include/nav.php:81
-msgid "Your profile page"
-msgstr "A página do seu perfil"
+#: ../../include/text.php:906
+msgid "slapped"
+msgstr "estapeou"
-#: ../../include/nav.php:83
-msgid "Edit Profiles"
-msgstr "Editar perfis"
+#: ../../include/text.php:907
+msgid "finger"
+msgstr "dar um toque"
-#: ../../include/nav.php:83
-msgid "Manage/Edit profiles"
-msgstr "Administrar/Editar perfis"
+#: ../../include/text.php:907
+msgid "fingered"
+msgstr "deu um toque"
-#: ../../include/nav.php:84
-msgid "Your photos"
-msgstr "Suas fotos"
+#: ../../include/text.php:908
+msgid "rebuff"
+msgstr "rebater"
-#: ../../include/nav.php:85
-msgid "Your files"
-msgstr "Seus arquivos"
+#: ../../include/text.php:908
+msgid "rebuffed"
+msgstr "rebateu"
-#: ../../include/nav.php:86 ../../include/apps.php:133
-msgid "Chat"
-msgstr "Bate-papo"
+#: ../../include/text.php:917
+msgid "happy"
+msgstr "feliz"
-#: ../../include/nav.php:86
-msgid "Your chatrooms"
-msgstr "Suas salas de bate-papo"
+#: ../../include/text.php:918
+msgid "sad"
+msgstr "triste"
-#: ../../include/nav.php:87
-msgid "Your events"
-msgstr "Seus eventos"
+#: ../../include/text.php:919
+msgid "mellow"
+msgstr "suave"
-#: ../../include/nav.php:88
-msgid "Your bookmarks"
-msgstr "Seus links guardados"
+#: ../../include/text.php:920
+msgid "tired"
+msgstr "cansad@"
-#: ../../include/nav.php:90
-msgid "Your webpages"
-msgstr "Suas páginas web"
+#: ../../include/text.php:921
+msgid "perky"
+msgstr "animad@"
-#: ../../include/nav.php:94 ../../include/apps.php:118 ../../boot.php:1452
-msgid "Login"
-msgstr "Entrar"
+#: ../../include/text.php:922
+msgid "angry"
+msgstr "nervos@"
-#: ../../include/nav.php:94
-msgid "Sign in"
-msgstr "Entrar"
+#: ../../include/text.php:923
+msgid "stupified"
+msgstr "embasbacad@"
-#: ../../include/nav.php:111
-#, php-format
-msgid "%s - click to logout"
-msgstr "%s - clique para sair"
+#: ../../include/text.php:924
+msgid "puzzled"
+msgstr "confus@"
-#: ../../include/nav.php:116
-msgid "Click to authenticate to your home hub"
-msgstr "Clique para se autenticar com seu hub de origem"
+#: ../../include/text.php:925
+msgid "interested"
+msgstr "interessad@"
-#: ../../include/nav.php:130
-msgid "Home Page"
-msgstr "Página inicial"
+#: ../../include/text.php:926
+msgid "bitter"
+msgstr "amarg@"
-#: ../../include/nav.php:134 ../../mod/register.php:206 ../../boot.php:1428
-msgid "Register"
-msgstr "Registrar"
+#: ../../include/text.php:927
+msgid "cheerful"
+msgstr "animad@"
-#: ../../include/nav.php:134
-msgid "Create an account"
-msgstr "Criar uma conta"
+#: ../../include/text.php:928
+msgid "alive"
+msgstr "viv@"
-#: ../../include/nav.php:139 ../../include/apps.php:129 ../../mod/help.php:60
-#: ../../mod/help.php:65
-msgid "Help"
-msgstr "Ajuda"
+#: ../../include/text.php:929
+msgid "annoyed"
+msgstr "aborrecid@"
-#: ../../include/nav.php:139
-msgid "Help and documentation"
-msgstr "Ajuda e documentação"
+#: ../../include/text.php:930
+msgid "anxious"
+msgstr "ansios@"
-#: ../../include/nav.php:142 ../../include/widgets.php:79
-#: ../../mod/apps.php:17 ../../mod/apps.php:36
-msgid "Apps"
-msgstr "Aplicações"
+#: ../../include/text.php:931
+msgid "cranky"
+msgstr "irritad@"
-#: ../../include/nav.php:142
-msgid "Applications, utilities, links, games"
-msgstr "Aplicações, utilitários, links, jogos"
+#: ../../include/text.php:932
+msgid "disturbed"
+msgstr "perturbad@"
-#: ../../include/nav.php:144 ../../include/text.php:813
-#: ../../include/text.php:827 ../../include/apps.php:134
-#: ../../mod/search.php:29
-msgid "Search"
-msgstr "Pesquisar"
+#: ../../include/text.php:933
+msgid "frustrated"
+msgstr "frustrad@"
-#: ../../include/nav.php:144
-msgid "Search site content"
-msgstr "Pesquisar o conteúdo do site"
+#: ../../include/text.php:934
+msgid "depressed"
+msgstr "deprimido"
-#: ../../include/nav.php:147 ../../include/apps.php:128
-#: ../../mod/directory.php:210
-msgid "Directory"
-msgstr "Diretório"
+#: ../../include/text.php:935
+msgid "motivated"
+msgstr "motivad@"
-#: ../../include/nav.php:147
-msgid "Channel Locator"
-msgstr "Localizador de canais"
+#: ../../include/text.php:936
+msgid "relaxed"
+msgstr "relaxad@"
-#: ../../include/nav.php:158 ../../include/apps.php:120
-msgid "Matrix"
-msgstr "Matriz"
+#: ../../include/text.php:937
+msgid "surprised"
+msgstr "surpres@"
-#: ../../include/nav.php:158
-msgid "Your matrix"
-msgstr "Sua matriz"
+#: ../../include/text.php:1101
+msgid "Monday"
+msgstr "Segunda"
-#: ../../include/nav.php:159
-msgid "Mark all matrix notifications seen"
-msgstr "Marcar todas as notificações da matriz como vistas"
+#: ../../include/text.php:1101
+msgid "Tuesday"
+msgstr "Terça"
-#: ../../include/nav.php:161 ../../include/apps.php:124
-msgid "Channel Home"
-msgstr "Página inicial do canal"
+#: ../../include/text.php:1101
+msgid "Wednesday"
+msgstr "Quarta"
-#: ../../include/nav.php:161
-msgid "Channel home"
-msgstr "Página inicial do canal"
+#: ../../include/text.php:1101
+msgid "Thursday"
+msgstr "Quinta"
-#: ../../include/nav.php:162
-msgid "Mark all channel notifications seen"
-msgstr "Marcar todas as notificações de canais como vistas"
+#: ../../include/text.php:1101
+msgid "Friday"
+msgstr "Sexta"
-#: ../../include/nav.php:165 ../../include/nav.php:188
-#: ../../mod/connections.php:385
-msgid "Connections"
-msgstr "Conexões"
+#: ../../include/text.php:1101
+msgid "Saturday"
+msgstr "SaÌbado"
-#: ../../include/nav.php:168
-msgid "Notices"
-msgstr "Notificações"
+#: ../../include/text.php:1101
+msgid "Sunday"
+msgstr "Domingo"
-#: ../../include/nav.php:168
-msgid "Notifications"
-msgstr "Notificações"
+#: ../../include/text.php:1105
+msgid "January"
+msgstr "Janeiro"
-#: ../../include/nav.php:169
-msgid "See all notifications"
-msgstr "Ver todas as notificações"
+#: ../../include/text.php:1105
+msgid "February"
+msgstr "Fevereiro"
-#: ../../include/nav.php:170 ../../mod/notifications.php:99
-msgid "Mark all system notifications seen"
-msgstr "Marcar todas as notificações de sistema como vistas"
+#: ../../include/text.php:1105
+msgid "March"
+msgstr "Março"
-#: ../../include/nav.php:172 ../../include/apps.php:130
-msgid "Mail"
-msgstr "Mensagens"
+#: ../../include/text.php:1105
+msgid "April"
+msgstr "Abril"
-#: ../../include/nav.php:172
-msgid "Private mail"
-msgstr "Mensagens privadas"
+#: ../../include/text.php:1105
+msgid "May"
+msgstr "Maio"
-#: ../../include/nav.php:173
-msgid "See all private messages"
-msgstr "Ver todas as mensagens privadas"
+#: ../../include/text.php:1105
+msgid "June"
+msgstr "Junho"
-#: ../../include/nav.php:174
-msgid "Mark all private messages seen"
-msgstr "Marcar todas as mensagens privadas como vistas"
+#: ../../include/text.php:1105
+msgid "July"
+msgstr "Julho"
-#: ../../include/nav.php:175
-msgid "Inbox"
-msgstr "Recebidas"
+#: ../../include/text.php:1105
+msgid "August"
+msgstr "Agosto"
-#: ../../include/nav.php:176
-msgid "Outbox"
-msgstr "Enviadas"
+#: ../../include/text.php:1105
+msgid "September"
+msgstr "Setembro"
-#: ../../include/nav.php:177 ../../include/widgets.php:536
-msgid "New Message"
-msgstr "Nova mensagem"
+#: ../../include/text.php:1105
+msgid "October"
+msgstr "Outubro"
-#: ../../include/nav.php:180
-msgid "Event Calendar"
-msgstr "Agenda de eventos"
+#: ../../include/text.php:1105
+msgid "November"
+msgstr "Novembro"
-#: ../../include/nav.php:181
-msgid "See all events"
-msgstr "Ver todos os eventos"
+#: ../../include/text.php:1105
+msgid "December"
+msgstr "Dezembro"
-#: ../../include/nav.php:182
-msgid "Mark all events seen"
-msgstr "Marcar todos os eventos como vistos"
+#: ../../include/text.php:1183
+msgid "unknown.???"
+msgstr "desconhecido.???"
-#: ../../include/nav.php:184 ../../include/apps.php:119
-msgid "Channel Select"
-msgstr "Seleção de canal"
+#: ../../include/text.php:1184
+msgid "bytes"
+msgstr "bytes"
-#: ../../include/nav.php:184
-msgid "Manage Your Channels"
-msgstr "Gerencie os seus canais"
+#: ../../include/text.php:1223
+msgid "remove category"
+msgstr "remover categoria"
-#: ../../include/nav.php:186 ../../include/apps.php:121
-#: ../../include/widgets.php:514 ../../mod/admin.php:976
-#: ../../mod/admin.php:1181
-msgid "Settings"
-msgstr "Configurações"
+#: ../../include/text.php:1293
+msgid "remove from file"
+msgstr "remover do arquivo"
-#: ../../include/nav.php:186
-msgid "Account/Channel Settings"
-msgstr "Configurações da conta/canal"
+#: ../../include/text.php:1358 ../../include/text.php:1370
+msgid "Click to open/close"
+msgstr "Clique para abrir/fechar"
-#: ../../include/nav.php:188
-msgid "Manage/Edit Friends and Connections"
-msgstr "Gerenciar/editar os amigos e as conexões"
+#: ../../include/text.php:1525 ../../mod/events.php:414
+msgid "Link to Source"
+msgstr "Link para a origem"
-#: ../../include/nav.php:195 ../../mod/admin.php:117
-msgid "Admin"
-msgstr "Admin"
+#: ../../include/text.php:1544
+msgid "Select a page layout: "
+msgstr "Selecione um layout de página:"
-#: ../../include/nav.php:195
-msgid "Site Setup and Configuration"
-msgstr "Configuração do site"
+#: ../../include/text.php:1547 ../../include/text.php:1612
+msgid "default"
+msgstr "default"
-#: ../../include/nav.php:220
-msgid "Nothing new here"
-msgstr "Nada de novo aqui"
+#: ../../include/text.php:1583
+msgid "Page content type: "
+msgstr "Tipo de conteúdo da página: "
-#: ../../include/nav.php:224
-msgid "Please wait..."
-msgstr "Por favor, aguarde..."
+#: ../../include/text.php:1624
+msgid "Select an alternate language"
+msgstr "Selecione um idioma alternativo"
-#: ../../include/bookmarks.php:42
-#, php-format
-msgid "%1$s's bookmarks"
-msgstr "Links guardados de %1$s"
+#: ../../include/text.php:1758
+msgid "activity"
+msgstr "atividade"
-#: ../../include/chat.php:10
-msgid "Missing room name"
-msgstr "Nome da sala vazio"
+#: ../../include/text.php:2030
+msgid "Design"
+msgstr "Design"
-#: ../../include/chat.php:19
-msgid "Duplicate room name"
-msgstr "Nome da sala duplicado"
+#: ../../include/text.php:2032
+msgid "Blocks"
+msgstr "Blocos"
-#: ../../include/chat.php:68 ../../include/chat.php:76
-msgid "Invalid room specifier."
-msgstr "Especificador de sala inválido."
+#: ../../include/text.php:2033
+msgid "Menus"
+msgstr "Menus"
-#: ../../include/chat.php:105
-msgid "Room not found."
-msgstr "A sala não foi encontrada."
+#: ../../include/text.php:2034
+msgid "Layouts"
+msgstr "Layouts"
-#: ../../include/chat.php:126
-msgid "Room is full"
-msgstr "A sala está cheia"
+#: ../../include/text.php:2035
+msgid "Pages"
+msgstr "Páginas"
#: ../../include/taxonomy.php:210
msgid "Tags"
@@ -1294,7 +1262,7 @@ msgstr "quero"
msgid "wants"
msgstr "quer"
-#: ../../include/taxonomy.php:254 ../../include/ItemObject.php:208
+#: ../../include/taxonomy.php:254 ../../include/ItemObject.php:220
msgid "like"
msgstr "gostei"
@@ -1302,7 +1270,7 @@ msgstr "gostei"
msgid "likes"
msgstr "gosta"
-#: ../../include/taxonomy.php:255 ../../include/ItemObject.php:209
+#: ../../include/taxonomy.php:255 ../../include/ItemObject.php:221
msgid "dislike"
msgstr "não gostei"
@@ -1310,97 +1278,80 @@ msgstr "não gostei"
msgid "dislikes"
msgstr "desgosta"
+#: ../../include/taxonomy.php:338 ../../include/identity.php:1136
+#: ../../include/ItemObject.php:146
+msgctxt "noun"
+msgid "Like"
+msgid_plural "Likes"
+msgstr[0] "gostou"
+msgstr[1] "gostaram"
+
#: ../../include/comanche.php:35 ../../view/theme/apw/php/config.php:185
-#: ../../view/theme/redbasic/php/config.php:84
msgid "Default"
msgstr "Default"
-#: ../../include/contact_selectors.php:30
-msgid "Unknown | Not categorised"
-msgstr "Desconhecido | Não categorizado"
-
-#: ../../include/contact_selectors.php:31
-msgid "Block immediately"
-msgstr "Bloquear imediatamente"
-
-#: ../../include/contact_selectors.php:32
-msgid "Shady, spammer, self-marketer"
-msgstr "Suspeito, spammer, propagandista"
-
-#: ../../include/contact_selectors.php:33
-msgid "Known to me, but no opinion"
-msgstr "Eu conheço, mas não tenho opinião a respeito"
-
-#: ../../include/contact_selectors.php:34
-msgid "OK, probably harmless"
-msgstr "Ok, provavelmente inofensivo"
-
-#: ../../include/contact_selectors.php:35
-msgid "Reputable, has my trust"
-msgstr "Boa reputação, tem minha confiança"
-
-#: ../../include/contact_selectors.php:54
+#: ../../include/contact_selectors.php:56
msgid "Frequently"
msgstr "Frequentemente"
-#: ../../include/contact_selectors.php:55
+#: ../../include/contact_selectors.php:57
msgid "Hourly"
msgstr "De hora em hora"
-#: ../../include/contact_selectors.php:56
+#: ../../include/contact_selectors.php:58
msgid "Twice daily"
msgstr "Duas vezes ao dia"
-#: ../../include/contact_selectors.php:57
+#: ../../include/contact_selectors.php:59
msgid "Daily"
msgstr "Diariamente"
-#: ../../include/contact_selectors.php:58
+#: ../../include/contact_selectors.php:60
msgid "Weekly"
msgstr "Semanalmente"
-#: ../../include/contact_selectors.php:59
+#: ../../include/contact_selectors.php:61
msgid "Monthly"
msgstr "Mensalmente"
-#: ../../include/contact_selectors.php:74
+#: ../../include/contact_selectors.php:76
msgid "Friendica"
msgstr "Friendica"
-#: ../../include/contact_selectors.php:75
+#: ../../include/contact_selectors.php:77
msgid "OStatus"
msgstr "OStatus"
-#: ../../include/contact_selectors.php:76
+#: ../../include/contact_selectors.php:78
msgid "RSS/Atom"
msgstr "RSS/Atom"
-#: ../../include/contact_selectors.php:77 ../../mod/admin.php:753
-#: ../../mod/admin.php:762 ../../boot.php:1454
+#: ../../include/contact_selectors.php:79 ../../mod/admin.php:728
+#: ../../mod/admin.php:737 ../../boot.php:1497
msgid "Email"
msgstr "E-mail"
-#: ../../include/contact_selectors.php:78
+#: ../../include/contact_selectors.php:80
msgid "Diaspora"
msgstr "Diaspora"
-#: ../../include/contact_selectors.php:79
+#: ../../include/contact_selectors.php:81
msgid "Facebook"
msgstr "Facebook"
-#: ../../include/contact_selectors.php:80
+#: ../../include/contact_selectors.php:82
msgid "Zot!"
msgstr "Zot!"
-#: ../../include/contact_selectors.php:81
+#: ../../include/contact_selectors.php:83
msgid "LinkedIn"
msgstr "LinkedIn"
-#: ../../include/contact_selectors.php:82
+#: ../../include/contact_selectors.php:84
msgid "XMPP/IM"
msgstr "XMPP/MI"
-#: ../../include/contact_selectors.php:83
+#: ../../include/contact_selectors.php:85
msgid "MySpace"
msgstr "MySpace"
@@ -1411,7 +1362,7 @@ msgid_plural "%d invitations available"
msgstr[0] "%d convite disponível"
msgstr[1] "%d convites disponíveis"
-#: ../../include/contact_widgets.php:19 ../../mod/admin.php:445
+#: ../../include/contact_widgets.php:19 ../../mod/admin.php:418
msgid "Advanced"
msgstr "Avançado"
@@ -1431,8 +1382,8 @@ msgstr "Conectar/Acompanhar"
msgid "Examples: Robert Morgenstein, Fishing"
msgstr "Por exemplo: José da Silva, Pescaria"
-#: ../../include/contact_widgets.php:26 ../../mod/connections.php:391
-#: ../../mod/directory.php:206 ../../mod/directory.php:211
+#: ../../include/contact_widgets.php:26 ../../mod/connections.php:412
+#: ../../mod/directory.php:222 ../../mod/directory.php:227
msgid "Find"
msgstr "Pesquisar"
@@ -1456,38 +1407,129 @@ msgstr "Exemplo: name=raoni and country=peru"
msgid "Advanced Find"
msgstr "Busca avançada"
-#: ../../include/contact_widgets.php:58 ../../include/features.php:66
-#: ../../include/widgets.php:296
+#: ../../include/contact_widgets.php:58 ../../include/features.php:72
+#: ../../include/widgets.php:303
msgid "Saved Folders"
msgstr "Pastas salvas"
-#: ../../include/contact_widgets.php:61 ../../include/contact_widgets.php:95
-#: ../../include/widgets.php:299
+#: ../../include/contact_widgets.php:61 ../../include/contact_widgets.php:96
+#: ../../include/widgets.php:306
msgid "Everything"
msgstr "Tudo"
-#: ../../include/contact_widgets.php:92 ../../include/widgets.php:29
+#: ../../include/contact_widgets.php:93 ../../include/widgets.php:29
msgid "Categories"
msgstr "Categorias"
-#: ../../include/contact_widgets.php:125
+#: ../../include/contact_widgets.php:126
#, php-format
msgid "%d connection in common"
msgid_plural "%d connections in common"
msgstr[0] "%d conexão em comum"
msgstr[1] "%d conexões em comum"
-#: ../../include/contact_widgets.php:130
+#: ../../include/contact_widgets.php:131
msgid "show more"
msgstr "exibir mais"
+#: ../../include/event.php:11 ../../include/bb2diaspora.php:423
+msgid "l F d, Y \\@ g:i A"
+msgstr "l F d, Y \\@ g:i A"
+
+#: ../../include/event.php:20 ../../include/bb2diaspora.php:429
+msgid "Starts:"
+msgstr "Início:"
+
+#: ../../include/event.php:30 ../../include/bb2diaspora.php:437
+msgid "Finishes:"
+msgstr "Fim:"
+
+#: ../../include/event.php:40 ../../include/bb2diaspora.php:445
+#: ../../include/identity.php:881 ../../mod/directory.php:156
+#: ../../mod/dirprofile.php:105 ../../mod/events.php:579
+msgid "Location:"
+msgstr "Localização:"
+
#: ../../include/event.php:326
msgid "This event has been added to your calendar."
msgstr "Esse evento foi adicionado ao seu calendário."
-#: ../../include/reddav.php:1045
-msgid "Edit File properties"
-msgstr "Editar propriedades do arquivo"
+#: ../../include/account.php:23
+msgid "Not a valid email address"
+msgstr "Não é um endereço de e-mail válido"
+
+#: ../../include/account.php:25
+msgid "Your email domain is not among those allowed on this site"
+msgstr "O domínio do seu e-mail não está entre os permitidos neste site"
+
+#: ../../include/account.php:31
+msgid "Your email address is already registered at this site."
+msgstr "O seu endereço de e-mail já está registrado neste site."
+
+#: ../../include/account.php:64
+msgid "An invitation is required."
+msgstr "É necessário um convite."
+
+#: ../../include/account.php:68
+msgid "Invitation could not be verified."
+msgstr "Não foi possível verificar o convite."
+
+#: ../../include/account.php:119
+msgid "Please enter the required information."
+msgstr "Por favor, forneça a informação solicitada."
+
+#: ../../include/account.php:187
+msgid "Failed to store account information."
+msgstr "Não foi possível armazenar a informação da conta."
+
+#: ../../include/account.php:245
+#, php-format
+msgid "Registration confirmation for %s"
+msgstr "Confirmação de registro para %s"
+
+#: ../../include/account.php:313
+#, php-format
+msgid "Registration request at %s"
+msgstr "Solicitação de registro em %s"
+
+#: ../../include/account.php:315 ../../include/account.php:342
+#: ../../include/account.php:399
+msgid "Administrator"
+msgstr "Administrador"
+
+#: ../../include/account.php:337
+msgid "your registration password"
+msgstr "sua senha de registro"
+
+#: ../../include/account.php:340 ../../include/account.php:397
+#, php-format
+msgid "Registration details for %s"
+msgstr "Detalhes do registro de %s"
+
+#: ../../include/account.php:406
+msgid "Account approved."
+msgstr "A conta foi aprovada."
+
+#: ../../include/account.php:440
+#, php-format
+msgid "Registration revoked for %s"
+msgstr "O registro de %s foi revogado"
+
+#: ../../include/account.php:486
+msgid "Account verified. Please login."
+msgstr "Conta verificada. Por favor faça o login."
+
+#: ../../include/account.php:647 ../../include/account.php:649
+msgid "Click here to upgrade."
+msgstr "Clique aqui para atualizar."
+
+#: ../../include/account.php:655
+msgid "This action exceeds the limits set by your subscription plan."
+msgstr "Essa ação excede o limite definido para o seu plano de assinatura."
+
+#: ../../include/account.php:660
+msgid "This action is not available under your subscription plan."
+msgstr "Essa ação não está disponível para o seu plano de assinatura."
#: ../../include/datetime.php:43 ../../include/datetime.php:45
msgid "Miscellaneous"
@@ -1572,34 +1614,38 @@ msgstr "Aniversário de %1$s "
msgid "Happy Birthday %1$s"
msgstr "Feliz Aniversário %1$s"
-#: ../../include/dir_fns.php:36
+#: ../../include/dir_fns.php:56
msgid "Sort Options"
msgstr "Opções de ordenação"
-#: ../../include/dir_fns.php:37
+#: ../../include/dir_fns.php:57
msgid "Alphabetic"
msgstr "Alfabética"
-#: ../../include/dir_fns.php:38
+#: ../../include/dir_fns.php:58
msgid "Reverse Alphabetic"
msgstr "Alfabética reversa"
-#: ../../include/dir_fns.php:39
+#: ../../include/dir_fns.php:59
msgid "Newest to Oldest"
msgstr "Das mais recentes para as mais antigas"
-#: ../../include/dir_fns.php:51
+#: ../../include/dir_fns.php:71
msgid "Enable Safe Search"
msgstr "Habilitar busca tranquila"
-#: ../../include/dir_fns.php:53
+#: ../../include/dir_fns.php:73
msgid "Disable Safe Search"
msgstr "Desabilitar busca tranquila"
-#: ../../include/dir_fns.php:55
+#: ../../include/dir_fns.php:75
msgid "Safe Mode"
msgstr "Modo tranquilo"
+#: ../../include/bb2diaspora.php:344
+msgid "Attachments:"
+msgstr "Anexos:"
+
#: ../../include/enotify.php:41
msgid "Red Matrix Notification"
msgstr "Notificação da Red Matrix"
@@ -1792,6 +1838,107 @@ msgstr "Foto:"
msgid "Please visit %s to approve or reject the suggestion."
msgstr "Por favor, visite %s para aprovar ou rejeitar a sugestão."
+#: ../../include/enotify.php:477
+msgid "[Red:Notify]"
+msgstr "[Red:Notify]"
+
+#: ../../include/reddav.php:1145 ../../include/reddav.php:1288
+msgid "parent"
+msgstr "nível superior"
+
+#: ../../include/reddav.php:1169
+msgid "Collection"
+msgstr "Coleção"
+
+#: ../../include/reddav.php:1172
+msgid "Principal"
+msgstr "Principal"
+
+#: ../../include/reddav.php:1175
+msgid "Addressbook"
+msgstr "Livro de endereços"
+
+#: ../../include/reddav.php:1178
+msgid "Calendar"
+msgstr "Calendário"
+
+#: ../../include/reddav.php:1181
+msgid "Schedule Inbox"
+msgstr "Caixa de entrada da agenda"
+
+#: ../../include/reddav.php:1184
+msgid "Schedule Outbox"
+msgstr "Caixa de saída da agenda"
+
+#: ../../include/reddav.php:1262
+#, php-format
+msgid "%1$s used"
+msgstr "%1$s usados"
+
+#: ../../include/reddav.php:1267
+#, php-format
+msgid "%1$s used of %2$s (%3$s&#37;)"
+msgstr "%1$s usados de %2$s (%3$s&#37;)"
+
+#: ../../include/reddav.php:1284 ../../mod/settings.php:521
+#: ../../mod/settings.php:547 ../../mod/admin.php:868
+msgid "Name"
+msgstr "Nome"
+
+#: ../../include/reddav.php:1285
+msgid "Type"
+msgstr "Tipo"
+
+#: ../../include/reddav.php:1286
+msgid "Size"
+msgstr "Tamanho"
+
+#: ../../include/reddav.php:1287
+msgid "Last Modified"
+msgstr "Última modificação"
+
+#: ../../include/reddav.php:1291
+msgid "Total"
+msgstr "Total"
+
+#: ../../include/reddav.php:1344
+msgid "Create new folder"
+msgstr "Criar uma nova pasta"
+
+#: ../../include/reddav.php:1345 ../../mod/mitem.php:142 ../../mod/menu.php:84
+#: ../../mod/new_channel.php:122
+msgid "Create"
+msgstr "Criar"
+
+#: ../../include/reddav.php:1346
+msgid "Upload file"
+msgstr "Enviar arquivo"
+
+#: ../../include/reddav.php:1347 ../../mod/photos.php:1241
+#: ../../mod/profile_photo.php:361
+msgid "Upload"
+msgstr "Enviar"
+
+#: ../../include/chat.php:10
+msgid "Missing room name"
+msgstr "Nome da sala vazio"
+
+#: ../../include/chat.php:19
+msgid "Duplicate room name"
+msgstr "Nome da sala duplicado"
+
+#: ../../include/chat.php:68 ../../include/chat.php:76
+msgid "Invalid room specifier."
+msgstr "Especificador de sala inválido."
+
+#: ../../include/chat.php:105
+msgid "Room not found."
+msgstr "A sala não foi encontrada."
+
+#: ../../include/chat.php:126
+msgid "Room is full"
+msgstr "A sala está cheia"
+
#: ../../include/features.php:23
msgid "General Features"
msgstr "Recursos gerais"
@@ -1813,231 +1960,331 @@ msgid "Ability to create multiple profiles"
msgstr "Possibilidade de criar múltiplos perfis"
#: ../../include/features.php:27
+msgid "Advanced Profiles"
+msgstr "Perfis avançados"
+
+#: ../../include/features.php:27
+msgid "Additional profile sections and selections"
+msgstr "Seções e seleções adicionais no perfil"
+
+#: ../../include/features.php:28
+msgid "Profile Import/Export"
+msgstr "Importar/exportar perfis"
+
+#: ../../include/features.php:28
+msgid "Save and load profile details across sites/channels"
+msgstr "Salvar e carregar detalhes de perfis entre sites/canais"
+
+#: ../../include/features.php:29
msgid "Web Pages"
msgstr "Páginas web"
-#: ../../include/features.php:27
+#: ../../include/features.php:29
msgid "Provide managed web pages on your channel"
msgstr "Fornece páginas web gerenciáveis no seu canal"
-#: ../../include/features.php:28
+#: ../../include/features.php:30
msgid "Private Notes"
msgstr "Notas privadas"
-#: ../../include/features.php:28
+#: ../../include/features.php:30
msgid "Enables a tool to store notes and reminders"
msgstr "Habilita uma ferramenta para guardar notas e lembretes"
-#: ../../include/features.php:33
+#: ../../include/features.php:34
+msgid "Navigation Channel Select"
+msgstr "Seletor de canais na navegação"
+
+#: ../../include/features.php:34
+msgid "Change channels directly from within the navigation dropdown menu"
+msgstr "Trocar canais diretamente a partir do menu expansível na navegação"
+
+#: ../../include/features.php:38
msgid "Extended Identity Sharing"
msgstr "Compartilhamento estendido de identidade"
-#: ../../include/features.php:33
+#: ../../include/features.php:38
msgid ""
"Share your identity with all websites on the internet. When disabled, "
"identity is only shared with sites in the matrix."
msgstr "Compartilhar sua identidade com todos os websites na internet. Quando desabilitado, sua identidade é compartilhada apenas com outros sites na matrix."
-#: ../../include/features.php:34
+#: ../../include/features.php:39
msgid "Expert Mode"
msgstr "Modo Expert"
-#: ../../include/features.php:34
+#: ../../include/features.php:39
msgid "Enable Expert Mode to provide advanced configuration options"
msgstr "O Modo Expert fornece opções de configurações avançadas"
-#: ../../include/features.php:35
+#: ../../include/features.php:40
msgid "Premium Channel"
msgstr "Canal premium"
-#: ../../include/features.php:35
+#: ../../include/features.php:40
msgid ""
"Allows you to set restrictions and terms on those that connect with your "
"channel"
msgstr "Permite definir restrições e termos para aqueles que se conectarem ao seu canal"
-#: ../../include/features.php:40
+#: ../../include/features.php:45
msgid "Post Composition Features"
msgstr "Recursos de composição de publicações"
-#: ../../include/features.php:41
-msgid "Richtext Editor"
-msgstr "Editor richtext"
+#: ../../include/features.php:47
+msgid "Use Markdown"
+msgstr "Usar Markdown"
-#: ../../include/features.php:41
-msgid "Enable richtext editor"
-msgstr "Habilita o editor richtext"
+#: ../../include/features.php:47
+msgid "Allow use of \"Markdown\" to format posts"
+msgstr "Permitir o uso de \"Markdown\" para formatar publicações"
-#: ../../include/features.php:42
+#: ../../include/features.php:48
msgid "Post Preview"
msgstr "Pré-visualizar a publicação"
-#: ../../include/features.php:42
+#: ../../include/features.php:48
msgid "Allow previewing posts and comments before publishing them"
msgstr "Permite visualizar publicações e comentários antes de publicá-los"
-#: ../../include/features.php:43 ../../include/widgets.php:503
+#: ../../include/features.php:49 ../../include/widgets.php:510
#: ../../mod/sources.php:88
msgid "Channel Sources"
msgstr "Fontes do canal"
-#: ../../include/features.php:43
+#: ../../include/features.php:49
msgid "Automatically import channel content from other channels or feeds"
msgstr "Importar automaticamente conteúdo de outros canais ou fontes"
-#: ../../include/features.php:44
+#: ../../include/features.php:50
msgid "Even More Encryption"
msgstr "Mais encriptação ainda"
-#: ../../include/features.php:44
+#: ../../include/features.php:50
msgid ""
"Allow optional encryption of content end-to-end with a shared secret key"
msgstr "Permitir encriptação opcional de conteúdo, ponta-a-ponta com uma chave secreta compartilhada"
-#: ../../include/features.php:49
+#: ../../include/features.php:55
msgid "Network and Stream Filtering"
msgstr "Filtragem de rede e fluxo"
-#: ../../include/features.php:50
+#: ../../include/features.php:56
msgid "Search by Date"
msgstr "Pesquisar por data"
-#: ../../include/features.php:50
+#: ../../include/features.php:56
msgid "Ability to select posts by date ranges"
msgstr "capacidade de selecionar publicações por intervalos de datas"
-#: ../../include/features.php:51
+#: ../../include/features.php:57
msgid "Collections Filter"
msgstr "Filtros de coleções"
-#: ../../include/features.php:51
+#: ../../include/features.php:57
msgid "Enable widget to display Network posts only from selected collections"
msgstr "Habilita widget para exibir publicações da rede apenas para determinadas coleções"
-#: ../../include/features.php:52 ../../include/widgets.php:265
+#: ../../include/features.php:58 ../../include/widgets.php:272
msgid "Saved Searches"
msgstr "Pesquisas salvas"
-#: ../../include/features.php:52
+#: ../../include/features.php:58
msgid "Save search terms for re-use"
msgstr "Termos de pesquisa salvos para reutilização"
-#: ../../include/features.php:53
+#: ../../include/features.php:59
msgid "Network Personal Tab"
msgstr "Aba de interações na rede"
-#: ../../include/features.php:53
+#: ../../include/features.php:59
msgid "Enable tab to display only Network posts that you've interacted on"
msgstr "Habilita uma aba para exibir apenas publicações da rede com as quais você interagiu"
-#: ../../include/features.php:54
+#: ../../include/features.php:60
msgid "Network New Tab"
msgstr "Aba de novidades da rede"
-#: ../../include/features.php:54
+#: ../../include/features.php:60
msgid "Enable tab to display all new Network activity"
msgstr "Habilita uma aba para exibir todas as novas atividades da rede"
-#: ../../include/features.php:55
+#: ../../include/features.php:61
msgid "Affinity Tool"
msgstr "Ferramenta de afinidade"
-#: ../../include/features.php:55
+#: ../../include/features.php:61
msgid "Filter stream activity by depth of relationships"
msgstr "Filtra o fluxo de atividades de acordo com o nível do relacionamento"
-#: ../../include/features.php:56
+#: ../../include/features.php:62
msgid "Suggest Channels"
msgstr "Sugerir canais"
-#: ../../include/features.php:56
+#: ../../include/features.php:62
msgid "Show channel suggestions"
msgstr "Exibir sugestões de canais"
-#: ../../include/features.php:61
+#: ../../include/features.php:67
msgid "Post/Comment Tools"
msgstr "Ferramentas de publicação/comentário"
-#: ../../include/features.php:63
+#: ../../include/features.php:69
msgid "Edit Sent Posts"
msgstr "Editar publicações enviadas"
-#: ../../include/features.php:63
+#: ../../include/features.php:69
msgid "Edit and correct posts and comments after sending"
msgstr "Edita e corrige publicações e comentários após terem sido enviados"
-#: ../../include/features.php:64
+#: ../../include/features.php:70
msgid "Tagging"
msgstr "Etiquetagem"
-#: ../../include/features.php:64
+#: ../../include/features.php:70
msgid "Ability to tag existing posts"
msgstr "Possibilidade de colocar etiquetas em publicações existentes"
-#: ../../include/features.php:65
+#: ../../include/features.php:71
msgid "Post Categories"
msgstr "Categorizar publicações"
-#: ../../include/features.php:65
+#: ../../include/features.php:71
msgid "Add categories to your posts"
msgstr "Adiciona categorias às suas publicações"
-#: ../../include/features.php:66
+#: ../../include/features.php:72
msgid "Ability to file posts under folders"
msgstr "Possibilidade de arquivar publicações em pastas"
-#: ../../include/features.php:67
+#: ../../include/features.php:73
msgid "Dislike Posts"
msgstr "Desgostar de publicações"
-#: ../../include/features.php:67
+#: ../../include/features.php:73
msgid "Ability to dislike posts/comments"
msgstr "Possibilidade de desgostar de publicações/comentários"
-#: ../../include/features.php:68
+#: ../../include/features.php:74
msgid "Star Posts"
msgstr "Destacar publicações"
-#: ../../include/features.php:68
+#: ../../include/features.php:74
msgid "Ability to mark special posts with a star indicator"
msgstr "Possibilidade de marcar publicações em destaque com uma estrela indicadora"
-#: ../../include/features.php:69
+#: ../../include/features.php:75
msgid "Tag Cloud"
msgstr "Nuvem de etiquetas"
-#: ../../include/features.php:69
+#: ../../include/features.php:75
msgid "Provide a personal tag cloud on your channel page"
msgstr "Fornece uma nuvem de etiquetas pessoais à página do seu canal"
-#: ../../include/follow.php:23
+#: ../../include/follow.php:26
msgid "Channel is blocked on this site."
msgstr "O canal está bloqueado neste site."
-#: ../../include/follow.php:28
+#: ../../include/follow.php:31
msgid "Channel location missing."
msgstr "A localização do canal foi perdida"
-#: ../../include/follow.php:54
+#: ../../include/follow.php:80
msgid "Response from remote channel was incomplete."
msgstr "A resposta do canal remoto está incompleta."
-#: ../../include/follow.php:85
+#: ../../include/follow.php:97
msgid "Channel was deleted and no longer exists."
msgstr "O canal foi deletado e não existe mais."
-#: ../../include/follow.php:132
+#: ../../include/follow.php:133 ../../include/follow.php:202
+msgid "Protocol disabled."
+msgstr "Protocolo desabilitado."
+
+#: ../../include/follow.php:176
msgid "Channel discovery failed."
msgstr "A descoberta de canais falhou."
-#: ../../include/follow.php:149
+#: ../../include/follow.php:192
msgid "local account not found."
msgstr "a conta local não foi encontrada."
-#: ../../include/follow.php:158
+#: ../../include/follow.php:219
msgid "Cannot connect to yourself."
msgstr "Não é possível conectar-se consigo mesmo."
+#: ../../include/items.php:375 ../../mod/profperm.php:23
+#: ../../mod/subthread.php:49 ../../mod/group.php:68 ../../mod/like.php:242
+#: ../../index.php:364
+msgid "Permission denied"
+msgstr "Permissão negada"
+
+#: ../../include/items.php:962 ../../include/items.php:1007
+msgid "(Unknown)"
+msgstr "(Desconhecido)"
+
+#: ../../include/items.php:1163
+msgid "Visible to anybody on the internet."
+msgstr "Visívil para todos na internet."
+
+#: ../../include/items.php:1165
+msgid "Visible to you only."
+msgstr "Visível somente para você."
+
+#: ../../include/items.php:1167
+msgid "Visible to anybody in this network."
+msgstr "Visível para todos nesta rede."
+
+#: ../../include/items.php:1169
+msgid "Visible to anybody authenticated."
+msgstr "Visível para todos autenticados."
+
+#: ../../include/items.php:1171
+#, php-format
+msgid "Visible to anybody on %s."
+msgstr "Visível para todos em %s."
+
+#: ../../include/items.php:1173
+msgid "Visible to all connections."
+msgstr "Visível para quaisquer conexões."
+
+#: ../../include/items.php:1175
+msgid "Visible to approved connections."
+msgstr "Visível para conexões aprovadas."
+
+#: ../../include/items.php:1177
+msgid "Visible to specific connections."
+msgstr "Visível para conexões específicas."
+
+#: ../../include/items.php:3938 ../../mod/display.php:32
+#: ../../mod/filestorage.php:18 ../../mod/admin.php:168
+#: ../../mod/admin.php:898 ../../mod/admin.php:1101 ../../mod/thing.php:76
+#: ../../mod/viewsrc.php:20
+msgid "Item not found."
+msgstr "O item não foi encontrado."
+
+#: ../../include/items.php:4371 ../../mod/group.php:38 ../../mod/group.php:140
+msgid "Collection not found."
+msgstr "A coleção não foi encontrada."
+
+#: ../../include/items.php:4386
+msgid "Collection is empty."
+msgstr "A coleção está vazia."
+
+#: ../../include/items.php:4393
+#, php-format
+msgid "Collection: %s"
+msgstr "Coleção: %s"
+
+#: ../../include/items.php:4404
+#, php-format
+msgid "Connection: %s"
+msgstr "Conexão: %s"
+
+#: ../../include/items.php:4407
+msgid "Connection not found."
+msgstr "A conexão não foi encontrada."
+
#: ../../include/group.php:25
msgid ""
"A deleted group with this name was revived. Existing item permissions "
@@ -2045,652 +2292,507 @@ msgid ""
"not what you intended, please create another group with a different name."
msgstr "Um grupo com esse nome, anteriormente excluído, foi reativado. Permissões de itens já existentes <strong>poderão</strong> ser aplicadas a esse grupo e qualquer futuros membros. Se não é essa a sua intenção, favor criar outro grupo com um nome diferente."
-#: ../../include/group.php:223
+#: ../../include/group.php:234
msgid "Default privacy group for new contacts"
msgstr "Grupo de privacidade padrão para novos contatos"
-#: ../../include/group.php:242 ../../mod/admin.php:762
+#: ../../include/group.php:253 ../../mod/admin.php:737
msgid "All Channels"
msgstr "Todos os canais"
-#: ../../include/group.php:264
+#: ../../include/group.php:275
msgid "edit"
msgstr "editar"
-#: ../../include/group.php:285
+#: ../../include/group.php:297
msgid "Collections"
msgstr "Coleções"
-#: ../../include/group.php:286
+#: ../../include/group.php:298
msgid "Edit collection"
msgstr "Editar coleção"
-#: ../../include/group.php:287
+#: ../../include/group.php:299
msgid "Create a new collection"
msgstr "Criar uma nova coleção"
-#: ../../include/group.php:288
+#: ../../include/group.php:300
msgid "Channels not in any collection"
msgstr "Canais que não estão em nenhuma coleção"
-#: ../../include/group.php:290 ../../include/widgets.php:266
+#: ../../include/group.php:302 ../../include/widgets.php:273
msgid "add"
msgstr "adicionar"
-#: ../../include/identity.php:30 ../../mod/item.php:1244
+#: ../../include/bbcode.php:112 ../../include/bbcode.php:645
+#: ../../include/bbcode.php:648 ../../include/bbcode.php:653
+#: ../../include/bbcode.php:656 ../../include/bbcode.php:659
+#: ../../include/bbcode.php:662 ../../include/bbcode.php:667
+#: ../../include/bbcode.php:670 ../../include/bbcode.php:675
+#: ../../include/bbcode.php:678 ../../include/bbcode.php:681
+#: ../../include/bbcode.php:684
+msgid "Image/photo"
+msgstr "Imagem/foto"
+
+#: ../../include/bbcode.php:147 ../../include/bbcode.php:695
+msgid "Encrypted content"
+msgstr "Conteúdo criptografado"
+
+#: ../../include/bbcode.php:163
+msgid "QR code"
+msgstr "código QR"
+
+#: ../../include/bbcode.php:212
+#, php-format
+msgid "%1$s wrote the following %2$s %3$s"
+msgstr "%1$s escreveu a seguinte %2$s %3$s"
+
+#: ../../include/bbcode.php:214
+msgid "post"
+msgstr "publicação"
+
+#: ../../include/bbcode.php:613
+msgid "$1 spoiler"
+msgstr "$1 spoiler"
+
+#: ../../include/bbcode.php:633
+msgid "$1 wrote:"
+msgstr "$1 escreveu:"
+
+#: ../../include/identity.php:31 ../../mod/item.php:1312
msgid "Unable to obtain identity information from database"
msgstr "Não foi possível obter a informação da identidade a partir do banco de dados"
-#: ../../include/identity.php:63
+#: ../../include/identity.php:66
msgid "Empty name"
msgstr "O nome está em branco"
-#: ../../include/identity.php:65
+#: ../../include/identity.php:68
msgid "Name too long"
msgstr "O nome é muito grande"
-#: ../../include/identity.php:166
+#: ../../include/identity.php:169
msgid "No account identifier"
msgstr "Sem identificador de conta"
-#: ../../include/identity.php:176
+#: ../../include/identity.php:181
msgid "Nickname is required."
msgstr "É necessário informar o apelido."
-#: ../../include/identity.php:190
+#: ../../include/identity.php:195
msgid "Reserved nickname. Please choose another."
msgstr "Apelido reservado. Por favor escolha outro."
-#: ../../include/identity.php:195
+#: ../../include/identity.php:200
msgid ""
"Nickname has unsupported characters or is already being used on this site."
msgstr "O apelido possui caracteres não suportados ou já está sendo usado nesse site."
-#: ../../include/identity.php:258
+#: ../../include/identity.php:281
msgid "Unable to retrieve created identity"
msgstr "Não foi possível recuperar a identidade criada"
-#: ../../include/identity.php:317
+#: ../../include/identity.php:340
msgid "Default Profile"
msgstr "Perfil padrão"
-#: ../../include/identity.php:342 ../../include/widgets.php:400
-#: ../../include/profile_selectors.php:42 ../../mod/connedit.php:431
+#: ../../include/identity.php:379 ../../include/identity.php:380
+#: ../../include/identity.php:387 ../../include/widgets.php:407
+#: ../../include/profile_selectors.php:80 ../../mod/connedit.php:495
msgid "Friends"
msgstr "Amigos"
-#: ../../include/identity.php:509
+#: ../../include/identity.php:633
msgid "Requested channel is not available."
msgstr "Canal solicitado não está disponível."
-#: ../../include/identity.php:557 ../../mod/achievements.php:8
+#: ../../include/identity.php:681 ../../mod/achievements.php:11
#: ../../mod/profile.php:16 ../../mod/blocks.php:10 ../../mod/connect.php:13
#: ../../mod/filestorage.php:40 ../../mod/layouts.php:8
-#: ../../mod/webpages.php:8
+#: ../../mod/webpages.php:8 ../../mod/hcard.php:8
msgid "Requested profile is not available."
msgstr "O perfil solicitado não está disponível."
-#: ../../include/identity.php:675 ../../include/widgets.php:128
-#: ../../include/widgets.php:168 ../../include/Contact.php:107
-#: ../../mod/directory.php:183 ../../mod/dirprofile.php:164
-#: ../../mod/suggest.php:51 ../../mod/match.php:62
-msgid "Connect"
-msgstr "Conectar"
-
-#: ../../include/identity.php:689 ../../mod/profiles.php:603
+#: ../../include/identity.php:844 ../../mod/profiles.php:750
msgid "Change profile photo"
msgstr "Mudar a foto do perfil"
-#: ../../include/identity.php:695
+#: ../../include/identity.php:850
msgid "Profiles"
msgstr "Perfis"
-#: ../../include/identity.php:695
+#: ../../include/identity.php:850
msgid "Manage/edit profiles"
msgstr "Administrar/editar perfis"
-#: ../../include/identity.php:696 ../../mod/profiles.php:604
+#: ../../include/identity.php:851 ../../mod/profiles.php:751
msgid "Create New Profile"
msgstr "Criar um novo perfil"
-#: ../../include/identity.php:699
+#: ../../include/identity.php:854 ../../include/nav.php:102
msgid "Edit Profile"
msgstr "Editar perfil"
-#: ../../include/identity.php:710 ../../mod/profiles.php:615
+#: ../../include/identity.php:865 ../../mod/profiles.php:762
msgid "Profile Image"
msgstr "Imagem do perfil"
-#: ../../include/identity.php:713 ../../mod/profiles.php:618
+#: ../../include/identity.php:868
msgid "visible to everybody"
msgstr "visível para todos"
-#: ../../include/identity.php:714 ../../mod/profiles.php:619
+#: ../../include/identity.php:869 ../../mod/profiles.php:645
+#: ../../mod/profiles.php:766
msgid "Edit visibility"
msgstr "Editar a visibilidade"
-#: ../../include/identity.php:728 ../../include/identity.php:952
+#: ../../include/identity.php:883 ../../include/identity.php:1120
#: ../../mod/directory.php:158
msgid "Gender:"
msgstr "Gênero:"
-#: ../../include/identity.php:729 ../../include/identity.php:977
+#: ../../include/identity.php:884 ../../include/identity.php:1164
#: ../../mod/directory.php:160
msgid "Status:"
msgstr "Situação:"
-#: ../../include/identity.php:730 ../../include/identity.php:988
+#: ../../include/identity.php:885 ../../include/identity.php:1175
#: ../../mod/directory.php:162
msgid "Homepage:"
msgstr "Página web:"
-#: ../../include/identity.php:731 ../../mod/dirprofile.php:151
+#: ../../include/identity.php:886 ../../mod/dirprofile.php:151
msgid "Online Now"
msgstr "Online agora"
-#: ../../include/identity.php:796 ../../include/identity.php:876
-#: ../../mod/ping.php:262
+#: ../../include/identity.php:964 ../../include/identity.php:1044
+#: ../../mod/ping.php:298
msgid "g A l F d"
msgstr "G l d F"
-#: ../../include/identity.php:797 ../../include/identity.php:877
+#: ../../include/identity.php:965 ../../include/identity.php:1045
msgid "F d"
msgstr "F d"
-#: ../../include/identity.php:842 ../../include/identity.php:917
-#: ../../mod/ping.php:284
+#: ../../include/identity.php:1010 ../../include/identity.php:1085
+#: ../../mod/ping.php:320
msgid "[today]"
msgstr "[hoje]"
-#: ../../include/identity.php:854
+#: ../../include/identity.php:1022
msgid "Birthday Reminders"
msgstr "Lembres de aniversário"
-#: ../../include/identity.php:855
+#: ../../include/identity.php:1023
msgid "Birthdays this week:"
msgstr "Aniversários nesta semana:"
-#: ../../include/identity.php:910
+#: ../../include/identity.php:1078
msgid "[No description]"
msgstr "[Sem descrição]"
-#: ../../include/identity.php:928
+#: ../../include/identity.php:1096
msgid "Event Reminders"
msgstr "Lembretes de eventos"
-#: ../../include/identity.php:929
+#: ../../include/identity.php:1097
msgid "Events this week:"
msgstr "Eventos nesta semana:"
-#: ../../include/identity.php:942 ../../include/identity.php:1031
-#: ../../include/apps.php:125 ../../mod/profperm.php:112
-msgid "Profile"
-msgstr "Perfil"
-
-#: ../../include/identity.php:950 ../../mod/settings.php:934
+#: ../../include/identity.php:1118 ../../mod/settings.php:953
msgid "Full Name:"
msgstr "Nome completo:"
-#: ../../include/identity.php:962
+#: ../../include/identity.php:1125
+msgid "Like this channel"
+msgstr "Gostar deste canal"
+
+#: ../../include/identity.php:1149
msgid "j F, Y"
msgstr "j \\d\\e F, Y"
-#: ../../include/identity.php:963
+#: ../../include/identity.php:1150
msgid "j F"
msgstr "j \\d\\e F"
-#: ../../include/identity.php:970
+#: ../../include/identity.php:1157
msgid "Birthday:"
msgstr "Aniversário:"
-#: ../../include/identity.php:974
+#: ../../include/identity.php:1161
msgid "Age:"
msgstr "Idade:"
-#: ../../include/identity.php:983
+#: ../../include/identity.php:1170
#, php-format
msgid "for %1$d %2$s"
msgstr "para %1$d %2$s"
-#: ../../include/identity.php:986 ../../mod/profiles.php:526
+#: ../../include/identity.php:1173 ../../mod/profiles.php:667
msgid "Sexual Preference:"
msgstr "Preferência sexual:"
-#: ../../include/identity.php:990 ../../mod/profiles.php:528
+#: ../../include/identity.php:1177 ../../mod/profiles.php:669
msgid "Hometown:"
msgstr "Cidade natal:"
-#: ../../include/identity.php:992
+#: ../../include/identity.php:1179
msgid "Tags:"
msgstr "Etiquetas:"
-#: ../../include/identity.php:994 ../../mod/profiles.php:529
+#: ../../include/identity.php:1181 ../../mod/profiles.php:670
msgid "Political Views:"
msgstr "Posição política:"
-#: ../../include/identity.php:996
+#: ../../include/identity.php:1183
msgid "Religion:"
msgstr "Religião:"
-#: ../../include/identity.php:998 ../../mod/directory.php:164
+#: ../../include/identity.php:1185 ../../mod/directory.php:164
msgid "About:"
msgstr "Sobre:"
-#: ../../include/identity.php:1000
+#: ../../include/identity.php:1187
msgid "Hobbies/Interests:"
msgstr "Hobbies/Interesses:"
-#: ../../include/identity.php:1002 ../../mod/profiles.php:532
+#: ../../include/identity.php:1189 ../../mod/profiles.php:673
msgid "Likes:"
msgstr "Gosta de:"
-#: ../../include/identity.php:1004 ../../mod/profiles.php:533
+#: ../../include/identity.php:1191 ../../mod/profiles.php:674
msgid "Dislikes:"
msgstr "Não gosta de:"
-#: ../../include/identity.php:1007
+#: ../../include/identity.php:1194
msgid "Contact information and Social Networks:"
msgstr "Informações de contato e redes sociais:"
-#: ../../include/identity.php:1009
+#: ../../include/identity.php:1196
msgid "My other channels:"
msgstr "Meus outros canais:"
-#: ../../include/identity.php:1011
+#: ../../include/identity.php:1198
msgid "Musical interests:"
msgstr "Interesses musicais:"
-#: ../../include/identity.php:1013
+#: ../../include/identity.php:1200
msgid "Books, literature:"
msgstr "Livros, literatura:"
-#: ../../include/identity.php:1015
+#: ../../include/identity.php:1202
msgid "Television:"
msgstr "Televisão:"
-#: ../../include/identity.php:1017
+#: ../../include/identity.php:1204
msgid "Film/dance/culture/entertainment:"
msgstr "Filmes/dança/cultura/entretenimento:"
-#: ../../include/identity.php:1019
+#: ../../include/identity.php:1206
msgid "Love/Romance:"
msgstr "Amor/romance:"
-#: ../../include/identity.php:1021
+#: ../../include/identity.php:1208
msgid "Work/employment:"
msgstr "Trabalho/emprego:"
-#: ../../include/identity.php:1023
+#: ../../include/identity.php:1210
msgid "School/education:"
msgstr "Escola/educação:"
-#: ../../include/network.php:652
-msgid "view full size"
-msgstr "ver na tela inteira"
-
-#: ../../include/text.php:320
-msgid "prev"
-msgstr "anterior"
+#: ../../include/identity.php:1230
+msgid "Like this thing"
+msgstr "Gostar desta coisa"
-#: ../../include/text.php:322
-msgid "first"
-msgstr "primeiro"
-
-#: ../../include/text.php:351
-msgid "last"
-msgstr "último"
-
-#: ../../include/text.php:354
-msgid "next"
-msgstr "próximo"
-
-#: ../../include/text.php:366
-msgid "older"
-msgstr "mais antigo"
-
-#: ../../include/text.php:368
-msgid "newer"
-msgstr "mais recente"
-
-#: ../../include/text.php:729
-msgid "No connections"
-msgstr "Nenhuma conexão"
-
-#: ../../include/text.php:742
-#, php-format
-msgid "%d Connection"
-msgid_plural "%d Connections"
-msgstr[0] "%d conexão"
-msgstr[1] "%d conexões"
-
-#: ../../include/text.php:754
-msgid "View Connections"
-msgstr "Ver conexões"
-
-#: ../../include/text.php:815 ../../include/text.php:829
-#: ../../include/widgets.php:186 ../../mod/rbmark.php:28
-#: ../../mod/rbmark.php:98 ../../mod/filer.php:50
-msgid "Save"
-msgstr "Salvar"
-
-#: ../../include/text.php:895
-msgid "poke"
-msgstr "cutucar"
-
-#: ../../include/text.php:896
-msgid "ping"
-msgstr "pingar"
-
-#: ../../include/text.php:896
-msgid "pinged"
-msgstr "pingou"
-
-#: ../../include/text.php:897
-msgid "prod"
-msgstr "espetar"
-
-#: ../../include/text.php:897
-msgid "prodded"
-msgstr "espetou"
-
-#: ../../include/text.php:898
-msgid "slap"
-msgstr "estapear"
-
-#: ../../include/text.php:898
-msgid "slapped"
-msgstr "estapeou"
-
-#: ../../include/text.php:899
-msgid "finger"
-msgstr "dar um toque"
-
-#: ../../include/text.php:899
-msgid "fingered"
-msgstr "deu um toque"
-
-#: ../../include/text.php:900
-msgid "rebuff"
-msgstr "rebater"
-
-#: ../../include/text.php:900
-msgid "rebuffed"
-msgstr "rebateu"
-
-#: ../../include/text.php:909
-msgid "happy"
-msgstr "feliz"
-
-#: ../../include/text.php:910
-msgid "sad"
-msgstr "triste"
-
-#: ../../include/text.php:911
-msgid "mellow"
-msgstr "suave"
-
-#: ../../include/text.php:912
-msgid "tired"
-msgstr "cansad@"
-
-#: ../../include/text.php:913
-msgid "perky"
-msgstr "animad@"
-
-#: ../../include/text.php:914
-msgid "angry"
-msgstr "nervos@"
-
-#: ../../include/text.php:915
-msgid "stupified"
-msgstr "embasbacad@"
-
-#: ../../include/text.php:916
-msgid "puzzled"
-msgstr "confus@"
-
-#: ../../include/text.php:917
-msgid "interested"
-msgstr "interessad@"
-
-#: ../../include/text.php:918
-msgid "bitter"
-msgstr "amarg@"
-
-#: ../../include/text.php:919
-msgid "cheerful"
-msgstr "animad@"
-
-#: ../../include/text.php:920
-msgid "alive"
-msgstr "viv@"
-
-#: ../../include/text.php:921
-msgid "annoyed"
-msgstr "aborrecid@"
-
-#: ../../include/text.php:922
-msgid "anxious"
-msgstr "ansios@"
-
-#: ../../include/text.php:923
-msgid "cranky"
-msgstr "irritad@"
-
-#: ../../include/text.php:924
-msgid "disturbed"
-msgstr "perturbad@"
-
-#: ../../include/text.php:925
-msgid "frustrated"
-msgstr "frustrad@"
-
-#: ../../include/text.php:926
-msgid "depressed"
-msgstr "deprimido"
-
-#: ../../include/text.php:927
-msgid "motivated"
-msgstr "motivad@"
-
-#: ../../include/text.php:928
-msgid "relaxed"
-msgstr "relaxad@"
-
-#: ../../include/text.php:929
-msgid "surprised"
-msgstr "surpres@"
-
-#: ../../include/text.php:1090
-msgid "Monday"
-msgstr "Segunda"
+#: ../../include/nav.php:94 ../../include/nav.php:126 ../../boot.php:1494
+msgid "Logout"
+msgstr "Sair"
-#: ../../include/text.php:1090
-msgid "Tuesday"
-msgstr "Terça"
+#: ../../include/nav.php:94 ../../include/nav.php:126
+msgid "End this session"
+msgstr "Encerrar essa sessão"
-#: ../../include/text.php:1090
-msgid "Wednesday"
-msgstr "Quarta"
+#: ../../include/nav.php:97 ../../include/nav.php:160
+msgid "Home"
+msgstr "Ver canal"
-#: ../../include/text.php:1090
-msgid "Thursday"
-msgstr "Quinta"
+#: ../../include/nav.php:97
+msgid "Your posts and conversations"
+msgstr "Suas publicações e conversas"
-#: ../../include/text.php:1090
-msgid "Friday"
-msgstr "Sexta"
+#: ../../include/nav.php:98
+msgid "Your profile page"
+msgstr "A página do seu perfil"
-#: ../../include/text.php:1090
-msgid "Saturday"
-msgstr "SaÌbado"
+#: ../../include/nav.php:100
+msgid "Edit Profiles"
+msgstr "Editar perfis"
-#: ../../include/text.php:1090
-msgid "Sunday"
-msgstr "Domingo"
+#: ../../include/nav.php:100
+msgid "Manage/Edit profiles"
+msgstr "Administrar/Editar perfis"
-#: ../../include/text.php:1094
-msgid "January"
-msgstr "Janeiro"
+#: ../../include/nav.php:102
+msgid "Edit your profile"
+msgstr "Editar seu perfil"
-#: ../../include/text.php:1094
-msgid "February"
-msgstr "Fevereiro"
+#: ../../include/nav.php:104
+msgid "Your photos"
+msgstr "Suas fotos"
-#: ../../include/text.php:1094
-msgid "March"
-msgstr "Março"
+#: ../../include/nav.php:105
+msgid "Your files"
+msgstr "Seus arquivos"
-#: ../../include/text.php:1094
-msgid "April"
-msgstr "Abril"
+#: ../../include/nav.php:110
+msgid "Your chatrooms"
+msgstr "Suas salas de bate-papo"
-#: ../../include/text.php:1094
-msgid "May"
-msgstr "Maio"
+#: ../../include/nav.php:116
+msgid "Your bookmarks"
+msgstr "Seus links guardados"
-#: ../../include/text.php:1094
-msgid "June"
-msgstr "Junho"
+#: ../../include/nav.php:120
+msgid "Your webpages"
+msgstr "Suas páginas web"
-#: ../../include/text.php:1094
-msgid "July"
-msgstr "Julho"
+#: ../../include/nav.php:124
+msgid "Sign in"
+msgstr "Entrar"
-#: ../../include/text.php:1094
-msgid "August"
-msgstr "Agosto"
+#: ../../include/nav.php:141
+#, php-format
+msgid "%s - click to logout"
+msgstr "%s - clique para sair"
-#: ../../include/text.php:1094
-msgid "September"
-msgstr "Setembro"
+#: ../../include/nav.php:146
+msgid "Click to authenticate to your home hub"
+msgstr "Clique para se autenticar com seu hub de origem"
-#: ../../include/text.php:1094
-msgid "October"
-msgstr "Outubro"
+#: ../../include/nav.php:160
+msgid "Home Page"
+msgstr "Página inicial"
-#: ../../include/text.php:1094
-msgid "November"
-msgstr "Novembro"
+#: ../../include/nav.php:164 ../../mod/register.php:220 ../../boot.php:1471
+msgid "Register"
+msgstr "Registrar"
-#: ../../include/text.php:1094
-msgid "December"
-msgstr "Dezembro"
+#: ../../include/nav.php:164
+msgid "Create an account"
+msgstr "Criar uma conta"
-#: ../../include/text.php:1172
-msgid "unknown.???"
-msgstr "desconhecido.???"
+#: ../../include/nav.php:169
+msgid "Help and documentation"
+msgstr "Ajuda e documentação"
-#: ../../include/text.php:1173
-msgid "bytes"
-msgstr "bytes"
+#: ../../include/nav.php:172 ../../include/widgets.php:86
+#: ../../mod/apps.php:33
+msgid "Apps"
+msgstr "Aplicações"
-#: ../../include/text.php:1208
-msgid "remove category"
-msgstr "remover categoria"
+#: ../../include/nav.php:172
+msgid "Applications, utilities, links, games"
+msgstr "Aplicações, utilitários, links, jogos"
-#: ../../include/text.php:1257
-msgid "remove from file"
-msgstr "remover do arquivo"
+#: ../../include/nav.php:174
+msgid "Search site content"
+msgstr "Pesquisar o conteúdo do site"
-#: ../../include/text.php:1318 ../../include/text.php:1330
-msgid "Click to open/close"
-msgstr "Clique para abrir/fechar"
+#: ../../include/nav.php:177
+msgid "Channel Locator"
+msgstr "Localizador de canais"
-#: ../../include/text.php:1485 ../../mod/events.php:355
-msgid "Link to Source"
-msgstr "Link para a origem"
+#: ../../include/nav.php:188
+msgid "Your matrix"
+msgstr "Sua matriz"
-#: ../../include/text.php:1504
-msgid "Select a page layout: "
-msgstr "Selecione um layout de página:"
+#: ../../include/nav.php:189
+msgid "Mark all matrix notifications seen"
+msgstr "Marcar todas as notificações da matriz como vistas"
-#: ../../include/text.php:1507 ../../include/text.php:1572
-msgid "default"
-msgstr "default"
+#: ../../include/nav.php:191
+msgid "Channel home"
+msgstr "Página inicial do canal"
-#: ../../include/text.php:1543
-msgid "Page content type: "
-msgstr "Tipo de conteúdo da página: "
+#: ../../include/nav.php:192
+msgid "Mark all channel notifications seen"
+msgstr "Marcar todas as notificações de canais como vistas"
-#: ../../include/text.php:1584
-msgid "Select an alternate language"
-msgstr "Selecione um idioma alternativo"
+#: ../../include/nav.php:195 ../../mod/connections.php:406
+msgid "Connections"
+msgstr "Conexões"
-#: ../../include/text.php:1718
-msgid "activity"
-msgstr "atividade"
+#: ../../include/nav.php:198
+msgid "Notices"
+msgstr "Notificações"
-#: ../../include/text.php:1977
-msgid "Design"
-msgstr "Design"
+#: ../../include/nav.php:198
+msgid "Notifications"
+msgstr "Notificações"
-#: ../../include/text.php:1979
-msgid "Blocks"
-msgstr "Blocos"
+#: ../../include/nav.php:199
+msgid "See all notifications"
+msgstr "Ver todas as notificações"
-#: ../../include/text.php:1980
-msgid "Menus"
-msgstr "Menus"
+#: ../../include/nav.php:200 ../../mod/notifications.php:99
+msgid "Mark all system notifications seen"
+msgstr "Marcar todas as notificações de sistema como vistas"
-#: ../../include/text.php:1981
-msgid "Layouts"
-msgstr "Layouts"
+#: ../../include/nav.php:202
+msgid "Private mail"
+msgstr "Mensagens privadas"
-#: ../../include/text.php:1982
-msgid "Pages"
-msgstr "Páginas"
+#: ../../include/nav.php:203
+msgid "See all private messages"
+msgstr "Ver todas as mensagens privadas"
-#: ../../include/apps.php:115
-msgid "Site Admin"
-msgstr "Administração do site"
+#: ../../include/nav.php:204
+msgid "Mark all private messages seen"
+msgstr "Marcar todas as mensagens privadas como vistas"
-#: ../../include/apps.php:117
-msgid "Address Book"
-msgstr "Livro de Endereços"
+#: ../../include/nav.php:205
+msgid "Inbox"
+msgstr "Recebidas"
-#: ../../include/apps.php:131 ../../mod/mood.php:131
-msgid "Mood"
-msgstr "Humor"
+#: ../../include/nav.php:206
+msgid "Outbox"
+msgstr "Enviadas"
-#: ../../include/apps.php:135
-msgid "Probe"
-msgstr "Sonda"
+#: ../../include/nav.php:207 ../../include/widgets.php:543
+msgid "New Message"
+msgstr "Nova mensagem"
-#: ../../include/apps.php:136
-msgid "Suggest"
-msgstr "Sugerir"
+#: ../../include/nav.php:210
+msgid "Event Calendar"
+msgstr "Agenda de eventos"
-#: ../../include/apps.php:208 ../../mod/settings.php:79
-#: ../../mod/settings.php:541
-msgid "Update"
-msgstr "Atualizar"
+#: ../../include/nav.php:211
+msgid "See all events"
+msgstr "Ver todos os eventos"
-#: ../../include/apps.php:208
-msgid "Install"
-msgstr "Instalar"
+#: ../../include/nav.php:212
+msgid "Mark all events seen"
+msgstr "Marcar todos os eventos como vistos"
-#: ../../include/apps.php:212
-msgid "Purchase"
-msgstr "Compras"
+#: ../../include/nav.php:214
+msgid "Manage Your Channels"
+msgstr "Gerencie os seus canais"
-#: ../../include/apps.php:291 ../../include/apps.php:342
-#: ../../mod/connedit.php:434
-msgid "Unknown"
-msgstr "Desconhecidos"
+#: ../../include/nav.php:216
+msgid "Account/Channel Settings"
+msgstr "Configurações da conta/canal"
-#: ../../include/zot.php:603
-msgid "Invalid data packet"
-msgstr "Pacote de dados inválido"
+#: ../../include/nav.php:224 ../../mod/admin.php:123
+msgid "Admin"
+msgstr "Admin"
-#: ../../include/zot.php:613
-msgid "Unable to verify channel signature"
-msgstr "Não foi possível verificar a assinatura do canal"
+#: ../../include/nav.php:224
+msgid "Site Setup and Configuration"
+msgstr "Configuração do site"
-#: ../../include/zot.php:810
-#, php-format
-msgid "Unable to verify site signature for %s"
-msgstr "Não foi possível verificar a assinatura do site para %s"
+#: ../../include/nav.php:260
+msgid "Please wait..."
+msgstr "Por favor, aguarde..."
#: ../../include/message.php:18
msgid "No recipient provided."
@@ -2700,293 +2802,278 @@ msgstr "Falta o destinatário."
msgid "[no subject]"
msgstr "[sem assunto]"
-#: ../../include/message.php:42
+#: ../../include/message.php:45
msgid "Unable to determine sender."
msgstr "Não foi possível determinar o remetente."
-#: ../../include/message.php:143
+#: ../../include/message.php:200
msgid "Stored post could not be verified."
msgstr "Não foi possível verificar a publicação armazenada."
-#: ../../include/plugin.php:486 ../../include/plugin.php:488
-msgid "Click here to upgrade."
-msgstr "Clique aqui para atualizar."
-
-#: ../../include/plugin.php:494
-msgid "This action exceeds the limits set by your subscription plan."
-msgstr "Essa ação excede o limite definido para o seu plano de assinatura."
-
-#: ../../include/plugin.php:499
-msgid "This action is not available under your subscription plan."
-msgstr "Essa ação não está disponível para o seu plano de assinatura."
-
-#: ../../include/widgets.php:80
+#: ../../include/widgets.php:87
msgid "System"
msgstr "Sistema"
-#: ../../include/widgets.php:83
+#: ../../include/widgets.php:90
msgid "Create Personal App"
msgstr "Crie aplicações pessoais"
-#: ../../include/widgets.php:84
+#: ../../include/widgets.php:91
msgid "Edit Personal App"
msgstr "Edite aplicações pessoais"
-#: ../../include/widgets.php:130 ../../mod/suggest.php:53
+#: ../../include/widgets.php:137 ../../mod/suggest.php:53
msgid "Ignore/Hide"
msgstr "Ignorar/Ocultar"
-#: ../../include/widgets.php:136 ../../mod/connections.php:266
+#: ../../include/widgets.php:143 ../../mod/connections.php:267
msgid "Suggestions"
msgstr "Sugestões"
-#: ../../include/widgets.php:137
+#: ../../include/widgets.php:144
msgid "See more..."
msgstr "Veja mais..."
-#: ../../include/widgets.php:159
+#: ../../include/widgets.php:166
#, php-format
msgid "You have %1$.0f of %2$.0f allowed connections."
msgstr "Você tem %1$.0f de %2$.0f conexões permitidas."
-#: ../../include/widgets.php:165
+#: ../../include/widgets.php:172
msgid "Add New Connection"
msgstr "Adicionar nova conexão"
-#: ../../include/widgets.php:166
+#: ../../include/widgets.php:173
msgid "Enter the channel address"
msgstr "Digite o endereço do canal"
-#: ../../include/widgets.php:167
+#: ../../include/widgets.php:174
msgid "Example: bob@example.com, http://example.com/barbara"
msgstr "Por exemplo: joao@exemplo.com, http://exemplo.com/maria"
-#: ../../include/widgets.php:184
+#: ../../include/widgets.php:191
msgid "Notes"
msgstr "Notas"
-#: ../../include/widgets.php:256
+#: ../../include/widgets.php:263
msgid "Remove term"
msgstr "Remover termo"
-#: ../../include/widgets.php:335
+#: ../../include/widgets.php:342
msgid "Archives"
msgstr "Arquivos"
-#: ../../include/widgets.php:397
+#: ../../include/widgets.php:404
msgid "Refresh"
msgstr "Atualizar"
-#: ../../include/widgets.php:398 ../../mod/connedit.php:428
+#: ../../include/widgets.php:405 ../../mod/connedit.php:492
msgid "Me"
msgstr "Eu"
-#: ../../include/widgets.php:399 ../../mod/connedit.php:430
+#: ../../include/widgets.php:406 ../../mod/connedit.php:494
msgid "Best Friends"
msgstr "Melhores amigos"
-#: ../../include/widgets.php:401
+#: ../../include/widgets.php:408
msgid "Co-workers"
msgstr "Colegas de trabalho"
-#: ../../include/widgets.php:402 ../../mod/connedit.php:432
+#: ../../include/widgets.php:409 ../../mod/connedit.php:496
msgid "Former Friends"
msgstr "Amigos afastados"
-#: ../../include/widgets.php:403 ../../mod/connedit.php:433
+#: ../../include/widgets.php:410 ../../mod/connedit.php:497
msgid "Acquaintances"
msgstr "Conhecidos"
-#: ../../include/widgets.php:404
+#: ../../include/widgets.php:411
msgid "Everybody"
msgstr "Todos"
-#: ../../include/widgets.php:436
+#: ../../include/widgets.php:443
msgid "Account settings"
msgstr "Configurações da conta"
-#: ../../include/widgets.php:442
+#: ../../include/widgets.php:449
msgid "Channel settings"
msgstr "Configurações do canal"
-#: ../../include/widgets.php:448
+#: ../../include/widgets.php:455
msgid "Additional features"
msgstr "Recursos adicionais"
-#: ../../include/widgets.php:454
+#: ../../include/widgets.php:461
msgid "Feature settings"
msgstr "Configurações dos recursos"
-#: ../../include/widgets.php:460
+#: ../../include/widgets.php:467
msgid "Display settings"
msgstr "Configurações de exibição"
-#: ../../include/widgets.php:466
+#: ../../include/widgets.php:473
msgid "Connected apps"
msgstr "Aplicações conectadas"
-#: ../../include/widgets.php:472
+#: ../../include/widgets.php:479
msgid "Export channel"
msgstr "Exportar o canal"
-#: ../../include/widgets.php:484
+#: ../../include/widgets.php:485
+msgid "Export content"
+msgstr "Exportar conteúdo"
+
+#: ../../include/widgets.php:491
msgid "Automatic Permissions (Advanced)"
msgstr "Permissões automáticas (avançado)"
-#: ../../include/widgets.php:494
+#: ../../include/widgets.php:501
msgid "Premium Channel Settings"
msgstr "Configurações de canal premium"
-#: ../../include/widgets.php:531
+#: ../../include/widgets.php:538
msgid "Check Mail"
msgstr "Checar mensagens"
-#: ../../include/widgets.php:612
+#: ../../include/widgets.php:619
msgid "Chat Rooms"
msgstr "Salas de bate-papo"
-#: ../../include/widgets.php:630
+#: ../../include/widgets.php:637
msgid "Bookmarked Chatrooms"
msgstr "Salas de bate-papo guardadas"
-#: ../../include/widgets.php:648
+#: ../../include/widgets.php:655
msgid "Suggested Chatrooms"
msgstr "Salas de bate-papo sugeridas"
-#: ../../include/ItemObject.php:118
+#: ../../include/ItemObject.php:130
msgid "Save to Folder"
msgstr "Salvar para pasta"
-#: ../../include/ItemObject.php:130 ../../include/ItemObject.php:142
+#: ../../include/ItemObject.php:142 ../../include/ItemObject.php:154
msgid "View all"
msgstr "Ver tudo"
-#: ../../include/ItemObject.php:134
-msgctxt "noun"
-msgid "Like"
-msgid_plural "Likes"
-msgstr[0] "gostou"
-msgstr[1] "gostaram"
-
-#: ../../include/ItemObject.php:139
+#: ../../include/ItemObject.php:151
msgctxt "noun"
msgid "Dislike"
msgid_plural "Dislikes"
msgstr[0] "desgostou"
msgstr[1] "desgostaram"
-#: ../../include/ItemObject.php:167
+#: ../../include/ItemObject.php:179
msgid "Add Star"
msgstr "Adicione estrela"
-#: ../../include/ItemObject.php:168
+#: ../../include/ItemObject.php:180
msgid "Remove Star"
msgstr "Remove estrela"
-#: ../../include/ItemObject.php:169
+#: ../../include/ItemObject.php:181
msgid "Toggle Star Status"
msgstr "Alterna status da estrela"
-#: ../../include/ItemObject.php:173
+#: ../../include/ItemObject.php:185
msgid "starred"
msgstr "destacado"
-#: ../../include/ItemObject.php:190
+#: ../../include/ItemObject.php:202
msgid "Add Tag"
msgstr "Adiciona etiqueta"
-#: ../../include/ItemObject.php:208 ../../mod/photos.php:971
+#: ../../include/ItemObject.php:220 ../../mod/photos.php:1008
msgid "I like this (toggle)"
msgstr "Eu gostei disso (alterna)"
-#: ../../include/ItemObject.php:209 ../../mod/photos.php:972
+#: ../../include/ItemObject.php:221 ../../mod/photos.php:1009
msgid "I don't like this (toggle)"
msgstr "Eu não gostei disso (alterna)"
-#: ../../include/ItemObject.php:211
+#: ../../include/ItemObject.php:225
msgid "Share This"
msgstr "Compartilhe isso"
-#: ../../include/ItemObject.php:211
+#: ../../include/ItemObject.php:225
msgid "share"
msgstr "compartilhar"
-#: ../../include/ItemObject.php:235 ../../include/ItemObject.php:236
+#: ../../include/ItemObject.php:248 ../../include/ItemObject.php:249
#, php-format
msgid "View %s's profile - %s"
msgstr "Ver o perfil de %s - %s"
-#: ../../include/ItemObject.php:237
+#: ../../include/ItemObject.php:250
msgid "to"
msgstr "para"
-#: ../../include/ItemObject.php:238
+#: ../../include/ItemObject.php:251
msgid "via"
msgstr "via"
-#: ../../include/ItemObject.php:239
+#: ../../include/ItemObject.php:252
msgid "Wall-to-Wall"
msgstr "Mural-para-mural"
-#: ../../include/ItemObject.php:240
+#: ../../include/ItemObject.php:253
msgid "via Wall-To-Wall:"
msgstr "via Mural-para-mural"
-#: ../../include/ItemObject.php:274
+#: ../../include/ItemObject.php:288
msgid "Save Bookmarks"
msgstr "Salve Favoritos"
-#: ../../include/ItemObject.php:275
+#: ../../include/ItemObject.php:289
msgid "Add to Calendar"
msgstr "Adicione ao calendário"
-#: ../../include/ItemObject.php:283
+#: ../../include/ItemObject.php:297
msgctxt "noun"
msgid "Likes"
msgstr "Gostaram"
-#: ../../include/ItemObject.php:284
+#: ../../include/ItemObject.php:298
msgctxt "noun"
msgid "Dislikes"
msgstr "Desgostaram"
-#: ../../include/ItemObject.php:315
+#: ../../include/ItemObject.php:329
#, php-format
msgid "%d comment"
msgid_plural "%d comments"
msgstr[0] "%d comentário"
msgstr[1] "%d comentários"
-#: ../../include/ItemObject.php:316 ../../include/js_strings.php:7
+#: ../../include/ItemObject.php:330 ../../include/js_strings.php:7
msgid "[+] show all"
msgstr "[+] mostrar todos"
-#: ../../include/ItemObject.php:580 ../../mod/photos.php:990
-#: ../../mod/photos.php:1077
+#: ../../include/ItemObject.php:594 ../../mod/photos.php:1027
+#: ../../mod/photos.php:1114
msgid "This is you"
msgstr "Este(a) é você"
-#: ../../include/ItemObject.php:582 ../../include/js_strings.php:6
-#: ../../mod/photos.php:992 ../../mod/photos.php:1079
+#: ../../include/ItemObject.php:596 ../../include/js_strings.php:6
+#: ../../mod/photos.php:1029 ../../mod/photos.php:1116
msgid "Comment"
msgstr "Comentar"
-#: ../../include/ItemObject.php:583 ../../mod/mood.php:135
-#: ../../mod/admin.php:441 ../../mod/admin.php:750 ../../mod/admin.php:884
-#: ../../mod/admin.php:1017 ../../mod/admin.php:1216 ../../mod/admin.php:1303
-#: ../../mod/poke.php:166 ../../mod/profiles.php:506 ../../mod/chat.php:177
-#: ../../mod/chat.php:211 ../../mod/connect.php:92 ../../mod/connedit.php:476
-#: ../../mod/settings.php:515 ../../mod/settings.php:627
-#: ../../mod/settings.php:655 ../../mod/settings.php:679
-#: ../../mod/settings.php:749 ../../mod/settings.php:926
+#: ../../include/ItemObject.php:597 ../../mod/mood.php:135
+#: ../../mod/settings.php:519 ../../mod/settings.php:631
+#: ../../mod/settings.php:660 ../../mod/settings.php:684
+#: ../../mod/settings.php:760 ../../mod/settings.php:945
+#: ../../mod/poke.php:166 ../../mod/profiles.php:643 ../../mod/chat.php:177
+#: ../../mod/chat.php:211 ../../mod/connect.php:92 ../../mod/connedit.php:540
#: ../../mod/setup.php:307 ../../mod/setup.php:350 ../../mod/pdledit.php:58
+#: ../../mod/photos.php:563 ../../mod/photos.php:675 ../../mod/photos.php:990
+#: ../../mod/photos.php:1030 ../../mod/photos.php:1117
#: ../../mod/sources.php:104 ../../mod/sources.php:138
-#: ../../mod/events.php:492 ../../mod/filestorage.php:135
-#: ../../mod/fsuggest.php:108 ../../mod/group.php:81 ../../mod/thing.php:283
-#: ../../mod/thing.php:326 ../../mod/import.php:393 ../../mod/invite.php:156
-#: ../../mod/mail.php:223 ../../mod/mail.php:335 ../../mod/photos.php:565
-#: ../../mod/photos.php:670 ../../mod/photos.php:953 ../../mod/photos.php:993
-#: ../../mod/photos.php:1080 ../../mod/appman.php:99
+#: ../../mod/events.php:586 ../../mod/filestorage.php:137
+#: ../../mod/fsuggest.php:108 ../../mod/group.php:81 ../../mod/admin.php:414
+#: ../../mod/admin.php:725 ../../mod/admin.php:861 ../../mod/admin.php:994
+#: ../../mod/admin.php:1193 ../../mod/admin.php:1280 ../../mod/thing.php:284
+#: ../../mod/thing.php:327 ../../mod/import.php:475 ../../mod/invite.php:142
+#: ../../mod/mail.php:345 ../../mod/appman.php:99 ../../mod/poll.php:68
#: ../../view/theme/apw/php/config.php:256
#: ../../view/theme/blogga/php/config.php:67
#: ../../view/theme/blogga/view/theme/blog/config.php:67
@@ -2994,35 +3081,35 @@ msgstr "Comentar"
msgid "Submit"
msgstr "Enviar"
-#: ../../include/ItemObject.php:584
+#: ../../include/ItemObject.php:598
msgid "Bold"
msgstr "Negrito"
-#: ../../include/ItemObject.php:585
+#: ../../include/ItemObject.php:599
msgid "Italic"
msgstr "Itálico"
-#: ../../include/ItemObject.php:586
+#: ../../include/ItemObject.php:600
msgid "Underline"
msgstr "Sublinhado"
-#: ../../include/ItemObject.php:587
+#: ../../include/ItemObject.php:601
msgid "Quote"
msgstr "Citação"
-#: ../../include/ItemObject.php:588
+#: ../../include/ItemObject.php:602
msgid "Code"
msgstr "Código"
-#: ../../include/ItemObject.php:589
+#: ../../include/ItemObject.php:603
msgid "Image"
msgstr "Imagem"
-#: ../../include/ItemObject.php:590
+#: ../../include/ItemObject.php:604
msgid "Link"
msgstr "Link"
-#: ../../include/ItemObject.php:591
+#: ../../include/ItemObject.php:605
msgid "Video"
msgstr "Vídeo"
@@ -3070,76 +3157,80 @@ msgstr "Atenção: permissões foram modificadas mas ainda não foram enviadas."
msgid "close all"
msgstr "fechar tudo"
-#: ../../include/js_strings.php:19
+#: ../../include/js_strings.php:18
+msgid "Nothing new here"
+msgstr "Nada de novo aqui"
+
+#: ../../include/js_strings.php:20
msgid "timeago.prefixAgo"
msgstr "timeago.prefixAgo"
-#: ../../include/js_strings.php:20
+#: ../../include/js_strings.php:21
msgid "timeago.prefixFromNow"
msgstr "timeago.prefixFromNow"
-#: ../../include/js_strings.php:21
+#: ../../include/js_strings.php:22
msgid "ago"
msgstr "atrás"
-#: ../../include/js_strings.php:22
+#: ../../include/js_strings.php:23
msgid "from now"
msgstr "de agora"
-#: ../../include/js_strings.php:23
+#: ../../include/js_strings.php:24
msgid "less than a minute"
msgstr "menos de um minuto"
-#: ../../include/js_strings.php:24
+#: ../../include/js_strings.php:25
msgid "about a minute"
msgstr "aproximadamente um minuto"
-#: ../../include/js_strings.php:25
+#: ../../include/js_strings.php:26
#, php-format
msgid "%d minutes"
msgstr "%d minutos"
-#: ../../include/js_strings.php:26
+#: ../../include/js_strings.php:27
msgid "about an hour"
msgstr "aproximadamente uma hora"
-#: ../../include/js_strings.php:27
+#: ../../include/js_strings.php:28
#, php-format
msgid "about %d hours"
msgstr "aproximadamente %d horas"
-#: ../../include/js_strings.php:28
+#: ../../include/js_strings.php:29
msgid "a day"
msgstr "um dia"
-#: ../../include/js_strings.php:29
+#: ../../include/js_strings.php:30
#, php-format
msgid "%d days"
msgstr "%d dias"
-#: ../../include/js_strings.php:30
+#: ../../include/js_strings.php:31
msgid "about a month"
msgstr "aproximadamente um mês"
-#: ../../include/js_strings.php:31
+#: ../../include/js_strings.php:32
#, php-format
msgid "%d months"
msgstr "%d meses"
-#: ../../include/js_strings.php:32
+#: ../../include/js_strings.php:33
msgid "about a year"
msgstr "aproximadamente um ano"
-#: ../../include/js_strings.php:33
+#: ../../include/js_strings.php:34
#, php-format
msgid "%d years"
msgstr "%d anos"
-#: ../../include/js_strings.php:34
+#: ../../include/js_strings.php:35
msgid " "
msgstr " "
-#: ../../include/js_strings.php:35
+#: ../../include/js_strings.php:36
msgid "timeago.numbers"
msgstr "timeago.numbers"
@@ -3151,11 +3242,18 @@ msgstr "Nova janela"
msgid "Open the selected location in a different window or browser tab"
msgstr "Abre a localização selecionada em outra aba ou janela"
+#: ../../include/Contact.php:211 ../../mod/admin.php:649
+#, php-format
+msgid "User '%s' deleted"
+msgstr "O usuário/a '%s' foi deletado/a"
+
#: ../../include/profile_selectors.php:6
+#: ../../include/profile_selectors.php:23
msgid "Male"
msgstr "Masculino"
#: ../../include/profile_selectors.php:6
+#: ../../include/profile_selectors.php:23
msgid "Female"
msgstr "Feminino"
@@ -3200,6 +3298,9 @@ msgid "Non-specific"
msgstr "Não específico"
#: ../../include/profile_selectors.php:6
+#: ../../include/profile_selectors.php:23
+#: ../../include/profile_selectors.php:61
+#: ../../include/profile_selectors.php:97 ../../include/permissions.php:746
msgid "Other"
msgstr "Outro"
@@ -3207,195 +3308,322 @@ msgstr "Outro"
msgid "Undecided"
msgstr "Indeciso"
-#: ../../include/profile_selectors.php:23
+#: ../../include/profile_selectors.php:42
+#: ../../include/profile_selectors.php:61
msgid "Males"
msgstr "Homens"
-#: ../../include/profile_selectors.php:23
+#: ../../include/profile_selectors.php:42
+#: ../../include/profile_selectors.php:61
msgid "Females"
msgstr "Mulheres"
-#: ../../include/profile_selectors.php:23
+#: ../../include/profile_selectors.php:42
msgid "Gay"
msgstr "Gays"
-#: ../../include/profile_selectors.php:23
+#: ../../include/profile_selectors.php:42
msgid "Lesbian"
msgstr "Lésbicas"
-#: ../../include/profile_selectors.php:23
+#: ../../include/profile_selectors.php:42
msgid "No Preference"
msgstr "Sem preferência"
-#: ../../include/profile_selectors.php:23
+#: ../../include/profile_selectors.php:42
msgid "Bisexual"
msgstr "Bissexuais"
-#: ../../include/profile_selectors.php:23
+#: ../../include/profile_selectors.php:42
msgid "Autosexual"
msgstr "Autossexuais"
-#: ../../include/profile_selectors.php:23
+#: ../../include/profile_selectors.php:42
msgid "Abstinent"
msgstr "Abstinentes"
-#: ../../include/profile_selectors.php:23
+#: ../../include/profile_selectors.php:42
msgid "Virgin"
msgstr "Virgens"
-#: ../../include/profile_selectors.php:23
+#: ../../include/profile_selectors.php:42
msgid "Deviant"
msgstr "Desviantes"
-#: ../../include/profile_selectors.php:23
+#: ../../include/profile_selectors.php:42
msgid "Fetish"
msgstr "Fetiches"
-#: ../../include/profile_selectors.php:23
+#: ../../include/profile_selectors.php:42
msgid "Oodles"
msgstr "Abundância"
-#: ../../include/profile_selectors.php:23
+#: ../../include/profile_selectors.php:42
msgid "Nonsexual"
msgstr "Não sexuais"
-#: ../../include/profile_selectors.php:42
+#: ../../include/profile_selectors.php:80
+#: ../../include/profile_selectors.php:97
msgid "Single"
msgstr "Solteiro(a)"
-#: ../../include/profile_selectors.php:42
+#: ../../include/profile_selectors.php:80
msgid "Lonely"
msgstr "Solitário(a)"
-#: ../../include/profile_selectors.php:42
+#: ../../include/profile_selectors.php:80
msgid "Available"
msgstr "Disponível"
-#: ../../include/profile_selectors.php:42
+#: ../../include/profile_selectors.php:80
msgid "Unavailable"
msgstr "Não disponível"
-#: ../../include/profile_selectors.php:42
+#: ../../include/profile_selectors.php:80
msgid "Has crush"
msgstr "Tem uma paixão"
-#: ../../include/profile_selectors.php:42
+#: ../../include/profile_selectors.php:80
msgid "Infatuated"
msgstr "Apaixonado"
-#: ../../include/profile_selectors.php:42
+#: ../../include/profile_selectors.php:80
+#: ../../include/profile_selectors.php:97
msgid "Dating"
msgstr "Saindo com alguém"
-#: ../../include/profile_selectors.php:42
+#: ../../include/profile_selectors.php:80
msgid "Unfaithful"
msgstr "Infiel"
-#: ../../include/profile_selectors.php:42
+#: ../../include/profile_selectors.php:80
msgid "Sex Addict"
msgstr "Viciado(a) em sexo"
-#: ../../include/profile_selectors.php:42
+#: ../../include/profile_selectors.php:80
msgid "Friends/Benefits"
msgstr "Amigos com benefícios"
-#: ../../include/profile_selectors.php:42
+#: ../../include/profile_selectors.php:80
msgid "Casual"
msgstr "Casual"
-#: ../../include/profile_selectors.php:42
+#: ../../include/profile_selectors.php:80
msgid "Engaged"
msgstr "Envolvido(a)"
-#: ../../include/profile_selectors.php:42
+#: ../../include/profile_selectors.php:80
+#: ../../include/profile_selectors.php:97
msgid "Married"
msgstr "Casado(a)"
-#: ../../include/profile_selectors.php:42
+#: ../../include/profile_selectors.php:80
msgid "Imaginarily married"
msgstr "Casado imaginariamente"
-#: ../../include/profile_selectors.php:42
+#: ../../include/profile_selectors.php:80
msgid "Partners"
msgstr "Parceiros"
-#: ../../include/profile_selectors.php:42
+#: ../../include/profile_selectors.php:80
+#: ../../include/profile_selectors.php:97
msgid "Cohabiting"
msgstr "Coabitando"
-#: ../../include/profile_selectors.php:42
+#: ../../include/profile_selectors.php:80
msgid "Common law"
msgstr "Direito comum"
-#: ../../include/profile_selectors.php:42
+#: ../../include/profile_selectors.php:80
msgid "Happy"
msgstr "Feliz"
-#: ../../include/profile_selectors.php:42
+#: ../../include/profile_selectors.php:80
msgid "Not looking"
msgstr "Não estou procurando"
-#: ../../include/profile_selectors.php:42
+#: ../../include/profile_selectors.php:80
msgid "Swinger"
msgstr "Swinger"
-#: ../../include/profile_selectors.php:42
+#: ../../include/profile_selectors.php:80
msgid "Betrayed"
msgstr "Traído(a)"
-#: ../../include/profile_selectors.php:42
+#: ../../include/profile_selectors.php:80
+#: ../../include/profile_selectors.php:97
msgid "Separated"
msgstr "Separado(a)"
-#: ../../include/profile_selectors.php:42
+#: ../../include/profile_selectors.php:80
msgid "Unstable"
msgstr "Instável"
-#: ../../include/profile_selectors.php:42
+#: ../../include/profile_selectors.php:80
+#: ../../include/profile_selectors.php:97
msgid "Divorced"
msgstr "Divorciado(a)"
-#: ../../include/profile_selectors.php:42
+#: ../../include/profile_selectors.php:80
msgid "Imaginarily divorced"
msgstr "Divorciado imaginariamente"
-#: ../../include/profile_selectors.php:42
+#: ../../include/profile_selectors.php:80
+#: ../../include/profile_selectors.php:97
msgid "Widowed"
msgstr "Viúvo(a)"
-#: ../../include/profile_selectors.php:42
+#: ../../include/profile_selectors.php:80
msgid "Uncertain"
msgstr "Incerto(a)"
-#: ../../include/profile_selectors.php:42
+#: ../../include/profile_selectors.php:80
+#: ../../include/profile_selectors.php:97
msgid "It's complicated"
msgstr "É complicado"
-#: ../../include/profile_selectors.php:42
+#: ../../include/profile_selectors.php:80
msgid "Don't care"
msgstr "Não importa"
-#: ../../include/profile_selectors.php:42
+#: ../../include/profile_selectors.php:80
msgid "Ask me"
msgstr "Pergunte-me"
-#: ../../include/auth.php:79
+#: ../../include/auth.php:103
msgid "Logged out."
msgstr "Você saiu."
-#: ../../include/auth.php:198
+#: ../../include/auth.php:249
msgid "Failed authentication"
msgstr "Não foi possível autenticar"
-#: ../../include/auth.php:213 ../../mod/openid.php:188
+#: ../../include/auth.php:264 ../../mod/openid.php:188
msgid "Login failed."
msgstr "Não foi possível entrar."
-#: ../../include/security.php:301
+#: ../../include/permissions.php:13
+msgid "Can view my normal stream and posts"
+msgstr "Pode ver meus fluxo e publicações normais"
+
+#: ../../include/permissions.php:14
+msgid "Can view my default channel profile"
+msgstr "Pode ver o perfil padrão do meu canal"
+
+#: ../../include/permissions.php:15
+msgid "Can view my photo albums"
+msgstr "Pode ver meus álbuns de fotos"
+
+#: ../../include/permissions.php:16
+msgid "Can view my connections"
+msgstr "Pode ver minhas conexões"
+
+#: ../../include/permissions.php:17
+msgid "Can view my file storage"
+msgstr "Pode ver meu armazenamento de arquivos"
+
+#: ../../include/permissions.php:18
+msgid "Can view my webpages"
+msgstr "Pode ver minhas páginas web"
+
+#: ../../include/permissions.php:21
+msgid "Can send me their channel stream and posts"
+msgstr "Pode me enviar seu fluxo e publicações"
+
+#: ../../include/permissions.php:22
+msgid "Can post on my channel page (\"wall\")"
+msgstr "Pode publicar na página do meu canal (\"mural\")"
+
+#: ../../include/permissions.php:23
+msgid "Can comment on or like my posts"
+msgstr "Pode comentar em ou gostar de minhas publicações"
+
+#: ../../include/permissions.php:24
+msgid "Can send me private mail messages"
+msgstr "Pode me enviar mensagens privadas"
+
+#: ../../include/permissions.php:25
+msgid "Can post photos to my photo albums"
+msgstr "Pode publicar fotos nos meus álbuns de fotos"
+
+#: ../../include/permissions.php:26
+msgid "Can like/dislike stuff"
+msgstr "Pode gostar/desgostar de coisas"
+
+#: ../../include/permissions.php:26
+msgid "Profiles and things other than posts/comments"
+msgstr "Perfis e coisas que não publicações/comentários"
+
+#: ../../include/permissions.php:28
+msgid "Can forward to all my channel contacts via post @mentions"
+msgstr "Pode encaminhar para todos os contatos do meu canal via @menções na publicação"
+
+#: ../../include/permissions.php:28
+msgid "Advanced - useful for creating group forum channels"
+msgstr "Avançado - útil para criar canais de fóruns de grupos"
+
+#: ../../include/permissions.php:29
+msgid "Can chat with me (when available)"
+msgstr "Pode conversar comigo (quando disponívei)"
+
+#: ../../include/permissions.php:30
+msgid "Can write to my file storage"
+msgstr "Pode escrever em meu armazenamento de arquivos"
+
+#: ../../include/permissions.php:31
+msgid "Can edit my webpages"
+msgstr "Pode editar minhas páginas web"
+
+#: ../../include/permissions.php:33
+msgid "Can source my public posts in derived channels"
+msgstr "Pode usar minhas publicações públicas como fonte para canais derivados"
+
+#: ../../include/permissions.php:33
+msgid "Somewhat advanced - very useful in open communities"
+msgstr "Avançado - muito útil em comunidades abertas"
+
+#: ../../include/permissions.php:35
+msgid "Can administer my channel resources"
+msgstr "Pode administrar os recursos do meu canal"
+
+#: ../../include/permissions.php:35
msgid ""
-"The form security token was not correct. This probably happened because the "
-"form has been opened for too long (>3 hours) before submitting it."
-msgstr "O token de segurança do formulário não estava correto. Isso provavelmente aconteceu porque o formulário ficou aberto por muito tempo (>3 horas) antes da sua submissão."
+"Extremely advanced. Leave this alone unless you know what you are doing"
+msgstr "Extremamente avançado. Não mexa nisso a não ser que saiba o que está fazendo"
+
+#: ../../include/permissions.php:738
+msgid "Social Networking"
+msgstr "Rede social"
+
+#: ../../include/permissions.php:739 ../../include/permissions.php:741
+#: ../../include/permissions.php:743 ../../include/permissions.php:745
+msgid "Mostly Public"
+msgstr "Padrão público"
+
+#: ../../include/permissions.php:739 ../../include/permissions.php:741
+#: ../../include/permissions.php:743
+msgid "Restricted"
+msgstr "Restrito"
+
+#: ../../include/permissions.php:739 ../../include/permissions.php:741
+msgid "Private"
+msgstr "Privado"
+
+#: ../../include/permissions.php:740
+msgid "Community Forum"
+msgstr "Fórum de comunidade"
+
+#: ../../include/permissions.php:742
+msgid "Feed Republish"
+msgstr "Republicação de feed"
+
+#: ../../include/permissions.php:744
+msgid "Celebrity/Soapbox"
+msgstr "Personalidade/Palanque"
+
+#: ../../include/permissions.php:747
+msgid "Custom/Expert Mode"
+msgstr "Personalizado/Modo expert"
#: ../../mod/mood.php:132
msgid "Set your current mood and tell your friends"
@@ -3422,7 +3650,7 @@ msgid "Unable to add menu element."
msgstr "Não foi possível adicionar o elemento de menu."
#: ../../mod/mitem.php:78 ../../mod/dirprofile.php:175 ../../mod/menu.php:120
-#: ../../mod/xchan.php:27
+#: ../../mod/xchan.php:38
msgid "Not found."
msgstr "Não encontrado."
@@ -3470,7 +3698,7 @@ msgstr "Novo elemento de menu"
msgid "Menu Item Permissions"
msgstr "Permissões do item do menu"
-#: ../../mod/mitem.php:134 ../../mod/mitem.php:177 ../../mod/settings.php:959
+#: ../../mod/mitem.php:134 ../../mod/mitem.php:177 ../../mod/settings.php:980
msgid "(click to open/close)"
msgstr "(clique para abrir/fechar)"
@@ -3498,10 +3726,6 @@ msgstr "Ordem na lista"
msgid "Higher numbers will sink to bottom of listing"
msgstr "Números mais altos descem para o fim da lista"
-#: ../../mod/mitem.php:142 ../../mod/menu.php:84 ../../mod/new_channel.php:117
-msgid "Create"
-msgstr "Criar"
-
#: ../../mod/mitem.php:154
msgid "Menu item not found."
msgstr "O item de menu não foi encontrado."
@@ -3522,648 +3746,493 @@ msgstr "Editar elemento de menu"
msgid "Modify"
msgstr "Modificar"
-#: ../../mod/ping.php:192
+#: ../../mod/achievements.php:34
+msgid "Some blurb about what to do when you're new here"
+msgstr "Alguma coisa sobre o que fazer quando se é novo aqui"
+
+#: ../../mod/ping.php:237
msgid "sent you a private message"
msgstr "lhe enviou uma mensagem privada"
-#: ../../mod/ping.php:250
+#: ../../mod/ping.php:288
msgid "added your channel"
msgstr "adicionou seu canal"
-#: ../../mod/ping.php:294
+#: ../../mod/ping.php:329
msgid "posted an event"
msgstr "publicou um evento"
-#: ../../mod/acl.php:239
+#: ../../mod/acl.php:244
msgid "network"
msgstr "+ rede"
-#: ../../mod/admin.php:52
-msgid "Theme settings updated."
-msgstr "As configurações de tema foram atualizadas."
-
-#: ../../mod/admin.php:92 ../../mod/admin.php:440
-msgid "Site"
-msgstr "Site"
-
-#: ../../mod/admin.php:93
-msgid "Accounts"
-msgstr "Contas"
-
-#: ../../mod/admin.php:94 ../../mod/admin.php:883
-msgid "Channels"
-msgstr "Canais"
-
-#: ../../mod/admin.php:95 ../../mod/admin.php:974 ../../mod/admin.php:1016
-msgid "Plugins"
-msgstr "Plugins"
-
-#: ../../mod/admin.php:96 ../../mod/admin.php:1179 ../../mod/admin.php:1215
-msgid "Themes"
-msgstr "Temas"
-
-#: ../../mod/admin.php:97 ../../mod/admin.php:540
-msgid "Server"
-msgstr "Servidor"
-
-#: ../../mod/admin.php:98
-msgid "DB updates"
-msgstr "Atualizações do Banco de Dados"
-
-#: ../../mod/admin.php:112 ../../mod/admin.php:119 ../../mod/admin.php:1302
-msgid "Logs"
-msgstr "Logs"
-
-#: ../../mod/admin.php:118
-msgid "Plugin Features"
-msgstr "Recursos dos plugins"
-
-#: ../../mod/admin.php:120
-msgid "User registrations waiting for confirmation"
-msgstr "Registros de usuário aguardando confirmação"
-
-#: ../../mod/admin.php:197
-msgid "Message queues"
-msgstr "Filas de mensagem"
-
-#: ../../mod/admin.php:202 ../../mod/admin.php:439 ../../mod/admin.php:539
-#: ../../mod/admin.php:748 ../../mod/admin.php:882 ../../mod/admin.php:973
-#: ../../mod/admin.php:1015 ../../mod/admin.php:1178 ../../mod/admin.php:1214
-#: ../../mod/admin.php:1301
-msgid "Administration"
-msgstr "Administração"
-
-#: ../../mod/admin.php:203
-msgid "Summary"
-msgstr "Resumo"
-
-#: ../../mod/admin.php:205
-msgid "Registered users"
-msgstr "Usuários registrados"
-
-#: ../../mod/admin.php:207 ../../mod/admin.php:543
-msgid "Pending registrations"
-msgstr "Registros pendentes"
-
-#: ../../mod/admin.php:208
-msgid "Version"
-msgstr "Versão"
-
-#: ../../mod/admin.php:210 ../../mod/admin.php:544
-msgid "Active plugins"
-msgstr "Plugins ativos"
-
-#: ../../mod/admin.php:360
-msgid "Site settings updated."
-msgstr "As configurações de site foram atualizadas."
-
-#: ../../mod/admin.php:389 ../../mod/settings.php:708
-msgid "No special theme for mobile devices"
-msgstr "Sem tema especial para aparelhos móveis"
-
-#: ../../mod/admin.php:391
-msgid "No special theme for accessibility"
-msgstr "Sem tema especial para acessibilidade"
-
-#: ../../mod/admin.php:419 ../../mod/api.php:106 ../../mod/profiles.php:484
-#: ../../mod/settings.php:876 ../../mod/settings.php:881
-#: ../../mod/settings.php:952
-msgid "No"
-msgstr "Não"
+#: ../../mod/settings.php:71
+msgid "Name is required"
+msgstr "É necessário informar o nome"
-#: ../../mod/admin.php:420
-msgid "Yes - with approval"
-msgstr "Sim - pendente aprovação"
+#: ../../mod/settings.php:75
+msgid "Key and Secret are required"
+msgstr "A chave e o segredo são obrigatórios"
-#: ../../mod/admin.php:421 ../../mod/api.php:105 ../../mod/profiles.php:483
-#: ../../mod/settings.php:876 ../../mod/settings.php:881
-#: ../../mod/settings.php:952
-msgid "Yes"
-msgstr "Sim"
+#: ../../mod/settings.php:198
+msgid "Passwords do not match. Password unchanged."
+msgstr "As senhas não correspondem. A senha não foi modificada."
-#: ../../mod/admin.php:426
-msgid "My site is not a public server"
-msgstr "Meu site não é um servidor público"
+#: ../../mod/settings.php:202
+msgid "Empty passwords are not allowed. Password unchanged."
+msgstr "Não é permitido uma senha em branco. A senha não foi modificada."
-#: ../../mod/admin.php:427
-msgid "My site has paid access only"
-msgstr "Meu site oferece somente acesso pago"
+#: ../../mod/settings.php:216
+msgid "Password changed."
+msgstr "A senha foi modificada."
-#: ../../mod/admin.php:428
-msgid "My site has free access only"
-msgstr "Meu site oferece somente acesso gratuito"
+#: ../../mod/settings.php:218
+msgid "Password update failed. Please try again."
+msgstr "Não foi possível atualizar a senha. Por favor, tente novamente."
-#: ../../mod/admin.php:429
-msgid "My site offers free accounts with optional paid upgrades"
-msgstr "Meu site oferece contas gratuitas com recursos adicionais pagos"
+#: ../../mod/settings.php:232
+msgid "Not valid email."
+msgstr "Não é um e-mail válido"
-#: ../../mod/admin.php:442 ../../mod/register.php:189
-msgid "Registration"
-msgstr "Registro"
+#: ../../mod/settings.php:235
+msgid "Protected email address. Cannot change to that email."
+msgstr "Endereço de e-mail protegido. Não é possível mudar para esse e-mail."
-#: ../../mod/admin.php:443
-msgid "File upload"
-msgstr "Carregamento de arquivos"
+#: ../../mod/settings.php:244
+msgid "System failure storing new email. Please try again."
+msgstr "Falha do sistema ao armazenar novo e-mail. Por favor, tente novamente."
-#: ../../mod/admin.php:444
-msgid "Policies"
-msgstr "Políticas"
+#: ../../mod/settings.php:447
+msgid "Settings updated."
+msgstr "As configurações foram atualizadas."
-#: ../../mod/admin.php:449
-msgid "Site name"
-msgstr "Nome do site"
+#: ../../mod/settings.php:518 ../../mod/settings.php:544
+#: ../../mod/settings.php:580
+msgid "Add application"
+msgstr "Adicionar aplicação"
-#: ../../mod/admin.php:450
-msgid "Banner/Logo"
-msgstr "Cartaz/Logo"
+#: ../../mod/settings.php:521
+msgid "Name of application"
+msgstr "Nome da aplicação"
-#: ../../mod/admin.php:451
-msgid "Administrator Information"
-msgstr "Informações do Administrador"
+#: ../../mod/settings.php:522 ../../mod/settings.php:548
+msgid "Consumer Key"
+msgstr "Chave de consumidor"
-#: ../../mod/admin.php:451
-msgid ""
-"Contact information for site administrators. Displayed on siteinfo page. "
-"BBCode can be used here"
-msgstr "Informações de contato com administradores do site. Exibida na página siteinfo. BBCode pode ser usado aqui."
+#: ../../mod/settings.php:522 ../../mod/settings.php:523
+msgid "Automatically generated - change if desired. Max length 20"
+msgstr "Gerado automaticamente - troque se desejável. Comprimento máximo 20"
-#: ../../mod/admin.php:452
-msgid "System language"
-msgstr "Idioma do sistema"
+#: ../../mod/settings.php:523 ../../mod/settings.php:549
+msgid "Consumer Secret"
+msgstr "Segredo de consumidor"
-#: ../../mod/admin.php:453
-msgid "System theme"
-msgstr "Tema do sistema"
+#: ../../mod/settings.php:524 ../../mod/settings.php:550
+msgid "Redirect"
+msgstr "Redirecionamento"
-#: ../../mod/admin.php:453
+#: ../../mod/settings.php:524
msgid ""
-"Default system theme - may be over-ridden by user profiles - <a href='#' "
-"id='cnftheme'>change theme settings</a>"
-msgstr "Tema padrão do sistema - pode ser sobrescrito por perfis de usuário - <a href='#' id='cnftheme'>mudar configurações do tema</a>"
-
-#: ../../mod/admin.php:454
-msgid "Mobile system theme"
-msgstr "Tema do sistema móvel"
-
-#: ../../mod/admin.php:454
-msgid "Theme for mobile devices"
-msgstr "Tema para dispositivos móveis"
-
-#: ../../mod/admin.php:455
-msgid "Accessibility system theme"
-msgstr "Tema do sistema acessível"
-
-#: ../../mod/admin.php:455
-msgid "Accessibility theme"
-msgstr "Tema acessível"
-
-#: ../../mod/admin.php:456
-msgid "Channel to use for this website's static pages"
-msgstr "Canal a utilizar para as páginas estáticas desse website"
-
-#: ../../mod/admin.php:456
-msgid "Site Channel"
-msgstr "Canal do site"
-
-#: ../../mod/admin.php:458
-msgid "Maximum image size"
-msgstr "Tamanho máximo de imagens"
+"Redirect URI - leave blank unless your application specifically requires "
+"this"
+msgstr "URI de redirecionamento - deixe em branco, a não ser que sua aplicação especificamente requeira isso"
-#: ../../mod/admin.php:458
-msgid ""
-"Maximum size in bytes of uploaded images. Default is 0, which means no "
-"limits."
-msgstr "Tamanho máximo em bytes de imagens carregadas. O padrão é 0, significando sem limites."
+#: ../../mod/settings.php:525 ../../mod/settings.php:551
+msgid "Icon url"
+msgstr "URL do ícone"
-#: ../../mod/admin.php:459
-msgid "Does this site allow new member registration?"
-msgstr "Este site permite o registro de novos membros?"
+#: ../../mod/settings.php:525
+msgid "Optional"
+msgstr "Opcional"
-#: ../../mod/admin.php:460
-msgid "Which best describes the types of account offered by this hub?"
-msgstr "Qual descreve melhor os tipos de conta oferecidas por este hub?"
+#: ../../mod/settings.php:536
+msgid "You can't edit this application."
+msgstr "Você não pode editar esta aplicação."
-#: ../../mod/admin.php:461
-msgid "Register text"
-msgstr "Texto de registro"
+#: ../../mod/settings.php:579
+msgid "Connected Apps"
+msgstr "Aplicações conectadas"
-#: ../../mod/admin.php:461
-msgid "Will be displayed prominently on the registration page."
-msgstr "Será exibido proeminentemente na página de registro."
+#: ../../mod/settings.php:583
+msgid "Client key starts with"
+msgstr "Chave do cliente começa com"
-#: ../../mod/admin.php:462
-msgid "Accounts abandoned after x days"
-msgstr "Contas abandonadas após x dias"
+#: ../../mod/settings.php:584
+msgid "No name"
+msgstr "Sem nome"
-#: ../../mod/admin.php:462
-msgid ""
-"Will not waste system resources polling external sites for abandonded "
-"accounts. Enter 0 for no time limit."
-msgstr "Não gastará recursos do sistema coletando de sites externos para contas abandonadas. Use 0 para sem limite de tempo."
+#: ../../mod/settings.php:585
+msgid "Remove authorization"
+msgstr "Remover autorização"
-#: ../../mod/admin.php:463
-msgid "Allowed friend domains"
-msgstr "Domínios permitidos para amigos"
+#: ../../mod/settings.php:596
+msgid "No feature settings configured"
+msgstr "Não foi definida nenhuma configuração do recurso"
-#: ../../mod/admin.php:463
-msgid ""
-"Comma separated list of domains which are allowed to establish friendships "
-"with this site. Wildcards are accepted. Empty to allow any domains"
-msgstr "Lista, separada por vírgulas, de domínios permitidos para estabelecer amizades com este site. <em>Wildcards</em> são aceitas. Vazio para permitir qualquer domínio"
+#: ../../mod/settings.php:604
+msgid "Feature Settings"
+msgstr "Configurações do recurso"
-#: ../../mod/admin.php:464
-msgid "Allowed email domains"
-msgstr "Domínios permitidos de e-mail"
+#: ../../mod/settings.php:627
+msgid "Account Settings"
+msgstr "Configurações da conta"
-#: ../../mod/admin.php:464
-msgid ""
-"Comma separated list of domains which are allowed in email addresses for "
-"registrations to this site. Wildcards are accepted. Empty to allow any "
-"domains"
-msgstr "Lista, separada por vírgulas, de domínios permitidos em endereços de e-mail para registros nesse site. <em>Wildcards</em> são aceitas. Vazio para permitir qualquer domínio"
+#: ../../mod/settings.php:628
+msgid "Password Settings"
+msgstr "Configurações da senha"
-#: ../../mod/admin.php:465
-msgid "Block public"
-msgstr "Bloquear público"
+#: ../../mod/settings.php:629
+msgid "New Password:"
+msgstr "Nova senha:"
-#: ../../mod/admin.php:465
-msgid ""
-"Check to block public access to all otherwise public personal pages on this "
-"site unless you are currently logged in."
-msgstr "Marque para bloquear o acesso público a todas as páginas pessoais que seriam públicas, a não ser que se esteja autenticado."
+#: ../../mod/settings.php:630
+msgid "Confirm:"
+msgstr "Confirme:"
-#: ../../mod/admin.php:466
-msgid "Force publish"
-msgstr "Forçar publicação"
+#: ../../mod/settings.php:630
+msgid "Leave password fields blank unless changing"
+msgstr "Deixe os campos de senha em branco, a não ser que você queira alterá-la"
-#: ../../mod/admin.php:466
-msgid ""
-"Check to force all profiles on this site to be listed in the site directory."
-msgstr "Marque para forçar todos os perfis neste site a aparecerem listados no diretório do site."
+#: ../../mod/settings.php:632 ../../mod/settings.php:954
+msgid "Email Address:"
+msgstr "Endereço de e-mail:"
-#: ../../mod/admin.php:467
-msgid "Disable discovery tab"
-msgstr "Desabilitar a aba \"Descubra\""
+#: ../../mod/settings.php:633 ../../mod/removeaccount.php:61
+msgid "Remove Account"
+msgstr "Remover conta"
-#: ../../mod/admin.php:467
-msgid ""
-"Remove the tab in the network view with public content pulled from sources "
-"chosen for this site."
-msgstr "Remove da visualização de rede a aba com conteúdos públicos obtidos de fontes escolhidas para esse site."
+#: ../../mod/settings.php:634
+msgid "Remove this account from this server including all its channels"
+msgstr "Remove esta conta deste servidor incluindo todos os seus canais."
-#: ../../mod/admin.php:468
-msgid "No login on Homepage"
-msgstr "Sem formulário de autenticação na página inicial"
+#: ../../mod/settings.php:635 ../../mod/settings.php:1019
+msgid "Warning: This action is permanent and cannot be reversed."
+msgstr "Atenção: Esta ação é permanente e não pode ser revertida."
-#: ../../mod/admin.php:468
-msgid ""
-"Check to hide the login form from your sites homepage when visitors arrive "
-"who are not logged in (e.g. when you put the content of the homepage in via "
-"the site channel)."
-msgstr "Marque para esconder o formulário de autenticação da página inicial do seu site quando visitantes chegarem sem estar autenticados (e.g. quando você inclui os conteúdos da página inicial através do canal do site)."
+#: ../../mod/settings.php:651
+msgid "Off"
+msgstr "Desligado"
-#: ../../mod/admin.php:470
-msgid "Proxy user"
-msgstr "Usuário do proxy"
+#: ../../mod/settings.php:651
+msgid "On"
+msgstr "Ligado"
-#: ../../mod/admin.php:471
-msgid "Proxy URL"
-msgstr "URL do proxy"
+#: ../../mod/settings.php:658
+msgid "Additional Features"
+msgstr "Recursos adicionais"
-#: ../../mod/admin.php:472
-msgid "Network timeout"
-msgstr "Timeout da rede"
+#: ../../mod/settings.php:683
+msgid "Connector Settings"
+msgstr "Configurações do conector"
-#: ../../mod/admin.php:472
-msgid "Value is in seconds. Set to 0 for unlimited (not recommended)."
-msgstr "Valor em segundos. Use 0 para ilimitado (não recomendado)."
+#: ../../mod/settings.php:713 ../../mod/admin.php:362
+msgid "No special theme for mobile devices"
+msgstr "Sem tema especial para aparelhos móveis"
-#: ../../mod/admin.php:473
-msgid "Delivery interval"
-msgstr "Intervalo de entrega"
+#: ../../mod/settings.php:722
+#, php-format
+msgid "%s - (Experimental)"
+msgstr "%s - (Experimental)"
-#: ../../mod/admin.php:473
-msgid ""
-"Delay background delivery processes by this many seconds to reduce system "
-"load. Recommend: 4-5 for shared hosts, 2-3 for virtual private servers. 0-1 "
-"for large dedicated servers."
-msgstr "Atrase os processos de entrega em segundo plano por este número de segundos para reduzir a carga do sistema. Recomendado: 4-5 para hosts compartilhados, 2-3 para servidores virtuais privados. 0-1 para grandes servidores dedicados."
+#: ../../mod/settings.php:758
+msgid "Display Settings"
+msgstr "Configurações de exibição"
-#: ../../mod/admin.php:474
-msgid "Poll interval"
-msgstr "Intervalo de coleta"
+#: ../../mod/settings.php:764
+msgid "Display Theme:"
+msgstr "Tema do perfil:"
-#: ../../mod/admin.php:474
-msgid ""
-"Delay background polling processes by this many seconds to reduce system "
-"load. If 0, use delivery interval."
-msgstr "Atrase os processos de coleta em segundo plano por este número de segundos para reduzir a carga do sistema. Se 0, use o intervalo de entrega."
+#: ../../mod/settings.php:765
+msgid "Mobile Theme:"
+msgstr "Tema móvel:"
-#: ../../mod/admin.php:475
-msgid "Maximum Load Average"
-msgstr "Carga média máxima"
+#: ../../mod/settings.php:766
+msgid "Enable user zoom on mobile devices"
+msgstr "Permitir zoom pelo usuário em dispositivos móveis"
-#: ../../mod/admin.php:475
-msgid ""
-"Maximum system load before delivery and poll processes are deferred - "
-"default 50."
-msgstr "Carga máxima do sistema antes de adiar processos de entrega e coleta - padrão 50."
+#: ../../mod/settings.php:767
+msgid "Update browser every xx seconds"
+msgstr "Atualizar navegador a cada xx segundos"
-#: ../../mod/admin.php:531
-msgid "No server found"
-msgstr "Nenhum servidor foi encontrado"
+#: ../../mod/settings.php:767
+msgid "Minimum of 10 seconds, no maximum"
+msgstr "Mínimo de 10 segundos, sem máximo"
-#: ../../mod/admin.php:538 ../../mod/admin.php:762
-msgid "ID"
-msgstr "ID"
+#: ../../mod/settings.php:768
+msgid "Maximum number of conversations to load at any time:"
+msgstr "Número máximo permitido de conversas carregadas:"
-#: ../../mod/admin.php:538
-msgid "for channel"
-msgstr "para o canal"
+#: ../../mod/settings.php:768
+msgid "Maximum of 100 items"
+msgstr "Máximo de 100 itens"
-#: ../../mod/admin.php:538
-msgid "on server"
-msgstr "no servidor"
+#: ../../mod/settings.php:769
+msgid "Don't show emoticons"
+msgstr "Não exibir emoticons"
-#: ../../mod/admin.php:538
-msgid "Status"
-msgstr "Status"
+#: ../../mod/settings.php:770
+msgid "Link post titles to source"
+msgstr "Ligar o título dos posts à fonte"
-#: ../../mod/admin.php:559
-msgid "Update has been marked successful"
-msgstr "A atualização foi designada bem sucedida"
+#: ../../mod/settings.php:771
+msgid "System Page Layout Editor - (advanced)"
+msgstr "Editor de layout de página do sistema - (avançado)"
-#: ../../mod/admin.php:569
-#, php-format
-msgid "Executing %s failed. Check system logs."
-msgstr "Execução de %s falhou. Verifique os logs do sistema."
+#: ../../mod/settings.php:807
+msgid "Nobody except yourself"
+msgstr "Ninguém exceto você mesmo"
-#: ../../mod/admin.php:572
-#, php-format
-msgid "Update %s was successfully applied."
-msgstr "A atualização %s foi aplicada com sucesso."
+#: ../../mod/settings.php:808
+msgid "Only those you specifically allow"
+msgstr "Apenas quem você der permissão"
-#: ../../mod/admin.php:576
-#, php-format
-msgid "Update %s did not return a status. Unknown if it succeeded."
-msgstr "A atualização %s não retornou um status. Situação incerta quando ao seu sucesso."
+#: ../../mod/settings.php:809
+msgid "Approved connections"
+msgstr "Conexões aprovadas"
-#: ../../mod/admin.php:579
-#, php-format
-msgid "Update function %s could not be found."
-msgstr "A função de atualização %s não foi encontrada."
+#: ../../mod/settings.php:810
+msgid "Any connections"
+msgstr "Quaisquer conexões"
-#: ../../mod/admin.php:594
-msgid "No failed updates."
-msgstr "Nenhuma falha nas atualizações."
+#: ../../mod/settings.php:811
+msgid "Anybody on this website"
+msgstr "Qualquer um neste site"
-#: ../../mod/admin.php:598
-msgid "Failed Updates"
-msgstr "Falha nas atualizações"
+#: ../../mod/settings.php:812
+msgid "Anybody in this network"
+msgstr "Qualquer um nesta rede"
-#: ../../mod/admin.php:600
-msgid "Mark success (if update was manually applied)"
-msgstr "Marque sucesso (se a atualização foi aplicada manualmente)"
+#: ../../mod/settings.php:813
+msgid "Anybody authenticated"
+msgstr "Qualquer um autenticado"
-#: ../../mod/admin.php:601
-msgid "Attempt to execute this update step automatically"
-msgstr "Tente executar este passo da atualização automaticamente"
+#: ../../mod/settings.php:814
+msgid "Anybody on the internet"
+msgstr "Qualquer um na internet"
-#: ../../mod/admin.php:627
-#, php-format
-msgid "%s user blocked/unblocked"
-msgid_plural "%s users blocked/unblocked"
-msgstr[0] "%s usuário foi bloqueado/desbloqueado"
-msgstr[1] "%s usuários foram bloqueados/desbloqueados"
+#: ../../mod/settings.php:891
+msgid "Publish your default profile in the network directory"
+msgstr "Publicar seu perfil padrão no diretório da rede?"
-#: ../../mod/admin.php:634
-#, php-format
-msgid "%s user deleted"
-msgid_plural "%s users deleted"
-msgstr[0] "%s usuário foi deletado"
-msgstr[1] "%s usuários foram deletados"
+#: ../../mod/settings.php:891 ../../mod/settings.php:896
+#: ../../mod/settings.php:973 ../../mod/api.php:106 ../../mod/profiles.php:602
+#: ../../mod/admin.php:392
+msgid "No"
+msgstr "Não"
-#: ../../mod/admin.php:665
-msgid "Account not found"
-msgstr "A conta não foi encontrada"
+#: ../../mod/settings.php:891 ../../mod/settings.php:896
+#: ../../mod/settings.php:973 ../../mod/api.php:105 ../../mod/profiles.php:601
+#: ../../mod/admin.php:394
+msgid "Yes"
+msgstr "Sim"
-#: ../../mod/admin.php:676
-#, php-format
-msgid "User '%s' deleted"
-msgstr "O usuário/a '%s' foi deletado/a"
+#: ../../mod/settings.php:896
+msgid "Allow us to suggest you as a potential friend to new members?"
+msgstr "Permitir sugerir você como amigo potencial para outros membros?"
-#: ../../mod/admin.php:685
-#, php-format
-msgid "User '%s' unblocked"
-msgstr "O usuário/a '%s' foi desbloqueado/a"
+#: ../../mod/settings.php:900 ../../mod/profile_photo.php:365
+msgid "or"
+msgstr "ou"
-#: ../../mod/admin.php:685
-#, php-format
-msgid "User '%s' blocked"
-msgstr "O usuário/a '%s' foi bloqueado/a"
+#: ../../mod/settings.php:905
+msgid "Your channel address is"
+msgstr "O endereço do seu canal é"
-#: ../../mod/admin.php:749 ../../mod/admin.php:761
-msgid "Users"
-msgstr "Usuários"
+#: ../../mod/settings.php:943
+msgid "Channel Settings"
+msgstr "Configurações do canal"
-#: ../../mod/admin.php:751 ../../mod/admin.php:885
-msgid "select all"
-msgstr "selecionar tudo"
+#: ../../mod/settings.php:952
+msgid "Basic Settings"
+msgstr "Configurações básicas"
-#: ../../mod/admin.php:752
-msgid "User registrations waiting for confirm"
-msgstr "Registros de usuário aguardando confirmação"
+#: ../../mod/settings.php:955
+msgid "Your Timezone:"
+msgstr "Seu fuso horário:"
-#: ../../mod/admin.php:753
-msgid "Request date"
-msgstr "Data de requisição"
+#: ../../mod/settings.php:956
+msgid "Default Post Location:"
+msgstr "Localização padrão de suas publicações:"
-#: ../../mod/admin.php:754
-msgid "No registrations."
-msgstr "Nenhum registro."
+#: ../../mod/settings.php:956
+msgid "Geographical location to display on your posts"
+msgstr "Localização geográfica para exibir em suas publicações"
-#: ../../mod/admin.php:755
-msgid "Approve"
-msgstr "Aprovar"
+#: ../../mod/settings.php:957
+msgid "Use Browser Location:"
+msgstr "Usar localizador do navegador:"
-#: ../../mod/admin.php:756
-msgid "Deny"
-msgstr "Negar"
+#: ../../mod/settings.php:959
+msgid "Adult Content"
+msgstr "Conteúdo adulto"
-#: ../../mod/admin.php:758 ../../mod/connedit.php:372
-#: ../../mod/connedit.php:515
-msgid "Block"
-msgstr "Bloquear"
+#: ../../mod/settings.php:959
+msgid ""
+"This channel frequently or regularly publishes adult content. (Please tag "
+"any adult material and/or nudity with #NSFW)"
+msgstr "Este canal frequentemente ou regularmente publica conteúdo adulto. (Por favor marque qualquer material adulto e/ou nudez com #NSFW)"
-#: ../../mod/admin.php:759 ../../mod/connedit.php:372
-#: ../../mod/connedit.php:515
-msgid "Unblock"
-msgstr "Desbloquear"
+#: ../../mod/settings.php:961
+msgid "Security and Privacy Settings"
+msgstr "Configurações de segurança e privacidade"
-#: ../../mod/admin.php:762
-msgid "Register date"
-msgstr "Data de registro"
+#: ../../mod/settings.php:963
+msgid "Your permissions are already configured. Click to view/adjust"
+msgstr "Suas permissões já foram configuradas. Clique para vê-las/ajustá-las"
-#: ../../mod/admin.php:762
-msgid "Last login"
-msgstr "Última autenticação"
+#: ../../mod/settings.php:965
+msgid "Hide my online presence"
+msgstr "Esconda minha presença online"
-#: ../../mod/admin.php:762
-msgid "Expires"
-msgstr "Expira"
+#: ../../mod/settings.php:965
+msgid "Prevents displaying in your profile that you are online"
+msgstr "Previne exibir em seu perfil que você está online"
-#: ../../mod/admin.php:762
-msgid "Service Class"
-msgstr "Classe de serviço"
+#: ../../mod/settings.php:967
+msgid "Simple Privacy Settings:"
+msgstr "Configurações de privacidade simples:"
-#: ../../mod/admin.php:764
+#: ../../mod/settings.php:968
msgid ""
-"Selected users will be deleted!\\n\\nEverything these users had posted on "
-"this site will be permanently deleted!\\n\\nAre you sure?"
-msgstr "Os usuários selecionados serão deletados!\\n\\nTudo o que esses usuários postaram neste site será permanentemente deletado!\\n\\nTem certeza?"
+"Very Public - <em>extremely permissive (should be used with caution)</em>"
+msgstr "Muito público - <em>extremamente permissivo (deve ser usado com cuidado)</em>"
-#: ../../mod/admin.php:765
+#: ../../mod/settings.php:969
msgid ""
-"The user {0} will be deleted!\\n\\nEverything this user has posted on this "
-"site will be permanently deleted!\\n\\nAre you sure?"
-msgstr "O/A usuário/a {0} será deletado/a!\\n\\nTudo o que esse/a usuário/a postou neste site será permanentemente deletado!\\n\\nTem certeza?"
+"Typical - <em>default public, privacy when desired (similar to social "
+"network permissions but with improved privacy)</em>"
+msgstr "Típico - <em>público por padrão, privado quando desejável (similar às permissões de redes sociais, mas com melhor privacidade)</em>"
-#: ../../mod/admin.php:797
-#, php-format
-msgid "%s channel censored/uncensored"
-msgid_plural "%s channelss censored/uncensored"
-msgstr[0] "%s canal censurado/descensurado"
-msgstr[1] "%s canais censurados/descensurados"
+#: ../../mod/settings.php:970
+msgid "Private - <em>default private, never open or public</em>"
+msgstr "Privado - <em>privado por padrão, nunca aberto ou público</em>"
-#: ../../mod/admin.php:804
-#, php-format
-msgid "%s channel deleted"
-msgid_plural "%s channels deleted"
-msgstr[0] "%s canal deletado"
-msgstr[1] "%s canais deletados"
+#: ../../mod/settings.php:971
+msgid "Blocked - <em>default blocked to/from everybody</em>"
+msgstr "Bloqueado - <em>por padrão bloquado de/para todos</em>"
-#: ../../mod/admin.php:823
-msgid "Channel not found"
-msgstr "Canal não encontrado"
+#: ../../mod/settings.php:973
+msgid "Allow others to tag your posts"
+msgstr "Permitir que outros etiquetem suas publicações"
-#: ../../mod/admin.php:834
-#, php-format
-msgid "Channel '%s' deleted"
-msgstr "Canal '%s' deletado"
+#: ../../mod/settings.php:973
+msgid ""
+"Often used by the community to retro-actively flag inappropriate content"
+msgstr "Frequentemente utilizado pela comunidade para retroativamente sinalizar conteúdo inapropriado"
-#: ../../mod/admin.php:844
-#, php-format
-msgid "Channel '%s' uncensored"
-msgstr "Canal '%s' não censurado"
+#: ../../mod/settings.php:975
+msgid "Advanced Privacy Settings"
+msgstr "Configurações de privacidade avançadas"
-#: ../../mod/admin.php:844
-#, php-format
-msgid "Channel '%s' censored"
-msgstr "Canal '%s' censurado"
+#: ../../mod/settings.php:977
+msgid "Expire other channel content after this many days"
+msgstr "Expirar outros conteúdos do canal após este número de dias"
-#: ../../mod/admin.php:887
-msgid "Censor"
-msgstr "Censurar"
+#: ../../mod/settings.php:977
+msgid "0 or blank prevents expiration"
+msgstr "0 ou em branco previne expiração"
-#: ../../mod/admin.php:888
-msgid "Uncensor"
-msgstr "Não censurar"
+#: ../../mod/settings.php:978
+msgid "Maximum Friend Requests/Day:"
+msgstr "Número máximo de requisições de amizade por dia:"
-#: ../../mod/admin.php:891
-msgid "UID"
-msgstr "UID"
+#: ../../mod/settings.php:978
+msgid "May reduce spam activity"
+msgstr "Pode reduzir a frequência de spam"
-#: ../../mod/admin.php:891 ../../mod/settings.php:517
-#: ../../mod/settings.php:543
-msgid "Name"
-msgstr "Nome"
+#: ../../mod/settings.php:979
+msgid "Default Post Permissions"
+msgstr "Permissões padrão de publicação"
-#: ../../mod/admin.php:891 ../../mod/profiles.php:337
-msgid "Address"
-msgstr "Endereço"
+#: ../../mod/settings.php:991
+msgid "Maximum private messages per day from unknown people:"
+msgstr "Máximo número de mensagens privadas por dia de pessoas desconhecidas:"
-#: ../../mod/admin.php:893
-msgid ""
-"Selected channels will be deleted!\\n\\nEverything that was posted in these "
-"channels on this site will be permanently deleted!\\n\\nAre you sure?"
-msgstr "Os canais selecionados serão deletados!\\n\\nTudo que foi postado nesses canais nesse site será permanentemente deletado!\\n\\nVocê tem certeza?"
+#: ../../mod/settings.php:991
+msgid "Useful to reduce spamming"
+msgstr "Útil para reduzir a frequência de spam"
-#: ../../mod/admin.php:894
-msgid ""
-"The channel {0} will be deleted!\\n\\nEverything that was posted in this "
-"channel on this site will be permanently deleted!\\n\\nAre you sure?"
-msgstr "O canal {0} será deletado!\\n\\nTudo o que foi postado nesse canal nesse site será permanentemente deletado!\\n\\nVocê tem certeza?"
+#: ../../mod/settings.php:994
+msgid "Notification Settings"
+msgstr "Configurações de notificação"
-#: ../../mod/admin.php:933
-#, php-format
-msgid "Plugin %s disabled."
-msgstr "Plugin %s desabilitado."
+#: ../../mod/settings.php:995
+msgid "By default post a status message when:"
+msgstr "Por padrão, publicar uma mensagem de status quando:"
-#: ../../mod/admin.php:937
-#, php-format
-msgid "Plugin %s enabled."
-msgstr "Plugin %s habilitado."
+#: ../../mod/settings.php:996
+msgid "accepting a friend request"
+msgstr "aceitar um pedido de amizade"
-#: ../../mod/admin.php:947 ../../mod/admin.php:1149
-msgid "Disable"
-msgstr "Desabilitar"
+#: ../../mod/settings.php:997
+msgid "joining a forum/community"
+msgstr "associar-se a um fórum/comunidade"
-#: ../../mod/admin.php:949 ../../mod/admin.php:1151
-msgid "Enable"
-msgstr "Habilitar"
+#: ../../mod/settings.php:998
+msgid "making an <em>interesting</em> profile change"
+msgstr "modificar algo <em>interessante</em> em seu perfil"
-#: ../../mod/admin.php:975 ../../mod/admin.php:1180
-msgid "Toggle"
-msgstr "Alternar"
+#: ../../mod/settings.php:999
+msgid "Send a notification email when:"
+msgstr "Enviar um e-mail de notificação quando:"
-#: ../../mod/admin.php:983 ../../mod/admin.php:1190
-msgid "Author: "
-msgstr "Autor:"
+#: ../../mod/settings.php:1000
+msgid "You receive a connection request"
+msgstr "Você recebe uma solicitação de conexão"
-#: ../../mod/admin.php:984 ../../mod/admin.php:1191
-msgid "Maintainer: "
-msgstr "Mantenedor:"
+#: ../../mod/settings.php:1001
+msgid "Your connections are confirmed"
+msgstr "Suas conexões são confirmadas"
-#: ../../mod/admin.php:1113
-msgid "No themes found."
-msgstr "Nenhum tema foi encontrado."
+#: ../../mod/settings.php:1002
+msgid "Someone writes on your profile wall"
+msgstr "Alguém escrever no mural do seu perfil"
-#: ../../mod/admin.php:1172
-msgid "Screenshot"
-msgstr "Captura de tela"
+#: ../../mod/settings.php:1003
+msgid "Someone writes a followup comment"
+msgstr "Alguém comenta uma publicação"
-#: ../../mod/admin.php:1220
-msgid "[Experimental]"
-msgstr "[Experimental]"
+#: ../../mod/settings.php:1004
+msgid "You receive a private message"
+msgstr "Você recebeu uma mensagem privada"
-#: ../../mod/admin.php:1221
-msgid "[Unsupported]"
-msgstr "[Desassistido]"
+#: ../../mod/settings.php:1005
+msgid "You receive a friend suggestion"
+msgstr "Você recebe uma sugestão de amizade"
-#: ../../mod/admin.php:1248
-msgid "Log settings updated."
-msgstr "As configurações de log foram atualizadas."
+#: ../../mod/settings.php:1006
+msgid "You are tagged in a post"
+msgstr "Você é mencionado num post"
-#: ../../mod/admin.php:1304
-msgid "Clear"
-msgstr "Limpar"
+#: ../../mod/settings.php:1007
+msgid "You are poked/prodded/etc. in a post"
+msgstr "Você foi cutucado/espetado/etc. numa publicação"
-#: ../../mod/admin.php:1310
-msgid "Debugging"
-msgstr "Depuração"
+#: ../../mod/settings.php:1010
+msgid "Advanced Account/Page Type Settings"
+msgstr "Configurações avançadas de conta/tipo de página"
-#: ../../mod/admin.php:1311
-msgid "Log file"
-msgstr "Arquivo de log"
+#: ../../mod/settings.php:1011
+msgid "Change the behaviour of this account for special situations"
+msgstr "Mudar o comportamento dessa conta em situações especiais"
-#: ../../mod/admin.php:1311
+#: ../../mod/settings.php:1014
msgid ""
-"Must be writable by web server. Relative to your Red top-level directory."
-msgstr "É necessário que o servidor web possa escrever neste arquivo. Relativo ao diretório raiz da Red."
+"Please enable expert mode (in <a href=\"settings/features\">Settings > "
+"Additional features</a>) to adjust!"
+msgstr "Por favor, habilite o modo expert (em <a href=\"settings/features\">Configurações > Recursos adicionais</a>) para ajustar!"
-#: ../../mod/admin.php:1312
-msgid "Log level"
-msgstr "Nível do log"
+#: ../../mod/settings.php:1015
+msgid "Miscellaneous Settings"
+msgstr "Configurações miscelâneas"
+
+#: ../../mod/settings.php:1017
+msgid "Personal menu to display in your channel pages"
+msgstr "Menu pessoal para exibir nas páginas dos seus canais"
+
+#: ../../mod/settings.php:1018
+msgid "Remove this channel"
+msgstr "Remover este canal"
#: ../../mod/poke.php:159
msgid "Poke/Prod"
@@ -4203,13 +4272,13 @@ msgid ""
" and/or create new posts for you?"
msgstr "Deseja autorizar esta aplicação a acessar suas publicações e contatos e/ou criar novas publicações para você?"
-#: ../../mod/post.php:226
+#: ../../mod/post.php:229
msgid ""
"Remote authentication blocked. You are logged into this site locally. Please"
" logout and retry."
msgstr "Autenticação remota bloqueada. Você está autenticado neste site localmente. Por favor, saia e tente novamente."
-#: ../../mod/post.php:257 ../../mod/openid.php:72 ../../mod/openid.php:178
+#: ../../mod/post.php:261 ../../mod/openid.php:72 ../../mod/openid.php:178
#, php-format
msgid "Welcome %s. Remote authentication successful."
msgstr "Bem vindo %s. Autenticação remota realizada com sucesso."
@@ -4227,102 +4296,68 @@ msgstr "Carregar o URL retorna o erro: %1$s"
msgid "Invalid item."
msgstr "Item inválido."
-#: ../../mod/block.php:39 ../../mod/chanview.php:77 ../../mod/page.php:47
-#: ../../mod/home.php:52 ../../mod/wall_upload.php:28
+#: ../../mod/block.php:39 ../../mod/page.php:47 ../../mod/wall_upload.php:28
msgid "Channel not found."
msgstr "O canal não foi encontrado."
-#: ../../mod/block.php:75 ../../mod/page.php:83 ../../mod/display.php:100
-#: ../../mod/help.php:72 ../../index.php:236
+#: ../../mod/block.php:75 ../../mod/page.php:83 ../../mod/display.php:102
+#: ../../mod/help.php:72 ../../index.php:240
msgid "Page not found."
msgstr "Página não encontrada."
-#: ../../mod/profile_photo.php:108
-msgid "Image uploaded but image cropping failed."
-msgstr "A imagem foi enviada, mas não foi possível cortá-la."
-
-#: ../../mod/profile_photo.php:161
-msgid "Image resize failed."
-msgstr "Falha ao modificar o tamanho da imagem."
-
-#: ../../mod/profile_photo.php:205
-msgid ""
-"Shift-reload the page or clear browser cache if the new photo does not "
-"display immediately."
-msgstr "Se a nova foto não aparecer imediatamente, recarregue a página segurando a tecla \"shift\" ou limpe o cache do navegador, "
-
-#: ../../mod/profile_photo.php:232
+#: ../../mod/siteinfo.php:126
#, php-format
-msgid "Image exceeds size limit of %d"
-msgstr "A imagem excede o limite de tamanho de %d"
-
-#: ../../mod/profile_photo.php:241
-msgid "Unable to process image."
-msgstr "Não foi possível processar a imagem."
-
-#: ../../mod/profile_photo.php:290 ../../mod/profile_photo.php:339
-msgid "Photo not available."
-msgstr "A foto não está disponível."
-
-#: ../../mod/profile_photo.php:358
-msgid "Upload File:"
-msgstr "Enviar arquivo:"
-
-#: ../../mod/profile_photo.php:359
-msgid "Select a profile:"
-msgstr "Selecione um perfil:"
-
-#: ../../mod/profile_photo.php:360
-msgid "Upload Profile Photo"
-msgstr "Enviar foto do perfil"
-
-#: ../../mod/profile_photo.php:361
-msgid "Upload"
-msgstr "Enviar"
+msgid "Version %s"
+msgstr "Versão %s"
-#: ../../mod/profile_photo.php:365 ../../mod/settings.php:885
-msgid "or"
-msgstr "ou"
+#: ../../mod/siteinfo.php:145
+msgid "Installed plugins/addons/apps:"
+msgstr "Plugins/complementos/aplicações instalados:"
-#: ../../mod/profile_photo.php:365
-msgid "skip this step"
-msgstr "pule esta etapa"
+#: ../../mod/siteinfo.php:158
+msgid "No installed plugins/addons/apps"
+msgstr "Nenhum plugin/complemento/aplicação instalado"
-#: ../../mod/profile_photo.php:365
-msgid "select a photo from your photo albums"
-msgstr "selecione uma foto do seu álbum de fotos"
+#: ../../mod/siteinfo.php:166
+msgid "Red"
+msgstr "Red"
-#: ../../mod/profile_photo.php:379
-msgid "Crop Image"
-msgstr "Cortar a imagem"
+#: ../../mod/siteinfo.php:167
+msgid ""
+"This is a hub of the Red Matrix - a global cooperative network of "
+"decentralized privacy enhanced websites."
+msgstr "Este é um hub da Red Matrix - uma rede global cooperativa de websites descentralizados com privacidade aprimorada."
-#: ../../mod/profile_photo.php:380
-msgid "Please adjust the image cropping for optimum viewing."
-msgstr "Por favor, ajuste o corte da imagem para a melhor visualização."
+#: ../../mod/siteinfo.php:170
+msgid "Running at web location"
+msgstr "Sendo executado no endereço web"
-#: ../../mod/profile_photo.php:382
-msgid "Done Editing"
-msgstr "Encerrar a edição"
+#: ../../mod/siteinfo.php:171
+msgid ""
+"Please visit <a href=\"http://getzot.com\">GetZot.com</a> to learn more "
+"about the Red Matrix."
+msgstr "Para aprender mais sobre a Red Matrix, visite <a href=\"http://getzot.com\">GetZot.com</a>."
-#: ../../mod/profile_photo.php:425
-msgid "Image uploaded successfully."
-msgstr "A imagem foi enviada com sucesso."
+#: ../../mod/siteinfo.php:172
+msgid "Bug reports and issues: please visit"
+msgstr "Relatos e acompanhamentos de erros podem ser encontrados em"
-#: ../../mod/profile_photo.php:427
-msgid "Image upload failed."
-msgstr "Não foi possível enviar a imagem."
+#: ../../mod/siteinfo.php:175
+msgid ""
+"Suggestions, praise, etc. - please email \"redmatrix\" at librelist - dot "
+"com"
+msgstr "Sugestões, elogios, etc - mande um e-mail para \"redmatrix\" arrôba librelist ponto com"
-#: ../../mod/profile_photo.php:436
-#, php-format
-msgid "Image size reduction [%s] failed."
-msgstr "Não foi possível reduzir o tamanho da imagem [%s]."
+#: ../../mod/siteinfo.php:177
+msgid "Site Administrators"
+msgstr "Administradores do site"
-#: ../../mod/blocks.php:66
+#: ../../mod/blocks.php:62
msgid "Block Name"
msgstr "Nome do bloco"
-#: ../../mod/profiles.php:18 ../../mod/profiles.php:138
-#: ../../mod/profiles.php:168 ../../mod/profiles.php:463
+#: ../../mod/profiles.php:18 ../../mod/profiles.php:165
+#: ../../mod/profiles.php:222 ../../mod/profiles.php:575
msgid "Profile not found."
msgstr "O perfil não foi encontrado."
@@ -4342,231 +4377,245 @@ msgstr "O novo perfil foi criado."
msgid "Profile unavailable to clone."
msgstr "O perfil não está disponível para clonagem."
-#: ../../mod/profiles.php:178
+#: ../../mod/profiles.php:136
+msgid "Profile unavailable to export."
+msgstr "Perfil indisponível para exportar."
+
+#: ../../mod/profiles.php:232
msgid "Profile Name is required."
msgstr "É obrigatório informar o nome do perfil."
-#: ../../mod/profiles.php:294
+#: ../../mod/profiles.php:390
msgid "Marital Status"
msgstr "Estado civil"
-#: ../../mod/profiles.php:298
+#: ../../mod/profiles.php:394
msgid "Romantic Partner"
msgstr "Parceiro/a romântico/a"
-#: ../../mod/profiles.php:302
+#: ../../mod/profiles.php:398
msgid "Likes"
msgstr "Gosta de"
-#: ../../mod/profiles.php:306
+#: ../../mod/profiles.php:402
msgid "Dislikes"
msgstr "Não gosta de"
-#: ../../mod/profiles.php:310
+#: ../../mod/profiles.php:406
msgid "Work/Employment"
msgstr "Trabalho/Emprego"
-#: ../../mod/profiles.php:313
+#: ../../mod/profiles.php:409
msgid "Religion"
msgstr "Religião"
-#: ../../mod/profiles.php:317
+#: ../../mod/profiles.php:413
msgid "Political Views"
msgstr "Posição política"
-#: ../../mod/profiles.php:321
+#: ../../mod/profiles.php:417
msgid "Gender"
msgstr "Gênero"
-#: ../../mod/profiles.php:325
+#: ../../mod/profiles.php:421
msgid "Sexual Preference"
msgstr "Preferência sexual"
-#: ../../mod/profiles.php:329
+#: ../../mod/profiles.php:425
msgid "Homepage"
msgstr "Página web"
-#: ../../mod/profiles.php:333
+#: ../../mod/profiles.php:429
msgid "Interests"
msgstr "Interesses"
-#: ../../mod/profiles.php:344 ../../mod/pubsites.php:25
+#: ../../mod/profiles.php:433 ../../mod/admin.php:868
+msgid "Address"
+msgstr "Endereço"
+
+#: ../../mod/profiles.php:440 ../../mod/pubsites.php:25
msgid "Location"
msgstr "Localização"
-#: ../../mod/profiles.php:427
+#: ../../mod/profiles.php:523
msgid "Profile updated."
msgstr "O perfil foi atualizado."
-#: ../../mod/profiles.php:482
+#: ../../mod/profiles.php:600
msgid "Hide your contact/friend list from viewers of this profile?"
msgstr "Esconder sua lista de contatos/amigos dos visitantes no seu perfil?"
-#: ../../mod/profiles.php:505
+#: ../../mod/profiles.php:642
msgid "Edit Profile Details"
msgstr "Editar os detalhes do perfil"
-#: ../../mod/profiles.php:507
+#: ../../mod/profiles.php:644
msgid "View this profile"
msgstr "Ver este perfil"
-#: ../../mod/profiles.php:508
+#: ../../mod/profiles.php:646
msgid "Change Profile Photo"
msgstr "Mudar a foto do perfil"
-#: ../../mod/profiles.php:509
+#: ../../mod/profiles.php:647
msgid "Create a new profile using these settings"
msgstr "Criar um novo perfil usando estas configurações"
-#: ../../mod/profiles.php:510
+#: ../../mod/profiles.php:648
msgid "Clone this profile"
msgstr "Clonar este perfil"
-#: ../../mod/profiles.php:511
+#: ../../mod/profiles.php:649
msgid "Delete this profile"
msgstr "Excluir este perfil"
-#: ../../mod/profiles.php:512
+#: ../../mod/profiles.php:651
+msgid "Import profile from file"
+msgstr "Importar perfil dum arquivo"
+
+#: ../../mod/profiles.php:652
+msgid "Export profile to file"
+msgstr "Exportar perfil para arquivo"
+
+#: ../../mod/profiles.php:653
msgid "Profile Name:"
msgstr "Nome do perfil:"
-#: ../../mod/profiles.php:513
+#: ../../mod/profiles.php:654
msgid "Your Full Name:"
msgstr "Seu nome completo:"
-#: ../../mod/profiles.php:514
+#: ../../mod/profiles.php:655
msgid "Title/Description:"
msgstr "Título/Descrição:"
-#: ../../mod/profiles.php:515
+#: ../../mod/profiles.php:656
msgid "Your Gender:"
msgstr "Seu gênero:"
-#: ../../mod/profiles.php:516
+#: ../../mod/profiles.php:657
#, php-format
msgid "Birthday (%s):"
msgstr "Aniversário (%s):"
-#: ../../mod/profiles.php:517
+#: ../../mod/profiles.php:658
msgid "Street Address:"
msgstr "Endereço:"
-#: ../../mod/profiles.php:518
+#: ../../mod/profiles.php:659
msgid "Locality/City:"
msgstr "Localidade/Cidade:"
-#: ../../mod/profiles.php:519
+#: ../../mod/profiles.php:660
msgid "Postal/Zip Code:"
msgstr "CEP:"
-#: ../../mod/profiles.php:520
+#: ../../mod/profiles.php:661
msgid "Country:"
msgstr "País:"
-#: ../../mod/profiles.php:521
+#: ../../mod/profiles.php:662
msgid "Region/State:"
msgstr "Região/Estado:"
-#: ../../mod/profiles.php:522
+#: ../../mod/profiles.php:663
msgid "<span class=\"heart\">&hearts;</span> Marital Status:"
msgstr "Estado civil <span class=\"heart\">&hearts;</span>:"
-#: ../../mod/profiles.php:523
+#: ../../mod/profiles.php:664
msgid "Who: (if applicable)"
msgstr "Quem: (se aplicável)"
-#: ../../mod/profiles.php:524
+#: ../../mod/profiles.php:665
msgid "Examples: cathy123, Cathy Williams, cathy@example.com"
msgstr "Exemplos: fulano123, Fulano de Tal, fulano@exemplo.com"
-#: ../../mod/profiles.php:525
+#: ../../mod/profiles.php:666
msgid "Since [date]:"
msgstr "Desde [data]:"
-#: ../../mod/profiles.php:527
+#: ../../mod/profiles.php:668
msgid "Homepage URL:"
msgstr "Endereço do website:"
-#: ../../mod/profiles.php:530
+#: ../../mod/profiles.php:671
msgid "Religious Views:"
msgstr "Orientação religiosa:"
-#: ../../mod/profiles.php:531
+#: ../../mod/profiles.php:672
msgid "Keywords:"
msgstr "Palavras-chave:"
-#: ../../mod/profiles.php:534
+#: ../../mod/profiles.php:675
msgid "Example: fishing photography software"
msgstr "Exemplo: pesca fotografia software"
-#: ../../mod/profiles.php:535
+#: ../../mod/profiles.php:676
msgid "Used in directory listings"
msgstr "Usado em listas de diretório"
-#: ../../mod/profiles.php:536
+#: ../../mod/profiles.php:677
msgid "Tell us about yourself..."
msgstr "Fale um pouco sobre você..."
-#: ../../mod/profiles.php:537
+#: ../../mod/profiles.php:678
msgid "Hobbies/Interests"
msgstr "Hobbies/Interesses"
-#: ../../mod/profiles.php:538
+#: ../../mod/profiles.php:679
msgid "Contact information and Social Networks"
msgstr "Informações de contato e redes sociais"
-#: ../../mod/profiles.php:539
+#: ../../mod/profiles.php:680
msgid "My other channels"
msgstr "Meus outros canais"
-#: ../../mod/profiles.php:540
+#: ../../mod/profiles.php:681
msgid "Musical interests"
msgstr "Interesses musicais"
-#: ../../mod/profiles.php:541
+#: ../../mod/profiles.php:682
msgid "Books, literature"
msgstr "Livros, literatura"
-#: ../../mod/profiles.php:542
+#: ../../mod/profiles.php:683
msgid "Television"
msgstr "Televisão"
-#: ../../mod/profiles.php:543
+#: ../../mod/profiles.php:684
msgid "Film/dance/culture/entertainment"
msgstr "Filme/dança/cultura/entretenimento"
-#: ../../mod/profiles.php:544
+#: ../../mod/profiles.php:685
msgid "Love/romance"
msgstr "Amor/romance"
-#: ../../mod/profiles.php:545
+#: ../../mod/profiles.php:686
msgid "Work/employment"
msgstr "Trabalho/emprego"
-#: ../../mod/profiles.php:546
+#: ../../mod/profiles.php:687
msgid "School/education"
msgstr "Escola/educação"
-#: ../../mod/profiles.php:551
-msgid ""
-"This is your <strong>public</strong> profile.<br />It <strong>may</strong> "
-"be visible to anybody using the internet."
-msgstr "Este é o seu perfil <strong>público</strong>.<br />Ele <strong>pode</strong> estar visível para qualquer um que acesse a Internet."
+#: ../../mod/profiles.php:693
+msgid "This is your default profile."
+msgstr "Este é seu perfil padrão."
-#: ../../mod/profiles.php:561 ../../mod/directory.php:143
+#: ../../mod/profiles.php:704 ../../mod/directory.php:143
#: ../../mod/dirprofile.php:92
msgid "Age: "
msgstr "Idade: "
-#: ../../mod/profiles.php:600
+#: ../../mod/profiles.php:747
msgid "Edit/Manage Profiles"
msgstr "Editar/Administrar perfis"
-#: ../../mod/profiles.php:601
+#: ../../mod/profiles.php:748
msgid "Add profile things"
msgstr "Adicionar coisas ao perfil"
-#: ../../mod/profiles.php:602
+#: ../../mod/profiles.php:749
msgid "Include desirable objects in your profile"
msgstr "Inclua objetos desejáveis no seu perfil"
@@ -4598,7 +4647,7 @@ msgstr "Clique em um contato para adicionar ou remover."
msgid "Visible To"
msgstr "Visível para"
-#: ../../mod/profperm.php:139 ../../mod/connections.php:278
+#: ../../mod/profperm.php:139 ../../mod/connections.php:279
msgid "All Connections"
msgstr "Todas as conexões"
@@ -4692,78 +4741,82 @@ msgstr "Nome da sala de bate-papo"
msgid "%1$s's Chatrooms"
msgstr "Salas de bate-papo de %1$s"
-#: ../../mod/register.php:43
+#: ../../mod/register.php:42
msgid "Maximum daily site registrations exceeded. Please try again tomorrow."
msgstr "Número máximo de novos registros neste site excedido por hoje. Por favor, tente novamente amanhã."
-#: ../../mod/register.php:49
+#: ../../mod/register.php:48
msgid ""
"Please indicate acceptance of the Terms of Service. Registration failed."
msgstr "Por favor, indique a aceitação dos Termos de Serviço. Falha ao registrar."
-#: ../../mod/register.php:77
+#: ../../mod/register.php:82
msgid "Passwords do not match."
msgstr "Senhas não conferem."
-#: ../../mod/register.php:105
+#: ../../mod/register.php:115
msgid ""
"Registration successful. Please check your email for validation "
"instructions."
msgstr "O registro foi bem sucedido. Por favor, verifique seu e-mail para confirmar o registro."
-#: ../../mod/register.php:111
+#: ../../mod/register.php:121
msgid "Your registration is pending approval by the site owner."
msgstr "A aprovação do seu registro está pendente junto ao administrador do site."
-#: ../../mod/register.php:114
+#: ../../mod/register.php:124
msgid "Your registration can not be processed."
msgstr "Não foi possível processar o seu registro."
-#: ../../mod/register.php:147
+#: ../../mod/register.php:161
msgid "Registration on this site/hub is by approval only."
msgstr "O registro neste site/hub requer aprovação."
-#: ../../mod/register.php:148
+#: ../../mod/register.php:162
msgid "<a href=\"pubsites\">Register at another affiliated site/hub</a>"
msgstr "<a href=\"pubsites\">Registre em um outro site/hub afiliado</a>"
-#: ../../mod/register.php:156
+#: ../../mod/register.php:170
msgid ""
"This site has exceeded the number of allowed daily account registrations. "
"Please try again tomorrow."
msgstr "Este site excedeu o número máximo de registros de novas contas. Por favor, tente novamente amanhã."
-#: ../../mod/register.php:167
+#: ../../mod/register.php:181
msgid "Terms of Service"
msgstr "Termos de Serviço"
-#: ../../mod/register.php:173
+#: ../../mod/register.php:187
#, php-format
msgid "I accept the %s for this website"
msgstr "Eu aceito os %s deste website."
-#: ../../mod/register.php:175
+#: ../../mod/register.php:189
#, php-format
msgid "I am over 13 years of age and accept the %s for this website"
msgstr "Eu sou maior de 13 anos e aceito os %s deste website"
-#: ../../mod/register.php:194
+#: ../../mod/register.php:203 ../../mod/admin.php:415
+msgid "Registration"
+msgstr "Registro"
+
+#: ../../mod/register.php:208
msgid "Membership on this site is by invitation only."
msgstr "Novas contas neste site se dão apenas por convite."
-#: ../../mod/register.php:195
+#: ../../mod/register.php:209
msgid "Please enter your invitation code"
msgstr "Por favor, digite o código do seu convite"
-#: ../../mod/register.php:198
+#: ../../mod/register.php:212
msgid "Your email address"
msgstr "Seu endereço de e-mail"
-#: ../../mod/register.php:199
+#: ../../mod/register.php:213
msgid "Choose a password"
msgstr "Escolha uma senha"
-#: ../../mod/register.php:200
+#: ../../mod/register.php:214
msgid "Please re-enter your password"
msgstr "Por favor, digite sua senha novamente"
@@ -4775,39 +4828,45 @@ msgstr "Ausente"
msgid "Online"
msgstr "Online"
-#: ../../mod/regmod.php:12
+#: ../../mod/regmod.php:11
msgid "Please login."
msgstr "Por favor, autentique-se."
-#: ../../mod/cloud.php:112
+#: ../../mod/cloud.php:126
msgid "Red Matrix - Guests: Username: {your email address}, Password: +++"
msgstr "Red Matrix - Visitantes: Usuário: {seu endereço de e-mail}, Senha: +++"
-#: ../../mod/removeme.php:49
+#: ../../mod/removeme.php:29
+msgid ""
+"Channel removals are not allowed within 48 hours of changing the account "
+"password."
+msgstr "A remoção da canais fica desabilitada por 48 horas após uma troca de senha da conta."
+
+#: ../../mod/removeme.php:57
msgid "Remove This Channel"
msgstr "Remover este canal"
-#: ../../mod/removeme.php:50
+#: ../../mod/removeme.php:58
msgid ""
"This will completely remove this channel from the network. Once this has "
"been done it is not recoverable."
msgstr "Isso irá remover completamente este canal da rede. Uma vez que seja feito não será possível recuperá-lo."
-#: ../../mod/removeme.php:51
+#: ../../mod/removeme.php:59 ../../mod/removeaccount.php:59
msgid "Please enter your password for verification:"
msgstr "Por favor, digite a sua senha para verificação:"
-#: ../../mod/removeme.php:52
+#: ../../mod/removeme.php:60
msgid "Remove this channel and all its clones from the network"
msgstr "Remover este canal e todos os seus clones da rede"
-#: ../../mod/removeme.php:52
+#: ../../mod/removeme.php:60
msgid ""
"By default only the instance of the channel located on this hub will be "
"removed from the network"
msgstr "Por padrão, apenas a instância do canal localizada neste hub será removida da rede"
-#: ../../mod/removeme.php:53
+#: ../../mod/removeme.php:61
msgid "Remove Channel"
msgstr "Remover canal"
@@ -4837,15 +4896,15 @@ msgstr "A mensagem de erro foi:"
msgid "Authentication failed."
msgstr "A autenticação falhou."
-#: ../../mod/rmagic.php:78
+#: ../../mod/rmagic.php:82
msgid "Remote Authentication"
msgstr "Autenticação remota"
-#: ../../mod/rmagic.php:79
+#: ../../mod/rmagic.php:83
msgid "Enter your channel address (e.g. channel@example.com)"
msgstr "Entre o endereço do seu canal (e.g. canal@exemplo.com)"
-#: ../../mod/rmagic.php:80
+#: ../../mod/rmagic.php:84
msgid "Authenticate"
msgstr "Autenticar"
@@ -4896,23 +4955,23 @@ msgstr "Canal restrito ou premium"
msgid "No such group"
msgstr "Este grupo não existe"
-#: ../../mod/network.php:119
+#: ../../mod/network.php:118
msgid "Search Results For:"
msgstr "Resultados da busca por:"
-#: ../../mod/network.php:173
+#: ../../mod/network.php:172
msgid "Collection is empty"
msgstr "A coleção está vazia"
-#: ../../mod/network.php:181
+#: ../../mod/network.php:180
msgid "Collection: "
msgstr "Coleção:"
-#: ../../mod/network.php:194
+#: ../../mod/network.php:193
msgid "Connection: "
msgstr "Conexão:"
-#: ../../mod/network.php:197
+#: ../../mod/network.php:196
msgid "Invalid connection."
msgstr "Conexão inválida."
@@ -4924,325 +4983,331 @@ msgstr "Não foi possível acessar o registro do contato."
msgid "Could not locate selected profile."
msgstr "Não foi possível localizar o perfil selecionado."
-#: ../../mod/connections.php:94 ../../mod/connedit.php:131
+#: ../../mod/connections.php:94 ../../mod/connedit.php:132
msgid "Connection updated."
msgstr "A conexão foi atualizada."
-#: ../../mod/connections.php:96 ../../mod/connedit.php:133
+#: ../../mod/connections.php:96 ../../mod/connedit.php:134
msgid "Failed to update connection record."
msgstr "Não foi possível atualizar o registro da conexão."
-#: ../../mod/connections.php:191 ../../mod/connections.php:291
+#: ../../mod/connections.php:191 ../../mod/connections.php:292
msgid "Blocked"
msgstr "Bloqueado"
-#: ../../mod/connections.php:196 ../../mod/connections.php:298
+#: ../../mod/connections.php:196 ../../mod/connections.php:299
msgid "Ignored"
msgstr "Ignorado"
-#: ../../mod/connections.php:201 ../../mod/connections.php:312
+#: ../../mod/connections.php:201 ../../mod/connections.php:313
msgid "Hidden"
msgstr "Oculto"
-#: ../../mod/connections.php:206 ../../mod/connections.php:305
+#: ../../mod/connections.php:206 ../../mod/connections.php:306
msgid "Archived"
msgstr "Arquivado"
-#: ../../mod/connections.php:230 ../../mod/connections.php:244
+#: ../../mod/connections.php:230 ../../mod/connections.php:245
msgid "All"
msgstr "Todos"
-#: ../../mod/connections.php:239 ../../mod/connections.php:319
-msgid "Unconnected"
-msgstr "Não conectado"
-
-#: ../../mod/connections.php:269
+#: ../../mod/connections.php:270
msgid "Suggest new connections"
msgstr "Sugerir novas conexões"
-#: ../../mod/connections.php:272
+#: ../../mod/connections.php:273
msgid "New Connections"
msgstr "Novas conexões"
-#: ../../mod/connections.php:275
+#: ../../mod/connections.php:276
msgid "Show pending (new) connections"
msgstr "Exibir conexões pendentes (novas)"
-#: ../../mod/connections.php:281
+#: ../../mod/connections.php:282
msgid "Show all connections"
msgstr "Exibir todas as conexões"
-#: ../../mod/connections.php:284
+#: ../../mod/connections.php:285
msgid "Unblocked"
msgstr "Não bloqueado"
-#: ../../mod/connections.php:287
+#: ../../mod/connections.php:288
msgid "Only show unblocked connections"
msgstr "Exibir apenas conexões não bloqueadas"
-#: ../../mod/connections.php:294
+#: ../../mod/connections.php:295
msgid "Only show blocked connections"
msgstr "Exibir apenas conexões bloqueadas"
-#: ../../mod/connections.php:301
+#: ../../mod/connections.php:302
msgid "Only show ignored connections"
msgstr "Exibir apenas conexões ignoradas"
-#: ../../mod/connections.php:308
+#: ../../mod/connections.php:309
msgid "Only show archived connections"
msgstr "Exibir apenas conexões arquivadas"
-#: ../../mod/connections.php:315
+#: ../../mod/connections.php:316
msgid "Only show hidden connections"
msgstr "Exibir apenas conexões ocultas"
-#: ../../mod/connections.php:322
-msgid "Only show one-way connections"
-msgstr "Exibir apenas conexões de mão única"
-
-#: ../../mod/connections.php:367
+#: ../../mod/connections.php:371
#, php-format
msgid "%1$s [%2$s]"
msgstr "%1$s [%2$s]"
-#: ../../mod/connections.php:368
-msgid "Edit contact"
-msgstr "Editar o contato"
+#: ../../mod/connections.php:372
+msgid "Edit connection"
+msgstr "Editar conexão"
-#: ../../mod/connections.php:389
+#: ../../mod/connections.php:410
msgid "Search your connections"
msgstr "Pesquisar em suas conexões"
-#: ../../mod/connections.php:390
+#: ../../mod/connections.php:411
msgid "Finding: "
msgstr "Pesquisando: "
-#: ../../mod/rpost.php:86 ../../mod/editpost.php:42
+#: ../../mod/rpost.php:97 ../../mod/editpost.php:42
msgid "Edit post"
msgstr "Editar a publicação"
-#: ../../mod/connedit.php:243
+#: ../../mod/connedit.php:181
+msgid "is now connected to"
+msgstr "está agora conectado a"
+
+#: ../../mod/connedit.php:296
msgid "Could not access address book record."
msgstr "Não foi possível acessar o registro do contato."
-#: ../../mod/connedit.php:257
+#: ../../mod/connedit.php:310
msgid "Refresh failed - channel is currently unavailable."
msgstr "A atualização falhou - o canal está indisponível no momento."
-#: ../../mod/connedit.php:264
+#: ../../mod/connedit.php:317
msgid "Channel has been unblocked"
msgstr "O canal foi desbloqueado"
-#: ../../mod/connedit.php:265
+#: ../../mod/connedit.php:318
msgid "Channel has been blocked"
msgstr "O canal foi bloqueado"
-#: ../../mod/connedit.php:269 ../../mod/connedit.php:281
-#: ../../mod/connedit.php:293 ../../mod/connedit.php:305
-#: ../../mod/connedit.php:320
+#: ../../mod/connedit.php:322 ../../mod/connedit.php:334
+#: ../../mod/connedit.php:346 ../../mod/connedit.php:358
+#: ../../mod/connedit.php:374
msgid "Unable to set address book parameters."
msgstr "Não foi possível definir os parâmetros do contato."
-#: ../../mod/connedit.php:276
+#: ../../mod/connedit.php:329
msgid "Channel has been unignored"
msgstr "O canal não está mais ignorado"
-#: ../../mod/connedit.php:277
+#: ../../mod/connedit.php:330
msgid "Channel has been ignored"
msgstr "O canal passou a estar ignorado"
-#: ../../mod/connedit.php:288
+#: ../../mod/connedit.php:341
msgid "Channel has been unarchived"
msgstr "O canal deixou o arquivo"
-#: ../../mod/connedit.php:289
+#: ../../mod/connedit.php:342
msgid "Channel has been archived"
msgstr "O canal foi colocado no arquivo"
-#: ../../mod/connedit.php:300
+#: ../../mod/connedit.php:353
msgid "Channel has been unhidden"
msgstr "O canal não está mais oculto"
-#: ../../mod/connedit.php:301
+#: ../../mod/connedit.php:354
msgid "Channel has been hidden"
msgstr "O canal passou a estar oculto"
-#: ../../mod/connedit.php:315
+#: ../../mod/connedit.php:369
msgid "Channel has been approved"
msgstr "O canal foi aprovado"
-#: ../../mod/connedit.php:316
+#: ../../mod/connedit.php:370
msgid "Channel has been unapproved"
msgstr "O canal deixou de estar aprovado"
-#: ../../mod/connedit.php:334
+#: ../../mod/connedit.php:398
msgid "Connection has been removed."
msgstr "A conexão foi removida."
-#: ../../mod/connedit.php:354
+#: ../../mod/connedit.php:418
#, php-format
msgid "View %s's profile"
msgstr "Ver o perfil de %s"
-#: ../../mod/connedit.php:358
+#: ../../mod/connedit.php:422
msgid "Refresh Permissions"
msgstr "Atualizar permissões"
-#: ../../mod/connedit.php:361
+#: ../../mod/connedit.php:425
msgid "Fetch updated permissions"
msgstr "Buscar as permissões atualizadas"
-#: ../../mod/connedit.php:365
+#: ../../mod/connedit.php:429
msgid "Recent Activity"
msgstr "Atividades recentes"
-#: ../../mod/connedit.php:368
+#: ../../mod/connedit.php:432
msgid "View recent posts and comments"
msgstr "Exibir publicações e comentários recentes"
-#: ../../mod/connedit.php:375
+#: ../../mod/connedit.php:436 ../../mod/connedit.php:579
+#: ../../mod/admin.php:734
+msgid "Unblock"
+msgstr "Desbloquear"
+
+#: ../../mod/connedit.php:436 ../../mod/connedit.php:579
+#: ../../mod/admin.php:733
+msgid "Block"
+msgstr "Bloquear"
+
+#: ../../mod/connedit.php:439
msgid "Block or Unblock this connection"
msgstr "Bloquear ou desbloquear esta conexão"
-#: ../../mod/connedit.php:379 ../../mod/connedit.php:516
+#: ../../mod/connedit.php:443 ../../mod/connedit.php:580
msgid "Unignore"
msgstr "Não ignorar"
-#: ../../mod/connedit.php:379 ../../mod/connedit.php:516
+#: ../../mod/connedit.php:443 ../../mod/connedit.php:580
#: ../../mod/notifications.php:51
msgid "Ignore"
msgstr "Ignorar"
-#: ../../mod/connedit.php:382
+#: ../../mod/connedit.php:446
msgid "Ignore or Unignore this connection"
msgstr "Ignorar ou deixar de ignorar esta conexão"
-#: ../../mod/connedit.php:385
+#: ../../mod/connedit.php:449
msgid "Unarchive"
msgstr "Não arquivar"
-#: ../../mod/connedit.php:385
+#: ../../mod/connedit.php:449
msgid "Archive"
msgstr "Arquivar"
-#: ../../mod/connedit.php:388
+#: ../../mod/connedit.php:452
msgid "Archive or Unarchive this connection"
msgstr "Colocar ou retirar do arquivo esta conexão"
-#: ../../mod/connedit.php:391
+#: ../../mod/connedit.php:455
msgid "Unhide"
msgstr "Não ocultar"
-#: ../../mod/connedit.php:391
+#: ../../mod/connedit.php:455
msgid "Hide"
msgstr "Ocultar"
-#: ../../mod/connedit.php:394
+#: ../../mod/connedit.php:458
msgid "Hide or Unhide this connection"
msgstr "Ocultar ou deixar de ocultar esta conexão"
-#: ../../mod/connedit.php:401
+#: ../../mod/connedit.php:465
msgid "Delete this connection"
msgstr "Deletar esta conexão"
-#: ../../mod/connedit.php:444 ../../mod/connedit.php:473
+#: ../../mod/connedit.php:508 ../../mod/connedit.php:537
msgid "Approve this connection"
msgstr "Aprovar esta conexão"
-#: ../../mod/connedit.php:444
+#: ../../mod/connedit.php:508
msgid "Accept connection to allow communication"
msgstr "Aceite a conexão para permitir comunicação"
-#: ../../mod/connedit.php:460
+#: ../../mod/connedit.php:524
msgid "Automatic Permissions Settings"
msgstr "Configurações de permissão automáticas"
-#: ../../mod/connedit.php:460
+#: ../../mod/connedit.php:524
#, php-format
msgid "Connections: settings for %s"
msgstr "Conexões: configurações para %s"
-#: ../../mod/connedit.php:464
+#: ../../mod/connedit.php:528
msgid ""
"When receiving a channel introduction, any permissions provided here will be"
" applied to the new connection automatically and the introduction approved. "
"Leave this page if you do not wish to use this feature."
msgstr "Ao receber uma apresentação de um canal, quaisquer permissões definidas aqui serão automaticamente aplicadas à nova conexão e a apresentação aprovada. Deixe esta página se você não quer usar este recurso."
-#: ../../mod/connedit.php:466
+#: ../../mod/connedit.php:530
msgid "Slide to adjust your degree of friendship"
msgstr "Deslize para ajustar seu grau de amizade"
-#: ../../mod/connedit.php:472
+#: ../../mod/connedit.php:536
msgid "inherited"
msgstr "herdado"
-#: ../../mod/connedit.php:474
+#: ../../mod/connedit.php:538
msgid "Connection has no individual permissions!"
msgstr "A conexão não tem permissões individuais!"
-#: ../../mod/connedit.php:475
+#: ../../mod/connedit.php:539
msgid ""
"This may be appropriate based on your <a href=\"settings\">privacy "
"settings</a>, though you may wish to review the \"Advanced Permissions\"."
msgstr "Isso pode ser adequado baseado nas suas <a href=\"settings\">configurações de privacidade</a>, mas talvez você queira rever suas \"Permissões Avançadas\"."
-#: ../../mod/connedit.php:477
+#: ../../mod/connedit.php:541
msgid "Profile Visibility"
msgstr "Visibilidade do perfil"
-#: ../../mod/connedit.php:478
+#: ../../mod/connedit.php:542
#, php-format
msgid ""
"Please choose the profile you would like to display to %s when viewing your "
"profile securely."
msgstr "Por favor, selecione o perfil que você gostaria de exibir para %s quando estiver visualizando seu perfil de modo seguro."
-#: ../../mod/connedit.php:479
+#: ../../mod/connedit.php:543
msgid "Contact Information / Notes"
msgstr "Informações de contato / Notas"
-#: ../../mod/connedit.php:480
+#: ../../mod/connedit.php:544
msgid "Edit contact notes"
msgstr "Editar anotações sobre o contato"
-#: ../../mod/connedit.php:482
+#: ../../mod/connedit.php:546
msgid "Their Settings"
msgstr "Configurações dele/a"
-#: ../../mod/connedit.php:483
+#: ../../mod/connedit.php:547
msgid "My Settings"
msgstr "Minhas configurações"
-#: ../../mod/connedit.php:485
+#: ../../mod/connedit.php:549
msgid "Clear/Disable Automatic Permissions"
msgstr "Limpa/Desabilita permissões automáticas"
-#: ../../mod/connedit.php:486
+#: ../../mod/connedit.php:550
msgid "Forum Members"
-msgstr "Membros do fórum"
+msgstr "Membros de fórum"
-#: ../../mod/connedit.php:487
+#: ../../mod/connedit.php:551
msgid "Soapbox"
msgstr "Caixa de sabão"
-#: ../../mod/connedit.php:488
+#: ../../mod/connedit.php:552
msgid "Full Sharing (typical social network permissions)"
msgstr "Compartilhamento completo (permissões típicas de redes sociais)"
-#: ../../mod/connedit.php:489
+#: ../../mod/connedit.php:553
msgid "Cautious Sharing "
msgstr "Compartilhamento cauteloso"
-#: ../../mod/connedit.php:490
+#: ../../mod/connedit.php:554
msgid "Follow Only"
msgstr "Apenas seguir"
-#: ../../mod/connedit.php:491
+#: ../../mod/connedit.php:555
msgid "Individual Permissions"
msgstr "Permissões individuais"
-#: ../../mod/connedit.php:492
+#: ../../mod/connedit.php:556
msgid ""
"Some permissions may be inherited from your channel <a "
"href=\"settings\">privacy settings</a>, which have higher priority than "
@@ -5250,72 +5315,72 @@ msgid ""
"have no effect."
msgstr "Algumas permissões serão herdadas das <a href=\"settings\">configurações de privacidade</a> do seu canal, e terão prioridade sobre as configurações individuais. Modificar nesta página tais configurações herdadas não surtirá efeito algum."
-#: ../../mod/connedit.php:493
+#: ../../mod/connedit.php:557
msgid "Advanced Permissions"
msgstr "Permissões avançadas"
-#: ../../mod/connedit.php:494
+#: ../../mod/connedit.php:558
msgid "Simple Permissions (select one and submit)"
msgstr "Permissões simples (slecione uma e submeta)"
-#: ../../mod/connedit.php:498
+#: ../../mod/connedit.php:562
#, php-format
msgid "Visit %s's profile - %s"
msgstr "Ver o perfil de %s - %s"
-#: ../../mod/connedit.php:499
+#: ../../mod/connedit.php:563
msgid "Block/Unblock contact"
msgstr "Bloquear/desbloquear o contato"
-#: ../../mod/connedit.php:500
+#: ../../mod/connedit.php:564
msgid "Ignore contact"
msgstr "Ignorar o contato"
-#: ../../mod/connedit.php:501
+#: ../../mod/connedit.php:565
msgid "Repair URL settings"
msgstr "Reparar configurações de URL"
-#: ../../mod/connedit.php:502
+#: ../../mod/connedit.php:566
msgid "View conversations"
msgstr "Ver as conversas"
-#: ../../mod/connedit.php:504
+#: ../../mod/connedit.php:568
msgid "Delete contact"
msgstr "Excluir o contato"
-#: ../../mod/connedit.php:507
+#: ../../mod/connedit.php:571
msgid "Last update:"
msgstr "Última atualização:"
-#: ../../mod/connedit.php:509
+#: ../../mod/connedit.php:573
msgid "Update public posts"
msgstr "Atualizar publicações públicas"
-#: ../../mod/connedit.php:511
+#: ../../mod/connedit.php:575
msgid "Update now"
msgstr "Atualizar agora"
-#: ../../mod/connedit.php:517
+#: ../../mod/connedit.php:581
msgid "Currently blocked"
msgstr "Atualmente bloqueado"
-#: ../../mod/connedit.php:518
+#: ../../mod/connedit.php:582
msgid "Currently ignored"
msgstr "Atualmente ignorado"
-#: ../../mod/connedit.php:519
+#: ../../mod/connedit.php:583
msgid "Currently archived"
msgstr "Atualmente arquivado"
-#: ../../mod/connedit.php:520
+#: ../../mod/connedit.php:584
msgid "Currently pending"
msgstr "Atualmente pendente"
-#: ../../mod/connedit.php:521
+#: ../../mod/connedit.php:585
msgid "Hide this contact from others"
msgstr "Esconda este contato dos demais"
-#: ../../mod/connedit.php:521
+#: ../../mod/connedit.php:585
msgid ""
"Replies/likes to your public posts <strong>may</strong> still be visible"
msgstr "Respostas/reações às suas publicações públicas <strong>podem</strong> continuar visíveis."
@@ -5347,7 +5412,7 @@ msgstr "Atuais delegados da página"
msgid "Potential Delegates"
msgstr "Potenciais delegados"
-#: ../../mod/delegate.php:130 ../../mod/tagrm.php:93 ../../mod/photos.php:908
+#: ../../mod/delegate.php:130 ../../mod/photos.php:940 ../../mod/tagrm.php:93
msgid "Remove"
msgstr "Remover"
@@ -5360,8 +5425,8 @@ msgid "No entries."
msgstr "Sem entradas."
#: ../../mod/search.php:13 ../../mod/directory.php:15
-#: ../../mod/dirprofile.php:9 ../../mod/display.php:9
-#: ../../mod/viewconnections.php:17 ../../mod/photos.php:443
+#: ../../mod/dirprofile.php:9 ../../mod/display.php:9 ../../mod/photos.php:443
+#: ../../mod/viewconnections.php:17
msgid "Public access denied."
msgstr "Acesso público negado."
@@ -5369,19 +5434,19 @@ msgstr "Acesso público negado."
msgid "Gender: "
msgstr "Gênero: "
-#: ../../mod/directory.php:207
+#: ../../mod/directory.php:223
msgid "Finding:"
msgstr "Pesquisando:"
-#: ../../mod/directory.php:215
+#: ../../mod/directory.php:228
msgid "next page"
msgstr "próxima página"
-#: ../../mod/directory.php:215
+#: ../../mod/directory.php:228
msgid "previous page"
msgstr "página anterior"
-#: ../../mod/directory.php:222
+#: ../../mod/directory.php:245
msgid "No entries (some entries may be hidden)."
msgstr "Nenhuma entrada (algumas entradas podem estar escondidas)."
@@ -5413,430 +5478,6 @@ msgstr "Palavras-chave:"
msgid "This site is not a directory server"
msgstr "Este site não é um servidor de diretório"
-#: ../../mod/settings.php:71
-msgid "Name is required"
-msgstr "É necessário informar o nome"
-
-#: ../../mod/settings.php:75
-msgid "Key and Secret are required"
-msgstr "A chave e o segredo são obrigatórios"
-
-#: ../../mod/settings.php:195
-msgid "Passwords do not match. Password unchanged."
-msgstr "As senhas não correspondem. A senha não foi modificada."
-
-#: ../../mod/settings.php:199
-msgid "Empty passwords are not allowed. Password unchanged."
-msgstr "Não é permitido uma senha em branco. A senha não foi modificada."
-
-#: ../../mod/settings.php:212
-msgid "Password changed."
-msgstr "A senha foi modificada."
-
-#: ../../mod/settings.php:214
-msgid "Password update failed. Please try again."
-msgstr "Não foi possível atualizar a senha. Por favor, tente novamente."
-
-#: ../../mod/settings.php:228
-msgid "Not valid email."
-msgstr "Não é um e-mail válido"
-
-#: ../../mod/settings.php:231
-msgid "Protected email address. Cannot change to that email."
-msgstr "Endereço de e-mail protegido. Não é possível mudar para esse e-mail."
-
-#: ../../mod/settings.php:240
-msgid "System failure storing new email. Please try again."
-msgstr "Falha do sistema ao armazenar novo e-mail. Por favor, tente novamente."
-
-#: ../../mod/settings.php:443
-msgid "Settings updated."
-msgstr "As configurações foram atualizadas."
-
-#: ../../mod/settings.php:514 ../../mod/settings.php:540
-#: ../../mod/settings.php:576
-msgid "Add application"
-msgstr "Adicionar aplicação"
-
-#: ../../mod/settings.php:517
-msgid "Name of application"
-msgstr "Nome da aplicação"
-
-#: ../../mod/settings.php:518 ../../mod/settings.php:544
-msgid "Consumer Key"
-msgstr "Chave de consumidor"
-
-#: ../../mod/settings.php:518 ../../mod/settings.php:519
-msgid "Automatically generated - change if desired. Max length 20"
-msgstr "Gerado automaticamente - troque se desejável. Comprimento máximo 20"
-
-#: ../../mod/settings.php:519 ../../mod/settings.php:545
-msgid "Consumer Secret"
-msgstr "Segredo de consumidor"
-
-#: ../../mod/settings.php:520 ../../mod/settings.php:546
-msgid "Redirect"
-msgstr "Redirecionamento"
-
-#: ../../mod/settings.php:520
-msgid ""
-"Redirect URI - leave blank unless your application specifically requires "
-"this"
-msgstr "URI de redirecionamento - deixe em branco, a não ser que sua aplicação especificamente requeira isso"
-
-#: ../../mod/settings.php:521 ../../mod/settings.php:547
-msgid "Icon url"
-msgstr "URL do ícone"
-
-#: ../../mod/settings.php:521
-msgid "Optional"
-msgstr "Opcional"
-
-#: ../../mod/settings.php:532
-msgid "You can't edit this application."
-msgstr "Você não pode editar esta aplicação."
-
-#: ../../mod/settings.php:575
-msgid "Connected Apps"
-msgstr "Aplicações conectadas"
-
-#: ../../mod/settings.php:579
-msgid "Client key starts with"
-msgstr "Chave do cliente começa com"
-
-#: ../../mod/settings.php:580
-msgid "No name"
-msgstr "Sem nome"
-
-#: ../../mod/settings.php:581
-msgid "Remove authorization"
-msgstr "Remover autorização"
-
-#: ../../mod/settings.php:592
-msgid "No feature settings configured"
-msgstr "Não foi definida nenhuma configuração do recurso"
-
-#: ../../mod/settings.php:600
-msgid "Feature Settings"
-msgstr "Configurações do recurso"
-
-#: ../../mod/settings.php:623
-msgid "Account Settings"
-msgstr "Configurações da conta"
-
-#: ../../mod/settings.php:624
-msgid "Password Settings"
-msgstr "Configurações da senha"
-
-#: ../../mod/settings.php:625
-msgid "New Password:"
-msgstr "Nova senha:"
-
-#: ../../mod/settings.php:626
-msgid "Confirm:"
-msgstr "Confirme:"
-
-#: ../../mod/settings.php:626
-msgid "Leave password fields blank unless changing"
-msgstr "Deixe os campos de senha em branco, a não ser que você queira alterá-la"
-
-#: ../../mod/settings.php:628 ../../mod/settings.php:935
-msgid "Email Address:"
-msgstr "Endereço de e-mail:"
-
-#: ../../mod/settings.php:629
-msgid "Remove Account"
-msgstr "Remover conta"
-
-#: ../../mod/settings.php:630
-msgid "Warning: This action is permanent and cannot be reversed."
-msgstr "Atenção: Esta ação é permanente e não pode ser revertida."
-
-#: ../../mod/settings.php:646
-msgid "Off"
-msgstr "Desligado"
-
-#: ../../mod/settings.php:646
-msgid "On"
-msgstr "Ligado"
-
-#: ../../mod/settings.php:653
-msgid "Additional Features"
-msgstr "Recursos adicionais"
-
-#: ../../mod/settings.php:678
-msgid "Connector Settings"
-msgstr "Configurações do conector"
-
-#: ../../mod/settings.php:717
-#, php-format
-msgid "%s - (Experimental)"
-msgstr "%s - (Experimental)"
-
-#: ../../mod/settings.php:747
-msgid "Display Settings"
-msgstr "Configurações de exibição"
-
-#: ../../mod/settings.php:753
-msgid "Display Theme:"
-msgstr "Tema do perfil:"
-
-#: ../../mod/settings.php:754
-msgid "Mobile Theme:"
-msgstr "Tema móvel:"
-
-#: ../../mod/settings.php:755
-msgid "Update browser every xx seconds"
-msgstr "Atualizar navegador a cada xx segundos"
-
-#: ../../mod/settings.php:755
-msgid "Minimum of 10 seconds, no maximum"
-msgstr "Mínimo de 10 segundos, sem máximo"
-
-#: ../../mod/settings.php:756
-msgid "Maximum number of conversations to load at any time:"
-msgstr "Número máximo permitido de conversas carregadas:"
-
-#: ../../mod/settings.php:756
-msgid "Maximum of 100 items"
-msgstr "Máximo de 100 itens"
-
-#: ../../mod/settings.php:757
-msgid "Don't show emoticons"
-msgstr "Não exibir emoticons"
-
-#: ../../mod/settings.php:758
-msgid "System Page Layout Editor - (advanced)"
-msgstr "Editor de layout de página do sistema - (avançado)"
-
-#: ../../mod/settings.php:793
-msgid "Nobody except yourself"
-msgstr "Ninguém exceto você mesmo"
-
-#: ../../mod/settings.php:794
-msgid "Only those you specifically allow"
-msgstr "Apenas quem você der permissão"
-
-#: ../../mod/settings.php:795
-msgid "Anybody in your address book"
-msgstr "Qualquer um nos seus contatos"
-
-#: ../../mod/settings.php:796
-msgid "Anybody on this website"
-msgstr "Qualquer um neste site"
-
-#: ../../mod/settings.php:797
-msgid "Anybody in this network"
-msgstr "Qualquer um nesta rede"
-
-#: ../../mod/settings.php:798
-msgid "Anybody authenticated"
-msgstr "Qualquer um autenticado"
-
-#: ../../mod/settings.php:799
-msgid "Anybody on the internet"
-msgstr "Qualquer um na internet"
-
-#: ../../mod/settings.php:876
-msgid "Publish your default profile in the network directory"
-msgstr "Publicar seu perfil padrão no diretório da rede?"
-
-#: ../../mod/settings.php:881
-msgid "Allow us to suggest you as a potential friend to new members?"
-msgstr "Permitir sugerir você como amigo potencial para outros membros?"
-
-#: ../../mod/settings.php:890
-msgid "Your channel address is"
-msgstr "O endereço do seu canal é"
-
-#: ../../mod/settings.php:924
-msgid "Channel Settings"
-msgstr "Configurações do canal"
-
-#: ../../mod/settings.php:933
-msgid "Basic Settings"
-msgstr "Configurações básicas"
-
-#: ../../mod/settings.php:936
-msgid "Your Timezone:"
-msgstr "Seu fuso horário:"
-
-#: ../../mod/settings.php:937
-msgid "Default Post Location:"
-msgstr "Localização padrão de suas publicações:"
-
-#: ../../mod/settings.php:937
-msgid "Geographical location to display on your posts"
-msgstr "Localização geográfica para exibir em suas publicações"
-
-#: ../../mod/settings.php:938
-msgid "Use Browser Location:"
-msgstr "Usar localizador do navegador:"
-
-#: ../../mod/settings.php:940
-msgid "Adult Content"
-msgstr "Conteúdo adulto"
-
-#: ../../mod/settings.php:940
-msgid ""
-"This channel frequently or regularly publishes adult content. (Please tag "
-"any adult material and/or nudity with #NSFW)"
-msgstr "Este canal frequentemente ou regularmente publica conteúdo adulto. (Por favor marque qualquer material adulto e/ou nudez com #NSFW)"
-
-#: ../../mod/settings.php:942
-msgid "Security and Privacy Settings"
-msgstr "Configurações de segurança e privacidade"
-
-#: ../../mod/settings.php:944
-msgid "Hide my online presence"
-msgstr "Esconda minha presença online"
-
-#: ../../mod/settings.php:944
-msgid "Prevents displaying in your profile that you are online"
-msgstr "Previne exibir em seu perfil que você está online"
-
-#: ../../mod/settings.php:946
-msgid "Simple Privacy Settings:"
-msgstr "Configurações de privacidade simples:"
-
-#: ../../mod/settings.php:947
-msgid ""
-"Very Public - <em>extremely permissive (should be used with caution)</em>"
-msgstr "Muito público - <em>extremamente permissivo (deve ser usado com cuidado)</em>"
-
-#: ../../mod/settings.php:948
-msgid ""
-"Typical - <em>default public, privacy when desired (similar to social "
-"network permissions but with improved privacy)</em>"
-msgstr "Típico - <em>público por padrão, privado quando desejável (similar às permissões de redes sociais, mas com melhor privacidade)</em>"
-
-#: ../../mod/settings.php:949
-msgid "Private - <em>default private, never open or public</em>"
-msgstr "Privado - <em>privado por padrão, nunca aberto ou público</em>"
-
-#: ../../mod/settings.php:950
-msgid "Blocked - <em>default blocked to/from everybody</em>"
-msgstr "Bloqueado - <em>por padrão bloquado de/para todos</em>"
-
-#: ../../mod/settings.php:952
-msgid "Allow others to tag your posts"
-msgstr "Permitir que outros etiquetem suas publicações"
-
-#: ../../mod/settings.php:952
-msgid ""
-"Often used by the community to retro-actively flag inappropriate content"
-msgstr "Frequentemente utilizado pela comunidade para retroativamente sinalizar conteúdo inapropriado"
-
-#: ../../mod/settings.php:954
-msgid "Advanced Privacy Settings"
-msgstr "Configurações de privacidade avançadas"
-
-#: ../../mod/settings.php:956
-msgid "Expire other channel content after this many days"
-msgstr "Expirar outros conteúdos do canal após este número de dias"
-
-#: ../../mod/settings.php:956
-msgid "0 or blank prevents expiration"
-msgstr "0 ou em branco previne expiração"
-
-#: ../../mod/settings.php:957
-msgid "Maximum Friend Requests/Day:"
-msgstr "Número máximo de requisições de amizade por dia:"
-
-#: ../../mod/settings.php:957
-msgid "May reduce spam activity"
-msgstr "Pode reduzir a frequência de spam"
-
-#: ../../mod/settings.php:958
-msgid "Default Post Permissions"
-msgstr "Permissões padrão de publicação"
-
-#: ../../mod/settings.php:970
-msgid "Maximum private messages per day from unknown people:"
-msgstr "Máximo número de mensagens privadas por dia de pessoas desconhecidas:"
-
-#: ../../mod/settings.php:970
-msgid "Useful to reduce spamming"
-msgstr "Útil para reduzir a frequência de spam"
-
-#: ../../mod/settings.php:973
-msgid "Notification Settings"
-msgstr "Configurações de notificação"
-
-#: ../../mod/settings.php:974
-msgid "By default post a status message when:"
-msgstr "Por padrão, publicar uma mensagem de status quando:"
-
-#: ../../mod/settings.php:975
-msgid "accepting a friend request"
-msgstr "aceitar um pedido de amizade"
-
-#: ../../mod/settings.php:976
-msgid "joining a forum/community"
-msgstr "associar-se a um fórum/comunidade"
-
-#: ../../mod/settings.php:977
-msgid "making an <em>interesting</em> profile change"
-msgstr "modificar algo <em>interessante</em> em seu perfil"
-
-#: ../../mod/settings.php:978
-msgid "Send a notification email when:"
-msgstr "Enviar um e-mail de notificação quando:"
-
-#: ../../mod/settings.php:979
-msgid "You receive a connection request"
-msgstr "Você recebe uma solicitação de conexão"
-
-#: ../../mod/settings.php:980
-msgid "Your connections are confirmed"
-msgstr "Suas conexões são confirmadas"
-
-#: ../../mod/settings.php:981
-msgid "Someone writes on your profile wall"
-msgstr "Alguém escrever no mural do seu perfil"
-
-#: ../../mod/settings.php:982
-msgid "Someone writes a followup comment"
-msgstr "Alguém comenta uma publicação"
-
-#: ../../mod/settings.php:983
-msgid "You receive a private message"
-msgstr "Você recebeu uma mensagem privada"
-
-#: ../../mod/settings.php:984
-msgid "You receive a friend suggestion"
-msgstr "Você recebe uma sugestão de amizade"
-
-#: ../../mod/settings.php:985
-msgid "You are tagged in a post"
-msgstr "Você é mencionado num post"
-
-#: ../../mod/settings.php:986
-msgid "You are poked/prodded/etc. in a post"
-msgstr "Você foi cutucado/espetado/etc. numa publicação"
-
-#: ../../mod/settings.php:989
-msgid "Advanced Account/Page Type Settings"
-msgstr "Configurações avançadas de conta/tipo de página"
-
-#: ../../mod/settings.php:990
-msgid "Change the behaviour of this account for special situations"
-msgstr "Mudar o comportamento dessa conta em situações especiais"
-
-#: ../../mod/settings.php:993
-msgid ""
-"Please enable expert mode (in <a href=\"settings/features\">Settings > "
-"Additional features</a>) to adjust!"
-msgstr "Por favor, habilite o modo expert (em <a href=\"settings/features\">Configurações > Recursos adicionais</a>) para ajustar!"
-
-#: ../../mod/settings.php:994
-msgid "Miscellaneous Settings"
-msgstr "Configurações miscelâneas"
-
-#: ../../mod/settings.php:996
-msgid "Personal menu to display in your channel pages"
-msgstr "Menu pessoal para exibir nas páginas dos seus canais"
-
#: ../../mod/setup.php:162
msgid "Red Matrix Server - Setup"
msgstr "Servidor Red Matrix - Configuração"
@@ -5873,7 +5514,7 @@ msgstr "Por favor, veja o arquivo \"install/INSTALL.txt\"."
msgid "System check"
msgstr "Checagem do sistema"
-#: ../../mod/setup.php:261 ../../mod/events.php:380
+#: ../../mod/setup.php:261 ../../mod/events.php:439
msgid "Next"
msgstr "Próximo"
@@ -6114,11 +5755,11 @@ msgid ""
msgstr "Red usa o engine de template Smarty3 para renderizar suas telas. Smarty3 compila templates para PHP para acelerar a renderização."
#: ../../mod/setup.php:517
+#, php-format
msgid ""
"In order to store these compiled templates, the web server needs to have "
-"write access to the directory view/tpl/smarty3/ under the Red top level "
-"folder."
-msgstr "Para guardar os templates compilados, o servidor web necessita de permissão de escrita no diretório view/tpl/smarty3/ dentro do diretório raiz da Red."
+"write access to the directory %s under the Red top level folder."
+msgstr "Para guardar os templates compilados, o servidor web necessita de permissão de escrita no diretório %s no diretório raiz da Red."
#: ../../mod/setup.php:518 ../../mod/setup.php:536
msgid ""
@@ -6127,14 +5768,16 @@ msgid ""
msgstr "Por favor, certifique-se de que o usuário sob o qual o servidor web roda (ex: www-data) tenha permissão de escrita nesse diretório."
#: ../../mod/setup.php:519
+#, php-format
msgid ""
"Note: as a security measure, you should give the web server write access to "
-"view/tpl/smarty3/ only--not the template files (.tpl) that it contains."
-msgstr "Nota: como uma medida de segurança, você deve fornecer ao servidor web permissão de escrita somente em view/tpl/smarty3/ e não aos arquivos de template (.tpl) que ele contém."
+"%s only--not the template files (.tpl) that it contains."
+msgstr "Nota: como uma medida de segurança, você deve fornecer ao servidor web permissão de escrita somente em %s e não aos arquivos de template (.tpl) que ele contém."
#: ../../mod/setup.php:522
-msgid "view/tpl/smarty3 is writable"
-msgstr "view/tpl/smarty3 tem permissão de escrita"
+#, php-format
+msgid "%s is writable"
+msgstr "%s tem permissão de escrita"
#: ../../mod/setup.php:535
msgid ""
@@ -6167,7 +5810,7 @@ msgstr "Essa restrição é incorporada porque publicações públicas suas pode
#: ../../mod/setup.php:572
msgid ""
-"If your certificate is not recognised, members of other sites (who may "
+"If your certificate is not recognized, members of other sites (who may "
"themselves have valid certificates) will get a warning message on their own "
"site complaining about security issues."
msgstr "Se seu certificado não for reconhecido, membros de outros sites (que podem ter certificados válidos) receberão uma mensagem de aviso nos seus próprios sites reclamando de problemas de segurança."
@@ -6299,56 +5942,213 @@ msgstr "Editar página web"
msgid "Delete webpage?"
msgstr "Deletar página web?"
-#: ../../mod/editwebpage.php:187
+#: ../../mod/editwebpage.php:186
msgid "Delete Webpage"
msgstr "Deletar página web"
-#: ../../mod/siteinfo.php:57
+#: ../../mod/photos.php:77
+msgid "Page owner information could not be retrieved."
+msgstr "As informações do dono da pagina não puderam ser obtidas."
+
+#: ../../mod/photos.php:97
+msgid "Album not found."
+msgstr "O álbum não foi encontrado."
+
+#: ../../mod/photos.php:119 ../../mod/photos.php:676
+msgid "Delete Album"
+msgstr "Excluir o álbum"
+
+#: ../../mod/photos.php:159 ../../mod/photos.php:991
+msgid "Delete Photo"
+msgstr "Excluir a foto"
+
+#: ../../mod/photos.php:453
+msgid "No photos selected"
+msgstr "Não foi selecionada nenhuma foto"
+
+#: ../../mod/photos.php:500
+msgid "Access to this item is restricted."
+msgstr "O acesso a este item está restrito."
+
+#: ../../mod/photos.php:574
#, php-format
-msgid "Version %s"
-msgstr "Versão %s"
+msgid "You have used %1$.2f Mbytes of %2$.2f Mbytes photo storage."
+msgstr "Você usou %1$.2f Mbytes de %2$.2f Mbytes de armazenamento de fotos."
-#: ../../mod/siteinfo.php:76
-msgid "Installed plugins/addons/apps:"
-msgstr "Plugins/complementos/aplicações instalados:"
+#: ../../mod/photos.php:577
+#, php-format
+msgid "You have used %1$.2f Mbytes of photo storage."
+msgstr "Você usou %1$.2f Mbytes de armazenamento de fotos."
-#: ../../mod/siteinfo.php:89
-msgid "No installed plugins/addons/apps"
-msgstr "Nenhum plugin/complemento/aplicação instalado"
+#: ../../mod/photos.php:596
+msgid "Upload Photos"
+msgstr "Enviar fotos"
-#: ../../mod/siteinfo.php:97
-msgid "Red"
-msgstr "Red"
+#: ../../mod/photos.php:600 ../../mod/photos.php:671
+msgid "New album name: "
+msgstr "Novo nome de álbum: "
-#: ../../mod/siteinfo.php:98
-msgid ""
-"This is a hub of the Red Matrix - a global cooperative network of "
-"decentralised privacy enhanced websites."
-msgstr "Este é um hub da Red Matrix - uma rede global cooperativa de websites descentralizados com privacidade aprimorada."
+#: ../../mod/photos.php:601
+msgid "or existing album name: "
+msgstr "ou nome de um álbum já existente: "
-#: ../../mod/siteinfo.php:101
-msgid "Running at web location"
-msgstr "Sendo executado no endereço web"
+#: ../../mod/photos.php:602
+msgid "Do not show a status post for this upload"
+msgstr "Não exibir uma publicação de status para este carregamento"
+
+#: ../../mod/photos.php:622
+msgid "Album name could not be decoded"
+msgstr "Não foi possível decodificar o nome do álbum"
+
+#: ../../mod/photos.php:660 ../../mod/photos.php:682 ../../mod/photos.php:1163
+#: ../../mod/photos.php:1178
+msgid "Contact Photos"
+msgstr "Fotos dos contatos"
+
+#: ../../mod/photos.php:684
+msgid "Edit Album"
+msgstr "Editar o álbum"
+
+#: ../../mod/photos.php:690
+msgid "Show Newest First"
+msgstr "Exibir primeiro os mais recentes"
+
+#: ../../mod/photos.php:692
+msgid "Show Oldest First"
+msgstr "Exibir primeiro os mais antigos"
+
+#: ../../mod/photos.php:745 ../../mod/photos.php:1210
+msgid "View Photo"
+msgstr "Ver a foto"
+
+#: ../../mod/photos.php:810
+msgid "Permission denied. Access to this item may be restricted."
+msgstr "Permissão negada. Acesso a este item pode estar restrito."
+
+#: ../../mod/photos.php:812
+msgid "Photo not available"
+msgstr "A foto não está disponível"
+
+#: ../../mod/photos.php:872
+msgid "Use as profile photo"
+msgstr "Usar como uma foto de perfil"
+
+#: ../../mod/photos.php:896
+msgid "View Full Size"
+msgstr "Ver no tamanho real"
+
+#: ../../mod/photos.php:974
+msgid "Edit photo"
+msgstr "Editar a foto"
+
+#: ../../mod/photos.php:976
+msgid "Rotate CW (right)"
+msgstr "Rotacionar H (horário)"
+
+#: ../../mod/photos.php:977
+msgid "Rotate CCW (left)"
+msgstr "Rotacionar AH (anti-horário)"
+
+#: ../../mod/photos.php:980
+msgid "New album name"
+msgstr "Novo nome para o álbum"
-#: ../../mod/siteinfo.php:102
+#: ../../mod/photos.php:983
+msgid "Caption"
+msgstr "Legenda"
+
+#: ../../mod/photos.php:985
+msgid "Add a Tag"
+msgstr "Adicionar uma etiqueta"
+
+#: ../../mod/photos.php:988
msgid ""
-"Please visit <a href=\"http://getzot.com\">GetZot.com</a> to learn more "
-"about the Red Matrix."
-msgstr "Para aprender mais sobre a Red Matrix, visite <a href=\"http://getzot.com\">GetZot.com</a>."
+"Example: @bob, @Barbara_Jensen, @jim@example.com, #California, #camping"
+msgstr "Por exemplo: @joao, @Joao_da_Silva, @joao@exemplo.com, #Minas_Gerais, #acampamento"
-#: ../../mod/siteinfo.php:103
-msgid "Bug reports and issues: please visit"
-msgstr "Relatos e acompanhamentos de erros podem ser encontrados em"
+#: ../../mod/photos.php:1141
+msgid "In This Photo:"
+msgstr "Nesta foto:"
+
+#: ../../mod/photos.php:1216
+msgid "View Album"
+msgstr "Ver álbum"
+
+#: ../../mod/photos.php:1239
+msgid "Recent Photos"
+msgstr "Fotos recentes"
+
+#: ../../mod/profile_photo.php:108
+msgid "Image uploaded but image cropping failed."
+msgstr "A imagem foi enviada, mas não foi possível cortá-la."
+
+#: ../../mod/profile_photo.php:161
+msgid "Image resize failed."
+msgstr "Falha ao modificar o tamanho da imagem."
-#: ../../mod/siteinfo.php:106
+#: ../../mod/profile_photo.php:205
msgid ""
-"Suggestions, praise, etc. - please email \"redmatrix\" at librelist - dot "
-"com"
-msgstr "Sugestões, elogios, etc - mande um e-mail para \"redmatrix\" arrôba librelist ponto com"
+"Shift-reload the page or clear browser cache if the new photo does not "
+"display immediately."
+msgstr "Se a nova foto não aparecer imediatamente, recarregue a página segurando a tecla \"shift\" ou limpe o cache do navegador, "
-#: ../../mod/siteinfo.php:108
-msgid "Site Administrators"
-msgstr "Administradores do site"
+#: ../../mod/profile_photo.php:232
+#, php-format
+msgid "Image exceeds size limit of %d"
+msgstr "A imagem excede o limite de tamanho de %d"
+
+#: ../../mod/profile_photo.php:241
+msgid "Unable to process image."
+msgstr "Não foi possível processar a imagem."
+
+#: ../../mod/profile_photo.php:290 ../../mod/profile_photo.php:339
+msgid "Photo not available."
+msgstr "A foto não está disponível."
+
+#: ../../mod/profile_photo.php:358
+msgid "Upload File:"
+msgstr "Enviar arquivo:"
+
+#: ../../mod/profile_photo.php:359
+msgid "Select a profile:"
+msgstr "Selecione um perfil:"
+
+#: ../../mod/profile_photo.php:360
+msgid "Upload Profile Photo"
+msgstr "Enviar foto do perfil"
+
+#: ../../mod/profile_photo.php:365
+msgid "skip this step"
+msgstr "pule esta etapa"
+
+#: ../../mod/profile_photo.php:365
+msgid "select a photo from your photo albums"
+msgstr "selecione uma foto do seu álbum de fotos"
+
+#: ../../mod/profile_photo.php:381
+msgid "Crop Image"
+msgstr "Cortar a imagem"
+
+#: ../../mod/profile_photo.php:382
+msgid "Please adjust the image cropping for optimum viewing."
+msgstr "Por favor, ajuste o corte da imagem para a melhor visualização."
+
+#: ../../mod/profile_photo.php:384
+msgid "Done Editing"
+msgstr "Encerrar a edição"
+
+#: ../../mod/profile_photo.php:427
+msgid "Image uploaded successfully."
+msgstr "A imagem foi enviada com sucesso."
+
+#: ../../mod/profile_photo.php:429
+msgid "Image upload failed."
+msgstr "Não foi possível enviar a imagem."
+
+#: ../../mod/profile_photo.php:438
+#, php-format
+msgid "Image size reduction [%s] failed."
+msgstr "Não foi possível reduzir o tamanho da imagem [%s]."
#: ../../mod/sources.php:32
msgid "Failed to create source. No channel selected."
@@ -6389,7 +6189,7 @@ msgid "Leave blank to import all public content"
msgstr "Deixe em branco para importar todo o conteúdo público"
#: ../../mod/sources.php:103 ../../mod/sources.php:137
-#: ../../mod/new_channel.php:110
+#: ../../mod/new_channel.php:112
msgid "Channel Name"
msgstr "Nome do canal"
@@ -6417,69 +6217,77 @@ msgstr "Não foi possível remover a fonte."
msgid "- select -"
msgstr "- selecionar -"
-#: ../../mod/events.php:72
+#: ../../mod/events.php:91
msgid "Event title and start time are required."
msgstr "O título do evento e a hora de início são obrigatórios."
-#: ../../mod/events.php:310
+#: ../../mod/events.php:105
+msgid "Event not found."
+msgstr "Evento não encontrado."
+
+#: ../../mod/events.php:369
msgid "l, F j"
msgstr "l, F j"
-#: ../../mod/events.php:332
+#: ../../mod/events.php:391
msgid "Edit event"
msgstr "Editar o evento"
-#: ../../mod/events.php:378
+#: ../../mod/events.php:437
msgid "Create New Event"
msgstr "Criar um novo evento"
-#: ../../mod/events.php:379
+#: ../../mod/events.php:438
msgid "Previous"
msgstr "Anterior"
-#: ../../mod/events.php:450
+#: ../../mod/events.php:536
msgid "hour:minute"
msgstr "hora:minuto"
-#: ../../mod/events.php:470
+#: ../../mod/events.php:556
msgid "Event details"
msgstr "Detalhes do evento"
-#: ../../mod/events.php:471
+#: ../../mod/events.php:557
#, php-format
-msgid "Format is %s %s. Starting date and Title are required."
-msgstr "O formato é %s %s. A data de início e o título são obrigatórios."
+msgid "Format is %s %s."
+msgstr "O formato é %s %s."
+
+#: ../../mod/events.php:558
+msgid "Starting date and Title are required."
+msgstr "Data de início e título são obrigatórios."
-#: ../../mod/events.php:473
+#: ../../mod/events.php:562
msgid "Event Starts:"
msgstr "Início do evento:"
-#: ../../mod/events.php:473 ../../mod/events.php:487 ../../mod/appman.php:91
+#: ../../mod/events.php:562 ../../mod/events.php:581 ../../mod/appman.php:91
#: ../../mod/appman.php:92
msgid "Required"
msgstr "Obrigatório"
-#: ../../mod/events.php:476
+#: ../../mod/events.php:570
msgid "Finish date/time is not known or not relevant"
msgstr "A data/hora de término não é conhecida ou não é relevante"
-#: ../../mod/events.php:478
+#: ../../mod/events.php:572
msgid "Event Finishes:"
msgstr "Término do evento:"
-#: ../../mod/events.php:481
+#: ../../mod/events.php:575
msgid "Adjust for viewer timezone"
msgstr "Ajustar para o fuso horário do visualizador"
-#: ../../mod/events.php:483
+#: ../../mod/events.php:577
msgid "Description:"
msgstr "Descrição:"
-#: ../../mod/events.php:487
+#: ../../mod/events.php:581
msgid "Title:"
msgstr "Título:"
-#: ../../mod/events.php:489
+#: ../../mod/events.php:583
msgid "Share this event"
msgstr "Compartilhar este evento"
@@ -6491,46 +6299,30 @@ msgstr "Permissão negada."
msgid "File not found."
msgstr "O arquivo não foi encontrado."
-#: ../../mod/filestorage.php:121
+#: ../../mod/filestorage.php:122
msgid "Edit file permissions"
msgstr "Editar permissões do arquivo"
-#: ../../mod/filestorage.php:129
+#: ../../mod/filestorage.php:131
msgid "Set/edit permissions"
msgstr "Definir/editar permissões"
-#: ../../mod/filestorage.php:130
+#: ../../mod/filestorage.php:132
msgid "Include all files and sub folders"
msgstr "Incluir todos os arquivos e subpastas"
-#: ../../mod/filestorage.php:131
+#: ../../mod/filestorage.php:133
msgid "Return to file list"
msgstr "Retornar à lista de arquivos"
-#: ../../mod/filestorage.php:133
+#: ../../mod/filestorage.php:135
msgid "Copy/paste this code to attach file to a post"
msgstr "Copiar/colar este código para anexar um arquivo a uma publicação"
-#: ../../mod/filestorage.php:134
+#: ../../mod/filestorage.php:136
msgid "Copy/paste this URL to link file from a web page"
msgstr "Copiar/colar este URL para linkar para o arquivo em uma página web"
-#: ../../mod/filestorage.php:171
-msgid "Download"
-msgstr "Baixar"
-
-#: ../../mod/filestorage.php:177
-msgid "Used: "
-msgstr "Utilizado:"
-
-#: ../../mod/filestorage.php:178
-msgid "[directory]"
-msgstr "[diretório]"
-
-#: ../../mod/filestorage.php:180
-msgid "Limit: "
-msgstr "Limite:"
-
#: ../../mod/follow.php:25
msgid "Channel added."
msgstr "Canal adicionado."
@@ -6607,7 +6399,7 @@ msgstr "Membros"
msgid "All Connected Channels"
msgstr "Todas os canais conectados"
-#: ../../mod/group.php:231
+#: ../../mod/group.php:233
msgid "Click on a channel to add or remove."
msgstr "Clique em um canal para adicionar ou remover."
@@ -6620,7 +6412,7 @@ msgstr "%1$s marcou %3$s de %2$s com %4$s"
msgid "Help:"
msgstr "Ajuda:"
-#: ../../mod/help.php:69 ../../index.php:233
+#: ../../mod/help.php:69 ../../index.php:237
msgid "Not Found"
msgstr "Não encontrada"
@@ -6636,110 +6428,750 @@ msgstr "Remover a etiqueta de item"
msgid "Select a tag to remove: "
msgstr "Selecione uma etiqueta para remover: "
-#: ../../mod/home.php:91
+#: ../../mod/admin.php:52
+msgid "Theme settings updated."
+msgstr "As configurações de tema foram atualizadas."
+
+#: ../../mod/admin.php:97 ../../mod/admin.php:413
+msgid "Site"
+msgstr "Site"
+
+#: ../../mod/admin.php:98
+msgid "Accounts"
+msgstr "Contas"
+
+#: ../../mod/admin.php:99 ../../mod/admin.php:860
+msgid "Channels"
+msgstr "Canais"
+
+#: ../../mod/admin.php:100 ../../mod/admin.php:951 ../../mod/admin.php:993
+msgid "Plugins"
+msgstr "Plugins"
+
+#: ../../mod/admin.php:101 ../../mod/admin.php:1156 ../../mod/admin.php:1192
+msgid "Themes"
+msgstr "Temas"
+
+#: ../../mod/admin.php:102 ../../mod/admin.php:515
+msgid "Server"
+msgstr "Servidor"
+
+#: ../../mod/admin.php:103
+msgid "Profile Config"
+msgstr "Configuração de perfis"
+
+#: ../../mod/admin.php:104
+msgid "DB updates"
+msgstr "Atualizações do Banco de Dados"
+
+#: ../../mod/admin.php:118 ../../mod/admin.php:125 ../../mod/admin.php:1279
+msgid "Logs"
+msgstr "Logs"
+
+#: ../../mod/admin.php:124
+msgid "Plugin Features"
+msgstr "Recursos dos plugins"
+
+#: ../../mod/admin.php:126
+msgid "User registrations waiting for confirmation"
+msgstr "Registros de usuário aguardando confirmação"
+
+#: ../../mod/admin.php:206
+msgid "Message queues"
+msgstr "Filas de mensagem"
+
+#: ../../mod/admin.php:211 ../../mod/admin.php:412 ../../mod/admin.php:514
+#: ../../mod/admin.php:723 ../../mod/admin.php:859 ../../mod/admin.php:950
+#: ../../mod/admin.php:992 ../../mod/admin.php:1155 ../../mod/admin.php:1191
+#: ../../mod/admin.php:1278
+msgid "Administration"
+msgstr "Administração"
+
+#: ../../mod/admin.php:212
+msgid "Summary"
+msgstr "Resumo"
+
+#: ../../mod/admin.php:214
+msgid "Registered users"
+msgstr "Usuários registrados"
+
+#: ../../mod/admin.php:216 ../../mod/admin.php:518
+msgid "Pending registrations"
+msgstr "Registros pendentes"
+
+#: ../../mod/admin.php:217
+msgid "Version"
+msgstr "Versão"
+
+#: ../../mod/admin.php:219 ../../mod/admin.php:519
+msgid "Active plugins"
+msgstr "Plugins ativos"
+
+#: ../../mod/admin.php:333
+msgid "Site settings updated."
+msgstr "As configurações de site foram atualizadas."
+
+#: ../../mod/admin.php:364
+msgid "No special theme for accessibility"
+msgstr "Sem tema especial para acessibilidade"
+
+#: ../../mod/admin.php:393
+msgid "Yes - with approval"
+msgstr "Sim - pendente aprovação"
+
+#: ../../mod/admin.php:399
+msgid "My site is not a public server"
+msgstr "Meu site não é um servidor público"
+
+#: ../../mod/admin.php:400
+msgid "My site has paid access only"
+msgstr "Meu site oferece somente acesso pago"
+
+#: ../../mod/admin.php:401
+msgid "My site has free access only"
+msgstr "Meu site oferece somente acesso gratuito"
+
+#: ../../mod/admin.php:402
+msgid "My site offers free accounts with optional paid upgrades"
+msgstr "Meu site oferece contas gratuitas com recursos adicionais pagos"
+
+#: ../../mod/admin.php:416
+msgid "File upload"
+msgstr "Carregamento de arquivos"
+
+#: ../../mod/admin.php:417
+msgid "Policies"
+msgstr "Políticas"
+
+#: ../../mod/admin.php:422
+msgid "Site name"
+msgstr "Nome do site"
+
+#: ../../mod/admin.php:423
+msgid "Banner/Logo"
+msgstr "Cartaz/Logo"
+
+#: ../../mod/admin.php:424
+msgid "Administrator Information"
+msgstr "Informações do Administrador"
+
+#: ../../mod/admin.php:424
+msgid ""
+"Contact information for site administrators. Displayed on siteinfo page. "
+"BBCode can be used here"
+msgstr "Informações de contato com administradores do site. Exibida na página siteinfo. BBCode pode ser usado aqui."
+
+#: ../../mod/admin.php:425
+msgid "System language"
+msgstr "Idioma do sistema"
+
+#: ../../mod/admin.php:426
+msgid "System theme"
+msgstr "Tema do sistema"
+
+#: ../../mod/admin.php:426
+msgid ""
+"Default system theme - may be over-ridden by user profiles - <a href='#' "
+"id='cnftheme'>change theme settings</a>"
+msgstr "Tema padrão do sistema - pode ser sobrescrito por perfis de usuário - <a href='#' id='cnftheme'>mudar configurações do tema</a>"
+
+#: ../../mod/admin.php:427
+msgid "Mobile system theme"
+msgstr "Tema do sistema móvel"
+
+#: ../../mod/admin.php:427
+msgid "Theme for mobile devices"
+msgstr "Tema para dispositivos móveis"
+
+#: ../../mod/admin.php:428
+msgid "Accessibility system theme"
+msgstr "Tema do sistema acessível"
+
+#: ../../mod/admin.php:428
+msgid "Accessibility theme"
+msgstr "Tema acessível"
+
+#: ../../mod/admin.php:430
+msgid "Enable Diaspora Protocol"
+msgstr "Habilitar protocolo Diaspora"
+
+#: ../../mod/admin.php:430
+msgid "Communicate with Diaspora and Friendica - experimental"
+msgstr "Comunicar com Diaspora e Friendica - experimental"
+
+#: ../../mod/admin.php:431
+msgid "Allow Feeds as Connections"
+msgstr "Permitir Feeds como conexões"
+
+#: ../../mod/admin.php:431
+msgid "(Heavy system resource usage)"
+msgstr "(Alto uso de recursos do sistema)"
+
+#: ../../mod/admin.php:432
+msgid "Maximum image size"
+msgstr "Tamanho máximo de imagens"
+
+#: ../../mod/admin.php:432
+msgid ""
+"Maximum size in bytes of uploaded images. Default is 0, which means no "
+"limits."
+msgstr "Tamanho máximo em bytes de imagens carregadas. O padrão é 0, significando sem limites."
+
+#: ../../mod/admin.php:433
+msgid "Does this site allow new member registration?"
+msgstr "Este site permite o registro de novos membros?"
+
+#: ../../mod/admin.php:434
+msgid "Which best describes the types of account offered by this hub?"
+msgstr "Qual descreve melhor os tipos de conta oferecidas por este hub?"
+
+#: ../../mod/admin.php:435
+msgid "Register text"
+msgstr "Texto de registro"
+
+#: ../../mod/admin.php:435
+msgid "Will be displayed prominently on the registration page."
+msgstr "Será exibido proeminentemente na página de registro."
+
+#: ../../mod/admin.php:436
+msgid "Accounts abandoned after x days"
+msgstr "Contas abandonadas após x dias"
+
+#: ../../mod/admin.php:436
+msgid ""
+"Will not waste system resources polling external sites for abandonded "
+"accounts. Enter 0 for no time limit."
+msgstr "Não gastará recursos do sistema coletando de sites externos para contas abandonadas. Use 0 para sem limite de tempo."
+
+#: ../../mod/admin.php:437
+msgid "Allowed friend domains"
+msgstr "Domínios permitidos para amigos"
+
+#: ../../mod/admin.php:437
+msgid ""
+"Comma separated list of domains which are allowed to establish friendships "
+"with this site. Wildcards are accepted. Empty to allow any domains"
+msgstr "Lista, separada por vírgulas, de domínios permitidos para estabelecer amizades com este site. <em>Wildcards</em> são aceitas. Vazio para permitir qualquer domínio"
+
+#: ../../mod/admin.php:438
+msgid "Allowed email domains"
+msgstr "Domínios permitidos de e-mail"
+
+#: ../../mod/admin.php:438
+msgid ""
+"Comma separated list of domains which are allowed in email addresses for "
+"registrations to this site. Wildcards are accepted. Empty to allow any "
+"domains"
+msgstr "Lista, separada por vírgulas, de domínios permitidos em endereços de e-mail para registros nesse site. <em>Wildcards</em> são aceitas. Vazio para permitir qualquer domínio"
+
+#: ../../mod/admin.php:439
+msgid "Block public"
+msgstr "Bloquear público"
+
+#: ../../mod/admin.php:439
+msgid ""
+"Check to block public access to all otherwise public personal pages on this "
+"site unless you are currently logged in."
+msgstr "Marque para bloquear o acesso público a todas as páginas pessoais que seriam públicas, a não ser que se esteja autenticado."
+
+#: ../../mod/admin.php:440
+msgid "Verify Email Addresses"
+msgstr "Verificar endereços de email"
+
+#: ../../mod/admin.php:440
+msgid ""
+"Check to verify email addresses used in account registration (recommended)."
+msgstr "Clique para verificar endereços de email usados no registro de contas (recomendado)."
+
+#: ../../mod/admin.php:441
+msgid "Force publish"
+msgstr "Forçar publicação"
+
+#: ../../mod/admin.php:441
+msgid ""
+"Check to force all profiles on this site to be listed in the site directory."
+msgstr "Marque para forçar todos os perfis neste site a aparecerem listados no diretório do site."
+
+#: ../../mod/admin.php:442
+msgid "Disable discovery tab"
+msgstr "Desabilitar a aba \"Descubra\""
+
+#: ../../mod/admin.php:442
+msgid ""
+"Remove the tab in the network view with public content pulled from sources "
+"chosen for this site."
+msgstr "Remove da visualização de rede a aba com conteúdos públicos obtidos de fontes escolhidas para esse site."
+
+#: ../../mod/admin.php:443
+msgid "No login on Homepage"
+msgstr "Sem formulário de autenticação na página inicial"
+
+#: ../../mod/admin.php:443
+msgid ""
+"Check to hide the login form from your sites homepage when visitors arrive "
+"who are not logged in (e.g. when you put the content of the homepage in via "
+"the site channel)."
+msgstr "Marque para esconder o formulário de autenticação da página inicial do seu site quando visitantes chegarem sem estar autenticados (e.g. quando você inclui os conteúdos da página inicial através do canal do site)."
+
+#: ../../mod/admin.php:445
+msgid "Proxy user"
+msgstr "Usuário do proxy"
+
+#: ../../mod/admin.php:446
+msgid "Proxy URL"
+msgstr "URL do proxy"
+
+#: ../../mod/admin.php:447
+msgid "Network timeout"
+msgstr "Timeout da rede"
+
+#: ../../mod/admin.php:447
+msgid "Value is in seconds. Set to 0 for unlimited (not recommended)."
+msgstr "Valor em segundos. Use 0 para ilimitado (não recomendado)."
+
+#: ../../mod/admin.php:448
+msgid "Delivery interval"
+msgstr "Intervalo de entrega"
+
+#: ../../mod/admin.php:448
+msgid ""
+"Delay background delivery processes by this many seconds to reduce system "
+"load. Recommend: 4-5 for shared hosts, 2-3 for virtual private servers. 0-1 "
+"for large dedicated servers."
+msgstr "Atrase os processos de entrega em segundo plano por este número de segundos para reduzir a carga do sistema. Recomendado: 4-5 para hosts compartilhados, 2-3 para servidores virtuais privados. 0-1 para grandes servidores dedicados."
+
+#: ../../mod/admin.php:449
+msgid "Poll interval"
+msgstr "Intervalo de coleta"
+
+#: ../../mod/admin.php:449
+msgid ""
+"Delay background polling processes by this many seconds to reduce system "
+"load. If 0, use delivery interval."
+msgstr "Atrase os processos de coleta em segundo plano por este número de segundos para reduzir a carga do sistema. Se 0, use o intervalo de entrega."
+
+#: ../../mod/admin.php:450
+msgid "Maximum Load Average"
+msgstr "Carga média máxima"
+
+#: ../../mod/admin.php:450
+msgid ""
+"Maximum system load before delivery and poll processes are deferred - "
+"default 50."
+msgstr "Carga máxima do sistema antes de adiar processos de entrega e coleta - padrão 50."
+
+#: ../../mod/admin.php:506
+msgid "No server found"
+msgstr "Nenhum servidor foi encontrado"
+
+#: ../../mod/admin.php:513 ../../mod/admin.php:737
+msgid "ID"
+msgstr "ID"
+
+#: ../../mod/admin.php:513
+msgid "for channel"
+msgstr "para o canal"
+
+#: ../../mod/admin.php:513
+msgid "on server"
+msgstr "no servidor"
+
+#: ../../mod/admin.php:513
+msgid "Status"
+msgstr "Status"
+
+#: ../../mod/admin.php:534
+msgid "Update has been marked successful"
+msgstr "A atualização foi designada bem sucedida"
+
+#: ../../mod/admin.php:544
#, php-format
-msgid "Welcome to %s"
-msgstr "Bem-vindo(a) a %s"
+msgid "Executing %s failed. Check system logs."
+msgstr "Execução de %s falhou. Verifique os logs do sistema."
+
+#: ../../mod/admin.php:547
+#, php-format
+msgid "Update %s was successfully applied."
+msgstr "A atualização %s foi aplicada com sucesso."
+
+#: ../../mod/admin.php:551
+#, php-format
+msgid "Update %s did not return a status. Unknown if it succeeded."
+msgstr "A atualização %s não retornou um status. Situação incerta quando ao seu sucesso."
+
+#: ../../mod/admin.php:554
+#, php-format
+msgid "Update function %s could not be found."
+msgstr "A função de atualização %s não foi encontrada."
+
+#: ../../mod/admin.php:569
+msgid "No failed updates."
+msgstr "Nenhuma falha nas atualizações."
+
+#: ../../mod/admin.php:573
+msgid "Failed Updates"
+msgstr "Falha nas atualizações"
+
+#: ../../mod/admin.php:575
+msgid "Mark success (if update was manually applied)"
+msgstr "Marque sucesso (se a atualização foi aplicada manualmente)"
+
+#: ../../mod/admin.php:576
+msgid "Attempt to execute this update step automatically"
+msgstr "Tente executar este passo da atualização automaticamente"
+
+#: ../../mod/admin.php:602
+#, php-format
+msgid "%s user blocked/unblocked"
+msgid_plural "%s users blocked/unblocked"
+msgstr[0] "%s usuário foi bloqueado/desbloqueado"
+msgstr[1] "%s usuários foram bloqueados/desbloqueados"
+
+#: ../../mod/admin.php:609
+#, php-format
+msgid "%s user deleted"
+msgid_plural "%s users deleted"
+msgstr[0] "%s usuário foi deletado"
+msgstr[1] "%s usuários foram deletados"
+
+#: ../../mod/admin.php:638
+msgid "Account not found"
+msgstr "A conta não foi encontrada"
+
+#: ../../mod/admin.php:658
+#, php-format
+msgid "User '%s' unblocked"
+msgstr "O usuário/a '%s' foi desbloqueado/a"
+
+#: ../../mod/admin.php:658
+#, php-format
+msgid "User '%s' blocked"
+msgstr "O usuário/a '%s' foi bloqueado/a"
+
+#: ../../mod/admin.php:724 ../../mod/admin.php:736
+msgid "Users"
+msgstr "Usuários"
+
+#: ../../mod/admin.php:726 ../../mod/admin.php:862
+msgid "select all"
+msgstr "selecionar tudo"
+
+#: ../../mod/admin.php:727
+msgid "User registrations waiting for confirm"
+msgstr "Registros de usuário aguardando confirmação"
+
+#: ../../mod/admin.php:728
+msgid "Request date"
+msgstr "Data de requisição"
+
+#: ../../mod/admin.php:729
+msgid "No registrations."
+msgstr "Nenhum registro."
+
+#: ../../mod/admin.php:730
+msgid "Approve"
+msgstr "Aprovar"
+
+#: ../../mod/admin.php:731
+msgid "Deny"
+msgstr "Negar"
+
+#: ../../mod/admin.php:737
+msgid "Register date"
+msgstr "Data de registro"
+
+#: ../../mod/admin.php:737
+msgid "Last login"
+msgstr "Última autenticação"
+
+#: ../../mod/admin.php:737
+msgid "Expires"
+msgstr "Expira"
+
+#: ../../mod/admin.php:737
+msgid "Service Class"
+msgstr "Classe de serviço"
+
+#: ../../mod/admin.php:739
+msgid ""
+"Selected users will be deleted!\\n\\nEverything these users had posted on "
+"this site will be permanently deleted!\\n\\nAre you sure?"
+msgstr "Os usuários selecionados serão deletados!\\n\\nTudo o que esses usuários postaram neste site será permanentemente deletado!\\n\\nTem certeza?"
+
+#: ../../mod/admin.php:740
+msgid ""
+"The user {0} will be deleted!\\n\\nEverything this user has posted on this "
+"site will be permanently deleted!\\n\\nAre you sure?"
+msgstr "O/A usuário/a {0} será deletado/a!\\n\\nTudo o que esse/a usuário/a postou neste site será permanentemente deletado!\\n\\nTem certeza?"
+
+#: ../../mod/admin.php:773
+#, php-format
+msgid "%s channel censored/uncensored"
+msgid_plural "%s channels censored/uncensored"
+msgstr[0] "%s canal censurado/descensurado"
+msgstr[1] "%s canais censurados/descensurados"
+
+#: ../../mod/admin.php:780
+#, php-format
+msgid "%s channel deleted"
+msgid_plural "%s channels deleted"
+msgstr[0] "%s canal deletado"
+msgstr[1] "%s canais deletados"
+
+#: ../../mod/admin.php:799
+msgid "Channel not found"
+msgstr "Canal não encontrado"
+
+#: ../../mod/admin.php:810
+#, php-format
+msgid "Channel '%s' deleted"
+msgstr "Canal '%s' deletado"
+
+#: ../../mod/admin.php:821
+#, php-format
+msgid "Channel '%s' uncensored"
+msgstr "Canal '%s' não censurado"
+
+#: ../../mod/admin.php:821
+#, php-format
+msgid "Channel '%s' censored"
+msgstr "Canal '%s' censurado"
+
+#: ../../mod/admin.php:864
+msgid "Censor"
+msgstr "Censurar"
+
+#: ../../mod/admin.php:865
+msgid "Uncensor"
+msgstr "Não censurar"
+
+#: ../../mod/admin.php:868
+msgid "UID"
+msgstr "UID"
+
+#: ../../mod/admin.php:870
+msgid ""
+"Selected channels will be deleted!\\n\\nEverything that was posted in these "
+"channels on this site will be permanently deleted!\\n\\nAre you sure?"
+msgstr "Os canais selecionados serão deletados!\\n\\nTudo que foi postado nesses canais nesse site será permanentemente deletado!\\n\\nVocê tem certeza?"
+
+#: ../../mod/admin.php:871
+msgid ""
+"The channel {0} will be deleted!\\n\\nEverything that was posted in this "
+"channel on this site will be permanently deleted!\\n\\nAre you sure?"
+msgstr "O canal {0} será deletado!\\n\\nTudo o que foi postado nesse canal nesse site será permanentemente deletado!\\n\\nVocê tem certeza?"
+
+#: ../../mod/admin.php:910
+#, php-format
+msgid "Plugin %s disabled."
+msgstr "Plugin %s desabilitado."
+
+#: ../../mod/admin.php:914
+#, php-format
+msgid "Plugin %s enabled."
+msgstr "Plugin %s habilitado."
+
+#: ../../mod/admin.php:924 ../../mod/admin.php:1126
+msgid "Disable"
+msgstr "Desabilitar"
-#: ../../mod/thing.php:98
+#: ../../mod/admin.php:926 ../../mod/admin.php:1128
+msgid "Enable"
+msgstr "Habilitar"
+
+#: ../../mod/admin.php:952 ../../mod/admin.php:1157
+msgid "Toggle"
+msgstr "Alternar"
+
+#: ../../mod/admin.php:960 ../../mod/admin.php:1167
+msgid "Author: "
+msgstr "Autor:"
+
+#: ../../mod/admin.php:961 ../../mod/admin.php:1168
+msgid "Maintainer: "
+msgstr "Mantenedor:"
+
+#: ../../mod/admin.php:1090
+msgid "No themes found."
+msgstr "Nenhum tema foi encontrado."
+
+#: ../../mod/admin.php:1149
+msgid "Screenshot"
+msgstr "Captura de tela"
+
+#: ../../mod/admin.php:1197
+msgid "[Experimental]"
+msgstr "[Experimental]"
+
+#: ../../mod/admin.php:1198
+msgid "[Unsupported]"
+msgstr "[Desassistido]"
+
+#: ../../mod/admin.php:1225
+msgid "Log settings updated."
+msgstr "As configurações de log foram atualizadas."
+
+#: ../../mod/admin.php:1281
+msgid "Clear"
+msgstr "Limpar"
+
+#: ../../mod/admin.php:1287
+msgid "Debugging"
+msgstr "Depuração"
+
+#: ../../mod/admin.php:1288
+msgid "Log file"
+msgstr "Arquivo de log"
+
+#: ../../mod/admin.php:1288
+msgid ""
+"Must be writable by web server. Relative to your Red top-level directory."
+msgstr "É necessário que o servidor web possa escrever neste arquivo. Relativo ao diretório raiz da Red."
+
+#: ../../mod/admin.php:1289
+msgid "Log level"
+msgstr "Nível do log"
+
+#: ../../mod/admin.php:1336
+msgid "New Profile Field"
+msgstr "Novo campo de perfil"
+
+#: ../../mod/admin.php:1337 ../../mod/admin.php:1358
+msgid "Field nickname"
+msgstr "Nome de apresentação do campo"
+
+#: ../../mod/admin.php:1337 ../../mod/admin.php:1358
+msgid "System name of field"
+msgstr "Nome de sistema do campo"
+
+#: ../../mod/admin.php:1338 ../../mod/admin.php:1359
+msgid "Input type"
+msgstr "Tipo de entrada"
+
+#: ../../mod/admin.php:1339 ../../mod/admin.php:1360
+msgid "Field Name"
+msgstr "Nome do campo"
+
+#: ../../mod/admin.php:1339 ../../mod/admin.php:1360
+msgid "Label on profile pages"
+msgstr "Rótulo nas páginas de perfil"
+
+#: ../../mod/admin.php:1340 ../../mod/admin.php:1361
+msgid "Help text"
+msgstr "Texto de ajuda"
+
+#: ../../mod/admin.php:1340 ../../mod/admin.php:1361
+msgid "Additional info (optional)"
+msgstr "Informações adicionais (opcional)"
+
+#: ../../mod/admin.php:1351
+msgid "Field definition not found"
+msgstr "A dfinição de campo não foi encontrada"
+
+#: ../../mod/admin.php:1357
+msgid "Edit Profile Field"
+msgstr "Editar campo de perfil"
+
+#: ../../mod/thing.php:96
msgid "Thing updated"
msgstr "A coisa foi atualizada"
-#: ../../mod/thing.php:158
+#: ../../mod/thing.php:156
msgid "Object store: failed"
msgstr "Armazenamento do objeto: falhou"
-#: ../../mod/thing.php:162
+#: ../../mod/thing.php:160
msgid "Thing added"
msgstr "A coisa foi adicionada"
-#: ../../mod/thing.php:182
+#: ../../mod/thing.php:180
#, php-format
msgid "OBJ: %1$s %2$s %3$s"
msgstr "OBJ: %1$s %2$s %3$s"
-#: ../../mod/thing.php:234
+#: ../../mod/thing.php:232
msgid "Show Thing"
msgstr "Exibir coisa"
-#: ../../mod/thing.php:241
+#: ../../mod/thing.php:239
msgid "item not found."
msgstr "o item não foi encontrado"
-#: ../../mod/thing.php:269
+#: ../../mod/thing.php:270
msgid "Edit Thing"
msgstr "Editar coisa"
-#: ../../mod/thing.php:271 ../../mod/thing.php:318
+#: ../../mod/thing.php:272 ../../mod/thing.php:319
msgid "Select a profile"
msgstr "Selecione um perfil"
-#: ../../mod/thing.php:273 ../../mod/thing.php:320
-msgid "Select a category of stuff. e.g. I ______ something"
-msgstr "Escolha uma categoria de coisas. e.g. Eu ______ algo"
-
-#: ../../mod/thing.php:275 ../../mod/thing.php:321
+#: ../../mod/thing.php:276 ../../mod/thing.php:322
msgid "Post an activity"
msgstr "Publique uma atividade"
-#: ../../mod/thing.php:275 ../../mod/thing.php:321
+#: ../../mod/thing.php:276 ../../mod/thing.php:322
msgid "Only sends to viewers of the applicable profile"
msgstr "Envia apenas para a audiência do perfil aplicável"
-#: ../../mod/thing.php:277 ../../mod/thing.php:323
+#: ../../mod/thing.php:278 ../../mod/thing.php:324
msgid "Name of thing e.g. something"
msgstr "Nome da coisa e.g. coisinha"
-#: ../../mod/thing.php:279 ../../mod/thing.php:324
+#: ../../mod/thing.php:280 ../../mod/thing.php:325
msgid "URL of thing (optional)"
msgstr "URL da coisa (opcional)"
-#: ../../mod/thing.php:281 ../../mod/thing.php:325
+#: ../../mod/thing.php:282 ../../mod/thing.php:326
msgid "URL for photo of thing (optional)"
msgstr "URL para foto da coisa (opcional)"
-#: ../../mod/thing.php:316
+#: ../../mod/thing.php:317
msgid "Add Thing to your Profile"
msgstr "Adicionar a coisa ao seu perfil"
-#: ../../mod/import.php:36
+#: ../../mod/import.php:25
+#, php-format
+msgid "Your service plan only allows %d channels."
+msgstr "Seu plano de serviço permite apenas %d canais."
+
+#: ../../mod/import.php:51
msgid "Nothing to import."
msgstr "Nada a importar."
-#: ../../mod/import.php:58
+#: ../../mod/import.php:75
msgid "Unable to download data from old server"
msgstr "Não foi possível descarregar os dados do servidor antigo"
-#: ../../mod/import.php:64
+#: ../../mod/import.php:81
msgid "Imported file is empty."
msgstr "O arquivo importado está vazio."
-#: ../../mod/import.php:88
+#: ../../mod/import.php:105
msgid ""
"Cannot create a duplicate channel identifier on this system. Import failed."
msgstr "Não foi possível criar um identificador de canal duplicado neste sistema. A importação falhou."
-#: ../../mod/import.php:106
+#: ../../mod/import.php:123
msgid "Channel clone failed. Import failed."
msgstr "Clonagem do canal falhou. A importação falhou."
-#: ../../mod/import.php:116
+#: ../../mod/import.php:133
msgid "Cloned channel not found. Import failed."
msgstr "Canal a clonar não encontrado. A importação falhou."
-#: ../../mod/import.php:364
+#: ../../mod/import.php:446
msgid "Import completed."
msgstr "A importação foi completada."
-#: ../../mod/import.php:377
+#: ../../mod/import.php:458
msgid "You must be logged in to use this feature."
msgstr "Você precisa estar autenticado para usar este recurso."
-#: ../../mod/import.php:382
+#: ../../mod/import.php:463
msgid "Import Channel"
msgstr "Importar canal"
-#: ../../mod/import.php:383
+#: ../../mod/import.php:464
msgid ""
"Use this form to import an existing channel from a different server/hub. You"
" may retrieve the channel identity from the old server/hub via the network "
@@ -6747,27 +7179,27 @@ msgid ""
"be imported. Importation of content is not yet available."
msgstr "Use este formulário para importar um canal existente de um servidor/hub diferente. Você pode obter a identidade do canal do servidor/hub antigo pela rede, ou fornecer um arquivo de exportação. Somente a identidade e as conexões/relacionamentos serão importados. Importação de conteúdos ainda não está disponível."
-#: ../../mod/import.php:384
+#: ../../mod/import.php:465
msgid "File to Upload"
msgstr "Arquivo a carregar"
-#: ../../mod/import.php:385
+#: ../../mod/import.php:466
msgid "Or provide the old server/hub details"
msgstr "Ou forneça os detalhes do antigo servidor/hub"
-#: ../../mod/import.php:386
+#: ../../mod/import.php:467
msgid "Your old identity address (xyz@example.com)"
msgstr "O endereço da sua velha identidade (xyz@exemplo.com)"
-#: ../../mod/import.php:387
+#: ../../mod/import.php:468
msgid "Your old login email address"
msgstr "O endereço de e-mail da sua antiga conta"
-#: ../../mod/import.php:388
+#: ../../mod/import.php:469
msgid "Your old login password"
msgstr "A senha dua sua antiga conta"
-#: ../../mod/import.php:389
+#: ../../mod/import.php:470
msgid ""
"For either option, please choose whether to make this hub your new primary "
"address, or whether your old location should continue this role. You will be"
@@ -6775,10 +7207,14 @@ msgid ""
"primary location for files, photos, and media."
msgstr "Para qualquer das opções, por favor escolha se deseja fazer deste hub seu novo endereço primário, ou se o velho local deve continuar com esse papel. Você será capaz de publicar a partir de ambos os locais, mas somente um pode estar designado como local primário para arquivos, fotos e mídia."
-#: ../../mod/import.php:390
+#: ../../mod/import.php:471
msgid "Make this hub my primary location"
msgstr "Faça deste hub meu local primário"
+#: ../../mod/import.php:472
+msgid "Import existing posts if possible"
+msgstr "Importar publicações existentes se possível"
+
#: ../../mod/invite.php:25
msgid "Total invitation limit exceeded."
msgstr "Foi excedido o número total de convites."
@@ -6812,72 +7248,64 @@ msgstr[1] "%d mensagens enviadas."
msgid "You have no more invitations available"
msgstr "Você não possui mais convites disponíveis"
-#: ../../mod/invite.php:141
+#: ../../mod/invite.php:129
msgid "Send invitations"
msgstr "Enviar convites."
-#: ../../mod/invite.php:142
+#: ../../mod/invite.php:130
msgid "Enter email addresses, one per line:"
msgstr "Digite os endereços de e-mail, um por linha:"
-#: ../../mod/invite.php:143 ../../mod/mail.php:216 ../../mod/mail.php:328
+#: ../../mod/invite.php:131 ../../mod/mail.php:225 ../../mod/mail.php:338
msgid "Your message:"
msgstr "Sua mensagem:"
-#: ../../mod/invite.php:144
-msgid ""
-"You are cordially invited to join me and some other close friends on the Red"
-" Matrix - a revolutionary new decentralised communication and information "
-"tool."
-msgstr "Você está convidado a juntar-se a mim e alguns outros amigos próximos na Red Matrix - uma revolucionária nova ferramenta para comunicação e informação descentralizada."
+#: ../../mod/invite.php:132
+msgid "Please join my community on RedMatrix."
+msgstr "Por favor junte-se à minha comunidade na RedMatrix"
-#: ../../mod/invite.php:146
-msgid "You will need to supply this invitation code: $invite_code"
-msgstr "Você deve informar este código de convite: $invite_code"
+#: ../../mod/invite.php:134
+msgid "You will need to supply this invitation code: "
+msgstr "Você precisará fornecer este código de convite:"
-#: ../../mod/invite.php:147
-msgid "Please visit my channel at"
-msgstr "Por favor, visite o meu canal em"
+#: ../../mod/invite.php:135
+msgid "1. Register at any RedMatrix location (they are all inter-connected)"
+msgstr "1. Registre-se em qualquer site da RedMatrix (eles são todos interconectados)"
-#: ../../mod/invite.php:151
-msgid ""
-"Once you have registered (on ANY Red Matrix site - they are all inter-"
-"connected), please connect with my Red Matrix channel address:"
-msgstr "Após você se registrar (em qualquer site da Red Matrix - eles são todos interconectados!), peço que conecte-se comigo usando o endereço do meu canal:"
+#: ../../mod/invite.php:137
+msgid "2. Enter my RedMatrix network address into the site searchbar."
+msgstr "2. Entre meu endereço da rede RedMatrix na barra de busca do site."
-#: ../../mod/invite.php:153
-msgid "Click the [Register] link on the following page to join."
-msgstr "Clique no link [Registrar] na seguinte página para participar."
+#: ../../mod/invite.php:138
+msgid "or visit "
+msgstr "ou visite"
-#: ../../mod/invite.php:155
-msgid ""
-"For more information about the Red Matrix Project and why it has the "
-"potential to change the internet as we know it, please visit "
-"http://getzot.com"
-msgstr "Para maiores informações sobre o Projeto Red Matrix e porque ele tem potencial para mudar a Internet como a conhecemos, por favor visite: http://getzot.com"
+#: ../../mod/invite.php:140
+msgid "3. Click [Connect]"
+msgstr "3. Clique [Conectar]"
-#: ../../mod/item.php:147
+#: ../../mod/item.php:146
msgid "Unable to locate original post."
msgstr "Não foi possível localizar a publicação original."
-#: ../../mod/item.php:352
+#: ../../mod/item.php:379
msgid "Empty post discarded."
msgstr "A publicação em branco foi descartada."
-#: ../../mod/item.php:392
+#: ../../mod/item.php:421
msgid "Executable content type not permitted to this channel."
msgstr "Conteúdo de tipo executável não permitido para este canal."
-#: ../../mod/item.php:806
+#: ../../mod/item.php:849
msgid "System error. Post not saved."
msgstr "Erro no sistema. A publicação não foi salva."
-#: ../../mod/item.php:1249
+#: ../../mod/item.php:1317
#, php-format
msgid "You have reached your limit of %1$.0f top level posts."
msgstr "Você atingiu o seu limite de %1$.0f publicações de novos tópicos."
-#: ../../mod/item.php:1255
+#: ../../mod/item.php:1323
#, php-format
msgid "You have reached your limit of %1$.0f webpages."
msgstr "Você atingiu o seu limite de %1$.0f páginas web."
@@ -6891,15 +7319,53 @@ msgstr "[Conteúdo incorporado - recarregue a página para ver]"
msgid "Help with this feature"
msgstr "Ajuda com este recurso"
-#: ../../mod/layouts.php:84
+#: ../../mod/layouts.php:85
msgid "Layout Name"
msgstr "Nome do layout"
-#: ../../mod/lockview.php:30 ../../mod/lockview.php:36
+#: ../../mod/like.php:15
+msgid "Like/Dislike"
+msgstr "Gostar/Desgostar"
+
+#: ../../mod/like.php:20
+msgid "This action is restricted to members."
+msgstr "Esta ação é restrita a membros."
+
+#: ../../mod/like.php:21
+msgid ""
+"Please <a href=\"rmagic\">login with your RedMatrix ID</a> or <a "
+"href=\"register\">register as a new RedMatrix member</a> to continue."
+msgstr "Por favor <a href=\"rmagic\">entre com sua ID da RedMatrix</a> ou <a href=\"register\">registre-se como um novo membro da RedMatrix</a> para continuar."
+
+#: ../../mod/like.php:77 ../../mod/like.php:104 ../../mod/like.php:142
+msgid "Invalid request."
+msgstr "Solicitação inválida."
+
+#: ../../mod/like.php:119
+msgid "thing"
+msgstr "coisa"
+
+#: ../../mod/like.php:165
+msgid "Channel unavailable."
+msgstr "Canal não disponível."
+
+#: ../../mod/like.php:204
+msgid "Previous action reversed."
+msgstr "Ação anterior revertida."
+
+#: ../../mod/like.php:417
+msgid "Action completed."
+msgstr "Ação completada."
+
+#: ../../mod/like.php:418
+msgid "Thank you."
+msgstr "Obrigado."
+
+#: ../../mod/lockview.php:31
msgid "Remote privacy information not available."
msgstr "Não existe informação disponível sobre a privacidade remota."
-#: ../../mod/lockview.php:45
+#: ../../mod/lockview.php:52
msgid "Visible to:"
msgstr "Visível para:"
@@ -6907,12 +7373,12 @@ msgstr "Visível para:"
msgid "No connections."
msgstr "Nenhuma conexão."
-#: ../../mod/viewconnections.php:70
+#: ../../mod/viewconnections.php:71
#, php-format
msgid "Visit %s's profile [%s]"
msgstr "Ver o perfil de %s [%s]"
-#: ../../mod/viewconnections.php:85
+#: ../../mod/viewconnections.php:86
msgid "View Connnections"
msgstr "Ver conexões"
@@ -6940,7 +7406,7 @@ msgid ""
"Password reset failed."
msgstr "Não foi possível verificar a solicitação (você pode tê-la submetido anteriormente). A senha não foi restaurada."
-#: ../../mod/lostpass.php:85 ../../boot.php:1462
+#: ../../mod/lostpass.php:85 ../../boot.php:1505
msgid "Password Reset"
msgstr "Reiniciar a senha"
@@ -7029,78 +7495,78 @@ msgstr "A mensagem foi excluída."
msgid "Message recalled."
msgstr "Mensagem retirada."
-#: ../../mod/mail.php:206
+#: ../../mod/mail.php:215
msgid "Send Private Message"
msgstr "Enviar mensagem privada"
-#: ../../mod/mail.php:207 ../../mod/mail.php:323
+#: ../../mod/mail.php:216 ../../mod/mail.php:333
msgid "To:"
msgstr "Para:"
-#: ../../mod/mail.php:212 ../../mod/mail.php:325
+#: ../../mod/mail.php:221 ../../mod/mail.php:335
msgid "Subject:"
msgstr "Assunto:"
-#: ../../mod/mail.php:249
+#: ../../mod/mail.php:232
+msgid "Send"
+msgstr "Enviar"
+
+#: ../../mod/mail.php:259
msgid "Message not found."
msgstr "Mensagem não encontrada."
-#: ../../mod/mail.php:292 ../../mod/message.php:72
+#: ../../mod/mail.php:302 ../../mod/message.php:72
msgid "Delete message"
msgstr "Excluir a mensagem"
-#: ../../mod/mail.php:293
+#: ../../mod/mail.php:303
msgid "Recall message"
msgstr "Retirar mensagem"
-#: ../../mod/mail.php:295
+#: ../../mod/mail.php:305
msgid "Message has been recalled."
msgstr "A mensagem foi retirada."
-#: ../../mod/mail.php:312
+#: ../../mod/mail.php:322
msgid "Private Conversation"
msgstr "Conversa privada"
-#: ../../mod/mail.php:316
+#: ../../mod/mail.php:326
msgid "Delete conversation"
msgstr "Excluir conversa"
-#: ../../mod/mail.php:318
+#: ../../mod/mail.php:328
msgid ""
"No secure communications available. You <strong>may</strong> be able to "
"respond from the sender's profile page."
msgstr "Comunicação segura indisponível. Você <strong>talvez</strong> consiga responder pela página de perfil do remetente."
-#: ../../mod/mail.php:322
+#: ../../mod/mail.php:332
msgid "Send Reply"
msgstr "Enviar resposta"
-#: ../../mod/manage.php:64
+#: ../../mod/manage.php:136
#, php-format
msgid "You have created %1$.0f of %2$.0f allowed channels."
msgstr "Você criou %1$.0f de %2$.0f canais permitidos."
-#: ../../mod/manage.php:72
+#: ../../mod/manage.php:144
msgid "Create a new channel"
msgstr "Criar um novo canal"
-#: ../../mod/manage.php:77
-msgid "Channel Manager"
-msgstr "Administrador do canal"
-
-#: ../../mod/manage.php:78
+#: ../../mod/manage.php:149
msgid "Current Channel"
msgstr "Canal atual"
-#: ../../mod/manage.php:80
+#: ../../mod/manage.php:151
msgid "Attach to one of your channels by selecting it."
msgstr "Selecione um dos seus canais para utilizá-lo."
-#: ../../mod/manage.php:81
+#: ../../mod/manage.php:152
msgid "Default Channel"
msgstr "Canal padrão"
-#: ../../mod/manage.php:82
+#: ../../mod/manage.php:153
msgid "Make Default"
msgstr "Tornar padrão"
@@ -7220,163 +7686,54 @@ msgstr "Nenhuma mensagem."
msgid "D, d M Y - g:i A"
msgstr "D, d M Y - g:i A"
-#: ../../mod/new_channel.php:107
+#: ../../mod/new_channel.php:109
msgid "Add a Channel"
msgstr "Adicionar um canal"
-#: ../../mod/new_channel.php:108
+#: ../../mod/new_channel.php:110
msgid ""
"A channel is your own collection of related web pages. A channel can be used"
" to hold social network profiles, blogs, conversation groups and forums, "
"celebrity pages, and much more. You may create as many channels as your "
"service provider allows."
-msgstr "Um canal é uma coleção sua de páginas relacionadas. Um canal pode ser usado para um perfil de rede social, um blog, grupos de conversação e fóruns, páginas de celebridades, e muito mais. Você pode criar tantos canais quanto seu provedor de serviço permita."
+msgstr "Um canal é uma coleção sua de páginas relacionadas. Um canal pode ser usado para um perfil de rede social, um blog, grupos de conversação e fóruns temáticos, páginas de personalidades, e muito mais. Você pode criar tantos canais quanto o provedor de serviço permita."
-#: ../../mod/new_channel.php:111
+#: ../../mod/new_channel.php:113
msgid "Examples: \"Bob Jameson\", \"Lisa and her Horses\", \"Soccer\", \"Aviation Group\" "
-msgstr "Exemplos: \"Beto Salinas\", \"Elis e seus Cavalos\", \"Futebol\", \"Grupo de aviadores\""
+msgstr "Exemplos: \"Maria Caiouá\", \"Roberto Salinas\", \"Elis e sua banda\", \"Futebol de salão\", \"Fanáticos por aeromodelismo\""
-#: ../../mod/new_channel.php:112
+#: ../../mod/new_channel.php:114
msgid "Choose a short nickname"
msgstr "Escolha um apelido curto"
-#: ../../mod/new_channel.php:113
+#: ../../mod/new_channel.php:115
msgid ""
"Your nickname will be used to create an easily remembered channel address "
"(like an email address) which you can share with others."
msgstr "Seu apelido será usado para criar um endereço para o canal de fácil memorização (como um endereço de email), que você poderá compartilhar com outros."
-#: ../../mod/new_channel.php:114
+#: ../../mod/new_channel.php:116
msgid "Or <a href=\"import\">import an existing channel</a> from another location"
msgstr "Ou <a href=\"import\">importe um canal existente</a> de outro local"
-#: ../../mod/photos.php:77
-msgid "Page owner information could not be retrieved."
-msgstr "As informações do dono da pagina não puderam ser obtidas."
-
-#: ../../mod/photos.php:97
-msgid "Album not found."
-msgstr "O álbum não foi encontrado."
-
-#: ../../mod/photos.php:119 ../../mod/photos.php:671
-msgid "Delete Album"
-msgstr "Excluir o álbum"
-
-#: ../../mod/photos.php:159 ../../mod/photos.php:954
-msgid "Delete Photo"
-msgstr "Excluir a foto"
-
-#: ../../mod/photos.php:453
-msgid "No photos selected"
-msgstr "Não foi selecionada nenhuma foto"
-
-#: ../../mod/photos.php:500
-msgid "Access to this item is restricted."
-msgstr "O acesso a este item está restrito."
-
-#: ../../mod/photos.php:576
-#, php-format
-msgid "You have used %1$.2f Mbytes of %2$.2f Mbytes photo storage."
-msgstr "Você usou %1$.2f Mbytes de %2$.2f Mbytes de armazenamento de fotos."
-
-#: ../../mod/photos.php:579
-#, php-format
-msgid "You have used %1$.2f Mbytes of photo storage."
-msgstr "Você usou %1$.2f Mbytes de armazenamento de fotos."
-
-#: ../../mod/photos.php:598
-msgid "Upload Photos"
-msgstr "Enviar fotos"
-
-#: ../../mod/photos.php:602 ../../mod/photos.php:666
-msgid "New album name: "
-msgstr "Novo nome de álbum: "
-
-#: ../../mod/photos.php:603
-msgid "or existing album name: "
-msgstr "ou nome de um álbum já existente: "
-
-#: ../../mod/photos.php:604
-msgid "Do not show a status post for this upload"
-msgstr "Não exibir uma publicação de status para este carregamento"
-
-#: ../../mod/photos.php:655 ../../mod/photos.php:677 ../../mod/photos.php:1126
-#: ../../mod/photos.php:1141
-msgid "Contact Photos"
-msgstr "Fotos dos contatos"
-
-#: ../../mod/photos.php:681
-msgid "Edit Album"
-msgstr "Editar o álbum"
-
-#: ../../mod/photos.php:687
-msgid "Show Newest First"
-msgstr "Exibir primeiro os mais recentes"
-
-#: ../../mod/photos.php:689
-msgid "Show Oldest First"
-msgstr "Exibir primeiro os mais antigos"
-
-#: ../../mod/photos.php:732 ../../mod/photos.php:1173
-msgid "View Photo"
-msgstr "Ver a foto"
-
-#: ../../mod/photos.php:778
-msgid "Permission denied. Access to this item may be restricted."
-msgstr "Permissão negada. Acesso a este item pode estar restrito."
-
-#: ../../mod/photos.php:780
-msgid "Photo not available"
-msgstr "A foto não está disponível"
-
-#: ../../mod/photos.php:840
-msgid "Use as profile photo"
-msgstr "Usar como uma foto de perfil"
-
-#: ../../mod/photos.php:864
-msgid "View Full Size"
-msgstr "Ver no tamanho real"
-
-#: ../../mod/photos.php:938
-msgid "Edit photo"
-msgstr "Editar a foto"
-
-#: ../../mod/photos.php:940
-msgid "Rotate CW (right)"
-msgstr "Rotacionar H (horário)"
-
-#: ../../mod/photos.php:941
-msgid "Rotate CCW (left)"
-msgstr "Rotacionar AH (anti-horário)"
-
-#: ../../mod/photos.php:943
-msgid "New album name"
-msgstr "Novo nome para o álbum"
-
-#: ../../mod/photos.php:946
-msgid "Caption"
-msgstr "Legenda"
-
-#: ../../mod/photos.php:948
-msgid "Add a Tag"
-msgstr "Adicionar uma etiqueta"
+#: ../../mod/new_channel.php:118
+msgid "Channel Type"
+msgstr "Tipo de canal"
-#: ../../mod/photos.php:951
+#: ../../mod/new_channel.php:119
msgid ""
-"Example: @bob, @Barbara_Jensen, @jim@example.com, #California, #camping"
-msgstr "Por exemplo: @joao, @Joao_da_Silva, @joao@exemplo.com, #Minas_Gerais, #acampamento"
+"Please choose a channel type (such as social networking or community forum) "
+"and privacy requirements so we can select the best permissions for you"
+msgstr "Por favor, escolha um tipo de canal (por exemplo rede social ou fórum de comunidade) e requisito de privacidade, para que possamos configurar as melhores permissões para você"
-#: ../../mod/photos.php:1104
-msgid "In This Photo:"
-msgstr "Nesta foto:"
-
-#: ../../mod/photos.php:1179
-msgid "View Album"
-msgstr "Ver álbum"
+#: ../../mod/home.php:46
+msgid "Red Matrix - &quot;The Network&quot;"
+msgstr "Red Matrix - &quot;A Rede&quot;"
-#: ../../mod/photos.php:1188
-msgid "Recent Photos"
-msgstr "Fotos recentes"
+#: ../../mod/home.php:101
+#, php-format
+msgid "Welcome to %s"
+msgstr "Bem-vindo(a) a %s"
#: ../../mod/notifications.php:26
msgid "Invalid request identifier."
@@ -7386,11 +7743,11 @@ msgstr "Identificador de solicitação inválido"
msgid "Discard"
msgstr "Descartar"
-#: ../../mod/notifications.php:94 ../../mod/notify.php:54
+#: ../../mod/notifications.php:94 ../../mod/notify.php:53
msgid "No more system notifications."
msgstr "Sem novas notificações do sistema."
-#: ../../mod/notifications.php:98 ../../mod/notify.php:58
+#: ../../mod/notifications.php:98 ../../mod/notify.php:57
msgid "System Notifications"
msgstr "Notificações do sistema"
@@ -7458,6 +7815,46 @@ msgstr "Preço do aplicativo"
msgid "Location (URL) to purchase app"
msgstr "Endereço (URL) para comprar o aplicativo"
+#: ../../mod/poll.php:64
+msgid "Poll"
+msgstr "Votação"
+
+#: ../../mod/poll.php:69
+msgid "View Results"
+msgstr "Ver resultados"
+
+#: ../../mod/removeaccount.php:30
+msgid ""
+"Account removals are not allowed within 48 hours of changing the account "
+"password."
+msgstr "A remoção da conta fica desabilitada por 48 horas após uma troca de senha da conta."
+
+#: ../../mod/removeaccount.php:57
+msgid "Remove This Account"
+msgstr "Remover esta conta"
+
+#: ../../mod/removeaccount.php:58
+msgid ""
+"This will completely remove this account including all its channels from the"
+" network. Once this has been done it is not recoverable."
+msgstr "Isso irá remover completamente esta conta, incluindo todos os canais da rede. Uma vez feito isso eles não poderão ser recuperados."
+
+#: ../../mod/removeaccount.php:60
+msgid ""
+"Remove this account, all its channels and all its channel clones from the "
+"network"
+msgstr "Remove esta conta, todos os seus canais e todos os clones desses canais da rede."
+
+#: ../../mod/removeaccount.php:60
+msgid ""
+"By default only the instances of the channels located on this hub will be "
+"removed from the network"
+msgstr "Por padrão, apenas as instâncias dos canais localizadas neste hub serão removidas da rede"
+
+#: ../../mod/service_limits.php:19
+msgid "No service class restrictions found."
+msgstr "Não foram encontradas restrições de classe de serviço."
+
#: ../../view/theme/apw/php/config.php:202
#: ../../view/theme/apw/php/config.php:236
msgid "Schema Default"
@@ -7469,7 +7866,7 @@ msgstr "Sans-Serif"
#: ../../view/theme/apw/php/config.php:204
msgid "Monospace"
-msgstr "Monoespaçada"
+msgstr "Monospace"
#: ../../view/theme/apw/php/config.php:259
#: ../../view/theme/blogga/php/config.php:69
@@ -7505,7 +7902,7 @@ msgid "Set small shadow size, default 5px 5px 5px"
msgstr "Definir o tamanho da sombra pequena, padrão 5px 5px 5px"
#: ../../view/theme/apw/php/config.php:266
-msgid "Set shadow colour, default #000"
+msgid "Set shadow color, default #000"
msgstr "Definir a cor da sombra, padrão #000"
#: ../../view/theme/apw/php/config.php:267
@@ -7525,7 +7922,7 @@ msgid "Set background attachment"
msgstr "Definir o anexo de pano de fundo"
#: ../../view/theme/apw/php/config.php:271
-msgid "Set background colour"
+msgid "Set background color"
msgstr "Definir a cor do pano de fundo"
#: ../../view/theme/apw/php/config.php:272
@@ -7533,15 +7930,15 @@ msgid "Set section background image"
msgstr "Definir a imagem de fundo de seção"
#: ../../view/theme/apw/php/config.php:273
-msgid "Set section background colour"
+msgid "Set section background color"
msgstr "Definir a cor de fundo de seção"
#: ../../view/theme/apw/php/config.php:274
-msgid "Set colour of items - use hex"
+msgid "Set color of items - use hex"
msgstr "Definir a cor dos items - use hex"
#: ../../view/theme/apw/php/config.php:275
-msgid "Set colour of links - use hex"
+msgid "Set color of links - use hex"
msgstr "Definir a cor dos links - use hex"
#: ../../view/theme/apw/php/config.php:276
@@ -7557,7 +7954,7 @@ msgid "Set the generic content wrapper width. Default 48%"
msgstr "Definir a largura do envólucro para conteúdo genérico. Padrão 48%"
#: ../../view/theme/apw/php/config.php:279
-msgid "Set colour of fonts - use hex"
+msgid "Set color of fonts - use hex"
msgstr "Definir a cor das fontes - use hex"
#: ../../view/theme/apw/php/config.php:280
@@ -7594,7 +7991,7 @@ msgstr "Deslocamento direito do elemento de seção"
#: ../../view/theme/apw/php/config.php:288
msgid "Section width"
-msgstr "Largura de seção"
+msgstr "largura de seção"
#: ../../view/theme/apw/php/config.php:289
msgid "Left offset of the aside"
@@ -7619,52 +8016,56 @@ msgstr "Imagem de cabeçalho"
msgid "Header image only on profile pages"
msgstr "Imagem de cabeçalho apenas em páginas de perfil"
+#: ../../view/theme/redbasic/php/config.php:84
+msgid "Light (Red Matrix default)"
+msgstr "Leve (padrão da Red Matrix)"
+
#: ../../view/theme/redbasic/php/config.php:104
msgid "Narrow navbar"
msgstr "Barra de navegação estreita"
#: ../../view/theme/redbasic/php/config.php:105
-msgid "Navigation bar background colour"
+msgid "Navigation bar background color"
msgstr "Cor de fundo da barra de navegação"
#: ../../view/theme/redbasic/php/config.php:106
-msgid "Navigation bar gradient top colour"
+msgid "Navigation bar gradient top color"
msgstr "Cor no topo de gradiente da barra de navegação"
#: ../../view/theme/redbasic/php/config.php:107
-msgid "Navigation bar gradient bottom colour"
+msgid "Navigation bar gradient bottom color"
msgstr "Cor na base de gradiente da barra de navegação"
#: ../../view/theme/redbasic/php/config.php:108
-msgid "Navigation active button gradient top colour"
+msgid "Navigation active button gradient top color"
msgstr "Cor no topo de gradiente de botão ativo de navegação"
#: ../../view/theme/redbasic/php/config.php:109
-msgid "Navigation active button gradient bottom colour"
+msgid "Navigation active button gradient bottom color"
msgstr "Cor na base de gradiente de botão ativo de navegação"
#: ../../view/theme/redbasic/php/config.php:110
-msgid "Navigation bar border colour "
+msgid "Navigation bar border color "
msgstr "Cor de borda da barra de navegação"
#: ../../view/theme/redbasic/php/config.php:111
-msgid "Navigation bar icon colour "
+msgid "Navigation bar icon color "
msgstr "Cor de ícone da barra de navegação"
#: ../../view/theme/redbasic/php/config.php:112
-msgid "Navigation bar active icon colour "
+msgid "Navigation bar active icon color "
msgstr "Cor de ícone ativo da barra de navegação"
#: ../../view/theme/redbasic/php/config.php:113
-msgid "link colour"
+msgid "link color"
msgstr "cor dos links"
#: ../../view/theme/redbasic/php/config.php:114
-msgid "Set font-colour for banner"
+msgid "Set font-color for banner"
msgstr "Definir a cor da fonte para o cartaz"
#: ../../view/theme/redbasic/php/config.php:115
-msgid "Set the background colour"
+msgid "Set the background color"
msgstr "Definir a cor do pano de fundo"
#: ../../view/theme/redbasic/php/config.php:116
@@ -7672,15 +8073,15 @@ msgid "Set the background image"
msgstr "Definir a imagem do pano de fundo"
#: ../../view/theme/redbasic/php/config.php:117
-msgid "Set the background colour of items"
+msgid "Set the background color of items"
msgstr "Definir a cor de fundo dos items"
#: ../../view/theme/redbasic/php/config.php:118
-msgid "Set the background colour of comments"
+msgid "Set the background color of comments"
msgstr "Definir a cor de fundo dos comentários"
#: ../../view/theme/redbasic/php/config.php:119
-msgid "Set the border colour of comments"
+msgid "Set the border color of comments"
msgstr "Definir a cor da borda dos comentários"
#: ../../view/theme/redbasic/php/config.php:120
@@ -7688,11 +8089,11 @@ msgid "Set the indent for comments"
msgstr "Definir a indentação de comentários"
#: ../../view/theme/redbasic/php/config.php:121
-msgid "Set the basic colour for item icons"
+msgid "Set the basic color for item icons"
msgstr "Definir a cor básica para ícones de itens"
#: ../../view/theme/redbasic/php/config.php:122
-msgid "Set the hover colour for item icons"
+msgid "Set the hover color for item icons"
msgstr "Definir a cor para ícones de itens quando que o mouse está sobre eles"
#: ../../view/theme/redbasic/php/config.php:123
@@ -7700,7 +8101,7 @@ msgid "Set font-size for the entire application"
msgstr "Definir o tamanho da fonte para a aplicação como um todo"
#: ../../view/theme/redbasic/php/config.php:125
-msgid "Set font-colour for posts and comments"
+msgid "Set font-color for posts and comments"
msgstr "Definir a cor da fonte para publicações e comentários"
#: ../../view/theme/redbasic/php/config.php:126
@@ -7739,41 +8140,41 @@ msgstr "Ãlbuns de fotos desleixados"
msgid "Are you a clean desk or a messy desk person?"
msgstr "Sua mesa é do tipo limpinha ou bagunçada?"
-#: ../../boot.php:1260
+#: ../../boot.php:1293
#, php-format
msgid "Update %s failed. See error logs."
msgstr "A atualização %s falhou. Veja os logs de erro."
-#: ../../boot.php:1263
+#: ../../boot.php:1296
#, php-format
msgid "Update Error at %s"
msgstr "Erro de atualização em %s"
-#: ../../boot.php:1427
+#: ../../boot.php:1470
msgid ""
"Create an account to access services and applications within the Red Matrix"
msgstr "Crie uma conta para acessar serviços e aplicações na Red Matrix"
-#: ../../boot.php:1455
+#: ../../boot.php:1498
msgid "Password"
msgstr "Senha"
-#: ../../boot.php:1456
+#: ../../boot.php:1499
msgid "Remember me"
msgstr "Lembrar de mim"
-#: ../../boot.php:1461
+#: ../../boot.php:1504
msgid "Forgot your password?"
msgstr "Esqueceu a sua senha?"
-#: ../../boot.php:1526
+#: ../../boot.php:1569
msgid "permission denied"
msgstr "permissão negada"
-#: ../../boot.php:1527
+#: ../../boot.php:1570
msgid "Got Zot?"
msgstr "Já tem Zot?"
-#: ../../boot.php:1957
+#: ../../boot.php:2000
msgid "toggle mobile"
msgstr "alternar para interface móvel"
diff --git a/view/pt-br/request_notify_eml.tpl b/view/pt-br/request_notify_eml.tpl
deleted file mode 100644
index 3f0befb3f..000000000
--- a/view/pt-br/request_notify_eml.tpl
+++ /dev/null
@@ -1,17 +0,0 @@
-
-Caro/a {{$myname}},
-
-Você acaba de receber uma solicitação de conexão em {{$sitename}}
-
-por '{{$requestor}}'.
-
-Você pode ver o perfil dele em {{$url}}.
-
-Por favor, autentique-se no seu site para ver a apresentação completa
-e aprovar ou ignorar/cancelar o pedido.
-
-{{$siteurl}}
-
-Gratidão,
-
- {{$sitename}} administrador
diff --git a/view/pt-br/strings.php b/view/pt-br/strings.php
index cdc7fbacb..eaeb012ab 100644
--- a/view/pt-br/strings.php
+++ b/view/pt-br/strings.php
@@ -7,16 +7,89 @@ function string_plural_select_pt_br($n){
;
$a->strings["Cannot locate DNS info for database server '%s'"] = "Não foi possível localizar a informação de DNS para o servidor de banco de dados '%s'";
$a->strings["Profile Photos"] = "Fotos do perfil";
-$a->strings["Image/photo"] = "Imagem/foto";
-$a->strings["Encrypted content"] = "Conteúdo criptografado";
-$a->strings["QR code"] = "código QR";
-$a->strings["%1\$s wrote the following %2\$s %3\$s"] = "%1\$s escreveu a seguinte %2\$s %3\$s";
-$a->strings["post"] = "publicação";
-$a->strings["$1 wrote:"] = "$1 escreveu:";
+$a->strings["view full size"] = "ver na tela inteira";
$a->strings["Embedded content"] = "Conteúdo incorporado";
$a->strings["Embedding disabled"] = "A incorporação está desabilitada";
$a->strings["created a new post"] = "criou uma nova publicação";
$a->strings["commented on %s's post"] = "comentou a publicação de %s";
+$a->strings["Site Admin"] = "Administração do site";
+$a->strings["Bookmarks"] = "Links guardados";
+$a->strings["Address Book"] = "Livro de Endereços";
+$a->strings["Login"] = "Entrar";
+$a->strings["Channel Manager"] = "Seus canais";
+$a->strings["Matrix"] = "Matriz";
+$a->strings["Settings"] = "Configurações";
+$a->strings["Files"] = "Arquivos";
+$a->strings["Webpages"] = "Páginas web";
+$a->strings["Channel Home"] = "Página inicial do canal";
+$a->strings["Profile"] = "Perfil";
+$a->strings["Photos"] = "Fotos";
+$a->strings["Events"] = "Eventos";
+$a->strings["Directory"] = "Diretório";
+$a->strings["Help"] = "Ajuda";
+$a->strings["Mail"] = "Mensagens";
+$a->strings["Mood"] = "Humor";
+$a->strings["Poke"] = "Cutucar";
+$a->strings["Chat"] = "Bate-papo";
+$a->strings["Search"] = "Pesquisar";
+$a->strings["Probe"] = "Sonda";
+$a->strings["Suggest"] = "Sugerir";
+$a->strings["Random Channel"] = "Canal aleatório";
+$a->strings["Invite"] = "Convidar";
+$a->strings["Features"] = "Recursos";
+$a->strings["Language"] = "Idioma";
+$a->strings["Post"] = "Publicações";
+$a->strings["Profile Photo"] = "Foto do perfil";
+$a->strings["Update"] = "Atualizar";
+$a->strings["Install"] = "Instalar";
+$a->strings["Purchase"] = "Compras";
+$a->strings["Edit"] = "Editar";
+$a->strings["Delete"] = "Excluir";
+$a->strings["Unknown"] = "Desconhecidos";
+$a->strings["New Page"] = "Nova página";
+$a->strings["View"] = "Ver";
+$a->strings["Preview"] = "Pré-visualizar";
+$a->strings["Actions"] = "Ações";
+$a->strings["Page Link"] = "Link da página";
+$a->strings["Title"] = "Título";
+$a->strings["Created"] = "Criado";
+$a->strings["Edited"] = "Editado";
+$a->strings["The form security token was not correct. This probably happened because the form has been opened for too long (>3 hours) before submitting it."] = "O token de segurança do formulário não estava correto. Isso provavelmente aconteceu porque o formulário ficou aberto por muito tempo (>3 horas) antes da sua submissão.";
+$a->strings["Invalid data packet"] = "Pacote de dados inválido";
+$a->strings["Unable to verify channel signature"] = "Não foi possível verificar a assinatura do canal";
+$a->strings["Unable to verify site signature for %s"] = "Não foi possível verificar a assinatura do site para %s";
+$a->strings["Permission denied."] = "Permissão negada.";
+$a->strings["Image exceeds website size limit of %lu bytes"] = "A imagem excede o limite de tamanho do site, que é de %";
+$a->strings["Image file is empty."] = "O arquivo de imagem está vazio.";
+$a->strings["Unable to process image"] = "Não foi possível processar a imagem";
+$a->strings["Photo storage failed."] = "Não foi possível armazenar a foto.";
+$a->strings["Photo Albums"] = "Ãlbuns de fotos";
+$a->strings["Upload New Photos"] = "Enviar novas fotos";
+$a->strings["Visible to your default audience"] = "Visível para seu público padrão";
+$a->strings["Show"] = "Exibir";
+$a->strings["Don't show"] = "Não exibir";
+$a->strings["Permissions"] = "Permissões";
+$a->strings["Close"] = "Fechar";
+$a->strings[" and "] = " e ";
+$a->strings["public profile"] = "perfil público";
+$a->strings["%1\$s changed %2\$s to &ldquo;%3\$s&rdquo;"] = "%1\$s mudou %2\$s para &ldquo;%3\$s&rdquo;";
+$a->strings["Visit %1\$s's %2\$s"] = "Visite o %2\$s de %1\$s";
+$a->strings["%1\$s has an updated %2\$s, changing %3\$s."] = "%1\$s atualizou %2\$s, alterando %3\$s.";
+$a->strings["Public Timeline"] = "Linha do tempo pública";
+$a->strings["Item was not found."] = "O item não foi encontrado.";
+$a->strings["No source file."] = "Nenhum arquivo de origem.";
+$a->strings["Cannot locate file to replace"] = "Não foi possível locar o arquivo a ser substituído";
+$a->strings["Cannot locate file to revise/update"] = "Não foi possível localizar o arquivo a ser revisado/atualizado";
+$a->strings["File exceeds size limit of %d"] = "O arquivo excedeu o tamanho limite de %d";
+$a->strings["You have reached your limit of %1$.0f Mbytes attachment storage."] = "Você atingiu o seu limite de %1$.0f Mbytes de armazenamento de anexos.";
+$a->strings["File upload failed. Possible system limit or action terminated."] = "Não foi possível enviar o arquivo. Provável limite do sistema ou a ação foi encerrada.";
+$a->strings["Stored file could not be verified. Upload failed."] = "Não foi possível verificar o arquivo armazenado. Falha no envio.";
+$a->strings["Path not available."] = "O caminho não está disponível.";
+$a->strings["Empty pathname"] = "O nome do caminho está em branco";
+$a->strings["duplicate filename or path"] = "nome de arquivo ou caminho duplicado";
+$a->strings["Path not found."] = "Caminho não encontrado.";
+$a->strings["mkdir failed."] = "mkdir falhou.";
+$a->strings["database storage failed."] = "armazenamento de banco de dados falhou.";
$a->strings["photo"] = "foto";
$a->strings["event"] = "evento";
$a->strings["channel"] = "canal";
@@ -29,7 +102,6 @@ $a->strings["%1\$s poked %2\$s"] = "%1\$s cutucou %2\$s";
$a->strings["poked"] = "cutucado";
$a->strings["__ctx:mood__ %1\$s is %2\$s"] = "%1\$s está %2\$s";
$a->strings["Select"] = "Selecionar";
-$a->strings["Delete"] = "Excluir";
$a->strings["Private Message"] = "Mensagem privada";
$a->strings["Message is verified"] = "A mensagem foi verificada";
$a->strings["View %s's profile @ %s"] = "Ver o perfil de %s's @ %s";
@@ -49,9 +121,9 @@ $a->strings["View Status"] = "Ver status";
$a->strings["View Profile"] = "Ver perfil";
$a->strings["View Photos"] = "Ver fotos";
$a->strings["Matrix Activity"] = "Atividade na matriz";
+$a->strings["Connect"] = "Conectar";
$a->strings["Edit Contact"] = "Editar contato";
$a->strings["Send PM"] = "Enviar MP";
-$a->strings["Poke"] = "Cutucar";
$a->strings["%s likes this."] = "%s gostou disso.";
$a->strings["%s doesn't like this."] = "%s não gostou disso.";
$a->strings["<span %1\$s>%2\$d people</span> like this."] = array(
@@ -77,7 +149,6 @@ $a->strings["Tag term:"] = "Etiqueta:";
$a->strings["Save to Folder:"] = "Salvar para a pasta:";
$a->strings["Where are you right now?"] = "Onde você está agora?";
$a->strings["Expires YYYY-MM-DD HH:MM"] = "Expira YYYY-MM-DD HH:MM";
-$a->strings["Preview"] = "Pré-visualizar";
$a->strings["Share"] = "Compartilhar";
$a->strings["Page link title"] = "Título do link da página";
$a->strings["Post as"] = "Publicar como";
@@ -123,166 +194,91 @@ $a->strings["Channel"] = "Canal";
$a->strings["Status Messages and Posts"] = "Mensagens de status e publicações";
$a->strings["About"] = "Sobre";
$a->strings["Profile Details"] = "Detalhes do perfil";
-$a->strings["Photos"] = "Fotos";
-$a->strings["Photo Albums"] = "Ãlbuns de fotos";
-$a->strings["Files"] = "Arquivos";
$a->strings["Files and Storage"] = "Arquivos e armazenamento";
$a->strings["Chatrooms"] = "Salas de bate-papo";
-$a->strings["Events"] = "Eventos";
-$a->strings["Events and Calendar"] = "Eventos e calendário";
-$a->strings["Bookmarks"] = "Links guardados";
$a->strings["Saved Bookmarks"] = "Links guardados";
-$a->strings["Webpages"] = "Páginas web";
$a->strings["Manage Webpages"] = "Administrar páginas web";
-$a->strings["New Page"] = "Nova página";
-$a->strings["Edit"] = "Editar";
-$a->strings["View"] = "Ver";
-$a->strings["Actions"] = "Ações";
-$a->strings["Page Link"] = "Link da página";
-$a->strings["Title"] = "Título";
-$a->strings["Created"] = "Criado";
-$a->strings["Edited"] = "Editado";
-$a->strings["Can view my \"public\" stream and posts"] = "Pode ver meus fluxo e publicações \"públicos\"";
-$a->strings["Can view my \"public\" channel profile"] = "Pode ver o perfil \"público\" do meu canal";
-$a->strings["Can view my \"public\" photo albums"] = "Pode ver meus álbuns de fotos \"públicos\"";
-$a->strings["Can view my \"public\" address book"] = "Pode ver meu livro de endereços \"público\"";
-$a->strings["Can view my \"public\" file storage"] = "Pode ver meu armazenamento de arquivos \"público\"";
-$a->strings["Can view my \"public\" pages"] = "Pode ver minhas páginas \"públicas\"";
-$a->strings["Can send me their channel stream and posts"] = "Pode me enviar seu fluxo e publicações";
-$a->strings["Can post on my channel page (\"wall\")"] = "Pode publicar na página do meu canal (\"mural\")";
-$a->strings["Can comment on my posts"] = "Pode comentar minhas publicações";
-$a->strings["Can send me private mail messages"] = "Pode me enviar mensagens privadas";
-$a->strings["Can post photos to my photo albums"] = "Pode publicar fotos nos meus álbuns de fotos";
-$a->strings["Can forward to all my channel contacts via post @mentions"] = "Pode encaminhar para todos os contatos do meu canal via @menções na publicação";
-$a->strings["Advanced - useful for creating group forum channels"] = "Avançado - útil para criar canais de fóruns de grupos";
-$a->strings["Can chat with me (when available)"] = "Pode conversar comigo (quando disponívei)";
-$a->strings["Can write to my \"public\" file storage"] = "Pode escrever em meu armazenamento de arquivos \"público\"";
-$a->strings["Can edit my \"public\" pages"] = "Pode editar minhas páginas \"públicas\"";
-$a->strings["Can source my \"public\" posts in derived channels"] = "Pode usar minhas publicações \"públicas\" como fonte para canais derivados";
-$a->strings["Somewhat advanced - very useful in open communities"] = "Avançado - muito útil em comunidades abertas";
-$a->strings["Can administer my channel resources"] = "Pode administrar os recursos do meu canal";
-$a->strings["Extremely advanced. Leave this alone unless you know what you are doing"] = "Extremamente avançado. Não mexa nisso a não ser que saiba o que está fazendo";
-$a->strings["Not a valid email address"] = "Não é um endereço de e-mail válido";
-$a->strings["Your email domain is not among those allowed on this site"] = "O domínio do seu e-mail não está entre os permitidos neste site";
-$a->strings["Your email address is already registered at this site."] = "O seu endereço de e-mail já está registrado neste site.";
-$a->strings["An invitation is required."] = "É necessário um convite.";
-$a->strings["Invitation could not be verified."] = "Não foi possível verificar o convite.";
-$a->strings["Please enter the required information."] = "Por favor, forneça a informação solicitada.";
-$a->strings["Failed to store account information."] = "Não foi possível armazenar a informação da conta.";
-$a->strings["Registration request at %s"] = "Solicitação de registro em %s";
-$a->strings["Administrator"] = "Administrador";
-$a->strings["your registration password"] = "sua senha de registro";
-$a->strings["Registration details for %s"] = "Detalhes do registro de %s";
-$a->strings["Account approved."] = "A conta foi aprovada.";
-$a->strings["Registration revoked for %s"] = "O registro de %s foi revogado";
-$a->strings["Permission denied."] = "Permissão negada.";
-$a->strings["Image exceeds website size limit of %lu bytes"] = "A imagem excede o limite de tamanho do site, que é de %";
-$a->strings["Image file is empty."] = "O arquivo de imagem está vazio.";
-$a->strings["Unable to process image"] = "Não foi possível processar a imagem";
-$a->strings["Photo storage failed."] = "Não foi possível armazenar a foto.";
-$a->strings["Upload New Photos"] = "Enviar novas fotos";
-$a->strings["Visible to everybody"] = "Visível para todos";
-$a->strings["Show"] = "Exibir";
-$a->strings["Don't show"] = "Não exibir";
-$a->strings["Permissions"] = "Permissões";
-$a->strings["Close"] = "Fechar";
-$a->strings[" and "] = " e ";
-$a->strings["public profile"] = "perfil público";
-$a->strings["%1\$s changed %2\$s to &ldquo;%3\$s&rdquo;"] = "%1\$s mudou %2\$s para &ldquo;%3\$s&rdquo;";
-$a->strings["Visit %1\$s's %2\$s"] = "Visite o %2\$s de %1\$s";
-$a->strings["%1\$s has an updated %2\$s, changing %3\$s."] = "%1\$s atualizou %2\$s, alterando %3\$s.";
-$a->strings["Public Timeline"] = "Linha do tempo pública";
-$a->strings["Item was not found."] = "O item não foi encontrado.";
-$a->strings["No source file."] = "Nenhum arquivo de origem.";
-$a->strings["Cannot locate file to replace"] = "Não foi possível locar o arquivo a ser substituído";
-$a->strings["Cannot locate file to revise/update"] = "Não foi possível localizar o arquivo a ser revisado/atualizado";
-$a->strings["File exceeds size limit of %d"] = "O arquivo excedeu o tamanho limite de %d";
-$a->strings["You have reached your limit of %1$.0f Mbytes attachment storage."] = "Você atingiu o seu limite de %1$.0f Mbytes de armazenamento de anexos.";
-$a->strings["File upload failed. Possible system limit or action terminated."] = "Não foi possível enviar o arquivo. Provável limite do sistema ou a ação foi encerrada.";
-$a->strings["Stored file could not be verified. Upload failed."] = "Não foi possível verificar o arquivo armazenado. Falha no envio.";
-$a->strings["Path not available."] = "O caminho não está disponível.";
-$a->strings["Empty pathname"] = "O nome do caminho está em branco";
-$a->strings["duplicate filename or path"] = "nome de arquivo ou caminho duplicado";
-$a->strings["Path not found."] = "Caminho não encontrado.";
-$a->strings["mkdir failed."] = "mkdir falhou.";
-$a->strings["database storage failed."] = "armazenamento de banco de dados falhou.";
-$a->strings["Permission denied"] = "Permissão negada";
-$a->strings["(Unknown)"] = "(Desconhecido)";
-$a->strings["Item not found."] = "O item não foi encontrado.";
-$a->strings["Collection not found."] = "A coleção não foi encontrada.";
-$a->strings["Collection is empty."] = "A coleção está vazia.";
-$a->strings["Collection: %s"] = "Coleção: %s";
-$a->strings["Connection: %s"] = "Conexão: %s";
-$a->strings["Connection not found."] = "A conexão não foi encontrada.";
-$a->strings["l F d, Y \\@ g:i A"] = "l F d, Y \\@ g:i A";
-$a->strings["Starts:"] = "Início:";
-$a->strings["Finishes:"] = "Fim:";
-$a->strings["Location:"] = "Localização:";
-$a->strings["Logout"] = "Sair";
-$a->strings["End this session"] = "Encerrar essa sessão";
-$a->strings["Home"] = "Ver canal";
-$a->strings["Your posts and conversations"] = "Suas publicações e conversas";
-$a->strings["Your profile page"] = "A página do seu perfil";
-$a->strings["Edit Profiles"] = "Editar perfis";
-$a->strings["Manage/Edit profiles"] = "Administrar/Editar perfis";
-$a->strings["Your photos"] = "Suas fotos";
-$a->strings["Your files"] = "Seus arquivos";
-$a->strings["Chat"] = "Bate-papo";
-$a->strings["Your chatrooms"] = "Suas salas de bate-papo";
-$a->strings["Your events"] = "Seus eventos";
-$a->strings["Your bookmarks"] = "Seus links guardados";
-$a->strings["Your webpages"] = "Suas páginas web";
-$a->strings["Login"] = "Entrar";
-$a->strings["Sign in"] = "Entrar";
-$a->strings["%s - click to logout"] = "%s - clique para sair";
-$a->strings["Click to authenticate to your home hub"] = "Clique para se autenticar com seu hub de origem";
-$a->strings["Home Page"] = "Página inicial";
-$a->strings["Register"] = "Registrar";
-$a->strings["Create an account"] = "Criar uma conta";
-$a->strings["Help"] = "Ajuda";
-$a->strings["Help and documentation"] = "Ajuda e documentação";
-$a->strings["Apps"] = "Aplicações";
-$a->strings["Applications, utilities, links, games"] = "Aplicações, utilitários, links, jogos";
-$a->strings["Search"] = "Pesquisar";
-$a->strings["Search site content"] = "Pesquisar o conteúdo do site";
-$a->strings["Directory"] = "Diretório";
-$a->strings["Channel Locator"] = "Localizador de canais";
-$a->strings["Matrix"] = "Matriz";
-$a->strings["Your matrix"] = "Sua matriz";
-$a->strings["Mark all matrix notifications seen"] = "Marcar todas as notificações da matriz como vistas";
-$a->strings["Channel Home"] = "Página inicial do canal";
-$a->strings["Channel home"] = "Página inicial do canal";
-$a->strings["Mark all channel notifications seen"] = "Marcar todas as notificações de canais como vistas";
-$a->strings["Connections"] = "Conexões";
-$a->strings["Notices"] = "Notificações";
-$a->strings["Notifications"] = "Notificações";
-$a->strings["See all notifications"] = "Ver todas as notificações";
-$a->strings["Mark all system notifications seen"] = "Marcar todas as notificações de sistema como vistas";
-$a->strings["Mail"] = "Mensagens";
-$a->strings["Private mail"] = "Mensagens privadas";
-$a->strings["See all private messages"] = "Ver todas as mensagens privadas";
-$a->strings["Mark all private messages seen"] = "Marcar todas as mensagens privadas como vistas";
-$a->strings["Inbox"] = "Recebidas";
-$a->strings["Outbox"] = "Enviadas";
-$a->strings["New Message"] = "Nova mensagem";
-$a->strings["Event Calendar"] = "Agenda de eventos";
-$a->strings["See all events"] = "Ver todos os eventos";
-$a->strings["Mark all events seen"] = "Marcar todos os eventos como vistos";
-$a->strings["Channel Select"] = "Seleção de canal";
-$a->strings["Manage Your Channels"] = "Gerencie os seus canais";
-$a->strings["Settings"] = "Configurações";
-$a->strings["Account/Channel Settings"] = "Configurações da conta/canal";
-$a->strings["Manage/Edit Friends and Connections"] = "Gerenciar/editar os amigos e as conexões";
-$a->strings["Admin"] = "Admin";
-$a->strings["Site Setup and Configuration"] = "Configuração do site";
-$a->strings["Nothing new here"] = "Nada de novo aqui";
-$a->strings["Please wait..."] = "Por favor, aguarde...";
$a->strings["%1\$s's bookmarks"] = "Links guardados de %1\$s";
-$a->strings["Missing room name"] = "Nome da sala vazio";
-$a->strings["Duplicate room name"] = "Nome da sala duplicado";
-$a->strings["Invalid room specifier."] = "Especificador de sala inválido.";
-$a->strings["Room not found."] = "A sala não foi encontrada.";
-$a->strings["Room is full"] = "A sala está cheia";
+$a->strings["prev"] = "anterior";
+$a->strings["first"] = "primeiro";
+$a->strings["last"] = "último";
+$a->strings["next"] = "próximo";
+$a->strings["older"] = "mais antigo";
+$a->strings["newer"] = "mais recente";
+$a->strings["No connections"] = "Nenhuma conexão";
+$a->strings["%d Connection"] = array(
+ 0 => "%d conexão",
+ 1 => "%d conexões",
+);
+$a->strings["View Connections"] = "Ver conexões";
+$a->strings["Save"] = "Salvar";
+$a->strings["poke"] = "cutucar";
+$a->strings["ping"] = "pingar";
+$a->strings["pinged"] = "pingou";
+$a->strings["prod"] = "espetar";
+$a->strings["prodded"] = "espetou";
+$a->strings["slap"] = "estapear";
+$a->strings["slapped"] = "estapeou";
+$a->strings["finger"] = "dar um toque";
+$a->strings["fingered"] = "deu um toque";
+$a->strings["rebuff"] = "rebater";
+$a->strings["rebuffed"] = "rebateu";
+$a->strings["happy"] = "feliz";
+$a->strings["sad"] = "triste";
+$a->strings["mellow"] = "suave";
+$a->strings["tired"] = "cansad@";
+$a->strings["perky"] = "animad@";
+$a->strings["angry"] = "nervos@";
+$a->strings["stupified"] = "embasbacad@";
+$a->strings["puzzled"] = "confus@";
+$a->strings["interested"] = "interessad@";
+$a->strings["bitter"] = "amarg@";
+$a->strings["cheerful"] = "animad@";
+$a->strings["alive"] = "viv@";
+$a->strings["annoyed"] = "aborrecid@";
+$a->strings["anxious"] = "ansios@";
+$a->strings["cranky"] = "irritad@";
+$a->strings["disturbed"] = "perturbad@";
+$a->strings["frustrated"] = "frustrad@";
+$a->strings["depressed"] = "deprimido";
+$a->strings["motivated"] = "motivad@";
+$a->strings["relaxed"] = "relaxad@";
+$a->strings["surprised"] = "surpres@";
+$a->strings["Monday"] = "Segunda";
+$a->strings["Tuesday"] = "Terça";
+$a->strings["Wednesday"] = "Quarta";
+$a->strings["Thursday"] = "Quinta";
+$a->strings["Friday"] = "Sexta";
+$a->strings["Saturday"] = "SaÌbado";
+$a->strings["Sunday"] = "Domingo";
+$a->strings["January"] = "Janeiro";
+$a->strings["February"] = "Fevereiro";
+$a->strings["March"] = "Março";
+$a->strings["April"] = "Abril";
+$a->strings["May"] = "Maio";
+$a->strings["June"] = "Junho";
+$a->strings["July"] = "Julho";
+$a->strings["August"] = "Agosto";
+$a->strings["September"] = "Setembro";
+$a->strings["October"] = "Outubro";
+$a->strings["November"] = "Novembro";
+$a->strings["December"] = "Dezembro";
+$a->strings["unknown.???"] = "desconhecido.???";
+$a->strings["bytes"] = "bytes";
+$a->strings["remove category"] = "remover categoria";
+$a->strings["remove from file"] = "remover do arquivo";
+$a->strings["Click to open/close"] = "Clique para abrir/fechar";
+$a->strings["Link to Source"] = "Link para a origem";
+$a->strings["Select a page layout: "] = "Selecione um layout de página:";
+$a->strings["default"] = "default";
+$a->strings["Page content type: "] = "Tipo de conteúdo da página: ";
+$a->strings["Select an alternate language"] = "Selecione um idioma alternativo";
+$a->strings["activity"] = "atividade";
+$a->strings["Design"] = "Design";
+$a->strings["Blocks"] = "Blocos";
+$a->strings["Menus"] = "Menus";
+$a->strings["Layouts"] = "Layouts";
+$a->strings["Pages"] = "Páginas";
$a->strings["Tags"] = "Etiquetas";
$a->strings["Keywords"] = "Palavras-chave";
$a->strings["have"] = "tenho";
@@ -293,13 +289,11 @@ $a->strings["like"] = "gostei";
$a->strings["likes"] = "gosta";
$a->strings["dislike"] = "não gostei";
$a->strings["dislikes"] = "desgosta";
+$a->strings["__ctx:noun__ Like"] = array(
+ 0 => "gostou",
+ 1 => "gostaram",
+);
$a->strings["Default"] = "Default";
-$a->strings["Unknown | Not categorised"] = "Desconhecido | Não categorizado";
-$a->strings["Block immediately"] = "Bloquear imediatamente";
-$a->strings["Shady, spammer, self-marketer"] = "Suspeito, spammer, propagandista";
-$a->strings["Known to me, but no opinion"] = "Eu conheço, mas não tenho opinião a respeito";
-$a->strings["OK, probably harmless"] = "Ok, provavelmente inofensivo";
-$a->strings["Reputable, has my trust"] = "Boa reputação, tem minha confiança";
$a->strings["Frequently"] = "Frequentemente";
$a->strings["Hourly"] = "De hora em hora";
$a->strings["Twice daily"] = "Duas vezes ao dia";
@@ -339,8 +333,29 @@ $a->strings["%d connection in common"] = array(
1 => "%d conexões em comum",
);
$a->strings["show more"] = "exibir mais";
+$a->strings["l F d, Y \\@ g:i A"] = "l F d, Y \\@ g:i A";
+$a->strings["Starts:"] = "Início:";
+$a->strings["Finishes:"] = "Fim:";
+$a->strings["Location:"] = "Localização:";
$a->strings["This event has been added to your calendar."] = "Esse evento foi adicionado ao seu calendário.";
-$a->strings["Edit File properties"] = "Editar propriedades do arquivo";
+$a->strings["Not a valid email address"] = "Não é um endereço de e-mail válido";
+$a->strings["Your email domain is not among those allowed on this site"] = "O domínio do seu e-mail não está entre os permitidos neste site";
+$a->strings["Your email address is already registered at this site."] = "O seu endereço de e-mail já está registrado neste site.";
+$a->strings["An invitation is required."] = "É necessário um convite.";
+$a->strings["Invitation could not be verified."] = "Não foi possível verificar o convite.";
+$a->strings["Please enter the required information."] = "Por favor, forneça a informação solicitada.";
+$a->strings["Failed to store account information."] = "Não foi possível armazenar a informação da conta.";
+$a->strings["Registration confirmation for %s"] = "Confirmação de registro para %s";
+$a->strings["Registration request at %s"] = "Solicitação de registro em %s";
+$a->strings["Administrator"] = "Administrador";
+$a->strings["your registration password"] = "sua senha de registro";
+$a->strings["Registration details for %s"] = "Detalhes do registro de %s";
+$a->strings["Account approved."] = "A conta foi aprovada.";
+$a->strings["Registration revoked for %s"] = "O registro de %s foi revogado";
+$a->strings["Account verified. Please login."] = "Conta verificada. Por favor faça o login.";
+$a->strings["Click here to upgrade."] = "Clique aqui para atualizar.";
+$a->strings["This action exceeds the limits set by your subscription plan."] = "Essa ação excede o limite definido para o seu plano de assinatura.";
+$a->strings["This action is not available under your subscription plan."] = "Essa ação não está disponível para o seu plano de assinatura.";
$a->strings["Miscellaneous"] = "Miscelânea";
$a->strings["year"] = "ano";
$a->strings["month"] = "mês";
@@ -368,6 +383,7 @@ $a->strings["Newest to Oldest"] = "Das mais recentes para as mais antigas";
$a->strings["Enable Safe Search"] = "Habilitar busca tranquila";
$a->strings["Disable Safe Search"] = "Desabilitar busca tranquila";
$a->strings["Safe Mode"] = "Modo tranquilo";
+$a->strings["Attachments:"] = "Anexos:";
$a->strings["Red Matrix Notification"] = "Notificação da Red Matrix";
$a->strings["redmatrix"] = "redmatrix";
$a->strings["Thank You,"] = "Obrigado(a),";
@@ -407,15 +423,45 @@ $a->strings["%1\$s, you've received [zrl=%2\$s]a friend suggestion[/zrl] for %3\
$a->strings["Name:"] = "Nome:";
$a->strings["Photo:"] = "Foto:";
$a->strings["Please visit %s to approve or reject the suggestion."] = "Por favor, visite %s para aprovar ou rejeitar a sugestão.";
+$a->strings["[Red:Notify]"] = "[Red:Notify]";
+$a->strings["parent"] = "nível superior";
+$a->strings["Collection"] = "Coleção";
+$a->strings["Principal"] = "Principal";
+$a->strings["Addressbook"] = "Livro de endereços";
+$a->strings["Calendar"] = "Calendário";
+$a->strings["Schedule Inbox"] = "Caixa de entrada da agenda";
+$a->strings["Schedule Outbox"] = "Caixa de saída da agenda";
+$a->strings["%1\$s used"] = "%1\$s usados";
+$a->strings["%1\$s used of %2\$s (%3\$s&#37;)"] = "%1\$s usados de %2\$s (%3\$s&#37;)";
+$a->strings["Name"] = "Nome";
+$a->strings["Type"] = "Tipo";
+$a->strings["Size"] = "Tamanho";
+$a->strings["Last Modified"] = "Última modificação";
+$a->strings["Total"] = "Total";
+$a->strings["Create new folder"] = "Criar uma nova pasta";
+$a->strings["Create"] = "Criar";
+$a->strings["Upload file"] = "Enviar arquivo";
+$a->strings["Upload"] = "Enviar";
+$a->strings["Missing room name"] = "Nome da sala vazio";
+$a->strings["Duplicate room name"] = "Nome da sala duplicado";
+$a->strings["Invalid room specifier."] = "Especificador de sala inválido.";
+$a->strings["Room not found."] = "A sala não foi encontrada.";
+$a->strings["Room is full"] = "A sala está cheia";
$a->strings["General Features"] = "Recursos gerais";
$a->strings["Content Expiration"] = "Expiração de conteúdo";
$a->strings["Remove posts/comments and/or private messages at a future time"] = "Remover publicações/comentários e/ou mensagens privadas num momento futuro.";
$a->strings["Multiple Profiles"] = "Múltiplos perfis";
$a->strings["Ability to create multiple profiles"] = "Possibilidade de criar múltiplos perfis";
+$a->strings["Advanced Profiles"] = "Perfis avançados";
+$a->strings["Additional profile sections and selections"] = "Seções e seleções adicionais no perfil";
+$a->strings["Profile Import/Export"] = "Importar/exportar perfis";
+$a->strings["Save and load profile details across sites/channels"] = "Salvar e carregar detalhes de perfis entre sites/canais";
$a->strings["Web Pages"] = "Páginas web";
$a->strings["Provide managed web pages on your channel"] = "Fornece páginas web gerenciáveis no seu canal";
$a->strings["Private Notes"] = "Notas privadas";
$a->strings["Enables a tool to store notes and reminders"] = "Habilita uma ferramenta para guardar notas e lembretes";
+$a->strings["Navigation Channel Select"] = "Seletor de canais na navegação";
+$a->strings["Change channels directly from within the navigation dropdown menu"] = "Trocar canais diretamente a partir do menu expansível na navegação";
$a->strings["Extended Identity Sharing"] = "Compartilhamento estendido de identidade";
$a->strings["Share your identity with all websites on the internet. When disabled, identity is only shared with sites in the matrix."] = "Compartilhar sua identidade com todos os websites na internet. Quando desabilitado, sua identidade é compartilhada apenas com outros sites na matrix.";
$a->strings["Expert Mode"] = "Modo Expert";
@@ -423,8 +469,8 @@ $a->strings["Enable Expert Mode to provide advanced configuration options"] = "O
$a->strings["Premium Channel"] = "Canal premium";
$a->strings["Allows you to set restrictions and terms on those that connect with your channel"] = "Permite definir restrições e termos para aqueles que se conectarem ao seu canal";
$a->strings["Post Composition Features"] = "Recursos de composição de publicações";
-$a->strings["Richtext Editor"] = "Editor richtext";
-$a->strings["Enable richtext editor"] = "Habilita o editor richtext";
+$a->strings["Use Markdown"] = "Usar Markdown";
+$a->strings["Allow use of \"Markdown\" to format posts"] = "Permitir o uso de \"Markdown\" para formatar publicações";
$a->strings["Post Preview"] = "Pré-visualizar a publicação";
$a->strings["Allow previewing posts and comments before publishing them"] = "Permite visualizar publicações e comentários antes de publicá-los";
$a->strings["Channel Sources"] = "Fontes do canal";
@@ -464,9 +510,26 @@ $a->strings["Channel is blocked on this site."] = "O canal está bloqueado neste
$a->strings["Channel location missing."] = "A localização do canal foi perdida";
$a->strings["Response from remote channel was incomplete."] = "A resposta do canal remoto está incompleta.";
$a->strings["Channel was deleted and no longer exists."] = "O canal foi deletado e não existe mais.";
+$a->strings["Protocol disabled."] = "Protocolo desabilitado.";
$a->strings["Channel discovery failed."] = "A descoberta de canais falhou.";
$a->strings["local account not found."] = "a conta local não foi encontrada.";
$a->strings["Cannot connect to yourself."] = "Não é possível conectar-se consigo mesmo.";
+$a->strings["Permission denied"] = "Permissão negada";
+$a->strings["(Unknown)"] = "(Desconhecido)";
+$a->strings["Visible to anybody on the internet."] = "Visívil para todos na internet.";
+$a->strings["Visible to you only."] = "Visível somente para você.";
+$a->strings["Visible to anybody in this network."] = "Visível para todos nesta rede.";
+$a->strings["Visible to anybody authenticated."] = "Visível para todos autenticados.";
+$a->strings["Visible to anybody on %s."] = "Visível para todos em %s.";
+$a->strings["Visible to all connections."] = "Visível para quaisquer conexões.";
+$a->strings["Visible to approved connections."] = "Visível para conexões aprovadas.";
+$a->strings["Visible to specific connections."] = "Visível para conexões específicas.";
+$a->strings["Item not found."] = "O item não foi encontrado.";
+$a->strings["Collection not found."] = "A coleção não foi encontrada.";
+$a->strings["Collection is empty."] = "A coleção está vazia.";
+$a->strings["Collection: %s"] = "Coleção: %s";
+$a->strings["Connection: %s"] = "Conexão: %s";
+$a->strings["Connection not found."] = "A conexão não foi encontrada.";
$a->strings["A deleted group with this name was revived. Existing item permissions <strong>may</strong> apply to this group and any future members. If this is not what you intended, please create another group with a different name."] = "Um grupo com esse nome, anteriormente excluído, foi reativado. Permissões de itens já existentes <strong>poderão</strong> ser aplicadas a esse grupo e qualquer futuros membros. Se não é essa a sua intenção, favor criar outro grupo com um nome diferente.";
$a->strings["Default privacy group for new contacts"] = "Grupo de privacidade padrão para novos contatos";
$a->strings["All Channels"] = "Todos os canais";
@@ -476,6 +539,13 @@ $a->strings["Edit collection"] = "Editar coleção";
$a->strings["Create a new collection"] = "Criar uma nova coleção";
$a->strings["Channels not in any collection"] = "Canais que não estão em nenhuma coleção";
$a->strings["add"] = "adicionar";
+$a->strings["Image/photo"] = "Imagem/foto";
+$a->strings["Encrypted content"] = "Conteúdo criptografado";
+$a->strings["QR code"] = "código QR";
+$a->strings["%1\$s wrote the following %2\$s %3\$s"] = "%1\$s escreveu a seguinte %2\$s %3\$s";
+$a->strings["post"] = "publicação";
+$a->strings["$1 spoiler"] = "$1 spoiler";
+$a->strings["$1 wrote:"] = "$1 escreveu:";
$a->strings["Unable to obtain identity information from database"] = "Não foi possível obter a informação da identidade a partir do banco de dados";
$a->strings["Empty name"] = "O nome está em branco";
$a->strings["Name too long"] = "O nome é muito grande";
@@ -488,7 +558,6 @@ $a->strings["Default Profile"] = "Perfil padrão";
$a->strings["Friends"] = "Amigos";
$a->strings["Requested channel is not available."] = "Canal solicitado não está disponível.";
$a->strings["Requested profile is not available."] = "O perfil solicitado não está disponível.";
-$a->strings["Connect"] = "Conectar";
$a->strings["Change profile photo"] = "Mudar a foto do perfil";
$a->strings["Profiles"] = "Perfis";
$a->strings["Manage/edit profiles"] = "Administrar/editar perfis";
@@ -509,8 +578,8 @@ $a->strings["Birthdays this week:"] = "Aniversários nesta semana:";
$a->strings["[No description]"] = "[Sem descrição]";
$a->strings["Event Reminders"] = "Lembretes de eventos";
$a->strings["Events this week:"] = "Eventos nesta semana:";
-$a->strings["Profile"] = "Perfil";
$a->strings["Full Name:"] = "Nome completo:";
+$a->strings["Like this channel"] = "Gostar deste canal";
$a->strings["j F, Y"] = "j \\d\\e F, Y";
$a->strings["j F"] = "j \\d\\e F";
$a->strings["Birthday:"] = "Aniversário:";
@@ -534,106 +603,58 @@ $a->strings["Film/dance/culture/entertainment:"] = "Filmes/dança/cultura/entret
$a->strings["Love/Romance:"] = "Amor/romance:";
$a->strings["Work/employment:"] = "Trabalho/emprego:";
$a->strings["School/education:"] = "Escola/educação:";
-$a->strings["view full size"] = "ver na tela inteira";
-$a->strings["prev"] = "anterior";
-$a->strings["first"] = "primeiro";
-$a->strings["last"] = "último";
-$a->strings["next"] = "próximo";
-$a->strings["older"] = "mais antigo";
-$a->strings["newer"] = "mais recente";
-$a->strings["No connections"] = "Nenhuma conexão";
-$a->strings["%d Connection"] = array(
- 0 => "%d conexão",
- 1 => "%d conexões",
-);
-$a->strings["View Connections"] = "Ver conexões";
-$a->strings["Save"] = "Salvar";
-$a->strings["poke"] = "cutucar";
-$a->strings["ping"] = "pingar";
-$a->strings["pinged"] = "pingou";
-$a->strings["prod"] = "espetar";
-$a->strings["prodded"] = "espetou";
-$a->strings["slap"] = "estapear";
-$a->strings["slapped"] = "estapeou";
-$a->strings["finger"] = "dar um toque";
-$a->strings["fingered"] = "deu um toque";
-$a->strings["rebuff"] = "rebater";
-$a->strings["rebuffed"] = "rebateu";
-$a->strings["happy"] = "feliz";
-$a->strings["sad"] = "triste";
-$a->strings["mellow"] = "suave";
-$a->strings["tired"] = "cansad@";
-$a->strings["perky"] = "animad@";
-$a->strings["angry"] = "nervos@";
-$a->strings["stupified"] = "embasbacad@";
-$a->strings["puzzled"] = "confus@";
-$a->strings["interested"] = "interessad@";
-$a->strings["bitter"] = "amarg@";
-$a->strings["cheerful"] = "animad@";
-$a->strings["alive"] = "viv@";
-$a->strings["annoyed"] = "aborrecid@";
-$a->strings["anxious"] = "ansios@";
-$a->strings["cranky"] = "irritad@";
-$a->strings["disturbed"] = "perturbad@";
-$a->strings["frustrated"] = "frustrad@";
-$a->strings["depressed"] = "deprimido";
-$a->strings["motivated"] = "motivad@";
-$a->strings["relaxed"] = "relaxad@";
-$a->strings["surprised"] = "surpres@";
-$a->strings["Monday"] = "Segunda";
-$a->strings["Tuesday"] = "Terça";
-$a->strings["Wednesday"] = "Quarta";
-$a->strings["Thursday"] = "Quinta";
-$a->strings["Friday"] = "Sexta";
-$a->strings["Saturday"] = "SaÌbado";
-$a->strings["Sunday"] = "Domingo";
-$a->strings["January"] = "Janeiro";
-$a->strings["February"] = "Fevereiro";
-$a->strings["March"] = "Março";
-$a->strings["April"] = "Abril";
-$a->strings["May"] = "Maio";
-$a->strings["June"] = "Junho";
-$a->strings["July"] = "Julho";
-$a->strings["August"] = "Agosto";
-$a->strings["September"] = "Setembro";
-$a->strings["October"] = "Outubro";
-$a->strings["November"] = "Novembro";
-$a->strings["December"] = "Dezembro";
-$a->strings["unknown.???"] = "desconhecido.???";
-$a->strings["bytes"] = "bytes";
-$a->strings["remove category"] = "remover categoria";
-$a->strings["remove from file"] = "remover do arquivo";
-$a->strings["Click to open/close"] = "Clique para abrir/fechar";
-$a->strings["Link to Source"] = "Link para a origem";
-$a->strings["Select a page layout: "] = "Selecione um layout de página:";
-$a->strings["default"] = "default";
-$a->strings["Page content type: "] = "Tipo de conteúdo da página: ";
-$a->strings["Select an alternate language"] = "Selecione um idioma alternativo";
-$a->strings["activity"] = "atividade";
-$a->strings["Design"] = "Design";
-$a->strings["Blocks"] = "Blocos";
-$a->strings["Menus"] = "Menus";
-$a->strings["Layouts"] = "Layouts";
-$a->strings["Pages"] = "Páginas";
-$a->strings["Site Admin"] = "Administração do site";
-$a->strings["Address Book"] = "Livro de Endereços";
-$a->strings["Mood"] = "Humor";
-$a->strings["Probe"] = "Sonda";
-$a->strings["Suggest"] = "Sugerir";
-$a->strings["Update"] = "Atualizar";
-$a->strings["Install"] = "Instalar";
-$a->strings["Purchase"] = "Compras";
-$a->strings["Unknown"] = "Desconhecidos";
-$a->strings["Invalid data packet"] = "Pacote de dados inválido";
-$a->strings["Unable to verify channel signature"] = "Não foi possível verificar a assinatura do canal";
-$a->strings["Unable to verify site signature for %s"] = "Não foi possível verificar a assinatura do site para %s";
+$a->strings["Like this thing"] = "Gostar desta coisa";
+$a->strings["Logout"] = "Sair";
+$a->strings["End this session"] = "Encerrar essa sessão";
+$a->strings["Home"] = "Ver canal";
+$a->strings["Your posts and conversations"] = "Suas publicações e conversas";
+$a->strings["Your profile page"] = "A página do seu perfil";
+$a->strings["Edit Profiles"] = "Editar perfis";
+$a->strings["Manage/Edit profiles"] = "Administrar/Editar perfis";
+$a->strings["Edit your profile"] = "Editar seu perfil";
+$a->strings["Your photos"] = "Suas fotos";
+$a->strings["Your files"] = "Seus arquivos";
+$a->strings["Your chatrooms"] = "Suas salas de bate-papo";
+$a->strings["Your bookmarks"] = "Seus links guardados";
+$a->strings["Your webpages"] = "Suas páginas web";
+$a->strings["Sign in"] = "Entrar";
+$a->strings["%s - click to logout"] = "%s - clique para sair";
+$a->strings["Click to authenticate to your home hub"] = "Clique para se autenticar com seu hub de origem";
+$a->strings["Home Page"] = "Página inicial";
+$a->strings["Register"] = "Registrar";
+$a->strings["Create an account"] = "Criar uma conta";
+$a->strings["Help and documentation"] = "Ajuda e documentação";
+$a->strings["Apps"] = "Aplicações";
+$a->strings["Applications, utilities, links, games"] = "Aplicações, utilitários, links, jogos";
+$a->strings["Search site content"] = "Pesquisar o conteúdo do site";
+$a->strings["Channel Locator"] = "Localizador de canais";
+$a->strings["Your matrix"] = "Sua matriz";
+$a->strings["Mark all matrix notifications seen"] = "Marcar todas as notificações da matriz como vistas";
+$a->strings["Channel home"] = "Página inicial do canal";
+$a->strings["Mark all channel notifications seen"] = "Marcar todas as notificações de canais como vistas";
+$a->strings["Connections"] = "Conexões";
+$a->strings["Notices"] = "Notificações";
+$a->strings["Notifications"] = "Notificações";
+$a->strings["See all notifications"] = "Ver todas as notificações";
+$a->strings["Mark all system notifications seen"] = "Marcar todas as notificações de sistema como vistas";
+$a->strings["Private mail"] = "Mensagens privadas";
+$a->strings["See all private messages"] = "Ver todas as mensagens privadas";
+$a->strings["Mark all private messages seen"] = "Marcar todas as mensagens privadas como vistas";
+$a->strings["Inbox"] = "Recebidas";
+$a->strings["Outbox"] = "Enviadas";
+$a->strings["New Message"] = "Nova mensagem";
+$a->strings["Event Calendar"] = "Agenda de eventos";
+$a->strings["See all events"] = "Ver todos os eventos";
+$a->strings["Mark all events seen"] = "Marcar todos os eventos como vistos";
+$a->strings["Manage Your Channels"] = "Gerencie os seus canais";
+$a->strings["Account/Channel Settings"] = "Configurações da conta/canal";
+$a->strings["Admin"] = "Admin";
+$a->strings["Site Setup and Configuration"] = "Configuração do site";
+$a->strings["Please wait..."] = "Por favor, aguarde...";
$a->strings["No recipient provided."] = "Falta o destinatário.";
$a->strings["[no subject]"] = "[sem assunto]";
$a->strings["Unable to determine sender."] = "Não foi possível determinar o remetente.";
$a->strings["Stored post could not be verified."] = "Não foi possível verificar a publicação armazenada.";
-$a->strings["Click here to upgrade."] = "Clique aqui para atualizar.";
-$a->strings["This action exceeds the limits set by your subscription plan."] = "Essa ação excede o limite definido para o seu plano de assinatura.";
-$a->strings["This action is not available under your subscription plan."] = "Essa ação não está disponível para o seu plano de assinatura.";
$a->strings["System"] = "Sistema";
$a->strings["Create Personal App"] = "Crie aplicações pessoais";
$a->strings["Edit Personal App"] = "Edite aplicações pessoais";
@@ -661,6 +682,7 @@ $a->strings["Feature settings"] = "Configurações dos recursos";
$a->strings["Display settings"] = "Configurações de exibição";
$a->strings["Connected apps"] = "Aplicações conectadas";
$a->strings["Export channel"] = "Exportar o canal";
+$a->strings["Export content"] = "Exportar conteúdo";
$a->strings["Automatic Permissions (Advanced)"] = "Permissões automáticas (avançado)";
$a->strings["Premium Channel Settings"] = "Configurações de canal premium";
$a->strings["Check Mail"] = "Checar mensagens";
@@ -669,10 +691,6 @@ $a->strings["Bookmarked Chatrooms"] = "Salas de bate-papo guardadas";
$a->strings["Suggested Chatrooms"] = "Salas de bate-papo sugeridas";
$a->strings["Save to Folder"] = "Salvar para pasta";
$a->strings["View all"] = "Ver tudo";
-$a->strings["__ctx:noun__ Like"] = array(
- 0 => "gostou",
- 1 => "gostaram",
-);
$a->strings["__ctx:noun__ Dislike"] = array(
0 => "desgostou",
1 => "desgostaram",
@@ -722,6 +740,7 @@ $a->strings["Secret Passphrase"] = "Frase secreta";
$a->strings["Passphrase hint"] = "Dica da frase secreta";
$a->strings["Notice: Permissions have changed but have not yet been submitted."] = "Atenção: permissões foram modificadas mas ainda não foram enviadas.";
$a->strings["close all"] = "fechar tudo";
+$a->strings["Nothing new here"] = "Nada de novo aqui";
$a->strings["timeago.prefixAgo"] = "timeago.prefixAgo";
$a->strings["timeago.prefixFromNow"] = "timeago.prefixFromNow";
$a->strings["ago"] = "atrás";
@@ -741,6 +760,7 @@ $a->strings[" "] = " ";
$a->strings["timeago.numbers"] = "timeago.numbers";
$a->strings["New window"] = "Nova janela";
$a->strings["Open the selected location in a different window or browser tab"] = "Abre a localização selecionada em outra aba ou janela";
+$a->strings["User '%s' deleted"] = "O usuário/a '%s' foi deletado/a";
$a->strings["Male"] = "Masculino";
$a->strings["Female"] = "Feminino";
$a->strings["Currently Male"] = "Atualmente masculino";
@@ -801,7 +821,36 @@ $a->strings["Ask me"] = "Pergunte-me";
$a->strings["Logged out."] = "Você saiu.";
$a->strings["Failed authentication"] = "Não foi possível autenticar";
$a->strings["Login failed."] = "Não foi possível entrar.";
-$a->strings["The form security token was not correct. This probably happened because the form has been opened for too long (>3 hours) before submitting it."] = "O token de segurança do formulário não estava correto. Isso provavelmente aconteceu porque o formulário ficou aberto por muito tempo (>3 horas) antes da sua submissão.";
+$a->strings["Can view my normal stream and posts"] = "Pode ver meus fluxo e publicações normais";
+$a->strings["Can view my default channel profile"] = "Pode ver o perfil padrão do meu canal";
+$a->strings["Can view my photo albums"] = "Pode ver meus álbuns de fotos";
+$a->strings["Can view my connections"] = "Pode ver minhas conexões";
+$a->strings["Can view my file storage"] = "Pode ver meu armazenamento de arquivos";
+$a->strings["Can view my webpages"] = "Pode ver minhas páginas web";
+$a->strings["Can send me their channel stream and posts"] = "Pode me enviar seu fluxo e publicações";
+$a->strings["Can post on my channel page (\"wall\")"] = "Pode publicar na página do meu canal (\"mural\")";
+$a->strings["Can comment on or like my posts"] = "Pode comentar em ou gostar de minhas publicações";
+$a->strings["Can send me private mail messages"] = "Pode me enviar mensagens privadas";
+$a->strings["Can post photos to my photo albums"] = "Pode publicar fotos nos meus álbuns de fotos";
+$a->strings["Can like/dislike stuff"] = "Pode gostar/desgostar de coisas";
+$a->strings["Profiles and things other than posts/comments"] = "Perfis e coisas que não publicações/comentários";
+$a->strings["Can forward to all my channel contacts via post @mentions"] = "Pode encaminhar para todos os contatos do meu canal via @menções na publicação";
+$a->strings["Advanced - useful for creating group forum channels"] = "Avançado - útil para criar canais de fóruns de grupos";
+$a->strings["Can chat with me (when available)"] = "Pode conversar comigo (quando disponívei)";
+$a->strings["Can write to my file storage"] = "Pode escrever em meu armazenamento de arquivos";
+$a->strings["Can edit my webpages"] = "Pode editar minhas páginas web";
+$a->strings["Can source my public posts in derived channels"] = "Pode usar minhas publicações públicas como fonte para canais derivados";
+$a->strings["Somewhat advanced - very useful in open communities"] = "Avançado - muito útil em comunidades abertas";
+$a->strings["Can administer my channel resources"] = "Pode administrar os recursos do meu canal";
+$a->strings["Extremely advanced. Leave this alone unless you know what you are doing"] = "Extremamente avançado. Não mexa nisso a não ser que saiba o que está fazendo";
+$a->strings["Social Networking"] = "Rede social";
+$a->strings["Mostly Public"] = "Padrão público";
+$a->strings["Restricted"] = "Restrito";
+$a->strings["Private"] = "Privado";
+$a->strings["Community Forum"] = "Fórum de comunidade";
+$a->strings["Feed Republish"] = "Republicação de feed";
+$a->strings["Celebrity/Soapbox"] = "Personalidade/Palanque";
+$a->strings["Custom/Expert Mode"] = "Personalizado/Modo expert";
$a->strings["Set your current mood and tell your friends"] = "Marque seu humor atual e compartilhe com seus amigos";
$a->strings["Menu not found."] = "O menu não foi encontrado.";
$a->strings["Menu element updated."] = "O elemento de menu foi atualizado.";
@@ -827,167 +876,129 @@ $a->strings["Use Red magic-auth if available"] = "Usar <em>Red magic-auth</em> s
$a->strings["Open link in new window"] = "Abrir link em uma nova janela";
$a->strings["Order in list"] = "Ordem na lista";
$a->strings["Higher numbers will sink to bottom of listing"] = "Números mais altos descem para o fim da lista";
-$a->strings["Create"] = "Criar";
$a->strings["Menu item not found."] = "O item de menu não foi encontrado.";
$a->strings["Menu item deleted."] = "O item de menu foi deletado.";
$a->strings["Menu item could not be deleted."] = "Não foi possível deletar o item de menu.";
$a->strings["Edit Menu Element"] = "Editar elemento de menu";
$a->strings["Modify"] = "Modificar";
+$a->strings["Some blurb about what to do when you're new here"] = "Alguma coisa sobre o que fazer quando se é novo aqui";
$a->strings["sent you a private message"] = "lhe enviou uma mensagem privada";
$a->strings["added your channel"] = "adicionou seu canal";
$a->strings["posted an event"] = "publicou um evento";
$a->strings["network"] = "+ rede";
-$a->strings["Theme settings updated."] = "As configurações de tema foram atualizadas.";
-$a->strings["Site"] = "Site";
-$a->strings["Accounts"] = "Contas";
-$a->strings["Channels"] = "Canais";
-$a->strings["Plugins"] = "Plugins";
-$a->strings["Themes"] = "Temas";
-$a->strings["Server"] = "Servidor";
-$a->strings["DB updates"] = "Atualizações do Banco de Dados";
-$a->strings["Logs"] = "Logs";
-$a->strings["Plugin Features"] = "Recursos dos plugins";
-$a->strings["User registrations waiting for confirmation"] = "Registros de usuário aguardando confirmação";
-$a->strings["Message queues"] = "Filas de mensagem";
-$a->strings["Administration"] = "Administração";
-$a->strings["Summary"] = "Resumo";
-$a->strings["Registered users"] = "Usuários registrados";
-$a->strings["Pending registrations"] = "Registros pendentes";
-$a->strings["Version"] = "Versão";
-$a->strings["Active plugins"] = "Plugins ativos";
-$a->strings["Site settings updated."] = "As configurações de site foram atualizadas.";
+$a->strings["Name is required"] = "É necessário informar o nome";
+$a->strings["Key and Secret are required"] = "A chave e o segredo são obrigatórios";
+$a->strings["Passwords do not match. Password unchanged."] = "As senhas não correspondem. A senha não foi modificada.";
+$a->strings["Empty passwords are not allowed. Password unchanged."] = "Não é permitido uma senha em branco. A senha não foi modificada.";
+$a->strings["Password changed."] = "A senha foi modificada.";
+$a->strings["Password update failed. Please try again."] = "Não foi possível atualizar a senha. Por favor, tente novamente.";
+$a->strings["Not valid email."] = "Não é um e-mail válido";
+$a->strings["Protected email address. Cannot change to that email."] = "Endereço de e-mail protegido. Não é possível mudar para esse e-mail.";
+$a->strings["System failure storing new email. Please try again."] = "Falha do sistema ao armazenar novo e-mail. Por favor, tente novamente.";
+$a->strings["Settings updated."] = "As configurações foram atualizadas.";
+$a->strings["Add application"] = "Adicionar aplicação";
+$a->strings["Name of application"] = "Nome da aplicação";
+$a->strings["Consumer Key"] = "Chave de consumidor";
+$a->strings["Automatically generated - change if desired. Max length 20"] = "Gerado automaticamente - troque se desejável. Comprimento máximo 20";
+$a->strings["Consumer Secret"] = "Segredo de consumidor";
+$a->strings["Redirect"] = "Redirecionamento";
+$a->strings["Redirect URI - leave blank unless your application specifically requires this"] = "URI de redirecionamento - deixe em branco, a não ser que sua aplicação especificamente requeira isso";
+$a->strings["Icon url"] = "URL do ícone";
+$a->strings["Optional"] = "Opcional";
+$a->strings["You can't edit this application."] = "Você não pode editar esta aplicação.";
+$a->strings["Connected Apps"] = "Aplicações conectadas";
+$a->strings["Client key starts with"] = "Chave do cliente começa com";
+$a->strings["No name"] = "Sem nome";
+$a->strings["Remove authorization"] = "Remover autorização";
+$a->strings["No feature settings configured"] = "Não foi definida nenhuma configuração do recurso";
+$a->strings["Feature Settings"] = "Configurações do recurso";
+$a->strings["Account Settings"] = "Configurações da conta";
+$a->strings["Password Settings"] = "Configurações da senha";
+$a->strings["New Password:"] = "Nova senha:";
+$a->strings["Confirm:"] = "Confirme:";
+$a->strings["Leave password fields blank unless changing"] = "Deixe os campos de senha em branco, a não ser que você queira alterá-la";
+$a->strings["Email Address:"] = "Endereço de e-mail:";
+$a->strings["Remove Account"] = "Remover conta";
+$a->strings["Remove this account from this server including all its channels"] = "Remove esta conta deste servidor incluindo todos os seus canais.";
+$a->strings["Warning: This action is permanent and cannot be reversed."] = "Atenção: Esta ação é permanente e não pode ser revertida.";
+$a->strings["Off"] = "Desligado";
+$a->strings["On"] = "Ligado";
+$a->strings["Additional Features"] = "Recursos adicionais";
+$a->strings["Connector Settings"] = "Configurações do conector";
$a->strings["No special theme for mobile devices"] = "Sem tema especial para aparelhos móveis";
-$a->strings["No special theme for accessibility"] = "Sem tema especial para acessibilidade";
+$a->strings["%s - (Experimental)"] = "%s - (Experimental)";
+$a->strings["Display Settings"] = "Configurações de exibição";
+$a->strings["Display Theme:"] = "Tema do perfil:";
+$a->strings["Mobile Theme:"] = "Tema móvel:";
+$a->strings["Enable user zoom on mobile devices"] = "Permitir zoom pelo usuário em dispositivos móveis";
+$a->strings["Update browser every xx seconds"] = "Atualizar navegador a cada xx segundos";
+$a->strings["Minimum of 10 seconds, no maximum"] = "Mínimo de 10 segundos, sem máximo";
+$a->strings["Maximum number of conversations to load at any time:"] = "Número máximo permitido de conversas carregadas:";
+$a->strings["Maximum of 100 items"] = "Máximo de 100 itens";
+$a->strings["Don't show emoticons"] = "Não exibir emoticons";
+$a->strings["Link post titles to source"] = "Ligar o título dos posts à fonte";
+$a->strings["System Page Layout Editor - (advanced)"] = "Editor de layout de página do sistema - (avançado)";
+$a->strings["Nobody except yourself"] = "Ninguém exceto você mesmo";
+$a->strings["Only those you specifically allow"] = "Apenas quem você der permissão";
+$a->strings["Approved connections"] = "Conexões aprovadas";
+$a->strings["Any connections"] = "Quaisquer conexões";
+$a->strings["Anybody on this website"] = "Qualquer um neste site";
+$a->strings["Anybody in this network"] = "Qualquer um nesta rede";
+$a->strings["Anybody authenticated"] = "Qualquer um autenticado";
+$a->strings["Anybody on the internet"] = "Qualquer um na internet";
+$a->strings["Publish your default profile in the network directory"] = "Publicar seu perfil padrão no diretório da rede?";
$a->strings["No"] = "Não";
-$a->strings["Yes - with approval"] = "Sim - pendente aprovação";
$a->strings["Yes"] = "Sim";
-$a->strings["My site is not a public server"] = "Meu site não é um servidor público";
-$a->strings["My site has paid access only"] = "Meu site oferece somente acesso pago";
-$a->strings["My site has free access only"] = "Meu site oferece somente acesso gratuito";
-$a->strings["My site offers free accounts with optional paid upgrades"] = "Meu site oferece contas gratuitas com recursos adicionais pagos";
-$a->strings["Registration"] = "Registro";
-$a->strings["File upload"] = "Carregamento de arquivos";
-$a->strings["Policies"] = "Políticas";
-$a->strings["Site name"] = "Nome do site";
-$a->strings["Banner/Logo"] = "Cartaz/Logo";
-$a->strings["Administrator Information"] = "Informações do Administrador";
-$a->strings["Contact information for site administrators. Displayed on siteinfo page. BBCode can be used here"] = "Informações de contato com administradores do site. Exibida na página siteinfo. BBCode pode ser usado aqui.";
-$a->strings["System language"] = "Idioma do sistema";
-$a->strings["System theme"] = "Tema do sistema";
-$a->strings["Default system theme - may be over-ridden by user profiles - <a href='#' id='cnftheme'>change theme settings</a>"] = "Tema padrão do sistema - pode ser sobrescrito por perfis de usuário - <a href='#' id='cnftheme'>mudar configurações do tema</a>";
-$a->strings["Mobile system theme"] = "Tema do sistema móvel";
-$a->strings["Theme for mobile devices"] = "Tema para dispositivos móveis";
-$a->strings["Accessibility system theme"] = "Tema do sistema acessível";
-$a->strings["Accessibility theme"] = "Tema acessível";
-$a->strings["Channel to use for this website's static pages"] = "Canal a utilizar para as páginas estáticas desse website";
-$a->strings["Site Channel"] = "Canal do site";
-$a->strings["Maximum image size"] = "Tamanho máximo de imagens";
-$a->strings["Maximum size in bytes of uploaded images. Default is 0, which means no limits."] = "Tamanho máximo em bytes de imagens carregadas. O padrão é 0, significando sem limites.";
-$a->strings["Does this site allow new member registration?"] = "Este site permite o registro de novos membros?";
-$a->strings["Which best describes the types of account offered by this hub?"] = "Qual descreve melhor os tipos de conta oferecidas por este hub?";
-$a->strings["Register text"] = "Texto de registro";
-$a->strings["Will be displayed prominently on the registration page."] = "Será exibido proeminentemente na página de registro.";
-$a->strings["Accounts abandoned after x days"] = "Contas abandonadas após x dias";
-$a->strings["Will not waste system resources polling external sites for abandonded accounts. Enter 0 for no time limit."] = "Não gastará recursos do sistema coletando de sites externos para contas abandonadas. Use 0 para sem limite de tempo.";
-$a->strings["Allowed friend domains"] = "Domínios permitidos para amigos";
-$a->strings["Comma separated list of domains which are allowed to establish friendships with this site. Wildcards are accepted. Empty to allow any domains"] = "Lista, separada por vírgulas, de domínios permitidos para estabelecer amizades com este site. <em>Wildcards</em> são aceitas. Vazio para permitir qualquer domínio";
-$a->strings["Allowed email domains"] = "Domínios permitidos de e-mail";
-$a->strings["Comma separated list of domains which are allowed in email addresses for registrations to this site. Wildcards are accepted. Empty to allow any domains"] = "Lista, separada por vírgulas, de domínios permitidos em endereços de e-mail para registros nesse site. <em>Wildcards</em> são aceitas. Vazio para permitir qualquer domínio";
-$a->strings["Block public"] = "Bloquear público";
-$a->strings["Check to block public access to all otherwise public personal pages on this site unless you are currently logged in."] = "Marque para bloquear o acesso público a todas as páginas pessoais que seriam públicas, a não ser que se esteja autenticado.";
-$a->strings["Force publish"] = "Forçar publicação";
-$a->strings["Check to force all profiles on this site to be listed in the site directory."] = "Marque para forçar todos os perfis neste site a aparecerem listados no diretório do site.";
-$a->strings["Disable discovery tab"] = "Desabilitar a aba \"Descubra\"";
-$a->strings["Remove the tab in the network view with public content pulled from sources chosen for this site."] = "Remove da visualização de rede a aba com conteúdos públicos obtidos de fontes escolhidas para esse site.";
-$a->strings["No login on Homepage"] = "Sem formulário de autenticação na página inicial";
-$a->strings["Check to hide the login form from your sites homepage when visitors arrive who are not logged in (e.g. when you put the content of the homepage in via the site channel)."] = "Marque para esconder o formulário de autenticação da página inicial do seu site quando visitantes chegarem sem estar autenticados (e.g. quando você inclui os conteúdos da página inicial através do canal do site).";
-$a->strings["Proxy user"] = "Usuário do proxy";
-$a->strings["Proxy URL"] = "URL do proxy";
-$a->strings["Network timeout"] = "Timeout da rede";
-$a->strings["Value is in seconds. Set to 0 for unlimited (not recommended)."] = "Valor em segundos. Use 0 para ilimitado (não recomendado).";
-$a->strings["Delivery interval"] = "Intervalo de entrega";
-$a->strings["Delay background delivery processes by this many seconds to reduce system load. Recommend: 4-5 for shared hosts, 2-3 for virtual private servers. 0-1 for large dedicated servers."] = "Atrase os processos de entrega em segundo plano por este número de segundos para reduzir a carga do sistema. Recomendado: 4-5 para hosts compartilhados, 2-3 para servidores virtuais privados. 0-1 para grandes servidores dedicados.";
-$a->strings["Poll interval"] = "Intervalo de coleta";
-$a->strings["Delay background polling processes by this many seconds to reduce system load. If 0, use delivery interval."] = "Atrase os processos de coleta em segundo plano por este número de segundos para reduzir a carga do sistema. Se 0, use o intervalo de entrega.";
-$a->strings["Maximum Load Average"] = "Carga média máxima";
-$a->strings["Maximum system load before delivery and poll processes are deferred - default 50."] = "Carga máxima do sistema antes de adiar processos de entrega e coleta - padrão 50.";
-$a->strings["No server found"] = "Nenhum servidor foi encontrado";
-$a->strings["ID"] = "ID";
-$a->strings["for channel"] = "para o canal";
-$a->strings["on server"] = "no servidor";
-$a->strings["Status"] = "Status";
-$a->strings["Update has been marked successful"] = "A atualização foi designada bem sucedida";
-$a->strings["Executing %s failed. Check system logs."] = "Execução de %s falhou. Verifique os logs do sistema.";
-$a->strings["Update %s was successfully applied."] = "A atualização %s foi aplicada com sucesso.";
-$a->strings["Update %s did not return a status. Unknown if it succeeded."] = "A atualização %s não retornou um status. Situação incerta quando ao seu sucesso.";
-$a->strings["Update function %s could not be found."] = "A função de atualização %s não foi encontrada.";
-$a->strings["No failed updates."] = "Nenhuma falha nas atualizações.";
-$a->strings["Failed Updates"] = "Falha nas atualizações";
-$a->strings["Mark success (if update was manually applied)"] = "Marque sucesso (se a atualização foi aplicada manualmente)";
-$a->strings["Attempt to execute this update step automatically"] = "Tente executar este passo da atualização automaticamente";
-$a->strings["%s user blocked/unblocked"] = array(
- 0 => "%s usuário foi bloqueado/desbloqueado",
- 1 => "%s usuários foram bloqueados/desbloqueados",
-);
-$a->strings["%s user deleted"] = array(
- 0 => "%s usuário foi deletado",
- 1 => "%s usuários foram deletados",
-);
-$a->strings["Account not found"] = "A conta não foi encontrada";
-$a->strings["User '%s' deleted"] = "O usuário/a '%s' foi deletado/a";
-$a->strings["User '%s' unblocked"] = "O usuário/a '%s' foi desbloqueado/a";
-$a->strings["User '%s' blocked"] = "O usuário/a '%s' foi bloqueado/a";
-$a->strings["Users"] = "Usuários";
-$a->strings["select all"] = "selecionar tudo";
-$a->strings["User registrations waiting for confirm"] = "Registros de usuário aguardando confirmação";
-$a->strings["Request date"] = "Data de requisição";
-$a->strings["No registrations."] = "Nenhum registro.";
-$a->strings["Approve"] = "Aprovar";
-$a->strings["Deny"] = "Negar";
-$a->strings["Block"] = "Bloquear";
-$a->strings["Unblock"] = "Desbloquear";
-$a->strings["Register date"] = "Data de registro";
-$a->strings["Last login"] = "Última autenticação";
-$a->strings["Expires"] = "Expira";
-$a->strings["Service Class"] = "Classe de serviço";
-$a->strings["Selected users will be deleted!\\n\\nEverything these users had posted on this site will be permanently deleted!\\n\\nAre you sure?"] = "Os usuários selecionados serão deletados!\\n\\nTudo o que esses usuários postaram neste site será permanentemente deletado!\\n\\nTem certeza?";
-$a->strings["The user {0} will be deleted!\\n\\nEverything this user has posted on this site will be permanently deleted!\\n\\nAre you sure?"] = "O/A usuário/a {0} será deletado/a!\\n\\nTudo o que esse/a usuário/a postou neste site será permanentemente deletado!\\n\\nTem certeza?";
-$a->strings["%s channel censored/uncensored"] = array(
- 0 => "%s canal censurado/descensurado",
- 1 => "%s canais censurados/descensurados",
-);
-$a->strings["%s channel deleted"] = array(
- 0 => "%s canal deletado",
- 1 => "%s canais deletados",
-);
-$a->strings["Channel not found"] = "Canal não encontrado";
-$a->strings["Channel '%s' deleted"] = "Canal '%s' deletado";
-$a->strings["Channel '%s' uncensored"] = "Canal '%s' não censurado";
-$a->strings["Channel '%s' censored"] = "Canal '%s' censurado";
-$a->strings["Censor"] = "Censurar";
-$a->strings["Uncensor"] = "Não censurar";
-$a->strings["UID"] = "UID";
-$a->strings["Name"] = "Nome";
-$a->strings["Address"] = "Endereço";
-$a->strings["Selected channels will be deleted!\\n\\nEverything that was posted in these channels on this site will be permanently deleted!\\n\\nAre you sure?"] = "Os canais selecionados serão deletados!\\n\\nTudo que foi postado nesses canais nesse site será permanentemente deletado!\\n\\nVocê tem certeza?";
-$a->strings["The channel {0} will be deleted!\\n\\nEverything that was posted in this channel on this site will be permanently deleted!\\n\\nAre you sure?"] = "O canal {0} será deletado!\\n\\nTudo o que foi postado nesse canal nesse site será permanentemente deletado!\\n\\nVocê tem certeza?";
-$a->strings["Plugin %s disabled."] = "Plugin %s desabilitado.";
-$a->strings["Plugin %s enabled."] = "Plugin %s habilitado.";
-$a->strings["Disable"] = "Desabilitar";
-$a->strings["Enable"] = "Habilitar";
-$a->strings["Toggle"] = "Alternar";
-$a->strings["Author: "] = "Autor:";
-$a->strings["Maintainer: "] = "Mantenedor:";
-$a->strings["No themes found."] = "Nenhum tema foi encontrado.";
-$a->strings["Screenshot"] = "Captura de tela";
-$a->strings["[Experimental]"] = "[Experimental]";
-$a->strings["[Unsupported]"] = "[Desassistido]";
-$a->strings["Log settings updated."] = "As configurações de log foram atualizadas.";
-$a->strings["Clear"] = "Limpar";
-$a->strings["Debugging"] = "Depuração";
-$a->strings["Log file"] = "Arquivo de log";
-$a->strings["Must be writable by web server. Relative to your Red top-level directory."] = "É necessário que o servidor web possa escrever neste arquivo. Relativo ao diretório raiz da Red.";
-$a->strings["Log level"] = "Nível do log";
+$a->strings["Allow us to suggest you as a potential friend to new members?"] = "Permitir sugerir você como amigo potencial para outros membros?";
+$a->strings["or"] = "ou";
+$a->strings["Your channel address is"] = "O endereço do seu canal é";
+$a->strings["Channel Settings"] = "Configurações do canal";
+$a->strings["Basic Settings"] = "Configurações básicas";
+$a->strings["Your Timezone:"] = "Seu fuso horário:";
+$a->strings["Default Post Location:"] = "Localização padrão de suas publicações:";
+$a->strings["Geographical location to display on your posts"] = "Localização geográfica para exibir em suas publicações";
+$a->strings["Use Browser Location:"] = "Usar localizador do navegador:";
+$a->strings["Adult Content"] = "Conteúdo adulto";
+$a->strings["This channel frequently or regularly publishes adult content. (Please tag any adult material and/or nudity with #NSFW)"] = "Este canal frequentemente ou regularmente publica conteúdo adulto. (Por favor marque qualquer material adulto e/ou nudez com #NSFW)";
+$a->strings["Security and Privacy Settings"] = "Configurações de segurança e privacidade";
+$a->strings["Your permissions are already configured. Click to view/adjust"] = "Suas permissões já foram configuradas. Clique para vê-las/ajustá-las";
+$a->strings["Hide my online presence"] = "Esconda minha presença online";
+$a->strings["Prevents displaying in your profile that you are online"] = "Previne exibir em seu perfil que você está online";
+$a->strings["Simple Privacy Settings:"] = "Configurações de privacidade simples:";
+$a->strings["Very Public - <em>extremely permissive (should be used with caution)</em>"] = "Muito público - <em>extremamente permissivo (deve ser usado com cuidado)</em>";
+$a->strings["Typical - <em>default public, privacy when desired (similar to social network permissions but with improved privacy)</em>"] = "Típico - <em>público por padrão, privado quando desejável (similar às permissões de redes sociais, mas com melhor privacidade)</em>";
+$a->strings["Private - <em>default private, never open or public</em>"] = "Privado - <em>privado por padrão, nunca aberto ou público</em>";
+$a->strings["Blocked - <em>default blocked to/from everybody</em>"] = "Bloqueado - <em>por padrão bloquado de/para todos</em>";
+$a->strings["Allow others to tag your posts"] = "Permitir que outros etiquetem suas publicações";
+$a->strings["Often used by the community to retro-actively flag inappropriate content"] = "Frequentemente utilizado pela comunidade para retroativamente sinalizar conteúdo inapropriado";
+$a->strings["Advanced Privacy Settings"] = "Configurações de privacidade avançadas";
+$a->strings["Expire other channel content after this many days"] = "Expirar outros conteúdos do canal após este número de dias";
+$a->strings["0 or blank prevents expiration"] = "0 ou em branco previne expiração";
+$a->strings["Maximum Friend Requests/Day:"] = "Número máximo de requisições de amizade por dia:";
+$a->strings["May reduce spam activity"] = "Pode reduzir a frequência de spam";
+$a->strings["Default Post Permissions"] = "Permissões padrão de publicação";
+$a->strings["Maximum private messages per day from unknown people:"] = "Máximo número de mensagens privadas por dia de pessoas desconhecidas:";
+$a->strings["Useful to reduce spamming"] = "Útil para reduzir a frequência de spam";
+$a->strings["Notification Settings"] = "Configurações de notificação";
+$a->strings["By default post a status message when:"] = "Por padrão, publicar uma mensagem de status quando:";
+$a->strings["accepting a friend request"] = "aceitar um pedido de amizade";
+$a->strings["joining a forum/community"] = "associar-se a um fórum/comunidade";
+$a->strings["making an <em>interesting</em> profile change"] = "modificar algo <em>interessante</em> em seu perfil";
+$a->strings["Send a notification email when:"] = "Enviar um e-mail de notificação quando:";
+$a->strings["You receive a connection request"] = "Você recebe uma solicitação de conexão";
+$a->strings["Your connections are confirmed"] = "Suas conexões são confirmadas";
+$a->strings["Someone writes on your profile wall"] = "Alguém escrever no mural do seu perfil";
+$a->strings["Someone writes a followup comment"] = "Alguém comenta uma publicação";
+$a->strings["You receive a private message"] = "Você recebeu uma mensagem privada";
+$a->strings["You receive a friend suggestion"] = "Você recebe uma sugestão de amizade";
+$a->strings["You are tagged in a post"] = "Você é mencionado num post";
+$a->strings["You are poked/prodded/etc. in a post"] = "Você foi cutucado/espetado/etc. numa publicação";
+$a->strings["Advanced Account/Page Type Settings"] = "Configurações avançadas de conta/tipo de página";
+$a->strings["Change the behaviour of this account for special situations"] = "Mudar o comportamento dessa conta em situações especiais";
+$a->strings["Please enable expert mode (in <a href=\"settings/features\">Settings > Additional features</a>) to adjust!"] = "Por favor, habilite o modo expert (em <a href=\"settings/features\">Configurações > Recursos adicionais</a>) para ajustar!";
+$a->strings["Miscellaneous Settings"] = "Configurações miscelâneas";
+$a->strings["Personal menu to display in your channel pages"] = "Menu pessoal para exibir nas páginas dos seus canais";
+$a->strings["Remove this channel"] = "Remover este canal";
$a->strings["Poke/Prod"] = "Cutucar/Espetar";
$a->strings["poke, prod or do other things to somebody"] = "Cutucar, espetar ou fazer outras coisas a alguém";
$a->strings["Recipient"] = "Destinatário";
@@ -1004,31 +1015,23 @@ $a->strings["Fetching URL returns error: %1\$s"] = "Carregar o URL retorna o err
$a->strings["Invalid item."] = "Item inválido.";
$a->strings["Channel not found."] = "O canal não foi encontrado.";
$a->strings["Page not found."] = "Página não encontrada.";
-$a->strings["Image uploaded but image cropping failed."] = "A imagem foi enviada, mas não foi possível cortá-la.";
-$a->strings["Image resize failed."] = "Falha ao modificar o tamanho da imagem.";
-$a->strings["Shift-reload the page or clear browser cache if the new photo does not display immediately."] = "Se a nova foto não aparecer imediatamente, recarregue a página segurando a tecla \"shift\" ou limpe o cache do navegador, ";
-$a->strings["Image exceeds size limit of %d"] = "A imagem excede o limite de tamanho de %d";
-$a->strings["Unable to process image."] = "Não foi possível processar a imagem.";
-$a->strings["Photo not available."] = "A foto não está disponível.";
-$a->strings["Upload File:"] = "Enviar arquivo:";
-$a->strings["Select a profile:"] = "Selecione um perfil:";
-$a->strings["Upload Profile Photo"] = "Enviar foto do perfil";
-$a->strings["Upload"] = "Enviar";
-$a->strings["or"] = "ou";
-$a->strings["skip this step"] = "pule esta etapa";
-$a->strings["select a photo from your photo albums"] = "selecione uma foto do seu álbum de fotos";
-$a->strings["Crop Image"] = "Cortar a imagem";
-$a->strings["Please adjust the image cropping for optimum viewing."] = "Por favor, ajuste o corte da imagem para a melhor visualização.";
-$a->strings["Done Editing"] = "Encerrar a edição";
-$a->strings["Image uploaded successfully."] = "A imagem foi enviada com sucesso.";
-$a->strings["Image upload failed."] = "Não foi possível enviar a imagem.";
-$a->strings["Image size reduction [%s] failed."] = "Não foi possível reduzir o tamanho da imagem [%s].";
+$a->strings["Version %s"] = "Versão %s";
+$a->strings["Installed plugins/addons/apps:"] = "Plugins/complementos/aplicações instalados:";
+$a->strings["No installed plugins/addons/apps"] = "Nenhum plugin/complemento/aplicação instalado";
+$a->strings["Red"] = "Red";
+$a->strings["This is a hub of the Red Matrix - a global cooperative network of decentralized privacy enhanced websites."] = "Este é um hub da Red Matrix - uma rede global cooperativa de websites descentralizados com privacidade aprimorada.";
+$a->strings["Running at web location"] = "Sendo executado no endereço web";
+$a->strings["Please visit <a href=\"http://getzot.com\">GetZot.com</a> to learn more about the Red Matrix."] = "Para aprender mais sobre a Red Matrix, visite <a href=\"http://getzot.com\">GetZot.com</a>.";
+$a->strings["Bug reports and issues: please visit"] = "Relatos e acompanhamentos de erros podem ser encontrados em";
+$a->strings["Suggestions, praise, etc. - please email \"redmatrix\" at librelist - dot com"] = "Sugestões, elogios, etc - mande um e-mail para \"redmatrix\" arrôba librelist ponto com";
+$a->strings["Site Administrators"] = "Administradores do site";
$a->strings["Block Name"] = "Nome do bloco";
$a->strings["Profile not found."] = "O perfil não foi encontrado.";
$a->strings["Profile deleted."] = "O perfil foi excluído.";
$a->strings["Profile-"] = "Perfil-";
$a->strings["New profile created."] = "O novo perfil foi criado.";
$a->strings["Profile unavailable to clone."] = "O perfil não está disponível para clonagem.";
+$a->strings["Profile unavailable to export."] = "Perfil indisponível para exportar.";
$a->strings["Profile Name is required."] = "É obrigatório informar o nome do perfil.";
$a->strings["Marital Status"] = "Estado civil";
$a->strings["Romantic Partner"] = "Parceiro/a romântico/a";
@@ -1041,6 +1044,7 @@ $a->strings["Gender"] = "Gênero";
$a->strings["Sexual Preference"] = "Preferência sexual";
$a->strings["Homepage"] = "Página web";
$a->strings["Interests"] = "Interesses";
+$a->strings["Address"] = "Endereço";
$a->strings["Location"] = "Localização";
$a->strings["Profile updated."] = "O perfil foi atualizado.";
$a->strings["Hide your contact/friend list from viewers of this profile?"] = "Esconder sua lista de contatos/amigos dos visitantes no seu perfil?";
@@ -1050,6 +1054,8 @@ $a->strings["Change Profile Photo"] = "Mudar a foto do perfil";
$a->strings["Create a new profile using these settings"] = "Criar um novo perfil usando estas configurações";
$a->strings["Clone this profile"] = "Clonar este perfil";
$a->strings["Delete this profile"] = "Excluir este perfil";
+$a->strings["Import profile from file"] = "Importar perfil dum arquivo";
+$a->strings["Export profile to file"] = "Exportar perfil para arquivo";
$a->strings["Profile Name:"] = "Nome do perfil:";
$a->strings["Your Full Name:"] = "Seu nome completo:";
$a->strings["Title/Description:"] = "Título/Descrição:";
@@ -1080,7 +1086,7 @@ $a->strings["Film/dance/culture/entertainment"] = "Filme/dança/cultura/entreten
$a->strings["Love/romance"] = "Amor/romance";
$a->strings["Work/employment"] = "Trabalho/emprego";
$a->strings["School/education"] = "Escola/educação";
-$a->strings["This is your <strong>public</strong> profile.<br />It <strong>may</strong> be visible to anybody using the internet."] = "Este é o seu perfil <strong>público</strong>.<br />Ele <strong>pode</strong> estar visível para qualquer um que acesse a Internet.";
+$a->strings["This is your default profile."] = "Este é seu perfil padrão.";
$a->strings["Age: "] = "Idade: ";
$a->strings["Edit/Manage Profiles"] = "Editar/Administrar perfis";
$a->strings["Add profile things"] = "Adicionar coisas ao perfil";
@@ -1126,6 +1132,7 @@ $a->strings["This site has exceeded the number of allowed daily account registra
$a->strings["Terms of Service"] = "Termos de Serviço";
$a->strings["I accept the %s for this website"] = "Eu aceito os %s deste website.";
$a->strings["I am over 13 years of age and accept the %s for this website"] = "Eu sou maior de 13 anos e aceito os %s deste website";
+$a->strings["Registration"] = "Registro";
$a->strings["Membership on this site is by invitation only."] = "Novas contas neste site se dão apenas por convite.";
$a->strings["Please enter your invitation code"] = "Por favor, digite o código do seu convite";
$a->strings["Your email address"] = "Seu endereço de e-mail";
@@ -1135,6 +1142,7 @@ $a->strings["Away"] = "Ausente";
$a->strings["Online"] = "Online";
$a->strings["Please login."] = "Por favor, autentique-se.";
$a->strings["Red Matrix - Guests: Username: {your email address}, Password: +++"] = "Red Matrix - Visitantes: Usuário: {seu endereço de e-mail}, Senha: +++";
+$a->strings["Channel removals are not allowed within 48 hours of changing the account password."] = "A remoção da canais fica desabilitada por 48 horas após uma troca de senha da conta.";
$a->strings["Remove This Channel"] = "Remover este canal";
$a->strings["This will completely remove this channel from the network. Once this has been done it is not recoverable."] = "Isso irá remover completamente este canal da rede. Uma vez que seja feito não será possível recuperá-lo.";
$a->strings["Please enter your password for verification:"] = "Por favor, digite a sua senha para verificação:";
@@ -1174,7 +1182,6 @@ $a->strings["Ignored"] = "Ignorado";
$a->strings["Hidden"] = "Oculto";
$a->strings["Archived"] = "Arquivado";
$a->strings["All"] = "Todos";
-$a->strings["Unconnected"] = "Não conectado";
$a->strings["Suggest new connections"] = "Sugerir novas conexões";
$a->strings["New Connections"] = "Novas conexões";
$a->strings["Show pending (new) connections"] = "Exibir conexões pendentes (novas)";
@@ -1185,12 +1192,12 @@ $a->strings["Only show blocked connections"] = "Exibir apenas conexões bloquead
$a->strings["Only show ignored connections"] = "Exibir apenas conexões ignoradas";
$a->strings["Only show archived connections"] = "Exibir apenas conexões arquivadas";
$a->strings["Only show hidden connections"] = "Exibir apenas conexões ocultas";
-$a->strings["Only show one-way connections"] = "Exibir apenas conexões de mão única";
$a->strings["%1\$s [%2\$s]"] = "%1\$s [%2\$s]";
-$a->strings["Edit contact"] = "Editar o contato";
+$a->strings["Edit connection"] = "Editar conexão";
$a->strings["Search your connections"] = "Pesquisar em suas conexões";
$a->strings["Finding: "] = "Pesquisando: ";
$a->strings["Edit post"] = "Editar a publicação";
+$a->strings["is now connected to"] = "está agora conectado a";
$a->strings["Could not access address book record."] = "Não foi possível acessar o registro do contato.";
$a->strings["Refresh failed - channel is currently unavailable."] = "A atualização falhou - o canal está indisponível no momento.";
$a->strings["Channel has been unblocked"] = "O canal foi desbloqueado";
@@ -1210,6 +1217,8 @@ $a->strings["Refresh Permissions"] = "Atualizar permissões";
$a->strings["Fetch updated permissions"] = "Buscar as permissões atualizadas";
$a->strings["Recent Activity"] = "Atividades recentes";
$a->strings["View recent posts and comments"] = "Exibir publicações e comentários recentes";
+$a->strings["Unblock"] = "Desbloquear";
+$a->strings["Block"] = "Bloquear";
$a->strings["Block or Unblock this connection"] = "Bloquear ou desbloquear esta conexão";
$a->strings["Unignore"] = "Não ignorar";
$a->strings["Ignore"] = "Ignorar";
@@ -1237,7 +1246,7 @@ $a->strings["Edit contact notes"] = "Editar anotações sobre o contato";
$a->strings["Their Settings"] = "Configurações dele/a";
$a->strings["My Settings"] = "Minhas configurações";
$a->strings["Clear/Disable Automatic Permissions"] = "Limpa/Desabilita permissões automáticas";
-$a->strings["Forum Members"] = "Membros do fórum";
+$a->strings["Forum Members"] = "Membros de fórum";
$a->strings["Soapbox"] = "Caixa de sabão";
$a->strings["Full Sharing (typical social network permissions)"] = "Compartilhamento completo (permissões típicas de redes sociais)";
$a->strings["Cautious Sharing "] = "Compartilhamento cauteloso";
@@ -1283,109 +1292,6 @@ $a->strings["Hometown: "] = "Cidade natal:";
$a->strings["About: "] = "Sobre:";
$a->strings["Keywords: "] = "Palavras-chave:";
$a->strings["This site is not a directory server"] = "Este site não é um servidor de diretório";
-$a->strings["Name is required"] = "É necessário informar o nome";
-$a->strings["Key and Secret are required"] = "A chave e o segredo são obrigatórios";
-$a->strings["Passwords do not match. Password unchanged."] = "As senhas não correspondem. A senha não foi modificada.";
-$a->strings["Empty passwords are not allowed. Password unchanged."] = "Não é permitido uma senha em branco. A senha não foi modificada.";
-$a->strings["Password changed."] = "A senha foi modificada.";
-$a->strings["Password update failed. Please try again."] = "Não foi possível atualizar a senha. Por favor, tente novamente.";
-$a->strings["Not valid email."] = "Não é um e-mail válido";
-$a->strings["Protected email address. Cannot change to that email."] = "Endereço de e-mail protegido. Não é possível mudar para esse e-mail.";
-$a->strings["System failure storing new email. Please try again."] = "Falha do sistema ao armazenar novo e-mail. Por favor, tente novamente.";
-$a->strings["Settings updated."] = "As configurações foram atualizadas.";
-$a->strings["Add application"] = "Adicionar aplicação";
-$a->strings["Name of application"] = "Nome da aplicação";
-$a->strings["Consumer Key"] = "Chave de consumidor";
-$a->strings["Automatically generated - change if desired. Max length 20"] = "Gerado automaticamente - troque se desejável. Comprimento máximo 20";
-$a->strings["Consumer Secret"] = "Segredo de consumidor";
-$a->strings["Redirect"] = "Redirecionamento";
-$a->strings["Redirect URI - leave blank unless your application specifically requires this"] = "URI de redirecionamento - deixe em branco, a não ser que sua aplicação especificamente requeira isso";
-$a->strings["Icon url"] = "URL do ícone";
-$a->strings["Optional"] = "Opcional";
-$a->strings["You can't edit this application."] = "Você não pode editar esta aplicação.";
-$a->strings["Connected Apps"] = "Aplicações conectadas";
-$a->strings["Client key starts with"] = "Chave do cliente começa com";
-$a->strings["No name"] = "Sem nome";
-$a->strings["Remove authorization"] = "Remover autorização";
-$a->strings["No feature settings configured"] = "Não foi definida nenhuma configuração do recurso";
-$a->strings["Feature Settings"] = "Configurações do recurso";
-$a->strings["Account Settings"] = "Configurações da conta";
-$a->strings["Password Settings"] = "Configurações da senha";
-$a->strings["New Password:"] = "Nova senha:";
-$a->strings["Confirm:"] = "Confirme:";
-$a->strings["Leave password fields blank unless changing"] = "Deixe os campos de senha em branco, a não ser que você queira alterá-la";
-$a->strings["Email Address:"] = "Endereço de e-mail:";
-$a->strings["Remove Account"] = "Remover conta";
-$a->strings["Warning: This action is permanent and cannot be reversed."] = "Atenção: Esta ação é permanente e não pode ser revertida.";
-$a->strings["Off"] = "Desligado";
-$a->strings["On"] = "Ligado";
-$a->strings["Additional Features"] = "Recursos adicionais";
-$a->strings["Connector Settings"] = "Configurações do conector";
-$a->strings["%s - (Experimental)"] = "%s - (Experimental)";
-$a->strings["Display Settings"] = "Configurações de exibição";
-$a->strings["Display Theme:"] = "Tema do perfil:";
-$a->strings["Mobile Theme:"] = "Tema móvel:";
-$a->strings["Update browser every xx seconds"] = "Atualizar navegador a cada xx segundos";
-$a->strings["Minimum of 10 seconds, no maximum"] = "Mínimo de 10 segundos, sem máximo";
-$a->strings["Maximum number of conversations to load at any time:"] = "Número máximo permitido de conversas carregadas:";
-$a->strings["Maximum of 100 items"] = "Máximo de 100 itens";
-$a->strings["Don't show emoticons"] = "Não exibir emoticons";
-$a->strings["System Page Layout Editor - (advanced)"] = "Editor de layout de página do sistema - (avançado)";
-$a->strings["Nobody except yourself"] = "Ninguém exceto você mesmo";
-$a->strings["Only those you specifically allow"] = "Apenas quem você der permissão";
-$a->strings["Anybody in your address book"] = "Qualquer um nos seus contatos";
-$a->strings["Anybody on this website"] = "Qualquer um neste site";
-$a->strings["Anybody in this network"] = "Qualquer um nesta rede";
-$a->strings["Anybody authenticated"] = "Qualquer um autenticado";
-$a->strings["Anybody on the internet"] = "Qualquer um na internet";
-$a->strings["Publish your default profile in the network directory"] = "Publicar seu perfil padrão no diretório da rede?";
-$a->strings["Allow us to suggest you as a potential friend to new members?"] = "Permitir sugerir você como amigo potencial para outros membros?";
-$a->strings["Your channel address is"] = "O endereço do seu canal é";
-$a->strings["Channel Settings"] = "Configurações do canal";
-$a->strings["Basic Settings"] = "Configurações básicas";
-$a->strings["Your Timezone:"] = "Seu fuso horário:";
-$a->strings["Default Post Location:"] = "Localização padrão de suas publicações:";
-$a->strings["Geographical location to display on your posts"] = "Localização geográfica para exibir em suas publicações";
-$a->strings["Use Browser Location:"] = "Usar localizador do navegador:";
-$a->strings["Adult Content"] = "Conteúdo adulto";
-$a->strings["This channel frequently or regularly publishes adult content. (Please tag any adult material and/or nudity with #NSFW)"] = "Este canal frequentemente ou regularmente publica conteúdo adulto. (Por favor marque qualquer material adulto e/ou nudez com #NSFW)";
-$a->strings["Security and Privacy Settings"] = "Configurações de segurança e privacidade";
-$a->strings["Hide my online presence"] = "Esconda minha presença online";
-$a->strings["Prevents displaying in your profile that you are online"] = "Previne exibir em seu perfil que você está online";
-$a->strings["Simple Privacy Settings:"] = "Configurações de privacidade simples:";
-$a->strings["Very Public - <em>extremely permissive (should be used with caution)</em>"] = "Muito público - <em>extremamente permissivo (deve ser usado com cuidado)</em>";
-$a->strings["Typical - <em>default public, privacy when desired (similar to social network permissions but with improved privacy)</em>"] = "Típico - <em>público por padrão, privado quando desejável (similar às permissões de redes sociais, mas com melhor privacidade)</em>";
-$a->strings["Private - <em>default private, never open or public</em>"] = "Privado - <em>privado por padrão, nunca aberto ou público</em>";
-$a->strings["Blocked - <em>default blocked to/from everybody</em>"] = "Bloqueado - <em>por padrão bloquado de/para todos</em>";
-$a->strings["Allow others to tag your posts"] = "Permitir que outros etiquetem suas publicações";
-$a->strings["Often used by the community to retro-actively flag inappropriate content"] = "Frequentemente utilizado pela comunidade para retroativamente sinalizar conteúdo inapropriado";
-$a->strings["Advanced Privacy Settings"] = "Configurações de privacidade avançadas";
-$a->strings["Expire other channel content after this many days"] = "Expirar outros conteúdos do canal após este número de dias";
-$a->strings["0 or blank prevents expiration"] = "0 ou em branco previne expiração";
-$a->strings["Maximum Friend Requests/Day:"] = "Número máximo de requisições de amizade por dia:";
-$a->strings["May reduce spam activity"] = "Pode reduzir a frequência de spam";
-$a->strings["Default Post Permissions"] = "Permissões padrão de publicação";
-$a->strings["Maximum private messages per day from unknown people:"] = "Máximo número de mensagens privadas por dia de pessoas desconhecidas:";
-$a->strings["Useful to reduce spamming"] = "Útil para reduzir a frequência de spam";
-$a->strings["Notification Settings"] = "Configurações de notificação";
-$a->strings["By default post a status message when:"] = "Por padrão, publicar uma mensagem de status quando:";
-$a->strings["accepting a friend request"] = "aceitar um pedido de amizade";
-$a->strings["joining a forum/community"] = "associar-se a um fórum/comunidade";
-$a->strings["making an <em>interesting</em> profile change"] = "modificar algo <em>interessante</em> em seu perfil";
-$a->strings["Send a notification email when:"] = "Enviar um e-mail de notificação quando:";
-$a->strings["You receive a connection request"] = "Você recebe uma solicitação de conexão";
-$a->strings["Your connections are confirmed"] = "Suas conexões são confirmadas";
-$a->strings["Someone writes on your profile wall"] = "Alguém escrever no mural do seu perfil";
-$a->strings["Someone writes a followup comment"] = "Alguém comenta uma publicação";
-$a->strings["You receive a private message"] = "Você recebeu uma mensagem privada";
-$a->strings["You receive a friend suggestion"] = "Você recebe uma sugestão de amizade";
-$a->strings["You are tagged in a post"] = "Você é mencionado num post";
-$a->strings["You are poked/prodded/etc. in a post"] = "Você foi cutucado/espetado/etc. numa publicação";
-$a->strings["Advanced Account/Page Type Settings"] = "Configurações avançadas de conta/tipo de página";
-$a->strings["Change the behaviour of this account for special situations"] = "Mudar o comportamento dessa conta em situações especiais";
-$a->strings["Please enable expert mode (in <a href=\"settings/features\">Settings > Additional features</a>) to adjust!"] = "Por favor, habilite o modo expert (em <a href=\"settings/features\">Configurações > Recursos adicionais</a>) para ajustar!";
-$a->strings["Miscellaneous Settings"] = "Configurações miscelâneas";
-$a->strings["Personal menu to display in your channel pages"] = "Menu pessoal para exibir nas páginas dos seus canais";
$a->strings["Red Matrix Server - Setup"] = "Servidor Red Matrix - Configuração";
$a->strings["Could not connect to database."] = "Não foi possível conectar ao banco de dados.";
$a->strings["Could not connect to specified site URL. Possible SSL certificate or DNS issue."] = "Não foi possível conectar à URL especificada para o site. Provavlmente um problema de DNS ou com o certificado SSL.";
@@ -1446,16 +1352,16 @@ $a->strings["At the end of this procedure, we will give you a text to save in a
$a->strings["You can alternatively skip this procedure and perform a manual installation. Please see the file \"install/INSTALL.txt\" for instructions."] = "Você também pode pular esse procedimento e executar uma instalação manual. Por favor, dê uma olhada no arquivo \"install/INSTALL.TXT\" para instruções.";
$a->strings[".htconfig.php is writable"] = ".htconfig.php tem permissão de escrita";
$a->strings["Red uses the Smarty3 template engine to render its web views. Smarty3 compiles templates to PHP to speed up rendering."] = "Red usa o engine de template Smarty3 para renderizar suas telas. Smarty3 compila templates para PHP para acelerar a renderização.";
-$a->strings["In order to store these compiled templates, the web server needs to have write access to the directory view/tpl/smarty3/ under the Red top level folder."] = "Para guardar os templates compilados, o servidor web necessita de permissão de escrita no diretório view/tpl/smarty3/ dentro do diretório raiz da Red.";
+$a->strings["In order to store these compiled templates, the web server needs to have write access to the directory %s under the Red top level folder."] = "Para guardar os templates compilados, o servidor web necessita de permissão de escrita no diretório %s no diretório raiz da Red.";
$a->strings["Please ensure that the user that your web server runs as (e.g. www-data) has write access to this folder."] = "Por favor, certifique-se de que o usuário sob o qual o servidor web roda (ex: www-data) tenha permissão de escrita nesse diretório.";
-$a->strings["Note: as a security measure, you should give the web server write access to view/tpl/smarty3/ only--not the template files (.tpl) that it contains."] = "Nota: como uma medida de segurança, você deve fornecer ao servidor web permissão de escrita somente em view/tpl/smarty3/ e não aos arquivos de template (.tpl) que ele contém.";
-$a->strings["view/tpl/smarty3 is writable"] = "view/tpl/smarty3 tem permissão de escrita";
+$a->strings["Note: as a security measure, you should give the web server write access to %s only--not the template files (.tpl) that it contains."] = "Nota: como uma medida de segurança, você deve fornecer ao servidor web permissão de escrita somente em %s e não aos arquivos de template (.tpl) que ele contém.";
+$a->strings["%s is writable"] = "%s tem permissão de escrita";
$a->strings["Red uses the store directory to save uploaded files. The web server needs to have write access to the store directory under the Red top level folder"] = "A Red usa o diretório store para salvar arquivos carregados. O servidor web necessita de permissão de escrita no diretório store dentro do diretório raiz da Red";
$a->strings["store is writable"] = "store tem permissão de escrita";
$a->strings["SSL certificate cannot be validated. Fix certificate or disable https access to this site."] = "Não foi possível validar o certificado SSL. Corrija o certificado ou desabilite o acesso via https ao site.";
$a->strings["If you have https access to your website or allow connections to TCP port 443 (the https: port), you MUST use a browser-valid certificate. You MUST NOT use self-signed certificates!"] = "Se você oferece acesso https ao seu website ou permite conexões na porta TCP 443 (a porta https:), você DEVE usar um certificado reconhecido pelos navegadores. Você NÃO DEVE usar certificados assinados por você mesmo!";
$a->strings["This restriction is incorporated because public posts from you may for example contain references to images on your own hub."] = "Essa restrição é incorporada porque publicações públicas suas podem, por exemplo, conter referências a imagens no seu próprio hub.";
-$a->strings["If your certificate is not recognised, members of other sites (who may themselves have valid certificates) will get a warning message on their own site complaining about security issues."] = "Se seu certificado não for reconhecido, membros de outros sites (que podem ter certificados válidos) receberão uma mensagem de aviso nos seus próprios sites reclamando de problemas de segurança.";
+$a->strings["If your certificate is not recognized, members of other sites (who may themselves have valid certificates) will get a warning message on their own site complaining about security issues."] = "Se seu certificado não for reconhecido, membros de outros sites (que podem ter certificados válidos) receberão uma mensagem de aviso nos seus próprios sites reclamando de problemas de segurança.";
$a->strings["This can cause usability issues elsewhere (not just on your own site) so we must insist on this requirement."] = "Isso pode causar problemas de usabilidade (não só no seu site) então nós precisamos insistir nesse requisito.";
$a->strings["Providers are available that issue free certificates which are browser-valid."] = "Existem provedores que disponibilizam gratuitamente certificados reconhecidos por navegadores.";
$a->strings["SSL certificate validation"] = "Validação do certificado SSL";
@@ -1485,16 +1391,55 @@ $a->strings["Delete item?"] = "Deletar item?";
$a->strings["Edit Webpage"] = "Editar página web";
$a->strings["Delete webpage?"] = "Deletar página web?";
$a->strings["Delete Webpage"] = "Deletar página web";
-$a->strings["Version %s"] = "Versão %s";
-$a->strings["Installed plugins/addons/apps:"] = "Plugins/complementos/aplicações instalados:";
-$a->strings["No installed plugins/addons/apps"] = "Nenhum plugin/complemento/aplicação instalado";
-$a->strings["Red"] = "Red";
-$a->strings["This is a hub of the Red Matrix - a global cooperative network of decentralised privacy enhanced websites."] = "Este é um hub da Red Matrix - uma rede global cooperativa de websites descentralizados com privacidade aprimorada.";
-$a->strings["Running at web location"] = "Sendo executado no endereço web";
-$a->strings["Please visit <a href=\"http://getzot.com\">GetZot.com</a> to learn more about the Red Matrix."] = "Para aprender mais sobre a Red Matrix, visite <a href=\"http://getzot.com\">GetZot.com</a>.";
-$a->strings["Bug reports and issues: please visit"] = "Relatos e acompanhamentos de erros podem ser encontrados em";
-$a->strings["Suggestions, praise, etc. - please email \"redmatrix\" at librelist - dot com"] = "Sugestões, elogios, etc - mande um e-mail para \"redmatrix\" arrôba librelist ponto com";
-$a->strings["Site Administrators"] = "Administradores do site";
+$a->strings["Page owner information could not be retrieved."] = "As informações do dono da pagina não puderam ser obtidas.";
+$a->strings["Album not found."] = "O álbum não foi encontrado.";
+$a->strings["Delete Album"] = "Excluir o álbum";
+$a->strings["Delete Photo"] = "Excluir a foto";
+$a->strings["No photos selected"] = "Não foi selecionada nenhuma foto";
+$a->strings["Access to this item is restricted."] = "O acesso a este item está restrito.";
+$a->strings["You have used %1$.2f Mbytes of %2$.2f Mbytes photo storage."] = "Você usou %1$.2f Mbytes de %2$.2f Mbytes de armazenamento de fotos.";
+$a->strings["You have used %1$.2f Mbytes of photo storage."] = "Você usou %1$.2f Mbytes de armazenamento de fotos.";
+$a->strings["Upload Photos"] = "Enviar fotos";
+$a->strings["New album name: "] = "Novo nome de álbum: ";
+$a->strings["or existing album name: "] = "ou nome de um álbum já existente: ";
+$a->strings["Do not show a status post for this upload"] = "Não exibir uma publicação de status para este carregamento";
+$a->strings["Album name could not be decoded"] = "Não foi possível decodificar o nome do álbum";
+$a->strings["Contact Photos"] = "Fotos dos contatos";
+$a->strings["Edit Album"] = "Editar o álbum";
+$a->strings["Show Newest First"] = "Exibir primeiro os mais recentes";
+$a->strings["Show Oldest First"] = "Exibir primeiro os mais antigos";
+$a->strings["View Photo"] = "Ver a foto";
+$a->strings["Permission denied. Access to this item may be restricted."] = "Permissão negada. Acesso a este item pode estar restrito.";
+$a->strings["Photo not available"] = "A foto não está disponível";
+$a->strings["Use as profile photo"] = "Usar como uma foto de perfil";
+$a->strings["View Full Size"] = "Ver no tamanho real";
+$a->strings["Edit photo"] = "Editar a foto";
+$a->strings["Rotate CW (right)"] = "Rotacionar H (horário)";
+$a->strings["Rotate CCW (left)"] = "Rotacionar AH (anti-horário)";
+$a->strings["New album name"] = "Novo nome para o álbum";
+$a->strings["Caption"] = "Legenda";
+$a->strings["Add a Tag"] = "Adicionar uma etiqueta";
+$a->strings["Example: @bob, @Barbara_Jensen, @jim@example.com, #California, #camping"] = "Por exemplo: @joao, @Joao_da_Silva, @joao@exemplo.com, #Minas_Gerais, #acampamento";
+$a->strings["In This Photo:"] = "Nesta foto:";
+$a->strings["View Album"] = "Ver álbum";
+$a->strings["Recent Photos"] = "Fotos recentes";
+$a->strings["Image uploaded but image cropping failed."] = "A imagem foi enviada, mas não foi possível cortá-la.";
+$a->strings["Image resize failed."] = "Falha ao modificar o tamanho da imagem.";
+$a->strings["Shift-reload the page or clear browser cache if the new photo does not display immediately."] = "Se a nova foto não aparecer imediatamente, recarregue a página segurando a tecla \"shift\" ou limpe o cache do navegador, ";
+$a->strings["Image exceeds size limit of %d"] = "A imagem excede o limite de tamanho de %d";
+$a->strings["Unable to process image."] = "Não foi possível processar a imagem.";
+$a->strings["Photo not available."] = "A foto não está disponível.";
+$a->strings["Upload File:"] = "Enviar arquivo:";
+$a->strings["Select a profile:"] = "Selecione um perfil:";
+$a->strings["Upload Profile Photo"] = "Enviar foto do perfil";
+$a->strings["skip this step"] = "pule esta etapa";
+$a->strings["select a photo from your photo albums"] = "selecione uma foto do seu álbum de fotos";
+$a->strings["Crop Image"] = "Cortar a imagem";
+$a->strings["Please adjust the image cropping for optimum viewing."] = "Por favor, ajuste o corte da imagem para a melhor visualização.";
+$a->strings["Done Editing"] = "Encerrar a edição";
+$a->strings["Image uploaded successfully."] = "A imagem foi enviada com sucesso.";
+$a->strings["Image upload failed."] = "Não foi possível enviar a imagem.";
+$a->strings["Image size reduction [%s] failed."] = "Não foi possível reduzir o tamanho da imagem [%s].";
$a->strings["Failed to create source. No channel selected."] = "Falha ao criar a fonte. Nenhum canal selecionado.";
$a->strings["Source created."] = "A fonte foi criada.";
$a->strings["Source updated."] = "A fonte foi atualizada.";
@@ -1512,13 +1457,15 @@ $a->strings["Source removed"] = "A fonte foi removida.";
$a->strings["Unable to remove source."] = "Não foi possível remover a fonte.";
$a->strings["- select -"] = "- selecionar -";
$a->strings["Event title and start time are required."] = "O título do evento e a hora de início são obrigatórios.";
+$a->strings["Event not found."] = "Evento não encontrado.";
$a->strings["l, F j"] = "l, F j";
$a->strings["Edit event"] = "Editar o evento";
$a->strings["Create New Event"] = "Criar um novo evento";
$a->strings["Previous"] = "Anterior";
$a->strings["hour:minute"] = "hora:minuto";
$a->strings["Event details"] = "Detalhes do evento";
-$a->strings["Format is %s %s. Starting date and Title are required."] = "O formato é %s %s. A data de início e o título são obrigatórios.";
+$a->strings["Format is %s %s."] = "O formato é %s %s.";
+$a->strings["Starting date and Title are required."] = "Data de início e título são obrigatórios.";
$a->strings["Event Starts:"] = "Início do evento:";
$a->strings["Required"] = "Obrigatório";
$a->strings["Finish date/time is not known or not relevant"] = "A data/hora de término não é conhecida ou não é relevante";
@@ -1535,10 +1482,6 @@ $a->strings["Include all files and sub folders"] = "Incluir todos os arquivos e
$a->strings["Return to file list"] = "Retornar à lista de arquivos";
$a->strings["Copy/paste this code to attach file to a post"] = "Copiar/colar este código para anexar um arquivo a uma publicação";
$a->strings["Copy/paste this URL to link file from a web page"] = "Copiar/colar este URL para linkar para o arquivo em uma página web";
-$a->strings["Download"] = "Baixar";
-$a->strings["Used: "] = "Utilizado:";
-$a->strings["[directory]"] = "[diretório]";
-$a->strings["Limit: "] = "Limite:";
$a->strings["Channel added."] = "Canal adicionado.";
$a->strings["%1\$s is following %2\$s's %3\$s"] = "%1\$s está acompanhando %3\$s de %2\$s";
$a->strings["Contact not found."] = "O contato não foi encontrado.";
@@ -1564,7 +1507,163 @@ $a->strings["Not Found"] = "Não encontrada";
$a->strings["Tag removed"] = "A etiqueta foi removida";
$a->strings["Remove Item Tag"] = "Remover a etiqueta de item";
$a->strings["Select a tag to remove: "] = "Selecione uma etiqueta para remover: ";
-$a->strings["Welcome to %s"] = "Bem-vindo(a) a %s";
+$a->strings["Theme settings updated."] = "As configurações de tema foram atualizadas.";
+$a->strings["Site"] = "Site";
+$a->strings["Accounts"] = "Contas";
+$a->strings["Channels"] = "Canais";
+$a->strings["Plugins"] = "Plugins";
+$a->strings["Themes"] = "Temas";
+$a->strings["Server"] = "Servidor";
+$a->strings["Profile Config"] = "Configuração de perfis";
+$a->strings["DB updates"] = "Atualizações do Banco de Dados";
+$a->strings["Logs"] = "Logs";
+$a->strings["Plugin Features"] = "Recursos dos plugins";
+$a->strings["User registrations waiting for confirmation"] = "Registros de usuário aguardando confirmação";
+$a->strings["Message queues"] = "Filas de mensagem";
+$a->strings["Administration"] = "Administração";
+$a->strings["Summary"] = "Resumo";
+$a->strings["Registered users"] = "Usuários registrados";
+$a->strings["Pending registrations"] = "Registros pendentes";
+$a->strings["Version"] = "Versão";
+$a->strings["Active plugins"] = "Plugins ativos";
+$a->strings["Site settings updated."] = "As configurações de site foram atualizadas.";
+$a->strings["No special theme for accessibility"] = "Sem tema especial para acessibilidade";
+$a->strings["Yes - with approval"] = "Sim - pendente aprovação";
+$a->strings["My site is not a public server"] = "Meu site não é um servidor público";
+$a->strings["My site has paid access only"] = "Meu site oferece somente acesso pago";
+$a->strings["My site has free access only"] = "Meu site oferece somente acesso gratuito";
+$a->strings["My site offers free accounts with optional paid upgrades"] = "Meu site oferece contas gratuitas com recursos adicionais pagos";
+$a->strings["File upload"] = "Carregamento de arquivos";
+$a->strings["Policies"] = "Políticas";
+$a->strings["Site name"] = "Nome do site";
+$a->strings["Banner/Logo"] = "Cartaz/Logo";
+$a->strings["Administrator Information"] = "Informações do Administrador";
+$a->strings["Contact information for site administrators. Displayed on siteinfo page. BBCode can be used here"] = "Informações de contato com administradores do site. Exibida na página siteinfo. BBCode pode ser usado aqui.";
+$a->strings["System language"] = "Idioma do sistema";
+$a->strings["System theme"] = "Tema do sistema";
+$a->strings["Default system theme - may be over-ridden by user profiles - <a href='#' id='cnftheme'>change theme settings</a>"] = "Tema padrão do sistema - pode ser sobrescrito por perfis de usuário - <a href='#' id='cnftheme'>mudar configurações do tema</a>";
+$a->strings["Mobile system theme"] = "Tema do sistema móvel";
+$a->strings["Theme for mobile devices"] = "Tema para dispositivos móveis";
+$a->strings["Accessibility system theme"] = "Tema do sistema acessível";
+$a->strings["Accessibility theme"] = "Tema acessível";
+$a->strings["Enable Diaspora Protocol"] = "Habilitar protocolo Diaspora";
+$a->strings["Communicate with Diaspora and Friendica - experimental"] = "Comunicar com Diaspora e Friendica - experimental";
+$a->strings["Allow Feeds as Connections"] = "Permitir Feeds como conexões";
+$a->strings["(Heavy system resource usage)"] = "(Alto uso de recursos do sistema)";
+$a->strings["Maximum image size"] = "Tamanho máximo de imagens";
+$a->strings["Maximum size in bytes of uploaded images. Default is 0, which means no limits."] = "Tamanho máximo em bytes de imagens carregadas. O padrão é 0, significando sem limites.";
+$a->strings["Does this site allow new member registration?"] = "Este site permite o registro de novos membros?";
+$a->strings["Which best describes the types of account offered by this hub?"] = "Qual descreve melhor os tipos de conta oferecidas por este hub?";
+$a->strings["Register text"] = "Texto de registro";
+$a->strings["Will be displayed prominently on the registration page."] = "Será exibido proeminentemente na página de registro.";
+$a->strings["Accounts abandoned after x days"] = "Contas abandonadas após x dias";
+$a->strings["Will not waste system resources polling external sites for abandonded accounts. Enter 0 for no time limit."] = "Não gastará recursos do sistema coletando de sites externos para contas abandonadas. Use 0 para sem limite de tempo.";
+$a->strings["Allowed friend domains"] = "Domínios permitidos para amigos";
+$a->strings["Comma separated list of domains which are allowed to establish friendships with this site. Wildcards are accepted. Empty to allow any domains"] = "Lista, separada por vírgulas, de domínios permitidos para estabelecer amizades com este site. <em>Wildcards</em> são aceitas. Vazio para permitir qualquer domínio";
+$a->strings["Allowed email domains"] = "Domínios permitidos de e-mail";
+$a->strings["Comma separated list of domains which are allowed in email addresses for registrations to this site. Wildcards are accepted. Empty to allow any domains"] = "Lista, separada por vírgulas, de domínios permitidos em endereços de e-mail para registros nesse site. <em>Wildcards</em> são aceitas. Vazio para permitir qualquer domínio";
+$a->strings["Block public"] = "Bloquear público";
+$a->strings["Check to block public access to all otherwise public personal pages on this site unless you are currently logged in."] = "Marque para bloquear o acesso público a todas as páginas pessoais que seriam públicas, a não ser que se esteja autenticado.";
+$a->strings["Verify Email Addresses"] = "Verificar endereços de email";
+$a->strings["Check to verify email addresses used in account registration (recommended)."] = "Clique para verificar endereços de email usados no registro de contas (recomendado).";
+$a->strings["Force publish"] = "Forçar publicação";
+$a->strings["Check to force all profiles on this site to be listed in the site directory."] = "Marque para forçar todos os perfis neste site a aparecerem listados no diretório do site.";
+$a->strings["Disable discovery tab"] = "Desabilitar a aba \"Descubra\"";
+$a->strings["Remove the tab in the network view with public content pulled from sources chosen for this site."] = "Remove da visualização de rede a aba com conteúdos públicos obtidos de fontes escolhidas para esse site.";
+$a->strings["No login on Homepage"] = "Sem formulário de autenticação na página inicial";
+$a->strings["Check to hide the login form from your sites homepage when visitors arrive who are not logged in (e.g. when you put the content of the homepage in via the site channel)."] = "Marque para esconder o formulário de autenticação da página inicial do seu site quando visitantes chegarem sem estar autenticados (e.g. quando você inclui os conteúdos da página inicial através do canal do site).";
+$a->strings["Proxy user"] = "Usuário do proxy";
+$a->strings["Proxy URL"] = "URL do proxy";
+$a->strings["Network timeout"] = "Timeout da rede";
+$a->strings["Value is in seconds. Set to 0 for unlimited (not recommended)."] = "Valor em segundos. Use 0 para ilimitado (não recomendado).";
+$a->strings["Delivery interval"] = "Intervalo de entrega";
+$a->strings["Delay background delivery processes by this many seconds to reduce system load. Recommend: 4-5 for shared hosts, 2-3 for virtual private servers. 0-1 for large dedicated servers."] = "Atrase os processos de entrega em segundo plano por este número de segundos para reduzir a carga do sistema. Recomendado: 4-5 para hosts compartilhados, 2-3 para servidores virtuais privados. 0-1 para grandes servidores dedicados.";
+$a->strings["Poll interval"] = "Intervalo de coleta";
+$a->strings["Delay background polling processes by this many seconds to reduce system load. If 0, use delivery interval."] = "Atrase os processos de coleta em segundo plano por este número de segundos para reduzir a carga do sistema. Se 0, use o intervalo de entrega.";
+$a->strings["Maximum Load Average"] = "Carga média máxima";
+$a->strings["Maximum system load before delivery and poll processes are deferred - default 50."] = "Carga máxima do sistema antes de adiar processos de entrega e coleta - padrão 50.";
+$a->strings["No server found"] = "Nenhum servidor foi encontrado";
+$a->strings["ID"] = "ID";
+$a->strings["for channel"] = "para o canal";
+$a->strings["on server"] = "no servidor";
+$a->strings["Status"] = "Status";
+$a->strings["Update has been marked successful"] = "A atualização foi designada bem sucedida";
+$a->strings["Executing %s failed. Check system logs."] = "Execução de %s falhou. Verifique os logs do sistema.";
+$a->strings["Update %s was successfully applied."] = "A atualização %s foi aplicada com sucesso.";
+$a->strings["Update %s did not return a status. Unknown if it succeeded."] = "A atualização %s não retornou um status. Situação incerta quando ao seu sucesso.";
+$a->strings["Update function %s could not be found."] = "A função de atualização %s não foi encontrada.";
+$a->strings["No failed updates."] = "Nenhuma falha nas atualizações.";
+$a->strings["Failed Updates"] = "Falha nas atualizações";
+$a->strings["Mark success (if update was manually applied)"] = "Marque sucesso (se a atualização foi aplicada manualmente)";
+$a->strings["Attempt to execute this update step automatically"] = "Tente executar este passo da atualização automaticamente";
+$a->strings["%s user blocked/unblocked"] = array(
+ 0 => "%s usuário foi bloqueado/desbloqueado",
+ 1 => "%s usuários foram bloqueados/desbloqueados",
+);
+$a->strings["%s user deleted"] = array(
+ 0 => "%s usuário foi deletado",
+ 1 => "%s usuários foram deletados",
+);
+$a->strings["Account not found"] = "A conta não foi encontrada";
+$a->strings["User '%s' unblocked"] = "O usuário/a '%s' foi desbloqueado/a";
+$a->strings["User '%s' blocked"] = "O usuário/a '%s' foi bloqueado/a";
+$a->strings["Users"] = "Usuários";
+$a->strings["select all"] = "selecionar tudo";
+$a->strings["User registrations waiting for confirm"] = "Registros de usuário aguardando confirmação";
+$a->strings["Request date"] = "Data de requisição";
+$a->strings["No registrations."] = "Nenhum registro.";
+$a->strings["Approve"] = "Aprovar";
+$a->strings["Deny"] = "Negar";
+$a->strings["Register date"] = "Data de registro";
+$a->strings["Last login"] = "Última autenticação";
+$a->strings["Expires"] = "Expira";
+$a->strings["Service Class"] = "Classe de serviço";
+$a->strings["Selected users will be deleted!\\n\\nEverything these users had posted on this site will be permanently deleted!\\n\\nAre you sure?"] = "Os usuários selecionados serão deletados!\\n\\nTudo o que esses usuários postaram neste site será permanentemente deletado!\\n\\nTem certeza?";
+$a->strings["The user {0} will be deleted!\\n\\nEverything this user has posted on this site will be permanently deleted!\\n\\nAre you sure?"] = "O/A usuário/a {0} será deletado/a!\\n\\nTudo o que esse/a usuário/a postou neste site será permanentemente deletado!\\n\\nTem certeza?";
+$a->strings["%s channel censored/uncensored"] = array(
+ 0 => "%s canal censurado/descensurado",
+ 1 => "%s canais censurados/descensurados",
+);
+$a->strings["%s channel deleted"] = array(
+ 0 => "%s canal deletado",
+ 1 => "%s canais deletados",
+);
+$a->strings["Channel not found"] = "Canal não encontrado";
+$a->strings["Channel '%s' deleted"] = "Canal '%s' deletado";
+$a->strings["Channel '%s' uncensored"] = "Canal '%s' não censurado";
+$a->strings["Channel '%s' censored"] = "Canal '%s' censurado";
+$a->strings["Censor"] = "Censurar";
+$a->strings["Uncensor"] = "Não censurar";
+$a->strings["UID"] = "UID";
+$a->strings["Selected channels will be deleted!\\n\\nEverything that was posted in these channels on this site will be permanently deleted!\\n\\nAre you sure?"] = "Os canais selecionados serão deletados!\\n\\nTudo que foi postado nesses canais nesse site será permanentemente deletado!\\n\\nVocê tem certeza?";
+$a->strings["The channel {0} will be deleted!\\n\\nEverything that was posted in this channel on this site will be permanently deleted!\\n\\nAre you sure?"] = "O canal {0} será deletado!\\n\\nTudo o que foi postado nesse canal nesse site será permanentemente deletado!\\n\\nVocê tem certeza?";
+$a->strings["Plugin %s disabled."] = "Plugin %s desabilitado.";
+$a->strings["Plugin %s enabled."] = "Plugin %s habilitado.";
+$a->strings["Disable"] = "Desabilitar";
+$a->strings["Enable"] = "Habilitar";
+$a->strings["Toggle"] = "Alternar";
+$a->strings["Author: "] = "Autor:";
+$a->strings["Maintainer: "] = "Mantenedor:";
+$a->strings["No themes found."] = "Nenhum tema foi encontrado.";
+$a->strings["Screenshot"] = "Captura de tela";
+$a->strings["[Experimental]"] = "[Experimental]";
+$a->strings["[Unsupported]"] = "[Desassistido]";
+$a->strings["Log settings updated."] = "As configurações de log foram atualizadas.";
+$a->strings["Clear"] = "Limpar";
+$a->strings["Debugging"] = "Depuração";
+$a->strings["Log file"] = "Arquivo de log";
+$a->strings["Must be writable by web server. Relative to your Red top-level directory."] = "É necessário que o servidor web possa escrever neste arquivo. Relativo ao diretório raiz da Red.";
+$a->strings["Log level"] = "Nível do log";
+$a->strings["New Profile Field"] = "Novo campo de perfil";
+$a->strings["Field nickname"] = "Nome de apresentação do campo";
+$a->strings["System name of field"] = "Nome de sistema do campo";
+$a->strings["Input type"] = "Tipo de entrada";
+$a->strings["Field Name"] = "Nome do campo";
+$a->strings["Label on profile pages"] = "Rótulo nas páginas de perfil";
+$a->strings["Help text"] = "Texto de ajuda";
+$a->strings["Additional info (optional)"] = "Informações adicionais (opcional)";
+$a->strings["Field definition not found"] = "A dfinição de campo não foi encontrada";
+$a->strings["Edit Profile Field"] = "Editar campo de perfil";
$a->strings["Thing updated"] = "A coisa foi atualizada";
$a->strings["Object store: failed"] = "Armazenamento do objeto: falhou";
$a->strings["Thing added"] = "A coisa foi adicionada";
@@ -1573,13 +1672,13 @@ $a->strings["Show Thing"] = "Exibir coisa";
$a->strings["item not found."] = "o item não foi encontrado";
$a->strings["Edit Thing"] = "Editar coisa";
$a->strings["Select a profile"] = "Selecione um perfil";
-$a->strings["Select a category of stuff. e.g. I ______ something"] = "Escolha uma categoria de coisas. e.g. Eu ______ algo";
$a->strings["Post an activity"] = "Publique uma atividade";
$a->strings["Only sends to viewers of the applicable profile"] = "Envia apenas para a audiência do perfil aplicável";
$a->strings["Name of thing e.g. something"] = "Nome da coisa e.g. coisinha";
$a->strings["URL of thing (optional)"] = "URL da coisa (opcional)";
$a->strings["URL for photo of thing (optional)"] = "URL para foto da coisa (opcional)";
$a->strings["Add Thing to your Profile"] = "Adicionar a coisa ao seu perfil";
+$a->strings["Your service plan only allows %d channels."] = "Seu plano de serviço permite apenas %d canais.";
$a->strings["Nothing to import."] = "Nada a importar.";
$a->strings["Unable to download data from old server"] = "Não foi possível descarregar os dados do servidor antigo";
$a->strings["Imported file is empty."] = "O arquivo importado está vazio.";
@@ -1597,6 +1696,7 @@ $a->strings["Your old login email address"] = "O endereço de e-mail da sua anti
$a->strings["Your old login password"] = "A senha dua sua antiga conta";
$a->strings["For either option, please choose whether to make this hub your new primary address, or whether your old location should continue this role. You will be able to post from either location, but only one can be marked as the primary location for files, photos, and media."] = "Para qualquer das opções, por favor escolha se deseja fazer deste hub seu novo endereço primário, ou se o velho local deve continuar com esse papel. Você será capaz de publicar a partir de ambos os locais, mas somente um pode estar designado como local primário para arquivos, fotos e mídia.";
$a->strings["Make this hub my primary location"] = "Faça deste hub meu local primário";
+$a->strings["Import existing posts if possible"] = "Importar publicações existentes se possível";
$a->strings["Total invitation limit exceeded."] = "Foi excedido o número total de convites.";
$a->strings["%s : Not a valid email address."] = "%s : Não é um endereço de e-mail válido.";
$a->strings["Please join us on Red"] = "Por favor, una-se a nós na Red";
@@ -1610,12 +1710,12 @@ $a->strings["You have no more invitations available"] = "Você não possui mais
$a->strings["Send invitations"] = "Enviar convites.";
$a->strings["Enter email addresses, one per line:"] = "Digite os endereços de e-mail, um por linha:";
$a->strings["Your message:"] = "Sua mensagem:";
-$a->strings["You are cordially invited to join me and some other close friends on the Red Matrix - a revolutionary new decentralised communication and information tool."] = "Você está convidado a juntar-se a mim e alguns outros amigos próximos na Red Matrix - uma revolucionária nova ferramenta para comunicação e informação descentralizada.";
-$a->strings["You will need to supply this invitation code: \$invite_code"] = "Você deve informar este código de convite: \$invite_code";
-$a->strings["Please visit my channel at"] = "Por favor, visite o meu canal em";
-$a->strings["Once you have registered (on ANY Red Matrix site - they are all inter-connected), please connect with my Red Matrix channel address:"] = "Após você se registrar (em qualquer site da Red Matrix - eles são todos interconectados!), peço que conecte-se comigo usando o endereço do meu canal:";
-$a->strings["Click the [Register] link on the following page to join."] = "Clique no link [Registrar] na seguinte página para participar.";
-$a->strings["For more information about the Red Matrix Project and why it has the potential to change the internet as we know it, please visit http://getzot.com"] = "Para maiores informações sobre o Projeto Red Matrix e porque ele tem potencial para mudar a Internet como a conhecemos, por favor visite: http://getzot.com";
+$a->strings["Please join my community on RedMatrix."] = "Por favor junte-se à minha comunidade na RedMatrix";
+$a->strings["You will need to supply this invitation code: "] = "Você precisará fornecer este código de convite:";
+$a->strings["1. Register at any RedMatrix location (they are all inter-connected)"] = "1. Registre-se em qualquer site da RedMatrix (eles são todos interconectados)";
+$a->strings["2. Enter my RedMatrix network address into the site searchbar."] = "2. Entre meu endereço da rede RedMatrix na barra de busca do site.";
+$a->strings["or visit "] = "ou visite";
+$a->strings["3. Click [Connect]"] = "3. Clique [Conectar]";
$a->strings["Unable to locate original post."] = "Não foi possível localizar a publicação original.";
$a->strings["Empty post discarded."] = "A publicação em branco foi descartada.";
$a->strings["Executable content type not permitted to this channel."] = "Conteúdo de tipo executável não permitido para este canal.";
@@ -1625,6 +1725,15 @@ $a->strings["You have reached your limit of %1$.0f webpages."] = "Você atingiu
$a->strings["[Embedded content - reload page to view]"] = "[Conteúdo incorporado - recarregue a página para ver]";
$a->strings["Help with this feature"] = "Ajuda com este recurso";
$a->strings["Layout Name"] = "Nome do layout";
+$a->strings["Like/Dislike"] = "Gostar/Desgostar";
+$a->strings["This action is restricted to members."] = "Esta ação é restrita a membros.";
+$a->strings["Please <a href=\"rmagic\">login with your RedMatrix ID</a> or <a href=\"register\">register as a new RedMatrix member</a> to continue."] = "Por favor <a href=\"rmagic\">entre com sua ID da RedMatrix</a> ou <a href=\"register\">registre-se como um novo membro da RedMatrix</a> para continuar.";
+$a->strings["Invalid request."] = "Solicitação inválida.";
+$a->strings["thing"] = "coisa";
+$a->strings["Channel unavailable."] = "Canal não disponível.";
+$a->strings["Previous action reversed."] = "Ação anterior revertida.";
+$a->strings["Action completed."] = "Ação completada.";
+$a->strings["Thank you."] = "Obrigado.";
$a->strings["Remote privacy information not available."] = "Não existe informação disponível sobre a privacidade remota.";
$a->strings["Visible to:"] = "Visível para:";
$a->strings["No connections."] = "Nenhuma conexão.";
@@ -1659,6 +1768,7 @@ $a->strings["Message recalled."] = "Mensagem retirada.";
$a->strings["Send Private Message"] = "Enviar mensagem privada";
$a->strings["To:"] = "Para:";
$a->strings["Subject:"] = "Assunto:";
+$a->strings["Send"] = "Enviar";
$a->strings["Message not found."] = "Mensagem não encontrada.";
$a->strings["Delete message"] = "Excluir a mensagem";
$a->strings["Recall message"] = "Retirar mensagem";
@@ -1669,7 +1779,6 @@ $a->strings["No secure communications available. You <strong>may</strong> be abl
$a->strings["Send Reply"] = "Enviar resposta";
$a->strings["You have created %1$.0f of %2$.0f allowed channels."] = "Você criou %1$.0f de %2$.0f canais permitidos.";
$a->strings["Create a new channel"] = "Criar um novo canal";
-$a->strings["Channel Manager"] = "Administrador do canal";
$a->strings["Current Channel"] = "Canal atual";
$a->strings["Attach to one of your channels by selecting it."] = "Selecione um dos seus canais para utilizá-lo.";
$a->strings["Default Channel"] = "Canal padrão";
@@ -1704,42 +1813,15 @@ $a->strings["Conversation removed."] = "A conversa foi removida.";
$a->strings["No messages."] = "Nenhuma mensagem.";
$a->strings["D, d M Y - g:i A"] = "D, d M Y - g:i A";
$a->strings["Add a Channel"] = "Adicionar um canal";
-$a->strings["A channel is your own collection of related web pages. A channel can be used to hold social network profiles, blogs, conversation groups and forums, celebrity pages, and much more. You may create as many channels as your service provider allows."] = "Um canal é uma coleção sua de páginas relacionadas. Um canal pode ser usado para um perfil de rede social, um blog, grupos de conversação e fóruns, páginas de celebridades, e muito mais. Você pode criar tantos canais quanto seu provedor de serviço permita.";
-$a->strings["Examples: \"Bob Jameson\", \"Lisa and her Horses\", \"Soccer\", \"Aviation Group\" "] = "Exemplos: \"Beto Salinas\", \"Elis e seus Cavalos\", \"Futebol\", \"Grupo de aviadores\"";
+$a->strings["A channel is your own collection of related web pages. A channel can be used to hold social network profiles, blogs, conversation groups and forums, celebrity pages, and much more. You may create as many channels as your service provider allows."] = "Um canal é uma coleção sua de páginas relacionadas. Um canal pode ser usado para um perfil de rede social, um blog, grupos de conversação e fóruns temáticos, páginas de personalidades, e muito mais. Você pode criar tantos canais quanto o provedor de serviço permita.";
+$a->strings["Examples: \"Bob Jameson\", \"Lisa and her Horses\", \"Soccer\", \"Aviation Group\" "] = "Exemplos: \"Maria Caiouá\", \"Roberto Salinas\", \"Elis e sua banda\", \"Futebol de salão\", \"Fanáticos por aeromodelismo\"";
$a->strings["Choose a short nickname"] = "Escolha um apelido curto";
$a->strings["Your nickname will be used to create an easily remembered channel address (like an email address) which you can share with others."] = "Seu apelido será usado para criar um endereço para o canal de fácil memorização (como um endereço de email), que você poderá compartilhar com outros.";
$a->strings["Or <a href=\"import\">import an existing channel</a> from another location"] = "Ou <a href=\"import\">importe um canal existente</a> de outro local";
-$a->strings["Page owner information could not be retrieved."] = "As informações do dono da pagina não puderam ser obtidas.";
-$a->strings["Album not found."] = "O álbum não foi encontrado.";
-$a->strings["Delete Album"] = "Excluir o álbum";
-$a->strings["Delete Photo"] = "Excluir a foto";
-$a->strings["No photos selected"] = "Não foi selecionada nenhuma foto";
-$a->strings["Access to this item is restricted."] = "O acesso a este item está restrito.";
-$a->strings["You have used %1$.2f Mbytes of %2$.2f Mbytes photo storage."] = "Você usou %1$.2f Mbytes de %2$.2f Mbytes de armazenamento de fotos.";
-$a->strings["You have used %1$.2f Mbytes of photo storage."] = "Você usou %1$.2f Mbytes de armazenamento de fotos.";
-$a->strings["Upload Photos"] = "Enviar fotos";
-$a->strings["New album name: "] = "Novo nome de álbum: ";
-$a->strings["or existing album name: "] = "ou nome de um álbum já existente: ";
-$a->strings["Do not show a status post for this upload"] = "Não exibir uma publicação de status para este carregamento";
-$a->strings["Contact Photos"] = "Fotos dos contatos";
-$a->strings["Edit Album"] = "Editar o álbum";
-$a->strings["Show Newest First"] = "Exibir primeiro os mais recentes";
-$a->strings["Show Oldest First"] = "Exibir primeiro os mais antigos";
-$a->strings["View Photo"] = "Ver a foto";
-$a->strings["Permission denied. Access to this item may be restricted."] = "Permissão negada. Acesso a este item pode estar restrito.";
-$a->strings["Photo not available"] = "A foto não está disponível";
-$a->strings["Use as profile photo"] = "Usar como uma foto de perfil";
-$a->strings["View Full Size"] = "Ver no tamanho real";
-$a->strings["Edit photo"] = "Editar a foto";
-$a->strings["Rotate CW (right)"] = "Rotacionar H (horário)";
-$a->strings["Rotate CCW (left)"] = "Rotacionar AH (anti-horário)";
-$a->strings["New album name"] = "Novo nome para o álbum";
-$a->strings["Caption"] = "Legenda";
-$a->strings["Add a Tag"] = "Adicionar uma etiqueta";
-$a->strings["Example: @bob, @Barbara_Jensen, @jim@example.com, #California, #camping"] = "Por exemplo: @joao, @Joao_da_Silva, @joao@exemplo.com, #Minas_Gerais, #acampamento";
-$a->strings["In This Photo:"] = "Nesta foto:";
-$a->strings["View Album"] = "Ver álbum";
-$a->strings["Recent Photos"] = "Fotos recentes";
+$a->strings["Channel Type"] = "Tipo de canal";
+$a->strings["Please choose a channel type (such as social networking or community forum) and privacy requirements so we can select the best permissions for you"] = "Por favor, escolha um tipo de canal (por exemplo rede social ou fórum de comunidade) e requisito de privacidade, para que possamos configurar as melhores permissões para você";
+$a->strings["Red Matrix - &quot;The Network&quot;"] = "Red Matrix - &quot;A Rede&quot;";
+$a->strings["Welcome to %s"] = "Bem-vindo(a) a %s";
$a->strings["Invalid request identifier."] = "Identificador de solicitação inválido";
$a->strings["Discard"] = "Descartar";
$a->strings["No more system notifications."] = "Sem novas notificações do sistema.";
@@ -1760,9 +1842,17 @@ $a->strings["80 x 80 pixels - optional"] = "80 x 80 pixels - opcional";
$a->strings["Version ID"] = "ID da versão";
$a->strings["Price of app"] = "Preço do aplicativo";
$a->strings["Location (URL) to purchase app"] = "Endereço (URL) para comprar o aplicativo";
+$a->strings["Poll"] = "Votação";
+$a->strings["View Results"] = "Ver resultados";
+$a->strings["Account removals are not allowed within 48 hours of changing the account password."] = "A remoção da conta fica desabilitada por 48 horas após uma troca de senha da conta.";
+$a->strings["Remove This Account"] = "Remover esta conta";
+$a->strings["This will completely remove this account including all its channels from the network. Once this has been done it is not recoverable."] = "Isso irá remover completamente esta conta, incluindo todos os canais da rede. Uma vez feito isso eles não poderão ser recuperados.";
+$a->strings["Remove this account, all its channels and all its channel clones from the network"] = "Remove esta conta, todos os seus canais e todos os clones desses canais da rede.";
+$a->strings["By default only the instances of the channels located on this hub will be removed from the network"] = "Por padrão, apenas as instâncias dos canais localizadas neste hub serão removidas da rede";
+$a->strings["No service class restrictions found."] = "Não foram encontradas restrições de classe de serviço.";
$a->strings["Schema Default"] = "Padrão do esquema";
$a->strings["Sans-Serif"] = "Sans-Serif";
-$a->strings["Monospace"] = "Monoespaçada";
+$a->strings["Monospace"] = "Monospace";
$a->strings["Theme settings"] = "Configurações de tema";
$a->strings["Set scheme"] = "Definir esquema";
$a->strings["Set font-size for posts and comments"] = "Definir o tamanho da fonte para publicações e comentários";
@@ -1770,20 +1860,20 @@ $a->strings["Set font face"] = "Definir a face da fonte";
$a->strings["Set iconset"] = "Definir o conjunto de ícones";
$a->strings["Set big shadow size, default 15px 15px 15px"] = "Definir o tamanho da sombra grande, padrão 15px 15px 15px";
$a->strings["Set small shadow size, default 5px 5px 5px"] = "Definir o tamanho da sombra pequena, padrão 5px 5px 5px";
-$a->strings["Set shadow colour, default #000"] = "Definir a cor da sombra, padrão #000";
+$a->strings["Set shadow color, default #000"] = "Definir a cor da sombra, padrão #000";
$a->strings["Set radius size, default 5px"] = "Definir o tamanho do raio de curvatura, padrão 5px";
$a->strings["Set line-height for posts and comments"] = "Definir a altura da linha para publicações e comentários";
$a->strings["Set background image"] = "Definir a imagem do pano de fundo";
$a->strings["Set background attachment"] = "Definir o anexo de pano de fundo";
-$a->strings["Set background colour"] = "Definir a cor do pano de fundo";
+$a->strings["Set background color"] = "Definir a cor do pano de fundo";
$a->strings["Set section background image"] = "Definir a imagem de fundo de seção";
-$a->strings["Set section background colour"] = "Definir a cor de fundo de seção";
-$a->strings["Set colour of items - use hex"] = "Definir a cor dos items - use hex";
-$a->strings["Set colour of links - use hex"] = "Definir a cor dos links - use hex";
+$a->strings["Set section background color"] = "Definir a cor de fundo de seção";
+$a->strings["Set color of items - use hex"] = "Definir a cor dos items - use hex";
+$a->strings["Set color of links - use hex"] = "Definir a cor dos links - use hex";
$a->strings["Set max-width for items. Default 400px"] = "Definir a largura máxima para itens. Padrão 400px";
$a->strings["Set min-width for items. Default 240px"] = "Definir a largura mínima para itens. Padrão 240px";
$a->strings["Set the generic content wrapper width. Default 48%"] = "Definir a largura do envólucro para conteúdo genérico. Padrão 48%";
-$a->strings["Set colour of fonts - use hex"] = "Definir a cor das fontes - use hex";
+$a->strings["Set color of fonts - use hex"] = "Definir a cor das fontes - use hex";
$a->strings["Set background-size element"] = "Definir o elemento <em>background-size</em>";
$a->strings["Item opacity"] = "Opacidade de itens";
$a->strings["Display post previews only"] = "Exibir apenas a pré-visualização de publicações";
@@ -1792,33 +1882,34 @@ $a->strings["Colour of the navigation bar"] = "Cor da barra de navegação";
$a->strings["Item float"] = "Flutuação de item";
$a->strings["Left offset of the section element"] = "Deslocamento esquerdo do elemento de seção";
$a->strings["Right offset of the section element"] = "Deslocamento direito do elemento de seção";
-$a->strings["Section width"] = "Largura de seção";
+$a->strings["Section width"] = "largura de seção";
$a->strings["Left offset of the aside"] = "Deslocamento esquerdo do aparte";
$a->strings["Right offset of the aside element"] = "Deslocamento direito do aparte";
$a->strings["None"] = "Nenhum";
$a->strings["Header image"] = "Imagem de cabeçalho";
$a->strings["Header image only on profile pages"] = "Imagem de cabeçalho apenas em páginas de perfil";
+$a->strings["Light (Red Matrix default)"] = "Leve (padrão da Red Matrix)";
$a->strings["Narrow navbar"] = "Barra de navegação estreita";
-$a->strings["Navigation bar background colour"] = "Cor de fundo da barra de navegação";
-$a->strings["Navigation bar gradient top colour"] = "Cor no topo de gradiente da barra de navegação";
-$a->strings["Navigation bar gradient bottom colour"] = "Cor na base de gradiente da barra de navegação";
-$a->strings["Navigation active button gradient top colour"] = "Cor no topo de gradiente de botão ativo de navegação";
-$a->strings["Navigation active button gradient bottom colour"] = "Cor na base de gradiente de botão ativo de navegação";
-$a->strings["Navigation bar border colour "] = "Cor de borda da barra de navegação";
-$a->strings["Navigation bar icon colour "] = "Cor de ícone da barra de navegação";
-$a->strings["Navigation bar active icon colour "] = "Cor de ícone ativo da barra de navegação";
-$a->strings["link colour"] = "cor dos links";
-$a->strings["Set font-colour for banner"] = "Definir a cor da fonte para o cartaz";
-$a->strings["Set the background colour"] = "Definir a cor do pano de fundo";
+$a->strings["Navigation bar background color"] = "Cor de fundo da barra de navegação";
+$a->strings["Navigation bar gradient top color"] = "Cor no topo de gradiente da barra de navegação";
+$a->strings["Navigation bar gradient bottom color"] = "Cor na base de gradiente da barra de navegação";
+$a->strings["Navigation active button gradient top color"] = "Cor no topo de gradiente de botão ativo de navegação";
+$a->strings["Navigation active button gradient bottom color"] = "Cor na base de gradiente de botão ativo de navegação";
+$a->strings["Navigation bar border color "] = "Cor de borda da barra de navegação";
+$a->strings["Navigation bar icon color "] = "Cor de ícone da barra de navegação";
+$a->strings["Navigation bar active icon color "] = "Cor de ícone ativo da barra de navegação";
+$a->strings["link color"] = "cor dos links";
+$a->strings["Set font-color for banner"] = "Definir a cor da fonte para o cartaz";
+$a->strings["Set the background color"] = "Definir a cor do pano de fundo";
$a->strings["Set the background image"] = "Definir a imagem do pano de fundo";
-$a->strings["Set the background colour of items"] = "Definir a cor de fundo dos items";
-$a->strings["Set the background colour of comments"] = "Definir a cor de fundo dos comentários";
-$a->strings["Set the border colour of comments"] = "Definir a cor da borda dos comentários";
+$a->strings["Set the background color of items"] = "Definir a cor de fundo dos items";
+$a->strings["Set the background color of comments"] = "Definir a cor de fundo dos comentários";
+$a->strings["Set the border color of comments"] = "Definir a cor da borda dos comentários";
$a->strings["Set the indent for comments"] = "Definir a indentação de comentários";
-$a->strings["Set the basic colour for item icons"] = "Definir a cor básica para ícones de itens";
-$a->strings["Set the hover colour for item icons"] = "Definir a cor para ícones de itens quando que o mouse está sobre eles";
+$a->strings["Set the basic color for item icons"] = "Definir a cor básica para ícones de itens";
+$a->strings["Set the hover color for item icons"] = "Definir a cor para ícones de itens quando que o mouse está sobre eles";
$a->strings["Set font-size for the entire application"] = "Definir o tamanho da fonte para a aplicação como um todo";
-$a->strings["Set font-colour for posts and comments"] = "Definir a cor da fonte para publicações e comentários";
+$a->strings["Set font-color for posts and comments"] = "Definir a cor da fonte para publicações e comentários";
$a->strings["Set radius of corners"] = "Definir o raio de curvatura dos cantos";
$a->strings["Set shadow depth of photos"] = "Definir a profundidade de sombra das fotos";
$a->strings["Set maximum width of conversation regions"] = "Definir a largura máxima da área de conversas";
diff --git a/view/ru/follow_notify_eml.tpl b/view/ru/follow_notify_eml.tpl
deleted file mode 100644
index ba07b19da..000000000
--- a/view/ru/follow_notify_eml.tpl
+++ /dev/null
@@ -1,14 +0,0 @@
-
-Dear {{$myname}},
-
-You have a new follower at {{$sitename}} - '{{$requestor}}'.
-
-You may visit their profile at {{$url}}.
-
-Please login to your site to approve or ignore/cancel the request.
-
-{{$siteurl}}
-
-Regards,
-
- {{$sitename}} administrator
diff --git a/view/ru/friend_complete_eml.tpl b/view/ru/friend_complete_eml.tpl
deleted file mode 100644
index 1c647b994..000000000
--- a/view/ru/friend_complete_eml.tpl
+++ /dev/null
@@ -1,22 +0,0 @@
-
-Dear {{$username}},
-
- Great news... '{{$fn}}' at '{{$dfrn_url}}' has accepted
-your connection request at '{{$sitename}}'.
-
-You are now mutual friends and may exchange status updates, photos, and email
-without restriction.
-
-Please visit your 'Connnections' page at {{$sitename}} if you wish to make
-any changes to this relationship.
-
-{{$siteurl}}
-
-[For instance, you may create a separate profile with information that is not
-available to the general public - and assign viewing rights to '{{$fn}}'].
-
-Sincerely,
-
- {{$sitename}} Administrator
-
-
diff --git a/view/ru/intro_complete_eml.tpl b/view/ru/intro_complete_eml.tpl
deleted file mode 100644
index 2c2428d68..000000000
--- a/view/ru/intro_complete_eml.tpl
+++ /dev/null
@@ -1,22 +0,0 @@
-
-Dear {{$username}},
-
- '{{$fn}}' at '{{$dfrn_url}}' has accepted
-your connection request at '{{$sitename}}'.
-
- '{{$fn}}' has chosen to accept you a "fan", which restricts
-some forms of communication - such as private messaging and some profile
-interactions. If this is a celebrity or community page, these settings were
-applied automatically.
-
- '{{$fn}}' may choose to extend this into a two-way or more permissive
-relationship in the future.
-
- You will start receiving public status updates from '{{$fn}}',
-which will appear on your 'Matrix' page at
-
-{{$siteurl}}
-
-Sincerely,
-
- {{$sitename}} Administrator
diff --git a/view/ru/request_notify_eml.tpl b/view/ru/request_notify_eml.tpl
deleted file mode 100644
index d01b8ff27..000000000
--- a/view/ru/request_notify_eml.tpl
+++ /dev/null
@@ -1,17 +0,0 @@
-
-Dear {{$myname}},
-
-You have just received a connection request at {{$sitename}}
-
-from '{{$requestor}}'.
-
-You may visit their profile at {{$url}}.
-
-Please login to your site to view the complete introduction
-and approve or ignore/cancel the request.
-
-{{$siteurl}}
-
-Regards,
-
- {{$sitename}} administrator
diff --git a/view/sv/cmnt_received_eml.tpl b/view/sv/cmnt_received_eml.tpl
deleted file mode 100644
index d87c7a1d1..000000000
--- a/view/sv/cmnt_received_eml.tpl
+++ /dev/null
@@ -1,17 +0,0 @@
-
-$username,
-
-'$from' har kommenterat något som du följer.
-
------
-$body
------
-
-Logga in på $siteurl för att se hela konversationen:
-
-$display
-
-Hälsningar,
-$sitename admin
-
-
diff --git a/view/sv/follow_notify_eml.tpl b/view/sv/follow_notify_eml.tpl
deleted file mode 100644
index 254478c7a..000000000
--- a/view/sv/follow_notify_eml.tpl
+++ /dev/null
@@ -1,14 +0,0 @@
-
-Hej {{$myname}},
-
-Du har en ny följare på {{$sitename}} - '{{$requestor}}'.
-
-Du kan besöka profilen på {{$url}}.
-
-Logga in på din server för att godkänna eller ignorera/avslå förfrågan.
-
-{{$siteurl}}
-
-Hälsningar,
-
- {{$sitename}}-administratören
diff --git a/view/sv/friend_complete_eml.tpl b/view/sv/friend_complete_eml.tpl
deleted file mode 100644
index 31916367a..000000000
--- a/view/sv/friend_complete_eml.tpl
+++ /dev/null
@@ -1,22 +0,0 @@
-
-Hej {{$username}},
-
- Goda nyheter... '{{$fn}}' med '{{$dfrn_url}}' har accepterat
-din kontaktförfrågan på '{{$sitename}}'.
-
-Ni är nu ömsesidiga vänner och kan dela statusuppdateringar, foton och
-e-post utan restriktioner.
-
-Besök sidan 'Kontakter' på {{$sitename}} om du önskar göra några
-förändringar av den här relationen.
-
-{{$siteurl}}
-
-[Du kan till exempel skapa en separat profil med information som inte är
-tillgänglig för allmänheten - och ge '{{$fn}}' visningsrättigheter].
-
-Hälsningar,
-
- {{$sitename}}-administratören
-
-
diff --git a/view/sv/intro_complete_eml.tpl b/view/sv/intro_complete_eml.tpl
deleted file mode 100644
index f0513429f..000000000
--- a/view/sv/intro_complete_eml.tpl
+++ /dev/null
@@ -1,22 +0,0 @@
-
-Hej {{$username}},
-
- '{{$fn}}' med '{{$dfrn_url}}' har accepterat
-din kontaktförfrågan på '{{$sitename}}'.
-
- '{{$fn}}' har valt att acceptera dig som ett "fan", vilket begränsar
-vissa former av kommunikation - exempelvis privata meddelanden och viss
-profilinteraktion. Om detta är en fansida eller gemenskapssida används
-de inställningarna automatiskt.
-
- '{{$fn}}' kan välja att utöka detta till en tvåvägs eller mer
-tillåtande relation i framtiden.
-
- Du kommer att börja få offentliga statusuppdateringar från '{{$fn}}',
-vilka kommer att synas på din 'Matrix'-sida på
-
-{{$siteurl}}
-
-Hälsningar,
-
- {{$sitename}}-administratören
diff --git a/view/sv/lostpass_eml.tpl b/view/sv/lostpass_eml.tpl
index f33eccfa0..923a60d7e 100644
--- a/view/sv/lostpass_eml.tpl
+++ b/view/sv/lostpass_eml.tpl
@@ -1,14 +1,14 @@
Hej {{$username}},
- En begäran mottogs nyligen på {{$sitename}} om att återställa ditt
+ En begäran mottogs nyligen på {{$sitename}} om att återställa ditt
kontolösenord. För att bekräfta begäran, följ länken nedan eller klistra
-in den i din webbläsares adressfält.
+in den i din webbläsares adressfält.
Om du INTE begärde den här ändringen, följ INTE länken och ignorera och/eller
-radera det här mailet.
+radera det här mailet.
Ditt lösenord kommer inte att ändras om vi inte kan verifiera att det
-var du som gjorde begäran.
+var du som gjorde begäran.
Följ den här länken för att bekräfta din identitet:
@@ -29,4 +29,4 @@ Användarnamn: {{$email}}
Hälsningar,
{{$sitename}}-administratören
-
+ \ No newline at end of file
diff --git a/view/sv/mail_received_html_body_eml.tpl b/view/sv/mail_received_html_body_eml.tpl
deleted file mode 100644
index a9a34c23a..000000000
--- a/view/sv/mail_received_html_body_eml.tpl
+++ /dev/null
@@ -1,25 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional //EN">
-<html>
-<head>
- <title>Meddelande p&aring; Friendika</title>
- <meta http-equiv="Content-Type" content="text/html;charset=utf-8" />
-</head>
-<body>
-<table style="border:1px solid #ccc">
- <tbody>
- <tr><td colspan="2" style="background:#3b5998; color:#FFFFFF; font-weight:bold; font-family:'lucida grande', tahoma, verdana,arial, sans-serif; padding: 4px 8px; vertical-align: middle; font-size:16px; letter-spacing: -0.03em; text-align: left;"><img style="width:32px;height:32px;" src='$siteurl/images/friendika-32.png'><span style="padding:7px;">Friendika</span></td></tr>
-
- <tr><td style="padding-top:22px;" colspan="2">$from har skickat ett personligt meddelande till dig p&aring; $siteName.</td></tr>
-
-
- <tr><td style="padding-left:22px;padding-top:22px;width:60px;" valign="top" rowspan=3><a href="$url"><img style="border:0px;width:48px;height:48px;" src="$thumb"></a></td>
- <td style="padding-top:22px;"><a href="$url">$from</a></td></tr>
- <tr><td style="font-weight:bold;padding-bottom:5px;">$title</td></tr>
- <tr><td style="padding-right:22px;">$htmlversion</td></tr>
- <tr><td style="padding-top:11px;padding-bottom:11px;" colspan="2">Logga in p&aring; <a href="$siteurl">$siteurl</a> f&ouml;r att l&auml;sa och svara p&aring; personliga meddelanden.</td></tr>
- <tr><td></td><td>H&auml;lsningar,</td></tr>
- <tr><td></td><td>$siteName admin</td></tr>
- </tbody>
-</table>
-</body>
-</html> \ No newline at end of file
diff --git a/view/sv/mail_received_text_body_eml.tpl b/view/sv/mail_received_text_body_eml.tpl
deleted file mode 100644
index ac2857b58..000000000
--- a/view/sv/mail_received_text_body_eml.tpl
+++ /dev/null
@@ -1,10 +0,0 @@
-$from har skickat ett personligt meddelande till dig på $siteName.
-
-$title
-
-$textversion
-
-Logga in på $siteurl för att läsa och svara på personliga meddelanden.
-
-Hälsningar,
-$siteName admin
diff --git a/view/sv/messages.po b/view/sv/messages.po
index 096a0334a..3cafa9809 100644
--- a/view/sv/messages.po
+++ b/view/sv/messages.po
@@ -3,13 +3,15 @@
# This file is distributed under the same license as the Red package.
#
# Translators:
+# pafcu <pafcu@iki.fi>, 2014
+# pafcu <pafcu@iki.fi>, 2014
msgid ""
msgstr ""
"Project-Id-Version: Red Matrix\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2014-04-18 00:04-0700\n"
-"PO-Revision-Date: 2014-04-19 11:55+0000\n"
-"Last-Translator: Erik Lundin <erik.lundin@aol.se>\n"
+"POT-Creation-Date: 2014-12-26 00:04-0800\n"
+"PO-Revision-Date: 2014-12-29 22:54+0000\n"
+"Last-Translator: Erik Lundin <sby8zrm8v1@asdf.asdfasdf.eu>\n"
"Language-Team: Swedish (http://www.transifex.com/projects/p/red-matrix/language/sv/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
@@ -17,494 +19,491 @@ msgstr ""
"Language: sv\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-#: ../../include/widgets.php:29 ../../include/contact_widgets.php:92
-msgid "Categories"
-msgstr "Kategorier"
-
-#: ../../include/widgets.php:115 ../../include/widgets.php:155
-#: ../../include/Contact.php:107 ../../include/identity.php:675
-#: ../../mod/directory.php:188 ../../mod/match.php:62
-#: ../../mod/dirprofile.php:170 ../../mod/suggest.php:51
-msgid "Connect"
-msgstr "Ta kontakt"
-
-#: ../../include/widgets.php:117 ../../mod/suggest.php:53
-msgid "Ignore/Hide"
-msgstr "Ignorera/göm"
-
-#: ../../include/widgets.php:123 ../../mod/connections.php:265
-msgid "Suggestions"
-msgstr "Förslag"
-
-#: ../../include/widgets.php:124
-msgid "See more..."
-msgstr "Se fler..."
-
-#: ../../include/widgets.php:146
+#: ../../include/dba/dba_driver.php:142
#, php-format
-msgid "You have %1$.0f of %2$.0f allowed connections."
-msgstr "Du har %1$.0f av %2$.0f tillåtna kontakter."
-
-#: ../../include/widgets.php:152
-msgid "Add New Connection"
-msgstr "Lägg till ny kontakt"
+msgid "Cannot locate DNS info for database server '%s'"
+msgstr "Kan inte hitta DNS-information för databasserver '%s'"
-#: ../../include/widgets.php:153
-msgid "Enter the channel address"
-msgstr "Ange kanaladressen"
+#: ../../include/photo/photo_driver.php:680 ../../include/photos.php:52
+#: ../../mod/photos.php:91 ../../mod/photos.php:654
+#: ../../mod/profile_photo.php:142 ../../mod/profile_photo.php:301
+#: ../../mod/profile_photo.php:423
+msgid "Profile Photos"
+msgstr "Profilfoton"
-#: ../../include/widgets.php:154
-msgid "Example: bob@example.com, http://example.com/barbara"
-msgstr "Exempel: bob@example.com, http://example.com/barbara"
+#: ../../include/items.php:382 ../../mod/group.php:68
+#: ../../mod/subthread.php:49 ../../mod/profperm.php:23 ../../mod/like.php:246
+#: ../../index.php:389
+msgid "Permission denied"
+msgstr "Behörighet saknas"
-#: ../../include/widgets.php:171
-msgid "Notes"
-msgstr "Anteckningar"
+#: ../../include/items.php:969 ../../include/items.php:1014
+msgid "(Unknown)"
+msgstr "(Okänt)"
-#: ../../include/widgets.php:173 ../../include/text.php:805
-#: ../../include/text.php:819 ../../mod/filer.php:50 ../../mod/rbmark.php:28
-#: ../../mod/rbmark.php:98
-msgid "Save"
-msgstr "Spara"
+#: ../../include/items.php:1171
+msgid "Visible to anybody on the internet."
+msgstr "Kan ses av vem som helst på Internet."
-#: ../../include/widgets.php:243
-msgid "Remove term"
-msgstr "Ta bort uttryck"
+#: ../../include/items.php:1173
+msgid "Visible to you only."
+msgstr "Kan bara ses av dig."
-#: ../../include/widgets.php:252 ../../include/features.php:52
-msgid "Saved Searches"
-msgstr "Sparade sökningar"
+#: ../../include/items.php:1175
+msgid "Visible to anybody in this network."
+msgstr "Kan ses av alla på det här nätverket."
-#: ../../include/widgets.php:253 ../../include/group.php:290
-msgid "add"
-msgstr "lägg till"
+#: ../../include/items.php:1177
+msgid "Visible to anybody authenticated."
+msgstr "Kan ses av alla inloggade."
-#: ../../include/widgets.php:283 ../../include/features.php:66
-#: ../../include/contact_widgets.php:58
-msgid "Saved Folders"
-msgstr "Sparade mappar"
+#: ../../include/items.php:1179
+#, php-format
+msgid "Visible to anybody on %s."
+msgstr "Kan ses av alla på %s."
-#: ../../include/widgets.php:286 ../../include/contact_widgets.php:61
-#: ../../include/contact_widgets.php:95
-msgid "Everything"
-msgstr "Allt"
+#: ../../include/items.php:1181
+msgid "Visible to all connections."
+msgstr "Kan ses av alla kontakter."
-#: ../../include/widgets.php:322
-msgid "Archives"
-msgstr "Arkiv"
+#: ../../include/items.php:1183
+msgid "Visible to approved connections."
+msgstr "Kan ses av godkända kontakter."
-#: ../../include/widgets.php:384
-msgid "Refresh"
-msgstr "Ladda om"
+#: ../../include/items.php:1185
+msgid "Visible to specific connections."
+msgstr "Kan ses av valda kontakter."
-#: ../../include/widgets.php:385 ../../mod/connedit.php:395
-msgid "Me"
-msgstr "Mig själv"
-
-#: ../../include/widgets.php:386 ../../mod/connedit.php:397
-msgid "Best Friends"
-msgstr "Bästa vänner"
-
-#: ../../include/widgets.php:387 ../../include/identity.php:342
-#: ../../include/profile_selectors.php:42 ../../mod/connedit.php:398
-msgid "Friends"
-msgstr "Vänner"
+#: ../../include/items.php:3952 ../../mod/display.php:32
+#: ../../mod/thing.php:76 ../../mod/filestorage.php:26 ../../mod/admin.php:168
+#: ../../mod/admin.php:896 ../../mod/admin.php:1099 ../../mod/viewsrc.php:20
+msgid "Item not found."
+msgstr "Posten hittades inte."
-#: ../../include/widgets.php:388
-msgid "Co-workers"
-msgstr "Kollegor"
+#: ../../include/items.php:4019 ../../include/photos.php:15
+#: ../../include/attach.php:116 ../../include/attach.php:163
+#: ../../include/attach.php:226 ../../include/attach.php:240
+#: ../../include/attach.php:280 ../../include/attach.php:294
+#: ../../include/attach.php:318 ../../include/attach.php:511
+#: ../../include/attach.php:585 ../../include/chat.php:116
+#: ../../mod/mood.php:112 ../../mod/register.php:72 ../../mod/mitem.php:106
+#: ../../mod/achievements.php:30 ../../mod/settings.php:542
+#: ../../mod/group.php:9 ../../mod/poke.php:128 ../../mod/api.php:26
+#: ../../mod/api.php:31 ../../mod/setup.php:207 ../../mod/authtest.php:13
+#: ../../mod/profile.php:64 ../../mod/profile.php:72 ../../mod/block.php:22
+#: ../../mod/block.php:72 ../../mod/delegate.php:6 ../../mod/sources.php:66
+#: ../../mod/events.php:195 ../../mod/channel.php:90 ../../mod/channel.php:201
+#: ../../mod/channel.php:244 ../../mod/chat.php:90 ../../mod/chat.php:95
+#: ../../mod/regmod.php:17 ../../mod/editpost.php:13 ../../mod/common.php:35
+#: ../../mod/connections.php:169 ../../mod/connedit.php:266
+#: ../../mod/mail.php:111 ../../mod/photos.php:68 ../../mod/webpages.php:67
+#: ../../mod/bookmarks.php:46 ../../mod/blocks.php:67 ../../mod/blocks.php:75
+#: ../../mod/editblock.php:65 ../../mod/pdledit.php:21
+#: ../../mod/editlayout.php:64 ../../mod/editlayout.php:89
+#: ../../mod/editwebpage.php:64 ../../mod/editwebpage.php:86
+#: ../../mod/editwebpage.php:118 ../../mod/profile_photo.php:263
+#: ../../mod/profile_photo.php:276 ../../mod/like.php:154
+#: ../../mod/thing.php:247 ../../mod/thing.php:264 ../../mod/thing.php:299
+#: ../../mod/fsuggest.php:78 ../../mod/filestorage.php:18
+#: ../../mod/filestorage.php:67 ../../mod/filestorage.php:82
+#: ../../mod/filestorage.php:109 ../../mod/locs.php:71 ../../mod/item.php:191
+#: ../../mod/item.php:199 ../../mod/item.php:972 ../../mod/suggest.php:26
+#: ../../mod/layouts.php:67 ../../mod/layouts.php:74 ../../mod/layouts.php:85
+#: ../../mod/profiles.php:179 ../../mod/profiles.php:550
+#: ../../mod/manage.php:6 ../../mod/menu.php:61 ../../mod/invite.php:13
+#: ../../mod/invite.php:104 ../../mod/network.php:12
+#: ../../mod/notifications.php:66 ../../mod/viewconnections.php:22
+#: ../../mod/viewconnections.php:27 ../../mod/viewsrc.php:14
+#: ../../mod/message.php:16 ../../mod/new_channel.php:68
+#: ../../mod/new_channel.php:99 ../../mod/page.php:28 ../../mod/page.php:78
+#: ../../mod/appman.php:66 ../../mod/service_limits.php:7 ../../index.php:190
+#: ../../index.php:390
+msgid "Permission denied."
+msgstr "Behörighet saknas."
-#: ../../include/widgets.php:389 ../../mod/connedit.php:399
-msgid "Former Friends"
-msgstr "Tidigare vänner"
+#: ../../include/items.php:4410 ../../mod/group.php:38 ../../mod/group.php:140
+msgid "Collection not found."
+msgstr "Kretsen hittades inte."
-#: ../../include/widgets.php:390 ../../mod/connedit.php:400
-msgid "Acquaintances"
-msgstr "Bekanta"
+#: ../../include/items.php:4425
+msgid "Collection is empty."
+msgstr "Kretsen är tom."
-#: ../../include/widgets.php:391
-msgid "Everybody"
-msgstr "Alla"
+#: ../../include/items.php:4432
+#, php-format
+msgid "Collection: %s"
+msgstr "Krets: %s"
-#: ../../include/widgets.php:423
-msgid "Account settings"
-msgstr "Kontoinställningar"
+#: ../../include/items.php:4443
+#, php-format
+msgid "Connection: %s"
+msgstr "Kontakt: %s"
-#: ../../include/widgets.php:429
-msgid "Channel settings"
-msgstr "Kanalinställningar"
+#: ../../include/items.php:4446
+msgid "Connection not found."
+msgstr "Kontakten hittades inte."
-#: ../../include/widgets.php:435
-msgid "Additional features"
-msgstr "Tilläggsfunktioner"
+#: ../../include/menu.php:42 ../../include/page_widgets.php:8
+#: ../../include/page_widgets.php:36 ../../include/RedDAV/RedBrowser.php:261
+#: ../../include/ItemObject.php:100 ../../include/apps.php:254
+#: ../../mod/settings.php:627 ../../mod/editpost.php:112
+#: ../../mod/connections.php:381 ../../mod/connections.php:394
+#: ../../mod/connections.php:413 ../../mod/webpages.php:162
+#: ../../mod/blocks.php:132 ../../mod/editblock.php:143
+#: ../../mod/editlayout.php:139 ../../mod/editwebpage.php:174
+#: ../../mod/thing.php:233 ../../mod/layouts.php:167 ../../mod/menu.php:78
+msgid "Edit"
+msgstr "Redigera"
-#: ../../include/widgets.php:441
-msgid "Feature settings"
-msgstr "Funktionsinställningar"
+#: ../../include/message.php:18
+msgid "No recipient provided."
+msgstr "Ingen mottagare angiven."
-#: ../../include/widgets.php:447
-msgid "Display settings"
-msgstr "Utseende"
+#: ../../include/message.php:23
+msgid "[no subject]"
+msgstr "[inget ämne]"
-#: ../../include/widgets.php:453
-msgid "Connected apps"
-msgstr "Anslutna appar"
+#: ../../include/message.php:45
+msgid "Unable to determine sender."
+msgstr "Kunde inte avgöra vem som är avsändare."
-#: ../../include/widgets.php:459
-msgid "Export channel"
-msgstr "Exportera kanal"
+#: ../../include/message.php:200
+msgid "Stored post could not be verified."
+msgstr "Den sparade posten kunde inte verifieras."
-#: ../../include/widgets.php:471
-msgid "Automatic Permissions (Advanced)"
-msgstr "Automatiska rättigheter (avancerat)"
+#: ../../include/network.php:590
+msgid "view full size"
+msgstr "visa full storlek"
-#: ../../include/widgets.php:481
-msgid "Premium Channel Settings"
-msgstr "Inställningar för premiumkanal"
+#: ../../include/permissions.php:26
+msgid "Can view my normal stream and posts"
+msgstr "Kan se mina normala strömmar och inlägg"
-#: ../../include/widgets.php:490 ../../include/features.php:43
-#: ../../mod/sources.php:88
-msgid "Channel Sources"
-msgstr "Kanalkällor"
+#: ../../include/permissions.php:27
+msgid "Can view my default channel profile"
+msgstr "Kan se min standardkanalprofil"
-#: ../../include/widgets.php:501 ../../include/nav.php:186
-#: ../../mod/admin.php:976 ../../mod/admin.php:1181
-msgid "Settings"
-msgstr "Inställningar"
+#: ../../include/permissions.php:28
+msgid "Can view my photo albums"
+msgstr "Kan se mina fotoalbum"
-#: ../../include/widgets.php:518
-msgid "Check Mail"
-msgstr "Hämta meddelanden"
+#: ../../include/permissions.php:29
+msgid "Can view my connections"
+msgstr "Kan se mina kontakter"
-#: ../../include/widgets.php:523 ../../include/nav.php:177
-msgid "New Message"
-msgstr "Nytt meddelande"
+#: ../../include/permissions.php:30
+msgid "Can view my file storage"
+msgstr "Kan se mitt filutrymme"
-#: ../../include/widgets.php:599
-msgid "Chat Rooms"
-msgstr "Chattrum"
+#: ../../include/permissions.php:31
+msgid "Can view my webpages"
+msgstr "Kan se mina webbsidor"
-#: ../../include/widgets.php:617
-msgid "Bookmarked Chatrooms"
-msgstr "Bokmärkta chattrum"
+#: ../../include/permissions.php:34
+msgid "Can send me their channel stream and posts"
+msgstr "Kan skicka sina kanalströmmar och inlägg till mig"
-#: ../../include/widgets.php:635
-msgid "Suggested Chatrooms"
-msgstr "Föreslagna chattrum"
+#: ../../include/permissions.php:35
+msgid "Can post on my channel page (\"wall\")"
+msgstr "Kan posta inlägg på min kanalsida (\"vägg\")"
-#: ../../include/activities.php:39
-msgid " and "
-msgstr " och "
+#: ../../include/permissions.php:36
+msgid "Can comment on or like my posts"
+msgstr "Kan kommentera eller gilla mina inlägg"
-#: ../../include/activities.php:47
-msgid "public profile"
-msgstr "offentlig profil"
+#: ../../include/permissions.php:37
+msgid "Can send me private mail messages"
+msgstr "Kan skicka privata meddelanden till mig"
-#: ../../include/activities.php:52
-#, php-format
-msgid "%1$s changed %2$s to &ldquo;%3$s&rdquo;"
-msgstr "%1$s ändrade %2$s till &quot;%3$s&quot;"
+#: ../../include/permissions.php:38
+msgid "Can post photos to my photo albums"
+msgstr "Kan lägga till foton i mitt fotoalbum"
-#: ../../include/activities.php:53
-#, php-format
-msgid "Visit %1$s's %2$s"
-msgstr "Besök %1$ss %2$s"
+#: ../../include/permissions.php:39
+msgid "Can like/dislike stuff"
+msgstr "Kan gilla/ogilla saker"
-#: ../../include/activities.php:56
-#, php-format
-msgid "%1$s has an updated %2$s, changing %3$s."
-msgstr "%1$s har en uppdaterad %2$s (har ändrat %3$s)."
+#: ../../include/permissions.php:39
+msgid "Profiles and things other than posts/comments"
+msgstr "Profiler och annat än inlägg/kommentarer"
-#: ../../include/nav.php:77 ../../include/nav.php:96 ../../boot.php:1443
-msgid "Logout"
-msgstr "Logga ut"
+#: ../../include/permissions.php:41
+msgid "Can forward to all my channel contacts via post @mentions"
+msgstr "Kan vidarebefordra till alla mina kanalkontakter genom @omnämnanden"
-#: ../../include/nav.php:77 ../../include/nav.php:96
-msgid "End this session"
-msgstr "Avsluta sessionen"
+#: ../../include/permissions.php:41
+msgid "Advanced - useful for creating group forum channels"
+msgstr "Avancerat - användbart för att skapa kanaler för gruppforum"
-#: ../../include/nav.php:80 ../../include/nav.php:130
-msgid "Home"
-msgstr "Hem"
+#: ../../include/permissions.php:42
+msgid "Can chat with me (when available)"
+msgstr "Kan chatta med mig (när tillgänglig)"
-#: ../../include/nav.php:80
-msgid "Your posts and conversations"
-msgstr "Dina inlägg och konversationer"
+#: ../../include/permissions.php:43
+msgid "Can write to my file storage"
+msgstr "Har skrivrättigheter i mitt filutrymme"
-#: ../../include/nav.php:81 ../../include/conversation.php:937
-#: ../../mod/connedit.php:318 ../../mod/connedit.php:432
-msgid "View Profile"
-msgstr "Visa profil"
+#: ../../include/permissions.php:44
+msgid "Can edit my webpages"
+msgstr "Kan redigera mina webbsidor"
-#: ../../include/nav.php:81
-msgid "Your profile page"
-msgstr "Din profilsida"
+#: ../../include/permissions.php:46
+msgid "Can source my public posts in derived channels"
+msgstr "Kan använda mina offentliga inlägg i kanaler nedströms"
-#: ../../include/nav.php:83
-msgid "Edit Profiles"
-msgstr "Redigera profiler"
+#: ../../include/permissions.php:46
+msgid "Somewhat advanced - very useful in open communities"
+msgstr "Ganska avancerat - väldigt användbart i öppna gemenskaper"
-#: ../../include/nav.php:83
-msgid "Manage/Edit profiles"
-msgstr "Hantera/redigera profiler"
+#: ../../include/permissions.php:48
+msgid "Can administer my channel resources"
+msgstr "Kan administrera mina kanalresurser"
-#: ../../include/nav.php:84 ../../include/conversation.php:1504
-#: ../../mod/fbrowser.php:25
-msgid "Photos"
-msgstr "Foton"
+#: ../../include/permissions.php:48
+msgid ""
+"Extremely advanced. Leave this alone unless you know what you are doing"
+msgstr "Extremt avancerat. Låt detta vara om du inte vet vad du gör"
-#: ../../include/nav.php:84
-msgid "Your photos"
-msgstr "Dina foton"
+#: ../../include/permissions.php:814
+msgid "Social Networking"
+msgstr "Socialt nätverkande"
-#: ../../include/nav.php:85 ../../include/conversation.php:1513
-#: ../../mod/fbrowser.php:114
-msgid "Files"
-msgstr "Filer"
+#: ../../include/permissions.php:815 ../../include/permissions.php:817
+#: ../../include/permissions.php:819
+msgid "Mostly Public"
+msgstr "Mestadels offentligt"
-#: ../../include/nav.php:85
-msgid "Your files"
-msgstr "Dina filer"
+#: ../../include/permissions.php:815 ../../include/permissions.php:817
+#: ../../include/permissions.php:819
+msgid "Restricted"
+msgstr "Begränsat"
-#: ../../include/nav.php:86
-msgid "Chat"
-msgstr "Chatt"
+#: ../../include/permissions.php:815 ../../include/permissions.php:817
+msgid "Private"
+msgstr "Privat"
-#: ../../include/nav.php:86
-msgid "Your chatrooms"
-msgstr "Dina chattrum"
+#: ../../include/permissions.php:816
+msgid "Community Forum"
+msgstr "Gemenskapsforum"
-#: ../../include/nav.php:87 ../../include/nav.php:180
-#: ../../include/conversation.php:1535 ../../mod/events.php:357
-msgid "Events"
-msgstr "Händelser"
+#: ../../include/permissions.php:818
+msgid "Feed Republish"
+msgstr "Vidarepublicering av flöde"
-#: ../../include/nav.php:87
-msgid "Your events"
-msgstr "Dina händelser"
+#: ../../include/permissions.php:820
+msgid "Special Purpose"
+msgstr "Särskilt syfte"
-#: ../../include/nav.php:88 ../../include/conversation.php:1543
-msgid "Bookmarks"
-msgstr "Bokmärken"
+#: ../../include/permissions.php:821
+msgid "Celebrity/Soapbox"
+msgstr "Kändis/talarstol"
-#: ../../include/nav.php:88
-msgid "Your bookmarks"
-msgstr "Dina bokmärken"
+#: ../../include/permissions.php:821
+msgid "Group Repository"
+msgstr "Gruppförråd"
-#: ../../include/nav.php:90 ../../include/conversation.php:1554
-#: ../../mod/webpages.php:79
-msgid "Webpages"
-msgstr "Webbsidor"
+#: ../../include/permissions.php:822 ../../include/profile_selectors.php:6
+#: ../../include/profile_selectors.php:23
+#: ../../include/profile_selectors.php:61
+#: ../../include/profile_selectors.php:97
+msgid "Other"
+msgstr "Annat"
-#: ../../include/nav.php:90
-msgid "Your webpages"
-msgstr "Dina webbsidor"
+#: ../../include/permissions.php:823
+msgid "Custom/Expert Mode"
+msgstr "Anpassat/expertläge"
-#: ../../include/nav.php:94 ../../boot.php:1444
-msgid "Login"
-msgstr "Logga in"
-
-#: ../../include/nav.php:94
-msgid "Sign in"
-msgstr "Logga in"
+#: ../../include/notify.php:23
+msgid "created a new post"
+msgstr "skapade ett nytt inlägg"
-#: ../../include/nav.php:111
+#: ../../include/notify.php:24
#, php-format
-msgid "%s - click to logout"
-msgstr "%s - klicka för att logga ut"
-
-#: ../../include/nav.php:116
-msgid "Click to authenticate to your home hub"
-msgstr "Klicka för att autentisera mot din hemmahubb"
-
-#: ../../include/nav.php:130
-msgid "Home Page"
-msgstr "Hemsida"
-
-#: ../../include/nav.php:134 ../../mod/register.php:206 ../../boot.php:1420
-msgid "Register"
-msgstr "Registrera"
+msgid "commented on %s's post"
+msgstr "kommenterade %ss inlägg"
-#: ../../include/nav.php:134
-msgid "Create an account"
-msgstr "Skapa ett konto"
+#: ../../include/taxonomy.php:210 ../../include/taxonomy.php:229
+msgid "Tags"
+msgstr "Taggar"
-#: ../../include/nav.php:139 ../../mod/help.php:60 ../../mod/help.php:65
-msgid "Help"
-msgstr "Hjälp"
+#: ../../include/taxonomy.php:250 ../../include/contact_widgets.php:92
+#: ../../include/widgets.php:35
+msgid "Categories"
+msgstr "Kategorier"
-#: ../../include/nav.php:139
-msgid "Help and documentation"
-msgstr "Hjälp och dokumentation"
+#: ../../include/taxonomy.php:269
+msgid "Keywords"
+msgstr "Nyckelord"
-#: ../../include/nav.php:142
-msgid "Apps"
-msgstr "Appar"
+#: ../../include/taxonomy.php:294
+msgid "have"
+msgstr "har"
-#: ../../include/nav.php:142
-msgid "Addon applications, utilities, games"
-msgstr "Tilläggsapplikationer, verktyg, spel"
+#: ../../include/taxonomy.php:294
+msgid "has"
+msgstr "har"
-#: ../../include/nav.php:144 ../../include/text.php:803
-#: ../../include/text.php:817 ../../mod/search.php:29
-msgid "Search"
-msgstr "Sök"
+#: ../../include/taxonomy.php:295
+msgid "want"
+msgstr "vill ha"
-#: ../../include/nav.php:144
-msgid "Search site content"
-msgstr "Sök innehåll"
+#: ../../include/taxonomy.php:295
+msgid "wants"
+msgstr "vill ha"
-#: ../../include/nav.php:147 ../../mod/directory.php:215
-msgid "Directory"
-msgstr "Katalog"
+#: ../../include/taxonomy.php:296 ../../include/ItemObject.php:221
+msgid "like"
+msgstr "gilla"
-#: ../../include/nav.php:147
-msgid "Channel Locator"
-msgstr "Kanalfinnare"
+#: ../../include/taxonomy.php:296
+msgid "likes"
+msgstr "gillar"
-#: ../../include/nav.php:158
-msgid "Matrix"
-msgstr "Matris"
+#: ../../include/taxonomy.php:297 ../../include/ItemObject.php:222
+msgid "dislike"
+msgstr "ogilla"
-#: ../../include/nav.php:158
-msgid "Your matrix"
-msgstr "Din matris"
+#: ../../include/taxonomy.php:297
+msgid "dislikes"
+msgstr "ogillar"
-#: ../../include/nav.php:159
-msgid "Mark all matrix notifications seen"
-msgstr "Märk alla matrisnotifieringar som lästa"
+#: ../../include/taxonomy.php:380 ../../include/identity.php:1148
+#: ../../include/ItemObject.php:146 ../../mod/photos.php:1027
+msgctxt "noun"
+msgid "Like"
+msgid_plural "Likes"
+msgstr[0] "gillar detta"
+msgstr[1] "gillar detta"
-#: ../../include/nav.php:161
-msgid "Channel Home"
-msgstr "Kanalhem"
+#: ../../include/page_widgets.php:6
+msgid "New Page"
+msgstr "Ny sida"
-#: ../../include/nav.php:161
-msgid "Channel home"
-msgstr "Kanalhem"
+#: ../../include/page_widgets.php:39 ../../mod/webpages.php:165
+#: ../../mod/blocks.php:135 ../../mod/layouts.php:171
+msgid "View"
+msgstr "Visa"
-#: ../../include/nav.php:162
-msgid "Mark all channel notifications seen"
-msgstr "Märk alla kanalnotifieringar som lästa"
+#: ../../include/page_widgets.php:40 ../../include/conversation.php:1102
+#: ../../include/ItemObject.php:638 ../../mod/photos.php:998
+#: ../../mod/webpages.php:166
+msgid "Preview"
+msgstr "Förhandsgranska"
-#: ../../include/nav.php:165 ../../include/nav.php:188
-#: ../../mod/connections.php:384
-msgid "Connections"
-msgstr "Kontakter"
+#: ../../include/page_widgets.php:41 ../../mod/webpages.php:167
+msgid "Actions"
+msgstr "Åtgärder"
-#: ../../include/nav.php:168
-msgid "Notices"
-msgstr "Meddelanden"
+#: ../../include/page_widgets.php:42 ../../mod/webpages.php:168
+msgid "Page Link"
+msgstr "Länk"
-#: ../../include/nav.php:168
-msgid "Notifications"
-msgstr "Notifieringar"
+#: ../../include/page_widgets.php:43 ../../mod/webpages.php:169
+msgid "Title"
+msgstr "Titel"
-#: ../../include/nav.php:169
-msgid "See all notifications"
-msgstr "Se alla notifieringar"
+#: ../../include/page_widgets.php:44 ../../mod/webpages.php:170
+msgid "Created"
+msgstr "Skapad"
-#: ../../include/nav.php:170
-msgid "Mark all system notifications seen"
-msgstr "Märk alla systemnotifieringar som lästa"
+#: ../../include/page_widgets.php:45 ../../mod/webpages.php:171
+msgid "Edited"
+msgstr "Ändrad"
-#: ../../include/nav.php:172
-msgid "Mail"
-msgstr "Privat meddelande"
+#: ../../include/oembed.php:171
+msgid "Embedded content"
+msgstr "Inbäddat innehåll"
-#: ../../include/nav.php:172
-msgid "Private mail"
-msgstr "Privat meddelande"
+#: ../../include/oembed.php:180
+msgid "Embedding disabled"
+msgstr "Inbäddning inaktiverat"
-#: ../../include/nav.php:173
-msgid "See all private messages"
-msgstr "Se alla privata meddelanden"
+#: ../../include/auth.php:130
+msgid "Logged out."
+msgstr "Utloggad."
-#: ../../include/nav.php:174
-msgid "Mark all private messages seen"
-msgstr "Märk alla privata meddelanden som lästa"
+#: ../../include/auth.php:271
+msgid "Failed authentication"
+msgstr "Inloggning misslyckades"
-#: ../../include/nav.php:175
-msgid "Inbox"
-msgstr "Inkorg"
+#: ../../include/auth.php:285 ../../mod/openid.php:190
+msgid "Login failed."
+msgstr "Inloggning misslyckades."
-#: ../../include/nav.php:176
-msgid "Outbox"
-msgstr "Utkorg"
+#: ../../include/photos.php:105
+#, php-format
+msgid "Image exceeds website size limit of %lu bytes"
+msgstr "Bild överskrider webbplatsens storleksbegränsning på %lu byte"
-#: ../../include/nav.php:180
-msgid "Event Calendar"
-msgstr "Kalender"
+#: ../../include/photos.php:112
+msgid "Image file is empty."
+msgstr "Bildfil är tom."
-#: ../../include/nav.php:181
-msgid "See all events"
-msgstr "Se alla händelser"
+#: ../../include/photos.php:141 ../../mod/profile_photo.php:216
+msgid "Unable to process image"
+msgstr "Kunde inte bearbeta bild"
-#: ../../include/nav.php:182
-msgid "Mark all events seen"
-msgstr "Märk alla händelser som lästa"
+#: ../../include/photos.php:213
+msgid "Photo storage failed."
+msgstr "Fotolagring misslyckades."
-#: ../../include/nav.php:184
-msgid "Channel Select"
-msgstr "Välj kanal"
+#: ../../include/photos.php:341 ../../include/conversation.php:1533
+msgid "Photo Albums"
+msgstr "Fotoalbum"
-#: ../../include/nav.php:184
-msgid "Manage Your Channels"
-msgstr "Hantera dina kanaler"
+#: ../../include/photos.php:345
+msgid "Upload New Photos"
+msgstr "Ladda upp nya foton"
-#: ../../include/nav.php:186
-msgid "Account/Channel Settings"
-msgstr "Konto-/kanalinställningar"
+#: ../../include/activities.php:39
+msgid " and "
+msgstr " och "
-#: ../../include/nav.php:188
-msgid "Manage/Edit Friends and Connections"
-msgstr "Hantera/redigera vänner och kontakter"
+#: ../../include/activities.php:47
+msgid "public profile"
+msgstr "offentlig profil"
-#: ../../include/nav.php:195 ../../mod/admin.php:117
-msgid "Admin"
-msgstr "Administration"
+#: ../../include/activities.php:56
+#, php-format
+msgid "%1$s changed %2$s to &ldquo;%3$s&rdquo;"
+msgstr "%1$s ändrade %2$s till &quot;%3$s&quot;"
-#: ../../include/nav.php:195
-msgid "Site Setup and Configuration"
-msgstr "Serverinställning och -konfiguration"
+#: ../../include/activities.php:57
+#, php-format
+msgid "Visit %1$s's %2$s"
+msgstr "Besök %1$ss %2$s"
-#: ../../include/nav.php:220
-msgid "Nothing new here"
-msgstr "Inget nytt här"
+#: ../../include/activities.php:60
+#, php-format
+msgid "%1$s has an updated %2$s, changing %3$s."
+msgstr "%1$s har en uppdaterad %2$s (har ändrat %3$s)."
-#: ../../include/nav.php:225
-msgid "Please wait..."
-msgstr "Vänta..."
+#: ../../include/bb2diaspora.php:366
+msgid "Attachments:"
+msgstr "Bilagor:"
-#: ../../include/event.php:11 ../../include/bb2diaspora.php:433
+#: ../../include/bb2diaspora.php:445 ../../include/event.php:11
msgid "l F d, Y \\@ g:i A"
msgstr "l j F Y \\k\\l. H.i"
-#: ../../include/event.php:20 ../../include/bb2diaspora.php:439
+#: ../../include/bb2diaspora.php:447
+msgid "Redmatrix event notification:"
+msgstr "Händelsenotifiering från Redmatrix:"
+
+#: ../../include/bb2diaspora.php:451 ../../include/event.php:20
msgid "Starts:"
msgstr "Börjar:"
-#: ../../include/event.php:30 ../../include/bb2diaspora.php:447
+#: ../../include/bb2diaspora.php:459 ../../include/event.php:30
msgid "Finishes:"
msgstr "Slutar:"
-#: ../../include/event.php:40 ../../include/identity.php:726
-#: ../../include/bb2diaspora.php:455 ../../mod/events.php:465
-#: ../../mod/directory.php:161 ../../mod/dirprofile.php:111
+#: ../../include/bb2diaspora.php:467 ../../include/event.php:40
+#: ../../include/identity.php:891 ../../mod/events.php:590
+#: ../../mod/directory.php:199
msgid "Location:"
msgstr "Plats:"
-#: ../../include/api.php:1016
-msgid "Public Timeline"
-msgstr "Offentlig tidslinje"
-
-#: ../../include/Contact.php:123
-msgid "New window"
-msgstr "Nytt fönster"
-
-#: ../../include/Contact.php:124
-msgid "Open the selected location in a different window or browser tab"
-msgstr "Öppna den valda platsen i ett annat fönster eller en annan webbläsarflik"
-
#: ../../include/features.php:23
msgid "General Features"
msgstr "Allmänna funktioner"
@@ -526,1885 +525,2718 @@ msgid "Ability to create multiple profiles"
msgstr "Möjlighet att skapa flera profiler"
#: ../../include/features.php:27
+msgid "Advanced Profiles"
+msgstr "Avancerade profiler"
+
+#: ../../include/features.php:27
+msgid "Additional profile sections and selections"
+msgstr "Fler profilinställningar"
+
+#: ../../include/features.php:28
+msgid "Profile Import/Export"
+msgstr "Profilimport/-export"
+
+#: ../../include/features.php:28
+msgid "Save and load profile details across sites/channels"
+msgstr "Spara och ladda profiluppgifter mellan webbplatser/kanaler"
+
+#: ../../include/features.php:29
msgid "Web Pages"
msgstr "Webbsidor"
-#: ../../include/features.php:27
+#: ../../include/features.php:29
msgid "Provide managed web pages on your channel"
msgstr "Tillhandahåll ordnade webbsidor i din kanal"
-#: ../../include/features.php:28
+#: ../../include/features.php:30
msgid "Private Notes"
msgstr "Privata anteckningar"
-#: ../../include/features.php:28
+#: ../../include/features.php:30
msgid "Enables a tool to store notes and reminders"
msgstr "Aktivera ett verktyg för att spara anteckningar och påminnelser"
-#: ../../include/features.php:33
+#: ../../include/features.php:34
+msgid "Navigation Channel Select"
+msgstr "Kanalväljare i navigation"
+
+#: ../../include/features.php:34
+msgid "Change channels directly from within the navigation dropdown menu"
+msgstr "Välj kanal direkt från navigationslistens rullgardinsmeny"
+
+#: ../../include/features.php:38
msgid "Extended Identity Sharing"
msgstr "Utökad identitetsdelning"
-#: ../../include/features.php:33
+#: ../../include/features.php:38
msgid ""
"Share your identity with all websites on the internet. When disabled, "
"identity is only shared with sites in the matrix."
msgstr "Dela din identitet med alla webbplatser på Internet. Om inaktiverat är identiteten bara delad med platser i matrisen."
-#: ../../include/features.php:34
+#: ../../include/features.php:39
msgid "Expert Mode"
msgstr "Expertläge"
-#: ../../include/features.php:34
+#: ../../include/features.php:39
msgid "Enable Expert Mode to provide advanced configuration options"
msgstr "Aktivera expertläge för att tillåta avancerade inställningar"
-#: ../../include/features.php:35
+#: ../../include/features.php:40
msgid "Premium Channel"
msgstr "Premiumkanal"
-#: ../../include/features.php:35
+#: ../../include/features.php:40
msgid ""
"Allows you to set restrictions and terms on those that connect with your "
"channel"
msgstr "Låter dig ange begränsningar och villkor för dem som vill ansluta till din kanal"
-#: ../../include/features.php:40
+#: ../../include/features.php:45
msgid "Post Composition Features"
msgstr "Skrivfunktioner"
-#: ../../include/features.php:41
-msgid "Richtext Editor"
-msgstr "Richtext-editor"
+#: ../../include/features.php:47
+msgid "Use Markdown"
+msgstr "Använd Markdown"
-#: ../../include/features.php:41
-msgid "Enable richtext editor"
-msgstr "Aktivera richtext-editor"
+#: ../../include/features.php:47
+msgid "Allow use of \"Markdown\" to format posts"
+msgstr "Tillåt att \"Markdown\" används för att formatera inlägg"
-#: ../../include/features.php:42
-msgid "Post Preview"
-msgstr "Förhandsgranskning"
-
-#: ../../include/features.php:42
-msgid "Allow previewing posts and comments before publishing them"
-msgstr "Tillåt förhandsgranskning av inlägg och kommentarer innan de publiceras"
+#: ../../include/features.php:49 ../../include/widgets.php:527
+#: ../../mod/sources.php:88
+msgid "Channel Sources"
+msgstr "Kanalkällor"
-#: ../../include/features.php:43
+#: ../../include/features.php:49
msgid "Automatically import channel content from other channels or feeds"
-msgstr "Importera kanalinnehåll från andra kanaler eller strömmar automatiskt"
+msgstr "Importera kanalinnehåll från andra kanaler eller flöden automatiskt"
-#: ../../include/features.php:44
+#: ../../include/features.php:50
msgid "Even More Encryption"
msgstr "Ytterligare kryptering"
-#: ../../include/features.php:44
+#: ../../include/features.php:50
msgid ""
"Allow optional encryption of content end-to-end with a shared secret key"
msgstr "Tillåt änd-till-änd-kryptering av innehåll med en delad hemlig nyckel"
-#: ../../include/features.php:49
+#: ../../include/features.php:51
+msgid "Flag Adult Photos"
+msgstr "Flagga vuxenfoton"
+
+#: ../../include/features.php:51
+msgid "Provide photo edit option to hide adult photos from default album view"
+msgstr "Gör det möjligt att inte visa foton som är olämpliga för barn i albums standardvy"
+
+#: ../../include/features.php:56
msgid "Network and Stream Filtering"
msgstr "Nätverk och strömfiltrering"
-#: ../../include/features.php:50
+#: ../../include/features.php:57
msgid "Search by Date"
msgstr "Sök på datum"
-#: ../../include/features.php:50
+#: ../../include/features.php:57
msgid "Ability to select posts by date ranges"
msgstr "Tillåter urval av inlägg baserat på datum"
-#: ../../include/features.php:51
+#: ../../include/features.php:58
msgid "Collections Filter"
-msgstr "Sammanhangsfilter"
+msgstr "Kretsfilter"
-#: ../../include/features.php:51
+#: ../../include/features.php:58
msgid "Enable widget to display Network posts only from selected collections"
-msgstr "Aktivera en väljare för att visa nätverksinlägg från enbart valda sammanhang"
+msgstr "Aktivera en väljare för att visa nätverksinlägg från enbart valda kretsar"
+
+#: ../../include/features.php:59 ../../include/widgets.php:272
+msgid "Saved Searches"
+msgstr "Sparade sökningar"
-#: ../../include/features.php:52
+#: ../../include/features.php:59
msgid "Save search terms for re-use"
msgstr "Spara sökuttryck för återanvändning"
-#: ../../include/features.php:53
+#: ../../include/features.php:60
msgid "Network Personal Tab"
msgstr "Personlig nätverksflik"
-#: ../../include/features.php:53
+#: ../../include/features.php:60
msgid "Enable tab to display only Network posts that you've interacted on"
msgstr "Aktivera en flik som visar endast de nätverksinlägg som du har deltagit i"
-#: ../../include/features.php:54
+#: ../../include/features.php:61
msgid "Network New Tab"
msgstr "Flik för nytt på nätverket"
-#: ../../include/features.php:54
+#: ../../include/features.php:61
msgid "Enable tab to display all new Network activity"
msgstr "Aktivera en flik som visar all ny nätverksaktivitet"
-#: ../../include/features.php:55
+#: ../../include/features.php:62
msgid "Affinity Tool"
msgstr "Samhörighetsverktyg"
-#: ../../include/features.php:55
+#: ../../include/features.php:62
msgid "Filter stream activity by depth of relationships"
msgstr "Filtrera strömaktivitet efter hur nära relationen är"
-#: ../../include/features.php:56
+#: ../../include/features.php:63
msgid "Suggest Channels"
msgstr "Föreslå kanaler"
-#: ../../include/features.php:56
+#: ../../include/features.php:63
msgid "Show channel suggestions"
msgstr "Visa förslag på kanaler"
-#: ../../include/features.php:61
+#: ../../include/features.php:68
msgid "Post/Comment Tools"
msgstr "Inläggs-/kommentarsverktyg"
-#: ../../include/features.php:63
-msgid "Edit Sent Posts"
-msgstr "Redigera sända inlägg"
-
-#: ../../include/features.php:63
-msgid "Edit and correct posts and comments after sending"
-msgstr "Redigera och korrigera inlägg och kommentarer efter att de skickats"
-
-#: ../../include/features.php:64
+#: ../../include/features.php:71
msgid "Tagging"
msgstr "Taggning"
-#: ../../include/features.php:64
+#: ../../include/features.php:71
msgid "Ability to tag existing posts"
msgstr "Möjlighet att tagga befintliga inlägg"
-#: ../../include/features.php:65
+#: ../../include/features.php:72
msgid "Post Categories"
msgstr "Inläggskategorier"
-#: ../../include/features.php:65
+#: ../../include/features.php:72
msgid "Add categories to your posts"
msgstr "Lägg till kategorier till dina inlägg"
-#: ../../include/features.php:66
+#: ../../include/features.php:73 ../../include/contact_widgets.php:57
+#: ../../include/widgets.php:302
+msgid "Saved Folders"
+msgstr "Sparade mappar"
+
+#: ../../include/features.php:73
msgid "Ability to file posts under folders"
msgstr "Möjlighet att lägga inlägg i mappar"
-#: ../../include/features.php:67
+#: ../../include/features.php:74
msgid "Dislike Posts"
msgstr "Ogilla inlägg"
-#: ../../include/features.php:67
+#: ../../include/features.php:74
msgid "Ability to dislike posts/comments"
msgstr "Möjlighet att ogilla inlägg/kommentarer"
-#: ../../include/features.php:68
+#: ../../include/features.php:75
msgid "Star Posts"
msgstr "Märk inlägg"
-#: ../../include/features.php:68
+#: ../../include/features.php:75
msgid "Ability to mark special posts with a star indicator"
msgstr "Möjlighet att märka speciella inlägg med en stjärna"
-#: ../../include/features.php:69
+#: ../../include/features.php:76
msgid "Tag Cloud"
msgstr "Taggmoln"
-#: ../../include/features.php:69
+#: ../../include/features.php:76
msgid "Provide a personal tag cloud on your channel page"
msgstr "Tillhandahåll ett personligt taggmoln på din kanalsida"
-#: ../../include/contact_selectors.php:30
-msgid "Unknown | Not categorised"
-msgstr "Okänd | Inte kategoriserad"
+#: ../../include/RedDAV/RedBrowser.php:106
+#: ../../include/RedDAV/RedBrowser.php:260
+msgid "parent"
+msgstr "en nivå upp"
+
+#: ../../include/RedDAV/RedBrowser.php:130
+msgid "Collection"
+msgstr "Samling"
+
+#: ../../include/RedDAV/RedBrowser.php:133
+msgid "Principal"
+msgstr "Bas"
+
+#: ../../include/RedDAV/RedBrowser.php:136
+msgid "Addressbook"
+msgstr "Adressbok"
+
+#: ../../include/RedDAV/RedBrowser.php:139
+msgid "Calendar"
+msgstr "Kalender"
+
+#: ../../include/RedDAV/RedBrowser.php:142
+msgid "Schedule Inbox"
+msgstr "Schemainkorg"
-#: ../../include/contact_selectors.php:31
-msgid "Block immediately"
-msgstr "Blockera genast"
+#: ../../include/RedDAV/RedBrowser.php:145
+msgid "Schedule Outbox"
+msgstr "Schemautkorg"
-#: ../../include/contact_selectors.php:32
-msgid "Shady, spammer, self-marketer"
-msgstr "Skum, spammare, självförhärligande"
+#: ../../include/RedDAV/RedBrowser.php:163 ../../include/conversation.php:992
+#: ../../include/apps.php:336 ../../include/apps.php:387
+#: ../../mod/connedit.php:513 ../../mod/photos.php:713
+#: ../../mod/photos.php:1132
+msgid "Unknown"
+msgstr "Okända"
-#: ../../include/contact_selectors.php:33
-msgid "Known to me, but no opinion"
-msgstr "Känner till, men ingen åsikt"
+#: ../../include/RedDAV/RedBrowser.php:223
+#, php-format
+msgid "%1$s used"
+msgstr "%1$s använt"
-#: ../../include/contact_selectors.php:34
-msgid "OK, probably harmless"
-msgstr "OK, antagligen harmlös"
+#: ../../include/RedDAV/RedBrowser.php:228
+#, php-format
+msgid "%1$s used of %2$s (%3$s&#37;)"
+msgstr "%1$s använt av %2$s (%3$s&#37;)"
+
+#: ../../include/RedDAV/RedBrowser.php:247 ../../include/conversation.php:1539
+#: ../../include/apps.php:135 ../../include/nav.php:106
+#: ../../mod/fbrowser.php:114
+msgid "Files"
+msgstr "Filer"
+
+#: ../../include/RedDAV/RedBrowser.php:249
+msgid "Total"
+msgstr "Totalt"
+
+#: ../../include/RedDAV/RedBrowser.php:256 ../../mod/settings.php:567
+#: ../../mod/settings.php:593 ../../mod/admin.php:866
+msgid "Name"
+msgstr "Namn"
-#: ../../include/contact_selectors.php:35
-msgid "Reputable, has my trust"
-msgstr "Ansedd, har mitt förtroende"
+#: ../../include/RedDAV/RedBrowser.php:257
+msgid "Type"
+msgstr "Typ"
-#: ../../include/contact_selectors.php:54
+#: ../../include/RedDAV/RedBrowser.php:258
+msgid "Size"
+msgstr "Storlek"
+
+#: ../../include/RedDAV/RedBrowser.php:259
+msgid "Last Modified"
+msgstr "Senast ändrad"
+
+#: ../../include/RedDAV/RedBrowser.php:262 ../../include/conversation.php:639
+#: ../../include/ItemObject.php:120 ../../include/apps.php:255
+#: ../../mod/settings.php:628 ../../mod/group.php:176
+#: ../../mod/connedit.php:476 ../../mod/photos.php:1070
+#: ../../mod/thing.php:234 ../../mod/admin.php:730 ../../mod/admin.php:861
+msgid "Delete"
+msgstr "Ta bort"
+
+#: ../../include/RedDAV/RedBrowser.php:310
+msgid "Create new folder"
+msgstr "Skapa ny mapp"
+
+#: ../../include/RedDAV/RedBrowser.php:311 ../../mod/mitem.php:169
+#: ../../mod/menu.php:100 ../../mod/new_channel.php:124
+msgid "Create"
+msgstr "Skapa"
+
+#: ../../include/RedDAV/RedBrowser.php:312
+msgid "Upload file"
+msgstr "Ladda upp fil"
+
+#: ../../include/RedDAV/RedBrowser.php:313 ../../mod/photos.php:738
+#: ../../mod/photos.php:1246 ../../mod/profile_photo.php:361
+msgid "Upload"
+msgstr "Ladda upp"
+
+#: ../../include/bookmarks.php:35
+#, php-format
+msgid "%1$s's bookmarks"
+msgstr "%1$ss bokmärken"
+
+#: ../../include/dir_fns.php:68
+msgid "Directory Options"
+msgstr "Katalogalternativ"
+
+#: ../../include/dir_fns.php:69
+msgid "Alphabetic"
+msgstr "Alfabetisk"
+
+#: ../../include/dir_fns.php:70
+msgid "Reverse Alphabetic"
+msgstr "Omvänd alfabetisk"
+
+#: ../../include/dir_fns.php:71
+msgid "Newest to Oldest"
+msgstr "Nyast till äldst"
+
+#: ../../include/dir_fns.php:72
+msgid "Oldest to Newest"
+msgstr "Äldst till nyast"
+
+#: ../../include/dir_fns.php:73
+msgid "Public Forums Only"
+msgstr "Endast offentliga forum"
+
+#: ../../include/dir_fns.php:75
+msgid "Sort"
+msgstr "Ordning"
+
+#: ../../include/dir_fns.php:91
+msgid "Enable Safe Search"
+msgstr "Aktivera säker sökning"
+
+#: ../../include/dir_fns.php:93
+msgid "Disable Safe Search"
+msgstr "Avaktivera säker sökning"
+
+#: ../../include/dir_fns.php:95
+msgid "Safe Mode"
+msgstr "Säkert läge"
+
+#: ../../include/comanche.php:35 ../../mod/admin.php:353
+#: ../../view/theme/apw/php/config.php:185
+msgid "Default"
+msgstr "Standard"
+
+#: ../../include/contact_selectors.php:56
msgid "Frequently"
msgstr "Ofta"
-#: ../../include/contact_selectors.php:55
+#: ../../include/contact_selectors.php:57
msgid "Hourly"
msgstr "Varje timme"
-#: ../../include/contact_selectors.php:56
+#: ../../include/contact_selectors.php:58
msgid "Twice daily"
msgstr "Två gånger dagligen"
-#: ../../include/contact_selectors.php:57
+#: ../../include/contact_selectors.php:59
msgid "Daily"
msgstr "Dagligen"
-#: ../../include/contact_selectors.php:58
+#: ../../include/contact_selectors.php:60
msgid "Weekly"
msgstr "Varje vecka"
-#: ../../include/contact_selectors.php:59
+#: ../../include/contact_selectors.php:61
msgid "Monthly"
msgstr "Varje månad"
-#: ../../include/contact_selectors.php:74
+#: ../../include/contact_selectors.php:76
msgid "Friendica"
msgstr "Friendica"
-#: ../../include/contact_selectors.php:75
+#: ../../include/contact_selectors.php:77
msgid "OStatus"
msgstr "OStatus"
-#: ../../include/contact_selectors.php:76
+#: ../../include/contact_selectors.php:78
msgid "RSS/Atom"
msgstr "RSS/Atom"
-#: ../../include/contact_selectors.php:77 ../../mod/admin.php:753
-#: ../../mod/admin.php:762 ../../boot.php:1446
+#: ../../include/contact_selectors.php:79 ../../mod/admin.php:726
+#: ../../mod/admin.php:735 ../../boot.php:1542
msgid "Email"
msgstr "E-post"
-#: ../../include/contact_selectors.php:78
+#: ../../include/contact_selectors.php:80
msgid "Diaspora"
msgstr "Diaspora"
-#: ../../include/contact_selectors.php:79
+#: ../../include/contact_selectors.php:81
msgid "Facebook"
msgstr "Facebook"
-#: ../../include/contact_selectors.php:80
+#: ../../include/contact_selectors.php:82
msgid "Zot!"
msgstr "Zot!"
-#: ../../include/contact_selectors.php:81
+#: ../../include/contact_selectors.php:83
msgid "LinkedIn"
msgstr "LinkedIn"
-#: ../../include/contact_selectors.php:82
+#: ../../include/contact_selectors.php:84
msgid "XMPP/IM"
msgstr "XMPP/IM"
-#: ../../include/contact_selectors.php:83
+#: ../../include/contact_selectors.php:85
msgid "MySpace"
msgstr "MySpace"
-#: ../../include/conversation.php:117 ../../include/text.php:1697
-#: ../../mod/like.php:111 ../../mod/subthread.php:89 ../../mod/tagger.php:45
+#: ../../include/acl_selectors.php:240
+msgid "Visible to your default audience"
+msgstr "Kan ses av förinställda mottagare"
+
+#: ../../include/acl_selectors.php:241
+msgid "Show"
+msgstr "Visa"
+
+#: ../../include/acl_selectors.php:242
+msgid "Don't show"
+msgstr "Visa inte"
+
+#: ../../include/acl_selectors.php:248 ../../mod/events.php:596
+#: ../../mod/chat.php:209 ../../mod/photos.php:588 ../../mod/photos.php:950
+#: ../../mod/filestorage.php:137
+msgid "Permissions"
+msgstr "Behörighet"
+
+#: ../../include/acl_selectors.php:249 ../../include/ItemObject.php:320
+#: ../../mod/photos.php:1149
+msgid "Close"
+msgstr "Stäng"
+
+#: ../../include/text.php:320
+msgid "prev"
+msgstr "föregående"
+
+#: ../../include/text.php:322
+msgid "first"
+msgstr "första"
+
+#: ../../include/text.php:351
+msgid "last"
+msgstr "sista"
+
+#: ../../include/text.php:354
+msgid "next"
+msgstr "nästa"
+
+#: ../../include/text.php:366
+msgid "older"
+msgstr "äldre"
+
+#: ../../include/text.php:368
+msgid "newer"
+msgstr "nyare"
+
+#: ../../include/text.php:756
+msgid "No connections"
+msgstr "Inga kontakter"
+
+#: ../../include/text.php:772
+#, php-format
+msgid "%d Connection"
+msgid_plural "%d Connections"
+msgstr[0] "%d kontakt"
+msgstr[1] "%d kontakter"
+
+#: ../../include/text.php:785
+msgid "View Connections"
+msgstr "Visa kontakter"
+
+#: ../../include/text.php:842 ../../include/text.php:854
+#: ../../include/apps.php:147 ../../include/nav.php:173
+#: ../../mod/search.php:30
+msgid "Search"
+msgstr "Sök"
+
+#: ../../include/text.php:843 ../../include/text.php:855
+#: ../../include/widgets.php:192 ../../mod/rbmark.php:28
+#: ../../mod/rbmark.php:98 ../../mod/filer.php:50 ../../mod/admin.php:1339
+#: ../../mod/admin.php:1360
+msgid "Save"
+msgstr "Spara"
+
+#: ../../include/text.php:920
+msgid "poke"
+msgstr "puffa"
+
+#: ../../include/text.php:920 ../../include/conversation.php:243
+msgid "poked"
+msgstr "puffade"
+
+#: ../../include/text.php:921
+msgid "ping"
+msgstr "pinga"
+
+#: ../../include/text.php:921
+msgid "pinged"
+msgstr "pingade"
+
+#: ../../include/text.php:922
+msgid "prod"
+msgstr "stöt till"
+
+#: ../../include/text.php:922
+msgid "prodded"
+msgstr "stötte till"
+
+#: ../../include/text.php:923
+msgid "slap"
+msgstr "daska till"
+
+#: ../../include/text.php:923
+msgid "slapped"
+msgstr "daskade till"
+
+#: ../../include/text.php:924
+msgid "finger"
+msgstr "fingra på"
+
+#: ../../include/text.php:924
+msgid "fingered"
+msgstr "fingrade på"
+
+#: ../../include/text.php:925
+msgid "rebuff"
+msgstr "stöt tillbaka"
+
+#: ../../include/text.php:925
+msgid "rebuffed"
+msgstr "stötte tillbaks"
+
+#: ../../include/text.php:935
+msgid "happy"
+msgstr "glad"
+
+#: ../../include/text.php:936
+msgid "sad"
+msgstr "ledsen"
+
+#: ../../include/text.php:937
+msgid "mellow"
+msgstr "lugn"
+
+#: ../../include/text.php:938
+msgid "tired"
+msgstr "trött"
+
+#: ../../include/text.php:939
+msgid "perky"
+msgstr "uppåt"
+
+#: ../../include/text.php:940
+msgid "angry"
+msgstr "arg"
+
+#: ../../include/text.php:941
+msgid "stupified"
+msgstr "virrig"
+
+#: ../../include/text.php:942
+msgid "puzzled"
+msgstr "förbryllad"
+
+#: ../../include/text.php:943
+msgid "interested"
+msgstr "intresserad"
+
+#: ../../include/text.php:944
+msgid "bitter"
+msgstr "bitter"
+
+#: ../../include/text.php:945
+msgid "cheerful"
+msgstr "munter"
+
+#: ../../include/text.php:946
+msgid "alive"
+msgstr "pigg"
+
+#: ../../include/text.php:947
+msgid "annoyed"
+msgstr "irriterad"
+
+#: ../../include/text.php:948
+msgid "anxious"
+msgstr "bekymrad"
+
+#: ../../include/text.php:949
+msgid "cranky"
+msgstr "grinig"
+
+#: ../../include/text.php:950
+msgid "disturbed"
+msgstr "besvärad"
+
+#: ../../include/text.php:951
+msgid "frustrated"
+msgstr "frustrerad"
+
+#: ../../include/text.php:952
+msgid "depressed"
+msgstr "deprimerad"
+
+#: ../../include/text.php:953
+msgid "motivated"
+msgstr "motiverad"
+
+#: ../../include/text.php:954
+msgid "relaxed"
+msgstr "avslappnad"
+
+#: ../../include/text.php:955
+msgid "surprised"
+msgstr "förvånad"
+
+#: ../../include/text.php:1121
+msgid "Monday"
+msgstr "måndag"
+
+#: ../../include/text.php:1121
+msgid "Tuesday"
+msgstr "tisdag"
+
+#: ../../include/text.php:1121
+msgid "Wednesday"
+msgstr "onsdag"
+
+#: ../../include/text.php:1121
+msgid "Thursday"
+msgstr "torsdag"
+
+#: ../../include/text.php:1121
+msgid "Friday"
+msgstr "fredag"
+
+#: ../../include/text.php:1121
+msgid "Saturday"
+msgstr "lördag"
+
+#: ../../include/text.php:1121
+msgid "Sunday"
+msgstr "söndag"
+
+#: ../../include/text.php:1125
+msgid "January"
+msgstr "januari"
+
+#: ../../include/text.php:1125
+msgid "February"
+msgstr "februari"
+
+#: ../../include/text.php:1125
+msgid "March"
+msgstr "mars"
+
+#: ../../include/text.php:1125
+msgid "April"
+msgstr "april"
+
+#: ../../include/text.php:1125
+msgid "May"
+msgstr "maj"
+
+#: ../../include/text.php:1125
+msgid "June"
+msgstr "juni"
+
+#: ../../include/text.php:1125
+msgid "July"
+msgstr "juli"
+
+#: ../../include/text.php:1125
+msgid "August"
+msgstr "augusti"
+
+#: ../../include/text.php:1125
+msgid "September"
+msgstr "september"
+
+#: ../../include/text.php:1125
+msgid "October"
+msgstr "oktober"
+
+#: ../../include/text.php:1125
+msgid "November"
+msgstr "november"
+
+#: ../../include/text.php:1125
+msgid "December"
+msgstr "december"
+
+#: ../../include/text.php:1203
+msgid "unknown.???"
+msgstr "okänt.???"
+
+#: ../../include/text.php:1204
+msgid "bytes"
+msgstr "byte"
+
+#: ../../include/text.php:1240
+msgid "remove category"
+msgstr "ta bort kategori"
+
+#: ../../include/text.php:1309
+msgid "remove from file"
+msgstr "ta bort från fil"
+
+#: ../../include/text.php:1385 ../../include/text.php:1396
+msgid "Click to open/close"
+msgstr "Klicka för att öppna/stänga"
+
+#: ../../include/text.php:1544 ../../mod/events.php:414
+msgid "Link to Source"
+msgstr "Länk till källa"
+
+#: ../../include/text.php:1563
+msgid "Select a page layout: "
+msgstr "Välj en sidlayout: "
+
+#: ../../include/text.php:1566 ../../include/text.php:1626
+msgid "default"
+msgstr "standard"
+
+#: ../../include/text.php:1599
+msgid "Page content type: "
+msgstr "Typ av sidinnehåll: "
+
+#: ../../include/text.php:1638
+msgid "Select an alternate language"
+msgstr "Välj ett alternativt språk"
+
+#: ../../include/text.php:1757 ../../include/conversation.php:120
+#: ../../include/diaspora.php:1928 ../../mod/subthread.php:72
+#: ../../mod/subthread.php:174 ../../mod/like.php:290 ../../mod/tagger.php:45
msgid "photo"
msgstr "foto"
-#: ../../include/conversation.php:120 ../../include/text.php:1700
+#: ../../include/text.php:1760 ../../include/conversation.php:123
#: ../../mod/tagger.php:49
msgid "event"
msgstr "händelse"
-#: ../../include/conversation.php:123
-msgid "channel"
-msgstr "kanal"
-
-#: ../../include/conversation.php:145 ../../include/text.php:1703
-#: ../../mod/like.php:111 ../../mod/subthread.php:89 ../../mod/tagger.php:53
+#: ../../include/text.php:1763 ../../include/conversation.php:148
+#: ../../include/diaspora.php:1928 ../../mod/subthread.php:72
+#: ../../mod/subthread.php:174 ../../mod/like.php:290 ../../mod/tagger.php:53
msgid "status"
msgstr "status"
-#: ../../include/conversation.php:147 ../../include/text.php:1705
+#: ../../include/text.php:1765 ../../include/conversation.php:150
#: ../../mod/tagger.php:55
msgid "comment"
msgstr "kommentar"
-#: ../../include/conversation.php:161 ../../mod/like.php:142
+#: ../../include/text.php:1770
+msgid "activity"
+msgstr "aktivitet"
+
+#: ../../include/text.php:2057
+msgid "Design"
+msgstr "Design"
+
+#: ../../include/text.php:2060
+msgid "Blocks"
+msgstr "Block"
+
+#: ../../include/text.php:2061
+msgid "Menus"
+msgstr "Menyer"
+
+#: ../../include/text.php:2062
+msgid "Layouts"
+msgstr "Layouter"
+
+#: ../../include/text.php:2063
+msgid "Pages"
+msgstr "Sidor"
+
+#: ../../include/contact_widgets.php:14
+#, php-format
+msgid "%d invitation available"
+msgid_plural "%d invitations available"
+msgstr[0] "%d inbjudan tillgänglig"
+msgstr[1] "%d inbjudningar tillgängliga"
+
+#: ../../include/contact_widgets.php:19 ../../mod/admin.php:416
+msgid "Advanced"
+msgstr "Avancerat"
+
+#: ../../include/contact_widgets.php:22
+msgid "Find Channels"
+msgstr "Hitta kanaler"
+
+#: ../../include/contact_widgets.php:23
+msgid "Enter name or interest"
+msgstr "Ange namn eller intresse"
+
+#: ../../include/contact_widgets.php:24
+msgid "Connect/Follow"
+msgstr "Ta kontakt/följ"
+
+#: ../../include/contact_widgets.php:25
+msgid "Examples: Robert Morgenstein, Fishing"
+msgstr "Exempel: Robert Morgenstein, Fiske"
+
+#: ../../include/contact_widgets.php:26 ../../mod/connections.php:412
+#: ../../mod/directory.php:317 ../../mod/directory.php:322
+msgid "Find"
+msgstr "Sök"
+
+#: ../../include/contact_widgets.php:27 ../../mod/suggest.php:59
+#: ../../mod/directory.php:321
+msgid "Channel Suggestions"
+msgstr "Kanalförslag"
+
+#: ../../include/contact_widgets.php:29
+msgid "Random Profile"
+msgstr "Slumpvald profil"
+
+#: ../../include/contact_widgets.php:30
+msgid "Invite Friends"
+msgstr "Bjud in vänner"
+
+#: ../../include/contact_widgets.php:32
+msgid "Advanced example: name=fred and country=iceland"
+msgstr "Avancerat exempel: name=fred and country=iceland"
+
+#: ../../include/contact_widgets.php:60 ../../include/contact_widgets.php:95
+#: ../../include/widgets.php:305
+msgid "Everything"
+msgstr "Allt"
+
+#: ../../include/contact_widgets.php:125
+#, php-format
+msgid "%d connection in common"
+msgid_plural "%d connections in common"
+msgstr[0] "%d gemensam kontakt"
+msgstr[1] "%d gemensamma kontakter"
+
+#: ../../include/contact_widgets.php:130
+msgid "show more"
+msgstr "visa fler"
+
+#: ../../include/enotify.php:41
+msgid "Red Matrix Notification"
+msgstr "Red Matrix-meddelande"
+
+#: ../../include/enotify.php:42
+msgid "redmatrix"
+msgstr "redmatrix"
+
+#: ../../include/enotify.php:44
+msgid "Thank You,"
+msgstr "Tack,"
+
+#: ../../include/enotify.php:46
+#, php-format
+msgid "%s Administrator"
+msgstr "Administratören för %s"
+
+#: ../../include/enotify.php:81
+#, php-format
+msgid "%s <!item_type!>"
+msgstr "%s <!item_type!>"
+
+#: ../../include/enotify.php:85
+#, php-format
+msgid "[Red:Notify] New mail received at %s"
+msgstr "[Red:Meddelande] Nytt meddelande på %s"
+
+#: ../../include/enotify.php:87
+#, php-format
+msgid "%1$s, %2$s sent you a new private message at %3$s."
+msgstr "%1$s, %2$s skickade ett nytt privat meddelande till dig på %3$s."
+
+#: ../../include/enotify.php:88
+#, php-format
+msgid "%1$s sent you %2$s."
+msgstr "%1$s skickade %2$s till dig."
+
+#: ../../include/enotify.php:88
+msgid "a private message"
+msgstr "ett privat meddelande"
+
+#: ../../include/enotify.php:89
+#, php-format
+msgid "Please visit %s to view and/or reply to your private messages."
+msgstr "Besök %s för att visa och/eller svara på dina privata meddelanden."
+
+#: ../../include/enotify.php:144
+#, php-format
+msgid "%1$s, %2$s commented on [zrl=%3$s]a %4$s[/zrl]"
+msgstr "%1$s, %2$s kommenterade [zrl=%3$s]ett %4$s[/zrl]"
+
+#: ../../include/enotify.php:152
+#, php-format
+msgid "%1$s, %2$s commented on [zrl=%3$s]%4$s's %5$s[/zrl]"
+msgstr "%1$s, %2$s kommenterade [zrl=%3$s]%4$ss %5$s[/zrl]"
+
+#: ../../include/enotify.php:161
+#, php-format
+msgid "%1$s, %2$s commented on [zrl=%3$s]your %4$s[/zrl]"
+msgstr "%1$s, %2$s kommenterade [zrl=%3$s]ditt %4$s[/zrl]"
+
+#: ../../include/enotify.php:172
+#, php-format
+msgid "[Red:Notify] Comment to conversation #%1$d by %2$s"
+msgstr "[Red:Meddelande] Kommentar till konversation #%1$d av %2$s"
+
+#: ../../include/enotify.php:173
+#, php-format
+msgid "%1$s, %2$s commented on an item/conversation you have been following."
+msgstr "%1$s, %2$s kommenterade en sak/konversation du har följt."
+
+#: ../../include/enotify.php:176 ../../include/enotify.php:191
+#: ../../include/enotify.php:217 ../../include/enotify.php:236
+#: ../../include/enotify.php:250
+#, php-format
+msgid "Please visit %s to view and/or reply to the conversation."
+msgstr "Besök %s för att visa och/eller svara på konversationen."
+
+#: ../../include/enotify.php:182
+#, php-format
+msgid "[Red:Notify] %s posted to your profile wall"
+msgstr "[Red:Meddelande] %s postade till din profilvägg"
+
+#: ../../include/enotify.php:184
+#, php-format
+msgid "%1$s, %2$s posted to your profile wall at %3$s"
+msgstr "%1$s, %2$s postade till din profilvägg på %3$s"
+
+#: ../../include/enotify.php:186
+#, php-format
+msgid "%1$s, %2$s posted to [zrl=%3$s]your wall[/zrl]"
+msgstr "%1$s, %2$s postade till [zrl=%3$s]din vägg[/zrl]"
+
+#: ../../include/enotify.php:210
+#, php-format
+msgid "[Red:Notify] %s tagged you"
+msgstr "[Red:Meddelande] %s taggade dig"
+
+#: ../../include/enotify.php:211
+#, php-format
+msgid "%1$s, %2$s tagged you at %3$s"
+msgstr "%1$s, %2$s taggade dig på %3$s"
+
+#: ../../include/enotify.php:212
+#, php-format
+msgid "%1$s, %2$s [zrl=%3$s]tagged you[/zrl]."
+msgstr "%1$s, %2$s [zrl=%3$s]taggade dig[/zrl]."
+
+#: ../../include/enotify.php:225
+#, php-format
+msgid "[Red:Notify] %1$s poked you"
+msgstr "[Red:Meddelande] %1$s puffade dig"
+
+#: ../../include/enotify.php:226
+#, php-format
+msgid "%1$s, %2$s poked you at %3$s"
+msgstr "%1$s, %2$s puffade dig på %3$s"
+
+#: ../../include/enotify.php:227
+#, php-format
+msgid "%1$s, %2$s [zrl=%2$s]poked you[/zrl]."
+msgstr "%1$s, %2$s [zrl=%2$s]puffade dig[/zrl]."
+
+#: ../../include/enotify.php:243
+#, php-format
+msgid "[Red:Notify] %s tagged your post"
+msgstr "[Red:Meddelande] %s taggade ditt inlägg"
+
+#: ../../include/enotify.php:244
+#, php-format
+msgid "%1$s, %2$s tagged your post at %3$s"
+msgstr "%1$s, %2$s taggade ditt inlägg på %3$s"
+
+#: ../../include/enotify.php:245
+#, php-format
+msgid "%1$s, %2$s tagged [zrl=%3$s]your post[/zrl]"
+msgstr "%1$s, %2$s taggade [zrl=%3$s]ditt inlägg[/zrl]"
+
+#: ../../include/enotify.php:257
+msgid "[Red:Notify] Introduction received"
+msgstr "[Red:Meddelande] Presentation mottagen"
+
+#: ../../include/enotify.php:258
+#, php-format
+msgid "%1$s, you've received an new connection request from '%2$s' at %3$s"
+msgstr "%1$s, du har fått en ny kontaktförfrågan från '%2$s' på %3$s"
+
+#: ../../include/enotify.php:259
+#, php-format
+msgid ""
+"%1$s, you've received [zrl=%2$s]a new connection request[/zrl] from %3$s."
+msgstr "%1$s, du har fått [zrl=%2$s]en ny kontaktförfrågan[/zrl] från %3$s."
+
+#: ../../include/enotify.php:263 ../../include/enotify.php:282
+#, php-format
+msgid "You may visit their profile at %s"
+msgstr "Du kan besöka deras profil på %s"
+
+#: ../../include/enotify.php:265
+#, php-format
+msgid "Please visit %s to approve or reject the connection request."
+msgstr "Besök %s för att bevilja eller avslå kontaktförfrågan."
+
+#: ../../include/enotify.php:272
+msgid "[Red:Notify] Friend suggestion received"
+msgstr "[Red:Meddelande] Vänförslag mottaget"
+
+#: ../../include/enotify.php:273
+#, php-format
+msgid "%1$s, you've received a friend suggestion from '%2$s' at %3$s"
+msgstr "%1$s, du har fått ett vänförslag från '%2$s' på %3$s"
+
+#: ../../include/enotify.php:274
+#, php-format
+msgid ""
+"%1$s, you've received [zrl=%2$s]a friend suggestion[/zrl] for %3$s from "
+"%4$s."
+msgstr "%1$s, du har fått [zrl=%2$s]ett vänförslag[/zrl] angående %3$s från %4$s."
+
+#: ../../include/enotify.php:280
+msgid "Name:"
+msgstr "Namn:"
+
+#: ../../include/enotify.php:281
+msgid "Photo:"
+msgstr "Foto:"
+
+#: ../../include/enotify.php:284
+#, php-format
+msgid "Please visit %s to approve or reject the suggestion."
+msgstr "Besök %s för att bevilja eller avslå förslaget."
+
+#: ../../include/enotify.php:477
+msgid "[Red:Notify]"
+msgstr "[Red:Notifiering]"
+
+#: ../../include/event.php:376
+msgid "This event has been added to your calendar."
+msgstr "Händelsen har lagts till i din kalender."
+
+#: ../../include/group.php:26
+msgid ""
+"A deleted group with this name was revived. Existing item permissions "
+"<strong>may</strong> apply to this group and any future members. If this is "
+"not what you intended, please create another group with a different name."
+msgstr "En borttagen grupp med det här namnet återskapades. Befintliga rättigheter till saker <strong>kan</strong> gälla för den här gruppen och alla framtida medlemmar. Om det här inte är vad du avsåg, skapa i stället en annan grupp med ett annat namn."
+
+#: ../../include/group.php:235
+msgid "Default privacy group for new contacts"
+msgstr "Förvald integritetsgrupp för nya kontakter"
+
+#: ../../include/group.php:254 ../../mod/admin.php:735
+msgid "All Channels"
+msgstr "Alla kanaler"
+
+#: ../../include/group.php:276
+msgid "edit"
+msgstr "redigera"
+
+#: ../../include/group.php:298
+msgid "Collections"
+msgstr "Kretsar"
+
+#: ../../include/group.php:299
+msgid "Edit collection"
+msgstr "Redigera krets"
+
+#: ../../include/group.php:300
+msgid "Create a new collection"
+msgstr "Skapa en ny krets"
+
+#: ../../include/group.php:301
+msgid "Channels not in any collection"
+msgstr "Kanaler inte i någon krets"
+
+#: ../../include/group.php:303 ../../include/widgets.php:273
+msgid "add"
+msgstr "lägg till"
+
+#: ../../include/identity.php:31 ../../mod/item.php:1112
+msgid "Unable to obtain identity information from database"
+msgstr "Kunde inte hämta från databasen"
+
+#: ../../include/identity.php:66
+msgid "Empty name"
+msgstr "Tomt namn"
+
+#: ../../include/identity.php:68
+msgid "Name too long"
+msgstr "För långt namn"
+
+#: ../../include/identity.php:169
+msgid "No account identifier"
+msgstr "Ingen kontoidentifierare"
+
+#: ../../include/identity.php:182
+msgid "Nickname is required."
+msgstr "Smeknamn måste anges."
+
+#: ../../include/identity.php:196
+msgid "Reserved nickname. Please choose another."
+msgstr "Reserverat smeknamn. Välj ett annat."
+
+#: ../../include/identity.php:201 ../../include/dimport.php:34
+msgid ""
+"Nickname has unsupported characters or is already being used on this site."
+msgstr "Smeknamnet innehåller otillåtna tecken eller är redan upptaget på den här servern."
+
+#: ../../include/identity.php:283
+msgid "Unable to retrieve created identity"
+msgstr "Kunde inte hämta den skapade identiteten"
+
+#: ../../include/identity.php:343
+msgid "Default Profile"
+msgstr "Standardprofil"
+
+#: ../../include/identity.php:387 ../../include/identity.php:388
+#: ../../include/identity.php:395 ../../include/widgets.php:428
+#: ../../include/profile_selectors.php:80 ../../mod/settings.php:320
+#: ../../mod/settings.php:324 ../../mod/settings.php:325
+#: ../../mod/settings.php:328 ../../mod/settings.php:339
+#: ../../mod/connedit.php:510
+msgid "Friends"
+msgstr "Vänner"
+
+#: ../../include/identity.php:643
+msgid "Requested channel is not available."
+msgstr "Den begärda kanalen är inte tillgänglig"
+
+#: ../../include/identity.php:691 ../../mod/achievements.php:11
+#: ../../mod/profile.php:16 ../../mod/webpages.php:29 ../../mod/blocks.php:29
+#: ../../mod/editblock.php:29 ../../mod/editlayout.php:28
+#: ../../mod/editwebpage.php:28 ../../mod/filestorage.php:48
+#: ../../mod/connect.php:13 ../../mod/layouts.php:29 ../../mod/hcard.php:8
+msgid "Requested profile is not available."
+msgstr "Begärd profil är inte tillgänglig."
+
+#: ../../include/identity.php:840 ../../include/conversation.php:937
+#: ../../include/widgets.php:136 ../../include/widgets.php:175
+#: ../../include/Contact.php:107 ../../mod/suggest.php:51
+#: ../../mod/match.php:62 ../../mod/directory.php:264
+msgid "Connect"
+msgstr "Ta kontakt"
+
+#: ../../include/identity.php:854 ../../mod/profiles.php:740
+msgid "Change profile photo"
+msgstr "Bytprofilfoto"
+
+#: ../../include/identity.php:860
+msgid "Profiles"
+msgstr "Profiler"
+
+#: ../../include/identity.php:860
+msgid "Manage/edit profiles"
+msgstr "Hantera/redigera profiler"
+
+#: ../../include/identity.php:861 ../../mod/profiles.php:741
+msgid "Create New Profile"
+msgstr "Skapa ny profil"
+
+#: ../../include/identity.php:864 ../../include/nav.php:103
+msgid "Edit Profile"
+msgstr "Redigera profil"
+
+#: ../../include/identity.php:875 ../../mod/profiles.php:752
+msgid "Profile Image"
+msgstr "Profilbild"
+
+#: ../../include/identity.php:878
+msgid "visible to everybody"
+msgstr "synlig för alla"
+
+#: ../../include/identity.php:879 ../../mod/profiles.php:635
+#: ../../mod/profiles.php:756
+msgid "Edit visibility"
+msgstr "Redigera synlighet"
+
+#: ../../include/identity.php:895 ../../include/identity.php:1132
+msgid "Gender:"
+msgstr "Kön:"
+
+#: ../../include/identity.php:896 ../../include/identity.php:1176
+msgid "Status:"
+msgstr "Status:"
+
+#: ../../include/identity.php:897 ../../include/identity.php:1187
+msgid "Homepage:"
+msgstr "Hemsida:"
+
+#: ../../include/identity.php:898
+msgid "Online Now"
+msgstr "Online nu"
+
+#: ../../include/identity.php:976 ../../include/identity.php:1056
+#: ../../mod/ping.php:326
+msgid "g A l F d"
+msgstr "l j F \\k\\l G"
+
+#: ../../include/identity.php:977 ../../include/identity.php:1057
+msgid "F d"
+msgstr "j F"
+
+#: ../../include/identity.php:1022 ../../include/identity.php:1097
+#: ../../mod/ping.php:348
+msgid "[today]"
+msgstr "[i dag]"
+
+#: ../../include/identity.php:1034
+msgid "Birthday Reminders"
+msgstr "Födelsedagspåminnelser"
+
+#: ../../include/identity.php:1035
+msgid "Birthdays this week:"
+msgstr "Födelsedagar den här veckan:"
+
+#: ../../include/identity.php:1090
+msgid "[No description]"
+msgstr "[Ingen beskrivning]"
+
+#: ../../include/identity.php:1108
+msgid "Event Reminders"
+msgstr "Händelsepåminnelser"
+
+#: ../../include/identity.php:1109
+msgid "Events this week:"
+msgstr "Händelser den här veckan:"
+
+#: ../../include/identity.php:1122 ../../include/identity.php:1251
+#: ../../include/apps.php:138 ../../mod/profperm.php:112
+msgid "Profile"
+msgstr "Profil"
+
+#: ../../include/identity.php:1130 ../../mod/settings.php:1012
+msgid "Full Name:"
+msgstr "Fullständigt namn:"
+
+#: ../../include/identity.php:1137
+msgid "Like this channel"
+msgstr "Gilla den här kanalen"
+
+#: ../../include/identity.php:1161
+msgid "j F, Y"
+msgstr "j F Y"
+
+#: ../../include/identity.php:1162
+msgid "j F"
+msgstr "j F"
+
+#: ../../include/identity.php:1169
+msgid "Birthday:"
+msgstr "Födelsedag:"
+
+#: ../../include/identity.php:1173
+msgid "Age:"
+msgstr "Ã…lder:"
+
+#: ../../include/identity.php:1182
+#, php-format
+msgid "for %1$d %2$s"
+msgstr "i %1$d %2$s"
+
+#: ../../include/identity.php:1185 ../../mod/profiles.php:657
+msgid "Sexual Preference:"
+msgstr "Sexuell preferens:"
+
+#: ../../include/identity.php:1189 ../../mod/profiles.php:659
+msgid "Hometown:"
+msgstr "Hemort:"
+
+#: ../../include/identity.php:1191
+msgid "Tags:"
+msgstr "Taggar:"
+
+#: ../../include/identity.php:1193 ../../mod/profiles.php:660
+msgid "Political Views:"
+msgstr "Politisk åskådning:"
+
+#: ../../include/identity.php:1195
+msgid "Religion:"
+msgstr "Religion:"
+
+#: ../../include/identity.php:1197
+msgid "About:"
+msgstr "Om:"
+
+#: ../../include/identity.php:1199
+msgid "Hobbies/Interests:"
+msgstr "Fritidssysselsättning/intressen:"
+
+#: ../../include/identity.php:1201 ../../mod/profiles.php:663
+msgid "Likes:"
+msgstr "Gillar:"
+
+#: ../../include/identity.php:1203 ../../mod/profiles.php:664
+msgid "Dislikes:"
+msgstr "Ogillar:"
+
+#: ../../include/identity.php:1206
+msgid "Contact information and Social Networks:"
+msgstr "Kontaktinformation och sociala nätverk:"
+
+#: ../../include/identity.php:1218
+msgid "My other channels:"
+msgstr "Mina andra kanaler:"
+
+#: ../../include/identity.php:1221
+msgid "Musical interests:"
+msgstr "Musikintressen:"
+
+#: ../../include/identity.php:1223
+msgid "Books, literature:"
+msgstr "Böcker, litteratur:"
+
+#: ../../include/identity.php:1225
+msgid "Television:"
+msgstr "Tv:"
+
+#: ../../include/identity.php:1227
+msgid "Film/dance/culture/entertainment:"
+msgstr "Film/dans/kultur/underhållning:"
+
+#: ../../include/identity.php:1229
+msgid "Love/Romance:"
+msgstr "Kärlek/romantik:"
+
+#: ../../include/identity.php:1231
+msgid "Work/employment:"
+msgstr "Arbete/sysselsättning:"
+
+#: ../../include/identity.php:1233
+msgid "School/education:"
+msgstr "Skola/utbildning:"
+
+#: ../../include/identity.php:1253
+msgid "Like this thing"
+msgstr "Gilla den här saken"
+
+#: ../../include/account.php:23
+msgid "Not a valid email address"
+msgstr "Inte en giltig e-postadress"
+
+#: ../../include/account.php:25
+msgid "Your email domain is not among those allowed on this site"
+msgstr "Din e-postdomän är inte bland de som tillåts på den här servern"
+
+#: ../../include/account.php:31
+msgid "Your email address is already registered at this site."
+msgstr "Din e-postadress är redan registrerad på den här servern."
+
+#: ../../include/account.php:64
+msgid "An invitation is required."
+msgstr "En inbjudan behövs."
+
+#: ../../include/account.php:68
+msgid "Invitation could not be verified."
+msgstr "Inbjudningen kunde inte bekräftas."
+
+#: ../../include/account.php:119
+msgid "Please enter the required information."
+msgstr "Ange den begärda informationen."
+
+#: ../../include/account.php:187
+msgid "Failed to store account information."
+msgstr "Misslyckades att spara kontoinformation."
+
+#: ../../include/account.php:245
+#, php-format
+msgid "Registration confirmation for %s"
+msgstr "Registreringsbekräftelse för %s"
+
+#: ../../include/account.php:313
+#, php-format
+msgid "Registration request at %s"
+msgstr "Registreringsförfrågan på %s"
+
+#: ../../include/account.php:315 ../../include/account.php:342
+#: ../../include/account.php:399
+msgid "Administrator"
+msgstr "Administratör"
+
+#: ../../include/account.php:337
+msgid "your registration password"
+msgstr "ditt registreringslösenord"
+
+#: ../../include/account.php:340 ../../include/account.php:397
+#, php-format
+msgid "Registration details for %s"
+msgstr "Registreringsdetaljer för %s"
+
+#: ../../include/account.php:406
+msgid "Account approved."
+msgstr "Konto godkänt."
+
+#: ../../include/account.php:440
+#, php-format
+msgid "Registration revoked for %s"
+msgstr "Registrering avslagen för %s"
+
+#: ../../include/account.php:486
+msgid "Account verified. Please login."
+msgstr "Konto bekräftat. Du kan nu logga in."
+
+#: ../../include/account.php:648 ../../include/account.php:650
+msgid "Click here to upgrade."
+msgstr "Klicka här för att uppgradera."
+
+#: ../../include/account.php:656
+msgid "This action exceeds the limits set by your subscription plan."
+msgstr "Den här funktionen går utanför vad som anges i ditt avtal."
+
+#: ../../include/account.php:661
+msgid "This action is not available under your subscription plan."
+msgstr "Den här funktionen är inte tillgänglig med ditt avtal."
+
+#: ../../include/follow.php:28
+msgid "Channel is blocked on this site."
+msgstr "Kanalen är blockerad på den här servern."
+
+#: ../../include/follow.php:33
+msgid "Channel location missing."
+msgstr "Kanalplats saknas."
+
+#: ../../include/follow.php:82
+msgid "Response from remote channel was incomplete."
+msgstr "Svar från den andra kanalen var ofullständigt."
+
+#: ../../include/follow.php:99
+msgid "Channel was deleted and no longer exists."
+msgstr "Kanalen har tagits bort och finns inte längre."
+
+#: ../../include/follow.php:135 ../../include/follow.php:202
+msgid "Protocol disabled."
+msgstr "Protokoll inaktiverat."
+
+#: ../../include/follow.php:176
+msgid "Channel discovery failed."
+msgstr "Kanalsökning misslyckades."
+
+#: ../../include/follow.php:192
+msgid "local account not found."
+msgstr "hittade inte lokalt konto."
+
+#: ../../include/follow.php:220
+msgid "Cannot connect to yourself."
+msgstr "Du kan inte kontakta dig själv."
+
+#: ../../include/api.php:1084
+msgid "Public Timeline"
+msgstr "Offentlig tidslinje"
+
+#: ../../include/attach.php:221 ../../include/attach.php:275
+msgid "Item was not found."
+msgstr "Posten hittades inte."
+
+#: ../../include/attach.php:331
+msgid "No source file."
+msgstr "Ingen källfil."
+
+#: ../../include/attach.php:348
+msgid "Cannot locate file to replace"
+msgstr "Kan inte hitta fil att ersätta"
+
+#: ../../include/attach.php:366
+msgid "Cannot locate file to revise/update"
+msgstr "Kan inte hitta fil att revidera/uppdatera"
+
+#: ../../include/attach.php:377
+#, php-format
+msgid "File exceeds size limit of %d"
+msgstr "Filen överskrider storleksbegränsningen %d"
+
+#: ../../include/attach.php:389
+#, php-format
+msgid "You have reached your limit of %1$.0f Mbytes attachment storage."
+msgstr "Du har nått begränsningen %1$.0f megabyte utrymme för bilagor."
+
+#: ../../include/attach.php:472
+msgid "File upload failed. Possible system limit or action terminated."
+msgstr "Filuppladdning misslyckades. Möjlig systembegränsning eller avbruten åtgärd."
+
+#: ../../include/attach.php:484
+msgid "Stored file could not be verified. Upload failed."
+msgstr "Den lagrade filen kunde inte verifieras. Uppladdning misslyckad."
+
+#: ../../include/attach.php:526 ../../include/attach.php:543
+msgid "Path not available."
+msgstr "Sökväg inte tillgänglig."
+
+#: ../../include/attach.php:590
+msgid "Empty pathname"
+msgstr "Tom sökväg"
+
+#: ../../include/attach.php:606
+msgid "duplicate filename or path"
+msgstr "filnamn eller sökväg finns redan"
+
+#: ../../include/attach.php:630
+msgid "Path not found."
+msgstr "Sökväg hittas inte."
+
+#: ../../include/attach.php:681
+msgid "mkdir failed."
+msgstr "mkdir misslyckades."
+
+#: ../../include/attach.php:685
+msgid "database storage failed."
+msgstr "databaslagring misslyckades."
+
+#: ../../include/chat.php:10
+msgid "Missing room name"
+msgstr "Rumsnamn saknas"
+
+#: ../../include/chat.php:19
+msgid "Duplicate room name"
+msgstr "Rumsnamnet finns redan"
+
+#: ../../include/chat.php:68 ../../include/chat.php:76
+msgid "Invalid room specifier."
+msgstr "Ogiltig rumsbeskrivning."
+
+#: ../../include/chat.php:105
+msgid "Room not found."
+msgstr "Rummet hittades inte."
+
+#: ../../include/chat.php:126
+msgid "Room is full"
+msgstr "Rummet är fullt"
+
+#: ../../include/bbcode.php:112 ../../include/bbcode.php:677
+#: ../../include/bbcode.php:680 ../../include/bbcode.php:685
+#: ../../include/bbcode.php:688 ../../include/bbcode.php:691
+#: ../../include/bbcode.php:694 ../../include/bbcode.php:699
+#: ../../include/bbcode.php:702 ../../include/bbcode.php:707
+#: ../../include/bbcode.php:710 ../../include/bbcode.php:713
+#: ../../include/bbcode.php:716
+msgid "Image/photo"
+msgstr "Bild/foto"
+
+#: ../../include/bbcode.php:147 ../../include/bbcode.php:727
+msgid "Encrypted content"
+msgstr "Krypterat innehåll"
+
+#: ../../include/bbcode.php:165
+msgid "Install design element: "
+msgstr "Installera designelement: "
+
+#: ../../include/bbcode.php:171
+msgid "QR code"
+msgstr "QR-kod"
+
+#: ../../include/bbcode.php:220
+#, php-format
+msgid "%1$s wrote the following %2$s %3$s"
+msgstr "%1$s skrev följande %2$s %3$s"
+
+#: ../../include/bbcode.php:222
+msgid "post"
+msgstr "post"
+
+#: ../../include/bbcode.php:645
+msgid "$1 spoiler"
+msgstr "$1 spoiler"
+
+#: ../../include/bbcode.php:665
+msgid "$1 wrote:"
+msgstr "$1 skrev:"
+
+#: ../../include/conversation.php:126 ../../mod/like.php:89
+msgid "channel"
+msgstr "kanal"
+
+#: ../../include/conversation.php:164 ../../include/diaspora.php:1957
+#: ../../mod/like.php:336
#, php-format
msgid "%1$s likes %2$s's %3$s"
msgstr "%1$s gillar %2$ss %3$s"
-#: ../../include/conversation.php:164 ../../mod/like.php:144
+#: ../../include/conversation.php:167 ../../mod/like.php:338
#, php-format
msgid "%1$s doesn't like %2$s's %3$s"
msgstr "%1$s gillar inte %2$ss %3$s"
-#: ../../include/conversation.php:201
+#: ../../include/conversation.php:204
#, php-format
msgid "%1$s is now connected with %2$s"
msgstr "%1$s har nu kontakt med %2$s"
-#: ../../include/conversation.php:236
+#: ../../include/conversation.php:239
#, php-format
msgid "%1$s poked %2$s"
msgstr "%1$s puffade %2$s"
-#: ../../include/conversation.php:240 ../../include/text.php:885
-msgid "poked"
-msgstr "puffade"
-
-#: ../../include/conversation.php:258 ../../mod/mood.php:63
+#: ../../include/conversation.php:261 ../../mod/mood.php:63
#, php-format
-msgid "%1$s is currently %2$s"
-msgstr "%1$s är för tillfället %2$s"
+msgctxt "mood"
+msgid "%1$s is %2$s"
+msgstr "%1$s är %2$s"
-#: ../../include/conversation.php:631 ../../include/ItemObject.php:114
+#: ../../include/conversation.php:638 ../../include/ItemObject.php:126
msgid "Select"
msgstr "Välj"
-#: ../../include/conversation.php:632 ../../include/ItemObject.php:108
-#: ../../mod/thing.php:236 ../../mod/settings.php:578 ../../mod/group.php:176
-#: ../../mod/admin.php:757 ../../mod/admin.php:886 ../../mod/connedit.php:365
-#: ../../mod/filestorage.php:171 ../../mod/photos.php:1043
-msgid "Delete"
-msgstr "Ta bort"
-
-#: ../../include/conversation.php:639 ../../include/ItemObject.php:89
-#: ../../mod/photos.php:846
+#: ../../include/conversation.php:646 ../../include/ItemObject.php:89
msgid "Private Message"
msgstr "Privat meddelande"
-#: ../../include/conversation.php:646 ../../include/ItemObject.php:161
-msgid "Message is verified"
-msgstr "Meddelandet är bekräftat"
+#: ../../include/conversation.php:653 ../../include/ItemObject.php:194
+msgid "Message signature validated"
+msgstr "Meddelandesignatur bekräftad"
-#: ../../include/conversation.php:666
+#: ../../include/conversation.php:654 ../../include/ItemObject.php:195
+msgid "Message signature incorrect"
+msgstr "Meddelandesignatur felaktig"
+
+#: ../../include/conversation.php:674
#, php-format
msgid "View %s's profile @ %s"
msgstr "Visa %ss profil på %s"
-#: ../../include/conversation.php:680
+#: ../../include/conversation.php:689
msgid "Categories:"
msgstr "Kategorier:"
-#: ../../include/conversation.php:681
+#: ../../include/conversation.php:690
msgid "Filed under:"
msgstr "Postat under:"
-#: ../../include/conversation.php:690 ../../include/ItemObject.php:226
+#: ../../include/conversation.php:698 ../../include/ItemObject.php:274
#, php-format
msgid " from %s"
msgstr "från %s"
-#: ../../include/conversation.php:693 ../../include/ItemObject.php:229
+#: ../../include/conversation.php:701 ../../include/ItemObject.php:277
#, php-format
msgid "last edited: %s"
msgstr "senast redigerat: %s"
-#: ../../include/conversation.php:694 ../../include/ItemObject.php:230
+#: ../../include/conversation.php:702 ../../include/ItemObject.php:278
#, php-format
msgid "Expires: %s"
msgstr "Upphör: %s"
-#: ../../include/conversation.php:709
+#: ../../include/conversation.php:717
msgid "View in context"
msgstr "Visa sammanhang"
-#: ../../include/conversation.php:711 ../../include/conversation.php:1127
-#: ../../include/ItemObject.php:259 ../../mod/mail.php:222
-#: ../../mod/mail.php:336 ../../mod/editpost.php:121
-#: ../../mod/editblock.php:120 ../../mod/editlayout.php:115
-#: ../../mod/editwebpage.php:152 ../../mod/photos.php:974
+#: ../../include/conversation.php:719 ../../include/conversation.php:1142
+#: ../../include/ItemObject.php:325 ../../mod/editpost.php:121
+#: ../../mod/mail.php:238 ../../mod/mail.php:353 ../../mod/photos.php:978
+#: ../../mod/editblock.php:152 ../../mod/editlayout.php:148
+#: ../../mod/editwebpage.php:183
msgid "Please wait"
msgstr "Vänta"
-#: ../../include/conversation.php:838
+#: ../../include/conversation.php:835
msgid "remove"
msgstr "ta bort"
-#: ../../include/conversation.php:842
+#: ../../include/conversation.php:839 ../../include/nav.php:257
msgid "Loading..."
msgstr "Laddar..."
-#: ../../include/conversation.php:843
+#: ../../include/conversation.php:840
msgid "Delete Selected Items"
msgstr "Ta bort valda poster"
-#: ../../include/conversation.php:934
+#: ../../include/conversation.php:931
msgid "View Source"
msgstr "Visa källa"
-#: ../../include/conversation.php:935
+#: ../../include/conversation.php:932
msgid "Follow Thread"
msgstr "Följ tråd"
-#: ../../include/conversation.php:936
+#: ../../include/conversation.php:933
msgid "View Status"
msgstr "Visa status"
-#: ../../include/conversation.php:938
+#: ../../include/conversation.php:934 ../../include/nav.php:99
+#: ../../mod/connedit.php:429 ../../mod/connedit.php:545
+msgid "View Profile"
+msgstr "Visa profil"
+
+#: ../../include/conversation.php:935
msgid "View Photos"
msgstr "Visa foton"
-#: ../../include/conversation.php:939
+#: ../../include/conversation.php:936
msgid "Matrix Activity"
msgstr "Matrisaktivitet"
-#: ../../include/conversation.php:940
+#: ../../include/conversation.php:938
msgid "Edit Contact"
msgstr "Redigera kontakt"
-#: ../../include/conversation.php:941
+#: ../../include/conversation.php:939
msgid "Send PM"
msgstr "Skicka meddelande"
-#: ../../include/conversation.php:942
+#: ../../include/conversation.php:940 ../../include/apps.php:145
msgid "Poke"
msgstr "Puffa"
-#: ../../include/conversation.php:998
+#: ../../include/conversation.php:1013
#, php-format
msgid "%s likes this."
msgstr "%s gillar det här."
-#: ../../include/conversation.php:998
+#: ../../include/conversation.php:1013
#, php-format
msgid "%s doesn't like this."
msgstr "%s gillar inte det här."
-#: ../../include/conversation.php:1002
+#: ../../include/conversation.php:1017
#, php-format
msgid "<span %1$s>%2$d people</span> like this."
msgid_plural "<span %1$s>%2$d people</span> like this."
msgstr[0] "<span %1$s>%2$d person</span> gillar det här."
msgstr[1] "<span %1$s>%2$d personer</span> gillar det här."
-#: ../../include/conversation.php:1004
+#: ../../include/conversation.php:1019
#, php-format
msgid "<span %1$s>%2$d people</span> don't like this."
msgid_plural "<span %1$s>%2$d people</span> don't like this."
msgstr[0] "<span %1$s>%2$d person</span> gillar inte det här."
msgstr[1] "<span %1$s>%2$d personer</span> gillar inte det här."
-#: ../../include/conversation.php:1010
+#: ../../include/conversation.php:1025
msgid "and"
msgstr "och"
-#: ../../include/conversation.php:1013
+#: ../../include/conversation.php:1028
#, php-format
msgid ", and %d other people"
msgid_plural ", and %d other people"
msgstr[0] ", och %d annan person"
msgstr[1] ", och %d andra personer"
-#: ../../include/conversation.php:1014
+#: ../../include/conversation.php:1029
#, php-format
msgid "%s like this."
msgstr "%s gillar det här."
-#: ../../include/conversation.php:1014
+#: ../../include/conversation.php:1029
#, php-format
msgid "%s don't like this."
msgstr "%s gillar inte det här."
-#: ../../include/conversation.php:1071
+#: ../../include/conversation.php:1086
msgid "Visible to <strong>everybody</strong>"
-msgstr "Synlig för <strong>alla</strong>"
+msgstr "Kan ses av <strong>alla</strong>"
-#: ../../include/conversation.php:1072 ../../mod/mail.php:171
-#: ../../mod/mail.php:269
+#: ../../include/conversation.php:1087 ../../mod/mail.php:171
+#: ../../mod/mail.php:286
msgid "Please enter a link URL:"
msgstr "Ange en länkadress:"
-#: ../../include/conversation.php:1073
+#: ../../include/conversation.php:1088
msgid "Please enter a video link/URL:"
msgstr "Ange en videolänkadress:"
-#: ../../include/conversation.php:1074
+#: ../../include/conversation.php:1089
msgid "Please enter an audio link/URL:"
msgstr "Ange en ljudlänkadress"
-#: ../../include/conversation.php:1075
+#: ../../include/conversation.php:1090
msgid "Tag term:"
msgstr "Tagguttryck"
-#: ../../include/conversation.php:1076 ../../mod/filer.php:49
+#: ../../include/conversation.php:1091 ../../mod/filer.php:49
msgid "Save to Folder:"
msgstr "Spara i mapp:"
-#: ../../include/conversation.php:1077
+#: ../../include/conversation.php:1092
msgid "Where are you right now?"
msgstr "Var är du just nu?"
-#: ../../include/conversation.php:1078 ../../mod/mail.php:172
-#: ../../mod/mail.php:270 ../../mod/editpost.php:52
+#: ../../include/conversation.php:1093 ../../mod/editpost.php:52
+#: ../../mod/mail.php:172 ../../mod/mail.php:287
msgid "Expires YYYY-MM-DD HH:MM"
msgstr "Upphör YYYY-MM-DD HH:MM"
-#: ../../include/conversation.php:1088 ../../include/ItemObject.php:557
-#: ../../mod/webpages.php:123 ../../mod/editpost.php:140
-#: ../../mod/editblock.php:141 ../../mod/editlayout.php:135
-#: ../../mod/editwebpage.php:175 ../../mod/photos.php:994
-msgid "Preview"
-msgstr "Förhandsgranska"
-
-#: ../../include/conversation.php:1102 ../../mod/layouts.php:113
-#: ../../mod/photos.php:973
+#: ../../include/conversation.php:1117 ../../mod/photos.php:977
+#: ../../mod/editblock.php:198 ../../mod/editlayout.php:193
+#: ../../mod/editwebpage.php:230 ../../mod/layouts.php:168
msgid "Share"
msgstr "Dela"
-#: ../../include/conversation.php:1104 ../../mod/editwebpage.php:139
+#: ../../include/conversation.php:1119 ../../mod/editwebpage.php:170
msgid "Page link title"
msgstr "Titel på sidlänk"
-#: ../../include/conversation.php:1107
+#: ../../include/conversation.php:1122
msgid "Post as"
msgstr "Posta som"
-#: ../../include/conversation.php:1108 ../../mod/mail.php:219
-#: ../../mod/mail.php:332 ../../mod/editpost.php:113
-#: ../../mod/editblock.php:112 ../../mod/editlayout.php:107
-#: ../../mod/editwebpage.php:144
+#: ../../include/conversation.php:1123 ../../mod/editpost.php:113
+#: ../../mod/mail.php:235 ../../mod/mail.php:349 ../../mod/editblock.php:144
+#: ../../mod/editlayout.php:140 ../../mod/editwebpage.php:175
msgid "Upload photo"
msgstr "Ladda upp foto"
-#: ../../include/conversation.php:1109
+#: ../../include/conversation.php:1124
msgid "upload photo"
msgstr "ladda upp foto"
-#: ../../include/conversation.php:1110 ../../mod/mail.php:220
-#: ../../mod/mail.php:333 ../../mod/editpost.php:114
-#: ../../mod/editblock.php:113 ../../mod/editlayout.php:108
-#: ../../mod/editwebpage.php:145
+#: ../../include/conversation.php:1125 ../../mod/editpost.php:114
+#: ../../mod/mail.php:236 ../../mod/mail.php:350 ../../mod/editblock.php:145
+#: ../../mod/editlayout.php:141 ../../mod/editwebpage.php:176
msgid "Attach file"
msgstr "Bifoga fil"
-#: ../../include/conversation.php:1111
+#: ../../include/conversation.php:1126
msgid "attach file"
msgstr "bifoga fil"
-#: ../../include/conversation.php:1112 ../../mod/mail.php:221
-#: ../../mod/mail.php:334 ../../mod/editpost.php:115
-#: ../../mod/editblock.php:114 ../../mod/editlayout.php:109
-#: ../../mod/editwebpage.php:146
+#: ../../include/conversation.php:1127 ../../mod/editpost.php:115
+#: ../../mod/mail.php:237 ../../mod/mail.php:351 ../../mod/editblock.php:146
+#: ../../mod/editlayout.php:142 ../../mod/editwebpage.php:177
msgid "Insert web link"
msgstr "Infoga webblänk"
-#: ../../include/conversation.php:1113
+#: ../../include/conversation.php:1128
msgid "web link"
msgstr "webblänk"
-#: ../../include/conversation.php:1114
+#: ../../include/conversation.php:1129
msgid "Insert video link"
msgstr "Infoga videolänk"
-#: ../../include/conversation.php:1115
+#: ../../include/conversation.php:1130
msgid "video link"
msgstr "videolänk"
-#: ../../include/conversation.php:1116
+#: ../../include/conversation.php:1131
msgid "Insert audio link"
msgstr "Infoga ljudlänk"
-#: ../../include/conversation.php:1117
+#: ../../include/conversation.php:1132
msgid "audio link"
msgstr "ljudlänk"
-#: ../../include/conversation.php:1118 ../../mod/editpost.php:119
-#: ../../mod/editblock.php:118 ../../mod/editlayout.php:113
-#: ../../mod/editwebpage.php:150
+#: ../../include/conversation.php:1133 ../../mod/editpost.php:119
+#: ../../mod/editblock.php:150 ../../mod/editlayout.php:146
+#: ../../mod/editwebpage.php:181
msgid "Set your location"
msgstr "Ange din plats"
-#: ../../include/conversation.php:1119
+#: ../../include/conversation.php:1134
msgid "set location"
msgstr "ange plats"
-#: ../../include/conversation.php:1120 ../../mod/editpost.php:120
-#: ../../mod/editblock.php:119 ../../mod/editlayout.php:114
-#: ../../mod/editwebpage.php:151
+#: ../../include/conversation.php:1135 ../../mod/editpost.php:120
+#: ../../mod/editblock.php:151 ../../mod/editlayout.php:147
+#: ../../mod/editwebpage.php:182
msgid "Clear browser location"
msgstr "Rensa webbläsarplats"
-#: ../../include/conversation.php:1121
+#: ../../include/conversation.php:1136
msgid "clear location"
msgstr "rensa plats"
-#: ../../include/conversation.php:1123 ../../mod/editpost.php:132
-#: ../../mod/editblock.php:132 ../../mod/editlayout.php:126
-#: ../../mod/editwebpage.php:167
-msgid "Set title"
-msgstr "Ange titel"
-
-#: ../../include/conversation.php:1126 ../../mod/editpost.php:134
-#: ../../mod/editblock.php:135 ../../mod/editlayout.php:129
-#: ../../mod/editwebpage.php:169
-msgid "Categories (comma-separated list)"
-msgstr "Kategorier (kommaseparerad lista)"
-
-#: ../../include/conversation.php:1128 ../../mod/editpost.php:122
-#: ../../mod/editblock.php:121 ../../mod/editlayout.php:116
-#: ../../mod/editwebpage.php:153
+#: ../../include/conversation.php:1138 ../../mod/editpost.php:132
+#: ../../mod/editblock.php:164 ../../mod/editlayout.php:159
+#: ../../mod/editwebpage.php:198
+msgid "Title (optional)"
+msgstr "Titel (frivilligt)"
+
+#: ../../include/conversation.php:1141 ../../mod/editpost.php:134
+#: ../../mod/editblock.php:167 ../../mod/editlayout.php:162
+#: ../../mod/editwebpage.php:200
+msgid "Categories (optional, comma-separated list)"
+msgstr "Kategorier (frivilligt, kommaseparerad lista)"
+
+#: ../../include/conversation.php:1143 ../../mod/editpost.php:122
+#: ../../mod/editblock.php:153 ../../mod/editlayout.php:149
+#: ../../mod/editwebpage.php:184
msgid "Permission settings"
msgstr "Behörighetsinställningar"
-#: ../../include/conversation.php:1129
+#: ../../include/conversation.php:1144
msgid "permissions"
msgstr "behörighet"
-#: ../../include/conversation.php:1136 ../../mod/editpost.php:129
-#: ../../mod/editblock.php:129 ../../mod/editlayout.php:123
-#: ../../mod/editwebpage.php:162
+#: ../../include/conversation.php:1151 ../../mod/editpost.php:129
+#: ../../mod/editblock.php:161 ../../mod/editlayout.php:156
+#: ../../mod/editwebpage.php:193
msgid "Public post"
msgstr "Offentligt inlägg"
-#: ../../include/conversation.php:1138 ../../mod/editpost.php:135
-#: ../../mod/editblock.php:136 ../../mod/editlayout.php:130
-#: ../../mod/editwebpage.php:170
+#: ../../include/conversation.php:1153 ../../mod/editpost.php:135
+#: ../../mod/editblock.php:168 ../../mod/editlayout.php:163
+#: ../../mod/editwebpage.php:201
msgid "Example: bob@example.com, mary@example.com"
msgstr "Exempel: bob@example.com, mary@example.com"
-#: ../../include/conversation.php:1151 ../../mod/mail.php:226
-#: ../../mod/mail.php:339 ../../mod/editpost.php:146
-#: ../../mod/editblock.php:146 ../../mod/editlayout.php:140
-#: ../../mod/editwebpage.php:180
+#: ../../include/conversation.php:1166 ../../mod/editpost.php:146
+#: ../../mod/mail.php:242 ../../mod/mail.php:356 ../../mod/editblock.php:178
+#: ../../mod/editlayout.php:173 ../../mod/editwebpage.php:210
msgid "Set expiration date"
msgstr "Ange utgångsdatum"
-#: ../../include/conversation.php:1153 ../../include/ItemObject.php:560
-#: ../../mod/mail.php:228 ../../mod/mail.php:341 ../../mod/editpost.php:148
+#: ../../include/conversation.php:1168 ../../include/ItemObject.php:641
+#: ../../mod/editpost.php:148 ../../mod/mail.php:244 ../../mod/mail.php:358
msgid "Encrypt text"
msgstr "Kryptera text"
-#: ../../include/conversation.php:1155 ../../mod/editpost.php:150
+#: ../../include/conversation.php:1170 ../../mod/events.php:580
+#: ../../mod/editpost.php:150
msgid "OK"
msgstr "OK"
-#: ../../include/conversation.php:1156 ../../mod/settings.php:516
-#: ../../mod/settings.php:542 ../../mod/editpost.php:151
-#: ../../mod/tagrm.php:11 ../../mod/tagrm.php:94 ../../mod/fbrowser.php:82
-#: ../../mod/fbrowser.php:117
+#: ../../include/conversation.php:1171 ../../mod/settings.php:566
+#: ../../mod/settings.php:592 ../../mod/events.php:579
+#: ../../mod/editpost.php:151 ../../mod/fbrowser.php:82
+#: ../../mod/fbrowser.php:117 ../../mod/tagrm.php:11 ../../mod/tagrm.php:134
msgid "Cancel"
msgstr "Avbryt"
-#: ../../include/conversation.php:1395
+#: ../../include/conversation.php:1415
msgid "Discover"
msgstr "Upptäck"
-#: ../../include/conversation.php:1398
+#: ../../include/conversation.php:1418
msgid "Imported public streams"
msgstr "Importerade offentliga strömmar"
-#: ../../include/conversation.php:1403
+#: ../../include/conversation.php:1423
msgid "Commented Order"
msgstr "Kommentarsordning"
-#: ../../include/conversation.php:1406
+#: ../../include/conversation.php:1426
msgid "Sort by Comment Date"
msgstr "Ordna efter kommentarsdatum"
-#: ../../include/conversation.php:1410
+#: ../../include/conversation.php:1430
msgid "Posted Order"
msgstr "Inläggsordning"
-#: ../../include/conversation.php:1413
+#: ../../include/conversation.php:1433
msgid "Sort by Post Date"
msgstr "Ordna efter när inlägget skrevs"
-#: ../../include/conversation.php:1418
+#: ../../include/conversation.php:1438 ../../include/widgets.php:94
msgid "Personal"
msgstr "Personligt"
-#: ../../include/conversation.php:1421
+#: ../../include/conversation.php:1441
msgid "Posts that mention or involve you"
msgstr "Inlägg som nämner eller berör dig"
-#: ../../include/conversation.php:1427 ../../mod/menu.php:61
-#: ../../mod/connections.php:211 ../../mod/connections.php:223
+#: ../../include/conversation.php:1447 ../../mod/connections.php:211
+#: ../../mod/connections.php:224 ../../mod/menu.php:80
msgid "New"
msgstr "Nytt"
-#: ../../include/conversation.php:1430
+#: ../../include/conversation.php:1450
msgid "Activity Stream - by date"
msgstr "Aktivitetsström - efter datum"
-#: ../../include/conversation.php:1436
+#: ../../include/conversation.php:1456
msgid "Starred"
msgstr "Märkt"
-#: ../../include/conversation.php:1439
+#: ../../include/conversation.php:1459
msgid "Favourite Posts"
msgstr "Favoritinlägg"
-#: ../../include/conversation.php:1446
+#: ../../include/conversation.php:1466
msgid "Spam"
msgstr "Skräp"
-#: ../../include/conversation.php:1449
+#: ../../include/conversation.php:1469
msgid "Posts flagged as SPAM"
msgstr "Inlägg markerade som SKRÄP"
-#: ../../include/conversation.php:1483 ../../mod/admin.php:890
+#: ../../include/conversation.php:1509 ../../mod/admin.php:865
msgid "Channel"
msgstr "Kanal"
-#: ../../include/conversation.php:1486
+#: ../../include/conversation.php:1512
msgid "Status Messages and Posts"
msgstr "Statusmeddelanden och inlägg"
-#: ../../include/conversation.php:1495
+#: ../../include/conversation.php:1521
msgid "About"
msgstr "Om"
-#: ../../include/conversation.php:1498
+#: ../../include/conversation.php:1524
msgid "Profile Details"
msgstr "Profildetaljer"
-#: ../../include/conversation.php:1507 ../../include/photos.php:311
-msgid "Photo Albums"
-msgstr "Fotoalbum"
+#: ../../include/conversation.php:1530 ../../include/apps.php:139
+#: ../../include/nav.php:105 ../../mod/fbrowser.php:25
+msgid "Photos"
+msgstr "Foton"
-#: ../../include/conversation.php:1516
+#: ../../include/conversation.php:1542
msgid "Files and Storage"
msgstr "Filer och lagring"
-#: ../../include/conversation.php:1525 ../../include/conversation.php:1528
+#: ../../include/conversation.php:1552 ../../include/conversation.php:1555
msgid "Chatrooms"
msgstr "Chattrum"
-#: ../../include/conversation.php:1538
-msgid "Events and Calendar"
-msgstr "Händelser och kalender"
+#: ../../include/conversation.php:1565 ../../include/apps.php:129
+#: ../../include/nav.php:117
+msgid "Bookmarks"
+msgstr "Bokmärken"
-#: ../../include/conversation.php:1546
+#: ../../include/conversation.php:1568
msgid "Saved Bookmarks"
msgstr "Sparade bokmärken"
-#: ../../include/conversation.php:1557
+#: ../../include/conversation.php:1576 ../../include/apps.php:136
+#: ../../include/nav.php:121 ../../mod/webpages.php:160
+msgid "Webpages"
+msgstr "Webbsidor"
+
+#: ../../include/conversation.php:1579
msgid "Manage Webpages"
msgstr "Hantera webbsidor"
-#: ../../include/datetime.php:43 ../../include/datetime.php:45
-msgid "Miscellaneous"
-msgstr "Övrigt"
-
-#: ../../include/datetime.php:152 ../../include/datetime.php:284
-msgid "year"
-msgstr "Ã¥r"
-
-#: ../../include/datetime.php:157 ../../include/datetime.php:285
-msgid "month"
-msgstr "månad"
-
-#: ../../include/datetime.php:162 ../../include/datetime.php:287
-msgid "day"
-msgstr "dag"
-
-#: ../../include/datetime.php:275
-msgid "never"
-msgstr "aldrig"
-
-#: ../../include/datetime.php:281
-msgid "less than a second ago"
-msgstr "mindre än en sekund sedan"
-
-#: ../../include/datetime.php:284
-msgid "years"
-msgstr "Ã¥r"
-
-#: ../../include/datetime.php:285
-msgid "months"
-msgstr "månader"
-
-#: ../../include/datetime.php:286
-msgid "week"
-msgstr "vecka"
-
-#: ../../include/datetime.php:286
-msgid "weeks"
-msgstr "veckor"
-
-#: ../../include/datetime.php:287
-msgid "days"
-msgstr "dagar"
-
-#: ../../include/datetime.php:288
-msgid "hour"
-msgstr "timme"
-
-#: ../../include/datetime.php:288
-msgid "hours"
-msgstr "timmar"
-
-#: ../../include/datetime.php:289
-msgid "minute"
-msgstr "minut"
-
-#: ../../include/datetime.php:289
-msgid "minutes"
-msgstr "minuter"
-
-#: ../../include/datetime.php:290
-msgid "second"
-msgstr "sekund"
-
-#: ../../include/datetime.php:290
-msgid "seconds"
-msgstr "sekunder"
-
-#: ../../include/datetime.php:299
-#, php-format
-msgid "%1$d %2$s ago"
-msgstr "%1$d %2$s sedan"
-
-#: ../../include/dba/dba_driver.php:50
-#, php-format
-msgid "Cannot locate DNS info for database server '%s'"
-msgstr "Kan inte hitta DNS-information för databasserver '%s'"
-
-#: ../../include/bbcode.php:128 ../../include/bbcode.php:603
-#: ../../include/bbcode.php:606 ../../include/bbcode.php:611
-#: ../../include/bbcode.php:614 ../../include/bbcode.php:617
-#: ../../include/bbcode.php:620 ../../include/bbcode.php:625
-#: ../../include/bbcode.php:628 ../../include/bbcode.php:633
-#: ../../include/bbcode.php:636 ../../include/bbcode.php:639
-#: ../../include/bbcode.php:642
-msgid "Image/photo"
-msgstr "Bild/foto"
-
-#: ../../include/bbcode.php:163 ../../include/bbcode.php:653
-msgid "Encrypted content"
-msgstr "Krypterat innehåll"
-
-#: ../../include/bbcode.php:170
-msgid "QR code"
-msgstr "QR-kod"
-
-#: ../../include/bbcode.php:213
-#, php-format
-msgid "%1$s wrote the following %2$s %3$s"
-msgstr "%1$s skrev följande %2$s %3$s"
-
-#: ../../include/bbcode.php:215
-msgid "post"
-msgstr "post"
-
-#: ../../include/bbcode.php:571 ../../include/bbcode.php:591
-msgid "$1 wrote:"
-msgstr "$1 skrev:"
-
-#: ../../include/group.php:25
-msgid ""
-"A deleted group with this name was revived. Existing item permissions "
-"<strong>may</strong> apply to this group and any future members. If this is "
-"not what you intended, please create another group with a different name."
-msgstr "En borttagen grupp med det här namnet återskapades. Befintliga rättigheter till saker <strong>kan</strong> gälla för den här gruppen och alla framtida medlemmar. Om det här inte är vad du avsåg, skapa i stället en annan grupp med ett annat namn."
-
-#: ../../include/group.php:223
-msgid "Default privacy group for new contacts"
-msgstr "Förvald integritetsgrupp för nya kontakter"
-
-#: ../../include/group.php:242 ../../mod/admin.php:762
-msgid "All Channels"
-msgstr "Alla kanaler"
-
-#: ../../include/group.php:264
-msgid "edit"
-msgstr "redigera"
-
-#: ../../include/group.php:285
-msgid "Collections"
-msgstr "Sammanhang"
-
-#: ../../include/group.php:286
-msgid "Edit collection"
-msgstr "Redigera sammanhang"
-
-#: ../../include/group.php:287
-msgid "Create a new collection"
-msgstr "Skapa ett nytt sammanhang"
-
-#: ../../include/group.php:288
-msgid "Channels not in any collection"
-msgstr "Kanaler utan sammanhang"
-
-#: ../../include/js_strings.php:5
-msgid "Delete this item?"
-msgstr "Ta bort den här posten?"
-
-#: ../../include/js_strings.php:6 ../../include/ItemObject.php:547
-#: ../../mod/photos.php:992 ../../mod/photos.php:1079
-msgid "Comment"
-msgstr "Kommentar"
-
-#: ../../include/js_strings.php:7 ../../include/ItemObject.php:281
-#: ../../include/contact_widgets.php:130
-msgid "show more"
-msgstr "visa fler"
-
-#: ../../include/js_strings.php:8
-msgid "show fewer"
-msgstr "visa färre"
-
-#: ../../include/js_strings.php:9
-msgid "+ Show More"
-msgstr "+ Visa fler"
-
-#: ../../include/js_strings.php:10
-msgid "- Show Less"
-msgstr "- Visa färre"
-
-#: ../../include/js_strings.php:11
-msgid "Password too short"
-msgstr "Lösenord för kort"
-
-#: ../../include/js_strings.php:12
-msgid "Passwords do not match"
-msgstr "Lösenorden stämmer inte överens"
-
-#: ../../include/js_strings.php:13 ../../mod/photos.php:39
-msgid "everybody"
-msgstr "alla"
-
-#: ../../include/js_strings.php:14
-msgid "Secret Passphrase"
-msgstr "Hemligt lösenord"
-
-#: ../../include/js_strings.php:15
-msgid "Passphrase hint"
-msgstr "Lösenordsledtråd"
-
-#: ../../include/js_strings.php:16
-msgid "Notice: Permissions have changed but have not yet been submitted."
-msgstr "Observera: Rättigheter har ändrats men har ännu inte skickats in"
-
-#: ../../include/js_strings.php:18
-msgid "timeago.prefixAgo"
-msgstr "för"
-
-#: ../../include/js_strings.php:19
-msgid "timeago.prefixFromNow"
-msgstr "om"
-
-#: ../../include/js_strings.php:20
-msgid "ago"
-msgstr "sedan"
-
-#: ../../include/js_strings.php:21
-msgid "from now"
-msgstr " "
-
-#: ../../include/js_strings.php:22
-msgid "less than a minute"
-msgstr "mindre än en minut"
-
-#: ../../include/js_strings.php:23
-msgid "about a minute"
-msgstr "ungefär en minut"
-
-#: ../../include/js_strings.php:24
-#, php-format
-msgid "%d minutes"
-msgstr "%d minuter"
-
-#: ../../include/js_strings.php:25
-msgid "about an hour"
-msgstr "ungefär en timme"
-
-#: ../../include/js_strings.php:26
-#, php-format
-msgid "about %d hours"
-msgstr "ungefär %d timmar"
-
-#: ../../include/js_strings.php:27
-msgid "a day"
-msgstr "en dag"
-
-#: ../../include/js_strings.php:28
-#, php-format
-msgid "%d days"
-msgstr "%d dagar"
-
-#: ../../include/js_strings.php:29
-msgid "about a month"
-msgstr "ungefär en månad"
-
-#: ../../include/js_strings.php:30
-#, php-format
-msgid "%d months"
-msgstr "%d månader"
-
-#: ../../include/js_strings.php:31
-msgid "about a year"
-msgstr "ungefär ett år"
-
-#: ../../include/js_strings.php:32
-#, php-format
-msgid "%d years"
-msgstr "%d år"
-
-#: ../../include/js_strings.php:33
-msgid " "
-msgstr " "
-
-#: ../../include/js_strings.php:34
-msgid "timeago.numbers"
-msgstr "timeago.numbers"
-
-#: ../../include/message.php:18
-msgid "No recipient provided."
-msgstr "Ingen mottagare angiven."
-
-#: ../../include/message.php:23
-msgid "[no subject]"
-msgstr "[inget ämne]"
-
-#: ../../include/message.php:42
-msgid "Unable to determine sender."
-msgstr "Kunde inte avgöra vem som är avsändare."
-
-#: ../../include/message.php:143
-msgid "Stored post could not be verified."
-msgstr "Den sparade posten kunde inte verifieras."
-
-#: ../../include/photo/photo_driver.php:643 ../../include/photos.php:51
-#: ../../mod/profile_photo.php:78 ../../mod/profile_photo.php:225
-#: ../../mod/profile_photo.php:336 ../../mod/photos.php:91
-#: ../../mod/photos.php:655 ../../mod/photos.php:677
-msgid "Profile Photos"
-msgstr "Profilfoton"
-
-#: ../../include/attach.php:119 ../../include/attach.php:166
-#: ../../include/attach.php:229 ../../include/attach.php:243
-#: ../../include/attach.php:283 ../../include/attach.php:297
-#: ../../include/attach.php:322 ../../include/attach.php:513
-#: ../../include/attach.php:585 ../../include/chat.php:113
-#: ../../include/photos.php:15 ../../include/items.php:3606
-#: ../../mod/common.php:35 ../../mod/events.php:140 ../../mod/thing.php:247
-#: ../../mod/thing.php:263 ../../mod/thing.php:298 ../../mod/invite.php:13
-#: ../../mod/invite.php:104 ../../mod/mail.php:108 ../../mod/settings.php:492
-#: ../../mod/menu.php:44 ../../mod/webpages.php:40 ../../mod/api.php:26
-#: ../../mod/api.php:31 ../../mod/editpost.php:13 ../../mod/bookmarks.php:46
-#: ../../mod/viewconnections.php:22 ../../mod/viewconnections.php:27
-#: ../../mod/delegate.php:6 ../../mod/pdledit.php:21 ../../mod/item.php:179
-#: ../../mod/item.php:187 ../../mod/item.php:860 ../../mod/mitem.php:73
-#: ../../mod/group.php:9 ../../mod/viewsrc.php:12 ../../mod/setup.php:203
-#: ../../mod/connedit.php:188 ../../mod/layouts.php:27
-#: ../../mod/layouts.php:39 ../../mod/page.php:30 ../../mod/page.php:80
-#: ../../mod/network.php:12 ../../mod/profiles.php:152
-#: ../../mod/profiles.php:453 ../../mod/sources.php:66 ../../mod/blocks.php:29
-#: ../../mod/blocks.php:44 ../../mod/chat.php:89 ../../mod/chat.php:94
-#: ../../mod/new_channel.php:66 ../../mod/new_channel.php:97
-#: ../../mod/achievements.php:27 ../../mod/editblock.php:34
-#: ../../mod/manage.php:6 ../../mod/editlayout.php:48
-#: ../../mod/profile_photo.php:187 ../../mod/profile_photo.php:200
-#: ../../mod/connections.php:169 ../../mod/notifications.php:66
-#: ../../mod/block.php:22 ../../mod/block.php:72 ../../mod/editwebpage.php:44
-#: ../../mod/editwebpage.php:83 ../../mod/profile.php:64
-#: ../../mod/profile.php:72 ../../mod/poke.php:128 ../../mod/channel.php:89
-#: ../../mod/channel.php:193 ../../mod/channel.php:236
-#: ../../mod/fsuggest.php:78 ../../mod/filestorage.php:10
-#: ../../mod/filestorage.php:59 ../../mod/filestorage.php:75
-#: ../../mod/filestorage.php:98 ../../mod/suggest.php:26
-#: ../../mod/message.php:16 ../../mod/register.php:68 ../../mod/regmod.php:18
-#: ../../mod/authtest.php:13 ../../mod/photos.php:68 ../../mod/photos.php:526
-#: ../../mod/mood.php:119 ../../index.php:176 ../../index.php:351
-msgid "Permission denied."
-msgstr "Behörighet saknas."
-
-#: ../../include/attach.php:224 ../../include/attach.php:278
-msgid "Item was not found."
-msgstr "Posten hittades inte."
-
-#: ../../include/attach.php:335
-msgid "No source file."
-msgstr "Ingen källfil."
-
-#: ../../include/attach.php:352
-msgid "Cannot locate file to replace"
-msgstr "Kan inte hitta fil att ersätta"
-
-#: ../../include/attach.php:370
-msgid "Cannot locate file to revise/update"
-msgstr "Kan inte hitta fil att revidera/uppdatera"
-
-#: ../../include/attach.php:381
-#, php-format
-msgid "File exceeds size limit of %d"
-msgstr "Filen överskrider storleksbegränsningen %d"
-
-#: ../../include/attach.php:393
-#, php-format
-msgid "You have reached your limit of %1$.0f Mbytes attachment storage."
-msgstr "Du har nått begränsningen %1$.0f megabyte utrymme för bilagor."
-
-#: ../../include/attach.php:475
-msgid "File upload failed. Possible system limit or action terminated."
-msgstr "Filuppladdning misslyckades. Möjlig systembegränsning eller avbruten åtgärd."
-
-#: ../../include/attach.php:487
-msgid "Stored file could not be verified. Upload failed."
-msgstr "Den lagrade filen kunde inte verifieras. Uppladdning misslyckad."
+#: ../../include/widgets.php:91 ../../include/nav.php:171
+#: ../../mod/apps.php:34
+msgid "Apps"
+msgstr "Appar"
-#: ../../include/attach.php:528 ../../include/attach.php:545
-msgid "Path not available."
-msgstr "Sökväg inte tillgänglig."
+#: ../../include/widgets.php:92
+msgid "System"
+msgstr "System"
-#: ../../include/attach.php:590
-msgid "Empty pathname"
-msgstr "Tom sökväg"
+#: ../../include/widgets.php:95
+msgid "Create Personal App"
+msgstr "Skapa personlig app"
-#: ../../include/attach.php:606
-msgid "duplicate filename or path"
-msgstr "filnamn eller sökväg finns redan"
+#: ../../include/widgets.php:96
+msgid "Edit Personal App"
+msgstr "Redigera personlig app"
-#: ../../include/attach.php:630
-msgid "Path not found."
-msgstr "Sökväg hittas inte."
+#: ../../include/widgets.php:138 ../../mod/suggest.php:53
+msgid "Ignore/Hide"
+msgstr "Ignorera/göm"
-#: ../../include/attach.php:674
-msgid "mkdir failed."
-msgstr "mkdir misslyckades."
+#: ../../include/widgets.php:143 ../../mod/connections.php:267
+msgid "Suggestions"
+msgstr "Förslag"
-#: ../../include/attach.php:678
-msgid "database storage failed."
-msgstr "databaslagring misslyckades."
+#: ../../include/widgets.php:144
+msgid "See more..."
+msgstr "Se fler..."
-#: ../../include/bookmarks.php:42
+#: ../../include/widgets.php:166
#, php-format
-msgid "%1$s's bookmarks"
-msgstr "%1$ss bokmärken"
-
-#: ../../include/acl_selectors.php:238
-msgid "Visible to everybody"
-msgstr "Synlig för alla"
-
-#: ../../include/acl_selectors.php:239
-msgid "Show"
-msgstr "Visa"
-
-#: ../../include/acl_selectors.php:240
-msgid "Don't show"
-msgstr "Visa inte"
-
-#: ../../include/acl_selectors.php:246 ../../mod/chat.php:206
-#: ../../mod/filestorage.php:124 ../../mod/photos.php:606
-#: ../../mod/photos.php:949
-msgid "Permissions"
-msgstr "Behörighet"
-
-#: ../../include/acl_selectors.php:247
-msgid "Close"
-msgstr "Stäng"
-
-#: ../../include/identity.php:30 ../../mod/item.php:1232
-msgid "Unable to obtain identity information from database"
-msgstr "Kunde inte hämta från databasen"
-
-#: ../../include/identity.php:63
-msgid "Empty name"
-msgstr "Tomt namn"
-
-#: ../../include/identity.php:65
-msgid "Name too long"
-msgstr "För långt namn"
-
-#: ../../include/identity.php:166
-msgid "No account identifier"
-msgstr "Ingen kontoidentifierare"
-
-#: ../../include/identity.php:176
-msgid "Nickname is required."
-msgstr "Smeknamn måste anges."
+msgid "You have %1$.0f of %2$.0f allowed connections."
+msgstr "Du har %1$.0f av %2$.0f tillåtna kontakter."
-#: ../../include/identity.php:190
-msgid "Reserved nickname. Please choose another."
-msgstr "Reserverat smeknamn. Välj ett annat."
+#: ../../include/widgets.php:172
+msgid "Add New Connection"
+msgstr "Lägg till ny kontakt"
-#: ../../include/identity.php:195
-msgid ""
-"Nickname has unsupported characters or is already being used on this site."
-msgstr "Smeknamnet innehåller otillåtna tecken eller är redan upptaget på den här servern."
+#: ../../include/widgets.php:173
+msgid "Enter the channel address"
+msgstr "Ange kanaladressen"
-#: ../../include/identity.php:258
-msgid "Unable to retrieve created identity"
-msgstr "Kunde inte hämta den skapade identiteten"
+#: ../../include/widgets.php:174
+msgid "Example: bob@example.com, http://example.com/barbara"
+msgstr "Exempel: bob@example.com, http://example.com/barbara"
-#: ../../include/identity.php:317
-msgid "Default Profile"
-msgstr "Standardprofil"
+#: ../../include/widgets.php:190
+msgid "Notes"
+msgstr "Anteckningar"
-#: ../../include/identity.php:509
-msgid "Requested channel is not available."
-msgstr "Den begärda kanalen är inte tillgänglig"
+#: ../../include/widgets.php:264
+msgid "Remove term"
+msgstr "Ta bort uttryck"
-#: ../../include/identity.php:557 ../../mod/webpages.php:8
-#: ../../mod/connect.php:13 ../../mod/layouts.php:8 ../../mod/blocks.php:10
-#: ../../mod/achievements.php:8 ../../mod/profile.php:16
-#: ../../mod/filestorage.php:40
-msgid "Requested profile is not available."
-msgstr "Begärd profil är inte tillgänglig."
+#: ../../include/widgets.php:347
+msgid "Archives"
+msgstr "Arkiv"
-#: ../../include/identity.php:689 ../../mod/profiles.php:603
-msgid "Change profile photo"
-msgstr "Bytprofilfoto"
+#: ../../include/widgets.php:425
+msgid "Refresh"
+msgstr "Ladda om"
-#: ../../include/identity.php:695
-msgid "Profiles"
-msgstr "Profiler"
+#: ../../include/widgets.php:426 ../../mod/connedit.php:506
+msgid "Me"
+msgstr "Mig själv"
-#: ../../include/identity.php:695
-msgid "Manage/edit profiles"
-msgstr "Hantera/redigera profiler"
+#: ../../include/widgets.php:427 ../../mod/connedit.php:509
+msgid "Best Friends"
+msgstr "Bästa vänner"
-#: ../../include/identity.php:696 ../../mod/profiles.php:604
-msgid "Create New Profile"
-msgstr "Skapa ny profil"
+#: ../../include/widgets.php:429
+msgid "Co-workers"
+msgstr "Kollegor"
-#: ../../include/identity.php:699
-msgid "Edit Profile"
-msgstr "Redigera profil"
+#: ../../include/widgets.php:430 ../../mod/connedit.php:511
+msgid "Former Friends"
+msgstr "Tidigare vänner"
-#: ../../include/identity.php:710 ../../mod/profiles.php:615
-msgid "Profile Image"
-msgstr "Profilbild"
+#: ../../include/widgets.php:431 ../../mod/connedit.php:512
+msgid "Acquaintances"
+msgstr "Bekanta"
-#: ../../include/identity.php:713 ../../mod/profiles.php:618
-msgid "visible to everybody"
-msgstr "synlig för alla"
+#: ../../include/widgets.php:432
+msgid "Everybody"
+msgstr "Alla"
-#: ../../include/identity.php:714 ../../mod/profiles.php:619
-msgid "Edit visibility"
-msgstr "Redigera synlighet"
+#: ../../include/widgets.php:466
+msgid "Account settings"
+msgstr "Kontoinställningar"
-#: ../../include/identity.php:728 ../../include/identity.php:952
-#: ../../mod/directory.php:163
-msgid "Gender:"
-msgstr "Kön:"
+#: ../../include/widgets.php:472
+msgid "Channel settings"
+msgstr "Kanalinställningar"
-#: ../../include/identity.php:729 ../../include/identity.php:972
-#: ../../mod/directory.php:165
-msgid "Status:"
-msgstr "Status:"
+#: ../../include/widgets.php:478
+msgid "Additional features"
+msgstr "Tilläggsfunktioner"
-#: ../../include/identity.php:730 ../../include/identity.php:983
-#: ../../mod/directory.php:167
-msgid "Homepage:"
-msgstr "Hemsida:"
+#: ../../include/widgets.php:484
+msgid "Feature settings"
+msgstr "Funktionsinställningar"
-#: ../../include/identity.php:731 ../../mod/dirprofile.php:157
-msgid "Online Now"
-msgstr "Online nu"
+#: ../../include/widgets.php:490
+msgid "Display settings"
+msgstr "Utseende"
-#: ../../include/identity.php:796 ../../include/identity.php:876
-#: ../../mod/ping.php:262
-msgid "g A l F d"
-msgstr "l j F \\k\\l G"
+#: ../../include/widgets.php:496
+msgid "Connected apps"
+msgstr "Anslutna appar"
-#: ../../include/identity.php:797 ../../include/identity.php:877
-msgid "F d"
-msgstr "j F"
+#: ../../include/widgets.php:502
+msgid "Export channel"
+msgstr "Exportera kanal"
-#: ../../include/identity.php:842 ../../include/identity.php:917
-#: ../../mod/ping.php:284
-msgid "[today]"
-msgstr "[i dag]"
+#: ../../include/widgets.php:511 ../../mod/connedit.php:539
+msgid "Connection Default Permissions"
+msgstr "Standardbehörighet för kontakt"
-#: ../../include/identity.php:854
-msgid "Birthday Reminders"
-msgstr "Födelsedagspåminnelser"
+#: ../../include/widgets.php:519
+msgid "Premium Channel Settings"
+msgstr "Inställningar för premiumkanal"
-#: ../../include/identity.php:855
-msgid "Birthdays this week:"
-msgstr "Födelsedagar den här veckan:"
+#: ../../include/widgets.php:535 ../../include/apps.php:134
+#: ../../include/nav.php:218 ../../mod/admin.php:951 ../../mod/admin.php:1156
+msgid "Settings"
+msgstr "Inställningar"
-#: ../../include/identity.php:910
-msgid "[No description]"
-msgstr "[Ingen beskrivning]"
+#: ../../include/widgets.php:548 ../../mod/mail.php:125
+#: ../../mod/message.php:31
+msgid "Messages"
+msgstr "Meddelanden"
-#: ../../include/identity.php:928
-msgid "Event Reminders"
-msgstr "Händelsepåminnelser"
+#: ../../include/widgets.php:551
+msgid "Check Mail"
+msgstr "Hämta meddelanden"
-#: ../../include/identity.php:929
-msgid "Events this week:"
-msgstr "Händelser den här veckan:"
+#: ../../include/widgets.php:556 ../../include/nav.php:209
+msgid "New Message"
+msgstr "Nytt meddelande"
-#: ../../include/identity.php:942 ../../include/identity.php:1026
-#: ../../mod/profperm.php:107
-msgid "Profile"
-msgstr "Profil"
+#: ../../include/widgets.php:634
+msgid "Chat Rooms"
+msgstr "Chattrum"
-#: ../../include/identity.php:950 ../../mod/settings.php:937
-msgid "Full Name:"
-msgstr "Fullständigt namn:"
+#: ../../include/widgets.php:654
+msgid "Bookmarked Chatrooms"
+msgstr "Bokmärkta chattrum"
-#: ../../include/identity.php:957
-msgid "j F, Y"
-msgstr "j F Y"
+#: ../../include/widgets.php:674
+msgid "Suggested Chatrooms"
+msgstr "Föreslagna chattrum"
-#: ../../include/identity.php:958
-msgid "j F"
-msgstr "j F"
+#: ../../include/widgets.php:801 ../../include/widgets.php:859
+msgid "photo/image"
+msgstr "foto/bild"
-#: ../../include/identity.php:965
-msgid "Birthday:"
-msgstr "Födelsedag:"
+#: ../../include/zot.php:664
+msgid "Invalid data packet"
+msgstr "Ogiltigt datapaket"
-#: ../../include/identity.php:969
-msgid "Age:"
-msgstr "Ã…lder:"
+#: ../../include/zot.php:680
+msgid "Unable to verify channel signature"
+msgstr "Kunde inte bekräfta kanalsignatur"
-#: ../../include/identity.php:978
+#: ../../include/zot.php:1829
#, php-format
-msgid "for %1$d %2$s"
-msgstr "i %1$d %2$s"
-
-#: ../../include/identity.php:981 ../../mod/profiles.php:526
-msgid "Sexual Preference:"
-msgstr "Sexuell preferens:"
-
-#: ../../include/identity.php:985 ../../mod/profiles.php:528
-msgid "Hometown:"
-msgstr "Hemort:"
-
-#: ../../include/identity.php:987
-msgid "Tags:"
-msgstr "Taggar:"
-
-#: ../../include/identity.php:989 ../../mod/profiles.php:529
-msgid "Political Views:"
-msgstr "Politisk åskådning:"
-
-#: ../../include/identity.php:991
-msgid "Religion:"
-msgstr "Religion:"
-
-#: ../../include/identity.php:993 ../../mod/directory.php:169
-msgid "About:"
-msgstr "Om:"
-
-#: ../../include/identity.php:995
-msgid "Hobbies/Interests:"
-msgstr "Fritidssysselsättning/intressen:"
-
-#: ../../include/identity.php:997 ../../mod/profiles.php:532
-msgid "Likes:"
-msgstr "Gillar:"
-
-#: ../../include/identity.php:999 ../../mod/profiles.php:533
-msgid "Dislikes:"
-msgstr "Ogillar:"
-
-#: ../../include/identity.php:1002
-msgid "Contact information and Social Networks:"
-msgstr "Kontaktinformation och sociala nätverk:"
-
-#: ../../include/identity.php:1004
-msgid "My other channels:"
-msgstr "Mina andra kanaler:"
-
-#: ../../include/identity.php:1006
-msgid "Musical interests:"
-msgstr "Musikintressen:"
-
-#: ../../include/identity.php:1008
-msgid "Books, literature:"
-msgstr "Böcker, litteratur:"
-
-#: ../../include/identity.php:1010
-msgid "Television:"
-msgstr "Tv:"
-
-#: ../../include/identity.php:1012
-msgid "Film/dance/culture/entertainment:"
-msgstr "Film/dans/kultur/underhållning:"
-
-#: ../../include/identity.php:1014
-msgid "Love/Romance:"
-msgstr "Kärlek/romantik:"
-
-#: ../../include/identity.php:1016
-msgid "Work/employment:"
-msgstr "Arbete/sysselsättning:"
+msgid "Unable to verify site signature for %s"
+msgstr "Kunde inte bekräfta signatur för servern %s"
-#: ../../include/identity.php:1018
-msgid "School/education:"
-msgstr "Skola/utbildning:"
+#: ../../include/ItemObject.php:130
+msgid "Save to Folder"
+msgstr "Spara i mapp"
-#: ../../include/ItemObject.php:96 ../../include/page_widgets.php:8
-#: ../../include/menu.php:42 ../../mod/thing.php:235
-#: ../../mod/settings.php:577 ../../mod/menu.php:59 ../../mod/webpages.php:119
-#: ../../mod/editpost.php:112 ../../mod/layouts.php:112
-#: ../../mod/blocks.php:94 ../../mod/editblock.php:111
-#: ../../mod/editlayout.php:106 ../../mod/connections.php:391
-#: ../../mod/editwebpage.php:143 ../../mod/filestorage.php:170
-msgid "Edit"
-msgstr "Redigera"
+#: ../../include/ItemObject.php:142 ../../include/ItemObject.php:154
+#: ../../mod/photos.php:1023 ../../mod/photos.php:1035
+msgid "View all"
+msgstr "Visa alla"
-#: ../../include/ItemObject.php:118
-msgid "save to folder"
-msgstr "spara i mapp"
+#: ../../include/ItemObject.php:151 ../../mod/photos.php:1032
+msgctxt "noun"
+msgid "Dislike"
+msgid_plural "Dislikes"
+msgstr[0] "ogillar detta"
+msgstr[1] "ogillar detta"
-#: ../../include/ItemObject.php:146
-msgid "add star"
-msgstr "lägg till märke"
+#: ../../include/ItemObject.php:179
+msgid "Add Star"
+msgstr "Märk"
-#: ../../include/ItemObject.php:147
-msgid "remove star"
-msgstr "ta bort märke"
+#: ../../include/ItemObject.php:180
+msgid "Remove Star"
+msgstr "Ta bort märkning"
-#: ../../include/ItemObject.php:148
-msgid "toggle star status"
-msgstr "växla märke på/av"
+#: ../../include/ItemObject.php:181
+msgid "Toggle Star Status"
+msgstr "Växla märkning"
-#: ../../include/ItemObject.php:152
+#: ../../include/ItemObject.php:185
msgid "starred"
msgstr "märkt"
-#: ../../include/ItemObject.php:169
-msgid "add tag"
-msgstr "lägg till tagg"
+#: ../../include/ItemObject.php:203
+msgid "Add Tag"
+msgstr "Lägg till en tagg"
-#: ../../include/ItemObject.php:184 ../../mod/photos.php:971
+#: ../../include/ItemObject.php:221 ../../mod/photos.php:975
msgid "I like this (toggle)"
msgstr "Jag gillar det här (växla)"
-#: ../../include/ItemObject.php:184 ../../include/taxonomy.php:254
-msgid "like"
-msgstr "gilla"
-
-#: ../../include/ItemObject.php:185 ../../mod/photos.php:972
+#: ../../include/ItemObject.php:222 ../../mod/photos.php:976
msgid "I don't like this (toggle)"
msgstr "Jag gillar inte det här (växla)"
-#: ../../include/ItemObject.php:185 ../../include/taxonomy.php:255
-msgid "dislike"
-msgstr "ogilla"
-
-#: ../../include/ItemObject.php:187
-msgid "Share this"
+#: ../../include/ItemObject.php:226
+msgid "Share This"
msgstr "Dela det här"
-#: ../../include/ItemObject.php:187
+#: ../../include/ItemObject.php:226
msgid "share"
msgstr "dela"
-#: ../../include/ItemObject.php:211 ../../include/ItemObject.php:212
+#: ../../include/ItemObject.php:243
+#, php-format
+msgid "%d comment"
+msgid_plural "%d comments"
+msgstr[0] "%d kommentar"
+msgstr[1] "%d kommentarer"
+
+#: ../../include/ItemObject.php:256 ../../include/ItemObject.php:257
#, php-format
msgid "View %s's profile - %s"
msgstr "Visa %ss profil - %s"
-#: ../../include/ItemObject.php:213
+#: ../../include/ItemObject.php:260
msgid "to"
msgstr "till"
-#: ../../include/ItemObject.php:214
+#: ../../include/ItemObject.php:261
msgid "via"
msgstr "via"
-#: ../../include/ItemObject.php:215
+#: ../../include/ItemObject.php:262
msgid "Wall-to-Wall"
msgstr "Vägg-till-vägg"
-#: ../../include/ItemObject.php:216
+#: ../../include/ItemObject.php:263
msgid "via Wall-To-Wall:"
msgstr "via vägg-till-vägg"
-#: ../../include/ItemObject.php:250
-msgid "Bookmark Links"
-msgstr "Bokmärk länkar"
+#: ../../include/ItemObject.php:299
+msgid "Save Bookmarks"
+msgstr "Spara bokmärken"
-#: ../../include/ItemObject.php:280
-#, php-format
-msgid "%d comment"
-msgid_plural "%d comments"
-msgstr[0] "%d kommentar"
-msgstr[1] "%d kommentarer"
+#: ../../include/ItemObject.php:300
+msgid "Add to Calendar"
+msgstr "Lägg till kalendern"
+
+#: ../../include/ItemObject.php:309
+msgid "Mark all seen"
+msgstr "Märk alla som lästa"
-#: ../../include/ItemObject.php:545 ../../mod/photos.php:990
-#: ../../mod/photos.php:1077
+#: ../../include/ItemObject.php:314 ../../mod/photos.php:1143
+msgctxt "noun"
+msgid "Likes"
+msgstr "gillar detta"
+
+#: ../../include/ItemObject.php:315 ../../mod/photos.php:1144
+msgctxt "noun"
+msgid "Dislikes"
+msgstr "ogillar detta"
+
+#: ../../include/ItemObject.php:345 ../../include/js_strings.php:7
+msgid "[+] show all"
+msgstr "[+] visa alla"
+
+#: ../../include/ItemObject.php:626 ../../mod/photos.php:994
+#: ../../mod/photos.php:1104
msgid "This is you"
msgstr "Det här är du"
-#: ../../include/ItemObject.php:548 ../../mod/events.php:472
-#: ../../mod/thing.php:283 ../../mod/thing.php:326 ../../mod/invite.php:156
-#: ../../mod/mail.php:223 ../../mod/mail.php:335 ../../mod/settings.php:515
-#: ../../mod/settings.php:627 ../../mod/settings.php:655
-#: ../../mod/settings.php:679 ../../mod/settings.php:751
-#: ../../mod/settings.php:929 ../../mod/connect.php:92
-#: ../../mod/pdledit.php:58 ../../mod/group.php:81 ../../mod/admin.php:441
-#: ../../mod/admin.php:750 ../../mod/admin.php:884 ../../mod/admin.php:1017
-#: ../../mod/admin.php:1216 ../../mod/admin.php:1303 ../../mod/setup.php:307
-#: ../../mod/setup.php:350 ../../mod/connedit.php:443
-#: ../../mod/profiles.php:506 ../../mod/sources.php:104
-#: ../../mod/sources.php:138 ../../mod/chat.php:175 ../../mod/chat.php:208
-#: ../../mod/import.php:387 ../../mod/poke.php:166 ../../mod/fsuggest.php:108
-#: ../../mod/filestorage.php:131 ../../mod/photos.php:565
-#: ../../mod/photos.php:670 ../../mod/photos.php:953 ../../mod/photos.php:993
-#: ../../mod/photos.php:1080 ../../mod/mood.php:142
-#: ../../view/theme/redbasic/php/config.php:95
-#: ../../view/theme/apw/php/config.php:256
-#: ../../view/theme/blogga/view/theme/blog/config.php:67
-#: ../../view/theme/blogga/php/config.php:67
+#: ../../include/ItemObject.php:628 ../../include/js_strings.php:6
+#: ../../mod/photos.php:996 ../../mod/photos.php:1106
+msgid "Comment"
+msgstr "Kommentera"
+
+#: ../../include/ItemObject.php:629 ../../mod/mood.php:135
+#: ../../mod/settings.php:565 ../../mod/settings.php:677
+#: ../../mod/settings.php:706 ../../mod/settings.php:730
+#: ../../mod/settings.php:812 ../../mod/settings.php:1004
+#: ../../mod/group.php:81 ../../mod/poke.php:166 ../../mod/setup.php:313
+#: ../../mod/setup.php:358 ../../mod/sources.php:104 ../../mod/sources.php:138
+#: ../../mod/events.php:598 ../../mod/chat.php:177 ../../mod/chat.php:211
+#: ../../mod/connedit.php:556 ../../mod/mail.php:352 ../../mod/photos.php:594
+#: ../../mod/photos.php:671 ../../mod/photos.php:957 ../../mod/photos.php:997
+#: ../../mod/photos.php:1107 ../../mod/pdledit.php:58 ../../mod/thing.php:284
+#: ../../mod/thing.php:327 ../../mod/fsuggest.php:108
+#: ../../mod/filestorage.php:146 ../../mod/connect.php:93
+#: ../../mod/locs.php:99 ../../mod/import.php:504 ../../mod/profiles.php:633
+#: ../../mod/admin.php:412 ../../mod/admin.php:723 ../../mod/admin.php:859
+#: ../../mod/admin.php:992 ../../mod/admin.php:1191 ../../mod/admin.php:1278
+#: ../../mod/invite.php:142 ../../mod/xchan.php:11 ../../mod/appman.php:99
+#: ../../mod/poll.php:68 ../../view/theme/apw/php/config.php:256
+#: ../../view/theme/redbasic/php/config.php:99
msgid "Submit"
msgstr "Skicka"
-#: ../../include/ItemObject.php:549
+#: ../../include/ItemObject.php:630
msgid "Bold"
msgstr "Fet"
-#: ../../include/ItemObject.php:550
+#: ../../include/ItemObject.php:631
msgid "Italic"
msgstr "Kursiv"
-#: ../../include/ItemObject.php:551
+#: ../../include/ItemObject.php:632
msgid "Underline"
msgstr "Understruken"
-#: ../../include/ItemObject.php:552
+#: ../../include/ItemObject.php:633
msgid "Quote"
msgstr "Citat"
-#: ../../include/ItemObject.php:553
+#: ../../include/ItemObject.php:634
msgid "Code"
msgstr "Kod"
-#: ../../include/ItemObject.php:554
+#: ../../include/ItemObject.php:635
msgid "Image"
msgstr "Bild"
-#: ../../include/ItemObject.php:555
+#: ../../include/ItemObject.php:636
msgid "Link"
msgstr "Länk"
-#: ../../include/ItemObject.php:556
+#: ../../include/ItemObject.php:637
msgid "Video"
msgstr "Video"
-#: ../../include/reddav.php:1069
-msgid "Edit File properties"
-msgstr "Redigera filegenskaper"
-
-#: ../../include/network.php:652
-msgid "view full size"
-msgstr "visa full storlek"
-
-#: ../../include/text.php:320
-msgid "prev"
-msgstr "föregående"
-
-#: ../../include/text.php:322
-msgid "first"
-msgstr "första"
+#: ../../include/datetime.php:43 ../../include/datetime.php:45
+msgid "Miscellaneous"
+msgstr "Övrigt"
-#: ../../include/text.php:351
-msgid "last"
-msgstr "sista"
+#: ../../include/datetime.php:142
+msgid "YYYY-MM-DD or MM-DD"
+msgstr "Ã…Ã…Ã…Ã…-MM-DD eller MM-DD"
-#: ../../include/text.php:354
-msgid "next"
-msgstr "nästa"
+#: ../../include/datetime.php:259
+msgid "never"
+msgstr "aldrig"
-#: ../../include/text.php:366
-msgid "older"
-msgstr "äldre"
+#: ../../include/datetime.php:265
+msgid "less than a second ago"
+msgstr "mindre än en sekund sedan"
-#: ../../include/text.php:368
-msgid "newer"
-msgstr "nyare"
+#: ../../include/datetime.php:268
+msgid "year"
+msgstr "Ã¥r"
-#: ../../include/text.php:719
-msgid "No connections"
-msgstr "Inga kontakter"
+#: ../../include/datetime.php:268
+msgid "years"
+msgstr "Ã¥r"
-#: ../../include/text.php:732
-#, php-format
-msgid "%d Connection"
-msgid_plural "%d Connections"
-msgstr[0] "%d kontakt"
-msgstr[1] "%d kontakter"
+#: ../../include/datetime.php:269
+msgid "month"
+msgstr "månad"
-#: ../../include/text.php:744
-msgid "View Connections"
-msgstr "Visa kontakter"
+#: ../../include/datetime.php:269
+msgid "months"
+msgstr "månader"
-#: ../../include/text.php:885
-msgid "poke"
-msgstr "puffa"
+#: ../../include/datetime.php:270
+msgid "week"
+msgstr "vecka"
-#: ../../include/text.php:886
-msgid "ping"
-msgstr "pinga"
+#: ../../include/datetime.php:270
+msgid "weeks"
+msgstr "veckor"
-#: ../../include/text.php:886
-msgid "pinged"
-msgstr "pingade"
+#: ../../include/datetime.php:271
+msgid "day"
+msgstr "dag"
-#: ../../include/text.php:887
-msgid "prod"
-msgstr "stöt till"
+#: ../../include/datetime.php:271
+msgid "days"
+msgstr "dagar"
-#: ../../include/text.php:887
-msgid "prodded"
-msgstr "stötte till"
+#: ../../include/datetime.php:272
+msgid "hour"
+msgstr "timme"
-#: ../../include/text.php:888
-msgid "slap"
-msgstr "daska till"
+#: ../../include/datetime.php:272
+msgid "hours"
+msgstr "timmar"
-#: ../../include/text.php:888
-msgid "slapped"
-msgstr "daskade till"
+#: ../../include/datetime.php:273
+msgid "minute"
+msgstr "minut"
-#: ../../include/text.php:889
-msgid "finger"
-msgstr "fingra på"
+#: ../../include/datetime.php:273
+msgid "minutes"
+msgstr "minuter"
-#: ../../include/text.php:889
-msgid "fingered"
-msgstr "fingrade på"
+#: ../../include/datetime.php:274
+msgid "second"
+msgstr "sekund"
-#: ../../include/text.php:890
-msgid "rebuff"
-msgstr "stöt tillbaka"
+#: ../../include/datetime.php:274
+msgid "seconds"
+msgstr "sekunder"
-#: ../../include/text.php:890
-msgid "rebuffed"
-msgstr "stötte tillbaks"
+#: ../../include/datetime.php:283
+#, php-format
+msgid "%1$d %2$s ago"
+msgstr "%1$d %2$s sedan"
-#: ../../include/text.php:902
-msgid "happy"
-msgstr "glad"
+#: ../../include/datetime.php:491
+#, php-format
+msgid "%1$s's birthday"
+msgstr "%1$ss födelsedag"
-#: ../../include/text.php:903
-msgid "sad"
-msgstr "ledsen"
+#: ../../include/datetime.php:492
+#, php-format
+msgid "Happy Birthday %1$s"
+msgstr "Grattis på födelsedagen %1$s"
-#: ../../include/text.php:904
-msgid "mellow"
-msgstr "lugn"
+#: ../../include/apps.php:128
+msgid "Site Admin"
+msgstr "Serveradministrator"
-#: ../../include/text.php:905
-msgid "tired"
-msgstr "trött"
+#: ../../include/apps.php:130
+msgid "Address Book"
+msgstr "Adressbok"
-#: ../../include/text.php:906
-msgid "perky"
-msgstr "uppåt"
+#: ../../include/apps.php:131 ../../include/nav.php:125 ../../boot.php:1540
+msgid "Login"
+msgstr "Logga in"
-#: ../../include/text.php:907
-msgid "angry"
-msgstr "arg"
+#: ../../include/apps.php:132 ../../include/nav.php:216
+#: ../../mod/manage.php:148
+msgid "Channel Manager"
+msgstr "Kanalhanterare"
-#: ../../include/text.php:908
-msgid "stupified"
-msgstr "virrig"
+#: ../../include/apps.php:133 ../../include/nav.php:190
+msgid "Matrix"
+msgstr "Matris"
-#: ../../include/text.php:909
-msgid "puzzled"
-msgstr "förbryllad"
+#: ../../include/apps.php:137 ../../include/nav.php:193
+msgid "Channel Home"
+msgstr "Kanalhem"
-#: ../../include/text.php:910
-msgid "interested"
-msgstr "intresserad"
+#: ../../include/apps.php:140 ../../include/nav.php:212
+#: ../../mod/events.php:442
+msgid "Events"
+msgstr "Händelser"
-#: ../../include/text.php:911
-msgid "bitter"
-msgstr "bitter"
+#: ../../include/apps.php:141 ../../include/nav.php:176
+#: ../../mod/directory.php:321
+msgid "Directory"
+msgstr "Katalog"
-#: ../../include/text.php:912
-msgid "cheerful"
-msgstr "munter"
+#: ../../include/apps.php:142 ../../include/nav.php:168 ../../mod/help.php:58
+#: ../../mod/help.php:63
+msgid "Help"
+msgstr "Hjälp"
-#: ../../include/text.php:913
-msgid "alive"
-msgstr "pigg"
+#: ../../include/apps.php:143 ../../include/nav.php:204
+msgid "Mail"
+msgstr "Privat meddelande"
-#: ../../include/text.php:914
-msgid "annoyed"
-msgstr "irriterad"
+#: ../../include/apps.php:144 ../../mod/mood.php:131
+msgid "Mood"
+msgstr "Sinnesstämning"
-#: ../../include/text.php:915
-msgid "anxious"
-msgstr "bekymrad"
+#: ../../include/apps.php:146 ../../include/nav.php:111
+msgid "Chat"
+msgstr "Chatt"
-#: ../../include/text.php:916
-msgid "cranky"
-msgstr "grinig"
+#: ../../include/apps.php:148
+msgid "Probe"
+msgstr "Sond"
-#: ../../include/text.php:917
-msgid "disturbed"
-msgstr "besvärad"
+#: ../../include/apps.php:149
+msgid "Suggest"
+msgstr "Föreslå"
-#: ../../include/text.php:918
-msgid "frustrated"
-msgstr "frustrerad"
+#: ../../include/apps.php:150
+msgid "Random Channel"
+msgstr "Slumpvald kanal"
-#: ../../include/text.php:919
-msgid "motivated"
-msgstr "motiverad"
+#: ../../include/apps.php:151
+msgid "Invite"
+msgstr "Bjud in"
-#: ../../include/text.php:920
-msgid "relaxed"
-msgstr "avslappnad"
+#: ../../include/apps.php:152
+msgid "Features"
+msgstr "Funktioner"
-#: ../../include/text.php:921
-msgid "surprised"
-msgstr "förvånad"
+#: ../../include/apps.php:153
+msgid "Language"
+msgstr "Språk"
-#: ../../include/text.php:1082
-msgid "Monday"
-msgstr "måndag"
+#: ../../include/apps.php:154
+msgid "Post"
+msgstr "Inlägg"
-#: ../../include/text.php:1082
-msgid "Tuesday"
-msgstr "tisdag"
+#: ../../include/apps.php:155
+msgid "Profile Photo"
+msgstr "Profilfoto"
-#: ../../include/text.php:1082
-msgid "Wednesday"
-msgstr "onsdag"
+#: ../../include/apps.php:247 ../../mod/settings.php:81
+#: ../../mod/settings.php:591
+msgid "Update"
+msgstr "Uppdatera"
-#: ../../include/text.php:1082
-msgid "Thursday"
-msgstr "torsdag"
+#: ../../include/apps.php:247
+msgid "Install"
+msgstr "Installera"
-#: ../../include/text.php:1082
-msgid "Friday"
-msgstr "fredag"
+#: ../../include/apps.php:252
+msgid "Purchase"
+msgstr "Köp"
-#: ../../include/text.php:1082
-msgid "Saturday"
-msgstr "lördag"
+#: ../../include/Contact.php:123
+msgid "New window"
+msgstr "Nytt fönster"
-#: ../../include/text.php:1082
-msgid "Sunday"
-msgstr "söndag"
+#: ../../include/Contact.php:124
+msgid "Open the selected location in a different window or browser tab"
+msgstr "Öppna den valda platsen i ett annat fönster eller en annan webbläsarflik"
-#: ../../include/text.php:1086
-msgid "January"
-msgstr "januari"
+#: ../../include/Contact.php:214 ../../mod/admin.php:646
+#, php-format
+msgid "User '%s' deleted"
+msgstr "Användare '%s' borttagen"
-#: ../../include/text.php:1086
-msgid "February"
-msgstr "februari"
+#: ../../include/js_strings.php:5
+msgid "Delete this item?"
+msgstr "Ta bort den här posten?"
-#: ../../include/text.php:1086
-msgid "March"
-msgstr "mars"
+#: ../../include/js_strings.php:8
+msgid "[-] show less"
+msgstr "[-] visa färre"
-#: ../../include/text.php:1086
-msgid "April"
-msgstr "april"
+#: ../../include/js_strings.php:9
+msgid "[+] expand"
+msgstr "[+] fäll ut"
-#: ../../include/text.php:1086
-msgid "May"
-msgstr "maj"
+#: ../../include/js_strings.php:10
+msgid "[-] collapse"
+msgstr "[-] fäll ihop"
-#: ../../include/text.php:1086
-msgid "June"
-msgstr "juni"
+#: ../../include/js_strings.php:11
+msgid "Password too short"
+msgstr "Lösenord för kort"
-#: ../../include/text.php:1086
-msgid "July"
-msgstr "juli"
+#: ../../include/js_strings.php:12
+msgid "Passwords do not match"
+msgstr "Lösenorden stämmer inte överens"
-#: ../../include/text.php:1086
-msgid "August"
-msgstr "augusti"
+#: ../../include/js_strings.php:13 ../../mod/photos.php:39
+msgid "everybody"
+msgstr "alla"
-#: ../../include/text.php:1086
-msgid "September"
-msgstr "september"
+#: ../../include/js_strings.php:14
+msgid "Secret Passphrase"
+msgstr "Hemligt lösenord"
-#: ../../include/text.php:1086
-msgid "October"
-msgstr "oktober"
+#: ../../include/js_strings.php:15
+msgid "Passphrase hint"
+msgstr "Lösenordsledtråd"
-#: ../../include/text.php:1086
-msgid "November"
-msgstr "november"
+#: ../../include/js_strings.php:16
+msgid "Notice: Permissions have changed but have not yet been submitted."
+msgstr "Observera: Rättigheter har ändrats men har ännu inte skickats in"
-#: ../../include/text.php:1086
-msgid "December"
-msgstr "december"
+#: ../../include/js_strings.php:17
+msgid "close all"
+msgstr "stäng alla"
-#: ../../include/text.php:1164
-msgid "unknown.???"
-msgstr "okänt.???"
+#: ../../include/js_strings.php:18
+msgid "Nothing new here"
+msgstr "Inget nytt här"
-#: ../../include/text.php:1165
-msgid "bytes"
-msgstr "byte"
+#: ../../include/js_strings.php:20
+msgid "timeago.prefixAgo"
+msgstr "för"
-#: ../../include/text.php:1200
-msgid "remove category"
-msgstr "ta bort kategori"
+#: ../../include/js_strings.php:21
+msgid "timeago.prefixFromNow"
+msgstr "om"
-#: ../../include/text.php:1249
-msgid "remove from file"
-msgstr "ta bort från fil"
+#: ../../include/js_strings.php:22
+msgid "ago"
+msgstr "sedan"
-#: ../../include/text.php:1310 ../../include/text.php:1322
-msgid "Click to open/close"
-msgstr "Klicka för att öppna/stänga"
+#: ../../include/js_strings.php:23
+msgid "from now"
+msgstr " "
-#: ../../include/text.php:1477 ../../mod/events.php:335
-msgid "link to source"
-msgstr "länk till källa"
+#: ../../include/js_strings.php:24
+msgid "less than a minute"
+msgstr "mindre än en minut"
-#: ../../include/text.php:1496
-msgid "Select a page layout: "
-msgstr "Välj en sidlayout: "
+#: ../../include/js_strings.php:25
+msgid "about a minute"
+msgstr "ungefär en minut"
-#: ../../include/text.php:1499 ../../include/text.php:1564
-msgid "default"
-msgstr "standard"
+#: ../../include/js_strings.php:26
+#, php-format
+msgid "%d minutes"
+msgstr "%d minuter"
-#: ../../include/text.php:1535
-msgid "Page content type: "
-msgstr "Typ av sidinnehåll: "
+#: ../../include/js_strings.php:27
+msgid "about an hour"
+msgstr "ungefär en timme"
-#: ../../include/text.php:1576
-msgid "Select an alternate language"
-msgstr "Välj ett alternativt språk"
+#: ../../include/js_strings.php:28
+#, php-format
+msgid "about %d hours"
+msgstr "ungefär %d timmar"
-#: ../../include/text.php:1710
-msgid "activity"
-msgstr "aktivitet"
+#: ../../include/js_strings.php:29
+msgid "a day"
+msgstr "en dag"
-#: ../../include/text.php:1969
-msgid "Design"
-msgstr "Design"
+#: ../../include/js_strings.php:30
+#, php-format
+msgid "%d days"
+msgstr "%d dagar"
-#: ../../include/text.php:1971
-msgid "Blocks"
-msgstr "Block"
+#: ../../include/js_strings.php:31
+msgid "about a month"
+msgstr "ungefär en månad"
-#: ../../include/text.php:1972
-msgid "Menus"
-msgstr "Menyer"
+#: ../../include/js_strings.php:32
+#, php-format
+msgid "%d months"
+msgstr "%d månader"
-#: ../../include/text.php:1973
-msgid "Layouts"
-msgstr "Layouter"
+#: ../../include/js_strings.php:33
+msgid "about a year"
+msgstr "ungefär ett år"
-#: ../../include/text.php:1974
-msgid "Pages"
-msgstr "Sidor"
+#: ../../include/js_strings.php:34
+#, php-format
+msgid "%d years"
+msgstr "%d år"
-#: ../../include/notify.php:23
-msgid "created a new post"
-msgstr "skapade ett nytt inlägg"
+#: ../../include/js_strings.php:35
+msgid " "
+msgstr " "
-#: ../../include/notify.php:24
-#, php-format
-msgid "commented on %s's post"
-msgstr "kommenterade %ss inlägg"
+#: ../../include/js_strings.php:36
+msgid "timeago.numbers"
+msgstr "timeago.numbers"
#: ../../include/profile_selectors.php:6
+#: ../../include/profile_selectors.php:23
msgid "Male"
msgstr "Man"
#: ../../include/profile_selectors.php:6
+#: ../../include/profile_selectors.php:23
msgid "Female"
msgstr "Kvinna"
@@ -2449,2086 +3281,1189 @@ msgid "Non-specific"
msgstr "Ospecificerat"
#: ../../include/profile_selectors.php:6
-msgid "Other"
-msgstr "Annat"
-
-#: ../../include/profile_selectors.php:6
msgid "Undecided"
msgstr "Obestämt"
-#: ../../include/profile_selectors.php:23
+#: ../../include/profile_selectors.php:42
+#: ../../include/profile_selectors.php:61
msgid "Males"
msgstr "Män"
-#: ../../include/profile_selectors.php:23
+#: ../../include/profile_selectors.php:42
+#: ../../include/profile_selectors.php:61
msgid "Females"
msgstr "Kvinnor"
-#: ../../include/profile_selectors.php:23
+#: ../../include/profile_selectors.php:42
msgid "Gay"
msgstr "Bög"
-#: ../../include/profile_selectors.php:23
+#: ../../include/profile_selectors.php:42
msgid "Lesbian"
msgstr "Lesbisk"
-#: ../../include/profile_selectors.php:23
+#: ../../include/profile_selectors.php:42
msgid "No Preference"
msgstr "Ingen preferens"
-#: ../../include/profile_selectors.php:23
+#: ../../include/profile_selectors.php:42
msgid "Bisexual"
msgstr "Bisexuell"
-#: ../../include/profile_selectors.php:23
+#: ../../include/profile_selectors.php:42
msgid "Autosexual"
msgstr "Autosexuell"
-#: ../../include/profile_selectors.php:23
+#: ../../include/profile_selectors.php:42
msgid "Abstinent"
msgstr "Avhållsam"
-#: ../../include/profile_selectors.php:23
+#: ../../include/profile_selectors.php:42
msgid "Virgin"
msgstr "Oskuld"
-#: ../../include/profile_selectors.php:23
+#: ../../include/profile_selectors.php:42
msgid "Deviant"
msgstr "Avvikande"
-#: ../../include/profile_selectors.php:23
+#: ../../include/profile_selectors.php:42
msgid "Fetish"
msgstr "Fetisch"
-#: ../../include/profile_selectors.php:23
+#: ../../include/profile_selectors.php:42
msgid "Oodles"
msgstr "Massor"
-#: ../../include/profile_selectors.php:23
+#: ../../include/profile_selectors.php:42
msgid "Nonsexual"
msgstr "Ickesexuell"
-#: ../../include/profile_selectors.php:42
+#: ../../include/profile_selectors.php:80
+#: ../../include/profile_selectors.php:97
msgid "Single"
msgstr "Singel"
-#: ../../include/profile_selectors.php:42
+#: ../../include/profile_selectors.php:80
msgid "Lonely"
msgstr "Ensam"
-#: ../../include/profile_selectors.php:42
+#: ../../include/profile_selectors.php:80
msgid "Available"
msgstr "Ledig"
-#: ../../include/profile_selectors.php:42
+#: ../../include/profile_selectors.php:80
msgid "Unavailable"
msgstr "Upptagen"
-#: ../../include/profile_selectors.php:42
+#: ../../include/profile_selectors.php:80
msgid "Has crush"
msgstr "Förälskad"
-#: ../../include/profile_selectors.php:42
+#: ../../include/profile_selectors.php:80
msgid "Infatuated"
msgstr "Förtrollad"
-#: ../../include/profile_selectors.php:42
+#: ../../include/profile_selectors.php:80
+#: ../../include/profile_selectors.php:97
msgid "Dating"
msgstr "Dejtar"
-#: ../../include/profile_selectors.php:42
+#: ../../include/profile_selectors.php:80
msgid "Unfaithful"
msgstr "Otrogen"
-#: ../../include/profile_selectors.php:42
+#: ../../include/profile_selectors.php:80
msgid "Sex Addict"
msgstr "Sexmissbrukare"
-#: ../../include/profile_selectors.php:42
+#: ../../include/profile_selectors.php:80
msgid "Friends/Benefits"
msgstr "Kompisförhållande"
-#: ../../include/profile_selectors.php:42
+#: ../../include/profile_selectors.php:80
msgid "Casual"
msgstr "Vardaglig"
-#: ../../include/profile_selectors.php:42
+#: ../../include/profile_selectors.php:80
msgid "Engaged"
msgstr "Förlovad"
-#: ../../include/profile_selectors.php:42
+#: ../../include/profile_selectors.php:80
+#: ../../include/profile_selectors.php:97
msgid "Married"
msgstr "Gift"
-#: ../../include/profile_selectors.php:42
+#: ../../include/profile_selectors.php:80
msgid "Imaginarily married"
msgstr "Inbillat gift"
-#: ../../include/profile_selectors.php:42
+#: ../../include/profile_selectors.php:80
msgid "Partners"
msgstr "Partner"
-#: ../../include/profile_selectors.php:42
+#: ../../include/profile_selectors.php:80
+#: ../../include/profile_selectors.php:97
msgid "Cohabiting"
msgstr "Bor ihop"
-#: ../../include/profile_selectors.php:42
+#: ../../include/profile_selectors.php:80
msgid "Common law"
msgstr "Sambo"
-#: ../../include/profile_selectors.php:42
+#: ../../include/profile_selectors.php:80
msgid "Happy"
msgstr "Lycklig"
-#: ../../include/profile_selectors.php:42
+#: ../../include/profile_selectors.php:80
msgid "Not looking"
msgstr "Letar inte"
-#: ../../include/profile_selectors.php:42
+#: ../../include/profile_selectors.php:80
msgid "Swinger"
msgstr "Swinger"
-#: ../../include/profile_selectors.php:42
+#: ../../include/profile_selectors.php:80
msgid "Betrayed"
msgstr "Bedragen"
-#: ../../include/profile_selectors.php:42
+#: ../../include/profile_selectors.php:80
+#: ../../include/profile_selectors.php:97
msgid "Separated"
msgstr "Separerad"
-#: ../../include/profile_selectors.php:42
+#: ../../include/profile_selectors.php:80
msgid "Unstable"
msgstr "Instabilt"
-#: ../../include/profile_selectors.php:42
+#: ../../include/profile_selectors.php:80
+#: ../../include/profile_selectors.php:97
msgid "Divorced"
msgstr "Skild"
-#: ../../include/profile_selectors.php:42
+#: ../../include/profile_selectors.php:80
msgid "Imaginarily divorced"
msgstr "Inbillat skild"
-#: ../../include/profile_selectors.php:42
+#: ../../include/profile_selectors.php:80
+#: ../../include/profile_selectors.php:97
msgid "Widowed"
msgstr "Änka"
-#: ../../include/profile_selectors.php:42
+#: ../../include/profile_selectors.php:80
msgid "Uncertain"
msgstr "Osäkert"
-#: ../../include/profile_selectors.php:42
+#: ../../include/profile_selectors.php:80
+#: ../../include/profile_selectors.php:97
msgid "It's complicated"
msgstr "Det är komplicerat"
-#: ../../include/profile_selectors.php:42
+#: ../../include/profile_selectors.php:80
msgid "Don't care"
msgstr "Bryr mig inte"
-#: ../../include/profile_selectors.php:42
+#: ../../include/profile_selectors.php:80
msgid "Ask me"
msgstr "Fråga mig"
-#: ../../include/chat.php:10
-msgid "Missing room name"
-msgstr "Rumsnamn saknas"
-
-#: ../../include/chat.php:19
-msgid "Duplicate room name"
-msgstr "Rumsnamnet finns redan"
-
-#: ../../include/chat.php:68 ../../include/chat.php:76
-msgid "Invalid room specifier."
-msgstr "Ogiltig rumsbeskrivning."
-
-#: ../../include/chat.php:102
-msgid "Room not found."
-msgstr "Rummet hittades inte."
-
-#: ../../include/chat.php:123
-msgid "Room is full"
-msgstr "Rummet är fullt"
-
-#: ../../include/comanche.php:35 ../../view/theme/redbasic/php/config.php:80
-#: ../../view/theme/apw/php/config.php:185
-msgid "Default"
-msgstr "Standard"
-
-#: ../../include/taxonomy.php:210
-msgid "Tags"
-msgstr "Taggar"
-
-#: ../../include/taxonomy.php:227
-msgid "Keywords"
-msgstr "Nyckelord"
-
-#: ../../include/taxonomy.php:252
-msgid "have"
-msgstr "har"
-
-#: ../../include/taxonomy.php:252
-msgid "has"
-msgstr "har"
-
-#: ../../include/taxonomy.php:253
-msgid "want"
-msgstr "vill ha"
-
-#: ../../include/taxonomy.php:253
-msgid "wants"
-msgstr "vill ha"
-
-#: ../../include/taxonomy.php:254
-msgid "likes"
-msgstr "gillar"
-
-#: ../../include/taxonomy.php:255
-msgid "dislikes"
-msgstr "ogillar"
-
-#: ../../include/auth.php:79
-msgid "Logged out."
-msgstr "Utloggad."
-
-#: ../../include/auth.php:197
-msgid "Failed authentication"
-msgstr "Autentisering misslyckades"
-
-#: ../../include/auth.php:212 ../../mod/openid.php:188
-msgid "Login failed."
-msgstr "Inloggning misslyckades."
-
-#: ../../include/account.php:23
-msgid "Not a valid email address"
-msgstr "Inte en giltig e-postadress"
-
-#: ../../include/account.php:25
-msgid "Your email domain is not among those allowed on this site"
-msgstr "Din e-postdomän är inte bland de som tillåts på den här servern"
-
-#: ../../include/account.php:31
-msgid "Your email address is already registered at this site."
-msgstr "Din e-postadress är redan registrerad på den här servern."
-
-#: ../../include/account.php:64
-msgid "An invitation is required."
-msgstr "En inbjudan behövs."
-
-#: ../../include/account.php:68
-msgid "Invitation could not be verified."
-msgstr "Inbjudningen kunde inte bekräftas."
-
-#: ../../include/account.php:119
-msgid "Please enter the required information."
-msgstr "Ange den begärda informationen."
-
-#: ../../include/account.php:187
-msgid "Failed to store account information."
-msgstr "Misslyckades att spara kontoinformation."
-
-#: ../../include/account.php:273
-#, php-format
-msgid "Registration request at %s"
-msgstr "Registreringsförfrågan på %s"
-
-#: ../../include/account.php:275 ../../include/account.php:302
-#: ../../include/account.php:359
-msgid "Administrator"
-msgstr "Administratör"
-
-#: ../../include/account.php:297
-msgid "your registration password"
-msgstr "ditt registreringslösenord"
-
-#: ../../include/account.php:300 ../../include/account.php:357
-#, php-format
-msgid "Registration details for %s"
-msgstr "Registreringsdetaljer för %s"
-
-#: ../../include/account.php:366
-msgid "Account approved."
-msgstr "Konto godkänt."
-
-#: ../../include/account.php:400
-#, php-format
-msgid "Registration revoked for %s"
-msgstr "Registrering avslagen för %s"
-
-#: ../../include/dir_fns.php:15
-msgid "Sort Options"
-msgstr "Sorteringsalternativ"
-
-#: ../../include/dir_fns.php:16
-msgid "Alphabetic"
-msgstr "Alfabetisk"
-
-#: ../../include/dir_fns.php:17
-msgid "Reverse Alphabetic"
-msgstr "Omvänd alfabetisk"
-
-#: ../../include/dir_fns.php:18
-msgid "Newest to Oldest"
-msgstr "Nyast till äldst"
-
-#: ../../include/dir_fns.php:30
-msgid "Enable Safe Search"
-msgstr "Aktivera säker sökning"
-
-#: ../../include/dir_fns.php:32
-msgid "Disable Safe Search"
-msgstr "Avaktivera säker sökning"
-
-#: ../../include/dir_fns.php:34
-msgid "Safe Mode"
-msgstr "Säkert läge"
-
-#: ../../include/enotify.php:41
-msgid "Red Matrix Notification"
-msgstr "Red Matrix-meddelande"
-
-#: ../../include/enotify.php:42
-msgid "redmatrix"
-msgstr "redmatrix"
-
-#: ../../include/enotify.php:44
-msgid "Thank You,"
-msgstr "Tack,"
-
-#: ../../include/enotify.php:46
-#, php-format
-msgid "%s Administrator"
-msgstr "Administratören för %s"
-
-#: ../../include/enotify.php:81
-#, php-format
-msgid "%s <!item_type!>"
-msgstr "%s <!item_type!>"
-
-#: ../../include/enotify.php:85
-#, php-format
-msgid "[Red:Notify] New mail received at %s"
-msgstr "[Red:Meddelande] Nytt meddelande på %s"
-
-#: ../../include/enotify.php:87
-#, php-format
-msgid "%1$s, %2$s sent you a new private message at %3$s."
-msgstr "%1$s, %2$s skickade ett nytt privat meddelande till dig på %3$s."
-
-#: ../../include/enotify.php:88
-#, php-format
-msgid "%1$s sent you %2$s."
-msgstr "%1$s skickade %2$s till dig."
-
-#: ../../include/enotify.php:88
-msgid "a private message"
-msgstr "ett privat meddelande"
-
-#: ../../include/enotify.php:89
-#, php-format
-msgid "Please visit %s to view and/or reply to your private messages."
-msgstr "Besök %s för att visa och/eller svara på dina privata meddelanden."
-
-#: ../../include/enotify.php:144
-#, php-format
-msgid "%1$s, %2$s commented on [zrl=%3$s]a %4$s[/zrl]"
-msgstr "%1$s, %2$s kommenterade [zrl=%3$s]ett %4$s[/zrl]"
-
-#: ../../include/enotify.php:152
-#, php-format
-msgid "%1$s, %2$s commented on [zrl=%3$s]%4$s's %5$s[/zrl]"
-msgstr "%1$s, %2$s kommenterade [zrl=%3$s]%4$ss %5$s[/zrl]"
-
-#: ../../include/enotify.php:161
-#, php-format
-msgid "%1$s, %2$s commented on [zrl=%3$s]your %4$s[/zrl]"
-msgstr "%1$s, %2$s kommenterade [zrl=%3$s]ditt %4$s[/zrl]"
-
-#: ../../include/enotify.php:172
-#, php-format
-msgid "[Red:Notify] Comment to conversation #%1$d by %2$s"
-msgstr "[Red:Meddelande] Kommentar till konversation #%1$d av %2$s"
-
-#: ../../include/enotify.php:173
-#, php-format
-msgid "%1$s, %2$s commented on an item/conversation you have been following."
-msgstr "%1$s, %2$s kommenterade en sak/konversation du har följt."
-
-#: ../../include/enotify.php:176 ../../include/enotify.php:191
-#: ../../include/enotify.php:217 ../../include/enotify.php:236
-#: ../../include/enotify.php:250
-#, php-format
-msgid "Please visit %s to view and/or reply to the conversation."
-msgstr "Besök %s för att visa och/eller svara på konversationen."
-
-#: ../../include/enotify.php:182
-#, php-format
-msgid "[Red:Notify] %s posted to your profile wall"
-msgstr "[Red:Meddelande] %s postade till din profilvägg"
-
-#: ../../include/enotify.php:184
-#, php-format
-msgid "%1$s, %2$s posted to your profile wall at %3$s"
-msgstr "%1$s, %2$s postade till din profilvägg på %3$s"
-
-#: ../../include/enotify.php:186
-#, php-format
-msgid "%1$s, %2$s posted to [zrl=%3$s]your wall[/zrl]"
-msgstr "%1$s, %2$s postade till [zrl=%3$s]din vägg[/zrl]"
-
-#: ../../include/enotify.php:210
-#, php-format
-msgid "[Red:Notify] %s tagged you"
-msgstr "[Red:Meddelande] %s taggade dig"
-
-#: ../../include/enotify.php:211
-#, php-format
-msgid "%1$s, %2$s tagged you at %3$s"
-msgstr "%1$s, %2$s taggade dig på %3$s"
-
-#: ../../include/enotify.php:212
-#, php-format
-msgid "%1$s, %2$s [zrl=%3$s]tagged you[/zrl]."
-msgstr "%1$s, %2$s [zrl=%3$s]taggade dig[/zrl]."
-
-#: ../../include/enotify.php:225
-#, php-format
-msgid "[Red:Notify] %1$s poked you"
-msgstr "[Red:Meddelande] %1$s puffade dig"
-
-#: ../../include/enotify.php:226
-#, php-format
-msgid "%1$s, %2$s poked you at %3$s"
-msgstr "%1$s, %2$s puffade dig på %3$s"
-
-#: ../../include/enotify.php:227
-#, php-format
-msgid "%1$s, %2$s [zrl=%2$s]poked you[/zrl]."
-msgstr "%1$s, %2$s [zrl=%2$s]puffade dig[/zrl]."
-
-#: ../../include/enotify.php:243
-#, php-format
-msgid "[Red:Notify] %s tagged your post"
-msgstr "[Red:Meddelande] %s taggade ditt inlägg"
+#: ../../include/nav.php:95 ../../include/nav.php:128 ../../boot.php:1539
+msgid "Logout"
+msgstr "Logga ut"
-#: ../../include/enotify.php:244
-#, php-format
-msgid "%1$s, %2$s tagged your post at %3$s"
-msgstr "%1$s, %2$s taggade ditt inlägg på %3$s"
+#: ../../include/nav.php:95 ../../include/nav.php:128
+msgid "End this session"
+msgstr "Avsluta sessionen"
-#: ../../include/enotify.php:245
-#, php-format
-msgid "%1$s, %2$s tagged [zrl=%3$s]your post[/zrl]"
-msgstr "%1$s, %2$s taggade [zrl=%3$s]ditt inlägg[/zrl]"
+#: ../../include/nav.php:98 ../../include/nav.php:159
+msgid "Home"
+msgstr "Hem"
-#: ../../include/enotify.php:257
-msgid "[Red:Notify] Introduction received"
-msgstr "[Red:Meddelande] Presentation mottagen"
+#: ../../include/nav.php:98
+msgid "Your posts and conversations"
+msgstr "Dina inlägg och konversationer"
-#: ../../include/enotify.php:258
-#, php-format
-msgid "%1$s, you've received an new connection request from '%2$s' at %3$s"
-msgstr "%1$s, du har fått en ny kontaktförfrågan från '%2$s' på %3$s"
+#: ../../include/nav.php:99
+msgid "Your profile page"
+msgstr "Din profilsida"
-#: ../../include/enotify.php:259
-#, php-format
-msgid ""
-"%1$s, you've received [zrl=%2$s]a new connection request[/zrl] from %3$s."
-msgstr "%1$s, du har fått [zrl=%2$s]en ny kontaktförfrågan[/zrl] från %3$s."
+#: ../../include/nav.php:101
+msgid "Edit Profiles"
+msgstr "Redigera profiler"
-#: ../../include/enotify.php:263 ../../include/enotify.php:282
-#, php-format
-msgid "You may visit their profile at %s"
-msgstr "Du kan besöka deras profil på %s"
+#: ../../include/nav.php:101
+msgid "Manage/Edit profiles"
+msgstr "Hantera/redigera profiler"
-#: ../../include/enotify.php:265
-#, php-format
-msgid "Please visit %s to approve or reject the connection request."
-msgstr "Besök %s för att bevilja eller avslå kontaktförfrågan."
+#: ../../include/nav.php:103
+msgid "Edit your profile"
+msgstr "Redigera din profil"
-#: ../../include/enotify.php:272
-msgid "[Red:Notify] Friend suggestion received"
-msgstr "[Red:Meddelande] Vänförslag mottaget"
+#: ../../include/nav.php:105
+msgid "Your photos"
+msgstr "Dina foton"
-#: ../../include/enotify.php:273
-#, php-format
-msgid "%1$s, you've received a friend suggestion from '%2$s' at %3$s"
-msgstr "%1$s, du har fått ett vänförslag från '%2$s' på %3$s"
+#: ../../include/nav.php:106
+msgid "Your files"
+msgstr "Dina filer"
-#: ../../include/enotify.php:274
-#, php-format
-msgid ""
-"%1$s, you've received [zrl=%2$s]a friend suggestion[/zrl] for %3$s from "
-"%4$s."
-msgstr "%1$s, du har fått [zrl=%2$s]ett vänförslag[/zrl] angående %3$s från %4$s."
+#: ../../include/nav.php:111
+msgid "Your chatrooms"
+msgstr "Dina chattrum"
-#: ../../include/enotify.php:280
-msgid "Name:"
-msgstr "Namn:"
+#: ../../include/nav.php:117
+msgid "Your bookmarks"
+msgstr "Dina bokmärken"
-#: ../../include/enotify.php:281
-msgid "Photo:"
-msgstr "Foto:"
+#: ../../include/nav.php:121
+msgid "Your webpages"
+msgstr "Dina webbsidor"
-#: ../../include/enotify.php:284
-#, php-format
-msgid "Please visit %s to approve or reject the suggestion."
-msgstr "Besök %s för att bevilja eller avslå förslaget."
+#: ../../include/nav.php:125
+msgid "Sign in"
+msgstr "Logga in"
-#: ../../include/photos.php:89
+#: ../../include/nav.php:142
#, php-format
-msgid "Image exceeds website size limit of %lu bytes"
-msgstr "Bild överskrider webbplatsens storleksbegränsning på %lu byte"
-
-#: ../../include/photos.php:96
-msgid "Image file is empty."
-msgstr "Bildfil är tom."
-
-#: ../../include/photos.php:123 ../../mod/profile_photo.php:147
-msgid "Unable to process image"
-msgstr "Kunde inte bearbeta bild"
-
-#: ../../include/photos.php:186
-msgid "Photo storage failed."
-msgstr "Fotolagring misslyckades."
+msgid "%s - click to logout"
+msgstr "%s - klicka för att logga ut"
-#: ../../include/photos.php:315 ../../mod/photos.php:693
-#: ../../mod/photos.php:1190
-msgid "Upload New Photos"
-msgstr "Ladda upp nya foton"
+#: ../../include/nav.php:145
+msgid "Remote authentication"
+msgstr "Fjärrinloggning"
-#: ../../include/contact_widgets.php:14
-#, php-format
-msgid "%d invitation available"
-msgid_plural "%d invitations available"
-msgstr[0] "%d inbjudan tillgänglig"
-msgstr[1] "%d inbjudningar tillgängliga"
-
-#: ../../include/contact_widgets.php:19 ../../mod/admin.php:445
-msgid "Advanced"
-msgstr "Avancerat"
+#: ../../include/nav.php:145
+msgid "Click to authenticate to your home hub"
+msgstr "Klicka för att autentisera mot din hemmahubb"
-#: ../../include/contact_widgets.php:22
-msgid "Find Channels"
-msgstr "Hitta kanaler"
+#: ../../include/nav.php:159
+msgid "Home Page"
+msgstr "Hemsida"
-#: ../../include/contact_widgets.php:23
-msgid "Enter name or interest"
-msgstr "Ange namn eller intresse"
+#: ../../include/nav.php:163 ../../mod/register.php:224 ../../boot.php:1516
+msgid "Register"
+msgstr "Skapa konto"
-#: ../../include/contact_widgets.php:24
-msgid "Connect/Follow"
-msgstr "Ta kontakt/följ"
+#: ../../include/nav.php:163
+msgid "Create an account"
+msgstr "Skapa ett konto"
-#: ../../include/contact_widgets.php:25
-msgid "Examples: Robert Morgenstein, Fishing"
-msgstr "Exempel: Robert Morgenstein, Fiske"
+#: ../../include/nav.php:168
+msgid "Help and documentation"
+msgstr "Hjälp och dokumentation"
-#: ../../include/contact_widgets.php:26 ../../mod/directory.php:211
-#: ../../mod/directory.php:216 ../../mod/connections.php:390
-msgid "Find"
-msgstr "Sök"
+#: ../../include/nav.php:171
+msgid "Applications, utilities, links, games"
+msgstr "Applikationer, verktyg, länkar, spel"
-#: ../../include/contact_widgets.php:27 ../../mod/suggest.php:59
-msgid "Channel Suggestions"
-msgstr "Kanalförslag"
+#: ../../include/nav.php:173
+msgid "Search site content"
+msgstr "Sök innehåll"
-#: ../../include/contact_widgets.php:29
-msgid "Random Profile"
-msgstr "Slumpvald profil"
+#: ../../include/nav.php:176
+msgid "Channel Directory"
+msgstr "Kanalkatalog"
-#: ../../include/contact_widgets.php:30
-msgid "Invite Friends"
-msgstr "Bjud in vänner"
+#: ../../include/nav.php:190
+msgid "Your matrix"
+msgstr "Din matris"
-#: ../../include/contact_widgets.php:32
-msgid "Exammple: name=fred and country=iceland"
-msgstr "Exempel: name=fred and country=iceland"
+#: ../../include/nav.php:191
+msgid "Mark all matrix notifications seen"
+msgstr "Märk alla matrisnotifieringar som lästa"
-#: ../../include/contact_widgets.php:33
-msgid "Advanced Find"
-msgstr "Sök avancerat"
+#: ../../include/nav.php:193
+msgid "Channel home"
+msgstr "Kanalhem"
-#: ../../include/contact_widgets.php:125
-#, php-format
-msgid "%d connection in common"
-msgid_plural "%d connections in common"
-msgstr[0] "%d gemensam kontakt"
-msgstr[1] "%d gemensamma kontakter"
+#: ../../include/nav.php:194
+msgid "Mark all channel notifications seen"
+msgstr "Märk alla kanalnotifieringar som lästa"
-#: ../../include/page_widgets.php:6
-msgid "New Page"
-msgstr "Ny sida"
+#: ../../include/nav.php:197 ../../mod/connections.php:406
+msgid "Connections"
+msgstr "Kontakter"
-#: ../../include/plugin.php:475 ../../include/plugin.php:477
-msgid "Click here to upgrade."
-msgstr "Klicka här för att uppgradera."
+#: ../../include/nav.php:200
+msgid "Notices"
+msgstr "Meddelanden"
-#: ../../include/plugin.php:483
-msgid "This action exceeds the limits set by your subscription plan."
-msgstr "Den här funktionen går utanför vad som anges i ditt avtal."
+#: ../../include/nav.php:200
+msgid "Notifications"
+msgstr "Notifieringar"
-#: ../../include/plugin.php:488
-msgid "This action is not available under your subscription plan."
-msgstr "Den här funktionen är inte tillgänglig med ditt avtal."
+#: ../../include/nav.php:201
+msgid "See all notifications"
+msgstr "Se alla notifieringar"
-#: ../../include/items.php:272 ../../mod/like.php:63 ../../mod/profperm.php:23
-#: ../../mod/group.php:68 ../../index.php:350
-msgid "Permission denied"
-msgstr "Behörighet saknas"
+#: ../../include/nav.php:202 ../../mod/notifications.php:99
+msgid "Mark all system notifications seen"
+msgstr "Märk alla systemnotifieringar som lästa"
-#: ../../include/items.php:789
-msgid "(Unknown)"
-msgstr "(Okänt)"
+#: ../../include/nav.php:204
+msgid "Private mail"
+msgstr "Privat meddelande"
-#: ../../include/items.php:3544 ../../mod/thing.php:78 ../../mod/admin.php:159
-#: ../../mod/admin.php:921 ../../mod/admin.php:1124 ../../mod/viewsrc.php:18
-#: ../../mod/home.php:63 ../../mod/display.php:32 ../../mod/filestorage.php:18
-msgid "Item not found."
-msgstr "Posten hittades inte."
+#: ../../include/nav.php:205
+msgid "See all private messages"
+msgstr "Se alla privata meddelanden"
-#: ../../include/items.php:3928 ../../mod/group.php:38 ../../mod/group.php:140
-msgid "Collection not found."
-msgstr "Sammanhanget hittades inte."
+#: ../../include/nav.php:206
+msgid "Mark all private messages seen"
+msgstr "Märk alla privata meddelanden som lästa"
-#: ../../include/items.php:3943
-msgid "Collection is empty."
-msgstr "Sammanhanget är tomt."
+#: ../../include/nav.php:207
+msgid "Inbox"
+msgstr "Inkorg"
-#: ../../include/items.php:3950
-#, php-format
-msgid "Collection: %s"
-msgstr "Sammanhang: %s"
+#: ../../include/nav.php:208
+msgid "Outbox"
+msgstr "Utkorg"
-#: ../../include/items.php:3961
-#, php-format
-msgid "Connection: %s"
-msgstr "Kontakt: %s"
+#: ../../include/nav.php:212
+msgid "Event Calendar"
+msgstr "Kalender"
-#: ../../include/items.php:3964
-msgid "Connection not found."
-msgstr "Kontakten hittades inte."
+#: ../../include/nav.php:213
+msgid "See all events"
+msgstr "Se alla händelser"
-#: ../../include/follow.php:23
-msgid "Channel is blocked on this site."
-msgstr "Kanalen är blockerad på den här servern."
+#: ../../include/nav.php:214
+msgid "Mark all events seen"
+msgstr "Märk alla händelser som lästa"
-#: ../../include/follow.php:28
-msgid "Channel location missing."
-msgstr "Kanalplats saknas."
+#: ../../include/nav.php:216
+msgid "Manage Your Channels"
+msgstr "Hantera dina kanaler"
-#: ../../include/follow.php:54
-msgid "Response from remote channel was incomplete."
-msgstr "Svar från den andra kanalen var ofullständigt."
+#: ../../include/nav.php:218
+msgid "Account/Channel Settings"
+msgstr "Konto-/kanalinställningar"
-#: ../../include/follow.php:85
-msgid "Channel was deleted and no longer exists."
-msgstr "Kanalen har tagits bort och finns inte längre."
+#: ../../include/nav.php:226 ../../mod/admin.php:123
+msgid "Admin"
+msgstr "Administration"
-#: ../../include/follow.php:132
-msgid "Channel discovery failed."
-msgstr "Kanalsökning misslyckades."
+#: ../../include/nav.php:226
+msgid "Site Setup and Configuration"
+msgstr "Serverinställning och -konfiguration"
-#: ../../include/follow.php:149
-msgid "local account not found."
-msgstr "hittade inte lokalt konto."
+#: ../../include/nav.php:262
+msgid "@name, #tag, content"
+msgstr "@namn, #tagg, innehåll"
-#: ../../include/follow.php:158
-msgid "Cannot connect to yourself."
-msgstr "Du kan inte kontakta dig själv."
+#: ../../include/nav.php:263
+msgid "Please wait..."
+msgstr "Vänta..."
-#: ../../include/security.php:295
+#: ../../include/security.php:357
msgid ""
"The form security token was not correct. This probably happened because the "
"form has been opened for too long (>3 hours) before submitting it."
msgstr "Formulärets kontrollkod var inte korrekt. Antagligen beror det på att formuläret har varit öppet för länge (> 3 timmar) innan det skickades."
-#: ../../include/oembed.php:171
-msgid "Embedded content"
-msgstr "Inbäddat innehåll"
-
-#: ../../include/oembed.php:180
-msgid "Embedding disabled"
-msgstr "Inbäddning inaktiverat"
-
-#: ../../include/permissions.php:13
-msgid "Can view my \"public\" stream and posts"
-msgstr "Kan se mina \"offentliga\" strömmar och inlägg"
-
-#: ../../include/permissions.php:14
-msgid "Can view my \"public\" channel profile"
-msgstr "Kan se min \"offentliga\" kanalprofil"
-
-#: ../../include/permissions.php:15
-msgid "Can view my \"public\" photo albums"
-msgstr "Kan se mina \"offentliga\" fotoalbum"
-
-#: ../../include/permissions.php:16
-msgid "Can view my \"public\" address book"
-msgstr "Kan se min \"offentliga\" adressbok"
-
-#: ../../include/permissions.php:17
-msgid "Can view my \"public\" file storage"
-msgstr "Kan se mitt \"offentliga\" filutrymme"
-
-#: ../../include/permissions.php:18
-msgid "Can view my \"public\" pages"
-msgstr "Kan se mina \"offentliga\" sidor"
-
-#: ../../include/permissions.php:21
-msgid "Can send me their channel stream and posts"
-msgstr "Kan skicka sina kanalströmmar och inlägg till mig"
-
-#: ../../include/permissions.php:22
-msgid "Can post on my channel page (\"wall\")"
-msgstr "Kan posta inlägg på min kanalsida (\"vägg\")"
-
-#: ../../include/permissions.php:23
-msgid "Can comment on my posts"
-msgstr "Kan kommentera mina inlägg"
-
-#: ../../include/permissions.php:24
-msgid "Can send me private mail messages"
-msgstr "Kan skicka privata meddelanden till mig"
-
-#: ../../include/permissions.php:25
-msgid "Can post photos to my photo albums"
-msgstr "Kan lägga till foton i mitt fotoalbum"
-
-#: ../../include/permissions.php:26
-msgid "Can forward to all my channel contacts via post @mentions"
-msgstr "Kan vidarebefordra till alla mina kanalkontakter genom @omnämnanden"
-
-#: ../../include/permissions.php:26
-msgid "Advanced - useful for creating group forum channels"
-msgstr "Avancerat - användbart för att skapa kanaler för gruppforum"
-
-#: ../../include/permissions.php:27
-msgid "Can chat with me (when available)"
-msgstr "Kan chatta med mig (när tillgänglig)"
-
-#: ../../include/permissions.php:28
-msgid "Can write to my \"public\" file storage"
-msgstr "Har skrivrättigheter i mitt \"offentliga\" filutrymme"
-
-#: ../../include/permissions.php:29
-msgid "Can edit my \"public\" pages"
-msgstr "Kan redigera mina \"offentliga\" sidor"
-
-#: ../../include/permissions.php:31
-msgid "Can source my \"public\" posts in derived channels"
-msgstr "Kan använda mina \"offentliga\" inlägg i kanaler nedströms"
-
-#: ../../include/permissions.php:31
-msgid "Somewhat advanced - very useful in open communities"
-msgstr "Ganska avancerat - väldigt användbart i öppna gemenskaper"
-
-#: ../../include/permissions.php:32
-msgid "Can send me bookmarks"
-msgstr "Kan skicka bokmärken till mig"
+#: ../../mod/mood.php:132
+msgid "Set your current mood and tell your friends"
+msgstr "Ange din nuvarande sinnesstämning och visa för dina vänner"
-#: ../../include/permissions.php:33
-msgid "Can administer my channel resources"
-msgstr "Kan administrera mina kanalresurser"
+#: ../../mod/register.php:44
+msgid "Maximum daily site registrations exceeded. Please try again tomorrow."
+msgstr "Maximalt antal dagliga serverregistreringar överskridet. Försök igen i morgon."
-#: ../../include/permissions.php:33
+#: ../../mod/register.php:50
msgid ""
-"Extremely advanced. Leave this alone unless you know what you are doing"
-msgstr "Extremt avancerat. Låt detta vara om du inte vet vad du gör"
-
-#: ../../include/zot.php:583
-msgid "Invalid data packet"
-msgstr "Ogiltigt datapaket"
-
-#: ../../include/zot.php:593
-msgid "Unable to verify channel signature"
-msgstr "Kunde inte bekräfta kanalsignatur"
-
-#: ../../include/zot.php:790
-#, php-format
-msgid "Unable to verify site signature for %s"
-msgstr "Kunde inte bekräfta signatur för servern %s"
-
-#: ../../mod/common.php:10
-msgid "No channel."
-msgstr "Ingen kanal."
-
-#: ../../mod/common.php:39
-msgid "Common connections"
-msgstr "Gemensamma kontakter"
-
-#: ../../mod/common.php:44
-msgid "No connections in common."
-msgstr "Inga gemensamma kontakter."
+"Please indicate acceptance of the Terms of Service. Registration failed."
+msgstr "Välj huruvida du accepterar användarvillkoren. Registrering misslyckades."
-#: ../../mod/events.php:72
-msgid "Event title and start time are required."
-msgstr "Händelsen behöver titel och starttid."
+#: ../../mod/register.php:84
+msgid "Passwords do not match."
+msgstr "Lösenorden stämmer inte överens."
-#: ../../mod/events.php:290
-msgid "l, F j"
-msgstr "l, j F"
+#: ../../mod/register.php:117
+msgid ""
+"Registration successful. Please check your email for validation "
+"instructions."
+msgstr "Registrering lyckades. Kontrollera din e-post för valideringsinstruktioner."
-#: ../../mod/events.php:312
-msgid "Edit event"
-msgstr "Redigera händelse"
+#: ../../mod/register.php:123
+msgid "Your registration is pending approval by the site owner."
+msgstr "Din registrering väntar på att bli godkänd av serverägaren."
-#: ../../mod/events.php:358
-msgid "Create New Event"
-msgstr "Skapa ny händelse"
+#: ../../mod/register.php:126
+msgid "Your registration can not be processed."
+msgstr "Din registrering kan inte behandlas."
-#: ../../mod/events.php:359
-msgid "Previous"
-msgstr "Föregående"
+#: ../../mod/register.php:163
+msgid "Registration on this site/hub is by approval only."
+msgstr "Registrering på den här servern/hubben måste godkännas."
-#: ../../mod/events.php:360 ../../mod/setup.php:261
-msgid "Next"
-msgstr "Nästa"
+#: ../../mod/register.php:164
+msgid "<a href=\"pubsites\">Register at another affiliated site/hub</a>"
+msgstr "<a href=\"pubsites\">Skapa konto på en annan ansluten server/hubb</a>"
-#: ../../mod/events.php:431
-msgid "hour:minute"
-msgstr "timme:minut"
+#: ../../mod/register.php:174
+msgid ""
+"This site has exceeded the number of allowed daily account registrations. "
+"Please try again tomorrow."
+msgstr "Antal dagliga registreringar som tillåts på den här servern har överskridits. Försök igen i morgon."
-#: ../../mod/events.php:450
-msgid "Event details"
-msgstr "Detaljer för händelse"
+#: ../../mod/register.php:185
+msgid "Terms of Service"
+msgstr "användarvillkor"
-#: ../../mod/events.php:451
+#: ../../mod/register.php:191
#, php-format
-msgid "Format is %s %s. Starting date and Title are required."
-msgstr "Formatet är %s %s. Startdatum och titel behövs."
-
-#: ../../mod/events.php:453
-msgid "Event Starts:"
-msgstr "Händelsen börjar:"
-
-#: ../../mod/events.php:453 ../../mod/events.php:467
-msgid "Required"
-msgstr "Behövs"
-
-#: ../../mod/events.php:456
-msgid "Finish date/time is not known or not relevant"
-msgstr "Slutdatum/tid är okänt eller inte relevant"
-
-#: ../../mod/events.php:458
-msgid "Event Finishes:"
-msgstr "Händelsen slutar:"
-
-#: ../../mod/events.php:461
-msgid "Adjust for viewer timezone"
-msgstr "Justera för betraktarens tidszon"
-
-#: ../../mod/events.php:463
-msgid "Description:"
-msgstr "Beskrivning:"
-
-#: ../../mod/events.php:467
-msgid "Title:"
-msgstr "Titel:"
-
-#: ../../mod/events.php:469
-msgid "Share this event"
-msgstr "Dela den här händelsen"
-
-#: ../../mod/thing.php:98
-msgid "Thing updated"
-msgstr "Föremål uppdaterat"
-
-#: ../../mod/thing.php:158
-msgid "Object store: failed"
-msgstr "Objektlagring: misslyckades"
-
-#: ../../mod/thing.php:162
-msgid "Thing added"
-msgstr "Föremål tillagt"
+msgid "I accept the %s for this website"
+msgstr "Jag accepterar den här webbplatsens %s"
-#: ../../mod/thing.php:182
+#: ../../mod/register.php:193
#, php-format
-msgid "OBJ: %1$s %2$s %3$s"
-msgstr "OBJ: %1$s %2$s %3$s"
-
-#: ../../mod/thing.php:234
-msgid "Show Thing"
-msgstr "Visa föremål"
-
-#: ../../mod/thing.php:241
-msgid "item not found."
-msgstr "föremål hittades inte."
-
-#: ../../mod/thing.php:269
-msgid "Edit Thing"
-msgstr "Redigera föremål"
-
-#: ../../mod/thing.php:271 ../../mod/thing.php:318
-msgid "Select a profile"
-msgstr "Välj en profil"
-
-#: ../../mod/thing.php:273 ../../mod/thing.php:320
-msgid "Select a category of stuff. e.g. I ______ something"
-msgstr "Välj en kategori, t.ex. Jag ______ någonting"
-
-#: ../../mod/thing.php:275 ../../mod/thing.php:321
-msgid "Post an activity"
-msgstr "Posta en aktivitet"
-
-#: ../../mod/thing.php:275 ../../mod/thing.php:321
-msgid "Only sends to viewers of the applicable profile"
-msgstr "Skickar bara till de som tittar på den aktuella profilen"
-
-#: ../../mod/thing.php:277 ../../mod/thing.php:323
-msgid "Name of thing e.g. something"
-msgstr "Namn på föremål, t.ex. någonting"
-
-#: ../../mod/thing.php:279 ../../mod/thing.php:324
-msgid "URL of thing (optional)"
-msgstr "URL för föremål (frivilligt)"
+msgid "I am over 13 years of age and accept the %s for this website"
+msgstr "Jag är över 13 år och accepterar den här webbplatsens %s"
-#: ../../mod/thing.php:281 ../../mod/thing.php:325
-msgid "URL for photo of thing (optional)"
-msgstr "URL för foto på föremål (frivilligt)"
+#: ../../mod/register.php:207 ../../mod/admin.php:413
+msgid "Registration"
+msgstr "Registrering"
-#: ../../mod/thing.php:316
-msgid "Add Thing to your Profile"
-msgstr "Lägg till föremål till din profil"
+#: ../../mod/register.php:212
+msgid "Membership on this site is by invitation only."
+msgstr "Medlemskap på den här servern kan endast fås genom inbjudan."
-#: ../../mod/invite.php:25
-msgid "Total invitation limit exceeded."
-msgstr "Gränsen för totalt antal inbjudningar överskriden."
+#: ../../mod/register.php:213
+msgid "Please enter your invitation code"
+msgstr "Ange din inbjudningskod"
-#: ../../mod/invite.php:49
-#, php-format
-msgid "%s : Not a valid email address."
-msgstr "%s: Inte en giltig e-postadress."
+#: ../../mod/register.php:216
+msgid "Your email address"
+msgstr "Din e-postadress"
-#: ../../mod/invite.php:76
-msgid "Please join us on Red"
-msgstr "GÃ¥ med oss i Red"
+#: ../../mod/register.php:217
+msgid "Choose a password"
+msgstr "Välj ett lösenord"
-#: ../../mod/invite.php:87
-msgid "Invitation limit exceeded. Please contact your site administrator."
-msgstr "Inbjudningsgränsen överskriden. Kontakta din serveradministratör."
+#: ../../mod/register.php:218
+msgid "Please re-enter your password"
+msgstr "Ange lösenordet igen"
-#: ../../mod/invite.php:92
-#, php-format
-msgid "%s : Message delivery failed."
-msgstr "%s : Leverans av meddelande misslyckades."
+#: ../../mod/mitem.php:24 ../../mod/menu.php:108
+msgid "Menu not found."
+msgstr "Menyn hittades inte."
-#: ../../mod/invite.php:96
-#, php-format
-msgid "%d message sent."
-msgid_plural "%d messages sent."
-msgstr[0] "%d meddelande sänt."
-msgstr[1] "%d meddelanden sända."
+#: ../../mod/mitem.php:67
+msgid "Menu element updated."
+msgstr "Menyval uppdaterat."
-#: ../../mod/invite.php:115
-msgid "You have no more invitations available"
-msgstr "Du har inga fler inbjudningar kvar"
+#: ../../mod/mitem.php:71
+msgid "Unable to update menu element."
+msgstr "Kunde inte uppdatera menyval."
-#: ../../mod/invite.php:141
-msgid "Send invitations"
-msgstr "Skicka inbjudan"
+#: ../../mod/mitem.php:77
+msgid "Menu element added."
+msgstr "Menyval tillagt."
-#: ../../mod/invite.php:142
-msgid "Enter email addresses, one per line:"
-msgstr "Ange e-postadresser, en per rad:"
+#: ../../mod/mitem.php:81
+msgid "Unable to add menu element."
+msgstr "Kunde inte lägga till menyval."
-#: ../../mod/invite.php:143 ../../mod/mail.php:216 ../../mod/mail.php:328
-msgid "Your message:"
-msgstr "Ditt meddelande:"
+#: ../../mod/mitem.php:111 ../../mod/menu.php:136 ../../mod/xchan.php:37
+msgid "Not found."
+msgstr "Hittades inte."
-#: ../../mod/invite.php:144
-msgid ""
-"You are cordially invited to join me and some other close friends on the Red"
-" Matrix - a revolutionary new decentralised communication and information "
-"tool."
-msgstr "Du är hjärtligt inbjuden att gå med mig och några andra nära vänner i Red Matrix - ett revolutionärt nytt decentraliserat kommunikations- och informationsverktyg."
+#: ../../mod/mitem.php:127
+msgid "Manage Menu Elements"
+msgstr "Hantera menyval"
-#: ../../mod/invite.php:146
-msgid "You will need to supply this invitation code: $invite_code"
-msgstr "Du kommer att behöva ange den här inbjudningskoden: $invite_code"
+#: ../../mod/mitem.php:130
+msgid "Edit menu"
+msgstr "Redigera meny"
-#: ../../mod/invite.php:147
-msgid "Please visit my channel at"
-msgstr "Besök min kanal på"
+#: ../../mod/mitem.php:133
+msgid "Edit element"
+msgstr "Redigera menyval"
-#: ../../mod/invite.php:151
-msgid ""
-"Once you have registered (on ANY Red Matrix site - they are all inter-"
-"connected), please connect with my Red Matrix channel address:"
-msgstr "När du har registrerat dig (på NÅGON Red Matrix-server - alla sitter ihop), så lägg till min Red Matrix-kanaladress:"
+#: ../../mod/mitem.php:134
+msgid "Drop element"
+msgstr "Ta bort menyval"
-#: ../../mod/invite.php:153
-msgid "Click the [Register] link on the following page to join."
-msgstr "Klicka på [Registrera]-länken på följande sida för att gå med."
+#: ../../mod/mitem.php:135
+msgid "New element"
+msgstr "Nytt menyval"
-#: ../../mod/invite.php:155
-msgid ""
-"For more information about the Red Matrix Project and why it has the "
-"potential to change the internet as we know it, please visit "
-"http://getzot.com"
-msgstr "För mer information om Red Matrix-projektet och varför det har potential att förändra Internet som vi känner det, besök http://getzot.com"
+#: ../../mod/mitem.php:136
+msgid "Edit this menu container"
+msgstr "Redigera den här menysamlaren"
-#: ../../mod/mail.php:33
-msgid "Unable to lookup recipient."
-msgstr "Kunde inte hitta mottagare."
+#: ../../mod/mitem.php:137
+msgid "Add menu element"
+msgstr "Lägg till menyval"
-#: ../../mod/mail.php:41
-msgid "Unable to communicate with requested channel."
-msgstr "Kunde inte kommunicera med den begärda kanalen."
+#: ../../mod/mitem.php:138
+msgid "Delete this menu item"
+msgstr "Ta bort det här menyvalet"
-#: ../../mod/mail.php:48
-msgid "Cannot verify requested channel."
-msgstr "Kan inte bekräfta den begärda kanalen."
+#: ../../mod/mitem.php:139
+msgid "Edit this menu item"
+msgstr "Redigera det här menyvalet"
-#: ../../mod/mail.php:74
-msgid "Selected channel has private message restrictions. Send failed."
-msgstr "Den valda kanalen har restriktioner för privata meddelanden. Misslyckades att skicka."
+#: ../../mod/mitem.php:158
+msgid "New Menu Element"
+msgstr "Nytt menyval"
-#: ../../mod/mail.php:121 ../../mod/message.php:31
-msgid "Messages"
-msgstr "Meddelanden"
+#: ../../mod/mitem.php:160 ../../mod/mitem.php:203
+msgid "Menu Item Permissions"
+msgstr "Behörighet för menyval"
-#: ../../mod/mail.php:132
-msgid "Message deleted."
-msgstr "Meddelande borttaget."
+#: ../../mod/mitem.php:161 ../../mod/mitem.php:204 ../../mod/settings.php:1039
+msgid "(click to open/close)"
+msgstr "(klicka för att öppna/stänga)"
-#: ../../mod/mail.php:149
-msgid "Message recalled."
-msgstr "Meddelande återkallat."
+#: ../../mod/mitem.php:163 ../../mod/mitem.php:207
+msgid "Link text"
+msgstr "Länktext"
-#: ../../mod/mail.php:206
-msgid "Send Private Message"
-msgstr "Skicka privat meddelande."
+#: ../../mod/mitem.php:164 ../../mod/mitem.php:208
+msgid "URL of link"
+msgstr "Länkens URL"
-#: ../../mod/mail.php:207 ../../mod/mail.php:323
-msgid "To:"
-msgstr "Till:"
+#: ../../mod/mitem.php:165 ../../mod/mitem.php:209
+msgid "Use RedMatrix magic-auth if available"
+msgstr "Använd RedMatrix magic-auth om tillgängligt"
-#: ../../mod/mail.php:212 ../../mod/mail.php:325
-msgid "Subject:"
-msgstr "Ämne:"
+#: ../../mod/mitem.php:166 ../../mod/mitem.php:210
+msgid "Open link in new window"
+msgstr "Öppna länk i nytt fönster"
-#: ../../mod/mail.php:249
-msgid "Message not found."
-msgstr "Meddelandet hittades inte."
+#: ../../mod/mitem.php:168 ../../mod/mitem.php:212
+msgid "Order in list"
+msgstr "Ordningstal i listan"
-#: ../../mod/mail.php:292 ../../mod/message.php:72
-msgid "Delete message"
-msgstr "Ta bort meddelande"
+#: ../../mod/mitem.php:168 ../../mod/mitem.php:212
+msgid "Higher numbers will sink to bottom of listing"
+msgstr "Större tal sjunker till botten av listan"
-#: ../../mod/mail.php:293
-msgid "Recall message"
-msgstr "Ã…terkalla meddelande"
+#: ../../mod/mitem.php:181
+msgid "Menu item not found."
+msgstr "Menyval hittas inte."
-#: ../../mod/mail.php:295
-msgid "Message has been recalled."
-msgstr "Meddelandet har återkallats."
+#: ../../mod/mitem.php:190
+msgid "Menu item deleted."
+msgstr "Menyval borttaget."
-#: ../../mod/mail.php:312
-msgid "Private Conversation"
-msgstr "Privat konversation"
+#: ../../mod/mitem.php:192
+msgid "Menu item could not be deleted."
+msgstr "Menyval kunde inte tas bort."
-#: ../../mod/mail.php:316
-msgid "Delete conversation"
-msgstr "Ta bort konversation"
+#: ../../mod/mitem.php:201
+msgid "Edit Menu Element"
+msgstr "Redigera menyval"
-#: ../../mod/mail.php:318
-msgid ""
-"No secure communications available. You <strong>may</strong> be able to "
-"respond from the sender's profile page."
-msgstr "Ingen säker kommunikationskanal tillgänglig. Du kan <strong>möjligtvis</strong> svara från avsändarens profilsida."
+#: ../../mod/mitem.php:213 ../../mod/menu.php:130
+msgid "Modify"
+msgstr "Ändra"
-#: ../../mod/mail.php:322
-msgid "Send Reply"
-msgstr "Skicka svar"
+#: ../../mod/achievements.php:34
+msgid "Some blurb about what to do when you're new here"
+msgstr "Lite text om vad man kan göra som ny här"
-#: ../../mod/settings.php:71
+#: ../../mod/settings.php:73
msgid "Name is required"
msgstr "Namn är obligatoriskt"
-#: ../../mod/settings.php:75
+#: ../../mod/settings.php:77
msgid "Key and Secret are required"
msgstr "Nyckel och kod är obligatoriska"
-#: ../../mod/settings.php:79 ../../mod/settings.php:541
-msgid "Update"
-msgstr "Uppdatera"
-
-#: ../../mod/settings.php:195
+#: ../../mod/settings.php:213
msgid "Passwords do not match. Password unchanged."
msgstr "Lösenorden stämmer inte överens. Lösenordet har inte ändrats."
-#: ../../mod/settings.php:199
+#: ../../mod/settings.php:217
msgid "Empty passwords are not allowed. Password unchanged."
msgstr "Tomma lösenord tillåts inte. Lösenordet har inte ändrats."
-#: ../../mod/settings.php:212
+#: ../../mod/settings.php:231
msgid "Password changed."
msgstr "Lösenordet ändrat."
-#: ../../mod/settings.php:214
+#: ../../mod/settings.php:233
msgid "Password update failed. Please try again."
msgstr "Lösenordsuppdatering misslyckades. Försök igen."
-#: ../../mod/settings.php:228
+#: ../../mod/settings.php:247
msgid "Not valid email."
msgstr "Inte en giltig e-postadress."
-#: ../../mod/settings.php:231
+#: ../../mod/settings.php:250
msgid "Protected email address. Cannot change to that email."
msgstr "Skyddad e-postadress. Kan inte ändra till den."
-#: ../../mod/settings.php:240
+#: ../../mod/settings.php:259
msgid "System failure storing new email. Please try again."
msgstr "Systemfel när ny e-postadress skulle sparas. Försök igen."
-#: ../../mod/settings.php:443
+#: ../../mod/settings.php:495
msgid "Settings updated."
msgstr "Inställningar uppdaterade."
-#: ../../mod/settings.php:514 ../../mod/settings.php:540
-#: ../../mod/settings.php:576
+#: ../../mod/settings.php:564 ../../mod/settings.php:590
+#: ../../mod/settings.php:626
msgid "Add application"
msgstr "Lägg till applikation"
-#: ../../mod/settings.php:517 ../../mod/settings.php:543
-#: ../../mod/admin.php:891
-msgid "Name"
-msgstr "Namn"
-
-#: ../../mod/settings.php:517
+#: ../../mod/settings.php:567
msgid "Name of application"
msgstr "Applikationens namn"
-#: ../../mod/settings.php:518 ../../mod/settings.php:544
+#: ../../mod/settings.php:568 ../../mod/settings.php:594
msgid "Consumer Key"
msgstr "Nyckel för konsument"
-#: ../../mod/settings.php:518 ../../mod/settings.php:519
+#: ../../mod/settings.php:568 ../../mod/settings.php:569
msgid "Automatically generated - change if desired. Max length 20"
msgstr "Automatiskt genererad - ändra om så önskas. Maxlängd 20"
-#: ../../mod/settings.php:519 ../../mod/settings.php:545
+#: ../../mod/settings.php:569 ../../mod/settings.php:595
msgid "Consumer Secret"
msgstr "Kod för konsument"
-#: ../../mod/settings.php:520 ../../mod/settings.php:546
+#: ../../mod/settings.php:570 ../../mod/settings.php:596
msgid "Redirect"
msgstr "Omdirigering"
-#: ../../mod/settings.php:520
+#: ../../mod/settings.php:570
msgid ""
"Redirect URI - leave blank unless your application specifically requires "
"this"
msgstr "Omdirigerings-URI - lämna blankt om inte din applikation specifikt behöver det"
-#: ../../mod/settings.php:521 ../../mod/settings.php:547
+#: ../../mod/settings.php:571 ../../mod/settings.php:597
msgid "Icon url"
msgstr "Ikon-URL"
-#: ../../mod/settings.php:521
+#: ../../mod/settings.php:571
msgid "Optional"
msgstr "Frivillig"
-#: ../../mod/settings.php:532
+#: ../../mod/settings.php:582
msgid "You can't edit this application."
msgstr "Du kan inte redigera den här applikationen."
-#: ../../mod/settings.php:575
+#: ../../mod/settings.php:625
msgid "Connected Apps"
msgstr "Anslutna appar"
-#: ../../mod/settings.php:579
+#: ../../mod/settings.php:629
msgid "Client key starts with"
msgstr "Klientnyckel börjar med"
-#: ../../mod/settings.php:580
+#: ../../mod/settings.php:630
msgid "No name"
msgstr "Inget namn"
-#: ../../mod/settings.php:581
+#: ../../mod/settings.php:631
msgid "Remove authorization"
msgstr "Ta bort behörighet"
-#: ../../mod/settings.php:592
+#: ../../mod/settings.php:642
msgid "No feature settings configured"
msgstr "Inga funktionsinställningar konfigurerade"
-#: ../../mod/settings.php:600
+#: ../../mod/settings.php:650
msgid "Feature Settings"
msgstr "Funktionsinställningar"
-#: ../../mod/settings.php:623
+#: ../../mod/settings.php:673
msgid "Account Settings"
msgstr "Kontoinställningar"
-#: ../../mod/settings.php:624
+#: ../../mod/settings.php:674
msgid "Password Settings"
msgstr "Lösenordsinställningar"
-#: ../../mod/settings.php:625
+#: ../../mod/settings.php:675
msgid "New Password:"
msgstr "Nytt lösenord:"
-#: ../../mod/settings.php:626
+#: ../../mod/settings.php:676
msgid "Confirm:"
msgstr "Bekräfta:"
-#: ../../mod/settings.php:626
+#: ../../mod/settings.php:676
msgid "Leave password fields blank unless changing"
msgstr "Lämna lösenordsfälten blanka om lösenordet inte ska ändras"
-#: ../../mod/settings.php:628 ../../mod/settings.php:938
+#: ../../mod/settings.php:678 ../../mod/settings.php:1013
msgid "Email Address:"
msgstr "E-postadress"
-#: ../../mod/settings.php:629
+#: ../../mod/settings.php:679 ../../mod/removeaccount.php:61
msgid "Remove Account"
msgstr "Ta bort konto"
-#: ../../mod/settings.php:630
+#: ../../mod/settings.php:680
+msgid "Remove this account from this server including all its channels"
+msgstr "Ta bort det här kontot från servern, inklusive alla dess kanaler"
+
+#: ../../mod/settings.php:681 ../../mod/settings.php:1095
msgid "Warning: This action is permanent and cannot be reversed."
msgstr "Varning: Den här handlingen är permanent och kan inte återställas."
-#: ../../mod/settings.php:646
+#: ../../mod/settings.php:697
msgid "Off"
msgstr "Av"
-#: ../../mod/settings.php:646
+#: ../../mod/settings.php:697
msgid "On"
msgstr "PÃ¥"
-#: ../../mod/settings.php:653
+#: ../../mod/settings.php:704
msgid "Additional Features"
msgstr "Ytterligare funktioner"
-#: ../../mod/settings.php:678
+#: ../../mod/settings.php:729
msgid "Connector Settings"
msgstr "Anslutningsinställningar"
-#: ../../mod/settings.php:708 ../../mod/admin.php:389
+#: ../../mod/settings.php:768
msgid "No special theme for mobile devices"
msgstr "Inget särskilt tema för mobila enheter"
-#: ../../mod/settings.php:749
+#: ../../mod/settings.php:771
+#, php-format
+msgid "%s - (Experimental)"
+msgstr "%s - (experimentellt)"
+
+#: ../../mod/settings.php:774 ../../mod/admin.php:363
+msgid "mobile"
+msgstr "mobilt"
+
+#: ../../mod/settings.php:810
msgid "Display Settings"
msgstr "Utseende"
-#: ../../mod/settings.php:755
+#: ../../mod/settings.php:816
msgid "Display Theme:"
msgstr "Tema för utseende:"
-#: ../../mod/settings.php:756
+#: ../../mod/settings.php:817
msgid "Mobile Theme:"
msgstr "Mobilt tema:"
-#: ../../mod/settings.php:757
+#: ../../mod/settings.php:818
+msgid "Enable user zoom on mobile devices"
+msgstr "Tillåt användare att zooma på mobila enheter"
+
+#: ../../mod/settings.php:819
msgid "Update browser every xx seconds"
msgstr "Uppdatera webbläsaren var xx sekund"
-#: ../../mod/settings.php:757
+#: ../../mod/settings.php:819
msgid "Minimum of 10 seconds, no maximum"
msgstr "Minst 10 sekunder, inget maximum"
-#: ../../mod/settings.php:758
+#: ../../mod/settings.php:820
msgid "Maximum number of conversations to load at any time:"
msgstr "Högsta antal konversationer att ladda åt gången:"
-#: ../../mod/settings.php:758
+#: ../../mod/settings.php:820
msgid "Maximum of 100 items"
msgstr "Maximalt 100 poster"
-#: ../../mod/settings.php:759
+#: ../../mod/settings.php:821
msgid "Don't show emoticons"
msgstr "Visa inte känsloikoner"
-#: ../../mod/settings.php:760
-msgid "Do not view remote profiles in frames"
-msgstr "Visa inte profiler på andra servrar i ramar"
-
-#: ../../mod/settings.php:760
-msgid "By default open in a sub-window of your own site"
-msgstr "Som standard öppnas de i ett underfönster på din lokala server"
+#: ../../mod/settings.php:822
+msgid "Link post titles to source"
+msgstr "Länka inläggstitlar till källan"
-#: ../../mod/settings.php:761
+#: ../../mod/settings.php:823
msgid "System Page Layout Editor - (advanced)"
msgstr "Redigera systemets sidlayout (avancerat)"
-#: ../../mod/settings.php:796
+#: ../../mod/settings.php:826
+msgid "Use blog/list mode on channel page"
+msgstr "Använd blogg-/listläge på kanalsida"
+
+#: ../../mod/settings.php:826 ../../mod/settings.php:827
+msgid "(comments displayed separately)"
+msgstr "(kommentarer visas separat)"
+
+#: ../../mod/settings.php:827
+msgid "Use blog/list mode on matrix page"
+msgstr "Använd blogg-/listläge på matrissida"
+
+#: ../../mod/settings.php:828
+msgid "Channel page max height of content (in pixels)"
+msgstr "Maxhöjd för innehåll på kanalsidor (i pixels)"
+
+#: ../../mod/settings.php:828 ../../mod/settings.php:829
+msgid "click to expand content exceeding this height"
+msgstr "klicka för att fälla ut innehåll som överskrider den här höjden"
+
+#: ../../mod/settings.php:829
+msgid "Matrix page max height of content (in pixels)"
+msgstr "Maxhöjd för innehåll på matrissidan (i pixels)"
+
+#: ../../mod/settings.php:863
msgid "Nobody except yourself"
msgstr "Ingen utom dig själv"
-#: ../../mod/settings.php:797
+#: ../../mod/settings.php:864
msgid "Only those you specifically allow"
msgstr "Endast utvalda"
-#: ../../mod/settings.php:798
-msgid "Anybody in your address book"
-msgstr "Vem som helst i din adressbok"
+#: ../../mod/settings.php:865
+msgid "Approved connections"
+msgstr "Godkända kontakter"
+
+#: ../../mod/settings.php:866
+msgid "Any connections"
+msgstr "Alla kontakter"
-#: ../../mod/settings.php:799
+#: ../../mod/settings.php:867
msgid "Anybody on this website"
msgstr "Vem som helst på den här servern"
-#: ../../mod/settings.php:800
+#: ../../mod/settings.php:868
msgid "Anybody in this network"
msgstr "Vem som helst i det här nätverket"
-#: ../../mod/settings.php:801
+#: ../../mod/settings.php:869
msgid "Anybody authenticated"
msgstr "Vem som helst som har autentiserat sig"
-#: ../../mod/settings.php:802
+#: ../../mod/settings.php:870
msgid "Anybody on the internet"
msgstr "Vem som helst på Internet"
-#: ../../mod/settings.php:879
+#: ../../mod/settings.php:944
msgid "Publish your default profile in the network directory"
msgstr "Publicera din standardprofil i nätverkskatalogen"
-#: ../../mod/settings.php:879 ../../mod/settings.php:884
-#: ../../mod/settings.php:955 ../../mod/api.php:106 ../../mod/profiles.php:484
+#: ../../mod/settings.php:944 ../../mod/settings.php:949
+#: ../../mod/settings.php:1032 ../../mod/api.php:106
+#: ../../mod/profiles.php:592 ../../mod/admin.php:390
msgid "No"
msgstr "Nej"
-#: ../../mod/settings.php:879 ../../mod/settings.php:884
-#: ../../mod/settings.php:955 ../../mod/api.php:105 ../../mod/profiles.php:483
+#: ../../mod/settings.php:944 ../../mod/settings.php:949
+#: ../../mod/settings.php:1032 ../../mod/api.php:105
+#: ../../mod/profiles.php:591 ../../mod/admin.php:392
msgid "Yes"
msgstr "Ja"
-#: ../../mod/settings.php:884
+#: ../../mod/settings.php:949
msgid "Allow us to suggest you as a potential friend to new members?"
msgstr "Tillåt oss att föreslå dig som möjlig vän för nya medlemmar"
-#: ../../mod/settings.php:888 ../../mod/profile_photo.php:288
+#: ../../mod/settings.php:953 ../../mod/profile_photo.php:365
msgid "or"
msgstr "eller"
-#: ../../mod/settings.php:893
+#: ../../mod/settings.php:958
msgid "Your channel address is"
msgstr "Din kanaladress är"
-#: ../../mod/settings.php:927
+#: ../../mod/settings.php:1002
msgid "Channel Settings"
msgstr "Kanalinställningar"
-#: ../../mod/settings.php:936
+#: ../../mod/settings.php:1011
msgid "Basic Settings"
msgstr "Grundläggande inställningar"
-#: ../../mod/settings.php:939
+#: ../../mod/settings.php:1014
msgid "Your Timezone:"
msgstr "Din tidszon:"
-#: ../../mod/settings.php:940
+#: ../../mod/settings.php:1015
msgid "Default Post Location:"
msgstr "Standardplats:"
-#: ../../mod/settings.php:940
+#: ../../mod/settings.php:1015
msgid "Geographical location to display on your posts"
msgstr "Geografisk plats att visa för dina inlägg"
-#: ../../mod/settings.php:941
+#: ../../mod/settings.php:1016
msgid "Use Browser Location:"
msgstr "Använd webbläsarens position:"
-#: ../../mod/settings.php:943
+#: ../../mod/settings.php:1018
msgid "Adult Content"
-msgstr "Pornografiskt innehåll"
+msgstr "Innehåll olämpligt för barn"
-#: ../../mod/settings.php:943
+#: ../../mod/settings.php:1018
msgid ""
"This channel frequently or regularly publishes adult content. (Please tag "
"any adult material and/or nudity with #NSFW)"
-msgstr "Den här kanalen publicerar ofta eller regelbundet pornografiskt innehåll. (Tagga allt pornografiskt material och/eller nakenhet med #NSFW, tack)"
+msgstr "Den här kanalen publicerar ofta eller regelbundet innehåll som är olämpligt för barn. (Tagga allt pornografiskt material och/eller nakenhet med #NSFW, tack)"
-#: ../../mod/settings.php:945
+#: ../../mod/settings.php:1020
msgid "Security and Privacy Settings"
msgstr "Säkerhets- och integritetsinställningar"
-#: ../../mod/settings.php:947
+#: ../../mod/settings.php:1022
+msgid "Your permissions are already configured. Click to view/adjust"
+msgstr "Dina behörigheter har redan ställts in. Klicka för att visa/ändra"
+
+#: ../../mod/settings.php:1024
msgid "Hide my online presence"
msgstr "Visa inte min online-närvaro"
-#: ../../mod/settings.php:947
+#: ../../mod/settings.php:1024
msgid "Prevents displaying in your profile that you are online"
msgstr "Förhindrar att det syns i din profil att du är online"
-#: ../../mod/settings.php:949
+#: ../../mod/settings.php:1026
msgid "Simple Privacy Settings:"
msgstr "Enkla integritetsinställningar:"
-#: ../../mod/settings.php:950
+#: ../../mod/settings.php:1027
msgid ""
"Very Public - <em>extremely permissive (should be used with caution)</em>"
msgstr "Väldigt offentligt - <em>extremt tillåtande (bör användas försiktigt)</em>"
-#: ../../mod/settings.php:951
+#: ../../mod/settings.php:1028
msgid ""
"Typical - <em>default public, privacy when desired (similar to social "
"network permissions but with improved privacy)</em>"
msgstr "Typiskt - <em>offentligt som standard, privat när så önskas (liknande behörigheter som på sociala nätverk men med förbättrad integritet)</em>"
-#: ../../mod/settings.php:952
+#: ../../mod/settings.php:1029
msgid "Private - <em>default private, never open or public</em>"
msgstr "Privat - <em>privat som standard, aldrig öppet eller offentligt</em>"
-#: ../../mod/settings.php:953
+#: ../../mod/settings.php:1030
msgid "Blocked - <em>default blocked to/from everybody</em>"
msgstr "Blockera - <em>som standard blockerat till/från alla</em>"
-#: ../../mod/settings.php:955
+#: ../../mod/settings.php:1032
msgid "Allow others to tag your posts"
msgstr "Låt andra tagga dina inlägg"
-#: ../../mod/settings.php:955
+#: ../../mod/settings.php:1032
msgid ""
"Often used by the community to retro-actively flag inappropriate content"
msgstr "Ofta använt av gemenskapen för att i efterhand flagga olämpligt innehåll"
-#: ../../mod/settings.php:957
+#: ../../mod/settings.php:1034
msgid "Advanced Privacy Settings"
msgstr "Avancerade integritetsinställningar"
-#: ../../mod/settings.php:959
+#: ../../mod/settings.php:1036
msgid "Expire other channel content after this many days"
msgstr "Låt annat kanalinnehåll upphöra efter efter så här många dagar"
-#: ../../mod/settings.php:959
+#: ../../mod/settings.php:1036
msgid "0 or blank prevents expiration"
msgstr "0 eller blankt förhindrar upphörande"
-#: ../../mod/settings.php:960
+#: ../../mod/settings.php:1037
msgid "Maximum Friend Requests/Day:"
msgstr "Högsta antal vänförfrågningar per dag:"
-#: ../../mod/settings.php:960
+#: ../../mod/settings.php:1037
msgid "May reduce spam activity"
msgstr "Kan reducera spamaktivitet"
-#: ../../mod/settings.php:961
+#: ../../mod/settings.php:1038
msgid "Default Post Permissions"
msgstr "Standardbehörighet för inlägg"
-#: ../../mod/settings.php:962 ../../mod/mitem.php:134 ../../mod/mitem.php:177
-msgid "(click to open/close)"
-msgstr "(klicka för att öppna/stänga)"
+#: ../../mod/settings.php:1043
+msgid "Channel permissions category:"
+msgstr "Kanalens behörighetskategori:"
-#: ../../mod/settings.php:973
+#: ../../mod/settings.php:1051
msgid "Maximum private messages per day from unknown people:"
msgstr "Högsta antal privata meddelanden per dag från okända personer:"
-#: ../../mod/settings.php:973
+#: ../../mod/settings.php:1051
msgid "Useful to reduce spamming"
msgstr "Användbart för att minska skräputskick"
-#: ../../mod/settings.php:976
+#: ../../mod/settings.php:1054
msgid "Notification Settings"
msgstr "Notifieringsinställningar"
-#: ../../mod/settings.php:977
+#: ../../mod/settings.php:1055
msgid "By default post a status message when:"
msgstr "Skicka som standard ett statusmeddelande när:"
-#: ../../mod/settings.php:978
+#: ../../mod/settings.php:1056
msgid "accepting a friend request"
msgstr "du accepterar en vänförfrågan"
-#: ../../mod/settings.php:979
+#: ../../mod/settings.php:1057
msgid "joining a forum/community"
msgstr "du går med i ett forum/en gemenskap"
-#: ../../mod/settings.php:980
+#: ../../mod/settings.php:1058
msgid "making an <em>interesting</em> profile change"
msgstr "du gör en <em>intressant</em> ändring av profilen"
-#: ../../mod/settings.php:981
+#: ../../mod/settings.php:1059
msgid "Send a notification email when:"
-msgstr "Skicka en notifiering via e-post med när:"
+msgstr "Skicka en notifiering via e-post när:"
-#: ../../mod/settings.php:982
+#: ../../mod/settings.php:1060
msgid "You receive a connection request"
msgstr "Du får en kontaktförfrågan"
-#: ../../mod/settings.php:983
+#: ../../mod/settings.php:1061
msgid "Your connections are confirmed"
msgstr "Dina kontakter bekräftas"
-#: ../../mod/settings.php:984
+#: ../../mod/settings.php:1062
msgid "Someone writes on your profile wall"
msgstr "Någon skriver på din profilvägg"
-#: ../../mod/settings.php:985
+#: ../../mod/settings.php:1063
msgid "Someone writes a followup comment"
msgstr "Någon skriver en uppföljande kommentar"
-#: ../../mod/settings.php:986
+#: ../../mod/settings.php:1064
msgid "You receive a private message"
msgstr "Du tar emot ett privat meddelande"
-#: ../../mod/settings.php:987
+#: ../../mod/settings.php:1065
msgid "You receive a friend suggestion"
msgstr "Du tar emot ett vänförslag"
-#: ../../mod/settings.php:988
+#: ../../mod/settings.php:1066
msgid "You are tagged in a post"
msgstr "Du taggas i ett inlägg"
-#: ../../mod/settings.php:989
+#: ../../mod/settings.php:1067
msgid "You are poked/prodded/etc. in a post"
msgstr "Du puffas/stöts till/etc. i ett inlägg"
-#: ../../mod/settings.php:992
-msgid "Advanced Account/Page Type Settings"
-msgstr "Avancerade konto-/sidtypsinställningar"
-
-#: ../../mod/settings.php:993
-msgid "Change the behaviour of this account for special situations"
-msgstr "Ändra det här kontots beteende i särskilda situationer"
-
-#: ../../mod/settings.php:996
-msgid ""
-"Please enable expert mode (in <a href=\"settings/features\">Settings > "
-"Additional features</a>) to adjust!"
-msgstr "Aktivera expertläge (i <a href=\"settings/features\">Inställningar > Ytterligare funktioner</a>) för att göra ändringar!"
-
-#: ../../mod/settings.php:997
-msgid "Miscellaneous Settings"
-msgstr "Diverse inställningar"
-
-#: ../../mod/settings.php:999
-msgid "Personal menu to display in your channel pages"
-msgstr "Personlig meny att visa i dina kanalsidor"
-
-#: ../../mod/menu.php:21
-msgid "Menu updated."
-msgstr "Meny uppdaterad."
-
-#: ../../mod/menu.php:25
-msgid "Unable to update menu."
-msgstr "Kunde inte uppdatera meny."
-
-#: ../../mod/menu.php:30
-msgid "Menu created."
-msgstr "Meny skapad."
-
-#: ../../mod/menu.php:34
-msgid "Unable to create menu."
-msgstr "Kunde inte skapa meny."
-
-#: ../../mod/menu.php:57
-msgid "Manage Menus"
-msgstr "Hantera menyer"
-
-#: ../../mod/menu.php:60
-msgid "Drop"
-msgstr "Ta bort"
-
-#: ../../mod/menu.php:62
-msgid "Create a new menu"
-msgstr "Skapa en ny meny"
-
-#: ../../mod/menu.php:63
-msgid "Delete this menu"
-msgstr "Ta bort den här menyn"
-
-#: ../../mod/menu.php:64 ../../mod/menu.php:109
-msgid "Edit menu contents"
-msgstr "Redigera menyinnehåll"
-
-#: ../../mod/menu.php:65
-msgid "Edit this menu"
-msgstr "Redigera den här menyn"
-
-#: ../../mod/menu.php:80
-msgid "New Menu"
-msgstr "Ny meny"
-
-#: ../../mod/menu.php:81 ../../mod/menu.php:110
-msgid "Menu name"
-msgstr "Menynamn"
-
-#: ../../mod/menu.php:81 ../../mod/menu.php:110
-msgid "Must be unique, only seen by you"
-msgstr "MÃ¥ste vara unikt, ses endast av dig"
-
-#: ../../mod/menu.php:82 ../../mod/menu.php:111
-msgid "Menu title"
-msgstr "Menytitel"
-
-#: ../../mod/menu.php:82 ../../mod/menu.php:111
-msgid "Menu title as seen by others"
-msgstr "Menytitel som andra ser den"
-
-#: ../../mod/menu.php:83 ../../mod/menu.php:112
-msgid "Allow bookmarks"
-msgstr "Tillåt bokmärken"
-
-#: ../../mod/menu.php:83 ../../mod/menu.php:112
-msgid "Menu may be used to store saved bookmarks"
-msgstr "Menyn kan användas för att spara bokmärken"
-
-#: ../../mod/menu.php:84 ../../mod/mitem.php:142 ../../mod/new_channel.php:117
-msgid "Create"
-msgstr "Skapa"
-
-#: ../../mod/menu.php:92 ../../mod/mitem.php:14
-msgid "Menu not found."
-msgstr "Menyn hittades inte."
-
-#: ../../mod/menu.php:98
-msgid "Menu deleted."
-msgstr "Meny borttagen."
-
-#: ../../mod/menu.php:100
-msgid "Menu could not be deleted."
-msgstr "Menyn kunde inte tas bort."
-
-#: ../../mod/menu.php:106
-msgid "Edit Menu"
-msgstr "Redigera meny"
-
-#: ../../mod/menu.php:108
-msgid "Add or remove entries to this menu"
-msgstr "Lägg till eller ta bort menyval"
-
-#: ../../mod/menu.php:114 ../../mod/mitem.php:186
-msgid "Modify"
-msgstr "Ändra"
-
-#: ../../mod/menu.php:120 ../../mod/mitem.php:78 ../../mod/xchan.php:27
-#: ../../mod/dirprofile.php:181
-msgid "Not found."
-msgstr "Hittades inte."
-
-#: ../../mod/webpages.php:122 ../../mod/layouts.php:116
-#: ../../mod/blocks.php:97
-msgid "View"
-msgstr "Visa"
-
-#: ../../mod/api.php:76 ../../mod/api.php:102
-msgid "Authorize application connection"
-msgstr "Tillåt anslutning av applikation"
-
-#: ../../mod/api.php:77
-msgid "Return to your app and insert this Securty Code:"
-msgstr "Återgå till din applikation och ange den här säkerhetskoden:"
-
-#: ../../mod/api.php:89
-msgid "Please login to continue."
-msgstr "Logga in för att fortsätta."
-
-#: ../../mod/api.php:104
-msgid ""
-"Do you want to authorize this application to access your posts and contacts,"
-" and/or create new posts for you?"
-msgstr "Vill du låta den här applikationen få tillgång till dina inlägg och kontakter, och/eller skapa nya inlägg åt dig?"
-
-#: ../../mod/apps.php:8
-msgid "No installed applications."
-msgstr "Inga installerade applikationer"
-
-#: ../../mod/apps.php:13
-msgid "Applications"
-msgstr "Applikationer"
-
-#: ../../mod/editpost.php:20 ../../mod/editblock.php:8
-#: ../../mod/editblock.php:27 ../../mod/editblock.php:53
-#: ../../mod/editlayout.php:36 ../../mod/editwebpage.php:32
-msgid "Item not found"
-msgstr "Posten hittas inte"
-
-#: ../../mod/editpost.php:31
-msgid "Item is not editable"
-msgstr "Posten går ej att redigera"
-
-#: ../../mod/editpost.php:42 ../../mod/rpost.php:86
-msgid "Edit post"
-msgstr "Redigera inlägg"
-
-#: ../../mod/editpost.php:53
-msgid "Delete item?"
-msgstr "Ta bort posten?"
-
-#: ../../mod/editpost.php:116 ../../mod/editblock.php:115
-#: ../../mod/editlayout.php:110 ../../mod/editwebpage.php:147
-msgid "Insert YouTube video"
-msgstr "Infoga Youtube-video"
-
-#: ../../mod/editpost.php:117 ../../mod/editblock.php:116
-#: ../../mod/editlayout.php:111 ../../mod/editwebpage.php:148
-msgid "Insert Vorbis [.ogg] video"
-msgstr "Infoga Vorbis [.ogg]-video"
-
-#: ../../mod/editpost.php:118 ../../mod/editblock.php:117
-#: ../../mod/editlayout.php:112 ../../mod/editwebpage.php:149
-msgid "Insert Vorbis [.ogg] audio"
-msgstr "Infoga Vorbis [.ogg]-ljud"
-
-#: ../../mod/cloud.php:112
-msgid "Red Matrix - Guests: Username: {your email address}, Password: +++"
-msgstr "Red Matrix - Gäster: Användarnamn: {din e-postadress}, Lösenord: +++"
-
-#: ../../mod/bookmarks.php:38
-msgid "Bookmark added"
-msgstr "Bokmärke tillagt"
-
-#: ../../mod/bookmarks.php:58
-msgid "My Bookmarks"
-msgstr "Mina bokmärken"
-
-#: ../../mod/bookmarks.php:69
-msgid "My Connections Bookmarks"
-msgstr "Mina kontakters bokmärken"
-
-#: ../../mod/subthread.php:105
-#, php-format
-msgid "%1$s is following %2$s's %3$s"
-msgstr "%1$s följer %2$ss %3$s"
-
-#: ../../mod/update_network.php:23 ../../mod/update_channel.php:43
-#: ../../mod/update_search.php:46 ../../mod/update_display.php:25
-msgid "[Embedded content - reload page to view]"
-msgstr "[Inbäddat innehåll - ladda om sidan för att visa]"
-
-#: ../../mod/chanview.php:77 ../../mod/home.php:50 ../../mod/page.php:47
-#: ../../mod/block.php:39 ../../mod/wall_upload.php:28
-msgid "Channel not found."
-msgstr "Kanalen hittas inte."
-
-#: ../../mod/chanview.php:93
-msgid "toggle full screen mode"
-msgstr "växla helskärmsläge"
-
-#: ../../mod/tagger.php:98
-#, php-format
-msgid "%1$s tagged %2$s's %3$s with %4$s"
-msgstr "%1$s taggade%2$ss %3$s med %4$s"
-
-#: ../../mod/acl.php:239
-msgid "network"
-msgstr "nätverk"
-
-#: ../../mod/viewconnections.php:17 ../../mod/search.php:13
-#: ../../mod/directory.php:15 ../../mod/display.php:9
-#: ../../mod/dirprofile.php:9 ../../mod/photos.php:443
-msgid "Public access denied."
-msgstr "Offentlig behörighet saknas."
+#: ../../mod/settings.php:1070
+msgid "Show visual notifications including:"
+msgstr "Visa visuella notifieringar vid:"
-#: ../../mod/viewconnections.php:50
-msgid "No connections."
-msgstr "Inga kontakter."
+#: ../../mod/settings.php:1072
+msgid "Unseen matrix activity"
+msgstr "Oläst matrisaktivitet"
-#: ../../mod/viewconnections.php:62
-#, php-format
-msgid "Visit %s's profile [%s]"
-msgstr "Besök %ss profil [%s]"
-
-#: ../../mod/viewconnections.php:77
-msgid "View Connnections"
-msgstr "Visa kontakter"
+#: ../../mod/settings.php:1073
+msgid "Unseen channel activity"
+msgstr "Oläst kanalaktivitet"
-#: ../../mod/tagrm.php:41
-msgid "Tag removed"
-msgstr "Tagg borttagen"
+#: ../../mod/settings.php:1074
+msgid "Unseen private messages"
+msgstr "Olästa privata meddelanden"
-#: ../../mod/tagrm.php:79
-msgid "Remove Item Tag"
-msgstr "Ta bort innehållstagg"
+#: ../../mod/settings.php:1074 ../../mod/settings.php:1079
+#: ../../mod/settings.php:1080 ../../mod/settings.php:1081
+msgid "Recommended"
+msgstr "Rekommenderas"
-#: ../../mod/tagrm.php:81
-msgid "Select a tag to remove: "
-msgstr "Välj en tagg att ta bort: "
+#: ../../mod/settings.php:1075
+msgid "Upcoming events"
+msgstr "Kommande händelser"
-#: ../../mod/tagrm.php:93 ../../mod/delegate.php:130 ../../mod/photos.php:908
-msgid "Remove"
-msgstr "Ta bort"
+#: ../../mod/settings.php:1076
+msgid "Events today"
+msgstr "Dagens händelser"
-#: ../../mod/connect.php:55 ../../mod/connect.php:103
-msgid "Continue"
-msgstr "Fortsätt"
+#: ../../mod/settings.php:1077
+msgid "Upcoming birthdays"
+msgstr "Kommande födelsedagar"
-#: ../../mod/connect.php:84
-msgid "Premium Channel Setup"
-msgstr "Inställning av premiumkanal"
+#: ../../mod/settings.php:1077
+msgid "Not available in all themes"
+msgstr "Inte tillgänglig i alla teman"
-#: ../../mod/connect.php:86
-msgid "Enable premium channel connection restrictions"
-msgstr "Aktivera kontaktrestriktioner för premiumkanal"
+#: ../../mod/settings.php:1078
+msgid "System (personal) notifications"
+msgstr "Systemmeddelanden (personliga)"
-#: ../../mod/connect.php:87
-msgid ""
-"Please enter your restrictions or conditions, such as paypal receipt, usage "
-"guidelines, etc."
-msgstr "Ange dina restriktioner och villkor, som Paypal-kvitto, användarriktlinjer, etc."
+#: ../../mod/settings.php:1079
+msgid "System info messages"
+msgstr "Systemmeddelanden"
-#: ../../mod/connect.php:89 ../../mod/connect.php:109
-msgid ""
-"This channel may require additional steps or acknowledgement of the "
-"following conditions prior to connecting:"
-msgstr "Den här kanalen kan kräva ytterligare steg eller godkännande av följande villkor innan anslutning:"
+#: ../../mod/settings.php:1080
+msgid "System critical alerts"
+msgstr "Systemkritiska varningar"
-#: ../../mod/connect.php:90
-msgid ""
-"Potential connections will then see the following text before proceeding:"
-msgstr "Potentiella kontakter kommer sedan att se följande text innan de går vidare:"
+#: ../../mod/settings.php:1081
+msgid "New connections"
+msgstr "Nya kontakter"
-#: ../../mod/connect.php:91 ../../mod/connect.php:112
-msgid ""
-"By continuing, I certify that I have complied with any instructions provided"
-" on this page."
-msgstr "Genom att fortsätta intygar jag att jag har följt alla instruktioner som ges på den här sidan."
+#: ../../mod/settings.php:1082
+msgid "System Registrations"
+msgstr "Systemregistreringar"
-#: ../../mod/connect.php:100
-msgid "(No specific instructions have been provided by the channel owner.)"
-msgstr "(Inga specifika instruktioner har givits av kanalägaren.)"
+#: ../../mod/settings.php:1084
+msgid "Notify me of events this many days in advance"
+msgstr "Meddela mig om händelser så här många dagar i förväg"
-#: ../../mod/connect.php:108
-msgid "Restricted or Premium Channel"
-msgstr "Begränsad kanal eller premiumkanal"
+#: ../../mod/settings.php:1084
+msgid "Must be greater than 0"
+msgstr "Måste vara större än 0"
-#: ../../mod/delegate.php:95
-msgid "No potential page delegates located."
-msgstr "Inga potentiella sid-ombud funna."
+#: ../../mod/settings.php:1086
+msgid "Advanced Account/Page Type Settings"
+msgstr "Avancerade konto-/sidtypsinställningar"
-#: ../../mod/delegate.php:121
-msgid "Delegate Page Management"
-msgstr "Delegera sidhantering"
+#: ../../mod/settings.php:1087
+msgid "Change the behaviour of this account for special situations"
+msgstr "Ändra det här kontots beteende i särskilda situationer"
-#: ../../mod/delegate.php:123
+#: ../../mod/settings.php:1090
msgid ""
-"Delegates are able to manage all aspects of this account/page except for "
-"basic account settings. Please do not delegate your personal account to "
-"anybody that you do not trust completely."
-msgstr "Ombud kan hantera alla aspekter av det här kontot/den här sidan förutom grundläggande kontoinställningar. Delegera inte ditt personliga konto till någon som du inte litar fullständigt på."
-
-#: ../../mod/delegate.php:124
-msgid "Existing Page Managers"
-msgstr "Befintliga sid-ansvariga"
-
-#: ../../mod/delegate.php:126
-msgid "Existing Page Delegates"
-msgstr "Befintliga sid-ombud"
-
-#: ../../mod/delegate.php:128
-msgid "Potential Delegates"
-msgstr "Potentiella ombud"
-
-#: ../../mod/delegate.php:131
-msgid "Add"
-msgstr "Lägg till"
-
-#: ../../mod/delegate.php:132
-msgid "No entries."
-msgstr "Inga poster."
-
-#: ../../mod/pdledit.php:13
-msgid "Layout updated."
-msgstr "Layout uppdaterad."
-
-#: ../../mod/pdledit.php:28 ../../mod/pdledit.php:53
-msgid "Edit System Page Description"
-msgstr "Redigera systemsidbeskrivning"
-
-#: ../../mod/pdledit.php:48
-msgid "Layout not found."
-msgstr "Layout hittas inte."
-
-#: ../../mod/pdledit.php:54
-msgid "Module Name:"
-msgstr "Modulnamn:"
-
-#: ../../mod/pdledit.php:55 ../../mod/layouts.php:59
-msgid "Layout Help"
-msgstr "Layouthjälp"
-
-#: ../../mod/attach.php:9
-msgid "Item not available."
-msgstr "Post inte tillgänglig."
-
-#: ../../mod/item.php:147
-msgid "Unable to locate original post."
-msgstr "Kunde inte hitta originalinlägget."
-
-#: ../../mod/item.php:345
-msgid "Empty post discarded."
-msgstr "Tomt inlägg förkastat."
-
-#: ../../mod/item.php:385
-msgid "Executable content type not permitted to this channel."
-msgstr "Körbart innehåll tillåts inte i den här kanalen."
-
-#: ../../mod/item.php:794
-msgid "System error. Post not saved."
-msgstr "Systemfel. Inlägget inte sparat."
-
-#: ../../mod/item.php:1237
-#, php-format
-msgid "You have reached your limit of %1$.0f top level posts."
-msgstr "Du har nått din gräns på %1$.0f toppnivåinlägg."
-
-#: ../../mod/item.php:1243
-#, php-format
-msgid "You have reached your limit of %1$.0f webpages."
-msgstr "Du har nått din gräns på %1$.0f webbsidor."
-
-#: ../../mod/mitem.php:47
-msgid "Menu element updated."
-msgstr "Menyval uppdaterat."
-
-#: ../../mod/mitem.php:51
-msgid "Unable to update menu element."
-msgstr "Kunde inte uppdatera menyval."
-
-#: ../../mod/mitem.php:57
-msgid "Menu element added."
-msgstr "Menyval tillagt."
-
-#: ../../mod/mitem.php:61
-msgid "Unable to add menu element."
-msgstr "Kunde inte lägga till menyval."
-
-#: ../../mod/mitem.php:96
-msgid "Manage Menu Elements"
-msgstr "Hantera menyval"
-
-#: ../../mod/mitem.php:99
-msgid "Edit menu"
-msgstr "Redigera meny"
-
-#: ../../mod/mitem.php:102
-msgid "Edit element"
-msgstr "Redigera menyval"
-
-#: ../../mod/mitem.php:103
-msgid "Drop element"
-msgstr "Ta bort menyval"
-
-#: ../../mod/mitem.php:104
-msgid "New element"
-msgstr "Nytt menyval"
-
-#: ../../mod/mitem.php:105
-msgid "Edit this menu container"
-msgstr "Redigera den här menysamlaren"
-
-#: ../../mod/mitem.php:106
-msgid "Add menu element"
-msgstr "Lägg till menyval"
-
-#: ../../mod/mitem.php:107
-msgid "Delete this menu item"
-msgstr "Ta bort det här menyvalet"
-
-#: ../../mod/mitem.php:108
-msgid "Edit this menu item"
-msgstr "Redigera det här menyvalet"
-
-#: ../../mod/mitem.php:131
-msgid "New Menu Element"
-msgstr "Nytt menyval"
-
-#: ../../mod/mitem.php:133 ../../mod/mitem.php:176
-msgid "Menu Item Permissions"
-msgstr "Behörighet för menyval"
-
-#: ../../mod/mitem.php:136 ../../mod/mitem.php:180
-msgid "Link text"
-msgstr "Länktext"
-
-#: ../../mod/mitem.php:137 ../../mod/mitem.php:181
-msgid "URL of link"
-msgstr "Länkens URL"
-
-#: ../../mod/mitem.php:138 ../../mod/mitem.php:182
-msgid "Use Red magic-auth if available"
-msgstr "Använd Red magic-auth om tillgängligt"
-
-#: ../../mod/mitem.php:139 ../../mod/mitem.php:183
-msgid "Open link in new window"
-msgstr "Öppna länk i nytt fönster"
-
-#: ../../mod/mitem.php:141 ../../mod/mitem.php:185
-msgid "Order in list"
-msgstr "Ordningstal i listan"
-
-#: ../../mod/mitem.php:141 ../../mod/mitem.php:185
-msgid "Higher numbers will sink to bottom of listing"
-msgstr "Större tal sjunker till botten av listan"
-
-#: ../../mod/mitem.php:154
-msgid "Menu item not found."
-msgstr "Menyval hittas inte."
-
-#: ../../mod/mitem.php:163
-msgid "Menu item deleted."
-msgstr "Menyval borttaget."
-
-#: ../../mod/mitem.php:165
-msgid "Menu item could not be deleted."
-msgstr "Menyval kunde inte tas bort."
-
-#: ../../mod/mitem.php:174
-msgid "Edit Menu Element"
-msgstr "Redigera menyval"
-
-#: ../../mod/zfinger.php:23
-msgid "invalid target signature"
-msgstr "ogiltig målsignatur"
-
-#: ../../mod/profperm.php:29 ../../mod/profperm.php:58
-msgid "Invalid profile identifier."
-msgstr "Ogiltigt profil-ID."
-
-#: ../../mod/profperm.php:105
-msgid "Profile Visibility Editor"
-msgstr "Redigera profilsynlighet"
+"Please enable expert mode (in <a href=\"settings/features\">Settings > "
+"Additional features</a>) to adjust!"
+msgstr "Aktivera expertläge (i <a href=\"settings/features\">Inställningar > Ytterligare funktioner</a>) för att göra ändringar!"
-#: ../../mod/profperm.php:109
-msgid "Click on a contact to add or remove."
-msgstr "Klicka på en kontakt för att lägga till eller ta bort."
+#: ../../mod/settings.php:1091
+msgid "Miscellaneous Settings"
+msgstr "Diverse inställningar"
-#: ../../mod/profperm.php:118
-msgid "Visible To"
-msgstr "Synlig för"
+#: ../../mod/settings.php:1093
+msgid "Personal menu to display in your channel pages"
+msgstr "Personlig meny att visa i dina kanalsidor"
-#: ../../mod/profperm.php:134 ../../mod/connections.php:277
-msgid "All Connections"
-msgstr "Alla kontakter"
+#: ../../mod/settings.php:1094
+msgid "Remove this channel"
+msgstr "Ta bort den här kanalen"
#: ../../mod/group.php:20
msgid "Collection created."
-msgstr "Sammanhang skapat"
+msgstr "Krets skapad."
#: ../../mod/group.php:26
msgid "Could not create collection."
-msgstr "Kunde inte skapa sammanhanget."
+msgstr "Kunde inte skapa krets."
#: ../../mod/group.php:54
msgid "Collection updated."
-msgstr "Sammanhanget uppdatarat."
+msgstr "Kretsen uppdaterad."
#: ../../mod/group.php:86
msgid "Create a collection of channels."
-msgstr "Skapa ett sammanhang av kanaler."
+msgstr "Skapa en krets av kanaler."
#: ../../mod/group.php:87 ../../mod/group.php:183
msgid "Collection Name: "
-msgstr "Namn på sammanhang: "
+msgstr "Namn på krets: "
#: ../../mod/group.php:89 ../../mod/group.php:186
msgid "Members are visible to other channels"
-msgstr "Medlemmar är synliga för andra kanaler"
+msgstr "Medlemmar kan ses av andra kanaler"
#: ../../mod/group.php:107
msgid "Collection removed."
-msgstr "Sammanhang borttaget."
+msgstr "Krets borttagen."
#: ../../mod/group.php:109
msgid "Unable to remove collection."
-msgstr "Kunde inte ta bort sammanhang."
+msgstr "Kunde inte ta bort krets."
#: ../../mod/group.php:182
msgid "Collection Editor"
-msgstr "Sammanhangsredigering"
+msgstr "Redigera krets"
#: ../../mod/group.php:196
msgid "Members"
@@ -4538,1279 +4473,1370 @@ msgstr "Medlemmar"
msgid "All Connected Channels"
msgstr "Alla anslutna kanaler"
-#: ../../mod/group.php:231
+#: ../../mod/group.php:233
msgid "Click on a channel to add or remove."
msgstr "Klicka på en kanal för att lägga till eller ta bort."
-#: ../../mod/admin.php:52
-msgid "Theme settings updated."
-msgstr "Temainställningar uppdaterade."
-
-#: ../../mod/admin.php:92 ../../mod/admin.php:440
-msgid "Site"
-msgstr "Server"
-
-#: ../../mod/admin.php:93
-msgid "Accounts"
-msgstr "Konton"
-
-#: ../../mod/admin.php:94 ../../mod/admin.php:883
-msgid "Channels"
-msgstr "Kanaler"
-
-#: ../../mod/admin.php:95 ../../mod/admin.php:974 ../../mod/admin.php:1016
-msgid "Plugins"
-msgstr "Tillägg"
-
-#: ../../mod/admin.php:96 ../../mod/admin.php:1179 ../../mod/admin.php:1215
-msgid "Themes"
-msgstr "Teman"
-
-#: ../../mod/admin.php:97 ../../mod/admin.php:540
-msgid "Server"
-msgstr "Server"
-
-#: ../../mod/admin.php:98
-msgid "DB updates"
-msgstr "Databasuppdateringar"
-
-#: ../../mod/admin.php:112 ../../mod/admin.php:119 ../../mod/admin.php:1302
-msgid "Logs"
-msgstr "Loggar"
-
-#: ../../mod/admin.php:118
-msgid "Plugin Features"
-msgstr "Tilläggsfunktioner"
-
-#: ../../mod/admin.php:120
-msgid "User registrations waiting for confirmation"
-msgstr "Användarregistreringar som behöver bekräftas"
-
-#: ../../mod/admin.php:197
-msgid "Message queues"
-msgstr "Meddelandeköer"
-
-#: ../../mod/admin.php:202 ../../mod/admin.php:439 ../../mod/admin.php:539
-#: ../../mod/admin.php:748 ../../mod/admin.php:882 ../../mod/admin.php:973
-#: ../../mod/admin.php:1015 ../../mod/admin.php:1178 ../../mod/admin.php:1214
-#: ../../mod/admin.php:1301
-msgid "Administration"
-msgstr "Administration"
-
-#: ../../mod/admin.php:203
-msgid "Summary"
-msgstr "Sammanfattning"
-
-#: ../../mod/admin.php:205
-msgid "Registered users"
-msgstr "Registrerade användare"
-
-#: ../../mod/admin.php:207 ../../mod/admin.php:543
-msgid "Pending registrations"
-msgstr "Pågående registreringar"
-
-#: ../../mod/admin.php:208
-msgid "Version"
-msgstr "Version"
-
-#: ../../mod/admin.php:210 ../../mod/admin.php:544
-msgid "Active plugins"
-msgstr "Aktiva tillägg"
-
-#: ../../mod/admin.php:360
-msgid "Site settings updated."
-msgstr "Serverinställningar uppdaterade."
-
-#: ../../mod/admin.php:391
-msgid "No special theme for accessibility"
-msgstr "Inget speciellt tema för tillgänglighet"
-
-#: ../../mod/admin.php:419
-msgid "Closed"
-msgstr "Stängd"
-
-#: ../../mod/admin.php:420
-msgid "Requires approval"
-msgstr "Kräver godkännande"
-
-#: ../../mod/admin.php:421
-msgid "Open"
-msgstr "Öppen"
-
-#: ../../mod/admin.php:426
-msgid "Private"
-msgstr "Privat"
-
-#: ../../mod/admin.php:427
-msgid "Paid Access"
-msgstr "Betald åtkomst"
-
-#: ../../mod/admin.php:428
-msgid "Free Access"
-msgstr "Fri åtkomst"
-
-#: ../../mod/admin.php:429
-msgid "Tiered Access"
-msgstr "Uppdelad åtkomst"
-
-#: ../../mod/admin.php:442 ../../mod/register.php:189
-msgid "Registration"
-msgstr "Registrering"
-
-#: ../../mod/admin.php:443
-msgid "File upload"
-msgstr "Filuppladdning"
-
-#: ../../mod/admin.php:444
-msgid "Policies"
-msgstr "Policyer"
-
-#: ../../mod/admin.php:449
-msgid "Site name"
-msgstr "Servernamn"
-
-#: ../../mod/admin.php:450
-msgid "Banner/Logo"
-msgstr "Banner/logga"
-
-#: ../../mod/admin.php:451
-msgid "Administrator Information"
-msgstr "Administratörsinformation"
-
-#: ../../mod/admin.php:451
-msgid ""
-"Contact information for site administrators. Displayed on siteinfo page. "
-"BBCode can be used here"
-msgstr "Kontaktinfo till sidadministratörer. Visas på sidinfosidan. BBCode kan användas här"
-
-#: ../../mod/admin.php:452
-msgid "System language"
-msgstr "Systemspråk"
-
-#: ../../mod/admin.php:453
-msgid "System theme"
-msgstr "Systemtema"
-
-#: ../../mod/admin.php:453
-msgid ""
-"Default system theme - may be over-ridden by user profiles - <a href='#' "
-"id='cnftheme'>change theme settings</a>"
-msgstr "Förvalt systemtema - kan åsidosättas i användarprofiler - <a href='#' id='cnftheme'>ändra temainställningar</a>"
-
-#: ../../mod/admin.php:454
-msgid "Mobile system theme"
-msgstr "Mobilt systemtema"
-
-#: ../../mod/admin.php:454
-msgid "Theme for mobile devices"
-msgstr "Tema för mobila enheter"
-
-#: ../../mod/admin.php:455
-msgid "Accessibility system theme"
-msgstr "Systemtema för ökad tillgänglighet"
-
-#: ../../mod/admin.php:455
-msgid "Accessibility theme"
-msgstr "Tillgänglighetstema"
-
-#: ../../mod/admin.php:456
-msgid "Channel to use for this website's static pages"
-msgstr "Kanal att använda för den här webbplatsens statiska sidor"
-
-#: ../../mod/admin.php:456
-msgid "Site Channel"
-msgstr "Sidkanal"
-
-#: ../../mod/admin.php:458
-msgid "Maximum image size"
-msgstr "Maximal bildstorlek"
-
-#: ../../mod/admin.php:458
-msgid ""
-"Maximum size in bytes of uploaded images. Default is 0, which means no "
-"limits."
-msgstr "Maximal storlek i byte för uppladdade bilder. Standard är 0, vilket innebär ingen storleksbegränsning."
-
-#: ../../mod/admin.php:459
-msgid "Register policy"
-msgstr "Registreringspolicy"
-
-#: ../../mod/admin.php:460
-msgid "Access policy"
-msgstr "Ã…tkomstpolicy"
-
-#: ../../mod/admin.php:461
-msgid "Register text"
-msgstr "Registreringstext"
-
-#: ../../mod/admin.php:461
-msgid "Will be displayed prominently on the registration page."
-msgstr "Visas tydligt på registreringssidan."
-
-#: ../../mod/admin.php:462
-msgid "Accounts abandoned after x days"
-msgstr "Konto övergivet efter x dagar"
-
-#: ../../mod/admin.php:462
-msgid ""
-"Will not waste system resources polling external sites for abandonded "
-"accounts. Enter 0 for no time limit."
-msgstr "Slösar inte systemresurser genom att fråga externa servrar efter övergivna konton. 0 innebär ingen tidsbegränsning."
-
-#: ../../mod/admin.php:463
-msgid "Allowed friend domains"
-msgstr "Tillåtna vändomäner"
-
-#: ../../mod/admin.php:463
-msgid ""
-"Comma separated list of domains which are allowed to establish friendships "
-"with this site. Wildcards are accepted. Empty to allow any domains"
-msgstr "Kommaseparerad lista med domäner som tillåts att upprätta ett vänförhållande med den här servern. Jokertecken är tillåtna. Töm för att tillåta alla domäner."
-
-#: ../../mod/admin.php:464
-msgid "Allowed email domains"
-msgstr "Tillåtna e-postdomäner"
-
-#: ../../mod/admin.php:464
-msgid ""
-"Comma separated list of domains which are allowed in email addresses for "
-"registrations to this site. Wildcards are accepted. Empty to allow any "
-"domains"
-msgstr "Kommaseparerad lista med domäner som tillåts i e-postadresser för registreringar på den här servern. Jokertecken är tillåtna. Töm för att tillåta alla domäner."
-
-#: ../../mod/admin.php:465
-msgid "Block public"
-msgstr "Blockera offentlig åtkomst"
-
-#: ../../mod/admin.php:465
-msgid ""
-"Check to block public access to all otherwise public personal pages on this "
-"site unless you are currently logged in."
-msgstr "Välj för att blockera åtkomst till alla personliga sidor som annars skulle vara offentliga på den här servern om man inte är inloggad."
-
-#: ../../mod/admin.php:466
-msgid "Force publish"
-msgstr "Tvinga publicering"
-
-#: ../../mod/admin.php:466
-msgid ""
-"Check to force all profiles on this site to be listed in the site directory."
-msgstr "Välj för att tvinga alla profiler på den här servern att listas i serverkatalogen."
-
-#: ../../mod/admin.php:467
-msgid "Disable discovery tab"
-msgstr "Inaktivera upptäck-fliken"
-
-#: ../../mod/admin.php:467
-msgid ""
-"Remove the tab in the network view with public content pulled from sources "
-"chosen for this site."
-msgstr "Ta bort fliken i nätverksvyn med offentligt innehåll som hämtas från källor valda för den här servern."
-
-#: ../../mod/admin.php:468
-msgid "No login on Homepage"
-msgstr "Ingen inloggning på hemsidan"
-
-#: ../../mod/admin.php:468
-msgid ""
-"Check to hide the login form from your sites homepage when visitors arrive "
-"who are not logged in (e.g. when you put the content of the homepage in via "
-"the site channel)."
-msgstr "Välj för att gömma inloggningsformuläret från serverns hemsida för oinloggade besökare (t.ex. när du lägger in hemsideinnehållet via serverkanalen)."
-
-#: ../../mod/admin.php:470
-msgid "Proxy user"
-msgstr "Proxyanvändare"
-
-#: ../../mod/admin.php:471
-msgid "Proxy URL"
-msgstr "Proxy-URL"
-
-#: ../../mod/admin.php:472
-msgid "Network timeout"
-msgstr "Nätverkstimeout"
-
-#: ../../mod/admin.php:472
-msgid "Value is in seconds. Set to 0 for unlimited (not recommended)."
-msgstr "Värde i sekunder. Sätt till 0 för obegränsat (ej rekommenderat)."
-
-#: ../../mod/admin.php:473
-msgid "Delivery interval"
-msgstr "Leveransintervall"
-
-#: ../../mod/admin.php:473
-msgid ""
-"Delay background delivery processes by this many seconds to reduce system "
-"load. Recommend: 4-5 for shared hosts, 2-3 for virtual private servers. 0-1 "
-"for large dedicated servers."
-msgstr "Fördröj leveransprocesser som görs i bakgrunden så här många sekunder för att reducera systembelastningen. Rekommenderat: 4-5 för delade värdar, 2-3 för virtuella privata servrar. 0-1 för stora dedikerade servrar."
-
-#: ../../mod/admin.php:474
-msgid "Poll interval"
-msgstr "Hämtningsintervall"
-
-#: ../../mod/admin.php:474
-msgid ""
-"Delay background polling processes by this many seconds to reduce system "
-"load. If 0, use delivery interval."
-msgstr "Fördröj hämtningsprocesser som görs i bakgrunden så här många sekunder för att reducera systembelastningen. Om 0 används leveransintervallet."
-
-#: ../../mod/admin.php:475
-msgid "Maximum Load Average"
-msgstr "Maximal genomsnittsbelastning"
-
-#: ../../mod/admin.php:475
-msgid ""
-"Maximum system load before delivery and poll processes are deferred - "
-"default 50."
-msgstr "Maximal systembelastning innan leverans- och hämtningsprocesser skjuts upp - standard är 50."
-
-#: ../../mod/admin.php:531
-msgid "No server found"
-msgstr "Ingen server hittad"
-
-#: ../../mod/admin.php:538 ../../mod/admin.php:762
-msgid "ID"
-msgstr "ID"
-
-#: ../../mod/admin.php:538
-msgid "for channel"
-msgstr "för kanal"
-
-#: ../../mod/admin.php:538
-msgid "on server"
-msgstr "på server"
-
-#: ../../mod/admin.php:538
-msgid "Status"
-msgstr "Status"
-
-#: ../../mod/admin.php:559
-msgid "Update has been marked successful"
-msgstr "Uppdatering har markerats som genomförd"
-
-#: ../../mod/admin.php:569
-#, php-format
-msgid "Executing %s failed. Check system logs."
-msgstr "Körning av %s misslyckades. Kontrollera systemloggarna."
-
-#: ../../mod/admin.php:572
-#, php-format
-msgid "Update %s was successfully applied."
-msgstr "Uppdatering %s genomfördes utan problem."
-
-#: ../../mod/admin.php:576
-#, php-format
-msgid "Update %s did not return a status. Unknown if it succeeded."
-msgstr "Uppdatering %s returnerade ingen status. Oklart om den lyckades."
-
-#: ../../mod/admin.php:579
-#, php-format
-msgid "Update function %s could not be found."
-msgstr "Uppdateringsfunktion %s kunde inte hittas."
-
-#: ../../mod/admin.php:594
-msgid "No failed updates."
-msgstr "Inga misslyckade uppdateringar."
-
-#: ../../mod/admin.php:598
-msgid "Failed Updates"
-msgstr "Misslyckade uppdateringar"
-
-#: ../../mod/admin.php:600
-msgid "Mark success (if update was manually applied)"
-msgstr "Markera som genomförd (om uppdateringen gjordes manuellt)"
-
-#: ../../mod/admin.php:601
-msgid "Attempt to execute this update step automatically"
-msgstr "Försök att köra den här uppdateringen automatiskt"
-
-#: ../../mod/admin.php:627
-#, php-format
-msgid "%s user blocked/unblocked"
-msgid_plural "%s users blocked/unblocked"
-msgstr[0] "%s användare blockerad/avblockerad"
-msgstr[1] "%s användare blockerade/avblockerade"
-
-#: ../../mod/admin.php:634
-#, php-format
-msgid "%s user deleted"
-msgid_plural "%s users deleted"
-msgstr[0] "%s användare borttagen"
-msgstr[1] "%s användare borttagna"
-
-#: ../../mod/admin.php:665
-msgid "Account not found"
-msgstr "Konto hittas inte"
-
-#: ../../mod/admin.php:676
-#, php-format
-msgid "User '%s' deleted"
-msgstr "Användare '%s' borttagen"
-
-#: ../../mod/admin.php:685
-#, php-format
-msgid "User '%s' unblocked"
-msgstr "Användare '%s' avblockerad"
-
-#: ../../mod/admin.php:685
-#, php-format
-msgid "User '%s' blocked"
-msgstr "Användare '%s' blockerad"
-
-#: ../../mod/admin.php:749 ../../mod/admin.php:761
-msgid "Users"
-msgstr "Användare"
-
-#: ../../mod/admin.php:751 ../../mod/admin.php:885
-msgid "select all"
-msgstr "välj alla"
-
-#: ../../mod/admin.php:752
-msgid "User registrations waiting for confirm"
-msgstr "Användarregistreringar som inväntar bekräftelse"
-
-#: ../../mod/admin.php:753
-msgid "Request date"
-msgstr "Ansökningsdatum"
-
-#: ../../mod/admin.php:754
-msgid "No registrations."
-msgstr "Inga registreringar."
-
-#: ../../mod/admin.php:755
-msgid "Approve"
-msgstr "Godkänn"
-
-#: ../../mod/admin.php:756
-msgid "Deny"
-msgstr "Avslå"
-
-#: ../../mod/admin.php:758 ../../mod/connedit.php:339
-#: ../../mod/connedit.php:481
-msgid "Block"
-msgstr "Blockera"
-
-#: ../../mod/admin.php:759 ../../mod/connedit.php:339
-#: ../../mod/connedit.php:481
-msgid "Unblock"
-msgstr "Avblockera"
-
-#: ../../mod/admin.php:762
-msgid "Register date"
-msgstr "Registreringsdatum"
-
-#: ../../mod/admin.php:762
-msgid "Last login"
-msgstr "Senaste inloggning"
-
-#: ../../mod/admin.php:762
-msgid "Expires"
-msgstr "Upphör att gälla"
-
-#: ../../mod/admin.php:762
-msgid "Service Class"
-msgstr "Tjänsteklass"
-
-#: ../../mod/admin.php:764
-msgid ""
-"Selected users will be deleted!\\n\\nEverything these users had posted on "
-"this site will be permanently deleted!\\n\\nAre you sure?"
-msgstr "Valda användare kommer att tas bort!\\n\\nAllt dessa användare har postat på den här servern kommer att raderas permanent!\\n\\nÄr du säker?"
-
-#: ../../mod/admin.php:765
-msgid ""
-"The user {0} will be deleted!\\n\\nEverything this user has posted on this "
-"site will be permanently deleted!\\n\\nAre you sure?"
-msgstr "Användaren {0} kommer att tas bort!\\n\\nAllt den här användaren har postat på den här servern kommer att raderas permanent!\\n\\nÄr du säker?"
-
-#: ../../mod/admin.php:797
-#, php-format
-msgid "%s channel censored/uncensored"
-msgid_plural "%s channelss censored/uncensored"
-msgstr[0] "%s kanal censurerad/avcensurerad"
-msgstr[1] "%s kanaler censurerade/avcensurerade"
-
-#: ../../mod/admin.php:804
-#, php-format
-msgid "%s channel deleted"
-msgid_plural "%s channels deleted"
-msgstr[0] "%s kanal borttagen"
-msgstr[1] "%s kanaler borttagna"
-
-#: ../../mod/admin.php:823
-msgid "Channel not found"
-msgstr "Kanal hittas inte"
-
-#: ../../mod/admin.php:834
-#, php-format
-msgid "Channel '%s' deleted"
-msgstr "Kanalen '%s' togs bort"
-
-#: ../../mod/admin.php:844
-#, php-format
-msgid "Channel '%s' uncensored"
-msgstr "Kanal '%s' avcensurerad"
-
-#: ../../mod/admin.php:844
-#, php-format
-msgid "Channel '%s' censored"
-msgstr "Kanal '%s' censurerad"
-
-#: ../../mod/admin.php:887
-msgid "Censor"
-msgstr "Censurera"
-
-#: ../../mod/admin.php:888
-msgid "Uncensor"
-msgstr "Avcensurera"
-
-#: ../../mod/admin.php:891
-msgid "UID"
-msgstr "UID"
-
-#: ../../mod/admin.php:891 ../../mod/profiles.php:337
-msgid "Address"
-msgstr "Adress"
-
-#: ../../mod/admin.php:893
-msgid ""
-"Selected channels will be deleted!\\n\\nEverything that was posted in these "
-"channels on this site will be permanently deleted!\\n\\nAre you sure?"
-msgstr "Valda kanaler kommer att tas bort!\\n\\nAllt som har postats i de kanalerna på den här servern kommer att raderas permanent!\\n\\nÄr du säker?"
-
-#: ../../mod/admin.php:894
-msgid ""
-"The channel {0} will be deleted!\\n\\nEverything that was posted in this "
-"channel on this site will be permanently deleted!\\n\\nAre you sure?"
-msgstr "Kanalen {0} kommer att tas bort!\\n\\nAllt som har postats i den här kanalen på den här servern kommer att raderas permanent!\\n\\nÄr du säker?"
-
-#: ../../mod/admin.php:933
-#, php-format
-msgid "Plugin %s disabled."
-msgstr "Tillägg %s inaktiverat."
+#: ../../mod/search.php:13 ../../mod/photos.php:458 ../../mod/display.php:9
+#: ../../mod/viewconnections.php:17 ../../mod/directory.php:22
+msgid "Public access denied."
+msgstr "Offentlig behörighet saknas."
-#: ../../mod/admin.php:937
+#: ../../mod/subthread.php:103
#, php-format
-msgid "Plugin %s enabled."
-msgstr "Tillägg %s aktiverat."
-
-#: ../../mod/admin.php:947 ../../mod/admin.php:1149
-msgid "Disable"
-msgstr "Inaktivera"
-
-#: ../../mod/admin.php:949 ../../mod/admin.php:1151
-msgid "Enable"
-msgstr "Aktivera"
-
-#: ../../mod/admin.php:975 ../../mod/admin.php:1180
-msgid "Toggle"
-msgstr "Växla"
-
-#: ../../mod/admin.php:983 ../../mod/admin.php:1190
-msgid "Author: "
-msgstr "Författare:"
-
-#: ../../mod/admin.php:984 ../../mod/admin.php:1191
-msgid "Maintainer: "
-msgstr "Underhållare:"
+msgid "%1$s is following %2$s's %3$s"
+msgstr "%1$s följer %2$ss %3$s"
-#: ../../mod/admin.php:1113
-msgid "No themes found."
-msgstr "Inga teman funna."
+#: ../../mod/poke.php:159
+msgid "Poke/Prod"
+msgstr "Puffa/stöt till"
-#: ../../mod/admin.php:1172
-msgid "Screenshot"
-msgstr "Skärmdump"
+#: ../../mod/poke.php:160
+msgid "poke, prod or do other things to somebody"
+msgstr "puffa, stöt till eller gör andra saker mot någon"
-#: ../../mod/admin.php:1220
-msgid "[Experimental]"
-msgstr "[Experimentellt]"
+#: ../../mod/poke.php:161
+msgid "Recipient"
+msgstr "Mottagare"
-#: ../../mod/admin.php:1221
-msgid "[Unsupported]"
-msgstr "[Utan support]"
+#: ../../mod/poke.php:162
+msgid "Choose what you wish to do to recipient"
+msgstr "Välj vad du önskar göra med mottagaren"
-#: ../../mod/admin.php:1248
-msgid "Log settings updated."
-msgstr "Logginställningar uppdaterade."
+#: ../../mod/poke.php:165
+msgid "Make this post private"
+msgstr "Gör det här inlägget privat"
-#: ../../mod/admin.php:1304
-msgid "Clear"
-msgstr "Rensa"
+#: ../../mod/api.php:76 ../../mod/api.php:102
+msgid "Authorize application connection"
+msgstr "Tillåt anslutning av applikation"
-#: ../../mod/admin.php:1310
-msgid "Debugging"
-msgstr "Avlusning"
+#: ../../mod/api.php:77
+msgid "Return to your app and insert this Securty Code:"
+msgstr "Återgå till din applikation och ange den här säkerhetskoden:"
-#: ../../mod/admin.php:1311
-msgid "Log file"
-msgstr "Loggfil"
+#: ../../mod/api.php:89
+msgid "Please login to continue."
+msgstr "Logga in för att fortsätta."
-#: ../../mod/admin.php:1311
+#: ../../mod/api.php:104
msgid ""
-"Must be writable by web server. Relative to your Red top-level directory."
-msgstr "Måste vara skrivbar för webbservern. Anges relativt Reds toppkatalog."
-
-#: ../../mod/admin.php:1312
-msgid "Log level"
-msgstr "Loggnivå"
-
-#: ../../mod/filer.php:49
-msgid "- select -"
-msgstr "- välj -"
-
-#: ../../mod/home.php:89
-#, php-format
-msgid "Welcome to %s"
-msgstr "Välkommen till %s"
+"Do you want to authorize this application to access your posts and contacts,"
+" and/or create new posts for you?"
+msgstr "Vill du låta den här applikationen få tillgång till dina inlägg och kontakter, och/eller skapa nya inlägg åt dig?"
-#: ../../mod/setup.php:162
+#: ../../mod/setup.php:166
msgid "Red Matrix Server - Setup"
msgstr "Red Matrix-server - inställningar"
-#: ../../mod/setup.php:168
+#: ../../mod/setup.php:172
msgid "Could not connect to database."
msgstr "Kunde inte ansluta till databasen."
-#: ../../mod/setup.php:172
+#: ../../mod/setup.php:176
msgid ""
"Could not connect to specified site URL. Possible SSL certificate or DNS "
"issue."
msgstr "Kunde inte ansluta till den angivna server-URL:en. Möjligt problem med SSL-certifikat eller DNS."
-#: ../../mod/setup.php:179
+#: ../../mod/setup.php:183
msgid "Could not create table."
msgstr "Kunde inte skapa tabell."
-#: ../../mod/setup.php:185
+#: ../../mod/setup.php:189
msgid "Your site database has been installed."
msgstr "Din serverdatabas har installerats."
-#: ../../mod/setup.php:190
+#: ../../mod/setup.php:194
msgid ""
-"You may need to import the file \"install/database.sql\" manually using "
-"phpmyadmin or mysql."
-msgstr "Du kan behöva importera filen \"install/database.sql\" manuellt med phpmyadmin eller mysql."
+"You may need to import the file \"install/schema_xxx.sql\" manually using a "
+"database client."
+msgstr "Du kan behöva importera filen \"install/schema_xxx.sql\" manuellt med en databasklient."
-#: ../../mod/setup.php:191 ../../mod/setup.php:260 ../../mod/setup.php:641
+#: ../../mod/setup.php:195 ../../mod/setup.php:264 ../../mod/setup.php:663
msgid "Please see the file \"install/INSTALL.txt\"."
msgstr "Se filen \"install/INSTALL.txt\"."
-#: ../../mod/setup.php:257
+#: ../../mod/setup.php:261
msgid "System check"
msgstr "Systemkontroll"
-#: ../../mod/setup.php:262
+#: ../../mod/setup.php:265 ../../mod/events.php:445 ../../mod/photos.php:868
+msgid "Next"
+msgstr "Nästa"
+
+#: ../../mod/setup.php:266
msgid "Check again"
msgstr "Kontrollera igen"
-#: ../../mod/setup.php:284
+#: ../../mod/setup.php:289
msgid "Database connection"
msgstr "Databasanslutning"
-#: ../../mod/setup.php:285
+#: ../../mod/setup.php:290
msgid ""
"In order to install Red Matrix we need to know how to connect to your "
"database."
msgstr "För att kunna installera Red Matrix behöver vi veta hur databasen ska anslutas."
-#: ../../mod/setup.php:286
+#: ../../mod/setup.php:291
msgid ""
"Please contact your hosting provider or site administrator if you have "
"questions about these settings."
msgstr "Kontakta din servervärd eller administratör om du har frågor om de här inställningarna."
-#: ../../mod/setup.php:287
+#: ../../mod/setup.php:292
msgid ""
"The database you specify below should already exist. If it does not, please "
"create it before continuing."
msgstr "Databasen du anger nedan måste finnas. Om den inte gör det, skapa den innan du fortsätter."
-#: ../../mod/setup.php:291
+#: ../../mod/setup.php:296
msgid "Database Server Name"
msgstr "Databasserver"
-#: ../../mod/setup.php:291
+#: ../../mod/setup.php:296
msgid "Default is localhost"
msgstr "Standard är localhost"
-#: ../../mod/setup.php:292
+#: ../../mod/setup.php:297
msgid "Database Port"
msgstr "Databasport"
-#: ../../mod/setup.php:292
+#: ../../mod/setup.php:297
msgid "Communication port number - use 0 for default"
msgstr "Kommunikationsportnummer - använd 0 för standardinställning"
-#: ../../mod/setup.php:293
+#: ../../mod/setup.php:298
msgid "Database Login Name"
msgstr "Loginnamn till databas"
-#: ../../mod/setup.php:294
+#: ../../mod/setup.php:299
msgid "Database Login Password"
msgstr "Lösenord till databas"
-#: ../../mod/setup.php:295
+#: ../../mod/setup.php:300
msgid "Database Name"
msgstr "Databasnamn"
-#: ../../mod/setup.php:297 ../../mod/setup.php:339
+#: ../../mod/setup.php:301
+msgid "Database Type"
+msgstr "Databastyp"
+
+#: ../../mod/setup.php:303 ../../mod/setup.php:347
msgid "Site administrator email address"
msgstr "Serveradministratörens e-postadress"
-#: ../../mod/setup.php:297 ../../mod/setup.php:339
+#: ../../mod/setup.php:303 ../../mod/setup.php:347
msgid ""
"Your account email address must match this in order to use the web admin "
"panel."
msgstr "Ditt kontos e-postadress måste stämma med den här för att webbgränssnittet för administration ska kunna användas."
-#: ../../mod/setup.php:298 ../../mod/setup.php:341
+#: ../../mod/setup.php:304 ../../mod/setup.php:349
msgid "Website URL"
msgstr "Webbplatsens URL"
-#: ../../mod/setup.php:298 ../../mod/setup.php:341
+#: ../../mod/setup.php:304 ../../mod/setup.php:349
msgid "Please use SSL (https) URL if available."
msgstr "Ange en URL med SSL (https) om tillgängligt"
-#: ../../mod/setup.php:301 ../../mod/setup.php:344
+#: ../../mod/setup.php:307 ../../mod/setup.php:352
msgid "Please select a default timezone for your website"
msgstr "Välj en standardtidszon för din webbplats"
-#: ../../mod/setup.php:328
+#: ../../mod/setup.php:335
msgid "Site settings"
msgstr "Serverinställningar"
-#: ../../mod/setup.php:387
+#: ../../mod/setup.php:395
msgid "Could not find a command line version of PHP in the web server PATH."
msgstr "Kunde inte hitta en kommandoradsversion av PHP i webbserverns PATH."
-#: ../../mod/setup.php:388
+#: ../../mod/setup.php:396
msgid ""
"If you don't have a command line version of PHP installed on server, you "
"will not be able to run background polling via cron."
msgstr "Om du inte har en kommandoradsversion av PHP installerad på servern kommer du inte att kunna köra bakgrundshämtning via cron."
-#: ../../mod/setup.php:392
+#: ../../mod/setup.php:400
msgid "PHP executable path"
msgstr "Sökväg till PHP-programmet"
-#: ../../mod/setup.php:392
+#: ../../mod/setup.php:400
msgid ""
"Enter full path to php executable. You can leave this blank to continue the "
"installation."
msgstr "Ange hela sökvägen till php-programfilen. Du kan lämna det här blankt för att fortsätta installationen."
-#: ../../mod/setup.php:397
+#: ../../mod/setup.php:405
msgid "Command line PHP"
msgstr "Kommandorads-PHP"
-#: ../../mod/setup.php:406
+#: ../../mod/setup.php:414
msgid ""
"The command line version of PHP on your system does not have "
"\"register_argc_argv\" enabled."
msgstr "Kommandoradsversionen av PHP på ditt system har inte \"register_argc_argv\" aktiverat."
-#: ../../mod/setup.php:407
+#: ../../mod/setup.php:415
msgid "This is required for message delivery to work."
msgstr "Det här behövs för att meddelandeleverans ska fungera."
-#: ../../mod/setup.php:409
+#: ../../mod/setup.php:417
msgid "PHP register_argc_argv"
msgstr "PHP register_argc_argv"
-#: ../../mod/setup.php:430
+#: ../../mod/setup.php:438
msgid ""
"Error: the \"openssl_pkey_new\" function on this system is not able to "
"generate encryption keys"
msgstr "Fel: \"openssl_pkey_new\"-funktionen på det här systemet kan inte generera kryptonycklar"
-#: ../../mod/setup.php:431
+#: ../../mod/setup.php:439
msgid ""
"If running under Windows, please see "
"\"http://www.php.net/manual/en/openssl.installation.php\"."
msgstr "Om systemet kör Windows, se \"http://www.php.net/manual/en/openssl.installation.php\"."
-#: ../../mod/setup.php:433
+#: ../../mod/setup.php:441
msgid "Generate encryption keys"
msgstr "Generera kryptonycklar"
-#: ../../mod/setup.php:440
+#: ../../mod/setup.php:448
msgid "libCurl PHP module"
msgstr "PHP-modulen libCurl"
-#: ../../mod/setup.php:441
+#: ../../mod/setup.php:449
msgid "GD graphics PHP module"
msgstr "PHP-modulen GD graphics"
-#: ../../mod/setup.php:442
+#: ../../mod/setup.php:450
msgid "OpenSSL PHP module"
msgstr "PHP-modulen OpenSSL"
-#: ../../mod/setup.php:443
-msgid "mysqli PHP module"
-msgstr "PHP-modulen mysqli"
+#: ../../mod/setup.php:451
+msgid "mysqli or postgres PHP module"
+msgstr "PHP-modulen mysqli eller postgres"
-#: ../../mod/setup.php:444
+#: ../../mod/setup.php:452
msgid "mb_string PHP module"
msgstr "PHP-modulen mb_string"
-#: ../../mod/setup.php:445
+#: ../../mod/setup.php:453
msgid "mcrypt PHP module"
msgstr "PHP-modulen mcrypt"
-#: ../../mod/setup.php:450 ../../mod/setup.php:452
+#: ../../mod/setup.php:458 ../../mod/setup.php:460
msgid "Apache mod_rewrite module"
msgstr "Apache-modulen mod_rewrite"
-#: ../../mod/setup.php:450
+#: ../../mod/setup.php:458
msgid ""
"Error: Apache webserver mod-rewrite module is required but not installed."
msgstr "Fel: Apache-webbserverns mod-rewrite-modul krävs men är inte installerad."
-#: ../../mod/setup.php:456 ../../mod/setup.php:459
+#: ../../mod/setup.php:464 ../../mod/setup.php:467
msgid "proc_open"
msgstr "proc_open"
-#: ../../mod/setup.php:456
+#: ../../mod/setup.php:464
msgid ""
"Error: proc_open is required but is either not installed or has been "
"disabled in php.ini"
msgstr "Fel: proc_open krävs men är antingen inte installerad eller har inaktiverats i php.ini"
-#: ../../mod/setup.php:464
+#: ../../mod/setup.php:472
msgid "Error: libCURL PHP module required but not installed."
msgstr "Fel: PHP-modulen libCURL krävs men är inte installerad."
-#: ../../mod/setup.php:468
+#: ../../mod/setup.php:476
msgid ""
"Error: GD graphics PHP module with JPEG support required but not installed."
msgstr "Fel: PHP-modulen GD graphics med JPEG-stöd krävs men är inte installerad."
-#: ../../mod/setup.php:472
+#: ../../mod/setup.php:480
msgid "Error: openssl PHP module required but not installed."
msgstr "Fel: PHP-modulen openssl krävs men är inte installerad."
-#: ../../mod/setup.php:476
-msgid "Error: mysqli PHP module required but not installed."
-msgstr "Fel: PHP-modulen mysqli krävs men är inte installerad."
+#: ../../mod/setup.php:484
+msgid ""
+"Error: mysqli or postgres PHP module required but neither are installed."
+msgstr "Fel: en av PHP-modulerna mysqli eller postgres krävs men är inte installerad."
-#: ../../mod/setup.php:480
+#: ../../mod/setup.php:488
msgid "Error: mb_string PHP module required but not installed."
msgstr "Fel: PHP-modulen mb_string krävs men är inte installerad."
-#: ../../mod/setup.php:484
+#: ../../mod/setup.php:492
msgid "Error: mcrypt PHP module required but not installed."
msgstr "Fel: PHP-modulen mcrypt krävs men är inte installerad."
-#: ../../mod/setup.php:500
+#: ../../mod/setup.php:508
msgid ""
"The web installer needs to be able to create a file called \".htconfig.php\""
" in the top folder of your web server and it is unable to do so."
msgstr "Webbinstallationen måste kunna skapa filen \".htconfig.php\" i toppkatalogen på din webbserver men kan inte göra det."
-#: ../../mod/setup.php:501
+#: ../../mod/setup.php:509
msgid ""
"This is most often a permission setting, as the web server may not be able "
"to write files in your folder - even if you can."
msgstr "Det är ofta en behörighetsinställning som gör att webbservern inte kan skriva filer i din katalog - även om du kan."
-#: ../../mod/setup.php:502
+#: ../../mod/setup.php:510
msgid ""
"At the end of this procedure, we will give you a text to save in a file "
"named .htconfig.php in your Red top folder."
msgstr "Efter den här proceduren kommer vi att ge dig en text att spara i filen .htconfig.php i Reds toppkatalog."
-#: ../../mod/setup.php:503
+#: ../../mod/setup.php:511
msgid ""
"You can alternatively skip this procedure and perform a manual installation."
" Please see the file \"install/INSTALL.txt\" for instructions."
msgstr "Alternativt kan du hoppa över den här proceduren och göra en manuell installation. För instruktioner, se filen \"install/INSTALL.txt\"."
-#: ../../mod/setup.php:506
+#: ../../mod/setup.php:514
msgid ".htconfig.php is writable"
msgstr ".htconfig.php är skrivbar"
-#: ../../mod/setup.php:516
+#: ../../mod/setup.php:524
msgid ""
"Red uses the Smarty3 template engine to render its web views. Smarty3 "
"compiles templates to PHP to speed up rendering."
msgstr "Red använder mallmotorn Smarty3 för att rendera webbvyerna. Smarty3 kompilerar mallar till PHP för att snabba upp renderingen."
-#: ../../mod/setup.php:517
+#: ../../mod/setup.php:525
+#, php-format
msgid ""
"In order to store these compiled templates, the web server needs to have "
-"write access to the directory view/tpl/smarty3/ under the Red top level "
-"folder."
-msgstr "För att kunna spara de här kompilerade mallarna behöver webbservern ha skrivrättigheter i katalogen view/tpl/smarty3/ under Reds toppkatalog."
+"write access to the directory %s under the Red top level folder."
+msgstr "För att spara de här kompilerade mallarna behöver webbservern ha skrivrättigheter till katalogen %s under Reds toppkatalog."
-#: ../../mod/setup.php:518 ../../mod/setup.php:536
+#: ../../mod/setup.php:526 ../../mod/setup.php:544
msgid ""
"Please ensure that the user that your web server runs as (e.g. www-data) has"
" write access to this folder."
msgstr "Försäkra dig om att användaren som din webbserver kör som (t.ex. www-data) har skrivrättigheter till den här katalogen."
-#: ../../mod/setup.php:519
+#: ../../mod/setup.php:527
+#, php-format
msgid ""
"Note: as a security measure, you should give the web server write access to "
-"view/tpl/smarty3/ only--not the template files (.tpl) that it contains."
-msgstr "Observera: som en säkerhetsåtgärd bör du ge webbservern skrivrättigheter endast till view/tpl/smarty3 - inte till mallfilerna (.tpl) som den innehåller."
+"%s only--not the template files (.tpl) that it contains."
+msgstr "Observera: som en säkerhetsåtgärd bör du ge webbservern skrivrättighet endast för %s - inte för mallfilerna (.tpl) som finns där."
-#: ../../mod/setup.php:522
-msgid "view/tpl/smarty3 is writable"
-msgstr "view/tpl/smarty3 är skrivbar"
+#: ../../mod/setup.php:530
+#, php-format
+msgid "%s is writable"
+msgstr "%s är skrivbar"
-#: ../../mod/setup.php:535
+#: ../../mod/setup.php:543
msgid ""
"Red uses the store directory to save uploaded files. The web server needs to"
" have write access to the store directory under the Red top level folder"
msgstr "Red använder katalogen store för att spara uppladdade filer. Webbservern behöver ha skrivrättigheter till katalogen store under Reds toppkatalog."
-#: ../../mod/setup.php:539
+#: ../../mod/setup.php:547
msgid "store is writable"
msgstr "store är skrivbar"
-#: ../../mod/setup.php:554
+#: ../../mod/setup.php:577
msgid ""
"SSL certificate cannot be validated. Fix certificate or disable https access"
" to this site."
msgstr "SSL-certifikatet kan inte valideras. Fixa certifikatet eller inaktivera https-åtkomst till den här servern."
-#: ../../mod/setup.php:555
+#: ../../mod/setup.php:578
msgid ""
-"If you use https access, you MUST use a certification instance known by all "
-"internet browsers. You MUST NOT use self-signed certificates!"
-msgstr "Om du använder https-åtkomst MÅSTE du använda ett certifikat som känns igen av alla webbläsare. Du FÅR INTE använda självsignerade certifikat!"
+"If you have https access to your website or allow connections to TCP port "
+"443 (the https: port), you MUST use a browser-valid certificate. You MUST "
+"NOT use self-signed certificates!"
+msgstr "Om du har https-åtkomst till din webbplats eller tillåter anslutningar till TCP-port 443 (https-porten) MÅSTE du använda ett certifikat som kan verifieras av webbläsare. Du FÅR INTE använda självsignerade certifikat!"
-#: ../../mod/setup.php:556
+#: ../../mod/setup.php:579
msgid ""
"This restriction is incorporated because public posts from you may for "
-"example contain references to images on your own hub. If your"
-msgstr "Den här restriktionen finns för att offentliga inlägg från dig till exempel kan innehålla referenser till bilder på din egen hubb. Om ditt"
+"example contain references to images on your own hub."
+msgstr "Restriktionen finns eftersom offentliga inlägg från dig kan innehålla till exempel referenser till bilder på din egen hubb."
-#: ../../mod/setup.php:557
+#: ../../mod/setup.php:580
msgid ""
-"certificate is not known by the internet browser of users they get a warning"
-" message complaining about some security issues. Although"
-msgstr "certifikat inte känns igen av användares webbläsare får de ett varningsmeddelande om säkerhetsproblem. Även om"
+"If your certificate is not recognized, members of other sites (who may "
+"themselves have valid certificates) will get a warning message on their own "
+"site complaining about security issues."
+msgstr "Om ditt certifikat inte känns igen kommer medlemmar på andra webbplatser (som själv kan ha giltiga certifikat) att få en varning på sin egen webbplats om säkerhetsproblem."
-#: ../../mod/setup.php:558
+#: ../../mod/setup.php:581
msgid ""
-"these complains are not the real truth - there are no security issues with "
-"your encryption! - the users may be confused, nerved or even"
-msgstr "de här varningarna inte är helt sanna - det är inga säkerhetsproblem med din kryptering! - så kan användare bli förvirrade, nervösa eller"
+"This can cause usability issues elsewhere (not just on your own site) so we "
+"must insist on this requirement."
+msgstr "Detta kan orsaka problem med användbarheten (inte bara på din egen server) så vi måste trycka på det här kravet."
-#: ../../mod/setup.php:559
+#: ../../mod/setup.php:582
msgid ""
-"worse may become scared about redmatrix having security issues. Use one of "
-"the free certification instances!"
-msgstr "ännu värre, bli skrämda att redmatrix skulle ha säkerhetsproblem. Använd en av utfärdarna av gratis certifikat."
+"Providers are available that issue free certificates which are browser-"
+"valid."
+msgstr "Det finns leverantörer som utfärdar gratis certifikat som känns igen av webbläsare."
-#: ../../mod/setup.php:561
+#: ../../mod/setup.php:584
msgid "SSL certificate validation"
msgstr "SSL-certifikatvalidering"
-#: ../../mod/setup.php:568
+#: ../../mod/setup.php:590
msgid ""
-"Url rewrite in .htaccess is not working. Check your server configuration."
-msgstr "URL rewrite i .htaccess fungerar inte. Kontrollera din serverkonfiguration."
+"Url rewrite in .htaccess is not working. Check your server "
+"configuration.Test: "
+msgstr "Url rewrite i .htaccess fungerar inte. Kolla din serverkonfiguration. Test: "
-#: ../../mod/setup.php:570
+#: ../../mod/setup.php:592
msgid "Url rewrite is working"
msgstr "URL rewrite fungerar"
-#: ../../mod/setup.php:580
+#: ../../mod/setup.php:602
msgid ""
"The database configuration file \".htconfig.php\" could not be written. "
"Please use the enclosed text to create a configuration file in your web "
"server root."
msgstr "Databaskonfigurationsfilen \".htconfig.php\" kunde inte skrivas. Använd den bifogade texten för att skapa en konfigurationsfil i din webbservers rot."
-#: ../../mod/setup.php:604
+#: ../../mod/setup.php:626
msgid "Errors encountered creating database tables."
msgstr "Fel inträffade när databastabeller skulle skapas."
-#: ../../mod/setup.php:639
+#: ../../mod/setup.php:661
msgid "<h1>What next</h1>"
msgstr "<h1>Nästa steg</h1>"
-#: ../../mod/setup.php:640
+#: ../../mod/setup.php:662
msgid ""
"IMPORTANT: You will need to [manually] setup a scheduled task for the "
"poller."
msgstr "VIKTIGT: Du behöver ställa in en schemalagd för hämtningsrutinen [manuellt]"
-#: ../../mod/directory.php:148 ../../mod/profiles.php:561
-#: ../../mod/dirprofile.php:98
-msgid "Age: "
-msgstr "Ã…lder:"
+#: ../../mod/attach.php:9
+msgid "Item not available."
+msgstr "Post inte tillgänglig."
-#: ../../mod/directory.php:151 ../../mod/dirprofile.php:101
-msgid "Gender: "
-msgstr "Kön:"
+#: ../../mod/probe.php:23 ../../mod/probe.php:29
+#, php-format
+msgid "Fetching URL returns error: %1$s"
+msgstr "Hämtning av URL returnerade fel: %1$s"
-#: ../../mod/directory.php:212
-msgid "Finding:"
-msgstr "Sökning efter:"
+#: ../../mod/block.php:27 ../../mod/page.php:33
+msgid "Invalid item."
+msgstr "Ogiltig post."
-#: ../../mod/directory.php:220
-msgid "next page"
-msgstr "nästa sida"
+#: ../../mod/block.php:39 ../../mod/wall_upload.php:29 ../../mod/page.php:45
+msgid "Channel not found."
+msgstr "Kanalen hittas inte."
-#: ../../mod/directory.php:220
-msgid "previous page"
-msgstr "föregående sida"
+#: ../../mod/block.php:75 ../../mod/display.php:102 ../../mod/help.php:70
+#: ../../mod/page.php:81 ../../index.php:241
+msgid "Page not found."
+msgstr "Sidan hittas inte."
-#: ../../mod/directory.php:227
-msgid "No entries (some entries may be hidden)."
-msgstr "Inga resultat (vissa resultat kan vara dolda)."
+#: ../../mod/uexport.php:33 ../../mod/uexport.php:34
+msgid "Export Channel"
+msgstr "Exportera kanal"
-#: ../../mod/lockview.php:30 ../../mod/lockview.php:36
-msgid "Remote privacy information not available."
-msgstr "Icke-lokal integritetsinformation är inte tillgänglig"
+#: ../../mod/uexport.php:35
+msgid ""
+"Export your basic channel information to a small file. This acts as a "
+"backup of your connections, permissions, profile and basic data, which can "
+"be used to import your data to a new hub, but\tdoes not contain your "
+"content."
+msgstr "Exportera kanalens basinformation till en liten fil. Denna fungerar som en säkerhetskopia av dina anslutningar, behörigheter, profil, och grundläggande data, och kan användas för att importera dina data till en ny hubb, men tar inte med ditt innehåll."
-#: ../../mod/lockview.php:45
-msgid "Visible to:"
-msgstr "Synlig för:"
+#: ../../mod/uexport.php:36
+msgid "Export Content"
+msgstr "Exportera innehåll"
+
+#: ../../mod/uexport.php:37
+msgid ""
+"Export your channel information and all the content to a JSON backup. This "
+"backs up all of your connections, permissions, profile data and all of your "
+"content, but is generally not suitable for importing a channel to a new hub "
+"as this file may be VERY large. Please be patient - it may take several "
+"minutes for this download to begin."
+msgstr "Exportera din kanalinformation och allt innehåll till en säkerhetskopia i JSON-format. Detta kopierar alla dina anslutningar, behörigheter, profildata och allt ditt innehåll, men är generellt inte lämpligt för att importera en kanal till en ny hubb, eftersom filen kan vara VÄLDIGT stor. Ha tålamod - det kan ta flera minuter innan nedladdningen börjar."
+
+#: ../../mod/delegate.php:95
+msgid "No potential page delegates located."
+msgstr "Inga potentiella sid-ombud funna."
+
+#: ../../mod/delegate.php:121
+msgid "Delegate Page Management"
+msgstr "Delegera sidhantering"
+
+#: ../../mod/delegate.php:123
+msgid ""
+"Delegates are able to manage all aspects of this account/page except for "
+"basic account settings. Please do not delegate your personal account to "
+"anybody that you do not trust completely."
+msgstr "Ombud kan hantera alla aspekter av det här kontot/den här sidan förutom grundläggande kontoinställningar. Delegera inte ditt personliga konto till någon som du inte litar fullständigt på."
+
+#: ../../mod/delegate.php:124
+msgid "Existing Page Managers"
+msgstr "Befintliga sid-ansvariga"
+
+#: ../../mod/delegate.php:126
+msgid "Existing Page Delegates"
+msgstr "Befintliga sid-ombud"
+
+#: ../../mod/delegate.php:128
+msgid "Potential Delegates"
+msgstr "Potentiella ombud"
+
+#: ../../mod/delegate.php:130 ../../mod/photos.php:905 ../../mod/tagrm.php:133
+msgid "Remove"
+msgstr "Ta bort"
+
+#: ../../mod/delegate.php:131
+msgid "Add"
+msgstr "Lägg till"
+
+#: ../../mod/delegate.php:132
+msgid "No entries."
+msgstr "Inga poster."
+
+#: ../../mod/siteinfo.php:93
+#, php-format
+msgid "Version %s"
+msgstr "Version %s"
+
+#: ../../mod/siteinfo.php:114
+msgid "Installed plugins/addons/apps:"
+msgstr "Installerade tillägg/moduler/appar:"
+
+#: ../../mod/siteinfo.php:127
+msgid "No installed plugins/addons/apps"
+msgstr "Inga installerade tillägg/moduler/appar"
+
+#: ../../mod/siteinfo.php:135
+msgid "Red"
+msgstr "Red"
+
+#: ../../mod/siteinfo.php:136
+msgid ""
+"This is a hub of the Red Matrix - a global cooperative network of "
+"decentralized privacy enhanced websites."
+msgstr "Det här är en hubb som ingår i Red Matrix - ett globalt samverkande nätverk av decentraliserade webbplatser med bättre integritetskydd."
+
+#: ../../mod/siteinfo.php:138
+msgid "Tag: "
+msgstr "Tagg: "
+
+#: ../../mod/siteinfo.php:140
+msgid "Last background fetch: "
+msgstr "Senaste bakgrundshämtning: "
+
+#: ../../mod/siteinfo.php:143
+msgid "Running at web location"
+msgstr "Kör på webbutrymmet"
+
+#: ../../mod/siteinfo.php:144
+msgid ""
+"Please visit <a href=\"https://redmatrix.me\">RedMatrix.me</a> to learn more"
+" about the Red Matrix."
+msgstr "Besök <a href=\"https://redmatrix.me\">RedMatrix.me</a> för att lära dig mer om Red Matrix."
+
+#: ../../mod/siteinfo.php:145
+msgid "Bug reports and issues: please visit"
+msgstr "Buggrapporter och problem: besök"
+
+#: ../../mod/siteinfo.php:148
+msgid ""
+"Suggestions, praise, etc. - please email \"redmatrix\" at librelist - dot "
+"com"
+msgstr "Förslag, uppskattning, etc. - maila \"redmatrix\" at librelist - dot com"
+
+#: ../../mod/siteinfo.php:150
+msgid "Site Administrators"
+msgstr "Serveradministratörer"
+
+#: ../../mod/sources.php:32
+msgid "Failed to create source. No channel selected."
+msgstr "Misslyckades att skapa källa. Ingen kanal vald."
+
+#: ../../mod/sources.php:45
+msgid "Source created."
+msgstr "Källa skapad."
+
+#: ../../mod/sources.php:57
+msgid "Source updated."
+msgstr "Källa uppdaterad."
+
+#: ../../mod/sources.php:82
+msgid "*"
+msgstr "*"
+
+#: ../../mod/sources.php:89
+msgid "Manage remote sources of content for your channel."
+msgstr "Hantera fjärrkällor med innehåll för din kanal."
+
+#: ../../mod/sources.php:90 ../../mod/sources.php:100
+msgid "New Source"
+msgstr "Ny källa"
+
+#: ../../mod/sources.php:101 ../../mod/sources.php:133
+msgid ""
+"Import all or selected content from the following channel into this channel "
+"and distribute it according to your channel settings."
+msgstr "Importera allt eller valt innehåll från följande kanal till den här kanalen och distribuera det enligt dina kanalinställningar."
-#: ../../mod/connedit.php:49 ../../mod/connections.php:37
+#: ../../mod/sources.php:102 ../../mod/sources.php:134
+msgid "Only import content with these words (one per line)"
+msgstr "Importera endast innehåll med de här orden (ett per rad)"
+
+#: ../../mod/sources.php:102 ../../mod/sources.php:134
+msgid "Leave blank to import all public content"
+msgstr "Lämna blankt för att importera allt offentligt innehåll"
+
+#: ../../mod/sources.php:103 ../../mod/sources.php:137
+#: ../../mod/new_channel.php:112
+msgid "Channel Name"
+msgstr "Kanalnamn"
+
+#: ../../mod/sources.php:123 ../../mod/sources.php:150
+msgid "Source not found."
+msgstr "Källa hittades inte."
+
+#: ../../mod/sources.php:130
+msgid "Edit Source"
+msgstr "Redigera källa"
+
+#: ../../mod/sources.php:131
+msgid "Delete Source"
+msgstr "Ta bort källa"
+
+#: ../../mod/sources.php:158
+msgid "Source removed"
+msgstr "Källa borttagen"
+
+#: ../../mod/sources.php:160
+msgid "Unable to remove source."
+msgstr "Kunde inte ta bort källa."
+
+#: ../../mod/profperm.php:29 ../../mod/profperm.php:58
+msgid "Invalid profile identifier."
+msgstr "Ogiltigt profil-ID."
+
+#: ../../mod/profperm.php:110
+msgid "Profile Visibility Editor"
+msgstr "Redigera profilsynlighet"
+
+#: ../../mod/profperm.php:114
+msgid "Click on a contact to add or remove."
+msgstr "Klicka på en kontakt för att lägga till eller ta bort."
+
+#: ../../mod/profperm.php:123
+msgid "Visible To"
+msgstr "Kan ses av"
+
+#: ../../mod/profperm.php:139 ../../mod/connections.php:279
+msgid "All Connections"
+msgstr "Alla kontakter"
+
+#: ../../mod/events.php:81
+msgid "Event can not end before it has started."
+msgstr "Händelser kan inte sluta innan de börjat."
+
+#: ../../mod/events.php:86
+msgid "Event title and start time are required."
+msgstr "Händelsen behöver titel och starttid."
+
+#: ../../mod/events.php:100
+msgid "Event not found."
+msgstr "Händelsen hittades inte."
+
+#: ../../mod/events.php:369
+msgid "l, F j"
+msgstr "l, j F"
+
+#: ../../mod/events.php:391
+msgid "Edit event"
+msgstr "Redigera händelse"
+
+#: ../../mod/events.php:443
+msgid "Create New Event"
+msgstr "Skapa ny händelse"
+
+#: ../../mod/events.php:444 ../../mod/photos.php:859
+msgid "Previous"
+msgstr "Föregående"
+
+#: ../../mod/events.php:446
+msgid "Export"
+msgstr "Exportera"
+
+#: ../../mod/events.php:571
+msgid "Event details"
+msgstr "Detaljer för händelse"
+
+#: ../../mod/events.php:572
+msgid "Starting date and Title are required."
+msgstr "Startdatum och titel är obligatoriska."
+
+#: ../../mod/events.php:574
+msgid "Categories (comma-separated list)"
+msgstr "Kategorier (kommaseparerad lista)"
+
+#: ../../mod/events.php:576
+msgid "Event Starts:"
+msgstr "Händelsen börjar:"
+
+#: ../../mod/events.php:576 ../../mod/events.php:592 ../../mod/appman.php:91
+#: ../../mod/appman.php:92
+msgid "Required"
+msgstr "Behövs"
+
+#: ../../mod/events.php:582
+msgid "Finish date/time is not known or not relevant"
+msgstr "Slutdatum/tid är okänt eller inte relevant"
+
+#: ../../mod/events.php:584
+msgid "Event Finishes:"
+msgstr "Händelsen slutar:"
+
+#: ../../mod/events.php:586
+msgid "Adjust for viewer timezone"
+msgstr "Justera för betraktarens tidszon"
+
+#: ../../mod/events.php:588
+msgid "Description:"
+msgstr "Beskrivning:"
+
+#: ../../mod/events.php:592
+msgid "Title:"
+msgstr "Titel:"
+
+#: ../../mod/events.php:594
+msgid "Share this event"
+msgstr "Dela den här händelsen"
+
+#: ../../mod/pubsites.php:16
+msgid "Public Sites"
+msgstr "Offentliga servrar"
+
+#: ../../mod/pubsites.php:19
+msgid ""
+"The listed sites allow public registration into the Red Matrix. All sites in"
+" the matrix are interlinked so membership on any of them conveys membership "
+"in the matrix as a whole. Some sites may require subscription or provide "
+"tiered service plans. The provider links <strong>may</strong> provide "
+"additional details."
+msgstr "De listade servrarna tillåter offentlig registrering i Red Matrix. Alla servrar i matrisen är sammankopplade, så medlemskap i en av dem medför medlemskap i matrisen som helhet. Vissa servrar kan kräva abonnemang eller erbjuda uppdelade tjänstenivåer. Leverantörslänkarna <strong>kan</strong> ge ytterligare detaljer."
+
+#: ../../mod/pubsites.php:25
+msgid "Site URL"
+msgstr "Server-URL"
+
+#: ../../mod/pubsites.php:25
+msgid "Access Type"
+msgstr "Ã…tkomsttyp"
+
+#: ../../mod/pubsites.php:25
+msgid "Registration Policy"
+msgstr "Registreringspolicy"
+
+#: ../../mod/pubsites.php:25 ../../mod/profiles.php:428
+msgid "Location"
+msgstr "Plats"
+
+#: ../../mod/channel.php:25 ../../mod/chat.php:19
+msgid "You must be logged in to see this page."
+msgstr "Du måste vara inloggad för att se den här sidan."
+
+#: ../../mod/channel.php:87
+msgid "Insufficient permissions. Request redirected to profile page."
+msgstr "Otillräckliga behörigheter. Förfrågan omdirigerad till profilsidan."
+
+#: ../../mod/rbmark.php:88
+msgid "Select a bookmark folder"
+msgstr "Välj en bokmärkeskatalog"
+
+#: ../../mod/rbmark.php:93
+msgid "Save Bookmark"
+msgstr "Spara bokmärke"
+
+#: ../../mod/rbmark.php:94
+msgid "URL of bookmark"
+msgstr "Bokmärkets URL"
+
+#: ../../mod/rbmark.php:95 ../../mod/appman.php:93
+msgid "Description"
+msgstr "Beskrivning"
+
+#: ../../mod/rbmark.php:99
+msgid "Or enter new bookmark folder name"
+msgstr "Eller ange nytt namn på bokmärkeskatalog"
+
+#: ../../mod/chat.php:167
+msgid "Room not found"
+msgstr "Rum hittas inte"
+
+#: ../../mod/chat.php:178
+msgid "Leave Room"
+msgstr "Lämna rummet"
+
+#: ../../mod/chat.php:179
+msgid "Delete This Room"
+msgstr "Ta bort det här rummet"
+
+#: ../../mod/chat.php:180
+msgid "I am away right now"
+msgstr "Jag är borta för tillfället"
+
+#: ../../mod/chat.php:181
+msgid "I am online"
+msgstr "Jag är online"
+
+#: ../../mod/chat.php:183
+msgid "Bookmark this room"
+msgstr "Bokmärk det här rummet"
+
+#: ../../mod/chat.php:207 ../../mod/chat.php:229
+msgid "New Chatroom"
+msgstr "Nytt chattrum"
+
+#: ../../mod/chat.php:208
+msgid "Chatroom Name"
+msgstr "Namn på chattrum"
+
+#: ../../mod/chat.php:225
+#, php-format
+msgid "%1$s's Chatrooms"
+msgstr "%1$ss chattrum"
+
+#: ../../mod/chatsvc.php:111
+msgid "Away"
+msgstr "Borta"
+
+#: ../../mod/chatsvc.php:115
+msgid "Online"
+msgstr "Online"
+
+#: ../../mod/regmod.php:11
+msgid "Please login."
+msgstr "Logga in."
+
+#: ../../mod/editpost.php:20 ../../mod/editblock.php:79
+#: ../../mod/editblock.php:95 ../../mod/editlayout.php:78
+#: ../../mod/editwebpage.php:77
+msgid "Item not found"
+msgstr "Posten hittas inte"
+
+#: ../../mod/editpost.php:31
+msgid "Item is not editable"
+msgstr "Posten går ej att redigera"
+
+#: ../../mod/editpost.php:42 ../../mod/rpost.php:97
+msgid "Edit post"
+msgstr "Redigera inlägg"
+
+#: ../../mod/editpost.php:53
+msgid "Delete item?"
+msgstr "Ta bort posten?"
+
+#: ../../mod/editpost.php:116 ../../mod/editblock.php:147
+#: ../../mod/editlayout.php:143 ../../mod/editwebpage.php:178
+msgid "Insert YouTube video"
+msgstr "Infoga Youtube-video"
+
+#: ../../mod/editpost.php:117 ../../mod/editblock.php:148
+#: ../../mod/editlayout.php:144 ../../mod/editwebpage.php:179
+msgid "Insert Vorbis [.ogg] video"
+msgstr "Infoga Vorbis [.ogg]-video"
+
+#: ../../mod/editpost.php:118 ../../mod/editblock.php:149
+#: ../../mod/editlayout.php:145 ../../mod/editwebpage.php:180
+msgid "Insert Vorbis [.ogg] audio"
+msgstr "Infoga Vorbis [.ogg]-ljud"
+
+#: ../../mod/removeme.php:29
+msgid ""
+"Channel removals are not allowed within 48 hours of changing the account "
+"password."
+msgstr "Borttagning av kanal tillåts inte inom 48 timmar efter att kontolösenordet har ändrats."
+
+#: ../../mod/removeme.php:57
+msgid "Remove This Channel"
+msgstr "Ta bort den här kanalen"
+
+#: ../../mod/removeme.php:58
+msgid ""
+"This will completely remove this channel from the network. Once this has "
+"been done it is not recoverable."
+msgstr "Det här kommer att ta bort den här kanalen helt från nätverket. När det är gjort går det inte att återställa den."
+
+#: ../../mod/removeme.php:59 ../../mod/removeaccount.php:59
+msgid "Please enter your password for verification:"
+msgstr "Ange ditt lösenord för att bekräfta:"
+
+#: ../../mod/removeme.php:60
+msgid "Remove this channel and all its clones from the network"
+msgstr "Ta bort den här kanalen och alla dess kloner från nätverket"
+
+#: ../../mod/removeme.php:60
+msgid ""
+"By default only the instance of the channel located on this hub will be "
+"removed from the network"
+msgstr "Som standard kommer bara den här hubbens instans av kanalen att tas bort från nätverket"
+
+#: ../../mod/removeme.php:61
+msgid "Remove Channel"
+msgstr "Ta bort kanal"
+
+#: ../../mod/common.php:10
+msgid "No channel."
+msgstr "Ingen kanal."
+
+#: ../../mod/common.php:39
+msgid "Common connections"
+msgstr "Gemensamma kontakter"
+
+#: ../../mod/common.php:44
+msgid "No connections in common."
+msgstr "Inga gemensamma kontakter."
+
+#: ../../mod/rmagic.php:38
+msgid ""
+"We encountered a problem while logging in with the OpenID you provided. "
+"Please check the correct spelling of the ID."
+msgstr "Vi drabbades av ett problem vid inloggningen med OpenID:t du uppgav. Kontrollera att ID:t är korrekt stavat."
+
+#: ../../mod/rmagic.php:38
+msgid "The error message was:"
+msgstr "Felmeddelandet var:"
+
+#: ../../mod/rmagic.php:42
+msgid "Authentication failed."
+msgstr "Inloggning misslyckades."
+
+#: ../../mod/rmagic.php:82
+msgid "Remote Authentication"
+msgstr "Fjärrinloggning"
+
+#: ../../mod/rmagic.php:83
+msgid "Enter your channel address (e.g. channel@example.com)"
+msgstr "Ange din kanaladress (t.ex. kanal@example.com)"
+
+#: ../../mod/rmagic.php:84
+msgid "Authenticate"
+msgstr "Autentisera"
+
+#: ../../mod/lostpass.php:15
+msgid "No valid account found."
+msgstr "Inget giltigt konto hittades."
+
+#: ../../mod/lostpass.php:29
+msgid "Password reset request issued. Check your email."
+msgstr "Lösenordsåterställning har skickats. Kontrollera din e-post."
+
+#: ../../mod/lostpass.php:35 ../../mod/lostpass.php:102
+#, php-format
+msgid "Site Member (%s)"
+msgstr "Servermedlem (%s)"
+
+#: ../../mod/lostpass.php:40
+#, php-format
+msgid "Password reset requested at %s"
+msgstr "Lösenordsåterställning begärd på %s"
+
+#: ../../mod/lostpass.php:63
+msgid ""
+"Request could not be verified. (You may have previously submitted it.) "
+"Password reset failed."
+msgstr "Begäran kunde inte bekräftas. (Du kan ha skickat den tidigare.) Lösenordsåterställningen misslyckades."
+
+#: ../../mod/lostpass.php:85 ../../boot.php:1548
+msgid "Password Reset"
+msgstr "Lösenordsåterställning"
+
+#: ../../mod/lostpass.php:86
+msgid "Your password has been reset as requested."
+msgstr "Ditt lösenord har återställts som begärt."
+
+#: ../../mod/lostpass.php:87
+msgid "Your new password is"
+msgstr "Ditt nya lösenord är"
+
+#: ../../mod/lostpass.php:88
+msgid "Save or copy your new password - and then"
+msgstr "Spara eller kopiera ditt nya lösenord - "
+
+#: ../../mod/lostpass.php:89
+msgid "click here to login"
+msgstr "klicka sedan här för att logga in"
+
+#: ../../mod/lostpass.php:90
+msgid ""
+"Your password may be changed from the <em>Settings</em> page after "
+"successful login."
+msgstr "Ditt lösenord kan bytas från sidan <em>Inställningar</em> när du är inloggad."
+
+#: ../../mod/lostpass.php:107
+#, php-format
+msgid "Your password has changed at %s"
+msgstr "Ditt lösenord byttes på %s"
+
+#: ../../mod/lostpass.php:122
+msgid "Forgot your Password?"
+msgstr "Glömt lösenordet?"
+
+#: ../../mod/lostpass.php:123
+msgid ""
+"Enter your email address and submit to have your password reset. Then check "
+"your email for further instructions."
+msgstr "Ange din e-postadress och skicka för att återställa ditt lösenord. Kontrollera sedan din e-post för vidare instruktioner."
+
+#: ../../mod/lostpass.php:124
+msgid "Email Address"
+msgstr "E-postadress"
+
+#: ../../mod/lostpass.php:125
+msgid "Reset"
+msgstr "Återställ"
+
+#: ../../mod/connections.php:37 ../../mod/connedit.php:64
msgid "Could not access contact record."
msgstr "Kunde inte komma åt kontaktuppgifter."
-#: ../../mod/connedit.php:63 ../../mod/connections.php:51
+#: ../../mod/connections.php:51 ../../mod/connedit.php:86
msgid "Could not locate selected profile."
msgstr "Kunde inte hitta vald profil."
-#: ../../mod/connedit.php:107 ../../mod/connections.php:94
+#: ../../mod/connections.php:94 ../../mod/connedit.php:140
msgid "Connection updated."
msgstr "Kontakt uppdaterad."
-#: ../../mod/connedit.php:109 ../../mod/connections.php:96
+#: ../../mod/connections.php:96 ../../mod/connedit.php:142
msgid "Failed to update connection record."
msgstr "Misslyckades att uppdatera kontaktuppgifter."
-#: ../../mod/connedit.php:210
+#: ../../mod/connections.php:191 ../../mod/connections.php:292
+msgid "Blocked"
+msgstr "Blockerade"
+
+#: ../../mod/connections.php:196 ../../mod/connections.php:299
+msgid "Ignored"
+msgstr "Ignorerade"
+
+#: ../../mod/connections.php:201 ../../mod/connections.php:313
+msgid "Hidden"
+msgstr "Dolda"
+
+#: ../../mod/connections.php:206 ../../mod/connections.php:306
+msgid "Archived"
+msgstr "Arkiverade"
+
+#: ../../mod/connections.php:230 ../../mod/connections.php:245
+msgid "All"
+msgstr "Alla"
+
+#: ../../mod/connections.php:270
+msgid "Suggest new connections"
+msgstr "Föreslå nya kontakter"
+
+#: ../../mod/connections.php:273
+msgid "New Connections"
+msgstr "Nya kontakter"
+
+#: ../../mod/connections.php:276
+msgid "Show pending (new) connections"
+msgstr "Visa väntande (nya) kontakter"
+
+#: ../../mod/connections.php:282
+msgid "Show all connections"
+msgstr "Visa alla kontakter"
+
+#: ../../mod/connections.php:285
+msgid "Unblocked"
+msgstr "Ej blockerade"
+
+#: ../../mod/connections.php:288
+msgid "Only show unblocked connections"
+msgstr "Visa endast ej blockerade kontakter"
+
+#: ../../mod/connections.php:295
+msgid "Only show blocked connections"
+msgstr "Visa endast blockerade kontakter"
+
+#: ../../mod/connections.php:302
+msgid "Only show ignored connections"
+msgstr "Visa endast ignorerade kontakter"
+
+#: ../../mod/connections.php:309
+msgid "Only show archived connections"
+msgstr "Visa endast arkiverade kontakter"
+
+#: ../../mod/connections.php:316
+msgid "Only show hidden connections"
+msgstr "Visa endast dolda kontakter"
+
+#: ../../mod/connections.php:371
+#, php-format
+msgid "%1$s [%2$s]"
+msgstr "%1$s [%2$s]"
+
+#: ../../mod/connections.php:372
+msgid "Edit connection"
+msgstr "Redigera kontakt"
+
+#: ../../mod/connections.php:410
+msgid "Search your connections"
+msgstr "Sök bland dina kontakter"
+
+#: ../../mod/connections.php:411
+msgid "Finding: "
+msgstr "Sökning efter: "
+
+#: ../../mod/ping.php:265
+msgid "sent you a private message"
+msgstr "skickade ett privat meddelande till dig"
+
+#: ../../mod/ping.php:316
+msgid "added your channel"
+msgstr "lade till din kanal"
+
+#: ../../mod/ping.php:357
+msgid "posted an event"
+msgstr "skapade en händelse"
+
+#: ../../mod/connedit.php:189
+msgid "is now connected to"
+msgstr "har nu kontakt med"
+
+#: ../../mod/connedit.php:310
msgid "Could not access address book record."
msgstr "Kunde inte komma åt adressboksuppgifter."
-#: ../../mod/connedit.php:224
+#: ../../mod/connedit.php:324
msgid "Refresh failed - channel is currently unavailable."
msgstr "Uppdatering misslyckades - kanalen är inte tillgänglig."
-#: ../../mod/connedit.php:231
+#: ../../mod/connedit.php:331
msgid "Channel has been unblocked"
msgstr "Kanalen är inte längre blockerad"
-#: ../../mod/connedit.php:232
+#: ../../mod/connedit.php:332
msgid "Channel has been blocked"
msgstr "Kanalen har blockerats"
-#: ../../mod/connedit.php:236 ../../mod/connedit.php:248
-#: ../../mod/connedit.php:260 ../../mod/connedit.php:272
-#: ../../mod/connedit.php:287
+#: ../../mod/connedit.php:336 ../../mod/connedit.php:348
+#: ../../mod/connedit.php:360 ../../mod/connedit.php:372
+#: ../../mod/connedit.php:388
msgid "Unable to set address book parameters."
msgstr "Kunde inte ställa in adressboksparametrar."
-#: ../../mod/connedit.php:243
+#: ../../mod/connedit.php:343
msgid "Channel has been unignored"
msgstr "Kanalen ignoreras inte längre"
-#: ../../mod/connedit.php:244
+#: ../../mod/connedit.php:344
msgid "Channel has been ignored"
msgstr "Kanalen har ignorerats"
-#: ../../mod/connedit.php:255
+#: ../../mod/connedit.php:355
msgid "Channel has been unarchived"
msgstr "Kanalen arkiveras inte längre"
-#: ../../mod/connedit.php:256
+#: ../../mod/connedit.php:356
msgid "Channel has been archived"
msgstr "Kanalen har arkiverats"
-#: ../../mod/connedit.php:267
+#: ../../mod/connedit.php:367
msgid "Channel has been unhidden"
msgstr "Kanalen döljs inte längre"
-#: ../../mod/connedit.php:268
+#: ../../mod/connedit.php:368
msgid "Channel has been hidden"
msgstr "Kanalen har dolts"
-#: ../../mod/connedit.php:282
+#: ../../mod/connedit.php:383
msgid "Channel has been approved"
msgstr "Kanalen har godkänts"
-#: ../../mod/connedit.php:283
+#: ../../mod/connedit.php:384
msgid "Channel has been unapproved"
msgstr "Kanalen är inte godkänd längre"
-#: ../../mod/connedit.php:301
+#: ../../mod/connedit.php:412
msgid "Connection has been removed."
msgstr "Kontakten har tagits bort."
-#: ../../mod/connedit.php:321
+#: ../../mod/connedit.php:432
#, php-format
msgid "View %s's profile"
msgstr "Visa %ss profil"
-#: ../../mod/connedit.php:325
+#: ../../mod/connedit.php:436
msgid "Refresh Permissions"
msgstr "Uppdatera behörigheter"
-#: ../../mod/connedit.php:328
+#: ../../mod/connedit.php:439
msgid "Fetch updated permissions"
msgstr "Hämta uppdaterade behörigheter"
-#: ../../mod/connedit.php:332
+#: ../../mod/connedit.php:443
msgid "Recent Activity"
msgstr "Senaste aktiviteten"
-#: ../../mod/connedit.php:335
+#: ../../mod/connedit.php:446
msgid "View recent posts and comments"
msgstr "Visa de senaste inläggen och kommentarerna"
-#: ../../mod/connedit.php:342
+#: ../../mod/connedit.php:450 ../../mod/connedit.php:595
+#: ../../mod/admin.php:732
+msgid "Unblock"
+msgstr "Avblockera"
+
+#: ../../mod/connedit.php:450 ../../mod/connedit.php:595
+#: ../../mod/admin.php:731
+msgid "Block"
+msgstr "Blockera"
+
+#: ../../mod/connedit.php:453
msgid "Block or Unblock this connection"
msgstr "Blockera eller häv blockering av den här kontakten"
-#: ../../mod/connedit.php:346 ../../mod/connedit.php:482
+#: ../../mod/connedit.php:457 ../../mod/connedit.php:596
msgid "Unignore"
msgstr "Sluta att ignorera"
-#: ../../mod/connedit.php:346 ../../mod/connedit.php:482
+#: ../../mod/connedit.php:457 ../../mod/connedit.php:596
#: ../../mod/notifications.php:51
msgid "Ignore"
msgstr "Ignorera"
-#: ../../mod/connedit.php:349
+#: ../../mod/connedit.php:460
msgid "Ignore or Unignore this connection"
msgstr "Ignorera eller sluta att ignorera den här kontakten"
-#: ../../mod/connedit.php:352
+#: ../../mod/connedit.php:463
msgid "Unarchive"
msgstr "Sluta att arkivera"
-#: ../../mod/connedit.php:352
+#: ../../mod/connedit.php:463
msgid "Archive"
msgstr "Arkivera"
-#: ../../mod/connedit.php:355
+#: ../../mod/connedit.php:466
msgid "Archive or Unarchive this connection"
msgstr "Arkivera eller sluta att arkivera den här kontakten"
-#: ../../mod/connedit.php:358
+#: ../../mod/connedit.php:469
msgid "Unhide"
msgstr "Sluta att dölja"
-#: ../../mod/connedit.php:358
+#: ../../mod/connedit.php:469
msgid "Hide"
msgstr "Dölj"
-#: ../../mod/connedit.php:361
+#: ../../mod/connedit.php:472
msgid "Hide or Unhide this connection"
msgstr "Dölj eller sluta att dölja den här kontakten"
-#: ../../mod/connedit.php:368
+#: ../../mod/connedit.php:479
msgid "Delete this connection"
msgstr "Ta bort den här kontakten"
-#: ../../mod/connedit.php:401
-msgid "Unknown"
-msgstr "Okända"
-
-#: ../../mod/connedit.php:411 ../../mod/connedit.php:440
+#: ../../mod/connedit.php:523 ../../mod/connedit.php:553
msgid "Approve this connection"
msgstr "Godkänn den här kontakten"
-#: ../../mod/connedit.php:411
+#: ../../mod/connedit.php:523
msgid "Accept connection to allow communication"
msgstr "Acceptera kontakten för att tillåta kommunikation"
-#: ../../mod/connedit.php:427
-msgid "Automatic Permissions Settings"
-msgstr "Automatiska behörighetsinställningar"
-
-#: ../../mod/connedit.php:427
+#: ../../mod/connedit.php:539
#, php-format
msgid "Connections: settings for %s"
msgstr "Kontakter: inställningar för %s"
-#: ../../mod/connedit.php:431
-msgid ""
-"When receiving a channel introduction, any permissions provided here will be"
-" applied to the new connection automatically and the introduction approved. "
-"Leave this page if you do not wish to use this feature."
-msgstr "När en kanal presenterar sig för dig kommer alla behörigheter här att gälla för den nya kontakten automatiskt och presentationen att godkännas. Lämna den här sidan om du inte önskar använda den här funktionen."
+#: ../../mod/connedit.php:540
+msgid "Apply these permissions automatically"
+msgstr "Använd de här rättigheterna automatiskt"
-#: ../../mod/connedit.php:433
+#: ../../mod/connedit.php:544
+msgid "Apply the permissions indicated on this page to all new connections."
+msgstr "Använd rättigheterna angivna på den här sidan för alla nya kontakter."
+
+#: ../../mod/connedit.php:546
msgid "Slide to adjust your degree of friendship"
msgstr "Dra för att justera er vänskapsnivå"
-#: ../../mod/connedit.php:439
+#: ../../mod/connedit.php:552
msgid "inherited"
msgstr "ärvd"
-#: ../../mod/connedit.php:441
+#: ../../mod/connedit.php:554
msgid "Connection has no individual permissions!"
msgstr "Kontakten har inga individuella behörigheter!"
-#: ../../mod/connedit.php:442
+#: ../../mod/connedit.php:555
msgid ""
"This may be appropriate based on your <a href=\"settings\">privacy "
"settings</a>, though you may wish to review the \"Advanced Permissions\"."
msgstr "Det här kan vara lämpligt beroende på dina <a href=\"settings\">integritetsinställningar</a>, men du vill kanske se över de \"Avancerade inställningarna\"."
-#: ../../mod/connedit.php:444
+#: ../../mod/connedit.php:557
msgid "Profile Visibility"
msgstr "Profilsynlighet"
-#: ../../mod/connedit.php:445
+#: ../../mod/connedit.php:558
#, php-format
msgid ""
"Please choose the profile you would like to display to %s when viewing your "
"profile securely."
msgstr "Välj profilen som du vill ska synas när %s ser din profil på ett säkert sätt."
-#: ../../mod/connedit.php:446
+#: ../../mod/connedit.php:559
msgid "Contact Information / Notes"
msgstr "Kontaktinformation / anteckningar"
-#: ../../mod/connedit.php:447
+#: ../../mod/connedit.php:560
msgid "Edit contact notes"
msgstr "Redigera anteckningar för kontakten"
-#: ../../mod/connedit.php:449
+#: ../../mod/connedit.php:562
msgid "Their Settings"
msgstr "Deras inställningar"
-#: ../../mod/connedit.php:450
+#: ../../mod/connedit.php:563
msgid "My Settings"
msgstr "Mina inställningar"
-#: ../../mod/connedit.php:452
+#: ../../mod/connedit.php:565
+msgid "Clear/Disable Automatic Permissions"
+msgstr "Rensa/inaktivera automatiska behörigheter"
+
+#: ../../mod/connedit.php:566
msgid "Forum Members"
msgstr "Forummedlemmar"
-#: ../../mod/connedit.php:453
+#: ../../mod/connedit.php:567
msgid "Soapbox"
msgstr "Talarstol"
-#: ../../mod/connedit.php:454
+#: ../../mod/connedit.php:568
msgid "Full Sharing (typical social network permissions)"
msgstr "Full delning (typiska behörigheter för sociala nätverk)"
-#: ../../mod/connedit.php:455
+#: ../../mod/connedit.php:569
msgid "Cautious Sharing "
msgstr "Försiktig delning"
-#: ../../mod/connedit.php:456
+#: ../../mod/connedit.php:570
msgid "Follow Only"
msgstr "Följ endast"
-#: ../../mod/connedit.php:457
+#: ../../mod/connedit.php:571
msgid "Individual Permissions"
msgstr "Individuella behörigheter"
-#: ../../mod/connedit.php:458
+#: ../../mod/connedit.php:572
msgid ""
"Some permissions may be inherited from your channel <a "
"href=\"settings\">privacy settings</a>, which have higher priority than "
@@ -5818,153 +5844,839 @@ msgid ""
"have no effect."
msgstr "Vissa behörigheter kan ärvas från din kanals <a href=\"settings\">integritetsinställningar</a>, vilka har högre prioritet än individuella inställningar. Ändring av de ärvda inställningarna på den här sidan har ingen effekt."
-#: ../../mod/connedit.php:459
+#: ../../mod/connedit.php:573
msgid "Advanced Permissions"
msgstr "Avancerade behörighetsinställningar"
-#: ../../mod/connedit.php:460
+#: ../../mod/connedit.php:574
msgid "Simple Permissions (select one and submit)"
msgstr "Enkla behörighetsinställningar (välj en och spara)"
-#: ../../mod/connedit.php:464
+#: ../../mod/connedit.php:578
#, php-format
msgid "Visit %s's profile - %s"
msgstr "Besök %ss profil - %s"
-#: ../../mod/connedit.php:465
+#: ../../mod/connedit.php:579
msgid "Block/Unblock contact"
msgstr "Blockera/häv blockering av kontakt"
-#: ../../mod/connedit.php:466
+#: ../../mod/connedit.php:580
msgid "Ignore contact"
msgstr "Ignorera kontakt"
-#: ../../mod/connedit.php:467
+#: ../../mod/connedit.php:581
msgid "Repair URL settings"
msgstr "Reparera URL-inställningar"
-#: ../../mod/connedit.php:468
+#: ../../mod/connedit.php:582
msgid "View conversations"
msgstr "Visa konversationer"
-#: ../../mod/connedit.php:470
+#: ../../mod/connedit.php:584
msgid "Delete contact"
msgstr "Ta bort kontakt"
-#: ../../mod/connedit.php:473
+#: ../../mod/connedit.php:587
msgid "Last update:"
msgstr "Senaste uppdatering:"
-#: ../../mod/connedit.php:475
+#: ../../mod/connedit.php:589
msgid "Update public posts"
msgstr "Uppdatera offentliga inlägg"
-#: ../../mod/connedit.php:477
+#: ../../mod/connedit.php:591
msgid "Update now"
msgstr "Uppdatera nu"
-#: ../../mod/connedit.php:483
+#: ../../mod/connedit.php:597
msgid "Currently blocked"
msgstr "Blockerad"
-#: ../../mod/connedit.php:484
+#: ../../mod/connedit.php:598
msgid "Currently ignored"
msgstr "Ignorerad"
-#: ../../mod/connedit.php:485
+#: ../../mod/connedit.php:599
msgid "Currently archived"
msgstr "Arkiverad"
-#: ../../mod/connedit.php:486
+#: ../../mod/connedit.php:600
msgid "Currently pending"
msgstr "Inväntar svar"
-#: ../../mod/connedit.php:487
+#: ../../mod/connedit.php:601
msgid "Hide this contact from others"
msgstr "Dölj den här kontakten för andra"
-#: ../../mod/connedit.php:487
+#: ../../mod/connedit.php:601
msgid ""
"Replies/likes to your public posts <strong>may</strong> still be visible"
msgstr "Svar/gilla-reaktioner på dina offentliga inlägg <strong>kan</strong> fortfarande synas"
-#: ../../mod/layouts.php:62
-msgid "Help with this feature"
-msgstr "Hjälp för den här funktionen"
+#: ../../mod/mail.php:33
+msgid "Unable to lookup recipient."
+msgstr "Kunde inte hitta mottagare."
-#: ../../mod/layouts.php:84
-msgid "Layout Name"
-msgstr "Layoutnamn"
+#: ../../mod/mail.php:41
+msgid "Unable to communicate with requested channel."
+msgstr "Kunde inte kommunicera med den begärda kanalen."
+
+#: ../../mod/mail.php:48
+msgid "Cannot verify requested channel."
+msgstr "Kan inte bekräfta den begärda kanalen."
+
+#: ../../mod/mail.php:74
+msgid "Selected channel has private message restrictions. Send failed."
+msgstr "Den valda kanalen har restriktioner för privata meddelanden. Misslyckades att skicka."
+
+#: ../../mod/mail.php:136
+msgid "Message deleted."
+msgstr "Meddelande borttaget."
+
+#: ../../mod/mail.php:153
+msgid "Message recalled."
+msgstr "Meddelande återkallat."
+
+#: ../../mod/mail.php:222
+msgid "Send Private Message"
+msgstr "Skicka privat meddelande."
+
+#: ../../mod/mail.php:223 ../../mod/mail.php:340
+msgid "To:"
+msgstr "Till:"
+
+#: ../../mod/mail.php:228 ../../mod/mail.php:342
+msgid "Subject:"
+msgstr "Ämne:"
+
+#: ../../mod/mail.php:232 ../../mod/mail.php:345 ../../mod/invite.php:131
+msgid "Your message:"
+msgstr "Ditt meddelande:"
+
+#: ../../mod/mail.php:239
+msgid "Send"
+msgstr "Skicka"
+
+#: ../../mod/mail.php:266
+msgid "Message not found."
+msgstr "Meddelandet hittades inte."
+
+#: ../../mod/mail.php:309
+msgid "Delete message"
+msgstr "Ta bort meddelande"
+
+#: ../../mod/mail.php:310
+msgid "Recall message"
+msgstr "Ã…terkalla meddelande"
+
+#: ../../mod/mail.php:312
+msgid "Message has been recalled."
+msgstr "Meddelandet har återkallats."
+
+#: ../../mod/mail.php:329
+msgid "Private Conversation"
+msgstr "Privat konversation"
+
+#: ../../mod/mail.php:333 ../../mod/message.php:72
+msgid "Delete conversation"
+msgstr "Ta bort konversation"
+
+#: ../../mod/mail.php:335
+msgid ""
+"No secure communications available. You <strong>may</strong> be able to "
+"respond from the sender's profile page."
+msgstr "Ingen säker kommunikationskanal tillgänglig. Du kan <strong>möjligtvis</strong> svara från avsändarens profilsida."
+
+#: ../../mod/mail.php:339
+msgid "Send Reply"
+msgstr "Skicka svar"
+
+#: ../../mod/photos.php:77
+msgid "Page owner information could not be retrieved."
+msgstr "Information om sidans ägare kunde inte hittas."
+
+#: ../../mod/photos.php:97
+msgid "Album not found."
+msgstr "Albumet hittades inte."
+
+#: ../../mod/photos.php:119 ../../mod/photos.php:672
+msgid "Delete Album"
+msgstr "Ta bort album"
+
+#: ../../mod/photos.php:159 ../../mod/photos.php:958
+msgid "Delete Photo"
+msgstr "Ta bort foto"
+
+#: ../../mod/photos.php:469
+msgid "No photos selected"
+msgstr "Inga foton valda"
+
+#: ../../mod/photos.php:513
+msgid "Access to this item is restricted."
+msgstr "Åtkomst till den här posten är begränsat."
+
+#: ../../mod/photos.php:552
+#, php-format
+msgid "%1$.2f MB of %2$.2f MB photo storage used."
+msgstr "%1$.2f MB av %2$.2f MB fotolagring använt."
+
+#: ../../mod/photos.php:555
+#, php-format
+msgid "%1$.2f MB photo storage used."
+msgstr "%1$.2f MB fotolagring använt."
+
+#: ../../mod/photos.php:579
+msgid "Upload Photos"
+msgstr "Ladda upp foton"
+
+#: ../../mod/photos.php:583 ../../mod/photos.php:665 ../../mod/photos.php:943
+msgid "Enter a new album name"
+msgstr "Ange ett nytt albumnamn"
+
+#: ../../mod/photos.php:584 ../../mod/photos.php:666 ../../mod/photos.php:944
+msgid "or select an existing one (doubleclick)"
+msgstr "eller välj ett befintligt (dubbelklicka)"
+
+#: ../../mod/photos.php:585
+msgid "Do not show a status post for this upload"
+msgstr "Visa inte en statusuppdatering för den här uppladdningen"
+
+#: ../../mod/photos.php:613
+msgid "Album name could not be decoded"
+msgstr "Albumnamn kunde inte tolkas"
+
+#: ../../mod/photos.php:654 ../../mod/photos.php:1167
+#: ../../mod/photos.php:1183
+msgid "Contact Photos"
+msgstr "Kontaktfoton"
+
+#: ../../mod/photos.php:678
+msgid "Show Newest First"
+msgstr "Visa nyast först"
+
+#: ../../mod/photos.php:680
+msgid "Show Oldest First"
+msgstr "Visa äldst först"
+
+#: ../../mod/photos.php:707 ../../mod/photos.php:1215
+msgid "View Photo"
+msgstr "Visa foto"
+
+#: ../../mod/photos.php:736
+msgid "Edit Album"
+msgstr "Redigera album"
+
+#: ../../mod/photos.php:781
+msgid "Permission denied. Access to this item may be restricted."
+msgstr "Behörighet saknas. Åtkomst till den här posten kan vara begränsat."
+
+#: ../../mod/photos.php:783
+msgid "Photo not available"
+msgstr "Foto inte tillgängligt"
+
+#: ../../mod/photos.php:841
+msgid "Use as profile photo"
+msgstr "Använd som profilfoto"
+
+#: ../../mod/photos.php:848
+msgid "Private Photo"
+msgstr "Privat foto"
+
+#: ../../mod/photos.php:863
+msgid "View Full Size"
+msgstr "Visa fullstorlek"
+
+#: ../../mod/photos.php:937
+msgid "Edit photo"
+msgstr "Redigera foto"
+
+#: ../../mod/photos.php:939
+msgid "Rotate CW (right)"
+msgstr "Rotera medurs (höger)"
+
+#: ../../mod/photos.php:940
+msgid "Rotate CCW (left)"
+msgstr "Rotera moturs (vänster)"
+
+#: ../../mod/photos.php:947
+msgid "Caption"
+msgstr "Bildtext"
+
+#: ../../mod/photos.php:949
+msgid "Add a Tag"
+msgstr "Lägg till en tagg"
+
+#: ../../mod/photos.php:953
+msgid "Example: @bob, @Barbara_Jensen, @jim@example.com"
+msgstr "Exempel: @bob, @Barbara_Jensen, @jim@example.com"
+
+#: ../../mod/photos.php:956
+msgid "Flag as adult in album view"
+msgstr "Flagga som olämpligt för barn i albumvyn"
+
+#: ../../mod/photos.php:1133
+msgid "In This Photo:"
+msgstr "PÃ¥ fotot:"
+
+#: ../../mod/photos.php:1221
+msgid "View Album"
+msgstr "Visa album"
+
+#: ../../mod/photos.php:1244
+msgid "Recent Photos"
+msgstr "Nya foton"
+
+#: ../../mod/bookmarks.php:38
+msgid "Bookmark added"
+msgstr "Bokmärke tillagt"
+
+#: ../../mod/bookmarks.php:60
+msgid "My Bookmarks"
+msgstr "Mina bokmärken"
+
+#: ../../mod/bookmarks.php:71
+msgid "My Connections Bookmarks"
+msgstr "Mina kontakters bokmärken"
+
+#: ../../mod/dirsearch.php:21
+msgid "This site is not a directory server"
+msgstr "Den här servern är inte en katalogserver"
+
+#: ../../mod/cloud.php:130
+msgid "RedMatrix - Guests: Username: {your email address}, Password: +++"
+msgstr "RedMatrix - Gäster: Användarnamn {din e-postadress}, Lösenord: +++"
+
+#: ../../mod/acl.php:245
+msgid "network"
+msgstr "nätverk"
+
+#: ../../mod/blocks.php:99
+msgid "Block Name"
+msgstr "Blocknamn"
+
+#: ../../mod/editblock.php:115
+msgid "Edit Block"
+msgstr "Redigera block"
+
+#: ../../mod/editblock.php:125
+msgid "Delete block?"
+msgstr "Ta bort block?"
+
+#: ../../mod/editblock.php:183
+msgid "Delete Block"
+msgstr "Ta bort block"
+
+#: ../../mod/pdledit.php:13
+msgid "Layout updated."
+msgstr "Layout uppdaterad."
+
+#: ../../mod/pdledit.php:28 ../../mod/pdledit.php:53
+msgid "Edit System Page Description"
+msgstr "Redigera systemsidbeskrivning"
+
+#: ../../mod/pdledit.php:48
+msgid "Layout not found."
+msgstr "Layout hittas inte."
+
+#: ../../mod/pdledit.php:54
+msgid "Module Name:"
+msgstr "Modulnamn:"
+
+#: ../../mod/pdledit.php:55 ../../mod/layouts.php:107
+msgid "Layout Help"
+msgstr "Layouthjälp"
+
+#: ../../mod/editlayout.php:108
+msgid "Edit Layout"
+msgstr "Redigera layout"
+
+#: ../../mod/editlayout.php:117
+msgid "Delete layout?"
+msgstr "Ta bort layout?"
+
+#: ../../mod/editlayout.php:178
+msgid "Delete Layout"
+msgstr "Ta bort layout"
+
+#: ../../mod/home.php:48
+msgid "Red Matrix - &quot;The Network&quot;"
+msgstr "Red Matrix - &quot;Nätverket&quot;"
+
+#: ../../mod/home.php:101
+#, php-format
+msgid "Welcome to %s"
+msgstr "Välkommen till %s"
+
+#: ../../mod/editwebpage.php:140
+msgid "Edit Webpage"
+msgstr "Redigera webbsida"
+
+#: ../../mod/editwebpage.php:150
+msgid "Delete webpage?"
+msgstr "Ta bort webbsida?"
+
+#: ../../mod/editwebpage.php:215
+msgid "Delete Webpage"
+msgstr "Ta bort webbsida"
+
+#: ../../mod/impel.php:33
+msgid "webpage"
+msgstr "webbsida"
+
+#: ../../mod/impel.php:38
+msgid "block"
+msgstr "block"
+
+#: ../../mod/impel.php:43
+msgid "layout"
+msgstr "layout"
+
+#: ../../mod/impel.php:117
+#, php-format
+msgid "%s element installed"
+msgstr "%selement installerat"
+
+#: ../../mod/profile_photo.php:108
+msgid "Image uploaded but image cropping failed."
+msgstr "Bilden laddades upp men beskärning misslyckades."
+
+#: ../../mod/profile_photo.php:161
+msgid "Image resize failed."
+msgstr "Ändring av bildstorlek misslyckades."
+
+#: ../../mod/profile_photo.php:205
+msgid ""
+"Shift-reload the page or clear browser cache if the new photo does not "
+"display immediately."
+msgstr "Shift-uppdatera sidan eller rensa webbläsarcachen om det nya fotot inte visas direkt."
+
+#: ../../mod/profile_photo.php:232
+#, php-format
+msgid "Image exceeds size limit of %d"
+msgstr "Bilden överskrider storleksbegränsningen %d"
+
+#: ../../mod/profile_photo.php:241
+msgid "Unable to process image."
+msgstr "Kunde inte behandla bilden."
+
+#: ../../mod/profile_photo.php:290 ../../mod/profile_photo.php:339
+msgid "Photo not available."
+msgstr "Fotot är inte tillgängligt."
+
+#: ../../mod/profile_photo.php:358
+msgid "Upload File:"
+msgstr "Ladda upp fil:"
+
+#: ../../mod/profile_photo.php:359
+msgid "Select a profile:"
+msgstr "Välj en profil:"
+
+#: ../../mod/profile_photo.php:360
+msgid "Upload Profile Photo"
+msgstr "Ladda upp profilfoto"
+
+#: ../../mod/profile_photo.php:365
+msgid "skip this step"
+msgstr "hoppa över det här steget"
+
+#: ../../mod/profile_photo.php:365
+msgid "select a photo from your photo albums"
+msgstr "välj ett foto från dina fotoalbum"
+
+#: ../../mod/profile_photo.php:381
+msgid "Crop Image"
+msgstr "Beskär bild"
+
+#: ../../mod/profile_photo.php:382
+msgid "Please adjust the image cropping for optimum viewing."
+msgstr "Justera bildens beskärning för bästa utseende."
+
+#: ../../mod/profile_photo.php:384
+msgid "Done Editing"
+msgstr "Klar med redigering"
+
+#: ../../mod/profile_photo.php:427
+msgid "Image uploaded successfully."
+msgstr "Bilduppladdning lyckades."
+
+#: ../../mod/profile_photo.php:429
+msgid "Image upload failed."
+msgstr "Bilduppladdning misslyckades."
-#: ../../mod/help.php:43 ../../mod/help.php:49 ../../mod/help.php:55
+#: ../../mod/profile_photo.php:438
+#, php-format
+msgid "Image size reduction [%s] failed."
+msgstr "Krympning av bilden [%s] misslyckades."
+
+#: ../../mod/like.php:15
+msgid "Like/Dislike"
+msgstr "Gilla/ogilla"
+
+#: ../../mod/like.php:20
+msgid "This action is restricted to members."
+msgstr "Den här åtgärden fungerar bara för medlemmar."
+
+#: ../../mod/like.php:21
+msgid ""
+"Please <a href=\"rmagic\">login with your RedMatrix ID</a> or <a "
+"href=\"register\">register as a new RedMatrix member</a> to continue."
+msgstr "<a href=\"rmagic\">Logga in med ditt RedMatrix-ID</a> eller <a href=\"register\">registrera dig som ny RedMatrix medlem</a> för att fortsätta."
+
+#: ../../mod/like.php:77 ../../mod/like.php:104 ../../mod/like.php:142
+msgid "Invalid request."
+msgstr "Ogiltig begäran."
+
+#: ../../mod/like.php:119
+msgid "thing"
+msgstr "sak"
+
+#: ../../mod/like.php:165
+msgid "Channel unavailable."
+msgstr "Kanalen kan ej nås."
+
+#: ../../mod/like.php:204
+msgid "Previous action reversed."
+msgstr "Föregående åtgärd återställdes."
+
+#: ../../mod/like.php:422
+msgid "Action completed."
+msgstr "Åtgärden slutfördes."
+
+#: ../../mod/like.php:423
+msgid "Thank you."
+msgstr "Tack."
+
+#: ../../mod/help.php:41 ../../mod/help.php:47 ../../mod/help.php:53
msgid "Help:"
msgstr "Hjälp:"
-#: ../../mod/help.php:69 ../../index.php:223
+#: ../../mod/help.php:67 ../../index.php:238
msgid "Not Found"
msgstr "Hittas inte"
-#: ../../mod/help.php:72 ../../mod/page.php:83 ../../mod/display.php:100
-#: ../../mod/block.php:75 ../../index.php:226
-msgid "Page not found."
-msgstr "Sidan hittas inte."
+#: ../../mod/thing.php:96
+msgid "Thing updated"
+msgstr "Föremål uppdaterat"
-#: ../../mod/rmagic.php:38
+#: ../../mod/thing.php:156
+msgid "Object store: failed"
+msgstr "Objektlagring: misslyckades"
+
+#: ../../mod/thing.php:160
+msgid "Thing added"
+msgstr "Föremål tillagt"
+
+#: ../../mod/thing.php:180
+#, php-format
+msgid "OBJ: %1$s %2$s %3$s"
+msgstr "OBJ: %1$s %2$s %3$s"
+
+#: ../../mod/thing.php:232
+msgid "Show Thing"
+msgstr "Visa föremål"
+
+#: ../../mod/thing.php:239
+msgid "item not found."
+msgstr "föremål hittades inte."
+
+#: ../../mod/thing.php:270
+msgid "Edit Thing"
+msgstr "Redigera föremål"
+
+#: ../../mod/thing.php:272 ../../mod/thing.php:319
+msgid "Select a profile"
+msgstr "Välj en profil"
+
+#: ../../mod/thing.php:276 ../../mod/thing.php:322
+msgid "Post an activity"
+msgstr "Posta en aktivitet"
+
+#: ../../mod/thing.php:276 ../../mod/thing.php:322
+msgid "Only sends to viewers of the applicable profile"
+msgstr "Skickar bara till de som tittar på den aktuella profilen"
+
+#: ../../mod/thing.php:278 ../../mod/thing.php:324
+msgid "Name of thing e.g. something"
+msgstr "Namn på föremål, t.ex. någonting"
+
+#: ../../mod/thing.php:280 ../../mod/thing.php:325
+msgid "URL of thing (optional)"
+msgstr "URL för föremål (frivilligt)"
+
+#: ../../mod/thing.php:282 ../../mod/thing.php:326
+msgid "URL for photo of thing (optional)"
+msgstr "URL för foto på föremål (frivilligt)"
+
+#: ../../mod/thing.php:317
+msgid "Add Thing to your Profile"
+msgstr "Lägg till föremål till din profil"
+
+#: ../../mod/fsuggest.php:20 ../../mod/fsuggest.php:92
+msgid "Contact not found."
+msgstr "Kontakten hittades inte."
+
+#: ../../mod/fsuggest.php:63
+msgid "Friend suggestion sent."
+msgstr "Vänförfrågan skickad."
+
+#: ../../mod/fsuggest.php:97
+msgid "Suggest Friends"
+msgstr "Föreslå vänner"
+
+#: ../../mod/fsuggest.php:99
+#, php-format
+msgid "Suggest a friend for %s"
+msgstr "Föreslå en vän för %s"
+
+#: ../../mod/filestorage.php:76
+msgid "Permission Denied."
+msgstr "Behörighet saknas."
+
+#: ../../mod/filestorage.php:92
+msgid "File not found."
+msgstr "Filen hittas inte."
+
+#: ../../mod/filestorage.php:131
+msgid "Edit file permissions"
+msgstr "Redigera filrättigheter"
+
+#: ../../mod/filestorage.php:140
+msgid "Set/edit permissions"
+msgstr "Ställ in/ändra behörigheter"
+
+#: ../../mod/filestorage.php:141
+msgid "Include all files and sub folders"
+msgstr "Inkludera alla filer och underkataloger"
+
+#: ../../mod/filestorage.php:142
+msgid "Return to file list"
+msgstr "Återgå till fillistan"
+
+#: ../../mod/filestorage.php:144
+msgid "Copy/paste this code to attach file to a post"
+msgstr "Kopiera/klistra in den här koden för att bifoga filen i ett inlägg"
+
+#: ../../mod/filestorage.php:145
+msgid "Copy/paste this URL to link file from a web page"
+msgstr "Kopiera/klistra in den här URL:en för att länka till filen från en webbsida"
+
+#: ../../mod/connect.php:56 ../../mod/connect.php:104
+msgid "Continue"
+msgstr "Fortsätt"
+
+#: ../../mod/connect.php:85
+msgid "Premium Channel Setup"
+msgstr "Inställning av premiumkanal"
+
+#: ../../mod/connect.php:87
+msgid "Enable premium channel connection restrictions"
+msgstr "Aktivera kontaktrestriktioner för premiumkanal"
+
+#: ../../mod/connect.php:88
msgid ""
-"We encountered a problem while logging in with the OpenID you provided. "
-"Please check the correct spelling of the ID."
-msgstr "Vi drabbades av ett problem vid inloggningen med OpenID:t du uppgav. Kontrollera att ID:t är korrekt stavat."
+"Please enter your restrictions or conditions, such as paypal receipt, usage "
+"guidelines, etc."
+msgstr "Ange dina restriktioner och villkor, som Paypal-kvitto, användarriktlinjer, etc."
-#: ../../mod/rmagic.php:38
-msgid "The error message was:"
-msgstr "Felmeddelandet var:"
+#: ../../mod/connect.php:90 ../../mod/connect.php:110
+msgid ""
+"This channel may require additional steps or acknowledgement of the "
+"following conditions prior to connecting:"
+msgstr "Den här kanalen kan kräva ytterligare steg eller godkännande av följande villkor innan anslutning:"
-#: ../../mod/rmagic.php:42
-msgid "Authentication failed."
-msgstr "Autentisering misslyckades."
+#: ../../mod/connect.php:91
+msgid ""
+"Potential connections will then see the following text before proceeding:"
+msgstr "Potentiella kontakter kommer sedan att se följande text innan de går vidare:"
-#: ../../mod/rmagic.php:78
-msgid "Remote Authentication"
-msgstr "Fjärrautentisering."
+#: ../../mod/connect.php:92 ../../mod/connect.php:113
+msgid ""
+"By continuing, I certify that I have complied with any instructions provided"
+" on this page."
+msgstr "Genom att fortsätta intygar jag att jag har följt alla instruktioner som ges på den här sidan."
-#: ../../mod/rmagic.php:79
-msgid "Enter your channel address (e.g. channel@example.com)"
-msgstr "Ange din kanaladress (t.ex. kanal@example.com)"
+#: ../../mod/connect.php:101
+msgid "(No specific instructions have been provided by the channel owner.)"
+msgstr "(Inga specifika instruktioner har givits av kanalägaren.)"
-#: ../../mod/rmagic.php:80
-msgid "Authenticate"
-msgstr "Autentisera"
+#: ../../mod/connect.php:109
+msgid "Restricted or Premium Channel"
+msgstr "Begränsad kanal eller premiumkanal"
-#: ../../mod/page.php:35 ../../mod/block.php:27
-msgid "Invalid item."
-msgstr "Ogiltig post."
+#: ../../mod/filer.php:49
+msgid "- select -"
+msgstr "- välj -"
-#: ../../mod/network.php:79
-msgid "No such group"
-msgstr "Ingen sådan grupp"
+#: ../../mod/locs.php:19 ../../mod/locs.php:46
+msgid "Location not found."
+msgstr "Platsen hittades inte."
-#: ../../mod/network.php:119
-msgid "Search Results For:"
-msgstr "Sökresultat för:"
+#: ../../mod/locs.php:50
+msgid "Primary location cannot be removed."
+msgstr "Huvudplatsen kan inte tas bort."
-#: ../../mod/network.php:173
-msgid "Collection is empty"
-msgstr "Sammanhanget är tomt"
+#: ../../mod/locs.php:82
+msgid "No locations found."
+msgstr "Inga platser hittades."
-#: ../../mod/network.php:181
-msgid "Collection: "
-msgstr "Sammanhang: "
+#: ../../mod/locs.php:95
+msgid "Manage Channel Locations"
+msgstr "Hantera kanalplatser"
-#: ../../mod/network.php:194
-msgid "Connection: "
-msgstr "Kontakt:"
+#: ../../mod/locs.php:96
+msgid "Location (address)"
+msgstr "Plats (adress)"
-#: ../../mod/network.php:197
-msgid "Invalid connection."
-msgstr "Ogiltig kontakt."
+#: ../../mod/locs.php:97
+msgid "Primary Location"
+msgstr "Huvudplats"
+
+#: ../../mod/locs.php:98
+msgid "Drop location"
+msgstr "Ta bort plats"
+
+#: ../../mod/follow.php:25
+msgid "Channel added."
+msgstr "Kanal tillagd."
+
+#: ../../mod/import.php:25
+#, php-format
+msgid "Your service plan only allows %d channels."
+msgstr "Din tjänstenivå tillåter bara %d kanaler."
+
+#: ../../mod/import.php:51
+msgid "Nothing to import."
+msgstr "Inget att importera."
+
+#: ../../mod/import.php:75
+msgid "Unable to download data from old server"
+msgstr "Kunde inte ladda ner data från den gamla servern"
+
+#: ../../mod/import.php:81
+msgid "Imported file is empty."
+msgstr "Den importerade filen är tom."
+
+#: ../../mod/import.php:106
+msgid ""
+"Cannot create a duplicate channel identifier on this system. Import failed."
+msgstr "Kan inte skapa ett dubblerat kanal-ID på det här systemet. Import misslyckades."
+
+#: ../../mod/import.php:127
+msgid "Unable to create a unique channel address. Import failed."
+msgstr "Kan inte skapa en unik kanaladress. Import misslyckades."
+
+#: ../../mod/import.php:147
+msgid "Channel clone failed. Import failed."
+msgstr "Kloning av kanalen misslyckades. Import misslyckades."
+
+#: ../../mod/import.php:157
+msgid "Cloned channel not found. Import failed."
+msgstr "Den klonade kanalen hittas inte. Import misslyckades."
+
+#: ../../mod/import.php:475
+msgid "Import completed."
+msgstr "Import slutförd."
+
+#: ../../mod/import.php:487
+msgid "You must be logged in to use this feature."
+msgstr "Du måste vara inloggad för att kunna använda den här funktionen."
+
+#: ../../mod/import.php:492
+msgid "Import Channel"
+msgstr "Importera kanal"
+
+#: ../../mod/import.php:493
+msgid ""
+"Use this form to import an existing channel from a different server/hub. You"
+" may retrieve the channel identity from the old server/hub via the network "
+"or provide an export file. Only identity and connections/relationships will "
+"be imported. Importation of content is not yet available."
+msgstr "Använd det här formuläret för att importera en befintlig kanal från en annan server/hubb. Du kan få kanal-ID:t från den gamla servern/hubben över nätverket eller tillhandahålla en exportfil. Endast identitet och kontakter/relationer kommer att importeras. Import av innehåll stöds ännu inte."
+
+#: ../../mod/import.php:494
+msgid "File to Upload"
+msgstr "Fil att ladda upp"
+
+#: ../../mod/import.php:495
+msgid "Or provide the old server/hub details"
+msgstr "Eller ge uppgifter om den gamla servern/hubben"
+
+#: ../../mod/import.php:496
+msgid "Your old identity address (xyz@example.com)"
+msgstr "Din gamla identitetsadress (xyz@example.com)"
+
+#: ../../mod/import.php:497
+msgid "Your old login email address"
+msgstr "Din gamla e-postadress för inloggning"
+
+#: ../../mod/import.php:498
+msgid "Your old login password"
+msgstr "Ditt gamla inloggningslösenord"
+
+#: ../../mod/import.php:499
+msgid ""
+"For either option, please choose whether to make this hub your new primary "
+"address, or whether your old location should continue this role. You will be"
+" able to post from either location, but only one can be marked as the "
+"primary location for files, photos, and media."
+msgstr "Ange i bägge fallen om den här hubben ska vara din nya primära adress eller om den gamla platsen ska fortsätta att ha den rollen. Du kommer att kunna posta från båda platser, men bara en kan vara primärt utrymme för filer, foton och media."
+
+#: ../../mod/import.php:500
+msgid "Make this hub my primary location"
+msgstr "Gör den här hubben till min primära plats"
+
+#: ../../mod/import.php:501
+msgid "Import existing posts if possible"
+msgstr "Importera befintliga inlägg om möjligt"
+
+#: ../../mod/item.php:159
+msgid "Unable to locate original post."
+msgstr "Kunde inte hitta originalinlägget."
+
+#: ../../mod/item.php:418
+msgid "Empty post discarded."
+msgstr "Tomt inlägg förkastat."
+
+#: ../../mod/item.php:460
+msgid "Executable content type not permitted to this channel."
+msgstr "Körbart innehåll tillåts inte i den här kanalen."
+
+#: ../../mod/item.php:899
+msgid "System error. Post not saved."
+msgstr "Systemfel. Inlägget inte sparat."
+
+#: ../../mod/item.php:1117
+#, php-format
+msgid "You have reached your limit of %1$.0f top level posts."
+msgstr "Du har nått din gräns på %1$.0f toppnivåinlägg."
+
+#: ../../mod/item.php:1123
+#, php-format
+msgid "You have reached your limit of %1$.0f webpages."
+msgstr "Du har nått din gräns på %1$.0f webbsidor."
+
+#: ../../mod/suggest.php:35
+msgid ""
+"No suggestions available. If this is a new site, please try again in 24 "
+"hours."
+msgstr "Inga förslag tillgängliga. Om det här är en ny server, försök igen om 24 timmar."
+
+#: ../../mod/layouts.php:110
+msgid "Help with this feature"
+msgstr "Hjälp för den här funktionen"
+
+#: ../../mod/layouts.php:130
+msgid "Layout Name"
+msgstr "Layoutnamn"
-#: ../../mod/profiles.php:18 ../../mod/profiles.php:138
-#: ../../mod/profiles.php:168 ../../mod/profiles.php:463
+#: ../../mod/tagger.php:98
+#, php-format
+msgid "%1$s tagged %2$s's %3$s with %4$s"
+msgstr "%1$s taggade%2$ss %3$s med %4$s"
+
+#: ../../mod/profiles.php:18 ../../mod/profiles.php:165
+#: ../../mod/profiles.php:222 ../../mod/profiles.php:565
msgid "Profile not found."
msgstr "Profil hittades inte."
@@ -5984,1438 +6696,1402 @@ msgstr "Ny profil skapad."
msgid "Profile unavailable to clone."
msgstr "Profil inte tillgänglig för kloning."
-#: ../../mod/profiles.php:178
+#: ../../mod/profiles.php:136
+msgid "Profile unavailable to export."
+msgstr "Profil inte tillgänglig för export."
+
+#: ../../mod/profiles.php:232
msgid "Profile Name is required."
msgstr "Profilnamn krävs."
-#: ../../mod/profiles.php:294
+#: ../../mod/profiles.php:378
msgid "Marital Status"
msgstr "Civilstånd"
-#: ../../mod/profiles.php:298
+#: ../../mod/profiles.php:382
msgid "Romantic Partner"
msgstr "Romantisk partner"
-#: ../../mod/profiles.php:302
+#: ../../mod/profiles.php:386
msgid "Likes"
msgstr "Gillar"
-#: ../../mod/profiles.php:306
+#: ../../mod/profiles.php:390
msgid "Dislikes"
msgstr "Ogillar"
-#: ../../mod/profiles.php:310
+#: ../../mod/profiles.php:394
msgid "Work/Employment"
msgstr "Arbete/sysselsättning"
-#: ../../mod/profiles.php:313
+#: ../../mod/profiles.php:397
msgid "Religion"
msgstr "Religion"
-#: ../../mod/profiles.php:317
+#: ../../mod/profiles.php:401
msgid "Political Views"
msgstr "Politisk åskådning"
-#: ../../mod/profiles.php:321
+#: ../../mod/profiles.php:405
msgid "Gender"
msgstr "Kön"
-#: ../../mod/profiles.php:325
+#: ../../mod/profiles.php:409
msgid "Sexual Preference"
msgstr "Sexuell preferens"
-#: ../../mod/profiles.php:329
+#: ../../mod/profiles.php:413
msgid "Homepage"
msgstr "Hemsida"
-#: ../../mod/profiles.php:333
+#: ../../mod/profiles.php:417
msgid "Interests"
msgstr "Intressen"
-#: ../../mod/profiles.php:344 ../../mod/pubsites.php:31
-msgid "Location"
-msgstr "Plats"
+#: ../../mod/profiles.php:421 ../../mod/admin.php:866
+msgid "Address"
+msgstr "Adress"
-#: ../../mod/profiles.php:427
+#: ../../mod/profiles.php:511
msgid "Profile updated."
msgstr "Profil uppdaterad."
-#: ../../mod/profiles.php:482
+#: ../../mod/profiles.php:590
msgid "Hide your contact/friend list from viewers of this profile?"
msgstr "Dölj din kontakt-/vänlista för de som ser den här profilen"
-#: ../../mod/profiles.php:505
+#: ../../mod/profiles.php:632
msgid "Edit Profile Details"
msgstr "Redigera profildetaljer"
-#: ../../mod/profiles.php:507
+#: ../../mod/profiles.php:634
msgid "View this profile"
msgstr "Visa den här profilen"
-#: ../../mod/profiles.php:508
+#: ../../mod/profiles.php:636
msgid "Change Profile Photo"
msgstr "Byt profilfoto"
-#: ../../mod/profiles.php:509
+#: ../../mod/profiles.php:637
msgid "Create a new profile using these settings"
msgstr "Skapa en ny profil utifrån de här inställningarna"
-#: ../../mod/profiles.php:510
+#: ../../mod/profiles.php:638
msgid "Clone this profile"
msgstr "Klona den här profilen"
-#: ../../mod/profiles.php:511
+#: ../../mod/profiles.php:639
msgid "Delete this profile"
msgstr "Ta bort den här profilen"
-#: ../../mod/profiles.php:512
+#: ../../mod/profiles.php:641
+msgid "Import profile from file"
+msgstr "Importera profil från fil"
+
+#: ../../mod/profiles.php:642
+msgid "Export profile to file"
+msgstr "Exportera profil som fil"
+
+#: ../../mod/profiles.php:643
msgid "Profile Name:"
msgstr "Profilnamn:"
-#: ../../mod/profiles.php:513
+#: ../../mod/profiles.php:644
msgid "Your Full Name:"
msgstr "Ditt fulllständiga namn:"
-#: ../../mod/profiles.php:514
+#: ../../mod/profiles.php:645
msgid "Title/Description:"
msgstr "Titel/beskrivning:"
-#: ../../mod/profiles.php:515
+#: ../../mod/profiles.php:646
msgid "Your Gender:"
msgstr "Ditt kön:"
-#: ../../mod/profiles.php:516
-#, php-format
-msgid "Birthday (%s):"
-msgstr "Födelsedag (%s):"
+#: ../../mod/profiles.php:647
+msgid "Birthday :"
+msgstr "Födelsedag:"
-#: ../../mod/profiles.php:517
+#: ../../mod/profiles.php:648
msgid "Street Address:"
msgstr "Gatuadress:"
-#: ../../mod/profiles.php:518
+#: ../../mod/profiles.php:649
msgid "Locality/City:"
msgstr "Ort:"
-#: ../../mod/profiles.php:519
+#: ../../mod/profiles.php:650
msgid "Postal/Zip Code:"
msgstr "Postnummer:"
-#: ../../mod/profiles.php:520
+#: ../../mod/profiles.php:651
msgid "Country:"
msgstr "Land:"
-#: ../../mod/profiles.php:521
+#: ../../mod/profiles.php:652
msgid "Region/State:"
msgstr "Region:"
-#: ../../mod/profiles.php:522
+#: ../../mod/profiles.php:653
msgid "<span class=\"heart\">&hearts;</span> Marital Status:"
msgstr "<span class=\"heart\">&hearts;</span> Civilstånd:"
-#: ../../mod/profiles.php:523
+#: ../../mod/profiles.php:654
msgid "Who: (if applicable)"
msgstr "Vem: (om tillämpligt)"
-#: ../../mod/profiles.php:524
+#: ../../mod/profiles.php:655
msgid "Examples: cathy123, Cathy Williams, cathy@example.com"
msgstr "Exempel: cathy123, Cathy Williams, cathy@example.com"
-#: ../../mod/profiles.php:525
+#: ../../mod/profiles.php:656
msgid "Since [date]:"
msgstr "Sedan [datum]"
-#: ../../mod/profiles.php:527
+#: ../../mod/profiles.php:658
msgid "Homepage URL:"
msgstr "Hemsideadress:"
-#: ../../mod/profiles.php:530
+#: ../../mod/profiles.php:661
msgid "Religious Views:"
msgstr "Religion/livsåskådning:"
-#: ../../mod/profiles.php:531
+#: ../../mod/profiles.php:662
msgid "Keywords:"
msgstr "Nyckelord:"
-#: ../../mod/profiles.php:534
+#: ../../mod/profiles.php:665
msgid "Example: fishing photography software"
msgstr "Exempel: fiske fotografering mjukvara"
-#: ../../mod/profiles.php:535
+#: ../../mod/profiles.php:666
msgid "Used in directory listings"
msgstr "Används i kataloglistningar"
-#: ../../mod/profiles.php:536
+#: ../../mod/profiles.php:667
msgid "Tell us about yourself..."
msgstr "Beskriv dig själv..."
-#: ../../mod/profiles.php:537
+#: ../../mod/profiles.php:668
msgid "Hobbies/Interests"
msgstr "Fritidssysselsättning/intressen"
-#: ../../mod/profiles.php:538
+#: ../../mod/profiles.php:669
msgid "Contact information and Social Networks"
msgstr "Kontaktinformation och sociala nätverk"
-#: ../../mod/profiles.php:539
+#: ../../mod/profiles.php:670
msgid "My other channels"
msgstr "Mina andra kanaler"
-#: ../../mod/profiles.php:540
+#: ../../mod/profiles.php:671
msgid "Musical interests"
msgstr "Musikintressen"
-#: ../../mod/profiles.php:541
+#: ../../mod/profiles.php:672
msgid "Books, literature"
msgstr "Böcker, litteratur"
-#: ../../mod/profiles.php:542
+#: ../../mod/profiles.php:673
msgid "Television"
msgstr "Tv"
-#: ../../mod/profiles.php:543
+#: ../../mod/profiles.php:674
msgid "Film/dance/culture/entertainment"
msgstr "Film/dans/kultur/underhållning"
-#: ../../mod/profiles.php:544
+#: ../../mod/profiles.php:675
msgid "Love/romance"
msgstr "Kärlek/romantik"
-#: ../../mod/profiles.php:545
+#: ../../mod/profiles.php:676
msgid "Work/employment"
msgstr "Arbete/sysselsättning"
-#: ../../mod/profiles.php:546
+#: ../../mod/profiles.php:677
msgid "School/education"
msgstr "Skola/utbildning"
-#: ../../mod/profiles.php:551
-msgid ""
-"This is your <strong>public</strong> profile.<br />It <strong>may</strong> "
-"be visible to anybody using the internet."
-msgstr "Det här är din <strong>offentliga</strong> profil.<br />Den <strong>kan</strong> ses av vem som helst med tillgång till Internet."
+#: ../../mod/profiles.php:683
+msgid "This is your default profile."
+msgstr "Det här är din standardprofil."
+
+#: ../../mod/profiles.php:694 ../../mod/directory.php:188
+msgid "Age: "
+msgstr "Ã…lder:"
-#: ../../mod/profiles.php:600
+#: ../../mod/profiles.php:737
msgid "Edit/Manage Profiles"
msgstr "Redigera/hantera profiler"
-#: ../../mod/profiles.php:601
+#: ../../mod/profiles.php:738
msgid "Add profile things"
msgstr "Lägg till profilsaker"
-#: ../../mod/profiles.php:602
+#: ../../mod/profiles.php:739
msgid "Include desirable objects in your profile"
msgstr "Inkludera fina prylar i din profil"
-#: ../../mod/dirsearch.php:21
-msgid "This site is not a directory server"
-msgstr "Den här servern är inte en katalogserver"
+#: ../../mod/tagrm.php:44 ../../mod/tagrm.php:94
+msgid "Tag removed"
+msgstr "Tagg borttagen"
-#: ../../mod/sources.php:32
-msgid "Failed to create source. No channel selected."
-msgstr "Misslyckades att skapa källa. Ingen kanal vald."
+#: ../../mod/tagrm.php:119
+msgid "Remove Item Tag"
+msgstr "Ta bort innehållstagg"
-#: ../../mod/sources.php:45
-msgid "Source created."
-msgstr "Källa skapad."
+#: ../../mod/tagrm.php:121
+msgid "Select a tag to remove: "
+msgstr "Välj en tagg att ta bort: "
-#: ../../mod/sources.php:57
-msgid "Source updated."
-msgstr "Källa uppdaterad."
+#: ../../mod/admin.php:52
+msgid "Theme settings updated."
+msgstr "Temainställningar uppdaterade."
-#: ../../mod/sources.php:82
-msgid "*"
-msgstr "*"
+#: ../../mod/admin.php:97 ../../mod/admin.php:411
+msgid "Site"
+msgstr "Server"
-#: ../../mod/sources.php:89
-msgid "Manage remote sources of content for your channel."
-msgstr "Hantera fjärrkällor med innehåll för din kanal."
+#: ../../mod/admin.php:98
+msgid "Accounts"
+msgstr "Konton"
-#: ../../mod/sources.php:90 ../../mod/sources.php:100
-msgid "New Source"
-msgstr "Ny källa"
+#: ../../mod/admin.php:99 ../../mod/admin.php:858
+msgid "Channels"
+msgstr "Kanaler"
-#: ../../mod/sources.php:101 ../../mod/sources.php:133
-msgid ""
-"Import all or selected content from the following channel into this channel "
-"and distribute it according to your channel settings."
-msgstr "Importera allt eller valt innehåll från följande kanal till den här kanalen och distribuera det enligt dina kanalinställningar."
+#: ../../mod/admin.php:100 ../../mod/admin.php:949 ../../mod/admin.php:991
+msgid "Plugins"
+msgstr "Tillägg"
-#: ../../mod/sources.php:102 ../../mod/sources.php:134
-msgid "Only import content with these words (one per line)"
-msgstr "Importera endast innehåll med de här orden (ett per rad)"
+#: ../../mod/admin.php:101 ../../mod/admin.php:1154 ../../mod/admin.php:1190
+msgid "Themes"
+msgstr "Teman"
-#: ../../mod/sources.php:102 ../../mod/sources.php:134
-msgid "Leave blank to import all public content"
-msgstr "Lämna blankt för att importera allt offentligt innehåll"
+#: ../../mod/admin.php:102 ../../mod/admin.php:512
+msgid "Server"
+msgstr "Server"
-#: ../../mod/sources.php:103 ../../mod/sources.php:137
-#: ../../mod/new_channel.php:110
-msgid "Channel Name"
-msgstr "Kanalnamn"
+#: ../../mod/admin.php:103
+msgid "Profile Config"
+msgstr "Profilkonfiguration"
-#: ../../mod/sources.php:123 ../../mod/sources.php:150
-msgid "Source not found."
-msgstr "Källa hittades inte."
+#: ../../mod/admin.php:104
+msgid "DB updates"
+msgstr "Databasuppdateringar"
-#: ../../mod/sources.php:130
-msgid "Edit Source"
-msgstr "Redigera källa"
+#: ../../mod/admin.php:118 ../../mod/admin.php:125 ../../mod/admin.php:1277
+msgid "Logs"
+msgstr "Loggar"
-#: ../../mod/sources.php:131
-msgid "Delete Source"
-msgstr "Ta bort källa"
+#: ../../mod/admin.php:124
+msgid "Plugin Features"
+msgstr "Tilläggsfunktioner"
-#: ../../mod/sources.php:158
-msgid "Source removed"
-msgstr "Källa borttagen"
+#: ../../mod/admin.php:126
+msgid "User registrations waiting for confirmation"
+msgstr "Användarregistreringar som behöver bekräftas"
-#: ../../mod/sources.php:160
-msgid "Unable to remove source."
-msgstr "Kunde inte ta bort källa."
+#: ../../mod/admin.php:206
+msgid "Message queues"
+msgstr "Meddelandeköer"
-#: ../../mod/blocks.php:66
-msgid "Block Name"
-msgstr "Blocknamn"
+#: ../../mod/admin.php:211 ../../mod/admin.php:410 ../../mod/admin.php:511
+#: ../../mod/admin.php:721 ../../mod/admin.php:857 ../../mod/admin.php:948
+#: ../../mod/admin.php:990 ../../mod/admin.php:1153 ../../mod/admin.php:1189
+#: ../../mod/admin.php:1276
+msgid "Administration"
+msgstr "Administration"
-#: ../../mod/magic.php:70
-msgid "Hub not found."
-msgstr "Hubb hittades inte."
+#: ../../mod/admin.php:212
+msgid "Summary"
+msgstr "Sammanfattning"
-#: ../../mod/chat.php:19 ../../mod/channel.php:25
-msgid "You must be logged in to see this page."
-msgstr "Du måste vara inloggad för att se den här sidan."
+#: ../../mod/admin.php:214
+msgid "Registered users"
+msgstr "Registrerade användare"
-#: ../../mod/chat.php:166
-msgid "Room not found"
-msgstr "Rum hittas inte"
+#: ../../mod/admin.php:216 ../../mod/admin.php:515
+msgid "Pending registrations"
+msgstr "Pågående registreringar"
-#: ../../mod/chat.php:176
-msgid "Leave Room"
-msgstr "Lämna rummet"
+#: ../../mod/admin.php:217
+msgid "Version"
+msgstr "Version"
-#: ../../mod/chat.php:177
-msgid "I am away right now"
-msgstr "Jag är borta för tillfället"
+#: ../../mod/admin.php:219 ../../mod/admin.php:516
+msgid "Active plugins"
+msgstr "Aktiva tillägg"
-#: ../../mod/chat.php:178
-msgid "I am online"
-msgstr "Jag är online"
+#: ../../mod/admin.php:326
+msgid "Site settings updated."
+msgstr "Serverinställningar uppdaterade."
-#: ../../mod/chat.php:180
-msgid "Bookmark this room"
-msgstr "Bokmärk det här rummet"
+#: ../../mod/admin.php:365
+msgid "experimental"
+msgstr "experimentellt"
-#: ../../mod/chat.php:204 ../../mod/chat.php:226
-msgid "New Chatroom"
-msgstr "Nytt chattrum"
+#: ../../mod/admin.php:367
+msgid "unsupported"
+msgstr "stöds ej"
-#: ../../mod/chat.php:205
-msgid "Chatroom Name"
-msgstr "Namn på chattrum"
+#: ../../mod/admin.php:391
+msgid "Yes - with approval"
+msgstr "Ja - med godkännande"
-#: ../../mod/chat.php:222
-#, php-format
-msgid "%1$s's Chatrooms"
-msgstr "%1$ss chattrum"
+#: ../../mod/admin.php:397
+msgid "My site is not a public server"
+msgstr "Min server är inte offentlig"
-#: ../../mod/siteinfo.php:57
-#, php-format
-msgid "Version %s"
-msgstr "Version %s"
+#: ../../mod/admin.php:398
+msgid "My site has paid access only"
+msgstr "Min server har endast åtkomst mot betalning"
-#: ../../mod/siteinfo.php:76
-msgid "Installed plugins/addons/apps:"
-msgstr "Installerade tillägg/moduler/appar:"
+#: ../../mod/admin.php:399
+msgid "My site has free access only"
+msgstr "Min server har endast gratis åtkomst"
-#: ../../mod/siteinfo.php:89
-msgid "No installed plugins/addons/apps"
-msgstr "Inga installerade tillägg/moduler/appar"
+#: ../../mod/admin.php:400
+msgid "My site offers free accounts with optional paid upgrades"
+msgstr "Min server erbjuder gratis konton med uppgradering mot betalning"
-#: ../../mod/siteinfo.php:97
-msgid "Red"
-msgstr "Red"
+#: ../../mod/admin.php:414
+msgid "File upload"
+msgstr "Filuppladdning"
-#: ../../mod/siteinfo.php:98
-msgid ""
-"This is a hub of the Red Matrix - a global cooperative network of "
-"decentralised privacy enhanced websites."
-msgstr "Det här är en hubb som hör till Red Matrix - ett globalt samverkande nätverk av decentraliserade integritetsstärkta webbplatser."
+#: ../../mod/admin.php:415
+msgid "Policies"
+msgstr "Policyer"
-#: ../../mod/siteinfo.php:101
-msgid "Running at web location"
-msgstr "Kör på webbutrymmet"
+#: ../../mod/admin.php:420
+msgid "Site name"
+msgstr "Servernamn"
-#: ../../mod/siteinfo.php:102
-msgid ""
-"Please visit <a href=\"http://getzot.com\">GetZot.com</a> to learn more "
-"about the Red Matrix."
-msgstr "Besök <a href=\"http://getzot.com\">GetZot.com</a> lära dig mer om Red Matrix."
+#: ../../mod/admin.php:421
+msgid "Banner/Logo"
+msgstr "Banner/logga"
-#: ../../mod/siteinfo.php:103
-msgid "Bug reports and issues: please visit"
-msgstr "Buggrapporter och problem: besök"
+#: ../../mod/admin.php:422
+msgid "Administrator Information"
+msgstr "Administratörsinformation"
-#: ../../mod/siteinfo.php:106
+#: ../../mod/admin.php:422
msgid ""
-"Suggestions, praise, etc. - please email \"redmatrix\" at librelist - dot "
-"com"
-msgstr "Förslag, uppskattning, etc. - maila \"redmatrix\" at librelist - dot com"
+"Contact information for site administrators. Displayed on siteinfo page. "
+"BBCode can be used here"
+msgstr "Kontaktinfo till sidadministratörer. Visas på sidinfosidan. BBCode kan användas här"
-#: ../../mod/siteinfo.php:108
-msgid "Site Administrators"
-msgstr "Serveradministratörer"
+#: ../../mod/admin.php:423
+msgid "System language"
+msgstr "Systemspråk"
-#: ../../mod/new_channel.php:107
-msgid "Add a Channel"
-msgstr "Lägg till en kanal"
+#: ../../mod/admin.php:424
+msgid "System theme"
+msgstr "Systemtema"
-#: ../../mod/new_channel.php:108
+#: ../../mod/admin.php:424
msgid ""
-"A channel is your own collection of related web pages. A channel can be used"
-" to hold social network profiles, blogs, conversation groups and forums, "
-"celebrity pages, and much more. You may create as many channels as your "
-"service provider allows."
-msgstr "En kanal är din egen samling av relaterade webbsidor. En kanal kan användas för att innehålla sociala nätverksprofiler, bloggar, konversationsgrupper och forum, fansidor, och mycket mer. Du kan skapa så många kanaler som din tjänsteleverantör tillåter."
-
-#: ../../mod/new_channel.php:111
-msgid "Examples: \"Bob Jameson\", \"Lisa and her Horses\", \"Soccer\", \"Aviation Group\" "
-msgstr "Exempel: \"Bob Jameson\", \"Lisa och hennes hästar\", \"Fotboll\", \"Flyggruppen\" "
+"Default system theme - may be over-ridden by user profiles - <a href='#' "
+"id='cnftheme'>change theme settings</a>"
+msgstr "Förvalt systemtema - kan åsidosättas i användarprofiler - <a href='#' id='cnftheme'>ändra temainställningar</a>"
-#: ../../mod/new_channel.php:112
-msgid "Choose a short nickname"
-msgstr "Välj ett kort smeknamn"
+#: ../../mod/admin.php:425
+msgid "Mobile system theme"
+msgstr "Mobilt systemtema"
-#: ../../mod/new_channel.php:113
-msgid ""
-"Your nickname will be used to create an easily remembered channel address "
-"(like an email address) which you can share with others."
-msgstr "Ditt smeknamn används för att skapa en kanaladress som är lätt att komma ihåg (som en e-postadress) som du kan dela med andra."
+#: ../../mod/admin.php:425
+msgid "Theme for mobile devices"
+msgstr "Tema för mobila enheter"
-#: ../../mod/new_channel.php:114
-msgid "Or <a href=\"import\">import an existing channel</a> from another location"
-msgstr "Eller <a href=\"import\">importera en befintlig kanal</a> från en annan plats"
+#: ../../mod/admin.php:427
+msgid "Enable Diaspora Protocol"
+msgstr "Aktivera protokoll för Diaspora"
-#: ../../mod/lostpass.php:15
-msgid "No valid account found."
-msgstr "Inget giltigt konto hittades."
+#: ../../mod/admin.php:427
+msgid "Communicate with Diaspora and Friendica - experimental"
+msgstr "Kommunicera med Diaspora och Friendica - experimentellt"
-#: ../../mod/lostpass.php:29
-msgid "Password reset request issued. Check your email."
-msgstr "Lösenordsåterställning har skickats. Kontrollera din e-post."
+#: ../../mod/admin.php:428
+msgid "Allow Feeds as Connections"
+msgstr "Tillåt flöden som kontakter"
-#: ../../mod/lostpass.php:35 ../../mod/lostpass.php:102
-#, php-format
-msgid "Site Member (%s)"
-msgstr "Servermedlem (%s)"
+#: ../../mod/admin.php:428
+msgid "(Heavy system resource usage)"
+msgstr "(systemresurskrävande)"
-#: ../../mod/lostpass.php:40
-#, php-format
-msgid "Password reset requested at %s"
-msgstr "Lösenordsåterställning begärd på %s"
+#: ../../mod/admin.php:429
+msgid "Maximum image size"
+msgstr "Maximal bildstorlek"
-#: ../../mod/lostpass.php:63
+#: ../../mod/admin.php:429
msgid ""
-"Request could not be verified. (You may have previously submitted it.) "
-"Password reset failed."
-msgstr "Begäran kunde inte bekräftas. (Du kan ha skickat den tidigare.) Lösenordsåterställningen misslyckades."
+"Maximum size in bytes of uploaded images. Default is 0, which means no "
+"limits."
+msgstr "Maximal storlek i byte för uppladdade bilder. Standard är 0, vilket innebär ingen storleksbegränsning."
-#: ../../mod/lostpass.php:85 ../../boot.php:1454
-msgid "Password Reset"
-msgstr "Lösenordsåterställning"
+#: ../../mod/admin.php:430
+msgid "Does this site allow new member registration?"
+msgstr "Tillåter den här servern nya medlemmar att registrera sig?"
-#: ../../mod/lostpass.php:86
-msgid "Your password has been reset as requested."
-msgstr "Ditt lösenord har återställts som begärt."
+#: ../../mod/admin.php:431
+msgid "Which best describes the types of account offered by this hub?"
+msgstr "Vilket beskriver bäst kontotypen som erbjuds på den här hubben?"
-#: ../../mod/lostpass.php:87
-msgid "Your new password is"
-msgstr "Ditt nya lösenord är"
+#: ../../mod/admin.php:432
+msgid "Register text"
+msgstr "Registreringstext"
-#: ../../mod/lostpass.php:88
-msgid "Save or copy your new password - and then"
-msgstr "Spara eller kopiera ditt nya lösenord - "
+#: ../../mod/admin.php:432
+msgid "Will be displayed prominently on the registration page."
+msgstr "Visas tydligt på registreringssidan."
-#: ../../mod/lostpass.php:89
-msgid "click here to login"
-msgstr "klicka sedan här för att logga in"
+#: ../../mod/admin.php:433
+msgid "Accounts abandoned after x days"
+msgstr "Konto övergivet efter x dagar"
-#: ../../mod/lostpass.php:90
+#: ../../mod/admin.php:433
msgid ""
-"Your password may be changed from the <em>Settings</em> page after "
-"successful login."
-msgstr "Ditt lösenord kan bytas från sidan <em>Inställningar</em> när du är inloggad."
-
-#: ../../mod/lostpass.php:107
-#, php-format
-msgid "Your password has changed at %s"
-msgstr "Ditt lösenord byttes på %s"
+"Will not waste system resources polling external sites for abandonded "
+"accounts. Enter 0 for no time limit."
+msgstr "Slösar inte systemresurser genom att fråga externa servrar efter övergivna konton. 0 innebär ingen tidsbegränsning."
-#: ../../mod/lostpass.php:122
-msgid "Forgot your Password?"
-msgstr "Glömt lösenordet?"
+#: ../../mod/admin.php:434
+msgid "Allowed friend domains"
+msgstr "Tillåtna vändomäner"
-#: ../../mod/lostpass.php:123
+#: ../../mod/admin.php:434
msgid ""
-"Enter your email address and submit to have your password reset. Then check "
-"your email for further instructions."
-msgstr "Ange din e-postadress och skicka för att återställa ditt lösenord. Kontrollera sedan din e-post för vidare instruktioner."
-
-#: ../../mod/lostpass.php:124
-msgid "Email Address"
-msgstr "E-postadress"
-
-#: ../../mod/lostpass.php:125
-msgid "Reset"
-msgstr "Återställ"
-
-#: ../../mod/editblock.php:77
-msgid "Edit Block"
-msgstr "Redigera block"
-
-#: ../../mod/editblock.php:87
-msgid "Delete block?"
-msgstr "Ta bort block?"
-
-#: ../../mod/editblock.php:153
-msgid "Delete Block"
-msgstr "Ta bort block"
-
-#: ../../mod/rbmark.php:88
-msgid "Select a bookmark folder"
-msgstr "Välj en bokmärkeskatalog"
-
-#: ../../mod/rbmark.php:93
-msgid "Save Bookmark"
-msgstr "Spara bokmärke"
-
-#: ../../mod/rbmark.php:94
-msgid "URL of bookmark"
-msgstr "Bokmärkets URL"
+"Comma separated list of domains which are allowed to establish friendships "
+"with this site. Wildcards are accepted. Empty to allow any domains"
+msgstr "Kommaseparerad lista med domäner som tillåts att upprätta ett vänförhållande med den här servern. Jokertecken är tillåtna. Töm för att tillåta alla domäner."
-#: ../../mod/rbmark.php:95
-msgid "Description"
-msgstr "Beskrivning"
+#: ../../mod/admin.php:435
+msgid "Allowed email domains"
+msgstr "Tillåtna e-postdomäner"
-#: ../../mod/rbmark.php:99
-msgid "Or enter new bookmark folder name"
-msgstr "Eller ange nytt namn på bokmärkeskatalog"
+#: ../../mod/admin.php:435
+msgid ""
+"Comma separated list of domains which are allowed in email addresses for "
+"registrations to this site. Wildcards are accepted. Empty to allow any "
+"domains"
+msgstr "Kommaseparerad lista med domäner som tillåts i e-postadresser för registreringar på den här servern. Jokertecken är tillåtna. Töm för att tillåta alla domäner."
-#: ../../mod/import.php:36
-msgid "Nothing to import."
-msgstr "Inget att importera."
+#: ../../mod/admin.php:436
+msgid "Block public"
+msgstr "Blockera offentlig åtkomst"
-#: ../../mod/import.php:58
-msgid "Unable to download data from old server"
-msgstr "Kunde inte ladda ner data från den gamla servern"
+#: ../../mod/admin.php:436
+msgid ""
+"Check to block public access to all otherwise public personal pages on this "
+"site unless you are currently logged in."
+msgstr "Välj för att blockera åtkomst till alla personliga sidor som annars skulle vara offentliga på den här servern om man inte är inloggad."
-#: ../../mod/import.php:64
-msgid "Imported file is empty."
-msgstr "Den importerade filen är tom."
+#: ../../mod/admin.php:437
+msgid "Verify Email Addresses"
+msgstr "Bekräfta e-postadress"
-#: ../../mod/import.php:88
+#: ../../mod/admin.php:437
msgid ""
-"Cannot create a duplicate channel identifier on this system. Import failed."
-msgstr "Kan inte skapa ett dubblerat kanal-ID på det här systemet. Import misslyckades."
+"Check to verify email addresses used in account registration (recommended)."
+msgstr "Välj för att bekräfta e-postadresser som används för kontoregistrering (rekommenderas)."
-#: ../../mod/import.php:106
-msgid "Channel clone failed. Import failed."
-msgstr "Kloning av kanalen misslyckades. Import misslyckades."
+#: ../../mod/admin.php:438
+msgid "Force publish"
+msgstr "Tvinga publicering"
-#: ../../mod/import.php:116
-msgid "Cloned channel not found. Import failed."
-msgstr "Den klonade kanalen hittas inte. Import misslyckades."
+#: ../../mod/admin.php:438
+msgid ""
+"Check to force all profiles on this site to be listed in the site directory."
+msgstr "Välj för att tvinga alla profiler på den här servern att listas i serverkatalogen."
-#: ../../mod/import.php:358
-msgid "Import completed."
-msgstr "Import slutförd."
+#: ../../mod/admin.php:439
+msgid "Disable discovery tab"
+msgstr "Inaktivera upptäck-fliken"
-#: ../../mod/import.php:371
-msgid "You must be logged in to use this feature."
-msgstr "Du måste vara inloggad för att kunna använda den här funktionen."
+#: ../../mod/admin.php:439
+msgid ""
+"Remove the tab in the network view with public content pulled from sources "
+"chosen for this site."
+msgstr "Ta bort fliken i nätverksvyn med offentligt innehåll som hämtas från källor valda för den här servern."
-#: ../../mod/import.php:376
-msgid "Import Channel"
-msgstr "Importera kanal"
+#: ../../mod/admin.php:440
+msgid "No login on Homepage"
+msgstr "Ingen inloggning på hemsidan"
-#: ../../mod/import.php:377
+#: ../../mod/admin.php:440
msgid ""
-"Use this form to import an existing channel from a different server/hub. You"
-" may retrieve the channel identity from the old server/hub via the network "
-"or provide an export file. Only identity and connections/relationships will "
-"be imported. Importation of content is not yet available."
-msgstr "Använd det här formuläret för att importera en befintlig kanal från en annan server/hubb. Du kan få kanal-ID:t från den gamla servern/hubben över nätverket eller tillhandahålla en exportfil. Endast identitet och kontakter/relationer kommer att importeras. Import av innehåll stöds ännu inte."
+"Check to hide the login form from your sites homepage when visitors arrive "
+"who are not logged in (e.g. when you put the content of the homepage in via "
+"the site channel)."
+msgstr "Välj för att gömma inloggningsformuläret från serverns hemsida för oinloggade besökare (t.ex. när du lägger in hemsideinnehållet via serverkanalen)."
-#: ../../mod/import.php:378
-msgid "File to Upload"
-msgstr "Fil att ladda upp"
+#: ../../mod/admin.php:442
+msgid "Proxy user"
+msgstr "Proxyanvändare"
-#: ../../mod/import.php:379
-msgid "Or provide the old server/hub details"
-msgstr "Eller ge uppgifter om den gamla servern/hubben"
+#: ../../mod/admin.php:443
+msgid "Proxy URL"
+msgstr "Proxy-URL"
-#: ../../mod/import.php:380
-msgid "Your old identity address (xyz@example.com)"
-msgstr "Din gamla identitetsadress (xyz@example.com)"
+#: ../../mod/admin.php:444
+msgid "Network timeout"
+msgstr "Nätverkstimeout"
-#: ../../mod/import.php:381
-msgid "Your old login email address"
-msgstr "Din gamla e-postadress för inloggning"
+#: ../../mod/admin.php:444
+msgid "Value is in seconds. Set to 0 for unlimited (not recommended)."
+msgstr "Värde i sekunder. Sätt till 0 för obegränsat (ej rekommenderat)."
-#: ../../mod/import.php:382
-msgid "Your old login password"
-msgstr "Ditt gamla inloggningslösenord"
+#: ../../mod/admin.php:445
+msgid "Delivery interval"
+msgstr "Leveransintervall"
-#: ../../mod/import.php:383
+#: ../../mod/admin.php:445
msgid ""
-"For either option, please choose whether to make this hub your new primary "
-"address, or whether your old location should continue this role. You will be"
-" able to post from either location, but only one can be marked as the "
-"primary location for files, photos, and media."
-msgstr "Ange i bägge fallen om den här hubben ska vara din nya primära adress eller om den gamla platsen ska fortsätta att ha den rollen. Du kommer att kunna posta från båda platser, men bara en kan vara primärt utrymme för filer, foton och media."
-
-#: ../../mod/import.php:384
-msgid "Make this hub my primary location"
-msgstr "Gör den här hubben till min primära plats"
-
-#: ../../mod/manage.php:64
-#, php-format
-msgid "You have created %1$.0f of %2$.0f allowed channels."
-msgstr "Du har skapat %1$.0f av %2$.0f tillåtna kanaler."
-
-#: ../../mod/manage.php:72
-msgid "Create a new channel"
-msgstr "Skapa en ny kanal"
-
-#: ../../mod/manage.php:77
-msgid "Channel Manager"
-msgstr "Kanalhanterare"
+"Delay background delivery processes by this many seconds to reduce system "
+"load. Recommend: 4-5 for shared hosts, 2-3 for virtual private servers. 0-1 "
+"for large dedicated servers."
+msgstr "Fördröj leveransprocesser som görs i bakgrunden så här många sekunder för att reducera systembelastningen. Rekommenderat: 4-5 för delade värdar, 2-3 för virtuella privata servrar. 0-1 för stora dedikerade servrar."
-#: ../../mod/manage.php:78
-msgid "Current Channel"
-msgstr "Nuvarande kanal"
+#: ../../mod/admin.php:446
+msgid "Poll interval"
+msgstr "Hämtningsintervall"
-#: ../../mod/manage.php:80
-msgid "Attach to one of your channels by selecting it."
-msgstr "Anslut till en av dina kanaler genom att välja den."
+#: ../../mod/admin.php:446
+msgid ""
+"Delay background polling processes by this many seconds to reduce system "
+"load. If 0, use delivery interval."
+msgstr "Fördröj hämtningsprocesser som görs i bakgrunden så här många sekunder för att reducera systembelastningen. Om 0 används leveransintervallet."
-#: ../../mod/manage.php:81
-msgid "Default Channel"
-msgstr "Standardkanal"
+#: ../../mod/admin.php:447
+msgid "Maximum Load Average"
+msgstr "Maximal genomsnittsbelastning"
-#: ../../mod/manage.php:82
-msgid "Make Default"
-msgstr "Gör till standard"
+#: ../../mod/admin.php:447
+msgid ""
+"Maximum system load before delivery and poll processes are deferred - "
+"default 50."
+msgstr "Maximal systembelastning innan leverans- och hämtningsprocesser skjuts upp - standard är 50."
-#: ../../mod/vote.php:97
-msgid "Total votes"
-msgstr "Totala röster"
+#: ../../mod/admin.php:503
+msgid "No server found"
+msgstr "Ingen server hittad"
-#: ../../mod/vote.php:98
-msgid "Average Rating"
-msgstr "Genomsnittsbetyg"
+#: ../../mod/admin.php:510 ../../mod/admin.php:735
+msgid "ID"
+msgstr "ID"
-#: ../../mod/match.php:16
-msgid "Profile Match"
-msgstr "Profilträff"
+#: ../../mod/admin.php:510
+msgid "for channel"
+msgstr "för kanal"
-#: ../../mod/match.php:24
-msgid "No keywords to match. Please add keywords to your default profile."
-msgstr "Inga nyckelord att matcha mot. Lägg till några nyckelord i din standardprofil."
+#: ../../mod/admin.php:510
+msgid "on server"
+msgstr "på server"
-#: ../../mod/match.php:61
-msgid "is interested in:"
-msgstr "är intresserad av:"
+#: ../../mod/admin.php:510
+msgid "Status"
+msgstr "Status"
-#: ../../mod/match.php:69
-msgid "No matches"
-msgstr "Inga träffar"
+#: ../../mod/admin.php:531
+msgid "Update has been marked successful"
+msgstr "Uppdatering har markerats som genomförd"
-#: ../../mod/chatsvc.php:102
-msgid "Away"
-msgstr "Borta"
+#: ../../mod/admin.php:541
+#, php-format
+msgid "Executing %s failed. Check system logs."
+msgstr "Körning av %s misslyckades. Kontrollera systemloggarna."
-#: ../../mod/chatsvc.php:106
-msgid "Online"
-msgstr "Online"
+#: ../../mod/admin.php:544
+#, php-format
+msgid "Update %s was successfully applied."
+msgstr "Uppdatering %s genomfördes utan problem."
-#: ../../mod/openid.php:26
-msgid "OpenID protocol error. No ID returned."
-msgstr "Protokollfel för OpenID. Inget ID returnerades."
+#: ../../mod/admin.php:548
+#, php-format
+msgid "Update %s did not return a status. Unknown if it succeeded."
+msgstr "Uppdatering %s returnerade ingen status. Oklart om den lyckades."
-#: ../../mod/openid.php:72 ../../mod/openid.php:178 ../../mod/post.php:257
+#: ../../mod/admin.php:551
#, php-format
-msgid "Welcome %s. Remote authentication successful."
-msgstr "Välkommen %s. Fjärrautentisering lyckades."
+msgid "Update function %s could not be found."
+msgstr "Uppdateringsfunktion %s kunde inte hittas."
-#: ../../mod/editlayout.php:72
-msgid "Edit Layout"
-msgstr "Redigera layout"
+#: ../../mod/admin.php:566
+msgid "No failed updates."
+msgstr "Inga misslyckade uppdateringar."
-#: ../../mod/editlayout.php:82
-msgid "Delete layout?"
-msgstr "Ta bort layout?"
+#: ../../mod/admin.php:570
+msgid "Failed Updates"
+msgstr "Misslyckade uppdateringar"
-#: ../../mod/editlayout.php:146
-msgid "Delete Layout"
-msgstr "Ta bort layout"
+#: ../../mod/admin.php:572
+msgid "Mark success (if update was manually applied)"
+msgstr "Markera som genomförd (om uppdateringen gjordes manuellt)"
-#: ../../mod/post.php:226
-msgid ""
-"Remote authentication blocked. You are logged into this site locally. Please"
-" logout and retry."
-msgstr "Fjärrautentisering blockerades. Du är inloggad på den här servern lokalt. Logga ut och försök igen."
+#: ../../mod/admin.php:573
+msgid "Attempt to execute this update step automatically"
+msgstr "Försök att köra den här uppdateringen automatiskt"
-#: ../../mod/probe.php:23 ../../mod/probe.php:29
+#: ../../mod/admin.php:599
#, php-format
-msgid "Fetching URL returns error: %1$s"
-msgstr "Hämtning av URL returnerade fel: %1$s"
+msgid "%s user blocked/unblocked"
+msgid_plural "%s users blocked/unblocked"
+msgstr[0] "%s användare blockerad/avblockerad"
+msgstr[1] "%s användare blockerade/avblockerade"
-#: ../../mod/profile_photo.php:44
-msgid "Image uploaded but image cropping failed."
-msgstr "Bilden laddades upp men beskärning misslyckades."
+#: ../../mod/admin.php:606
+#, php-format
+msgid "%s user deleted"
+msgid_plural "%s users deleted"
+msgstr[0] "%s användare borttagen"
+msgstr[1] "%s användare borttagna"
-#: ../../mod/profile_photo.php:97
-msgid "Image resize failed."
-msgstr "Ändring av bildstorlek misslyckades."
+#: ../../mod/admin.php:635
+msgid "Account not found"
+msgstr "Konto hittas inte"
-#: ../../mod/profile_photo.php:141
-msgid ""
-"Shift-reload the page or clear browser cache if the new photo does not "
-"display immediately."
-msgstr "Shift-uppdatera sidan eller rensa webbläsarcachen om det nya fotot inte visas direkt."
+#: ../../mod/admin.php:655
+#, php-format
+msgid "User '%s' unblocked"
+msgstr "Användare '%s' avblockerad"
-#: ../../mod/profile_photo.php:163
+#: ../../mod/admin.php:655
#, php-format
-msgid "Image exceeds size limit of %d"
-msgstr "Bilden överskrider storleksbegränsningen %d"
+msgid "User '%s' blocked"
+msgstr "Användare '%s' blockerad"
-#: ../../mod/profile_photo.php:172
-msgid "Unable to process image."
-msgstr "Kunde inte behandla bilden."
+#: ../../mod/admin.php:722 ../../mod/admin.php:734
+msgid "Users"
+msgstr "Användare"
-#: ../../mod/profile_photo.php:214 ../../mod/profile_photo.php:262
-msgid "Photo not available."
-msgstr "Fotot är inte tillgängligt."
+#: ../../mod/admin.php:724 ../../mod/admin.php:860
+msgid "select all"
+msgstr "välj alla"
-#: ../../mod/profile_photo.php:281
-msgid "Upload File:"
-msgstr "Ladda upp fil:"
+#: ../../mod/admin.php:725
+msgid "User registrations waiting for confirm"
+msgstr "Användarregistreringar som inväntar bekräftelse"
-#: ../../mod/profile_photo.php:282
-msgid "Select a profile:"
-msgstr "Välj en profil:"
+#: ../../mod/admin.php:726
+msgid "Request date"
+msgstr "Ansökningsdatum"
-#: ../../mod/profile_photo.php:283
-msgid "Upload Profile Photo"
-msgstr "Ladda upp profilfoto"
+#: ../../mod/admin.php:727
+msgid "No registrations."
+msgstr "Inga registreringar."
-#: ../../mod/profile_photo.php:284
-msgid "Upload"
-msgstr "Ladda upp"
+#: ../../mod/admin.php:728
+msgid "Approve"
+msgstr "Godkänn"
-#: ../../mod/profile_photo.php:288
-msgid "skip this step"
-msgstr "hoppa över det här steget"
+#: ../../mod/admin.php:729
+msgid "Deny"
+msgstr "Avslå"
-#: ../../mod/profile_photo.php:288
-msgid "select a photo from your photo albums"
-msgstr "välj ett foto från dina fotoalbum"
+#: ../../mod/admin.php:735
+msgid "Register date"
+msgstr "Registreringsdatum"
-#: ../../mod/profile_photo.php:302
-msgid "Crop Image"
-msgstr "Beskär bild"
+#: ../../mod/admin.php:735
+msgid "Last login"
+msgstr "Senaste inloggning"
-#: ../../mod/profile_photo.php:303
-msgid "Please adjust the image cropping for optimum viewing."
-msgstr "Justera bildens beskärning för bästa utseende."
+#: ../../mod/admin.php:735
+msgid "Expires"
+msgstr "Upphör att gälla"
-#: ../../mod/profile_photo.php:305
-msgid "Done Editing"
-msgstr "Klar med redigering"
+#: ../../mod/admin.php:735
+msgid "Service Class"
+msgstr "Tjänsteklass"
-#: ../../mod/profile_photo.php:340
-msgid "Image uploaded successfully."
-msgstr "Bilduppladdning lyckades."
+#: ../../mod/admin.php:737
+msgid ""
+"Selected users will be deleted!\\n\\nEverything these users had posted on "
+"this site will be permanently deleted!\\n\\nAre you sure?"
+msgstr "Valda användare kommer att tas bort!\\n\\nAllt dessa användare har postat på den här servern kommer att raderas permanent!\\n\\nÄr du säker?"
-#: ../../mod/profile_photo.php:342
-msgid "Image upload failed."
-msgstr "Bilduppladdning misslyckades."
+#: ../../mod/admin.php:738
+msgid ""
+"The user {0} will be deleted!\\n\\nEverything this user has posted on this "
+"site will be permanently deleted!\\n\\nAre you sure?"
+msgstr "Användaren {0} kommer att tas bort!\\n\\nAllt den här användaren har postat på den här servern kommer att raderas permanent!\\n\\nÄr du säker?"
-#: ../../mod/profile_photo.php:351
+#: ../../mod/admin.php:771
#, php-format
-msgid "Image size reduction [%s] failed."
-msgstr "Krympning av bilden [%s] misslyckades."
-
-#: ../../mod/connections.php:191 ../../mod/connections.php:290
-msgid "Blocked"
-msgstr "Blockerade"
-
-#: ../../mod/connections.php:196 ../../mod/connections.php:297
-msgid "Ignored"
-msgstr "Ignorerade"
-
-#: ../../mod/connections.php:201 ../../mod/connections.php:311
-msgid "Hidden"
-msgstr "Dolda"
-
-#: ../../mod/connections.php:206 ../../mod/connections.php:304
-msgid "Archived"
-msgstr "Arkiverade"
+msgid "%s channel censored/uncensored"
+msgid_plural "%s channels censored/uncensored"
+msgstr[0] "%s kanal censurerad/avcensurerad"
+msgstr[1] "%s kanaler censurerade/avcensurerade"
-#: ../../mod/connections.php:229 ../../mod/connections.php:243
-msgid "All"
-msgstr "Alla"
+#: ../../mod/admin.php:778
+#, php-format
+msgid "%s channel deleted"
+msgid_plural "%s channels deleted"
+msgstr[0] "%s kanal borttagen"
+msgstr[1] "%s kanaler borttagna"
-#: ../../mod/connections.php:238 ../../mod/connections.php:318
-msgid "Unconnected"
-msgstr "Ej anslutna"
+#: ../../mod/admin.php:797
+msgid "Channel not found"
+msgstr "Kanal hittas inte"
-#: ../../mod/connections.php:268
-msgid "Suggest new connections"
-msgstr "Föreslå nya kontakter"
+#: ../../mod/admin.php:808
+#, php-format
+msgid "Channel '%s' deleted"
+msgstr "Kanalen '%s' togs bort"
-#: ../../mod/connections.php:271
-msgid "New Connections"
-msgstr "Nya kontakter"
+#: ../../mod/admin.php:819
+#, php-format
+msgid "Channel '%s' uncensored"
+msgstr "Kanal '%s' avcensurerad"
-#: ../../mod/connections.php:274
-msgid "Show pending (new) connections"
-msgstr "Visa väntande (nya) kontakter"
+#: ../../mod/admin.php:819
+#, php-format
+msgid "Channel '%s' censored"
+msgstr "Kanal '%s' censurerad"
-#: ../../mod/connections.php:280
-msgid "Show all connections"
-msgstr "Visa alla kontakter"
+#: ../../mod/admin.php:862
+msgid "Censor"
+msgstr "Censurera"
-#: ../../mod/connections.php:283
-msgid "Unblocked"
-msgstr "Ej blockerade"
+#: ../../mod/admin.php:863
+msgid "Uncensor"
+msgstr "Avcensurera"
-#: ../../mod/connections.php:286
-msgid "Only show unblocked connections"
-msgstr "Visa endast ej blockerade kontakter"
+#: ../../mod/admin.php:866
+msgid "UID"
+msgstr "UID"
-#: ../../mod/connections.php:293
-msgid "Only show blocked connections"
-msgstr "Visa endast blockerade kontakter"
+#: ../../mod/admin.php:868
+msgid ""
+"Selected channels will be deleted!\\n\\nEverything that was posted in these "
+"channels on this site will be permanently deleted!\\n\\nAre you sure?"
+msgstr "Valda kanaler kommer att tas bort!\\n\\nAllt som har postats i de kanalerna på den här servern kommer att raderas permanent!\\n\\nÄr du säker?"
-#: ../../mod/connections.php:300
-msgid "Only show ignored connections"
-msgstr "Visa endast ignorerade kontakter"
+#: ../../mod/admin.php:869
+msgid ""
+"The channel {0} will be deleted!\\n\\nEverything that was posted in this "
+"channel on this site will be permanently deleted!\\n\\nAre you sure?"
+msgstr "Kanalen {0} kommer att tas bort!\\n\\nAllt som har postats i den här kanalen på den här servern kommer att raderas permanent!\\n\\nÄr du säker?"
-#: ../../mod/connections.php:307
-msgid "Only show archived connections"
-msgstr "Visa endast arkiverade kontakter"
+#: ../../mod/admin.php:908
+#, php-format
+msgid "Plugin %s disabled."
+msgstr "Tillägg %s inaktiverat."
-#: ../../mod/connections.php:314
-msgid "Only show hidden connections"
-msgstr "Visa endast dolda kontakter"
+#: ../../mod/admin.php:912
+#, php-format
+msgid "Plugin %s enabled."
+msgstr "Tillägg %s aktiverat."
-#: ../../mod/connections.php:321
-msgid "Only show one-way connections"
-msgstr "Visa endast enkelriktade kontakter"
+#: ../../mod/admin.php:922 ../../mod/admin.php:1124
+msgid "Disable"
+msgstr "Inaktivera"
-#: ../../mod/connections.php:366
-#, php-format
-msgid "%1$s [%2$s]"
-msgstr "%1$s [%2$s]"
+#: ../../mod/admin.php:924 ../../mod/admin.php:1126
+msgid "Enable"
+msgstr "Aktivera"
-#: ../../mod/connections.php:367
-msgid "Edit contact"
-msgstr "Redigera kontakt"
+#: ../../mod/admin.php:950 ../../mod/admin.php:1155
+msgid "Toggle"
+msgstr "Växla"
-#: ../../mod/connections.php:388
-msgid "Search your connections"
-msgstr "Sök bland dina kontakter"
+#: ../../mod/admin.php:958 ../../mod/admin.php:1165
+msgid "Author: "
+msgstr "Författare:"
-#: ../../mod/connections.php:389
-msgid "Finding: "
-msgstr "Sökning efter: "
+#: ../../mod/admin.php:959 ../../mod/admin.php:1166
+msgid "Maintainer: "
+msgstr "Underhållare:"
-#: ../../mod/notifications.php:26
-msgid "Invalid request identifier."
-msgstr "Ogiltigt ID på förfrågan."
+#: ../../mod/admin.php:1088
+msgid "No themes found."
+msgstr "Inga teman funna."
-#: ../../mod/notifications.php:35
-msgid "Discard"
-msgstr "Förkasta"
+#: ../../mod/admin.php:1147
+msgid "Screenshot"
+msgstr "Skärmdump"
-#: ../../mod/notifications.php:93 ../../mod/notify.php:54
-msgid "No more system notifications."
-msgstr "Inga fler systemnotifieringar."
+#: ../../mod/admin.php:1195
+msgid "[Experimental]"
+msgstr "[Experimentellt]"
-#: ../../mod/notifications.php:97 ../../mod/notify.php:58
-msgid "System Notifications"
-msgstr "Systemnotifieringar"
+#: ../../mod/admin.php:1196
+msgid "[Unsupported]"
+msgstr "[Utan support]"
-#: ../../mod/oexchange.php:23
-msgid "Unable to find your hub."
-msgstr "Kunde inte hitta din hubb."
+#: ../../mod/admin.php:1223
+msgid "Log settings updated."
+msgstr "Logginställningar uppdaterade."
-#: ../../mod/oexchange.php:37
-msgid "Post successful."
-msgstr "Sändning lyckades."
+#: ../../mod/admin.php:1279
+msgid "Clear"
+msgstr "Rensa"
-#: ../../mod/editwebpage.php:106
-msgid "Edit Webpage"
-msgstr "Redigera webbsida"
+#: ../../mod/admin.php:1285
+msgid "Debugging"
+msgstr "Avlusning"
-#: ../../mod/editwebpage.php:116
-msgid "Delete webpage?"
-msgstr "Ta bort webbsida?"
+#: ../../mod/admin.php:1286
+msgid "Log file"
+msgstr "Loggfil"
-#: ../../mod/editwebpage.php:187
-msgid "Delete Webpage"
-msgstr "Ta bort webbsida"
+#: ../../mod/admin.php:1286
+msgid ""
+"Must be writable by web server. Relative to your Red top-level directory."
+msgstr "Måste vara skrivbar för webbservern. Anges relativt Reds toppkatalog."
-#: ../../mod/follow.php:25
-msgid "Channel added."
-msgstr "Kanal tillagd."
+#: ../../mod/admin.php:1287
+msgid "Log level"
+msgstr "Loggnivå"
-#: ../../mod/poke.php:159
-msgid "Poke/Prod"
-msgstr "Puffa/stöt till"
+#: ../../mod/admin.php:1334
+msgid "New Profile Field"
+msgstr "Nytt profilfält"
-#: ../../mod/poke.php:160
-msgid "poke, prod or do other things to somebody"
-msgstr "puffa, stöt till eller gör andra saker mot någon"
+#: ../../mod/admin.php:1335 ../../mod/admin.php:1356
+msgid "Field nickname"
+msgstr "Smeknamn på fält"
-#: ../../mod/poke.php:161
-msgid "Recipient"
-msgstr "Mottagare"
+#: ../../mod/admin.php:1335 ../../mod/admin.php:1356
+msgid "System name of field"
+msgstr "Systemnamn på fält"
-#: ../../mod/poke.php:162
-msgid "Choose what you wish to do to recipient"
-msgstr "Välj vad du önskar göra med mottagaren"
+#: ../../mod/admin.php:1336 ../../mod/admin.php:1357
+msgid "Input type"
+msgstr "Datatyp"
-#: ../../mod/poke.php:165
-msgid "Make this post private"
-msgstr "Gör det här inlägget privat"
+#: ../../mod/admin.php:1337 ../../mod/admin.php:1358
+msgid "Field Name"
+msgstr "Fältnamn"
-#: ../../mod/wall_upload.php:34
-msgid "Wall Photos"
-msgstr "Väggfoton"
+#: ../../mod/admin.php:1337 ../../mod/admin.php:1358
+msgid "Label on profile pages"
+msgstr "Beteckning på profilsidor"
-#: ../../mod/channel.php:86
-msgid "Insufficient permissions. Request redirected to profile page."
-msgstr "Otillräckliga behörigheter. Förfrågan omdirigerad till profilsidan."
+#: ../../mod/admin.php:1338 ../../mod/admin.php:1359
+msgid "Help text"
+msgstr "Hjälptext"
-#: ../../mod/fsuggest.php:20 ../../mod/fsuggest.php:92
-msgid "Contact not found."
-msgstr "Kontakten hittades inte."
+#: ../../mod/admin.php:1338 ../../mod/admin.php:1359
+msgid "Additional info (optional)"
+msgstr "Ytterligare info (frivilligt)"
-#: ../../mod/fsuggest.php:63
-msgid "Friend suggestion sent."
-msgstr "Vänförfrågan skickad."
+#: ../../mod/admin.php:1349
+msgid "Field definition not found"
+msgstr "Fältdefinition hittades inte"
-#: ../../mod/fsuggest.php:97
-msgid "Suggest Friends"
-msgstr "Föreslå vänner"
+#: ../../mod/admin.php:1355
+msgid "Edit Profile Field"
+msgstr "Redigera profilfält"
-#: ../../mod/fsuggest.php:99
+#: ../../mod/manage.php:136
#, php-format
-msgid "Suggest a friend for %s"
-msgstr "Föreslå en vän för %s"
+msgid "You have created %1$.0f of %2$.0f allowed channels."
+msgstr "Du har skapat %1$.0f av %2$.0f tillåtna kanaler."
-#: ../../mod/dirprofile.php:114
-msgid "Status: "
-msgstr "Status: "
+#: ../../mod/manage.php:144
+msgid "Create a new channel"
+msgstr "Skapa en ny kanal"
-#: ../../mod/dirprofile.php:115
-msgid "Sexual Preference: "
-msgstr "Sexuell preferens: "
+#: ../../mod/manage.php:149
+msgid "Current Channel"
+msgstr "Nuvarande kanal"
-#: ../../mod/dirprofile.php:117
-msgid "Homepage: "
-msgstr "Hemsida: "
+#: ../../mod/manage.php:151
+msgid "Attach to one of your channels by selecting it."
+msgstr "Anslut till en av dina kanaler genom att välja den."
-#: ../../mod/dirprofile.php:118
-msgid "Hometown: "
-msgstr "Hemort: "
+#: ../../mod/manage.php:152
+msgid "Default Channel"
+msgstr "Standardkanal"
-#: ../../mod/dirprofile.php:120
-msgid "About: "
-msgstr "Om: "
+#: ../../mod/manage.php:153
+msgid "Make Default"
+msgstr "Gör till standard"
-#: ../../mod/dirprofile.php:168
-msgid "Keywords: "
-msgstr "Nyckelord: "
+#: ../../mod/menu.php:31
+msgid "Menu updated."
+msgstr "Meny uppdaterad."
-#: ../../mod/filestorage.php:68
-msgid "Permission Denied."
-msgstr "Behörighet saknas."
+#: ../../mod/menu.php:35
+msgid "Unable to update menu."
+msgstr "Kunde inte uppdatera meny."
-#: ../../mod/filestorage.php:85
-msgid "File not found."
-msgstr "Filen hittas inte."
+#: ../../mod/menu.php:40
+msgid "Menu created."
+msgstr "Meny skapad."
-#: ../../mod/filestorage.php:119
-msgid "Edit file permissions"
-msgstr "Redigera filrättigheter"
+#: ../../mod/menu.php:44
+msgid "Unable to create menu."
+msgstr "Kunde inte skapa meny."
-#: ../../mod/filestorage.php:126
-msgid "Include all files and sub folders"
-msgstr "Inkludera alla filer och underkataloger"
+#: ../../mod/menu.php:76
+msgid "Manage Menus"
+msgstr "Hantera menyer"
-#: ../../mod/filestorage.php:127
-msgid "Return to file list"
-msgstr "Återgå till fillistan"
+#: ../../mod/menu.php:79
+msgid "Drop"
+msgstr "Ta bort"
-#: ../../mod/filestorage.php:129
-msgid "Copy/paste this code to attach file to a post"
-msgstr "Kopiera/klistra in den här koden för att bifoga filen i ett inlägg"
+#: ../../mod/menu.php:81
+msgid "Bookmarks allowed"
+msgstr "Bokmärken tillåtna"
-#: ../../mod/filestorage.php:130
-msgid "Copy/paste this URL to link file from a web page"
-msgstr "Kopiera/klistra in den här URL:en för att länka till filen från en webbsida"
+#: ../../mod/menu.php:82
+msgid "Create a new menu"
+msgstr "Skapa en ny meny"
-#: ../../mod/filestorage.php:167
-msgid "Download"
-msgstr "Ladda ner"
+#: ../../mod/menu.php:83
+msgid "Delete this menu"
+msgstr "Ta bort den här menyn"
-#: ../../mod/filestorage.php:173
-msgid "Used: "
-msgstr "Använt: "
+#: ../../mod/menu.php:84 ../../mod/menu.php:125
+msgid "Edit menu contents"
+msgstr "Redigera menyinnehåll"
-#: ../../mod/filestorage.php:174
-msgid "[directory]"
-msgstr "[katalog]"
+#: ../../mod/menu.php:85
+msgid "Edit this menu"
+msgstr "Redigera den här menyn"
-#: ../../mod/filestorage.php:176
-msgid "Limit: "
-msgstr "Gräns: "
+#: ../../mod/menu.php:96
+msgid "New Menu"
+msgstr "Ny meny"
-#: ../../mod/suggest.php:35
-msgid ""
-"No suggestions available. If this is a new site, please try again in 24 "
-"hours."
-msgstr "Inga förslag tillgängliga. Om det här är en ny server, försök igen om 24 timmar."
+#: ../../mod/menu.php:97 ../../mod/menu.php:126
+msgid "Menu name"
+msgstr "Menynamn"
-#: ../../mod/message.php:41
-msgid "Conversation removed."
-msgstr "Konversation borttagen."
+#: ../../mod/menu.php:97 ../../mod/menu.php:126
+msgid "Must be unique, only seen by you"
+msgstr "MÃ¥ste vara unikt, ses endast av dig"
-#: ../../mod/message.php:56
-msgid "No messages."
-msgstr "Inga meddelanden."
+#: ../../mod/menu.php:98 ../../mod/menu.php:127
+msgid "Menu title"
+msgstr "Menytitel"
-#: ../../mod/message.php:74
-msgid "D, d M Y - g:i A"
-msgstr "D, j M Y - H:i"
+#: ../../mod/menu.php:98 ../../mod/menu.php:127
+msgid "Menu title as seen by others"
+msgstr "Menytitel som andra ser den"
-#: ../../mod/pubsites.php:22
-msgid "Public Sites"
-msgstr "Offentliga servrar"
+#: ../../mod/menu.php:99 ../../mod/menu.php:128
+msgid "Allow bookmarks"
+msgstr "Tillåt bokmärken"
-#: ../../mod/pubsites.php:25
-msgid ""
-"The listed sites allow public registration into the Red Matrix. All sites in"
-" the matrix are interlinked so membership on any of them conveys membership "
-"in the matrix as a whole. Some sites may require subscription or provide "
-"tiered service plans. The provider links <strong>may</strong> provide "
-"additional details."
-msgstr "De listade servrarna tillåter offentlig registrering i Red Matrix. Alla servrar i matrisen är sammankopplade, så medlemskap i en av dem medför medlemskap i matrisen som helhet. Vissa servrar kan kräva abonnemang eller erbjuda uppdelade tjänstenivåer. Leverantörslänkarna <strong>kan</strong> ge ytterligare detaljer."
+#: ../../mod/menu.php:99 ../../mod/menu.php:128
+msgid "Menu may be used to store saved bookmarks"
+msgstr "Menyn kan användas för att spara bokmärken"
-#: ../../mod/pubsites.php:31
-msgid "Site URL"
-msgstr "Server-URL"
+#: ../../mod/menu.php:114
+msgid "Menu deleted."
+msgstr "Meny borttagen."
-#: ../../mod/pubsites.php:31
-msgid "Access Type"
-msgstr "Ã…tkomsttyp"
+#: ../../mod/menu.php:116
+msgid "Menu could not be deleted."
+msgstr "Menyn kunde inte tas bort."
-#: ../../mod/pubsites.php:31
-msgid "Registration Policy"
-msgstr "Registreringspolicy"
+#: ../../mod/menu.php:122
+msgid "Edit Menu"
+msgstr "Redigera meny"
-#: ../../mod/register.php:43
-msgid "Maximum daily site registrations exceeded. Please try again tomorrow."
-msgstr "Maximalt antal dagliga serverregistreringar överskridet. Försök igen i morgon."
+#: ../../mod/menu.php:124
+msgid "Add or remove entries to this menu"
+msgstr "Lägg till eller ta bort menyval"
-#: ../../mod/register.php:49
-msgid ""
-"Please indicate acceptance of the Terms of Service. Registration failed."
-msgstr "Välj huruvida du accepterar användarvillkoren. Registrering misslyckades."
+#: ../../mod/invite.php:25
+msgid "Total invitation limit exceeded."
+msgstr "Gränsen för totalt antal inbjudningar överskriden."
-#: ../../mod/register.php:77
-msgid "Passwords do not match."
-msgstr "Lösenorden stämmer inte överens."
+#: ../../mod/invite.php:49
+#, php-format
+msgid "%s : Not a valid email address."
+msgstr "%s: Inte en giltig e-postadress."
-#: ../../mod/register.php:105
-msgid ""
-"Registration successful. Please check your email for validation "
-"instructions."
-msgstr "Registrering lyckades. Kontrollera din e-post för valideringsinstruktioner."
+#: ../../mod/invite.php:76
+msgid "Please join us on Red"
+msgstr "GÃ¥ med oss i Red"
-#: ../../mod/register.php:111
-msgid "Your registration is pending approval by the site owner."
-msgstr "Din registrering väntar på att bli godkänd av serverägaren."
+#: ../../mod/invite.php:87
+msgid "Invitation limit exceeded. Please contact your site administrator."
+msgstr "Inbjudningsgränsen överskriden. Kontakta din serveradministratör."
-#: ../../mod/register.php:114
-msgid "Your registration can not be processed."
-msgstr "Din registrering kan inte behandlas."
+#: ../../mod/invite.php:92
+#, php-format
+msgid "%s : Message delivery failed."
+msgstr "%s : Leverans av meddelande misslyckades."
-#: ../../mod/register.php:147
-msgid "Registration on this site/hub is by approval only."
-msgstr "Registrering på den här servern/hubben måste godkännas."
+#: ../../mod/invite.php:96
+#, php-format
+msgid "%d message sent."
+msgid_plural "%d messages sent."
+msgstr[0] "%d meddelande sänt."
+msgstr[1] "%d meddelanden sända."
-#: ../../mod/register.php:148
-msgid "<a href=\"pubsites\">Register at another affiliated site/hub</a>"
-msgstr "<a href=\"pubsites\">Registrera dig på en annan ansluten server/hubb</a>"
+#: ../../mod/invite.php:115
+msgid "You have no more invitations available"
+msgstr "Du har inga fler inbjudningar kvar"
-#: ../../mod/register.php:156
-msgid ""
-"This site has exceeded the number of allowed daily account registrations. "
-"Please try again tomorrow."
-msgstr "Antal dagliga registreringar som tillåts på den här servern har överskridits. Försök igen i morgon."
+#: ../../mod/invite.php:129
+msgid "Send invitations"
+msgstr "Skicka inbjudan"
-#: ../../mod/register.php:167
-msgid "Terms of Service"
-msgstr "användarvillkor"
+#: ../../mod/invite.php:130
+msgid "Enter email addresses, one per line:"
+msgstr "Ange e-postadresser, en per rad:"
-#: ../../mod/register.php:173
-#, php-format
-msgid "I accept the %s for this website"
-msgstr "Jag accepterar den här webbplatsens %s"
+#: ../../mod/invite.php:132
+msgid "Please join my community on RedMatrix."
+msgstr "Gå med mig i gemenskapen på RedMatrix."
-#: ../../mod/register.php:175
-#, php-format
-msgid "I am over 13 years of age and accept the %s for this website"
-msgstr "Jag är över 13 år och accepterar den här webbplatsens %s"
+#: ../../mod/invite.php:134
+msgid "You will need to supply this invitation code: "
+msgstr "Du kommer att behöva den här inbjudningskoden: "
-#: ../../mod/register.php:194
-msgid "Membership on this site is by invitation only."
-msgstr "Medlemskap på den här servern kan endast fås genom inbjudan."
+#: ../../mod/invite.php:135
+msgid "1. Register at any RedMatrix location (they are all inter-connected)"
+msgstr "1. Skapa konto på en RedMatrix-server (alla är ihopkopplade)"
-#: ../../mod/register.php:195
-msgid "Please enter your invitation code"
-msgstr "Ange din inbjudningskod"
+#: ../../mod/invite.php:137
+msgid "2. Enter my RedMatrix network address into the site searchbar."
+msgstr "2. Ange min RedMatrix-adress i webbplatsens sökruta."
-#: ../../mod/register.php:198
-msgid "Your email address"
-msgstr "Din e-postadress"
+#: ../../mod/invite.php:138
+msgid "or visit "
+msgstr "eller besök "
-#: ../../mod/register.php:199
-msgid "Choose a password"
-msgstr "Välj ett lösenord"
+#: ../../mod/invite.php:140
+msgid "3. Click [Connect]"
+msgstr "3. Klicka [Ta kontakt]"
-#: ../../mod/register.php:200
-msgid "Please re-enter your password"
-msgstr "Ange lösenordet igen"
+#: ../../mod/network.php:84
+msgid "No such group"
+msgstr "Ingen sådan grupp"
-#: ../../mod/regmod.php:12
-msgid "Please login."
-msgstr "Logga in."
+#: ../../mod/network.php:122
+msgid "Search Results For:"
+msgstr "Sökresultat för:"
-#: ../../mod/removeme.php:49
-msgid "Remove This Channel"
-msgstr "Ta bort den här kanalen"
+#: ../../mod/network.php:176
+msgid "Collection is empty"
+msgstr "Kretsen är tom"
-#: ../../mod/removeme.php:50
-msgid ""
-"This will completely remove this channel from the network. Once this has "
-"been done it is not recoverable."
-msgstr "Det här kommer att ta bort den här kanalen helt från nätverket. När det är gjort går det inte att återställa den."
+#: ../../mod/network.php:184
+msgid "Collection: "
+msgstr "Krets: "
-#: ../../mod/removeme.php:51
-msgid "Please enter your password for verification:"
-msgstr "Ange ditt lösenord för att bekräfta:"
+#: ../../mod/network.php:197
+msgid "Connection: "
+msgstr "Kontakt:"
-#: ../../mod/removeme.php:52
-msgid "Remove this channel and all its clones from the network"
-msgstr "Ta bort den här kanalen och alla dess kloner från nätverket"
+#: ../../mod/network.php:200
+msgid "Invalid connection."
+msgstr "Ogiltig kontakt."
-#: ../../mod/removeme.php:52
-msgid ""
-"By default only the instance of the channel located on this hub will be "
-"removed from the network"
-msgstr "Som standard kommer bara den här hubbens instans av kanalen att tas bort från nätverket"
+#: ../../mod/notifications.php:26
+msgid "Invalid request identifier."
+msgstr "Ogiltigt ID på förfrågan."
-#: ../../mod/removeme.php:53
-msgid "Remove Channel"
-msgstr "Ta bort kanal"
+#: ../../mod/notifications.php:35
+msgid "Discard"
+msgstr "Förkasta"
-#: ../../mod/photos.php:77
-msgid "Page owner information could not be retrieved."
-msgstr "Information om sidans ägare kunde inte hittas."
+#: ../../mod/notifications.php:94 ../../mod/notify.php:53
+msgid "No more system notifications."
+msgstr "Inga fler systemnotifieringar."
-#: ../../mod/photos.php:97
-msgid "Album not found."
-msgstr "Albumet hittades inte."
+#: ../../mod/notifications.php:98 ../../mod/notify.php:57
+msgid "System Notifications"
+msgstr "Systemnotifieringar"
-#: ../../mod/photos.php:119 ../../mod/photos.php:671
-msgid "Delete Album"
-msgstr "Ta bort album"
+#: ../../mod/update_channel.php:43 ../../mod/update_display.php:25
+#: ../../mod/update_network.php:23 ../../mod/update_search.php:46
+#: ../../mod/update_home.php:21
+msgid "[Embedded content - reload page to view]"
+msgstr "[Inbäddat innehåll - ladda om sidan för att visa]"
-#: ../../mod/photos.php:159 ../../mod/photos.php:954
-msgid "Delete Photo"
-msgstr "Ta bort foto"
+#: ../../mod/lockview.php:31
+msgid "Remote privacy information not available."
+msgstr "Icke-lokal integritetsinformation är inte tillgänglig"
-#: ../../mod/photos.php:453
-msgid "No photos selected"
-msgstr "Inga foton valda"
+#: ../../mod/lockview.php:52
+msgid "Visible to:"
+msgstr "Kan ses av:"
-#: ../../mod/photos.php:500
-msgid "Access to this item is restricted."
-msgstr "Åtkomst till den här posten är begränsat."
+#: ../../mod/viewconnections.php:58
+msgid "No connections."
+msgstr "Inga kontakter."
-#: ../../mod/photos.php:576
+#: ../../mod/viewconnections.php:71
#, php-format
-msgid "You have used %1$.2f Mbytes of %2$.2f Mbytes photo storage."
-msgstr "Du har använt %1$.2f MB av %2$.2f MB fotoutrymme."
+msgid "Visit %s's profile [%s]"
+msgstr "Besök %ss profil [%s]"
-#: ../../mod/photos.php:579
-#, php-format
-msgid "You have used %1$.2f Mbytes of photo storage."
-msgstr "Du har använt %1$.2f MB fotoutrymme."
+#: ../../mod/viewconnections.php:86
+msgid "View Connnections"
+msgstr "Visa kontakter"
-#: ../../mod/photos.php:598
-msgid "Upload Photos"
-msgstr "Ladda upp foton"
+#: ../../mod/magic.php:70
+msgid "Hub not found."
+msgstr "Hubb hittades inte."
-#: ../../mod/photos.php:602 ../../mod/photos.php:666
-msgid "New album name: "
-msgstr "Namn på nytt album: "
+#: ../../mod/vote.php:97
+msgid "Total votes"
+msgstr "Totalt antal röster"
-#: ../../mod/photos.php:603
-msgid "or existing album name: "
-msgstr "eller befintligt albumnamn: "
+#: ../../mod/vote.php:98
+msgid "Average Rating"
+msgstr "Genomsnittsbetyg"
-#: ../../mod/photos.php:604
-msgid "Do not show a status post for this upload"
-msgstr "Visa inte en statusuppdatering för den här uppladdningen"
+#: ../../mod/openid.php:26
+msgid "OpenID protocol error. No ID returned."
+msgstr "Protokollfel för OpenID. Inget ID returnerades."
-#: ../../mod/photos.php:655 ../../mod/photos.php:677 ../../mod/photos.php:1126
-#: ../../mod/photos.php:1141
-msgid "Contact Photos"
-msgstr "Kontaktfoton"
+#: ../../mod/openid.php:72 ../../mod/openid.php:180 ../../mod/post.php:261
+#, php-format
+msgid "Welcome %s. Remote authentication successful."
+msgstr "Välkommen %s. Fjärrinloggning lyckades."
-#: ../../mod/photos.php:681
-msgid "Edit Album"
-msgstr "Redigera album"
+#: ../../mod/wall_upload.php:35
+msgid "Wall Photos"
+msgstr "Väggfoton"
-#: ../../mod/photos.php:687
-msgid "Show Newest First"
-msgstr "Visa nyast först"
+#: ../../mod/match.php:16
+msgid "Profile Match"
+msgstr "Profilträff"
-#: ../../mod/photos.php:689
-msgid "Show Oldest First"
-msgstr "Visa äldst först"
+#: ../../mod/match.php:24
+msgid "No keywords to match. Please add keywords to your default profile."
+msgstr "Inga nyckelord att matcha mot. Lägg till några nyckelord i din standardprofil."
-#: ../../mod/photos.php:732 ../../mod/photos.php:1173
-msgid "View Photo"
-msgstr "Visa foto"
+#: ../../mod/match.php:61
+msgid "is interested in:"
+msgstr "är intresserad av:"
-#: ../../mod/photos.php:778
-msgid "Permission denied. Access to this item may be restricted."
-msgstr "Behörighet saknas. Åtkomst till den här posten kan vara begränsat."
+#: ../../mod/match.php:69
+msgid "No matches"
+msgstr "Inga träffar"
-#: ../../mod/photos.php:780
-msgid "Photo not available"
-msgstr "Foto inte tillgängligt"
+#: ../../mod/message.php:41
+msgid "Conversation removed."
+msgstr "Konversation borttagen."
-#: ../../mod/photos.php:840
-msgid "Use as profile photo"
-msgstr "Använd som profilfoto"
+#: ../../mod/message.php:56
+msgid "No messages."
+msgstr "Inga meddelanden."
-#: ../../mod/photos.php:864
-msgid "View Full Size"
-msgstr "Visa fullstorlek"
+#: ../../mod/message.php:74
+msgid "D, d M Y - g:i A"
+msgstr "D, j M Y - H:i"
-#: ../../mod/photos.php:938
-msgid "Edit photo"
-msgstr "Redigera foto"
+#: ../../mod/new_channel.php:109
+msgid "Add a Channel"
+msgstr "Lägg till en kanal"
-#: ../../mod/photos.php:940
-msgid "Rotate CW (right)"
-msgstr "Rotera medurs (höger)"
+#: ../../mod/new_channel.php:110
+msgid ""
+"A channel is your own collection of related web pages. A channel can be used"
+" to hold social network profiles, blogs, conversation groups and forums, "
+"celebrity pages, and much more. You may create as many channels as your "
+"service provider allows."
+msgstr "En kanal är din egen samling av relaterade webbsidor. En kanal kan användas för att innehålla sociala nätverksprofiler, bloggar, konversationsgrupper och forum, fansidor, och mycket mer. Du kan skapa så många kanaler som din tjänsteleverantör tillåter."
-#: ../../mod/photos.php:941
-msgid "Rotate CCW (left)"
-msgstr "Rotera moturs (vänster)"
+#: ../../mod/new_channel.php:113
+msgid "Examples: \"Bob Jameson\", \"Lisa and her Horses\", \"Soccer\", \"Aviation Group\" "
+msgstr "Exempel: \"Bob Jameson\", \"Lisa och hennes hästar\", \"Fotboll\", \"Flyggruppen\" "
-#: ../../mod/photos.php:943
-msgid "New album name"
-msgstr "Nytt albumnamn"
+#: ../../mod/new_channel.php:114
+msgid "Choose a short nickname"
+msgstr "Välj ett kort smeknamn"
-#: ../../mod/photos.php:946
-msgid "Caption"
-msgstr "Bildtext"
+#: ../../mod/new_channel.php:115
+msgid ""
+"Your nickname will be used to create an easily remembered channel address "
+"(like an email address) which you can share with others."
+msgstr "Ditt smeknamn används för att skapa en kanaladress som är lätt att komma ihåg (som en e-postadress) som du kan dela med andra."
-#: ../../mod/photos.php:948
-msgid "Add a Tag"
-msgstr "Lägg till en tagg"
+#: ../../mod/new_channel.php:116
+msgid "Or <a href=\"import\">import an existing channel</a> from another location"
+msgstr "Eller <a href=\"import\">importera en befintlig kanal</a> från en annan plats"
-#: ../../mod/photos.php:951
-msgid ""
-"Example: @bob, @Barbara_Jensen, @jim@example.com, #California, #camping"
-msgstr "Exempel: @bob, @Barbara_Jensen, @jim@example.com, #California, #camping"
+#: ../../mod/new_channel.php:118
+msgid "Channel Type"
+msgstr "Kanaltyp"
-#: ../../mod/photos.php:1104
-msgid "In This Photo:"
-msgstr "PÃ¥ fotot:"
+#: ../../mod/new_channel.php:119
+msgid "?"
+msgstr "?"
-#: ../../mod/photos.php:1179
-msgid "View Album"
-msgstr "Visa album"
+#: ../../mod/new_channel.php:120
+msgid "What is this?"
+msgstr "Vad är detta?"
-#: ../../mod/photos.php:1188
-msgid "Recent Photos"
-msgstr "Nya foton"
+#: ../../mod/new_channel.php:121
+msgid ""
+"Please choose a channel type (such as social networking or community forum) "
+"and privacy requirements so we can select the best permissions for you"
+msgstr "Välj en kanaltyp (som till exempel socialt nätverkande eller gemenskapsforum) och integritetskrav, så kan vi välja de bästa behörigheterna åt dig"
-#: ../../mod/mood.php:138
-msgid "Mood"
-msgstr "Sinnesstämning"
+#: ../../mod/xchan.php:6
+msgid "Xchan Lookup"
+msgstr "Xchan-sökning"
-#: ../../mod/mood.php:139
-msgid "Set your current mood and tell your friends"
-msgstr "Ange din nuvarande sinnesstämning och visa för dina vänner"
+#: ../../mod/xchan.php:9
+msgid "Lookup xchan beginning with (or webbie): "
+msgstr "Sök efter xchan som börjar med (eller webbie): "
-#: ../../mod/ping.php:192
-msgid "sent you a private message"
-msgstr "skickade ett privat meddelande till dig"
+#: ../../mod/zfinger.php:23
+msgid "invalid target signature"
+msgstr "ogiltig målsignatur"
-#: ../../mod/ping.php:250
-msgid "added your channel"
-msgstr "lade till din kanal"
+#: ../../mod/oexchange.php:23
+msgid "Unable to find your hub."
+msgstr "Kunde inte hitta din hubb."
-#: ../../mod/ping.php:294
-msgid "posted an event"
-msgstr "skapade en händelse"
+#: ../../mod/oexchange.php:37
+msgid "Post successful."
+msgstr "Sändning lyckades."
-#: ../../view/theme/redbasic/php/config.php:98
-#: ../../view/theme/apw/php/config.php:259
-#: ../../view/theme/blogga/view/theme/blog/config.php:69
-#: ../../view/theme/blogga/php/config.php:69
-msgid "Theme settings"
-msgstr "Temainställningar"
+#: ../../mod/directory.php:201
+msgid "Gender: "
+msgstr "Kön:"
-#: ../../view/theme/redbasic/php/config.php:99
-#: ../../view/theme/apw/php/config.php:260
-msgid "Set scheme"
-msgstr "Välj variant"
+#: ../../mod/directory.php:203
+msgid "Status: "
+msgstr "Status: "
-#: ../../view/theme/redbasic/php/config.php:100
-msgid "Narrow navbar"
-msgstr "Smal navigeringslist"
+#: ../../mod/directory.php:205
+msgid "Homepage: "
+msgstr "Hemsida: "
-#: ../../view/theme/redbasic/php/config.php:101
-msgid "Navigation bar background colour"
-msgstr "Navigeringslistens bakgrundsfärg"
+#: ../../mod/directory.php:208
+msgid "Hometown: "
+msgstr "Hemort: "
-#: ../../view/theme/redbasic/php/config.php:102
-msgid "Navigation bar gradient top colour"
-msgstr "Övre gradientfärg i navigeringslisten"
+#: ../../mod/directory.php:210
+msgid "About: "
+msgstr "Om: "
-#: ../../view/theme/redbasic/php/config.php:103
-msgid "Navigation bar gradient bottom colour"
-msgstr "Undre gradientfärg i navigeringslisten"
+#: ../../mod/directory.php:265
+msgid "Public Forum:"
+msgstr "Offentligt forum:"
-#: ../../view/theme/redbasic/php/config.php:104
-msgid "Navigation active button gradient top colour"
-msgstr "Övre gradientfärg på aktiv knapp i navigeringslisten"
+#: ../../mod/directory.php:268
+msgid "Keywords: "
+msgstr "Nyckelord: "
-#: ../../view/theme/redbasic/php/config.php:105
-msgid "Navigation active button gradient bottom colour"
-msgstr "Undre gradientfärg på aktiv knapp i navigeringslisten"
+#: ../../mod/directory.php:318
+msgid "Finding:"
+msgstr "Sökning efter:"
-#: ../../view/theme/redbasic/php/config.php:106
-msgid "Navigation bar border colour "
-msgstr "Färg på navigeringslistens kant"
+#: ../../mod/directory.php:323
+msgid "next page"
+msgstr "nästa sida"
-#: ../../view/theme/redbasic/php/config.php:107
-msgid "Navigation bar icon colour "
-msgstr "Färg på ikoner i navigeringslisten"
+#: ../../mod/directory.php:323
+msgid "previous page"
+msgstr "föregående sida"
-#: ../../view/theme/redbasic/php/config.php:108
-msgid "Navigation bar active icon colour "
-msgstr "Färg på aktiv ikon i navigeringslisten"
+#: ../../mod/directory.php:340
+msgid "No entries (some entries may be hidden)."
+msgstr "Inga resultat (vissa resultat kan vara dolda)."
-#: ../../view/theme/redbasic/php/config.php:109
-msgid "link colour"
-msgstr "Länkfärg"
+#: ../../mod/post.php:229
+msgid ""
+"Remote authentication blocked. You are logged into this site locally. Please"
+" logout and retry."
+msgstr "Fjärrinloggning blockerades. Du är inloggad på den här servern lokalt. Logga ut och försök igen."
-#: ../../view/theme/redbasic/php/config.php:110
-msgid "Set font-colour for banner"
-msgstr "Välj textfärg för sidhuvudet"
+#: ../../mod/appman.php:28 ../../mod/appman.php:44
+msgid "App installed."
+msgstr "App installerad."
-#: ../../view/theme/redbasic/php/config.php:111
-msgid "Set the background colour"
-msgstr "Välj bakgrundsfärg"
+#: ../../mod/appman.php:37
+msgid "Malformed app."
+msgstr "Felaktig app."
-#: ../../view/theme/redbasic/php/config.php:112
-msgid "Set the background image"
-msgstr "Välj bakgrundsbild"
+#: ../../mod/appman.php:80
+msgid "Embed code"
+msgstr "Bädda in kod"
-#: ../../view/theme/redbasic/php/config.php:113
-msgid "Set the background colour of items"
-msgstr "Välj bakgrundsfärg för inlägg"
+#: ../../mod/appman.php:86
+msgid "Edit App"
+msgstr "Redigera app"
-#: ../../view/theme/redbasic/php/config.php:114
-msgid "Set the opacity of items"
-msgstr "Välj opacitet för inlägg"
+#: ../../mod/appman.php:86
+msgid "Create App"
+msgstr "Skapa app"
-#: ../../view/theme/redbasic/php/config.php:115
-msgid "Set the basic colour for item icons"
-msgstr "Välj basfärg för inläggsikoner"
+#: ../../mod/appman.php:91
+msgid "Name of app"
+msgstr "Namn på app"
-#: ../../view/theme/redbasic/php/config.php:116
-msgid "Set the hover colour for item icons"
-msgstr "Välj färg på inläggsikon under muspekare"
+#: ../../mod/appman.php:92
+msgid "Location (URL) of app"
+msgstr "Adress (URL) för app"
-#: ../../view/theme/redbasic/php/config.php:117
-msgid "Set font-size for the entire application"
-msgstr "Välj textstorlek för hela applikationen"
+#: ../../mod/appman.php:94
+msgid "Photo icon URL"
+msgstr "Fotoikon URL"
-#: ../../view/theme/redbasic/php/config.php:118
-#: ../../view/theme/apw/php/config.php:261
-msgid "Set font-size for posts and comments"
-msgstr "Välj textstorlek för inlägg och kommentarer"
+#: ../../mod/appman.php:94
+msgid "80 x 80 pixels - optional"
+msgstr "80 x 80 pixlar - valfri"
-#: ../../view/theme/redbasic/php/config.php:119
-msgid "Set font-colour for posts and comments"
-msgstr "Välj textfärg för inlägg och kommentarer"
+#: ../../mod/appman.php:95
+msgid "Version ID"
+msgstr "Versions-ID"
-#: ../../view/theme/redbasic/php/config.php:120
-msgid "Set radius of corners"
-msgstr "Välj hörnradie"
+#: ../../mod/appman.php:96
+msgid "Price of app"
+msgstr "Pris på app"
-#: ../../view/theme/redbasic/php/config.php:121
-msgid "Set shadow depth of photos"
-msgstr "Välj skuggdjup för foton"
+#: ../../mod/appman.php:97
+msgid "Location (URL) to purchase app"
+msgstr "Adress (URL) för att köpa app"
-#: ../../view/theme/redbasic/php/config.php:122
-msgid "Set maximum width of conversation regions"
-msgstr "Välj maxbredd på konversationsfält"
+#: ../../mod/poll.php:64
+msgid "Poll"
+msgstr "Opinionsundersökning"
-#: ../../view/theme/redbasic/php/config.php:123
-msgid "Center conversation regions"
-msgstr "Centrera konversationsfält"
+#: ../../mod/poll.php:69
+msgid "View Results"
+msgstr "Visa resultat"
-#: ../../view/theme/redbasic/php/config.php:124
-msgid "Set minimum opacity of nav bar - to hide it"
-msgstr "Välj lägsta opacitet för navigeringslisten - för att dölja den"
+#: ../../mod/removeaccount.php:30
+msgid ""
+"Account removals are not allowed within 48 hours of changing the account "
+"password."
+msgstr "Borttagning av konto tillåts inte inom 48 timmar efter att kontolösenordet har ändrats."
-#: ../../view/theme/redbasic/php/config.php:125
-msgid "Set size of conversation author photo"
-msgstr "Välj storlek på foto för trådskapare"
+#: ../../mod/removeaccount.php:57
+msgid "Remove This Account"
+msgstr "Ta bort kontot"
-#: ../../view/theme/redbasic/php/config.php:126
-msgid "Set size of followup author photos"
-msgstr "Välj storlek på svarande personers foton"
+#: ../../mod/removeaccount.php:58
+msgid ""
+"This will completely remove this account including all its channels from the"
+" network. Once this has been done it is not recoverable."
+msgstr "Det här kommer att ta bort kontot fullständigt från nätverket, inklusive alla dess kanaler. När detta har gjorts går det inte att ångra."
-#: ../../view/theme/redbasic/php/config.php:127
-msgid "Sloppy photo albums"
-msgstr "Oordnade fotoalbum"
+#: ../../mod/removeaccount.php:60
+msgid ""
+"Remove this account, all its channels and all its channel clones from the "
+"network"
+msgstr "Ta bort kontot, alla dess kanaler och alla kanalkopior från nätverket"
-#: ../../view/theme/redbasic/php/config.php:127
-msgid "Are you a clean desk or a messy desk person?"
-msgstr "Föredrar du ett tomt eller stökigt skrivbord?"
+#: ../../mod/removeaccount.php:60
+msgid ""
+"By default only the instances of the channels located on this hub will be "
+"removed from the network"
+msgstr "Som standard tas bara instanser av kanaler som finns på den här servern bort från nätverket"
+
+#: ../../mod/service_limits.php:19
+msgid "No service class restrictions found."
+msgstr "Inga tjänsteklassbegränsningar hittades."
#: ../../view/theme/apw/php/config.php:202
#: ../../view/theme/apw/php/config.php:236
msgid "Schema Default"
-msgstr "Temavariantens standard"
+msgstr "Schemats standard"
#: ../../view/theme/apw/php/config.php:203
msgid "Sans-Serif"
@@ -7423,7 +8099,22 @@ msgstr "Sans-serif"
#: ../../view/theme/apw/php/config.php:204
msgid "Monospace"
-msgstr "Fast bredd"
+msgstr "Monospace"
+
+#: ../../view/theme/apw/php/config.php:259
+#: ../../view/theme/redbasic/php/config.php:102
+msgid "Theme settings"
+msgstr "Temainställningar"
+
+#: ../../view/theme/apw/php/config.php:260
+#: ../../view/theme/redbasic/php/config.php:103
+msgid "Set scheme"
+msgstr "Välj variant"
+
+#: ../../view/theme/apw/php/config.php:261
+#: ../../view/theme/redbasic/php/config.php:124
+msgid "Set font-size for posts and comments"
+msgstr "Välj textstorlek för inlägg och kommentarer"
#: ../../view/theme/apw/php/config.php:262
msgid "Set font face"
@@ -7435,14 +8126,14 @@ msgstr "Välj ikontema"
#: ../../view/theme/apw/php/config.php:264
msgid "Set big shadow size, default 15px 15px 15px"
-msgstr "Välj stor skuggstorlek, standard 15px 15px 15px"
+msgstr "Välj stor skuggstorlek, standard 15px 15px 15px "
#: ../../view/theme/apw/php/config.php:265
msgid "Set small shadow size, default 5px 5px 5px"
msgstr "Välj liten skuggstorlek, standard 5px 5px 5px"
#: ../../view/theme/apw/php/config.php:266
-msgid "Set shadow colour, default #000"
+msgid "Set shadow color, default #000"
msgstr "Välj skuggfärg, standard #000"
#: ../../view/theme/apw/php/config.php:267
@@ -7459,10 +8150,10 @@ msgstr "Välj bakgrundsbild"
#: ../../view/theme/apw/php/config.php:270
msgid "Set background attachment"
-msgstr "Välj bakgrundsfixering"
+msgstr "Välj fixerad bakgrund"
#: ../../view/theme/apw/php/config.php:271
-msgid "Set background colour"
+msgid "Set background color"
msgstr "Välj bakgrundsfärg"
#: ../../view/theme/apw/php/config.php:272
@@ -7470,31 +8161,31 @@ msgid "Set section background image"
msgstr "Välj bakgrundsbild för avsnitt"
#: ../../view/theme/apw/php/config.php:273
-msgid "Set section background colour"
+msgid "Set section background color"
msgstr "Välj bakgrundsfärg för avsnitt"
#: ../../view/theme/apw/php/config.php:274
-msgid "Set colour of items - use hex"
+msgid "Set color of items - use hex"
msgstr "Välj färg på inlägg - använd hex"
#: ../../view/theme/apw/php/config.php:275
-msgid "Set colour of links - use hex"
+msgid "Set color of links - use hex"
msgstr "Välj färg på länkar - använd hex"
#: ../../view/theme/apw/php/config.php:276
msgid "Set max-width for items. Default 400px"
-msgstr "Välj maxbredd för inlägg. Standard 400px"
+msgstr "Välj största bredd för inlägg. Standard 400px"
#: ../../view/theme/apw/php/config.php:277
msgid "Set min-width for items. Default 240px"
-msgstr "Välj minbredd för inlägg. Standard 240px"
+msgstr "Välj minsta bredd för inlägg. Standard 240px"
#: ../../view/theme/apw/php/config.php:278
msgid "Set the generic content wrapper width. Default 48%"
msgstr "Välj bredd på fältet för allmänt innehåll. Standard 48%"
#: ../../view/theme/apw/php/config.php:279
-msgid "Set colour of fonts - use hex"
+msgid "Set color of fonts - use hex"
msgstr "Välj textfärg - använd hex"
#: ../../view/theme/apw/php/config.php:280
@@ -7541,56 +8232,165 @@ msgstr "Vänster offset för sidoelement"
msgid "Right offset of the aside element"
msgstr "Höger offset för sidoelement"
-#: ../../view/theme/blogga/view/theme/blog/config.php:47
-#: ../../view/theme/blogga/php/config.php:47
-msgid "None"
-msgstr "Inget"
+#: ../../view/theme/redbasic/php/config.php:84
+msgid "Light (Red Matrix default)"
+msgstr "Light (standard för Red Matrix)"
+
+#: ../../view/theme/redbasic/php/config.php:104
+msgid "Narrow navbar"
+msgstr "Smal navigeringslist"
+
+#: ../../view/theme/redbasic/php/config.php:105
+msgid "Navigation bar background color"
+msgstr "Navigeringslistens bakgrundsfärg"
+
+#: ../../view/theme/redbasic/php/config.php:106
+msgid "Navigation bar gradient top color"
+msgstr "Övre gradientfärg i navigeringslisten"
+
+#: ../../view/theme/redbasic/php/config.php:107
+msgid "Navigation bar gradient bottom color"
+msgstr "Undre gradientfärg i navigeringslisten"
+
+#: ../../view/theme/redbasic/php/config.php:108
+msgid "Navigation active button gradient top color"
+msgstr "Övre gradientfärg på aktiv knapp i navigeringslisten"
+
+#: ../../view/theme/redbasic/php/config.php:109
+msgid "Navigation active button gradient bottom color"
+msgstr "Undre gradientfärg på aktiv knapp i navigeringslisten"
+
+#: ../../view/theme/redbasic/php/config.php:110
+msgid "Navigation bar border color "
+msgstr "Färg på navigeringslistens kant"
+
+#: ../../view/theme/redbasic/php/config.php:111
+msgid "Navigation bar icon color "
+msgstr "Färg på ikoner i navigeringslisten"
+
+#: ../../view/theme/redbasic/php/config.php:112
+msgid "Navigation bar active icon color "
+msgstr "Färg på aktiv ikon i navigeringslisten"
+
+#: ../../view/theme/redbasic/php/config.php:113
+msgid "link color"
+msgstr "Länkfärg"
+
+#: ../../view/theme/redbasic/php/config.php:114
+msgid "Set font-color for banner"
+msgstr "Välj textfärg för sidhuvudet"
+
+#: ../../view/theme/redbasic/php/config.php:115
+msgid "Set the background color"
+msgstr "Välj bakgrundsfärg"
+
+#: ../../view/theme/redbasic/php/config.php:116
+msgid "Set the background image"
+msgstr "Välj bakgrundsbild"
+
+#: ../../view/theme/redbasic/php/config.php:117
+msgid "Set the background color of items"
+msgstr "Välj bakgrundsfärg för inlägg"
+
+#: ../../view/theme/redbasic/php/config.php:118
+msgid "Set the background color of comments"
+msgstr "Välj bakgrundsfärg för kommentarer"
+
+#: ../../view/theme/redbasic/php/config.php:119
+msgid "Set the border color of comments"
+msgstr "Välj kantfärg för kommentarer"
+
+#: ../../view/theme/redbasic/php/config.php:120
+msgid "Set the indent for comments"
+msgstr "Välj indrag för kommentarer"
+
+#: ../../view/theme/redbasic/php/config.php:121
+msgid "Set the basic color for item icons"
+msgstr "Välj basfärg för inläggsikoner"
+
+#: ../../view/theme/redbasic/php/config.php:122
+msgid "Set the hover color for item icons"
+msgstr "Välj färg på inläggsikon under muspekare"
-#: ../../view/theme/blogga/view/theme/blog/config.php:70
-#: ../../view/theme/blogga/php/config.php:70
-msgid "Header image"
-msgstr "Rubrikbild"
+#: ../../view/theme/redbasic/php/config.php:123
+msgid "Set font-size for the entire application"
+msgstr "Välj textstorlek för hela applikationen"
-#: ../../view/theme/blogga/view/theme/blog/config.php:71
-#: ../../view/theme/blogga/php/config.php:71
-msgid "Header image only on profile pages"
-msgstr "Rubrikbild endast på profilsidor"
+#: ../../view/theme/redbasic/php/config.php:125
+msgid "Set font-color for posts and comments"
+msgstr "Välj textfärg för inlägg och kommentarer"
+
+#: ../../view/theme/redbasic/php/config.php:126
+msgid "Set radius of corners"
+msgstr "Välj hörnradie"
+
+#: ../../view/theme/redbasic/php/config.php:127
+msgid "Set shadow depth of photos"
+msgstr "Välj skuggdjup för foton"
+
+#: ../../view/theme/redbasic/php/config.php:128
+msgid "Set maximum width of conversation regions"
+msgstr "Välj maxbredd på konversationsfält"
+
+#: ../../view/theme/redbasic/php/config.php:129
+msgid "Center conversation regions"
+msgstr "Centrera konversationsfält"
+
+#: ../../view/theme/redbasic/php/config.php:130
+msgid "Set minimum opacity of nav bar - to hide it"
+msgstr "Välj lägsta opacitet för navigeringslisten - för att dölja den"
+
+#: ../../view/theme/redbasic/php/config.php:131
+msgid "Set size of conversation author photo"
+msgstr "Välj storlek på foto för trådskapare"
+
+#: ../../view/theme/redbasic/php/config.php:132
+msgid "Set size of followup author photos"
+msgstr "Välj storlek på svarande personers foton"
+
+#: ../../view/theme/redbasic/php/config.php:133
+msgid "Sloppy photo albums"
+msgstr "Oordnade fotoalbum"
+
+#: ../../view/theme/redbasic/php/config.php:133
+msgid "Are you a clean desk or a messy desk person?"
+msgstr "Föredrar du ett tomt eller stökigt skrivbord?"
-#: ../../boot.php:1252
+#: ../../boot.php:1345
#, php-format
msgid "Update %s failed. See error logs."
msgstr "Uppdatering %s misslyckades. Se felloggar."
-#: ../../boot.php:1255
+#: ../../boot.php:1348
#, php-format
msgid "Update Error at %s"
msgstr "Uppdateringsfel på %s"
-#: ../../boot.php:1419
+#: ../../boot.php:1515
msgid ""
"Create an account to access services and applications within the Red Matrix"
msgstr "Skapa ett konto för att komma åt tjänster och applikationer inom Red Matrix"
-#: ../../boot.php:1447
+#: ../../boot.php:1543
msgid "Password"
msgstr "Lösenord"
-#: ../../boot.php:1448
+#: ../../boot.php:1544
msgid "Remember me"
msgstr "Kom ihåg mig"
-#: ../../boot.php:1453
+#: ../../boot.php:1547
msgid "Forgot your password?"
msgstr "Glömt lösenordet?"
-#: ../../boot.php:1518
+#: ../../boot.php:1628
msgid "permission denied"
msgstr "behörighet saknas"
-#: ../../boot.php:1519
+#: ../../boot.php:1629
msgid "Got Zot?"
msgstr "Got Zot?"
-#: ../../boot.php:1949
+#: ../../boot.php:2112
msgid "toggle mobile"
msgstr "växla mobil"
diff --git a/view/sv/passchanged_eml.tpl b/view/sv/passchanged_eml.tpl
index f0ef1a755..222a6a40a 100644
--- a/view/sv/passchanged_eml.tpl
+++ b/view/sv/passchanged_eml.tpl
@@ -1,7 +1,8 @@
Hej {{$username}},
- Ditt lösenord har bytts enligt begäran. Spara den här informationen
-(eller byt genast lösenordet till något du kan komma ihåg).
+ Ditt lösenord har bytts enligt begäran. Spara den här
+informationen (eller byt genast lösenordet till något du
+kan komma ihåg).
Dina inloggningsuppgifter är:
@@ -16,4 +17,4 @@ Du kan ändra lösenordet från kontoinställningarna när du har loggat in.
Hälsningar,
{{$sitename}}-administratören
-
+ \ No newline at end of file
diff --git a/view/sv/register_open_eml.tpl b/view/sv/register_open_eml.tpl
index 248b45246..e0446c700 100644
--- a/view/sv/register_open_eml.tpl
+++ b/view/sv/register_open_eml.tpl
@@ -1,19 +1,19 @@
-Ett konto för den här e-postadressen har skapats på {{$sitename}}.
+Ett konto för den här e-postadressen har skapats på {{$sitename}}.
Inloggningsuppgifterna är:
Serveradress: {{$siteurl}}
Användarnamn: {{$email}}
Lösenord: (lösenordet som angavs vid registreringen)
-Om kontot skapades utan din vetskap och inte är önskat kan du besöka
-webbplatsen och återställa lösenordet. Det låter dig ta bort kontot via
-länkarna på sidan Inställningar, och vi ber om ursäkt om detta har lett
-till besvär.
+Om kontot skapades utan din vetskap och inte är önskat kan du besöka
+webbplatsen och återställa lösenordet. Det låter dig ta bort kontot via
+länkarna på sidan Inställningar, och vi ber om ursäkt om detta har lett
+till besvär.
Tack och välkommen till {{$sitename}}.
Hälsningar,
{{$sitename}}-administratören
-
+ \ No newline at end of file
diff --git a/view/sv/register_verify_eml.tpl b/view/sv/register_verify_eml.tpl
index beb4f3ad6..a2d319c4e 100644
--- a/view/sv/register_verify_eml.tpl
+++ b/view/sv/register_verify_eml.tpl
@@ -1,6 +1,6 @@
-En begäran om registrering av en ny användare har mottagits på
-{{$sitename}} och behöver ditt godkännande.
+En begäran om registrering av en ny användare har mottagits på
+{{$sitename}} och behöver ditt godkännande.
Inloggningsuppgifterna är:
@@ -22,4 +22,3 @@ För att avslå begäran och ta bort kontot, besök:
Tack.
-
diff --git a/view/sv/register_verify_member.tpl b/view/sv/register_verify_member.tpl
new file mode 100644
index 000000000..0e9dbb651
--- /dev/null
+++ b/view/sv/register_verify_member.tpl
@@ -0,0 +1,24 @@
+
+Tack för att du har skapat ett konto på {{$sitename}}.
+
+Dina inloggningsuppgifter är:
+
+Serveradress: {{$siteurl}}
+Användarnamn: {{$email}}
+
+Logga in med lösenordet som du valde vid registreringen.
+
+Vi behöver bekräfta din e-postadress för att ge dig full åtkomst.
+
+Om du registrerade det här kontot, följ den här länken:
+
+{{$siteurl}}/regver/allow/{{$hash}}
+
+
+För att avbryta registreringen och ta bort kontot, gå till:
+
+
+{{$siteurl}}/regver/deny/{{$hash}}
+
+
+Tack.
diff --git a/view/sv/request_notify_eml.tpl b/view/sv/request_notify_eml.tpl
deleted file mode 100644
index e0b165258..000000000
--- a/view/sv/request_notify_eml.tpl
+++ /dev/null
@@ -1,17 +0,0 @@
-
-Hej {{$myname}},
-
-Du har precis fått en kontaktförfrågan på {{$sitename}}
-
-från '{{$requestor}}'.
-
-Du kan besöka profilen på {{$url}}.
-
-Logga in på din server och se hela presentationen och
-godkänn eller ignorera/avslå förfrågan.
-
-{{$siteurl}}
-
-Hälsningar,
-
- {{$sitename}}-administratören
diff --git a/view/sv/strings.php b/view/sv/strings.php
index 99dde6bed..7cfc355ea 100644
--- a/view/sv/strings.php
+++ b/view/sv/strings.php
@@ -5,131 +5,126 @@ function string_plural_select_sv($n){
return ($n != 1);;
}}
;
+$a->strings["Cannot locate DNS info for database server '%s'"] = "Kan inte hitta DNS-information för databasserver '%s'";
+$a->strings["Profile Photos"] = "Profilfoton";
+$a->strings["Permission denied"] = "Behörighet saknas";
+$a->strings["(Unknown)"] = "(Okänt)";
+$a->strings["Visible to anybody on the internet."] = "Kan ses av vem som helst på Internet.";
+$a->strings["Visible to you only."] = "Kan bara ses av dig.";
+$a->strings["Visible to anybody in this network."] = "Kan ses av alla på det här nätverket.";
+$a->strings["Visible to anybody authenticated."] = "Kan ses av alla inloggade.";
+$a->strings["Visible to anybody on %s."] = "Kan ses av alla på %s.";
+$a->strings["Visible to all connections."] = "Kan ses av alla kontakter.";
+$a->strings["Visible to approved connections."] = "Kan ses av godkända kontakter.";
+$a->strings["Visible to specific connections."] = "Kan ses av valda kontakter.";
+$a->strings["Item not found."] = "Posten hittades inte.";
+$a->strings["Permission denied."] = "Behörighet saknas.";
+$a->strings["Collection not found."] = "Kretsen hittades inte.";
+$a->strings["Collection is empty."] = "Kretsen är tom.";
+$a->strings["Collection: %s"] = "Krets: %s";
+$a->strings["Connection: %s"] = "Kontakt: %s";
+$a->strings["Connection not found."] = "Kontakten hittades inte.";
+$a->strings["Edit"] = "Redigera";
+$a->strings["No recipient provided."] = "Ingen mottagare angiven.";
+$a->strings["[no subject]"] = "[inget ämne]";
+$a->strings["Unable to determine sender."] = "Kunde inte avgöra vem som är avsändare.";
+$a->strings["Stored post could not be verified."] = "Den sparade posten kunde inte verifieras.";
+$a->strings["view full size"] = "visa full storlek";
+$a->strings["Can view my normal stream and posts"] = "Kan se mina normala strömmar och inlägg";
+$a->strings["Can view my default channel profile"] = "Kan se min standardkanalprofil";
+$a->strings["Can view my photo albums"] = "Kan se mina fotoalbum";
+$a->strings["Can view my connections"] = "Kan se mina kontakter";
+$a->strings["Can view my file storage"] = "Kan se mitt filutrymme";
+$a->strings["Can view my webpages"] = "Kan se mina webbsidor";
+$a->strings["Can send me their channel stream and posts"] = "Kan skicka sina kanalströmmar och inlägg till mig";
+$a->strings["Can post on my channel page (\"wall\")"] = "Kan posta inlägg på min kanalsida (\"vägg\")";
+$a->strings["Can comment on or like my posts"] = "Kan kommentera eller gilla mina inlägg";
+$a->strings["Can send me private mail messages"] = "Kan skicka privata meddelanden till mig";
+$a->strings["Can post photos to my photo albums"] = "Kan lägga till foton i mitt fotoalbum";
+$a->strings["Can like/dislike stuff"] = "Kan gilla/ogilla saker";
+$a->strings["Profiles and things other than posts/comments"] = "Profiler och annat än inlägg/kommentarer";
+$a->strings["Can forward to all my channel contacts via post @mentions"] = "Kan vidarebefordra till alla mina kanalkontakter genom @omnämnanden";
+$a->strings["Advanced - useful for creating group forum channels"] = "Avancerat - användbart för att skapa kanaler för gruppforum";
+$a->strings["Can chat with me (when available)"] = "Kan chatta med mig (när tillgänglig)";
+$a->strings["Can write to my file storage"] = "Har skrivrättigheter i mitt filutrymme";
+$a->strings["Can edit my webpages"] = "Kan redigera mina webbsidor";
+$a->strings["Can source my public posts in derived channels"] = "Kan använda mina offentliga inlägg i kanaler nedströms";
+$a->strings["Somewhat advanced - very useful in open communities"] = "Ganska avancerat - väldigt användbart i öppna gemenskaper";
+$a->strings["Can administer my channel resources"] = "Kan administrera mina kanalresurser";
+$a->strings["Extremely advanced. Leave this alone unless you know what you are doing"] = "Extremt avancerat. Låt detta vara om du inte vet vad du gör";
+$a->strings["Social Networking"] = "Socialt nätverkande";
+$a->strings["Mostly Public"] = "Mestadels offentligt";
+$a->strings["Restricted"] = "Begränsat";
+$a->strings["Private"] = "Privat";
+$a->strings["Community Forum"] = "Gemenskapsforum";
+$a->strings["Feed Republish"] = "Vidarepublicering av flöde";
+$a->strings["Special Purpose"] = "Särskilt syfte";
+$a->strings["Celebrity/Soapbox"] = "Kändis/talarstol";
+$a->strings["Group Repository"] = "Gruppförråd";
+$a->strings["Other"] = "Annat";
+$a->strings["Custom/Expert Mode"] = "Anpassat/expertläge";
+$a->strings["created a new post"] = "skapade ett nytt inlägg";
+$a->strings["commented on %s's post"] = "kommenterade %ss inlägg";
+$a->strings["Tags"] = "Taggar";
$a->strings["Categories"] = "Kategorier";
-$a->strings["Connect"] = "Ta kontakt";
-$a->strings["Ignore/Hide"] = "Ignorera/göm";
-$a->strings["Suggestions"] = "Förslag";
-$a->strings["See more..."] = "Se fler...";
-$a->strings["You have %1$.0f of %2$.0f allowed connections."] = "Du har %1$.0f av %2$.0f tillåtna kontakter.";
-$a->strings["Add New Connection"] = "Lägg till ny kontakt";
-$a->strings["Enter the channel address"] = "Ange kanaladressen";
-$a->strings["Example: bob@example.com, http://example.com/barbara"] = "Exempel: bob@example.com, http://example.com/barbara";
-$a->strings["Notes"] = "Anteckningar";
-$a->strings["Save"] = "Spara";
-$a->strings["Remove term"] = "Ta bort uttryck";
-$a->strings["Saved Searches"] = "Sparade sökningar";
-$a->strings["add"] = "lägg till";
-$a->strings["Saved Folders"] = "Sparade mappar";
-$a->strings["Everything"] = "Allt";
-$a->strings["Archives"] = "Arkiv";
-$a->strings["Refresh"] = "Ladda om";
-$a->strings["Me"] = "Mig själv";
-$a->strings["Best Friends"] = "Bästa vänner";
-$a->strings["Friends"] = "Vänner";
-$a->strings["Co-workers"] = "Kollegor";
-$a->strings["Former Friends"] = "Tidigare vänner";
-$a->strings["Acquaintances"] = "Bekanta";
-$a->strings["Everybody"] = "Alla";
-$a->strings["Account settings"] = "Kontoinställningar";
-$a->strings["Channel settings"] = "Kanalinställningar";
-$a->strings["Additional features"] = "Tilläggsfunktioner";
-$a->strings["Feature settings"] = "Funktionsinställningar";
-$a->strings["Display settings"] = "Utseende";
-$a->strings["Connected apps"] = "Anslutna appar";
-$a->strings["Export channel"] = "Exportera kanal";
-$a->strings["Automatic Permissions (Advanced)"] = "Automatiska rättigheter (avancerat)";
-$a->strings["Premium Channel Settings"] = "Inställningar för premiumkanal";
-$a->strings["Channel Sources"] = "Kanalkällor";
-$a->strings["Settings"] = "Inställningar";
-$a->strings["Check Mail"] = "Hämta meddelanden";
-$a->strings["New Message"] = "Nytt meddelande";
-$a->strings["Chat Rooms"] = "Chattrum";
-$a->strings["Bookmarked Chatrooms"] = "Bokmärkta chattrum";
-$a->strings["Suggested Chatrooms"] = "Föreslagna chattrum";
+$a->strings["Keywords"] = "Nyckelord";
+$a->strings["have"] = "har";
+$a->strings["has"] = "har";
+$a->strings["want"] = "vill ha";
+$a->strings["wants"] = "vill ha";
+$a->strings["like"] = "gilla";
+$a->strings["likes"] = "gillar";
+$a->strings["dislike"] = "ogilla";
+$a->strings["dislikes"] = "ogillar";
+$a->strings["__ctx:noun__ Like"] = array(
+ 0 => "gillar detta",
+ 1 => "gillar detta",
+);
+$a->strings["New Page"] = "Ny sida";
+$a->strings["View"] = "Visa";
+$a->strings["Preview"] = "Förhandsgranska";
+$a->strings["Actions"] = "Åtgärder";
+$a->strings["Page Link"] = "Länk";
+$a->strings["Title"] = "Titel";
+$a->strings["Created"] = "Skapad";
+$a->strings["Edited"] = "Ändrad";
+$a->strings["Embedded content"] = "Inbäddat innehåll";
+$a->strings["Embedding disabled"] = "Inbäddning inaktiverat";
+$a->strings["Logged out."] = "Utloggad.";
+$a->strings["Failed authentication"] = "Inloggning misslyckades";
+$a->strings["Login failed."] = "Inloggning misslyckades.";
+$a->strings["Image exceeds website size limit of %lu bytes"] = "Bild överskrider webbplatsens storleksbegränsning på %lu byte";
+$a->strings["Image file is empty."] = "Bildfil är tom.";
+$a->strings["Unable to process image"] = "Kunde inte bearbeta bild";
+$a->strings["Photo storage failed."] = "Fotolagring misslyckades.";
+$a->strings["Photo Albums"] = "Fotoalbum";
+$a->strings["Upload New Photos"] = "Ladda upp nya foton";
$a->strings[" and "] = " och ";
$a->strings["public profile"] = "offentlig profil";
$a->strings["%1\$s changed %2\$s to &ldquo;%3\$s&rdquo;"] = "%1\$s ändrade %2\$s till &quot;%3\$s&quot;";
$a->strings["Visit %1\$s's %2\$s"] = "Besök %1\$ss %2\$s";
$a->strings["%1\$s has an updated %2\$s, changing %3\$s."] = "%1\$s har en uppdaterad %2\$s (har ändrat %3\$s).";
-$a->strings["Logout"] = "Logga ut";
-$a->strings["End this session"] = "Avsluta sessionen";
-$a->strings["Home"] = "Hem";
-$a->strings["Your posts and conversations"] = "Dina inlägg och konversationer";
-$a->strings["View Profile"] = "Visa profil";
-$a->strings["Your profile page"] = "Din profilsida";
-$a->strings["Edit Profiles"] = "Redigera profiler";
-$a->strings["Manage/Edit profiles"] = "Hantera/redigera profiler";
-$a->strings["Photos"] = "Foton";
-$a->strings["Your photos"] = "Dina foton";
-$a->strings["Files"] = "Filer";
-$a->strings["Your files"] = "Dina filer";
-$a->strings["Chat"] = "Chatt";
-$a->strings["Your chatrooms"] = "Dina chattrum";
-$a->strings["Events"] = "Händelser";
-$a->strings["Your events"] = "Dina händelser";
-$a->strings["Bookmarks"] = "Bokmärken";
-$a->strings["Your bookmarks"] = "Dina bokmärken";
-$a->strings["Webpages"] = "Webbsidor";
-$a->strings["Your webpages"] = "Dina webbsidor";
-$a->strings["Login"] = "Logga in";
-$a->strings["Sign in"] = "Logga in";
-$a->strings["%s - click to logout"] = "%s - klicka för att logga ut";
-$a->strings["Click to authenticate to your home hub"] = "Klicka för att autentisera mot din hemmahubb";
-$a->strings["Home Page"] = "Hemsida";
-$a->strings["Register"] = "Registrera";
-$a->strings["Create an account"] = "Skapa ett konto";
-$a->strings["Help"] = "Hjälp";
-$a->strings["Help and documentation"] = "Hjälp och dokumentation";
-$a->strings["Apps"] = "Appar";
-$a->strings["Addon applications, utilities, games"] = "Tilläggsapplikationer, verktyg, spel";
-$a->strings["Search"] = "Sök";
-$a->strings["Search site content"] = "Sök innehåll";
-$a->strings["Directory"] = "Katalog";
-$a->strings["Channel Locator"] = "Kanalfinnare";
-$a->strings["Matrix"] = "Matris";
-$a->strings["Your matrix"] = "Din matris";
-$a->strings["Mark all matrix notifications seen"] = "Märk alla matrisnotifieringar som lästa";
-$a->strings["Channel Home"] = "Kanalhem";
-$a->strings["Channel home"] = "Kanalhem";
-$a->strings["Mark all channel notifications seen"] = "Märk alla kanalnotifieringar som lästa";
-$a->strings["Connections"] = "Kontakter";
-$a->strings["Notices"] = "Meddelanden";
-$a->strings["Notifications"] = "Notifieringar";
-$a->strings["See all notifications"] = "Se alla notifieringar";
-$a->strings["Mark all system notifications seen"] = "Märk alla systemnotifieringar som lästa";
-$a->strings["Mail"] = "Privat meddelande";
-$a->strings["Private mail"] = "Privat meddelande";
-$a->strings["See all private messages"] = "Se alla privata meddelanden";
-$a->strings["Mark all private messages seen"] = "Märk alla privata meddelanden som lästa";
-$a->strings["Inbox"] = "Inkorg";
-$a->strings["Outbox"] = "Utkorg";
-$a->strings["Event Calendar"] = "Kalender";
-$a->strings["See all events"] = "Se alla händelser";
-$a->strings["Mark all events seen"] = "Märk alla händelser som lästa";
-$a->strings["Channel Select"] = "Välj kanal";
-$a->strings["Manage Your Channels"] = "Hantera dina kanaler";
-$a->strings["Account/Channel Settings"] = "Konto-/kanalinställningar";
-$a->strings["Manage/Edit Friends and Connections"] = "Hantera/redigera vänner och kontakter";
-$a->strings["Admin"] = "Administration";
-$a->strings["Site Setup and Configuration"] = "Serverinställning och -konfiguration";
-$a->strings["Nothing new here"] = "Inget nytt här";
-$a->strings["Please wait..."] = "Vänta...";
+$a->strings["Attachments:"] = "Bilagor:";
$a->strings["l F d, Y \\@ g:i A"] = "l j F Y \\k\\l. H.i";
+$a->strings["Redmatrix event notification:"] = "Händelsenotifiering från Redmatrix:";
$a->strings["Starts:"] = "Börjar:";
$a->strings["Finishes:"] = "Slutar:";
$a->strings["Location:"] = "Plats:";
-$a->strings["Public Timeline"] = "Offentlig tidslinje";
-$a->strings["New window"] = "Nytt fönster";
-$a->strings["Open the selected location in a different window or browser tab"] = "Öppna den valda platsen i ett annat fönster eller en annan webbläsarflik";
$a->strings["General Features"] = "Allmänna funktioner";
$a->strings["Content Expiration"] = "Tidsbegränsat innehåll";
$a->strings["Remove posts/comments and/or private messages at a future time"] = "Ta bort inlägg/kommentarer och/eller privata meddelanden efter en tid";
$a->strings["Multiple Profiles"] = "Flera profiler";
$a->strings["Ability to create multiple profiles"] = "Möjlighet att skapa flera profiler";
+$a->strings["Advanced Profiles"] = "Avancerade profiler";
+$a->strings["Additional profile sections and selections"] = "Fler profilinställningar";
+$a->strings["Profile Import/Export"] = "Profilimport/-export";
+$a->strings["Save and load profile details across sites/channels"] = "Spara och ladda profiluppgifter mellan webbplatser/kanaler";
$a->strings["Web Pages"] = "Webbsidor";
$a->strings["Provide managed web pages on your channel"] = "Tillhandahåll ordnade webbsidor i din kanal";
$a->strings["Private Notes"] = "Privata anteckningar";
$a->strings["Enables a tool to store notes and reminders"] = "Aktivera ett verktyg för att spara anteckningar och påminnelser";
+$a->strings["Navigation Channel Select"] = "Kanalväljare i navigation";
+$a->strings["Change channels directly from within the navigation dropdown menu"] = "Välj kanal direkt från navigationslistens rullgardinsmeny";
$a->strings["Extended Identity Sharing"] = "Utökad identitetsdelning";
$a->strings["Share your identity with all websites on the internet. When disabled, identity is only shared with sites in the matrix."] = "Dela din identitet med alla webbplatser på Internet. Om inaktiverat är identiteten bara delad med platser i matrisen.";
$a->strings["Expert Mode"] = "Expertläge";
@@ -137,18 +132,20 @@ $a->strings["Enable Expert Mode to provide advanced configuration options"] = "A
$a->strings["Premium Channel"] = "Premiumkanal";
$a->strings["Allows you to set restrictions and terms on those that connect with your channel"] = "Låter dig ange begränsningar och villkor för dem som vill ansluta till din kanal";
$a->strings["Post Composition Features"] = "Skrivfunktioner";
-$a->strings["Richtext Editor"] = "Richtext-editor";
-$a->strings["Enable richtext editor"] = "Aktivera richtext-editor";
-$a->strings["Post Preview"] = "Förhandsgranskning";
-$a->strings["Allow previewing posts and comments before publishing them"] = "Tillåt förhandsgranskning av inlägg och kommentarer innan de publiceras";
-$a->strings["Automatically import channel content from other channels or feeds"] = "Importera kanalinnehåll från andra kanaler eller strömmar automatiskt";
+$a->strings["Use Markdown"] = "Använd Markdown";
+$a->strings["Allow use of \"Markdown\" to format posts"] = "Tillåt att \"Markdown\" används för att formatera inlägg";
+$a->strings["Channel Sources"] = "Kanalkällor";
+$a->strings["Automatically import channel content from other channels or feeds"] = "Importera kanalinnehåll från andra kanaler eller flöden automatiskt";
$a->strings["Even More Encryption"] = "Ytterligare kryptering";
$a->strings["Allow optional encryption of content end-to-end with a shared secret key"] = "Tillåt änd-till-änd-kryptering av innehåll med en delad hemlig nyckel";
+$a->strings["Flag Adult Photos"] = "Flagga vuxenfoton";
+$a->strings["Provide photo edit option to hide adult photos from default album view"] = "Gör det möjligt att inte visa foton som är olämpliga för barn i albums standardvy";
$a->strings["Network and Stream Filtering"] = "Nätverk och strömfiltrering";
$a->strings["Search by Date"] = "Sök på datum";
$a->strings["Ability to select posts by date ranges"] = "Tillåter urval av inlägg baserat på datum";
-$a->strings["Collections Filter"] = "Sammanhangsfilter";
-$a->strings["Enable widget to display Network posts only from selected collections"] = "Aktivera en väljare för att visa nätverksinlägg från enbart valda sammanhang";
+$a->strings["Collections Filter"] = "Kretsfilter";
+$a->strings["Enable widget to display Network posts only from selected collections"] = "Aktivera en väljare för att visa nätverksinlägg från enbart valda kretsar";
+$a->strings["Saved Searches"] = "Sparade sökningar";
$a->strings["Save search terms for re-use"] = "Spara sökuttryck för återanvändning";
$a->strings["Network Personal Tab"] = "Personlig nätverksflik";
$a->strings["Enable tab to display only Network posts that you've interacted on"] = "Aktivera en flik som visar endast de nätverksinlägg som du har deltagit i";
@@ -159,12 +156,11 @@ $a->strings["Filter stream activity by depth of relationships"] = "Filtrera strÃ
$a->strings["Suggest Channels"] = "Föreslå kanaler";
$a->strings["Show channel suggestions"] = "Visa förslag på kanaler";
$a->strings["Post/Comment Tools"] = "Inläggs-/kommentarsverktyg";
-$a->strings["Edit Sent Posts"] = "Redigera sända inlägg";
-$a->strings["Edit and correct posts and comments after sending"] = "Redigera och korrigera inlägg och kommentarer efter att de skickats";
$a->strings["Tagging"] = "Taggning";
$a->strings["Ability to tag existing posts"] = "Möjlighet att tagga befintliga inlägg";
$a->strings["Post Categories"] = "Inläggskategorier";
$a->strings["Add categories to your posts"] = "Lägg till kategorier till dina inlägg";
+$a->strings["Saved Folders"] = "Sparade mappar";
$a->strings["Ability to file posts under folders"] = "Möjlighet att lägga inlägg i mappar";
$a->strings["Dislike Posts"] = "Ogilla inlägg";
$a->strings["Ability to dislike posts/comments"] = "Möjlighet att ogilla inlägg/kommentarer";
@@ -172,12 +168,39 @@ $a->strings["Star Posts"] = "Märk inlägg";
$a->strings["Ability to mark special posts with a star indicator"] = "Möjlighet att märka speciella inlägg med en stjärna";
$a->strings["Tag Cloud"] = "Taggmoln";
$a->strings["Provide a personal tag cloud on your channel page"] = "Tillhandahåll ett personligt taggmoln på din kanalsida";
-$a->strings["Unknown | Not categorised"] = "Okänd | Inte kategoriserad";
-$a->strings["Block immediately"] = "Blockera genast";
-$a->strings["Shady, spammer, self-marketer"] = "Skum, spammare, självförhärligande";
-$a->strings["Known to me, but no opinion"] = "Känner till, men ingen åsikt";
-$a->strings["OK, probably harmless"] = "OK, antagligen harmlös";
-$a->strings["Reputable, has my trust"] = "Ansedd, har mitt förtroende";
+$a->strings["parent"] = "en nivå upp";
+$a->strings["Collection"] = "Samling";
+$a->strings["Principal"] = "Bas";
+$a->strings["Addressbook"] = "Adressbok";
+$a->strings["Calendar"] = "Kalender";
+$a->strings["Schedule Inbox"] = "Schemainkorg";
+$a->strings["Schedule Outbox"] = "Schemautkorg";
+$a->strings["Unknown"] = "Okända";
+$a->strings["%1\$s used"] = "%1\$s använt";
+$a->strings["%1\$s used of %2\$s (%3\$s&#37;)"] = "%1\$s använt av %2\$s (%3\$s&#37;)";
+$a->strings["Files"] = "Filer";
+$a->strings["Total"] = "Totalt";
+$a->strings["Name"] = "Namn";
+$a->strings["Type"] = "Typ";
+$a->strings["Size"] = "Storlek";
+$a->strings["Last Modified"] = "Senast ändrad";
+$a->strings["Delete"] = "Ta bort";
+$a->strings["Create new folder"] = "Skapa ny mapp";
+$a->strings["Create"] = "Skapa";
+$a->strings["Upload file"] = "Ladda upp fil";
+$a->strings["Upload"] = "Ladda upp";
+$a->strings["%1\$s's bookmarks"] = "%1\$ss bokmärken";
+$a->strings["Directory Options"] = "Katalogalternativ";
+$a->strings["Alphabetic"] = "Alfabetisk";
+$a->strings["Reverse Alphabetic"] = "Omvänd alfabetisk";
+$a->strings["Newest to Oldest"] = "Nyast till äldst";
+$a->strings["Oldest to Newest"] = "Äldst till nyast";
+$a->strings["Public Forums Only"] = "Endast offentliga forum";
+$a->strings["Sort"] = "Ordning";
+$a->strings["Enable Safe Search"] = "Aktivera säker sökning";
+$a->strings["Disable Safe Search"] = "Avaktivera säker sökning";
+$a->strings["Safe Mode"] = "Säkert läge";
+$a->strings["Default"] = "Standard";
$a->strings["Frequently"] = "Ofta";
$a->strings["Hourly"] = "Varje timme";
$a->strings["Twice daily"] = "Två gånger dagligen";
@@ -194,21 +217,291 @@ $a->strings["Zot!"] = "Zot!";
$a->strings["LinkedIn"] = "LinkedIn";
$a->strings["XMPP/IM"] = "XMPP/IM";
$a->strings["MySpace"] = "MySpace";
+$a->strings["Visible to your default audience"] = "Kan ses av förinställda mottagare";
+$a->strings["Show"] = "Visa";
+$a->strings["Don't show"] = "Visa inte";
+$a->strings["Permissions"] = "Behörighet";
+$a->strings["Close"] = "Stäng";
+$a->strings["prev"] = "föregående";
+$a->strings["first"] = "första";
+$a->strings["last"] = "sista";
+$a->strings["next"] = "nästa";
+$a->strings["older"] = "äldre";
+$a->strings["newer"] = "nyare";
+$a->strings["No connections"] = "Inga kontakter";
+$a->strings["%d Connection"] = array(
+ 0 => "%d kontakt",
+ 1 => "%d kontakter",
+);
+$a->strings["View Connections"] = "Visa kontakter";
+$a->strings["Search"] = "Sök";
+$a->strings["Save"] = "Spara";
+$a->strings["poke"] = "puffa";
+$a->strings["poked"] = "puffade";
+$a->strings["ping"] = "pinga";
+$a->strings["pinged"] = "pingade";
+$a->strings["prod"] = "stöt till";
+$a->strings["prodded"] = "stötte till";
+$a->strings["slap"] = "daska till";
+$a->strings["slapped"] = "daskade till";
+$a->strings["finger"] = "fingra på";
+$a->strings["fingered"] = "fingrade på";
+$a->strings["rebuff"] = "stöt tillbaka";
+$a->strings["rebuffed"] = "stötte tillbaks";
+$a->strings["happy"] = "glad";
+$a->strings["sad"] = "ledsen";
+$a->strings["mellow"] = "lugn";
+$a->strings["tired"] = "trött";
+$a->strings["perky"] = "uppåt";
+$a->strings["angry"] = "arg";
+$a->strings["stupified"] = "virrig";
+$a->strings["puzzled"] = "förbryllad";
+$a->strings["interested"] = "intresserad";
+$a->strings["bitter"] = "bitter";
+$a->strings["cheerful"] = "munter";
+$a->strings["alive"] = "pigg";
+$a->strings["annoyed"] = "irriterad";
+$a->strings["anxious"] = "bekymrad";
+$a->strings["cranky"] = "grinig";
+$a->strings["disturbed"] = "besvärad";
+$a->strings["frustrated"] = "frustrerad";
+$a->strings["depressed"] = "deprimerad";
+$a->strings["motivated"] = "motiverad";
+$a->strings["relaxed"] = "avslappnad";
+$a->strings["surprised"] = "förvånad";
+$a->strings["Monday"] = "måndag";
+$a->strings["Tuesday"] = "tisdag";
+$a->strings["Wednesday"] = "onsdag";
+$a->strings["Thursday"] = "torsdag";
+$a->strings["Friday"] = "fredag";
+$a->strings["Saturday"] = "lördag";
+$a->strings["Sunday"] = "söndag";
+$a->strings["January"] = "januari";
+$a->strings["February"] = "februari";
+$a->strings["March"] = "mars";
+$a->strings["April"] = "april";
+$a->strings["May"] = "maj";
+$a->strings["June"] = "juni";
+$a->strings["July"] = "juli";
+$a->strings["August"] = "augusti";
+$a->strings["September"] = "september";
+$a->strings["October"] = "oktober";
+$a->strings["November"] = "november";
+$a->strings["December"] = "december";
+$a->strings["unknown.???"] = "okänt.???";
+$a->strings["bytes"] = "byte";
+$a->strings["remove category"] = "ta bort kategori";
+$a->strings["remove from file"] = "ta bort från fil";
+$a->strings["Click to open/close"] = "Klicka för att öppna/stänga";
+$a->strings["Link to Source"] = "Länk till källa";
+$a->strings["Select a page layout: "] = "Välj en sidlayout: ";
+$a->strings["default"] = "standard";
+$a->strings["Page content type: "] = "Typ av sidinnehåll: ";
+$a->strings["Select an alternate language"] = "Välj ett alternativt språk";
$a->strings["photo"] = "foto";
$a->strings["event"] = "händelse";
-$a->strings["channel"] = "kanal";
$a->strings["status"] = "status";
$a->strings["comment"] = "kommentar";
+$a->strings["activity"] = "aktivitet";
+$a->strings["Design"] = "Design";
+$a->strings["Blocks"] = "Block";
+$a->strings["Menus"] = "Menyer";
+$a->strings["Layouts"] = "Layouter";
+$a->strings["Pages"] = "Sidor";
+$a->strings["%d invitation available"] = array(
+ 0 => "%d inbjudan tillgänglig",
+ 1 => "%d inbjudningar tillgängliga",
+);
+$a->strings["Advanced"] = "Avancerat";
+$a->strings["Find Channels"] = "Hitta kanaler";
+$a->strings["Enter name or interest"] = "Ange namn eller intresse";
+$a->strings["Connect/Follow"] = "Ta kontakt/följ";
+$a->strings["Examples: Robert Morgenstein, Fishing"] = "Exempel: Robert Morgenstein, Fiske";
+$a->strings["Find"] = "Sök";
+$a->strings["Channel Suggestions"] = "Kanalförslag";
+$a->strings["Random Profile"] = "Slumpvald profil";
+$a->strings["Invite Friends"] = "Bjud in vänner";
+$a->strings["Advanced example: name=fred and country=iceland"] = "Avancerat exempel: name=fred and country=iceland";
+$a->strings["Everything"] = "Allt";
+$a->strings["%d connection in common"] = array(
+ 0 => "%d gemensam kontakt",
+ 1 => "%d gemensamma kontakter",
+);
+$a->strings["show more"] = "visa fler";
+$a->strings["Red Matrix Notification"] = "Red Matrix-meddelande";
+$a->strings["redmatrix"] = "redmatrix";
+$a->strings["Thank You,"] = "Tack,";
+$a->strings["%s Administrator"] = "Administratören för %s";
+$a->strings["%s <!item_type!>"] = "%s <!item_type!>";
+$a->strings["[Red:Notify] New mail received at %s"] = "[Red:Meddelande] Nytt meddelande på %s";
+$a->strings["%1\$s, %2\$s sent you a new private message at %3\$s."] = "%1\$s, %2\$s skickade ett nytt privat meddelande till dig på %3\$s.";
+$a->strings["%1\$s sent you %2\$s."] = "%1\$s skickade %2\$s till dig.";
+$a->strings["a private message"] = "ett privat meddelande";
+$a->strings["Please visit %s to view and/or reply to your private messages."] = "Besök %s för att visa och/eller svara på dina privata meddelanden.";
+$a->strings["%1\$s, %2\$s commented on [zrl=%3\$s]a %4\$s[/zrl]"] = "%1\$s, %2\$s kommenterade [zrl=%3\$s]ett %4\$s[/zrl]";
+$a->strings["%1\$s, %2\$s commented on [zrl=%3\$s]%4\$s's %5\$s[/zrl]"] = "%1\$s, %2\$s kommenterade [zrl=%3\$s]%4\$ss %5\$s[/zrl]";
+$a->strings["%1\$s, %2\$s commented on [zrl=%3\$s]your %4\$s[/zrl]"] = "%1\$s, %2\$s kommenterade [zrl=%3\$s]ditt %4\$s[/zrl]";
+$a->strings["[Red:Notify] Comment to conversation #%1\$d by %2\$s"] = "[Red:Meddelande] Kommentar till konversation #%1\$d av %2\$s";
+$a->strings["%1\$s, %2\$s commented on an item/conversation you have been following."] = "%1\$s, %2\$s kommenterade en sak/konversation du har följt.";
+$a->strings["Please visit %s to view and/or reply to the conversation."] = "Besök %s för att visa och/eller svara på konversationen.";
+$a->strings["[Red:Notify] %s posted to your profile wall"] = "[Red:Meddelande] %s postade till din profilvägg";
+$a->strings["%1\$s, %2\$s posted to your profile wall at %3\$s"] = "%1\$s, %2\$s postade till din profilvägg på %3\$s";
+$a->strings["%1\$s, %2\$s posted to [zrl=%3\$s]your wall[/zrl]"] = "%1\$s, %2\$s postade till [zrl=%3\$s]din vägg[/zrl]";
+$a->strings["[Red:Notify] %s tagged you"] = "[Red:Meddelande] %s taggade dig";
+$a->strings["%1\$s, %2\$s tagged you at %3\$s"] = "%1\$s, %2\$s taggade dig på %3\$s";
+$a->strings["%1\$s, %2\$s [zrl=%3\$s]tagged you[/zrl]."] = "%1\$s, %2\$s [zrl=%3\$s]taggade dig[/zrl].";
+$a->strings["[Red:Notify] %1\$s poked you"] = "[Red:Meddelande] %1\$s puffade dig";
+$a->strings["%1\$s, %2\$s poked you at %3\$s"] = "%1\$s, %2\$s puffade dig på %3\$s";
+$a->strings["%1\$s, %2\$s [zrl=%2\$s]poked you[/zrl]."] = "%1\$s, %2\$s [zrl=%2\$s]puffade dig[/zrl].";
+$a->strings["[Red:Notify] %s tagged your post"] = "[Red:Meddelande] %s taggade ditt inlägg";
+$a->strings["%1\$s, %2\$s tagged your post at %3\$s"] = "%1\$s, %2\$s taggade ditt inlägg på %3\$s";
+$a->strings["%1\$s, %2\$s tagged [zrl=%3\$s]your post[/zrl]"] = "%1\$s, %2\$s taggade [zrl=%3\$s]ditt inlägg[/zrl]";
+$a->strings["[Red:Notify] Introduction received"] = "[Red:Meddelande] Presentation mottagen";
+$a->strings["%1\$s, you've received an new connection request from '%2\$s' at %3\$s"] = "%1\$s, du har fått en ny kontaktförfrågan från '%2\$s' på %3\$s";
+$a->strings["%1\$s, you've received [zrl=%2\$s]a new connection request[/zrl] from %3\$s."] = "%1\$s, du har fått [zrl=%2\$s]en ny kontaktförfrågan[/zrl] från %3\$s.";
+$a->strings["You may visit their profile at %s"] = "Du kan besöka deras profil på %s";
+$a->strings["Please visit %s to approve or reject the connection request."] = "Besök %s för att bevilja eller avslå kontaktförfrågan.";
+$a->strings["[Red:Notify] Friend suggestion received"] = "[Red:Meddelande] Vänförslag mottaget";
+$a->strings["%1\$s, you've received a friend suggestion from '%2\$s' at %3\$s"] = "%1\$s, du har fått ett vänförslag från '%2\$s' på %3\$s";
+$a->strings["%1\$s, you've received [zrl=%2\$s]a friend suggestion[/zrl] for %3\$s from %4\$s."] = "%1\$s, du har fått [zrl=%2\$s]ett vänförslag[/zrl] angående %3\$s från %4\$s.";
+$a->strings["Name:"] = "Namn:";
+$a->strings["Photo:"] = "Foto:";
+$a->strings["Please visit %s to approve or reject the suggestion."] = "Besök %s för att bevilja eller avslå förslaget.";
+$a->strings["[Red:Notify]"] = "[Red:Notifiering]";
+$a->strings["This event has been added to your calendar."] = "Händelsen har lagts till i din kalender.";
+$a->strings["A deleted group with this name was revived. Existing item permissions <strong>may</strong> apply to this group and any future members. If this is not what you intended, please create another group with a different name."] = "En borttagen grupp med det här namnet återskapades. Befintliga rättigheter till saker <strong>kan</strong> gälla för den här gruppen och alla framtida medlemmar. Om det här inte är vad du avsåg, skapa i stället en annan grupp med ett annat namn.";
+$a->strings["Default privacy group for new contacts"] = "Förvald integritetsgrupp för nya kontakter";
+$a->strings["All Channels"] = "Alla kanaler";
+$a->strings["edit"] = "redigera";
+$a->strings["Collections"] = "Kretsar";
+$a->strings["Edit collection"] = "Redigera krets";
+$a->strings["Create a new collection"] = "Skapa en ny krets";
+$a->strings["Channels not in any collection"] = "Kanaler inte i någon krets";
+$a->strings["add"] = "lägg till";
+$a->strings["Unable to obtain identity information from database"] = "Kunde inte hämta från databasen";
+$a->strings["Empty name"] = "Tomt namn";
+$a->strings["Name too long"] = "För långt namn";
+$a->strings["No account identifier"] = "Ingen kontoidentifierare";
+$a->strings["Nickname is required."] = "Smeknamn måste anges.";
+$a->strings["Reserved nickname. Please choose another."] = "Reserverat smeknamn. Välj ett annat.";
+$a->strings["Nickname has unsupported characters or is already being used on this site."] = "Smeknamnet innehåller otillåtna tecken eller är redan upptaget på den här servern.";
+$a->strings["Unable to retrieve created identity"] = "Kunde inte hämta den skapade identiteten";
+$a->strings["Default Profile"] = "Standardprofil";
+$a->strings["Friends"] = "Vänner";
+$a->strings["Requested channel is not available."] = "Den begärda kanalen är inte tillgänglig";
+$a->strings["Requested profile is not available."] = "Begärd profil är inte tillgänglig.";
+$a->strings["Connect"] = "Ta kontakt";
+$a->strings["Change profile photo"] = "Bytprofilfoto";
+$a->strings["Profiles"] = "Profiler";
+$a->strings["Manage/edit profiles"] = "Hantera/redigera profiler";
+$a->strings["Create New Profile"] = "Skapa ny profil";
+$a->strings["Edit Profile"] = "Redigera profil";
+$a->strings["Profile Image"] = "Profilbild";
+$a->strings["visible to everybody"] = "synlig för alla";
+$a->strings["Edit visibility"] = "Redigera synlighet";
+$a->strings["Gender:"] = "Kön:";
+$a->strings["Status:"] = "Status:";
+$a->strings["Homepage:"] = "Hemsida:";
+$a->strings["Online Now"] = "Online nu";
+$a->strings["g A l F d"] = "l j F \\k\\l G";
+$a->strings["F d"] = "j F";
+$a->strings["[today]"] = "[i dag]";
+$a->strings["Birthday Reminders"] = "Födelsedagspåminnelser";
+$a->strings["Birthdays this week:"] = "Födelsedagar den här veckan:";
+$a->strings["[No description]"] = "[Ingen beskrivning]";
+$a->strings["Event Reminders"] = "Händelsepåminnelser";
+$a->strings["Events this week:"] = "Händelser den här veckan:";
+$a->strings["Profile"] = "Profil";
+$a->strings["Full Name:"] = "Fullständigt namn:";
+$a->strings["Like this channel"] = "Gilla den här kanalen";
+$a->strings["j F, Y"] = "j F Y";
+$a->strings["j F"] = "j F";
+$a->strings["Birthday:"] = "Födelsedag:";
+$a->strings["Age:"] = "Ã…lder:";
+$a->strings["for %1\$d %2\$s"] = "i %1\$d %2\$s";
+$a->strings["Sexual Preference:"] = "Sexuell preferens:";
+$a->strings["Hometown:"] = "Hemort:";
+$a->strings["Tags:"] = "Taggar:";
+$a->strings["Political Views:"] = "Politisk åskådning:";
+$a->strings["Religion:"] = "Religion:";
+$a->strings["About:"] = "Om:";
+$a->strings["Hobbies/Interests:"] = "Fritidssysselsättning/intressen:";
+$a->strings["Likes:"] = "Gillar:";
+$a->strings["Dislikes:"] = "Ogillar:";
+$a->strings["Contact information and Social Networks:"] = "Kontaktinformation och sociala nätverk:";
+$a->strings["My other channels:"] = "Mina andra kanaler:";
+$a->strings["Musical interests:"] = "Musikintressen:";
+$a->strings["Books, literature:"] = "Böcker, litteratur:";
+$a->strings["Television:"] = "Tv:";
+$a->strings["Film/dance/culture/entertainment:"] = "Film/dans/kultur/underhållning:";
+$a->strings["Love/Romance:"] = "Kärlek/romantik:";
+$a->strings["Work/employment:"] = "Arbete/sysselsättning:";
+$a->strings["School/education:"] = "Skola/utbildning:";
+$a->strings["Like this thing"] = "Gilla den här saken";
+$a->strings["Not a valid email address"] = "Inte en giltig e-postadress";
+$a->strings["Your email domain is not among those allowed on this site"] = "Din e-postdomän är inte bland de som tillåts på den här servern";
+$a->strings["Your email address is already registered at this site."] = "Din e-postadress är redan registrerad på den här servern.";
+$a->strings["An invitation is required."] = "En inbjudan behövs.";
+$a->strings["Invitation could not be verified."] = "Inbjudningen kunde inte bekräftas.";
+$a->strings["Please enter the required information."] = "Ange den begärda informationen.";
+$a->strings["Failed to store account information."] = "Misslyckades att spara kontoinformation.";
+$a->strings["Registration confirmation for %s"] = "Registreringsbekräftelse för %s";
+$a->strings["Registration request at %s"] = "Registreringsförfrågan på %s";
+$a->strings["Administrator"] = "Administratör";
+$a->strings["your registration password"] = "ditt registreringslösenord";
+$a->strings["Registration details for %s"] = "Registreringsdetaljer för %s";
+$a->strings["Account approved."] = "Konto godkänt.";
+$a->strings["Registration revoked for %s"] = "Registrering avslagen för %s";
+$a->strings["Account verified. Please login."] = "Konto bekräftat. Du kan nu logga in.";
+$a->strings["Click here to upgrade."] = "Klicka här för att uppgradera.";
+$a->strings["This action exceeds the limits set by your subscription plan."] = "Den här funktionen går utanför vad som anges i ditt avtal.";
+$a->strings["This action is not available under your subscription plan."] = "Den här funktionen är inte tillgänglig med ditt avtal.";
+$a->strings["Channel is blocked on this site."] = "Kanalen är blockerad på den här servern.";
+$a->strings["Channel location missing."] = "Kanalplats saknas.";
+$a->strings["Response from remote channel was incomplete."] = "Svar från den andra kanalen var ofullständigt.";
+$a->strings["Channel was deleted and no longer exists."] = "Kanalen har tagits bort och finns inte längre.";
+$a->strings["Protocol disabled."] = "Protokoll inaktiverat.";
+$a->strings["Channel discovery failed."] = "Kanalsökning misslyckades.";
+$a->strings["local account not found."] = "hittade inte lokalt konto.";
+$a->strings["Cannot connect to yourself."] = "Du kan inte kontakta dig själv.";
+$a->strings["Public Timeline"] = "Offentlig tidslinje";
+$a->strings["Item was not found."] = "Posten hittades inte.";
+$a->strings["No source file."] = "Ingen källfil.";
+$a->strings["Cannot locate file to replace"] = "Kan inte hitta fil att ersätta";
+$a->strings["Cannot locate file to revise/update"] = "Kan inte hitta fil att revidera/uppdatera";
+$a->strings["File exceeds size limit of %d"] = "Filen överskrider storleksbegränsningen %d";
+$a->strings["You have reached your limit of %1$.0f Mbytes attachment storage."] = "Du har nått begränsningen %1$.0f megabyte utrymme för bilagor.";
+$a->strings["File upload failed. Possible system limit or action terminated."] = "Filuppladdning misslyckades. Möjlig systembegränsning eller avbruten åtgärd.";
+$a->strings["Stored file could not be verified. Upload failed."] = "Den lagrade filen kunde inte verifieras. Uppladdning misslyckad.";
+$a->strings["Path not available."] = "Sökväg inte tillgänglig.";
+$a->strings["Empty pathname"] = "Tom sökväg";
+$a->strings["duplicate filename or path"] = "filnamn eller sökväg finns redan";
+$a->strings["Path not found."] = "Sökväg hittas inte.";
+$a->strings["mkdir failed."] = "mkdir misslyckades.";
+$a->strings["database storage failed."] = "databaslagring misslyckades.";
+$a->strings["Missing room name"] = "Rumsnamn saknas";
+$a->strings["Duplicate room name"] = "Rumsnamnet finns redan";
+$a->strings["Invalid room specifier."] = "Ogiltig rumsbeskrivning.";
+$a->strings["Room not found."] = "Rummet hittades inte.";
+$a->strings["Room is full"] = "Rummet är fullt";
+$a->strings["Image/photo"] = "Bild/foto";
+$a->strings["Encrypted content"] = "Krypterat innehåll";
+$a->strings["Install design element: "] = "Installera designelement: ";
+$a->strings["QR code"] = "QR-kod";
+$a->strings["%1\$s wrote the following %2\$s %3\$s"] = "%1\$s skrev följande %2\$s %3\$s";
+$a->strings["post"] = "post";
+$a->strings["$1 spoiler"] = "$1 spoiler";
+$a->strings["$1 wrote:"] = "$1 skrev:";
+$a->strings["channel"] = "kanal";
$a->strings["%1\$s likes %2\$s's %3\$s"] = "%1\$s gillar %2\$ss %3\$s";
$a->strings["%1\$s doesn't like %2\$s's %3\$s"] = "%1\$s gillar inte %2\$ss %3\$s";
$a->strings["%1\$s is now connected with %2\$s"] = "%1\$s har nu kontakt med %2\$s";
$a->strings["%1\$s poked %2\$s"] = "%1\$s puffade %2\$s";
-$a->strings["poked"] = "puffade";
-$a->strings["%1\$s is currently %2\$s"] = "%1\$s är för tillfället %2\$s";
+$a->strings["__ctx:mood__ %1\$s is %2\$s"] = "%1\$s är %2\$s";
$a->strings["Select"] = "Välj";
-$a->strings["Delete"] = "Ta bort";
$a->strings["Private Message"] = "Privat meddelande";
-$a->strings["Message is verified"] = "Meddelandet är bekräftat";
+$a->strings["Message signature validated"] = "Meddelandesignatur bekräftad";
+$a->strings["Message signature incorrect"] = "Meddelandesignatur felaktig";
$a->strings["View %s's profile @ %s"] = "Visa %ss profil på %s";
$a->strings["Categories:"] = "Kategorier:";
$a->strings["Filed under:"] = "Postat under:";
@@ -223,6 +516,7 @@ $a->strings["Delete Selected Items"] = "Ta bort valda poster";
$a->strings["View Source"] = "Visa källa";
$a->strings["Follow Thread"] = "Följ tråd";
$a->strings["View Status"] = "Visa status";
+$a->strings["View Profile"] = "Visa profil";
$a->strings["View Photos"] = "Visa foton";
$a->strings["Matrix Activity"] = "Matrisaktivitet";
$a->strings["Edit Contact"] = "Redigera kontakt";
@@ -245,7 +539,7 @@ $a->strings[", and %d other people"] = array(
);
$a->strings["%s like this."] = "%s gillar det här.";
$a->strings["%s don't like this."] = "%s gillar inte det här.";
-$a->strings["Visible to <strong>everybody</strong>"] = "Synlig för <strong>alla</strong>";
+$a->strings["Visible to <strong>everybody</strong>"] = "Kan ses av <strong>alla</strong>";
$a->strings["Please enter a link URL:"] = "Ange en länkadress:";
$a->strings["Please enter a video link/URL:"] = "Ange en videolänkadress:";
$a->strings["Please enter an audio link/URL:"] = "Ange en ljudlänkadress";
@@ -253,7 +547,6 @@ $a->strings["Tag term:"] = "Tagguttryck";
$a->strings["Save to Folder:"] = "Spara i mapp:";
$a->strings["Where are you right now?"] = "Var är du just nu?";
$a->strings["Expires YYYY-MM-DD HH:MM"] = "Upphör YYYY-MM-DD HH:MM";
-$a->strings["Preview"] = "Förhandsgranska";
$a->strings["Share"] = "Dela";
$a->strings["Page link title"] = "Titel på sidlänk";
$a->strings["Post as"] = "Posta som";
@@ -271,8 +564,8 @@ $a->strings["Set your location"] = "Ange din plats";
$a->strings["set location"] = "ange plats";
$a->strings["Clear browser location"] = "Rensa webbläsarplats";
$a->strings["clear location"] = "rensa plats";
-$a->strings["Set title"] = "Ange titel";
-$a->strings["Categories (comma-separated list)"] = "Kategorier (kommaseparerad lista)";
+$a->strings["Title (optional)"] = "Titel (frivilligt)";
+$a->strings["Categories (optional, comma-separated list)"] = "Kategorier (frivilligt, kommaseparerad lista)";
$a->strings["Permission settings"] = "Behörighetsinställningar";
$a->strings["permissions"] = "behörighet";
$a->strings["Public post"] = "Offentligt inlägg";
@@ -299,22 +592,106 @@ $a->strings["Channel"] = "Kanal";
$a->strings["Status Messages and Posts"] = "Statusmeddelanden och inlägg";
$a->strings["About"] = "Om";
$a->strings["Profile Details"] = "Profildetaljer";
-$a->strings["Photo Albums"] = "Fotoalbum";
+$a->strings["Photos"] = "Foton";
$a->strings["Files and Storage"] = "Filer och lagring";
$a->strings["Chatrooms"] = "Chattrum";
-$a->strings["Events and Calendar"] = "Händelser och kalender";
+$a->strings["Bookmarks"] = "Bokmärken";
$a->strings["Saved Bookmarks"] = "Sparade bokmärken";
+$a->strings["Webpages"] = "Webbsidor";
$a->strings["Manage Webpages"] = "Hantera webbsidor";
+$a->strings["Apps"] = "Appar";
+$a->strings["System"] = "System";
+$a->strings["Create Personal App"] = "Skapa personlig app";
+$a->strings["Edit Personal App"] = "Redigera personlig app";
+$a->strings["Ignore/Hide"] = "Ignorera/göm";
+$a->strings["Suggestions"] = "Förslag";
+$a->strings["See more..."] = "Se fler...";
+$a->strings["You have %1$.0f of %2$.0f allowed connections."] = "Du har %1$.0f av %2$.0f tillåtna kontakter.";
+$a->strings["Add New Connection"] = "Lägg till ny kontakt";
+$a->strings["Enter the channel address"] = "Ange kanaladressen";
+$a->strings["Example: bob@example.com, http://example.com/barbara"] = "Exempel: bob@example.com, http://example.com/barbara";
+$a->strings["Notes"] = "Anteckningar";
+$a->strings["Remove term"] = "Ta bort uttryck";
+$a->strings["Archives"] = "Arkiv";
+$a->strings["Refresh"] = "Ladda om";
+$a->strings["Me"] = "Mig själv";
+$a->strings["Best Friends"] = "Bästa vänner";
+$a->strings["Co-workers"] = "Kollegor";
+$a->strings["Former Friends"] = "Tidigare vänner";
+$a->strings["Acquaintances"] = "Bekanta";
+$a->strings["Everybody"] = "Alla";
+$a->strings["Account settings"] = "Kontoinställningar";
+$a->strings["Channel settings"] = "Kanalinställningar";
+$a->strings["Additional features"] = "Tilläggsfunktioner";
+$a->strings["Feature settings"] = "Funktionsinställningar";
+$a->strings["Display settings"] = "Utseende";
+$a->strings["Connected apps"] = "Anslutna appar";
+$a->strings["Export channel"] = "Exportera kanal";
+$a->strings["Connection Default Permissions"] = "Standardbehörighet för kontakt";
+$a->strings["Premium Channel Settings"] = "Inställningar för premiumkanal";
+$a->strings["Settings"] = "Inställningar";
+$a->strings["Messages"] = "Meddelanden";
+$a->strings["Check Mail"] = "Hämta meddelanden";
+$a->strings["New Message"] = "Nytt meddelande";
+$a->strings["Chat Rooms"] = "Chattrum";
+$a->strings["Bookmarked Chatrooms"] = "Bokmärkta chattrum";
+$a->strings["Suggested Chatrooms"] = "Föreslagna chattrum";
+$a->strings["photo/image"] = "foto/bild";
+$a->strings["Invalid data packet"] = "Ogiltigt datapaket";
+$a->strings["Unable to verify channel signature"] = "Kunde inte bekräfta kanalsignatur";
+$a->strings["Unable to verify site signature for %s"] = "Kunde inte bekräfta signatur för servern %s";
+$a->strings["Save to Folder"] = "Spara i mapp";
+$a->strings["View all"] = "Visa alla";
+$a->strings["__ctx:noun__ Dislike"] = array(
+ 0 => "ogillar detta",
+ 1 => "ogillar detta",
+);
+$a->strings["Add Star"] = "Märk";
+$a->strings["Remove Star"] = "Ta bort märkning";
+$a->strings["Toggle Star Status"] = "Växla märkning";
+$a->strings["starred"] = "märkt";
+$a->strings["Add Tag"] = "Lägg till en tagg";
+$a->strings["I like this (toggle)"] = "Jag gillar det här (växla)";
+$a->strings["I don't like this (toggle)"] = "Jag gillar inte det här (växla)";
+$a->strings["Share This"] = "Dela det här";
+$a->strings["share"] = "dela";
+$a->strings["%d comment"] = array(
+ 0 => "%d kommentar",
+ 1 => "%d kommentarer",
+);
+$a->strings["View %s's profile - %s"] = "Visa %ss profil - %s";
+$a->strings["to"] = "till";
+$a->strings["via"] = "via";
+$a->strings["Wall-to-Wall"] = "Vägg-till-vägg";
+$a->strings["via Wall-To-Wall:"] = "via vägg-till-vägg";
+$a->strings["Save Bookmarks"] = "Spara bokmärken";
+$a->strings["Add to Calendar"] = "Lägg till kalendern";
+$a->strings["Mark all seen"] = "Märk alla som lästa";
+$a->strings["__ctx:noun__ Likes"] = "gillar detta";
+$a->strings["__ctx:noun__ Dislikes"] = "ogillar detta";
+$a->strings["[+] show all"] = "[+] visa alla";
+$a->strings["This is you"] = "Det här är du";
+$a->strings["Comment"] = "Kommentera";
+$a->strings["Submit"] = "Skicka";
+$a->strings["Bold"] = "Fet";
+$a->strings["Italic"] = "Kursiv";
+$a->strings["Underline"] = "Understruken";
+$a->strings["Quote"] = "Citat";
+$a->strings["Code"] = "Kod";
+$a->strings["Image"] = "Bild";
+$a->strings["Link"] = "Länk";
+$a->strings["Video"] = "Video";
$a->strings["Miscellaneous"] = "Övrigt";
-$a->strings["year"] = "Ã¥r";
-$a->strings["month"] = "månad";
-$a->strings["day"] = "dag";
+$a->strings["YYYY-MM-DD or MM-DD"] = "Ã…Ã…Ã…Ã…-MM-DD eller MM-DD";
$a->strings["never"] = "aldrig";
$a->strings["less than a second ago"] = "mindre än en sekund sedan";
+$a->strings["year"] = "Ã¥r";
$a->strings["years"] = "Ã¥r";
+$a->strings["month"] = "månad";
$a->strings["months"] = "månader";
$a->strings["week"] = "vecka";
$a->strings["weeks"] = "veckor";
+$a->strings["day"] = "dag";
$a->strings["days"] = "dagar";
$a->strings["hour"] = "timme";
$a->strings["hours"] = "timmar";
@@ -323,33 +700,46 @@ $a->strings["minutes"] = "minuter";
$a->strings["second"] = "sekund";
$a->strings["seconds"] = "sekunder";
$a->strings["%1\$d %2\$s ago"] = "%1\$d %2\$s sedan";
-$a->strings["Cannot locate DNS info for database server '%s'"] = "Kan inte hitta DNS-information för databasserver '%s'";
-$a->strings["Image/photo"] = "Bild/foto";
-$a->strings["Encrypted content"] = "Krypterat innehåll";
-$a->strings["QR code"] = "QR-kod";
-$a->strings["%1\$s wrote the following %2\$s %3\$s"] = "%1\$s skrev följande %2\$s %3\$s";
-$a->strings["post"] = "post";
-$a->strings["$1 wrote:"] = "$1 skrev:";
-$a->strings["A deleted group with this name was revived. Existing item permissions <strong>may</strong> apply to this group and any future members. If this is not what you intended, please create another group with a different name."] = "En borttagen grupp med det här namnet återskapades. Befintliga rättigheter till saker <strong>kan</strong> gälla för den här gruppen och alla framtida medlemmar. Om det här inte är vad du avsåg, skapa i stället en annan grupp med ett annat namn.";
-$a->strings["Default privacy group for new contacts"] = "Förvald integritetsgrupp för nya kontakter";
-$a->strings["All Channels"] = "Alla kanaler";
-$a->strings["edit"] = "redigera";
-$a->strings["Collections"] = "Sammanhang";
-$a->strings["Edit collection"] = "Redigera sammanhang";
-$a->strings["Create a new collection"] = "Skapa ett nytt sammanhang";
-$a->strings["Channels not in any collection"] = "Kanaler utan sammanhang";
+$a->strings["%1\$s's birthday"] = "%1\$ss födelsedag";
+$a->strings["Happy Birthday %1\$s"] = "Grattis på födelsedagen %1\$s";
+$a->strings["Site Admin"] = "Serveradministrator";
+$a->strings["Address Book"] = "Adressbok";
+$a->strings["Login"] = "Logga in";
+$a->strings["Channel Manager"] = "Kanalhanterare";
+$a->strings["Matrix"] = "Matris";
+$a->strings["Channel Home"] = "Kanalhem";
+$a->strings["Events"] = "Händelser";
+$a->strings["Directory"] = "Katalog";
+$a->strings["Help"] = "Hjälp";
+$a->strings["Mail"] = "Privat meddelande";
+$a->strings["Mood"] = "Sinnesstämning";
+$a->strings["Chat"] = "Chatt";
+$a->strings["Probe"] = "Sond";
+$a->strings["Suggest"] = "Föreslå";
+$a->strings["Random Channel"] = "Slumpvald kanal";
+$a->strings["Invite"] = "Bjud in";
+$a->strings["Features"] = "Funktioner";
+$a->strings["Language"] = "Språk";
+$a->strings["Post"] = "Inlägg";
+$a->strings["Profile Photo"] = "Profilfoto";
+$a->strings["Update"] = "Uppdatera";
+$a->strings["Install"] = "Installera";
+$a->strings["Purchase"] = "Köp";
+$a->strings["New window"] = "Nytt fönster";
+$a->strings["Open the selected location in a different window or browser tab"] = "Öppna den valda platsen i ett annat fönster eller en annan webbläsarflik";
+$a->strings["User '%s' deleted"] = "Användare '%s' borttagen";
$a->strings["Delete this item?"] = "Ta bort den här posten?";
-$a->strings["Comment"] = "Kommentar";
-$a->strings["show more"] = "visa fler";
-$a->strings["show fewer"] = "visa färre";
-$a->strings["+ Show More"] = "+ Visa fler";
-$a->strings["- Show Less"] = "- Visa färre";
+$a->strings["[-] show less"] = "[-] visa färre";
+$a->strings["[+] expand"] = "[+] fäll ut";
+$a->strings["[-] collapse"] = "[-] fäll ihop";
$a->strings["Password too short"] = "Lösenord för kort";
$a->strings["Passwords do not match"] = "Lösenorden stämmer inte överens";
$a->strings["everybody"] = "alla";
$a->strings["Secret Passphrase"] = "Hemligt lösenord";
$a->strings["Passphrase hint"] = "Lösenordsledtråd";
$a->strings["Notice: Permissions have changed but have not yet been submitted."] = "Observera: Rättigheter har ändrats men har ännu inte skickats in";
+$a->strings["close all"] = "stäng alla";
+$a->strings["Nothing new here"] = "Inget nytt här";
$a->strings["timeago.prefixAgo"] = "för";
$a->strings["timeago.prefixFromNow"] = "om";
$a->strings["ago"] = "sedan";
@@ -367,203 +757,6 @@ $a->strings["about a year"] = "ungefär ett år";
$a->strings["%d years"] = "%d år";
$a->strings[" "] = " ";
$a->strings["timeago.numbers"] = "timeago.numbers";
-$a->strings["No recipient provided."] = "Ingen mottagare angiven.";
-$a->strings["[no subject]"] = "[inget ämne]";
-$a->strings["Unable to determine sender."] = "Kunde inte avgöra vem som är avsändare.";
-$a->strings["Stored post could not be verified."] = "Den sparade posten kunde inte verifieras.";
-$a->strings["Profile Photos"] = "Profilfoton";
-$a->strings["Permission denied."] = "Behörighet saknas.";
-$a->strings["Item was not found."] = "Posten hittades inte.";
-$a->strings["No source file."] = "Ingen källfil.";
-$a->strings["Cannot locate file to replace"] = "Kan inte hitta fil att ersätta";
-$a->strings["Cannot locate file to revise/update"] = "Kan inte hitta fil att revidera/uppdatera";
-$a->strings["File exceeds size limit of %d"] = "Filen överskrider storleksbegränsningen %d";
-$a->strings["You have reached your limit of %1$.0f Mbytes attachment storage."] = "Du har nått begränsningen %1$.0f megabyte utrymme för bilagor.";
-$a->strings["File upload failed. Possible system limit or action terminated."] = "Filuppladdning misslyckades. Möjlig systembegränsning eller avbruten åtgärd.";
-$a->strings["Stored file could not be verified. Upload failed."] = "Den lagrade filen kunde inte verifieras. Uppladdning misslyckad.";
-$a->strings["Path not available."] = "Sökväg inte tillgänglig.";
-$a->strings["Empty pathname"] = "Tom sökväg";
-$a->strings["duplicate filename or path"] = "filnamn eller sökväg finns redan";
-$a->strings["Path not found."] = "Sökväg hittas inte.";
-$a->strings["mkdir failed."] = "mkdir misslyckades.";
-$a->strings["database storage failed."] = "databaslagring misslyckades.";
-$a->strings["%1\$s's bookmarks"] = "%1\$ss bokmärken";
-$a->strings["Visible to everybody"] = "Synlig för alla";
-$a->strings["Show"] = "Visa";
-$a->strings["Don't show"] = "Visa inte";
-$a->strings["Permissions"] = "Behörighet";
-$a->strings["Close"] = "Stäng";
-$a->strings["Unable to obtain identity information from database"] = "Kunde inte hämta från databasen";
-$a->strings["Empty name"] = "Tomt namn";
-$a->strings["Name too long"] = "För långt namn";
-$a->strings["No account identifier"] = "Ingen kontoidentifierare";
-$a->strings["Nickname is required."] = "Smeknamn måste anges.";
-$a->strings["Reserved nickname. Please choose another."] = "Reserverat smeknamn. Välj ett annat.";
-$a->strings["Nickname has unsupported characters or is already being used on this site."] = "Smeknamnet innehåller otillåtna tecken eller är redan upptaget på den här servern.";
-$a->strings["Unable to retrieve created identity"] = "Kunde inte hämta den skapade identiteten";
-$a->strings["Default Profile"] = "Standardprofil";
-$a->strings["Requested channel is not available."] = "Den begärda kanalen är inte tillgänglig";
-$a->strings["Requested profile is not available."] = "Begärd profil är inte tillgänglig.";
-$a->strings["Change profile photo"] = "Bytprofilfoto";
-$a->strings["Profiles"] = "Profiler";
-$a->strings["Manage/edit profiles"] = "Hantera/redigera profiler";
-$a->strings["Create New Profile"] = "Skapa ny profil";
-$a->strings["Edit Profile"] = "Redigera profil";
-$a->strings["Profile Image"] = "Profilbild";
-$a->strings["visible to everybody"] = "synlig för alla";
-$a->strings["Edit visibility"] = "Redigera synlighet";
-$a->strings["Gender:"] = "Kön:";
-$a->strings["Status:"] = "Status:";
-$a->strings["Homepage:"] = "Hemsida:";
-$a->strings["Online Now"] = "Online nu";
-$a->strings["g A l F d"] = "l j F \\k\\l G";
-$a->strings["F d"] = "j F";
-$a->strings["[today]"] = "[i dag]";
-$a->strings["Birthday Reminders"] = "Födelsedagspåminnelser";
-$a->strings["Birthdays this week:"] = "Födelsedagar den här veckan:";
-$a->strings["[No description]"] = "[Ingen beskrivning]";
-$a->strings["Event Reminders"] = "Händelsepåminnelser";
-$a->strings["Events this week:"] = "Händelser den här veckan:";
-$a->strings["Profile"] = "Profil";
-$a->strings["Full Name:"] = "Fullständigt namn:";
-$a->strings["j F, Y"] = "j F Y";
-$a->strings["j F"] = "j F";
-$a->strings["Birthday:"] = "Födelsedag:";
-$a->strings["Age:"] = "Ã…lder:";
-$a->strings["for %1\$d %2\$s"] = "i %1\$d %2\$s";
-$a->strings["Sexual Preference:"] = "Sexuell preferens:";
-$a->strings["Hometown:"] = "Hemort:";
-$a->strings["Tags:"] = "Taggar:";
-$a->strings["Political Views:"] = "Politisk åskådning:";
-$a->strings["Religion:"] = "Religion:";
-$a->strings["About:"] = "Om:";
-$a->strings["Hobbies/Interests:"] = "Fritidssysselsättning/intressen:";
-$a->strings["Likes:"] = "Gillar:";
-$a->strings["Dislikes:"] = "Ogillar:";
-$a->strings["Contact information and Social Networks:"] = "Kontaktinformation och sociala nätverk:";
-$a->strings["My other channels:"] = "Mina andra kanaler:";
-$a->strings["Musical interests:"] = "Musikintressen:";
-$a->strings["Books, literature:"] = "Böcker, litteratur:";
-$a->strings["Television:"] = "Tv:";
-$a->strings["Film/dance/culture/entertainment:"] = "Film/dans/kultur/underhållning:";
-$a->strings["Love/Romance:"] = "Kärlek/romantik:";
-$a->strings["Work/employment:"] = "Arbete/sysselsättning:";
-$a->strings["School/education:"] = "Skola/utbildning:";
-$a->strings["Edit"] = "Redigera";
-$a->strings["save to folder"] = "spara i mapp";
-$a->strings["add star"] = "lägg till märke";
-$a->strings["remove star"] = "ta bort märke";
-$a->strings["toggle star status"] = "växla märke på/av";
-$a->strings["starred"] = "märkt";
-$a->strings["add tag"] = "lägg till tagg";
-$a->strings["I like this (toggle)"] = "Jag gillar det här (växla)";
-$a->strings["like"] = "gilla";
-$a->strings["I don't like this (toggle)"] = "Jag gillar inte det här (växla)";
-$a->strings["dislike"] = "ogilla";
-$a->strings["Share this"] = "Dela det här";
-$a->strings["share"] = "dela";
-$a->strings["View %s's profile - %s"] = "Visa %ss profil - %s";
-$a->strings["to"] = "till";
-$a->strings["via"] = "via";
-$a->strings["Wall-to-Wall"] = "Vägg-till-vägg";
-$a->strings["via Wall-To-Wall:"] = "via vägg-till-vägg";
-$a->strings["Bookmark Links"] = "Bokmärk länkar";
-$a->strings["%d comment"] = array(
- 0 => "%d kommentar",
- 1 => "%d kommentarer",
-);
-$a->strings["This is you"] = "Det här är du";
-$a->strings["Submit"] = "Skicka";
-$a->strings["Bold"] = "Fet";
-$a->strings["Italic"] = "Kursiv";
-$a->strings["Underline"] = "Understruken";
-$a->strings["Quote"] = "Citat";
-$a->strings["Code"] = "Kod";
-$a->strings["Image"] = "Bild";
-$a->strings["Link"] = "Länk";
-$a->strings["Video"] = "Video";
-$a->strings["Edit File properties"] = "Redigera filegenskaper";
-$a->strings["view full size"] = "visa full storlek";
-$a->strings["prev"] = "föregående";
-$a->strings["first"] = "första";
-$a->strings["last"] = "sista";
-$a->strings["next"] = "nästa";
-$a->strings["older"] = "äldre";
-$a->strings["newer"] = "nyare";
-$a->strings["No connections"] = "Inga kontakter";
-$a->strings["%d Connection"] = array(
- 0 => "%d kontakt",
- 1 => "%d kontakter",
-);
-$a->strings["View Connections"] = "Visa kontakter";
-$a->strings["poke"] = "puffa";
-$a->strings["ping"] = "pinga";
-$a->strings["pinged"] = "pingade";
-$a->strings["prod"] = "stöt till";
-$a->strings["prodded"] = "stötte till";
-$a->strings["slap"] = "daska till";
-$a->strings["slapped"] = "daskade till";
-$a->strings["finger"] = "fingra på";
-$a->strings["fingered"] = "fingrade på";
-$a->strings["rebuff"] = "stöt tillbaka";
-$a->strings["rebuffed"] = "stötte tillbaks";
-$a->strings["happy"] = "glad";
-$a->strings["sad"] = "ledsen";
-$a->strings["mellow"] = "lugn";
-$a->strings["tired"] = "trött";
-$a->strings["perky"] = "uppåt";
-$a->strings["angry"] = "arg";
-$a->strings["stupified"] = "virrig";
-$a->strings["puzzled"] = "förbryllad";
-$a->strings["interested"] = "intresserad";
-$a->strings["bitter"] = "bitter";
-$a->strings["cheerful"] = "munter";
-$a->strings["alive"] = "pigg";
-$a->strings["annoyed"] = "irriterad";
-$a->strings["anxious"] = "bekymrad";
-$a->strings["cranky"] = "grinig";
-$a->strings["disturbed"] = "besvärad";
-$a->strings["frustrated"] = "frustrerad";
-$a->strings["motivated"] = "motiverad";
-$a->strings["relaxed"] = "avslappnad";
-$a->strings["surprised"] = "förvånad";
-$a->strings["Monday"] = "måndag";
-$a->strings["Tuesday"] = "tisdag";
-$a->strings["Wednesday"] = "onsdag";
-$a->strings["Thursday"] = "torsdag";
-$a->strings["Friday"] = "fredag";
-$a->strings["Saturday"] = "lördag";
-$a->strings["Sunday"] = "söndag";
-$a->strings["January"] = "januari";
-$a->strings["February"] = "februari";
-$a->strings["March"] = "mars";
-$a->strings["April"] = "april";
-$a->strings["May"] = "maj";
-$a->strings["June"] = "juni";
-$a->strings["July"] = "juli";
-$a->strings["August"] = "augusti";
-$a->strings["September"] = "september";
-$a->strings["October"] = "oktober";
-$a->strings["November"] = "november";
-$a->strings["December"] = "december";
-$a->strings["unknown.???"] = "okänt.???";
-$a->strings["bytes"] = "byte";
-$a->strings["remove category"] = "ta bort kategori";
-$a->strings["remove from file"] = "ta bort från fil";
-$a->strings["Click to open/close"] = "Klicka för att öppna/stänga";
-$a->strings["link to source"] = "länk till källa";
-$a->strings["Select a page layout: "] = "Välj en sidlayout: ";
-$a->strings["default"] = "standard";
-$a->strings["Page content type: "] = "Typ av sidinnehåll: ";
-$a->strings["Select an alternate language"] = "Välj ett alternativt språk";
-$a->strings["activity"] = "aktivitet";
-$a->strings["Design"] = "Design";
-$a->strings["Blocks"] = "Block";
-$a->strings["Menus"] = "Menyer";
-$a->strings["Layouts"] = "Layouter";
-$a->strings["Pages"] = "Sidor";
-$a->strings["created a new post"] = "skapade ett nytt inlägg";
-$a->strings["commented on %s's post"] = "kommenterade %ss inlägg";
$a->strings["Male"] = "Man";
$a->strings["Female"] = "Kvinna";
$a->strings["Currently Male"] = "Just nu man";
@@ -576,7 +769,6 @@ $a->strings["Transsexual"] = "Transsexuell";
$a->strings["Hermaphrodite"] = "Hermafrodit";
$a->strings["Neuter"] = "Könlös";
$a->strings["Non-specific"] = "Ospecificerat";
-$a->strings["Other"] = "Annat";
$a->strings["Undecided"] = "Obestämt";
$a->strings["Males"] = "Män";
$a->strings["Females"] = "Kvinnor";
@@ -621,227 +813,105 @@ $a->strings["Uncertain"] = "Osäkert";
$a->strings["It's complicated"] = "Det är komplicerat";
$a->strings["Don't care"] = "Bryr mig inte";
$a->strings["Ask me"] = "Fråga mig";
-$a->strings["Missing room name"] = "Rumsnamn saknas";
-$a->strings["Duplicate room name"] = "Rumsnamnet finns redan";
-$a->strings["Invalid room specifier."] = "Ogiltig rumsbeskrivning.";
-$a->strings["Room not found."] = "Rummet hittades inte.";
-$a->strings["Room is full"] = "Rummet är fullt";
-$a->strings["Default"] = "Standard";
-$a->strings["Tags"] = "Taggar";
-$a->strings["Keywords"] = "Nyckelord";
-$a->strings["have"] = "har";
-$a->strings["has"] = "har";
-$a->strings["want"] = "vill ha";
-$a->strings["wants"] = "vill ha";
-$a->strings["likes"] = "gillar";
-$a->strings["dislikes"] = "ogillar";
-$a->strings["Logged out."] = "Utloggad.";
-$a->strings["Failed authentication"] = "Autentisering misslyckades";
-$a->strings["Login failed."] = "Inloggning misslyckades.";
-$a->strings["Not a valid email address"] = "Inte en giltig e-postadress";
-$a->strings["Your email domain is not among those allowed on this site"] = "Din e-postdomän är inte bland de som tillåts på den här servern";
-$a->strings["Your email address is already registered at this site."] = "Din e-postadress är redan registrerad på den här servern.";
-$a->strings["An invitation is required."] = "En inbjudan behövs.";
-$a->strings["Invitation could not be verified."] = "Inbjudningen kunde inte bekräftas.";
-$a->strings["Please enter the required information."] = "Ange den begärda informationen.";
-$a->strings["Failed to store account information."] = "Misslyckades att spara kontoinformation.";
-$a->strings["Registration request at %s"] = "Registreringsförfrågan på %s";
-$a->strings["Administrator"] = "Administratör";
-$a->strings["your registration password"] = "ditt registreringslösenord";
-$a->strings["Registration details for %s"] = "Registreringsdetaljer för %s";
-$a->strings["Account approved."] = "Konto godkänt.";
-$a->strings["Registration revoked for %s"] = "Registrering avslagen för %s";
-$a->strings["Sort Options"] = "Sorteringsalternativ";
-$a->strings["Alphabetic"] = "Alfabetisk";
-$a->strings["Reverse Alphabetic"] = "Omvänd alfabetisk";
-$a->strings["Newest to Oldest"] = "Nyast till äldst";
-$a->strings["Enable Safe Search"] = "Aktivera säker sökning";
-$a->strings["Disable Safe Search"] = "Avaktivera säker sökning";
-$a->strings["Safe Mode"] = "Säkert läge";
-$a->strings["Red Matrix Notification"] = "Red Matrix-meddelande";
-$a->strings["redmatrix"] = "redmatrix";
-$a->strings["Thank You,"] = "Tack,";
-$a->strings["%s Administrator"] = "Administratören för %s";
-$a->strings["%s <!item_type!>"] = "%s <!item_type!>";
-$a->strings["[Red:Notify] New mail received at %s"] = "[Red:Meddelande] Nytt meddelande på %s";
-$a->strings["%1\$s, %2\$s sent you a new private message at %3\$s."] = "%1\$s, %2\$s skickade ett nytt privat meddelande till dig på %3\$s.";
-$a->strings["%1\$s sent you %2\$s."] = "%1\$s skickade %2\$s till dig.";
-$a->strings["a private message"] = "ett privat meddelande";
-$a->strings["Please visit %s to view and/or reply to your private messages."] = "Besök %s för att visa och/eller svara på dina privata meddelanden.";
-$a->strings["%1\$s, %2\$s commented on [zrl=%3\$s]a %4\$s[/zrl]"] = "%1\$s, %2\$s kommenterade [zrl=%3\$s]ett %4\$s[/zrl]";
-$a->strings["%1\$s, %2\$s commented on [zrl=%3\$s]%4\$s's %5\$s[/zrl]"] = "%1\$s, %2\$s kommenterade [zrl=%3\$s]%4\$ss %5\$s[/zrl]";
-$a->strings["%1\$s, %2\$s commented on [zrl=%3\$s]your %4\$s[/zrl]"] = "%1\$s, %2\$s kommenterade [zrl=%3\$s]ditt %4\$s[/zrl]";
-$a->strings["[Red:Notify] Comment to conversation #%1\$d by %2\$s"] = "[Red:Meddelande] Kommentar till konversation #%1\$d av %2\$s";
-$a->strings["%1\$s, %2\$s commented on an item/conversation you have been following."] = "%1\$s, %2\$s kommenterade en sak/konversation du har följt.";
-$a->strings["Please visit %s to view and/or reply to the conversation."] = "Besök %s för att visa och/eller svara på konversationen.";
-$a->strings["[Red:Notify] %s posted to your profile wall"] = "[Red:Meddelande] %s postade till din profilvägg";
-$a->strings["%1\$s, %2\$s posted to your profile wall at %3\$s"] = "%1\$s, %2\$s postade till din profilvägg på %3\$s";
-$a->strings["%1\$s, %2\$s posted to [zrl=%3\$s]your wall[/zrl]"] = "%1\$s, %2\$s postade till [zrl=%3\$s]din vägg[/zrl]";
-$a->strings["[Red:Notify] %s tagged you"] = "[Red:Meddelande] %s taggade dig";
-$a->strings["%1\$s, %2\$s tagged you at %3\$s"] = "%1\$s, %2\$s taggade dig på %3\$s";
-$a->strings["%1\$s, %2\$s [zrl=%3\$s]tagged you[/zrl]."] = "%1\$s, %2\$s [zrl=%3\$s]taggade dig[/zrl].";
-$a->strings["[Red:Notify] %1\$s poked you"] = "[Red:Meddelande] %1\$s puffade dig";
-$a->strings["%1\$s, %2\$s poked you at %3\$s"] = "%1\$s, %2\$s puffade dig på %3\$s";
-$a->strings["%1\$s, %2\$s [zrl=%2\$s]poked you[/zrl]."] = "%1\$s, %2\$s [zrl=%2\$s]puffade dig[/zrl].";
-$a->strings["[Red:Notify] %s tagged your post"] = "[Red:Meddelande] %s taggade ditt inlägg";
-$a->strings["%1\$s, %2\$s tagged your post at %3\$s"] = "%1\$s, %2\$s taggade ditt inlägg på %3\$s";
-$a->strings["%1\$s, %2\$s tagged [zrl=%3\$s]your post[/zrl]"] = "%1\$s, %2\$s taggade [zrl=%3\$s]ditt inlägg[/zrl]";
-$a->strings["[Red:Notify] Introduction received"] = "[Red:Meddelande] Presentation mottagen";
-$a->strings["%1\$s, you've received an new connection request from '%2\$s' at %3\$s"] = "%1\$s, du har fått en ny kontaktförfrågan från '%2\$s' på %3\$s";
-$a->strings["%1\$s, you've received [zrl=%2\$s]a new connection request[/zrl] from %3\$s."] = "%1\$s, du har fått [zrl=%2\$s]en ny kontaktförfrågan[/zrl] från %3\$s.";
-$a->strings["You may visit their profile at %s"] = "Du kan besöka deras profil på %s";
-$a->strings["Please visit %s to approve or reject the connection request."] = "Besök %s för att bevilja eller avslå kontaktförfrågan.";
-$a->strings["[Red:Notify] Friend suggestion received"] = "[Red:Meddelande] Vänförslag mottaget";
-$a->strings["%1\$s, you've received a friend suggestion from '%2\$s' at %3\$s"] = "%1\$s, du har fått ett vänförslag från '%2\$s' på %3\$s";
-$a->strings["%1\$s, you've received [zrl=%2\$s]a friend suggestion[/zrl] for %3\$s from %4\$s."] = "%1\$s, du har fått [zrl=%2\$s]ett vänförslag[/zrl] angående %3\$s från %4\$s.";
-$a->strings["Name:"] = "Namn:";
-$a->strings["Photo:"] = "Foto:";
-$a->strings["Please visit %s to approve or reject the suggestion."] = "Besök %s för att bevilja eller avslå förslaget.";
-$a->strings["Image exceeds website size limit of %lu bytes"] = "Bild överskrider webbplatsens storleksbegränsning på %lu byte";
-$a->strings["Image file is empty."] = "Bildfil är tom.";
-$a->strings["Unable to process image"] = "Kunde inte bearbeta bild";
-$a->strings["Photo storage failed."] = "Fotolagring misslyckades.";
-$a->strings["Upload New Photos"] = "Ladda upp nya foton";
-$a->strings["%d invitation available"] = array(
- 0 => "%d inbjudan tillgänglig",
- 1 => "%d inbjudningar tillgängliga",
-);
-$a->strings["Advanced"] = "Avancerat";
-$a->strings["Find Channels"] = "Hitta kanaler";
-$a->strings["Enter name or interest"] = "Ange namn eller intresse";
-$a->strings["Connect/Follow"] = "Ta kontakt/följ";
-$a->strings["Examples: Robert Morgenstein, Fishing"] = "Exempel: Robert Morgenstein, Fiske";
-$a->strings["Find"] = "Sök";
-$a->strings["Channel Suggestions"] = "Kanalförslag";
-$a->strings["Random Profile"] = "Slumpvald profil";
-$a->strings["Invite Friends"] = "Bjud in vänner";
-$a->strings["Exammple: name=fred and country=iceland"] = "Exempel: name=fred and country=iceland";
-$a->strings["Advanced Find"] = "Sök avancerat";
-$a->strings["%d connection in common"] = array(
- 0 => "%d gemensam kontakt",
- 1 => "%d gemensamma kontakter",
-);
-$a->strings["New Page"] = "Ny sida";
-$a->strings["Click here to upgrade."] = "Klicka här för att uppgradera.";
-$a->strings["This action exceeds the limits set by your subscription plan."] = "Den här funktionen går utanför vad som anges i ditt avtal.";
-$a->strings["This action is not available under your subscription plan."] = "Den här funktionen är inte tillgänglig med ditt avtal.";
-$a->strings["Permission denied"] = "Behörighet saknas";
-$a->strings["(Unknown)"] = "(Okänt)";
-$a->strings["Item not found."] = "Posten hittades inte.";
-$a->strings["Collection not found."] = "Sammanhanget hittades inte.";
-$a->strings["Collection is empty."] = "Sammanhanget är tomt.";
-$a->strings["Collection: %s"] = "Sammanhang: %s";
-$a->strings["Connection: %s"] = "Kontakt: %s";
-$a->strings["Connection not found."] = "Kontakten hittades inte.";
-$a->strings["Channel is blocked on this site."] = "Kanalen är blockerad på den här servern.";
-$a->strings["Channel location missing."] = "Kanalplats saknas.";
-$a->strings["Response from remote channel was incomplete."] = "Svar från den andra kanalen var ofullständigt.";
-$a->strings["Channel was deleted and no longer exists."] = "Kanalen har tagits bort och finns inte längre.";
-$a->strings["Channel discovery failed."] = "Kanalsökning misslyckades.";
-$a->strings["local account not found."] = "hittade inte lokalt konto.";
-$a->strings["Cannot connect to yourself."] = "Du kan inte kontakta dig själv.";
+$a->strings["Logout"] = "Logga ut";
+$a->strings["End this session"] = "Avsluta sessionen";
+$a->strings["Home"] = "Hem";
+$a->strings["Your posts and conversations"] = "Dina inlägg och konversationer";
+$a->strings["Your profile page"] = "Din profilsida";
+$a->strings["Edit Profiles"] = "Redigera profiler";
+$a->strings["Manage/Edit profiles"] = "Hantera/redigera profiler";
+$a->strings["Edit your profile"] = "Redigera din profil";
+$a->strings["Your photos"] = "Dina foton";
+$a->strings["Your files"] = "Dina filer";
+$a->strings["Your chatrooms"] = "Dina chattrum";
+$a->strings["Your bookmarks"] = "Dina bokmärken";
+$a->strings["Your webpages"] = "Dina webbsidor";
+$a->strings["Sign in"] = "Logga in";
+$a->strings["%s - click to logout"] = "%s - klicka för att logga ut";
+$a->strings["Remote authentication"] = "Fjärrinloggning";
+$a->strings["Click to authenticate to your home hub"] = "Klicka för att autentisera mot din hemmahubb";
+$a->strings["Home Page"] = "Hemsida";
+$a->strings["Register"] = "Skapa konto";
+$a->strings["Create an account"] = "Skapa ett konto";
+$a->strings["Help and documentation"] = "Hjälp och dokumentation";
+$a->strings["Applications, utilities, links, games"] = "Applikationer, verktyg, länkar, spel";
+$a->strings["Search site content"] = "Sök innehåll";
+$a->strings["Channel Directory"] = "Kanalkatalog";
+$a->strings["Your matrix"] = "Din matris";
+$a->strings["Mark all matrix notifications seen"] = "Märk alla matrisnotifieringar som lästa";
+$a->strings["Channel home"] = "Kanalhem";
+$a->strings["Mark all channel notifications seen"] = "Märk alla kanalnotifieringar som lästa";
+$a->strings["Connections"] = "Kontakter";
+$a->strings["Notices"] = "Meddelanden";
+$a->strings["Notifications"] = "Notifieringar";
+$a->strings["See all notifications"] = "Se alla notifieringar";
+$a->strings["Mark all system notifications seen"] = "Märk alla systemnotifieringar som lästa";
+$a->strings["Private mail"] = "Privat meddelande";
+$a->strings["See all private messages"] = "Se alla privata meddelanden";
+$a->strings["Mark all private messages seen"] = "Märk alla privata meddelanden som lästa";
+$a->strings["Inbox"] = "Inkorg";
+$a->strings["Outbox"] = "Utkorg";
+$a->strings["Event Calendar"] = "Kalender";
+$a->strings["See all events"] = "Se alla händelser";
+$a->strings["Mark all events seen"] = "Märk alla händelser som lästa";
+$a->strings["Manage Your Channels"] = "Hantera dina kanaler";
+$a->strings["Account/Channel Settings"] = "Konto-/kanalinställningar";
+$a->strings["Admin"] = "Administration";
+$a->strings["Site Setup and Configuration"] = "Serverinställning och -konfiguration";
+$a->strings["@name, #tag, content"] = "@namn, #tagg, innehåll";
+$a->strings["Please wait..."] = "Vänta...";
$a->strings["The form security token was not correct. This probably happened because the form has been opened for too long (>3 hours) before submitting it."] = "Formulärets kontrollkod var inte korrekt. Antagligen beror det på att formuläret har varit öppet för länge (> 3 timmar) innan det skickades.";
-$a->strings["Embedded content"] = "Inbäddat innehåll";
-$a->strings["Embedding disabled"] = "Inbäddning inaktiverat";
-$a->strings["Can view my \"public\" stream and posts"] = "Kan se mina \"offentliga\" strömmar och inlägg";
-$a->strings["Can view my \"public\" channel profile"] = "Kan se min \"offentliga\" kanalprofil";
-$a->strings["Can view my \"public\" photo albums"] = "Kan se mina \"offentliga\" fotoalbum";
-$a->strings["Can view my \"public\" address book"] = "Kan se min \"offentliga\" adressbok";
-$a->strings["Can view my \"public\" file storage"] = "Kan se mitt \"offentliga\" filutrymme";
-$a->strings["Can view my \"public\" pages"] = "Kan se mina \"offentliga\" sidor";
-$a->strings["Can send me their channel stream and posts"] = "Kan skicka sina kanalströmmar och inlägg till mig";
-$a->strings["Can post on my channel page (\"wall\")"] = "Kan posta inlägg på min kanalsida (\"vägg\")";
-$a->strings["Can comment on my posts"] = "Kan kommentera mina inlägg";
-$a->strings["Can send me private mail messages"] = "Kan skicka privata meddelanden till mig";
-$a->strings["Can post photos to my photo albums"] = "Kan lägga till foton i mitt fotoalbum";
-$a->strings["Can forward to all my channel contacts via post @mentions"] = "Kan vidarebefordra till alla mina kanalkontakter genom @omnämnanden";
-$a->strings["Advanced - useful for creating group forum channels"] = "Avancerat - användbart för att skapa kanaler för gruppforum";
-$a->strings["Can chat with me (when available)"] = "Kan chatta med mig (när tillgänglig)";
-$a->strings["Can write to my \"public\" file storage"] = "Har skrivrättigheter i mitt \"offentliga\" filutrymme";
-$a->strings["Can edit my \"public\" pages"] = "Kan redigera mina \"offentliga\" sidor";
-$a->strings["Can source my \"public\" posts in derived channels"] = "Kan använda mina \"offentliga\" inlägg i kanaler nedströms";
-$a->strings["Somewhat advanced - very useful in open communities"] = "Ganska avancerat - väldigt användbart i öppna gemenskaper";
-$a->strings["Can send me bookmarks"] = "Kan skicka bokmärken till mig";
-$a->strings["Can administer my channel resources"] = "Kan administrera mina kanalresurser";
-$a->strings["Extremely advanced. Leave this alone unless you know what you are doing"] = "Extremt avancerat. Låt detta vara om du inte vet vad du gör";
-$a->strings["Invalid data packet"] = "Ogiltigt datapaket";
-$a->strings["Unable to verify channel signature"] = "Kunde inte bekräfta kanalsignatur";
-$a->strings["Unable to verify site signature for %s"] = "Kunde inte bekräfta signatur för servern %s";
-$a->strings["No channel."] = "Ingen kanal.";
-$a->strings["Common connections"] = "Gemensamma kontakter";
-$a->strings["No connections in common."] = "Inga gemensamma kontakter.";
-$a->strings["Event title and start time are required."] = "Händelsen behöver titel och starttid.";
-$a->strings["l, F j"] = "l, j F";
-$a->strings["Edit event"] = "Redigera händelse";
-$a->strings["Create New Event"] = "Skapa ny händelse";
-$a->strings["Previous"] = "Föregående";
-$a->strings["Next"] = "Nästa";
-$a->strings["hour:minute"] = "timme:minut";
-$a->strings["Event details"] = "Detaljer för händelse";
-$a->strings["Format is %s %s. Starting date and Title are required."] = "Formatet är %s %s. Startdatum och titel behövs.";
-$a->strings["Event Starts:"] = "Händelsen börjar:";
-$a->strings["Required"] = "Behövs";
-$a->strings["Finish date/time is not known or not relevant"] = "Slutdatum/tid är okänt eller inte relevant";
-$a->strings["Event Finishes:"] = "Händelsen slutar:";
-$a->strings["Adjust for viewer timezone"] = "Justera för betraktarens tidszon";
-$a->strings["Description:"] = "Beskrivning:";
-$a->strings["Title:"] = "Titel:";
-$a->strings["Share this event"] = "Dela den här händelsen";
-$a->strings["Thing updated"] = "Föremål uppdaterat";
-$a->strings["Object store: failed"] = "Objektlagring: misslyckades";
-$a->strings["Thing added"] = "Föremål tillagt";
-$a->strings["OBJ: %1\$s %2\$s %3\$s"] = "OBJ: %1\$s %2\$s %3\$s";
-$a->strings["Show Thing"] = "Visa föremål";
-$a->strings["item not found."] = "föremål hittades inte.";
-$a->strings["Edit Thing"] = "Redigera föremål";
-$a->strings["Select a profile"] = "Välj en profil";
-$a->strings["Select a category of stuff. e.g. I ______ something"] = "Välj en kategori, t.ex. Jag ______ någonting";
-$a->strings["Post an activity"] = "Posta en aktivitet";
-$a->strings["Only sends to viewers of the applicable profile"] = "Skickar bara till de som tittar på den aktuella profilen";
-$a->strings["Name of thing e.g. something"] = "Namn på föremål, t.ex. någonting";
-$a->strings["URL of thing (optional)"] = "URL för föremål (frivilligt)";
-$a->strings["URL for photo of thing (optional)"] = "URL för foto på föremål (frivilligt)";
-$a->strings["Add Thing to your Profile"] = "Lägg till föremål till din profil";
-$a->strings["Total invitation limit exceeded."] = "Gränsen för totalt antal inbjudningar överskriden.";
-$a->strings["%s : Not a valid email address."] = "%s: Inte en giltig e-postadress.";
-$a->strings["Please join us on Red"] = "GÃ¥ med oss i Red";
-$a->strings["Invitation limit exceeded. Please contact your site administrator."] = "Inbjudningsgränsen överskriden. Kontakta din serveradministratör.";
-$a->strings["%s : Message delivery failed."] = "%s : Leverans av meddelande misslyckades.";
-$a->strings["%d message sent."] = array(
- 0 => "%d meddelande sänt.",
- 1 => "%d meddelanden sända.",
-);
-$a->strings["You have no more invitations available"] = "Du har inga fler inbjudningar kvar";
-$a->strings["Send invitations"] = "Skicka inbjudan";
-$a->strings["Enter email addresses, one per line:"] = "Ange e-postadresser, en per rad:";
-$a->strings["Your message:"] = "Ditt meddelande:";
-$a->strings["You are cordially invited to join me and some other close friends on the Red Matrix - a revolutionary new decentralised communication and information tool."] = "Du är hjärtligt inbjuden att gå med mig och några andra nära vänner i Red Matrix - ett revolutionärt nytt decentraliserat kommunikations- och informationsverktyg.";
-$a->strings["You will need to supply this invitation code: \$invite_code"] = "Du kommer att behöva ange den här inbjudningskoden: \$invite_code";
-$a->strings["Please visit my channel at"] = "Besök min kanal på";
-$a->strings["Once you have registered (on ANY Red Matrix site - they are all inter-connected), please connect with my Red Matrix channel address:"] = "När du har registrerat dig (på NÅGON Red Matrix-server - alla sitter ihop), så lägg till min Red Matrix-kanaladress:";
-$a->strings["Click the [Register] link on the following page to join."] = "Klicka på [Registrera]-länken på följande sida för att gå med.";
-$a->strings["For more information about the Red Matrix Project and why it has the potential to change the internet as we know it, please visit http://getzot.com"] = "För mer information om Red Matrix-projektet och varför det har potential att förändra Internet som vi känner det, besök http://getzot.com";
-$a->strings["Unable to lookup recipient."] = "Kunde inte hitta mottagare.";
-$a->strings["Unable to communicate with requested channel."] = "Kunde inte kommunicera med den begärda kanalen.";
-$a->strings["Cannot verify requested channel."] = "Kan inte bekräfta den begärda kanalen.";
-$a->strings["Selected channel has private message restrictions. Send failed."] = "Den valda kanalen har restriktioner för privata meddelanden. Misslyckades att skicka.";
-$a->strings["Messages"] = "Meddelanden";
-$a->strings["Message deleted."] = "Meddelande borttaget.";
-$a->strings["Message recalled."] = "Meddelande återkallat.";
-$a->strings["Send Private Message"] = "Skicka privat meddelande.";
-$a->strings["To:"] = "Till:";
-$a->strings["Subject:"] = "Ämne:";
-$a->strings["Message not found."] = "Meddelandet hittades inte.";
-$a->strings["Delete message"] = "Ta bort meddelande";
-$a->strings["Recall message"] = "Ã…terkalla meddelande";
-$a->strings["Message has been recalled."] = "Meddelandet har återkallats.";
-$a->strings["Private Conversation"] = "Privat konversation";
-$a->strings["Delete conversation"] = "Ta bort konversation";
-$a->strings["No secure communications available. You <strong>may</strong> be able to respond from the sender's profile page."] = "Ingen säker kommunikationskanal tillgänglig. Du kan <strong>möjligtvis</strong> svara från avsändarens profilsida.";
-$a->strings["Send Reply"] = "Skicka svar";
+$a->strings["Set your current mood and tell your friends"] = "Ange din nuvarande sinnesstämning och visa för dina vänner";
+$a->strings["Maximum daily site registrations exceeded. Please try again tomorrow."] = "Maximalt antal dagliga serverregistreringar överskridet. Försök igen i morgon.";
+$a->strings["Please indicate acceptance of the Terms of Service. Registration failed."] = "Välj huruvida du accepterar användarvillkoren. Registrering misslyckades.";
+$a->strings["Passwords do not match."] = "Lösenorden stämmer inte överens.";
+$a->strings["Registration successful. Please check your email for validation instructions."] = "Registrering lyckades. Kontrollera din e-post för valideringsinstruktioner.";
+$a->strings["Your registration is pending approval by the site owner."] = "Din registrering väntar på att bli godkänd av serverägaren.";
+$a->strings["Your registration can not be processed."] = "Din registrering kan inte behandlas.";
+$a->strings["Registration on this site/hub is by approval only."] = "Registrering på den här servern/hubben måste godkännas.";
+$a->strings["<a href=\"pubsites\">Register at another affiliated site/hub</a>"] = "<a href=\"pubsites\">Skapa konto på en annan ansluten server/hubb</a>";
+$a->strings["This site has exceeded the number of allowed daily account registrations. Please try again tomorrow."] = "Antal dagliga registreringar som tillåts på den här servern har överskridits. Försök igen i morgon.";
+$a->strings["Terms of Service"] = "användarvillkor";
+$a->strings["I accept the %s for this website"] = "Jag accepterar den här webbplatsens %s";
+$a->strings["I am over 13 years of age and accept the %s for this website"] = "Jag är över 13 år och accepterar den här webbplatsens %s";
+$a->strings["Registration"] = "Registrering";
+$a->strings["Membership on this site is by invitation only."] = "Medlemskap på den här servern kan endast fås genom inbjudan.";
+$a->strings["Please enter your invitation code"] = "Ange din inbjudningskod";
+$a->strings["Your email address"] = "Din e-postadress";
+$a->strings["Choose a password"] = "Välj ett lösenord";
+$a->strings["Please re-enter your password"] = "Ange lösenordet igen";
+$a->strings["Menu not found."] = "Menyn hittades inte.";
+$a->strings["Menu element updated."] = "Menyval uppdaterat.";
+$a->strings["Unable to update menu element."] = "Kunde inte uppdatera menyval.";
+$a->strings["Menu element added."] = "Menyval tillagt.";
+$a->strings["Unable to add menu element."] = "Kunde inte lägga till menyval.";
+$a->strings["Not found."] = "Hittades inte.";
+$a->strings["Manage Menu Elements"] = "Hantera menyval";
+$a->strings["Edit menu"] = "Redigera meny";
+$a->strings["Edit element"] = "Redigera menyval";
+$a->strings["Drop element"] = "Ta bort menyval";
+$a->strings["New element"] = "Nytt menyval";
+$a->strings["Edit this menu container"] = "Redigera den här menysamlaren";
+$a->strings["Add menu element"] = "Lägg till menyval";
+$a->strings["Delete this menu item"] = "Ta bort det här menyvalet";
+$a->strings["Edit this menu item"] = "Redigera det här menyvalet";
+$a->strings["New Menu Element"] = "Nytt menyval";
+$a->strings["Menu Item Permissions"] = "Behörighet för menyval";
+$a->strings["(click to open/close)"] = "(klicka för att öppna/stänga)";
+$a->strings["Link text"] = "Länktext";
+$a->strings["URL of link"] = "Länkens URL";
+$a->strings["Use RedMatrix magic-auth if available"] = "Använd RedMatrix magic-auth om tillgängligt";
+$a->strings["Open link in new window"] = "Öppna länk i nytt fönster";
+$a->strings["Order in list"] = "Ordningstal i listan";
+$a->strings["Higher numbers will sink to bottom of listing"] = "Större tal sjunker till botten av listan";
+$a->strings["Menu item not found."] = "Menyval hittas inte.";
+$a->strings["Menu item deleted."] = "Menyval borttaget.";
+$a->strings["Menu item could not be deleted."] = "Menyval kunde inte tas bort.";
+$a->strings["Edit Menu Element"] = "Redigera menyval";
+$a->strings["Modify"] = "Ändra";
+$a->strings["Some blurb about what to do when you're new here"] = "Lite text om vad man kan göra som ny här";
$a->strings["Name is required"] = "Namn är obligatoriskt";
$a->strings["Key and Secret are required"] = "Nyckel och kod är obligatoriska";
-$a->strings["Update"] = "Uppdatera";
$a->strings["Passwords do not match. Password unchanged."] = "Lösenorden stämmer inte överens. Lösenordet har inte ändrats.";
$a->strings["Empty passwords are not allowed. Password unchanged."] = "Tomma lösenord tillåts inte. Lösenordet har inte ändrats.";
$a->strings["Password changed."] = "Lösenordet ändrat.";
@@ -851,7 +921,6 @@ $a->strings["Protected email address. Cannot change to that email."] = "Skyddad
$a->strings["System failure storing new email. Please try again."] = "Systemfel när ny e-postadress skulle sparas. Försök igen.";
$a->strings["Settings updated."] = "Inställningar uppdaterade.";
$a->strings["Add application"] = "Lägg till applikation";
-$a->strings["Name"] = "Namn";
$a->strings["Name of application"] = "Applikationens namn";
$a->strings["Consumer Key"] = "Nyckel för konsument";
$a->strings["Automatically generated - change if desired. Max length 20"] = "Automatiskt genererad - ändra om så önskas. Maxlängd 20";
@@ -874,26 +943,36 @@ $a->strings["Confirm:"] = "Bekräfta:";
$a->strings["Leave password fields blank unless changing"] = "Lämna lösenordsfälten blanka om lösenordet inte ska ändras";
$a->strings["Email Address:"] = "E-postadress";
$a->strings["Remove Account"] = "Ta bort konto";
+$a->strings["Remove this account from this server including all its channels"] = "Ta bort det här kontot från servern, inklusive alla dess kanaler";
$a->strings["Warning: This action is permanent and cannot be reversed."] = "Varning: Den här handlingen är permanent och kan inte återställas.";
$a->strings["Off"] = "Av";
$a->strings["On"] = "PÃ¥";
$a->strings["Additional Features"] = "Ytterligare funktioner";
$a->strings["Connector Settings"] = "Anslutningsinställningar";
$a->strings["No special theme for mobile devices"] = "Inget särskilt tema för mobila enheter";
+$a->strings["%s - (Experimental)"] = "%s - (experimentellt)";
+$a->strings["mobile"] = "mobilt";
$a->strings["Display Settings"] = "Utseende";
$a->strings["Display Theme:"] = "Tema för utseende:";
$a->strings["Mobile Theme:"] = "Mobilt tema:";
+$a->strings["Enable user zoom on mobile devices"] = "Tillåt användare att zooma på mobila enheter";
$a->strings["Update browser every xx seconds"] = "Uppdatera webbläsaren var xx sekund";
$a->strings["Minimum of 10 seconds, no maximum"] = "Minst 10 sekunder, inget maximum";
$a->strings["Maximum number of conversations to load at any time:"] = "Högsta antal konversationer att ladda åt gången:";
$a->strings["Maximum of 100 items"] = "Maximalt 100 poster";
$a->strings["Don't show emoticons"] = "Visa inte känsloikoner";
-$a->strings["Do not view remote profiles in frames"] = "Visa inte profiler på andra servrar i ramar";
-$a->strings["By default open in a sub-window of your own site"] = "Som standard öppnas de i ett underfönster på din lokala server";
+$a->strings["Link post titles to source"] = "Länka inläggstitlar till källan";
$a->strings["System Page Layout Editor - (advanced)"] = "Redigera systemets sidlayout (avancerat)";
+$a->strings["Use blog/list mode on channel page"] = "Använd blogg-/listläge på kanalsida";
+$a->strings["(comments displayed separately)"] = "(kommentarer visas separat)";
+$a->strings["Use blog/list mode on matrix page"] = "Använd blogg-/listläge på matrissida";
+$a->strings["Channel page max height of content (in pixels)"] = "Maxhöjd för innehåll på kanalsidor (i pixels)";
+$a->strings["click to expand content exceeding this height"] = "klicka för att fälla ut innehåll som överskrider den här höjden";
+$a->strings["Matrix page max height of content (in pixels)"] = "Maxhöjd för innehåll på matrissidan (i pixels)";
$a->strings["Nobody except yourself"] = "Ingen utom dig själv";
$a->strings["Only those you specifically allow"] = "Endast utvalda";
-$a->strings["Anybody in your address book"] = "Vem som helst i din adressbok";
+$a->strings["Approved connections"] = "Godkända kontakter";
+$a->strings["Any connections"] = "Alla kontakter";
$a->strings["Anybody on this website"] = "Vem som helst på den här servern";
$a->strings["Anybody in this network"] = "Vem som helst i det här nätverket";
$a->strings["Anybody authenticated"] = "Vem som helst som har autentiserat sig";
@@ -910,9 +989,10 @@ $a->strings["Your Timezone:"] = "Din tidszon:";
$a->strings["Default Post Location:"] = "Standardplats:";
$a->strings["Geographical location to display on your posts"] = "Geografisk plats att visa för dina inlägg";
$a->strings["Use Browser Location:"] = "Använd webbläsarens position:";
-$a->strings["Adult Content"] = "Pornografiskt innehåll";
-$a->strings["This channel frequently or regularly publishes adult content. (Please tag any adult material and/or nudity with #NSFW)"] = "Den här kanalen publicerar ofta eller regelbundet pornografiskt innehåll. (Tagga allt pornografiskt material och/eller nakenhet med #NSFW, tack)";
+$a->strings["Adult Content"] = "Innehåll olämpligt för barn";
+$a->strings["This channel frequently or regularly publishes adult content. (Please tag any adult material and/or nudity with #NSFW)"] = "Den här kanalen publicerar ofta eller regelbundet innehåll som är olämpligt för barn. (Tagga allt pornografiskt material och/eller nakenhet med #NSFW, tack)";
$a->strings["Security and Privacy Settings"] = "Säkerhets- och integritetsinställningar";
+$a->strings["Your permissions are already configured. Click to view/adjust"] = "Dina behörigheter har redan ställts in. Klicka för att visa/ändra";
$a->strings["Hide my online presence"] = "Visa inte min online-närvaro";
$a->strings["Prevents displaying in your profile that you are online"] = "Förhindrar att det syns i din profil att du är online";
$a->strings["Simple Privacy Settings:"] = "Enkla integritetsinställningar:";
@@ -928,7 +1008,7 @@ $a->strings["0 or blank prevents expiration"] = "0 eller blankt förhindrar upph
$a->strings["Maximum Friend Requests/Day:"] = "Högsta antal vänförfrågningar per dag:";
$a->strings["May reduce spam activity"] = "Kan reducera spamaktivitet";
$a->strings["Default Post Permissions"] = "Standardbehörighet för inlägg";
-$a->strings["(click to open/close)"] = "(klicka för att öppna/stänga)";
+$a->strings["Channel permissions category:"] = "Kanalens behörighetskategori:";
$a->strings["Maximum private messages per day from unknown people:"] = "Högsta antal privata meddelanden per dag från okända personer:";
$a->strings["Useful to reduce spamming"] = "Användbart för att minska skräputskick";
$a->strings["Notification Settings"] = "Notifieringsinställningar";
@@ -936,7 +1016,7 @@ $a->strings["By default post a status message when:"] = "Skicka som standard ett
$a->strings["accepting a friend request"] = "du accepterar en vänförfrågan";
$a->strings["joining a forum/community"] = "du går med i ett forum/en gemenskap";
$a->strings["making an <em>interesting</em> profile change"] = "du gör en <em>intressant</em> ändring av profilen";
-$a->strings["Send a notification email when:"] = "Skicka en notifiering via e-post med när:";
+$a->strings["Send a notification email when:"] = "Skicka en notifiering via e-post när:";
$a->strings["You receive a connection request"] = "Du får en kontaktförfrågan";
$a->strings["Your connections are confirmed"] = "Dina kontakter bekräftas";
$a->strings["Someone writes on your profile wall"] = "Någon skriver på din profilvägg";
@@ -945,299 +1025,60 @@ $a->strings["You receive a private message"] = "Du tar emot ett privat meddeland
$a->strings["You receive a friend suggestion"] = "Du tar emot ett vänförslag";
$a->strings["You are tagged in a post"] = "Du taggas i ett inlägg";
$a->strings["You are poked/prodded/etc. in a post"] = "Du puffas/stöts till/etc. i ett inlägg";
+$a->strings["Show visual notifications including:"] = "Visa visuella notifieringar vid:";
+$a->strings["Unseen matrix activity"] = "Oläst matrisaktivitet";
+$a->strings["Unseen channel activity"] = "Oläst kanalaktivitet";
+$a->strings["Unseen private messages"] = "Olästa privata meddelanden";
+$a->strings["Recommended"] = "Rekommenderas";
+$a->strings["Upcoming events"] = "Kommande händelser";
+$a->strings["Events today"] = "Dagens händelser";
+$a->strings["Upcoming birthdays"] = "Kommande födelsedagar";
+$a->strings["Not available in all themes"] = "Inte tillgänglig i alla teman";
+$a->strings["System (personal) notifications"] = "Systemmeddelanden (personliga)";
+$a->strings["System info messages"] = "Systemmeddelanden";
+$a->strings["System critical alerts"] = "Systemkritiska varningar";
+$a->strings["New connections"] = "Nya kontakter";
+$a->strings["System Registrations"] = "Systemregistreringar";
+$a->strings["Notify me of events this many days in advance"] = "Meddela mig om händelser så här många dagar i förväg";
+$a->strings["Must be greater than 0"] = "Måste vara större än 0";
$a->strings["Advanced Account/Page Type Settings"] = "Avancerade konto-/sidtypsinställningar";
$a->strings["Change the behaviour of this account for special situations"] = "Ändra det här kontots beteende i särskilda situationer";
$a->strings["Please enable expert mode (in <a href=\"settings/features\">Settings > Additional features</a>) to adjust!"] = "Aktivera expertläge (i <a href=\"settings/features\">Inställningar > Ytterligare funktioner</a>) för att göra ändringar!";
$a->strings["Miscellaneous Settings"] = "Diverse inställningar";
$a->strings["Personal menu to display in your channel pages"] = "Personlig meny att visa i dina kanalsidor";
-$a->strings["Menu updated."] = "Meny uppdaterad.";
-$a->strings["Unable to update menu."] = "Kunde inte uppdatera meny.";
-$a->strings["Menu created."] = "Meny skapad.";
-$a->strings["Unable to create menu."] = "Kunde inte skapa meny.";
-$a->strings["Manage Menus"] = "Hantera menyer";
-$a->strings["Drop"] = "Ta bort";
-$a->strings["Create a new menu"] = "Skapa en ny meny";
-$a->strings["Delete this menu"] = "Ta bort den här menyn";
-$a->strings["Edit menu contents"] = "Redigera menyinnehåll";
-$a->strings["Edit this menu"] = "Redigera den här menyn";
-$a->strings["New Menu"] = "Ny meny";
-$a->strings["Menu name"] = "Menynamn";
-$a->strings["Must be unique, only seen by you"] = "MÃ¥ste vara unikt, ses endast av dig";
-$a->strings["Menu title"] = "Menytitel";
-$a->strings["Menu title as seen by others"] = "Menytitel som andra ser den";
-$a->strings["Allow bookmarks"] = "Tillåt bokmärken";
-$a->strings["Menu may be used to store saved bookmarks"] = "Menyn kan användas för att spara bokmärken";
-$a->strings["Create"] = "Skapa";
-$a->strings["Menu not found."] = "Menyn hittades inte.";
-$a->strings["Menu deleted."] = "Meny borttagen.";
-$a->strings["Menu could not be deleted."] = "Menyn kunde inte tas bort.";
-$a->strings["Edit Menu"] = "Redigera meny";
-$a->strings["Add or remove entries to this menu"] = "Lägg till eller ta bort menyval";
-$a->strings["Modify"] = "Ändra";
-$a->strings["Not found."] = "Hittades inte.";
-$a->strings["View"] = "Visa";
+$a->strings["Remove this channel"] = "Ta bort den här kanalen";
+$a->strings["Collection created."] = "Krets skapad.";
+$a->strings["Could not create collection."] = "Kunde inte skapa krets.";
+$a->strings["Collection updated."] = "Kretsen uppdaterad.";
+$a->strings["Create a collection of channels."] = "Skapa en krets av kanaler.";
+$a->strings["Collection Name: "] = "Namn på krets: ";
+$a->strings["Members are visible to other channels"] = "Medlemmar kan ses av andra kanaler";
+$a->strings["Collection removed."] = "Krets borttagen.";
+$a->strings["Unable to remove collection."] = "Kunde inte ta bort krets.";
+$a->strings["Collection Editor"] = "Redigera krets";
+$a->strings["Members"] = "Medlemmar";
+$a->strings["All Connected Channels"] = "Alla anslutna kanaler";
+$a->strings["Click on a channel to add or remove."] = "Klicka på en kanal för att lägga till eller ta bort.";
+$a->strings["Public access denied."] = "Offentlig behörighet saknas.";
+$a->strings["%1\$s is following %2\$s's %3\$s"] = "%1\$s följer %2\$ss %3\$s";
+$a->strings["Poke/Prod"] = "Puffa/stöt till";
+$a->strings["poke, prod or do other things to somebody"] = "puffa, stöt till eller gör andra saker mot någon";
+$a->strings["Recipient"] = "Mottagare";
+$a->strings["Choose what you wish to do to recipient"] = "Välj vad du önskar göra med mottagaren";
+$a->strings["Make this post private"] = "Gör det här inlägget privat";
$a->strings["Authorize application connection"] = "Tillåt anslutning av applikation";
$a->strings["Return to your app and insert this Securty Code:"] = "Återgå till din applikation och ange den här säkerhetskoden:";
$a->strings["Please login to continue."] = "Logga in för att fortsätta.";
$a->strings["Do you want to authorize this application to access your posts and contacts, and/or create new posts for you?"] = "Vill du låta den här applikationen få tillgång till dina inlägg och kontakter, och/eller skapa nya inlägg åt dig?";
-$a->strings["No installed applications."] = "Inga installerade applikationer";
-$a->strings["Applications"] = "Applikationer";
-$a->strings["Item not found"] = "Posten hittas inte";
-$a->strings["Item is not editable"] = "Posten går ej att redigera";
-$a->strings["Edit post"] = "Redigera inlägg";
-$a->strings["Delete item?"] = "Ta bort posten?";
-$a->strings["Insert YouTube video"] = "Infoga Youtube-video";
-$a->strings["Insert Vorbis [.ogg] video"] = "Infoga Vorbis [.ogg]-video";
-$a->strings["Insert Vorbis [.ogg] audio"] = "Infoga Vorbis [.ogg]-ljud";
-$a->strings["Red Matrix - Guests: Username: {your email address}, Password: +++"] = "Red Matrix - Gäster: Användarnamn: {din e-postadress}, Lösenord: +++";
-$a->strings["Bookmark added"] = "Bokmärke tillagt";
-$a->strings["My Bookmarks"] = "Mina bokmärken";
-$a->strings["My Connections Bookmarks"] = "Mina kontakters bokmärken";
-$a->strings["%1\$s is following %2\$s's %3\$s"] = "%1\$s följer %2\$ss %3\$s";
-$a->strings["[Embedded content - reload page to view]"] = "[Inbäddat innehåll - ladda om sidan för att visa]";
-$a->strings["Channel not found."] = "Kanalen hittas inte.";
-$a->strings["toggle full screen mode"] = "växla helskärmsläge";
-$a->strings["%1\$s tagged %2\$s's %3\$s with %4\$s"] = "%1\$s taggade%2\$ss %3\$s med %4\$s";
-$a->strings["network"] = "nätverk";
-$a->strings["Public access denied."] = "Offentlig behörighet saknas.";
-$a->strings["No connections."] = "Inga kontakter.";
-$a->strings["Visit %s's profile [%s]"] = "Besök %ss profil [%s]";
-$a->strings["View Connnections"] = "Visa kontakter";
-$a->strings["Tag removed"] = "Tagg borttagen";
-$a->strings["Remove Item Tag"] = "Ta bort innehållstagg";
-$a->strings["Select a tag to remove: "] = "Välj en tagg att ta bort: ";
-$a->strings["Remove"] = "Ta bort";
-$a->strings["Continue"] = "Fortsätt";
-$a->strings["Premium Channel Setup"] = "Inställning av premiumkanal";
-$a->strings["Enable premium channel connection restrictions"] = "Aktivera kontaktrestriktioner för premiumkanal";
-$a->strings["Please enter your restrictions or conditions, such as paypal receipt, usage guidelines, etc."] = "Ange dina restriktioner och villkor, som Paypal-kvitto, användarriktlinjer, etc.";
-$a->strings["This channel may require additional steps or acknowledgement of the following conditions prior to connecting:"] = "Den här kanalen kan kräva ytterligare steg eller godkännande av följande villkor innan anslutning:";
-$a->strings["Potential connections will then see the following text before proceeding:"] = "Potentiella kontakter kommer sedan att se följande text innan de går vidare:";
-$a->strings["By continuing, I certify that I have complied with any instructions provided on this page."] = "Genom att fortsätta intygar jag att jag har följt alla instruktioner som ges på den här sidan.";
-$a->strings["(No specific instructions have been provided by the channel owner.)"] = "(Inga specifika instruktioner har givits av kanalägaren.)";
-$a->strings["Restricted or Premium Channel"] = "Begränsad kanal eller premiumkanal";
-$a->strings["No potential page delegates located."] = "Inga potentiella sid-ombud funna.";
-$a->strings["Delegate Page Management"] = "Delegera sidhantering";
-$a->strings["Delegates are able to manage all aspects of this account/page except for basic account settings. Please do not delegate your personal account to anybody that you do not trust completely."] = "Ombud kan hantera alla aspekter av det här kontot/den här sidan förutom grundläggande kontoinställningar. Delegera inte ditt personliga konto till någon som du inte litar fullständigt på.";
-$a->strings["Existing Page Managers"] = "Befintliga sid-ansvariga";
-$a->strings["Existing Page Delegates"] = "Befintliga sid-ombud";
-$a->strings["Potential Delegates"] = "Potentiella ombud";
-$a->strings["Add"] = "Lägg till";
-$a->strings["No entries."] = "Inga poster.";
-$a->strings["Layout updated."] = "Layout uppdaterad.";
-$a->strings["Edit System Page Description"] = "Redigera systemsidbeskrivning";
-$a->strings["Layout not found."] = "Layout hittas inte.";
-$a->strings["Module Name:"] = "Modulnamn:";
-$a->strings["Layout Help"] = "Layouthjälp";
-$a->strings["Item not available."] = "Post inte tillgänglig.";
-$a->strings["Unable to locate original post."] = "Kunde inte hitta originalinlägget.";
-$a->strings["Empty post discarded."] = "Tomt inlägg förkastat.";
-$a->strings["Executable content type not permitted to this channel."] = "Körbart innehåll tillåts inte i den här kanalen.";
-$a->strings["System error. Post not saved."] = "Systemfel. Inlägget inte sparat.";
-$a->strings["You have reached your limit of %1$.0f top level posts."] = "Du har nått din gräns på %1$.0f toppnivåinlägg.";
-$a->strings["You have reached your limit of %1$.0f webpages."] = "Du har nått din gräns på %1$.0f webbsidor.";
-$a->strings["Menu element updated."] = "Menyval uppdaterat.";
-$a->strings["Unable to update menu element."] = "Kunde inte uppdatera menyval.";
-$a->strings["Menu element added."] = "Menyval tillagt.";
-$a->strings["Unable to add menu element."] = "Kunde inte lägga till menyval.";
-$a->strings["Manage Menu Elements"] = "Hantera menyval";
-$a->strings["Edit menu"] = "Redigera meny";
-$a->strings["Edit element"] = "Redigera menyval";
-$a->strings["Drop element"] = "Ta bort menyval";
-$a->strings["New element"] = "Nytt menyval";
-$a->strings["Edit this menu container"] = "Redigera den här menysamlaren";
-$a->strings["Add menu element"] = "Lägg till menyval";
-$a->strings["Delete this menu item"] = "Ta bort det här menyvalet";
-$a->strings["Edit this menu item"] = "Redigera det här menyvalet";
-$a->strings["New Menu Element"] = "Nytt menyval";
-$a->strings["Menu Item Permissions"] = "Behörighet för menyval";
-$a->strings["Link text"] = "Länktext";
-$a->strings["URL of link"] = "Länkens URL";
-$a->strings["Use Red magic-auth if available"] = "Använd Red magic-auth om tillgängligt";
-$a->strings["Open link in new window"] = "Öppna länk i nytt fönster";
-$a->strings["Order in list"] = "Ordningstal i listan";
-$a->strings["Higher numbers will sink to bottom of listing"] = "Större tal sjunker till botten av listan";
-$a->strings["Menu item not found."] = "Menyval hittas inte.";
-$a->strings["Menu item deleted."] = "Menyval borttaget.";
-$a->strings["Menu item could not be deleted."] = "Menyval kunde inte tas bort.";
-$a->strings["Edit Menu Element"] = "Redigera menyval";
-$a->strings["invalid target signature"] = "ogiltig målsignatur";
-$a->strings["Invalid profile identifier."] = "Ogiltigt profil-ID.";
-$a->strings["Profile Visibility Editor"] = "Redigera profilsynlighet";
-$a->strings["Click on a contact to add or remove."] = "Klicka på en kontakt för att lägga till eller ta bort.";
-$a->strings["Visible To"] = "Synlig för";
-$a->strings["All Connections"] = "Alla kontakter";
-$a->strings["Collection created."] = "Sammanhang skapat";
-$a->strings["Could not create collection."] = "Kunde inte skapa sammanhanget.";
-$a->strings["Collection updated."] = "Sammanhanget uppdatarat.";
-$a->strings["Create a collection of channels."] = "Skapa ett sammanhang av kanaler.";
-$a->strings["Collection Name: "] = "Namn på sammanhang: ";
-$a->strings["Members are visible to other channels"] = "Medlemmar är synliga för andra kanaler";
-$a->strings["Collection removed."] = "Sammanhang borttaget.";
-$a->strings["Unable to remove collection."] = "Kunde inte ta bort sammanhang.";
-$a->strings["Collection Editor"] = "Sammanhangsredigering";
-$a->strings["Members"] = "Medlemmar";
-$a->strings["All Connected Channels"] = "Alla anslutna kanaler";
-$a->strings["Click on a channel to add or remove."] = "Klicka på en kanal för att lägga till eller ta bort.";
-$a->strings["Theme settings updated."] = "Temainställningar uppdaterade.";
-$a->strings["Site"] = "Server";
-$a->strings["Accounts"] = "Konton";
-$a->strings["Channels"] = "Kanaler";
-$a->strings["Plugins"] = "Tillägg";
-$a->strings["Themes"] = "Teman";
-$a->strings["Server"] = "Server";
-$a->strings["DB updates"] = "Databasuppdateringar";
-$a->strings["Logs"] = "Loggar";
-$a->strings["Plugin Features"] = "Tilläggsfunktioner";
-$a->strings["User registrations waiting for confirmation"] = "Användarregistreringar som behöver bekräftas";
-$a->strings["Message queues"] = "Meddelandeköer";
-$a->strings["Administration"] = "Administration";
-$a->strings["Summary"] = "Sammanfattning";
-$a->strings["Registered users"] = "Registrerade användare";
-$a->strings["Pending registrations"] = "Pågående registreringar";
-$a->strings["Version"] = "Version";
-$a->strings["Active plugins"] = "Aktiva tillägg";
-$a->strings["Site settings updated."] = "Serverinställningar uppdaterade.";
-$a->strings["No special theme for accessibility"] = "Inget speciellt tema för tillgänglighet";
-$a->strings["Closed"] = "Stängd";
-$a->strings["Requires approval"] = "Kräver godkännande";
-$a->strings["Open"] = "Öppen";
-$a->strings["Private"] = "Privat";
-$a->strings["Paid Access"] = "Betald åtkomst";
-$a->strings["Free Access"] = "Fri åtkomst";
-$a->strings["Tiered Access"] = "Uppdelad åtkomst";
-$a->strings["Registration"] = "Registrering";
-$a->strings["File upload"] = "Filuppladdning";
-$a->strings["Policies"] = "Policyer";
-$a->strings["Site name"] = "Servernamn";
-$a->strings["Banner/Logo"] = "Banner/logga";
-$a->strings["Administrator Information"] = "Administratörsinformation";
-$a->strings["Contact information for site administrators. Displayed on siteinfo page. BBCode can be used here"] = "Kontaktinfo till sidadministratörer. Visas på sidinfosidan. BBCode kan användas här";
-$a->strings["System language"] = "Systemspråk";
-$a->strings["System theme"] = "Systemtema";
-$a->strings["Default system theme - may be over-ridden by user profiles - <a href='#' id='cnftheme'>change theme settings</a>"] = "Förvalt systemtema - kan åsidosättas i användarprofiler - <a href='#' id='cnftheme'>ändra temainställningar</a>";
-$a->strings["Mobile system theme"] = "Mobilt systemtema";
-$a->strings["Theme for mobile devices"] = "Tema för mobila enheter";
-$a->strings["Accessibility system theme"] = "Systemtema för ökad tillgänglighet";
-$a->strings["Accessibility theme"] = "Tillgänglighetstema";
-$a->strings["Channel to use for this website's static pages"] = "Kanal att använda för den här webbplatsens statiska sidor";
-$a->strings["Site Channel"] = "Sidkanal";
-$a->strings["Maximum image size"] = "Maximal bildstorlek";
-$a->strings["Maximum size in bytes of uploaded images. Default is 0, which means no limits."] = "Maximal storlek i byte för uppladdade bilder. Standard är 0, vilket innebär ingen storleksbegränsning.";
-$a->strings["Register policy"] = "Registreringspolicy";
-$a->strings["Access policy"] = "Ã…tkomstpolicy";
-$a->strings["Register text"] = "Registreringstext";
-$a->strings["Will be displayed prominently on the registration page."] = "Visas tydligt på registreringssidan.";
-$a->strings["Accounts abandoned after x days"] = "Konto övergivet efter x dagar";
-$a->strings["Will not waste system resources polling external sites for abandonded accounts. Enter 0 for no time limit."] = "Slösar inte systemresurser genom att fråga externa servrar efter övergivna konton. 0 innebär ingen tidsbegränsning.";
-$a->strings["Allowed friend domains"] = "Tillåtna vändomäner";
-$a->strings["Comma separated list of domains which are allowed to establish friendships with this site. Wildcards are accepted. Empty to allow any domains"] = "Kommaseparerad lista med domäner som tillåts att upprätta ett vänförhållande med den här servern. Jokertecken är tillåtna. Töm för att tillåta alla domäner.";
-$a->strings["Allowed email domains"] = "Tillåtna e-postdomäner";
-$a->strings["Comma separated list of domains which are allowed in email addresses for registrations to this site. Wildcards are accepted. Empty to allow any domains"] = "Kommaseparerad lista med domäner som tillåts i e-postadresser för registreringar på den här servern. Jokertecken är tillåtna. Töm för att tillåta alla domäner.";
-$a->strings["Block public"] = "Blockera offentlig åtkomst";
-$a->strings["Check to block public access to all otherwise public personal pages on this site unless you are currently logged in."] = "Välj för att blockera åtkomst till alla personliga sidor som annars skulle vara offentliga på den här servern om man inte är inloggad.";
-$a->strings["Force publish"] = "Tvinga publicering";
-$a->strings["Check to force all profiles on this site to be listed in the site directory."] = "Välj för att tvinga alla profiler på den här servern att listas i serverkatalogen.";
-$a->strings["Disable discovery tab"] = "Inaktivera upptäck-fliken";
-$a->strings["Remove the tab in the network view with public content pulled from sources chosen for this site."] = "Ta bort fliken i nätverksvyn med offentligt innehåll som hämtas från källor valda för den här servern.";
-$a->strings["No login on Homepage"] = "Ingen inloggning på hemsidan";
-$a->strings["Check to hide the login form from your sites homepage when visitors arrive who are not logged in (e.g. when you put the content of the homepage in via the site channel)."] = "Välj för att gömma inloggningsformuläret från serverns hemsida för oinloggade besökare (t.ex. när du lägger in hemsideinnehållet via serverkanalen).";
-$a->strings["Proxy user"] = "Proxyanvändare";
-$a->strings["Proxy URL"] = "Proxy-URL";
-$a->strings["Network timeout"] = "Nätverkstimeout";
-$a->strings["Value is in seconds. Set to 0 for unlimited (not recommended)."] = "Värde i sekunder. Sätt till 0 för obegränsat (ej rekommenderat).";
-$a->strings["Delivery interval"] = "Leveransintervall";
-$a->strings["Delay background delivery processes by this many seconds to reduce system load. Recommend: 4-5 for shared hosts, 2-3 for virtual private servers. 0-1 for large dedicated servers."] = "Fördröj leveransprocesser som görs i bakgrunden så här många sekunder för att reducera systembelastningen. Rekommenderat: 4-5 för delade värdar, 2-3 för virtuella privata servrar. 0-1 för stora dedikerade servrar.";
-$a->strings["Poll interval"] = "Hämtningsintervall";
-$a->strings["Delay background polling processes by this many seconds to reduce system load. If 0, use delivery interval."] = "Fördröj hämtningsprocesser som görs i bakgrunden så här många sekunder för att reducera systembelastningen. Om 0 används leveransintervallet.";
-$a->strings["Maximum Load Average"] = "Maximal genomsnittsbelastning";
-$a->strings["Maximum system load before delivery and poll processes are deferred - default 50."] = "Maximal systembelastning innan leverans- och hämtningsprocesser skjuts upp - standard är 50.";
-$a->strings["No server found"] = "Ingen server hittad";
-$a->strings["ID"] = "ID";
-$a->strings["for channel"] = "för kanal";
-$a->strings["on server"] = "på server";
-$a->strings["Status"] = "Status";
-$a->strings["Update has been marked successful"] = "Uppdatering har markerats som genomförd";
-$a->strings["Executing %s failed. Check system logs."] = "Körning av %s misslyckades. Kontrollera systemloggarna.";
-$a->strings["Update %s was successfully applied."] = "Uppdatering %s genomfördes utan problem.";
-$a->strings["Update %s did not return a status. Unknown if it succeeded."] = "Uppdatering %s returnerade ingen status. Oklart om den lyckades.";
-$a->strings["Update function %s could not be found."] = "Uppdateringsfunktion %s kunde inte hittas.";
-$a->strings["No failed updates."] = "Inga misslyckade uppdateringar.";
-$a->strings["Failed Updates"] = "Misslyckade uppdateringar";
-$a->strings["Mark success (if update was manually applied)"] = "Markera som genomförd (om uppdateringen gjordes manuellt)";
-$a->strings["Attempt to execute this update step automatically"] = "Försök att köra den här uppdateringen automatiskt";
-$a->strings["%s user blocked/unblocked"] = array(
- 0 => "%s användare blockerad/avblockerad",
- 1 => "%s användare blockerade/avblockerade",
-);
-$a->strings["%s user deleted"] = array(
- 0 => "%s användare borttagen",
- 1 => "%s användare borttagna",
-);
-$a->strings["Account not found"] = "Konto hittas inte";
-$a->strings["User '%s' deleted"] = "Användare '%s' borttagen";
-$a->strings["User '%s' unblocked"] = "Användare '%s' avblockerad";
-$a->strings["User '%s' blocked"] = "Användare '%s' blockerad";
-$a->strings["Users"] = "Användare";
-$a->strings["select all"] = "välj alla";
-$a->strings["User registrations waiting for confirm"] = "Användarregistreringar som inväntar bekräftelse";
-$a->strings["Request date"] = "Ansökningsdatum";
-$a->strings["No registrations."] = "Inga registreringar.";
-$a->strings["Approve"] = "Godkänn";
-$a->strings["Deny"] = "Avslå";
-$a->strings["Block"] = "Blockera";
-$a->strings["Unblock"] = "Avblockera";
-$a->strings["Register date"] = "Registreringsdatum";
-$a->strings["Last login"] = "Senaste inloggning";
-$a->strings["Expires"] = "Upphör att gälla";
-$a->strings["Service Class"] = "Tjänsteklass";
-$a->strings["Selected users will be deleted!\\n\\nEverything these users had posted on this site will be permanently deleted!\\n\\nAre you sure?"] = "Valda användare kommer att tas bort!\\n\\nAllt dessa användare har postat på den här servern kommer att raderas permanent!\\n\\nÄr du säker?";
-$a->strings["The user {0} will be deleted!\\n\\nEverything this user has posted on this site will be permanently deleted!\\n\\nAre you sure?"] = "Användaren {0} kommer att tas bort!\\n\\nAllt den här användaren har postat på den här servern kommer att raderas permanent!\\n\\nÄr du säker?";
-$a->strings["%s channel censored/uncensored"] = array(
- 0 => "%s kanal censurerad/avcensurerad",
- 1 => "%s kanaler censurerade/avcensurerade",
-);
-$a->strings["%s channel deleted"] = array(
- 0 => "%s kanal borttagen",
- 1 => "%s kanaler borttagna",
-);
-$a->strings["Channel not found"] = "Kanal hittas inte";
-$a->strings["Channel '%s' deleted"] = "Kanalen '%s' togs bort";
-$a->strings["Channel '%s' uncensored"] = "Kanal '%s' avcensurerad";
-$a->strings["Channel '%s' censored"] = "Kanal '%s' censurerad";
-$a->strings["Censor"] = "Censurera";
-$a->strings["Uncensor"] = "Avcensurera";
-$a->strings["UID"] = "UID";
-$a->strings["Address"] = "Adress";
-$a->strings["Selected channels will be deleted!\\n\\nEverything that was posted in these channels on this site will be permanently deleted!\\n\\nAre you sure?"] = "Valda kanaler kommer att tas bort!\\n\\nAllt som har postats i de kanalerna på den här servern kommer att raderas permanent!\\n\\nÄr du säker?";
-$a->strings["The channel {0} will be deleted!\\n\\nEverything that was posted in this channel on this site will be permanently deleted!\\n\\nAre you sure?"] = "Kanalen {0} kommer att tas bort!\\n\\nAllt som har postats i den här kanalen på den här servern kommer att raderas permanent!\\n\\nÄr du säker?";
-$a->strings["Plugin %s disabled."] = "Tillägg %s inaktiverat.";
-$a->strings["Plugin %s enabled."] = "Tillägg %s aktiverat.";
-$a->strings["Disable"] = "Inaktivera";
-$a->strings["Enable"] = "Aktivera";
-$a->strings["Toggle"] = "Växla";
-$a->strings["Author: "] = "Författare:";
-$a->strings["Maintainer: "] = "Underhållare:";
-$a->strings["No themes found."] = "Inga teman funna.";
-$a->strings["Screenshot"] = "Skärmdump";
-$a->strings["[Experimental]"] = "[Experimentellt]";
-$a->strings["[Unsupported]"] = "[Utan support]";
-$a->strings["Log settings updated."] = "Logginställningar uppdaterade.";
-$a->strings["Clear"] = "Rensa";
-$a->strings["Debugging"] = "Avlusning";
-$a->strings["Log file"] = "Loggfil";
-$a->strings["Must be writable by web server. Relative to your Red top-level directory."] = "Måste vara skrivbar för webbservern. Anges relativt Reds toppkatalog.";
-$a->strings["Log level"] = "Loggnivå";
-$a->strings["- select -"] = "- välj -";
-$a->strings["Welcome to %s"] = "Välkommen till %s";
$a->strings["Red Matrix Server - Setup"] = "Red Matrix-server - inställningar";
$a->strings["Could not connect to database."] = "Kunde inte ansluta till databasen.";
$a->strings["Could not connect to specified site URL. Possible SSL certificate or DNS issue."] = "Kunde inte ansluta till den angivna server-URL:en. Möjligt problem med SSL-certifikat eller DNS.";
$a->strings["Could not create table."] = "Kunde inte skapa tabell.";
$a->strings["Your site database has been installed."] = "Din serverdatabas har installerats.";
-$a->strings["You may need to import the file \"install/database.sql\" manually using phpmyadmin or mysql."] = "Du kan behöva importera filen \"install/database.sql\" manuellt med phpmyadmin eller mysql.";
+$a->strings["You may need to import the file \"install/schema_xxx.sql\" manually using a database client."] = "Du kan behöva importera filen \"install/schema_xxx.sql\" manuellt med en databasklient.";
$a->strings["Please see the file \"install/INSTALL.txt\"."] = "Se filen \"install/INSTALL.txt\".";
$a->strings["System check"] = "Systemkontroll";
+$a->strings["Next"] = "Nästa";
$a->strings["Check again"] = "Kontrollera igen";
$a->strings["Database connection"] = "Databasanslutning";
$a->strings["In order to install Red Matrix we need to know how to connect to your database."] = "För att kunna installera Red Matrix behöver vi veta hur databasen ska anslutas.";
@@ -1250,6 +1091,7 @@ $a->strings["Communication port number - use 0 for default"] = "Kommunikationspo
$a->strings["Database Login Name"] = "Loginnamn till databas";
$a->strings["Database Login Password"] = "Lösenord till databas";
$a->strings["Database Name"] = "Databasnamn";
+$a->strings["Database Type"] = "Databastyp";
$a->strings["Site administrator email address"] = "Serveradministratörens e-postadress";
$a->strings["Your account email address must match this in order to use the web admin panel."] = "Ditt kontos e-postadress måste stämma med den här för att webbgränssnittet för administration ska kunna användas.";
$a->strings["Website URL"] = "Webbplatsens URL";
@@ -1270,7 +1112,7 @@ $a->strings["Generate encryption keys"] = "Generera kryptonycklar";
$a->strings["libCurl PHP module"] = "PHP-modulen libCurl";
$a->strings["GD graphics PHP module"] = "PHP-modulen GD graphics";
$a->strings["OpenSSL PHP module"] = "PHP-modulen OpenSSL";
-$a->strings["mysqli PHP module"] = "PHP-modulen mysqli";
+$a->strings["mysqli or postgres PHP module"] = "PHP-modulen mysqli eller postgres";
$a->strings["mb_string PHP module"] = "PHP-modulen mb_string";
$a->strings["mcrypt PHP module"] = "PHP-modulen mcrypt";
$a->strings["Apache mod_rewrite module"] = "Apache-modulen mod_rewrite";
@@ -1280,46 +1122,194 @@ $a->strings["Error: proc_open is required but is either not installed or has bee
$a->strings["Error: libCURL PHP module required but not installed."] = "Fel: PHP-modulen libCURL krävs men är inte installerad.";
$a->strings["Error: GD graphics PHP module with JPEG support required but not installed."] = "Fel: PHP-modulen GD graphics med JPEG-stöd krävs men är inte installerad.";
$a->strings["Error: openssl PHP module required but not installed."] = "Fel: PHP-modulen openssl krävs men är inte installerad.";
-$a->strings["Error: mysqli PHP module required but not installed."] = "Fel: PHP-modulen mysqli krävs men är inte installerad.";
+$a->strings["Error: mysqli or postgres PHP module required but neither are installed."] = "Fel: en av PHP-modulerna mysqli eller postgres krävs men är inte installerad.";
$a->strings["Error: mb_string PHP module required but not installed."] = "Fel: PHP-modulen mb_string krävs men är inte installerad.";
$a->strings["Error: mcrypt PHP module required but not installed."] = "Fel: PHP-modulen mcrypt krävs men är inte installerad.";
-$a->strings["The web installer needs to be able to create a file called \".htconfig.php\ in the top folder of your web server and it is unable to do so."] = "Webbinstallationen måste kunna skapa filen \".htconfig.php\" i toppkatalogen på din webbserver men kan inte göra det.";
+$a->strings["The web installer needs to be able to create a file called \".htconfig.php\" in the top folder of your web server and it is unable to do so."] = "Webbinstallationen måste kunna skapa filen \".htconfig.php\" i toppkatalogen på din webbserver men kan inte göra det.";
$a->strings["This is most often a permission setting, as the web server may not be able to write files in your folder - even if you can."] = "Det är ofta en behörighetsinställning som gör att webbservern inte kan skriva filer i din katalog - även om du kan.";
$a->strings["At the end of this procedure, we will give you a text to save in a file named .htconfig.php in your Red top folder."] = "Efter den här proceduren kommer vi att ge dig en text att spara i filen .htconfig.php i Reds toppkatalog.";
$a->strings["You can alternatively skip this procedure and perform a manual installation. Please see the file \"install/INSTALL.txt\" for instructions."] = "Alternativt kan du hoppa över den här proceduren och göra en manuell installation. För instruktioner, se filen \"install/INSTALL.txt\".";
$a->strings[".htconfig.php is writable"] = ".htconfig.php är skrivbar";
$a->strings["Red uses the Smarty3 template engine to render its web views. Smarty3 compiles templates to PHP to speed up rendering."] = "Red använder mallmotorn Smarty3 för att rendera webbvyerna. Smarty3 kompilerar mallar till PHP för att snabba upp renderingen.";
-$a->strings["In order to store these compiled templates, the web server needs to have write access to the directory view/tpl/smarty3/ under the Red top level folder."] = "För att kunna spara de här kompilerade mallarna behöver webbservern ha skrivrättigheter i katalogen view/tpl/smarty3/ under Reds toppkatalog.";
+$a->strings["In order to store these compiled templates, the web server needs to have write access to the directory %s under the Red top level folder."] = "För att spara de här kompilerade mallarna behöver webbservern ha skrivrättigheter till katalogen %s under Reds toppkatalog.";
$a->strings["Please ensure that the user that your web server runs as (e.g. www-data) has write access to this folder."] = "Försäkra dig om att användaren som din webbserver kör som (t.ex. www-data) har skrivrättigheter till den här katalogen.";
-$a->strings["Note: as a security measure, you should give the web server write access to view/tpl/smarty3/ only--not the template files (.tpl) that it contains."] = "Observera: som en säkerhetsåtgärd bör du ge webbservern skrivrättigheter endast till view/tpl/smarty3 - inte till mallfilerna (.tpl) som den innehåller.";
-$a->strings["view/tpl/smarty3 is writable"] = "view/tpl/smarty3 är skrivbar";
+$a->strings["Note: as a security measure, you should give the web server write access to %s only--not the template files (.tpl) that it contains."] = "Observera: som en säkerhetsåtgärd bör du ge webbservern skrivrättighet endast för %s - inte för mallfilerna (.tpl) som finns där.";
+$a->strings["%s is writable"] = "%s är skrivbar";
$a->strings["Red uses the store directory to save uploaded files. The web server needs to have write access to the store directory under the Red top level folder"] = "Red använder katalogen store för att spara uppladdade filer. Webbservern behöver ha skrivrättigheter till katalogen store under Reds toppkatalog.";
$a->strings["store is writable"] = "store är skrivbar";
$a->strings["SSL certificate cannot be validated. Fix certificate or disable https access to this site."] = "SSL-certifikatet kan inte valideras. Fixa certifikatet eller inaktivera https-åtkomst till den här servern.";
-$a->strings["If you use https access, you MUST use a certification instance known by all internet browsers. You MUST NOT use self-signed certificates!"] = "Om du använder https-åtkomst MÅSTE du använda ett certifikat som känns igen av alla webbläsare. Du FÅR INTE använda självsignerade certifikat!";
-$a->strings["This restriction is incorporated because public posts from you may for example contain references to images on your own hub. If your"] = "Den här restriktionen finns för att offentliga inlägg från dig till exempel kan innehålla referenser till bilder på din egen hubb. Om ditt";
-$a->strings["certificate is not known by the internet browser of users they get a warning message complaining about some security issues. Although"] = "certifikat inte känns igen av användares webbläsare får de ett varningsmeddelande om säkerhetsproblem. Även om";
-$a->strings["these complains are not the real truth - there are no security issues with your encryption! - the users may be confused, nerved or even"] = "de här varningarna inte är helt sanna - det är inga säkerhetsproblem med din kryptering! - så kan användare bli förvirrade, nervösa eller";
-$a->strings["worse may become scared about redmatrix having security issues. Use one of the free certification instances!"] = "ännu värre, bli skrämda att redmatrix skulle ha säkerhetsproblem. Använd en av utfärdarna av gratis certifikat.";
+$a->strings["If you have https access to your website or allow connections to TCP port 443 (the https: port), you MUST use a browser-valid certificate. You MUST NOT use self-signed certificates!"] = "Om du har https-åtkomst till din webbplats eller tillåter anslutningar till TCP-port 443 (https-porten) MÅSTE du använda ett certifikat som kan verifieras av webbläsare. Du FÅR INTE använda självsignerade certifikat!";
+$a->strings["This restriction is incorporated because public posts from you may for example contain references to images on your own hub."] = "Restriktionen finns eftersom offentliga inlägg från dig kan innehålla till exempel referenser till bilder på din egen hubb.";
+$a->strings["If your certificate is not recognized, members of other sites (who may themselves have valid certificates) will get a warning message on their own site complaining about security issues."] = "Om ditt certifikat inte känns igen kommer medlemmar på andra webbplatser (som själv kan ha giltiga certifikat) att få en varning på sin egen webbplats om säkerhetsproblem.";
+$a->strings["This can cause usability issues elsewhere (not just on your own site) so we must insist on this requirement."] = "Detta kan orsaka problem med användbarheten (inte bara på din egen server) så vi måste trycka på det här kravet.";
+$a->strings["Providers are available that issue free certificates which are browser-valid."] = "Det finns leverantörer som utfärdar gratis certifikat som känns igen av webbläsare.";
$a->strings["SSL certificate validation"] = "SSL-certifikatvalidering";
-$a->strings["Url rewrite in .htaccess is not working. Check your server configuration."] = "URL rewrite i .htaccess fungerar inte. Kontrollera din serverkonfiguration.";
+$a->strings["Url rewrite in .htaccess is not working. Check your server configuration.Test: "] = "Url rewrite i .htaccess fungerar inte. Kolla din serverkonfiguration. Test: ";
$a->strings["Url rewrite is working"] = "URL rewrite fungerar";
$a->strings["The database configuration file \".htconfig.php\" could not be written. Please use the enclosed text to create a configuration file in your web server root."] = "Databaskonfigurationsfilen \".htconfig.php\" kunde inte skrivas. Använd den bifogade texten för att skapa en konfigurationsfil i din webbservers rot.";
$a->strings["Errors encountered creating database tables."] = "Fel inträffade när databastabeller skulle skapas.";
$a->strings["<h1>What next</h1>"] = "<h1>Nästa steg</h1>";
$a->strings["IMPORTANT: You will need to [manually] setup a scheduled task for the poller."] = "VIKTIGT: Du behöver ställa in en schemalagd för hämtningsrutinen [manuellt]";
-$a->strings["Age: "] = "Ã…lder:";
-$a->strings["Gender: "] = "Kön:";
-$a->strings["Finding:"] = "Sökning efter:";
-$a->strings["next page"] = "nästa sida";
-$a->strings["previous page"] = "föregående sida";
-$a->strings["No entries (some entries may be hidden)."] = "Inga resultat (vissa resultat kan vara dolda).";
-$a->strings["Remote privacy information not available."] = "Icke-lokal integritetsinformation är inte tillgänglig";
-$a->strings["Visible to:"] = "Synlig för:";
+$a->strings["Item not available."] = "Post inte tillgänglig.";
+$a->strings["Fetching URL returns error: %1\$s"] = "Hämtning av URL returnerade fel: %1\$s";
+$a->strings["Invalid item."] = "Ogiltig post.";
+$a->strings["Channel not found."] = "Kanalen hittas inte.";
+$a->strings["Page not found."] = "Sidan hittas inte.";
+$a->strings["Export Channel"] = "Exportera kanal";
+$a->strings["Export your basic channel information to a small file. This acts as a backup of your connections, permissions, profile and basic data, which can be used to import your data to a new hub, but\tdoes not contain your content."] = "Exportera kanalens basinformation till en liten fil. Denna fungerar som en säkerhetskopia av dina anslutningar, behörigheter, profil, och grundläggande data, och kan användas för att importera dina data till en ny hubb, men tar inte med ditt innehåll.";
+$a->strings["Export Content"] = "Exportera innehåll";
+$a->strings["Export your channel information and all the content to a JSON backup. This backs up all of your connections, permissions, profile data and all of your content, but is generally not suitable for importing a channel to a new hub as this file may be VERY large. Please be patient - it may take several minutes for this download to begin."] = "Exportera din kanalinformation och allt innehåll till en säkerhetskopia i JSON-format. Detta kopierar alla dina anslutningar, behörigheter, profildata och allt ditt innehåll, men är generellt inte lämpligt för att importera en kanal till en ny hubb, eftersom filen kan vara VÄLDIGT stor. Ha tålamod - det kan ta flera minuter innan nedladdningen börjar.";
+$a->strings["No potential page delegates located."] = "Inga potentiella sid-ombud funna.";
+$a->strings["Delegate Page Management"] = "Delegera sidhantering";
+$a->strings["Delegates are able to manage all aspects of this account/page except for basic account settings. Please do not delegate your personal account to anybody that you do not trust completely."] = "Ombud kan hantera alla aspekter av det här kontot/den här sidan förutom grundläggande kontoinställningar. Delegera inte ditt personliga konto till någon som du inte litar fullständigt på.";
+$a->strings["Existing Page Managers"] = "Befintliga sid-ansvariga";
+$a->strings["Existing Page Delegates"] = "Befintliga sid-ombud";
+$a->strings["Potential Delegates"] = "Potentiella ombud";
+$a->strings["Remove"] = "Ta bort";
+$a->strings["Add"] = "Lägg till";
+$a->strings["No entries."] = "Inga poster.";
+$a->strings["Version %s"] = "Version %s";
+$a->strings["Installed plugins/addons/apps:"] = "Installerade tillägg/moduler/appar:";
+$a->strings["No installed plugins/addons/apps"] = "Inga installerade tillägg/moduler/appar";
+$a->strings["Red"] = "Red";
+$a->strings["This is a hub of the Red Matrix - a global cooperative network of decentralized privacy enhanced websites."] = "Det här är en hubb som ingår i Red Matrix - ett globalt samverkande nätverk av decentraliserade webbplatser med bättre integritetskydd.";
+$a->strings["Tag: "] = "Tagg: ";
+$a->strings["Last background fetch: "] = "Senaste bakgrundshämtning: ";
+$a->strings["Running at web location"] = "Kör på webbutrymmet";
+$a->strings["Please visit <a href=\"https://redmatrix.me\">RedMatrix.me</a> to learn more about the Red Matrix."] = "Besök <a href=\"https://redmatrix.me\">RedMatrix.me</a> för att lära dig mer om Red Matrix.";
+$a->strings["Bug reports and issues: please visit"] = "Buggrapporter och problem: besök";
+$a->strings["Suggestions, praise, etc. - please email \"redmatrix\" at librelist - dot com"] = "Förslag, uppskattning, etc. - maila \"redmatrix\" at librelist - dot com";
+$a->strings["Site Administrators"] = "Serveradministratörer";
+$a->strings["Failed to create source. No channel selected."] = "Misslyckades att skapa källa. Ingen kanal vald.";
+$a->strings["Source created."] = "Källa skapad.";
+$a->strings["Source updated."] = "Källa uppdaterad.";
+$a->strings["*"] = "*";
+$a->strings["Manage remote sources of content for your channel."] = "Hantera fjärrkällor med innehåll för din kanal.";
+$a->strings["New Source"] = "Ny källa";
+$a->strings["Import all or selected content from the following channel into this channel and distribute it according to your channel settings."] = "Importera allt eller valt innehåll från följande kanal till den här kanalen och distribuera det enligt dina kanalinställningar.";
+$a->strings["Only import content with these words (one per line)"] = "Importera endast innehåll med de här orden (ett per rad)";
+$a->strings["Leave blank to import all public content"] = "Lämna blankt för att importera allt offentligt innehåll";
+$a->strings["Channel Name"] = "Kanalnamn";
+$a->strings["Source not found."] = "Källa hittades inte.";
+$a->strings["Edit Source"] = "Redigera källa";
+$a->strings["Delete Source"] = "Ta bort källa";
+$a->strings["Source removed"] = "Källa borttagen";
+$a->strings["Unable to remove source."] = "Kunde inte ta bort källa.";
+$a->strings["Invalid profile identifier."] = "Ogiltigt profil-ID.";
+$a->strings["Profile Visibility Editor"] = "Redigera profilsynlighet";
+$a->strings["Click on a contact to add or remove."] = "Klicka på en kontakt för att lägga till eller ta bort.";
+$a->strings["Visible To"] = "Kan ses av";
+$a->strings["All Connections"] = "Alla kontakter";
+$a->strings["Event can not end before it has started."] = "Händelser kan inte sluta innan de börjat.";
+$a->strings["Event title and start time are required."] = "Händelsen behöver titel och starttid.";
+$a->strings["Event not found."] = "Händelsen hittades inte.";
+$a->strings["l, F j"] = "l, j F";
+$a->strings["Edit event"] = "Redigera händelse";
+$a->strings["Create New Event"] = "Skapa ny händelse";
+$a->strings["Previous"] = "Föregående";
+$a->strings["Export"] = "Exportera";
+$a->strings["Event details"] = "Detaljer för händelse";
+$a->strings["Starting date and Title are required."] = "Startdatum och titel är obligatoriska.";
+$a->strings["Categories (comma-separated list)"] = "Kategorier (kommaseparerad lista)";
+$a->strings["Event Starts:"] = "Händelsen börjar:";
+$a->strings["Required"] = "Behövs";
+$a->strings["Finish date/time is not known or not relevant"] = "Slutdatum/tid är okänt eller inte relevant";
+$a->strings["Event Finishes:"] = "Händelsen slutar:";
+$a->strings["Adjust for viewer timezone"] = "Justera för betraktarens tidszon";
+$a->strings["Description:"] = "Beskrivning:";
+$a->strings["Title:"] = "Titel:";
+$a->strings["Share this event"] = "Dela den här händelsen";
+$a->strings["Public Sites"] = "Offentliga servrar";
+$a->strings["The listed sites allow public registration into the Red Matrix. All sites in the matrix are interlinked so membership on any of them conveys membership in the matrix as a whole. Some sites may require subscription or provide tiered service plans. The provider links <strong>may</strong> provide additional details."] = "De listade servrarna tillåter offentlig registrering i Red Matrix. Alla servrar i matrisen är sammankopplade, så medlemskap i en av dem medför medlemskap i matrisen som helhet. Vissa servrar kan kräva abonnemang eller erbjuda uppdelade tjänstenivåer. Leverantörslänkarna <strong>kan</strong> ge ytterligare detaljer.";
+$a->strings["Site URL"] = "Server-URL";
+$a->strings["Access Type"] = "Ã…tkomsttyp";
+$a->strings["Registration Policy"] = "Registreringspolicy";
+$a->strings["Location"] = "Plats";
+$a->strings["You must be logged in to see this page."] = "Du måste vara inloggad för att se den här sidan.";
+$a->strings["Insufficient permissions. Request redirected to profile page."] = "Otillräckliga behörigheter. Förfrågan omdirigerad till profilsidan.";
+$a->strings["Select a bookmark folder"] = "Välj en bokmärkeskatalog";
+$a->strings["Save Bookmark"] = "Spara bokmärke";
+$a->strings["URL of bookmark"] = "Bokmärkets URL";
+$a->strings["Description"] = "Beskrivning";
+$a->strings["Or enter new bookmark folder name"] = "Eller ange nytt namn på bokmärkeskatalog";
+$a->strings["Room not found"] = "Rum hittas inte";
+$a->strings["Leave Room"] = "Lämna rummet";
+$a->strings["Delete This Room"] = "Ta bort det här rummet";
+$a->strings["I am away right now"] = "Jag är borta för tillfället";
+$a->strings["I am online"] = "Jag är online";
+$a->strings["Bookmark this room"] = "Bokmärk det här rummet";
+$a->strings["New Chatroom"] = "Nytt chattrum";
+$a->strings["Chatroom Name"] = "Namn på chattrum";
+$a->strings["%1\$s's Chatrooms"] = "%1\$ss chattrum";
+$a->strings["Away"] = "Borta";
+$a->strings["Online"] = "Online";
+$a->strings["Please login."] = "Logga in.";
+$a->strings["Item not found"] = "Posten hittas inte";
+$a->strings["Item is not editable"] = "Posten går ej att redigera";
+$a->strings["Edit post"] = "Redigera inlägg";
+$a->strings["Delete item?"] = "Ta bort posten?";
+$a->strings["Insert YouTube video"] = "Infoga Youtube-video";
+$a->strings["Insert Vorbis [.ogg] video"] = "Infoga Vorbis [.ogg]-video";
+$a->strings["Insert Vorbis [.ogg] audio"] = "Infoga Vorbis [.ogg]-ljud";
+$a->strings["Channel removals are not allowed within 48 hours of changing the account password."] = "Borttagning av kanal tillåts inte inom 48 timmar efter att kontolösenordet har ändrats.";
+$a->strings["Remove This Channel"] = "Ta bort den här kanalen";
+$a->strings["This will completely remove this channel from the network. Once this has been done it is not recoverable."] = "Det här kommer att ta bort den här kanalen helt från nätverket. När det är gjort går det inte att återställa den.";
+$a->strings["Please enter your password for verification:"] = "Ange ditt lösenord för att bekräfta:";
+$a->strings["Remove this channel and all its clones from the network"] = "Ta bort den här kanalen och alla dess kloner från nätverket";
+$a->strings["By default only the instance of the channel located on this hub will be removed from the network"] = "Som standard kommer bara den här hubbens instans av kanalen att tas bort från nätverket";
+$a->strings["Remove Channel"] = "Ta bort kanal";
+$a->strings["No channel."] = "Ingen kanal.";
+$a->strings["Common connections"] = "Gemensamma kontakter";
+$a->strings["No connections in common."] = "Inga gemensamma kontakter.";
+$a->strings["We encountered a problem while logging in with the OpenID you provided. Please check the correct spelling of the ID."] = "Vi drabbades av ett problem vid inloggningen med OpenID:t du uppgav. Kontrollera att ID:t är korrekt stavat.";
+$a->strings["The error message was:"] = "Felmeddelandet var:";
+$a->strings["Authentication failed."] = "Inloggning misslyckades.";
+$a->strings["Remote Authentication"] = "Fjärrinloggning";
+$a->strings["Enter your channel address (e.g. channel@example.com)"] = "Ange din kanaladress (t.ex. kanal@example.com)";
+$a->strings["Authenticate"] = "Autentisera";
+$a->strings["No valid account found."] = "Inget giltigt konto hittades.";
+$a->strings["Password reset request issued. Check your email."] = "Lösenordsåterställning har skickats. Kontrollera din e-post.";
+$a->strings["Site Member (%s)"] = "Servermedlem (%s)";
+$a->strings["Password reset requested at %s"] = "Lösenordsåterställning begärd på %s";
+$a->strings["Request could not be verified. (You may have previously submitted it.) Password reset failed."] = "Begäran kunde inte bekräftas. (Du kan ha skickat den tidigare.) Lösenordsåterställningen misslyckades.";
+$a->strings["Password Reset"] = "Lösenordsåterställning";
+$a->strings["Your password has been reset as requested."] = "Ditt lösenord har återställts som begärt.";
+$a->strings["Your new password is"] = "Ditt nya lösenord är";
+$a->strings["Save or copy your new password - and then"] = "Spara eller kopiera ditt nya lösenord - ";
+$a->strings["click here to login"] = "klicka sedan här för att logga in";
+$a->strings["Your password may be changed from the <em>Settings</em> page after successful login."] = "Ditt lösenord kan bytas från sidan <em>Inställningar</em> när du är inloggad.";
+$a->strings["Your password has changed at %s"] = "Ditt lösenord byttes på %s";
+$a->strings["Forgot your Password?"] = "Glömt lösenordet?";
+$a->strings["Enter your email address and submit to have your password reset. Then check your email for further instructions."] = "Ange din e-postadress och skicka för att återställa ditt lösenord. Kontrollera sedan din e-post för vidare instruktioner.";
+$a->strings["Email Address"] = "E-postadress";
+$a->strings["Reset"] = "Återställ";
$a->strings["Could not access contact record."] = "Kunde inte komma åt kontaktuppgifter.";
$a->strings["Could not locate selected profile."] = "Kunde inte hitta vald profil.";
$a->strings["Connection updated."] = "Kontakt uppdaterad.";
$a->strings["Failed to update connection record."] = "Misslyckades att uppdatera kontaktuppgifter.";
+$a->strings["Blocked"] = "Blockerade";
+$a->strings["Ignored"] = "Ignorerade";
+$a->strings["Hidden"] = "Dolda";
+$a->strings["Archived"] = "Arkiverade";
+$a->strings["All"] = "Alla";
+$a->strings["Suggest new connections"] = "Föreslå nya kontakter";
+$a->strings["New Connections"] = "Nya kontakter";
+$a->strings["Show pending (new) connections"] = "Visa väntande (nya) kontakter";
+$a->strings["Show all connections"] = "Visa alla kontakter";
+$a->strings["Unblocked"] = "Ej blockerade";
+$a->strings["Only show unblocked connections"] = "Visa endast ej blockerade kontakter";
+$a->strings["Only show blocked connections"] = "Visa endast blockerade kontakter";
+$a->strings["Only show ignored connections"] = "Visa endast ignorerade kontakter";
+$a->strings["Only show archived connections"] = "Visa endast arkiverade kontakter";
+$a->strings["Only show hidden connections"] = "Visa endast dolda kontakter";
+$a->strings["%1\$s [%2\$s]"] = "%1\$s [%2\$s]";
+$a->strings["Edit connection"] = "Redigera kontakt";
+$a->strings["Search your connections"] = "Sök bland dina kontakter";
+$a->strings["Finding: "] = "Sökning efter: ";
+$a->strings["sent you a private message"] = "skickade ett privat meddelande till dig";
+$a->strings["added your channel"] = "lade till din kanal";
+$a->strings["posted an event"] = "skapade en händelse";
+$a->strings["is now connected to"] = "har nu kontakt med";
$a->strings["Could not access address book record."] = "Kunde inte komma åt adressboksuppgifter.";
$a->strings["Refresh failed - channel is currently unavailable."] = "Uppdatering misslyckades - kanalen är inte tillgänglig.";
$a->strings["Channel has been unblocked"] = "Kanalen är inte längre blockerad";
@@ -1339,6 +1329,8 @@ $a->strings["Refresh Permissions"] = "Uppdatera behörigheter";
$a->strings["Fetch updated permissions"] = "Hämta uppdaterade behörigheter";
$a->strings["Recent Activity"] = "Senaste aktiviteten";
$a->strings["View recent posts and comments"] = "Visa de senaste inläggen och kommentarerna";
+$a->strings["Unblock"] = "Avblockera";
+$a->strings["Block"] = "Blockera";
$a->strings["Block or Unblock this connection"] = "Blockera eller häv blockering av den här kontakten";
$a->strings["Unignore"] = "Sluta att ignorera";
$a->strings["Ignore"] = "Ignorera";
@@ -1350,12 +1342,11 @@ $a->strings["Unhide"] = "Sluta att dölja";
$a->strings["Hide"] = "Dölj";
$a->strings["Hide or Unhide this connection"] = "Dölj eller sluta att dölja den här kontakten";
$a->strings["Delete this connection"] = "Ta bort den här kontakten";
-$a->strings["Unknown"] = "Okända";
$a->strings["Approve this connection"] = "Godkänn den här kontakten";
$a->strings["Accept connection to allow communication"] = "Acceptera kontakten för att tillåta kommunikation";
-$a->strings["Automatic Permissions Settings"] = "Automatiska behörighetsinställningar";
$a->strings["Connections: settings for %s"] = "Kontakter: inställningar för %s";
-$a->strings["When receiving a channel introduction, any permissions provided here will be applied to the new connection automatically and the introduction approved. Leave this page if you do not wish to use this feature."] = "När en kanal presenterar sig för dig kommer alla behörigheter här att gälla för den nya kontakten automatiskt och presentationen att godkännas. Lämna den här sidan om du inte önskar använda den här funktionen.";
+$a->strings["Apply these permissions automatically"] = "Använd de här rättigheterna automatiskt";
+$a->strings["Apply the permissions indicated on this page to all new connections."] = "Använd rättigheterna angivna på den här sidan för alla nya kontakter.";
$a->strings["Slide to adjust your degree of friendship"] = "Dra för att justera er vänskapsnivå";
$a->strings["inherited"] = "ärvd";
$a->strings["Connection has no individual permissions!"] = "Kontakten har inga individuella behörigheter!";
@@ -1366,6 +1357,7 @@ $a->strings["Contact Information / Notes"] = "Kontaktinformation / anteckningar"
$a->strings["Edit contact notes"] = "Redigera anteckningar för kontakten";
$a->strings["Their Settings"] = "Deras inställningar";
$a->strings["My Settings"] = "Mina inställningar";
+$a->strings["Clear/Disable Automatic Permissions"] = "Rensa/inaktivera automatiska behörigheter";
$a->strings["Forum Members"] = "Forummedlemmar";
$a->strings["Soapbox"] = "Talarstol";
$a->strings["Full Sharing (typical social network permissions)"] = "Full delning (typiska behörigheter för sociala nätverk)";
@@ -1390,29 +1382,193 @@ $a->strings["Currently archived"] = "Arkiverad";
$a->strings["Currently pending"] = "Inväntar svar";
$a->strings["Hide this contact from others"] = "Dölj den här kontakten för andra";
$a->strings["Replies/likes to your public posts <strong>may</strong> still be visible"] = "Svar/gilla-reaktioner på dina offentliga inlägg <strong>kan</strong> fortfarande synas";
-$a->strings["Help with this feature"] = "Hjälp för den här funktionen";
-$a->strings["Layout Name"] = "Layoutnamn";
+$a->strings["Unable to lookup recipient."] = "Kunde inte hitta mottagare.";
+$a->strings["Unable to communicate with requested channel."] = "Kunde inte kommunicera med den begärda kanalen.";
+$a->strings["Cannot verify requested channel."] = "Kan inte bekräfta den begärda kanalen.";
+$a->strings["Selected channel has private message restrictions. Send failed."] = "Den valda kanalen har restriktioner för privata meddelanden. Misslyckades att skicka.";
+$a->strings["Message deleted."] = "Meddelande borttaget.";
+$a->strings["Message recalled."] = "Meddelande återkallat.";
+$a->strings["Send Private Message"] = "Skicka privat meddelande.";
+$a->strings["To:"] = "Till:";
+$a->strings["Subject:"] = "Ämne:";
+$a->strings["Your message:"] = "Ditt meddelande:";
+$a->strings["Send"] = "Skicka";
+$a->strings["Message not found."] = "Meddelandet hittades inte.";
+$a->strings["Delete message"] = "Ta bort meddelande";
+$a->strings["Recall message"] = "Ã…terkalla meddelande";
+$a->strings["Message has been recalled."] = "Meddelandet har återkallats.";
+$a->strings["Private Conversation"] = "Privat konversation";
+$a->strings["Delete conversation"] = "Ta bort konversation";
+$a->strings["No secure communications available. You <strong>may</strong> be able to respond from the sender's profile page."] = "Ingen säker kommunikationskanal tillgänglig. Du kan <strong>möjligtvis</strong> svara från avsändarens profilsida.";
+$a->strings["Send Reply"] = "Skicka svar";
+$a->strings["Page owner information could not be retrieved."] = "Information om sidans ägare kunde inte hittas.";
+$a->strings["Album not found."] = "Albumet hittades inte.";
+$a->strings["Delete Album"] = "Ta bort album";
+$a->strings["Delete Photo"] = "Ta bort foto";
+$a->strings["No photos selected"] = "Inga foton valda";
+$a->strings["Access to this item is restricted."] = "Åtkomst till den här posten är begränsat.";
+$a->strings["%1$.2f MB of %2$.2f MB photo storage used."] = "%1$.2f MB av %2$.2f MB fotolagring använt.";
+$a->strings["%1$.2f MB photo storage used."] = "%1$.2f MB fotolagring använt.";
+$a->strings["Upload Photos"] = "Ladda upp foton";
+$a->strings["Enter a new album name"] = "Ange ett nytt albumnamn";
+$a->strings["or select an existing one (doubleclick)"] = "eller välj ett befintligt (dubbelklicka)";
+$a->strings["Do not show a status post for this upload"] = "Visa inte en statusuppdatering för den här uppladdningen";
+$a->strings["Album name could not be decoded"] = "Albumnamn kunde inte tolkas";
+$a->strings["Contact Photos"] = "Kontaktfoton";
+$a->strings["Show Newest First"] = "Visa nyast först";
+$a->strings["Show Oldest First"] = "Visa äldst först";
+$a->strings["View Photo"] = "Visa foto";
+$a->strings["Edit Album"] = "Redigera album";
+$a->strings["Permission denied. Access to this item may be restricted."] = "Behörighet saknas. Åtkomst till den här posten kan vara begränsat.";
+$a->strings["Photo not available"] = "Foto inte tillgängligt";
+$a->strings["Use as profile photo"] = "Använd som profilfoto";
+$a->strings["Private Photo"] = "Privat foto";
+$a->strings["View Full Size"] = "Visa fullstorlek";
+$a->strings["Edit photo"] = "Redigera foto";
+$a->strings["Rotate CW (right)"] = "Rotera medurs (höger)";
+$a->strings["Rotate CCW (left)"] = "Rotera moturs (vänster)";
+$a->strings["Caption"] = "Bildtext";
+$a->strings["Add a Tag"] = "Lägg till en tagg";
+$a->strings["Example: @bob, @Barbara_Jensen, @jim@example.com"] = "Exempel: @bob, @Barbara_Jensen, @jim@example.com";
+$a->strings["Flag as adult in album view"] = "Flagga som olämpligt för barn i albumvyn";
+$a->strings["In This Photo:"] = "PÃ¥ fotot:";
+$a->strings["View Album"] = "Visa album";
+$a->strings["Recent Photos"] = "Nya foton";
+$a->strings["Bookmark added"] = "Bokmärke tillagt";
+$a->strings["My Bookmarks"] = "Mina bokmärken";
+$a->strings["My Connections Bookmarks"] = "Mina kontakters bokmärken";
+$a->strings["This site is not a directory server"] = "Den här servern är inte en katalogserver";
+$a->strings["RedMatrix - Guests: Username: {your email address}, Password: +++"] = "RedMatrix - Gäster: Användarnamn {din e-postadress}, Lösenord: +++";
+$a->strings["network"] = "nätverk";
+$a->strings["Block Name"] = "Blocknamn";
+$a->strings["Edit Block"] = "Redigera block";
+$a->strings["Delete block?"] = "Ta bort block?";
+$a->strings["Delete Block"] = "Ta bort block";
+$a->strings["Layout updated."] = "Layout uppdaterad.";
+$a->strings["Edit System Page Description"] = "Redigera systemsidbeskrivning";
+$a->strings["Layout not found."] = "Layout hittas inte.";
+$a->strings["Module Name:"] = "Modulnamn:";
+$a->strings["Layout Help"] = "Layouthjälp";
+$a->strings["Edit Layout"] = "Redigera layout";
+$a->strings["Delete layout?"] = "Ta bort layout?";
+$a->strings["Delete Layout"] = "Ta bort layout";
+$a->strings["Red Matrix - &quot;The Network&quot;"] = "Red Matrix - &quot;Nätverket&quot;";
+$a->strings["Welcome to %s"] = "Välkommen till %s";
+$a->strings["Edit Webpage"] = "Redigera webbsida";
+$a->strings["Delete webpage?"] = "Ta bort webbsida?";
+$a->strings["Delete Webpage"] = "Ta bort webbsida";
+$a->strings["webpage"] = "webbsida";
+$a->strings["block"] = "block";
+$a->strings["layout"] = "layout";
+$a->strings["%s element installed"] = "%selement installerat";
+$a->strings["Image uploaded but image cropping failed."] = "Bilden laddades upp men beskärning misslyckades.";
+$a->strings["Image resize failed."] = "Ändring av bildstorlek misslyckades.";
+$a->strings["Shift-reload the page or clear browser cache if the new photo does not display immediately."] = "Shift-uppdatera sidan eller rensa webbläsarcachen om det nya fotot inte visas direkt.";
+$a->strings["Image exceeds size limit of %d"] = "Bilden överskrider storleksbegränsningen %d";
+$a->strings["Unable to process image."] = "Kunde inte behandla bilden.";
+$a->strings["Photo not available."] = "Fotot är inte tillgängligt.";
+$a->strings["Upload File:"] = "Ladda upp fil:";
+$a->strings["Select a profile:"] = "Välj en profil:";
+$a->strings["Upload Profile Photo"] = "Ladda upp profilfoto";
+$a->strings["skip this step"] = "hoppa över det här steget";
+$a->strings["select a photo from your photo albums"] = "välj ett foto från dina fotoalbum";
+$a->strings["Crop Image"] = "Beskär bild";
+$a->strings["Please adjust the image cropping for optimum viewing."] = "Justera bildens beskärning för bästa utseende.";
+$a->strings["Done Editing"] = "Klar med redigering";
+$a->strings["Image uploaded successfully."] = "Bilduppladdning lyckades.";
+$a->strings["Image upload failed."] = "Bilduppladdning misslyckades.";
+$a->strings["Image size reduction [%s] failed."] = "Krympning av bilden [%s] misslyckades.";
+$a->strings["Like/Dislike"] = "Gilla/ogilla";
+$a->strings["This action is restricted to members."] = "Den här åtgärden fungerar bara för medlemmar.";
+$a->strings["Please <a href=\"rmagic\">login with your RedMatrix ID</a> or <a href=\"register\">register as a new RedMatrix member</a> to continue."] = "<a href=\"rmagic\">Logga in med ditt RedMatrix-ID</a> eller <a href=\"register\">registrera dig som ny RedMatrix medlem</a> för att fortsätta.";
+$a->strings["Invalid request."] = "Ogiltig begäran.";
+$a->strings["thing"] = "sak";
+$a->strings["Channel unavailable."] = "Kanalen kan ej nås.";
+$a->strings["Previous action reversed."] = "Föregående åtgärd återställdes.";
+$a->strings["Action completed."] = "Åtgärden slutfördes.";
+$a->strings["Thank you."] = "Tack.";
$a->strings["Help:"] = "Hjälp:";
$a->strings["Not Found"] = "Hittas inte";
-$a->strings["Page not found."] = "Sidan hittas inte.";
-$a->strings["We encountered a problem while logging in with the OpenID you provided. Please check the correct spelling of the ID."] = "Vi drabbades av ett problem vid inloggningen med OpenID:t du uppgav. Kontrollera att ID:t är korrekt stavat.";
-$a->strings["The error message was:"] = "Felmeddelandet var:";
-$a->strings["Authentication failed."] = "Autentisering misslyckades.";
-$a->strings["Remote Authentication"] = "Fjärrautentisering.";
-$a->strings["Enter your channel address (e.g. channel@example.com)"] = "Ange din kanaladress (t.ex. kanal@example.com)";
-$a->strings["Authenticate"] = "Autentisera";
-$a->strings["Invalid item."] = "Ogiltig post.";
-$a->strings["No such group"] = "Ingen sådan grupp";
-$a->strings["Search Results For:"] = "Sökresultat för:";
-$a->strings["Collection is empty"] = "Sammanhanget är tomt";
-$a->strings["Collection: "] = "Sammanhang: ";
-$a->strings["Connection: "] = "Kontakt:";
-$a->strings["Invalid connection."] = "Ogiltig kontakt.";
+$a->strings["Thing updated"] = "Föremål uppdaterat";
+$a->strings["Object store: failed"] = "Objektlagring: misslyckades";
+$a->strings["Thing added"] = "Föremål tillagt";
+$a->strings["OBJ: %1\$s %2\$s %3\$s"] = "OBJ: %1\$s %2\$s %3\$s";
+$a->strings["Show Thing"] = "Visa föremål";
+$a->strings["item not found."] = "föremål hittades inte.";
+$a->strings["Edit Thing"] = "Redigera föremål";
+$a->strings["Select a profile"] = "Välj en profil";
+$a->strings["Post an activity"] = "Posta en aktivitet";
+$a->strings["Only sends to viewers of the applicable profile"] = "Skickar bara till de som tittar på den aktuella profilen";
+$a->strings["Name of thing e.g. something"] = "Namn på föremål, t.ex. någonting";
+$a->strings["URL of thing (optional)"] = "URL för föremål (frivilligt)";
+$a->strings["URL for photo of thing (optional)"] = "URL för foto på föremål (frivilligt)";
+$a->strings["Add Thing to your Profile"] = "Lägg till föremål till din profil";
+$a->strings["Contact not found."] = "Kontakten hittades inte.";
+$a->strings["Friend suggestion sent."] = "Vänförfrågan skickad.";
+$a->strings["Suggest Friends"] = "Föreslå vänner";
+$a->strings["Suggest a friend for %s"] = "Föreslå en vän för %s";
+$a->strings["Permission Denied."] = "Behörighet saknas.";
+$a->strings["File not found."] = "Filen hittas inte.";
+$a->strings["Edit file permissions"] = "Redigera filrättigheter";
+$a->strings["Set/edit permissions"] = "Ställ in/ändra behörigheter";
+$a->strings["Include all files and sub folders"] = "Inkludera alla filer och underkataloger";
+$a->strings["Return to file list"] = "Återgå till fillistan";
+$a->strings["Copy/paste this code to attach file to a post"] = "Kopiera/klistra in den här koden för att bifoga filen i ett inlägg";
+$a->strings["Copy/paste this URL to link file from a web page"] = "Kopiera/klistra in den här URL:en för att länka till filen från en webbsida";
+$a->strings["Continue"] = "Fortsätt";
+$a->strings["Premium Channel Setup"] = "Inställning av premiumkanal";
+$a->strings["Enable premium channel connection restrictions"] = "Aktivera kontaktrestriktioner för premiumkanal";
+$a->strings["Please enter your restrictions or conditions, such as paypal receipt, usage guidelines, etc."] = "Ange dina restriktioner och villkor, som Paypal-kvitto, användarriktlinjer, etc.";
+$a->strings["This channel may require additional steps or acknowledgement of the following conditions prior to connecting:"] = "Den här kanalen kan kräva ytterligare steg eller godkännande av följande villkor innan anslutning:";
+$a->strings["Potential connections will then see the following text before proceeding:"] = "Potentiella kontakter kommer sedan att se följande text innan de går vidare:";
+$a->strings["By continuing, I certify that I have complied with any instructions provided on this page."] = "Genom att fortsätta intygar jag att jag har följt alla instruktioner som ges på den här sidan.";
+$a->strings["(No specific instructions have been provided by the channel owner.)"] = "(Inga specifika instruktioner har givits av kanalägaren.)";
+$a->strings["Restricted or Premium Channel"] = "Begränsad kanal eller premiumkanal";
+$a->strings["- select -"] = "- välj -";
+$a->strings["Location not found."] = "Platsen hittades inte.";
+$a->strings["Primary location cannot be removed."] = "Huvudplatsen kan inte tas bort.";
+$a->strings["No locations found."] = "Inga platser hittades.";
+$a->strings["Manage Channel Locations"] = "Hantera kanalplatser";
+$a->strings["Location (address)"] = "Plats (adress)";
+$a->strings["Primary Location"] = "Huvudplats";
+$a->strings["Drop location"] = "Ta bort plats";
+$a->strings["Channel added."] = "Kanal tillagd.";
+$a->strings["Your service plan only allows %d channels."] = "Din tjänstenivå tillåter bara %d kanaler.";
+$a->strings["Nothing to import."] = "Inget att importera.";
+$a->strings["Unable to download data from old server"] = "Kunde inte ladda ner data från den gamla servern";
+$a->strings["Imported file is empty."] = "Den importerade filen är tom.";
+$a->strings["Cannot create a duplicate channel identifier on this system. Import failed."] = "Kan inte skapa ett dubblerat kanal-ID på det här systemet. Import misslyckades.";
+$a->strings["Unable to create a unique channel address. Import failed."] = "Kan inte skapa en unik kanaladress. Import misslyckades.";
+$a->strings["Channel clone failed. Import failed."] = "Kloning av kanalen misslyckades. Import misslyckades.";
+$a->strings["Cloned channel not found. Import failed."] = "Den klonade kanalen hittas inte. Import misslyckades.";
+$a->strings["Import completed."] = "Import slutförd.";
+$a->strings["You must be logged in to use this feature."] = "Du måste vara inloggad för att kunna använda den här funktionen.";
+$a->strings["Import Channel"] = "Importera kanal";
+$a->strings["Use this form to import an existing channel from a different server/hub. You may retrieve the channel identity from the old server/hub via the network or provide an export file. Only identity and connections/relationships will be imported. Importation of content is not yet available."] = "Använd det här formuläret för att importera en befintlig kanal från en annan server/hubb. Du kan få kanal-ID:t från den gamla servern/hubben över nätverket eller tillhandahålla en exportfil. Endast identitet och kontakter/relationer kommer att importeras. Import av innehåll stöds ännu inte.";
+$a->strings["File to Upload"] = "Fil att ladda upp";
+$a->strings["Or provide the old server/hub details"] = "Eller ge uppgifter om den gamla servern/hubben";
+$a->strings["Your old identity address (xyz@example.com)"] = "Din gamla identitetsadress (xyz@example.com)";
+$a->strings["Your old login email address"] = "Din gamla e-postadress för inloggning";
+$a->strings["Your old login password"] = "Ditt gamla inloggningslösenord";
+$a->strings["For either option, please choose whether to make this hub your new primary address, or whether your old location should continue this role. You will be able to post from either location, but only one can be marked as the primary location for files, photos, and media."] = "Ange i bägge fallen om den här hubben ska vara din nya primära adress eller om den gamla platsen ska fortsätta att ha den rollen. Du kommer att kunna posta från båda platser, men bara en kan vara primärt utrymme för filer, foton och media.";
+$a->strings["Make this hub my primary location"] = "Gör den här hubben till min primära plats";
+$a->strings["Import existing posts if possible"] = "Importera befintliga inlägg om möjligt";
+$a->strings["Unable to locate original post."] = "Kunde inte hitta originalinlägget.";
+$a->strings["Empty post discarded."] = "Tomt inlägg förkastat.";
+$a->strings["Executable content type not permitted to this channel."] = "Körbart innehåll tillåts inte i den här kanalen.";
+$a->strings["System error. Post not saved."] = "Systemfel. Inlägget inte sparat.";
+$a->strings["You have reached your limit of %1$.0f top level posts."] = "Du har nått din gräns på %1$.0f toppnivåinlägg.";
+$a->strings["You have reached your limit of %1$.0f webpages."] = "Du har nått din gräns på %1$.0f webbsidor.";
+$a->strings["No suggestions available. If this is a new site, please try again in 24 hours."] = "Inga förslag tillgängliga. Om det här är en ny server, försök igen om 24 timmar.";
+$a->strings["Help with this feature"] = "Hjälp för den här funktionen";
+$a->strings["Layout Name"] = "Layoutnamn";
+$a->strings["%1\$s tagged %2\$s's %3\$s with %4\$s"] = "%1\$s taggade%2\$ss %3\$s med %4\$s";
$a->strings["Profile not found."] = "Profil hittades inte.";
$a->strings["Profile deleted."] = "Profil borttagen.";
$a->strings["Profile-"] = "Profil-";
$a->strings["New profile created."] = "Ny profil skapad.";
$a->strings["Profile unavailable to clone."] = "Profil inte tillgänglig för kloning.";
+$a->strings["Profile unavailable to export."] = "Profil inte tillgänglig för export.";
$a->strings["Profile Name is required."] = "Profilnamn krävs.";
$a->strings["Marital Status"] = "Civilstånd";
$a->strings["Romantic Partner"] = "Romantisk partner";
@@ -1425,7 +1581,7 @@ $a->strings["Gender"] = "Kön";
$a->strings["Sexual Preference"] = "Sexuell preferens";
$a->strings["Homepage"] = "Hemsida";
$a->strings["Interests"] = "Intressen";
-$a->strings["Location"] = "Plats";
+$a->strings["Address"] = "Adress";
$a->strings["Profile updated."] = "Profil uppdaterad.";
$a->strings["Hide your contact/friend list from viewers of this profile?"] = "Dölj din kontakt-/vänlista för de som ser den här profilen";
$a->strings["Edit Profile Details"] = "Redigera profildetaljer";
@@ -1434,11 +1590,13 @@ $a->strings["Change Profile Photo"] = "Byt profilfoto";
$a->strings["Create a new profile using these settings"] = "Skapa en ny profil utifrån de här inställningarna";
$a->strings["Clone this profile"] = "Klona den här profilen";
$a->strings["Delete this profile"] = "Ta bort den här profilen";
+$a->strings["Import profile from file"] = "Importera profil från fil";
+$a->strings["Export profile to file"] = "Exportera profil som fil";
$a->strings["Profile Name:"] = "Profilnamn:";
$a->strings["Your Full Name:"] = "Ditt fulllständiga namn:";
$a->strings["Title/Description:"] = "Titel/beskrivning:";
$a->strings["Your Gender:"] = "Ditt kön:";
-$a->strings["Birthday (%s):"] = "Födelsedag (%s):";
+$a->strings["Birthday :"] = "Födelsedag:";
$a->strings["Street Address:"] = "Gatuadress:";
$a->strings["Locality/City:"] = "Ort:";
$a->strings["Postal/Zip Code:"] = "Postnummer:";
@@ -1464,314 +1622,316 @@ $a->strings["Film/dance/culture/entertainment"] = "Film/dans/kultur/underhållni
$a->strings["Love/romance"] = "Kärlek/romantik";
$a->strings["Work/employment"] = "Arbete/sysselsättning";
$a->strings["School/education"] = "Skola/utbildning";
-$a->strings["This is your <strong>public</strong> profile.<br />It <strong>may</strong> be visible to anybody using the internet."] = "Det här är din <strong>offentliga</strong> profil.<br />Den <strong>kan</strong> ses av vem som helst med tillgång till Internet.";
+$a->strings["This is your default profile."] = "Det här är din standardprofil.";
+$a->strings["Age: "] = "Ã…lder:";
$a->strings["Edit/Manage Profiles"] = "Redigera/hantera profiler";
$a->strings["Add profile things"] = "Lägg till profilsaker";
$a->strings["Include desirable objects in your profile"] = "Inkludera fina prylar i din profil";
-$a->strings["This site is not a directory server"] = "Den här servern är inte en katalogserver";
-$a->strings["Failed to create source. No channel selected."] = "Misslyckades att skapa källa. Ingen kanal vald.";
-$a->strings["Source created."] = "Källa skapad.";
-$a->strings["Source updated."] = "Källa uppdaterad.";
-$a->strings["*"] = "*";
-$a->strings["Manage remote sources of content for your channel."] = "Hantera fjärrkällor med innehåll för din kanal.";
-$a->strings["New Source"] = "Ny källa";
-$a->strings["Import all or selected content from the following channel into this channel and distribute it according to your channel settings."] = "Importera allt eller valt innehåll från följande kanal till den här kanalen och distribuera det enligt dina kanalinställningar.";
-$a->strings["Only import content with these words (one per line)"] = "Importera endast innehåll med de här orden (ett per rad)";
-$a->strings["Leave blank to import all public content"] = "Lämna blankt för att importera allt offentligt innehåll";
-$a->strings["Channel Name"] = "Kanalnamn";
-$a->strings["Source not found."] = "Källa hittades inte.";
-$a->strings["Edit Source"] = "Redigera källa";
-$a->strings["Delete Source"] = "Ta bort källa";
-$a->strings["Source removed"] = "Källa borttagen";
-$a->strings["Unable to remove source."] = "Kunde inte ta bort källa.";
-$a->strings["Block Name"] = "Blocknamn";
-$a->strings["Hub not found."] = "Hubb hittades inte.";
-$a->strings["You must be logged in to see this page."] = "Du måste vara inloggad för att se den här sidan.";
-$a->strings["Room not found"] = "Rum hittas inte";
-$a->strings["Leave Room"] = "Lämna rummet";
-$a->strings["I am away right now"] = "Jag är borta för tillfället";
-$a->strings["I am online"] = "Jag är online";
-$a->strings["Bookmark this room"] = "Bokmärk det här rummet";
-$a->strings["New Chatroom"] = "Nytt chattrum";
-$a->strings["Chatroom Name"] = "Namn på chattrum";
-$a->strings["%1\$s's Chatrooms"] = "%1\$ss chattrum";
-$a->strings["Version %s"] = "Version %s";
-$a->strings["Installed plugins/addons/apps:"] = "Installerade tillägg/moduler/appar:";
-$a->strings["No installed plugins/addons/apps"] = "Inga installerade tillägg/moduler/appar";
-$a->strings["Red"] = "Red";
-$a->strings["This is a hub of the Red Matrix - a global cooperative network of decentralised privacy enhanced websites."] = "Det här är en hubb som hör till Red Matrix - ett globalt samverkande nätverk av decentraliserade integritetsstärkta webbplatser.";
-$a->strings["Running at web location"] = "Kör på webbutrymmet";
-$a->strings["Please visit <a href=\"http://getzot.com\">GetZot.com</a> to learn more about the Red Matrix."] = "Besök <a href=\"http://getzot.com\">GetZot.com</a> lära dig mer om Red Matrix.";
-$a->strings["Bug reports and issues: please visit"] = "Buggrapporter och problem: besök";
-$a->strings["Suggestions, praise, etc. - please email \"redmatrix\" at librelist - dot com"] = "Förslag, uppskattning, etc. - maila \"redmatrix\" at librelist - dot com";
-$a->strings["Site Administrators"] = "Serveradministratörer";
-$a->strings["Add a Channel"] = "Lägg till en kanal";
-$a->strings["A channel is your own collection of related web pages. A channel can be used to hold social network profiles, blogs, conversation groups and forums, celebrity pages, and much more. You may create as many channels as your service provider allows."] = "En kanal är din egen samling av relaterade webbsidor. En kanal kan användas för att innehålla sociala nätverksprofiler, bloggar, konversationsgrupper och forum, fansidor, och mycket mer. Du kan skapa så många kanaler som din tjänsteleverantör tillåter.";
-$a->strings["Examples: \"Bob Jameson\", \"Lisa and her Horses\", \"Soccer\", \"Aviation Group\" "] = "Exempel: \"Bob Jameson\", \"Lisa och hennes hästar\", \"Fotboll\", \"Flyggruppen\" ";
-$a->strings["Choose a short nickname"] = "Välj ett kort smeknamn";
-$a->strings["Your nickname will be used to create an easily remembered channel address (like an email address) which you can share with others."] = "Ditt smeknamn används för att skapa en kanaladress som är lätt att komma ihåg (som en e-postadress) som du kan dela med andra.";
-$a->strings["Or <a href=\"import\">import an existing channel</a> from another location"] = "Eller <a href=\"import\">importera en befintlig kanal</a> från en annan plats";
-$a->strings["No valid account found."] = "Inget giltigt konto hittades.";
-$a->strings["Password reset request issued. Check your email."] = "Lösenordsåterställning har skickats. Kontrollera din e-post.";
-$a->strings["Site Member (%s)"] = "Servermedlem (%s)";
-$a->strings["Password reset requested at %s"] = "Lösenordsåterställning begärd på %s";
-$a->strings["Request could not be verified. (You may have previously submitted it.) Password reset failed."] = "Begäran kunde inte bekräftas. (Du kan ha skickat den tidigare.) Lösenordsåterställningen misslyckades.";
-$a->strings["Password Reset"] = "Lösenordsåterställning";
-$a->strings["Your password has been reset as requested."] = "Ditt lösenord har återställts som begärt.";
-$a->strings["Your new password is"] = "Ditt nya lösenord är";
-$a->strings["Save or copy your new password - and then"] = "Spara eller kopiera ditt nya lösenord - ";
-$a->strings["click here to login"] = "klicka sedan här för att logga in";
-$a->strings["Your password may be changed from the <em>Settings</em> page after successful login."] = "Ditt lösenord kan bytas från sidan <em>Inställningar</em> när du är inloggad.";
-$a->strings["Your password has changed at %s"] = "Ditt lösenord byttes på %s";
-$a->strings["Forgot your Password?"] = "Glömt lösenordet?";
-$a->strings["Enter your email address and submit to have your password reset. Then check your email for further instructions."] = "Ange din e-postadress och skicka för att återställa ditt lösenord. Kontrollera sedan din e-post för vidare instruktioner.";
-$a->strings["Email Address"] = "E-postadress";
-$a->strings["Reset"] = "Återställ";
-$a->strings["Edit Block"] = "Redigera block";
-$a->strings["Delete block?"] = "Ta bort block?";
-$a->strings["Delete Block"] = "Ta bort block";
-$a->strings["Select a bookmark folder"] = "Välj en bokmärkeskatalog";
-$a->strings["Save Bookmark"] = "Spara bokmärke";
-$a->strings["URL of bookmark"] = "Bokmärkets URL";
-$a->strings["Description"] = "Beskrivning";
-$a->strings["Or enter new bookmark folder name"] = "Eller ange nytt namn på bokmärkeskatalog";
-$a->strings["Nothing to import."] = "Inget att importera.";
-$a->strings["Unable to download data from old server"] = "Kunde inte ladda ner data från den gamla servern";
-$a->strings["Imported file is empty."] = "Den importerade filen är tom.";
-$a->strings["Cannot create a duplicate channel identifier on this system. Import failed."] = "Kan inte skapa ett dubblerat kanal-ID på det här systemet. Import misslyckades.";
-$a->strings["Channel clone failed. Import failed."] = "Kloning av kanalen misslyckades. Import misslyckades.";
-$a->strings["Cloned channel not found. Import failed."] = "Den klonade kanalen hittas inte. Import misslyckades.";
-$a->strings["Import completed."] = "Import slutförd.";
-$a->strings["You must be logged in to use this feature."] = "Du måste vara inloggad för att kunna använda den här funktionen.";
-$a->strings["Import Channel"] = "Importera kanal";
-$a->strings["Use this form to import an existing channel from a different server/hub. You may retrieve the channel identity from the old server/hub via the network or provide an export file. Only identity and connections/relationships will be imported. Importation of content is not yet available."] = "Använd det här formuläret för att importera en befintlig kanal från en annan server/hubb. Du kan få kanal-ID:t från den gamla servern/hubben över nätverket eller tillhandahålla en exportfil. Endast identitet och kontakter/relationer kommer att importeras. Import av innehåll stöds ännu inte.";
-$a->strings["File to Upload"] = "Fil att ladda upp";
-$a->strings["Or provide the old server/hub details"] = "Eller ge uppgifter om den gamla servern/hubben";
-$a->strings["Your old identity address (xyz@example.com)"] = "Din gamla identitetsadress (xyz@example.com)";
-$a->strings["Your old login email address"] = "Din gamla e-postadress för inloggning";
-$a->strings["Your old login password"] = "Ditt gamla inloggningslösenord";
-$a->strings["For either option, please choose whether to make this hub your new primary address, or whether your old location should continue this role. You will be able to post from either location, but only one can be marked as the primary location for files, photos, and media."] = "Ange i bägge fallen om den här hubben ska vara din nya primära adress eller om den gamla platsen ska fortsätta att ha den rollen. Du kommer att kunna posta från båda platser, men bara en kan vara primärt utrymme för filer, foton och media.";
-$a->strings["Make this hub my primary location"] = "Gör den här hubben till min primära plats";
+$a->strings["Tag removed"] = "Tagg borttagen";
+$a->strings["Remove Item Tag"] = "Ta bort innehållstagg";
+$a->strings["Select a tag to remove: "] = "Välj en tagg att ta bort: ";
+$a->strings["Theme settings updated."] = "Temainställningar uppdaterade.";
+$a->strings["Site"] = "Server";
+$a->strings["Accounts"] = "Konton";
+$a->strings["Channels"] = "Kanaler";
+$a->strings["Plugins"] = "Tillägg";
+$a->strings["Themes"] = "Teman";
+$a->strings["Server"] = "Server";
+$a->strings["Profile Config"] = "Profilkonfiguration";
+$a->strings["DB updates"] = "Databasuppdateringar";
+$a->strings["Logs"] = "Loggar";
+$a->strings["Plugin Features"] = "Tilläggsfunktioner";
+$a->strings["User registrations waiting for confirmation"] = "Användarregistreringar som behöver bekräftas";
+$a->strings["Message queues"] = "Meddelandeköer";
+$a->strings["Administration"] = "Administration";
+$a->strings["Summary"] = "Sammanfattning";
+$a->strings["Registered users"] = "Registrerade användare";
+$a->strings["Pending registrations"] = "Pågående registreringar";
+$a->strings["Version"] = "Version";
+$a->strings["Active plugins"] = "Aktiva tillägg";
+$a->strings["Site settings updated."] = "Serverinställningar uppdaterade.";
+$a->strings["experimental"] = "experimentellt";
+$a->strings["unsupported"] = "stöds ej";
+$a->strings["Yes - with approval"] = "Ja - med godkännande";
+$a->strings["My site is not a public server"] = "Min server är inte offentlig";
+$a->strings["My site has paid access only"] = "Min server har endast åtkomst mot betalning";
+$a->strings["My site has free access only"] = "Min server har endast gratis åtkomst";
+$a->strings["My site offers free accounts with optional paid upgrades"] = "Min server erbjuder gratis konton med uppgradering mot betalning";
+$a->strings["File upload"] = "Filuppladdning";
+$a->strings["Policies"] = "Policyer";
+$a->strings["Site name"] = "Servernamn";
+$a->strings["Banner/Logo"] = "Banner/logga";
+$a->strings["Administrator Information"] = "Administratörsinformation";
+$a->strings["Contact information for site administrators. Displayed on siteinfo page. BBCode can be used here"] = "Kontaktinfo till sidadministratörer. Visas på sidinfosidan. BBCode kan användas här";
+$a->strings["System language"] = "Systemspråk";
+$a->strings["System theme"] = "Systemtema";
+$a->strings["Default system theme - may be over-ridden by user profiles - <a href='#' id='cnftheme'>change theme settings</a>"] = "Förvalt systemtema - kan åsidosättas i användarprofiler - <a href='#' id='cnftheme'>ändra temainställningar</a>";
+$a->strings["Mobile system theme"] = "Mobilt systemtema";
+$a->strings["Theme for mobile devices"] = "Tema för mobila enheter";
+$a->strings["Enable Diaspora Protocol"] = "Aktivera protokoll för Diaspora";
+$a->strings["Communicate with Diaspora and Friendica - experimental"] = "Kommunicera med Diaspora och Friendica - experimentellt";
+$a->strings["Allow Feeds as Connections"] = "Tillåt flöden som kontakter";
+$a->strings["(Heavy system resource usage)"] = "(systemresurskrävande)";
+$a->strings["Maximum image size"] = "Maximal bildstorlek";
+$a->strings["Maximum size in bytes of uploaded images. Default is 0, which means no limits."] = "Maximal storlek i byte för uppladdade bilder. Standard är 0, vilket innebär ingen storleksbegränsning.";
+$a->strings["Does this site allow new member registration?"] = "Tillåter den här servern nya medlemmar att registrera sig?";
+$a->strings["Which best describes the types of account offered by this hub?"] = "Vilket beskriver bäst kontotypen som erbjuds på den här hubben?";
+$a->strings["Register text"] = "Registreringstext";
+$a->strings["Will be displayed prominently on the registration page."] = "Visas tydligt på registreringssidan.";
+$a->strings["Accounts abandoned after x days"] = "Konto övergivet efter x dagar";
+$a->strings["Will not waste system resources polling external sites for abandonded accounts. Enter 0 for no time limit."] = "Slösar inte systemresurser genom att fråga externa servrar efter övergivna konton. 0 innebär ingen tidsbegränsning.";
+$a->strings["Allowed friend domains"] = "Tillåtna vändomäner";
+$a->strings["Comma separated list of domains which are allowed to establish friendships with this site. Wildcards are accepted. Empty to allow any domains"] = "Kommaseparerad lista med domäner som tillåts att upprätta ett vänförhållande med den här servern. Jokertecken är tillåtna. Töm för att tillåta alla domäner.";
+$a->strings["Allowed email domains"] = "Tillåtna e-postdomäner";
+$a->strings["Comma separated list of domains which are allowed in email addresses for registrations to this site. Wildcards are accepted. Empty to allow any domains"] = "Kommaseparerad lista med domäner som tillåts i e-postadresser för registreringar på den här servern. Jokertecken är tillåtna. Töm för att tillåta alla domäner.";
+$a->strings["Block public"] = "Blockera offentlig åtkomst";
+$a->strings["Check to block public access to all otherwise public personal pages on this site unless you are currently logged in."] = "Välj för att blockera åtkomst till alla personliga sidor som annars skulle vara offentliga på den här servern om man inte är inloggad.";
+$a->strings["Verify Email Addresses"] = "Bekräfta e-postadress";
+$a->strings["Check to verify email addresses used in account registration (recommended)."] = "Välj för att bekräfta e-postadresser som används för kontoregistrering (rekommenderas).";
+$a->strings["Force publish"] = "Tvinga publicering";
+$a->strings["Check to force all profiles on this site to be listed in the site directory."] = "Välj för att tvinga alla profiler på den här servern att listas i serverkatalogen.";
+$a->strings["Disable discovery tab"] = "Inaktivera upptäck-fliken";
+$a->strings["Remove the tab in the network view with public content pulled from sources chosen for this site."] = "Ta bort fliken i nätverksvyn med offentligt innehåll som hämtas från källor valda för den här servern.";
+$a->strings["No login on Homepage"] = "Ingen inloggning på hemsidan";
+$a->strings["Check to hide the login form from your sites homepage when visitors arrive who are not logged in (e.g. when you put the content of the homepage in via the site channel)."] = "Välj för att gömma inloggningsformuläret från serverns hemsida för oinloggade besökare (t.ex. när du lägger in hemsideinnehållet via serverkanalen).";
+$a->strings["Proxy user"] = "Proxyanvändare";
+$a->strings["Proxy URL"] = "Proxy-URL";
+$a->strings["Network timeout"] = "Nätverkstimeout";
+$a->strings["Value is in seconds. Set to 0 for unlimited (not recommended)."] = "Värde i sekunder. Sätt till 0 för obegränsat (ej rekommenderat).";
+$a->strings["Delivery interval"] = "Leveransintervall";
+$a->strings["Delay background delivery processes by this many seconds to reduce system load. Recommend: 4-5 for shared hosts, 2-3 for virtual private servers. 0-1 for large dedicated servers."] = "Fördröj leveransprocesser som görs i bakgrunden så här många sekunder för att reducera systembelastningen. Rekommenderat: 4-5 för delade värdar, 2-3 för virtuella privata servrar. 0-1 för stora dedikerade servrar.";
+$a->strings["Poll interval"] = "Hämtningsintervall";
+$a->strings["Delay background polling processes by this many seconds to reduce system load. If 0, use delivery interval."] = "Fördröj hämtningsprocesser som görs i bakgrunden så här många sekunder för att reducera systembelastningen. Om 0 används leveransintervallet.";
+$a->strings["Maximum Load Average"] = "Maximal genomsnittsbelastning";
+$a->strings["Maximum system load before delivery and poll processes are deferred - default 50."] = "Maximal systembelastning innan leverans- och hämtningsprocesser skjuts upp - standard är 50.";
+$a->strings["No server found"] = "Ingen server hittad";
+$a->strings["ID"] = "ID";
+$a->strings["for channel"] = "för kanal";
+$a->strings["on server"] = "på server";
+$a->strings["Status"] = "Status";
+$a->strings["Update has been marked successful"] = "Uppdatering har markerats som genomförd";
+$a->strings["Executing %s failed. Check system logs."] = "Körning av %s misslyckades. Kontrollera systemloggarna.";
+$a->strings["Update %s was successfully applied."] = "Uppdatering %s genomfördes utan problem.";
+$a->strings["Update %s did not return a status. Unknown if it succeeded."] = "Uppdatering %s returnerade ingen status. Oklart om den lyckades.";
+$a->strings["Update function %s could not be found."] = "Uppdateringsfunktion %s kunde inte hittas.";
+$a->strings["No failed updates."] = "Inga misslyckade uppdateringar.";
+$a->strings["Failed Updates"] = "Misslyckade uppdateringar";
+$a->strings["Mark success (if update was manually applied)"] = "Markera som genomförd (om uppdateringen gjordes manuellt)";
+$a->strings["Attempt to execute this update step automatically"] = "Försök att köra den här uppdateringen automatiskt";
+$a->strings["%s user blocked/unblocked"] = array(
+ 0 => "%s användare blockerad/avblockerad",
+ 1 => "%s användare blockerade/avblockerade",
+);
+$a->strings["%s user deleted"] = array(
+ 0 => "%s användare borttagen",
+ 1 => "%s användare borttagna",
+);
+$a->strings["Account not found"] = "Konto hittas inte";
+$a->strings["User '%s' unblocked"] = "Användare '%s' avblockerad";
+$a->strings["User '%s' blocked"] = "Användare '%s' blockerad";
+$a->strings["Users"] = "Användare";
+$a->strings["select all"] = "välj alla";
+$a->strings["User registrations waiting for confirm"] = "Användarregistreringar som inväntar bekräftelse";
+$a->strings["Request date"] = "Ansökningsdatum";
+$a->strings["No registrations."] = "Inga registreringar.";
+$a->strings["Approve"] = "Godkänn";
+$a->strings["Deny"] = "Avslå";
+$a->strings["Register date"] = "Registreringsdatum";
+$a->strings["Last login"] = "Senaste inloggning";
+$a->strings["Expires"] = "Upphör att gälla";
+$a->strings["Service Class"] = "Tjänsteklass";
+$a->strings["Selected users will be deleted!\\n\\nEverything these users had posted on this site will be permanently deleted!\\n\\nAre you sure?"] = "Valda användare kommer att tas bort!\\n\\nAllt dessa användare har postat på den här servern kommer att raderas permanent!\\n\\nÄr du säker?";
+$a->strings["The user {0} will be deleted!\\n\\nEverything this user has posted on this site will be permanently deleted!\\n\\nAre you sure?"] = "Användaren {0} kommer att tas bort!\\n\\nAllt den här användaren har postat på den här servern kommer att raderas permanent!\\n\\nÄr du säker?";
+$a->strings["%s channel censored/uncensored"] = array(
+ 0 => "%s kanal censurerad/avcensurerad",
+ 1 => "%s kanaler censurerade/avcensurerade",
+);
+$a->strings["%s channel deleted"] = array(
+ 0 => "%s kanal borttagen",
+ 1 => "%s kanaler borttagna",
+);
+$a->strings["Channel not found"] = "Kanal hittas inte";
+$a->strings["Channel '%s' deleted"] = "Kanalen '%s' togs bort";
+$a->strings["Channel '%s' uncensored"] = "Kanal '%s' avcensurerad";
+$a->strings["Channel '%s' censored"] = "Kanal '%s' censurerad";
+$a->strings["Censor"] = "Censurera";
+$a->strings["Uncensor"] = "Avcensurera";
+$a->strings["UID"] = "UID";
+$a->strings["Selected channels will be deleted!\\n\\nEverything that was posted in these channels on this site will be permanently deleted!\\n\\nAre you sure?"] = "Valda kanaler kommer att tas bort!\\n\\nAllt som har postats i de kanalerna på den här servern kommer att raderas permanent!\\n\\nÄr du säker?";
+$a->strings["The channel {0} will be deleted!\\n\\nEverything that was posted in this channel on this site will be permanently deleted!\\n\\nAre you sure?"] = "Kanalen {0} kommer att tas bort!\\n\\nAllt som har postats i den här kanalen på den här servern kommer att raderas permanent!\\n\\nÄr du säker?";
+$a->strings["Plugin %s disabled."] = "Tillägg %s inaktiverat.";
+$a->strings["Plugin %s enabled."] = "Tillägg %s aktiverat.";
+$a->strings["Disable"] = "Inaktivera";
+$a->strings["Enable"] = "Aktivera";
+$a->strings["Toggle"] = "Växla";
+$a->strings["Author: "] = "Författare:";
+$a->strings["Maintainer: "] = "Underhållare:";
+$a->strings["No themes found."] = "Inga teman funna.";
+$a->strings["Screenshot"] = "Skärmdump";
+$a->strings["[Experimental]"] = "[Experimentellt]";
+$a->strings["[Unsupported]"] = "[Utan support]";
+$a->strings["Log settings updated."] = "Logginställningar uppdaterade.";
+$a->strings["Clear"] = "Rensa";
+$a->strings["Debugging"] = "Avlusning";
+$a->strings["Log file"] = "Loggfil";
+$a->strings["Must be writable by web server. Relative to your Red top-level directory."] = "Måste vara skrivbar för webbservern. Anges relativt Reds toppkatalog.";
+$a->strings["Log level"] = "Loggnivå";
+$a->strings["New Profile Field"] = "Nytt profilfält";
+$a->strings["Field nickname"] = "Smeknamn på fält";
+$a->strings["System name of field"] = "Systemnamn på fält";
+$a->strings["Input type"] = "Datatyp";
+$a->strings["Field Name"] = "Fältnamn";
+$a->strings["Label on profile pages"] = "Beteckning på profilsidor";
+$a->strings["Help text"] = "Hjälptext";
+$a->strings["Additional info (optional)"] = "Ytterligare info (frivilligt)";
+$a->strings["Field definition not found"] = "Fältdefinition hittades inte";
+$a->strings["Edit Profile Field"] = "Redigera profilfält";
$a->strings["You have created %1$.0f of %2$.0f allowed channels."] = "Du har skapat %1$.0f av %2$.0f tillåtna kanaler.";
$a->strings["Create a new channel"] = "Skapa en ny kanal";
-$a->strings["Channel Manager"] = "Kanalhanterare";
$a->strings["Current Channel"] = "Nuvarande kanal";
$a->strings["Attach to one of your channels by selecting it."] = "Anslut till en av dina kanaler genom att välja den.";
$a->strings["Default Channel"] = "Standardkanal";
$a->strings["Make Default"] = "Gör till standard";
-$a->strings["Total votes"] = "Totala röster";
+$a->strings["Menu updated."] = "Meny uppdaterad.";
+$a->strings["Unable to update menu."] = "Kunde inte uppdatera meny.";
+$a->strings["Menu created."] = "Meny skapad.";
+$a->strings["Unable to create menu."] = "Kunde inte skapa meny.";
+$a->strings["Manage Menus"] = "Hantera menyer";
+$a->strings["Drop"] = "Ta bort";
+$a->strings["Bookmarks allowed"] = "Bokmärken tillåtna";
+$a->strings["Create a new menu"] = "Skapa en ny meny";
+$a->strings["Delete this menu"] = "Ta bort den här menyn";
+$a->strings["Edit menu contents"] = "Redigera menyinnehåll";
+$a->strings["Edit this menu"] = "Redigera den här menyn";
+$a->strings["New Menu"] = "Ny meny";
+$a->strings["Menu name"] = "Menynamn";
+$a->strings["Must be unique, only seen by you"] = "MÃ¥ste vara unikt, ses endast av dig";
+$a->strings["Menu title"] = "Menytitel";
+$a->strings["Menu title as seen by others"] = "Menytitel som andra ser den";
+$a->strings["Allow bookmarks"] = "Tillåt bokmärken";
+$a->strings["Menu may be used to store saved bookmarks"] = "Menyn kan användas för att spara bokmärken";
+$a->strings["Menu deleted."] = "Meny borttagen.";
+$a->strings["Menu could not be deleted."] = "Menyn kunde inte tas bort.";
+$a->strings["Edit Menu"] = "Redigera meny";
+$a->strings["Add or remove entries to this menu"] = "Lägg till eller ta bort menyval";
+$a->strings["Total invitation limit exceeded."] = "Gränsen för totalt antal inbjudningar överskriden.";
+$a->strings["%s : Not a valid email address."] = "%s: Inte en giltig e-postadress.";
+$a->strings["Please join us on Red"] = "GÃ¥ med oss i Red";
+$a->strings["Invitation limit exceeded. Please contact your site administrator."] = "Inbjudningsgränsen överskriden. Kontakta din serveradministratör.";
+$a->strings["%s : Message delivery failed."] = "%s : Leverans av meddelande misslyckades.";
+$a->strings["%d message sent."] = array(
+ 0 => "%d meddelande sänt.",
+ 1 => "%d meddelanden sända.",
+);
+$a->strings["You have no more invitations available"] = "Du har inga fler inbjudningar kvar";
+$a->strings["Send invitations"] = "Skicka inbjudan";
+$a->strings["Enter email addresses, one per line:"] = "Ange e-postadresser, en per rad:";
+$a->strings["Please join my community on RedMatrix."] = "Gå med mig i gemenskapen på RedMatrix.";
+$a->strings["You will need to supply this invitation code: "] = "Du kommer att behöva den här inbjudningskoden: ";
+$a->strings["1. Register at any RedMatrix location (they are all inter-connected)"] = "1. Skapa konto på en RedMatrix-server (alla är ihopkopplade)";
+$a->strings["2. Enter my RedMatrix network address into the site searchbar."] = "2. Ange min RedMatrix-adress i webbplatsens sökruta.";
+$a->strings["or visit "] = "eller besök ";
+$a->strings["3. Click [Connect]"] = "3. Klicka [Ta kontakt]";
+$a->strings["No such group"] = "Ingen sådan grupp";
+$a->strings["Search Results For:"] = "Sökresultat för:";
+$a->strings["Collection is empty"] = "Kretsen är tom";
+$a->strings["Collection: "] = "Krets: ";
+$a->strings["Connection: "] = "Kontakt:";
+$a->strings["Invalid connection."] = "Ogiltig kontakt.";
+$a->strings["Invalid request identifier."] = "Ogiltigt ID på förfrågan.";
+$a->strings["Discard"] = "Förkasta";
+$a->strings["No more system notifications."] = "Inga fler systemnotifieringar.";
+$a->strings["System Notifications"] = "Systemnotifieringar";
+$a->strings["[Embedded content - reload page to view]"] = "[Inbäddat innehåll - ladda om sidan för att visa]";
+$a->strings["Remote privacy information not available."] = "Icke-lokal integritetsinformation är inte tillgänglig";
+$a->strings["Visible to:"] = "Kan ses av:";
+$a->strings["No connections."] = "Inga kontakter.";
+$a->strings["Visit %s's profile [%s]"] = "Besök %ss profil [%s]";
+$a->strings["View Connnections"] = "Visa kontakter";
+$a->strings["Hub not found."] = "Hubb hittades inte.";
+$a->strings["Total votes"] = "Totalt antal röster";
$a->strings["Average Rating"] = "Genomsnittsbetyg";
+$a->strings["OpenID protocol error. No ID returned."] = "Protokollfel för OpenID. Inget ID returnerades.";
+$a->strings["Welcome %s. Remote authentication successful."] = "Välkommen %s. Fjärrinloggning lyckades.";
+$a->strings["Wall Photos"] = "Väggfoton";
$a->strings["Profile Match"] = "Profilträff";
$a->strings["No keywords to match. Please add keywords to your default profile."] = "Inga nyckelord att matcha mot. Lägg till några nyckelord i din standardprofil.";
$a->strings["is interested in:"] = "är intresserad av:";
$a->strings["No matches"] = "Inga träffar";
-$a->strings["Away"] = "Borta";
-$a->strings["Online"] = "Online";
-$a->strings["OpenID protocol error. No ID returned."] = "Protokollfel för OpenID. Inget ID returnerades.";
-$a->strings["Welcome %s. Remote authentication successful."] = "Välkommen %s. Fjärrautentisering lyckades.";
-$a->strings["Edit Layout"] = "Redigera layout";
-$a->strings["Delete layout?"] = "Ta bort layout?";
-$a->strings["Delete Layout"] = "Ta bort layout";
-$a->strings["Remote authentication blocked. You are logged into this site locally. Please logout and retry."] = "Fjärrautentisering blockerades. Du är inloggad på den här servern lokalt. Logga ut och försök igen.";
-$a->strings["Fetching URL returns error: %1\$s"] = "Hämtning av URL returnerade fel: %1\$s";
-$a->strings["Image uploaded but image cropping failed."] = "Bilden laddades upp men beskärning misslyckades.";
-$a->strings["Image resize failed."] = "Ändring av bildstorlek misslyckades.";
-$a->strings["Shift-reload the page or clear browser cache if the new photo does not display immediately."] = "Shift-uppdatera sidan eller rensa webbläsarcachen om det nya fotot inte visas direkt.";
-$a->strings["Image exceeds size limit of %d"] = "Bilden överskrider storleksbegränsningen %d";
-$a->strings["Unable to process image."] = "Kunde inte behandla bilden.";
-$a->strings["Photo not available."] = "Fotot är inte tillgängligt.";
-$a->strings["Upload File:"] = "Ladda upp fil:";
-$a->strings["Select a profile:"] = "Välj en profil:";
-$a->strings["Upload Profile Photo"] = "Ladda upp profilfoto";
-$a->strings["Upload"] = "Ladda upp";
-$a->strings["skip this step"] = "hoppa över det här steget";
-$a->strings["select a photo from your photo albums"] = "välj ett foto från dina fotoalbum";
-$a->strings["Crop Image"] = "Beskär bild";
-$a->strings["Please adjust the image cropping for optimum viewing."] = "Justera bildens beskärning för bästa utseende.";
-$a->strings["Done Editing"] = "Klar med redigering";
-$a->strings["Image uploaded successfully."] = "Bilduppladdning lyckades.";
-$a->strings["Image upload failed."] = "Bilduppladdning misslyckades.";
-$a->strings["Image size reduction [%s] failed."] = "Krympning av bilden [%s] misslyckades.";
-$a->strings["Blocked"] = "Blockerade";
-$a->strings["Ignored"] = "Ignorerade";
-$a->strings["Hidden"] = "Dolda";
-$a->strings["Archived"] = "Arkiverade";
-$a->strings["All"] = "Alla";
-$a->strings["Unconnected"] = "Ej anslutna";
-$a->strings["Suggest new connections"] = "Föreslå nya kontakter";
-$a->strings["New Connections"] = "Nya kontakter";
-$a->strings["Show pending (new) connections"] = "Visa väntande (nya) kontakter";
-$a->strings["Show all connections"] = "Visa alla kontakter";
-$a->strings["Unblocked"] = "Ej blockerade";
-$a->strings["Only show unblocked connections"] = "Visa endast ej blockerade kontakter";
-$a->strings["Only show blocked connections"] = "Visa endast blockerade kontakter";
-$a->strings["Only show ignored connections"] = "Visa endast ignorerade kontakter";
-$a->strings["Only show archived connections"] = "Visa endast arkiverade kontakter";
-$a->strings["Only show hidden connections"] = "Visa endast dolda kontakter";
-$a->strings["Only show one-way connections"] = "Visa endast enkelriktade kontakter";
-$a->strings["%1\$s [%2\$s]"] = "%1\$s [%2\$s]";
-$a->strings["Edit contact"] = "Redigera kontakt";
-$a->strings["Search your connections"] = "Sök bland dina kontakter";
-$a->strings["Finding: "] = "Sökning efter: ";
-$a->strings["Invalid request identifier."] = "Ogiltigt ID på förfrågan.";
-$a->strings["Discard"] = "Förkasta";
-$a->strings["No more system notifications."] = "Inga fler systemnotifieringar.";
-$a->strings["System Notifications"] = "Systemnotifieringar";
+$a->strings["Conversation removed."] = "Konversation borttagen.";
+$a->strings["No messages."] = "Inga meddelanden.";
+$a->strings["D, d M Y - g:i A"] = "D, j M Y - H:i";
+$a->strings["Add a Channel"] = "Lägg till en kanal";
+$a->strings["A channel is your own collection of related web pages. A channel can be used to hold social network profiles, blogs, conversation groups and forums, celebrity pages, and much more. You may create as many channels as your service provider allows."] = "En kanal är din egen samling av relaterade webbsidor. En kanal kan användas för att innehålla sociala nätverksprofiler, bloggar, konversationsgrupper och forum, fansidor, och mycket mer. Du kan skapa så många kanaler som din tjänsteleverantör tillåter.";
+$a->strings["Examples: \"Bob Jameson\", \"Lisa and her Horses\", \"Soccer\", \"Aviation Group\" "] = "Exempel: \"Bob Jameson\", \"Lisa och hennes hästar\", \"Fotboll\", \"Flyggruppen\" ";
+$a->strings["Choose a short nickname"] = "Välj ett kort smeknamn";
+$a->strings["Your nickname will be used to create an easily remembered channel address (like an email address) which you can share with others."] = "Ditt smeknamn används för att skapa en kanaladress som är lätt att komma ihåg (som en e-postadress) som du kan dela med andra.";
+$a->strings["Or <a href=\"import\">import an existing channel</a> from another location"] = "Eller <a href=\"import\">importera en befintlig kanal</a> från en annan plats";
+$a->strings["Channel Type"] = "Kanaltyp";
+$a->strings["?"] = "?";
+$a->strings["What is this?"] = "Vad är detta?";
+$a->strings["Please choose a channel type (such as social networking or community forum) and privacy requirements so we can select the best permissions for you"] = "Välj en kanaltyp (som till exempel socialt nätverkande eller gemenskapsforum) och integritetskrav, så kan vi välja de bästa behörigheterna åt dig";
+$a->strings["Xchan Lookup"] = "Xchan-sökning";
+$a->strings["Lookup xchan beginning with (or webbie): "] = "Sök efter xchan som börjar med (eller webbie): ";
+$a->strings["invalid target signature"] = "ogiltig målsignatur";
$a->strings["Unable to find your hub."] = "Kunde inte hitta din hubb.";
$a->strings["Post successful."] = "Sändning lyckades.";
-$a->strings["Edit Webpage"] = "Redigera webbsida";
-$a->strings["Delete webpage?"] = "Ta bort webbsida?";
-$a->strings["Delete Webpage"] = "Ta bort webbsida";
-$a->strings["Channel added."] = "Kanal tillagd.";
-$a->strings["Poke/Prod"] = "Puffa/stöt till";
-$a->strings["poke, prod or do other things to somebody"] = "puffa, stöt till eller gör andra saker mot någon";
-$a->strings["Recipient"] = "Mottagare";
-$a->strings["Choose what you wish to do to recipient"] = "Välj vad du önskar göra med mottagaren";
-$a->strings["Make this post private"] = "Gör det här inlägget privat";
-$a->strings["Wall Photos"] = "Väggfoton";
-$a->strings["Insufficient permissions. Request redirected to profile page."] = "Otillräckliga behörigheter. Förfrågan omdirigerad till profilsidan.";
-$a->strings["Contact not found."] = "Kontakten hittades inte.";
-$a->strings["Friend suggestion sent."] = "Vänförfrågan skickad.";
-$a->strings["Suggest Friends"] = "Föreslå vänner";
-$a->strings["Suggest a friend for %s"] = "Föreslå en vän för %s";
+$a->strings["Gender: "] = "Kön:";
$a->strings["Status: "] = "Status: ";
-$a->strings["Sexual Preference: "] = "Sexuell preferens: ";
$a->strings["Homepage: "] = "Hemsida: ";
$a->strings["Hometown: "] = "Hemort: ";
$a->strings["About: "] = "Om: ";
+$a->strings["Public Forum:"] = "Offentligt forum:";
$a->strings["Keywords: "] = "Nyckelord: ";
-$a->strings["Permission Denied."] = "Behörighet saknas.";
-$a->strings["File not found."] = "Filen hittas inte.";
-$a->strings["Edit file permissions"] = "Redigera filrättigheter";
-$a->strings["Include all files and sub folders"] = "Inkludera alla filer och underkataloger";
-$a->strings["Return to file list"] = "Återgå till fillistan";
-$a->strings["Copy/paste this code to attach file to a post"] = "Kopiera/klistra in den här koden för att bifoga filen i ett inlägg";
-$a->strings["Copy/paste this URL to link file from a web page"] = "Kopiera/klistra in den här URL:en för att länka till filen från en webbsida";
-$a->strings["Download"] = "Ladda ner";
-$a->strings["Used: "] = "Använt: ";
-$a->strings["[directory]"] = "[katalog]";
-$a->strings["Limit: "] = "Gräns: ";
-$a->strings["No suggestions available. If this is a new site, please try again in 24 hours."] = "Inga förslag tillgängliga. Om det här är en ny server, försök igen om 24 timmar.";
-$a->strings["Conversation removed."] = "Konversation borttagen.";
-$a->strings["No messages."] = "Inga meddelanden.";
-$a->strings["D, d M Y - g:i A"] = "D, j M Y - H:i";
-$a->strings["Public Sites"] = "Offentliga servrar";
-$a->strings["The listed sites allow public registration into the Red Matrix. All sites in the matrix are interlinked so membership on any of them conveys membership in the matrix as a whole. Some sites may require subscription or provide tiered service plans. The provider links <strong>may</strong> provide additional details."] = "De listade servrarna tillåter offentlig registrering i Red Matrix. Alla servrar i matrisen är sammankopplade, så medlemskap i en av dem medför medlemskap i matrisen som helhet. Vissa servrar kan kräva abonnemang eller erbjuda uppdelade tjänstenivåer. Leverantörslänkarna <strong>kan</strong> ge ytterligare detaljer.";
-$a->strings["Site URL"] = "Server-URL";
-$a->strings["Access Type"] = "Ã…tkomsttyp";
-$a->strings["Registration Policy"] = "Registreringspolicy";
-$a->strings["Maximum daily site registrations exceeded. Please try again tomorrow."] = "Maximalt antal dagliga serverregistreringar överskridet. Försök igen i morgon.";
-$a->strings["Please indicate acceptance of the Terms of Service. Registration failed."] = "Välj huruvida du accepterar användarvillkoren. Registrering misslyckades.";
-$a->strings["Passwords do not match."] = "Lösenorden stämmer inte överens.";
-$a->strings["Registration successful. Please check your email for validation instructions."] = "Registrering lyckades. Kontrollera din e-post för valideringsinstruktioner.";
-$a->strings["Your registration is pending approval by the site owner."] = "Din registrering väntar på att bli godkänd av serverägaren.";
-$a->strings["Your registration can not be processed."] = "Din registrering kan inte behandlas.";
-$a->strings["Registration on this site/hub is by approval only."] = "Registrering på den här servern/hubben måste godkännas.";
-$a->strings["<a href=\"pubsites\">Register at another affiliated site/hub</a>"] = "<a href=\"pubsites\">Registrera dig på en annan ansluten server/hubb</a>";
-$a->strings["This site has exceeded the number of allowed daily account registrations. Please try again tomorrow."] = "Antal dagliga registreringar som tillåts på den här servern har överskridits. Försök igen i morgon.";
-$a->strings["Terms of Service"] = "användarvillkor";
-$a->strings["I accept the %s for this website"] = "Jag accepterar den här webbplatsens %s";
-$a->strings["I am over 13 years of age and accept the %s for this website"] = "Jag är över 13 år och accepterar den här webbplatsens %s";
-$a->strings["Membership on this site is by invitation only."] = "Medlemskap på den här servern kan endast fås genom inbjudan.";
-$a->strings["Please enter your invitation code"] = "Ange din inbjudningskod";
-$a->strings["Your email address"] = "Din e-postadress";
-$a->strings["Choose a password"] = "Välj ett lösenord";
-$a->strings["Please re-enter your password"] = "Ange lösenordet igen";
-$a->strings["Please login."] = "Logga in.";
-$a->strings["Remove This Channel"] = "Ta bort den här kanalen";
-$a->strings["This will completely remove this channel from the network. Once this has been done it is not recoverable."] = "Det här kommer att ta bort den här kanalen helt från nätverket. När det är gjort går det inte att återställa den.";
-$a->strings["Please enter your password for verification:"] = "Ange ditt lösenord för att bekräfta:";
-$a->strings["Remove this channel and all its clones from the network"] = "Ta bort den här kanalen och alla dess kloner från nätverket";
-$a->strings["By default only the instance of the channel located on this hub will be removed from the network"] = "Som standard kommer bara den här hubbens instans av kanalen att tas bort från nätverket";
-$a->strings["Remove Channel"] = "Ta bort kanal";
-$a->strings["Page owner information could not be retrieved."] = "Information om sidans ägare kunde inte hittas.";
-$a->strings["Album not found."] = "Albumet hittades inte.";
-$a->strings["Delete Album"] = "Ta bort album";
-$a->strings["Delete Photo"] = "Ta bort foto";
-$a->strings["No photos selected"] = "Inga foton valda";
-$a->strings["Access to this item is restricted."] = "Åtkomst till den här posten är begränsat.";
-$a->strings["You have used %1$.2f Mbytes of %2$.2f Mbytes photo storage."] = "Du har använt %1$.2f MB av %2$.2f MB fotoutrymme.";
-$a->strings["You have used %1$.2f Mbytes of photo storage."] = "Du har använt %1$.2f MB fotoutrymme.";
-$a->strings["Upload Photos"] = "Ladda upp foton";
-$a->strings["New album name: "] = "Namn på nytt album: ";
-$a->strings["or existing album name: "] = "eller befintligt albumnamn: ";
-$a->strings["Do not show a status post for this upload"] = "Visa inte en statusuppdatering för den här uppladdningen";
-$a->strings["Contact Photos"] = "Kontaktfoton";
-$a->strings["Edit Album"] = "Redigera album";
-$a->strings["Show Newest First"] = "Visa nyast först";
-$a->strings["Show Oldest First"] = "Visa äldst först";
-$a->strings["View Photo"] = "Visa foto";
-$a->strings["Permission denied. Access to this item may be restricted."] = "Behörighet saknas. Åtkomst till den här posten kan vara begränsat.";
-$a->strings["Photo not available"] = "Foto inte tillgängligt";
-$a->strings["Use as profile photo"] = "Använd som profilfoto";
-$a->strings["View Full Size"] = "Visa fullstorlek";
-$a->strings["Edit photo"] = "Redigera foto";
-$a->strings["Rotate CW (right)"] = "Rotera medurs (höger)";
-$a->strings["Rotate CCW (left)"] = "Rotera moturs (vänster)";
-$a->strings["New album name"] = "Nytt albumnamn";
-$a->strings["Caption"] = "Bildtext";
-$a->strings["Add a Tag"] = "Lägg till en tagg";
-$a->strings["Example: @bob, @Barbara_Jensen, @jim@example.com, #California, #camping"] = "Exempel: @bob, @Barbara_Jensen, @jim@example.com, #California, #camping";
-$a->strings["In This Photo:"] = "PÃ¥ fotot:";
-$a->strings["View Album"] = "Visa album";
-$a->strings["Recent Photos"] = "Nya foton";
-$a->strings["Mood"] = "Sinnesstämning";
-$a->strings["Set your current mood and tell your friends"] = "Ange din nuvarande sinnesstämning och visa för dina vänner";
-$a->strings["sent you a private message"] = "skickade ett privat meddelande till dig";
-$a->strings["added your channel"] = "lade till din kanal";
-$a->strings["posted an event"] = "skapade en händelse";
+$a->strings["Finding:"] = "Sökning efter:";
+$a->strings["next page"] = "nästa sida";
+$a->strings["previous page"] = "föregående sida";
+$a->strings["No entries (some entries may be hidden)."] = "Inga resultat (vissa resultat kan vara dolda).";
+$a->strings["Remote authentication blocked. You are logged into this site locally. Please logout and retry."] = "Fjärrinloggning blockerades. Du är inloggad på den här servern lokalt. Logga ut och försök igen.";
+$a->strings["App installed."] = "App installerad.";
+$a->strings["Malformed app."] = "Felaktig app.";
+$a->strings["Embed code"] = "Bädda in kod";
+$a->strings["Edit App"] = "Redigera app";
+$a->strings["Create App"] = "Skapa app";
+$a->strings["Name of app"] = "Namn på app";
+$a->strings["Location (URL) of app"] = "Adress (URL) för app";
+$a->strings["Photo icon URL"] = "Fotoikon URL";
+$a->strings["80 x 80 pixels - optional"] = "80 x 80 pixlar - valfri";
+$a->strings["Version ID"] = "Versions-ID";
+$a->strings["Price of app"] = "Pris på app";
+$a->strings["Location (URL) to purchase app"] = "Adress (URL) för att köpa app";
+$a->strings["Poll"] = "Opinionsundersökning";
+$a->strings["View Results"] = "Visa resultat";
+$a->strings["Account removals are not allowed within 48 hours of changing the account password."] = "Borttagning av konto tillåts inte inom 48 timmar efter att kontolösenordet har ändrats.";
+$a->strings["Remove This Account"] = "Ta bort kontot";
+$a->strings["This will completely remove this account including all its channels from the network. Once this has been done it is not recoverable."] = "Det här kommer att ta bort kontot fullständigt från nätverket, inklusive alla dess kanaler. När detta har gjorts går det inte att ångra.";
+$a->strings["Remove this account, all its channels and all its channel clones from the network"] = "Ta bort kontot, alla dess kanaler och alla kanalkopior från nätverket";
+$a->strings["By default only the instances of the channels located on this hub will be removed from the network"] = "Som standard tas bara instanser av kanaler som finns på den här servern bort från nätverket";
+$a->strings["No service class restrictions found."] = "Inga tjänsteklassbegränsningar hittades.";
+$a->strings["Schema Default"] = "Schemats standard";
+$a->strings["Sans-Serif"] = "Sans-serif";
+$a->strings["Monospace"] = "Monospace";
$a->strings["Theme settings"] = "Temainställningar";
$a->strings["Set scheme"] = "Välj variant";
-$a->strings["Narrow navbar"] = "Smal navigeringslist";
-$a->strings["Navigation bar background colour"] = "Navigeringslistens bakgrundsfärg";
-$a->strings["Navigation bar gradient top colour"] = "Övre gradientfärg i navigeringslisten";
-$a->strings["Navigation bar gradient bottom colour"] = "Undre gradientfärg i navigeringslisten";
-$a->strings["Navigation active button gradient top colour"] = "Övre gradientfärg på aktiv knapp i navigeringslisten";
-$a->strings["Navigation active button gradient bottom colour"] = "Undre gradientfärg på aktiv knapp i navigeringslisten";
-$a->strings["Navigation bar border colour "] = "Färg på navigeringslistens kant";
-$a->strings["Navigation bar icon colour "] = "Färg på ikoner i navigeringslisten";
-$a->strings["Navigation bar active icon colour "] = "Färg på aktiv ikon i navigeringslisten";
-$a->strings["link colour"] = "Länkfärg";
-$a->strings["Set font-colour for banner"] = "Välj textfärg för sidhuvudet";
-$a->strings["Set the background colour"] = "Välj bakgrundsfärg";
-$a->strings["Set the background image"] = "Välj bakgrundsbild";
-$a->strings["Set the background colour of items"] = "Välj bakgrundsfärg för inlägg";
-$a->strings["Set the opacity of items"] = "Välj opacitet för inlägg";
-$a->strings["Set the basic colour for item icons"] = "Välj basfärg för inläggsikoner";
-$a->strings["Set the hover colour for item icons"] = "Välj färg på inläggsikon under muspekare";
-$a->strings["Set font-size for the entire application"] = "Välj textstorlek för hela applikationen";
$a->strings["Set font-size for posts and comments"] = "Välj textstorlek för inlägg och kommentarer";
-$a->strings["Set font-colour for posts and comments"] = "Välj textfärg för inlägg och kommentarer";
-$a->strings["Set radius of corners"] = "Välj hörnradie";
-$a->strings["Set shadow depth of photos"] = "Välj skuggdjup för foton";
-$a->strings["Set maximum width of conversation regions"] = "Välj maxbredd på konversationsfält";
-$a->strings["Center conversation regions"] = "Centrera konversationsfält";
-$a->strings["Set minimum opacity of nav bar - to hide it"] = "Välj lägsta opacitet för navigeringslisten - för att dölja den";
-$a->strings["Set size of conversation author photo"] = "Välj storlek på foto för trådskapare";
-$a->strings["Set size of followup author photos"] = "Välj storlek på svarande personers foton";
-$a->strings["Sloppy photo albums"] = "Oordnade fotoalbum";
-$a->strings["Are you a clean desk or a messy desk person?"] = "Föredrar du ett tomt eller stökigt skrivbord?";
-$a->strings["Schema Default"] = "Temavariantens standard";
-$a->strings["Sans-Serif"] = "Sans-serif";
-$a->strings["Monospace"] = "Fast bredd";
$a->strings["Set font face"] = "Välj teckensnitt";
$a->strings["Set iconset"] = "Välj ikontema";
-$a->strings["Set big shadow size, default 15px 15px 15px"] = "Välj stor skuggstorlek, standard 15px 15px 15px";
+$a->strings["Set big shadow size, default 15px 15px 15px"] = "Välj stor skuggstorlek, standard 15px 15px 15px ";
$a->strings["Set small shadow size, default 5px 5px 5px"] = "Välj liten skuggstorlek, standard 5px 5px 5px";
-$a->strings["Set shadow colour, default #000"] = "Välj skuggfärg, standard #000";
+$a->strings["Set shadow color, default #000"] = "Välj skuggfärg, standard #000";
$a->strings["Set radius size, default 5px"] = "Välj radie, standard 5px";
$a->strings["Set line-height for posts and comments"] = "Välj radhöjd för inlägg och kommentarer";
$a->strings["Set background image"] = "Välj bakgrundsbild";
-$a->strings["Set background attachment"] = "Välj bakgrundsfixering";
-$a->strings["Set background colour"] = "Välj bakgrundsfärg";
+$a->strings["Set background attachment"] = "Välj fixerad bakgrund";
+$a->strings["Set background color"] = "Välj bakgrundsfärg";
$a->strings["Set section background image"] = "Välj bakgrundsbild för avsnitt";
-$a->strings["Set section background colour"] = "Välj bakgrundsfärg för avsnitt";
-$a->strings["Set colour of items - use hex"] = "Välj färg på inlägg - använd hex";
-$a->strings["Set colour of links - use hex"] = "Välj färg på länkar - använd hex";
-$a->strings["Set max-width for items. Default 400px"] = "Välj maxbredd för inlägg. Standard 400px";
-$a->strings["Set min-width for items. Default 240px"] = "Välj minbredd för inlägg. Standard 240px";
+$a->strings["Set section background color"] = "Välj bakgrundsfärg för avsnitt";
+$a->strings["Set color of items - use hex"] = "Välj färg på inlägg - använd hex";
+$a->strings["Set color of links - use hex"] = "Välj färg på länkar - använd hex";
+$a->strings["Set max-width for items. Default 400px"] = "Välj största bredd för inlägg. Standard 400px";
+$a->strings["Set min-width for items. Default 240px"] = "Välj minsta bredd för inlägg. Standard 240px";
$a->strings["Set the generic content wrapper width. Default 48%"] = "Välj bredd på fältet för allmänt innehåll. Standard 48%";
-$a->strings["Set colour of fonts - use hex"] = "Välj textfärg - använd hex";
+$a->strings["Set color of fonts - use hex"] = "Välj textfärg - använd hex";
$a->strings["Set background-size element"] = "Välj bakgrundsskala";
$a->strings["Item opacity"] = "Inläggsopacitet";
$a->strings["Display post previews only"] = "Visa endast förhandsgranskning av inlägg";
@@ -1783,9 +1943,37 @@ $a->strings["Right offset of the section element"] = "Höger offset för avsnitt
$a->strings["Section width"] = "Avsnittsbredd";
$a->strings["Left offset of the aside"] = "Vänster offset för sidoelement";
$a->strings["Right offset of the aside element"] = "Höger offset för sidoelement";
-$a->strings["None"] = "Inget";
-$a->strings["Header image"] = "Rubrikbild";
-$a->strings["Header image only on profile pages"] = "Rubrikbild endast på profilsidor";
+$a->strings["Light (Red Matrix default)"] = "Light (standard för Red Matrix)";
+$a->strings["Narrow navbar"] = "Smal navigeringslist";
+$a->strings["Navigation bar background color"] = "Navigeringslistens bakgrundsfärg";
+$a->strings["Navigation bar gradient top color"] = "Övre gradientfärg i navigeringslisten";
+$a->strings["Navigation bar gradient bottom color"] = "Undre gradientfärg i navigeringslisten";
+$a->strings["Navigation active button gradient top color"] = "Övre gradientfärg på aktiv knapp i navigeringslisten";
+$a->strings["Navigation active button gradient bottom color"] = "Undre gradientfärg på aktiv knapp i navigeringslisten";
+$a->strings["Navigation bar border color "] = "Färg på navigeringslistens kant";
+$a->strings["Navigation bar icon color "] = "Färg på ikoner i navigeringslisten";
+$a->strings["Navigation bar active icon color "] = "Färg på aktiv ikon i navigeringslisten";
+$a->strings["link color"] = "Länkfärg";
+$a->strings["Set font-color for banner"] = "Välj textfärg för sidhuvudet";
+$a->strings["Set the background color"] = "Välj bakgrundsfärg";
+$a->strings["Set the background image"] = "Välj bakgrundsbild";
+$a->strings["Set the background color of items"] = "Välj bakgrundsfärg för inlägg";
+$a->strings["Set the background color of comments"] = "Välj bakgrundsfärg för kommentarer";
+$a->strings["Set the border color of comments"] = "Välj kantfärg för kommentarer";
+$a->strings["Set the indent for comments"] = "Välj indrag för kommentarer";
+$a->strings["Set the basic color for item icons"] = "Välj basfärg för inläggsikoner";
+$a->strings["Set the hover color for item icons"] = "Välj färg på inläggsikon under muspekare";
+$a->strings["Set font-size for the entire application"] = "Välj textstorlek för hela applikationen";
+$a->strings["Set font-color for posts and comments"] = "Välj textfärg för inlägg och kommentarer";
+$a->strings["Set radius of corners"] = "Välj hörnradie";
+$a->strings["Set shadow depth of photos"] = "Välj skuggdjup för foton";
+$a->strings["Set maximum width of conversation regions"] = "Välj maxbredd på konversationsfält";
+$a->strings["Center conversation regions"] = "Centrera konversationsfält";
+$a->strings["Set minimum opacity of nav bar - to hide it"] = "Välj lägsta opacitet för navigeringslisten - för att dölja den";
+$a->strings["Set size of conversation author photo"] = "Välj storlek på foto för trådskapare";
+$a->strings["Set size of followup author photos"] = "Välj storlek på svarande personers foton";
+$a->strings["Sloppy photo albums"] = "Oordnade fotoalbum";
+$a->strings["Are you a clean desk or a messy desk person?"] = "Föredrar du ett tomt eller stökigt skrivbord?";
$a->strings["Update %s failed. See error logs."] = "Uppdatering %s misslyckades. Se felloggar.";
$a->strings["Update Error at %s"] = "Uppdateringsfel på %s";
$a->strings["Create an account to access services and applications within the Red Matrix"] = "Skapa ett konto för att komma åt tjänster och applikationer inom Red Matrix";
diff --git a/view/sv/update_fail_eml.tpl b/view/sv/update_fail_eml.tpl
index 26fc33db0..0abbf2cfa 100644
--- a/view/sv/update_fail_eml.tpl
+++ b/view/sv/update_fail_eml.tpl
@@ -1,13 +1,13 @@
Hej,
Jag är webbservern på {{$sitename}};
-Red Matrix-utvecklarna släppte nyligen uppdateringen {{$update}},
-men när jag försökte installera den gick något fruktansvärt fel.
-Detta behöver fixas snart och kräver en människas ingripande.
-Kontakta en Red-utvecklare om du inte kan lösa problemet själv.
-Min databas kan ha gått sönder.
+Red Matrix-utvecklarna släppte nyligen uppdateringen {{$update}},
+men när jag försökte installera den gick något fruktansvärt fel.
+Detta behöver fixas snart och kräver en människas ingripande.
+Kontakta en Red-utvecklare om du inte kan lösa problemet själv.
+Min databas kan ha gått sönder.
-Felmeddelandet är '{{$error}}'.
+Felmeddelandet är '{{$error}}'.
-Ursäkta besväret,
- din webbserver på {{$siteurl}}
+Ursäkta besväret,
+ din webbserver på {{$siteurl}} \ No newline at end of file
diff --git a/view/sv/wall_received_eml.tpl b/view/sv/wall_received_eml.tpl
deleted file mode 100644
index fc450a06d..000000000
--- a/view/sv/wall_received_eml.tpl
+++ /dev/null
@@ -1,16 +0,0 @@
-$username,
-
-'$from' har skrivit på din profilsida.
-
------
-$body
------
-
-Logga in på $siteurl för att kolla eller ta bort:
-
-$display
-
-Hälsningar,
-$sitename admin
-
-
diff --git a/view/theme/redbasic/css/blockmode.css b/view/theme/redbasic/css/blockmode.css
new file mode 100644
index 000000000..cc1db209e
--- /dev/null
+++ b/view/theme/redbasic/css/blockmode.css
@@ -0,0 +1,15 @@
+
+.wall-item-content.conv-list-mode {
+ max-width: 280px;
+ height:200px;
+ min-height: 200px;
+ overflow: hidden;
+}
+
+.thread-wrapper.toplevel_item.conv-list-mode {
+ width: 300px;
+ height: 300px;
+ float: left;
+ margin-left: 5px;
+ margin-bottom: 35px;
+}
diff --git a/view/theme/redbasic/css/style.css b/view/theme/redbasic/css/style.css
index 26bb4ef92..842e7063a 100644
--- a/view/theme/redbasic/css/style.css
+++ b/view/theme/redbasic/css/style.css
@@ -9,10 +9,11 @@
/* generals */
html {
height: 100%;
+ font-size: 100%;
}
body {
- font-family: arial,freesans,sans-serif;
+ font-family: sans-serif, arial, freesans;
font-size: $body_font_size;
background-color: $bgcolour;
background-image: url('$background_image');
@@ -22,8 +23,21 @@ body {
margin: 0px;
height: 100%;
}
+
+h1, .h1, h2, .h2 {
+ font-size: 1.667em;
+}
+
+h3, .h3, h4, .h4 {
+ font-size: 1.334em;
+}
+
+h5, .h5, h6, .h6 {
+ font-size: 0.75rem;
+}
+
.jslider {
- font-family: arial,freesans,sans-serif;
+ font-family: sans-serif, arial, freesans;
}
abbr {
@@ -31,6 +45,10 @@ abbr {
}
/* icons */
+.tool-icons {
+ color: $toolicon_colour;
+}
+
.icon {
background-color: transparent ;
background-repeat: no-repeat;
@@ -48,7 +66,7 @@ abbr {
}
a, a:visited, a:link, .fakelink, .fakelink:visited, .fakelink:link {
- font-weight: bold;
+ font-weight: $link_font_weight;
color: $link_colour;
text-decoration: none;
}
@@ -59,21 +77,30 @@ a:hover, .fakelink:hover { color: $link_colour; text-decoration: underline; }
cursor: pointer;
}
+a.btn-default {
+ color: #333;
+}
+
+a.btn-success {
+ color: #fff;
+}
input[type="text"],
input[type="password"],
input[type="submit"],
+input[type="file"],
select,
textarea {
- font-family: arial,freesans,sans-serif;
+ font-family: sans-serif, arial, freesans;
font-size: $body_font_size;
}
input {
+ padding: 5px;
+ line-height: 1.5;
border: 1px solid $input_border;
-moz-border-radius: $radiuspx;
border-radius: $radiuspx;
- padding: 3px;
}
input[type="submit"] {
@@ -81,27 +108,23 @@ input[type="submit"] {
font-weight: bold;
color: $input_linksubmit;
text-decoration: none;
+ padding: 6px 12px;
}
button, input, optgroup, select, textarea {
color: #000;
}
-
pre code {
border: none;
}
code {
- font-family: Courier, monospace;
- display: block;
- overflow: auto;
+ font-size: 1em;
+ padding: 5px;
border: 1px solid $code_borderc;
background: $code_bgcolour;
color: $code_txtcolour;
- padding: 10px;
- margin-top: 20px;
- max-width: 80%;
}
pre {
@@ -110,13 +133,7 @@ pre {
border:1px solid $pre_borderc;
}
-blockquote {
- background-color: $blockquote_bgcolour;
- border-left: 4px solid $blockquote_bordercolour;
- padding: 0.4em;
- color: $blockquote_colour;
- margin-left: 20px;
-}
+
.ccollapse-wrapper {
border: 1px solid #CCC;
@@ -145,6 +162,19 @@ header {
filter:alpha(opacity=$nav_percent_min_opacity);
}
+#powered-by {
+ font-size: 0.5rem;
+ position: absolute;
+ top: 50px;
+ left: 16px;
+}
+
+#powered-by img {
+ margin-top: -2px;
+ height: 10px;
+ width: 10px;
+}
+
.error-message {
color: #FF0000;
font-size: 1.1em;
@@ -173,6 +203,8 @@ nav #banner #logo-text a {
}
nav #banner #logo-text a:hover { text-decoration: none; }
+.nav-channel-select { margin-left: 8px; }
+
header #banner {
/* overflow: hidden; */
text-align: center;
@@ -238,21 +270,6 @@ footer {
margin-bottom: 15px;
}
-aside ul {
- list-style-type: none;
- margin: 0;
- padding: 0;
- /* border-left: 1px solid #eee; This and a 5px left border on the li is "interesting"
- to delineate the list from the surrounding bits
- */
-}
-
-aside li {
- margin-top: 5px;
- /* in order to achieve consistent indentation cross-browser, set margin-left on the li element e.g. */
- /* margin-left: 10px; */
-}
-
/*TODO: we should use one class for all this. */
.group-selected, .fileas-selected, .categories-selected, .search-selected, .active {
color: $selected_active_colour !important;
@@ -284,16 +301,16 @@ aside li {
#main-login #id_remember {
float: left;
padding: 0;
- margin-top: 15px;
margin-bottom: 0;
+ margin-left: 0;
width: 20px;
}
-#main-login .field.checkbox label {
- margin-top: 15px;
+#main-login .field.checkbox > label {
margin-bottom: 0;
float: left;
width: 100px;
+ padding-left: 0;
}
#main-login .field_end {
@@ -350,68 +367,70 @@ aside li {
clear: both;
}
-
-.aprofile dt {
- font-weight: bold;
-}
#page-profile .title {
font-weight: bold;
}
+#profile-edit-wrapper .field {
+ margin-top: 20px;
+}
+#profile-edit-wrapper .field > label {
+ width: 175px;
+}
-#profile-vcard-break {
- clear: both;
+#profile-edit-wrapper .field input[type="text"] {
+ width: 220px;
}
-#profile-edit-links ul {
- list-style-type: none;
+#profile-edit-links {
+ max-width: $converse_width;
+ padding-top: 15px;
+ padding-bottom: 15px;
}
-#profile-edit-links li {
- margin-top: 10px;
+#profile-edit-links .btn {
+ margin: 0 10px 15px 0;
}
-#profile-like {
- margin-left: 15px;
+.profile-import {
+ vertical-align: top;
+ text-align: left;
}
-#profile-like-wrapper {
- margin-bottom: 15px;
+.profile-import b {
+ color: $link_colour;
}
+.profile-import input {
+ color: $font_colour;
+ border: none;
+}
+
+#profile-edit-drop-link {
+ color: #FFF;
+ font-weight: normal;
+}
.fn {
- padding: 0px 0px 5px 0px;
- font-size: 120%;
font-weight: bold;
+ font-size: 16px;
color: #444444;
}
.vcard {
- padding: 8px;
-}
-
-.vcard .title {
- margin-bottom: 5px;
-}
-
-.vcard dl {
- clear: both;
- word-wrap:break-word;
-}
-
-.vcard-profile-edit-icon {
- font-size: 1.2em;
-}
-.vcard-profile-edit-icon:hover {
- text-decoration: none;
+ margin-bottom: 10px;
+ padding: 10px;
+ background-color: $comment_item_colour;
+ border-bottom: 1px solid $widget_brdrcolour;
+ -moz-border-radius: $radiuspx;
+ -webkit-border-radius: $radiuspx;
+ border-radius: $radiuspx;
}
-.vcard .dropdown-menu {
- position: absolute;
- left: 200px;
- top: 18px;
+.vcard dl {
+ margin-top: 10px;
+ margin-bottom: 0px;
}
#profile-extra-links {
@@ -426,20 +445,23 @@ aside li {
#profile-extra-links li {
- margin-top: 5px;
+ margin-top: 10px;
}
.profile-edit-side-link {
- opacity: 0.3;
+ padding: 3px 0px;
+ opacity: 0;
filter:alpha(opacity=30);
float: right;
}
-.profile-edit-side-link:hover {
- opacity: 1.0;
+
+.vcard:hover .profile-edit-side-link {
+ opacity: 1;
filter:alpha(opacity=100);
}
+
.view-contact-wrapper {
margin-top: 20px;
float: left;
@@ -465,11 +487,16 @@ aside li {
#profile-photo-wrapper img {
- padding: 12px;
- width: 201px;
- height: 201px;
+ padding: 10px;
+ width: 197px;
+ height: 197px;
+}
+
+#profile-photo-wrapper {
+ margin-top: 10px;
}
+
#profile-in-dir-yes-label,
#profile-in-dir-no-label,
#profile-in-netdir-yes-label,
@@ -555,10 +582,17 @@ aside li {
}
.app-name {
- width: 125px;
overflow: none;
}
+.app-container img {
+ margin-left: auto;
+ margin-right: auto;
+ width: 80px;
+ height: 80px;
+ display: block;
+}
+
.pager {
padding: 10px;
@@ -610,7 +644,7 @@ aside li {
list-style: none;
}
-.profile-match-photo img, #photo-photo img, .directory-photo-img, .photo-album-photo, .photo-top-photo {
+.profile-match-photo img, .directory-photo-img, .photo-album-photo, .photo-top-photo {
border-radius: $radiuspx;
-moz-border-radius: $radiuspx;
box-shadow: $shadowpx $shadowpx $shadowpx 0 #444444;
@@ -630,43 +664,34 @@ aside li {
}
.photo-top-photo, .photo-album-photo {
- padding: 10px;
+ /* padding: 10px;
max-width: 300px;
border: 1px solid #888888;
+*/
+ position: absolute;
+ display: block;
+/* max-width: 100%;
+ max-height: 100%; */
+ left: 0;
+ right: 0;
+ top: 0;
+ bottom: 0;
+ margin: auto;
}
-
-.photo-album-image-wrapper .caption {
- background-color: rgba(245, 245, 255, 0.8);
- border-bottom: 2px solid #CCC;
-}
-
-.photo-top-album-name {
- background-color: rgb(255, 255, 255);
-}
-
-#photos-upload-perms-menu, #photos-upload-perms-menu:visited, #photos-upload-perms-menu:link {
- color: #8888FF;
- text-decoration: none;
- cursor: pointer;
-}
-
-#photos-upload-perms-menu:hover {
- color: #0000FF;
- text-decoration: underline;
- cursor: pointer;
-}
-
-#photo-caption {
- font-size: 110%;
- font-weight: bold;
+.photo-top-photo-link, .photo-album-photo-link {
+ display: block;
+ width: 100%;
+ position: relative;
+ height: 0;
+ padding: 75% 0 0 0;
+ overflow: hidden;
}
-#in-this-photo-text {
- color: #0080FF;
+#photo-view-wrapper {
+ background-color: $item_colour;
}
-
#side-follow-wrapper {
margin-top: 20px;
}
@@ -748,19 +773,26 @@ aside li {
}
#contact-block {
- margin-top: 25px;
- padding: 8px;
+ width: 100%;
+ float: left;
+ background-color: $comment_item_colour;
+ border-bottom: 1px solid $widget_brdrcolour;
+ -moz-border-radius: $radiuspx;
+ -webkit-border-radius: $radiuspx;
+ border-radius: $radiuspx;
+ padding: 10px;
+ margin-bottom:10px;
}
#contact-block-numcontacts {
font-weight: bold;
- margin-bottom:8px;
+ margin-bottom:10px;
}
.contact-block-div {
float: left;
- width: 50px;
- height: 50px;
+ width: 49px;
+ height: 49px;
}
.contact-block-textdiv {
float: left;
@@ -775,8 +807,8 @@ aside li {
float: left;
}
.contact-block-img {
- width:48px;
- height:48px;
+ width:47px;
+ height:47px;
}
#tag-remove {
@@ -800,12 +832,9 @@ aside li {
margin-bottom: 25px;
}
-#search-submit {
- margin-left: 15px;
-}
-#search-box {
- margin-bottom: 25px;
+#conversation-end {
+ clear: both;
}
#nav-searchbar {
@@ -827,6 +856,7 @@ aside li {
}
#nav-search-text {
+ font-size: 12px;
height: 20px;
margin: 15px;
padding: 0px 5px 0px 5px;
@@ -844,32 +874,6 @@ aside li {
font-family: FontAwesome;
}
-#search-text {
- border: 1px solid #ccc;
- font-size: 1em;
-}
-
-#search-text::-webkit-input-placeholder {
- font-family: FontAwesome;
-}
-
-#search-text::-moz-placeholder {
- font-family: FontAwesome;
-}
-
-.location-label, .gender-label, .marital-label, .homepage-label {
- float: left;
- display: block;
- width: 70px;
-
-}
-
-.adr, .x-gender, .marital-text, .homepage-url {
- float: left;
- display: block;
- width: 130px;
-}
-
.profile-clear {
clear: both;
}
@@ -1024,7 +1028,7 @@ aside li {
background: none repeat scroll 0% 0% $cal_bgcolour !important;
}
-#fancybox-content {
+#colorbox {
border: 0px solid $fancybox_bgcolour;
background-color: $fancybox_bgcolour;
}
@@ -1207,21 +1211,6 @@ aside li {
text-decoration: underline;
}
-#lang-select-icon {
- cursor: pointer;
- position: absolute;
- left: 4px;
-/*because of the shape, if this is lined up properly it looks like it's lined up wrong...
-lining it up too high is the only way to make it look correctly aligned. The human
-brain is weird like that */
- top: 2px;
-}
-
-#lang-select-icon:hover {
- opacity: 1;
- filter:alpha(opacity=100);
-}
-
.notif-image {
height: 80px;
width: 80px;
@@ -1232,11 +1221,6 @@ brain is weird like that */
margin-bottom: 15px;
}
-#cloud-index td {
- padding:5px;
-}
-
-
/**
* Plugins settings
*/
@@ -1257,7 +1241,7 @@ brain is weird like that */
width: 100%
}
-.field label {
+.field > label {
float: left;
width: 350px;
}
@@ -1311,39 +1295,9 @@ brain is weird like that */
.hidden { display: none!important; }
.field.radio .field_help { margin-left: 0px; }
+.field.checkbox .field_help { display: inline; margin-left: 10px; }
-
-/*
- * UPDATE
- */
-.popup {
- width: 100%; height: 100%;
- top:0px; left:0px;
- position: absolute;
- display: none;
-}
-
-.popup .background {
- background-color: rgba(0,0,0,128);
- opacity: 0.5;
- width: 100%; height: 100%;
- position: absolute;
- top:0px; left:0px;
-}
-.popup .panel {
- top:25%;left:25%;width:50%;height:50%;
- padding: 1em;
- position: absolute;
- border: 4px solid #000000;
- background-color: #FFFFFF;
-}
-.popup .panel .panel_text { display: block; overflow: auto; height: 80%; }
-.popup .panel .panel_in { width: 100%; height: 100%; position: relative; }
-.popup .panel .panel_actions { width: 100%; bottom: 4px; left: 0px; position: absolute; }
-.panel_text .progress { width: 50%; overflow: hidden; height: auto; border: 1px solid #cccccc; margin-bottom: 5px}
-.panel_text .progress span {float: right; display: block; width: 25%; background-color: #eeeeee; text-align: right;}
-
/**
* OAuth
*/
@@ -1371,97 +1325,13 @@ brain is weird like that */
float: left;
}
-/**
- * ICONS
- */
-.iconspacer {
- display: block; width: 16px; height: 16px;
-/* visibility: hidden; */
-}
-
-.iconspacer:hover {
-/* visibility: visible; */
-}
-
-.icon {
- display: block; width: 16px; height: 16px;
- background-image: url('../../../../images/icons.png');
-}
-.article { background-position: 0px 0px;}
-.audio { background-position: -16px 0px;}
-.block { background-position: -32px 0px;}
-.drop { background-position: -48px 0px;}
-.drophide { background-position: -64px 0px;}
-.delete { background-position: -64px 0px;}
-.edit { background-position: -80px 0px;}
-.camera { background-position: -96px 0px;}
-.dislike { background-position: -112px 0px;}
-.like { background-position: -128px 0px;}
-.link { background-position: -144px 0px;}
-
-.globe { background-position: 0px -16px;}
-.noglobe { background-position: -16px -16px;}
-.no { background-position: -32px -16px;}
-.pause { background-position: -48px -16px;}
-.play { background-position: -64px -16px;}
-.pencil { background-position: -80px -16px;}
-.small-pencil { background-position: -96px -16px;}
-.recycle { background-position: -112px -16px;}
-.remote-link { background-position: -128px -16px;}
-.share { background-position: -144px -16px;}
-
-.tools { background-position: 0px -32px;}
-.lock { background-position: -16px -32px;}
-.unlock { background-position: -32px -32px; }
-.video { background-position: -48px -32px;}
-.youtube { background-position: -64px -32px;}
-.attach { background-position: -80px -32px; }
-.language { background-position: -96px -32px; }
-.prev { background-position: -112px -32px; }
-.next { background-position: -128px -32px; }
-.on { background-position: -144px -32px; }
-
-.off { background-position: 0px -48px; }
-.tagged { background-position: -48px -48px; }
-.yellow { background-position: -64px -48px; }
-
-.icon.dim { opacity: 0.3;filter:alpha(opacity=30); }
-
-
.body-attach {
margin-top: 10px;
}
-
-
-/* autocomplete popup */
-.acpopup {
- max-height:150px;
- background-color:$acpopup_bgcolour;
- overflow:auto;
- border:1px solid $acpopup_bordercolour;
-}
-.acpopupitem {
- background-color:$acpopup_bgcolour;
- clear:left;
-}
-.acpopupitem.taggable {
- background-color: $acpopup_tgbl_bgcolour;
-}
-.acpopupitem img {
- float: left;
- margin-right: 4px;
-}
-
-.acpopupitem:hover {
- text-decoration: underline;
- color: $acpopup_hovercolour;
- cursor:pointer;
-}
-
-.acpopupitem.selected {
- color: #FFFFFF; background: #3465A4;
+.acpopup li div.taggable {
+ color:#cc0000;
}
/* popup notifications */
@@ -1493,7 +1363,7 @@ div.jGrowl div.jGrowl-notification {
#nav-search-text-ac .autocomplete {
position: fixed;
- top: 51px;
+ top: 50px;
border: 1px solid $nav_bd;
border-top: none;
}
@@ -1503,6 +1373,7 @@ div.jGrowl div.jGrowl-notification {
margin-left: $radiuspx;
border: 1px solid #ccc;
border-top: none;
+ width: calc(197px - $radiuspx * 2) !important;
}
#recip-ac .autocomplete,
@@ -1562,14 +1433,6 @@ a.rconnect:hover {
color: #0080FF;
}
-#profiles-menu li a {
- color: #ffffff;
-}
-
-#profiles-menu li a:hover {
- color: #000000;
-}
-
/* header */
header {
@@ -1694,7 +1557,7 @@ header {
}
.contact-block-content {
- margin-top: 8px;
+ margin-top: 10px;
}
.contact-block-img.archived {
opacity: 0.3;
@@ -1753,17 +1616,6 @@ header {
font-size : 2.8em !important;
}
-.profile-thing-list {
- list-style-type: none;
-}
-
-.profile-thing-list img {
- margin-bottom: 5px;
-}
-
-.profile-thing-list li {
- margin-bottom: 15px;
-}
div.page-list-item {
margin: 20px;
@@ -1859,44 +1711,23 @@ img.mail-list-sender-photo {
max-width: $converse_width;
}
-#jot-title,
-#jot-category,
-#jot-pagetitle {
+.jothidden {
font-weight: bold;
- border: solid 1px #ffffff;
border-radius: $radiuspx;
}
-#jot-category::-webkit-input-placeholder {
+.jothidden input::-webkit-input-placeholder {
font-weight: bold;
}
-#jot-category:-moz-placeholder {
+.jothidden input::-moz-placeholder {
font-weight: bold;
}
-#jot-title::-webkit-input-placeholder {
- font-weight: bold;
+.jothidden >input, .jothidden >input {
+ border: 1px solid #fff;
}
-
-#jot-title:-moz-placeholder {
- font-weight: bold;
-}
-
-#jot-pagetitle::-webkit-input-placeholder {
- font-weight: bold;
-}
-
-#jot-pagetitle:-moz-placeholder {
- font-weight: bold;
-}
-
-#jot-title:hover,
-#jot-title:focus,
-#jot-pagetitle:hover,
-#jot-pagetitle:focus,
-#jot-category:hover,
-#jot-category:focus {
+.jothidden >input:hover, .jothidden >input:focus {
border: 1px solid #cccccc;
}
@@ -1908,11 +1739,11 @@ img.mail-list-sender-photo {
}
#profile-jot-text::-webkit-input-placeholder {
- font-size:18px;
+ font-size:16px;
}
#profile-jot-text::-moz-placeholder {
- font-size:18px;
+ font-size:16px;
}
#profile-jot-text:focus::-webkit-input-placeholder {
@@ -1932,13 +1763,16 @@ img.mail-list-sender-photo {
color: #777;
}
-#jot-perms-icon,
.jot-icons {
color: $toolicon_colour;
}
/* conversation */
+.wall-item-title {
+ font-size: $font_size;
+}
+
.hide-comments-outer,
.thread-wrapper .wall-item-comment-wrapper,
.wall-item-content-wrapper.comment {
@@ -1952,13 +1786,16 @@ img.mail-list-sender-photo {
.wall-item-content-wrapper {
background-color: $item_colour;
padding: 10px;
-}
-
-.wall-item-content-wrapper {
border-top-right-radius: $radiuspx;
border-top-left-radius: $radiuspx;
}
+.generic-content-wrapper-styled {
+ background-color: $genericcontent_bgcolour;
+ padding: 10px;
+ border-radius: $radiuspx;
+}
+
.comment .wall-item-body {
padding-left: $comment_padding;
}
@@ -2028,11 +1865,11 @@ img.mail-list-sender-photo {
.wall-item-ago {
color: #777;
- font-size: 0.8em;
+ font-size: 0.833em;
}
.wall-item-ago i {
- font-size: 0.8em;
+ font-size: 0.833em;
}
.wall-item-content {
@@ -2050,7 +1887,7 @@ img.mail-list-sender-photo {
}
.comment-icon {
- font-size: 0.8em;
+ font-size: 0.833em;
color: $toolicon_colour;
}
@@ -2062,7 +1899,7 @@ img.mail-list-sender-photo {
.comment-edit-text-empty {
color: gray;
- font-size: 11px;
+ font-size: 12px;
}
.comment-edit-text-full {
@@ -2076,7 +1913,7 @@ img.mail-list-sender-photo {
border-bottom-right-radius: $radiuspx;
border-bottom-left-radius: $radiuspx;
text-align: center;
- font-weight: bold;
+ font-size: $body_font_size;
color: $link_colour;
cursor: pointer;
}
@@ -2090,6 +1927,7 @@ img.mail-list-sender-photo {
/* widgets */
.widget {
+ background-color: $comment_item_colour;
border-bottom: 1px solid $widget_brdrcolour;
-moz-border-radius: $radiuspx;
-webkit-border-radius: $radiuspx;
@@ -2106,10 +1944,6 @@ img.mail-list-sender-photo {
-moz-border-radius: $radiuspx;
}
-#saved-search-ul {
- list-style-type: none;
-}
-
.fileas-ul {
list-style-type: none;
}
@@ -2119,15 +1953,6 @@ img.mail-list-sender-photo {
border-radius: $radiuspx;
-moz-border-radius: $radiuspx;
}
-/*
-.categories-ul {
- list-style-type: none;
-}
-
-#sidebar-group-list ul, #posted-date-selector {
- list-style-type: none;
-}
-*/
.profile-thing-list img, .thing-show img, .thing-edit-links a {
margin-top: 8px;
@@ -2138,6 +1963,10 @@ img.mail-list-sender-photo {
background-color: $abookself_bgcolour;
}
+.abook-pending-contact, .abook-permschange {
+ background: $abook_changebg;
+}
+
.online-now {
color: red;
cursor: pointer;
@@ -2149,27 +1978,13 @@ img.mail-list-sender-photo {
.chat-item-text {
border-radius: $radiuspx;
- background-color: #eee;
+ background-color: $chat_txtbgcol;
}
/* nav bootstrap */
-nav i {
- font-size: 14px;
-}
nav img {
- height: 47px;
- width: 47px;
- margin-top: 2px;
- border-radius: $radiuspx;
-}
-
-nav ul li {
- max-height: 50px
-}
-
-nav .badge {
border-radius: $radiuspx;
}
@@ -2204,18 +2019,75 @@ nav .dropdown-menu>li>a:hover,nav .dropdown-menu>li>a:focus{
color: $nav_active_icon_colour;
}
-/* Files */
+.section-title-wrapper {
+ padding: 7px 10px;
+ background-color: $item_colour;
+ border-top-left-radius: $radiuspx;
+ border-top-right-radius: $radiuspx;
+ margin-bottom: 3px;
+}
-#attach-edit-perms {
- margin-top: 25px;
- margin-bottom: 20px;
- font-weight: bold;
- font-size: 17px;
+.section-title-wrapper h2 {
+ margin-top: 0px;
+ margin-bottom: 0px;
+}
+
+.section-content-tools-wrapper {
+ padding: 7px 10px;
+ background-color: $comment_item_colour;
+ margin-bottom: 3px;
+}
+
+.section-content-wrapper {
+ padding: 7px 10px;
+ background-color: $comment_item_colour;
+ border-bottom-left-radius: $radiuspx;
+ border-bottom-right-radius: $radiuspx;
+}
+
+.section-content-wrapper-np {
+ background-color: $comment_item_colour;
+ border-bottom-left-radius: $radiuspx;
+ border-bottom-right-radius: $radiuspx;
+}
+
+[id^="cloud-index-"]:hover,
+.cloud-index-active {
+ background-color: $item_colour;
}
/* bootstrap overrides */
+
blockquote {
- font-size: $body_font_size;
+ font-size: $font_size;
+ font-style: italic;
+ background-color: $blockquote_bgcolour;
+ border-left: 3px solid $blockquote_bordercolour;
+ padding: 0.4em;
+ color: $blockquote_colour;
+ margin: 0px 0px 0px 20px;
+}
+
+.badge {
+ border-radius: $radiuspx;
+}
+
+nav .badge:hover {
+ background-color: #999;
+}
+
+nav .badge.home-update,
+nav .badge.notify-update,
+nav .badge.intro-update,
+nav .badge.mail-update {
+ background-color:#C9302C;
+}
+
+nav .badge.home-update:hover,
+nav .badge.notify-update:hover,
+nav .badge.intro-update:hover,
+nav .badge.mail-update:hover {
+ background-color:#D9534F;
}
.dropdown-menu {
@@ -2235,6 +2107,11 @@ blockquote {
$dropdown_bgimghover
}
+aside .nav > li > a:hover, aside .nav > li > a:focus {
+ text-decoration: $navtabs_decohover;
+ background-color: $navaside_bghover;
+}
+
.dropdown-menu img {
border-radius: $radiuspx;
}
@@ -2265,6 +2142,7 @@ blockquote {
.navbar-inverse .navbar-nav > li > a {
+ font-size: 12px;
color: $nav_icon_colour;
text-shadow: 0px 0px 0px;
}
@@ -2347,6 +2225,14 @@ blockquote {
}
}
+.btn {
+ font-size: $body_font_size;
+}
+
+.btn-xs {
+ font-size: 0.75rem;
+}
+
.btn-default {
background-color: $editbuttons_bgcolour;
border-color: $editbuttons_bordercolour;
@@ -2356,7 +2242,7 @@ blockquote {
}
.btn-default:hover, .btn-default:focus, .btn-default:active .btn-default.active {
- background-color: $editbuttons_bghover;
+ background-color: $editbuttons_bghover;
border-color: $editbuttons_bordercolourhover;
color: $input_colourhover;
text-decoration: $input_decohover;
@@ -2366,13 +2252,19 @@ blockquote {
text-decoration: none;
}
+.alert-info {
+ color: $alert_txtcolour;
+ background-color:$alert_bgcolour;
+ border-color: $alert_bordercol;
+ background-image: linear-gradient(to bottom, $alert_bgcolour 0px, $alert_gradientcol 100%);
+}
+
.well {
background-color: $advperm_bgcolour;
border: 1px solid $advperm_bordercol;
background-image: linear-gradient(to bottom, $advperm_gradientcol 0px, $advperm_bgcolour 100%);
}
-
@media screen and (max-width: 767px) {
aside#region_1 {
background: rgba(0, 0, 0, .1);
@@ -2414,3 +2306,113 @@ blockquote {
}
}
+
+/* release the navbar in landscape view on small devices */
+@media screen and (max-height: 320px) {
+ .navbar-fixed-top {
+ position: absolute;
+ }
+}
+
+.shareable_element_text {
+ height: 300px;
+ width: 300px;
+}
+
+.bb_observer {
+ color: red;
+}
+
+.bb_observer img {
+ border: 3px solid red !important;
+}
+
+.bootstrap-tagsinput .tag:before {
+ /* Copied from icon-asterisk, is there a better way to do it? */
+ font-family: FontAwesome;
+ font-weight: normal;
+ font-style: normal;
+ text-decoration: inherit;
+ content:"\f069";
+}
+
+/* Modified original CSS to match input in Redbasic */
+.bootstrap-tagsinput {
+ border-color:#fff;
+ background-color: #fff;
+ box-shadow: none;
+ display: inline-block;
+ border-radius: $radiuspx;
+ cursor: text;
+ padding: 0 6px;
+ width: 70% !important;
+}
+
+.jothidden .bootstrap-tagsinput:hover, .jothidden .bootstrap-tagsinput:focus {
+ border: 1px solid #cccccc;
+}
+
+/* Abusing theme-green is less work than makeing a new new one */
+.theme-green .back-bar .selected-bar { background-color: #000000; background-image: none; !important }
+
+
+/* Turn checkboxes into switches */
+.field.checkbox .fieldhelp { vertical-align:top; }
+.field.checkbox > div {
+ position: relative; width: 70px;
+ -webkit-user-select:none; -moz-user-select:none; -ms-user-select: none;
+ display:inline-block;
+}
+
+.field.checkbox input {
+ display: none;
+}
+
+.field.checkbox > div label {
+ display: block; overflow: hidden; cursor: pointer;
+ border: 2px solid #999999;
+ border-radius: 20px;
+ margin:0px;
+}
+
+.onoffswitch-inner {
+ display: block; width: 200%; margin-left: -100%;
+ -moz-transition: margin 0.3s ease-in 0s; -webkit-transition: margin 0.3s ease-in 0s;
+ -o-transition: margin 0.3s ease-in 0s; transition: margin 0.3s ease-in 0s;
+}
+
+.onoffswitch-inner:before, .onoffswitch-inner:after {
+ display: block; float: left; width: 50%; height: 20px; padding: 0; line-height:20px;
+ -moz-box-sizing: border-box; -webkit-box-sizing: border-box; box-sizing: border-box;
+}
+
+.onoffswitch-inner:before {
+ content: attr(data-on);
+ padding-left: 10px;
+ background-color: #EEEEEE;
+}
+
+.onoffswitch-inner:after {
+ content: attr(data-off);
+ padding-right: 10px;
+ background-color: #EEEEEE; color: #999999;
+ text-align: right;
+}
+
+.onoffswitch-switch {
+ display: block; width: 25px; margin-left: 6px; margin-right: 6px; margin-top:5%; margin-bottom:5%;
+ background: #A1A1A1;
+ border: 2px solid #999999; border-radius: 20px;
+ position: absolute; top: 0; bottom: 0; right: 36px;
+ -moz-transition: all 0.3s ease-in 0s; -webkit-transition: all 0.3s ease-in 0s;
+ -o-transition: all 0.3s ease-in 0s; transition: all 0.3s ease-in 0s;
+}
+
+.field.checkbox > div > input:checked + label .onoffswitch-inner {
+ margin-left: 0;
+}
+
+.field.checkbox > div > input:checked + label .onoffswitch-switch {
+ right: -2px;
+ background-color: #27A1CA;
+}
diff --git a/view/theme/redbasic/php/config.php b/view/theme/redbasic/php/config.php
index f02e2ad3d..bfef8216c 100644
--- a/view/theme/redbasic/php/config.php
+++ b/view/theme/redbasic/php/config.php
@@ -102,27 +102,27 @@ if(feature_enabled(local_user(),'expert'))
'$title' => t("Theme settings"),
'$schema' => array('redbasic_schema', t('Set scheme'), $arr['schema'], '', $scheme_choices),
'$narrow_navbar' => array('redbasic_narrow_navbar',t('Narrow navbar'),$arr['narrow_navbar']),
- '$nav_bg' => array('redbasic_nav_bg', t('Navigation bar background colour'), $arr['nav_bg']),
- '$nav_gradient_top' => array('redbasic_nav_gradient_top', t('Navigation bar gradient top colour'), $arr['nav_gradient_top']),
- '$nav_gradient_bottom' => array('redbasic_nav_gradient_bottom', t('Navigation bar gradient bottom colour'), $arr['nav_gradient_bottom']),
- '$nav_active_gradient_top' => array('redbasic_nav_active_gradient_top', t('Navigation active button gradient top colour'), $arr['nav_active_gradient_top']),
- '$nav_active_gradient_bottom' => array('redbasic_nav_active_gradient_bottom', t('Navigation active button gradient bottom colour'), $arr['nav_active_gradient_bottom']),
- '$nav_bd' => array('redbasic_nav_bd', t('Navigation bar border colour '), $arr['nav_bd']),
- '$nav_icon_colour' => array('redbasic_nav_icon_colour', t('Navigation bar icon colour '), $arr['nav_icon_colour']),
- '$nav_active_icon_colour' => array('redbasic_nav_active_icon_colour', t('Navigation bar active icon colour '), $arr['nav_active_icon_colour']),
- '$link_colour' => array('redbasic_link_colour', t('link colour'), $arr['link_colour'], '', $link_colours),
- '$banner_colour' => array('redbasic_banner_colour', t('Set font-colour for banner'), $arr['banner_colour']),
- '$bgcolour' => array('redbasic_background_colour', t('Set the background colour'), $arr['bgcolour']),
+ '$nav_bg' => array('redbasic_nav_bg', t('Navigation bar background color'), $arr['nav_bg']),
+ '$nav_gradient_top' => array('redbasic_nav_gradient_top', t('Navigation bar gradient top color'), $arr['nav_gradient_top']),
+ '$nav_gradient_bottom' => array('redbasic_nav_gradient_bottom', t('Navigation bar gradient bottom color'), $arr['nav_gradient_bottom']),
+ '$nav_active_gradient_top' => array('redbasic_nav_active_gradient_top', t('Navigation active button gradient top color'), $arr['nav_active_gradient_top']),
+ '$nav_active_gradient_bottom' => array('redbasic_nav_active_gradient_bottom', t('Navigation active button gradient bottom color'), $arr['nav_active_gradient_bottom']),
+ '$nav_bd' => array('redbasic_nav_bd', t('Navigation bar border color '), $arr['nav_bd']),
+ '$nav_icon_colour' => array('redbasic_nav_icon_colour', t('Navigation bar icon color '), $arr['nav_icon_colour']),
+ '$nav_active_icon_colour' => array('redbasic_nav_active_icon_colour', t('Navigation bar active icon color '), $arr['nav_active_icon_colour']),
+ '$link_colour' => array('redbasic_link_colour', t('link color'), $arr['link_colour'], '', $link_colours),
+ '$banner_colour' => array('redbasic_banner_colour', t('Set font-color for banner'), $arr['banner_colour']),
+ '$bgcolour' => array('redbasic_background_colour', t('Set the background color'), $arr['bgcolour']),
'$background_image' => array('redbasic_background_image', t('Set the background image'), $arr['background_image']),
- '$item_colour' => array('redbasic_item_colour', t('Set the background colour of items'), $arr['item_colour']),
- '$comment_item_colour' => array('redbasic_comment_item_colour', t('Set the background colour of comments'), $arr['comment_item_colour']),
- '$comment_border_colour' => array('redbasic_comment_border_colour', t('Set the border colour of comments'), $arr['comment_border_colour']),
+ '$item_colour' => array('redbasic_item_colour', t('Set the background color of items'), $arr['item_colour']),
+ '$comment_item_colour' => array('redbasic_comment_item_colour', t('Set the background color of comments'), $arr['comment_item_colour']),
+ '$comment_border_colour' => array('redbasic_comment_border_colour', t('Set the border color of comments'), $arr['comment_border_colour']),
'$comment_indent' => array('redbasic_comment_indent', t('Set the indent for comments'), $arr['comment_indent']),
- '$toolicon_colour' => array('redbasic_toolicon_colour',t('Set the basic colour for item icons'),$arr['toolicon_colour']),
- '$toolicon_activecolour' => array('redbasic_toolicon_activecolour',t('Set the hover colour for item icons'),$arr['toolicon_activecolour']),
+ '$toolicon_colour' => array('redbasic_toolicon_colour',t('Set the basic color for item icons'),$arr['toolicon_colour']),
+ '$toolicon_activecolour' => array('redbasic_toolicon_activecolour',t('Set the hover color for item icons'),$arr['toolicon_activecolour']),
'$body_font_size' => array('redbasic_body_font_size', t('Set font-size for the entire application'), $arr['body_font_size']),
'$font_size' => array('redbasic_font_size', t('Set font-size for posts and comments'), $arr['font_size']),
- '$font_colour' => array('redbasic_font_colour', t('Set font-colour for posts and comments'), $arr['font_colour']),
+ '$font_colour' => array('redbasic_font_colour', t('Set font-color for posts and comments'), $arr['font_colour']),
'$radius' => array('redbasic_radius', t('Set radius of corners'), $arr['radius']),
'$shadow' => array('redbasic_shadow', t('Set shadow depth of photos'), $arr['shadow']),
'$converse_width' => array('redbasic_converse_width',t('Set maximum width of conversation regions'),$arr['converse_width']),
diff --git a/view/theme/redbasic/php/style.php b/view/theme/redbasic/php/style.php
index 23d9c695f..5d44a9b9d 100644
--- a/view/theme/redbasic/php/style.php
+++ b/view/theme/redbasic/php/style.php
@@ -64,7 +64,7 @@ if(! $a->install) {
// should leave it for admins to define for themselves.
if (! $schema) {
if(file_exists('view/theme/redbasic/schema/default.php')) {
- $schemefile = 'view/theme/redbasic/schema/' . 'default.php';
+ $schemefile = 'view/theme/redbasic/schema/default.php';
require_once ($schemefile);
}
}
@@ -108,7 +108,11 @@ if(! $a->install) {
if (! $navtabs_bgchover)
$navtabs_bgchover = "rgba(238,238,238,0.8)";
if (! $link_colour)
- $link_colour = "#428BCA";
+ $link_colour = "#337AB7";
+ if (! $navaside_bghover)
+ $navaside_bghover = "#eee";
+ if (! $link_font_weight)
+ $link_font_weight = "normal";
if (! $banner_colour)
$banner_colour = "#fff";
if (! $search_background)
@@ -121,6 +125,8 @@ if(! $a->install) {
$item_colour = "rgba(238,238,238,0.8)";
if (! $comment_item_colour)
$comment_item_colour = "rgba(254,254,254,0.4)";
+ if (! $genericcontent_bgcolour)
+ $genericcontent_bgcolour = $comment_item_colour;
if (! $comment_border_colour)
$comment_border_colour = "rgba(238,238,238,0.8)";
if (! $toolicon_colour)
@@ -130,9 +136,9 @@ if(! $a->install) {
if (! $item_opacity)
$item_opacity = "1";
if (! $font_size)
- $font_size = "1.0em";
+ $font_size = "0.9rem";
if (! $body_font_size)
- $body_font_size = "11px";
+ $body_font_size = "0.75rem";
if (! $font_colour)
$font_colour = "#4d4d4d";
if (! $selected_active_colour)
@@ -140,19 +146,19 @@ if(! $a->install) {
if (! $selected_active_deco)
$selected_active_deco = "none";
if (! $widget_brdrcolour)
- $widget_brdrcolour = "#eec";
+ $widget_brdrcolour = "rgba(238,238,238,0.8)";
if (! $blockquote_colour)
- $blockquote_colour = "#000";
+ $blockquote_colour = "#4d4d4d";
if (! $blockquote_bgcolour)
- $blockquote_bgcolour = "#f4f8f9";
+ $blockquote_bgcolour = "";
if (! $blockquote_bordercolour)
- $blockquote_bordercolour = "#dae4ee";
+ $blockquote_bordercolour = "#ccc";
if (! $code_borderc)
- $code_borderc = "#444";
+ $code_borderc = "#ccc";
if (! $code_bgcolour)
- $code_bgcolour = "#EEE";
+ $code_bgcolour = "#ccc";
if (! $code_txtcolour)
- $code_txtcolour = "#444";
+ $code_txtcolour = "#000";
if (! $pre_borderc)
$pre_borderc = "#ccc";
if (! $pre_bgcolour)
@@ -220,7 +226,7 @@ if(! $a->install) {
if (! $input_linksubmit)
$input_linksubmit = "#0080FF";
if (! $input_border)
- $input_border = "#666";
+ $input_border = "#ccc";
if (! $input_colourhover)
$input_colourhover = "#333";
if (! $input_decohover)
@@ -250,16 +256,26 @@ if(! $a->install) {
$reply_photo = '32px';
if(! $infomess_bgcolour)
$infomess_bgcolour = "#F0F0F0";
- if(! $advperm_bgcolour)
- $advperm_bgcolour = "#F5F5F5";
- if(! $advperm_bordercol)
- $advperm_bordercol = "#E3E3E3";
- if(! $advperm_gradientcol)
- $advperm_gradientcol = "#E8E8E8";
- if(! $cal_bgcolour)
- $cal_bgcolour = "#FCF8E3";
- if(! $fancybox_bgcolour)
- $fancybox_bgcolour = "#FFF";
+ if(! $alert_txtcolour)
+ $alert_txtcolour = "#31708F";
+ if(! $alert_bgcolour)
+ $alert_bgcolour = "#D9EDF7";
+ if(! $alert_bordercol)
+ $alert_bordercol = "#BCE8F1";
+ if(! $alert_gradientcol)
+ $alert_gradientcol = "#B9DEF0";
+ if(! $advperm_bgcolour)
+ $advperm_bgcolour = "#F5F5F5";
+ if(! $advperm_bordercol)
+ $advperm_bordercol = "#E3E3E3";
+ if(! $advperm_gradientcol)
+ $advperm_gradientcol = "#E8E8E8";
+ if(! $cal_bgcolour)
+ $cal_bgcolour = "#FCF8E3";
+ if(! $chat_txtbgcol)
+ $chat_txtbgcol = "#EEE";
+ if(! $fancybox_bgcolour)
+ $fancybox_bgcolour = "#FFF";
if (!$comment_padding)
$comment_padding="0px";
if (!$comment_border_left)
@@ -276,6 +292,8 @@ if(! $a->install) {
$dirpopup_txtcol="";
if (!$dirpopup_linkcol)
$dirpopup_linkcol="";
+ if (!$abook_changebg)
+ $abook_changebg="orange";
if($nav_min_opacity === false || $nav_min_opacity === '') {
$nav_float_min_opacity = 1.0;
@@ -310,11 +328,14 @@ $options = array (
'$navtabs_linkchover' => $navtabs_linkchover,
'$navtabs_bgchover' => $navtabs_bgchover,
'$navtabs_decohover' => $navtabs_decohover,
+'$navaside_bghover' => $navaside_bghover,
'$link_colour' => $link_colour,
+'$link_font_weight' => $link_font_weight,
'$banner_colour' => $banner_colour,
'$search_background' => $search_background,
'$bgcolour' => $bgcolour,
'$background_image' => $background_image,
+'$genericcontent_bgcolour' => $genericcontent_bgcolour,
'$item_colour' => $item_colour,
'$comment_item_colour' => $comment_item_colour,
'$comment_border_colour' => $comment_border_colour,
@@ -382,10 +403,15 @@ $options = array (
'$top_photo' => $top_photo,
'$reply_photo' => $reply_photo,
'$infomess_bgcolour' => $infomess_bgcolour,
+'$alert_txtcolour' => $alert_txtcolour,
+'$alert_bgcolour' => $alert_bgcolour,
+'$alert_bordercol' => $alert_bordercol,
+'$alert_gradientcol' => $alert_gradientcol,
'$advperm_bgcolour' => $advperm_bgcolour,
'$advperm_bordercol' => $advperm_bordercol,
'$advperm_gradientcol' => $advperm_gradientcol,
'$cal_bgcolour' => $cal_bgcolour,
+'$chat_txtbgcol' => $chat_txtbgcol,
'$fancybox_bgcolour' => $fancybox_bgcolour,
'$pmenu_top' => $pmenu_top,
'$pmenu_reply' => $pmenu_reply,
@@ -400,6 +426,7 @@ $options = array (
'$admintable_hoverbgcol' => $admintable_hoverbgcol,
'$dirpopup_txtcol' => $dirpopup_txtcol,
'$dirpopup_linkcol' => $dirpopup_linkcol,
+'$abook_changebg' => $abook_changebg,
);
echo str_replace(array_keys($options), array_values($options), $x);
diff --git a/view/theme/redbasic/php/theme_init.php b/view/theme/redbasic/php/theme_init.php
index 2da04a389..dd4542e8a 100644
--- a/view/theme/redbasic/php/theme_init.php
+++ b/view/theme/redbasic/php/theme_init.php
@@ -4,15 +4,14 @@ head_add_css('library/font_awesome/css/font-awesome.min.css');
head_add_css('library/bootstrap/css/bootstrap-theme.min.css');
head_add_css('library/bootstrap/css/bootstrap.min.css');
head_add_css('view/css/bootstrap-red.css');
-head_add_css('library/bootstrap-datetimepicker/css/bootstrap-datetimepicker.min.css');
+head_add_css('library/datetimepicker/jquery.datetimepicker.css');
//head_add_css('library/colorpicker/css/colorpicker.css');
head_add_css('library/bootstrap-colorpicker/dist/css/bootstrap-colorpicker.min.css');
require_once('view/php/theme_init.php');
head_add_js('library/bootstrap/js/bootstrap.min.js');
head_add_js('library/bootstrap/js/bootbox.min.js');
-head_add_js('library/bootstrap-datetimepicker/js/moment.js');
-head_add_js('library/bootstrap-datetimepicker/js/bootstrap-datetimepicker.min.js');
+head_add_js('library/datetimepicker/jquery.datetimepicker.js');
//head_add_js('library/colorpicker/js/colorpicker.js');
head_add_js('library/bootstrap-colorpicker/dist/js/bootstrap-colorpicker.js');
//head_add_js('library/bootstrap-colorpicker/src/js/docs.js');
diff --git a/view/theme/redbasic/schema/dark.php b/view/theme/redbasic/schema/dark.php
index 69fcf403f..0203d30cd 100644
--- a/view/theme/redbasic/schema/dark.php
+++ b/view/theme/redbasic/schema/dark.php
@@ -34,8 +34,12 @@
$navtabs_bgchover = "#222";
if (! $navtabs_decohover)
$navtabs_decohover = "underline";
+ if (! $navaside_bghover)
+ $navaside_bghover = "#222";
if (! $link_colour)
$link_colour = "#fff";
+ if (! $link_font_weight)
+ $link_font_weight = "bold";
if (! $selected_active_colour)
$selected_active_colour = "#fff";
if (! $selected_active_deco)
@@ -50,6 +54,8 @@
$item_colour = "rgba(28,28,28,0.8)";
if (! $comment_item_colour)
$comment_item_colour = "rgba(18,18,18,0.4)";
+ if (! $genericcontent_bgcolour)
+ $genericcontent_bgcolour = "rgba(28,28,28,0.8)";
if (! $comment_border_colour)
$comment_border_colour = "rgba(28,28,28,0.8)";
if (! $toolicon_colour)
@@ -154,19 +160,31 @@
$abookself_bgcolour = "#251111";
if(! $infomess_bgcolour)
$infomess_bgcolour = "#333";
- if(! $advperm_bgcolour)
- $advperm_bgcolour = "#1E1E1E";
- if(! $advperm_bordercol)
- $advperm_bordercol = "#222";
- if(! $advperm_gradientcol)
- $advperm_gradientcol = "#111";
- if(! $cal_bgcolour)
- $cal_bgcolour = "#333";
- if(! $fancybox_bgcolour)
- $fancybox_bgcolour = "#1E1E1E";
+ if(! $alert_txtcolour)
+ $alert_txtcolour = "#CCC";
+ if(! $alert_bgcolour)
+ $alert_bgcolour = "#333";
+ if(! $alert_bordercol)
+ $alert_bordercol = "#444";
+ if(! $alert_gradientcol)
+ $alert_gradientcol = "#333";
+ if(! $advperm_bgcolour)
+ $advperm_bgcolour = "#1E1E1E";
+ if(! $advperm_bordercol)
+ $advperm_bordercol = "#222";
+ if(! $advperm_gradientcol)
+ $advperm_gradientcol = "#1E1E1E";
+ if(! $cal_bgcolour)
+ $cal_bgcolour = "#333";
+ if(! $chat_txtbgcol)
+ $chat_txtbgcol = "#222";
+ if(! $fancybox_bgcolour)
+ $fancybox_bgcolour = "#1E1E1E";
if (!$admintable_hoverbgcol)
$admintable_hoverbgcol="#222";
if (!$dirpopup_txtcol)
$dirpopup_txtcol="#111";
if (!$dirpopup_linkcol)
$dirpopup_linkcol="#000";
+ if (!$abook_changebg)
+ $abook_changebg="#402900";
diff --git a/view/theme/redbasic/schema/simple_black_on_white.php b/view/theme/redbasic/schema/simple_black_on_white.php
new file mode 100644
index 000000000..ddbcae495
--- /dev/null
+++ b/view/theme/redbasic/schema/simple_black_on_white.php
@@ -0,0 +1,190 @@
+<?php
+
+ if (! $nav_bg)
+ $nav_bg = "#fff";
+ if (! $nav_gradient_top)
+ $nav_gradient_top = "#fff";
+ if (! $nav_gradient_bottom)
+ $nav_gradient_bottom = "#fff";
+ if (! $nav_active_gradient_top)
+ $nav_active_gradient_top = "#fff";
+ if (! $nav_active_gradient_bottom)
+ $nav_active_gradient_bottom = "#fff";
+ if (! $nav_bd)
+ $nav_bd = "#fff";
+ if (! $nav_icon_colour)
+ $nav_icon_colour = "#111";
+ if (! $nav_active_icon_colour)
+ $nav_active_icon_colour = "#000";
+ if (! $navmenu_bgchover)
+ $navmenu_bgchover = "#F5F5F5";
+ if (! $navmenu_bgimage)
+ $navmenu_bgimage = "background-image: none;";
+ if (! $navtabs_borderc)
+ $navtabs_borderc = "#000";
+ if (! $navtabs_fontcolour)
+ $navtabs_fontcolour = "#000";
+ if (! $navtabs_bgcolour)
+ $navtabs_bgcolour = "#fff";
+ if (! $navtabs_linkcolour)
+ $navtabs_linkcolour = "color: #000;";
+ if (! $navtabs_linkchover)
+ $navtabs_linkchover = "color: #000;";
+ if (! $navtabs_bgchover)
+ $navtabs_bgchover = "#fff";
+ if (! $navtabs_decohover)
+ $navtabs_decohover = "underline";
+ if (! $navaside_bghover)
+ $navaside_bghover = "#F5F5F5";
+ if (! $link_colour)
+ $link_colour = "#000";
+ if (! $link_font_weight)
+ $link_font_weight = "bold";
+ if (! $selected_active_colour)
+ $selected_active_colour = "#000";
+ if (! $selected_active_deco)
+ $selected_active_deco = "underline";
+ if (! $banner_colour)
+ $banner_colour = "#fff";
+ if (! $search_background)
+ $search_background = "#F5F5F5";
+ if (! $bgcolour)
+ $bgcolour = "#fff";
+ if (! $genericcontent_bgcolour)
+ $genericcontent_bgcolour = 'rgba(255,255,255,0.8)';
+ if (! $item_colour)
+ $item_colour = "rgba(255,255,255,0.8)";
+ if (! $comment_item_colour)
+ $comment_item_colour = "rgba(255,255,255,0.4)";
+ if (! $comment_border_colour)
+ $comment_border_colour = "rgba(255,255,255,0.8)";
+ if (! $toolicon_colour)
+ $toolicon_colour = '#111';
+ if (! $toolicon_activecolour)
+ $toolicon_activecolour = '#000';
+ if (! $font_colour)
+ $font_colour = "#000";
+ if (! $widget_brdrcolour)
+ $widget_brdrcolour = "#fff";
+ if (! $blockquote_colour)
+ $blockquote_colour = "#111";
+ if (! $blockquote_bgcolour)
+ $blockquote_bgcolour = "#fff";
+ if (! $blockquote_bordercolour)
+ $blockquote_bordercolour = "#000";
+ if (! $code_borderc)
+ $code_borderc = "#000";
+ if (! $code_bgcolour)
+ $code_bgcolour = "#fff";
+ if (! $code_txtcolour)
+ $code_txtcolour = "#000";
+ if (! $pre_borderc)
+ $pre_borderc = "#000";
+ if (! $pre_bgcolour)
+ $pre_bgcolour = "#fff";
+ if (! $pre_txtcolour)
+ $pre_txtcolour = "#111";
+ if (! $item_bordercolour)
+ $item_bordercolour = "#000";
+ if (! $notif_itemcolour)
+ $notif_itemcolour = "#000";
+ if (! $notif_itemhovercolour)
+ $notif_itemhovercolour = "#000";
+ if (! $acpopup_bgcolour)
+ $acpopup_bgcolour = "#fff";
+ if (! $acpopup_bordercolour)
+ $acpopup_bordercolour = "#000";
+ if (! $acpopup_tgbl_bgcolour)
+ $acpopup_tgbl_bgcolour = "#fff";
+ if (! $acpopup_hovercolour)
+ $acpopup_hovercolour = "#000";
+ if (! $editbuttons_bgcolour)
+ $editbuttons_bgcolour = "#fff";
+ if (! $editbuttons_bordercolour)
+ $editbuttons_bordercolour = "#000";
+ if (! $editbuttons_colour)
+ $editbuttons_colour = "#111";
+ if (! $editbuttons_bghover)
+ $editbuttons_bghover = "#fff";
+ if (! $dropdown_bgcolour)
+ $dropdown_bgcolour = "#fff";
+ if (! $dropdown_textcolour)
+ $dropdown_textcolour = "#000";
+ if (! $dropdown_txtcolhover)
+ $dropdown_txtcolhover = "#000";
+ if (! $dropdown_bgcolhover)
+ $dropdown_bgcolhover = "#F5F5F5";
+ if (! $dropdown_bgimghover)
+ $dropdown_bgimghover = "background-image: none;";
+ if (! $dropdown_togglecol)
+ $dropdown_togglecol = "#000";
+ if (! $dropdown_togglebgcol)
+ $dropdown_togglebgcol = "#fff";
+ if (! $dropdown_bordercol)
+ $dropdown_bordercol = "#fff";
+ if (! $preview_backgroundimg)
+ $preview_backgroundimg = "gray_and_white_diagonal_stripes_background_seamless.gif";
+ if (! $notify_bgcolour)
+ $notify_bgcolour = "#fff";
+ if (! $notify_linkcolour)
+ $notify_linkcolour = "#000";
+ if (! $notify_bghover)
+ $notify_bghover = "#fff";
+ if (! $notify_topmargin)
+ $notify_topmargin = "-1px";
+ if (! $notifyseen_bgcolour)
+ $notifyseen_bgcolour = "#fff";
+ if (! $notifyseen_linkcolour)
+ $notifyseen_linkcolour = "#fff";
+ if (! $notifyseen_bghover)
+ $notifyseen_bghover = "#fff";
+ if (! $notifyseen_linkhover)
+ $notifyseen_linkhover = "#000";
+ if (! $input_bgsubmit)
+ $input_bgsubmit = "#fff";
+ if (! $input_linksubmit)
+ $input_linksubmit = "#000";
+ if (! $input_border)
+ $input_border = "#000";
+ if (! $input_colourhover)
+ $input_colourhover = "#000";
+ if (! $input_decohover)
+ $input_decohover = "underline";
+ if (! $acl_bgcolour)
+ $acl_bgcolour = "#fff";
+ if (! $acl_bordercolour)
+ $acl_bordercolour = "#fff";
+ if (! $aclbutton_linkcolour)
+ $aclbutton_linkcolour = "color: #000;";
+ if (! $abookself_bgcolour)
+ $abookself_bgcolour = "#fff";
+ if(! $infomess_bgcolour)
+ $infomess_bgcolour = "#fff";
+ if(! $alert_txtcolour)
+ $alert_txtcolour = "#000";
+ if(! $alert_bgcolour)
+ $alert_bgcolour = "#fff";
+ if(! $alert_bordercol)
+ $alert_bordercol = "#000";
+ if(! $alert_gradientcol)
+ $alert_gradientcol = "#fff";
+ if(! $advperm_bgcolour)
+ $advperm_bgcolour = "#fff";
+ if(! $advperm_bordercol)
+ $advperm_bordercol = "#000";
+ if(! $advperm_gradientcol)
+ $advperm_gradientcol = "#fff";
+ if(! $cal_bgcolour)
+ $cal_bgcolour = "#fff";
+ if(! $chat_txtbgcol)
+ $chat_txtbgcol = "#fff";
+ if(! $fancybox_bgcolour)
+ $fancybox_bgcolour = "#fff";
+ if (!$admintable_hoverbgcol)
+ $admintable_hoverbgcol="#fff";
+ if (!$dirpopup_txtcol)
+ $dirpopup_txtcol="#fff";
+ if (!$dirpopup_linkcol)
+ $dirpopup_linkcol="#fff";
+ if (!$abook_changebg)
+ $abook_changebg="#fff";
diff --git a/view/theme/redbasic/schema/simple_green_on_black.php b/view/theme/redbasic/schema/simple_green_on_black.php
new file mode 100644
index 000000000..f034185f7
--- /dev/null
+++ b/view/theme/redbasic/schema/simple_green_on_black.php
@@ -0,0 +1,190 @@
+<?php
+
+ if (! $nav_bg)
+ $nav_bg = "#000";
+ if (! $nav_gradient_top)
+ $nav_gradient_top = "#000";
+ if (! $nav_gradient_bottom)
+ $nav_gradient_bottom = "#000";
+ if (! $nav_active_gradient_top)
+ $nav_active_gradient_top = "#000";
+ if (! $nav_active_gradient_bottom)
+ $nav_active_gradient_bottom = "#000";
+ if (! $nav_bd)
+ $nav_bd = "#000";
+ if (! $nav_icon_colour)
+ $nav_icon_colour = "#32962D";
+ if (! $nav_active_icon_colour)
+ $nav_active_icon_colour = "#50f148";
+ if (! $navmenu_bgchover)
+ $navmenu_bgchover = "#143D12";
+ if (! $navmenu_bgimage)
+ $navmenu_bgimage = "background-image: none;";
+ if (! $navtabs_borderc)
+ $navtabs_borderc = "#143D12";
+ if (! $navtabs_fontcolour)
+ $navtabs_fontcolour = "#46D43F";
+ if (! $navtabs_bgcolour)
+ $navtabs_bgcolour = "#000";
+ if (! $navtabs_linkcolour)
+ $navtabs_linkcolour = "color: #50f148;";
+ if (! $navtabs_linkchover)
+ $navtabs_linkchover = "color: #50f148;";
+ if (! $navtabs_bgchover)
+ $navtabs_bgchover = "#000";
+ if (! $navtabs_decohover)
+ $navtabs_decohover = "underline";
+if (! $navaside_bghover)
+ $navaside_bghover = "#143D12";
+ if (! $link_colour)
+ $link_colour = "#50f148";
+ if (! $link_font_weight)
+ $link_font_weight = "bold";
+ if (! $selected_active_colour)
+ $selected_active_colour = "#50f148";
+ if (! $selected_active_deco)
+ $selected_active_deco = "underline";
+ if (! $banner_colour)
+ $banner_colour = "#000";
+ if (! $search_background)
+ $search_background = "#000";
+ if (! $bgcolour)
+ $bgcolour = "#000";
+ if (! $genericcontent_bgcolour)
+ $genericcontent_bgcolour = 'rgba(0,0,0,0.8)';
+ if (! $item_colour)
+ $item_colour = "rgba(0,0,0,0.8)";
+ if (! $comment_item_colour)
+ $comment_item_colour = "rgba(0,0,0,0.4)";
+ if (! $comment_border_colour)
+ $comment_border_colour = "rgba(0,0,0,0.8)";
+ if (! $toolicon_colour)
+ $toolicon_colour = '#32962D';
+ if (! $toolicon_activecolour)
+ $toolicon_activecolour = '#50f148';
+ if (! $font_colour)
+ $font_colour = "#46D43F";
+ if (! $widget_brdrcolour)
+ $widget_brdrcolour = "#000";
+ if (! $blockquote_colour)
+ $blockquote_colour = "#32962D";
+ if (! $blockquote_bgcolour)
+ $blockquote_bgcolour = "#000";
+ if (! $blockquote_bordercolour)
+ $blockquote_bordercolour = "#143D12";
+ if (! $code_borderc)
+ $code_borderc = "#143D12";
+ if (! $code_bgcolour)
+ $code_bgcolour = "#000";
+ if (! $code_txtcolour)
+ $code_txtcolour = "#32962D";
+ if (! $pre_borderc)
+ $pre_borderc = "#143D12";
+ if (! $pre_bgcolour)
+ $pre_bgcolour = "#000";
+ if (! $pre_txtcolour)
+ $pre_txtcolour = "#32962D";
+ if (! $item_bordercolour)
+ $item_bordercolour = "#143D12";
+ if (! $notif_itemcolour)
+ $notif_itemcolour = "#50f148";
+ if (! $notif_itemhovercolour)
+ $notif_itemhovercolour = "#50f148";
+ if (! $acpopup_bgcolour)
+ $acpopup_bgcolour = "#000";
+ if (! $acpopup_bordercolour)
+ $acpopup_bordercolour = "#143D12";
+ if (! $acpopup_tgbl_bgcolour)
+ $acpopup_tgbl_bgcolour = "#000";
+ if (! $acpopup_hovercolour)
+ $acpopup_hovercolour = "#50f148";
+ if (! $editbuttons_bgcolour)
+ $editbuttons_bgcolour = "#000";
+ if (! $editbuttons_bordercolour)
+ $editbuttons_bordercolour = "#143D12";
+ if (! $editbuttons_colour)
+ $editbuttons_colour = "#32962D";
+ if (! $editbuttons_bghover)
+ $editbuttons_bghover = "#000";
+ if (! $dropdown_bgcolour)
+ $dropdown_bgcolour = "#000";
+ if (! $dropdown_textcolour)
+ $dropdown_textcolour = "#32962D";
+ if (! $dropdown_txtcolhover)
+ $dropdown_txtcolhover = "#50f148";
+ if (! $dropdown_bgcolhover)
+ $dropdown_bgcolhover = "#143D12";
+ if (! $dropdown_bgimghover)
+ $dropdown_bgimghover = "background-image: none;";
+ if (! $dropdown_togglecol)
+ $dropdown_togglecol = "#50f148";
+ if (! $dropdown_togglebgcol)
+ $dropdown_togglebgcol = "#000";
+ if (! $dropdown_bordercol)
+ $dropdown_bordercol = "#143D12";
+ if (! $preview_backgroundimg)
+ $preview_backgroundimg = "gray_and_black_diagonal_stripes_background_seamless.gif";
+ if (! $notify_bgcolour)
+ $notify_bgcolour = "#000";
+ if (! $notify_linkcolour)
+ $notify_linkcolour = "#50f148";
+ if (! $notify_bghover)
+ $notify_bghover = "#000";
+ if (! $notify_topmargin)
+ $notify_topmargin = "-1px";
+ if (! $notifyseen_bgcolour)
+ $notifyseen_bgcolour = "#000";
+ if (! $notifyseen_linkcolour)
+ $notifyseen_linkcolour = "#000";
+ if (! $notifyseen_bghover)
+ $notifyseen_bghover = "#000";
+ if (! $notifyseen_linkhover)
+ $notifyseen_linkhover = "#50f148";
+ if (! $input_bgsubmit)
+ $input_bgsubmit = "#000";
+ if (! $input_linksubmit)
+ $input_linksubmit = "#50f148";
+ if (! $input_border)
+ $input_border = "#143D12";
+ if (! $input_colourhover)
+ $input_colourhover = "#50f148";
+ if (! $input_decohover)
+ $input_decohover = "underline";
+ if (! $acl_bgcolour)
+ $acl_bgcolour = "#000";
+ if (! $acl_bordercolour)
+ $acl_bordercolour = "#000";
+ if (! $aclbutton_linkcolour)
+ $aclbutton_linkcolour = "color: #fff;";
+ if (! $abookself_bgcolour)
+ $abookself_bgcolour = "#000";
+ if(! $infomess_bgcolour)
+ $infomess_bgcolour = "#000";
+ if(! $alert_txtcolour)
+ $alert_txtcolour = "#50f148";
+ if(! $alert_bgcolour)
+ $alert_bgcolour = "#000";
+ if(! $alert_bordercol)
+ $alert_bordercol = "#143D12";
+ if(! $alert_gradientcol)
+ $alert_gradientcol = "#000";
+ if(! $advperm_bgcolour)
+ $advperm_bgcolour = "#000";
+ if(! $advperm_bordercol)
+ $advperm_bordercol = "#143D12";
+ if(! $advperm_gradientcol)
+ $advperm_gradientcol = "#000";
+ if(! $cal_bgcolour)
+ $cal_bgcolour = "#000";
+ if(! $chat_txtbgcol)
+ $chat_txtbgcol = "#000";
+ if(! $fancybox_bgcolour)
+ $fancybox_bgcolour = "#000";
+ if (!$admintable_hoverbgcol)
+ $admintable_hoverbgcol="#000";
+ if (!$dirpopup_txtcol)
+ $dirpopup_txtcol="#000";
+ if (!$dirpopup_linkcol)
+ $dirpopup_linkcol="#000";
+ if (!$abook_changebg)
+ $abook_changebg="#000";
diff --git a/view/theme/redbasic/schema/simple_white_on_black.php b/view/theme/redbasic/schema/simple_white_on_black.php
new file mode 100644
index 000000000..95ede29ed
--- /dev/null
+++ b/view/theme/redbasic/schema/simple_white_on_black.php
@@ -0,0 +1,190 @@
+<?php
+
+ if (! $nav_bg)
+ $nav_bg = "#000";
+ if (! $nav_gradient_top)
+ $nav_gradient_top = "#000";
+ if (! $nav_gradient_bottom)
+ $nav_gradient_bottom = "#000";
+ if (! $nav_active_gradient_top)
+ $nav_active_gradient_top = "#000";
+ if (! $nav_active_gradient_bottom)
+ $nav_active_gradient_bottom = "#000";
+ if (! $nav_bd)
+ $nav_bd = "#000";
+ if (! $nav_icon_colour)
+ $nav_icon_colour = "#eee";
+ if (! $nav_active_icon_colour)
+ $nav_active_icon_colour = "#fff";
+ if (! $navmenu_bgchover)
+ $navmenu_bgchover = "#030303";
+ if (! $navmenu_bgimage)
+ $navmenu_bgimage = "background-image: none;";
+ if (! $navtabs_borderc)
+ $navtabs_borderc = "#fff";
+ if (! $navtabs_fontcolour)
+ $navtabs_fontcolour = "#fff";
+ if (! $navtabs_bgcolour)
+ $navtabs_bgcolour = "#000";
+ if (! $navtabs_linkcolour)
+ $navtabs_linkcolour = "color: #fff;";
+ if (! $navtabs_linkchover)
+ $navtabs_linkchover = "color: #fff;";
+ if (! $navtabs_bgchover)
+ $navtabs_bgchover = "#000";
+ if (! $navtabs_decohover)
+ $navtabs_decohover = "underline";
+ if (! $navaside_bghover)
+ $navaside_bghover = "#030303";
+ if (! $link_colour)
+ $link_colour = "#fff";
+ if (! $link_font_weight)
+ $link_font_weight = "bold";
+ if (! $selected_active_colour)
+ $selected_active_colour = "#fff";
+ if (! $selected_active_deco)
+ $selected_active_deco = "underline";
+ if (! $banner_colour)
+ $banner_colour = "#000";
+ if (! $search_background)
+ $search_background = "#000";
+ if (! $bgcolour)
+ $bgcolour = "#000";
+ if (! $genericcontent_bgcolour)
+ $genericcontent_bgcolour ='rgba(0,0,0,0.8)';
+ if (! $item_colour)
+ $item_colour = "rgba(0,0,0,0.8)";
+ if (! $comment_item_colour)
+ $comment_item_colour = "rgba(0,0,0,0.4)";
+ if (! $comment_border_colour)
+ $comment_border_colour = "rgba(0,0,0,0.8)";
+ if (! $toolicon_colour)
+ $toolicon_colour = '#eee';
+ if (! $toolicon_activecolour)
+ $toolicon_activecolour = '#fff';
+ if (! $font_colour)
+ $font_colour = "#fff";
+ if (! $widget_brdrcolour)
+ $widget_brdrcolour = "#000";
+ if (! $blockquote_colour)
+ $blockquote_colour = "#eee";
+ if (! $blockquote_bgcolour)
+ $blockquote_bgcolour = "#000";
+ if (! $blockquote_bordercolour)
+ $blockquote_bordercolour = "#fff";
+ if (! $code_borderc)
+ $code_borderc = "#eee";
+ if (! $code_bgcolour)
+ $code_bgcolour = "#000";
+ if (! $code_txtcolour)
+ $code_txtcolour = "#eee";
+ if (! $pre_borderc)
+ $pre_borderc = "#fff";
+ if (! $pre_bgcolour)
+ $pre_bgcolour = "#000";
+ if (! $pre_txtcolour)
+ $pre_txtcolour = "#eee";
+ if (! $item_bordercolour)
+ $item_bordercolour = "#fff";
+ if (! $notif_itemcolour)
+ $notif_itemcolour = "#fff";
+ if (! $notif_itemhovercolour)
+ $notif_itemhovercolour = "#fff";
+ if (! $acpopup_bgcolour)
+ $acpopup_bgcolour = "#000";
+ if (! $acpopup_bordercolour)
+ $acpopup_bordercolour = "#fff";
+ if (! $acpopup_tgbl_bgcolour)
+ $acpopup_tgbl_bgcolour = "#000";
+ if (! $acpopup_hovercolour)
+ $acpopup_hovercolour = "#fff";
+ if (! $editbuttons_bgcolour)
+ $editbuttons_bgcolour = "#000";
+ if (! $editbuttons_bordercolour)
+ $editbuttons_bordercolour = "#fff";
+ if (! $editbuttons_colour)
+ $editbuttons_colour = "#eee";
+ if (! $editbuttons_bghover)
+ $editbuttons_bghover = "#000";
+ if (! $dropdown_bgcolour)
+ $dropdown_bgcolour = "#000";
+ if (! $dropdown_textcolour)
+ $dropdown_textcolour = "#fff";
+ if (! $dropdown_txtcolhover)
+ $dropdown_txtcolhover = "#fff";
+ if (! $dropdown_bgcolhover)
+ $dropdown_bgcolhover = "#030303";
+ if (! $dropdown_bgimghover)
+ $dropdown_bgimghover = "background-image: none;";
+ if (! $dropdown_togglecol)
+ $dropdown_togglecol = "#fff";
+ if (! $dropdown_togglebgcol)
+ $dropdown_togglebgcol = "#000";
+ if (! $dropdown_bordercol)
+ $dropdown_bordercol = "#000";
+ if (! $preview_backgroundimg)
+ $preview_backgroundimg = "gray_and_black_diagonal_stripes_background_seamless.gif";
+ if (! $notify_bgcolour)
+ $notify_bgcolour = "#000";
+ if (! $notify_linkcolour)
+ $notify_linkcolour = "#fff";
+ if (! $notify_bghover)
+ $notify_bghover = "#000";
+ if (! $notify_topmargin)
+ $notify_topmargin = "-1px";
+ if (! $notifyseen_bgcolour)
+ $notifyseen_bgcolour = "#000";
+ if (! $notifyseen_linkcolour)
+ $notifyseen_linkcolour = "#000";
+ if (! $notifyseen_bghover)
+ $notifyseen_bghover = "#000";
+ if (! $notifyseen_linkhover)
+ $notifyseen_linkhover = "#fff";
+ if (! $input_bgsubmit)
+ $input_bgsubmit = "#000";
+ if (! $input_linksubmit)
+ $input_linksubmit = "#fff";
+ if (! $input_border)
+ $input_border = "#fff";
+ if (! $input_colourhover)
+ $input_colourhover = "#fff";
+ if (! $input_decohover)
+ $input_decohover = "underline";
+ if (! $acl_bgcolour)
+ $acl_bgcolour = "#000";
+ if (! $acl_bordercolour)
+ $acl_bordercolour = "#000";
+ if (! $aclbutton_linkcolour)
+ $aclbutton_linkcolour = "color: #fff;";
+ if (! $abookself_bgcolour)
+ $abookself_bgcolour = "#000";
+ if(! $infomess_bgcolour)
+ $infomess_bgcolour = "#000";
+ if(! $alert_txtcolour)
+ $alert_txtcolour = "#fff";
+ if(! $alert_bgcolour)
+ $alert_bgcolour = "#000";
+ if(! $alert_bordercol)
+ $alert_bordercol = "#fff";
+ if(! $alert_gradientcol)
+ $alert_gradientcol = "#000";
+ if(! $advperm_bgcolour)
+ $advperm_bgcolour = "#000";
+ if(! $advperm_bordercol)
+ $advperm_bordercol = "#fff";
+ if(! $advperm_gradientcol)
+ $advperm_gradientcol = "#000";
+ if(! $cal_bgcolour)
+ $cal_bgcolour = "#000";
+ if(! $chat_txtbgcol)
+ $chat_txtbgcol = "#000";
+ if(! $fancybox_bgcolour)
+ $fancybox_bgcolour = "#000";
+ if (!$admintable_hoverbgcol)
+ $admintable_hoverbgcol="#000";
+ if (!$dirpopup_txtcol)
+ $dirpopup_txtcol="#000";
+ if (!$dirpopup_linkcol)
+ $dirpopup_linkcol="#000";
+ if (!$abook_changebg)
+ $abook_changebg="#000";
diff --git a/view/theme/redbasic/tpl/theme_settings.tpl b/view/theme/redbasic/tpl/theme_settings.tpl
index 70b42b6cd..adf2e632d 100644
--- a/view/theme/redbasic/tpl/theme_settings.tpl
+++ b/view/theme/redbasic/tpl/theme_settings.tpl
@@ -34,7 +34,7 @@
{{include file="field_input.tpl" field=$nav_min_opacity}}
{{include file="field_input.tpl" field=$top_photo}}
{{include file="field_input.tpl" field=$reply_photo}}
-{{include file="field_checkbox.tpl" field=$sloppy_photos}}
+{{*include file="field_checkbox.tpl" field=$sloppy_photos*}}
<script>
$(function(){
$('#id_redbasic_nav_bg,#id_redbasic_nav_gradient_top,#id_redbasic_nav_gradient_bottom,#id_redbasic_nav_active_gradient_top,#id_redbasic_nav_active_gradient_bottom').colorpicker();
diff --git a/view/tpl/abook_edit.tpl b/view/tpl/abook_edit.tpl
index 9b12b5f29..bb20312fa 100755
--- a/view/tpl/abook_edit.tpl
+++ b/view/tpl/abook_edit.tpl
@@ -1,4 +1,4 @@
-<div class="generic-content-wrapper">
+<div class="generic-content-wrapper-styled">
<h2>{{$header}}</h2>
<h3>{{$addr}}</h3>
@@ -7,14 +7,27 @@
<div id="connection-flag-tabs">
{{$tabs}}
</div>
-{{/if}}
-
-{{if $self}}
-<div id="autoperm-desc" class="descriptive-paragraph">{{$autolbl}}</div>
+<div id="connection-edit-buttons">
+{{foreach $buttons as $b }}
+<button class="btn btn-sm btn-default" title="{{$b.title}}" onclick="window.location.href='{{$b.url}}'; return false;">{{$b.label}}</button>
+{{/foreach}}
{{/if}}
<div id="contact-edit-wrapper">
+<form id="abook-edit-form" action="connedit/{{$contact_id}}" method="post" >
+
+<div class="abook-permschange" style="display: none;">
+<div class="abook-perms-steps"><i class="icon-check"></i><br />{{$perms_step1}}</div>
+<div class="abook-perms-steps"><i class="icon-check-empty"></i><br />{{$perms_step2}}</div>
+<div class="abook-perms-steps"><i class="icon-check-empty"></i><br />{{$perms_step3}}</div>
+</div>
+
+<div class="abook-permssave" style="display: none;">
+<input class="contact-edit-submit" type="submit" name="done" value="{{$submit}}" />
+</div>
+
+
{{if $last_update}}
{{$lastupdtext}} {{$last_update}}
@@ -30,11 +43,19 @@
{{/if}}
-<form id="abook-edit-form" action="connedit/{{$contact_id}}" method="post" >
+
+{{if $self}}
+<div class="abook-autotext">
+<div id="autoperm-desc" class="descriptive-paragraph">{{$autolbl}}</div>
+{{include file="field_checkbox.tpl" field=$autoperms}}
+</div>
+{{/if}}
+
+
<input type="hidden" name="contact_id" value="{{$contact_id}}">
<input id="contact-closeness-mirror" type="hidden" name="closeness" value="{{$close}}" />
-<div class="abook-permschange" style="display: none;"></div>
+
{{if $is_pending}}
<div class="abook-pending-contact">
@@ -53,36 +74,6 @@
<h3>{{$permlbl}}</h3>
<div id="perm-desc" class="descriptive-text">{{$permnote}}</div>
-
-
-{{* {{if $noperms}}
-<div id="noperm-msg" class="warning-text">{{$noperms}}</div>
-<div id="noperm-text" class="descriptive-text">{{$noperm_desc}}</div>
-{{/if}}
-*}}
-
-
-
-<br />
-<h3>{{$quick}}</h3>
-<ul>
-{{if $self}}
-<li><span class="fakelink" onclick="connectClear();">{{$clear}}</span></li>
-<li><span class="fakelink" onclick="connectForum();">{{$forum}}</span></li>
-<li><span class="fakelink" onclick="connectSoapBox();">{{$soapbox}}</span></li>
-{{/if}}
-<li><span class="fakelink" onclick="connectFullShare();">{{$full}}</span></li>
-<li><span class="fakelink" onclick="connectCautiousShare();">{{$cautious}}</span></li>
-<li><span class="fakelink" onclick="connectFollowOnly();">{{$follow}}</span></li>
-</ul>
-
-<input class="contact-edit-submit" type="submit" name="done" value="{{$submit}}" />
-
-
-<div id="abook-advanced" class="fakelink" onclick="openClose('abook-advanced-panel');">{{$advanced}}</div>
-
-<div id="abook-advanced-panel" style="display: block;">
-
<table>
<tr><td></td><td class="abook-them">{{$them}}</td><td colspan="2" class="abook-me">{{$me}}</td><td></td></tr>
<tr><td colspan="5"><hr /></td></tr>
diff --git a/view/tpl/achievements.tpl b/view/tpl/achievements.tpl
new file mode 100644
index 000000000..2b80b9e80
--- /dev/null
+++ b/view/tpl/achievements.tpl
@@ -0,0 +1,9 @@
+<div class="generic-content-wrapper">
+<p>{{$newmembertext}}</p>
+
+{{if $profilebadge}}<div id="profile-badge" class="badges"><img src="images/smiley-thumbsup.gif"></div>{{/if}}
+{{if $contactbadge}}<div id="contact-badge" class="badges"><img src="images/smiley-thumbsup.gif"></div>{{/if}}
+{{if $keywordsbadge}}<div id="keywords-badge" class="badges"><img src="images/smiley-thumbsup.gif"></div>{{/if}}
+{{if $channelsbadge}}<div id="channels-badge" class="badges"><img src="images/smiley-thumbsup.gif"></div>{{/if}}
+
+</div>
diff --git a/view/tpl/acl_selector.tpl b/view/tpl/acl_selector.tpl
index 4babf5669..e8b779622 100755
--- a/view/tpl/acl_selector.tpl
+++ b/view/tpl/acl_selector.tpl
@@ -31,14 +31,14 @@
</div><!-- /.modal -->
<script>
-$(document).ready(function() {
- setTimeout( function () {
+//$(document).ready(function() {
+// setTimeout( function () {
if(typeof acl=="undefined"){
acl = new ACL(
baseurl+"/acl",
[ {{$allowcid}},{{$allowgid}},{{$denycid}},{{$denygid}} ]
);
}
- }, 5000 );
-});
+// }, 5000 );
+//});
</script>
diff --git a/view/tpl/admin_aside.tpl b/view/tpl/admin_aside.tpl
index cb3827bf2..013b72d50 100755
--- a/view/tpl/admin_aside.tpl
+++ b/view/tpl/admin_aside.tpl
@@ -10,35 +10,40 @@
});
});
</script>
-<h4><a href="{{$admurl}}">{{$admtxt}}</a></h4>
-<ul class='admin linklist'>
- <li class='admin link button {{$admin.site.2}}'><a href='{{$admin.site.0}}'>{{$admin.site.1}}</a></li>
- <li class='admin link button {{$admin.users.2}}'><a href='{{$admin.users.0}}'>{{$admin.users.1}}</a><span id='pending-update' title='{{$h_pending}}'></span></li>
- <li class='admin link button {{$admin.channels.2}}'><a href='{{$admin.channels.0}}'>{{$admin.channels.1}}</a></li>
- <li class='admin link button {{$admin.plugins.2}}'><a href='{{$admin.plugins.0}}'>{{$admin.plugins.1}}</a></li>
- <li class='admin link button {{$admin.themes.2}}'><a href='{{$admin.themes.0}}'>{{$admin.themes.1}}</a></li>
- <li class='admin link button {{$admin.hubloc.2}}'><a href='{{$admin.hubloc.0}}'>{{$admin.hubloc.1}}</a></li>
- <li class='admin link button {{$admin.dbsync.2}}'><a href='{{$admin.dbsync.0}}'>{{$admin.dbsync.1}}</a></li>
+<div class="widget">
+<h3>{{$admtxt}}</h3>
+<ul class="nav nav-pills nav-stacked">
+ <li><a href='{{$admin.site.0}}'>{{$admin.site.1}}</a></li>
+ <li><a href='{{$admin.users.0}}'>{{$admin.users.1}}<span id='pending-update' title='{{$h_pending}}'></span></a></li>
+ <li><a href='{{$admin.channels.0}}'>{{$admin.channels.1}}</a></li>
+ <li><a href='{{$admin.plugins.0}}'>{{$admin.plugins.1}}</a></li>
+ <li><a href='{{$admin.themes.0}}'>{{$admin.themes.1}}</a></li>
+ <li><a href='{{$admin.dbsync.0}}'>{{$admin.dbsync.1}}</a></li>
</ul>
+</div>
{{if $admin.update}}
-<ul class='admin linklist'>
- <li class='admin link button {{$admin.update.2}}'><a href='{{$admin.update.0}}'>{{$admin.update.1}}</a></li>
- <li class='admin link button {{$admin.update.2}}'><a href='https://kakste.com/profile/inthegit'>Important Changes</a></li>
+<ul class="nav nav-pills nav-stacked">
+ <li><a href='{{$admin.update.0}}'>{{$admin.update.1}}</a></li>
+ <li><a href='https://kakste.com/profile/inthegit'>Important Changes</a></li>
</ul>
{{/if}}
-{{if $admin.plugins_admin}}<h4>{{$plugadmtxt}}</h4>{{/if}}
-<ul class='admin linklist'>
+{{if $admin.plugins_admin}}
+<div class="widget">
+<h3>{{$plugadmtxt}}</h3>
+<ul class="nav nav-pills nav-stacked">
{{foreach $admin.plugins_admin as $l}}
- <li class='admin link button {{$l.2}}'><a href='{{$l.0}}'>{{$l.1}}</a></li>
+ <li><a href='{{$l.0}}'>{{$l.1}}</a></li>
{{/foreach}}
</ul>
+</div>
+{{/if}}
-
-<h4>{{$logtxt}}</h4>
-<ul class='admin linklist'>
- <li class='admin link button {{$admin.logs.2}}'><a href='{{$admin.logs.0}}'>{{$admin.logs.1}}</a></li>
+<div class="widget">
+<h3>{{$logtxt}}</h3>
+<ul class="nav nav-pills nav-stacked">
+ <li><a href='{{$admin.logs.0}}'>{{$admin.logs.1}}</a></li>
</ul>
-
+</div>
diff --git a/view/tpl/admin_channels.tpl b/view/tpl/admin_channels.tpl
index b26e67687..817eb939a 100755
--- a/view/tpl/admin_channels.tpl
+++ b/view/tpl/admin_channels.tpl
@@ -10,7 +10,7 @@
return false;
}
</script>
-<div class = "generic-content-wrapper" id='adminpage'>
+<div class = "generic-content-wrapper-styled" id='adminpage'>
<h1>{{$title}} - {{$page}}</h1>
<form action="{{$baseurl}}/admin/channels" method="post">
diff --git a/view/tpl/admin_hubloc.tpl b/view/tpl/admin_hubloc.tpl
index 06a8cdf6a..1bd1f0122 100755
--- a/view/tpl/admin_hubloc.tpl
+++ b/view/tpl/admin_hubloc.tpl
@@ -1,4 +1,4 @@
-<div class="generic-content-wrapper" id='adminpage'>
+<div class="generic-content-wrapper-styled" id='adminpage'>
<h1>{{$title}} - {{$page}}</h1>
<table id='server'>
diff --git a/view/tpl/admin_logs.tpl b/view/tpl/admin_logs.tpl
index 3d2adc660..6d2d7834c 100755
--- a/view/tpl/admin_logs.tpl
+++ b/view/tpl/admin_logs.tpl
@@ -1,4 +1,4 @@
-<div class="generic-content-wrapper" id='adminpage'>
+<div class="generic-content-wrapper-styled" id='adminpage'>
<h1>{{$title}} - {{$page}}</h1>
<form action="{{$baseurl}}/admin/logs" method="post">
diff --git a/view/tpl/admin_plugins.tpl b/view/tpl/admin_plugins.tpl
index 40821c534..0f76cc4fe 100755
--- a/view/tpl/admin_plugins.tpl
+++ b/view/tpl/admin_plugins.tpl
@@ -1,4 +1,4 @@
-<div class="generic-content-wrapper" id='adminpage'>
+<div class="generic-content-wrapper-styled" id='adminpage'>
<h1>{{$title}} - {{$page}}</h1>
<ul id='pluginslist'>
diff --git a/view/tpl/admin_plugins_details.tpl b/view/tpl/admin_plugins_details.tpl
index 1c1a59879..bdcc82c08 100755
--- a/view/tpl/admin_plugins_details.tpl
+++ b/view/tpl/admin_plugins_details.tpl
@@ -1,4 +1,4 @@
-<div class = "generic-content-wrapper" id='adminpage'>
+<div class = "generic-content-wrapper-styled" id='adminpage'>
<h1>{{$title}} - {{$page}}</h1>
<p><i class='toggleplugin {{if $status==on}}icon-check{{else}}icon-check-empty{{/if}} admin-icons'></i> {{$info.name}} - {{$info.version}} : <a href="{{$baseurl}}/admin/{{$function}}/{{$plugin}}/?a=t&amp;t={{$form_security_token}}">{{$action}}</a></p>
diff --git a/view/tpl/admin_site.tpl b/view/tpl/admin_site.tpl
index c6c15cec4..caeddeecb 100755
--- a/view/tpl/admin_site.tpl
+++ b/view/tpl/admin_site.tpl
@@ -1,15 +1,15 @@
<script>
$(function(){
- $("#cnftheme").fancybox({
+ $("#cnftheme").colorbox({
width: 800,
- autoDimensions: false,
- onStart: function(){
+ onLoad: function(){
var theme = $("#id_theme :selected").val();
$("#cnftheme").attr('href',"{{$baseurl}}/admin/themes/"+theme);
},
onComplete: function(){
- $("div#fancybox-content form").submit(function(e){
+ $(this).colorbox.resize();
+ $("#colorbox form").submit(function(e){
var url = $(this).attr('action');
// can't get .serialize() to work...
var data={};
@@ -34,7 +34,7 @@
});
});
</script>
-<div id="adminpage" class="generic-content-wrapper">
+<div id="adminpage" class="generic-content-wrapper-styled">
<h1>{{$title}} - {{$page}}</h1>
<form action="{{$baseurl}}/admin/site" method="post">
@@ -46,8 +46,6 @@
{{include file="field_select.tpl" field=$language}}
{{include file="field_select.tpl" field=$theme}}
{{include file="field_select.tpl" field=$theme_mobile}}
- {{include file="field_select.tpl" field=$theme_accessibility}}
- {{include file="field_input.tpl" field=$site_channel}}
{{include file="field_checkbox.tpl" field=$no_login_on_homepage}}
@@ -65,6 +63,9 @@
<h3>{{$corporate}}</h3>
{{include file="field_checkbox.tpl" field=$block_public}}
+ {{include file="field_checkbox.tpl" field=$verify_email}}
+ {{include file="field_checkbox.tpl" field=$diaspora_enabled}}
+ {{include file="field_checkbox.tpl" field=$feed_contacts}}
{{include file="field_checkbox.tpl" field=$force_publish}}
{{include file="field_checkbox.tpl" field=$disable_discover_tab}}
diff --git a/view/tpl/admin_summary.tpl b/view/tpl/admin_summary.tpl
index 24cdd57cc..7f752a773 100755
--- a/view/tpl/admin_summary.tpl
+++ b/view/tpl/admin_summary.tpl
@@ -1,4 +1,4 @@
-<div class="generic-content-wrapper" id='adminpage'>
+<div class="generic-content-wrapper-styled" id='adminpage'>
<h1>{{$title}} - {{$page}}</h1>
<dl>
diff --git a/view/tpl/admin_users.tpl b/view/tpl/admin_users.tpl
index 65fffd17c..5bf64b4df 100755
--- a/view/tpl/admin_users.tpl
+++ b/view/tpl/admin_users.tpl
@@ -10,7 +10,7 @@
return false;
}
</script>
-<div class = "generic-content-wrapper" id='adminpage'>
+<div class = "generic-content-wrapper-styled" id='adminpage'>
<h1>{{$title}} - {{$page}}</h1>
<form action="{{$baseurl}}/admin/users" method="post">
diff --git a/view/tpl/album_edit.tpl b/view/tpl/album_edit.tpl
index 61653c47c..f5495f149 100755
--- a/view/tpl/album_edit.tpl
+++ b/view/tpl/album_edit.tpl
@@ -1,15 +1,22 @@
-<div id="photo-album-edit-wrapper">
-<form name="photo-album-edit-form" id="photo-album-edit-form" action="photos/{{$nickname}}/album/{{$hexalbum}}" method="post" >
-
-
-<label id="photo-album-edit-name-label" for="photo-album-edit-name" >{{$nametext}}</label>
-<input type="text" size="64" name="albumname" value="{{$album}}" >
-
-<div id="photo-album-edit-name-end"></div>
+<div id="photo-album-edit-wrapper" class="section-content-tools-wrapper">
+ <form name="photo-album-edit-form" id="photo-album-edit-form" action="photos/{{$nickname}}/album/{{$hexalbum}}" method="post" >
+ <div class="form-group">
+ <label id="photo-album-edit-name-label" for="photo-album-edit-name">{{$nametext}}</label>
+ <input type="text" name="albumname" placeholder="{{$name_placeholder}}" value="{{$album}}" class="form-control" list="dl-album-edit" />
+ <datalist id="dl-album-edit">
+ {{foreach $albums as $al}}
+ {{if $al.text}}
+ <option value="{{$al.text}}">
+ {{/if}}
+ {{/foreach}}
+ </datalist>
+ </div>
+ <div class="form-group">
+ <button id="photo-album-edit-submit" type="submit" name="submit" class="btn btn-primary btn-sm pull-right" />{{$submit}}</button>
+ <button id="photo-album-edit-drop" type="submit" name="dropalbum" value="{{$dropsubmit}}" class="btn btn-danger btn-sm pull-left" onclick="return confirmDelete();" />{{$dropsubmit}}</button>
+ </div>
+ </form>
+ <div id="photo-album-edit-end" class="clear"></div>
+</div>
-<input id="photo-album-edit-submit" type="submit" name="submit" value="{{$submit}}" />
-<input id="photo-album-edit-drop" type="submit" name="dropalbum" value="{{$dropsubmit}}" onclick="return confirmDelete();" />
-</form>
-</div>
-<div id="photo-album-edit-end" ></div>
diff --git a/view/tpl/app.tpl b/view/tpl/app.tpl
index 4719f7f96..9f0b1746b 100644
--- a/view/tpl/app.tpl
+++ b/view/tpl/app.tpl
@@ -1,6 +1,6 @@
<div class="app-container">
<a href="{{$app.url}}" {{if $ap.target}}target="{{$ap.target}}" {{/if}}{{if $app.desc}}title="{{$app.desc}}{{if $app.price}} ({{$app.price}}){{/if}}"{{else}}title="{{$app.name}}"{{/if}}><img src="{{$app.photo}}" width="80" height="80" />
-<div class="app-name">{{$app.name}}</div>
+<div class="app-name" style="text-align:center;">{{$app.name}}</div>
</a>
{{if $app.type !== 'system'}}
{{if $purchase}}
diff --git a/view/tpl/app_select.tpl b/view/tpl/app_select.tpl
index 5cf3f40d6..527d01eae 100644
--- a/view/tpl/app_select.tpl
+++ b/view/tpl/app_select.tpl
@@ -1,7 +1,7 @@
{{if $authed}}
<div class="widget">
<h3>{{$title}}</h3>
-<ul>
+<ul class="nav nav-pills nav-stacked">
<li><a href="appman">{{$new}}</a></li>
<li><a href="apps/edit">{{$edit}}</a></li>
</ul>
diff --git a/view/tpl/apps.tpl b/view/tpl/apps.tpl
deleted file mode 100755
index d8e538cb7..000000000
--- a/view/tpl/apps.tpl
+++ /dev/null
@@ -1,11 +0,0 @@
-<h3>{{$title}}</h3>
-
-{{foreach $apps as $ap}}
-<div class="app-container">
-<a href="{{$ap.url}}" {{if $ap.target}}target="{{$ap.target}}" {{/if}}{{if $ap.hover}}title="{{$ap.hover}}"{{/if}}><img src="{{$ap.photo}}" width="80" height="80" />
-<div class="app-name">{{$ap.name}}</div>
-</a>
-</div>
-{{/foreach}}
-<div class="clear"></div>
-
diff --git a/view/tpl/atom_feed.tpl b/view/tpl/atom_feed.tpl
index 2c8024d47..9e5b5a5be 100755
--- a/view/tpl/atom_feed.tpl
+++ b/view/tpl/atom_feed.tpl
@@ -15,6 +15,7 @@
<title>{{$feed_title}}</title>
<generator uri="http://getzot.com" version="{{$version}}">{{$red}}</generator>
<link rel="license" href="http://creativecommons.org/licenses/by/3.0/" />
+ <link rel="alternate" type="text/html" href="{{$profile_page}}" />
{{if $hub}}
{{$hub}}
{{/if}}
diff --git a/view/tpl/atom_feed_dfrn.tpl b/view/tpl/atom_feed_dfrn.tpl
deleted file mode 100755
index 307001fbe..000000000
--- a/view/tpl/atom_feed_dfrn.tpl
+++ /dev/null
@@ -1,29 +0,0 @@
-<?xml version="1.0" encoding="utf-8" ?>
-<feed xmlns="http://www.w3.org/2005/Atom"
- xmlns:thr="http://purl.org/syndication/thread/1.0"
- xmlns:at="http://purl.org/atompub/tombstones/1.0"
- xmlns:media="http://purl.org/syndication/atommedia"
- xmlns:dfrn="http://purl.org/macgirvin/dfrn/1.0"
- xmlns:as="http://activitystrea.ms/spec/1.0/"
- xmlns:georss="http://www.georss.org/georss"
- xmlns:poco="http://portablecontacts.net/spec/1.0"
- xmlns:ostatus="http://ostatus.org/schema/1.0"
- xmlns:statusnet="http://status.net/schema/api/1/" >
-
- <id>{{$feed_id}}</id>
- <title>{{$feed_title}}</title>
- <generator uri="http://friendica.com" version="{{$version}}">Friendica</generator>
- <link rel="license" href="http://creativecommons.org/licenses/by/3.0/" />
- {{$hub}}
- {{$salmon}}
- {{$community}}
-
- <updated>{{$feed_updated}}</updated>
-
- <author>
- <name dfrn:updated="{{$namdate}}" >{{$name}}</name>
- <uri dfrn:updated="{{$uridate}}" >{{$profile_page}}</uri>
- <link rel="photo" type="image/jpeg" dfrn:updated="{{$picdate}}" media:width="175" media:height="175" href="{{$photo}}" />
- <link rel="avatar" type="image/jpeg" dfrn:updated="{{$picdate}}" media:width="175" media:height="175" href="{{$photo}}" />
- {{$birthday}}
- </author>
diff --git a/view/tpl/attach_edit.tpl b/view/tpl/attach_edit.tpl
index e91b4c0c6..0147d35ba 100644
--- a/view/tpl/attach_edit.tpl
+++ b/view/tpl/attach_edit.tpl
@@ -1,36 +1,42 @@
-<div id="attach-edit-backlink">< <a href="{{$parentpath}}">{{$backlink}}</a></div>
-
-<h1>{{$header}}</h1>
-
<form action="filestorage/{{$channelnick}}/{{$file.id}}/edit" method="post" >
-
-<div id="attach-edit-perms" >
-<button class="btn btn-default btn-sm" data-toggle="modal" data-target="#aclModal" title="{{$permset}}" onclick="return false;">
- <i id="jot-perms-icon" class="icon-{{$lockstate}} jot-icons"></i>
-</button>
-{{$aclselect}} {{$file.filename}}
-</div>
-
-<input type="hidden" name="channelnick" value="{{$channelnick}}" />
-<input type="hidden" name="filehash" value="{{$file.hash}}" />
-<input type="hidden" name="uid" value="{{$uid}}" />
-<input type="hidden" name="fileid" value="{{$file.id}}" />
-
-{{if $isadir}}
-<div id="attach-edit-recurse" >
- <label id="attach-edit-recurse-text" for="attach-recurse-input" >{{$recurse}}</label>
- <input id="attach-recurse-input" type="checkbox" name="recurse" value="1" />
-</div>
-{{else}}
-<div class="cut-paste-desc">{{$cpdesc}}</div>
-<input type="text" id="cutpasteinput" name="cutpastelink" value="[attachment]{{$file.hash}},{{$file.revision}}[/attachment]" onclick="this.select();" /><br />
-{{/if}}
-
-<div class="cut-paste-desc">{{$cpldesc}}</div>
-<input type="text" id="linkpasteinput" name="cutpasteextlink" value="{{$cloudpath}}" onclick="this.select();"/><br />
-
-<div class="clear"></div>
-<input id="attach-edit-submit" type="submit" name="submit" value="{{$submit}}" />
+ <input type="hidden" name="channelnick" value="{{$channelnick}}" />
+ <input type="hidden" name="filehash" value="{{$file.hash}}" />
+ <input type="hidden" name="uid" value="{{$uid}}" />
+ <input type="hidden" name="fileid" value="{{$file.id}}" />
+
+ <div id="attach-edit-tools-share" class="btn-group form-group">
+ {{if !$isadir}}
+ <a href="/rpost?body=[attachment]{{$file.hash}},{{$file.revision}}[/attachment]" id="attach-btn" class="btn btn-default btn-xs" title="{{$attach_btn_title}}">
+ <i class="icon-paperclip jot-icons"></i>
+ </a>
+ {{/if}}
+ <button id="link-btn" class="btn btn-default btn-xs" type="button" onclick="openClose('link-code');" title="{{$link_btn_title}}">
+ <i class="icon-share jot-icons"></i>
+ </button>
+ </div>
+ <div id="attach-edit-tools-perms" class="form-group pull-right{{if $isadir}} btn-group{{/if}}">
+ {{if $isadir}}
+ <div id="attach-edit-perms-recurse" class="btn-group" data-toggle="buttons">
+ <label class="btn btn-default btn-xs" title="{{$recurse}}">
+ <input type="checkbox" autocomplete="off" name="recurse" value="1"><i class="icon-level-down jot-icons"></i>
+ </label>
+ </div>
+ {{/if}}
+ <div id="attach-edit-perms" class="btn-group">
+ <button id="dbtn-acl" class="btn btn-default btn-xs" data-toggle="modal" data-target="#aclModal" title="{{$permset}}" onclick="return false;">
+ <i id="jot-perms-icon" class="icon-{{$lockstate}} jot-icons"></i>
+ </button>
+ <button id="dbtn-submit" class="btn btn-primary btn-xs" type="submit" name="submit">
+ {{$submit}}
+ </button>
+ </div>
+ </div>
+
+ {{$aclselect}}
+
+ <div id="link-code" class="form-group">
+ <label for="">{{$cpldesc}}</label>
+ <input type="text" class="form-control" id="linkpasteinput" name="cutpasteextlink" value="{{$cloudpath}}" onclick="this.select();"/>
+ </div>
</form>
-
diff --git a/view/tpl/blocklist.tpl b/view/tpl/blocklist.tpl
index adf61f788..4068375cb 100644
--- a/view/tpl/blocklist.tpl
+++ b/view/tpl/blocklist.tpl
@@ -4,9 +4,9 @@
{{foreach $pages as $key => $items}}
{{foreach $items as $item}}
<div class="page-list-item">
- {{if $edit}}<a href="{{$baseurl}}/{{$item.url}}" title="{{$edit}}"><i class="icon-pencil design-icons design-edit-icon"></i></a> {{/if}}
- {{if $view}}<a href="block/{{$channel}}/{{$item.title}}" title="{{$view}}"><i class="icon-external-link design-icons design-view-icon"></i></a> {{/if}}
- {{if $preview}}<a href="block/{{$channel}}/{{$item.title}}?iframe=true&width=80%&height=80%" title="{{$preview}}" class="webpage-preview" ><i class="icon-eye-open design-icons design-preview-icon"></i></a> {{/if}}
+ {{if $edit}}<a href="{{$baseurl}}/{{$item.url}}" title="{{$edit}}"><i class="icon-pencil design-icons design-edit-icon btn btn-default"></i></a> {{/if}}
+ {{if $view}}<a href="block/{{$channel}}/{{$item.title}}" title="{{$view}}"><i class="icon-external-link design-icons design-view-icon btn btn-default"></i></a> {{/if}}
+ {{*if $preview}}<a href="block/{{$channel}}/{{$item.title}}?iframe=true&width=80%&height=80%" title="{{$preview}}" class="webpage-preview" ><i class="icon-eye-open design-icons design-preview-icon btn-btn-default"></i></a> {{/if*}}
{{$item.title}}
</div>
{{/foreach}}
diff --git a/view/tpl/build_query.tpl b/view/tpl/build_query.tpl
index 204b5114a..8110b70b1 100755
--- a/view/tpl/build_query.tpl
+++ b/view/tpl/build_query.tpl
@@ -22,6 +22,7 @@
var bParam_order = "{{$order}}";
var bParam_file = "{{$file}}";
var bParam_cats = "{{$cats}}";
+ var bParam_tags = "{{$tags}}";
var bParam_dend = "{{$dend}}";
var bParam_dbegin = "{{$dbegin}}";
var bParam_mid = "{{$mid}}";
@@ -46,6 +47,7 @@
if(bParam_order != "") bCmd = bCmd + "&order=" + bParam_order;
if(bParam_file != "") bCmd = bCmd + "&file=" + bParam_file;
if(bParam_cats != "") bCmd = bCmd + "&cat=" + bParam_cats;
+ if(bParam_tags != "") bCmd = bCmd + "&tag=" + bParam_tags;
if(bParam_dend != "") bCmd = bCmd + "&dend=" + bParam_dend;
if(bParam_dbegin != "") bCmd = bCmd + "&dbegin=" + bParam_dbegin;
if(bParam_mid != "") bCmd = bCmd + "&mid=" + bParam_mid;
diff --git a/view/tpl/categories_widget.tpl b/view/tpl/categories_widget.tpl
index 2c0b3bcc2..ea6d28dfc 100755
--- a/view/tpl/categories_widget.tpl
+++ b/view/tpl/categories_widget.tpl
@@ -2,10 +2,10 @@
<h3>{{$title}}</h3>
<div id="categories-sidebar-desc">{{$desc}}</div>
- <ul class="categories-ul">
- <li class="tool"><a href="{{$base}}" class="categories-link categories-all{{if $sel_all}} categories-selected{{/if}}">{{$all}}</a></li>
+ <ul class="nav nav-pills nav-stacked">
+ <li><a href="{{$base}}"{{if $sel_all}} class="categories-selected"{{/if}}>{{$all}}</a></li>
{{foreach $terms as $term}}
- <li class="tool"><a href="{{$base}}?f=&cat={{$term.name}}" class="categories-link{{if $term.selected}} categories-selected{{/if}}">{{$term.name}}</a></li>
+ <li><a href="{{$base}}?f=&cat={{$term.name}}"{{if $term.selected}} class="categories-selected"{{/if}}>{{$term.name}}</a></li>
{{/foreach}}
</ul>
diff --git a/view/tpl/channel.tpl b/view/tpl/channel.tpl
index 1ed2fbd2c..af80e7b4d 100755
--- a/view/tpl/channel.tpl
+++ b/view/tpl/channel.tpl
@@ -1,4 +1,4 @@
-<div class="channel-selection">
+<div class='channel-selection {{if $selected == $channel.channel_id}}selected-channel{{/if}}'>
{{if $channel.default_links}}
{{if $channel.default}}
<div class="channel-selection-default default"><i class="icon-check"></i> {{$msg_default}}</div>
@@ -7,6 +7,6 @@
{{/if}}
{{/if}}
<a href="{{$channel.link}}" class="channel-selection-photo-link" title="{{$channel.channel_name}}"><img class="channel-photo" src="{{$channel.xchan_photo_m}}" alt="{{$channel.channel_name}}" /></a>
+<div class="channels-notifications-wrapper"><a href='manage/{{$channel.channel_id}}/message' style="{{if $channel.mail != 0}}color:#c60032;{{/if}}" title='{{$channel.mail|string_format:$mail_format}}'><i class="icon-envelope"></i> {{$channel.mail}}</a>&nbsp;<a href='manage/{{$channel.channel_id}}/connections/ifpending' style="{{if $channel.intros != 0}}color:#c60032;{{/if}}" title='{{$channel.intros|string_format:$intros_format}}'><i class="icon-user"></i> {{$channel.intros}}</a></div>
<a href="{{$channel.link}}" class="channel-selection-name-link" title="{{$channel.channel_name}}"><div class="channel-name">{{$channel.channel_name}}</div></a>
</div>
-<div class="channel-selection-end"></div>
diff --git a/view/tpl/channel_import.tpl b/view/tpl/channel_import.tpl
index f7635ea52..f76594934 100755
--- a/view/tpl/channel_import.tpl
+++ b/view/tpl/channel_import.tpl
@@ -22,6 +22,11 @@
<input type="password" name="password" id="import-old-pass" class="import-input" value="{{$pass}}" />
<div id="import-old-pass-end" class="import-field-end"></div>
+ <input type="checkbox" name="import_posts" id="import-posts" value="1" />
+ <label for="import-posts" id="label-import-posts">{{$label_import_posts}}</label>
+ <div id="import-posts-end" class="import-field-end"></div>
+
+
<div id="import-common-desc" class="descriptive-paragraph">{{$common}}</div>
<input type="checkbox" name="make_primary" id="import-make-primary" value="1" />
diff --git a/view/tpl/channels.tpl b/view/tpl/channels.tpl
index 2c31cb498..26d0e14d2 100755
--- a/view/tpl/channels.tpl
+++ b/view/tpl/channels.tpl
@@ -1,6 +1,6 @@
+<div class="generic-content-wrapper-styled">
<h3>{{$header}}</h3>
-
{{if $links}}
{{foreach $links as $l}}
<a class="channels-links" href="{{$l.0}}" title="{{$l.1}}">{{$l.2}}</a>
@@ -13,14 +13,6 @@
{{$channel_usage_message}}
</div>
{{/if}}
-{{if $selected}}
-<div id="selected-channel">
-<div id="channels-selected">{{$msg_selected}}</div>
-{{include file="channel.tpl" channel=$selected}}
-</div>
-<div class="channels-end selected"></div>
-{{/if}}
-<br />
<div id="channels-desc" class="descriptive-text">{{$desc}}</div>
<div id="all-channels">
@@ -30,3 +22,5 @@
</div>
<div class="channels-end all"></div>
+
+</div>
diff --git a/view/tpl/chatroom_new.tpl b/view/tpl/chatroom_new.tpl
index 287f95cc0..a559dba54 100644
--- a/view/tpl/chatroom_new.tpl
+++ b/view/tpl/chatroom_new.tpl
@@ -2,12 +2,12 @@
<form action="chat" method="post" >
{{include file="field_input.tpl" field=$name}}
-<button class="btn btn-default btn-xs" data-toggle="modal" data-target="#aclModal" onclick="return false;">{{$permissions}}</button>
+<button id="dbtn-acl" class="btn btn-default btn-xs" data-toggle="modal" data-target="#aclModal" onclick="return false;" >{{$permissions}}</button>
{{$acl}}
<div class="clear"></div>
<br />
<br />
-<input type="submit" name="submit" value="{{$submit}}" />
+<input id="dbtn-submit" type="submit" name="submit" value="{{$submit}}" />
</form>
diff --git a/view/tpl/cloud_actionspanel.tpl b/view/tpl/cloud_actionspanel.tpl
index 69931b292..da708a98c 100644
--- a/view/tpl/cloud_actionspanel.tpl
+++ b/view/tpl/cloud_actionspanel.tpl
@@ -1,23 +1,19 @@
-<table>
- <tr>
- <td><strong>{{$folder_header}}</strong>&nbsp;&nbsp;&nbsp;</td>
- <td>
- <form method="post" action="">
- <input type="hidden" name="sabreAction" value="mkcol">
- <input type="text" name="name">
- <input type="submit" value="{{$folder_submit}}">
- </form>
- </td>
- </tr>
- <tr>
- <td><strong>{{$upload_header}}</strong>&nbsp;&nbsp;&nbsp;</td>
- <td>
- <form method="post" action="" enctype="multipart/form-data">
- <input type="hidden" name="sabreAction" value="put">
- <input type="file" name="file" style="display: inline;">
- <input type="submit" value="{{$upload_submit}}">
- <!-- Name (optional): <input type="text" name="name"> we should rather provide a rename action in edit form-->
- </form>
- </td>
- </tr>
-</table> \ No newline at end of file
+<div id="files-mkdir-tools" class="section-content-tools-wrapper form-group">
+ <label for="files-mkdir">{{$folder_header}}</label>
+ <form method="post" action="">
+ <input type="hidden" name="sabreAction" value="mkcol">
+ <input id="files-mkdir" type="text" name="name" class="form-control form-group">
+ <button class="btn btn-primary btn-sm pull-right" type="submit" value="{{$folder_submit}}">{{$folder_submit}}</button>
+ </form>
+ <div class="clear"></div>
+</div>
+<div id="files-upload-tools" class="section-content-tools-wrapper form-group">
+ <label for="files-upload">{{$upload_header}}</label>
+ <form method="post" action="" enctype="multipart/form-data">
+ <input type="hidden" name="sabreAction" value="put">
+ <input class="form-group" id="files-upload" type="file" name="file">
+ <button class="btn btn-primary btn-sm pull-right" type="submit" value="{{$upload_submit}}">{{$upload_submit}}</button>
+ <!-- Name (optional): <input type="text" name="name"> we should rather provide a rename action in edit form-->
+ </form>
+ <div class="clear"></div>
+</div>
diff --git a/view/tpl/cloud_directory.tpl b/view/tpl/cloud_directory.tpl
index 5d22e4a16..77d861224 100644
--- a/view/tpl/cloud_directory.tpl
+++ b/view/tpl/cloud_directory.tpl
@@ -1,43 +1,43 @@
-<h1>{{$header}}</h1>
-<table id="cloud-index">
- <tr>
- <th></th>
- <th>{{$name}}&nbsp;&nbsp;&nbsp;</th>
- <th></th><th></th><th></th>
- <th>{{$type}}&nbsp;&nbsp;&nbsp;</th>
- <th>{{$size}}&nbsp;&nbsp;&nbsp;</th>
- <th>{{$lastmod}}</th>
- </tr>
- <tr><td colspan="8"><hr></td></tr>
-{{if $parentpath}}
- <tr>
- <td>{{$parentpath.icon}}</td>
- <td><a href="{{$parentpath.path}}" title="{{$parent}}">..</a></td>
- <td></td><td></td><th></td>
- <td>[{{$parent}}]</td>
- <td></td>
- <td></td>
- </tr>
-{{/if}}
-{{foreach $entries as $item}}
- <tr>
- <td>{{$item.icon}}</td>
- <td style="min-width: 15em"><a href="{{$item.fullPath}}">{{$item.displayName}}</a></td>
-{{if $item.is_owner}}
- <td>{{$item.attachIcon}}</td>
- <td style="position:relative;"><a href="{{$item.fileStorageUrl}}/{{$item.attachId}}/edit" title="{{$edit}}"><i class="icon-pencil btn btn-default"></i></a></td>
- <td><a href="{{$item.fileStorageUrl}}/{{$item.attachId}}/delete" title="{{$delete}}" onclick="return confirmDelete();"><i class="icon-remove btn btn-default drop-icons"></i></a></td>
-{{else}}
- <td></td><td></td><td></td>
-{{/if}}
- <td>{{$item.type}}</td>
- <td>{{$item.sizeFormatted}}</td>
- <td>{{$item.lastmodified}}</td>
- </tr>
-{{/foreach}}
- <tr><td colspan="8"><hr></td></tr>
-</table>
+<div class="generic-content-wrapper section-content-wrapper-np">
+ <table id="cloud-index">
+ <tr>
+ <th width="1%"></th>
+ <th width="92%">{{$name}}</th>
+ <th width="1%"></th><th width="1%"></th><th width="1%"></th><th width="1%"></th>
+ <th width="1%">{{*{{$type}}*}}</th>
+ <th width="1%" class="hidden-xs">{{$size}}</th>
+ <th width="1%" class="hidden-xs">{{$lastmod}}</th>
+ </tr>
+ {{if $parentpath}}
+ <tr>
+ <td><i class="icon-level-up"></i>{{*{{$parentpath.icon}}*}}</td>
+ <td><a href="{{$parentpath.path}}" title="{{$parent}}">..</a></td>
+ <td></td><td></td><td></td><td></td>
+ <td>{{*[{{$parent}}]*}}</td>
+ <td class="hidden-xs"></td>
+ <td class="hidden-xs"></td>
+ </tr>
+ {{/if}}
+ {{foreach $entries as $item}}
+ <tr id="cloud-index-{{$item.attachId}}">
+ <td><i class="{{$item.iconFromType}}" title="{{$item.type}}"></i></td>
+ <td><a href="{{$item.fullPath}}">{{$item.displayName}}</a></td>
+ {{if $item.is_owner}}
+ <td class="cloud-index-tool">{{$item.attachIcon}}</td>
+ <td id="file-edit-{{$item.attachId}}" class="cloud-index-tool"></td>
+ <td class="cloud-index-tool"><i class="fakelink icon-pencil" onclick="filestorage(event, '{{$nick}}', {{$item.attachId}});"></i></td>
+ <td class="cloud-index-tool"><a href="{{$item.fileStorageUrl}}/{{$item.attachId}}/delete" title="{{$delete}}" onclick="return confirmDelete();"><i class="icon-trash drop-icons"></i></a></td>
-{{if $quota.limit || $quota.used}}
- <p><strong>{{$total}}</strong> {{$quota.desc}}</p>
-{{/if}} \ No newline at end of file
+ {{else}}
+ <td></td><td></td><td></td><td></td>
+ {{/if}}
+ <td>{{*{{$item.type}}*}}</td>
+ <td class="hidden-xs">{{$item.sizeFormatted}}</td>
+ <td class="hidden-xs">{{$item.lastmodified}}</td>
+ </tr>
+ <tr>
+ <td id="perms-panel-{{$item.attachId}}" colspan="9"></td>
+ </tr>
+ {{/foreach}}
+ </table>
+</div>
diff --git a/view/tpl/cloud_header.tpl b/view/tpl/cloud_header.tpl
new file mode 100644
index 000000000..f5f123edb
--- /dev/null
+++ b/view/tpl/cloud_header.tpl
@@ -0,0 +1,13 @@
+<div class="section-title-wrapper">
+ {{if $actionspanel}}
+ <div class="pull-right">
+ <button id="files-create-btn"class="btn btn-xs btn-primary" title="{{if $quota.limit || $quota.used}}{{$quota.desc}}{{/if}}" onclick="openClose('files-mkdir-tools'); closeMenu('files-upload-tools');"><i class="icon-folder-close-alt"></i>&nbsp;Create</button>
+ <button id="files-upload-btn" class="btn btn-xs btn-success" title="{{if $quota.limit || $quota.used}}{{$quota.desc}}{{/if}}" onclick="openClose('files-upload-tools'); closeMenu('files-mkdir-tools');"><i class="icon-upload"></i>&nbsp;Upload</button>
+ </div>
+ {{/if}}
+ <h2>{{$header}}</h2>
+ <div class="clear"></div>
+</div>
+{{if $actionspanel}}
+ {{$actionspanel}}
+{{/if}}
diff --git a/view/tpl/comment_item.tpl b/view/tpl/comment_item.tpl
index 423d13d88..ab67bc196 100755
--- a/view/tpl/comment_item.tpl
+++ b/view/tpl/comment_item.tpl
@@ -21,35 +21,41 @@
{{/if}}
<div class="clear"></div>
<div id="comment-tools-{{$id}}" class="comment-tools">
- <div id="comment-edit-bb-{{$id}}" class="btn-group pull-left">
- <button class="btn btn-default btn-xs" title="{{$edbold}}" onclick="insertbbcomment('{{$comment}}','b', {{$id}}); return false;">
- <i class="icon-bold comment-icon"></i>
- </button>
- <button class="btn btn-default btn-xs" title="{{$editalic}}" onclick="insertbbcomment('{{$comment}}','i', {{$id}}); return false;">
- <i class="icon-italic comment-icon"></i>
- </button>
- <button class="btn btn-default btn-xs" title="{{$eduline}}" onclick="insertbbcomment('{{$comment}}','u', {{$id}}); return false;">
- <i class="icon-underline comment-icon"></i>
- </button>
- <button class="btn btn-default btn-xs" title="{{$edquote}}" onclick="insertbbcomment('{{$comment}}','quote', {{$id}}); return false;">
- <i class="icon-quote-left comment-icon"></i>
- </button>
- <button class="btn btn-default btn-xs" title="{{$edcode}}" onclick="insertbbcomment('{{$comment}}','code', {{$id}}); return false;">
- <i class="icon-terminal comment-icon"></i>
- </button>
- <button class="btn btn-default btn-xs" title="{{$comment}}" onclick="insertbbcomment('{{$comment}}','img', {{$id}}); return false;">
- <i class="icon-camera comment-icon"></i>
- </button>
- <button class="btn btn-default btn-xs" title="{{$edurl}}" onclick="insertbbcomment('{{$comment}}','url', {{$id}}); return false;">
- <i class="icon-link comment-icon"></i>
- </button>
- <button class="btn btn-default btn-xs" title="{{$edvideo}}" onclick="insertbbcomment('{{$comment}}','video', {{$id}}); return false;">
- <i class="icon-facetime-video comment-icon"></i>
- </button>
+ <div id="comment-edit-bb-{{$id}}" class="btn-toolbar pull-left">
+ <div class='btn-group'>
+ <button class="btn btn-default btn-xs" title="{{$edbold}}" onclick="insertbbcomment('{{$comment}}','b', {{$id}}); return false;">
+ <i class="icon-bold comment-icon"></i>
+ </button>
+ <button class="btn btn-default btn-xs" title="{{$editalic}}" onclick="insertbbcomment('{{$comment}}','i', {{$id}}); return false;">
+ <i class="icon-italic comment-icon"></i>
+ </button>
+ <button class="btn btn-default btn-xs" title="{{$eduline}}" onclick="insertbbcomment('{{$comment}}','u', {{$id}}); return false;">
+ <i class="icon-underline comment-icon"></i>
+ </button>
+ <button class="btn btn-default btn-xs" title="{{$edquote}}" onclick="insertbbcomment('{{$comment}}','quote', {{$id}}); return false;">
+ <i class="icon-quote-left comment-icon"></i>
+ </button>
+ <button class="btn btn-default btn-xs" title="{{$edcode}}" onclick="insertbbcomment('{{$comment}}','code', {{$id}}); return false;">
+ <i class="icon-terminal comment-icon"></i>
+ </button>
+ </div>
+ <div class='btn-group'>
+ <button class="btn btn-default btn-xs" title="{{$edimg}}" onclick="insertbbcomment('{{$comment}}','img', {{$id}}); return false;">
+ <i class="icon-camera comment-icon"></i>
+ </button>
+ <button class="btn btn-default btn-xs" title="{{$edurl}}" onclick="insertbbcomment('{{$comment}}','url', {{$id}}); return false;">
+ <i class="icon-link comment-icon"></i>
+ </button>
+ <button class="btn btn-default btn-xs" title="{{$edvideo}}" onclick="insertbbcomment('{{$comment}}','video', {{$id}}); return false;">
+ <i class="icon-facetime-video comment-icon"></i>
+ </button>
+ </div>
{{if $feature_encrypt}}
- <button class="btn btn-default btn-xs" title="{{$encrypt}}" onclick="red_encrypt('{{$cipher}}','#comment-edit-text-' + '{{$id}}',''); return false;">
- <i class="icon-key comment-icon"></i>
- </button>
+ <div class='btn-group'>
+ <button class="btn btn-default btn-xs" title="{{$encrypt}}" onclick="red_encrypt('{{$cipher}}','#comment-edit-text-' + '{{$id}}',''); return false;">
+ <i class="icon-key comment-icon"></i>
+ </button>
+ </div>
{{/if}}
</div>
<div class="btn-group pull-right" id="comment-edit-submit-wrapper-{{$id}}">
@@ -58,7 +64,7 @@
<i class="icon-eye-open comment-icon" ></i>
</button>
{{/if}}
- <button id="comment-edit-submit-{{$id}}" class="btn btn-primary btn-xs" type="submit" name="submit" onclick="post_comment({{$id}}); return false;">{{$submit}}</button>
+ <button id="comment-edit-submit-{{$id}}" class="btn btn-primary btn-xs" type="submit" name="button-submit" onclick="post_comment({{$id}}); return false;">{{$submit}}</button>
</div>
</div>
<div class="clear"></div>
diff --git a/view/tpl/connection_template.tpl b/view/tpl/connection_template.tpl
index 44866c323..47f01ef5d 100755
--- a/view/tpl/connection_template.tpl
+++ b/view/tpl/connection_template.tpl
@@ -1,9 +1,9 @@
<div class="contact-entry-wrapper" id="contact-entry-wrapper-{{$contact.id}}" >
<div class="contact-entry-photo-wrapper" >
- <a href="{{$contact.url}}" title="{{$contact.img_hover}}" /><img class="contact-block-img {{if $contact.classes}}{{$contact.classes}}{{/if}}" src="{{$contact.thumb}}" alt="{{$contact.name}}" /></a>
+ <a href="{{$contact.url}}" title="{{$contact.img_hover}}" ><img class="contact-block-img {{if $contact.classes}}{{$contact.classes}}{{/if}}" src="{{$contact.thumb}}" alt="{{$contact.name}}" /></a>
</div>
<div class="contact-entry-photo-end" ></div>
- <a href="{{$contact.url}}" title="{{$contact.img_hover}}" /><div class="contact-entry-name" id="contact-entry-name-{{$contact.id}}" >{{$contact.name}}</div></a>
- <div class="contact-entry-edit btn btn-default"><a href="{{$contact.link}}"><i class="icon-pencil connection-edit-icons"></i> {{$edit}}</a></div>
+ <a href="{{$contact.url}}" title="{{$contact.img_hover}}" ><div class="contact-entry-name" id="contact-entry-name-{{$contact.id}}" >{{$contact.name}}</div></a>
+ <div class="contact-entry-edit btn btn-default"><a href="{{$contact.link}}"><i class="icon-pencil connection-edit-icons"></i> {{$contact.edit}}</a></div>
<div class="contact-entry-end" ></div>
</div>
diff --git a/view/tpl/connections.tpl b/view/tpl/connections.tpl
index c69dcde50..8e5266978 100755
--- a/view/tpl/connections.tpl
+++ b/view/tpl/connections.tpl
@@ -1,3 +1,5 @@
+<div class="generic-content-wrapper-styled">
+
<h1>{{$header}}{{if $total}} ({{$total}}){{/if}}</h1>
{{if $finding}}<h4>{{$finding}}</h4>{{/if}}
@@ -13,14 +15,13 @@
{{$tabs}}
-
+<div id="connections-wrapper">
{{foreach $contacts as $contact}}
{{include file="connection_template.tpl"}}
{{/foreach}}
+<div id="page-end"></div>
+</div>
<div id="contact-edit-end"></div>
-
-{{$paginate}}
-
-
-
-
+</div>
+<script>$(document).ready(function() { loadingPage = false;});</script>
+<div id="page-spinner"></div>
diff --git a/view/tpl/contact_slider.tpl b/view/tpl/contact_slider.tpl
index 33cd3fb71..09a79edd8 100755
--- a/view/tpl/contact_slider.tpl
+++ b/view/tpl/contact_slider.tpl
@@ -1,4 +1,4 @@
<div id="contact-slider" class="slider" style="height: 32px; position: relative; left: 5%; width: 90%;"><input id="contact-range" type="text" name="fake-closeness" value="{{$val}}" /></div>
<script>
- $("#contact-range").slider({ from: 0, to: 99, step: 1, scale: ['{{$me}}', '|', '{{$intimate}}', '|', '{{$friends}}', '|', '{{$oldfriends}}', '|', '{{$acquaintances}}', '|', '{{$world}}' ], onstatechange: function(v) { $("#contact-closeness-mirror").val(v); } });
+ $("#contact-range").jRange({ from: {{$min|default:'0'}}, to: 99, step: 1, scale: ['{{$me}}', '|', '{{$intimate}}', '|', '{{$friends}}', '|', '{{$oldfriends}}', '|', '{{$acquaintances}}', '|', '{{$world}}' ], width:'100%', showLabels: false, onstatechange: function(v) { $("#contact-closeness-mirror").val(v); } });
</script>
diff --git a/view/tpl/contact_template.tpl b/view/tpl/contact_template.tpl
index 7feefa655..3d1bfa4a4 100755
--- a/view/tpl/contact_template.tpl
+++ b/view/tpl/contact_template.tpl
@@ -1,6 +1,6 @@
<div class="contact-entry-wrapper" id="contact-entry-wrapper-{{$contact.id}}" >
<div class="contact-entry-photo-wrapper" >
- <a href="{{$contact.link}}" title="{{$contact.img_hover}}" /><img class="contact-block-img" src="{{$contact.thumb}}" alt="{{$contact.name}}" /></a>
+ <a href="{{$contact.link}}" title="{{$contact.img_hover}}" ><img class="contact-block-img" src="{{$contact.thumb}}" alt="{{$contact.name}}" /></a>
</div>
<div class="contact-entry-photo-end" ></div>
<div class="contact-entry-name" id="contact-entry-name-{{$contact.id}}" >{{$contact.name}}</div>
diff --git a/view/tpl/contactsajax.tpl b/view/tpl/contactsajax.tpl
new file mode 100644
index 000000000..1cce0f105
--- /dev/null
+++ b/view/tpl/contactsajax.tpl
@@ -0,0 +1,3 @@
+{{foreach $contacts as $contact}}
+ {{include file="connection_template.tpl"}}
+{{/foreach}}
diff --git a/view/tpl/conv_item.tpl b/view/tpl/conv_item.tpl
index d7ed7d0f4..f30ca7fc0 100755
--- a/view/tpl/conv_item.tpl
+++ b/view/tpl/conv_item.tpl
@@ -15,7 +15,9 @@
<div class="wall-item-photo-end" style="clear:both"></div>
</div>
{{if $item.title}}
- <div class="wall-item-title" id="wall-item-title-{{$item.id}}"><h3>{{$item.title}}</h3></div>
+ <div class="wall-item-title" id="wall-item-title-{{$item.id}}">
+ <h3>{{if $item.title_tosource}}{{if $item.plink}}<a href="{{$item.plink.href}}" title="{{$item.title}} ({{$item.plink.title}})">{{/if}}{{/if}}{{$item.title}}{{if $item.title_tosource}}{{if $item.plink}}</a>{{/if}}{{/if}}</h3>
+ </div>
{{/if}}
{{if $item.lock}}
<div class="wall-item-lock dropdown">
@@ -26,7 +28,7 @@
<a href="{{$item.profile_url}}" title="{{$item.linktitle}}" class="wall-item-name-link"><span class="wall-item-name{{$item.sparkle}}" id="wall-item-name-{{$item.id}}" >{{$item.name}}</span></a>{{if $item.owner_url}}&nbsp;{{$item.via}}&nbsp;<a href="{{$item.owner_url}}" title="{{$item.olinktitle}}" class="wall-item-name-link"><span class="wall-item-name{{$item.osparkle}}" id="wall-item-ownername-{{$item.id}}">{{$item.owner_name}}</span></a>{{/if}}
</div>
<div class="wall-item-ago" id="wall-item-ago-{{$item.id}}">
- {{if $item.verified}}<i class="icon-ok" title="{{$item.verified}}"></i>&nbsp;{{/if}}{{if $item.location}}<span class="wall-item-location" id="wall-item-location-{{$item.id}}">{{$item.location}},&nbsp;</span>{{/if}}<span class="autotime" title="{{$item.isotime}}">{{$item.localtime}}{{if $item.editedtime}}&nbsp;{{$item.editedtime}}{{/if}}{{if $item.expiretime}}&nbsp;{{$item.expiretime}}{{/if}}</span>&nbsp;{{if $item.app}}<span class="item.app">{{$item.str_app}}</span>{{/if}}
+ {{if $item.verified}}<i class="icon-ok item-verified" title="{{$item.verified}}"></i>&nbsp;{{elseif $item.forged}}<i class="icon-remove item-forged" title="{{$item.forged}}"></i>&nbsp;{{/if}}{{if $item.location}}<span class="wall-item-location" id="wall-item-location-{{$item.id}}">{{$item.location}},&nbsp;</span>{{/if}}<span class="autotime" title="{{$item.isotime}}">{{$item.localtime}}{{if $item.editedtime}}&nbsp;{{$item.editedtime}}{{/if}}{{if $item.expiretime}}&nbsp;{{$item.expiretime}}{{/if}}</span>{{if $item.editedtime}}&nbsp;<i class="icon-pencil"></i>{{/if}}&nbsp;{{if $item.app}}<span class="item.app">{{$item.str_app}}</span>{{/if}}
</div>
<div class="wall-item-content" id="wall-item-content-{{$item.id}}">
<div class="wall-item-title-end"></div>
diff --git a/view/tpl/conv_list.tpl b/view/tpl/conv_list.tpl
new file mode 100755
index 000000000..59bb8f918
--- /dev/null
+++ b/view/tpl/conv_list.tpl
@@ -0,0 +1,179 @@
+{{if $item.comment_firstcollapsed}}
+<div class="hide-comments-outer fakelink" onclick="showHideComments({{$item.id}});">
+ <span id="hide-comments-{{$item.id}}" class="hide-comments">{{$item.hide_text}}</span>&nbsp;<span id="hide-comments-total-{{$item.id}}" class="hide-comments-total">{{$item.num_comments}}</span>
+</div>
+<div id="collapsed-comments-{{$item.id}}" class="collapsed-comments" style="display: none;">
+{{/if}}
+ <div id="thread-wrapper-{{$item.id}}" class="thread-wrapper {{$item.toplevel}} conv-list-mode">
+ <a name="{{$item.id}}" ></a>
+ <div class="wall-item-outside-wrapper {{$item.indent}}{{$item.previewing}}" id="wall-item-outside-wrapper-{{$item.id}}" >
+ <div class="wall-item-content-wrapper {{$item.indent}}" id="wall-item-content-wrapper-{{$item.id}}" style="clear:both;">
+ <div class="wall-item-info" id="wall-item-info-{{$item.id}}" >
+ <div class="wall-item-photo-wrapper{{if $item.owner_url}} wwfrom{{/if}}" id="wall-item-photo-wrapper-{{$item.id}}">
+ <a href="{{$item.profile_url}}" title="{{$item.linktitle}}" class="wall-item-photo-link" id="wall-item-photo-link-{{$item.id}}"><img src="{{$item.thumb}}" class="wall-item-photo{{$item.sparkle}}" id="wall-item-photo-{{$item.id}}" alt="{{$item.name}}" /></a>
+ </div>
+ <div class="wall-item-photo-end" style="clear:both"></div>
+ </div>
+ {{if $item.title}}
+ <div class="wall-item-title" id="wall-item-title-{{$item.id}}">
+ <h3>{{if $item.title_tosource}}{{if $item.plink}}<a href="{{$item.plink.href}}" title="{{$item.title}} ({{$item.plink.title}})">{{/if}}{{/if}}{{$item.title}}{{if $item.title_tosource}}{{if $item.plink}}</a>{{/if}}{{/if}}</h3>
+ </div>
+ {{/if}}
+ {{if $item.lock}}
+ <div class="wall-item-lock dropdown">
+ <i class="icon-lock lockview dropdown-toggle" data-toggle="dropdown" title="{{$item.lock}}" onclick="lockview(event,{{$item.id}});" ></i><ul id="panel-{{$item.id}}" class="lockview-panel dropdown-menu"></ul>&nbsp;
+ </div>
+ {{/if}}
+ <div class="wall-item-author">
+ <a href="{{$item.profile_url}}" title="{{$item.linktitle}}" class="wall-item-name-link"><span class="wall-item-name{{$item.sparkle}}" id="wall-item-name-{{$item.id}}" >{{$item.name}}</span></a>{{if $item.owner_url}}&nbsp;{{$item.via}}&nbsp;<a href="{{$item.owner_url}}" title="{{$item.olinktitle}}" class="wall-item-name-link"><span class="wall-item-name{{$item.osparkle}}" id="wall-item-ownername-{{$item.id}}">{{$item.owner_name}}</span></a>{{/if}}
+ </div>
+ <div class="wall-item-ago" id="wall-item-ago-{{$item.id}}">
+ {{if $item.verified}}<i class="icon-ok item-verified" title="{{$item.verified}}"></i>&nbsp;{{elseif $item.forged}}<i class="icon-remove item-forged" title="{{$item.forged}}"></i>&nbsp;{{/if}}{{if $item.location}}<span class="wall-item-location" id="wall-item-location-{{$item.id}}">{{$item.location}},&nbsp;</span>{{/if}}<span class="autotime" title="{{$item.isotime}}">{{$item.localtime}}{{if $item.editedtime}}&nbsp;{{$item.editedtime}}{{/if}}{{if $item.expiretime}}&nbsp;{{$item.expiretime}}{{/if}}</span>{{if $item.editedtime}}&nbsp;<i class="icon-pencil"></i>{{/if}}&nbsp;{{if $item.app}}<span class="item.app">{{$item.str_app}}</span>{{/if}}
+ </div>
+ <div class="wall-item-content conv-list-mode" id="wall-item-content-{{$item.id}}">
+ <div class="wall-item-title-end"></div>
+ <div class="wall-item-body wall-item-listbody" id="wall-item-body-{{$item.id}}" >
+ {{$item.body}}
+ {{if $item.tags}}
+ <div class="body-tag">
+ {{foreach $item.tags as $tag}}
+ <span class='tag'>{{$tag}}</span>
+ {{/foreach}}
+ </div>
+ {{/if}}
+ {{if $item.has_cats}}
+ <div class="categorytags">
+ <span>{{$item.txt_cats}} {{foreach $item.categories as $cat}}{{$cat.name}} <a href="{{$cat.removeurl}}" title="{{$remove}}">[{{$remove}}]</a> {{if $cat.last}}{{else}}, {{/if}}{{/foreach}}
+ </div>
+ {{/if}}
+ {{if $item.has_folders}}
+ <div class="filesavetags">
+ <span>{{$item.txt_folders}} {{foreach $item.folders as $cat}}{{$cat.name}} <a href="{{$cat.removeurl}}" title="{{$remove}}">[{{$remove}}]</a> {{if $cat.last}}{{else}}, {{/if}}{{/foreach}}
+ </div>
+ {{/if}}
+ </div>
+ </div>
+ <div class="wall-item-tools">
+ <div class="wall-item-tools-right btn-group pull-right">
+ {{if $item.like}}
+ <button type="button" class="btn btn-default btn-sm" onclick="dolike({{$item.id}},'like'); return false">
+ <i class="icon-thumbs-up-alt" title="{{$item.like.0}}"></i>
+ </button>
+ {{/if}}
+ {{if $item.dislike}}
+ <button type="button" class="btn btn-default btn-sm" onclick="dolike({{$item.id}},'dislike'); return false">
+ <i class="icon-thumbs-down-alt" title="{{$item.dislike.0}}"></i>
+ </button>
+ {{/if}}
+ <button type="button" class="btn btn-default btn-sm dropdown-toggle" data-toggle="dropdown" id="wall-item-menu-{{$item.id}}">
+ <i class="icon-caret-down"></i>
+ </button>
+ <ul class="dropdown-menu" role="menu" aria-labelledby="wall-item-menu-{{$item.id}}">
+ {{if $item.share}}
+ <li role="presentation"><a role="menuitem" href="#" onclick="jotShare({{$item.id}}); return false"><i class="icon-retweet" title="{{$item.share.0}}"></i> {{$item.share.0}}</a></li>
+ {{/if}}
+ {{if $item.plink}}
+ <li role="presentation"><a role="menuitem" href="{{$item.plink.href}}" title="{{$item.plink.title}}" ><i class="icon-external-link"></i> {{$item.plink.title}}</a></li>
+ {{/if}}
+ {{if $item.edpost}}
+ <li role="presentation"><a role="menuitem" href="{{$item.edpost.0}}" title="{{$item.edpost.1}}"><i class="editpost icon-pencil"></i> {{$item.edpost.1}}</a></li>
+ {{/if}}
+ {{if $item.tagger}}
+ <li role="presentation"><a role="menuitem" href="#" onclick="itemTag({{$item.id}}); return false;"><i id="tagger-{{$item.id}}" class="icon-tag" title="{{$item.tagger.tagit}}"></i> {{$item.tagger.tagit}}</a></li>
+ {{/if}}
+ {{if $item.filer}}
+ <li role="presentation"><a role="menuitem" href="#" onclick="itemFiler({{$item.id}}); return false;"><i id="filer-{{$item.id}}" class="icon-folder-open" title="{{$item.filer}}"></i> {{$item.filer}}</a></li>
+ {{/if}}
+ {{if $item.bookmark}}
+ <li role="presentation"><a role="menuitem" href="#" onclick="itemBookmark({{$item.id}}); return false;"><i id="bookmarker-{{$item.id}}" class="icon-bookmark" title="{{$item.bookmark}}"></i> {{$item.bookmark}}</a></li>
+ {{/if}}
+ {{if $item.addtocal}}
+ <li role="presentation"><a role="menuitem" href="#" onclick="itemAddToCal({{$item.id}}); return false;"><i id="addtocal-{{$item.id}}" class="icon-calendar" title="{{$item.addtocal}}"></i> {{$item.addtocal}}</a></li>
+ {{/if}}
+ {{if $item.star}}
+ <li role="presentation"><a role="menuitem" href="#" onclick="dostar({{$item.id}}); return false;"><i id="starred-{{$item.id}}" class="icon-star {{$item.star.isstarred}}" title="{{$item.star.toggle}}"></i> {{$item.star.toggle}}</a></li>
+ {{/if}}
+ {{if $item.item_photo_menu}}
+ <li role="presentation" class="divider"></li>
+ {{$item.item_photo_menu}}
+ {{/if}}
+ {{if $item.drop.dropping}}
+ <li role="presentation" class="divider"></li>
+ <li role="presentation"><a role="menuitem" href="item/drop/{{$item.id}}" onclick="return confirmDelete();" title="{{$item.drop.delete}}" ><i class="icon-remove"></i> {{$item.drop.delete}}</a></li>
+ {{/if}}
+ </ul>
+ </div>
+ <div id="like-rotator-{{$item.id}}" class="like-rotator"></div>
+ <div class="wall-item-tools-left{{if $item.unseen_comments || $item.like_count || $item.dislike_count}} btn-group{{/if}}">
+
+
+ <div class="wall-item-list-comments btn-group"><button class="btn btn-default btn-sm" onclick="window.location.href='{{$item.viewthread}}'; return false;">{{$item.comment_count_txt}}{{if $item.unseen_comments}}
+<span class="unseen-wall-indicator-{{$item.id}}">, {{$item.list_unseen_txt}}{{/if}}</span></button></div>{{if $item.unseen_comments}}<div class="unseen-wall-indicator-{{$item.id}} btn-group"><button class="btn btn-default btn-sm" title="{{$item.markseen}}" onclick="markItemRead({{$item.id}}); return false;"><i class="icon-check"></i></div>{{/if}}
+
+ {{if $item.like_count}}
+ <div class="btn-group">
+ <button type="button" class="btn btn-default btn-sm wall-item-like dropdown-toggle" data-toggle="dropdown" id="wall-item-like-{{$item.id}}">{{$item.like_count}} {{$item.like_button_label}}</button>
+ {{if $item.like_list_part}}
+ <ul class="dropdown-menu" role="menu" aria-labelledby="wall-item-like-{{$item.id}}">{{foreach $item.like_list_part as $liker}}<li role="presentation">{{$liker}}</li>{{/foreach}}</ul>
+ {{else}}
+ <ul class="dropdown-menu" role="menu" aria-labelledby="wall-item-like-{{$item.id}}">{{foreach $item.like_list as $liker}}<li role="presentation">{{$liker}}</li>{{/foreach}}</ul>
+ {{/if}}
+ </div>
+ {{/if}}
+ {{if $item.dislike_count}}
+ <div class="btn-group">
+ <button type="button" class="btn btn-default btn-sm wall-item-dislike dropdown-toggle" data-toggle="dropdown" id="wall-item-dislike-{{$item.id}}">{{$item.dislike_count}} {{$item.dislike_button_label}}</button>
+ {{if $item.dislike_list_part}}
+ <ul class="dropdown-menu" role="menu" aria-labelledby="wall-item-dislike-{{$item.id}}">{{foreach $item.dislike_list_part as $disliker}}<li role="presentation">{{$disliker}}</li>{{/foreach}}</ul>
+ {{else}}
+ <ul class="dropdown-menu" role="menu" aria-labelledby="wall-item-dislike-{{$item.id}}">{{foreach $item.dislike_list as $disliker}}<li role="presentation">{{$disliker}}</li>{{/foreach}}</ul>
+ {{/if}}
+ </div>
+ {{/if}}
+ </div>
+ {{if $item.like_list_part}}
+ <div class="modal" id="likeModal-{{$item.id}}">
+ <div class="modal-dialog">
+ <div class="modal-content">
+ <div class="modal-header">
+ <button type="button" class="close" data-dismiss="modal" aria-hidden="true">&times;</button>
+ <h4 class="modal-title">{{$item.like_modal_title}}</h4>
+ </div>
+ <div class="modal-body">
+ <ul>{{foreach $item.like_list as $liker}}<li role="presentation">{{$liker}}</li>{{/foreach}}</ul>
+ </div>
+ <div class="modal-footer clear">
+ <button type="button" class="btn btn-default" data-dismiss="modal">{{$item.modal_dismiss}}</button>
+ </div>
+ </div><!-- /.modal-content -->
+ </div><!-- /.modal-dialog -->
+ </div><!-- /.modal -->
+ {{/if}}
+ {{if $item.dislike_list_part}}
+ <div class="modal" id="dislikeModal-{{$item.id}}">
+ <div class="modal-dialog">
+ <div class="modal-content">
+ <div class="modal-header">
+ <button type="button" class="close" data-dismiss="modal" aria-hidden="true">&times;</button>
+ <h4 class="modal-title">{{$item.dislike_modal_title}}</h4>
+ </div>
+ <div class="modal-body">
+ <ul>{{foreach $item.dislike_list as $disliker}}<li role="presentation">{{$disliker}}</li>{{/foreach}}</ul>
+ </div>
+ <div class="modal-footer clear">
+ <button type="button" class="btn btn-default" data-dismiss="modal">{{$item.modal_dismiss}}</button>
+ </div>
+ </div><!-- /.modal-content -->
+ </div><!-- /.modal-dialog -->
+ </div><!-- /.modal -->
+ {{/if}}
+ </div>
+ <div class="clear"></div>
+ </div>
+ <div class="wall-item-wrapper-end"></div>
+ <div class="wall-item-outside-wrapper-end {{$item.indent}}" ></div>
+ </div>
+ </div>
+{{if $item.comment_lastcollapsed}}
+</div>
+{{/if}}
diff --git a/view/tpl/crepair.tpl b/view/tpl/crepair.tpl
deleted file mode 100755
index 1a5a019db..000000000
--- a/view/tpl/crepair.tpl
+++ /dev/null
@@ -1,45 +0,0 @@
-<form id="crepair-form" action="crepair/{{$contact_id}}" method="post" >
-
-<h4>{{$contact_name}}</h4>
-
-<label id="crepair-name-label" class="crepair-label" for="crepair-name">{{$label_name}}</label>
-<input type="text" id="crepair-name" class="crepair-input" name="name" value="{{$contact_name}}" />
-<div class="clear"></div>
-
-<label id="crepair-nick-label" class="crepair-label" for="crepair-nick">{{$label_nick}}</label>
-<input type="text" id="crepair-nick" class="crepair-input" name="nick" value="{{$contact_nick}}" />
-<div class="clear"></div>
-
-<label id="crepair-attag-label" class="crepair-label" for="crepair-attag">{{$label_attag}}</label>
-<input type="text" id="crepair-attag" class="crepair-input" name="attag" value="{{$contact_attag}}" />
-<div class="clear"></div>
-
-<label id="crepair-url-label" class="crepair-label" for="crepair-url">{{$label_url}}</label>
-<input type="text" id="crepair-url" class="crepair-input" name="url" value="{{$contact_url}}" />
-<div class="clear"></div>
-
-<label id="crepair-request-label" class="crepair-label" for="crepair-request">{{$label_request}}</label>
-<input type="text" id="crepair-request" class="crepair-input" name="request" value="{{$request}}" />
-<div class="clear"></div>
-
-<label id="crepair-confirm-label" class="crepair-label" for="crepair-confirm">{{$label_confirm}}</label>
-<input type="text" id="crepair-confirm" class="crepair-input" name="confirm" value="{{$confirm}}" />
-<div class="clear"></div>
-
-<label id="crepair-notify-label" class="crepair-label" for="crepair-notify">{{$label_notify}}</label>
-<input type="text" id="crepair-notify" class="crepair-input" name="notify" value="{{$notify}}" />
-<div class="clear"></div>
-
-<label id="crepair-poll-label" class="crepair-label" for="crepair-poll">{{$label_poll}}</label>
-<input type="text" id="crepair-poll" class="crepair-input" name="poll" value="{{$poll}}" />
-<div class="clear"></div>
-
-<label id="crepair-photo-label" class="crepair-label" for="crepair-photo">{{$label_photo}}</label>
-<input type="text" id="crepair-photo" class="crepair-input" name="photo" value="" />
-<div class="clear"></div>
-
-<input type="submit" name="submit" value="{{$lbl_submit}}" />
-
-</form>
-
-
diff --git a/view/tpl/design_tools.tpl b/view/tpl/design_tools.tpl
index 80a538231..53d90be74 100644
--- a/view/tpl/design_tools.tpl
+++ b/view/tpl/design_tools.tpl
@@ -2,7 +2,7 @@
<h3>{{$title}}</h3>
<ul>
<li><a href="blocks/{{$who}}">{{$blocks}}</a></li>
-<li><a href="menu">{{$menus}}</a></li>
+<li><a href="menu{{if $sys}}?f=&sys=1{{/if}}">{{$menus}}</a></li>
<li><a href="layouts/{{$who}}">{{$layout}}</a></li>
<li><a href="webpages/{{$who}}">{{$pages}}</a></li>
</ul>
diff --git a/view/tpl/diaspora_comment.tpl b/view/tpl/diaspora_comment.tpl
new file mode 100644
index 000000000..27ec3dffc
--- /dev/null
+++ b/view/tpl/diaspora_comment.tpl
@@ -0,0 +1,11 @@
+<XML>
+ <post>
+ <comment>
+ <guid>{{$guid}}</guid>
+ <parent_guid>{{$parent_guid}}</parent_guid>
+ <author_signature>{{$authorsig}}</author_signature>
+ <text>{{$body}}</text>
+ <diaspora_handle>{{$handle}}</diaspora_handle>
+ </comment>
+ </post>
+</XML> \ No newline at end of file
diff --git a/view/tpl/diaspora_comment_relay.tpl b/view/tpl/diaspora_comment_relay.tpl
new file mode 100644
index 000000000..37a9e88b3
--- /dev/null
+++ b/view/tpl/diaspora_comment_relay.tpl
@@ -0,0 +1,12 @@
+<XML>
+ <post>
+ <comment>
+ <guid>{{$guid}}</guid>
+ <parent_guid>{{$parent_guid}}</parent_guid>
+ <parent_author_signature>{{$parentsig}}</parent_author_signature>
+ <author_signature>{{$authorsig}}</author_signature>
+ <text>{{$body}}</text>
+ <diaspora_handle>{{$handle}}</diaspora_handle>
+ </comment>
+ </post>
+</XML> \ No newline at end of file
diff --git a/view/tpl/diaspora_conversation.tpl b/view/tpl/diaspora_conversation.tpl
new file mode 100644
index 000000000..dc4482e4b
--- /dev/null
+++ b/view/tpl/diaspora_conversation.tpl
@@ -0,0 +1,29 @@
+<XML>
+ <post>
+ <conversation>
+ <guid>{{$conv.guid}}</guid>
+ <subject>{{$conv.subject}}</subject>
+ <created_at>{{$conv.created_at}}</created_at>
+
+ {{foreach $conv.messages as $msg}}
+
+ <message>
+ <guid>{{$msg.guid}}</guid>
+ <parent_guid>{{$msg.parent_guid}}</parent_guid>
+ {{if $msg.parent_author_signature}}
+ <parent_author_signature>{{$msg.parent_author_signature}}</parent_author_signature>
+ {{/if}}
+ <author_signature>{{$msg.author_signature}}</author_signature>
+ <text>{{$msg.text}}</text>
+ <created_at>{{$msg.created_at}}</created_at>
+ <diaspora_handle>{{$msg.diaspora_handle}}</diaspora_handle>
+ <conversation_guid>{{$msg.conversation_guid}}</conversation_guid>
+ </message>
+
+ {{/foreach}}
+
+ <diaspora_handle>{{$conv.diaspora_handle}}</diaspora_handle>
+ <participant_handles>{{$conv.participant_handles}}</participant_handles>
+ </conversation>
+ </post>
+</XML>
diff --git a/view/tpl/diaspora_like.tpl b/view/tpl/diaspora_like.tpl
new file mode 100644
index 000000000..a27e92240
--- /dev/null
+++ b/view/tpl/diaspora_like.tpl
@@ -0,0 +1,12 @@
+<XML>
+ <post>
+ <like>
+ <positive>{{$positive}}</positive>
+ <guid>{{$guid}}</guid>
+ <target_type>{{$target_type}}</target_type>
+ <parent_guid>{{$parent_guid}}</parent_guid>
+ <author_signature>{{$authorsig}}</author_signature>
+ <diaspora_handle>{{$handle}}</diaspora_handle>
+ </like>
+ </post>
+</XML>
diff --git a/view/tpl/diaspora_like_relay.tpl b/view/tpl/diaspora_like_relay.tpl
new file mode 100644
index 000000000..8209540c5
--- /dev/null
+++ b/view/tpl/diaspora_like_relay.tpl
@@ -0,0 +1,13 @@
+<XML>
+ <post>
+ <like>
+ <positive>{{$positive}}</positive>
+ <guid>{{$guid}}</guid>
+ <target_type>{{$target_type}}</target_type>
+ <parent_guid>{{$parent_guid}}</parent_guid>
+ <parent_author_signature>{{$parentsig}}</parent_author_signature>
+ <author_signature>{{$authorsig}}</author_signature>
+ <diaspora_handle>{{$handle}}</diaspora_handle>
+ </like>
+ </post>
+</XML>
diff --git a/view/tpl/diaspora_message.tpl b/view/tpl/diaspora_message.tpl
new file mode 100644
index 000000000..3413d79b0
--- /dev/null
+++ b/view/tpl/diaspora_message.tpl
@@ -0,0 +1,13 @@
+<XML>
+ <post>
+ <message>
+ <guid>{{$msg.guid}}</guid>
+ <parent_guid>{{$msg.parent_guid}}</parent_guid>
+ <author_signature>{{$msg.author_signature}}</author_signature>
+ <text>{{$msg.text}}</text>
+ <created_at>{{$msg.created_at}}</created_at>
+ <diaspora_handle>{{$msg.diaspora_handle}}</diaspora_handle>
+ <conversation_guid>{{$msg.conversation_guid}}</conversation_guid>
+ </message>
+ </post>
+</XML>
diff --git a/view/tpl/diaspora_photo.tpl b/view/tpl/diaspora_photo.tpl
new file mode 100644
index 000000000..256459d8d
--- /dev/null
+++ b/view/tpl/diaspora_photo.tpl
@@ -0,0 +1,13 @@
+<XML>
+ <post>
+ <photo>
+ <guid>{{$guid}}</guid>
+ <diaspora_handle>{{$handle}}</diaspora_handle>
+ <public>{{$public}}</public>
+ <created_at>{{$created_at}}</created_at>
+ <remote_photo_path>{{$path}}</remote_photo_path>
+ <remote_photo_name>{{$filename}}</remote_photo_name>
+ <status_message_guid>{{$msg_guid}}</status_message_guid>
+ </photo>
+ </post>
+</XML>
diff --git a/view/tpl/diaspora_post.tpl b/view/tpl/diaspora_post.tpl
new file mode 100644
index 000000000..2fe916e00
--- /dev/null
+++ b/view/tpl/diaspora_post.tpl
@@ -0,0 +1,12 @@
+<XML>
+ <post>
+ <status_message>
+ <raw_message>{{$body}}</raw_message>
+ <guid>{{$guid}}</guid>
+ <diaspora_handle>{{$handle}}</diaspora_handle>
+ <public>{{$public}}</public>
+ <created_at>{{$created}}</created_at>
+ <provider_display_name>{{$provider}}</provider_display_name>
+ </status_message>
+ </post>
+</XML>
diff --git a/view/tpl/diaspora_relay_retraction.tpl b/view/tpl/diaspora_relay_retraction.tpl
new file mode 100644
index 000000000..5e7aed41f
--- /dev/null
+++ b/view/tpl/diaspora_relay_retraction.tpl
@@ -0,0 +1,10 @@
+<XML>
+ <post>
+ <relayable_retraction>
+ <target_type>{{$type}}</target_type>
+ <target_guid>{{$guid}}</target_guid>
+ <target_author_signature>{{$signature}}</target_author_signature>
+ <sender_handle>{{$handle}}</sender_handle>
+ </relayable_retraction>
+ </post>
+</XML>
diff --git a/view/tpl/diaspora_relayable_retraction.tpl b/view/tpl/diaspora_relayable_retraction.tpl
new file mode 100644
index 000000000..4e3ff3243
--- /dev/null
+++ b/view/tpl/diaspora_relayable_retraction.tpl
@@ -0,0 +1,11 @@
+<XML>
+ <post>
+ <relayable_retraction>
+ <parent_author_signature>{{$parentsig}}</parent_author_signature>
+ <target_guid>{{$guid}}</target_guid>
+ <target_type>{{$target_type}}</target_type>
+ <sender_handle>{{$handle}}</sender_handle>
+ <target_author_signature>{{$authorsig}}</target_author_signature>
+ </relayable_retraction>
+ </post>
+</XML>
diff --git a/view/tpl/diaspora_reshare.tpl b/view/tpl/diaspora_reshare.tpl
new file mode 100644
index 000000000..963bb9e12
--- /dev/null
+++ b/view/tpl/diaspora_reshare.tpl
@@ -0,0 +1,13 @@
+<XML>
+ <post>
+ <reshare>
+ <root_diaspora_id>{{$root_handle}}</root_diaspora_id>
+ <root_guid>{{$root_guid}}</root_guid>
+ <guid>{{$guid}}</guid>
+ <diaspora_handle>{{$handle}}</diaspora_handle>
+ <public>{{$public}}</public>
+ <created_at>{{$created}}</created_at>
+ <provider_display_name>{{$provider}}</provider_display_name>
+ </reshare>
+ </post>
+</XML>
diff --git a/view/tpl/diaspora_retract.tpl b/view/tpl/diaspora_retract.tpl
new file mode 100644
index 000000000..9df066d38
--- /dev/null
+++ b/view/tpl/diaspora_retract.tpl
@@ -0,0 +1,9 @@
+<XML>
+ <post>
+ <retraction>
+ <post_guid>{{$guid}}</post_guid>
+ <diaspora_handle>{{$handle}}</diaspora_handle>
+ <type>{{$type}}</type>
+ </retraction>
+ </post>
+</XML>
diff --git a/view/tpl/diaspora_share.tpl b/view/tpl/diaspora_share.tpl
new file mode 100644
index 000000000..59eb06124
--- /dev/null
+++ b/view/tpl/diaspora_share.tpl
@@ -0,0 +1,8 @@
+<XML>
+ <post>
+ <request>
+ <sender_handle>{{$sender}}</sender_handle>
+ <recipient_handle>{{$recipient}}</recipient_handle>
+ </request>
+ </post>
+</XML> \ No newline at end of file
diff --git a/view/tpl/diaspora_signed_retract.tpl b/view/tpl/diaspora_signed_retract.tpl
new file mode 100644
index 000000000..f0f346da8
--- /dev/null
+++ b/view/tpl/diaspora_signed_retract.tpl
@@ -0,0 +1,10 @@
+<XML>
+ <post>
+ <signed_retraction>
+ <target_guid>{{$guid}}</target_guid>
+ <target_type>{{$type}}</target_type>
+ <sender_handle>{{$handle}}</sender_handle>
+ <target_author_signature>{{$signature}}</target_author_signature>
+ </signed_retraction>
+ </post>
+</XML>
diff --git a/view/tpl/diaspora_vcard.tpl b/view/tpl/diaspora_vcard.tpl
new file mode 100644
index 000000000..f9dac9306
--- /dev/null
+++ b/view/tpl/diaspora_vcard.tpl
@@ -0,0 +1,57 @@
+<div style="display:none;">
+ <dl class='entity_nickname'>
+ <dt>Nickname</dt>
+ <dd>
+ <a class="nickname url uid" href="{{$diaspora.podloc}}/" rel="me">{{$diaspora.fullname}}</a>
+ </dd>
+ </dl>
+ <dl class='entity_fn'>
+ <dt>Full name</dt>
+ <dd>
+ <span class='fn'>{{$diaspora.fullname}}</span>
+ </dd>
+ </dl>
+
+ <dl class='entity_given_name'>
+ <dt>First name</dt>
+ <dd>
+ <span class='given_name'>{{$diaspora.firstname}}</span>
+ </dd>
+ </dl>
+ <dl class='entity_family_name'>
+ <dt>Family name</dt>
+ <dd>
+ <span class='family_name'>{{$diaspora.lastname}}</span>
+ </dd>
+ </dl>
+ <dl class="entity_url">
+ <dt>URL</dt>
+ <dd>
+ <a class="url" href="{{$diaspora.podloc}}/" id="pod_location" rel="me">{{$diaspora.podloc}}/</a>
+ </dd>
+ </dl>
+ <dl class="entity_photo">
+ <dt>Photo</dt>
+ <dd>
+ <img class="photo avatar" height="300" width="300" src="{{$diaspora.photo300}}">
+ </dd>
+ </dl>
+ <dl class="entity_photo_medium">
+ <dt>Photo</dt>
+ <dd>
+ <img class="photo avatar" height="100" width="100" src="{{$diaspora.photo100}}">
+ </dd>
+ </dl>
+ <dl class="entity_photo_small">
+ <dt>Photo</dt>
+ <dd>
+ <img class="photo avatar" height="50" width="50" src="{{$diaspora.photo50}}">
+ </dd>
+ </dl>
+ <dl class="entity_searchable">
+ <dt>Searchable</dt>
+ <dd>
+ <span class="searchable">{{$diaspora.searchable}}</span>
+ </dd>
+ </dl>
+</div>
diff --git a/view/tpl/dir_sort_links.tpl b/view/tpl/dir_sort_links.tpl
index d78aec1f5..d9ecd22c6 100644
--- a/view/tpl/dir_sort_links.tpl
+++ b/view/tpl/dir_sort_links.tpl
@@ -1,6 +1,10 @@
<div class="widget" id="dir_sort_links">
<h3>{{$header}}</h3>
-<a href="directory?f=&order=normal">{{$normal}}</a><br />
-<a href="directory?f=&order=reverse">{{$reverse}}</a><br />
-<a href="directory?f=&order=date">{{$date}}</a><br />
+{{$sort}}: <select onchange='window.location.href="{{$sorturl}}&order="+this.value'>
+<option value='normal' {{if $selected_sort == 'normal'}}selected='selected'{{/if}}>{{$normal}}</option>
+<option value='reverse' {{if $selected_sort == 'reverse'}}selected='selected'{{/if}}>{{$reverse}}</option>
+<option value='date' {{if $selected_sort == 'date'}}selected='selected'{{/if}}>{{$date}}</option>
+<option value='reversedate' {{if $selected_sort == 'reversedate'}}selected='selected'{{/if}}>{{$reversedate}}</option>
+</select><br />
+<input type='checkbox' {{if $pubforumsonly}}checked='checked'{{/if}} onchange='window.location.href="{{$forumsurl}}&pubforums="+(this.checked ? 1 : 0)'/> {{$pubforums}}<br />
</div>
diff --git a/view/tpl/directajax.tpl b/view/tpl/directajax.tpl
new file mode 100644
index 000000000..8faec4222
--- /dev/null
+++ b/view/tpl/directajax.tpl
@@ -0,0 +1,4 @@
+{{foreach $entries as $entry}}
+{{include file="direntry.tpl"}}
+{{/foreach}}
+
diff --git a/view/tpl/directory_header.tpl b/view/tpl/directory_header.tpl
index 5d703e2dd..477df8a63 100755
--- a/view/tpl/directory_header.tpl
+++ b/view/tpl/directory_header.tpl
@@ -1,3 +1,4 @@
+<div class="generic-content-wrapper-styled">
<h1>{{$dirlbl}}</h1>
{{if $search}}
@@ -5,12 +6,11 @@
{{/if}}
{{foreach $entries as $entry}}
-
{{include file="direntry.tpl"}}
-
{{/foreach}}
-
-
+<div id="page-end"></div>
<div class="directory-end"></div>
-
+</div>
+<script>$(document).ready(function() { loadingPage = false;});</script>
+<div id="page-spinner"></div>
diff --git a/view/tpl/direntry.tpl b/view/tpl/direntry.tpl
index e5f12944e..cdc6f1f97 100755
--- a/view/tpl/direntry.tpl
+++ b/view/tpl/direntry.tpl
@@ -1,16 +1,38 @@
<div class="directory-item lframe" id="directory-item-{{$entry.id}}" >
-<div class="generic-content-wrapper">
<div class="contact-photo-wrapper" id="directory-photo-wrapper-{{$entry.id}}" >
<div class="contact-photo" id="directory-photo-{{$entry.id}}" >
<a href="{{$entry.profile_link}}" class="directory-profile-link" id="directory-profile-link-{{$entry.id}}" ><img class="directory-photo-img" src="{{$entry.photo}}" alt="{{$entry.alttext}}" title="{{$entry.alttext}}" /></a>
+{{if $entry.connect}}
+<div class="directory-connect btn btn-default"><a href="{{$entry.connect}}"><i class="icon-plus connect-icon"></i> {{$entry.conn_label}}</a></div>
+{{/if}}
+{{if $entry.ignlink}}
+<div class="directory-ignore btn btn-default"><a href="{{$entry.ignlink}}"> {{$entry.ignore_label}}</a></div>
+{{/if}}
</div>
</div>
-<div class="contact-name" id="directory-name-{{$entry.id}}" ><span onclick="dirdetails('{{$entry.hash}}');" class="fakelink" >{{$entry.name}}</span></div>
-{{if $entry.connect}}
-<div class="directory-connect btn btn-default"><a href="{{$entry.connect}}"><i class="icon-plus connect-icon"></i> {{$entry.conn_label}}</a></div>
+<div class='contact-info'>
+<div class="contact-name" id="directory-name-{{$entry.id}}" ><a href='{{$entry.profile_link}}' >{{$entry.name}}</a>{{if $entry.online}} <i class="icon-asterisk online-now" title="{{$entry.online}}"></i>{{/if}}</div>
+
+{{if $entry.public_forum}}
+<div class="contact-forum">
+{{$entry.forum_label}} @{{$entry.nickname}}+
+</div>
{{/if}}
+
<div class="contact-details">{{$entry.details}}</div>
+{{if $entry.hometown}}
+<div class="directory-hometown">{{$entry.hometown}} </div>
+{{/if}}
+{{if $entry.about}}
+<div class="directory-about">{{$entry.about}} </div>
+{{/if}}
+{{if $entry.homepage}}
+<div class="directory-homepage">{{$entry.homepage}}{{$entry.homepageurl}} </div>
+{{/if}}
+{{if $entry.kw}}
+<div class="directory-keywords">{{$entry.kw}} {{$entry.keywords}}</div>
+{{/if}}
</div>
</div>
diff --git a/view/tpl/direntry_large.tpl b/view/tpl/direntry_large.tpl
deleted file mode 100755
index da6ea1a44..000000000
--- a/view/tpl/direntry_large.tpl
+++ /dev/null
@@ -1,43 +0,0 @@
-<div class="directory-popup-item lframe" id="directory-item-{{$id}}" >
-<div class="generic-content-wrapper">
-
-<div class="contact-photo-wrapper" id="directory-photo-wrapper-{{$id}}" >
- <div class="contact-photo dirpopup" id="directory-photo-{{$id}}" >
- <a href="{{$profile_link}}" class="directory-profile-link" id="directory-profile-link-{{$id}}" ><img class="directory-photo-img" style="height:175px; width:175px;" src="{{$photo}}" alt="{{$alttext}}" title="{{$alttext}}" /></a>
- </div>
- <div class="contact-photo dirpopup" id="directory-qr-{{$id}}" >
- <img class="directory-photo-img" style="height:175px; width:175px;" src="photo/qr?f=&qr={{$qrlink}}" alt="QR" title="{{$qrlink}}" />
- </div>
-</div>
-
-<div class="clear"></div>
-
-
-<div class="contact-name" id="directory-name-{{$id}}" >{{$name}}{{if $online}} <i class="icon-asterisk online-now" title="{{$online}}"></i>{{/if}}</div>
-{{if $connect}}
-<div class="directory-connect btn btn-default"><a href="{{$connect}}"><i class="icon-plus connect-icon"></i> {{$conn_label}}</a></div>
-{{/if}}
-
-<div class="contact-webbie">{{$address}}</div>
-
-<div class="contact-details">{{$details}}</div>
-{{if $marital}}
-<div class="directory-marital">{{$marital}} </div>
-{{/if}}
-{{if $sexual}}
-<div class="directory-sexual">{{$sexual}} </div>
-{{/if}}
-{{if $homepage}}
-<div class="directory-homepage">{{$homepage}} </div>
-{{/if}}
-{{if $hometown}}
-<div class="directory-hometown">{{$hometown}} </div>
-{{/if}}
-{{if $about}}
-<div class="directory-about">{{$about}} </div>
-{{/if}}
-{{if $kw}}
-<div class="directory-keywords">{{$kw}} {{$keywords}}</div>
-{{/if}}
-</div>
-</div>
diff --git a/view/tpl/display-head.tpl b/view/tpl/display-head.tpl
index 3d4e7e96a..007d33fe8 100755
--- a/view/tpl/display-head.tpl
+++ b/view/tpl/display-head.tpl
@@ -1,8 +1,8 @@
<script>
$(document).ready(function() {
- $(".comment-edit-wrapper textarea").contact_autocomplete(baseurl+"/acl");
+ $(".comment-edit-wrapper textarea").contact_autocomplete(baseurl+"/acl?f=&n=1");
// make auto-complete work in more places
- $(".wall-item-comment-wrapper textarea").contact_autocomplete(baseurl+"/acl");
+ $(".wall-item-comment-wrapper textarea").contact_autocomplete(baseurl+"/acl?f=&n=1");
});
</script>
diff --git a/view/tpl/edpage_head.tpl b/view/tpl/edpage_head.tpl
deleted file mode 100755
index 890b746bf..000000000
--- a/view/tpl/edpage_head.tpl
+++ /dev/null
@@ -1 +0,0 @@
-<h2>{{$title}}</h2>
diff --git a/view/tpl/event_form.tpl b/view/tpl/event_form.tpl
index bfdf4d0b6..a4717415e 100755
--- a/view/tpl/event_form.tpl
+++ b/view/tpl/event_form.tpl
@@ -1,3 +1,5 @@
+<div class="generic-content-wrapper-styled">
+
<h3>{{$title}}</h3>
<p>
@@ -7,21 +9,26 @@
<form action="{{$post}}" method="post" >
<input type="hidden" name="event_id" value="{{$eid}}" />
+<input type="hidden" name="event_hash" value="{{$event_hash}}" />
<input type="hidden" name="xchan" value="{{$xchan}}" />
<input type="hidden" name="mid" value="{{$mid}}" />
+<div id="event-summary-text">{{$t_text}}</div>
+<input type="text" id="event-summary" name="summary" value="{{$t_orig}}" />
+
<div id="event-start-text">{{$s_text}}</div>
-{{$s_dsel}} {{$s_tsel}}
+{{$s_dsel}}
<div class="clear"></div><br />
-<input type="checkbox" name="nofinish" value="1" id="event-nofinish-checkbox" {{$n_checked}} /> <div id="event-nofinish-text">{{$n_text}}</div>
+<input type="checkbox" name="nofinish" value="1" id="event-nofinish-checkbox" {{$n_checked}} onclick="showHideFinishDate(); return true;" /> <div id="event-nofinish-text">{{$n_text}}</div>
<div id="event-nofinish-break"></div>
-
+<div id="event-finish-wrapper">
<div id="event-finish-text">{{$f_text}}</div>
-{{$f_dsel}} {{$f_tsel}}
+{{$f_dsel}}
+</div>
<div id="event-datetime-break"></div>
@@ -30,8 +37,14 @@
<div id="event-adjust-break"></div>
-<div id="event-summary-text">{{$t_text}}</div>
-<input type="text" id="event-summary" name="summary" value="{{$t_orig}}" />
+
+
+{{if $catsenabled}}
+<div id="event-category-wrap">
+ <input name="category" id="event-category" type="text" placeholder="{{$placeholdercategory}}" value="{{$category}}" class="event-cats" style="display: block;" />
+</div>
+{{/if}}
+
<div id="event-desc-text">{{$d_text}}</div>
@@ -45,10 +58,11 @@
<input type="checkbox" name="share" value="1" id="event-share-checkbox" {{$sh_checked}} /> <div id="event-share-text">{{$sh_text}}</div>
<div id="event-share-break"></div>
-{{$acl}}
+<button id="event-permissions-button" class="btn btn-default btn-xs" data-toggle="modal" data-target="#aclModal" onclick="return false;">{{$permissions}}</button>
+ {{$acl}}
<div class="clear"></div>
<input id="event-submit" type="submit" name="submit" value="{{$submit}}" />
</form>
-
+</div>
diff --git a/view/tpl/event_head.tpl b/view/tpl/event_head.tpl
index 8388187d1..830347555 100755
--- a/view/tpl/event_head.tpl
+++ b/view/tpl/event_head.tpl
@@ -24,10 +24,16 @@
eventClick: function(calEvent, jsEvent, view) {
showEvent(calEvent.id);
},
-
+ loading: function(isLoading, view) {
+ if(!isLoading) {
+ $('td.fc-day').dblclick(function() { window.location.href='/events/new?start='+$(this).data('date'); });
+ }
+ },
+
eventRender: function(event, element, view) {
//console.log(view.name);
if (event.item['author']['xchan_name']==null) return;
+
switch(view.name){
case "month":
element.find(".fc-event-title").html(
@@ -115,10 +121,10 @@
$('#event-share-checkbox').change(function() {
if ($('#event-share-checkbox').is(':checked')) {
- $('#acl-wrapper').show();
+ $('#event-permissions-button').show();
}
else {
- $('#acl-wrapper').hide();
+ $('#event-permissions-button').hide();
}
}).trigger('change');
diff --git a/view/tpl/events-js.tpl b/view/tpl/events-js.tpl
index c87d20529..9812291bf 100755
--- a/view/tpl/events-js.tpl
+++ b/view/tpl/events-js.tpl
@@ -1,6 +1,18 @@
{{$tabs}}
+<div class="generic-content-wrapper-styled">
<h2>{{$title}}</h2>
-<div id="new-event-link"><a href="{{$new_event.0}}" >{{$new_event.1}}</a></div>
+
+<div id="export-event-link"><button class="btn btn-default btn-sm" onclick="exportDate(); return false;" >{{$export.1}}</button></div>
+<div id="new-event-link"><button class="btn btn-default btn-sm" onclick="window.location.href='{{$new_event.0}}'; return false;" >{{$new_event.1}}</button></div>
+
+<script>
+function exportDate() {
+ var moment = $('#events-calendar').fullCalendar('getDate');
+ var sT = 'events/' + moment.getFullYear() + '/' + (moment.getMonth() + 1) + '/export';
+ window.location.href=sT;
+}
+</script>
<div id="events-calendar"></div>
+</div>
diff --git a/view/tpl/failed_updates.tpl b/view/tpl/failed_updates.tpl
index 68c0bcdf2..f53f1f478 100755
--- a/view/tpl/failed_updates.tpl
+++ b/view/tpl/failed_updates.tpl
@@ -1,3 +1,4 @@
+<div class="generic-content-wrapper-styled">
<h2>{{$banner}}</h2>
<div id="failed_updates_desc">{{$desc}}</div>
@@ -14,4 +15,4 @@
<hr />
{{/foreach}}
{{/if}}
-
+</div>
diff --git a/view/tpl/field_acheckbox.tpl b/view/tpl/field_acheckbox.tpl
index 342491ded..816af2a65 100755
--- a/view/tpl/field_acheckbox.tpl
+++ b/view/tpl/field_acheckbox.tpl
@@ -1,12 +1,12 @@
<tr>
<td>
- <label for='id_{{$field.0}}'>{{$field.1}}</label>
+ <label class="mainlabel" for='id_{{$field.0}}'>{{$field.1}}</label>
</td>
<td class="abook-them">
<input type="checkbox" name='them_{{$field.0}}' id='them_id_{{$field.0}}' value="1" disabled="disabled" {{if $field.2}}checked="checked"{{/if}} />
</td>
<td class="abook-me">
- <input type="checkbox" name='{{$field.0}}' id='me_id_{{$field.0}}' value="{{$field.4}}" {{if $field.3}}checked="checked"{{/if}} />
+ <input type="checkbox" name='{{$field.0}}' class='abook-edit-me' id='me_id_{{$field.0}}' value="{{$field.4}}" {{if $field.3}}checked="checked"{{/if}} />
</td>
<td>
{{if $field.5}}<span class="permission-inherited">{{$inherited}}</span> {{/if}}
diff --git a/view/tpl/field_checkbox.tpl b/view/tpl/field_checkbox.tpl
index 51d56f69c..7a2781be0 100755
--- a/view/tpl/field_checkbox.tpl
+++ b/view/tpl/field_checkbox.tpl
@@ -1,5 +1,4 @@
<div class='field checkbox'>
- <label for='id_{{$field.0}}'>{{$field.1}}</label>
- <input type="checkbox" name='{{$field.0}}' id='id_{{$field.0}}' value="1" {{if $field.2}}checked="checked"{{/if}}>
- <span class='field_help'>{{$field.3}}</span>
+ <label class="mainlabel" for='id_{{$field.0}}'>{{$field.1}}</label>
+ <div><input type="checkbox" name='{{$field.0}}' id='id_{{$field.0}}' value="1" {{if $field.2}}checked="checked"{{/if}}><label class="switchlabel" for='id_{{$field.0}}'> <span class="onoffswitch-inner" data-on='{{if $field.4}}{{$field.4.1}}{{/if}}' data-off='{{if $field.4}}{{$field.4.0}}{{/if}}'></span><span class="onoffswitch-switch"></span> </label></div><span class='field_help'>{{$field.3}}</span>
</div>
diff --git a/view/tpl/field_colorinput.tpl b/view/tpl/field_colorinput.tpl
index a68781698..a1e912186 100644
--- a/view/tpl/field_colorinput.tpl
+++ b/view/tpl/field_colorinput.tpl
@@ -1,5 +1,5 @@
<div class='field input color'>
- <label for='id_{{$field.0}}' id='label_{{$field.0}}'>{{$field.1}}</label>
+ <label class="mainlabel" for='id_{{$field.0}}' id='label_{{$field.0}}'>{{$field.1}}</label>
<input class='color' name='{{$field.0}}' id='id_{{$field.0}}' type="text" value="{{$field.2}}">{{if $field.4}} <span class="required">{{$field.4}}</span> {{/if}}
<span id='help_{{$field.0}}' class='field_help'>{{$field.3}}</span>
<div id='end_{{$field.0}}' class='field_end'></div>
diff --git a/view/tpl/field_combobox.tpl b/view/tpl/field_combobox.tpl
index 1f9218954..337c60673 100755
--- a/view/tpl/field_combobox.tpl
+++ b/view/tpl/field_combobox.tpl
@@ -1,5 +1,5 @@
<div class='field combobox'>
- <label for='id_{{$field.0}}' id='id_{{$field.0}}_label'>{{$field.1}}</label>
+ <label class="mainlabel" for='id_{{$field.0}}' id='id_{{$field.0}}_label'>{{$field.1}}</label>
{{* html5 don't work on Chrome, Safari and IE9 see https://github.com/thgreasi/datalist-polyfill
<input id="id_{{$field.0}}" type="text" list="data_{{$field.0}}" >
<datalist id="data_{{$field.0}}" >
diff --git a/view/tpl/field_custom.tpl b/view/tpl/field_custom.tpl
index a6b49f6da..754f5b2f4 100755
--- a/view/tpl/field_custom.tpl
+++ b/view/tpl/field_custom.tpl
@@ -1,5 +1,5 @@
<div class='field custom'>
- <label for='{{$field.0}}'>{{$field.1}}</label>
+ <label class="mainlabel" for='{{$field.0}}'>{{$field.1}}</label>
{{$field.2}}
<span class='field_help'>{{$field.3}}</span>
</div>
diff --git a/view/tpl/field_input.tpl b/view/tpl/field_input.tpl
index a584f95e7..be6e3f047 100755
--- a/view/tpl/field_input.tpl
+++ b/view/tpl/field_input.tpl
@@ -1,5 +1,5 @@
<div class='field input'>
- <label for='id_{{$field.0}}' id='label_{{$field.0}}'>{{$field.1}}</label>
+ <label class="mainlabel" for='id_{{$field.0}}' id='label_{{$field.0}}'>{{$field.1}}</label>
<input name='{{$field.0}}' id='id_{{$field.0}}' type="text" value="{{$field.2}}">{{if $field.4}} <span class="required">{{$field.4}}</span> {{/if}}
<span id='help_{{$field.0}}' class='field_help'>{{$field.3}}</span>
<div id='end_{{$field.0}}' class='field_end'></div>
diff --git a/view/tpl/field_intcheckbox.tpl b/view/tpl/field_intcheckbox.tpl
index d9a8d7289..847783518 100755
--- a/view/tpl/field_intcheckbox.tpl
+++ b/view/tpl/field_intcheckbox.tpl
@@ -1,5 +1,4 @@
<div class='field checkbox'>
- <label for='id_{{$field.0}}'>{{$field.1}}</label>
- <input type="checkbox" name='{{$field.0}}' id='id_{{$field.0}}' value="{{$field.3}}" {{if $field.2}}checked="true"{{/if}}>
- <span class='field_help'>{{$field.4}}</span>
+ <label class="mainlabel" for='id_{{$field.0}}'>{{$field.1}}</label>
+ <div><input type="checkbox" name='{{$field.0}}' id='id_{{$field.0}}' value="{{$field.3}}" {{if $field.2}}checked="checked"{{/if}}><label class="switchlabel" for='id_{{$field.0}}'> <span class="onoffswitch-inner" data-on='{{if $field.5}}{{$field.5.1}}{{/if}}' data-off='{{if $field.5}}{{$field.5.0}}{{/if}}'></span><span class="onoffswitch-switch"></span> </label></div><span class='field_help'>{{$field.4}}</span>
</div>
diff --git a/view/tpl/field_password.tpl b/view/tpl/field_password.tpl
index 23058f8a6..38ecf3d07 100755
--- a/view/tpl/field_password.tpl
+++ b/view/tpl/field_password.tpl
@@ -1,5 +1,5 @@
<div class='field password'>
- <label for='id_{{$field.0}}'>{{$field.1}}</label>
+ <label class="mainlabel" for='id_{{$field.0}}'>{{$field.1}}</label>
<input type='password' name='{{$field.0}}' id='id_{{$field.0}}' value="{{$field.2}}">
<span class='field_help'>{{$field.3}}</span>
</div>
diff --git a/view/tpl/field_radio.tpl b/view/tpl/field_radio.tpl
index 147b6b834..a92324cad 100755
--- a/view/tpl/field_radio.tpl
+++ b/view/tpl/field_radio.tpl
@@ -1,5 +1,5 @@
<div class='field radio'>
- <label for='id_{{$field.0}}_{{$field.2}}'>{{$field.1}}</label>
+ <label class="mainlabel" for='id_{{$field.0}}_{{$field.2}}'>{{$field.1}}</label>
<input type="radio" name='{{$field.0}}' id='id_{{$field.0}}_{{$field.2}}' value="{{$field.2}}" {{if $field.4}}checked="true"{{/if}}>
<span class='field_help'>{{$field.3}}</span>
</div>
diff --git a/view/tpl/field_richtext.tpl b/view/tpl/field_richtext.tpl
index c8639cf10..378e02a62 100755
--- a/view/tpl/field_richtext.tpl
+++ b/view/tpl/field_richtext.tpl
@@ -1,5 +1,5 @@
<div class='field richtext'>
- <label for='id_{{$field.0}}'>{{$field.1}}</label>
+ <label class="mainlabel" for='id_{{$field.0}}'>{{$field.1}}</label>
<textarea name='{{$field.0}}' id='id_{{$field.0}}' class="fieldRichtext">{{$field.2}}</textarea>
<span class='field_help'>{{$field.3}}</span>
</div>
diff --git a/view/tpl/field_select.tpl b/view/tpl/field_select.tpl
index 9aca26e7b..95d1855d6 100755
--- a/view/tpl/field_select.tpl
+++ b/view/tpl/field_select.tpl
@@ -1,5 +1,5 @@
<div class='field select'>
- <label for='id_{{$field.0}}'>{{$field.1}}</label>
+ <label class="mainlabel" for='id_{{$field.0}}'>{{$field.1}}</label>
<select name='{{$field.0}}' id='id_{{$field.0}}'>
{{foreach $field.4 as $opt=>$val}}<option value="{{$opt}}" {{if $opt==$field.2}}selected="selected"{{/if}}>{{$val}}</option>{{/foreach}}
</select>
diff --git a/view/tpl/field_select_disabled.tpl b/view/tpl/field_select_disabled.tpl
index f0090cf98..e241be895 100644
--- a/view/tpl/field_select_disabled.tpl
+++ b/view/tpl/field_select_disabled.tpl
@@ -1,5 +1,5 @@
<div class='field select'>
- <label style="font-weight: normal;" for='id_{{$field.0}}'>{{$field.1}}</label>
+ <label class="mainlabel" style="font-weight: normal;" for='id_{{$field.0}}'>{{$field.1}}</label>
<select disabled="true" name='{{$field.0}}' id='id_{{$field.0}}'>
{{foreach $field.4 as $opt=>$val}}<option value="{{$opt}}" {{if $opt==$field.2}}selected="selected"{{/if}}>{{$val}}</option>{{/foreach}}
</select>
diff --git a/view/tpl/field_select_grouped.tpl b/view/tpl/field_select_grouped.tpl
new file mode 100644
index 000000000..c7fb4f322
--- /dev/null
+++ b/view/tpl/field_select_grouped.tpl
@@ -0,0 +1,12 @@
+ <div class='field select'>
+ <label for='id_{{$field.0}}'>{{$field.1}}</label>
+ <select name='{{$field.0}}' id='id_{{$field.0}}'>
+ {{foreach $field.4 as $group=>$opts}}
+ <optgroup label='{{$group}}'>
+ {{foreach $opts as $opt=>$val}}
+ <option value="{{$opt}}" {{if $opt==$field.2}}selected="selected"{{/if}}>{{$val}}</option>{{/foreach}}
+ {{/foreach}}
+ </optgroup>
+ </select>
+ <span class='field_help'>{{$field.3}}</span>
+ </div>
diff --git a/view/tpl/field_select_raw.tpl b/view/tpl/field_select_raw.tpl
index 861be3201..74d575bd0 100755
--- a/view/tpl/field_select_raw.tpl
+++ b/view/tpl/field_select_raw.tpl
@@ -1,5 +1,5 @@
<div class='field select'>
- <label for='id_{{$field.0}}'>{{$field.1}}</label>
+ <label class="mainlabel" for='id_{{$field.0}}'>{{$field.1}}</label>
<select name='{{$field.0}}' id='id_{{$field.0}}'>
{{$field.4}}
</select>
diff --git a/view/tpl/field_textarea.tpl b/view/tpl/field_textarea.tpl
index b454045c0..dad89a145 100755
--- a/view/tpl/field_textarea.tpl
+++ b/view/tpl/field_textarea.tpl
@@ -1,5 +1,5 @@
<div class='field textarea'>
- <label for='id_{{$field.0}}'>{{$field.1}}</label>
+ <label class="mainlabel" for='id_{{$field.0}}'>{{$field.1}}</label>
<textarea name='{{$field.0}}' id='id_{{$field.0}}' {{if $field.4}}{{$field.4}}{{/if}} >{{$field.2}}</textarea>
<span class='field_help'>{{$field.3}}</span>
</div>
diff --git a/view/tpl/field_themeselect.tpl b/view/tpl/field_themeselect.tpl
index a0e454bf5..120727478 100755
--- a/view/tpl/field_themeselect.tpl
+++ b/view/tpl/field_themeselect.tpl
@@ -1,6 +1,6 @@
<script>$(document).ready(function(){ previewTheme($("#id_{{$field.0}}")[0]); });</script>
<div class='field select'>
- <label for='id_{{$field.0}}'>{{$field.1}}</label>
+ <label class="mainlabel" for='id_{{$field.0}}'>{{$field.1}}</label>
<select name='{{$field.0}}' id='id_{{$field.0}}' {{if $field.5=='preview'}}onchange="previewTheme(this);"{{/if}} >
{{foreach $field.4 as $opt=>$val}}<option value="{{$opt}}" {{if $opt==$field.2}}selected="selected"{{/if}}>{{$val}}</option>{{/foreach}}
</select>
diff --git a/view/tpl/field_yesno.tpl b/view/tpl/field_yesno.tpl
index e36e775c7..f5a909833 100755
--- a/view/tpl/field_yesno.tpl
+++ b/view/tpl/field_yesno.tpl
@@ -1,5 +1,5 @@
<div class='field yesno'>
- <label for='id_{{$field.0}}'>{{$field.1}}</label>
+ <label class="mainlabel" for='id_{{$field.0}}'>{{$field.1}}</label>
<div class='onoff' id="id_{{$field.0}}_onoff">
<input type="hidden" name='{{$field.0}}' id='id_{{$field.0}}' value="{{$field.2}}">
<a href="#" class='off'>
diff --git a/view/tpl/fileas_widget.tpl b/view/tpl/fileas_widget.tpl
index 70d68c56e..a92440cb0 100755
--- a/view/tpl/fileas_widget.tpl
+++ b/view/tpl/fileas_widget.tpl
@@ -2,10 +2,10 @@
<h3>{{$title}}</h3>
<div id="nets-desc">{{$desc}}</div>
- <ul class="fileas-ul">
- <li class="tool"><a href="{{$base}}" class="fileas-link fileas-all{{if $sel_all}} fileas-selected{{/if}}">{{$all}}</a></li>
+ <ul class="nav nav-pills nav-stacked">
+ <li><a href="{{$base}}"{{if $sel_all}} class="fileas-selected"{{/if}}>{{$all}}</a></li>
{{foreach $terms as $term}}
- <li class="tool"><a href="{{$base}}?f=&file={{$term.name}}" class="fileas-link{{if $term.selected}} fileas-selected{{/if}}">{{$term.name}}</a></li>
+ <li><a href="{{$base}}?f=&file={{$term.name}}"{{if $term.selected}} class="fileas-selected"{{/if}}>{{$term.name}}</a></li>
{{/foreach}}
</ul>
diff --git a/view/tpl/generic_links_widget.tpl b/view/tpl/generic_links_widget.tpl
index 5ae52aa8a..d7c234a84 100755
--- a/view/tpl/generic_links_widget.tpl
+++ b/view/tpl/generic_links_widget.tpl
@@ -2,9 +2,9 @@
{{if $title}}<h3>{{$title}}</h3>{{/if}}
{{if $desc}}<div class="desc">{{$desc}}</div>{{/if}}
- <ul>
+ <ul class="nav nav-pills nav-stacked">
{{foreach $items as $item}}
- <li class="tool"><a href="{{$item.url}}" class="{{if $item.selected}}active{{/if}}">{{$item.label}}</a></li>
+ <li><a href="{{$item.url}}" class="{{if $item.selected}}active{{/if}}">{{$item.label}}</a></li>
{{/foreach}}
</ul>
diff --git a/view/tpl/group_side.tpl b/view/tpl/group_side.tpl
index 8c5d3927d..4afe1286f 100755
--- a/view/tpl/group_side.tpl
+++ b/view/tpl/group_side.tpl
@@ -1,31 +1,25 @@
<div class="widget" id="group-sidebar">
-<h3>{{$title}}</h3>
-
-
-<div id="sidebar-group-list">
- <ul id="sidebar-group-ul">
- {{foreach $groups as $group}}
- <li class="sidebar-group-li">
+ <h3>{{$title}}</h3>
+ <div>
+ <ul class="nav nav-pills nav-stacked">
+ {{foreach $groups as $group}}
+ <li>
{{if $group.cid}}
- <input type="checkbox"
- class="{{if $group.selected}}ticked{{else}}unticked {{/if}} action"
- onclick="contactgroupChangeMember('{{$group.id}}','{{$group.cid}}');return true;"
- {{if $group.ismember}}checked="checked"{{/if}}
- />
- {{/if}}
+ <a class="pull-right group-edit-tool fakelink" onclick="contactgroupChangeMember('{{$group.id}}','{{$group.enc_cid}}'); return true;"/>
+ <i id="group-{{$group.id}}" class="{{if $group.ismember}}icon-check{{else}}icon-check-empty{{/if}}"></i>
+ </a>
+ {{/if}}
{{if $group.edit}}
- <a class="groupsideedit" href="{{$group.edit.href}}" title="{{$edittext}}"><i id="edit-sidebar-group-element-{{$group.id}}" class="group-edit-icon iconspacer icon-pencil"></i></a>
+ <a class="pull-right group-edit-tool" href="{{$group.edit.href}}" title="{{$edittext}}"><i class="group-edit-icon icon-pencil"></i></a>
{{/if}}
- <span class="sidebar-group-name"><a id="sidebar-group-element-{{$group.id}}" class="sidebar-group-element {{if $group.selected}}group-selected{{/if}}" href="{{$group.href}}">{{$group.text}}</a></span>
+ <a{{if $group.selected}} class="group-selected"{{/if}} href="{{$group.href}}">{{$group.text}}</a>
</li>
- {{/foreach}}
- </ul>
-</div>
-
- <div id="sidebar-new-group">
- <a href="group/new">{{$createtext}}</a>
- </div>
-
+ {{/foreach}}
+ <li>
+ <a href="group/new">{{$createtext}}</a>
+ </li>
+ </ul>
+ </div>
</div>
diff --git a/view/tpl/head.tpl b/view/tpl/head.tpl
index b90bf8b89..8a32bd7f6 100755
--- a/view/tpl/head.tpl
+++ b/view/tpl/head.tpl
@@ -1,6 +1,6 @@
<meta http-equiv="Content-Type" content="text/html;charset=utf-8" />
<base href="{{$baseurl}}/" />
-<meta name="viewport" content="width=device-width, height=device-height, initial-scale=1, user-scalable=0" />
+<meta name="viewport" content="width=device-width, height=device-height, initial-scale=1, user-scalable={{$user_scalable}}" />
<meta name="generator" content="{{$generator}}" />
<!--[if IE]>
@@ -17,7 +17,7 @@
<link rel="search"
href="{{$baseurl}}/opensearch"
type="application/opensearchdescription+xml"
- title="Search in Red" />
+ title="Search in the Red Matrix" />
<script>
@@ -25,6 +25,9 @@
var updateInterval = {{$update_interval}};
var localUser = {{if $local_user}}{{$local_user}}{{else}}false{{/if}};
var zid = {{if $zid}}'{{$zid}}'{{else}}null{{/if}};
+ var justifiedGalleryActive = false;
+ {{if $channel_hash}}var channelHash = '{{$channel_hash}}';{{/if}}
+ {{if $channel_id}}var channelId = '{{$channel_id}}';{{/if}}{{* Used in e.g. autocomplete *}}
</script>
diff --git a/view/tpl/hide_comments.tpl b/view/tpl/hide_comments.tpl
deleted file mode 100755
index f4ed9c552..000000000
--- a/view/tpl/hide_comments.tpl
+++ /dev/null
@@ -1,4 +0,0 @@
-<div class="hide-comments-outer">
-<span id="hide-comments-total-{{$id}}" class="hide-comments-total">{{$num_comments}}</span> <span id="hide-comments-{{$id}}" class="hide-comments fakelink" onclick="showHideComments({{$id}});">{{$hide_text}}</span>
-</div>
-<div id="collapsed-comments-{{$id}}" class="collapsed-comments" style="display: {{$display}};">
diff --git a/view/tpl/install_db.tpl b/view/tpl/install_db.tpl
index 3968d2a54..1a58de129 100755
--- a/view/tpl/install_db.tpl
+++ b/view/tpl/install_db.tpl
@@ -22,7 +22,7 @@
{{include file="field_input.tpl" field=$dbuser}}
{{include file="field_password.tpl" field=$dbpass}}
{{include file="field_input.tpl" field=$dbdata}}
-
+{{include file="field_select.tpl" field=$dbtype}}
<input id="install-submit" type="submit" name="submit" value="{{$submit}}" />
diff --git a/view/tpl/install_settings.tpl b/view/tpl/install_settings.tpl
index d6fc66c87..62dcbb8b3 100755
--- a/view/tpl/install_settings.tpl
+++ b/view/tpl/install_settings.tpl
@@ -14,12 +14,13 @@
<input type="hidden" name="dbuser" value="{{$dbuser}}" />
<input type="hidden" name="dbpass" value="{{$dbpass}}" />
<input type="hidden" name="dbdata" value="{{$dbdata}}" />
+<input type="hidden" name="dbtype" value="{{$dbtype}}" />
<input type="hidden" name="pass" value="4" />
{{include file="field_input.tpl" field=$adminmail}}
{{include file="field_input.tpl" field=$siteurl}}
-{{$timezone}}
+{{include file="field_select_grouped.tpl" field=$timezone}}
<input id="install-submit" type="submit" name="submit" value="{{$submit}}" />
diff --git a/view/tpl/intros.tpl b/view/tpl/intros.tpl
deleted file mode 100755
index a4aed3bb8..000000000
--- a/view/tpl/intros.tpl
+++ /dev/null
@@ -1,17 +0,0 @@
-<div class="intro-wrapper" id="intro-{{$contact_id}}" >
-
-<div class="intro-fullname" id="intro-fullname-{{$contact_id}}" >{{$fullname}}</div>
-<a class="intro-url-link" id="intro-url-link-{{$contact_id}}" href="{{$url}}" ><img id="photo-{{$contact_id}}" class="intro-photo" src="{{$photo}}" width="175" height=175" title="{{$fullname}}" alt="{{$fullname}}" /></a>
-<div class="intro-wrapper-end" id="intro-wrapper-end-{{$contact_id}}"></div>
-<form class="intro-form" action="intro" method="post">
-<input class="intro-submit-ignore" type="submit" name="submit" value="{{$ignore}}" />
-<input class="intro-submit-block" type="submit" name="submit" value="{{$block}}" />
-<input class="intro-submit-discard" type="submit" name="submit" value="{{$discard}}" />
-{{include file="field_checkbox.tpl" field=$hidden}}
-{{* {{include file="field_checkbox.tpl" field=$activity}} *}}
-<input type="hidden" name="contact_id" value="{{$contact_id}}" >
-
-<input class="intro-submit-approve" type="submit" name="submit" value="{{$approve}}" />
-</form>
-</div>
-<div class="intro-end"></div>
diff --git a/view/tpl/intros_header.tpl b/view/tpl/intros_header.tpl
deleted file mode 100755
index 15096c7f8..000000000
--- a/view/tpl/intros_header.tpl
+++ /dev/null
@@ -1 +0,0 @@
-<h3>{{$title}}</h3>
diff --git a/view/tpl/jot-header.tpl b/view/tpl/jot-header.tpl
index abf446ba9..8d26fc653 100755
--- a/view/tpl/jot-header.tpl
+++ b/view/tpl/jot-header.tpl
@@ -10,7 +10,10 @@ function initEditor(cb){
if(plaintext == 'none') {
$("#profile-jot-text-loading").spin(false).hide();
$("#profile-jot-text").css({ 'height': 200, 'color': '#000' });
- $("#profile-jot-text").contact_autocomplete(baseurl+"/acl");
+ if(typeof channelId === 'undefined')
+ $("#profile-jot-text").contact_autocomplete(baseurl+"/acl");
+ else
+ $("#profile-jot-text").contact_autocomplete(baseurl+"/acl",[channelId]); // Also gives suggestions from current channel's connections
editor = true;
$("a#jot-perms-icon").colorbox({
'inline' : true,
@@ -309,7 +312,7 @@ function enableOnUser(){
function jotClearLocation() {
$('#jot-coord').val('');
- $('#profile-nolocation-wrapper').hide();
+ $('#profile-nolocation-wrapper').attr('disabled', true);
}
diff --git a/view/tpl/jot.tpl b/view/tpl/jot.tpl
index c4fdba0f5..00ef77d93 100755
--- a/view/tpl/jot.tpl
+++ b/view/tpl/jot.tpl
@@ -19,64 +19,72 @@
<span class="channel-id-select-desc">{{$id_seltext}}</span> {{$id_select}}
</div>
{{/if}}
- <div id="jot-title-wrap">
- <input name="title" id="jot-title" type="text" placeholder="{{$placeholdertitle}}" value="{{$title}}" class="jothidden" style="display:none">
+ <div id="jot-title-wrap" class="jothidden" style="display:none">
+ <input name="title" id="jot-title" type="text" placeholder="{{$placeholdertitle}}" value="{{$title}}">
</div>
{{if $catsenabled}}
- <div id="jot-category-wrap">
- <input name="category" id="jot-category" type="text" placeholder="{{$placeholdercategory}}" value="{{$category}}" class="jothidden" style="display:none" />
+ <div id="jot-category-wrap" class="jothidden" style="display:none">
+ <input name="category" id="jot-category" type="text" placeholder="{{$placeholdercategory}}" value="{{$category}}" data-role="tagsinput"/>
</div>
{{/if}}
{{if $webpage}}
- <div id="jot-pagetitle-wrap">
- <input name="pagetitle" id="jot-pagetitle" type="text" placeholder="{{$placeholdpagetitle}}" value="{{$pagetitle}}" class="jothidden" style="display:none" />
+ <div id="jot-pagetitle-wrap" class="jothidden" style="display:none">
+ <input name="pagetitle" id="jot-pagetitle" type="text" placeholder="{{$placeholdpagetitle}}" value="{{$pagetitle}}" />
</div>
{{/if}}
<div id="jot-text-wrap">
<textarea class="profile-jot-text" id="profile-jot-text" name="body" placeholder="{{$share}}">{{$content}}</textarea>
</div>
<div id="profile-jot-submit-wrapper" class="jothidden">
- <div id="profile-jot-submit-left" class="btn-group pull-left">
+ <div id="profile-jot-submit-left" class="btn-toolbar pull-left">
{{if $visitor}}
- <button id="wall-image-upload" class="btn btn-default btn-sm" title="{{$upload}}" >
- <i class="icon-camera jot-icons"></i>
- </button>
- <button id="wall-file-upload" class="btn btn-default btn-sm" title="{{$attach}}" >
- <i id="wall-file-upload" class="icon-paper-clip jot-icons"></i>
- </button>
- <button id="profile-link-wrapper" class="btn btn-default btn-sm" title="{{$weblink}}" ondragenter="linkdropper(event);" ondragover="linkdropper(event);" ondrop="linkdrop(event);" onclick="jotGetLink(); return false;">
- <i id="profile-link" class="icon-link jot-icons"></i>
- </button>
- <button id="profile-video-wrapper" class="btn btn-default btn-sm" title="{{$video}}" onclick="jotVideoURL();return false;">
- <i id="profile-video" class="icon-facetime-video jot-icons"></i>
- </button>
- <button id="profile-audio-wrapper" class="btn btn-default btn-sm" title="{{$audio}}" onclick="jotAudioURL();return false;">
- <i id="profile-audio" class="icon-volume-up jot-icons"></i>
- </button>
- <button id="profile-nolocation-wrapper" class="btn btn-default btn-sm" style="display: none;" title="{{$noloc}}" onclick="jotClearLocation();return false;">
- <i id="profile-nolocation" class="icon-circle-blank jot-icons"></i>
- </button>
- <button id="profile-location-wrapper" class="btn btn-default btn-sm" title="{{$setloc}}" onclick="jotGetLocation();return false;">
- <i id="profile-location" class="icon-globe jot-icons"></i>
- </button>
+ <div class='btn-group'>
+ <button id="wall-image-upload" class="btn btn-default btn-sm" title="{{$upload}}" >
+ <i class="icon-camera jot-icons"></i>
+ </button>
+ <button id="wall-file-upload" class="btn btn-default btn-sm" title="{{$attach}}" >
+ <i id="wall-file-upload-icon" class="icon-paper-clip jot-icons"></i>
+ </button>
+ <button id="profile-link-wrapper" class="btn btn-default btn-sm" title="{{$weblink}}" ondragenter="linkdropper(event);" ondragover="linkdropper(event);" ondrop="linkdrop(event);" onclick="jotGetLink(); return false;">
+ <i id="profile-link" class="icon-link jot-icons"></i>
+ </button>
+ <button id="profile-video-wrapper" class="btn btn-default btn-sm" title="{{$video}}" onclick="jotVideoURL();return false;">
+ <i id="profile-video" class="icon-facetime-video jot-icons"></i>
+ </button>
+ <button id="profile-audio-wrapper" class="btn btn-default btn-sm" title="{{$audio}}" onclick="jotAudioURL();return false;">
+ <i id="profile-audio" class="icon-volume-up jot-icons"></i>
+ </button>
+ </div>
+ <div class='btn-group'>
+ <button id="profile-location-wrapper" class="btn btn-default btn-sm" title="{{$setloc}}" onclick="jotGetLocation();return false;">
+ <i id="profile-location" class="icon-globe jot-icons"></i>
+ </button>
+ {{if $noloc}}
+ <button id="profile-nolocation-wrapper" class="btn btn-default btn-sm" title="{{$noloc}}" onclick="jotClearLocation();return false;" disabled="disabled">
+ <i id="profile-nolocation" class="icon-circle-blank jot-icons"></i>
+ </button>
+ {{/if}}
+ {{else}}
+ <div class='btn-group'>
{{/if}}
{{if $feature_expire}}
- <button id="profile-expire-wrapper" class="btn btn-default btn-sm" title="{{$expires}}" onclick="jotGetExpiry();return false;">
- <i id="profile-expires" class="icon-eraser jot-icons"></i>
- </button>
+ <button id="profile-expire-wrapper" class="btn btn-default btn-sm" title="{{$expires}}" onclick="jotGetExpiry();return false;">
+ <i id="profile-expires" class="icon-eraser jot-icons"></i>
+ </button>
{{/if}}
{{if $feature_encrypt}}
- <button id="profile-encrypt-wrapper" class="btn btn-default btn-sm" title="{{$encrypt}}" onclick="red_encrypt('{{$cipher}}','#profile-jot-text',$('#profile-jot-text').val());return false;">
- <i id="profile-encrypt" class="icon-key jot-icons"></i>
- </button>
+ <button id="profile-encrypt-wrapper" class="btn btn-default btn-sm" title="{{$encrypt}}" onclick="red_encrypt('{{$cipher}}','#profile-jot-text',$('#profile-jot-text').val());return false;">
+ <i id="profile-encrypt" class="icon-key jot-icons"></i>
+ </button>
{{/if}}
+ </div>
</div>
<div id="profile-rotator-wrapper">
<div id="profile-rotator"></div>
</div>
<div id="profile-jot-submit-right" class="btn-group pull-right">
{{if $showacl}}
- <button class="btn btn-default btn-sm" data-toggle="modal" data-target="#aclModal" title="{{$permset}}" onclick="return false;">
+ <button id="dbtn-acl" class="btn btn-default btn-sm" data-toggle="modal" data-target="#aclModal" title="{{$permset}}" onclick="return false;">
<i id="jot-perms-icon" class="icon-{{$lockstate}} jot-icons">{{$bang}}</i>
</button>
{{/if}}
@@ -85,7 +93,7 @@
<i class="icon-eye-open jot-icons" ></i>
</button>
{{/if}}
- <button class="btn btn-primary btn-sm" type="submit" name="submit">{{$share}}</button>
+ <button id="dbtn-submit" class="btn btn-primary btn-sm" type="submit" name="button-submit" >{{$share}}</button>
</div>
<div id="profile-jot-perms-end"></div>
<div id="profile-jot-plugin-wrapper">
@@ -108,12 +116,7 @@
</div>
<!-- <div class="modal-body"> -->
<div class="modal-body form-group" style="width:90%">
- <div class="input-group input-group-sm date" id="datetimepicker1">
- <span class="input-group-addon"><!-- <span class="glyphicon glyphicon-calendar"></span> -->
- <span class="icon-calendar"></span>
- </span>
- <input id="expiration-date" type='text' class="form-control" data-format="YYYY-MM-DD HH:mm" size="20"/>
- </div>
+ <div class='date'><input type='text' placeholder='yyyy-mm-dd HH:MM' name='start_text' id='expiration-date' class="form-control" /></div><script type='text/javascript'>$(function () {var picker = $('#expiration-date').datetimepicker({format:'Y-m-d H:i', minDate: 0 }); })</script>
</div>
<!-- </div> -->
<div class="modal-footer">
diff --git a/view/tpl/jot_geotag.tpl b/view/tpl/jot_geotag.tpl
index 7a398b612..60f128850 100755
--- a/view/tpl/jot_geotag.tpl
+++ b/view/tpl/jot_geotag.tpl
@@ -1,7 +1,7 @@
if(navigator.geolocation) {
navigator.geolocation.getCurrentPosition(function(position) {
$('#jot-coord').val(position.coords.latitude + ' ' + position.coords.longitude);
- $('#profile-nolocation-wrapper').show();
+ $('#profile-nolocation-wrapper').attr('disabled', false);
});
}
diff --git a/view/tpl/js_strings.tpl b/view/tpl/js_strings.tpl
index 515e3107f..eb78c669f 100755
--- a/view/tpl/js_strings.tpl
+++ b/view/tpl/js_strings.tpl
@@ -15,6 +15,7 @@
'passhint' : "{{$passhint}}",
'permschange' : "{{$permschange}}",
'closeAll' : "{{$closeAll}}",
+ 'nothingnew' : "{{$nothingnew}}",
't01' : "{{$t01}}",
't02' : "{{$t02}}",
diff --git a/view/tpl/layoutlist.tpl b/view/tpl/layoutlist.tpl
index 96c692c1c..0a0085497 100644
--- a/view/tpl/layoutlist.tpl
+++ b/view/tpl/layoutlist.tpl
@@ -4,10 +4,10 @@
{{foreach $pages as $key => $items}}
{{foreach $items as $item}}
<div class="page-list-item">
- {{if $edit}}<a href="{{$baseurl}}/{{$item.url}}" title="{{$edit}}"><i class="icon-pencil design-icons design-edit-icon"></i></a> {{/if}}
- {{if $view}}<a href="page/{{$channel}}/{{$item.title}}" title="{{$view}}"><i class="icon-external-link design-icons design-view-icon"></i></a> {{/if}}
- {{if $share}}<a href="layouts/{{$channel}}/share/{{$item.mid}}" title="{{$share}}"><i class="icon-share design-icons"></i></a> {{/if}}
- {{if $preview}}<a href="page/{{$channel}}/{{$item.title}}?iframe=true&width=80%&height=80%" title="{{$preview}}" class="webpage-preview" ><i class="icon-eye-open design-icons design-preview-icon"></i></a> {{/if}}
+ {{if $edit}}<a href="{{$baseurl}}/{{$item.url}}" title="{{$edit}}"><i class="icon-pencil design-icons design-edit-icon btn btn-default"></i></a> {{/if}}
+ {{if $view}}<a href="page/{{$channel}}/{{$item.title}}" title="{{$view}}"><i class="icon-external-link design-icons design-view-icon btn btn-default"></i></a> {{/if}}
+ {{if $share}}<a href="layouts/{{$channel}}/share/{{$item.mid}}" title="{{$share}}"><i class="icon-share design-icons btn btn-default"></i></a> {{/if}}
+ {{*if $preview}}<a href="page/{{$channel}}/{{$item.title}}?iframe=true&width=80%&height=80%" title="{{$preview}}" class="webpage-preview" ><i class="icon-eye-open design-icons design-preview-icon"></i></a> {{/if*}}
{{$item.title}}
</div>
{{/foreach}}
diff --git a/view/tpl/like_noshare.tpl b/view/tpl/like_noshare.tpl
index 60ba14d8c..3ce7eb497 100755
--- a/view/tpl/like_noshare.tpl
+++ b/view/tpl/like_noshare.tpl
@@ -1,5 +1,5 @@
<div class="wall-item-like-buttons" id="wall-item-like-buttons-{{$id}}">
- <i class="icon-thumbs-up-alt item-tool" title="{{$likethis}}" onclick="dolike({{$id}},'like'); return false"></i>
- <i class="icon-thumbs-down-alt item-tool" title="{{$nolike}}" onclick="dolike({{$id}},'dislike'); return false"></i>
+ <i class="icon-thumbs-up-alt item-tool btn btn-default" title="{{$likethis}}" onclick="dolike({{$id}},'like'); return false"></i>
+ <i class="icon-thumbs-down-alt item-tool btn btn-default" title="{{$nolike}}" onclick="dolike({{$id}},'dislike'); return false"></i>
<div id="like-rotator-{{$id}}" class="like-rotator"></div>
</div>
diff --git a/view/tpl/list_things.tpl b/view/tpl/list_things.tpl
deleted file mode 100644
index fb8935d82..000000000
--- a/view/tpl/list_things.tpl
+++ /dev/null
@@ -1,13 +0,0 @@
-{{if $things}}
-{{foreach $things as $key => $items}}
-<b>{{$items.profile}} {{$key}}</b>
-<ul class="profile-thing-list">
-{{foreach $items as $item}}
-<li>{{if $item.img}}<img src="{{$item.img}}" width="100" height="100" alt="{{$item.term}}" />{{/if}}
-<a href="{{$item.url}}" >{{$item.term}}</a>
-</li>
-{{/foreach}}
-</ul>
-<div class="clear"></div>
-{{/foreach}}
-{{/if}}
diff --git a/view/tpl/locmanage.tpl b/view/tpl/locmanage.tpl
new file mode 100644
index 000000000..5a25850a1
--- /dev/null
+++ b/view/tpl/locmanage.tpl
@@ -0,0 +1,26 @@
+<h2>{{$header}}</h2>
+
+<script>
+function primehub(id) {
+ $.post('locs','primary='+id,function(data) { window.location.href=window.location.href; });
+}
+function drophub(id) {
+ $.post('locs','drop='+id,function(data) { window.location.href=window.location.href; });
+}
+</script>
+
+<table>
+<tr><td>{{$loc}}</td><td>{{$mkprm}}</td><td>{{$drop}}</td></tr>
+{{foreach $hubs as $hub}}
+<tr><td>
+{{if $hub.deleted}}<strike>{{/if}}
+{{$hub.hubloc_url}} ({{$hub.hubloc_addr}}){{if $hub.deleted}}</strike>{{/if}}</td>
+<td>
+
+{{if $hub.primary}}<i class="icon-check"></i>{{else}}<button class="btn btn-std"><i class="icon-check-empty" onclick="primehub({{$hub.hubloc_id}}); return false;" ></i></button>{{/if}}
+</td>
+<td>{{if $hub.primary}}{{else}}{{if ! $hub.deleted}}<button class="btn btn-std" onclick="drophub({{$hub.hubloc_id}}); return false;"><i class="icon-remove"></i></button>{{/if}}{{/if}}</td>
+</tr>
+{{/foreach}}
+</table>
+
diff --git a/view/tpl/mail_list.tpl b/view/tpl/mail_list.tpl
index e17a206a0..6b06f6127 100755
--- a/view/tpl/mail_list.tpl
+++ b/view/tpl/mail_list.tpl
@@ -3,6 +3,6 @@
<span class="mail-list">{{$from_name}}</span>
<span class="mail-list {{if $seen}}seen{{else}}unseen{{/if}}"><a href="mail/{{$id}}" class="mail-link">{{$subject}}</a></span>
<span class="mail-list" title="{{$date}}">{{$date}}</span>
- <span class="mail-list mail-list-remove"><a href="message/dropconv/{{$id}}" onclick="return confirmDelete();" title="{{$delete}}" ><i class="icon-remove mail-icons drop-icons"></i></a></span>
+ <span class="mail-list mail-list-remove" class="btn btn-default btn-sm"><a href="message/dropconv/{{$id}}" onclick="return confirmDelete();" title="{{$delete}}" ><i class="icon-remove mail-icons drop-icons"></i></a></span>
<div class="clear">&nbsp;</div>
</div>
diff --git a/view/tpl/main_slider.tpl b/view/tpl/main_slider.tpl
index fbc290df1..c8f3d2e06 100755
--- a/view/tpl/main_slider.tpl
+++ b/view/tpl/main_slider.tpl
@@ -2,8 +2,8 @@
<script>
var old_cmin = 0;
var old_cmax = 99;
- $("#main-range").slider({ from: 0, to: 99, step: 1, scale: ['{{$me}}', '|', '{{$intimate}}', '|', '{{$friends}}', '|', '{{$oldfriends}}', '|', '{{$acquaintances}}', '|', '{{$world}}' ], onstatechange: function(v) {
- var carr = v.split(";");
+ $("#main-range").jRange({ isRange: true, from: 0, to: 99, step: 1, scale: ['{{$me}}', '|', '{{$intimate}}', '|', '{{$friends}}', '|', '{{$oldfriends}}', '|', '{{$acquaintances}}', '|', '{{$world}}' ], width:'100%', showLabels: false, onstatechange: function(v) {
+ var carr = v.split(",");
if(carr[0] != bParam_cmin) {
old_cmin = bParam_cmin;
bParam_cmin = carr[0];
diff --git a/view/tpl/menulist.tpl b/view/tpl/menulist.tpl
index 271bace82..bb862fef0 100644
--- a/view/tpl/menulist.tpl
+++ b/view/tpl/menulist.tpl
@@ -1,3 +1,5 @@
+<div class="generic-content-wrapper-styled">
+
<h1>{{$title}}</h1>
<a href="menu/new" title="{{$hintnew}}">{{$hintnew}}</a>
@@ -7,10 +9,9 @@
{{if $menus }}
<ul id="menulist">
{{foreach $menus as $m }}
-<li><a href="menu/{{$m.menu_id}}" title="{{$hintedit}}"><i class="icon-pencil design-icons design-edit-icon"></i></a> <a href="menu/{{$m.menu_id}}/drop" title={{$hintdrop}}><i class="icon-remove drop-icons design-icons design-remove-icon"></i></a>&nbsp;&nbsp;&nbsp;&nbsp;<a href="mitem/{{$m.menu_id}}/new" title="{{$hintcontent}}">{{$m.menu_name}}</a></li>
+<li><a href="menu/{{$m.menu_id}}" title="{{$hintedit}}"><i class="icon-pencil design-icons design-edit-icon btn btn-default"></i></a> <a href="menu/{{$m.menu_id}}/drop" title="{{$hintdrop}}"><i class="icon-remove drop-icons design-icons design-remove-icon btn btn-default"></i></a>&nbsp;&nbsp;&nbsp;&nbsp;{{if $m.bookmark}}<i class="icon-bookmark" title="{{$bmark}}" ></i>&nbsp;{{/if}}<a href="mitem/{{$m.menu_id}}/new" title="{{$hintcontent}}">{{$m.menu_name}}</a></li>
{{/foreach}}
</ul>
{{/if}}
-
-
+</div>
diff --git a/view/tpl/message_side.tpl b/view/tpl/message_side.tpl
index 4db427fa7..3e32eae14 100755
--- a/view/tpl/message_side.tpl
+++ b/view/tpl/message_side.tpl
@@ -1,11 +1,14 @@
-<div id="message-sidebar" class="widget">
- <div id="message-check"><a href="{{$check.url}}" class="{{if $check.sel}}checkmessage-selected{{/if}}">{{$check.label}}</a> </div>
- <div id="message-new"><a href="{{$new.url}}" class="{{if $new.sel}}newmessage-selected{{/if}}">{{$new.label}}</a> </div>
-
- <ul class="message-ul">
+<div class="widget">
+ <h3>{{$title}}</h3>
+ <ul class="nav nav-pills nav-stacked">
+ <li><a href="{{$check.url}}"{{if $check.sel}} class="checkmessage-selected"{{/if}}>{{$check.label}}</a></li>
+ <li><a href="{{$new.url}}"{{if $new.sel}} class="newmessage-selected"{{/if}}>{{$new.label}}</a></li>
+ </ul>
+ {{if $tabs}}
+ <ul class="nav nav-pills nav-stacked">
{{foreach $tabs as $t}}
- <li class="tool"><a href="{{$t.url}}" class="message-link{{if $t.sel}}message-selected{{/if}}">{{$t.label}}</a></li>
+ <li><a href="{{$t.url}}"{{if $t.sel}} class="message-selected"{{/if}}>{{$t.label}}</a></li>
{{/foreach}}
</ul>
-
+ {{/if}}
</div>
diff --git a/view/tpl/mitemedit.tpl b/view/tpl/mitemedit.tpl
index 482005e44..a18fbb0ef 100644
--- a/view/tpl/mitemedit.tpl
+++ b/view/tpl/mitemedit.tpl
@@ -26,7 +26,7 @@
<div class="mitemedit-submit-wrapper" >
-<input type="submit" name="submit" class="mitemedit-submit" value="{{$submit}}" />
+<input id="dbtn-submit" type="submit" name="submit" class="mitemedit-submit" value="{{$submit}}" />
</div>
</form>
diff --git a/view/tpl/msg-header.tpl b/view/tpl/msg-header.tpl
index b6cff7c74..85fa51b0a 100755
--- a/view/tpl/msg-header.tpl
+++ b/view/tpl/msg-header.tpl
@@ -49,38 +49,38 @@ else
<script>
$(document).ready(function() {
var uploader = new window.AjaxUpload(
- 'prvmail-upload',
+ 'prvmail-upload-wrapper',
{ action: 'wall_upload/{{$nickname}}',
name: 'userfile',
- onSubmit: function(file,ext) { $('#profile-rotator').spin('tiny'); },
+ onSubmit: function(file,ext) { $('#prvmail-rotator').spin('tiny'); },
onComplete: function(file,response) {
- addeditortext(response);
- $('#profile-rotator').spin(false);
+ addmailtext(response);
+ $('#prvmail-rotator').spin(false);
}
}
);
var file_uploader = new window.AjaxUpload(
- 'prvmail-attach',
+ 'prvmail-attach-wrapper',
{ action: 'wall_attach/{{$nickname}}',
name: 'userfile',
- onSubmit: function(file,ext) { $('#profile-rotator').spin('tiny'); },
+ onSubmit: function(file,ext) { $('#prvmail-rotator').spin('tiny'); },
onComplete: function(file,response) {
- addeditortext(response);
- $('#profile-rotator').spin(false);
+ addmailtext(response);
+ $('#prvmail-rotator').spin(false);
}
}
);
});
- function jotGetLink() {
+ function prvmailJotGetLink() {
reply = prompt("{{$linkurl}}");
if(reply && reply.length) {
- $('#profile-rotator').spin('tiny');
+ $('#prvmail-rotator').spin('tiny');
$.get('parse_url?url=' + reply, function(data) {
- addeditortext(response);
- $('#profile-rotator').spin(false);
+ addmailtext(data);
+ $('#prvmail-rotator').spin(false);
});
}
}
@@ -103,15 +103,15 @@ else
event.target.textContent = reply;
event.preventDefault();
if(reply && reply.length) {
- $('#profile-rotator').spin('tiny');
+ $('#prvmail-rotator').spin('tiny');
$.get('parse_url?url=' + reply, function(data) {
- addeditortext(response);
- $('#profile-rotator').spin(false);
+ addmailtext(data);
+ $('#prvmail-rotator').spin(false);
});
}
}
- function addeditortext(data) {
+ function addmailtext(data) {
if(plaintext == 'none') {
var currentText = $("#prvmail-text").val();
$("#prvmail-text").val(currentText + data);
diff --git a/view/tpl/nav.tpl b/view/tpl/nav.tpl
index 0602c72af..4241c0a92 100755
--- a/view/tpl/nav.tpl
+++ b/view/tpl/nav.tpl
@@ -16,19 +16,24 @@
{{if $localuser}}
<ul class="dropdown-menu" role="menu" aria-labelledby="avatar">
{{foreach $nav.usermenu as $usermenu}}
- <li role="presentation"><a href="{{$usermenu.0}}" title="{{$usermenu.3}}" role="menuitem">{{$usermenu.1}}</a></li>
+ <li role="presentation"><a href="{{$usermenu.0}}" title="{{$usermenu.3}}" role="menuitem" id="{{$usermenu.4}}">{{$usermenu.1}}</a></li>
{{/foreach}}
<li role="presentation" class="divider"></li>
- {{if $nav.profiles}}<li role="presentation"><a href="{{$nav.profiles.0}}" title="{{$nav.profiles.3}}" role="menuitem">{{$nav.profiles.1}}</a></li>{{/if}}
- {{if $nav.manage}}<li role="presentation"><a href="{{$nav.manage.0}}" title="{{$nav.manage.3}}" role="menuitem">{{$nav.manage.1}}</a></li>{{/if}}
- {{if $nav.settings}}<li role="presentation"><a href="{{$nav.settings.0}}" title="{{$nav.settings.3}}" role="menuitem">{{$nav.settings.1}}</a></li>{{/if}}
+ {{if $nav.profiles}}<li role="presentation"><a href="{{$nav.profiles.0}}" title="{{$nav.profiles.3}}" role="menuitem" id="{{$nav.profiles.4}}">{{$nav.profiles.1}}</a></li>{{/if}}
+ {{if $nav.settings}}<li role="presentation"><a href="{{$nav.settings.0}}" title="{{$nav.settings.3}}" role="menuitem" id="{{$nav.settings.4}}">{{$nav.settings.1}}</a></li>{{/if}}
+ {{if $nav.manage}}<li role="presentation"><a href="{{$nav.manage.0}}" title="{{$nav.manage.3}}" role="menuitem" id="{{$nav.manage.4}}">{{$nav.manage.1}}</a></li>{{/if}}
+ {{if $nav.channels}}
+ {{foreach $nav.channels as $chan}}
+ <li role="presentation" class="nav-channel-select"><a href="manage/{{$chan.channel_id}}" title="{{$chan.channel_name}}" role="menuitem">{{$chan.channel_name}}</a></li>
+ {{/foreach}}
+ {{/if}}
{{if $nav.admin}}
<li role="presentation" class="divider"></li>
- <li role="presentation"><a href="{{$nav.admin.0}}" title="{{$nav.admin.3}}" role="menuitem">{{$nav.admin.1}}</a></li>
+ <li role="presentation"><a href="{{$nav.admin.0}}" title="{{$nav.admin.3}}" role="menuitem" id="{{$nav.admin.4}}">{{$nav.admin.1}}</a></li>
{{/if}}
{{if $nav.logout}}
<li role="presentation" class="divider"></li>
- <li role="presentation"><a href="{{$nav.logout.0}}" title="{{$nav.logout.3}}" role="menuitem">{{$nav.logout.1}}</a></li>
+ <li role="presentation"><a href="{{$nav.logout.0}}" title="{{$nav.logout.3}}" role="menuitem" id="{{$nav.logout.4}}">{{$nav.logout.1}}</a></li>
{{/if}}
</ul>
{{else}}
@@ -42,21 +47,28 @@
</div>
<div class="collapse navbar-collapse" id="navbar-collapse-1">
<ul class="nav navbar-nav navbar-left">
+ {{if $nav.register}}<li class="{{$nav.register.2}}"><a href="{{$nav.register.0}}" title="{{$nav.register.3}}" id="{{$nav.register.4}}">{{$nav.register.1}}</a></li>{{/if}}
{{if !$userinfo}}
- {{if $nav.lock}}
- <li>
- <a title="{{$nav.lock.3}}" href="{{$nav.lock.0}}"><i class="{{if $nav.locked}}icon-lock{{else}}icon-unlock{{/if}}"></i></a>
- </li>
- {{/if}}
+ {{if $nav.loginmenu}}
+ <li class="{{$nav.loginmenu.0.2}} hidden-xs">
+ <a data-toggle="dropdown" data-target="#" href="{{$nav.loginmenu.0.0}}" title="{{$nav.loginmenu.0.3}}" id="{{$nav.loginmenu.0.4}}">{{$nav.loginmenu.0.1}} <span class="caret" id="loginmenu-caret"></span></a>
+ <ul class="dropdown-menu" role="menu">
+ {{foreach $nav.loginmenu as $loginmenu}}
+ <li role="presentation"><a class="{{$loginmenu.2}}" href="{{$loginmenu.0}}" title="{{$loginmenu.3}}" role="menuitem" id="{{$loginmenu.4}}">{{$loginmenu.1}}</a></li>
+ {{/foreach}}
+ </ul>
+ </li>
+ {{foreach $nav.loginmenu as $loginmenu}}
+ <li role="presentation"><a class="{{$loginmenu.2}} visible-xs" href="{{$loginmenu.0}}" title="{{$loginmenu.3}}" role="menuitem">{{$loginmenu.1}}</a></li>
+ {{/foreach}}
+ {{/if}}
{{/if}}
-
- {{if $nav.login}}<li class="{{$nav.login.2}}"><a href="{{$nav.login.0}}" title="{{$nav.login.3}}" >{{$nav.login.1}}</a><li>{{/if}}
- {{if $nav.alogout}}<li class="{{$nav}}-alogout.2"><a href="{{$nav.alogout.0}}" title="{{$nav.alogout.3}}" >{{$nav.alogout.1}}</a></li>{{/if}}
+ {{if $nav.alogout}}<li class="{{$nav}}-alogout.2"><a href="{{$nav.alogout.0}}" title="{{$nav.alogout.3}}" id="{{$nav.alogout.4}}">{{$nav.alogout.1}}</a></li>{{/if}}
{{if $nav.network}}
<li class="{{$sel.network}} hidden-xs">
- <a href="{{$nav.network.0}}" title="{{$nav.network.3}}" ><i class="icon-th"></i></a>
+ <a href="{{$nav.network.0}}" title="{{$nav.network.3}}" id="{{$nav.network.4}}"><i class="icon-th"></i></a>
<span class="net-update badge dropdown-toggle" data-toggle="dropdown" rel="#nav-network-menu"></span>
<ul id="nav-network-menu" role="menu" class="dropdown-menu" rel="network">
{{* <li id="nav-network-see-all"><a href="{{$nav.network.all.0}}">{{$nav.network.all.1}}</a></li> *}}
@@ -72,7 +84,7 @@
{{if $nav.home}}
<li class="{{$sel.home}} hidden-xs">
- <a class="{{$nav.home.2}}" href="{{$nav.home.0}}" title="{{$nav.home.3}}" ><i class="icon-home"></i></a>
+ <a class="{{$nav.home.2}}" href="{{$nav.home.0}}" title="{{$nav.home.3}}" id="{{$nav.home.4}}"><i class="icon-home"></i></a>
<span class="home-update badge dropdown-toggle" data-toggle="dropdown" rel="#nav-home-menu"></span>
<ul id="nav-home-menu" class="dropdown-menu" rel="home">
{{* <li id="nav-home-see-all"><a href="{{$nav.home.all.0}}">{{$nav.home.all.1}}</a></li> *}}
@@ -86,11 +98,10 @@
</li>
{{/if}}
- {{if $nav.register}}<li class="{{$nav.register.2}}"><a href="{{$nav.register.0}}" title="{{$nav.register.3}}" >{{$nav.register.1}}</a><li>{{/if}}
{{if $nav.messages}}
<li class="{{$sel.messages}} hidden-xs">
- <a class="{{$nav.messages.2}}" href="{{$nav.messages.0}}" title="{{$nav.messages.3}}" ><i class="icon-envelope"></i></a>
+ <a class="{{$nav.messages.2}}" href="{{$nav.messages.0}}" title="{{$nav.messages.3}}" id="{{$nav.messages.4}}"><i class="icon-envelope"></i></a>
<span class="mail-update badge dropdown-toggle" data-toggle="dropdown" rel="#nav-messages-menu"></span>
<ul id="nav-messages-menu" class="dropdown-menu" rel="messages">
<li id="nav-messages-see-all"><a href="{{$nav.messages.all.0}}">{{$nav.messages.all.1}}</a></li>
@@ -106,7 +117,7 @@
{{if $nav.all_events}}
<li class="{{$sel.all_events}} hidden-xs">
- <a class="{{$nav.all_events.2}}" href="{{$nav.all_events.0}}" title="{{$nav.all_events.3}}" ><i class="icon-calendar"></i></a>
+ <a class="{{$nav.all_events.2}}" href="{{$nav.all_events.0}}" title="{{$nav.all_events.3}}" id='{{$nav.all_events.4}}'><i class="icon-calendar"></i></a>
<span class="all_events-update badge dropdown-toggle" data-toggle="dropdown" rel="#nav-all_events-menu"></span>
<ul id="nav-all_events-menu" class="dropdown-menu" rel="all_events">
<li id="nav-all_events-see-all"><a href="{{$nav.all_events.all.0}}">{{$nav.all_events.all.1}}</a></li>
@@ -122,7 +133,7 @@
{{if $nav.intros}}
<li class="{{$sel.intros}} hidden-xs">
- <a class="{{$nav.intros.2}}" href="{{$nav.intros.0}}" title="{{$nav.intros.3}}" ><i class="icon-user"></i></a>
+ <a class="{{$nav.intros.2}}" href="{{$nav.intros.0}}" title="{{$nav.intros.3}}" id="{{$nav.intros.4}}"><i class="icon-user"></i></a>
<span class="intro-update badge dropdown-toggle" data-toggle="dropdown" rel="#nav-intros-menu"></span>
<ul id="nav-intros-menu" class="dropdown-menu" rel="intros">
<li id="nav-intros-see-all"><a href="{{$nav.intros.all.0}}">{{$nav.intros.all.1}}</a></li>
@@ -137,7 +148,7 @@
{{if $nav.notifications}}
<li class="{{$sel.notifications}} hidden-xs">
- <a href="{{$nav.notifications.0}}" title="{{$nav.notifications.1}}"><i class="icon-exclamation"></i></a>
+ <a href="{{$nav.notifications.0}}" title="{{$nav.notifications.1}}" id="{{$nav.notifications.4}}"><i class="icon-exclamation"></i></a>
<span class="notify-update badge dropdown-toggle" data-toggle="dropdown" rel="#nav-notify-menu"></span>
<ul id="nav-notify-menu" class="dropdown-menu" rel="notify">
<li id="nav-notify-see-all"><a href="{{$nav.notifications.all.0}}">{{$nav.notifications.all.1}}</a></li>
@@ -154,28 +165,31 @@
<ul class="nav navbar-nav navbar-right">
<li class="hidden-xs">
<form method="get" action="search" role="search">
- <div id="nav-search-spinner"></div><input class="icon-search" id="nav-search-text" type="text" value="" placeholder="&#xf002;" name="search" title="{{$nav.search.3}}" onclick="this.submit();" />
+ <div id="nav-search-spinner"></div><input class="icon-search" id="nav-search-text" type="text" value="" placeholder="&#xf002; {{$help}}" name="search" title="{{$nav.search.3}}" onclick="this.submit();"/>
</form>
</li>
<li class="visible-xs">
<a href="/search" title="{{$nav.search.3}}"><i class="icon-search"></i></a>
</li>
+ {{if $powered_by}}
+ <div id="powered-by">{{$powered_by}}</div>
+ {{/if}}
{{if $nav.directory}}
<li class="{{$sel.directory}}">
- <a class="{{$nav.directory.2}}" href="{{$nav.directory.0}}" title="{{$nav.directory.3}}"><i class="icon-sitemap"></i></a>
+ <a class="{{$nav.directory.2}}" href="{{$nav.directory.0}}" title="{{$nav.directory.3}}" id="{{$nav.directory.4}}"><i class="icon-sitemap"></i></a>
</li>
{{/if}}
{{if $nav.apps}}
<li class="{{$sel.apps}}">
- <a class="{{$nav.apps.2}}" href="{{$nav.apps.0}}" title="{{$nav.apps.3}}" ><i class="icon-cogs"></i></a>
+ <a class="{{$nav.apps.2}}" href="{{$nav.apps.0}}" title="{{$nav.apps.3}}" id="{{$nav.apps.4}}"><i class="icon-cogs"></i></a>
</li>
{{/if}}
{{if $nav.help}}
<li class="{{$sel.help}}">
- <a class="{{$nav.help.2}}" target="redmatrix-help" href="{{$nav.help.0}}" title="{{$nav.help.3}}" ><i class="icon-question"></i></a>
+ <a class="{{$nav.help.2}}" target="redmatrix-help" href="{{$nav.help.0}}" title="{{$nav.help.3}}" id="{{$nav.help.4}}"><i class="icon-question"></i></a>
</li>
{{/if}}
</ul>
diff --git a/view/tpl/netfriend.tpl b/view/tpl/netfriend.tpl
deleted file mode 100755
index ec6b3b6cc..000000000
--- a/view/tpl/netfriend.tpl
+++ /dev/null
@@ -1,14 +0,0 @@
-<div class="intro-approve-as-friend-desc">{{$approve_as}}</div>
-
-<div class="intro-approve-as-friend-wrapper">
- <label class="intro-approve-as-friend-label" for="intro-approve-as-friend-{{$intro_id}}">{{$as_friend}}</label>
- <input type="radio" name="duplex" id="intro-approve-as-friend-{{$intro_id}}" class="intro-approve-as-friend" {{$friend_selected}} value="1" />
- <div class="intro-approve-friend-break" ></div>
-</div>
-<div class="intro-approve-as-friend-end"></div>
-<div class="intro-approve-as-fan-wrapper">
- <label class="intro-approve-as-fan-label" for="intro-approve-as-fan-{{$intro_id}}">{{$as_fan}}</label>
- <input type="radio" name="duplex" id="intro-approve-as-fan-{{$intro_id}}" class="intro-approve-as-fan" {{$fan_selected}} value="0" />
- <div class="intro-approve-fan-break"></div>
-</div>
-<div class="intro-approve-as-end"></div>
diff --git a/view/tpl/new_channel.tpl b/view/tpl/new_channel.tpl
index 261f965da..ff2011181 100755
--- a/view/tpl/new_channel.tpl
+++ b/view/tpl/new_channel.tpl
@@ -1,11 +1,17 @@
<h2>{{$title}}</h2>
-<form action="new_channel" method="post" id="newchannel-form">
+<form action="new_channel" method="post" id="newchannel-form" class="stylish-select">
<div id="newchannel-desc" class="descriptive-paragraph">{{$desc}}</div>
+ <div id="newchannel-role-help" class="descriptive-paragraph">{{$help_role}}</div>
+ {{include file="field_select_grouped.tpl" field=$role}}
+ <div id="newchannel-role-end" class="newchannel-field-end"></div>
+
+
<label for="newchannel-name" id="label-newchannel-name" class="newchannel-label" >{{$label_name}}</label>
<input type="text" name="name" id="newchannel-name" class="newchannel-input" value="{{$name}}" />
+ <div id="name-spinner"></div>
<div id="newchannel-name-feedback" class="newchannel-feedback"></div>
<div id="newchannel-name-end" class="newchannel-field-end"></div>
@@ -13,6 +19,7 @@
<label for="newchannel-nickname" id="label-newchannel-nickname" class="newchannel-label" >{{$label_nick}}</label>
<input type="text" name="nickname" id="newchannel-nickname" class="newchannel-input" value="{{$nickname}}" />
+ <div id="nick-spinner"></div>
<div id="newchannel-nickname-feedback" class="newchannel-feedback"></div>
<div id="newchannel-nickname-end" class="newchannel-field-end"></div>
diff --git a/view/tpl/nogroup-template.tpl b/view/tpl/nogroup-template.tpl
deleted file mode 100755
index 15094b2d6..000000000
--- a/view/tpl/nogroup-template.tpl
+++ /dev/null
@@ -1,12 +0,0 @@
-<h1>{{$header}}</h1>
-
-{{foreach $contacts as $contact}}
- {{include file="contact_template.tpl"}}
-{{/foreach}}
-<div id="contact-edit-end"></div>
-
-{{$paginate}}
-
-
-
-
diff --git a/view/tpl/notifications.tpl b/view/tpl/notifications.tpl
index ae87c8ec8..0b24da7c3 100755
--- a/view/tpl/notifications.tpl
+++ b/view/tpl/notifications.tpl
@@ -1,7 +1,11 @@
+<div class="generic-content-wrapper-styled">
+
<h1>{{$notif_header}}</h1>
+
{{if $notifications_available}}
-<a href="#" onclick="markRead('notify');">{{$notif_link_mark_seen}}</a>
+<a href="#" onclick="markRead('notify'); setTimeout(function() { window.location.href=window.location.href; },1500); return false;">{{$notif_link_mark_seen}}</a>
{{/if}}
<div class="notif-network-wrapper">
{{$notif_content}}
</div>
+</div>
diff --git a/view/tpl/notifications_comments_item.tpl b/view/tpl/notifications_comments_item.tpl
deleted file mode 100755
index 856955424..000000000
--- a/view/tpl/notifications_comments_item.tpl
+++ /dev/null
@@ -1,3 +0,0 @@
-<div class="notif-item">
- <a href="{{$item_link}}" target="friendica-notifications"><img src="{{$item_image}}" class="notif-image">{{$item_text}} <span class="notif-when">{{$item_when}}</span></a>
-</div>
diff --git a/view/tpl/notifications_dislikes_item.tpl b/view/tpl/notifications_dislikes_item.tpl
deleted file mode 100755
index 856955424..000000000
--- a/view/tpl/notifications_dislikes_item.tpl
+++ /dev/null
@@ -1,3 +0,0 @@
-<div class="notif-item">
- <a href="{{$item_link}}" target="friendica-notifications"><img src="{{$item_image}}" class="notif-image">{{$item_text}} <span class="notif-when">{{$item_when}}</span></a>
-</div>
diff --git a/view/tpl/notifications_friends_item.tpl b/view/tpl/notifications_friends_item.tpl
deleted file mode 100755
index 856955424..000000000
--- a/view/tpl/notifications_friends_item.tpl
+++ /dev/null
@@ -1,3 +0,0 @@
-<div class="notif-item">
- <a href="{{$item_link}}" target="friendica-notifications"><img src="{{$item_image}}" class="notif-image">{{$item_text}} <span class="notif-when">{{$item_when}}</span></a>
-</div>
diff --git a/view/tpl/notifications_likes_item.tpl b/view/tpl/notifications_likes_item.tpl
deleted file mode 100755
index b2ba4024b..000000000
--- a/view/tpl/notifications_likes_item.tpl
+++ /dev/null
@@ -1,3 +0,0 @@
-<div class="notif-item">
- <a href="{{$item_link}}" target="friendica-notification"><img src="{{$item_image}}" class="notif-image">{{$item_text}} <span class="notif-when">{{$item_when}}</span></a>
-</div>
diff --git a/view/tpl/notifications_posts_item.tpl b/view/tpl/notifications_posts_item.tpl
deleted file mode 100755
index 856955424..000000000
--- a/view/tpl/notifications_posts_item.tpl
+++ /dev/null
@@ -1,3 +0,0 @@
-<div class="notif-item">
- <a href="{{$item_link}}" target="friendica-notifications"><img src="{{$item_image}}" class="notif-image">{{$item_text}} <span class="notif-when">{{$item_when}}</span></a>
-</div>
diff --git a/view/tpl/notify.tpl b/view/tpl/notify.tpl
index 856955424..d3c79be82 100755
--- a/view/tpl/notify.tpl
+++ b/view/tpl/notify.tpl
@@ -1,3 +1,3 @@
<div class="notif-item">
- <a href="{{$item_link}}" target="friendica-notifications"><img src="{{$item_image}}" class="notif-image">{{$item_text}} <span class="notif-when">{{$item_when}}</span></a>
+ <a href="{{$item_link}}"><img src="{{$item_image}}" class="notif-image">{{$item_text}} <span class="notif-when">{{$item_when}}</span></a>
</div>
diff --git a/view/tpl/peoplefind.tpl b/view/tpl/peoplefind.tpl
index 55bf1575f..ba71c1e80 100755
--- a/view/tpl/peoplefind.tpl
+++ b/view/tpl/peoplefind.tpl
@@ -1,22 +1,19 @@
<div id="peoplefind-sidebar" class="widget">
<h3>{{$findpeople}}</h3>
- <div class="descriptive-text">{{$desc}}</div>
<form action="directory" method="post" />
- <input class="icon-search" id="side-peoplefind-url" type="text" name="search" size="24" title="{{$hint}}" placeholder="&#xf002;"/>
- <input id="side-peoplefind-submit" class="btn btn-default" type="submit" name="submit" value="{{$findthem}}" />
- <br />
- {{if $advanced_search}}
- <a href="#" onclick="openClose('advanced-people-search-div'); return false;">{{$advanced_search}}</a>
- <div id="advanced-people-search-div" style="display: none;">
- <input class="icon-search" id="side-advanced-peoplefind-url" type="text" name="query" size="24" title="{{$advanced_hint}}" placeholder="&#xf002;"/>
- <input id="side-advanced-peoplefind-submit" class="btn btn-default" type="submit" name="submit" value="{{$find_advanced}}" />
+ <div class="form-group">
+ <div class="input-group">
+ <input class="widget-input" type="text" name="search" title="{{$hint}}{{if $advanced_search}}{{$advanced_hint}}{{/if}}" placeholder="{{$desc}}" />
+ <div class="input-group-btn">
+ <button class="btn btn-default btn-sm" type="submit" name="submit"><i class="icon-search"></i></button>
+ </div>
+ </div>
</div>
- <br />
- {{/if}}
</form>
- {{if $similar}}<a href="match" >{{$similar}}</a><br />{{/if}}
- {{if $loggedin}}<a href="suggest" >{{$suggest}}</a><br />{{/if}}
- <a href="randprof" >{{$random}}</a><br />
- {{if $loggedin}}{{if $inv}}<a href="invite" >{{$inv}}</a>{{/if}}{{/if}}
+ <ul class="nav nav-pills nav-stacked">
+ {{if $similar}}<li><a href="match" >{{$similar}}</a></li>{{/if}}
+ {{if $loggedin}}<li><a href="directory?suggest=1" >{{$suggest}}</a></li>{{/if}}
+ <li><a href="randprof" >{{$random}}</a></li>
+ {{if $loggedin}}{{if $inv}}<li><a href="invite" >{{$inv}}</a></li>{{/if}}{{/if}}
+ </ul>
</div>
-
diff --git a/view/tpl/photo_album.tpl b/view/tpl/photo_album.tpl
index a63bff78c..5506b01f2 100755
--- a/view/tpl/photo_album.tpl
+++ b/view/tpl/photo_album.tpl
@@ -1,7 +1,28 @@
-<div class="photo-album-image-wrapper{{$twist}}" id="photo-album-image-wrapper-{{$id}}">
- <a href="{{$photolink}}" class="photo-album-photo-link" id="photo-album-photo-link-{{$id}}" title="{{$phototitle}}" rel="{{$rel}}">
- <img src="{{$imgsrc}}" alt="{{$imgalt}}" title="{{$phototitle}}" class="photo-album-photo lframe resize" id="photo-album-photo-{{$id}}" />
- <p class='caption'>{{$desc}}</p>
- </a>
+<div class="section-title-wrapper">
+ <div class="pull-right">
+ <a class="btn btn-default btn-xs" href="{{$order.1}}" title="{{$order.0}}"><i class="icon-sort"></i></a>
+ <div class="btn-group btn-group">
+ {{if $album_edit.1}}
+ <i class="icon-pencil btn btn-default btn-xs" title="{{$album_edit.0}}" onclick="openClose('photo-album-edit-wrapper'); closeMenu('photo-upload-form');"></i>
+ {{/if}}
+ {{if $can_post}}
+ <button class="btn btn-xs btn-success btn-xs" title="{{$usage}}" onclick="openClose('photo-upload-form'); closeMenu('photo-album-edit-wrapper');"><i class="icon-upload"></i>&nbsp;{{$upload.0}}</button>
+ {{/if}}
+ </div>
+ </div>
+
+ <h2>{{$album}}</h2>
+
+ <div class="clear"></div>
</div>
-<div class="photo-album-image-wrapper-end"></div>
+{{$upload_form}}
+{{$album_edit.1}}
+<div id="photo-album-contents" class="generic-content-wrapper">
+ {{foreach $photos as $photo}}
+ {{include file="photo_top.tpl"}}
+ {{/foreach}}
+ <div id="page-end"></div>
+</div>
+<div class="photos-end"></div>
+<script>$(document).ready(function() { loadingPage = false; justifyPhotos(); });</script>
+<div id="page-spinner"></div>
diff --git a/view/tpl/photo_albums.tpl b/view/tpl/photo_albums.tpl
index 7ff4a8cc0..de1105bbc 100755
--- a/view/tpl/photo_albums.tpl
+++ b/view/tpl/photo_albums.tpl
@@ -1,15 +1,13 @@
<div id="side-bar-photos-albums" class="widget">
-<h3><a href="{{$baseurl}}/photos/{{$nick}}" title="{{$title}}" >{{$title}}</a></h3>
-{{if $albums}}
-<ul>
-{{foreach $albums as $al}}
-{{if $al.text}}
-<li><a href="{{$baseurl}}/photos/{{$nick}}/album/{{$al.bin2hex}}">{{$al.text}}</a> ({{$al.total}})</li>
-{{/if}}
-{{/foreach}}
-</ul>
-{{/if}}
-{{if $upload}}
-<div id="photo-albums-upload-link"><a href="{{$baseurl}}/photos/{{$nick}}/upload" title="{{$upload}}">{{$upload}}</a></div>
-{{/if}}
+ <h3>{{$title}}</h3>
+ <ul class="nav nav-pills nav-stacked">
+ <li><a href="{{$baseurl}}/photos/{{$nick}}" title="{{$title}}" >Recent Photos</a></li>
+ {{if $albums}}
+ {{foreach $albums as $al}}
+ {{if $al.text}}
+ <li><a href="{{$baseurl}}/photos/{{$nick}}/album/{{$al.bin2hex}}"><span class="badge pull-right">{{$al.total}}</span>{{$al.text}}</a></li>
+ {{/if}}
+ {{/foreach}}
+ {{/if}}
+ </ul>
</div>
diff --git a/view/tpl/photo_item.tpl b/view/tpl/photo_item.tpl
index e7d25fd55..16f9a76c2 100755
--- a/view/tpl/photo_item.tpl
+++ b/view/tpl/photo_item.tpl
@@ -1,22 +1,27 @@
-<div class="wall-item-outside-wrapper{{$indent}}" id="wall-item-outside-wrapper-{{$id}}" >
- <div class="wall-item-photo-wrapper" id="wall-item-photo-wrapper-{{$id}}" >
- <a href="{{$profile_url}}" title="View {{$name}}'s profile" class="wall-item-photo-link" id="wall-item-photo-link-{{$id}}">
- <img src="{{$thumb}}" class="wall-item-photo" id="wall-item-photo-{{$id}}" style="height: 80px; width: 80px;" alt="{{$name}}" /></a>
- </div>
+<div class="wall-item-outside-wrapper {{$indent}}" id="wall-item-outside-wrapper-{{$id}}" >
+ <div class="wall-item-content-wrapper {{$indent}}" id="wall-item-content-wrapper-{{$id}}" style="clear:both;">
+ <div class="wall-item-info" id="wall-item-info-{{$item.id}}" >
+ <div class="wall-item-photo-wrapper" id="wall-item-photo-wrapper-{{$id}}" >
+ <a href="{{$profile_url}}" title="View {{$name}}'s profile" class="wall-item-photo-link" id="wall-item-photo-link-{{$id}}">
+ <img src="{{$thumb}}" class="wall-item-photo" id="wall-item-photo-{{$id}}" style="height: 80px; width: 80px;" alt="{{$name}}" /></a>
+ </div>
+ </div>
+ <div class="wall-item-wrapper" id="wall-item-wrapper-{{$id}}" >
+ <div class="wall-item-author">
+ <a href="{{$profile_url}}" title="View {{$name}}'s profile" class="wall-item-name-link"><span class="wall-item-name" id="wall-item-name-{{$id}}" >{{$name}}</span></a>
+ </div>
+ <div class="wall-item-ago" id="wall-item-ago-{{$id}}">{{$ago}}</div>
+ </div>
+ <div class="wall-item-content" id="wall-item-content-{{$id}}" >
+ <div class="wall-item-title" id="wall-item-title-{{$id}}">{{$title}}</div>
+ <div class="wall-item-body" id="wall-item-body-{{$id}}" >{{$body}}</div>
+ </div>
+ {{$drop}}
+ <div class="wall-item-wrapper-end"></div>
- <div class="wall-item-wrapper" id="wall-item-wrapper-{{$id}}" >
- <a href="{{$profile_url}}" title="View {{$name}}'s profile" class="wall-item-name-link"><span class="wall-item-name" id="wall-item-name-{{$id}}" >{{$name}}</span></a>
- <div class="wall-item-ago" id="wall-item-ago-{{$id}}">{{$ago}}</div>
- </div>
- <div class="wall-item-content" id="wall-item-content-{{$id}}" >
- <div class="wall-item-title" id="wall-item-title-{{$id}}">{{$title}}</div>
- <div class="wall-item-body" id="wall-item-body-{{$id}}" >{{$body}}</div>
- </div>
- {{$drop}}
- <div class="wall-item-wrapper-end"></div>
- <div class="wall-item-comment-separator"></div>
- {{$comment}}
+ {{$comment}}
-<div class="wall-item-outside-wrapper-end{{$indent}}" ></div>
+ <div class="wall-item-outside-wrapper-end{{$indent}}" ></div>
+ </div>
</div>
diff --git a/view/tpl/photo_top.tpl b/view/tpl/photo_top.tpl
index 944928f85..a86aa7f80 100755
--- a/view/tpl/photo_top.tpl
+++ b/view/tpl/photo_top.tpl
@@ -1,7 +1,4 @@
-<div class="photo-top-image-wrapper lframe {{$photo.twist}}" id="photo-top-image-wrapper-{{$photo.id}}">
- <a href="{{$photo.link}}" class="photo-top-photo-link" id="photo-top-photo-link-{{$photo.id}}" title="{{$photo.title}}">
- <img src="{{$photo.src}}" alt="{{$photo.alt}}" title="{{$photo.title}}" class="photo-top-photo" id="photo-top-photo-{{$photo.id}}" />
- </a>
- <div class="photo-top-album-name"><a href="{{$photo.album.link}}" class="photo-top-album-link" title="{{$photo.album.alt}}" >{{$photo.album.name}}</a></div>
-</div>
+<a href="{{$photo.link}}" id="photo-top-photo-link-{{$photo.id}}" title="{{$photo.title}}">
+ <img src="{{$photo.src}}" alt="{{if $photo.album.name}}{{$photo.album.name}}{{elseif $photo.desc}}{{$photo.desc}}{{elseif $photo.alt}}{{$photo.alt}}{{else}}{{$photo.unknown}}{{/if}}" title="{{$photo.title}}" id="photo-top-photo-{{$photo.id}}" />
+</a>
diff --git a/view/tpl/photo_view.tpl b/view/tpl/photo_view.tpl
index 0c16eb362..45a7cd7e5 100755
--- a/view/tpl/photo_view.tpl
+++ b/view/tpl/photo_view.tpl
@@ -1,91 +1,188 @@
<div id="live-photos"></div>
-<h3><a href="{{$album.0}}">{{$album.1}}</a></h3>
-
-<div id="photo-edit-link-wrap">
-{{if $tools}}
-<a id="photo-toprofile-link" href="{{$tools.profile.0}}">{{$tools.profile.1}}</a>
-{{/if}}
-{{if $lock}} | <i class="lockview icon-lock" title="{{$lock}}" onclick="lockview(event,'photo/{{$id}}');"></i> {{/if}}
-</div>
+<div class="generic-content-wrapper">
+
+ <div class="section-title-wrapper">
+ <div class="pull-right">
+
+ {{if $tools}}
+ <a class="btn btn-default btn-xs" title="{{$tools.profile.1}}" href="{{$tools.profile.0}}"><i class="icon-user"></i></a>
+ {{/if}}
+
+ <div class="btn-group btn-group dropdown">
+ {{if $edit}}
+ <i class="icon-pencil btn btn-default btn-xs" title="{{$edit.edit}}" onclick="openClose('photo-edit');"></i>
+ {{/if}}
+ {{if $lock}}
+ <i id="lockview" class="icon-lock btn btn-default btn-xs dropdown-toggle" data-toggle="dropdown" title="{{$lock}}" onclick="lockview(event,{{$id}});" ></i><ul id="panel-{{$id}}" class="lockview-panel dropdown-menu"></ul>
+ {{/if}}
+ </div>
+ <div class="btn-group btn-group">
+ {{if $prevlink}}
+ <a href="{{$prevlink.0}}" class="btn btn-default btn-xs" title="{{$prevlink.1}}"><i class="icon-backward"></i></a>
+ {{/if}}
+ {{if $nextlink}}
+ <a href="{{$nextlink.0}}" class="btn btn-default btn-xs" title="{{$nextlink.1}}"><i class="icon-forward"></i></a>
+ {{/if}}
+ </div>
+ </div>
-{{if $prevlink}}<div id="photo-prev-link"><a href="{{$prevlink.0}}"><i class="icon-backward photo-icons"></i></div>{{/if}}
-<div id="photo-photo"><a href="{{$photo.href}}" title="{{$photo.title}}" onclick="$.colorbox({href: '{{$photo.href}}'}); return false;"><img style="max-width: 100%;" src="{{$photo.src}}"></a></div>
-{{if $nextlink}}<div id="photo-next-link"><a href="{{$nextlink.0}}"><i class="icon-forward photo-icons"></i></a></div>{{/if}}
-<div id="photo-photo-end"></div>
-<div id="photo-caption">{{$desc}}</div>
-{{if $tags}}
-<div id="in-this-photo-text">{{$tag_hdr}}</div>
-{{foreach $tags as $t}}
-<div id="in-this-photo">{{$t.0}}</div>
-{{if $edit}}<div id="tag-remove"><a href="{{$t.1}}">{{$t.2}}</a></div>{{/if}}
-{{/foreach}}
-{{/if}}
+ <h2>{{if $desc}}{{$desc}}{{elseif $filename}}{{$filename}}{{else}}{{$unknown}}{{/if}}</h2>
-{{if $edit}}
-<div id="photo-edit-edit-wrapper" class="fakelink" onclick="openClose('photo-edit-edit');">{{$edit.edit}}</div>
-<div id="photo-edit-edit" style="display: none;">
-<form action="photos/{{$edit.nickname}}/{{$edit.resource_id}}" method="post" id="photo_edit_form">
+ <div class="clear"></div>
- <input type="hidden" name="item_id" value="{{$edit.item_id}}">
+ </div>
+ <div id="photo-edit" class="section-content-tools-wrapper">
+ <form action="photos/{{$edit.nickname}}/{{$edit.resource_id}}" method="post" id="photo_edit_form">
+ <input type="hidden" name="item_id" value="{{$edit.item_id}}" />
+ <div class="form-group">
+ <label id="photo-edit-albumname-label" for="photo-edit-albumname">{{$edit.newalbum_label}}</label>
+ <input id="photo-edit-albumname" class="form-control" type="text" name="albname" value="{{$edit.album}}" placeholder="{{$edit.newalbum_placeholder}}" list="dl-albums" />
+ {{if $edit.albums}}
+ <datalist id="dl-albums">
+ {{foreach $edit.albums as $al}}
+ {{if $al.text}}
+ <option value="{{$al.text}}">
+ {{/if}}
+ {{/foreach}}
+ </datalist>
+ {{/if}}
+ </div>
+ <div class="form-group">
+ <label id="photo-edit-caption-label" for="photo-edit-caption">{{$edit.capt_label}}</label>
+ <input id="photo-edit-caption" class="form-control" type="text" name="desc" value="{{$edit.caption}}" />
+ </div>
+ <div class="form-group">
+ <label id="photo-edit-tags-label" for="photo-edit-newtag">{{$edit.tag_label}}</label>
+ <input name="newtag" id="photo-edit-newtag" class="form-control" title="{{$edit.help_tags}}" type="text" />
+ </div>
+ <div class="form-group">
+ <label class="radio-inline" id="photo-edit-rotate-cw-label" for="photo-edit-rotate-cw"><input id="photo-edit-rotate-cw" type="radio" name="rotate" value="1" />{{$edit.rotatecw}}</label>
+ <label class="radio-inline" id="photo-edit-rotate-ccw-label" for="photo-edit-rotate-ccw"><input id="photo-edit-rotate-ccw" type="radio" name="rotate" value="2" />{{$edit.rotateccw}}</label>
+ </div>
+ {{if $edit.adult_enabled}}
+ <div class="form-group">
+ {{include file="field_checkbox.tpl" field=$edit.adult}}
+ </div>
+ {{/if}}
+
+ {{$edit.aclselect}}
+
+ <div class="form-group pull-left">
+ <button class="btn btn-danger btn-sm" id="photo-edit-delete-button" type="submit" name="delete" value="{{$edit.delete}}" onclick="return confirmDelete();" />{{$edit.delete}}</button>
+ </div>
+ <div class="form-group btn-group pull-right">
+ <button id="dbtn-acl" class="btn btn-default btn-sm" data-toggle="modal" data-target="#aclModal" onclick="return false;">
+ <i id="jot-perms-icon" class="icon-{{$edit.lockstate}}"></i>
+ </button>
+ <button id="dbtn-submit" class="btn btn-primary btn-sm" type="submit" name="submit" >{{$edit.submit}}</button>
+ </div>
+ </form>
+ <div id="photo-edit-end" class="clear"></div>
+ </div>
- <label id="photo-edit-albumname-label" for="photo-edit-albumname">{{$edit.newalbum}}</label>
- <input id="photo-edit-albumname" type="text" size="32" name="albname" value="{{$edit.album}}" list="dl-albums">
-{{if $edit.albums}}
- <datalist id="dl-albums">
- {{foreach $edit.albums as $al}}
- {{if $al.text}}
- <option value="{{$al.text}}">
- {{/if}}
- {{/foreach}}
- </datalist>
-{{/if}}
- <div id="photo-edit-albumname-end"></div>
+ <div id="photo-view-wrapper">
- <label id="photo-edit-caption-label" for="photo-edit-caption">{{$edit.capt_label}}</label>
- <input id="photo-edit-caption" type="text" size="84" name="desc" value="{{$edit.caption}}">
+ <div id="photo-photo"><a href="{{$photo.href}}" title="{{$photo.title}}" onclick="$.colorbox({href: '{{$photo.href}}'}); return false;"><img style="width: 100%;" src="{{$photo.src}}"></a></div>
+ <div id="photo-photo-end" class="clear"></div>
- <div id="photo-edit-caption-end"></div>
+ {{if $tags}}
+ <div class="photo-item-tools-left" id="in-this-photo">
+ <span id="in-this-photo-text">{{$tag_hdr}}</span>
+ {{foreach $tags as $t}}
+ {{$t.0}}{{if $edit}}<span id="tag-remove">&nbsp;<a href="{{$t.1}}" onclick="return confirmDelete();"><i class="icon-remove"></i></a>&nbsp;</span>{{/if}}
+ {{/foreach}}
+ </div>
+ {{/if}}
- <label id="photo-edit-tags-label" for="photo-edit-newtag" >{{$edit.tag_label}}</label>
- <input name="newtag" id="photo-edit-newtag" size="84" title="{{$edit.help_tags}}" type="text">
+ <div class="photo-item-tools">
+ {{if $like_count || $dislike_count}}
+ <div class="photo-item-tools-left pull-left">
+ <div class="{{if $like_count && $dislike_count}}btn-group{{/if}}">
+ {{if $like_count}}
+ <div class="btn-group">
+ <button type="button" class="btn btn-default btn-sm wall-item-like dropdown-toggle" data-toggle="dropdown" id="wall-item-like-{{$id}}">{{$like_count}} {{$like_button_label}}</button>
+ {{if $like_list_part}}
+ <ul class="dropdown-menu" role="menu" aria-labelledby="wall-item-like-{{$id}}">{{foreach $like_list_part as $liker}}<li role="presentation">{{$liker}}</li>{{/foreach}}</ul>
+ {{else}}
+ <ul class="dropdown-menu" role="menu" aria-labelledby="wall-item-like-{{$id}}">{{foreach $like_list as $liker}}<li role="presentation">{{$liker}}</li>{{/foreach}}</ul>
+ {{/if}}
+ </div>
+ {{/if}}
+ {{if $dislike_count}}
+ <div class="btn-group">
+ <button type="button" class="btn btn-default btn-sm wall-item-dislike dropdown-toggle" data-toggle="dropdown" id="wall-item-dislike-{{$id}}">{{$dislike_count}} {{$dislike_button_label}}</button>
+ {{if $dislike_list_part}}
+ <ul class="dropdown-menu" role="menu" aria-labelledby="wall-item-dislike-{{$id}}">{{foreach $dislike_list_part as $disliker}}<li role="presentation">{{$disliker}}</li>{{/foreach}}</ul>
+ {{else}}
+ <ul class="dropdown-menu" role="menu" aria-labelledby="wall-item-dislike-{{$id}}">{{foreach $dislike_list as $disliker}}<li role="presentation">{{$disliker}}</li>{{/foreach}}</ul>
+ {{/if}}
+ </div>
+ {{/if}}
+ </div>
+ {{if $like_list_part}}
+ <div class="modal" id="likeModal-{{$id}}">
+ <div class="modal-dialog">
+ <div class="modal-content">
+ <div class="modal-header">
+ <button type="button" class="close" data-dismiss="modal" aria-hidden="true">&times;</button>
+ <h4 class="modal-title">{{$like_modal_title}}</h4>
+ </div>
+ <div class="modal-body">
+ <ul>{{foreach $like_list as $liker}}<li role="presentation">{{$liker}}</li>{{/foreach}}</ul>
+ </div>
+ <div class="modal-footer clear">
+ <button type="button" class="btn btn-default" data-dismiss="modal">{{$modal_dismiss}}</button>
+ </div>
+ </div><!-- /.modal-content -->
+ </div><!-- /.modal-dialog -->
+ </div><!-- /.modal -->
+ {{/if}}
+ {{if $dislike_list_part}}
+ <div class="modal" id="dislikeModal-{{$id}}">
+ <div class="modal-dialog">
+ <div class="modal-content">
+ <div class="modal-header">
+ <button type="button" class="close" data-dismiss="modal" aria-hidden="true">&times;</button>
+ <h4 class="modal-title">{{$dislike_modal_title}}</h4>
+ </div>
+ <div class="modal-body">
+ <ul>{{foreach $dislike_list as $disliker}}<li role="presentation">{{$disliker}}</li>{{/foreach}}</ul>
+ </div>
+ <div class="modal-footer clear">
+ <button type="button" class="btn btn-default" data-dismiss="modal">{{$modal_dismiss}}</button>
+ </div>
+ </div><!-- /.modal-content -->
+ </div><!-- /.modal-dialog -->
+ </div><!-- /.modal -->
+ {{/if}}
+ </div>
+ </div>
+ {{/if}}
- <div id="photo-edit-tags-end"></div>
- <div id="photo-edit-rotate-wrapper">
- <div id="photo-edit-rotate-label">
- {{$edit.rotatecw}}<br>
- {{$edit.rotateccw}}
+ {{if $likebuttons}}
+ <div class="photo-item-tools-right btn-group pull-right">
+ <button type="button" class="btn btn-default btn-sm" onclick="dolike({{$id}},'like'); return false">
+ <i class="icon-thumbs-up-alt" title="{{$likethis}}"></i>
+ </button>
+ <button type="button" class="btn btn-default btn-sm" onclick="dolike({{$id}},'dislike'); return false">
+ <i class="icon-thumbs-down-alt" title="{{$nolike}}"></i>
+ </button>
</div>
- <input type="radio" name="rotate" value="1"><br>
- <input type="radio" name="rotate" value="2">
+ <div id="like-rotator-{{$id}}" class="photo-like-rotator pull-right"></div>
+ {{/if}}
+ <div class="clear"></div>
</div>
- <div id="photo-edit-rotate-end"></div>
-
- <div id="settings-default-perms" class="settings-default-perms">
- <span id="jot-perms-icon" class="{{$edit.lockstate}}"></span>
- <button class="btn btn-default btn-xs" data-toggle="modal" data-target="#aclModal" onclick="return false;">{{$edit.permissions}}</button>
- {{$edit.aclselect}}
- <div id="settings-default-perms-menu-end"></div>
- </div>
- <br/>
- <div id="settings-default-perms-end"></div>
-
- <input id="photo-edit-submit-button" type="submit" name="submit" value="{{$edit.submit}}">
- <input id="photo-edit-delete-button" type="submit" name="delete" value="{{$edit.delete}}" onclick="return confirmDelete();">
-
- <div id="photo-edit-end"></div>
-</form>
</div>
-{{/if}}
-{{if $likebuttons}}
-<div id="photo-like-div">
- {{$likebuttons}}
- {{$like}}
- {{$dislike}}
+{{$comments}}
+
+{{if $commentbox}}
+<div class="wall-item-comment-wrapper{{if $comments}} wall-item-comment-wrapper-wc{{/if}}" >
+ {{$commentbox}}
</div>
{{/if}}
-{{$comments}}
+<div class="clear"></div>
{{$paginate}}
diff --git a/view/tpl/photos_recent.tpl b/view/tpl/photos_recent.tpl
index 43a22a017..7727abcea 100755
--- a/view/tpl/photos_recent.tpl
+++ b/view/tpl/photos_recent.tpl
@@ -1,11 +1,17 @@
-<h3>{{$title}}</h3>
-{{if $can_post}}
-<a id="photo-top-upload-link" href="{{$upload.1}}">{{$upload.0}}</a>
-{{/if}}
-
-<div class="photos">
-{{foreach $photos as $photo}}
- {{include file="photo_top.tpl"}}
-{{/foreach}}
+<div class="section-title-wrapper">
+ {{if $can_post}}
+ <button class="btn btn-xs btn-success pull-right" title="{{$usage}}" onclick="openClose('photo-upload-form');"><i class="icon-upload"></i>&nbsp;{{$upload.0}}</button>
+ {{/if}}
+ <h2>{{$title}}</h2>
+ <div class="clear"></div>
+</div>
+{{$upload_form}}
+<div id="photo-album-contents" class="generic-content-wrapper">
+ {{foreach $photos as $photo}}
+ {{include file="photo_top.tpl"}}
+ {{/foreach}}
+ <div id="page-end"></div>
</div>
<div class="photos-end"></div>
+<script>$(document).ready(function() { loadingPage = false; justifyPhotos(); });</script>
+<div id="page-spinner"></div>
diff --git a/view/tpl/photos_upload.tpl b/view/tpl/photos_upload.tpl
index 62591c648..6cd7e3eb9 100755
--- a/view/tpl/photos_upload.tpl
+++ b/view/tpl/photos_upload.tpl
@@ -1,41 +1,63 @@
-<h3>{{$pagename}}</h3>
-
-<div id="photos-usage-message" class="usage-message">{{$usage}}</div>
-
-<form action="photos/{{$nickname}}" enctype="multipart/form-data" method="post" name="photos-upload-form" id="photos-upload-form" >
- <input type="hidden" id="photos-upload-source" name="source" value="photos" />
- <div id="photos-upload-new-wrapper" >
- <div id="photos-upload-newalbum-div">
- <label id="photos-upload-newalbum-text" for="photos-upload-newalbum" >{{$newalbum}}</label>
- </div>
- <input id="photos-upload-newalbum" type="text" name="newalbum" />
+<div id="photo-upload-form" class="generic-content-wrapper">
+ <div class="section-content-tools-wrapper">
+ <form action="photos/{{$nickname}}" enctype="multipart/form-data" method="post" name="photos-upload-form" id="photos-upload-form">
+ <input type="hidden" id="photos-upload-source" name="source" value="photos" />
+
+ <div class="form-group">
+ <label for="photos-upload-album">{{$newalbum_label}}</label>
+ <input type="text" class="form-control" id="photos-upload-album" name="newalbum" placeholder="{{$newalbum_placeholder}}" value="{{$selname}}" list="dl-photo-upload">
+ <datalist id="dl-photo-upload">
+ {{foreach $albums as $al}}
+ {{if $al.text}}
+ <option value="{{$al.text}}">
+ {{/if}}
+ {{/foreach}}
+ </datalist>
+ </div>
+
+ {{$aclselect}}
+
+ {{if $default}}
+ <div class="form-group">
+ <input id="photos-upload-choose" type="file" name="userfile" />
+ </div>
+ <div class="pull-right btn-group form-group">
+ <div class="btn-group" data-toggle="buttons">
+ <label class="btn btn-default btn-sm" title="{{$nosharetext}}">
+ <input class="checkbox-inline" id="photos-upload-noshare" type="checkbox" name="not_visible" value="1" /><i class="icon-ban-circle"></i>
+ </label>
+ </div>
+ <div class="btn-group">
+ {{if $lockstate}}
+ <button id="dbtn-acl" class="btn btn-default btn-sm" data-toggle="modal" data-target="#aclModal" onclick="return false;">
+ <i id="jot-perms-icon" class="icon-{{$lockstate}}"></i>
+ </button>
+ {{/if}}
+ <button id="dbtn-submit" class="btn btn-primary btn-sm" type="submit" name="submit" >{{$submit}}</button>
+ </div>
+
+ </div>
+ {{/if}}
+ <div class="clear"></div>
+
+ {{if $uploader}}
+ <div id="photos-upload-perms" class="btn-group pull-right">
+ <div class="btn-group" data-toggle="buttons">
+ <label class="btn btn-default btn-sm" title="{{$nosharetext}}">
+ <input class="checkbox-inline" id="photos-upload-noshare" type="checkbox" name="not_visible" value="1" /><i class="icon-ban-circle"></i>
+ </label>
+ </div>
+ {{if $lockstate}}
+ <button class="btn btn-default btn-sm" data-toggle="modal" data-target="#aclModal" onclick="return false;">
+ <i id="jot-perms-icon" class="icon-{{$lockstate}}"></i>
+ </button>
+ {{/if}}
+ <div class="pull-right">
+ {{$uploader}}
+ </div>
+ </div>
+ {{/if}}
+ </form>
</div>
- <div id="photos-upload-new-end"></div>
- <div id="photos-upload-exist-wrapper">
- <div id="photos-upload-existing-album-text">{{$existalbumtext}}</div>
- {{$albumselect}}
- </div>
- <div id="photos-upload-exist-end"></div>
-
- <div id="photos-upload-noshare-div" class="photos-upload-noshare-div" >
- <input id="photos-upload-noshare" type="checkbox" name="not_visible" value="1" />
- <label id="photos-upload-noshare-text" for="photos-upload-noshare" >{{$nosharetext}}</label>
- </div>
-
-
- <div id="photos-upload-perms" class="photos-upload-perms" >
- <span id="jot-perms-icon" class="icon-{{$lockstate}}" ></span>
- <button class="btn btn-default btn-xs" data-toggle="modal" data-target="#aclModal" onclick="return false;">{{$permissions}}</button>
- </div>
- {{$aclselect}}
- <div id="photos-upload-perms-end"></div>
-
- <div id="photos-upload-spacer"></div>
-
- {{$uploader}}
-
- {{$default}}
-
- <div class="photos-upload-end" ></div>
-</form>
-
+ <div id="photos-upload-end" class="clear"></div>
+</div>
diff --git a/view/tpl/photosajax.tpl b/view/tpl/photosajax.tpl
new file mode 100755
index 000000000..632aab2b3
--- /dev/null
+++ b/view/tpl/photosajax.tpl
@@ -0,0 +1,4 @@
+{{foreach $photos as $photo}}
+ {{include file="photo_top.tpl"}}
+{{/foreach}}
+<script>justifyPhotosAjax()</script>
diff --git a/view/tpl/posted_date_widget.tpl b/view/tpl/posted_date_widget.tpl
index 0867ab392..6298ca0aa 100755
--- a/view/tpl/posted_date_widget.tpl
+++ b/view/tpl/posted_date_widget.tpl
@@ -1,16 +1,46 @@
+<script>
+
+function toggle_posted_date_button() {
+ if($('#posted-date-dropdown').is(':visible')) {
+ $('#posted-date-icon').removeClass('icon-caret-up');
+ $('#posted-date-icon').addClass('icon-caret-down');
+ $('#posted-date-dropdown').hide();
+ }
+ else {
+ $('#posted-date-icon').addClass('icon-caret-up');
+ $('#posted-date-icon').removeClass('icon-caret-down');
+ $('#posted-date-dropdown').show();
+ }
+}
+</script>
+
+
<div id="datebrowse-sidebar" class="widget">
<h3>{{$title}}</h3>
-<script>function dateSubmit(dateurl) { window.location.href = dateurl; } </script>
-<ul id="posted-date-selector">
-{{foreach $dates as $y => $arr}}
-<li id="posted-date-selector-year-{{$y}}" class="fakelink" onclick="openClose('posted-date-selector-{{$y}}');">{{$y}}</li>
-<div id="posted-date-selector-{{$y}}" style="display: none;">
-<ul class="posted-date-selector-months">
-{{foreach $arr as $d}}
-<li class="posted-date-li"><a href="#" onclick="dateSubmit('{{$url}}?f=&dend={{$d.1}}&dbegin={{$d.2}}'); return false;">{{$d.0}}</a></li>
-{{/foreach}}
-</ul>
-</div>
-{{/foreach}}
-</ul>
+ <script>function dateSubmit(dateurl) { window.location.href = dateurl; } </script>
+ <ul id="posted-date-selector" class="nav nav-pills nav-stacked">
+ {{foreach $dates as $y => $arr}}
+ {{if $y == $cutoff_year}}
+ </ul>
+ <div id="posted-date-dropdown" style="display: none;">
+ <ul id="posted-date-selector-drop" class="nav nav-pills nav-stacked">
+ {{/if}}
+ <li id="posted-date-selector-year-{{$y}}">
+ <a href="#" onclick="openClose('posted-date-selector-{{$y}}'); return false;">{{$y}}</a>
+ </li>
+ <div id="posted-date-selector-{{$y}}" style="display: none;">
+ <ul class="posted-date-selector-months nav nav-pills nav-stacked">
+ {{foreach $arr as $d}}
+ <li>
+ <a href="#" onclick="dateSubmit('{{$url}}?f=&dend={{$d.1}}{{if $showend}}&dbegin={{$d.2}}{{/if}}'); return false;">{{$d.0}}</a>
+ </li>
+ {{/foreach}}
+ </ul>
+ </div>
+ {{/foreach}}
+ {{if $cutoff}}
+ </div>
+ <button class="btn btn-default btn-sm" onclick="toggle_posted_date_button(); return false;"><i id="posted-date-icon" class="icon-caret-down"></i></button>
+ {{/if}}
+ </ul>
</div>
diff --git a/view/tpl/profdef_edit.tpl b/view/tpl/profdef_edit.tpl
new file mode 100644
index 000000000..bfe85314d
--- /dev/null
+++ b/view/tpl/profdef_edit.tpl
@@ -0,0 +1,16 @@
+<h3>{{$header}}</h3>
+
+<form action="admin/profs" method="post" >
+
+{{if $id}}
+<input type="hidden" name="id" value="{{$id}}" />
+{{/if}}
+
+{{include file="field_input.tpl" field=$field_name}}
+{{include file="field_input.tpl" field=$field_type}}
+{{include file="field_input.tpl" field=$field_desc}}
+{{include file="field_input.tpl" field=$field_help}}
+
+<input name="submit" type="submit" value="{{$submit}}" />
+
+</form>
diff --git a/view/tpl/profile_advanced.tpl b/view/tpl/profile_advanced.tpl
index 73033fe40..1f99bf1ad 100755
--- a/view/tpl/profile_advanced.tpl
+++ b/view/tpl/profile_advanced.tpl
@@ -1,223 +1,229 @@
<div id="profile-content-wrapper" class="generic-content-wrapper">
-<h2>{{$title}}</h2>
-
-{{if $profile.canlike || $profile.like_count}}
-<div id="profile-like-wrapper">
-{{if $profile.canlike}}
- <button type="button" class="btn btn-default btn-sm" onclick="doprofilelike('profile/' + '{{$profile.profile_guid}}','like'); return false;" title="{{$profile.likethis}}" >
- <i class="icon-thumbs-up-alt" title="{{$profile.likethis}}"></i>
- </button>
-{{/if}}
-
-
-{{if $profile.like_count}}
-<div class="btn-group">
-<button type="button" class="btn btn-default btn-sm dropdown-toggle" data-toggle="dropdown" id="profile-like">{{$profile.like_count}} {{$profile.like_button_label}}</button>
-{{if $profile.likers}}
-<ul class="dropdown-menu" role="menu" aria-labelledby="profile-like">{{foreach $profile.likers as $liker}}<li role="presentation"><a href="{{$liker.url}}">{{$liker.name}}</a></li>{{/foreach}}</ul>
-{{/if}}
-</div>
-{{/if}}
-</div>
-{{/if}}
-
-<dl id="aprofile-fullname" class="aprofile">
- <dt>{{$profile.fullname.0}}</dt>
- <dd>{{$profile.fullname.1}}</dd>
-</dl>
-
-{{if $profile.gender}}
-<dl id="aprofile-gender" class="aprofile">
- <dt>{{$profile.gender.0}}</dt>
- <dd>{{$profile.gender.1}}</dd>
-</dl>
-{{/if}}
-
-{{if $profile.birthday}}
-<dl id="aprofile-birthday" class="aprofile">
- <dt>{{$profile.birthday.0}}</dt>
- <dd>{{$profile.birthday.1}}</dd>
-</dl>
-{{/if}}
-
-{{if $profile.age}}
-<dl id="aprofile-age" class="aprofile">
- <dt>{{$profile.age.0}}</dt>
- <dd>{{$profile.age.1}}</dd>
-</dl>
-{{/if}}
-
-{{if $profile.marital}}
-<dl id="aprofile-marital" class="aprofile">
- <dt><span class="heart">&hearts;</span> {{$profile.marital.0}}</dt>
- <dd>{{$profile.marital.1}}{{if $profile.marital.with}} ({{$profile.marital.with}}){{/if}}{{if $profile.howlong}} {{$profile.howlong}}{{/if}}</dd>
-</dl>
-{{/if}}
-
-{{if $profile.sexual}}
-<dl id="aprofile-sexual" class="aprofile">
- <dt>{{$profile.sexual.0}}</dt>
- <dd>{{$profile.sexual.1}}</dd>
-</dl>
-{{/if}}
-
-{{if $profile.keywords}}
-<dl id="aprofile-tags" class="aprofile">
- <dt>{{$profile.keywords.0}}</dt>
- <dd>{{$profile.keywords.1}}</dd>
-</dl>
-{{/if}}
-
-{{if $profile.homepage}}
-<dl id="aprofile-homepage" class="aprofile">
- <dt>{{$profile.homepage.0}}</dt>
- <dd>{{$profile.homepage.1}}</dd>
-</dl>
-{{/if}}
-
-{{if $profile.hometown}}
-<dl id="aprofile-hometown" class="aprofile">
- <dt>{{$profile.hometown.0}}</dt>
- <dd>{{$profile.hometown.1}}</dd>
-</dl>
-{{/if}}
-
-{{if $profile.politic}}
-<dl id="aprofile-politic" class="aprofile">
- <dt>{{$profile.politic.0}}</dt>
- <dd>{{$profile.politic.1}}</dd>
-</dl>
-{{/if}}
-
-{{if $profile.religion}}
-<dl id="aprofile-religion" class="aprofile">
- <dt>{{$profile.religion.0}}</dt>
- <dd>{{$profile.religion.1}}</dd>
-</dl>
-{{/if}}
-
-{{if $profile.about}}
-<dl id="aprofile-about" class="aprofile">
- <dt>{{$profile.about.0}}</dt>
- <dd>{{$profile.about.1}}</dd>
-</dl>
-{{/if}}
-
-{{if $profile.interest}}
-<dl id="aprofile-interest" class="aprofile">
- <dt>{{$profile.interest.0}}</dt>
- <dd>{{$profile.interest.1}}</dd>
-</dl>
-{{/if}}
-
-{{if $profile.likes}}
-<dl id="aprofile-likes" class="aprofile">
- <dt>{{$profile.likes.0}}</dt>
- <dd>{{$profile.likes.1}}</dd>
-</dl>
-{{/if}}
-
-{{if $profile.dislikes}}
-<dl id="aprofile-dislikes" class="aprofile">
- <dt>{{$profile.dislikes.0}}</dt>
- <dd>{{$profile.dislikes.1}}</dd>
-</dl>
-{{/if}}
-
-{{if $profile.contact}}
-<dl id="aprofile-contact" class="aprofile">
- <dt>{{$profile.contact.0}}</dt>
- <dd>{{$profile.contact.1}}</dd>
-</dl>
-{{/if}}
-
-{{if $profile.channels}}
-<dl id="aprofile-channels" class="aprofile">
- <dt>{{$profile.channels.0}}</dt>
- <dd>{{$profile.channels.1}}</dd>
-</dl>
-{{/if}}
-
-
-{{if $profile.music}}
-<dl id="aprofile-music" class="aprofile">
- <dt>{{$profile.music.0}}</dt>
- <dd>{{$profile.music.1}}</dd>
-</dl>
-{{/if}}
-
-
-{{if $profile.book}}
-<dl id="aprofile-book" class="aprofile">
- <dt>{{$profile.book.0}}</dt>
- <dd>{{$profile.book.1}}</dd>
-</dl>
-{{/if}}
-
-
-{{if $profile.tv}}
-<dl id="aprofile-tv" class="aprofile">
- <dt>{{$profile.tv.0}}</dt>
- <dd>{{$profile.tv.1}}</dd>
-</dl>
-{{/if}}
-
-
-{{if $profile.film}}
-<dl id="aprofile-film" class="aprofile">
- <dt>{{$profile.film.0}}</dt>
- <dd>{{$profile.film.1}}</dd>
-</dl>
-{{/if}}
-
-
-{{if $profile.romance}}
-<dl id="aprofile-romance" class="aprofile">
- <dt>{{$profile.romance.0}}</dt>
- <dd>{{$profile.romance.1}}</dd>
-</dl>
-{{/if}}
-
-
-{{if $profile.work}}
-<dl id="aprofile-work" class="aprofile">
- <dt>{{$profile.work.0}}</dt>
- <dd>{{$profile.work.1}}</dd>
-</dl>
-{{/if}}
-
-{{if $profile.education}}
-<dl id="aprofile-education" class="aprofile">
- <dt>{{$profile.education.0}}</dt>
- <dd>{{$profile.education.1}}</dd>
-</dl>
-{{/if}}
-
-{{if $things}}
-{{foreach $things as $key => $items}}
-<b>{{$profile.fullname.1}} {{$key}}</b>
-<ul class="profile-thing-list">
-{{foreach $items as $item}}
-<li>{{if $item.img}}<img src="{{$item.img}}" width="100" height="100" alt="{{$item.term}}" />{{/if}}
-<a href="{{$item.url}}" >{{$item.term}}</a>
-{{if $profile.canlike}}<br />
-<button type="button" class="btn btn-default btn-sm" onclick="doprofilelike('thing/' + '{{$item.term_hash}}','like'); return false;" title="{{$likethis}}" >
-<i class="icon-thumbs-up-alt" title="{{$likethis}}"></i>
-</button>
-{{/if}}
-{{if $item.like_count}}
-<div class="btn-group">
-<button type="button" class="btn btn-default btn-sm dropdown-toggle" data-toggle="dropdown" id="thing-like-{{$item.term_hash}}">{{$item.like_count}} {{$item.like_label}}</button>
-{{if $item.likes}}
-<ul class="dropdown-menu" role="menu" aria-labelledby="thing-like-{{$item.term_hash}}">{{foreach $item.likes as $liker}}<li role="presentation"><a href="{{$liker.xchan_url}}">{{$liker.xchan_name}}</a></li>{{/foreach}}</ul>
-{{/if}}
-</div>
-{{/if}}
-</li>
-{{/foreach}}
-</ul>
-<div class="clear"></div>
-{{/foreach}}
-{{/if}}
-
+ <div class="section-title-wrapper">
+ <div class="pull-right dropdown">
+ {{if $profile.like_count}}
+ <button type="button" class="btn btn-default btn-xs dropdown-toggle" data-toggle="dropdown" id="profile-like">{{$profile.like_count}} {{$profile.like_button_label}}</button>
+ {{if $profile.likers}}
+ <ul class="dropdown-menu" role="menu" aria-labelledby="profile-like">{{foreach $profile.likers as $liker}}<li role="presentation"><a href="{{$liker.url}}">{{$liker.name}}</a></li>{{/foreach}}</ul>
+ {{/if}}
+ {{/if}}
+ {{if $profile.canlike}}
+ <button type="button" class="btn btn-success btn-xs" onclick="doprofilelike('profile/' + '{{$profile.profile_guid}}','like'); return false;" title="{{$profile.likethis}}" >
+ <i class="icon-thumbs-up-alt" title="{{$profile.likethis}}"></i>
+ </button>
+ {{/if}}
+ </div>
+ <h2>{{$title}}</h2>
+ <div class="clear"></div>
+ </div>
+ <div class="section-content-wrapper">
+ <dl id="aprofile-fullname" class="aprofile">
+ <dt>{{$profile.fullname.0}}</dt>
+ <dd>{{$profile.fullname.1}}</dd>
+ </dl>
+
+ {{if $profile.gender}}
+ <dl id="aprofile-gender" class="aprofile">
+ <dt>{{$profile.gender.0}}</dt>
+ <dd>{{$profile.gender.1}}</dd>
+ </dl>
+ {{/if}}
+
+ {{if $profile.birthday}}
+ <dl id="aprofile-birthday" class="aprofile">
+ <dt>{{$profile.birthday.0}}</dt>
+ <dd>{{$profile.birthday.1}}</dd>
+ </dl>
+ {{/if}}
+
+ {{if $profile.age}}
+ <dl id="aprofile-age" class="aprofile">
+ <dt>{{$profile.age.0}}</dt>
+ <dd>{{$profile.age.1}}</dd>
+ </dl>
+ {{/if}}
+
+ {{if $profile.marital}}
+ <dl id="aprofile-marital" class="aprofile">
+ <dt><span class="heart">&hearts;</span> {{$profile.marital.0}}</dt>
+ <dd>{{$profile.marital.1}}{{if $profile.marital.with}} ({{$profile.marital.with}}){{/if}}{{if $profile.howlong}} {{$profile.howlong}}{{/if}}</dd>
+ </dl>
+ {{/if}}
+
+ {{if $profile.sexual}}
+ <dl id="aprofile-sexual" class="aprofile">
+ <dt>{{$profile.sexual.0}}</dt>
+ <dd>{{$profile.sexual.1}}</dd>
+ </dl>
+ {{/if}}
+
+ {{if $profile.keywords}}
+ <dl id="aprofile-tags" class="aprofile">
+ <dt>{{$profile.keywords.0}}</dt>
+ <dd>{{$profile.keywords.1}}</dd>
+ </dl>
+ {{/if}}
+
+ {{if $profile.homepage}}
+ <dl id="aprofile-homepage" class="aprofile">
+ <dt>{{$profile.homepage.0}}</dt>
+ <dd>{{$profile.homepage.1}}</dd>
+ </dl>
+ {{/if}}
+
+ {{if $profile.hometown}}
+ <dl id="aprofile-hometown" class="aprofile">
+ <dt>{{$profile.hometown.0}}</dt>
+ <dd>{{$profile.hometown.1}}</dd>
+ </dl>
+ {{/if}}
+
+ {{if $profile.politic}}
+ <dl id="aprofile-politic" class="aprofile">
+ <dt>{{$profile.politic.0}}</dt>
+ <dd>{{$profile.politic.1}}</dd>
+ </dl>
+ {{/if}}
+
+ {{if $profile.religion}}
+ <dl id="aprofile-religion" class="aprofile">
+ <dt>{{$profile.religion.0}}</dt>
+ <dd>{{$profile.religion.1}}</dd>
+ </dl>
+ {{/if}}
+
+ {{if $profile.about}}
+ <dl id="aprofile-about" class="aprofile">
+ <dt>{{$profile.about.0}}</dt>
+ <dd>{{$profile.about.1}}</dd>
+ </dl>
+ {{/if}}
+
+ {{if $profile.interest}}
+ <dl id="aprofile-interest" class="aprofile">
+ <dt>{{$profile.interest.0}}</dt>
+ <dd>{{$profile.interest.1}}</dd>
+ </dl>
+ {{/if}}
+
+ {{if $profile.likes}}
+ <dl id="aprofile-likes" class="aprofile">
+ <dt>{{$profile.likes.0}}</dt>
+ <dd>{{$profile.likes.1}}</dd>
+ </dl>
+ {{/if}}
+
+ {{if $profile.dislikes}}
+ <dl id="aprofile-dislikes" class="aprofile">
+ <dt>{{$profile.dislikes.0}}</dt>
+ <dd>{{$profile.dislikes.1}}</dd>
+ </dl>
+ {{/if}}
+
+ {{if $profile.contact}}
+ <dl id="aprofile-contact" class="aprofile">
+ <dt>{{$profile.contact.0}}</dt>
+ <dd>{{$profile.contact.1}}</dd>
+ </dl>
+ {{/if}}
+
+ {{if $profile.channels}}
+ <dl id="aprofile-channels" class="aprofile">
+ <dt>{{$profile.channels.0}}</dt>
+ <dd>{{$profile.channels.1}}</dd>
+ </dl>
+ {{/if}}
+
+
+ {{if $profile.music}}
+ <dl id="aprofile-music" class="aprofile">
+ <dt>{{$profile.music.0}}</dt>
+ <dd>{{$profile.music.1}}</dd>
+ </dl>
+ {{/if}}
+
+
+ {{if $profile.book}}
+ <dl id="aprofile-book" class="aprofile">
+ <dt>{{$profile.book.0}}</dt>
+ <dd>{{$profile.book.1}}</dd>
+ </dl>
+ {{/if}}
+
+
+ {{if $profile.tv}}
+ <dl id="aprofile-tv" class="aprofile">
+ <dt>{{$profile.tv.0}}</dt>
+ <dd>{{$profile.tv.1}}</dd>
+ </dl>
+ {{/if}}
+
+
+ {{if $profile.film}}
+ <dl id="aprofile-film" class="aprofile">
+ <dt>{{$profile.film.0}}</dt>
+ <dd>{{$profile.film.1}}</dd>
+ </dl>
+ {{/if}}
+
+
+ {{if $profile.romance}}
+ <dl id="aprofile-romance" class="aprofile">
+ <dt>{{$profile.romance.0}}</dt>
+ <dd>{{$profile.romance.1}}</dd>
+ </dl>
+ {{/if}}
+
+
+ {{if $profile.work}}
+ <dl id="aprofile-work" class="aprofile">
+ <dt>{{$profile.work.0}}</dt>
+ <dd>{{$profile.work.1}}</dd>
+ </dl>
+ {{/if}}
+
+ {{if $profile.education}}
+ <dl id="aprofile-education" class="aprofile">
+ <dt>{{$profile.education.0}}</dt>
+ <dd>{{$profile.education.1}}</dd>
+ </dl>
+ {{/if}}
+
+ {{foreach $profile.extra_fields as $f}}
+ {{if $profile.$f}}
+ <dl id="aprofile-{{$f}}" class="aprofile">
+ <dt>{{$profile.$f.0}}</dt>
+ <dd>{{$profile.$f.1}}</dd>
+ </dl>
+ {{/if}}
+ {{/foreach}}
+
+
+ {{if $things}}
+ {{foreach $things as $key => $items}}
+ <b>{{$profile.fullname.1}} {{$key}}</b>
+ <ul class="profile-thing-list">
+ {{foreach $items as $item}}
+ <li>{{if $item.img}}<img src="{{$item.img}}" width="100" height="100" alt="{{$item.term}}" />{{/if}}
+ <a href="{{$item.url}}" >{{$item.term}}</a>
+ {{if $profile.canlike}}<br />
+ <button type="button" class="btn btn-default btn-sm" onclick="doprofilelike('thing/' + '{{$item.term_hash}}','like'); return false;" title="{{$likethis}}" >
+ <i class="icon-thumbs-up-alt" title="{{$likethis}}"></i>
+ </button>
+ {{/if}}
+ {{if $item.like_count}}
+ <div class="btn-group">
+ <button type="button" class="btn btn-default btn-sm dropdown-toggle" data-toggle="dropdown" id="thing-like-{{$item.term_hash}}">{{$item.like_count}} {{$item.like_label}}</button>
+ {{if $item.likes}}
+ <ul class="dropdown-menu" role="menu" aria-labelledby="thing-like-{{$item.term_hash}}">{{foreach $item.likes as $liker}}<li role="presentation"><a href="{{$liker.xchan_url}}">{{$liker.xchan_name}}</a></li>{{/foreach}}</ul>
+ {{/if}}
+ </div>
+ {{/if}}
+ </li>
+ {{/foreach}}
+ </ul>
+ <div class="clear"></div>
+ {{/foreach}}
+ {{/if}}
+ </div>
</div>
diff --git a/view/tpl/profile_edit.tpl b/view/tpl/profile_edit.tpl
index 196b3ac6d..535aa19dd 100755
--- a/view/tpl/profile_edit.tpl
+++ b/view/tpl/profile_edit.tpl
@@ -1,23 +1,27 @@
-{{$default}}
+<div class="generic-content-wrapper-styled">{{if $is_default}}
+<p id="profile-edit-default-desc">{{$default}}</p>
+{{/if}}
<h1>{{$banner}}</h1>
-<div id="profile-edit-links">
-<ul>
-<li><a href="profile_photo" id="profile-photo_upload-link" title="{{$profpic}}">{{$profpic}}</a></li>
-<li><a href="profile/{{$profile_id}}/view" id="profile-edit-view-link" title="{{$viewprof}}">{{$viewprof}}</a></li>
-<li><a href="{{$profile_clone_link}}" id="profile-edit-clone-link" title="{{$cr_prof}}">{{$cl_prof}}</a></li>
-<li></li>
-<li><a href="{{$profile_drop_link}}" id="profile-edit-drop-link" title="{{$del_prof}}" {{$disabled}} >{{$del_prof}}</a></li>
+<form id="profile-edit-form" name="form1" action="profiles/{{$profile_id}}" enctype="multipart/form-data" method="post" >
-</ul>
+<div id="profile-edit-links">
+<span class="btn btn-default"><a href="profile_photo" id="profile-photo_upload-link" title="{{$profpic}}">{{$profpic}}</a></span>
+<span class="btn btn-default"><a href="profile/{{$profile_id}}/view" id="profile-edit-view-link" title="{{$viewprof}}">{{$viewprof}}</a></span>
+{{if ! $is_default}}<span class="btn btn-default"><a href="profperm/{{$profile_id}}" id="profile-edit-view-link" title="{{$editvis}}">{{$editvis}}</a></span>{{/if}}
+{{if $profile_clone_link}}<span class="btn btn-default"><a href="{{$profile_clone_link}}" id="profile-edit-clone-link" title="{{$cr_prof}}">{{$cl_prof}}</a></span>{{/if}}
+{{if $exportable}}<br /><span class="btn btn-default"><a href="profiles/export/{{$profile_id}}" target="_blank">{{$lbl_export}}</a></span>
+<span class="btn btn-default profile-import"><b>{{$lbl_import}}</b> <input type="file" name="userfile" class="profile-import" ></span>
+{{/if}}
+{{if ! $is_default}}<span class="btn btn-danger"><a href="{{$profile_drop_link}}" id="profile-edit-drop-link" title="{{$del_prof}}" onclick="return confirmDelete();" {{$disabled}} >{{$del_prof}}</a></span>{{/if}}
</div>
+
<div id="profile-edit-links-end"></div>
<div id="profile-edit-wrapper" >
-<form id="profile-edit-form" name="form1" action="profiles/{{$profile_id}}" method="post" >
<input type='hidden' name='form_security_token' value='{{$form_security_token}}'>
<div id="profile-edit-profile-name-wrapper" >
@@ -32,19 +36,28 @@
</div>
<div id="profile-edit-name-end"></div>
+
+{{if $fields.pdesc}}
<div id="profile-edit-pdesc-wrapper" >
<label id="profile-edit-pdesc-label" for="profile-edit-pdesc" >{{$lbl_title}} </label>
<input type="text" size="32" name="pdesc" id="profile-edit-pdesc" value="{{$pdesc}}" />
</div>
<div id="profile-edit-pdesc-end"></div>
+{{/if}}
-
+{{if $fields.gender}}
<div id="profile-edit-gender-wrapper" >
<label id="profile-edit-gender-label" for="gender-select" >{{$lbl_gender}} </label>
+{{if $advanced}}
{{$gender}}
+{{else}}
+{{$gender_min}}
+{{/if}}
</div>
<div id="profile-edit-gender-end"></div>
+{{/if}}
+{{if $fields.dob}}
<div id="profile-edit-dob-wrapper" >
<label id="profile-edit-dob-label" for="dob-select" >{{$lbl_bd}} </label>
<div id="profile-edit-dob" >
@@ -52,6 +65,7 @@
</div>
</div>
<div id="profile-edit-dob-end"></div>
+{{/if}}
{{$hide_friends}}
@@ -60,100 +74,124 @@
</div>
<div class="profile-edit-submit-end"></div>
-
+{{if $fields.address}}
<div id="profile-edit-address-wrapper" >
<label id="profile-edit-address-label" for="profile-edit-address" >{{$lbl_address}} </label>
<input type="text" size="32" name="address" id="profile-edit-address" value="{{$address}}" />
</div>
<div id="profile-edit-address-end"></div>
+{{/if}}
+{{if $fields.locality}}
<div id="profile-edit-locality-wrapper" >
<label id="profile-edit-locality-label" for="profile-edit-locality" >{{$lbl_city}} </label>
<input type="text" size="32" name="locality" id="profile-edit-locality" value="{{$locality}}" />
</div>
<div id="profile-edit-locality-end"></div>
+{{/if}}
-
+{{if $fields.postal_code}}
<div id="profile-edit-postal-code-wrapper" >
<label id="profile-edit-postal-code-label" for="profile-edit-postal-code" >{{$lbl_zip}} </label>
<input type="text" size="32" name="postal_code" id="profile-edit-postal-code" value="{{$postal_code}}" />
</div>
<div id="profile-edit-postal-code-end"></div>
+{{/if}}
-
+{{if $fields.region}}
<div id="profile-edit-region-wrapper" >
<label id="profile-edit-region-label" for="profile-edit-region" >{{$lbl_region}} </label>
<input type="text" size="32" name="region" id="profile-edit-region" value="{{$region}}" />
</div>
<div id="profile-edit-region-end"></div>
+{{/if}}
+{{if $fields.country_name}}
<div id="profile-edit-country-name-wrapper" >
<label id="profile-edit-country-name-label" for="profile-edit-country-name" >{{$lbl_country}} </label>
<input type="text" size="32" name="country_name" id="profile-edit-country-name" value="{{$country_name}}" />
</div>
<div id="profile-edit-country-name-end"></div>
+{{/if}}
+{{if $fields.hometown}}
<div id="profile-edit-hometown-wrapper" >
<label id="profile-edit-hometown-label" for="profile-edit-hometown" >{{$lbl_hometown}} </label>
<input type="text" size="32" name="hometown" id="profile-edit-hometown" value="{{$hometown}}" />
</div>
<div id="profile-edit-hometown-end"></div>
+{{/if}}
<div class="profile-edit-submit-wrapper" >
<input type="submit" name="submit" class="profile-edit-submit-button" value="{{$submit}}" />
</div>
<div class="profile-edit-submit-end"></div>
+{{if $fields.marital }}
<div id="profile-edit-marital-wrapper" >
<label id="profile-edit-marital-label" for="profile-edit-marital" >{{$lbl_marital}} </label>
+{{if $advanced}}
{{$marital}}
+{{else}}
+{{$marital_min}}
+{{/if}}
</div>
<div class="clear"></div>
+{{if $fields.with}}
<label id="profile-edit-with-label" for="profile-edit-with" > {{$lbl_with}} </label>
<input type="text" size="32" name="with" id="profile-edit-with" title="{{$lbl_ex1}}" value="{{$with}}" />
<div class="clear"></div>
+{{/if}}
+{{if $fields.howlong}}
<label id="profile-edit-howlong-label" for="profile-edit-howlong" > {{$lbl_howlong}} </label>
<input type="text" size="32" name="howlong" id="profile-edit-howlong" title="{{$lbl_howlong}}" value="{{$howlong}}" />
-
+<div class="clear"></div>
+{{/if}}
<div id="profile-edit-marital-end"></div>
+{{/if}}
-<div id="profile-edit-sexual-wrapper" >
-<label id="profile-edit-sexual-label" for="sexual-select" >{{$lbl_sexual}} </label>
-{{$sexual}}
-</div>
-<div id="profile-edit-sexual-end"></div>
-
-
-
+{{if $fields.homepage}}
<div id="profile-edit-homepage-wrapper" >
<label id="profile-edit-homepage-label" for="profile-edit-homepage" >{{$lbl_homepage}} </label>
<input type="text" size="32" name="homepage" id="profile-edit-homepage" value="{{$homepage}}" />
</div>
<div id="profile-edit-homepage-end"></div>
+{{/if}}
+{{if $fields.sexual}}
+<div id="profile-edit-sexual-wrapper" >
+<label id="profile-edit-sexual-label" for="sexual-select" >{{$lbl_sexual}} </label>
+{{$sexual}}
+</div>
+<div id="profile-edit-sexual-end"></div>
+{{/if}}
+
+{{if $fields.politic}}
<div id="profile-edit-politic-wrapper" >
<label id="profile-edit-politic-label" for="profile-edit-politic" >{{$lbl_politic}} </label>
<input type="text" size="32" name="politic" id="profile-edit-politic" value="{{$politic}}" />
</div>
<div id="profile-edit-politic-end"></div>
+{{/if}}
+{{if $fields.religion}}
<div id="profile-edit-religion-wrapper" >
<label id="profile-edit-religion-label" for="profile-edit-religion" >{{$lbl_religion}} </label>
<input type="text" size="32" name="religion" id="profile-edit-religion" value="{{$religion}}" />
</div>
<div id="profile-edit-religion-end"></div>
+{{/if}}
+{{if $fields.keywords}}
<div id="profile-edit-pubkeywords-wrapper" >
<label id="profile-edit-pubkeywords-label" for="profile-edit-pubkeywords" >{{$lbl_pubkey}} </label>
<input type="text" size="32" name="keywords" id="profile-edit-pubkeywords" title="{{$lbl_ex2}}" value="{{$keywords}}" />
</div><div id="profile-edit-pubkeywords-desc">{{$lbl_pubdsc}}</div>
<div id="profile-edit-pubkeywords-end"></div>
+{{/if}}
-<div class="profile-edit-submit-wrapper" >
-<input type="submit" name="submit" class="profile-edit-submit-button" value="{{$submit}}" />
-</div>
-<div class="profile-edit-submit-end"></div>
+{{if $fields.about}}
<div id="about-jot-wrapper" >
<p id="about-jot-desc" >
{{$lbl_about}}
@@ -163,8 +201,22 @@
</div>
<div id="about-jot-end"></div>
+{{/if}}
+{{if $fields.contact}}
+<div id="contact-jot-wrapper" >
+<p id="contact-jot-desc" >
+{{$lbl_social}}
+</p>
+
+<textarea rows="10" cols="72" id="contact-jot-text" name="contact" >{{$contact}}</textarea>
+
+</div>
+<div id="contact-jot-end"></div>
+{{/if}}
+
+{{if $fields.interest}}
<div id="interest-jot-wrapper" >
<p id="interest-jot-desc" >
{{$lbl_hobbies}}
@@ -174,8 +226,9 @@
</div>
<div id="interest-jot-end"></div>
+{{/if}}
-
+{{if $fields.likes}}
<div id="likes-jot-wrapper" >
<p id="likes-jot-desc" >
{{$lbl_likes}}
@@ -185,8 +238,9 @@
</div>
<div id="likes-jot-end"></div>
+{{/if}}
-
+{{if $fields.dislikes}}
<div id="dislikes-jot-wrapper" >
<p id="dislikes-jot-desc" >
{{$lbl_dislikes}}
@@ -196,18 +250,9 @@
</div>
<div id="dislikes-jot-end"></div>
+{{/if}}
-
-<div id="contact-jot-wrapper" >
-<p id="contact-jot-desc" >
-{{$lbl_social}}
-</p>
-
-<textarea rows="10" cols="72" id="contact-jot-text" name="contact" >{{$contact}}</textarea>
-
-</div>
-<div id="contact-jot-end"></div>
-
+{{if $fields.channels}}
<div id="channels-jot-wrapper" >
<p id="channels-jot-desc" >
{{$lbl_channels}}
@@ -217,13 +262,9 @@
</div>
<div id="channels-jot-end"></div>
+{{/if}}
-<div class="profile-edit-submit-wrapper" >
-<input type="submit" name="submit" class="profile-edit-submit-button" value="{{$submit}}" />
-</div>
-<div class="profile-edit-submit-end"></div>
-
-
+{{if $fields.music}}
<div id="music-jot-wrapper" >
<p id="music-jot-desc" >
{{$lbl_music}}
@@ -233,7 +274,9 @@
</div>
<div id="music-jot-end"></div>
+{{/if}}
+{{if $fields.book}}
<div id="book-jot-wrapper" >
<p id="book-jot-desc" >
{{$lbl_book}}
@@ -243,9 +286,9 @@
</div>
<div id="book-jot-end"></div>
+{{/if}}
-
-
+{{if $fields.tv}}
<div id="tv-jot-wrapper" >
<p id="tv-jot-desc" >
{{$lbl_tv}}
@@ -255,9 +298,9 @@
</div>
<div id="tv-jot-end"></div>
+{{/if}}
-
-
+{{if $fields.film}}
<div id="film-jot-wrapper" >
<p id="film-jot-desc" >
{{$lbl_film}}
@@ -267,14 +310,10 @@
</div>
<div id="film-jot-end"></div>
+{{/if}}
-<div class="profile-edit-submit-wrapper" >
-<input type="submit" name="submit" class="profile-edit-submit-button" value="{{$submit}}" />
-</div>
-<div class="profile-edit-submit-end"></div>
-
-
+{{if $fields.romance}}
<div id="romance-jot-wrapper" >
<p id="romance-jot-desc" >
{{$lbl_love}}
@@ -284,9 +323,9 @@
</div>
<div id="romance-jot-end"></div>
+{{/if}}
-
-
+{{if $fields.work}}
<div id="work-jot-wrapper" >
<p id="work-jot-desc" >
{{$lbl_work}}
@@ -296,9 +335,9 @@
</div>
<div id="work-jot-end"></div>
+{{/if}}
-
-
+{{if $fields.education}}
<div id="education-jot-wrapper" >
<p id="education-jot-desc" >
{{$lbl_school}}
@@ -308,8 +347,13 @@
</div>
<div id="education-jot-end"></div>
+{{/if}}
-
+{{if $extra_fields}}
+{{foreach $extra_fields as $field }}
+{{include file="field_input.tpl" field=$field}}
+{{/foreach}}
+{{/if}}
<div class="profile-edit-submit-wrapper" >
<input type="submit" name="submit" class="profile-edit-submit-button" value="{{$submit}}" />
@@ -319,4 +363,5 @@
</form>
</div>
+</div>
diff --git a/view/tpl/profile_entry.tpl b/view/tpl/profile_entry.tpl
index cc0f3477c..ab81a7fbc 100755
--- a/view/tpl/profile_entry.tpl
+++ b/view/tpl/profile_entry.tpl
@@ -1,3 +1,4 @@
+<div class="generic-content-wrapper-styled">
<div class="profile-listing" >
<div class="profile-listing-photo-wrapper" >
<a href="profiles/{{$id}}" class="profile-listing-edit-link"><img class="profile-listing-photo" id="profile-listing-photo-{{$id}}" src="{{$photo}}" alt="{{$alt}}" /></a>
@@ -7,4 +8,4 @@
<div class="profile-listing-visible">{{$visible}}</div>
</div>
<div class="profile-listing-end"></div>
-
+</div>
diff --git a/view/tpl/profile_hide_friends.tpl b/view/tpl/profile_hide_friends.tpl
new file mode 100644
index 000000000..4ed6782bb
--- /dev/null
+++ b/view/tpl/profile_hide_friends.tpl
@@ -0,0 +1,20 @@
+{{include file="field_checkbox.tpl"}}
+
+{{*
+<p id="hide-friends-text">
+{{$desc}}
+</p>
+ <div id="hide-friends-yes-wrapper">
+ <label id="hide-friends-yes-label" for="hide-friends-yes">{{$yes_str}}</label>
+ <input type="radio" name="hide-friends" id="hide-friends-yes" {{$yes_selected}} value="1" />
+
+ <div id="hide-friends-break" ></div>
+ </div>
+
+ <div id="hide-friends-no-wrapper">
+ <label id="hide-friends-no-label" for="hide-friends-no">{{$no_str}}</label>
+ <input type="radio" name="hide-friends" id="hide-friends-no" {{$no_selected}} value="0" />
+
+ <div id="hide-friends-end"></div>
+ </div>
+*}}
diff --git a/view/tpl/profile_listing_header.tpl b/view/tpl/profile_listing_header.tpl
index 856d689f1..09d00f982 100755
--- a/view/tpl/profile_listing_header.tpl
+++ b/view/tpl/profile_listing_header.tpl
@@ -1,11 +1,11 @@
+<div class="generic-content-wrapper-styled">
<h1>{{$header}}</h1>
-<p id="profile-listing-desc" class="button" >
+<p id="profile-listing-desc" class="btn btn-default" >
<a href="profile_photo" >{{$chg_photo}}</a>
</p>
-<p id="profile-stuff-link" class="button">
+<p id="profile-stuff-link" class="btn btn-default">
<a href="thing" title="{{$stuff_desc}}">{{$addstuff}}</a>
</p>
-<p id="profile-listing-new-link-wrapper" class="button" >
+<p id="profile-listing-new-link-wrapper" class="btn btn-default" >
<a href="{{$cr_new_link}}" id="profile-listing-new-link" title="{{$cr_new}}" >{{$cr_new}}</a>
</div>
-
diff --git a/view/tpl/profile_vcard.tpl b/view/tpl/profile_vcard.tpl
index d72507d4c..6904c2fec 100755
--- a/view/tpl/profile_vcard.tpl
+++ b/view/tpl/profile_vcard.tpl
@@ -15,7 +15,7 @@
</div>
{{/if}}
- <div class="fn label">{{$profile.name}}{{if $profile.online}} <i class="icon-asterisk online-now" title="{{$profile.online}}"></i>{{/if}}</div>
+ <div class="fn">{{$profile.name}}{{if $profile.online}} <i class="icon-asterisk online-now" title="{{$profile.online}}"></i>{{/if}}</div>
{{if $pdesc}}<div class="title">{{$profile.pdesc}}</div>{{/if}}
<div id="profile-photo-wrapper"><img class="photo" width="175" height="175" src="{{$profile.photo}}?rev={{$profile.picdate}}" alt="{{$profile.name}}"></div>
@@ -41,8 +41,11 @@
{{if $marital}}<dl class="marital"><dt class="marital-label"><span class="heart">&hearts;</span>{{$marital}}</dt><dd class="marital-text">{{$profile.marital}}</dd></dl>{{/if}}
- {{if $homepage}}<dl class="homepage"><dt class="homepage-label">{{$homepage}}</dt><dd class="homepage-url"><a href="{{$profile.homepage}}" >{{$profile.homepage}}</a></dd></dl>{{/if}}
+ {{if $homepage}}<dl class="homepage"><dt class="homepage-label">{{$homepage}}</dt><dd class="homepage-url">{{$profile.homepage}}</dd></dl>{{/if}}
+ {{if $diaspora}}
+ {{include file="diaspora_vcard.tpl"}}
+ {{/if}}
{{if $connect}}
<a href="{{$connect_url}}" class="rconnect"><i class="icon-plus connect-icon"></i> {{$connect}}</a>
diff --git a/view/tpl/prv_message.tpl b/view/tpl/prv_message.tpl
index 118bd846f..c6f393aa4 100755
--- a/view/tpl/prv_message.tpl
+++ b/view/tpl/prv_message.tpl
@@ -26,29 +26,29 @@
<div id="prvmail-submit-wrapper" >
<input type="submit" id="prvmail-submit" name="submit" value="{{$submit}}" tabindex="13" />
- <div id="prvmail-upload-wrapper" >
+ <button id="prvmail-upload-wrapper" class="btn btn-default btn-sm" >
<i id="prvmail-upload" class="icon-camera jot-icons" title="{{$upload}}"></i>
- </div>
+ </button>
- <div id="prvmail-attach-wrapper" >
+ <button id="prvmail-attach-wrapper" class="btn btn-default btn-sm" >
<i id="prvmail-attach" class="icon-paper-clip jot-icons" title="{{$attach}}"></i>
- </div>
+ </button>
- <div id="prvmail-link-wrapper" >
- <i id="prvmail-link" class="icon-link jot-icons" title="{{$insert}}" onclick="jotGetLink(); return false;"></i>
- </div>
+ <button id="prvmail-link-wrapper" class="btn btn-default btn-sm" onclick="prvmailJotGetLink(); return false;" >
+ <i id="prvmail-link" class="icon-link jot-icons" title="{{$insert}}" ></i>
+ </button>
{{if $feature_expire}}
- <div id="prvmail-expire-wrapper" >
- <i id="prvmail-expires" class="icon-eraser jot-icons" title="{{$expires}}" onclick="prvmailGetExpiry();return false;"></i>
- </div>
+ <button id="prvmail-expire-wrapper" class="btn btn-default btn-sm" onclick="prvmailGetExpiry();return false;" >
+ <i id="prvmail-expires" class="icon-eraser jot-icons" title="{{$expires}}" ></i>
+ </button>
{{/if}}
{{if $feature_encrypt}}
- <div id="prvmail-encrypt-wrapper" >
- <i id="prvmail-encrypt" class="icon-key jot-icons" title="{{$encrypt}}" onclick="red_encrypt('{{$cipher}}','#prvmail-text',$('#prvmail-text').val());return false;"></i>
- </div>
+ <button id="prvmail-encrypt-wrapper" class="btn btn-default btn-sm" onclick="red_encrypt('{{$cipher}}','#prvmail-text',$('#prvmail-text').val());return false;">
+ <i id="prvmail-encrypt" class="icon-key jot-icons" title="{{$encrypt}}" ></i>
+ </button>
{{/if}}
<div id="prvmail-rotator-wrapper" >
- <img id="prvmail-rotator" src="images/rotator.gif" alt="{{$wait}}" title="{{$wait}}" style="display: none;" />
+ <div id="prvmail-rotator"></div>
</div>
</div>
<div id="prvmail-end"></div>
diff --git a/view/tpl/removeaccount.tpl b/view/tpl/removeaccount.tpl
new file mode 100644
index 000000000..b7378806b
--- /dev/null
+++ b/view/tpl/removeaccount.tpl
@@ -0,0 +1,22 @@
+<h1>{{$title}}</h1>
+
+<div id="remove-account-wrapper">
+
+<div id="remove-account-desc">{{$desc}}</div>
+
+<form action="{{$basedir}}/removeaccount" autocomplete="off" method="post" >
+<input type="hidden" name="verify" value="{{$hash}}" />
+
+<div id="remove-account-pass-wrapper">
+<label id="remove-account-pass-label" for="remove-account-pass">{{$passwd}}</label>
+<input type="password" id="remove-account-pass" name="qxz_password" />
+</div>
+<div id="remove-account-pass-end"></div>
+
+{{include file="field_checkbox.tpl" field=$global}}
+
+<input type="submit" name="submit" value="{{$submit}}" />
+
+</form>
+</div>
+
diff --git a/view/tpl/safesearch.tpl b/view/tpl/safesearch.tpl
index e0b2ab538..58ce22741 100644
--- a/view/tpl/safesearch.tpl
+++ b/view/tpl/safesearch.tpl
@@ -1,4 +1,6 @@
<div id="directory_safemode" class="widget">
<h3>{{$safemode}}</h3>
-<a href="toggle_safesearch">{{$toggle}}</a>
+<ul class="nav nav-pills nav-stacked">
+ <li><a href="toggle_safesearch">{{$toggle}}</a></li>
+</ul>
</div>
diff --git a/view/tpl/saved_searches.tpl b/view/tpl/saved_searches.tpl
index 1a9f51af9..73987f192 100644
--- a/view/tpl/saved_searches.tpl
+++ b/view/tpl/saved_searches.tpl
@@ -1,12 +1,12 @@
-<div class="widget" id="saved-search-list">
+<div class="widget saved-search-widget">
<h3 id="search">{{$title}}</h3>
{{$searchbox}}
- <ul id="saved-search-ul">
+ <ul id="saved-search-list" class="nav nav-pills nav-stacked">
{{foreach $saved as $search}}
- <li id="search-term-{{$search.id}}" class="saved-search-li clear">
- <a title="{{$search.delete}}" onclick="return confirmDelete();" id="drop-saved-search-term-{{$search.id}}" href="{{$search.dellink}}"><i id="dropicon-saved-search-term-{{$search.id}}" class="icon-remove drop-icons iconspacer saved-search-icon" ></i></a>
- <a id="saved-search-term-{{$search.id}}" class="savedsearchterm{{if $search.selected}} search-selected{{/if}}" href="{{$search.srchlink}}">{{$search.displayterm}}</a>
+ <li id="search-term-{{$search.id}}">
+ <a class="pull-right group-edit-icon" title="{{$search.delete}}" onclick="return confirmDelete();" id="drop-saved-search-term-{{$search.id}}" href="{{$search.dellink}}"><i id="dropicon-saved-search-term-{{$search.id}}" class="icon-remove" ></i></a>
+ <a id="saved-search-term-{{$search.id}}"{{if $search.selected}} class="search-selected"{{/if}} href="{{$search.srchlink}}">{{$search.displayterm}}</a>
</li>
{{/foreach}}
</ul>
diff --git a/view/tpl/saved_searches_aside.tpl b/view/tpl/saved_searches_aside.tpl
deleted file mode 100755
index 0258a7632..000000000
--- a/view/tpl/saved_searches_aside.tpl
+++ /dev/null
@@ -1,14 +0,0 @@
-<div class="widget" id="saved-search-list">
- <h3 id="search">{{$title}}</h3>
- {{$searchbox}}
-
- <ul id="saved-search-ul">
- {{foreach $saved as $search}}
- <li id="search-term-{{$search.id}}" class="saved-search-li clear">
- <a title="{{$search.delete}}" onclick="return confirmDelete();" id="drop-saved-search-term-{{$search.id}}" href="network/?f=&amp;remove=1&amp;search={{$search.encodedterm}}"><i id="dropicon-saved-search-term-{{$search.id}}" class="icon-remove drop-icons iconspacer savedsearchdrop saved-search-icon" ></i></a>
- <a id="saved-search-term-{{$search.id}}" class="savedsearchterm{{if $search.selected}} search-selected{{/if}}" href="network/?f=&amp;search={{$search.encodedterm}}">{{$search.displayterm}}</a>
- </li>
- {{/foreach}}
- </ul>
- <div class="clear"></div>
-</div>
diff --git a/view/tpl/search_item.tpl b/view/tpl/search_item.tpl
index f86ee0202..014cf4192 100755
--- a/view/tpl/search_item.tpl
+++ b/view/tpl/search_item.tpl
@@ -20,7 +20,7 @@
<a href="{{$item.profile_url}}" title="{{$item.linktitle}}" class="wall-item-name-link"><span class="wall-item-name{{$item.sparkle}}" id="wall-item-name-{{$item.id}}" >{{$item.name}}</span></a>{{if $item.owner_url}}&nbsp;{{$item.via}}&nbsp;<a href="{{$item.owner_url}}" title="{{$item.olinktitle}}" class="wall-item-name-link"><span class="wall-item-name{{$item.osparkle}}" id="wall-item-ownername-{{$item.id}}">{{$item.owner_name}}</span></a>{{/if}}
</div>
<div class="wall-item-ago" id="wall-item-ago-{{$item.id}}">
- {{if $item.verified}}<i class="icon-ok" title="{{$item.verified}}"></i>&nbsp;{{/if}}{{if $item.location}}<span class="wall-item-location" id="wall-item-location-{{$item.id}}">{{$item.location}},&nbsp;</span>{{/if}}<span class="autotime" title="{{$item.isotime}}">{{$item.localtime}}{{if $item.editedtime}}&nbsp;{{$item.editedtime}}{{/if}}{{if $item.expiretime}}&nbsp;{{$item.expiretime}}{{/if}}</span>{{if $item.app}}<span class="item.app">{{$item.str_app}}</span>{{/if}}
+ {{if $item.verified}}<i class="icon-ok item-verified" title="{{$item.verified}}"></i>&nbsp;{{elseif $item.forged}}<i class="icon-remove item-forged" title="{{$item.forged}}"></i>&nbsp;{{/if}}{{if $item.location}}<span class="wall-item-location" id="wall-item-location-{{$item.id}}">{{$item.location}},&nbsp;</span>{{/if}}<span class="autotime" title="{{$item.isotime}}">{{$item.localtime}}{{if $item.editedtime}}&nbsp;{{$item.editedtime}}{{/if}}{{if $item.expiretime}}&nbsp;{{$item.expiretime}}{{/if}}</span>{{if $item.editedtime}}&nbsp;<i class="icon-pencil"></i>{{/if}}&nbsp;{{if $item.app}}<span class="item.app">{{$item.str_app}}</span>{{/if}}
</div>
<div class="wall-item-content" id="wall-item-content-{{$item.id}}">
<div class="wall-item-title-end"></div>
diff --git a/view/tpl/searchbox.tpl b/view/tpl/searchbox.tpl
new file mode 100644
index 000000000..f4301f0f5
--- /dev/null
+++ b/view/tpl/searchbox.tpl
@@ -0,0 +1,12 @@
+<form action="{{$action_url}}" method="get" >
+ <input type="hidden" name="f" value="" />
+ <div id="{{$id}}" class="input-group">
+ <input class="widget-input" type="text" name="search" id="search-text" value="{{$s}}" onclick="this.submit();" />
+ <div class="input-group-btn">
+ <button type="submit" name="submit" class="btn btn-default btn-sm" id="search-submit" value="{{$search_label}}"><i class="icon-search"></i></button>
+ {{if $savedsearch}}
+ <button type="submit" name="searchsave" class="btn btn-default btn-sm" id="search-save" value="{{$save_label}}"><i class="icon-save"></i></button>
+ {{/if}}
+ </div>
+ </div>
+</form>
diff --git a/view/tpl/select_timezone.tpl b/view/tpl/select_timezone.tpl
new file mode 100644
index 000000000..2820a54f4
--- /dev/null
+++ b/view/tpl/select_timezone.tpl
@@ -0,0 +1,11 @@
+{{* TODO: Make id configurabel *}}
+<select id='timezone_select' name='timezone'>
+{{foreach $continents as $continent => $cities}}
+<optgroup label="{{$continent}}">
+{{foreach $cities as $city => $value}}
+<option value='{{$value}}' {{if $value == $selected}}selected='selected'{{/if}}>{{$city}}</option>
+{{/foreach}}
+</optgroup>
+{{/foreach}}
+</select>
+
diff --git a/view/tpl/settings.tpl b/view/tpl/settings.tpl
index 89c05b75f..894f0fe83 100755
--- a/view/tpl/settings.tpl
+++ b/view/tpl/settings.tpl
@@ -1,4 +1,4 @@
-<div class="generic-content-wrapper">
+<div class="generic-content-wrapper-styled">
<h1>{{$ptitle}}</h1>
{{$nickname_block}}
@@ -9,7 +9,7 @@
<h3 class="settings-heading">{{$h_basic}}</h3>
{{include file="field_input.tpl" field=$username}}
-{{include file="field_custom.tpl" field=$timezone}}
+{{include file="field_select_grouped.tpl" field=$timezone}}
{{include file="field_input.tpl" field=$defloc}}
{{include file="field_checkbox.tpl" field=$allowloc}}
@@ -22,65 +22,50 @@
<h3 class="settings-heading">{{$h_prv}}</h3>
-{{include file="field_checkbox.tpl" field=$hide_presence}}
-
-
-<h3 id="settings-privacy-macros">{{$lbl_pmacro}}</h3>
-<ul id="settings-privacy-macros">
-<li><a href="#" onclick="channel_privacy_macro(2); return false" id="settings_pmacro2">{{$pmacro2}}</a></li>
-<li><a href="#" onclick="channel_privacy_macro(1); return false" id="settings_pmacro1">{{$pmacro1}}</a></li>
-<li><a href="#" onclick="channel_privacy_macro(3); return false" id="settings_pmacro3">{{$pmacro3}}</a></li>
-<li><a href="#" onclick="channel_privacy_macro(0); return false" id="settings_pmacro0">{{$pmacro0}}</a></li>
-</ul>
-
-
-<button type="button" class="btn btn-xs btn-default" data-toggle="collapse" data-target="#settings-permissions-wrapper">{{$lbl_p2macro}}</button>
+{{include file="field_select_grouped.tpl" field=$role}}
+<div id="advanced-perm" style="display:{{if $permissions_set}}none{{else}}block{{/if}};">
+{{include file="field_checkbox.tpl" field=$hide_presence}}
+<button type="button" class="btn btn-default" data-toggle="collapse" data-target="#settings-permissions-wrapper">{{$lbl_p2macro}}</button>
<div class="collapse well" id="settings-permissions-wrapper">
-{{if !$expert}}
- <div class="alert alert-info">{{$hint}}</div>
-{{/if}}
{{foreach $permiss_arr as $permit}}
- {{if $expert}}
- {{include file="field_select.tpl" field=$permit}}
- {{else}}
- {{include file="field_select_disabled.tpl" field=$permit}}
- {{/if}}
+ {{include file="field_select.tpl" field=$permit}}
{{/foreach}}
-
-{{if $expert}}
<div class="settings-submit-wrapper" >
<input type="submit" name="submit" class="settings-submit" value="{{$submit}}" />
</div>
-{{/if}}
+</div>
+<div id="settings-default-perms" class="settings-default-perms" >
+ <button class="btn btn-default" data-toggle="modal" data-target="#aclModal" onclick="return false;">{{$permissions}}</button>
+ {{$aclselect}}
+ <div id="settings-default-perms-menu-end"></div>
</div>
-<div class="settings-common-perms">
+<br/>
+<div id="settings-default-perms-end"></div>
+{{$group_select}}
{{$profile_in_dir}}
+</div>
+
+<div class="settings-common-perms">
+
+
+
{{$suggestme}}
-{{include file="field_yesno.tpl" field=$blocktags}}
+{{include file="field_checkbox.tpl" field=$blocktags}}
{{include file="field_input.tpl" field=$expire}}
</div>
-<div id="settings-default-perms" class="settings-default-perms" >
- <button class="btn btn-default btn-xs" data-toggle="modal" data-target="#aclModal" onclick="return false;">{{$permissions}}</button>
- {{$aclselect}}
- <div id="settings-default-perms-menu-end"></div>
-</div>
-<br/>
-<div id="settings-default-perms-end"></div>
-
-{{$group_select}}
<div class="settings-submit-wrapper" >
@@ -93,9 +78,9 @@
<div id="settings-notifications">
<div id="settings-activity-desc">{{$activity_options}}</div>
-{{*the next two aren't yet implemented *}}
-{{*include file="field_checkbox.tpl" field=$post_newfriend*}}
+{{*not yet implemented *}}
{{*include file="field_checkbox.tpl" field=$post_joingroup*}}
+{{include file="field_checkbox.tpl" field=$post_newfriend}}
{{include file="field_checkbox.tpl" field=$post_profilechange}}
@@ -112,6 +97,29 @@
{{include file="field_intcheckbox.tpl" field=$notify8}}
</div>
+<div id="settings-vnotify-desc">{{$lbl_vnot}}</div>
+
+<div class="group">
+{{include file="field_intcheckbox.tpl" field=$vnotify1}}
+{{include file="field_intcheckbox.tpl" field=$vnotify2}}
+{{include file="field_intcheckbox.tpl" field=$vnotify3}}
+{{include file="field_intcheckbox.tpl" field=$vnotify4}}
+{{include file="field_intcheckbox.tpl" field=$vnotify5}}
+{{include file="field_intcheckbox.tpl" field=$vnotify6}}
+{{include file="field_intcheckbox.tpl" field=$vnotify10}}
+{{include file="field_intcheckbox.tpl" field=$vnotify7}}
+{{include file="field_intcheckbox.tpl" field=$vnotify8}}
+{{include file="field_intcheckbox.tpl" field=$vnotify9}}
+{{include file="field_intcheckbox.tpl" field=$vnotify11}}
+{{include file="field_intcheckbox.tpl" field=$always_show_in_notices}}
+
+{{*include file="field_intcheckbox.tpl" field=$vnotify11*}}
+</div>
+
+{{include file="field_input.tpl" field=$evdays}}
+
+
+
</div>
<div class="settings-submit-wrapper" >
@@ -122,6 +130,8 @@
{{if $menus}}
<h3 class="settings-heading">{{$lbl_misc}}</h3>
+
+
<div id="settings-menu-desc">{{$menu_desc}}</div>
<div class="settings-channel-menu-div">
<select name="channel_menu" class="settings-channel-menu-sel">
diff --git a/view/tpl/settings_account.tpl b/view/tpl/settings_account.tpl
index 169516f08..36bb494d8 100755
--- a/view/tpl/settings_account.tpl
+++ b/view/tpl/settings_account.tpl
@@ -1,10 +1,7 @@
-<div class="generic-content-wrapper">
+<div class="generic-content-wrapper-styled">
<h1>{{$title}}</h1>
-
-
-
<form action="settings/account" id="settings-account-form" method="post" autocomplete="off" >
<input type='hidden' name='form_security_token' value='{{$form_security_token}}'>
@@ -23,4 +20,9 @@
{{$account_settings}}
+<div id="settings-remove-account-link">
+<h3 class="settings-heading">{{$removeme}}</h3>
+<div id="settings-remove-account-desc">{{$removeaccount}}</div>
+<button title="{{$permanent}}" class="btn btn-danger" type="submit" formaction="removeaccount">{{$removeme}}</button>
+</div>
</div>
diff --git a/view/tpl/settings_addons.tpl b/view/tpl/settings_addons.tpl
index 3e447cd0a..f0d5195bf 100755
--- a/view/tpl/settings_addons.tpl
+++ b/view/tpl/settings_addons.tpl
@@ -1,4 +1,4 @@
-<div class="generic-content-wrapper">
+<div class="generic-content-wrapper-styled">
<h1>{{$title}}</h1>
diff --git a/view/tpl/settings_connectors.tpl b/view/tpl/settings_connectors.tpl
index a8bde4c1e..8bea9ca63 100755
--- a/view/tpl/settings_connectors.tpl
+++ b/view/tpl/settings_connectors.tpl
@@ -1,3 +1,4 @@
+<div class="generic-content-wrapper-styled">
<h1>{{$title}}</h1>
<form action="settings/connectors" method="post" autocomplete="off">
@@ -6,4 +7,4 @@
{{$settings_connectors}}
</form>
-
+</div>
diff --git a/view/tpl/settings_display.tpl b/view/tpl/settings_display.tpl
index a2038b930..8bf4dc0cc 100755
--- a/view/tpl/settings_display.tpl
+++ b/view/tpl/settings_display.tpl
@@ -1,4 +1,4 @@
-<div class="generic-content-wrapper">
+<div class="generic-content-wrapper-styled">
<h1>{{$ptitle}}</h1>
<form action="settings/display" id="settings-form" method="post" autocomplete="off" >
@@ -6,10 +6,17 @@
{{include file="field_themeselect.tpl" field=$theme}}
{{include file="field_themeselect.tpl" field=$mobile_theme}}
+{{if $expert}}
+{{include file="field_checkbox.tpl" field=$user_scalable}}
+{{/if}}
{{include file="field_input.tpl" field=$ajaxint}}
{{include file="field_input.tpl" field=$itemspage}}
+{{include file="field_input.tpl" field=$channel_divmore_height}}
+{{include file="field_input.tpl" field=$network_divmore_height}}
{{include file="field_checkbox.tpl" field=$nosmile}}
-
+{{include file="field_checkbox.tpl" field=$title_tosource}}
+{{include file="field_checkbox.tpl" field=$channel_list_mode}}
+{{include file="field_checkbox.tpl" field=$network_list_mode}}
<div class="settings-submit-wrapper" >
<input type="submit" name="submit" class="settings-submit" value="{{$submit}}" />
diff --git a/view/tpl/settings_features.tpl b/view/tpl/settings_features.tpl
index a03817f82..3ede4c76d 100755
--- a/view/tpl/settings_features.tpl
+++ b/view/tpl/settings_features.tpl
@@ -1,4 +1,4 @@
-<div class="generic-content-wrapper">
+<div class="generic-content-wrapper-styled">
<h1>{{$title}}</h1>
@@ -9,7 +9,7 @@
<h3 class="settings-heading">{{$f.0}}</h3>
{{foreach $f.1 as $fcat}}
- {{include file="{{$field_yesno}}" field=$fcat}}
+ {{include file="field_checkbox.tpl" field=$fcat}}
{{/foreach}}
{{/foreach}}
diff --git a/view/tpl/settings_oauth.tpl b/view/tpl/settings_oauth.tpl
index 9be0035ff..f7b4a0b1a 100755
--- a/view/tpl/settings_oauth.tpl
+++ b/view/tpl/settings_oauth.tpl
@@ -1,4 +1,4 @@
-<div class="generic-content-wrapper">
+<div class="generic-content-wrapper-styled">
<h1>{{$title}}</h1>
diff --git a/view/tpl/siteinfo.tpl b/view/tpl/siteinfo.tpl
index d956a7228..3b0c8841c 100755
--- a/view/tpl/siteinfo.tpl
+++ b/view/tpl/siteinfo.tpl
@@ -4,6 +4,12 @@
{{if $version}}
<p>{{$version}}{{if $commit}}+{{$commit}}{{/if}}</p>
{{/if}}
+{{if $tag}}
+<p>{{$tag_txt}} {{$tag}}</p>
+{{/if}}
+{{if $polled}}
+<p>{{$polled}} {{$lastpoll}}</p>
+{{/if}}
<p>{{$web_location}}</p>
<p>{{$visit}}</p>
<p>{{$bug_text}} <a href="{{$bug_link_url}}">{{$bug_link_text}}</a></p>
diff --git a/view/tpl/smarty3/README b/view/tpl/smarty3/README
deleted file mode 100644
index 78ff8d9a1..000000000
--- a/view/tpl/smarty3/README
+++ /dev/null
@@ -1,4 +0,0 @@
-view/tpl/smarty3
-
-This directory must exist and be writeable by the webserver in order to store compiled template files, which are created dynamically. Please see the installation instructions.
-
diff --git a/view/tpl/suggest_widget.tpl b/view/tpl/suggest_widget.tpl
index eba8b496e..7b9afa668 100644
--- a/view/tpl/suggest_widget.tpl
+++ b/view/tpl/suggest_widget.tpl
@@ -1,4 +1,4 @@
-<div class="widget">
+<div class="widget suggestions-widget">
<h3>{{$title}}</h3>
{{if $entries}}
{{foreach $entries as $child}}
@@ -7,4 +7,4 @@
{{/if}}
<div class="clear"></div>
<div class="suggest-widget-more"><a href="suggest">{{$more}}</a></div>
-</div> \ No newline at end of file
+</div>
diff --git a/view/tpl/suggestions.tpl b/view/tpl/suggestions.tpl
deleted file mode 100755
index 2d9cba325..000000000
--- a/view/tpl/suggestions.tpl
+++ /dev/null
@@ -1,20 +0,0 @@
-<div class="intro-wrapper" >
-
-<p class="intro-desc">{{$str_notifytype}} {{$notify_type}}</p>
-<div class="intro-madeby">{{$madeby}}</div>
-<div class="intro-fullname" >{{$fullname}}</div>
-<a class="intro-url-link" href="{{$url}}" ><img class="intro-photo lframe" src="{{$photo}}" width="175" height=175" title="{{$fullname}}" alt="{{$fullname}}" /></a>
-<div class="intro-note" >{{$note}}</div>
-<div class="intro-wrapper-end"></div>
-<form class="intro-form" action="notifications/{{$intro_id}}" method="post">
-<input class="intro-submit-ignore" type="submit" name="submit" value="{{$ignore}}" />
-<input class="intro-submit-discard" type="submit" name="submit" value="{{$discard}}" />
-</form>
-<div class="intro-form-end"></div>
-
-<form class="intro-approve-form" action="{{$request}}" method="get">
-{{include file="field_checkbox.tpl" field=$hidden}}
-<input class="intro-submit-approve" type="submit" name="submit" value="{{$approve}}" />
-</form>
-</div>
-<div class="intro-end"></div>
diff --git a/view/tpl/uexport.tpl b/view/tpl/uexport.tpl
new file mode 100644
index 000000000..5de995ba0
--- /dev/null
+++ b/view/tpl/uexport.tpl
@@ -0,0 +1,9 @@
+<div class="generic-content-wrapper">
+<h1>{{$title}}</h1>
+<b><a href="uexport/basic">{{$basictitle}}</a></b></p>
+<p>{{$basic}}</p>
+
+<p><b><a href="uexport/complete">{{$fulltitle}}</a></b></p>
+<p>{{$full}}</p>
+
+</div>
diff --git a/view/tpl/viewcontact_template.tpl b/view/tpl/viewcontact_template.tpl
index 18fed6bb4..cde24525c 100755
--- a/view/tpl/viewcontact_template.tpl
+++ b/view/tpl/viewcontact_template.tpl
@@ -1,3 +1,4 @@
+<div class="generic-content-wrapper generic-content-wrapper-styled">
<h3>{{$title}}</h3>
{{foreach $contacts as $contact}}
@@ -5,5 +6,5 @@
{{/foreach}}
<div id="view-contact-end"></div>
-
{{$paginate}}
+</div>
diff --git a/view/tpl/webpagelist.tpl b/view/tpl/webpagelist.tpl
index 4ae153423..8335ebd62 100644
--- a/view/tpl/webpagelist.tpl
+++ b/view/tpl/webpagelist.tpl
@@ -1,6 +1,7 @@
+{{$listtitle}}
{{if $pages}}
- <div id="pagelist-content-wrapper" class="generic-content-wrapper">
+ <div id="pagelist-content-wrapper" class="generic-content-wrapper-styled">
<table class="webpage-list-table">
<tr><td>{{$actions_txt}}</td><td>{{$pagelink_txt}}</td><td>{{$title_txt}}</td><td>{{$created_txt}}</td><td>{{$edited_txt}}</td></tr>
{{foreach $pages as $key => $items}}
@@ -9,7 +10,7 @@
<td>
{{if $edit}}<a href="{{$baseurl}}/{{$item.url}}" title="{{$edit}}"><i class="icon-pencil design-icons design-edit-icon btn btn-default"></i></a> {{/if}}
{{if $view}}<a href="page/{{$channel}}/{{$item.pagetitle}}" title="{{$view}}"><i class="icon-external-link design-icons design-view-icon btn btn-default"></i></a> {{/if}}
- {{if $preview}}<a href="page/{{$channel}}/{{$item.pagetitle}}?iframe=true&width=80%&height=80%" title="{{$preview}}" class="webpage-preview" ><i class="icon-eye-open design-icons design-preview-icon btn btn-default"></i></a> {{/if}}
+ {{if $preview}}<a href="page/{{$channel}}/{{$item.pagetitle}}" title="{{$preview}}" class="webpage-preview" ><i class="icon-eye-open design-icons design-preview-icon btn btn-default"></i></a> {{/if}}
</td>
<td>
{{if $view}}<a href="page/{{$channel}}/{{$item.pagetitle}}" title="{{$view}}">{{$item.pagetitle}}</a>
diff --git a/view/tpl/xrd_diaspora.tpl b/view/tpl/xrd_diaspora.tpl
new file mode 100644
index 000000000..aa0d8c740
--- /dev/null
+++ b/view/tpl/xrd_diaspora.tpl
@@ -0,0 +1,3 @@
+ <Link rel="http://joindiaspora.com/seed_location" type="text/html" href="{{$baseurl}}/" />
+ <Link rel="http://joindiaspora.com/guid" type="text/html" href="{{$dspr_guid}}" />
+ <Link rel="diaspora-public-key" type="RSA" href="{{$dspr_key}}" />
diff --git a/view/tpl/xrd_person.tpl b/view/tpl/xrd_person.tpl
index 20d438dd5..631ed3f18 100755
--- a/view/tpl/xrd_person.tpl
+++ b/view/tpl/xrd_person.tpl
@@ -14,5 +14,13 @@
<Link rel="http://webfinger.net/rel/avatar"
type="image/jpeg"
href="{{$photo}}" />
-
+ <Link rel="http://microformats.org/profile/hcard"
+ type="text/html"
+ href="{{$hcard_url}}" />
+
+ <Link rel="magic-public-key"
+ href="{{$modexp}}" />
+
+ {{$dspr}}
+
</XRD>